From ec75b3481e225307f49cb46d0340b9de1e8454f3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 31 Aug 2018 22:07:03 -0700 Subject: [PATCH 0001/1062] Lowercase property name This change stems from changes to how PRNG state is stored along with an associated seed. As a consequence, whenever a PRNG state is set, so, too, is the PRNG seed to ensure consistency and reproducibility. In which case, a PRNG seed is no longer a "constant". Hence, we lowercase the property name to reflect this fact. --- .../test/fixtures/invalid.js | 4 +-- .../test/test.factory.js | 30 +++++++++---------- .../alpha-max-plus-beta-min/test/test.js | 2 +- .../@stdlib/ml/incr/kmeans/lib/main.js | 2 +- .../@stdlib/random/base/README.md | 4 +-- .../@stdlib/random/base/arcsine/README.md | 6 ++-- .../@stdlib/random/base/arcsine/docs/repl.txt | 4 +-- .../random/base/arcsine/examples/index.js | 6 ++-- .../random/base/arcsine/lib/factory.js | 2 +- .../random/base/arcsine/test/test.factory.js | 6 ++-- .../@stdlib/random/base/arcsine/test/test.js | 2 +- .../@stdlib/random/base/bernoulli/README.md | 6 ++-- .../random/base/bernoulli/docs/repl.txt | 4 +-- .../random/base/bernoulli/examples/index.js | 6 ++-- .../random/base/bernoulli/lib/factory.js | 2 +- .../base/bernoulli/test/test.factory.js | 6 ++-- .../random/base/bernoulli/test/test.js | 2 +- .../@stdlib/random/base/beta/README.md | 6 ++-- .../@stdlib/random/base/beta/docs/repl.txt | 4 +-- .../random/base/beta/examples/index.js | 6 ++-- .../@stdlib/random/base/beta/lib/factory.js | 4 +-- .../random/base/beta/test/test.factory.js | 8 ++--- .../@stdlib/random/base/beta/test/test.js | 2 +- .../@stdlib/random/base/betaprime/README.md | 6 ++-- .../random/base/betaprime/docs/repl.txt | 4 +-- .../random/base/betaprime/examples/index.js | 6 ++-- .../random/base/betaprime/lib/factory.js | 2 +- .../base/betaprime/test/test.factory.js | 6 ++-- .../random/base/betaprime/test/test.js | 2 +- .../@stdlib/random/base/binomial/README.md | 6 ++-- .../random/base/binomial/docs/repl.txt | 4 +-- .../random/base/binomial/examples/index.js | 6 ++-- .../random/base/binomial/lib/factory.js | 2 +- .../random/base/binomial/test/test.factory.js | 8 ++--- .../@stdlib/random/base/binomial/test/test.js | 2 +- .../@stdlib/random/base/box-muller/README.md | 10 +++---- .../random/base/box-muller/docs/repl.txt | 4 +-- .../random/base/box-muller/examples/index.js | 6 ++-- .../random/base/box-muller/lib/factory.js | 6 ++-- .../base/box-muller/test/test.factory.js | 8 ++--- .../random/base/box-muller/test/test.js | 2 +- .../@stdlib/random/base/cauchy/README.md | 6 ++-- .../@stdlib/random/base/cauchy/docs/repl.txt | 4 +-- .../random/base/cauchy/examples/index.js | 6 ++-- .../@stdlib/random/base/cauchy/lib/factory.js | 2 +- .../random/base/cauchy/test/test.factory.js | 6 ++-- .../@stdlib/random/base/cauchy/test/test.js | 2 +- .../@stdlib/random/base/chi/README.md | 6 ++-- .../@stdlib/random/base/chi/docs/repl.txt | 4 +-- .../@stdlib/random/base/chi/examples/index.js | 6 ++-- .../@stdlib/random/base/chi/lib/factory.js | 2 +- .../random/base/chi/test/test.factory.js | 6 ++-- .../@stdlib/random/base/chi/test/test.js | 2 +- .../@stdlib/random/base/chisquare/README.md | 6 ++-- .../random/base/chisquare/docs/repl.txt | 4 +-- .../random/base/chisquare/examples/index.js | 6 ++-- .../random/base/chisquare/lib/factory.js | 2 +- .../base/chisquare/test/test.factory.js | 6 ++-- .../random/base/chisquare/test/test.js | 2 +- .../@stdlib/random/base/cosine/README.md | 6 ++-- .../@stdlib/random/base/cosine/docs/repl.txt | 4 +-- .../random/base/cosine/examples/index.js | 6 ++-- .../@stdlib/random/base/cosine/lib/factory.js | 2 +- .../random/base/cosine/test/test.factory.js | 6 ++-- .../@stdlib/random/base/cosine/test/test.js | 2 +- .../random/base/discrete-uniform/README.md | 6 ++-- .../base/discrete-uniform/docs/repl.txt | 4 +-- .../base/discrete-uniform/examples/index.js | 6 ++-- .../base/discrete-uniform/lib/factory.js | 2 +- .../discrete-uniform/test/test.factory.js | 6 ++-- .../random/base/discrete-uniform/test/test.js | 2 +- .../@stdlib/random/base/erlang/README.md | 6 ++-- .../@stdlib/random/base/erlang/docs/repl.txt | 4 +-- .../random/base/erlang/examples/index.js | 6 ++-- .../@stdlib/random/base/erlang/lib/factory.js | 2 +- .../random/base/erlang/test/test.factory.js | 6 ++-- .../@stdlib/random/base/erlang/test/test.js | 2 +- .../@stdlib/random/base/exponential/README.md | 6 ++-- .../random/base/exponential/docs/repl.txt | 4 +-- .../random/base/exponential/examples/index.js | 6 ++-- .../random/base/exponential/lib/factory.js | 2 +- .../base/exponential/test/test.factory.js | 6 ++-- .../random/base/exponential/test/test.js | 2 +- .../@stdlib/random/base/f/README.md | 6 ++-- .../@stdlib/random/base/f/docs/repl.txt | 4 +-- .../@stdlib/random/base/f/examples/index.js | 6 ++-- .../@stdlib/random/base/f/lib/factory.js | 2 +- .../random/base/f/test/test.factory.js | 6 ++-- .../@stdlib/random/base/f/test/test.js | 2 +- .../@stdlib/random/base/frechet/README.md | 6 ++-- .../@stdlib/random/base/frechet/docs/repl.txt | 4 +-- .../random/base/frechet/examples/index.js | 6 ++-- .../random/base/frechet/lib/factory.js | 2 +- .../random/base/frechet/test/test.factory.js | 6 ++-- .../@stdlib/random/base/frechet/test/test.js | 2 +- .../@stdlib/random/base/gamma/README.md | 6 ++-- .../@stdlib/random/base/gamma/docs/repl.txt | 4 +-- .../random/base/gamma/examples/index.js | 6 ++-- .../@stdlib/random/base/gamma/lib/factory.js | 4 +-- .../random/base/gamma/test/test.factory.js | 8 ++--- .../@stdlib/random/base/gamma/test/test.js | 2 +- .../@stdlib/random/base/geometric/README.md | 6 ++-- .../random/base/geometric/docs/repl.txt | 4 +-- .../random/base/geometric/examples/index.js | 6 ++-- .../random/base/geometric/lib/factory.js | 2 +- .../base/geometric/test/test.factory.js | 6 ++-- .../random/base/geometric/test/test.js | 2 +- .../@stdlib/random/base/gumbel/README.md | 6 ++-- .../@stdlib/random/base/gumbel/docs/repl.txt | 4 +-- .../random/base/gumbel/examples/index.js | 6 ++-- .../@stdlib/random/base/gumbel/lib/factory.js | 2 +- .../random/base/gumbel/test/test.factory.js | 6 ++-- .../@stdlib/random/base/gumbel/test/test.js | 2 +- .../random/base/hypergeometric/README.md | 6 ++-- .../random/base/hypergeometric/docs/repl.txt | 4 +-- .../base/hypergeometric/examples/index.js | 6 ++-- .../random/base/hypergeometric/lib/factory.js | 2 +- .../base/hypergeometric/test/test.factory.js | 12 ++++---- .../random/base/hypergeometric/test/test.js | 2 +- .../random/base/improved-ziggurat/README.md | 8 ++--- .../base/improved-ziggurat/docs/repl.txt | 4 +-- .../base/improved-ziggurat/examples/index.js | 6 ++-- .../base/improved-ziggurat/lib/factory.js | 6 ++-- .../improved-ziggurat/test/test.factory.js | 12 ++++---- .../base/improved-ziggurat/test/test.js | 2 +- .../@stdlib/random/base/invgamma/README.md | 6 ++-- .../random/base/invgamma/docs/repl.txt | 4 +-- .../random/base/invgamma/examples/index.js | 6 ++-- .../random/base/invgamma/lib/factory.js | 2 +- .../random/base/invgamma/test/test.factory.js | 6 ++-- .../@stdlib/random/base/invgamma/test/test.js | 2 +- .../@stdlib/random/base/kumaraswamy/README.md | 6 ++-- .../random/base/kumaraswamy/docs/repl.txt | 4 +-- .../random/base/kumaraswamy/examples/index.js | 6 ++-- .../random/base/kumaraswamy/lib/factory.js | 2 +- .../base/kumaraswamy/test/test.factory.js | 6 ++-- .../random/base/kumaraswamy/test/test.js | 2 +- .../@stdlib/random/base/laplace/README.md | 6 ++-- .../@stdlib/random/base/laplace/docs/repl.txt | 4 +-- .../random/base/laplace/examples/index.js | 6 ++-- .../random/base/laplace/lib/factory.js | 2 +- .../random/base/laplace/test/test.factory.js | 6 ++-- .../@stdlib/random/base/laplace/test/test.js | 2 +- .../@stdlib/random/base/levy/README.md | 6 ++-- .../@stdlib/random/base/levy/docs/repl.txt | 4 +-- .../random/base/levy/examples/index.js | 6 ++-- .../@stdlib/random/base/levy/lib/factory.js | 2 +- .../random/base/levy/test/test.factory.js | 6 ++-- .../@stdlib/random/base/levy/test/test.js | 2 +- .../@stdlib/random/base/logistic/README.md | 6 ++-- .../random/base/logistic/docs/repl.txt | 4 +-- .../random/base/logistic/examples/index.js | 6 ++-- .../random/base/logistic/lib/factory.js | 2 +- .../random/base/logistic/test/test.factory.js | 6 ++-- .../@stdlib/random/base/logistic/test/test.js | 2 +- .../@stdlib/random/base/lognormal/README.md | 6 ++-- .../random/base/lognormal/docs/repl.txt | 4 +-- .../random/base/lognormal/examples/index.js | 6 ++-- .../random/base/lognormal/lib/factory.js | 2 +- .../base/lognormal/test/test.factory.js | 6 ++-- .../random/base/lognormal/test/test.js | 2 +- .../random/base/minstd-shuffle/README.md | 6 ++-- .../random/base/minstd-shuffle/docs/repl.txt | 4 +-- .../base/minstd-shuffle/examples/index.js | 6 ++-- .../random/base/minstd-shuffle/lib/factory.js | 4 +-- .../base/minstd-shuffle/test/test.factory.js | 18 +++++------ .../random/base/minstd-shuffle/test/test.js | 4 +-- .../@stdlib/random/base/minstd/README.md | 6 ++-- .../@stdlib/random/base/minstd/docs/repl.txt | 4 +-- .../random/base/minstd/examples/index.js | 6 ++-- .../@stdlib/random/base/minstd/lib/factory.js | 4 +-- .../random/base/minstd/test/test.factory.js | 18 +++++------ .../@stdlib/random/base/minstd/test/test.js | 4 +-- .../@stdlib/random/base/mt19937/README.md | 6 ++-- .../@stdlib/random/base/mt19937/docs/repl.txt | 4 +-- .../random/base/mt19937/examples/index.js | 6 ++-- .../random/base/mt19937/lib/factory.js | 4 +-- .../random/base/mt19937/test/test.factory.js | 18 +++++------ .../@stdlib/random/base/mt19937/test/test.js | 4 +-- .../random/base/negative-binomial/README.md | 6 ++-- .../base/negative-binomial/docs/repl.txt | 4 +-- .../base/negative-binomial/examples/index.js | 6 ++-- .../base/negative-binomial/lib/factory.js | 2 +- .../negative-binomial/test/test.factory.js | 6 ++-- .../base/negative-binomial/test/test.js | 2 +- .../@stdlib/random/base/normal/README.md | 6 ++-- .../@stdlib/random/base/normal/docs/repl.txt | 4 +-- .../random/base/normal/examples/index.js | 6 ++-- .../@stdlib/random/base/normal/lib/factory.js | 2 +- .../random/base/normal/test/test.factory.js | 6 ++-- .../@stdlib/random/base/normal/test/test.js | 2 +- .../random/base/pareto-type1/README.md | 6 ++-- .../random/base/pareto-type1/docs/repl.txt | 4 +-- .../base/pareto-type1/examples/index.js | 6 ++-- .../random/base/pareto-type1/lib/factory.js | 2 +- .../base/pareto-type1/test/test.factory.js | 6 ++-- .../random/base/pareto-type1/test/test.js | 2 +- .../@stdlib/random/base/poisson/README.md | 6 ++-- .../@stdlib/random/base/poisson/docs/repl.txt | 4 +-- .../random/base/poisson/examples/index.js | 6 ++-- .../random/base/poisson/lib/factory.js | 2 +- .../random/base/poisson/test/test.factory.js | 8 ++--- .../@stdlib/random/base/poisson/test/test.js | 2 +- .../@stdlib/random/base/randi/README.md | 6 ++-- .../@stdlib/random/base/randi/docs/repl.txt | 4 +-- .../random/base/randi/examples/index.js | 6 ++-- .../@stdlib/random/base/randi/lib/factory.js | 2 +- .../random/base/randi/test/test.factory.js | 4 +-- .../@stdlib/random/base/randi/test/test.js | 2 +- .../@stdlib/random/base/randn/README.md | 6 ++-- .../@stdlib/random/base/randn/docs/repl.txt | 4 +-- .../random/base/randn/examples/index.js | 6 ++-- .../@stdlib/random/base/randn/lib/factory.js | 2 +- .../random/base/randn/test/test.factory.js | 6 ++-- .../@stdlib/random/base/randn/test/test.js | 2 +- .../@stdlib/random/base/randu/README.md | 6 ++-- .../@stdlib/random/base/randu/docs/repl.txt | 4 +-- .../random/base/randu/examples/index.js | 6 ++-- .../@stdlib/random/base/randu/lib/factory.js | 2 +- .../random/base/randu/test/test.factory.js | 6 ++-- .../@stdlib/random/base/randu/test/test.js | 2 +- .../@stdlib/random/base/rayleigh/README.md | 6 ++-- .../random/base/rayleigh/docs/repl.txt | 4 +-- .../random/base/rayleigh/examples/index.js | 6 ++-- .../random/base/rayleigh/lib/factory.js | 2 +- .../random/base/rayleigh/test/test.factory.js | 6 ++-- .../@stdlib/random/base/rayleigh/test/test.js | 2 +- .../@stdlib/random/base/t/README.md | 6 ++-- .../@stdlib/random/base/t/docs/repl.txt | 4 +-- .../@stdlib/random/base/t/examples/index.js | 6 ++-- .../@stdlib/random/base/t/lib/factory.js | 2 +- .../random/base/t/test/test.factory.js | 6 ++-- .../@stdlib/random/base/t/test/test.js | 2 +- .../@stdlib/random/base/triangular/README.md | 6 ++-- .../random/base/triangular/docs/repl.txt | 4 +-- .../random/base/triangular/examples/index.js | 6 ++-- .../random/base/triangular/lib/factory.js | 2 +- .../base/triangular/test/test.factory.js | 6 ++-- .../random/base/triangular/test/test.js | 2 +- .../@stdlib/random/base/uniform/README.md | 6 ++-- .../@stdlib/random/base/uniform/docs/repl.txt | 4 +-- .../random/base/uniform/examples/index.js | 6 ++-- .../random/base/uniform/lib/factory.js | 2 +- .../random/base/uniform/test/test.factory.js | 6 ++-- .../@stdlib/random/base/uniform/test/test.js | 2 +- .../@stdlib/random/base/weibull/README.md | 6 ++-- .../@stdlib/random/base/weibull/docs/repl.txt | 4 +-- .../random/base/weibull/examples/index.js | 6 ++-- .../random/base/weibull/lib/factory.js | 2 +- .../random/base/weibull/test/test.factory.js | 6 ++-- .../@stdlib/random/base/weibull/test/test.js | 2 +- .../random/iterators/arcsine/README.md | 2 +- .../random/iterators/arcsine/docs/repl.txt | 2 +- .../random/iterators/arcsine/lib/main.js | 4 +-- .../random/iterators/arcsine/test/test.js | 6 ++-- .../random/iterators/bernoulli/README.md | 2 +- .../random/iterators/bernoulli/docs/repl.txt | 2 +- .../random/iterators/bernoulli/lib/main.js | 4 +-- .../random/iterators/bernoulli/test/test.js | 6 ++-- .../@stdlib/random/iterators/beta/README.md | 2 +- .../random/iterators/beta/docs/repl.txt | 2 +- .../@stdlib/random/iterators/beta/lib/main.js | 4 +-- .../random/iterators/beta/test/test.js | 6 ++-- .../random/iterators/betaprime/README.md | 2 +- .../random/iterators/betaprime/docs/repl.txt | 2 +- .../random/iterators/betaprime/lib/main.js | 4 +-- .../random/iterators/betaprime/test/test.js | 6 ++-- .../random/iterators/binomial/README.md | 2 +- .../random/iterators/binomial/docs/repl.txt | 2 +- .../random/iterators/binomial/lib/main.js | 4 +-- .../random/iterators/binomial/test/test.js | 6 ++-- .../random/iterators/box-muller/README.md | 2 +- .../random/iterators/box-muller/docs/repl.txt | 2 +- .../random/iterators/box-muller/lib/main.js | 4 +-- .../random/iterators/box-muller/test/test.js | 6 ++-- .../@stdlib/random/iterators/cauchy/README.md | 2 +- .../random/iterators/cauchy/docs/repl.txt | 2 +- .../random/iterators/cauchy/lib/main.js | 4 +-- .../random/iterators/cauchy/test/test.js | 6 ++-- .../@stdlib/random/iterators/chi/README.md | 2 +- .../random/iterators/chi/docs/repl.txt | 2 +- .../@stdlib/random/iterators/chi/lib/main.js | 4 +-- .../@stdlib/random/iterators/chi/test/test.js | 6 ++-- .../random/iterators/chisquare/README.md | 2 +- .../random/iterators/chisquare/docs/repl.txt | 2 +- .../random/iterators/chisquare/lib/main.js | 4 +-- .../random/iterators/chisquare/test/test.js | 6 ++-- .../@stdlib/random/iterators/cosine/README.md | 2 +- .../random/iterators/cosine/docs/repl.txt | 2 +- .../random/iterators/cosine/lib/main.js | 4 +-- .../random/iterators/cosine/test/test.js | 6 ++-- .../iterators/discrete-uniform/README.md | 2 +- .../iterators/discrete-uniform/docs/repl.txt | 2 +- .../iterators/discrete-uniform/lib/main.js | 4 +-- .../iterators/discrete-uniform/test/test.js | 6 ++-- .../@stdlib/random/iterators/erlang/README.md | 2 +- .../random/iterators/erlang/docs/repl.txt | 2 +- .../random/iterators/erlang/lib/main.js | 4 +-- .../random/iterators/erlang/test/test.js | 6 ++-- .../random/iterators/exponential/README.md | 2 +- .../iterators/exponential/docs/repl.txt | 2 +- .../random/iterators/exponential/lib/main.js | 4 +-- .../random/iterators/exponential/test/test.js | 6 ++-- .../@stdlib/random/iterators/f/README.md | 2 +- .../@stdlib/random/iterators/f/docs/repl.txt | 2 +- .../@stdlib/random/iterators/f/lib/main.js | 4 +-- .../@stdlib/random/iterators/f/test/test.js | 6 ++-- .../random/iterators/frechet/README.md | 2 +- .../random/iterators/frechet/docs/repl.txt | 2 +- .../random/iterators/frechet/lib/main.js | 4 +-- .../random/iterators/frechet/test/test.js | 6 ++-- .../@stdlib/random/iterators/gamma/README.md | 2 +- .../random/iterators/gamma/docs/repl.txt | 2 +- .../random/iterators/gamma/lib/main.js | 4 +-- .../random/iterators/gamma/test/test.js | 6 ++-- .../random/iterators/geometric/README.md | 2 +- .../random/iterators/geometric/docs/repl.txt | 2 +- .../random/iterators/geometric/lib/main.js | 4 +-- .../random/iterators/geometric/test/test.js | 6 ++-- .../@stdlib/random/iterators/gumbel/README.md | 2 +- .../random/iterators/gumbel/docs/repl.txt | 2 +- .../random/iterators/gumbel/lib/main.js | 4 +-- .../random/iterators/gumbel/test/test.js | 6 ++-- .../random/iterators/hypergeometric/README.md | 2 +- .../iterators/hypergeometric/docs/repl.txt | 2 +- .../iterators/hypergeometric/lib/main.js | 4 +-- .../iterators/hypergeometric/test/test.js | 6 ++-- .../iterators/improved-ziggurat/README.md | 2 +- .../iterators/improved-ziggurat/docs/repl.txt | 2 +- .../iterators/improved-ziggurat/lib/main.js | 4 +-- .../iterators/improved-ziggurat/test/test.js | 6 ++-- .../random/iterators/invgamma/README.md | 2 +- .../random/iterators/invgamma/docs/repl.txt | 2 +- .../random/iterators/invgamma/lib/main.js | 4 +-- .../random/iterators/invgamma/test/test.js | 6 ++-- .../random/iterators/kumaraswamy/README.md | 2 +- .../iterators/kumaraswamy/docs/repl.txt | 2 +- .../random/iterators/kumaraswamy/lib/main.js | 4 +-- .../random/iterators/kumaraswamy/test/test.js | 6 ++-- .../random/iterators/laplace/README.md | 2 +- .../random/iterators/laplace/docs/repl.txt | 2 +- .../random/iterators/laplace/lib/main.js | 4 +-- .../random/iterators/laplace/test/test.js | 6 ++-- .../@stdlib/random/iterators/levy/README.md | 2 +- .../random/iterators/levy/docs/repl.txt | 2 +- .../@stdlib/random/iterators/levy/lib/main.js | 4 +-- .../random/iterators/levy/test/test.js | 6 ++-- .../random/iterators/logistic/README.md | 2 +- .../random/iterators/logistic/docs/repl.txt | 2 +- .../random/iterators/logistic/lib/main.js | 4 +-- .../random/iterators/logistic/test/test.js | 6 ++-- .../random/iterators/lognormal/README.md | 2 +- .../random/iterators/lognormal/docs/repl.txt | 2 +- .../random/iterators/lognormal/lib/main.js | 4 +-- .../random/iterators/lognormal/test/test.js | 6 ++-- .../random/iterators/minstd-shuffle/README.md | 2 +- .../iterators/minstd-shuffle/docs/repl.txt | 2 +- .../iterators/minstd-shuffle/lib/main.js | 4 +-- .../iterators/minstd-shuffle/test/test.js | 6 ++-- .../@stdlib/random/iterators/minstd/README.md | 2 +- .../random/iterators/minstd/docs/repl.txt | 2 +- .../random/iterators/minstd/lib/main.js | 4 +-- .../random/iterators/minstd/test/test.js | 6 ++-- .../random/iterators/mt19937/README.md | 2 +- .../random/iterators/mt19937/docs/repl.txt | 2 +- .../random/iterators/mt19937/lib/main.js | 4 +-- .../random/iterators/mt19937/test/test.js | 6 ++-- .../iterators/negative-binomial/README.md | 2 +- .../iterators/negative-binomial/docs/repl.txt | 2 +- .../iterators/negative-binomial/lib/main.js | 4 +-- .../iterators/negative-binomial/test/test.js | 6 ++-- .../@stdlib/random/iterators/normal/README.md | 2 +- .../random/iterators/normal/docs/repl.txt | 2 +- .../random/iterators/normal/lib/main.js | 4 +-- .../random/iterators/normal/test/test.js | 6 ++-- .../random/iterators/pareto-type1/README.md | 2 +- .../iterators/pareto-type1/docs/repl.txt | 2 +- .../random/iterators/pareto-type1/lib/main.js | 4 +-- .../iterators/pareto-type1/test/test.js | 6 ++-- .../random/iterators/poisson/README.md | 2 +- .../random/iterators/poisson/docs/repl.txt | 2 +- .../random/iterators/poisson/lib/main.js | 4 +-- .../random/iterators/poisson/test/test.js | 6 ++-- .../@stdlib/random/iterators/randi/README.md | 2 +- .../random/iterators/randi/docs/repl.txt | 2 +- .../random/iterators/randi/lib/main.js | 4 +-- .../random/iterators/randi/test/test.js | 6 ++-- .../@stdlib/random/iterators/randn/README.md | 2 +- .../random/iterators/randn/docs/repl.txt | 2 +- .../random/iterators/randn/lib/main.js | 4 +-- .../random/iterators/randn/test/test.js | 6 ++-- .../@stdlib/random/iterators/randu/README.md | 2 +- .../random/iterators/randu/docs/repl.txt | 2 +- .../random/iterators/randu/lib/main.js | 4 +-- .../random/iterators/randu/test/test.js | 6 ++-- .../random/iterators/rayleigh/README.md | 2 +- .../random/iterators/rayleigh/docs/repl.txt | 2 +- .../random/iterators/rayleigh/lib/main.js | 4 +-- .../random/iterators/rayleigh/test/test.js | 6 ++-- .../@stdlib/random/iterators/t/README.md | 2 +- .../@stdlib/random/iterators/t/docs/repl.txt | 2 +- .../@stdlib/random/iterators/t/lib/main.js | 4 +-- .../@stdlib/random/iterators/t/test/test.js | 6 ++-- .../random/iterators/triangular/README.md | 2 +- .../random/iterators/triangular/docs/repl.txt | 2 +- .../random/iterators/triangular/lib/main.js | 4 +-- .../random/iterators/triangular/test/test.js | 6 ++-- .../random/iterators/uniform/README.md | 2 +- .../random/iterators/uniform/docs/repl.txt | 2 +- .../random/iterators/uniform/lib/main.js | 4 +-- .../random/iterators/uniform/test/test.js | 6 ++-- .../random/iterators/weibull/README.md | 2 +- .../random/iterators/weibull/docs/repl.txt | 2 +- .../random/iterators/weibull/lib/main.js | 4 +-- .../random/iterators/weibull/test/test.js | 6 ++-- .../@stdlib/random/sample/lib/factory.js | 2 +- .../random/sample/test/test.factory.js | 2 +- .../@stdlib/random/sample/test/test.js | 2 +- .../@stdlib/random/shuffle/lib/factory.js | 2 +- .../random/shuffle/test/test.factory.js | 2 +- .../@stdlib/random/shuffle/test/test.js | 2 +- .../@stdlib/stats/incr/mapcorr/test/test.js | 4 +-- .../stats/incr/mcovariance/test/test.js | 4 +-- .../@stdlib/stats/incr/mpcorr/test/test.js | 4 +-- .../@stdlib/stats/incr/mpcorr2/test/test.js | 4 +-- .../stats/incr/mpcorrdist/test/test.js | 8 ++--- 426 files changed, 902 insertions(+), 902 deletions(-) diff --git a/lib/node_modules/@stdlib/_tools/eslint/rules/jsdoc-require-throws-tags/test/fixtures/invalid.js b/lib/node_modules/@stdlib/_tools/eslint/rules/jsdoc-require-throws-tags/test/fixtures/invalid.js index c6c977a19c39..dde3c46b0f99 100644 --- a/lib/node_modules/@stdlib/_tools/eslint/rules/jsdoc-require-throws-tags/test/fixtures/invalid.js +++ b/lib/node_modules/@stdlib/_tools/eslint/rules/jsdoc-require-throws-tags/test/fixtures/invalid.js @@ -76,7 +76,7 @@ test = { ' iter = {};', ' setReadOnly( iter, \'next\', next );', ' setReadOnly( iter, \'return\', end );', - ' setReadOnly( iter, \'SEED\', rand.SEED );', + ' setReadOnly( iter, \'seed\', rand.seed );', '', ' // If an environment supports `Symbol.iterator`, make the iterator iterable:', ' if ( iteratorSymbol ) {', @@ -131,7 +131,7 @@ test = { ' */', ' function factory() {', ' iterator( p, {', - ' \'seed\': iter.SEED,', + ' \'seed\': iter.seed,', ' \'iter\': niter', ' });', ' }', diff --git a/lib/node_modules/@stdlib/fastmath/special/alpha-max-plus-beta-min/test/test.factory.js b/lib/node_modules/@stdlib/fastmath/special/alpha-max-plus-beta-min/test/test.factory.js index 0edc75302f3a..e912274989a6 100644 --- a/lib/node_modules/@stdlib/fastmath/special/alpha-max-plus-beta-min/test/test.factory.js +++ b/lib/node_modules/@stdlib/fastmath/special/alpha-max-plus-beta-min/test/test.factory.js @@ -54,7 +54,7 @@ tape( 'the returned function computes the hypotenuse using the alpha max plus be var i; rand = randu(); - t.ok( true, 'seed: '+rand.SEED ); + t.ok( true, 'seed: '+rand.seed ); approx = factory( 1.0, 0.5 ); tol = 0.1180; @@ -87,7 +87,7 @@ tape( 'the returned function computes the hypotenuse using the alpha max plus be var i; rand = randu(); - t.ok( true, 'seed: '+rand.SEED ); + t.ok( true, 'seed: '+rand.seed ); approx = factory( 1.0, 0.5, true ); tol = 0.1180; @@ -120,7 +120,7 @@ tape( 'the returned function computes the hypotenuse using the alpha max plus be var i; rand = randu(); - t.ok( true, 'seed: '+rand.SEED ); + t.ok( true, 'seed: '+rand.seed ); approx = factory( 1.0, 0.5, false, true ); tol = 0.30; // mainly due to |x| = |y| = 1 @@ -153,7 +153,7 @@ tape( 'the returned function computes the hypotenuse using the alpha max plus be var i; rand = randu(); - t.ok( true, 'seed: '+rand.SEED ); + t.ok( true, 'seed: '+rand.seed ); approx = factory( 1.0, 0.5, true, true ); tol = 0.30; // mainly due to |x| = |y| = 1 @@ -186,7 +186,7 @@ tape( 'the returned function computes the hypotenuse using the alpha max plus be var i; rand = randu(); - t.ok( true, 'seed: '+rand.SEED ); + t.ok( true, 'seed: '+rand.seed ); approx = factory( 1.0, 0.25 ); tol = 0.1161; @@ -219,7 +219,7 @@ tape( 'the returned function computes the hypotenuse using the alpha max plus be var i; rand = randu(); - t.ok( true, 'seed: '+rand.SEED ); + t.ok( true, 'seed: '+rand.seed ); approx = factory( 1.0, 0.25, true ); tol = 0.1161; @@ -252,7 +252,7 @@ tape( 'the returned function computes the hypotenuse using the alpha max plus be var i; rand = randu(); - t.ok( true, 'seed: '+rand.SEED ); + t.ok( true, 'seed: '+rand.seed ); approx = factory( 1.0, 0.25, false, true ); tol = 0.30; // mainly due to |x| = |y| = 1 @@ -285,7 +285,7 @@ tape( 'the returned function computes the hypotenuse using the alpha max plus be var i; rand = randu(); - t.ok( true, 'seed: '+rand.SEED ); + t.ok( true, 'seed: '+rand.seed ); approx = factory( 1.0, 0.25, true, true ); tol = 0.30; // mainly due to |x| = |y| = 1 @@ -318,7 +318,7 @@ tape( 'the returned function computes the hypotenuse using the alpha max plus be var i; rand = randu(); - t.ok( true, 'seed: '+rand.SEED ); + t.ok( true, 'seed: '+rand.seed ); approx = factory( 1.0, 3.0/8.0 ); tol = 0.0680; @@ -351,7 +351,7 @@ tape( 'the returned function computes the hypotenuse using the alpha max plus be var i; rand = randu(); - t.ok( true, 'seed: '+rand.SEED ); + t.ok( true, 'seed: '+rand.seed ); approx = factory( 1.0, 3.0/8.0, true ); tol = 0.0680; @@ -384,7 +384,7 @@ tape( 'the returned function computes the hypotenuse using the alpha max plus be var i; rand = randu(); - t.ok( true, 'seed: '+rand.SEED ); + t.ok( true, 'seed: '+rand.seed ); approx = factory( 1.0, 3.0/8.0, true ); tol = 0.0680; @@ -417,7 +417,7 @@ tape( 'the returned function computes the hypotenuse using the alpha max plus be var i; rand = randu(); - t.ok( true, 'seed: '+rand.SEED ); + t.ok( true, 'seed: '+rand.seed ); approx = factory( 7.0/8.0, 7.0/16.0 ); tol = 0.1250; @@ -450,7 +450,7 @@ tape( 'the returned function computes the hypotenuse using the alpha max plus be var i; rand = randu(); - t.ok( true, 'seed: '+rand.SEED ); + t.ok( true, 'seed: '+rand.seed ); approx = factory( 15.0/16.0, 15.0/32.0 ); tol = 0.0625; @@ -483,7 +483,7 @@ tape( 'the returned function computes the hypotenuse using the alpha max plus be var i; rand = randu(); - t.ok( true, 'seed: '+rand.SEED ); + t.ok( true, 'seed: '+rand.seed ); approx = factory( 0.96043387010342, 0.397824734759316 ); tol = 0.0396; @@ -516,7 +516,7 @@ tape( 'the returned function computes the hypotenuse using the alpha max plus be var i; rand = randu(); - t.ok( true, 'seed: '+rand.SEED ); + t.ok( true, 'seed: '+rand.seed ); approx = factory( 0.96043387010342, 0.397824734759316, true, true ); tol = 0.0396; diff --git a/lib/node_modules/@stdlib/fastmath/special/alpha-max-plus-beta-min/test/test.js b/lib/node_modules/@stdlib/fastmath/special/alpha-max-plus-beta-min/test/test.js index 2d6ed9384212..344ac98aa73e 100644 --- a/lib/node_modules/@stdlib/fastmath/special/alpha-max-plus-beta-min/test/test.js +++ b/lib/node_modules/@stdlib/fastmath/special/alpha-max-plus-beta-min/test/test.js @@ -51,7 +51,7 @@ tape( 'the function computes the hypotenuse using the alpha max plus beta min al var i; rand = randu(); - t.ok( true, 'seed: '+rand.SEED ); + t.ok( true, 'seed: '+rand.seed ); tol = 0.0396; for ( i = 0; i < 500; i++ ) { diff --git a/lib/node_modules/@stdlib/ml/incr/kmeans/lib/main.js b/lib/node_modules/@stdlib/ml/incr/kmeans/lib/main.js index dc68a8778e77..56b02616f0ff 100644 --- a/lib/node_modules/@stdlib/ml/incr/kmeans/lib/main.js +++ b/lib/node_modules/@stdlib/ml/incr/kmeans/lib/main.js @@ -243,7 +243,7 @@ function incrkmeans() { copyMatrix( results.centroids, centroids ); } // Attach properties and methods to the accumulator: - setReadOnly( accumulator, 'SEED', opts.seed ); + setReadOnly( accumulator, 'seed', opts.seed ); setReadOnly( accumulator, 'predict', predict ); return accumulator; diff --git a/lib/node_modules/@stdlib/random/base/README.md b/lib/node_modules/@stdlib/random/base/README.md index 9e18afe6f208..75783cc2d8ba 100644 --- a/lib/node_modules/@stdlib/random/base/README.md +++ b/lib/node_modules/@stdlib/random/base/README.md @@ -93,7 +93,7 @@ The namespace contains the following PRNGs: Attached to each PRNG are the following properties: - **NAME**: the generator name. -- **SEED**: the value used to seed the PRNG. +- **seed**: the value used to seed the PRNG. - **STATE**: the PRNG state. - **STATE_SIZE**: the size of the PRNG state. - **PRNG**: the underlying pseudorandom number generator. @@ -112,7 +112,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = random.randu.factory({ - 'seed': random.randu.SEED + 'seed': random.randu.seed }); for ( i = 0; i < 100; i++ ) { v = rand(); diff --git a/lib/node_modules/@stdlib/random/base/arcsine/README.md b/lib/node_modules/@stdlib/random/base/arcsine/README.md index d3c288d7d27a..01f07115a8ba 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/README.md +++ b/lib/node_modules/@stdlib/random/base/arcsine/README.md @@ -131,7 +131,7 @@ var prng = arcsine.PRNG; // returns ``` -#### arcsine.SEED +#### arcsine.seed The value used to seed `arcsine()`. @@ -147,7 +147,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = arcsine.factory( 0.0, 10.0, { - 'seed': arcsine.SEED + 'seed': arcsine.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -241,7 +241,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = arcsine.factory( 0.0, 1.0, { - 'seed': arcsine.SEED + 'seed': arcsine.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt b/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt index d639d1c7832c..599dd8a4718a 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt @@ -88,12 +88,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.STATE diff --git a/lib/node_modules/@stdlib/random/base/arcsine/examples/index.js b/lib/node_modules/@stdlib/random/base/arcsine/examples/index.js index c728d504b773..22e8adc36350 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', arcsine.SEED[ 0 ] ); +console.log( '\nseed: %d', arcsine.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( arcsine( 0.0, 1.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = arcsine.factory( 0.0, 1.0, { - 'seed': arcsine.SEED + 'seed': arcsine.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js b/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js index ae58117b5827..50d98e3f4575 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js @@ -98,7 +98,7 @@ function factory() { prng = arcsine1; } setReadOnly( prng, 'NAME', 'arcsine' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); defineProperty( prng, 'STATE', { 'configurable': false, 'enumerable': true, diff --git a/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js b/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js index 918498a23044..0cf423d64933 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js @@ -108,8 +108,8 @@ tape( 'attached to the returned function is the generator seed', function test( var arcsine = factory({ 'seed': 12345 }); - t.equal( isUint32Array( arcsine.SEED ), true, 'has `SEED` property' ); - t.equal( arcsine.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( arcsine.seed ), true, 'has `seed` property' ); + t.equal( arcsine.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -352,7 +352,7 @@ tape( 'the function returns a PRNG for generating random numbers from an arcsine rejected = 0; for ( i = 0; i < N; i++ ) { arcsine = factory( a, b ); - t.ok( true, 'seed: '+arcsine.SEED ); + t.ok( true, 'seed: '+arcsine.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = arcsine(); if ( x[ j ] < a || x[ j ] > b ) { diff --git a/lib/node_modules/@stdlib/random/base/arcsine/test/test.js b/lib/node_modules/@stdlib/random/base/arcsine/test/test.js index 7051ae8859e5..6564cfffb6b7 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/test/test.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( arcsine.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( arcsine.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/README.md b/lib/node_modules/@stdlib/random/base/bernoulli/README.md index 878a04187c8d..bd8d6a26acdd 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/README.md +++ b/lib/node_modules/@stdlib/random/base/bernoulli/README.md @@ -134,7 +134,7 @@ var prng = bernoulli.PRNG; // returns ``` -#### bernoulli.SEED +#### bernoulli.seed The value used to seed `bernoulli()`. @@ -150,7 +150,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = bernoulli.factory( 0.5, { - 'seed': bernoulli.SEED + 'seed': bernoulli.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -244,7 +244,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = bernoulli.factory( 0.4, { - 'seed': bernoulli.SEED + 'seed': bernoulli.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt b/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt index 412b9aaa1b13..132905dc16fc 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt @@ -75,12 +75,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.STATE diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/examples/index.js b/lib/node_modules/@stdlib/random/base/bernoulli/examples/index.js index 077335be665c..208057a14c67 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', bernoulli.SEED[ 0 ] ); +console.log( '\nseed: %d', bernoulli.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( bernoulli( 0.5 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = bernoulli.factory( 0.5, { - 'seed': bernoulli.SEED + 'seed': bernoulli.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js b/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js index 062ddfce0f66..1ea3fab17679 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js @@ -93,7 +93,7 @@ function factory() { prng = bernoulli1; } setReadOnly( prng, 'NAME', 'bernoulli' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); defineProperty( prng, 'STATE', { 'configurable': false, 'enumerable': true, diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js index c71ed4c93fe2..da02dd1d31ef 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var bernoulli = factory({ 'seed': 12345 }); - t.equal( isUint32Array( bernoulli.SEED ), true, 'has `SEED` property' ); - t.equal( bernoulli.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( bernoulli.seed ), true, 'has `seed` property' ); + t.equal( bernoulli.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -312,7 +312,7 @@ tape( 'the function returns a PRNG for generating random numbers from a Bernoull rejected = 0; for ( i = 0; i < repeats; i++ ) { bernoulli = factory( p ); - t.ok( true, 'seed: '+bernoulli.SEED ); + t.ok( true, 'seed: '+bernoulli.seed ); // Reset the `freq` array... for ( j = 0; j < freq.length; j++ ) { diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js index 12e224eead95..03bb72043bb5 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js @@ -50,7 +50,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( bernoulli.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( bernoulli.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/beta/README.md b/lib/node_modules/@stdlib/random/base/beta/README.md index ddc0da9583c2..1122c9ec903d 100644 --- a/lib/node_modules/@stdlib/random/base/beta/README.md +++ b/lib/node_modules/@stdlib/random/base/beta/README.md @@ -138,7 +138,7 @@ var prng = beta.PRNG; // returns ``` -#### beta.SEED +#### beta.seed The value used to seed `beta()`. @@ -154,7 +154,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = beta.factory( 2.0, 2.0, { - 'seed': beta.SEED + 'seed': beta.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -248,7 +248,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = beta.factory( 2.0, 2.0, { - 'seed': beta.SEED + 'seed': beta.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt b/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt index c4a00d48bcc4..ec30d03ab3aa 100644 --- a/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt @@ -83,12 +83,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.STATE diff --git a/lib/node_modules/@stdlib/random/base/beta/examples/index.js b/lib/node_modules/@stdlib/random/base/beta/examples/index.js index 3c140bb923ed..1f38dc42d537 100644 --- a/lib/node_modules/@stdlib/random/base/beta/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/beta/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', beta.SEED[ 0 ] ); +console.log( '\nseed: %d', beta.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( beta( 2.0, 2.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = beta.factory( 2.0, 2.0, { - 'seed': beta.SEED + 'seed': beta.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js index 201c8531fa53..eb3d10852e5f 100644 --- a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js @@ -100,7 +100,7 @@ function factory() { rand = rand.normalized; randint = minstd({ - 'seed': ( rand.SEED%(minstd.MAX+1) ) || 1 + 'seed': ( rand.seed[0]%(minstd.MAX+1) ) || 1 }); rnorm = randn({ 'seed': randint() @@ -115,7 +115,7 @@ function factory() { prng = beta1; } setReadOnly( prng, 'NAME', 'beta' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); defineProperty( prng, 'STATE', { 'configurable': false, 'enumerable': true, diff --git a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js index f2ab867e93b8..3df78acbbff6 100644 --- a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js @@ -169,8 +169,8 @@ tape( 'attached to the returned function is the generator seed', function test( var beta = factory({ 'seed': 12345 }); - t.equal( isUint32Array( beta.SEED ), true, 'has `SEED` property' ); - t.equal( beta.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( beta.seed ), true, 'has `seed` property' ); + t.equal( beta.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -460,7 +460,7 @@ tape( 'the function returns a PRNG for generating random numbers from a beta dis rejected = 0; for ( i = 0; i < N; i++ ) { rbeta = factory( alpha, beta ); - t.ok( true, 'seed: '+rbeta.SEED ); + t.ok( true, 'seed: '+rbeta.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = rbeta(); } @@ -531,7 +531,7 @@ tape( 'the function returns a PRNG for generating random numbers from a beta dis rejected = 0; for ( i = 0; i < N; i++ ) { rbeta = factory( alpha, beta ); - t.ok( true, 'seed: '+rbeta.SEED ); + t.ok( true, 'seed: '+rbeta.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = rbeta(); } diff --git a/lib/node_modules/@stdlib/random/base/beta/test/test.js b/lib/node_modules/@stdlib/random/base/beta/test/test.js index 34c9c9a21ac0..6415d643bd87 100644 --- a/lib/node_modules/@stdlib/random/base/beta/test/test.js +++ b/lib/node_modules/@stdlib/random/base/beta/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( beta.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( beta.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/betaprime/README.md b/lib/node_modules/@stdlib/random/base/betaprime/README.md index 1d5aa46d7608..1a45f8016b34 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/README.md +++ b/lib/node_modules/@stdlib/random/base/betaprime/README.md @@ -138,7 +138,7 @@ var prng = betaprime.PRNG; // returns ``` -#### betaprime.SEED +#### betaprime.seed The value used to seed `betaprime()`. @@ -154,7 +154,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = betaprime.factory( 2.0, 2.0, { - 'seed': betaprime.SEED + 'seed': betaprime.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -248,7 +248,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = betaprime.factory( 2.0, 2.0, { - 'seed': betaprime.SEED + 'seed': betaprime.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt b/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt index 089e4f673913..0ca7f18579fd 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt @@ -83,12 +83,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.STATE diff --git a/lib/node_modules/@stdlib/random/base/betaprime/examples/index.js b/lib/node_modules/@stdlib/random/base/betaprime/examples/index.js index 24c6fed5958a..f697919694a6 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', betaprime.SEED[ 0 ] ); +console.log( '\nseed: %d', betaprime.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( betaprime( 2.0, 2.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = betaprime.factory( 2.0, 2.0, { - 'seed': betaprime.SEED + 'seed': betaprime.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js b/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js index 7e646a4e3dda..7e9e2a4b94dc 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js @@ -94,7 +94,7 @@ function factory() { prng = betaprime1; } setReadOnly( prng, 'NAME', 'betaprime' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); defineProperty( prng, 'STATE', { 'configurable': false, 'enumerable': true, diff --git a/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js b/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js index ded758e3fcac..d63ccdcf3fda 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js @@ -168,8 +168,8 @@ tape( 'attached to the returned function is the generator seed', function test( var betaprime = factory({ 'seed': 12345 }); - t.equal( isUint32Array( betaprime.SEED ), true, 'has `SEED` property' ); - t.equal( betaprime.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( betaprime.seed ), true, 'has `seed` property' ); + t.equal( betaprime.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -404,7 +404,7 @@ tape( 'the function returns a PRNG for generating random numbers from a beta pri rejected = 0; for ( i = 0; i < N; i++ ) { rbetaprime = factory( alpha, beta ); - t.ok( true, 'seed: '+rbetaprime.SEED ); + t.ok( true, 'seed: '+rbetaprime.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = rbetaprime(); } diff --git a/lib/node_modules/@stdlib/random/base/betaprime/test/test.js b/lib/node_modules/@stdlib/random/base/betaprime/test/test.js index 71e6225ce63b..380efecf1eb0 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/test/test.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( betaprime.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( betaprime.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/binomial/README.md b/lib/node_modules/@stdlib/random/base/binomial/README.md index 47b007c2c817..496fe2188c0f 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/README.md +++ b/lib/node_modules/@stdlib/random/base/binomial/README.md @@ -138,7 +138,7 @@ var prng = binomial.PRNG; // returns ``` -#### binomial.SEED +#### binomial.seed The value used to seed `binomial()`. @@ -154,7 +154,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = binomial.factory( 20, 0.5, { - 'seed': binomial.SEED + 'seed': binomial.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -248,7 +248,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = binomial.factory( 20, 0.5, { - 'seed': binomial.SEED + 'seed': binomial.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt b/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt index 2ad60abdfaa5..21169e4c2cdb 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt @@ -84,12 +84,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.STATE diff --git a/lib/node_modules/@stdlib/random/base/binomial/examples/index.js b/lib/node_modules/@stdlib/random/base/binomial/examples/index.js index de3060d12fed..0e95669d056e 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/binomial/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', binomial.SEED[ 0 ] ); +console.log( '\nseed: %d', binomial.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( binomial( 20, 0.5 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = binomial.factory( 20, 0.5, { - 'seed': binomial.SEED + 'seed': binomial.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js b/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js index f178200d2ca2..ab3675c30115 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js @@ -104,7 +104,7 @@ function factory() { prng = binomial1; } setReadOnly( prng, 'NAME', 'binomial' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); defineProperty( prng, 'STATE', { 'configurable': false, 'enumerable': true, diff --git a/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js b/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js index f680bf982a43..a7661eaf0521 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js @@ -158,8 +158,8 @@ tape( 'attached to the returned function is the generator seed', function test( var binomial = factory({ 'seed': 12345 }); - t.equal( isUint32Array( binomial.SEED ), true, 'has `SEED` property' ); - t.equal( binomial.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( binomial.seed ), true, 'has `seed` property' ); + t.equal( binomial.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -405,7 +405,7 @@ tape( 'the function returns a PRNG for generating random numbers from a binomial rejected = 0; for ( i = 0; i < repeats; i++ ) { binomial = factory( n, p ); - t.ok( true, 'seed: '+binomial.SEED ); + t.ok( true, 'seed: '+binomial.seed ); // Reset the `freq` array... for ( j = 0; j < freq.length; j++ ) { @@ -487,7 +487,7 @@ tape( 'the function returns a PRNG for generating random numbers from a binomial rejected = 0; for ( i = 0; i < repeats; i++ ) { binomial = factory( n, p ); - t.ok( true, 'seed: '+binomial.SEED ); + t.ok( true, 'seed: '+binomial.seed ); // Reset the `freq` array... for ( j = 0; j < freq.length; j++ ) { diff --git a/lib/node_modules/@stdlib/random/base/binomial/test/test.js b/lib/node_modules/@stdlib/random/base/binomial/test/test.js index bf113bd87e72..681aa6f9d47e 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/test/test.js +++ b/lib/node_modules/@stdlib/random/base/binomial/test/test.js @@ -52,7 +52,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( binomial.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( binomial.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/box-muller/README.md b/lib/node_modules/@stdlib/random/base/box-muller/README.md index ed98a469b70f..cb6bffe7b30d 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/README.md +++ b/lib/node_modules/@stdlib/random/base/box-muller/README.md @@ -104,7 +104,7 @@ var prng = randn.PRNG; // returns ``` -#### randn.SEED +#### randn.seed The value used to seed `randn()`. @@ -120,14 +120,14 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = randn.factory({ - 'seed': randn.SEED + 'seed': randn.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); } ``` -If provided a PRNG for uniformly distributed numbers which does not have a `SEED` property, this value is `null`. +If provided a PRNG for uniformly distributed numbers which does not have a `seed` property, this value is `null`. @@ -136,7 +136,7 @@ var rand = randn.factory({ 'prng': Math.random }); -var seed = rand.SEED; +var seed = rand.seed; // returns null ``` @@ -320,7 +320,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = randn.factory({ - 'seed': randn.SEED + 'seed': randn.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt b/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt index 2950c5c6e0df..5659edb33b88 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt @@ -58,12 +58,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.STATE diff --git a/lib/node_modules/@stdlib/random/base/box-muller/examples/index.js b/lib/node_modules/@stdlib/random/base/box-muller/examples/index.js index 9771450c027e..5e91e32e4304 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', randn.SEED[ 0 ] ); +console.log( '\nseed: %d', randn.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( randn() ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = randn.factory({ - 'seed': randn.SEED + 'seed': randn.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js b/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js index 3ce89b124e40..312bebfa93b6 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js @@ -92,12 +92,12 @@ function factory( options ) { randn = randn0( rand ); setReadOnly( randn, 'NAME', 'box-muller' ); - if ( hasOwnProp( rand, 'SEED' ) ) { - v = rand.SEED; + if ( hasOwnProp( rand, 'seed' ) ) { + v = rand.seed; } else { v = null; } - setReadOnly( randn, 'SEED', v ); + setReadOnly( randn, 'seed', v ); // If we are provided an "external" PRNG, we don't support getting or setting PRNG state, as we'd need to check for compatible state value types, etc, entailing considerable complexity. Furthermore, if provided a PRNG, presumably the user can simply get and set the state independently of this PRNG. if ( options && options.prng ) { diff --git a/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js b/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js index 1f1a3abcba32..db88bb470b70 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js @@ -158,13 +158,13 @@ tape( 'attached to the returned function is the generator seed', function test( var randn = factory({ 'seed': 12345 }); - t.equal( isUint32Array( randn.SEED ), true, 'has `SEED` property' ); - t.equal( randn.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( randn.seed ), true, 'has `seed` property' ); + t.equal( randn.seed[ 0 ], 12345, 'equal to provided seed' ); randn = factory({ 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math }); - t.equal( randn.SEED, null, 'equal to `null`' ); + t.equal( randn.seed, null, 'equal to `null`' ); t.end(); }); @@ -281,7 +281,7 @@ tape( 'the function returns pseudorandom numbers from a standard normal distribu rejected = 0; for ( i = 0; i < N; i++ ) { randn = factory(); - t.ok( true, 'seed: '+randn.SEED ); + t.ok( true, 'seed: '+randn.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = randn(); } diff --git a/lib/node_modules/@stdlib/random/base/box-muller/test/test.js b/lib/node_modules/@stdlib/random/base/box-muller/test/test.js index df781ebfac94..185c7b79fda4 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/test/test.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( randn.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( randn.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/cauchy/README.md b/lib/node_modules/@stdlib/random/base/cauchy/README.md index e3a7dff9f829..f78313504569 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/README.md +++ b/lib/node_modules/@stdlib/random/base/cauchy/README.md @@ -131,7 +131,7 @@ var prng = cauchy.PRNG; // returns ``` -#### cauchy.SEED +#### cauchy.seed The value used to seed `cauchy()`. @@ -147,7 +147,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = cauchy.factory( 0.0, 2.0, { - 'seed': cauchy.SEED + 'seed': cauchy.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -241,7 +241,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = cauchy.factory( 2.0, 2.0, { - 'seed': cauchy.SEED + 'seed': cauchy.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt b/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt index 75ac15e73ceb..d9d3cecf1583 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt @@ -81,12 +81,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.STATE diff --git a/lib/node_modules/@stdlib/random/base/cauchy/examples/index.js b/lib/node_modules/@stdlib/random/base/cauchy/examples/index.js index ce2e3be8fca8..7ea7ae9e9dcd 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', cauchy.SEED[ 0 ] ); +console.log( '\nseed: %d', cauchy.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( cauchy( 0.0, 1.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = cauchy.factory( 0.0, 1.0, { - 'seed': cauchy.SEED + 'seed': cauchy.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js b/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js index 7b181526e004..b0ded7e3e111 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js @@ -94,7 +94,7 @@ function factory() { prng = cauchy1; } setReadOnly( prng, 'NAME', 'cauchy' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); defineProperty( prng, 'STATE', { 'configurable': false, 'enumerable': true, diff --git a/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js b/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js index 6532744ead6b..cc0de329ae84 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var cauchy = factory({ 'seed': 12345 }); - t.equal( isUint32Array( cauchy.SEED ), true, 'has `SEED` property' ); - t.equal( cauchy.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( cauchy.seed ), true, 'has `seed` property' ); + t.equal( cauchy.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -328,7 +328,7 @@ tape( 'the function returns a PRNG for generating random numbers from the specif rejected = 0; for ( i = 0; i < N; i++ ) { cauchy = factory( x0, gamma ); - t.ok( true, 'seed: '+cauchy.SEED ); + t.ok( true, 'seed: '+cauchy.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = cauchy(); } diff --git a/lib/node_modules/@stdlib/random/base/cauchy/test/test.js b/lib/node_modules/@stdlib/random/base/cauchy/test/test.js index 4f7d4993d582..9c7211eee7c3 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/test/test.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( cauchy.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( cauchy.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/chi/README.md b/lib/node_modules/@stdlib/random/base/chi/README.md index 4c3cf4f933cd..e6b3849f365c 100644 --- a/lib/node_modules/@stdlib/random/base/chi/README.md +++ b/lib/node_modules/@stdlib/random/base/chi/README.md @@ -127,7 +127,7 @@ var prng = chi.PRNG; // returns ``` -#### chi.SEED +#### chi.seed The value used to seed `chi()`. @@ -143,7 +143,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = chi.factory( 2.0, { - 'seed': chi.SEED + 'seed': chi.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -237,7 +237,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = chi.factory( 1.0, { - 'seed': chi.SEED + 'seed': chi.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt b/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt index c09b6aa86fae..fd0bffa15020 100644 --- a/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt @@ -75,12 +75,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.STATE diff --git a/lib/node_modules/@stdlib/random/base/chi/examples/index.js b/lib/node_modules/@stdlib/random/base/chi/examples/index.js index 0e9a8b0a746e..3220c5d09c6e 100644 --- a/lib/node_modules/@stdlib/random/base/chi/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/chi/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', chi.SEED[ 0 ] ); +console.log( '\nseed: %d', chi.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( chi( 5.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = chi.factory( 5.0, { - 'seed': chi.SEED + 'seed': chi.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/chi/lib/factory.js b/lib/node_modules/@stdlib/random/base/chi/lib/factory.js index 95e23c40e3ea..a6846ff2f2df 100644 --- a/lib/node_modules/@stdlib/random/base/chi/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/chi/lib/factory.js @@ -86,7 +86,7 @@ function factory() { prng = chi1; } setReadOnly( prng, 'NAME', 'chi' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); defineProperty( prng, 'STATE', { 'configurable': false, 'enumerable': true, diff --git a/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js b/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js index a7399706c3d0..1d7c52c6736c 100644 --- a/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var chi = factory({ 'seed': 12345 }); - t.equal( isUint32Array( chi.SEED ), true, 'has `SEED` property' ); - t.equal( chi.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( chi.seed ), true, 'has `seed` property' ); + t.equal( chi.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -307,7 +307,7 @@ tape( 'the function returns a PRNG for generating random numbers from a chi dist rejected = 0; for ( i = 0; i < N; i++ ) { chi = factory( k ); - t.ok( true, 'seed: '+chi.SEED ); + t.ok( true, 'seed: '+chi.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = chi(); } diff --git a/lib/node_modules/@stdlib/random/base/chi/test/test.js b/lib/node_modules/@stdlib/random/base/chi/test/test.js index 6dabd8a9128e..8e666c14dee7 100644 --- a/lib/node_modules/@stdlib/random/base/chi/test/test.js +++ b/lib/node_modules/@stdlib/random/base/chi/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( chi.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( chi.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/chisquare/README.md b/lib/node_modules/@stdlib/random/base/chisquare/README.md index e31a3d5e958a..ff2aca10933b 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/README.md +++ b/lib/node_modules/@stdlib/random/base/chisquare/README.md @@ -127,7 +127,7 @@ var prng = chisquare.PRNG; // returns ``` -#### chisquare.SEED +#### chisquare.seed The value used to seed `chisquare()`. @@ -143,7 +143,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = chisquare.factory( 2.0, { - 'seed': chisquare.SEED + 'seed': chisquare.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -237,7 +237,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = chisquare.factory( 1.0, { - 'seed': chisquare.SEED + 'seed': chisquare.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt b/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt index 6e026e94be56..709c6d3b9640 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt @@ -75,12 +75,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.STATE diff --git a/lib/node_modules/@stdlib/random/base/chisquare/examples/index.js b/lib/node_modules/@stdlib/random/base/chisquare/examples/index.js index 72bd31ad90e9..10ca9aaf864e 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', chisquare.SEED[ 0 ] ); +console.log( '\nseed: %d', chisquare.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( chisquare( 5.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = chisquare.factory( 5.0, { - 'seed': chisquare.SEED + 'seed': chisquare.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js b/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js index b9fd38701e04..61c4a25514f3 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js @@ -86,7 +86,7 @@ function factory() { prng = chisquare1; } setReadOnly( prng, 'NAME', 'chisquare' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); defineProperty( prng, 'STATE', { 'configurable': false, 'enumerable': true, diff --git a/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js b/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js index ed1e23c5d9b7..5e4327a2c644 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var chisquare = factory({ 'seed': 12345 }); - t.equal( isUint32Array( chisquare.SEED ), true, 'has `SEED` property' ); - t.equal( chisquare.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( chisquare.seed ), true, 'has `seed` property' ); + t.equal( chisquare.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -307,7 +307,7 @@ tape( 'the function returns a PRNG for generating random numbers from a chi-squa rejected = 0; for ( i = 0; i < N; i++ ) { chisquare = factory( k ); - t.ok( true, 'seed: '+chisquare.SEED ); + t.ok( true, 'seed: '+chisquare.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = chisquare(); } diff --git a/lib/node_modules/@stdlib/random/base/chisquare/test/test.js b/lib/node_modules/@stdlib/random/base/chisquare/test/test.js index 311efb39a90a..7cf59b970f9c 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/test/test.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( chisquare.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( chisquare.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/cosine/README.md b/lib/node_modules/@stdlib/random/base/cosine/README.md index 99ded8709908..88c4268d6af2 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/README.md +++ b/lib/node_modules/@stdlib/random/base/cosine/README.md @@ -130,7 +130,7 @@ var prng = cosine.PRNG; // returns ``` -#### cosine.SEED +#### cosine.seed The value used to seed `cosine()`. @@ -146,7 +146,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = cosine.factory( 2.0, 2.0, { - 'seed': cosine.SEED + 'seed': cosine.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -240,7 +240,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = cosine.factory( 0.0, 1.0, { - 'seed': cosine.SEED + 'seed': cosine.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt b/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt index 7f30b1276a9c..a21ffd9c74a1 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt @@ -81,12 +81,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.STATE diff --git a/lib/node_modules/@stdlib/random/base/cosine/examples/index.js b/lib/node_modules/@stdlib/random/base/cosine/examples/index.js index 3ed14370a2e4..3edd0d00b009 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/cosine/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', cosine.SEED[ 0 ] ); +console.log( '\nseed: %d', cosine.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( cosine( 0.0, 1.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = cosine.factory( 0.0, 1.0, { - 'seed': cosine.SEED + 'seed': cosine.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js b/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js index ecf7c3a64f88..21cb6d1372c8 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js @@ -95,7 +95,7 @@ function factory() { prng = cosine1; } setReadOnly( prng, 'NAME', 'cosine' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); defineProperty( prng, 'STATE', { 'configurable': false, 'enumerable': true, diff --git a/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js b/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js index 6030889e16d9..443c870f058d 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var cosine = factory({ 'seed': 12345 }); - t.equal( isUint32Array( cosine.SEED ), true, 'has `SEED` property' ); - t.equal( cosine.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( cosine.seed ), true, 'has `seed` property' ); + t.equal( cosine.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -328,7 +328,7 @@ tape( 'the function returns a PRNG for generating random numbers from a cosine d rejected = 0; for ( i = 0; i < N; i++ ) { cosine = factory( mu, s ); - t.ok( true, 'seed: '+cosine.SEED ); + t.ok( true, 'seed: '+cosine.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = cosine(); } diff --git a/lib/node_modules/@stdlib/random/base/cosine/test/test.js b/lib/node_modules/@stdlib/random/base/cosine/test/test.js index acefbb3bcfea..97f0b00244d2 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/test/test.js +++ b/lib/node_modules/@stdlib/random/base/cosine/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( cosine.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( cosine.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md b/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md index 7083e33b22c8..0b516e5d1aec 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md @@ -131,7 +131,7 @@ var prng = discreteUniform.PRNG; // returns ``` -#### discreteUniform.SEED +#### discreteUniform.seed The value used to seed `discreteUniform()`. @@ -147,7 +147,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = discreteUniform.factory( 0, 10, { - 'seed': discreteUniform.SEED + 'seed': discreteUniform.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -241,7 +241,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = discreteUniform.factory( -20, 20, { - 'seed': discreteUniform.SEED + 'seed': discreteUniform.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt b/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt index 321030aba80b..472671e890ff 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt @@ -83,12 +83,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.STATE diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/examples/index.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/examples/index.js index 54b6cea81bc5..d6c8d0f976ba 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', discreteUniform.SEED[ 0 ] ); +console.log( '\nseed: %d', discreteUniform.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( discreteUniform( 0, 100 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = discreteUniform.factory( -20, 20, { - 'seed': discreteUniform.SEED + 'seed': discreteUniform.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js index d0bd16ac6ff9..e00397692e38 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js @@ -97,7 +97,7 @@ function factory() { prng = discreteUniform1; } setReadOnly( prng, 'NAME', 'discrete-uniform' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); defineProperty( prng, 'STATE', { 'configurable': false, 'enumerable': true, diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js index b792153d6ade..cfccf453c3c7 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js @@ -111,8 +111,8 @@ tape( 'attached to the returned function is the generator seed', function test( var discreteUniform = factory({ 'seed': 12345 }); - t.equal( isUint32Array( discreteUniform.SEED ), true, 'has `SEED` property' ); - t.equal( discreteUniform.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( discreteUniform.seed ), true, 'has `seed` property' ); + t.equal( discreteUniform.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -440,7 +440,7 @@ tape( 'the function returns a PRNG for generating random numbers from a discrete rejected = 0; for ( i = 0; i < repeats; i++ ) { discreteUniform = factory( a, b ); - t.ok( true, 'seed: '+discreteUniform.SEED ); + t.ok( true, 'seed: '+discreteUniform.seed ); // Reset the `freq` array... for ( j = 0; j < freq.length; j++ ) { diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js index e33245de9973..57a2bbd8d87f 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js @@ -50,7 +50,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( discreteUniform.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( discreteUniform.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/erlang/README.md b/lib/node_modules/@stdlib/random/base/erlang/README.md index 5e699e6760c9..0698f58368c1 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/README.md +++ b/lib/node_modules/@stdlib/random/base/erlang/README.md @@ -142,7 +142,7 @@ var prng = erlang.PRNG; // returns ``` -#### erlang.SEED +#### erlang.seed The value used to seed `erlang()`. @@ -158,7 +158,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = erlang.factory( 2, 2.0, { - 'seed': erlang.SEED + 'seed': erlang.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -252,7 +252,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = erlang.factory( 2, 2.0, { - 'seed': erlang.SEED + 'seed': erlang.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt b/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt index 98890de4cc8c..7b141dd9a53c 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt @@ -83,12 +83,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.STATE diff --git a/lib/node_modules/@stdlib/random/base/erlang/examples/index.js b/lib/node_modules/@stdlib/random/base/erlang/examples/index.js index 9004d0e6d7de..f2728c843c47 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/erlang/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', erlang.SEED[ 0 ] ); +console.log( '\nseed: %d', erlang.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( erlang( 2, 2.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = erlang.factory( 2, 2.0, { - 'seed': erlang.SEED + 'seed': erlang.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js b/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js index 20de62ee9a98..345ffb5a06a1 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js @@ -97,7 +97,7 @@ function factory() { prng = erlang1; } setReadOnly( prng, 'NAME', 'erlang' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); defineProperty( prng, 'STATE', { 'configurable': false, 'enumerable': true, diff --git a/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js b/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js index 86c0ac5f93ca..3f8f62c7f380 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var erlang = factory({ 'seed': 12345 }); - t.equal( isUint32Array( erlang.SEED ), true, 'has `SEED` property' ); - t.equal( erlang.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( erlang.seed ), true, 'has `seed` property' ); + t.equal( erlang.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -346,7 +346,7 @@ tape( 'the function returns a PRNG for generating random numbers from an Erlang rejected = 0; for ( i = 0; i < N; i++ ) { erlang = factory( k, lambda ); - t.ok( true, 'seed: '+erlang.SEED ); + t.ok( true, 'seed: '+erlang.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = erlang(); } diff --git a/lib/node_modules/@stdlib/random/base/erlang/test/test.js b/lib/node_modules/@stdlib/random/base/erlang/test/test.js index 2342e662ca12..bd8a5fa85a70 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/test/test.js +++ b/lib/node_modules/@stdlib/random/base/erlang/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( erlang.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( erlang.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/exponential/README.md b/lib/node_modules/@stdlib/random/base/exponential/README.md index 10cb72b9080c..e96f1f02b917 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/README.md +++ b/lib/node_modules/@stdlib/random/base/exponential/README.md @@ -127,7 +127,7 @@ var prng = exponential.PRNG; // returns ``` -#### exponential.SEED +#### exponential.seed The value used to seed `exponential()`. @@ -143,7 +143,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = exponential.factory( 2.0, { - 'seed': exponential.SEED + 'seed': exponential.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -237,7 +237,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = exponential.factory( 0.5, { - 'seed': exponential.SEED + 'seed': exponential.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt b/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt index 6fd09a5fac69..8179010adac9 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt @@ -75,12 +75,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.STATE diff --git a/lib/node_modules/@stdlib/random/base/exponential/examples/index.js b/lib/node_modules/@stdlib/random/base/exponential/examples/index.js index 5d75026ce882..002a217355d2 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/exponential/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', exponential.SEED[ 0 ] ); +console.log( '\nseed: %d', exponential.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( exponential( 0.5 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = exponential.factory( 0.5, { - 'seed': exponential.SEED + 'seed': exponential.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js b/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js index f2b03d1eaf37..8009cd1dd74b 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js @@ -94,7 +94,7 @@ function factory() { prng = exponential1; } setReadOnly( prng, 'NAME', 'exponential' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); defineProperty( prng, 'STATE', { 'configurable': false, 'enumerable': true, diff --git a/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js b/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js index 66577c6598fc..ff89e5e39f32 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var exponential = factory({ 'seed': 12345 }); - t.equal( isUint32Array( exponential.SEED ), true, 'has `SEED` property' ); - t.equal( exponential.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( exponential.seed ), true, 'has `seed` property' ); + t.equal( exponential.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -307,7 +307,7 @@ tape( 'the function returns a PRNG for generating random numbers from an exponen rejected = 0; for ( i = 0; i < N; i++ ) { exponential = factory( lambda ); - t.ok( true, 'seed: '+exponential.SEED ); + t.ok( true, 'seed: '+exponential.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = exponential(); } diff --git a/lib/node_modules/@stdlib/random/base/exponential/test/test.js b/lib/node_modules/@stdlib/random/base/exponential/test/test.js index 1f40fe150f15..3de089f0971a 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/test/test.js +++ b/lib/node_modules/@stdlib/random/base/exponential/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the generator name', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( exponential.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( exponential.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/f/README.md b/lib/node_modules/@stdlib/random/base/f/README.md index 208332b5650a..3cbbe316ff29 100644 --- a/lib/node_modules/@stdlib/random/base/f/README.md +++ b/lib/node_modules/@stdlib/random/base/f/README.md @@ -138,7 +138,7 @@ var prng = f.PRNG; // returns ``` -#### f.SEED +#### f.seed The value used to seed `f()`. @@ -154,7 +154,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = f.factory( 2.0, 2.0, { - 'seed': f.SEED + 'seed': f.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -194,7 +194,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = f.factory( 2.0, 2.0, { - 'seed': f.SEED + 'seed': f.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/f/docs/repl.txt b/lib/node_modules/@stdlib/random/base/f/docs/repl.txt index 6ac6bb10fd86..264fbdc70fda 100644 --- a/lib/node_modules/@stdlib/random/base/f/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/f/docs/repl.txt @@ -83,12 +83,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/f/examples/index.js b/lib/node_modules/@stdlib/random/base/f/examples/index.js index c8060de73bc2..2e1c8e7480f2 100644 --- a/lib/node_modules/@stdlib/random/base/f/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/f/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', f.SEED[ 0 ] ); +console.log( '\nseed: %d', f.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( f( 4.0, 2.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = f.factory( 4.0, 2.0, { - 'seed': f.SEED + 'seed': f.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/f/lib/factory.js b/lib/node_modules/@stdlib/random/base/f/lib/factory.js index 1d065b41bca4..6b599ba6ec86 100644 --- a/lib/node_modules/@stdlib/random/base/f/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/f/lib/factory.js @@ -93,7 +93,7 @@ function factory() { prng = f1; } setReadOnly( prng, 'NAME', 'f' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/f/test/test.factory.js b/lib/node_modules/@stdlib/random/base/f/test/test.factory.js index 4b25a81f70d3..08014b24ad21 100644 --- a/lib/node_modules/@stdlib/random/base/f/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/f/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var f = factory({ 'seed': 12345 }); - t.equal( isUint32Array( f.SEED ), true, 'has `SEED` property' ); - t.equal( f.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( f.seed ), true, 'has `seed` property' ); + t.equal( f.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -327,7 +327,7 @@ tape( 'the function returns a PRNG for generating random numbers from an F distr rejected = 0; for ( i = 0; i < N; i++ ) { f = factory( d1, d2 ); - t.ok( true, 'seed: '+f.SEED ); + t.ok( true, 'seed: '+f.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = f(); } diff --git a/lib/node_modules/@stdlib/random/base/f/test/test.js b/lib/node_modules/@stdlib/random/base/f/test/test.js index 2a5dfbedc766..f446c999774b 100644 --- a/lib/node_modules/@stdlib/random/base/f/test/test.js +++ b/lib/node_modules/@stdlib/random/base/f/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( f.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( f.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/frechet/README.md b/lib/node_modules/@stdlib/random/base/frechet/README.md index 32162357c3f3..2b703011a239 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/README.md +++ b/lib/node_modules/@stdlib/random/base/frechet/README.md @@ -150,7 +150,7 @@ var prng = frechet.PRNG; // returns ``` -#### frechet.SEED +#### frechet.seed The value used to seed `frechet()`. @@ -166,7 +166,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = frechet.factory( 4.0, 10.0, 3.0, { - 'seed': frechet.SEED + 'seed': frechet.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -206,7 +206,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = frechet.factory( 1.0, 1.0, 0.5, { - 'seed': frechet.SEED + 'seed': frechet.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/frechet/docs/repl.txt b/lib/node_modules/@stdlib/random/base/frechet/docs/repl.txt index 075ae2c1e9aa..d0c4f5347234 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/frechet/docs/repl.txt @@ -89,12 +89,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/frechet/examples/index.js b/lib/node_modules/@stdlib/random/base/frechet/examples/index.js index 815c0e64d4eb..2708ba45a1ac 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/frechet/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', frechet.SEED[ 0 ] ); +console.log( '\nseed: %d', frechet.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( frechet( 1.0, 1.0, 0.5 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = frechet.factory( 1.0, 1.0, 0.5, { - 'seed': frechet.SEED + 'seed': frechet.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/frechet/lib/factory.js b/lib/node_modules/@stdlib/random/base/frechet/lib/factory.js index 22276b66d19a..860b73ec2193 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/frechet/lib/factory.js @@ -99,7 +99,7 @@ function factory() { prng = frechet1; } setReadOnly( prng, 'NAME', 'frechet' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/frechet/test/test.factory.js b/lib/node_modules/@stdlib/random/base/frechet/test/test.factory.js index 15244744b7dc..cb07fc9e8e33 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/frechet/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var frechet = factory({ 'seed': 12345 }); - t.equal( isUint32Array( frechet.SEED ), true, 'has `SEED` property' ); - t.equal( frechet.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( frechet.seed ), true, 'has `seed` property' ); + t.equal( frechet.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -333,7 +333,7 @@ tape( 'the function returns a PRNG for generating random numbers from a Fréchet rejected = 0; for ( i = 0; i < N; i++ ) { frechet = factory( alpha, s, m ); - t.ok( true, 'seed: '+frechet.SEED ); + t.ok( true, 'seed: '+frechet.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = frechet(); if ( x[ j ] < m ) { diff --git a/lib/node_modules/@stdlib/random/base/frechet/test/test.js b/lib/node_modules/@stdlib/random/base/frechet/test/test.js index fef3c4d40150..3ffd34fd8cb0 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/test/test.js +++ b/lib/node_modules/@stdlib/random/base/frechet/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( frechet.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( frechet.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/gamma/README.md b/lib/node_modules/@stdlib/random/base/gamma/README.md index d7f4916124cc..94df1e5da97a 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/README.md +++ b/lib/node_modules/@stdlib/random/base/gamma/README.md @@ -138,7 +138,7 @@ var prng = gamma.PRNG; // returns ``` -#### gamma.SEED +#### gamma.seed The value used to seed `gamma()`. @@ -154,7 +154,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = gamma.factory( 2.0, 2.0, { - 'seed': gamma.SEED + 'seed': gamma.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -248,7 +248,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = gamma.factory( 2.0, 2.0, { - 'seed': gamma.SEED + 'seed': gamma.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt b/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt index 937892ed4db7..25ee98310f93 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt @@ -83,12 +83,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.STATE diff --git a/lib/node_modules/@stdlib/random/base/gamma/examples/index.js b/lib/node_modules/@stdlib/random/base/gamma/examples/index.js index 60f2ef5566af..0bda77f1407d 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/gamma/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', gamma.SEED[ 0 ] ); +console.log( '\nseed: %d', gamma.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( gamma( 2.0, 2.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = gamma.factory( 2.0, 2.0, { - 'seed': gamma.SEED + 'seed': gamma.seed }); -console.log( '\nseed: %d', gamma.SEED[ 0 ] ); +console.log( '\nseed: %d', gamma.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js b/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js index d607bb93c2af..9160be643550 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js @@ -109,7 +109,7 @@ function factory() { rand = rand.normalized; randi = minstd({ - 'seed': ( rand.SEED%(minstd.MAX+1) ) || 1 + 'seed': ( rand.seed%(minstd.MAX+1) ) || 1 }); rnorm = randn({ 'seed': randi() @@ -131,7 +131,7 @@ function factory() { c = 1.0 / sqrt( 9.0*d ); } setReadOnly( prng, 'NAME', 'gamma' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); defineProperty( prng, 'STATE', { 'configurable': false, 'enumerable': true, diff --git a/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js b/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js index 2877bb4c338a..545835ced217 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js @@ -110,8 +110,8 @@ tape( 'attached to the returned function is the generator seed', function test( var gamma = factory({ 'seed': 12345 }); - t.equal( isUint32Array( gamma.SEED ), true, 'has `SEED` property' ); - t.equal( gamma.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( gamma.seed ), true, 'has `seed` property' ); + t.equal( gamma.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -401,7 +401,7 @@ tape( 'the function returns a PRNG for generating random numbers from a gamma di rejected = 0; for ( i = 0; i < N; i++ ) { gamma = factory( alpha, beta ); - t.ok( true, 'seed: '+gamma.SEED ); + t.ok( true, 'seed: '+gamma.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = gamma(); } @@ -472,7 +472,7 @@ tape( 'the function returns a PRNG for generating random numbers from a gamma di rejected = 0; for ( i = 0; i < N; i++ ) { gamma = factory( alpha, beta ); - t.ok( true, 'seed: '+gamma.SEED ); + t.ok( true, 'seed: '+gamma.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = gamma(); } diff --git a/lib/node_modules/@stdlib/random/base/gamma/test/test.js b/lib/node_modules/@stdlib/random/base/gamma/test/test.js index 5d5a1a7f0bbd..aa6d20e4dbb8 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/test/test.js +++ b/lib/node_modules/@stdlib/random/base/gamma/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( gamma.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( gamma.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/geometric/README.md b/lib/node_modules/@stdlib/random/base/geometric/README.md index 8275b4b37b1b..214b840e9cd8 100644 --- a/lib/node_modules/@stdlib/random/base/geometric/README.md +++ b/lib/node_modules/@stdlib/random/base/geometric/README.md @@ -134,7 +134,7 @@ var prng = geometric.PRNG; // returns ``` -#### geometric.SEED +#### geometric.seed The value used to seed `geometric()`. @@ -150,7 +150,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = geometric.factory( 0.5, { - 'seed': geometric.SEED + 'seed': geometric.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -190,7 +190,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = geometric.factory( 0.4, { - 'seed': geometric.SEED + 'seed': geometric.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/geometric/docs/repl.txt b/lib/node_modules/@stdlib/random/base/geometric/docs/repl.txt index b97687d6d13b..47b7477708e9 100644 --- a/lib/node_modules/@stdlib/random/base/geometric/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/geometric/docs/repl.txt @@ -75,12 +75,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/geometric/examples/index.js b/lib/node_modules/@stdlib/random/base/geometric/examples/index.js index 36b3f697a10a..7f8d02157220 100644 --- a/lib/node_modules/@stdlib/random/base/geometric/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/geometric/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', geometric.SEED[ 0 ] ); +console.log( '\nseed: %d', geometric.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( geometric( 0.5 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = geometric.factory( 0.5, { - 'seed': geometric.SEED + 'seed': geometric.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/geometric/lib/factory.js b/lib/node_modules/@stdlib/random/base/geometric/lib/factory.js index 6b6bdcfb9838..24d4d8d748a2 100644 --- a/lib/node_modules/@stdlib/random/base/geometric/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/geometric/lib/factory.js @@ -93,7 +93,7 @@ function factory() { prng = geometric1; } setReadOnly( prng, 'NAME', 'geometric' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/geometric/test/test.factory.js b/lib/node_modules/@stdlib/random/base/geometric/test/test.factory.js index 0e6c11845890..e4dc0df65ec9 100644 --- a/lib/node_modules/@stdlib/random/base/geometric/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/geometric/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var geometric = factory({ 'seed': 12345 }); - t.equal( isUint32Array( geometric.SEED ), true, 'has `SEED` property' ); - t.equal( geometric.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( geometric.seed ), true, 'has `seed` property' ); + t.equal( geometric.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -290,7 +290,7 @@ tape( 'the function returns a PRNG for generating random numbers from a geometri rejected = 0; for ( i = 0; i < repeats; i++ ) { geometric = factory( p ); - t.ok( true, 'seed: '+geometric.SEED ); + t.ok( true, 'seed: '+geometric.seed ); // Reset the `freq` array... for ( j = 0; j < freq.length; j++ ) { diff --git a/lib/node_modules/@stdlib/random/base/geometric/test/test.js b/lib/node_modules/@stdlib/random/base/geometric/test/test.js index 2b77f733e5be..bbb771fb749e 100644 --- a/lib/node_modules/@stdlib/random/base/geometric/test/test.js +++ b/lib/node_modules/@stdlib/random/base/geometric/test/test.js @@ -50,7 +50,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( geometric.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( geometric.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/gumbel/README.md b/lib/node_modules/@stdlib/random/base/gumbel/README.md index 41a32eb0fa7d..a6275116da17 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/README.md +++ b/lib/node_modules/@stdlib/random/base/gumbel/README.md @@ -130,7 +130,7 @@ var prng = gumbel.PRNG; // returns ``` -#### gumbel.SEED +#### gumbel.seed The value used to seed `gumbel()`. @@ -146,7 +146,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = gumbel.factory( 2.0, 2.0, { - 'seed': gumbel.SEED + 'seed': gumbel.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -186,7 +186,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = gumbel.factory( 0.0, 1.0, { - 'seed': gumbel.SEED + 'seed': gumbel.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/gumbel/docs/repl.txt b/lib/node_modules/@stdlib/random/base/gumbel/docs/repl.txt index a83dd9554a7f..2cb4844d563a 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/gumbel/docs/repl.txt @@ -81,12 +81,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/gumbel/examples/index.js b/lib/node_modules/@stdlib/random/base/gumbel/examples/index.js index 39741318f233..664e5cbc95a8 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/gumbel/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', gumbel.SEED[ 0 ] ); +console.log( '\nseed: %d', gumbel.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( gumbel( 0.0, 1.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = gumbel.factory( 0.0, 1.0, { - 'seed': gumbel.SEED + 'seed': gumbel.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/gumbel/lib/factory.js b/lib/node_modules/@stdlib/random/base/gumbel/lib/factory.js index 0137e5f1d97b..65916b4515d4 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/gumbel/lib/factory.js @@ -95,7 +95,7 @@ function factory() { prng = gumbel1; } setReadOnly( prng, 'NAME', 'gumbel' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/gumbel/test/test.factory.js b/lib/node_modules/@stdlib/random/base/gumbel/test/test.factory.js index 3c798cad6d9d..fbb52135b412 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/gumbel/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var gumbel = factory({ 'seed': 12345 }); - t.equal( isUint32Array( gumbel.SEED ), true, 'has `SEED` property' ); - t.equal( gumbel.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( gumbel.seed ), true, 'has `seed` property' ); + t.equal( gumbel.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -306,7 +306,7 @@ tape( 'the function returns a PRNG for generating random numbers from a Gumbel d rejected = 0; for ( i = 0; i < N; i++ ) { gumbel = factory( mu, beta ); - t.ok( true, 'seed: '+gumbel.SEED ); + t.ok( true, 'seed: '+gumbel.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = gumbel(); } diff --git a/lib/node_modules/@stdlib/random/base/gumbel/test/test.js b/lib/node_modules/@stdlib/random/base/gumbel/test/test.js index 58158263f75d..a5416198ef9c 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/test/test.js +++ b/lib/node_modules/@stdlib/random/base/gumbel/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( gumbel.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( gumbel.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/README.md b/lib/node_modules/@stdlib/random/base/hypergeometric/README.md index 7ad700f2e49e..6a9e2517d0d5 100644 --- a/lib/node_modules/@stdlib/random/base/hypergeometric/README.md +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/README.md @@ -140,7 +140,7 @@ var prng = hypergeometric.PRNG; // returns ``` -#### hypergeometric.SEED +#### hypergeometric.seed The value used to seed `hypergeometric()`. @@ -156,7 +156,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = hypergeometric.factory( 20, 10, 15, { - 'seed': hypergeometric.SEED + 'seed': hypergeometric.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -196,7 +196,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = hypergeometric.factory( 10, 10, 10, { - 'seed': hypergeometric.SEED + 'seed': hypergeometric.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/docs/repl.txt b/lib/node_modules/@stdlib/random/base/hypergeometric/docs/repl.txt index c7476af6a77e..1dc88e8ec387 100644 --- a/lib/node_modules/@stdlib/random/base/hypergeometric/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/docs/repl.txt @@ -90,12 +90,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/examples/index.js b/lib/node_modules/@stdlib/random/base/hypergeometric/examples/index.js index bddf6a9a03a5..a476cf4adf66 100644 --- a/lib/node_modules/@stdlib/random/base/hypergeometric/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', hypergeometric.SEED[ 0 ] ); +console.log( '\nseed: %d', hypergeometric.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( hypergeometric( 10, 10, 10 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = hypergeometric.factory( 10, 10, 10, { - 'seed': hypergeometric.SEED + 'seed': hypergeometric.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/lib/factory.js b/lib/node_modules/@stdlib/random/base/hypergeometric/lib/factory.js index 5cd8388fe618..b8fb4c01b6db 100644 --- a/lib/node_modules/@stdlib/random/base/hypergeometric/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/lib/factory.js @@ -106,7 +106,7 @@ function factory() { prng = hypergeometric1; } setReadOnly( prng, 'NAME', 'hypergeometric' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/test/test.factory.js b/lib/node_modules/@stdlib/random/base/hypergeometric/test/test.factory.js index fc023944db22..222841a984fd 100644 --- a/lib/node_modules/@stdlib/random/base/hypergeometric/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var hypergeometric = factory({ 'seed': 12345 }); - t.equal( isUint32Array( hypergeometric.SEED ), true, 'has `SEED` property' ); - t.equal( hypergeometric.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( hypergeometric.seed ), true, 'has `seed` property' ); + t.equal( hypergeometric.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -428,7 +428,7 @@ tape( 'the function returns a PRNG for generating random numbers from a hypergeo rejected = 0; for ( i = 0; i < repeats; i++ ) { hypergeometric = factory( N, K, n ); - t.ok( true, 'seed: '+hypergeometric.SEED ); + t.ok( true, 'seed: '+hypergeometric.seed ); // Reset the `freq` array... for ( j = 0; j < freq.length; j++ ) { @@ -513,7 +513,7 @@ tape( 'the function returns a PRNG for generating random numbers from a hypergeo rejected = 0; for ( i = 0; i < repeats; i++ ) { hypergeometric = factory( N, K, n ); - t.ok( true, 'seed: '+hypergeometric.SEED ); + t.ok( true, 'seed: '+hypergeometric.seed ); // Reset the `freq` array... for ( j = 0; j < freq.length; j++ ) { @@ -598,7 +598,7 @@ tape( 'the function returns a PRNG for generating random numbers from a hypergeo rejected = 0; for ( i = 0; i < repeats; i++ ) { hypergeometric = factory( N, K, n ); - t.ok( true, 'seed: '+hypergeometric.SEED ); + t.ok( true, 'seed: '+hypergeometric.seed ); // Reset the `freq` array... for ( j = 0; j < freq.length; j++ ) { @@ -683,7 +683,7 @@ tape( 'the function returns a PRNG for generating random numbers from a hypergeo rejected = 0; for ( i = 0; i < repeats; i++ ) { hypergeometric = factory( N, K, n ); - t.ok( true, 'seed: '+hypergeometric.SEED ); + t.ok( true, 'seed: '+hypergeometric.seed ); // Reset the `freq` array... for ( j = 0; j < freq.length; j++ ) { diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/test/test.js b/lib/node_modules/@stdlib/random/base/hypergeometric/test/test.js index e85b0ea637e0..14c4a6cc2f92 100644 --- a/lib/node_modules/@stdlib/random/base/hypergeometric/test/test.js +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/test/test.js @@ -52,7 +52,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( hypergeometric.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( hypergeometric.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md b/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md index f462bd86ad8c..4685f267cc90 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md @@ -129,7 +129,7 @@ var prng = randn.PRNG; // returns ``` -#### randn.SEED +#### randn.seed The value used to seed `randn()`. @@ -145,7 +145,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = randn.factory({ - 'seed': randn.SEED + 'seed': randn.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -161,7 +161,7 @@ var rand = randn.factory({ 'prng': Math.random }); -var seed = rand.SEED; +var seed = rand.seed; // returns null ``` @@ -291,7 +291,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = randn.factory({ - 'seed': randn.SEED + 'seed': randn.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt b/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt index d5a999487204..3436800a247e 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt @@ -72,12 +72,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.STATE diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/examples/index.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/examples/index.js index 9771450c027e..5e91e32e4304 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', randn.SEED[ 0 ] ); +console.log( '\nseed: %d', randn.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( randn() ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = randn.factory({ - 'seed': randn.SEED + 'seed': randn.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js index 5c46e2ca7ed3..cd5ea3cf9c06 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js @@ -124,9 +124,9 @@ function factory( options ) { setReadOnly( randn, 'NAME', 'improved-ziggurat' ); if ( seed === null ) { - setReadOnly( randn, 'SEED', null ); + setReadOnly( randn, 'seed', null ); } else { - defineProperty( randn, 'SEED', { + defineProperty( randn, 'seed', { 'configurable': false, 'enumerable': true, 'get': getSeed @@ -171,7 +171,7 @@ function factory( options ) { * @returns {*} seed */ function getSeed() { - return randu.SEED; + return randu.seed; } /** diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js index e82f25b3b000..7ad482852d28 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js @@ -344,15 +344,15 @@ tape( 'attached to the returned function is the generator seed (integer seed)', randn = factory({ 'seed': 12345 }); - actual = randn.SEED; + actual = randn.seed; - t.equal( isUint32Array( actual ), true, 'has `SEED` property' ); + t.equal( isUint32Array( actual ), true, 'has `seed` property' ); t.equal( actual[ 0 ], 12345, 'equal to provided seed' ); randn = factory({ 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math }); - t.equal( randn.SEED, null, 'equal to `null`' ); + t.equal( randn.seed, null, 'equal to `null`' ); t.end(); }); @@ -368,8 +368,8 @@ tape( 'attached to the returned function is the generator seed (array seed)', fu 'seed': seed }); - actual = randn.SEED; - t.equal( isUint32Array( actual ), true, 'has `SEED` property' ); + actual = randn.seed; + t.equal( isUint32Array( actual ), true, 'has `seed` property' ); for ( i = 0; i < seed.length; i++ ) { t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } @@ -509,7 +509,7 @@ tape( 'the function returns pseudorandom numbers from a standard normal distribu rejected = 0; for ( i = 0; i < N; i++ ) { randn = factory(); - t.ok( true, 'seed: '+randn.SEED ); + t.ok( true, 'seed: '+randn.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = randn(); } diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js index 6168f8597681..33c822a9aaa2 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( randn.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( randn.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/invgamma/README.md b/lib/node_modules/@stdlib/random/base/invgamma/README.md index 68fd9fd32227..9048e3931c09 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/README.md +++ b/lib/node_modules/@stdlib/random/base/invgamma/README.md @@ -137,7 +137,7 @@ var prng = invgamma.PRNG; // returns ``` -#### invgamma.SEED +#### invgamma.seed The value used to seed `invgamma()`. @@ -153,7 +153,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = invgamma.factory( 2.0, 2.0, { - 'seed': invgamma.SEED + 'seed': invgamma.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -193,7 +193,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = invgamma.factory( 2.0, 2.0, { - 'seed': invgamma.SEED + 'seed': invgamma.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/invgamma/docs/repl.txt b/lib/node_modules/@stdlib/random/base/invgamma/docs/repl.txt index 47df3bc64692..5a5bd56907cd 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/invgamma/docs/repl.txt @@ -83,12 +83,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/invgamma/examples/index.js b/lib/node_modules/@stdlib/random/base/invgamma/examples/index.js index 9a668319434f..04abcf7d3e01 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/invgamma/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', invgamma.SEED[ 0 ] ); +console.log( '\nseed: %d', invgamma.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( invgamma( 2.0, 2.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = invgamma.factory( 2.0, 2.0, { - 'seed': invgamma.SEED + 'seed': invgamma.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js b/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js index 1aeec33abfb9..57333b11bf72 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js @@ -93,7 +93,7 @@ function factory() { prng = invgamma1; } setReadOnly( prng, 'NAME', 'invgamma' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/invgamma/test/test.factory.js b/lib/node_modules/@stdlib/random/base/invgamma/test/test.factory.js index d7b388094b17..cd85e7f4dfc4 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/invgamma/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var invgamma = factory({ 'seed': 12345 }); - t.equal( isUint32Array( invgamma.SEED ), true, 'has `SEED` property' ); - t.equal( invgamma.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( invgamma.seed ), true, 'has `seed` property' ); + t.equal( invgamma.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -323,7 +323,7 @@ tape( 'the function returns a PRNG for generating random numbers from an inverse rejected = 0; for ( i = 0; i < N; i++ ) { invgamma = factory( alpha, beta ); - t.ok( true, 'seed: '+invgamma.SEED ); + t.ok( true, 'seed: '+invgamma.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = invgamma(); } diff --git a/lib/node_modules/@stdlib/random/base/invgamma/test/test.js b/lib/node_modules/@stdlib/random/base/invgamma/test/test.js index 86e120ea12e1..3a03d3ace681 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/test/test.js +++ b/lib/node_modules/@stdlib/random/base/invgamma/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( invgamma.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( invgamma.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/kumaraswamy/README.md b/lib/node_modules/@stdlib/random/base/kumaraswamy/README.md index 2c0d3d075285..281a27bae0c7 100644 --- a/lib/node_modules/@stdlib/random/base/kumaraswamy/README.md +++ b/lib/node_modules/@stdlib/random/base/kumaraswamy/README.md @@ -138,7 +138,7 @@ var prng = kumaraswamy.PRNG; // returns ``` -#### kumaraswamy.SEED +#### kumaraswamy.seed The value used to seed `kumaraswamy()`. @@ -154,7 +154,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = kumaraswamy.factory( 2.0, 2.0, { - 'seed': kumaraswamy.SEED + 'seed': kumaraswamy.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -194,7 +194,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = kumaraswamy.factory( 2.0, 2.0, { - 'seed': kumaraswamy.SEED + 'seed': kumaraswamy.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/kumaraswamy/docs/repl.txt b/lib/node_modules/@stdlib/random/base/kumaraswamy/docs/repl.txt index 0ffeac40bd28..7b79cb4fa755 100644 --- a/lib/node_modules/@stdlib/random/base/kumaraswamy/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/kumaraswamy/docs/repl.txt @@ -84,12 +84,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/kumaraswamy/examples/index.js b/lib/node_modules/@stdlib/random/base/kumaraswamy/examples/index.js index 20b5c481cbb4..627a710edab6 100644 --- a/lib/node_modules/@stdlib/random/base/kumaraswamy/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/kumaraswamy/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', kumaraswamy.SEED[ 0 ] ); +console.log( '\nseed: %d', kumaraswamy.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( kumaraswamy( 2.0, 2.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = kumaraswamy.factory( 2.0, 2.0, { - 'seed': kumaraswamy.SEED + 'seed': kumaraswamy.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/factory.js b/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/factory.js index af8a2c49fac9..8861b662e526 100644 --- a/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/factory.js @@ -95,7 +95,7 @@ function factory() { prng = kumaraswamy1; } setReadOnly( prng, 'NAME', 'kumaraswamy' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/kumaraswamy/test/test.factory.js b/lib/node_modules/@stdlib/random/base/kumaraswamy/test/test.factory.js index 96a21fa440cb..cc410bea64d6 100644 --- a/lib/node_modules/@stdlib/random/base/kumaraswamy/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/kumaraswamy/test/test.factory.js @@ -141,8 +141,8 @@ tape( 'attached to the returned function is the generator seed', function test( var kumaraswamy = factory({ 'seed': 12345 }); - t.equal( isUint32Array( kumaraswamy.SEED ), true, 'has `SEED` property' ); - t.equal( kumaraswamy.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( kumaraswamy.seed ), true, 'has `seed` property' ); + t.equal( kumaraswamy.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -355,7 +355,7 @@ tape( 'the function returns a PRNG for generating random numbers from a Kumarasw rejected = 0; for ( i = 0; i < N; i++ ) { rkumaraswamy = factory( a, b ); - t.ok( true, 'seed: '+rkumaraswamy.SEED ); + t.ok( true, 'seed: '+rkumaraswamy.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = rkumaraswamy(); } diff --git a/lib/node_modules/@stdlib/random/base/kumaraswamy/test/test.js b/lib/node_modules/@stdlib/random/base/kumaraswamy/test/test.js index 5c8b467a0ed6..4a84dff3d3c5 100644 --- a/lib/node_modules/@stdlib/random/base/kumaraswamy/test/test.js +++ b/lib/node_modules/@stdlib/random/base/kumaraswamy/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( kumaraswamy.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( kumaraswamy.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/laplace/README.md b/lib/node_modules/@stdlib/random/base/laplace/README.md index 7556c25184b9..0eb32fe1f6e1 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/README.md +++ b/lib/node_modules/@stdlib/random/base/laplace/README.md @@ -130,7 +130,7 @@ var prng = laplace.PRNG; // returns ``` -#### laplace.SEED +#### laplace.seed The value used to seed `laplace()`. @@ -146,7 +146,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = laplace.factory( 2.0, 2.0, { - 'seed': laplace.SEED + 'seed': laplace.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -186,7 +186,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = laplace.factory( 0.0, 1.0, { - 'seed': laplace.SEED + 'seed': laplace.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/laplace/docs/repl.txt b/lib/node_modules/@stdlib/random/base/laplace/docs/repl.txt index a957e6db644b..a7631b55a027 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/laplace/docs/repl.txt @@ -81,12 +81,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/laplace/examples/index.js b/lib/node_modules/@stdlib/random/base/laplace/examples/index.js index ab3112947214..1e0f522830be 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/laplace/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', laplace.SEED[ 0 ] ); +console.log( '\nseed: %d', laplace.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( laplace( 0.0, 1.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = laplace.factory( 0.0, 1.0, { - 'seed': laplace.SEED + 'seed': laplace.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/laplace/lib/factory.js b/lib/node_modules/@stdlib/random/base/laplace/lib/factory.js index 9fc8ac1acb0e..87525e65022d 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/laplace/lib/factory.js @@ -95,7 +95,7 @@ function factory() { prng = laplace1; } setReadOnly( prng, 'NAME', 'laplace' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/laplace/test/test.factory.js b/lib/node_modules/@stdlib/random/base/laplace/test/test.factory.js index 0116ba1f7a57..d32ee726a132 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/laplace/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var laplace = factory({ 'seed': 12345 }); - t.equal( isUint32Array( laplace.SEED ), true, 'has `SEED` property' ); - t.equal( laplace.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( laplace.seed ), true, 'has `seed` property' ); + t.equal( laplace.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -306,7 +306,7 @@ tape( 'the function returns a PRNG for generating random numbers from a Laplace rejected = 0; for ( i = 0; i < N; i++ ) { laplace = factory( mu, b ); - t.ok( true, 'seed: '+laplace.SEED ); + t.ok( true, 'seed: '+laplace.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = laplace(); } diff --git a/lib/node_modules/@stdlib/random/base/laplace/test/test.js b/lib/node_modules/@stdlib/random/base/laplace/test/test.js index 78f086ad54dc..d903c0095f38 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/test/test.js +++ b/lib/node_modules/@stdlib/random/base/laplace/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( laplace.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( laplace.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/levy/README.md b/lib/node_modules/@stdlib/random/base/levy/README.md index 16133d381818..140578c311d8 100644 --- a/lib/node_modules/@stdlib/random/base/levy/README.md +++ b/lib/node_modules/@stdlib/random/base/levy/README.md @@ -130,7 +130,7 @@ var prng = levy.PRNG; // returns ``` -#### levy.SEED +#### levy.seed The value used to seed `levy()`. @@ -146,7 +146,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = levy.factory( 2.0, 2.0, { - 'seed': levy.SEED + 'seed': levy.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -186,7 +186,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = levy.factory( 0.0, 1.0, { - 'seed': levy.SEED + 'seed': levy.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/levy/docs/repl.txt b/lib/node_modules/@stdlib/random/base/levy/docs/repl.txt index 01cd6c42d8c8..5a0766dc505d 100644 --- a/lib/node_modules/@stdlib/random/base/levy/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/levy/docs/repl.txt @@ -81,12 +81,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/levy/examples/index.js b/lib/node_modules/@stdlib/random/base/levy/examples/index.js index 0212087162e5..b80b5da0c8fa 100644 --- a/lib/node_modules/@stdlib/random/base/levy/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/levy/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', levy.SEED[ 0 ] ); +console.log( '\nseed: %d', levy.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( levy( 0.0, 1.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = levy.factory( 0.0, 1.0, { - 'seed': levy.SEED + 'seed': levy.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/levy/lib/factory.js b/lib/node_modules/@stdlib/random/base/levy/lib/factory.js index 421c774b33e1..055f9b9d2525 100644 --- a/lib/node_modules/@stdlib/random/base/levy/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/levy/lib/factory.js @@ -95,7 +95,7 @@ function factory() { prng = levy1; } setReadOnly( prng, 'NAME', 'levy' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/levy/test/test.factory.js b/lib/node_modules/@stdlib/random/base/levy/test/test.factory.js index fe6c4089598f..29807d5d8175 100644 --- a/lib/node_modules/@stdlib/random/base/levy/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/levy/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var levy = factory({ 'seed': 12345 }); - t.equal( isUint32Array( levy.SEED ), true, 'has `SEED` property' ); - t.equal( levy.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( levy.seed ), true, 'has `seed` property' ); + t.equal( levy.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -306,7 +306,7 @@ tape( 'the function returns a PRNG for generating random numbers from a Lévy di rejected = 0; for ( i = 0; i < N; i++ ) { levy = factory( mu, c ); - t.ok( true, 'seed: '+levy.SEED ); + t.ok( true, 'seed: '+levy.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = levy(); } diff --git a/lib/node_modules/@stdlib/random/base/levy/test/test.js b/lib/node_modules/@stdlib/random/base/levy/test/test.js index 484dc87e90c2..b29a3aa56ae0 100644 --- a/lib/node_modules/@stdlib/random/base/levy/test/test.js +++ b/lib/node_modules/@stdlib/random/base/levy/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( levy.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( levy.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/logistic/README.md b/lib/node_modules/@stdlib/random/base/logistic/README.md index 17291573d5d4..5af734deeee7 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/README.md +++ b/lib/node_modules/@stdlib/random/base/logistic/README.md @@ -130,7 +130,7 @@ var prng = logistic.PRNG; // returns ``` -#### logistic.SEED +#### logistic.seed The value used to seed `logistic()`. @@ -146,7 +146,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = logistic.factory( 2.0, 2.0, { - 'seed': logistic.SEED + 'seed': logistic.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -186,7 +186,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = logistic.factory( 0.0, 1.0, { - 'seed': logistic.SEED + 'seed': logistic.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/logistic/docs/repl.txt b/lib/node_modules/@stdlib/random/base/logistic/docs/repl.txt index feafe38f6809..89a960b63cc5 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/logistic/docs/repl.txt @@ -81,12 +81,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/logistic/examples/index.js b/lib/node_modules/@stdlib/random/base/logistic/examples/index.js index a1bb80d87064..0bf63da23c33 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/logistic/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', logistic.SEED[ 0 ] ); +console.log( '\nseed: %d', logistic.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( logistic( 0.0, 1.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = logistic.factory( 0.0, 1.0, { - 'seed': logistic.SEED + 'seed': logistic.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/logistic/lib/factory.js b/lib/node_modules/@stdlib/random/base/logistic/lib/factory.js index 6059c140b259..db237e5e1ec1 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/logistic/lib/factory.js @@ -95,7 +95,7 @@ function factory() { prng = logistic1; } setReadOnly( prng, 'NAME', 'logistic' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/logistic/test/test.factory.js b/lib/node_modules/@stdlib/random/base/logistic/test/test.factory.js index c984407c9862..2e766ec316bf 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/logistic/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var logistic = factory({ 'seed': 12345 }); - t.equal( isUint32Array( logistic.SEED ), true, 'has `SEED` property' ); - t.equal( logistic.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( logistic.seed ), true, 'has `seed` property' ); + t.equal( logistic.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -306,7 +306,7 @@ tape( 'the function returns a PRNG for generating random numbers from a logistic rejected = 0; for ( i = 0; i < N; i++ ) { logistic = factory( mu, s ); - t.ok( true, 'seed: '+logistic.SEED ); + t.ok( true, 'seed: '+logistic.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = logistic(); } diff --git a/lib/node_modules/@stdlib/random/base/logistic/test/test.js b/lib/node_modules/@stdlib/random/base/logistic/test/test.js index 0cfac8fc7b3a..f0220e84bf0f 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/test/test.js +++ b/lib/node_modules/@stdlib/random/base/logistic/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( logistic.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( logistic.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/lognormal/README.md b/lib/node_modules/@stdlib/random/base/lognormal/README.md index c1046d3b91d5..3575bc4ef24e 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/README.md +++ b/lib/node_modules/@stdlib/random/base/lognormal/README.md @@ -130,7 +130,7 @@ var prng = lognormal.PRNG; // returns ``` -#### lognormal.SEED +#### lognormal.seed The value used to seed `lognormal()`. @@ -146,7 +146,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = lognormal.factory( 2.0, 2.0, { - 'seed': lognormal.SEED + 'seed': lognormal.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -186,7 +186,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = lognormal.factory( 0.0, 1.0, { - 'seed': lognormal.SEED + 'seed': lognormal.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/lognormal/docs/repl.txt b/lib/node_modules/@stdlib/random/base/lognormal/docs/repl.txt index 056480eb3e85..fe8254703903 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/lognormal/docs/repl.txt @@ -81,12 +81,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/lognormal/examples/index.js b/lib/node_modules/@stdlib/random/base/lognormal/examples/index.js index b881efe96dda..3bf970c4c397 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/lognormal/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', lognormal.SEED[ 0 ] ); +console.log( '\nseed: %d', lognormal.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( lognormal( 0.0, 1.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = lognormal.factory( 0.0, 1.0, { - 'seed': lognormal.SEED + 'seed': lognormal.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js b/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js index 2e503dc2ab3d..437c2f5206fd 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js @@ -93,7 +93,7 @@ function factory() { prng = lognormal1; } setReadOnly( prng, 'NAME', 'lognormal' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/lognormal/test/test.factory.js b/lib/node_modules/@stdlib/random/base/lognormal/test/test.factory.js index de086dbc902b..9f5aca2456da 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/lognormal/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var lognormal = factory({ 'seed': 12345 }); - t.equal( isUint32Array( lognormal.SEED ), true, 'has `SEED` property' ); - t.equal( lognormal.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( lognormal.seed ), true, 'has `seed` property' ); + t.equal( lognormal.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -306,7 +306,7 @@ tape( 'the function returns a PRNG for generating pseudorandom numbers from a lo rejected = 0; for ( i = 0; i < N; i++ ) { lognormal = factory( mu, sigma ); - t.ok( true, 'seed: '+lognormal.SEED ); + t.ok( true, 'seed: '+lognormal.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = lognormal(); } diff --git a/lib/node_modules/@stdlib/random/base/lognormal/test/test.js b/lib/node_modules/@stdlib/random/base/lognormal/test/test.js index cc2aeeb30b03..16830eceafbd 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/test/test.js +++ b/lib/node_modules/@stdlib/random/base/lognormal/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( lognormal.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( lognormal.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md b/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md index 3e6072a9412d..62bea4499ca3 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md @@ -118,7 +118,7 @@ var str = minstd.NAME; // returns 'minstd-shuffle' ``` -#### minstd.SEED +#### minstd.seed The value used to seed `minstd()`. @@ -134,7 +134,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = minstd.factory({ - 'seed': minstd.SEED + 'seed': minstd.seed }); for ( i = 0; i < 100; i++ ) { v = rand(); @@ -258,7 +258,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = minstd.factory({ - 'seed': minstd.SEED + 'seed': minstd.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt b/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt index 1f5c9228fc2f..b4c4c254d064 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt @@ -91,12 +91,12 @@ 'minstd-shuffle' -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.MIN diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/examples/index.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/examples/index.js index d12e3005c013..82c73cae39bb 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', minstd.SEED[ 0 ] ); +console.log( '\nseed: %d', minstd.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( minstd() ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = minstd.factory({ - 'seed': minstd.SEED + 'seed': minstd.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js index b471b5bb2a29..924e0e892085 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js @@ -156,7 +156,7 @@ function factory( options ) { slen = 1; } setReadOnly( minstdShuffle, 'NAME', 'minstd-shuffle' ); - defineProperty( minstdShuffle, 'SEED', { + defineProperty( minstdShuffle, 'seed', { 'configurable': false, 'enumerable': true, 'get': getSeed @@ -182,7 +182,7 @@ function factory( options ) { setReadOnly( minstdShuffle, 'normalized', normalized ); setReadOnly( normalized, 'NAME', minstdShuffle.NAME ); - defineProperty( normalized, 'SEED', { + defineProperty( normalized, 'seed', { 'configurable': false, 'enumerable': true, 'get': getSeed diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js index 3690ea0a223d..ed0cf110d91c 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js @@ -370,9 +370,9 @@ tape( 'attached to the returned function is the generator seed (integer seed)', minstd = factory({ 'seed': 12345 }); - actual = minstd.SEED; + actual = minstd.seed; - t.equal( isInt32Array( actual ), true, 'has `SEED` property' ); + t.equal( isInt32Array( actual ), true, 'has `seed` property' ); t.equal( actual.length, 1, 'has expected length' ); t.equal( actual[ 0 ], 12345, 'equal to provided seed' ); t.end(); @@ -389,9 +389,9 @@ tape( 'attached to the returned function is the generator seed (array seed)', fu minstd = factory({ 'seed': seed }); - actual = minstd.SEED; + actual = minstd.seed; - t.equal( isInt32Array( actual ), true, 'has `SEED` property' ); + t.equal( isInt32Array( actual ), true, 'has `seed` property' ); for ( i = 0; i < seed.length; i++ ) { t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } @@ -510,9 +510,9 @@ tape( 'attached to the `normalized` method is the generator seed (integer seed)' minstd = factory({ 'seed': 12345 }); - actual = minstd.normalized.SEED; + actual = minstd.normalized.seed; - t.equal( isInt32Array( actual ), true, 'has `SEED` property' ); + t.equal( isInt32Array( actual ), true, 'has `seed` property' ); t.equal( actual.length, 1, 'has expected length' ); t.equal( actual[ 0 ], 12345, 'equal to provided seed' ); t.end(); @@ -528,9 +528,9 @@ tape( 'attached to the `normalized` method is the generator seed (array seed)', minstd = factory({ 'seed': seed }); - actual = minstd.normalized.SEED; + actual = minstd.normalized.seed; - t.equal( isInt32Array( actual ), true, 'has `SEED` property' ); + t.equal( isInt32Array( actual ), true, 'has `seed` property' ); for ( i = 0; i < seed.length; i++ ) { t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } @@ -651,7 +651,7 @@ tape( 'the `normalized` method returns pseudorandom numbers drawn from a uniform rejected = 0; for ( i = 0; i < N; i++ ) { minstd = factory(); - t.ok( true, 'seed: '+minstd.SEED ); + t.ok( true, 'seed: '+minstd.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = minstd.normalized(); if ( x[ j ] < 0.0 || x[ j ] > 1.0 ) { diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js index f389a92fa0d3..6ad0201c2fe5 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js @@ -51,7 +51,7 @@ tape( 'attached to the main export is the generator name', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isInt32Array( minstd.SEED ), true, 'has `SEED` property' ); + t.equal( isInt32Array( minstd.seed ), true, 'has `seed` property' ); t.end(); }); @@ -109,7 +109,7 @@ tape( 'attached to the `normalized` method is the generator name', function test }); tape( 'attached to the `normalized` method is the generator seed', function test( t ) { - t.equal( isInt32Array( minstd.normalized.SEED ), true, 'has `SEED` property' ); + t.equal( isInt32Array( minstd.normalized.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/minstd/README.md b/lib/node_modules/@stdlib/random/base/minstd/README.md index 919c2def76de..b669b68ed113 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/README.md +++ b/lib/node_modules/@stdlib/random/base/minstd/README.md @@ -118,7 +118,7 @@ var str = minstd.NAME; // returns 'minstd' ``` -#### minstd.SEED +#### minstd.seed The value used to seed `minstd()`. @@ -134,7 +134,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = minstd.factory({ - 'seed': minstd.SEED + 'seed': minstd.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -257,7 +257,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = minstd.factory({ - 'seed': minstd.SEED + 'seed': minstd.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt b/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt index e27d657bab6f..3472b2075415 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt @@ -89,12 +89,12 @@ 'minstd' -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.MIN diff --git a/lib/node_modules/@stdlib/random/base/minstd/examples/index.js b/lib/node_modules/@stdlib/random/base/minstd/examples/index.js index d12e3005c013..82c73cae39bb 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/minstd/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', minstd.SEED[ 0 ] ); +console.log( '\nseed: %d', minstd.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( minstd() ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = minstd.factory({ - 'seed': minstd.SEED + 'seed': minstd.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js b/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js index d92422faa5e8..cdc8c2748e28 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js @@ -146,7 +146,7 @@ function factory( options ) { slen = 1; } setReadOnly( minstd, 'NAME', 'minstd' ); - defineProperty( minstd, 'SEED', { + defineProperty( minstd, 'seed', { 'configurable': false, 'enumerable': true, 'get': getSeed @@ -172,7 +172,7 @@ function factory( options ) { setReadOnly( minstd, 'normalized', normalized ); setReadOnly( normalized, 'NAME', minstd.NAME ); - defineProperty( normalized, 'SEED', { + defineProperty( normalized, 'seed', { 'configurable': false, 'enumerable': true, 'get': getSeed diff --git a/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js b/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js index 0421dee07add..26740432b27b 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js @@ -311,9 +311,9 @@ tape( 'attached to the returned function is the generator seed (integer seed)', minstd = factory({ 'seed': 12345 }); - actual = minstd.SEED; + actual = minstd.seed; - t.equal( isInt32Array( actual ), true, 'has `SEED` property' ); + t.equal( isInt32Array( actual ), true, 'has `seed` property' ); t.equal( actual.length, 1, 'has expected length' ); t.equal( actual[ 0 ], 12345, 'equal to provided seed' ); t.end(); @@ -330,9 +330,9 @@ tape( 'attached to the returned function is the generator seed (array seed)', fu minstd = factory({ 'seed': seed }); - actual = minstd.SEED; + actual = minstd.seed; - t.equal( isInt32Array( actual ), true, 'has `SEED` property' ); + t.equal( isInt32Array( actual ), true, 'has `seed` property' ); for ( i = 0; i < seed.length; i++ ) { t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } @@ -453,9 +453,9 @@ tape( 'attached to the `normalized` method is the generator seed (integer seed)' minstd = factory({ 'seed': 12345 }); - actual = minstd.normalized.SEED; + actual = minstd.normalized.seed; - t.equal( isInt32Array( actual ), true, 'has `SEED` property' ); + t.equal( isInt32Array( actual ), true, 'has `seed` property' ); t.equal( actual.length, 1, 'has expected length' ); t.equal( actual[ 0 ], 12345, 'equal to provided seed' ); t.end(); @@ -471,9 +471,9 @@ tape( 'attached to the `normalized` method is the generator seed (array seed)', minstd = factory({ 'seed': seed }); - actual = minstd.normalized.SEED; + actual = minstd.normalized.seed; - t.equal( isInt32Array( actual ), true, 'has `SEED` property' ); + t.equal( isInt32Array( actual ), true, 'has `seed` property' ); for ( i = 0; i < seed.length; i++ ) { t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } @@ -596,7 +596,7 @@ tape( 'the `normalized` method returns pseudorandom numbers drawn from a uniform rejected = 0; for ( i = 0; i < N; i++ ) { minstd = factory(); - t.ok( true, 'seed: '+minstd.SEED ); + t.ok( true, 'seed: '+minstd.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = minstd.normalized(); if ( x[ j ] < 0.0 || x[ j ] > 1.0 ) { diff --git a/lib/node_modules/@stdlib/random/base/minstd/test/test.js b/lib/node_modules/@stdlib/random/base/minstd/test/test.js index 2a3995b53509..7ff30722322d 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/test/test.js +++ b/lib/node_modules/@stdlib/random/base/minstd/test/test.js @@ -51,7 +51,7 @@ tape( 'attached to the main export is the generator name', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isInt32Array( minstd.SEED ), true, 'has `SEED` property' ); + t.equal( isInt32Array( minstd.seed ), true, 'has `seed` property' ); t.end(); }); @@ -109,7 +109,7 @@ tape( 'attached to the `normalized` method is the generator name', function test }); tape( 'attached to the `normalized` method is the generator seed', function test( t ) { - t.equal( isInt32Array( minstd.normalized.SEED ), true, 'has `SEED` property' ); + t.equal( isInt32Array( minstd.normalized.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/mt19937/README.md b/lib/node_modules/@stdlib/random/base/mt19937/README.md index 62c4177e1791..b9eb6761a2a5 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/README.md +++ b/lib/node_modules/@stdlib/random/base/mt19937/README.md @@ -118,7 +118,7 @@ var str = mt19937.NAME; // returns 'mt19937' ``` -#### mt19937.SEED +#### mt19937.seed The value used to seed `mt19937()`. @@ -134,7 +134,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = mt19937.factory({ - 'seed': mt19937.SEED + 'seed': mt19937.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -258,7 +258,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = mt19937.factory({ - 'seed': mt19937.SEED + 'seed': mt19937.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt b/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt index 563c9dd50c08..7990b652c742 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt @@ -83,12 +83,12 @@ 'mt19937' -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.MIN diff --git a/lib/node_modules/@stdlib/random/base/mt19937/examples/index.js b/lib/node_modules/@stdlib/random/base/mt19937/examples/index.js index 1d128e230c61..9c0a17a2273c 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', mt19937.SEED[ 0 ] ); +console.log( '\nseed: %d', mt19937.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( mt19937() ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = mt19937.factory({ - 'seed': mt19937.SEED + 'seed': mt19937.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index ce23c1e0908b..6728fa22a0db 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -432,7 +432,7 @@ function factory( options ) { slen = seed.length; } setReadOnly( mt19937, 'NAME', 'mt19937' ); - defineProperty( mt19937, 'SEED', { + defineProperty( mt19937, 'seed', { 'configurable': false, 'enumerable': true, 'get': getSeed @@ -458,7 +458,7 @@ function factory( options ) { }); setReadOnly( normalized, 'NAME', mt19937.NAME ); - defineProperty( normalized, 'SEED', { + defineProperty( normalized, 'seed', { 'configurable': false, 'enumerable': true, 'get': getSeed diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js index 0939bc18ad3a..7e0cbd0aa782 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js @@ -321,9 +321,9 @@ tape( 'attached to the returned function is the generator seed (integer seed)', mt19937 = factory({ 'seed': 12345 }); - actual = mt19937.SEED; + actual = mt19937.seed; - t.equal( isUint32Array( actual ), true, 'has `SEED` property' ); + t.equal( isUint32Array( actual ), true, 'has `seed` property' ); t.equal( actual.length, 1, 'has expected length' ); t.equal( actual[ 0 ], 12345, 'equal to provided seed' ); t.end(); @@ -340,8 +340,8 @@ tape( 'attached to the returned function is the generator seed (array seed)', fu 'seed': seed }); - actual = mt19937.SEED; - t.equal( isUint32Array( actual ), true, 'has `SEED` property' ); + actual = mt19937.seed; + t.equal( isUint32Array( actual ), true, 'has `seed` property' ); for ( i = 0; i < seed.length; i++ ) { t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } @@ -460,9 +460,9 @@ tape( 'attached to the `normalized` method is the generator seed (integer seed)' mt19937 = factory({ 'seed': 12345 }); - actual = mt19937.normalized.SEED; + actual = mt19937.normalized.seed; - t.equal( isUint32Array( actual ), true, 'has `SEED` property' ); + t.equal( isUint32Array( actual ), true, 'has `seed` property' ); t.equal( actual.length, 1, 'has expected length' ); t.equal( actual[ 0 ], 12345, 'equal to provided seed' ); t.end(); @@ -479,8 +479,8 @@ tape( 'attached to the `normalized` method is the generator seed (array seed)', 'seed': seed }); - actual = mt19937.normalized.SEED; - t.equal( isUint32Array( actual ), true, 'has `SEED` property' ); + actual = mt19937.normalized.seed; + t.equal( isUint32Array( actual ), true, 'has `seed` property' ); for ( i = 0; i < seed.length; i++ ) { t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } @@ -601,7 +601,7 @@ tape( 'the `normalized` method returns pseudorandom numbers drawn from a uniform rejected = 0; for ( i = 0; i < N; i++ ) { mt19937 = factory(); - t.ok( true, 'seed: '+mt19937.SEED ); + t.ok( true, 'seed: '+mt19937.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = mt19937.normalized(); if ( x[ j ] < 0.0 || x[ j ] > 1.0 ) { diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.js index c3c8925e813f..8a0330be71f3 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.js @@ -52,7 +52,7 @@ tape( 'attached to the main export is the generator name', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( mt19937.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( mt19937.seed ), true, 'has `seed` property' ); t.end(); }); @@ -110,7 +110,7 @@ tape( 'attached to the `normalized` method is the generator name', function test }); tape( 'attached to the `normalized` method is the generator seed', function test( t ) { - t.equal( isUint32Array( mt19937.normalized.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( mt19937.normalized.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/README.md b/lib/node_modules/@stdlib/random/base/negative-binomial/README.md index 8cc8c8d5f73b..18de609684e1 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/README.md +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/README.md @@ -140,7 +140,7 @@ var prng = negativeBinomial.PRNG; // returns ``` -#### negativeBinomial.SEED +#### negativeBinomial.seed The value used to seed `negativeBinomial()`. @@ -156,7 +156,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = negativeBinomial.factory( 20, 0.5, { - 'seed': negativeBinomial.SEED + 'seed': negativeBinomial.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -207,7 +207,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = negativeBinomial.factory( 10, 0.5, { - 'seed': negativeBinomial.SEED + 'seed': negativeBinomial.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/docs/repl.txt b/lib/node_modules/@stdlib/random/base/negative-binomial/docs/repl.txt index 15b3fe73c6e3..ffb8001a0d3d 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/docs/repl.txt @@ -83,12 +83,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/examples/index.js b/lib/node_modules/@stdlib/random/base/negative-binomial/examples/index.js index cdd733e0cecd..78f6ddcef6c4 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', negativeBinomial.SEED[ 0 ] ); +console.log( '\nseed: %d', negativeBinomial.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( negativeBinomial( 10, 0.5 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = negativeBinomial.factory( 10, 0.5, { - 'seed': negativeBinomial.SEED + 'seed': negativeBinomial.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/lib/factory.js b/lib/node_modules/@stdlib/random/base/negative-binomial/lib/factory.js index abcfe9d96680..ab79fd2aaffd 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/lib/factory.js @@ -111,7 +111,7 @@ function factory() { prng = negativeBinomial1; } setReadOnly( prng, 'NAME', 'negative-binomial' ); - setReadOnly( prng, 'SEED', randi.SEED ); + setReadOnly( prng, 'seed', randi.seed ); setReadOnly( prng, 'PRNG', randi ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.factory.js b/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.factory.js index b091705e1a82..08f1b1588651 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var negativeBinomial = factory({ 'seed': 12345 }); - t.equal( isInt32Array( negativeBinomial.SEED ), true, 'has `SEED` property' ); - t.equal( negativeBinomial.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isInt32Array( negativeBinomial.seed ), true, 'has `seed` property' ); + t.equal( negativeBinomial.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -344,7 +344,7 @@ tape( 'the function returns a PRNG for generating random numbers from a negative rejected = 0; for ( i = 0; i < repeats; i++ ) { negativeBinomial = factory( r, p ); - t.ok( true, 'seed: '+negativeBinomial.SEED ); + t.ok( true, 'seed: '+negativeBinomial.seed ); // Reset the `freq` array... for ( j = 0; j < freq.length; j++ ) { diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.js b/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.js index 22b6057e60f0..32d58307b264 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.js +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.js @@ -52,7 +52,7 @@ tape( 'attached to the main export is the generator name', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isInt32Array( negativeBinomial.SEED ), true, 'has `SEED` property' ); + t.equal( isInt32Array( negativeBinomial.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/normal/README.md b/lib/node_modules/@stdlib/random/base/normal/README.md index d009d562e2ec..56b739d0b7ff 100644 --- a/lib/node_modules/@stdlib/random/base/normal/README.md +++ b/lib/node_modules/@stdlib/random/base/normal/README.md @@ -131,7 +131,7 @@ var prng = normal.PRNG; // returns ``` -#### normal.SEED +#### normal.seed The value used to seed `normal()`. @@ -147,7 +147,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = normal.factory( 2.0, 2.0, { - 'seed': normal.SEED + 'seed': normal.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -232,7 +232,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = normal.factory( 0.0, 1.0, { - 'seed': normal.SEED + 'seed': normal.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/normal/docs/repl.txt b/lib/node_modules/@stdlib/random/base/normal/docs/repl.txt index 59f30c8ed450..7afe00aefb12 100644 --- a/lib/node_modules/@stdlib/random/base/normal/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/normal/docs/repl.txt @@ -81,12 +81,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.STATE diff --git a/lib/node_modules/@stdlib/random/base/normal/examples/index.js b/lib/node_modules/@stdlib/random/base/normal/examples/index.js index a76bac468e4a..51ae3b9108c8 100644 --- a/lib/node_modules/@stdlib/random/base/normal/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/normal/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', normal.SEED[ 0 ] ); +console.log( '\nseed: %d', normal.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( normal( 0.0, 1.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = normal.factory( 0.0, 1.0, { - 'seed': normal.SEED + 'seed': normal.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/normal/lib/factory.js b/lib/node_modules/@stdlib/random/base/normal/lib/factory.js index ea22726b3199..5309709bd8c6 100644 --- a/lib/node_modules/@stdlib/random/base/normal/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/normal/lib/factory.js @@ -94,7 +94,7 @@ function factory() { prng = normal1; } setReadOnly( prng, 'NAME', 'normal' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); defineProperty( prng, 'STATE', { 'configurable': false, 'enumerable': true, diff --git a/lib/node_modules/@stdlib/random/base/normal/test/test.factory.js b/lib/node_modules/@stdlib/random/base/normal/test/test.factory.js index 30ec070e5261..730666fb3d46 100644 --- a/lib/node_modules/@stdlib/random/base/normal/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/normal/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var normal = factory({ 'seed': 12345 }); - t.equal( isUint32Array( normal.SEED ), true, 'has `SEED` property' ); - t.equal( normal.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( normal.seed ), true, 'has `seed` property' ); + t.equal( normal.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -322,7 +322,7 @@ tape( 'the function returns a PRNG for generating pseudorandom numbers from a no rejected = 0; for ( i = 0; i < N; i++ ) { normal = factory( mu, sigma ); - t.ok( true, 'seed: '+normal.SEED ); + t.ok( true, 'seed: '+normal.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = normal(); } diff --git a/lib/node_modules/@stdlib/random/base/normal/test/test.js b/lib/node_modules/@stdlib/random/base/normal/test/test.js index 5eb40dd54d33..9af80e97bbbf 100644 --- a/lib/node_modules/@stdlib/random/base/normal/test/test.js +++ b/lib/node_modules/@stdlib/random/base/normal/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( normal.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( normal.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/pareto-type1/README.md b/lib/node_modules/@stdlib/random/base/pareto-type1/README.md index b3c8137dc223..6d9125f635e3 100644 --- a/lib/node_modules/@stdlib/random/base/pareto-type1/README.md +++ b/lib/node_modules/@stdlib/random/base/pareto-type1/README.md @@ -137,7 +137,7 @@ var prng = pareto1.PRNG; // returns ``` -#### pareto1.SEED +#### pareto1.seed The value used to seed `pareto1()`. @@ -153,7 +153,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = pareto1.factory( 2.0, 2.0, { - 'seed': pareto1.SEED + 'seed': pareto1.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -193,7 +193,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = pareto1.factory( 2.0, 2.0, { - 'seed': pareto1.SEED + 'seed': pareto1.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/pareto-type1/docs/repl.txt b/lib/node_modules/@stdlib/random/base/pareto-type1/docs/repl.txt index 4a715d0e71d1..609d73584662 100644 --- a/lib/node_modules/@stdlib/random/base/pareto-type1/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/pareto-type1/docs/repl.txt @@ -83,12 +83,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/pareto-type1/examples/index.js b/lib/node_modules/@stdlib/random/base/pareto-type1/examples/index.js index f50c332558c7..618055b849f3 100644 --- a/lib/node_modules/@stdlib/random/base/pareto-type1/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/pareto-type1/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', pareto1.SEED[ 0 ] ); +console.log( '\nseed: %d', pareto1.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( pareto1( 2.0, 2.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = pareto1.factory( 2.0, 2.0, { - 'seed': pareto1.SEED + 'seed': pareto1.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/pareto-type1/lib/factory.js b/lib/node_modules/@stdlib/random/base/pareto-type1/lib/factory.js index eff2e18482d8..3d79c299c9d9 100644 --- a/lib/node_modules/@stdlib/random/base/pareto-type1/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/pareto-type1/lib/factory.js @@ -95,7 +95,7 @@ function factory() { prng = pareto1; } setReadOnly( prng, 'NAME', 'pareto-type1' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/pareto-type1/test/test.factory.js b/lib/node_modules/@stdlib/random/base/pareto-type1/test/test.factory.js index 828cfbb8b598..243c74dca445 100644 --- a/lib/node_modules/@stdlib/random/base/pareto-type1/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/pareto-type1/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var pareto1 = factory({ 'seed': 12345 }); - t.equal( isUint32Array( pareto1.SEED ), true, 'has `SEED` property' ); - t.equal( pareto1.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( pareto1.seed ), true, 'has `seed` property' ); + t.equal( pareto1.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -323,7 +323,7 @@ tape( 'the function returns a PRNG for generating random numbers from a Pareto ( rejected = 0; for ( i = 0; i < N; i++ ) { pareto1 = factory( alpha, beta ); - t.ok( true, 'seed: '+pareto1.SEED ); + t.ok( true, 'seed: '+pareto1.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = pareto1(); } diff --git a/lib/node_modules/@stdlib/random/base/pareto-type1/test/test.js b/lib/node_modules/@stdlib/random/base/pareto-type1/test/test.js index 6e076649b5e3..de581f700f53 100644 --- a/lib/node_modules/@stdlib/random/base/pareto-type1/test/test.js +++ b/lib/node_modules/@stdlib/random/base/pareto-type1/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( pareto1.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( pareto1.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/poisson/README.md b/lib/node_modules/@stdlib/random/base/poisson/README.md index 47d5445aef7e..d265841dd5a4 100644 --- a/lib/node_modules/@stdlib/random/base/poisson/README.md +++ b/lib/node_modules/@stdlib/random/base/poisson/README.md @@ -127,7 +127,7 @@ var prng = poisson.PRNG; // returns ``` -#### poisson.SEED +#### poisson.seed The value used to seed `poisson()`. @@ -143,7 +143,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = poisson.factory( 2.0, { - 'seed': poisson.SEED + 'seed': poisson.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -183,7 +183,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = poisson.factory( 8.0, { - 'seed': poisson.SEED + 'seed': poisson.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/poisson/docs/repl.txt b/lib/node_modules/@stdlib/random/base/poisson/docs/repl.txt index 2c00f0bff26b..cba0a3ad9bb1 100644 --- a/lib/node_modules/@stdlib/random/base/poisson/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/poisson/docs/repl.txt @@ -75,12 +75,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/poisson/examples/index.js b/lib/node_modules/@stdlib/random/base/poisson/examples/index.js index 3c0898795619..608be8342a30 100644 --- a/lib/node_modules/@stdlib/random/base/poisson/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/poisson/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', poisson.SEED[ 0 ] ); +console.log( '\nseed: %d', poisson.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( poisson( 8.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = poisson.factory( 8.0, { - 'seed': poisson.SEED + 'seed': poisson.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/poisson/lib/factory.js b/lib/node_modules/@stdlib/random/base/poisson/lib/factory.js index 708e2f7d07a1..5792e14d55f6 100644 --- a/lib/node_modules/@stdlib/random/base/poisson/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/poisson/lib/factory.js @@ -93,7 +93,7 @@ function factory() { prng = poisson1; } setReadOnly( prng, 'NAME', 'poisson' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/poisson/test/test.factory.js b/lib/node_modules/@stdlib/random/base/poisson/test/test.factory.js index 817a343269c3..c578e71c0bb7 100644 --- a/lib/node_modules/@stdlib/random/base/poisson/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/poisson/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var poisson = factory({ 'seed': 12345 }); - t.equal( isUint32Array( poisson.SEED ), true, 'has `SEED` property' ); - t.equal( poisson.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( poisson.seed ), true, 'has `seed` property' ); + t.equal( poisson.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -287,7 +287,7 @@ tape( 'the function returns a PRNG for generating random numbers from a Poisson rejected = 0; for ( i = 0; i < repeats; i++ ) { poisson = factory( lambda ); - t.ok( true, 'seed: '+poisson.SEED ); + t.ok( true, 'seed: '+poisson.seed ); // Reset the `freq` array... for ( j = 0; j < freq.length; j++ ) { @@ -368,7 +368,7 @@ tape( 'the function returns a PRNG for generating random numbers from a Poisson rejected = 0; for ( i = 0; i < repeats; i++ ) { poisson = factory( lambda ); - t.ok( true, 'seed: '+poisson.SEED ); + t.ok( true, 'seed: '+poisson.seed ); // Reset the `freq` array... for ( j = 0; j < freq.length; j++ ) { diff --git a/lib/node_modules/@stdlib/random/base/poisson/test/test.js b/lib/node_modules/@stdlib/random/base/poisson/test/test.js index 893284c3a976..85c5f2edb810 100644 --- a/lib/node_modules/@stdlib/random/base/poisson/test/test.js +++ b/lib/node_modules/@stdlib/random/base/poisson/test/test.js @@ -51,7 +51,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( poisson.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( poisson.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/randi/README.md b/lib/node_modules/@stdlib/random/base/randi/README.md index 19ad589d3854..27728706bfb8 100644 --- a/lib/node_modules/@stdlib/random/base/randi/README.md +++ b/lib/node_modules/@stdlib/random/base/randi/README.md @@ -109,7 +109,7 @@ var prng = randi.PRNG; // returns ``` -#### randi.SEED +#### randi.seed The value used to seed `randi()`. @@ -125,7 +125,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = randi.factory({ - 'seed': randi.SEED + 'seed': randi.seed }); for ( i = 0; i < 100; i++ ) { v = rand(); @@ -193,7 +193,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = randi.factory({ - 'seed': randi.SEED + 'seed': randi.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/randi/docs/repl.txt b/lib/node_modules/@stdlib/random/base/randi/docs/repl.txt index 764b1648b570..0e531c6ce73c 100644 --- a/lib/node_modules/@stdlib/random/base/randi/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/randi/docs/repl.txt @@ -74,12 +74,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; {{alias}}.MIN diff --git a/lib/node_modules/@stdlib/random/base/randi/examples/index.js b/lib/node_modules/@stdlib/random/base/randi/examples/index.js index ce9bd990e1f1..92c08ad56ccd 100644 --- a/lib/node_modules/@stdlib/random/base/randi/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/randi/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', randi.SEED[ 0 ] ); +console.log( '\nseed: %d', randi.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( randi() ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = randi.factory({ - 'seed': randi.SEED + 'seed': randi.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/randi/lib/factory.js b/lib/node_modules/@stdlib/random/base/randi/lib/factory.js index 63ddfeecd494..753dbfff9a3c 100644 --- a/lib/node_modules/@stdlib/random/base/randi/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/randi/lib/factory.js @@ -98,7 +98,7 @@ function factory( opts ) { }); } setReadOnly( randi, 'NAME', 'randi' ); - setReadOnly( randi, 'SEED', rand.SEED ); + setReadOnly( randi, 'seed', rand.seed ); setReadOnly( randi, 'MIN', rand.MIN ); setReadOnly( randi, 'MAX', rand.MAX ); setReadOnly( randi, 'PRNG', rand ); diff --git a/lib/node_modules/@stdlib/random/base/randi/test/test.factory.js b/lib/node_modules/@stdlib/random/base/randi/test/test.factory.js index 351e84f3095d..742f1892ee19 100644 --- a/lib/node_modules/@stdlib/random/base/randi/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/randi/test/test.factory.js @@ -139,8 +139,8 @@ tape( 'attached to the returned function is the generator seed', function test( var randi = factory({ 'seed': 12345 }); - t.equal( isArrayLikeObject( randi.SEED ), true, 'has `SEED` property' ); - t.equal( randi.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isArrayLikeObject( randi.seed ), true, 'has `seed` property' ); + t.equal( randi.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/randi/test/test.js b/lib/node_modules/@stdlib/random/base/randi/test/test.js index e0e478dec052..5012a758a3e1 100644 --- a/lib/node_modules/@stdlib/random/base/randi/test/test.js +++ b/lib/node_modules/@stdlib/random/base/randi/test/test.js @@ -45,7 +45,7 @@ tape( 'attached to the main export is the generator name', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isArrayLikeObject( randi.SEED ), true, 'has `SEED` property' ); + t.equal( isArrayLikeObject( randi.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/randn/README.md b/lib/node_modules/@stdlib/random/base/randn/README.md index 54ec3ebbac38..4fbbf819a955 100644 --- a/lib/node_modules/@stdlib/random/base/randn/README.md +++ b/lib/node_modules/@stdlib/random/base/randn/README.md @@ -108,7 +108,7 @@ var prng = randn.PRNG; // returns ``` -#### randn.SEED +#### randn.seed The value used to seed `randn()`. @@ -124,7 +124,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = randn.factory({ - 'seed': randn.SEED + 'seed': randn.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -174,7 +174,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = randn.factory({ - 'seed': randn.SEED + 'seed': randn.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/randn/docs/repl.txt b/lib/node_modules/@stdlib/random/base/randn/docs/repl.txt index 998076809fbf..f354036eebe1 100644 --- a/lib/node_modules/@stdlib/random/base/randn/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/randn/docs/repl.txt @@ -73,12 +73,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/randn/examples/index.js b/lib/node_modules/@stdlib/random/base/randn/examples/index.js index 9771450c027e..5e91e32e4304 100644 --- a/lib/node_modules/@stdlib/random/base/randn/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/randn/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', randn.SEED[ 0 ] ); +console.log( '\nseed: %d', randn.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( randn() ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = randn.factory({ - 'seed': randn.SEED + 'seed': randn.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/randn/lib/factory.js b/lib/node_modules/@stdlib/random/base/randn/lib/factory.js index b1feb0cc720c..bfe691831311 100644 --- a/lib/node_modules/@stdlib/random/base/randn/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/randn/lib/factory.js @@ -98,7 +98,7 @@ function factory( opts ) { }); } setReadOnly( normal, 'NAME', 'standard-normal' ); - setReadOnly( normal, 'SEED', rand.SEED ); + setReadOnly( normal, 'seed', rand.seed ); setReadOnly( normal, 'PRNG', rand ); return normal; diff --git a/lib/node_modules/@stdlib/random/base/randn/test/test.factory.js b/lib/node_modules/@stdlib/random/base/randn/test/test.factory.js index 3442f5002061..2ef4d8274adb 100644 --- a/lib/node_modules/@stdlib/random/base/randn/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/randn/test/test.factory.js @@ -145,8 +145,8 @@ tape( 'attached to the returned function is the generator seed', function test( var randn = factory({ 'seed': 12345 }); - t.equal( isUint32Array( randn.SEED ), true, 'has `SEED` property' ); - t.equal( randn.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( randn.seed ), true, 'has `seed` property' ); + t.equal( randn.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -203,7 +203,7 @@ tape( 'the function returns a PRNG for generating pseudorandom numbers from a st rejected = 0; for ( i = 0; i < N; i++ ) { randn = factory(); - t.ok( true, 'seed: '+randn.SEED ); + t.ok( true, 'seed: '+randn.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = randn(); } diff --git a/lib/node_modules/@stdlib/random/base/randn/test/test.js b/lib/node_modules/@stdlib/random/base/randn/test/test.js index 9f193a932c31..2e5efffd96e0 100644 --- a/lib/node_modules/@stdlib/random/base/randn/test/test.js +++ b/lib/node_modules/@stdlib/random/base/randn/test/test.js @@ -44,7 +44,7 @@ tape( 'attached to the main export is the generator name', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( randn.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( randn.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/randu/README.md b/lib/node_modules/@stdlib/random/base/randu/README.md index 3ab6059bac2a..4cfa59af1c64 100644 --- a/lib/node_modules/@stdlib/random/base/randu/README.md +++ b/lib/node_modules/@stdlib/random/base/randu/README.md @@ -109,7 +109,7 @@ var prng = randu.PRNG; // returns ``` -#### randu.SEED +#### randu.seed The value used to seed `randu()`. @@ -125,7 +125,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = randu.factory({ - 'seed': randu.SEED + 'seed': randu.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -193,7 +193,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = randu.factory({ - 'seed': randu.SEED + 'seed': randu.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/randu/docs/repl.txt b/lib/node_modules/@stdlib/random/base/randu/docs/repl.txt index 7ad9bae22a77..625e548bca47 100644 --- a/lib/node_modules/@stdlib/random/base/randu/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/randu/docs/repl.txt @@ -74,12 +74,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/randu/examples/index.js b/lib/node_modules/@stdlib/random/base/randu/examples/index.js index 0bdc346b7154..9d17eac02119 100644 --- a/lib/node_modules/@stdlib/random/base/randu/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/randu/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', randu.SEED[ 0 ] ); +console.log( '\nseed: %d', randu.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( randu() ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = randu.factory({ - 'seed': randu.SEED + 'seed': randu.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/randu/lib/factory.js b/lib/node_modules/@stdlib/random/base/randu/lib/factory.js index 3fc2b1ff4db5..53cb178928ae 100644 --- a/lib/node_modules/@stdlib/random/base/randu/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/randu/lib/factory.js @@ -98,7 +98,7 @@ function factory( opts ) { }); } setReadOnly( uniform, 'NAME', 'uniform' ); - setReadOnly( uniform, 'SEED', rand.normalized.SEED ); + setReadOnly( uniform, 'seed', rand.normalized.seed ); setReadOnly( uniform, 'MIN', rand.normalized.MIN ); setReadOnly( uniform, 'MAX', rand.normalized.MAX ); setReadOnly( uniform, 'PRNG', rand ); diff --git a/lib/node_modules/@stdlib/random/base/randu/test/test.factory.js b/lib/node_modules/@stdlib/random/base/randu/test/test.factory.js index c449c09df5f3..86f6e7d07eb8 100644 --- a/lib/node_modules/@stdlib/random/base/randu/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/randu/test/test.factory.js @@ -146,8 +146,8 @@ tape( 'attached to the returned function is the generator seed', function test( var randu = factory({ 'seed': 12345 }); - t.equal( isArrayLikeObject( randu.SEED ), true, 'has `SEED` property' ); - t.equal( randu.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isArrayLikeObject( randu.seed ), true, 'has `seed` property' ); + t.equal( randu.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -217,7 +217,7 @@ tape( 'the function returns a PRNG for generating pseudorandom numbers from a un rejected = 0; for ( i = 0; i < N; i++ ) { randu = factory(); - t.ok( true, 'seed: '+randu.SEED ); + t.ok( true, 'seed: '+randu.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = randu(); if ( x[ j ] < 0.0 || x[ j ] > 1.0 ) { diff --git a/lib/node_modules/@stdlib/random/base/randu/test/test.js b/lib/node_modules/@stdlib/random/base/randu/test/test.js index b4a487180eb7..69b8d002cbba 100644 --- a/lib/node_modules/@stdlib/random/base/randu/test/test.js +++ b/lib/node_modules/@stdlib/random/base/randu/test/test.js @@ -44,7 +44,7 @@ tape( 'attached to the main export is the generator name', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isArrayLikeObject( randu.SEED ), true, 'has `SEED` property' ); + t.equal( isArrayLikeObject( randu.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/rayleigh/README.md b/lib/node_modules/@stdlib/random/base/rayleigh/README.md index 6121a75a8c1e..d06a17c5a4ad 100644 --- a/lib/node_modules/@stdlib/random/base/rayleigh/README.md +++ b/lib/node_modules/@stdlib/random/base/rayleigh/README.md @@ -127,7 +127,7 @@ var prng = rayleigh.PRNG; // returns ``` -#### rayleigh.SEED +#### rayleigh.seed The value used to seed `rayleigh()`. @@ -143,7 +143,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = rayleigh.factory( 2.0, { - 'seed': rayleigh.SEED + 'seed': rayleigh.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -183,7 +183,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = rayleigh.factory( 0.5, { - 'seed': rayleigh.SEED + 'seed': rayleigh.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/rayleigh/docs/repl.txt b/lib/node_modules/@stdlib/random/base/rayleigh/docs/repl.txt index 84d2f0695586..41f3baca7976 100644 --- a/lib/node_modules/@stdlib/random/base/rayleigh/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/rayleigh/docs/repl.txt @@ -75,12 +75,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/rayleigh/examples/index.js b/lib/node_modules/@stdlib/random/base/rayleigh/examples/index.js index 64d8d2b5f499..bb2cfbe5388f 100644 --- a/lib/node_modules/@stdlib/random/base/rayleigh/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/rayleigh/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', rayleigh.SEED[ 0 ] ); +console.log( '\nseed: %d', rayleigh.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rayleigh( 1.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = rayleigh.factory( 1.0, { - 'seed': rayleigh.SEED + 'seed': rayleigh.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/rayleigh/lib/factory.js b/lib/node_modules/@stdlib/random/base/rayleigh/lib/factory.js index 47bd5fe265e4..d8c3ba4fd1ac 100644 --- a/lib/node_modules/@stdlib/random/base/rayleigh/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/rayleigh/lib/factory.js @@ -93,7 +93,7 @@ function factory() { prng = rayleigh1; } setReadOnly( prng, 'NAME', 'rayleigh' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/rayleigh/test/test.factory.js b/lib/node_modules/@stdlib/random/base/rayleigh/test/test.factory.js index 1de0db63b85a..00049d7c43db 100644 --- a/lib/node_modules/@stdlib/random/base/rayleigh/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/rayleigh/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var rayleigh = factory({ 'seed': 12345 }); - t.equal( isUint32Array( rayleigh.SEED ), true, 'has `SEED` property' ); - t.equal( rayleigh.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( rayleigh.seed ), true, 'has `seed` property' ); + t.equal( rayleigh.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -285,7 +285,7 @@ tape( 'the function returns a PRNG for generating random numbers from an Rayleig rejected = 0; for ( i = 0; i < N; i++ ) { rayleigh = factory( sigma ); - t.ok( true, 'seed: '+rayleigh.SEED ); + t.ok( true, 'seed: '+rayleigh.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = rayleigh(); } diff --git a/lib/node_modules/@stdlib/random/base/rayleigh/test/test.js b/lib/node_modules/@stdlib/random/base/rayleigh/test/test.js index 0403d7283fa5..937f6e271049 100644 --- a/lib/node_modules/@stdlib/random/base/rayleigh/test/test.js +++ b/lib/node_modules/@stdlib/random/base/rayleigh/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( rayleigh.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( rayleigh.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/t/README.md b/lib/node_modules/@stdlib/random/base/t/README.md index b75c1498a6b2..09adc885ce27 100644 --- a/lib/node_modules/@stdlib/random/base/t/README.md +++ b/lib/node_modules/@stdlib/random/base/t/README.md @@ -127,7 +127,7 @@ var prng = t.PRNG; // returns ``` -#### t.SEED +#### t.seed The value used to seed `t()`. @@ -143,7 +143,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = t.factory( 2.0, { - 'seed': t.SEED + 'seed': t.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -183,7 +183,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = t.factory( 1.0, { - 'seed': t.SEED + 'seed': t.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/t/docs/repl.txt b/lib/node_modules/@stdlib/random/base/t/docs/repl.txt index 0bf7f784f453..056c4979d018 100644 --- a/lib/node_modules/@stdlib/random/base/t/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/t/docs/repl.txt @@ -76,12 +76,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/t/examples/index.js b/lib/node_modules/@stdlib/random/base/t/examples/index.js index a88c25a9d9d6..b8c38128f42e 100644 --- a/lib/node_modules/@stdlib/random/base/t/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/t/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', t.SEED[ 0 ] ); +console.log( '\nseed: %d', t.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( t( 1.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = t.factory( 1.0, { - 'seed': t.SEED + 'seed': t.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/t/lib/factory.js b/lib/node_modules/@stdlib/random/base/t/lib/factory.js index a6b6231126a5..7ef252d68e36 100644 --- a/lib/node_modules/@stdlib/random/base/t/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/t/lib/factory.js @@ -104,7 +104,7 @@ function factory() { prng = t1; } setReadOnly( prng, 'NAME', 't' ); - setReadOnly( prng, 'SEED', randi.SEED ); + setReadOnly( prng, 'seed', randi.seed ); setReadOnly( prng, 'PRNG', randi ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/t/test/test.factory.js b/lib/node_modules/@stdlib/random/base/t/test/test.factory.js index eef4429a2e12..ce540fcf7104 100644 --- a/lib/node_modules/@stdlib/random/base/t/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/t/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var rt = factory({ 'seed': 12345 }); - t.equal( isInt32Array( rt.SEED ), true, 'has `SEED` property' ); - t.equal( rt.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isInt32Array( rt.seed ), true, 'has `seed` property' ); + t.equal( rt.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -285,7 +285,7 @@ tape( 'the function returns a PRNG for generating random numbers from a Student\ rejected = 0; for ( i = 0; i < N; i++ ) { rt = factory( v ); - t.ok( true, 'seed: '+rt.SEED ); + t.ok( true, 'seed: '+rt.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = rt(); } diff --git a/lib/node_modules/@stdlib/random/base/t/test/test.js b/lib/node_modules/@stdlib/random/base/t/test/test.js index 1c8516592ce7..394f677a5b41 100644 --- a/lib/node_modules/@stdlib/random/base/t/test/test.js +++ b/lib/node_modules/@stdlib/random/base/t/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isInt32Array( rt.SEED ), true, 'has `SEED` property' ); + t.equal( isInt32Array( rt.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/triangular/README.md b/lib/node_modules/@stdlib/random/base/triangular/README.md index 7ab8dcc3a679..5c77361ef3f4 100644 --- a/lib/node_modules/@stdlib/random/base/triangular/README.md +++ b/lib/node_modules/@stdlib/random/base/triangular/README.md @@ -137,7 +137,7 @@ var prng = triangular.PRNG; // returns ``` -#### triangular.SEED +#### triangular.seed The value used to seed `triangular()`. @@ -153,7 +153,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = triangular.factory( 0.0, 10.0, 3.0, { - 'seed': triangular.SEED + 'seed': triangular.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -193,7 +193,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = triangular.factory( 0.0, 1.0, 0.5, { - 'seed': triangular.SEED + 'seed': triangular.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/triangular/docs/repl.txt b/lib/node_modules/@stdlib/random/base/triangular/docs/repl.txt index 89c49a09f5fb..5c81ba88c3f5 100644 --- a/lib/node_modules/@stdlib/random/base/triangular/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/triangular/docs/repl.txt @@ -89,12 +89,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/triangular/examples/index.js b/lib/node_modules/@stdlib/random/base/triangular/examples/index.js index c0b9abd8b903..9059c10fda7f 100644 --- a/lib/node_modules/@stdlib/random/base/triangular/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/triangular/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', triangular.SEED[ 0 ] ); +console.log( '\nseed: %d', triangular.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( triangular( 0.0, 1.0, 0.5 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = triangular.factory( 0.0, 1.0, 0.5, { - 'seed': triangular.SEED + 'seed': triangular.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/triangular/lib/factory.js b/lib/node_modules/@stdlib/random/base/triangular/lib/factory.js index 53ecd7a367a4..c8535770af13 100644 --- a/lib/node_modules/@stdlib/random/base/triangular/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/triangular/lib/factory.js @@ -100,7 +100,7 @@ function factory() { prng = triangular1; } setReadOnly( prng, 'NAME', 'triangular' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/triangular/test/test.factory.js b/lib/node_modules/@stdlib/random/base/triangular/test/test.factory.js index 1dee47bf8c21..4250c08d58f8 100644 --- a/lib/node_modules/@stdlib/random/base/triangular/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/triangular/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var triangular = factory({ 'seed': 12345 }); - t.equal( isUint32Array( triangular.SEED ), true, 'has `SEED` property' ); - t.equal( triangular.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( triangular.seed ), true, 'has `seed` property' ); + t.equal( triangular.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -371,7 +371,7 @@ tape( 'the function returns a PRNG for generating random numbers from a triangul rejected = 0; for ( i = 0; i < N; i++ ) { triangular = factory( a, b, c ); - t.ok( true, 'seed: '+triangular.SEED ); + t.ok( true, 'seed: '+triangular.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = triangular(); if ( x[ j ] < a || x[ j ] > b ) { diff --git a/lib/node_modules/@stdlib/random/base/triangular/test/test.js b/lib/node_modules/@stdlib/random/base/triangular/test/test.js index b44860cce8b2..ded06c1499e3 100644 --- a/lib/node_modules/@stdlib/random/base/triangular/test/test.js +++ b/lib/node_modules/@stdlib/random/base/triangular/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( triangular.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( triangular.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/uniform/README.md b/lib/node_modules/@stdlib/random/base/uniform/README.md index 286cff4833e5..8eed060d113a 100644 --- a/lib/node_modules/@stdlib/random/base/uniform/README.md +++ b/lib/node_modules/@stdlib/random/base/uniform/README.md @@ -131,7 +131,7 @@ var prng = uniform.PRNG; // returns ``` -#### uniform.SEED +#### uniform.seed The value used to seed `uniform()`. @@ -147,7 +147,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = uniform.factory( 0.0, 10.0, { - 'seed': uniform.SEED + 'seed': uniform.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -187,7 +187,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = uniform.factory( 0.0, 1.0, { - 'seed': uniform.SEED + 'seed': uniform.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/uniform/docs/repl.txt b/lib/node_modules/@stdlib/random/base/uniform/docs/repl.txt index 75c0f018a919..839ccab4e885 100644 --- a/lib/node_modules/@stdlib/random/base/uniform/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/uniform/docs/repl.txt @@ -83,12 +83,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/uniform/examples/index.js b/lib/node_modules/@stdlib/random/base/uniform/examples/index.js index 8bf171ade419..49bfad7cb417 100644 --- a/lib/node_modules/@stdlib/random/base/uniform/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/uniform/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', uniform.SEED[ 0 ] ); +console.log( '\nseed: %d', uniform.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( uniform( 0.0, 1.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = uniform.factory( 0.0, 1.0, { - 'seed': uniform.SEED + 'seed': uniform.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/uniform/lib/factory.js b/lib/node_modules/@stdlib/random/base/uniform/lib/factory.js index 0cd86ea2ebf8..6cd30a9ac4e8 100644 --- a/lib/node_modules/@stdlib/random/base/uniform/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/uniform/lib/factory.js @@ -97,7 +97,7 @@ function factory() { prng = uniform1; } setReadOnly( prng, 'NAME', 'uniform' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/uniform/test/test.factory.js b/lib/node_modules/@stdlib/random/base/uniform/test/test.factory.js index 4fb4424b0910..16d8921732b9 100644 --- a/lib/node_modules/@stdlib/random/base/uniform/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/uniform/test/test.factory.js @@ -108,8 +108,8 @@ tape( 'attached to the returned function is the generator seed', function test( var uniform = factory({ 'seed': 12345 }); - t.equal( isUint32Array( uniform.SEED ), true, 'has `SEED` property' ); - t.equal( uniform.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( uniform.seed ), true, 'has `seed` property' ); + t.equal( uniform.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -330,7 +330,7 @@ tape( 'the function returns a PRNG for generating random numbers from a uniform rejected = 0; for ( i = 0; i < N; i++ ) { uniform = factory( a, b ); - t.ok( true, 'seed: '+uniform.SEED ); + t.ok( true, 'seed: '+uniform.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = uniform(); if ( x[ j ] < a || x[ j ] > b ) { diff --git a/lib/node_modules/@stdlib/random/base/uniform/test/test.js b/lib/node_modules/@stdlib/random/base/uniform/test/test.js index 1475261753c5..36460b471f82 100644 --- a/lib/node_modules/@stdlib/random/base/uniform/test/test.js +++ b/lib/node_modules/@stdlib/random/base/uniform/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( uniform.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( uniform.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/weibull/README.md b/lib/node_modules/@stdlib/random/base/weibull/README.md index c389a9d529a1..0db44fbecbbe 100644 --- a/lib/node_modules/@stdlib/random/base/weibull/README.md +++ b/lib/node_modules/@stdlib/random/base/weibull/README.md @@ -137,7 +137,7 @@ var prng = weibull.PRNG; // returns ``` -#### weibull.SEED +#### weibull.seed The value used to seed `weibull()`. @@ -153,7 +153,7 @@ for ( i = 0; i < 100; i++ ) { // Generate the same pseudorandom values... rand = weibull.factory( 2.0, 2.0, { - 'seed': weibull.SEED + 'seed': weibull.seed }); for ( i = 0; i < 100; i++ ) { r = rand(); @@ -193,7 +193,7 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = weibull.factory( 2.0, 2.0, { - 'seed': weibull.SEED + 'seed': weibull.seed }); for ( i = 0; i < 100; i++ ) { console.log( rand() ); diff --git a/lib/node_modules/@stdlib/random/base/weibull/docs/repl.txt b/lib/node_modules/@stdlib/random/base/weibull/docs/repl.txt index e8f0f03de201..c0d5bfd8b064 100644 --- a/lib/node_modules/@stdlib/random/base/weibull/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/weibull/docs/repl.txt @@ -83,12 +83,12 @@ > var prng = {{alias}}.PRNG; -{{alias}}.SEED +{{alias}}.seed Pseudorandom number generator seed. Examples -------- - > var seed = {{alias}}.SEED; + > var seed = {{alias}}.seed; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/weibull/examples/index.js b/lib/node_modules/@stdlib/random/base/weibull/examples/index.js index c2b4563ea26f..c3feb57fe7b2 100644 --- a/lib/node_modules/@stdlib/random/base/weibull/examples/index.js +++ b/lib/node_modules/@stdlib/random/base/weibull/examples/index.js @@ -25,7 +25,7 @@ var rand; var i; // Generate pseudorandom numbers... -console.log( '\nseed: %d', weibull.SEED[ 0 ] ); +console.log( '\nseed: %d', weibull.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( weibull( 2.0, 2.0 ) ); } @@ -42,9 +42,9 @@ for ( i = 0; i < 100; i++ ) { // Create another pseudorandom number generator using a previous seed... rand = weibull.factory( 2.0, 2.0, { - 'seed': weibull.SEED + 'seed': weibull.seed }); -console.log( '\nseed: %d', rand.SEED[ 0 ] ); +console.log( '\nseed: %d', rand.seed[ 0 ] ); for ( i = 0; i < 100; i++ ) { console.log( rand() ); } diff --git a/lib/node_modules/@stdlib/random/base/weibull/lib/factory.js b/lib/node_modules/@stdlib/random/base/weibull/lib/factory.js index c9559258cfa1..a3780f01c0b9 100644 --- a/lib/node_modules/@stdlib/random/base/weibull/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/weibull/lib/factory.js @@ -95,7 +95,7 @@ function factory() { prng = weibull1; } setReadOnly( prng, 'NAME', 'weibull' ); - setReadOnly( prng, 'SEED', rand.SEED ); + setReadOnly( prng, 'seed', rand.seed ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/weibull/test/test.factory.js b/lib/node_modules/@stdlib/random/base/weibull/test/test.factory.js index 9553fa959ab9..5d2bfdfb8c1a 100644 --- a/lib/node_modules/@stdlib/random/base/weibull/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/weibull/test/test.factory.js @@ -109,8 +109,8 @@ tape( 'attached to the returned function is the generator seed', function test( var weibull = factory({ 'seed': 12345 }); - t.equal( isUint32Array( weibull.SEED ), true, 'has `SEED` property' ); - t.equal( weibull.SEED[ 0 ], 12345, 'equal to provided seed' ); + t.equal( isUint32Array( weibull.seed ), true, 'has `seed` property' ); + t.equal( weibull.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -323,7 +323,7 @@ tape( 'the function returns a PRNG for generating random numbers from a Weibull rejected = 0; for ( i = 0; i < N; i++ ) { weibull = factory( k, lambda ); - t.ok( true, 'seed: '+weibull.SEED ); + t.ok( true, 'seed: '+weibull.seed ); for ( j = 0; j < x.length; j++ ) { x[ j ] = weibull(); } diff --git a/lib/node_modules/@stdlib/random/base/weibull/test/test.js b/lib/node_modules/@stdlib/random/base/weibull/test/test.js index dfa07aa79029..40afdf69f4b2 100644 --- a/lib/node_modules/@stdlib/random/base/weibull/test/test.js +++ b/lib/node_modules/@stdlib/random/base/weibull/test/test.js @@ -49,7 +49,7 @@ tape( 'attached to the main export is the underlying PRNG', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( weibull.SEED ), true, 'has `SEED` property' ); + t.equal( isUint32Array( weibull.seed ), true, 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/iterators/arcsine/README.md b/lib/node_modules/@stdlib/random/iterators/arcsine/README.md index ca588a616ac3..ea1b9703d824 100644 --- a/lib/node_modules/@stdlib/random/iterators/arcsine/README.md +++ b/lib/node_modules/@stdlib/random/iterators/arcsine/README.md @@ -97,7 +97,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/arcsine/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/arcsine/docs/repl.txt index dbec572971db..25ed54c7d983 100644 --- a/lib/node_modules/@stdlib/random/iterators/arcsine/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/arcsine/docs/repl.txt @@ -36,7 +36,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/arcsine/lib/main.js b/lib/node_modules/@stdlib/random/iterators/arcsine/lib/main.js index 43dcbc057093..587396c3cdc7 100644 --- a/lib/node_modules/@stdlib/random/iterators/arcsine/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/arcsine/lib/main.js @@ -98,7 +98,7 @@ function iterator( a, b, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -153,7 +153,7 @@ function iterator( a, b, options ) { */ function factory() { return iterator( a, b, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/arcsine/test/test.js b/lib/node_modules/@stdlib/random/iterators/arcsine/test/test.js index b2ad2e27d0a6..d65fef8b4653 100644 --- a/lib/node_modules/@stdlib/random/iterators/arcsine/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/arcsine/test/test.js @@ -221,8 +221,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -341,7 +341,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/bernoulli/README.md b/lib/node_modules/@stdlib/random/iterators/bernoulli/README.md index 39b96b5e05ba..7ca03cff9a9a 100644 --- a/lib/node_modules/@stdlib/random/iterators/bernoulli/README.md +++ b/lib/node_modules/@stdlib/random/iterators/bernoulli/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/bernoulli/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/bernoulli/docs/repl.txt index e19fec0d3ddd..6b8521ff8cb1 100644 --- a/lib/node_modules/@stdlib/random/iterators/bernoulli/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/bernoulli/docs/repl.txt @@ -33,7 +33,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/bernoulli/lib/main.js b/lib/node_modules/@stdlib/random/iterators/bernoulli/lib/main.js index 035946797b83..646bcd9720e2 100644 --- a/lib/node_modules/@stdlib/random/iterators/bernoulli/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/bernoulli/lib/main.js @@ -88,7 +88,7 @@ function iterator( p, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -143,7 +143,7 @@ function iterator( p, options ) { */ function factory() { return iterator( p, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/bernoulli/test/test.js b/lib/node_modules/@stdlib/random/iterators/bernoulli/test/test.js index 3d9097523684..be79f31dc6b1 100644 --- a/lib/node_modules/@stdlib/random/iterators/bernoulli/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/bernoulli/test/test.js @@ -173,8 +173,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 0.3, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -293,7 +293,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/beta/README.md b/lib/node_modules/@stdlib/random/iterators/beta/README.md index ffcb7eef0de2..964f3495f035 100644 --- a/lib/node_modules/@stdlib/random/iterators/beta/README.md +++ b/lib/node_modules/@stdlib/random/iterators/beta/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/beta/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/beta/docs/repl.txt index 1ff0e927c831..91481fc1d98c 100644 --- a/lib/node_modules/@stdlib/random/iterators/beta/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/beta/docs/repl.txt @@ -38,7 +38,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/beta/lib/main.js b/lib/node_modules/@stdlib/random/iterators/beta/lib/main.js index 496b015d549e..c191ded0c7d5 100644 --- a/lib/node_modules/@stdlib/random/iterators/beta/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/beta/lib/main.js @@ -93,7 +93,7 @@ function iterator( alpha, beta, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -148,7 +148,7 @@ function iterator( alpha, beta, options ) { */ function factory() { return iterator( alpha, beta, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/beta/test/test.js b/lib/node_modules/@stdlib/random/iterators/beta/test/test.js index 62aab4193330..432c23726a70 100644 --- a/lib/node_modules/@stdlib/random/iterators/beta/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/beta/test/test.js @@ -203,8 +203,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -323,7 +323,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/betaprime/README.md b/lib/node_modules/@stdlib/random/iterators/betaprime/README.md index b454c985ac0d..559c1f859256 100644 --- a/lib/node_modules/@stdlib/random/iterators/betaprime/README.md +++ b/lib/node_modules/@stdlib/random/iterators/betaprime/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/betaprime/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/betaprime/docs/repl.txt index c50311b66914..f7cb36d1edfb 100644 --- a/lib/node_modules/@stdlib/random/iterators/betaprime/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/betaprime/docs/repl.txt @@ -38,7 +38,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/betaprime/lib/main.js b/lib/node_modules/@stdlib/random/iterators/betaprime/lib/main.js index dd02eeb92bd7..71af04fccd59 100644 --- a/lib/node_modules/@stdlib/random/iterators/betaprime/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/betaprime/lib/main.js @@ -93,7 +93,7 @@ function iterator( alpha, beta, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -148,7 +148,7 @@ function iterator( alpha, beta, options ) { */ function factory() { return iterator( alpha, beta, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/betaprime/test/test.js b/lib/node_modules/@stdlib/random/iterators/betaprime/test/test.js index 4f473ec550f9..fd76c730a926 100644 --- a/lib/node_modules/@stdlib/random/iterators/betaprime/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/betaprime/test/test.js @@ -203,8 +203,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -323,7 +323,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/binomial/README.md b/lib/node_modules/@stdlib/random/iterators/binomial/README.md index 8c1b4e213d6d..beddb5a8880f 100644 --- a/lib/node_modules/@stdlib/random/iterators/binomial/README.md +++ b/lib/node_modules/@stdlib/random/iterators/binomial/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/binomial/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/binomial/docs/repl.txt index aa926bdbdec2..3e84b2b6d5e7 100644 --- a/lib/node_modules/@stdlib/random/iterators/binomial/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/binomial/docs/repl.txt @@ -36,7 +36,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/binomial/lib/main.js b/lib/node_modules/@stdlib/random/iterators/binomial/lib/main.js index eb9d95ff88f8..691cfdab402e 100644 --- a/lib/node_modules/@stdlib/random/iterators/binomial/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/binomial/lib/main.js @@ -94,7 +94,7 @@ function iterator( n, p, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -149,7 +149,7 @@ function iterator( n, p, options ) { */ function factory() { return iterator( n, p, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/binomial/test/test.js b/lib/node_modules/@stdlib/random/iterators/binomial/test/test.js index 4ac4b6bd3d4a..7e57dfae267d 100644 --- a/lib/node_modules/@stdlib/random/iterators/binomial/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/binomial/test/test.js @@ -205,8 +205,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 10, 0.3, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -325,7 +325,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/box-muller/README.md b/lib/node_modules/@stdlib/random/iterators/box-muller/README.md index 3055bb480478..02e9bc4ad3a4 100644 --- a/lib/node_modules/@stdlib/random/iterators/box-muller/README.md +++ b/lib/node_modules/@stdlib/random/iterators/box-muller/README.md @@ -108,7 +108,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. - **PRNG**: Underlying pseudorandom number generator for uniformly distributed numbers on the interval `[0,1)`. - **MIN**: Minimum possible value. - **MAX**: Maximum possible value. diff --git a/lib/node_modules/@stdlib/random/iterators/box-muller/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/box-muller/docs/repl.txt index 94d66348b811..6988039cf630 100644 --- a/lib/node_modules/@stdlib/random/iterators/box-muller/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/box-muller/docs/repl.txt @@ -34,7 +34,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. iterator.PRNG: Function diff --git a/lib/node_modules/@stdlib/random/iterators/box-muller/lib/main.js b/lib/node_modules/@stdlib/random/iterators/box-muller/lib/main.js index ad7a996ef4dc..9c7588219a9b 100644 --- a/lib/node_modules/@stdlib/random/iterators/box-muller/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/box-muller/lib/main.js @@ -83,7 +83,7 @@ function iterator( options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); setReadOnly( iter, 'MIN', rand.MIN ); setReadOnly( iter, 'MAX', rand.MAX ); setReadOnly( iter, 'PRNG', rand.PRNG ); @@ -141,7 +141,7 @@ function iterator( options ) { */ function factory() { return iterator({ - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/box-muller/test/test.js b/lib/node_modules/@stdlib/random/iterators/box-muller/test/test.js index cee0a8269316..f41ff4f75964 100644 --- a/lib/node_modules/@stdlib/random/iterators/box-muller/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/box-muller/test/test.js @@ -173,8 +173,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -316,7 +316,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/cauchy/README.md b/lib/node_modules/@stdlib/random/iterators/cauchy/README.md index 8fd04e2df618..82a640eb8d44 100644 --- a/lib/node_modules/@stdlib/random/iterators/cauchy/README.md +++ b/lib/node_modules/@stdlib/random/iterators/cauchy/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/cauchy/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/cauchy/docs/repl.txt index f046e0acf022..de9cc51aa4f4 100644 --- a/lib/node_modules/@stdlib/random/iterators/cauchy/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/cauchy/docs/repl.txt @@ -36,7 +36,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/cauchy/lib/main.js b/lib/node_modules/@stdlib/random/iterators/cauchy/lib/main.js index 39ae39449a8d..b46585ca4ea5 100644 --- a/lib/node_modules/@stdlib/random/iterators/cauchy/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/cauchy/lib/main.js @@ -95,7 +95,7 @@ function iterator( x0, gamma, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -150,7 +150,7 @@ function iterator( x0, gamma, options ) { */ function factory() { return iterator( x0, gamma, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/cauchy/test/test.js b/lib/node_modules/@stdlib/random/iterators/cauchy/test/test.js index e2a92e505c59..c5d33c1485b3 100644 --- a/lib/node_modules/@stdlib/random/iterators/cauchy/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/cauchy/test/test.js @@ -201,8 +201,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -321,7 +321,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/chi/README.md b/lib/node_modules/@stdlib/random/iterators/chi/README.md index 13817d8a2d7e..5f050a5c14f4 100644 --- a/lib/node_modules/@stdlib/random/iterators/chi/README.md +++ b/lib/node_modules/@stdlib/random/iterators/chi/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/chi/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/chi/docs/repl.txt index d403283c2f34..d05bce4e2afa 100644 --- a/lib/node_modules/@stdlib/random/iterators/chi/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/chi/docs/repl.txt @@ -33,7 +33,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/chi/lib/main.js b/lib/node_modules/@stdlib/random/iterators/chi/lib/main.js index c4d1cd8c0f52..e87c828c4c9a 100644 --- a/lib/node_modules/@stdlib/random/iterators/chi/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/chi/lib/main.js @@ -88,7 +88,7 @@ function iterator( k, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -143,7 +143,7 @@ function iterator( k, options ) { */ function factory() { return iterator( k, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/chi/test/test.js b/lib/node_modules/@stdlib/random/iterators/chi/test/test.js index a9b5de218056..23d857706640 100644 --- a/lib/node_modules/@stdlib/random/iterators/chi/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/chi/test/test.js @@ -173,8 +173,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -293,7 +293,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/chisquare/README.md b/lib/node_modules/@stdlib/random/iterators/chisquare/README.md index 66d42257fcaa..fd597c806d71 100644 --- a/lib/node_modules/@stdlib/random/iterators/chisquare/README.md +++ b/lib/node_modules/@stdlib/random/iterators/chisquare/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/chisquare/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/chisquare/docs/repl.txt index d69267d94ccc..82951bc69082 100644 --- a/lib/node_modules/@stdlib/random/iterators/chisquare/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/chisquare/docs/repl.txt @@ -33,7 +33,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/chisquare/lib/main.js b/lib/node_modules/@stdlib/random/iterators/chisquare/lib/main.js index 2260fc52118b..29577f7b5b04 100644 --- a/lib/node_modules/@stdlib/random/iterators/chisquare/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/chisquare/lib/main.js @@ -88,7 +88,7 @@ function iterator( k, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -143,7 +143,7 @@ function iterator( k, options ) { */ function factory() { return iterator( k, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/chisquare/test/test.js b/lib/node_modules/@stdlib/random/iterators/chisquare/test/test.js index 59a5c0cf89bb..aaded25756b6 100644 --- a/lib/node_modules/@stdlib/random/iterators/chisquare/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/chisquare/test/test.js @@ -173,8 +173,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -293,7 +293,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/cosine/README.md b/lib/node_modules/@stdlib/random/iterators/cosine/README.md index 948c51e0a62e..12b617bdfed5 100644 --- a/lib/node_modules/@stdlib/random/iterators/cosine/README.md +++ b/lib/node_modules/@stdlib/random/iterators/cosine/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/cosine/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/cosine/docs/repl.txt index 4de4b44132ea..bff4ae6a19b6 100644 --- a/lib/node_modules/@stdlib/random/iterators/cosine/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/cosine/docs/repl.txt @@ -36,7 +36,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/cosine/lib/main.js b/lib/node_modules/@stdlib/random/iterators/cosine/lib/main.js index 015cd8e08be1..e1ca5ffd56d1 100644 --- a/lib/node_modules/@stdlib/random/iterators/cosine/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/cosine/lib/main.js @@ -95,7 +95,7 @@ function iterator( mu, s, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -150,7 +150,7 @@ function iterator( mu, s, options ) { */ function factory() { return iterator( mu, s, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/cosine/test/test.js b/lib/node_modules/@stdlib/random/iterators/cosine/test/test.js index fe30089d20cb..89c2846ba1f9 100644 --- a/lib/node_modules/@stdlib/random/iterators/cosine/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/cosine/test/test.js @@ -201,8 +201,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -321,7 +321,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/discrete-uniform/README.md b/lib/node_modules/@stdlib/random/iterators/discrete-uniform/README.md index d2d8214f75c5..3b6ff0ef9728 100644 --- a/lib/node_modules/@stdlib/random/iterators/discrete-uniform/README.md +++ b/lib/node_modules/@stdlib/random/iterators/discrete-uniform/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/discrete-uniform/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/discrete-uniform/docs/repl.txt index d596d29318cb..652d172ec212 100644 --- a/lib/node_modules/@stdlib/random/iterators/discrete-uniform/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/discrete-uniform/docs/repl.txt @@ -36,7 +36,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/discrete-uniform/lib/main.js b/lib/node_modules/@stdlib/random/iterators/discrete-uniform/lib/main.js index f8a41e254388..9023f8457502 100644 --- a/lib/node_modules/@stdlib/random/iterators/discrete-uniform/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/discrete-uniform/lib/main.js @@ -97,7 +97,7 @@ function iterator( a, b, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -152,7 +152,7 @@ function iterator( a, b, options ) { */ function factory() { return iterator( a, b, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/discrete-uniform/test/test.js b/lib/node_modules/@stdlib/random/iterators/discrete-uniform/test/test.js index c7da8e1c20f9..1726c04065c6 100644 --- a/lib/node_modules/@stdlib/random/iterators/discrete-uniform/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/discrete-uniform/test/test.js @@ -223,8 +223,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2, 5, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -343,7 +343,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/erlang/README.md b/lib/node_modules/@stdlib/random/iterators/erlang/README.md index 0e135adc11e2..a67d1bc0d8d0 100644 --- a/lib/node_modules/@stdlib/random/iterators/erlang/README.md +++ b/lib/node_modules/@stdlib/random/iterators/erlang/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/erlang/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/erlang/docs/repl.txt index 19063dcc26c0..637620f40bc1 100644 --- a/lib/node_modules/@stdlib/random/iterators/erlang/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/erlang/docs/repl.txt @@ -38,7 +38,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/erlang/lib/main.js b/lib/node_modules/@stdlib/random/iterators/erlang/lib/main.js index 6fabafe8667f..5d11ecd459de 100644 --- a/lib/node_modules/@stdlib/random/iterators/erlang/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/erlang/lib/main.js @@ -94,7 +94,7 @@ function iterator( k, lambda, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -149,7 +149,7 @@ function iterator( k, lambda, options ) { */ function factory() { return iterator( k, lambda, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/erlang/test/test.js b/lib/node_modules/@stdlib/random/iterators/erlang/test/test.js index d902666117e2..030f3ce4be79 100644 --- a/lib/node_modules/@stdlib/random/iterators/erlang/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/erlang/test/test.js @@ -204,8 +204,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 3, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -324,7 +324,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/exponential/README.md b/lib/node_modules/@stdlib/random/iterators/exponential/README.md index d4b07629ff8e..ec0fa46dbf20 100644 --- a/lib/node_modules/@stdlib/random/iterators/exponential/README.md +++ b/lib/node_modules/@stdlib/random/iterators/exponential/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/exponential/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/exponential/docs/repl.txt index 53dc19637a3e..8c9d14745534 100644 --- a/lib/node_modules/@stdlib/random/iterators/exponential/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/exponential/docs/repl.txt @@ -33,7 +33,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/exponential/lib/main.js b/lib/node_modules/@stdlib/random/iterators/exponential/lib/main.js index 3aa2d9e75582..91a7dd5c0835 100644 --- a/lib/node_modules/@stdlib/random/iterators/exponential/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/exponential/lib/main.js @@ -88,7 +88,7 @@ function iterator( lambda, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -143,7 +143,7 @@ function iterator( lambda, options ) { */ function factory() { return iterator( lambda, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/exponential/test/test.js b/lib/node_modules/@stdlib/random/iterators/exponential/test/test.js index 0ce3210c82c6..1bfc64863a87 100644 --- a/lib/node_modules/@stdlib/random/iterators/exponential/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/exponential/test/test.js @@ -173,8 +173,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -293,7 +293,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/f/README.md b/lib/node_modules/@stdlib/random/iterators/f/README.md index dc4de1e02be9..ed1b4bc2f99f 100644 --- a/lib/node_modules/@stdlib/random/iterators/f/README.md +++ b/lib/node_modules/@stdlib/random/iterators/f/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/f/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/f/docs/repl.txt index ced480e12b1b..54d80bc916db 100644 --- a/lib/node_modules/@stdlib/random/iterators/f/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/f/docs/repl.txt @@ -38,7 +38,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/f/lib/main.js b/lib/node_modules/@stdlib/random/iterators/f/lib/main.js index c5b021febb89..d5cde3487509 100644 --- a/lib/node_modules/@stdlib/random/iterators/f/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/f/lib/main.js @@ -93,7 +93,7 @@ function iterator( d1, d2, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -148,7 +148,7 @@ function iterator( d1, d2, options ) { */ function factory() { return iterator( d1, d2, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/f/test/test.js b/lib/node_modules/@stdlib/random/iterators/f/test/test.js index 7cb0e09d330c..e775ac72b84d 100644 --- a/lib/node_modules/@stdlib/random/iterators/f/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/f/test/test.js @@ -203,8 +203,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -323,7 +323,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/frechet/README.md b/lib/node_modules/@stdlib/random/iterators/frechet/README.md index 4db6b7450f82..726990ea9d8b 100644 --- a/lib/node_modules/@stdlib/random/iterators/frechet/README.md +++ b/lib/node_modules/@stdlib/random/iterators/frechet/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/frechet/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/frechet/docs/repl.txt index f6977f53658c..24072f89377c 100644 --- a/lib/node_modules/@stdlib/random/iterators/frechet/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/frechet/docs/repl.txt @@ -41,7 +41,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/frechet/lib/main.js b/lib/node_modules/@stdlib/random/iterators/frechet/lib/main.js index 26f31a5d4f80..57ff567d79c7 100644 --- a/lib/node_modules/@stdlib/random/iterators/frechet/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/frechet/lib/main.js @@ -100,7 +100,7 @@ function iterator( alpha, s, m, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -155,7 +155,7 @@ function iterator( alpha, s, m, options ) { */ function factory() { return iterator( alpha, s, m, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/frechet/test/test.js b/lib/node_modules/@stdlib/random/iterators/frechet/test/test.js index dc4bb1f0e8ea..cf32073fd2a4 100644 --- a/lib/node_modules/@stdlib/random/iterators/frechet/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/frechet/test/test.js @@ -231,8 +231,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, 3.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -351,7 +351,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/gamma/README.md b/lib/node_modules/@stdlib/random/iterators/gamma/README.md index dda8ea50da4b..fadc0135e36f 100644 --- a/lib/node_modules/@stdlib/random/iterators/gamma/README.md +++ b/lib/node_modules/@stdlib/random/iterators/gamma/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/gamma/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/gamma/docs/repl.txt index d5cec4ff2ab4..ae0e8c169e47 100644 --- a/lib/node_modules/@stdlib/random/iterators/gamma/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/gamma/docs/repl.txt @@ -38,7 +38,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/gamma/lib/main.js b/lib/node_modules/@stdlib/random/iterators/gamma/lib/main.js index 56f5c588c2b2..9e0326d77bea 100644 --- a/lib/node_modules/@stdlib/random/iterators/gamma/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/gamma/lib/main.js @@ -93,7 +93,7 @@ function iterator( alpha, beta, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -148,7 +148,7 @@ function iterator( alpha, beta, options ) { */ function factory() { return iterator( alpha, beta, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/gamma/test/test.js b/lib/node_modules/@stdlib/random/iterators/gamma/test/test.js index 7a40e319da8c..ef177e95a982 100644 --- a/lib/node_modules/@stdlib/random/iterators/gamma/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/gamma/test/test.js @@ -203,8 +203,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -323,7 +323,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/geometric/README.md b/lib/node_modules/@stdlib/random/iterators/geometric/README.md index 9ddd23d269e3..33370f211a80 100644 --- a/lib/node_modules/@stdlib/random/iterators/geometric/README.md +++ b/lib/node_modules/@stdlib/random/iterators/geometric/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/geometric/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/geometric/docs/repl.txt index 91241e5f0dc9..5c2d9fa1493e 100644 --- a/lib/node_modules/@stdlib/random/iterators/geometric/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/geometric/docs/repl.txt @@ -33,7 +33,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/geometric/lib/main.js b/lib/node_modules/@stdlib/random/iterators/geometric/lib/main.js index fa7625f79120..b3375f8da56a 100644 --- a/lib/node_modules/@stdlib/random/iterators/geometric/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/geometric/lib/main.js @@ -88,7 +88,7 @@ function iterator( p, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -143,7 +143,7 @@ function iterator( p, options ) { */ function factory() { return iterator( p, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/geometric/test/test.js b/lib/node_modules/@stdlib/random/iterators/geometric/test/test.js index 218382329a39..d9751e4411e2 100644 --- a/lib/node_modules/@stdlib/random/iterators/geometric/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/geometric/test/test.js @@ -173,8 +173,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 0.3, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -293,7 +293,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/gumbel/README.md b/lib/node_modules/@stdlib/random/iterators/gumbel/README.md index 7c6164da3783..a43ad8718b40 100644 --- a/lib/node_modules/@stdlib/random/iterators/gumbel/README.md +++ b/lib/node_modules/@stdlib/random/iterators/gumbel/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/gumbel/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/gumbel/docs/repl.txt index 868a0a2c83c1..8284e9c3fcea 100644 --- a/lib/node_modules/@stdlib/random/iterators/gumbel/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/gumbel/docs/repl.txt @@ -36,7 +36,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/gumbel/lib/main.js b/lib/node_modules/@stdlib/random/iterators/gumbel/lib/main.js index 2b357ac0fab3..bfd643ad83ec 100644 --- a/lib/node_modules/@stdlib/random/iterators/gumbel/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/gumbel/lib/main.js @@ -95,7 +95,7 @@ function iterator( mu, beta, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -150,7 +150,7 @@ function iterator( mu, beta, options ) { */ function factory() { return iterator( mu, beta, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/gumbel/test/test.js b/lib/node_modules/@stdlib/random/iterators/gumbel/test/test.js index 639c12f293ea..ed547f661084 100644 --- a/lib/node_modules/@stdlib/random/iterators/gumbel/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/gumbel/test/test.js @@ -201,8 +201,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -321,7 +321,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/hypergeometric/README.md b/lib/node_modules/@stdlib/random/iterators/hypergeometric/README.md index aa38186423b0..fde89f336e2a 100644 --- a/lib/node_modules/@stdlib/random/iterators/hypergeometric/README.md +++ b/lib/node_modules/@stdlib/random/iterators/hypergeometric/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/hypergeometric/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/hypergeometric/docs/repl.txt index adc0dab18b6a..226cc4f7ec86 100644 --- a/lib/node_modules/@stdlib/random/iterators/hypergeometric/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/hypergeometric/docs/repl.txt @@ -44,7 +44,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/hypergeometric/lib/main.js b/lib/node_modules/@stdlib/random/iterators/hypergeometric/lib/main.js index 6bd2a5d8e478..1038ff6d5263 100644 --- a/lib/node_modules/@stdlib/random/iterators/hypergeometric/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/hypergeometric/lib/main.js @@ -105,7 +105,7 @@ function iterator( N, K, n, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -160,7 +160,7 @@ function iterator( N, K, n, options ) { */ function factory() { return iterator( N, K, n, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/hypergeometric/test/test.js b/lib/node_modules/@stdlib/random/iterators/hypergeometric/test/test.js index ce8680f4f4c8..8b106b9cba11 100644 --- a/lib/node_modules/@stdlib/random/iterators/hypergeometric/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/hypergeometric/test/test.js @@ -280,8 +280,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 10, 5, 5, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -400,7 +400,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/README.md b/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/README.md index 4aed20b6d1d1..d2a71b55916a 100644 --- a/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/README.md +++ b/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/README.md @@ -108,7 +108,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. - **PRNG**: Underlying pseudorandom number generator for uniformly distributed numbers on the interval `[0,1)`. diff --git a/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/docs/repl.txt index 07acfdec134d..fdb7a3913e78 100644 --- a/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/docs/repl.txt @@ -34,7 +34,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. iterator.PRNG: Function diff --git a/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/lib/main.js b/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/lib/main.js index 7ec8f377c942..05e587a5c10d 100644 --- a/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/lib/main.js @@ -83,7 +83,7 @@ function iterator( options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); setReadOnly( iter, 'PRNG', rand.PRNG ); // If an environment supports `Symbol.iterator`, make the iterator iterable: @@ -139,7 +139,7 @@ function iterator( options ) { */ function factory() { return iterator({ - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/test/test.js b/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/test/test.js index a2ec67e38461..889ae9c33214 100644 --- a/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/test/test.js @@ -173,8 +173,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -302,7 +302,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/invgamma/README.md b/lib/node_modules/@stdlib/random/iterators/invgamma/README.md index 6999ecf1ec38..64cbb66f50ba 100644 --- a/lib/node_modules/@stdlib/random/iterators/invgamma/README.md +++ b/lib/node_modules/@stdlib/random/iterators/invgamma/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/invgamma/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/invgamma/docs/repl.txt index a92c5efac2fb..b2c3455c7d29 100644 --- a/lib/node_modules/@stdlib/random/iterators/invgamma/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/invgamma/docs/repl.txt @@ -38,7 +38,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/invgamma/lib/main.js b/lib/node_modules/@stdlib/random/iterators/invgamma/lib/main.js index 94ac699be69d..3ee2a470c38a 100644 --- a/lib/node_modules/@stdlib/random/iterators/invgamma/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/invgamma/lib/main.js @@ -93,7 +93,7 @@ function iterator( alpha, beta, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -148,7 +148,7 @@ function iterator( alpha, beta, options ) { */ function factory() { return iterator( alpha, beta, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/invgamma/test/test.js b/lib/node_modules/@stdlib/random/iterators/invgamma/test/test.js index 495ad8b373f2..acd215fb0a83 100644 --- a/lib/node_modules/@stdlib/random/iterators/invgamma/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/invgamma/test/test.js @@ -203,8 +203,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -323,7 +323,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/kumaraswamy/README.md b/lib/node_modules/@stdlib/random/iterators/kumaraswamy/README.md index 9d1f52d8f12e..1fbc07f03ae8 100644 --- a/lib/node_modules/@stdlib/random/iterators/kumaraswamy/README.md +++ b/lib/node_modules/@stdlib/random/iterators/kumaraswamy/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/kumaraswamy/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/kumaraswamy/docs/repl.txt index 9a6e246545cd..f52e49ff42a4 100644 --- a/lib/node_modules/@stdlib/random/iterators/kumaraswamy/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/kumaraswamy/docs/repl.txt @@ -38,7 +38,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/kumaraswamy/lib/main.js b/lib/node_modules/@stdlib/random/iterators/kumaraswamy/lib/main.js index 093ed901363d..b49041bfd793 100644 --- a/lib/node_modules/@stdlib/random/iterators/kumaraswamy/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/kumaraswamy/lib/main.js @@ -93,7 +93,7 @@ function iterator( a, b, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -148,7 +148,7 @@ function iterator( a, b, options ) { */ function factory() { return iterator( a, b, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/kumaraswamy/test/test.js b/lib/node_modules/@stdlib/random/iterators/kumaraswamy/test/test.js index cfa288595418..f86530c34eca 100644 --- a/lib/node_modules/@stdlib/random/iterators/kumaraswamy/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/kumaraswamy/test/test.js @@ -203,8 +203,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -323,7 +323,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/laplace/README.md b/lib/node_modules/@stdlib/random/iterators/laplace/README.md index bceef5589454..8f9ac74aeb90 100644 --- a/lib/node_modules/@stdlib/random/iterators/laplace/README.md +++ b/lib/node_modules/@stdlib/random/iterators/laplace/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/laplace/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/laplace/docs/repl.txt index cc98ff7b49a0..486ea1d9d082 100644 --- a/lib/node_modules/@stdlib/random/iterators/laplace/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/laplace/docs/repl.txt @@ -36,7 +36,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/laplace/lib/main.js b/lib/node_modules/@stdlib/random/iterators/laplace/lib/main.js index 1c20802b3be0..04106a9e8528 100644 --- a/lib/node_modules/@stdlib/random/iterators/laplace/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/laplace/lib/main.js @@ -95,7 +95,7 @@ function iterator( mu, b, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -150,7 +150,7 @@ function iterator( mu, b, options ) { */ function factory() { return iterator( mu, b, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/laplace/test/test.js b/lib/node_modules/@stdlib/random/iterators/laplace/test/test.js index 702766cb924c..0e605eebfafe 100644 --- a/lib/node_modules/@stdlib/random/iterators/laplace/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/laplace/test/test.js @@ -201,8 +201,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -321,7 +321,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/levy/README.md b/lib/node_modules/@stdlib/random/iterators/levy/README.md index efdc83cf6c87..0ef2202e3041 100644 --- a/lib/node_modules/@stdlib/random/iterators/levy/README.md +++ b/lib/node_modules/@stdlib/random/iterators/levy/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/levy/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/levy/docs/repl.txt index c71fd8886fb8..b5a9ae40e861 100644 --- a/lib/node_modules/@stdlib/random/iterators/levy/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/levy/docs/repl.txt @@ -36,7 +36,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/levy/lib/main.js b/lib/node_modules/@stdlib/random/iterators/levy/lib/main.js index e05fd0a2d057..53e59c79cca7 100644 --- a/lib/node_modules/@stdlib/random/iterators/levy/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/levy/lib/main.js @@ -95,7 +95,7 @@ function iterator( mu, c, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -150,7 +150,7 @@ function iterator( mu, c, options ) { */ function factory() { return iterator( mu, c, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/levy/test/test.js b/lib/node_modules/@stdlib/random/iterators/levy/test/test.js index dbcd2153809c..6bb09034dcf0 100644 --- a/lib/node_modules/@stdlib/random/iterators/levy/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/levy/test/test.js @@ -201,8 +201,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -321,7 +321,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/logistic/README.md b/lib/node_modules/@stdlib/random/iterators/logistic/README.md index 1629f47b472b..3846167c9adb 100644 --- a/lib/node_modules/@stdlib/random/iterators/logistic/README.md +++ b/lib/node_modules/@stdlib/random/iterators/logistic/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/logistic/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/logistic/docs/repl.txt index fecc1401badf..98aeb98688d6 100644 --- a/lib/node_modules/@stdlib/random/iterators/logistic/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/logistic/docs/repl.txt @@ -36,7 +36,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/logistic/lib/main.js b/lib/node_modules/@stdlib/random/iterators/logistic/lib/main.js index 89e6da0fb811..75c5b3ced260 100644 --- a/lib/node_modules/@stdlib/random/iterators/logistic/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/logistic/lib/main.js @@ -95,7 +95,7 @@ function iterator( mu, s, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -150,7 +150,7 @@ function iterator( mu, s, options ) { */ function factory() { return iterator( mu, s, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/logistic/test/test.js b/lib/node_modules/@stdlib/random/iterators/logistic/test/test.js index 44262aefe23f..717ef2c33ac8 100644 --- a/lib/node_modules/@stdlib/random/iterators/logistic/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/logistic/test/test.js @@ -201,8 +201,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -321,7 +321,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/lognormal/README.md b/lib/node_modules/@stdlib/random/iterators/lognormal/README.md index 5310191827d9..a75ac90a2434 100644 --- a/lib/node_modules/@stdlib/random/iterators/lognormal/README.md +++ b/lib/node_modules/@stdlib/random/iterators/lognormal/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/lognormal/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/lognormal/docs/repl.txt index bd31575d2e8f..6e41285d8d59 100644 --- a/lib/node_modules/@stdlib/random/iterators/lognormal/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/lognormal/docs/repl.txt @@ -36,7 +36,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/lognormal/lib/main.js b/lib/node_modules/@stdlib/random/iterators/lognormal/lib/main.js index fe7781724535..7eee73980718 100644 --- a/lib/node_modules/@stdlib/random/iterators/lognormal/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/lognormal/lib/main.js @@ -95,7 +95,7 @@ function iterator( mu, sigma, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -150,7 +150,7 @@ function iterator( mu, sigma, options ) { */ function factory() { return iterator( mu, sigma, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/lognormal/test/test.js b/lib/node_modules/@stdlib/random/iterators/lognormal/test/test.js index 159027a1b4d5..2309c2717891 100644 --- a/lib/node_modules/@stdlib/random/iterators/lognormal/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/lognormal/test/test.js @@ -201,8 +201,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -321,7 +321,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/README.md b/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/README.md index 81312593952a..36dc6c041b9c 100644 --- a/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/README.md +++ b/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. - **MIN**: Minimum possible value. - **MAX**: Maximum possible value. diff --git a/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/docs/repl.txt index 535914ab70bc..6151f03132b1 100644 --- a/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/docs/repl.txt @@ -47,7 +47,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. iterator.MIN: number diff --git a/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/lib/main.js b/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/lib/main.js index 2d15df0c74d2..93db0f101b61 100644 --- a/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/lib/main.js @@ -100,7 +100,7 @@ function iterator( options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); setReadOnly( iter, 'MIN', rand.MIN ); setReadOnly( iter, 'MAX', rand.MAX ); @@ -157,7 +157,7 @@ function iterator( options ) { */ function factory() { return iterator({ - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/test/test.js b/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/test/test.js index 43bf2595cd98..a461d66a492b 100644 --- a/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/test/test.js @@ -174,8 +174,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -347,7 +347,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/minstd/README.md b/lib/node_modules/@stdlib/random/iterators/minstd/README.md index 45aff344f7f3..4f33e2fa581c 100644 --- a/lib/node_modules/@stdlib/random/iterators/minstd/README.md +++ b/lib/node_modules/@stdlib/random/iterators/minstd/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. - **MIN**: Minimum possible value. - **MAX**: Maximum possible value. diff --git a/lib/node_modules/@stdlib/random/iterators/minstd/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/minstd/docs/repl.txt index b4de76873300..a34fc07d5992 100644 --- a/lib/node_modules/@stdlib/random/iterators/minstd/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/minstd/docs/repl.txt @@ -46,7 +46,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. iterator.MIN: number diff --git a/lib/node_modules/@stdlib/random/iterators/minstd/lib/main.js b/lib/node_modules/@stdlib/random/iterators/minstd/lib/main.js index fc15a6cd8bb1..86dd6971e0d3 100644 --- a/lib/node_modules/@stdlib/random/iterators/minstd/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/minstd/lib/main.js @@ -100,7 +100,7 @@ function iterator( options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); setReadOnly( iter, 'MIN', rand.MIN ); setReadOnly( iter, 'MAX', rand.MAX ); @@ -157,7 +157,7 @@ function iterator( options ) { */ function factory() { return iterator({ - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/minstd/test/test.js b/lib/node_modules/@stdlib/random/iterators/minstd/test/test.js index aeb4e51f0e8b..60331e74e1d4 100644 --- a/lib/node_modules/@stdlib/random/iterators/minstd/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/minstd/test/test.js @@ -174,8 +174,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -347,7 +347,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/mt19937/README.md b/lib/node_modules/@stdlib/random/iterators/mt19937/README.md index 8e807ecb66a1..49302e22ea60 100644 --- a/lib/node_modules/@stdlib/random/iterators/mt19937/README.md +++ b/lib/node_modules/@stdlib/random/iterators/mt19937/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. - **MIN**: Minimum possible value. - **MAX**: Maximum possible value. diff --git a/lib/node_modules/@stdlib/random/iterators/mt19937/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/mt19937/docs/repl.txt index 0565a9923f74..5bff3214c337 100644 --- a/lib/node_modules/@stdlib/random/iterators/mt19937/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/mt19937/docs/repl.txt @@ -41,7 +41,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. iterator.MIN: number diff --git a/lib/node_modules/@stdlib/random/iterators/mt19937/lib/main.js b/lib/node_modules/@stdlib/random/iterators/mt19937/lib/main.js index d85ba7b89dbd..1ac6691b22ac 100644 --- a/lib/node_modules/@stdlib/random/iterators/mt19937/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/mt19937/lib/main.js @@ -100,7 +100,7 @@ function iterator( options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); setReadOnly( iter, 'MIN', rand.MIN ); setReadOnly( iter, 'MAX', rand.MAX ); @@ -157,7 +157,7 @@ function iterator( options ) { */ function factory() { return iterator({ - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/mt19937/test/test.js b/lib/node_modules/@stdlib/random/iterators/mt19937/test/test.js index 55d67a8ae0cc..5779e89c1945 100644 --- a/lib/node_modules/@stdlib/random/iterators/mt19937/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/mt19937/test/test.js @@ -174,8 +174,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -347,7 +347,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/negative-binomial/README.md b/lib/node_modules/@stdlib/random/iterators/negative-binomial/README.md index c73d53091650..a6eb9ab84764 100644 --- a/lib/node_modules/@stdlib/random/iterators/negative-binomial/README.md +++ b/lib/node_modules/@stdlib/random/iterators/negative-binomial/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/negative-binomial/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/negative-binomial/docs/repl.txt index f37ffa69d976..e18576d24dbb 100644 --- a/lib/node_modules/@stdlib/random/iterators/negative-binomial/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/negative-binomial/docs/repl.txt @@ -36,7 +36,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/negative-binomial/lib/main.js b/lib/node_modules/@stdlib/random/iterators/negative-binomial/lib/main.js index 840c34d7be3c..a47a277312c7 100644 --- a/lib/node_modules/@stdlib/random/iterators/negative-binomial/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/negative-binomial/lib/main.js @@ -94,7 +94,7 @@ function iterator( r, p, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -149,7 +149,7 @@ function iterator( r, p, options ) { */ function factory() { return iterator( r, p, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/negative-binomial/test/test.js b/lib/node_modules/@stdlib/random/iterators/negative-binomial/test/test.js index 2322a096a94b..d53f02df049a 100644 --- a/lib/node_modules/@stdlib/random/iterators/negative-binomial/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/negative-binomial/test/test.js @@ -204,8 +204,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 10, 0.3, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -324,7 +324,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/normal/README.md b/lib/node_modules/@stdlib/random/iterators/normal/README.md index c2639a5d5550..1ec4878bdf7e 100644 --- a/lib/node_modules/@stdlib/random/iterators/normal/README.md +++ b/lib/node_modules/@stdlib/random/iterators/normal/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/normal/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/normal/docs/repl.txt index 72d7a66c0119..6d9c071306b9 100644 --- a/lib/node_modules/@stdlib/random/iterators/normal/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/normal/docs/repl.txt @@ -36,7 +36,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/normal/lib/main.js b/lib/node_modules/@stdlib/random/iterators/normal/lib/main.js index 3babb83d6330..d136b3213f32 100644 --- a/lib/node_modules/@stdlib/random/iterators/normal/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/normal/lib/main.js @@ -95,7 +95,7 @@ function iterator( mu, sigma, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -150,7 +150,7 @@ function iterator( mu, sigma, options ) { */ function factory() { return iterator( mu, sigma, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/normal/test/test.js b/lib/node_modules/@stdlib/random/iterators/normal/test/test.js index caec0a03ed1d..b02287daff15 100644 --- a/lib/node_modules/@stdlib/random/iterators/normal/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/normal/test/test.js @@ -201,8 +201,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -321,7 +321,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/pareto-type1/README.md b/lib/node_modules/@stdlib/random/iterators/pareto-type1/README.md index e9b88a34da33..9fa8fbb61dcb 100644 --- a/lib/node_modules/@stdlib/random/iterators/pareto-type1/README.md +++ b/lib/node_modules/@stdlib/random/iterators/pareto-type1/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/pareto-type1/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/pareto-type1/docs/repl.txt index 9c5aaef6586e..d3bec0a89d24 100644 --- a/lib/node_modules/@stdlib/random/iterators/pareto-type1/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/pareto-type1/docs/repl.txt @@ -38,7 +38,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/pareto-type1/lib/main.js b/lib/node_modules/@stdlib/random/iterators/pareto-type1/lib/main.js index 2de111137c0f..ccbbfa98ae61 100644 --- a/lib/node_modules/@stdlib/random/iterators/pareto-type1/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/pareto-type1/lib/main.js @@ -93,7 +93,7 @@ function iterator( alpha, beta, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -148,7 +148,7 @@ function iterator( alpha, beta, options ) { */ function factory() { return iterator( alpha, beta, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/pareto-type1/test/test.js b/lib/node_modules/@stdlib/random/iterators/pareto-type1/test/test.js index 18350dfd8155..df516b053271 100644 --- a/lib/node_modules/@stdlib/random/iterators/pareto-type1/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/pareto-type1/test/test.js @@ -203,8 +203,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -323,7 +323,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/poisson/README.md b/lib/node_modules/@stdlib/random/iterators/poisson/README.md index 9fa327112ce6..dc12da14339c 100644 --- a/lib/node_modules/@stdlib/random/iterators/poisson/README.md +++ b/lib/node_modules/@stdlib/random/iterators/poisson/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/poisson/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/poisson/docs/repl.txt index 6cbdbccf2d4d..644fc264dcd5 100644 --- a/lib/node_modules/@stdlib/random/iterators/poisson/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/poisson/docs/repl.txt @@ -33,7 +33,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/poisson/lib/main.js b/lib/node_modules/@stdlib/random/iterators/poisson/lib/main.js index 50f28300e11a..02dfec67a19f 100644 --- a/lib/node_modules/@stdlib/random/iterators/poisson/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/poisson/lib/main.js @@ -88,7 +88,7 @@ function iterator( lambda, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -143,7 +143,7 @@ function iterator( lambda, options ) { */ function factory() { return iterator( lambda, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/poisson/test/test.js b/lib/node_modules/@stdlib/random/iterators/poisson/test/test.js index d77a02950a11..02a04fb7dca7 100644 --- a/lib/node_modules/@stdlib/random/iterators/poisson/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/poisson/test/test.js @@ -173,8 +173,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -293,7 +293,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/randi/README.md b/lib/node_modules/@stdlib/random/iterators/randi/README.md index 602b1e21f50e..aaf911640354 100644 --- a/lib/node_modules/@stdlib/random/iterators/randi/README.md +++ b/lib/node_modules/@stdlib/random/iterators/randi/README.md @@ -117,7 +117,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. - **PRNG**: Underlying pseudorandom number generator. - **MIN**: Minimum possible value. - **MAX**: Maximum possible value. diff --git a/lib/node_modules/@stdlib/random/iterators/randi/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/randi/docs/repl.txt index 6afdbb30c911..7df9a01b73bd 100644 --- a/lib/node_modules/@stdlib/random/iterators/randi/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/randi/docs/repl.txt @@ -45,7 +45,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. iterator.PRNG: Function diff --git a/lib/node_modules/@stdlib/random/iterators/randi/lib/main.js b/lib/node_modules/@stdlib/random/iterators/randi/lib/main.js index 785a86e158e1..2426d704aa17 100644 --- a/lib/node_modules/@stdlib/random/iterators/randi/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/randi/lib/main.js @@ -83,7 +83,7 @@ function iterator( options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); setReadOnly( iter, 'MIN', rand.MIN ); setReadOnly( iter, 'MAX', rand.MAX ); setReadOnly( iter, 'PRNG', rand.PRNG ); @@ -141,7 +141,7 @@ function iterator( options ) { */ function factory() { return iterator({ - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/randi/test/test.js b/lib/node_modules/@stdlib/random/iterators/randi/test/test.js index 2e6d451602af..1459a364d380 100644 --- a/lib/node_modules/@stdlib/random/iterators/randi/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/randi/test/test.js @@ -173,8 +173,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -316,7 +316,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/randn/README.md b/lib/node_modules/@stdlib/random/iterators/randn/README.md index 504680e89f5d..df8df90a5558 100644 --- a/lib/node_modules/@stdlib/random/iterators/randn/README.md +++ b/lib/node_modules/@stdlib/random/iterators/randn/README.md @@ -116,7 +116,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. - **PRNG**: Underlying pseudorandom number generator. diff --git a/lib/node_modules/@stdlib/random/iterators/randn/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/randn/docs/repl.txt index 1e07ea43d7f8..3774d6b1ccaa 100644 --- a/lib/node_modules/@stdlib/random/iterators/randn/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/randn/docs/repl.txt @@ -44,7 +44,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. iterator.PRNG: Function diff --git a/lib/node_modules/@stdlib/random/iterators/randn/lib/main.js b/lib/node_modules/@stdlib/random/iterators/randn/lib/main.js index 9884873a0e11..97877870429a 100644 --- a/lib/node_modules/@stdlib/random/iterators/randn/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/randn/lib/main.js @@ -83,7 +83,7 @@ function iterator( options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); setReadOnly( iter, 'PRNG', rand.PRNG ); // If an environment supports `Symbol.iterator`, make the iterator iterable: @@ -139,7 +139,7 @@ function iterator( options ) { */ function factory() { return iterator({ - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/randn/test/test.js b/lib/node_modules/@stdlib/random/iterators/randn/test/test.js index 614e274f9072..093d83fe79b6 100644 --- a/lib/node_modules/@stdlib/random/iterators/randn/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/randn/test/test.js @@ -172,8 +172,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -301,7 +301,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/randu/README.md b/lib/node_modules/@stdlib/random/iterators/randu/README.md index 1cdab40836a9..f4a12b1bd0e4 100644 --- a/lib/node_modules/@stdlib/random/iterators/randu/README.md +++ b/lib/node_modules/@stdlib/random/iterators/randu/README.md @@ -117,7 +117,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. - **PRNG**: Underlying pseudorandom number generator. - **MIN**: Minimum possible value. - **MAX**: Maximum possible value. diff --git a/lib/node_modules/@stdlib/random/iterators/randu/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/randu/docs/repl.txt index abbcc26cb1fd..f64763550aa1 100644 --- a/lib/node_modules/@stdlib/random/iterators/randu/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/randu/docs/repl.txt @@ -45,7 +45,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. iterator.PRNG: Function diff --git a/lib/node_modules/@stdlib/random/iterators/randu/lib/main.js b/lib/node_modules/@stdlib/random/iterators/randu/lib/main.js index 9aa07b27cf21..cb1f35a5bd22 100644 --- a/lib/node_modules/@stdlib/random/iterators/randu/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/randu/lib/main.js @@ -83,7 +83,7 @@ function iterator( options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); setReadOnly( iter, 'MIN', rand.MIN ); setReadOnly( iter, 'MAX', rand.MAX ); setReadOnly( iter, 'PRNG', rand.PRNG ); @@ -141,7 +141,7 @@ function iterator( options ) { */ function factory() { return iterator({ - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/randu/test/test.js b/lib/node_modules/@stdlib/random/iterators/randu/test/test.js index 929f056d6db9..2fda7c03b70d 100644 --- a/lib/node_modules/@stdlib/random/iterators/randu/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/randu/test/test.js @@ -172,8 +172,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -315,7 +315,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/rayleigh/README.md b/lib/node_modules/@stdlib/random/iterators/rayleigh/README.md index 422d774c382f..fa441c1289df 100644 --- a/lib/node_modules/@stdlib/random/iterators/rayleigh/README.md +++ b/lib/node_modules/@stdlib/random/iterators/rayleigh/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/rayleigh/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/rayleigh/docs/repl.txt index 8ada1c69dcfe..85378f09a7c6 100644 --- a/lib/node_modules/@stdlib/random/iterators/rayleigh/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/rayleigh/docs/repl.txt @@ -33,7 +33,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/rayleigh/lib/main.js b/lib/node_modules/@stdlib/random/iterators/rayleigh/lib/main.js index 665443b0a94f..9fd034ecbccc 100644 --- a/lib/node_modules/@stdlib/random/iterators/rayleigh/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/rayleigh/lib/main.js @@ -88,7 +88,7 @@ function iterator( sigma, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -143,7 +143,7 @@ function iterator( sigma, options ) { */ function factory() { return iterator( sigma, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/rayleigh/test/test.js b/lib/node_modules/@stdlib/random/iterators/rayleigh/test/test.js index 496a50f215a3..848703b462b8 100644 --- a/lib/node_modules/@stdlib/random/iterators/rayleigh/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/rayleigh/test/test.js @@ -173,8 +173,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -293,7 +293,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/t/README.md b/lib/node_modules/@stdlib/random/iterators/t/README.md index fd97108c7519..a78b0e3d9585 100644 --- a/lib/node_modules/@stdlib/random/iterators/t/README.md +++ b/lib/node_modules/@stdlib/random/iterators/t/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/t/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/t/docs/repl.txt index de7c727751bb..2fd4e5172828 100644 --- a/lib/node_modules/@stdlib/random/iterators/t/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/t/docs/repl.txt @@ -33,7 +33,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/t/lib/main.js b/lib/node_modules/@stdlib/random/iterators/t/lib/main.js index f0ecff15facd..fcccd2f48f7e 100644 --- a/lib/node_modules/@stdlib/random/iterators/t/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/t/lib/main.js @@ -88,7 +88,7 @@ function iterator( v, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -143,7 +143,7 @@ function iterator( v, options ) { */ function factory() { return iterator( v, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/t/test/test.js b/lib/node_modules/@stdlib/random/iterators/t/test/test.js index cb5995f5067f..9ad09646ad83 100644 --- a/lib/node_modules/@stdlib/random/iterators/t/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/t/test/test.js @@ -173,8 +173,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -293,7 +293,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/triangular/README.md b/lib/node_modules/@stdlib/random/iterators/triangular/README.md index 32a0df66b4c6..61a2f4a3fa92 100644 --- a/lib/node_modules/@stdlib/random/iterators/triangular/README.md +++ b/lib/node_modules/@stdlib/random/iterators/triangular/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/triangular/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/triangular/docs/repl.txt index 02a65ea5dd11..88918525f09f 100644 --- a/lib/node_modules/@stdlib/random/iterators/triangular/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/triangular/docs/repl.txt @@ -39,7 +39,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/triangular/lib/main.js b/lib/node_modules/@stdlib/random/iterators/triangular/lib/main.js index d70950960072..5824731d70db 100644 --- a/lib/node_modules/@stdlib/random/iterators/triangular/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/triangular/lib/main.js @@ -102,7 +102,7 @@ function iterator( a, b, c, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -157,7 +157,7 @@ function iterator( a, b, c, options ) { */ function factory() { return iterator( a, b, c, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/triangular/test/test.js b/lib/node_modules/@stdlib/random/iterators/triangular/test/test.js index 395176635339..1a3fd638a7c7 100644 --- a/lib/node_modules/@stdlib/random/iterators/triangular/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/triangular/test/test.js @@ -250,8 +250,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, 4.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -370,7 +370,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/uniform/README.md b/lib/node_modules/@stdlib/random/iterators/uniform/README.md index fceb79e6f4c6..bc43b407210d 100644 --- a/lib/node_modules/@stdlib/random/iterators/uniform/README.md +++ b/lib/node_modules/@stdlib/random/iterators/uniform/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/uniform/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/uniform/docs/repl.txt index 6a55c957c89f..cc06162a42e5 100644 --- a/lib/node_modules/@stdlib/random/iterators/uniform/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/uniform/docs/repl.txt @@ -36,7 +36,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/uniform/lib/main.js b/lib/node_modules/@stdlib/random/iterators/uniform/lib/main.js index 4b118c1a19e1..4d00f4098e65 100644 --- a/lib/node_modules/@stdlib/random/iterators/uniform/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/uniform/lib/main.js @@ -98,7 +98,7 @@ function iterator( a, b, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -153,7 +153,7 @@ function iterator( a, b, options ) { */ function factory() { return iterator( a, b, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/uniform/test/test.js b/lib/node_modules/@stdlib/random/iterators/uniform/test/test.js index 76f13c07919e..8bc1f2f9cf3d 100644 --- a/lib/node_modules/@stdlib/random/iterators/uniform/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/uniform/test/test.js @@ -221,8 +221,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -341,7 +341,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/weibull/README.md b/lib/node_modules/@stdlib/random/iterators/weibull/README.md index 021ef3005836..65cfd4c9cb32 100644 --- a/lib/node_modules/@stdlib/random/iterators/weibull/README.md +++ b/lib/node_modules/@stdlib/random/iterators/weibull/README.md @@ -106,7 +106,7 @@ The returned iterator protocol-compliant object has the following properties: - **next**: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a `value` property and a `done` property having a `boolean` value indicating whether the iterator is finished. - **return**: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object. -- **SEED**: pseudorandom number generator seed. +- **seed**: pseudorandom number generator seed. diff --git a/lib/node_modules/@stdlib/random/iterators/weibull/docs/repl.txt b/lib/node_modules/@stdlib/random/iterators/weibull/docs/repl.txt index 8e78187f75ba..1ce89ef0642b 100644 --- a/lib/node_modules/@stdlib/random/iterators/weibull/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/iterators/weibull/docs/repl.txt @@ -38,7 +38,7 @@ iterator.return( [value] ): Function Finishes an iterator and returns a provided value. - iterator.SEED: any + iterator.seed: any Pseudorandom number generator seed. Examples diff --git a/lib/node_modules/@stdlib/random/iterators/weibull/lib/main.js b/lib/node_modules/@stdlib/random/iterators/weibull/lib/main.js index 1ff1e981e6ee..9c2466deb1cb 100644 --- a/lib/node_modules/@stdlib/random/iterators/weibull/lib/main.js +++ b/lib/node_modules/@stdlib/random/iterators/weibull/lib/main.js @@ -93,7 +93,7 @@ function iterator( k, lambda, options ) { iter = {}; setReadOnly( iter, 'next', next ); setReadOnly( iter, 'return', end ); - setReadOnly( iter, 'SEED', rand.SEED ); + setReadOnly( iter, 'seed', rand.seed ); // If an environment supports `Symbol.iterator`, make the iterator iterable: if ( iteratorSymbol ) { @@ -148,7 +148,7 @@ function iterator( k, lambda, options ) { */ function factory() { return iterator( k, lambda, { - 'seed': iter.SEED, + 'seed': iter.seed, 'iter': niter }); } diff --git a/lib/node_modules/@stdlib/random/iterators/weibull/test/test.js b/lib/node_modules/@stdlib/random/iterators/weibull/test/test.js index f523871fd598..6dcbf3d3780d 100644 --- a/lib/node_modules/@stdlib/random/iterators/weibull/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/weibull/test/test.js @@ -203,8 +203,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.SEED, 'number', 'has `SEED` property' ); - t.equal( it.SEED, 12345, 'equal to provided seed' ); + t.equal( typeof it.seed, 'number', 'has `seed` property' ); + t.equal( it.seed, 12345, 'equal to provided seed' ); t.end(); }); @@ -323,7 +323,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.SEED, it1.SEED, 'has expected seed' ); + t.equal( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/sample/lib/factory.js b/lib/node_modules/@stdlib/random/sample/lib/factory.js index 9a8a5b884a1c..f4b5e9be814c 100644 --- a/lib/node_modules/@stdlib/random/sample/lib/factory.js +++ b/lib/node_modules/@stdlib/random/sample/lib/factory.js @@ -180,7 +180,7 @@ function factory() { } fcn = sample2; } - setReadOnly( fcn, 'SEED', rand.SEED ); + setReadOnly( fcn, 'seed', rand.seed ); setReadOnly( fcn, 'PRNG', rand ); return fcn; diff --git a/lib/node_modules/@stdlib/random/sample/test/test.factory.js b/lib/node_modules/@stdlib/random/sample/test/test.factory.js index bb6fecbe8075..121fb1d5291f 100644 --- a/lib/node_modules/@stdlib/random/sample/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/sample/test/test.factory.js @@ -503,7 +503,7 @@ tape( 'attached to the returned function is the generator seed', function test( var sample = factory({ 'seed': 311 }); - t.equal( typeof sample.SEED, 'number', 'has `SEED` property' ); + t.equal( typeof sample.seed, 'number', 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/sample/test/test.js b/lib/node_modules/@stdlib/random/sample/test/test.js index 138d435c1b58..6cfbc7bdfd99 100644 --- a/lib/node_modules/@stdlib/random/sample/test/test.js +++ b/lib/node_modules/@stdlib/random/sample/test/test.js @@ -38,7 +38,7 @@ tape( 'attached to the main export is a factory function', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( typeof sample.SEED, 'number', 'has `SEED` property' ); + t.equal( typeof sample.seed, 'number', 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/shuffle/lib/factory.js b/lib/node_modules/@stdlib/random/shuffle/lib/factory.js index 47bce454de82..163c8e940963 100644 --- a/lib/node_modules/@stdlib/random/shuffle/lib/factory.js +++ b/lib/node_modules/@stdlib/random/shuffle/lib/factory.js @@ -151,7 +151,7 @@ function factory( config ) { return out; } - setReadOnly( shuffle, 'SEED', rand.SEED ); + setReadOnly( shuffle, 'seed', rand.seed ); setReadOnly( shuffle, 'PRNG', rand ); return shuffle; } diff --git a/lib/node_modules/@stdlib/random/shuffle/test/test.factory.js b/lib/node_modules/@stdlib/random/shuffle/test/test.factory.js index e516efde7a78..88b1f1361236 100644 --- a/lib/node_modules/@stdlib/random/shuffle/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/shuffle/test/test.factory.js @@ -168,7 +168,7 @@ tape( 'the returned function throws an error if provided an invalid option', fun tape( 'attached to the returned function is the generator seed', function test( t ) { var shuffle = factory(); - t.equal( typeof shuffle.SEED, 'number', 'has `SEED` property' ); + t.equal( typeof shuffle.seed, 'number', 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/shuffle/test/test.js b/lib/node_modules/@stdlib/random/shuffle/test/test.js index edf0c5a49fc0..38378f8464dd 100644 --- a/lib/node_modules/@stdlib/random/shuffle/test/test.js +++ b/lib/node_modules/@stdlib/random/shuffle/test/test.js @@ -38,7 +38,7 @@ tape( 'attached to the main export is a factory function', function test( t ) { }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( typeof shuffle.SEED, 'number', 'has `SEED` property' ); + t.equal( typeof shuffle.seed, 'number', 'has `seed` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/stats/incr/mapcorr/test/test.js b/lib/node_modules/@stdlib/stats/incr/mapcorr/test/test.js index a56156d9cc89..0689b1dff601 100644 --- a/lib/node_modules/@stdlib/stats/incr/mapcorr/test/test.js +++ b/lib/node_modules/@stdlib/stats/incr/mapcorr/test/test.js @@ -343,7 +343,7 @@ tape( 'the accumulator function computes a moving sample absolute Pearson produc N = 10; M = 100; - data = datasets( N, M, randu.SEED ); + data = datasets( N, M, randu.seed ); // Define the window size: W = 10; @@ -392,7 +392,7 @@ tape( 'the accumulator function computes a moving sample absolute Pearson produc N = 10; M = 100; - data = datasets( N, M, randu.SEED ); + data = datasets( N, M, randu.seed ); // Define the window size: W = 10; diff --git a/lib/node_modules/@stdlib/stats/incr/mcovariance/test/test.js b/lib/node_modules/@stdlib/stats/incr/mcovariance/test/test.js index 2e1f5556d8ba..472023f0abeb 100644 --- a/lib/node_modules/@stdlib/stats/incr/mcovariance/test/test.js +++ b/lib/node_modules/@stdlib/stats/incr/mcovariance/test/test.js @@ -277,7 +277,7 @@ tape( 'the accumulator function computes a moving unbiased sample covariance inc N = 10; M = 100; - data = datasets( N, M, randu.SEED ); + data = datasets( N, M, randu.seed ); // Define the window size: W = 10; @@ -326,7 +326,7 @@ tape( 'the accumulator function computes a moving unbiased sample covariance inc N = 10; M = 100; - data = datasets( N, M, randu.SEED ); + data = datasets( N, M, randu.seed ); // Define the window size: W = 10; diff --git a/lib/node_modules/@stdlib/stats/incr/mpcorr/test/test.js b/lib/node_modules/@stdlib/stats/incr/mpcorr/test/test.js index 1a515b0cea11..c16c25af1e14 100644 --- a/lib/node_modules/@stdlib/stats/incr/mpcorr/test/test.js +++ b/lib/node_modules/@stdlib/stats/incr/mpcorr/test/test.js @@ -343,7 +343,7 @@ tape( 'the accumulator function computes a moving sample Pearson product-moment N = 10; M = 100; - data = datasets( N, M, randu.SEED ); + data = datasets( N, M, randu.seed ); // Define the window size: W = 10; @@ -392,7 +392,7 @@ tape( 'the accumulator function computes a moving sample Pearson product-moment N = 10; M = 100; - data = datasets( N, M, randu.SEED ); + data = datasets( N, M, randu.seed ); // Define the window size: W = 10; diff --git a/lib/node_modules/@stdlib/stats/incr/mpcorr2/test/test.js b/lib/node_modules/@stdlib/stats/incr/mpcorr2/test/test.js index a05cb2c51f3b..079562ea1cbc 100644 --- a/lib/node_modules/@stdlib/stats/incr/mpcorr2/test/test.js +++ b/lib/node_modules/@stdlib/stats/incr/mpcorr2/test/test.js @@ -345,7 +345,7 @@ tape( 'the accumulator function computes a moving squared sample Pearson product N = 10; M = 100; - data = datasets( N, M, randu.SEED ); + data = datasets( N, M, randu.seed ); // Define the window size: W = 10; @@ -394,7 +394,7 @@ tape( 'the accumulator function computes a moving squared sample Pearson product N = 10; M = 100; - data = datasets( N, M, randu.SEED ); + data = datasets( N, M, randu.seed ); // Define the window size: W = 10; diff --git a/lib/node_modules/@stdlib/stats/incr/mpcorrdist/test/test.js b/lib/node_modules/@stdlib/stats/incr/mpcorrdist/test/test.js index 197b4dbec795..996b9505c26e 100644 --- a/lib/node_modules/@stdlib/stats/incr/mpcorrdist/test/test.js +++ b/lib/node_modules/@stdlib/stats/incr/mpcorrdist/test/test.js @@ -351,9 +351,9 @@ tape( 'the accumulator function computes a moving sample Pearson product-moment N = 10; M = 100; - data = datasets( N, M, randu.SEED ); + data = datasets( N, M, randu.seed ); - t.pass( 'seed: '+randu.SEED ); + t.pass( 'seed: '+randu.seed ); // Define the window size: W = 10; @@ -409,9 +409,9 @@ tape( 'the accumulator function computes a moving sample Pearson product-moment N = 10; M = 100; - data = datasets( N, M, randu.SEED ); + data = datasets( N, M, randu.seed ); - t.pass( 'seed: '+randu.SEED ); + t.pass( 'seed: '+randu.seed ); // Define the window size: W = 10; From c40c94e50721628ce57db5d16fe68d2199af976e Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 31 Aug 2018 22:35:58 -0700 Subject: [PATCH 0002/1062] Lowercase property name --- .../@stdlib/random/base/README.md | 2 +- .../@stdlib/random/base/arcsine/README.md | 6 +-- .../@stdlib/random/base/arcsine/docs/repl.txt | 6 +-- .../random/base/arcsine/lib/factory.js | 6 +-- .../random/base/arcsine/test/test.factory.js | 6 +-- .../@stdlib/random/base/arcsine/test/test.js | 6 +-- .../@stdlib/random/base/bernoulli/README.md | 6 +-- .../random/base/bernoulli/docs/repl.txt | 6 +-- .../random/base/bernoulli/lib/factory.js | 6 +-- .../base/bernoulli/test/test.factory.js | 6 +-- .../random/base/bernoulli/test/test.js | 6 +-- .../@stdlib/random/base/beta/README.md | 6 +-- .../@stdlib/random/base/beta/docs/repl.txt | 6 +-- .../@stdlib/random/base/beta/lib/factory.js | 10 ++--- .../random/base/beta/test/test.factory.js | 22 +++++------ .../@stdlib/random/base/beta/test/test.js | 14 +++---- .../@stdlib/random/base/betaprime/README.md | 6 +-- .../random/base/betaprime/docs/repl.txt | 6 +-- .../random/base/betaprime/lib/factory.js | 6 +-- .../base/betaprime/test/test.factory.js | 6 +-- .../random/base/betaprime/test/test.js | 6 +-- .../@stdlib/random/base/binomial/README.md | 6 +-- .../random/base/binomial/docs/repl.txt | 6 +-- .../random/base/binomial/lib/factory.js | 6 +-- .../random/base/binomial/test/test.factory.js | 10 ++--- .../@stdlib/random/base/binomial/test/test.js | 10 ++--- .../@stdlib/random/base/box-muller/README.md | 8 ++-- .../random/base/box-muller/docs/repl.txt | 6 +-- .../random/base/box-muller/lib/factory.js | 8 ++-- .../base/box-muller/test/test.factory.js | 8 ++-- .../random/base/box-muller/test/test.js | 6 +-- .../@stdlib/random/base/cauchy/README.md | 6 +-- .../@stdlib/random/base/cauchy/docs/repl.txt | 6 +-- .../@stdlib/random/base/cauchy/lib/factory.js | 6 +-- .../random/base/cauchy/test/test.factory.js | 6 +-- .../@stdlib/random/base/cauchy/test/test.js | 6 +-- .../@stdlib/random/base/chi/README.md | 6 +-- .../@stdlib/random/base/chi/docs/repl.txt | 6 +-- .../@stdlib/random/base/chi/lib/factory.js | 6 +-- .../random/base/chi/test/test.factory.js | 6 +-- .../@stdlib/random/base/chi/test/test.js | 6 +-- .../@stdlib/random/base/chisquare/README.md | 6 +-- .../random/base/chisquare/docs/repl.txt | 6 +-- .../random/base/chisquare/lib/factory.js | 6 +-- .../base/chisquare/test/test.factory.js | 6 +-- .../random/base/chisquare/test/test.js | 6 +-- .../@stdlib/random/base/cosine/README.md | 6 +-- .../@stdlib/random/base/cosine/docs/repl.txt | 6 +-- .../@stdlib/random/base/cosine/lib/factory.js | 6 +-- .../random/base/cosine/test/test.factory.js | 6 +-- .../@stdlib/random/base/cosine/test/test.js | 6 +-- .../random/base/discrete-uniform/README.md | 6 +-- .../base/discrete-uniform/docs/repl.txt | 6 +-- .../base/discrete-uniform/lib/factory.js | 6 +-- .../discrete-uniform/test/test.factory.js | 6 +-- .../random/base/discrete-uniform/test/test.js | 6 +-- .../@stdlib/random/base/erlang/README.md | 6 +-- .../@stdlib/random/base/erlang/docs/repl.txt | 6 +-- .../@stdlib/random/base/erlang/lib/factory.js | 6 +-- .../random/base/erlang/test/test.factory.js | 6 +-- .../@stdlib/random/base/erlang/test/test.js | 6 +-- .../@stdlib/random/base/exponential/README.md | 6 +-- .../random/base/exponential/docs/repl.txt | 6 +-- .../random/base/exponential/lib/factory.js | 6 +-- .../base/exponential/test/test.factory.js | 6 +-- .../random/base/exponential/test/test.js | 6 +-- .../@stdlib/random/base/gamma/README.md | 6 +-- .../@stdlib/random/base/gamma/docs/repl.txt | 6 +-- .../@stdlib/random/base/gamma/lib/factory.js | 10 ++--- .../random/base/gamma/test/test.factory.js | 18 ++++----- .../@stdlib/random/base/gamma/test/test.js | 10 ++--- .../random/base/improved-ziggurat/README.md | 10 ++--- .../base/improved-ziggurat/docs/repl.txt | 6 +-- .../base/improved-ziggurat/lib/factory.js | 8 ++-- .../improved-ziggurat/test/test.factory.js | 22 +++++------ .../base/improved-ziggurat/test/test.js | 6 +-- .../random/base/minstd-shuffle/README.md | 8 ++-- .../random/base/minstd-shuffle/docs/repl.txt | 6 +-- .../random/base/minstd-shuffle/lib/factory.js | 4 +- .../base/minstd-shuffle/test/test.factory.js | 38 +++++++++---------- .../random/base/minstd-shuffle/test/test.js | 16 ++++---- .../@stdlib/random/base/minstd/README.md | 8 ++-- .../@stdlib/random/base/minstd/docs/repl.txt | 6 +-- .../@stdlib/random/base/minstd/lib/factory.js | 4 +- .../random/base/minstd/test/test.factory.js | 38 +++++++++---------- .../@stdlib/random/base/minstd/test/test.js | 16 ++++---- .../@stdlib/random/base/mt19937/README.md | 8 ++-- .../@stdlib/random/base/mt19937/docs/repl.txt | 6 +-- .../random/base/mt19937/lib/factory.js | 4 +- .../random/base/mt19937/test/test.factory.js | 38 +++++++++---------- .../@stdlib/random/base/mt19937/test/test.js | 16 ++++---- .../@stdlib/random/base/normal/README.md | 6 +-- .../@stdlib/random/base/normal/docs/repl.txt | 6 +-- .../@stdlib/random/base/normal/lib/factory.js | 6 +-- .../random/base/normal/test/test.factory.js | 6 +-- .../@stdlib/random/base/normal/test/test.js | 6 +-- 96 files changed, 391 insertions(+), 391 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/README.md b/lib/node_modules/@stdlib/random/base/README.md index 75783cc2d8ba..017fd36b0205 100644 --- a/lib/node_modules/@stdlib/random/base/README.md +++ b/lib/node_modules/@stdlib/random/base/README.md @@ -94,7 +94,7 @@ Attached to each PRNG are the following properties: - **NAME**: the generator name. - **seed**: the value used to seed the PRNG. -- **STATE**: the PRNG state. +- **state**: the PRNG state. - **STATE_SIZE**: the size of the PRNG state. - **PRNG**: the underlying pseudorandom number generator. diff --git a/lib/node_modules/@stdlib/random/base/arcsine/README.md b/lib/node_modules/@stdlib/random/base/arcsine/README.md index 01f07115a8ba..66129f63973d 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/README.md +++ b/lib/node_modules/@stdlib/random/base/arcsine/README.md @@ -154,7 +154,7 @@ for ( i = 0; i < 100; i++ ) { } ``` -#### arcsine.STATE +#### arcsine.state Writable property for getting and setting the generator state. @@ -168,7 +168,7 @@ r = arcsine( 2.0, 4.0 ); // ... // Get a copy of the current state: -var state = arcsine.STATE; +var state = arcsine.state; // returns r = arcsine( 2.0, 4.0 ); @@ -178,7 +178,7 @@ r = arcsine( 2.0, 4.0 ); // returns // Reset the state: -arcsine.STATE = state; +arcsine.state = state; // Replay the last two pseudorandom numbers: r = arcsine( 2.0, 4.0 ); diff --git a/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt b/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt index 599dd8a4718a..47d105237879 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt @@ -96,7 +96,7 @@ > var seed = {{alias}}.seed; -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -109,7 +109,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}( 2.0, 4.0 ) @@ -118,7 +118,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}( 2.0, 4.0 ) diff --git a/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js b/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js index 50d98e3f4575..48da9a69d145 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js @@ -99,7 +99,7 @@ function factory() { } setReadOnly( prng, 'NAME', 'arcsine' ); setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'STATE', { + defineProperty( prng, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -118,7 +118,7 @@ function factory() { * @returns {Uint32Array} current state */ function getState() { - return rand.STATE; + return rand.state; } /** @@ -128,7 +128,7 @@ function factory() { * @param {Uint32Array} s - generator state */ function setState( s ) { - rand.STATE = s; + rand.state = s; } /** diff --git a/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js b/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js index 0cf423d64933..aed5cfebf4ec 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js @@ -115,7 +115,7 @@ tape( 'attached to the returned function is the generator seed', function test( tape( 'attached to the returned function is the generator state', function test( t ) { var arcsine = factory(); - t.equal( isUint32Array( arcsine.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( arcsine.state ), true, 'has `state` property' ); t.end(); }); @@ -405,7 +405,7 @@ tape( 'the returned function supports setting the generator state', function tes arcsine(); } // Capture the current state: - state = arcsine.STATE; + state = arcsine.state; // Move to a future state... arr = []; @@ -413,7 +413,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( arcsine() ); } // Set the state: - arcsine.STATE = state; + arcsine.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/arcsine/test/test.js b/lib/node_modules/@stdlib/random/base/arcsine/test/test.js index 6564cfffb6b7..83bb4f470585 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/test/test.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/test/test.js @@ -54,7 +54,7 @@ tape( 'attached to the main export is the generator seed', function test( t ) { }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( arcsine.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( arcsine.state ), true, 'has `state` property' ); t.end(); }); @@ -94,7 +94,7 @@ tape( 'the function supports setting the generator state', function test( t ) { arcsine( 2.0, 4.0 ); } // Capture the current state: - state = arcsine.STATE; + state = arcsine.state; // Move to a future state... arr = []; @@ -102,7 +102,7 @@ tape( 'the function supports setting the generator state', function test( t ) { arr.push( arcsine( 2.0, 4.0 ) ); } // Set the state: - arcsine.STATE = state; + arcsine.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/README.md b/lib/node_modules/@stdlib/random/base/bernoulli/README.md index bd8d6a26acdd..cf6b91e1b5a2 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/README.md +++ b/lib/node_modules/@stdlib/random/base/bernoulli/README.md @@ -157,7 +157,7 @@ for ( i = 0; i < 100; i++ ) { } ``` -#### bernoulli.STATE +#### bernoulli.state Writable property for getting and setting the generator state. @@ -171,7 +171,7 @@ r = bernoulli( 0.3 ); // ... // Get a copy of the current state: -var state = bernoulli.STATE; +var state = bernoulli.state; // returns r = bernoulli( 0.3 ); @@ -181,7 +181,7 @@ r = bernoulli( 0.3 ); // returns // Reset the state: -bernoulli.STATE = state; +bernoulli.state = state; // Replay the last two pseudorandom numbers: r = bernoulli( 0.3 ); diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt b/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt index 132905dc16fc..d49c5441e1b7 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt @@ -83,7 +83,7 @@ > var seed = {{alias}}.seed; -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -96,7 +96,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}( 0.3 ) @@ -105,7 +105,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}( 0.3 ) diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js b/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js index 1ea3fab17679..329d0984ec82 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js @@ -94,7 +94,7 @@ function factory() { } setReadOnly( prng, 'NAME', 'bernoulli' ); setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'STATE', { + defineProperty( prng, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -113,7 +113,7 @@ function factory() { * @returns {Uint32Array} current state */ function getState() { - return rand.STATE; + return rand.state; } /** @@ -123,7 +123,7 @@ function factory() { * @param {Uint32Array} s - generator state */ function setState( s ) { - rand.STATE = s; + rand.state = s; } /** diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js index da02dd1d31ef..7c82546f75bf 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js @@ -116,7 +116,7 @@ tape( 'attached to the returned function is the generator seed', function test( tape( 'attached to the returned function is the generator state', function test( t ) { var bernoulli = factory(); - t.equal( isUint32Array( bernoulli.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( bernoulli.state ), true, 'has `state` property' ); t.end(); }); @@ -371,7 +371,7 @@ tape( 'the returned function supports setting the generator state', function tes bernoulli(); } // Capture the current state: - state = bernoulli.STATE; + state = bernoulli.state; // Move to a future state... arr = []; @@ -379,7 +379,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( bernoulli() ); } // Set the state: - bernoulli.STATE = state; + bernoulli.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js index 03bb72043bb5..26896966e4a6 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js @@ -55,7 +55,7 @@ tape( 'attached to the main export is the generator seed', function test( t ) { }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( bernoulli.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( bernoulli.state ), true, 'has `state` property' ); t.end(); }); @@ -89,7 +89,7 @@ tape( 'the function supports setting the generator state', function test( t ) { bernoulli( 0.3 ); } // Capture the current state: - state = bernoulli.STATE; + state = bernoulli.state; // Move to a future state... arr = []; @@ -97,7 +97,7 @@ tape( 'the function supports setting the generator state', function test( t ) { arr.push( bernoulli( 0.3 ) ); } // Set the state: - bernoulli.STATE = state; + bernoulli.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/beta/README.md b/lib/node_modules/@stdlib/random/base/beta/README.md index 1122c9ec903d..88e001a924b8 100644 --- a/lib/node_modules/@stdlib/random/base/beta/README.md +++ b/lib/node_modules/@stdlib/random/base/beta/README.md @@ -161,7 +161,7 @@ for ( i = 0; i < 100; i++ ) { } ``` -#### beta.STATE +#### beta.state Writable property for getting and setting the generator state. @@ -175,7 +175,7 @@ r = beta( 2.0, 5.0 ); // ... // Get a copy of the current state: -var state = beta.STATE; +var state = beta.state; // returns r = beta( 2.0, 5.0 ); @@ -185,7 +185,7 @@ r = beta( 2.0, 5.0 ); // returns // Reset the state: -beta.STATE = state; +beta.state = state; // Replay the last two pseudorandom numbers: r = beta( 2.0, 5.0 ); diff --git a/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt b/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt index ec30d03ab3aa..03dd46c5c60e 100644 --- a/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt @@ -91,7 +91,7 @@ > var seed = {{alias}}.seed; -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -104,7 +104,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}( 2.0, 5.0 ) @@ -113,7 +113,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}( 2.0, 5.0 ) diff --git a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js index eb3d10852e5f..85c59c4b1ea2 100644 --- a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js @@ -116,7 +116,7 @@ function factory() { } setReadOnly( prng, 'NAME', 'beta' ); setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'STATE', { + defineProperty( prng, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -139,8 +139,8 @@ function factory() { var s1; var s2; - s1 = rand.STATE; - s2 = rnorm.STATE; + s1 = rand.state; + s2 = rnorm.state; out = new Uint32Array( N+M ); gcopy( N, s1, 1, 0, out, 1, 0 ); @@ -168,8 +168,8 @@ function factory() { } buf = s.buffer; o = s.byteOffset; - rand.STATE = new Uint32Array( buf, o, N ); - rnorm.STATE = new Uint32Array( buf, o+(N*s.BYTES_PER_ELEMENT), M ); + rand.state = new Uint32Array( buf, o, N ); + rnorm.state = new Uint32Array( buf, o+(N*s.BYTES_PER_ELEMENT), M ); } /** diff --git a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js index 3df78acbbff6..d4e4a5ab8fd7 100644 --- a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js @@ -176,7 +176,7 @@ tape( 'attached to the returned function is the generator seed', function test( tape( 'attached to the return function is the generator state', function test( t ) { var beta = factory(); - t.equal( isUint32Array( beta.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( beta.state ), true, 'has `state` property' ); t.end(); }); @@ -192,7 +192,7 @@ tape( 'attached to the returned function is the generator state size', function t.end(); }); -tape( 'if the `STATE` property is set to a value other than a Uint32Array, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to a value other than a Uint32Array, an error is thrown', function test( t ) { var values; var beta; var i; @@ -218,12 +218,12 @@ tape( 'if the `STATE` property is set to a value other than a Uint32Array, an er function badValue( value ) { return function badValue() { - beta.STATE = value; + beta.state = value; }; } }); -tape( 'if the `STATE` property is set to an Uint32Array having an unexpected length, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to an Uint32Array having an unexpected length, an error is thrown', function test( t ) { var values; var beta; var i; @@ -242,7 +242,7 @@ tape( 'if the `STATE` property is set to an Uint32Array having an unexpected len function badValue( value ) { return function badValue() { - beta.STATE = value; + beta.state = value; }; } }); @@ -581,7 +581,7 @@ tape( 'the returned function supports setting the generator state (alpha,beta <= beta(); } // Capture the current state: - state = beta.STATE; + state = beta.state; // Move to a future state... arr = []; @@ -589,7 +589,7 @@ tape( 'the returned function supports setting the generator state (alpha,beta <= arr.push( beta() ); } // Set the state: - beta.STATE = state; + beta.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -611,7 +611,7 @@ tape( 'the returned function supports setting the generator state (alpha != beta beta(); } // Capture the current state: - state = beta.STATE; + state = beta.state; // Move to a future state... arr = []; @@ -619,7 +619,7 @@ tape( 'the returned function supports setting the generator state (alpha != beta arr.push( beta() ); } // Set the state: - beta.STATE = state; + beta.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -641,7 +641,7 @@ tape( 'the returned function supports setting the generator state (alpha == beta beta(); } // Capture the current state: - state = beta.STATE; + state = beta.state; // Move to a future state... arr = []; @@ -649,7 +649,7 @@ tape( 'the returned function supports setting the generator state (alpha == beta arr.push( beta() ); } // Set the state: - beta.STATE = state; + beta.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/beta/test/test.js b/lib/node_modules/@stdlib/random/base/beta/test/test.js index 6415d643bd87..a19d34402b2a 100644 --- a/lib/node_modules/@stdlib/random/base/beta/test/test.js +++ b/lib/node_modules/@stdlib/random/base/beta/test/test.js @@ -54,7 +54,7 @@ tape( 'attached to the main export is the generator seed', function test( t ) { }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( beta.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( beta.state ), true, 'has `state` property' ); t.end(); }); @@ -89,7 +89,7 @@ tape( 'the function supports setting the generator state (alpha = beta > 1.5)', beta( 2.0, 2.0 ); } // Capture the current state: - state = beta.STATE; + state = beta.state; // Move to a future state... arr = []; @@ -97,7 +97,7 @@ tape( 'the function supports setting the generator state (alpha = beta > 1.5)', arr.push( beta( 2.0, 2.0 ) ); } // Set the state: - beta.STATE = state; + beta.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -116,7 +116,7 @@ tape( 'the function supports setting the generator state (alpha != beta > 1.0)', beta( 2.0, 5.0 ); } // Capture the current state: - state = beta.STATE; + state = beta.state; // Move to a future state... arr = []; @@ -124,7 +124,7 @@ tape( 'the function supports setting the generator state (alpha != beta > 1.0)', arr.push( beta( 2.0, 5.0 ) ); } // Set the state: - beta.STATE = state; + beta.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -143,7 +143,7 @@ tape( 'the function supports setting the generator state (alpha,beta <= 1.0)', f beta( 0.5, 1.0 ); } // Capture the current state: - state = beta.STATE; + state = beta.state; // Move to a future state... arr = []; @@ -151,7 +151,7 @@ tape( 'the function supports setting the generator state (alpha,beta <= 1.0)', f arr.push( beta( 0.5, 1.0 ) ); } // Set the state: - beta.STATE = state; + beta.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/betaprime/README.md b/lib/node_modules/@stdlib/random/base/betaprime/README.md index 1a45f8016b34..ab2849706178 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/README.md +++ b/lib/node_modules/@stdlib/random/base/betaprime/README.md @@ -161,7 +161,7 @@ for ( i = 0; i < 100; i++ ) { } ``` -#### betaprime.STATE +#### betaprime.state Writable property for getting and setting the generator state. @@ -175,7 +175,7 @@ r = betaprime( 2.0, 5.0 ); // ... // Get a copy of the current state: -var state = betaprime.STATE; +var state = betaprime.state; // returns r = betaprime( 2.0, 5.0 ); @@ -185,7 +185,7 @@ r = betaprime( 2.0, 5.0 ); // returns // Reset the state: -betaprime.STATE = state; +betaprime.state = state; // Replay the last two pseudorandom numbers: r = betaprime( 2.0, 5.0 ); diff --git a/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt b/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt index 0ca7f18579fd..a3e921beeb0e 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt @@ -91,7 +91,7 @@ > var seed = {{alias}}.seed; -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -104,7 +104,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}( 2.0, 5.0 ) @@ -113,7 +113,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}( 2.0, 5.0 ) diff --git a/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js b/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js index 7e9e2a4b94dc..2222df782875 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js @@ -95,7 +95,7 @@ function factory() { } setReadOnly( prng, 'NAME', 'betaprime' ); setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'STATE', { + defineProperty( prng, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -114,7 +114,7 @@ function factory() { * @returns {Uint32Array} current state */ function getState() { - return rand.STATE; + return rand.state; } /** @@ -124,7 +124,7 @@ function factory() { * @param {Uint32Array} s - generator state */ function setState( s ) { - rand.STATE = s; + rand.state = s; } /** diff --git a/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js b/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js index d63ccdcf3fda..622a1738a457 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js @@ -175,7 +175,7 @@ tape( 'attached to the returned function is the generator seed', function test( tape( 'attached to the returned function is the generator state', function test( t ) { var betaprime = factory(); - t.equal( isUint32Array( betaprime.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( betaprime.state ), true, 'has `state` property' ); t.end(); }); @@ -454,7 +454,7 @@ tape( 'the returned function supports setting the generator state', function tes betaprime(); } // Capture the current state: - state = betaprime.STATE; + state = betaprime.state; // Move to a future state... arr = []; @@ -462,7 +462,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( betaprime() ); } // Set the state: - betaprime.STATE = state; + betaprime.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/betaprime/test/test.js b/lib/node_modules/@stdlib/random/base/betaprime/test/test.js index 380efecf1eb0..6ed56963d570 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/test/test.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/test/test.js @@ -54,7 +54,7 @@ tape( 'attached to the main export is the generator seed', function test( t ) { }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( betaprime.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( betaprime.state ), true, 'has `state` property' ); t.end(); }); @@ -89,7 +89,7 @@ tape( 'the function supports setting the generator state', function test( t ) { betaprime( 3.14, 1.25 ); } // Capture the current state: - state = betaprime.STATE; + state = betaprime.state; // Move to a future state... arr = []; @@ -97,7 +97,7 @@ tape( 'the function supports setting the generator state', function test( t ) { arr.push( betaprime( 3.14, 1.25 ) ); } // Set the state: - betaprime.STATE = state; + betaprime.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/binomial/README.md b/lib/node_modules/@stdlib/random/base/binomial/README.md index 496fe2188c0f..cd297614ac4b 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/README.md +++ b/lib/node_modules/@stdlib/random/base/binomial/README.md @@ -161,7 +161,7 @@ for ( i = 0; i < 100; i++ ) { } ``` -#### binomial.STATE +#### binomial.state Writable property for getting and setting the generator state. @@ -175,7 +175,7 @@ r = binomial( 20, 0.8 ); // ... // Get a copy of the current state: -var state = binomial.STATE; +var state = binomial.state; // returns r = binomial( 20, 0.8 ); @@ -185,7 +185,7 @@ r = binomial( 20, 0.8 ); // returns // Reset the state: -binomial.STATE = state; +binomial.state = state; // Replay the last two pseudorandom numbers: r = binomial( 20, 0.8 ); diff --git a/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt b/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt index 21169e4c2cdb..dd739b776d4d 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt @@ -92,7 +92,7 @@ > var seed = {{alias}}.seed; -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -105,7 +105,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}( 20, 0.8 ) @@ -114,7 +114,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}( 20, 0.8 ) diff --git a/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js b/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js index ab3675c30115..d794154fe7be 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js @@ -105,7 +105,7 @@ function factory() { } setReadOnly( prng, 'NAME', 'binomial' ); setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'STATE', { + defineProperty( prng, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -124,7 +124,7 @@ function factory() { * @returns {Uint32Array} current state */ function getState() { - return rand.STATE; + return rand.state; } /** @@ -134,7 +134,7 @@ function factory() { * @param {Uint32Array} s - generator state */ function setState( s ) { - rand.STATE = s; + rand.state = s; } /** diff --git a/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js b/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js index a7661eaf0521..39e6b981a65b 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js @@ -165,7 +165,7 @@ tape( 'attached to the returned function is the generator seed', function test( tape( 'attached to the returned function is the generator state', function test( t ) { var binomial = factory(); - t.equal( isUint32Array( binomial.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( binomial.state ), true, 'has `state` property' ); t.end(); }); @@ -546,7 +546,7 @@ tape( 'the returned function supports setting the generator state', function tes binomial(); } // Capture the current state: - state = binomial.STATE; + state = binomial.state; // Move to a future state... arr = []; @@ -554,7 +554,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( binomial() ); } // Set the state: - binomial.STATE = state; + binomial.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -576,7 +576,7 @@ tape( 'the returned function supports setting the generator state', function tes binomial(); } // Capture the current state: - state = binomial.STATE; + state = binomial.state; // Move to a future state... arr = []; @@ -584,7 +584,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( binomial() ); } // Set the state: - binomial.STATE = state; + binomial.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/binomial/test/test.js b/lib/node_modules/@stdlib/random/base/binomial/test/test.js index 681aa6f9d47e..e94c9541519a 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/test/test.js +++ b/lib/node_modules/@stdlib/random/base/binomial/test/test.js @@ -57,7 +57,7 @@ tape( 'attached to the main export is the generator seed', function test( t ) { }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( binomial.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( binomial.state ), true, 'has `state` property' ); t.end(); }); @@ -100,7 +100,7 @@ tape( 'the function supports setting the generator state', function test( t ) { binomial( 20, 0.67 ); } // Capture the current state: - state = binomial.STATE; + state = binomial.state; // Move to a future state... arr = []; @@ -108,7 +108,7 @@ tape( 'the function supports setting the generator state', function test( t ) { arr.push( binomial( 20, 0.67 ) ); } // Set the state: - binomial.STATE = state; + binomial.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -127,7 +127,7 @@ tape( 'the function supports setting the generator state', function test( t ) { binomial( 8, 0.39 ); } // Capture the current state: - state = binomial.STATE; + state = binomial.state; // Move to a future state... arr = []; @@ -135,7 +135,7 @@ tape( 'the function supports setting the generator state', function test( t ) { arr.push( binomial( 8, 0.39 ) ); } // Set the state: - binomial.STATE = state; + binomial.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/box-muller/README.md b/lib/node_modules/@stdlib/random/base/box-muller/README.md index cb6bffe7b30d..848501f95930 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/README.md +++ b/lib/node_modules/@stdlib/random/base/box-muller/README.md @@ -184,7 +184,7 @@ var max = rand.MAX; // returns null ``` -#### randn.STATE +#### randn.state Writable property for getting and setting the generator state. @@ -198,7 +198,7 @@ r = randn(); // ... // Get a copy of the current state: -var state = randn.STATE; +var state = randn.state; // returns r = randn(); @@ -208,7 +208,7 @@ r = randn(); // returns // Reset the state: -randn.STATE = state; +randn.state = state; // Replay the last two pseudorandom numbers: r = randn(); @@ -229,7 +229,7 @@ var rand = randn.factory({ 'prng': Math.random }); -var state = rand.STATE; +var state = rand.state; // returns null ``` diff --git a/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt b/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt index 5659edb33b88..5eb49575604e 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt @@ -66,7 +66,7 @@ > var seed = {{alias}}.seed; -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -79,7 +79,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}() @@ -88,7 +88,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}() diff --git a/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js b/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js index 312bebfa93b6..75adcaea61ac 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js @@ -101,7 +101,7 @@ function factory( options ) { // If we are provided an "external" PRNG, we don't support getting or setting PRNG state, as we'd need to check for compatible state value types, etc, entailing considerable complexity. Furthermore, if provided a PRNG, presumably the user can simply get and set the state independently of this PRNG. if ( options && options.prng ) { - defineProperty( randn, 'STATE', { + defineProperty( randn, 'state', { 'configurable': false, 'enumerable': true, 'get': constantFunction( null ), @@ -110,7 +110,7 @@ function factory( options ) { setReadOnly( randn, 'STATE_LENGTH', null ); setReadOnly( randn, 'STATE_SIZE', null ); } else { - defineProperty( randn, 'STATE', { + defineProperty( randn, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -145,7 +145,7 @@ function factory( options ) { * @returns {Uint32Array} current state */ function getState() { - return rand.STATE; + return rand.state; } /** @@ -155,7 +155,7 @@ function factory( options ) { * @param {Uint32Array} s - generator state */ function setState( s ) { - rand.STATE = s; + rand.state = s; } } diff --git a/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js b/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js index db88bb470b70..52b9a8721d57 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js @@ -200,12 +200,12 @@ tape( 'attached to the returned function is the maximum possible generated numbe tape( 'attached to the returned function is the generator state', function test( t ) { var randn = factory(); - t.equal( isUint32Array( randn.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( randn.state ), true, 'has `state` property' ); randn = factory({ 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math }); - t.equal( randn.STATE, null, 'equal to `null`' ); + t.equal( randn.state, null, 'equal to `null`' ); t.end(); }); @@ -331,7 +331,7 @@ tape( 'the returned function supports setting the generator state', function tes randn(); } // Capture the current state: - state = randn.STATE; + state = randn.state; // Move to a future state... arr = []; @@ -339,7 +339,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( randn() ); } // Set the state: - randn.STATE = state; + randn.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/box-muller/test/test.js b/lib/node_modules/@stdlib/random/base/box-muller/test/test.js index 185c7b79fda4..20505997e43a 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/test/test.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/test/test.js @@ -66,7 +66,7 @@ tape( 'attached to the main export is the maximum possible generated number', fu }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( randn.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( randn.state ), true, 'has `state` property' ); t.end(); }); @@ -100,7 +100,7 @@ tape( 'the function supports setting the generator state', function test( t ) { randn(); } // Capture the current state: - state = randn.STATE; + state = randn.state; // Move to a future state... arr = []; @@ -108,7 +108,7 @@ tape( 'the function supports setting the generator state', function test( t ) { arr.push( randn() ); } // Set the state: - randn.STATE = state; + randn.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/cauchy/README.md b/lib/node_modules/@stdlib/random/base/cauchy/README.md index f78313504569..40c71a3c6809 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/README.md +++ b/lib/node_modules/@stdlib/random/base/cauchy/README.md @@ -154,7 +154,7 @@ for ( i = 0; i < 100; i++ ) { } ``` -#### cauchy.STATE +#### cauchy.state Writable property for getting and setting the generator state. @@ -168,7 +168,7 @@ r = cauchy( 2.0, 5.0 ); // ... // Get a copy of the current state: -var state = cauchy.STATE; +var state = cauchy.state; // returns r = cauchy( 2.0, 5.0 ); @@ -178,7 +178,7 @@ r = cauchy( 2.0, 5.0 ); // returns // Reset the state: -cauchy.STATE = state; +cauchy.state = state; // Replay the last two pseudorandom numbers: r = cauchy( 2.0, 5.0 ); diff --git a/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt b/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt index d9d3cecf1583..5b360e906b09 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt @@ -89,7 +89,7 @@ > var seed = {{alias}}.seed; -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -102,7 +102,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}( 2.0, 5.0 ) @@ -111,7 +111,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}( 2.0, 5.0 ) diff --git a/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js b/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js index b0ded7e3e111..766976281497 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js @@ -95,7 +95,7 @@ function factory() { } setReadOnly( prng, 'NAME', 'cauchy' ); setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'STATE', { + defineProperty( prng, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -114,7 +114,7 @@ function factory() { * @returns {Uint32Array} current state */ function getState() { - return rand.STATE; + return rand.state; } /** @@ -124,7 +124,7 @@ function factory() { * @param {Uint32Array} s - generator state */ function setState( s ) { - rand.STATE = s; + rand.state = s; } /** diff --git a/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js b/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js index cc0de329ae84..6f1137f64713 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js @@ -116,7 +116,7 @@ tape( 'attached to the returned function is the generator seed', function test( tape( 'attached to the returned function is the generator state', function test( t ) { var cauchy = factory(); - t.equal( isUint32Array( cauchy.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( cauchy.state ), true, 'has `state` property' ); t.end(); }); @@ -378,7 +378,7 @@ tape( 'the returned function supports setting the generator state', function tes cauchy(); } // Capture the current state: - state = cauchy.STATE; + state = cauchy.state; // Move to a future state... arr = []; @@ -386,7 +386,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( cauchy() ); } // Set the state: - cauchy.STATE = state; + cauchy.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/cauchy/test/test.js b/lib/node_modules/@stdlib/random/base/cauchy/test/test.js index 9c7211eee7c3..0934fca6bbd6 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/test/test.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/test/test.js @@ -54,7 +54,7 @@ tape( 'attached to the main export is the generator seed', function test( t ) { }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( cauchy.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( cauchy.state ), true, 'has `state` property' ); t.end(); }); @@ -88,7 +88,7 @@ tape( 'the function supports setting the generator state', function test( t ) { cauchy( 2.0, 1.0 ); } // Capture the current state: - state = cauchy.STATE; + state = cauchy.state; // Move to a future state... arr = []; @@ -96,7 +96,7 @@ tape( 'the function supports setting the generator state', function test( t ) { arr.push( cauchy( 2.0, 1.0 ) ); } // Set the state: - cauchy.STATE = state; + cauchy.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/chi/README.md b/lib/node_modules/@stdlib/random/base/chi/README.md index e6b3849f365c..994e27ad0b62 100644 --- a/lib/node_modules/@stdlib/random/base/chi/README.md +++ b/lib/node_modules/@stdlib/random/base/chi/README.md @@ -150,7 +150,7 @@ for ( i = 0; i < 100; i++ ) { } ``` -#### chi.STATE +#### chi.state Writable property for getting and setting the generator state. @@ -164,7 +164,7 @@ r = chi( 2 ); // ... // Get a copy of the current state: -var state = chi.STATE; +var state = chi.state; // returns r = chi( 2 ); @@ -174,7 +174,7 @@ r = chi( 2 ); // returns // Reset the state: -chi.STATE = state; +chi.state = state; // Replay the last two pseudorandom numbers: r = chi( 2 ); diff --git a/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt b/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt index fd0bffa15020..fca6c862835c 100644 --- a/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt @@ -83,7 +83,7 @@ > var seed = {{alias}}.seed; -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -96,7 +96,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}( 2 ) @@ -105,7 +105,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}( 2 ) diff --git a/lib/node_modules/@stdlib/random/base/chi/lib/factory.js b/lib/node_modules/@stdlib/random/base/chi/lib/factory.js index a6846ff2f2df..b8c1905c310f 100644 --- a/lib/node_modules/@stdlib/random/base/chi/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/chi/lib/factory.js @@ -87,7 +87,7 @@ function factory() { } setReadOnly( prng, 'NAME', 'chi' ); setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'STATE', { + defineProperty( prng, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -106,7 +106,7 @@ function factory() { * @returns {Uint32Array} current state */ function getState() { - return rand.STATE; + return rand.state; } /** @@ -116,7 +116,7 @@ function factory() { * @param {Uint32Array} s - generator state */ function setState( s ) { - rand.STATE = s; + rand.state = s; } /** diff --git a/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js b/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js index 1d7c52c6736c..5afc9183c01d 100644 --- a/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js @@ -116,7 +116,7 @@ tape( 'attached to the returned function is the generator seed', function test( tape( 'attached to the returned function is the generator state', function test( t ) { var chi = factory(); - t.equal( isUint32Array( chi.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( chi.state ), true, 'has `state` property' ); t.end(); }); @@ -357,7 +357,7 @@ tape( 'the returned function supports setting the generator state', function tes chi(); } // Capture the current state: - state = chi.STATE; + state = chi.state; // Move to a future state... arr = []; @@ -365,7 +365,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( chi() ); } // Set the state: - chi.STATE = state; + chi.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/chi/test/test.js b/lib/node_modules/@stdlib/random/base/chi/test/test.js index 8e666c14dee7..806bce92907b 100644 --- a/lib/node_modules/@stdlib/random/base/chi/test/test.js +++ b/lib/node_modules/@stdlib/random/base/chi/test/test.js @@ -54,7 +54,7 @@ tape( 'attached to the main export is the generator seed', function test( t ) { }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( chi.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( chi.state ), true, 'has `state` property' ); t.end(); }); @@ -88,7 +88,7 @@ tape( 'the function supports setting the generator state', function test( t ) { chi( 4 ); } // Capture the current state: - state = chi.STATE; + state = chi.state; // Move to a future state... arr = []; @@ -96,7 +96,7 @@ tape( 'the function supports setting the generator state', function test( t ) { arr.push( chi( 4 ) ); } // Set the state: - chi.STATE = state; + chi.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/chisquare/README.md b/lib/node_modules/@stdlib/random/base/chisquare/README.md index ff2aca10933b..9bdcedf312c7 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/README.md +++ b/lib/node_modules/@stdlib/random/base/chisquare/README.md @@ -150,7 +150,7 @@ for ( i = 0; i < 100; i++ ) { } ``` -#### chisquare.STATE +#### chisquare.state Writable property for getting and setting the generator state. @@ -164,7 +164,7 @@ r = chisquare( 2 ); // ... // Get a copy of the current state: -var state = chisquare.STATE; +var state = chisquare.state; // returns r = chisquare( 2 ); @@ -174,7 +174,7 @@ r = chisquare( 2 ); // returns // Reset the state: -chisquare.STATE = state; +chisquare.state = state; // Replay the last two pseudorandom numbers: r = chisquare( 2 ); diff --git a/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt b/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt index 709c6d3b9640..dd0456a5fe42 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt @@ -83,7 +83,7 @@ > var seed = {{alias}}.seed; -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -96,7 +96,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}( 2 ) @@ -105,7 +105,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}( 2 ) diff --git a/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js b/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js index 61c4a25514f3..135001aeb16d 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js @@ -87,7 +87,7 @@ function factory() { } setReadOnly( prng, 'NAME', 'chisquare' ); setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'STATE', { + defineProperty( prng, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -106,7 +106,7 @@ function factory() { * @returns {Uint32Array} current state */ function getState() { - return rand.STATE; + return rand.state; } /** @@ -116,7 +116,7 @@ function factory() { * @param {Uint32Array} s - generator state */ function setState( s ) { - rand.STATE = s; + rand.state = s; } /** diff --git a/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js b/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js index 5e4327a2c644..e838f4796a43 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js @@ -116,7 +116,7 @@ tape( 'attached to the returned function is the generator seed', function test( tape( 'attached to the returned function is the generator state', function test( t ) { var chisquare = factory(); - t.equal( isUint32Array( chisquare.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( chisquare.state ), true, 'has `state` property' ); t.end(); }); @@ -357,7 +357,7 @@ tape( 'the returned function supports setting the generator state', function tes chisquare(); } // Capture the current state: - state = chisquare.STATE; + state = chisquare.state; // Move to a future state... arr = []; @@ -365,7 +365,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( chisquare() ); } // Set the state: - chisquare.STATE = state; + chisquare.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/chisquare/test/test.js b/lib/node_modules/@stdlib/random/base/chisquare/test/test.js index 7cf59b970f9c..006a812b92b3 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/test/test.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/test/test.js @@ -54,7 +54,7 @@ tape( 'attached to the main export is the generator seed', function test( t ) { }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( chisquare.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( chisquare.state ), true, 'has `state` property' ); t.end(); }); @@ -88,7 +88,7 @@ tape( 'the function supports setting the generator state', function test( t ) { chisquare( 2 ); } // Capture the current state: - state = chisquare.STATE; + state = chisquare.state; // Move to a future state... arr = []; @@ -96,7 +96,7 @@ tape( 'the function supports setting the generator state', function test( t ) { arr.push( chisquare( 2 ) ); } // Set the state: - chisquare.STATE = state; + chisquare.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/cosine/README.md b/lib/node_modules/@stdlib/random/base/cosine/README.md index 88c4268d6af2..09c2e8361037 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/README.md +++ b/lib/node_modules/@stdlib/random/base/cosine/README.md @@ -153,7 +153,7 @@ for ( i = 0; i < 100; i++ ) { } ``` -#### cosine.STATE +#### cosine.state Writable property for getting and setting the generator state. @@ -167,7 +167,7 @@ r = cosine( 2.0, 5.0 ); // ... // Get a copy of the current state: -var state = cosine.STATE; +var state = cosine.state; // returns r = cosine( 2.0, 5.0 ); @@ -177,7 +177,7 @@ r = cosine( 2.0, 5.0 ); // returns // Reset the state: -cosine.STATE = state; +cosine.state = state; // Replay the last two pseudorandom numbers: r = cosine( 2.0, 5.0 ); diff --git a/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt b/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt index a21ffd9c74a1..c880b0acf6f2 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt @@ -89,7 +89,7 @@ > var seed = {{alias}}.seed; -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -102,7 +102,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}( 2.0, 5.0 ) @@ -111,7 +111,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}( 2.0, 5.0 ) diff --git a/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js b/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js index 21cb6d1372c8..014cf7faca36 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js @@ -96,7 +96,7 @@ function factory() { } setReadOnly( prng, 'NAME', 'cosine' ); setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'STATE', { + defineProperty( prng, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -115,7 +115,7 @@ function factory() { * @returns {Uint32Array} current state */ function getState() { - return rand.STATE; + return rand.state; } /** @@ -125,7 +125,7 @@ function factory() { * @param {Uint32Array} s - generator state */ function setState( s ) { - rand.STATE = s; + rand.state = s; } /** diff --git a/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js b/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js index 443c870f058d..4e5ac24d9fb1 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js @@ -116,7 +116,7 @@ tape( 'attached to the returned function is the generator seed', function test( tape( 'attached to the returned function is the generator state', function test( t ) { var cosine = factory(); - t.equal( isUint32Array( cosine.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( cosine.state ), true, 'has `state` property' ); t.end(); }); @@ -378,7 +378,7 @@ tape( 'the returned function supports setting the generator state', function tes cosine(); } // Capture the current state: - state = cosine.STATE; + state = cosine.state; // Move to a future state... arr = []; @@ -386,7 +386,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( cosine() ); } // Set the state: - cosine.STATE = state; + cosine.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/cosine/test/test.js b/lib/node_modules/@stdlib/random/base/cosine/test/test.js index 97f0b00244d2..022f26733040 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/test/test.js +++ b/lib/node_modules/@stdlib/random/base/cosine/test/test.js @@ -54,7 +54,7 @@ tape( 'attached to the main export is the generator seed', function test( t ) { }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( cosine.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( cosine.state ), true, 'has `state` property' ); t.end(); }); @@ -88,7 +88,7 @@ tape( 'the function supports setting the generator state', function test( t ) { cosine( 2.0, 1.0 ); } // Capture the current state: - state = cosine.STATE; + state = cosine.state; // Move to a future state... arr = []; @@ -96,7 +96,7 @@ tape( 'the function supports setting the generator state', function test( t ) { arr.push( cosine( 2.0, 1.0 ) ); } // Set the state: - cosine.STATE = state; + cosine.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md b/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md index 0b516e5d1aec..c4d64096a3d2 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md @@ -154,7 +154,7 @@ for ( i = 0; i < 100; i++ ) { } ``` -#### discreteUniform.STATE +#### discreteUniform.state Writable property for getting and setting the generator state. @@ -168,7 +168,7 @@ r = discreteUniform( -10, 10 ); // ... // Get a copy of the current state: -var state = discreteUniform.STATE; +var state = discreteUniform.state; // returns r = discreteUniform( -10, 10 ); @@ -178,7 +178,7 @@ r = discreteUniform( -10, 10 ); // returns // Reset the state: -discreteUniform.STATE = state; +discreteUniform.state = state; // Replay the last two pseudorandom numbers: r = discreteUniform( -10, 10 ); diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt b/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt index 472671e890ff..db2c25d816d0 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt @@ -91,7 +91,7 @@ > var seed = {{alias}}.seed; -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -104,7 +104,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}( 2, 50 ) @@ -113,7 +113,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}( 2, 50 ) diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js index e00397692e38..f9452812920f 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js @@ -98,7 +98,7 @@ function factory() { } setReadOnly( prng, 'NAME', 'discrete-uniform' ); setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'STATE', { + defineProperty( prng, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -117,7 +117,7 @@ function factory() { * @returns {Uint32Array} current state */ function getState() { - return rand.STATE; + return rand.state; } /** @@ -127,7 +127,7 @@ function factory() { * @param {Uint32Array} s - generator state */ function setState( s ) { - rand.STATE = s; + rand.state = s; } /** diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js index cfccf453c3c7..8e6ccd310030 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js @@ -118,7 +118,7 @@ tape( 'attached to the returned function is the generator seed', function test( tape( 'attached to the returned function is the generator state', function test( t ) { var discreteUniform = factory(); - t.equal( isUint32Array( discreteUniform.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( discreteUniform.state ), true, 'has `state` property' ); t.end(); }); @@ -499,7 +499,7 @@ tape( 'the returned function supports setting the generator state', function tes discreteUniform(); } // Capture the current state: - state = discreteUniform.STATE; + state = discreteUniform.state; // Move to a future state... arr = []; @@ -507,7 +507,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( discreteUniform() ); } // Set the state: - discreteUniform.STATE = state; + discreteUniform.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js index 57a2bbd8d87f..3375434197ba 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js @@ -55,7 +55,7 @@ tape( 'attached to the main export is the generator seed', function test( t ) { }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( discreteUniform.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( discreteUniform.state ), true, 'has `state` property' ); t.end(); }); @@ -96,7 +96,7 @@ tape( 'the function supports setting the generator state', function test( t ) { discreteUniform( -10, 10 ); } // Capture the current state: - state = discreteUniform.STATE; + state = discreteUniform.state; // Move to a future state... arr = []; @@ -104,7 +104,7 @@ tape( 'the function supports setting the generator state', function test( t ) { arr.push( discreteUniform( -10, 10 ) ); } // Set the state: - discreteUniform.STATE = state; + discreteUniform.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/erlang/README.md b/lib/node_modules/@stdlib/random/base/erlang/README.md index 0698f58368c1..6e7f59fd1c3b 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/README.md +++ b/lib/node_modules/@stdlib/random/base/erlang/README.md @@ -165,7 +165,7 @@ for ( i = 0; i < 100; i++ ) { } ``` -#### erlang.STATE +#### erlang.state Writable property for getting and setting the generator state. @@ -179,7 +179,7 @@ r = erlang( 2, 4.0 ); // ... // Get a copy of the current state: -var state = erlang.STATE; +var state = erlang.state; // returns r = erlang( 2, 4.0 ); @@ -189,7 +189,7 @@ r = erlang( 2, 4.0 ); // returns // Reset the state: -erlang.STATE = state; +erlang.state = state; // Replay the last two pseudorandom numbers: r = erlang( 2, 4.0 ); diff --git a/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt b/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt index 7b141dd9a53c..26569559ed18 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt @@ -91,7 +91,7 @@ > var seed = {{alias}}.seed; -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -104,7 +104,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}( 2, 5.0 ) @@ -113,7 +113,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}( 2, 5.0 ) diff --git a/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js b/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js index 345ffb5a06a1..d17dd3f43744 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js @@ -98,7 +98,7 @@ function factory() { } setReadOnly( prng, 'NAME', 'erlang' ); setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'STATE', { + defineProperty( prng, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -117,7 +117,7 @@ function factory() { * @returns {Uint32Array} current state */ function getState() { - return rand.STATE; + return rand.state; } /** @@ -127,7 +127,7 @@ function factory() { * @param {Uint32Array} s - generator state */ function setState( s ) { - rand.STATE = s; + rand.state = s; } /** diff --git a/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js b/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js index 3f8f62c7f380..311e0bfa16b9 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js @@ -116,7 +116,7 @@ tape( 'attached to the returned function is the generator seed', function test( tape( 'attached to the returned function is the generator state', function test( t ) { var erlang = factory(); - t.equal( isUint32Array( erlang.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( erlang.state ), true, 'has `state` property' ); t.end(); }); @@ -396,7 +396,7 @@ tape( 'the returned function supports setting the generator state', function tes erlang(); } // Capture the current state: - state = erlang.STATE; + state = erlang.state; // Move to a future state... arr = []; @@ -404,7 +404,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( erlang() ); } // Set the state: - erlang.STATE = state; + erlang.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/erlang/test/test.js b/lib/node_modules/@stdlib/random/base/erlang/test/test.js index bd8a5fa85a70..60977fba1dce 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/test/test.js +++ b/lib/node_modules/@stdlib/random/base/erlang/test/test.js @@ -54,7 +54,7 @@ tape( 'attached to the main export is the generator seed', function test( t ) { }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( erlang.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( erlang.state ), true, 'has `state` property' ); t.end(); }); @@ -88,7 +88,7 @@ tape( 'the function supports setting the generator state', function test( t ) { erlang( 2, 4.0 ); } // Capture the current state: - state = erlang.STATE; + state = erlang.state; // Move to a future state... arr = []; @@ -96,7 +96,7 @@ tape( 'the function supports setting the generator state', function test( t ) { arr.push( erlang( 2, 4.0 ) ); } // Set the state: - erlang.STATE = state; + erlang.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/exponential/README.md b/lib/node_modules/@stdlib/random/base/exponential/README.md index e96f1f02b917..464c57e802be 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/README.md +++ b/lib/node_modules/@stdlib/random/base/exponential/README.md @@ -150,7 +150,7 @@ for ( i = 0; i < 100; i++ ) { } ``` -#### exponential.STATE +#### exponential.state Writable property for getting and setting the generator state. @@ -164,7 +164,7 @@ r = exponential( 7.9 ); // ... // Get a copy of the current state: -var state = exponential.STATE; +var state = exponential.state; // returns r = exponential( 7.9 ); @@ -174,7 +174,7 @@ r = exponential( 7.9 ); // returns // Reset the state: -exponential.STATE = state; +exponential.state = state; // Replay the last two pseudorandom numbers: r = exponential( 7.9 ); diff --git a/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt b/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt index 8179010adac9..8a6e9e6d04b5 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt @@ -83,7 +83,7 @@ > var seed = {{alias}}.seed; -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -96,7 +96,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}( 7.9 ) @@ -105,7 +105,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}( 7.9 ) diff --git a/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js b/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js index 8009cd1dd74b..8fd25c731e1c 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js @@ -95,7 +95,7 @@ function factory() { } setReadOnly( prng, 'NAME', 'exponential' ); setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'STATE', { + defineProperty( prng, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -114,7 +114,7 @@ function factory() { * @returns {Uint32Array} current state */ function getState() { - return rand.STATE; + return rand.state; } /** @@ -124,7 +124,7 @@ function factory() { * @param {Uint32Array} s - generator state */ function setState( s ) { - rand.STATE = s; + rand.state = s; } /** diff --git a/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js b/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js index ff89e5e39f32..666e475e3547 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js @@ -116,7 +116,7 @@ tape( 'attached to the returned function is the generator seed', function test( tape( 'attached to the returned function is the generator state', function test( t ) { var exponential = factory(); - t.equal( isUint32Array( exponential.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( exponential.state ), true, 'has `state` property' ); t.end(); }); @@ -357,7 +357,7 @@ tape( 'the returned function supports setting the generator state', function tes exponential(); } // Capture the current state: - state = exponential.STATE; + state = exponential.state; // Move to a future state... arr = []; @@ -365,7 +365,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( exponential() ); } // Set the state: - exponential.STATE = state; + exponential.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/exponential/test/test.js b/lib/node_modules/@stdlib/random/base/exponential/test/test.js index 3de089f0971a..b9704b45775b 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/test/test.js +++ b/lib/node_modules/@stdlib/random/base/exponential/test/test.js @@ -54,7 +54,7 @@ tape( 'attached to the main export is the generator seed', function test( t ) { }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( exponential.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( exponential.state ), true, 'has `state` property' ); t.end(); }); @@ -89,7 +89,7 @@ tape( 'the function supports setting the generator state', function test( t ) { exponential( 4.0 ); } // Capture the current state: - state = exponential.STATE; + state = exponential.state; // Move to a future state... arr = []; @@ -97,7 +97,7 @@ tape( 'the function supports setting the generator state', function test( t ) { arr.push( exponential( 4.0 ) ); } // Set the state: - exponential.STATE = state; + exponential.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/gamma/README.md b/lib/node_modules/@stdlib/random/base/gamma/README.md index 94df1e5da97a..13b67c62160c 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/README.md +++ b/lib/node_modules/@stdlib/random/base/gamma/README.md @@ -161,7 +161,7 @@ for ( i = 0; i < 100; i++ ) { } ``` -#### gamma.STATE +#### gamma.state Writable property for getting and setting the generator state. @@ -175,7 +175,7 @@ r = gamma( 2.0, 5.0 ); // ... // Get a copy of the current state: -var state = gamma.STATE; +var state = gamma.state; // returns r = gamma( 2.0, 5.0 ); @@ -185,7 +185,7 @@ r = gamma( 2.0, 5.0 ); // returns // Reset the state: -gamma.STATE = state; +gamma.state = state; // Replay the last two pseudorandom numbers: r = gamma( 2.0, 5.0 ); diff --git a/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt b/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt index 25ee98310f93..2d5029f70dba 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt @@ -91,7 +91,7 @@ > var seed = {{alias}}.seed; -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -104,7 +104,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}( 2.0, 5.0 ) @@ -113,7 +113,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}( 2.0, 5.0 ) diff --git a/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js b/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js index 9160be643550..37cc5372b048 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js @@ -132,7 +132,7 @@ function factory() { } setReadOnly( prng, 'NAME', 'gamma' ); setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'STATE', { + defineProperty( prng, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -155,8 +155,8 @@ function factory() { var s1; var s2; - s1 = rand.STATE; - s2 = rnorm.STATE; + s1 = rand.state; + s2 = rnorm.state; out = new Uint32Array( N+M ); gcopy( N, s1, 1, 0, out, 1, 0 ); @@ -184,8 +184,8 @@ function factory() { } buf = s.buffer; o = s.byteOffset; - rand.STATE = new Uint32Array( buf, o, N ); - rnorm.STATE = new Uint32Array( buf, o+(N*s.BYTES_PER_ELEMENT), M ); + rand.state = new Uint32Array( buf, o, N ); + rnorm.state = new Uint32Array( buf, o+(N*s.BYTES_PER_ELEMENT), M ); } /** diff --git a/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js b/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js index 545835ced217..b29d0fbef65e 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js @@ -117,7 +117,7 @@ tape( 'attached to the returned function is the generator seed', function test( tape( 'attached to the return function is the generator state', function test( t ) { var gamma = factory(); - t.equal( isUint32Array( gamma.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( gamma.state ), true, 'has `state` property' ); t.end(); }); @@ -133,7 +133,7 @@ tape( 'attached to the returned function is the generator state size', function t.end(); }); -tape( 'if the `STATE` property is set to a value other than a Uint32Array, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to a value other than a Uint32Array, an error is thrown', function test( t ) { var values; var gamma; var i; @@ -159,12 +159,12 @@ tape( 'if the `STATE` property is set to a value other than a Uint32Array, an er function badValue( value ) { return function badValue() { - gamma.STATE = value; + gamma.state = value; }; } }); -tape( 'if the `STATE` property is set to an Uint32Array having an unexpected length, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to an Uint32Array having an unexpected length, an error is thrown', function test( t ) { var values; var gamma; var i; @@ -183,7 +183,7 @@ tape( 'if the `STATE` property is set to an Uint32Array having an unexpected len function badValue( value ) { return function badValue() { - gamma.STATE = value; + gamma.state = value; }; } }); @@ -522,7 +522,7 @@ tape( 'the returned function supports setting the generator state (alpha < 1.0)' gamma(); } // Capture the current state: - state = gamma.STATE; + state = gamma.state; // Move to a future state... arr = []; @@ -530,7 +530,7 @@ tape( 'the returned function supports setting the generator state (alpha < 1.0)' arr.push( gamma() ); } // Set the state: - gamma.STATE = state; + gamma.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -552,7 +552,7 @@ tape( 'the returned function supports setting the generator state (alpha >= 1.0) gamma(); } // Capture the current state: - state = gamma.STATE; + state = gamma.state; // Move to a future state... arr = []; @@ -560,7 +560,7 @@ tape( 'the returned function supports setting the generator state (alpha >= 1.0) arr.push( gamma() ); } // Set the state: - gamma.STATE = state; + gamma.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/gamma/test/test.js b/lib/node_modules/@stdlib/random/base/gamma/test/test.js index aa6d20e4dbb8..2a71abbc1393 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/test/test.js +++ b/lib/node_modules/@stdlib/random/base/gamma/test/test.js @@ -54,7 +54,7 @@ tape( 'attached to the main export is the generator seed', function test( t ) { }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( gamma.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( gamma.state ), true, 'has `state` property' ); t.end(); }); @@ -100,7 +100,7 @@ tape( 'the function supports setting the generator state (alpha >= 1.0)', functi gamma( 2.0, 2.0 ); } // Capture the current state: - state = gamma.STATE; + state = gamma.state; // Move to a future state... arr = []; @@ -108,7 +108,7 @@ tape( 'the function supports setting the generator state (alpha >= 1.0)', functi arr.push( gamma( 2.0, 2.0 ) ); } // Set the state: - gamma.STATE = state; + gamma.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -127,7 +127,7 @@ tape( 'the function supports setting the generator state (alpha < 1.0)', functio gamma( 0.05, 2.0 ); } // Capture the current state: - state = gamma.STATE; + state = gamma.state; // Move to a future state... arr = []; @@ -135,7 +135,7 @@ tape( 'the function supports setting the generator state (alpha < 1.0)', functio arr.push( gamma( 0.05, 2.0 ) ); } // Set the state: - gamma.STATE = state; + gamma.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md b/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md index 4685f267cc90..b2d139a5c6b5 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md @@ -103,7 +103,7 @@ for ( i = 0; i < 1000; i++ ) { // Create a new PRNG initialized to the current state of `randn`: rand = randn.factory({ - 'state': randn.STATE + 'state': randn.state }); // Test that the generated pseudorandom numbers are the same: @@ -165,7 +165,7 @@ var seed = rand.seed; // returns null ``` -#### randn.STATE +#### randn.state Writable property for getting and setting the generator state. @@ -179,7 +179,7 @@ r = randn(); // ... // Get a copy of the current state: -var state = randn.STATE; +var state = randn.state; // returns r = randn(); @@ -189,7 +189,7 @@ r = randn(); // returns // Reset the state: -randn.STATE = state; +randn.state = state; // Replay the last two pseudorandom numbers: r = randn(); @@ -210,7 +210,7 @@ var rand = randn.factory({ 'prng': Math.random }); -var state = rand.STATE; +var state = rand.state; // returns null ``` diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt b/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt index 3436800a247e..4cf8a0f7b117 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt @@ -80,7 +80,7 @@ > var seed = {{alias}}.seed; -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -93,7 +93,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}() @@ -102,7 +102,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}() diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js index cd5ea3cf9c06..a21c9b14d90c 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js @@ -134,7 +134,7 @@ function factory( options ) { } // If we are provided an "external" PRNG, we don't support getting or setting PRNG state, as we'd need to check for compatible state value types, etc, entailing considerable complexity. if ( options && options.prng ) { - defineProperty( randn, 'STATE', { + defineProperty( randn, 'state', { 'configurable': false, 'enumerable': true, 'get': constantFunction( null ), @@ -143,7 +143,7 @@ function factory( options ) { setReadOnly( randn, 'STATE_LENGTH', null ); setReadOnly( randn, 'STATE_SIZE', null ); } else { - defineProperty( randn, 'STATE', { + defineProperty( randn, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -201,7 +201,7 @@ function factory( options ) { * @returns {Uint32Array} current state */ function getState() { - return randu.STATE; + return randu.state; } /** @@ -213,7 +213,7 @@ function factory( options ) { * @throws {RangeError} must provide a `Uint32Array` having an expected length */ function setState( s ) { - randu.STATE = s; + randu.state = s; } } diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js index 7ad482852d28..49f3750b65ee 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js @@ -378,12 +378,12 @@ tape( 'attached to the returned function is the generator seed (array seed)', fu tape( 'attached to the returned function is the generator state', function test( t ) { var randn = factory(); - t.equal( isUint32Array( randn.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( randn.state ), true, 'has `state` property' ); randn = factory({ 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math }); - t.equal( randn.STATE, null, 'equal to `null`' ); + t.equal( randn.state, null, 'equal to `null`' ); t.end(); }); @@ -409,7 +409,7 @@ tape( 'attached to the returned function is the generator state size', function t.end(); }); -tape( 'if the `STATE` property is set to a value other than a Uint32Array, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to a value other than a Uint32Array, an error is thrown', function test( t ) { var values; var randn; var i; @@ -435,12 +435,12 @@ tape( 'if the `STATE` property is set to a value other than a Uint32Array, an er function badValue( value ) { return function badValue() { - randn.STATE = value; + randn.state = value; }; } }); -tape( 'if the `STATE` property is set to an Uint32Array having an unexpected length, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to an Uint32Array having an unexpected length, an error is thrown', function test( t ) { var values; var randn; var i; @@ -459,7 +459,7 @@ tape( 'if the `STATE` property is set to an Uint32Array having an unexpected len function badValue( value ) { return function badValue() { - randn.STATE = value; + randn.state = value; }; } }); @@ -559,7 +559,7 @@ tape( 'the function supports specifying the generator state', function test( t ) randn(); } // Capture the current state: - state = randn.STATE; + state = randn.state; // Move to a future state... arr = []; @@ -598,7 +598,7 @@ tape( 'the function supports specifying a shared generator state', function test randn(); } // Capture the current state: - state = randn.STATE; + state = randn.state; // Move to a future state... arr = []; @@ -635,7 +635,7 @@ tape( 'the function supports specifying a shared generator state', function test } // Reset the (shared) state: - rand1.STATE = state; + rand1.state = state; // Replay previously generated values... j = 0; @@ -662,7 +662,7 @@ tape( 'the returned function supports setting the generator state', function tes randn(); } // Capture the current state: - state = randn.STATE; + state = randn.state; // Move to a future state... arr = []; @@ -670,7 +670,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( randn() ); } // Set the state: - randn.STATE = state; + randn.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js index 33c822a9aaa2..72ae2a1fee80 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js @@ -54,7 +54,7 @@ tape( 'attached to the main export is the generator seed', function test( t ) { }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( randn.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( randn.state ), true, 'has `state` property' ); t.end(); }); @@ -88,7 +88,7 @@ tape( 'the function supports setting the generator state', function test( t ) { randn(); } // Capture the current state: - state = randn.STATE; + state = randn.state; // Move to a future state... arr = []; @@ -96,7 +96,7 @@ tape( 'the function supports setting the generator state', function test( t ) { arr.push( randn() ); } // Set the state: - randn.STATE = state; + randn.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md b/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md index 62bea4499ca3..e4dedd8f3066 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md @@ -101,7 +101,7 @@ for ( i = 0; i < 1000; i++ ) { // Create a new PRNG initialized to the current state of `minstd`: rand = minstd.factory({ - 'state': minstd.STATE + 'state': minstd.state }); // Test that the generated pseudorandom numbers are the same: @@ -159,7 +159,7 @@ var max = minstd.MAX; // returns 2147483646 ``` -#### minstd.STATE +#### minstd.state Writable property for getting and setting the generator state. @@ -173,7 +173,7 @@ r = minstd(); // ... // Get a copy of the current state: -var state = minstd.STATE; +var state = minstd.state; // returns r = minstd(); @@ -183,7 +183,7 @@ r = minstd(); // returns // Reset the state: -minstd.STATE = state; +minstd.state = state; // Replay the last two pseudorandom numbers: r = minstd(); diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt b/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt index b4c4c254d064..bebb8f215bfc 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt @@ -117,7 +117,7 @@ 2147483646 -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -130,7 +130,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}() @@ -139,7 +139,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}() diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js index 924e0e892085..1dd9d2634c79 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js @@ -161,7 +161,7 @@ function factory( options ) { 'enumerable': true, 'get': getSeed }); - defineProperty( minstdShuffle, 'STATE', { + defineProperty( minstdShuffle, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -187,7 +187,7 @@ function factory( options ) { 'enumerable': true, 'get': getSeed }); - defineProperty( normalized, 'STATE', { + defineProperty( normalized, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js index ed0cf110d91c..6e9d5824644c 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js @@ -412,7 +412,7 @@ tape( 'attached to the returned function is the maximum possible generated numbe tape( 'attached to the returned function is the generator state', function test( t ) { var minstd = factory(); - t.equal( isInt32Array( minstd.STATE ), true, 'has `STATE` property' ); + t.equal( isInt32Array( minstd.state ), true, 'has `state` property' ); t.end(); }); @@ -428,7 +428,7 @@ tape( 'attached to the returned function is the generator state size', function t.end(); }); -tape( 'if the `STATE` property is set to a value other than an Int32Array, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to a value other than an Int32Array, an error is thrown', function test( t ) { var minstd; var values; var i; @@ -454,12 +454,12 @@ tape( 'if the `STATE` property is set to a value other than an Int32Array, an er function badValue( value ) { return function badValue() { - minstd.STATE = value; + minstd.state = value; }; } }); -tape( 'if the `STATE` property is set to an Int32Array having an unexpected length, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to an Int32Array having an unexpected length, an error is thrown', function test( t ) { var minstd; var values; var i; @@ -478,7 +478,7 @@ tape( 'if the `STATE` property is set to an Int32Array having an unexpected leng function badValue( value ) { return function badValue() { - minstd.STATE = value; + minstd.state = value; }; } }); @@ -551,7 +551,7 @@ tape( 'attached to the `normalized` method is the maximum possible generated num tape( 'attached to the `normalized` method is the generator state', function test( t ) { var minstd = factory(); - t.equal( isInt32Array( minstd.normalized.STATE ), true, 'has `STATE` property' ); + t.equal( isInt32Array( minstd.normalized.state ), true, 'has `state` property' ); t.end(); }); @@ -567,7 +567,7 @@ tape( 'attached to the `normalized` method is the generator state size', functio t.end(); }); -tape( 'if the `STATE` property is set to a value other than an Int32Array, an error is thrown (normalized)', function test( t ) { +tape( 'if the `state` property is set to a value other than an Int32Array, an error is thrown (normalized)', function test( t ) { var minstd; var values; var i; @@ -593,12 +593,12 @@ tape( 'if the `STATE` property is set to a value other than an Int32Array, an er function badValue( value ) { return function badValue() { - minstd.normalized.STATE = value; + minstd.normalized.state = value; }; } }); -tape( 'if the `STATE` property is set to an Int32Array having an unexpected length, an error is thrown (normalized)', function test( t ) { +tape( 'if the `state` property is set to an Int32Array having an unexpected length, an error is thrown (normalized)', function test( t ) { var minstd; var values; var i; @@ -617,7 +617,7 @@ tape( 'if the `STATE` property is set to an Int32Array having an unexpected leng function badValue( value ) { return function badValue() { - minstd.normalized.STATE = value; + minstd.normalized.state = value; }; } }); @@ -704,7 +704,7 @@ tape( 'the function supports specifying the generator state', function test( t ) minstd(); } // Capture the current state: - state = minstd.STATE; + state = minstd.state; // Move to a future state... arr = []; @@ -743,7 +743,7 @@ tape( 'the function supports specifying a shared generator state', function test minstd(); } // Capture the current state: - state = minstd.STATE; + state = minstd.state; // Move to a future state... arr = []; @@ -780,7 +780,7 @@ tape( 'the function supports specifying a shared generator state', function test } // Reset the (shared) state: - rand1.STATE = state; + rand1.state = state; // Replay previously generated values... j = 0; @@ -807,7 +807,7 @@ tape( 'the returned function supports setting the generator state', function tes minstd(); } // Capture the current state: - state = minstd.STATE; + state = minstd.state; // Move to a future state... arr = []; @@ -815,7 +815,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( minstd() ); } // Set the state: - minstd.STATE = state; + minstd.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -837,7 +837,7 @@ tape( 'the returned function supports setting the generator state (normalized)', minstd.normalized(); } // Capture the current state: - state = minstd.STATE; + state = minstd.state; // Move to a future state... arr = []; @@ -845,7 +845,7 @@ tape( 'the returned function supports setting the generator state (normalized)', arr.push( minstd.normalized() ); } // Set the state: - minstd.STATE = state; + minstd.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -867,7 +867,7 @@ tape( 'the returned function supports setting the generator state (normalized)', minstd.normalized(); } // Capture the current state: - state = minstd.normalized.STATE; + state = minstd.normalized.state; // Move to a future state... arr = []; @@ -875,7 +875,7 @@ tape( 'the returned function supports setting the generator state (normalized)', arr.push( minstd.normalized() ); } // Set the state: - minstd.normalized.STATE = state; + minstd.normalized.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js index 6ad0201c2fe5..6a2a1a372ebe 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js @@ -66,7 +66,7 @@ tape( 'attached to the main export is the maximum possible generated number', fu }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isInt32Array( minstd.STATE ), true, 'has `STATE` property' ); + t.equal( isInt32Array( minstd.state ), true, 'has `state` property' ); t.end(); }); @@ -124,7 +124,7 @@ tape( 'attached to the `normalized` method is the maximum possible generated num }); tape( 'attached to the `normalized` method is the generator state', function test( t ) { - t.equal( isInt32Array( minstd.normalized.STATE ), true, 'has `STATE` property' ); + t.equal( isInt32Array( minstd.normalized.state ), true, 'has `state` property' ); t.end(); }); @@ -148,7 +148,7 @@ tape( 'the generator supports setting the generator state', function test( t ) { minstd(); } // Capture the current state: - state = minstd.STATE; + state = minstd.state; // Move to a future state... arr = []; @@ -156,7 +156,7 @@ tape( 'the generator supports setting the generator state', function test( t ) { arr.push( minstd() ); } // Set the state: - minstd.STATE = state; + minstd.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -175,7 +175,7 @@ tape( 'the generator supports setting the generator state (normalized)', functio minstd.normalized(); } // Capture the current state: - state = minstd.STATE; + state = minstd.state; // Move to a future state... arr = []; @@ -183,7 +183,7 @@ tape( 'the generator supports setting the generator state (normalized)', functio arr.push( minstd.normalized() ); } // Set the state: - minstd.STATE = state; + minstd.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -202,7 +202,7 @@ tape( 'the generator supports setting the generator state (normalized)', functio minstd.normalized(); } // Capture the current state: - state = minstd.normalized.STATE; + state = minstd.normalized.state; // Move to a future state... arr = []; @@ -210,7 +210,7 @@ tape( 'the generator supports setting the generator state (normalized)', functio arr.push( minstd.normalized() ); } // Set the state: - minstd.normalized.STATE = state; + minstd.normalized.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/minstd/README.md b/lib/node_modules/@stdlib/random/base/minstd/README.md index b669b68ed113..d8d15f2a7fde 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/README.md +++ b/lib/node_modules/@stdlib/random/base/minstd/README.md @@ -101,7 +101,7 @@ for ( i = 0; i < 1000; i++ ) { // Create a new PRNG initialized to the current state of `minstd`: rand = minstd.factory({ - 'state': minstd.STATE + 'state': minstd.state }); // Test that the generated pseudorandom numbers are the same: @@ -159,7 +159,7 @@ var max = minstd.MAX; // returns 2147483646 ``` -#### minstd.STATE +#### minstd.state Writable property for getting and setting the generator state. @@ -173,7 +173,7 @@ r = minstd(); // ... // Get the current state: -var state = minstd.STATE; +var state = minstd.state; // returns r = minstd(); @@ -183,7 +183,7 @@ r = minstd(); // returns // Reset the state: -minstd.STATE = state; +minstd.state = state; // Replay the last two pseudorandom numbers: r = minstd(); diff --git a/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt b/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt index 3472b2075415..6a561302187d 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt @@ -115,7 +115,7 @@ 2147483646 -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -128,7 +128,7 @@ // Get the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}() @@ -137,7 +137,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}() diff --git a/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js b/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js index cdc8c2748e28..16fe15c2210a 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js @@ -151,7 +151,7 @@ function factory( options ) { 'enumerable': true, 'get': getSeed }); - defineProperty( minstd, 'STATE', { + defineProperty( minstd, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -177,7 +177,7 @@ function factory( options ) { 'enumerable': true, 'get': getSeed }); - defineProperty( normalized, 'STATE', { + defineProperty( normalized, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, diff --git a/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js b/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js index 26740432b27b..2169f9f1ba37 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js @@ -353,7 +353,7 @@ tape( 'attached to the returned function is the maximum possible generated numbe tape( 'attached to the returned function is the generator state', function test( t ) { var minstd = factory(); - t.equal( isInt32Array( minstd.STATE ), true, 'has `STATE` property' ); + t.equal( isInt32Array( minstd.state ), true, 'has `state` property' ); t.end(); }); @@ -369,7 +369,7 @@ tape( 'attached to the returned function is the generator state size', function t.end(); }); -tape( 'if the `STATE` property is set to a value other than an Int32Array, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to a value other than an Int32Array, an error is thrown', function test( t ) { var minstd; var values; var i; @@ -398,12 +398,12 @@ tape( 'if the `STATE` property is set to a value other than an Int32Array, an er function badValue( value ) { return function badValue() { - minstd.STATE = value; + minstd.state = value; }; } }); -tape( 'if the `STATE` property is set to an Int32Array having an unexpected length, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to an Int32Array having an unexpected length, an error is thrown', function test( t ) { var minstd; var values; var i; @@ -421,7 +421,7 @@ tape( 'if the `STATE` property is set to an Int32Array having an unexpected leng function badValue( value ) { return function badValue() { - minstd.STATE = value; + minstd.state = value; }; } }); @@ -494,7 +494,7 @@ tape( 'attached to the `normalized` method is the maximum possible generated num tape( 'attached to the `normalized` method is the generator state', function test( t ) { var minstd = factory(); - t.equal( isInt32Array( minstd.normalized.STATE ), true, 'has `STATE` property' ); + t.equal( isInt32Array( minstd.normalized.state ), true, 'has `state` property' ); t.end(); }); @@ -510,7 +510,7 @@ tape( 'attached to the `normalized` method is the generator state size', functio t.end(); }); -tape( 'if the `STATE` property is set to a value other than an Int32Array, an error is thrown (normalized)', function test( t ) { +tape( 'if the `state` property is set to a value other than an Int32Array, an error is thrown (normalized)', function test( t ) { var minstd; var values; var i; @@ -539,12 +539,12 @@ tape( 'if the `STATE` property is set to a value other than an Int32Array, an er function badValue( value ) { return function badValue() { - minstd.normalized.STATE = value; + minstd.normalized.state = value; }; } }); -tape( 'if the `STATE` property is set to an Int32Array having an unexpected length, an error is thrown (normalized)', function test( t ) { +tape( 'if the `state` property is set to an Int32Array having an unexpected length, an error is thrown (normalized)', function test( t ) { var minstd; var values; var i; @@ -562,7 +562,7 @@ tape( 'if the `STATE` property is set to an Int32Array having an unexpected leng function badValue( value ) { return function badValue() { - minstd.normalized.STATE = value; + minstd.normalized.state = value; }; } }); @@ -649,7 +649,7 @@ tape( 'the function supports specifying the generator state', function test( t ) minstd(); } // Capture the current state: - state = minstd.STATE; + state = minstd.state; // Move to a future state... arr = []; @@ -688,7 +688,7 @@ tape( 'the function supports specifying a shared generator state', function test minstd(); } // Capture the current state: - state = minstd.STATE; + state = minstd.state; // Move to a future state... arr = []; @@ -725,7 +725,7 @@ tape( 'the function supports specifying a shared generator state', function test } // Reset the (shared) state: - rand1.STATE = state; + rand1.state = state; // Replay previously generated values... j = 0; @@ -752,7 +752,7 @@ tape( 'the returned function supports setting the generator state', function tes minstd(); } // Capture the current state: - state = minstd.STATE; + state = minstd.state; // Move to a future state... arr = []; @@ -760,7 +760,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( minstd() ); } // Set the state: - minstd.STATE = state; + minstd.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -782,7 +782,7 @@ tape( 'the returned function supports setting the generator state (normalized)', minstd.normalized(); } // Capture the current state: - state = minstd.STATE; + state = minstd.state; // Move to a future state... arr = []; @@ -790,7 +790,7 @@ tape( 'the returned function supports setting the generator state (normalized)', arr.push( minstd.normalized() ); } // Set the state: - minstd.STATE = state; + minstd.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -812,7 +812,7 @@ tape( 'the returned function supports setting the generator state (normalized)', minstd.normalized(); } // Capture the current state: - state = minstd.normalized.STATE; + state = minstd.normalized.state; // Move to a future state... arr = []; @@ -820,7 +820,7 @@ tape( 'the returned function supports setting the generator state (normalized)', arr.push( minstd.normalized() ); } // Set the state: - minstd.normalized.STATE = state; + minstd.normalized.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/minstd/test/test.js b/lib/node_modules/@stdlib/random/base/minstd/test/test.js index 7ff30722322d..91d95f187f8c 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/test/test.js +++ b/lib/node_modules/@stdlib/random/base/minstd/test/test.js @@ -66,7 +66,7 @@ tape( 'attached to the main export is the maximum possible generated number', fu }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isInt32Array( minstd.STATE ), true, 'has `STATE` property' ); + t.equal( isInt32Array( minstd.state ), true, 'has `state` property' ); t.end(); }); @@ -124,7 +124,7 @@ tape( 'attached to the `normalized` method is the maximum possible generated num }); tape( 'attached to the `normalized` method is the generator state', function test( t ) { - t.equal( isInt32Array( minstd.normalized.STATE ), true, 'has `STATE` property' ); + t.equal( isInt32Array( minstd.normalized.state ), true, 'has `state` property' ); t.end(); }); @@ -148,7 +148,7 @@ tape( 'the generator supports setting the generator state', function test( t ) { minstd(); } // Capture the current state: - state = minstd.STATE; + state = minstd.state; // Move to a future state... arr = []; @@ -156,7 +156,7 @@ tape( 'the generator supports setting the generator state', function test( t ) { arr.push( minstd() ); } // Set the state: - minstd.STATE = state; + minstd.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -175,7 +175,7 @@ tape( 'the generator supports setting the generator state (normalized)', functio minstd.normalized(); } // Capture the current state: - state = minstd.STATE; + state = minstd.state; // Move to a future state... arr = []; @@ -183,7 +183,7 @@ tape( 'the generator supports setting the generator state (normalized)', functio arr.push( minstd.normalized() ); } // Set the state: - minstd.STATE = state; + minstd.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -202,7 +202,7 @@ tape( 'the generator supports setting the generator state (normalized)', functio minstd.normalized(); } // Capture the current state: - state = minstd.normalized.STATE; + state = minstd.normalized.state; // Move to a future state... arr = []; @@ -210,7 +210,7 @@ tape( 'the generator supports setting the generator state (normalized)', functio arr.push( minstd.normalized() ); } // Set the state: - minstd.normalized.STATE = state; + minstd.normalized.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/mt19937/README.md b/lib/node_modules/@stdlib/random/base/mt19937/README.md index b9eb6761a2a5..f7410a93473f 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/README.md +++ b/lib/node_modules/@stdlib/random/base/mt19937/README.md @@ -101,7 +101,7 @@ for ( i = 0; i < 1000; i++ ) { // Create a new MT19937 PRNG initialized to the current state of `mt19937`: rand = mt19937.factory({ - 'state': mt19937.STATE + 'state': mt19937.state }); // Test that the generated pseudorandom numbers are the same: @@ -159,7 +159,7 @@ var max = mt19937.MAX; // returns 4294967295 ``` -#### mt19937.STATE +#### mt19937.state Writable property for getting and setting the generator state. @@ -173,7 +173,7 @@ r = mt19937(); // ... // Get a copy of the current state: -var state = mt19937.STATE; +var state = mt19937.state; // returns r = mt19937(); @@ -183,7 +183,7 @@ r = mt19937(); // returns // Reset the state: -mt19937.STATE = state; +mt19937.state = state; // Replay the last two pseudorandom numbers: r = mt19937(); diff --git a/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt b/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt index 7990b652c742..8234f78db4bb 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt @@ -109,7 +109,7 @@ 4294967295 -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -122,7 +122,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}() @@ -131,7 +131,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}() diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 6728fa22a0db..a4fc1c202015 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -440,7 +440,7 @@ function factory( options ) { setReadOnly( mt19937, 'MIN', 1 ); setReadOnly( mt19937, 'MAX', UINT32_MAX ); setReadOnly( mt19937, 'normalized', normalized ); - defineProperty( mt19937, 'STATE', { + defineProperty( mt19937, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -465,7 +465,7 @@ function factory( options ) { }); setReadOnly( normalized, 'MIN', 0.0 ); setReadOnly( normalized, 'MAX', MAX_NORMALIZED ); - defineProperty( normalized, 'STATE', { + defineProperty( normalized, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js index 7e0cbd0aa782..33e824fc50a2 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js @@ -362,7 +362,7 @@ tape( 'attached to the returned function is the maximum possible generated numbe tape( 'attached to the returned function is the generator state', function test( t ) { var mt19937 = factory(); - t.equal( isUint32Array( mt19937.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( mt19937.state ), true, 'has `state` property' ); t.end(); }); @@ -378,7 +378,7 @@ tape( 'attached to the returned function is the generator state size', function t.end(); }); -tape( 'if the `STATE` property is set to a value other than a Uint32Array, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to a value other than a Uint32Array, an error is thrown', function test( t ) { var mt19937; var values; var i; @@ -404,12 +404,12 @@ tape( 'if the `STATE` property is set to a value other than a Uint32Array, an er function badValue( value ) { return function badValue() { - mt19937.STATE = value; + mt19937.state = value; }; } }); -tape( 'if the `STATE` property is set to an Uint32Array having an unexpected length, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to an Uint32Array having an unexpected length, an error is thrown', function test( t ) { var mt19937; var values; var i; @@ -428,7 +428,7 @@ tape( 'if the `STATE` property is set to an Uint32Array having an unexpected len function badValue( value ) { return function badValue() { - mt19937.STATE = value; + mt19937.state = value; }; } }); @@ -501,7 +501,7 @@ tape( 'attached to the `normalized` method is the maximum possible generated num tape( 'attached to the `normalized` method is the generator state', function test( t ) { var mt19937 = factory(); - t.equal( isUint32Array( mt19937.normalized.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( mt19937.normalized.state ), true, 'has `state` property' ); t.end(); }); @@ -517,7 +517,7 @@ tape( 'attached to the `normalized` method is the generator state length', funct t.end(); }); -tape( 'if the `STATE` property is set to a value other than a Uint32Array, an error is thrown (normalized)', function test( t ) { +tape( 'if the `state` property is set to a value other than a Uint32Array, an error is thrown (normalized)', function test( t ) { var mt19937; var values; var i; @@ -543,12 +543,12 @@ tape( 'if the `STATE` property is set to a value other than a Uint32Array, an er function badValue( value ) { return function badValue() { - mt19937.normalized.STATE = value; + mt19937.normalized.state = value; }; } }); -tape( 'if the `STATE` property is set to a Uint32Array having an unexpected length, an error is thrown (normalized)', function test( t ) { +tape( 'if the `state` property is set to a Uint32Array having an unexpected length, an error is thrown (normalized)', function test( t ) { var mt19937; var values; var i; @@ -567,7 +567,7 @@ tape( 'if the `STATE` property is set to a Uint32Array having an unexpected leng function badValue( value ) { return function badValue() { - mt19937.normalized.STATE = value; + mt19937.normalized.state = value; }; } }); @@ -720,7 +720,7 @@ tape( 'the function supports specifying the generator state', function test( t ) mt19937(); } // Capture the current state: - state = mt19937.STATE; + state = mt19937.state; // Move to a future state... arr = []; @@ -759,7 +759,7 @@ tape( 'the function supports specifying a shared generator state', function test mt19937(); } // Capture the current state: - state = mt19937.STATE; + state = mt19937.state; // Move to a future state... arr = []; @@ -796,7 +796,7 @@ tape( 'the function supports specifying a shared generator state', function test } // Reset the (shared) state: - rand1.STATE = state; + rand1.state = state; // Replay previously generated values... j = 0; @@ -823,7 +823,7 @@ tape( 'the returned function supports setting the generator state', function tes mt19937(); } // Capture the current state: - state = mt19937.STATE; + state = mt19937.state; // Move to a future state... arr = []; @@ -831,7 +831,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( mt19937() ); } // Set the state: - mt19937.STATE = state; + mt19937.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -853,7 +853,7 @@ tape( 'the returned function supports setting the generator state (normalized)', mt19937.normalized(); } // Capture the current state: - state = mt19937.STATE; + state = mt19937.state; // Move to a future state... arr = []; @@ -861,7 +861,7 @@ tape( 'the returned function supports setting the generator state (normalized)', arr.push( mt19937.normalized() ); } // Set the state: - mt19937.STATE = state; + mt19937.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -883,7 +883,7 @@ tape( 'the returned function supports setting the generator state (normalized)', mt19937.normalized(); } // Capture the current state: - state = mt19937.normalized.STATE; + state = mt19937.normalized.state; // Move to a future state... arr = []; @@ -891,7 +891,7 @@ tape( 'the returned function supports setting the generator state (normalized)', arr.push( mt19937.normalized() ); } // Set the state: - mt19937.normalized.STATE = state; + mt19937.normalized.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.js index 8a0330be71f3..c1608f993d8d 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.js @@ -67,7 +67,7 @@ tape( 'attached to the main export is the maximum possible generated number', fu }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( mt19937.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( mt19937.state ), true, 'has `state` property' ); t.end(); }); @@ -125,7 +125,7 @@ tape( 'attached to the `normalized` method is the maximum possible generated num }); tape( 'attached to the `normalized` method is the generator state', function test( t ) { - t.equal( isUint32Array( mt19937.normalized.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( mt19937.normalized.state ), true, 'has `state` property' ); t.end(); }); @@ -149,7 +149,7 @@ tape( 'the generator supports setting the generator state', function test( t ) { mt19937(); } // Capture the current state: - state = mt19937.STATE; + state = mt19937.state; // Move to a future state... arr = []; @@ -157,7 +157,7 @@ tape( 'the generator supports setting the generator state', function test( t ) { arr.push( mt19937() ); } // Set the state: - mt19937.STATE = state; + mt19937.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -176,7 +176,7 @@ tape( 'the generator supports setting the generator state (normalized)', functio mt19937.normalized(); } // Capture the current state: - state = mt19937.STATE; + state = mt19937.state; // Move to a future state... arr = []; @@ -184,7 +184,7 @@ tape( 'the generator supports setting the generator state (normalized)', functio arr.push( mt19937.normalized() ); } // Set the state: - mt19937.STATE = state; + mt19937.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -203,7 +203,7 @@ tape( 'the generator supports setting the generator state (normalized)', functio mt19937.normalized(); } // Capture the current state: - state = mt19937.normalized.STATE; + state = mt19937.normalized.state; // Move to a future state... arr = []; @@ -211,7 +211,7 @@ tape( 'the generator supports setting the generator state (normalized)', functio arr.push( mt19937.normalized() ); } // Set the state: - mt19937.normalized.STATE = state; + mt19937.normalized.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/normal/README.md b/lib/node_modules/@stdlib/random/base/normal/README.md index 56b739d0b7ff..036dd16186e6 100644 --- a/lib/node_modules/@stdlib/random/base/normal/README.md +++ b/lib/node_modules/@stdlib/random/base/normal/README.md @@ -154,7 +154,7 @@ for ( i = 0; i < 100; i++ ) { } ``` -#### normal.STATE +#### normal.state Writable property for getting and setting the generator state. @@ -168,7 +168,7 @@ r = normal( 2.0, 5.0 ); // ... // Get a copy of the current state: -var state = normal.STATE; +var state = normal.state; // returns r = normal( 2.0, 5.0 ); @@ -178,7 +178,7 @@ r = normal( 2.0, 5.0 ); // returns // Reset the state: -normal.STATE = state; +normal.state = state; // Replay the last two pseudorandom numbers: r = normal( 2.0, 5.0 ); diff --git a/lib/node_modules/@stdlib/random/base/normal/docs/repl.txt b/lib/node_modules/@stdlib/random/base/normal/docs/repl.txt index 7afe00aefb12..c78b19a247c4 100644 --- a/lib/node_modules/@stdlib/random/base/normal/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/normal/docs/repl.txt @@ -89,7 +89,7 @@ > var seed = {{alias}}.seed; -{{alias}}.STATE +{{alias}}.state Generator state. Examples @@ -102,7 +102,7 @@ // Get a copy of the current state: - > var state = {{alias}}.STATE + > var state = {{alias}}.state > r = {{alias}}( 2.0, 5.0 ) @@ -111,7 +111,7 @@ // Set the state: - > {{alias}}.STATE = state; + > {{alias}}.state = state; // Replay the last two pseudorandom numbers: > r = {{alias}}( 2.0, 5.0 ) diff --git a/lib/node_modules/@stdlib/random/base/normal/lib/factory.js b/lib/node_modules/@stdlib/random/base/normal/lib/factory.js index 5309709bd8c6..bca5aff765ae 100644 --- a/lib/node_modules/@stdlib/random/base/normal/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/normal/lib/factory.js @@ -95,7 +95,7 @@ function factory() { } setReadOnly( prng, 'NAME', 'normal' ); setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'STATE', { + defineProperty( prng, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, @@ -113,7 +113,7 @@ function factory() { * @returns {Uint32Array} current state */ function getState() { - return rand.STATE; + return rand.state; } /** @@ -123,7 +123,7 @@ function factory() { * @param {Uint32Array} s - generator state */ function setState( s ) { - rand.STATE = s; + rand.state = s; } /** diff --git a/lib/node_modules/@stdlib/random/base/normal/test/test.factory.js b/lib/node_modules/@stdlib/random/base/normal/test/test.factory.js index 730666fb3d46..3b13efd1edd0 100644 --- a/lib/node_modules/@stdlib/random/base/normal/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/normal/test/test.factory.js @@ -116,7 +116,7 @@ tape( 'attached to the returned function is the generator seed', function test( tape( 'attached to the returned function is the generator state', function test( t ) { var normal = factory(); - t.equal( isUint32Array( normal.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( normal.state ), true, 'has `state` property' ); t.end(); }); @@ -372,7 +372,7 @@ tape( 'the returned function supports setting the generator state', function tes normal(); } // Capture the current state: - state = normal.STATE; + state = normal.state; // Move to a future state... arr = []; @@ -380,7 +380,7 @@ tape( 'the returned function supports setting the generator state', function tes arr.push( normal() ); } // Set the state: - normal.STATE = state; + normal.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/base/normal/test/test.js b/lib/node_modules/@stdlib/random/base/normal/test/test.js index 9af80e97bbbf..8d5856e62791 100644 --- a/lib/node_modules/@stdlib/random/base/normal/test/test.js +++ b/lib/node_modules/@stdlib/random/base/normal/test/test.js @@ -54,7 +54,7 @@ tape( 'attached to the main export is the generator seed', function test( t ) { }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( normal.STATE ), true, 'has `STATE` property' ); + t.equal( isUint32Array( normal.state ), true, 'has `state` property' ); t.end(); }); @@ -83,7 +83,7 @@ tape( 'the function supports setting the generator state', function test( t ) { normal( 2.0, 5.0 ); } // Capture the current state: - state = normal.STATE; + state = normal.state; // Move to a future state... arr = []; @@ -91,7 +91,7 @@ tape( 'the function supports setting the generator state', function test( t ) { arr.push( normal( 2.0, 5.0 ) ); } // Set the state: - normal.STATE = state; + normal.state = state; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { From a022d669cd8cfe2fd2b2fc6e94c31837539784a5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 31 Aug 2018 22:43:27 -0700 Subject: [PATCH 0003/1062] Rename variables --- .../random/base/minstd-shuffle/lib/factory.js | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js index 1dd9d2634c79..88e4e7a7718d 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js @@ -40,10 +40,10 @@ var randint32 = require( './rand_int32.js' ); var NORMALIZATION_CONSTANT = (INT32_MAX - 1)|0; // asm type annotation var MAX_SEED = (INT32_MAX - 1)|0; // asm type annotation -var TABLE_SIZE = 32; -var STATE_SIZE = TABLE_SIZE + 2; -var SHUFFLE_STATE = STATE_SIZE - 1; // index -var PRNG_STATE = STATE_SIZE - 2; // index +var TABLE_LENGTH = 32; +var STATE_LENGTH = TABLE_LENGTH + 2; +var SHUFFLE_STATE = STATE_LENGTH - 1; // index +var PRNG_STATE = STATE_LENGTH - 2; // index var A = 16807|0; // asm type annotation @@ -98,22 +98,22 @@ function factory( options ) { throw new TypeError( 'invalid option. `state` option must be an Int32Array. Option: `' + state + '`.' ); } // Determine the seed length: - slen = state.length - STATE_SIZE; + slen = state.length - STATE_LENGTH; if ( slen <= 0 ) { throw new RangeError( 'invalid option. `state` option has insufficient length.' ); } if ( options.copy === false ) { // Create a state "view": - state = new Int32Array( state.buffer, state.byteOffset, STATE_SIZE ); // eslint-disable-line max-len + state = new Int32Array( state.buffer, state.byteOffset, STATE_LENGTH ); // eslint-disable-line max-len // Create a seed "view": - seed = new Int32Array( state.buffer, state.byteOffset+(STATE_SIZE*state.BYTES_PER_ELEMENT), slen ); // eslint-disable-line max-len + seed = new Int32Array( state.buffer, state.byteOffset+(STATE_LENGTH*state.BYTES_PER_ELEMENT), slen ); // eslint-disable-line max-len } else { // Extract the state: - state = gcopy( STATE_SIZE, state, 1, new Int32Array( STATE_SIZE ), 1 ); // eslint-disable-line max-len + state = gcopy( STATE_LENGTH, state, 1, new Int32Array( STATE_LENGTH ), 1 ); // eslint-disable-line max-len // Extract the PRNG seed: - seed = gcopy.ndarray( slen, state, 1, STATE_SIZE, new Int32Array( slen ), 1, 0 ); // eslint-disable-line max-len + seed = gcopy.ndarray( slen, state, 1, STATE_LENGTH, new Int32Array( slen ), 1, 0 ); // eslint-disable-line max-len } } // If provided a PRNG state, we ignore the `seed` option... @@ -132,9 +132,9 @@ function factory( options ) { seed = gcopy( slen, seed, 1, new Int32Array( slen ), 1 ); // Initialize the internal PRNG state: - state = new Int32Array( STATE_SIZE ); + state = new Int32Array( STATE_LENGTH ); state[ PRNG_STATE ] = seed[ 0 ]; - state = createTable( minstd, state, TABLE_SIZE ); + state = createTable( minstd, state, TABLE_LENGTH ); state[ SHUFFLE_STATE ] = state[ 0 ]; } else { throw new TypeError( 'invalid option. `seed` option must be either a positive integer less than the maximum signed 32-bit integer or an array-like object containing integer values less than the maximum signed 32-bit integer. Option: `' + seed + '`.' ); @@ -147,9 +147,9 @@ function factory( options ) { seed = randint32()|0; // asm type annotation } if ( state === void 0 ) { - state = new Int32Array( STATE_SIZE ); + state = new Int32Array( STATE_LENGTH ); state[ PRNG_STATE ] = seed; - state = createTable( minstd, state, TABLE_SIZE ); + state = createTable( minstd, state, TABLE_LENGTH ); state[ SHUFFLE_STATE ] = state[ 0 ]; seed = new Int32Array( [ seed ] ); @@ -225,7 +225,7 @@ function factory( options ) { * @returns {PositiveInteger} state length */ function getStateLength() { - return STATE_SIZE + slen; + return STATE_LENGTH + slen; } /** @@ -248,10 +248,10 @@ function factory( options ) { var out = new Int32Array( getStateLength() ); // Copy the internal state: - out = gcopy( STATE_SIZE, state, 1, out, 1 ); + out = gcopy( STATE_LENGTH, state, 1, out, 1 ); // Copy the seed: - out = gcopy.ndarray( slen, seed, 1, 0, out, 1, STATE_SIZE ); + out = gcopy.ndarray( slen, seed, 1, 0, out, 1, STATE_LENGTH ); return out; } @@ -269,15 +269,15 @@ function factory( options ) { throw new TypeError( 'invalid argument. Must provide an Int32Array. Value: `' + s + '`.' ); } // Determine the seed length: - slen = s.length - STATE_SIZE; + slen = s.length - STATE_LENGTH; if ( slen <= 0 ) { throw new RangeError( 'invalid argument. The provided array has insufficient length.' ); } // Update the internal state: - gcopy( STATE_SIZE, s, 1, state, 1 ); + gcopy( STATE_LENGTH, s, 1, state, 1 ); // Set the seed: - seed = gcopy.ndarray( slen, s, 1, STATE_SIZE, new Int32Array( slen ), 1, 0 ); // eslint-disable-line max-len + seed = gcopy.ndarray( slen, s, 1, STATE_LENGTH, new Int32Array( slen ), 1, 0 ); // eslint-disable-line max-len } /** @@ -308,7 +308,7 @@ function factory( options ) { var i; s = state[ SHUFFLE_STATE ]; - i = floor( TABLE_SIZE * (s/INT32_MAX) ); + i = floor( TABLE_LENGTH * (s/INT32_MAX) ); // Pull a state from the table: s = state[ i ]; From 1aa5b1719dfa8a6671acb65f0946c221bfe77df5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 31 Aug 2018 22:46:26 -0700 Subject: [PATCH 0004/1062] Rename property to be consistent with project conventions Examples include typed arrays, ndarrays, complex numbers. --- lib/node_modules/@stdlib/random/base/README.md | 2 +- lib/node_modules/@stdlib/random/base/arcsine/README.md | 4 ++-- lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt | 4 ++-- lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js | 2 +- .../@stdlib/random/base/arcsine/test/test.factory.js | 2 +- lib/node_modules/@stdlib/random/base/arcsine/test/test.js | 2 +- lib/node_modules/@stdlib/random/base/bernoulli/README.md | 4 ++-- .../@stdlib/random/base/bernoulli/docs/repl.txt | 4 ++-- .../@stdlib/random/base/bernoulli/lib/factory.js | 2 +- .../@stdlib/random/base/bernoulli/test/test.factory.js | 2 +- lib/node_modules/@stdlib/random/base/bernoulli/test/test.js | 2 +- lib/node_modules/@stdlib/random/base/beta/README.md | 4 ++-- lib/node_modules/@stdlib/random/base/beta/docs/repl.txt | 4 ++-- lib/node_modules/@stdlib/random/base/beta/lib/factory.js | 2 +- .../@stdlib/random/base/beta/test/test.factory.js | 2 +- lib/node_modules/@stdlib/random/base/beta/test/test.js | 2 +- lib/node_modules/@stdlib/random/base/betaprime/README.md | 4 ++-- .../@stdlib/random/base/betaprime/docs/repl.txt | 4 ++-- .../@stdlib/random/base/betaprime/lib/factory.js | 2 +- .../@stdlib/random/base/betaprime/test/test.factory.js | 2 +- lib/node_modules/@stdlib/random/base/betaprime/test/test.js | 2 +- lib/node_modules/@stdlib/random/base/binomial/README.md | 4 ++-- lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt | 4 ++-- .../@stdlib/random/base/binomial/lib/factory.js | 2 +- .../@stdlib/random/base/binomial/test/test.factory.js | 2 +- lib/node_modules/@stdlib/random/base/binomial/test/test.js | 2 +- lib/node_modules/@stdlib/random/base/box-muller/README.md | 6 +++--- .../@stdlib/random/base/box-muller/docs/repl.txt | 4 ++-- .../@stdlib/random/base/box-muller/lib/factory.js | 4 ++-- .../@stdlib/random/base/box-muller/test/test.factory.js | 4 ++-- .../@stdlib/random/base/box-muller/test/test.js | 2 +- lib/node_modules/@stdlib/random/base/cauchy/README.md | 4 ++-- lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt | 4 ++-- lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js | 2 +- .../@stdlib/random/base/cauchy/test/test.factory.js | 2 +- lib/node_modules/@stdlib/random/base/cauchy/test/test.js | 2 +- lib/node_modules/@stdlib/random/base/chi/README.md | 4 ++-- lib/node_modules/@stdlib/random/base/chi/docs/repl.txt | 4 ++-- lib/node_modules/@stdlib/random/base/chi/lib/factory.js | 2 +- .../@stdlib/random/base/chi/test/test.factory.js | 2 +- lib/node_modules/@stdlib/random/base/chi/test/test.js | 2 +- lib/node_modules/@stdlib/random/base/chisquare/README.md | 4 ++-- .../@stdlib/random/base/chisquare/docs/repl.txt | 4 ++-- .../@stdlib/random/base/chisquare/lib/factory.js | 2 +- .../@stdlib/random/base/chisquare/test/test.factory.js | 2 +- lib/node_modules/@stdlib/random/base/chisquare/test/test.js | 2 +- lib/node_modules/@stdlib/random/base/cosine/README.md | 4 ++-- lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt | 4 ++-- lib/node_modules/@stdlib/random/base/cosine/lib/factory.js | 2 +- .../@stdlib/random/base/cosine/test/test.factory.js | 2 +- lib/node_modules/@stdlib/random/base/cosine/test/test.js | 2 +- .../@stdlib/random/base/discrete-uniform/README.md | 4 ++-- .../@stdlib/random/base/discrete-uniform/docs/repl.txt | 4 ++-- .../@stdlib/random/base/discrete-uniform/lib/factory.js | 2 +- .../random/base/discrete-uniform/test/test.factory.js | 2 +- .../@stdlib/random/base/discrete-uniform/test/test.js | 2 +- lib/node_modules/@stdlib/random/base/erlang/README.md | 4 ++-- lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt | 4 ++-- lib/node_modules/@stdlib/random/base/erlang/lib/factory.js | 2 +- .../@stdlib/random/base/erlang/test/test.factory.js | 2 +- lib/node_modules/@stdlib/random/base/erlang/test/test.js | 2 +- lib/node_modules/@stdlib/random/base/exponential/README.md | 4 ++-- .../@stdlib/random/base/exponential/docs/repl.txt | 4 ++-- .../@stdlib/random/base/exponential/lib/factory.js | 2 +- .../@stdlib/random/base/exponential/test/test.factory.js | 2 +- .../@stdlib/random/base/exponential/test/test.js | 2 +- lib/node_modules/@stdlib/random/base/gamma/README.md | 4 ++-- lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt | 4 ++-- lib/node_modules/@stdlib/random/base/gamma/lib/factory.js | 2 +- .../@stdlib/random/base/gamma/test/test.factory.js | 2 +- lib/node_modules/@stdlib/random/base/gamma/test/test.js | 2 +- .../@stdlib/random/base/improved-ziggurat/README.md | 6 +++--- .../@stdlib/random/base/improved-ziggurat/docs/repl.txt | 4 ++-- .../@stdlib/random/base/improved-ziggurat/lib/factory.js | 6 +++--- .../random/base/improved-ziggurat/test/test.factory.js | 4 ++-- .../@stdlib/random/base/improved-ziggurat/test/test.js | 2 +- .../@stdlib/random/base/minstd-shuffle/README.md | 4 ++-- .../@stdlib/random/base/minstd-shuffle/docs/repl.txt | 4 ++-- .../@stdlib/random/base/minstd-shuffle/lib/factory.js | 4 ++-- .../@stdlib/random/base/minstd-shuffle/test/test.factory.js | 4 ++-- .../@stdlib/random/base/minstd-shuffle/test/test.js | 4 ++-- lib/node_modules/@stdlib/random/base/minstd/README.md | 4 ++-- lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt | 4 ++-- lib/node_modules/@stdlib/random/base/minstd/lib/factory.js | 4 ++-- .../@stdlib/random/base/minstd/test/test.factory.js | 4 ++-- lib/node_modules/@stdlib/random/base/minstd/test/test.js | 4 ++-- lib/node_modules/@stdlib/random/base/mt19937/README.md | 4 ++-- lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt | 4 ++-- lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js | 4 ++-- .../@stdlib/random/base/mt19937/test/test.factory.js | 4 ++-- lib/node_modules/@stdlib/random/base/mt19937/test/test.js | 4 ++-- lib/node_modules/@stdlib/random/base/normal/README.md | 4 ++-- lib/node_modules/@stdlib/random/base/normal/docs/repl.txt | 4 ++-- lib/node_modules/@stdlib/random/base/normal/lib/factory.js | 2 +- .../@stdlib/random/base/normal/test/test.factory.js | 2 +- lib/node_modules/@stdlib/random/base/normal/test/test.js | 2 +- 96 files changed, 150 insertions(+), 150 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/README.md b/lib/node_modules/@stdlib/random/base/README.md index 017fd36b0205..8c085d4fb014 100644 --- a/lib/node_modules/@stdlib/random/base/README.md +++ b/lib/node_modules/@stdlib/random/base/README.md @@ -95,7 +95,7 @@ Attached to each PRNG are the following properties: - **NAME**: the generator name. - **seed**: the value used to seed the PRNG. - **state**: the PRNG state. -- **STATE_SIZE**: the size of the PRNG state. +- **byteLength**: the size of the PRNG state. - **PRNG**: the underlying pseudorandom number generator. Additionally, attached to each PRNG is a `.factory()` method which supports creating a seeded PRNG and thus generating a reproducible sequence of pseudorandom numbers. diff --git a/lib/node_modules/@stdlib/random/base/arcsine/README.md b/lib/node_modules/@stdlib/random/base/arcsine/README.md index 66129f63973d..110a2a4055bc 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/README.md +++ b/lib/node_modules/@stdlib/random/base/arcsine/README.md @@ -199,12 +199,12 @@ var len = arcsine.STATE_LENGTH; // returns ``` -#### arcsine.STATE_SIZE +#### arcsine.byteLength Size (in bytes) of generator state. ```javascript -var sz = arcsine.STATE_SIZE; +var sz = arcsine.byteLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt b/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt index 47d105237879..0b0b8064af94 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt @@ -135,12 +135,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size (in bytes) of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js b/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js index 48da9a69d145..c3da7f29bbde 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js @@ -106,7 +106,7 @@ function factory() { 'set': setState }); setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); - setReadOnly( prng, 'STATE_SIZE', rand.STATE_SIZE ); + setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js b/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js index aed5cfebf4ec..faeebc3b4c38 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js @@ -127,7 +127,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var arcsine = factory(); - t.equal( typeof arcsine.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof arcsine.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/arcsine/test/test.js b/lib/node_modules/@stdlib/random/base/arcsine/test/test.js index 83bb4f470585..1ba68f399ab9 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/test/test.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/test/test.js @@ -64,7 +64,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof arcsine.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof arcsine.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/README.md b/lib/node_modules/@stdlib/random/base/bernoulli/README.md index cf6b91e1b5a2..91e12a6cbfb7 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/README.md +++ b/lib/node_modules/@stdlib/random/base/bernoulli/README.md @@ -202,12 +202,12 @@ var len = bernoulli.STATE_LENGTH; // returns ``` -#### bernoulli.STATE_SIZE +#### bernoulli.byteLength Size (in bytes) of generator state. ```javascript -var sz = bernoulli.STATE_SIZE; +var sz = bernoulli.byteLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt b/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt index d49c5441e1b7..055c1067d0bf 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt @@ -122,12 +122,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size (in bytes) of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js b/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js index 329d0984ec82..bb559c57c028 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js @@ -101,7 +101,7 @@ function factory() { 'set': setState }); setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); - setReadOnly( prng, 'STATE_SIZE', rand.STATE_SIZE ); + setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js index 7c82546f75bf..7c7580cdd3b7 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js @@ -128,7 +128,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var bernoulli = factory(); - t.equal( typeof bernoulli.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof bernoulli.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js index 26896966e4a6..0a8ba70bc27d 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js @@ -65,7 +65,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof bernoulli.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof bernoulli.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/beta/README.md b/lib/node_modules/@stdlib/random/base/beta/README.md index 88e001a924b8..252d8eb42828 100644 --- a/lib/node_modules/@stdlib/random/base/beta/README.md +++ b/lib/node_modules/@stdlib/random/base/beta/README.md @@ -206,12 +206,12 @@ var len = beta.STATE_LENGTH; // returns ``` -#### beta.STATE_SIZE +#### beta.byteLength Size (in bytes) of generator state. ```javascript -var sz = beta.STATE_SIZE; +var sz = beta.byteLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt b/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt index 03dd46c5c60e..77b6d394ddcf 100644 --- a/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt @@ -130,12 +130,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size (in bytes) of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js index 85c59c4b1ea2..0b24a33f7a75 100644 --- a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js @@ -123,7 +123,7 @@ function factory() { 'set': setState }); setReadOnly( prng, 'STATE_LENGTH', N+M ); - setReadOnly( prng, 'STATE_SIZE', prng.STATE_LENGTH*4 ); // 4 bytes per uint32 + setReadOnly( prng, 'byteLength', prng.STATE_LENGTH*4 ); // 4 bytes per uint32 setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js index d4e4a5ab8fd7..9fcb4370631d 100644 --- a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js @@ -188,7 +188,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var beta = factory(); - t.equal( typeof beta.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof beta.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/beta/test/test.js b/lib/node_modules/@stdlib/random/base/beta/test/test.js index a19d34402b2a..8bafbf338fa3 100644 --- a/lib/node_modules/@stdlib/random/base/beta/test/test.js +++ b/lib/node_modules/@stdlib/random/base/beta/test/test.js @@ -64,7 +64,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof beta.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof beta.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/betaprime/README.md b/lib/node_modules/@stdlib/random/base/betaprime/README.md index ab2849706178..77a8e60eaed4 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/README.md +++ b/lib/node_modules/@stdlib/random/base/betaprime/README.md @@ -206,12 +206,12 @@ var len = betaprime.STATE_LENGTH; // returns ``` -#### betaprime.STATE_SIZE +#### betaprime.byteLength Size of generator state. ```javascript -var sz = betaprime.STATE_SIZE; +var sz = betaprime.byteLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt b/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt index a3e921beeb0e..1001cca22bc8 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt @@ -130,12 +130,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size (in bytes) of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js b/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js index 2222df782875..ec5b051ab698 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js @@ -102,7 +102,7 @@ function factory() { 'set': setState }); setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); - setReadOnly( prng, 'STATE_SIZE', rand.STATE_SIZE ); + setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js b/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js index 622a1738a457..bc4b8014a1cc 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js @@ -187,7 +187,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var betaprime = factory(); - t.equal( typeof betaprime.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof betaprime.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/betaprime/test/test.js b/lib/node_modules/@stdlib/random/base/betaprime/test/test.js index 6ed56963d570..dd107296ce89 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/test/test.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/test/test.js @@ -64,7 +64,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof betaprime.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof betaprime.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/binomial/README.md b/lib/node_modules/@stdlib/random/base/binomial/README.md index cd297614ac4b..561b9b7b15cb 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/README.md +++ b/lib/node_modules/@stdlib/random/base/binomial/README.md @@ -206,12 +206,12 @@ var len = binomial.STATE_LENGTH; // returns ``` -#### binomial.STATE_SIZE +#### binomial.byteLength Size (in bytes) of generator state. ```javascript -var sz = binomial.STATE_SIZE; +var sz = binomial.byteLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt b/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt index dd739b776d4d..50214a4bfad6 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt @@ -131,12 +131,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js b/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js index d794154fe7be..1a4fbbf02145 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js @@ -112,7 +112,7 @@ function factory() { 'set': setState }); setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); - setReadOnly( prng, 'STATE_SIZE', rand.STATE_SIZE ); + setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js b/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js index 39e6b981a65b..f074431dd25d 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js @@ -177,7 +177,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var binomial = factory(); - t.equal( typeof binomial.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof binomial.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/binomial/test/test.js b/lib/node_modules/@stdlib/random/base/binomial/test/test.js index e94c9541519a..f85881a3ef4f 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/test/test.js +++ b/lib/node_modules/@stdlib/random/base/binomial/test/test.js @@ -67,7 +67,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof binomial.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof binomial.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/box-muller/README.md b/lib/node_modules/@stdlib/random/base/box-muller/README.md index 848501f95930..264248d0c14c 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/README.md +++ b/lib/node_modules/@stdlib/random/base/box-muller/README.md @@ -255,12 +255,12 @@ var len = rand.STATE_LENGTH; // returns null ``` -#### randn.STATE_SIZE +#### randn.byteLength Size (in bytes) of generator state. ```javascript -var sz = randn.STATE_SIZE; +var sz = randn.byteLength; // returns ``` @@ -273,7 +273,7 @@ var rand = randn.factory({ 'prng': Math.random }); -var sz = rand.STATE_SIZE; +var sz = rand.byteLength; // returns null ``` diff --git a/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt b/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt index 5eb49575604e..5f58787e486f 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt @@ -105,12 +105,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size (in bytes) of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js b/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js index 75adcaea61ac..f8f5a8eced24 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js @@ -108,7 +108,7 @@ function factory( options ) { 'set': noop }); setReadOnly( randn, 'STATE_LENGTH', null ); - setReadOnly( randn, 'STATE_SIZE', null ); + setReadOnly( randn, 'byteLength', null ); } else { defineProperty( randn, 'state', { 'configurable': false, @@ -117,7 +117,7 @@ function factory( options ) { 'set': setState }); setReadOnly( randn, 'STATE_LENGTH', rand.STATE_LENGTH ); - setReadOnly( randn, 'STATE_SIZE', rand.STATE_SIZE ); + setReadOnly( randn, 'byteLength', rand.byteLength ); } setReadOnly( randn, 'PRNG', rand ); diff --git a/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js b/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js index 52b9a8721d57..887de8b1be6d 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js @@ -226,12 +226,12 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var randn = factory(); - t.equal( typeof randn.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof randn.byteLength, 'number', 'has `byteLength` property' ); randn = factory({ 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math }); - t.equal( randn.STATE_SIZE, null, 'equal to `null`' ); + t.equal( randn.byteLength, null, 'equal to `null`' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/box-muller/test/test.js b/lib/node_modules/@stdlib/random/base/box-muller/test/test.js index 20505997e43a..0d9c6bbe42d3 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/test/test.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/test/test.js @@ -76,7 +76,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof randn.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof randn.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/cauchy/README.md b/lib/node_modules/@stdlib/random/base/cauchy/README.md index 40c71a3c6809..e7e8735d290d 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/README.md +++ b/lib/node_modules/@stdlib/random/base/cauchy/README.md @@ -199,12 +199,12 @@ var len = cauchy.STATE_LENGTH; // returns ``` -#### cauchy.STATE_SIZE +#### cauchy.byteLength Size (in bytes) of generator state. ```javascript -var sz = cauchy.STATE_SIZE; +var sz = cauchy.byteLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt b/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt index 5b360e906b09..42d1591e9fa3 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt @@ -128,12 +128,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size (in bytes) of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js b/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js index 766976281497..2364170339b7 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js @@ -102,7 +102,7 @@ function factory() { 'set': setState }); setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); - setReadOnly( prng, 'STATE_SIZE', rand.STATE_SIZE ); + setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js b/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js index 6f1137f64713..d27a61166c94 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js @@ -128,7 +128,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var cauchy = factory(); - t.equal( typeof cauchy.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof cauchy.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/cauchy/test/test.js b/lib/node_modules/@stdlib/random/base/cauchy/test/test.js index 0934fca6bbd6..a1de3339e006 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/test/test.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/test/test.js @@ -64,7 +64,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof cauchy.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof cauchy.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/chi/README.md b/lib/node_modules/@stdlib/random/base/chi/README.md index 994e27ad0b62..814d00237282 100644 --- a/lib/node_modules/@stdlib/random/base/chi/README.md +++ b/lib/node_modules/@stdlib/random/base/chi/README.md @@ -195,12 +195,12 @@ var len = chi.STATE_LENGTH; // returns ``` -#### chi.STATE_SIZE +#### chi.byteLength Size (in bytes) of generator state. ```javascript -var sz = chi.STATE_SIZE; +var sz = chi.byteLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt b/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt index fca6c862835c..ce2901602cf7 100644 --- a/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt @@ -122,12 +122,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size (in bytes) of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/chi/lib/factory.js b/lib/node_modules/@stdlib/random/base/chi/lib/factory.js index b8c1905c310f..03d0de689bc6 100644 --- a/lib/node_modules/@stdlib/random/base/chi/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/chi/lib/factory.js @@ -94,7 +94,7 @@ function factory() { 'set': setState }); setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); - setReadOnly( prng, 'STATE_SIZE', rand.STATE_SIZE ); + setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand.PRNG ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js b/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js index 5afc9183c01d..40797c6398f2 100644 --- a/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js @@ -128,7 +128,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var chi = factory(); - t.equal( typeof chi.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof chi.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/chi/test/test.js b/lib/node_modules/@stdlib/random/base/chi/test/test.js index 806bce92907b..a612cc31be43 100644 --- a/lib/node_modules/@stdlib/random/base/chi/test/test.js +++ b/lib/node_modules/@stdlib/random/base/chi/test/test.js @@ -64,7 +64,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof chi.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof chi.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/chisquare/README.md b/lib/node_modules/@stdlib/random/base/chisquare/README.md index 9bdcedf312c7..0d30981782d5 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/README.md +++ b/lib/node_modules/@stdlib/random/base/chisquare/README.md @@ -195,12 +195,12 @@ var len = chisquare.STATE_LENGTH; // returns ``` -#### chisquare.STATE_SIZE +#### chisquare.byteLength Size (in bytes) of generator state. ```javascript -var sz = chisquare.STATE_SIZE; +var sz = chisquare.byteLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt b/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt index dd0456a5fe42..15181be8f788 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt @@ -122,12 +122,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size (in bytes) of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js b/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js index 135001aeb16d..3bef23352653 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js @@ -94,7 +94,7 @@ function factory() { 'set': setState }); setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); - setReadOnly( prng, 'STATE_SIZE', rand.STATE_SIZE ); + setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand.PRNG ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js b/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js index e838f4796a43..3e6d3e33534c 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js @@ -128,7 +128,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var chisquare = factory(); - t.equal( typeof chisquare.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof chisquare.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/chisquare/test/test.js b/lib/node_modules/@stdlib/random/base/chisquare/test/test.js index 006a812b92b3..32c511795f5d 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/test/test.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/test/test.js @@ -64,7 +64,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof chisquare.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof chisquare.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/cosine/README.md b/lib/node_modules/@stdlib/random/base/cosine/README.md index 09c2e8361037..8a0de5e9a2f9 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/README.md +++ b/lib/node_modules/@stdlib/random/base/cosine/README.md @@ -198,12 +198,12 @@ var len = cosine.STATE_LENGTH; // returns ``` -#### cosine.STATE_SIZE +#### cosine.byteLength Size (in bytes) of generator state. ```javascript -var sz = cosine.STATE_SIZE; +var sz = cosine.byteLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt b/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt index c880b0acf6f2..01db7f177e77 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt @@ -128,12 +128,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size (in bytes) of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js b/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js index 014cf7faca36..49683de14635 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js @@ -103,7 +103,7 @@ function factory() { 'set': setState }); setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); - setReadOnly( prng, 'STATE_SIZE', rand.STATE_SIZE ); + setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js b/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js index 4e5ac24d9fb1..92df03b26f46 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js @@ -128,7 +128,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var cosine = factory(); - t.equal( typeof cosine.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof cosine.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/cosine/test/test.js b/lib/node_modules/@stdlib/random/base/cosine/test/test.js index 022f26733040..c4b742aadbc7 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/test/test.js +++ b/lib/node_modules/@stdlib/random/base/cosine/test/test.js @@ -64,7 +64,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof cosine.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof cosine.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md b/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md index c4d64096a3d2..3e341bf1fc32 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md @@ -199,12 +199,12 @@ var len = discreteUniform.STATE_LENGTH; // returns ``` -#### discreteUniform.STATE_SIZE +#### discreteUniform.byteLength Size (in bytes) of generator state. ```javascript -var sz = discreteUniform.STATE_SIZE; +var sz = discreteUniform.byteLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt b/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt index db2c25d816d0..44989f11ff8e 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt @@ -130,12 +130,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size (in bytes) of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js index f9452812920f..edec9b2fbf56 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js @@ -105,7 +105,7 @@ function factory() { 'set': setState }); setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); - setReadOnly( prng, 'STATE_SIZE', rand.STATE_SIZE ); + setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js index 8e6ccd310030..38a708e1b8fb 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js @@ -130,7 +130,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var discreteUniform = factory(); - t.equal( typeof discreteUniform.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof discreteUniform.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js index 3375434197ba..1ddae93b3cbf 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js @@ -65,7 +65,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof discreteUniform.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof discreteUniform.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/erlang/README.md b/lib/node_modules/@stdlib/random/base/erlang/README.md index 6e7f59fd1c3b..0ce10ed5fc8c 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/README.md +++ b/lib/node_modules/@stdlib/random/base/erlang/README.md @@ -210,12 +210,12 @@ var len = erlang.STATE_LENGTH; // returns ``` -#### erlang.STATE_SIZE +#### erlang.byteLength Size (in bytes) of generator state. ```javascript -var sz = erlang.STATE_SIZE; +var sz = erlang.byteLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt b/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt index 26569559ed18..3a870f6044b3 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt @@ -130,12 +130,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size (in bytes) of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js b/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js index d17dd3f43744..67bfc0eb530a 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js @@ -105,7 +105,7 @@ function factory() { 'set': setState }); setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); - setReadOnly( prng, 'STATE_SIZE', rand.STATE_SIZE ); + setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js b/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js index 311e0bfa16b9..dc8cd47c5cd4 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js @@ -128,7 +128,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var erlang = factory(); - t.equal( typeof erlang.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof erlang.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/erlang/test/test.js b/lib/node_modules/@stdlib/random/base/erlang/test/test.js index 60977fba1dce..96592a94957e 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/test/test.js +++ b/lib/node_modules/@stdlib/random/base/erlang/test/test.js @@ -64,7 +64,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof erlang.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof erlang.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/exponential/README.md b/lib/node_modules/@stdlib/random/base/exponential/README.md index 464c57e802be..c5187e3fe3f0 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/README.md +++ b/lib/node_modules/@stdlib/random/base/exponential/README.md @@ -195,12 +195,12 @@ var len = exponential.STATE_LENGTH; // returns ``` -#### exponential.STATE_SIZE +#### exponential.byteLength Size (in bytes) of generator state. ```javascript -var sz = exponential.STATE_SIZE; +var sz = exponential.byteLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt b/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt index 8a6e9e6d04b5..0eb9c00295c4 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt @@ -122,12 +122,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size (in bytes) of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js b/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js index 8fd25c731e1c..d66e8b7fce52 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js @@ -102,7 +102,7 @@ function factory() { 'set': setState }); setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); - setReadOnly( prng, 'STATE_SIZE', rand.STATE_SIZE ); + setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js b/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js index 666e475e3547..7e0639206dc9 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js @@ -128,7 +128,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var exponential = factory(); - t.equal( typeof exponential.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof exponential.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/exponential/test/test.js b/lib/node_modules/@stdlib/random/base/exponential/test/test.js index b9704b45775b..0ab9a9102ad4 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/test/test.js +++ b/lib/node_modules/@stdlib/random/base/exponential/test/test.js @@ -64,7 +64,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof exponential.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof exponential.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/gamma/README.md b/lib/node_modules/@stdlib/random/base/gamma/README.md index 13b67c62160c..0aba03291001 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/README.md +++ b/lib/node_modules/@stdlib/random/base/gamma/README.md @@ -206,12 +206,12 @@ var len = gamma.STATE_LENGTH; // returns ``` -#### gamma.STATE_SIZE +#### gamma.byteLength Size (in bytes) of generator state. ```javascript -var sz = gamma.STATE_SIZE; +var sz = gamma.byteLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt b/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt index 2d5029f70dba..cf812a68f56c 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt @@ -130,12 +130,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js b/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js index 37cc5372b048..eb6bc158a020 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js @@ -139,7 +139,7 @@ function factory() { 'set': setState }); setReadOnly( prng, 'STATE_LENGTH', N+M ); - setReadOnly( prng, 'STATE_SIZE', prng.STATE_LENGTH*4 ); // 4 bytes per uint32 + setReadOnly( prng, 'byteLength', prng.STATE_LENGTH*4 ); // 4 bytes per uint32 setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js b/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js index b29d0fbef65e..f3b25180283f 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js @@ -129,7 +129,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var gamma = factory(); - t.equal( typeof gamma.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof gamma.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/gamma/test/test.js b/lib/node_modules/@stdlib/random/base/gamma/test/test.js index 2a71abbc1393..b0e3a0676333 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/test/test.js +++ b/lib/node_modules/@stdlib/random/base/gamma/test/test.js @@ -64,7 +64,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof gamma.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof gamma.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md b/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md index b2d139a5c6b5..3131a4ea3c03 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md @@ -236,12 +236,12 @@ var len = rand.STATE_LENGTH; // returns null ``` -#### randn.STATE_SIZE +#### randn.byteLength Size (in bytes) of generator state. ```javascript -var sz = randn.STATE_SIZE; +var sz = randn.byteLength; // returns ``` @@ -254,7 +254,7 @@ var rand = randn.factory({ 'prng': Math.random }); -var sz = rand.STATE_SIZE; +var sz = rand.byteLength; // returns null ``` diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt b/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt index 4cf8a0f7b117..ee00aaf27434 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt @@ -119,12 +119,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size (in bytes) of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js index a21c9b14d90c..7c1e18d7ec36 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js @@ -141,7 +141,7 @@ function factory( options ) { 'set': noop }); setReadOnly( randn, 'STATE_LENGTH', null ); - setReadOnly( randn, 'STATE_SIZE', null ); + setReadOnly( randn, 'byteLength', null ); } else { defineProperty( randn, 'state', { 'configurable': false, @@ -154,7 +154,7 @@ function factory( options ) { 'enumerable': true, 'get': getStateLength }); - defineProperty( randn, 'STATE_SIZE', { + defineProperty( randn, 'byteLength', { 'configurable': false, 'enumerable': true, 'get': getStateSize @@ -191,7 +191,7 @@ function factory( options ) { * @returns {PositiveInteger} state size (in bytes) */ function getStateSize() { - return randu.STATE_SIZE; + return randu.byteLength; } /** diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js index 49f3750b65ee..3a5fe8a94f22 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js @@ -400,12 +400,12 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var randn = factory(); - t.equal( typeof randn.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof randn.byteLength, 'number', 'has `byteLength` property' ); randn = factory({ 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math }); - t.equal( randn.STATE_SIZE, null, 'equal to `null`' ); + t.equal( randn.byteLength, null, 'equal to `null`' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js index 72ae2a1fee80..178c05ed5f37 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js @@ -64,7 +64,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof randn.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof randn.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md b/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md index e4dedd8f3066..a63469c8433c 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md @@ -204,12 +204,12 @@ var len = minstd.STATE_LENGTH; // returns ``` -#### minstd.STATE_SIZE +#### minstd.byteLength Size (in bytes) of generator state. ```javascript -var sz = minstd.STATE_SIZE; +var sz = minstd.byteLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt b/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt index bebb8f215bfc..e6bb669d478c 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt @@ -156,12 +156,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size (in bytes) of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js index 88e4e7a7718d..2784f8eaedf8 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js @@ -172,7 +172,7 @@ function factory( options ) { 'enumerable': true, 'get': getStateLength }); - defineProperty( minstdShuffle, 'STATE_SIZE', { + defineProperty( minstdShuffle, 'byteLength', { 'configurable': false, 'enumerable': true, 'get': getStateSize @@ -198,7 +198,7 @@ function factory( options ) { 'enumerable': true, 'get': getStateLength }); - defineProperty( normalized, 'STATE_SIZE', { + defineProperty( normalized, 'byteLength', { 'configurable': false, 'enumerable': true, 'get': getStateSize diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js index 6e9d5824644c..39e597905940 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js @@ -424,7 +424,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var minstd = factory(); - t.equal( typeof minstd.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof minstd.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); @@ -563,7 +563,7 @@ tape( 'attached to the `normalized` method is the generator state length', funct tape( 'attached to the `normalized` method is the generator state size', function test( t ) { var minstd = factory(); - t.equal( typeof minstd.normalized.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof minstd.normalized.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js index 6a2a1a372ebe..5ffbd31cbab7 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js @@ -76,7 +76,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof minstd.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof minstd.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); @@ -134,7 +134,7 @@ tape( 'attached to the `normalized` method is the generator state length', funct }); tape( 'attached to the `normalized` method is the generator state size', function test( t ) { - t.equal( typeof minstd.normalized.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof minstd.normalized.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/minstd/README.md b/lib/node_modules/@stdlib/random/base/minstd/README.md index d8d15f2a7fde..fd9a91f47ff0 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/README.md +++ b/lib/node_modules/@stdlib/random/base/minstd/README.md @@ -204,12 +204,12 @@ var len = minstd.STATE_LENGTH; // returns ``` -#### minstd.STATE_SIZE +#### minstd.byteLength Size (in bytes) of generator state. ```javascript -var sz = minstd.STATE_SIZE; +var sz = minstd.byteLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt b/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt index 6a561302187d..8b4f10372aa1 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt @@ -154,12 +154,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size (in bytes) of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js b/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js index 16fe15c2210a..5ac63df88b7a 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js @@ -162,7 +162,7 @@ function factory( options ) { 'enumerable': true, 'get': getStateLength }); - defineProperty( minstd, 'STATE_SIZE', { + defineProperty( minstd, 'byteLength', { 'configurable': false, 'enumerable': true, 'get': getStateSize @@ -188,7 +188,7 @@ function factory( options ) { 'enumerable': true, 'get': getStateLength }); - defineProperty( normalized, 'STATE_SIZE', { + defineProperty( normalized, 'byteLength', { 'configurable': false, 'enumerable': true, 'get': getStateSize diff --git a/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js b/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js index 2169f9f1ba37..b35b68146fc2 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js @@ -365,7 +365,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var minstd = factory(); - t.equal( typeof minstd.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof minstd.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); @@ -506,7 +506,7 @@ tape( 'attached to the `normalized` method is the generator state length', funct tape( 'attached to the `normalized` method is the generator state size', function test( t ) { var minstd = factory(); - t.equal( typeof minstd.normalized.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof minstd.normalized.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/minstd/test/test.js b/lib/node_modules/@stdlib/random/base/minstd/test/test.js index 91d95f187f8c..55c5f00ae942 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/test/test.js +++ b/lib/node_modules/@stdlib/random/base/minstd/test/test.js @@ -76,7 +76,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof minstd.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof minstd.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); @@ -134,7 +134,7 @@ tape( 'attached to the `normalized` method is the generator state length', funct }); tape( 'attached to the `normalized` method is the generator state size', function test( t ) { - t.equal( typeof minstd.normalized.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof minstd.normalized.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/mt19937/README.md b/lib/node_modules/@stdlib/random/base/mt19937/README.md index f7410a93473f..39f55b8b16d7 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/README.md +++ b/lib/node_modules/@stdlib/random/base/mt19937/README.md @@ -204,12 +204,12 @@ var len = mt19937.STATE_LENGTH; // returns ``` -#### mt19937.STATE_SIZE +#### mt19937.byteLength Size (in bytes) of generator state. ```javascript -var sz = mt19937.STATE_SIZE; +var sz = mt19937.byteLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt b/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt index 8234f78db4bb..88ec25687254 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt @@ -148,12 +148,12 @@ > var len = {{alias}}.STATE_LENGTH; -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size (in bytes) of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index a4fc1c202015..b10a794a6394 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -451,7 +451,7 @@ function factory( options ) { 'enumerable': true, 'get': getStateLength }); - defineProperty( mt19937, 'STATE_SIZE', { + defineProperty( mt19937, 'byteLength', { 'configurable': false, 'enumerable': true, 'get': getStateSize @@ -476,7 +476,7 @@ function factory( options ) { 'enumerable': true, 'get': getStateLength }); - defineProperty( normalized, 'STATE_SIZE', { + defineProperty( normalized, 'byteLength', { 'configurable': false, 'enumerable': true, 'get': getStateSize diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js index 33e824fc50a2..5a5e3c991170 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js @@ -374,7 +374,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var mt19937 = factory(); - t.equal( typeof mt19937.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof mt19937.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); @@ -507,7 +507,7 @@ tape( 'attached to the `normalized` method is the generator state', function tes tape( 'attached to the `normalized` method is the generator state size', function test( t ) { var mt19937 = factory(); - t.equal( typeof mt19937.normalized.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof mt19937.normalized.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.js index c1608f993d8d..642c5db01739 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.js @@ -77,7 +77,7 @@ tape( 'attached to the main export is the generator state length', function test }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof mt19937.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof mt19937.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); @@ -135,7 +135,7 @@ tape( 'attached to the `normalized` method is the generator state length', funct }); tape( 'attached to the `normalized` method is the generator state size', function test( t ) { - t.equal( typeof mt19937.normalized.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof mt19937.normalized.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/normal/README.md b/lib/node_modules/@stdlib/random/base/normal/README.md index 036dd16186e6..cbae87c3d678 100644 --- a/lib/node_modules/@stdlib/random/base/normal/README.md +++ b/lib/node_modules/@stdlib/random/base/normal/README.md @@ -190,12 +190,12 @@ r = normal( 2.0, 5.0 ); // ... ``` -#### normal.STATE_SIZE +#### normal.byteLength Size of generator state. ```javascript -var sz = normal.STATE_SIZE; +var sz = normal.byteLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/normal/docs/repl.txt b/lib/node_modules/@stdlib/random/base/normal/docs/repl.txt index c78b19a247c4..dcf9aeea3be6 100644 --- a/lib/node_modules/@stdlib/random/base/normal/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/normal/docs/repl.txt @@ -120,12 +120,12 @@ -{{alias}}.STATE_SIZE +{{alias}}.byteLength Size of generator state. Examples -------- - > var sz = {{alias}}.STATE_SIZE; + > var sz = {{alias}}.byteLength; See Also -------- diff --git a/lib/node_modules/@stdlib/random/base/normal/lib/factory.js b/lib/node_modules/@stdlib/random/base/normal/lib/factory.js index bca5aff765ae..7db2abf99753 100644 --- a/lib/node_modules/@stdlib/random/base/normal/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/normal/lib/factory.js @@ -101,7 +101,7 @@ function factory() { 'get': getState, 'set': setState }); - setReadOnly( prng, 'STATE_SIZE', rand.STATE_SIZE ); + setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/normal/test/test.factory.js b/lib/node_modules/@stdlib/random/base/normal/test/test.factory.js index 3b13efd1edd0..23fc52b70ad1 100644 --- a/lib/node_modules/@stdlib/random/base/normal/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/normal/test/test.factory.js @@ -122,7 +122,7 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state size', function test( t ) { var normal = factory(); - t.equal( typeof normal.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof normal.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/normal/test/test.js b/lib/node_modules/@stdlib/random/base/normal/test/test.js index 8d5856e62791..2962ff8aab7f 100644 --- a/lib/node_modules/@stdlib/random/base/normal/test/test.js +++ b/lib/node_modules/@stdlib/random/base/normal/test/test.js @@ -59,7 +59,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof normal.STATE_SIZE, 'number', 'has `STATE_SIZE` property' ); + t.equal( typeof normal.byteLength, 'number', 'has `byteLength` property' ); t.end(); }); From 530a6557c9f444ab7991ed9b763bbf63becfafb8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 31 Aug 2018 22:55:05 -0700 Subject: [PATCH 0005/1062] Rename property --- .../@stdlib/random/base/arcsine/README.md | 4 +- .../@stdlib/random/base/arcsine/docs/repl.txt | 4 +- .../random/base/arcsine/lib/factory.js | 2 +- .../random/base/arcsine/test/test.factory.js | 2 +- .../@stdlib/random/base/arcsine/test/test.js | 2 +- .../@stdlib/random/base/bernoulli/README.md | 4 +- .../random/base/bernoulli/docs/repl.txt | 4 +- .../random/base/bernoulli/lib/factory.js | 2 +- .../base/bernoulli/test/test.factory.js | 2 +- .../random/base/bernoulli/test/test.js | 2 +- .../@stdlib/random/base/beta/README.md | 4 +- .../@stdlib/random/base/beta/docs/repl.txt | 4 +- .../@stdlib/random/base/beta/lib/factory.js | 8 ++-- .../random/base/beta/test/test.factory.js | 2 +- .../@stdlib/random/base/beta/test/test.js | 2 +- .../@stdlib/random/base/betaprime/README.md | 4 +- .../random/base/betaprime/docs/repl.txt | 4 +- .../random/base/betaprime/lib/factory.js | 2 +- .../base/betaprime/test/test.factory.js | 2 +- .../random/base/betaprime/test/test.js | 2 +- .../@stdlib/random/base/binomial/README.md | 4 +- .../random/base/binomial/docs/repl.txt | 4 +- .../random/base/binomial/lib/factory.js | 2 +- .../random/base/binomial/test/test.factory.js | 2 +- .../@stdlib/random/base/binomial/test/test.js | 2 +- .../@stdlib/random/base/box-muller/README.md | 6 +-- .../random/base/box-muller/docs/repl.txt | 4 +- .../random/base/box-muller/lib/factory.js | 4 +- .../base/box-muller/test/test.factory.js | 4 +- .../random/base/box-muller/test/test.js | 2 +- .../@stdlib/random/base/cauchy/README.md | 4 +- .../@stdlib/random/base/cauchy/docs/repl.txt | 4 +- .../@stdlib/random/base/cauchy/lib/factory.js | 2 +- .../random/base/cauchy/test/test.factory.js | 2 +- .../@stdlib/random/base/cauchy/test/test.js | 2 +- .../@stdlib/random/base/chi/README.md | 4 +- .../@stdlib/random/base/chi/docs/repl.txt | 4 +- .../@stdlib/random/base/chi/lib/factory.js | 2 +- .../random/base/chi/test/test.factory.js | 2 +- .../@stdlib/random/base/chi/test/test.js | 2 +- .../@stdlib/random/base/chisquare/README.md | 4 +- .../random/base/chisquare/docs/repl.txt | 4 +- .../random/base/chisquare/lib/factory.js | 2 +- .../base/chisquare/test/test.factory.js | 2 +- .../random/base/chisquare/test/test.js | 2 +- .../@stdlib/random/base/cosine/README.md | 4 +- .../@stdlib/random/base/cosine/docs/repl.txt | 4 +- .../@stdlib/random/base/cosine/lib/factory.js | 2 +- .../random/base/cosine/test/test.factory.js | 2 +- .../@stdlib/random/base/cosine/test/test.js | 2 +- .../random/base/discrete-uniform/README.md | 4 +- .../base/discrete-uniform/docs/repl.txt | 4 +- .../base/discrete-uniform/lib/factory.js | 2 +- .../discrete-uniform/test/test.factory.js | 2 +- .../random/base/discrete-uniform/test/test.js | 2 +- .../@stdlib/random/base/erlang/README.md | 4 +- .../@stdlib/random/base/erlang/docs/repl.txt | 4 +- .../@stdlib/random/base/erlang/lib/factory.js | 2 +- .../random/base/erlang/test/test.factory.js | 2 +- .../@stdlib/random/base/erlang/test/test.js | 2 +- .../@stdlib/random/base/exponential/README.md | 4 +- .../random/base/exponential/docs/repl.txt | 4 +- .../random/base/exponential/lib/factory.js | 2 +- .../base/exponential/test/test.factory.js | 2 +- .../random/base/exponential/test/test.js | 2 +- .../@stdlib/random/base/gamma/README.md | 4 +- .../@stdlib/random/base/gamma/docs/repl.txt | 4 +- .../@stdlib/random/base/gamma/lib/factory.js | 8 ++-- .../random/base/gamma/test/test.factory.js | 2 +- .../@stdlib/random/base/gamma/test/test.js | 2 +- .../random/base/improved-ziggurat/README.md | 6 +-- .../base/improved-ziggurat/docs/repl.txt | 4 +- .../base/improved-ziggurat/lib/factory.js | 6 +-- .../improved-ziggurat/test/test.factory.js | 4 +- .../base/improved-ziggurat/test/test.js | 2 +- .../random/base/minstd-shuffle/README.md | 4 +- .../random/base/minstd-shuffle/docs/repl.txt | 4 +- .../random/base/minstd-shuffle/lib/factory.js | 44 +++++++++---------- .../base/minstd-shuffle/test/test.factory.js | 4 +- .../random/base/minstd-shuffle/test/test.js | 4 +- .../@stdlib/random/base/minstd/README.md | 4 +- .../@stdlib/random/base/minstd/docs/repl.txt | 4 +- .../@stdlib/random/base/minstd/lib/factory.js | 4 +- .../random/base/minstd/test/test.factory.js | 4 +- .../@stdlib/random/base/minstd/test/test.js | 4 +- .../@stdlib/random/base/mt19937/README.md | 4 +- .../@stdlib/random/base/mt19937/docs/repl.txt | 4 +- .../random/base/mt19937/lib/factory.js | 4 +- .../random/base/mt19937/test/test.factory.js | 4 +- .../@stdlib/random/base/mt19937/test/test.js | 4 +- 90 files changed, 168 insertions(+), 168 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/arcsine/README.md b/lib/node_modules/@stdlib/random/base/arcsine/README.md index 110a2a4055bc..cc6fbec47124 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/README.md +++ b/lib/node_modules/@stdlib/random/base/arcsine/README.md @@ -190,12 +190,12 @@ r = arcsine( 2.0, 4.0 ); // ... ``` -#### arcsine.STATE_LENGTH +#### arcsine.stateLength Length of generator state. ```javascript -var len = arcsine.STATE_LENGTH; +var len = arcsine.stateLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt b/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt index 0b0b8064af94..bb6a5a3df881 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt @@ -127,12 +127,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js b/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js index c3da7f29bbde..b2903e486315 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js @@ -105,7 +105,7 @@ function factory() { 'get': getState, 'set': setState }); - setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); + setReadOnly( prng, 'stateLength', rand.stateLength ); setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); diff --git a/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js b/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js index faeebc3b4c38..d21e9fbd6cab 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js @@ -121,7 +121,7 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var arcsine = factory(); - t.equal( typeof arcsine.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof arcsine.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/arcsine/test/test.js b/lib/node_modules/@stdlib/random/base/arcsine/test/test.js index 1ba68f399ab9..a986f69c6676 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/test/test.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/test/test.js @@ -59,7 +59,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof arcsine.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof arcsine.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/README.md b/lib/node_modules/@stdlib/random/base/bernoulli/README.md index 91e12a6cbfb7..c325ae972e86 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/README.md +++ b/lib/node_modules/@stdlib/random/base/bernoulli/README.md @@ -193,12 +193,12 @@ r = bernoulli( 0.3 ); // ... ``` -#### bernoulli.STATE_LENGTH +#### bernoulli.stateLength Length of generator state. ```javascript -var len = bernoulli.STATE_LENGTH; +var len = bernoulli.stateLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt b/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt index 055c1067d0bf..42cfda433d15 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt @@ -114,12 +114,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js b/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js index bb559c57c028..65d14978e989 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js @@ -100,7 +100,7 @@ function factory() { 'get': getState, 'set': setState }); - setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); + setReadOnly( prng, 'stateLength', rand.stateLength ); setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js index 7c7580cdd3b7..fcc89075f428 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js @@ -122,7 +122,7 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var bernoulli = factory(); - t.equal( typeof bernoulli.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof bernoulli.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js index 0a8ba70bc27d..916ff633b909 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js @@ -60,7 +60,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof bernoulli.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof bernoulli.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/beta/README.md b/lib/node_modules/@stdlib/random/base/beta/README.md index 252d8eb42828..429c1fd0023a 100644 --- a/lib/node_modules/@stdlib/random/base/beta/README.md +++ b/lib/node_modules/@stdlib/random/base/beta/README.md @@ -197,12 +197,12 @@ r = beta( 2.0, 5.0 ); // ... ``` -#### beta.STATE_LENGTH +#### beta.stateLength Length of generator state. ```javascript -var len = beta.STATE_LENGTH; +var len = beta.stateLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt b/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt index 77b6d394ddcf..a703c5ff6b4a 100644 --- a/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt @@ -122,12 +122,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js index 0b24a33f7a75..e0eab93d6608 100644 --- a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js @@ -106,8 +106,8 @@ function factory() { 'seed': randint() }); - N = rand.STATE_LENGTH; - M = rnorm.STATE_LENGTH; + N = rand.stateLength; + M = rnorm.stateLength; if ( alpha === void 0 ) { prng = beta2; @@ -122,8 +122,8 @@ function factory() { 'get': getState, 'set': setState }); - setReadOnly( prng, 'STATE_LENGTH', N+M ); - setReadOnly( prng, 'byteLength', prng.STATE_LENGTH*4 ); // 4 bytes per uint32 + setReadOnly( prng, 'stateLength', N+M ); + setReadOnly( prng, 'byteLength', prng.stateLength*4 ); // 4 bytes per uint32 setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js index 9fcb4370631d..185e2d2eef6a 100644 --- a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js @@ -182,7 +182,7 @@ tape( 'attached to the return function is the generator state', function test( t tape( 'attached to the returned function is the generator state length', function test( t ) { var beta = factory(); - t.equal( typeof beta.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof beta.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/beta/test/test.js b/lib/node_modules/@stdlib/random/base/beta/test/test.js index 8bafbf338fa3..a3a5647115c1 100644 --- a/lib/node_modules/@stdlib/random/base/beta/test/test.js +++ b/lib/node_modules/@stdlib/random/base/beta/test/test.js @@ -59,7 +59,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof beta.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof beta.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/betaprime/README.md b/lib/node_modules/@stdlib/random/base/betaprime/README.md index 77a8e60eaed4..718c041711aa 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/README.md +++ b/lib/node_modules/@stdlib/random/base/betaprime/README.md @@ -197,12 +197,12 @@ r = betaprime( 2.0, 5.0 ); // ... ``` -#### betaprime.STATE_LENGTH +#### betaprime.stateLength Length of generator state. ```javascript -var len = betaprime.STATE_LENGTH; +var len = betaprime.stateLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt b/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt index 1001cca22bc8..c9b39b5b5e04 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt @@ -122,12 +122,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js b/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js index ec5b051ab698..ee211325efd2 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js @@ -101,7 +101,7 @@ function factory() { 'get': getState, 'set': setState }); - setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); + setReadOnly( prng, 'stateLength', rand.stateLength ); setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); diff --git a/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js b/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js index bc4b8014a1cc..45cd94096787 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js @@ -181,7 +181,7 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var betaprime = factory(); - t.equal( typeof betaprime.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof betaprime.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/betaprime/test/test.js b/lib/node_modules/@stdlib/random/base/betaprime/test/test.js index dd107296ce89..51c385261e76 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/test/test.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/test/test.js @@ -59,7 +59,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof betaprime.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof betaprime.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/binomial/README.md b/lib/node_modules/@stdlib/random/base/binomial/README.md index 561b9b7b15cb..c62f578658e6 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/README.md +++ b/lib/node_modules/@stdlib/random/base/binomial/README.md @@ -197,12 +197,12 @@ r = binomial( 20, 0.8 ); // ... ``` -#### binomial.STATE_LENGTH +#### binomial.stateLength Length of generator state. ```javascript -var len = binomial.STATE_LENGTH; +var len = binomial.stateLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt b/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt index 50214a4bfad6..447bc0bffad0 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt @@ -123,12 +123,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js b/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js index 1a4fbbf02145..17c9b63432fc 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js @@ -111,7 +111,7 @@ function factory() { 'get': getState, 'set': setState }); - setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); + setReadOnly( prng, 'stateLength', rand.stateLength ); setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); diff --git a/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js b/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js index f074431dd25d..47b013896ca7 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js @@ -171,7 +171,7 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var binomial = factory(); - t.equal( typeof binomial.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof binomial.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/binomial/test/test.js b/lib/node_modules/@stdlib/random/base/binomial/test/test.js index f85881a3ef4f..798e0f6948bc 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/test/test.js +++ b/lib/node_modules/@stdlib/random/base/binomial/test/test.js @@ -62,7 +62,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof binomial.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof binomial.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/box-muller/README.md b/lib/node_modules/@stdlib/random/base/box-muller/README.md index 264248d0c14c..d123107df2ed 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/README.md +++ b/lib/node_modules/@stdlib/random/base/box-muller/README.md @@ -233,12 +233,12 @@ var state = rand.state; // returns null ``` -#### randn.STATE_LENGTH +#### randn.stateLength Length of generator state. ```javascript -var len = randn.STATE_LENGTH; +var len = randn.stateLength; // returns ``` @@ -251,7 +251,7 @@ var rand = randn.factory({ 'prng': Math.random }); -var len = rand.STATE_LENGTH; +var len = rand.stateLength; // returns null ``` diff --git a/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt b/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt index 5f58787e486f..915d7768aa4f 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt @@ -97,12 +97,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js b/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js index f8f5a8eced24..55d31b16c03c 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js @@ -107,7 +107,7 @@ function factory( options ) { 'get': constantFunction( null ), 'set': noop }); - setReadOnly( randn, 'STATE_LENGTH', null ); + setReadOnly( randn, 'stateLength', null ); setReadOnly( randn, 'byteLength', null ); } else { defineProperty( randn, 'state', { @@ -116,7 +116,7 @@ function factory( options ) { 'get': getState, 'set': setState }); - setReadOnly( randn, 'STATE_LENGTH', rand.STATE_LENGTH ); + setReadOnly( randn, 'stateLength', rand.stateLength ); setReadOnly( randn, 'byteLength', rand.byteLength ); } diff --git a/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js b/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js index 887de8b1be6d..07d8f7117aa5 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js @@ -213,12 +213,12 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var randn = factory(); - t.equal( typeof randn.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof randn.stateLength, 'number', 'has `stateLength` property' ); randn = factory({ 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math }); - t.equal( randn.STATE_LENGTH, null, 'equal to `null`' ); + t.equal( randn.stateLength, null, 'equal to `null`' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/box-muller/test/test.js b/lib/node_modules/@stdlib/random/base/box-muller/test/test.js index 0d9c6bbe42d3..c250e0378fc7 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/test/test.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/test/test.js @@ -71,7 +71,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof randn.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof randn.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/cauchy/README.md b/lib/node_modules/@stdlib/random/base/cauchy/README.md index e7e8735d290d..f66520264e6b 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/README.md +++ b/lib/node_modules/@stdlib/random/base/cauchy/README.md @@ -190,12 +190,12 @@ r = cauchy( 2.0, 5.0 ); // ... ``` -#### cauchy.STATE_LENGTH +#### cauchy.stateLength Length of generator state. ```javascript -var len = cauchy.STATE_LENGTH; +var len = cauchy.stateLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt b/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt index 42d1591e9fa3..1aee931bd45c 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt @@ -120,12 +120,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js b/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js index 2364170339b7..e8b95ba22e55 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js @@ -101,7 +101,7 @@ function factory() { 'get': getState, 'set': setState }); - setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); + setReadOnly( prng, 'stateLength', rand.stateLength ); setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); diff --git a/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js b/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js index d27a61166c94..4b60b17a265d 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js @@ -122,7 +122,7 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var cauchy = factory(); - t.equal( typeof cauchy.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof cauchy.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/cauchy/test/test.js b/lib/node_modules/@stdlib/random/base/cauchy/test/test.js index a1de3339e006..28330f37cd73 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/test/test.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/test/test.js @@ -59,7 +59,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof cauchy.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof cauchy.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/chi/README.md b/lib/node_modules/@stdlib/random/base/chi/README.md index 814d00237282..49fa21d1dd96 100644 --- a/lib/node_modules/@stdlib/random/base/chi/README.md +++ b/lib/node_modules/@stdlib/random/base/chi/README.md @@ -186,12 +186,12 @@ r = chi( 2 ); // ... ``` -#### chi.STATE_LENGTH +#### chi.stateLength Length of generator state. ```javascript -var len = chi.STATE_LENGTH; +var len = chi.stateLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt b/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt index ce2901602cf7..1efa7dcc71a4 100644 --- a/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt @@ -114,12 +114,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/chi/lib/factory.js b/lib/node_modules/@stdlib/random/base/chi/lib/factory.js index 03d0de689bc6..d711315a506c 100644 --- a/lib/node_modules/@stdlib/random/base/chi/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/chi/lib/factory.js @@ -93,7 +93,7 @@ function factory() { 'get': getState, 'set': setState }); - setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); + setReadOnly( prng, 'stateLength', rand.stateLength ); setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand.PRNG ); diff --git a/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js b/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js index 40797c6398f2..547cb5468812 100644 --- a/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js @@ -122,7 +122,7 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var chi = factory(); - t.equal( typeof chi.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof chi.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/chi/test/test.js b/lib/node_modules/@stdlib/random/base/chi/test/test.js index a612cc31be43..eeabf3dfdfae 100644 --- a/lib/node_modules/@stdlib/random/base/chi/test/test.js +++ b/lib/node_modules/@stdlib/random/base/chi/test/test.js @@ -59,7 +59,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof chi.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof chi.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/chisquare/README.md b/lib/node_modules/@stdlib/random/base/chisquare/README.md index 0d30981782d5..55bfe4e1f691 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/README.md +++ b/lib/node_modules/@stdlib/random/base/chisquare/README.md @@ -186,12 +186,12 @@ r = chisquare( 2 ); // ... ``` -#### chisquare.STATE_LENGTH +#### chisquare.stateLength Length of generator state. ```javascript -var len = chisquare.STATE_LENGTH; +var len = chisquare.stateLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt b/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt index 15181be8f788..4f3bbfc4842d 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt @@ -114,12 +114,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js b/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js index 3bef23352653..44cb28ed6d11 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js @@ -93,7 +93,7 @@ function factory() { 'get': getState, 'set': setState }); - setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); + setReadOnly( prng, 'stateLength', rand.stateLength ); setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand.PRNG ); diff --git a/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js b/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js index 3e6d3e33534c..473aa76844b8 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js @@ -122,7 +122,7 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var chisquare = factory(); - t.equal( typeof chisquare.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof chisquare.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/chisquare/test/test.js b/lib/node_modules/@stdlib/random/base/chisquare/test/test.js index 32c511795f5d..b29b977f9da3 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/test/test.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/test/test.js @@ -59,7 +59,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof chisquare.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof chisquare.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/cosine/README.md b/lib/node_modules/@stdlib/random/base/cosine/README.md index 8a0de5e9a2f9..c482884ab47f 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/README.md +++ b/lib/node_modules/@stdlib/random/base/cosine/README.md @@ -189,12 +189,12 @@ r = cosine( 2.0, 5.0 ); // ... ``` -#### cosine.STATE_LENGTH +#### cosine.stateLength Length of generator state. ```javascript -var len = cosine.STATE_LENGTH; +var len = cosine.stateLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt b/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt index 01db7f177e77..32f1edf0950d 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt @@ -120,12 +120,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js b/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js index 49683de14635..320786992a90 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js @@ -102,7 +102,7 @@ function factory() { 'get': getState, 'set': setState }); - setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); + setReadOnly( prng, 'stateLength', rand.stateLength ); setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); diff --git a/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js b/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js index 92df03b26f46..a3f82462b473 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js @@ -122,7 +122,7 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var cosine = factory(); - t.equal( typeof cosine.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof cosine.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/cosine/test/test.js b/lib/node_modules/@stdlib/random/base/cosine/test/test.js index c4b742aadbc7..0d2442b12d77 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/test/test.js +++ b/lib/node_modules/@stdlib/random/base/cosine/test/test.js @@ -59,7 +59,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof cosine.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof cosine.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md b/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md index 3e341bf1fc32..a95d5a0c0368 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md @@ -190,12 +190,12 @@ r = discreteUniform( -10, 10 ); // ... ``` -#### discreteUniform.STATE_LENGTH +#### discreteUniform.stateLength Length of generator state. ```javascript -var len = discreteUniform.STATE_LENGTH; +var len = discreteUniform.stateLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt b/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt index 44989f11ff8e..2b42857a3ea5 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt @@ -122,12 +122,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js index edec9b2fbf56..54ed5004ef00 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js @@ -104,7 +104,7 @@ function factory() { 'get': getState, 'set': setState }); - setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); + setReadOnly( prng, 'stateLength', rand.stateLength ); setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js index 38a708e1b8fb..e3c935d31799 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js @@ -124,7 +124,7 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var discreteUniform = factory(); - t.equal( typeof discreteUniform.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof discreteUniform.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js index 1ddae93b3cbf..5872de81c233 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js @@ -60,7 +60,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof discreteUniform.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof discreteUniform.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/erlang/README.md b/lib/node_modules/@stdlib/random/base/erlang/README.md index 0ce10ed5fc8c..f3f6b6fac2e2 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/README.md +++ b/lib/node_modules/@stdlib/random/base/erlang/README.md @@ -201,12 +201,12 @@ r = erlang( 2, 4.0 ); // ... ``` -#### erlang.STATE_LENGTH +#### erlang.stateLength Length of generator state. ```javascript -var len = erlang.STATE_LENGTH; +var len = erlang.stateLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt b/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt index 3a870f6044b3..a4ef7173b40b 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt @@ -122,12 +122,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js b/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js index 67bfc0eb530a..748c5b61e6a5 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js @@ -104,7 +104,7 @@ function factory() { 'get': getState, 'set': setState }); - setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); + setReadOnly( prng, 'stateLength', rand.stateLength ); setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); diff --git a/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js b/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js index dc8cd47c5cd4..c46e2f69b703 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js @@ -122,7 +122,7 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var erlang = factory(); - t.equal( typeof erlang.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof erlang.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/erlang/test/test.js b/lib/node_modules/@stdlib/random/base/erlang/test/test.js index 96592a94957e..6dc7f21fe6e1 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/test/test.js +++ b/lib/node_modules/@stdlib/random/base/erlang/test/test.js @@ -59,7 +59,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof erlang.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof erlang.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/exponential/README.md b/lib/node_modules/@stdlib/random/base/exponential/README.md index c5187e3fe3f0..724fd84b38c1 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/README.md +++ b/lib/node_modules/@stdlib/random/base/exponential/README.md @@ -186,12 +186,12 @@ r = exponential( 7.9 ); // ... ``` -#### exponential.STATE_LENGTH +#### exponential.stateLength Length of generator state. ```javascript -var len = exponential.STATE_LENGTH; +var len = exponential.stateLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt b/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt index 0eb9c00295c4..630649e09898 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt @@ -114,12 +114,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js b/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js index d66e8b7fce52..b4a3adf9d4e3 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js @@ -101,7 +101,7 @@ function factory() { 'get': getState, 'set': setState }); - setReadOnly( prng, 'STATE_LENGTH', rand.STATE_LENGTH ); + setReadOnly( prng, 'stateLength', rand.stateLength ); setReadOnly( prng, 'byteLength', rand.byteLength ); setReadOnly( prng, 'PRNG', rand ); diff --git a/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js b/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js index 7e0639206dc9..99e6cb01e29e 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js @@ -122,7 +122,7 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var exponential = factory(); - t.equal( typeof exponential.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof exponential.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/exponential/test/test.js b/lib/node_modules/@stdlib/random/base/exponential/test/test.js index 0ab9a9102ad4..b762c73d1fe8 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/test/test.js +++ b/lib/node_modules/@stdlib/random/base/exponential/test/test.js @@ -59,7 +59,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof exponential.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof exponential.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/gamma/README.md b/lib/node_modules/@stdlib/random/base/gamma/README.md index 0aba03291001..6e554aee8253 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/README.md +++ b/lib/node_modules/@stdlib/random/base/gamma/README.md @@ -197,12 +197,12 @@ r = gamma( 2.0, 5.0 ); // ... ``` -#### gamma.STATE_LENGTH +#### gamma.stateLength Length of generator state. ```javascript -var len = gamma.STATE_LENGTH; +var len = gamma.stateLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt b/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt index cf812a68f56c..e29aea07a5cb 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt @@ -122,12 +122,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js b/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js index eb6bc158a020..0d9a9718672e 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js @@ -115,8 +115,8 @@ function factory() { 'seed': randi() }); - N = rand.STATE_LENGTH; - M = rnorm.STATE_LENGTH; + N = rand.stateLength; + M = rnorm.stateLength; if ( alpha === void 0 ) { prng = gamma2; @@ -138,8 +138,8 @@ function factory() { 'get': getState, 'set': setState }); - setReadOnly( prng, 'STATE_LENGTH', N+M ); - setReadOnly( prng, 'byteLength', prng.STATE_LENGTH*4 ); // 4 bytes per uint32 + setReadOnly( prng, 'stateLength', N+M ); + setReadOnly( prng, 'byteLength', prng.stateLength*4 ); // 4 bytes per uint32 setReadOnly( prng, 'PRNG', rand ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js b/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js index f3b25180283f..26584b266d20 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js @@ -123,7 +123,7 @@ tape( 'attached to the return function is the generator state', function test( t tape( 'attached to the returned function is the generator state length', function test( t ) { var gamma = factory(); - t.equal( typeof gamma.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof gamma.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/gamma/test/test.js b/lib/node_modules/@stdlib/random/base/gamma/test/test.js index b0e3a0676333..38d246501d5a 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/test/test.js +++ b/lib/node_modules/@stdlib/random/base/gamma/test/test.js @@ -59,7 +59,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof gamma.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof gamma.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md b/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md index 3131a4ea3c03..de7fdde84d7b 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md @@ -214,12 +214,12 @@ var state = rand.state; // returns null ``` -#### randn.STATE_LENGTH +#### randn.stateLength Length of generator state. ```javascript -var len = randn.STATE_LENGTH; +var len = randn.stateLength; // returns ``` @@ -232,7 +232,7 @@ var rand = randn.factory({ 'prng': Math.random }); -var len = rand.STATE_LENGTH; +var len = rand.stateLength; // returns null ``` diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt b/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt index ee00aaf27434..9fb428e4ef49 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt @@ -111,12 +111,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js index 7c1e18d7ec36..ce88547e321d 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js @@ -140,7 +140,7 @@ function factory( options ) { 'get': constantFunction( null ), 'set': noop }); - setReadOnly( randn, 'STATE_LENGTH', null ); + setReadOnly( randn, 'stateLength', null ); setReadOnly( randn, 'byteLength', null ); } else { defineProperty( randn, 'state', { @@ -149,7 +149,7 @@ function factory( options ) { 'get': getState, 'set': setState }); - defineProperty( randn, 'STATE_LENGTH', { + defineProperty( randn, 'stateLength', { 'configurable': false, 'enumerable': true, 'get': getStateLength @@ -181,7 +181,7 @@ function factory( options ) { * @returns {PositiveInteger} state length */ function getStateLength() { - return randu.STATE_LENGTH; + return randu.stateLength; } /** diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js index 3a5fe8a94f22..dfa3e4ac7dde 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js @@ -389,12 +389,12 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var randn = factory(); - t.equal( typeof randn.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof randn.stateLength, 'number', 'has `stateLength` property' ); randn = factory({ 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math }); - t.equal( randn.STATE_LENGTH, null, 'equal to `null`' ); + t.equal( randn.stateLength, null, 'equal to `null`' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js index 178c05ed5f37..aa0472813b0e 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js @@ -59,7 +59,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof randn.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof randn.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md b/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md index a63469c8433c..06a0f424e3d3 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md @@ -195,12 +195,12 @@ r = minstd(); // ... ``` -#### minstd.STATE_LENGTH +#### minstd.stateLength Length of generator state. ```javascript -var len = minstd.STATE_LENGTH; +var len = minstd.stateLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt b/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt index e6bb669d478c..2179c8ff9545 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt @@ -148,12 +148,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js index 2784f8eaedf8..57c39550024e 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js @@ -40,10 +40,10 @@ var randint32 = require( './rand_int32.js' ); var NORMALIZATION_CONSTANT = (INT32_MAX - 1)|0; // asm type annotation var MAX_SEED = (INT32_MAX - 1)|0; // asm type annotation -var TABLE_LENGTH = 32; -var STATE_LENGTH = TABLE_LENGTH + 2; -var SHUFFLE_STATE = STATE_LENGTH - 1; // index -var PRNG_STATE = STATE_LENGTH - 2; // index +var TABLE_LEN = 32; +var STATE_LEN = TABLE_LEN + 2; +var SHUFFLE_STATE = STATE_LEN - 1; // index +var PRNG_STATE = STATE_LEN - 2; // index var A = 16807|0; // asm type annotation @@ -98,22 +98,22 @@ function factory( options ) { throw new TypeError( 'invalid option. `state` option must be an Int32Array. Option: `' + state + '`.' ); } // Determine the seed length: - slen = state.length - STATE_LENGTH; + slen = state.length - STATE_LEN; if ( slen <= 0 ) { throw new RangeError( 'invalid option. `state` option has insufficient length.' ); } if ( options.copy === false ) { // Create a state "view": - state = new Int32Array( state.buffer, state.byteOffset, STATE_LENGTH ); // eslint-disable-line max-len + state = new Int32Array( state.buffer, state.byteOffset, STATE_LEN ); // eslint-disable-line max-len // Create a seed "view": - seed = new Int32Array( state.buffer, state.byteOffset+(STATE_LENGTH*state.BYTES_PER_ELEMENT), slen ); // eslint-disable-line max-len + seed = new Int32Array( state.buffer, state.byteOffset+(STATE_LEN*state.BYTES_PER_ELEMENT), slen ); // eslint-disable-line max-len } else { // Extract the state: - state = gcopy( STATE_LENGTH, state, 1, new Int32Array( STATE_LENGTH ), 1 ); // eslint-disable-line max-len + state = gcopy( STATE_LEN, state, 1, new Int32Array( STATE_LEN ), 1 ); // eslint-disable-line max-len // Extract the PRNG seed: - seed = gcopy.ndarray( slen, state, 1, STATE_LENGTH, new Int32Array( slen ), 1, 0 ); // eslint-disable-line max-len + seed = gcopy.ndarray( slen, state, 1, STATE_LEN, new Int32Array( slen ), 1, 0 ); // eslint-disable-line max-len } } // If provided a PRNG state, we ignore the `seed` option... @@ -132,9 +132,9 @@ function factory( options ) { seed = gcopy( slen, seed, 1, new Int32Array( slen ), 1 ); // Initialize the internal PRNG state: - state = new Int32Array( STATE_LENGTH ); + state = new Int32Array( STATE_LEN ); state[ PRNG_STATE ] = seed[ 0 ]; - state = createTable( minstd, state, TABLE_LENGTH ); + state = createTable( minstd, state, TABLE_LEN ); state[ SHUFFLE_STATE ] = state[ 0 ]; } else { throw new TypeError( 'invalid option. `seed` option must be either a positive integer less than the maximum signed 32-bit integer or an array-like object containing integer values less than the maximum signed 32-bit integer. Option: `' + seed + '`.' ); @@ -147,9 +147,9 @@ function factory( options ) { seed = randint32()|0; // asm type annotation } if ( state === void 0 ) { - state = new Int32Array( STATE_LENGTH ); + state = new Int32Array( STATE_LEN ); state[ PRNG_STATE ] = seed; - state = createTable( minstd, state, TABLE_LENGTH ); + state = createTable( minstd, state, TABLE_LEN ); state[ SHUFFLE_STATE ] = state[ 0 ]; seed = new Int32Array( [ seed ] ); @@ -167,7 +167,7 @@ function factory( options ) { 'get': getState, 'set': setState }); - defineProperty( minstdShuffle, 'STATE_LENGTH', { + defineProperty( minstdShuffle, 'stateLength', { 'configurable': false, 'enumerable': true, 'get': getStateLength @@ -193,7 +193,7 @@ function factory( options ) { 'get': getState, 'set': setState }); - defineProperty( normalized, 'STATE_LENGTH', { + defineProperty( normalized, 'stateLength', { 'configurable': false, 'enumerable': true, 'get': getStateLength @@ -225,7 +225,7 @@ function factory( options ) { * @returns {PositiveInteger} state length */ function getStateLength() { - return STATE_LENGTH + slen; + return STATE_LEN + slen; } /** @@ -248,10 +248,10 @@ function factory( options ) { var out = new Int32Array( getStateLength() ); // Copy the internal state: - out = gcopy( STATE_LENGTH, state, 1, out, 1 ); + out = gcopy( STATE_LEN, state, 1, out, 1 ); // Copy the seed: - out = gcopy.ndarray( slen, seed, 1, 0, out, 1, STATE_LENGTH ); + out = gcopy.ndarray( slen, seed, 1, 0, out, 1, STATE_LEN ); return out; } @@ -269,15 +269,15 @@ function factory( options ) { throw new TypeError( 'invalid argument. Must provide an Int32Array. Value: `' + s + '`.' ); } // Determine the seed length: - slen = s.length - STATE_LENGTH; + slen = s.length - STATE_LEN; if ( slen <= 0 ) { throw new RangeError( 'invalid argument. The provided array has insufficient length.' ); } // Update the internal state: - gcopy( STATE_LENGTH, s, 1, state, 1 ); + gcopy( STATE_LEN, s, 1, state, 1 ); // Set the seed: - seed = gcopy.ndarray( slen, s, 1, STATE_LENGTH, new Int32Array( slen ), 1, 0 ); // eslint-disable-line max-len + seed = gcopy.ndarray( slen, s, 1, STATE_LEN, new Int32Array( slen ), 1, 0 ); // eslint-disable-line max-len } /** @@ -308,7 +308,7 @@ function factory( options ) { var i; s = state[ SHUFFLE_STATE ]; - i = floor( TABLE_LENGTH * (s/INT32_MAX) ); + i = floor( TABLE_LEN * (s/INT32_MAX) ); // Pull a state from the table: s = state[ i ]; diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js index 39e597905940..932de46f6e48 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js @@ -418,7 +418,7 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var minstd = factory(); - t.equal( typeof minstd.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof minstd.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); @@ -557,7 +557,7 @@ tape( 'attached to the `normalized` method is the generator state', function tes tape( 'attached to the `normalized` method is the generator state length', function test( t ) { var minstd = factory(); - t.equal( typeof minstd.normalized.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof minstd.normalized.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js index 5ffbd31cbab7..fc0b3e1a8f64 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js @@ -71,7 +71,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof minstd.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof minstd.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); @@ -129,7 +129,7 @@ tape( 'attached to the `normalized` method is the generator state', function tes }); tape( 'attached to the `normalized` method is the generator state length', function test( t ) { - t.equal( typeof minstd.normalized.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof minstd.normalized.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/minstd/README.md b/lib/node_modules/@stdlib/random/base/minstd/README.md index fd9a91f47ff0..3f2ff953e440 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/README.md +++ b/lib/node_modules/@stdlib/random/base/minstd/README.md @@ -195,12 +195,12 @@ r = minstd(); // ... ``` -#### minstd.STATE_LENGTH +#### minstd.stateLength Length of generator state. ```javascript -var len = minstd.STATE_LENGTH; +var len = minstd.stateLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt b/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt index 8b4f10372aa1..f622d796d349 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt @@ -146,12 +146,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js b/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js index 5ac63df88b7a..e15ff2f09476 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js @@ -157,7 +157,7 @@ function factory( options ) { 'get': getState, 'set': setState }); - defineProperty( minstd, 'STATE_LENGTH', { + defineProperty( minstd, 'stateLength', { 'configurable': false, 'enumerable': true, 'get': getStateLength @@ -183,7 +183,7 @@ function factory( options ) { 'get': getState, 'set': setState }); - defineProperty( normalized, 'STATE_LENGTH', { + defineProperty( normalized, 'stateLength', { 'configurable': false, 'enumerable': true, 'get': getStateLength diff --git a/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js b/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js index b35b68146fc2..4d523ca09632 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js @@ -359,7 +359,7 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var minstd = factory(); - t.equal( typeof minstd.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof minstd.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); @@ -500,7 +500,7 @@ tape( 'attached to the `normalized` method is the generator state', function tes tape( 'attached to the `normalized` method is the generator state length', function test( t ) { var minstd = factory(); - t.equal( typeof minstd.normalized.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof minstd.normalized.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/minstd/test/test.js b/lib/node_modules/@stdlib/random/base/minstd/test/test.js index 55c5f00ae942..52913df49549 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/test/test.js +++ b/lib/node_modules/@stdlib/random/base/minstd/test/test.js @@ -71,7 +71,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof minstd.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof minstd.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); @@ -129,7 +129,7 @@ tape( 'attached to the `normalized` method is the generator state', function tes }); tape( 'attached to the `normalized` method is the generator state length', function test( t ) { - t.equal( typeof minstd.normalized.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof minstd.normalized.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/mt19937/README.md b/lib/node_modules/@stdlib/random/base/mt19937/README.md index 39f55b8b16d7..7b7cd6f72149 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/README.md +++ b/lib/node_modules/@stdlib/random/base/mt19937/README.md @@ -195,12 +195,12 @@ r = mt19937(); // ... ``` -#### mt19937.STATE_LENGTH +#### mt19937.stateLength Length of generator state. ```javascript -var len = mt19937.STATE_LENGTH; +var len = mt19937.stateLength; // returns ``` diff --git a/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt b/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt index 88ec25687254..ab839f7e6b1b 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt @@ -140,12 +140,12 @@ -{{alias}}.STATE_LENGTH +{{alias}}.stateLength Length of generator state. Examples -------- - > var len = {{alias}}.STATE_LENGTH; + > var len = {{alias}}.stateLength; {{alias}}.byteLength diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index b10a794a6394..e3708bd5d8f8 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -446,7 +446,7 @@ function factory( options ) { 'get': getState, 'set': setState }); - defineProperty( mt19937, 'STATE_LENGTH', { + defineProperty( mt19937, 'stateLength', { 'configurable': false, 'enumerable': true, 'get': getStateLength @@ -471,7 +471,7 @@ function factory( options ) { 'get': getState, 'set': setState }); - defineProperty( normalized, 'STATE_LENGTH', { + defineProperty( normalized, 'stateLength', { 'configurable': false, 'enumerable': true, 'get': getStateLength diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js index 5a5e3c991170..6f365e1eb04f 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js @@ -368,7 +368,7 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var mt19937 = factory(); - t.equal( typeof mt19937.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof mt19937.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); @@ -513,7 +513,7 @@ tape( 'attached to the `normalized` method is the generator state size', functio tape( 'attached to the `normalized` method is the generator state length', function test( t ) { var mt19937 = factory(); - t.equal( typeof mt19937.normalized.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof mt19937.normalized.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.js index 642c5db01739..ae20ecf175c2 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.js @@ -72,7 +72,7 @@ tape( 'attached to the main export is the generator state', function test( t ) { }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof mt19937.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof mt19937.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); @@ -130,7 +130,7 @@ tape( 'attached to the `normalized` method is the generator state', function tes }); tape( 'attached to the `normalized` method is the generator state length', function test( t ) { - t.equal( typeof mt19937.normalized.STATE_LENGTH, 'number', 'has `STATE_LENGTH` property' ); + t.equal( typeof mt19937.normalized.stateLength, 'number', 'has `stateLength` property' ); t.end(); }); From 53b215531662e931efbc633e76abe82d2d770720 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 31 Aug 2018 23:01:15 -0700 Subject: [PATCH 0006/1062] Update function descriptions --- .../base/improved-ziggurat/lib/factory.js | 10 ++-- .../random/base/minstd-shuffle/lib/factory.js | 50 +++++++++---------- .../@stdlib/random/base/minstd/lib/factory.js | 10 ++-- .../random/base/mt19937/lib/factory.js | 10 ++-- 4 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js index ce88547e321d..b18876730ead 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js @@ -165,7 +165,7 @@ function factory( options ) { return randn; /** - * Returns the generator seed. + * Returns the PRNG seed. * * @private * @returns {*} seed @@ -175,7 +175,7 @@ function factory( options ) { } /** - * Returns the current pseudorandom number generate state length. + * Returns the current PRNG state length. * * @private * @returns {PositiveInteger} state length @@ -185,7 +185,7 @@ function factory( options ) { } /** - * Returns the current pseudorandom number generate state size (in bytes). + * Returns the current PRNG state size (in bytes). * * @private * @returns {PositiveInteger} state size (in bytes) @@ -195,7 +195,7 @@ function factory( options ) { } /** - * Returns the current pseudorandom number generator state. + * Returns the current PRNG state. * * @private * @returns {Uint32Array} current state @@ -205,7 +205,7 @@ function factory( options ) { } /** - * Sets the pseudorandom number generator state. + * Sets the PRNG state. * * @private * @param {Uint32Array} s - generator state diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js index 57c39550024e..73ef0c2b42c9 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js @@ -40,10 +40,10 @@ var randint32 = require( './rand_int32.js' ); var NORMALIZATION_CONSTANT = (INT32_MAX - 1)|0; // asm type annotation var MAX_SEED = (INT32_MAX - 1)|0; // asm type annotation -var TABLE_LEN = 32; -var STATE_LEN = TABLE_LEN + 2; -var SHUFFLE_STATE = STATE_LEN - 1; // index -var PRNG_STATE = STATE_LEN - 2; // index +var TABLE_LENGTH = 32; +var STATE_LENGTH = TABLE_LENGTH + 2; +var SHUFFLE_STATE = STATE_LENGTH - 1; // index +var PRNG_STATE = STATE_LENGTH - 2; // index var A = 16807|0; // asm type annotation @@ -98,22 +98,22 @@ function factory( options ) { throw new TypeError( 'invalid option. `state` option must be an Int32Array. Option: `' + state + '`.' ); } // Determine the seed length: - slen = state.length - STATE_LEN; + slen = state.length - STATE_LENGTH; if ( slen <= 0 ) { throw new RangeError( 'invalid option. `state` option has insufficient length.' ); } if ( options.copy === false ) { // Create a state "view": - state = new Int32Array( state.buffer, state.byteOffset, STATE_LEN ); // eslint-disable-line max-len + state = new Int32Array( state.buffer, state.byteOffset, STATE_LENGTH ); // eslint-disable-line max-len // Create a seed "view": - seed = new Int32Array( state.buffer, state.byteOffset+(STATE_LEN*state.BYTES_PER_ELEMENT), slen ); // eslint-disable-line max-len + seed = new Int32Array( state.buffer, state.byteOffset+(STATE_LENGTH*state.BYTES_PER_ELEMENT), slen ); // eslint-disable-line max-len } else { // Extract the state: - state = gcopy( STATE_LEN, state, 1, new Int32Array( STATE_LEN ), 1 ); // eslint-disable-line max-len + state = gcopy( STATE_LENGTH, state, 1, new Int32Array( STATE_LENGTH ), 1 ); // eslint-disable-line max-len // Extract the PRNG seed: - seed = gcopy.ndarray( slen, state, 1, STATE_LEN, new Int32Array( slen ), 1, 0 ); // eslint-disable-line max-len + seed = gcopy.ndarray( slen, state, 1, STATE_LENGTH, new Int32Array( slen ), 1, 0 ); // eslint-disable-line max-len } } // If provided a PRNG state, we ignore the `seed` option... @@ -132,9 +132,9 @@ function factory( options ) { seed = gcopy( slen, seed, 1, new Int32Array( slen ), 1 ); // Initialize the internal PRNG state: - state = new Int32Array( STATE_LEN ); + state = new Int32Array( STATE_LENGTH ); state[ PRNG_STATE ] = seed[ 0 ]; - state = createTable( minstd, state, TABLE_LEN ); + state = createTable( minstd, state, TABLE_LENGTH ); state[ SHUFFLE_STATE ] = state[ 0 ]; } else { throw new TypeError( 'invalid option. `seed` option must be either a positive integer less than the maximum signed 32-bit integer or an array-like object containing integer values less than the maximum signed 32-bit integer. Option: `' + seed + '`.' ); @@ -147,9 +147,9 @@ function factory( options ) { seed = randint32()|0; // asm type annotation } if ( state === void 0 ) { - state = new Int32Array( STATE_LEN ); + state = new Int32Array( STATE_LENGTH ); state[ PRNG_STATE ] = seed; - state = createTable( minstd, state, TABLE_LEN ); + state = createTable( minstd, state, TABLE_LENGTH ); state[ SHUFFLE_STATE ] = state[ 0 ]; seed = new Int32Array( [ seed ] ); @@ -209,7 +209,7 @@ function factory( options ) { return minstdShuffle; /** - * Returns the generator seed. + * Returns the PRNG seed. * * @private * @returns {Int32Array} seed @@ -219,17 +219,17 @@ function factory( options ) { } /** - * Returns the current pseudorandom number generate state length. + * Returns the current PRNG state length. * * @private * @returns {PositiveInteger} state length */ function getStateLength() { - return STATE_LEN + slen; + return STATE_LENGTH + slen; } /** - * Returns the current pseudorandom number generate state size (in bytes). + * Returns the current PRNG state size (in bytes). * * @private * @returns {PositiveInteger} state size (in bytes) @@ -239,7 +239,7 @@ function factory( options ) { } /** - * Returns the current pseudorandom number generator state. + * Returns the current PRNG state. * * @private * @returns {Int32Array} current state @@ -248,16 +248,16 @@ function factory( options ) { var out = new Int32Array( getStateLength() ); // Copy the internal state: - out = gcopy( STATE_LEN, state, 1, out, 1 ); + out = gcopy( STATE_LENGTH, state, 1, out, 1 ); // Copy the seed: - out = gcopy.ndarray( slen, seed, 1, 0, out, 1, STATE_LEN ); + out = gcopy.ndarray( slen, seed, 1, 0, out, 1, STATE_LENGTH ); return out; } /** - * Sets the pseudorandom number generator state. + * Sets the PRNG state. * * @private * @param {Int32Array} s - generator state @@ -269,15 +269,15 @@ function factory( options ) { throw new TypeError( 'invalid argument. Must provide an Int32Array. Value: `' + s + '`.' ); } // Determine the seed length: - slen = s.length - STATE_LEN; + slen = s.length - STATE_LENGTH; if ( slen <= 0 ) { throw new RangeError( 'invalid argument. The provided array has insufficient length.' ); } // Update the internal state: - gcopy( STATE_LEN, s, 1, state, 1 ); + gcopy( STATE_LENGTH, s, 1, state, 1 ); // Set the seed: - seed = gcopy.ndarray( slen, s, 1, STATE_LEN, new Int32Array( slen ), 1, 0 ); // eslint-disable-line max-len + seed = gcopy.ndarray( slen, s, 1, STATE_LENGTH, new Int32Array( slen ), 1, 0 ); // eslint-disable-line max-len } /** @@ -308,7 +308,7 @@ function factory( options ) { var i; s = state[ SHUFFLE_STATE ]; - i = floor( TABLE_LEN * (s/INT32_MAX) ); + i = floor( TABLE_LENGTH * (s/INT32_MAX) ); // Pull a state from the table: s = state[ i ]; diff --git a/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js b/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js index e15ff2f09476..f902158b3e62 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js @@ -199,7 +199,7 @@ function factory( options ) { return minstd; /** - * Returns the generator seed. + * Returns the PRNG seed. * * @private * @returns {Int32Array} seed @@ -209,7 +209,7 @@ function factory( options ) { } /** - * Returns the current pseudorandom number generate state length. + * Returns the current PRNG state length. * * @private * @returns {PositiveInteger} state length @@ -219,7 +219,7 @@ function factory( options ) { } /** - * Returns the current pseudorandom number generate state size (in bytes). + * Returns the current PRNG state size (in bytes). * * @private * @returns {PositiveInteger} state size (in bytes) @@ -229,7 +229,7 @@ function factory( options ) { } /** - * Returns the current pseudorandom number generator state. + * Returns the current PRNG state. * * @private * @returns {Int32Array} current state @@ -247,7 +247,7 @@ function factory( options ) { } /** - * Sets the pseudorandom number generator state. + * Sets the PRNG state. * * @private * @param {Int32Array} s - generator state diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index e3708bd5d8f8..365c6be2c3c8 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -485,7 +485,7 @@ function factory( options ) { return mt19937; /** - * Returns the generator seed. + * Returns the PRNG seed. * * @private * @returns {Uint32Array} seed @@ -495,7 +495,7 @@ function factory( options ) { } /** - * Returns the current pseudorandom number generate state length. + * Returns the current PRNG state length. * * @private * @returns {PositiveInteger} state length @@ -505,7 +505,7 @@ function factory( options ) { } /** - * Returns the current pseudorandom number generate state size (in bytes). + * Returns the current PRNG state size (in bytes). * * @private * @returns {PositiveInteger} state size (in bytes) @@ -515,7 +515,7 @@ function factory( options ) { } /** - * Returns the current pseudorandom number generator state. + * Returns the current PRNG state. * * @private * @returns {Uint32Array} current state @@ -533,7 +533,7 @@ function factory( options ) { } /** - * Sets the pseudorandom number generator state. + * Sets the PRNG state. * * @private * @param {Uint32Array} s - generator state From 1f4552303551b4e57560792cf51cc0f06222f37f Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 00:18:15 -0700 Subject: [PATCH 0007/1062] Reorder properties --- .../@stdlib/random/base/mt19937/lib/factory.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 365c6be2c3c8..3d5647122d25 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -437,9 +437,6 @@ function factory( options ) { 'enumerable': true, 'get': getSeed }); - setReadOnly( mt19937, 'MIN', 1 ); - setReadOnly( mt19937, 'MAX', UINT32_MAX ); - setReadOnly( mt19937, 'normalized', normalized ); defineProperty( mt19937, 'state', { 'configurable': false, 'enumerable': true, @@ -456,6 +453,9 @@ function factory( options ) { 'enumerable': true, 'get': getStateSize }); + setReadOnly( mt19937, 'MIN', 1 ); + setReadOnly( mt19937, 'MAX', UINT32_MAX ); + setReadOnly( mt19937, 'normalized', normalized ); setReadOnly( normalized, 'NAME', mt19937.NAME ); defineProperty( normalized, 'seed', { @@ -463,8 +463,6 @@ function factory( options ) { 'enumerable': true, 'get': getSeed }); - setReadOnly( normalized, 'MIN', 0.0 ); - setReadOnly( normalized, 'MAX', MAX_NORMALIZED ); defineProperty( normalized, 'state', { 'configurable': false, 'enumerable': true, @@ -481,6 +479,8 @@ function factory( options ) { 'enumerable': true, 'get': getStateSize }); + setReadOnly( normalized, 'MIN', 0.0 ); + setReadOnly( normalized, 'MAX', MAX_NORMALIZED ); return mt19937; From fe46a4347b7dba1e369beebf09a3eb0552e7b746 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 00:41:48 -0700 Subject: [PATCH 0008/1062] Add `seedLength` property for returning the seed length --- .../@stdlib/random/base/mt19937/README.md | 35 ++++++---- .../@stdlib/random/base/mt19937/docs/repl.txt | 24 ++++--- .../random/base/mt19937/lib/factory.js | 24 ++++++- .../random/base/mt19937/test/test.factory.js | 68 +++++++++++-------- .../@stdlib/random/base/mt19937/test/test.js | 54 +++++++++------ 5 files changed, 132 insertions(+), 73 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/README.md b/lib/node_modules/@stdlib/random/base/mt19937/README.md index 7b7cd6f72149..e7289c4a8163 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/README.md +++ b/lib/node_modules/@stdlib/random/base/mt19937/README.md @@ -118,6 +118,24 @@ var str = mt19937.NAME; // returns 'mt19937' ``` +#### mt19937.MIN + +Minimum possible value. + +```javascript +var min = mt19937.MIN; +// returns 1 +``` + +#### mt19937.MAX + +Maximum possible value. + +```javascript +var max = mt19937.MAX; +// returns 4294967295 +``` + #### mt19937.seed The value used to seed `mt19937()`. @@ -141,22 +159,13 @@ for ( i = 0; i < 100; i++ ) { } ``` -#### mt19937.MIN - -Minimum possible value. - -```javascript -var min = mt19937.MIN; -// returns 1 -``` - -#### mt19937.MAX +#### mt19937.seedLength -Maximum possible value. +Length of generator seed. ```javascript -var max = mt19937.MAX; -// returns 4294967295 +var len = mt19937.seedLength; +// returns ``` #### mt19937.state diff --git a/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt b/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt index ab839f7e6b1b..d8ca3cc9a5ff 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/mt19937/docs/repl.txt @@ -83,14 +83,6 @@ 'mt19937' -{{alias}}.seed - Pseudorandom number generator seed. - - Examples - -------- - > var seed = {{alias}}.seed; - - {{alias}}.MIN Minimum possible value. @@ -109,6 +101,22 @@ 4294967295 +{{alias}}.seed + Pseudorandom number generator seed. + + Examples + -------- + > var seed = {{alias}}.seed; + + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 3d5647122d25..ed6a7f0394b2 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -437,6 +437,11 @@ function factory( options ) { 'enumerable': true, 'get': getSeed }); + defineProperty( mt19937, 'seedLength', { + 'configurable': false, + 'enumerable': true, + 'get': getSeedLength + }); defineProperty( mt19937, 'state', { 'configurable': false, 'enumerable': true, @@ -463,6 +468,11 @@ function factory( options ) { 'enumerable': true, 'get': getSeed }); + defineProperty( normalized, 'seedLength', { + 'configurable': false, + 'enumerable': true, + 'get': getSeedLength + }); defineProperty( normalized, 'state', { 'configurable': false, 'enumerable': true, @@ -495,7 +505,17 @@ function factory( options ) { } /** - * Returns the current PRNG state length. + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return slen; + } + + /** + * Returns the PRNG state length. * * @private * @returns {PositiveInteger} state length @@ -505,7 +525,7 @@ function factory( options ) { } /** - * Returns the current PRNG state size (in bytes). + * Returns the PRNG state size (in bytes). * * @private * @returns {PositiveInteger} state size (in bytes) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js index 6f365e1eb04f..39227864b23d 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js @@ -310,7 +310,19 @@ tape( 'the function returns a seeded pseudorandom number generator (array seed)' tape( 'attached to the returned function is the generator name', function test( t ) { var mt19937 = factory(); - t.equal( mt19937.NAME, 'mt19937', 'has `NAME` property' ); + t.equal( mt19937.NAME, 'mt19937', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the minimum possible generated number', function test( t ) { + var mt19937 = factory(); + t.equal( mt19937.MIN, 1, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the maximum possible generated number', function test( t ) { + var mt19937 = factory(); + t.equal( mt19937.MAX, UINT32_MAX, 'has property' ); t.end(); }); @@ -323,7 +335,7 @@ tape( 'attached to the returned function is the generator seed (integer seed)', }); actual = mt19937.seed; - t.equal( isUint32Array( actual ), true, 'has `seed` property' ); + t.equal( isUint32Array( actual ), true, 'has property' ); t.equal( actual.length, 1, 'has expected length' ); t.equal( actual[ 0 ], 12345, 'equal to provided seed' ); t.end(); @@ -341,40 +353,34 @@ tape( 'attached to the returned function is the generator seed (array seed)', fu }); actual = mt19937.seed; - t.equal( isUint32Array( actual ), true, 'has `seed` property' ); + t.equal( isUint32Array( actual ), true, 'has property' ); for ( i = 0; i < seed.length; i++ ) { t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } t.end(); }); -tape( 'attached to the returned function is the minimum possible generated number', function test( t ) { - var mt19937 = factory(); - t.equal( mt19937.MIN, 1, 'has `MIN` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the maximum possible generated number', function test( t ) { +tape( 'attached to the returned function is the generator seed length', function test( t ) { var mt19937 = factory(); - t.equal( mt19937.MAX, UINT32_MAX, 'has `MAX` property' ); + t.equal( typeof mt19937.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the returned function is the generator state', function test( t ) { var mt19937 = factory(); - t.equal( isUint32Array( mt19937.state ), true, 'has `state` property' ); + t.equal( isUint32Array( mt19937.state ), true, 'has property' ); t.end(); }); tape( 'attached to the returned function is the generator state length', function test( t ) { var mt19937 = factory(); - t.equal( typeof mt19937.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof mt19937.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the returned function is the generator state size', function test( t ) { var mt19937 = factory(); - t.equal( typeof mt19937.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof mt19937.byteLength, 'number', 'has property' ); t.end(); }); @@ -449,7 +455,19 @@ tape( 'attached to the returned function is a `normalized` method for generating tape( 'attached to the `normalized` method is the generator name', function test( t ) { var mt19937 = factory(); - t.equal( mt19937.normalized.NAME, 'mt19937', 'has `NAME` property' ); + t.equal( mt19937.normalized.NAME, 'mt19937', 'has property' ); + t.end(); +}); + +tape( 'attached to the `normalized` method is the minimum possible generated number', function test( t ) { + var mt19937 = factory(); + t.equal( mt19937.normalized.MIN, 0.0, 'has property' ); + t.end(); +}); + +tape( 'attached to the `normalized` method is the maximum possible generated number', function test( t ) { + var mt19937 = factory(); + t.equal( mt19937.normalized.MAX, FLOAT64_MAX_SAFE_INTEGER/(FLOAT64_MAX_SAFE_INTEGER+1), 'has property' ); t.end(); }); @@ -462,7 +480,7 @@ tape( 'attached to the `normalized` method is the generator seed (integer seed)' }); actual = mt19937.normalized.seed; - t.equal( isUint32Array( actual ), true, 'has `seed` property' ); + t.equal( isUint32Array( actual ), true, 'has property' ); t.equal( actual.length, 1, 'has expected length' ); t.equal( actual[ 0 ], 12345, 'equal to provided seed' ); t.end(); @@ -480,40 +498,34 @@ tape( 'attached to the `normalized` method is the generator seed (array seed)', }); actual = mt19937.normalized.seed; - t.equal( isUint32Array( actual ), true, 'has `seed` property' ); + t.equal( isUint32Array( actual ), true, 'has property' ); for ( i = 0; i < seed.length; i++ ) { t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } t.end(); }); -tape( 'attached to the `normalized` method is the minimum possible generated number', function test( t ) { - var mt19937 = factory(); - t.equal( mt19937.normalized.MIN, 0.0, 'has `MIN` property' ); - t.end(); -}); - -tape( 'attached to the `normalized` method is the maximum possible generated number', function test( t ) { +tape( 'attached to the `normalized` method is the generator seed length', function test( t ) { var mt19937 = factory(); - t.equal( mt19937.normalized.MAX, FLOAT64_MAX_SAFE_INTEGER/(FLOAT64_MAX_SAFE_INTEGER+1), 'has `MAX` property' ); + t.equal( typeof mt19937.normalized.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the `normalized` method is the generator state', function test( t ) { var mt19937 = factory(); - t.equal( isUint32Array( mt19937.normalized.state ), true, 'has `state` property' ); + t.equal( isUint32Array( mt19937.normalized.state ), true, 'has property' ); t.end(); }); tape( 'attached to the `normalized` method is the generator state size', function test( t ) { var mt19937 = factory(); - t.equal( typeof mt19937.normalized.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof mt19937.normalized.byteLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the `normalized` method is the generator state length', function test( t ) { var mt19937 = factory(); - t.equal( typeof mt19937.normalized.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof mt19937.normalized.stateLength, 'number', 'has property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.js index ae20ecf175c2..78b6e6d14e1e 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.js @@ -37,47 +37,52 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate normalized pseudorandom numbers', function test( t ) { - t.equal( typeof mt19937.normalized, 'function', 'has `normalized` method' ); + t.equal( typeof mt19937.normalized, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is a method to create a Mersenne Twister pseudorandom number generator', function test( t ) { - t.equal( typeof mt19937.factory, 'function', 'has `factory` method' ); + t.equal( typeof mt19937.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( mt19937.NAME, 'mt19937', 'has `NAME` property' ); + t.equal( mt19937.NAME, 'mt19937', 'has property' ); t.end(); }); -tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( mt19937.seed ), true, 'has `seed` property' ); +tape( 'attached to the main export is the minimum possible generated number', function test( t ) { + t.equal( mt19937.MIN, 1, 'has property' ); t.end(); }); -tape( 'attached to the main export is the minimum possible generated number', function test( t ) { - t.equal( mt19937.MIN, 1, 'has `MIN` property' ); +tape( 'attached to the main export is the maximum possible generated number', function test( t ) { + t.equal( mt19937.MAX, UINT32_MAX, 'has property' ); t.end(); }); -tape( 'attached to the main export is the maximum possible generated number', function test( t ) { - t.equal( mt19937.MAX, UINT32_MAX, 'has `MAX` property' ); +tape( 'attached to the main export is the generator seed', function test( t ) { + t.equal( isUint32Array( mt19937.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof mt19937.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( mt19937.state ), true, 'has `state` property' ); + t.equal( isUint32Array( mt19937.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof mt19937.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof mt19937.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof mt19937.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof mt19937.byteLength, 'number', 'has property' ); t.end(); }); @@ -105,37 +110,42 @@ tape( 'the `normalized` method returns pseudorandom numbers strictly between 0 ( }); tape( 'attached to the `normalized` method is the generator name', function test( t ) { - t.equal( mt19937.normalized.NAME, 'mt19937', 'has `NAME` property' ); + t.equal( mt19937.normalized.NAME, 'mt19937', 'has property' ); t.end(); }); -tape( 'attached to the `normalized` method is the generator seed', function test( t ) { - t.equal( isUint32Array( mt19937.normalized.seed ), true, 'has `seed` property' ); +tape( 'attached to the `normalized` method is the minimum possible generated number', function test( t ) { + t.equal( mt19937.normalized.MIN, 0.0, 'has property' ); t.end(); }); -tape( 'attached to the `normalized` method is the minimum possible generated number', function test( t ) { - t.equal( mt19937.normalized.MIN, 0.0, 'has `MIN` property' ); +tape( 'attached to the `normalized` method is the maximum possible generated number', function test( t ) { + t.equal( mt19937.normalized.MAX, FLOAT64_MAX_SAFE_INTEGER/(FLOAT64_MAX_SAFE_INTEGER+1), 'has property' ); t.end(); }); -tape( 'attached to the `normalized` method is the maximum possible generated number', function test( t ) { - t.equal( mt19937.normalized.MAX, FLOAT64_MAX_SAFE_INTEGER/(FLOAT64_MAX_SAFE_INTEGER+1), 'has `MAX` property' ); +tape( 'attached to the `normalized` method is the generator seed', function test( t ) { + t.equal( isUint32Array( mt19937.normalized.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the `normalized` method is the generator seed length', function test( t ) { + t.equal( typeof mt19937.normalized.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the `normalized` method is the generator state', function test( t ) { - t.equal( isUint32Array( mt19937.normalized.state ), true, 'has `state` property' ); + t.equal( isUint32Array( mt19937.normalized.state ), true, 'has property' ); t.end(); }); tape( 'attached to the `normalized` method is the generator state length', function test( t ) { - t.equal( typeof mt19937.normalized.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof mt19937.normalized.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the `normalized` method is the generator state size', function test( t ) { - t.equal( typeof mt19937.normalized.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof mt19937.normalized.byteLength, 'number', 'has property' ); t.end(); }); From 8231facf276775265b250cd379ef41057ffbe619 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 00:43:42 -0700 Subject: [PATCH 0009/1062] Add clarifying comment --- lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index ed6a7f0394b2..4908c901799f 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -431,6 +431,7 @@ function factory( options ) { seed = new Uint32Array( [ seed ] ); slen = seed.length; } + // Note: property order matters in order to maintain consistency of PRNG "shape" (hidden classes). setReadOnly( mt19937, 'NAME', 'mt19937' ); defineProperty( mt19937, 'seed', { 'configurable': false, From 40c26955d016a85ba5b9a32dde7b04fe711d9406 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 02:21:57 -0700 Subject: [PATCH 0010/1062] Rename file --- .../@stdlib/utils/define-read-only-property/lib/index.js | 2 +- .../lib/{define_read_only_property.js => main.js} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename lib/node_modules/@stdlib/utils/define-read-only-property/lib/{define_read_only_property.js => main.js} (100%) diff --git a/lib/node_modules/@stdlib/utils/define-read-only-property/lib/index.js b/lib/node_modules/@stdlib/utils/define-read-only-property/lib/index.js index c1b066065c49..5ce881e9f144 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-property/lib/index.js +++ b/lib/node_modules/@stdlib/utils/define-read-only-property/lib/index.js @@ -33,7 +33,7 @@ // MODULES // -var setReadOnly = require( './define_read_only_property.js' ); +var setReadOnly = require( './main.js' ); // EXPORTS // diff --git a/lib/node_modules/@stdlib/utils/define-read-only-property/lib/define_read_only_property.js b/lib/node_modules/@stdlib/utils/define-read-only-property/lib/main.js similarity index 100% rename from lib/node_modules/@stdlib/utils/define-read-only-property/lib/define_read_only_property.js rename to lib/node_modules/@stdlib/utils/define-read-only-property/lib/main.js From 285441539859c842f8fbd577a4e3c12442ddf046 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 02:22:21 -0700 Subject: [PATCH 0011/1062] Reorder properties --- .../@stdlib/utils/define-read-only-property/lib/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/define-read-only-property/lib/main.js b/lib/node_modules/@stdlib/utils/define-read-only-property/lib/main.js index 4b13d3c118b9..30c59a69d647 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-property/lib/main.js +++ b/lib/node_modules/@stdlib/utils/define-read-only-property/lib/main.js @@ -39,10 +39,10 @@ var defineProperty = require( '@stdlib/utils/define-property' ); */ function setReadOnly( obj, prop, value ) { defineProperty( obj, prop, { - 'value': value, 'configurable': false, + 'enumerable': true, 'writable': false, - 'enumerable': true + 'value': value }); } From 1183225e38951cb027072145b99e63fc931873fc Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 02:24:27 -0700 Subject: [PATCH 0012/1062] Reference project documentation --- .../@stdlib/utils/define-read-only-property/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/define-read-only-property/README.md b/lib/node_modules/@stdlib/utils/define-read-only-property/README.md index c63d046dc366..466c1cd1beeb 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-property/README.md +++ b/lib/node_modules/@stdlib/utils/define-read-only-property/README.md @@ -20,7 +20,7 @@ limitations under the License. # Read-Only -> [Define][define-property] a **read-only** property. +> [Define][@stdlib/utils/define-property] a **read-only** property.
@@ -32,7 +32,7 @@ var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); #### setReadOnly( obj, prop, value ) -[Defines][define-property] a **read-only** property. +[Defines][@stdlib/utils/define-property] a **read-only** property. ```javascript var obj = {}; @@ -79,7 +79,7 @@ try { From a7ccb3e4bed9db7d995bbfa0e7e4fc8083a816f7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 02:46:55 -0700 Subject: [PATCH 0013/1062] Add utility to define a read-only accessor --- .../utils/define-read-only-accessor/README.md | 96 +++++++++++++++++++ .../benchmark/benchmark.js | 59 ++++++++++++ .../define-read-only-accessor/docs/repl.txt | 26 +++++ .../examples/index.js | 41 ++++++++ .../define-read-only-accessor/lib/index.js | 51 ++++++++++ .../define-read-only-accessor/lib/main.js | 61 ++++++++++++ .../define-read-only-accessor/package.json | 69 +++++++++++++ .../define-read-only-accessor/test/test.js | 96 +++++++++++++++++++ 8 files changed, 499 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/define-read-only-accessor/README.md create mode 100644 lib/node_modules/@stdlib/utils/define-read-only-accessor/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/define-read-only-accessor/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/define-read-only-accessor/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/define-read-only-accessor/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/define-read-only-accessor/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/define-read-only-accessor/package.json create mode 100644 lib/node_modules/@stdlib/utils/define-read-only-accessor/test/test.js diff --git a/lib/node_modules/@stdlib/utils/define-read-only-accessor/README.md b/lib/node_modules/@stdlib/utils/define-read-only-accessor/README.md new file mode 100644 index 000000000000..fddf15b0cac9 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-read-only-accessor/README.md @@ -0,0 +1,96 @@ + + +# Read-Only Accessor + +> [Define][@stdlib/utils/define-property] a **read-only** accessor. + +
+ +## Usage + +```javascript +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +``` + +#### setReadOnlyAccessor( obj, prop, getter ) + +[Defines][@stdlib/utils/define-property] a **read-only** accessor. + + + +```javascript +function getter() { + return 'bar'; +} + +var obj = {}; + +setReadOnlyAccessor( obj, 'foo', getter ); + +obj.foo = 'boop'; +// throws +``` + +
+ + + +
+ +## Examples + + + +```javascript +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); + +function Foo( name ) { + if ( !(this instanceof Foo) ) { + return new Foo( name ); + } + setReadOnlyAccessor( this, 'name', getName ); + return this; + + function getName() { + return name; + } +} + +var foo = new Foo( 'beep' ); + +try { + foo.name = 'boop'; +} catch ( err ) { + console.error( err.message ); +} +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/define-read-only-accessor/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/define-read-only-accessor/benchmark/benchmark.js new file mode 100644 index 000000000000..f794bc4ec6d2 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-read-only-accessor/benchmark/benchmark.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isString = require( '@stdlib/assert/is-string' ).isPrimitive; +var fromCodePoint = require( '@stdlib/string/from-code-point' ); +var pkg = require( './../package.json' ).name; +var setReadOnly = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var obj; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj = {}; + setReadOnly( obj, 'foo', getter( i ) ); + if ( !isString( obj.foo ) ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( !isString( obj.foo ) ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function getter( i ) { + var v = fromCodePoint( 97 + (i%26) ); + return get; + + function get() { + return v; + } + } +}); diff --git a/lib/node_modules/@stdlib/utils/define-read-only-accessor/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-read-only-accessor/docs/repl.txt new file mode 100644 index 000000000000..b61b54a4078f --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-read-only-accessor/docs/repl.txt @@ -0,0 +1,26 @@ + +{{alias}}( obj, prop, getter ) + Defines a read-only accessor. + + Parameters + ---------- + obj: Object + Object on which to define the property. + + prop: string + Property name. + + getter: Function + Get accessor. + + Examples + -------- + > var obj = {}; + > function getter() { return 'bar'; }; + > {{alias}}( obj, 'foo', getter ); + > obj.foo + 'bar' + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/define-read-only-accessor/examples/index.js b/lib/node_modules/@stdlib/utils/define-read-only-accessor/examples/index.js new file mode 100644 index 000000000000..22b00c3a9347 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-read-only-accessor/examples/index.js @@ -0,0 +1,41 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var setReadOnlyAccessor = require( './../lib' ); + +function Foo( name ) { + if ( !(this instanceof Foo) ) { + return new Foo( name ); + } + setReadOnlyAccessor( this, 'name', getName ); + return this; + + function getName() { + return name; + } +} + +var foo = new Foo( 'beep' ); + +try { + foo.name = 'boop'; +} catch ( err ) { + console.error( err.message ); +} diff --git a/lib/node_modules/@stdlib/utils/define-read-only-accessor/lib/index.js b/lib/node_modules/@stdlib/utils/define-read-only-accessor/lib/index.js new file mode 100644 index 000000000000..7a538da99d17 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-read-only-accessor/lib/index.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Define a read-only accessor. +* +* @module @stdlib/utils/define-read-only-accessor +* +* @example +* var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +* +* function getter() { +* return 'bar'; +* } +* +* var obj = {}; +* +* setReadOnlyAccessor( obj, 'foo', getter ); +* +* try { +* obj.foo = 'boop'; +* } catch ( err ) { +* console.error( err.message ); +* } +*/ + +// MODULES // + +var setReadOnlyAccessor = require( './main.js' ); + + +// EXPORTS // + +module.exports = setReadOnlyAccessor; diff --git a/lib/node_modules/@stdlib/utils/define-read-only-accessor/lib/main.js b/lib/node_modules/@stdlib/utils/define-read-only-accessor/lib/main.js new file mode 100644 index 000000000000..57a07245b87d --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-read-only-accessor/lib/main.js @@ -0,0 +1,61 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var defineProperty = require( '@stdlib/utils/define-property' ); + + +// MAIN // + +/** +* Defines a read-only accessor. +* +* @param {Object} obj - object on which to define the property +* @param {string} prop - property name +* @param {Function} getter - accessor +* +* @example +* function getter() { +* return 'bar'; +* } +* +* var obj = {}; +* +* setReadOnlyAccessor( obj, 'foo', getter ); +* +* try { +* obj.foo = 'boop'; +* } catch ( err ) { +* console.error( err.message ); +* } +*/ +function setReadOnlyAccessor( obj, prop, getter ) { + defineProperty( obj, prop, { + 'configurable': false, + 'enumerable': true, + 'get': getter + }); +} + + +// EXPORTS // + +module.exports = setReadOnlyAccessor; diff --git a/lib/node_modules/@stdlib/utils/define-read-only-accessor/package.json b/lib/node_modules/@stdlib/utils/define-read-only-accessor/package.json new file mode 100644 index 000000000000..eedde349b7a9 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-read-only-accessor/package.json @@ -0,0 +1,69 @@ +{ + "name": "@stdlib/utils/define-read-only-accessor", + "version": "0.0.0", + "description": "Define a read-only accessor.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "property", + "define", + "prop", + "read-only", + "writable", + "configurable", + "accessor", + "get", + "getter" + ] +} diff --git a/lib/node_modules/@stdlib/utils/define-read-only-accessor/test/test.js b/lib/node_modules/@stdlib/utils/define-read-only-accessor/test/test.js new file mode 100644 index 000000000000..c2f654a0656b --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-read-only-accessor/test/test.js @@ -0,0 +1,96 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var getKeys = require( '@stdlib/utils/keys' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var setReadOnlyAccessor = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof setReadOnlyAccessor, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function sets a property on a provided object', function test( t ) { + var obj = {}; + setReadOnlyAccessor( obj, 'foo', getter ); + t.equal( obj.foo, 'bar', 'returns expected value' ); + t.end(); + + function getter() { + return 'bar'; + } +}); + +tape( 'the read-only property is not writable', function test( t ) { + var obj = {}; + setReadOnlyAccessor( obj, 'foo', getter ); + t.throws( foo, Error, 'property cannot be set' ); + t.end(); + + function getter() { + return 'bar'; + } + + function foo() { + obj.foo = 'bip'; + } +}); + +tape( 'the read-only property is not configurable', function test( t ) { + var obj = {}; + setReadOnlyAccessor( obj, 'foo', getter ); + t.throws( foo, Error, 'property cannot be deleted' ); + t.throws( bar, Error, 'property cannot be reconfigured' ); + t.end(); + + function getter() { + return 'bar'; + } + + function foo() { + delete obj.foo; + } + function bar() { + defineProperty( obj, 'foo', { + 'value': 'boop', + 'writable': true, + 'configurable': false, + 'enumerable': true + }); + } +}); + +tape( 'the read-only property is enumerable', function test( t ) { + var obj = {}; + setReadOnlyAccessor( obj, 'foo', getter ); + t.equal( getKeys( obj )[ 0 ], 'foo', 'property is enumerable' ); + t.end(); + + function getter() { + return 'bar'; + } +}); From 6786284da4097f3bfe3ec1f36822ded73a275a3c Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 02:48:00 -0700 Subject: [PATCH 0014/1062] Fix description --- .../@stdlib/utils/define-read-only-property/lib/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/define-read-only-property/lib/index.js b/lib/node_modules/@stdlib/utils/define-read-only-property/lib/index.js index 5ce881e9f144..d29991cd5901 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-property/lib/index.js +++ b/lib/node_modules/@stdlib/utils/define-read-only-property/lib/index.js @@ -19,7 +19,7 @@ 'use strict'; /** -* Defines a read-only property. +* Define a read-only property. * * @module @stdlib/utils/define-read-only-property * From a2e33f3e5b8ef4472902793a48c533407e5c3dc7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 02:49:08 -0700 Subject: [PATCH 0015/1062] Update example --- .../@stdlib/utils/define-read-only-property/lib/index.js | 8 +++++++- .../@stdlib/utils/define-read-only-property/lib/main.js | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/define-read-only-property/lib/index.js b/lib/node_modules/@stdlib/utils/define-read-only-property/lib/index.js index d29991cd5901..ceabad17f308 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-property/lib/index.js +++ b/lib/node_modules/@stdlib/utils/define-read-only-property/lib/index.js @@ -27,8 +27,14 @@ * var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); * * var obj = {}; +* * setReadOnly( obj, 'foo', 'bar' ); -* obj.foo = 'boop'; // => throws +* +* try { +* obj.foo = 'boop'; +* } catch ( err ) { +* console.error( err.message ); +* } */ // MODULES // diff --git a/lib/node_modules/@stdlib/utils/define-read-only-property/lib/main.js b/lib/node_modules/@stdlib/utils/define-read-only-property/lib/main.js index 30c59a69d647..427373bc7708 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-property/lib/main.js +++ b/lib/node_modules/@stdlib/utils/define-read-only-property/lib/main.js @@ -34,8 +34,14 @@ var defineProperty = require( '@stdlib/utils/define-property' ); * * @example * var obj = {}; +* * setReadOnly( obj, 'foo', 'bar' ); -* obj.foo = 'boop'; // => throws +* +* try { +* obj.foo = 'boop'; +* } catch ( err ) { +* console.error( err.message ); +* } */ function setReadOnly( obj, prop, value ) { defineProperty( obj, prop, { From 71cfed1749b0e3f96459f44539268e37468422ca Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 02:49:56 -0700 Subject: [PATCH 0016/1062] Update test message and add code block annotation --- .../@stdlib/utils/define-read-only-property/README.md | 2 ++ .../@stdlib/utils/define-read-only-property/test/test.js | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/define-read-only-property/README.md b/lib/node_modules/@stdlib/utils/define-read-only-property/README.md index 466c1cd1beeb..0b89a505444a 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-property/README.md +++ b/lib/node_modules/@stdlib/utils/define-read-only-property/README.md @@ -34,6 +34,8 @@ var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); [Defines][@stdlib/utils/define-property] a **read-only** property. + + ```javascript var obj = {}; diff --git a/lib/node_modules/@stdlib/utils/define-read-only-property/test/test.js b/lib/node_modules/@stdlib/utils/define-read-only-property/test/test.js index af6859ebb7be..36978474bd96 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-property/test/test.js +++ b/lib/node_modules/@stdlib/utils/define-read-only-property/test/test.js @@ -37,7 +37,7 @@ tape( 'main export is a function', function test( t ) { tape( 'the function sets a property on a provided object', function test( t ) { var obj = {}; setReadOnly( obj, 'foo', 'bar' ); - t.equal( obj.foo, 'bar', 'prop foo equals bar' ); + t.equal( obj.foo, 'bar', 'returns expected value' ); t.end(); }); From 74555599e7c7fd66c1ec6341add79136fcb263e0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 02:51:17 -0700 Subject: [PATCH 0017/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 333285f5b445..f82f22161464 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -297,6 +297,15 @@ setReadOnly( utils, 'defineProperties', require( '@stdlib/utils/define-propertie */ setReadOnly( utils, 'defineProperty', require( '@stdlib/utils/define-property' ) ); +/** +* @name setReadOnlyAccessor +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/define-read-only-accessor} +*/ +setReadOnly( utils, 'setReadOnlyAccessor', require( '@stdlib/utils/define-read-only-accessor' ) ); + /** * @name setReadOnly * @memberof utils From 3038af08895692952ebd0688364c6b21e1e38d37 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 02:52:33 -0700 Subject: [PATCH 0018/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/s.js | 14 +- .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 167 +++++++++--------- 3 files changed, 98 insertions(+), 84 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/s.js b/lib/node_modules/@stdlib/namespace/lib/namespace/s.js index dfee9adf5f2f..e0777ad77d18 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/s.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/s.js @@ -171,7 +171,19 @@ ns.push({ 'path': '@stdlib/utils/define-read-only-property', 'value': require( '@stdlib/utils/define-read-only-property' ), 'type': 'Function', - 'related': [] + 'related': [ + '@stdlib/utils/define-read-only-accessor' + ] +}); + +ns.push({ + 'alias': 'setReadOnlyAccessor', + 'path': '@stdlib/utils/define-read-only-accessor', + 'value': require( '@stdlib/utils/define-read-only-accessor' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/define-read-only-property' + ] }); ns.push({ diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index d95bd612de18..87ef5dfb8cea 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1504,6 +1504,7 @@ var db = { "secondsInMonth": "num = secondsInMonth()\nnum = secondsInMonth( 2 )\nnum = secondsInMonth( 2, 2016 )\nnum = secondsInMonth( 2, 2017 )\n\n// Other ways to supply month:\nnum = secondsInMonth( 'feb', 2016 )\nnum = secondsInMonth( 'february', 2016 )\n", "secondsInYear": "num = secondsInYear()\nnum = secondsInYear( 2016 )\nnum = secondsInYear( 2017 )\n", "setReadOnly": "obj = {};\nsetReadOnly( obj, 'foo', 'bar' );\nobj.foo = 'boop';\nobj\n", + "setReadOnlyAccessor": "obj = {};\nfunction getter() { return 'bar'; };\nsetReadOnlyAccessor( obj, 'foo', getter );\nobj.foo\n", "SharedArrayBuffer": "\n// Assuming an environment supports SharedArrayBuffers...\nbuf = new SharedArrayBuffer( 5 )\n", "shift": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\nout = shift( arr )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\nout = shift( arr )\n\n// Array-like object:\narr = { 'length': 2, '0': 1.0, '1': 2.0 };\nout = shift( arr )\n", "shuffle": "data = [ 1, 2, 3 ];\nout = shuffle( data )\nout = shuffle( data, { 'copy': 'none' });\nbool = ( data === out )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index cc36a3127cc1..85fe5a81ea28 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -689,47 +689,47 @@ var db = { "base.powm1": "\nbase.powm1( b, x )\n Evaluates `bˣ - 1`.\n\n When `b` is close to `1` and/or `x` is small, this function is more accurate\n than naively computing `bˣ` and subtracting `1`.\n\n Parameters\n ----------\n b: number\n Base.\n\n x: number\n Exponent.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.powm1( 2.0, 3.0 )\n 7.0\n > y = base.powm1( 4.0, 0.5 )\n 1.0\n > y = base.powm1( 0.0, 100.0 )\n -1.0\n > y = base.powm1( 100.0, 0.0 )\n 0.0\n > y = base.powm1( 0.0, 0.0 )\n 0.0\n > y = base.powm1( PI, 5.0 )\n ~305.0197\n > y = base.powm1( NaN, 3.0 )\n NaN\n > y = base.powm1( 5.0, NaN )\n NaN\n\n See Also\n --------\n base.pow\n", "base.rad2deg": "\nbase.rad2deg( x )\n Converts an angle from radians to degrees.\n\n Parameters\n ----------\n x: number\n Angle in radians.\n\n Returns\n -------\n d: number\n Angle in degrees.\n\n Examples\n --------\n > var d = base.rad2deg( PI/2.0 )\n 90.0\n > d = base.rad2deg( -PI/4.0 )\n -45.0\n > d = base.rad2deg( NaN )\n NaN\n\n // Due to finite precision, canonical values may not be returned:\n > d = base.rad2deg( PI/6.0 )\n 29.999999999999996\n\n See Also\n --------\n base.deg2rad\n", "base.ramp": "\nbase.ramp( x )\n Evaluates the ramp function.\n\n If `x >= 0`, the function returns `x`; otherwise, the function returns zero.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.ramp( 3.14 )\n 3.14\n > y = base.ramp( -3.14 )\n 0.0\n\n See Also\n --------\n base.heaviside\n", - "base.random.arcsine": "\nbase.random.arcsine( a, b )\n Returns a pseudorandom number drawn from an arcsine distribution.\n\n If `a >= b`, the function returns `NaN`.\n\n If `a` or `b` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n a: number\n Minimum support.\n\n b: number\n Maximum support.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.arcsine( 2.0, 5.0 )\n \n\n\nbase.random.arcsine.factory( [a, b, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from an arcsine distribution.\n\n If provided `a` and `b`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `a` and `b`, the returned PRNG requires that both `a` and\n `b` be provided at each invocation.\n\n Parameters\n ----------\n a: number (optional)\n Minimum support.\n\n b: number (optional)\n Maximum support.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.arcsine.factory();\n > var r = rand( 0.0, 1.0 )\n \n > r = rand( -2.0, 2.0 )\n \n\n // Provide `a` and `b`:\n > rand = base.random.arcsine.factory( 0.0, 1.0 );\n > r = rand()\n \n > r = rand()\n \n\n\nbase.random.arcsine.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.arcsine.NAME\n 'arcsine'\n\n\nbase.random.arcsine.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.arcsine.PRNG;\n\n\nbase.random.arcsine.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.arcsine.SEED;\n\n\nbase.random.arcsine.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.arcsine( 2.0, 4.0 )\n \n > r = base.random.arcsine( 2.0, 4.0 )\n \n > r = base.random.arcsine( 2.0, 4.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.arcsine.STATE\n \n\n > r = base.random.arcsine( 2.0, 4.0 )\n \n > r = base.random.arcsine( 2.0, 4.0 )\n \n\n // Set the state:\n > base.random.arcsine.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.arcsine( 2.0, 4.0 )\n \n > r = base.random.arcsine( 2.0, 4.0 )\n \n\n\nbase.random.arcsine.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.arcsine.STATE_LENGTH;\n\n\nbase.random.arcsine.STATE_SIZE\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.arcsine.STATE_SIZE;\n\n See Also\n --------\n base.random.beta\n", - "base.random.bernoulli": "\nbase.random.bernoulli( p )\n Returns a pseudorandom number drawn from a Bernoulli distribution.\n\n If `p < 0` or `p > 1` or `p` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n p: number\n Success probability.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.bernoulli( 0.8 );\n\n\nbase.random.bernoulli.factory( [p, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Bernoulli distribution.\n\n If provided `p`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `p`, the returned PRNG requires that `p` be provided at each\n invocation.\n\n Parameters\n ----------\n p: number (optional)\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.bernoulli.factory();\n > var r = rand( 0.3 );\n > r = rand( 0.59 );\n\n // Provide `p`:\n > rand = base.random.bernoulli.factory( 0.3 );\n > r = rand();\n > r = rand();\n\n\nbase.random.bernoulli.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.bernoulli.NAME\n 'bernoulli'\n\n\nbase.random.bernoulli.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.bernoulli.PRNG;\n\n\nbase.random.bernoulli.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.bernoulli.SEED;\n\n\nbase.random.bernoulli.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.bernoulli( 0.3 )\n \n > r = base.random.bernoulli( 0.3 )\n \n > r = base.random.bernoulli( 0.3 )\n \n\n // Get a copy of the current state:\n > var state = base.random.bernoulli.STATE\n \n\n > r = base.random.bernoulli( 0.3 )\n \n > r = base.random.bernoulli( 0.3 )\n \n\n // Set the state:\n > base.random.bernoulli.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.bernoulli( 0.3 )\n \n > r = base.random.bernoulli( 0.3 )\n \n\n\nbase.random.bernoulli.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.bernoulli.STATE_LENGTH;\n\n\nbase.random.bernoulli.STATE_SIZE\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.bernoulli.STATE_SIZE;\n\n See Also\n --------\n base.random.binomial\n", - "base.random.beta": "\nbase.random.beta( α, β )\n Returns a pseudorandom number drawn from a beta distribution.\n\n If `α <= 0` or `β <= 0`, the function returns `NaN`.\n\n If `α` or `β` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n α: number\n First shape parameter.\n\n β: number\n Second shape parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.beta( 2.0, 5.0 );\n\n\nbase.random.beta.factory( [α, β, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a beta distribution.\n\n If provided `α` and `β`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `α` and `β`, the returned PRNG requires that both `α` and\n `β` be provided at each invocation.\n\n Parameters\n ----------\n α: number (optional)\n First shape parameter.\n\n β: number (optional)\n Second shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.beta.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `α` and `β`:\n > rand = base.random.beta.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.beta.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.beta.NAME\n 'beta'\n\n\nbase.random.beta.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.beta.PRNG;\n\n\nbase.random.beta.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.beta.SEED;\n\n\nbase.random.beta.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.beta( 2.0, 5.0 )\n \n > r = base.random.beta( 2.0, 5.0 )\n \n > r = base.random.beta( 2.0, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.beta.STATE\n \n\n > r = base.random.beta( 2.0, 5.0 )\n \n > r = base.random.beta( 2.0, 5.0 )\n \n\n // Set the state:\n > base.random.beta.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.beta( 2.0, 5.0 )\n \n > r = base.random.beta( 2.0, 5.0 )\n \n\n\nbase.random.beta.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.beta.STATE_LENGTH;\n\n\nbase.random.beta.STATE_SIZE\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.beta.STATE_SIZE;\n\n", - "base.random.betaprime": "\nbase.random.betaprime( α, β )\n Returns a pseudorandom number drawn from a beta prime distribution.\n\n If `α <= 0` or `β <= 0`, the function returns `NaN`.\n\n If `α` or `β` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n α: number\n First shape parameter.\n\n β: number\n Second shape parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.betaprime( 2.0, 5.0 );\n\n\nbase.random.betaprime.factory( [α, β, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a beta prime distribution.\n\n If provided `α` and `β`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `α` and `β`, the returned PRNG requires that both `α` and\n `β` be provided at each invocation.\n\n Parameters\n ----------\n α: number (optional)\n First shape parameter.\n\n β: number (optional)\n Second shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.betaprime.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `α` and `β`:\n > rand = base.random.betaprime.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.betaprime.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.betaprime.NAME\n 'betaprime'\n\n\nbase.random.betaprime.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.betaprime.PRNG;\n\n\nbase.random.betaprime.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.betaprime.SEED;\n\n\nbase.random.betaprime.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.betaprime( 2.0, 5.0 )\n \n > r = base.random.betaprime( 2.0, 5.0 )\n \n > r = base.random.betaprime( 2.0, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.betaprime.STATE\n \n\n > r = base.random.betaprime( 2.0, 5.0 )\n \n > r = base.random.betaprime( 2.0, 5.0 )\n \n\n // Set the state:\n > base.random.betaprime.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.betaprime( 2.0, 5.0 )\n \n > r = base.random.betaprime( 2.0, 5.0 )\n \n\n\nbase.random.betaprime.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.betaprime.STATE_LENGTH;\n\n\nbase.random.betaprime.STATE_SIZE\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.betaprime.STATE_SIZE;\n\n", - "base.random.binomial": "\nbase.random.binomial( n, p )\n Returns a pseudorandom number drawn from a binomial distribution.\n\n If `n` is not a positive integer or `p` is not a probability, the function\n returns `NaN`.\n\n If `n` or `p` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n n: integer\n Number of trials.\n\n p: number\n Success probability.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.binomial( 20, 0.8 );\n\n\nbase.random.binomial.factory( [n, p, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a binomial distribution.\n\n If provided `n` and `p`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `n` and `p`, the returned PRNG requires that both `n` and\n `p` be provided at each invocation.\n\n Parameters\n ----------\n n: integer (optional)\n Number of trials.\n\n p: number (optional)\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.binomial.factory();\n > var r = rand( 20, 0.3 );\n > r = rand( 10, 0.77 );\n\n // Provide `n` and `p`:\n > rand = base.random.binomial.factory( 10, 0.8 );\n > r = rand();\n > r = rand();\n\n\nbase.random.binomial.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.binomial.NAME\n 'binomial'\n\n\nbase.random.binomial.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.binomial.PRNG;\n\n\nbase.random.binomial.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.binomial.SEED;\n\n\nbase.random.binomial.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.binomial( 20, 0.8 )\n \n > r = base.random.binomial( 20, 0.8 )\n \n > r = base.random.binomial( 20, 0.8 )\n \n\n // Get a copy of the current state:\n > var state = base.random.binomial.STATE\n \n\n > r = base.random.binomial( 20, 0.8 )\n \n > r = base.random.binomial( 20, 0.8 )\n \n\n // Set the state:\n > base.random.binomial.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.binomial( 20, 0.8 )\n \n > r = base.random.binomial( 20, 0.8 )\n \n\n\nbase.random.binomial.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.binomial.STATE_LENGTH;\n\n\nbase.random.binomial.STATE_SIZE\n Size of generator state.\n\n Examples\n --------\n > var sz = base.random.binomial.STATE_SIZE;\n\n", - "base.random.boxMuller": "\nbase.random.boxMuller()\n Returns a pseudorandom number drawn from a standard normal distribution.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.boxMuller();\n\n\nbase.random.boxMuller.factory( [options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a standard normal distribution.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.prng: Function (optional)\n Pseudorandom number generator (PRNG) for generating uniformly\n distributed pseudorandom numbers on the interval `[0,1)`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.boxMuller.factory();\n > r = rand();\n > r = rand();\n\n\nbase.random.boxMuller.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.boxMuller.NAME\n 'box-muller'\n\n\nbase.random.boxMuller.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.boxMuller.PRNG;\n\n\nbase.random.boxMuller.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.boxMuller.SEED;\n\n\nbase.random.boxMuller.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.boxMuller()\n \n > r = base.random.boxMuller()\n \n > r = base.random.boxMuller()\n \n\n // Get a copy of the current state:\n > var state = base.random.boxMuller.STATE\n \n\n > r = base.random.boxMuller()\n \n > r = base.random.boxMuller()\n \n\n // Set the state:\n > base.random.boxMuller.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.boxMuller()\n \n > r = base.random.boxMuller()\n \n\n\nbase.random.boxMuller.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.boxMuller.STATE_LENGTH;\n\n\nbase.random.boxMuller.STATE_SIZE\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.boxMuller.STATE_SIZE;\n\n", - "base.random.cauchy": "\nbase.random.cauchy( x0, Ɣ )\n Returns a pseudorandom number drawn from a Cauchy distribution.\n\n If `x0` or `Ɣ` is `NaN` or `Ɣ <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n x0: number\n Location parameter.\n\n Ɣ: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.cauchy( 2.0, 5.0 );\n\n\nbase.random.cauchy.factory( [x0, Ɣ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Cauchy distribution.\n\n If provided `x0` and `Ɣ`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `x0` and `Ɣ`, the returned PRNG requires that both `x0` and\n `Ɣ` be provided at each invocation.\n\n Parameters\n ----------\n x0: number (optional)\n Location parameter.\n\n Ɣ: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.cauchy.factory();\n > var r = rand( 0.0, 1.5 );\n > r = rand( -2.0, 2.0 );\n\n // Provide `x0` and `Ɣ`:\n > rand = base.random.cauchy.factory( 0.0, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.cauchy.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.cauchy.NAME\n 'cauchy'\n\n\nbase.random.cauchy.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.cauchy.PRNG;\n\n\nbase.random.cauchy.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.cauchy.SEED;\n\n\nbase.random.cauchy.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.cauchy( 2.0, 5.0 )\n \n > r = base.random.cauchy( 2.0, 5.0 )\n \n > r = base.random.cauchy( 2.0, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.cauchy.STATE\n \n\n > r = base.random.cauchy( 2.0, 5.0 )\n \n > r = base.random.cauchy( 2.0, 5.0 )\n \n\n // Set the state:\n > base.random.cauchy.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.cauchy( 2.0, 5.0 )\n \n > r = base.random.cauchy( 2.0, 5.0 )\n \n\n\nbase.random.cauchy.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.cauchy.STATE_LENGTH;\n\n\nbase.random.cauchy.STATE_SIZE\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.cauchy.STATE_SIZE;\n\n", - "base.random.chi": "\nbase.random.chi( k )\n Returns a pseudorandom number drawn from a chi distribution.\n\n If `k <= 0` or `k` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n k: number\n Degrees of freedom.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.chi( 2 );\n\n\nbase.random.chi.factory( [k, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a chi distribution.\n\n If provided `k`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `k`, the returned PRNG requires that `k` be provided at each\n invocation.\n\n Parameters\n ----------\n k: number (optional)\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.chi.factory();\n > var r = rand( 5 );\n > r = rand( 3.14 );\n\n // Provide `k`:\n > rand = base.random.chi.factory( 3 );\n > r = rand();\n > r = rand();\n\n\nbase.random.chi.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.chi.NAME\n 'chi'\n\n\nbase.random.chi.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.chi.PRNG;\n\n\nbase.random.chi.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.chi.SEED;\n\n\nbase.random.chi.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.chi( 2 )\n \n > r = base.random.chi( 2 )\n \n > r = base.random.chi( 2 )\n \n\n // Get a copy of the current state:\n > var state = base.random.chi.STATE\n \n\n > r = base.random.chi( 2 )\n \n > r = base.random.chi( 2 )\n \n\n // Set the state:\n > base.random.chi.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.chi( 2 )\n \n > r = base.random.chi( 2 )\n \n\n\nbase.random.chi.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.chi.STATE_LENGTH;\n\n\nbase.random.chi.STATE_SIZE\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.chi.STATE_SIZE;\n\n", - "base.random.chisquare": "\nbase.random.chisquare( k )\n Returns a pseudorandom number drawn from a chi-square distribution.\n\n If `k <= 0` or `k` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n k: number\n Degrees of freedom.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.chisquare( 2 );\n\n\nbase.random.chisquare.factory( [k, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a chi-square distribution.\n\n If provided `k`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `k`, the returned PRNG requires that `k` be provided at each\n invocation.\n\n Parameters\n ----------\n k: number (optional)\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.chisquare.factory();\n > var r = rand( 5 );\n > r = rand( 3.14 );\n\n // Provide `k`:\n > rand = base.random.chisquare.factory( 3 );\n > r = rand();\n > r = rand();\n\n\nbase.random.chisquare.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.chisquare.NAME\n 'chisquare'\n\n\nbase.random.chisquare.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.chisquare.PRNG;\n\n\nbase.random.chisquare.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.chisquare.SEED;\n\n\nbase.random.chisquare.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.chisquare( 2 )\n \n > r = base.random.chisquare( 2 )\n \n > r = base.random.chisquare( 2 )\n \n\n // Get a copy of the current state:\n > var state = base.random.chisquare.STATE\n \n\n > r = base.random.chisquare( 2 )\n \n > r = base.random.chisquare( 2 )\n \n\n // Set the state:\n > base.random.chisquare.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.chisquare( 2 )\n \n > r = base.random.chisquare( 2 )\n \n\n\nbase.random.chisquare.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.chisquare.STATE_LENGTH;\n\n\nbase.random.chisquare.STATE_SIZE\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.chisquare.STATE_SIZE;\n\n", - "base.random.cosine": "\nbase.random.cosine( μ, s )\n Returns a pseudorandom number drawn from a raised cosine distribution.\n\n If `μ` or `s` is `NaN` or `s <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.cosine( 2.0, 5.0 );\n\n\nbase.random.cosine.factory( [μ, s, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a raised cosine distribution.\n\n If provided `μ` and `s`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `s`, the returned PRNG requires that both `μ` and\n `s` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Location parameter.\n\n s: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.cosine.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `s`:\n > rand = base.random.cosine.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.cosine.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.cosine.NAME\n 'cosine'\n\n\nbase.random.cosine.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.cosine.PRNG;\n\n\nbase.random.cosine.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.cosine.SEED;\n\n\nbase.random.cosine.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.cosine( 2.0, 5.0 )\n \n > r = base.random.cosine( 2.0, 5.0 )\n \n > r = base.random.cosine( 2.0, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.cosine.STATE\n \n\n > r = base.random.cosine( 2.0, 5.0 )\n \n > r = base.random.cosine( 2.0, 5.0 )\n \n\n // Set the state:\n > base.random.cosine.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.cosine( 2.0, 5.0 )\n \n > r = base.random.cosine( 2.0, 5.0 )\n \n\n\nbase.random.cosine.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.cosine.STATE_LENGTH;\n\n\nbase.random.cosine.STATE_SIZE\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.cosine.STATE_SIZE;\n\n", - "base.random.discreteUniform": "\nbase.random.discreteUniform( a, b )\n Returns a pseudorandom number drawn from a discrete uniform distribution.\n\n If `a > b`, the function returns `NaN`.\n\n If `a` or `b` is not an integer value, the function returns `NaN`.\n\n Parameters\n ----------\n a: integer\n Minimum support.\n\n b: integer\n Maximum support.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.discreteUniform( 2, 50 );\n\n\nbase.random.discreteUniform.factory( [a, b, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a discrete uniform distribution.\n\n If provided `a` and `b`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `a` and `b`, the returned PRNG requires that both `a` and\n `b` be provided at each invocation.\n\n Parameters\n ----------\n a: integer (optional)\n Minimum support.\n\n b: integer (optional)\n Maximum support.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.discreteUniform.factory();\n > var r = rand( 0, 10 );\n > r = rand( -20, 20 );\n\n // Provide `a` and `b`:\n > rand = base.random.discreteUniform.factory( 0, 10 );\n > r = rand();\n > r = rand();\n\n\nbase.random.discreteUniform.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.discreteUniform.NAME\n 'discrete-uniform'\n\n\nbase.random.discreteUniform.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.discreteUniform.PRNG;\n\n\nbase.random.discreteUniform.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.discreteUniform.SEED;\n\n\nbase.random.discreteUniform.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.discreteUniform( 2, 50 )\n \n > r = base.random.discreteUniform( 2, 50 )\n \n > r = base.random.discreteUniform( 2, 50 )\n \n\n // Get a copy of the current state:\n > var state = base.random.discreteUniform.STATE\n \n\n > r = base.random.discreteUniform( 2, 50 )\n \n > r = base.random.discreteUniform( 2, 50 )\n \n\n // Set the state:\n > base.random.discreteUniform.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.discreteUniform( 2, 50 )\n \n > r = base.random.discreteUniform( 2, 50 )\n \n\n\nbase.random.discreteUniform.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.discreteUniform.STATE_LENGTH;\n\n\nbase.random.discreteUniform.STATE_SIZE\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.discreteUniform.STATE_SIZE;\n\n", - "base.random.erlang": "\nbase.random.erlang( k, λ )\n Returns a pseudorandom number drawn from an Erlang distribution.\n\n If `k` is not a positive integer or `λ <= 0`, the function returns `NaN`.\n\n If `k` or `λ` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n k: integer\n Shape parameter.\n\n λ: number\n Rate parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.erlang( 2, 5.0 );\n\n\nbase.random.erlang.factory( [k, λ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from an Erlang distribution.\n\n If provided `k` and `λ`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `k` and `λ`, the returned PRNG requires that both `k` and\n `λ` be provided at each invocation.\n\n Parameters\n ----------\n k: integer (optional)\n Shape parameter.\n\n λ: number (optional)\n Rate parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.erlang.factory();\n > var r = rand( 2, 1.0 );\n > r = rand( 4, 3.14 );\n\n // Provide `k` and `λ`:\n > rand = base.random.erlang.factory( 2, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.erlang.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.erlang.NAME\n 'erlang'\n\n\nbase.random.erlang.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.erlang.PRNG;\n\n\nbase.random.erlang.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.erlang.SEED;\n\n\nbase.random.erlang.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.erlang( 2, 5.0 )\n \n > r = base.random.erlang( 2, 5.0 )\n \n > r = base.random.erlang( 2, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.erlang.STATE\n \n\n > r = base.random.erlang( 2, 5.0 )\n \n > r = base.random.erlang( 2, 5.0 )\n \n\n // Set the state:\n > base.random.erlang.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.erlang( 2, 5.0 )\n \n > r = base.random.erlang( 2, 5.0 )\n \n\n\nbase.random.erlang.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.erlang.STATE_LENGTH;\n\n\nbase.random.erlang.STATE_SIZE\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.erlang.STATE_SIZE;\n\n", - "base.random.exponential": "\nbase.random.exponential( λ )\n Returns a pseudorandom number drawn from an exponential distribution.\n\n If `λ <= 0` or `λ` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n λ: number\n Rate parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.exponential( 7.9 );\n\n\nbase.random.exponential.factory( [λ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from an exponential distribution.\n\n If provided `λ`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `λ`, the returned PRNG requires that `λ` be provided at each\n invocation.\n\n Parameters\n ----------\n λ: number (optional)\n Rate parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.exponential.factory();\n > var r = rand( 5.0 );\n > r = rand( 3.14 );\n\n // Provide `λ`:\n > rand = base.random.exponential.factory( 10.0 );\n > r = rand();\n > r = rand();\n\n\nbase.random.exponential.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.exponential.NAME\n 'exponential'\n\n\nbase.random.exponential.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.exponential.PRNG;\n\n\nbase.random.exponential.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.exponential.SEED;\n\n\nbase.random.exponential.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.exponential( 7.9 )\n \n > r = base.random.exponential( 7.9 )\n \n > r = base.random.exponential( 7.9 )\n \n\n // Get a copy of the current state:\n > var state = base.random.exponential.STATE\n \n\n > r = base.random.exponential( 7.9 )\n \n > r = base.random.exponential( 7.9 )\n \n\n // Set the state:\n > base.random.exponential.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.exponential( 7.9 )\n \n > r = base.random.exponential( 7.9 )\n \n\n\nbase.random.exponential.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.exponential.STATE_LENGTH;\n\n\nbase.random.exponential.STATE_SIZE\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.exponential.STATE_SIZE;\n\n", - "base.random.f": "\nbase.random.f( d1, d2 )\n Returns a pseudorandom number drawn from an F distribution.\n\n If `d1 <= 0` or `d2 <= 0`, the function returns `NaN`.\n\n If `d1` or `d2` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n d1: number\n Degrees of freedom.\n\n d2: number\n Degrees of freedom.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.f( 2.0, 5.0 );\n\n\nbase.random.f.factory( [d1, d2, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from an F distribution.\n\n If provided `d1` and `d2`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `d1` and `d2`, the returned PRNG requires that both `d1` and\n `d2` be provided at each invocation.\n\n Parameters\n ----------\n d1: number (optional)\n Degrees of freedom.\n\n d2: number (optional)\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.f.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 3.0, 3.14 );\n\n // Provide `d1` and `d2`:\n > rand = base.random.f.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.f.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.f.NAME\n 'f'\n\n\nbase.random.f.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.f.PRNG;\n\n\nbase.random.f.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.f.SEED;\n\n", - "base.random.frechet": "\nbase.random.frechet( α, s, m )\n Returns a pseudorandom number drawn from a Fréchet distribution.\n\n If provided `α <= 0` or `s <= 0`, the function returns `NaN`.\n\n If either `α`, `s`, or `m` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n α: number\n Shape parameter.\n\n s: number\n Scale parameter.\n\n m: number\n Location parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.frechet( 2.0, 5.0, 3.33 );\n\n\nbase.random.frechet.factory( [α, s, m, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a triangular distribution.\n\n If provided `α`, `s`, and `m`, the returned PRNG returns random variates\n drawn from the specified distribution.\n\n If not provided `α`, `s`, and `m`, the returned PRNG requires that `α`, `s`,\n and `m` be provided at each invocation.\n\n Parameters\n ----------\n α: number (optional)\n Shape parameter.\n\n s: number (optional)\n Scale parameter.\n\n m: number (optional)\n Location parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.frechet.factory();\n > var r = rand( 1.0, 1.0, 0.5 );\n > r = rand( 2.0, 2.0, 1.0 );\n\n // Provide `α`, `s`, and `m`:\n > rand = base.random.frechet.factory( 1.0, 1.0, 0.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.frechet.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.frechet.NAME\n 'frechet'\n\n\nbase.random.frechet.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.frechet.PRNG;\n\n\nbase.random.frechet.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.frechet.SEED;\n\n", - "base.random.gamma": "\nbase.random.gamma( α, β )\n Returns a pseudorandom number drawn from a gamma distribution.\n\n If `α <= 0` or `β <= 0`, the function returns `NaN`.\n\n If `α` or `β` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n α: number\n Shape parameter.\n\n β: number\n Rate parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.gamma( 2.0, 5.0 );\n\n\nbase.random.gamma.factory( [α, β, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a gamma distribution.\n\n If provided `α` and `β`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `α` and `β`, the returned PRNG requires that both `α` and\n `β` be provided at each invocation.\n\n Parameters\n ----------\n α: number (optional)\n Shape parameter.\n\n β: number (optional)\n Rate parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.gamma.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 3.14, 2.25 );\n\n // Provide `α` and `β`:\n > rand = base.random.gamma.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.gamma.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.gamma.NAME\n 'gamma'\n\n\nbase.random.gamma.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.gamma.PRNG;\n\n\nbase.random.gamma.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.gamma.SEED;\n\n\nbase.random.gamma.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.gamma( 2.0, 5.0 )\n \n > r = base.random.gamma( 2.0, 5.0 )\n \n > r = base.random.gamma( 2.0, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.gamma.STATE\n \n\n > r = base.random.gamma( 2.0, 5.0 )\n \n > r = base.random.gamma( 2.0, 5.0 )\n \n\n // Set the state:\n > base.random.gamma.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.gamma( 2.0, 5.0 )\n \n > r = base.random.gamma( 2.0, 5.0 )\n \n\n\nbase.random.gamma.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.gamma.STATE_LENGTH;\n\n\nbase.random.gamma.STATE_SIZE\n Size of generator state.\n\n Examples\n --------\n > var sz = base.random.gamma.STATE_SIZE;\n\n", - "base.random.geometric": "\nbase.random.geometric( p )\n Returns a pseudorandom number drawn from a geometric distribution.\n\n If `p < 0` or `p > 1` or `p` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n p: number\n Success probability.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.geometric( 0.8 );\n\n\nbase.random.geometric.factory( [p, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a geometric distribution.\n\n If provided `p`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `p`, the returned PRNG requires that `p` be provided at each\n invocation.\n\n Parameters\n ----------\n p: number (optional)\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.geometric.factory();\n > var r = rand( 0.3 );\n > r = rand( 0.59 );\n\n // Provide `p`:\n > rand = base.random.geometric.factory( 0.3 );\n > r = rand();\n > r = rand();\n\n\nbase.random.geometric.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.geometric.NAME\n 'geometric'\n\n\nbase.random.geometric.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.geometric.PRNG;\n\n\nbase.random.geometric.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.geometric.SEED;\n\n", - "base.random.gumbel": "\nbase.random.gumbel( μ, β )\n Returns a pseudorandom number drawn from a Gumbel distribution.\n\n If `μ` or `β` is `NaN` or `β <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n β: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.gumbel( 2.0, 5.0 );\n\n\nbase.random.gumbel.factory( [μ, β, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Gumbel distribution.\n\n If provided `μ` and `β`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `β`, the returned PRNG requires that both `μ` and\n `β` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Mean.\n\n β: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.gumbel.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `β`:\n > rand = base.random.gumbel.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.gumbel.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.gumbel.NAME\n 'gumbel'\n\n\nbase.random.gumbel.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.gumbel.PRNG;\n\n\nbase.random.gumbel.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.gumbel.SEED;\n\n", - "base.random.hypergeometric": "\nbase.random.hypergeometric( N, K, n )\n Returns a pseudorandom number drawn from a hypergeometric distribution.\n\n `N`, `K`, and `n` must all be nonnegative integers; otherwise, the function\n returns `NaN`.\n\n If `n > N` or `K > N`, the function returns `NaN`.\n\n Parameters\n ----------\n N: integer\n Population size.\n\n K: integer\n Subpopulation size.\n\n n: integer\n Number of draws.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.hypergeometric( 20, 10, 7 );\n\n\nbase.random.hypergeometric.factory( [N, K, n, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a hypergeometric distribution.\n\n If provided `N`, `K`, and `n`, the returned PRNG returns random variates\n drawn from the specified distribution.\n\n If not provided `N`, `K`, and `n`, the returned PRNG requires that `N`, `K`,\n and `n` be provided at each invocation.\n\n Parameters\n ----------\n N: integer (optional)\n Population size.\n\n K: integer (optional)\n Subpopulation size.\n\n n: integer (optional)\n Number of draws.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.hypergeometric.factory();\n > var r = rand( 20, 10, 15 );\n > r = rand( 20, 10, 7 );\n\n // Provide `N`, `K`, and `n`:\n > rand = base.random.hypergeometric.factory( 20, 10, 15 );\n > r = rand();\n > r = rand();\n\n\nbase.random.hypergeometric.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.hypergeometric.NAME\n 'hypergeometric'\n\n\nbase.random.hypergeometric.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.hypergeometric.PRNG;\n\n\nbase.random.hypergeometric.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.hypergeometric.SEED;\n\n", - "base.random.improvedZiggurat": "\nbase.random.improvedZiggurat()\n Returns a pseudorandom number drawn from a standard normal distribution.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.improvedZiggurat();\n\n\nbase.random.improvedZiggurat.factory( [options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a standard normal distribution.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.prng: Function (optional)\n Pseudorandom number generator (PRNG) for generating uniformly\n distributed pseudorandom numbers on the interval `[0,1)`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.improvedZiggurat.factory();\n > r = rand();\n > r = rand();\n\n\nbase.random.improvedZiggurat.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.improvedZiggurat.NAME\n 'improved-ziggurat'\n\n\nbase.random.improvedZiggurat.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.improvedZiggurat.PRNG;\n\n\nbase.random.improvedZiggurat.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.improvedZiggurat.SEED;\n\n\nbase.random.improvedZiggurat.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.improvedZiggurat()\n \n > r = base.random.improvedZiggurat()\n \n > r = base.random.improvedZiggurat()\n \n\n // Get a copy of the current state:\n > var state = base.random.improvedZiggurat.STATE\n \n\n > r = base.random.improvedZiggurat()\n \n > r = base.random.improvedZiggurat()\n \n\n // Set the state:\n > base.random.improvedZiggurat.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.improvedZiggurat()\n \n > r = base.random.improvedZiggurat()\n \n\n\nbase.random.improvedZiggurat.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.improvedZiggurat.STATE_LENGTH;\n\n\nbase.random.improvedZiggurat.STATE_SIZE\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.improvedZiggurat.STATE_SIZE;\n\n", - "base.random.invgamma": "\nbase.random.invgamma( α, β )\n Returns a pseudorandom number drawn from an inverse gamma distribution.\n\n If `α <= 0` or `β <= 0`, the function returns `NaN`.\n\n If `α` or `β` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n α: number\n Shape parameter.\n\n β: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.invgamma( 2.0, 5.0 );\n\n\nbase.random.invgamma.factory( [α, β, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from an inverse gamma distribution.\n\n If provided `α` and `β`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `α` and `β`, the returned PRNG requires that both `α` and\n `β` be provided at each invocation.\n\n Parameters\n ----------\n α: number (optional)\n Shape parameter.\n\n β: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.invgamma.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 3.14, 2.25 );\n\n // Provide `α` and `β`:\n > rand = base.random.invgamma.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.invgamma.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.invgamma.NAME\n 'invgamma'\n\n\nbase.random.invgamma.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.invgamma.PRNG;\n\n\nbase.random.invgamma.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.invgamma.SEED;\n\n", - "base.random.kumaraswamy": "\nbase.random.kumaraswamy( a, b )\n Returns a pseudorandom number drawn from Kumaraswamy's double bounded\n distribution.\n\n If `a <= 0` or `b <= 0`, the function returns `NaN`.\n\n If `a` or `b` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n a: number\n First shape parameter.\n\n b: number\n Second shape parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.kumaraswamy( 2.0, 5.0 );\n\n\nbase.random.kumaraswamy.factory( [a, b, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from Kumaraswamy's double bounded distribution.\n\n If provided `a` and `b`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `a` and `b`, the returned PRNG requires that both `a` and\n `b` be provided at each invocation.\n\n Parameters\n ----------\n a: number (optional)\n First shape parameter.\n\n b: number (optional)\n Second shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.kumaraswamy.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `a` and `b`:\n > rand = base.random.kumaraswamy.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.kumaraswamy.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.kumaraswamy.NAME\n 'kumaraswamy'\n\n\nbase.random.kumaraswamy.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.kumaraswamy.PRNG;\n\n\nbase.random.kumaraswamy.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.kumaraswamy.SEED;\n\n", - "base.random.laplace": "\nbase.random.laplace( μ, b )\n Returns a pseudorandom number drawn from a Laplace distribution.\n\n If `μ` or `b` is `NaN` or `b <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n b: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.laplace( 2.0, 5.0 );\n\n\nbase.random.laplace.factory( [μ, b, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Laplace distribution.\n\n If provided `μ` and `b`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `b`, the returned PRNG requires that both `μ` and\n `b` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Mean.\n\n b: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.laplace.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `b`:\n > rand = base.random.laplace.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.laplace.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.laplace.NAME\n 'laplace'\n\n\nbase.random.laplace.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.laplace.PRNG;\n\n\nbase.random.laplace.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.laplace.SEED;\n\n", - "base.random.levy": "\nbase.random.levy( μ, c )\n Returns a pseudorandom number drawn from a Lévy distribution.\n\n If `μ` or `c` is `NaN` or `c <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n c: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.levy( 2.0, 5.0 );\n\n\nbase.random.levy.factory( [μ, c, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Lévy distribution.\n\n If provided `μ` and `c`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `c`, the returned PRNG requires that both `μ` and\n `c` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Mean.\n\n c: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.levy.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `b`:\n > rand = base.random.levy.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.levy.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.levy.NAME\n 'levy'\n\n\nbase.random.levy.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.levy.PRNG;\n\n\nbase.random.levy.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.levy.SEED;\n\n", - "base.random.logistic": "\nbase.random.logistic( μ, s )\n Returns a pseudorandom number drawn from a logistic distribution.\n\n If `μ` or `s` is `NaN` or `s <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.logistic( 2.0, 5.0 );\n\n\nbase.random.logistic.factory( [μ, s, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a logistic distribution.\n\n If provided `μ` and `s`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `s`, the returned PRNG requires that both `μ` and\n `s` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Mean.\n\n s: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.logistic.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `s`:\n > rand = base.random.logistic.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.logistic.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.logistic.NAME\n 'logistic'\n\n\nbase.random.logistic.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.logistic.PRNG;\n\n\nbase.random.logistic.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.logistic.SEED;\n\n", - "base.random.lognormal": "\nbase.random.lognormal( μ, σ )\n Returns a pseudorandom number drawn from a lognormal distribution.\n\n If `μ` or `σ` is `NaN` or `σ <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n σ: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.lognormal( 2.0, 5.0 );\n\n\nbase.random.lognormal.factory( [μ, σ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a lognormal distribution.\n\n If provided `μ` and `σ`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `σ`, the returned PRNG requires that both `μ` and\n `σ` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Location parameter.\n\n σ: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.lognormal.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `σ`:\n > rand = base.random.lognormal.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.lognormal.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.lognormal.NAME\n 'lognormal'\n\n\nbase.random.lognormal.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.lognormal.PRNG;\n\n\nbase.random.lognormal.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.lognormal.SEED;\n\n", - "base.random.minstd": "\nbase.random.minstd()\n Returns a pseudorandom integer on the interval `[1, 2147483646]`.\n\n This pseudorandom number generator (PRNG) is a linear congruential\n pseudorandom number generator (LCG) based on Park and Miller.\n\n The generator has a period of approximately `2.1e9`.\n\n An LCG is fast and uses little memory. On the other hand, because the\n generator is a simple LCG, the generator has recognized shortcomings. By\n today's PRNG standards, the generator's period is relatively short. More\n importantly, the \"randomness quality\" of the generator's output is lacking.\n These defects make the generator unsuitable, for example, in Monte Carlo\n simulations and in cryptographic applications.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.minstd();\n\n\nbase.random.minstd.normalized()\n Returns a pseudorandom number on the interval `[0,1)`.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.minstd.normalized();\n\n\nbase.random.minstd.factory( [options] )\n Returns a linear congruential pseudorandom number generator (LCG).\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.seed: integer|ArrayLikeObject (optional)\n Pseudorandom number generator seed. The seed may be either a positive\n signed 32-bit integer on the interval `[1, 2147483646]` or, for\n arbitrary length seeds, an array-like object containing signed 32-bit\n integers.\n\n options.state: Int32Array (optional)\n Pseudorandom number generator state. If provided, the `seed` option is\n ignored.\n\n options.copy: boolean (optional)\n Boolean indicating whether to copy a provided pseudorandom number\n generator state. Setting this option to `false` allows sharing state\n between two or more pseudorandom number generators. Setting this option\n to `true` ensures that a returned generator has exclusive control over\n its internal state. Default: true.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.minstd.factory();\n > r = rand();\n > r = rand();\n\n // Provide a seed:\n > rand = base.random.minstd.factory( { 'seed': 1234 } );\n > r = rand()\n 20739838\n\n\nbase.random.minstd.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.minstd.NAME\n 'minstd'\n\n\nbase.random.minstd.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.minstd.SEED;\n\n\nbase.random.minstd.MIN\n Minimum possible value.\n\n Examples\n --------\n > var v = base.random.minstd.MIN\n 1\n\n\nbase.random.minstd.MAX\n Maximum possible value.\n\n Examples\n --------\n > var v = base.random.minstd.MAX\n 2147483646\n\n\nbase.random.minstd.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.minstd()\n \n > r = base.random.minstd()\n \n > r = base.random.minstd()\n \n\n // Get the current state:\n > var state = base.random.minstd.STATE\n \n\n > r = base.random.minstd()\n \n > r = base.random.minstd()\n \n\n // Set the state:\n > base.random.minstd.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.minstd()\n \n > r = base.random.minstd()\n \n\n\nbase.random.minstd.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.minstd.STATE_LENGTH;\n\n\nbase.random.minstd.STATE_SIZE\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.minstd.STATE_SIZE;\n\n See Also\n --------\n base.random.minstdShuffle, base.random.mt19937, base.random.randi\n", - "base.random.minstdShuffle": "\nbase.random.minstdShuffle()\n Returns a pseudorandom integer on the interval `[1, 2147483646]`.\n\n This pseudorandom number generator (PRNG) is a linear congruential\n pseudorandom number generator (LCG) whose output is shuffled using the Bays-\n Durham algorithm. The shuffle step considerably strengthens the \"randomness\n quality\" of a simple LCG's output.\n\n The generator has a period of approximately `2.1e9`.\n\n An LCG is fast and uses little memory. On the other hand, because the\n generator is a simple LCG, the generator has recognized shortcomings. By\n today's PRNG standards, the generator's period is relatively short. In\n general, this generator is unsuitable for Monte Carlo simulations and\n cryptographic applications.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.minstdShuffle();\n\n\nbase.random.minstdShuffle.normalized()\n Returns a pseudorandom number on the interval `[0,1)`.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.minstdShuffle.normalized();\n\n\nbase.random.minstdShuffle.factory( [options] )\n Returns a linear congruential pseudorandom number generator (LCG) whose\n output is shuffled.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.seed: integer|ArrayLikeObject (optional)\n Pseudorandom number generator seed. The seed may be either a positive\n signed 32-bit integer on the interval `[1, 2147483646]` or, for\n arbitrary length seeds, an array-like object containing signed 32-bit\n integers.\n\n options.state: Int32Array (optional)\n Pseudorandom number generator state. If provided, the `seed` option is\n ignored.\n\n options.copy: boolean (optional)\n Boolean indicating whether to copy a provided pseudorandom number\n generator state. Setting this option to `false` allows sharing state\n between two or more pseudorandom number generators. Setting this option\n to `true` ensures that a returned generator has exclusive control over\n its internal state. Default: true.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.minstdShuffle.factory();\n > r = rand();\n > r = rand();\n\n // Provide a seed:\n > rand = base.random.minstdShuffle.factory( { 'seed': 1234 } );\n > r = rand()\n 1421600654\n\n\nbase.random.minstdShuffle.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.minstdShuffle.NAME\n 'minstd-shuffle'\n\n\nbase.random.minstdShuffle.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.minstdShuffle.SEED;\n\n\nbase.random.minstdShuffle.MIN\n Minimum possible value.\n\n Examples\n --------\n > var v = base.random.minstdShuffle.MIN\n 1\n\n\nbase.random.minstdShuffle.MAX\n Maximum possible value.\n\n Examples\n --------\n > var v = base.random.minstdShuffle.MAX\n 2147483646\n\n\nbase.random.minstdShuffle.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.minstdShuffle()\n \n > r = base.random.minstdShuffle()\n \n > r = base.random.minstdShuffle()\n \n\n // Get a copy of the current state:\n > var state = base.random.minstdShuffle.STATE\n \n\n > r = base.random.minstdShuffle()\n \n > r = base.random.minstdShuffle()\n \n\n // Set the state:\n > base.random.minstdShuffle.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.minstdShuffle()\n \n > r = base.random.minstdShuffle()\n \n\n\nbase.random.minstdShuffle.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.minstdShuffle.STATE_LENGTH;\n\n\nbase.random.minstdShuffle.STATE_SIZE\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.minstdShuffle.STATE_SIZE;\n\n See Also\n --------\n base.random.minstd, base.random.mt19937, base.random.randi\n", - "base.random.mt19937": "\nbase.random.mt19937()\n Returns a pseudorandom integer on the interval `[1, 4294967295]`.\n\n This pseudorandom number generator (PRNG) is a 32-bit Mersenne Twister\n pseudorandom number generator.\n\n The PRNG is *not* a cryptographically secure PRNG.\n\n The PRNG has a period of 2^19937 - 1.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.mt19937();\n\n\nbase.random.mt19937.normalized()\n Returns a pseudorandom number on the interval `[0,1)` with 53-bit precision.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.mt19937.normalized();\n\n\nbase.random.mt19937.factory( [options] )\n Returns a 32-bit Mersenne Twister pseudorandom number generator.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.seed: integer|ArrayLikeObject (optional)\n Pseudorandom number generator seed. The seed may be either a positive\n unsigned 32-bit integer or, for arbitrary length seeds, an array-like\n object containing unsigned 32-bit integers.\n\n options.state: Uint32Array (optional)\n Pseudorandom number generator state. If provided, the `seed` option is\n ignored.\n\n options.copy: boolean (optional)\n Boolean indicating whether to copy a provided pseudorandom number\n generator state. Setting this option to `false` allows sharing state\n between two or more pseudorandom number generators. Setting this option\n to `true` ensures that a returned generator has exclusive control over\n its internal state. Default: true.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.mt19937.factory();\n > r = rand();\n > r = rand();\n\n // Provide a seed:\n > rand = base.random.mt19937.factory( { 'seed': 1234 } );\n > r = rand()\n 822569775\n\n\nbase.random.mt19937.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.mt19937.NAME\n 'mt19937'\n\n\nbase.random.mt19937.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.mt19937.SEED;\n\n\nbase.random.mt19937.MIN\n Minimum possible value.\n\n Examples\n --------\n > var v = base.random.mt19937.MIN\n 1\n\n\nbase.random.mt19937.MAX\n Maximum possible value.\n\n Examples\n --------\n > var v = base.random.mt19937.MAX\n 4294967295\n\n\nbase.random.mt19937.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.mt19937()\n \n > r = base.random.mt19937()\n \n > r = base.random.mt19937()\n \n\n // Get a copy of the current state:\n > var state = base.random.mt19937.STATE\n \n\n > r = base.random.mt19937()\n \n > r = base.random.mt19937()\n \n\n // Set the state:\n > base.random.mt19937.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.mt19937()\n \n > r = base.random.mt19937()\n \n\n\nbase.random.mt19937.STATE_LENGTH\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.mt19937.STATE_LENGTH;\n\n\nbase.random.mt19937.STATE_SIZE\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.mt19937.STATE_SIZE;\n\n See Also\n --------\n base.random.minstd, base.random.randi\n", - "base.random.negativeBinomial": "\nbase.random.negativeBinomial( r, p )\n Returns a pseudorandom number drawn from a negative binomial distribution.\n\n If `p` is not in the interval `(0,1)`, the function returns `NaN`.\n\n If `r` or `p` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n r: number\n Number of successes until experiment is stopped.\n\n p: number\n Success probability.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.negativeBinomial( 20, 0.8 );\n\n\nbase.random.negativeBinomial.factory( [r, p, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a negative binomial distribution.\n\n If provided `r` and `p`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `r` and `p`, the returned PRNG requires that both `r` and\n `p` be provided at each invocation.\n\n Parameters\n ----------\n r: number (optional)\n Number of successes until experiment is stopped.\n\n p: number (optional)\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.negativeBinomial.factory();\n > var r = rand( 20, 0.3 );\n > r = rand( 10, 0.77 );\n\n // Provide `r` and `p`:\n > rand = base.random.negativeBinomial.factory( 10, 0.8 );\n > r = rand();\n > r = rand();\n\n\nbase.random.negativeBinomial.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.negativeBinomial.NAME\n 'negative-binomial'\n\n\nbase.random.negativeBinomial.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.negativeBinomial.PRNG;\n\n\nbase.random.negativeBinomial.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.negativeBinomial.SEED;\n\n", - "base.random.normal": "\nbase.random.normal( μ, σ )\n Returns a pseudorandom number drawn from a normal distribution.\n\n If `μ` or `σ` is `NaN` or `σ <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n σ: number\n Standard deviation.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.normal( 2.0, 5.0 );\n\n\nbase.random.normal.factory( [μ, σ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a normal distribution.\n\n If provided `μ` and `σ`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `σ`, the returned PRNG requires that both `μ` and\n `σ` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Mean.\n\n σ: number (optional)\n Standard deviation.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.normal.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `σ`:\n > rand = base.random.normal.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.normal.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.normal.NAME\n 'normal'\n\n\nbase.random.normal.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.normal.PRNG;\n\n\nbase.random.normal.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.normal.SEED;\n\n\nbase.random.normal.STATE\n Generator state.\n\n Examples\n --------\n > var r = base.random.normal( 2.0, 5.0 )\n \n > r = base.random.normal( 2.0, 5.0 )\n \n > r = base.random.normal( 2.0, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.normal.STATE\n \n\n > r = base.random.normal( 2.0, 5.0 )\n \n > r = base.random.normal( 2.0, 5.0 )\n \n\n // Set the state:\n > base.random.normal.STATE = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.normal( 2.0, 5.0 )\n \n > r = base.random.normal( 2.0, 5.0 )\n \n\n\nbase.random.normal.STATE_SIZE\n Size of generator state.\n\n Examples\n --------\n > var sz = base.random.normal.STATE_SIZE;\n\n", - "base.random.pareto1": "\nbase.random.pareto1( α, β )\n Returns a pseudorandom number drawn from a Pareto (Type I) distribution.\n\n If `α <= 0` or `β <= 0`, the function returns `NaN`.\n\n If `α` or `β` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n α: number\n Shape parameter.\n\n β: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.pareto1( 2.0, 5.0 );\n\n\nbase.random.pareto1.factory( [α, β, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Pareto (Type I) distribution.\n\n If provided `α` and `β`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `α` and `β`, the returned PRNG requires that both `α` and\n `β` be provided at each invocation.\n\n Parameters\n ----------\n α: number (optional)\n Shape parameter.\n\n β: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.pareto1.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `α` and `β`:\n > rand = base.random.pareto1.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.pareto1.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.pareto1.NAME\n 'pareto-type1'\n\n\nbase.random.pareto1.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.pareto1.PRNG;\n\n\nbase.random.pareto1.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.pareto1.SEED;\n\n", - "base.random.poisson": "\nbase.random.poisson( λ )\n Returns a pseudorandom number drawn from a Poisson distribution.\n\n If `λ <= 0` or `λ` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n λ: number\n Mean.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.poisson( 7.9 );\n\n\nbase.random.poisson.factory( [λ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Poisson distribution.\n\n If provided `λ`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `λ`, the returned PRNG requires that `λ` be provided at each\n invocation.\n\n Parameters\n ----------\n λ: number (optional)\n Mean.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.poisson.factory();\n > var r = rand( 4.0 );\n > r = rand( 3.14 );\n\n // Provide `λ`:\n > rand = base.random.poisson.factory( 10.0 );\n > r = rand();\n > r = rand();\n\n\nbase.random.poisson.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.poisson.NAME\n 'poisson'\n\n\nbase.random.poisson.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.poisson.PRNG;\n\n\nbase.random.poisson.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.poisson.SEED;\n\n", - "base.random.randi": "\nbase.random.randi()\n Returns a pseudorandom number having an integer value.\n\n The default underlying pseudorandom number generator (PRNG) *may* change in\n the future. If exact reproducibility is required, either use the `factory`\n method to explicitly specify a PRNG via the `name` option or use an\n underlying PRNG directly.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.randi();\n\n\nbase.random.randi.factory( [options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers having integer values.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.name: string (optional)\n Name of the underlying pseudorandom number generator (PRNG). The\n following PRNGs are supported:\n\n - mt19937: 32-bit Mersenne Twister.\n - minstd: linear congruential PRNG based on Park and Miller.\n - minstd-shuffle: linear congruential PRNG whose output is shuffled.\n\n Default: 'mt19937'.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var randi = base.random.randi.factory();\n > var r = randi();\n > r = randi();\n\n // Specify alternative PRNG:\n > randi = base.random.randi.factory({ 'name': 'minstd' });\n > r = randi();\n > r = randi();\n\n\nbase.random.randi.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.randi.NAME\n 'randi'\n\n\nbase.random.randi.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.randi.PRNG;\n\n\nbase.random.randi.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.randi.SEED;\n\n\nbase.random.randi.MIN\n Minimum possible value (specific to underlying PRNG).\n\n Examples\n --------\n > var v = base.random.randi.MIN;\n\n\nbase.random.randi.MAX\n Maximum possible value (specific to underlying PRNG).\n\n Examples\n --------\n > var v = base.random.randi.MAX;\n\n See Also\n --------\n base.random.minstd, base.random.minstdShuffle, base.random.mt19937\n", - "base.random.randn": "\nbase.random.randn()\n Returns a pseudorandom number drawn from a standard normal distribution.\n\n The default underlying pseudorandom number generator (PRNG) *may* change in\n the future. If exact reproducibility is required, either use the `factory`\n method to explicitly specify a PRNG via the `name` option or use an\n underlying PRNG directly.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.randn();\n\n\nbase.random.randn.factory( [options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a standard normal distribution.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.name: string (optional)\n Name of the underlying pseudorandom number generator (PRNG) that samples\n from a standard normal distribution. The following PRNGs are supported:\n\n - improved-ziggurat: improved ziggurat method.\n - box-muller: Box-Muller transform.\n\n Default: 'improved-ziggurat'.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.randn.factory();\n > var r = rand();\n > r = rand();\n\n // Specify alternative PRNG:\n > var rand = base.random.randn.factory({ 'name': 'box-muller' });\n > r = rand();\n > r = rand();\n\n\nbase.random.randn.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.randn.NAME\n 'standard-normal'\n\n\nbase.random.randn.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.randn.PRNG;\n\n\nbase.random.randn.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.randn.SEED;\n\n See Also\n --------\n base.random.improvedZiggurat, base.random.randu\n", - "base.random.randu": "\nbase.random.randu()\n Returns a pseudorandom number drawn from a uniform distribution.\n\n The default underlying pseudorandom number generator (PRNG) *may* change in\n the future. If exact reproducibility is required, either use the `factory`\n method to explicitly specify a PRNG via the `name` option or use an\n underlying PRNG directly.\n\n Returns\n -------\n r: number\n Pseudorandom number on the interval `[0,1)`.\n\n Examples\n --------\n > var r = base.random.randu();\n\n\nbase.random.randu.factory( [options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a uniform distribution.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.name: string (optional)\n Name of the underlying pseudorandom number generator (PRNG). The\n following PRNGs are supported:\n\n - mt19937: 32-bit Mersenne Twister.\n - minstd: linear congruential PRNG based on Park and Miller.\n - minstd-shuffle: linear congruential PRNG whose output is shuffled.\n\n Default: 'mt19937'.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.randu.factory();\n > var r = rand();\n > r = rand();\n\n // Specify alternative PRNG:\n > var rand = base.random.randu.factory({ 'name': 'minstd' });\n > r = rand();\n > r = rand();\n\n\nbase.random.randu.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.randu.NAME\n 'uniform'\n\n\nbase.random.randu.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.randu.PRNG;\n\n\nbase.random.randu.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.randu.SEED;\n\n See Also\n --------\n base.random.discreteUniform, base.random.randn\n", - "base.random.rayleigh": "\nbase.random.rayleigh( σ )\n Returns a pseudorandom number drawn from a Rayleigh distribution.\n\n If `σ` is `NaN` or `σ <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n σ: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.rayleigh( 2.5 );\n\n\nbase.random.rayleigh.factory( [σ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Rayleigh distribution.\n\n If provided `σ`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `σ`, the returned PRNG requires that `σ` be provided at each\n invocation.\n\n Parameters\n ----------\n σ: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.rayleigh.factory();\n > var r = rand( 5.0 );\n > r = rand( 10.0 );\n\n // Provide `σ`:\n > rand = base.random.rayleigh.factory( 5.0 );\n > r = rand();\n > r = rand();\n\n\nbase.random.rayleigh.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.rayleigh.NAME\n 'rayleigh'\n\n\nbase.random.rayleigh.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.rayleigh.PRNG;\n\n\nbase.random.rayleigh.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.rayleigh.SEED;\n\n", - "base.random.t": "\nbase.random.t( v )\n Returns a pseudorandom number drawn from a Student's t distribution.\n\n If `v <= 0` or `v` is `NaN`, the function\n returns `NaN`.\n\n Parameters\n ----------\n v: number\n Degrees of freedom.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.t( 2.0 );\n\n\nbase.random.t.factory( [v, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Student's t distribution.\n\n If provided `v`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `v`, the returned PRNG requires that `v` be provided at each\n invocation.\n\n Parameters\n ----------\n v: number (optional)\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.t.factory();\n > var r = rand( 5.0 );\n > r = rand( 3.14 );\n\n // Provide `v`:\n > rand = base.random.t.factory( 5.0 );\n > r = rand();\n > r = rand();\n\n\nbase.random.t.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.t.NAME\n 't'\n\n\nbase.random.t.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.t.PRNG;\n\n\nbase.random.t.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.t.SEED;\n\n", - "base.random.triangular": "\nbase.random.triangular( a, b, c )\n Returns a pseudorandom number drawn from a triangular distribution.\n\n If the condition `a <= c <= b` is not satisfied, the function returns `NaN`.\n\n If either `a`, `b`, or `c` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n a: number\n Minimum support.\n\n b: number\n Maximum support.\n\n c: number\n Mode.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.triangular( 2.0, 5.0, 3.33 );\n\n\nbase.random.triangular.factory( [a, b, c, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a triangular distribution.\n\n If provided `a`, `b`, and `c`, the returned PRNG returns random variates\n drawn from the specified distribution.\n\n If not provided `a`, `b`, and `c`, the returned PRNG requires that `a`, `b`,\n and `c` be provided at each invocation.\n\n Parameters\n ----------\n a: number (optional)\n Minimum support.\n\n b: number (optional)\n Maximum support.\n\n c: number (optional)\n Mode.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.triangular.factory();\n > var r = rand( 0.0, 1.0, 0.5 );\n > r = rand( -2.0, 2.0, 1.0 );\n\n // Provide `a`, `b`, and `c`:\n > rand = base.random.triangular.factory( 0.0, 1.0, 0.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.triangular.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.triangular.NAME\n 'triangular'\n\n\nbase.random.triangular.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.triangular.PRNG;\n\n\nbase.random.triangular.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.triangular.SEED;\n\n", - "base.random.uniform": "\nbase.random.uniform( a, b )\n Returns a pseudorandom number drawn from a continuous uniform distribution.\n\n If `a >= b`, the function returns `NaN`.\n\n If `a` or `b` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n a: number\n Minimum support (inclusive).\n\n b: number\n Maximum support (exclusive).\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.uniform( 2.0, 5.0 );\n\n\nbase.random.uniform.factory( [a, b, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a continuous uniform distribution.\n\n If provided `a` and `b`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `a` and `b`, the returned PRNG requires that both `a` and\n `b` be provided at each invocation.\n\n Parameters\n ----------\n a: number (optional)\n Minimum support (inclusive).\n\n b: number (optional)\n Maximum support (exclusive).\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.uniform.factory();\n > var r = rand( 0.0, 1.0 );\n > r = rand( -2.0, 2.0 );\n\n // Provide `a` and `b`:\n > rand = base.random.uniform.factory( 0.0, 1.0 );\n > r = rand();\n > r = rand();\n\n\nbase.random.uniform.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.uniform.NAME\n 'uniform'\n\n\nbase.random.uniform.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.uniform.PRNG;\n\n\nbase.random.uniform.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.uniform.SEED;\n\n See Also\n --------\n base.random.discreteUniform, base.random.randu\n", - "base.random.weibull": "\nbase.random.weibull( k, λ )\n Returns a pseudorandom number drawn from a Weibull distribution.\n\n If `k <= 0` or `λ <= 0`, the function returns `NaN`.\n\n If either `λ` or `k` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n k: number\n Scale parameter.\n\n λ: number\n Shape parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.weibull( 2.0, 5.0 );\n\n\nbase.random.weibull.factory( [k, λ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Weibull distribution.\n\n If provided `k` and `λ`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `k` and `λ`, the returned PRNG requires that both\n `k` and `λ` be provided at each invocation.\n\n Parameters\n ----------\n k: number (optional)\n Scale parameter.\n\n λ: number (optional)\n Shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.weibull.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `λ` and `k`:\n > rand = base.random.weibull.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.weibull.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.weibull.NAME\n 'weibull'\n\n\nbase.random.weibull.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.weibull.PRNG;\n\n\nbase.random.weibull.SEED\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.weibull.SEED;\n\n", + "base.random.arcsine": "\nbase.random.arcsine( a, b )\n Returns a pseudorandom number drawn from an arcsine distribution.\n\n If `a >= b`, the function returns `NaN`.\n\n If `a` or `b` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n a: number\n Minimum support.\n\n b: number\n Maximum support.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.arcsine( 2.0, 5.0 )\n \n\n\nbase.random.arcsine.factory( [a, b, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from an arcsine distribution.\n\n If provided `a` and `b`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `a` and `b`, the returned PRNG requires that both `a` and\n `b` be provided at each invocation.\n\n Parameters\n ----------\n a: number (optional)\n Minimum support.\n\n b: number (optional)\n Maximum support.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.arcsine.factory();\n > var r = rand( 0.0, 1.0 )\n \n > r = rand( -2.0, 2.0 )\n \n\n // Provide `a` and `b`:\n > rand = base.random.arcsine.factory( 0.0, 1.0 );\n > r = rand()\n \n > r = rand()\n \n\n\nbase.random.arcsine.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.arcsine.NAME\n 'arcsine'\n\n\nbase.random.arcsine.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.arcsine.PRNG;\n\n\nbase.random.arcsine.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.arcsine.seed;\n\n\nbase.random.arcsine.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.arcsine( 2.0, 4.0 )\n \n > r = base.random.arcsine( 2.0, 4.0 )\n \n > r = base.random.arcsine( 2.0, 4.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.arcsine.state\n \n\n > r = base.random.arcsine( 2.0, 4.0 )\n \n > r = base.random.arcsine( 2.0, 4.0 )\n \n\n // Set the state:\n > base.random.arcsine.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.arcsine( 2.0, 4.0 )\n \n > r = base.random.arcsine( 2.0, 4.0 )\n \n\n\nbase.random.arcsine.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.arcsine.stateLength;\n\n\nbase.random.arcsine.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.arcsine.byteLength;\n\n See Also\n --------\n base.random.beta\n", + "base.random.bernoulli": "\nbase.random.bernoulli( p )\n Returns a pseudorandom number drawn from a Bernoulli distribution.\n\n If `p < 0` or `p > 1` or `p` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n p: number\n Success probability.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.bernoulli( 0.8 );\n\n\nbase.random.bernoulli.factory( [p, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Bernoulli distribution.\n\n If provided `p`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `p`, the returned PRNG requires that `p` be provided at each\n invocation.\n\n Parameters\n ----------\n p: number (optional)\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.bernoulli.factory();\n > var r = rand( 0.3 );\n > r = rand( 0.59 );\n\n // Provide `p`:\n > rand = base.random.bernoulli.factory( 0.3 );\n > r = rand();\n > r = rand();\n\n\nbase.random.bernoulli.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.bernoulli.NAME\n 'bernoulli'\n\n\nbase.random.bernoulli.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.bernoulli.PRNG;\n\n\nbase.random.bernoulli.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.bernoulli.seed;\n\n\nbase.random.bernoulli.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.bernoulli( 0.3 )\n \n > r = base.random.bernoulli( 0.3 )\n \n > r = base.random.bernoulli( 0.3 )\n \n\n // Get a copy of the current state:\n > var state = base.random.bernoulli.state\n \n\n > r = base.random.bernoulli( 0.3 )\n \n > r = base.random.bernoulli( 0.3 )\n \n\n // Set the state:\n > base.random.bernoulli.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.bernoulli( 0.3 )\n \n > r = base.random.bernoulli( 0.3 )\n \n\n\nbase.random.bernoulli.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.bernoulli.stateLength;\n\n\nbase.random.bernoulli.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.bernoulli.byteLength;\n\n See Also\n --------\n base.random.binomial\n", + "base.random.beta": "\nbase.random.beta( α, β )\n Returns a pseudorandom number drawn from a beta distribution.\n\n If `α <= 0` or `β <= 0`, the function returns `NaN`.\n\n If `α` or `β` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n α: number\n First shape parameter.\n\n β: number\n Second shape parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.beta( 2.0, 5.0 );\n\n\nbase.random.beta.factory( [α, β, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a beta distribution.\n\n If provided `α` and `β`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `α` and `β`, the returned PRNG requires that both `α` and\n `β` be provided at each invocation.\n\n Parameters\n ----------\n α: number (optional)\n First shape parameter.\n\n β: number (optional)\n Second shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.beta.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `α` and `β`:\n > rand = base.random.beta.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.beta.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.beta.NAME\n 'beta'\n\n\nbase.random.beta.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.beta.PRNG;\n\n\nbase.random.beta.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.beta.seed;\n\n\nbase.random.beta.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.beta( 2.0, 5.0 )\n \n > r = base.random.beta( 2.0, 5.0 )\n \n > r = base.random.beta( 2.0, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.beta.state\n \n\n > r = base.random.beta( 2.0, 5.0 )\n \n > r = base.random.beta( 2.0, 5.0 )\n \n\n // Set the state:\n > base.random.beta.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.beta( 2.0, 5.0 )\n \n > r = base.random.beta( 2.0, 5.0 )\n \n\n\nbase.random.beta.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.beta.stateLength;\n\n\nbase.random.beta.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.beta.byteLength;\n\n", + "base.random.betaprime": "\nbase.random.betaprime( α, β )\n Returns a pseudorandom number drawn from a beta prime distribution.\n\n If `α <= 0` or `β <= 0`, the function returns `NaN`.\n\n If `α` or `β` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n α: number\n First shape parameter.\n\n β: number\n Second shape parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.betaprime( 2.0, 5.0 );\n\n\nbase.random.betaprime.factory( [α, β, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a beta prime distribution.\n\n If provided `α` and `β`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `α` and `β`, the returned PRNG requires that both `α` and\n `β` be provided at each invocation.\n\n Parameters\n ----------\n α: number (optional)\n First shape parameter.\n\n β: number (optional)\n Second shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.betaprime.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `α` and `β`:\n > rand = base.random.betaprime.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.betaprime.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.betaprime.NAME\n 'betaprime'\n\n\nbase.random.betaprime.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.betaprime.PRNG;\n\n\nbase.random.betaprime.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.betaprime.seed;\n\n\nbase.random.betaprime.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.betaprime( 2.0, 5.0 )\n \n > r = base.random.betaprime( 2.0, 5.0 )\n \n > r = base.random.betaprime( 2.0, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.betaprime.state\n \n\n > r = base.random.betaprime( 2.0, 5.0 )\n \n > r = base.random.betaprime( 2.0, 5.0 )\n \n\n // Set the state:\n > base.random.betaprime.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.betaprime( 2.0, 5.0 )\n \n > r = base.random.betaprime( 2.0, 5.0 )\n \n\n\nbase.random.betaprime.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.betaprime.stateLength;\n\n\nbase.random.betaprime.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.betaprime.byteLength;\n\n", + "base.random.binomial": "\nbase.random.binomial( n, p )\n Returns a pseudorandom number drawn from a binomial distribution.\n\n If `n` is not a positive integer or `p` is not a probability, the function\n returns `NaN`.\n\n If `n` or `p` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n n: integer\n Number of trials.\n\n p: number\n Success probability.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.binomial( 20, 0.8 );\n\n\nbase.random.binomial.factory( [n, p, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a binomial distribution.\n\n If provided `n` and `p`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `n` and `p`, the returned PRNG requires that both `n` and\n `p` be provided at each invocation.\n\n Parameters\n ----------\n n: integer (optional)\n Number of trials.\n\n p: number (optional)\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.binomial.factory();\n > var r = rand( 20, 0.3 );\n > r = rand( 10, 0.77 );\n\n // Provide `n` and `p`:\n > rand = base.random.binomial.factory( 10, 0.8 );\n > r = rand();\n > r = rand();\n\n\nbase.random.binomial.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.binomial.NAME\n 'binomial'\n\n\nbase.random.binomial.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.binomial.PRNG;\n\n\nbase.random.binomial.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.binomial.seed;\n\n\nbase.random.binomial.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.binomial( 20, 0.8 )\n \n > r = base.random.binomial( 20, 0.8 )\n \n > r = base.random.binomial( 20, 0.8 )\n \n\n // Get a copy of the current state:\n > var state = base.random.binomial.state\n \n\n > r = base.random.binomial( 20, 0.8 )\n \n > r = base.random.binomial( 20, 0.8 )\n \n\n // Set the state:\n > base.random.binomial.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.binomial( 20, 0.8 )\n \n > r = base.random.binomial( 20, 0.8 )\n \n\n\nbase.random.binomial.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.binomial.stateLength;\n\n\nbase.random.binomial.byteLength\n Size of generator state.\n\n Examples\n --------\n > var sz = base.random.binomial.byteLength;\n\n", + "base.random.boxMuller": "\nbase.random.boxMuller()\n Returns a pseudorandom number drawn from a standard normal distribution.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.boxMuller();\n\n\nbase.random.boxMuller.factory( [options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a standard normal distribution.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.prng: Function (optional)\n Pseudorandom number generator (PRNG) for generating uniformly\n distributed pseudorandom numbers on the interval `[0,1)`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.boxMuller.factory();\n > r = rand();\n > r = rand();\n\n\nbase.random.boxMuller.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.boxMuller.NAME\n 'box-muller'\n\n\nbase.random.boxMuller.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.boxMuller.PRNG;\n\n\nbase.random.boxMuller.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.boxMuller.seed;\n\n\nbase.random.boxMuller.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.boxMuller()\n \n > r = base.random.boxMuller()\n \n > r = base.random.boxMuller()\n \n\n // Get a copy of the current state:\n > var state = base.random.boxMuller.state\n \n\n > r = base.random.boxMuller()\n \n > r = base.random.boxMuller()\n \n\n // Set the state:\n > base.random.boxMuller.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.boxMuller()\n \n > r = base.random.boxMuller()\n \n\n\nbase.random.boxMuller.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.boxMuller.stateLength;\n\n\nbase.random.boxMuller.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.boxMuller.byteLength;\n\n", + "base.random.cauchy": "\nbase.random.cauchy( x0, Ɣ )\n Returns a pseudorandom number drawn from a Cauchy distribution.\n\n If `x0` or `Ɣ` is `NaN` or `Ɣ <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n x0: number\n Location parameter.\n\n Ɣ: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.cauchy( 2.0, 5.0 );\n\n\nbase.random.cauchy.factory( [x0, Ɣ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Cauchy distribution.\n\n If provided `x0` and `Ɣ`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `x0` and `Ɣ`, the returned PRNG requires that both `x0` and\n `Ɣ` be provided at each invocation.\n\n Parameters\n ----------\n x0: number (optional)\n Location parameter.\n\n Ɣ: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.cauchy.factory();\n > var r = rand( 0.0, 1.5 );\n > r = rand( -2.0, 2.0 );\n\n // Provide `x0` and `Ɣ`:\n > rand = base.random.cauchy.factory( 0.0, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.cauchy.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.cauchy.NAME\n 'cauchy'\n\n\nbase.random.cauchy.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.cauchy.PRNG;\n\n\nbase.random.cauchy.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.cauchy.seed;\n\n\nbase.random.cauchy.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.cauchy( 2.0, 5.0 )\n \n > r = base.random.cauchy( 2.0, 5.0 )\n \n > r = base.random.cauchy( 2.0, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.cauchy.state\n \n\n > r = base.random.cauchy( 2.0, 5.0 )\n \n > r = base.random.cauchy( 2.0, 5.0 )\n \n\n // Set the state:\n > base.random.cauchy.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.cauchy( 2.0, 5.0 )\n \n > r = base.random.cauchy( 2.0, 5.0 )\n \n\n\nbase.random.cauchy.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.cauchy.stateLength;\n\n\nbase.random.cauchy.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.cauchy.byteLength;\n\n", + "base.random.chi": "\nbase.random.chi( k )\n Returns a pseudorandom number drawn from a chi distribution.\n\n If `k <= 0` or `k` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n k: number\n Degrees of freedom.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.chi( 2 );\n\n\nbase.random.chi.factory( [k, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a chi distribution.\n\n If provided `k`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `k`, the returned PRNG requires that `k` be provided at each\n invocation.\n\n Parameters\n ----------\n k: number (optional)\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.chi.factory();\n > var r = rand( 5 );\n > r = rand( 3.14 );\n\n // Provide `k`:\n > rand = base.random.chi.factory( 3 );\n > r = rand();\n > r = rand();\n\n\nbase.random.chi.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.chi.NAME\n 'chi'\n\n\nbase.random.chi.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.chi.PRNG;\n\n\nbase.random.chi.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.chi.seed;\n\n\nbase.random.chi.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.chi( 2 )\n \n > r = base.random.chi( 2 )\n \n > r = base.random.chi( 2 )\n \n\n // Get a copy of the current state:\n > var state = base.random.chi.state\n \n\n > r = base.random.chi( 2 )\n \n > r = base.random.chi( 2 )\n \n\n // Set the state:\n > base.random.chi.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.chi( 2 )\n \n > r = base.random.chi( 2 )\n \n\n\nbase.random.chi.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.chi.stateLength;\n\n\nbase.random.chi.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.chi.byteLength;\n\n", + "base.random.chisquare": "\nbase.random.chisquare( k )\n Returns a pseudorandom number drawn from a chi-square distribution.\n\n If `k <= 0` or `k` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n k: number\n Degrees of freedom.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.chisquare( 2 );\n\n\nbase.random.chisquare.factory( [k, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a chi-square distribution.\n\n If provided `k`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `k`, the returned PRNG requires that `k` be provided at each\n invocation.\n\n Parameters\n ----------\n k: number (optional)\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.chisquare.factory();\n > var r = rand( 5 );\n > r = rand( 3.14 );\n\n // Provide `k`:\n > rand = base.random.chisquare.factory( 3 );\n > r = rand();\n > r = rand();\n\n\nbase.random.chisquare.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.chisquare.NAME\n 'chisquare'\n\n\nbase.random.chisquare.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.chisquare.PRNG;\n\n\nbase.random.chisquare.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.chisquare.seed;\n\n\nbase.random.chisquare.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.chisquare( 2 )\n \n > r = base.random.chisquare( 2 )\n \n > r = base.random.chisquare( 2 )\n \n\n // Get a copy of the current state:\n > var state = base.random.chisquare.state\n \n\n > r = base.random.chisquare( 2 )\n \n > r = base.random.chisquare( 2 )\n \n\n // Set the state:\n > base.random.chisquare.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.chisquare( 2 )\n \n > r = base.random.chisquare( 2 )\n \n\n\nbase.random.chisquare.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.chisquare.stateLength;\n\n\nbase.random.chisquare.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.chisquare.byteLength;\n\n", + "base.random.cosine": "\nbase.random.cosine( μ, s )\n Returns a pseudorandom number drawn from a raised cosine distribution.\n\n If `μ` or `s` is `NaN` or `s <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.cosine( 2.0, 5.0 );\n\n\nbase.random.cosine.factory( [μ, s, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a raised cosine distribution.\n\n If provided `μ` and `s`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `s`, the returned PRNG requires that both `μ` and\n `s` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Location parameter.\n\n s: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.cosine.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `s`:\n > rand = base.random.cosine.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.cosine.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.cosine.NAME\n 'cosine'\n\n\nbase.random.cosine.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.cosine.PRNG;\n\n\nbase.random.cosine.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.cosine.seed;\n\n\nbase.random.cosine.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.cosine( 2.0, 5.0 )\n \n > r = base.random.cosine( 2.0, 5.0 )\n \n > r = base.random.cosine( 2.0, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.cosine.state\n \n\n > r = base.random.cosine( 2.0, 5.0 )\n \n > r = base.random.cosine( 2.0, 5.0 )\n \n\n // Set the state:\n > base.random.cosine.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.cosine( 2.0, 5.0 )\n \n > r = base.random.cosine( 2.0, 5.0 )\n \n\n\nbase.random.cosine.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.cosine.stateLength;\n\n\nbase.random.cosine.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.cosine.byteLength;\n\n", + "base.random.discreteUniform": "\nbase.random.discreteUniform( a, b )\n Returns a pseudorandom number drawn from a discrete uniform distribution.\n\n If `a > b`, the function returns `NaN`.\n\n If `a` or `b` is not an integer value, the function returns `NaN`.\n\n Parameters\n ----------\n a: integer\n Minimum support.\n\n b: integer\n Maximum support.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.discreteUniform( 2, 50 );\n\n\nbase.random.discreteUniform.factory( [a, b, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a discrete uniform distribution.\n\n If provided `a` and `b`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `a` and `b`, the returned PRNG requires that both `a` and\n `b` be provided at each invocation.\n\n Parameters\n ----------\n a: integer (optional)\n Minimum support.\n\n b: integer (optional)\n Maximum support.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.discreteUniform.factory();\n > var r = rand( 0, 10 );\n > r = rand( -20, 20 );\n\n // Provide `a` and `b`:\n > rand = base.random.discreteUniform.factory( 0, 10 );\n > r = rand();\n > r = rand();\n\n\nbase.random.discreteUniform.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.discreteUniform.NAME\n 'discrete-uniform'\n\n\nbase.random.discreteUniform.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.discreteUniform.PRNG;\n\n\nbase.random.discreteUniform.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.discreteUniform.seed;\n\n\nbase.random.discreteUniform.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.discreteUniform( 2, 50 )\n \n > r = base.random.discreteUniform( 2, 50 )\n \n > r = base.random.discreteUniform( 2, 50 )\n \n\n // Get a copy of the current state:\n > var state = base.random.discreteUniform.state\n \n\n > r = base.random.discreteUniform( 2, 50 )\n \n > r = base.random.discreteUniform( 2, 50 )\n \n\n // Set the state:\n > base.random.discreteUniform.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.discreteUniform( 2, 50 )\n \n > r = base.random.discreteUniform( 2, 50 )\n \n\n\nbase.random.discreteUniform.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.discreteUniform.stateLength;\n\n\nbase.random.discreteUniform.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.discreteUniform.byteLength;\n\n", + "base.random.erlang": "\nbase.random.erlang( k, λ )\n Returns a pseudorandom number drawn from an Erlang distribution.\n\n If `k` is not a positive integer or `λ <= 0`, the function returns `NaN`.\n\n If `k` or `λ` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n k: integer\n Shape parameter.\n\n λ: number\n Rate parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.erlang( 2, 5.0 );\n\n\nbase.random.erlang.factory( [k, λ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from an Erlang distribution.\n\n If provided `k` and `λ`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `k` and `λ`, the returned PRNG requires that both `k` and\n `λ` be provided at each invocation.\n\n Parameters\n ----------\n k: integer (optional)\n Shape parameter.\n\n λ: number (optional)\n Rate parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.erlang.factory();\n > var r = rand( 2, 1.0 );\n > r = rand( 4, 3.14 );\n\n // Provide `k` and `λ`:\n > rand = base.random.erlang.factory( 2, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.erlang.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.erlang.NAME\n 'erlang'\n\n\nbase.random.erlang.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.erlang.PRNG;\n\n\nbase.random.erlang.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.erlang.seed;\n\n\nbase.random.erlang.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.erlang( 2, 5.0 )\n \n > r = base.random.erlang( 2, 5.0 )\n \n > r = base.random.erlang( 2, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.erlang.state\n \n\n > r = base.random.erlang( 2, 5.0 )\n \n > r = base.random.erlang( 2, 5.0 )\n \n\n // Set the state:\n > base.random.erlang.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.erlang( 2, 5.0 )\n \n > r = base.random.erlang( 2, 5.0 )\n \n\n\nbase.random.erlang.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.erlang.stateLength;\n\n\nbase.random.erlang.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.erlang.byteLength;\n\n", + "base.random.exponential": "\nbase.random.exponential( λ )\n Returns a pseudorandom number drawn from an exponential distribution.\n\n If `λ <= 0` or `λ` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n λ: number\n Rate parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.exponential( 7.9 );\n\n\nbase.random.exponential.factory( [λ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from an exponential distribution.\n\n If provided `λ`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `λ`, the returned PRNG requires that `λ` be provided at each\n invocation.\n\n Parameters\n ----------\n λ: number (optional)\n Rate parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.exponential.factory();\n > var r = rand( 5.0 );\n > r = rand( 3.14 );\n\n // Provide `λ`:\n > rand = base.random.exponential.factory( 10.0 );\n > r = rand();\n > r = rand();\n\n\nbase.random.exponential.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.exponential.NAME\n 'exponential'\n\n\nbase.random.exponential.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.exponential.PRNG;\n\n\nbase.random.exponential.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.exponential.seed;\n\n\nbase.random.exponential.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.exponential( 7.9 )\n \n > r = base.random.exponential( 7.9 )\n \n > r = base.random.exponential( 7.9 )\n \n\n // Get a copy of the current state:\n > var state = base.random.exponential.state\n \n\n > r = base.random.exponential( 7.9 )\n \n > r = base.random.exponential( 7.9 )\n \n\n // Set the state:\n > base.random.exponential.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.exponential( 7.9 )\n \n > r = base.random.exponential( 7.9 )\n \n\n\nbase.random.exponential.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.exponential.stateLength;\n\n\nbase.random.exponential.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.exponential.byteLength;\n\n", + "base.random.f": "\nbase.random.f( d1, d2 )\n Returns a pseudorandom number drawn from an F distribution.\n\n If `d1 <= 0` or `d2 <= 0`, the function returns `NaN`.\n\n If `d1` or `d2` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n d1: number\n Degrees of freedom.\n\n d2: number\n Degrees of freedom.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.f( 2.0, 5.0 );\n\n\nbase.random.f.factory( [d1, d2, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from an F distribution.\n\n If provided `d1` and `d2`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `d1` and `d2`, the returned PRNG requires that both `d1` and\n `d2` be provided at each invocation.\n\n Parameters\n ----------\n d1: number (optional)\n Degrees of freedom.\n\n d2: number (optional)\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.f.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 3.0, 3.14 );\n\n // Provide `d1` and `d2`:\n > rand = base.random.f.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.f.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.f.NAME\n 'f'\n\n\nbase.random.f.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.f.PRNG;\n\n\nbase.random.f.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.f.seed;\n\n", + "base.random.frechet": "\nbase.random.frechet( α, s, m )\n Returns a pseudorandom number drawn from a Fréchet distribution.\n\n If provided `α <= 0` or `s <= 0`, the function returns `NaN`.\n\n If either `α`, `s`, or `m` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n α: number\n Shape parameter.\n\n s: number\n Scale parameter.\n\n m: number\n Location parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.frechet( 2.0, 5.0, 3.33 );\n\n\nbase.random.frechet.factory( [α, s, m, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a triangular distribution.\n\n If provided `α`, `s`, and `m`, the returned PRNG returns random variates\n drawn from the specified distribution.\n\n If not provided `α`, `s`, and `m`, the returned PRNG requires that `α`, `s`,\n and `m` be provided at each invocation.\n\n Parameters\n ----------\n α: number (optional)\n Shape parameter.\n\n s: number (optional)\n Scale parameter.\n\n m: number (optional)\n Location parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.frechet.factory();\n > var r = rand( 1.0, 1.0, 0.5 );\n > r = rand( 2.0, 2.0, 1.0 );\n\n // Provide `α`, `s`, and `m`:\n > rand = base.random.frechet.factory( 1.0, 1.0, 0.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.frechet.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.frechet.NAME\n 'frechet'\n\n\nbase.random.frechet.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.frechet.PRNG;\n\n\nbase.random.frechet.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.frechet.seed;\n\n", + "base.random.gamma": "\nbase.random.gamma( α, β )\n Returns a pseudorandom number drawn from a gamma distribution.\n\n If `α <= 0` or `β <= 0`, the function returns `NaN`.\n\n If `α` or `β` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n α: number\n Shape parameter.\n\n β: number\n Rate parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.gamma( 2.0, 5.0 );\n\n\nbase.random.gamma.factory( [α, β, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a gamma distribution.\n\n If provided `α` and `β`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `α` and `β`, the returned PRNG requires that both `α` and\n `β` be provided at each invocation.\n\n Parameters\n ----------\n α: number (optional)\n Shape parameter.\n\n β: number (optional)\n Rate parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.gamma.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 3.14, 2.25 );\n\n // Provide `α` and `β`:\n > rand = base.random.gamma.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.gamma.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.gamma.NAME\n 'gamma'\n\n\nbase.random.gamma.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.gamma.PRNG;\n\n\nbase.random.gamma.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.gamma.seed;\n\n\nbase.random.gamma.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.gamma( 2.0, 5.0 )\n \n > r = base.random.gamma( 2.0, 5.0 )\n \n > r = base.random.gamma( 2.0, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.gamma.state\n \n\n > r = base.random.gamma( 2.0, 5.0 )\n \n > r = base.random.gamma( 2.0, 5.0 )\n \n\n // Set the state:\n > base.random.gamma.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.gamma( 2.0, 5.0 )\n \n > r = base.random.gamma( 2.0, 5.0 )\n \n\n\nbase.random.gamma.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.gamma.stateLength;\n\n\nbase.random.gamma.byteLength\n Size of generator state.\n\n Examples\n --------\n > var sz = base.random.gamma.byteLength;\n\n", + "base.random.geometric": "\nbase.random.geometric( p )\n Returns a pseudorandom number drawn from a geometric distribution.\n\n If `p < 0` or `p > 1` or `p` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n p: number\n Success probability.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.geometric( 0.8 );\n\n\nbase.random.geometric.factory( [p, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a geometric distribution.\n\n If provided `p`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `p`, the returned PRNG requires that `p` be provided at each\n invocation.\n\n Parameters\n ----------\n p: number (optional)\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.geometric.factory();\n > var r = rand( 0.3 );\n > r = rand( 0.59 );\n\n // Provide `p`:\n > rand = base.random.geometric.factory( 0.3 );\n > r = rand();\n > r = rand();\n\n\nbase.random.geometric.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.geometric.NAME\n 'geometric'\n\n\nbase.random.geometric.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.geometric.PRNG;\n\n\nbase.random.geometric.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.geometric.seed;\n\n", + "base.random.gumbel": "\nbase.random.gumbel( μ, β )\n Returns a pseudorandom number drawn from a Gumbel distribution.\n\n If `μ` or `β` is `NaN` or `β <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n β: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.gumbel( 2.0, 5.0 );\n\n\nbase.random.gumbel.factory( [μ, β, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Gumbel distribution.\n\n If provided `μ` and `β`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `β`, the returned PRNG requires that both `μ` and\n `β` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Mean.\n\n β: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.gumbel.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `β`:\n > rand = base.random.gumbel.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.gumbel.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.gumbel.NAME\n 'gumbel'\n\n\nbase.random.gumbel.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.gumbel.PRNG;\n\n\nbase.random.gumbel.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.gumbel.seed;\n\n", + "base.random.hypergeometric": "\nbase.random.hypergeometric( N, K, n )\n Returns a pseudorandom number drawn from a hypergeometric distribution.\n\n `N`, `K`, and `n` must all be nonnegative integers; otherwise, the function\n returns `NaN`.\n\n If `n > N` or `K > N`, the function returns `NaN`.\n\n Parameters\n ----------\n N: integer\n Population size.\n\n K: integer\n Subpopulation size.\n\n n: integer\n Number of draws.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.hypergeometric( 20, 10, 7 );\n\n\nbase.random.hypergeometric.factory( [N, K, n, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a hypergeometric distribution.\n\n If provided `N`, `K`, and `n`, the returned PRNG returns random variates\n drawn from the specified distribution.\n\n If not provided `N`, `K`, and `n`, the returned PRNG requires that `N`, `K`,\n and `n` be provided at each invocation.\n\n Parameters\n ----------\n N: integer (optional)\n Population size.\n\n K: integer (optional)\n Subpopulation size.\n\n n: integer (optional)\n Number of draws.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.hypergeometric.factory();\n > var r = rand( 20, 10, 15 );\n > r = rand( 20, 10, 7 );\n\n // Provide `N`, `K`, and `n`:\n > rand = base.random.hypergeometric.factory( 20, 10, 15 );\n > r = rand();\n > r = rand();\n\n\nbase.random.hypergeometric.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.hypergeometric.NAME\n 'hypergeometric'\n\n\nbase.random.hypergeometric.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.hypergeometric.PRNG;\n\n\nbase.random.hypergeometric.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.hypergeometric.seed;\n\n", + "base.random.improvedZiggurat": "\nbase.random.improvedZiggurat()\n Returns a pseudorandom number drawn from a standard normal distribution.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.improvedZiggurat();\n\n\nbase.random.improvedZiggurat.factory( [options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a standard normal distribution.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.prng: Function (optional)\n Pseudorandom number generator (PRNG) for generating uniformly\n distributed pseudorandom numbers on the interval `[0,1)`. If provided,\n the `state` and `seed` options are ignored.\n\n options.seed: integer|ArrayLikeObject (optional)\n Pseudorandom number generator seed. The seed may be either a positive\n unsigned 32-bit integer or, for arbitrary length seeds, an array-like\n object containing unsigned 32-bit integers.\n\n options.state: Uint32Array (optional)\n Pseudorandom number generator state. If provided, the `seed` option is\n ignored.\n\n options.copy: boolean (optional)\n Boolean indicating whether to copy a provided pseudorandom number\n generator state. Setting this option to `false` allows sharing state\n between two or more pseudorandom number generators. Setting this option\n to `true` ensures that a returned generator has exclusive control over\n its internal state. Default: true.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.improvedZiggurat.factory();\n > r = rand();\n > r = rand();\n\n\nbase.random.improvedZiggurat.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.improvedZiggurat.NAME\n 'improved-ziggurat'\n\n\nbase.random.improvedZiggurat.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.improvedZiggurat.PRNG;\n\n\nbase.random.improvedZiggurat.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.improvedZiggurat.seed;\n\n\nbase.random.improvedZiggurat.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.improvedZiggurat()\n \n > r = base.random.improvedZiggurat()\n \n > r = base.random.improvedZiggurat()\n \n\n // Get a copy of the current state:\n > var state = base.random.improvedZiggurat.state\n \n\n > r = base.random.improvedZiggurat()\n \n > r = base.random.improvedZiggurat()\n \n\n // Set the state:\n > base.random.improvedZiggurat.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.improvedZiggurat()\n \n > r = base.random.improvedZiggurat()\n \n\n\nbase.random.improvedZiggurat.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.improvedZiggurat.stateLength;\n\n\nbase.random.improvedZiggurat.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.improvedZiggurat.byteLength;\n\n", + "base.random.invgamma": "\nbase.random.invgamma( α, β )\n Returns a pseudorandom number drawn from an inverse gamma distribution.\n\n If `α <= 0` or `β <= 0`, the function returns `NaN`.\n\n If `α` or `β` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n α: number\n Shape parameter.\n\n β: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.invgamma( 2.0, 5.0 );\n\n\nbase.random.invgamma.factory( [α, β, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from an inverse gamma distribution.\n\n If provided `α` and `β`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `α` and `β`, the returned PRNG requires that both `α` and\n `β` be provided at each invocation.\n\n Parameters\n ----------\n α: number (optional)\n Shape parameter.\n\n β: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.invgamma.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 3.14, 2.25 );\n\n // Provide `α` and `β`:\n > rand = base.random.invgamma.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.invgamma.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.invgamma.NAME\n 'invgamma'\n\n\nbase.random.invgamma.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.invgamma.PRNG;\n\n\nbase.random.invgamma.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.invgamma.seed;\n\n", + "base.random.kumaraswamy": "\nbase.random.kumaraswamy( a, b )\n Returns a pseudorandom number drawn from Kumaraswamy's double bounded\n distribution.\n\n If `a <= 0` or `b <= 0`, the function returns `NaN`.\n\n If `a` or `b` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n a: number\n First shape parameter.\n\n b: number\n Second shape parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.kumaraswamy( 2.0, 5.0 );\n\n\nbase.random.kumaraswamy.factory( [a, b, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from Kumaraswamy's double bounded distribution.\n\n If provided `a` and `b`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `a` and `b`, the returned PRNG requires that both `a` and\n `b` be provided at each invocation.\n\n Parameters\n ----------\n a: number (optional)\n First shape parameter.\n\n b: number (optional)\n Second shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.kumaraswamy.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `a` and `b`:\n > rand = base.random.kumaraswamy.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.kumaraswamy.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.kumaraswamy.NAME\n 'kumaraswamy'\n\n\nbase.random.kumaraswamy.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.kumaraswamy.PRNG;\n\n\nbase.random.kumaraswamy.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.kumaraswamy.seed;\n\n", + "base.random.laplace": "\nbase.random.laplace( μ, b )\n Returns a pseudorandom number drawn from a Laplace distribution.\n\n If `μ` or `b` is `NaN` or `b <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n b: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.laplace( 2.0, 5.0 );\n\n\nbase.random.laplace.factory( [μ, b, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Laplace distribution.\n\n If provided `μ` and `b`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `b`, the returned PRNG requires that both `μ` and\n `b` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Mean.\n\n b: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.laplace.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `b`:\n > rand = base.random.laplace.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.laplace.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.laplace.NAME\n 'laplace'\n\n\nbase.random.laplace.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.laplace.PRNG;\n\n\nbase.random.laplace.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.laplace.seed;\n\n", + "base.random.levy": "\nbase.random.levy( μ, c )\n Returns a pseudorandom number drawn from a Lévy distribution.\n\n If `μ` or `c` is `NaN` or `c <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n c: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.levy( 2.0, 5.0 );\n\n\nbase.random.levy.factory( [μ, c, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Lévy distribution.\n\n If provided `μ` and `c`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `c`, the returned PRNG requires that both `μ` and\n `c` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Mean.\n\n c: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.levy.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `b`:\n > rand = base.random.levy.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.levy.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.levy.NAME\n 'levy'\n\n\nbase.random.levy.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.levy.PRNG;\n\n\nbase.random.levy.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.levy.seed;\n\n", + "base.random.logistic": "\nbase.random.logistic( μ, s )\n Returns a pseudorandom number drawn from a logistic distribution.\n\n If `μ` or `s` is `NaN` or `s <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.logistic( 2.0, 5.0 );\n\n\nbase.random.logistic.factory( [μ, s, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a logistic distribution.\n\n If provided `μ` and `s`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `s`, the returned PRNG requires that both `μ` and\n `s` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Mean.\n\n s: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.logistic.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `s`:\n > rand = base.random.logistic.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.logistic.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.logistic.NAME\n 'logistic'\n\n\nbase.random.logistic.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.logistic.PRNG;\n\n\nbase.random.logistic.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.logistic.seed;\n\n", + "base.random.lognormal": "\nbase.random.lognormal( μ, σ )\n Returns a pseudorandom number drawn from a lognormal distribution.\n\n If `μ` or `σ` is `NaN` or `σ <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n σ: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.lognormal( 2.0, 5.0 );\n\n\nbase.random.lognormal.factory( [μ, σ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a lognormal distribution.\n\n If provided `μ` and `σ`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `σ`, the returned PRNG requires that both `μ` and\n `σ` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Location parameter.\n\n σ: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.lognormal.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `σ`:\n > rand = base.random.lognormal.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.lognormal.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.lognormal.NAME\n 'lognormal'\n\n\nbase.random.lognormal.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.lognormal.PRNG;\n\n\nbase.random.lognormal.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.lognormal.seed;\n\n", + "base.random.minstd": "\nbase.random.minstd()\n Returns a pseudorandom integer on the interval `[1, 2147483646]`.\n\n This pseudorandom number generator (PRNG) is a linear congruential\n pseudorandom number generator (LCG) based on Park and Miller.\n\n The generator has a period of approximately `2.1e9`.\n\n An LCG is fast and uses little memory. On the other hand, because the\n generator is a simple LCG, the generator has recognized shortcomings. By\n today's PRNG standards, the generator's period is relatively short. More\n importantly, the \"randomness quality\" of the generator's output is lacking.\n These defects make the generator unsuitable, for example, in Monte Carlo\n simulations and in cryptographic applications.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.minstd();\n\n\nbase.random.minstd.normalized()\n Returns a pseudorandom number on the interval `[0,1)`.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.minstd.normalized();\n\n\nbase.random.minstd.factory( [options] )\n Returns a linear congruential pseudorandom number generator (LCG).\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.seed: integer|ArrayLikeObject (optional)\n Pseudorandom number generator seed. The seed may be either a positive\n signed 32-bit integer on the interval `[1, 2147483646]` or, for\n arbitrary length seeds, an array-like object containing signed 32-bit\n integers.\n\n options.state: Int32Array (optional)\n Pseudorandom number generator state. If provided, the `seed` option is\n ignored.\n\n options.copy: boolean (optional)\n Boolean indicating whether to copy a provided pseudorandom number\n generator state. Setting this option to `false` allows sharing state\n between two or more pseudorandom number generators. Setting this option\n to `true` ensures that a returned generator has exclusive control over\n its internal state. Default: true.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.minstd.factory();\n > r = rand();\n > r = rand();\n\n // Provide a seed:\n > rand = base.random.minstd.factory( { 'seed': 1234 } );\n > r = rand()\n 20739838\n\n\nbase.random.minstd.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.minstd.NAME\n 'minstd'\n\n\nbase.random.minstd.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.minstd.seed;\n\n\nbase.random.minstd.MIN\n Minimum possible value.\n\n Examples\n --------\n > var v = base.random.minstd.MIN\n 1\n\n\nbase.random.minstd.MAX\n Maximum possible value.\n\n Examples\n --------\n > var v = base.random.minstd.MAX\n 2147483646\n\n\nbase.random.minstd.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.minstd()\n \n > r = base.random.minstd()\n \n > r = base.random.minstd()\n \n\n // Get the current state:\n > var state = base.random.minstd.state\n \n\n > r = base.random.minstd()\n \n > r = base.random.minstd()\n \n\n // Set the state:\n > base.random.minstd.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.minstd()\n \n > r = base.random.minstd()\n \n\n\nbase.random.minstd.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.minstd.stateLength;\n\n\nbase.random.minstd.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.minstd.byteLength;\n\n See Also\n --------\n base.random.minstdShuffle, base.random.mt19937, base.random.randi\n", + "base.random.minstdShuffle": "\nbase.random.minstdShuffle()\n Returns a pseudorandom integer on the interval `[1, 2147483646]`.\n\n This pseudorandom number generator (PRNG) is a linear congruential\n pseudorandom number generator (LCG) whose output is shuffled using the Bays-\n Durham algorithm. The shuffle step considerably strengthens the \"randomness\n quality\" of a simple LCG's output.\n\n The generator has a period of approximately `2.1e9`.\n\n An LCG is fast and uses little memory. On the other hand, because the\n generator is a simple LCG, the generator has recognized shortcomings. By\n today's PRNG standards, the generator's period is relatively short. In\n general, this generator is unsuitable for Monte Carlo simulations and\n cryptographic applications.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.minstdShuffle();\n\n\nbase.random.minstdShuffle.normalized()\n Returns a pseudorandom number on the interval `[0,1)`.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.minstdShuffle.normalized();\n\n\nbase.random.minstdShuffle.factory( [options] )\n Returns a linear congruential pseudorandom number generator (LCG) whose\n output is shuffled.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.seed: integer|ArrayLikeObject (optional)\n Pseudorandom number generator seed. The seed may be either a positive\n signed 32-bit integer on the interval `[1, 2147483646]` or, for\n arbitrary length seeds, an array-like object containing signed 32-bit\n integers.\n\n options.state: Int32Array (optional)\n Pseudorandom number generator state. If provided, the `seed` option is\n ignored.\n\n options.copy: boolean (optional)\n Boolean indicating whether to copy a provided pseudorandom number\n generator state. Setting this option to `false` allows sharing state\n between two or more pseudorandom number generators. Setting this option\n to `true` ensures that a returned generator has exclusive control over\n its internal state. Default: true.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.minstdShuffle.factory();\n > r = rand();\n > r = rand();\n\n // Provide a seed:\n > rand = base.random.minstdShuffle.factory( { 'seed': 1234 } );\n > r = rand()\n 1421600654\n\n\nbase.random.minstdShuffle.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.minstdShuffle.NAME\n 'minstd-shuffle'\n\n\nbase.random.minstdShuffle.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.minstdShuffle.seed;\n\n\nbase.random.minstdShuffle.MIN\n Minimum possible value.\n\n Examples\n --------\n > var v = base.random.minstdShuffle.MIN\n 1\n\n\nbase.random.minstdShuffle.MAX\n Maximum possible value.\n\n Examples\n --------\n > var v = base.random.minstdShuffle.MAX\n 2147483646\n\n\nbase.random.minstdShuffle.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.minstdShuffle()\n \n > r = base.random.minstdShuffle()\n \n > r = base.random.minstdShuffle()\n \n\n // Get a copy of the current state:\n > var state = base.random.minstdShuffle.state\n \n\n > r = base.random.minstdShuffle()\n \n > r = base.random.minstdShuffle()\n \n\n // Set the state:\n > base.random.minstdShuffle.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.minstdShuffle()\n \n > r = base.random.minstdShuffle()\n \n\n\nbase.random.minstdShuffle.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.minstdShuffle.stateLength;\n\n\nbase.random.minstdShuffle.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.minstdShuffle.byteLength;\n\n See Also\n --------\n base.random.minstd, base.random.mt19937, base.random.randi\n", + "base.random.mt19937": "\nbase.random.mt19937()\n Returns a pseudorandom integer on the interval `[1, 4294967295]`.\n\n This pseudorandom number generator (PRNG) is a 32-bit Mersenne Twister\n pseudorandom number generator.\n\n The PRNG is *not* a cryptographically secure PRNG.\n\n The PRNG has a period of 2^19937 - 1.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.mt19937();\n\n\nbase.random.mt19937.normalized()\n Returns a pseudorandom number on the interval `[0,1)` with 53-bit precision.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.mt19937.normalized();\n\n\nbase.random.mt19937.factory( [options] )\n Returns a 32-bit Mersenne Twister pseudorandom number generator.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.seed: integer|ArrayLikeObject (optional)\n Pseudorandom number generator seed. The seed may be either a positive\n unsigned 32-bit integer or, for arbitrary length seeds, an array-like\n object containing unsigned 32-bit integers.\n\n options.state: Uint32Array (optional)\n Pseudorandom number generator state. If provided, the `seed` option is\n ignored.\n\n options.copy: boolean (optional)\n Boolean indicating whether to copy a provided pseudorandom number\n generator state. Setting this option to `false` allows sharing state\n between two or more pseudorandom number generators. Setting this option\n to `true` ensures that a returned generator has exclusive control over\n its internal state. Default: true.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.mt19937.factory();\n > r = rand();\n > r = rand();\n\n // Provide a seed:\n > rand = base.random.mt19937.factory( { 'seed': 1234 } );\n > r = rand()\n 822569775\n\n\nbase.random.mt19937.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.mt19937.NAME\n 'mt19937'\n\n\nbase.random.mt19937.MIN\n Minimum possible value.\n\n Examples\n --------\n > var v = base.random.mt19937.MIN\n 1\n\n\nbase.random.mt19937.MAX\n Maximum possible value.\n\n Examples\n --------\n > var v = base.random.mt19937.MAX\n 4294967295\n\n\nbase.random.mt19937.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.mt19937.seed;\n\n\nbase.random.mt19937.seedLength\n Length of generator seed.\n\n Examples\n --------\n > var len = base.random.mt19937.seedLength;\n\n\nbase.random.mt19937.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.mt19937()\n \n > r = base.random.mt19937()\n \n > r = base.random.mt19937()\n \n\n // Get a copy of the current state:\n > var state = base.random.mt19937.state\n \n\n > r = base.random.mt19937()\n \n > r = base.random.mt19937()\n \n\n // Set the state:\n > base.random.mt19937.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.mt19937()\n \n > r = base.random.mt19937()\n \n\n\nbase.random.mt19937.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.mt19937.stateLength;\n\n\nbase.random.mt19937.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.mt19937.byteLength;\n\n See Also\n --------\n base.random.minstd, base.random.randi\n", + "base.random.negativeBinomial": "\nbase.random.negativeBinomial( r, p )\n Returns a pseudorandom number drawn from a negative binomial distribution.\n\n If `p` is not in the interval `(0,1)`, the function returns `NaN`.\n\n If `r` or `p` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n r: number\n Number of successes until experiment is stopped.\n\n p: number\n Success probability.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.negativeBinomial( 20, 0.8 );\n\n\nbase.random.negativeBinomial.factory( [r, p, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a negative binomial distribution.\n\n If provided `r` and `p`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `r` and `p`, the returned PRNG requires that both `r` and\n `p` be provided at each invocation.\n\n Parameters\n ----------\n r: number (optional)\n Number of successes until experiment is stopped.\n\n p: number (optional)\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.negativeBinomial.factory();\n > var r = rand( 20, 0.3 );\n > r = rand( 10, 0.77 );\n\n // Provide `r` and `p`:\n > rand = base.random.negativeBinomial.factory( 10, 0.8 );\n > r = rand();\n > r = rand();\n\n\nbase.random.negativeBinomial.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.negativeBinomial.NAME\n 'negative-binomial'\n\n\nbase.random.negativeBinomial.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.negativeBinomial.PRNG;\n\n\nbase.random.negativeBinomial.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.negativeBinomial.seed;\n\n", + "base.random.normal": "\nbase.random.normal( μ, σ )\n Returns a pseudorandom number drawn from a normal distribution.\n\n If `μ` or `σ` is `NaN` or `σ <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n σ: number\n Standard deviation.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.normal( 2.0, 5.0 );\n\n\nbase.random.normal.factory( [μ, σ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a normal distribution.\n\n If provided `μ` and `σ`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `σ`, the returned PRNG requires that both `μ` and\n `σ` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Mean.\n\n σ: number (optional)\n Standard deviation.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.normal.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `σ`:\n > rand = base.random.normal.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.normal.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.normal.NAME\n 'normal'\n\n\nbase.random.normal.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.normal.PRNG;\n\n\nbase.random.normal.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.normal.seed;\n\n\nbase.random.normal.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.normal( 2.0, 5.0 )\n \n > r = base.random.normal( 2.0, 5.0 )\n \n > r = base.random.normal( 2.0, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.normal.state\n \n\n > r = base.random.normal( 2.0, 5.0 )\n \n > r = base.random.normal( 2.0, 5.0 )\n \n\n // Set the state:\n > base.random.normal.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.normal( 2.0, 5.0 )\n \n > r = base.random.normal( 2.0, 5.0 )\n \n\n\nbase.random.normal.byteLength\n Size of generator state.\n\n Examples\n --------\n > var sz = base.random.normal.byteLength;\n\n", + "base.random.pareto1": "\nbase.random.pareto1( α, β )\n Returns a pseudorandom number drawn from a Pareto (Type I) distribution.\n\n If `α <= 0` or `β <= 0`, the function returns `NaN`.\n\n If `α` or `β` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n α: number\n Shape parameter.\n\n β: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.pareto1( 2.0, 5.0 );\n\n\nbase.random.pareto1.factory( [α, β, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Pareto (Type I) distribution.\n\n If provided `α` and `β`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `α` and `β`, the returned PRNG requires that both `α` and\n `β` be provided at each invocation.\n\n Parameters\n ----------\n α: number (optional)\n Shape parameter.\n\n β: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.pareto1.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `α` and `β`:\n > rand = base.random.pareto1.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.pareto1.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.pareto1.NAME\n 'pareto-type1'\n\n\nbase.random.pareto1.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.pareto1.PRNG;\n\n\nbase.random.pareto1.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.pareto1.seed;\n\n", + "base.random.poisson": "\nbase.random.poisson( λ )\n Returns a pseudorandom number drawn from a Poisson distribution.\n\n If `λ <= 0` or `λ` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n λ: number\n Mean.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.poisson( 7.9 );\n\n\nbase.random.poisson.factory( [λ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Poisson distribution.\n\n If provided `λ`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `λ`, the returned PRNG requires that `λ` be provided at each\n invocation.\n\n Parameters\n ----------\n λ: number (optional)\n Mean.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.poisson.factory();\n > var r = rand( 4.0 );\n > r = rand( 3.14 );\n\n // Provide `λ`:\n > rand = base.random.poisson.factory( 10.0 );\n > r = rand();\n > r = rand();\n\n\nbase.random.poisson.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.poisson.NAME\n 'poisson'\n\n\nbase.random.poisson.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.poisson.PRNG;\n\n\nbase.random.poisson.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.poisson.seed;\n\n", + "base.random.randi": "\nbase.random.randi()\n Returns a pseudorandom number having an integer value.\n\n The default underlying pseudorandom number generator (PRNG) *may* change in\n the future. If exact reproducibility is required, either use the `factory`\n method to explicitly specify a PRNG via the `name` option or use an\n underlying PRNG directly.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.randi();\n\n\nbase.random.randi.factory( [options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers having integer values.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.name: string (optional)\n Name of the underlying pseudorandom number generator (PRNG). The\n following PRNGs are supported:\n\n - mt19937: 32-bit Mersenne Twister.\n - minstd: linear congruential PRNG based on Park and Miller.\n - minstd-shuffle: linear congruential PRNG whose output is shuffled.\n\n Default: 'mt19937'.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var randi = base.random.randi.factory();\n > var r = randi();\n > r = randi();\n\n // Specify alternative PRNG:\n > randi = base.random.randi.factory({ 'name': 'minstd' });\n > r = randi();\n > r = randi();\n\n\nbase.random.randi.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.randi.NAME\n 'randi'\n\n\nbase.random.randi.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.randi.PRNG;\n\n\nbase.random.randi.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.randi.seed;\n\n\nbase.random.randi.MIN\n Minimum possible value (specific to underlying PRNG).\n\n Examples\n --------\n > var v = base.random.randi.MIN;\n\n\nbase.random.randi.MAX\n Maximum possible value (specific to underlying PRNG).\n\n Examples\n --------\n > var v = base.random.randi.MAX;\n\n See Also\n --------\n base.random.minstd, base.random.minstdShuffle, base.random.mt19937\n", + "base.random.randn": "\nbase.random.randn()\n Returns a pseudorandom number drawn from a standard normal distribution.\n\n The default underlying pseudorandom number generator (PRNG) *may* change in\n the future. If exact reproducibility is required, either use the `factory`\n method to explicitly specify a PRNG via the `name` option or use an\n underlying PRNG directly.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.randn();\n\n\nbase.random.randn.factory( [options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a standard normal distribution.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.name: string (optional)\n Name of the underlying pseudorandom number generator (PRNG) that samples\n from a standard normal distribution. The following PRNGs are supported:\n\n - improved-ziggurat: improved ziggurat method.\n - box-muller: Box-Muller transform.\n\n Default: 'improved-ziggurat'.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.randn.factory();\n > var r = rand();\n > r = rand();\n\n // Specify alternative PRNG:\n > var rand = base.random.randn.factory({ 'name': 'box-muller' });\n > r = rand();\n > r = rand();\n\n\nbase.random.randn.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.randn.NAME\n 'standard-normal'\n\n\nbase.random.randn.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.randn.PRNG;\n\n\nbase.random.randn.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.randn.seed;\n\n See Also\n --------\n base.random.improvedZiggurat, base.random.randu\n", + "base.random.randu": "\nbase.random.randu()\n Returns a pseudorandom number drawn from a uniform distribution.\n\n The default underlying pseudorandom number generator (PRNG) *may* change in\n the future. If exact reproducibility is required, either use the `factory`\n method to explicitly specify a PRNG via the `name` option or use an\n underlying PRNG directly.\n\n Returns\n -------\n r: number\n Pseudorandom number on the interval `[0,1)`.\n\n Examples\n --------\n > var r = base.random.randu();\n\n\nbase.random.randu.factory( [options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a uniform distribution.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.name: string (optional)\n Name of the underlying pseudorandom number generator (PRNG). The\n following PRNGs are supported:\n\n - mt19937: 32-bit Mersenne Twister.\n - minstd: linear congruential PRNG based on Park and Miller.\n - minstd-shuffle: linear congruential PRNG whose output is shuffled.\n\n Default: 'mt19937'.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.randu.factory();\n > var r = rand();\n > r = rand();\n\n // Specify alternative PRNG:\n > var rand = base.random.randu.factory({ 'name': 'minstd' });\n > r = rand();\n > r = rand();\n\n\nbase.random.randu.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.randu.NAME\n 'uniform'\n\n\nbase.random.randu.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.randu.PRNG;\n\n\nbase.random.randu.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.randu.seed;\n\n See Also\n --------\n base.random.discreteUniform, base.random.randn\n", + "base.random.rayleigh": "\nbase.random.rayleigh( σ )\n Returns a pseudorandom number drawn from a Rayleigh distribution.\n\n If `σ` is `NaN` or `σ <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n σ: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.rayleigh( 2.5 );\n\n\nbase.random.rayleigh.factory( [σ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Rayleigh distribution.\n\n If provided `σ`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `σ`, the returned PRNG requires that `σ` be provided at each\n invocation.\n\n Parameters\n ----------\n σ: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.rayleigh.factory();\n > var r = rand( 5.0 );\n > r = rand( 10.0 );\n\n // Provide `σ`:\n > rand = base.random.rayleigh.factory( 5.0 );\n > r = rand();\n > r = rand();\n\n\nbase.random.rayleigh.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.rayleigh.NAME\n 'rayleigh'\n\n\nbase.random.rayleigh.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.rayleigh.PRNG;\n\n\nbase.random.rayleigh.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.rayleigh.seed;\n\n", + "base.random.t": "\nbase.random.t( v )\n Returns a pseudorandom number drawn from a Student's t distribution.\n\n If `v <= 0` or `v` is `NaN`, the function\n returns `NaN`.\n\n Parameters\n ----------\n v: number\n Degrees of freedom.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.t( 2.0 );\n\n\nbase.random.t.factory( [v, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Student's t distribution.\n\n If provided `v`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `v`, the returned PRNG requires that `v` be provided at each\n invocation.\n\n Parameters\n ----------\n v: number (optional)\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.t.factory();\n > var r = rand( 5.0 );\n > r = rand( 3.14 );\n\n // Provide `v`:\n > rand = base.random.t.factory( 5.0 );\n > r = rand();\n > r = rand();\n\n\nbase.random.t.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.t.NAME\n 't'\n\n\nbase.random.t.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.t.PRNG;\n\n\nbase.random.t.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.t.seed;\n\n", + "base.random.triangular": "\nbase.random.triangular( a, b, c )\n Returns a pseudorandom number drawn from a triangular distribution.\n\n If the condition `a <= c <= b` is not satisfied, the function returns `NaN`.\n\n If either `a`, `b`, or `c` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n a: number\n Minimum support.\n\n b: number\n Maximum support.\n\n c: number\n Mode.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.triangular( 2.0, 5.0, 3.33 );\n\n\nbase.random.triangular.factory( [a, b, c, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a triangular distribution.\n\n If provided `a`, `b`, and `c`, the returned PRNG returns random variates\n drawn from the specified distribution.\n\n If not provided `a`, `b`, and `c`, the returned PRNG requires that `a`, `b`,\n and `c` be provided at each invocation.\n\n Parameters\n ----------\n a: number (optional)\n Minimum support.\n\n b: number (optional)\n Maximum support.\n\n c: number (optional)\n Mode.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.triangular.factory();\n > var r = rand( 0.0, 1.0, 0.5 );\n > r = rand( -2.0, 2.0, 1.0 );\n\n // Provide `a`, `b`, and `c`:\n > rand = base.random.triangular.factory( 0.0, 1.0, 0.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.triangular.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.triangular.NAME\n 'triangular'\n\n\nbase.random.triangular.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.triangular.PRNG;\n\n\nbase.random.triangular.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.triangular.seed;\n\n", + "base.random.uniform": "\nbase.random.uniform( a, b )\n Returns a pseudorandom number drawn from a continuous uniform distribution.\n\n If `a >= b`, the function returns `NaN`.\n\n If `a` or `b` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n a: number\n Minimum support (inclusive).\n\n b: number\n Maximum support (exclusive).\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.uniform( 2.0, 5.0 );\n\n\nbase.random.uniform.factory( [a, b, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a continuous uniform distribution.\n\n If provided `a` and `b`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `a` and `b`, the returned PRNG requires that both `a` and\n `b` be provided at each invocation.\n\n Parameters\n ----------\n a: number (optional)\n Minimum support (inclusive).\n\n b: number (optional)\n Maximum support (exclusive).\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.uniform.factory();\n > var r = rand( 0.0, 1.0 );\n > r = rand( -2.0, 2.0 );\n\n // Provide `a` and `b`:\n > rand = base.random.uniform.factory( 0.0, 1.0 );\n > r = rand();\n > r = rand();\n\n\nbase.random.uniform.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.uniform.NAME\n 'uniform'\n\n\nbase.random.uniform.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.uniform.PRNG;\n\n\nbase.random.uniform.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.uniform.seed;\n\n See Also\n --------\n base.random.discreteUniform, base.random.randu\n", + "base.random.weibull": "\nbase.random.weibull( k, λ )\n Returns a pseudorandom number drawn from a Weibull distribution.\n\n If `k <= 0` or `λ <= 0`, the function returns `NaN`.\n\n If either `λ` or `k` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n k: number\n Scale parameter.\n\n λ: number\n Shape parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.weibull( 2.0, 5.0 );\n\n\nbase.random.weibull.factory( [k, λ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Weibull distribution.\n\n If provided `k` and `λ`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `k` and `λ`, the returned PRNG requires that both\n `k` and `λ` be provided at each invocation.\n\n Parameters\n ----------\n k: number (optional)\n Scale parameter.\n\n λ: number (optional)\n Shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.weibull.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `λ` and `k`:\n > rand = base.random.weibull.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.weibull.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.weibull.NAME\n 'weibull'\n\n\nbase.random.weibull.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.weibull.PRNG;\n\n\nbase.random.weibull.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.weibull.seed;\n\n", "base.reldiff": "\nbase.reldiff( x, y[, scale] )\n Computes the relative difference of two real numbers.\n\n By default, the function scales the absolute difference by dividing the\n absolute difference by the maximum absolute value of `x` and `y`. To scale\n by a different function, specify a scale function name.\n\n The following `scale` functions are supported:\n\n - 'max-abs': maximum absolute value of `x` and `y` (default).\n - 'max': maximum value of `x` and `y`.\n - 'min-abs': minimum absolute value of `x` and `y`.\n - 'min': minimum value of `x` and `y`.\n - 'mean-abs': arithmetic mean of the absolute values of `x` and `y`.\n - 'mean': arithmetic mean of `x` and `y`.\n - 'x': `x` (*noncommutative*).\n - 'y': `y` (*noncommutative*).\n\n To use a custom scale function, provide a function which accepts two numeric\n arguments `x` and `y`.\n\n If the absolute difference of `x` and `y` is `0`, the relative difference is\n always `0`.\n\n If `|x| = |y| = infinity`, the function returns `NaN`.\n\n If `|x| = |-y| = infinity`, the relative difference is `+infinity`.\n\n If a `scale` function returns `0`, the function returns `NaN`.\n\n Parameters\n ----------\n x: number\n First number.\n\n y: number\n Second number.\n\n scale: string|Function (optional)\n Scale function. Default: `'max-abs'`.\n\n Returns\n -------\n out: number\n Relative difference.\n\n Examples\n --------\n > var d = base.reldiff( 2.0, 5.0 )\n 0.6\n > d = base.reldiff( -1.0, 3.14 )\n ~1.318\n > d = base.reldiff( -2.0, 5.0, 'max-abs' )\n 1.4\n > d = base.reldiff( -2.0, 5.0, 'max' )\n 1.4\n > d = base.reldiff( -2.0, 5.0, 'min-abs' )\n 3.5\n > d = base.reldiff( -2.0, 5.0, 'min' )\n 3.5\n > d = base.reldiff( -2.0, 5.0, 'mean-abs' )\n 2.0\n > d = base.reldiff( -2.0, 5.0, 'mean' )\n ~4.667\n > d = base.reldiff( -2.0, 5.0, 'x' )\n 3.5\n > d = base.reldiff( 5.0, -2.0, 'x' )\n 1.4\n > d = base.reldiff( -2.0, 5.0, 'y' )\n 1.4\n > d = base.reldiff( 5.0, -2.0, 'y' )\n 3.5\n\n // Custom scale function:\n > function scale( x, y ) {\n ... var s;\n ...\n ... x = base.abs( x );\n ... y = base.abs( y );\n ...\n ... // Maximum absolute value:\n ... s = (x < y ) ? y : x;\n ...\n ... // Scale in units of epsilon:\n ... return s * EPS;\n ... };\n > d = base.reldiff( 12.15, 12.149999999999999, scale )\n ~0.658\n\n See Also\n --------\n base.absdiff, base.epsdiff\n", "base.rempio2": "\nbase.rempio2( x, y )\n Computes `x - nπ/2 = r`.\n\n The function returns `n` and stores the remainder `r` as the two numbers\n `y[0]` and `y[1]`, such that `y[0] + y[1] = r`.\n\n For input values larger than `2^20 * π/2` in magnitude, the function only\n returns the last three binary digits of `n` and not the full result.\n\n Parameters\n ----------\n x: number\n Input value.\n\n y: Array|TypedArray|Object\n Remainder elements.\n\n Returns\n -------\n n: integer\n Factor of `π/2`.\n\n Examples\n --------\n > var y = new Array( 2 );\n > var n = base.rempio2( 128.0, y )\n 81\n > var y1 = y[ 0 ]\n ~0.765\n > var y2 = y[ 1 ]\n ~3.618e-17\n\n\n", "base.risingFactorial": "\nbase.risingFactorial( x, n )\n Computes the rising factorial of `x` and `n`.\n\n If provided a non-integer for `n`, the function returns `NaN`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n Parameters\n ----------\n x: number\n First function parameter.\n\n n: integer\n Second function parameter.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var v = base.risingFactorial( 0.9, 5 )\n ~94.766\n > v = base.risingFactorial( -9.0, 3 )\n -504.0\n > v = base.risingFactorial( 0.0, 2 )\n 0.0\n > v = base.risingFactorial( 3.0, -2 )\n 0.5\n\n See Also\n --------\n base.fallingFactorial\n", @@ -1388,47 +1388,47 @@ var db = { "Proxy": "\nProxy( target, handlers )\n Returns a proxy object implementing custom behavior for specified object\n operations.\n\n The following \"traps\" are supported:\n\n - getPrototypeOf( target )\n Trap for `Object.getPrototypeOf()`. Can be used to intercept the\n `instanceof` operator. The method must return an object or `null`.\n\n - setPrototypeOf( target, prototype )\n Trap for `Object.setPrototypeOf()`. The method must return a boolean\n indicating if prototype successfully set.\n\n - isExtensible( target )\n Trap for `Object.isExtensible()`. The method must return a boolean.\n\n - preventExtensions( target )\n Trap for `Object.preventExtensions()`. The method must return a boolean.\n\n - getOwnPropertyDescriptor( target, property )\n Trap for `Object.getOwnPropertyDescriptor()`. The method must return an\n object or `undefined`.\n\n - defineProperty( target, property, descriptor )\n Trap for `Object.defineProperty()`. The method must return a boolean\n indicating whether the operation succeeded.\n\n - has( target, property )\n Trap for the `in` operator. The method must return a boolean.\n\n - get( target, property, receiver )\n Trap for retrieving property values. The method can return any value.\n\n - set( target, property, value, receiver )\n Trap for setting property values. The method should return a boolean\n indicating whether assignment succeeded.\n\n - deleteProperty( target, property )\n Trap for the `delete` operator. The method must return a boolean\n indicating whether operation succeeded.\n\n - ownKeys( target )\n Trap for `Object.keys`, `Object.getOwnPropertyNames()`, and\n `Object.getOwnPropertySymbols()`. The method must return an enumerable\n object.\n\n - apply( target, thisArg, argumentsList )\n Trap for a function call. The method can return any value.\n\n - construct( target, argumentsList, newTarget )\n Trap for the `new` operator. The method must return an object.\n\n All traps are optional. If a trap is not defined, the default behavior is to\n forward the operation to the target.\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Proxy object.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.a = 3.14;\n > p.a\n 6.28\n\n\nProxy.revocable( target, handlers )\n Returns a revocable proxy object\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Revocable proxy object.\n\n p.proxy: Object\n Proxy object.\n\n p.revoke: Function\n Invalidates a proxy, rendering a proxy object unusable.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.proxy.a = 3.14;\n > p.proxy.a\n 6.28\n > p.revoke();\n\n", "push": "\npush( collection, ...items )\n Adds one or more elements to the end of a collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n items: ...any\n Items to add.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = push( arr, 6.0, 7.0 )\n [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = push( arr, 3.0, 4.0 )\n [ 1.0, 2.0, 3.0, 4.0 ]\n\n // Array-like object:\n > arr = { 'length': 0 };\n > arr = push( arr, 1.0, 2.0 )\n { 'length': 2, '0': 1.0, '1': 2.0 }\n\n See Also\n --------\n pop, shift, unshift\n", "quarterOfYear": "\nquarterOfYear( [month] )\n Returns the quarter of the year.\n\n By default, the function returns the quarter of the year for the current\n month in the current year (according to local time). To determine the\n quarter for a particular month, provide either a month or a `Date`\n object.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n Parameters\n ----------\n month: integer|string|Date (optional)\n Month (or `Date`).\n\n Returns\n -------\n out: integer\n Quarter of the year.\n\n Examples\n --------\n > var q = quarterOfYear( new Date() )\n \n > q = quarterOfYear( 4 )\n 2\n > q = quarterOfYear( 'June' )\n 2\n\n // Other ways to supply month:\n > q = quarterOfYear( 'April' )\n 2\n > q = quarterOfYear( 'apr' )\n 2\n\n See Also\n --------\n dayOfYear\n", - "random.iterators.arcsine": "\nrandom.iterators.arcsine( a, b[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from an\n arcsine distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n a: number\n Minimum support.\n\n b: number\n Maximum support.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.arcsine( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.arcsine\n", - "random.iterators.bernoulli": "\nrandom.iterators.bernoulli( p[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n Bernoulli distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n p: number\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.bernoulli( 0.3 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.bernoulli\n", - "random.iterators.beta": "\nrandom.iterators.beta( α, β[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n beta distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `α <= 0` or `β <= 0`.\n\n Parameters\n ----------\n α: number\n First shape parameter.\n\n β: number\n Second shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.beta( 1.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.beta\n", - "random.iterators.betaprime": "\nrandom.iterators.betaprime( α, β[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n beta prime distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `α <= 0` or `β <= 0`.\n\n Parameters\n ----------\n α: number\n First shape parameter.\n\n β: number\n Second shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.betaprime( 1.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.betaprime\n", - "random.iterators.binomial": "\nrandom.iterators.binomial( n, p[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n binomial distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n n: integer\n Number of trials.\n\n p: number\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.binomial( 10, 0.3 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.binomial\n", - "random.iterators.boxMuller": "\nrandom.iterators.boxMuller( [options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n standard normal distribution using the Box-Muller transform.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.prng: Function (optional)\n Pseudorandom number generator for generating uniformly distributed\n pseudorandom numbers on the interval `[0,1)`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n iterator.PRNG: Function\n Underlying pseudorandom number generator for uniformly distributed\n numbers on the interval `[0,1)`.\n\n iterator.MIN: number|null\n Minimum possible value.\n\n iterator.MAX: number|null\n Maximum possible value.\n\n Examples\n --------\n > var it = random.iterators.boxMuller();\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.boxMuller\n", - "random.iterators.cauchy": "\nrandom.iterators.cauchy( x0, Ɣ[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n Cauchy distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n x0: number\n Location parameter.\n\n Ɣ: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.cauchy( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.cauchy\n", - "random.iterators.chi": "\nrandom.iterators.chi( k[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a chi\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n k: number\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.chi( 1.5 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.chi\n", - "random.iterators.chisquare": "\nrandom.iterators.chisquare( k[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n chi-square distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n k: number\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.chisquare( 1.5 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.chisquare\n", - "random.iterators.cosine": "\nrandom.iterators.cosine( μ, s[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a raised\n cosine distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n s: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.cosine( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.cosine\n", - "random.iterators.discreteUniform": "\nrandom.iterators.discreteUniform( a, b[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n discrete uniform distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n a: integer\n Minimum support.\n\n b: integer\n Maximum support.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.discreteUniform( 0, 3 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.discreteUniform\n", - "random.iterators.erlang": "\nrandom.iterators.erlang( k, λ[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from an Erlang\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n If `k` is not a positive integer or `λ <= 0`, the function throws an error.\n\n Parameters\n ----------\n k: integer\n Shape parameter.\n\n λ: number\n Rate parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.erlang( 1, 1.5 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.erlang\n", - "random.iterators.exponential": "\nrandom.iterators.exponential( λ[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from an\n exponential distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n λ: number\n Rate parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.exponential( 1.5 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.exponential\n", - "random.iterators.f": "\nrandom.iterators.f( d1, d2[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from an F\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `d1 <= 0` or `d2 <= 0`.\n\n Parameters\n ----------\n d1: number\n Degrees of freedom.\n\n d2: number\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.f( 1.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.f\n", - "random.iterators.frechet": "\nrandom.iterators.frechet( α, s, m[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a Fréchet\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `α <= 0` or `s <= 0`.\n\n Parameters\n ----------\n α: number\n Shape parameter.\n\n s: number\n Scale parameter.\n\n m: number\n Location parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.frechet( 1.0, 1.0, 0.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.frechet\n", - "random.iterators.gamma": "\nrandom.iterators.gamma( α, β[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a gamma\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `α <= 0` or `β <= 0`.\n\n Parameters\n ----------\n α: number\n Shape parameter.\n\n β: number\n Rate parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.gamma( 1.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.gamma\n", - "random.iterators.geometric": "\nrandom.iterators.geometric( p[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n geometric distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n p: number\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.geometric( 0.3 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.geometric\n", - "random.iterators.gumbel": "\nrandom.iterators.gumbel( μ, β[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a Gumbel\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n β: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.gumbel( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.gumbel\n", - "random.iterators.hypergeometric": "\nrandom.iterators.hypergeometric( N, K, n[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n hypergeometric distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n `N`, `K`, and `n` must all be nonnegative integers; otherwise, the function\n throws an error.\n\n If `n > N` or `K > N`, the function throws an error.\n\n Parameters\n ----------\n N: integer\n Population size.\n\n K: integer\n Subpopulation size.\n\n n: integer\n Number of draws.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.hypergeometric( 20, 10, 7 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.hypergeometric\n", - "random.iterators.improvedZiggurat": "\nrandom.iterators.improvedZiggurat( [options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n standard normal distribution using the Improved Ziggurat algorithm.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.prng: Function (optional)\n Pseudorandom number generator for generating uniformly distributed\n pseudorandom numbers on the interval `[0,1)`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n iterator.PRNG: Function\n Underlying pseudorandom number generator for uniformly distributed\n numbers on the interval `[0,1)`.\n\n Examples\n --------\n > var it = random.iterators.improvedZiggurat();\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.improvedZiggurat\n", - "random.iterators.invgamma": "\nrandom.iterators.invgamma( α, β[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from an\n inverse gamma distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `α <= 0` or `β <= 0`.\n\n Parameters\n ----------\n α: number\n Shape parameter.\n\n β: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.invgamma( 1.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.invgamma\n", - "random.iterators.kumaraswamy": "\nrandom.iterators.kumaraswamy( a, b[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from\n Kumaraswamy's double bounded distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `a <= 0` or `b <= 0`.\n\n Parameters\n ----------\n a: number\n First shape parameter.\n\n b: number\n Second shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.kumaraswamy( 1.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.kumaraswamy\n", - "random.iterators.laplace": "\nrandom.iterators.laplace( μ, b[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a Laplace\n (double exponential) distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n b: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.laplace( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.laplace\n", - "random.iterators.levy": "\nrandom.iterators.levy( μ, c[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a Lévy\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n c: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.levy( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.levy\n", - "random.iterators.logistic": "\nrandom.iterators.logistic( μ, s[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n logistic distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n s: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.logistic( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.logistic\n", - "random.iterators.lognormal": "\nrandom.iterators.lognormal( μ, σ[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n lognormal distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n σ: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.lognormal( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.lognormal\n", - "random.iterators.minstd": "\nrandom.iterators.minstd( [options] )\n Returns an iterator for generating pseudorandom integers on the interval\n `[1, 2147483646]`.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n This pseudorandom number generator (PRNG) is a linear congruential\n pseudorandom number generator (LCG) based on Park and Miller.\n\n The generator has a period of approximately `2.1e9`.\n\n An LCG is fast and uses little memory. On the other hand, because the\n generator is a simple LCG, the generator has recognized shortcomings. By\n today's PRNG standards, the generator's period is relatively short. More\n importantly, the \"randomness quality\" of the generator's output is lacking.\n These defects make the generator unsuitable, for example, in Monte Carlo\n simulations and in cryptographic applications.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.normalized: boolean (optional)\n Boolean indicating whether to return pseudorandom numbers on the\n interval `[0,1)`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n iterator.MIN: number\n Minimum possible value.\n\n iterator.MAX: number\n Maximum possible value.\n\n Examples\n --------\n > var it = random.iterators.minstd();\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.minstd, random.iterators.minstdShuffle, random.iterators.mt19937, random.iterators.randi, random.iterators.randu\n", - "random.iterators.minstdShuffle": "\nrandom.iterators.minstdShuffle( [options] )\n Returns an iterator for generating pseudorandom integers on the interval\n `[1, 2147483646]`.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n This pseudorandom number generator (PRNG) is a linear congruential\n pseudorandom number generator (LCG) whose output is shuffled using the Bays-\n Durham algorithm. The shuffle step considerably strengthens the \"randomness\n quality\" of a simple LCG's output.\n\n The generator has a period of approximately `2.1e9`.\n\n An LCG is fast and uses little memory. On the other hand, because the\n generator is a simple LCG, the generator has recognized shortcomings. By\n today's PRNG standards, the generator's period is relatively short. In\n general, this generator is unsuitable for Monte Carlo simulations and\n cryptographic applications.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.normalized: boolean (optional)\n Boolean indicating whether to return pseudorandom numbers on the\n interval `[0,1)`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n iterator.MIN: number\n Minimum possible value.\n\n iterator.MAX: number\n Maximum possible value.\n\n Examples\n --------\n > var it = random.iterators.minstdShuffle();\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.minstdShuffle, random.iterators.minstd, random.iterators.mt19937, random.iterators.randi, random.iterators.randu\n", - "random.iterators.mt19937": "\nrandom.iterators.mt19937( [options] )\n Returns an iterator for generating pseudorandom integers on the interval\n `[1, 4294967295]`.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n This pseudorandom number generator (PRNG) is a 32-bit Mersenne Twister\n pseudorandom number generator.\n\n The PRNG is *not* a cryptographically secure PRNG.\n\n The PRNG has a period of 2^19937 - 1.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.normalized: boolean (optional)\n Boolean indicating whether to return pseudorandom numbers on the\n interval `[0,1)`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n iterator.MIN: number\n Minimum possible value.\n\n iterator.MAX: number\n Maximum possible value.\n\n Examples\n --------\n > var it = random.iterators.mt19937();\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.mt19937, random.iterators.minstd, random.iterators.minstdShuffle, random.iterators.randi, random.iterators.randu\n", - "random.iterators.negativeBinomial": "\nrandom.iterators.negativeBinomial( r, p[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n negative binomial distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n r: number\n Number of successes until experiment is stopped.\n\n p: number\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.negativeBinomial( 10, 0.3 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.negativeBinomial\n", - "random.iterators.normal": "\nrandom.iterators.normal( μ, σ[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a normal\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n σ: number\n Standard deviation.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.normal( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.normal\n", - "random.iterators.pareto1": "\nrandom.iterators.pareto1( α, β[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a Pareto\n (Type I) distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `α <= 0` or `β <= 0`.\n\n Parameters\n ----------\n α: number\n Shape parameter.\n\n β: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.pareto1( 1.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.pareto1\n", - "random.iterators.poisson": "\nrandom.iterators.poisson( λ[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a Poisson\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n λ: number\n Mean.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.poisson( 1.5 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.poisson\n", - "random.iterators.randi": "\nrandom.iterators.randi( [options] )\n Create an iterator for generating pseudorandom numbers having integer\n values.\n\n The default underlying pseudorandom number generator (PRNG) *may* change in\n the future. If exact reproducibility is required, either explicitly specify\n a PRNG via the `name` option or use an underlying PRNG directly.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.name: string (optional)\n Name of a supported pseudorandom number generator (PRNG), which will\n serve as the underlying source of pseudorandom numbers. The following\n PRNGs are supported:\n\n - mt19937: 32-bit Mersenne Twister.\n - minstd: linear congruential PRNG based on Park and Miller.\n - minstd-shuffle: linear congruential PRNG whose output is shuffled.\n\n Default: `'mt19937'`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n iterator.PRNG: Function\n Underlying pseudorandom number generator.\n\n iterator.MIN: number\n Minimum possible value.\n\n iterator.MAX: number\n Maximum possible value.\n\n Examples\n --------\n > var it = random.iterators.randi();\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.randi\n", - "random.iterators.randn": "\nrandom.iterators.randn( [options] )\n Create an iterator for generating pseudorandom numbers drawn from a standard\n normal distribution.\n\n The default underlying pseudorandom number generator (PRNG) *may* change in\n the future. If exact reproducibility is required, either explicitly specify\n a PRNG via the `name` option or use an underlying PRNG directly.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.name: string (optional)\n Name of a supported pseudorandom number generator (PRNG), which will\n serve as the underlying source of pseudorandom numbers. The following\n PRNGs are supported:\n\n - improved-ziggurat: improved ziggurat method.\n - box-muller: Box-Muller transform.\n\n Default: `'improved-ziggurat'`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n iterator.PRNG: Function\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var it = random.iterators.randn();\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.randn\n", - "random.iterators.randu": "\nrandom.iterators.randu( [options] )\n Create an iterator for generating uniformly distributed pseudorandom numbers\n between 0 and 1.\n\n The default underlying pseudorandom number generator (PRNG) *may* change in\n the future. If exact reproducibility is required, either explicitly specify\n a PRNG via the `name` option or use an underlying PRNG directly.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.name: string (optional)\n Name of a supported pseudorandom number generator (PRNG), which will\n serve as the underlying source of pseudorandom numbers. The following\n PRNGs are supported:\n\n - mt19937: 32-bit Mersenne Twister.\n - minstd: linear congruential PRNG based on Park and Miller.\n - minstd-shuffle: linear congruential PRNG whose output is shuffled.\n\n Default: `'mt19937'`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n iterator.PRNG: Function\n Underlying pseudorandom number generator.\n\n iterator.MIN: number\n Minimum possible value.\n\n iterator.MAX: number\n Maximum possible value.\n\n Examples\n --------\n > var it = random.iterators.randu();\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.randu\n", - "random.iterators.rayleigh": "\nrandom.iterators.rayleigh( σ[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n Rayleigh distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n σ: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.rayleigh( 1.5 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.rayleigh\n", - "random.iterators.t": "\nrandom.iterators.t( v[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n Student's t distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n v: number\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.t( 1.5 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.t\n", - "random.iterators.triangular": "\nrandom.iterators.triangular( a, b, c[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n triangular distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n a: number\n Minimum support.\n\n b: number\n Maximum support.\n\n c: number\n Mode.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.triangular( 0.0, 1.0, 0.3 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.triangular\n", - "random.iterators.uniform": "\nrandom.iterators.uniform( a, b[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n continuous uniform distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n a: number\n Minimum support.\n\n b: number\n Maximum support.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.uniform( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.uniform\n", - "random.iterators.weibull": "\nrandom.iterators.weibull( k, λ[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n Weibull distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `k <= 0` or `λ <= 0`.\n\n Parameters\n ----------\n k: number\n Scale parameter.\n\n λ: number\n Shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.SEED: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.weibull( 1.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.weibull\n", + "random.iterators.arcsine": "\nrandom.iterators.arcsine( a, b[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from an\n arcsine distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n a: number\n Minimum support.\n\n b: number\n Maximum support.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.arcsine( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.arcsine\n", + "random.iterators.bernoulli": "\nrandom.iterators.bernoulli( p[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n Bernoulli distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n p: number\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.bernoulli( 0.3 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.bernoulli\n", + "random.iterators.beta": "\nrandom.iterators.beta( α, β[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n beta distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `α <= 0` or `β <= 0`.\n\n Parameters\n ----------\n α: number\n First shape parameter.\n\n β: number\n Second shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.beta( 1.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.beta\n", + "random.iterators.betaprime": "\nrandom.iterators.betaprime( α, β[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n beta prime distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `α <= 0` or `β <= 0`.\n\n Parameters\n ----------\n α: number\n First shape parameter.\n\n β: number\n Second shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.betaprime( 1.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.betaprime\n", + "random.iterators.binomial": "\nrandom.iterators.binomial( n, p[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n binomial distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n n: integer\n Number of trials.\n\n p: number\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.binomial( 10, 0.3 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.binomial\n", + "random.iterators.boxMuller": "\nrandom.iterators.boxMuller( [options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n standard normal distribution using the Box-Muller transform.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.prng: Function (optional)\n Pseudorandom number generator for generating uniformly distributed\n pseudorandom numbers on the interval `[0,1)`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n iterator.PRNG: Function\n Underlying pseudorandom number generator for uniformly distributed\n numbers on the interval `[0,1)`.\n\n iterator.MIN: number|null\n Minimum possible value.\n\n iterator.MAX: number|null\n Maximum possible value.\n\n Examples\n --------\n > var it = random.iterators.boxMuller();\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.boxMuller\n", + "random.iterators.cauchy": "\nrandom.iterators.cauchy( x0, Ɣ[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n Cauchy distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n x0: number\n Location parameter.\n\n Ɣ: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.cauchy( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.cauchy\n", + "random.iterators.chi": "\nrandom.iterators.chi( k[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a chi\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n k: number\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.chi( 1.5 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.chi\n", + "random.iterators.chisquare": "\nrandom.iterators.chisquare( k[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n chi-square distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n k: number\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.chisquare( 1.5 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.chisquare\n", + "random.iterators.cosine": "\nrandom.iterators.cosine( μ, s[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a raised\n cosine distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n s: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.cosine( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.cosine\n", + "random.iterators.discreteUniform": "\nrandom.iterators.discreteUniform( a, b[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n discrete uniform distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n a: integer\n Minimum support.\n\n b: integer\n Maximum support.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.discreteUniform( 0, 3 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.discreteUniform\n", + "random.iterators.erlang": "\nrandom.iterators.erlang( k, λ[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from an Erlang\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n If `k` is not a positive integer or `λ <= 0`, the function throws an error.\n\n Parameters\n ----------\n k: integer\n Shape parameter.\n\n λ: number\n Rate parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.erlang( 1, 1.5 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.erlang\n", + "random.iterators.exponential": "\nrandom.iterators.exponential( λ[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from an\n exponential distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n λ: number\n Rate parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.exponential( 1.5 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.exponential\n", + "random.iterators.f": "\nrandom.iterators.f( d1, d2[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from an F\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `d1 <= 0` or `d2 <= 0`.\n\n Parameters\n ----------\n d1: number\n Degrees of freedom.\n\n d2: number\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.f( 1.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.f\n", + "random.iterators.frechet": "\nrandom.iterators.frechet( α, s, m[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a Fréchet\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `α <= 0` or `s <= 0`.\n\n Parameters\n ----------\n α: number\n Shape parameter.\n\n s: number\n Scale parameter.\n\n m: number\n Location parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.frechet( 1.0, 1.0, 0.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.frechet\n", + "random.iterators.gamma": "\nrandom.iterators.gamma( α, β[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a gamma\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `α <= 0` or `β <= 0`.\n\n Parameters\n ----------\n α: number\n Shape parameter.\n\n β: number\n Rate parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.gamma( 1.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.gamma\n", + "random.iterators.geometric": "\nrandom.iterators.geometric( p[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n geometric distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n p: number\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.geometric( 0.3 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.geometric\n", + "random.iterators.gumbel": "\nrandom.iterators.gumbel( μ, β[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a Gumbel\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n β: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.gumbel( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.gumbel\n", + "random.iterators.hypergeometric": "\nrandom.iterators.hypergeometric( N, K, n[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n hypergeometric distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n `N`, `K`, and `n` must all be nonnegative integers; otherwise, the function\n throws an error.\n\n If `n > N` or `K > N`, the function throws an error.\n\n Parameters\n ----------\n N: integer\n Population size.\n\n K: integer\n Subpopulation size.\n\n n: integer\n Number of draws.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.hypergeometric( 20, 10, 7 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.hypergeometric\n", + "random.iterators.improvedZiggurat": "\nrandom.iterators.improvedZiggurat( [options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n standard normal distribution using the Improved Ziggurat algorithm.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.prng: Function (optional)\n Pseudorandom number generator for generating uniformly distributed\n pseudorandom numbers on the interval `[0,1)`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n iterator.PRNG: Function\n Underlying pseudorandom number generator for uniformly distributed\n numbers on the interval `[0,1)`.\n\n Examples\n --------\n > var it = random.iterators.improvedZiggurat();\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.improvedZiggurat\n", + "random.iterators.invgamma": "\nrandom.iterators.invgamma( α, β[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from an\n inverse gamma distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `α <= 0` or `β <= 0`.\n\n Parameters\n ----------\n α: number\n Shape parameter.\n\n β: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.invgamma( 1.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.invgamma\n", + "random.iterators.kumaraswamy": "\nrandom.iterators.kumaraswamy( a, b[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from\n Kumaraswamy's double bounded distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `a <= 0` or `b <= 0`.\n\n Parameters\n ----------\n a: number\n First shape parameter.\n\n b: number\n Second shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.kumaraswamy( 1.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.kumaraswamy\n", + "random.iterators.laplace": "\nrandom.iterators.laplace( μ, b[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a Laplace\n (double exponential) distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n b: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.laplace( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.laplace\n", + "random.iterators.levy": "\nrandom.iterators.levy( μ, c[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a Lévy\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n c: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.levy( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.levy\n", + "random.iterators.logistic": "\nrandom.iterators.logistic( μ, s[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n logistic distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n s: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.logistic( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.logistic\n", + "random.iterators.lognormal": "\nrandom.iterators.lognormal( μ, σ[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n lognormal distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n σ: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.lognormal( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.lognormal\n", + "random.iterators.minstd": "\nrandom.iterators.minstd( [options] )\n Returns an iterator for generating pseudorandom integers on the interval\n `[1, 2147483646]`.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n This pseudorandom number generator (PRNG) is a linear congruential\n pseudorandom number generator (LCG) based on Park and Miller.\n\n The generator has a period of approximately `2.1e9`.\n\n An LCG is fast and uses little memory. On the other hand, because the\n generator is a simple LCG, the generator has recognized shortcomings. By\n today's PRNG standards, the generator's period is relatively short. More\n importantly, the \"randomness quality\" of the generator's output is lacking.\n These defects make the generator unsuitable, for example, in Monte Carlo\n simulations and in cryptographic applications.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.normalized: boolean (optional)\n Boolean indicating whether to return pseudorandom numbers on the\n interval `[0,1)`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n iterator.MIN: number\n Minimum possible value.\n\n iterator.MAX: number\n Maximum possible value.\n\n Examples\n --------\n > var it = random.iterators.minstd();\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.minstd, random.iterators.minstdShuffle, random.iterators.mt19937, random.iterators.randi, random.iterators.randu\n", + "random.iterators.minstdShuffle": "\nrandom.iterators.minstdShuffle( [options] )\n Returns an iterator for generating pseudorandom integers on the interval\n `[1, 2147483646]`.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n This pseudorandom number generator (PRNG) is a linear congruential\n pseudorandom number generator (LCG) whose output is shuffled using the Bays-\n Durham algorithm. The shuffle step considerably strengthens the \"randomness\n quality\" of a simple LCG's output.\n\n The generator has a period of approximately `2.1e9`.\n\n An LCG is fast and uses little memory. On the other hand, because the\n generator is a simple LCG, the generator has recognized shortcomings. By\n today's PRNG standards, the generator's period is relatively short. In\n general, this generator is unsuitable for Monte Carlo simulations and\n cryptographic applications.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.normalized: boolean (optional)\n Boolean indicating whether to return pseudorandom numbers on the\n interval `[0,1)`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n iterator.MIN: number\n Minimum possible value.\n\n iterator.MAX: number\n Maximum possible value.\n\n Examples\n --------\n > var it = random.iterators.minstdShuffle();\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.minstdShuffle, random.iterators.minstd, random.iterators.mt19937, random.iterators.randi, random.iterators.randu\n", + "random.iterators.mt19937": "\nrandom.iterators.mt19937( [options] )\n Returns an iterator for generating pseudorandom integers on the interval\n `[1, 4294967295]`.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n This pseudorandom number generator (PRNG) is a 32-bit Mersenne Twister\n pseudorandom number generator.\n\n The PRNG is *not* a cryptographically secure PRNG.\n\n The PRNG has a period of 2^19937 - 1.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.normalized: boolean (optional)\n Boolean indicating whether to return pseudorandom numbers on the\n interval `[0,1)`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n iterator.MIN: number\n Minimum possible value.\n\n iterator.MAX: number\n Maximum possible value.\n\n Examples\n --------\n > var it = random.iterators.mt19937();\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.mt19937, random.iterators.minstd, random.iterators.minstdShuffle, random.iterators.randi, random.iterators.randu\n", + "random.iterators.negativeBinomial": "\nrandom.iterators.negativeBinomial( r, p[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n negative binomial distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n r: number\n Number of successes until experiment is stopped.\n\n p: number\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.negativeBinomial( 10, 0.3 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.negativeBinomial\n", + "random.iterators.normal": "\nrandom.iterators.normal( μ, σ[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a normal\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n σ: number\n Standard deviation.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.normal( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.normal\n", + "random.iterators.pareto1": "\nrandom.iterators.pareto1( α, β[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a Pareto\n (Type I) distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `α <= 0` or `β <= 0`.\n\n Parameters\n ----------\n α: number\n Shape parameter.\n\n β: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.pareto1( 1.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.pareto1\n", + "random.iterators.poisson": "\nrandom.iterators.poisson( λ[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a Poisson\n distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n λ: number\n Mean.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.poisson( 1.5 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.poisson\n", + "random.iterators.randi": "\nrandom.iterators.randi( [options] )\n Create an iterator for generating pseudorandom numbers having integer\n values.\n\n The default underlying pseudorandom number generator (PRNG) *may* change in\n the future. If exact reproducibility is required, either explicitly specify\n a PRNG via the `name` option or use an underlying PRNG directly.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.name: string (optional)\n Name of a supported pseudorandom number generator (PRNG), which will\n serve as the underlying source of pseudorandom numbers. The following\n PRNGs are supported:\n\n - mt19937: 32-bit Mersenne Twister.\n - minstd: linear congruential PRNG based on Park and Miller.\n - minstd-shuffle: linear congruential PRNG whose output is shuffled.\n\n Default: `'mt19937'`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n iterator.PRNG: Function\n Underlying pseudorandom number generator.\n\n iterator.MIN: number\n Minimum possible value.\n\n iterator.MAX: number\n Maximum possible value.\n\n Examples\n --------\n > var it = random.iterators.randi();\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.randi\n", + "random.iterators.randn": "\nrandom.iterators.randn( [options] )\n Create an iterator for generating pseudorandom numbers drawn from a standard\n normal distribution.\n\n The default underlying pseudorandom number generator (PRNG) *may* change in\n the future. If exact reproducibility is required, either explicitly specify\n a PRNG via the `name` option or use an underlying PRNG directly.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.name: string (optional)\n Name of a supported pseudorandom number generator (PRNG), which will\n serve as the underlying source of pseudorandom numbers. The following\n PRNGs are supported:\n\n - improved-ziggurat: improved ziggurat method.\n - box-muller: Box-Muller transform.\n\n Default: `'improved-ziggurat'`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n iterator.PRNG: Function\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var it = random.iterators.randn();\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.randn\n", + "random.iterators.randu": "\nrandom.iterators.randu( [options] )\n Create an iterator for generating uniformly distributed pseudorandom numbers\n between 0 and 1.\n\n The default underlying pseudorandom number generator (PRNG) *may* change in\n the future. If exact reproducibility is required, either explicitly specify\n a PRNG via the `name` option or use an underlying PRNG directly.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.name: string (optional)\n Name of a supported pseudorandom number generator (PRNG), which will\n serve as the underlying source of pseudorandom numbers. The following\n PRNGs are supported:\n\n - mt19937: 32-bit Mersenne Twister.\n - minstd: linear congruential PRNG based on Park and Miller.\n - minstd-shuffle: linear congruential PRNG whose output is shuffled.\n\n Default: `'mt19937'`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n iterator.PRNG: Function\n Underlying pseudorandom number generator.\n\n iterator.MIN: number\n Minimum possible value.\n\n iterator.MAX: number\n Maximum possible value.\n\n Examples\n --------\n > var it = random.iterators.randu();\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.randu\n", + "random.iterators.rayleigh": "\nrandom.iterators.rayleigh( σ[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n Rayleigh distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n σ: number\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.rayleigh( 1.5 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.rayleigh\n", + "random.iterators.t": "\nrandom.iterators.t( v[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n Student's t distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n v: number\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.t( 1.5 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.t\n", + "random.iterators.triangular": "\nrandom.iterators.triangular( a, b, c[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n triangular distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n a: number\n Minimum support.\n\n b: number\n Maximum support.\n\n c: number\n Mode.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.triangular( 0.0, 1.0, 0.3 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.triangular\n", + "random.iterators.uniform": "\nrandom.iterators.uniform( a, b[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n continuous uniform distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n a: number\n Minimum support.\n\n b: number\n Maximum support.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.uniform( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.uniform\n", + "random.iterators.weibull": "\nrandom.iterators.weibull( k, λ[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from a\n Weibull distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n The function throws an error if `k <= 0` or `λ <= 0`.\n\n Parameters\n ----------\n k: number\n Scale parameter.\n\n λ: number\n Shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.weibull( 1.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.weibull\n", "ranks": "\nranks( arr[, options] )\n Computes the sample ranks for the values of an array-like object.\n\n When all elements of the `array` are different, the ranks are uniquely\n determined. When there are equal elements (called *ties*), the `method`\n option determines how they are handled. The default, `'average'`, replaces\n the ranks of the ties by their mean. Other possible options are `'min'` and\n `'max'`, which replace the ranks of the ties by their minimum and maximum,\n respectively. `'dense'` works like `'min'`, with the difference that the\n next highest element after a tie is assigned the next smallest integer.\n Finally, `ordinal` gives each element in `arr` a distinct rank, according to\n the position they appear in.\n\n The `missing` option is used to specify how to handle missing data.\n By default, `NaN` or `null` are treated as missing values. `'last'`specifies\n that missing values are placed last, `'first'` that the are assigned the\n lowest ranks and `'remove'` means that they are removed from the array\n before the ranks are calculated.\n\n Parameters\n ----------\n arr: Array\n Input values.\n\n options: Object (optional)\n Function options.\n\n options.method (optional)\n Method name determining how ties are treated (`average`, `min`, `max`,\n `dense`, or `ordinal`). Default: `'average'`.\n\n options.missing (optional)\n Determines where missing values go (`first`, `last`, or `remove`).\n Default: `'last'`.\n\n options.encoding (optional)\n Array of values encoding missing values. Default: `[ null, NaN ]`.\n\n Returns\n -------\n out: Array\n Array containing the computed ranks for the elements of the input array.\n\n Examples\n --------\n > var arr = [ 1.1, 2.0, 3.5, 0.0, 2.4 ] ;\n > var out = ranks( arr )\n [ 2, 3, 5, 1, 4 ]\n\n // Ties are averaged:\n > arr = [ 2, 2, 1, 4, 3 ];\n > out = ranks( arr )\n [ 2.5, 2.5, 1, 5, 4 ]\n\n // Missing values are placed last:\n > arr = [ null, 2, 2, 1, 4, 3, NaN, NaN ];\n > out = ranks( arr )\n [ 6, 2.5, 2.5, 1, 5, 4, 7 ,8 ]\n\n", "RE_BASENAME": "\nRE_BASENAME\n Regular expression to capture the last part of a path.\n\n The regular expression is platform-dependent. If the current process is\n running on Windows, the regular expression is `*.win32`; otherwise,\n `*.posix`.\n\n\nRE_BASENAME.posix\n Regular expression to capture the last part of a POSIX path.\n\n Examples\n --------\n > var base = RE_BASENAME.exec( '/foo/bar/index.js' )[ 1 ]\n 'index.js'\n\n\nRE_BASENAME.win32\n Regular expression to capture the last part of a Windows path.\n\n Examples\n --------\n > var base = RE_BASENAME.exec( 'C:\\\\foo\\\\bar\\\\index.js' )[ 1 ]\n 'index.js'\n\n See Also\n --------\n RE_BASENAME_POSIX, RE_BASENAME_WINDOWS\n", "RE_BASENAME_POSIX": "\nRE_BASENAME_POSIX\n Regular expression to capture the last part of a POSIX path.\n\n Examples\n --------\n > var base = RE_BASENAME_POSIX.exec( '/foo/bar/index.js' )[ 1 ]\n 'index.js'\n > base = RE_BASENAME_POSIX.exec( './foo/bar/.gitignore' )[ 1 ]\n '.gitignore'\n > base = RE_BASENAME_POSIX.exec( 'foo/file.pdf' )[ 1 ]\n 'file.pdf'\n > base = RE_BASENAME_POSIX.exec( '/foo/bar/file' )[ 1 ]\n 'file'\n > base = RE_BASENAME_POSIX.exec( 'index.js' )[ 1 ]\n 'index.js'\n > base = RE_BASENAME_POSIX.exec( '.' )[ 1 ]\n '.'\n > base = RE_BASENAME_POSIX.exec( './' )[ 1 ]\n '.'\n > base = RE_BASENAME_POSIX.exec( '' )[ 1 ]\n ''\n\n See Also\n --------\n RE_BASENAME, RE_BASENAME_WINDOWS\n", @@ -1504,7 +1504,8 @@ var db = { "SECONDS_IN_WEEK": "\nSECONDS_IN_WEEK\n Number of seconds in a week.\n\n The value is a generalization and does **not** take into account\n inaccuracies due to daylight savings conventions, crossing timezones, or\n other complications with time and dates.\n\n Examples\n --------\n > var wks = 3.14;\n > var secs = wks * SECONDS_IN_WEEK\n 1899072\n\n", "secondsInMonth": "\nsecondsInMonth( [month[, year]] )\n Returns the number of seconds in a month.\n\n By default, the function returns the number of seconds in the current month\n of the current year (according to local time). To determine the number of\n seconds for a particular month and year, provide `month` and `year`\n arguments.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n The function's return value is a generalization and does **not** take into\n account inaccuracies due to daylight savings conventions, crossing\n timezones, or other complications with time and dates.\n\n Parameters\n ----------\n month: string|Date|integer (optional)\n Month.\n\n year: integer (optional)\n Year.\n\n Returns\n -------\n out: integer\n Seconds in a month.\n\n Examples\n --------\n > var num = secondsInMonth()\n \n > num = secondsInMonth( 2 )\n \n > num = secondsInMonth( 2, 2016 )\n 2505600\n > num = secondsInMonth( 2, 2017 )\n 2419200\n\n // Other ways to supply month:\n > num = secondsInMonth( 'feb', 2016 )\n 2505600\n > num = secondsInMonth( 'february', 2016 )\n 2505600\n\n See Also\n --------\n secondsInYear\n", "secondsInYear": "\nsecondsInYear( [value] )\n Returns the number of seconds in a year according to the Gregorian calendar.\n\n By default, the function returns the number of seconds in the current year\n (according to local time). To determine the number of seconds for a\n particular year, provide either a year or a `Date` object.\n\n The function's return value is a generalization and does **not** take into\n account inaccuracies due to daylight savings conventions, crossing\n timezones, or other complications with time and dates.\n\n Parameters\n ----------\n value: integer|Date (optional)\n Year or `Date` object.\n\n Returns\n -------\n out: integer\n Number of seconds in a year.\n\n Examples\n --------\n > var num = secondsInYear()\n \n > num = secondsInYear( 2016 )\n 31622400\n > num = secondsInYear( 2017 )\n 31536000\n\n See Also\n --------\n secondsInMonth\n", - "setReadOnly": "\nsetReadOnly( obj, prop, value )\n Defines a read-only property.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n", + "setReadOnly": "\nsetReadOnly( obj, prop, value )\n Defines a read-only property.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n setReadOnlyAccessor\n", + "setReadOnlyAccessor": "\nsetReadOnlyAccessor( obj, prop, getter )\n Defines a read-only accessor.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n getter: Function\n Get accessor.\n\n Examples\n --------\n > var obj = {};\n > function getter() { return 'bar'; };\n > setReadOnlyAccessor( obj, 'foo', getter );\n > obj.foo\n 'bar'\n\n See Also\n --------\n setReadOnly\n", "SharedArrayBuffer": "\nSharedArrayBuffer( size )\n Returns a shared array buffer having a specified number of bytes.\n\n A shared array buffer behaves similarly to a non-shared array buffer, except\n that a shared array buffer allows creating views of memory shared between\n threads.\n\n Buffer contents are initialized to 0.\n\n If an environment does not support shared array buffers, the function throws\n an error.\n\n Parameters\n ----------\n size: integer\n Number of bytes.\n\n Returns\n -------\n out: SharedArrayBuffer\n A shared array buffer.\n\n Examples\n --------\n // Assuming an environment supports SharedArrayBuffers...\n > var buf = new SharedArrayBuffer( 5 )\n \n\n\nSharedArrayBuffer.length\n Number of input arguments the constructor accepts.\n\n Examples\n --------\n > SharedArrayBuffer.length\n 1\n\n\nSharedArrayBuffer.prototype.byteLength\n Read-only property which returns the length (in bytes) of the array buffer.\n\n Examples\n --------\n // Assuming an environment supports SharedArrayBuffers...\n > var buf = new SharedArrayBuffer( 5 );\n > buf.byteLength\n 5\n\n\nSharedArrayBuffer.prototype.slice( [start[, end]] )\n Copies the bytes of a shared array buffer to a new shared array buffer.\n\n Parameters\n ----------\n start: integer (optional)\n Index at which to start copying buffer contents (inclusive). If\n negative, the index is relative to the end of the buffer.\n\n end: integer (optional)\n Index at which to stop copying buffer contents (exclusive). If negative,\n the index is relative to the end of the buffer.\n\n Returns\n -------\n out: SharedArrayBuffer\n A new shared array buffer whose contents have been copied from the\n calling shared array buffer.\n\n Examples\n --------\n // Assuming an environment supports SharedArrayBuffers...\n > var b1 = new SharedArrayBuffer( 10 );\n > var b2 = b1.slice( 2, 6 );\n > var bool = ( b1 === b2 )\n false\n > b2.byteLength\n 4\n\n See Also\n --------\n Buffer, ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "shift": "\nshift( collection )\n Removes and returns the first element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = shift( arr )\n [ [ 2.0, 3.0, 4.0, 5.0 ], 1.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = shift( arr )\n [ [ 2.0 ], 1.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = shift( arr )\n [ { 'length': 1, '0': 2.0 }, 1.0 ]\n\n See Also\n --------\n pop, push, unshift\n", "shuffle": "\nshuffle( arr[, options] )\n Shuffles elements of an array-like object.\n\n Parameters\n ----------\n arr: ArrayLike\n Array-like object to shuffle.\n\n options: Object (optional)\n Options.\n\n options.copy: string (optional)\n String indicating whether to return a copy (`deep`,`shallow` or `none`).\n Default: `'shallow'`.\n\n Returns\n -------\n out: ArrayLike\n Shuffled array-like object.\n\n Examples\n --------\n > var data = [ 1, 2, 3 ];\n > var out = shuffle( data )\n e.g., [ 3, 1, 2 ]\n > out = shuffle( data, { 'copy': 'none' });\n > var bool = ( data === out )\n true\n\n\nshuffle.factory( [options] )\n Returns a function to shuffle elements of array-like objects.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.seed: integer (optional)\n Integer-valued seed.\n\n options.copy: string (optional)\n String indicating whether to return a copy (`deep`,`shallow` or `none`).\n Default: `'shallow'`.\n\n Returns\n -------\n fcn: Function\n Shuffle function.\n\n Examples\n --------\n > var myshuffle = shuffle.factory();\n\n // Set a seed:\n > myshuffle = shuffle.factory({ 'seed': 239 });\n > var arr = [ 0, 1, 2, 3, 4 ];\n > var out = myshuffle( arr )\n e.g., [ 3, 4, 1, 0, 2 ]\n\n // Use a different copy strategy:\n > myshuffle = shuffle.factory({ 'copy': 'none', 'seed': 867 });\n\n // Created shuffle function mutates input array by default:\n > arr = [ 1, 2, 3, 4, 5, 6 ];\n > out = myshuffle( arr );\n > var bool = ( arr === out )\n true\n // Default option can be overridden:\n > arr = [ 1, 2, 3, 4 ];\n > out = myshuffle( arr, { 'copy': 'shallow' });\n > bool = ( arr === out )\n false\n\n See Also\n --------\n sample\n", From 1d59071962601817b85bddaac5e6bb59f0fc0604 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 02:58:31 -0700 Subject: [PATCH 0019/1062] Use utility for defining a read-only accessor --- .../random/base/mt19937/lib/factory.js | 49 ++++--------------- 1 file changed, 9 insertions(+), 40 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 4908c901799f..551ef3dd0ca2 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -59,6 +59,7 @@ var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); var hasOwnProp = require( '@stdlib/assert/has-own-property' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var isCollection = require( '@stdlib/assert/is-collection' ); @@ -433,63 +434,31 @@ function factory( options ) { } // Note: property order matters in order to maintain consistency of PRNG "shape" (hidden classes). setReadOnly( mt19937, 'NAME', 'mt19937' ); - defineProperty( mt19937, 'seed', { - 'configurable': false, - 'enumerable': true, - 'get': getSeed - }); - defineProperty( mt19937, 'seedLength', { - 'configurable': false, - 'enumerable': true, - 'get': getSeedLength - }); + setReadOnlyAccessor( mt19937, 'seed', getSeed ); + setReadOnlyAccessor( mt19937, 'seedLength', getSeedLength ); defineProperty( mt19937, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, 'set': setState }); - defineProperty( mt19937, 'stateLength', { - 'configurable': false, - 'enumerable': true, - 'get': getStateLength - }); - defineProperty( mt19937, 'byteLength', { - 'configurable': false, - 'enumerable': true, - 'get': getStateSize - }); + setReadOnlyAccessor( mt19937, 'stateLength', getStateLength ); + setReadOnlyAccessor( mt19937, 'byteLength', getStateSize ); setReadOnly( mt19937, 'MIN', 1 ); setReadOnly( mt19937, 'MAX', UINT32_MAX ); setReadOnly( mt19937, 'normalized', normalized ); setReadOnly( normalized, 'NAME', mt19937.NAME ); - defineProperty( normalized, 'seed', { - 'configurable': false, - 'enumerable': true, - 'get': getSeed - }); - defineProperty( normalized, 'seedLength', { - 'configurable': false, - 'enumerable': true, - 'get': getSeedLength - }); + setReadOnlyAccessor( normalized, 'seed', getSeed ); + setReadOnlyAccessor( normalized, 'seedLength', getSeedLength ); defineProperty( normalized, 'state', { 'configurable': false, 'enumerable': true, 'get': getState, 'set': setState }); - defineProperty( normalized, 'stateLength', { - 'configurable': false, - 'enumerable': true, - 'get': getStateLength - }); - defineProperty( normalized, 'byteLength', { - 'configurable': false, - 'enumerable': true, - 'get': getStateSize - }); + setReadOnlyAccessor( normalized, 'stateLength', getStateLength ); + setReadOnlyAccessor( normalized, 'byteLength', getStateSize ); setReadOnly( normalized, 'MIN', 0.0 ); setReadOnly( normalized, 'MAX', MAX_NORMALIZED ); From 58fce49a68b9cd4ff1aaa29189b779da48f4b239 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 03:31:43 -0700 Subject: [PATCH 0020/1062] Add utility to define a property with read-write accessors --- .../define-read-write-accessor/README.md | 106 +++++++++++++++ .../benchmark/benchmark.js | 61 +++++++++ .../define-read-write-accessor/docs/repl.txt | 34 +++++ .../examples/index.js | 43 ++++++ .../define-read-write-accessor/lib/index.js | 58 ++++++++ .../define-read-write-accessor/lib/main.js | 70 ++++++++++ .../define-read-write-accessor/package.json | 74 +++++++++++ .../define-read-write-accessor/test/test.js | 124 ++++++++++++++++++ 8 files changed, 570 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/define-read-write-accessor/README.md create mode 100644 lib/node_modules/@stdlib/utils/define-read-write-accessor/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/define-read-write-accessor/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/define-read-write-accessor/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/define-read-write-accessor/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/define-read-write-accessor/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/define-read-write-accessor/package.json create mode 100644 lib/node_modules/@stdlib/utils/define-read-write-accessor/test/test.js diff --git a/lib/node_modules/@stdlib/utils/define-read-write-accessor/README.md b/lib/node_modules/@stdlib/utils/define-read-write-accessor/README.md new file mode 100644 index 000000000000..4ae4d23f61d4 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-read-write-accessor/README.md @@ -0,0 +1,106 @@ + + +# Read-Write Accessor + +> [Define][@stdlib/utils/define-property] a **read-write** accessor. + +
+ +## Usage + +```javascript +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); +``` + +#### setReadWriteAccessor( obj, prop, getter, setter ) + +[Defines][@stdlib/utils/define-property] a **read-write** accessor. + +```javascript +var word = 'bar'; +var obj = {}; + +function getter() { + return word + ' foo'; +} + +function setter( v ) { + word = v; +} + +setReadWriteAccessor( obj, 'foo', getter, setter ); + +var v = obj.foo; +// returns 'bar foo' + +obj.foo = 'beep'; + +v = obj.foo; +// returns 'beep foo' +``` + +
+ + + +
+ +## Examples + + + +```javascript +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); + +function Foo( name ) { + if ( !(this instanceof Foo) ) { + return new Foo( name ); + } + setReadWriteAccessor( this, 'name', getName, setName ); + return this; + + function getName() { + return 'Hello, ' + name; + } + + function setName( v ) { + name = v; + } +} + +var foo = new Foo( 'Grace' ); +console.log( foo.name ); + +foo.name = 'Ada'; +console.log( foo.name ); +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/define-read-write-accessor/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/define-read-write-accessor/benchmark/benchmark.js new file mode 100644 index 000000000000..98bc79bff2e7 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-read-write-accessor/benchmark/benchmark.js @@ -0,0 +1,61 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isString = require( '@stdlib/assert/is-string' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var setReadWriteAccessor = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var obj; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj = {}; + setReadWriteAccessor( obj, 'foo', getter( i.toString() ), setter ); + if ( !isString( obj.foo ) ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( !isString( obj.foo ) ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function getter( v ) { + return get; + + function get() { + return v; + } + } + + function setter( v ) { + obj.foo = v; + } +}); diff --git a/lib/node_modules/@stdlib/utils/define-read-write-accessor/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-read-write-accessor/docs/repl.txt new file mode 100644 index 000000000000..86bed72e2033 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-read-write-accessor/docs/repl.txt @@ -0,0 +1,34 @@ + +{{alias}}( obj, prop, getter, setter ) + Defines a read-write accessor. + + Parameters + ---------- + obj: Object + Object on which to define the property. + + prop: string + Property name. + + getter: Function + Get accessor. + + setter: Function + Set accessor. + + Examples + -------- + > var obj = {}; + > var name = 'bar'; + > function getter() { return name + ' foo'; }; + > function setter( v ) { name = v; }; + > {{alias}}( obj, 'foo', getter, setter ); + > obj.foo + 'bar foo' + > obj.foo = 'beep'; + > obj.foo + 'beep foo' + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/define-read-write-accessor/examples/index.js b/lib/node_modules/@stdlib/utils/define-read-write-accessor/examples/index.js new file mode 100644 index 000000000000..b376e2cb0cf8 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-read-write-accessor/examples/index.js @@ -0,0 +1,43 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var setReadWriteAccessor = require( './../lib' ); + +function Foo( name ) { + if ( !(this instanceof Foo) ) { + return new Foo( name ); + } + setReadWriteAccessor( this, 'name', getName, setName ); + return this; + + function getName() { + return 'Hello, ' + name; + } + + function setName( v ) { + name = v; + } +} + +var foo = new Foo( 'Grace' ); +console.log( foo.name ); + +foo.name = 'Ada'; +console.log( foo.name ); diff --git a/lib/node_modules/@stdlib/utils/define-read-write-accessor/lib/index.js b/lib/node_modules/@stdlib/utils/define-read-write-accessor/lib/index.js new file mode 100644 index 000000000000..19d4350790f7 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-read-write-accessor/lib/index.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Define a read-write accessor. +* +* @module @stdlib/utils/define-read-write-accessor +* +* @example +* var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); +* +* function getter() { +* return name + ' foo'; +* } +* +* function setter( v ) { +* name = v; +* } +* +* var name = 'bar'; +* var obj = {}; +* +* setReadWriteAccessor( obj, 'foo', getter, setter ); +* +* var v = obj.foo; +* // returns 'bar foo' +* +* obj.foo = 'beep'; +* +* v = obj.foo; +* // returns 'beep foo' +*/ + +// MODULES // + +var setReadWriteAccessor = require( './main.js' ); + + +// EXPORTS // + +module.exports = setReadWriteAccessor; diff --git a/lib/node_modules/@stdlib/utils/define-read-write-accessor/lib/main.js b/lib/node_modules/@stdlib/utils/define-read-write-accessor/lib/main.js new file mode 100644 index 000000000000..ed3162e89779 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-read-write-accessor/lib/main.js @@ -0,0 +1,70 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var defineProperty = require( '@stdlib/utils/define-property' ); + + +// MAIN // + +/** +* Defines a read-write accessor. +* +* @param {Object} obj - object on which to define the property +* @param {string} prop - property name +* @param {Function} getter - get accessor +* @param {Function} setter - set accessor +* +* @example +* function getter() { +* return name + ' foo'; +* } +* +* function setter( v ) { +* name = v; +* } +* +* var name = 'bar'; +* var obj = {}; +* +* setReadWriteAccessor( obj, 'foo', getter, setter ); +* +* var v = obj.foo; +* // returns 'bar foo' +* +* obj.foo = 'beep'; +* +* v = obj.foo; +* // returns 'beep foo' +*/ +function setReadWriteAccessor( obj, prop, getter, setter ) { + defineProperty( obj, prop, { + 'configurable': false, + 'enumerable': true, + 'get': getter, + 'set': setter + }); +} + + +// EXPORTS // + +module.exports = setReadWriteAccessor; diff --git a/lib/node_modules/@stdlib/utils/define-read-write-accessor/package.json b/lib/node_modules/@stdlib/utils/define-read-write-accessor/package.json new file mode 100644 index 000000000000..bd261f08ab2a --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-read-write-accessor/package.json @@ -0,0 +1,74 @@ +{ + "name": "@stdlib/utils/define-read-write-accessor", + "version": "0.0.0", + "description": "Define a read-write accessor.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "property", + "define", + "prop", + "read-write", + "read", + "write", + "readable", + "writable", + "configurable", + "accessor", + "get", + "getter", + "set", + "setter" + ] +} diff --git a/lib/node_modules/@stdlib/utils/define-read-write-accessor/test/test.js b/lib/node_modules/@stdlib/utils/define-read-write-accessor/test/test.js new file mode 100644 index 000000000000..a6da4478e085 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-read-write-accessor/test/test.js @@ -0,0 +1,124 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var getKeys = require( '@stdlib/utils/keys' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var setReadWriteAccessor = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof setReadWriteAccessor, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function sets a property on a provided object', function test( t ) { + var obj = {}; + var val = 0; + + setReadWriteAccessor( obj, 'foo', getter, setter ); + t.equal( obj.foo, val, 'returns expected value' ); + + t.end(); + + function getter() { + return val; + } + + function setter( v ) { + val = v; + } +}); + +tape( 'the read-write property is writable', function test( t ) { + var obj = {}; + var val = 0; + + setReadWriteAccessor( obj, 'foo', getter, setter ); + t.equal( obj.foo, 0, 'returns expected value' ); + + obj.foo = 1; + t.equal( obj.foo, 1, 'returns expected value' ); + + t.end(); + + function getter() { + return val; + } + + function setter( v ) { + val = v; + } +}); + +tape( 'the read-write property is not configurable', function test( t ) { + var obj = {}; + var val = 0; + + setReadWriteAccessor( obj, 'foo', getter, setter ); + + t.throws( foo, Error, 'property cannot be deleted' ); + t.throws( bar, Error, 'property cannot be reconfigured' ); + t.end(); + + function getter() { + return val; + } + + function setter( v ) { + val = v; + } + + function foo() { + delete obj.foo; + } + + function bar() { + defineProperty( obj, 'foo', { + 'value': 'boop', + 'writable': true, + 'configurable': false, + 'enumerable': true + }); + } +}); + +tape( 'the read-write property is enumerable', function test( t ) { + var obj = {}; + var val = 0; + + setReadWriteAccessor( obj, 'foo', getter, setter ); + + t.equal( getKeys( obj )[ 0 ], 'foo', 'property is enumerable' ); + t.end(); + + function getter() { + return val; + } + + function setter( v ) { + val = v; + } +}); From 998733966755fa8d7b325bf43c53afbc111ff012 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 03:32:56 -0700 Subject: [PATCH 0021/1062] Rename variable --- .../utils/define-read-only-accessor/benchmark/benchmark.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/define-read-only-accessor/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/define-read-only-accessor/benchmark/benchmark.js index f794bc4ec6d2..522b30d00c85 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-accessor/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/utils/define-read-only-accessor/benchmark/benchmark.js @@ -24,7 +24,7 @@ var bench = require( '@stdlib/bench' ); var isString = require( '@stdlib/assert/is-string' ).isPrimitive; var fromCodePoint = require( '@stdlib/string/from-code-point' ); var pkg = require( './../package.json' ).name; -var setReadOnly = require( './../lib' ); +var setReadOnlyAccessor = require( './../lib' ); // MAIN // @@ -36,7 +36,7 @@ bench( pkg, function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { obj = {}; - setReadOnly( obj, 'foo', getter( i ) ); + setReadOnlyAccessor( obj, 'foo', getter( i ) ); if ( !isString( obj.foo ) ) { b.fail( 'should return a string' ); } From a837741e2ed81d1f48a4dec2054f004339858a30 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 03:33:51 -0700 Subject: [PATCH 0022/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index f82f22161464..18b6688694de 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -315,6 +315,15 @@ setReadOnly( utils, 'setReadOnlyAccessor', require( '@stdlib/utils/define-read-o */ setReadOnly( utils, 'setReadOnly', require( '@stdlib/utils/define-read-only-property' ) ); +/** +* @name setReadWriteAccessor +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/define-read-write-accessor} +*/ +setReadOnly( utils, 'setReadWriteAccessor', require( '@stdlib/utils/define-read-write-accessor' ) ); + /** * @name dirname * @memberof utils From e23dbd2a1fd74f635995eae9ec0e38a1b1db9417 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 03:38:04 -0700 Subject: [PATCH 0023/1062] Update description --- .../@stdlib/utils/define-read-write-accessor/docs/repl.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/define-read-write-accessor/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-read-write-accessor/docs/repl.txt index 86bed72e2033..36ef8ce77d1c 100644 --- a/lib/node_modules/@stdlib/utils/define-read-write-accessor/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/define-read-write-accessor/docs/repl.txt @@ -1,6 +1,6 @@ {{alias}}( obj, prop, getter, setter ) - Defines a read-write accessor. + Defines a property having read-write accessors. Parameters ---------- From e38d268ec1d9e182c30ef103b3f0aa00ad7f43df Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 03:39:10 -0700 Subject: [PATCH 0024/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/s.js | 17 +++++++++++++++-- .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 +++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/s.js b/lib/node_modules/@stdlib/namespace/lib/namespace/s.js index e0777ad77d18..dd612eab4ef8 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/s.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/s.js @@ -172,7 +172,8 @@ ns.push({ 'value': require( '@stdlib/utils/define-read-only-property' ), 'type': 'Function', 'related': [ - '@stdlib/utils/define-read-only-accessor' + '@stdlib/utils/define-read-only-accessor', + '@stdlib/utils/define-read-write-accessor' ] }); @@ -182,7 +183,19 @@ ns.push({ 'value': require( '@stdlib/utils/define-read-only-accessor' ), 'type': 'Function', 'related': [ - '@stdlib/utils/define-read-only-property' + '@stdlib/utils/define-read-only-property', + '@stdlib/utils/define-read-write-accessor' + ] +}); + +ns.push({ + 'alias': 'setReadWriteAccessor', + 'path': '@stdlib/utils/define-read-write-accessor', + 'value': require( '@stdlib/utils/define-read-write-accessor' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/define-read-only-property', + '@stdlib/utils/define-read-only-accessor' ] }); diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 87ef5dfb8cea..c08c48660f9d 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1505,6 +1505,7 @@ var db = { "secondsInYear": "num = secondsInYear()\nnum = secondsInYear( 2016 )\nnum = secondsInYear( 2017 )\n", "setReadOnly": "obj = {};\nsetReadOnly( obj, 'foo', 'bar' );\nobj.foo = 'boop';\nobj\n", "setReadOnlyAccessor": "obj = {};\nfunction getter() { return 'bar'; };\nsetReadOnlyAccessor( obj, 'foo', getter );\nobj.foo\n", + "setReadWriteAccessor": "obj = {};\nname = 'bar';\nfunction getter() { return name + ' foo'; };\nfunction setter( v ) { name = v; };\nsetReadWriteAccessor( obj, 'foo', getter, setter );\nobj.foo\nobj.foo = 'beep';\nobj.foo\n", "SharedArrayBuffer": "\n// Assuming an environment supports SharedArrayBuffers...\nbuf = new SharedArrayBuffer( 5 )\n", "shift": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\nout = shift( arr )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\nout = shift( arr )\n\n// Array-like object:\narr = { 'length': 2, '0': 1.0, '1': 2.0 };\nout = shift( arr )\n", "shuffle": "data = [ 1, 2, 3 ];\nout = shuffle( data )\nout = shuffle( data, { 'copy': 'none' });\nbool = ( data === out )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 85fe5a81ea28..7b1ed23e128b 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1504,8 +1504,9 @@ var db = { "SECONDS_IN_WEEK": "\nSECONDS_IN_WEEK\n Number of seconds in a week.\n\n The value is a generalization and does **not** take into account\n inaccuracies due to daylight savings conventions, crossing timezones, or\n other complications with time and dates.\n\n Examples\n --------\n > var wks = 3.14;\n > var secs = wks * SECONDS_IN_WEEK\n 1899072\n\n", "secondsInMonth": "\nsecondsInMonth( [month[, year]] )\n Returns the number of seconds in a month.\n\n By default, the function returns the number of seconds in the current month\n of the current year (according to local time). To determine the number of\n seconds for a particular month and year, provide `month` and `year`\n arguments.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n The function's return value is a generalization and does **not** take into\n account inaccuracies due to daylight savings conventions, crossing\n timezones, or other complications with time and dates.\n\n Parameters\n ----------\n month: string|Date|integer (optional)\n Month.\n\n year: integer (optional)\n Year.\n\n Returns\n -------\n out: integer\n Seconds in a month.\n\n Examples\n --------\n > var num = secondsInMonth()\n \n > num = secondsInMonth( 2 )\n \n > num = secondsInMonth( 2, 2016 )\n 2505600\n > num = secondsInMonth( 2, 2017 )\n 2419200\n\n // Other ways to supply month:\n > num = secondsInMonth( 'feb', 2016 )\n 2505600\n > num = secondsInMonth( 'february', 2016 )\n 2505600\n\n See Also\n --------\n secondsInYear\n", "secondsInYear": "\nsecondsInYear( [value] )\n Returns the number of seconds in a year according to the Gregorian calendar.\n\n By default, the function returns the number of seconds in the current year\n (according to local time). To determine the number of seconds for a\n particular year, provide either a year or a `Date` object.\n\n The function's return value is a generalization and does **not** take into\n account inaccuracies due to daylight savings conventions, crossing\n timezones, or other complications with time and dates.\n\n Parameters\n ----------\n value: integer|Date (optional)\n Year or `Date` object.\n\n Returns\n -------\n out: integer\n Number of seconds in a year.\n\n Examples\n --------\n > var num = secondsInYear()\n \n > num = secondsInYear( 2016 )\n 31622400\n > num = secondsInYear( 2017 )\n 31536000\n\n See Also\n --------\n secondsInMonth\n", - "setReadOnly": "\nsetReadOnly( obj, prop, value )\n Defines a read-only property.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n setReadOnlyAccessor\n", - "setReadOnlyAccessor": "\nsetReadOnlyAccessor( obj, prop, getter )\n Defines a read-only accessor.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n getter: Function\n Get accessor.\n\n Examples\n --------\n > var obj = {};\n > function getter() { return 'bar'; };\n > setReadOnlyAccessor( obj, 'foo', getter );\n > obj.foo\n 'bar'\n\n See Also\n --------\n setReadOnly\n", + "setReadOnly": "\nsetReadOnly( obj, prop, value )\n Defines a read-only property.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n setReadOnlyAccessor, setReadWriteAccessor\n", + "setReadOnlyAccessor": "\nsetReadOnlyAccessor( obj, prop, getter )\n Defines a read-only accessor.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n getter: Function\n Get accessor.\n\n Examples\n --------\n > var obj = {};\n > function getter() { return 'bar'; };\n > setReadOnlyAccessor( obj, 'foo', getter );\n > obj.foo\n 'bar'\n\n See Also\n --------\n setReadOnly, setReadWriteAccessor\n", + "setReadWriteAccessor": "\nsetReadWriteAccessor( obj, prop, getter, setter )\n Defines a property having read-write accessors.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n getter: Function\n Get accessor.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var name = 'bar';\n > function getter() { return name + ' foo'; };\n > function setter( v ) { name = v; };\n > setReadWriteAccessor( obj, 'foo', getter, setter );\n > obj.foo\n 'bar foo'\n > obj.foo = 'beep';\n > obj.foo\n 'beep foo'\n\n See Also\n --------\n setReadOnly, setReadOnlyAccessor\n", "SharedArrayBuffer": "\nSharedArrayBuffer( size )\n Returns a shared array buffer having a specified number of bytes.\n\n A shared array buffer behaves similarly to a non-shared array buffer, except\n that a shared array buffer allows creating views of memory shared between\n threads.\n\n Buffer contents are initialized to 0.\n\n If an environment does not support shared array buffers, the function throws\n an error.\n\n Parameters\n ----------\n size: integer\n Number of bytes.\n\n Returns\n -------\n out: SharedArrayBuffer\n A shared array buffer.\n\n Examples\n --------\n // Assuming an environment supports SharedArrayBuffers...\n > var buf = new SharedArrayBuffer( 5 )\n \n\n\nSharedArrayBuffer.length\n Number of input arguments the constructor accepts.\n\n Examples\n --------\n > SharedArrayBuffer.length\n 1\n\n\nSharedArrayBuffer.prototype.byteLength\n Read-only property which returns the length (in bytes) of the array buffer.\n\n Examples\n --------\n // Assuming an environment supports SharedArrayBuffers...\n > var buf = new SharedArrayBuffer( 5 );\n > buf.byteLength\n 5\n\n\nSharedArrayBuffer.prototype.slice( [start[, end]] )\n Copies the bytes of a shared array buffer to a new shared array buffer.\n\n Parameters\n ----------\n start: integer (optional)\n Index at which to start copying buffer contents (inclusive). If\n negative, the index is relative to the end of the buffer.\n\n end: integer (optional)\n Index at which to stop copying buffer contents (exclusive). If negative,\n the index is relative to the end of the buffer.\n\n Returns\n -------\n out: SharedArrayBuffer\n A new shared array buffer whose contents have been copied from the\n calling shared array buffer.\n\n Examples\n --------\n // Assuming an environment supports SharedArrayBuffers...\n > var b1 = new SharedArrayBuffer( 10 );\n > var b2 = b1.slice( 2, 6 );\n > var bool = ( b1 === b2 )\n false\n > b2.byteLength\n 4\n\n See Also\n --------\n Buffer, ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "shift": "\nshift( collection )\n Removes and returns the first element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = shift( arr )\n [ [ 2.0, 3.0, 4.0, 5.0 ], 1.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = shift( arr )\n [ [ 2.0 ], 1.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = shift( arr )\n [ { 'length': 1, '0': 2.0 }, 1.0 ]\n\n See Also\n --------\n pop, push, unshift\n", "shuffle": "\nshuffle( arr[, options] )\n Shuffles elements of an array-like object.\n\n Parameters\n ----------\n arr: ArrayLike\n Array-like object to shuffle.\n\n options: Object (optional)\n Options.\n\n options.copy: string (optional)\n String indicating whether to return a copy (`deep`,`shallow` or `none`).\n Default: `'shallow'`.\n\n Returns\n -------\n out: ArrayLike\n Shuffled array-like object.\n\n Examples\n --------\n > var data = [ 1, 2, 3 ];\n > var out = shuffle( data )\n e.g., [ 3, 1, 2 ]\n > out = shuffle( data, { 'copy': 'none' });\n > var bool = ( data === out )\n true\n\n\nshuffle.factory( [options] )\n Returns a function to shuffle elements of array-like objects.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.seed: integer (optional)\n Integer-valued seed.\n\n options.copy: string (optional)\n String indicating whether to return a copy (`deep`,`shallow` or `none`).\n Default: `'shallow'`.\n\n Returns\n -------\n fcn: Function\n Shuffle function.\n\n Examples\n --------\n > var myshuffle = shuffle.factory();\n\n // Set a seed:\n > myshuffle = shuffle.factory({ 'seed': 239 });\n > var arr = [ 0, 1, 2, 3, 4 ];\n > var out = myshuffle( arr )\n e.g., [ 3, 4, 1, 0, 2 ]\n\n // Use a different copy strategy:\n > myshuffle = shuffle.factory({ 'copy': 'none', 'seed': 867 });\n\n // Created shuffle function mutates input array by default:\n > arr = [ 1, 2, 3, 4, 5, 6 ];\n > out = myshuffle( arr );\n > var bool = ( arr === out )\n true\n // Default option can be overridden:\n > arr = [ 1, 2, 3, 4 ];\n > out = myshuffle( arr, { 'copy': 'shallow' });\n > bool = ( arr === out )\n false\n\n See Also\n --------\n sample\n", From 60b1154f0dc8bda43d741e7775c26298d6330404 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 03:41:46 -0700 Subject: [PATCH 0025/1062] Use utility for defining a read-write accessor --- .../@stdlib/random/base/mt19937/lib/factory.js | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 551ef3dd0ca2..6f65fe7b6765 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -57,9 +57,9 @@ // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var hasOwnProp = require( '@stdlib/assert/has-own-property' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var isCollection = require( '@stdlib/assert/is-collection' ); @@ -436,12 +436,7 @@ function factory( options ) { setReadOnly( mt19937, 'NAME', 'mt19937' ); setReadOnlyAccessor( mt19937, 'seed', getSeed ); setReadOnlyAccessor( mt19937, 'seedLength', getSeedLength ); - defineProperty( mt19937, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); + setReadWriteAccessor( mt19937, 'state', getState, setState ); setReadOnlyAccessor( mt19937, 'stateLength', getStateLength ); setReadOnlyAccessor( mt19937, 'byteLength', getStateSize ); setReadOnly( mt19937, 'MIN', 1 ); @@ -451,12 +446,7 @@ function factory( options ) { setReadOnly( normalized, 'NAME', mt19937.NAME ); setReadOnlyAccessor( normalized, 'seed', getSeed ); setReadOnlyAccessor( normalized, 'seedLength', getSeedLength ); - defineProperty( normalized, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); + setReadWriteAccessor( normalized, 'state', getState, setState ); setReadOnlyAccessor( normalized, 'stateLength', getStateLength ); setReadOnlyAccessor( normalized, 'byteLength', getStateSize ); setReadOnly( normalized, 'MIN', 0.0 ); From 146cfce1858885f0f9c5a5f8e224944c6d2faa86 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 22:06:22 -0700 Subject: [PATCH 0026/1062] Add utility to define a write-only accessor --- .../define-write-only-accessor/README.md | 95 +++++++++++++++ .../benchmark/benchmark.js | 54 +++++++++ .../define-write-only-accessor/docs/repl.txt | 28 +++++ .../examples/index.js | 37 ++++++ .../define-write-only-accessor/lib/index.js | 48 ++++++++ .../define-write-only-accessor/lib/main.js | 58 ++++++++++ .../define-write-only-accessor/package.json | 69 +++++++++++ .../define-write-only-accessor/test/test.js | 109 ++++++++++++++++++ 8 files changed, 498 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/define-write-only-accessor/README.md create mode 100644 lib/node_modules/@stdlib/utils/define-write-only-accessor/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/define-write-only-accessor/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/define-write-only-accessor/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/define-write-only-accessor/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/define-write-only-accessor/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/define-write-only-accessor/package.json create mode 100644 lib/node_modules/@stdlib/utils/define-write-only-accessor/test/test.js diff --git a/lib/node_modules/@stdlib/utils/define-write-only-accessor/README.md b/lib/node_modules/@stdlib/utils/define-write-only-accessor/README.md new file mode 100644 index 000000000000..4bac0e7deeda --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-write-only-accessor/README.md @@ -0,0 +1,95 @@ + + +# Write-Only Accessor + +> [Define][@stdlib/utils/define-property] a **write-only** accessor. + +
+ +## Usage + +```javascript +var setWriteOnlyAccessor = require( '@stdlib/utils/define-write-only-accessor' ); +``` + +#### setWriteOnlyAccessor( obj, prop, setter ) + +[Defines][@stdlib/utils/define-property] a **write-only** accessor. + + + +```javascript +var obj = {}; +var val = ''; + +function setter( v ) { + val = v; +} + +setWriteOnlyAccessor( obj, 'foo', setter ); + +obj.foo = 'boop'; + +var bool = ( val === 'boop' ); +// returns true +``` + +
+ + + +
+ +## Examples + + + +```javascript +var setWriteOnlyAccessor = require( '@stdlib/utils/define-write-only-accessor' ); + +function Foo( secret ) { + if ( !(this instanceof Foo) ) { + return new Foo( secret ); + } + setWriteOnlyAccessor( this, 'secret', setter ); + return this; + + function setter( v ) { + secret = v; + } +} + +var foo = new Foo( 'beep' ); + +foo.secret = 'boop'; +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/define-write-only-accessor/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/define-write-only-accessor/benchmark/benchmark.js new file mode 100644 index 000000000000..e0e08d5a639f --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-write-only-accessor/benchmark/benchmark.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var setWriteOnlyAccessor = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var obj; + var val; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj = {}; + setWriteOnlyAccessor( obj, 'foo', setter ); + obj.foo = i; + if ( val !== i ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( val !== (i-1) ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function setter( v ) { + val = v; + } +}); diff --git a/lib/node_modules/@stdlib/utils/define-write-only-accessor/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-write-only-accessor/docs/repl.txt new file mode 100644 index 000000000000..e506019ae2b3 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-write-only-accessor/docs/repl.txt @@ -0,0 +1,28 @@ + +{{alias}}( obj, prop, setter ) + Defines a write-only accessor. + + Parameters + ---------- + obj: Object + Object on which to define the property. + + prop: string + Property name. + + setter: Function + Set accessor. + + Examples + -------- + > var obj = {}; + > var val = ''; + > function setter( v ) { val = v; }; + > {{alias}}( obj, 'foo', setter ); + > obj.foo = 'bar'; + > val + 'bar' + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/define-write-only-accessor/examples/index.js b/lib/node_modules/@stdlib/utils/define-write-only-accessor/examples/index.js new file mode 100644 index 000000000000..4e41c86d94e3 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-write-only-accessor/examples/index.js @@ -0,0 +1,37 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var setWriteOnlyAccessor = require( './../lib' ); + +function Foo( secret ) { + if ( !(this instanceof Foo) ) { + return new Foo( secret ); + } + setWriteOnlyAccessor( this, 'secret', setter ); + return this; + + function setter( v ) { + secret = v; + } +} + +var foo = new Foo( 'beep' ); + +foo.secret = 'boop'; diff --git a/lib/node_modules/@stdlib/utils/define-write-only-accessor/lib/index.js b/lib/node_modules/@stdlib/utils/define-write-only-accessor/lib/index.js new file mode 100644 index 000000000000..17492dd5d66e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-write-only-accessor/lib/index.js @@ -0,0 +1,48 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Define a write-only accessor. +* +* @module @stdlib/utils/define-write-only-accessor +* +* @example +* var setWriteOnlyAccessor = require( '@stdlib/utils/define-write-only-accessor' ); +* +* var obj = {}; +* var val = ''; +* +* function setter( v ) { +* val = v; +* } +* +* setWriteOnlyAccessor( obj, 'foo', setter ); +* +* obj.foo = 'beep'; +*/ + +// MODULES // + +var setWriteOnlyAccessor = require( './main.js' ); + + +// EXPORTS // + +module.exports = setWriteOnlyAccessor; diff --git a/lib/node_modules/@stdlib/utils/define-write-only-accessor/lib/main.js b/lib/node_modules/@stdlib/utils/define-write-only-accessor/lib/main.js new file mode 100644 index 000000000000..2211d69d911d --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-write-only-accessor/lib/main.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var defineProperty = require( '@stdlib/utils/define-property' ); + + +// MAIN // + +/** +* Defines a write-only accessor. +* +* @param {Object} obj - object on which to define the property +* @param {string} prop - property name +* @param {Function} setter - accessor +* +* @example +* var obj = {}; +* var val = ''; +* +* function setter( v ) { +* val = v; +* } +* +* setWriteOnlyAccessor( obj, 'foo', setter ); +* +* obj.foo = 'beep'; +*/ +function setWriteOnlyAccessor( obj, prop, setter ) { + defineProperty( obj, prop, { + 'configurable': false, + 'enumerable': true, + 'set': setter + }); +} + + +// EXPORTS // + +module.exports = setWriteOnlyAccessor; diff --git a/lib/node_modules/@stdlib/utils/define-write-only-accessor/package.json b/lib/node_modules/@stdlib/utils/define-write-only-accessor/package.json new file mode 100644 index 000000000000..3db4a55bacb7 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-write-only-accessor/package.json @@ -0,0 +1,69 @@ +{ + "name": "@stdlib/utils/define-write-only-accessor", + "version": "0.0.0", + "description": "Define a write-only accessor.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "property", + "define", + "prop", + "write-only", + "writable", + "configurable", + "accessor", + "set", + "setter" + ] +} diff --git a/lib/node_modules/@stdlib/utils/define-write-only-accessor/test/test.js b/lib/node_modules/@stdlib/utils/define-write-only-accessor/test/test.js new file mode 100644 index 000000000000..0234e52e926f --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-write-only-accessor/test/test.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var getKeys = require( '@stdlib/utils/keys' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var setWriteOnlyAccessor = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof setWriteOnlyAccessor, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function sets a property on a provided object', function test( t ) { + var obj = {}; + var val = ''; + + setWriteOnlyAccessor( obj, 'foo', setter ); + obj.foo = 'bar'; + + t.equal( val, 'bar', 'equals expected value' ); + t.end(); + + function setter( v ) { + val = v; + } +}); + +tape( 'the write-only property is not readable', function test( t ) { + var obj = {}; + var val = ''; + + setWriteOnlyAccessor( obj, 'foo', setter ); + t.equal( obj.foo, void 0, 'property cannot be get' ); + + t.equal( val, '', 'equals expected value' ); + t.end(); + + function setter(v ) { + val = v; + } +}); + +tape( 'the write-only property is not configurable', function test( t ) { + var obj = {}; + var val = ''; + + setWriteOnlyAccessor( obj, 'foo', setter ); + t.throws( foo, Error, 'property cannot be deleted' ); + t.throws( bar, Error, 'property cannot be reconfigured' ); + + t.equal( val, '', 'equals expected value' ); + t.end(); + + function setter( v ) { + val = v; + } + + function foo() { + delete obj.foo; + } + + function bar() { + defineProperty( obj, 'foo', { + 'value': 'boop', + 'writable': true, + 'configurable': false, + 'enumerable': true + }); + } +}); + +tape( 'the write-only property is enumerable', function test( t ) { + var obj = {}; + var val = ''; + + setWriteOnlyAccessor( obj, 'foo', setter ); + t.equal( getKeys( obj )[ 0 ], 'foo', 'property is enumerable' ); + + t.equal( val, '', 'equals expected value' ); + t.end(); + + function setter( v ) { + val = v; + } +}); From e706c0d16c77003b09a9c0c5cf581656d97d410c Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 22:07:13 -0700 Subject: [PATCH 0027/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 18b6688694de..e284104cc11d 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -324,6 +324,15 @@ setReadOnly( utils, 'setReadOnly', require( '@stdlib/utils/define-read-only-prop */ setReadOnly( utils, 'setReadWriteAccessor', require( '@stdlib/utils/define-read-write-accessor' ) ); +/** +* @name setWriteOnlyAccessor +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/define-write-only-accessor} +*/ +setReadOnly( utils, 'setWriteOnlyAccessor', require( '@stdlib/utils/define-write-only-accessor' ) ); + /** * @name dirname * @memberof utils From 111afd60c621fc6e61036808febdf9b8a115eb6e Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 22:07:30 -0700 Subject: [PATCH 0028/1062] Add empty line --- .../@stdlib/utils/define-read-only-property/test/test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/node_modules/@stdlib/utils/define-read-only-property/test/test.js b/lib/node_modules/@stdlib/utils/define-read-only-property/test/test.js index 36978474bd96..40a129551651 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-property/test/test.js +++ b/lib/node_modules/@stdlib/utils/define-read-only-property/test/test.js @@ -62,6 +62,7 @@ tape( 'the read-only property is not configurable', function test( t ) { function foo() { delete obj.foo; } + function bar() { defineProperty( obj, 'foo', { 'value': 'boop', From efc2b0e39442f742addecdfce47ace480af55fd3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 22:09:50 -0700 Subject: [PATCH 0029/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/s.js | 21 ++++++++++++++++--- .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 7 ++++--- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/s.js b/lib/node_modules/@stdlib/namespace/lib/namespace/s.js index dd612eab4ef8..1e31779b14d6 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/s.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/s.js @@ -173,7 +173,8 @@ ns.push({ 'type': 'Function', 'related': [ '@stdlib/utils/define-read-only-accessor', - '@stdlib/utils/define-read-write-accessor' + '@stdlib/utils/define-read-write-accessor', + '@stdlib/utils/define-write-only-accessor' ] }); @@ -184,7 +185,8 @@ ns.push({ 'type': 'Function', 'related': [ '@stdlib/utils/define-read-only-property', - '@stdlib/utils/define-read-write-accessor' + '@stdlib/utils/define-read-write-accessor', + '@stdlib/utils/define-write-only-accessor' ] }); @@ -195,7 +197,20 @@ ns.push({ 'type': 'Function', 'related': [ '@stdlib/utils/define-read-only-property', - '@stdlib/utils/define-read-only-accessor' + '@stdlib/utils/define-read-only-accessor', + '@stdlib/utils/define-write-only-accessor' + ] +}); + +ns.push({ + 'alias': 'setWriteOnlyAccessor', + 'path': '@stdlib/utils/define-write-only-accessor', + 'value': require( '@stdlib/utils/define-write-only-accessor' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/define-read-only-property', + '@stdlib/utils/define-read-only-accessor', + '@stdlib/utils/define-read-write-accessor' ] }); diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index c08c48660f9d..2703d66e975e 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1506,6 +1506,7 @@ var db = { "setReadOnly": "obj = {};\nsetReadOnly( obj, 'foo', 'bar' );\nobj.foo = 'boop';\nobj\n", "setReadOnlyAccessor": "obj = {};\nfunction getter() { return 'bar'; };\nsetReadOnlyAccessor( obj, 'foo', getter );\nobj.foo\n", "setReadWriteAccessor": "obj = {};\nname = 'bar';\nfunction getter() { return name + ' foo'; };\nfunction setter( v ) { name = v; };\nsetReadWriteAccessor( obj, 'foo', getter, setter );\nobj.foo\nobj.foo = 'beep';\nobj.foo\n", + "setWriteOnlyAccessor": "obj = {};\nval = '';\nfunction setter( v ) { val = v; };\nsetWriteOnlyAccessor( obj, 'foo', setter );\nobj.foo = 'bar';\nval\n", "SharedArrayBuffer": "\n// Assuming an environment supports SharedArrayBuffers...\nbuf = new SharedArrayBuffer( 5 )\n", "shift": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\nout = shift( arr )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\nout = shift( arr )\n\n// Array-like object:\narr = { 'length': 2, '0': 1.0, '1': 2.0 };\nout = shift( arr )\n", "shuffle": "data = [ 1, 2, 3 ];\nout = shuffle( data )\nout = shuffle( data, { 'copy': 'none' });\nbool = ( data === out )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 7b1ed23e128b..746098c83692 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1504,9 +1504,10 @@ var db = { "SECONDS_IN_WEEK": "\nSECONDS_IN_WEEK\n Number of seconds in a week.\n\n The value is a generalization and does **not** take into account\n inaccuracies due to daylight savings conventions, crossing timezones, or\n other complications with time and dates.\n\n Examples\n --------\n > var wks = 3.14;\n > var secs = wks * SECONDS_IN_WEEK\n 1899072\n\n", "secondsInMonth": "\nsecondsInMonth( [month[, year]] )\n Returns the number of seconds in a month.\n\n By default, the function returns the number of seconds in the current month\n of the current year (according to local time). To determine the number of\n seconds for a particular month and year, provide `month` and `year`\n arguments.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n The function's return value is a generalization and does **not** take into\n account inaccuracies due to daylight savings conventions, crossing\n timezones, or other complications with time and dates.\n\n Parameters\n ----------\n month: string|Date|integer (optional)\n Month.\n\n year: integer (optional)\n Year.\n\n Returns\n -------\n out: integer\n Seconds in a month.\n\n Examples\n --------\n > var num = secondsInMonth()\n \n > num = secondsInMonth( 2 )\n \n > num = secondsInMonth( 2, 2016 )\n 2505600\n > num = secondsInMonth( 2, 2017 )\n 2419200\n\n // Other ways to supply month:\n > num = secondsInMonth( 'feb', 2016 )\n 2505600\n > num = secondsInMonth( 'february', 2016 )\n 2505600\n\n See Also\n --------\n secondsInYear\n", "secondsInYear": "\nsecondsInYear( [value] )\n Returns the number of seconds in a year according to the Gregorian calendar.\n\n By default, the function returns the number of seconds in the current year\n (according to local time). To determine the number of seconds for a\n particular year, provide either a year or a `Date` object.\n\n The function's return value is a generalization and does **not** take into\n account inaccuracies due to daylight savings conventions, crossing\n timezones, or other complications with time and dates.\n\n Parameters\n ----------\n value: integer|Date (optional)\n Year or `Date` object.\n\n Returns\n -------\n out: integer\n Number of seconds in a year.\n\n Examples\n --------\n > var num = secondsInYear()\n \n > num = secondsInYear( 2016 )\n 31622400\n > num = secondsInYear( 2017 )\n 31536000\n\n See Also\n --------\n secondsInMonth\n", - "setReadOnly": "\nsetReadOnly( obj, prop, value )\n Defines a read-only property.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n setReadOnlyAccessor, setReadWriteAccessor\n", - "setReadOnlyAccessor": "\nsetReadOnlyAccessor( obj, prop, getter )\n Defines a read-only accessor.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n getter: Function\n Get accessor.\n\n Examples\n --------\n > var obj = {};\n > function getter() { return 'bar'; };\n > setReadOnlyAccessor( obj, 'foo', getter );\n > obj.foo\n 'bar'\n\n See Also\n --------\n setReadOnly, setReadWriteAccessor\n", - "setReadWriteAccessor": "\nsetReadWriteAccessor( obj, prop, getter, setter )\n Defines a property having read-write accessors.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n getter: Function\n Get accessor.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var name = 'bar';\n > function getter() { return name + ' foo'; };\n > function setter( v ) { name = v; };\n > setReadWriteAccessor( obj, 'foo', getter, setter );\n > obj.foo\n 'bar foo'\n > obj.foo = 'beep';\n > obj.foo\n 'beep foo'\n\n See Also\n --------\n setReadOnly, setReadOnlyAccessor\n", + "setReadOnly": "\nsetReadOnly( obj, prop, value )\n Defines a read-only property.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n setReadOnlyAccessor, setReadWriteAccessor, setWriteOnlyAccessor\n", + "setReadOnlyAccessor": "\nsetReadOnlyAccessor( obj, prop, getter )\n Defines a read-only accessor.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n getter: Function\n Get accessor.\n\n Examples\n --------\n > var obj = {};\n > function getter() { return 'bar'; };\n > setReadOnlyAccessor( obj, 'foo', getter );\n > obj.foo\n 'bar'\n\n See Also\n --------\n setReadOnly, setReadWriteAccessor, setWriteOnlyAccessor\n", + "setReadWriteAccessor": "\nsetReadWriteAccessor( obj, prop, getter, setter )\n Defines a property having read-write accessors.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n getter: Function\n Get accessor.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var name = 'bar';\n > function getter() { return name + ' foo'; };\n > function setter( v ) { name = v; };\n > setReadWriteAccessor( obj, 'foo', getter, setter );\n > obj.foo\n 'bar foo'\n > obj.foo = 'beep';\n > obj.foo\n 'beep foo'\n\n See Also\n --------\n setReadOnly, setReadOnlyAccessor, setWriteOnlyAccessor\n", + "setWriteOnlyAccessor": "\nsetWriteOnlyAccessor( obj, prop, setter )\n Defines a write-only accessor.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var val = '';\n > function setter( v ) { val = v; };\n > setWriteOnlyAccessor( obj, 'foo', setter );\n > obj.foo = 'bar';\n > val\n 'bar'\n\n See Also\n --------\n setReadOnly, setReadOnlyAccessor, setReadWriteAccessor\n", "SharedArrayBuffer": "\nSharedArrayBuffer( size )\n Returns a shared array buffer having a specified number of bytes.\n\n A shared array buffer behaves similarly to a non-shared array buffer, except\n that a shared array buffer allows creating views of memory shared between\n threads.\n\n Buffer contents are initialized to 0.\n\n If an environment does not support shared array buffers, the function throws\n an error.\n\n Parameters\n ----------\n size: integer\n Number of bytes.\n\n Returns\n -------\n out: SharedArrayBuffer\n A shared array buffer.\n\n Examples\n --------\n // Assuming an environment supports SharedArrayBuffers...\n > var buf = new SharedArrayBuffer( 5 )\n \n\n\nSharedArrayBuffer.length\n Number of input arguments the constructor accepts.\n\n Examples\n --------\n > SharedArrayBuffer.length\n 1\n\n\nSharedArrayBuffer.prototype.byteLength\n Read-only property which returns the length (in bytes) of the array buffer.\n\n Examples\n --------\n // Assuming an environment supports SharedArrayBuffers...\n > var buf = new SharedArrayBuffer( 5 );\n > buf.byteLength\n 5\n\n\nSharedArrayBuffer.prototype.slice( [start[, end]] )\n Copies the bytes of a shared array buffer to a new shared array buffer.\n\n Parameters\n ----------\n start: integer (optional)\n Index at which to start copying buffer contents (inclusive). If\n negative, the index is relative to the end of the buffer.\n\n end: integer (optional)\n Index at which to stop copying buffer contents (exclusive). If negative,\n the index is relative to the end of the buffer.\n\n Returns\n -------\n out: SharedArrayBuffer\n A new shared array buffer whose contents have been copied from the\n calling shared array buffer.\n\n Examples\n --------\n // Assuming an environment supports SharedArrayBuffers...\n > var b1 = new SharedArrayBuffer( 10 );\n > var b2 = b1.slice( 2, 6 );\n > var bool = ( b1 === b2 )\n false\n > b2.byteLength\n 4\n\n See Also\n --------\n Buffer, ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "shift": "\nshift( collection )\n Removes and returns the first element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = shift( arr )\n [ [ 2.0, 3.0, 4.0, 5.0 ], 1.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = shift( arr )\n [ [ 2.0 ], 1.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = shift( arr )\n [ { 'length': 1, '0': 2.0 }, 1.0 ]\n\n See Also\n --------\n pop, push, unshift\n", "shuffle": "\nshuffle( arr[, options] )\n Shuffles elements of an array-like object.\n\n Parameters\n ----------\n arr: ArrayLike\n Array-like object to shuffle.\n\n options: Object (optional)\n Options.\n\n options.copy: string (optional)\n String indicating whether to return a copy (`deep`,`shallow` or `none`).\n Default: `'shallow'`.\n\n Returns\n -------\n out: ArrayLike\n Shuffled array-like object.\n\n Examples\n --------\n > var data = [ 1, 2, 3 ];\n > var out = shuffle( data )\n e.g., [ 3, 1, 2 ]\n > out = shuffle( data, { 'copy': 'none' });\n > var bool = ( data === out )\n true\n\n\nshuffle.factory( [options] )\n Returns a function to shuffle elements of array-like objects.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.seed: integer (optional)\n Integer-valued seed.\n\n options.copy: string (optional)\n String indicating whether to return a copy (`deep`,`shallow` or `none`).\n Default: `'shallow'`.\n\n Returns\n -------\n fcn: Function\n Shuffle function.\n\n Examples\n --------\n > var myshuffle = shuffle.factory();\n\n // Set a seed:\n > myshuffle = shuffle.factory({ 'seed': 239 });\n > var arr = [ 0, 1, 2, 3, 4 ];\n > var out = myshuffle( arr )\n e.g., [ 3, 4, 1, 0, 2 ]\n\n // Use a different copy strategy:\n > myshuffle = shuffle.factory({ 'copy': 'none', 'seed': 867 });\n\n // Created shuffle function mutates input array by default:\n > arr = [ 1, 2, 3, 4, 5, 6 ];\n > out = myshuffle( arr );\n > var bool = ( arr === out )\n true\n // Default option can be overridden:\n > arr = [ 1, 2, 3, 4 ];\n > out = myshuffle( arr, { 'copy': 'shallow' });\n > bool = ( arr === out )\n false\n\n See Also\n --------\n sample\n", From ab0e754174cbf5a968525e9440dd8fdc7a603b27 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 23:08:31 -0700 Subject: [PATCH 0030/1062] Rename package --- .../@stdlib/namespace/lib/namespace/g.js | 10 ---------- .../@stdlib/namespace/lib/namespace/p.js | 10 ++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 2 +- lib/node_modules/@stdlib/repl/help/lib/db.js | 2 +- lib/node_modules/@stdlib/utils/lib/index.js | 18 +++++++++--------- .../README.md | 4 ++-- .../benchmark/benchmark.js | 0 .../docs/repl.txt | 0 .../examples/index.js | 0 .../lib/builtin.js | 0 .../lib/has_builtin.js | 0 .../lib/index.js | 4 ++-- .../lib/polyfill.js | 0 .../package.json | 2 +- .../test/test.builtin.js | 0 .../test/test.js | 0 .../test/test.polyfill.js | 0 17 files changed, 26 insertions(+), 26 deletions(-) rename lib/node_modules/@stdlib/utils/{own-property-names => property-names}/README.md (93%) rename lib/node_modules/@stdlib/utils/{own-property-names => property-names}/benchmark/benchmark.js (100%) rename lib/node_modules/@stdlib/utils/{own-property-names => property-names}/docs/repl.txt (100%) rename lib/node_modules/@stdlib/utils/{own-property-names => property-names}/examples/index.js (100%) rename lib/node_modules/@stdlib/utils/{own-property-names => property-names}/lib/builtin.js (100%) rename lib/node_modules/@stdlib/utils/{own-property-names => property-names}/lib/has_builtin.js (100%) rename lib/node_modules/@stdlib/utils/{own-property-names => property-names}/lib/index.js (90%) rename lib/node_modules/@stdlib/utils/{own-property-names => property-names}/lib/polyfill.js (100%) rename lib/node_modules/@stdlib/utils/{own-property-names => property-names}/package.json (96%) rename lib/node_modules/@stdlib/utils/{own-property-names => property-names}/test/test.builtin.js (100%) rename lib/node_modules/@stdlib/utils/{own-property-names => property-names}/test/test.js (100%) rename lib/node_modules/@stdlib/utils/{own-property-names => property-names}/test/test.polyfill.js (100%) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/g.js b/lib/node_modules/@stdlib/namespace/lib/namespace/g.js index cb04cb9e3912..1f27b0464dec 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/g.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/g.js @@ -85,16 +85,6 @@ ns.push({ 'related': [] }); -ns.push({ - 'alias': 'getOwnPropertyNames', - 'path': '@stdlib/utils/own-property-names', - 'value': require( '@stdlib/utils/own-property-names' ), - 'type': 'Function', - 'related': [ - '@stdlib/utils/keys' - ] -}); - ns.push({ 'alias': 'getPrototypeOf', 'path': '@stdlib/utils/get-prototype-of', diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js index abf8456372dc..a9d09c022475 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js @@ -275,6 +275,16 @@ ns.push({ ] }); +ns.push({ + 'alias': 'propertyNames', + 'path': '@stdlib/utils/property-names', + 'value': require( '@stdlib/utils/property-names' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/keys' + ] +}); + ns.push({ 'alias': 'Proxy', 'path': '@stdlib/proxy/ctor', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 2703d66e975e..09aba78746e5 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -946,7 +946,6 @@ var db = { "geteuid": "uid = geteuid()\n", "getgid": "gid = getgid()\n", "getGlobal": "g = getGlobal()\n", - "getOwnPropertyNames": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = getOwnPropertyNames( obj )\n", "getPrototypeOf": "proto = getPrototypeOf( {} )\n", "getuid": "uid = getuid()\n", "GLAISHER": "GLAISHER\n", @@ -1384,6 +1383,7 @@ var db = { "pluck": "arr = [\n { 'a': 1, 'b': 2 },\n { 'a': 0.5, 'b': 3 }\n];\nout = pluck( arr, 'a' )\narr = [\n { 'a': 1, 'b': 2 },\n { 'a': 0.5, 'b': 3 }\n];\nout = pluck( arr, 'a', { 'copy': false } )\nbool = ( arr[ 0 ] === out[ 0 ] )\n", "pop": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\nout = pop( arr )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\nout = pop( arr )\n\n// Array-like object:\narr = { 'length': 2, '0': 1.0, '1': 2.0 };\nout = pop( arr )\n", "prepend": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\narr = prepend( arr, [ 6.0, 7.0 ] )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\narr = prepend( arr, [ 3.0, 4.0 ] )\n\n// Array-like object:\narr = { 'length': 1, '0': 1.0 };\narr = prepend( arr, [ 2.0, 3.0 ] )\n", + "propertyNames": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = propertyNames( obj )\n", "Proxy": "function get( obj, prop ) { return obj[ prop ] * 2.0 };\nh = { 'get': get };\np = Proxy( {}, h );\np.a = 3.14;\np.a\n", "push": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\narr = push( arr, 6.0, 7.0 )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\narr = push( arr, 3.0, 4.0 )\n\n// Array-like object:\narr = { 'length': 0 };\narr = push( arr, 1.0, 2.0 )\n", "quarterOfYear": "q = quarterOfYear( new Date() )\nq = quarterOfYear( 4 )\nq = quarterOfYear( 'June' )\n\n// Other ways to supply month:\nq = quarterOfYear( 'April' )\nq = quarterOfYear( 'apr' )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 746098c83692..f8eca8f364ae 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -946,7 +946,6 @@ var db = { "geteuid": "\ngeteuid()\n Returns the effective numeric user identity of the calling process.\n\n The function only returns an effective user identity on POSIX platforms. For\n all other platforms (e.g., Windows and Android), the function returns\n `null`.\n\n Returns\n -------\n id: integer|null\n Effective numeric user identity.\n\n Examples\n --------\n > var uid = geteuid()\n\n See Also\n --------\n getegid, getgid, getuid\n", "getgid": "\ngetgid()\n Returns the numeric group identity of the calling process.\n\n The function only returns a group identity on POSIX platforms. For all other\n platforms (e.g., Windows and Android), the function returns `null`.\n\n Returns\n -------\n id: integer|null\n Numeric group identity.\n\n Examples\n --------\n > var gid = getgid()\n\n See Also\n --------\n getegid, geteuid, getuid\n", "getGlobal": "\ngetGlobal( [codegen] )\n Returns the global object.\n\n Parameters\n ----------\n codegen: boolean (optional)\n Boolean indicating whether to use code generation to resolve the global\n object. Code generation is the *most* reliable means for resolving the\n global object; however, using code generation may violate content\n security policies (CSPs). Default: false.\n\n Returns\n -------\n global: Object\n Global object.\n\n Examples\n --------\n > var g = getGlobal()\n {...}\n\n", - "getOwnPropertyNames": "\ngetOwnPropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = getOwnPropertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys\n", "getPrototypeOf": "\ngetPrototypeOf( value )\n Returns the prototype of a provided object.\n\n In contrast to the native `Object.getPrototypeOf`, this function does not\n throw when provided `null` or `undefined`. Instead, similar to when provided\n any value with *no* inherited properties, the function returns `null`.\n\n Value arguments other than `null` or `undefined` are coerced to objects.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n out: Object|null\n Prototype.\n\n Examples\n --------\n > var proto = getPrototypeOf( {} )\n {}\n\n See Also\n --------\n hasPrototype\n", "getuid": "\ngetuid()\n Returns the numeric user identity of the calling process.\n\n The function only returns a user identity on POSIX platforms. For all other\n platforms (e.g., Windows and Android), the function returns `null`.\n\n Returns\n -------\n id: integer|null\n Numeric user identity.\n\n Examples\n --------\n > var uid = getuid()\n\n See Also\n --------\n getegid, geteuid, getgid\n", "GLAISHER": "\nGLAISHER\n Glaisher-Kinkelin constant.\n\n Examples\n --------\n > GLAISHER\n 1.2824271291006226\n\n", @@ -1385,6 +1384,7 @@ var db = { "pluck": "\npluck( arr, prop[, options] )\n Extracts a property value from each element of an object array.\n\n The function skips `null` and `undefined` array elements.\n\n Extracted values are not cloned.\n\n Parameters\n ----------\n arr: Array\n Source array.\n\n prop: string\n Property to access.\n\n options: Object (optional)\n Options.\n\n options.copy: boolean (optional)\n Boolean indicating whether to return a new data structure. To mutate the\n input data structure (e.g., when input values can be discarded or when\n optimizing memory usage), set the `copy` option to `false`. Default:\n true.\n\n Returns\n -------\n out: Array\n Destination array.\n\n Examples\n --------\n > var arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > var out = pluck( arr, 'a' )\n [ 1, 0.5 ]\n\n > arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > out = pluck( arr, 'a', { 'copy': false } )\n [ 1, 0.5 ]\n > var bool = ( arr[ 0 ] === out[ 0 ] )\n true\n\n See Also\n --------\n deepPluck, pick\n", "pop": "\npop( collection )\n Removes and returns the last element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = pop( arr )\n [ [ 1.0, 2.0, 3.0, 4.0 ], 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = pop( arr )\n [ [ 1.0 ], 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = pop( arr )\n [ { 'length': 1, '0': 1.0 }, 2.0 ]\n\n See Also\n --------\n push, shift, unshift\n", "prepend": "\nprepend( collection1, collection2 )\n Adds the elements of one collection to the beginning of another collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection1: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n collection2: Array|TypedArray|Object\n A collection containing the elements to add. If the collection is an\n `Object`, the collection should be array-like.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = prepend( arr, [ 6.0, 7.0 ] )\n [ 6.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = prepend( arr, [ 3.0, 4.0 ] )\n [ 3.0, 4.0, 1.0, 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 1, '0': 1.0 };\n > arr = prepend( arr, [ 2.0, 3.0 ] )\n { 'length': 3, '0': 2.0, '1': 3.0, '2': 1.0 }\n\n See Also\n --------\n append, unshift\n", + "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys\n", "Proxy": "\nProxy( target, handlers )\n Returns a proxy object implementing custom behavior for specified object\n operations.\n\n The following \"traps\" are supported:\n\n - getPrototypeOf( target )\n Trap for `Object.getPrototypeOf()`. Can be used to intercept the\n `instanceof` operator. The method must return an object or `null`.\n\n - setPrototypeOf( target, prototype )\n Trap for `Object.setPrototypeOf()`. The method must return a boolean\n indicating if prototype successfully set.\n\n - isExtensible( target )\n Trap for `Object.isExtensible()`. The method must return a boolean.\n\n - preventExtensions( target )\n Trap for `Object.preventExtensions()`. The method must return a boolean.\n\n - getOwnPropertyDescriptor( target, property )\n Trap for `Object.getOwnPropertyDescriptor()`. The method must return an\n object or `undefined`.\n\n - defineProperty( target, property, descriptor )\n Trap for `Object.defineProperty()`. The method must return a boolean\n indicating whether the operation succeeded.\n\n - has( target, property )\n Trap for the `in` operator. The method must return a boolean.\n\n - get( target, property, receiver )\n Trap for retrieving property values. The method can return any value.\n\n - set( target, property, value, receiver )\n Trap for setting property values. The method should return a boolean\n indicating whether assignment succeeded.\n\n - deleteProperty( target, property )\n Trap for the `delete` operator. The method must return a boolean\n indicating whether operation succeeded.\n\n - ownKeys( target )\n Trap for `Object.keys`, `Object.getOwnPropertyNames()`, and\n `Object.getOwnPropertySymbols()`. The method must return an enumerable\n object.\n\n - apply( target, thisArg, argumentsList )\n Trap for a function call. The method can return any value.\n\n - construct( target, argumentsList, newTarget )\n Trap for the `new` operator. The method must return an object.\n\n All traps are optional. If a trap is not defined, the default behavior is to\n forward the operation to the target.\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Proxy object.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.a = 3.14;\n > p.a\n 6.28\n\n\nProxy.revocable( target, handlers )\n Returns a revocable proxy object\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Revocable proxy object.\n\n p.proxy: Object\n Proxy object.\n\n p.revoke: Function\n Invalidates a proxy, rendering a proxy object unusable.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.proxy.a = 3.14;\n > p.proxy.a\n 6.28\n > p.revoke();\n\n", "push": "\npush( collection, ...items )\n Adds one or more elements to the end of a collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n items: ...any\n Items to add.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = push( arr, 6.0, 7.0 )\n [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = push( arr, 3.0, 4.0 )\n [ 1.0, 2.0, 3.0, 4.0 ]\n\n // Array-like object:\n > arr = { 'length': 0 };\n > arr = push( arr, 1.0, 2.0 )\n { 'length': 2, '0': 1.0, '1': 2.0 }\n\n See Also\n --------\n pop, shift, unshift\n", "quarterOfYear": "\nquarterOfYear( [month] )\n Returns the quarter of the year.\n\n By default, the function returns the quarter of the year for the current\n month in the current year (according to local time). To determine the\n quarter for a particular month, provide either a month or a `Date`\n object.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n Parameters\n ----------\n month: integer|string|Date (optional)\n Month (or `Date`).\n\n Returns\n -------\n out: integer\n Quarter of the year.\n\n Examples\n --------\n > var q = quarterOfYear( new Date() )\n \n > q = quarterOfYear( 4 )\n 2\n > q = quarterOfYear( 'June' )\n 2\n\n // Other ways to supply month:\n > q = quarterOfYear( 'April' )\n 2\n > q = quarterOfYear( 'apr' )\n 2\n\n See Also\n --------\n dayOfYear\n", diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index e284104cc11d..e999c9c66dbd 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1044,15 +1044,6 @@ setReadOnly( utils, 'omitBy', require( '@stdlib/utils/omit-by' ) ); */ setReadOnly( utils, 'openURL', require( '@stdlib/utils/open-url' ) ); -/** -* @name getOwnPropertyNames -* @memberof utils -* @readonly -* @type {Function} -* @see {@link module:@stdlib/utils/own-property-names} -*/ -setReadOnly( utils, 'getOwnPropertyNames', require( '@stdlib/utils/own-property-names' ) ); - /** * @name papply * @memberof utils @@ -1134,6 +1125,15 @@ setReadOnly( utils, 'pop', require( '@stdlib/utils/pop' ) ); */ setReadOnly( utils, 'prepend', require( '@stdlib/utils/prepend' ) ); +/** +* @name propertyNames +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/property-names} +*/ +setReadOnly( utils, 'propertyNames', require( '@stdlib/utils/property-names' ) ); + /** * @name push * @memberof utils diff --git a/lib/node_modules/@stdlib/utils/own-property-names/README.md b/lib/node_modules/@stdlib/utils/property-names/README.md similarity index 93% rename from lib/node_modules/@stdlib/utils/own-property-names/README.md rename to lib/node_modules/@stdlib/utils/property-names/README.md index 3cca738f2d64..c2ef06498c60 100644 --- a/lib/node_modules/@stdlib/utils/own-property-names/README.md +++ b/lib/node_modules/@stdlib/utils/property-names/README.md @@ -27,7 +27,7 @@ limitations under the License. ## Usage ```javascript -var getOwnPropertyNames = require( '@stdlib/utils/own-property-names' ); +var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); ``` #### getOwnPropertyNames( obj ) @@ -67,7 +67,7 @@ var keys = getOwnPropertyNames( obj ); ```javascript var defineProperty = require( '@stdlib/utils/define-property' ); -var getOwnPropertyNames = require( '@stdlib/utils/own-property-names' ); +var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); function Foo() { this.beep = 'boop'; diff --git a/lib/node_modules/@stdlib/utils/own-property-names/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/property-names/benchmark/benchmark.js similarity index 100% rename from lib/node_modules/@stdlib/utils/own-property-names/benchmark/benchmark.js rename to lib/node_modules/@stdlib/utils/property-names/benchmark/benchmark.js diff --git a/lib/node_modules/@stdlib/utils/own-property-names/docs/repl.txt b/lib/node_modules/@stdlib/utils/property-names/docs/repl.txt similarity index 100% rename from lib/node_modules/@stdlib/utils/own-property-names/docs/repl.txt rename to lib/node_modules/@stdlib/utils/property-names/docs/repl.txt diff --git a/lib/node_modules/@stdlib/utils/own-property-names/examples/index.js b/lib/node_modules/@stdlib/utils/property-names/examples/index.js similarity index 100% rename from lib/node_modules/@stdlib/utils/own-property-names/examples/index.js rename to lib/node_modules/@stdlib/utils/property-names/examples/index.js diff --git a/lib/node_modules/@stdlib/utils/own-property-names/lib/builtin.js b/lib/node_modules/@stdlib/utils/property-names/lib/builtin.js similarity index 100% rename from lib/node_modules/@stdlib/utils/own-property-names/lib/builtin.js rename to lib/node_modules/@stdlib/utils/property-names/lib/builtin.js diff --git a/lib/node_modules/@stdlib/utils/own-property-names/lib/has_builtin.js b/lib/node_modules/@stdlib/utils/property-names/lib/has_builtin.js similarity index 100% rename from lib/node_modules/@stdlib/utils/own-property-names/lib/has_builtin.js rename to lib/node_modules/@stdlib/utils/property-names/lib/has_builtin.js diff --git a/lib/node_modules/@stdlib/utils/own-property-names/lib/index.js b/lib/node_modules/@stdlib/utils/property-names/lib/index.js similarity index 90% rename from lib/node_modules/@stdlib/utils/own-property-names/lib/index.js rename to lib/node_modules/@stdlib/utils/property-names/lib/index.js index 90dfb6f086c4..45e6765ff753 100644 --- a/lib/node_modules/@stdlib/utils/own-property-names/lib/index.js +++ b/lib/node_modules/@stdlib/utils/property-names/lib/index.js @@ -21,10 +21,10 @@ /** * Return an array of an object's own enumerable and non-enumerable property names. * -* @module @stdlib/utils/own-property-names +* @module @stdlib/utils/property-names * * @example -* var getOwnPropertyNames = require( '@stdlib/utils/own-property-names' ); +* var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); * * var keys = getOwnPropertyNames({ * 'foo': 'bar', diff --git a/lib/node_modules/@stdlib/utils/own-property-names/lib/polyfill.js b/lib/node_modules/@stdlib/utils/property-names/lib/polyfill.js similarity index 100% rename from lib/node_modules/@stdlib/utils/own-property-names/lib/polyfill.js rename to lib/node_modules/@stdlib/utils/property-names/lib/polyfill.js diff --git a/lib/node_modules/@stdlib/utils/own-property-names/package.json b/lib/node_modules/@stdlib/utils/property-names/package.json similarity index 96% rename from lib/node_modules/@stdlib/utils/own-property-names/package.json rename to lib/node_modules/@stdlib/utils/property-names/package.json index b0ee522b21bb..1ec6a682907c 100644 --- a/lib/node_modules/@stdlib/utils/own-property-names/package.json +++ b/lib/node_modules/@stdlib/utils/property-names/package.json @@ -1,5 +1,5 @@ { - "name": "@stdlib/utils/own-property-names", + "name": "@stdlib/utils/property-names", "version": "0.0.0", "description": "Return an array of an object's own enumerable and non-enumerable property names.", "license": "Apache-2.0", diff --git a/lib/node_modules/@stdlib/utils/own-property-names/test/test.builtin.js b/lib/node_modules/@stdlib/utils/property-names/test/test.builtin.js similarity index 100% rename from lib/node_modules/@stdlib/utils/own-property-names/test/test.builtin.js rename to lib/node_modules/@stdlib/utils/property-names/test/test.builtin.js diff --git a/lib/node_modules/@stdlib/utils/own-property-names/test/test.js b/lib/node_modules/@stdlib/utils/property-names/test/test.js similarity index 100% rename from lib/node_modules/@stdlib/utils/own-property-names/test/test.js rename to lib/node_modules/@stdlib/utils/property-names/test/test.js diff --git a/lib/node_modules/@stdlib/utils/own-property-names/test/test.polyfill.js b/lib/node_modules/@stdlib/utils/property-names/test/test.polyfill.js similarity index 100% rename from lib/node_modules/@stdlib/utils/own-property-names/test/test.polyfill.js rename to lib/node_modules/@stdlib/utils/property-names/test/test.polyfill.js From c0f052005fac7e423544e6300e3223b5ba7016ae Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 23:11:44 -0700 Subject: [PATCH 0031/1062] Rename variable --- .../@stdlib/utils/property-names/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/property-names/README.md b/lib/node_modules/@stdlib/utils/property-names/README.md index c2ef06498c60..9e377ac33abd 100644 --- a/lib/node_modules/@stdlib/utils/property-names/README.md +++ b/lib/node_modules/@stdlib/utils/property-names/README.md @@ -18,7 +18,7 @@ limitations under the License. --> -# getOwnPropertyNames +# propertyNames > Return an array of an object's own enumerable and non-enumerable property names. @@ -27,10 +27,10 @@ limitations under the License. ## Usage ```javascript -var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); +var propertyNames = require( '@stdlib/utils/property-names' ); ``` -#### getOwnPropertyNames( obj ) +#### propertyNames( obj ) Returns an `array` of an object's own enumerable and non-enumerable property names. @@ -40,7 +40,7 @@ var obj = { 'b': 2 }; -var keys = getOwnPropertyNames( obj ); +var keys = propertyNames( obj ); // e.g., returns [ 'a', 'b' ] ``` @@ -67,7 +67,7 @@ var keys = getOwnPropertyNames( obj ); ```javascript var defineProperty = require( '@stdlib/utils/define-property' ); -var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); +var propertyNames = require( '@stdlib/utils/property-names' ); function Foo() { this.beep = 'boop'; @@ -86,7 +86,7 @@ function Foo() { Foo.prototype.foo = [ 'bar' ]; var obj = new Foo(); -var keys = getOwnPropertyNames( obj ); +var keys = propertyNames( obj ); console.log( keys ); // e.g., => [ 'beep', 'a', 'baz' ] From 8bbdbf4dab90ff6cb3f32bab9b5f6c1ef3c198a7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 23:12:16 -0700 Subject: [PATCH 0032/1062] Rename variable --- .../@stdlib/utils/property-names/examples/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/property-names/examples/index.js b/lib/node_modules/@stdlib/utils/property-names/examples/index.js index 2bb2a5f000a5..936d7c359d89 100644 --- a/lib/node_modules/@stdlib/utils/property-names/examples/index.js +++ b/lib/node_modules/@stdlib/utils/property-names/examples/index.js @@ -19,7 +19,7 @@ 'use strict'; var defineProperty = require( '@stdlib/utils/define-property' ); -var getOwnPropertyNames = require( './../lib' ); +var propertyNames = require( './../lib' ); function Foo() { this.beep = 'boop'; @@ -38,7 +38,7 @@ function Foo() { Foo.prototype.foo = [ 'bar' ]; var obj = new Foo(); -var keys = getOwnPropertyNames( obj ); +var keys = propertyNames( obj ); console.log( keys ); // e.g., => [ 'beep', 'a', 'baz' ] From 3b766df57c73d3ca9efd257de2ff5c5e207da148 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 23:42:20 -0700 Subject: [PATCH 0033/1062] Add utility to return an object's own and inherited property names --- .../@stdlib/utils/property-names-in/README.md | 105 ++++++++++++++++++ .../property-names-in/benchmark/benchmark.js | 72 ++++++++++++ .../utils/property-names-in/docs/repl.txt | 34 ++++++ .../utils/property-names-in/examples/index.js | 44 ++++++++ .../utils/property-names-in/lib/index.js | 43 +++++++ .../utils/property-names-in/lib/main.js | 99 +++++++++++++++++ .../utils/property-names-in/package.json | 70 ++++++++++++ .../utils/property-names-in/test/test.js | 82 ++++++++++++++ 8 files changed, 549 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/property-names-in/README.md create mode 100644 lib/node_modules/@stdlib/utils/property-names-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/property-names-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/property-names-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/property-names-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/property-names-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/property-names-in/package.json create mode 100644 lib/node_modules/@stdlib/utils/property-names-in/test/test.js diff --git a/lib/node_modules/@stdlib/utils/property-names-in/README.md b/lib/node_modules/@stdlib/utils/property-names-in/README.md new file mode 100644 index 000000000000..ed0f1658cb17 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-names-in/README.md @@ -0,0 +1,105 @@ + + +# propertyNamesIn + +> Return an array of an object's own and inherited enumerable and non-enumerable property names. + +
+ +## Usage + +```javascript +var propertyNamesIn = require( '@stdlib/utils/property-names-in' ); +``` + +#### propertyNamesIn( obj ) + +Returns an `array` of an object's own and inherited enumerable and non-enumerable property names. + +```javascript +var obj = { + 'a': 1, + 'b': 2 +}; + +var keys = propertyNamesIn( obj ); +// e.g., returns [ 'a', 'b', ... ] +``` + +
+ + + +
+ +## Notes + +- Name order is not guaranteed, as `object` key enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s keys, thus allowing for deterministic extraction. +- In contrast to the built-in `Object.getOwnPropertyNames()`, if provided `null` or `undefined`, the function returns an empty `array`, rather than throwing an error. + +
+ + + +
+ +## Examples + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var propertyNamesIn = require( '@stdlib/utils/property-names-in' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'value': 'qux', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; + +var obj = new Foo(); +var keys = propertyNamesIn( obj ); + +console.log( keys ); +// e.g., => [ 'beep', 'a', 'baz', 'foo', ... ] +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/property-names-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/property-names-in/benchmark/benchmark.js new file mode 100644 index 000000000000..d292af21296f --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-names-in/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var propertyNamesIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = propertyNamesIn( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/property-names-in/docs/repl.txt b/lib/node_modules/@stdlib/utils/property-names-in/docs/repl.txt new file mode 100644 index 000000000000..199a416c7330 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-names-in/docs/repl.txt @@ -0,0 +1,34 @@ + +{{alias}}( value ) + Returns an array of an object's own and inherited enumerable and non- + enumerable property names. + + Name order is not guaranteed, as object key enumeration is not specified + according to the ECMAScript specification. In practice, however, most + engines use insertion order to sort an object's keys, thus allowing for + deterministic extraction. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + Returns + ------- + keys: Array + List of an object's own and inherited enumerable and non-enumerable + property names. + + Examples + -------- + > function Foo() { this.beep = 'boop'; return this; }; + > Foo.prototype.foo = 'bar'; + > var obj = new Foo(); + > var keys = {{alias}}( obj ) + e.g., [ 'beep', 'foo', ... ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/property-names-in/examples/index.js b/lib/node_modules/@stdlib/utils/property-names-in/examples/index.js new file mode 100644 index 000000000000..717f79d49813 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-names-in/examples/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var propertyNamesIn = require( './../lib' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'value': 'qux', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; + +var obj = new Foo(); +var keys = propertyNamesIn( obj ); + +console.log( keys ); +// e.g., => [ 'beep', 'a', 'baz', 'foo', ... ] diff --git a/lib/node_modules/@stdlib/utils/property-names-in/lib/index.js b/lib/node_modules/@stdlib/utils/property-names-in/lib/index.js new file mode 100644 index 000000000000..4d39fbcb420f --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-names-in/lib/index.js @@ -0,0 +1,43 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's own and inherited enumerable and non-enumerable property names. +* +* @module @stdlib/utils/property-names-in +* +* @example +* var propertyNamesIn = require( '@stdlib/utils/property-names-in' ); +* +* var keys = propertyNamesIn({ +* 'foo': 'bar', +* 'beep': 'boop' +* }); +* // e.g., returns [ 'foo', 'beep', ... ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/property-names-in/lib/main.js b/lib/node_modules/@stdlib/utils/property-names-in/lib/main.js new file mode 100644 index 000000000000..0308f74e7787 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-names-in/lib/main.js @@ -0,0 +1,99 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating if an array contains a provided value. +* +* @private +* @param {Array} arr - array +* @param {*} v - search value +* @returns {boolean} boolean indicating if an array contains a search value +*/ +function contains( arr, v ) { + var i; + for ( i = 0; i < arr.length; i++ ) { + if ( arr[ i ] === v ) { + return true; + } + } + return false; +} + + +// MAIN // + +/** +* Returns an array of an object's own and inherited enumerable and non-enumerable property names. +* +* ## Note +* +* - In contrast to the built-in `Object.getOwnPropertyNames()`, this function returns an empty array if provided `undefined` or `null`, rather than throwing an error. +* +* @param {*} value - input object +* @returns {Array} a list of own and inherited property names +* +* @example +* var obj = { +* 'beep': 'boop', +* 'foo': 3.14 +* }; +* +* var keys = propertyNamesIn( obj ); +* // e.g., returns [ 'beep', 'foo', ... ] +*/ +function propertyNamesIn( value ) { + var names; + var obj; + var tmp; + var i; + + if ( value === null || value === void 0 ) { + return []; + } + // Cast the value to an object: + obj = Object( value ); + + // Walk the prototype chain collecting all enumerable and non-enumerable property names... + names = []; + do { + tmp = getOwnPropertyNames( obj ); + for ( i = 0; i < tmp.length; i++ ) { + if ( contains( names, tmp[ i ] ) === false ) { + names.push( tmp[ i ] ); + } + } + obj = getPrototypeOf( obj ); + } while ( obj ); + + return names; +} + + +// EXPORTS // + +module.exports = propertyNamesIn; diff --git a/lib/node_modules/@stdlib/utils/property-names-in/package.json b/lib/node_modules/@stdlib/utils/property-names-in/package.json new file mode 100644 index 000000000000..e55b284b2c54 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-names-in/package.json @@ -0,0 +1,70 @@ +{ + "name": "@stdlib/utils/property-names-in", + "version": "0.0.0", + "description": "Return an array of an object's own and inherited enumerable and non-enumerable property names.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "names", + "keys", + "keys-in", + "enumerable", + "non-enumerable", + "own", + "inherited", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/property-names-in/test/test.js b/lib/node_modules/@stdlib/utils/property-names-in/test/test.js new file mode 100644 index 000000000000..e7a75a16f43a --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-names-in/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var propertyNamesIn = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof propertyNamesIn, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns an array of an object\'s own and inherited property names', function test( t ) { + var expected; + var actual; + var obj; + var idx; + var i; + + function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + return this; + } + + Foo.prototype.foo = [ 'bar' ]; + + obj = new Foo(); + + expected = [ 'beep', 'a', 'foo' ]; + actual = propertyNamesIn( obj ); + + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = propertyNamesIn( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From 378e76234f3b3fa44ca761fa9e99536aa1f0e361 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 23:44:05 -0700 Subject: [PATCH 0034/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index e999c9c66dbd..678ac357cf6a 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1134,6 +1134,15 @@ setReadOnly( utils, 'prepend', require( '@stdlib/utils/prepend' ) ); */ setReadOnly( utils, 'propertyNames', require( '@stdlib/utils/property-names' ) ); +/** +* @name propertyNamesIn +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/property-names-in} +*/ +setReadOnly( utils, 'propertyNamesIn', require( '@stdlib/utils/property-names-in' ) ); + /** * @name push * @memberof utils From 5e25ff6038a59b515dcab27b56426fb53681885e Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 1 Sep 2018 23:45:00 -0700 Subject: [PATCH 0035/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/p.js | 14 +++++++++++++- .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js index a9d09c022475..d906e6bf3acf 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js @@ -281,7 +281,19 @@ ns.push({ 'value': require( '@stdlib/utils/property-names' ), 'type': 'Function', 'related': [ - '@stdlib/utils/keys' + '@stdlib/utils/keys', + '@stdlib/utils/property-names-in' + ] +}); + +ns.push({ + 'alias': 'propertyNamesIn', + 'path': '@stdlib/utils/property-names-in', + 'value': require( '@stdlib/utils/property-names-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/keys', + '@stdlib/utils/property-names' ] }); diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 09aba78746e5..dfeaa9b76489 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1384,6 +1384,7 @@ var db = { "pop": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\nout = pop( arr )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\nout = pop( arr )\n\n// Array-like object:\narr = { 'length': 2, '0': 1.0, '1': 2.0 };\nout = pop( arr )\n", "prepend": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\narr = prepend( arr, [ 6.0, 7.0 ] )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\narr = prepend( arr, [ 3.0, 4.0 ] )\n\n// Array-like object:\narr = { 'length': 1, '0': 1.0 };\narr = prepend( arr, [ 2.0, 3.0 ] )\n", "propertyNames": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = propertyNames( obj )\n", + "propertyNamesIn": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = propertyNamesIn( obj )\n", "Proxy": "function get( obj, prop ) { return obj[ prop ] * 2.0 };\nh = { 'get': get };\np = Proxy( {}, h );\np.a = 3.14;\np.a\n", "push": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\narr = push( arr, 6.0, 7.0 )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\narr = push( arr, 3.0, 4.0 )\n\n// Array-like object:\narr = { 'length': 0 };\narr = push( arr, 1.0, 2.0 )\n", "quarterOfYear": "q = quarterOfYear( new Date() )\nq = quarterOfYear( 4 )\nq = quarterOfYear( 'June' )\n\n// Other ways to supply month:\nq = quarterOfYear( 'April' )\nq = quarterOfYear( 'apr' )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index f8eca8f364ae..92ccf402df30 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1384,7 +1384,8 @@ var db = { "pluck": "\npluck( arr, prop[, options] )\n Extracts a property value from each element of an object array.\n\n The function skips `null` and `undefined` array elements.\n\n Extracted values are not cloned.\n\n Parameters\n ----------\n arr: Array\n Source array.\n\n prop: string\n Property to access.\n\n options: Object (optional)\n Options.\n\n options.copy: boolean (optional)\n Boolean indicating whether to return a new data structure. To mutate the\n input data structure (e.g., when input values can be discarded or when\n optimizing memory usage), set the `copy` option to `false`. Default:\n true.\n\n Returns\n -------\n out: Array\n Destination array.\n\n Examples\n --------\n > var arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > var out = pluck( arr, 'a' )\n [ 1, 0.5 ]\n\n > arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > out = pluck( arr, 'a', { 'copy': false } )\n [ 1, 0.5 ]\n > var bool = ( arr[ 0 ] === out[ 0 ] )\n true\n\n See Also\n --------\n deepPluck, pick\n", "pop": "\npop( collection )\n Removes and returns the last element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = pop( arr )\n [ [ 1.0, 2.0, 3.0, 4.0 ], 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = pop( arr )\n [ [ 1.0 ], 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = pop( arr )\n [ { 'length': 1, '0': 1.0 }, 2.0 ]\n\n See Also\n --------\n push, shift, unshift\n", "prepend": "\nprepend( collection1, collection2 )\n Adds the elements of one collection to the beginning of another collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection1: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n collection2: Array|TypedArray|Object\n A collection containing the elements to add. If the collection is an\n `Object`, the collection should be array-like.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = prepend( arr, [ 6.0, 7.0 ] )\n [ 6.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = prepend( arr, [ 3.0, 4.0 ] )\n [ 3.0, 4.0, 1.0, 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 1, '0': 1.0 };\n > arr = prepend( arr, [ 2.0, 3.0 ] )\n { 'length': 3, '0': 2.0, '1': 3.0, '2': 1.0 }\n\n See Also\n --------\n append, unshift\n", - "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys\n", + "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys, propertyNamesIn\n", + "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, propertyNames\n", "Proxy": "\nProxy( target, handlers )\n Returns a proxy object implementing custom behavior for specified object\n operations.\n\n The following \"traps\" are supported:\n\n - getPrototypeOf( target )\n Trap for `Object.getPrototypeOf()`. Can be used to intercept the\n `instanceof` operator. The method must return an object or `null`.\n\n - setPrototypeOf( target, prototype )\n Trap for `Object.setPrototypeOf()`. The method must return a boolean\n indicating if prototype successfully set.\n\n - isExtensible( target )\n Trap for `Object.isExtensible()`. The method must return a boolean.\n\n - preventExtensions( target )\n Trap for `Object.preventExtensions()`. The method must return a boolean.\n\n - getOwnPropertyDescriptor( target, property )\n Trap for `Object.getOwnPropertyDescriptor()`. The method must return an\n object or `undefined`.\n\n - defineProperty( target, property, descriptor )\n Trap for `Object.defineProperty()`. The method must return a boolean\n indicating whether the operation succeeded.\n\n - has( target, property )\n Trap for the `in` operator. The method must return a boolean.\n\n - get( target, property, receiver )\n Trap for retrieving property values. The method can return any value.\n\n - set( target, property, value, receiver )\n Trap for setting property values. The method should return a boolean\n indicating whether assignment succeeded.\n\n - deleteProperty( target, property )\n Trap for the `delete` operator. The method must return a boolean\n indicating whether operation succeeded.\n\n - ownKeys( target )\n Trap for `Object.keys`, `Object.getOwnPropertyNames()`, and\n `Object.getOwnPropertySymbols()`. The method must return an enumerable\n object.\n\n - apply( target, thisArg, argumentsList )\n Trap for a function call. The method can return any value.\n\n - construct( target, argumentsList, newTarget )\n Trap for the `new` operator. The method must return an object.\n\n All traps are optional. If a trap is not defined, the default behavior is to\n forward the operation to the target.\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Proxy object.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.a = 3.14;\n > p.a\n 6.28\n\n\nProxy.revocable( target, handlers )\n Returns a revocable proxy object\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Revocable proxy object.\n\n p.proxy: Object\n Proxy object.\n\n p.revoke: Function\n Invalidates a proxy, rendering a proxy object unusable.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.proxy.a = 3.14;\n > p.proxy.a\n 6.28\n > p.revoke();\n\n", "push": "\npush( collection, ...items )\n Adds one or more elements to the end of a collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n items: ...any\n Items to add.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = push( arr, 6.0, 7.0 )\n [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = push( arr, 3.0, 4.0 )\n [ 1.0, 2.0, 3.0, 4.0 ]\n\n // Array-like object:\n > arr = { 'length': 0 };\n > arr = push( arr, 1.0, 2.0 )\n { 'length': 2, '0': 1.0, '1': 2.0 }\n\n See Also\n --------\n pop, shift, unshift\n", "quarterOfYear": "\nquarterOfYear( [month] )\n Returns the quarter of the year.\n\n By default, the function returns the quarter of the year for the current\n month in the current year (according to local time). To determine the\n quarter for a particular month, provide either a month or a `Date`\n object.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n Parameters\n ----------\n month: integer|string|Date (optional)\n Month (or `Date`).\n\n Returns\n -------\n out: integer\n Quarter of the year.\n\n Examples\n --------\n > var q = quarterOfYear( new Date() )\n \n > q = quarterOfYear( 4 )\n 2\n > q = quarterOfYear( 'June' )\n 2\n\n // Other ways to supply month:\n > q = quarterOfYear( 'April' )\n 2\n > q = quarterOfYear( 'apr' )\n 2\n\n See Also\n --------\n dayOfYear\n", From a9d2410924c906ebdb23cf9abf14495aaae5f24b Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 01:48:13 -0700 Subject: [PATCH 0036/1062] Add assertion utility to test if a property is non-enumerable --- .../is-nonenumerable-property/README.md | 124 ++++++++++++++++ .../benchmark/benchmark.js | 51 +++++++ .../is-nonenumerable-property/docs/repl.txt | 34 +++++ .../examples/index.js | 59 ++++++++ .../is-nonenumerable-property/lib/index.js | 55 ++++++++ .../is-nonenumerable-property/lib/main.js | 66 +++++++++ .../is-nonenumerable-property/package.json | 72 ++++++++++ .../is-nonenumerable-property/test/test.js | 132 ++++++++++++++++++ 8 files changed, 593 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-nonenumerable-property/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-nonenumerable-property/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-nonenumerable-property/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-nonenumerable-property/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-nonenumerable-property/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-nonenumerable-property/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-nonenumerable-property/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-nonenumerable-property/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/README.md b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/README.md new file mode 100644 index 000000000000..dfc4a53ee42e --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/README.md @@ -0,0 +1,124 @@ + + +# isNonEnumerableProperty + +> Test if an object property is non-enumerable. + +
+ +## Usage + +```javascript +var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property' ); +``` + +#### isNonEnumerableProperty( value, property ) + +Returns a `boolean` indicating if a `value` has a non-enumerable `property`. + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = { + 'foo': 'bar' +}; + +defineProperty( obj, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'boop' +}); + +var bool = isNonEnumerableProperty( obj, 'beep' ); +// returns true + +bool = isNonEnumerableProperty( obj, 'foo' ); +// returns false +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isNonEnumerableProperty( 'beep', 'length' ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property' ); + +var bool = isNonEnumerableProperty( [ 'a' ], 'length' ); +// returns true + +bool = isNonEnumerableProperty( { 'a': 'b' }, 'a' ); +// returns false + +bool = isNonEnumerableProperty( [ 'a' ], 0 ); +// returns false + +bool = isNonEnumerableProperty( {}, 'prototype' ); +// returns false + +bool = isNonEnumerableProperty( {}, 'hasOwnProperty' ); +// returns false + +bool = isNonEnumerableProperty( null, 'a' ); +// returns false + +bool = isNonEnumerableProperty( void 0, 'a' ); +// returns false + +bool = isNonEnumerableProperty( { 'null': false }, null ); +// returns false + +bool = isNonEnumerableProperty( { '[object Object]': false }, {} ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/benchmark/benchmark.js new file mode 100644 index 000000000000..8b35eb92353a --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isNonEnumerableProperty = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isNonEnumerableProperty( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/docs/repl.txt new file mode 100644 index 000000000000..b736e6e86ec4 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/docs/repl.txt @@ -0,0 +1,34 @@ + +{{alias}}( value, property ) + Tests if an object property is non-enumerable. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object property is non-enumerable. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = false; + > desc.writable = true; + > desc.value = 'beep'; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + false + > bool = {{alias}}( obj, 'beep' ) + true + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/examples/index.js b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/examples/index.js new file mode 100644 index 000000000000..590a61cc693e --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isNonEnumerableProperty = require( './../lib' ); + +var bool = isNonEnumerableProperty( [ 'a' ], 'length' ); +console.log( bool ); +// => true + +bool = isNonEnumerableProperty( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => false + +bool = isNonEnumerableProperty( [ 'a' ], 0 ); +console.log( bool ); +// => false + +bool = isNonEnumerableProperty( {}, 'prototype' ); +console.log( bool ); +// => false + +bool = isNonEnumerableProperty( {}, 'hasOwnProperty' ); +console.log( bool ); +// => false + +bool = isNonEnumerableProperty( null, 'a' ); +console.log( bool ); +// => false + +bool = isNonEnumerableProperty( void 0, 'a' ); +console.log( bool ); +// => false + +bool = isNonEnumerableProperty( { 'null': false }, null ); +console.log( bool ); +// => false + +bool = isNonEnumerableProperty( { '[object Object]': false }, {} ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/lib/index.js b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/lib/index.js new file mode 100644 index 000000000000..d3b3a4481c9e --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/lib/index.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object property is non-enumerable. +* +* @module @stdlib/assert/is-nonenumerable-property +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'writable': true, +* 'value': 'beep' +* }); +* +* var bool = isNonEnumerableProperty( obj, 'boop' ); +* // returns false +* +* bool = isNonEnumerableProperty( obj, 'beep' ); +* // returns true +*/ + +// MODULES // + +var isNonEnumerableProperty = require( './main.js' ); + + +// EXPORTS // + +module.exports = isNonEnumerableProperty; diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/lib/main.js b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/lib/main.js new file mode 100644 index 000000000000..70d6ca6d603d --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/lib/main.js @@ -0,0 +1,66 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); +var isEnumerableProperty = require( '@stdlib/assert/is-enumerable-property' ); + + +// MAIN // + +/** +* Tests if an object property is non-enumerable. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is non-enumerable +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'writable': true, +* 'value': 'beep' +* }); +* +* var bool = isNonEnumerableProperty( obj, 'boop' ); +* // returns false +* +* bool = isNonEnumerableProperty( obj, 'beep' ); +* // returns true +*/ +function isNonEnumerableProperty( value, property ) { + if ( hasOwnProp( value, property ) === false ) { + return false; + } + return ( isEnumerableProperty( value, property ) === false ); +} + + +// EXPORTS // + +module.exports = isNonEnumerableProperty; diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/package.json b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/package.json new file mode 100644 index 000000000000..198d5bfe3247 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/assert/is-nonenumerable-property", + "version": "0.0.0", + "description": "Test if an object property is non-enumerable.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "enumerable", + "non-enumerable", + "enum", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/test/test.js b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/test/test.js new file mode 100644 index 000000000000..7e3e4eb9f1a7 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/test/test.js @@ -0,0 +1,132 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isNonEnumerableProperty = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isNonEnumerableProperty, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isNonEnumerableProperty( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isNonEnumerableProperty( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if an object property is enumerable', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isNonEnumerableProperty( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonEnumerableProperty( [ 1, 2, 3 ], '1' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonEnumerableProperty( [ 1, 2, 3 ], 1 ); + t.equal( bool, false, 'returns false' ); + + bool = isNonEnumerableProperty( new Foo(), 'bar' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a non-enumerable property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + bool = isNonEnumerableProperty( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonEnumerableProperty( obj, 'prototype' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonEnumerableProperty( obj, 'constructor' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `true` if an object property is non-enumerable', function test( t ) { + var bool; + var obj; + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + + bool = isNonEnumerableProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isNonEnumerableProperty( [ 'a' ], 'length' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a prototype property', function test( t ) { + var bool; + + bool = isNonEnumerableProperty( {}, 'hasOwnProperty' ); + t.equal( bool, false, 'returns false when provided a prototype property' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isNonEnumerableProperty( 'beep', 'length' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); From 53072286c329eec54cdf2de1ff3111f80629ee80 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 01:52:02 -0700 Subject: [PATCH 0037/1062] Always assert when a benchmark is finished --- .../assert/is-enumerable-property/benchmark/benchmark.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-enumerable-property/benchmark/benchmark.js index 50093c202255..bdfd33c50d48 100644 --- a/lib/node_modules/@stdlib/assert/is-enumerable-property/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property/benchmark/benchmark.js @@ -43,10 +43,9 @@ bench( pkg, function benchmark( b ) { } } b.toc(); - if ( isBoolean( bool ) ) { - b.pass( 'benchmark finished' ); - } else { + if ( !isBoolean( bool ) ) { b.fail( 'should return a boolean' ); } + b.pass( 'benchmark finished' ); b.end(); }); From ff579633fe94389d2fd8fd69aeb06681febac844 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 01:52:24 -0700 Subject: [PATCH 0038/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 0baf5d7f769f..2805ef725c1f 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -1107,6 +1107,15 @@ setReadOnly( ns, 'isNodeTransformStreamLike', require( '@stdlib/assert/is-node-t */ setReadOnly( ns, 'isNodeWritableStreamLike', require( '@stdlib/assert/is-node-writable-stream-like' ) ); +/** +* @name isNonEnumerableProperty +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-nonenumerable-property} +*/ +setReadOnly( ns, 'isNonEnumerableProperty', require( '@stdlib/assert/is-nonenumerable-property' ) ); + /** * @name isNonNegativeInteger * @memberof ns From f31a7f8e5ead11ebb4d3013bf135dcf8267d992b Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 01:52:43 -0700 Subject: [PATCH 0039/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 14 +++++++++++++- .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 1a5105f52b7d..8d9db87f8cdf 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -2028,7 +2028,9 @@ ns.push({ 'path': '@stdlib/assert/is-enumerable-property', 'value': require( '@stdlib/assert/is-enumerable-property' ), 'type': 'Function', - 'related': [] + 'related': [ + '@stdlib/assert/is-nonenumerable-property' + ] }); ns.push({ @@ -2436,6 +2438,16 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isNonEnumerableProperty', + 'path': '@stdlib/assert/is-nonenumerable-property', + 'value': require( '@stdlib/assert/is-nonenumerable-property' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-enumerable-property' + ] +}); + ns.push({ 'alias': 'isNonNegativeInteger', 'path': '@stdlib/assert/is-nonnegative-integer', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index dfeaa9b76489..a3fef60069bc 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1204,6 +1204,7 @@ var db = { "isNodeStreamLike": "Stream = require( 'stream' ).Stream;\ns = new Stream();\nbool = isNodeStreamLike( s )\nbool = isNodeStreamLike( {} )\n", "isNodeTransformStreamLike": "Stream = require( 'stream' ).Transform;\ns = new Stream();\nbool = isNodeTransformStreamLike( s )\nbool = isNodeTransformStreamLike( {} )\n", "isNodeWritableStreamLike": "Stream = require( 'stream' ).Writable;\ns = new Stream();\nbool = isNodeWritableStreamLike( s )\nbool = isNodeWritableStreamLike( {} )\n", + "isNonEnumerableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'beep';\ndefineProperty( obj, 'beep', desc );\nbool = isNonEnumerableProperty( obj, 'boop' )\nbool = isNonEnumerableProperty( obj, 'beep' )\n", "isNonNegativeInteger": "bool = isNonNegativeInteger( 5.0 )\nbool = isNonNegativeInteger( new Number( 5.0 ) )\nbool = isNonNegativeInteger( 3.14 )\nbool = isNonNegativeInteger( -5.0 )\nbool = isNonNegativeInteger( null )\n", "isNonNegativeIntegerArray": "bool = isNonNegativeIntegerArray( [ 3.0, new Number(3.0) ] )\nbool = isNonNegativeIntegerArray( [ 3.0, '3.0' ] )\n", "isNonNegativeNumber": "bool = isNonNegativeNumber( 5.0 )\nbool = isNonNegativeNumber( new Number( 5.0 ) )\nbool = isNonNegativeNumber( 3.14 )\nbool = isNonNegativeNumber( -5.0 )\nbool = isNonNegativeNumber( null )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 92ccf402df30..17427670ab55 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1163,7 +1163,7 @@ var db = { "isEmptyArray": "\nisEmptyArray( value )\n Tests if a value is an empty array.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is an empty array.\n\n Examples\n --------\n > var bool = isEmptyArray( [] )\n true\n > bool = isEmptyArray( [ 1, 2, 3 ] )\n false\n > bool = isEmptyArray( {} )\n false\n\n See Also\n --------\n isArray\n", "isEmptyObject": "\nisEmptyObject( value )\n Tests if a value is an empty object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is an empty object.\n\n Examples\n --------\n > var bool = isEmptyObject( {} )\n true\n > bool = isEmptyObject( { 'beep': 'boop' } )\n false\n > bool = isEmptyObject( [] )\n false\n\n See Also\n --------\n isObject, isPlainObject\n", "isEmptyString": "\nisEmptyString( value )\n Tests if a value is an empty string.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is an empty string.\n\n Examples\n --------\n > var bool = isEmptyString( '' )\n true\n > bool = isEmptyString( new String( '' ) )\n true\n > bool = isEmptyString( 'beep' )\n false\n > bool = isEmptyString( [] )\n false\n\n\nisEmptyString.isPrimitive( value )\n Tests if a value is an empty string primitive.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an empty string primitive.\n\n Examples\n --------\n > var bool = isEmptyString.isPrimitive( '' )\n true\n > bool = isEmptyString.isPrimitive( new String( '' ) )\n false\n\n\nisEmptyString.isObject( value )\n Tests if a value is an empty `String` object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an empty `String` object.\n\n Examples\n --------\n > var bool = isEmptyString.isObject( new String( '' ) )\n true\n > bool = isEmptyString.isObject( '' )\n false\n\n See Also\n --------\n isString\n", - "isEnumerableProperty": "\nisEnumerableProperty( value, property )\n Tests if an object property is enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object property is enumerable.\n\n Examples\n --------\n > var beep = { 'boop': true };\n > var bool = isEnumerableProperty( beep, 'boop' )\n true\n > bool = isEnumerableProperty( beep, 'hasOwnProperty' )\n false\n\n", + "isEnumerableProperty": "\nisEnumerableProperty( value, property )\n Tests if an object property is enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object property is enumerable.\n\n Examples\n --------\n > var beep = { 'boop': true };\n > var bool = isEnumerableProperty( beep, 'boop' )\n true\n > bool = isEnumerableProperty( beep, 'hasOwnProperty' )\n false\n\n See Also\n --------\n isNonEnumerableProperty\n", "isError": "\nisError( value )\n Tests if a value is an Error object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an Error object.\n\n Examples\n --------\n > var bool = isError( new Error( 'beep' ) )\n true\n > bool = isError( {} )\n false\n\n", "isEvalError": "\nisEvalError( value )\n Tests if a value is an EvalError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided an EvalError (or a descendant) object,\n false positives may occur due to the fact that the EvalError constructor\n inherits from Error and has no internal class of its own. Hence, EvalError\n impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an EvalError object.\n\n Examples\n --------\n > var bool = isEvalError( new EvalError( 'beep' ) )\n true\n > bool = isEvalError( {} )\n false\n\n See Also\n --------\n isError\n", "isEven": "\nisEven( value )\n Tests if a value is an even number.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether is an even number.\n\n Examples\n --------\n > var bool = isEven( 4.0 )\n true\n > bool = isEven( new Number( 4.0 ) )\n true\n > bool = isEven( 3.0 )\n false\n > bool = isEven( -3.14 )\n false\n > bool = isEven( null )\n false\n\n\nisEven.isPrimitive( value )\n Tests if a value is a number primitive that is an even number.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive that is an even\n number.\n\n Examples\n --------\n > var bool = isEven.isPrimitive( -4.0 )\n true\n > bool = isEven.isPrimitive( new Number( -4.0 ) )\n false\n\n\nisEven.isObject( value )\n Tests if a value is a number object that is an even number.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object that is an even\n number.\n\n Examples\n --------\n > var bool = isEven.isObject( 4.0 )\n false\n > bool = isEven.isObject( new Number( 4.0 ) )\n true\n\n See Also\n --------\n isOdd\n", @@ -1204,6 +1204,7 @@ var db = { "isNodeStreamLike": "\nisNodeStreamLike( value )\n Tests if a value is Node stream-like.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is Node stream-like.\n\n Examples\n --------\n > var Stream = require( 'stream' ).Stream;\n > s = new Stream();\n > var bool = isNodeStreamLike( s )\n true\n > bool = isNodeStreamLike( {} )\n false\n\n", "isNodeTransformStreamLike": "\nisNodeTransformStreamLike( value )\n Tests if a value is Node transform stream-like.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is Node transform stream-like.\n\n Examples\n --------\n > var Stream = require( 'stream' ).Transform;\n > s = new Stream();\n > var bool = isNodeTransformStreamLike( s )\n true\n > bool = isNodeTransformStreamLike( {} )\n false\n\n See Also\n --------\n isNodeStreamLike\n", "isNodeWritableStreamLike": "\nisNodeWritableStreamLike( value )\n Tests if a value is Node writable stream-like.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is Node writable stream-like.\n\n Examples\n --------\n > var Stream = require( 'stream' ).Writable;\n > s = new Stream();\n > var bool = isNodeWritableStreamLike( s )\n true\n > bool = isNodeWritableStreamLike( {} )\n false\n\n See Also\n --------\n isNodeStreamLike\n", + "isNonEnumerableProperty": "\nisNonEnumerableProperty( value, property )\n Tests if an object property is non-enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object property is non-enumerable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isNonEnumerableProperty( obj, 'boop' )\n false\n > bool = isNonEnumerableProperty( obj, 'beep' )\n true\n\n See Also\n --------\n isEnumerableProperty\n", "isNonNegativeInteger": "\nisNonNegativeInteger( value )\n Tests if a value is a nonnegative integer.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a nonnegative integer.\n\n Examples\n --------\n > var bool = isNonNegativeInteger( 5.0 )\n true\n > bool = isNonNegativeInteger( new Number( 5.0 ) )\n true\n > bool = isNonNegativeInteger( 3.14 )\n false\n > bool = isNonNegativeInteger( -5.0 )\n false\n > bool = isNonNegativeInteger( null )\n false\n\n\nisNonNegativeInteger.isPrimitive( value )\n Tests if a value is a number primitive having a nonnegative integer value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive having a\n nonnegative integer value.\n\n Examples\n --------\n > var bool = isNonNegativeInteger.isPrimitive( 3.0 )\n true\n > bool = isNonNegativeInteger.isPrimitive( new Number( 3.0 ) )\n false\n\n\nisNonNegativeInteger.isObject( value )\n Tests if a value is a number object having a nonnegative integer value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object having a nonnegative\n integer value.\n\n Examples\n --------\n > var bool = isNonNegativeInteger.isObject( 3.0 )\n false\n > bool = isNonNegativeInteger.isObject( new Number( 3.0 ) )\n true\n\n\n See Also\n --------\n isInteger\n", "isNonNegativeIntegerArray": "\nisNonNegativeIntegerArray( value )\n Tests if a value is an array-like object containing only nonnegative\n integers.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n nonnegative integers.\n\n Examples\n --------\n > var bool = isNonNegativeIntegerArray( [ 3.0, new Number(3.0) ] )\n true\n > bool = isNonNegativeIntegerArray( [ 3.0, '3.0' ] )\n false\n\n\nisNonNegativeIntegerArray.primitives( value )\n Tests if a value is an array-like object containing only nonnegative\n primitive integer values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n nonnegative primitive integer values.\n\n Examples\n --------\n > var bool = isNonNegativeIntegerArray.primitives( [ 1.0, 0.0, 10.0 ] )\n true\n > bool = isNonNegativeIntegerArray.primitives( [ 3.0, new Number(1.0) ] )\n false\n\n\nisNonNegativeIntegerArray.objects( value )\n Tests if a value is an array-like object containing only number objects\n having nonnegative integer values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n number objects having nonnegative integer values.\n\n Examples\n --------\n > var bool = isNonNegativeIntegerArray.objects( [ new Number(1.0), new Number(10.0) ] )\n true\n > bool = isNonNegativeIntegerArray.objects( [ 1.0, 0.0, 10.0 ] )\n false\n > bool = isNonNegativeIntegerArray.objects( [ 3.0, new Number(1.0) ] )\n false\n\n See Also\n --------\n isArray\n", "isNonNegativeNumber": "\nisNonNegativeNumber( value )\n Tests if a value is a nonnegative number.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a nonnegative number.\n\n Examples\n --------\n > var bool = isNonNegativeNumber( 5.0 )\n true\n > bool = isNonNegativeNumber( new Number( 5.0 ) )\n true\n > bool = isNonNegativeNumber( 3.14 )\n true\n > bool = isNonNegativeNumber( -5.0 )\n false\n > bool = isNonNegativeNumber( null )\n false\n\n\nisNonNegativeNumber.isPrimitive( value )\n Tests if a value is a number primitive having a nonnegative value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive having a\n nonnegative value.\n\n Examples\n --------\n > var bool = isNonNegativeNumber.isPrimitive( 3.0 )\n true\n > bool = isNonNegativeNumber.isPrimitive( new Number( 3.0 ) )\n false\n\n\nisNonNegativeNumber.isObject( value )\n Tests if a value is a number object having a nonnegative value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object having a nonnegative\n value.\n\n Examples\n --------\n > var bool = isNonNegativeNumber.isObject( 3.0 )\n false\n > bool = isNonNegativeNumber.isObject( new Number( 3.0 ) )\n true\n\n\n See Also\n --------\n isNumber\n", From 703b74ff403b116afe7803e894075ab0d059176a Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 02:11:41 -0700 Subject: [PATCH 0040/1062] Add utility to return own and inherited non-enumerable property names --- .../nonenumerable-property-names-in/README.md | 122 ++++++++++++++++++ .../benchmark/benchmark.js | 72 +++++++++++ .../docs/repl.txt | 38 ++++++ .../examples/index.js | 50 +++++++ .../lib/index.js | 50 +++++++ .../lib/main.js | 105 +++++++++++++++ .../package.json | 70 ++++++++++ .../test/test.js | 95 ++++++++++++++ 8 files changed, 602 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/README.md create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/package.json create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/test/test.js diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/README.md b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/README.md new file mode 100644 index 000000000000..8ac819d10a40 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/README.md @@ -0,0 +1,122 @@ + + +# nonEnumerablePropertyNamesIn + +> Return an array of an object's own and inherited non-enumerable property names. + +
+ +## Usage + + + +```javascript +var nonEnumerablePropertyNamesIn = require( '@stdlib/utils/nonenumerable-property-names-in' ); +``` + +#### nonEnumerablePropertyNamesIn( obj ) + +Returns an `array` of an object's own and inherited non-enumerable property names. + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = { + 'a': 'b' +}; + +defineProperty( obj, 'c', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'd' +}); + +var keys = nonEnumerablePropertyNamesIn( obj ); +// e.g., returns [ 'c', ... ] +``` + +
+ + + +
+ +## Notes + +- Name order is not guaranteed, as `object` key enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s keys, thus allowing for deterministic extraction. + +
+ + + +
+ +## Examples + + + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var nonEnumerablePropertyNamesIn = require( '@stdlib/utils/property-names-in' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; +defineProperty( Foo.prototype, 'bip', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' +}); + +var obj = new Foo(); +var keys = nonEnumerablePropertyNamesIn( obj ); + +console.log( keys ); +// e.g., => [ 'baz', 'bip', ... ] +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/benchmark/benchmark.js new file mode 100644 index 000000000000..38bd62faf5fe --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var nonEnumPropsIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = nonEnumPropsIn( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/docs/repl.txt b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/docs/repl.txt new file mode 100644 index 000000000000..e21768654175 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/docs/repl.txt @@ -0,0 +1,38 @@ + +{{alias}}( value ) + Returns an array of an object's own and inherited non-enumerable property + names. + + Name order is not guaranteed, as object key enumeration is not specified + according to the ECMAScript specification. In practice, however, most + engines use insertion order to sort an object's keys, thus allowing for + deterministic extraction. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + Returns + ------- + keys: Array + List of an object's own and inherited enumerable non-enumerable property + names. + + Examples + -------- + > var obj = {}; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = false; + > desc.writable = true; + > desc.value = 'boop'; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var keys = {{alias}}( obj ) + e.g., [ 'beep', ... ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/examples/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/examples/index.js new file mode 100644 index 000000000000..0d68c2fb6499 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/examples/index.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var nonEnumerablePropertyNamesIn = require( './../lib' ); // eslint-disable-line id-length + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; +defineProperty( Foo.prototype, 'bip', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' +}); + +var obj = new Foo(); +var keys = nonEnumerablePropertyNamesIn( obj ); + +console.log( keys ); +// e.g., => [ 'baz', 'bip', ... ] diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/index.js new file mode 100644 index 000000000000..a4eb68ce3572 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/index.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's own and inherited non-enumerable property names. +* +* @module @stdlib/utils/nonenumerable-property-names-in +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var nonEnumerablePropertyNamesIn = require( '@stdlib/utils/nonenumerable-property-names-in' ); +* +* var obj = {}; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'writable': false, +* 'value': 'boop' +* }); +* +* var keys = nonEnumerablePropertyNamesIn( obj ); +* // e.g., returns [ 'beep', ... ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/main.js new file mode 100644 index 000000000000..3d5fdb6a37f7 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/main.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); +var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating if an array contains a provided value. +* +* @private +* @param {Array} arr - array +* @param {*} v - search value +* @returns {boolean} boolean indicating if an array contains a search value +*/ +function contains( arr, v ) { + var i; + for ( i = 0; i < arr.length; i++ ) { + if ( arr[ i ] === v ) { + return true; + } + } + return false; +} + + +// MAIN // + +/** +* Returns an array of an object's own and inherited non-enumerable property names. +* +* @param {*} value - input object +* @returns {Array} a list of own and inherited non-enumerable property names +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = {}; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'writable': false, +* 'value': 'boop' +* }); +* +* var keys = nonEnumerablePropertyNamesIn( obj ); +* // e.g., returns [ 'beep', ... ] +*/ +function nonEnumerablePropertyNamesIn( value ) { // eslint-disable-line id-length + var names; + var obj; + var tmp; + var i; + + if ( value === null || value === void 0 ) { + return []; + } + // Cast the value to an object: + obj = Object( value ); + + // Walk the prototype chain collecting all non-enumerable property names... + names = []; + do { + tmp = getOwnPropertyNames( obj ); + for ( i = 0; i < tmp.length; i++ ) { + if ( + isNonEnumerableProperty( obj, tmp[ i ] ) && + contains( names, tmp[ i ] ) === false + ) { + names.push( tmp[ i ] ); + } + } + obj = getPrototypeOf( obj ); + } while ( obj ); + + return names; +} + + +// EXPORTS // + +module.exports = nonEnumerablePropertyNamesIn; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/package.json b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/package.json new file mode 100644 index 000000000000..98045c2c7a6d --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/package.json @@ -0,0 +1,70 @@ +{ + "name": "@stdlib/utils/nonenumerable-property-names-in", + "version": "0.0.0", + "description": "Return an array of an object's own and inherited non-enumerable property names.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "names", + "keys", + "keys-in", + "enumerable", + "non-enumerable", + "own", + "inherited", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/test/test.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/test/test.js new file mode 100644 index 000000000000..51adf6b10e16 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/test/test.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var nonEnumerablePropertyNamesIn = require( './../lib' ); // eslint-disable-line id-length + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof nonEnumerablePropertyNamesIn, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns an array of an object\'s own and inherited non-enumerable property names', function test( t ) { + var expected; + var actual; + var obj; + var idx; + var i; + + function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ 'd', 'baz' ]; + actual = nonEnumerablePropertyNamesIn( obj ); + + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = nonEnumerablePropertyNamesIn( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From 5274200953216d409e457a56e675d0d1a25f4535 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 02:14:27 -0700 Subject: [PATCH 0041/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 678ac357cf6a..9b62c84c0379 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -990,6 +990,15 @@ setReadOnly( utils, 'noneByRight', require( '@stdlib/utils/none-by-right' ) ); */ setReadOnly( utils, 'noneByRightAsync', require( '@stdlib/utils/none-by-right-async' ) ); +/** +* @name nonEnumerablePropertyNamesIn +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/nonenumerable-property-names-in} +*/ +setReadOnly( utils, 'nonEnumerablePropertyNamesIn', require( '@stdlib/utils/nonenumerable-property-names-in' ) ); + /** * @name noop * @memberof utils From b8f04b69a6a3c50f4b99c9de532fa9343679cfbb Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 02:16:58 -0700 Subject: [PATCH 0042/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/n.js | 12 ++++++++++++ .../@stdlib/namespace/lib/namespace/p.js | 2 ++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js index ec1549bc32b8..9e51c2baac4a 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js @@ -264,6 +264,18 @@ ns.push({ ] }); +ns.push({ + 'alias': 'nonEnumerablePropertyNamesIn', + 'path': '@stdlib/utils/nonenumerable-property-names-in', + 'value': require( '@stdlib/utils/nonenumerable-property-names-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/keys-in', + '@stdlib/utils/nonenumerable-property-names', + '@stdlib/utils/property-names-in' + ] +}); + ns.push({ 'alias': 'noop', 'path': '@stdlib/utils/noop', diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js index d906e6bf3acf..ed8c3d2d3dd9 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js @@ -282,6 +282,7 @@ ns.push({ 'type': 'Function', 'related': [ '@stdlib/utils/keys', + '@stdlib/utils/nonenumerable-property-names', '@stdlib/utils/property-names-in' ] }); @@ -293,6 +294,7 @@ ns.push({ 'type': 'Function', 'related': [ '@stdlib/utils/keys', + '@stdlib/utils/nonenumerable-property-names-in', '@stdlib/utils/property-names' ] }); diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index a3fef60069bc..ccc17e154e0d 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1344,6 +1344,7 @@ var db = { "noneByAsync": "\n// Basic usage:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'series': true };\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, opts, predicate, done )\n", "noneByRight": "function positive( v ) { return ( v > 0 ); };\narr = [ -1, -2, -3, -4 ];\nbool = noneByRight( arr, positive )\n", "noneByRightAsync": "\n// Basic usage:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'limit': 2 };\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'series': true };\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, opts, predicate, done )\n", + "nonEnumerablePropertyNamesIn": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerablePropertyNamesIn( obj )\n", "noop": "noop();\n", "now": "ts = now()\n", "NUM_CPUS": "NUM_CPUS\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 17427670ab55..e5ec37c2fa05 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1345,6 +1345,7 @@ var db = { "noneByAsync": "\nnoneByAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByAsync, everyByAsync, forEachAsync, noneBy, noneByRightAsync, someByAsync\n", "noneByRight": "\nnoneByRight( collection, predicate[, thisArg ] )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n The predicate function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n The function immediately returns upon encountering a truthy return value.\n\n If provided an empty collection, the function returns `true`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n predicate: Function\n The test function.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n bool: boolean\n The function returns `true` if the predicate function returns a falsy\n value for all elements; otherwise, the function returns `false`.\n\n Examples\n --------\n > function positive( v ) { return ( v > 0 ); };\n > var arr = [ -1, -2, -3, -4 ];\n > var bool = noneByRight( arr, positive )\n true\n\n See Also\n --------\n anyByRight, everyByRight, forEachRight, none, noneBy, someByRight\n", "noneByRightAsync": "\nnoneByRightAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByRightAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function, iterating from right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByRightAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByRightAsync, everyByRightAsync, forEachRightAsync, noneByAsync, noneByRight, someByRightAsync\n", + "nonEnumerablePropertyNamesIn": "\nnonEnumerablePropertyNamesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable non-enumerable property\n names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNamesIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, propertyNamesIn\n", "noop": "\nnoop()\n A function which does nothing.\n\n Examples\n --------\n > noop();\n\n", "now": "\nnow()\n Returns the time in seconds since the epoch.\n\n The Unix epoch is 00:00:00 UTC on 1 January 1970.\n\n Returns\n -------\n out: integer\n Time in seconds since the epoch.\n\n Examples\n --------\n > var ts = now()\n \n\n", "NUM_CPUS": "\nNUM_CPUS\n Number of CPUs.\n\n In browser environments, the number of CPUs is determined by querying the\n hardware concurrency API.\n\n In Node.js environments, the number of CPUs is determined via the `os`\n module.\n\n Examples\n --------\n > NUM_CPUS\n \n\n", @@ -1386,7 +1387,7 @@ var db = { "pop": "\npop( collection )\n Removes and returns the last element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = pop( arr )\n [ [ 1.0, 2.0, 3.0, 4.0 ], 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = pop( arr )\n [ [ 1.0 ], 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = pop( arr )\n [ { 'length': 1, '0': 1.0 }, 2.0 ]\n\n See Also\n --------\n push, shift, unshift\n", "prepend": "\nprepend( collection1, collection2 )\n Adds the elements of one collection to the beginning of another collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection1: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n collection2: Array|TypedArray|Object\n A collection containing the elements to add. If the collection is an\n `Object`, the collection should be array-like.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = prepend( arr, [ 6.0, 7.0 ] )\n [ 6.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = prepend( arr, [ 3.0, 4.0 ] )\n [ 3.0, 4.0, 1.0, 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 1, '0': 1.0 };\n > arr = prepend( arr, [ 2.0, 3.0 ] )\n { 'length': 3, '0': 2.0, '1': 3.0, '2': 1.0 }\n\n See Also\n --------\n append, unshift\n", "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys, propertyNamesIn\n", - "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, propertyNames\n", + "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNamesIn, propertyNames\n", "Proxy": "\nProxy( target, handlers )\n Returns a proxy object implementing custom behavior for specified object\n operations.\n\n The following \"traps\" are supported:\n\n - getPrototypeOf( target )\n Trap for `Object.getPrototypeOf()`. Can be used to intercept the\n `instanceof` operator. The method must return an object or `null`.\n\n - setPrototypeOf( target, prototype )\n Trap for `Object.setPrototypeOf()`. The method must return a boolean\n indicating if prototype successfully set.\n\n - isExtensible( target )\n Trap for `Object.isExtensible()`. The method must return a boolean.\n\n - preventExtensions( target )\n Trap for `Object.preventExtensions()`. The method must return a boolean.\n\n - getOwnPropertyDescriptor( target, property )\n Trap for `Object.getOwnPropertyDescriptor()`. The method must return an\n object or `undefined`.\n\n - defineProperty( target, property, descriptor )\n Trap for `Object.defineProperty()`. The method must return a boolean\n indicating whether the operation succeeded.\n\n - has( target, property )\n Trap for the `in` operator. The method must return a boolean.\n\n - get( target, property, receiver )\n Trap for retrieving property values. The method can return any value.\n\n - set( target, property, value, receiver )\n Trap for setting property values. The method should return a boolean\n indicating whether assignment succeeded.\n\n - deleteProperty( target, property )\n Trap for the `delete` operator. The method must return a boolean\n indicating whether operation succeeded.\n\n - ownKeys( target )\n Trap for `Object.keys`, `Object.getOwnPropertyNames()`, and\n `Object.getOwnPropertySymbols()`. The method must return an enumerable\n object.\n\n - apply( target, thisArg, argumentsList )\n Trap for a function call. The method can return any value.\n\n - construct( target, argumentsList, newTarget )\n Trap for the `new` operator. The method must return an object.\n\n All traps are optional. If a trap is not defined, the default behavior is to\n forward the operation to the target.\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Proxy object.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.a = 3.14;\n > p.a\n 6.28\n\n\nProxy.revocable( target, handlers )\n Returns a revocable proxy object\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Revocable proxy object.\n\n p.proxy: Object\n Proxy object.\n\n p.revoke: Function\n Invalidates a proxy, rendering a proxy object unusable.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.proxy.a = 3.14;\n > p.proxy.a\n 6.28\n > p.revoke();\n\n", "push": "\npush( collection, ...items )\n Adds one or more elements to the end of a collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n items: ...any\n Items to add.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = push( arr, 6.0, 7.0 )\n [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = push( arr, 3.0, 4.0 )\n [ 1.0, 2.0, 3.0, 4.0 ]\n\n // Array-like object:\n > arr = { 'length': 0 };\n > arr = push( arr, 1.0, 2.0 )\n { 'length': 2, '0': 1.0, '1': 2.0 }\n\n See Also\n --------\n pop, shift, unshift\n", "quarterOfYear": "\nquarterOfYear( [month] )\n Returns the quarter of the year.\n\n By default, the function returns the quarter of the year for the current\n month in the current year (according to local time). To determine the\n quarter for a particular month, provide either a month or a `Date`\n object.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n Parameters\n ----------\n month: integer|string|Date (optional)\n Month (or `Date`).\n\n Returns\n -------\n out: integer\n Quarter of the year.\n\n Examples\n --------\n > var q = quarterOfYear( new Date() )\n \n > q = quarterOfYear( 4 )\n 2\n > q = quarterOfYear( 'June' )\n 2\n\n // Other ways to supply month:\n > q = quarterOfYear( 'April' )\n 2\n > q = quarterOfYear( 'apr' )\n 2\n\n See Also\n --------\n dayOfYear\n", From 5bb76bbf8d3a53bf73db872678cff0f273714305 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 02:59:37 -0700 Subject: [PATCH 0043/1062] Add utility to return an object's own non-enumerable property names --- .../nonenumerable-property-names/README.md | 122 +++++++++++++++ .../benchmark/benchmark.js | 72 +++++++++ .../docs/repl.txt | 36 +++++ .../examples/index.js | 50 +++++++ .../nonenumerable-property-names/lib/index.js | 50 +++++++ .../nonenumerable-property-names/lib/main.js | 99 +++++++++++++ .../nonenumerable-property-names/package.json | 68 +++++++++ .../nonenumerable-property-names/test/test.js | 140 ++++++++++++++++++ 8 files changed, 637 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-names/README.md create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-names/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-names/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-names/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-names/package.json create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-names/test/test.js diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/README.md b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/README.md new file mode 100644 index 000000000000..d1b053d3622f --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/README.md @@ -0,0 +1,122 @@ + + +# nonEnumerablePropertyNames + +> Return an array of an object's own non-enumerable property names. + +
+ +## Usage + + + +```javascript +var nonEnumerablePropertyNames = require( '@stdlib/utils/nonenumerable-property-names' ); +``` + +#### nonEnumerablePropertyNames( obj ) + +Returns an `array` of an object's own non-enumerable property names. + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = { + 'a': 'b' +}; + +defineProperty( obj, 'c', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'd' +}); + +var keys = nonEnumerablePropertyNames( obj ); +// returns [ 'c' ] +``` + +
+ + + +
+ +## Notes + +- Name order is not guaranteed, as `object` key enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. practice, however, most engines use insertion order to sort an `object`'s keys, thus allowing for deterministic extraction. + +
+ + + +
+ +## Examples + + + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var nonEnumerablePropertyNames = require( '@stdlib/utils/nonenumerable-property-names' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; +defineProperty( Foo.prototype, 'bip', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' +}); + +var obj = new Foo(); +var keys = nonEnumerablePropertyNames( obj ); + +console.log( keys ); +// => [ 'baz' ] +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/benchmark/benchmark.js new file mode 100644 index 000000000000..b12c3b7896c5 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var nonEnumProps = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = nonEnumProps( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/docs/repl.txt b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/docs/repl.txt new file mode 100644 index 000000000000..08f7b6f9a317 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/docs/repl.txt @@ -0,0 +1,36 @@ + +{{alias}}( value ) + Returns an array of an object's own non-enumerable property names. + + Name order is not guaranteed, as object key enumeration is not specified + according to the ECMAScript specification. In practice, however, most + engines use insertion order to sort an object's keys, thus allowing for + deterministic extraction. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + Returns + ------- + keys: Array + List of an object's own enumerable non-enumerable property names. + + Examples + -------- + > var obj = {}; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = false; + > desc.writable = true; + > desc.value = 'boop'; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var keys = {{alias}}( obj ) + e.g., [ 'beep', ... ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/examples/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/examples/index.js new file mode 100644 index 000000000000..2f9fec2e86ed --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/examples/index.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var nonEnumerablePropertyNames = require( './../lib' ); // eslint-disable-line id-length + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; +defineProperty( Foo.prototype, 'bip', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' +}); + +var obj = new Foo(); +var keys = nonEnumerablePropertyNames( obj ); + +console.log( keys ); +// => [ 'baz' ] diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/index.js new file mode 100644 index 000000000000..93af29ba844d --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/index.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's own non-enumerable property names. +* +* @module @stdlib/utils/nonenumerable-property-names +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var nonEnumerablePropertyNames = require( '@stdlib/utils/nonenumerable-property-names' ); +* +* var obj = {}; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'writable': false, +* 'value': 'boop' +* }); +* +* var keys = nonEnumerablePropertyNames( obj ); +* // returns [ 'beep' ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/main.js new file mode 100644 index 000000000000..b8e8cc473678 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/main.js @@ -0,0 +1,99 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); +var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating if an array contains a provided value. +* +* @private +* @param {Array} arr - array +* @param {NonNegativeInteger} N - array length +* @param {*} v - search value +* @returns {boolean} boolean indicating if an array contains a search value +*/ +function contains( arr, N, v ) { + var i; + for ( i = 0; i < N; i++ ) { + if ( arr[ i ] === v ) { + return true; + } + } + return false; +} + + +// MAIN // + +/** +* Returns an array of an object's own non-enumerable property names. +* +* @param {*} value - input object +* @returns {Array} a list of own non-enumerable property names +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = {}; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'writable': false, +* 'value': 'boop' +* }); +* +* var keys = nonEnumerablePropertyNames( obj ); +* // returns [ 'beep' ] +*/ +function nonEnumerablePropertyNames( value ) { // eslint-disable-line id-length + var names; + var i; + var n; + + if ( value === null || value === void 0 ) { + return []; + } + names = getOwnPropertyNames( Object( value ) ); + n = 0; + for ( i = 0; i < names.length; i++ ) { + if ( + isNonEnumerableProperty( value, names[ i ] ) && + contains( names, n, names[ i ] ) === false + ) { + names[ n ] = names[ i ]; + n += 1; + } + } + names.length = n; + + return names; +} + + +// EXPORTS // + +module.exports = nonEnumerablePropertyNames; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/package.json b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/package.json new file mode 100644 index 000000000000..3d0d683f8cfb --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/package.json @@ -0,0 +1,68 @@ +{ + "name": "@stdlib/utils/nonenumerable-property-names", + "version": "0.0.0", + "description": "Return an array of an object's own non-enumerable property names.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "names", + "keys", + "enumerable", + "non-enumerable", + "own", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/test/test.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/test/test.js new file mode 100644 index 000000000000..17d3e3fea195 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/test/test.js @@ -0,0 +1,140 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var nonEnumerablePropertyNames = require( './../lib' ); // eslint-disable-line id-length + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof nonEnumerablePropertyNames, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns an array of an object\'s own non-enumerable property names', function test( t ) { + var expected; + var actual; + var obj; + var idx; + var i; + + function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + defineProperty( this, 'f', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'g' + }); + defineProperty( this, 'h', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'i' + }); + return this; + } + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ 'd', 'f', 'h' ]; + actual = nonEnumerablePropertyNames( obj ); + + t.strictEqual( actual.length, 3, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s own non-enumerable property names (string)', function test( t ) { + var expected; + var actual; + + expected = [ 'length' ]; + actual = nonEnumerablePropertyNames( 'foo' ); + + t.deepEqual( actual, expected, 'returns expected results' ); + t.end(); +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = nonEnumerablePropertyNames( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided a non-string primitive', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + 3.14, + NaN, + true, + false + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = nonEnumerablePropertyNames( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From e49ec261db12c023d484e033674152e1fa106f6b Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 03:00:56 -0700 Subject: [PATCH 0044/1062] Fix require path --- .../@stdlib/utils/nonenumerable-property-names-in/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/README.md b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/README.md index 8ac819d10a40..2e7e8b7c100f 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/README.md +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/README.md @@ -78,7 +78,7 @@ var keys = nonEnumerablePropertyNamesIn( obj ); ```javascript var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerablePropertyNamesIn = require( '@stdlib/utils/property-names-in' ); +var nonEnumerablePropertyNamesIn = require( '@stdlib/utils/nonenumerable-property-names-in' ); function Foo() { this.beep = 'boop'; From 9f60c09465b35a88499b4631ac83682c1586ab03 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 03:01:47 -0700 Subject: [PATCH 0045/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 9b62c84c0379..4f8742781f9f 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -990,6 +990,15 @@ setReadOnly( utils, 'noneByRight', require( '@stdlib/utils/none-by-right' ) ); */ setReadOnly( utils, 'noneByRightAsync', require( '@stdlib/utils/none-by-right-async' ) ); +/** +* @name nonEnumerablePropertyNames +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/nonenumerable-property-names} +*/ +setReadOnly( utils, 'nonEnumerablePropertyNames', require( '@stdlib/utils/nonenumerable-property-names' ) ); + /** * @name nonEnumerablePropertyNamesIn * @memberof utils From 54a9abb6217e2cb10328c1463c411379701eb266 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 03:02:13 -0700 Subject: [PATCH 0046/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/n.js | 12 ++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 +++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js index 9e51c2baac4a..132b81c39c64 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js @@ -264,6 +264,18 @@ ns.push({ ] }); +ns.push({ + 'alias': 'nonEnumerablePropertyNames', + 'path': '@stdlib/utils/nonenumerable-property-names', + 'value': require( '@stdlib/utils/nonenumerable-property-names' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/keys', + '@stdlib/utils/nonenumerable-property-names-in', + '@stdlib/utils/property-names' + ] +}); + ns.push({ 'alias': 'nonEnumerablePropertyNamesIn', 'path': '@stdlib/utils/nonenumerable-property-names-in', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index ccc17e154e0d..108323997d2d 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1344,6 +1344,7 @@ var db = { "noneByAsync": "\n// Basic usage:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'series': true };\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, opts, predicate, done )\n", "noneByRight": "function positive( v ) { return ( v > 0 ); };\narr = [ -1, -2, -3, -4 ];\nbool = noneByRight( arr, positive )\n", "noneByRightAsync": "\n// Basic usage:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'limit': 2 };\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'series': true };\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, opts, predicate, done )\n", + "nonEnumerablePropertyNames": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerablePropertyNames( obj )\n", "nonEnumerablePropertyNamesIn": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerablePropertyNamesIn( obj )\n", "noop": "noop();\n", "now": "ts = now()\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index e5ec37c2fa05..110c3d1e90f1 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1345,7 +1345,8 @@ var db = { "noneByAsync": "\nnoneByAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByAsync, everyByAsync, forEachAsync, noneBy, noneByRightAsync, someByAsync\n", "noneByRight": "\nnoneByRight( collection, predicate[, thisArg ] )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n The predicate function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n The function immediately returns upon encountering a truthy return value.\n\n If provided an empty collection, the function returns `true`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n predicate: Function\n The test function.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n bool: boolean\n The function returns `true` if the predicate function returns a falsy\n value for all elements; otherwise, the function returns `false`.\n\n Examples\n --------\n > function positive( v ) { return ( v > 0 ); };\n > var arr = [ -1, -2, -3, -4 ];\n > var bool = noneByRight( arr, positive )\n true\n\n See Also\n --------\n anyByRight, everyByRight, forEachRight, none, noneBy, someByRight\n", "noneByRightAsync": "\nnoneByRightAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByRightAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function, iterating from right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByRightAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByRightAsync, everyByRightAsync, forEachRightAsync, noneByAsync, noneByRight, someByRightAsync\n", - "nonEnumerablePropertyNamesIn": "\nnonEnumerablePropertyNamesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable non-enumerable property\n names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNamesIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, propertyNamesIn\n", + "nonEnumerablePropertyNames": "\nnonEnumerablePropertyNames( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNames( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNamesIn, propertyNames\n", + "nonEnumerablePropertyNamesIn": "\nnonEnumerablePropertyNamesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable non-enumerable property\n names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNamesIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, nonEnumerablePropertyNames, propertyNamesIn\n", "noop": "\nnoop()\n A function which does nothing.\n\n Examples\n --------\n > noop();\n\n", "now": "\nnow()\n Returns the time in seconds since the epoch.\n\n The Unix epoch is 00:00:00 UTC on 1 January 1970.\n\n Returns\n -------\n out: integer\n Time in seconds since the epoch.\n\n Examples\n --------\n > var ts = now()\n \n\n", "NUM_CPUS": "\nNUM_CPUS\n Number of CPUs.\n\n In browser environments, the number of CPUs is determined by querying the\n hardware concurrency API.\n\n In Node.js environments, the number of CPUs is determined via the `os`\n module.\n\n Examples\n --------\n > NUM_CPUS\n \n\n", @@ -1386,7 +1387,7 @@ var db = { "pluck": "\npluck( arr, prop[, options] )\n Extracts a property value from each element of an object array.\n\n The function skips `null` and `undefined` array elements.\n\n Extracted values are not cloned.\n\n Parameters\n ----------\n arr: Array\n Source array.\n\n prop: string\n Property to access.\n\n options: Object (optional)\n Options.\n\n options.copy: boolean (optional)\n Boolean indicating whether to return a new data structure. To mutate the\n input data structure (e.g., when input values can be discarded or when\n optimizing memory usage), set the `copy` option to `false`. Default:\n true.\n\n Returns\n -------\n out: Array\n Destination array.\n\n Examples\n --------\n > var arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > var out = pluck( arr, 'a' )\n [ 1, 0.5 ]\n\n > arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > out = pluck( arr, 'a', { 'copy': false } )\n [ 1, 0.5 ]\n > var bool = ( arr[ 0 ] === out[ 0 ] )\n true\n\n See Also\n --------\n deepPluck, pick\n", "pop": "\npop( collection )\n Removes and returns the last element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = pop( arr )\n [ [ 1.0, 2.0, 3.0, 4.0 ], 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = pop( arr )\n [ [ 1.0 ], 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = pop( arr )\n [ { 'length': 1, '0': 1.0 }, 2.0 ]\n\n See Also\n --------\n push, shift, unshift\n", "prepend": "\nprepend( collection1, collection2 )\n Adds the elements of one collection to the beginning of another collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection1: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n collection2: Array|TypedArray|Object\n A collection containing the elements to add. If the collection is an\n `Object`, the collection should be array-like.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = prepend( arr, [ 6.0, 7.0 ] )\n [ 6.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = prepend( arr, [ 3.0, 4.0 ] )\n [ 3.0, 4.0, 1.0, 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 1, '0': 1.0 };\n > arr = prepend( arr, [ 2.0, 3.0 ] )\n { 'length': 3, '0': 2.0, '1': 3.0, '2': 1.0 }\n\n See Also\n --------\n append, unshift\n", - "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys, propertyNamesIn\n", + "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNames, propertyNamesIn\n", "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNamesIn, propertyNames\n", "Proxy": "\nProxy( target, handlers )\n Returns a proxy object implementing custom behavior for specified object\n operations.\n\n The following \"traps\" are supported:\n\n - getPrototypeOf( target )\n Trap for `Object.getPrototypeOf()`. Can be used to intercept the\n `instanceof` operator. The method must return an object or `null`.\n\n - setPrototypeOf( target, prototype )\n Trap for `Object.setPrototypeOf()`. The method must return a boolean\n indicating if prototype successfully set.\n\n - isExtensible( target )\n Trap for `Object.isExtensible()`. The method must return a boolean.\n\n - preventExtensions( target )\n Trap for `Object.preventExtensions()`. The method must return a boolean.\n\n - getOwnPropertyDescriptor( target, property )\n Trap for `Object.getOwnPropertyDescriptor()`. The method must return an\n object or `undefined`.\n\n - defineProperty( target, property, descriptor )\n Trap for `Object.defineProperty()`. The method must return a boolean\n indicating whether the operation succeeded.\n\n - has( target, property )\n Trap for the `in` operator. The method must return a boolean.\n\n - get( target, property, receiver )\n Trap for retrieving property values. The method can return any value.\n\n - set( target, property, value, receiver )\n Trap for setting property values. The method should return a boolean\n indicating whether assignment succeeded.\n\n - deleteProperty( target, property )\n Trap for the `delete` operator. The method must return a boolean\n indicating whether operation succeeded.\n\n - ownKeys( target )\n Trap for `Object.keys`, `Object.getOwnPropertyNames()`, and\n `Object.getOwnPropertySymbols()`. The method must return an enumerable\n object.\n\n - apply( target, thisArg, argumentsList )\n Trap for a function call. The method can return any value.\n\n - construct( target, argumentsList, newTarget )\n Trap for the `new` operator. The method must return an object.\n\n All traps are optional. If a trap is not defined, the default behavior is to\n forward the operation to the target.\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Proxy object.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.a = 3.14;\n > p.a\n 6.28\n\n\nProxy.revocable( target, handlers )\n Returns a revocable proxy object\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Revocable proxy object.\n\n p.proxy: Object\n Proxy object.\n\n p.revoke: Function\n Invalidates a proxy, rendering a proxy object unusable.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.proxy.a = 3.14;\n > p.proxy.a\n 6.28\n > p.revoke();\n\n", "push": "\npush( collection, ...items )\n Adds one or more elements to the end of a collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n items: ...any\n Items to add.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = push( arr, 6.0, 7.0 )\n [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = push( arr, 3.0, 4.0 )\n [ 1.0, 2.0, 3.0, 4.0 ]\n\n // Array-like object:\n > arr = { 'length': 0 };\n > arr = push( arr, 1.0, 2.0 )\n { 'length': 2, '0': 1.0, '1': 2.0 }\n\n See Also\n --------\n pop, shift, unshift\n", From a5431c1555113a08240917f962aedd1d1c277a32 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 03:26:48 -0700 Subject: [PATCH 0047/1062] Rename packages --- .../@stdlib/namespace/lib/namespace/n.js | 12 ++++++------ .../@stdlib/namespace/lib/namespace/p.js | 4 ++-- lib/node_modules/@stdlib/utils/lib/index.js | 8 ++++---- .../README.md | 4 ++-- .../benchmark/benchmark.js | 0 .../docs/repl.txt | 0 .../examples/index.js | 0 .../lib/index.js | 4 ++-- .../lib/main.js | 0 .../package.json | 2 +- .../test/test.js | 0 .../README.md | 4 ++-- .../benchmark/benchmark.js | 0 .../docs/repl.txt | 0 .../examples/index.js | 0 .../lib/index.js | 4 ++-- .../lib/main.js | 0 .../package.json | 2 +- .../test/test.js | 0 19 files changed, 22 insertions(+), 22 deletions(-) rename lib/node_modules/@stdlib/utils/{nonenumerable-property-names-in => nonenumerable-keys-in}/README.md (97%) rename lib/node_modules/@stdlib/utils/{nonenumerable-property-names-in => nonenumerable-keys-in}/benchmark/benchmark.js (100%) rename lib/node_modules/@stdlib/utils/{nonenumerable-property-names-in => nonenumerable-keys-in}/docs/repl.txt (100%) rename lib/node_modules/@stdlib/utils/{nonenumerable-property-names-in => nonenumerable-keys-in}/examples/index.js (100%) rename lib/node_modules/@stdlib/utils/{nonenumerable-property-names-in => nonenumerable-keys-in}/lib/index.js (93%) rename lib/node_modules/@stdlib/utils/{nonenumerable-property-names-in => nonenumerable-keys-in}/lib/main.js (100%) rename lib/node_modules/@stdlib/utils/{nonenumerable-property-names-in => nonenumerable-keys-in}/package.json (95%) rename lib/node_modules/@stdlib/utils/{nonenumerable-property-names-in => nonenumerable-keys-in}/test/test.js (100%) rename lib/node_modules/@stdlib/utils/{nonenumerable-property-names => nonenumerable-keys}/README.md (98%) rename lib/node_modules/@stdlib/utils/{nonenumerable-property-names => nonenumerable-keys}/benchmark/benchmark.js (100%) rename lib/node_modules/@stdlib/utils/{nonenumerable-property-names => nonenumerable-keys}/docs/repl.txt (100%) rename lib/node_modules/@stdlib/utils/{nonenumerable-property-names => nonenumerable-keys}/examples/index.js (100%) rename lib/node_modules/@stdlib/utils/{nonenumerable-property-names => nonenumerable-keys}/lib/index.js (93%) rename lib/node_modules/@stdlib/utils/{nonenumerable-property-names => nonenumerable-keys}/lib/main.js (100%) rename lib/node_modules/@stdlib/utils/{nonenumerable-property-names => nonenumerable-keys}/package.json (95%) rename lib/node_modules/@stdlib/utils/{nonenumerable-property-names => nonenumerable-keys}/test/test.js (100%) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js index 132b81c39c64..b8da298901a2 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js @@ -266,24 +266,24 @@ ns.push({ ns.push({ 'alias': 'nonEnumerablePropertyNames', - 'path': '@stdlib/utils/nonenumerable-property-names', - 'value': require( '@stdlib/utils/nonenumerable-property-names' ), + 'path': '@stdlib/utils/nonenumerable-keys', + 'value': require( '@stdlib/utils/nonenumerable-keys' ), 'type': 'Function', 'related': [ '@stdlib/utils/keys', - '@stdlib/utils/nonenumerable-property-names-in', + '@stdlib/utils/nonenumerable-keys-in', '@stdlib/utils/property-names' ] }); ns.push({ 'alias': 'nonEnumerablePropertyNamesIn', - 'path': '@stdlib/utils/nonenumerable-property-names-in', - 'value': require( '@stdlib/utils/nonenumerable-property-names-in' ), + 'path': '@stdlib/utils/nonenumerable-keys-in', + 'value': require( '@stdlib/utils/nonenumerable-keys-in' ), 'type': 'Function', 'related': [ '@stdlib/utils/keys-in', - '@stdlib/utils/nonenumerable-property-names', + '@stdlib/utils/nonenumerable-keys', '@stdlib/utils/property-names-in' ] }); diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js index ed8c3d2d3dd9..926315dbb043 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js @@ -282,7 +282,7 @@ ns.push({ 'type': 'Function', 'related': [ '@stdlib/utils/keys', - '@stdlib/utils/nonenumerable-property-names', + '@stdlib/utils/nonenumerable-keys', '@stdlib/utils/property-names-in' ] }); @@ -294,7 +294,7 @@ ns.push({ 'type': 'Function', 'related': [ '@stdlib/utils/keys', - '@stdlib/utils/nonenumerable-property-names-in', + '@stdlib/utils/nonenumerable-keys-in', '@stdlib/utils/property-names' ] }); diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 4f8742781f9f..3238b171f6e4 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -995,18 +995,18 @@ setReadOnly( utils, 'noneByRightAsync', require( '@stdlib/utils/none-by-right-as * @memberof utils * @readonly * @type {Function} -* @see {@link module:@stdlib/utils/nonenumerable-property-names} +* @see {@link module:@stdlib/utils/nonenumerable-keys} */ -setReadOnly( utils, 'nonEnumerablePropertyNames', require( '@stdlib/utils/nonenumerable-property-names' ) ); +setReadOnly( utils, 'nonEnumerablePropertyNames', require( '@stdlib/utils/nonenumerable-keys' ) ); /** * @name nonEnumerablePropertyNamesIn * @memberof utils * @readonly * @type {Function} -* @see {@link module:@stdlib/utils/nonenumerable-property-names-in} +* @see {@link module:@stdlib/utils/nonenumerable-keys-in} */ -setReadOnly( utils, 'nonEnumerablePropertyNamesIn', require( '@stdlib/utils/nonenumerable-property-names-in' ) ); +setReadOnly( utils, 'nonEnumerablePropertyNamesIn', require( '@stdlib/utils/nonenumerable-keys-in' ) ); /** * @name noop diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/README.md b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/README.md similarity index 97% rename from lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/README.md rename to lib/node_modules/@stdlib/utils/nonenumerable-keys-in/README.md index 2e7e8b7c100f..b08acad19d33 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/README.md +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/README.md @@ -29,7 +29,7 @@ limitations under the License. ```javascript -var nonEnumerablePropertyNamesIn = require( '@stdlib/utils/nonenumerable-property-names-in' ); +var nonEnumerablePropertyNamesIn = require( '@stdlib/utils/nonenumerable-keys-in' ); ``` #### nonEnumerablePropertyNamesIn( obj ) @@ -78,7 +78,7 @@ var keys = nonEnumerablePropertyNamesIn( obj ); ```javascript var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerablePropertyNamesIn = require( '@stdlib/utils/nonenumerable-property-names-in' ); +var nonEnumerablePropertyNamesIn = require( '@stdlib/utils/nonenumerable-keys-in' ); function Foo() { this.beep = 'boop'; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/benchmark/benchmark.js similarity index 100% rename from lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/benchmark/benchmark.js rename to lib/node_modules/@stdlib/utils/nonenumerable-keys-in/benchmark/benchmark.js diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/docs/repl.txt b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/docs/repl.txt similarity index 100% rename from lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/docs/repl.txt rename to lib/node_modules/@stdlib/utils/nonenumerable-keys-in/docs/repl.txt diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/examples/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/examples/index.js similarity index 100% rename from lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/examples/index.js rename to lib/node_modules/@stdlib/utils/nonenumerable-keys-in/examples/index.js diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/index.js similarity index 93% rename from lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/index.js rename to lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/index.js index a4eb68ce3572..593e3ecb638a 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/index.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/index.js @@ -21,11 +21,11 @@ /** * Return an array of an object's own and inherited non-enumerable property names. * -* @module @stdlib/utils/nonenumerable-property-names-in +* @module @stdlib/utils/nonenumerable-keys-in * * @example * var defineProperty = require( '@stdlib/utils/define-property' ); -* var nonEnumerablePropertyNamesIn = require( '@stdlib/utils/nonenumerable-property-names-in' ); +* var nonEnumerablePropertyNamesIn = require( '@stdlib/utils/nonenumerable-keys-in' ); * * var obj = {}; * diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/main.js similarity index 100% rename from lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/main.js rename to lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/main.js diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/package.json b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/package.json similarity index 95% rename from lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/package.json rename to lib/node_modules/@stdlib/utils/nonenumerable-keys-in/package.json index 98045c2c7a6d..19d0744e0910 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/package.json +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/package.json @@ -1,5 +1,5 @@ { - "name": "@stdlib/utils/nonenumerable-property-names-in", + "name": "@stdlib/utils/nonenumerable-keys-in", "version": "0.0.0", "description": "Return an array of an object's own and inherited non-enumerable property names.", "license": "Apache-2.0", diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/test/test.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/test/test.js similarity index 100% rename from lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/test/test.js rename to lib/node_modules/@stdlib/utils/nonenumerable-keys-in/test/test.js diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/README.md b/lib/node_modules/@stdlib/utils/nonenumerable-keys/README.md similarity index 98% rename from lib/node_modules/@stdlib/utils/nonenumerable-property-names/README.md rename to lib/node_modules/@stdlib/utils/nonenumerable-keys/README.md index d1b053d3622f..7425f01e77de 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/README.md +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys/README.md @@ -29,7 +29,7 @@ limitations under the License. ```javascript -var nonEnumerablePropertyNames = require( '@stdlib/utils/nonenumerable-property-names' ); +var nonEnumerablePropertyNames = require( '@stdlib/utils/nonenumerable-keys' ); ``` #### nonEnumerablePropertyNames( obj ) @@ -78,7 +78,7 @@ var keys = nonEnumerablePropertyNames( obj ); ```javascript var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerablePropertyNames = require( '@stdlib/utils/nonenumerable-property-names' ); +var nonEnumerablePropertyNames = require( '@stdlib/utils/nonenumerable-keys' ); function Foo() { this.beep = 'boop'; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys/benchmark/benchmark.js similarity index 100% rename from lib/node_modules/@stdlib/utils/nonenumerable-property-names/benchmark/benchmark.js rename to lib/node_modules/@stdlib/utils/nonenumerable-keys/benchmark/benchmark.js diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/docs/repl.txt b/lib/node_modules/@stdlib/utils/nonenumerable-keys/docs/repl.txt similarity index 100% rename from lib/node_modules/@stdlib/utils/nonenumerable-property-names/docs/repl.txt rename to lib/node_modules/@stdlib/utils/nonenumerable-keys/docs/repl.txt diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/examples/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys/examples/index.js similarity index 100% rename from lib/node_modules/@stdlib/utils/nonenumerable-property-names/examples/index.js rename to lib/node_modules/@stdlib/utils/nonenumerable-keys/examples/index.js diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/index.js similarity index 93% rename from lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/index.js rename to lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/index.js index 93af29ba844d..11f42d6ffb99 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/index.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/index.js @@ -21,11 +21,11 @@ /** * Return an array of an object's own non-enumerable property names. * -* @module @stdlib/utils/nonenumerable-property-names +* @module @stdlib/utils/nonenumerable-keys * * @example * var defineProperty = require( '@stdlib/utils/define-property' ); -* var nonEnumerablePropertyNames = require( '@stdlib/utils/nonenumerable-property-names' ); +* var nonEnumerablePropertyNames = require( '@stdlib/utils/nonenumerable-keys' ); * * var obj = {}; * diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/main.js similarity index 100% rename from lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/main.js rename to lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/main.js diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/package.json b/lib/node_modules/@stdlib/utils/nonenumerable-keys/package.json similarity index 95% rename from lib/node_modules/@stdlib/utils/nonenumerable-property-names/package.json rename to lib/node_modules/@stdlib/utils/nonenumerable-keys/package.json index 3d0d683f8cfb..f164f006ed3c 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/package.json +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys/package.json @@ -1,5 +1,5 @@ { - "name": "@stdlib/utils/nonenumerable-property-names", + "name": "@stdlib/utils/nonenumerable-keys", "version": "0.0.0", "description": "Return an array of an object's own non-enumerable property names.", "license": "Apache-2.0", diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/test/test.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys/test/test.js similarity index 100% rename from lib/node_modules/@stdlib/utils/nonenumerable-property-names/test/test.js rename to lib/node_modules/@stdlib/utils/nonenumerable-keys/test/test.js From ffdb13378e0a90ed2608475f104a0dd2723c9957 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 03:28:17 -0700 Subject: [PATCH 0048/1062] Update aliases --- lib/node_modules/@stdlib/namespace/lib/namespace/n.js | 4 ++-- lib/node_modules/@stdlib/utils/lib/index.js | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js index b8da298901a2..75b836daa1bd 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js @@ -265,7 +265,7 @@ ns.push({ }); ns.push({ - 'alias': 'nonEnumerablePropertyNames', + 'alias': 'nonEnumerableKeys', 'path': '@stdlib/utils/nonenumerable-keys', 'value': require( '@stdlib/utils/nonenumerable-keys' ), 'type': 'Function', @@ -277,7 +277,7 @@ ns.push({ }); ns.push({ - 'alias': 'nonEnumerablePropertyNamesIn', + 'alias': 'nonEnumerableKeysIn', 'path': '@stdlib/utils/nonenumerable-keys-in', 'value': require( '@stdlib/utils/nonenumerable-keys-in' ), 'type': 'Function', diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 3238b171f6e4..46c315b23290 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -991,22 +991,22 @@ setReadOnly( utils, 'noneByRight', require( '@stdlib/utils/none-by-right' ) ); setReadOnly( utils, 'noneByRightAsync', require( '@stdlib/utils/none-by-right-async' ) ); /** -* @name nonEnumerablePropertyNames +* @name nonEnumerableKeys * @memberof utils * @readonly * @type {Function} * @see {@link module:@stdlib/utils/nonenumerable-keys} */ -setReadOnly( utils, 'nonEnumerablePropertyNames', require( '@stdlib/utils/nonenumerable-keys' ) ); +setReadOnly( utils, 'nonEnumerableKeys', require( '@stdlib/utils/nonenumerable-keys' ) ); /** -* @name nonEnumerablePropertyNamesIn +* @name nonEnumerableKeysIn * @memberof utils * @readonly * @type {Function} * @see {@link module:@stdlib/utils/nonenumerable-keys-in} */ -setReadOnly( utils, 'nonEnumerablePropertyNamesIn', require( '@stdlib/utils/nonenumerable-keys-in' ) ); +setReadOnly( utils, 'nonEnumerableKeysIn', require( '@stdlib/utils/nonenumerable-keys-in' ) ); /** * @name noop From 6f61ceb96cda747c3f260fa2fe9e752be1b23448 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 03:33:58 -0700 Subject: [PATCH 0049/1062] Rename variables --- .../@stdlib/utils/nonenumerable-keys/README.md | 16 ++++++---------- .../nonenumerable-keys/benchmark/benchmark.js | 4 ++-- .../utils/nonenumerable-keys/examples/index.js | 4 ++-- .../utils/nonenumerable-keys/lib/index.js | 4 ++-- .../@stdlib/utils/nonenumerable-keys/lib/main.js | 6 +++--- .../utils/nonenumerable-keys/test/test.js | 12 ++++++------ 6 files changed, 21 insertions(+), 25 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys/README.md b/lib/node_modules/@stdlib/utils/nonenumerable-keys/README.md index 7425f01e77de..5e75e0ef8c35 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys/README.md +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys/README.md @@ -18,7 +18,7 @@ limitations under the License. --> -# nonEnumerablePropertyNames +# nonEnumerableKeys > Return an array of an object's own non-enumerable property names. @@ -26,13 +26,11 @@ limitations under the License. ## Usage - - ```javascript -var nonEnumerablePropertyNames = require( '@stdlib/utils/nonenumerable-keys' ); +var nonEnumerableKeys = require( '@stdlib/utils/nonenumerable-keys' ); ``` -#### nonEnumerablePropertyNames( obj ) +#### nonEnumerableKeys( obj ) Returns an `array` of an object's own non-enumerable property names. @@ -50,7 +48,7 @@ defineProperty( obj, 'c', { 'value': 'd' }); -var keys = nonEnumerablePropertyNames( obj ); +var keys = nonEnumerableKeys( obj ); // returns [ 'c' ] ``` @@ -72,13 +70,11 @@ var keys = nonEnumerablePropertyNames( obj ); ## Examples - - ```javascript var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerablePropertyNames = require( '@stdlib/utils/nonenumerable-keys' ); +var nonEnumerableKeys = require( '@stdlib/utils/nonenumerable-keys' ); function Foo() { this.beep = 'boop'; @@ -103,7 +99,7 @@ defineProperty( Foo.prototype, 'bip', { }); var obj = new Foo(); -var keys = nonEnumerablePropertyNames( obj ); +var keys = nonEnumerableKeys( obj ); console.log( keys ); // => [ 'baz' ] diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys/benchmark/benchmark.js index b12c3b7896c5..ce7a621acee9 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys/benchmark/benchmark.js @@ -25,7 +25,7 @@ var isArray = require( '@stdlib/assert/is-array' ); var randu = require( '@stdlib/random/base/randu' ); var defineProperty = require( '@stdlib/utils/define-property' ); var pkg = require( './../package.json' ).name; -var nonEnumProps = require( './../lib' ); +var nonEnumerableKeys = require( './../lib' ); // MAIN // @@ -58,7 +58,7 @@ bench( pkg, function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { obj.f = randu(); - out = nonEnumProps( obj ); + out = nonEnumerableKeys( obj ); if ( !isArray( out ) ) { b.fail( 'should return an array' ); } diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys/examples/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys/examples/index.js index 2f9fec2e86ed..96aa13c2a56b 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys/examples/index.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys/examples/index.js @@ -19,7 +19,7 @@ 'use strict'; var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerablePropertyNames = require( './../lib' ); // eslint-disable-line id-length +var nonEnumerableKeys = require( './../lib' ); function Foo() { this.beep = 'boop'; @@ -44,7 +44,7 @@ defineProperty( Foo.prototype, 'bip', { }); var obj = new Foo(); -var keys = nonEnumerablePropertyNames( obj ); +var keys = nonEnumerableKeys( obj ); console.log( keys ); // => [ 'baz' ] diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/index.js index 11f42d6ffb99..bda373fabe3f 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/index.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/index.js @@ -25,7 +25,7 @@ * * @example * var defineProperty = require( '@stdlib/utils/define-property' ); -* var nonEnumerablePropertyNames = require( '@stdlib/utils/nonenumerable-keys' ); +* var nonEnumerableKeys = require( '@stdlib/utils/nonenumerable-keys' ); * * var obj = {}; * @@ -36,7 +36,7 @@ * 'value': 'boop' * }); * -* var keys = nonEnumerablePropertyNames( obj ); +* var keys = nonEnumerableKeys( obj ); * // returns [ 'beep' ] */ diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/main.js index b8e8cc473678..06c3ff58d8ba 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/main.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/main.js @@ -66,10 +66,10 @@ function contains( arr, N, v ) { * 'value': 'boop' * }); * -* var keys = nonEnumerablePropertyNames( obj ); +* var keys = nonEnumerableKeys( obj ); * // returns [ 'beep' ] */ -function nonEnumerablePropertyNames( value ) { // eslint-disable-line id-length +function nonEnumerableKeys( value ) { var names; var i; var n; @@ -96,4 +96,4 @@ function nonEnumerablePropertyNames( value ) { // eslint-disable-line id-length // EXPORTS // -module.exports = nonEnumerablePropertyNames; +module.exports = nonEnumerableKeys; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys/test/test.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys/test/test.js index 17d3e3fea195..b29251c7fdaf 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys/test/test.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys/test/test.js @@ -23,14 +23,14 @@ var tape = require( 'tape' ); var indexOf = require( '@stdlib/utils/index-of' ); var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerablePropertyNames = require( './../lib' ); // eslint-disable-line id-length +var nonEnumerableKeys = require( './../lib' ); // TESTS // tape( 'main export is a function', function test( t ) { t.ok( true, __filename ); - t.strictEqual( typeof nonEnumerablePropertyNames, 'function', 'main export is a function' ); + t.strictEqual( typeof nonEnumerableKeys, 'function', 'main export is a function' ); t.end(); }); @@ -78,7 +78,7 @@ tape( 'the function returns an array of an object\'s own non-enumerable property obj = new Foo(); expected = [ 'd', 'f', 'h' ]; - actual = nonEnumerablePropertyNames( obj ); + actual = nonEnumerableKeys( obj ); t.strictEqual( actual.length, 3, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { @@ -93,7 +93,7 @@ tape( 'the function returns an array of an object\'s own non-enumerable property var actual; expected = [ 'length' ]; - actual = nonEnumerablePropertyNames( 'foo' ); + actual = nonEnumerableKeys( 'foo' ); t.deepEqual( actual, expected, 'returns expected results' ); t.end(); @@ -112,7 +112,7 @@ tape( 'the function returns an empty array if provided `null` or `undefined`', f expected = []; for ( i = 0; i < values.length; i++ ) { - actual = nonEnumerablePropertyNames( values[ i ] ); + actual = nonEnumerableKeys( values[ i ] ); t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); } t.end(); @@ -133,7 +133,7 @@ tape( 'the function returns an empty array if provided a non-string primitive', expected = []; for ( i = 0; i < values.length; i++ ) { - actual = nonEnumerablePropertyNames( values[ i ] ); + actual = nonEnumerableKeys( values[ i ] ); t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); } t.end(); From 089d3fb1a7d1a1c779be0c24012ecc0bb232317d Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 03:34:41 -0700 Subject: [PATCH 0050/1062] Rename variables --- .../utils/nonenumerable-keys-in/README.md | 16 ++++++---------- .../nonenumerable-keys-in/benchmark/benchmark.js | 4 ++-- .../nonenumerable-keys-in/examples/index.js | 4 ++-- .../utils/nonenumerable-keys-in/lib/index.js | 4 ++-- .../utils/nonenumerable-keys-in/lib/main.js | 6 +++--- .../utils/nonenumerable-keys-in/test/test.js | 8 ++++---- 6 files changed, 19 insertions(+), 23 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/README.md b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/README.md index b08acad19d33..9a761f41b91d 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/README.md +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/README.md @@ -18,7 +18,7 @@ limitations under the License. --> -# nonEnumerablePropertyNamesIn +# nonEnumerableKeysIn > Return an array of an object's own and inherited non-enumerable property names. @@ -26,13 +26,11 @@ limitations under the License. ## Usage - - ```javascript -var nonEnumerablePropertyNamesIn = require( '@stdlib/utils/nonenumerable-keys-in' ); +var nonEnumerableKeysIn = require( '@stdlib/utils/nonenumerable-keys-in' ); ``` -#### nonEnumerablePropertyNamesIn( obj ) +#### nonEnumerableKeysIn( obj ) Returns an `array` of an object's own and inherited non-enumerable property names. @@ -50,7 +48,7 @@ defineProperty( obj, 'c', { 'value': 'd' }); -var keys = nonEnumerablePropertyNamesIn( obj ); +var keys = nonEnumerableKeysIn( obj ); // e.g., returns [ 'c', ... ] ``` @@ -72,13 +70,11 @@ var keys = nonEnumerablePropertyNamesIn( obj ); ## Examples - - ```javascript var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerablePropertyNamesIn = require( '@stdlib/utils/nonenumerable-keys-in' ); +var nonEnumerableKeysIn = require( '@stdlib/utils/nonenumerable-keys-in' ); function Foo() { this.beep = 'boop'; @@ -103,7 +99,7 @@ defineProperty( Foo.prototype, 'bip', { }); var obj = new Foo(); -var keys = nonEnumerablePropertyNamesIn( obj ); +var keys = nonEnumerableKeysIn( obj ); console.log( keys ); // e.g., => [ 'baz', 'bip', ... ] diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/benchmark/benchmark.js index 38bd62faf5fe..e86dfc13484b 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/benchmark/benchmark.js @@ -25,7 +25,7 @@ var isArray = require( '@stdlib/assert/is-array' ); var randu = require( '@stdlib/random/base/randu' ); var defineProperty = require( '@stdlib/utils/define-property' ); var pkg = require( './../package.json' ).name; -var nonEnumPropsIn = require( './../lib' ); +var nonEnumerableKeysIn = require( './../lib' ); // MAIN // @@ -58,7 +58,7 @@ bench( pkg, function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { obj.f = randu(); - out = nonEnumPropsIn( obj ); + out = nonEnumerableKeysIn( obj ); if ( !isArray( out ) ) { b.fail( 'should return an array' ); } diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/examples/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/examples/index.js index 0d68c2fb6499..6742c1695fcf 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/examples/index.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/examples/index.js @@ -19,7 +19,7 @@ 'use strict'; var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerablePropertyNamesIn = require( './../lib' ); // eslint-disable-line id-length +var nonEnumerableKeysIn = require( './../lib' ); function Foo() { this.beep = 'boop'; @@ -44,7 +44,7 @@ defineProperty( Foo.prototype, 'bip', { }); var obj = new Foo(); -var keys = nonEnumerablePropertyNamesIn( obj ); +var keys = nonEnumerableKeysIn( obj ); console.log( keys ); // e.g., => [ 'baz', 'bip', ... ] diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/index.js index 593e3ecb638a..f4d4088400dc 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/index.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/index.js @@ -25,7 +25,7 @@ * * @example * var defineProperty = require( '@stdlib/utils/define-property' ); -* var nonEnumerablePropertyNamesIn = require( '@stdlib/utils/nonenumerable-keys-in' ); +* var nonEnumerableKeysIn = require( '@stdlib/utils/nonenumerable-keys-in' ); * * var obj = {}; * @@ -36,7 +36,7 @@ * 'value': 'boop' * }); * -* var keys = nonEnumerablePropertyNamesIn( obj ); +* var keys = nonEnumerableKeysIn( obj ); * // e.g., returns [ 'beep', ... ] */ diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/main.js index 3d5fdb6a37f7..da0581355f3b 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/main.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/main.js @@ -66,10 +66,10 @@ function contains( arr, v ) { * 'value': 'boop' * }); * -* var keys = nonEnumerablePropertyNamesIn( obj ); +* var keys = nonEnumerableKeysIn( obj ); * // e.g., returns [ 'beep', ... ] */ -function nonEnumerablePropertyNamesIn( value ) { // eslint-disable-line id-length +function nonEnumerableKeysIn( value ) { var names; var obj; var tmp; @@ -102,4 +102,4 @@ function nonEnumerablePropertyNamesIn( value ) { // eslint-disable-line id-lengt // EXPORTS // -module.exports = nonEnumerablePropertyNamesIn; +module.exports = nonEnumerableKeysIn; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/test/test.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/test/test.js index 51adf6b10e16..1ff4ee67fb1c 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/test/test.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/test/test.js @@ -23,14 +23,14 @@ var tape = require( 'tape' ); var indexOf = require( '@stdlib/utils/index-of' ); var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerablePropertyNamesIn = require( './../lib' ); // eslint-disable-line id-length +var nonEnumerableKeysIn = require( './../lib' ); // TESTS // tape( 'main export is a function', function test( t ) { t.ok( true, __filename ); - t.strictEqual( typeof nonEnumerablePropertyNamesIn, 'function', 'main export is a function' ); + t.strictEqual( typeof nonEnumerableKeysIn, 'function', 'main export is a function' ); t.end(); }); @@ -66,7 +66,7 @@ tape( 'the function returns an array of an object\'s own and inherited non-enume obj = new Foo(); expected = [ 'd', 'baz' ]; - actual = nonEnumerablePropertyNamesIn( obj ); + actual = nonEnumerableKeysIn( obj ); for ( i = 0; i < expected.length; i++ ) { idx = indexOf( actual, expected[ i ] ); @@ -88,7 +88,7 @@ tape( 'the function returns an empty array if provided `null` or `undefined`', f expected = []; for ( i = 0; i < values.length; i++ ) { - actual = nonEnumerablePropertyNamesIn( values[ i ] ); + actual = nonEnumerableKeysIn( values[ i ] ); t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); } t.end(); From f77d4c28c6884c152983c54f4acc77f67af7c1cf Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 03:35:28 -0700 Subject: [PATCH 0051/1062] Update REPL help --- lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 4 ++-- lib/node_modules/@stdlib/repl/help/lib/db.js | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 108323997d2d..a3e0ef82a6ab 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1344,8 +1344,8 @@ var db = { "noneByAsync": "\n// Basic usage:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'series': true };\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, opts, predicate, done )\n", "noneByRight": "function positive( v ) { return ( v > 0 ); };\narr = [ -1, -2, -3, -4 ];\nbool = noneByRight( arr, positive )\n", "noneByRightAsync": "\n// Basic usage:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'limit': 2 };\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'series': true };\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, opts, predicate, done )\n", - "nonEnumerablePropertyNames": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerablePropertyNames( obj )\n", - "nonEnumerablePropertyNamesIn": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerablePropertyNamesIn( obj )\n", + "nonEnumerableKeys": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerableKeys( obj )\n", + "nonEnumerableKeysIn": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerableKeysIn( obj )\n", "noop": "noop();\n", "now": "ts = now()\n", "NUM_CPUS": "NUM_CPUS\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 110c3d1e90f1..9baa5a9202ab 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1345,8 +1345,8 @@ var db = { "noneByAsync": "\nnoneByAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByAsync, everyByAsync, forEachAsync, noneBy, noneByRightAsync, someByAsync\n", "noneByRight": "\nnoneByRight( collection, predicate[, thisArg ] )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n The predicate function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n The function immediately returns upon encountering a truthy return value.\n\n If provided an empty collection, the function returns `true`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n predicate: Function\n The test function.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n bool: boolean\n The function returns `true` if the predicate function returns a falsy\n value for all elements; otherwise, the function returns `false`.\n\n Examples\n --------\n > function positive( v ) { return ( v > 0 ); };\n > var arr = [ -1, -2, -3, -4 ];\n > var bool = noneByRight( arr, positive )\n true\n\n See Also\n --------\n anyByRight, everyByRight, forEachRight, none, noneBy, someByRight\n", "noneByRightAsync": "\nnoneByRightAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByRightAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function, iterating from right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByRightAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByRightAsync, everyByRightAsync, forEachRightAsync, noneByAsync, noneByRight, someByRightAsync\n", - "nonEnumerablePropertyNames": "\nnonEnumerablePropertyNames( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNames( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNamesIn, propertyNames\n", - "nonEnumerablePropertyNamesIn": "\nnonEnumerablePropertyNamesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable non-enumerable property\n names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNamesIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, nonEnumerablePropertyNames, propertyNamesIn\n", + "nonEnumerableKeys": "\nnonEnumerableKeys( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerableKeys( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeysIn, propertyNames\n", + "nonEnumerableKeysIn": "\nnonEnumerableKeysIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable non-enumerable property\n names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerableKeysIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, nonEnumerableKeys, propertyNamesIn\n", "noop": "\nnoop()\n A function which does nothing.\n\n Examples\n --------\n > noop();\n\n", "now": "\nnow()\n Returns the time in seconds since the epoch.\n\n The Unix epoch is 00:00:00 UTC on 1 January 1970.\n\n Returns\n -------\n out: integer\n Time in seconds since the epoch.\n\n Examples\n --------\n > var ts = now()\n \n\n", "NUM_CPUS": "\nNUM_CPUS\n Number of CPUs.\n\n In browser environments, the number of CPUs is determined by querying the\n hardware concurrency API.\n\n In Node.js environments, the number of CPUs is determined via the `os`\n module.\n\n Examples\n --------\n > NUM_CPUS\n \n\n", @@ -1387,8 +1387,8 @@ var db = { "pluck": "\npluck( arr, prop[, options] )\n Extracts a property value from each element of an object array.\n\n The function skips `null` and `undefined` array elements.\n\n Extracted values are not cloned.\n\n Parameters\n ----------\n arr: Array\n Source array.\n\n prop: string\n Property to access.\n\n options: Object (optional)\n Options.\n\n options.copy: boolean (optional)\n Boolean indicating whether to return a new data structure. To mutate the\n input data structure (e.g., when input values can be discarded or when\n optimizing memory usage), set the `copy` option to `false`. Default:\n true.\n\n Returns\n -------\n out: Array\n Destination array.\n\n Examples\n --------\n > var arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > var out = pluck( arr, 'a' )\n [ 1, 0.5 ]\n\n > arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > out = pluck( arr, 'a', { 'copy': false } )\n [ 1, 0.5 ]\n > var bool = ( arr[ 0 ] === out[ 0 ] )\n true\n\n See Also\n --------\n deepPluck, pick\n", "pop": "\npop( collection )\n Removes and returns the last element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = pop( arr )\n [ [ 1.0, 2.0, 3.0, 4.0 ], 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = pop( arr )\n [ [ 1.0 ], 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = pop( arr )\n [ { 'length': 1, '0': 1.0 }, 2.0 ]\n\n See Also\n --------\n push, shift, unshift\n", "prepend": "\nprepend( collection1, collection2 )\n Adds the elements of one collection to the beginning of another collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection1: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n collection2: Array|TypedArray|Object\n A collection containing the elements to add. If the collection is an\n `Object`, the collection should be array-like.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = prepend( arr, [ 6.0, 7.0 ] )\n [ 6.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = prepend( arr, [ 3.0, 4.0 ] )\n [ 3.0, 4.0, 1.0, 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 1, '0': 1.0 };\n > arr = prepend( arr, [ 2.0, 3.0 ] )\n { 'length': 3, '0': 2.0, '1': 3.0, '2': 1.0 }\n\n See Also\n --------\n append, unshift\n", - "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNames, propertyNamesIn\n", - "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNamesIn, propertyNames\n", + "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeys, propertyNamesIn\n", + "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeysIn, propertyNames\n", "Proxy": "\nProxy( target, handlers )\n Returns a proxy object implementing custom behavior for specified object\n operations.\n\n The following \"traps\" are supported:\n\n - getPrototypeOf( target )\n Trap for `Object.getPrototypeOf()`. Can be used to intercept the\n `instanceof` operator. The method must return an object or `null`.\n\n - setPrototypeOf( target, prototype )\n Trap for `Object.setPrototypeOf()`. The method must return a boolean\n indicating if prototype successfully set.\n\n - isExtensible( target )\n Trap for `Object.isExtensible()`. The method must return a boolean.\n\n - preventExtensions( target )\n Trap for `Object.preventExtensions()`. The method must return a boolean.\n\n - getOwnPropertyDescriptor( target, property )\n Trap for `Object.getOwnPropertyDescriptor()`. The method must return an\n object or `undefined`.\n\n - defineProperty( target, property, descriptor )\n Trap for `Object.defineProperty()`. The method must return a boolean\n indicating whether the operation succeeded.\n\n - has( target, property )\n Trap for the `in` operator. The method must return a boolean.\n\n - get( target, property, receiver )\n Trap for retrieving property values. The method can return any value.\n\n - set( target, property, value, receiver )\n Trap for setting property values. The method should return a boolean\n indicating whether assignment succeeded.\n\n - deleteProperty( target, property )\n Trap for the `delete` operator. The method must return a boolean\n indicating whether operation succeeded.\n\n - ownKeys( target )\n Trap for `Object.keys`, `Object.getOwnPropertyNames()`, and\n `Object.getOwnPropertySymbols()`. The method must return an enumerable\n object.\n\n - apply( target, thisArg, argumentsList )\n Trap for a function call. The method can return any value.\n\n - construct( target, argumentsList, newTarget )\n Trap for the `new` operator. The method must return an object.\n\n All traps are optional. If a trap is not defined, the default behavior is to\n forward the operation to the target.\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Proxy object.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.a = 3.14;\n > p.a\n 6.28\n\n\nProxy.revocable( target, handlers )\n Returns a revocable proxy object\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Revocable proxy object.\n\n p.proxy: Object\n Proxy object.\n\n p.revoke: Function\n Invalidates a proxy, rendering a proxy object unusable.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.proxy.a = 3.14;\n > p.proxy.a\n 6.28\n > p.revoke();\n\n", "push": "\npush( collection, ...items )\n Adds one or more elements to the end of a collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n items: ...any\n Items to add.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = push( arr, 6.0, 7.0 )\n [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = push( arr, 3.0, 4.0 )\n [ 1.0, 2.0, 3.0, 4.0 ]\n\n // Array-like object:\n > arr = { 'length': 0 };\n > arr = push( arr, 1.0, 2.0 )\n { 'length': 2, '0': 1.0, '1': 2.0 }\n\n See Also\n --------\n pop, shift, unshift\n", "quarterOfYear": "\nquarterOfYear( [month] )\n Returns the quarter of the year.\n\n By default, the function returns the quarter of the year for the current\n month in the current year (according to local time). To determine the\n quarter for a particular month, provide either a month or a `Date`\n object.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n Parameters\n ----------\n month: integer|string|Date (optional)\n Month (or `Date`).\n\n Returns\n -------\n out: integer\n Quarter of the year.\n\n Examples\n --------\n > var q = quarterOfYear( new Date() )\n \n > q = quarterOfYear( 4 )\n 2\n > q = quarterOfYear( 'June' )\n 2\n\n // Other ways to supply month:\n > q = quarterOfYear( 'April' )\n 2\n > q = quarterOfYear( 'apr' )\n 2\n\n See Also\n --------\n dayOfYear\n", From b9d4e74eaef225bc52faf1ec1694192b7dfd66cf Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 14:03:16 -0700 Subject: [PATCH 0052/1062] Add utility to return an object's own symbol properties --- .../@stdlib/utils/property-symbols/README.md | 91 ++++++++++ .../property-symbols/benchmark/benchmark.js | 163 ++++++++++++++++++ .../utils/property-symbols/docs/repl.txt | 23 +++ .../utils/property-symbols/examples/index.js | 37 ++++ .../utils/property-symbols/lib/builtin.js | 44 +++++ .../utils/property-symbols/lib/has_builtin.js | 28 +++ .../utils/property-symbols/lib/index.js | 51 ++++++ .../utils/property-symbols/lib/polyfill.js | 45 +++++ .../utils/property-symbols/package.json | 67 +++++++ .../property-symbols/test/test.builtin.js | 92 ++++++++++ .../utils/property-symbols/test/test.js | 52 ++++++ .../property-symbols/test/test.polyfill.js | 57 ++++++ 12 files changed, 750 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/property-symbols/README.md create mode 100644 lib/node_modules/@stdlib/utils/property-symbols/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/property-symbols/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/property-symbols/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/property-symbols/lib/builtin.js create mode 100644 lib/node_modules/@stdlib/utils/property-symbols/lib/has_builtin.js create mode 100644 lib/node_modules/@stdlib/utils/property-symbols/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/property-symbols/lib/polyfill.js create mode 100644 lib/node_modules/@stdlib/utils/property-symbols/package.json create mode 100644 lib/node_modules/@stdlib/utils/property-symbols/test/test.builtin.js create mode 100644 lib/node_modules/@stdlib/utils/property-symbols/test/test.js create mode 100644 lib/node_modules/@stdlib/utils/property-symbols/test/test.polyfill.js diff --git a/lib/node_modules/@stdlib/utils/property-symbols/README.md b/lib/node_modules/@stdlib/utils/property-symbols/README.md new file mode 100644 index 000000000000..d7aaae6b4ba1 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols/README.md @@ -0,0 +1,91 @@ + + +# propertySymbols + +> Return an array of an object's own [symbol][@stdlib/symbol/ctor] properties. + +
+ +## Usage + +```javascript +var propertySymbols = require( '@stdlib/utils/property-symbols' ); +``` + +#### propertySymbols( obj ) + +Returns an `array` of an object's own [symbol][@stdlib/symbol/ctor]. + +```javascript +var symbols = propertySymbols( {} ); +``` + +
+ + + +
+ +## Notes + +- In contrast to the built-in `Object.getOwnPropertySymbols()`, if provided `null` or `undefined`, the function returns an empty `array`, rather than throwing an error. + +
+ + + +
+ +## Examples + + + +```javascript +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var propertySymbols = require( '@stdlib/utils/property-symbols' ); + +function Foo() { + if ( hasSymbolSupport() ) { + this[ Symbol( 'beep' ) ] = 'boop'; + } + return this; +} + +Foo.prototype.foo = 'bar'; + +var obj = new Foo(); +var symbols = propertySymbols( obj ); + +console.log( symbols ); +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/property-symbols/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/property-symbols/benchmark/benchmark.js new file mode 100644 index 000000000000..7b28d07e4285 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols/benchmark/benchmark.js @@ -0,0 +1,163 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var HAS_BUILTIN = require( './../lib/has_builtin.js' ); +var polyfill = require( './../lib/polyfill.js' ); +var getOwnPropertySymbols = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': !HAS_BUILTIN +}; + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = getOwnPropertySymbols( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::polyfill', function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = polyfill( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::builtin', opts, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = Object.getOwnPropertySymbols( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/property-symbols/docs/repl.txt b/lib/node_modules/@stdlib/utils/property-symbols/docs/repl.txt new file mode 100644 index 000000000000..f4050aa6ee76 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols/docs/repl.txt @@ -0,0 +1,23 @@ + +{{alias}}( value ) + Returns an array of an object's own symbol properties. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + Returns + ------- + symbols: Array + List of an object's own symbol properties. + + Examples + -------- + > var s = {{alias}}( {} ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/property-symbols/examples/index.js b/lib/node_modules/@stdlib/utils/property-symbols/examples/index.js new file mode 100644 index 000000000000..a4cddf971bc5 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols/examples/index.js @@ -0,0 +1,37 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var propertySymbols = require( './../lib' ); + +function Foo() { + if ( hasSymbolSupport() ) { + this[ Symbol( 'beep' ) ] = 'boop'; + } + return this; +} + +Foo.prototype.foo = 'bar'; + +var obj = new Foo(); +var symbols = propertySymbols( obj ); + +console.log( symbols ); diff --git a/lib/node_modules/@stdlib/utils/property-symbols/lib/builtin.js b/lib/node_modules/@stdlib/utils/property-symbols/lib/builtin.js new file mode 100644 index 000000000000..268565406831 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols/lib/builtin.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Returns an array of an object's own symbol properties. +* +* ## Note +* +* - In contrast to the built-in `Object.getOwnPropertySymbols()`, this function returns an empty array if provided `undefined` or `null`, rather than throwing an error. +* +* @private +* @param {*} value - input object +* @returns {Array} a list of own symbol properties +* +* @example +* var symbols = getOwnPropertySymbols( {} ); +*/ +function getOwnPropertySymbols( value ) { + return Object.getOwnPropertySymbols( Object( value ) ); +} + + +// EXPORTS // + +module.exports = getOwnPropertySymbols; diff --git a/lib/node_modules/@stdlib/utils/property-symbols/lib/has_builtin.js b/lib/node_modules/@stdlib/utils/property-symbols/lib/has_builtin.js new file mode 100644 index 000000000000..91f956874d2b --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols/lib/has_builtin.js @@ -0,0 +1,28 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +var bool = ( typeof Object.getOwnPropertySymbols !== 'undefined' ); + + +// EXPORTS // + +module.exports = bool; diff --git a/lib/node_modules/@stdlib/utils/property-symbols/lib/index.js b/lib/node_modules/@stdlib/utils/property-symbols/lib/index.js new file mode 100644 index 000000000000..62cd47f1fe8b --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols/lib/index.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's own symbol properties. +* +* @module @stdlib/utils/property-symbols +* +* @example +* var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); +* +* var symbols = getOwnPropertySymbols( {} ); +*/ + +// MODULES // + +var HAS_BUILTIN = require( './has_builtin.js' ); +var builtin = require( './builtin.js' ); +var polyfill = require( './polyfill.js' ); + + +// MAIN // + +var main; +if ( HAS_BUILTIN ) { + main = builtin; +} else { + main = polyfill; +} + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/property-symbols/lib/polyfill.js b/lib/node_modules/@stdlib/utils/property-symbols/lib/polyfill.js new file mode 100644 index 000000000000..e35831b93c5e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols/lib/polyfill.js @@ -0,0 +1,45 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Returns an array of an object's own symbol properties. +* +* ## Note +* +* - In contrast to the built-in `Object.getOwnPropertySymbols()`, this function returns an empty array if provided `undefined` or `null`, rather than throwing an error. +* +* @private +* @param {*} value - input object +* @returns {EmptyArray} a list of own symbol properties +* +* @example +* var symbols = getOwnPropertySymbols( {} ); +* // returns [] +*/ +function getOwnPropertySymbols() { + return []; +} + + +// EXPORTS // + +module.exports = getOwnPropertySymbols; diff --git a/lib/node_modules/@stdlib/utils/property-symbols/package.json b/lib/node_modules/@stdlib/utils/property-symbols/package.json new file mode 100644 index 000000000000..679942cec593 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols/package.json @@ -0,0 +1,67 @@ +{ + "name": "@stdlib/utils/property-symbols", + "version": "0.0.0", + "description": "Return an array of an object's own symbol properties.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "symbols", + "symbol", + "sym", + "own", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/property-symbols/test/test.builtin.js b/lib/node_modules/@stdlib/utils/property-symbols/test/test.builtin.js new file mode 100644 index 000000000000..8709acb92170 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols/test/test.builtin.js @@ -0,0 +1,92 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var getOwnPropertySymbols = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': ( typeof Object.getOwnPropertySymbols === 'undefined' ) +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof getOwnPropertySymbols, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns an array of symbol properties', opts, function test( t ) { + var expected; + var actual; + var obj; + var s1; + var s2; + + if ( hasSymbolSupport() ) { + obj = {}; + + s1 = Symbol( 'beep' ); + s2 = Symbol( 'foo' ); + + obj[ s1 ] = 'boop'; + obj[ s2 ] = 'bar'; + + actual = getOwnPropertySymbols( obj ); + expected = [ s1, s2 ]; + + t.deepEqual( actual, expected, 'returns expected value' ); + } else { + t.pass( 'environment does not support symbols' ); + } + t.end(); +}); + +tape( 'the function returns an empty array if an object does not have symbol properties', opts, function test( t ) { + var actual; + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + actual = getOwnPropertySymbols( values[ i ] ); + t.deepEqual( actual, [], 'returns expected results when provided '+values[i] ); + } + t.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/property-symbols/test/test.js b/lib/node_modules/@stdlib/utils/property-symbols/test/test.js new file mode 100644 index 000000000000..529d5dcb0a0d --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols/test/test.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var builtin = require( './../lib/builtin.js' ); +var polyfill = require( './../lib/polyfill.js' ); +var getOwnPropertySymbols = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof getOwnPropertySymbols, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'if an environment has a built-in implementation, the export is the built-in implementation', function test( t ) { + var getOwnPropertySymbols = proxyquire( './../lib/index.js', { + './has_builtin.js': true + }); + t.strictEqual( getOwnPropertySymbols, builtin, 'is expected value' ); + t.end(); +}); + +tape( 'if an environment does not have a built-in implementation, the export is a polyfill', function test( t ) { + var getOwnPropertySymbols = proxyquire( './../lib/index.js', { + './has_builtin.js': false + }); + t.strictEqual( getOwnPropertySymbols, polyfill, 'is expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/property-symbols/test/test.polyfill.js b/lib/node_modules/@stdlib/utils/property-symbols/test/test.polyfill.js new file mode 100644 index 000000000000..c6904406b7a0 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols/test/test.polyfill.js @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var getOwnPropertySymbols = require( './../lib/polyfill.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof getOwnPropertySymbols, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns an empty array', function test( t ) { + var actual; + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + actual = getOwnPropertySymbols( values[ i ] ); + t.deepEqual( actual, [], 'returns expected results when provided '+values[i] ); + } + t.end(); +}); From 9c72d043ad592c089cec7b8f321888b4b5e3ffcd Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 14:04:31 -0700 Subject: [PATCH 0053/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 46c315b23290..53c97cc026fc 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1161,6 +1161,15 @@ setReadOnly( utils, 'propertyNames', require( '@stdlib/utils/property-names' ) ) */ setReadOnly( utils, 'propertyNamesIn', require( '@stdlib/utils/property-names-in' ) ); +/** +* @name propertySymbols +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/property-symbols} +*/ +setReadOnly( utils, 'propertySymbols', require( '@stdlib/utils/property-symbols' ) ); + /** * @name push * @memberof utils From 68d898aac3621e91af71f532529dd67fd1c31071 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 14:06:41 -0700 Subject: [PATCH 0054/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/p.js | 17 +++++++++++++++-- .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js index 926315dbb043..68a5c6a9cb32 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js @@ -283,7 +283,8 @@ ns.push({ 'related': [ '@stdlib/utils/keys', '@stdlib/utils/nonenumerable-keys', - '@stdlib/utils/property-names-in' + '@stdlib/utils/property-names-in', + '@stdlib/utils/property-symbols' ] }); @@ -295,7 +296,19 @@ ns.push({ 'related': [ '@stdlib/utils/keys', '@stdlib/utils/nonenumerable-keys-in', - '@stdlib/utils/property-names' + '@stdlib/utils/property-names', + '@stdlib/utils/property-symbols-in' + ] +}); + +ns.push({ + 'alias': 'propertySymbols', + 'path': '@stdlib/utils/property-symbols', + 'value': require( '@stdlib/utils/property-symbols' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/property-names', + '@stdlib/utils/property-symbols-in' ] }); diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index a3e0ef82a6ab..44790b13b329 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1388,6 +1388,7 @@ var db = { "prepend": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\narr = prepend( arr, [ 6.0, 7.0 ] )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\narr = prepend( arr, [ 3.0, 4.0 ] )\n\n// Array-like object:\narr = { 'length': 1, '0': 1.0 };\narr = prepend( arr, [ 2.0, 3.0 ] )\n", "propertyNames": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = propertyNames( obj )\n", "propertyNamesIn": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = propertyNamesIn( obj )\n", + "propertySymbols": "s = propertySymbols( {} )\n", "Proxy": "function get( obj, prop ) { return obj[ prop ] * 2.0 };\nh = { 'get': get };\np = Proxy( {}, h );\np.a = 3.14;\np.a\n", "push": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\narr = push( arr, 6.0, 7.0 )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\narr = push( arr, 3.0, 4.0 )\n\n// Array-like object:\narr = { 'length': 0 };\narr = push( arr, 1.0, 2.0 )\n", "quarterOfYear": "q = quarterOfYear( new Date() )\nq = quarterOfYear( 4 )\nq = quarterOfYear( 'June' )\n\n// Other ways to supply month:\nq = quarterOfYear( 'April' )\nq = quarterOfYear( 'apr' )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 9baa5a9202ab..4b77db973666 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1387,8 +1387,9 @@ var db = { "pluck": "\npluck( arr, prop[, options] )\n Extracts a property value from each element of an object array.\n\n The function skips `null` and `undefined` array elements.\n\n Extracted values are not cloned.\n\n Parameters\n ----------\n arr: Array\n Source array.\n\n prop: string\n Property to access.\n\n options: Object (optional)\n Options.\n\n options.copy: boolean (optional)\n Boolean indicating whether to return a new data structure. To mutate the\n input data structure (e.g., when input values can be discarded or when\n optimizing memory usage), set the `copy` option to `false`. Default:\n true.\n\n Returns\n -------\n out: Array\n Destination array.\n\n Examples\n --------\n > var arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > var out = pluck( arr, 'a' )\n [ 1, 0.5 ]\n\n > arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > out = pluck( arr, 'a', { 'copy': false } )\n [ 1, 0.5 ]\n > var bool = ( arr[ 0 ] === out[ 0 ] )\n true\n\n See Also\n --------\n deepPluck, pick\n", "pop": "\npop( collection )\n Removes and returns the last element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = pop( arr )\n [ [ 1.0, 2.0, 3.0, 4.0 ], 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = pop( arr )\n [ [ 1.0 ], 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = pop( arr )\n [ { 'length': 1, '0': 1.0 }, 2.0 ]\n\n See Also\n --------\n push, shift, unshift\n", "prepend": "\nprepend( collection1, collection2 )\n Adds the elements of one collection to the beginning of another collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection1: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n collection2: Array|TypedArray|Object\n A collection containing the elements to add. If the collection is an\n `Object`, the collection should be array-like.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = prepend( arr, [ 6.0, 7.0 ] )\n [ 6.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = prepend( arr, [ 3.0, 4.0 ] )\n [ 3.0, 4.0, 1.0, 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 1, '0': 1.0 };\n > arr = prepend( arr, [ 2.0, 3.0 ] )\n { 'length': 3, '0': 2.0, '1': 3.0, '2': 1.0 }\n\n See Also\n --------\n append, unshift\n", - "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeys, propertyNamesIn\n", + "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeys, propertyNamesIn, propertySymbols\n", "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeysIn, propertyNames\n", + "propertySymbols": "\npropertySymbols( value )\n Returns an array of an object's own symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own symbol properties.\n\n Examples\n --------\n > var s = propertySymbols( {} )\n\n See Also\n --------\n propertyNames\n", "Proxy": "\nProxy( target, handlers )\n Returns a proxy object implementing custom behavior for specified object\n operations.\n\n The following \"traps\" are supported:\n\n - getPrototypeOf( target )\n Trap for `Object.getPrototypeOf()`. Can be used to intercept the\n `instanceof` operator. The method must return an object or `null`.\n\n - setPrototypeOf( target, prototype )\n Trap for `Object.setPrototypeOf()`. The method must return a boolean\n indicating if prototype successfully set.\n\n - isExtensible( target )\n Trap for `Object.isExtensible()`. The method must return a boolean.\n\n - preventExtensions( target )\n Trap for `Object.preventExtensions()`. The method must return a boolean.\n\n - getOwnPropertyDescriptor( target, property )\n Trap for `Object.getOwnPropertyDescriptor()`. The method must return an\n object or `undefined`.\n\n - defineProperty( target, property, descriptor )\n Trap for `Object.defineProperty()`. The method must return a boolean\n indicating whether the operation succeeded.\n\n - has( target, property )\n Trap for the `in` operator. The method must return a boolean.\n\n - get( target, property, receiver )\n Trap for retrieving property values. The method can return any value.\n\n - set( target, property, value, receiver )\n Trap for setting property values. The method should return a boolean\n indicating whether assignment succeeded.\n\n - deleteProperty( target, property )\n Trap for the `delete` operator. The method must return a boolean\n indicating whether operation succeeded.\n\n - ownKeys( target )\n Trap for `Object.keys`, `Object.getOwnPropertyNames()`, and\n `Object.getOwnPropertySymbols()`. The method must return an enumerable\n object.\n\n - apply( target, thisArg, argumentsList )\n Trap for a function call. The method can return any value.\n\n - construct( target, argumentsList, newTarget )\n Trap for the `new` operator. The method must return an object.\n\n All traps are optional. If a trap is not defined, the default behavior is to\n forward the operation to the target.\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Proxy object.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.a = 3.14;\n > p.a\n 6.28\n\n\nProxy.revocable( target, handlers )\n Returns a revocable proxy object\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Revocable proxy object.\n\n p.proxy: Object\n Proxy object.\n\n p.revoke: Function\n Invalidates a proxy, rendering a proxy object unusable.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.proxy.a = 3.14;\n > p.proxy.a\n 6.28\n > p.revoke();\n\n", "push": "\npush( collection, ...items )\n Adds one or more elements to the end of a collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n items: ...any\n Items to add.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = push( arr, 6.0, 7.0 )\n [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = push( arr, 3.0, 4.0 )\n [ 1.0, 2.0, 3.0, 4.0 ]\n\n // Array-like object:\n > arr = { 'length': 0 };\n > arr = push( arr, 1.0, 2.0 )\n { 'length': 2, '0': 1.0, '1': 2.0 }\n\n See Also\n --------\n pop, shift, unshift\n", "quarterOfYear": "\nquarterOfYear( [month] )\n Returns the quarter of the year.\n\n By default, the function returns the quarter of the year for the current\n month in the current year (according to local time). To determine the\n quarter for a particular month, provide either a month or a `Date`\n object.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n Parameters\n ----------\n month: integer|string|Date (optional)\n Month (or `Date`).\n\n Returns\n -------\n out: integer\n Quarter of the year.\n\n Examples\n --------\n > var q = quarterOfYear( new Date() )\n \n > q = quarterOfYear( 4 )\n 2\n > q = quarterOfYear( 'June' )\n 2\n\n // Other ways to supply month:\n > q = quarterOfYear( 'April' )\n 2\n > q = quarterOfYear( 'apr' )\n 2\n\n See Also\n --------\n dayOfYear\n", From b21beb36aded0db28e40982a17a4d03277ee72df Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 16:33:57 -0700 Subject: [PATCH 0055/1062] Add utility to return an object's own and inherited symbol properties --- .../utils/property-symbols-in/README.md | 99 +++++++++++++++++ .../benchmark/benchmark.js | 72 +++++++++++++ .../utils/property-symbols-in/docs/repl.txt | 23 ++++ .../property-symbols-in/examples/index.js | 45 ++++++++ .../utils/property-symbols-in/lib/index.js | 39 +++++++ .../utils/property-symbols-in/lib/main.js | 93 ++++++++++++++++ .../utils/property-symbols-in/package.json | 69 ++++++++++++ .../utils/property-symbols-in/test/test.js | 100 ++++++++++++++++++ 8 files changed, 540 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/property-symbols-in/README.md create mode 100644 lib/node_modules/@stdlib/utils/property-symbols-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/property-symbols-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/property-symbols-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/property-symbols-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/property-symbols-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/property-symbols-in/package.json create mode 100644 lib/node_modules/@stdlib/utils/property-symbols-in/test/test.js diff --git a/lib/node_modules/@stdlib/utils/property-symbols-in/README.md b/lib/node_modules/@stdlib/utils/property-symbols-in/README.md new file mode 100644 index 000000000000..369ce7b06450 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols-in/README.md @@ -0,0 +1,99 @@ + + +# propertySymbolsIn + +> Return an array of an object's own and inherited [symbol][@stdlib/symbol/ctor] properties. + +
+ +## Usage + +```javascript +var propertySymbolsIn = require( '@stdlib/utils/property-symbols-in' ); +``` + +#### propertySymbolsIn( obj ) + +Returns an `array` of an object's own and inherited [symbol][@stdlib/symbol/ctor] properties. + +```javascript +var symbols = propertySymbolsIn( {} ); +``` + +
+ + + +
+ +## Notes + +- In contrast to the built-in `Object.getOwnPropertySymbols()`, if provided `null` or `undefined`, the function returns an empty `array`, rather than throwing an error. + +
+ + + +
+ +## Examples + + + +```javascript +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var propertySymbolsIn = require( '@stdlib/utils/property-symbols-in' ); + +var hasSymbols; +var symbols; +var obj; + +hasSymbols = hasSymbolSupport(); + +function Foo() { + if ( hasSymbols ) { + this[ Symbol( 'beep' ) ] = 'boop'; + } + return this; +} + +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'foo' ) ] = 'bar'; +} + +obj = new Foo(); +symbols = propertySymbolsIn( obj ); + +console.log( symbols ); +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/property-symbols-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/property-symbols-in/benchmark/benchmark.js new file mode 100644 index 000000000000..dee77b0b1aea --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols-in/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var propertySymbolsIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = propertySymbolsIn( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/property-symbols-in/docs/repl.txt b/lib/node_modules/@stdlib/utils/property-symbols-in/docs/repl.txt new file mode 100644 index 000000000000..56ed10938bb2 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols-in/docs/repl.txt @@ -0,0 +1,23 @@ + +{{alias}}( value ) + Returns an array of an object's own and inherited symbol properties. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + Returns + ------- + symbols: Array + List of an object's own and inherited symbol properties. + + Examples + -------- + > var s = {{alias}}( {} ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/property-symbols-in/examples/index.js b/lib/node_modules/@stdlib/utils/property-symbols-in/examples/index.js new file mode 100644 index 000000000000..5d38870eca0c --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols-in/examples/index.js @@ -0,0 +1,45 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var propertySymbolsIn = require( './../lib' ); + +var hasSymbols; +var symbols; +var obj; + +hasSymbols = hasSymbolSupport(); + +function Foo() { + if ( hasSymbols ) { + this[ Symbol( 'beep' ) ] = 'boop'; + } + return this; +} + +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'foo' ) ] = 'bar'; +} + +obj = new Foo(); +symbols = propertySymbolsIn( obj ); + +console.log( symbols ); diff --git a/lib/node_modules/@stdlib/utils/property-symbols-in/lib/index.js b/lib/node_modules/@stdlib/utils/property-symbols-in/lib/index.js new file mode 100644 index 000000000000..05e363c4fa7e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols-in/lib/index.js @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's own and inherited symbol properties. +* +* @module @stdlib/utils/property-symbols-in +* +* @example +* var propertySymbolsIn = require( '@stdlib/utils/property-symbols-in' ); +* +* var symbols = propertySymbolsIn( {} ); +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/property-symbols-in/lib/main.js b/lib/node_modules/@stdlib/utils/property-symbols-in/lib/main.js new file mode 100644 index 000000000000..6925892ebee7 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols-in/lib/main.js @@ -0,0 +1,93 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating if an array contains a provided value. +* +* @private +* @param {Array} arr - array +* @param {*} v - search value +* @returns {boolean} boolean indicating if an array contains a search value +*/ +function contains( arr, v ) { + var i; + for ( i = 0; i < arr.length; i++ ) { + if ( arr[ i ] === v ) { + return true; + } + } + return false; +} + + +// MAIN // + +/** +* Returns an array of an object's own and inherited symbol properties. +* +* ## Note +* +* - In contrast to the built-in `Object.getOwnPropertySymbols()`, this function returns an empty array if provided `undefined` or `null`, rather than throwing an error. +* +* @param {*} value - input object +* @returns {Array} a list of own and inherited symbol properties +* +* @example +* var symbols = propertySymbolsIn( {} ); +*/ +function propertySymbolsIn( value ) { + var symbols; + var obj; + var tmp; + var i; + + if ( value === null || value === void 0 ) { + return []; + } + // Cast the value to an object: + obj = Object( value ); + + // Walk the prototype chain collecting all symbol properties... + symbols = []; + do { + tmp = getOwnPropertySymbols( obj ); + for ( i = 0; i < tmp.length; i++ ) { + if ( contains( symbols, tmp[ i ] ) === false ) { + symbols.push( tmp[ i ] ); + } + } + obj = getPrototypeOf( obj ); + } while ( obj ); + + return symbols; +} + + +// EXPORTS // + +module.exports = propertySymbolsIn; diff --git a/lib/node_modules/@stdlib/utils/property-symbols-in/package.json b/lib/node_modules/@stdlib/utils/property-symbols-in/package.json new file mode 100644 index 000000000000..147f421d0fee --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols-in/package.json @@ -0,0 +1,69 @@ +{ + "name": "@stdlib/utils/property-symbols-in", + "version": "0.0.0", + "description": "Return an array of an object's own and inherited symbol properties.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "symbols", + "symbols-in", + "symbol", + "sym", + "own", + "inherited", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/property-symbols-in/test/test.js b/lib/node_modules/@stdlib/utils/property-symbols-in/test/test.js new file mode 100644 index 000000000000..5f40ce98ca11 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-symbols-in/test/test.js @@ -0,0 +1,100 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var propertySymbolsIn = require( './../lib' ); + + +// VARIABLES // + +var hasSymbols = hasSymbolSupport(); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof propertySymbolsIn, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns an array of an object\'s own and inherited symbol properties', function test( t ) { + var expected; + var symbols; + var actual; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + symbols = [ Symbol( 'a' ), Symbol( 'b' ), Symbol( 'c' ) ]; + } else { + symbols = []; + } + + function Foo() { + if ( hasSymbols ) { + this[ symbols[ 0 ] ] = 0; + this[ symbols[ 1 ] ] = 1; + } + return this; + } + + if ( hasSymbols ) { + Foo.prototype[ symbols[ 1 ] ] = '1'; + Foo.prototype[ symbols[ 2 ] ] = 2; + } + + obj = new Foo(); + + expected = symbols; + actual = propertySymbolsIn( obj ); + + t.strictEqual( actual.length, symbols.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = propertySymbolsIn( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From 492c2c52087f55b0f579ca4fd142ae78a3eeb5a9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 16:35:21 -0700 Subject: [PATCH 0056/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 53c97cc026fc..0ef5aa64ed1d 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1170,6 +1170,15 @@ setReadOnly( utils, 'propertyNamesIn', require( '@stdlib/utils/property-names-in */ setReadOnly( utils, 'propertySymbols', require( '@stdlib/utils/property-symbols' ) ); +/** +* @name propertySymbolsIn +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/property-symbols-in} +*/ +setReadOnly( utils, 'propertySymbolsIn', require( '@stdlib/utils/property-symbols-in' ) ); + /** * @name push * @memberof utils From 2ab0472906c33bf0c03665ba14c29623cd1d3270 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 16:35:48 -0700 Subject: [PATCH 0057/1062] Update namespace --- lib/node_modules/@stdlib/namespace/lib/namespace/p.js | 11 +++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 +++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js index 68a5c6a9cb32..6cd824e5b398 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js @@ -312,6 +312,17 @@ ns.push({ ] }); +ns.push({ + 'alias': 'propertySymbolsIn', + 'path': '@stdlib/utils/property-symbols-in', + 'value': require( '@stdlib/utils/property-symbols-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/property-names-in', + '@stdlib/utils/property-symbols' + ] +}); + ns.push({ 'alias': 'Proxy', 'path': '@stdlib/proxy/ctor', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 44790b13b329..2d68cebd97cf 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1389,6 +1389,7 @@ var db = { "propertyNames": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = propertyNames( obj )\n", "propertyNamesIn": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = propertyNamesIn( obj )\n", "propertySymbols": "s = propertySymbols( {} )\n", + "propertySymbolsIn": "s = propertySymbolsIn( {} )\n", "Proxy": "function get( obj, prop ) { return obj[ prop ] * 2.0 };\nh = { 'get': get };\np = Proxy( {}, h );\np.a = 3.14;\np.a\n", "push": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\narr = push( arr, 6.0, 7.0 )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\narr = push( arr, 3.0, 4.0 )\n\n// Array-like object:\narr = { 'length': 0 };\narr = push( arr, 1.0, 2.0 )\n", "quarterOfYear": "q = quarterOfYear( new Date() )\nq = quarterOfYear( 4 )\nq = quarterOfYear( 'June' )\n\n// Other ways to supply month:\nq = quarterOfYear( 'April' )\nq = quarterOfYear( 'apr' )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 4b77db973666..c485ca4720c3 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1388,8 +1388,9 @@ var db = { "pop": "\npop( collection )\n Removes and returns the last element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = pop( arr )\n [ [ 1.0, 2.0, 3.0, 4.0 ], 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = pop( arr )\n [ [ 1.0 ], 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = pop( arr )\n [ { 'length': 1, '0': 1.0 }, 2.0 ]\n\n See Also\n --------\n push, shift, unshift\n", "prepend": "\nprepend( collection1, collection2 )\n Adds the elements of one collection to the beginning of another collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection1: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n collection2: Array|TypedArray|Object\n A collection containing the elements to add. If the collection is an\n `Object`, the collection should be array-like.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = prepend( arr, [ 6.0, 7.0 ] )\n [ 6.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = prepend( arr, [ 3.0, 4.0 ] )\n [ 3.0, 4.0, 1.0, 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 1, '0': 1.0 };\n > arr = prepend( arr, [ 2.0, 3.0 ] )\n { 'length': 3, '0': 2.0, '1': 3.0, '2': 1.0 }\n\n See Also\n --------\n append, unshift\n", "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeys, propertyNamesIn, propertySymbols\n", - "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeysIn, propertyNames\n", - "propertySymbols": "\npropertySymbols( value )\n Returns an array of an object's own symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own symbol properties.\n\n Examples\n --------\n > var s = propertySymbols( {} )\n\n See Also\n --------\n propertyNames\n", + "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeysIn, propertyNames, propertySymbolsIn\n", + "propertySymbols": "\npropertySymbols( value )\n Returns an array of an object's own symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own symbol properties.\n\n Examples\n --------\n > var s = propertySymbols( {} )\n\n See Also\n --------\n propertyNames, propertySymbolsIn\n", + "propertySymbolsIn": "\npropertySymbolsIn( value )\n Returns an array of an object's own and inherited symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited symbol properties.\n\n Examples\n --------\n > var s = propertySymbolsIn( {} )\n\n See Also\n --------\n propertyNamesIn, propertySymbols\n", "Proxy": "\nProxy( target, handlers )\n Returns a proxy object implementing custom behavior for specified object\n operations.\n\n The following \"traps\" are supported:\n\n - getPrototypeOf( target )\n Trap for `Object.getPrototypeOf()`. Can be used to intercept the\n `instanceof` operator. The method must return an object or `null`.\n\n - setPrototypeOf( target, prototype )\n Trap for `Object.setPrototypeOf()`. The method must return a boolean\n indicating if prototype successfully set.\n\n - isExtensible( target )\n Trap for `Object.isExtensible()`. The method must return a boolean.\n\n - preventExtensions( target )\n Trap for `Object.preventExtensions()`. The method must return a boolean.\n\n - getOwnPropertyDescriptor( target, property )\n Trap for `Object.getOwnPropertyDescriptor()`. The method must return an\n object or `undefined`.\n\n - defineProperty( target, property, descriptor )\n Trap for `Object.defineProperty()`. The method must return a boolean\n indicating whether the operation succeeded.\n\n - has( target, property )\n Trap for the `in` operator. The method must return a boolean.\n\n - get( target, property, receiver )\n Trap for retrieving property values. The method can return any value.\n\n - set( target, property, value, receiver )\n Trap for setting property values. The method should return a boolean\n indicating whether assignment succeeded.\n\n - deleteProperty( target, property )\n Trap for the `delete` operator. The method must return a boolean\n indicating whether operation succeeded.\n\n - ownKeys( target )\n Trap for `Object.keys`, `Object.getOwnPropertyNames()`, and\n `Object.getOwnPropertySymbols()`. The method must return an enumerable\n object.\n\n - apply( target, thisArg, argumentsList )\n Trap for a function call. The method can return any value.\n\n - construct( target, argumentsList, newTarget )\n Trap for the `new` operator. The method must return an object.\n\n All traps are optional. If a trap is not defined, the default behavior is to\n forward the operation to the target.\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Proxy object.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.a = 3.14;\n > p.a\n 6.28\n\n\nProxy.revocable( target, handlers )\n Returns a revocable proxy object\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Revocable proxy object.\n\n p.proxy: Object\n Proxy object.\n\n p.revoke: Function\n Invalidates a proxy, rendering a proxy object unusable.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.proxy.a = 3.14;\n > p.proxy.a\n 6.28\n > p.revoke();\n\n", "push": "\npush( collection, ...items )\n Adds one or more elements to the end of a collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n items: ...any\n Items to add.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = push( arr, 6.0, 7.0 )\n [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = push( arr, 3.0, 4.0 )\n [ 1.0, 2.0, 3.0, 4.0 ]\n\n // Array-like object:\n > arr = { 'length': 0 };\n > arr = push( arr, 1.0, 2.0 )\n { 'length': 2, '0': 1.0, '1': 2.0 }\n\n See Also\n --------\n pop, shift, unshift\n", "quarterOfYear": "\nquarterOfYear( [month] )\n Returns the quarter of the year.\n\n By default, the function returns the quarter of the year for the current\n month in the current year (according to local time). To determine the\n quarter for a particular month, provide either a month or a `Date`\n object.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n Parameters\n ----------\n month: integer|string|Date (optional)\n Month (or `Date`).\n\n Returns\n -------\n out: integer\n Quarter of the year.\n\n Examples\n --------\n > var q = quarterOfYear( new Date() )\n \n > q = quarterOfYear( 4 )\n 2\n > q = quarterOfYear( 'June' )\n 2\n\n // Other ways to supply month:\n > q = quarterOfYear( 'April' )\n 2\n > q = quarterOfYear( 'apr' )\n 2\n\n See Also\n --------\n dayOfYear\n", From 5f64a8b089d8cb01ec35ae46a52481bb887a8600 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 16:44:20 -0700 Subject: [PATCH 0058/1062] Update examples --- lib/node_modules/@stdlib/utils/property-symbols-in/README.md | 2 +- .../@stdlib/utils/property-symbols-in/docs/repl.txt | 2 +- lib/node_modules/@stdlib/utils/property-symbols-in/lib/index.js | 2 +- lib/node_modules/@stdlib/utils/property-symbols-in/lib/main.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/property-symbols-in/README.md b/lib/node_modules/@stdlib/utils/property-symbols-in/README.md index 369ce7b06450..269d1bc31bea 100644 --- a/lib/node_modules/@stdlib/utils/property-symbols-in/README.md +++ b/lib/node_modules/@stdlib/utils/property-symbols-in/README.md @@ -35,7 +35,7 @@ var propertySymbolsIn = require( '@stdlib/utils/property-symbols-in' ); Returns an `array` of an object's own and inherited [symbol][@stdlib/symbol/ctor] properties. ```javascript -var symbols = propertySymbolsIn( {} ); +var symbols = propertySymbolsIn( [] ); ```
diff --git a/lib/node_modules/@stdlib/utils/property-symbols-in/docs/repl.txt b/lib/node_modules/@stdlib/utils/property-symbols-in/docs/repl.txt index 56ed10938bb2..9d2f3c761a1d 100644 --- a/lib/node_modules/@stdlib/utils/property-symbols-in/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/property-symbols-in/docs/repl.txt @@ -16,7 +16,7 @@ Examples -------- - > var s = {{alias}}( {} ) + > var s = {{alias}}( [] ) See Also -------- diff --git a/lib/node_modules/@stdlib/utils/property-symbols-in/lib/index.js b/lib/node_modules/@stdlib/utils/property-symbols-in/lib/index.js index 05e363c4fa7e..f81f3e69967d 100644 --- a/lib/node_modules/@stdlib/utils/property-symbols-in/lib/index.js +++ b/lib/node_modules/@stdlib/utils/property-symbols-in/lib/index.js @@ -26,7 +26,7 @@ * @example * var propertySymbolsIn = require( '@stdlib/utils/property-symbols-in' ); * -* var symbols = propertySymbolsIn( {} ); +* var symbols = propertySymbolsIn( [] ); */ // MODULES // diff --git a/lib/node_modules/@stdlib/utils/property-symbols-in/lib/main.js b/lib/node_modules/@stdlib/utils/property-symbols-in/lib/main.js index 6925892ebee7..10daa155eb64 100644 --- a/lib/node_modules/@stdlib/utils/property-symbols-in/lib/main.js +++ b/lib/node_modules/@stdlib/utils/property-symbols-in/lib/main.js @@ -58,7 +58,7 @@ function contains( arr, v ) { * @returns {Array} a list of own and inherited symbol properties * * @example -* var symbols = propertySymbolsIn( {} ); +* var symbols = propertySymbolsIn( [] ); */ function propertySymbolsIn( value ) { var symbols; From cc5f76a9bcc576acfce59cfd078573e22f31166a Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 17:10:58 -0700 Subject: [PATCH 0059/1062] Fix description --- lib/node_modules/@stdlib/utils/nonenumerable-keys/docs/repl.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys/docs/repl.txt b/lib/node_modules/@stdlib/utils/nonenumerable-keys/docs/repl.txt index 08f7b6f9a317..dbebe6e57eaf 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys/docs/repl.txt @@ -17,7 +17,7 @@ Returns ------- keys: Array - List of an object's own enumerable non-enumerable property names. + List of an object's own non-enumerable property names. Examples -------- From 1550a5297ddbfe5bc88ecfc347d8ad0c86db4eb1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 17:11:10 -0700 Subject: [PATCH 0060/1062] Fix description --- .../@stdlib/utils/nonenumerable-keys-in/docs/repl.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/docs/repl.txt b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/docs/repl.txt index e21768654175..7b5a1a523e06 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/docs/repl.txt @@ -18,8 +18,7 @@ Returns ------- keys: Array - List of an object's own and inherited enumerable non-enumerable property - names. + List of an object's own and inherited non-enumerable property names. Examples -------- From 9981fb7db5a14b0acd8ec3450f6cab3d82df61a0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 17:58:28 -0700 Subject: [PATCH 0061/1062] Ensure `constructor` prototype property is not enumerable --- lib/node_modules/@stdlib/utils/inherit/lib/inherit.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/inherit/lib/inherit.js b/lib/node_modules/@stdlib/utils/inherit/lib/inherit.js index 110822f83d3e..d34f48127d17 100644 --- a/lib/node_modules/@stdlib/utils/inherit/lib/inherit.js +++ b/lib/node_modules/@stdlib/utils/inherit/lib/inherit.js @@ -20,6 +20,7 @@ // MODULES // +var defineProperty = require( '@stdlib/utils/define-property' ); var validate = require( './validate.js' ); var createObject = require( './detect.js' ); @@ -76,7 +77,12 @@ function inherit( ctor, superCtor ) { ctor.prototype = createObject( superCtor.prototype ); // Set the constructor to refer to the child constructor: - ctor.prototype.constructor = ctor; + defineProperty( ctor.prototype, 'constructor', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': ctor + }); return ctor; } From 821f25c160bd16c028983aa509ccc670180dc637 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 18:03:37 -0700 Subject: [PATCH 0062/1062] Add utility to return an object's inherited enumerable property names --- .../@stdlib/utils/inherited-keys/README.md | 138 +++++++++ .../inherited-keys/benchmark/benchmark.js | 72 +++++ .../utils/inherited-keys/docs/repl.txt | 32 +++ .../utils/inherited-keys/examples/index.js | 50 ++++ .../@stdlib/utils/inherited-keys/lib/index.js | 39 +++ .../@stdlib/utils/inherited-keys/lib/main.js | 105 +++++++ .../@stdlib/utils/inherited-keys/package.json | 68 +++++ .../@stdlib/utils/inherited-keys/test/test.js | 261 ++++++++++++++++++ 8 files changed, 765 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/inherited-keys/README.md create mode 100644 lib/node_modules/@stdlib/utils/inherited-keys/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-keys/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/inherited-keys/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-keys/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-keys/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-keys/package.json create mode 100644 lib/node_modules/@stdlib/utils/inherited-keys/test/test.js diff --git a/lib/node_modules/@stdlib/utils/inherited-keys/README.md b/lib/node_modules/@stdlib/utils/inherited-keys/README.md new file mode 100644 index 000000000000..e5c2cdd28775 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-keys/README.md @@ -0,0 +1,138 @@ + + +# inheritedKeys + +> Return an array of an object's inherited enumerable property names. + +
+ +## Usage + +```javascript +var inheritedKeys = require( '@stdlib/utils/inherited-keys' ); +``` + +#### inheritedKeys( obj\[, level] ) + +Returns an `array` of an object's inherited enumerable property names. + +```javascript +function Foo() { + this.a = 'b'; + return this; +} + +Foo.prototype.beep = 'boop'; + +var f = new Foo(); +var keys = inheritedKeys( f ); +// returns [ 'beep' ] +``` + +By default, the function walks an object's entire prototype chain. To limit the inheritance level, provide a `level` argument. + +```javascript +var inherit = require( '@stdlib/utils/inherit' ); + +function Bar() { + return this; +} + +Bar.prototype.boop = 'beep'; + +function Foo() { + Bar.call( this ); + this.a = 'b'; + return this; +} + +inherit( Foo, Bar ); +Foo.prototype.beep = 'boop'; + +var f = new Foo(); +var keys = inheritedKeys( f, 1 ); +// returns [ 'beep' ] +``` + +
+ + + +
+ +## Notes + +- Name order is not guaranteed, as `object` key enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s keys, thus allowing for deterministic extraction. + +
+ + + +
+ +## Examples + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var inheritedKeys = require( '@stdlib/utils/inherited-keys' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; +defineProperty( Foo.prototype, 'bip', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' +}); + +var obj = new Foo(); +var keys = inheritedKeys( obj ); + +console.log( keys ); +// => [ 'foo' ] +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/inherited-keys/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/inherited-keys/benchmark/benchmark.js new file mode 100644 index 000000000000..ddafc545ac24 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-keys/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var inheritedKeys = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = inheritedKeys( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/inherited-keys/docs/repl.txt b/lib/node_modules/@stdlib/utils/inherited-keys/docs/repl.txt new file mode 100644 index 000000000000..a8deeb4a1176 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-keys/docs/repl.txt @@ -0,0 +1,32 @@ + +{{alias}}( value[, level] ) + Returns an array of an object's inherited enumerable property + names. + + Name order is not guaranteed, as object key enumeration is not specified + according to the ECMAScript specification. In practice, however, most + engines use insertion order to sort an object's keys, thus allowing for + deterministic extraction. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + level: integer (optional) + Inheritance level. + + Returns + ------- + keys: Array + List of an object's inherited enumerable property names. + + Examples + -------- + > var keys = {{alias}}( {} ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/inherited-keys/examples/index.js b/lib/node_modules/@stdlib/utils/inherited-keys/examples/index.js new file mode 100644 index 000000000000..7486b6e69178 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-keys/examples/index.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var inheritedKeys = require( './../lib' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; +defineProperty( Foo.prototype, 'bip', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' +}); + +var obj = new Foo(); +var keys = inheritedKeys( obj ); + +console.log( keys ); +// => [ 'foo' ] diff --git a/lib/node_modules/@stdlib/utils/inherited-keys/lib/index.js b/lib/node_modules/@stdlib/utils/inherited-keys/lib/index.js new file mode 100644 index 000000000000..7a15491dd7f9 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-keys/lib/index.js @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's inherited enumerable property names. +* +* @module @stdlib/utils/inherited-keys +* +* @example +* var inheritedKeys = require( '@stdlib/utils/inherited-keys' ); +* +* var keys = inheritedKeys( [] ); +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/inherited-keys/lib/main.js b/lib/node_modules/@stdlib/utils/inherited-keys/lib/main.js new file mode 100644 index 000000000000..ff6af0ead8bf --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-keys/lib/main.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var MAX_SAFE_INTEGER = require( '@stdlib/constants/math/float64-max-safe-integer' ); +var isPositiveInteger = require( '@stdlib/assert/is-positive-integer' ).isPrimitive; +var getKeys = require( '@stdlib/utils/keys' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating if an array contains a provided value. +* +* @private +* @param {Array} arr - array +* @param {*} v - search value +* @returns {boolean} boolean indicating if an array contains a search value +*/ +function contains( arr, v ) { + var i; + for ( i = 0; i < arr.length; i++ ) { + if ( arr[ i ] === v ) { + return true; + } + } + return false; +} + + +// MAIN // + +/** +* Returns an array of an object's inherited enumerable property names. +* +* @param {*} value - input object +* @param {PositiveInteger} [level] - inheritance level +* @throws {TypeError} second argument must be a positive integer +* @returns {Array} a list of inherited enumerable property names +* +* @example +* var keys = inheritedKeys( {} ); +*/ +function inheritedKeys( value, level ) { + var names; + var obj; + var tmp; + var N; + var n; + var i; + + if ( arguments.length > 1 ) { + if ( !isPositiveInteger( level ) ) { + throw new TypeError( 'invalid argument. Second argument must be a positive integer. Value: `' + level + '`.' ); + } + N = level; + } else { + N = MAX_SAFE_INTEGER; + } + if ( value === null || value === void 0 ) { + return []; + } + // Get the value's prototype: + obj = getPrototypeOf( value ); + + // Walk the prototype chain collecting all enumerable property names... + names = []; + n = 1; + while ( obj && n <= N ) { + tmp = getKeys( obj ); + for ( i = 0; i < tmp.length; i++ ) { + if ( contains( names, tmp[ i ] ) === false ) { + names.push( tmp[ i ] ); + } + } + obj = getPrototypeOf( obj ); + n += 1; + } + + return names; +} + + +// EXPORTS // + +module.exports = inheritedKeys; diff --git a/lib/node_modules/@stdlib/utils/inherited-keys/package.json b/lib/node_modules/@stdlib/utils/inherited-keys/package.json new file mode 100644 index 000000000000..23071a90e238 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-keys/package.json @@ -0,0 +1,68 @@ +{ + "name": "@stdlib/utils/inherited-keys", + "version": "0.0.0", + "description": "Return an array of an object's inherited enumerable property names.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "names", + "keys", + "keys-in", + "enumerable", + "inherited", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/inherited-keys/test/test.js b/lib/node_modules/@stdlib/utils/inherited-keys/test/test.js new file mode 100644 index 000000000000..ec5910f5072e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-keys/test/test.js @@ -0,0 +1,261 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var inherit = require( '@stdlib/utils/inherit' ); +var inheritedKeys = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof inheritedKeys, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function throws an error if not provided a positive integer for the inheritance level', function test( t ) { + var values; + var i; + + values = [ + '5', + -5, + 0, + 3.14, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + inheritedKeys( {}, value ); + }; + } +}); + +tape( 'the function returns an array of an object\'s inherited enumerable property names', function test( t ) { + var expected; + var actual; + var obj; + var idx; + var i; + + function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ 'foo' ]; + actual = inheritedKeys( obj ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s inherited enumerable property names (multiple inheritance)', function test( t ) { + var expected; + var actual; + var obj; + var idx; + var i; + + function Bar() { + this.boop = 'beep'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + Bar.prototype.bar = [ 'foo' ]; + defineProperty( Bar.prototype, 'bap', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'baz' + }); + + function Foo() { + Bar.call( this ); + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ 'foo', 'bar' ]; + actual = inheritedKeys( obj ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); + } + t.end(); +}); + +tape( 'the function supports limiting the inheritance level', function test( t ) { + var expected; + var actual; + var obj; + var idx; + var i; + + function Bar() { + this.boop = 'beep'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + Bar.prototype.bar = [ 'foo' ]; + defineProperty( Bar.prototype, 'bap', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'baz' + }); + + function Foo() { + Bar.call( this ); + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ 'foo' ]; + actual = inheritedKeys( obj, 1 ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = inheritedKeys( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From 7f6c388515e0f0b79d60f7521edb77896da4e927 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 18:04:39 -0700 Subject: [PATCH 0063/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 0ef5aa64ed1d..6846feffe7b5 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -765,6 +765,15 @@ setReadOnly( utils, 'indexOf', require( '@stdlib/utils/index-of' ) ); */ setReadOnly( utils, 'inherit', require( '@stdlib/utils/inherit' ) ); +/** +* @name inheritedKeys +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/inherited-keys} +*/ +setReadOnly( utils, 'inheritedKeys', require( '@stdlib/utils/inherited-keys' ) ); + /** * @name inmap * @memberof utils From 074edb22d057973225091e5108f028c7eafb3605 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 2 Sep 2018 18:06:46 -0700 Subject: [PATCH 0064/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 13 +++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 3 ++- lib/node_modules/@stdlib/repl/help/lib/db.js | 7 ++++--- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 8d9db87f8cdf..4fb638a5608f 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -1350,6 +1350,19 @@ ns.push({ 'related': [] }); +ns.push({ + 'alias': 'inheritedKeys', + 'path': '@stdlib/utils/inherited-keys', + 'value': require( '@stdlib/utils/inherited-keys' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/keys', + '@stdlib/utils/keys-in', + '@stdlib/utils/inherited-property-names', + '@stdlib/utils/inherited-property-symbols' + ] +}); + ns.push({ 'alias': 'inmap', 'path': '@stdlib/utils/inmap', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 2d68cebd97cf..74de2ea99e76 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1100,6 +1100,7 @@ var db = { "ind2sub": "d = [ 3, 3, 3 ];\ns = ind2sub( d, 17 )\n\n// Provide an output array:\nout = new Array( d.length );\ns = ind2sub( out, d, 17 )\nbool = ( s === out )\n", "indexOf": "\n// Basic usage:\narr = [ 4, 3, 2, 1 ];\nidx = indexOf( arr, 3 )\narr = [ 4, 3, 2, 1 ];\nidx = indexOf( arr, 5 )\n\n// Using a `fromIndex`:\narr = [ 1, 2, 3, 4, 5, 2, 6 ];\nidx = indexOf( arr, 2, 3 )\n\n// `fromIndex` which exceeds `array` length:\narr = [ 1, 2, 3, 4, 2, 5 ];\nidx = indexOf( arr, 2, 10 )\n\n// Negative `fromIndex`:\narr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];\nidx = indexOf( arr, 2, -4 )\nidx = indexOf( arr, 2, -1 )\n\n// Negative `fromIndex` exceeding input `array` length:\narr = [ 1, 2, 3, 4, 5, 2, 6 ];\nidx = indexOf( arr, 2, -10 )\n\n// Array-like objects:\nstr = 'bebop';\nidx = indexOf( str, 'o' )\n", "inherit": "\n// Create a parent constructor:\nfunction Foo() { return this; };\nFoo.prototype.beep = function beep() { return 'boop'; };\n\n// Create a child constructor:\nfunction Bar() { Foo.call( this ); return this; };\n\n// Setup inheritance:\ninherit( Bar, Foo );\nbar = new Bar();\nv = bar.beep()\n", + "inheritedKeys": "keys = inheritedKeys( {} )\n", "inmap": "function foo( v, i ) { return v * i; };\narr = [ 1.0, 2.0, 3.0 ];\nout = inmap( arr, foo )\nbool = ( out === arr )\n", "inmapAsync": "\n// Basic usage:\nfunction fcn( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, value*index );\n }\n};\nfunction done( error, collection ) {\n if ( error ) {\n throw error;\n }\n console.log( collection === arr );\n console.log( collection );\n};\narr = [ 3000, 2500, 1000 ];\ninmapAsync( arr, fcn, done )\n\n// Limit number of concurrent invocations:\nfunction fcn( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, value*index );\n }\n};\nfunction done( error, collection ) {\n if ( error ) {\n throw error;\n }\n console.log( collection === arr );\n console.log( collection );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\ninmapAsync( arr, opts, fcn, done )\n\n// Process sequentially:\nfunction fcn( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, value*index );\n }\n};\nfunction done( error, collection ) {\n if ( error ) {\n throw error;\n }\n console.log( collection === arr );\n console.log( collection );\n};\nopts = { 'series': true };\narr = [ 3000, 2500, 1000 ];\ninmapAsync( arr, opts, fcn, done )\n", "inmapRight": "function foo( v, i ) { console.log( '%s: %d', i, v ); return v * i; };\narr = [ 1.0, 2.0, 3.0 ];\nout = inmapRight( arr, foo )\nbool = ( out === arr )\n", @@ -1389,7 +1390,7 @@ var db = { "propertyNames": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = propertyNames( obj )\n", "propertyNamesIn": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = propertyNamesIn( obj )\n", "propertySymbols": "s = propertySymbols( {} )\n", - "propertySymbolsIn": "s = propertySymbolsIn( {} )\n", + "propertySymbolsIn": "s = propertySymbolsIn( [] )\n", "Proxy": "function get( obj, prop ) { return obj[ prop ] * 2.0 };\nh = { 'get': get };\np = Proxy( {}, h );\np.a = 3.14;\np.a\n", "push": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\narr = push( arr, 6.0, 7.0 )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\narr = push( arr, 3.0, 4.0 )\n\n// Array-like object:\narr = { 'length': 0 };\narr = push( arr, 1.0, 2.0 )\n", "quarterOfYear": "q = quarterOfYear( new Date() )\nq = quarterOfYear( 4 )\nq = quarterOfYear( 'June' )\n\n// Other ways to supply month:\nq = quarterOfYear( 'April' )\nq = quarterOfYear( 'apr' )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index c485ca4720c3..64ff98de9258 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1100,6 +1100,7 @@ var db = { "ind2sub": "\nind2sub( [out,] shape, idx[, options] )\n Converts a linear index to an array of subscripts.\n\n Parameters\n ----------\n out: Array|TypedArray|Object (optional)\n Output array.\n\n shape: ArrayLike\n Array shape.\n\n idx: integer\n Linear index.\n\n options: Object (optional)\n Options.\n\n options.order: string (optional)\n Specifies whether an array is row-major (C-style) or column-major\n (Fortran style). Default: 'row-major'.\n\n options.mode: string (optional)\n Specifies how to handle a linear index which exceeds array dimensions.\n If equal to 'throw', the function throws an error when a linear index\n exceeds array dimensions. If equal to 'wrap', the function wraps around\n a linear index exceeding array dimensions using modulo arithmetic. If\n equal to 'clamp', the function sets a linear index exceeding array\n dimensions to either `0` (minimum linear index) or the maximum linear\n index. Default: 'throw'.\n\n Returns\n -------\n out: Array\n Subscripts.\n\n Examples\n --------\n > var d = [ 3, 3, 3 ];\n > var s = ind2sub( d, 17 )\n [ 1, 2, 2 ]\n\n // Provide an output array:\n > var out = new Array( d.length );\n > s = ind2sub( out, d, 17 )\n [ 1, 2, 2 ]\n > var bool = ( s === out )\n true\n\n See Also\n --------\n array, ndarray, sub2ind\n", "indexOf": "\nindexOf( arr, searchElement[, fromIndex] )\n Returns the first index at which a given element can be found.\n\n Search is performed using *strict equality* comparison.\n\n Parameters\n ----------\n arr: ArrayLike\n Array-like object.\n\n searchElement: any\n Element to find.\n\n fromIndex: integer (optional)\n Starting index (if negative, the start index is determined relative to\n last element).\n\n Returns\n -------\n out: integer\n Index or -1.\n\n Examples\n --------\n // Basic usage:\n > var arr = [ 4, 3, 2, 1 ];\n > var idx = indexOf( arr, 3 )\n 1\n > arr = [ 4, 3, 2, 1 ];\n > idx = indexOf( arr, 5 )\n -1\n\n // Using a `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, 3 )\n 5\n\n // `fromIndex` which exceeds `array` length:\n > arr = [ 1, 2, 3, 4, 2, 5 ];\n > idx = indexOf( arr, 2, 10 )\n -1\n\n // Negative `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];\n > idx = indexOf( arr, 2, -4 )\n 5\n > idx = indexOf( arr, 2, -1 )\n 7\n\n // Negative `fromIndex` exceeding input `array` length:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, -10 )\n 1\n\n // Array-like objects:\n > var str = 'bebop';\n > idx = indexOf( str, 'o' )\n 3\n\n", "inherit": "\ninherit( ctor, superCtor )\n Prototypical inheritance by replacing the prototype of one constructor with\n the prototype of another constructor.\n\n This function is not designed to work with ES2015/ES6 classes. For\n ES2015/ES6 classes, use `class` with `extends`.\n\n Parameters\n ----------\n ctor: Object|Function\n Constructor which will inherit.\n\n superCtor: Object|Function\n Super (parent) constructor.\n\n Returns\n -------\n out: Object|Function\n Child constructor.\n\n Examples\n --------\n // Create a parent constructor:\n > function Foo() { return this; };\n > Foo.prototype.beep = function beep() { return 'boop'; };\n\n // Create a child constructor:\n > function Bar() { Foo.call( this ); return this; };\n\n // Setup inheritance:\n > inherit( Bar, Foo );\n > var bar = new Bar();\n > var v = bar.beep()\n 'boop'\n\n", + "inheritedKeys": "\ninheritedKeys( value[, level] )\n Returns an array of an object's inherited enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable property names.\n\n Examples\n --------\n > var keys = inheritedKeys( {} )\n\n See Also\n --------\n objectKeys, keysIn\n", "inmap": "\ninmap( collection, fcn[, thisArg] )\n Invokes a function for each element in a collection and updates the\n collection in-place.\n\n When invoked, the input function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection. If provided an object, the object must be array-like\n (excluding strings and functions).\n\n fcn: Function\n Function to invoke for each element in the input collection. The\n function's return value is used to update the collection in-place.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function foo( v, i ) { return v * i; };\n > var arr = [ 1.0, 2.0, 3.0 ];\n > var out = inmap( arr, foo )\n [ 0.0, 2.0, 6.0 ]\n > var bool = ( out === arr )\n true\n\n See Also\n --------\n forEach, inmapRight\n", "inmapAsync": "\ninmapAsync( collection, [options,] fcn, done )\n Invokes a function once for each element in a collection and updates a\n collection in-place.\n\n When invoked, `fcn` is provided a maximum of four arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If `fcn`\n accepts two arguments, `fcn` is provided:\n\n - `value`\n - `next`\n\n If `fcn` accepts three arguments, `fcn` is provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other `fcn` signature, `fcn` is provided all four arguments.\n\n The `next` callback accepts two arguments:\n\n - `error`: error argument\n - `result`: value used to update the collection\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling. Note, however, that the function\n may have mutated an input collection during prior invocations, resulting in\n a partially mutated collection.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > inmapAsync( arr, fcn, done )\n 1000\n 2500\n 3000\n true\n [ 0, 2500, 2000 ]\n\n // Limit number of concurrent invocations:\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > inmapAsync( arr, opts, fcn, done )\n 2500\n 3000\n 1000\n true\n [ 0, 2500, 2000 ]\n\n // Process sequentially:\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > inmapAsync( arr, opts, fcn, done )\n 3000\n 2500\n 1000\n true\n [ 0, 2500, 2000 ]\n\n\ninmapAsync.factory( [options,] fcn )\n Returns a function which invokes a function once for each element in a\n collection and updates a collection in-place.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which invokes a function for each element in a collection.\n\n Examples\n --------\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = inmapAsync.factory( opts, fcn );\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n [ 0, 2500, 2000 ]\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n [ 0, 1500, 2000 ]\n\n See Also\n --------\n forEachAsync, inmap, inmapRightAsync\n", "inmapRight": "\ninmapRight( collection, fcn[, thisArg] )\n Invokes a function for each element in a collection and updates the\n collection in-place, iterating from right to left.\n\n When invoked, the input function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection. If provided an object, the object must be array-like\n (excluding strings and functions).\n\n fcn: Function\n Function to invoke for each element in the input collection. The\n function's return value is used to update the collection in-place.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function foo( v, i ) { console.log( '%s: %d', i, v ); return v * i; };\n > var arr = [ 1.0, 2.0, 3.0 ];\n > var out = inmapRight( arr, foo )\n 2: 3.0\n 1: 2.0\n 0: 1.0\n [ 0.0, 2.0, 6.0 ]\n > var bool = ( out === arr )\n true\n\n See Also\n --------\n forEachRight, inmap\n", @@ -1345,8 +1346,8 @@ var db = { "noneByAsync": "\nnoneByAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByAsync, everyByAsync, forEachAsync, noneBy, noneByRightAsync, someByAsync\n", "noneByRight": "\nnoneByRight( collection, predicate[, thisArg ] )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n The predicate function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n The function immediately returns upon encountering a truthy return value.\n\n If provided an empty collection, the function returns `true`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n predicate: Function\n The test function.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n bool: boolean\n The function returns `true` if the predicate function returns a falsy\n value for all elements; otherwise, the function returns `false`.\n\n Examples\n --------\n > function positive( v ) { return ( v > 0 ); };\n > var arr = [ -1, -2, -3, -4 ];\n > var bool = noneByRight( arr, positive )\n true\n\n See Also\n --------\n anyByRight, everyByRight, forEachRight, none, noneBy, someByRight\n", "noneByRightAsync": "\nnoneByRightAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByRightAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function, iterating from right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByRightAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByRightAsync, everyByRightAsync, forEachRightAsync, noneByAsync, noneByRight, someByRightAsync\n", - "nonEnumerableKeys": "\nnonEnumerableKeys( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerableKeys( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeysIn, propertyNames\n", - "nonEnumerableKeysIn": "\nnonEnumerableKeysIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable non-enumerable property\n names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerableKeysIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, nonEnumerableKeys, propertyNamesIn\n", + "nonEnumerableKeys": "\nnonEnumerableKeys( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerableKeys( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeysIn, propertyNames\n", + "nonEnumerableKeysIn": "\nnonEnumerableKeysIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerableKeysIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, nonEnumerableKeys, propertyNamesIn\n", "noop": "\nnoop()\n A function which does nothing.\n\n Examples\n --------\n > noop();\n\n", "now": "\nnow()\n Returns the time in seconds since the epoch.\n\n The Unix epoch is 00:00:00 UTC on 1 January 1970.\n\n Returns\n -------\n out: integer\n Time in seconds since the epoch.\n\n Examples\n --------\n > var ts = now()\n \n\n", "NUM_CPUS": "\nNUM_CPUS\n Number of CPUs.\n\n In browser environments, the number of CPUs is determined by querying the\n hardware concurrency API.\n\n In Node.js environments, the number of CPUs is determined via the `os`\n module.\n\n Examples\n --------\n > NUM_CPUS\n \n\n", @@ -1390,7 +1391,7 @@ var db = { "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeys, propertyNamesIn, propertySymbols\n", "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeysIn, propertyNames, propertySymbolsIn\n", "propertySymbols": "\npropertySymbols( value )\n Returns an array of an object's own symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own symbol properties.\n\n Examples\n --------\n > var s = propertySymbols( {} )\n\n See Also\n --------\n propertyNames, propertySymbolsIn\n", - "propertySymbolsIn": "\npropertySymbolsIn( value )\n Returns an array of an object's own and inherited symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited symbol properties.\n\n Examples\n --------\n > var s = propertySymbolsIn( {} )\n\n See Also\n --------\n propertyNamesIn, propertySymbols\n", + "propertySymbolsIn": "\npropertySymbolsIn( value )\n Returns an array of an object's own and inherited symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited symbol properties.\n\n Examples\n --------\n > var s = propertySymbolsIn( [] )\n\n See Also\n --------\n propertyNamesIn, propertySymbols\n", "Proxy": "\nProxy( target, handlers )\n Returns a proxy object implementing custom behavior for specified object\n operations.\n\n The following \"traps\" are supported:\n\n - getPrototypeOf( target )\n Trap for `Object.getPrototypeOf()`. Can be used to intercept the\n `instanceof` operator. The method must return an object or `null`.\n\n - setPrototypeOf( target, prototype )\n Trap for `Object.setPrototypeOf()`. The method must return a boolean\n indicating if prototype successfully set.\n\n - isExtensible( target )\n Trap for `Object.isExtensible()`. The method must return a boolean.\n\n - preventExtensions( target )\n Trap for `Object.preventExtensions()`. The method must return a boolean.\n\n - getOwnPropertyDescriptor( target, property )\n Trap for `Object.getOwnPropertyDescriptor()`. The method must return an\n object or `undefined`.\n\n - defineProperty( target, property, descriptor )\n Trap for `Object.defineProperty()`. The method must return a boolean\n indicating whether the operation succeeded.\n\n - has( target, property )\n Trap for the `in` operator. The method must return a boolean.\n\n - get( target, property, receiver )\n Trap for retrieving property values. The method can return any value.\n\n - set( target, property, value, receiver )\n Trap for setting property values. The method should return a boolean\n indicating whether assignment succeeded.\n\n - deleteProperty( target, property )\n Trap for the `delete` operator. The method must return a boolean\n indicating whether operation succeeded.\n\n - ownKeys( target )\n Trap for `Object.keys`, `Object.getOwnPropertyNames()`, and\n `Object.getOwnPropertySymbols()`. The method must return an enumerable\n object.\n\n - apply( target, thisArg, argumentsList )\n Trap for a function call. The method can return any value.\n\n - construct( target, argumentsList, newTarget )\n Trap for the `new` operator. The method must return an object.\n\n All traps are optional. If a trap is not defined, the default behavior is to\n forward the operation to the target.\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Proxy object.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.a = 3.14;\n > p.a\n 6.28\n\n\nProxy.revocable( target, handlers )\n Returns a revocable proxy object\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Revocable proxy object.\n\n p.proxy: Object\n Proxy object.\n\n p.revoke: Function\n Invalidates a proxy, rendering a proxy object unusable.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.proxy.a = 3.14;\n > p.proxy.a\n 6.28\n > p.revoke();\n\n", "push": "\npush( collection, ...items )\n Adds one or more elements to the end of a collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n items: ...any\n Items to add.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = push( arr, 6.0, 7.0 )\n [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = push( arr, 3.0, 4.0 )\n [ 1.0, 2.0, 3.0, 4.0 ]\n\n // Array-like object:\n > arr = { 'length': 0 };\n > arr = push( arr, 1.0, 2.0 )\n { 'length': 2, '0': 1.0, '1': 2.0 }\n\n See Also\n --------\n pop, shift, unshift\n", "quarterOfYear": "\nquarterOfYear( [month] )\n Returns the quarter of the year.\n\n By default, the function returns the quarter of the year for the current\n month in the current year (according to local time). To determine the\n quarter for a particular month, provide either a month or a `Date`\n object.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n Parameters\n ----------\n month: integer|string|Date (optional)\n Month (or `Date`).\n\n Returns\n -------\n out: integer\n Quarter of the year.\n\n Examples\n --------\n > var q = quarterOfYear( new Date() )\n \n > q = quarterOfYear( 4 )\n 2\n > q = quarterOfYear( 'June' )\n 2\n\n // Other ways to supply month:\n > q = quarterOfYear( 'April' )\n 2\n > q = quarterOfYear( 'apr' )\n 2\n\n See Also\n --------\n dayOfYear\n", From 9f846ad2b19962567810622933a8ffea95469775 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 01:05:39 -0700 Subject: [PATCH 0065/1062] Fix text wrapping --- lib/node_modules/@stdlib/utils/inherited-keys/docs/repl.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/inherited-keys/docs/repl.txt b/lib/node_modules/@stdlib/utils/inherited-keys/docs/repl.txt index a8deeb4a1176..bada53695b7a 100644 --- a/lib/node_modules/@stdlib/utils/inherited-keys/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/inherited-keys/docs/repl.txt @@ -1,7 +1,6 @@ {{alias}}( value[, level] ) - Returns an array of an object's inherited enumerable property - names. + Returns an array of an object's inherited enumerable property names. Name order is not guaranteed, as object key enumeration is not specified according to the ECMAScript specification. In practice, however, most From 695d9ce4b37a19dec50423b75208f63adb06d627 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 01:16:49 -0700 Subject: [PATCH 0066/1062] Add utility to return an object's inherited property names --- .../utils/inherited-property-names/README.md | 138 +++++++++ .../benchmark/benchmark.js | 72 +++++ .../inherited-property-names/docs/repl.txt | 33 +++ .../examples/index.js | 50 ++++ .../inherited-property-names/lib/index.js | 39 +++ .../inherited-property-names/lib/main.js | 105 +++++++ .../inherited-property-names/package.json | 70 +++++ .../inherited-property-names/test/test.js | 261 ++++++++++++++++++ 8 files changed, 768 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-names/README.md create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-names/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-names/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-names/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-names/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-names/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-names/package.json create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-names/test/test.js diff --git a/lib/node_modules/@stdlib/utils/inherited-property-names/README.md b/lib/node_modules/@stdlib/utils/inherited-property-names/README.md new file mode 100644 index 000000000000..7e316652ddd2 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-names/README.md @@ -0,0 +1,138 @@ + + +# inheritedPropertyNames + +> Return an array of an object's inherited enumerable and non-enumerable property names. + +
+ +## Usage + +```javascript +var inheritedPropertyNames = require( '@stdlib/utils/inherited-property-names' ); +``` + +#### inheritedPropertyNames( obj\[, level] ) + +Returns an `array` of an object's inherited enumerable and non-enumerable property names. + +```javascript +function Foo() { + this.a = 'b'; + return this; +} + +Foo.prototype.beep = 'boop'; + +var f = new Foo(); +var keys = inheritedPropertyNames( f ); +// returns [ 'beep', ... ] +``` + +By default, the function walks an object's entire prototype chain. To limit the inheritance level, provide a `level` argument. + +```javascript +var inherit = require( '@stdlib/utils/inherit' ); + +function Bar() { + return this; +} + +Bar.prototype.boop = 'beep'; + +function Foo() { + Bar.call( this ); + this.a = 'b'; + return this; +} + +inherit( Foo, Bar ); +Foo.prototype.beep = 'boop'; + +var f = new Foo(); +var keys = inheritedPropertyNames( f, 1 ); +// returns [ 'beep', ... ] +``` + +
+ + + +
+ +## Notes + +- Name order is not guaranteed, as `object` key enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s keys, thus allowing for deterministic extraction. + +
+ + + +
+ +## Examples + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var inheritedPropertyNames = require( '@stdlib/utils/inherited-property-names' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; +defineProperty( Foo.prototype, 'bip', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' +}); + +var obj = new Foo(); +var keys = inheritedPropertyNames( obj ); + +console.log( keys ); +// e.g., => [ 'foo', 'bip', ... ] +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/inherited-property-names/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/inherited-property-names/benchmark/benchmark.js new file mode 100644 index 000000000000..c32470a96946 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-names/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var inheritedPropertyNames = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = inheritedPropertyNames( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/inherited-property-names/docs/repl.txt b/lib/node_modules/@stdlib/utils/inherited-property-names/docs/repl.txt new file mode 100644 index 000000000000..519f0bc6c822 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-names/docs/repl.txt @@ -0,0 +1,33 @@ + +{{alias}}( value[, level] ) + Returns an array of an object's inherited enumerable and non-enumerable + property names. + + Name order is not guaranteed, as object key enumeration is not specified + according to the ECMAScript specification. In practice, however, most + engines use insertion order to sort an object's keys, thus allowing for + deterministic extraction. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + level: integer (optional) + Inheritance level. + + Returns + ------- + keys: Array + List of an object's inherited enumerable and non-enumerable property + names. + + Examples + -------- + > var keys = {{alias}}( [] ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/inherited-property-names/examples/index.js b/lib/node_modules/@stdlib/utils/inherited-property-names/examples/index.js new file mode 100644 index 000000000000..0e34770721a5 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-names/examples/index.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var inheritedPropertyNames = require( './../lib' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; +defineProperty( Foo.prototype, 'bip', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' +}); + +var obj = new Foo(); +var keys = inheritedPropertyNames( obj ); + +console.log( keys ); +// e.g., => [ 'foo', 'bip', ... ] diff --git a/lib/node_modules/@stdlib/utils/inherited-property-names/lib/index.js b/lib/node_modules/@stdlib/utils/inherited-property-names/lib/index.js new file mode 100644 index 000000000000..87b7de4c7900 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-names/lib/index.js @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's inherited enumerable and non-enumerable property names. +* +* @module @stdlib/utils/inherited-property-names +* +* @example +* var inheritedPropertyNames = require( '@stdlib/utils/inherited-property-names' ); +* +* var keys = inheritedPropertyNames( [] ); +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/inherited-property-names/lib/main.js b/lib/node_modules/@stdlib/utils/inherited-property-names/lib/main.js new file mode 100644 index 000000000000..a5fe653b5f04 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-names/lib/main.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var MAX_SAFE_INTEGER = require( '@stdlib/constants/math/float64-max-safe-integer' ); +var isPositiveInteger = require( '@stdlib/assert/is-positive-integer' ).isPrimitive; +var propertyNames = require( '@stdlib/utils/property-names' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating if an array contains a provided value. +* +* @private +* @param {Array} arr - array +* @param {*} v - search value +* @returns {boolean} boolean indicating if an array contains a search value +*/ +function contains( arr, v ) { + var i; + for ( i = 0; i < arr.length; i++ ) { + if ( arr[ i ] === v ) { + return true; + } + } + return false; +} + + +// MAIN // + +/** +* Returns an array of an object's inherited enumerable and non-enumerable property names. +* +* @param {*} value - input object +* @param {PositiveInteger} [level] - inheritance level +* @throws {TypeError} second argument must be a positive integer +* @returns {Array} a list of inherited enumerable and non-enumerable property names +* +* @example +* var keys = inheritedPropertyNames( [] ); +*/ +function inheritedPropertyNames( value, level ) { + var names; + var obj; + var tmp; + var N; + var n; + var i; + + if ( arguments.length > 1 ) { + if ( !isPositiveInteger( level ) ) { + throw new TypeError( 'invalid argument. Second argument must be a positive integer. Value: `' + level + '`.' ); + } + N = level; + } else { + N = MAX_SAFE_INTEGER; + } + if ( value === null || value === void 0 ) { + return []; + } + // Get the value's prototype: + obj = getPrototypeOf( value ); + + // Walk the prototype chain collecting all enumerable and non-enumerable property names... + names = []; + n = 1; + while ( obj && n <= N ) { + tmp = propertyNames( obj ); + for ( i = 0; i < tmp.length; i++ ) { + if ( contains( names, tmp[ i ] ) === false ) { + names.push( tmp[ i ] ); + } + } + obj = getPrototypeOf( obj ); + n += 1; + } + + return names; +} + + +// EXPORTS // + +module.exports = inheritedPropertyNames; diff --git a/lib/node_modules/@stdlib/utils/inherited-property-names/package.json b/lib/node_modules/@stdlib/utils/inherited-property-names/package.json new file mode 100644 index 000000000000..ba18578b33dc --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-names/package.json @@ -0,0 +1,70 @@ +{ + "name": "@stdlib/utils/inherited-property-names", + "version": "0.0.0", + "description": "Return an array of an object's inherited enumerable and non-enumerable property names.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "names", + "keys", + "keys-in", + "enumerable", + "non-enumerable", + "inherited", + "prototype", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/inherited-property-names/test/test.js b/lib/node_modules/@stdlib/utils/inherited-property-names/test/test.js new file mode 100644 index 000000000000..1b9ddbfcf5c4 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-names/test/test.js @@ -0,0 +1,261 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var inherit = require( '@stdlib/utils/inherit' ); +var inheritedPropertyNames = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof inheritedPropertyNames, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function throws an error if not provided a positive integer for the inheritance level', function test( t ) { + var values; + var i; + + values = [ + '5', + -5, + 0, + 3.14, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + inheritedPropertyNames( {}, value ); + }; + } +}); + +tape( 'the function returns an array of an object\'s inherited enumerable and non-enumerable property names', function test( t ) { + var expected; + var actual; + var obj; + var idx; + var i; + + function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ 'foo', 'baz' ]; + actual = inheritedPropertyNames( obj ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s inherited enumerable and non-enumerable property names (multiple inheritance)', function test( t ) { + var expected; + var actual; + var obj; + var idx; + var i; + + function Bar() { + this.boop = 'beep'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + Bar.prototype.bar = [ 'foo' ]; + defineProperty( Bar.prototype, 'bap', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'baz' + }); + + function Foo() { + Bar.call( this ); + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ 'foo', 'bar', 'baz', 'bap' ]; + actual = inheritedPropertyNames( obj ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); + } + t.end(); +}); + +tape( 'the function supports limiting the inheritance level', function test( t ) { + var expected; + var actual; + var obj; + var idx; + var i; + + function Bar() { + this.boop = 'beep'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + Bar.prototype.bar = [ 'foo' ]; + defineProperty( Bar.prototype, 'bap', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'baz' + }); + + function Foo() { + Bar.call( this ); + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ 'foo', 'baz' ]; + actual = inheritedPropertyNames( obj, 1 ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = inheritedPropertyNames( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From c4a3f8d73c60a33c2cc17236421f079239252be7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 01:20:28 -0700 Subject: [PATCH 0067/1062] Update test --- .../@stdlib/utils/inherited-property-names/test/test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/node_modules/@stdlib/utils/inherited-property-names/test/test.js b/lib/node_modules/@stdlib/utils/inherited-property-names/test/test.js index 1b9ddbfcf5c4..213f5e1a4a24 100644 --- a/lib/node_modules/@stdlib/utils/inherited-property-names/test/test.js +++ b/lib/node_modules/@stdlib/utils/inherited-property-names/test/test.js @@ -128,6 +128,7 @@ tape( 'the function returns an array of an object\'s inherited enumerable and no return this; } + Bar.prototype.foo = 3.14; Bar.prototype.bar = [ 'foo' ]; defineProperty( Bar.prototype, 'bap', { 'configurable': false, From 66076cefcede66d9e02913ef601be161f6255ee6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 01:21:30 -0700 Subject: [PATCH 0068/1062] Update test --- lib/node_modules/@stdlib/utils/inherited-keys/test/test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/node_modules/@stdlib/utils/inherited-keys/test/test.js b/lib/node_modules/@stdlib/utils/inherited-keys/test/test.js index ec5910f5072e..f8491a3aa1bf 100644 --- a/lib/node_modules/@stdlib/utils/inherited-keys/test/test.js +++ b/lib/node_modules/@stdlib/utils/inherited-keys/test/test.js @@ -128,6 +128,7 @@ tape( 'the function returns an array of an object\'s inherited enumerable proper return this; } + Bar.prototype.foo = 3.14; Bar.prototype.bar = [ 'foo' ]; defineProperty( Bar.prototype, 'bap', { 'configurable': false, From c6ad354b6aa540bc4e2694a1e362118c5565c65d Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 01:36:09 -0700 Subject: [PATCH 0069/1062] Simplify implementation Because we are only searching own properties, we can be assured that we will not find duplicate property names. --- .../utils/nonenumerable-keys/lib/main.js | 27 +------------------ 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/main.js index 06c3ff58d8ba..af9e37df0b75 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/main.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/main.js @@ -24,28 +24,6 @@ var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property' ); -// FUNCTIONS // - -/** -* Returns a boolean indicating if an array contains a provided value. -* -* @private -* @param {Array} arr - array -* @param {NonNegativeInteger} N - array length -* @param {*} v - search value -* @returns {boolean} boolean indicating if an array contains a search value -*/ -function contains( arr, N, v ) { - var i; - for ( i = 0; i < N; i++ ) { - if ( arr[ i ] === v ) { - return true; - } - } - return false; -} - - // MAIN // /** @@ -80,10 +58,7 @@ function nonEnumerableKeys( value ) { names = getOwnPropertyNames( Object( value ) ); n = 0; for ( i = 0; i < names.length; i++ ) { - if ( - isNonEnumerableProperty( value, names[ i ] ) && - contains( names, n, names[ i ] ) === false - ) { + if ( isNonEnumerableProperty( value, names[ i ] ) ) { names[ n ] = names[ i ]; n += 1; } From 5852d9c7626b542f083e6c5551ed646c3e3e5983 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 02:05:50 -0700 Subject: [PATCH 0070/1062] Add utility to return an object's inherited symbol properties --- .../inherited-property-symbols/README.md | 101 ++++++++ .../benchmark/benchmark.js | 72 ++++++ .../inherited-property-symbols/docs/repl.txt | 26 ++ .../examples/index.js | 45 ++++ .../inherited-property-symbols/lib/index.js | 39 +++ .../inherited-property-symbols/lib/main.js | 105 ++++++++ .../inherited-property-symbols/package.json | 68 +++++ .../inherited-property-symbols/test/test.js | 241 ++++++++++++++++++ 8 files changed, 697 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-symbols/README.md create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-symbols/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-symbols/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-symbols/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-symbols/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-symbols/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-symbols/package.json create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-symbols/test/test.js diff --git a/lib/node_modules/@stdlib/utils/inherited-property-symbols/README.md b/lib/node_modules/@stdlib/utils/inherited-property-symbols/README.md new file mode 100644 index 000000000000..ae4834310e57 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-symbols/README.md @@ -0,0 +1,101 @@ + + +# inheritedPropertySymbols + +> Return an array of an object's inherited [symbol][@stdlib/symbol/ctor] properties. + +
+ +## Usage + +```javascript +var inheritedPropertySymbols = require( '@stdlib/utils/inherited-property-symbols' ); +``` + +#### inheritedPropertySymbols( obj\[, level] ) + +Returns an `array` of an object's inherited [symbol][@stdlib/symbol/ctor] properties. + +```javascript +var symbols = inheritedPropertySymbols( [ 1, 2, 3 ] ); +``` + +By default, the function walks an object's entire prototype chain. To limit the inheritance level, provide a `level` argument. + +```javascript +var symbols = inheritedPropertySymbols( [ 1, 2, 3 ], 1 ); +``` + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var inheritedPropertySymbols = require( '@stdlib/utils/inherited-property-symbols' ); + +var hasSymbols; +var symbols; +var obj; + +hasSymbols = hasSymbolSupport(); + +function Foo() { + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'b'; + } + return this; +} + +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'c' ) ] = 'd'; +} + +obj = new Foo(); +symbols = inheritedPropertySymbols( obj ); + +console.log( symbols ); +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/inherited-property-symbols/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/inherited-property-symbols/benchmark/benchmark.js new file mode 100644 index 000000000000..33e6060890de --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-symbols/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var inheritedPropertySymbols = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = inheritedPropertySymbols( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/inherited-property-symbols/docs/repl.txt b/lib/node_modules/@stdlib/utils/inherited-property-symbols/docs/repl.txt new file mode 100644 index 000000000000..f507926def0a --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-symbols/docs/repl.txt @@ -0,0 +1,26 @@ + +{{alias}}( value[, level] ) + Returns an array of an object's inherited symbol properties. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + level: integer (optional) + Inheritance level. + + Returns + ------- + symbols: Array + List of an object's inherited symbol properties. + + Examples + -------- + > var symbols = {{alias}}( [] ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/inherited-property-symbols/examples/index.js b/lib/node_modules/@stdlib/utils/inherited-property-symbols/examples/index.js new file mode 100644 index 000000000000..7eca3fcde138 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-symbols/examples/index.js @@ -0,0 +1,45 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var inheritedPropertySymbols = require( './../lib' ); + +var hasSymbols; +var symbols; +var obj; + +hasSymbols = hasSymbolSupport(); + +function Foo() { + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'b'; + } + return this; +} + +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'c' ) ] = 'd'; +} + +obj = new Foo(); +symbols = inheritedPropertySymbols( obj ); + +console.log( symbols ); diff --git a/lib/node_modules/@stdlib/utils/inherited-property-symbols/lib/index.js b/lib/node_modules/@stdlib/utils/inherited-property-symbols/lib/index.js new file mode 100644 index 000000000000..ac8af19fe410 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-symbols/lib/index.js @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's inherited symbol properties. +* +* @module @stdlib/utils/inherited-property-symbols +* +* @example +* var inheritedPropertySymbols = require( '@stdlib/utils/inherited-property-symbols' ); +* +* var symbols = inheritedPropertySymbols( [] ); +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/inherited-property-symbols/lib/main.js b/lib/node_modules/@stdlib/utils/inherited-property-symbols/lib/main.js new file mode 100644 index 000000000000..49046ccdb4dd --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-symbols/lib/main.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var MAX_SAFE_INTEGER = require( '@stdlib/constants/math/float64-max-safe-integer' ); +var isPositiveInteger = require( '@stdlib/assert/is-positive-integer' ).isPrimitive; +var propertySymbols = require( '@stdlib/utils/property-symbols' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating if an array contains a provided value. +* +* @private +* @param {Array} arr - array +* @param {*} v - search value +* @returns {boolean} boolean indicating if an array contains a search value +*/ +function contains( arr, v ) { + var i; + for ( i = 0; i < arr.length; i++ ) { + if ( arr[ i ] === v ) { + return true; + } + } + return false; +} + + +// MAIN // + +/** +* Returns an array of an object's inherited symbol properties. +* +* @param {*} value - input object +* @param {PositiveInteger} [level] - inheritance level +* @throws {TypeError} second argument must be a positive integer +* @returns {Array} a list of inherited symbol properties +* +* @example +* var keys = inheritedPropertySymbols( [] ); +*/ +function inheritedPropertySymbols( value, level ) { + var names; + var obj; + var tmp; + var N; + var n; + var i; + + if ( arguments.length > 1 ) { + if ( !isPositiveInteger( level ) ) { + throw new TypeError( 'invalid argument. Second argument must be a positive integer. Value: `' + level + '`.' ); + } + N = level; + } else { + N = MAX_SAFE_INTEGER; + } + if ( value === null || value === void 0 ) { + return []; + } + // Get the value's prototype: + obj = getPrototypeOf( value ); + + // Walk the prototype chain collecting all symbol properties... + names = []; + n = 1; + while ( obj && n <= N ) { + tmp = propertySymbols( obj ); + for ( i = 0; i < tmp.length; i++ ) { + if ( contains( names, tmp[ i ] ) === false ) { + names.push( tmp[ i ] ); + } + } + obj = getPrototypeOf( obj ); + n += 1; + } + + return names; +} + + +// EXPORTS // + +module.exports = inheritedPropertySymbols; diff --git a/lib/node_modules/@stdlib/utils/inherited-property-symbols/package.json b/lib/node_modules/@stdlib/utils/inherited-property-symbols/package.json new file mode 100644 index 000000000000..24193d9f89ee --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-symbols/package.json @@ -0,0 +1,68 @@ +{ + "name": "@stdlib/utils/inherited-property-symbols", + "version": "0.0.0", + "description": "Return an array of an object's inherited symbol properties.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "symbols", + "symbols-in", + "sym", + "symbol", + "inherited", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/inherited-property-symbols/test/test.js b/lib/node_modules/@stdlib/utils/inherited-property-symbols/test/test.js new file mode 100644 index 000000000000..7deb63dafbd7 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-symbols/test/test.js @@ -0,0 +1,241 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var inherit = require( '@stdlib/utils/inherit' ); +var inheritedPropertySymbols = require( './../lib' ); + + +// VARIABLES // + +var hasSymbols = hasSymbolSupport(); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof inheritedPropertySymbols, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function throws an error if not provided a positive integer for the inheritance level', function test( t ) { + var values; + var i; + + values = [ + '5', + -5, + 0, + 3.14, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + inheritedPropertySymbols( {}, value ); + }; + } +}); + +tape( 'the function returns an array of an object\'s inherited symbol properties', function test( t ) { + var expected; + var symbols; + var actual; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + symbols = [ Symbol( 'a' ), Symbol( 'b' ), Symbol( 'c' ) ]; + } else { + symbols = []; + } + + function Foo() { + if ( hasSymbols ) { + this[ symbols[ 0 ] ] = 0; + this[ symbols[ 1 ] ] = 1; + } + return this; + } + + if ( hasSymbols ) { + Foo.prototype[ symbols[ 1 ] ] = 1; + Foo.prototype[ symbols[ 2 ] ] = 2; + } + + obj = new Foo(); + + if ( hasSymbols ) { + expected = [ symbols[ 1 ], symbols[ 2 ] ]; + } else { + expected = []; + } + actual = inheritedPropertySymbols( obj ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property symbol: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s inherited symbol properties (multiple inheritance)', function test( t ) { + var expected; + var symbols; + var actual; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + symbols = [ Symbol( 'a' ), Symbol( 'b' ), Symbol( 'c' ) ]; + } else { + symbols = []; + } + + function Bar() { + return this; + } + + if ( hasSymbols ) { + Bar.prototype[ symbols[ 1 ] ] = 1; + } + + function Foo() { + if ( hasSymbols ) { + this[ symbols[ 0 ] ] = 0; + this[ symbols[ 1 ] ] = 1; + } + return this; + } + + inherit( Foo, Bar ); + + if ( hasSymbols ) { + Foo.prototype[ symbols[ 2 ] ] = 2; + } + + obj = new Foo(); + + if ( hasSymbols ) { + expected = [ symbols[ 1 ], symbols[ 2 ] ]; + } else { + expected = []; + } + actual = inheritedPropertySymbols( obj ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property symbol: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function supports limiting the inheritance level', function test( t ) { + var expected; + var symbols; + var actual; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + symbols = [ Symbol( 'a' ), Symbol( 'b' ), Symbol( 'c' ) ]; + } else { + symbols = []; + } + + function Bar() { + return this; + } + + if ( hasSymbols ) { + Bar.prototype[ symbols[ 1 ] ] = 1; + } + + function Foo() { + if ( hasSymbols ) { + this[ symbols[ 0 ] ] = 0; + this[ symbols[ 1 ] ] = 1; + } + return this; + } + + inherit( Foo, Bar ); + + if ( hasSymbols ) { + Foo.prototype[ symbols[ 2 ] ] = 2; + } + + obj = new Foo(); + + if ( hasSymbols ) { + expected = [ symbols[ 2 ] ]; + } else { + expected = []; + } + actual = inheritedPropertySymbols( obj, 1 ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property symbol: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = inheritedPropertySymbols( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From 18cea3ec85cde9aa160b6285f4f38f31136b64c8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 02:06:55 -0700 Subject: [PATCH 0071/1062] Update test message --- lib/node_modules/@stdlib/utils/property-symbols-in/test/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/property-symbols-in/test/test.js b/lib/node_modules/@stdlib/utils/property-symbols-in/test/test.js index 5f40ce98ca11..4c71815d8f55 100644 --- a/lib/node_modules/@stdlib/utils/property-symbols-in/test/test.js +++ b/lib/node_modules/@stdlib/utils/property-symbols-in/test/test.js @@ -75,7 +75,7 @@ tape( 'the function returns an array of an object\'s own and inherited symbol pr t.strictEqual( actual.length, symbols.length, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { idx = indexOf( actual, expected[ i ] ); - t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i].toString() ); + t.strictEqual( idx !== -1, true, 'contains property symbol: '+expected[i].toString() ); } t.end(); }); From e433757ca1f348f1bda90233b1e0cde5b1d3ec91 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 02:07:29 -0700 Subject: [PATCH 0072/1062] Update test --- .../@stdlib/utils/inherited-property-symbols/test/test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/node_modules/@stdlib/utils/inherited-property-symbols/test/test.js b/lib/node_modules/@stdlib/utils/inherited-property-symbols/test/test.js index 7deb63dafbd7..efb3e651566f 100644 --- a/lib/node_modules/@stdlib/utils/inherited-property-symbols/test/test.js +++ b/lib/node_modules/@stdlib/utils/inherited-property-symbols/test/test.js @@ -135,6 +135,7 @@ tape( 'the function returns an array of an object\'s inherited symbol properties if ( hasSymbols ) { Bar.prototype[ symbols[ 1 ] ] = 1; + Bar.prototype[ symbols[ 2 ] ] = 2; } function Foo() { From 8b3f973ea41dbd27f2b5d7eec5b2e2ebfa903be6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 02:09:16 -0700 Subject: [PATCH 0073/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 6846feffe7b5..0e090fae116b 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -774,6 +774,24 @@ setReadOnly( utils, 'inherit', require( '@stdlib/utils/inherit' ) ); */ setReadOnly( utils, 'inheritedKeys', require( '@stdlib/utils/inherited-keys' ) ); +/** +* @name inheritedPropertyNames +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/inherited-property-names} +*/ +setReadOnly( utils, 'inheritedPropertyNames', require( '@stdlib/utils/inherited-property-names' ) ); + +/** +* @name inheritedPropertySymbols +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/inherited-property-symbols} +*/ +setReadOnly( utils, 'inheritedPropertySymbols', require( '@stdlib/utils/inherited-property-symbols' ) ); + /** * @name inmap * @memberof utils From 3ac28daf1d65f1d217593dd2a3fc76fe14f65e7f Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 02:11:14 -0700 Subject: [PATCH 0074/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 24 +++++++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 2 ++ lib/node_modules/@stdlib/repl/help/lib/db.js | 4 +++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 4fb638a5608f..f6e4447730d7 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -1363,6 +1363,30 @@ ns.push({ ] }); +ns.push({ + 'alias': 'inheritedPropertyNames', + 'path': '@stdlib/utils/inherited-property-names', + 'value': require( '@stdlib/utils/inherited-property-names' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/keys', + '@stdlib/utils/keys-in', + '@stdlib/utils/inherited-keys', + '@stdlib/utils/inherited-property-symbols' + ] +}); + +ns.push({ + 'alias': 'inheritedPropertySymbols', + 'path': '@stdlib/utils/inherited-property-symbols', + 'value': require( '@stdlib/utils/inherited-property-symbols' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/inherited-keys', + '@stdlib/utils/inherited-property-names' + ] +}); + ns.push({ 'alias': 'inmap', 'path': '@stdlib/utils/inmap', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 74de2ea99e76..c629e0450239 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1101,6 +1101,8 @@ var db = { "indexOf": "\n// Basic usage:\narr = [ 4, 3, 2, 1 ];\nidx = indexOf( arr, 3 )\narr = [ 4, 3, 2, 1 ];\nidx = indexOf( arr, 5 )\n\n// Using a `fromIndex`:\narr = [ 1, 2, 3, 4, 5, 2, 6 ];\nidx = indexOf( arr, 2, 3 )\n\n// `fromIndex` which exceeds `array` length:\narr = [ 1, 2, 3, 4, 2, 5 ];\nidx = indexOf( arr, 2, 10 )\n\n// Negative `fromIndex`:\narr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];\nidx = indexOf( arr, 2, -4 )\nidx = indexOf( arr, 2, -1 )\n\n// Negative `fromIndex` exceeding input `array` length:\narr = [ 1, 2, 3, 4, 5, 2, 6 ];\nidx = indexOf( arr, 2, -10 )\n\n// Array-like objects:\nstr = 'bebop';\nidx = indexOf( str, 'o' )\n", "inherit": "\n// Create a parent constructor:\nfunction Foo() { return this; };\nFoo.prototype.beep = function beep() { return 'boop'; };\n\n// Create a child constructor:\nfunction Bar() { Foo.call( this ); return this; };\n\n// Setup inheritance:\ninherit( Bar, Foo );\nbar = new Bar();\nv = bar.beep()\n", "inheritedKeys": "keys = inheritedKeys( {} )\n", + "inheritedPropertyNames": "keys = inheritedPropertyNames( [] )\n", + "inheritedPropertySymbols": "symbols = inheritedPropertySymbols( [] )\n", "inmap": "function foo( v, i ) { return v * i; };\narr = [ 1.0, 2.0, 3.0 ];\nout = inmap( arr, foo )\nbool = ( out === arr )\n", "inmapAsync": "\n// Basic usage:\nfunction fcn( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, value*index );\n }\n};\nfunction done( error, collection ) {\n if ( error ) {\n throw error;\n }\n console.log( collection === arr );\n console.log( collection );\n};\narr = [ 3000, 2500, 1000 ];\ninmapAsync( arr, fcn, done )\n\n// Limit number of concurrent invocations:\nfunction fcn( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, value*index );\n }\n};\nfunction done( error, collection ) {\n if ( error ) {\n throw error;\n }\n console.log( collection === arr );\n console.log( collection );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\ninmapAsync( arr, opts, fcn, done )\n\n// Process sequentially:\nfunction fcn( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, value*index );\n }\n};\nfunction done( error, collection ) {\n if ( error ) {\n throw error;\n }\n console.log( collection === arr );\n console.log( collection );\n};\nopts = { 'series': true };\narr = [ 3000, 2500, 1000 ];\ninmapAsync( arr, opts, fcn, done )\n", "inmapRight": "function foo( v, i ) { console.log( '%s: %d', i, v ); return v * i; };\narr = [ 1.0, 2.0, 3.0 ];\nout = inmapRight( arr, foo )\nbool = ( out === arr )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 64ff98de9258..7b3f1240f0d9 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1100,7 +1100,9 @@ var db = { "ind2sub": "\nind2sub( [out,] shape, idx[, options] )\n Converts a linear index to an array of subscripts.\n\n Parameters\n ----------\n out: Array|TypedArray|Object (optional)\n Output array.\n\n shape: ArrayLike\n Array shape.\n\n idx: integer\n Linear index.\n\n options: Object (optional)\n Options.\n\n options.order: string (optional)\n Specifies whether an array is row-major (C-style) or column-major\n (Fortran style). Default: 'row-major'.\n\n options.mode: string (optional)\n Specifies how to handle a linear index which exceeds array dimensions.\n If equal to 'throw', the function throws an error when a linear index\n exceeds array dimensions. If equal to 'wrap', the function wraps around\n a linear index exceeding array dimensions using modulo arithmetic. If\n equal to 'clamp', the function sets a linear index exceeding array\n dimensions to either `0` (minimum linear index) or the maximum linear\n index. Default: 'throw'.\n\n Returns\n -------\n out: Array\n Subscripts.\n\n Examples\n --------\n > var d = [ 3, 3, 3 ];\n > var s = ind2sub( d, 17 )\n [ 1, 2, 2 ]\n\n // Provide an output array:\n > var out = new Array( d.length );\n > s = ind2sub( out, d, 17 )\n [ 1, 2, 2 ]\n > var bool = ( s === out )\n true\n\n See Also\n --------\n array, ndarray, sub2ind\n", "indexOf": "\nindexOf( arr, searchElement[, fromIndex] )\n Returns the first index at which a given element can be found.\n\n Search is performed using *strict equality* comparison.\n\n Parameters\n ----------\n arr: ArrayLike\n Array-like object.\n\n searchElement: any\n Element to find.\n\n fromIndex: integer (optional)\n Starting index (if negative, the start index is determined relative to\n last element).\n\n Returns\n -------\n out: integer\n Index or -1.\n\n Examples\n --------\n // Basic usage:\n > var arr = [ 4, 3, 2, 1 ];\n > var idx = indexOf( arr, 3 )\n 1\n > arr = [ 4, 3, 2, 1 ];\n > idx = indexOf( arr, 5 )\n -1\n\n // Using a `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, 3 )\n 5\n\n // `fromIndex` which exceeds `array` length:\n > arr = [ 1, 2, 3, 4, 2, 5 ];\n > idx = indexOf( arr, 2, 10 )\n -1\n\n // Negative `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];\n > idx = indexOf( arr, 2, -4 )\n 5\n > idx = indexOf( arr, 2, -1 )\n 7\n\n // Negative `fromIndex` exceeding input `array` length:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, -10 )\n 1\n\n // Array-like objects:\n > var str = 'bebop';\n > idx = indexOf( str, 'o' )\n 3\n\n", "inherit": "\ninherit( ctor, superCtor )\n Prototypical inheritance by replacing the prototype of one constructor with\n the prototype of another constructor.\n\n This function is not designed to work with ES2015/ES6 classes. For\n ES2015/ES6 classes, use `class` with `extends`.\n\n Parameters\n ----------\n ctor: Object|Function\n Constructor which will inherit.\n\n superCtor: Object|Function\n Super (parent) constructor.\n\n Returns\n -------\n out: Object|Function\n Child constructor.\n\n Examples\n --------\n // Create a parent constructor:\n > function Foo() { return this; };\n > Foo.prototype.beep = function beep() { return 'boop'; };\n\n // Create a child constructor:\n > function Bar() { Foo.call( this ); return this; };\n\n // Setup inheritance:\n > inherit( Bar, Foo );\n > var bar = new Bar();\n > var v = bar.beep()\n 'boop'\n\n", - "inheritedKeys": "\ninheritedKeys( value[, level] )\n Returns an array of an object's inherited enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable property names.\n\n Examples\n --------\n > var keys = inheritedKeys( {} )\n\n See Also\n --------\n objectKeys, keysIn\n", + "inheritedKeys": "\ninheritedKeys( value[, level] )\n Returns an array of an object's inherited enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable property names.\n\n Examples\n --------\n > var keys = inheritedKeys( {} )\n\n See Also\n --------\n objectKeys, keysIn, inheritedPropertyNames, inheritedPropertySymbols\n", + "inheritedPropertyNames": "\ninheritedPropertyNames( value[, level] )\n Returns an array of an object's inherited enumerable and non-enumerable\n property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable and non-enumerable property\n names.\n\n Examples\n --------\n > var keys = inheritedPropertyNames( [] )\n\n See Also\n --------\n objectKeys, keysIn, inheritedKeys, inheritedPropertySymbols\n", + "inheritedPropertySymbols": "\ninheritedPropertySymbols( value[, level] )\n Returns an array of an object's inherited symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited symbol properties.\n\n Examples\n --------\n > var symbols = inheritedPropertySymbols( [] )\n\n See Also\n --------\n inheritedKeys, inheritedPropertyNames\n", "inmap": "\ninmap( collection, fcn[, thisArg] )\n Invokes a function for each element in a collection and updates the\n collection in-place.\n\n When invoked, the input function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection. If provided an object, the object must be array-like\n (excluding strings and functions).\n\n fcn: Function\n Function to invoke for each element in the input collection. The\n function's return value is used to update the collection in-place.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function foo( v, i ) { return v * i; };\n > var arr = [ 1.0, 2.0, 3.0 ];\n > var out = inmap( arr, foo )\n [ 0.0, 2.0, 6.0 ]\n > var bool = ( out === arr )\n true\n\n See Also\n --------\n forEach, inmapRight\n", "inmapAsync": "\ninmapAsync( collection, [options,] fcn, done )\n Invokes a function once for each element in a collection and updates a\n collection in-place.\n\n When invoked, `fcn` is provided a maximum of four arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If `fcn`\n accepts two arguments, `fcn` is provided:\n\n - `value`\n - `next`\n\n If `fcn` accepts three arguments, `fcn` is provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other `fcn` signature, `fcn` is provided all four arguments.\n\n The `next` callback accepts two arguments:\n\n - `error`: error argument\n - `result`: value used to update the collection\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling. Note, however, that the function\n may have mutated an input collection during prior invocations, resulting in\n a partially mutated collection.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > inmapAsync( arr, fcn, done )\n 1000\n 2500\n 3000\n true\n [ 0, 2500, 2000 ]\n\n // Limit number of concurrent invocations:\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > inmapAsync( arr, opts, fcn, done )\n 2500\n 3000\n 1000\n true\n [ 0, 2500, 2000 ]\n\n // Process sequentially:\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > inmapAsync( arr, opts, fcn, done )\n 3000\n 2500\n 1000\n true\n [ 0, 2500, 2000 ]\n\n\ninmapAsync.factory( [options,] fcn )\n Returns a function which invokes a function once for each element in a\n collection and updates a collection in-place.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which invokes a function for each element in a collection.\n\n Examples\n --------\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = inmapAsync.factory( opts, fcn );\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n [ 0, 2500, 2000 ]\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n [ 0, 1500, 2000 ]\n\n See Also\n --------\n forEachAsync, inmap, inmapRightAsync\n", "inmapRight": "\ninmapRight( collection, fcn[, thisArg] )\n Invokes a function for each element in a collection and updates the\n collection in-place, iterating from right to left.\n\n When invoked, the input function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection. If provided an object, the object must be array-like\n (excluding strings and functions).\n\n fcn: Function\n Function to invoke for each element in the input collection. The\n function's return value is used to update the collection in-place.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function foo( v, i ) { console.log( '%s: %d', i, v ); return v * i; };\n > var arr = [ 1.0, 2.0, 3.0 ];\n > var out = inmapRight( arr, foo )\n 2: 3.0\n 1: 2.0\n 0: 1.0\n [ 0.0, 2.0, 6.0 ]\n > var bool = ( out === arr )\n true\n\n See Also\n --------\n forEachRight, inmap\n", From ef33f00eae78a47bac8c0fb528e8c0be2368e055 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 12:41:13 -0700 Subject: [PATCH 0075/1062] Document object properties --- .../@stdlib/utils/define-property/lib/polyfill.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js b/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js index bc350988e260..db7bd76c57c1 100644 --- a/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js +++ b/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js @@ -40,9 +40,19 @@ var lookupSetter = objectProtoype.__lookupSetter__; /** * Defines a property. * +* ## Notes +* +* - Property descriptors come in two flavors: **data descriptors** and **accessor descriptors**. A data descriptor is a property that has a value, which may or may not be writable. An accessor descriptor is a property described by a getter-setter function pair. A descriptor must be one of these two flavors and cannot be both. +* * @param {Object} obj - object on which to define the property * @param {string} prop - property name -* @param {Object} descriptor - descriptor for the property +* @param {Object} descriptor - property descriptor +* @param {boolean} [descriptor.configurable=false] - boolean indicating if property descriptor can be changed and if the property can be deleted from the provided object +* @param {boolean} [descriptor.enumerable=false] - boolean indicating if the property shows up when enumerating object properties +* @param {boolean} [descriptor.writable=false] - boolean indicating if the value associated with the property can be changed with an assignment operator +* @param {*} [descriptor.value] - property value +* @param {(Function|void)} [descriptor.get=undefined] - function which serves as a getter for the property, or, if no getter, undefined. When the property is accessed, a getter function is called without arguments and with the `this` context set to the object through which the property is accessed (which may not be the object on which the property is defined due to inheritance). The return value will be used as the value of the property. +* @param {(Function|void)} [descriptor.set=undefined] - function which serves as a setter for the property, or, if no setter, undefined. When assigning a property value, a setter function is called with one argument (the value being assigned to the property) and with the `this` context set to the object through which the property is assigned. * @throws {TypeError} first argument must be an object * @throws {TypeError} third argument must be an object * @throws {Error} property descriptor has both a value and a setter and/or getter From f31c50420a82995a0049fe8bc110f07962e6ebaf Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 12:42:59 -0700 Subject: [PATCH 0076/1062] Document export --- .../utils/define-property/lib/builtin.js | 31 +++++++++++++++++++ .../utils/define-property/lib/polyfill.js | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js b/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js index fa69982af3aa..d175855151cb 100644 --- a/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js +++ b/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js @@ -20,6 +20,37 @@ // MAIN // +/** +* Defines a property. +* +* ## Notes +* +* - Property descriptors come in two flavors: **data descriptors** and **accessor descriptors**. A data descriptor is a property that has a value, which may or may not be writable. An accessor descriptor is a property described by a getter-setter function pair. A descriptor must be one of these two flavors and cannot be both. +* +* @name defineProperty +* @type {Function} +* @param {Object} obj - object on which to define the property +* @param {string} prop - property name +* @param {Object} descriptor - property descriptor +* @param {boolean} [descriptor.configurable=false] - boolean indicating if property descriptor can be changed and if the property can be deleted from the provided object +* @param {boolean} [descriptor.enumerable=false] - boolean indicating if the property shows up when enumerating object properties +* @param {boolean} [descriptor.writable=false] - boolean indicating if the value associated with the property can be changed with an assignment operator +* @param {*} [descriptor.value] - property value +* @param {(Function|void)} [descriptor.get=undefined] - function which serves as a getter for the property, or, if no getter, undefined. When the property is accessed, a getter function is called without arguments and with the `this` context set to the object through which the property is accessed (which may not be the object on which the property is defined due to inheritance). The return value will be used as the value of the property. +* @param {(Function|void)} [descriptor.set=undefined] - function which serves as a setter for the property, or, if no setter, undefined. When assigning a property value, a setter function is called with one argument (the value being assigned to the property) and with the `this` context set to the object through which the property is assigned. +* @throws {TypeError} first argument must be an object +* @throws {TypeError} third argument must be an object +* @throws {Error} property descriptor cannot have both a value and a setter and/or getter +* @returns {Object} object with added property +* +* @example +* var obj = {}; +* defineProperty( obj, 'foo', { +* 'value': 'bar' +* }); +* var str = obj.foo; +* // returns 'bar' +*/ var main = Object.defineProperty; diff --git a/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js b/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js index db7bd76c57c1..acbe7f269975 100644 --- a/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js +++ b/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js @@ -55,7 +55,7 @@ var lookupSetter = objectProtoype.__lookupSetter__; * @param {(Function|void)} [descriptor.set=undefined] - function which serves as a setter for the property, or, if no setter, undefined. When assigning a property value, a setter function is called with one argument (the value being assigned to the property) and with the `this` context set to the object through which the property is assigned. * @throws {TypeError} first argument must be an object * @throws {TypeError} third argument must be an object -* @throws {Error} property descriptor has both a value and a setter and/or getter +* @throws {Error} property descriptor cannot have both a value and a setter and/or getter * @returns {Object} object with added property * * @example From 9a942bfb086d1d10d35cc5feeb1ae0e302896e90 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 12:48:21 -0700 Subject: [PATCH 0077/1062] Document descriptor properties --- .../utils/define-property/docs/repl.txt | 36 +++++++++++++++++++ .../utils/define-property/lib/builtin.js | 2 +- .../utils/define-property/lib/polyfill.js | 2 +- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/define-property/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-property/docs/repl.txt index d018b1b0f290..be1f36b81053 100644 --- a/lib/node_modules/@stdlib/utils/define-property/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/define-property/docs/repl.txt @@ -2,6 +2,12 @@ {{alias}}( obj, prop, descriptor ) Defines a property. + Property descriptors come in two flavors: data descriptors and accessor + descriptors. A data descriptor is a property that has a value, which may or + may not be writable. An accessor descriptor is a property described by a + getter-setter function pair. A descriptor must be one of these two flavors + and cannot be both. + Parameters ---------- obj: Object @@ -13,6 +19,36 @@ descriptor: Object Property descriptor. + descriptor.configurable: boolean (optional) + Boolean indicating if property descriptor can be changed and if the + property can be deleted from the provided object. Default: false. + + descriptor.enumerable: boolean (optional) + Boolean indicating if the property shows up when enumerating object + properties. Default: false. + + descriptor.writable: boolean (optional) + Boolean indicating if the value associated with the property can be + changed with an assignment operator. Default: false. + + descriptor.value: any (optional) + Property value. + + descriptor.get: Function|void (optional) + Function which serves as a getter for the property, or, if no getter, + undefined. When the property is accessed, a getter function is called + without arguments and with the `this` context set to the object through + which the property is accessed (which may not be the object on which the + property is defined due to inheritance). The return value will be used + as the property value. Default: undefined. + + descriptor.set: Function|void (optional) + Function which serves as a setter for the property, or, if no setter, + undefined. When assigning a property value, a setter function is called + with one argument (the value being assigned to the property) and with + the `this` context set to the object through which the property is + assigned. Default: undefined. + Examples -------- > var obj = {}; diff --git a/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js b/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js index d175855151cb..9ba1905eac4b 100644 --- a/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js +++ b/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js @@ -36,7 +36,7 @@ * @param {boolean} [descriptor.enumerable=false] - boolean indicating if the property shows up when enumerating object properties * @param {boolean} [descriptor.writable=false] - boolean indicating if the value associated with the property can be changed with an assignment operator * @param {*} [descriptor.value] - property value -* @param {(Function|void)} [descriptor.get=undefined] - function which serves as a getter for the property, or, if no getter, undefined. When the property is accessed, a getter function is called without arguments and with the `this` context set to the object through which the property is accessed (which may not be the object on which the property is defined due to inheritance). The return value will be used as the value of the property. +* @param {(Function|void)} [descriptor.get=undefined] - function which serves as a getter for the property, or, if no getter, undefined. When the property is accessed, a getter function is called without arguments and with the `this` context set to the object through which the property is accessed (which may not be the object on which the property is defined due to inheritance). The return value will be used as the property value. * @param {(Function|void)} [descriptor.set=undefined] - function which serves as a setter for the property, or, if no setter, undefined. When assigning a property value, a setter function is called with one argument (the value being assigned to the property) and with the `this` context set to the object through which the property is assigned. * @throws {TypeError} first argument must be an object * @throws {TypeError} third argument must be an object diff --git a/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js b/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js index acbe7f269975..0e8c8eb11296 100644 --- a/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js +++ b/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js @@ -51,7 +51,7 @@ var lookupSetter = objectProtoype.__lookupSetter__; * @param {boolean} [descriptor.enumerable=false] - boolean indicating if the property shows up when enumerating object properties * @param {boolean} [descriptor.writable=false] - boolean indicating if the value associated with the property can be changed with an assignment operator * @param {*} [descriptor.value] - property value -* @param {(Function|void)} [descriptor.get=undefined] - function which serves as a getter for the property, or, if no getter, undefined. When the property is accessed, a getter function is called without arguments and with the `this` context set to the object through which the property is accessed (which may not be the object on which the property is defined due to inheritance). The return value will be used as the value of the property. +* @param {(Function|void)} [descriptor.get=undefined] - function which serves as a getter for the property, or, if no getter, undefined. When the property is accessed, a getter function is called without arguments and with the `this` context set to the object through which the property is accessed (which may not be the object on which the property is defined due to inheritance). The return value will be used as the property value. * @param {(Function|void)} [descriptor.set=undefined] - function which serves as a setter for the property, or, if no setter, undefined. When assigning a property value, a setter function is called with one argument (the value being assigned to the property) and with the `this` context set to the object through which the property is assigned. * @throws {TypeError} first argument must be an object * @throws {TypeError} third argument must be an object From e7ebb11b6cf1a4d96a78dd30c5a2732d512cf481 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 12:53:13 -0700 Subject: [PATCH 0078/1062] Document descriptor properties --- .../@stdlib/utils/define-property/README.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/define-property/README.md b/lib/node_modules/@stdlib/utils/define-property/README.md index 466432d244a7..c481ee3c904e 100644 --- a/lib/node_modules/@stdlib/utils/define-property/README.md +++ b/lib/node_modules/@stdlib/utils/define-property/README.md @@ -46,10 +46,29 @@ obj.foo = 'boop'; // throws ``` +A property `descriptor` has the following optional properties: + +- **configurable**: `boolean` indicating if property descriptor can be changed and if the property can be deleted from the provided object. Default: `false`. +- **enumerable**: `boolean` indicating if the property shows up when enumerating object properties. Default: `false`. +- **writable**: `boolean` indicating if the value associated with the property can be changed with an assignment operator. Default: `false`. +- **value**: property value. +- **get**: `function` which serves as a getter for the property, or, if no getter, `undefined`. When the property is accessed, a getter function is called without arguments and with the `this` context set to the object through which the property is accessed (which may not be the object on which the property is defined due to inheritance). The return value will be used as the property value. Default: `undefined`. +- **set**: `function` which serves as a setter for the property, or, if no setter, `undefined`. When assigning a property value, a setter function is called with one argument (the value being assigned to the property) and with the `this` context set to the object through which the property is assigned. Default: `undefined`. + +
+ +## Notes + +- Property descriptors come in two flavors: **data descriptors** and **accessor descriptors**. A data descriptor is a property that has a value, which may or may not be writable. An accessor descriptor is a property described by a getter-setter function pair. A descriptor must be **one** of these two flavors and **cannot** be both. + +
+ + +
## Examples From d2b0543891bdf65f4f40d1465c59bc586518cd15 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 12:54:19 -0700 Subject: [PATCH 0079/1062] Document export --- .../utils/define-properties/lib/builtin.js | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/define-properties/lib/builtin.js b/lib/node_modules/@stdlib/utils/define-properties/lib/builtin.js index 8971000bd1a9..3a422b287d93 100644 --- a/lib/node_modules/@stdlib/utils/define-properties/lib/builtin.js +++ b/lib/node_modules/@stdlib/utils/define-properties/lib/builtin.js @@ -20,6 +20,34 @@ // MAIN // +/** +* Defines properties. +* +* @name defineProperties +* @type {Function} +* @param {Object} obj - object on which to define the properties +* @param {Object} props - object with property descriptors +* @throws {TypeError} first argument must be an object +* @throws {TypeError} second argument must be an object +* @returns {Object} object with added and/or modified properties +* +* @example +* var obj = {}; +* defineProperties( obj, { +* 'foo': { +* 'value': 'bar' +* }, +* 'baz': { +* 'value': 13 +* } +* }); +* +* var val = obj.foo; +* // returns 'bar' +* +* val = obj.baz; +* // returns 13 +*/ var main = Object.defineProperties; From 3a7f0a888eaf28f2b48fe06a18b237e1d0ccec5b Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 12:58:23 -0700 Subject: [PATCH 0080/1062] Update description --- lib/node_modules/@stdlib/utils/define-property/README.md | 4 ++-- lib/node_modules/@stdlib/utils/define-property/docs/repl.txt | 2 +- lib/node_modules/@stdlib/utils/define-property/lib/builtin.js | 2 +- lib/node_modules/@stdlib/utils/define-property/lib/index.js | 2 +- .../@stdlib/utils/define-property/lib/polyfill.js | 2 +- lib/node_modules/@stdlib/utils/define-property/package.json | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/define-property/README.md b/lib/node_modules/@stdlib/utils/define-property/README.md index c481ee3c904e..7350cf936465 100644 --- a/lib/node_modules/@stdlib/utils/define-property/README.md +++ b/lib/node_modules/@stdlib/utils/define-property/README.md @@ -20,7 +20,7 @@ limitations under the License. # Define Property -> [Define][mdn-define-property] a property. +> [Define][mdn-define-property] (or modify) an object property.
@@ -32,7 +32,7 @@ var defineProperty = require( '@stdlib/utils/define-property' ); #### defineProperty( obj, prop, descriptor ) -[Defines][mdn-define-property] a property. +[Defines][mdn-define-property] (or modifies) an object property. ```javascript var obj = {}; diff --git a/lib/node_modules/@stdlib/utils/define-property/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-property/docs/repl.txt index be1f36b81053..84856657b4cd 100644 --- a/lib/node_modules/@stdlib/utils/define-property/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/define-property/docs/repl.txt @@ -1,6 +1,6 @@ {{alias}}( obj, prop, descriptor ) - Defines a property. + Defines (or modifies) an object property. Property descriptors come in two flavors: data descriptors and accessor descriptors. A data descriptor is a property that has a value, which may or diff --git a/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js b/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js index 9ba1905eac4b..ec1972533ad9 100644 --- a/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js +++ b/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js @@ -21,7 +21,7 @@ // MAIN // /** -* Defines a property. +* Defines (or modifies) an object property. * * ## Notes * diff --git a/lib/node_modules/@stdlib/utils/define-property/lib/index.js b/lib/node_modules/@stdlib/utils/define-property/lib/index.js index ed6a5faedc77..263fe55d42a4 100644 --- a/lib/node_modules/@stdlib/utils/define-property/lib/index.js +++ b/lib/node_modules/@stdlib/utils/define-property/lib/index.js @@ -19,7 +19,7 @@ 'use strict'; /** -* Define a property. +* Define (or modify) an object property. * * @module @stdlib/utils/define-property * diff --git a/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js b/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js index 0e8c8eb11296..9612b645fb71 100644 --- a/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js +++ b/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js @@ -38,7 +38,7 @@ var lookupSetter = objectProtoype.__lookupSetter__; // MAIN // /** -* Defines a property. +* Defines (or modifies) an object property. * * ## Notes * diff --git a/lib/node_modules/@stdlib/utils/define-property/package.json b/lib/node_modules/@stdlib/utils/define-property/package.json index 889f8c49ce83..2045e17e3703 100644 --- a/lib/node_modules/@stdlib/utils/define-property/package.json +++ b/lib/node_modules/@stdlib/utils/define-property/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/utils/define-property", "version": "0.0.0", - "description": "Define a property.", + "description": "Define (or modify) an object property.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", From e85e03a5b0b3af6e49e67c60e8c418a4b12f5cd2 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 12:59:51 -0700 Subject: [PATCH 0081/1062] Document return value --- lib/node_modules/@stdlib/utils/define-property/docs/repl.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/define-property/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-property/docs/repl.txt index 84856657b4cd..84879f669d28 100644 --- a/lib/node_modules/@stdlib/utils/define-property/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/define-property/docs/repl.txt @@ -49,6 +49,11 @@ the `this` context set to the object through which the property is assigned. Default: undefined. + Returns + ------- + obj: Object + Object on which the property was defined (or modified). + Examples -------- > var obj = {}; From 9a2798c3b2b77066ee5448422e5b6f4e2b366e20 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 13:01:11 -0700 Subject: [PATCH 0082/1062] Document return value --- .../@stdlib/utils/define-properties/docs/repl.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/define-properties/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-properties/docs/repl.txt index a0dfb94bd809..36a9937eda1b 100644 --- a/lib/node_modules/@stdlib/utils/define-properties/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/define-properties/docs/repl.txt @@ -1,6 +1,6 @@ {{alias}}( obj, props ) - Defines properties. + Defines (and/or modifies) object properties. Parameters ---------- @@ -10,6 +10,11 @@ props: Object Object with property descriptors. + Returns + ------- + obj: Object + Object on which properties were defined (and/or modified). + Examples -------- > var obj = {}; From 5e23211fefa356066257423f0dc0dadf0539a1d2 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 13:02:12 -0700 Subject: [PATCH 0083/1062] Update description --- lib/node_modules/@stdlib/utils/define-properties/README.md | 4 ++-- .../@stdlib/utils/define-properties/lib/builtin.js | 2 +- lib/node_modules/@stdlib/utils/define-properties/lib/index.js | 2 +- .../@stdlib/utils/define-properties/lib/polyfill.js | 2 +- lib/node_modules/@stdlib/utils/define-properties/package.json | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/define-properties/README.md b/lib/node_modules/@stdlib/utils/define-properties/README.md index 3f3ab9c1112c..d2091f79b17b 100644 --- a/lib/node_modules/@stdlib/utils/define-properties/README.md +++ b/lib/node_modules/@stdlib/utils/define-properties/README.md @@ -20,7 +20,7 @@ limitations under the License. # Define Properties -> [Define][mdn-define-properties] properties. +> [Define][mdn-define-properties] (and/or modify) object properties.
@@ -32,7 +32,7 @@ var defineProperties = require( '@stdlib/utils/define-properties' ); #### defineProperties( obj, props ) -[Defines][mdn-define-properties] properties. +[Defines][mdn-define-properties] (and/or modifies) object properties. ```javascript var objectKeys = require( '@stdlib/utils/keys' ); diff --git a/lib/node_modules/@stdlib/utils/define-properties/lib/builtin.js b/lib/node_modules/@stdlib/utils/define-properties/lib/builtin.js index 3a422b287d93..5afbe5ab177d 100644 --- a/lib/node_modules/@stdlib/utils/define-properties/lib/builtin.js +++ b/lib/node_modules/@stdlib/utils/define-properties/lib/builtin.js @@ -21,7 +21,7 @@ // MAIN // /** -* Defines properties. +* Defines (and/or modifies) object properties. * * @name defineProperties * @type {Function} diff --git a/lib/node_modules/@stdlib/utils/define-properties/lib/index.js b/lib/node_modules/@stdlib/utils/define-properties/lib/index.js index bdd25c6e46fc..0cf5df1965a1 100644 --- a/lib/node_modules/@stdlib/utils/define-properties/lib/index.js +++ b/lib/node_modules/@stdlib/utils/define-properties/lib/index.js @@ -19,7 +19,7 @@ 'use strict'; /** -* Define properties. +* Define (and/or modify) properties. * * @module @stdlib/utils/define-properties * diff --git a/lib/node_modules/@stdlib/utils/define-properties/lib/polyfill.js b/lib/node_modules/@stdlib/utils/define-properties/lib/polyfill.js index 0774638a5b88..8ba3ddf1fd87 100644 --- a/lib/node_modules/@stdlib/utils/define-properties/lib/polyfill.js +++ b/lib/node_modules/@stdlib/utils/define-properties/lib/polyfill.js @@ -28,7 +28,7 @@ var defineProperty = require( '@stdlib/utils/define-property' ); // MAIN // /** -* Defines properties. +* Defines (and/or modifies) properties. * * @param {Object} obj - object on which to define the properties * @param {Object} props - object with property descriptors diff --git a/lib/node_modules/@stdlib/utils/define-properties/package.json b/lib/node_modules/@stdlib/utils/define-properties/package.json index 55eb3c6e5207..8564eebd30a6 100644 --- a/lib/node_modules/@stdlib/utils/define-properties/package.json +++ b/lib/node_modules/@stdlib/utils/define-properties/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/utils/define-properties", "version": "0.0.0", - "description": "Define properties.", + "description": "Define (and/or modify) object properties.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", From ed885293dd4977e2e20f015707fcdb4c5bdf2cc0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 13:02:58 -0700 Subject: [PATCH 0084/1062] Disable lint rule --- lib/node_modules/@stdlib/utils/define-properties/lib/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/define-properties/lib/index.js b/lib/node_modules/@stdlib/utils/define-properties/lib/index.js index 0cf5df1965a1..9548d92d1cc5 100644 --- a/lib/node_modules/@stdlib/utils/define-properties/lib/index.js +++ b/lib/node_modules/@stdlib/utils/define-properties/lib/index.js @@ -48,7 +48,7 @@ // MODULES // -var hasDefinePropertiesSupport = require( '@stdlib/assert/has-define-properties-support' ); +var hasDefinePropertiesSupport = require( '@stdlib/assert/has-define-properties-support' ); // eslint-disable-line id-length var builtin = require( './builtin.js' ); var polyfill = require( './polyfill.js' ); From 03b840ca78886b491f974f812bc3d3e731c444cd Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 13:07:09 -0700 Subject: [PATCH 0085/1062] Document property descriptors --- .../@stdlib/utils/define-properties/README.md | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/define-properties/README.md b/lib/node_modules/@stdlib/utils/define-properties/README.md index d2091f79b17b..2637dcde3cec 100644 --- a/lib/node_modules/@stdlib/utils/define-properties/README.md +++ b/lib/node_modules/@stdlib/utils/define-properties/README.md @@ -30,7 +30,7 @@ limitations under the License. var defineProperties = require( '@stdlib/utils/define-properties' ); ``` -#### defineProperties( obj, props ) +#### defineProperties( obj, properties ) [Defines][mdn-define-properties] (and/or modifies) object properties. @@ -56,10 +56,29 @@ var keys = objectKeys( obj ); // returns [...] ``` +The `properties` parameter is an `object` whose own enumerable property values are descriptors for the properties to be defined or modified. A property descriptor has the following optional properties: + +- **configurable**: `boolean` indicating if property descriptor can be changed and if the property can be deleted from the provided object. Default: `false`. +- **enumerable**: `boolean` indicating if the property shows up when enumerating object properties. Default: `false`. +- **writable**: `boolean` indicating if the value associated with the property can be changed with an assignment operator. Default: `false`. +- **value**: property value. +- **get**: `function` which serves as a getter for the property, or, if no getter, `undefined`. When the property is accessed, a getter function is called without arguments and with the `this` context set to the object through which the property is accessed (which may not be the object on which the property is defined due to inheritance). The return value will be used as the property value. Default: `undefined`. +- **set**: `function` which serves as a setter for the property, or, if no setter, `undefined`. When assigning a property value, a setter function is called with one argument (the value being assigned to the property) and with the `this` context set to the object through which the property is assigned. Default: `undefined`. +
+
+ +## Notes + +- Property descriptors come in two flavors: **data descriptors** and **accessor descriptors**. A data descriptor is a property that has a value, which may or may not be writable. An accessor descriptor is a property described by a getter-setter function pair. A descriptor must be **one** of these two flavors and **cannot** be both. + +
+ + +
## Examples From 86cfdbed9b0efa7124b215b8f883da621057d85d Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 13:11:29 -0700 Subject: [PATCH 0086/1062] Document property descriptors --- .../utils/define-properties/docs/repl.txt | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/define-properties/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-properties/docs/repl.txt index 36a9937eda1b..992290712604 100644 --- a/lib/node_modules/@stdlib/utils/define-properties/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/define-properties/docs/repl.txt @@ -1,13 +1,47 @@ -{{alias}}( obj, props ) +{{alias}}( obj, properties ) Defines (and/or modifies) object properties. + The second argument is an object whose own enumerable property values are + descriptors for the properties to be defined or modified. + + Property descriptors come in two flavors: data descriptors and accessor + descriptors. A data descriptor is a property that has a value, which may or + may not be writable. An accessor descriptor is a property described by a + getter-setter function pair. A descriptor must be one of these two flavors + and cannot be both. + + A property descriptor has the following optional properties: + + - configurable: boolean indicating if property descriptor can be changed and + if the property can be deleted from the provided object. Default: false. + + - enumerable: boolean indicating if the property shows up when enumerating + object properties. Default: false. + + - writable: boolean indicating if the value associated with the property can + be changed with an assignment operator. Default: false. + + - value: property value. + + - get: function which serves as a getter for the property, or, if no getter, + undefined. When the property is accessed, a getter function is called + without arguments and with the `this` context set to the object through + which the property is accessed (which may not be the object on which the + property is defined due to inheritance). The return value will be used as + the property value. Default: undefined. + + - set: function which serves as a setter for the property, or, if no setter, + undefined. When assigning a property value, a setter function is called with + one argument (the value being assigned to the property) and with the `this` + context set to the object through which the property is assigned. Default: undefined. + Parameters ---------- obj: Object Object on which to define the properties. - props: Object + properties: Object Object with property descriptors. Returns From aa0e9905a17ba1205fb901ca2ce1108324aabff8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 14:09:05 -0700 Subject: [PATCH 0087/1062] Add utility to return an object's nonenumerable inherited keys --- .../nonenumerable-inherited-keys/README.md | 161 +++++++++++ .../benchmark/benchmark.js | 72 +++++ .../docs/repl.txt | 31 ++ .../examples/index.js | 50 ++++ .../nonenumerable-inherited-keys/lib/index.js | 39 +++ .../nonenumerable-inherited-keys/lib/main.js | 109 ++++++++ .../nonenumerable-inherited-keys/package.json | 71 +++++ .../nonenumerable-inherited-keys/test/test.js | 264 ++++++++++++++++++ 8 files changed, 797 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/README.md create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/package.json create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/test/test.js diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/README.md b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/README.md new file mode 100644 index 000000000000..ce44af351749 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/README.md @@ -0,0 +1,161 @@ + + +# nonEnumerableInheritedKeys + +> Return an array of an object's inherited non-enumerable property names. + +
+ +## Usage + + + +```javascript +var nonEnumerableInheritedKeys = require( '@stdlib/utils/nonenumerable-inherited-keys' ); +``` + +#### nonEnumerableInheritedKeys( obj\[, level] ) + +Returns an `array` of an object's inherited non-enumerable property names. + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +function Foo() { + this.a = 'b'; + return this; +} + +defineProperty( Foo.prototype, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); + +var f = new Foo(); +var keys = nonEnumerableInheritedKeys( f ); +// e.g., returns [ 'beep', ... ] +``` + +By default, the function walks an object's entire prototype chain. To limit the inheritance level, provide a `level` argument. + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var inherit = require( '@stdlib/utils/inherit' ); + +function Bar() { + return this; +} + +defineProperty( Bar.prototype, 'boop', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'beep' +}); + +function Foo() { + Bar.call( this ); + this.a = 'b'; + return this; +} + +inherit( Foo, Bar ); + +defineProperty( Foo.prototype, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); + +var f = new Foo(); +var keys = nonEnumerableInheritedKeys( f, 1 ); +// e.g., returns [ 'beep', ... ] +``` + +
+ + + +
+ +## Notes + +- Name order is not guaranteed, as `object` key enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s keys, thus allowing for deterministic extraction. + +
+ + + +
+ +## Examples + + + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var nonEnumerableInheritedKeys = require( '@stdlib/utils/nonenumerable-inherited-keys' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; +defineProperty( Foo.prototype, 'bip', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' +}); + +var obj = new Foo(); +var keys = nonEnumerableInheritedKeys( obj ); + +console.log( keys ); +// e.g., => [ 'bip', ... ] +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/benchmark/benchmark.js new file mode 100644 index 000000000000..ad9c672079b6 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var nonEnumerableInheritedKeys = require( './../lib' ); // eslint-disable-line id-length + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = nonEnumerableInheritedKeys( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/docs/repl.txt b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/docs/repl.txt new file mode 100644 index 000000000000..df8a473091ca --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/docs/repl.txt @@ -0,0 +1,31 @@ + +{{alias}}( value[, level] ) + Returns an array of an object's inherited non-enumerable property names. + + Name order is not guaranteed, as object key enumeration is not specified + according to the ECMAScript specification. In practice, however, most + engines use insertion order to sort an object's keys, thus allowing for + deterministic extraction. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + level: integer (optional) + Inheritance level. + + Returns + ------- + keys: Array + List of an object's inherited non-enumerable property names. + + Examples + -------- + > var keys = {{alias}}( {} ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/examples/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/examples/index.js new file mode 100644 index 000000000000..a60e9f1e1b73 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/examples/index.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var nonEnumerableInheritedKeys = require( './../lib' ); // eslint-disable-line id-length + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; +defineProperty( Foo.prototype, 'bip', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' +}); + +var obj = new Foo(); +var keys = nonEnumerableInheritedKeys( obj ); + +console.log( keys ); +// e.g., => [ 'bip', ... ] diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/lib/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/lib/index.js new file mode 100644 index 000000000000..8242ab051a93 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/lib/index.js @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's inherited non-enumerable property names. +* +* @module @stdlib/utils/nonenumerable-inherited-keys +* +* @example +* var nonEnumerableInheritedKeys = require( '@stdlib/utils/nonenumerable-inherited-keys' ); +* +* var keys = nonEnumerableInheritedKeys( [] ); +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/lib/main.js new file mode 100644 index 000000000000..2455527a9a54 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/lib/main.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var MAX_SAFE_INTEGER = require( '@stdlib/constants/math/float64-max-safe-integer' ); +var isPositiveInteger = require( '@stdlib/assert/is-positive-integer' ).isPrimitive; +var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property' ); +var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating if an array contains a provided value. +* +* @private +* @param {Array} arr - array +* @param {*} v - search value +* @returns {boolean} boolean indicating if an array contains a search value +*/ +function contains( arr, v ) { + var i; + for ( i = 0; i < arr.length; i++ ) { + if ( arr[ i ] === v ) { + return true; + } + } + return false; +} + + +// MAIN // + +/** +* Returns an array of an object's inherited non-enumerable property names. +* +* @param {*} value - input object +* @param {PositiveInteger} [level] - inheritance level +* @throws {TypeError} second argument must be a positive integer +* @returns {Array} a list of inherited non-enumerable property names +* +* @example +* var keys = nonEnumerableInheritedKeys( {} ); +*/ +function nonEnumerableInheritedKeys( value, level ) { // eslint-disable-line id-length + var names; + var obj; + var tmp; + var N; + var n; + var i; + + if ( arguments.length > 1 ) { + if ( !isPositiveInteger( level ) ) { + throw new TypeError( 'invalid argument. Second argument must be a positive integer. Value: `' + level + '`.' ); + } + N = level; + } else { + N = MAX_SAFE_INTEGER; + } + if ( value === null || value === void 0 ) { + return []; + } + // Get the value's prototype: + obj = getPrototypeOf( value ); + + // Walk the prototype chain collecting all non-enumerable property names... + names = []; + n = 1; + while ( obj && n <= N ) { + tmp = getOwnPropertyNames( obj ); + for ( i = 0; i < tmp.length; i++ ) { + if ( + isNonEnumerableProperty( obj, tmp[ i ] ) && + contains( names, tmp[ i ] ) === false + ) { + names.push( tmp[ i ] ); + } + } + obj = getPrototypeOf( obj ); + n += 1; + } + + return names; +} + + +// EXPORTS // + +module.exports = nonEnumerableInheritedKeys; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/package.json b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/package.json new file mode 100644 index 000000000000..6930e346ba99 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/utils/nonenumerable-inherited-keys", + "version": "0.0.0", + "description": "Return an array of an object's inherited non-enumerable property names.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "names", + "keys", + "keys-in", + "enumerable", + "nonenumerable", + "non-enumerable", + "hidden", + "inherited", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/test/test.js b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/test/test.js new file mode 100644 index 000000000000..99c085584802 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/test/test.js @@ -0,0 +1,264 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var inherit = require( '@stdlib/utils/inherit' ); +var nonEnumerableInheritedKeys = require( './../lib' ); // eslint-disable-line id-length + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof nonEnumerableInheritedKeys, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function throws an error if not provided a positive integer for the inheritance level', function test( t ) { + var values; + var i; + + values = [ + '5', + -5, + 0, + 3.14, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nonEnumerableInheritedKeys( {}, value ); + }; + } +}); + +tape( 'the function returns an array of an object\'s inherited non-enumerable property names', function test( t ) { + var expected; + var actual; + var obj; + var idx; + var i; + + function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ 'baz' ]; + actual = nonEnumerableInheritedKeys( obj ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s inherited non-enumerable property names (multiple inheritance)', function test( t ) { + var expected; + var actual; + var obj; + var idx; + var i; + + function Bar() { + this.boop = 'beep'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + Bar.prototype.foo = 3.14; + Bar.prototype.bar = [ 'foo' ]; + defineProperty( Bar.prototype, 'bap', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'baz' + }); + + function Foo() { + Bar.call( this ); + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ 'baz', 'bap' ]; + actual = nonEnumerableInheritedKeys( obj ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); + } + t.end(); +}); + +tape( 'the function supports limiting the inheritance level', function test( t ) { + var expected; + var actual; + var obj; + var idx; + var i; + + function Bar() { + this.boop = 'beep'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + Bar.prototype.bar = [ 'foo' ]; + defineProperty( Bar.prototype, 'bap', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'baz' + }); + + function Foo() { + Bar.call( this ); + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ 'baz' ]; + actual = nonEnumerableInheritedKeys( obj, 1 ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); + } + idx = indexOf( actual, 'bap' ); + t.strictEqual( idx === -1, true, 'does not contain property' ); + t.end(); +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = nonEnumerableInheritedKeys( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From 64582b8bdee7cee67f2436020a11d3a7d2858a9e Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 14:11:37 -0700 Subject: [PATCH 0088/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 0e090fae116b..779691d1956d 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1017,6 +1017,15 @@ setReadOnly( utils, 'noneByRight', require( '@stdlib/utils/none-by-right' ) ); */ setReadOnly( utils, 'noneByRightAsync', require( '@stdlib/utils/none-by-right-async' ) ); +/** +* @name nonEnumerableInheritedKeys +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/nonenumerable-inherited-keys} +*/ +setReadOnly( utils, 'nonEnumerableInheritedKeys', require( '@stdlib/utils/nonenumerable-inherited-keys' ) ); + /** * @name nonEnumerableKeys * @memberof utils From 1b98955c2b6d1966504b63133f9744b259aafb57 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 14:13:05 -0700 Subject: [PATCH 0089/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/n.js | 15 +++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 9 +++++---- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js index 75b836daa1bd..dc2592a029a8 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js @@ -264,6 +264,19 @@ ns.push({ ] }); +ns.push({ + 'alias': 'nonEnumerableInheritedKeys', + 'path': '@stdlib/utils/nonenumerable-inherited-keys', + 'value': require( '@stdlib/utils/nonenumerable-inherited-keys' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/keys', + '@stdlib/utils/nonenumerable-keys', + '@stdlib/utils/nonenumerable-keys-in', + '@stdlib/utils/property-names' + ] +}); + ns.push({ 'alias': 'nonEnumerableKeys', 'path': '@stdlib/utils/nonenumerable-keys', @@ -271,6 +284,7 @@ ns.push({ 'type': 'Function', 'related': [ '@stdlib/utils/keys', + '@stdlib/utils/nonenumerable-inherited-keys', '@stdlib/utils/nonenumerable-keys-in', '@stdlib/utils/property-names' ] @@ -283,6 +297,7 @@ ns.push({ 'type': 'Function', 'related': [ '@stdlib/utils/keys-in', + '@stdlib/utils/nonenumerable-inherited-keys', '@stdlib/utils/nonenumerable-keys', '@stdlib/utils/property-names-in' ] diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index c629e0450239..0353e2eb51f8 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1347,6 +1347,7 @@ var db = { "noneByAsync": "\n// Basic usage:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'series': true };\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, opts, predicate, done )\n", "noneByRight": "function positive( v ) { return ( v > 0 ); };\narr = [ -1, -2, -3, -4 ];\nbool = noneByRight( arr, positive )\n", "noneByRightAsync": "\n// Basic usage:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'limit': 2 };\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'series': true };\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, opts, predicate, done )\n", + "nonEnumerableInheritedKeys": "keys = nonEnumerableInheritedKeys( {} )\n", "nonEnumerableKeys": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerableKeys( obj )\n", "nonEnumerableKeysIn": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerableKeysIn( obj )\n", "noop": "noop();\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 7b3f1240f0d9..502e2d9a6111 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -833,8 +833,8 @@ var db = { "deepHasProp": "\ndeepHasProp( value, path[, options] )\n Returns a boolean indicating whether an object contains a nested key path,\n either own or inherited.\n\n Value arguments other than `null` or `undefined` are coerced to objects.\n\n Key path array elements are coerced to strings.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n path: string|Array\n Key path.\n\n options: Object (optional)\n Options.\n\n options.sep: string (optional)\n Key path separator. Default: '.'.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object has a specified path.\n\n Examples\n --------\n > function Foo() { return this; };\n > Foo.prototype.b = { 'c': 'd' };\n > var obj = { 'a': new Foo() };\n > var bool = deepHasProp( obj, 'a.b.c' )\n true\n\n // Specify a custom separator via the `sep` option:\n > bool = deepHasProp( obj, 'a/b/c', { 'sep': '/' } )\n true\n\ndeepHasProp.factory( path[, options] )\n Returns a function which tests whether an object contains a nested key path,\n either own or inherited.\n\n Parameters\n ----------\n path: string|Array\n Key path.\n\n options: Object (optional)\n Options.\n\n options.sep: string (optional)\n Key path separator. Default: '.'.\n\n Returns\n -------\n out: Function\n Function which tests whether an object contains a nested key path.\n\n Examples\n --------\n > function Foo() { return this; };\n > Foo.prototype.b = { 'c': 'd' };\n > var has = deepHasProp.factory( 'a/b/c', { 'sep': '/' } );\n > var obj = { 'a': new Foo() };\n > var bool = has( obj )\n true\n\n See Also\n --------\n deepHasOwnProp, hasOwnProp, deepGet, deepPluck, deepSet\n", "deepPluck": "\ndeepPluck( arr, path[, options] )\n Extracts a nested property value from each element of an object array.\n\n If a key path does not exist, the function sets the plucked value as\n `undefined`.\n\n Extracted values are not cloned.\n\n Parameters\n ----------\n arr: Array\n Source array.\n\n path: string|Array\n Key path.\n\n options: Object (optional)\n Options.\n\n options.copy: boolean (optional)\n Boolean indicating whether to return a new data structure. Default:\n true.\n\n options.sep: string (optional)\n Key path separator. Default: '.'.\n\n Returns\n -------\n out: Array\n Destination array.\n\n Examples\n --------\n > var arr = [\n ... { 'a': { 'b': { 'c': 1 } } },\n ... { 'a': { 'b': { 'c': 2 } } }\n ... ];\n > var out = deepPluck( arr, 'a.b.c' )\n [ 1, 2 ]\n > arr = [\n ... { 'a': [ 0, 1, 2 ] },\n ... { 'a': [ 3, 4, 5 ] }\n ... ];\n > out = deepPluck( arr, [ 'a', 1 ] )\n [ 1, 4 ]\n\n See Also\n --------\n deepGet, deepSet\n", "deepSet": "\ndeepSet( obj, path, value[, options] )\n Sets a nested property value.\n\n Parameters\n ----------\n obj: ObjectLike\n Input object.\n\n path: string|Array\n Key path.\n\n value: any\n Value to set.\n\n options: Object (optional)\n Options.\n\n options.create: boolean (optional)\n Boolean indicating whether to create a path if the key path does not\n already exist. Default: false.\n\n options.sep: string (optional)\n Key path separator. Default: '.'.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if the property was successfully set.\n\n Examples\n --------\n > var obj = { 'a': { 'b': { 'c': 'd' } } };\n > var bool = deepSet( obj, 'a.b.c', 'beep' )\n true\n\n // Specify an alternative separator via the sep option:\n > obj = { 'a': { 'b': { 'c': 'd' } } };\n > bool = deepSet( obj, 'a/b/c', 'beep', { 'sep': '/' } );\n > obj\n { 'a': { 'b': { 'c': 'beep' } } }\n\n // To create a key path which does not exist, set the create option to true:\n > bool = deepSet( obj, 'a.e.c', 'boop', { 'create': true } );\n > obj\n { 'a': { 'b': { 'c': 'beep' }, 'e': { 'c': 'boop' } } }\n\n\ndeepSet.factory( path[, options] )\n Creates a reusable deep set function.\n\n Parameters\n ----------\n path: string|Array\n Key path.\n\n options: Object (optional)\n Options.\n\n options.create: boolean (optional)\n Boolean indicating whether to create a path if the key path does not\n already exist. Default: false.\n\n options.sep: string (optional)\n Key path separator. Default: '.'.\n\n Returns\n -------\n out: Function\n Deep get function.\n\n Examples\n --------\n > var dset = deepSet.factory( 'a/b/c', {\n ... 'create': true,\n ... 'sep': '/'\n ... });\n > var obj = { 'a': { 'b': { 'c': 'd' } } };\n > var bool = dset( obj, 'beep' )\n true\n > obj\n { 'a': { 'b': { 'c': 'beep' } } }\n\n See Also\n --------\n deepGet, deepPluck\n", - "defineProperties": "\ndefineProperties( obj, props )\n Defines properties.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the properties.\n\n props: Object\n Object with property descriptors.\n\n Examples\n --------\n > var obj = {};\n > defineProperties( obj, {\n ... 'foo': {\n ... 'value': 'bar',\n ... 'writable': false,\n ... 'configurable': false,\n ... 'enumerable': true\n ... },\n ... 'baz': {\n ... 'value': 13\n ... }\n ... });\n > obj.foo\n 'bar'\n > obj.baz\n 13\n\n See Also\n --------\n defineProperty, setReadOnly\n", - "defineProperty": "\ndefineProperty( obj, prop, descriptor )\n Defines a property.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n descriptor: Object\n Property descriptor.\n\n Examples\n --------\n > var obj = {};\n > defineProperty( obj, 'foo', {\n ... 'value': 'bar',\n ... 'writable': false\n ... });\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n defineProperties, setReadOnly\n", + "defineProperties": "\ndefineProperties( obj, properties )\n Defines (and/or modifies) object properties.\n\n The second argument is an object whose own enumerable property values are\n descriptors for the properties to be defined or modified.\n\n Property descriptors come in two flavors: data descriptors and accessor\n descriptors. A data descriptor is a property that has a value, which may or\n may not be writable. An accessor descriptor is a property described by a\n getter-setter function pair. A descriptor must be one of these two flavors\n and cannot be both.\n\n A property descriptor has the following optional properties:\n\n - configurable: boolean indicating if property descriptor can be changed and\n if the property can be deleted from the provided object. Default: false.\n\n - enumerable: boolean indicating if the property shows up when enumerating\n object properties. Default: false.\n\n - writable: boolean indicating if the value associated with the property can\n be changed with an assignment operator. Default: false.\n\n - value: property value.\n\n - get: function which serves as a getter for the property, or, if no getter,\n undefined. When the property is accessed, a getter function is called\n without arguments and with the `this` context set to the object through\n which the property is accessed (which may not be the object on which the\n property is defined due to inheritance). The return value will be used as\n the property value. Default: undefined.\n\n - set: function which serves as a setter for the property, or, if no setter,\n undefined. When assigning a property value, a setter function is called with\n one argument (the value being assigned to the property) and with the `this`\n context set to the object through which the property is assigned. Default: undefined.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the properties.\n\n properties: Object\n Object with property descriptors.\n\n Returns\n -------\n obj: Object\n Object on which properties were defined (and/or modified).\n\n Examples\n --------\n > var obj = {};\n > defineProperties( obj, {\n ... 'foo': {\n ... 'value': 'bar',\n ... 'writable': false,\n ... 'configurable': false,\n ... 'enumerable': true\n ... },\n ... 'baz': {\n ... 'value': 13\n ... }\n ... });\n > obj.foo\n 'bar'\n > obj.baz\n 13\n\n See Also\n --------\n defineProperty, setReadOnly\n", + "defineProperty": "\ndefineProperty( obj, prop, descriptor )\n Defines (or modifies) an object property.\n\n Property descriptors come in two flavors: data descriptors and accessor\n descriptors. A data descriptor is a property that has a value, which may or\n may not be writable. An accessor descriptor is a property described by a\n getter-setter function pair. A descriptor must be one of these two flavors\n and cannot be both.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n descriptor: Object\n Property descriptor.\n\n descriptor.configurable: boolean (optional)\n Boolean indicating if property descriptor can be changed and if the\n property can be deleted from the provided object. Default: false.\n\n descriptor.enumerable: boolean (optional)\n Boolean indicating if the property shows up when enumerating object\n properties. Default: false.\n\n descriptor.writable: boolean (optional)\n Boolean indicating if the value associated with the property can be\n changed with an assignment operator. Default: false.\n\n descriptor.value: any (optional)\n Property value.\n\n descriptor.get: Function|void (optional)\n Function which serves as a getter for the property, or, if no getter,\n undefined. When the property is accessed, a getter function is called\n without arguments and with the `this` context set to the object through\n which the property is accessed (which may not be the object on which the\n property is defined due to inheritance). The return value will be used\n as the property value. Default: undefined.\n\n descriptor.set: Function|void (optional)\n Function which serves as a setter for the property, or, if no setter,\n undefined. When assigning a property value, a setter function is called\n with one argument (the value being assigned to the property) and with\n the `this` context set to the object through which the property is\n assigned. Default: undefined.\n\n Returns\n -------\n obj: Object\n Object on which the property was defined (or modified).\n\n Examples\n --------\n > var obj = {};\n > defineProperty( obj, 'foo', {\n ... 'value': 'bar',\n ... 'writable': false\n ... });\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n defineProperties, setReadOnly\n", "dirname": "\ndirname( path )\n Returns a directory name.\n\n Parameters\n ----------\n path: string\n Path.\n\n Returns\n -------\n out: string\n Directory name.\n\n Examples\n --------\n > var dir = dirname( './foo/bar/index.js' )\n './foo/bar'\n\n See Also\n --------\n extname\n", "DoublyLinkedList": "\nDoublyLinkedList()\n Doubly linked list constructor.\n\n Returns\n -------\n list: Object\n Doubly linked list.\n\n list.clear: Function\n Clears the list.\n\n list.first: Function\n Returns the first list node. If the list is empty, the returned value is\n `undefined`.\n\n list.insert: Function\n Inserts a value after a provided list node. For its third argument, the\n method accepts a location: 'before' or 'after'. Default: 'after'.\n\n list.iterator: Function\n Returns an iterator for iterating over a list. If an environment\n supports Symbol.iterator, the returned iterator is iterable. Note that,\n in order to prevent confusion arising from list mutation during\n iteration, a returned iterator **always** iterates over a list\n \"snapshot\", which is defined as the list of list elements at the time\n of the method's invocation. For its sole argument, the method accepts a\n direction: 'forward' or 'reverse'. Default: 'forward'.\n\n list.last: Function\n Returns the last list node. If the list is empty, the returned value is\n `undefined`.\n\n list.length: integer\n List length.\n\n list.pop: Function\n Removes and returns the last list value. If the list is empty, the\n returned value is `undefined`.\n\n list.push: Function\n Adds a value to the end of the list.\n\n list.remove: Function\n Removes a list node from the list.\n\n list.shift: Function\n Removes and returns the first list value. If the list is empty, the\n returned value is `undefined`.\n\n list.toArray: Function\n Returns an array of list values.\n\n list.toJSON: Function\n Serializes a list as JSON.\n\n list.unshift: Function\n Adds a value to the beginning of the list.\n\n Examples\n --------\n > var list = DoublyLinkedList();\n > list.push( 'foo' ).push( 'bar' );\n > list.length\n 2\n > list.pop()\n 'bar'\n > list.length\n 1\n > list.pop()\n 'foo'\n > list.length\n 0\n\n See Also\n --------\n LinkedList, Stack\n", "doUntil": "\ndoUntil( fcn, predicate[, thisArg] )\n Invokes a function until a test condition is true.\n\n The condition is evaluated *after* executing the provided function; thus,\n `fcn` *always* executes at least once.\n\n When invoked, both the predicate function and the function to invoke are\n provided a single argument:\n\n - `i`: iteration number (starting from zero)\n\n Parameters\n ----------\n fcn: Function\n The function to invoke.\n\n predicate: Function\n The predicate function which indicates whether to stop invoking a\n function.\n\n thisArg: any (optional)\n Execution context for the invoked function.\n\n Examples\n --------\n > function predicate( i ) { return ( i >= 5 ); };\n > function beep( i ) { console.log( 'boop: %d', i ); };\n > doUntil( beep, predicate )\n boop: 0\n boop: 1\n boop: 2\n boop: 3\n boop: 4\n\n See Also\n --------\n doUntilAsync, doUntilEach, doWhile, until, whilst\n", @@ -1348,8 +1348,9 @@ var db = { "noneByAsync": "\nnoneByAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByAsync, everyByAsync, forEachAsync, noneBy, noneByRightAsync, someByAsync\n", "noneByRight": "\nnoneByRight( collection, predicate[, thisArg ] )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n The predicate function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n The function immediately returns upon encountering a truthy return value.\n\n If provided an empty collection, the function returns `true`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n predicate: Function\n The test function.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n bool: boolean\n The function returns `true` if the predicate function returns a falsy\n value for all elements; otherwise, the function returns `false`.\n\n Examples\n --------\n > function positive( v ) { return ( v > 0 ); };\n > var arr = [ -1, -2, -3, -4 ];\n > var bool = noneByRight( arr, positive )\n true\n\n See Also\n --------\n anyByRight, everyByRight, forEachRight, none, noneBy, someByRight\n", "noneByRightAsync": "\nnoneByRightAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByRightAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function, iterating from right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByRightAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByRightAsync, everyByRightAsync, forEachRightAsync, noneByAsync, noneByRight, someByRightAsync\n", - "nonEnumerableKeys": "\nnonEnumerableKeys( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerableKeys( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeysIn, propertyNames\n", - "nonEnumerableKeysIn": "\nnonEnumerableKeysIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerableKeysIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, nonEnumerableKeys, propertyNamesIn\n", + "nonEnumerableInheritedKeys": "\nnonEnumerableInheritedKeys( value[, level] )\n Returns an array of an object's inherited non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited non-enumerable property names.\n\n Examples\n --------\n > var keys = nonEnumerableInheritedKeys( {} )\n\n See Also\n --------\n objectKeys, nonEnumerableKeys, nonEnumerableKeysIn, propertyNames\n", + "nonEnumerableKeys": "\nnonEnumerableKeys( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerableKeys( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableInheritedKeys, nonEnumerableKeysIn, propertyNames\n", + "nonEnumerableKeysIn": "\nnonEnumerableKeysIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerableKeysIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, nonEnumerableInheritedKeys, nonEnumerableKeys, propertyNamesIn\n", "noop": "\nnoop()\n A function which does nothing.\n\n Examples\n --------\n > noop();\n\n", "now": "\nnow()\n Returns the time in seconds since the epoch.\n\n The Unix epoch is 00:00:00 UTC on 1 January 1970.\n\n Returns\n -------\n out: integer\n Time in seconds since the epoch.\n\n Examples\n --------\n > var ts = now()\n \n\n", "NUM_CPUS": "\nNUM_CPUS\n Number of CPUs.\n\n In browser environments, the number of CPUs is determined by querying the\n hardware concurrency API.\n\n In Node.js environments, the number of CPUs is determined via the `os`\n module.\n\n Examples\n --------\n > NUM_CPUS\n \n\n", From 23c5838bfda5951319f248fb895b88eceda49869 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 18:31:44 -0700 Subject: [PATCH 0090/1062] Use project utilities --- lib/node_modules/@stdlib/utils/copy/lib/deep_copy.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/copy/lib/deep_copy.js b/lib/node_modules/@stdlib/utils/copy/lib/deep_copy.js index e8e3ffcbc3ed..c65d7a90e1c0 100644 --- a/lib/node_modules/@stdlib/utils/copy/lib/deep_copy.js +++ b/lib/node_modules/@stdlib/utils/copy/lib/deep_copy.js @@ -20,7 +20,6 @@ // MODULES // -var objectKeys = require( '@stdlib/utils/keys' ); var hasOwnProp = require( '@stdlib/assert/has-own-property' ); var isArray = require( '@stdlib/assert/is-array' ); var isBuffer = require( '@stdlib/assert/is-buffer' ); @@ -28,6 +27,9 @@ var isError = require( '@stdlib/assert/is-error' ); var typeOf = require( '@stdlib/utils/type-of' ); var regexp = require( '@stdlib/utils/regexp-from-string' ); var indexOf = require( '@stdlib/utils/index-of' ); +var objectKeys = require( '@stdlib/utils/keys' ); +var propertyNames = require( '@stdlib/utils/property-names' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); var defineProperty = require( '@stdlib/utils/define-property' ); var copyBuffer = require( '@stdlib/buffer/from-buffer' ); var typedArrays = require( './typed_arrays.js' ); @@ -61,11 +63,11 @@ function cloneInstance( val ) { cache = []; refs = []; - ref = Object.create( Object.getPrototypeOf( val ) ); + ref = Object.create( getPrototypeOf( val ) ); cache.push( val ); refs.push( ref ); - names = Object.getOwnPropertyNames( val ); + names = propertyNames( val ); for ( i = 0; i < names.length; i++ ) { name = names[ i ]; desc = Object.getOwnPropertyDescriptor( val, name ); From 30daf5e1e4b192380be57aaa057dddc806ef10fc Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 19:56:21 -0700 Subject: [PATCH 0091/1062] Add utility to return a property descriptor --- .../utils/property-descriptor/README.md | 105 +++++++++++ .../benchmark/benchmark.js | 163 ++++++++++++++++ .../utils/property-descriptor/docs/repl.txt | 29 +++ .../property-descriptor/examples/index.js | 44 +++++ .../utils/property-descriptor/lib/builtin.js | 57 ++++++ .../property-descriptor/lib/has_builtin.js | 28 +++ .../utils/property-descriptor/lib/index.js | 57 ++++++ .../utils/property-descriptor/lib/polyfill.js | 66 +++++++ .../utils/property-descriptor/package.json | 67 +++++++ .../property-descriptor/test/test.builtin.js | 177 ++++++++++++++++++ .../utils/property-descriptor/test/test.js | 52 +++++ .../property-descriptor/test/test.polyfill.js | 145 ++++++++++++++ 12 files changed, 990 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor/README.md create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor/lib/builtin.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor/lib/has_builtin.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor/lib/polyfill.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor/package.json create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor/test/test.builtin.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor/test/test.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor/test/test.polyfill.js diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/README.md b/lib/node_modules/@stdlib/utils/property-descriptor/README.md new file mode 100644 index 000000000000..86d533ff45ba --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor/README.md @@ -0,0 +1,105 @@ + + +# propertyDescriptor + +> Return a property descriptor. + +
+ +## Usage + +```javascript +var propertyDescriptor = require( '@stdlib/utils/property-descriptor' ); +``` + +#### propertyDescriptor( obj, property ) + +Returns a property descriptor. + +```javascript +var obj = { + 'a': 1, + 'b': 2 +}; + +var desc = propertyDescriptor( obj, 'a' ); +// returns {'configurable':true,'enumerable':true,'writable':true,'value':1} +``` + +
+ + + +
+ +## Notes + +- This function differs from the built-in `Object.getOwnPropertyDescriptor()` as follows: + + - If provided `null` or `undefined`, the function returns `null`, rather than throwing an error. + - If an object does not have a provided property name, the function returns `null`, rather than `undefined`. + +
+ + + +
+ +## Examples + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var propertyDescriptor = require( '@stdlib/utils/property-descriptor' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'value': 'qux', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; + +var obj = new Foo(); +var desc = propertyDescriptor( obj, 'baz' ); + +console.log( desc ); +// => {'configurable':true,'enumerable':false,'writable':true,'value':'qux'} +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/property-descriptor/benchmark/benchmark.js new file mode 100644 index 000000000000..d6b2ed358626 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor/benchmark/benchmark.js @@ -0,0 +1,163 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isObject = require( '@stdlib/assert/is-plain-object' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var HAS_BUILTIN = require( './../lib/has_builtin.js' ); +var polyfill = require( './../lib/polyfill.js' ); +var getOwnPropertyDescriptor = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': !HAS_BUILTIN +}; + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = 'bar'; + defineProperty( this, 'g', { + 'value': randu(), + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.g = randu(); + out = getOwnPropertyDescriptor( obj, 'g' ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isObject( out ) ) { + b.fail( 'should return an object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::polyfill', function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = 'bar'; + defineProperty( this, 'g', { + 'value': randu(), + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.g = randu(); + out = polyfill( obj, 'g' ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isObject( out ) ) { + b.fail( 'should return an object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::builtin', opts, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = 'bar'; + defineProperty( this, 'g', { + 'value': randu(), + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.g = randu(); + out = Object.getOwnPropertyDescriptor( obj, 'g' ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isObject( out ) ) { + b.fail( 'should return an object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/docs/repl.txt b/lib/node_modules/@stdlib/utils/property-descriptor/docs/repl.txt new file mode 100644 index 000000000000..b4566706b941 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor/docs/repl.txt @@ -0,0 +1,29 @@ + +{{alias}}( value, property ) + Returns a property descriptor. + + If provided `null` or `undefined` or provided a non-existent property, the + function returns `null`. + + Parameters + ---------- + value: any + Input value. + + property: string + Property name. + + Returns + ------- + desc: Object|null + Property descriptor. + + Examples + -------- + > var obj = { 'a': 'b' }; + > var desc = {{alias}}( obj, 'a' ) + {...} + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/examples/index.js b/lib/node_modules/@stdlib/utils/property-descriptor/examples/index.js new file mode 100644 index 000000000000..2035c5a3c915 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor/examples/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var propertyDescriptor = require( './../lib' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'value': 'qux', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; + +var obj = new Foo(); +var desc = propertyDescriptor( obj, 'baz' ); + +console.log( desc ); +// => {'configurable':true,'enumerable':false,'writable':true,'value':'qux'} diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/lib/builtin.js b/lib/node_modules/@stdlib/utils/property-descriptor/lib/builtin.js new file mode 100644 index 000000000000..035533997025 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor/lib/builtin.js @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Returns a property descriptor. +* +* ## Notes +* +* - In contrast to the built-in `Object.getOwnPropertyDescriptor()`, this function returns `null` if provided `undefined` or `null`, rather than throwing an error. +* - In contrast to the built-in `Object.getOwnPropertyDescriptor()`, this function returns `null` if an object does not have a provided property name, rather than `undefined`. +* +* @private +* @param {*} value - input object +* @param {string} property - property name +* @returns {(Object|null)} property descriptor or null +* +* @example +* var obj = { +* 'beep': 'boop', +* 'foo': 3.14 +* }; +* +* var desc = getOwnPropertyDescriptor( obj, 'foo' ); +* // returns {'configurable':true,'enumerable':true,'writable':true,'value':3.14} +*/ +function getOwnPropertyDescriptor( value, property ) { + var desc; + if ( value === null || value === void 0 ) { + return null; + } + desc = Object.getOwnPropertyDescriptor( value, property ); + return ( desc === void 0 ) ? null : desc; +} + + +// EXPORTS // + +module.exports = getOwnPropertyDescriptor; diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/lib/has_builtin.js b/lib/node_modules/@stdlib/utils/property-descriptor/lib/has_builtin.js new file mode 100644 index 000000000000..066297924fe3 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor/lib/has_builtin.js @@ -0,0 +1,28 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +var bool = ( typeof Object.getOwnPropertyDescriptor !== 'undefined' ); + + +// EXPORTS // + +module.exports = bool; diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/lib/index.js b/lib/node_modules/@stdlib/utils/property-descriptor/lib/index.js new file mode 100644 index 000000000000..0be536187911 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor/lib/index.js @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return a property descriptor. +* +* @module @stdlib/utils/property-descriptor +* +* @example +* var getOwnPropertyDescriptor = require( '@stdlib/utils/property-descriptor' ); +* +* var obj = { +* 'foo': 'bar', +* 'beep': 'boop' +* }; +* +* var keys = getOwnPropertyDescriptor( obj, 'foo' ); +* // returns {'configurable':true,'enumerable':true,'writable':true,'value':'bar'} +*/ + +// MODULES // + +var HAS_BUILTIN = require( './has_builtin.js' ); +var builtin = require( './builtin.js' ); +var polyfill = require( './polyfill.js' ); + + +// MAIN // + +var main; +if ( HAS_BUILTIN ) { + main = builtin; +} else { + main = polyfill; +} + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/lib/polyfill.js b/lib/node_modules/@stdlib/utils/property-descriptor/lib/polyfill.js new file mode 100644 index 000000000000..52b2c30588ae --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor/lib/polyfill.js @@ -0,0 +1,66 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); + + +// MAIN // + +/** +* Returns a property descriptor. +* +* ## Notes +* +* - In contrast to the built-in `Object.getOwnPropertyDescriptor()`, this function returns `null` if provided `undefined` or `null`, rather than throwing an error. +* - In contrast to the built-in `Object.getOwnPropertyDescriptor()`, this function returns `null` if an object does not have a provided property name, rather than `undefined`. +* - In environments lacking `Object.getOwnPropertyDescriptor()` support, property descriptors do not exist. In non-supporting environment, if an object has a provided property, this function returns a descriptor object equivalent to that returned in a supporting environment; otherwise, the function returns `null`. +* +* @private +* @param {*} value - input object +* @param {string} property - property name +* @returns {(Object|null)} property descriptor or null +* +* @example +* var obj = { +* 'beep': 'boop', +* 'foo': 3.14 +* }; +* +* var desc = getOwnPropertyDescriptor( obj, 'foo' ); +* // returns {'configurable':true,'enumerable':true,'writable':true,'value':3.14} +*/ +function getOwnPropertyDescriptor( value, property ) { + if ( hasOwnProp( value, property ) ) { + return { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': value[ property ] + }; + } + return null; +} + + +// EXPORTS // + +module.exports = getOwnPropertyDescriptor; diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/package.json b/lib/node_modules/@stdlib/utils/property-descriptor/package.json new file mode 100644 index 000000000000..7b79b958ebfb --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor/package.json @@ -0,0 +1,67 @@ +{ + "name": "@stdlib/utils/property-descriptor", + "version": "0.0.0", + "description": "Return a property descriptor.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "own", + "property", + "props", + "prop", + "descriptor", + "desc" + ] +} diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/test/test.builtin.js b/lib/node_modules/@stdlib/utils/property-descriptor/test/test.builtin.js new file mode 100644 index 000000000000..ad4b01262660 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor/test/test.builtin.js @@ -0,0 +1,177 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var getOwnPropertyDescriptor = require( './../lib/builtin.js' ); + + +// VARIABLES // + +var opts = { + 'skip': ( typeof Object.getOwnPropertyDescriptor === 'undefined' ) +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof getOwnPropertyDescriptor, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns a property descriptor', opts, function test( t ) { + var expected; + var actual; + var obj; + + function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + return this; + } + + Foo.prototype.foo = [ 'bar' ]; + + obj = new Foo(); + + expected = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'boop' + }; + actual = getOwnPropertyDescriptor( obj, 'beep' ); + t.deepEqual( actual, expected, 'returns expected value' ); + + expected = { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }; + actual = getOwnPropertyDescriptor( obj, 'd' ); + t.deepEqual( actual, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `null` if provided a non-string primitive or `null`', opts, function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + 3.14, + NaN, + true, + false, + void 0, + null + ]; + expected = null; + + for ( i = 0; i < values.length; i++ ) { + actual = getOwnPropertyDescriptor( values[ i ], 'length' ); + t.strictEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); + +tape( 'the function coerces a property argument to a string', opts, function test( t ) { + var expected; + var actual; + var obj; + + obj = { + 'null': true, + '[object Object]': false + }; + + expected = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': true + }; + actual = getOwnPropertyDescriptor( obj, null ); + t.deepEqual( actual, expected, 'returns expected value' ); + + expected = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': false + }; + actual = getOwnPropertyDescriptor( obj, {} ); + t.deepEqual( actual, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `null` if provided a non-existent property', opts, function test( t ) { + var expected; + var actual; + var obj; + + obj = {}; + + expected = null; + actual = getOwnPropertyDescriptor( obj, 'a' ); + + t.strictEqual( actual, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports symbols', opts, function test( t ) { + var expected; + var actual; + var obj; + var sym; + + if ( hasSymbolSupport() ) { + obj = {}; + sym = Symbol( 'beep' ); + obj[ sym ] = 'boop'; + + actual = getOwnPropertyDescriptor( obj, sym ); + expected = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'boop' + }; + t.deepEqual( actual, expected, 'returns expected value' ); + } else { + t.pass( 'environment does not support symbols' ); + } + t.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/test/test.js b/lib/node_modules/@stdlib/utils/property-descriptor/test/test.js new file mode 100644 index 000000000000..727398a34507 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor/test/test.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var builtin = require( './../lib/builtin.js' ); +var polyfill = require( './../lib/polyfill.js' ); +var getOwnPropertyDescriptor = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof getOwnPropertyDescriptor, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'if an environment has a built-in implementation, the export is the built-in implementation', function test( t ) { + var getOwnPropertyDescriptor = proxyquire( './../lib/index.js', { + './has_builtin.js': true + }); + t.strictEqual( getOwnPropertyDescriptor, builtin, 'is expected value' ); + t.end(); +}); + +tape( 'if an environment does not have a built-in implementation, the export is a polyfill', function test( t ) { + var getOwnPropertyDescriptor = proxyquire( './../lib/index.js', { + './has_builtin.js': false + }); + t.strictEqual( getOwnPropertyDescriptor, polyfill, 'is expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/test/test.polyfill.js b/lib/node_modules/@stdlib/utils/property-descriptor/test/test.polyfill.js new file mode 100644 index 000000000000..5973cc8a9aa6 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor/test/test.polyfill.js @@ -0,0 +1,145 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var getOwnPropertyDescriptor = require( './../lib/polyfill.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof getOwnPropertyDescriptor, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns a property descriptor ( Date: Mon, 3 Sep 2018 19:57:26 -0700 Subject: [PATCH 0092/1062] Fix heading --- lib/node_modules/@stdlib/utils/property-names/lib/builtin.js | 2 +- lib/node_modules/@stdlib/utils/property-names/lib/polyfill.js | 2 +- lib/node_modules/@stdlib/utils/property-symbols/lib/builtin.js | 2 +- lib/node_modules/@stdlib/utils/property-symbols/lib/polyfill.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/property-names/lib/builtin.js b/lib/node_modules/@stdlib/utils/property-names/lib/builtin.js index 9b9dc8d5cd21..12b9b3747a09 100644 --- a/lib/node_modules/@stdlib/utils/property-names/lib/builtin.js +++ b/lib/node_modules/@stdlib/utils/property-names/lib/builtin.js @@ -23,7 +23,7 @@ /** * Returns an array of an object's own enumerable and non-enumerable property names. * -* ## Note +* ## Notes * * - In contrast to the built-in `Object.getOwnPropertyNames()`, this function returns an empty array if provided `undefined` or `null`, rather than throwing an error. * diff --git a/lib/node_modules/@stdlib/utils/property-names/lib/polyfill.js b/lib/node_modules/@stdlib/utils/property-names/lib/polyfill.js index acae32fe3eb3..d8b2c6f79c83 100644 --- a/lib/node_modules/@stdlib/utils/property-names/lib/polyfill.js +++ b/lib/node_modules/@stdlib/utils/property-names/lib/polyfill.js @@ -28,7 +28,7 @@ var keys = require( '@stdlib/utils/keys' ); /** * Returns an array of an object's own enumerable and non-enumerable property names. * -* ## Note +* ## Notes * * - In contrast to the built-in `Object.getOwnPropertyNames()`, this function returns an empty array if provided `undefined` or `null`, rather than throwing an error. * - In environments lacking support for `Object.getOwnPropertyNames()`, property descriptors are unavailable, and thus all properties can be safely assumed to be enumerable. Hence, we can defer to calling `Object.keys`, which retrieves all own enumerable property names. diff --git a/lib/node_modules/@stdlib/utils/property-symbols/lib/builtin.js b/lib/node_modules/@stdlib/utils/property-symbols/lib/builtin.js index 268565406831..9b428b84efde 100644 --- a/lib/node_modules/@stdlib/utils/property-symbols/lib/builtin.js +++ b/lib/node_modules/@stdlib/utils/property-symbols/lib/builtin.js @@ -23,7 +23,7 @@ /** * Returns an array of an object's own symbol properties. * -* ## Note +* ## Notes * * - In contrast to the built-in `Object.getOwnPropertySymbols()`, this function returns an empty array if provided `undefined` or `null`, rather than throwing an error. * diff --git a/lib/node_modules/@stdlib/utils/property-symbols/lib/polyfill.js b/lib/node_modules/@stdlib/utils/property-symbols/lib/polyfill.js index e35831b93c5e..6c672f1e6d35 100644 --- a/lib/node_modules/@stdlib/utils/property-symbols/lib/polyfill.js +++ b/lib/node_modules/@stdlib/utils/property-symbols/lib/polyfill.js @@ -23,7 +23,7 @@ /** * Returns an array of an object's own symbol properties. * -* ## Note +* ## Notes * * - In contrast to the built-in `Object.getOwnPropertySymbols()`, this function returns an empty array if provided `undefined` or `null`, rather than throwing an error. * From 03c6b6ccd7501bd210376259a630279d7fc10a57 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 19:58:49 -0700 Subject: [PATCH 0093/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 779691d1956d..2eea99e13c0e 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1179,6 +1179,15 @@ setReadOnly( utils, 'pop', require( '@stdlib/utils/pop' ) ); */ setReadOnly( utils, 'prepend', require( '@stdlib/utils/prepend' ) ); +/** +* @name propertyDescriptor +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/property-descriptor} +*/ +setReadOnly( utils, 'propertyDescriptor', require( '@stdlib/utils/property-descriptor' ) ); + /** * @name propertyNames * @memberof utils From 3f39ddcee0067682f811ccdad35f8bb0b28738ec Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 19:59:18 -0700 Subject: [PATCH 0094/1062] Update namespace --- lib/node_modules/@stdlib/namespace/lib/namespace/p.js | 11 +++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 1 + 3 files changed, 13 insertions(+) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js index 6cd824e5b398..fc0308e21db8 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js @@ -275,6 +275,17 @@ ns.push({ ] }); +ns.push({ + 'alias': 'propertyDescriptor', + 'path': '@stdlib/utils/property-descriptor', + 'value': require( '@stdlib/utils/property-descriptor' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/define-property', + '@stdlib/utils/property-descriptors' + ] +}); + ns.push({ 'alias': 'propertyNames', 'path': '@stdlib/utils/property-names', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 0353e2eb51f8..3c1b398ccb11 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1390,6 +1390,7 @@ var db = { "pluck": "arr = [\n { 'a': 1, 'b': 2 },\n { 'a': 0.5, 'b': 3 }\n];\nout = pluck( arr, 'a' )\narr = [\n { 'a': 1, 'b': 2 },\n { 'a': 0.5, 'b': 3 }\n];\nout = pluck( arr, 'a', { 'copy': false } )\nbool = ( arr[ 0 ] === out[ 0 ] )\n", "pop": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\nout = pop( arr )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\nout = pop( arr )\n\n// Array-like object:\narr = { 'length': 2, '0': 1.0, '1': 2.0 };\nout = pop( arr )\n", "prepend": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\narr = prepend( arr, [ 6.0, 7.0 ] )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\narr = prepend( arr, [ 3.0, 4.0 ] )\n\n// Array-like object:\narr = { 'length': 1, '0': 1.0 };\narr = prepend( arr, [ 2.0, 3.0 ] )\n", + "propertyDescriptor": "obj = { 'a': 'b' };\ndesc = propertyDescriptor( obj, 'a' )\n", "propertyNames": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = propertyNames( obj )\n", "propertyNamesIn": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = propertyNamesIn( obj )\n", "propertySymbols": "s = propertySymbols( {} )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 502e2d9a6111..f558eb27e416 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1391,6 +1391,7 @@ var db = { "pluck": "\npluck( arr, prop[, options] )\n Extracts a property value from each element of an object array.\n\n The function skips `null` and `undefined` array elements.\n\n Extracted values are not cloned.\n\n Parameters\n ----------\n arr: Array\n Source array.\n\n prop: string\n Property to access.\n\n options: Object (optional)\n Options.\n\n options.copy: boolean (optional)\n Boolean indicating whether to return a new data structure. To mutate the\n input data structure (e.g., when input values can be discarded or when\n optimizing memory usage), set the `copy` option to `false`. Default:\n true.\n\n Returns\n -------\n out: Array\n Destination array.\n\n Examples\n --------\n > var arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > var out = pluck( arr, 'a' )\n [ 1, 0.5 ]\n\n > arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > out = pluck( arr, 'a', { 'copy': false } )\n [ 1, 0.5 ]\n > var bool = ( arr[ 0 ] === out[ 0 ] )\n true\n\n See Also\n --------\n deepPluck, pick\n", "pop": "\npop( collection )\n Removes and returns the last element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = pop( arr )\n [ [ 1.0, 2.0, 3.0, 4.0 ], 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = pop( arr )\n [ [ 1.0 ], 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = pop( arr )\n [ { 'length': 1, '0': 1.0 }, 2.0 ]\n\n See Also\n --------\n push, shift, unshift\n", "prepend": "\nprepend( collection1, collection2 )\n Adds the elements of one collection to the beginning of another collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection1: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n collection2: Array|TypedArray|Object\n A collection containing the elements to add. If the collection is an\n `Object`, the collection should be array-like.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = prepend( arr, [ 6.0, 7.0 ] )\n [ 6.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = prepend( arr, [ 3.0, 4.0 ] )\n [ 3.0, 4.0, 1.0, 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 1, '0': 1.0 };\n > arr = prepend( arr, [ 2.0, 3.0 ] )\n { 'length': 3, '0': 2.0, '1': 3.0, '2': 1.0 }\n\n See Also\n --------\n append, unshift\n", + "propertyDescriptor": "\npropertyDescriptor( value, property )\n Returns a property descriptor.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptor( obj, 'a' )\n {...}\n\n See Also\n --------\n defineProperty\n", "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeys, propertyNamesIn, propertySymbols\n", "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeysIn, propertyNames, propertySymbolsIn\n", "propertySymbols": "\npropertySymbols( value )\n Returns an array of an object's own symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own symbol properties.\n\n Examples\n --------\n > var s = propertySymbols( {} )\n\n See Also\n --------\n propertyNames, propertySymbolsIn\n", From afe9a88b683920afdafd96caa08a8c3f4bb7ee07 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 20:01:37 -0700 Subject: [PATCH 0095/1062] Use utility --- lib/node_modules/@stdlib/utils/copy/lib/deep_copy.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/copy/lib/deep_copy.js b/lib/node_modules/@stdlib/utils/copy/lib/deep_copy.js index c65d7a90e1c0..4f2241fad063 100644 --- a/lib/node_modules/@stdlib/utils/copy/lib/deep_copy.js +++ b/lib/node_modules/@stdlib/utils/copy/lib/deep_copy.js @@ -29,6 +29,7 @@ var regexp = require( '@stdlib/utils/regexp-from-string' ); var indexOf = require( '@stdlib/utils/index-of' ); var objectKeys = require( '@stdlib/utils/keys' ); var propertyNames = require( '@stdlib/utils/property-names' ); +var propertyDescriptor = require( '@stdlib/utils/property-descriptor' ); var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); var defineProperty = require( '@stdlib/utils/define-property' ); var copyBuffer = require( '@stdlib/buffer/from-buffer' ); @@ -70,7 +71,7 @@ function cloneInstance( val ) { names = propertyNames( val ); for ( i = 0; i < names.length; i++ ) { name = names[ i ]; - desc = Object.getOwnPropertyDescriptor( val, name ); + desc = propertyDescriptor( val, name ); if ( hasOwnProp( desc, 'value' ) ) { tmp = ( isArray( val[name] ) ) ? [] : {}; desc.value = deepCopy( val[name], tmp, cache, refs, -1 ); @@ -136,7 +137,7 @@ function copyError( error ) { keys = objectKeys( error ); for ( i = 0; i < keys.length; i++ ) { key = keys[ i ]; - desc = Object.getOwnPropertyDescriptor( error, key ); + desc = propertyDescriptor( error, key ); if ( hasOwnProp( desc, 'value' ) ) { tmp = ( isArray( error[ key ] ) ) ? [] : {}; desc.value = deepCopy( error[ key ], tmp, cache, refs, -1 ); @@ -245,7 +246,7 @@ function deepCopy( val, copy, cache, refs, level ) { isBuffer( x ) ) { if ( parent === 'object' ) { - desc = Object.getOwnPropertyDescriptor( val, key ); + desc = propertyDescriptor( val, key ); if ( hasOwnProp( desc, 'value' ) ) { desc.value = deepCopy( x ); } @@ -268,7 +269,7 @@ function deepCopy( val, copy, cache, refs, level ) { if ( parent === 'array' ) { copy[ key ] = deepCopy( x, ref, cache, refs, level ); } else { - desc = Object.getOwnPropertyDescriptor( val, key ); + desc = propertyDescriptor( val, key ); if ( hasOwnProp( desc, 'value' ) ) { desc.value = deepCopy( x, ref, cache, refs, level ); } @@ -283,7 +284,7 @@ function deepCopy( val, copy, cache, refs, level ) { } else { for ( j = 0; j < keys.length; j++ ) { key = keys[ j ]; - desc = Object.getOwnPropertyDescriptor( val, key ); + desc = propertyDescriptor( val, key ); defineProperty( copy, key, desc ); } } From 52622cd65c4483503fbd7c65f0d5509260d2f033 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 20:21:57 -0700 Subject: [PATCH 0096/1062] Cache function reference --- .../@stdlib/utils/property-descriptor/lib/builtin.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/lib/builtin.js b/lib/node_modules/@stdlib/utils/property-descriptor/lib/builtin.js index 035533997025..ffb45e8b9c52 100644 --- a/lib/node_modules/@stdlib/utils/property-descriptor/lib/builtin.js +++ b/lib/node_modules/@stdlib/utils/property-descriptor/lib/builtin.js @@ -18,6 +18,11 @@ 'use strict'; +// VARIABLES // + +var propertyDescriptor = Object.getOwnPropertyDescriptor; + + // MAIN // /** @@ -47,7 +52,7 @@ function getOwnPropertyDescriptor( value, property ) { if ( value === null || value === void 0 ) { return null; } - desc = Object.getOwnPropertyDescriptor( value, property ); + desc = propertyDescriptor( value, property ); return ( desc === void 0 ) ? null : desc; } From ec9dbe63a67914e9a759c0d1c0a31c4961a31f0e Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 20:22:32 -0700 Subject: [PATCH 0097/1062] Cache function reference --- .../@stdlib/utils/property-names/lib/builtin.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/property-names/lib/builtin.js b/lib/node_modules/@stdlib/utils/property-names/lib/builtin.js index 12b9b3747a09..d0c73d368562 100644 --- a/lib/node_modules/@stdlib/utils/property-names/lib/builtin.js +++ b/lib/node_modules/@stdlib/utils/property-names/lib/builtin.js @@ -18,6 +18,11 @@ 'use strict'; +// VARIABLES // + +var propertyNames = Object.getOwnPropertyNames; + + // MAIN // /** @@ -41,7 +46,7 @@ * // e.g., returns [ 'beep', 'foo' ] */ function getOwnPropertyNames( value ) { - return Object.getOwnPropertyNames( Object( value ) ); + return propertyNames( Object( value ) ); } From 72aa1d2044bd4008930f7b517a9db5d0843d48a3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 3 Sep 2018 20:23:17 -0700 Subject: [PATCH 0098/1062] Cache function reference --- .../@stdlib/utils/property-symbols/lib/builtin.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/property-symbols/lib/builtin.js b/lib/node_modules/@stdlib/utils/property-symbols/lib/builtin.js index 9b428b84efde..1f5f2a0c4e16 100644 --- a/lib/node_modules/@stdlib/utils/property-symbols/lib/builtin.js +++ b/lib/node_modules/@stdlib/utils/property-symbols/lib/builtin.js @@ -18,6 +18,11 @@ 'use strict'; +// VARIABLES // + +var propertySymbols = Object.getOwnPropertySymbols; + + // MAIN // /** @@ -35,7 +40,7 @@ * var symbols = getOwnPropertySymbols( {} ); */ function getOwnPropertySymbols( value ) { - return Object.getOwnPropertySymbols( Object( value ) ); + return propertySymbols( Object( value ) ); } From b16d72c873e88e209c8a989fffa8beb07a935bab Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 4 Sep 2018 16:29:59 -0700 Subject: [PATCH 0099/1062] Add missing require --- .../@stdlib/utils/property-descriptor/test/test.builtin.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/test/test.builtin.js b/lib/node_modules/@stdlib/utils/property-descriptor/test/test.builtin.js index ad4b01262660..7314f094d5c0 100644 --- a/lib/node_modules/@stdlib/utils/property-descriptor/test/test.builtin.js +++ b/lib/node_modules/@stdlib/utils/property-descriptor/test/test.builtin.js @@ -23,6 +23,7 @@ var tape = require( 'tape' ); var defineProperty = require( '@stdlib/utils/define-property' ); var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); var getOwnPropertyDescriptor = require( './../lib/builtin.js' ); From 0ee30bccd23cf735472d51e5c1faaf7b7eb3e323 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 4 Sep 2018 16:31:18 -0700 Subject: [PATCH 0100/1062] Add missing requires --- .../@stdlib/utils/property-names/test/test.builtin.js | 1 + .../@stdlib/utils/property-names/test/test.polyfill.js | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/property-names/test/test.builtin.js b/lib/node_modules/@stdlib/utils/property-names/test/test.builtin.js index ce7159e7b32f..34a2da0d3379 100644 --- a/lib/node_modules/@stdlib/utils/property-names/test/test.builtin.js +++ b/lib/node_modules/@stdlib/utils/property-names/test/test.builtin.js @@ -24,6 +24,7 @@ var tape = require( 'tape' ); var defineProperty = require( '@stdlib/utils/define-property' ); var indexOf = require( '@stdlib/utils/index-of' ); var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); var getOwnPropertyNames = require( './../lib' ); diff --git a/lib/node_modules/@stdlib/utils/property-names/test/test.polyfill.js b/lib/node_modules/@stdlib/utils/property-names/test/test.polyfill.js index 36d7443d847d..6ad5b176daf3 100644 --- a/lib/node_modules/@stdlib/utils/property-names/test/test.polyfill.js +++ b/lib/node_modules/@stdlib/utils/property-names/test/test.polyfill.js @@ -24,6 +24,7 @@ var tape = require( 'tape' ); var defineProperty = require( '@stdlib/utils/define-property' ); var indexOf = require( '@stdlib/utils/index-of' ); var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); var getOwnPropertyNames = require( './../lib/polyfill.js' ); From 30f79aacf29c48c76b0a6e5b2bc019b6c021d33c Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 4 Sep 2018 16:33:36 -0700 Subject: [PATCH 0101/1062] Add `Symbol` to list of globals to require --- etc/eslint/rules/stdlib.js | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/eslint/rules/stdlib.js b/etc/eslint/rules/stdlib.js index c7bcc9742729..e384b0b36dea 100644 --- a/etc/eslint/rules/stdlib.js +++ b/etc/eslint/rules/stdlib.js @@ -4054,6 +4054,7 @@ rules[ 'stdlib/require-globals' ] = [ 'error', { 'Int32Array', 'Number', 'SharedArrayBuffer', + 'Symbol', 'Uint8Array', 'Uint8ClampedArray', 'Uint16Array', From 4018ee6dcf83ddaefed1cde290a0d47524041460 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 4 Sep 2018 16:55:49 -0700 Subject: [PATCH 0102/1062] Add utility to return an object's own property descriptors --- .../utils/property-descriptors/README.md | 106 ++++++++ .../benchmark/benchmark.js | 163 +++++++++++++ .../utils/property-descriptors/docs/repl.txt | 25 ++ .../property-descriptors/examples/index.js | 44 ++++ .../utils/property-descriptors/lib/builtin.js | 55 +++++ .../property-descriptors/lib/has_builtin.js | 28 +++ .../utils/property-descriptors/lib/index.js | 57 +++++ .../property-descriptors/lib/polyfill.js | 100 ++++++++ .../utils/property-descriptors/package.json | 71 ++++++ .../property-descriptors/test/test.builtin.js | 227 ++++++++++++++++++ .../utils/property-descriptors/test/test.js | 52 ++++ .../test/test.polyfill.js | 220 +++++++++++++++++ 12 files changed, 1148 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors/README.md create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors/lib/builtin.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors/lib/has_builtin.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors/lib/polyfill.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors/package.json create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors/test/test.builtin.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors/test/test.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors/test/test.polyfill.js diff --git a/lib/node_modules/@stdlib/utils/property-descriptors/README.md b/lib/node_modules/@stdlib/utils/property-descriptors/README.md new file mode 100644 index 000000000000..055edbbac711 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors/README.md @@ -0,0 +1,106 @@ + + +# propertyDescriptors + +> Return an object's own [property descriptors][@stdlib/utils/property-descriptor]. + +
+ +## Usage + +```javascript +var propertyDescriptors = require( '@stdlib/utils/property-descriptors' ); +``` + +#### propertyDescriptors( obj ) + +Returns an object's own [property descriptors][@stdlib/utils/property-descriptor]. + +```javascript +var obj = { + 'a': 1, + 'b': 2 +}; + +var desc = propertyDescriptor( obj ); +// returns { 'a': {...}, 'b': {...} } +``` + +
+ + + +
+ +## Notes + +- This function differs from the built-in `Object.getOwnPropertyDescriptors()` as follows: + + - If provided `null` or `undefined`, the function returns an empty `object`, rather than throwing an error. + +
+ + + +
+ +## Examples + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var propertyDescriptors = require( '@stdlib/utils/property-descriptors' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'value': 'qux', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; + +var obj = new Foo(); +var desc = propertyDescriptors( obj ); + +console.log( desc ); +// => { 'beep': {...}, 'a': {...}, 'baz': {...} } +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/property-descriptors/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/property-descriptors/benchmark/benchmark.js new file mode 100644 index 000000000000..cb0e1fdd9207 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors/benchmark/benchmark.js @@ -0,0 +1,163 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isObject = require( '@stdlib/assert/is-plain-object' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var HAS_BUILTIN = require( './../lib/has_builtin.js' ); +var polyfill = require( './../lib/polyfill.js' ); +var getOwnPropertyDescriptors = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': !HAS_BUILTIN +}; + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = 'bar'; + defineProperty( this, 'g', { + 'value': randu(), + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.g = randu(); + out = getOwnPropertyDescriptors( obj ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isObject( out ) ) { + b.fail( 'should return an object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::polyfill', function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = 'bar'; + defineProperty( this, 'g', { + 'value': randu(), + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.g = randu(); + out = polyfill( obj ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isObject( out ) ) { + b.fail( 'should return an object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::builtin', opts, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = 'bar'; + defineProperty( this, 'g', { + 'value': randu(), + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.g = randu(); + out = Object.getOwnPropertyDescriptors( obj ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isObject( out ) ) { + b.fail( 'should return an object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/property-descriptors/docs/repl.txt b/lib/node_modules/@stdlib/utils/property-descriptors/docs/repl.txt new file mode 100644 index 000000000000..9106a7e42d1c --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors/docs/repl.txt @@ -0,0 +1,25 @@ + +{{alias}}( value ) + Returns an object's own property descriptors. + + If provided `null` or `undefined`, the function returns an empty object. + + Parameters + ---------- + value: any + Input value. + + Returns + ------- + desc: Object + Property descriptors. + + Examples + -------- + > var obj = { 'a': 'b' }; + > var desc = {{alias}}( obj ) + { 'a': {...} } + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/property-descriptors/examples/index.js b/lib/node_modules/@stdlib/utils/property-descriptors/examples/index.js new file mode 100644 index 000000000000..42ecf09516ae --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors/examples/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var propertyDescriptors = require( './../lib' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'value': 'qux', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; + +var obj = new Foo(); +var desc = propertyDescriptors( obj ); + +console.log( desc ); +// => { 'beep': {...}, 'a': {...}, 'baz': {...} } diff --git a/lib/node_modules/@stdlib/utils/property-descriptors/lib/builtin.js b/lib/node_modules/@stdlib/utils/property-descriptors/lib/builtin.js new file mode 100644 index 000000000000..d818180dfa28 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors/lib/builtin.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// VARIABLES // + +var propertyDescriptors = Object.getOwnPropertyDescriptors; + + +// MAIN // + +/** +* Returns an object's own property descriptors. +* +* ## Notes +* +* - In contrast to the built-in `Object.getOwnPropertyDescriptors()`, this function returns an empty object if provided `undefined` or `null`, rather than throwing an error. +* +* @private +* @param {*} value - input object +* @returns {Object} property descriptors +* +* @example +* var obj = { +* 'beep': 'boop', +* 'foo': 3.14 +* }; +* +* var desc = getOwnPropertyDescriptors( obj ); +* // returns {...} +*/ +function getOwnPropertyDescriptors( value ) { + return propertyDescriptors( Object( value ) ); +} + + +// EXPORTS // + +module.exports = getOwnPropertyDescriptors; diff --git a/lib/node_modules/@stdlib/utils/property-descriptors/lib/has_builtin.js b/lib/node_modules/@stdlib/utils/property-descriptors/lib/has_builtin.js new file mode 100644 index 000000000000..845a59a1d2a0 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors/lib/has_builtin.js @@ -0,0 +1,28 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +var bool = ( typeof Object.getOwnPropertyDescriptors !== 'undefined' ); + + +// EXPORTS // + +module.exports = bool; diff --git a/lib/node_modules/@stdlib/utils/property-descriptors/lib/index.js b/lib/node_modules/@stdlib/utils/property-descriptors/lib/index.js new file mode 100644 index 000000000000..681e18a9795d --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors/lib/index.js @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an object's own property descriptors. +* +* @module @stdlib/utils/property-descriptors +* +* @example +* var getOwnPropertyDescriptors = require( '@stdlib/utils/property-descriptors' ); +* +* var obj = { +* 'foo': 'bar', +* 'beep': 'boop' +* }; +* +* var keys = getOwnPropertyDescriptors( obj, 'foo' ); +* // returns {...} +*/ + +// MODULES // + +var HAS_BUILTIN = require( './has_builtin.js' ); +var builtin = require( './builtin.js' ); +var polyfill = require( './polyfill.js' ); + + +// MAIN // + +var main; +if ( HAS_BUILTIN ) { + main = builtin; +} else { + main = polyfill; +} + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/property-descriptors/lib/polyfill.js b/lib/node_modules/@stdlib/utils/property-descriptors/lib/polyfill.js new file mode 100644 index 000000000000..8e4552a1be92 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors/lib/polyfill.js @@ -0,0 +1,100 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyNames = require( '@stdlib/utils/property-names' ); +var propertySymbols = require( '@stdlib/utils/property-symbols' ); +var propertyDescriptor = require( '@stdlib/utils/property-descriptor' ); +var defineProperty = require( '@stdlib/utils/define-property' ); + + +// MAIN // + +/** +* Returns an object's own property descriptors. +* +* ## Notes +* +* - In contrast to the built-in `Object.getOwnPropertyDescriptors()`, this function returns an empty object if provided `undefined` or `null`, rather than throwing an error. +* +* @private +* @param {*} value - input object +* @returns {Object} property descriptors +* +* @example +* var obj = { +* 'beep': 'boop', +* 'foo': 3.14 +* }; +* +* var desc = getOwnPropertyDescriptors( obj, 'foo' ); +* // returns {...} +*/ +function getOwnPropertyDescriptors( value ) { + var symbols; + var names; + var desc; + var out; + var i; + + out = {}; + + // Get the value's own enumerable and non-enumerable properties: + names = propertyNames( value ); + + // For each property name, retrieve the property descriptor... + for ( i = 0; i < names.length; i++ ) { + desc = propertyDescriptor( value, names[ i ] ); + if ( desc ) { + // The following is equivalent to `out[ names[i] ] = desc`, but accounts for the possibility of a "poisoned" `Object` prototype (i.e., an `Object.prototype` having a property with a setter which throws). + defineProperty( out, names[ i ], { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': desc + }); + } + } + + // Get the value's symbol properties: + symbols = propertySymbols( value ); + + // For each symbol property, retrieve the property descriptor... + for ( i = 0; i < symbols.length; i++ ) { + desc = propertyDescriptor( value, symbols[ i ] ); + if ( desc ) { + // The following is equivalent to `out[ symbols[i] ] = desc`, but accounts for the possibility of a "poisoned" `Object` prototype (i.e., an `Object.prototype` having a property with a setter which throws). + defineProperty( out, symbols[ i ], { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': desc + }); + } + } + + return out; +} + + +// EXPORTS // + +module.exports = getOwnPropertyDescriptors; diff --git a/lib/node_modules/@stdlib/utils/property-descriptors/package.json b/lib/node_modules/@stdlib/utils/property-descriptors/package.json new file mode 100644 index 000000000000..4dd5c87bd720 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/utils/property-descriptors", + "version": "0.0.0", + "description": "Return an object's own property descriptors.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "own", + "property", + "properties", + "props", + "prop", + "descriptor", + "descriptors", + "desc", + "getownpropertydescriptors", + "es7" + ] +} diff --git a/lib/node_modules/@stdlib/utils/property-descriptors/test/test.builtin.js b/lib/node_modules/@stdlib/utils/property-descriptors/test/test.builtin.js new file mode 100644 index 000000000000..e6232de5281d --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors/test/test.builtin.js @@ -0,0 +1,227 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var hasProxySupport = require( '@stdlib/assert/has-proxy-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var Proxy = require( '@stdlib/proxy/ctor' ); +var getOwnPropertyDescriptor = require( '@stdlib/utils/property-descriptor' ); +var getOwnPropertyDescriptors = require( './../lib/builtin.js' ); + + +// VARIABLES // + +var opts = { + 'skip': ( typeof Object.getOwnPropertyDescriptors === 'undefined' ) +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof getOwnPropertyDescriptors, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns own property descriptors', opts, function test( t ) { + var expected; + var actual; + var obj; + + function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + return this; + } + + Foo.prototype.foo = [ 'bar' ]; + + obj = new Foo(); + + expected = { + 'beep': { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'boop' + }, + 'a': { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': obj.a + }, + 'd': { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + } + }; + actual = getOwnPropertyDescriptors( obj ); + t.deepEqual( actual, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns an empty object if provided a non-string primitive or `null`', opts, function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + 3.14, + NaN, + true, + false, + void 0, + null + ]; + expected = {}; + + for ( i = 0; i < values.length; i++ ) { + actual = getOwnPropertyDescriptors( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); + +tape( 'the function supports symbols', opts, function test( t ) { + var expected; + var actual; + var obj; + var sym; + + if ( hasSymbolSupport() ) { + obj = {}; + sym = Symbol( 'beep' ); + obj[ sym ] = 'boop'; + + actual = getOwnPropertyDescriptors( obj ); + expected = {}; + expected[ sym ] = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'boop' + }; + t.deepEqual( actual, expected, 'returns expected value' ); + } else { + t.pass( 'environment does not support symbols' ); + } + t.end(); +}); + +tape( 'the function supports proxies', opts, function test( t ) { + var handlers; + var expected; + var actual; + var obj; + var o; + + if ( hasProxySupport() ) { + obj = { + 'foo': 'bar' + }; + handlers = { + 'getOwnPropertyDescriptor': propertyDescriptor, + 'ownKeys': ownKeys + }; + o = new Proxy( obj, handlers ); + + actual = getOwnPropertyDescriptors( o ); + expected = { + 'foo': { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'bar' + } + }; + t.deepEqual( actual, expected, 'returns expected value' ); + } else { + t.pass( 'environment does not support proxy objects' ); + } + t.end(); + + function propertyDescriptor( target, key ) { + var desc = getOwnPropertyDescriptor( target, key ); + return ( desc === null ) ? void 0 : desc; + } + + function ownKeys() { + return [ 'foo', 'bar' ]; + } +}); + +tape( 'the function supports proxies (symbols)', opts, function test( t ) { + var handlers; + var expected; + var actual; + var obj; + var sym; + var o; + + if ( hasProxySupport() && hasSymbolSupport() ) { + obj = {}; + sym = Symbol( 'foo' ); + obj[ sym ] = 'bar'; + handlers = { + 'getOwnPropertyDescriptor': propertyDescriptor, + 'ownKeys': ownKeys + }; + o = new Proxy( obj, handlers ); + + actual = getOwnPropertyDescriptors( o ); + expected = {}; + expected[ sym ] = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'boop' + }; + t.deepEqual( actual, expected, 'returns expected value' ); + } else { + t.pass( 'environment does not support proxy objects and/or symbols' ); + } + t.end(); + + function propertyDescriptor( target, key ) { + var desc = getOwnPropertyDescriptor( target, key ); + return ( desc === null ) ? void 0 : desc; + } + + function ownKeys() { + return [ sym, Symbol( 'bar' ) ]; + } +}); diff --git a/lib/node_modules/@stdlib/utils/property-descriptors/test/test.js b/lib/node_modules/@stdlib/utils/property-descriptors/test/test.js new file mode 100644 index 000000000000..ca5d78fcb052 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors/test/test.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var builtin = require( './../lib/builtin.js' ); +var polyfill = require( './../lib/polyfill.js' ); +var getOwnPropertyDescriptors = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof getOwnPropertyDescriptors, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'if an environment has a built-in implementation, the export is the built-in implementation', function test( t ) { + var getOwnPropertyDescriptors = proxyquire( './../lib/index.js', { + './has_builtin.js': true + }); + t.strictEqual( getOwnPropertyDescriptors, builtin, 'is expected value' ); + t.end(); +}); + +tape( 'if an environment does not have a built-in implementation, the export is a polyfill', function test( t ) { + var getOwnPropertyDescriptors = proxyquire( './../lib/index.js', { + './has_builtin.js': false + }); + t.strictEqual( getOwnPropertyDescriptors, polyfill, 'is expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/property-descriptors/test/test.polyfill.js b/lib/node_modules/@stdlib/utils/property-descriptors/test/test.polyfill.js new file mode 100644 index 000000000000..51f258ba260a --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors/test/test.polyfill.js @@ -0,0 +1,220 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var hasProxySupport = require( '@stdlib/assert/has-proxy-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var Proxy = require( '@stdlib/proxy/ctor' ); +var getOwnPropertyDescriptor = require( '@stdlib/utils/property-descriptor' ); +var getOwnPropertyDescriptors = require( './../lib/polyfill.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof getOwnPropertyDescriptors, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns own property descriptors', function test( t ) { + var expected; + var actual; + var obj; + + function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + return this; + } + + Foo.prototype.foo = [ 'bar' ]; + + obj = new Foo(); + + expected = { + 'beep': { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'boop' + }, + 'a': { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': obj.a + }, + 'd': { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + } + }; + actual = getOwnPropertyDescriptors( obj ); + t.deepEqual( actual, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns an empty object if provided a non-string primitive or `null`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + 3.14, + NaN, + true, + false, + void 0, + null + ]; + expected = {}; + + for ( i = 0; i < values.length; i++ ) { + actual = getOwnPropertyDescriptors( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); + +tape( 'the function supports symbols', function test( t ) { + var expected; + var actual; + var obj; + var sym; + + if ( hasSymbolSupport() ) { + obj = {}; + sym = Symbol( 'beep' ); + obj[ sym ] = 'boop'; + + actual = getOwnPropertyDescriptors( obj ); + expected = {}; + expected[ sym ] = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'boop' + }; + t.deepEqual( actual, expected, 'returns expected value' ); + } else { + t.pass( 'environment does not support symbols' ); + } + t.end(); +}); + +tape( 'the function supports proxies', function test( t ) { + var handlers; + var expected; + var actual; + var obj; + var o; + + if ( hasProxySupport() ) { + obj = { + 'foo': 'bar' + }; + handlers = { + 'getOwnPropertyDescriptor': propertyDescriptor, + 'ownKeys': ownKeys + }; + o = new Proxy( obj, handlers ); + + actual = getOwnPropertyDescriptors( o ); + expected = { + 'foo': { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'bar' + } + }; + t.deepEqual( actual, expected, 'returns expected value' ); + } else { + t.pass( 'environment does not support proxy objects' ); + } + t.end(); + + function propertyDescriptor( target, key ) { + var desc = getOwnPropertyDescriptor( target, key ); + return ( desc === null ) ? void 0 : desc; + } + + function ownKeys() { + return [ 'foo', 'bar' ]; + } +}); + +tape( 'the function supports proxies (symbols)', function test( t ) { + var handlers; + var expected; + var actual; + var obj; + var sym; + var o; + + if ( hasProxySupport() && hasSymbolSupport() ) { + obj = {}; + sym = Symbol( 'foo' ); + obj[ sym ] = 'bar'; + handlers = { + 'getOwnPropertyDescriptor': propertyDescriptor, + 'ownKeys': ownKeys + }; + o = new Proxy( obj, handlers ); + + actual = getOwnPropertyDescriptors( o ); + expected = {}; + expected[ sym ] = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'boop' + }; + t.deepEqual( actual, expected, 'returns expected value' ); + } else { + t.pass( 'environment does not support proxy objects and/or symbols' ); + } + t.end(); + + function propertyDescriptor( target, key ) { + var desc = getOwnPropertyDescriptor( target, key ); + return ( desc === null ) ? void 0 : desc; + } + + function ownKeys() { + return [ sym, Symbol( 'bar' ) ]; + } +}); From 0dc4f3123643974fce651f8c4066d0dcac640007 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 4 Sep 2018 16:57:39 -0700 Subject: [PATCH 0103/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 2eea99e13c0e..df0480484889 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1188,6 +1188,15 @@ setReadOnly( utils, 'prepend', require( '@stdlib/utils/prepend' ) ); */ setReadOnly( utils, 'propertyDescriptor', require( '@stdlib/utils/property-descriptor' ) ); +/** +* @name propertyDescriptors +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/property-descriptors} +*/ +setReadOnly( utils, 'propertyDescriptors', require( '@stdlib/utils/property-descriptors' ) ); + /** * @name propertyNames * @memberof utils From af585ebf5c5012c46805b5c0417922001d27c6e4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 4 Sep 2018 16:58:12 -0700 Subject: [PATCH 0104/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/p.js | 13 +++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 3 ++- lib/node_modules/@stdlib/repl/help/lib/db.js | 9 +++++---- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js index fc0308e21db8..896cf04c1311 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js @@ -286,6 +286,19 @@ ns.push({ ] }); +ns.push({ + 'alias': 'propertyDescriptors', + 'path': '@stdlib/utils/property-descriptors', + 'value': require( '@stdlib/utils/property-descriptors' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/define-property', + '@stdlib/utils/define-properties', + '@stdlib/utils/property-descriptor', + '@stdlib/utils/property-descriptors-in' + ] +}); + ns.push({ 'alias': 'propertyNames', 'path': '@stdlib/utils/property-names', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 3c1b398ccb11..3fb45e430038 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1391,6 +1391,7 @@ var db = { "pop": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\nout = pop( arr )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\nout = pop( arr )\n\n// Array-like object:\narr = { 'length': 2, '0': 1.0, '1': 2.0 };\nout = pop( arr )\n", "prepend": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\narr = prepend( arr, [ 6.0, 7.0 ] )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\narr = prepend( arr, [ 3.0, 4.0 ] )\n\n// Array-like object:\narr = { 'length': 1, '0': 1.0 };\narr = prepend( arr, [ 2.0, 3.0 ] )\n", "propertyDescriptor": "obj = { 'a': 'b' };\ndesc = propertyDescriptor( obj, 'a' )\n", + "propertyDescriptors": "obj = { 'a': 'b' };\ndesc = propertyDescriptors( obj )\n", "propertyNames": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = propertyNames( obj )\n", "propertyNamesIn": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = propertyNamesIn( obj )\n", "propertySymbols": "s = propertySymbols( {} )\n", @@ -1473,7 +1474,7 @@ var db = { "realmin": "m = realmin( 'float16' )\nm = realmin( 'float32' )\n", "reduce": "function sum( acc, v ) { return acc + v; };\narr = [ 1.0, 2.0, 3.0 ];\nout = reduce( arr, 0, sum )\n", "reduceAsync": "\n// Basic usage:\nfunction fcn( acc, value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n acc.sum += value;\n next( null, acc );\n }\n};\nfunction done( error, acc ) {\n if ( error ) {\n throw error;\n }\n console.log( acc.sum );\n};\narr = [ 3000, 2500, 1000 ];\nacc = { 'sum': 0 };\nreduceAsync( arr, acc, fcn, done )\n\n// Limit number of concurrent invocations:\nfunction fcn( acc, value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n acc.sum += value;\n next( null, acc );\n }\n};\nfunction done( error, acc ) {\n if ( error ) {\n throw error;\n }\n console.log( acc.sum );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\nacc = { 'sum': 0 };\nreduceAsync( arr, acc, opts, fcn, done )\n\n// Process concurrently:\nfunction fcn( acc, value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n acc.sum += value;\n next( null, acc );\n }\n};\nfunction done( error, acc ) {\n if ( error ) {\n throw error;\n }\n console.log( acc.sum );\n};\nopts = { 'series': false };\narr = [ 3000, 2500, 1000 ];\nacc = { 'sum': 0 };\nreduceAsync( arr, acc, opts, fcn, done )\n", - "reduceRight": "function sum( acc, v ) { console.log( '%s: %d', acc, v ); return acc + v; };\narr = [ 1.0, 2.0, 3.0 ];\nout = reduceRight( arr, 0, sum )\n", + "reduceRight": "function sum( acc, v ) {\n console.log( '%s: %d', acc, v );\n return acc + v;\n};\narr = [ 1.0, 2.0, 3.0 ];\nout = reduceRight( arr, 0, sum )\n", "reduceRightAsync": "\n// Basic usage:\nfunction fcn( acc, value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n acc.sum += value;\n next( null, acc );\n }\n};\nfunction done( error, acc ) {\n if ( error ) {\n throw error;\n }\n console.log( acc.sum );\n};\narr = [ 1000, 2500, 3000 ];\nacc = { 'sum': 0 };\nreduceRightAsync( arr, acc, fcn, done )\n\n// Limit number of concurrent invocations:\nfunction fcn( acc, value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n acc.sum += value;\n next( null, acc );\n }\n};\nfunction done( error, acc ) {\n if ( error ) {\n throw error;\n }\n console.log( acc.sum );\n};\nopts = { 'limit': 2 };\narr = [ 1000, 2500, 3000 ];\nacc = { 'sum': 0 };\nreduceRightAsync( arr, acc, opts, fcn, done )\n\n// Process concurrently:\nfunction fcn( acc, value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n acc.sum += value;\n next( null, acc );\n }\n};\nfunction done( error, acc ) {\n if ( error ) {\n throw error;\n }\n console.log( acc.sum );\n};\nopts = { 'series': false };\narr = [ 1000, 2500, 3000 ];\nacc = { 'sum': 0 };\nreduceRightAsync( arr, acc, opts, fcn, done )\n", "reFromString": "re = reFromString( '/beep/' )\nre = reFromString( '/beep' )\n", "reim": "z = new Complex128( 5.0, 3.0 );\nout = reim( z )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index f558eb27e416..4186c47f7636 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -959,8 +959,8 @@ var db = { "hasArrayBufferSupport": "\nhasArrayBufferSupport()\n Tests for native `ArrayBuffer` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has `ArrayBuffer` support.\n\n Examples\n --------\n > var bool = hasArrayBufferSupport()\n \n\n See Also\n --------\n hasFloat32ArraySupport, hasFloat64ArraySupport, hasInt16ArraySupport, hasInt32ArraySupport, hasInt8ArraySupport, hasNodeBufferSupport, hasSharedArrayBufferSupport, hasUint16ArraySupport, hasUint32ArraySupport, hasUint8ArraySupport, hasUint8ClampedArraySupport\n", "hasAsyncAwaitSupport": "\nhasAsyncAwaitSupport()\n Tests for native `async`/`await` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has native `async`/`await` support.\n\n Examples\n --------\n > var bool = hasAsyncAwaitSupport()\n \n\n", "hasClassSupport": "\nhasClassSupport()\n Tests for native `class` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has native `class` support.\n\n Examples\n --------\n > var bool = hasClassSupport()\n \n\n", - "hasDefinePropertiesSupport": "\nhasDefinePropertiesSupport()\n Tests for `Object.defineProperties` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has `Object.defineProperties` support.\n\n Examples\n --------\n > var bool = hasDefinePropertiesSupport()\n \n\n See Also\n --------\n hasDefinePropertySupport\n", - "hasDefinePropertySupport": "\nhasDefinePropertySupport()\n Tests for `Object.defineProperty` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has `Object.defineProperty` support.\n\n Examples\n --------\n > var bool = hasDefinePropertySupport()\n \n\n See Also\n --------\n hasDefinePropertiesSupport\n", + "hasDefinePropertiesSupport": "\nhasDefinePropertiesSupport()\n Tests for `Object.defineProperties` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has `Object.defineProperties`\n support.\n\n Examples\n --------\n > var bool = hasDefinePropertiesSupport()\n \n\n See Also\n --------\n hasDefinePropertySupport\n", + "hasDefinePropertySupport": "\nhasDefinePropertySupport()\n Tests for `Object.defineProperty` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has `Object.defineProperty`\n support.\n\n Examples\n --------\n > var bool = hasDefinePropertySupport()\n \n\n See Also\n --------\n hasDefinePropertiesSupport\n", "hasFloat32ArraySupport": "\nhasFloat32ArraySupport()\n Tests for native `Float32Array` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has `Float32Array` support.\n\n Examples\n --------\n > var bool = hasFloat32ArraySupport()\n \n\n", "hasFloat64ArraySupport": "\nhasFloat64ArraySupport()\n Tests for native `Float64Array` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has `Float64Array` support.\n\n Examples\n --------\n > var bool = hasFloat64ArraySupport()\n \n\n", "hasFunctionNameSupport": "\nhasFunctionNameSupport()\n Tests for native function `name` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has function `name` support.\n\n Examples\n --------\n > var bool = hasFunctionNameSupport()\n \n\n", @@ -1391,7 +1391,8 @@ var db = { "pluck": "\npluck( arr, prop[, options] )\n Extracts a property value from each element of an object array.\n\n The function skips `null` and `undefined` array elements.\n\n Extracted values are not cloned.\n\n Parameters\n ----------\n arr: Array\n Source array.\n\n prop: string\n Property to access.\n\n options: Object (optional)\n Options.\n\n options.copy: boolean (optional)\n Boolean indicating whether to return a new data structure. To mutate the\n input data structure (e.g., when input values can be discarded or when\n optimizing memory usage), set the `copy` option to `false`. Default:\n true.\n\n Returns\n -------\n out: Array\n Destination array.\n\n Examples\n --------\n > var arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > var out = pluck( arr, 'a' )\n [ 1, 0.5 ]\n\n > arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > out = pluck( arr, 'a', { 'copy': false } )\n [ 1, 0.5 ]\n > var bool = ( arr[ 0 ] === out[ 0 ] )\n true\n\n See Also\n --------\n deepPluck, pick\n", "pop": "\npop( collection )\n Removes and returns the last element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = pop( arr )\n [ [ 1.0, 2.0, 3.0, 4.0 ], 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = pop( arr )\n [ [ 1.0 ], 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = pop( arr )\n [ { 'length': 1, '0': 1.0 }, 2.0 ]\n\n See Also\n --------\n push, shift, unshift\n", "prepend": "\nprepend( collection1, collection2 )\n Adds the elements of one collection to the beginning of another collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection1: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n collection2: Array|TypedArray|Object\n A collection containing the elements to add. If the collection is an\n `Object`, the collection should be array-like.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = prepend( arr, [ 6.0, 7.0 ] )\n [ 6.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = prepend( arr, [ 3.0, 4.0 ] )\n [ 3.0, 4.0, 1.0, 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 1, '0': 1.0 };\n > arr = prepend( arr, [ 2.0, 3.0 ] )\n { 'length': 3, '0': 2.0, '1': 3.0, '2': 1.0 }\n\n See Also\n --------\n append, unshift\n", - "propertyDescriptor": "\npropertyDescriptor( value, property )\n Returns a property descriptor.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptor( obj, 'a' )\n {...}\n\n See Also\n --------\n defineProperty\n", + "propertyDescriptor": "\npropertyDescriptor( value, property )\n Returns a property descriptor.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptor( obj, 'a' )\n {...}\n\n See Also\n --------\n defineProperty, propertyDescriptors\n", + "propertyDescriptors": "\npropertyDescriptors( value )\n Returns an object's own property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n desc: Object\n Property descriptors.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptors( obj )\n { 'a': {...} }\n\n See Also\n --------\n defineProperty, defineProperties, propertyDescriptor\n", "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeys, propertyNamesIn, propertySymbols\n", "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeysIn, propertyNames, propertySymbolsIn\n", "propertySymbols": "\npropertySymbols( value )\n Returns an array of an object's own symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own symbol properties.\n\n Examples\n --------\n > var s = propertySymbols( {} )\n\n See Also\n --------\n propertyNames, propertySymbolsIn\n", @@ -1474,7 +1475,7 @@ var db = { "realmin": "\nrealmin( dtype )\n Returns the smallest positive normal value capable of being represented by a\n numeric real type.\n\n The following numeric real types are supported:\n\n - float64: double-precision floating-point numbers\n - float32: single-precision floating-point numbers\n - float16: half-precision floating-point numbers\n\n Parameters\n ----------\n dtype: string\n Numeric type.\n\n Returns\n -------\n out: number\n Smallest finite normal value.\n\n Examples\n --------\n > var m = realmin( 'float16' )\n 0.00006103515625\n > m = realmin( 'float32' )\n 1.1754943508222875e-38\n\n See Also\n --------\n realmax, typemin\n", "reduce": "\nreduce( collection, initial, reducer[, thisArg] )\n Applies a function against an accumulator and each element in a collection\n and returns the accumulated result.\n\n When invoked, the reduction function is provided four arguments:\n\n - `accumulator`: accumulated value\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n If provided an empty collection, the function returns the initial value.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection. If provided an object, the object must be array-like\n (excluding strings and functions).\n\n initial: any\n Accumulator value used in the first invocation of the reduction\n function.\n\n reducer: Function\n Function to invoke for each element in the input collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: any\n Accumulated result.\n\n Examples\n --------\n > function sum( acc, v ) { return acc + v; };\n > var arr = [ 1.0, 2.0, 3.0 ];\n > var out = reduce( arr, 0, sum )\n 6.0\n\n See Also\n --------\n forEach, reduceAsync, reduceRight\n", "reduceAsync": "\nreduceAsync( collection, initial, [options,] reducer, done )\n Applies a function against an accumulator and each element in a collection\n and returns the accumulated result.\n\n When invoked, `reducer` is provided a maximum of five arguments:\n\n - `accumulator`: accumulated value\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If\n `reducer` accepts three arguments, `reducer` is provided:\n\n - `accumulator`\n - `value`\n - `next`\n\n If `reducer` accepts four arguments, `reducer` is provided:\n\n - `accumulator`\n - `value`\n - `index`\n - `next`\n\n For every other `reducer` signature, `reducer` is provided all five\n arguments.\n\n The `next` callback accepts two arguments:\n\n - `error`: error argument\n - `accumulator`: accumulated value\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n If provided an empty collection, the function invokes the `done` callback\n with the `initial` value as the second argument.\n\n The function does not skip `undefined` elements.\n\n When processing collection elements concurrently, *beware* of race\n conditions when updating an accumulator. This is especially true when an\n accumulator is a primitive (e.g., a number). In general, prefer object\n accumulators.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n initial: any\n Accumulator value used in the first invocation of the reduction\n function.\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: true.\n\n options.thisArg: any (optional)\n Execution context.\n\n reducer: Function\n The function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function fcn( acc, value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... acc.sum += value;\n ... next( null, acc );\n ... }\n ... };\n > function done( error, acc ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( acc.sum );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > var acc = { 'sum': 0 };\n > reduceAsync( arr, acc, fcn, done )\n 3000\n 2500\n 1000\n 6500\n\n // Limit number of concurrent invocations:\n > function fcn( acc, value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... acc.sum += value;\n ... next( null, acc );\n ... }\n ... };\n > function done( error, acc ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( acc.sum );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > var acc = { 'sum': 0 };\n > reduceAsync( arr, acc, opts, fcn, done )\n 2500\n 3000\n 1000\n 6500\n\n // Process concurrently:\n > function fcn( acc, value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... acc.sum += value;\n ... next( null, acc );\n ... }\n ... };\n > function done( error, acc ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( acc.sum );\n ... };\n > var opts = { 'series': false };\n > var arr = [ 3000, 2500, 1000 ];\n > var acc = { 'sum': 0 };\n > reduceAsync( arr, acc, opts, fcn, done )\n 1000\n 2500\n 3000\n 6500\n\n\nreduceAsync.factory( [options,] fcn )\n Returns a function which applies a function against an accumulator and each\n element in a collection and returns the accumulated result.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: true.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which invokes a function for each element in a collection.\n\n Examples\n --------\n > function fcn( acc, value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... acc.sum += value;\n ... next( null, acc );\n ... }\n ... };\n > var opts = { 'series': false };\n > var f = reduceAsync.factory( opts, fcn );\n > function done( error, acc ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( acc.sum );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > var acc = { 'sum': 0 };\n > f( arr, acc, done )\n 1000\n 2500\n 3000\n 6500\n > acc = { 'sum': 0 };\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, acc, done )\n 1000\n 1500\n 2000\n 4500\n\n See Also\n --------\n forEachAsync, reduce, reduceRightAsync\n", - "reduceRight": "\nreduceRight( collection, initial, reducer[, thisArg] )\n Applies a function against an accumulator and each element in a collection\n and returns the accumulated result, iterating from right to left.\n\n When invoked, the reduction function is provided four arguments:\n\n - `accumulator`: accumulated value\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n If provided an empty collection, the function returns the initial value.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection. If provided an object, the object must be array-like\n (excluding strings and functions).\n\n initial: any\n Accumulator value used in the first invocation of the reduction\n function.\n\n reducer: Function\n Function to invoke for each element in the input collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: any\n Accumulated result.\n\n Examples\n --------\n > function sum( acc, v ) { console.log( '%s: %d', acc, v ); return acc + v; };\n > var arr = [ 1.0, 2.0, 3.0 ];\n > var out = reduceRight( arr, 0, sum )\n 2: 3.0\n 1: 2.0\n 0: 1.0\n 6.0\n\n See Also\n --------\n forEachRight, reduce, reduceRightAsync\n", + "reduceRight": "\nreduceRight( collection, initial, reducer[, thisArg] )\n Applies a function against an accumulator and each element in a collection\n and returns the accumulated result, iterating from right to left.\n\n When invoked, the reduction function is provided four arguments:\n\n - `accumulator`: accumulated value\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n If provided an empty collection, the function returns the initial value.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection. If provided an object, the object must be array-like\n (excluding strings and functions).\n\n initial: any\n Accumulator value used in the first invocation of the reduction\n function.\n\n reducer: Function\n Function to invoke for each element in the input collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: any\n Accumulated result.\n\n Examples\n --------\n > function sum( acc, v ) {\n ... console.log( '%s: %d', acc, v );\n ... return acc + v;\n ... };\n > var arr = [ 1.0, 2.0, 3.0 ];\n > var out = reduceRight( arr, 0, sum )\n 2: 3.0\n 1: 2.0\n 0: 1.0\n 6.0\n\n See Also\n --------\n forEachRight, reduce, reduceRightAsync\n", "reduceRightAsync": "\nreduceRightAsync( collection, initial, [options,] reducer, done )\n Applies a function against an accumulator and each element in a collection\n and returns the accumulated result, iterating from right to left.\n\n When invoked, `reducer` is provided a maximum of five arguments:\n\n - `accumulator`: accumulated value\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If\n `reducer` accepts three arguments, `reducer` is provided:\n\n - `accumulator`\n - `value`\n - `next`\n\n If `reducer` accepts four arguments, `reducer` is provided:\n\n - `accumulator`\n - `value`\n - `index`\n - `next`\n\n For every other `reducer` signature, `reducer` is provided all five\n arguments.\n\n The `next` callback accepts two arguments:\n\n - `error`: error argument\n - `accumulator`: accumulated value\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n If provided an empty collection, the function invokes the `done` callback\n with the `initial` value as the second argument.\n\n The function does not skip `undefined` elements.\n\n When processing collection elements concurrently, *beware* of race\n conditions when updating an accumulator. This is especially true when an\n accumulator is a primitive (e.g., a number). In general, prefer object\n accumulators.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n initial: any\n Accumulator value used in the first invocation of the reduction\n function.\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: true.\n\n options.thisArg: any (optional)\n Execution context.\n\n reducer: Function\n The function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function fcn( acc, value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... acc.sum += value;\n ... next( null, acc );\n ... }\n ... };\n > function done( error, acc ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( acc.sum );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > var acc = { 'sum': 0 };\n > reduceRightAsync( arr, acc, fcn, done )\n 3000\n 2500\n 1000\n 6500\n\n // Limit number of concurrent invocations:\n > function fcn( acc, value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... acc.sum += value;\n ... next( null, acc );\n ... }\n ... };\n > function done( error, acc ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( acc.sum );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > var acc = { 'sum': 0 };\n > reduceRightAsync( arr, acc, opts, fcn, done )\n 2500\n 3000\n 1000\n 6500\n\n // Process concurrently:\n > function fcn( acc, value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... acc.sum += value;\n ... next( null, acc );\n ... }\n ... };\n > function done( error, acc ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( acc.sum );\n ... };\n > var opts = { 'series': false };\n > var arr = [ 1000, 2500, 3000 ];\n > var acc = { 'sum': 0 };\n > reduceRightAsync( arr, acc, opts, fcn, done )\n 1000\n 2500\n 3000\n 6500\n\n\nreduceRightAsync.factory( [options,] fcn )\n Returns a function which applies a function against an accumulator and each\n element in a collection and returns the accumulated result, iterating from\n right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: true.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which invokes a function for each element in a collection.\n\n Examples\n --------\n > function fcn( acc, value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... acc.sum += value;\n ... next( null, acc );\n ... }\n ... };\n > var opts = { 'series': false };\n > var f = reduceRightAsync.factory( opts, fcn );\n > function done( error, acc ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( acc.sum );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > var acc = { 'sum': 0 };\n > f( arr, acc, done )\n 1000\n 2500\n 3000\n 6500\n > acc = { 'sum': 0 };\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, acc, done )\n 1000\n 1500\n 2000\n 4500\n\n See Also\n --------\n forEachRightAsync, reduceAsync, reduceRight\n", "reFromString": "\nreFromString( str )\n Parses a regular expression string and returns a new regular expression.\n\n Provided strings should be properly escaped.\n\n If unable to parse a string as a regular expression, the function returns\n `null`.\n\n Parameters\n ----------\n str: string\n Regular expression string.\n\n Returns\n -------\n out: RegExp|null\n Regular expression or null.\n\n Examples\n --------\n > var re = reFromString( '/beep/' )\n /beep/\n > re = reFromString( '/beep' )\n null\n\n", "reim": "\nreim( z )\n Returns the real and imaginary components of a complex number.\n\n Parameters\n ----------\n z: Complex\n Complex number.\n\n Returns\n -------\n out: Float64Array|Float32Array\n Array containing the real and imaginary components, respectively.\n\n Examples\n --------\n > var z = new Complex128( 5.0, 3.0 );\n > var out = reim( z )\n [ 5.0, 3.0 ]\n\n See Also\n --------\n imag, real\n", From 19dc015eb7ffb9a8d3e740b100bd401c2ecc607f Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 4 Sep 2018 17:19:07 -0700 Subject: [PATCH 0105/1062] Fix heading --- lib/node_modules/@stdlib/utils/property-names-in/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/property-names-in/lib/main.js b/lib/node_modules/@stdlib/utils/property-names-in/lib/main.js index 0308f74e7787..0a0add80c7f5 100644 --- a/lib/node_modules/@stdlib/utils/property-names-in/lib/main.js +++ b/lib/node_modules/@stdlib/utils/property-names-in/lib/main.js @@ -50,7 +50,7 @@ function contains( arr, v ) { /** * Returns an array of an object's own and inherited enumerable and non-enumerable property names. * -* ## Note +* ## Notes * * - In contrast to the built-in `Object.getOwnPropertyNames()`, this function returns an empty array if provided `undefined` or `null`, rather than throwing an error. * From 954bd8198b87731a77e891ba76ed0fd97b82f4ab Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 4 Sep 2018 17:19:25 -0700 Subject: [PATCH 0106/1062] Fix heading --- lib/node_modules/@stdlib/utils/property-symbols-in/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/property-symbols-in/lib/main.js b/lib/node_modules/@stdlib/utils/property-symbols-in/lib/main.js index 10daa155eb64..965d5c03d083 100644 --- a/lib/node_modules/@stdlib/utils/property-symbols-in/lib/main.js +++ b/lib/node_modules/@stdlib/utils/property-symbols-in/lib/main.js @@ -50,7 +50,7 @@ function contains( arr, v ) { /** * Returns an array of an object's own and inherited symbol properties. * -* ## Note +* ## Notes * * - In contrast to the built-in `Object.getOwnPropertySymbols()`, this function returns an empty array if provided `undefined` or `null`, rather than throwing an error. * From a556a0129dea45eea3ecfb96b3e249be23ebf27b Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 4 Sep 2018 17:47:27 -0700 Subject: [PATCH 0107/1062] Add utility to return an object's own and inherited property descriptors --- .../utils/property-descriptors-in/README.md | 104 +++++++++ .../benchmark/benchmark.js | 72 +++++++ .../property-descriptors-in/docs/repl.txt | 27 +++ .../property-descriptors-in/examples/index.js | 44 ++++ .../property-descriptors-in/lib/index.js | 43 ++++ .../utils/property-descriptors-in/lib/main.js | 104 +++++++++ .../property-descriptors-in/package.json | 70 ++++++ .../property-descriptors-in/test/test.js | 201 ++++++++++++++++++ 8 files changed, 665 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors-in/README.md create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors-in/package.json create mode 100644 lib/node_modules/@stdlib/utils/property-descriptors-in/test/test.js diff --git a/lib/node_modules/@stdlib/utils/property-descriptors-in/README.md b/lib/node_modules/@stdlib/utils/property-descriptors-in/README.md new file mode 100644 index 000000000000..217c24830ed7 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors-in/README.md @@ -0,0 +1,104 @@ + + +# propertyDescriptorsIn + +> Return an object's own and inherited [property descriptors][@stdlib/utils/property-descriptors]. + +
+ +## Usage + +```javascript +var propertyDescriptorsIn = require( '@stdlib/utils/property-descriptors-in' ); +``` + +#### propertyDescriptorsIn( obj ) + +Returns an object's own and inherited [property descriptors][@stdlib/utils/property-descriptors]. + +```javascript +var obj = { + 'a': 1, + 'b': 2 +}; + +var desc = propertyDescriptorsIn( obj ); +// returns { 'a': {...}, 'b': {...}, ... } +``` + +
+ + + +
+ +## Notes + +- In contrast to the built-in `Object.getOwnPropertyDescriptors()`, if provided `null` or `undefined`, the function returns an empty `object`, rather than throwing an error. + +
+ + + +
+ +## Examples + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var propertyDescriptorsIn = require( '@stdlib/utils/property-descriptors-in' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'value': 'qux', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; + +var obj = new Foo(); +var desc = propertyDescriptorsIn( obj ); + +console.log( desc ); +// => { 'beep': {...}, 'a': {...}, 'baz': {...}, 'foo': {...}, ... } +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/property-descriptors-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/property-descriptors-in/benchmark/benchmark.js new file mode 100644 index 000000000000..ee66d14350d2 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors-in/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isObject = require( '@stdlib/assert/is-object' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var propertyDescriptorsIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = propertyDescriptorsIn( obj ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isObject( out ) ) { + b.fail( 'should return an object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/property-descriptors-in/docs/repl.txt b/lib/node_modules/@stdlib/utils/property-descriptors-in/docs/repl.txt new file mode 100644 index 000000000000..af2e9cffcc25 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors-in/docs/repl.txt @@ -0,0 +1,27 @@ + +{{alias}}( value ) + Returns an object's own and inherited property descriptors. + + If provided `null` or `undefined`, the function returns an empty object. + + Parameters + ---------- + value: any + Input value. + + Returns + ------- + desc: Object + An object's own and inherited property descriptors. + + Examples + -------- + > function Foo() { this.beep = 'boop'; return this; }; + > Foo.prototype.foo = 'bar'; + > var obj = new Foo(); + > var desc = {{alias}}( obj ) + { 'beep': {...}, 'foo': {...}, ... } + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/property-descriptors-in/examples/index.js b/lib/node_modules/@stdlib/utils/property-descriptors-in/examples/index.js new file mode 100644 index 000000000000..d66d39954572 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors-in/examples/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var propertyDescriptorsIn = require( './../lib' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'value': 'qux', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; + +var obj = new Foo(); +var desc = propertyDescriptorsIn( obj ); + +console.log( desc ); +// => { 'beep': {...}, 'a': {...}, 'baz': {...}, 'foo': ..., ... } diff --git a/lib/node_modules/@stdlib/utils/property-descriptors-in/lib/index.js b/lib/node_modules/@stdlib/utils/property-descriptors-in/lib/index.js new file mode 100644 index 000000000000..f2383ef06408 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors-in/lib/index.js @@ -0,0 +1,43 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an object's own and inherited property descriptors. +* +* @module @stdlib/utils/property-descriptors-in +* +* @example +* var propertyDescriptorsIn = require( '@stdlib/utils/property-descriptors-in' ); +* +* var desc = propertyDescriptorsIn({ +* 'foo': 'bar', +* 'beep': 'boop' +* }); +* // returns { 'foo': {...}, 'beep': {...}, ... } +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/property-descriptors-in/lib/main.js b/lib/node_modules/@stdlib/utils/property-descriptors-in/lib/main.js new file mode 100644 index 000000000000..de3ddbebeb65 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors-in/lib/main.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getOwnPropertyDescriptors = require( '@stdlib/utils/property-descriptors' ); +var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); +var getKeys = require( '@stdlib/utils/keys' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); + + +// MAIN // + +/** +* Returns an object's own and inherited property descriptors. +* +* ## Notes +* +* - In contrast to the built-in `Object.getOwnPropertyDescriptors()`, this function returns an empty object if provided `undefined` or `null`, rather than throwing an error. +* +* @param {*} value - input object +* @returns {Object} own and inherited property descriptors +* +* @example +* var obj = { +* 'beep': 'boop', +* 'foo': 3.14 +* }; +* +* var desc = propertyDescriptorsIn( obj ); +* // returns { 'beep': {...}, 'foo': {...}, ... } +*/ +function propertyDescriptorsIn( value ) { + var desc; + var keys; + var obj; + var tmp; + var i; + + if ( value === null || value === void 0 ) { + return {}; + } + // Cast the value to an object: + obj = Object( value ); + + // Walk the prototype chain collecting all property descriptors... + desc = {}; + do { + tmp = getOwnPropertyDescriptors( obj ); + keys = getKeys( tmp ); + for ( i = 0; i < keys.length; i++ ) { + // The first encountered property descriptor for a property name always takes precedence... + if ( !hasOwnProp( desc, keys[ i ] ) ) { + // The following is equivalent to `desc[ keys[i] ] = {...}`, but accounts for the possibility of a "poisoned" `Object` prototype (i.e., an `Object.prototype` having a property with a setter which throws). + defineProperty( desc, keys[ i ], { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': tmp[ keys[ i ] ] + }); + } + } + keys = getOwnPropertySymbols( tmp ); + for ( i = 0; i < keys.length; i++ ) { + // The first encountered property descriptor for a symbol property always takes precedence... + if ( !hasOwnProp( desc, keys[ i ] ) ) { + // The following is equivalent to `desc[ keys[i] ] = {...}`, but accounts for the possibility of a "poisoned" `Object` prototype (i.e., an `Object.prototype` having a property with a setter which throws). + defineProperty( desc, keys[ i ], { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': tmp[ keys[ i ] ] + }); + } + } + obj = getPrototypeOf( obj ); + } while ( obj ); + + return desc; +} + + +// EXPORTS // + +module.exports = propertyDescriptorsIn; diff --git a/lib/node_modules/@stdlib/utils/property-descriptors-in/package.json b/lib/node_modules/@stdlib/utils/property-descriptors-in/package.json new file mode 100644 index 000000000000..6549205866a7 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors-in/package.json @@ -0,0 +1,70 @@ +{ + "name": "@stdlib/utils/property-descriptors-in", + "version": "0.0.0", + "description": "Return an object's own and inherited property descriptors.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "descriptors", + "descriptor", + "desc", + "descriptors-in", + "own", + "inherited", + "properties", + "props", + "es7" + ] +} diff --git a/lib/node_modules/@stdlib/utils/property-descriptors-in/test/test.js b/lib/node_modules/@stdlib/utils/property-descriptors-in/test/test.js new file mode 100644 index 000000000000..66d0da8c40d2 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptors-in/test/test.js @@ -0,0 +1,201 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var getKeys = require( '@stdlib/utils/keys' ); +var getSymbols = require( '@stdlib/utils/property-symbols' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var propertyDescriptorsIn = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof propertyDescriptorsIn, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns an object\'s own and inherited property descriptors', function test( t ) { + var expected; + var actual; + var keys; + var obj; + var i; + + function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'c', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + return this; + } + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'boop', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'beep' + }); + + obj = new Foo(); + + expected = { + 'beep': { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'boop' + }, + 'a': { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': obj.a + }, + 'c': { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }, + 'foo': { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': obj.foo + }, + 'boop': { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'beep' + } + }; + keys = getKeys( expected ); + + actual = propertyDescriptorsIn( obj ); + t.strictEqual( getKeys( actual ).length >= keys.length, true, 'has expected number of descriptors' ); + for ( i = 0; i < keys.length; i++ ) { + t.deepEqual( actual[ keys[i] ], expected[ keys[i] ], 'contains property descriptor for property: '+keys[i] ); + } + t.end(); +}); + +tape( 'the function returns an object\'s own and inherited property descriptors (symbols)', function test( t ) { + var expected; + var actual; + var keys; + var sym; + var obj; + var i; + + if ( hasSymbolSupport() === false ) { + t.pass( 'environment lacks Symbol support' ); + return t.end(); + } + sym = [ Symbol( 'a' ), Symbol( 'b' ), Symbol( 'c' ), Symbol( 'd' ) ]; + + function Foo() { + this[ sym[0] ] = 0; + defineProperty( this, sym[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 1 + }); + this[ sym[2] ] = 2; // duplicate symbol + return this; + } + + Foo.prototype[ sym[ 2 ] ] = -1; // duplicate symbol + defineProperty( Foo.prototype, sym[ 3 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 3 + }); + + obj = new Foo(); + + expected = {}; + expected[ sym[0] ] = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 0 + }; + expected[ sym[1] ] = { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 1 + }; + expected[ sym[2] ] = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 2 + }; + expected[ sym[3] ] = { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 3 + }; + keys = getSymbols( expected ); + + actual = propertyDescriptorsIn( obj ); + t.strictEqual( getSymbols( actual ).length >= keys.length, true, 'has expected number of descriptors' ); + for ( i = 0; i < keys.length; i++ ) { + t.deepEqual( actual[ keys[i] ], expected[ keys[i] ], 'contains property descriptor for property: '+keys[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an empty object if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = {}; + + for ( i = 0; i < values.length; i++ ) { + actual = propertyDescriptorsIn( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From cecb255fca0df6c387bb690ecb77d50fcda39e4a Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 4 Sep 2018 17:49:59 -0700 Subject: [PATCH 0108/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index df0480484889..1dd0004040c1 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1197,6 +1197,15 @@ setReadOnly( utils, 'propertyDescriptor', require( '@stdlib/utils/property-descr */ setReadOnly( utils, 'propertyDescriptors', require( '@stdlib/utils/property-descriptors' ) ); +/** +* @name propertyDescriptorsIn +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/property-descriptors-in} +*/ +setReadOnly( utils, 'propertyDescriptorsIn', require( '@stdlib/utils/property-descriptors-in' ) ); + /** * @name propertyNames * @memberof utils From 83c0b01a810f7c2cf665887002737651afb2d84f Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 4 Sep 2018 17:50:17 -0700 Subject: [PATCH 0109/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/p.js | 21 ++++++++++++++++++- .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 +++-- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js index 896cf04c1311..cd8e1e791b07 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js @@ -1,3 +1,5 @@ +/* eslint-disable max-lines */ + /** * @license Apache-2.0 * @@ -281,6 +283,7 @@ ns.push({ 'value': require( '@stdlib/utils/property-descriptor' ), 'type': 'Function', 'related': [ + '@stdlib/assert/has-own-property', '@stdlib/utils/define-property', '@stdlib/utils/property-descriptors' ] @@ -295,7 +298,23 @@ ns.push({ '@stdlib/utils/define-property', '@stdlib/utils/define-properties', '@stdlib/utils/property-descriptor', - '@stdlib/utils/property-descriptors-in' + '@stdlib/utils/property-descriptors-in', + '@stdlib/utils/property-names', + '@stdlib/utils/property-symbols' + ] +}); + +ns.push({ + 'alias': 'propertyDescriptorsIn', + 'path': '@stdlib/utils/property-descriptors-in', + 'value': require( '@stdlib/utils/property-descriptors-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/define-properties', + '@stdlib/utils/property-descriptor', + '@stdlib/utils/property-descriptors', + '@stdlib/utils/property-names-in', + '@stdlib/utils/property-symbols-in' ] }); diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 3fb45e430038..77cbb4cf7fa2 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1392,6 +1392,7 @@ var db = { "prepend": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\narr = prepend( arr, [ 6.0, 7.0 ] )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\narr = prepend( arr, [ 3.0, 4.0 ] )\n\n// Array-like object:\narr = { 'length': 1, '0': 1.0 };\narr = prepend( arr, [ 2.0, 3.0 ] )\n", "propertyDescriptor": "obj = { 'a': 'b' };\ndesc = propertyDescriptor( obj, 'a' )\n", "propertyDescriptors": "obj = { 'a': 'b' };\ndesc = propertyDescriptors( obj )\n", + "propertyDescriptorsIn": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\ndesc = propertyDescriptorsIn( obj )\n", "propertyNames": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = propertyNames( obj )\n", "propertyNamesIn": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = propertyNamesIn( obj )\n", "propertySymbols": "s = propertySymbols( {} )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 4186c47f7636..6ec5653c2ce2 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1391,8 +1391,9 @@ var db = { "pluck": "\npluck( arr, prop[, options] )\n Extracts a property value from each element of an object array.\n\n The function skips `null` and `undefined` array elements.\n\n Extracted values are not cloned.\n\n Parameters\n ----------\n arr: Array\n Source array.\n\n prop: string\n Property to access.\n\n options: Object (optional)\n Options.\n\n options.copy: boolean (optional)\n Boolean indicating whether to return a new data structure. To mutate the\n input data structure (e.g., when input values can be discarded or when\n optimizing memory usage), set the `copy` option to `false`. Default:\n true.\n\n Returns\n -------\n out: Array\n Destination array.\n\n Examples\n --------\n > var arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > var out = pluck( arr, 'a' )\n [ 1, 0.5 ]\n\n > arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > out = pluck( arr, 'a', { 'copy': false } )\n [ 1, 0.5 ]\n > var bool = ( arr[ 0 ] === out[ 0 ] )\n true\n\n See Also\n --------\n deepPluck, pick\n", "pop": "\npop( collection )\n Removes and returns the last element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = pop( arr )\n [ [ 1.0, 2.0, 3.0, 4.0 ], 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = pop( arr )\n [ [ 1.0 ], 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = pop( arr )\n [ { 'length': 1, '0': 1.0 }, 2.0 ]\n\n See Also\n --------\n push, shift, unshift\n", "prepend": "\nprepend( collection1, collection2 )\n Adds the elements of one collection to the beginning of another collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection1: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n collection2: Array|TypedArray|Object\n A collection containing the elements to add. If the collection is an\n `Object`, the collection should be array-like.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = prepend( arr, [ 6.0, 7.0 ] )\n [ 6.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = prepend( arr, [ 3.0, 4.0 ] )\n [ 3.0, 4.0, 1.0, 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 1, '0': 1.0 };\n > arr = prepend( arr, [ 2.0, 3.0 ] )\n { 'length': 3, '0': 2.0, '1': 3.0, '2': 1.0 }\n\n See Also\n --------\n append, unshift\n", - "propertyDescriptor": "\npropertyDescriptor( value, property )\n Returns a property descriptor.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptor( obj, 'a' )\n {...}\n\n See Also\n --------\n defineProperty, propertyDescriptors\n", - "propertyDescriptors": "\npropertyDescriptors( value )\n Returns an object's own property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n desc: Object\n Property descriptors.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptors( obj )\n { 'a': {...} }\n\n See Also\n --------\n defineProperty, defineProperties, propertyDescriptor\n", + "propertyDescriptor": "\npropertyDescriptor( value, property )\n Returns a property descriptor.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptor( obj, 'a' )\n {...}\n\n See Also\n --------\n hasOwnProp, defineProperty, propertyDescriptors\n", + "propertyDescriptors": "\npropertyDescriptors( value )\n Returns an object's own property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n desc: Object\n Property descriptors.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptors( obj )\n { 'a': {...} }\n\n See Also\n --------\n defineProperty, defineProperties, propertyDescriptor, propertyDescriptorsIn, propertyNames, propertySymbols\n", + "propertyDescriptorsIn": "\npropertyDescriptorsIn( value )\n Returns an object's own and inherited property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n desc: Object\n An object's own and inherited property descriptors.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var desc = propertyDescriptorsIn( obj )\n { 'beep': {...}, 'foo': {...}, ... }\n\n See Also\n --------\n defineProperties, propertyDescriptor, propertyDescriptors, propertyNamesIn, propertySymbolsIn\n", "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeys, propertyNamesIn, propertySymbols\n", "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeysIn, propertyNames, propertySymbolsIn\n", "propertySymbols": "\npropertySymbols( value )\n Returns an array of an object's own symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own symbol properties.\n\n Examples\n --------\n > var s = propertySymbols( {} )\n\n See Also\n --------\n propertyNames, propertySymbolsIn\n", From f609705d175c8a59c7c44914a47afd788d1d3bf3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 4 Sep 2018 18:42:58 -0700 Subject: [PATCH 0110/1062] Add utility to return an object's inherited property descriptors --- .../inherited-property-descriptors/README.md | 136 +++++++ .../benchmark/benchmark.js | 72 ++++ .../docs/repl.txt | 30 ++ .../examples/index.js | 44 ++ .../lib/index.js | 40 ++ .../lib/main.js | 114 ++++++ .../package.json | 68 ++++ .../test/test.js | 378 ++++++++++++++++++ 8 files changed, 882 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-descriptors/README.md create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-descriptors/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-descriptors/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-descriptors/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-descriptors/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-descriptors/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-descriptors/package.json create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-descriptors/test/test.js diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptors/README.md b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/README.md new file mode 100644 index 000000000000..ca19853c7383 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/README.md @@ -0,0 +1,136 @@ + + +# inheritedPropertyDescriptors + +> Return an object's inherited [property descriptors][@stdlib/utils/property-descriptors]. + +
+ +## Usage + + + +```javascript +var inheritedPropertyDescriptors = require( '@stdlib/utils/inherited-property-descriptors' ); +``` + +#### inheritedPropertyDescriptors( obj\[, level] ) + +Returns an object's inherited [property descriptors][@stdlib/utils/property-descriptors]. + +```javascript +function Foo() { + this.a = 'b'; + return this; +} + +Foo.prototype.beep = 'boop'; + +var f = new Foo(); +var desc = inheritedPropertyDescriptors( f ); +// returns { 'beep': {...}, ... } +``` + +By default, the function walks an object's entire prototype chain. To limit the inheritance level, provide a `level` argument. + +```javascript +var inherit = require( '@stdlib/utils/inherit' ); + +function Bar() { + return this; +} + +Bar.prototype.boop = 'beep'; + +function Foo() { + Bar.call( this ); + this.a = 'b'; + return this; +} + +inherit( Foo, Bar ); +Foo.prototype.beep = 'boop'; + +var f = new Foo(); +var desc = inheritedPropertyDescriptors( f, 1 ); +// returns { 'beep': {...}, ... } +``` + +
+ + + +
+ +## Notes + +- In contrast to the built-in `Object.getOwnPropertyDescriptors()`, if provided `null` or `undefined`, the function returns an empty `object`, rather than throwing an error. + +
+ + + +
+ +## Examples + + + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var inheritedPropertyDescriptors = require( '@stdlib/utils/inherited-property-descriptors' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'value': 'qux', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; + +var obj = new Foo(); +var desc = inheritedPropertyDescriptors( obj ); + +console.log( desc ); +// => { 'foo': {...}, ... } +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptors/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/benchmark/benchmark.js new file mode 100644 index 000000000000..403d738b9f71 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isObject = require( '@stdlib/assert/is-object' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var inheritedPropertyDescriptors = require( './../lib' ); // eslint-disable-line id-length + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = inheritedPropertyDescriptors( obj ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isObject( out ) ) { + b.fail( 'should return an object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptors/docs/repl.txt b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/docs/repl.txt new file mode 100644 index 000000000000..035e35815895 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/docs/repl.txt @@ -0,0 +1,30 @@ + +{{alias}}( value[, level] ) + Returns an object's inherited property descriptors. + + If provided `null` or `undefined`, the function returns an empty object. + + Parameters + ---------- + value: any + Input value. + + level: integer (optional) + Inheritance level. + + Returns + ------- + desc: Object + An object's inherited property descriptors. + + Examples + -------- + > function Foo() { this.beep = 'boop'; return this; }; + > Foo.prototype.foo = 'bar'; + > var obj = new Foo(); + > var desc = {{alias}}( obj ) + { 'foo': {...}, ... } + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptors/examples/index.js b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/examples/index.js new file mode 100644 index 000000000000..996b67e8681d --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/examples/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var inheritedPropertyDescriptors = require( './../lib' ); // eslint-disable-line id-length + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'value': 'qux', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; + +var obj = new Foo(); +var desc = inheritedPropertyDescriptors( obj ); + +console.log( desc ); +// => { 'foo': ..., ... } diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptors/lib/index.js b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/lib/index.js new file mode 100644 index 000000000000..40190404df1a --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/lib/index.js @@ -0,0 +1,40 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an object's inherited property descriptors. +* +* @module @stdlib/utils/inherited-property-descriptors +* +* @example +* var inheritedPropertyDescriptors = require( '@stdlib/utils/property-descriptors' ); +* +* var desc = inheritedPropertyDescriptors( [] ); +* // returns {...} +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptors/lib/main.js b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/lib/main.js new file mode 100644 index 000000000000..88f7330c8177 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/lib/main.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var MAX_SAFE_INTEGER = require( '@stdlib/constants/math/float64-max-safe-integer' ); +var isPositiveInteger = require( '@stdlib/assert/is-positive-integer' ).isPrimitive; +var getOwnPropertyDescriptors = require( '@stdlib/utils/property-descriptors' ); +var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); +var getKeys = require( '@stdlib/utils/keys' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); + + +// MAIN // + +/** +* Returns an object's inherited property descriptors. +* +* ## Notes +* +* - In contrast to the built-in `Object.getOwnPropertyDescriptors()`, this function returns an empty object if provided `undefined` or `null`, rather than throwing an error. +* +* @param {*} value - input object +* @param {PositiveInteger} [level] - inheritance level +* @throws {TypeError} second argument must be a positive integer +* @returns {Object} inherited property descriptors +* +* @example +* var desc = inheritedPropertyDescriptors( [] ); +* // returns {...} +*/ +function inheritedPropertyDescriptors( value, level ) { // eslint-disable-line id-length + var desc; + var keys; + var obj; + var tmp; + var N; + var n; + var i; + + if ( arguments.length > 1 ) { + if ( !isPositiveInteger( level ) ) { + throw new TypeError( 'invalid argument. Second argument must be a positive integer. Value: `' + level + '`.' ); + } + N = level; + } else { + N = MAX_SAFE_INTEGER; + } + if ( value === null || value === void 0 ) { + return {}; + } + // Get the value's prototype: + obj = getPrototypeOf( value ); + + // Walk the prototype chain collecting all property descriptors... + desc = {}; + n = 1; + while ( obj && n <= N ) { + tmp = getOwnPropertyDescriptors( obj ); + keys = getKeys( tmp ); + for ( i = 0; i < keys.length; i++ ) { + // The first encountered property descriptor for a property name always takes precedence... + if ( !hasOwnProp( desc, keys[ i ] ) ) { + // The following is equivalent to `desc[ keys[i] ] = {...}`, but accounts for the possibility of a "poisoned" `Object` prototype (i.e., an `Object.prototype` having a property with a setter which throws). + defineProperty( desc, keys[ i ], { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': tmp[ keys[ i ] ] + }); + } + } + keys = getOwnPropertySymbols( tmp ); + for ( i = 0; i < keys.length; i++ ) { + // The first encountered property descriptor for a symbol property always takes precedence... + if ( !hasOwnProp( desc, keys[ i ] ) ) { + // The following is equivalent to `desc[ keys[i] ] = {...}`, but accounts for the possibility of a "poisoned" `Object` prototype (i.e., an `Object.prototype` having a property with a setter which throws). + defineProperty( desc, keys[ i ], { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': tmp[ keys[ i ] ] + }); + } + } + obj = getPrototypeOf( obj ); + n += 1; + } + return desc; +} + + +// EXPORTS // + +module.exports = inheritedPropertyDescriptors; diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptors/package.json b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/package.json new file mode 100644 index 000000000000..011e5242d3b0 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/package.json @@ -0,0 +1,68 @@ +{ + "name": "@stdlib/utils/inherited-property-descriptors", + "version": "0.0.0", + "description": "Return an object's inherited property descriptors.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "descriptors", + "descriptor", + "desc", + "inherited", + "properties", + "props", + "es7" + ] +} diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptors/test/test.js b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/test/test.js new file mode 100644 index 000000000000..07c245715d36 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/test/test.js @@ -0,0 +1,378 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var getKeys = require( '@stdlib/utils/keys' ); +var getSymbols = require( '@stdlib/utils/property-symbols' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var inherit = require( '@stdlib/utils/inherit' ); +var inheritedPropertyDescriptors = require( './../lib' ); // eslint-disable-line id-length + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof inheritedPropertyDescriptors, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function throws an error if not provided a positive integer for the inheritance level', function test( t ) { + var values; + var i; + + values = [ + '5', + -5, + 0, + 3.14, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + inheritedPropertyDescriptors( {}, value ); + }; + } +}); + +tape( 'the function returns an object\'s inherited property descriptors', function test( t ) { + var expected; + var actual; + var keys; + var obj; + var i; + + function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'c', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + return this; + } + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'boop', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'beep' + }); + + obj = new Foo(); + + expected = { + 'foo': { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': obj.foo + }, + 'boop': { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'beep' + } + }; + keys = getKeys( expected ); + + actual = inheritedPropertyDescriptors( obj ); + t.strictEqual( getKeys( actual ).length >= keys.length, true, 'has expected number of descriptors' ); + for ( i = 0; i < keys.length; i++ ) { + t.deepEqual( actual[ keys[i] ], expected[ keys[i] ], 'contains property descriptor for property: '+keys[i] ); + } + t.end(); +}); + +tape( 'the function returns an object\'s inherited property descriptors (multiple inheritance)', function test( t ) { + var expected; + var actual; + var keys; + var obj; + var i; + + function Bar() { + this.boop = 'beep'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + Bar.prototype.foo = 3.14; + Bar.prototype.bar = [ 'foo' ]; + defineProperty( Bar.prototype, 'bap', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'baz' + }); + + function Foo() { + Bar.call( this ); + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'c', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'boop', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'beep' + }); + + obj = new Foo(); + + expected = { + 'foo': { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': obj.foo + }, + 'boop': { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'beep' + }, + 'bar': { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': obj.bar + }, + 'bap': { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'baz' + } + }; + keys = getKeys( expected ); + + actual = inheritedPropertyDescriptors( obj ); + t.strictEqual( getKeys( actual ).length >= keys.length, true, 'has expected number of descriptors' ); + for ( i = 0; i < keys.length; i++ ) { + t.deepEqual( actual[ keys[i] ], expected[ keys[i] ], 'contains property descriptor for property: '+keys[i] ); + } + t.end(); +}); + +tape( 'the function returns an object\'s inherited property descriptors (symbols)', function test( t ) { + var expected; + var actual; + var keys; + var sym; + var obj; + var i; + + if ( hasSymbolSupport() === false ) { + t.pass( 'environment lacks Symbol support' ); + return t.end(); + } + sym = [ Symbol( 'a' ), Symbol( 'b' ), Symbol( 'c' ), Symbol( 'd' ) ]; + + function Bar() { + this[ sym[0] ] = 0; + return this; + } + + Bar.prototype[ sym[ 2 ] ] = 2; // duplicate symbol + + function Foo() { + this[ sym[1] ] = 1; + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype[ sym[ 2 ] ] = -1; // duplicate symbol + defineProperty( Foo.prototype, sym[ 3 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 3 + }); + + obj = new Foo(); + + expected = {}; + expected[ sym[2] ] = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': -1 + }; + expected[ sym[3] ] = { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 3 + }; + keys = getSymbols( expected ); + + actual = inheritedPropertyDescriptors( obj ); + t.strictEqual( getSymbols( actual ).length >= keys.length, true, 'has expected number of descriptors' ); + for ( i = 0; i < keys.length; i++ ) { + t.deepEqual( actual[ keys[i] ], expected[ keys[i] ], 'contains property descriptor for property: '+keys[i].toString() ); + } + t.end(); +}); + +tape( 'the function supports limiting the inheritance level', function test( t ) { + var expected; + var actual; + var keys; + var obj; + var i; + + function Bar() { + this.boop = 'beep'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + return this; + } + + Bar.prototype.foo = 3.14; + Bar.prototype.bar = [ 'foo' ]; + defineProperty( Bar.prototype, 'bap', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'baz' + }); + + function Foo() { + Bar.call( this ); + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'c', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'boop', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'beep' + }); + + obj = new Foo(); + + expected = { + 'foo': { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': obj.foo + }, + 'boop': { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'beep' + } + }; + keys = getKeys( expected ); + + actual = inheritedPropertyDescriptors( obj, 1 ); + t.strictEqual( getKeys( actual ).length >= keys.length, true, 'has expected number of descriptors' ); + for ( i = 0; i < keys.length; i++ ) { + t.deepEqual( actual[ keys[i] ], expected[ keys[i] ], 'contains property descriptor for property: '+keys[i] ); + } + t.end(); +}); + +tape( 'the function returns an empty object if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = {}; + + for ( i = 0; i < values.length; i++ ) { + actual = inheritedPropertyDescriptors( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From df9c9f3dd6bb3550974a18e3017dfffac57ec712 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 4 Sep 2018 18:46:58 -0700 Subject: [PATCH 0111/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 1dd0004040c1..121b5110e8fb 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -774,6 +774,15 @@ setReadOnly( utils, 'inherit', require( '@stdlib/utils/inherit' ) ); */ setReadOnly( utils, 'inheritedKeys', require( '@stdlib/utils/inherited-keys' ) ); +/** +* @name inheritedPropertyDescriptors +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/inherited-property-descriptors} +*/ +setReadOnly( utils, 'inheritedPropertyDescriptors', require( '@stdlib/utils/inherited-property-descriptors' ) ); + /** * @name inheritedPropertyNames * @memberof utils From 8e747509f201df3941ed4376431bd1b5a88d3980 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 4 Sep 2018 18:47:27 -0700 Subject: [PATCH 0112/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 26 ++++++++++++++++--- .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 ++-- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index f6e4447730d7..0ada539bc277 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -1363,16 +1363,31 @@ ns.push({ ] }); +ns.push({ + 'alias': 'inheritedPropertyDescriptors', + 'path': '@stdlib/utils/inherited-property-descriptors', + 'value': require( '@stdlib/utils/inherited-property-descriptors' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/property-descriptors', + '@stdlib/utils/property-descriptors-in', + '@stdlib/utils/inherited-keys', + '@stdlib/utils/inherited-property-names', + '@stdlib/utils/inherited-property-symbols' + ] +}); + ns.push({ 'alias': 'inheritedPropertyNames', 'path': '@stdlib/utils/inherited-property-names', 'value': require( '@stdlib/utils/inherited-property-names' ), 'type': 'Function', 'related': [ - '@stdlib/utils/keys', - '@stdlib/utils/keys-in', '@stdlib/utils/inherited-keys', - '@stdlib/utils/inherited-property-symbols' + '@stdlib/utils/inherited-property-descriptors', + '@stdlib/utils/inherited-property-symbols', + '@stdlib/utils/property-names', + '@stdlib/utils/property-names-in' ] }); @@ -1383,7 +1398,10 @@ ns.push({ 'type': 'Function', 'related': [ '@stdlib/utils/inherited-keys', - '@stdlib/utils/inherited-property-names' + '@stdlib/utils/inherited-property-descriptors', + '@stdlib/utils/inherited-property-names', + '@stdlib/utils/property-symbols', + '@stdlib/utils/property-symbols-in' ] }); diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 77cbb4cf7fa2..ea6325715da2 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1101,6 +1101,7 @@ var db = { "indexOf": "\n// Basic usage:\narr = [ 4, 3, 2, 1 ];\nidx = indexOf( arr, 3 )\narr = [ 4, 3, 2, 1 ];\nidx = indexOf( arr, 5 )\n\n// Using a `fromIndex`:\narr = [ 1, 2, 3, 4, 5, 2, 6 ];\nidx = indexOf( arr, 2, 3 )\n\n// `fromIndex` which exceeds `array` length:\narr = [ 1, 2, 3, 4, 2, 5 ];\nidx = indexOf( arr, 2, 10 )\n\n// Negative `fromIndex`:\narr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];\nidx = indexOf( arr, 2, -4 )\nidx = indexOf( arr, 2, -1 )\n\n// Negative `fromIndex` exceeding input `array` length:\narr = [ 1, 2, 3, 4, 5, 2, 6 ];\nidx = indexOf( arr, 2, -10 )\n\n// Array-like objects:\nstr = 'bebop';\nidx = indexOf( str, 'o' )\n", "inherit": "\n// Create a parent constructor:\nfunction Foo() { return this; };\nFoo.prototype.beep = function beep() { return 'boop'; };\n\n// Create a child constructor:\nfunction Bar() { Foo.call( this ); return this; };\n\n// Setup inheritance:\ninherit( Bar, Foo );\nbar = new Bar();\nv = bar.beep()\n", "inheritedKeys": "keys = inheritedKeys( {} )\n", + "inheritedPropertyDescriptors": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\ndesc = inheritedPropertyDescriptors( obj )\n", "inheritedPropertyNames": "keys = inheritedPropertyNames( [] )\n", "inheritedPropertySymbols": "symbols = inheritedPropertySymbols( [] )\n", "inmap": "function foo( v, i ) { return v * i; };\narr = [ 1.0, 2.0, 3.0 ];\nout = inmap( arr, foo )\nbool = ( out === arr )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 6ec5653c2ce2..cf44f4581e83 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1101,8 +1101,9 @@ var db = { "indexOf": "\nindexOf( arr, searchElement[, fromIndex] )\n Returns the first index at which a given element can be found.\n\n Search is performed using *strict equality* comparison.\n\n Parameters\n ----------\n arr: ArrayLike\n Array-like object.\n\n searchElement: any\n Element to find.\n\n fromIndex: integer (optional)\n Starting index (if negative, the start index is determined relative to\n last element).\n\n Returns\n -------\n out: integer\n Index or -1.\n\n Examples\n --------\n // Basic usage:\n > var arr = [ 4, 3, 2, 1 ];\n > var idx = indexOf( arr, 3 )\n 1\n > arr = [ 4, 3, 2, 1 ];\n > idx = indexOf( arr, 5 )\n -1\n\n // Using a `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, 3 )\n 5\n\n // `fromIndex` which exceeds `array` length:\n > arr = [ 1, 2, 3, 4, 2, 5 ];\n > idx = indexOf( arr, 2, 10 )\n -1\n\n // Negative `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];\n > idx = indexOf( arr, 2, -4 )\n 5\n > idx = indexOf( arr, 2, -1 )\n 7\n\n // Negative `fromIndex` exceeding input `array` length:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, -10 )\n 1\n\n // Array-like objects:\n > var str = 'bebop';\n > idx = indexOf( str, 'o' )\n 3\n\n", "inherit": "\ninherit( ctor, superCtor )\n Prototypical inheritance by replacing the prototype of one constructor with\n the prototype of another constructor.\n\n This function is not designed to work with ES2015/ES6 classes. For\n ES2015/ES6 classes, use `class` with `extends`.\n\n Parameters\n ----------\n ctor: Object|Function\n Constructor which will inherit.\n\n superCtor: Object|Function\n Super (parent) constructor.\n\n Returns\n -------\n out: Object|Function\n Child constructor.\n\n Examples\n --------\n // Create a parent constructor:\n > function Foo() { return this; };\n > Foo.prototype.beep = function beep() { return 'boop'; };\n\n // Create a child constructor:\n > function Bar() { Foo.call( this ); return this; };\n\n // Setup inheritance:\n > inherit( Bar, Foo );\n > var bar = new Bar();\n > var v = bar.beep()\n 'boop'\n\n", "inheritedKeys": "\ninheritedKeys( value[, level] )\n Returns an array of an object's inherited enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable property names.\n\n Examples\n --------\n > var keys = inheritedKeys( {} )\n\n See Also\n --------\n objectKeys, keysIn, inheritedPropertyNames, inheritedPropertySymbols\n", - "inheritedPropertyNames": "\ninheritedPropertyNames( value[, level] )\n Returns an array of an object's inherited enumerable and non-enumerable\n property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable and non-enumerable property\n names.\n\n Examples\n --------\n > var keys = inheritedPropertyNames( [] )\n\n See Also\n --------\n objectKeys, keysIn, inheritedKeys, inheritedPropertySymbols\n", - "inheritedPropertySymbols": "\ninheritedPropertySymbols( value[, level] )\n Returns an array of an object's inherited symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited symbol properties.\n\n Examples\n --------\n > var symbols = inheritedPropertySymbols( [] )\n\n See Also\n --------\n inheritedKeys, inheritedPropertyNames\n", + "inheritedPropertyDescriptors": "\ninheritedPropertyDescriptors( value[, level] )\n Returns an object's inherited property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n desc: Object\n An object's inherited property descriptors.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var desc = inheritedPropertyDescriptors( obj )\n { 'foo': {...}, ... }\n\n See Also\n --------\n propertyDescriptors, propertyDescriptorsIn, inheritedKeys, inheritedPropertyNames, inheritedPropertySymbols\n", + "inheritedPropertyNames": "\ninheritedPropertyNames( value[, level] )\n Returns an array of an object's inherited enumerable and non-enumerable\n property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable and non-enumerable property\n names.\n\n Examples\n --------\n > var keys = inheritedPropertyNames( [] )\n\n See Also\n --------\n inheritedKeys, inheritedPropertyDescriptors, inheritedPropertySymbols, propertyNames, propertyNamesIn\n", + "inheritedPropertySymbols": "\ninheritedPropertySymbols( value[, level] )\n Returns an array of an object's inherited symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited symbol properties.\n\n Examples\n --------\n > var symbols = inheritedPropertySymbols( [] )\n\n See Also\n --------\n inheritedKeys, inheritedPropertyDescriptors, inheritedPropertyNames, propertySymbols, propertySymbolsIn\n", "inmap": "\ninmap( collection, fcn[, thisArg] )\n Invokes a function for each element in a collection and updates the\n collection in-place.\n\n When invoked, the input function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection. If provided an object, the object must be array-like\n (excluding strings and functions).\n\n fcn: Function\n Function to invoke for each element in the input collection. The\n function's return value is used to update the collection in-place.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function foo( v, i ) { return v * i; };\n > var arr = [ 1.0, 2.0, 3.0 ];\n > var out = inmap( arr, foo )\n [ 0.0, 2.0, 6.0 ]\n > var bool = ( out === arr )\n true\n\n See Also\n --------\n forEach, inmapRight\n", "inmapAsync": "\ninmapAsync( collection, [options,] fcn, done )\n Invokes a function once for each element in a collection and updates a\n collection in-place.\n\n When invoked, `fcn` is provided a maximum of four arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If `fcn`\n accepts two arguments, `fcn` is provided:\n\n - `value`\n - `next`\n\n If `fcn` accepts three arguments, `fcn` is provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other `fcn` signature, `fcn` is provided all four arguments.\n\n The `next` callback accepts two arguments:\n\n - `error`: error argument\n - `result`: value used to update the collection\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling. Note, however, that the function\n may have mutated an input collection during prior invocations, resulting in\n a partially mutated collection.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > inmapAsync( arr, fcn, done )\n 1000\n 2500\n 3000\n true\n [ 0, 2500, 2000 ]\n\n // Limit number of concurrent invocations:\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > inmapAsync( arr, opts, fcn, done )\n 2500\n 3000\n 1000\n true\n [ 0, 2500, 2000 ]\n\n // Process sequentially:\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > inmapAsync( arr, opts, fcn, done )\n 3000\n 2500\n 1000\n true\n [ 0, 2500, 2000 ]\n\n\ninmapAsync.factory( [options,] fcn )\n Returns a function which invokes a function once for each element in a\n collection and updates a collection in-place.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which invokes a function for each element in a collection.\n\n Examples\n --------\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = inmapAsync.factory( opts, fcn );\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n [ 0, 2500, 2000 ]\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n [ 0, 1500, 2000 ]\n\n See Also\n --------\n forEachAsync, inmap, inmapRightAsync\n", "inmapRight": "\ninmapRight( collection, fcn[, thisArg] )\n Invokes a function for each element in a collection and updates the\n collection in-place, iterating from right to left.\n\n When invoked, the input function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection. If provided an object, the object must be array-like\n (excluding strings and functions).\n\n fcn: Function\n Function to invoke for each element in the input collection. The\n function's return value is used to update the collection in-place.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function foo( v, i ) { console.log( '%s: %d', i, v ); return v * i; };\n > var arr = [ 1.0, 2.0, 3.0 ];\n > var out = inmapRight( arr, foo )\n 2: 3.0\n 1: 2.0\n 0: 1.0\n [ 0.0, 2.0, 6.0 ]\n > var bool = ( out === arr )\n true\n\n See Also\n --------\n forEachRight, inmap\n", From 536d4e51777947c12510107bbb8594b23fdfbf2b Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 02:20:12 -0700 Subject: [PATCH 0113/1062] Fix heading --- lib/node_modules/@stdlib/utils/keys/lib/builtin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/keys/lib/builtin.js b/lib/node_modules/@stdlib/utils/keys/lib/builtin.js index b6eacbbf372d..dff03f753303 100644 --- a/lib/node_modules/@stdlib/utils/keys/lib/builtin.js +++ b/lib/node_modules/@stdlib/utils/keys/lib/builtin.js @@ -23,7 +23,7 @@ /** * Returns an array of an object's own enumerable property names. * -* ## Note +* ## Notes * * - In contrast to the built-in `Object.keys()`, this function returns an empty array if provided `undefined` or `null`, rather than throwing an error. * From a8a62de9f32fb33e33aace2c97c49bbb1ffa29a9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 17:24:10 -0700 Subject: [PATCH 0114/1062] Add assertion utility to test if an object property is writable --- .../assert/is-writable-property/README.md | 148 ++++++++++++++++++ .../benchmark/benchmark.js | 51 ++++++ .../assert/is-writable-property/docs/repl.txt | 34 ++++ .../is-writable-property/examples/index.js | 59 +++++++ .../assert/is-writable-property/lib/index.js | 55 +++++++ .../assert/is-writable-property/lib/main.js | 69 ++++++++ .../assert/is-writable-property/package.json | 71 +++++++++ .../assert/is-writable-property/test/test.js | 139 ++++++++++++++++ 8 files changed, 626 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-writable-property/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-writable-property/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-writable-property/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-writable-property/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-writable-property/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-writable-property/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-writable-property/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-writable-property/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-writable-property/README.md b/lib/node_modules/@stdlib/assert/is-writable-property/README.md new file mode 100644 index 000000000000..bba24889e06f --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-writable-property/README.md @@ -0,0 +1,148 @@ + + +# isWritableProperty + +> Test if an object's own property is writable. + +
+ +## Usage + +```javascript +var isWritableProperty = require( '@stdlib/assert/is-writable-property' ); +``` + +#### isWritableProperty( value, property ) + +Returns a `boolean` indicating if a `value` has a writable `property`. + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = { + 'foo': 'bar' +}; + +defineProperty( obj, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); + +defineProperty( obj, 'setter', { + 'configurable': false, + 'enumerable': false, + 'set': function setter( v ) { + obj.foo = v; + } +}); + +var bool = isWritableProperty( obj, 'foo' ); +// returns true + +bool = isWritableProperty( obj, 'setter' ); +// returns true + +bool = isWritableProperty( obj, 'beep' ); +// returns false +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isWritableProperty( 'beep', 'length' ); + // returns false + ``` + +- Property arguments are coerced to `strings`. + + ```javascript + var obj = { + 'null': 'foo' + }; + + var bool = isWritableProperty( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isWritableProperty = require( '@stdlib/assert/is-writable-property' ); + +var bool = isWritableProperty( [ 'a' ], 'length' ); +// returns true + +bool = isWritableProperty( { 'a': 'b' }, 'a' ); +// returns true + +bool = isWritableProperty( [ 'a' ], 0 ); +// returns true + +bool = isWritableProperty( { 'null': false }, null ); +// returns true + +bool = isWritableProperty( { '[object Object]': false }, {} ); +// returns true + +bool = isWritableProperty( {}, 'prototype' ); +// returns false + +bool = isWritableProperty( {}, 'hasOwnProperty' ); +// returns false + +bool = isWritableProperty( null, 'a' ); +// returns false + +bool = isWritableProperty( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-writable-property/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-writable-property/benchmark/benchmark.js new file mode 100644 index 000000000000..3fb208007e2e --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-writable-property/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isWritableProperty = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isWritableProperty( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-writable-property/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-writable-property/docs/repl.txt new file mode 100644 index 000000000000..c49609463a56 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-writable-property/docs/repl.txt @@ -0,0 +1,34 @@ + +{{alias}}( value, property ) + Tests if an object's own property is writable. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own property is writable. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = false; + > desc.writable = false; + > desc.value = 'beep'; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + true + > bool = {{alias}}( obj, 'beep' ) + false + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-writable-property/examples/index.js b/lib/node_modules/@stdlib/assert/is-writable-property/examples/index.js new file mode 100644 index 000000000000..36084bce59bf --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-writable-property/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isWritableProperty = require( './../lib' ); + +var bool = isWritableProperty( [ 'a' ], 'length' ); +console.log( bool ); +// => true + +bool = isWritableProperty( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => true + +bool = isWritableProperty( [ 'a' ], 0 ); +console.log( bool ); +// => true + +bool = isWritableProperty( { 'null': false }, null ); +console.log( bool ); +// => true + +bool = isWritableProperty( { '[object Object]': false }, {} ); +console.log( bool ); +// => true + +bool = isWritableProperty( {}, 'prototype' ); +console.log( bool ); +// => false + +bool = isWritableProperty( {}, 'hasOwnProperty' ); +console.log( bool ); +// => false + +bool = isWritableProperty( null, 'a' ); +console.log( bool ); +// => false + +bool = isWritableProperty( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-writable-property/lib/index.js b/lib/node_modules/@stdlib/assert/is-writable-property/lib/index.js new file mode 100644 index 000000000000..f25bbc53beda --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-writable-property/lib/index.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own property is writable. +* +* @module @stdlib/assert/is-writable-property +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isWritableProperty = require( '@stdlib/assert/is-writable-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'writable': false, +* 'value': 'beep' +* }); +* +* var bool = isWritableProperty( obj, 'boop' ); +* // returns true +* +* bool = isWritableProperty( obj, 'beep' ); +* // returns false +*/ + +// MODULES // + +var isWritableProperty = require( './main.js' ); + + +// EXPORTS // + +module.exports = isWritableProperty; diff --git a/lib/node_modules/@stdlib/assert/is-writable-property/lib/main.js b/lib/node_modules/@stdlib/assert/is-writable-property/lib/main.js new file mode 100644 index 000000000000..d8b450df51c0 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-writable-property/lib/main.js @@ -0,0 +1,69 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptor = require( '@stdlib/utils/property-descriptor' ); + + +// MAIN // + +/** +* Tests if an object's own property is writable. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is writable +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'writable': false, +* 'value': 'beep' +* }); +* +* var bool = isWritableProperty( obj, 'boop' ); +* // returns true +* +* bool = isWritableProperty( obj, 'beep' ); +* // returns false +*/ +function isWritableProperty( value, property ) { + var desc = propertyDescriptor( value, property ); + return ( + desc !== null && + ( + desc.writable === true || + typeof desc.set === 'function' + ) + ); +} + + +// EXPORTS // + +module.exports = isWritableProperty; diff --git a/lib/node_modules/@stdlib/assert/is-writable-property/package.json b/lib/node_modules/@stdlib/assert/is-writable-property/package.json new file mode 100644 index 000000000000..6fd1a90aa727 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-writable-property/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/assert/is-writable-property", + "version": "0.0.0", + "description": "Test if an object's own property is writable.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "writable", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-writable-property/test/test.js b/lib/node_modules/@stdlib/assert/is-writable-property/test/test.js new file mode 100644 index 000000000000..30f35d60d691 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-writable-property/test/test.js @@ -0,0 +1,139 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isWritableProperty = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isWritableProperty, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if an object property is writable', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isWritableProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isWritableProperty( [ 1, 2, 3 ], '1' ); + t.equal( bool, true, 'returns true' ); + + bool = isWritableProperty( [ 1, 2, 3 ], 1 ); + t.equal( bool, true, 'returns true' ); + + bool = isWritableProperty( new Foo(), 'bar' ); + t.equal( bool, true, 'returns true' ); + + bool = isWritableProperty( [ 'a' ], 'length' ); + t.equal( bool, true, 'returns true' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + + bool = isWritableProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'set': setter + }); + + bool = isWritableProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + t.end(); + + function setter() { + // No-op... + } +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isWritableProperty( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isWritableProperty( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a writable property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + bool = isWritableProperty( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a prototype property', function test( t ) { + var bool; + + bool = isWritableProperty( {}, 'hasOwnProperty' ); + t.equal( bool, false, 'returns false when provided a prototype property' ); + + bool = isWritableProperty( {}, 'prototype' ); + t.equal( bool, false, 'returns false' ); + + bool = isWritableProperty( {}, 'constructor' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isWritableProperty( 'beep', 'length' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); From 0493a072f02ee0b9145b62500997ecbbb86435b3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 17:26:27 -0700 Subject: [PATCH 0115/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 2805ef725c1f..02a4c9d75b30 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -1755,6 +1755,15 @@ setReadOnly( ns, 'isWhitespace', require( '@stdlib/assert/is-whitespace' ) ); */ setReadOnly( ns, 'IS_WINDOWS', require( '@stdlib/assert/is-windows' ) ); +/** +* @name isWritableProperty +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-writable-property} +*/ +setReadOnly( ns, 'isWritableProperty', require( '@stdlib/assert/is-writable-property' ) ); + // EXPORTS // From b9cefec8ab931f92cd784492ca87468ad5b63b0c Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 17:28:56 -0700 Subject: [PATCH 0116/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 12 ++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 1 + 3 files changed, 14 insertions(+) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 0ada539bc277..7f4f6ed88e73 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -3242,6 +3242,18 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isWritableProperty', + 'path': '@stdlib/assert/is-writable-property', + 'value': require( '@stdlib/assert/is-writable-property' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-readable-property', + '@stdlib/assert/is-read-write-property', + '@stdlib/assert/is-write-only-property' + ] +}); + ns.push({ 'alias': 'IteratorSymbol', 'path': '@stdlib/symbol/iterator', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index ea6325715da2..ce7578fce0c1 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1279,6 +1279,7 @@ var db = { "isURIError": "bool = isURIError( new URIError( 'beep' ) )\nbool = isURIError( {} )\n", "isVectorLike": "M = {};\nM.data = [ 0, 0, 0, 0 ];\nM.ndims = 1;\nM.shape = [ 4 ];\nM.strides = [ 1 ];\nM.offset = 0;\nM.order = 'row-major';\nM.dtype = 'generic';\nM.length = 4;\nM.flags = {};\nM.get = function get( i, j ) {};\nM.set = function set( i, j ) {};\nbool = isVectorLike( M )\nbool = isVectorLike( [ 1, 2, 3, 4 ] )\nbool = isVectorLike( 3.14 )\nbool = isVectorLike( {} )\n", "isWhitespace": "bool = isWhitespace( ' ' )\nbool = isWhitespace( 'abcdef' )\nbool = isWhitespace( '' )\n", + "isWritableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = false;\ndesc.value = 'beep';\ndefineProperty( obj, 'beep', desc );\nbool = isWritableProperty( obj, 'boop' )\nbool = isWritableProperty( obj, 'beep' )\n", "IteratorSymbol": "s = IteratorSymbol\n", "keyBy": "function toKey( v ) { return v.a; };\narr = [ { 'a': 1 }, { 'a': 2 } ];\nkeyBy( arr, toKey )\n", "keyByRight": "function toKey( v ) { return v.a; };\narr = [ { 'a': 1 }, { 'a': 2 } ];\nkeyByRight( arr, toKey )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index cf44f4581e83..4a49e3f83d60 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1279,6 +1279,7 @@ var db = { "isURIError": "\nisURIError( value )\n Tests if a value is a URIError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a URIError (or a descendant) object,\n false positives may occur due to the fact that the URIError constructor\n inherits from Error and has no internal class of its own. Hence, URIError\n impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a URIError object.\n\n Examples\n --------\n > var bool = isURIError( new URIError( 'beep' ) )\n true\n > bool = isURIError( {} )\n false\n\n See Also\n --------\n isError\n", "isVectorLike": "\nisVectorLike( value )\n Tests if a value is a 1-dimensional ndarray-like object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a 1-dimensional ndarray-like\n object.\n\n Examples\n --------\n > var M = {};\n > M.data = [ 0, 0, 0, 0 ];\n > M.ndims = 1;\n > M.shape = [ 4 ];\n > M.strides = [ 1 ];\n > M.offset = 0;\n > M.order = 'row-major';\n > M.dtype = 'generic';\n > M.length = 4;\n > M.flags = {};\n > M.get = function get( i, j ) {};\n > M.set = function set( i, j ) {};\n > var bool = isVectorLike( M )\n true\n > bool = isVectorLike( [ 1, 2, 3, 4 ] )\n false\n > bool = isVectorLike( 3.14 )\n false\n > bool = isVectorLike( {} )\n false\n\n See Also\n --------\n isArray, isArrayLike, isMatrixLike, isndarrayLike, isTypedArrayLike\n", "isWhitespace": "\nisWhitespace( str )\n Tests whether a string contains only white space characters.\n\n A white space character is defined as one of the 25 characters defined as a\n white space (\"WSpace=Y\",\"WS\") character in the Unicode 9.0 character\n database, as well as one related white space character without the Unicode\n character property \"WSpace=Y\" (zero width non-breaking space which was\n deprecated as of Unicode 3.2).\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only white space\n characters.\n\n Examples\n --------\n > var bool = isWhitespace( ' ' )\n true\n > bool = isWhitespace( 'abcdef' )\n false\n > bool = isWhitespace( '' )\n false\n\n See Also\n --------\n RE_WHITESPACE\n", + "isWritableProperty": "\nisWritableProperty( value, property )\n Tests if an object's own property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty( obj, 'boop' )\n true\n > bool = isWritableProperty( obj, 'beep' )\n false\n\n", "IteratorSymbol": "\nIteratorSymbol\n Iterator symbol.\n\n This symbol specifies the default iterator for an object.\n\n The symbol is only supported in ES6/ES2015+ environments. For non-supporting\n environments, the value is `null`.\n\n Examples\n --------\n > var s = IteratorSymbol\n\n See Also\n --------\n Symbol\n", "kde2d": "", "keyBy": "\nkeyBy( collection, fcn[, thisArg] )\n Converts a collection to an object whose keys are determined by a provided\n function and whose values are the collection values.\n\n When invoked, the input function is provided two arguments:\n\n - `value`: collection value\n - `index`: collection index\n\n If more than one element in a collection resolves to the same key, the key\n value is the collection element which last resolved to the key.\n\n Object values are shallow copies.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Object\n Output object.\n\n Examples\n --------\n > function toKey( v ) { return v.a; };\n > var arr = [ { 'a': 1 }, { 'a': 2 } ];\n > keyBy( arr, toKey )\n { '1': { 'a': 1 }, '2': { 'a': 2 } }\n\n See Also\n --------\n forEach\n", From e9da54484ccd8e6dea5014a17a126c0a89a33f1b Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 17:39:58 -0700 Subject: [PATCH 0117/1062] Add utility to test if an object property is readable --- .../assert/is-readable-property/README.md | 148 +++++++++++++++++ .../benchmark/benchmark.js | 51 ++++++ .../assert/is-readable-property/docs/repl.txt | 33 ++++ .../is-readable-property/examples/index.js | 59 +++++++ .../assert/is-readable-property/lib/index.js | 58 +++++++ .../assert/is-readable-property/lib/main.js | 72 +++++++++ .../assert/is-readable-property/package.json | 71 ++++++++ .../assert/is-readable-property/test/test.js | 151 ++++++++++++++++++ 8 files changed, 643 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-readable-property/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-readable-property/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-readable-property/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-readable-property/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-readable-property/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-readable-property/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-readable-property/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-readable-property/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-readable-property/README.md b/lib/node_modules/@stdlib/assert/is-readable-property/README.md new file mode 100644 index 000000000000..8e57f3480a92 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-readable-property/README.md @@ -0,0 +1,148 @@ + + +# isReadableProperty + +> Test if an object's own property is readable. + +
+ +## Usage + +```javascript +var isReadableProperty = require( '@stdlib/assert/is-readable-property' ); +``` + +#### isReadableProperty( value, property ) + +Returns a `boolean` indicating if a `value` has a readable `property`. + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = { + 'foo': 'bar' +}; + +defineProperty( obj, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); + +defineProperty( obj, 'setter', { + 'configurable': false, + 'enumerable': false, + 'set': function setter( v ) { + obj.foo = v; + } +}); + +var bool = isReadableProperty( obj, 'foo' ); +// returns true + +bool = isReadableProperty( obj, 'beep' ); +// returns true + +bool = isReadableProperty( obj, 'setter' ); +// returns false +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isReadableProperty( 'beep', 'length' ); + // returns true + ``` + +- Property arguments are coerced to `strings`. + + ```javascript + var obj = { + 'null': 'foo' + }; + + var bool = isReadableProperty( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isReadableProperty = require( '@stdlib/assert/is-readable-property' ); + +var bool = isReadableProperty( [ 'a' ], 'length' ); +// returns true + +bool = isReadableProperty( { 'a': 'b' }, 'a' ); +// returns true + +bool = isReadableProperty( [ 'a' ], 0 ); +// returns true + +bool = isReadableProperty( { 'null': false }, null ); +// returns true + +bool = isReadableProperty( { '[object Object]': false }, {} ); +// returns true + +bool = isReadableProperty( {}, 'prototype' ); +// returns false + +bool = isReadableProperty( {}, 'hasOwnProperty' ); +// returns false + +bool = isReadableProperty( null, 'a' ); +// returns false + +bool = isReadableProperty( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-readable-property/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-readable-property/benchmark/benchmark.js new file mode 100644 index 000000000000..249cdcd77e42 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-readable-property/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isReadableProperty = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isReadableProperty( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-readable-property/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-readable-property/docs/repl.txt new file mode 100644 index 000000000000..81bb0bd2e423 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-readable-property/docs/repl.txt @@ -0,0 +1,33 @@ + +{{alias}}( value, property ) + Tests if an object's own property is readable. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own property is readable. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = false; + > desc.set = function setter( v ) { obj.boop = v; }; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + true + > bool = {{alias}}( obj, 'beep' ) + false + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-readable-property/examples/index.js b/lib/node_modules/@stdlib/assert/is-readable-property/examples/index.js new file mode 100644 index 000000000000..da31d68e0b84 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-readable-property/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isReadableProperty = require( './../lib' ); + +var bool = isReadableProperty( [ 'a' ], 'length' ); +console.log( bool ); +// => true + +bool = isReadableProperty( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => true + +bool = isReadableProperty( [ 'a' ], 0 ); +console.log( bool ); +// => true + +bool = isReadableProperty( { 'null': false }, null ); +console.log( bool ); +// => true + +bool = isReadableProperty( { '[object Object]': false }, {} ); +console.log( bool ); +// => true + +bool = isReadableProperty( {}, 'prototype' ); +console.log( bool ); +// => false + +bool = isReadableProperty( {}, 'hasOwnProperty' ); +console.log( bool ); +// => false + +bool = isReadableProperty( null, 'a' ); +console.log( bool ); +// => false + +bool = isReadableProperty( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-readable-property/lib/index.js b/lib/node_modules/@stdlib/assert/is-readable-property/lib/index.js new file mode 100644 index 000000000000..e12e54ba4103 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-readable-property/lib/index.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own property is readable. +* +* @module @stdlib/assert/is-readable-property +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isReadableProperty = require( '@stdlib/assert/is-readable-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* function setter( v ) { +* obj.boop = v; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'set': setter +* }); +* +* var bool = isReadableProperty( obj, 'boop' ); +* // returns true +* +* bool = isReadableProperty( obj, 'beep' ); +* // returns false +*/ + +// MODULES // + +var isReadableProperty = require( './main.js' ); + + +// EXPORTS // + +module.exports = isReadableProperty; diff --git a/lib/node_modules/@stdlib/assert/is-readable-property/lib/main.js b/lib/node_modules/@stdlib/assert/is-readable-property/lib/main.js new file mode 100644 index 000000000000..840e3ea41fac --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-readable-property/lib/main.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptor = require( '@stdlib/utils/property-descriptor' ); + + +// MAIN // + +/** +* Tests if an object's own property is readable. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is readable +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* function setter( v ) { +* obj.boop = v; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'set': setter +* }); +* +* var bool = isReadableProperty( obj, 'boop' ); +* // returns true +* +* bool = isReadableProperty( obj, 'beep' ); +* // returns false +*/ +function isReadableProperty( value, property ) { + var desc = propertyDescriptor( value, property ); + return ( + desc !== null && + ( + desc.writable !== void 0 || // data descriptor + typeof desc.get === 'function' // accessor descriptor + ) + ); +} + + +// EXPORTS // + +module.exports = isReadableProperty; diff --git a/lib/node_modules/@stdlib/assert/is-readable-property/package.json b/lib/node_modules/@stdlib/assert/is-readable-property/package.json new file mode 100644 index 000000000000..c546fa0ae3d8 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-readable-property/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/assert/is-readable-property", + "version": "0.0.0", + "description": "Test if an object's own property is readable.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "readable", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-readable-property/test/test.js b/lib/node_modules/@stdlib/assert/is-readable-property/test/test.js new file mode 100644 index 000000000000..bdc8b6916810 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-readable-property/test/test.js @@ -0,0 +1,151 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isReadableProperty = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isReadableProperty, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if an object property is readable', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isReadableProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadableProperty( [ 1, 2, 3 ], '1' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadableProperty( [ 1, 2, 3 ], 1 ); + t.equal( bool, true, 'returns true' ); + + bool = isReadableProperty( new Foo(), 'bar' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadableProperty( [ 'a' ], 'length' ); + t.equal( bool, true, 'returns true' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'b' + }); + + bool = isReadableProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'get': getter + }); + + bool = isReadableProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + t.end(); + + function getter() { + // No-op... + } +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isReadableProperty( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isReadableProperty( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a readable property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + defineProperty( obj, 'd', { + 'configurable': true, + 'enumerable': true, + 'set': setter + }); + + bool = isReadableProperty( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadableProperty( obj, 'd' ); + t.equal( bool, false, 'returns false' ); + t.end(); + + function setter() { + // No-op... + } +}); + +tape( 'the function returns `false` if provided a prototype property', function test( t ) { + var bool; + + bool = isReadableProperty( {}, 'hasOwnProperty' ); + t.equal( bool, false, 'returns false when provided a prototype property' ); + + bool = isReadableProperty( {}, 'prototype' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadableProperty( {}, 'constructor' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isReadableProperty( 'beep', 'length' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); From ecd27f0cba5171127b792e64d81db2fda9e9279a Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 17:40:53 -0700 Subject: [PATCH 0118/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 02a4c9d75b30..ad6fa2251e87 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -1395,6 +1395,15 @@ setReadOnly( ns, 'isProbabilityArray', require( '@stdlib/assert/is-probability-a */ setReadOnly( ns, 'isRangeError', require( '@stdlib/assert/is-range-error' ) ); +/** +* @name isReadableProperty +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-readable-property} +*/ +setReadOnly( ns, 'isReadableProperty', require( '@stdlib/assert/is-readable-property' ) ); + /** * @name isReferenceError * @memberof ns From fe9f16835b3c1a000327ab0e950f1f92988dc1e6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 17:42:21 -0700 Subject: [PATCH 0119/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 12 ++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 7f4f6ed88e73..0c1d2cb46484 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -2838,6 +2838,18 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isReadableProperty', + 'path': '@stdlib/assert/is-readable-property', + 'value': require( '@stdlib/assert/is-readable-property' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-read-only-property', + '@stdlib/assert/is-read-write-property', + '@stdlib/assert/is-writable-property' + ] +}); + ns.push({ 'alias': 'isReferenceError', 'path': '@stdlib/assert/is-reference-error', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index ce7578fce0c1..929760ed45df 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1241,6 +1241,7 @@ var db = { "isProbability": "bool = isProbability( 0.5 )\nbool = isProbability( new Number( 0.5 ) )\nbool = isProbability( 3.14 )\nbool = isProbability( -5.0 )\nbool = isProbability( null )\n", "isProbabilityArray": "bool = isProbabilityArray( [ 0.5, new Number(0.8) ] )\nbool = isProbabilityArray( [ 0.8, 1.2 ] )\nbool = isProbabilityArray( [ 0.8, '0.2' ] )\n", "isRangeError": "bool = isRangeError( new RangeError( 'beep' ) )\nbool = isRangeError( {} )\n", + "isReadableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadableProperty( obj, 'boop' )\nbool = isReadableProperty( obj, 'beep' )\n", "isReferenceError": "bool = isReferenceError( new ReferenceError( 'beep' ) )\nbool = isReferenceError( {} )\n", "isRegExp": "bool = isRegExp( /\\.+/ )\nbool = isRegExp( {} )\n", "isRegExpString": "bool = isRegExpString( '/beep/' )\nbool = isRegExpString( 'beep' )\nbool = isRegExpString( '' )\nbool = isRegExpString( null )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 4a49e3f83d60..95656ae22423 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1241,6 +1241,7 @@ var db = { "isProbability": "\nisProbability( value )\n Tests if a value is a probability.\n\n A probability is defined as a numeric value on the interval [0,1].\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a probability.\n\n Examples\n --------\n > var bool = isProbability( 0.5 )\n true\n > bool = isProbability( new Number( 0.5 ) )\n true\n > bool = isProbability( 3.14 )\n false\n > bool = isProbability( -5.0 )\n false\n > bool = isProbability( null )\n false\n\n\nisProbability.isPrimitive( value )\n Tests if a value is a number primitive which is a probability.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive which is a\n probability.\n\n Examples\n --------\n > var bool = isProbability.isPrimitive( 0.3 )\n true\n > bool = isProbability.isPrimitive( new Number( 0.3 ) )\n false\n\n\nisProbability.isObject( value )\n Tests if a value is a number object having a value which is a probability.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object having a value which\n is a probability.\n\n Examples\n --------\n > var bool = isProbability.isObject( 0.77 )\n false\n > bool = isProbability.isObject( new Number( 0.77 ) )\n true\n\n\n See Also\n --------\n isNumber\n", "isProbabilityArray": "\nisProbabilityArray( value )\n Tests if a value is an array-like object containing only probabilities.\n\n A probability is defined as a numeric value on the interval [0,1].\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n probabilities.\n\n Examples\n --------\n > var bool = isProbabilityArray( [ 0.5, new Number(0.8) ] )\n true\n > bool = isProbabilityArray( [ 0.8, 1.2 ] )\n false\n > bool = isProbabilityArray( [ 0.8, '0.2' ] )\n false\n\n\nisProbabilityArray.primitives( value )\n Tests if a value is an array-like object containing only primitive\n probabilities.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n primitive probabilities.\n\n Examples\n --------\n > var bool = isProbabilityArray.primitives( [ 1.0, 0.0, 0.5 ] )\n true\n > bool = isProbabilityArray.primitives( [ 0.3, new Number(0.4) ] )\n false\n\n\nisProbabilityArray.objects( value )\n Tests if a value is an array-like object containing only number objects\n having probability values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n number objects having probability values.\n\n Examples\n --------\n > var bool = isProbabilityArray.objects( [ new Number(0.7), new Number(1.0) ] )\n true\n > bool = isProbabilityArray.objects( [ 1.0, 0.0, new Number(0.7) ] )\n false\n\n See Also\n --------\n isArray, isProbability\n", "isRangeError": "\nisRangeError( value )\n Tests if a value is a RangeError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a RangeError (or a descendant) object,\n false positives may occur due to the fact that the RangeError constructor\n inherits from Error and has no internal class of its own. Hence, RangeError\n impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a RangeError object.\n\n Examples\n --------\n > var bool = isRangeError( new RangeError( 'beep' ) )\n true\n > bool = isRangeError( {} )\n false\n\n See Also\n --------\n isError\n", + "isReadableProperty": "\nisReadableProperty( value, property )\n Tests if an object's own property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadableProperty( obj, 'boop' )\n true\n > bool = isReadableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isWritableProperty\n", "isReferenceError": "\nisReferenceError( value )\n Tests if a value is a ReferenceError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a ReferenceError (or a descendant)\n object, false positives may occur due to the fact that the ReferenceError\n constructor inherits from Error and has no internal class of its own.\n Hence, ReferenceError impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a ReferenceError object.\n\n Examples\n --------\n > var bool = isReferenceError( new ReferenceError( 'beep' ) )\n true\n > bool = isReferenceError( {} )\n false\n\n See Also\n --------\n isError\n", "isRegExp": "\nisRegExp( value )\n Tests if a value is a regular expression.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a regular expression.\n\n Examples\n --------\n > var bool = isRegExp( /\\.+/ )\n true\n > bool = isRegExp( {} )\n false\n\n", "isRegExpString": "\nisRegExpString( value )\n Tests if a value is a regular expression string.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a regular expression string.\n\n Examples\n --------\n > var bool = isRegExpString( '/beep/' )\n true\n > bool = isRegExpString( 'beep' )\n false\n > bool = isRegExpString( '' )\n false\n > bool = isRegExpString( null )\n false\n\n See Also\n --------\n isRegExp\n", @@ -1279,7 +1280,7 @@ var db = { "isURIError": "\nisURIError( value )\n Tests if a value is a URIError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a URIError (or a descendant) object,\n false positives may occur due to the fact that the URIError constructor\n inherits from Error and has no internal class of its own. Hence, URIError\n impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a URIError object.\n\n Examples\n --------\n > var bool = isURIError( new URIError( 'beep' ) )\n true\n > bool = isURIError( {} )\n false\n\n See Also\n --------\n isError\n", "isVectorLike": "\nisVectorLike( value )\n Tests if a value is a 1-dimensional ndarray-like object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a 1-dimensional ndarray-like\n object.\n\n Examples\n --------\n > var M = {};\n > M.data = [ 0, 0, 0, 0 ];\n > M.ndims = 1;\n > M.shape = [ 4 ];\n > M.strides = [ 1 ];\n > M.offset = 0;\n > M.order = 'row-major';\n > M.dtype = 'generic';\n > M.length = 4;\n > M.flags = {};\n > M.get = function get( i, j ) {};\n > M.set = function set( i, j ) {};\n > var bool = isVectorLike( M )\n true\n > bool = isVectorLike( [ 1, 2, 3, 4 ] )\n false\n > bool = isVectorLike( 3.14 )\n false\n > bool = isVectorLike( {} )\n false\n\n See Also\n --------\n isArray, isArrayLike, isMatrixLike, isndarrayLike, isTypedArrayLike\n", "isWhitespace": "\nisWhitespace( str )\n Tests whether a string contains only white space characters.\n\n A white space character is defined as one of the 25 characters defined as a\n white space (\"WSpace=Y\",\"WS\") character in the Unicode 9.0 character\n database, as well as one related white space character without the Unicode\n character property \"WSpace=Y\" (zero width non-breaking space which was\n deprecated as of Unicode 3.2).\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only white space\n characters.\n\n Examples\n --------\n > var bool = isWhitespace( ' ' )\n true\n > bool = isWhitespace( 'abcdef' )\n false\n > bool = isWhitespace( '' )\n false\n\n See Also\n --------\n RE_WHITESPACE\n", - "isWritableProperty": "\nisWritableProperty( value, property )\n Tests if an object's own property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty( obj, 'boop' )\n true\n > bool = isWritableProperty( obj, 'beep' )\n false\n\n", + "isWritableProperty": "\nisWritableProperty( value, property )\n Tests if an object's own property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty( obj, 'boop' )\n true\n > bool = isWritableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty\n", "IteratorSymbol": "\nIteratorSymbol\n Iterator symbol.\n\n This symbol specifies the default iterator for an object.\n\n The symbol is only supported in ES6/ES2015+ environments. For non-supporting\n environments, the value is `null`.\n\n Examples\n --------\n > var s = IteratorSymbol\n\n See Also\n --------\n Symbol\n", "kde2d": "", "keyBy": "\nkeyBy( collection, fcn[, thisArg] )\n Converts a collection to an object whose keys are determined by a provided\n function and whose values are the collection values.\n\n When invoked, the input function is provided two arguments:\n\n - `value`: collection value\n - `index`: collection index\n\n If more than one element in a collection resolves to the same key, the key\n value is the collection element which last resolved to the key.\n\n Object values are shallow copies.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Object\n Output object.\n\n Examples\n --------\n > function toKey( v ) { return v.a; };\n > var arr = [ { 'a': 1 }, { 'a': 2 } ];\n > keyBy( arr, toKey )\n { '1': { 'a': 1 }, '2': { 'a': 2 } }\n\n See Also\n --------\n forEach\n", From 8a4fb3616e091b849f2e6d1a5644e0f918478250 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 17:49:52 -0700 Subject: [PATCH 0120/1062] Remove extra space --- lib/node_modules/@stdlib/utils/property-descriptor/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/README.md b/lib/node_modules/@stdlib/utils/property-descriptor/README.md index 86d533ff45ba..3661a5874716 100644 --- a/lib/node_modules/@stdlib/utils/property-descriptor/README.md +++ b/lib/node_modules/@stdlib/utils/property-descriptor/README.md @@ -55,7 +55,7 @@ var desc = propertyDescriptor( obj, 'a' ); - This function differs from the built-in `Object.getOwnPropertyDescriptor()` as follows: - If provided `null` or `undefined`, the function returns `null`, rather than throwing an error. - - If an object does not have a provided property name, the function returns `null`, rather than `undefined`. + - If an object does not have a provided property name, the function returns `null`, rather than `undefined`.
From 592ca4f7873eff48cfeaee6b0aa9e6a899d09234 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 17:51:52 -0700 Subject: [PATCH 0121/1062] Update description --- lib/node_modules/@stdlib/utils/property-descriptor/README.md | 4 ++-- .../@stdlib/utils/property-descriptor/docs/repl.txt | 2 +- .../@stdlib/utils/property-descriptor/lib/builtin.js | 2 +- .../@stdlib/utils/property-descriptor/lib/index.js | 2 +- .../@stdlib/utils/property-descriptor/lib/polyfill.js | 2 +- .../@stdlib/utils/property-descriptor/package.json | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/README.md b/lib/node_modules/@stdlib/utils/property-descriptor/README.md index 3661a5874716..e8f419a26392 100644 --- a/lib/node_modules/@stdlib/utils/property-descriptor/README.md +++ b/lib/node_modules/@stdlib/utils/property-descriptor/README.md @@ -20,7 +20,7 @@ limitations under the License. # propertyDescriptor -> Return a property descriptor. +> Return a property descriptor for an object's own property.
@@ -32,7 +32,7 @@ var propertyDescriptor = require( '@stdlib/utils/property-descriptor' ); #### propertyDescriptor( obj, property ) -Returns a property descriptor. +Returns a property descriptor for an object's own property. ```javascript var obj = { diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/docs/repl.txt b/lib/node_modules/@stdlib/utils/property-descriptor/docs/repl.txt index b4566706b941..7d9bb88ebbe0 100644 --- a/lib/node_modules/@stdlib/utils/property-descriptor/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/property-descriptor/docs/repl.txt @@ -1,6 +1,6 @@ {{alias}}( value, property ) - Returns a property descriptor. + Returns a property descriptor for an object's own property. If provided `null` or `undefined` or provided a non-existent property, the function returns `null`. diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/lib/builtin.js b/lib/node_modules/@stdlib/utils/property-descriptor/lib/builtin.js index ffb45e8b9c52..7cd075b4319f 100644 --- a/lib/node_modules/@stdlib/utils/property-descriptor/lib/builtin.js +++ b/lib/node_modules/@stdlib/utils/property-descriptor/lib/builtin.js @@ -26,7 +26,7 @@ var propertyDescriptor = Object.getOwnPropertyDescriptor; // MAIN // /** -* Returns a property descriptor. +* Returns a property descriptor for an object's own property. * * ## Notes * diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/lib/index.js b/lib/node_modules/@stdlib/utils/property-descriptor/lib/index.js index 0be536187911..480a697d30a7 100644 --- a/lib/node_modules/@stdlib/utils/property-descriptor/lib/index.js +++ b/lib/node_modules/@stdlib/utils/property-descriptor/lib/index.js @@ -19,7 +19,7 @@ 'use strict'; /** -* Return a property descriptor. +* Return a property descriptor for an object's own property. * * @module @stdlib/utils/property-descriptor * diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/lib/polyfill.js b/lib/node_modules/@stdlib/utils/property-descriptor/lib/polyfill.js index 52b2c30588ae..7687a3b457e6 100644 --- a/lib/node_modules/@stdlib/utils/property-descriptor/lib/polyfill.js +++ b/lib/node_modules/@stdlib/utils/property-descriptor/lib/polyfill.js @@ -26,7 +26,7 @@ var hasOwnProp = require( '@stdlib/assert/has-own-property' ); // MAIN // /** -* Returns a property descriptor. +* Returns a property descriptor for an object's own property. * * ## Notes * diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/package.json b/lib/node_modules/@stdlib/utils/property-descriptor/package.json index 7b79b958ebfb..c99769f459e5 100644 --- a/lib/node_modules/@stdlib/utils/property-descriptor/package.json +++ b/lib/node_modules/@stdlib/utils/property-descriptor/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/utils/property-descriptor", "version": "0.0.0", - "description": "Return a property descriptor.", + "description": "Return a property descriptor for an object's own property.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", From c0af73ed0a2db6ccd7dc1495ea2db20cb92bd54d Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 17:54:25 -0700 Subject: [PATCH 0122/1062] Add prototype tests --- .../property-descriptor/test/test.builtin.js | 29 +++++++++++++++++++ .../property-descriptor/test/test.polyfill.js | 29 +++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/test/test.builtin.js b/lib/node_modules/@stdlib/utils/property-descriptor/test/test.builtin.js index 7314f094d5c0..3ae752f902f5 100644 --- a/lib/node_modules/@stdlib/utils/property-descriptor/test/test.builtin.js +++ b/lib/node_modules/@stdlib/utils/property-descriptor/test/test.builtin.js @@ -85,6 +85,35 @@ tape( 'the function returns a property descriptor', opts, function test( t ) { t.end(); }); +tape( 'the function returns `null` if provided a prototype property', opts, function test( t ) { + var expected; + var actual; + var obj; + + function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + return this; + } + + Foo.prototype.foo = [ 'bar' ]; + + obj = new Foo(); + + expected = null; + actual = getOwnPropertyDescriptor( obj, 'foo' ); + t.deepEqual( actual, expected, 'returns expected value' ); + t.end(); +}); + tape( 'the function returns `null` if provided a non-string primitive or `null`', opts, function test( t ) { var expected; var actual; diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/test/test.polyfill.js b/lib/node_modules/@stdlib/utils/property-descriptor/test/test.polyfill.js index 5973cc8a9aa6..8dd588d91ace 100644 --- a/lib/node_modules/@stdlib/utils/property-descriptor/test/test.polyfill.js +++ b/lib/node_modules/@stdlib/utils/property-descriptor/test/test.polyfill.js @@ -77,6 +77,35 @@ tape( 'the function returns a property descriptor ( Date: Wed, 5 Sep 2018 18:25:37 -0700 Subject: [PATCH 0123/1062] Add utility to return an object's own or inherited property descriptor --- .../utils/property-descriptor-in/README.md | 105 +++++++++ .../benchmark/benchmark.js | 72 ++++++ .../property-descriptor-in/docs/repl.txt | 29 +++ .../property-descriptor-in/examples/index.js | 44 ++++ .../utils/property-descriptor-in/lib/index.js | 45 ++++ .../utils/property-descriptor-in/lib/main.js | 76 ++++++ .../utils/property-descriptor-in/package.json | 71 ++++++ .../utils/property-descriptor-in/test/test.js | 220 ++++++++++++++++++ 8 files changed, 662 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor-in/README.md create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor-in/package.json create mode 100644 lib/node_modules/@stdlib/utils/property-descriptor-in/test/test.js diff --git a/lib/node_modules/@stdlib/utils/property-descriptor-in/README.md b/lib/node_modules/@stdlib/utils/property-descriptor-in/README.md new file mode 100644 index 000000000000..8be9b877c0d6 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor-in/README.md @@ -0,0 +1,105 @@ + + +# propertyDescriptorIn + +> Return a property descriptor for an object's own or inherited property. + +
+ +## Usage + +```javascript +var propertyDescriptorIn = require( '@stdlib/utils/property-descriptor-in' ); +``` + +#### propertyDescriptorIn( obj, property ) + +Returns a property descriptor for an object's own or inherited property. + +```javascript +var obj = { + 'a': 1, + 'b': 2 +}; + +var desc = propertyDescriptorIn( obj, 'a' ); +// returns {'configurable':true,'enumerable':true,'writable':true,'value':1} +``` + +
+ + + +
+ +## Notes + +- This function differs from the built-in `Object.getOwnPropertyDescriptor()` as follows: + + - If provided `null` or `undefined`, the function returns `null`, rather than throwing an error. + - If an object does not have a provided property name, the function returns `null`, rather than `undefined`. + +
+ + + +
+ +## Examples + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var propertyDescriptorIn = require( '@stdlib/utils/property-descriptor-in' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'value': 'qux', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; + +var obj = new Foo(); +var desc = propertyDescriptorIn( obj, 'foo' ); + +console.log( desc ); +// => {'configurable':true,'enumerable':false,'writable':true,'value':['bar']} +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/property-descriptor-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/property-descriptor-in/benchmark/benchmark.js new file mode 100644 index 000000000000..649ece181531 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor-in/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isObject = require( '@stdlib/assert/is-plain-object' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var propertyDescriptorIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = 'bar'; + defineProperty( this, 'g', { + 'value': randu(), + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = randu(); + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.h = randu(); + out = propertyDescriptorIn( obj, 'h' ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isObject( out ) ) { + b.fail( 'should return an object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/property-descriptor-in/docs/repl.txt b/lib/node_modules/@stdlib/utils/property-descriptor-in/docs/repl.txt new file mode 100644 index 000000000000..dbffaa9903fa --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor-in/docs/repl.txt @@ -0,0 +1,29 @@ + +{{alias}}( value, property ) + Returns a property descriptor for an object's own or inherited property. + + If provided `null` or `undefined` or provided a non-existent property, the + function returns `null`. + + Parameters + ---------- + value: any + Input value. + + property: string + Property name. + + Returns + ------- + desc: Object|null + Property descriptor. + + Examples + -------- + > var obj = { 'a': 'b' }; + > var desc = {{alias}}( obj, 'a' ) + {...} + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/property-descriptor-in/examples/index.js b/lib/node_modules/@stdlib/utils/property-descriptor-in/examples/index.js new file mode 100644 index 000000000000..587b828ff55d --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor-in/examples/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var propertyDescriptorIn = require( './../lib' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'value': 'qux', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; + +var obj = new Foo(); +var desc = propertyDescriptorIn( obj, 'foo' ); + +console.log( desc ); +// => {'configurable':true,'enumerable':true,'writable':true,'value':['bar']} diff --git a/lib/node_modules/@stdlib/utils/property-descriptor-in/lib/index.js b/lib/node_modules/@stdlib/utils/property-descriptor-in/lib/index.js new file mode 100644 index 000000000000..47f53e7483bf --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor-in/lib/index.js @@ -0,0 +1,45 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return a property descriptor for an object's own or inherited property. +* +* @module @stdlib/utils/property-descriptor-in +* +* @example +* var propertyDescriptorIn = require( '@stdlib/utils/property-descriptor-in' ); +* +* var obj = { +* 'foo': 'bar', +* 'beep': 'boop' +* }; +* +* var keys = getOwnPropertyDescriptor( obj, 'foo' ); +* // returns {'configurable':true,'enumerable':true,'writable':true,'value':'bar'} +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/property-descriptor-in/lib/main.js b/lib/node_modules/@stdlib/utils/property-descriptor-in/lib/main.js new file mode 100644 index 000000000000..7794b0d5b112 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor-in/lib/main.js @@ -0,0 +1,76 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getOwnPropertyDescriptor = require( '@stdlib/utils/property-descriptor' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); + + +// MAIN // + +/** +* Returns a property descriptor for an object's own or inherited property. +* +* ## Notes +* +* - In contrast to the built-in `Object.getOwnPropertyDescriptor()`, this function returns `null` if provided `undefined` or `null`, rather than throwing an error. +* - In contrast to the built-in `Object.getOwnPropertyDescriptor()`, this function returns `null` if an object does not have a provided property name, rather than `undefined`. +* +* @private +* @param {*} value - input object +* @param {string} property - property name +* @returns {(Object|null)} property descriptor or null +* +* @example +* var obj = { +* 'beep': 'boop', +* 'foo': 3.14 +* }; +* +* var desc = propertyDescriptorIn( obj, 'foo' ); +* // returns {'configurable':true,'enumerable':true,'writable':true,'value':3.14} +*/ +function propertyDescriptorIn( value, property ) { + var desc; + var obj; + + if ( value === null || value === void 0 ) { + return null; + } + // Cast the value to an object: + obj = Object( value ); + + // Walk the prototype chain in search of a specified property... + do { + desc = getOwnPropertyDescriptor( obj, property ); + if ( desc ) { + return desc; + } + obj = getPrototypeOf( obj ); + } while ( obj ); + + return null; +} + + +// EXPORTS // + +module.exports = propertyDescriptorIn; diff --git a/lib/node_modules/@stdlib/utils/property-descriptor-in/package.json b/lib/node_modules/@stdlib/utils/property-descriptor-in/package.json new file mode 100644 index 000000000000..74f52d51956a --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor-in/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/utils/property-descriptor-in", + "version": "0.0.0", + "description": "Return a property descriptor for an object's own or inherited property.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "own", + "in", + "inherited", + "prototype", + "proto", + "property", + "props", + "prop", + "descriptor", + "desc" + ] +} diff --git a/lib/node_modules/@stdlib/utils/property-descriptor-in/test/test.js b/lib/node_modules/@stdlib/utils/property-descriptor-in/test/test.js new file mode 100644 index 000000000000..49a811459b16 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/property-descriptor-in/test/test.js @@ -0,0 +1,220 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var propertyDescriptorIn = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof propertyDescriptorIn, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns a property descriptor', function test( t ) { + var expected; + var actual; + var obj; + + function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + return this; + } + + Foo.prototype.foo = [ 'bar' ]; + + obj = new Foo(); + + expected = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'boop' + }; + actual = propertyDescriptorIn( obj, 'beep' ); + t.deepEqual( actual, expected, 'returns expected value' ); + + expected = { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }; + actual = propertyDescriptorIn( obj, 'd' ); + t.deepEqual( actual, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports returning a prototype property descriptor', function test( t ) { + var expected; + var actual; + var obj; + + function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + return this; + } + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'bar', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'baz' + }); + + obj = new Foo(); + + expected = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': obj.foo + }; + actual = propertyDescriptorIn( obj, 'foo' ); + t.deepEqual( actual, expected, 'returns expected value' ); + + expected = { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': obj.bar + }; + actual = propertyDescriptorIn( obj, 'bar' ); + t.deepEqual( actual, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `null` if provided a non-string primitive or `null`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + 3.14, + NaN, + true, + false, + void 0, + null + ]; + expected = null; + + for ( i = 0; i < values.length; i++ ) { + actual = propertyDescriptorIn( values[ i ], 'length' ); + t.strictEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); + +tape( 'the function coerces a property argument to a string', function test( t ) { + var expected; + var actual; + var obj; + + obj = { + 'null': true, + '[object Object]': false + }; + + expected = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': true + }; + actual = propertyDescriptorIn( obj, null ); + t.deepEqual( actual, expected, 'returns expected value' ); + + expected = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': false + }; + actual = propertyDescriptorIn( obj, {} ); + t.deepEqual( actual, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `null` if provided a non-existent property', function test( t ) { + var expected; + var actual; + var obj; + + obj = {}; + + expected = null; + actual = propertyDescriptorIn( obj, 'a' ); + + t.strictEqual( actual, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports symbols', function test( t ) { + var expected; + var actual; + var obj; + var sym; + + if ( hasSymbolSupport() ) { + obj = {}; + sym = Symbol( 'beep' ); + obj[ sym ] = 'boop'; + + actual = propertyDescriptorIn( obj, sym ); + expected = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'boop' + }; + t.deepEqual( actual, expected, 'returns expected value' ); + } else { + t.pass( 'environment does not support symbols' ); + } + t.end(); +}); From 6a271d3bccdb86dc0242823dff8acde71e13d2c7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 18:26:45 -0700 Subject: [PATCH 0124/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 121b5110e8fb..381f47324802 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1197,6 +1197,15 @@ setReadOnly( utils, 'prepend', require( '@stdlib/utils/prepend' ) ); */ setReadOnly( utils, 'propertyDescriptor', require( '@stdlib/utils/property-descriptor' ) ); +/** +* @name propertyDescriptorIn +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/property-descriptor-in} +*/ +setReadOnly( utils, 'propertyDescriptorIn', require( '@stdlib/utils/property-descriptor-in' ) ); + /** * @name propertyDescriptors * @memberof utils From 22961d3156d3cb7e6066c6d5fa1d1a1a104dc7b5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 18:28:45 -0700 Subject: [PATCH 0125/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/p.js | 16 +++++++++++++++- .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 +++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js index cd8e1e791b07..2f6d67b02f3c 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js @@ -285,10 +285,24 @@ ns.push({ 'related': [ '@stdlib/assert/has-own-property', '@stdlib/utils/define-property', + '@stdlib/utils/property-descriptor-in', '@stdlib/utils/property-descriptors' ] }); +ns.push({ + 'alias': 'propertyDescriptorIn', + 'path': '@stdlib/utils/property-descriptor-in', + 'value': require( '@stdlib/utils/property-descriptor-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/has-property', + '@stdlib/utils/define-property', + '@stdlib/utils/property-descriptor', + '@stdlib/utils/property-descriptors-in' + ] +}); + ns.push({ 'alias': 'propertyDescriptors', 'path': '@stdlib/utils/property-descriptors', @@ -311,7 +325,7 @@ ns.push({ 'type': 'Function', 'related': [ '@stdlib/utils/define-properties', - '@stdlib/utils/property-descriptor', + '@stdlib/utils/property-descriptor-in', '@stdlib/utils/property-descriptors', '@stdlib/utils/property-names-in', '@stdlib/utils/property-symbols-in' diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 929760ed45df..b8e6072d7040 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1394,6 +1394,7 @@ var db = { "pop": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\nout = pop( arr )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\nout = pop( arr )\n\n// Array-like object:\narr = { 'length': 2, '0': 1.0, '1': 2.0 };\nout = pop( arr )\n", "prepend": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\narr = prepend( arr, [ 6.0, 7.0 ] )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\narr = prepend( arr, [ 3.0, 4.0 ] )\n\n// Array-like object:\narr = { 'length': 1, '0': 1.0 };\narr = prepend( arr, [ 2.0, 3.0 ] )\n", "propertyDescriptor": "obj = { 'a': 'b' };\ndesc = propertyDescriptor( obj, 'a' )\n", + "propertyDescriptorIn": "obj = { 'a': 'b' };\ndesc = propertyDescriptorIn( obj, 'a' )\n", "propertyDescriptors": "obj = { 'a': 'b' };\ndesc = propertyDescriptors( obj )\n", "propertyDescriptorsIn": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\ndesc = propertyDescriptorsIn( obj )\n", "propertyNames": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = propertyNames( obj )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 95656ae22423..6e725f70129c 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1394,9 +1394,10 @@ var db = { "pluck": "\npluck( arr, prop[, options] )\n Extracts a property value from each element of an object array.\n\n The function skips `null` and `undefined` array elements.\n\n Extracted values are not cloned.\n\n Parameters\n ----------\n arr: Array\n Source array.\n\n prop: string\n Property to access.\n\n options: Object (optional)\n Options.\n\n options.copy: boolean (optional)\n Boolean indicating whether to return a new data structure. To mutate the\n input data structure (e.g., when input values can be discarded or when\n optimizing memory usage), set the `copy` option to `false`. Default:\n true.\n\n Returns\n -------\n out: Array\n Destination array.\n\n Examples\n --------\n > var arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > var out = pluck( arr, 'a' )\n [ 1, 0.5 ]\n\n > arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > out = pluck( arr, 'a', { 'copy': false } )\n [ 1, 0.5 ]\n > var bool = ( arr[ 0 ] === out[ 0 ] )\n true\n\n See Also\n --------\n deepPluck, pick\n", "pop": "\npop( collection )\n Removes and returns the last element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = pop( arr )\n [ [ 1.0, 2.0, 3.0, 4.0 ], 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = pop( arr )\n [ [ 1.0 ], 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = pop( arr )\n [ { 'length': 1, '0': 1.0 }, 2.0 ]\n\n See Also\n --------\n push, shift, unshift\n", "prepend": "\nprepend( collection1, collection2 )\n Adds the elements of one collection to the beginning of another collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection1: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n collection2: Array|TypedArray|Object\n A collection containing the elements to add. If the collection is an\n `Object`, the collection should be array-like.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = prepend( arr, [ 6.0, 7.0 ] )\n [ 6.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = prepend( arr, [ 3.0, 4.0 ] )\n [ 3.0, 4.0, 1.0, 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 1, '0': 1.0 };\n > arr = prepend( arr, [ 2.0, 3.0 ] )\n { 'length': 3, '0': 2.0, '1': 3.0, '2': 1.0 }\n\n See Also\n --------\n append, unshift\n", - "propertyDescriptor": "\npropertyDescriptor( value, property )\n Returns a property descriptor.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptor( obj, 'a' )\n {...}\n\n See Also\n --------\n hasOwnProp, defineProperty, propertyDescriptors\n", + "propertyDescriptor": "\npropertyDescriptor( value, property )\n Returns a property descriptor for an object's own property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptor( obj, 'a' )\n {...}\n\n See Also\n --------\n hasOwnProp, defineProperty, propertyDescriptorIn, propertyDescriptors\n", + "propertyDescriptorIn": "\npropertyDescriptorIn( value, property )\n Returns a property descriptor for an object's own or inherited property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptorIn( obj, 'a' )\n {...}\n\n See Also\n --------\n hasProp, defineProperty, propertyDescriptor, propertyDescriptorsIn\n", "propertyDescriptors": "\npropertyDescriptors( value )\n Returns an object's own property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n desc: Object\n Property descriptors.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptors( obj )\n { 'a': {...} }\n\n See Also\n --------\n defineProperty, defineProperties, propertyDescriptor, propertyDescriptorsIn, propertyNames, propertySymbols\n", - "propertyDescriptorsIn": "\npropertyDescriptorsIn( value )\n Returns an object's own and inherited property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n desc: Object\n An object's own and inherited property descriptors.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var desc = propertyDescriptorsIn( obj )\n { 'beep': {...}, 'foo': {...}, ... }\n\n See Also\n --------\n defineProperties, propertyDescriptor, propertyDescriptors, propertyNamesIn, propertySymbolsIn\n", + "propertyDescriptorsIn": "\npropertyDescriptorsIn( value )\n Returns an object's own and inherited property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n desc: Object\n An object's own and inherited property descriptors.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var desc = propertyDescriptorsIn( obj )\n { 'beep': {...}, 'foo': {...}, ... }\n\n See Also\n --------\n defineProperties, propertyDescriptorIn, propertyDescriptors, propertyNamesIn, propertySymbolsIn\n", "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeys, propertyNamesIn, propertySymbols\n", "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeysIn, propertyNames, propertySymbolsIn\n", "propertySymbols": "\npropertySymbols( value )\n Returns an array of an object's own symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own symbol properties.\n\n Examples\n --------\n > var s = propertySymbols( {} )\n\n See Also\n --------\n propertyNames, propertySymbolsIn\n", From cf2e75c463ef73a2c66a59a12ad19c6fde0e738c Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 23:27:52 -0700 Subject: [PATCH 0126/1062] Add assertion utility to test if an object property is writable --- .../assert/is-writable-property-in/README.md | 148 ++++++++++++++++++ .../benchmark/benchmark.js | 51 ++++++ .../is-writable-property-in/docs/repl.txt | 34 ++++ .../is-writable-property-in/examples/index.js | 59 +++++++ .../is-writable-property-in/lib/index.js | 55 +++++++ .../is-writable-property-in/lib/main.js | 69 ++++++++ .../is-writable-property-in/package.json | 75 +++++++++ .../is-writable-property-in/test/test.js | 139 ++++++++++++++++ 8 files changed, 630 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-writable-property-in/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-writable-property-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-writable-property-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-writable-property-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-writable-property-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-writable-property-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-writable-property-in/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-writable-property-in/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-writable-property-in/README.md b/lib/node_modules/@stdlib/assert/is-writable-property-in/README.md new file mode 100644 index 000000000000..68ddac049ce7 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-writable-property-in/README.md @@ -0,0 +1,148 @@ + + +# isWritablePropertyIn + +> Test if an object's own or inherited property is writable. + +
+ +## Usage + +```javascript +var isWritablePropertyIn = require( '@stdlib/assert/is-writable-property-in' ); +``` + +#### isWritablePropertyIn( value, property ) + +Returns a `boolean` indicating if a `value` has a writable `property`. + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = { + 'foo': 'bar' +}; + +defineProperty( obj, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); + +defineProperty( obj, 'setter', { + 'configurable': false, + 'enumerable': false, + 'set': function setter( v ) { + obj.foo = v; + } +}); + +var bool = isWritablePropertyIn( obj, 'foo' ); +// returns true + +bool = isWritablePropertyIn( obj, 'setter' ); +// returns true + +bool = isWritablePropertyIn( obj, 'beep' ); +// returns false +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isWritablePropertyIn( 'beep', 'toString' ); + // returns true + ``` + +- Property arguments are coerced to `strings`. + + ```javascript + var obj = { + 'null': 'foo' + }; + + var bool = isWritablePropertyIn( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isWritablePropertyIn = require( '@stdlib/assert/is-writable-property-in' ); + +var bool = isWritablePropertyIn( [ 'a' ], 'length' ); +// returns true + +bool = isWritablePropertyIn( { 'a': 'b' }, 'a' ); +// returns true + +bool = isWritablePropertyIn( [ 'a' ], 0 ); +// returns true + +bool = isWritablePropertyIn( { 'null': false }, null ); +// returns true + +bool = isWritablePropertyIn( { '[object Object]': false }, {} ); +// returns true + +bool = isWritablePropertyIn( {}, 'toString' ); +// returns true + +bool = isWritablePropertyIn( {}, 'hasOwnProperty' ); +// returns true + +bool = isWritablePropertyIn( null, 'a' ); +// returns false + +bool = isWritablePropertyIn( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-writable-property-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-writable-property-in/benchmark/benchmark.js new file mode 100644 index 000000000000..ef0ef8076642 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-writable-property-in/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isWritablePropertyIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isWritablePropertyIn( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-writable-property-in/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-writable-property-in/docs/repl.txt new file mode 100644 index 000000000000..0f32646610e3 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-writable-property-in/docs/repl.txt @@ -0,0 +1,34 @@ + +{{alias}}( value, property ) + Tests if an object's own or inherited property is writable. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own or inherited property is writable. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = false; + > desc.writable = false; + > desc.value = 'beep'; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + true + > bool = {{alias}}( obj, 'beep' ) + false + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-writable-property-in/examples/index.js b/lib/node_modules/@stdlib/assert/is-writable-property-in/examples/index.js new file mode 100644 index 000000000000..b56bcaaf3103 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-writable-property-in/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isWritablePropertyIn = require( './../lib' ); + +var bool = isWritablePropertyIn( [ 'a' ], 'length' ); +console.log( bool ); +// => true + +bool = isWritablePropertyIn( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => true + +bool = isWritablePropertyIn( [ 'a' ], 0 ); +console.log( bool ); +// => true + +bool = isWritablePropertyIn( { 'null': false }, null ); +console.log( bool ); +// => true + +bool = isWritablePropertyIn( { '[object Object]': false }, {} ); +console.log( bool ); +// => true + +bool = isWritablePropertyIn( {}, 'toString' ); +console.log( bool ); +// => true + +bool = isWritablePropertyIn( {}, 'hasOwnProperty' ); +console.log( bool ); +// => true + +bool = isWritablePropertyIn( null, 'a' ); +console.log( bool ); +// => false + +bool = isWritablePropertyIn( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-writable-property-in/lib/index.js b/lib/node_modules/@stdlib/assert/is-writable-property-in/lib/index.js new file mode 100644 index 000000000000..d2ca80115f93 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-writable-property-in/lib/index.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own or inherited property is writable. +* +* @module @stdlib/assert/is-writable-property-in +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isWritablePropertyIn = require( '@stdlib/assert/is-writable-property-in' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'writable': false, +* 'value': 'beep' +* }); +* +* var bool = isWritablePropertyIn( obj, 'boop' ); +* // returns true +* +* bool = isWritablePropertyIn( obj, 'beep' ); +* // returns false +*/ + +// MODULES // + +var isWritablePropertyIn = require( './main.js' ); + + +// EXPORTS // + +module.exports = isWritablePropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-writable-property-in/lib/main.js b/lib/node_modules/@stdlib/assert/is-writable-property-in/lib/main.js new file mode 100644 index 000000000000..718908e52908 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-writable-property-in/lib/main.js @@ -0,0 +1,69 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptorIn = require( '@stdlib/utils/property-descriptor-in' ); + + +// MAIN // + +/** +* Tests if an object's own or inherited property is writable. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is writable +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'writable': false, +* 'value': 'beep' +* }); +* +* var bool = isWritablePropertyIn( obj, 'boop' ); +* // returns true +* +* bool = isWritablePropertyIn( obj, 'beep' ); +* // returns false +*/ +function isWritablePropertyIn( value, property ) { + var desc = propertyDescriptorIn( value, property ); + return ( + desc !== null && + ( + desc.writable === true || + typeof desc.set === 'function' + ) + ); +} + + +// EXPORTS // + +module.exports = isWritablePropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-writable-property-in/package.json b/lib/node_modules/@stdlib/assert/is-writable-property-in/package.json new file mode 100644 index 000000000000..35ced7dc3954 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-writable-property-in/package.json @@ -0,0 +1,75 @@ +{ + "name": "@stdlib/assert/is-writable-property-in", + "version": "0.0.0", + "description": "Test if an object's own or inherited property is writable.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "in", + "inherited", + "prototype", + "proto", + "writable", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-writable-property-in/test/test.js b/lib/node_modules/@stdlib/assert/is-writable-property-in/test/test.js new file mode 100644 index 000000000000..681e30088782 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-writable-property-in/test/test.js @@ -0,0 +1,139 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isWritablePropertyIn = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isWritablePropertyIn, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if an object property is writable', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isWritablePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isWritablePropertyIn( [ 1, 2, 3 ], '1' ); + t.equal( bool, true, 'returns true' ); + + bool = isWritablePropertyIn( [ 1, 2, 3 ], 1 ); + t.equal( bool, true, 'returns true' ); + + bool = isWritablePropertyIn( new Foo(), 'bar' ); + t.equal( bool, true, 'returns true' ); + + bool = isWritablePropertyIn( [ 'a' ], 'length' ); + t.equal( bool, true, 'returns true' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + + bool = isWritablePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'set': setter + }); + + bool = isWritablePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + t.end(); + + function setter() { + // No-op... + } +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isWritablePropertyIn( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isWritablePropertyIn( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a writable property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + bool = isWritablePropertyIn( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `true` if provided a prototype property', function test( t ) { + var bool; + + bool = isWritablePropertyIn( {}, 'hasOwnProperty' ); + t.equal( bool, true, 'returns true' ); + + bool = isWritablePropertyIn( {}, 'constructor' ); + t.equal( bool, true, 'returns true' ); + + bool = isWritablePropertyIn( {}, 'toString' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isWritablePropertyIn( 'beep', 'toString' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); From 30f7e41522beaa0206127798a93b58283132add8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 23:29:34 -0700 Subject: [PATCH 0127/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index ad6fa2251e87..6a8643a15671 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -1773,6 +1773,15 @@ setReadOnly( ns, 'IS_WINDOWS', require( '@stdlib/assert/is-windows' ) ); */ setReadOnly( ns, 'isWritableProperty', require( '@stdlib/assert/is-writable-property' ) ); +/** +* @name isWritablePropertyIn +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-writable-property-in} +*/ +setReadOnly( ns, 'isWritablePropertyIn', require( '@stdlib/assert/is-writable-property-in' ) ); + // EXPORTS // From 0eca0cfbacf65e5d1213bd7baca1db11d9cff91c Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 23:30:12 -0700 Subject: [PATCH 0128/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 14 ++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 0c1d2cb46484..53ac59deb953 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -3262,10 +3262,24 @@ ns.push({ 'related': [ '@stdlib/assert/is-readable-property', '@stdlib/assert/is-read-write-property', + '@stdlib/assert/is-writable-property-in', '@stdlib/assert/is-write-only-property' ] }); +ns.push({ + 'alias': 'isWritableProperty-in', + 'path': '@stdlib/assert/is-writable-property-in', + 'value': require( '@stdlib/assert/is-writable-property-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-readable-property-in', + '@stdlib/assert/is-read-write-property-in', + '@stdlib/assert/is-writable-property', + '@stdlib/assert/is-write-only-property-in' + ] +}); + ns.push({ 'alias': 'IteratorSymbol', 'path': '@stdlib/symbol/iterator', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index b8e6072d7040..7fc6057cd1df 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1281,6 +1281,7 @@ var db = { "isVectorLike": "M = {};\nM.data = [ 0, 0, 0, 0 ];\nM.ndims = 1;\nM.shape = [ 4 ];\nM.strides = [ 1 ];\nM.offset = 0;\nM.order = 'row-major';\nM.dtype = 'generic';\nM.length = 4;\nM.flags = {};\nM.get = function get( i, j ) {};\nM.set = function set( i, j ) {};\nbool = isVectorLike( M )\nbool = isVectorLike( [ 1, 2, 3, 4 ] )\nbool = isVectorLike( 3.14 )\nbool = isVectorLike( {} )\n", "isWhitespace": "bool = isWhitespace( ' ' )\nbool = isWhitespace( 'abcdef' )\nbool = isWhitespace( '' )\n", "isWritableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = false;\ndesc.value = 'beep';\ndefineProperty( obj, 'beep', desc );\nbool = isWritableProperty( obj, 'boop' )\nbool = isWritableProperty( obj, 'beep' )\n", + "isWritableProperty-in": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = false;\ndesc.value = 'beep';\ndefineProperty( obj, 'beep', desc );\nbool = isWritableProperty-in( obj, 'boop' )\nbool = isWritableProperty-in( obj, 'beep' )\n", "IteratorSymbol": "s = IteratorSymbol\n", "keyBy": "function toKey( v ) { return v.a; };\narr = [ { 'a': 1 }, { 'a': 2 } ];\nkeyBy( arr, toKey )\n", "keyByRight": "function toKey( v ) { return v.a; };\narr = [ { 'a': 1 }, { 'a': 2 } ];\nkeyByRight( arr, toKey )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 6e725f70129c..fc233f5f5277 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1280,7 +1280,8 @@ var db = { "isURIError": "\nisURIError( value )\n Tests if a value is a URIError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a URIError (or a descendant) object,\n false positives may occur due to the fact that the URIError constructor\n inherits from Error and has no internal class of its own. Hence, URIError\n impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a URIError object.\n\n Examples\n --------\n > var bool = isURIError( new URIError( 'beep' ) )\n true\n > bool = isURIError( {} )\n false\n\n See Also\n --------\n isError\n", "isVectorLike": "\nisVectorLike( value )\n Tests if a value is a 1-dimensional ndarray-like object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a 1-dimensional ndarray-like\n object.\n\n Examples\n --------\n > var M = {};\n > M.data = [ 0, 0, 0, 0 ];\n > M.ndims = 1;\n > M.shape = [ 4 ];\n > M.strides = [ 1 ];\n > M.offset = 0;\n > M.order = 'row-major';\n > M.dtype = 'generic';\n > M.length = 4;\n > M.flags = {};\n > M.get = function get( i, j ) {};\n > M.set = function set( i, j ) {};\n > var bool = isVectorLike( M )\n true\n > bool = isVectorLike( [ 1, 2, 3, 4 ] )\n false\n > bool = isVectorLike( 3.14 )\n false\n > bool = isVectorLike( {} )\n false\n\n See Also\n --------\n isArray, isArrayLike, isMatrixLike, isndarrayLike, isTypedArrayLike\n", "isWhitespace": "\nisWhitespace( str )\n Tests whether a string contains only white space characters.\n\n A white space character is defined as one of the 25 characters defined as a\n white space (\"WSpace=Y\",\"WS\") character in the Unicode 9.0 character\n database, as well as one related white space character without the Unicode\n character property \"WSpace=Y\" (zero width non-breaking space which was\n deprecated as of Unicode 3.2).\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only white space\n characters.\n\n Examples\n --------\n > var bool = isWhitespace( ' ' )\n true\n > bool = isWhitespace( 'abcdef' )\n false\n > bool = isWhitespace( '' )\n false\n\n See Also\n --------\n RE_WHITESPACE\n", - "isWritableProperty": "\nisWritableProperty( value, property )\n Tests if an object's own property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty( obj, 'boop' )\n true\n > bool = isWritableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty\n", + "isWritableProperty": "\nisWritableProperty( value, property )\n Tests if an object's own property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty( obj, 'boop' )\n true\n > bool = isWritableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty, isWritableProperty-in\n", + "isWritableProperty-in": "\nisWritableProperty-in( value, property )\n Tests if an object's own or inherited property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty-in( obj, 'boop' )\n true\n > bool = isWritableProperty-in( obj, 'beep' )\n false\n\n See Also\n --------\n isWritableProperty\n", "IteratorSymbol": "\nIteratorSymbol\n Iterator symbol.\n\n This symbol specifies the default iterator for an object.\n\n The symbol is only supported in ES6/ES2015+ environments. For non-supporting\n environments, the value is `null`.\n\n Examples\n --------\n > var s = IteratorSymbol\n\n See Also\n --------\n Symbol\n", "kde2d": "", "keyBy": "\nkeyBy( collection, fcn[, thisArg] )\n Converts a collection to an object whose keys are determined by a provided\n function and whose values are the collection values.\n\n When invoked, the input function is provided two arguments:\n\n - `value`: collection value\n - `index`: collection index\n\n If more than one element in a collection resolves to the same key, the key\n value is the collection element which last resolved to the key.\n\n Object values are shallow copies.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Object\n Output object.\n\n Examples\n --------\n > function toKey( v ) { return v.a; };\n > var arr = [ { 'a': 1 }, { 'a': 2 } ];\n > keyBy( arr, toKey )\n { '1': { 'a': 1 }, '2': { 'a': 2 } }\n\n See Also\n --------\n forEach\n", From ff8e4965d2a190d4580151d2a58f2863c8a6af51 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 23:30:57 -0700 Subject: [PATCH 0129/1062] Fix test --- .../@stdlib/assert/is-writable-property/test/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/assert/is-writable-property/test/test.js b/lib/node_modules/@stdlib/assert/is-writable-property/test/test.js index 30f35d60d691..c44ad4d939cd 100644 --- a/lib/node_modules/@stdlib/assert/is-writable-property/test/test.js +++ b/lib/node_modules/@stdlib/assert/is-writable-property/test/test.js @@ -120,7 +120,7 @@ tape( 'the function returns `false` if provided a prototype property', function bool = isWritableProperty( {}, 'hasOwnProperty' ); t.equal( bool, false, 'returns false when provided a prototype property' ); - bool = isWritableProperty( {}, 'prototype' ); + bool = isWritableProperty( {}, 'toString' ); t.equal( bool, false, 'returns false' ); bool = isWritableProperty( {}, 'constructor' ); From 67ae5a30e6b3f893a2d8a1f79ecfa5196d4bf1c8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 23:31:23 -0700 Subject: [PATCH 0130/1062] Make test message consistent --- .../@stdlib/assert/is-writable-property/test/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/assert/is-writable-property/test/test.js b/lib/node_modules/@stdlib/assert/is-writable-property/test/test.js index c44ad4d939cd..d1bc4fe8953b 100644 --- a/lib/node_modules/@stdlib/assert/is-writable-property/test/test.js +++ b/lib/node_modules/@stdlib/assert/is-writable-property/test/test.js @@ -118,7 +118,7 @@ tape( 'the function returns `false` if provided a prototype property', function var bool; bool = isWritableProperty( {}, 'hasOwnProperty' ); - t.equal( bool, false, 'returns false when provided a prototype property' ); + t.equal( bool, false, 'returns false' ); bool = isWritableProperty( {}, 'toString' ); t.equal( bool, false, 'returns false' ); From cb94970314a90faa7aac3e46fa344b7af8199176 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 23:33:20 -0700 Subject: [PATCH 0131/1062] Update tests --- .../assert/is-nonenumerable-property/test/test.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/test/test.js b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/test/test.js index 7e3e4eb9f1a7..29e590b0defa 100644 --- a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/test/test.js +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/test/test.js @@ -83,12 +83,6 @@ tape( 'the function returns `false` if provided a property argument which does n bool = isNonEnumerableProperty( obj, 'c' ); t.equal( bool, false, 'returns false' ); - bool = isNonEnumerableProperty( obj, 'prototype' ); - t.equal( bool, false, 'returns false' ); - - bool = isNonEnumerableProperty( obj, 'constructor' ); - t.equal( bool, false, 'returns false' ); - t.end(); }); @@ -117,7 +111,13 @@ tape( 'the function returns `false` if provided a prototype property', function var bool; bool = isNonEnumerableProperty( {}, 'hasOwnProperty' ); - t.equal( bool, false, 'returns false when provided a prototype property' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonEnumerableProperty( {}, 'toString' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonEnumerableProperty( {}, 'constructor' ); + t.equal( bool, false, 'returns false' ); t.end(); }); From ca649a1d5b7d670ca017783094c38dfbbbb42cc4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 23:34:31 -0700 Subject: [PATCH 0132/1062] Update tests --- .../assert/is-enumerable-property/test/test.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property/test/test.js b/lib/node_modules/@stdlib/assert/is-enumerable-property/test/test.js index 38e69ad0fa53..d60f3ab1dffd 100644 --- a/lib/node_modules/@stdlib/assert/is-enumerable-property/test/test.js +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property/test/test.js @@ -81,13 +81,7 @@ tape( 'the function returns `false` if an object property is not enumerable', fu bool = isEnumerableProperty( obj, 'c' ); t.equal( bool, false, 'returns false' ); - bool = isEnumerableProperty( obj, 'prototype' ); - t.equal( bool, false, 'returns false' ); - - bool = isEnumerableProperty( obj, 'constructor' ); - t.equal( bool, false, 'returns false' ); - - bool = isEnumerableProperty( ['a'], 'length' ); + bool = isEnumerableProperty( [ 'a' ], 'length' ); t.equal( bool, false, 'returns false' ); t.end(); @@ -97,7 +91,13 @@ tape( 'the function returns `false` if provided a prototype property', function var bool; bool = isEnumerableProperty( {}, 'hasOwnProperty' ); - t.equal( bool, false, 'returns false when provided a prototype property' ); + t.equal( bool, false, 'returns false' ); + + bool = isEnumerableProperty( {}, 'toString' ); + t.equal( bool, false, 'returns false' ); + + bool = isEnumerableProperty( {}, 'constructor' ); + t.equal( bool, false, 'returns false' ); t.end(); }); From bd7e4c30aa11ee73105365c9ffa838976d6495f5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 23:41:11 -0700 Subject: [PATCH 0133/1062] Add assertion utility to test if an object property is readable --- .../assert/is-readable-property-in/README.md | 148 +++++++++++++++++ .../benchmark/benchmark.js | 51 ++++++ .../is-readable-property-in/docs/repl.txt | 33 ++++ .../is-readable-property-in/examples/index.js | 59 +++++++ .../is-readable-property-in/lib/index.js | 58 +++++++ .../is-readable-property-in/lib/main.js | 72 +++++++++ .../is-readable-property-in/package.json | 75 +++++++++ .../is-readable-property-in/test/test.js | 151 ++++++++++++++++++ 8 files changed, 647 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-readable-property-in/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-readable-property-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-readable-property-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-readable-property-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-readable-property-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-readable-property-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-readable-property-in/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-readable-property-in/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-readable-property-in/README.md b/lib/node_modules/@stdlib/assert/is-readable-property-in/README.md new file mode 100644 index 000000000000..27ce6b3a35be --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-readable-property-in/README.md @@ -0,0 +1,148 @@ + + +# isReadablePropertyIn + +> Test if an object's own or inherited property is readable. + +
+ +## Usage + +```javascript +var isReadablePropertyIn = require( '@stdlib/assert/is-readable-property-in' ); +``` + +#### isReadablePropertyIn( value, property ) + +Returns a `boolean` indicating if a `value` has a readable `property`. + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = { + 'foo': 'bar' +}; + +defineProperty( obj, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); + +defineProperty( obj, 'setter', { + 'configurable': false, + 'enumerable': false, + 'set': function setter( v ) { + obj.foo = v; + } +}); + +var bool = isReadablePropertyIn( obj, 'foo' ); +// returns true + +bool = isReadablePropertyIn( obj, 'beep' ); +// returns true + +bool = isReadablePropertyIn( obj, 'setter' ); +// returns false +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isReadablePropertyIn( 'beep', 'toString' ); + // returns true + ``` + +- Property arguments are coerced to `strings`. + + ```javascript + var obj = { + 'null': 'foo' + }; + + var bool = isReadablePropertyIn( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isReadablePropertyIn = require( '@stdlib/assert/is-readable-property-in' ); + +var bool = isReadablePropertyIn( [ 'a' ], 'length' ); +// returns true + +bool = isReadablePropertyIn( { 'a': 'b' }, 'a' ); +// returns true + +bool = isReadablePropertyIn( [ 'a' ], 0 ); +// returns true + +bool = isReadablePropertyIn( { 'null': false }, null ); +// returns true + +bool = isReadablePropertyIn( { '[object Object]': false }, {} ); +// returns true + +bool = isReadablePropertyIn( {}, 'toString' ); +// returns true + +bool = isReadablePropertyIn( {}, 'hasOwnProperty' ); +// returns true + +bool = isReadablePropertyIn( null, 'a' ); +// returns false + +bool = isReadablePropertyIn( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-readable-property-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-readable-property-in/benchmark/benchmark.js new file mode 100644 index 000000000000..d05d02dca48a --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-readable-property-in/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isReadablePropertyIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isReadablePropertyIn( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-readable-property-in/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-readable-property-in/docs/repl.txt new file mode 100644 index 000000000000..655ebf82d95d --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-readable-property-in/docs/repl.txt @@ -0,0 +1,33 @@ + +{{alias}}( value, property ) + Tests if an object's own or inherited property is readable. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own or inherited property is readable. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = false; + > desc.set = function setter( v ) { obj.boop = v; }; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + true + > bool = {{alias}}( obj, 'beep' ) + false + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-readable-property-in/examples/index.js b/lib/node_modules/@stdlib/assert/is-readable-property-in/examples/index.js new file mode 100644 index 000000000000..cb0e72016a49 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-readable-property-in/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isReadablePropertyIn = require( './../lib' ); + +var bool = isReadablePropertyIn( [ 'a' ], 'length' ); +console.log( bool ); +// => true + +bool = isReadablePropertyIn( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => true + +bool = isReadablePropertyIn( [ 'a' ], 0 ); +console.log( bool ); +// => true + +bool = isReadablePropertyIn( { 'null': false }, null ); +console.log( bool ); +// => true + +bool = isReadablePropertyIn( { '[object Object]': false }, {} ); +console.log( bool ); +// => true + +bool = isReadablePropertyIn( {}, 'toString' ); +console.log( bool ); +// => true + +bool = isReadablePropertyIn( {}, 'hasOwnProperty' ); +console.log( bool ); +// => true + +bool = isReadablePropertyIn( null, 'a' ); +console.log( bool ); +// => false + +bool = isReadablePropertyIn( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-readable-property-in/lib/index.js b/lib/node_modules/@stdlib/assert/is-readable-property-in/lib/index.js new file mode 100644 index 000000000000..198f7d120ae5 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-readable-property-in/lib/index.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own or inherited property is readable. +* +* @module @stdlib/assert/is-readable-property-in +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isReadablePropertyIn = require( '@stdlib/assert/is-readable-property-in' ); +* +* var obj = { +* 'boop': true +* }; +* +* function setter( v ) { +* obj.boop = v; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'set': setter +* }); +* +* var bool = isReadablePropertyIn( obj, 'boop' ); +* // returns true +* +* bool = isReadablePropertyIn( obj, 'beep' ); +* // returns false +*/ + +// MODULES // + +var isReadablePropertyIn = require( './main.js' ); + + +// EXPORTS // + +module.exports = isReadablePropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-readable-property-in/lib/main.js b/lib/node_modules/@stdlib/assert/is-readable-property-in/lib/main.js new file mode 100644 index 000000000000..c4ec928c6e45 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-readable-property-in/lib/main.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptorIn = require( '@stdlib/utils/property-descriptor-in' ); + + +// MAIN // + +/** +* Tests if an object's own or inherited property is readable. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is readable +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* function setter( v ) { +* obj.boop = v; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'set': setter +* }); +* +* var bool = isReadablePropertyIn( obj, 'boop' ); +* // returns true +* +* bool = isReadablePropertyIn( obj, 'beep' ); +* // returns false +*/ +function isReadablePropertyIn( value, property ) { + var desc = propertyDescriptorIn( value, property ); + return ( + desc !== null && + ( + desc.writable !== void 0 || // data descriptor + typeof desc.get === 'function' // accessor descriptor + ) + ); +} + + +// EXPORTS // + +module.exports = isReadablePropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-readable-property-in/package.json b/lib/node_modules/@stdlib/assert/is-readable-property-in/package.json new file mode 100644 index 000000000000..9d8fe0ac8179 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-readable-property-in/package.json @@ -0,0 +1,75 @@ +{ + "name": "@stdlib/assert/is-readable-property-in", + "version": "0.0.0", + "description": "Test if an object's own or inherited property is readable.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "inherited", + "in", + "prototype", + "proto", + "readable", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-readable-property-in/test/test.js b/lib/node_modules/@stdlib/assert/is-readable-property-in/test/test.js new file mode 100644 index 000000000000..6abcac5593f6 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-readable-property-in/test/test.js @@ -0,0 +1,151 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isReadablePropertyIn = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isReadablePropertyIn, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if an object property is readable', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isReadablePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadablePropertyIn( [ 1, 2, 3 ], '1' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadablePropertyIn( [ 1, 2, 3 ], 1 ); + t.equal( bool, true, 'returns true' ); + + bool = isReadablePropertyIn( new Foo(), 'bar' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadablePropertyIn( [ 'a' ], 'length' ); + t.equal( bool, true, 'returns true' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'b' + }); + + bool = isReadablePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'get': getter + }); + + bool = isReadablePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + t.end(); + + function getter() { + // No-op... + } +}); + +tape( 'the function returns `true` if provided a readable prototype property', function test( t ) { + var bool; + + bool = isReadablePropertyIn( {}, 'hasOwnProperty' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadablePropertyIn( {}, 'toString' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadablePropertyIn( {}, 'constructor' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isReadablePropertyIn( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isReadablePropertyIn( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a readable property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + defineProperty( obj, 'd', { + 'configurable': true, + 'enumerable': true, + 'set': setter + }); + + bool = isReadablePropertyIn( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadablePropertyIn( obj, 'd' ); + t.equal( bool, false, 'returns false' ); + t.end(); + + function setter() { + // No-op... + } +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isReadablePropertyIn( 'beep', 'toString' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); From abc00dd8d2ca128eabdb3999bb69822582f9d935 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 23:42:14 -0700 Subject: [PATCH 0134/1062] Update examples --- lib/node_modules/@stdlib/assert/is-readable-property/README.md | 2 +- .../@stdlib/assert/is-readable-property/examples/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-readable-property/README.md b/lib/node_modules/@stdlib/assert/is-readable-property/README.md index 8e57f3480a92..45335ab70286 100644 --- a/lib/node_modules/@stdlib/assert/is-readable-property/README.md +++ b/lib/node_modules/@stdlib/assert/is-readable-property/README.md @@ -124,7 +124,7 @@ bool = isReadableProperty( { 'null': false }, null ); bool = isReadableProperty( { '[object Object]': false }, {} ); // returns true -bool = isReadableProperty( {}, 'prototype' ); +bool = isReadableProperty( {}, 'toString' ); // returns false bool = isReadableProperty( {}, 'hasOwnProperty' ); diff --git a/lib/node_modules/@stdlib/assert/is-readable-property/examples/index.js b/lib/node_modules/@stdlib/assert/is-readable-property/examples/index.js index da31d68e0b84..cbeabf46bd00 100644 --- a/lib/node_modules/@stdlib/assert/is-readable-property/examples/index.js +++ b/lib/node_modules/@stdlib/assert/is-readable-property/examples/index.js @@ -42,7 +42,7 @@ bool = isReadableProperty( { '[object Object]': false }, {} ); console.log( bool ); // => true -bool = isReadableProperty( {}, 'prototype' ); +bool = isReadableProperty( {}, 'toString' ); console.log( bool ); // => false From b03b0b8c795bcf6b27bb0bab1708cc7b05da87fd Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 23:42:34 -0700 Subject: [PATCH 0135/1062] Update tests --- .../@stdlib/assert/is-readable-property/test/test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-readable-property/test/test.js b/lib/node_modules/@stdlib/assert/is-readable-property/test/test.js index bdc8b6916810..b6fc4c65f35b 100644 --- a/lib/node_modules/@stdlib/assert/is-readable-property/test/test.js +++ b/lib/node_modules/@stdlib/assert/is-readable-property/test/test.js @@ -130,9 +130,9 @@ tape( 'the function returns `false` if provided a prototype property', function var bool; bool = isReadableProperty( {}, 'hasOwnProperty' ); - t.equal( bool, false, 'returns false when provided a prototype property' ); + t.equal( bool, false, 'returns false ' ); - bool = isReadableProperty( {}, 'prototype' ); + bool = isReadableProperty( {}, 'toString' ); t.equal( bool, false, 'returns false' ); bool = isReadableProperty( {}, 'constructor' ); From fdc6df040ba455a4803c009acac5905ddea7715d Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 23:43:09 -0700 Subject: [PATCH 0136/1062] Update examples --- .../@stdlib/assert/is-nonenumerable-property/README.md | 2 +- .../@stdlib/assert/is-nonenumerable-property/examples/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/README.md b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/README.md index dfc4a53ee42e..7c5ff47ab3f3 100644 --- a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/README.md +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/README.md @@ -94,7 +94,7 @@ bool = isNonEnumerableProperty( { 'a': 'b' }, 'a' ); bool = isNonEnumerableProperty( [ 'a' ], 0 ); // returns false -bool = isNonEnumerableProperty( {}, 'prototype' ); +bool = isNonEnumerableProperty( {}, 'toString' ); // returns false bool = isNonEnumerableProperty( {}, 'hasOwnProperty' ); diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/examples/index.js b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/examples/index.js index 590a61cc693e..4ec1453ba5ad 100644 --- a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/examples/index.js +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/examples/index.js @@ -34,7 +34,7 @@ bool = isNonEnumerableProperty( [ 'a' ], 0 ); console.log( bool ); // => false -bool = isNonEnumerableProperty( {}, 'prototype' ); +bool = isNonEnumerableProperty( {}, 'toString' ); console.log( bool ); // => false From eb08b67a0e04e2f7c3456d89425cd54780b01fe8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 23:43:38 -0700 Subject: [PATCH 0137/1062] Update examples --- .../@stdlib/assert/is-enumerable-property/README.md | 2 +- .../@stdlib/assert/is-enumerable-property/examples/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property/README.md b/lib/node_modules/@stdlib/assert/is-enumerable-property/README.md index cd0dffe75b11..0e1db02091a7 100644 --- a/lib/node_modules/@stdlib/assert/is-enumerable-property/README.md +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property/README.md @@ -111,7 +111,7 @@ bool = isEnumerableProperty( [ 'a' ], 0 ); bool = isEnumerableProperty( [ 'a' ], 'length' ); // returns false -bool = isEnumerableProperty( {}, 'prototype' ); +bool = isEnumerableProperty( {}, 'toString' ); // returns false bool = isEnumerableProperty( {}, 'hasOwnProperty' ); diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property/examples/index.js b/lib/node_modules/@stdlib/assert/is-enumerable-property/examples/index.js index c8f1ad62a95c..17df4384da7a 100644 --- a/lib/node_modules/@stdlib/assert/is-enumerable-property/examples/index.js +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property/examples/index.js @@ -34,7 +34,7 @@ bool = isEnumerableProperty( [ 'a' ], 'length' ); console.log( bool ); // => false -bool = isEnumerableProperty( {}, 'prototype' ); +bool = isEnumerableProperty( {}, 'toString' ); console.log( bool ); // => false From 5dbaf6c51c9a32fe7968e1c13316bccd8512711b Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 23:44:15 -0700 Subject: [PATCH 0138/1062] Update examples --- lib/node_modules/@stdlib/assert/is-writable-property/README.md | 2 +- .../@stdlib/assert/is-writable-property/examples/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-writable-property/README.md b/lib/node_modules/@stdlib/assert/is-writable-property/README.md index bba24889e06f..8a3d544a2bb1 100644 --- a/lib/node_modules/@stdlib/assert/is-writable-property/README.md +++ b/lib/node_modules/@stdlib/assert/is-writable-property/README.md @@ -124,7 +124,7 @@ bool = isWritableProperty( { 'null': false }, null ); bool = isWritableProperty( { '[object Object]': false }, {} ); // returns true -bool = isWritableProperty( {}, 'prototype' ); +bool = isWritableProperty( {}, 'toString' ); // returns false bool = isWritableProperty( {}, 'hasOwnProperty' ); diff --git a/lib/node_modules/@stdlib/assert/is-writable-property/examples/index.js b/lib/node_modules/@stdlib/assert/is-writable-property/examples/index.js index 36084bce59bf..1e5a444f5b8c 100644 --- a/lib/node_modules/@stdlib/assert/is-writable-property/examples/index.js +++ b/lib/node_modules/@stdlib/assert/is-writable-property/examples/index.js @@ -42,7 +42,7 @@ bool = isWritableProperty( { '[object Object]': false }, {} ); console.log( bool ); // => true -bool = isWritableProperty( {}, 'prototype' ); +bool = isWritableProperty( {}, 'toString' ); console.log( bool ); // => false From 7a3caa8586798b3577eb7e082a77c882d0c25ac4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 23:44:53 -0700 Subject: [PATCH 0139/1062] Update tests --- .../is-writable-property-in/test/test.js | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-writable-property-in/test/test.js b/lib/node_modules/@stdlib/assert/is-writable-property-in/test/test.js index 681e30088782..f9161015ddc7 100644 --- a/lib/node_modules/@stdlib/assert/is-writable-property-in/test/test.js +++ b/lib/node_modules/@stdlib/assert/is-writable-property-in/test/test.js @@ -88,6 +88,21 @@ tape( 'the function returns `true` if an object property is writable', function } }); +tape( 'the function returns `true` if provided a writable inherited property', function test( t ) { + var bool; + + bool = isWritablePropertyIn( {}, 'hasOwnProperty' ); + t.equal( bool, true, 'returns true' ); + + bool = isWritablePropertyIn( {}, 'constructor' ); + t.equal( bool, true, 'returns true' ); + + bool = isWritablePropertyIn( {}, 'toString' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { var bool; @@ -114,21 +129,6 @@ tape( 'the function returns `false` if provided a property argument which does n t.end(); }); -tape( 'the function returns `true` if provided a prototype property', function test( t ) { - var bool; - - bool = isWritablePropertyIn( {}, 'hasOwnProperty' ); - t.equal( bool, true, 'returns true' ); - - bool = isWritablePropertyIn( {}, 'constructor' ); - t.equal( bool, true, 'returns true' ); - - bool = isWritablePropertyIn( {}, 'toString' ); - t.equal( bool, true, 'returns true' ); - - t.end(); -}); - tape( 'values are coerced to objects', function test( t ) { var bool; From 0c88fa6c81d40b3dc83e24deacde3f624bd9ef26 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 23:46:05 -0700 Subject: [PATCH 0140/1062] Update test description --- .../@stdlib/assert/is-enumerable-property/test/test.js | 2 +- .../@stdlib/assert/is-nonenumerable-property/test/test.js | 2 +- .../@stdlib/assert/is-readable-property-in/test/test.js | 2 +- .../@stdlib/assert/is-readable-property/test/test.js | 2 +- .../@stdlib/assert/is-writable-property/test/test.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property/test/test.js b/lib/node_modules/@stdlib/assert/is-enumerable-property/test/test.js index d60f3ab1dffd..6d70f893aee8 100644 --- a/lib/node_modules/@stdlib/assert/is-enumerable-property/test/test.js +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property/test/test.js @@ -87,7 +87,7 @@ tape( 'the function returns `false` if an object property is not enumerable', fu t.end(); }); -tape( 'the function returns `false` if provided a prototype property', function test( t ) { +tape( 'the function returns `false` if provided an inherited property', function test( t ) { var bool; bool = isEnumerableProperty( {}, 'hasOwnProperty' ); diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/test/test.js b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/test/test.js index 29e590b0defa..c67a584a90bf 100644 --- a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/test/test.js +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/test/test.js @@ -107,7 +107,7 @@ tape( 'the function returns `true` if an object property is non-enumerable', fun t.end(); }); -tape( 'the function returns `false` if provided a prototype property', function test( t ) { +tape( 'the function returns `false` if provided an inherited property', function test( t ) { var bool; bool = isNonEnumerableProperty( {}, 'hasOwnProperty' ); diff --git a/lib/node_modules/@stdlib/assert/is-readable-property-in/test/test.js b/lib/node_modules/@stdlib/assert/is-readable-property-in/test/test.js index 6abcac5593f6..43317266b9a1 100644 --- a/lib/node_modules/@stdlib/assert/is-readable-property-in/test/test.js +++ b/lib/node_modules/@stdlib/assert/is-readable-property-in/test/test.js @@ -88,7 +88,7 @@ tape( 'the function returns `true` if an object property is readable', function } }); -tape( 'the function returns `true` if provided a readable prototype property', function test( t ) { +tape( 'the function returns `true` if provided a readable inherited property', function test( t ) { var bool; bool = isReadablePropertyIn( {}, 'hasOwnProperty' ); diff --git a/lib/node_modules/@stdlib/assert/is-readable-property/test/test.js b/lib/node_modules/@stdlib/assert/is-readable-property/test/test.js index b6fc4c65f35b..d2cdfe0a592d 100644 --- a/lib/node_modules/@stdlib/assert/is-readable-property/test/test.js +++ b/lib/node_modules/@stdlib/assert/is-readable-property/test/test.js @@ -126,7 +126,7 @@ tape( 'the function returns `false` if provided a property argument which does n } }); -tape( 'the function returns `false` if provided a prototype property', function test( t ) { +tape( 'the function returns `false` if provided an inherited property', function test( t ) { var bool; bool = isReadableProperty( {}, 'hasOwnProperty' ); diff --git a/lib/node_modules/@stdlib/assert/is-writable-property/test/test.js b/lib/node_modules/@stdlib/assert/is-writable-property/test/test.js index d1bc4fe8953b..b593e1ddbc48 100644 --- a/lib/node_modules/@stdlib/assert/is-writable-property/test/test.js +++ b/lib/node_modules/@stdlib/assert/is-writable-property/test/test.js @@ -114,7 +114,7 @@ tape( 'the function returns `false` if provided a property argument which does n t.end(); }); -tape( 'the function returns `false` if provided a prototype property', function test( t ) { +tape( 'the function returns `false` if provided an inherited property', function test( t ) { var bool; bool = isWritableProperty( {}, 'hasOwnProperty' ); From d0f31fcae93c408e4a88af6b23704a94b1b25391 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 23:47:19 -0700 Subject: [PATCH 0141/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 6a8643a15671..dc9ae33fc241 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -1404,6 +1404,15 @@ setReadOnly( ns, 'isRangeError', require( '@stdlib/assert/is-range-error' ) ); */ setReadOnly( ns, 'isReadableProperty', require( '@stdlib/assert/is-readable-property' ) ); +/** +* @name isReadablePropertyIn +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-readable-property-in} +*/ +setReadOnly( ns, 'isReadablePropertyIn', require( '@stdlib/assert/is-readable-property-in' ) ); + /** * @name isReferenceError * @memberof ns From aaf52ba5505a54073659098f091466205e1f1c62 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 5 Sep 2018 23:48:44 -0700 Subject: [PATCH 0142/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 14 ++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 +++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 53ac59deb953..bb11f771109d 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -2846,10 +2846,24 @@ ns.push({ 'related': [ '@stdlib/assert/is-read-only-property', '@stdlib/assert/is-read-write-property', + '@stdlib/assert/is-readable-property-in', '@stdlib/assert/is-writable-property' ] }); +ns.push({ + 'alias': 'isReadablePropertyIn', + 'path': '@stdlib/assert/is-readable-property-in', + 'value': require( '@stdlib/assert/is-readable-property-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-read-only-property-in', + '@stdlib/assert/is-read-write-property-in', + '@stdlib/assert/is-readable-property', + '@stdlib/assert/is-writable-property-in' + ] +}); + ns.push({ 'alias': 'isReferenceError', 'path': '@stdlib/assert/is-reference-error', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 7fc6057cd1df..06ad18f1e734 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1242,6 +1242,7 @@ var db = { "isProbabilityArray": "bool = isProbabilityArray( [ 0.5, new Number(0.8) ] )\nbool = isProbabilityArray( [ 0.8, 1.2 ] )\nbool = isProbabilityArray( [ 0.8, '0.2' ] )\n", "isRangeError": "bool = isRangeError( new RangeError( 'beep' ) )\nbool = isRangeError( {} )\n", "isReadableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadableProperty( obj, 'boop' )\nbool = isReadableProperty( obj, 'beep' )\n", + "isReadablePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadablePropertyIn( obj, 'boop' )\nbool = isReadablePropertyIn( obj, 'beep' )\n", "isReferenceError": "bool = isReferenceError( new ReferenceError( 'beep' ) )\nbool = isReferenceError( {} )\n", "isRegExp": "bool = isRegExp( /\\.+/ )\nbool = isRegExp( {} )\n", "isRegExpString": "bool = isRegExpString( '/beep/' )\nbool = isRegExpString( 'beep' )\nbool = isRegExpString( '' )\nbool = isRegExpString( null )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index fc233f5f5277..8a8f854e2723 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1241,7 +1241,8 @@ var db = { "isProbability": "\nisProbability( value )\n Tests if a value is a probability.\n\n A probability is defined as a numeric value on the interval [0,1].\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a probability.\n\n Examples\n --------\n > var bool = isProbability( 0.5 )\n true\n > bool = isProbability( new Number( 0.5 ) )\n true\n > bool = isProbability( 3.14 )\n false\n > bool = isProbability( -5.0 )\n false\n > bool = isProbability( null )\n false\n\n\nisProbability.isPrimitive( value )\n Tests if a value is a number primitive which is a probability.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive which is a\n probability.\n\n Examples\n --------\n > var bool = isProbability.isPrimitive( 0.3 )\n true\n > bool = isProbability.isPrimitive( new Number( 0.3 ) )\n false\n\n\nisProbability.isObject( value )\n Tests if a value is a number object having a value which is a probability.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object having a value which\n is a probability.\n\n Examples\n --------\n > var bool = isProbability.isObject( 0.77 )\n false\n > bool = isProbability.isObject( new Number( 0.77 ) )\n true\n\n\n See Also\n --------\n isNumber\n", "isProbabilityArray": "\nisProbabilityArray( value )\n Tests if a value is an array-like object containing only probabilities.\n\n A probability is defined as a numeric value on the interval [0,1].\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n probabilities.\n\n Examples\n --------\n > var bool = isProbabilityArray( [ 0.5, new Number(0.8) ] )\n true\n > bool = isProbabilityArray( [ 0.8, 1.2 ] )\n false\n > bool = isProbabilityArray( [ 0.8, '0.2' ] )\n false\n\n\nisProbabilityArray.primitives( value )\n Tests if a value is an array-like object containing only primitive\n probabilities.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n primitive probabilities.\n\n Examples\n --------\n > var bool = isProbabilityArray.primitives( [ 1.0, 0.0, 0.5 ] )\n true\n > bool = isProbabilityArray.primitives( [ 0.3, new Number(0.4) ] )\n false\n\n\nisProbabilityArray.objects( value )\n Tests if a value is an array-like object containing only number objects\n having probability values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n number objects having probability values.\n\n Examples\n --------\n > var bool = isProbabilityArray.objects( [ new Number(0.7), new Number(1.0) ] )\n true\n > bool = isProbabilityArray.objects( [ 1.0, 0.0, new Number(0.7) ] )\n false\n\n See Also\n --------\n isArray, isProbability\n", "isRangeError": "\nisRangeError( value )\n Tests if a value is a RangeError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a RangeError (or a descendant) object,\n false positives may occur due to the fact that the RangeError constructor\n inherits from Error and has no internal class of its own. Hence, RangeError\n impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a RangeError object.\n\n Examples\n --------\n > var bool = isRangeError( new RangeError( 'beep' ) )\n true\n > bool = isRangeError( {} )\n false\n\n See Also\n --------\n isError\n", - "isReadableProperty": "\nisReadableProperty( value, property )\n Tests if an object's own property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadableProperty( obj, 'boop' )\n true\n > bool = isReadableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isWritableProperty\n", + "isReadableProperty": "\nisReadableProperty( value, property )\n Tests if an object's own property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadableProperty( obj, 'boop' )\n true\n > bool = isReadableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadablePropertyIn, isWritableProperty\n", + "isReadablePropertyIn": "\nisReadablePropertyIn( value, property )\n Tests if an object's own or inherited property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadablePropertyIn( obj, 'boop' )\n true\n > bool = isReadablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty, isWritableProperty-in\n", "isReferenceError": "\nisReferenceError( value )\n Tests if a value is a ReferenceError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a ReferenceError (or a descendant)\n object, false positives may occur due to the fact that the ReferenceError\n constructor inherits from Error and has no internal class of its own.\n Hence, ReferenceError impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a ReferenceError object.\n\n Examples\n --------\n > var bool = isReferenceError( new ReferenceError( 'beep' ) )\n true\n > bool = isReferenceError( {} )\n false\n\n See Also\n --------\n isError\n", "isRegExp": "\nisRegExp( value )\n Tests if a value is a regular expression.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a regular expression.\n\n Examples\n --------\n > var bool = isRegExp( /\\.+/ )\n true\n > bool = isRegExp( {} )\n false\n\n", "isRegExpString": "\nisRegExpString( value )\n Tests if a value is a regular expression string.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a regular expression string.\n\n Examples\n --------\n > var bool = isRegExpString( '/beep/' )\n true\n > bool = isRegExpString( 'beep' )\n false\n > bool = isRegExpString( '' )\n false\n > bool = isRegExpString( null )\n false\n\n See Also\n --------\n isRegExp\n", @@ -1281,7 +1282,7 @@ var db = { "isVectorLike": "\nisVectorLike( value )\n Tests if a value is a 1-dimensional ndarray-like object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a 1-dimensional ndarray-like\n object.\n\n Examples\n --------\n > var M = {};\n > M.data = [ 0, 0, 0, 0 ];\n > M.ndims = 1;\n > M.shape = [ 4 ];\n > M.strides = [ 1 ];\n > M.offset = 0;\n > M.order = 'row-major';\n > M.dtype = 'generic';\n > M.length = 4;\n > M.flags = {};\n > M.get = function get( i, j ) {};\n > M.set = function set( i, j ) {};\n > var bool = isVectorLike( M )\n true\n > bool = isVectorLike( [ 1, 2, 3, 4 ] )\n false\n > bool = isVectorLike( 3.14 )\n false\n > bool = isVectorLike( {} )\n false\n\n See Also\n --------\n isArray, isArrayLike, isMatrixLike, isndarrayLike, isTypedArrayLike\n", "isWhitespace": "\nisWhitespace( str )\n Tests whether a string contains only white space characters.\n\n A white space character is defined as one of the 25 characters defined as a\n white space (\"WSpace=Y\",\"WS\") character in the Unicode 9.0 character\n database, as well as one related white space character without the Unicode\n character property \"WSpace=Y\" (zero width non-breaking space which was\n deprecated as of Unicode 3.2).\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only white space\n characters.\n\n Examples\n --------\n > var bool = isWhitespace( ' ' )\n true\n > bool = isWhitespace( 'abcdef' )\n false\n > bool = isWhitespace( '' )\n false\n\n See Also\n --------\n RE_WHITESPACE\n", "isWritableProperty": "\nisWritableProperty( value, property )\n Tests if an object's own property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty( obj, 'boop' )\n true\n > bool = isWritableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty, isWritableProperty-in\n", - "isWritableProperty-in": "\nisWritableProperty-in( value, property )\n Tests if an object's own or inherited property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty-in( obj, 'boop' )\n true\n > bool = isWritableProperty-in( obj, 'beep' )\n false\n\n See Also\n --------\n isWritableProperty\n", + "isWritableProperty-in": "\nisWritableProperty-in( value, property )\n Tests if an object's own or inherited property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty-in( obj, 'boop' )\n true\n > bool = isWritableProperty-in( obj, 'beep' )\n false\n\n See Also\n --------\n isReadablePropertyIn, isWritableProperty\n", "IteratorSymbol": "\nIteratorSymbol\n Iterator symbol.\n\n This symbol specifies the default iterator for an object.\n\n The symbol is only supported in ES6/ES2015+ environments. For non-supporting\n environments, the value is `null`.\n\n Examples\n --------\n > var s = IteratorSymbol\n\n See Also\n --------\n Symbol\n", "kde2d": "", "keyBy": "\nkeyBy( collection, fcn[, thisArg] )\n Converts a collection to an object whose keys are determined by a provided\n function and whose values are the collection values.\n\n When invoked, the input function is provided two arguments:\n\n - `value`: collection value\n - `index`: collection index\n\n If more than one element in a collection resolves to the same key, the key\n value is the collection element which last resolved to the key.\n\n Object values are shallow copies.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Object\n Output object.\n\n Examples\n --------\n > function toKey( v ) { return v.a; };\n > var arr = [ { 'a': 1 }, { 'a': 2 } ];\n > keyBy( arr, toKey )\n { '1': { 'a': 1 }, '2': { 'a': 2 } }\n\n See Also\n --------\n forEach\n", From c483fb028de2e44aa342317d674fb782e7b57990 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 00:42:34 -0700 Subject: [PATCH 0143/1062] Add assertion utility to test if an object property is readable and writable --- .../assert/is-read-write-property/README.md | 151 +++++++++++++++ .../benchmark/benchmark.js | 51 +++++ .../is-read-write-property/docs/repl.txt | 33 ++++ .../is-read-write-property/examples/index.js | 59 ++++++ .../is-read-write-property/lib/index.js | 58 ++++++ .../assert/is-read-write-property/lib/main.js | 78 ++++++++ .../is-read-write-property/package.json | 74 +++++++ .../is-read-write-property/test/test.js | 180 ++++++++++++++++++ 8 files changed, 684 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-read-write-property/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-read-write-property/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-read-write-property/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-read-write-property/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-read-write-property/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-read-write-property/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-read-write-property/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-read-write-property/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-read-write-property/README.md b/lib/node_modules/@stdlib/assert/is-read-write-property/README.md new file mode 100644 index 000000000000..fc47c0d08738 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-write-property/README.md @@ -0,0 +1,151 @@ + + +# isReadWriteProperty + +> Test if an object's own property is readable and writable. + +
+ +## Usage + +```javascript +var isReadWriteProperty = require( '@stdlib/assert/is-read-write-property' ); +``` + +#### isReadWriteProperty( value, property ) + +Returns a `boolean` indicating if a `value` has a readable **and** writable `property`. + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = { + 'foo': 'bar' +}; + +defineProperty( obj, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'boop' +}); + +defineProperty( obj, 'accessor', { + 'configurable': false, + 'enumerable': false, + 'get': function getter() { + return obj.foo; + }, + 'set': function setter( v ) { + obj.foo = v; + } +}); + +var bool = isReadWriteProperty( obj, 'foo' ); +// returns true + +bool = isReadWriteProperty( obj, 'beep' ); +// returns true + +bool = isReadWriteProperty( obj, 'accessor' ); +// returns true +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isReadWriteProperty( 'beep', 'length' ); + // returns false + ``` + +- Property arguments are coerced to `strings`. + + ```javascript + var obj = { + 'null': 'foo' + }; + + var bool = isReadWriteProperty( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isReadWriteProperty = require( '@stdlib/assert/is-read-write-property' ); + +var bool = isReadWriteProperty( [ 'a' ], 'length' ); +// returns true + +bool = isReadWriteProperty( { 'a': 'b' }, 'a' ); +// returns true + +bool = isReadWriteProperty( [ 'a' ], 0 ); +// returns true + +bool = isReadWriteProperty( { 'null': false }, null ); +// returns true + +bool = isReadWriteProperty( { '[object Object]': false }, {} ); +// returns true + +bool = isReadWriteProperty( {}, 'toString' ); +// returns false + +bool = isReadWriteProperty( {}, 'hasOwnProperty' ); +// returns false + +bool = isReadWriteProperty( null, 'a' ); +// returns false + +bool = isReadWriteProperty( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-read-write-property/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-read-write-property/benchmark/benchmark.js new file mode 100644 index 000000000000..7841943b4b1e --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-write-property/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isReadWriteProperty = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isReadWriteProperty( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-read-write-property/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-read-write-property/docs/repl.txt new file mode 100644 index 000000000000..f9576d968eab --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-write-property/docs/repl.txt @@ -0,0 +1,33 @@ + +{{alias}}( value, property ) + Tests if an object's own property is readable and writable. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own property is readable and writable. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = false; + > desc.set = function setter( v ) { obj.boop = v; }; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + true + > bool = {{alias}}( obj, 'beep' ) + false + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-read-write-property/examples/index.js b/lib/node_modules/@stdlib/assert/is-read-write-property/examples/index.js new file mode 100644 index 000000000000..3b59d3af726a --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-write-property/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isReadWriteProperty = require( './../lib' ); + +var bool = isReadWriteProperty( [ 'a' ], 'length' ); +console.log( bool ); +// => true + +bool = isReadWriteProperty( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => true + +bool = isReadWriteProperty( [ 'a' ], 0 ); +console.log( bool ); +// => true + +bool = isReadWriteProperty( { 'null': false }, null ); +console.log( bool ); +// => true + +bool = isReadWriteProperty( { '[object Object]': false }, {} ); +console.log( bool ); +// => true + +bool = isReadWriteProperty( {}, 'toString' ); +console.log( bool ); +// => false + +bool = isReadWriteProperty( {}, 'hasOwnProperty' ); +console.log( bool ); +// => false + +bool = isReadWriteProperty( null, 'a' ); +console.log( bool ); +// => false + +bool = isReadWriteProperty( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-read-write-property/lib/index.js b/lib/node_modules/@stdlib/assert/is-read-write-property/lib/index.js new file mode 100644 index 000000000000..57b5c855c748 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-write-property/lib/index.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own property is readable and writable. +* +* @module @stdlib/assert/is-read-write-property +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isReadWriteProperty = require( '@stdlib/assert/is-read-write-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* function setter( v ) { +* obj.boop = v; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'set': setter +* }); +* +* var bool = isReadWriteProperty( obj, 'boop' ); +* // returns true +* +* bool = isReadWriteProperty( obj, 'beep' ); +* // returns false +*/ + +// MODULES // + +var isReadWriteProperty = require( './main.js' ); + + +// EXPORTS // + +module.exports = isReadWriteProperty; diff --git a/lib/node_modules/@stdlib/assert/is-read-write-property/lib/main.js b/lib/node_modules/@stdlib/assert/is-read-write-property/lib/main.js new file mode 100644 index 000000000000..415d14802f06 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-write-property/lib/main.js @@ -0,0 +1,78 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptor = require( '@stdlib/utils/property-descriptor' ); + + +// MAIN // + +/** +* Tests if an object's own property is readable and writable. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is readable and writable +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* function setter( v ) { +* obj.boop = v; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'set': setter +* }); +* +* var bool = isReadWriteProperty( obj, 'boop' ); +* // returns true +* +* bool = isReadWriteProperty( obj, 'beep' ); +* // returns false +*/ +function isReadWriteProperty( value, property ) { + var desc = propertyDescriptor( value, property ); + return ( + desc !== null && + ( + // Data descriptor: + desc.writable === true || + + // Accessor descriptor: + ( + typeof desc.get === 'function' && + typeof desc.set === 'function' + ) + ) + ); +} + + +// EXPORTS // + +module.exports = isReadWriteProperty; diff --git a/lib/node_modules/@stdlib/assert/is-read-write-property/package.json b/lib/node_modules/@stdlib/assert/is-read-write-property/package.json new file mode 100644 index 000000000000..2d3553411f45 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-write-property/package.json @@ -0,0 +1,74 @@ +{ + "name": "@stdlib/assert/is-read-write-property", + "version": "0.0.0", + "description": "Test if an object's own property is readable and writable.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "readable", + "writable", + "read-write", + "rw", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-read-write-property/test/test.js b/lib/node_modules/@stdlib/assert/is-read-write-property/test/test.js new file mode 100644 index 000000000000..0d93afc84885 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-write-property/test/test.js @@ -0,0 +1,180 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isReadWriteProperty = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isReadWriteProperty, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if an object property is readable and writable', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isReadWriteProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadWriteProperty( [ 1, 2, 3 ], '1' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadWriteProperty( [ 1, 2, 3 ], 1 ); + t.equal( bool, true, 'returns true' ); + + bool = isReadWriteProperty( new Foo(), 'bar' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadWriteProperty( [ 'a' ], 'length' ); + t.equal( bool, true, 'returns true' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + + bool = isReadWriteProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'get': getter, + 'set': setter + }); + + bool = isReadWriteProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + t.end(); + + function getter() { + // No-op... + } + + function setter() { + // No-op... + } +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isReadWriteProperty( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isReadWriteProperty( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a readable and writable property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + defineProperty( obj, 'd', { + 'configurable': true, + 'enumerable': true, + 'set': setter + }); + + defineProperty( obj, 'e', { + 'configurable': true, + 'enumerable': true, + 'get': getter + }); + + defineProperty( obj, 'f', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'g' + }); + + bool = isReadWriteProperty( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadWriteProperty( obj, 'd' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadWriteProperty( obj, 'e' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadWriteProperty( obj, 'f' ); + t.equal( bool, false, 'returns false' ); + + t.end(); + + function setter() { + // No-op... + } + + function getter() { + // No-op... + } +}); + +tape( 'the function returns `false` if provided an inherited property', function test( t ) { + var bool; + + bool = isReadWriteProperty( {}, 'hasOwnProperty' ); + t.equal( bool, false, 'returns false ' ); + + bool = isReadWriteProperty( {}, 'toString' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadWriteProperty( {}, 'constructor' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isReadWriteProperty( 'beep', 'length' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); From aa6c6aa0f264e8d5db27059181ced9fd574eb77d Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 00:43:40 -0700 Subject: [PATCH 0144/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index dc9ae33fc241..cb4eb7e73a61 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -1395,6 +1395,15 @@ setReadOnly( ns, 'isProbabilityArray', require( '@stdlib/assert/is-probability-a */ setReadOnly( ns, 'isRangeError', require( '@stdlib/assert/is-range-error' ) ); +/** +* @name isReadWriteProperty +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-read-write-property} +*/ +setReadOnly( ns, 'isReadWriteProperty', require( '@stdlib/assert/is-read-write-property' ) ); + /** * @name isReadableProperty * @memberof ns From 53f8f0a2983589852d86a5ddb932449c6613816b Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 00:45:17 -0700 Subject: [PATCH 0145/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 13 +++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 +++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index bb11f771109d..16fb9bb546ac 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -2864,6 +2864,19 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isReadWriteProperty', + 'path': '@stdlib/assert/is-read-write-property', + 'value': require( '@stdlib/assert/is-read-write-property' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-read-only-property', + '@stdlib/assert/is-read-write-property-in', + '@stdlib/assert/is-readable-property', + '@stdlib/assert/is-writable-property' + ] +}); + ns.push({ 'alias': 'isReferenceError', 'path': '@stdlib/assert/is-reference-error', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 06ad18f1e734..d304aaa2833f 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1243,6 +1243,7 @@ var db = { "isRangeError": "bool = isRangeError( new RangeError( 'beep' ) )\nbool = isRangeError( {} )\n", "isReadableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadableProperty( obj, 'boop' )\nbool = isReadableProperty( obj, 'beep' )\n", "isReadablePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadablePropertyIn( obj, 'boop' )\nbool = isReadablePropertyIn( obj, 'beep' )\n", + "isReadWriteProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadWriteProperty( obj, 'boop' )\nbool = isReadWriteProperty( obj, 'beep' )\n", "isReferenceError": "bool = isReferenceError( new ReferenceError( 'beep' ) )\nbool = isReferenceError( {} )\n", "isRegExp": "bool = isRegExp( /\\.+/ )\nbool = isRegExp( {} )\n", "isRegExpString": "bool = isRegExpString( '/beep/' )\nbool = isRegExpString( 'beep' )\nbool = isRegExpString( '' )\nbool = isRegExpString( null )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 8a8f854e2723..b0ce6bd7f042 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1241,8 +1241,9 @@ var db = { "isProbability": "\nisProbability( value )\n Tests if a value is a probability.\n\n A probability is defined as a numeric value on the interval [0,1].\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a probability.\n\n Examples\n --------\n > var bool = isProbability( 0.5 )\n true\n > bool = isProbability( new Number( 0.5 ) )\n true\n > bool = isProbability( 3.14 )\n false\n > bool = isProbability( -5.0 )\n false\n > bool = isProbability( null )\n false\n\n\nisProbability.isPrimitive( value )\n Tests if a value is a number primitive which is a probability.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive which is a\n probability.\n\n Examples\n --------\n > var bool = isProbability.isPrimitive( 0.3 )\n true\n > bool = isProbability.isPrimitive( new Number( 0.3 ) )\n false\n\n\nisProbability.isObject( value )\n Tests if a value is a number object having a value which is a probability.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object having a value which\n is a probability.\n\n Examples\n --------\n > var bool = isProbability.isObject( 0.77 )\n false\n > bool = isProbability.isObject( new Number( 0.77 ) )\n true\n\n\n See Also\n --------\n isNumber\n", "isProbabilityArray": "\nisProbabilityArray( value )\n Tests if a value is an array-like object containing only probabilities.\n\n A probability is defined as a numeric value on the interval [0,1].\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n probabilities.\n\n Examples\n --------\n > var bool = isProbabilityArray( [ 0.5, new Number(0.8) ] )\n true\n > bool = isProbabilityArray( [ 0.8, 1.2 ] )\n false\n > bool = isProbabilityArray( [ 0.8, '0.2' ] )\n false\n\n\nisProbabilityArray.primitives( value )\n Tests if a value is an array-like object containing only primitive\n probabilities.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n primitive probabilities.\n\n Examples\n --------\n > var bool = isProbabilityArray.primitives( [ 1.0, 0.0, 0.5 ] )\n true\n > bool = isProbabilityArray.primitives( [ 0.3, new Number(0.4) ] )\n false\n\n\nisProbabilityArray.objects( value )\n Tests if a value is an array-like object containing only number objects\n having probability values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n number objects having probability values.\n\n Examples\n --------\n > var bool = isProbabilityArray.objects( [ new Number(0.7), new Number(1.0) ] )\n true\n > bool = isProbabilityArray.objects( [ 1.0, 0.0, new Number(0.7) ] )\n false\n\n See Also\n --------\n isArray, isProbability\n", "isRangeError": "\nisRangeError( value )\n Tests if a value is a RangeError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a RangeError (or a descendant) object,\n false positives may occur due to the fact that the RangeError constructor\n inherits from Error and has no internal class of its own. Hence, RangeError\n impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a RangeError object.\n\n Examples\n --------\n > var bool = isRangeError( new RangeError( 'beep' ) )\n true\n > bool = isRangeError( {} )\n false\n\n See Also\n --------\n isError\n", - "isReadableProperty": "\nisReadableProperty( value, property )\n Tests if an object's own property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadableProperty( obj, 'boop' )\n true\n > bool = isReadableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadablePropertyIn, isWritableProperty\n", + "isReadableProperty": "\nisReadableProperty( value, property )\n Tests if an object's own property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadableProperty( obj, 'boop' )\n true\n > bool = isReadableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadWriteProperty, isReadablePropertyIn, isWritableProperty\n", "isReadablePropertyIn": "\nisReadablePropertyIn( value, property )\n Tests if an object's own or inherited property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadablePropertyIn( obj, 'boop' )\n true\n > bool = isReadablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty, isWritableProperty-in\n", + "isReadWriteProperty": "\nisReadWriteProperty( value, property )\n Tests if an object's own property is readable and writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is readable and writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadWriteProperty( obj, 'boop' )\n true\n > bool = isReadWriteProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty, isWritableProperty\n", "isReferenceError": "\nisReferenceError( value )\n Tests if a value is a ReferenceError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a ReferenceError (or a descendant)\n object, false positives may occur due to the fact that the ReferenceError\n constructor inherits from Error and has no internal class of its own.\n Hence, ReferenceError impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a ReferenceError object.\n\n Examples\n --------\n > var bool = isReferenceError( new ReferenceError( 'beep' ) )\n true\n > bool = isReferenceError( {} )\n false\n\n See Also\n --------\n isError\n", "isRegExp": "\nisRegExp( value )\n Tests if a value is a regular expression.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a regular expression.\n\n Examples\n --------\n > var bool = isRegExp( /\\.+/ )\n true\n > bool = isRegExp( {} )\n false\n\n", "isRegExpString": "\nisRegExpString( value )\n Tests if a value is a regular expression string.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a regular expression string.\n\n Examples\n --------\n > var bool = isRegExpString( '/beep/' )\n true\n > bool = isRegExpString( 'beep' )\n false\n > bool = isRegExpString( '' )\n false\n > bool = isRegExpString( null )\n false\n\n See Also\n --------\n isRegExp\n", @@ -1281,7 +1282,7 @@ var db = { "isURIError": "\nisURIError( value )\n Tests if a value is a URIError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a URIError (or a descendant) object,\n false positives may occur due to the fact that the URIError constructor\n inherits from Error and has no internal class of its own. Hence, URIError\n impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a URIError object.\n\n Examples\n --------\n > var bool = isURIError( new URIError( 'beep' ) )\n true\n > bool = isURIError( {} )\n false\n\n See Also\n --------\n isError\n", "isVectorLike": "\nisVectorLike( value )\n Tests if a value is a 1-dimensional ndarray-like object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a 1-dimensional ndarray-like\n object.\n\n Examples\n --------\n > var M = {};\n > M.data = [ 0, 0, 0, 0 ];\n > M.ndims = 1;\n > M.shape = [ 4 ];\n > M.strides = [ 1 ];\n > M.offset = 0;\n > M.order = 'row-major';\n > M.dtype = 'generic';\n > M.length = 4;\n > M.flags = {};\n > M.get = function get( i, j ) {};\n > M.set = function set( i, j ) {};\n > var bool = isVectorLike( M )\n true\n > bool = isVectorLike( [ 1, 2, 3, 4 ] )\n false\n > bool = isVectorLike( 3.14 )\n false\n > bool = isVectorLike( {} )\n false\n\n See Also\n --------\n isArray, isArrayLike, isMatrixLike, isndarrayLike, isTypedArrayLike\n", "isWhitespace": "\nisWhitespace( str )\n Tests whether a string contains only white space characters.\n\n A white space character is defined as one of the 25 characters defined as a\n white space (\"WSpace=Y\",\"WS\") character in the Unicode 9.0 character\n database, as well as one related white space character without the Unicode\n character property \"WSpace=Y\" (zero width non-breaking space which was\n deprecated as of Unicode 3.2).\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only white space\n characters.\n\n Examples\n --------\n > var bool = isWhitespace( ' ' )\n true\n > bool = isWhitespace( 'abcdef' )\n false\n > bool = isWhitespace( '' )\n false\n\n See Also\n --------\n RE_WHITESPACE\n", - "isWritableProperty": "\nisWritableProperty( value, property )\n Tests if an object's own property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty( obj, 'boop' )\n true\n > bool = isWritableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty, isWritableProperty-in\n", + "isWritableProperty": "\nisWritableProperty( value, property )\n Tests if an object's own property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty( obj, 'boop' )\n true\n > bool = isWritableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty, isReadWriteProperty, isWritableProperty-in\n", "isWritableProperty-in": "\nisWritableProperty-in( value, property )\n Tests if an object's own or inherited property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty-in( obj, 'boop' )\n true\n > bool = isWritableProperty-in( obj, 'beep' )\n false\n\n See Also\n --------\n isReadablePropertyIn, isWritableProperty\n", "IteratorSymbol": "\nIteratorSymbol\n Iterator symbol.\n\n This symbol specifies the default iterator for an object.\n\n The symbol is only supported in ES6/ES2015+ environments. For non-supporting\n environments, the value is `null`.\n\n Examples\n --------\n > var s = IteratorSymbol\n\n See Also\n --------\n Symbol\n", "kde2d": "", From e122d3ebc1d98d84cfbe29bec67e00873339aaee Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 00:53:58 -0700 Subject: [PATCH 0146/1062] Add assertion utility to test if an object property is readable and writable --- .../is-read-write-property-in/README.md | 151 +++++++++++++++ .../benchmark/benchmark.js | 51 +++++ .../is-read-write-property-in/docs/repl.txt | 34 ++++ .../examples/index.js | 59 ++++++ .../is-read-write-property-in/lib/index.js | 58 ++++++ .../is-read-write-property-in/lib/main.js | 78 ++++++++ .../is-read-write-property-in/package.json | 78 ++++++++ .../is-read-write-property-in/test/test.js | 180 ++++++++++++++++++ 8 files changed, 689 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-read-write-property-in/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-read-write-property-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-read-write-property-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-read-write-property-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-read-write-property-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-read-write-property-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-read-write-property-in/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-read-write-property-in/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-read-write-property-in/README.md b/lib/node_modules/@stdlib/assert/is-read-write-property-in/README.md new file mode 100644 index 000000000000..70b5d5e061c8 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-write-property-in/README.md @@ -0,0 +1,151 @@ + + +# isReadWritePropertyIn + +> Test if an object's own or inherited property is readable and writable. + +
+ +## Usage + +```javascript +var isReadWritePropertyIn = require( '@stdlib/assert/is-read-write-property-in' ); +``` + +#### isReadWritePropertyIn( value, property ) + +Returns a `boolean` indicating if a `value` has a readable **and** writable `property`. + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = { + 'foo': 'bar' +}; + +defineProperty( obj, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'boop' +}); + +defineProperty( obj, 'accessor', { + 'configurable': false, + 'enumerable': false, + 'get': function getter() { + return obj.foo; + }, + 'set': function setter( v ) { + obj.foo = v; + } +}); + +var bool = isReadWritePropertyIn( obj, 'foo' ); +// returns true + +bool = isReadWritePropertyIn( obj, 'beep' ); +// returns true + +bool = isReadWritePropertyIn( obj, 'accessor' ); +// returns true +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isReadWritePropertyIn( 'beep', 'length' ); + // returns false + ``` + +- Property arguments are coerced to `strings`. + + ```javascript + var obj = { + 'null': 'foo' + }; + + var bool = isReadWritePropertyIn( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isReadWritePropertyIn = require( '@stdlib/assert/is-read-write-property-in' ); + +var bool = isReadWritePropertyIn( [ 'a' ], 'length' ); +// returns true + +bool = isReadWritePropertyIn( { 'a': 'b' }, 'a' ); +// returns true + +bool = isReadWritePropertyIn( [ 'a' ], 0 ); +// returns true + +bool = isReadWritePropertyIn( { 'null': false }, null ); +// returns true + +bool = isReadWritePropertyIn( { '[object Object]': false }, {} ); +// returns true + +bool = isReadWritePropertyIn( {}, 'toString' ); +// returns true + +bool = isReadWritePropertyIn( {}, 'hasOwnProperty' ); +// returns true + +bool = isReadWritePropertyIn( null, 'a' ); +// returns false + +bool = isReadWritePropertyIn( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-read-write-property-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-read-write-property-in/benchmark/benchmark.js new file mode 100644 index 000000000000..15aad3c08711 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-write-property-in/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isReadWritePropertyIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isReadWritePropertyIn( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-read-write-property-in/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-read-write-property-in/docs/repl.txt new file mode 100644 index 000000000000..685b0d9eb6b4 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-write-property-in/docs/repl.txt @@ -0,0 +1,34 @@ + +{{alias}}( value, property ) + Tests if an object's own or inherited property is readable and writable. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own or inherited property is readable + and writable. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = false; + > desc.set = function setter( v ) { obj.boop = v; }; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + true + > bool = {{alias}}( obj, 'beep' ) + false + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-read-write-property-in/examples/index.js b/lib/node_modules/@stdlib/assert/is-read-write-property-in/examples/index.js new file mode 100644 index 000000000000..1b4cbf617d9f --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-write-property-in/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isReadWritePropertyIn = require( './../lib' ); + +var bool = isReadWritePropertyIn( [ 'a' ], 'length' ); +console.log( bool ); +// => true + +bool = isReadWritePropertyIn( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => true + +bool = isReadWritePropertyIn( [ 'a' ], 0 ); +console.log( bool ); +// => true + +bool = isReadWritePropertyIn( { 'null': false }, null ); +console.log( bool ); +// => true + +bool = isReadWritePropertyIn( { '[object Object]': false }, {} ); +console.log( bool ); +// => true + +bool = isReadWritePropertyIn( {}, 'toString' ); +console.log( bool ); +// => true + +bool = isReadWritePropertyIn( {}, 'hasOwnProperty' ); +console.log( bool ); +// => true + +bool = isReadWritePropertyIn( null, 'a' ); +console.log( bool ); +// => false + +bool = isReadWritePropertyIn( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-read-write-property-in/lib/index.js b/lib/node_modules/@stdlib/assert/is-read-write-property-in/lib/index.js new file mode 100644 index 000000000000..931d691d9780 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-write-property-in/lib/index.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own or inherited property is readable and writable. +* +* @module @stdlib/assert/is-read-write-property-in +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isReadWritePropertyIn = require( '@stdlib/assert/is-read-write-property-in' ); +* +* var obj = { +* 'boop': true +* }; +* +* function setter( v ) { +* obj.boop = v; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'set': setter +* }); +* +* var bool = isReadWritePropertyIn( obj, 'boop' ); +* // returns true +* +* bool = isReadWritePropertyIn( obj, 'beep' ); +* // returns false +*/ + +// MODULES // + +var isReadWritePropertyIn = require( './main.js' ); + + +// EXPORTS // + +module.exports = isReadWritePropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-read-write-property-in/lib/main.js b/lib/node_modules/@stdlib/assert/is-read-write-property-in/lib/main.js new file mode 100644 index 000000000000..e47797348a14 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-write-property-in/lib/main.js @@ -0,0 +1,78 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptorIn = require( '@stdlib/utils/property-descriptor-in' ); + + +// MAIN // + +/** +* Tests if an object's own or inherited property is readable and writable. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is readable and writable +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* function setter( v ) { +* obj.boop = v; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'set': setter +* }); +* +* var bool = isReadWritePropertyIn( obj, 'boop' ); +* // returns true +* +* bool = isReadWritePropertyIn( obj, 'beep' ); +* // returns false +*/ +function isReadWritePropertyIn( value, property ) { + var desc = propertyDescriptorIn( value, property ); + return ( + desc !== null && + ( + // Data descriptor: + desc.writable === true || + + // Accessor descriptor: + ( + typeof desc.get === 'function' && + typeof desc.set === 'function' + ) + ) + ); +} + + +// EXPORTS // + +module.exports = isReadWritePropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-read-write-property-in/package.json b/lib/node_modules/@stdlib/assert/is-read-write-property-in/package.json new file mode 100644 index 000000000000..a1388a47dbce --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-write-property-in/package.json @@ -0,0 +1,78 @@ +{ + "name": "@stdlib/assert/is-read-write-property-in", + "version": "0.0.0", + "description": "Test if an object's own and inherited property is readable and writable.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "inherited", + "in", + "prototype", + "proto", + "readable", + "writable", + "read-write", + "rw", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-read-write-property-in/test/test.js b/lib/node_modules/@stdlib/assert/is-read-write-property-in/test/test.js new file mode 100644 index 000000000000..127d0354dc6c --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-write-property-in/test/test.js @@ -0,0 +1,180 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isReadWritePropertyIn = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isReadWritePropertyIn, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if an object property is readable and writable', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isReadWritePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadWritePropertyIn( [ 1, 2, 3 ], '1' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadWritePropertyIn( [ 1, 2, 3 ], 1 ); + t.equal( bool, true, 'returns true' ); + + bool = isReadWritePropertyIn( new Foo(), 'bar' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadWritePropertyIn( [ 'a' ], 'length' ); + t.equal( bool, true, 'returns true' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + + bool = isReadWritePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'get': getter, + 'set': setter + }); + + bool = isReadWritePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + t.end(); + + function getter() { + // No-op... + } + + function setter() { + // No-op... + } +}); + +tape( 'the function returns `true` if provided an inherited readable and writable property', function test( t ) { + var bool; + + bool = isReadWritePropertyIn( {}, 'hasOwnProperty' ); + t.equal( bool, true, 'returns true ' ); + + bool = isReadWritePropertyIn( {}, 'toString' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadWritePropertyIn( {}, 'constructor' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isReadWritePropertyIn( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isReadWritePropertyIn( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a readable and writable property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + defineProperty( obj, 'd', { + 'configurable': true, + 'enumerable': true, + 'set': setter + }); + + defineProperty( obj, 'e', { + 'configurable': true, + 'enumerable': true, + 'get': getter + }); + + defineProperty( obj, 'f', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'g' + }); + + bool = isReadWritePropertyIn( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadWritePropertyIn( obj, 'd' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadWritePropertyIn( obj, 'e' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadWritePropertyIn( obj, 'f' ); + t.equal( bool, false, 'returns false' ); + + t.end(); + + function setter() { + // No-op... + } + + function getter() { + // No-op... + } +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isReadWritePropertyIn( 'beep', 'length' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); From 4a3ef7988567f223ef92d57d1052e667babf8d61 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 00:55:15 -0700 Subject: [PATCH 0147/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index cb4eb7e73a61..6e76c5593590 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -1404,6 +1404,15 @@ setReadOnly( ns, 'isRangeError', require( '@stdlib/assert/is-range-error' ) ); */ setReadOnly( ns, 'isReadWriteProperty', require( '@stdlib/assert/is-read-write-property' ) ); +/** +* @name isReadWritePropertyIn +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-read-write-property-in} +*/ +setReadOnly( ns, 'isReadWritePropertyIn', require( '@stdlib/assert/is-read-write-property-in' ) ); + /** * @name isReadableProperty * @memberof ns From 6e63a594587ecd02732e8756c9c2974dac2362bc Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 00:55:45 -0700 Subject: [PATCH 0148/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 13 +++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 7 ++++--- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 16fb9bb546ac..ed14416c960c 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -2877,6 +2877,19 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isReadWritePropertyIn', + 'path': '@stdlib/assert/is-read-write-property-in', + 'value': require( '@stdlib/assert/is-read-write-property-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-read-only-property-in', + '@stdlib/assert/is-read-write-property', + '@stdlib/assert/is-readable-property-in', + '@stdlib/assert/is-writable-property-in' + ] +}); + ns.push({ 'alias': 'isReferenceError', 'path': '@stdlib/assert/is-reference-error', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index d304aaa2833f..782fcc8429d6 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1244,6 +1244,7 @@ var db = { "isReadableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadableProperty( obj, 'boop' )\nbool = isReadableProperty( obj, 'beep' )\n", "isReadablePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadablePropertyIn( obj, 'boop' )\nbool = isReadablePropertyIn( obj, 'beep' )\n", "isReadWriteProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadWriteProperty( obj, 'boop' )\nbool = isReadWriteProperty( obj, 'beep' )\n", + "isReadWritePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadWritePropertyIn( obj, 'boop' )\nbool = isReadWritePropertyIn( obj, 'beep' )\n", "isReferenceError": "bool = isReferenceError( new ReferenceError( 'beep' ) )\nbool = isReferenceError( {} )\n", "isRegExp": "bool = isRegExp( /\\.+/ )\nbool = isRegExp( {} )\n", "isRegExpString": "bool = isRegExpString( '/beep/' )\nbool = isRegExpString( 'beep' )\nbool = isRegExpString( '' )\nbool = isRegExpString( null )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index b0ce6bd7f042..0df5b5ba34f9 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1242,8 +1242,9 @@ var db = { "isProbabilityArray": "\nisProbabilityArray( value )\n Tests if a value is an array-like object containing only probabilities.\n\n A probability is defined as a numeric value on the interval [0,1].\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n probabilities.\n\n Examples\n --------\n > var bool = isProbabilityArray( [ 0.5, new Number(0.8) ] )\n true\n > bool = isProbabilityArray( [ 0.8, 1.2 ] )\n false\n > bool = isProbabilityArray( [ 0.8, '0.2' ] )\n false\n\n\nisProbabilityArray.primitives( value )\n Tests if a value is an array-like object containing only primitive\n probabilities.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n primitive probabilities.\n\n Examples\n --------\n > var bool = isProbabilityArray.primitives( [ 1.0, 0.0, 0.5 ] )\n true\n > bool = isProbabilityArray.primitives( [ 0.3, new Number(0.4) ] )\n false\n\n\nisProbabilityArray.objects( value )\n Tests if a value is an array-like object containing only number objects\n having probability values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n number objects having probability values.\n\n Examples\n --------\n > var bool = isProbabilityArray.objects( [ new Number(0.7), new Number(1.0) ] )\n true\n > bool = isProbabilityArray.objects( [ 1.0, 0.0, new Number(0.7) ] )\n false\n\n See Also\n --------\n isArray, isProbability\n", "isRangeError": "\nisRangeError( value )\n Tests if a value is a RangeError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a RangeError (or a descendant) object,\n false positives may occur due to the fact that the RangeError constructor\n inherits from Error and has no internal class of its own. Hence, RangeError\n impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a RangeError object.\n\n Examples\n --------\n > var bool = isRangeError( new RangeError( 'beep' ) )\n true\n > bool = isRangeError( {} )\n false\n\n See Also\n --------\n isError\n", "isReadableProperty": "\nisReadableProperty( value, property )\n Tests if an object's own property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadableProperty( obj, 'boop' )\n true\n > bool = isReadableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadWriteProperty, isReadablePropertyIn, isWritableProperty\n", - "isReadablePropertyIn": "\nisReadablePropertyIn( value, property )\n Tests if an object's own or inherited property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadablePropertyIn( obj, 'boop' )\n true\n > bool = isReadablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty, isWritableProperty-in\n", - "isReadWriteProperty": "\nisReadWriteProperty( value, property )\n Tests if an object's own property is readable and writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is readable and writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadWriteProperty( obj, 'boop' )\n true\n > bool = isReadWriteProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty, isWritableProperty\n", + "isReadablePropertyIn": "\nisReadablePropertyIn( value, property )\n Tests if an object's own or inherited property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadablePropertyIn( obj, 'boop' )\n true\n > bool = isReadablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadWritePropertyIn, isReadableProperty, isWritableProperty-in\n", + "isReadWriteProperty": "\nisReadWriteProperty( value, property )\n Tests if an object's own property is readable and writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is readable and writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadWriteProperty( obj, 'boop' )\n true\n > bool = isReadWriteProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadWritePropertyIn, isReadableProperty, isWritableProperty\n", + "isReadWritePropertyIn": "\nisReadWritePropertyIn( value, property )\n Tests if an object's own or inherited property is readable and writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is readable\n and writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadWritePropertyIn( obj, 'boop' )\n true\n > bool = isReadWritePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadWriteProperty, isReadablePropertyIn, isWritableProperty-in\n", "isReferenceError": "\nisReferenceError( value )\n Tests if a value is a ReferenceError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a ReferenceError (or a descendant)\n object, false positives may occur due to the fact that the ReferenceError\n constructor inherits from Error and has no internal class of its own.\n Hence, ReferenceError impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a ReferenceError object.\n\n Examples\n --------\n > var bool = isReferenceError( new ReferenceError( 'beep' ) )\n true\n > bool = isReferenceError( {} )\n false\n\n See Also\n --------\n isError\n", "isRegExp": "\nisRegExp( value )\n Tests if a value is a regular expression.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a regular expression.\n\n Examples\n --------\n > var bool = isRegExp( /\\.+/ )\n true\n > bool = isRegExp( {} )\n false\n\n", "isRegExpString": "\nisRegExpString( value )\n Tests if a value is a regular expression string.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a regular expression string.\n\n Examples\n --------\n > var bool = isRegExpString( '/beep/' )\n true\n > bool = isRegExpString( 'beep' )\n false\n > bool = isRegExpString( '' )\n false\n > bool = isRegExpString( null )\n false\n\n See Also\n --------\n isRegExp\n", @@ -1283,7 +1284,7 @@ var db = { "isVectorLike": "\nisVectorLike( value )\n Tests if a value is a 1-dimensional ndarray-like object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a 1-dimensional ndarray-like\n object.\n\n Examples\n --------\n > var M = {};\n > M.data = [ 0, 0, 0, 0 ];\n > M.ndims = 1;\n > M.shape = [ 4 ];\n > M.strides = [ 1 ];\n > M.offset = 0;\n > M.order = 'row-major';\n > M.dtype = 'generic';\n > M.length = 4;\n > M.flags = {};\n > M.get = function get( i, j ) {};\n > M.set = function set( i, j ) {};\n > var bool = isVectorLike( M )\n true\n > bool = isVectorLike( [ 1, 2, 3, 4 ] )\n false\n > bool = isVectorLike( 3.14 )\n false\n > bool = isVectorLike( {} )\n false\n\n See Also\n --------\n isArray, isArrayLike, isMatrixLike, isndarrayLike, isTypedArrayLike\n", "isWhitespace": "\nisWhitespace( str )\n Tests whether a string contains only white space characters.\n\n A white space character is defined as one of the 25 characters defined as a\n white space (\"WSpace=Y\",\"WS\") character in the Unicode 9.0 character\n database, as well as one related white space character without the Unicode\n character property \"WSpace=Y\" (zero width non-breaking space which was\n deprecated as of Unicode 3.2).\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only white space\n characters.\n\n Examples\n --------\n > var bool = isWhitespace( ' ' )\n true\n > bool = isWhitespace( 'abcdef' )\n false\n > bool = isWhitespace( '' )\n false\n\n See Also\n --------\n RE_WHITESPACE\n", "isWritableProperty": "\nisWritableProperty( value, property )\n Tests if an object's own property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty( obj, 'boop' )\n true\n > bool = isWritableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty, isReadWriteProperty, isWritableProperty-in\n", - "isWritableProperty-in": "\nisWritableProperty-in( value, property )\n Tests if an object's own or inherited property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty-in( obj, 'boop' )\n true\n > bool = isWritableProperty-in( obj, 'beep' )\n false\n\n See Also\n --------\n isReadablePropertyIn, isWritableProperty\n", + "isWritableProperty-in": "\nisWritableProperty-in( value, property )\n Tests if an object's own or inherited property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty-in( obj, 'boop' )\n true\n > bool = isWritableProperty-in( obj, 'beep' )\n false\n\n See Also\n --------\n isReadablePropertyIn, isReadWritePropertyIn, isWritableProperty\n", "IteratorSymbol": "\nIteratorSymbol\n Iterator symbol.\n\n This symbol specifies the default iterator for an object.\n\n The symbol is only supported in ES6/ES2015+ environments. For non-supporting\n environments, the value is `null`.\n\n Examples\n --------\n > var s = IteratorSymbol\n\n See Also\n --------\n Symbol\n", "kde2d": "", "keyBy": "\nkeyBy( collection, fcn[, thisArg] )\n Converts a collection to an object whose keys are determined by a provided\n function and whose values are the collection values.\n\n When invoked, the input function is provided two arguments:\n\n - `value`: collection value\n - `index`: collection index\n\n If more than one element in a collection resolves to the same key, the key\n value is the collection element which last resolved to the key.\n\n Object values are shallow copies.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Object\n Output object.\n\n Examples\n --------\n > function toKey( v ) { return v.a; };\n > var arr = [ { 'a': 1 }, { 'a': 2 } ];\n > keyBy( arr, toKey )\n { '1': { 'a': 1 }, '2': { 'a': 2 } }\n\n See Also\n --------\n forEach\n", From 36d8b2d85c48e6e5fc3cb941fa45f58f6385d1da Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 00:57:11 -0700 Subject: [PATCH 0149/1062] Fix alias --- lib/node_modules/@stdlib/namespace/lib/namespace/i.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index ed14416c960c..57b4b6254c21 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -3308,7 +3308,7 @@ ns.push({ }); ns.push({ - 'alias': 'isWritableProperty-in', + 'alias': 'isWritablePropertyIn', 'path': '@stdlib/assert/is-writable-property-in', 'value': require( '@stdlib/assert/is-writable-property-in' ), 'type': 'Function', From 0384f9bfe1b6ad262a3ec082e9df98e231d4ce51 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 01:21:51 -0700 Subject: [PATCH 0150/1062] Add assertion utility to test if an object has a read-only property --- .../assert/is-read-only-property/README.md | 155 ++++++++++++ .../benchmark/benchmark.js | 51 ++++ .../is-read-only-property/docs/repl.txt | 34 +++ .../is-read-only-property/examples/index.js | 59 +++++ .../assert/is-read-only-property/lib/index.js | 55 +++++ .../assert/is-read-only-property/lib/main.js | 76 ++++++ .../assert/is-read-only-property/package.json | 73 ++++++ .../assert/is-read-only-property/test/test.js | 232 ++++++++++++++++++ 8 files changed, 735 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-read-only-property/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-read-only-property/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-read-only-property/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-read-only-property/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-read-only-property/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-read-only-property/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-read-only-property/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-read-only-property/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property/README.md b/lib/node_modules/@stdlib/assert/is-read-only-property/README.md new file mode 100644 index 000000000000..0635e45bd991 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-only-property/README.md @@ -0,0 +1,155 @@ + + +# isReadOnlyProperty + +> Test if an object's own property is read-only. + +
+ +## Usage + +```javascript +var isReadOnlyProperty = require( '@stdlib/assert/is-read-only-property' ); +``` + +#### isReadOnlyProperty( value, property ) + +Returns a `boolean` indicating if a `value` has a read-only `property`. + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = { + 'foo': 'bar' +}; + +defineProperty( obj, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); + +defineProperty( obj, 'accessor', { + 'configurable': false, + 'enumerable': true, + 'get': function getter() { + return obj.foo; + } +}); + +var bool = isReadOnlyProperty( obj, 'foo' ); +// returns false + +bool = isReadOnlyProperty( obj, 'beep' ); +// returns true + +bool = isReadOnlyProperty( obj, 'accessor' ); +// returns true +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isReadOnlyProperty( 'beep', 'length' ); + // returns true + ``` + +- Property arguments are coerced to `strings`. + + ```javascript + var defineProperty = require( '@stdlib/utils/define-property' ); + + var obj = {}; + + defineProperty( obj, 'null', { + 'configurable': false, + 'enumerable': true, + 'writable': false, + 'value': true + }); + + var bool = isReadOnlyProperty( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isReadOnlyProperty = require( '@stdlib/assert/is-read-only-property' ); + +var bool = isReadOnlyProperty( 'a', 'length' ); +// returns true + +bool = isReadOnlyProperty( { 'a': 'b' }, 'a' ); +// returns false + +bool = isReadOnlyProperty( [ 'a' ], 0 ); +// returns false + +bool = isReadOnlyProperty( { 'null': false }, null ); +// returns false + +bool = isReadOnlyProperty( { '[object Object]': false }, {} ); +// returns false + +bool = isReadOnlyProperty( {}, 'toString' ); +// returns false + +bool = isReadOnlyProperty( {}, 'hasOwnProperty' ); +// returns false + +bool = isReadOnlyProperty( null, 'a' ); +// returns false + +bool = isReadOnlyProperty( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-read-only-property/benchmark/benchmark.js new file mode 100644 index 000000000000..3a49a1f49a44 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-only-property/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isReadOnlyProperty = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isReadOnlyProperty( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-read-only-property/docs/repl.txt new file mode 100644 index 000000000000..efb38aaeef23 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-only-property/docs/repl.txt @@ -0,0 +1,34 @@ + +{{alias}}( value, property ) + Tests if an object's own property is read-only. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own property is read-only. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = true; + > desc.writable = false; + > desc.value = true; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + true + > bool = {{alias}}( obj, 'beep' ) + false + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property/examples/index.js b/lib/node_modules/@stdlib/assert/is-read-only-property/examples/index.js new file mode 100644 index 000000000000..cea915e68597 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-only-property/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isReadOnlyProperty = require( './../lib' ); + +var bool = isReadOnlyProperty( 'a', 'length' ); +console.log( bool ); +// => true + +bool = isReadOnlyProperty( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => false + +bool = isReadOnlyProperty( [ 'a' ], 0 ); +console.log( bool ); +// => false + +bool = isReadOnlyProperty( { 'null': false }, null ); +console.log( bool ); +// => false + +bool = isReadOnlyProperty( { '[object Object]': false }, {} ); +console.log( bool ); +// => false + +bool = isReadOnlyProperty( {}, 'toString' ); +console.log( bool ); +// => false + +bool = isReadOnlyProperty( {}, 'hasOwnProperty' ); +console.log( bool ); +// => false + +bool = isReadOnlyProperty( null, 'a' ); +console.log( bool ); +// => false + +bool = isReadOnlyProperty( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property/lib/index.js b/lib/node_modules/@stdlib/assert/is-read-only-property/lib/index.js new file mode 100644 index 000000000000..8fadd3750327 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-only-property/lib/index.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own property is read-only. +* +* @module @stdlib/assert/is-read-only-property +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isReadOnlyProperty = require( '@stdlib/assert/is-read-only-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'writable': false, +* 'value': true +* }); +* +* var bool = isReadOnlyProperty( obj, 'boop' ); +* // returns false +* +* bool = isReadOnlyProperty( obj, 'beep' ); +* // returns true +*/ + +// MODULES // + +var isReadOnlyProperty = require( './main.js' ); + + +// EXPORTS // + +module.exports = isReadOnlyProperty; diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property/lib/main.js b/lib/node_modules/@stdlib/assert/is-read-only-property/lib/main.js new file mode 100644 index 000000000000..34c9a7b3f7ac --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-only-property/lib/main.js @@ -0,0 +1,76 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptor = require( '@stdlib/utils/property-descriptor' ); + + +// MAIN // + +/** +* Tests if an object's own property is read-only. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is read-only +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'writable': false, +* 'value': true +* }); +* +* var bool = isReadOnlyProperty( obj, 'boop' ); +* // returns false +* +* bool = isReadOnlyProperty( obj, 'beep' ); +* // returns true +*/ +function isReadOnlyProperty( value, property ) { + var desc = propertyDescriptor( value, property ); + return ( + desc !== null && + desc.configurable === false && + ( + // Data descriptor: + desc.writable === false || + + // Accessor descriptor: + ( + typeof desc.get === 'function' && + desc.set === void 0 + ) + ) + ); +} + + +// EXPORTS // + +module.exports = isReadOnlyProperty; diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property/package.json b/lib/node_modules/@stdlib/assert/is-read-only-property/package.json new file mode 100644 index 000000000000..20b2fff1fd41 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-only-property/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/assert/is-read-only-property", + "version": "0.0.0", + "description": "Test if an object's own property is read-only.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "readable", + "writable", + "read-only", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property/test/test.js b/lib/node_modules/@stdlib/assert/is-read-only-property/test/test.js new file mode 100644 index 000000000000..3c9abdc9c9de --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-only-property/test/test.js @@ -0,0 +1,232 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isReadOnlyProperty = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isReadOnlyProperty, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if an object property is read-only', function test( t ) { + var bool; + var obj; + + obj = {}; + + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': true, + 'writable': false, + 'value': true + }); + + defineProperty( obj, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': true + }); + + defineProperty( obj, 'c', { + 'configurable': false, + 'enumerable': true, + 'get': getter + }); + + defineProperty( obj, 'd', { + 'configurable': false, + 'enumerable': false, + 'get': getter + }); + + bool = isReadOnlyProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadOnlyProperty( obj, 'b' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadOnlyProperty( obj, 'c' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadOnlyProperty( obj, 'd' ); + t.equal( bool, true, 'returns true' ); + + t.end(); + + function getter() { + // No-op... + } +}); + +tape( 'the function returns `false` if an object property is not read-only', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isReadOnlyProperty( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyProperty( [ 1, 2, 3 ], '1' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyProperty( [ 1, 2, 3 ], 1 ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyProperty( new Foo(), 'bar' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyProperty( [ 'a' ], 'length' ); + t.equal( bool, false, 'returns false' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + + bool = isReadOnlyProperty( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'get': getter, + 'set': setter + }); + + bool = isReadOnlyProperty( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + t.end(); + + function getter() { + // No-op... + } + + function setter() { + // No-op... + } +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isReadOnlyProperty( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isReadOnlyProperty( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a read-only property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + defineProperty( obj, 'd', { + 'configurable': true, + 'enumerable': true, + 'set': setter + }); + + defineProperty( obj, 'e', { + 'configurable': true, + 'enumerable': true, + 'set': setter, + 'get': getter + }); + + defineProperty( obj, 'f', { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'g' + }); + + bool = isReadOnlyProperty( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyProperty( obj, 'd' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyProperty( obj, 'e' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyProperty( obj, 'f' ); + t.equal( bool, false, 'returns false' ); + + t.end(); + + function setter() { + // No-op... + } + + function getter() { + // No-op... + } +}); + +tape( 'the function returns `false` if provided an inherited property', function test( t ) { + var bool; + + bool = isReadOnlyProperty( {}, 'hasOwnProperty' ); + t.equal( bool, false, 'returns false ' ); + + bool = isReadOnlyProperty( {}, 'toString' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyProperty( {}, 'constructor' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isReadOnlyProperty( 'beep', 'length' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); From 87ce785482ebe7f32ff460e295192122ee4deaff Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 01:22:42 -0700 Subject: [PATCH 0151/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 6e76c5593590..85bdadbe9662 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -1395,6 +1395,15 @@ setReadOnly( ns, 'isProbabilityArray', require( '@stdlib/assert/is-probability-a */ setReadOnly( ns, 'isRangeError', require( '@stdlib/assert/is-range-error' ) ); +/** +* @name isReadOnlyProperty +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-read-only-property} +*/ +setReadOnly( ns, 'isReadOnlyProperty', require( '@stdlib/assert/is-read-only-property' ) ); + /** * @name isReadWriteProperty * @memberof ns From 54a4ffa0465e4a92bb8669b8e5ab9c8e3cfd0d58 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 01:22:57 -0700 Subject: [PATCH 0152/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 13 +++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 3 ++- lib/node_modules/@stdlib/repl/help/lib/db.js | 13 +++++++------ 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 57b4b6254c21..521f716d8871 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -2864,6 +2864,19 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isReadOnlyProperty', + 'path': '@stdlib/assert/is-read-only-property', + 'value': require( '@stdlib/assert/is-read-only-property' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-read-only-property-in', + '@stdlib/assert/is-read-write-property', + '@stdlib/assert/is-readable-property', + '@stdlib/assert/is-writable-property' + ] +}); + ns.push({ 'alias': 'isReadWriteProperty', 'path': '@stdlib/assert/is-read-write-property', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 782fcc8429d6..de1700733ec7 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1243,6 +1243,7 @@ var db = { "isRangeError": "bool = isRangeError( new RangeError( 'beep' ) )\nbool = isRangeError( {} )\n", "isReadableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadableProperty( obj, 'boop' )\nbool = isReadableProperty( obj, 'beep' )\n", "isReadablePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadablePropertyIn( obj, 'boop' )\nbool = isReadablePropertyIn( obj, 'beep' )\n", + "isReadOnlyProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = false;\ndesc.value = true;\ndefineProperty( obj, 'beep', desc );\nbool = isReadOnlyProperty( obj, 'boop' )\nbool = isReadOnlyProperty( obj, 'beep' )\n", "isReadWriteProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadWriteProperty( obj, 'boop' )\nbool = isReadWriteProperty( obj, 'beep' )\n", "isReadWritePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadWritePropertyIn( obj, 'boop' )\nbool = isReadWritePropertyIn( obj, 'beep' )\n", "isReferenceError": "bool = isReferenceError( new ReferenceError( 'beep' ) )\nbool = isReferenceError( {} )\n", @@ -1284,7 +1285,7 @@ var db = { "isVectorLike": "M = {};\nM.data = [ 0, 0, 0, 0 ];\nM.ndims = 1;\nM.shape = [ 4 ];\nM.strides = [ 1 ];\nM.offset = 0;\nM.order = 'row-major';\nM.dtype = 'generic';\nM.length = 4;\nM.flags = {};\nM.get = function get( i, j ) {};\nM.set = function set( i, j ) {};\nbool = isVectorLike( M )\nbool = isVectorLike( [ 1, 2, 3, 4 ] )\nbool = isVectorLike( 3.14 )\nbool = isVectorLike( {} )\n", "isWhitespace": "bool = isWhitespace( ' ' )\nbool = isWhitespace( 'abcdef' )\nbool = isWhitespace( '' )\n", "isWritableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = false;\ndesc.value = 'beep';\ndefineProperty( obj, 'beep', desc );\nbool = isWritableProperty( obj, 'boop' )\nbool = isWritableProperty( obj, 'beep' )\n", - "isWritableProperty-in": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = false;\ndesc.value = 'beep';\ndefineProperty( obj, 'beep', desc );\nbool = isWritableProperty-in( obj, 'boop' )\nbool = isWritableProperty-in( obj, 'beep' )\n", + "isWritablePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = false;\ndesc.value = 'beep';\ndefineProperty( obj, 'beep', desc );\nbool = isWritablePropertyIn( obj, 'boop' )\nbool = isWritablePropertyIn( obj, 'beep' )\n", "IteratorSymbol": "s = IteratorSymbol\n", "keyBy": "function toKey( v ) { return v.a; };\narr = [ { 'a': 1 }, { 'a': 2 } ];\nkeyBy( arr, toKey )\n", "keyByRight": "function toKey( v ) { return v.a; };\narr = [ { 'a': 1 }, { 'a': 2 } ];\nkeyByRight( arr, toKey )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 0df5b5ba34f9..b2c82cc337e1 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1241,10 +1241,11 @@ var db = { "isProbability": "\nisProbability( value )\n Tests if a value is a probability.\n\n A probability is defined as a numeric value on the interval [0,1].\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a probability.\n\n Examples\n --------\n > var bool = isProbability( 0.5 )\n true\n > bool = isProbability( new Number( 0.5 ) )\n true\n > bool = isProbability( 3.14 )\n false\n > bool = isProbability( -5.0 )\n false\n > bool = isProbability( null )\n false\n\n\nisProbability.isPrimitive( value )\n Tests if a value is a number primitive which is a probability.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive which is a\n probability.\n\n Examples\n --------\n > var bool = isProbability.isPrimitive( 0.3 )\n true\n > bool = isProbability.isPrimitive( new Number( 0.3 ) )\n false\n\n\nisProbability.isObject( value )\n Tests if a value is a number object having a value which is a probability.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object having a value which\n is a probability.\n\n Examples\n --------\n > var bool = isProbability.isObject( 0.77 )\n false\n > bool = isProbability.isObject( new Number( 0.77 ) )\n true\n\n\n See Also\n --------\n isNumber\n", "isProbabilityArray": "\nisProbabilityArray( value )\n Tests if a value is an array-like object containing only probabilities.\n\n A probability is defined as a numeric value on the interval [0,1].\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n probabilities.\n\n Examples\n --------\n > var bool = isProbabilityArray( [ 0.5, new Number(0.8) ] )\n true\n > bool = isProbabilityArray( [ 0.8, 1.2 ] )\n false\n > bool = isProbabilityArray( [ 0.8, '0.2' ] )\n false\n\n\nisProbabilityArray.primitives( value )\n Tests if a value is an array-like object containing only primitive\n probabilities.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n primitive probabilities.\n\n Examples\n --------\n > var bool = isProbabilityArray.primitives( [ 1.0, 0.0, 0.5 ] )\n true\n > bool = isProbabilityArray.primitives( [ 0.3, new Number(0.4) ] )\n false\n\n\nisProbabilityArray.objects( value )\n Tests if a value is an array-like object containing only number objects\n having probability values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n number objects having probability values.\n\n Examples\n --------\n > var bool = isProbabilityArray.objects( [ new Number(0.7), new Number(1.0) ] )\n true\n > bool = isProbabilityArray.objects( [ 1.0, 0.0, new Number(0.7) ] )\n false\n\n See Also\n --------\n isArray, isProbability\n", "isRangeError": "\nisRangeError( value )\n Tests if a value is a RangeError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a RangeError (or a descendant) object,\n false positives may occur due to the fact that the RangeError constructor\n inherits from Error and has no internal class of its own. Hence, RangeError\n impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a RangeError object.\n\n Examples\n --------\n > var bool = isRangeError( new RangeError( 'beep' ) )\n true\n > bool = isRangeError( {} )\n false\n\n See Also\n --------\n isError\n", - "isReadableProperty": "\nisReadableProperty( value, property )\n Tests if an object's own property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadableProperty( obj, 'boop' )\n true\n > bool = isReadableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadWriteProperty, isReadablePropertyIn, isWritableProperty\n", - "isReadablePropertyIn": "\nisReadablePropertyIn( value, property )\n Tests if an object's own or inherited property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadablePropertyIn( obj, 'boop' )\n true\n > bool = isReadablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadWritePropertyIn, isReadableProperty, isWritableProperty-in\n", - "isReadWriteProperty": "\nisReadWriteProperty( value, property )\n Tests if an object's own property is readable and writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is readable and writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadWriteProperty( obj, 'boop' )\n true\n > bool = isReadWriteProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadWritePropertyIn, isReadableProperty, isWritableProperty\n", - "isReadWritePropertyIn": "\nisReadWritePropertyIn( value, property )\n Tests if an object's own or inherited property is readable and writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is readable\n and writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadWritePropertyIn( obj, 'boop' )\n true\n > bool = isReadWritePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadWriteProperty, isReadablePropertyIn, isWritableProperty-in\n", + "isReadableProperty": "\nisReadableProperty( value, property )\n Tests if an object's own property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadableProperty( obj, 'boop' )\n true\n > bool = isReadableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadOnlyProperty, isReadWriteProperty, isReadablePropertyIn, isWritableProperty\n", + "isReadablePropertyIn": "\nisReadablePropertyIn( value, property )\n Tests if an object's own or inherited property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadablePropertyIn( obj, 'boop' )\n true\n > bool = isReadablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadWritePropertyIn, isReadableProperty, isWritablePropertyIn\n", + "isReadOnlyProperty": "\nisReadOnlyProperty( value, property )\n Tests if an object's own property is read-only.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is read-only.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = false;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadOnlyProperty( obj, 'boop' )\n true\n > bool = isReadOnlyProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadWriteProperty, isReadableProperty, isWritableProperty\n", + "isReadWriteProperty": "\nisReadWriteProperty( value, property )\n Tests if an object's own property is readable and writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is readable and writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadWriteProperty( obj, 'boop' )\n true\n > bool = isReadWriteProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadOnlyProperty, isReadWritePropertyIn, isReadableProperty, isWritableProperty\n", + "isReadWritePropertyIn": "\nisReadWritePropertyIn( value, property )\n Tests if an object's own or inherited property is readable and writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is readable\n and writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadWritePropertyIn( obj, 'boop' )\n true\n > bool = isReadWritePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadWriteProperty, isReadablePropertyIn, isWritablePropertyIn\n", "isReferenceError": "\nisReferenceError( value )\n Tests if a value is a ReferenceError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a ReferenceError (or a descendant)\n object, false positives may occur due to the fact that the ReferenceError\n constructor inherits from Error and has no internal class of its own.\n Hence, ReferenceError impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a ReferenceError object.\n\n Examples\n --------\n > var bool = isReferenceError( new ReferenceError( 'beep' ) )\n true\n > bool = isReferenceError( {} )\n false\n\n See Also\n --------\n isError\n", "isRegExp": "\nisRegExp( value )\n Tests if a value is a regular expression.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a regular expression.\n\n Examples\n --------\n > var bool = isRegExp( /\\.+/ )\n true\n > bool = isRegExp( {} )\n false\n\n", "isRegExpString": "\nisRegExpString( value )\n Tests if a value is a regular expression string.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a regular expression string.\n\n Examples\n --------\n > var bool = isRegExpString( '/beep/' )\n true\n > bool = isRegExpString( 'beep' )\n false\n > bool = isRegExpString( '' )\n false\n > bool = isRegExpString( null )\n false\n\n See Also\n --------\n isRegExp\n", @@ -1283,8 +1284,8 @@ var db = { "isURIError": "\nisURIError( value )\n Tests if a value is a URIError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a URIError (or a descendant) object,\n false positives may occur due to the fact that the URIError constructor\n inherits from Error and has no internal class of its own. Hence, URIError\n impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a URIError object.\n\n Examples\n --------\n > var bool = isURIError( new URIError( 'beep' ) )\n true\n > bool = isURIError( {} )\n false\n\n See Also\n --------\n isError\n", "isVectorLike": "\nisVectorLike( value )\n Tests if a value is a 1-dimensional ndarray-like object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a 1-dimensional ndarray-like\n object.\n\n Examples\n --------\n > var M = {};\n > M.data = [ 0, 0, 0, 0 ];\n > M.ndims = 1;\n > M.shape = [ 4 ];\n > M.strides = [ 1 ];\n > M.offset = 0;\n > M.order = 'row-major';\n > M.dtype = 'generic';\n > M.length = 4;\n > M.flags = {};\n > M.get = function get( i, j ) {};\n > M.set = function set( i, j ) {};\n > var bool = isVectorLike( M )\n true\n > bool = isVectorLike( [ 1, 2, 3, 4 ] )\n false\n > bool = isVectorLike( 3.14 )\n false\n > bool = isVectorLike( {} )\n false\n\n See Also\n --------\n isArray, isArrayLike, isMatrixLike, isndarrayLike, isTypedArrayLike\n", "isWhitespace": "\nisWhitespace( str )\n Tests whether a string contains only white space characters.\n\n A white space character is defined as one of the 25 characters defined as a\n white space (\"WSpace=Y\",\"WS\") character in the Unicode 9.0 character\n database, as well as one related white space character without the Unicode\n character property \"WSpace=Y\" (zero width non-breaking space which was\n deprecated as of Unicode 3.2).\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only white space\n characters.\n\n Examples\n --------\n > var bool = isWhitespace( ' ' )\n true\n > bool = isWhitespace( 'abcdef' )\n false\n > bool = isWhitespace( '' )\n false\n\n See Also\n --------\n RE_WHITESPACE\n", - "isWritableProperty": "\nisWritableProperty( value, property )\n Tests if an object's own property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty( obj, 'boop' )\n true\n > bool = isWritableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty, isReadWriteProperty, isWritableProperty-in\n", - "isWritableProperty-in": "\nisWritableProperty-in( value, property )\n Tests if an object's own or inherited property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty-in( obj, 'boop' )\n true\n > bool = isWritableProperty-in( obj, 'beep' )\n false\n\n See Also\n --------\n isReadablePropertyIn, isReadWritePropertyIn, isWritableProperty\n", + "isWritableProperty": "\nisWritableProperty( value, property )\n Tests if an object's own property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty( obj, 'boop' )\n true\n > bool = isWritableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty, isReadWriteProperty, isWritablePropertyIn\n", + "isWritablePropertyIn": "\nisWritablePropertyIn( value, property )\n Tests if an object's own or inherited property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritablePropertyIn( obj, 'boop' )\n true\n > bool = isWritablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadablePropertyIn, isReadWritePropertyIn, isWritableProperty\n", "IteratorSymbol": "\nIteratorSymbol\n Iterator symbol.\n\n This symbol specifies the default iterator for an object.\n\n The symbol is only supported in ES6/ES2015+ environments. For non-supporting\n environments, the value is `null`.\n\n Examples\n --------\n > var s = IteratorSymbol\n\n See Also\n --------\n Symbol\n", "kde2d": "", "keyBy": "\nkeyBy( collection, fcn[, thisArg] )\n Converts a collection to an object whose keys are determined by a provided\n function and whose values are the collection values.\n\n When invoked, the input function is provided two arguments:\n\n - `value`: collection value\n - `index`: collection index\n\n If more than one element in a collection resolves to the same key, the key\n value is the collection element which last resolved to the key.\n\n Object values are shallow copies.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Object\n Output object.\n\n Examples\n --------\n > function toKey( v ) { return v.a; };\n > var arr = [ { 'a': 1 }, { 'a': 2 } ];\n > keyBy( arr, toKey )\n { '1': { 'a': 1 }, '2': { 'a': 2 } }\n\n See Also\n --------\n forEach\n", From 7826f624366f528946e17e69fb1b2b408668c768 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 01:36:12 -0700 Subject: [PATCH 0153/1062] Add utility to test if an object has a read-only property --- .../assert/is-read-only-property-in/README.md | 161 ++++++++++ .../benchmark/benchmark.js | 51 ++++ .../is-read-only-property-in/docs/repl.txt | 35 +++ .../examples/index.js | 59 ++++ .../is-read-only-property-in/lib/index.js | 55 ++++ .../is-read-only-property-in/lib/main.js | 76 +++++ .../is-read-only-property-in/package.json | 77 +++++ .../is-read-only-property-in/test/test.js | 278 ++++++++++++++++++ 8 files changed, 792 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-read-only-property-in/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-read-only-property-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-read-only-property-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-read-only-property-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-read-only-property-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-read-only-property-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-read-only-property-in/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-read-only-property-in/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property-in/README.md b/lib/node_modules/@stdlib/assert/is-read-only-property-in/README.md new file mode 100644 index 000000000000..95f45442e0a1 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-only-property-in/README.md @@ -0,0 +1,161 @@ + + +# isReadOnlyPropertyIn + +> Test if an object's own or inherited property is read-only. + +
+ +## Usage + +```javascript +var isReadOnlyPropertyIn = require( '@stdlib/assert/is-read-only-property-in' ); +``` + +#### isReadOnlyPropertyIn( value, property ) + +Returns a `boolean` indicating if a `value` has a read-only `property`. + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var bool; +var obj; + +function Foo() { + this.foo = 'bar'; + return this; +} + +defineProperty( Foo.prototype, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); + +defineProperty( Foo.prototype, 'accessor', { + 'configurable': false, + 'enumerable': true, + 'get': function getter() { + return obj.foo; + } +}); + +obj = new Foo(); + +bool = isReadOnlyPropertyIn( obj, 'foo' ); +// returns false + +bool = isReadOnlyPropertyIn( obj, 'beep' ); +// returns true + +bool = isReadOnlyPropertyIn( obj, 'accessor' ); +// returns true +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isReadOnlyPropertyIn( 'beep', 'length' ); + // returns true + ``` + +- Property arguments are coerced to `strings`. + + ```javascript + var defineProperty = require( '@stdlib/utils/define-property' ); + + var obj = {}; + + defineProperty( obj, 'null', { + 'configurable': false, + 'enumerable': true, + 'writable': false, + 'value': true + }); + + var bool = isReadOnlyPropertyIn( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isReadOnlyPropertyIn = require( '@stdlib/assert/is-read-only-property' ); + +var bool = isReadOnlyPropertyIn( 'a', 'length' ); +// returns true + +bool = isReadOnlyPropertyIn( { 'a': 'b' }, 'a' ); +// returns false + +bool = isReadOnlyPropertyIn( [ 'a' ], 0 ); +// returns false + +bool = isReadOnlyPropertyIn( { 'null': false }, null ); +// returns false + +bool = isReadOnlyPropertyIn( { '[object Object]': false }, {} ); +// returns false + +bool = isReadOnlyPropertyIn( {}, 'toString' ); +// returns false + +bool = isReadOnlyPropertyIn( {}, 'hasOwnProperty' ); +// returns false + +bool = isReadOnlyPropertyIn( null, 'a' ); +// returns false + +bool = isReadOnlyPropertyIn( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-read-only-property-in/benchmark/benchmark.js new file mode 100644 index 000000000000..af88860247e5 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-only-property-in/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isReadOnlyPropertyIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isReadOnlyPropertyIn( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property-in/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-read-only-property-in/docs/repl.txt new file mode 100644 index 000000000000..6e0c29a9499d --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-only-property-in/docs/repl.txt @@ -0,0 +1,35 @@ + +{{alias}}( value, property ) + Tests if an object's own or inherited property is read-only. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own or inherited property is read- + only. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = true; + > desc.writable = false; + > desc.value = true; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + true + > bool = {{alias}}( obj, 'beep' ) + false + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property-in/examples/index.js b/lib/node_modules/@stdlib/assert/is-read-only-property-in/examples/index.js new file mode 100644 index 000000000000..d87fb95acaee --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-only-property-in/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isReadOnlyPropertyIn = require( './../lib' ); + +var bool = isReadOnlyPropertyIn( 'a', 'length' ); +console.log( bool ); +// => true + +bool = isReadOnlyPropertyIn( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => false + +bool = isReadOnlyPropertyIn( [ 'a' ], 0 ); +console.log( bool ); +// => false + +bool = isReadOnlyPropertyIn( { 'null': false }, null ); +console.log( bool ); +// => false + +bool = isReadOnlyPropertyIn( { '[object Object]': false }, {} ); +console.log( bool ); +// => false + +bool = isReadOnlyPropertyIn( {}, 'toString' ); +console.log( bool ); +// => false + +bool = isReadOnlyPropertyIn( {}, 'hasOwnProperty' ); +console.log( bool ); +// => false + +bool = isReadOnlyPropertyIn( null, 'a' ); +console.log( bool ); +// => false + +bool = isReadOnlyPropertyIn( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property-in/lib/index.js b/lib/node_modules/@stdlib/assert/is-read-only-property-in/lib/index.js new file mode 100644 index 000000000000..c4b9bd87cdbe --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-only-property-in/lib/index.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own or inherited property is read-only. +* +* @module @stdlib/assert/is-read-only-property +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isReadOnlyPropertyIn = require( '@stdlib/assert/is-read-only-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'writable': false, +* 'value': true +* }); +* +* var bool = isReadOnlyPropertyIn( obj, 'boop' ); +* // returns false +* +* bool = isReadOnlyPropertyIn( obj, 'beep' ); +* // returns true +*/ + +// MODULES // + +var isReadOnlyPropertyIn = require( './main.js' ); + + +// EXPORTS // + +module.exports = isReadOnlyPropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property-in/lib/main.js b/lib/node_modules/@stdlib/assert/is-read-only-property-in/lib/main.js new file mode 100644 index 000000000000..9ceb32e4bffe --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-only-property-in/lib/main.js @@ -0,0 +1,76 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptorIn = require( '@stdlib/utils/property-descriptor-in' ); + + +// MAIN // + +/** +* Tests if an object's own or inherited property is read-only. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is read-only +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'writable': false, +* 'value': true +* }); +* +* var bool = isReadOnlyPropertyIn( obj, 'boop' ); +* // returns false +* +* bool = isReadOnlyPropertyIn( obj, 'beep' ); +* // returns true +*/ +function isReadOnlyPropertyIn( value, property ) { + var desc = propertyDescriptorIn( value, property ); + return ( + desc !== null && + desc.configurable === false && + ( + // Data descriptor: + desc.writable === false || + + // Accessor descriptor: + ( + typeof desc.get === 'function' && + desc.set === void 0 + ) + ) + ); +} + + +// EXPORTS // + +module.exports = isReadOnlyPropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property-in/package.json b/lib/node_modules/@stdlib/assert/is-read-only-property-in/package.json new file mode 100644 index 000000000000..7e65a845cc42 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-only-property-in/package.json @@ -0,0 +1,77 @@ +{ + "name": "@stdlib/assert/is-read-only-property-in", + "version": "0.0.0", + "description": "Test if an object's own or inherited property is read-only.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "inherited", + "in", + "prototype", + "proto", + "readable", + "writable", + "read-only", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property-in/test/test.js b/lib/node_modules/@stdlib/assert/is-read-only-property-in/test/test.js new file mode 100644 index 000000000000..341ee44f4651 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-read-only-property-in/test/test.js @@ -0,0 +1,278 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isReadOnlyPropertyIn = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isReadOnlyPropertyIn, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if an object property is read-only', function test( t ) { + var bool; + var obj; + + obj = {}; + + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': true, + 'writable': false, + 'value': true + }); + + defineProperty( obj, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': true + }); + + defineProperty( obj, 'c', { + 'configurable': false, + 'enumerable': true, + 'get': getter + }); + + defineProperty( obj, 'd', { + 'configurable': false, + 'enumerable': false, + 'get': getter + }); + + bool = isReadOnlyPropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadOnlyPropertyIn( obj, 'b' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadOnlyPropertyIn( obj, 'c' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadOnlyPropertyIn( obj, 'd' ); + t.equal( bool, true, 'returns true' ); + + t.end(); + + function getter() { + // No-op... + } +}); + +tape( 'the function returns `true` if provided an inherited property which is read-only', function test( t ) { + var bool; + var obj; + + function Foo() { + return this; + } + + defineProperty( Foo.prototype, 'bar', { + 'configurable': false, + 'enumerable': true, + 'writable': false, + 'value': true + }); + + defineProperty( Foo.prototype, 'beep', { + 'configurable': false, + 'enumerable': false, + 'get': getter + }); + + obj = new Foo(); + + bool = isReadOnlyPropertyIn( obj, 'bar' ); + t.equal( bool, true, 'returns true' ); + + bool = isReadOnlyPropertyIn( obj, 'beep' ); + t.equal( bool, true, 'returns true' ); + + t.end(); + + function getter() { + // No-op... + } +}); + +tape( 'the function returns `false` if an object property is not read-only', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isReadOnlyPropertyIn( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyPropertyIn( [ 1, 2, 3 ], '1' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyPropertyIn( [ 1, 2, 3 ], 1 ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyPropertyIn( new Foo(), 'bar' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyPropertyIn( [ 'a' ], 'length' ); + t.equal( bool, false, 'returns false' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + + bool = isReadOnlyPropertyIn( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + obj = {}; + + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'get': getter, + 'set': setter + }); + + defineProperty( obj, 'b', { + 'configurable': false, + 'enumerable': false, + 'set': setter + }); + + bool = isReadOnlyPropertyIn( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyPropertyIn( obj, 'b' ); + t.equal( bool, false, 'returns false' ); + + t.end(); + + function getter() { + // No-op... + } + + function setter() { + // No-op... + } +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isReadOnlyPropertyIn( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isReadOnlyPropertyIn( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a read-only property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + defineProperty( obj, 'd', { + 'configurable': true, + 'enumerable': true, + 'set': setter + }); + + defineProperty( obj, 'e', { + 'configurable': true, + 'enumerable': true, + 'set': setter, + 'get': getter + }); + + defineProperty( obj, 'f', { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'g' + }); + + bool = isReadOnlyPropertyIn( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyPropertyIn( obj, 'd' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyPropertyIn( obj, 'e' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyPropertyIn( obj, 'f' ); + t.equal( bool, false, 'returns false' ); + + t.end(); + + function setter() { + // No-op... + } + + function getter() { + // No-op... + } +}); + +tape( 'the function returns `false` if provided an inherited property which is not read-only', function test( t ) { + var bool; + + bool = isReadOnlyPropertyIn( {}, 'hasOwnProperty' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyPropertyIn( {}, 'toString' ); + t.equal( bool, false, 'returns false' ); + + bool = isReadOnlyPropertyIn( {}, 'constructor' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isReadOnlyPropertyIn( 'beep', 'length' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); From e0a3d3f9a0db59d6cf1c8cfcac926b4e6e4e2063 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 01:37:05 -0700 Subject: [PATCH 0154/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 85bdadbe9662..0e115f6217b4 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -1404,6 +1404,15 @@ setReadOnly( ns, 'isRangeError', require( '@stdlib/assert/is-range-error' ) ); */ setReadOnly( ns, 'isReadOnlyProperty', require( '@stdlib/assert/is-read-only-property' ) ); +/** +* @name isReadOnlyPropertyIn +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-read-only-property-in} +*/ +setReadOnly( ns, 'isReadOnlyPropertyIn', require( '@stdlib/assert/is-read-only-property-in' ) ); + /** * @name isReadWriteProperty * @memberof ns From 4287ed2bf978b31b242fc2d2949c11e4ca6a55e7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 01:37:23 -0700 Subject: [PATCH 0155/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 13 +++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 7 ++++--- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 521f716d8871..2eb67014e05e 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -2877,6 +2877,19 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isReadOnlyPropertyIn', + 'path': '@stdlib/assert/is-read-only-property-in', + 'value': require( '@stdlib/assert/is-read-only-property-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-read-only-property', + '@stdlib/assert/is-read-write-property-in', + '@stdlib/assert/is-readable-property-in', + '@stdlib/assert/is-writable-property-in' + ] +}); + ns.push({ 'alias': 'isReadWriteProperty', 'path': '@stdlib/assert/is-read-write-property', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index de1700733ec7..a977afd3798a 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1244,6 +1244,7 @@ var db = { "isReadableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadableProperty( obj, 'boop' )\nbool = isReadableProperty( obj, 'beep' )\n", "isReadablePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadablePropertyIn( obj, 'boop' )\nbool = isReadablePropertyIn( obj, 'beep' )\n", "isReadOnlyProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = false;\ndesc.value = true;\ndefineProperty( obj, 'beep', desc );\nbool = isReadOnlyProperty( obj, 'boop' )\nbool = isReadOnlyProperty( obj, 'beep' )\n", + "isReadOnlyPropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = false;\ndesc.value = true;\ndefineProperty( obj, 'beep', desc );\nbool = isReadOnlyPropertyIn( obj, 'boop' )\nbool = isReadOnlyPropertyIn( obj, 'beep' )\n", "isReadWriteProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadWriteProperty( obj, 'boop' )\nbool = isReadWriteProperty( obj, 'beep' )\n", "isReadWritePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadWritePropertyIn( obj, 'boop' )\nbool = isReadWritePropertyIn( obj, 'beep' )\n", "isReferenceError": "bool = isReferenceError( new ReferenceError( 'beep' ) )\nbool = isReferenceError( {} )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index b2c82cc337e1..c5d4ef8cb364 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1242,10 +1242,11 @@ var db = { "isProbabilityArray": "\nisProbabilityArray( value )\n Tests if a value is an array-like object containing only probabilities.\n\n A probability is defined as a numeric value on the interval [0,1].\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n probabilities.\n\n Examples\n --------\n > var bool = isProbabilityArray( [ 0.5, new Number(0.8) ] )\n true\n > bool = isProbabilityArray( [ 0.8, 1.2 ] )\n false\n > bool = isProbabilityArray( [ 0.8, '0.2' ] )\n false\n\n\nisProbabilityArray.primitives( value )\n Tests if a value is an array-like object containing only primitive\n probabilities.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n primitive probabilities.\n\n Examples\n --------\n > var bool = isProbabilityArray.primitives( [ 1.0, 0.0, 0.5 ] )\n true\n > bool = isProbabilityArray.primitives( [ 0.3, new Number(0.4) ] )\n false\n\n\nisProbabilityArray.objects( value )\n Tests if a value is an array-like object containing only number objects\n having probability values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n number objects having probability values.\n\n Examples\n --------\n > var bool = isProbabilityArray.objects( [ new Number(0.7), new Number(1.0) ] )\n true\n > bool = isProbabilityArray.objects( [ 1.0, 0.0, new Number(0.7) ] )\n false\n\n See Also\n --------\n isArray, isProbability\n", "isRangeError": "\nisRangeError( value )\n Tests if a value is a RangeError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a RangeError (or a descendant) object,\n false positives may occur due to the fact that the RangeError constructor\n inherits from Error and has no internal class of its own. Hence, RangeError\n impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a RangeError object.\n\n Examples\n --------\n > var bool = isRangeError( new RangeError( 'beep' ) )\n true\n > bool = isRangeError( {} )\n false\n\n See Also\n --------\n isError\n", "isReadableProperty": "\nisReadableProperty( value, property )\n Tests if an object's own property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadableProperty( obj, 'boop' )\n true\n > bool = isReadableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadOnlyProperty, isReadWriteProperty, isReadablePropertyIn, isWritableProperty\n", - "isReadablePropertyIn": "\nisReadablePropertyIn( value, property )\n Tests if an object's own or inherited property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadablePropertyIn( obj, 'boop' )\n true\n > bool = isReadablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadWritePropertyIn, isReadableProperty, isWritablePropertyIn\n", - "isReadOnlyProperty": "\nisReadOnlyProperty( value, property )\n Tests if an object's own property is read-only.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is read-only.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = false;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadOnlyProperty( obj, 'boop' )\n true\n > bool = isReadOnlyProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadWriteProperty, isReadableProperty, isWritableProperty\n", + "isReadablePropertyIn": "\nisReadablePropertyIn( value, property )\n Tests if an object's own or inherited property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadablePropertyIn( obj, 'boop' )\n true\n > bool = isReadablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadOnlyPropertyIn, isReadWritePropertyIn, isReadableProperty, isWritablePropertyIn\n", + "isReadOnlyProperty": "\nisReadOnlyProperty( value, property )\n Tests if an object's own property is read-only.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is read-only.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = false;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadOnlyProperty( obj, 'boop' )\n true\n > bool = isReadOnlyProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadOnlyPropertyIn, isReadWriteProperty, isReadableProperty, isWritableProperty\n", + "isReadOnlyPropertyIn": "\nisReadOnlyPropertyIn( value, property )\n Tests if an object's own or inherited property is read-only.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is read-\n only.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = false;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadOnlyPropertyIn( obj, 'boop' )\n true\n > bool = isReadOnlyPropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadOnlyProperty, isReadWritePropertyIn, isReadablePropertyIn, isWritablePropertyIn\n", "isReadWriteProperty": "\nisReadWriteProperty( value, property )\n Tests if an object's own property is readable and writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is readable and writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadWriteProperty( obj, 'boop' )\n true\n > bool = isReadWriteProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadOnlyProperty, isReadWritePropertyIn, isReadableProperty, isWritableProperty\n", - "isReadWritePropertyIn": "\nisReadWritePropertyIn( value, property )\n Tests if an object's own or inherited property is readable and writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is readable\n and writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadWritePropertyIn( obj, 'boop' )\n true\n > bool = isReadWritePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadWriteProperty, isReadablePropertyIn, isWritablePropertyIn\n", + "isReadWritePropertyIn": "\nisReadWritePropertyIn( value, property )\n Tests if an object's own or inherited property is readable and writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is readable\n and writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadWritePropertyIn( obj, 'boop' )\n true\n > bool = isReadWritePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadOnlyPropertyIn, isReadWriteProperty, isReadablePropertyIn, isWritablePropertyIn\n", "isReferenceError": "\nisReferenceError( value )\n Tests if a value is a ReferenceError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a ReferenceError (or a descendant)\n object, false positives may occur due to the fact that the ReferenceError\n constructor inherits from Error and has no internal class of its own.\n Hence, ReferenceError impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a ReferenceError object.\n\n Examples\n --------\n > var bool = isReferenceError( new ReferenceError( 'beep' ) )\n true\n > bool = isReferenceError( {} )\n false\n\n See Also\n --------\n isError\n", "isRegExp": "\nisRegExp( value )\n Tests if a value is a regular expression.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a regular expression.\n\n Examples\n --------\n > var bool = isRegExp( /\\.+/ )\n true\n > bool = isRegExp( {} )\n false\n\n", "isRegExpString": "\nisRegExpString( value )\n Tests if a value is a regular expression string.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a regular expression string.\n\n Examples\n --------\n > var bool = isRegExpString( '/beep/' )\n true\n > bool = isRegExpString( 'beep' )\n false\n > bool = isRegExpString( '' )\n false\n > bool = isRegExpString( null )\n false\n\n See Also\n --------\n isRegExp\n", From 7f587015edf386431c3e9daf5f04ee6f06ce312a Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 01:38:36 -0700 Subject: [PATCH 0156/1062] Remove extra space --- .../@stdlib/assert/is-read-only-property/test/test.js | 2 +- .../@stdlib/assert/is-read-write-property/test/test.js | 2 +- .../@stdlib/assert/is-readable-property/test/test.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property/test/test.js b/lib/node_modules/@stdlib/assert/is-read-only-property/test/test.js index 3c9abdc9c9de..37705ab44613 100644 --- a/lib/node_modules/@stdlib/assert/is-read-only-property/test/test.js +++ b/lib/node_modules/@stdlib/assert/is-read-only-property/test/test.js @@ -211,7 +211,7 @@ tape( 'the function returns `false` if provided an inherited property', function var bool; bool = isReadOnlyProperty( {}, 'hasOwnProperty' ); - t.equal( bool, false, 'returns false ' ); + t.equal( bool, false, 'returns false' ); bool = isReadOnlyProperty( {}, 'toString' ); t.equal( bool, false, 'returns false' ); diff --git a/lib/node_modules/@stdlib/assert/is-read-write-property/test/test.js b/lib/node_modules/@stdlib/assert/is-read-write-property/test/test.js index 0d93afc84885..3151b6e29a99 100644 --- a/lib/node_modules/@stdlib/assert/is-read-write-property/test/test.js +++ b/lib/node_modules/@stdlib/assert/is-read-write-property/test/test.js @@ -159,7 +159,7 @@ tape( 'the function returns `false` if provided an inherited property', function var bool; bool = isReadWriteProperty( {}, 'hasOwnProperty' ); - t.equal( bool, false, 'returns false ' ); + t.equal( bool, false, 'returns false' ); bool = isReadWriteProperty( {}, 'toString' ); t.equal( bool, false, 'returns false' ); diff --git a/lib/node_modules/@stdlib/assert/is-readable-property/test/test.js b/lib/node_modules/@stdlib/assert/is-readable-property/test/test.js index d2cdfe0a592d..eef760686ec3 100644 --- a/lib/node_modules/@stdlib/assert/is-readable-property/test/test.js +++ b/lib/node_modules/@stdlib/assert/is-readable-property/test/test.js @@ -130,7 +130,7 @@ tape( 'the function returns `false` if provided an inherited property', function var bool; bool = isReadableProperty( {}, 'hasOwnProperty' ); - t.equal( bool, false, 'returns false ' ); + t.equal( bool, false, 'returns false' ); bool = isReadableProperty( {}, 'toString' ); t.equal( bool, false, 'returns false' ); From 12e79406ff2e2a9a56d8d75017f2b657380a8279 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 13:48:40 -0700 Subject: [PATCH 0157/1062] Add utility to test if an object's own property is write-only --- .../assert/is-write-only-property/README.md | 160 +++++++++++++ .../benchmark/benchmark.js | 51 ++++ .../is-write-only-property/docs/repl.txt | 33 +++ .../is-write-only-property/examples/index.js | 59 +++++ .../is-write-only-property/lib/index.js | 58 +++++ .../assert/is-write-only-property/lib/main.js | 73 ++++++ .../is-write-only-property/package.json | 73 ++++++ .../is-write-only-property/test/test.js | 222 ++++++++++++++++++ 8 files changed, 729 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-write-only-property/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-write-only-property/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-write-only-property/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-write-only-property/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-write-only-property/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-write-only-property/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-write-only-property/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-write-only-property/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-write-only-property/README.md b/lib/node_modules/@stdlib/assert/is-write-only-property/README.md new file mode 100644 index 000000000000..637a06394433 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-write-only-property/README.md @@ -0,0 +1,160 @@ + + +# isWriteOnlyProperty + +> Test if an object's own property is [write-only][@stdlib/utils/define-write-only-accessor]. + +
+ +## Usage + +```javascript +var isWriteOnlyProperty = require( '@stdlib/assert/is-write-only-property' ); +``` + +#### isWriteOnlyProperty( value, property ) + +Returns a `boolean` indicating if a `value` has a [write-only][@stdlib/utils/define-write-only-accessor] `property`. + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = { + 'foo': 'bar' +}; + +defineProperty( obj, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); + +defineProperty( obj, 'accessor', { + 'configurable': false, + 'enumerable': true, + 'set': function setter( v ) { + obj.foo = v; + } +}); + +var bool = isWriteOnlyProperty( obj, 'foo' ); +// returns false + +bool = isWriteOnlyProperty( obj, 'beep' ); +// returns false + +bool = isWriteOnlyProperty( obj, 'accessor' ); +// returns true +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isWriteOnlyProperty( 'beep', 'length' ); + // returns false + ``` + +- Property arguments are coerced to `strings`. + + ```javascript + var defineProperty = require( '@stdlib/utils/define-property' ); + + var obj = {}; + + function setter( v ) { + obj.null = v; + } + + defineProperty( obj, 'null', { + 'configurable': false, + 'enumerable': true, + 'set': setter + }); + + var bool = isWriteOnlyProperty( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isWriteOnlyProperty = require( '@stdlib/assert/is-write-only-property' ); + +var bool = isWriteOnlyProperty( 'a', 'length' ); +// returns false + +bool = isWriteOnlyProperty( { 'a': 'b' }, 'a' ); +// returns false + +bool = isWriteOnlyProperty( [ 'a' ], 0 ); +// returns false + +bool = isWriteOnlyProperty( { 'null': false }, null ); +// returns false + +bool = isWriteOnlyProperty( { '[object Object]': false }, {} ); +// returns false + +bool = isWriteOnlyProperty( {}, 'toString' ); +// returns false + +bool = isWriteOnlyProperty( {}, 'hasOwnProperty' ); +// returns false + +bool = isWriteOnlyProperty( null, 'a' ); +// returns false + +bool = isWriteOnlyProperty( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-write-only-property/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-write-only-property/benchmark/benchmark.js new file mode 100644 index 000000000000..d3f2daf0d907 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-write-only-property/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isWriteOnlyProperty = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isWriteOnlyProperty( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-write-only-property/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-write-only-property/docs/repl.txt new file mode 100644 index 000000000000..f2a82047a263 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-write-only-property/docs/repl.txt @@ -0,0 +1,33 @@ + +{{alias}}( value, property ) + Tests if an object's own property is write-only. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own property is write-only. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = true; + > desc.set = function setter( v ) { obj.boop = v; }; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + false + > bool = {{alias}}( obj, 'beep' ) + true + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-write-only-property/examples/index.js b/lib/node_modules/@stdlib/assert/is-write-only-property/examples/index.js new file mode 100644 index 000000000000..329d6fd29c2b --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-write-only-property/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isWriteOnlyProperty = require( './../lib' ); + +var bool = isWriteOnlyProperty( 'a', 'length' ); +console.log( bool ); +// => false + +bool = isWriteOnlyProperty( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => false + +bool = isWriteOnlyProperty( [ 'a' ], 0 ); +console.log( bool ); +// => false + +bool = isWriteOnlyProperty( { 'null': false }, null ); +console.log( bool ); +// => false + +bool = isWriteOnlyProperty( { '[object Object]': false }, {} ); +console.log( bool ); +// => false + +bool = isWriteOnlyProperty( {}, 'toString' ); +console.log( bool ); +// => false + +bool = isWriteOnlyProperty( {}, 'hasOwnProperty' ); +console.log( bool ); +// => false + +bool = isWriteOnlyProperty( null, 'a' ); +console.log( bool ); +// => false + +bool = isWriteOnlyProperty( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-write-only-property/lib/index.js b/lib/node_modules/@stdlib/assert/is-write-only-property/lib/index.js new file mode 100644 index 000000000000..188106d723b3 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-write-only-property/lib/index.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own property is write-only. +* +* @module @stdlib/assert/is-write-only-property +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isWriteOnlyProperty = require( '@stdlib/assert/is-write-only-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* function setter( v ) { +* obj.boop = v; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'set': setter +* }); +* +* var bool = isWriteOnlyProperty( obj, 'boop' ); +* // returns false +* +* bool = isWriteOnlyProperty( obj, 'beep' ); +* // returns true +*/ + +// MODULES // + +var isWriteOnlyProperty = require( './main.js' ); + + +// EXPORTS // + +module.exports = isWriteOnlyProperty; diff --git a/lib/node_modules/@stdlib/assert/is-write-only-property/lib/main.js b/lib/node_modules/@stdlib/assert/is-write-only-property/lib/main.js new file mode 100644 index 000000000000..585089e16384 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-write-only-property/lib/main.js @@ -0,0 +1,73 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptor = require( '@stdlib/utils/property-descriptor' ); + + +// MAIN // + +/** +* Tests if an object's own property is write-only. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is write-only +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* function setter( v ) { +* obj.boop = v; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'set': setter +* }); +* +* var bool = isWriteOnlyProperty( obj, 'boop' ); +* // returns false +* +* bool = isWriteOnlyProperty( obj, 'beep' ); +* // returns true +*/ +function isWriteOnlyProperty( value, property ) { + var desc = propertyDescriptor( value, property ); + return ( + desc !== null && + desc.configurable === false && + ( + typeof desc.set === 'function' && + desc.get === void 0 + ) + ); +} + + +// EXPORTS // + +module.exports = isWriteOnlyProperty; diff --git a/lib/node_modules/@stdlib/assert/is-write-only-property/package.json b/lib/node_modules/@stdlib/assert/is-write-only-property/package.json new file mode 100644 index 000000000000..39f4308a95ef --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-write-only-property/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/assert/is-write-only-property", + "version": "0.0.0", + "description": "Test if an object's own property is write-only.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "readable", + "writable", + "write-only", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-write-only-property/test/test.js b/lib/node_modules/@stdlib/assert/is-write-only-property/test/test.js new file mode 100644 index 000000000000..bf44632a2b26 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-write-only-property/test/test.js @@ -0,0 +1,222 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isWriteOnlyProperty = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isWriteOnlyProperty, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if an object property is write-only', function test( t ) { + var bool; + var obj; + + obj = {}; + + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': true, + 'set': setter + }); + + defineProperty( obj, 'b', { + 'configurable': false, + 'enumerable': false, + 'set': setter + }); + + bool = isWriteOnlyProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isWriteOnlyProperty( obj, 'b' ); + t.equal( bool, true, 'returns true' ); + + t.end(); + + function setter() { + // No-op... + } +}); + +tape( 'the function returns `false` if an object property is not write-only', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isWriteOnlyProperty( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyProperty( [ 1, 2, 3 ], '1' ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyProperty( [ 1, 2, 3 ], 1 ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyProperty( new Foo(), 'bar' ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyProperty( [ 'a' ], 'length' ); + t.equal( bool, false, 'returns false' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + + bool = isWriteOnlyProperty( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'get': getter, + 'set': setter + }); + + bool = isWriteOnlyProperty( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'get': getter + }); + + bool = isWriteOnlyProperty( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + t.end(); + + function getter() { + // No-op... + } + + function setter() { + // No-op... + } +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isWriteOnlyProperty( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isWriteOnlyProperty( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a write-only property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + defineProperty( obj, 'd', { + 'configurable': true, + 'enumerable': true, + 'get': getter + }); + + defineProperty( obj, 'e', { + 'configurable': true, + 'enumerable': true, + 'set': setter, + 'get': getter + }); + + defineProperty( obj, 'f', { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'g' + }); + + bool = isWriteOnlyProperty( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyProperty( obj, 'd' ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyProperty( obj, 'e' ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyProperty( obj, 'f' ); + t.equal( bool, false, 'returns false' ); + + t.end(); + + function setter() { + // No-op... + } + + function getter() { + // No-op... + } +}); + +tape( 'the function returns `false` if provided an inherited property', function test( t ) { + var bool; + + bool = isWriteOnlyProperty( {}, 'hasOwnProperty' ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyProperty( {}, 'toString' ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyProperty( {}, 'constructor' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isWriteOnlyProperty( 'beep', 'length' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); From 6fc4c4bbef2de30258763d522952816357b82a10 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 13:49:52 -0700 Subject: [PATCH 0158/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 0e115f6217b4..195ba664511e 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -1827,6 +1827,15 @@ setReadOnly( ns, 'isWritableProperty', require( '@stdlib/assert/is-writable-prop */ setReadOnly( ns, 'isWritablePropertyIn', require( '@stdlib/assert/is-writable-property-in' ) ); +/** +* @name isWriteOnlyProperty +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-write-only-property} +*/ +setReadOnly( ns, 'isWriteOnlyProperty', require( '@stdlib/assert/is-write-only-property' ) ); + // EXPORTS // From 6880af612b6b839439a2e220babcdc1bfc39fd0b Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 13:51:20 -0700 Subject: [PATCH 0159/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 13 +++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 2eb67014e05e..04d6143fdacd 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -3346,6 +3346,19 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isWriteOnlyProperty', + 'path': '@stdlib/assert/is-write-only-property', + 'value': require( '@stdlib/assert/is-write-only-property' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-read-only-property', + '@stdlib/assert/is-read-write-property', + '@stdlib/assert/is-writable-property', + '@stdlib/assert/is-write-only-property-in' + ] +}); + ns.push({ 'alias': 'IteratorSymbol', 'path': '@stdlib/symbol/iterator', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index a977afd3798a..0fcc4d5d7a97 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1287,6 +1287,7 @@ var db = { "isWhitespace": "bool = isWhitespace( ' ' )\nbool = isWhitespace( 'abcdef' )\nbool = isWhitespace( '' )\n", "isWritableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = false;\ndesc.value = 'beep';\ndefineProperty( obj, 'beep', desc );\nbool = isWritableProperty( obj, 'boop' )\nbool = isWritableProperty( obj, 'beep' )\n", "isWritablePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = false;\ndesc.value = 'beep';\ndefineProperty( obj, 'beep', desc );\nbool = isWritablePropertyIn( obj, 'boop' )\nbool = isWritablePropertyIn( obj, 'beep' )\n", + "isWriteOnlyProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isWriteOnlyProperty( obj, 'boop' )\nbool = isWriteOnlyProperty( obj, 'beep' )\n", "IteratorSymbol": "s = IteratorSymbol\n", "keyBy": "function toKey( v ) { return v.a; };\narr = [ { 'a': 1 }, { 'a': 2 } ];\nkeyBy( arr, toKey )\n", "keyByRight": "function toKey( v ) { return v.a; };\narr = [ { 'a': 1 }, { 'a': 2 } ];\nkeyByRight( arr, toKey )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index c5d4ef8cb364..eb80dee53725 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1285,8 +1285,9 @@ var db = { "isURIError": "\nisURIError( value )\n Tests if a value is a URIError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a URIError (or a descendant) object,\n false positives may occur due to the fact that the URIError constructor\n inherits from Error and has no internal class of its own. Hence, URIError\n impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a URIError object.\n\n Examples\n --------\n > var bool = isURIError( new URIError( 'beep' ) )\n true\n > bool = isURIError( {} )\n false\n\n See Also\n --------\n isError\n", "isVectorLike": "\nisVectorLike( value )\n Tests if a value is a 1-dimensional ndarray-like object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a 1-dimensional ndarray-like\n object.\n\n Examples\n --------\n > var M = {};\n > M.data = [ 0, 0, 0, 0 ];\n > M.ndims = 1;\n > M.shape = [ 4 ];\n > M.strides = [ 1 ];\n > M.offset = 0;\n > M.order = 'row-major';\n > M.dtype = 'generic';\n > M.length = 4;\n > M.flags = {};\n > M.get = function get( i, j ) {};\n > M.set = function set( i, j ) {};\n > var bool = isVectorLike( M )\n true\n > bool = isVectorLike( [ 1, 2, 3, 4 ] )\n false\n > bool = isVectorLike( 3.14 )\n false\n > bool = isVectorLike( {} )\n false\n\n See Also\n --------\n isArray, isArrayLike, isMatrixLike, isndarrayLike, isTypedArrayLike\n", "isWhitespace": "\nisWhitespace( str )\n Tests whether a string contains only white space characters.\n\n A white space character is defined as one of the 25 characters defined as a\n white space (\"WSpace=Y\",\"WS\") character in the Unicode 9.0 character\n database, as well as one related white space character without the Unicode\n character property \"WSpace=Y\" (zero width non-breaking space which was\n deprecated as of Unicode 3.2).\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only white space\n characters.\n\n Examples\n --------\n > var bool = isWhitespace( ' ' )\n true\n > bool = isWhitespace( 'abcdef' )\n false\n > bool = isWhitespace( '' )\n false\n\n See Also\n --------\n RE_WHITESPACE\n", - "isWritableProperty": "\nisWritableProperty( value, property )\n Tests if an object's own property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty( obj, 'boop' )\n true\n > bool = isWritableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty, isReadWriteProperty, isWritablePropertyIn\n", + "isWritableProperty": "\nisWritableProperty( value, property )\n Tests if an object's own property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty( obj, 'boop' )\n true\n > bool = isWritableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty, isReadWriteProperty, isWritablePropertyIn, isWriteOnlyProperty\n", "isWritablePropertyIn": "\nisWritablePropertyIn( value, property )\n Tests if an object's own or inherited property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritablePropertyIn( obj, 'boop' )\n true\n > bool = isWritablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadablePropertyIn, isReadWritePropertyIn, isWritableProperty\n", + "isWriteOnlyProperty": "\nisWriteOnlyProperty( value, property )\n Tests if an object's own property is write-only.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is write-only.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isWriteOnlyProperty( obj, 'boop' )\n false\n > bool = isWriteOnlyProperty( obj, 'beep' )\n true\n\n See Also\n --------\n isReadOnlyProperty, isReadWriteProperty, isWritableProperty\n", "IteratorSymbol": "\nIteratorSymbol\n Iterator symbol.\n\n This symbol specifies the default iterator for an object.\n\n The symbol is only supported in ES6/ES2015+ environments. For non-supporting\n environments, the value is `null`.\n\n Examples\n --------\n > var s = IteratorSymbol\n\n See Also\n --------\n Symbol\n", "kde2d": "", "keyBy": "\nkeyBy( collection, fcn[, thisArg] )\n Converts a collection to an object whose keys are determined by a provided\n function and whose values are the collection values.\n\n When invoked, the input function is provided two arguments:\n\n - `value`: collection value\n - `index`: collection index\n\n If more than one element in a collection resolves to the same key, the key\n value is the collection element which last resolved to the key.\n\n Object values are shallow copies.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Object\n Output object.\n\n Examples\n --------\n > function toKey( v ) { return v.a; };\n > var arr = [ { 'a': 1 }, { 'a': 2 } ];\n > keyBy( arr, toKey )\n { '1': { 'a': 1 }, '2': { 'a': 2 } }\n\n See Also\n --------\n forEach\n", From acc404ddb3153cfb72e56c2a9a9326ac792a8b0b Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 13:59:34 -0700 Subject: [PATCH 0160/1062] Add assertion utility to test if an object property is write-only --- .../is-write-only-property-in/README.md | 166 +++++++++++ .../benchmark/benchmark.js | 51 ++++ .../is-write-only-property-in/docs/repl.txt | 34 +++ .../examples/index.js | 59 ++++ .../is-write-only-property-in/lib/index.js | 58 ++++ .../is-write-only-property-in/lib/main.js | 73 +++++ .../is-write-only-property-in/package.json | 77 ++++++ .../is-write-only-property-in/test/test.js | 257 ++++++++++++++++++ 8 files changed, 775 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-write-only-property-in/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-write-only-property-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-write-only-property-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-write-only-property-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-write-only-property-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-write-only-property-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-write-only-property-in/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-write-only-property-in/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-write-only-property-in/README.md b/lib/node_modules/@stdlib/assert/is-write-only-property-in/README.md new file mode 100644 index 000000000000..d31f7c3ca8f8 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-write-only-property-in/README.md @@ -0,0 +1,166 @@ + + +# isWriteOnlyPropertyIn + +> Test if an object's own or inherited property is [write-only][@stdlib/utils/define-write-only-accessor]. + +
+ +## Usage + +```javascript +var isWriteOnlyPropertyIn = require( '@stdlib/assert/is-write-only-property-in' ); +``` + +#### isWriteOnlyPropertyIn( value, property ) + +Returns a `boolean` indicating if a `value` has a [write-only][@stdlib/utils/define-write-only-accessor] `property`. + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var bool; +var obj; + +function Foo() { + this.foo = 'bar'; + return this; +} + +defineProperty( Foo.prototype, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); + +defineProperty( Foo.prototype, 'accessor', { + 'configurable': false, + 'enumerable': true, + 'set': function setter( v ) { + obj.foo = v; + } +}); + +obj = new Foo(); + +bool = isWriteOnlyPropertyIn( obj, 'foo' ); +// returns false + +bool = isWriteOnlyPropertyIn( obj, 'beep' ); +// returns false + +bool = isWriteOnlyPropertyIn( obj, 'accessor' ); +// returns true +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isWriteOnlyPropertyIn( 'beep', 'length' ); + // returns false + ``` + +- Property arguments are coerced to `strings`. + + ```javascript + var defineProperty = require( '@stdlib/utils/define-property' ); + + var obj = {}; + + function setter( v ) { + obj.null = v; + } + + defineProperty( obj, 'null', { + 'configurable': false, + 'enumerable': true, + 'set': setter + }); + + var bool = isWriteOnlyPropertyIn( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isWriteOnlyPropertyIn = require( '@stdlib/assert/is-write-only-property-in' ); + +var bool = isWriteOnlyPropertyIn( 'a', 'length' ); +// returns false + +bool = isWriteOnlyPropertyIn( { 'a': 'b' }, 'a' ); +// returns false + +bool = isWriteOnlyPropertyIn( [ 'a' ], 0 ); +// returns false + +bool = isWriteOnlyPropertyIn( { 'null': false }, null ); +// returns false + +bool = isWriteOnlyPropertyIn( { '[object Object]': false }, {} ); +// returns false + +bool = isWriteOnlyPropertyIn( {}, 'toString' ); +// returns false + +bool = isWriteOnlyPropertyIn( {}, 'hasOwnProperty' ); +// returns false + +bool = isWriteOnlyPropertyIn( null, 'a' ); +// returns false + +bool = isWriteOnlyPropertyIn( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-write-only-property-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-write-only-property-in/benchmark/benchmark.js new file mode 100644 index 000000000000..14e76637faf4 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-write-only-property-in/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isWriteOnlyPropertyIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isWriteOnlyPropertyIn( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-write-only-property-in/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-write-only-property-in/docs/repl.txt new file mode 100644 index 000000000000..aa8777c13fac --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-write-only-property-in/docs/repl.txt @@ -0,0 +1,34 @@ + +{{alias}}( value, property ) + Tests if an object's own or inherited property is write-only. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own or inherited property is write- + only. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = true; + > desc.set = function setter( v ) { obj.boop = v; }; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + false + > bool = {{alias}}( obj, 'beep' ) + true + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-write-only-property-in/examples/index.js b/lib/node_modules/@stdlib/assert/is-write-only-property-in/examples/index.js new file mode 100644 index 000000000000..c09c6c329eed --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-write-only-property-in/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isWriteOnlyPropertyIn = require( './../lib' ); + +var bool = isWriteOnlyPropertyIn( 'a', 'length' ); +console.log( bool ); +// => false + +bool = isWriteOnlyPropertyIn( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => false + +bool = isWriteOnlyPropertyIn( [ 'a' ], 0 ); +console.log( bool ); +// => false + +bool = isWriteOnlyPropertyIn( { 'null': false }, null ); +console.log( bool ); +// => false + +bool = isWriteOnlyPropertyIn( { '[object Object]': false }, {} ); +console.log( bool ); +// => false + +bool = isWriteOnlyPropertyIn( {}, 'toString' ); +console.log( bool ); +// => false + +bool = isWriteOnlyPropertyIn( {}, 'hasOwnProperty' ); +console.log( bool ); +// => false + +bool = isWriteOnlyPropertyIn( null, 'a' ); +console.log( bool ); +// => false + +bool = isWriteOnlyPropertyIn( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-write-only-property-in/lib/index.js b/lib/node_modules/@stdlib/assert/is-write-only-property-in/lib/index.js new file mode 100644 index 000000000000..bc19131f7f57 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-write-only-property-in/lib/index.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own or inherited property is write-only. +* +* @module @stdlib/assert/is-write-only-property-in +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isWriteOnlyPropertyIn = require( '@stdlib/assert/is-write-only-property-in' ); +* +* var obj = { +* 'boop': true +* }; +* +* function setter( v ) { +* obj.boop = v; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'set': setter +* }); +* +* var bool = isWriteOnlyPropertyIn( obj, 'boop' ); +* // returns false +* +* bool = isWriteOnlyPropertyIn( obj, 'beep' ); +* // returns true +*/ + +// MODULES // + +var isWriteOnlyPropertyIn = require( './main.js' ); + + +// EXPORTS // + +module.exports = isWriteOnlyPropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-write-only-property-in/lib/main.js b/lib/node_modules/@stdlib/assert/is-write-only-property-in/lib/main.js new file mode 100644 index 000000000000..4409387af717 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-write-only-property-in/lib/main.js @@ -0,0 +1,73 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptorIn = require( '@stdlib/utils/property-descriptor-in' ); + + +// MAIN // + +/** +* Tests if an object's own or inherited property is write-only. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is write-only +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* function setter( v ) { +* obj.boop = v; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'set': setter +* }); +* +* var bool = isWriteOnlyPropertyIn( obj, 'boop' ); +* // returns false +* +* bool = isWriteOnlyPropertyIn( obj, 'beep' ); +* // returns true +*/ +function isWriteOnlyPropertyIn( value, property ) { + var desc = propertyDescriptorIn( value, property ); + return ( + desc !== null && + desc.configurable === false && + ( + typeof desc.set === 'function' && + desc.get === void 0 + ) + ); +} + + +// EXPORTS // + +module.exports = isWriteOnlyPropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-write-only-property-in/package.json b/lib/node_modules/@stdlib/assert/is-write-only-property-in/package.json new file mode 100644 index 000000000000..57128ba19694 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-write-only-property-in/package.json @@ -0,0 +1,77 @@ +{ + "name": "@stdlib/assert/is-write-only-property-in", + "version": "0.0.0", + "description": "Test if an object's own or inherited property is write-only.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "inherited", + "in", + "prototype", + "proto", + "readable", + "writable", + "write-only", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-write-only-property-in/test/test.js b/lib/node_modules/@stdlib/assert/is-write-only-property-in/test/test.js new file mode 100644 index 000000000000..04ef67ce6ea5 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-write-only-property-in/test/test.js @@ -0,0 +1,257 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isWriteOnlyPropertyIn = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isWriteOnlyPropertyIn, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if an object property is write-only', function test( t ) { + var bool; + var obj; + + obj = {}; + + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': true, + 'set': setter + }); + + defineProperty( obj, 'b', { + 'configurable': false, + 'enumerable': false, + 'set': setter + }); + + bool = isWriteOnlyPropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isWriteOnlyPropertyIn( obj, 'b' ); + t.equal( bool, true, 'returns true' ); + + t.end(); + + function setter() { + // No-op... + } +}); + +tape( 'the function returns `true` if an inherited object property is write-only', function test( t ) { + var bool; + var obj; + + function Foo() { + return this; + } + + defineProperty( Foo.prototype, 'a', { + 'configurable': false, + 'enumerable': true, + 'set': setter + }); + + defineProperty( Foo.prototype, 'b', { + 'configurable': false, + 'enumerable': false, + 'set': setter + }); + + obj = new Foo(); + + bool = isWriteOnlyPropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isWriteOnlyPropertyIn( obj, 'b' ); + t.equal( bool, true, 'returns true' ); + + t.end(); + + function setter() { + // No-op... + } +}); + +tape( 'the function returns `false` if an object property is not write-only', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isWriteOnlyPropertyIn( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyPropertyIn( [ 1, 2, 3 ], '1' ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyPropertyIn( [ 1, 2, 3 ], 1 ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyPropertyIn( new Foo(), 'bar' ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyPropertyIn( [ 'a' ], 'length' ); + t.equal( bool, false, 'returns false' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + + bool = isWriteOnlyPropertyIn( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'get': getter, + 'set': setter + }); + + bool = isWriteOnlyPropertyIn( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'get': getter + }); + + bool = isWriteOnlyPropertyIn( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + t.end(); + + function getter() { + // No-op... + } + + function setter() { + // No-op... + } +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isWriteOnlyPropertyIn( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isWriteOnlyPropertyIn( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a write-only property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + defineProperty( obj, 'd', { + 'configurable': true, + 'enumerable': true, + 'get': getter + }); + + defineProperty( obj, 'e', { + 'configurable': true, + 'enumerable': true, + 'set': setter, + 'get': getter + }); + + defineProperty( obj, 'f', { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'g' + }); + + bool = isWriteOnlyPropertyIn( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyPropertyIn( obj, 'd' ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyPropertyIn( obj, 'e' ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyPropertyIn( obj, 'f' ); + t.equal( bool, false, 'returns false' ); + + t.end(); + + function setter() { + // No-op... + } + + function getter() { + // No-op... + } +}); + +tape( 'the function returns `false` if provided an inherited property which is not write-only', function test( t ) { + var bool; + + bool = isWriteOnlyPropertyIn( {}, 'hasOwnProperty' ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyPropertyIn( {}, 'toString' ); + t.equal( bool, false, 'returns false' ); + + bool = isWriteOnlyPropertyIn( {}, 'constructor' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isWriteOnlyPropertyIn( 'beep', 'length' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); From d56e1f2a089a0f6e96dedbf82a9be9373dad51cc Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 14:00:36 -0700 Subject: [PATCH 0161/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 195ba664511e..3ce0da0b5c3e 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -1836,6 +1836,15 @@ setReadOnly( ns, 'isWritablePropertyIn', require( '@stdlib/assert/is-writable-pr */ setReadOnly( ns, 'isWriteOnlyProperty', require( '@stdlib/assert/is-write-only-property' ) ); +/** +* @name isWriteOnlyPropertyIn +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-write-only-property-in} +*/ +setReadOnly( ns, 'isWriteOnlyPropertyIn', require( '@stdlib/assert/is-write-only-property-in' ) ); + // EXPORTS // From 0c0a19459d4084cc33c793c0c0dfe7a2f32f7e30 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 14:00:53 -0700 Subject: [PATCH 0162/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 13 +++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 +++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 04d6143fdacd..8d32e6c9d61a 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -3359,6 +3359,19 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isWriteOnlyPropertyIn', + 'path': '@stdlib/assert/is-write-only-property-in', + 'value': require( '@stdlib/assert/is-write-only-property-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-read-only-property-in', + '@stdlib/assert/is-read-write-property-in', + '@stdlib/assert/is-writable-property-in', + '@stdlib/assert/is-write-only-property' + ] +}); + ns.push({ 'alias': 'IteratorSymbol', 'path': '@stdlib/symbol/iterator', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 0fcc4d5d7a97..7ef312da8450 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1288,6 +1288,7 @@ var db = { "isWritableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = false;\ndesc.value = 'beep';\ndefineProperty( obj, 'beep', desc );\nbool = isWritableProperty( obj, 'boop' )\nbool = isWritableProperty( obj, 'beep' )\n", "isWritablePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = false;\ndesc.value = 'beep';\ndefineProperty( obj, 'beep', desc );\nbool = isWritablePropertyIn( obj, 'boop' )\nbool = isWritablePropertyIn( obj, 'beep' )\n", "isWriteOnlyProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isWriteOnlyProperty( obj, 'boop' )\nbool = isWriteOnlyProperty( obj, 'beep' )\n", + "isWriteOnlyPropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isWriteOnlyPropertyIn( obj, 'boop' )\nbool = isWriteOnlyPropertyIn( obj, 'beep' )\n", "IteratorSymbol": "s = IteratorSymbol\n", "keyBy": "function toKey( v ) { return v.a; };\narr = [ { 'a': 1 }, { 'a': 2 } ];\nkeyBy( arr, toKey )\n", "keyByRight": "function toKey( v ) { return v.a; };\narr = [ { 'a': 1 }, { 'a': 2 } ];\nkeyByRight( arr, toKey )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index eb80dee53725..071acd194aa9 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1286,8 +1286,9 @@ var db = { "isVectorLike": "\nisVectorLike( value )\n Tests if a value is a 1-dimensional ndarray-like object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a 1-dimensional ndarray-like\n object.\n\n Examples\n --------\n > var M = {};\n > M.data = [ 0, 0, 0, 0 ];\n > M.ndims = 1;\n > M.shape = [ 4 ];\n > M.strides = [ 1 ];\n > M.offset = 0;\n > M.order = 'row-major';\n > M.dtype = 'generic';\n > M.length = 4;\n > M.flags = {};\n > M.get = function get( i, j ) {};\n > M.set = function set( i, j ) {};\n > var bool = isVectorLike( M )\n true\n > bool = isVectorLike( [ 1, 2, 3, 4 ] )\n false\n > bool = isVectorLike( 3.14 )\n false\n > bool = isVectorLike( {} )\n false\n\n See Also\n --------\n isArray, isArrayLike, isMatrixLike, isndarrayLike, isTypedArrayLike\n", "isWhitespace": "\nisWhitespace( str )\n Tests whether a string contains only white space characters.\n\n A white space character is defined as one of the 25 characters defined as a\n white space (\"WSpace=Y\",\"WS\") character in the Unicode 9.0 character\n database, as well as one related white space character without the Unicode\n character property \"WSpace=Y\" (zero width non-breaking space which was\n deprecated as of Unicode 3.2).\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only white space\n characters.\n\n Examples\n --------\n > var bool = isWhitespace( ' ' )\n true\n > bool = isWhitespace( 'abcdef' )\n false\n > bool = isWhitespace( '' )\n false\n\n See Also\n --------\n RE_WHITESPACE\n", "isWritableProperty": "\nisWritableProperty( value, property )\n Tests if an object's own property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritableProperty( obj, 'boop' )\n true\n > bool = isWritableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty, isReadWriteProperty, isWritablePropertyIn, isWriteOnlyProperty\n", - "isWritablePropertyIn": "\nisWritablePropertyIn( value, property )\n Tests if an object's own or inherited property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritablePropertyIn( obj, 'boop' )\n true\n > bool = isWritablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadablePropertyIn, isReadWritePropertyIn, isWritableProperty\n", - "isWriteOnlyProperty": "\nisWriteOnlyProperty( value, property )\n Tests if an object's own property is write-only.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is write-only.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isWriteOnlyProperty( obj, 'boop' )\n false\n > bool = isWriteOnlyProperty( obj, 'beep' )\n true\n\n See Also\n --------\n isReadOnlyProperty, isReadWriteProperty, isWritableProperty\n", + "isWritablePropertyIn": "\nisWritablePropertyIn( value, property )\n Tests if an object's own or inherited property is writable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is writable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isWritablePropertyIn( obj, 'boop' )\n true\n > bool = isWritablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadablePropertyIn, isReadWritePropertyIn, isWritableProperty, isWriteOnlyPropertyIn\n", + "isWriteOnlyProperty": "\nisWriteOnlyProperty( value, property )\n Tests if an object's own property is write-only.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is write-only.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isWriteOnlyProperty( obj, 'boop' )\n false\n > bool = isWriteOnlyProperty( obj, 'beep' )\n true\n\n See Also\n --------\n isReadOnlyProperty, isReadWriteProperty, isWritableProperty, isWriteOnlyPropertyIn\n", + "isWriteOnlyPropertyIn": "\nisWriteOnlyPropertyIn( value, property )\n Tests if an object's own or inherited property is write-only.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is write-\n only.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isWriteOnlyPropertyIn( obj, 'boop' )\n false\n > bool = isWriteOnlyPropertyIn( obj, 'beep' )\n true\n\n See Also\n --------\n isReadOnlyPropertyIn, isReadWritePropertyIn, isWritablePropertyIn, isWriteOnlyProperty\n", "IteratorSymbol": "\nIteratorSymbol\n Iterator symbol.\n\n This symbol specifies the default iterator for an object.\n\n The symbol is only supported in ES6/ES2015+ environments. For non-supporting\n environments, the value is `null`.\n\n Examples\n --------\n > var s = IteratorSymbol\n\n See Also\n --------\n Symbol\n", "kde2d": "", "keyBy": "\nkeyBy( collection, fcn[, thisArg] )\n Converts a collection to an object whose keys are determined by a provided\n function and whose values are the collection values.\n\n When invoked, the input function is provided two arguments:\n\n - `value`: collection value\n - `index`: collection index\n\n If more than one element in a collection resolves to the same key, the key\n value is the collection element which last resolved to the key.\n\n Object values are shallow copies.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Object\n Output object.\n\n Examples\n --------\n > function toKey( v ) { return v.a; };\n > var arr = [ { 'a': 1 }, { 'a': 2 } ];\n > keyBy( arr, toKey )\n { '1': { 'a': 1 }, '2': { 'a': 2 } }\n\n See Also\n --------\n forEach\n", From 812b5ddb59663277e2fd518181002df4a813cd89 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 14:02:49 -0700 Subject: [PATCH 0163/1062] Add links --- .../@stdlib/assert/is-read-only-property-in/README.md | 6 ++++-- .../@stdlib/assert/is-read-only-property/README.md | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property-in/README.md b/lib/node_modules/@stdlib/assert/is-read-only-property-in/README.md index 95f45442e0a1..07f33618d127 100644 --- a/lib/node_modules/@stdlib/assert/is-read-only-property-in/README.md +++ b/lib/node_modules/@stdlib/assert/is-read-only-property-in/README.md @@ -20,7 +20,7 @@ limitations under the License. # isReadOnlyPropertyIn -> Test if an object's own or inherited property is read-only. +> Test if an object's own or inherited property is [read-only][@stdlib/utils/define-read-only-property].
@@ -32,7 +32,7 @@ var isReadOnlyPropertyIn = require( '@stdlib/assert/is-read-only-property-in' ); #### isReadOnlyPropertyIn( value, property ) -Returns a `boolean` indicating if a `value` has a read-only `property`. +Returns a `boolean` indicating if a `value` has a [read-only][@stdlib/utils/define-read-only-property] `property`. @@ -156,6 +156,8 @@ bool = isReadOnlyPropertyIn( void 0, 'a' ); diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property/README.md b/lib/node_modules/@stdlib/assert/is-read-only-property/README.md index 0635e45bd991..05b836c4d5af 100644 --- a/lib/node_modules/@stdlib/assert/is-read-only-property/README.md +++ b/lib/node_modules/@stdlib/assert/is-read-only-property/README.md @@ -20,7 +20,7 @@ limitations under the License. # isReadOnlyProperty -> Test if an object's own property is read-only. +> Test if an object's own property is [read-only][@stdlib/utils/define-read-only-property].
@@ -32,7 +32,7 @@ var isReadOnlyProperty = require( '@stdlib/assert/is-read-only-property' ); #### isReadOnlyProperty( value, property ) -Returns a `boolean` indicating if a `value` has a read-only `property`. +Returns a `boolean` indicating if a `value` has a [read-only][@stdlib/utils/define-read-only-property] `property`. @@ -150,6 +150,8 @@ bool = isReadOnlyProperty( void 0, 'a' ); From 935033b7485d9912f2fb1d8767306389bd6f695a Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 14:38:11 -0700 Subject: [PATCH 0164/1062] Add assertion utility to test if an object's own property is configurable --- .../assert/is-configurable-property/README.md | 147 ++++++++++++++++++ .../benchmark/benchmark.js | 51 ++++++ .../is-configurable-property/docs/repl.txt | 37 +++++ .../examples/index.js | 59 +++++++ .../is-configurable-property/lib/index.js | 55 +++++++ .../is-configurable-property/lib/main.js | 63 ++++++++ .../is-configurable-property/package.json | 72 +++++++++ .../is-configurable-property/test/test.js | 135 ++++++++++++++++ 8 files changed, 619 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-configurable-property/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-configurable-property/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-configurable-property/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-configurable-property/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-configurable-property/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-configurable-property/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-configurable-property/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-configurable-property/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-configurable-property/README.md b/lib/node_modules/@stdlib/assert/is-configurable-property/README.md new file mode 100644 index 000000000000..6bb42a168143 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-configurable-property/README.md @@ -0,0 +1,147 @@ + + +# isConfigurableProperty + +> Test if an object's own property is configurable. + +
+ +## Usage + +```javascript +var isConfigurableProperty = require( '@stdlib/assert/is-configurable-property' ); +``` + +#### isConfigurableProperty( value, property ) + +Returns a `boolean` indicating if a `value` has a configurable `property` (i.e., a property which may be deleted or whose descriptor may be changed). + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = { + 'foo': 'bar' +}; + +defineProperty( obj, 'beep', { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': true +}); + +defineProperty( obj, 'boop', { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': true +}); + +var bool = isConfigurableProperty( obj, 'foo' ); +// returns true + +bool = isConfigurableProperty( obj, 'beep' ); +// returns true + +bool = isConfigurableProperty( obj, 'boop' ); +// returns false +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isConfigurableProperty( 'beep', 'length' ); + // returns false + ``` + +- Property arguments are coerced to `strings`. + + ```javascript + var obj = { + 'null': 'foo' + }; + + var bool = isConfigurableProperty( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isConfigurableProperty = require( '@stdlib/assert/is-configurable-property' ); + +var bool = isConfigurableProperty( { 'a': 'b' }, 'a' ); +// returns true + +bool = isConfigurableProperty( [ 'a' ], 0 ); +// returns true + +bool = isConfigurableProperty( { 'null': false }, null ); +// returns true + +bool = isConfigurableProperty( { '[object Object]': false }, {} ); +// returns true + +bool = isConfigurableProperty( [ 'a' ], 'length' ); +// returns false + +bool = isConfigurableProperty( {}, 'toString' ); +// returns false + +bool = isConfigurableProperty( {}, 'hasOwnProperty' ); +// returns false + +bool = isConfigurableProperty( null, 'a' ); +// returns false + +bool = isConfigurableProperty( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-configurable-property/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-configurable-property/benchmark/benchmark.js new file mode 100644 index 000000000000..d63c25b8d5a9 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-configurable-property/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isConfigurableProperty = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isConfigurableProperty( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-configurable-property/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-configurable-property/docs/repl.txt new file mode 100644 index 000000000000..9a4e0af7ec01 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-configurable-property/docs/repl.txt @@ -0,0 +1,37 @@ + +{{alias}}( value, property ) + Tests if an object's own property is configurable. + + A property is configurable if the property may be deleted or its descriptor + may be changed. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own property is configurable. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = true; + > desc.writable = true; + > desc.value = true; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + true + > bool = {{alias}}( obj, 'beep' ) + false + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-configurable-property/examples/index.js b/lib/node_modules/@stdlib/assert/is-configurable-property/examples/index.js new file mode 100644 index 000000000000..ed3cde59e04f --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-configurable-property/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isConfigurableProperty = require( './../lib' ); + +var bool = isConfigurableProperty( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => true + +bool = isConfigurableProperty( [ 'a' ], 0 ); +console.log( bool ); +// => true + +bool = isConfigurableProperty( { 'null': false }, null ); +console.log( bool ); +// => true + +bool = isConfigurableProperty( { '[object Object]': false }, {} ); +console.log( bool ); +// => true + +bool = isConfigurableProperty( [ 'a' ], 'length' ); +console.log( bool ); +// => false + +bool = isConfigurableProperty( {}, 'toString' ); +console.log( bool ); +// => false + +bool = isConfigurableProperty( {}, 'hasOwnProperty' ); +console.log( bool ); +// => false + +bool = isConfigurableProperty( null, 'a' ); +console.log( bool ); +// => false + +bool = isConfigurableProperty( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-configurable-property/lib/index.js b/lib/node_modules/@stdlib/assert/is-configurable-property/lib/index.js new file mode 100644 index 000000000000..63a3412b713a --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-configurable-property/lib/index.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own property is configurable. +* +* @module @stdlib/assert/is-configurable-property +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isConfigurableProperty = require( '@stdlib/assert/is-configurable-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'writable': true, +* 'value': true +* }); +* +* var bool = isConfigurableProperty( obj, 'boop' ); +* // returns true +* +* bool = isConfigurableProperty( obj, 'beep' ); +* // returns false +*/ + +// MODULES // + +var isConfigurableProperty = require( './main.js' ); + + +// EXPORTS // + +module.exports = isConfigurableProperty; diff --git a/lib/node_modules/@stdlib/assert/is-configurable-property/lib/main.js b/lib/node_modules/@stdlib/assert/is-configurable-property/lib/main.js new file mode 100644 index 000000000000..1ebf8e6c903a --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-configurable-property/lib/main.js @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptor = require( '@stdlib/utils/property-descriptor' ); + + +// MAIN // + +/** +* Tests if an object's own property is configurable. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is configurable +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'writable': true, +* 'value': true +* }); +* +* var bool = isConfigurableProperty( obj, 'boop' ); +* // returns true +* +* bool = isConfigurableProperty( obj, 'beep' ); +* // returns false +*/ +function isConfigurableProperty( value, property ) { + var desc = propertyDescriptor( value, property ); + return ( desc !== null && desc.configurable === true ); +} + + +// EXPORTS // + +module.exports = isConfigurableProperty; diff --git a/lib/node_modules/@stdlib/assert/is-configurable-property/package.json b/lib/node_modules/@stdlib/assert/is-configurable-property/package.json new file mode 100644 index 000000000000..e7295df3c2e0 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-configurable-property/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/assert/is-configurable-property", + "version": "0.0.0", + "description": "Test if an object's own property is configurable.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "configurable", + "descriptor", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-configurable-property/test/test.js b/lib/node_modules/@stdlib/assert/is-configurable-property/test/test.js new file mode 100644 index 000000000000..d287fb437ce8 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-configurable-property/test/test.js @@ -0,0 +1,135 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isConfigurableProperty = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isConfigurableProperty, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if an object property is configurable', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isConfigurableProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isConfigurableProperty( [ 1, 2, 3 ], '1' ); + t.equal( bool, true, 'returns true' ); + + bool = isConfigurableProperty( [ 1, 2, 3 ], 1 ); + t.equal( bool, true, 'returns true' ); + + bool = isConfigurableProperty( new Foo(), 'bar' ); + t.equal( bool, true, 'returns true' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'b' + }); + + bool = isConfigurableProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isConfigurableProperty( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isConfigurableProperty( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a configurable property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + defineProperty( obj, 'd', { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': true + }); + + bool = isConfigurableProperty( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + bool = isConfigurableProperty( obj, 'd' ); + t.equal( bool, false, 'returns false' ); + + bool = isConfigurableProperty( [ 'a' ], 'length' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided an inherited property', function test( t ) { + var bool; + + bool = isConfigurableProperty( {}, 'hasOwnProperty' ); + t.equal( bool, false, 'returns false' ); + + bool = isConfigurableProperty( {}, 'toString' ); + t.equal( bool, false, 'returns false' ); + + bool = isConfigurableProperty( {}, 'constructor' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isConfigurableProperty( 'beep', 'length' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); From 86e73ae9ba39bfe6e5ea24ec68cd0642d9715f5c Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 14:39:21 -0700 Subject: [PATCH 0165/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 3ce0da0b5c3e..d09ea0bcd124 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -630,6 +630,15 @@ setReadOnly( ns, 'isComplex128', require( '@stdlib/assert/is-complex128' ) ); */ setReadOnly( ns, 'isComplex128Array', require( '@stdlib/assert/is-complex128array' ) ); +/** +* @name isConfigurableProperty +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-configurable-property} +*/ +setReadOnly( ns, 'isConfigurableProperty', require( '@stdlib/assert/is-configurable-property' ) ); + /** * @name IS_DARWIN * @memberof ns From 4b4211dc2240de7bb59699be82808018bd5baf27 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 14:40:58 -0700 Subject: [PATCH 0166/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 12 ++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 1 + 3 files changed, 14 insertions(+) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 8d32e6c9d61a..542a9301b55c 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -2020,6 +2020,18 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isConfigurableProperty', + 'path': '@stdlib/assert/is-configurable-property', + 'value': require( '@stdlib/assert/is-configurable-property' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-configurable-property-in', + '@stdlib/assert/is-readable-property', + '@stdlib/assert/is-writable-property' + ] +}); + ns.push({ 'alias': 'isDateObject', 'path': '@stdlib/assert/is-date-object', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 7ef312da8450..ec52b226248f 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1161,6 +1161,7 @@ var db = { "isComplex128Array": "bool = isComplex128Array( new Complex128Array( 10 ) )\nbool = isComplex128Array( [] )\n", "isComplexLike": "bool = isComplexLike( new Complex64( 2.0, 2.0 ) )\nbool = isComplexLike( new Complex128( 3.0, 1.0 ) )\nbool = isComplexLike( 3.14 )\nbool = isComplexLike( {} )\n", "isComplexTypedArray": "bool = isComplexTypedArray( new Complex64Array( 10 ) )\n", + "isConfigurableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = true;\ndesc.value = true;\ndefineProperty( obj, 'beep', desc );\nbool = isConfigurableProperty( obj, 'boop' )\nbool = isConfigurableProperty( obj, 'beep' )\n", "isDateObject": "bool = isDateObject( new Date() )\nbool = isDateObject( '2017-01-01' )\n", "isDigitString": "bool = isDigitString( '0123456789' )\nbool = isDigitString( 'abcdef' )\nbool = isDigitString( '0xff' )\nbool = isDigitString( '' )\n", "isEmailAddress": "bool = isEmailAddress( 'beep@boop.com' )\nbool = isEmailAddress( 'beep' )\nbool = isEmailAddress( null )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 071acd194aa9..9a5ed74ded19 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1161,6 +1161,7 @@ var db = { "isComplex128Array": "\nisComplex128Array( value )\n Tests if a value is a Complex128Array.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a Complex128Array.\n\n Examples\n --------\n > var bool = isComplex128Array( new Complex128Array( 10 ) )\n true\n > bool = isComplex128Array( [] )\n false\n\n See Also\n --------\n isComplex, isComplex128, isComplex64Array, isComplexTypedArray\n", "isComplexLike": "\nisComplexLike( value )\n Tests if a value is a complex number-like object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a complex number-like object.\n\n Examples\n --------\n > var bool = isComplexLike( new Complex64( 2.0, 2.0 ) )\n true\n > bool = isComplexLike( new Complex128( 3.0, 1.0 ) )\n true\n > bool = isComplexLike( 3.14 )\n false\n > bool = isComplexLike( {} )\n false\n\n See Also\n --------\n isComplex, isComplex64, isComplex128\n", "isComplexTypedArray": "\nisComplexTypedArray( value )\n Tests if a value is a complex typed array.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a complex typed array.\n\n Examples\n --------\n > var bool = isComplexTypedArray( new Complex64Array( 10 ) )\n true\n\n See Also\n --------\n isComplex, isComplex64Array, isComplex128Array\n", + "isConfigurableProperty": "\nisConfigurableProperty( value, property )\n Tests if an object's own property is configurable.\n\n A property is configurable if the property may be deleted or its descriptor\n may be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isConfigurableProperty( obj, 'boop' )\n true\n > bool = isConfigurableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty, isWritableProperty\n", "isDateObject": "\nisDateObject( value )\n Tests if a value is a Date object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a Date object.\n\n Examples\n --------\n > var bool = isDateObject( new Date() )\n true\n > bool = isDateObject( '2017-01-01' )\n false\n\n", "isDigitString": "\nisDigitString( str )\n Tests whether a string contains only numeric digits.\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only numeric digits.\n\n Examples\n --------\n > var bool = isDigitString( '0123456789' )\n true\n > bool = isDigitString( 'abcdef' )\n false\n > bool = isDigitString( '0xff' )\n false\n > bool = isDigitString( '' )\n false\n\n See Also\n --------\n isHexString, isString\n", "isEmailAddress": "\nisEmailAddress( value )\n Tests if a value is an email address.\n\n Validation is not rigorous. *9* RFCs relate to email addresses, and\n accounting for all of them is a fool's errand. The function performs the\n simplest validation; i.e., requiring at least one `@` symbol.\n\n For rigorous validation, send a confirmation email. If the email bounces,\n consider the email invalid.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an email address.\n\n Examples\n --------\n > var bool = isEmailAddress( 'beep@boop.com' )\n true\n > bool = isEmailAddress( 'beep' )\n false\n > bool = isEmailAddress( null )\n false\n\n", From 829f8c86fec54ec0f9bc7c3b08a08b27d81d5be2 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 14:51:12 -0700 Subject: [PATCH 0167/1062] Add assertion utility to test if an object property is configurable --- .../is-configurable-property-in/README.md | 153 +++++++++++++++++ .../benchmark/benchmark.js | 51 ++++++ .../is-configurable-property-in/docs/repl.txt | 38 +++++ .../examples/index.js | 59 +++++++ .../is-configurable-property-in/lib/index.js | 55 ++++++ .../is-configurable-property-in/lib/main.js | 63 +++++++ .../is-configurable-property-in/package.json | 76 +++++++++ .../is-configurable-property-in/test/test.js | 161 ++++++++++++++++++ 8 files changed, 656 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-configurable-property-in/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-configurable-property-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-configurable-property-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-configurable-property-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-configurable-property-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-configurable-property-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-configurable-property-in/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-configurable-property-in/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-configurable-property-in/README.md b/lib/node_modules/@stdlib/assert/is-configurable-property-in/README.md new file mode 100644 index 000000000000..8caf72408903 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-configurable-property-in/README.md @@ -0,0 +1,153 @@ + + +# isConfigurablePropertyIn + +> Test if an object's own or inherited property is configurable. + +
+ +## Usage + +```javascript +var isConfigurablePropertyIn = require( '@stdlib/assert/is-configurable-property-in' ); +``` + +#### isConfigurablePropertyIn( value, property ) + +Returns a `boolean` indicating if a `value` has a configurable `property` (i.e., a property which may be deleted or whose descriptor may be changed). + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var bool; +var obj; + +function Foo() { + this.foo = 'bar'; + return this; +} + +defineProperty( Foo.prototype, 'beep', { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': true +}); + +defineProperty( Foo.prototype, 'boop', { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': true +}); + +obj = new Foo(); + +bool = isConfigurablePropertyIn( obj, 'foo' ); +// returns true + +bool = isConfigurablePropertyIn( obj, 'beep' ); +// returns true + +bool = isConfigurablePropertyIn( obj, 'boop' ); +// returns false +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isConfigurablePropertyIn( 'beep', 'toString' ); + // returns true + ``` + +- Property arguments are coerced to `strings`. + + ```javascript + var obj = { + 'null': 'foo' + }; + + var bool = isConfigurablePropertyIn( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isConfigurablePropertyIn = require( '@stdlib/assert/is-configurable-property-in' ); + +var bool = isConfigurablePropertyIn( { 'a': 'b' }, 'a' ); +// returns true + +bool = isConfigurablePropertyIn( [ 'a' ], 0 ); +// returns true + +bool = isConfigurablePropertyIn( { 'null': false }, null ); +// returns true + +bool = isConfigurablePropertyIn( { '[object Object]': false }, {} ); +// returns true + +bool = isConfigurablePropertyIn( {}, 'toString' ); +// returns true + +bool = isConfigurablePropertyIn( {}, 'hasOwnProperty' ); +// returns true + +bool = isConfigurablePropertyIn( [ 'a' ], 'length' ); +// returns false + +bool = isConfigurablePropertyIn( null, 'a' ); +// returns false + +bool = isConfigurablePropertyIn( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-configurable-property-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-configurable-property-in/benchmark/benchmark.js new file mode 100644 index 000000000000..72a2fe9b9260 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-configurable-property-in/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isConfigurablePropertyIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isConfigurablePropertyIn( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-configurable-property-in/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-configurable-property-in/docs/repl.txt new file mode 100644 index 000000000000..cec14dba68e4 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-configurable-property-in/docs/repl.txt @@ -0,0 +1,38 @@ + +{{alias}}( value, property ) + Tests if an object's own or inherited property is configurable. + + A property is configurable if the property may be deleted or its descriptor + may be changed. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own or inherited property is + configurable. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = true; + > desc.writable = true; + > desc.value = true; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + true + > bool = {{alias}}( obj, 'beep' ) + false + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-configurable-property-in/examples/index.js b/lib/node_modules/@stdlib/assert/is-configurable-property-in/examples/index.js new file mode 100644 index 000000000000..d3123b9a1ec6 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-configurable-property-in/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isConfigurablePropertyIn = require( './../lib' ); + +var bool = isConfigurablePropertyIn( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => true + +bool = isConfigurablePropertyIn( [ 'a' ], 0 ); +console.log( bool ); +// => true + +bool = isConfigurablePropertyIn( { 'null': false }, null ); +console.log( bool ); +// => true + +bool = isConfigurablePropertyIn( { '[object Object]': false }, {} ); +console.log( bool ); +// => true + +bool = isConfigurablePropertyIn( {}, 'toString' ); +console.log( bool ); +// => true + +bool = isConfigurablePropertyIn( {}, 'hasOwnProperty' ); +console.log( bool ); +// => true + +bool = isConfigurablePropertyIn( [ 'a' ], 'length' ); +console.log( bool ); +// => false + +bool = isConfigurablePropertyIn( null, 'a' ); +console.log( bool ); +// => false + +bool = isConfigurablePropertyIn( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-configurable-property-in/lib/index.js b/lib/node_modules/@stdlib/assert/is-configurable-property-in/lib/index.js new file mode 100644 index 000000000000..2c326d83477b --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-configurable-property-in/lib/index.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own or inherited property is configurable. +* +* @module @stdlib/assert/is-configurable-property-in +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isConfigurablePropertyIn = require( '@stdlib/assert/is-configurable-property-in' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'writable': true, +* 'value': true +* }); +* +* var bool = isConfigurablePropertyIn( obj, 'boop' ); +* // returns true +* +* bool = isConfigurablePropertyIn( obj, 'beep' ); +* // returns false +*/ + +// MODULES // + +var isConfigurablePropertyIn = require( './main.js' ); + + +// EXPORTS // + +module.exports = isConfigurablePropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-configurable-property-in/lib/main.js b/lib/node_modules/@stdlib/assert/is-configurable-property-in/lib/main.js new file mode 100644 index 000000000000..2b4e7c9e6f85 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-configurable-property-in/lib/main.js @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptorIn = require( '@stdlib/utils/property-descriptor-in' ); + + +// MAIN // + +/** +* Tests if an object's own or inherited property is configurable. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is configurable +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'writable': true, +* 'value': true +* }); +* +* var bool = isConfigurablePropertyIn( obj, 'boop' ); +* // returns true +* +* bool = isConfigurablePropertyIn( obj, 'beep' ); +* // returns false +*/ +function isConfigurablePropertyIn( value, property ) { + var desc = propertyDescriptorIn( value, property ); + return ( desc !== null && desc.configurable === true ); +} + + +// EXPORTS // + +module.exports = isConfigurablePropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-configurable-property-in/package.json b/lib/node_modules/@stdlib/assert/is-configurable-property-in/package.json new file mode 100644 index 000000000000..c925c8a76937 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-configurable-property-in/package.json @@ -0,0 +1,76 @@ +{ + "name": "@stdlib/assert/is-configurable-property-in", + "version": "0.0.0", + "description": "Test if an object's own or inherited property is configurable.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "inherited", + "in", + "prototype", + "proto", + "configurable", + "descriptor", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-configurable-property-in/test/test.js b/lib/node_modules/@stdlib/assert/is-configurable-property-in/test/test.js new file mode 100644 index 000000000000..75c76c3865eb --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-configurable-property-in/test/test.js @@ -0,0 +1,161 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isConfigurablePropertyIn = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isConfigurablePropertyIn, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if an object property is configurable', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isConfigurablePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isConfigurablePropertyIn( [ 1, 2, 3 ], '1' ); + t.equal( bool, true, 'returns true' ); + + bool = isConfigurablePropertyIn( [ 1, 2, 3 ], 1 ); + t.equal( bool, true, 'returns true' ); + + bool = isConfigurablePropertyIn( new Foo(), 'bar' ); + t.equal( bool, true, 'returns true' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'b' + }); + + bool = isConfigurablePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function returns `true` if provided a configurable inherited property', function test( t ) { + var bool; + + bool = isConfigurablePropertyIn( {}, 'hasOwnProperty' ); + t.equal( bool, true, 'returns true' ); + + bool = isConfigurablePropertyIn( {}, 'toString' ); + t.equal( bool, true, 'returns true' ); + + bool = isConfigurablePropertyIn( {}, 'constructor' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isConfigurablePropertyIn( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isConfigurablePropertyIn( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a configurable property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + defineProperty( obj, 'd', { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': true + }); + + bool = isConfigurablePropertyIn( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + bool = isConfigurablePropertyIn( obj, 'd' ); + t.equal( bool, false, 'returns false' ); + + bool = isConfigurablePropertyIn( [ 'a' ], 'length' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a non-configurable inherited property', function test( t ) { + var bool; + var obj; + + function Foo() { + return this; + } + + defineProperty( Foo.prototype, 'bar', { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': true + }); + + obj = new Foo(); + + bool = isConfigurablePropertyIn( obj, 'bar' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isConfigurablePropertyIn( 'beep', 'length' ); + t.equal( bool, false, 'returns false' ); + + bool = isConfigurablePropertyIn( 'beep', 'toString' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); From 9b2410692933e062b0a69c0b62af019ec7f235c3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 14:52:32 -0700 Subject: [PATCH 0168/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index d09ea0bcd124..3e9d35359c83 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -639,6 +639,15 @@ setReadOnly( ns, 'isComplex128Array', require( '@stdlib/assert/is-complex128arra */ setReadOnly( ns, 'isConfigurableProperty', require( '@stdlib/assert/is-configurable-property' ) ); +/** +* @name isConfigurablePropertyIn +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-configurable-property-in} +*/ +setReadOnly( ns, 'isConfigurablePropertyIn', require( '@stdlib/assert/is-configurable-property-in' ) ); + /** * @name IS_DARWIN * @memberof ns From ea779b1869b4af671a6b40e11affe3558214e977 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 14:52:54 -0700 Subject: [PATCH 0169/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 14 ++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 542a9301b55c..7e9896092f01 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -2027,11 +2027,25 @@ ns.push({ 'type': 'Function', 'related': [ '@stdlib/assert/is-configurable-property-in', + '@stdlib/assert/is-enumerable-property', '@stdlib/assert/is-readable-property', '@stdlib/assert/is-writable-property' ] }); +ns.push({ + 'alias': 'isConfigurablePropertyIn', + 'path': '@stdlib/assert/is-configurable-property-in', + 'value': require( '@stdlib/assert/is-configurable-property-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-configurable-property', + '@stdlib/assert/is-enumerable-property-in', + '@stdlib/assert/is-readable-property-in', + '@stdlib/assert/is-writable-property-in' + ] +}); + ns.push({ 'alias': 'isDateObject', 'path': '@stdlib/assert/is-date-object', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index ec52b226248f..c30357ca4b80 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1162,6 +1162,7 @@ var db = { "isComplexLike": "bool = isComplexLike( new Complex64( 2.0, 2.0 ) )\nbool = isComplexLike( new Complex128( 3.0, 1.0 ) )\nbool = isComplexLike( 3.14 )\nbool = isComplexLike( {} )\n", "isComplexTypedArray": "bool = isComplexTypedArray( new Complex64Array( 10 ) )\n", "isConfigurableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = true;\ndesc.value = true;\ndefineProperty( obj, 'beep', desc );\nbool = isConfigurableProperty( obj, 'boop' )\nbool = isConfigurableProperty( obj, 'beep' )\n", + "isConfigurablePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = true;\ndesc.value = true;\ndefineProperty( obj, 'beep', desc );\nbool = isConfigurablePropertyIn( obj, 'boop' )\nbool = isConfigurablePropertyIn( obj, 'beep' )\n", "isDateObject": "bool = isDateObject( new Date() )\nbool = isDateObject( '2017-01-01' )\n", "isDigitString": "bool = isDigitString( '0123456789' )\nbool = isDigitString( 'abcdef' )\nbool = isDigitString( '0xff' )\nbool = isDigitString( '' )\n", "isEmailAddress": "bool = isEmailAddress( 'beep@boop.com' )\nbool = isEmailAddress( 'beep' )\nbool = isEmailAddress( null )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 9a5ed74ded19..af65f6dc39a9 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1161,7 +1161,8 @@ var db = { "isComplex128Array": "\nisComplex128Array( value )\n Tests if a value is a Complex128Array.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a Complex128Array.\n\n Examples\n --------\n > var bool = isComplex128Array( new Complex128Array( 10 ) )\n true\n > bool = isComplex128Array( [] )\n false\n\n See Also\n --------\n isComplex, isComplex128, isComplex64Array, isComplexTypedArray\n", "isComplexLike": "\nisComplexLike( value )\n Tests if a value is a complex number-like object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a complex number-like object.\n\n Examples\n --------\n > var bool = isComplexLike( new Complex64( 2.0, 2.0 ) )\n true\n > bool = isComplexLike( new Complex128( 3.0, 1.0 ) )\n true\n > bool = isComplexLike( 3.14 )\n false\n > bool = isComplexLike( {} )\n false\n\n See Also\n --------\n isComplex, isComplex64, isComplex128\n", "isComplexTypedArray": "\nisComplexTypedArray( value )\n Tests if a value is a complex typed array.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a complex typed array.\n\n Examples\n --------\n > var bool = isComplexTypedArray( new Complex64Array( 10 ) )\n true\n\n See Also\n --------\n isComplex, isComplex64Array, isComplex128Array\n", - "isConfigurableProperty": "\nisConfigurableProperty( value, property )\n Tests if an object's own property is configurable.\n\n A property is configurable if the property may be deleted or its descriptor\n may be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isConfigurableProperty( obj, 'boop' )\n true\n > bool = isConfigurableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadableProperty, isWritableProperty\n", + "isConfigurableProperty": "\nisConfigurableProperty( value, property )\n Tests if an object's own property is configurable.\n\n A property is configurable if the property may be deleted or its descriptor\n may be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isConfigurableProperty( obj, 'boop' )\n true\n > bool = isConfigurableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isConfigurablePropertyIn, isEnumerableProperty, isReadableProperty, isWritableProperty\n", + "isConfigurablePropertyIn": "\nisConfigurablePropertyIn( value, property )\n Tests if an object's own or inherited property is configurable.\n\n A property is configurable if the property may be deleted or its descriptor\n may be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is\n configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isConfigurablePropertyIn( obj, 'boop' )\n true\n > bool = isConfigurablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isConfigurableProperty, isReadablePropertyIn, isWritablePropertyIn\n", "isDateObject": "\nisDateObject( value )\n Tests if a value is a Date object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a Date object.\n\n Examples\n --------\n > var bool = isDateObject( new Date() )\n true\n > bool = isDateObject( '2017-01-01' )\n false\n\n", "isDigitString": "\nisDigitString( str )\n Tests whether a string contains only numeric digits.\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only numeric digits.\n\n Examples\n --------\n > var bool = isDigitString( '0123456789' )\n true\n > bool = isDigitString( 'abcdef' )\n false\n > bool = isDigitString( '0xff' )\n false\n > bool = isDigitString( '' )\n false\n\n See Also\n --------\n isHexString, isString\n", "isEmailAddress": "\nisEmailAddress( value )\n Tests if a value is an email address.\n\n Validation is not rigorous. *9* RFCs relate to email addresses, and\n accounting for all of them is a fool's errand. The function performs the\n simplest validation; i.e., requiring at least one `@` symbol.\n\n For rigorous validation, send a confirmation email. If the email bounces,\n consider the email invalid.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an email address.\n\n Examples\n --------\n > var bool = isEmailAddress( 'beep@boop.com' )\n true\n > bool = isEmailAddress( 'beep' )\n false\n > bool = isEmailAddress( null )\n false\n\n", From c10bd1ea0718d76e8dc63dac3fa469ae9349b125 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 14:57:15 -0700 Subject: [PATCH 0170/1062] Remove linebreaks --- lib/node_modules/@stdlib/assert/has-property/lib/main.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/has-property/lib/main.js b/lib/node_modules/@stdlib/assert/has-property/lib/main.js index f4083ea3f87c..b2a9a5a8c639 100644 --- a/lib/node_modules/@stdlib/assert/has-property/lib/main.js +++ b/lib/node_modules/@stdlib/assert/has-property/lib/main.js @@ -44,10 +44,7 @@ * // returns false */ function hasProp( value, property ) { - if ( - value === void 0 || - value === null - ) { + if ( value === void 0 || value === null ) { return false; } return ( String( property ) in Object( value ) ); From 0dadac97248d9627bade8b44be73ae0431a3afa6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 15:15:39 -0700 Subject: [PATCH 0171/1062] Add assertion utility to test if an object property is enumerable --- .../is-enumerable-property-in/README.md | 153 +++++++++++++++ .../benchmark/benchmark.js | 51 +++++ .../is-enumerable-property-in/docs/repl.txt | 35 ++++ .../examples/index.js | 59 ++++++ .../is-enumerable-property-in/lib/index.js | 55 ++++++ .../is-enumerable-property-in/lib/main.js | 63 +++++++ .../is-enumerable-property-in/package.json | 77 ++++++++ .../is-enumerable-property-in/test/test.js | 178 ++++++++++++++++++ 8 files changed, 671 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-enumerable-property-in/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-enumerable-property-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-enumerable-property-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-enumerable-property-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-enumerable-property-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-enumerable-property-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-enumerable-property-in/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-enumerable-property-in/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property-in/README.md b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/README.md new file mode 100644 index 000000000000..89b6811b50d0 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/README.md @@ -0,0 +1,153 @@ + + +# isEnumerablePropertyIn + +> Test if an object's own or inherited property is enumerable. + +
+ +## Usage + +```javascript +var isEnumerablePropertyIn = require( '@stdlib/assert/is-enumerable-property-in' ); +``` + +#### isEnumerablePropertyIn( value, property ) + +Returns a `boolean` indicating if a `value` has an enumerable `property`. + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var bool; +var obj; + +function Foo() { + this.foo = 'bar'; + return this; +} + +defineProperty( Foo.prototype, 'beep', { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': true +}); + +defineProperty( Foo.prototype, 'boop', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': true +}); + +obj = new Foo(); + +bool = isEnumerablePropertyIn( obj, 'foo' ); +// returns true + +bool = isEnumerablePropertyIn( obj, 'beep' ); +// returns true + +bool = isEnumerablePropertyIn( obj, 'boop' ); +// returns false +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isEnumerablePropertyIn( 'beep', 'toString' ); + // returns false + ``` + +- Property arguments are coerced to `strings`. + + ```javascript + var obj = { + 'null': 'foo' + }; + + var bool = isEnumerablePropertyIn( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isEnumerablePropertyIn = require( '@stdlib/assert/is-enumerable-property-in' ); + +var bool = isEnumerablePropertyIn( { 'a': 'b' }, 'a' ); +// returns true + +bool = isEnumerablePropertyIn( [ 'a' ], 0 ); +// returns true + +bool = isEnumerablePropertyIn( { 'null': false }, null ); +// returns true + +bool = isEnumerablePropertyIn( { '[object Object]': false }, {} ); +// returns true + +bool = isEnumerablePropertyIn( {}, 'toString' ); +// returns false + +bool = isEnumerablePropertyIn( {}, 'hasOwnProperty' ); +// returns false + +bool = isEnumerablePropertyIn( [ 'a' ], 'length' ); +// returns false + +bool = isEnumerablePropertyIn( null, 'a' ); +// returns false + +bool = isEnumerablePropertyIn( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/benchmark/benchmark.js new file mode 100644 index 000000000000..9caf2ce14357 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isEnumerablePropertyIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isEnumerablePropertyIn( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property-in/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/docs/repl.txt new file mode 100644 index 000000000000..bb04cd642c28 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/docs/repl.txt @@ -0,0 +1,35 @@ + +{{alias}}( value, property ) + Tests if an object's own or inherited property is enumerable. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own or inherited property is + enumerable. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = true; + > desc.enumerable = false; + > desc.writable = true; + > desc.value = true; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + true + > bool = {{alias}}( obj, 'beep' ) + false + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property-in/examples/index.js b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/examples/index.js new file mode 100644 index 000000000000..2de9a5519950 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isEnumerablePropertyIn = require( './../lib' ); + +var bool = isEnumerablePropertyIn( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => true + +bool = isEnumerablePropertyIn( [ 'a' ], 0 ); +console.log( bool ); +// => true + +bool = isEnumerablePropertyIn( { 'null': false }, null ); +console.log( bool ); +// => true + +bool = isEnumerablePropertyIn( { '[object Object]': false }, {} ); +console.log( bool ); +// => true + +bool = isEnumerablePropertyIn( {}, 'toString' ); +console.log( bool ); +// => false + +bool = isEnumerablePropertyIn( {}, 'hasOwnProperty' ); +console.log( bool ); +// => false + +bool = isEnumerablePropertyIn( [ 'a' ], 'length' ); +console.log( bool ); +// => false + +bool = isEnumerablePropertyIn( null, 'a' ); +console.log( bool ); +// => false + +bool = isEnumerablePropertyIn( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property-in/lib/index.js b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/lib/index.js new file mode 100644 index 000000000000..ed9813a5457f --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/lib/index.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own or inherited property is enumerable. +* +* @module @stdlib/assert/is-enumerable-property-in +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isEnumerablePropertyIn = require( '@stdlib/assert/is-enumerable-property-in' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': true, +* 'enumerable': false, +* 'writable': true, +* 'value': true +* }); +* +* var bool = isEnumerablePropertyIn( obj, 'boop' ); +* // returns true +* +* bool = isEnumerablePropertyIn( obj, 'beep' ); +* // returns false +*/ + +// MODULES // + +var isEnumerablePropertyIn = require( './main.js' ); + + +// EXPORTS // + +module.exports = isEnumerablePropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property-in/lib/main.js b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/lib/main.js new file mode 100644 index 000000000000..fb7aa353646c --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/lib/main.js @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptorIn = require( '@stdlib/utils/property-descriptor-in' ); + + +// MAIN // + +/** +* Tests if an object's own or inherited property is enumerable. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is enumerable +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': true, +* 'enumerable': false, +* 'writable': true, +* 'value': true +* }); +* +* var bool = isConfigurablePropertyIn( obj, 'boop' ); +* // returns true +* +* bool = isConfigurablePropertyIn( obj, 'beep' ); +* // returns false +*/ +function isConfigurablePropertyIn( value, property ) { + var desc = propertyDescriptorIn( value, property ); // Note: works for both property names and symbols, which the `in` operator does not. + return ( desc !== null && desc.enumerable === true ); +} + + +// EXPORTS // + +module.exports = isConfigurablePropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property-in/package.json b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/package.json new file mode 100644 index 000000000000..f1f79a946e9c --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/package.json @@ -0,0 +1,77 @@ +{ + "name": "@stdlib/assert/is-enumerable-property-in", + "version": "0.0.0", + "description": "Test if an object's own or inherited property is enumerable.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "inherited", + "in", + "prototype", + "proto", + "enumerable", + "for-in", + "descriptor", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property-in/test/test.js b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/test/test.js new file mode 100644 index 000000000000..8dd582702662 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/test/test.js @@ -0,0 +1,178 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isEnumerablePropertyIn = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isEnumerablePropertyIn, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if an object property is enumerable', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isEnumerablePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isEnumerablePropertyIn( [ 1, 2, 3 ], '1' ); + t.equal( bool, true, 'returns true' ); + + bool = isEnumerablePropertyIn( [ 1, 2, 3 ], 1 ); + t.equal( bool, true, 'returns true' ); + + bool = isEnumerablePropertyIn( new Foo(), 'bar' ); + t.equal( bool, true, 'returns true' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'b' + }); + + bool = isEnumerablePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function returns `true` if provided an enumerable inherited property', function test( t ) { + var bool; + var obj; + + function Foo() { + return this; + } + + defineProperty( Foo.prototype, 'a', { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': true + }); + + obj = new Foo(); + + bool = isEnumerablePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isEnumerablePropertyIn( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isEnumerablePropertyIn( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to an enumerable property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + defineProperty( obj, 'd', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': true + }); + + bool = isEnumerablePropertyIn( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + bool = isEnumerablePropertyIn( obj, 'd' ); + t.equal( bool, false, 'returns false' ); + + bool = isEnumerablePropertyIn( [ 'a' ], 'length' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a non-enumerable inherited property', function test( t ) { + var bool; + var obj; + + function Foo() { + return this; + } + + defineProperty( Foo.prototype, 'bar', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': true + }); + + obj = new Foo(); + + bool = isEnumerablePropertyIn( obj, 'bar' ); + t.equal( bool, false, 'returns false' ); + + bool = isEnumerablePropertyIn( {}, 'hasOwnProperty' ); + t.equal( bool, false, 'returns false' ); + + bool = isEnumerablePropertyIn( {}, 'toString' ); + t.equal( bool, false, 'returns false' ); + + bool = isEnumerablePropertyIn( {}, 'constructor' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isEnumerablePropertyIn( 'beep', 'length' ); + t.equal( bool, false, 'returns false' ); + + bool = isEnumerablePropertyIn( 'beep', 'toString' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); From b7aaad754df0289413b162453b20e08ba16e7311 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 15:18:17 -0700 Subject: [PATCH 0172/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 3e9d35359c83..57dadbe2ed86 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -747,6 +747,15 @@ setReadOnly( ns, 'isEmptyString', require( '@stdlib/assert/is-empty-string' ) ); */ setReadOnly( ns, 'isEnumerableProperty', require( '@stdlib/assert/is-enumerable-property' ) ); +/** +* @name isEnumerablePropertyIn +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-enumerable-property-in} +*/ +setReadOnly( ns, 'isEnumerablePropertyIn', require( '@stdlib/assert/is-enumerable-property-in' ) ); + /** * @name isError * @memberof ns From c817b408b1a87f0d76f0c1e19b558158b00a5703 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 15:18:35 -0700 Subject: [PATCH 0173/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 20 ++++++++++++++++++- .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 +++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 7e9896092f01..070965b3cb43 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -2110,7 +2110,25 @@ ns.push({ 'value': require( '@stdlib/assert/is-enumerable-property' ), 'type': 'Function', 'related': [ - '@stdlib/assert/is-nonenumerable-property' + '@stdlib/assert/is-configurable-property', + '@stdlib/assert/is-enumerable-property-in', + '@stdlib/assert/is-nonenumerable-property', + '@stdlib/assert/is-readable-property', + '@stdlib/assert/is-writable-property' + ] +}); + +ns.push({ + 'alias': 'isEnumerablePropertyIn', + 'path': '@stdlib/assert/is-enumerable-property-in', + 'value': require( '@stdlib/assert/is-enumerable-property-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-configurable-property-in', + '@stdlib/assert/is-enumerable-property', + '@stdlib/assert/is-nonenumerable-property-in', + '@stdlib/assert/is-readable-property-in', + '@stdlib/assert/is-writable-property-in' ] }); diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index c30357ca4b80..94901852ff62 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1170,6 +1170,7 @@ var db = { "isEmptyObject": "bool = isEmptyObject( {} )\nbool = isEmptyObject( { 'beep': 'boop' } )\nbool = isEmptyObject( [] )\n", "isEmptyString": "bool = isEmptyString( '' )\nbool = isEmptyString( new String( '' ) )\nbool = isEmptyString( 'beep' )\nbool = isEmptyString( [] )\n", "isEnumerableProperty": "beep = { 'boop': true };\nbool = isEnumerableProperty( beep, 'boop' )\nbool = isEnumerableProperty( beep, 'hasOwnProperty' )\n", + "isEnumerablePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = true;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = true;\ndefineProperty( obj, 'beep', desc );\nbool = isEnumerablePropertyIn( obj, 'boop' )\nbool = isEnumerablePropertyIn( obj, 'beep' )\n", "isError": "bool = isError( new Error( 'beep' ) )\nbool = isError( {} )\n", "isEvalError": "bool = isEvalError( new EvalError( 'beep' ) )\nbool = isEvalError( {} )\n", "isEven": "bool = isEven( 4.0 )\nbool = isEven( new Number( 4.0 ) )\nbool = isEven( 3.0 )\nbool = isEven( -3.14 )\nbool = isEven( null )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index af65f6dc39a9..9383d7b385c8 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1162,14 +1162,15 @@ var db = { "isComplexLike": "\nisComplexLike( value )\n Tests if a value is a complex number-like object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a complex number-like object.\n\n Examples\n --------\n > var bool = isComplexLike( new Complex64( 2.0, 2.0 ) )\n true\n > bool = isComplexLike( new Complex128( 3.0, 1.0 ) )\n true\n > bool = isComplexLike( 3.14 )\n false\n > bool = isComplexLike( {} )\n false\n\n See Also\n --------\n isComplex, isComplex64, isComplex128\n", "isComplexTypedArray": "\nisComplexTypedArray( value )\n Tests if a value is a complex typed array.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a complex typed array.\n\n Examples\n --------\n > var bool = isComplexTypedArray( new Complex64Array( 10 ) )\n true\n\n See Also\n --------\n isComplex, isComplex64Array, isComplex128Array\n", "isConfigurableProperty": "\nisConfigurableProperty( value, property )\n Tests if an object's own property is configurable.\n\n A property is configurable if the property may be deleted or its descriptor\n may be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isConfigurableProperty( obj, 'boop' )\n true\n > bool = isConfigurableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isConfigurablePropertyIn, isEnumerableProperty, isReadableProperty, isWritableProperty\n", - "isConfigurablePropertyIn": "\nisConfigurablePropertyIn( value, property )\n Tests if an object's own or inherited property is configurable.\n\n A property is configurable if the property may be deleted or its descriptor\n may be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is\n configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isConfigurablePropertyIn( obj, 'boop' )\n true\n > bool = isConfigurablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isConfigurableProperty, isReadablePropertyIn, isWritablePropertyIn\n", + "isConfigurablePropertyIn": "\nisConfigurablePropertyIn( value, property )\n Tests if an object's own or inherited property is configurable.\n\n A property is configurable if the property may be deleted or its descriptor\n may be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is\n configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isConfigurablePropertyIn( obj, 'boop' )\n true\n > bool = isConfigurablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isConfigurableProperty, isEnumerablePropertyIn, isReadablePropertyIn, isWritablePropertyIn\n", "isDateObject": "\nisDateObject( value )\n Tests if a value is a Date object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a Date object.\n\n Examples\n --------\n > var bool = isDateObject( new Date() )\n true\n > bool = isDateObject( '2017-01-01' )\n false\n\n", "isDigitString": "\nisDigitString( str )\n Tests whether a string contains only numeric digits.\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only numeric digits.\n\n Examples\n --------\n > var bool = isDigitString( '0123456789' )\n true\n > bool = isDigitString( 'abcdef' )\n false\n > bool = isDigitString( '0xff' )\n false\n > bool = isDigitString( '' )\n false\n\n See Also\n --------\n isHexString, isString\n", "isEmailAddress": "\nisEmailAddress( value )\n Tests if a value is an email address.\n\n Validation is not rigorous. *9* RFCs relate to email addresses, and\n accounting for all of them is a fool's errand. The function performs the\n simplest validation; i.e., requiring at least one `@` symbol.\n\n For rigorous validation, send a confirmation email. If the email bounces,\n consider the email invalid.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an email address.\n\n Examples\n --------\n > var bool = isEmailAddress( 'beep@boop.com' )\n true\n > bool = isEmailAddress( 'beep' )\n false\n > bool = isEmailAddress( null )\n false\n\n", "isEmptyArray": "\nisEmptyArray( value )\n Tests if a value is an empty array.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is an empty array.\n\n Examples\n --------\n > var bool = isEmptyArray( [] )\n true\n > bool = isEmptyArray( [ 1, 2, 3 ] )\n false\n > bool = isEmptyArray( {} )\n false\n\n See Also\n --------\n isArray\n", "isEmptyObject": "\nisEmptyObject( value )\n Tests if a value is an empty object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is an empty object.\n\n Examples\n --------\n > var bool = isEmptyObject( {} )\n true\n > bool = isEmptyObject( { 'beep': 'boop' } )\n false\n > bool = isEmptyObject( [] )\n false\n\n See Also\n --------\n isObject, isPlainObject\n", "isEmptyString": "\nisEmptyString( value )\n Tests if a value is an empty string.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is an empty string.\n\n Examples\n --------\n > var bool = isEmptyString( '' )\n true\n > bool = isEmptyString( new String( '' ) )\n true\n > bool = isEmptyString( 'beep' )\n false\n > bool = isEmptyString( [] )\n false\n\n\nisEmptyString.isPrimitive( value )\n Tests if a value is an empty string primitive.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an empty string primitive.\n\n Examples\n --------\n > var bool = isEmptyString.isPrimitive( '' )\n true\n > bool = isEmptyString.isPrimitive( new String( '' ) )\n false\n\n\nisEmptyString.isObject( value )\n Tests if a value is an empty `String` object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an empty `String` object.\n\n Examples\n --------\n > var bool = isEmptyString.isObject( new String( '' ) )\n true\n > bool = isEmptyString.isObject( '' )\n false\n\n See Also\n --------\n isString\n", - "isEnumerableProperty": "\nisEnumerableProperty( value, property )\n Tests if an object property is enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object property is enumerable.\n\n Examples\n --------\n > var beep = { 'boop': true };\n > var bool = isEnumerableProperty( beep, 'boop' )\n true\n > bool = isEnumerableProperty( beep, 'hasOwnProperty' )\n false\n\n See Also\n --------\n isNonEnumerableProperty\n", + "isEnumerableProperty": "\nisEnumerableProperty( value, property )\n Tests if an object property is enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object property is enumerable.\n\n Examples\n --------\n > var beep = { 'boop': true };\n > var bool = isEnumerableProperty( beep, 'boop' )\n true\n > bool = isEnumerableProperty( beep, 'hasOwnProperty' )\n false\n\n See Also\n --------\n isConfigurableProperty, isEnumerablePropertyIn, isNonEnumerableProperty, isReadableProperty, isWritableProperty\n", + "isEnumerablePropertyIn": "\nisEnumerablePropertyIn( value, property )\n Tests if an object's own or inherited property is enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is\n enumerable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = true;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isEnumerablePropertyIn( obj, 'boop' )\n true\n > bool = isEnumerablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isConfigurablePropertyIn, isEnumerableProperty, isReadablePropertyIn, isWritablePropertyIn\n", "isError": "\nisError( value )\n Tests if a value is an Error object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an Error object.\n\n Examples\n --------\n > var bool = isError( new Error( 'beep' ) )\n true\n > bool = isError( {} )\n false\n\n", "isEvalError": "\nisEvalError( value )\n Tests if a value is an EvalError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided an EvalError (or a descendant) object,\n false positives may occur due to the fact that the EvalError constructor\n inherits from Error and has no internal class of its own. Hence, EvalError\n impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an EvalError object.\n\n Examples\n --------\n > var bool = isEvalError( new EvalError( 'beep' ) )\n true\n > bool = isEvalError( {} )\n false\n\n See Also\n --------\n isError\n", "isEven": "\nisEven( value )\n Tests if a value is an even number.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether is an even number.\n\n Examples\n --------\n > var bool = isEven( 4.0 )\n true\n > bool = isEven( new Number( 4.0 ) )\n true\n > bool = isEven( 3.0 )\n false\n > bool = isEven( -3.14 )\n false\n > bool = isEven( null )\n false\n\n\nisEven.isPrimitive( value )\n Tests if a value is a number primitive that is an even number.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive that is an even\n number.\n\n Examples\n --------\n > var bool = isEven.isPrimitive( -4.0 )\n true\n > bool = isEven.isPrimitive( new Number( -4.0 ) )\n false\n\n\nisEven.isObject( value )\n Tests if a value is a number object that is an even number.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object that is an even\n number.\n\n Examples\n --------\n > var bool = isEven.isObject( 4.0 )\n false\n > bool = isEven.isObject( new Number( 4.0 ) )\n true\n\n See Also\n --------\n isOdd\n", From 59b42e896b81f3d6bf639005e6faa8331b40385e Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 15:59:10 -0700 Subject: [PATCH 0174/1062] Add support for symbols --- .../@stdlib/assert/has-property/README.md | 2 +- .../@stdlib/assert/has-property/docs/repl.txt | 2 +- .../@stdlib/assert/has-property/lib/main.js | 3 +++ .../@stdlib/assert/has-property/test/test.js | 21 ++++++++++++++++++- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/has-property/README.md b/lib/node_modules/@stdlib/assert/has-property/README.md index cbdd9001763c..240087a07370 100644 --- a/lib/node_modules/@stdlib/assert/has-property/README.md +++ b/lib/node_modules/@stdlib/assert/has-property/README.md @@ -74,7 +74,7 @@ bool = hasProp( value, 'bap' ); // returns true ``` -- Property arguments are coerced to `strings`. +- Non-symbol property arguments are coerced to `strings`. ```javascript var value = { diff --git a/lib/node_modules/@stdlib/assert/has-property/docs/repl.txt b/lib/node_modules/@stdlib/assert/has-property/docs/repl.txt index 92f2bc92b30b..acc86814b96e 100644 --- a/lib/node_modules/@stdlib/assert/has-property/docs/repl.txt +++ b/lib/node_modules/@stdlib/assert/has-property/docs/repl.txt @@ -4,7 +4,7 @@ Value arguments other than `null` or `undefined` are coerced to objects. - Property arguments are coerced to strings. + Non-symbol property arguments are coerced to strings. Parameters ---------- diff --git a/lib/node_modules/@stdlib/assert/has-property/lib/main.js b/lib/node_modules/@stdlib/assert/has-property/lib/main.js index b2a9a5a8c639..16b99046f7c6 100644 --- a/lib/node_modules/@stdlib/assert/has-property/lib/main.js +++ b/lib/node_modules/@stdlib/assert/has-property/lib/main.js @@ -47,6 +47,9 @@ function hasProp( value, property ) { if ( value === void 0 || value === null ) { return false; } + if ( typeof property === 'symbol' ) { + return property in Object( value ); + } return ( String( property ) in Object( value ) ); } diff --git a/lib/node_modules/@stdlib/assert/has-property/test/test.js b/lib/node_modules/@stdlib/assert/has-property/test/test.js index 421ed030c786..c46219480c0d 100644 --- a/lib/node_modules/@stdlib/assert/has-property/test/test.js +++ b/lib/node_modules/@stdlib/assert/has-property/test/test.js @@ -23,6 +23,8 @@ // MODULES // var tape = require( 'tape' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); var hasProp = require( './../lib' ); @@ -85,7 +87,7 @@ tape( 'values are coerced to objects', function test( t ) { t.end(); }); -tape( 'property values are coerced to strings', function test( t ) { +tape( 'non-symbol property values are coerced to strings', function test( t ) { var bool; bool = hasProp( { 'null': false }, null ); @@ -96,3 +98,20 @@ tape( 'property values are coerced to strings', function test( t ) { t.end(); }); + +tape( 'the function supports symbols', function test( t ) { + var bool; + var obj; + var s; + + if ( hasSymbolSupport() ) { + obj = {}; + s = Symbol( 'foo' ); + obj[ s ] = true; + bool = hasProp( obj, s ); + t.strictEqual( bool, true, 'returns true' ); + } else { + t.pass( 'environment does not support symbols' ); + } + t.end(); +}); From 75b16ce21528d76bd58748b55bce9f8c0c4126e4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 16:46:00 -0700 Subject: [PATCH 0175/1062] Fix function name --- .../@stdlib/assert/is-enumerable-property-in/lib/main.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property-in/lib/main.js b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/lib/main.js index fb7aa353646c..90725ea6ebe0 100644 --- a/lib/node_modules/@stdlib/assert/is-enumerable-property-in/lib/main.js +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property-in/lib/main.js @@ -46,13 +46,13 @@ var propertyDescriptorIn = require( '@stdlib/utils/property-descriptor-in' ); * 'value': true * }); * -* var bool = isConfigurablePropertyIn( obj, 'boop' ); +* var bool = isEnumerablePropertyIn( obj, 'boop' ); * // returns true * -* bool = isConfigurablePropertyIn( obj, 'beep' ); +* bool = isEnumerablePropertyIn( obj, 'beep' ); * // returns false */ -function isConfigurablePropertyIn( value, property ) { +function isEnumerablePropertyIn( value, property ) { var desc = propertyDescriptorIn( value, property ); // Note: works for both property names and symbols, which the `in` operator does not. return ( desc !== null && desc.enumerable === true ); } @@ -60,4 +60,4 @@ function isConfigurablePropertyIn( value, property ) { // EXPORTS // -module.exports = isConfigurablePropertyIn; +module.exports = isEnumerablePropertyIn; From bf6e19bcbf241491cba017cac023966300178eac Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 16:56:49 -0700 Subject: [PATCH 0176/1062] Add assertion utility to test if an object has a non-enumerable property --- .../is-nonenumerable-property-in/README.md | 160 ++++++++++++++ .../benchmark/benchmark.js | 51 +++++ .../docs/repl.txt | 35 ++++ .../examples/index.js | 59 ++++++ .../is-nonenumerable-property-in/lib/index.js | 55 +++++ .../is-nonenumerable-property-in/lib/main.js | 63 ++++++ .../is-nonenumerable-property-in/package.json | 78 +++++++ .../is-nonenumerable-property-in/test/test.js | 197 ++++++++++++++++++ 8 files changed, 698 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/README.md b/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/README.md new file mode 100644 index 000000000000..bf55ead9681c --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/README.md @@ -0,0 +1,160 @@ + + +# isNonEnumerablePropertyIn + +> Test if an object's own or inherited property is non-enumerable. + +
+ +## Usage + +```javascript +var isNonEnumerablePropertyIn = require( '@stdlib/assert/is-nonenumerable-property-in' ); +``` + +#### isNonEnumerablePropertyIn( value, property ) + +Returns a `boolean` indicating if a `value` has a non-enumerable `property`. + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var bool; +var obj; + +function Foo() { + this.foo = 'bar'; + return this; +} + +defineProperty( Foo.prototype, 'beep', { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': true +}); + +defineProperty( Foo.prototype, 'boop', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': true +}); + +obj = new Foo(); + +bool = isNonEnumerablePropertyIn( obj, 'foo' ); +// returns false + +bool = isNonEnumerablePropertyIn( obj, 'beep' ); +// returns false + +bool = isNonEnumerablePropertyIn( obj, 'boop' ); +// returns true +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isNonEnumerablePropertyIn( 'beep', 'length' ); + // returns true + ``` + +- Non-symbol property arguments are coerced to `strings`. + + ```javascript + var defineProperty = require( '@stdlib/utils/define-property' ); + + var obj = {}; + + defineProperty( obj, 'null', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': true + }); + + var bool = isNonEnumerablePropertyIn( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isNonEnumerablePropertyIn = require( '@stdlib/assert/is-nonenumerable-property-in' ); + +var bool = isNonEnumerablePropertyIn( {}, 'toString' ); +// returns true + +bool = isNonEnumerablePropertyIn( {}, 'hasOwnProperty' ); +// returns true + +bool = isNonEnumerablePropertyIn( [ 'a' ], 'length' ); +// returns true + +bool = isNonEnumerablePropertyIn( { 'a': 'b' }, 'a' ); +// returns false + +bool = isNonEnumerablePropertyIn( [ 'a' ], 0 ); +// returns false + +bool = isNonEnumerablePropertyIn( { 'null': false }, null ); +// returns false + +bool = isNonEnumerablePropertyIn( { '[object Object]': false }, {} ); +// returns false + +bool = isNonEnumerablePropertyIn( null, 'a' ); +// returns false + +bool = isNonEnumerablePropertyIn( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/benchmark/benchmark.js new file mode 100644 index 000000000000..73ebb41933a8 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isNonEnumerablePropertyIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isNonEnumerablePropertyIn( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/docs/repl.txt new file mode 100644 index 000000000000..4d33d27ced4b --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/docs/repl.txt @@ -0,0 +1,35 @@ + +{{alias}}( value, property ) + Tests if an object's own or inherited property is non-enumerable. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own or inherited property is non- + enumerable. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = true; + > desc.enumerable = false; + > desc.writable = true; + > desc.value = true; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + false + > bool = {{alias}}( obj, 'beep' ) + true + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/examples/index.js b/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/examples/index.js new file mode 100644 index 000000000000..e226abd78c6c --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isNonEnumerablePropertyIn = require( './../lib' ); + +var bool = isNonEnumerablePropertyIn( {}, 'toString' ); +console.log( bool ); +// => true + +bool = isNonEnumerablePropertyIn( {}, 'hasOwnProperty' ); +console.log( bool ); +// => true + +bool = isNonEnumerablePropertyIn( [ 'a' ], 'length' ); +console.log( bool ); +// => true + +bool = isNonEnumerablePropertyIn( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => false + +bool = isNonEnumerablePropertyIn( [ 'a' ], 0 ); +console.log( bool ); +// => false + +bool = isNonEnumerablePropertyIn( { 'null': false }, null ); +console.log( bool ); +// => false + +bool = isNonEnumerablePropertyIn( { '[object Object]': false }, {} ); +console.log( bool ); +// => false + +bool = isNonEnumerablePropertyIn( null, 'a' ); +console.log( bool ); +// => false + +bool = isNonEnumerablePropertyIn( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/lib/index.js b/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/lib/index.js new file mode 100644 index 000000000000..ba9731d3b964 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/lib/index.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own or inherited property is non-enumerable. +* +* @module @stdlib/assert/is-nonenumerable-property-in +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isNonEnumerablePropertyIn = require( '@stdlib/assert/is-nonenumerable-property-in' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': true, +* 'enumerable': false, +* 'writable': true, +* 'value': true +* }); +* +* var bool = isNonEnumerablePropertyIn( obj, 'boop' ); +* // returns false +* +* bool = isNonEnumerablePropertyIn( obj, 'beep' ); +* // returns true +*/ + +// MODULES // + +var isNonEnumerablePropertyIn = require( './main.js' ); + + +// EXPORTS // + +module.exports = isNonEnumerablePropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/lib/main.js b/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/lib/main.js new file mode 100644 index 000000000000..eacaa8cdf86a --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/lib/main.js @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptorIn = require( '@stdlib/utils/property-descriptor-in' ); + + +// MAIN // + +/** +* Tests if an object's own or inherited property is non-enumerable. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is non-enumerable +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': true, +* 'enumerable': false, +* 'writable': true, +* 'value': true +* }); +* +* var bool = isNonEnumerablePropertyIn( obj, 'boop' ); +* // returns false +* +* bool = isNonEnumerablePropertyIn( obj, 'beep' ); +* // returns true +*/ +function isNonEnumerablePropertyIn( value, property ) { + var desc = propertyDescriptorIn( value, property ); + return ( desc !== null && desc.enumerable === false ); +} + + +// EXPORTS // + +module.exports = isNonEnumerablePropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/package.json b/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/package.json new file mode 100644 index 000000000000..620033febba7 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/package.json @@ -0,0 +1,78 @@ +{ + "name": "@stdlib/assert/is-nonenumerable-property-in", + "version": "0.0.0", + "description": "Test if an object's own or inherited property is non-enumerable.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "inherited", + "in", + "prototype", + "proto", + "enumerable", + "non-enumerable", + "for-in", + "descriptor", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/test/test.js b/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/test/test.js new file mode 100644 index 000000000000..e8b0c4afeed3 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property-in/test/test.js @@ -0,0 +1,197 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isNonEnumerablePropertyIn = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isNonEnumerablePropertyIn, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if provided a non-enumerable property', function test( t ) { + var bool; + var obj; + + obj = {}; + + defineProperty( obj, 'a', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': true + }); + + bool = isNonEnumerablePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isNonEnumerablePropertyIn( [ 'a' ], 'length' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function returns `true` if provided a non-enumerable inherited property', function test( t ) { + var bool; + var obj; + + function Foo() { + return this; + } + + defineProperty( Foo.prototype, 'a', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': true + }); + + obj = new Foo(); + + bool = isNonEnumerablePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isNonEnumerablePropertyIn( {}, 'hasOwnProperty' ); + t.equal( bool, true, 'returns true' ); + + bool = isNonEnumerablePropertyIn( {}, 'toString' ); + t.equal( bool, true, 'returns true' ); + + bool = isNonEnumerablePropertyIn( {}, 'constructor' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function returns `false` if an object property is enumerable', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isNonEnumerablePropertyIn( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonEnumerablePropertyIn( [ 1, 2, 3 ], '1' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonEnumerablePropertyIn( [ 1, 2, 3 ], 1 ); + t.equal( bool, false, 'returns false' ); + + bool = isNonEnumerablePropertyIn( new Foo(), 'bar' ); + t.equal( bool, false, 'returns false' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'b' + }); + + bool = isNonEnumerablePropertyIn( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided an enumerable inherited property', function test( t ) { + var bool; + var obj; + + function Foo() { + return this; + } + + defineProperty( Foo.prototype, 'bar', { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': true + }); + + obj = new Foo(); + + bool = isNonEnumerablePropertyIn( obj, 'bar' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isNonEnumerablePropertyIn( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isNonEnumerablePropertyIn( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a non-enumerable property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + defineProperty( obj, 'd', { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': true + }); + + bool = isNonEnumerablePropertyIn( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonEnumerablePropertyIn( obj, 'd' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isNonEnumerablePropertyIn( 'beep', 'length' ); + t.equal( bool, true, 'returns true' ); + + bool = isNonEnumerablePropertyIn( 'beep', 'toString' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); From 44473f6b8301a28372bb691acbd1e6ba248d4b7c Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 16:58:51 -0700 Subject: [PATCH 0177/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 57dadbe2ed86..e1d06584be29 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -1143,6 +1143,15 @@ setReadOnly( ns, 'isNodeWritableStreamLike', require( '@stdlib/assert/is-node-wr */ setReadOnly( ns, 'isNonEnumerableProperty', require( '@stdlib/assert/is-nonenumerable-property' ) ); +/** +* @name isNonEnumerablePropertyIn +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-nonenumerable-property-in} +*/ +setReadOnly( ns, 'isNonEnumerablePropertyIn', require( '@stdlib/assert/is-nonenumerable-property-in' ) ); + /** * @name isNonNegativeInteger * @memberof ns From 255c1c8feec56c485698e59f9224c9b7999c277c Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 17:01:12 -0700 Subject: [PATCH 0178/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 22 ++++++++++++++++++- .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 7 +++--- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 070965b3cb43..5710da6767eb 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -2543,7 +2543,27 @@ ns.push({ 'value': require( '@stdlib/assert/is-nonenumerable-property' ), 'type': 'Function', 'related': [ - '@stdlib/assert/is-enumerable-property' + '@stdlib/assert/is-configurable-property', + '@stdlib/assert/is-enumerable-property', + '@stdlib/assert/is-nonconfigurable-property', + '@stdlib/assert/is-nonenumerable-property-in', + '@stdlib/assert/is-readable-property', + '@stdlib/assert/is-writable-property' + ] +}); + +ns.push({ + 'alias': 'isNonEnumerablePropertyIn', + 'path': '@stdlib/assert/is-nonenumerable-property-in', + 'value': require( '@stdlib/assert/is-nonenumerable-property-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-configurable-property-in', + '@stdlib/assert/is-enumerable-property-in', + '@stdlib/assert/is-nonconfigurable-property-in', + '@stdlib/assert/is-nonenumerable-property', + '@stdlib/assert/is-readable-property-in', + '@stdlib/assert/is-writable-property-in' ] }); diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 94901852ff62..b6888040f96f 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1212,6 +1212,7 @@ var db = { "isNodeTransformStreamLike": "Stream = require( 'stream' ).Transform;\ns = new Stream();\nbool = isNodeTransformStreamLike( s )\nbool = isNodeTransformStreamLike( {} )\n", "isNodeWritableStreamLike": "Stream = require( 'stream' ).Writable;\ns = new Stream();\nbool = isNodeWritableStreamLike( s )\nbool = isNodeWritableStreamLike( {} )\n", "isNonEnumerableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'beep';\ndefineProperty( obj, 'beep', desc );\nbool = isNonEnumerableProperty( obj, 'boop' )\nbool = isNonEnumerableProperty( obj, 'beep' )\n", + "isNonEnumerablePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = true;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = true;\ndefineProperty( obj, 'beep', desc );\nbool = isNonEnumerablePropertyIn( obj, 'boop' )\nbool = isNonEnumerablePropertyIn( obj, 'beep' )\n", "isNonNegativeInteger": "bool = isNonNegativeInteger( 5.0 )\nbool = isNonNegativeInteger( new Number( 5.0 ) )\nbool = isNonNegativeInteger( 3.14 )\nbool = isNonNegativeInteger( -5.0 )\nbool = isNonNegativeInteger( null )\n", "isNonNegativeIntegerArray": "bool = isNonNegativeIntegerArray( [ 3.0, new Number(3.0) ] )\nbool = isNonNegativeIntegerArray( [ 3.0, '3.0' ] )\n", "isNonNegativeNumber": "bool = isNonNegativeNumber( 5.0 )\nbool = isNonNegativeNumber( new Number( 5.0 ) )\nbool = isNonNegativeNumber( 3.14 )\nbool = isNonNegativeNumber( -5.0 )\nbool = isNonNegativeNumber( null )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 9383d7b385c8..97a9f7c0398c 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -972,7 +972,7 @@ var db = { "hasMapSupport": "\nhasMapSupport()\n Tests for native `Map` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has `Map` support.\n\n Examples\n --------\n > var bool = hasMapSupport()\n \n\n", "hasNodeBufferSupport": "\nhasNodeBufferSupport()\n Tests for native `Buffer` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has `Buffer` support.\n\n Examples\n --------\n > var bool = hasNodeBufferSupport()\n \n\n", "hasOwnProp": "\nhasOwnProp( value, property )\n Tests if an object has a specified property.\n\n In contrast to the native `Object.prototype.hasOwnProperty`, this function\n does not throw when provided `null` or `undefined`. Instead, the function\n returns `false`.\n\n Value arguments other than `null` or `undefined` are coerced to objects.\n\n Property arguments are coerced to strings.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object has a specified property.\n\n Examples\n --------\n > var beep = { 'boop': true };\n > var bool = hasOwnProp( beep, 'boop' )\n true\n > bool = hasOwnProp( beep, 'bop' )\n false\n\n See Also\n --------\n hasProp\n", - "hasProp": "\nhasProp( value, property )\n Tests if an object has a specified property, either own or inherited.\n\n Value arguments other than `null` or `undefined` are coerced to objects.\n\n Property arguments are coerced to strings.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object has a specified property.\n\n Examples\n --------\n > var beep = { 'boop': true };\n > var bool = hasProp( beep, 'boop' )\n true\n > bool = hasProp( beep, 'toString' )\n true\n > bool = hasProp( beep, 'bop' )\n false\n\n See Also\n --------\n hasOwnProp\n", + "hasProp": "\nhasProp( value, property )\n Tests if an object has a specified property, either own or inherited.\n\n Value arguments other than `null` or `undefined` are coerced to objects.\n\n Non-symbol property arguments are coerced to strings.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object has a specified property.\n\n Examples\n --------\n > var beep = { 'boop': true };\n > var bool = hasProp( beep, 'boop' )\n true\n > bool = hasProp( beep, 'toString' )\n true\n > bool = hasProp( beep, 'bop' )\n false\n\n See Also\n --------\n hasOwnProp\n", "hasPrototype": "\nhasPrototype( value, proto )\n Tests if an object's prototype chain contains a provided prototype.\n\n The function returns `false` if provided a primitive value.\n\n This function is generally more robust than the `instanceof` operator (e.g.,\n where inheritance is performed without using constructors).\n\n Parameters\n ----------\n value: any\n Input value.\n\n proto: Object|Function\n Prototype.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a provided prototype exists in a prototype chain.\n\n Examples\n --------\n > function Foo() { return this; };\n > function Bar() { return this; };\n > inherit( Bar, Foo );\n > var bar = new Bar();\n > var bool = hasPrototype( bar, Foo.prototype )\n true\n\n See Also\n --------\n getPrototypeOf\n", "hasProxySupport": "\nhasProxySupport()\n Tests whether an environment has native `Proxy` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has native `Proxy` support.\n\n Examples\n --------\n > var bool = hasProxySupport()\n \n\n", "hasSetSupport": "\nhasSetSupport()\n Tests for native `Set` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has native `Set` support.\n\n Examples\n --------\n > var bool = hasSetSupport()\n \n\n", @@ -1170,7 +1170,7 @@ var db = { "isEmptyObject": "\nisEmptyObject( value )\n Tests if a value is an empty object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is an empty object.\n\n Examples\n --------\n > var bool = isEmptyObject( {} )\n true\n > bool = isEmptyObject( { 'beep': 'boop' } )\n false\n > bool = isEmptyObject( [] )\n false\n\n See Also\n --------\n isObject, isPlainObject\n", "isEmptyString": "\nisEmptyString( value )\n Tests if a value is an empty string.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is an empty string.\n\n Examples\n --------\n > var bool = isEmptyString( '' )\n true\n > bool = isEmptyString( new String( '' ) )\n true\n > bool = isEmptyString( 'beep' )\n false\n > bool = isEmptyString( [] )\n false\n\n\nisEmptyString.isPrimitive( value )\n Tests if a value is an empty string primitive.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an empty string primitive.\n\n Examples\n --------\n > var bool = isEmptyString.isPrimitive( '' )\n true\n > bool = isEmptyString.isPrimitive( new String( '' ) )\n false\n\n\nisEmptyString.isObject( value )\n Tests if a value is an empty `String` object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an empty `String` object.\n\n Examples\n --------\n > var bool = isEmptyString.isObject( new String( '' ) )\n true\n > bool = isEmptyString.isObject( '' )\n false\n\n See Also\n --------\n isString\n", "isEnumerableProperty": "\nisEnumerableProperty( value, property )\n Tests if an object property is enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object property is enumerable.\n\n Examples\n --------\n > var beep = { 'boop': true };\n > var bool = isEnumerableProperty( beep, 'boop' )\n true\n > bool = isEnumerableProperty( beep, 'hasOwnProperty' )\n false\n\n See Also\n --------\n isConfigurableProperty, isEnumerablePropertyIn, isNonEnumerableProperty, isReadableProperty, isWritableProperty\n", - "isEnumerablePropertyIn": "\nisEnumerablePropertyIn( value, property )\n Tests if an object's own or inherited property is enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is\n enumerable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = true;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isEnumerablePropertyIn( obj, 'boop' )\n true\n > bool = isEnumerablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isConfigurablePropertyIn, isEnumerableProperty, isReadablePropertyIn, isWritablePropertyIn\n", + "isEnumerablePropertyIn": "\nisEnumerablePropertyIn( value, property )\n Tests if an object's own or inherited property is enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is\n enumerable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = true;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isEnumerablePropertyIn( obj, 'boop' )\n true\n > bool = isEnumerablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isConfigurablePropertyIn, isEnumerableProperty, isNonEnumerablePropertyIn, isReadablePropertyIn, isWritablePropertyIn\n", "isError": "\nisError( value )\n Tests if a value is an Error object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an Error object.\n\n Examples\n --------\n > var bool = isError( new Error( 'beep' ) )\n true\n > bool = isError( {} )\n false\n\n", "isEvalError": "\nisEvalError( value )\n Tests if a value is an EvalError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided an EvalError (or a descendant) object,\n false positives may occur due to the fact that the EvalError constructor\n inherits from Error and has no internal class of its own. Hence, EvalError\n impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an EvalError object.\n\n Examples\n --------\n > var bool = isEvalError( new EvalError( 'beep' ) )\n true\n > bool = isEvalError( {} )\n false\n\n See Also\n --------\n isError\n", "isEven": "\nisEven( value )\n Tests if a value is an even number.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether is an even number.\n\n Examples\n --------\n > var bool = isEven( 4.0 )\n true\n > bool = isEven( new Number( 4.0 ) )\n true\n > bool = isEven( 3.0 )\n false\n > bool = isEven( -3.14 )\n false\n > bool = isEven( null )\n false\n\n\nisEven.isPrimitive( value )\n Tests if a value is a number primitive that is an even number.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive that is an even\n number.\n\n Examples\n --------\n > var bool = isEven.isPrimitive( -4.0 )\n true\n > bool = isEven.isPrimitive( new Number( -4.0 ) )\n false\n\n\nisEven.isObject( value )\n Tests if a value is a number object that is an even number.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object that is an even\n number.\n\n Examples\n --------\n > var bool = isEven.isObject( 4.0 )\n false\n > bool = isEven.isObject( new Number( 4.0 ) )\n true\n\n See Also\n --------\n isOdd\n", @@ -1211,7 +1211,8 @@ var db = { "isNodeStreamLike": "\nisNodeStreamLike( value )\n Tests if a value is Node stream-like.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is Node stream-like.\n\n Examples\n --------\n > var Stream = require( 'stream' ).Stream;\n > s = new Stream();\n > var bool = isNodeStreamLike( s )\n true\n > bool = isNodeStreamLike( {} )\n false\n\n", "isNodeTransformStreamLike": "\nisNodeTransformStreamLike( value )\n Tests if a value is Node transform stream-like.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is Node transform stream-like.\n\n Examples\n --------\n > var Stream = require( 'stream' ).Transform;\n > s = new Stream();\n > var bool = isNodeTransformStreamLike( s )\n true\n > bool = isNodeTransformStreamLike( {} )\n false\n\n See Also\n --------\n isNodeStreamLike\n", "isNodeWritableStreamLike": "\nisNodeWritableStreamLike( value )\n Tests if a value is Node writable stream-like.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is Node writable stream-like.\n\n Examples\n --------\n > var Stream = require( 'stream' ).Writable;\n > s = new Stream();\n > var bool = isNodeWritableStreamLike( s )\n true\n > bool = isNodeWritableStreamLike( {} )\n false\n\n See Also\n --------\n isNodeStreamLike\n", - "isNonEnumerableProperty": "\nisNonEnumerableProperty( value, property )\n Tests if an object property is non-enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object property is non-enumerable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isNonEnumerableProperty( obj, 'boop' )\n false\n > bool = isNonEnumerableProperty( obj, 'beep' )\n true\n\n See Also\n --------\n isEnumerableProperty\n", + "isNonEnumerableProperty": "\nisNonEnumerableProperty( value, property )\n Tests if an object property is non-enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object property is non-enumerable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isNonEnumerableProperty( obj, 'boop' )\n false\n > bool = isNonEnumerableProperty( obj, 'beep' )\n true\n\n See Also\n --------\n isConfigurableProperty, isEnumerableProperty, isNonEnumerablePropertyIn, isReadableProperty, isWritableProperty\n", + "isNonEnumerablePropertyIn": "\nisNonEnumerablePropertyIn( value, property )\n Tests if an object's own or inherited property is non-enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is non-\n enumerable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = true;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isNonEnumerablePropertyIn( obj, 'boop' )\n false\n > bool = isNonEnumerablePropertyIn( obj, 'beep' )\n true\n\n See Also\n --------\n isConfigurablePropertyIn, isEnumerablePropertyIn, isNonEnumerableProperty, isReadablePropertyIn, isWritablePropertyIn\n", "isNonNegativeInteger": "\nisNonNegativeInteger( value )\n Tests if a value is a nonnegative integer.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a nonnegative integer.\n\n Examples\n --------\n > var bool = isNonNegativeInteger( 5.0 )\n true\n > bool = isNonNegativeInteger( new Number( 5.0 ) )\n true\n > bool = isNonNegativeInteger( 3.14 )\n false\n > bool = isNonNegativeInteger( -5.0 )\n false\n > bool = isNonNegativeInteger( null )\n false\n\n\nisNonNegativeInteger.isPrimitive( value )\n Tests if a value is a number primitive having a nonnegative integer value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive having a\n nonnegative integer value.\n\n Examples\n --------\n > var bool = isNonNegativeInteger.isPrimitive( 3.0 )\n true\n > bool = isNonNegativeInteger.isPrimitive( new Number( 3.0 ) )\n false\n\n\nisNonNegativeInteger.isObject( value )\n Tests if a value is a number object having a nonnegative integer value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object having a nonnegative\n integer value.\n\n Examples\n --------\n > var bool = isNonNegativeInteger.isObject( 3.0 )\n false\n > bool = isNonNegativeInteger.isObject( new Number( 3.0 ) )\n true\n\n\n See Also\n --------\n isInteger\n", "isNonNegativeIntegerArray": "\nisNonNegativeIntegerArray( value )\n Tests if a value is an array-like object containing only nonnegative\n integers.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n nonnegative integers.\n\n Examples\n --------\n > var bool = isNonNegativeIntegerArray( [ 3.0, new Number(3.0) ] )\n true\n > bool = isNonNegativeIntegerArray( [ 3.0, '3.0' ] )\n false\n\n\nisNonNegativeIntegerArray.primitives( value )\n Tests if a value is an array-like object containing only nonnegative\n primitive integer values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n nonnegative primitive integer values.\n\n Examples\n --------\n > var bool = isNonNegativeIntegerArray.primitives( [ 1.0, 0.0, 10.0 ] )\n true\n > bool = isNonNegativeIntegerArray.primitives( [ 3.0, new Number(1.0) ] )\n false\n\n\nisNonNegativeIntegerArray.objects( value )\n Tests if a value is an array-like object containing only number objects\n having nonnegative integer values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n number objects having nonnegative integer values.\n\n Examples\n --------\n > var bool = isNonNegativeIntegerArray.objects( [ new Number(1.0), new Number(10.0) ] )\n true\n > bool = isNonNegativeIntegerArray.objects( [ 1.0, 0.0, 10.0 ] )\n false\n > bool = isNonNegativeIntegerArray.objects( [ 3.0, new Number(1.0) ] )\n false\n\n See Also\n --------\n isArray\n", "isNonNegativeNumber": "\nisNonNegativeNumber( value )\n Tests if a value is a nonnegative number.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a nonnegative number.\n\n Examples\n --------\n > var bool = isNonNegativeNumber( 5.0 )\n true\n > bool = isNonNegativeNumber( new Number( 5.0 ) )\n true\n > bool = isNonNegativeNumber( 3.14 )\n true\n > bool = isNonNegativeNumber( -5.0 )\n false\n > bool = isNonNegativeNumber( null )\n false\n\n\nisNonNegativeNumber.isPrimitive( value )\n Tests if a value is a number primitive having a nonnegative value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive having a\n nonnegative value.\n\n Examples\n --------\n > var bool = isNonNegativeNumber.isPrimitive( 3.0 )\n true\n > bool = isNonNegativeNumber.isPrimitive( new Number( 3.0 ) )\n false\n\n\nisNonNegativeNumber.isObject( value )\n Tests if a value is a number object having a nonnegative value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object having a nonnegative\n value.\n\n Examples\n --------\n > var bool = isNonNegativeNumber.isObject( 3.0 )\n false\n > bool = isNonNegativeNumber.isObject( new Number( 3.0 ) )\n true\n\n\n See Also\n --------\n isNumber\n", From 6c001c1663df005c9c144a2437a535348eea9b46 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 17:13:20 -0700 Subject: [PATCH 0179/1062] Add assertion utility to test an object's own property is configurable --- .../is-nonconfigurable-property/README.md | 124 ++++++++++++++++ .../benchmark/benchmark.js | 51 +++++++ .../is-nonconfigurable-property/docs/repl.txt | 37 +++++ .../examples/index.js | 59 ++++++++ .../is-nonconfigurable-property/lib/index.js | 55 ++++++++ .../is-nonconfigurable-property/lib/main.js | 63 +++++++++ .../is-nonconfigurable-property/package.json | 71 ++++++++++ .../is-nonconfigurable-property/test/test.js | 132 ++++++++++++++++++ 8 files changed, 592 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-nonconfigurable-property/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-nonconfigurable-property/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-nonconfigurable-property/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-nonconfigurable-property/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-nonconfigurable-property/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-nonconfigurable-property/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-nonconfigurable-property/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-nonconfigurable-property/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/README.md b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/README.md new file mode 100644 index 000000000000..83c52712d817 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/README.md @@ -0,0 +1,124 @@ + + +# isNonConfigurableProperty + +> Test if an object property is non-configurable. + +
+ +## Usage + +```javascript +var isNonConfigurableProperty = require( '@stdlib/assert/is-nonconfigurable-property' ); +``` + +#### isNonConfigurableProperty( value, property ) + +Returns a `boolean` indicating if a `value` has a non-configurable `property` (i.e., a property which cannot be deleted and whose descriptor cannot be changed). + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = { + 'foo': 'bar' +}; + +defineProperty( obj, 'beep', { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': 'boop' +}); + +var bool = isNonConfigurableProperty( obj, 'beep' ); +// returns true + +bool = isNonConfigurableProperty( obj, 'foo' ); +// returns false +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isNonConfigurableProperty( 'beep', 'length' ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isNonConfigurableProperty = require( '@stdlib/assert/is-nonconfigurable-property' ); + +var bool = isNonConfigurableProperty( [ 'a' ], 'length' ); +// returns true + +bool = isNonConfigurableProperty( { 'a': 'b' }, 'a' ); +// returns false + +bool = isNonConfigurableProperty( [ 'a' ], 0 ); +// returns false + +bool = isNonConfigurableProperty( {}, 'toString' ); +// returns false + +bool = isNonConfigurableProperty( {}, 'hasOwnProperty' ); +// returns false + +bool = isNonConfigurableProperty( null, 'a' ); +// returns false + +bool = isNonConfigurableProperty( void 0, 'a' ); +// returns false + +bool = isNonConfigurableProperty( { 'null': false }, null ); +// returns false + +bool = isNonConfigurableProperty( { '[object Object]': false }, {} ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/benchmark/benchmark.js new file mode 100644 index 000000000000..027a59286386 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isNonConfigurableProperty = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isNonConfigurableProperty( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/docs/repl.txt new file mode 100644 index 000000000000..935a5c962cba --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/docs/repl.txt @@ -0,0 +1,37 @@ + +{{alias}}( value, property ) + Tests if an object property is non-configurable. + + A non-configurable property is a property which cannot be deleted and whose + descriptor cannot be changed. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object property is non-configurable. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = true; + > desc.writable = true; + > desc.value = 'beep'; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + false + > bool = {{alias}}( obj, 'beep' ) + true + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/examples/index.js b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/examples/index.js new file mode 100644 index 000000000000..5233945d75a5 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isNonConfigurableProperty = require( './../lib' ); + +var bool = isNonConfigurableProperty( [ 'a' ], 'length' ); +console.log( bool ); +// => true + +bool = isNonConfigurableProperty( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => false + +bool = isNonConfigurableProperty( [ 'a' ], 0 ); +console.log( bool ); +// => false + +bool = isNonConfigurableProperty( {}, 'toString' ); +console.log( bool ); +// => false + +bool = isNonConfigurableProperty( {}, 'hasOwnProperty' ); +console.log( bool ); +// => false + +bool = isNonConfigurableProperty( null, 'a' ); +console.log( bool ); +// => false + +bool = isNonConfigurableProperty( void 0, 'a' ); +console.log( bool ); +// => false + +bool = isNonConfigurableProperty( { 'null': false }, null ); +console.log( bool ); +// => false + +bool = isNonConfigurableProperty( { '[object Object]': false }, {} ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/lib/index.js b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/lib/index.js new file mode 100644 index 000000000000..8b522dbe985e --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/lib/index.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object property is non-configurable. +* +* @module @stdlib/assert/is-nonconfigurable-property +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isNonConfigurableProperty = require( '@stdlib/assert/is-nonconfigurable-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'writable': true, +* 'value': 'beep' +* }); +* +* var bool = isNonConfigurableProperty( obj, 'boop' ); +* // returns false +* +* bool = isNonConfigurableProperty( obj, 'beep' ); +* // returns true +*/ + +// MODULES // + +var isNonConfigurableProperty = require( './main.js' ); + + +// EXPORTS // + +module.exports = isNonConfigurableProperty; diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/lib/main.js b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/lib/main.js new file mode 100644 index 000000000000..1af2240ac7e3 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/lib/main.js @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptor = require( '@stdlib/utils/property-descriptor' ); + + +// MAIN // + +/** +* Tests if an object property is non-configurable. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is non-configurable +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'writable': true, +* 'value': 'beep' +* }); +* +* var bool = isNonConfigurableProperty( obj, 'boop' ); +* // returns false +* +* bool = isNonConfigurableProperty( obj, 'beep' ); +* // returns true +*/ +function isNonConfigurableProperty( value, property ) { + var desc = propertyDescriptor( value, property ); + return ( desc !== null && desc.configurable === false ); +} + + +// EXPORTS // + +module.exports = isNonConfigurableProperty; diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/package.json b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/package.json new file mode 100644 index 000000000000..d33391a89c14 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/assert/is-nonconfigurable-property", + "version": "0.0.0", + "description": "Test if an object property is non-configurable.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "configurable", + "non-configurable", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/test/test.js b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/test/test.js new file mode 100644 index 000000000000..378df4b58028 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/test/test.js @@ -0,0 +1,132 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isNonConfigurableProperty = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isNonConfigurableProperty, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isNonConfigurableProperty( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isNonConfigurableProperty( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if an object property is configurable', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isNonConfigurableProperty( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonConfigurableProperty( [ 1, 2, 3 ], '1' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonConfigurableProperty( [ 1, 2, 3 ], 1 ); + t.equal( bool, false, 'returns false' ); + + bool = isNonConfigurableProperty( new Foo(), 'bar' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a non-configurable property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + bool = isNonConfigurableProperty( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `true` if an object property is non-configurable', function test( t ) { + var bool; + var obj; + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': 'b' + }); + + bool = isNonConfigurableProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isNonConfigurableProperty( [ 'a' ], 'length' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided an inherited property', function test( t ) { + var bool; + + bool = isNonConfigurableProperty( {}, 'hasOwnProperty' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonConfigurableProperty( {}, 'toString' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonConfigurableProperty( {}, 'constructor' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isNonConfigurableProperty( 'beep', 'length' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); From 3eaec81a1ba76620b0c0c18c2e5bf5a6ac2e810e Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 17:14:36 -0700 Subject: [PATCH 0180/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index e1d06584be29..47143441ae0e 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -1134,6 +1134,15 @@ setReadOnly( ns, 'isNodeTransformStreamLike', require( '@stdlib/assert/is-node-t */ setReadOnly( ns, 'isNodeWritableStreamLike', require( '@stdlib/assert/is-node-writable-stream-like' ) ); +/** +* @name isNonConfigurableProperty +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-nonconfigurable-property} +*/ +setReadOnly( ns, 'isNonConfigurableProperty', require( '@stdlib/assert/is-nonconfigurable-property' ) ); + /** * @name isNonEnumerableProperty * @memberof ns From c82d715f4c1193f2d748dc26ebea2a459dc10dce Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 17:15:34 -0700 Subject: [PATCH 0181/1062] Update description --- .../@stdlib/assert/is-nonconfigurable-property/README.md | 2 +- .../@stdlib/assert/is-nonconfigurable-property/docs/repl.txt | 4 ++-- .../@stdlib/assert/is-nonconfigurable-property/lib/index.js | 2 +- .../@stdlib/assert/is-nonconfigurable-property/lib/main.js | 2 +- .../@stdlib/assert/is-nonconfigurable-property/package.json | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/README.md b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/README.md index 83c52712d817..6e1af066209f 100644 --- a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/README.md +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/README.md @@ -20,7 +20,7 @@ limitations under the License. # isNonConfigurableProperty -> Test if an object property is non-configurable. +> Test if an object's own property is non-configurable.
diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/docs/repl.txt index 935a5c962cba..edb2aae29bc8 100644 --- a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/docs/repl.txt +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/docs/repl.txt @@ -1,6 +1,6 @@ {{alias}}( value, property ) - Tests if an object property is non-configurable. + Tests if an object's own property is non-configurable. A non-configurable property is a property which cannot be deleted and whose descriptor cannot be changed. @@ -16,7 +16,7 @@ Returns ------- bool: boolean - Boolean indicating if an object property is non-configurable. + Boolean indicating if an object's own property is non-configurable. Examples -------- diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/lib/index.js b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/lib/index.js index 8b522dbe985e..0f09ab911ceb 100644 --- a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/lib/index.js +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/lib/index.js @@ -19,7 +19,7 @@ 'use strict'; /** -* Test whether an object property is non-configurable. +* Test whether an object's own property is non-configurable. * * @module @stdlib/assert/is-nonconfigurable-property * diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/lib/main.js b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/lib/main.js index 1af2240ac7e3..1517a5596ce0 100644 --- a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/lib/main.js +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/lib/main.js @@ -26,7 +26,7 @@ var propertyDescriptor = require( '@stdlib/utils/property-descriptor' ); // MAIN // /** -* Tests if an object property is non-configurable. +* Tests if an object's own property is non-configurable. * * @param {*} value - value to test * @param {*} property - property to test diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/package.json b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/package.json index d33391a89c14..f3900fd99a58 100644 --- a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/package.json +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/assert/is-nonconfigurable-property", "version": "0.0.0", - "description": "Test if an object property is non-configurable.", + "description": "Test if an object's own property is non-configurable.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", From 1a9e069c8f362a1c599374ba8a3db1819cbd555a Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 17:16:42 -0700 Subject: [PATCH 0182/1062] Update description --- .../@stdlib/assert/is-nonenumerable-property/README.md | 2 +- .../@stdlib/assert/is-nonenumerable-property/docs/repl.txt | 4 ++-- .../@stdlib/assert/is-nonenumerable-property/lib/index.js | 2 +- .../@stdlib/assert/is-nonenumerable-property/lib/main.js | 2 +- .../@stdlib/assert/is-nonenumerable-property/package.json | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/README.md b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/README.md index 7c5ff47ab3f3..ca19c6bfc356 100644 --- a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/README.md +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/README.md @@ -20,7 +20,7 @@ limitations under the License. # isNonEnumerableProperty -> Test if an object property is non-enumerable. +> Test if an object's own property is non-enumerable.
diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/docs/repl.txt index b736e6e86ec4..6fc38eed5fdf 100644 --- a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/docs/repl.txt +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/docs/repl.txt @@ -1,6 +1,6 @@ {{alias}}( value, property ) - Tests if an object property is non-enumerable. + Tests if an object's own property is non-enumerable. Parameters ---------- @@ -13,7 +13,7 @@ Returns ------- bool: boolean - Boolean indicating if an object property is non-enumerable. + Boolean indicating if an object's own property is non-enumerable. Examples -------- diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/lib/index.js b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/lib/index.js index d3b3a4481c9e..accffc1e4b82 100644 --- a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/lib/index.js +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/lib/index.js @@ -19,7 +19,7 @@ 'use strict'; /** -* Test whether an object property is non-enumerable. +* Test whether an object's own property is non-enumerable. * * @module @stdlib/assert/is-nonenumerable-property * diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/lib/main.js b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/lib/main.js index 70d6ca6d603d..3243bdd4fc53 100644 --- a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/lib/main.js +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/lib/main.js @@ -27,7 +27,7 @@ var isEnumerableProperty = require( '@stdlib/assert/is-enumerable-property' ); // MAIN // /** -* Tests if an object property is non-enumerable. +* Tests if an object's own property is non-enumerable. * * @param {*} value - value to test * @param {*} property - property to test diff --git a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/package.json b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/package.json index 198d5bfe3247..087b12bff62e 100644 --- a/lib/node_modules/@stdlib/assert/is-nonenumerable-property/package.json +++ b/lib/node_modules/@stdlib/assert/is-nonenumerable-property/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/assert/is-nonenumerable-property", "version": "0.0.0", - "description": "Test if an object property is non-enumerable.", + "description": "Test if an object's own property is non-enumerable.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", From a6187566e94182fd3fce52b5e0dc9e64e11ecbf6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 17:17:51 -0700 Subject: [PATCH 0183/1062] Update description --- .../@stdlib/assert/is-enumerable-property/README.md | 2 +- .../@stdlib/assert/is-enumerable-property/docs/repl.txt | 4 ++-- .../@stdlib/assert/is-enumerable-property/lib/index.js | 2 +- .../@stdlib/assert/is-enumerable-property/lib/main.js | 2 +- .../@stdlib/assert/is-enumerable-property/package.json | 3 ++- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property/README.md b/lib/node_modules/@stdlib/assert/is-enumerable-property/README.md index 0e1db02091a7..b0da41714169 100644 --- a/lib/node_modules/@stdlib/assert/is-enumerable-property/README.md +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property/README.md @@ -20,7 +20,7 @@ limitations under the License. # isEnumerableProperty -> Test if an object property is enumerable. +> Test if an object's own property is enumerable.
diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-enumerable-property/docs/repl.txt index dfd8a0bea740..0fdb60480296 100644 --- a/lib/node_modules/@stdlib/assert/is-enumerable-property/docs/repl.txt +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property/docs/repl.txt @@ -1,6 +1,6 @@ {{alias}}( value, property ) - Tests if an object property is enumerable. + Tests if an object's own property is enumerable. Parameters ---------- @@ -13,7 +13,7 @@ Returns ------- bool: boolean - Boolean indicating if an object property is enumerable. + Boolean indicating if an object's own property is enumerable. Examples -------- diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property/lib/index.js b/lib/node_modules/@stdlib/assert/is-enumerable-property/lib/index.js index 7c92bd84869d..6e38d7210e62 100644 --- a/lib/node_modules/@stdlib/assert/is-enumerable-property/lib/index.js +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property/lib/index.js @@ -19,7 +19,7 @@ 'use strict'; /** -* Test whether an object property is enumerable. +* Test whether an object's own property is enumerable. * * @module @stdlib/assert/is-enumerable-property * diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property/lib/main.js b/lib/node_modules/@stdlib/assert/is-enumerable-property/lib/main.js index d10aad1c5dcc..73b380f29f4c 100644 --- a/lib/node_modules/@stdlib/assert/is-enumerable-property/lib/main.js +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property/lib/main.js @@ -30,7 +30,7 @@ var hasStringEnumBug = require( './has_string_enumerability_bug.js' ); // MAIN // /** -* Tests if an object property is enumerable. +* Tests if an object's own property is enumerable. * * @param {*} value - value to test * @param {*} property - property to test diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property/package.json b/lib/node_modules/@stdlib/assert/is-enumerable-property/package.json index e945430b28ce..b0dbe22014e2 100644 --- a/lib/node_modules/@stdlib/assert/is-enumerable-property/package.json +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/assert/is-enumerable-property", "version": "0.0.0", - "description": "Test if an object property is enumerable.", + "description": "Test if an object's own property is enumerable.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", @@ -60,6 +60,7 @@ "obj", "is", "has", + "own", "enumerable", "enum", "property", From d66668f30a210d198e4b51299c58e5e7358bd4ee Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 17:19:29 -0700 Subject: [PATCH 0184/1062] Add JSDoc --- .../is-enumerable-property/lib/native.js | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/assert/is-enumerable-property/lib/native.js b/lib/node_modules/@stdlib/assert/is-enumerable-property/lib/native.js index e284cff9c2bd..143e16621ebf 100644 --- a/lib/node_modules/@stdlib/assert/is-enumerable-property/lib/native.js +++ b/lib/node_modules/@stdlib/assert/is-enumerable-property/lib/native.js @@ -18,6 +18,37 @@ 'use strict'; +// MAIN // + +/** +* Tests if an object's own property is enumerable. +* +* @private +* @name isEnumerableProperty +* @type {Function} +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is enumerable +* +* @example +* var beep = { +* 'boop': true +* }; +* +* var bool = isEnumerableProperty( beep, 'boop' ); +* // returns true +* +* @example +* var beep = { +* 'boop': true +* }; +* +* var bool = isEnumerableProperty( beep, 'hasOwnProperty' ); +* // returns false +*/ +var isEnumerableProperty = Object.prototype.propertyIsEnumerable; + + // EXPORTS // -module.exports = Object.prototype.propertyIsEnumerable; +module.exports = isEnumerableProperty; From d76e7c3fc6f4c5fe5d66c9aee1ad9a9d57e2347e Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 17:19:44 -0700 Subject: [PATCH 0185/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 15 +++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 5710da6767eb..f27aa9e7c609 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -2537,6 +2537,21 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isNonConfigurableProperty', + 'path': '@stdlib/assert/is-nonconfigurable-property', + 'value': require( '@stdlib/assert/is-nonconfigurable-property' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-configurable-property', + '@stdlib/assert/is-enumerable-property', + '@stdlib/assert/is-nonconfigurable-property-in', + '@stdlib/assert/is-nonenumerable-property', + '@stdlib/assert/is-readable-property', + '@stdlib/assert/is-writable-property' + ] +}); + ns.push({ 'alias': 'isNonEnumerableProperty', 'path': '@stdlib/assert/is-nonenumerable-property', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index b6888040f96f..774fdb493ec9 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1211,6 +1211,7 @@ var db = { "isNodeStreamLike": "Stream = require( 'stream' ).Stream;\ns = new Stream();\nbool = isNodeStreamLike( s )\nbool = isNodeStreamLike( {} )\n", "isNodeTransformStreamLike": "Stream = require( 'stream' ).Transform;\ns = new Stream();\nbool = isNodeTransformStreamLike( s )\nbool = isNodeTransformStreamLike( {} )\n", "isNodeWritableStreamLike": "Stream = require( 'stream' ).Writable;\ns = new Stream();\nbool = isNodeWritableStreamLike( s )\nbool = isNodeWritableStreamLike( {} )\n", + "isNonConfigurableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = true;\ndesc.value = 'beep';\ndefineProperty( obj, 'beep', desc );\nbool = isNonConfigurableProperty( obj, 'boop' )\nbool = isNonConfigurableProperty( obj, 'beep' )\n", "isNonEnumerableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'beep';\ndefineProperty( obj, 'beep', desc );\nbool = isNonEnumerableProperty( obj, 'boop' )\nbool = isNonEnumerableProperty( obj, 'beep' )\n", "isNonEnumerablePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = true;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = true;\ndefineProperty( obj, 'beep', desc );\nbool = isNonEnumerablePropertyIn( obj, 'boop' )\nbool = isNonEnumerablePropertyIn( obj, 'beep' )\n", "isNonNegativeInteger": "bool = isNonNegativeInteger( 5.0 )\nbool = isNonNegativeInteger( new Number( 5.0 ) )\nbool = isNonNegativeInteger( 3.14 )\nbool = isNonNegativeInteger( -5.0 )\nbool = isNonNegativeInteger( null )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 97a9f7c0398c..1e827cddd036 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1211,7 +1211,8 @@ var db = { "isNodeStreamLike": "\nisNodeStreamLike( value )\n Tests if a value is Node stream-like.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is Node stream-like.\n\n Examples\n --------\n > var Stream = require( 'stream' ).Stream;\n > s = new Stream();\n > var bool = isNodeStreamLike( s )\n true\n > bool = isNodeStreamLike( {} )\n false\n\n", "isNodeTransformStreamLike": "\nisNodeTransformStreamLike( value )\n Tests if a value is Node transform stream-like.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is Node transform stream-like.\n\n Examples\n --------\n > var Stream = require( 'stream' ).Transform;\n > s = new Stream();\n > var bool = isNodeTransformStreamLike( s )\n true\n > bool = isNodeTransformStreamLike( {} )\n false\n\n See Also\n --------\n isNodeStreamLike\n", "isNodeWritableStreamLike": "\nisNodeWritableStreamLike( value )\n Tests if a value is Node writable stream-like.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is Node writable stream-like.\n\n Examples\n --------\n > var Stream = require( 'stream' ).Writable;\n > s = new Stream();\n > var bool = isNodeWritableStreamLike( s )\n true\n > bool = isNodeWritableStreamLike( {} )\n false\n\n See Also\n --------\n isNodeStreamLike\n", - "isNonEnumerableProperty": "\nisNonEnumerableProperty( value, property )\n Tests if an object property is non-enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object property is non-enumerable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isNonEnumerableProperty( obj, 'boop' )\n false\n > bool = isNonEnumerableProperty( obj, 'beep' )\n true\n\n See Also\n --------\n isConfigurableProperty, isEnumerableProperty, isNonEnumerablePropertyIn, isReadableProperty, isWritableProperty\n", + "isNonConfigurableProperty": "\nisNonConfigurableProperty( value, property )\n Tests if an object's own property is non-configurable.\n\n A non-configurable property is a property which cannot be deleted and whose\n descriptor cannot be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is non-configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isNonConfigurableProperty( obj, 'boop' )\n false\n > bool = isNonConfigurableProperty( obj, 'beep' )\n true\n\n See Also\n --------\n isConfigurableProperty, isEnumerableProperty, isNonEnumerableProperty, isReadableProperty, isWritableProperty\n", + "isNonEnumerableProperty": "\nisNonEnumerableProperty( value, property )\n Tests if an object property is non-enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object property is non-enumerable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isNonEnumerableProperty( obj, 'boop' )\n false\n > bool = isNonEnumerableProperty( obj, 'beep' )\n true\n\n See Also\n --------\n isConfigurableProperty, isEnumerableProperty, isNonConfigurableProperty, isNonEnumerablePropertyIn, isReadableProperty, isWritableProperty\n", "isNonEnumerablePropertyIn": "\nisNonEnumerablePropertyIn( value, property )\n Tests if an object's own or inherited property is non-enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is non-\n enumerable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = true;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isNonEnumerablePropertyIn( obj, 'boop' )\n false\n > bool = isNonEnumerablePropertyIn( obj, 'beep' )\n true\n\n See Also\n --------\n isConfigurablePropertyIn, isEnumerablePropertyIn, isNonEnumerableProperty, isReadablePropertyIn, isWritablePropertyIn\n", "isNonNegativeInteger": "\nisNonNegativeInteger( value )\n Tests if a value is a nonnegative integer.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a nonnegative integer.\n\n Examples\n --------\n > var bool = isNonNegativeInteger( 5.0 )\n true\n > bool = isNonNegativeInteger( new Number( 5.0 ) )\n true\n > bool = isNonNegativeInteger( 3.14 )\n false\n > bool = isNonNegativeInteger( -5.0 )\n false\n > bool = isNonNegativeInteger( null )\n false\n\n\nisNonNegativeInteger.isPrimitive( value )\n Tests if a value is a number primitive having a nonnegative integer value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive having a\n nonnegative integer value.\n\n Examples\n --------\n > var bool = isNonNegativeInteger.isPrimitive( 3.0 )\n true\n > bool = isNonNegativeInteger.isPrimitive( new Number( 3.0 ) )\n false\n\n\nisNonNegativeInteger.isObject( value )\n Tests if a value is a number object having a nonnegative integer value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object having a nonnegative\n integer value.\n\n Examples\n --------\n > var bool = isNonNegativeInteger.isObject( 3.0 )\n false\n > bool = isNonNegativeInteger.isObject( new Number( 3.0 ) )\n true\n\n\n See Also\n --------\n isInteger\n", "isNonNegativeIntegerArray": "\nisNonNegativeIntegerArray( value )\n Tests if a value is an array-like object containing only nonnegative\n integers.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n nonnegative integers.\n\n Examples\n --------\n > var bool = isNonNegativeIntegerArray( [ 3.0, new Number(3.0) ] )\n true\n > bool = isNonNegativeIntegerArray( [ 3.0, '3.0' ] )\n false\n\n\nisNonNegativeIntegerArray.primitives( value )\n Tests if a value is an array-like object containing only nonnegative\n primitive integer values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n nonnegative primitive integer values.\n\n Examples\n --------\n > var bool = isNonNegativeIntegerArray.primitives( [ 1.0, 0.0, 10.0 ] )\n true\n > bool = isNonNegativeIntegerArray.primitives( [ 3.0, new Number(1.0) ] )\n false\n\n\nisNonNegativeIntegerArray.objects( value )\n Tests if a value is an array-like object containing only number objects\n having nonnegative integer values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n number objects having nonnegative integer values.\n\n Examples\n --------\n > var bool = isNonNegativeIntegerArray.objects( [ new Number(1.0), new Number(10.0) ] )\n true\n > bool = isNonNegativeIntegerArray.objects( [ 1.0, 0.0, 10.0 ] )\n false\n > bool = isNonNegativeIntegerArray.objects( [ 3.0, new Number(1.0) ] )\n false\n\n See Also\n --------\n isArray\n", From 5c52da8f653763ebfad50da59e328e66056afeec Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 17:31:02 -0700 Subject: [PATCH 0186/1062] Add assertion utility to test if an object has a non-configurable property --- .../is-nonconfigurable-property-in/README.md | 162 ++++++++++++++ .../benchmark/benchmark.js | 51 +++++ .../docs/repl.txt | 38 ++++ .../examples/index.js | 59 ++++++ .../lib/index.js | 55 +++++ .../lib/main.js | 63 ++++++ .../package.json | 77 +++++++ .../test/test.js | 197 ++++++++++++++++++ 8 files changed, 702 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/README.md b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/README.md new file mode 100644 index 000000000000..ffb4026e0b5e --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/README.md @@ -0,0 +1,162 @@ + + +# isNonConfigurablePropertyIn + +> Test if an object's own or inherited property is non-configurable. + +
+ +## Usage + + + +```javascript +var isNonConfigurablePropertyIn = require( '@stdlib/assert/is-nonconfigurable-property-in' ); +``` + +#### isNonConfigurablePropertyIn( value, property ) + +Returns a `boolean` indicating if a `value` has a non-configurable `property` (i.e., a property which cannot be deleted and whose descriptor cannot be changed). + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var bool; +var obj; + +function Foo() { + this.foo = 'bar'; + return this; +} + +defineProperty( Foo.prototype, 'beep', { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': true +}); + +defineProperty( Foo.prototype, 'boop', { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': true +}); + +obj = new Foo(); + +bool = isNonConfigurablePropertyIn( obj, 'foo' ); +// returns false + +bool = isNonConfigurablePropertyIn( obj, 'beep' ); +// returns false + +bool = isNonConfigurablePropertyIn( obj, 'boop' ); +// returns true +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isNonConfigurablePropertyIn( 'beep', 'length' ); + // returns true + ``` + +- Non-symbol property arguments are coerced to `strings`. + + ```javascript + var defineProperty = require( '@stdlib/utils/define-property' ); + + var obj = {}; + + defineProperty( obj, 'null', { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': true + }); + + var bool = isNonConfigurablePropertyIn( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isNonConfigurablePropertyIn = require( '@stdlib/assert/is-nonconfigurable-property-in' ); + +var bool = isNonConfigurablePropertyIn( [ 'a' ], 'length' ); +// returns true + +bool = isNonConfigurablePropertyIn( {}, 'toString' ); +// returns false + +bool = isNonConfigurablePropertyIn( {}, 'hasOwnProperty' ); +// returns false + +bool = isNonConfigurablePropertyIn( { 'a': 'b' }, 'a' ); +// returns false + +bool = isNonConfigurablePropertyIn( [ 'a' ], 0 ); +// returns false + +bool = isNonConfigurablePropertyIn( { 'null': false }, null ); +// returns false + +bool = isNonConfigurablePropertyIn( { '[object Object]': false }, {} ); +// returns false + +bool = isNonConfigurablePropertyIn( null, 'a' ); +// returns false + +bool = isNonConfigurablePropertyIn( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/benchmark/benchmark.js new file mode 100644 index 000000000000..96dd3533f78f --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isNonConfigurablePropertyIn = require( './../lib' ); // eslint-disable-line id-length + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isNonConfigurablePropertyIn( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/docs/repl.txt new file mode 100644 index 000000000000..47d5067a24f4 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/docs/repl.txt @@ -0,0 +1,38 @@ + +{{alias}}( value, property ) + Tests if an object's own or inherited property is non-configurable. + + A non-configurable property is a property which cannot be deleted and whose + descriptor cannot be changed. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own or inherited property is non- + configurable. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = true; + > desc.writable = true; + > desc.value = true; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + false + > bool = {{alias}}( obj, 'beep' ) + true + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/examples/index.js b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/examples/index.js new file mode 100644 index 000000000000..ed58f617b42c --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline, id-length */ + +'use strict'; + +var isNonConfigurablePropertyIn = require( './../lib' ); + +var bool = isNonConfigurablePropertyIn( [ 'a' ], 'length' ); +console.log( bool ); +// => true + +bool = isNonConfigurablePropertyIn( {}, 'toString' ); +console.log( bool ); +// => false + +bool = isNonConfigurablePropertyIn( {}, 'hasOwnProperty' ); +console.log( bool ); +// => false + +bool = isNonConfigurablePropertyIn( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => false + +bool = isNonConfigurablePropertyIn( [ 'a' ], 0 ); +console.log( bool ); +// => false + +bool = isNonConfigurablePropertyIn( { 'null': false }, null ); +console.log( bool ); +// => false + +bool = isNonConfigurablePropertyIn( { '[object Object]': false }, {} ); +console.log( bool ); +// => false + +bool = isNonConfigurablePropertyIn( null, 'a' ); +console.log( bool ); +// => false + +bool = isNonConfigurablePropertyIn( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/lib/index.js b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/lib/index.js new file mode 100644 index 000000000000..198a9cee97bc --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/lib/index.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own or inherited property is non-configurable. +* +* @module @stdlib/assert/is-nonconfigurable-property-in +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isNonConfigurablePropertyIn = require( '@stdlib/assert/is-nonconfigurable-property-in' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'writable': true, +* 'value': true +* }); +* +* var bool = isNonConfigurablePropertyIn( obj, 'boop' ); +* // returns false +* +* bool = isNonConfigurablePropertyIn( obj, 'beep' ); +* // returns true +*/ + +// MODULES // + +var isNonConfigurablePropertyIn = require( './main.js' ); // eslint-disable-line id-length + + +// EXPORTS // + +module.exports = isNonConfigurablePropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/lib/main.js b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/lib/main.js new file mode 100644 index 000000000000..4bab059e5440 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/lib/main.js @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptorIn = require( '@stdlib/utils/property-descriptor-in' ); + + +// MAIN // + +/** +* Tests if an object's own or inherited property is non-configurable. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property is non-configurable +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': true, +* 'writable': true, +* 'value': true +* }); +* +* var bool = isNonConfigurablePropertyIn( obj, 'boop' ); +* // returns false +* +* bool = isNonConfigurablePropertyIn( obj, 'beep' ); +* // returns true +*/ +function isNonConfigurablePropertyIn( value, property ) { // eslint-disable-line id-length + var desc = propertyDescriptorIn( value, property ); + return ( desc !== null && desc.configurable === false ); +} + + +// EXPORTS // + +module.exports = isNonConfigurablePropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/package.json b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/package.json new file mode 100644 index 000000000000..b2a390e6cc6b --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/package.json @@ -0,0 +1,77 @@ +{ + "name": "@stdlib/assert/is-nonconfigurable-property-in", + "version": "0.0.0", + "description": "Test if an object's own or inherited property is non-configurable.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "inherited", + "in", + "prototype", + "proto", + "configurable", + "non-configurable", + "descriptor", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/test/test.js b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/test/test.js new file mode 100644 index 000000000000..56736fe9d831 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-nonconfigurable-property-in/test/test.js @@ -0,0 +1,197 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isNonConfigurablePropertyIn = require( './../lib' ); // eslint-disable-line id-length + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isNonConfigurablePropertyIn, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if provided a non-configurable property', function test( t ) { + var bool; + var obj; + + obj = {}; + + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': true + }); + + bool = isNonConfigurablePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isNonConfigurablePropertyIn( [ 'a' ], 'length' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function returns `true` if provided a non-configurable inherited property', function test( t ) { + var bool; + var obj; + + function Foo() { + return this; + } + + defineProperty( Foo.prototype, 'a', { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': true + }); + + obj = new Foo(); + + bool = isNonConfigurablePropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function returns `false` if an object property is configurable', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isNonConfigurablePropertyIn( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonConfigurablePropertyIn( [ 1, 2, 3 ], '1' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonConfigurablePropertyIn( [ 1, 2, 3 ], 1 ); + t.equal( bool, false, 'returns false' ); + + bool = isNonConfigurablePropertyIn( new Foo(), 'bar' ); + t.equal( bool, false, 'returns false' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'b' + }); + + bool = isNonConfigurablePropertyIn( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a configurable inherited property', function test( t ) { + var bool; + var obj; + + function Foo() { + return this; + } + + defineProperty( Foo.prototype, 'bar', { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': true + }); + + obj = new Foo(); + + bool = isNonConfigurablePropertyIn( obj, 'bar' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonConfigurablePropertyIn( {}, 'hasOwnProperty' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonConfigurablePropertyIn( {}, 'toString' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonConfigurablePropertyIn( {}, 'constructor' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isNonConfigurablePropertyIn( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isNonConfigurablePropertyIn( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a non-configurable property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + defineProperty( obj, 'd', { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': true + }); + + bool = isNonConfigurablePropertyIn( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + bool = isNonConfigurablePropertyIn( obj, 'd' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isNonConfigurablePropertyIn( 'beep', 'length' ); + t.equal( bool, true, 'returns true' ); + + bool = isNonConfigurablePropertyIn( 'beep', 'toString' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); From 486ae7e1bac61f5376f286be50a60b2df1f3d909 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 17:31:58 -0700 Subject: [PATCH 0187/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 47143441ae0e..e28a79f8fc63 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -1143,6 +1143,15 @@ setReadOnly( ns, 'isNodeWritableStreamLike', require( '@stdlib/assert/is-node-wr */ setReadOnly( ns, 'isNonConfigurableProperty', require( '@stdlib/assert/is-nonconfigurable-property' ) ); +/** +* @name isNonConfigurablePropertyIn +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-nonconfigurable-property-in} +*/ +setReadOnly( ns, 'isNonConfigurablePropertyIn', require( '@stdlib/assert/is-nonconfigurable-property-in' ) ); + /** * @name isNonEnumerableProperty * @memberof ns From 23331deb9b2a5a59602e04a1a2c902cc1b8e1c66 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 17:32:35 -0700 Subject: [PATCH 0188/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 15 +++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 9 +++++---- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index f27aa9e7c609..322200961fc1 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -2552,6 +2552,21 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isNonConfigurablePropertyIn', + 'path': '@stdlib/assert/is-nonconfigurable-property-in', + 'value': require( '@stdlib/assert/is-nonconfigurable-property-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-configurable-property-in', + '@stdlib/assert/is-enumerable-property-in', + '@stdlib/assert/is-nonconfigurable-property', + '@stdlib/assert/is-nonenumerable-property-in', + '@stdlib/assert/is-readable-property-in', + '@stdlib/assert/is-writable-property-in' + ] +}); + ns.push({ 'alias': 'isNonEnumerableProperty', 'path': '@stdlib/assert/is-nonenumerable-property', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 774fdb493ec9..2f729e5b67ba 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1212,6 +1212,7 @@ var db = { "isNodeTransformStreamLike": "Stream = require( 'stream' ).Transform;\ns = new Stream();\nbool = isNodeTransformStreamLike( s )\nbool = isNodeTransformStreamLike( {} )\n", "isNodeWritableStreamLike": "Stream = require( 'stream' ).Writable;\ns = new Stream();\nbool = isNodeWritableStreamLike( s )\nbool = isNodeWritableStreamLike( {} )\n", "isNonConfigurableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = true;\ndesc.value = 'beep';\ndefineProperty( obj, 'beep', desc );\nbool = isNonConfigurableProperty( obj, 'boop' )\nbool = isNonConfigurableProperty( obj, 'beep' )\n", + "isNonConfigurablePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = true;\ndesc.value = true;\ndefineProperty( obj, 'beep', desc );\nbool = isNonConfigurablePropertyIn( obj, 'boop' )\nbool = isNonConfigurablePropertyIn( obj, 'beep' )\n", "isNonEnumerableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'beep';\ndefineProperty( obj, 'beep', desc );\nbool = isNonEnumerableProperty( obj, 'boop' )\nbool = isNonEnumerableProperty( obj, 'beep' )\n", "isNonEnumerablePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = true;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = true;\ndefineProperty( obj, 'beep', desc );\nbool = isNonEnumerablePropertyIn( obj, 'boop' )\nbool = isNonEnumerablePropertyIn( obj, 'beep' )\n", "isNonNegativeInteger": "bool = isNonNegativeInteger( 5.0 )\nbool = isNonNegativeInteger( new Number( 5.0 ) )\nbool = isNonNegativeInteger( 3.14 )\nbool = isNonNegativeInteger( -5.0 )\nbool = isNonNegativeInteger( null )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 1e827cddd036..caa168e4275c 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1169,7 +1169,7 @@ var db = { "isEmptyArray": "\nisEmptyArray( value )\n Tests if a value is an empty array.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is an empty array.\n\n Examples\n --------\n > var bool = isEmptyArray( [] )\n true\n > bool = isEmptyArray( [ 1, 2, 3 ] )\n false\n > bool = isEmptyArray( {} )\n false\n\n See Also\n --------\n isArray\n", "isEmptyObject": "\nisEmptyObject( value )\n Tests if a value is an empty object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is an empty object.\n\n Examples\n --------\n > var bool = isEmptyObject( {} )\n true\n > bool = isEmptyObject( { 'beep': 'boop' } )\n false\n > bool = isEmptyObject( [] )\n false\n\n See Also\n --------\n isObject, isPlainObject\n", "isEmptyString": "\nisEmptyString( value )\n Tests if a value is an empty string.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is an empty string.\n\n Examples\n --------\n > var bool = isEmptyString( '' )\n true\n > bool = isEmptyString( new String( '' ) )\n true\n > bool = isEmptyString( 'beep' )\n false\n > bool = isEmptyString( [] )\n false\n\n\nisEmptyString.isPrimitive( value )\n Tests if a value is an empty string primitive.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an empty string primitive.\n\n Examples\n --------\n > var bool = isEmptyString.isPrimitive( '' )\n true\n > bool = isEmptyString.isPrimitive( new String( '' ) )\n false\n\n\nisEmptyString.isObject( value )\n Tests if a value is an empty `String` object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an empty `String` object.\n\n Examples\n --------\n > var bool = isEmptyString.isObject( new String( '' ) )\n true\n > bool = isEmptyString.isObject( '' )\n false\n\n See Also\n --------\n isString\n", - "isEnumerableProperty": "\nisEnumerableProperty( value, property )\n Tests if an object property is enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object property is enumerable.\n\n Examples\n --------\n > var beep = { 'boop': true };\n > var bool = isEnumerableProperty( beep, 'boop' )\n true\n > bool = isEnumerableProperty( beep, 'hasOwnProperty' )\n false\n\n See Also\n --------\n isConfigurableProperty, isEnumerablePropertyIn, isNonEnumerableProperty, isReadableProperty, isWritableProperty\n", + "isEnumerableProperty": "\nisEnumerableProperty( value, property )\n Tests if an object's own property is enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is enumerable.\n\n Examples\n --------\n > var beep = { 'boop': true };\n > var bool = isEnumerableProperty( beep, 'boop' )\n true\n > bool = isEnumerableProperty( beep, 'hasOwnProperty' )\n false\n\n See Also\n --------\n isConfigurableProperty, isEnumerablePropertyIn, isNonEnumerableProperty, isReadableProperty, isWritableProperty\n", "isEnumerablePropertyIn": "\nisEnumerablePropertyIn( value, property )\n Tests if an object's own or inherited property is enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is\n enumerable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = true;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isEnumerablePropertyIn( obj, 'boop' )\n true\n > bool = isEnumerablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isConfigurablePropertyIn, isEnumerableProperty, isNonEnumerablePropertyIn, isReadablePropertyIn, isWritablePropertyIn\n", "isError": "\nisError( value )\n Tests if a value is an Error object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an Error object.\n\n Examples\n --------\n > var bool = isError( new Error( 'beep' ) )\n true\n > bool = isError( {} )\n false\n\n", "isEvalError": "\nisEvalError( value )\n Tests if a value is an EvalError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided an EvalError (or a descendant) object,\n false positives may occur due to the fact that the EvalError constructor\n inherits from Error and has no internal class of its own. Hence, EvalError\n impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an EvalError object.\n\n Examples\n --------\n > var bool = isEvalError( new EvalError( 'beep' ) )\n true\n > bool = isEvalError( {} )\n false\n\n See Also\n --------\n isError\n", @@ -1211,9 +1211,10 @@ var db = { "isNodeStreamLike": "\nisNodeStreamLike( value )\n Tests if a value is Node stream-like.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is Node stream-like.\n\n Examples\n --------\n > var Stream = require( 'stream' ).Stream;\n > s = new Stream();\n > var bool = isNodeStreamLike( s )\n true\n > bool = isNodeStreamLike( {} )\n false\n\n", "isNodeTransformStreamLike": "\nisNodeTransformStreamLike( value )\n Tests if a value is Node transform stream-like.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is Node transform stream-like.\n\n Examples\n --------\n > var Stream = require( 'stream' ).Transform;\n > s = new Stream();\n > var bool = isNodeTransformStreamLike( s )\n true\n > bool = isNodeTransformStreamLike( {} )\n false\n\n See Also\n --------\n isNodeStreamLike\n", "isNodeWritableStreamLike": "\nisNodeWritableStreamLike( value )\n Tests if a value is Node writable stream-like.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is Node writable stream-like.\n\n Examples\n --------\n > var Stream = require( 'stream' ).Writable;\n > s = new Stream();\n > var bool = isNodeWritableStreamLike( s )\n true\n > bool = isNodeWritableStreamLike( {} )\n false\n\n See Also\n --------\n isNodeStreamLike\n", - "isNonConfigurableProperty": "\nisNonConfigurableProperty( value, property )\n Tests if an object's own property is non-configurable.\n\n A non-configurable property is a property which cannot be deleted and whose\n descriptor cannot be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is non-configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isNonConfigurableProperty( obj, 'boop' )\n false\n > bool = isNonConfigurableProperty( obj, 'beep' )\n true\n\n See Also\n --------\n isConfigurableProperty, isEnumerableProperty, isNonEnumerableProperty, isReadableProperty, isWritableProperty\n", - "isNonEnumerableProperty": "\nisNonEnumerableProperty( value, property )\n Tests if an object property is non-enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object property is non-enumerable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isNonEnumerableProperty( obj, 'boop' )\n false\n > bool = isNonEnumerableProperty( obj, 'beep' )\n true\n\n See Also\n --------\n isConfigurableProperty, isEnumerableProperty, isNonConfigurableProperty, isNonEnumerablePropertyIn, isReadableProperty, isWritableProperty\n", - "isNonEnumerablePropertyIn": "\nisNonEnumerablePropertyIn( value, property )\n Tests if an object's own or inherited property is non-enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is non-\n enumerable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = true;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isNonEnumerablePropertyIn( obj, 'boop' )\n false\n > bool = isNonEnumerablePropertyIn( obj, 'beep' )\n true\n\n See Also\n --------\n isConfigurablePropertyIn, isEnumerablePropertyIn, isNonEnumerableProperty, isReadablePropertyIn, isWritablePropertyIn\n", + "isNonConfigurableProperty": "\nisNonConfigurableProperty( value, property )\n Tests if an object's own property is non-configurable.\n\n A non-configurable property is a property which cannot be deleted and whose\n descriptor cannot be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is non-configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isNonConfigurableProperty( obj, 'boop' )\n false\n > bool = isNonConfigurableProperty( obj, 'beep' )\n true\n\n See Also\n --------\n isConfigurableProperty, isEnumerableProperty, isNonConfigurablePropertyIn, isNonEnumerableProperty, isReadableProperty, isWritableProperty\n", + "isNonConfigurablePropertyIn": "\nisNonConfigurablePropertyIn( value, property )\n Tests if an object's own or inherited property is non-configurable.\n\n A non-configurable property is a property which cannot be deleted and whose\n descriptor cannot be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is non-\n configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isNonConfigurablePropertyIn( obj, 'boop' )\n false\n > bool = isNonConfigurablePropertyIn( obj, 'beep' )\n true\n\n See Also\n --------\n isConfigurablePropertyIn, isEnumerablePropertyIn, isNonConfigurableProperty, isNonEnumerablePropertyIn, isReadablePropertyIn, isWritablePropertyIn\n", + "isNonEnumerableProperty": "\nisNonEnumerableProperty( value, property )\n Tests if an object's own property is non-enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is non-enumerable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'beep';\n > defineProperty( obj, 'beep', desc );\n > var bool = isNonEnumerableProperty( obj, 'boop' )\n false\n > bool = isNonEnumerableProperty( obj, 'beep' )\n true\n\n See Also\n --------\n isConfigurableProperty, isEnumerableProperty, isNonConfigurableProperty, isNonEnumerablePropertyIn, isReadableProperty, isWritableProperty\n", + "isNonEnumerablePropertyIn": "\nisNonEnumerablePropertyIn( value, property )\n Tests if an object's own or inherited property is non-enumerable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is non-\n enumerable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = true;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isNonEnumerablePropertyIn( obj, 'boop' )\n false\n > bool = isNonEnumerablePropertyIn( obj, 'beep' )\n true\n\n See Also\n --------\n isConfigurablePropertyIn, isEnumerablePropertyIn, isNonConfigurablePropertyIn, isNonEnumerableProperty, isReadablePropertyIn, isWritablePropertyIn\n", "isNonNegativeInteger": "\nisNonNegativeInteger( value )\n Tests if a value is a nonnegative integer.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a nonnegative integer.\n\n Examples\n --------\n > var bool = isNonNegativeInteger( 5.0 )\n true\n > bool = isNonNegativeInteger( new Number( 5.0 ) )\n true\n > bool = isNonNegativeInteger( 3.14 )\n false\n > bool = isNonNegativeInteger( -5.0 )\n false\n > bool = isNonNegativeInteger( null )\n false\n\n\nisNonNegativeInteger.isPrimitive( value )\n Tests if a value is a number primitive having a nonnegative integer value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive having a\n nonnegative integer value.\n\n Examples\n --------\n > var bool = isNonNegativeInteger.isPrimitive( 3.0 )\n true\n > bool = isNonNegativeInteger.isPrimitive( new Number( 3.0 ) )\n false\n\n\nisNonNegativeInteger.isObject( value )\n Tests if a value is a number object having a nonnegative integer value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object having a nonnegative\n integer value.\n\n Examples\n --------\n > var bool = isNonNegativeInteger.isObject( 3.0 )\n false\n > bool = isNonNegativeInteger.isObject( new Number( 3.0 ) )\n true\n\n\n See Also\n --------\n isInteger\n", "isNonNegativeIntegerArray": "\nisNonNegativeIntegerArray( value )\n Tests if a value is an array-like object containing only nonnegative\n integers.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n nonnegative integers.\n\n Examples\n --------\n > var bool = isNonNegativeIntegerArray( [ 3.0, new Number(3.0) ] )\n true\n > bool = isNonNegativeIntegerArray( [ 3.0, '3.0' ] )\n false\n\n\nisNonNegativeIntegerArray.primitives( value )\n Tests if a value is an array-like object containing only nonnegative\n primitive integer values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n nonnegative primitive integer values.\n\n Examples\n --------\n > var bool = isNonNegativeIntegerArray.primitives( [ 1.0, 0.0, 10.0 ] )\n true\n > bool = isNonNegativeIntegerArray.primitives( [ 3.0, new Number(1.0) ] )\n false\n\n\nisNonNegativeIntegerArray.objects( value )\n Tests if a value is an array-like object containing only number objects\n having nonnegative integer values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n number objects having nonnegative integer values.\n\n Examples\n --------\n > var bool = isNonNegativeIntegerArray.objects( [ new Number(1.0), new Number(10.0) ] )\n true\n > bool = isNonNegativeIntegerArray.objects( [ 1.0, 0.0, 10.0 ] )\n false\n > bool = isNonNegativeIntegerArray.objects( [ 3.0, new Number(1.0) ] )\n false\n\n See Also\n --------\n isArray\n", "isNonNegativeNumber": "\nisNonNegativeNumber( value )\n Tests if a value is a nonnegative number.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a nonnegative number.\n\n Examples\n --------\n > var bool = isNonNegativeNumber( 5.0 )\n true\n > bool = isNonNegativeNumber( new Number( 5.0 ) )\n true\n > bool = isNonNegativeNumber( 3.14 )\n true\n > bool = isNonNegativeNumber( -5.0 )\n false\n > bool = isNonNegativeNumber( null )\n false\n\n\nisNonNegativeNumber.isPrimitive( value )\n Tests if a value is a number primitive having a nonnegative value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive having a\n nonnegative value.\n\n Examples\n --------\n > var bool = isNonNegativeNumber.isPrimitive( 3.0 )\n true\n > bool = isNonNegativeNumber.isPrimitive( new Number( 3.0 ) )\n false\n\n\nisNonNegativeNumber.isObject( value )\n Tests if a value is a number object having a nonnegative value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object having a nonnegative\n value.\n\n Examples\n --------\n > var bool = isNonNegativeNumber.isObject( 3.0 )\n false\n > bool = isNonNegativeNumber.isObject( new Number( 3.0 ) )\n true\n\n\n See Also\n --------\n isNumber\n", From dd17319eba737b38efeb5368ff5586cbe91bdb3f Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 18:10:40 -0700 Subject: [PATCH 0189/1062] Add assertion utility which tests for big endianness --- .../@stdlib/assert/is-big-endian/README.md | 108 ++++++++++++ .../@stdlib/assert/is-big-endian/bin/cli | 50 ++++++ .../assert/is-big-endian/docs/repl.txt | 12 ++ .../assert/is-big-endian/docs/usage.txt | 8 + .../assert/is-big-endian/etc/cli_opts.json | 14 ++ .../assert/is-big-endian/examples/index.js | 23 +++ .../@stdlib/assert/is-big-endian/lib/ctors.js | 37 ++++ .../@stdlib/assert/is-big-endian/lib/index.js | 40 +++++ .../@stdlib/assert/is-big-endian/lib/main.js | 71 ++++++++ .../@stdlib/assert/is-big-endian/package.json | 72 ++++++++ .../assert/is-big-endian/test/test.cli.js | 162 ++++++++++++++++++ .../@stdlib/assert/is-big-endian/test/test.js | 68 ++++++++ 12 files changed, 665 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-big-endian/README.md create mode 100755 lib/node_modules/@stdlib/assert/is-big-endian/bin/cli create mode 100644 lib/node_modules/@stdlib/assert/is-big-endian/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-big-endian/docs/usage.txt create mode 100644 lib/node_modules/@stdlib/assert/is-big-endian/etc/cli_opts.json create mode 100644 lib/node_modules/@stdlib/assert/is-big-endian/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-big-endian/lib/ctors.js create mode 100644 lib/node_modules/@stdlib/assert/is-big-endian/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-big-endian/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-big-endian/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-big-endian/test/test.cli.js create mode 100644 lib/node_modules/@stdlib/assert/is-big-endian/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-big-endian/README.md b/lib/node_modules/@stdlib/assert/is-big-endian/README.md new file mode 100644 index 000000000000..5f36870eb294 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-big-endian/README.md @@ -0,0 +1,108 @@ + + +# Big Endian + +> Check if an environment is [big endian][endianness]. + +
+ +## Usage + +```javascript +var IS_BIG_ENDIAN = require( '@stdlib/assert/is-big-endian' ); +``` + +#### IS_BIG_ENDIAN + +`Boolean` indicating if an environment is [big endian][endianness]. + +```javascript +var bool = IS_BIG_ENDIAN; +// returns +``` + +
+ + + +
+ +## Examples + + + +```javascript +var IS_BIG_ENDIAN = require( '@stdlib/assert/is-big-endian' ); + +console.log( IS_BIG_ENDIAN ); +// => +``` + +
+ + + +* * * + +
+## CLI + +
+ +### Usage + +```text +Usage: is-big-endian [options] + +Options: + + -h, --help Print this message. + -V, --version Print the package version. +``` + +
+ + + +
+ +### Examples + +```bash +$ is-big-endian + +``` + +
+ + + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-big-endian/bin/cli b/lib/node_modules/@stdlib/assert/is-big-endian/bin/cli new file mode 100755 index 000000000000..f2466547cfdc --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-big-endian/bin/cli @@ -0,0 +1,50 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var readFileSync = require( '@stdlib/fs/read-file' ).sync; +var CLI = require( '@stdlib/tools/cli' ); +var isBigEndian = require( './../lib' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + // Create a command-line interface: + var cli = new CLI({ // eslint-disable-line no-unused-vars + 'pkg': require( './../package.json' ), + 'options': require( './../etc/cli_opts.json' ), + 'help': readFileSync( resolve( __dirname, '..', 'docs', 'usage.txt' ), { + 'encoding': 'utf8' + }) + }); + console.log( isBigEndian ); // eslint-disable-line no-console +} + +main(); diff --git a/lib/node_modules/@stdlib/assert/is-big-endian/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-big-endian/docs/repl.txt new file mode 100644 index 000000000000..565ea38c8536 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-big-endian/docs/repl.txt @@ -0,0 +1,12 @@ + +{{alias}} + Boolean indicating if the environment is big endian. + + Examples + -------- + > {{alias}} + + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-big-endian/docs/usage.txt b/lib/node_modules/@stdlib/assert/is-big-endian/docs/usage.txt new file mode 100644 index 000000000000..34f0d0386097 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-big-endian/docs/usage.txt @@ -0,0 +1,8 @@ + +Usage: is-big-endian [options] + +Options: + + -h, --help Print this message. + -V, --version Print the package version. + diff --git a/lib/node_modules/@stdlib/assert/is-big-endian/etc/cli_opts.json b/lib/node_modules/@stdlib/assert/is-big-endian/etc/cli_opts.json new file mode 100644 index 000000000000..f245a17e6317 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-big-endian/etc/cli_opts.json @@ -0,0 +1,14 @@ +{ + "boolean": [ + "help", + "version" + ], + "alias": { + "help": [ + "h" + ], + "version": [ + "V" + ] + } +} diff --git a/lib/node_modules/@stdlib/assert/is-big-endian/examples/index.js b/lib/node_modules/@stdlib/assert/is-big-endian/examples/index.js new file mode 100644 index 000000000000..e92589fd7885 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-big-endian/examples/index.js @@ -0,0 +1,23 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var IS_BIG_ENDIAN = require( './../lib' ); + +console.log( IS_BIG_ENDIAN ); diff --git a/lib/node_modules/@stdlib/assert/is-big-endian/lib/ctors.js b/lib/node_modules/@stdlib/assert/is-big-endian/lib/ctors.js new file mode 100644 index 000000000000..5d7a0e8c290a --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-big-endian/lib/ctors.js @@ -0,0 +1,37 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var Uint8Array = require( '@stdlib/array/uint8' ); +var Uint16Array = require( '@stdlib/array/uint16' ); + + +// MAIN // + +var ctors = { + 'uint16': Uint16Array, + 'uint8': Uint8Array +}; + + +// EXPORTS // + +module.exports = ctors; diff --git a/lib/node_modules/@stdlib/assert/is-big-endian/lib/index.js b/lib/node_modules/@stdlib/assert/is-big-endian/lib/index.js new file mode 100644 index 000000000000..fc6eec2b692e --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-big-endian/lib/index.js @@ -0,0 +1,40 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Returns a boolean indicating if an environment is big endian. +* +* @module @stdlib/assert/is-big-endian +* +* @example +* var IS_BIG_ENDIAN = require( '@stdlib/assert/is-big-endian' ); +* +* var bool = IS_BIG_ENDIAN; +* // returns +*/ + +// MODULES // + +var IS_BIG_ENDIAN = require( './main.js' ); + + +// EXPORTS // + +module.exports = IS_BIG_ENDIAN; diff --git a/lib/node_modules/@stdlib/assert/is-big-endian/lib/main.js b/lib/node_modules/@stdlib/assert/is-big-endian/lib/main.js new file mode 100644 index 000000000000..060ed95e9a29 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-big-endian/lib/main.js @@ -0,0 +1,71 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var ctors = require( './ctors.js' ); + + +// VARIABLES // + +var bool; + + +// FUNCTIONS // + +/** +* Returns a boolean indicating if an environment is big endian. +* +* @private +* @returns {boolean} boolean indicating if an environment is big endian +* +* @example +* var bool = isBigEndian(); +* // returns +*/ +function isBigEndian() { + var uint16view; + var uint8view; + + uint16view = new ctors[ 'uint16' ]( 1 ); + + /* + * Set the uint16 view to a value having distinguishable lower and higher order words. + * + * 4660 => 0x1234 => 0x12 0x34 => '00010010 00110100' => (0x12,0x34) == (18,52) + */ + uint16view[ 0 ] = 0x1234; + + // Create a uint8 view on top of the uint16 buffer: + uint8view = new ctors[ 'uint8' ]( uint16view.buffer ); + + // If big endian, the least significant byte will be last... + return ( uint8view[ 1 ] === 0x34 ); +} + + +// MAIN // + +bool = isBigEndian(); + + +// EXPORTS // + +module.exports = bool; diff --git a/lib/node_modules/@stdlib/assert/is-big-endian/package.json b/lib/node_modules/@stdlib/assert/is-big-endian/package.json new file mode 100644 index 000000000000..15df47a5a459 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-big-endian/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/assert/is-big-endian", + "version": "0.0.0", + "description": "Check if an environment is big endian.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "bin": { + "is-big-endian": "./bin/cli" + }, + "main": "./lib", + "directories": { + "bin": "./bin", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "le", + "be", + "little", + "endian", + "big", + "is", + "cli", + "byte order", + "check" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-big-endian/test/test.cli.js b/lib/node_modules/@stdlib/assert/is-big-endian/test/test.cli.js new file mode 100644 index 000000000000..5a48e9afbcad --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-big-endian/test/test.cli.js @@ -0,0 +1,162 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var exec = require( 'child_process' ).exec; +var tape = require( 'tape' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var IS_WINDOWS = require( '@stdlib/assert/is-windows' ); +var readFileSync = require( '@stdlib/fs/read-file' ).sync; + + +// VARIABLES // + +var fpath = resolve( __dirname, '..', 'bin', 'cli' ); +var opts = { + 'skip': IS_BROWSER || IS_WINDOWS +}; + + +// FIXTURES // + +var PKG_VERSION = require( './../package.json' ).version; + + +// TESTS // + +tape( 'command-line interface', function test( t ) { + t.ok( true, __filename ); + t.end(); +}); + +tape( 'when invoked with a `--help` flag, the command-line interface prints the help text to `stderr`', opts, function test( t ) { + var expected; + var cmd; + + expected = readFileSync( resolve( __dirname, '..', 'docs', 'usage.txt' ), { + 'encoding': 'utf8' + }); + cmd = [ + process.execPath, + fpath, + '--help' + ]; + + exec( cmd.join( ' ' ), done ); + + function done( error, stdout, stderr ) { + if ( error ) { + t.fail( error.message ); + } else { + t.strictEqual( stdout.toString(), '', 'does not print to `stdout`' ); + t.strictEqual( stderr.toString(), expected+'\n', 'expected value' ); + } + t.end(); + } +}); + +tape( 'when invoked with a `-h` flag, the command-line interface prints the help text to `stderr`', opts, function test( t ) { + var expected; + var cmd; + + expected = readFileSync( resolve( __dirname, '..', 'docs', 'usage.txt' ), { + 'encoding': 'utf8' + }); + cmd = [ + process.execPath, + fpath, + '-h' + ]; + + exec( cmd.join( ' ' ), done ); + + function done( error, stdout, stderr ) { + if ( error ) { + t.fail( error.message ); + } else { + t.strictEqual( stdout.toString(), '', 'does not print to `stdout`' ); + t.strictEqual( stderr.toString(), expected+'\n', 'expected value' ); + } + t.end(); + } +}); + +tape( 'when invoked with a `--version` flag, the command-line interface prints the version to `stderr`', opts, function test( t ) { + var cmd = [ + process.execPath, + fpath, + '--version' + ]; + + exec( cmd.join( ' ' ), done ); + + function done( error, stdout, stderr ) { + if ( error ) { + t.fail( error.message ); + } else { + t.strictEqual( stdout.toString(), '', 'does not print to `stdout`' ); + t.strictEqual( stderr.toString(), PKG_VERSION+'\n', 'expected value' ); + } + t.end(); + } +}); + +tape( 'when invoked with a `-V` flag, the command-line interface prints the version to `stderr`', opts, function test( t ) { + var cmd = [ + process.execPath, + fpath, + '-V' + ]; + + exec( cmd.join( ' ' ), done ); + + function done( error, stdout, stderr ) { + if ( error ) { + t.fail( error.message ); + } else { + t.strictEqual( stdout.toString(), '', 'does not print to `stdout`' ); + t.strictEqual( stderr.toString(), PKG_VERSION+'\n', 'expected value' ); + } + t.end(); + } +}); + +tape( 'the command-line interface prints either `true` or `false` to `stdout` indicating whether an environment is big endian', opts, function test( t ) { + var cmd = [ + process.execPath, + fpath + ]; + + exec( cmd.join( ' ' ), done ); + + function done( error, stdout, stderr ) { + var str; + if ( error ) { + t.fail( error.message ); + } else { + str = stdout.toString(); + t.strictEqual( str === 'true\n' || str === 'false\n', true, 'prints either `true` or `false` to `stdout`' ); + t.strictEqual( stderr.toString(), '', 'does not print to `stderr`' ); + } + t.end(); + } +}); diff --git a/lib/node_modules/@stdlib/assert/is-big-endian/test/test.js b/lib/node_modules/@stdlib/assert/is-big-endian/test/test.js new file mode 100644 index 000000000000..dabb6001c878 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-big-endian/test/test.js @@ -0,0 +1,68 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var Uint8Array = require( '@stdlib/array/uint8' ); +var IS_BIG_ENDIAN = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a boolean', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof IS_BIG_ENDIAN, 'boolean', 'main export is a boolean' ); + t.end(); +}); + +tape( 'the boolean is `true` if an environment is big endian', function test( t ) { + var IS_BIG_ENDIAN = proxyquire( './../lib/main.js', { + './ctors.js': { + 'uint8': Foo + } + }); + + t.equal( IS_BIG_ENDIAN, true, 'is big endian' ); + + t.end(); + + // Mock big endian byte order, where least significant bits come last... + function Foo() { + return new Uint8Array( [ 18, 52 ] ); + } +}); + +tape( 'the boolean is `false` if an environment is not big endian (e.g., big endian)', function test( t ) { + var IS_BIG_ENDIAN = proxyquire( './../lib/main.js', { + './ctors.js': { + 'uint8': Foo + } + }); + + t.equal( IS_BIG_ENDIAN, false, 'is not big endian' ); + t.end(); + + // Mock big endian byte order, where most significant bits are last... + function Foo() { + return new Uint8Array( [ 52, 18 ] ); + } +}); From fc792061772a5a6ad21e67e4ea27d940e35c7778 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 18:12:14 -0700 Subject: [PATCH 0190/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index e28a79f8fc63..7d361fa6edc5 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -468,6 +468,15 @@ setReadOnly( ns, 'isBetween', require( '@stdlib/assert/is-between' ) ); */ setReadOnly( ns, 'isBetweenArray', require( '@stdlib/assert/is-between-array' ) ); +/** +* @name IS_BIG_ENDIAN +* @memberof ns +* @readonly +* @type {boolean} +* @see {@link module:@stdlib/assert/is-big-endian} +*/ +setReadOnly( ns, 'IS_BIG_ENDIAN', require( '@stdlib/assert/is-big-endian' ) ); + /** * @name isBinaryString * @memberof ns From 9558fe41739e28444fa753baca89fbc563e3b7b1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 18:14:00 -0700 Subject: [PATCH 0191/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 14 +++++++++++++- .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 322200961fc1..793609a8f81f 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -1618,6 +1618,16 @@ ns.push({ ] }); +ns.push({ + 'alias': 'IS_BIG_ENDIAN', + 'path': '@stdlib/assert/is-big-endian', + 'value': require( '@stdlib/assert/is-big-endian' ), + 'type': 'boolean', + 'related': [ + '@stdlib/assert/is-little-endian' + ] +}); + ns.push({ 'alias': 'IS_BROWSER', 'path': '@stdlib/assert/is-browser', @@ -1672,7 +1682,9 @@ ns.push({ 'path': '@stdlib/assert/is-little-endian', 'value': require( '@stdlib/assert/is-little-endian' ), 'type': 'boolean', - 'related': [] + 'related': [ + '@stdlib/assert/is-big-endian' + ] }); ns.push({ diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 2f729e5b67ba..3a3d372bea0b 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1121,6 +1121,7 @@ var db = { "INT32_MIN": "INT32_MIN\n", "INT32_NUM_BYTES": "INT32_NUM_BYTES\n", "Int32Array": "arr = new Int32Array()\n", + "IS_BIG_ENDIAN": "IS_BIG_ENDIAN\n", "IS_BROWSER": "IS_BROWSER\n", "IS_DARWIN": "IS_DARWIN\n", "IS_ELECTRON": "IS_ELECTRON\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index caa168e4275c..61744a6ca1c8 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1121,12 +1121,13 @@ var db = { "INT32_MIN": "\nINT32_MIN\n Minimum signed 32-bit integer.\n\n The minimum signed 32-bit integer is given by `-(2^31)`.\n\n Examples\n --------\n > INT32_MIN\n -2147483648\n\n See Also\n --------\n INT32_MAX\n", "INT32_NUM_BYTES": "\nINT32_NUM_BYTES\n Size (in bytes) of a 32-bit signed integer.\n\n Examples\n --------\n > INT32_NUM_BYTES\n 4\n\n See Also\n --------\n INT16_NUM_BYTES, INT8_NUM_BYTES, UINT32_NUM_BYTES\n", "Int32Array": "\nInt32Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 32-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int32Array()\n \n\n\nInt32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int16Array( [ 5, 5, 5 ] );\n > var arr2 = new Int32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Int32Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int32Array.BYTES_PER_ELEMENT\n 4\n\n\nInt32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int32Array.name\n Int32Array\n\n\nInt32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.buffer\n \n\n\nInt32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.byteLength\n 20\n\n\nInt32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "IS_BIG_ENDIAN": "\nIS_BIG_ENDIAN\n Boolean indicating if the environment is big endian.\n\n Examples\n --------\n > IS_BIG_ENDIAN\n \n\n See Also\n --------\n IS_LITTLE_ENDIAN\n", "IS_BROWSER": "\nIS_BROWSER\n Boolean indicating if the runtime is a web browser.\n\n Examples\n --------\n > IS_BROWSER\n \n\n", "IS_DARWIN": "\nIS_DARWIN\n Boolean indicating if the current process is running on Darwin.\n\n Examples\n --------\n > IS_DARWIN\n \n\n", "IS_ELECTRON": "\nIS_ELECTRON\n Boolean indicating if the runtime is Electron.\n\n Examples\n --------\n > IS_ELECTRON\n \n\n See Also\n --------\n IS_ELECTRON_MAIN, IS_ELECTRON_RENDERER\n", "IS_ELECTRON_MAIN": "\nIS_ELECTRON_MAIN\n Boolean indicating if the runtime is the main Electron process.\n\n Examples\n --------\n > IS_ELECTRON_MAIN\n \n\n See Also\n --------\n IS_ELECTRON, IS_ELECTRON_RENDERER\n", "IS_ELECTRON_RENDERER": "\nIS_ELECTRON_RENDERER\n Boolean indicating if the runtime is the Electron renderer process.\n\n Examples\n --------\n > IS_ELECTRON_RENDERER\n \n\n See Also\n --------\n IS_ELECTRON, IS_ELECTRON_MAIN\n", - "IS_LITTLE_ENDIAN": "\nIS_LITTLE_ENDIAN\n Boolean indicating if the environment is little endian.\n\n Examples\n --------\n > IS_LITTLE_ENDIAN\n \n\n", + "IS_LITTLE_ENDIAN": "\nIS_LITTLE_ENDIAN\n Boolean indicating if the environment is little endian.\n\n Examples\n --------\n > IS_LITTLE_ENDIAN\n \n\n See Also\n --------\n IS_BIG_ENDIAN\n", "IS_NODE": "\nIS_NODE\n Boolean indicating if the runtime is Node.js.\n\n Examples\n --------\n > IS_NODE\n \n\n", "IS_WEB_WORKER": "\nIS_WEB_WORKER\n Boolean indicating if the runtime is a web worker.\n\n Examples\n --------\n > IS_WEB_WORKER\n \n\n", "IS_WINDOWS": "\nIS_WINDOWS\n Boolean indicating if the current process is running on Windows.\n\n Examples\n --------\n > IS_WINDOWS\n \n\n", From 02a9b6a608f75ae7d7259cd27578c3e3e11f4e8c Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 23:47:18 -0700 Subject: [PATCH 0192/1062] Fix example --- lib/node_modules/@stdlib/assert/has-property/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/assert/has-property/README.md b/lib/node_modules/@stdlib/assert/has-property/README.md index 240087a07370..1914bf73dd13 100644 --- a/lib/node_modules/@stdlib/assert/has-property/README.md +++ b/lib/node_modules/@stdlib/assert/has-property/README.md @@ -108,7 +108,7 @@ var hasProp = require( '@stdlib/assert/has-property' ); var bool = hasProp( { 'a': 'b' }, 'a' ); // returns true -bool = hasProp( {}, 'hasProperty' ); +bool = hasProp( {}, 'hasOwnProperty' ); // returns true bool = hasProp( { 'a': 'b' }, 'c' ); From e50b72780c17d3c0b4a800e179d1c2c0f50e3f8e Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 23:51:37 -0700 Subject: [PATCH 0193/1062] Add assertion utility to test if an object property is inherited --- .../assert/is-inherited-property/README.md | 144 ++++++++++++++++ .../benchmark/benchmark.js | 54 ++++++ .../is-inherited-property/docs/repl.txt | 34 ++++ .../is-inherited-property/examples/index.js | 55 +++++++ .../assert/is-inherited-property/lib/index.js | 50 ++++++ .../assert/is-inherited-property/lib/main.js | 72 ++++++++ .../assert/is-inherited-property/package.json | 72 ++++++++ .../assert/is-inherited-property/test/test.js | 155 ++++++++++++++++++ 8 files changed, 636 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-inherited-property/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-inherited-property/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-inherited-property/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-inherited-property/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-inherited-property/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-inherited-property/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-inherited-property/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-inherited-property/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-inherited-property/README.md b/lib/node_modules/@stdlib/assert/is-inherited-property/README.md new file mode 100644 index 000000000000..4ebb2722406c --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-inherited-property/README.md @@ -0,0 +1,144 @@ + + +# isInheritedProperty + +> Test if an object has an inherited property. + +
+ +## Usage + +```javascript +var isInheritedProperty = require( '@stdlib/assert/is-inherited-property' ); +``` + +#### isInheritedProperty( value, property ) + +Returns a `boolean` indicating if a `value` has an inherited `property`. + +```javascript +var obj = { + 'beep': 'boop' +}; + +var bool = isInheritedProperty( obj, 'beep' ); +// returns false + +bool = isInheritedProperty( obj, 'hasOwnProperty' ); +// returns true + +bool = isInheritedProperty( obj, 'bap' ); +// returns false +``` + +
+ + + +
+ +## Notes + +- The function does **not** throw when provided `null` or `undefined`. Instead, the function returns `false`. + + ```javascript + var bool = isInheritedProperty( null, 'a' ); + // returns false + + bool = isInheritedProperty( void 0, 'a' ); + // returns false + ``` + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isInheritedProperty( 'beep', 'toString' ); + // returns true + ``` + +- Non-symbol property arguments are coerced to `strings`. + + ```javascript + function Foo() { + return this; + } + + Foo.prototype.null = true; + Foo.prototype[ '[object Object]' ] = true; + + var obj = new Foo(); + + var bool = isInheritedProperty( obj, null ); + // returns true + + bool = isInheritedProperty( obj, {} ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isInheritedProperty = require( '@stdlib/assert/is-inherited-property' ); + +var bool = isInheritedProperty( {}, 'hasOwnProperty' ); +// returns true + +bool = isInheritedProperty( { 'a': 'b' }, 'a' ); +// returns false + +bool = isInheritedProperty( { 'a': 'b' }, 'c' ); +// returns false + +bool = isInheritedProperty( { 'a': 'b' }, null ); +// returns false + +bool = isInheritedProperty( null, 'a' ); +// returns false + +bool = isInheritedProperty( void 0, 'a' ); +// returns false + +bool = isInheritedProperty( { 'null': false }, null ); +// returns false + +bool = isInheritedProperty( { '[object Object]': false }, {} ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-inherited-property/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-inherited-property/benchmark/benchmark.js new file mode 100644 index 000000000000..6a97de2d917e --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-inherited-property/benchmark/benchmark.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var fromCodePoint = require( '@stdlib/string/from-code-point' ); +var pkg = require( './../package.json' ).name; +var isInheritedProperty = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var obj; + var key; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + key = fromCodePoint( 97+(i%26) ); + obj = {}; + obj[ key ] = i; + bool = isInheritedProperty( obj, key ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-inherited-property/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-inherited-property/docs/repl.txt new file mode 100644 index 000000000000..d2f67f3b2fbb --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-inherited-property/docs/repl.txt @@ -0,0 +1,34 @@ + +{{alias}}( value, property ) + Tests if an object has an inherited property. + + Value arguments other than `null` or `undefined` are coerced to objects. + + Non-symbol property arguments are coerced to strings. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object has an inherited property. + + Examples + -------- + > var beep = { 'boop': true }; + > var bool = {{alias}}( beep, 'boop' ) + false + > bool = {{alias}}( beep, 'toString' ) + true + > bool = {{alias}}( beep, 'bop' ) + false + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-inherited-property/examples/index.js b/lib/node_modules/@stdlib/assert/is-inherited-property/examples/index.js new file mode 100644 index 000000000000..c886a7a163da --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-inherited-property/examples/index.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isInheritedProperty = require( './../lib' ); + +var bool = isInheritedProperty( {}, 'hasOwnProperty' ); +console.log( bool ); +// => true + +bool = isInheritedProperty( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => false + +bool = isInheritedProperty( { 'a': 'b' }, 'c' ); +console.log( bool ); +// => false + +bool = isInheritedProperty( { 'a': 'b' }, null ); +console.log( bool ); +// => false + +bool = isInheritedProperty( null, 'a' ); +console.log( bool ); +// => false + +bool = isInheritedProperty( void 0, 'a' ); +console.log( bool ); +// => false + +bool = isInheritedProperty( { 'null': false }, null ); +console.log( bool ); +// => false + +bool = isInheritedProperty( { '[object Object]': false }, {} ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-inherited-property/lib/index.js b/lib/node_modules/@stdlib/assert/is-inherited-property/lib/index.js new file mode 100644 index 000000000000..c8d4be2d8b49 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-inherited-property/lib/index.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object has an inherited property. +* +* @module @stdlib/assert/is-inherited-property +* +* @example +* var isInheritedProperty = require( '@stdlib/assert/is-inherited-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* var bool = isInheritedProperty( obj, 'toString' ); +* // returns true +* +* bool = isInheritedProperty( obj, 'boop' ); +* // returns false +* +* bool = isInheritedProperty( obj, 'bop' ); +* // returns false +*/ + +// MODULES // + +var isInheritedProperty = require( './main.js' ); + + +// EXPORTS // + +module.exports = isInheritedProperty; diff --git a/lib/node_modules/@stdlib/assert/is-inherited-property/lib/main.js b/lib/node_modules/@stdlib/assert/is-inherited-property/lib/main.js new file mode 100644 index 000000000000..8f11e0775be6 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-inherited-property/lib/main.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); + + +// MAIN // + +/** +* Tests if an object has an inherited property. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object has an inherited property +* +* @example +* var obj = { +* 'boop': true +* }; +* +* var bool = isInheritedProperty( obj, 'toString' ); +* // returns true +* +* @example +* var obj = { +* 'boop': true +* }; +* +* var bool = isInheritedProperty( obj, 'boop' ); +* // returns false +* +* @example +* var obj = { +* 'boop': true +* }; +* +* var bool = isInheritedProperty( obj, 'bap' ); +* // returns false +*/ +function isInheritedProperty( value, property ) { + if ( value === void 0 || value === null || hasOwnProp( value, property ) ) { + return false; + } + if ( typeof property === 'symbol' ) { + return property in Object( value ); + } + return ( String( property ) in Object( value ) ); +} + + +// EXPORTS // + +module.exports = isInheritedProperty; diff --git a/lib/node_modules/@stdlib/assert/is-inherited-property/package.json b/lib/node_modules/@stdlib/assert/is-inherited-property/package.json new file mode 100644 index 000000000000..f63732eb3bf7 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-inherited-property/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/assert/is-inherited-property", + "version": "0.0.0", + "description": "Test if an object has an inherited property.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "has", + "inherited", + "in", + "prototype", + "proto", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-inherited-property/test/test.js b/lib/node_modules/@stdlib/assert/is-inherited-property/test/test.js new file mode 100644 index 000000000000..d2e572a88e76 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-inherited-property/test/test.js @@ -0,0 +1,155 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var isInheritedProperty = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof isInheritedProperty, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isInheritedProperty( null, 'beep' ); + t.strictEqual( bool, false, 'returns false when provided null' ); + + bool = isInheritedProperty( void 0, 'beep' ); + t.strictEqual( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `true` if an object has an inherited property', function test( t ) { + var bool; + var obj; + + function Foo() { + return this; + } + + Foo.prototype.bar = true; + + obj = new Foo(); + + bool = isInheritedProperty( obj, 'bar' ); + t.strictEqual( bool, true, 'returns true' ); + + bool = isInheritedProperty( {}, 'hasOwnProperty' ); + t.strictEqual( bool, true, 'returns true' ); + + bool = isInheritedProperty( {}, 'toString' ); + t.strictEqual( bool, true, 'returns true' ); + + bool = isInheritedProperty( {}, 'constructor' ); + t.strictEqual( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function returns `false` if an object has an own property', function test( t ) { + var bool; + + bool = isInheritedProperty( { 'a': 'b' }, 'a' ); + t.strictEqual( bool, false, 'returns false' ); + + bool = isInheritedProperty( [ 1, 2, 3 ], '1' ); + t.strictEqual( bool, false, 'returns false' ); + + bool = isInheritedProperty( [ 1, 2, 3 ], 1 ); + t.strictEqual( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `false` if an object does not have a specified property', function test( t ) { + var bool; + + bool = isInheritedProperty( { 'a': 'b' }, 'c' ); + t.strictEqual( bool, false, 'returns false' ); + + bool = isInheritedProperty( { 'a': 'b' }, null ); + t.strictEqual( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isInheritedProperty( 'beep', 'toString' ); + t.strictEqual( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'non-symbol property values are coerced to strings', function test( t ) { + var bool; + var obj; + + function Foo() { + return this; + } + + Foo.prototype.null = true; + Foo.prototype[ '[object Object]' ] = true; + + obj = new Foo(); + + bool = isInheritedProperty( obj, null ); + t.strictEqual( bool, true, 'returns true' ); + + bool = isInheritedProperty( obj, {} ); + t.strictEqual( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function supports symbols', function test( t ) { + var bool; + var obj; + var s; + + function Foo() { + return this; + } + + if ( hasSymbolSupport() ) { + s = Symbol( 'foo' ); + Foo.prototype[ s ] = true; + obj = new Foo(); + bool = isInheritedProperty( obj, s ); + t.strictEqual( bool, true, 'returns true' ); + } else { + t.pass( 'environment does not support symbols' ); + } + t.end(); +}); From d0d143792102b43e89929737757f02d4afd2ec79 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 23:53:47 -0700 Subject: [PATCH 0194/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 7d361fa6edc5..6c8fa7aee4ba 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -900,6 +900,15 @@ setReadOnly( ns, 'isHexString', require( '@stdlib/assert/is-hex-string' ) ); */ setReadOnly( ns, 'isInfinite', require( '@stdlib/assert/is-infinite' ) ); +/** +* @name isInheritedProperty +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-inherited-property} +*/ +setReadOnly( ns, 'isInheritedProperty', require( '@stdlib/assert/is-inherited-property' ) ); + /** * @name isInt8Array * @memberof ns From c6b98cbc6fb29c3dececbbeb7decc542129e51ea Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 6 Sep 2018 23:54:21 -0700 Subject: [PATCH 0195/1062] Update namespace --- lib/node_modules/@stdlib/namespace/lib/namespace/i.js | 11 +++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 1 + 3 files changed, 13 insertions(+) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 793609a8f81f..b75f5afc8d7f 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -2296,6 +2296,17 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isInheritedProperty', + 'path': '@stdlib/assert/is-inherited-property', + 'value': require( '@stdlib/assert/is-inherited-property' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/has-own-property', + '@stdlib/assert/has-property' + ] +}); + ns.push({ 'alias': 'isInt8Array', 'path': '@stdlib/assert/is-int8array', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 3a3d372bea0b..c90e9fa6514f 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1187,6 +1187,7 @@ var db = { "isGeneratorObjectLike": "obj = {\n 'next': function noop() {},\n 'return': function noop() {},\n 'throw': function noop() {}\n};\nbool = isGeneratorObjectLike( obj )\nbool = isGeneratorObjectLike( {} )\nbool = isGeneratorObjectLike( null )\n", "isHexString": "bool = isHexString( '0123456789abcdefABCDEF' )\nbool = isHexString( '0xffffff' )\nbool = isHexString( 'x' )\nbool = isHexString( '' )\n", "isInfinite": "bool = isInfinite( 1.0/0.0 )\nbool = isInfinite( new Number( -1.0/0.0 ) )\nbool = isInfinite( 5.0 )\nbool = isInfinite( '1.0/0.0' )\n", + "isInheritedProperty": "beep = { 'boop': true };\nbool = isInheritedProperty( beep, 'boop' )\nbool = isInheritedProperty( beep, 'toString' )\nbool = isInheritedProperty( beep, 'bop' )\n", "isInt8Array": "bool = isInt8Array( new Int8Array( 10 ) )\nbool = isInt8Array( [] )\n", "isInt16Array": "bool = isInt16Array( new Int16Array( 10 ) )\nbool = isInt16Array( [] )\n", "isInt32Array": "bool = isInt32Array( new Int32Array( 10 ) )\nbool = isInt32Array( [] )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 61744a6ca1c8..f52bfd939802 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1187,6 +1187,7 @@ var db = { "isGeneratorObjectLike": "\nisGeneratorObjectLike( value )\n Tests if a value is generator object-like.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is generator object-like.\n\n Examples\n --------\n > var obj = {\n ... 'next': function noop() {},\n ... 'return': function noop() {},\n ... 'throw': function noop() {}\n ... };\n > var bool = isGeneratorObjectLike( obj )\n true\n > bool = isGeneratorObjectLike( {} )\n false\n > bool = isGeneratorObjectLike( null )\n false\n\n See Also\n --------\n hasGeneratorSupport, isGeneratorObject\n", "isHexString": "\nisHexString( str )\n Tests whether a string contains only hexadecimal digits.\n\n The function does not recognize `x` (as in the standard `0x` prefix).\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only hexadecimal digits.\n\n Examples\n --------\n > var bool = isHexString( '0123456789abcdefABCDEF' )\n true\n > bool = isHexString( '0xffffff' )\n false\n > bool = isHexString( 'x' )\n false\n > bool = isHexString( '' )\n false\n\n See Also\n --------\n isString\n", "isInfinite": "\nisInfinite( value )\n Tests if a value is an infinite number.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is an infinite number.\n\n Examples\n --------\n > var bool = isInfinite( 1.0/0.0 )\n true\n > bool = isInfinite( new Number( -1.0/0.0 ) )\n true\n > bool = isInfinite( 5.0 )\n false\n > bool = isInfinite( '1.0/0.0' )\n false\n\n\nisInfinite.isPrimitive( value )\n Tests if a value is a number primitive having an infinite value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a number primitive having an\n infinite value.\n\n Examples\n --------\n > var bool = isInfinite.isPrimitive( -1.0/0.0 )\n true\n > bool = isInfinite.isPrimitive( new Number( -1.0/0.0 ) )\n false\n\n\nisInfinite.isObject( value )\n Tests if a value is a number object having an infinite value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a number object having an infinite\n value.\n\n Examples\n --------\n > var bool = isInfinite.isObject( 1.0/0.0 )\n false\n > bool = isInfinite.isObject( new Number( 1.0/0.0 ) )\n true\n\n See Also\n --------\n isFinite\n", + "isInheritedProperty": "\nisInheritedProperty( value, property )\n Tests if an object has an inherited property.\n\n Value arguments other than `null` or `undefined` are coerced to objects.\n\n Non-symbol property arguments are coerced to strings.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object has an inherited property.\n\n Examples\n --------\n > var beep = { 'boop': true };\n > var bool = isInheritedProperty( beep, 'boop' )\n false\n > bool = isInheritedProperty( beep, 'toString' )\n true\n > bool = isInheritedProperty( beep, 'bop' )\n false\n\n See Also\n --------\n hasOwnProp, hasProp\n", "isInt8Array": "\nisInt8Array( value )\n Tests if a value is an Int8Array.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an Int8Array.\n\n Examples\n --------\n > var bool = isInt8Array( new Int8Array( 10 ) )\n true\n > bool = isInt8Array( [] )\n false\n\n See Also\n --------\n isInt16Array, isInt32Array\n", "isInt16Array": "\nisInt16Array( value )\n Tests if a value is an Int16Array.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an Int16Array.\n\n Examples\n --------\n > var bool = isInt16Array( new Int16Array( 10 ) )\n true\n > bool = isInt16Array( [] )\n false\n\n See Also\n --------\n isInt32Array, isInt8Array\n", "isInt32Array": "\nisInt32Array( value )\n Tests if a value is an Int32Array.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an Int32Array.\n\n Examples\n --------\n > var bool = isInt32Array( new Int32Array( 10 ) )\n true\n > bool = isInt32Array( [] )\n false\n\n See Also\n --------\n isInt16Array, isInt8Array\n", From b5b9b305bc8dcc7aed6a7714660b300fc684cb63 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 00:38:04 -0700 Subject: [PATCH 0196/1062] Add assertion utility to test if an object property has a data descriptor --- .../@stdlib/assert/is-data-property/README.md | 151 ++++++++++++++++++ .../is-data-property/benchmark/benchmark.js | 51 ++++++ .../assert/is-data-property/docs/repl.txt | 33 ++++ .../assert/is-data-property/examples/index.js | 59 +++++++ .../assert/is-data-property/lib/index.js | 58 +++++++ .../assert/is-data-property/lib/main.js | 66 ++++++++ .../assert/is-data-property/package.json | 72 +++++++++ .../assert/is-data-property/test/test.js | 144 +++++++++++++++++ 8 files changed, 634 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-data-property/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-data-property/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-data-property/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-data-property/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-data-property/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-data-property/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-data-property/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-data-property/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-data-property/README.md b/lib/node_modules/@stdlib/assert/is-data-property/README.md new file mode 100644 index 000000000000..052193faf0d1 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-data-property/README.md @@ -0,0 +1,151 @@ + + +# isDataProperty + +> Test if an object's own property has a data descriptor. + +
+ +## Usage + +```javascript +var isDataProperty = require( '@stdlib/assert/is-data-property' ); +``` + +#### isDataProperty( value, property ) + +Returns a `boolean` indicating if a `value` has a data `property`. + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = { + 'foo': 'bar' +}; + +defineProperty( obj, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); + +defineProperty( obj, 'accessor', { + 'configurable': false, + 'enumerable': false, + 'get': function getter() { + return obj.foo; + }, + 'set': function setter( v ) { + obj.foo = v; + } +}); + +var bool = isDataProperty( obj, 'foo' ); +// returns true + +bool = isDataProperty( obj, 'beep' ); +// returns true + +bool = isDataProperty( obj, 'accessor' ); +// returns false +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isDataProperty( 'beep', 'length' ); + // returns true + ``` + +- Non-symbol property arguments are coerced to `strings`. + + ```javascript + var obj = { + 'null': 'foo' + }; + + var bool = isDataProperty( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isDataProperty = require( '@stdlib/assert/is-data-property' ); + +var bool = isDataProperty( [ 'a' ], 'length' ); +// returns true + +bool = isDataProperty( { 'a': 'b' }, 'a' ); +// returns true + +bool = isDataProperty( [ 'a' ], 0 ); +// returns true + +bool = isDataProperty( { 'null': false }, null ); +// returns true + +bool = isDataProperty( { '[object Object]': false }, {} ); +// returns true + +bool = isDataProperty( {}, 'toString' ); +// returns false + +bool = isDataProperty( {}, 'hasOwnProperty' ); +// returns false + +bool = isDataProperty( null, 'a' ); +// returns false + +bool = isDataProperty( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-data-property/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-data-property/benchmark/benchmark.js new file mode 100644 index 000000000000..adb4adfd8db6 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-data-property/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isDataProperty = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isDataProperty( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-data-property/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-data-property/docs/repl.txt new file mode 100644 index 000000000000..10cd8e397d3d --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-data-property/docs/repl.txt @@ -0,0 +1,33 @@ + +{{alias}}( value, property ) + Tests if an object's own property has a data descriptor. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own property has a data descriptor. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = false; + > desc.get = function getter() { return 'beep'; }; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + true + > bool = {{alias}}( obj, 'beep' ) + false + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-data-property/examples/index.js b/lib/node_modules/@stdlib/assert/is-data-property/examples/index.js new file mode 100644 index 000000000000..a5638e110719 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-data-property/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isDataProperty = require( './../lib' ); + +var bool = isDataProperty( [ 'a' ], 'length' ); +console.log( bool ); +// => true + +bool = isDataProperty( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => true + +bool = isDataProperty( [ 'a' ], 0 ); +console.log( bool ); +// => true + +bool = isDataProperty( { 'null': false }, null ); +console.log( bool ); +// => true + +bool = isDataProperty( { '[object Object]': false }, {} ); +console.log( bool ); +// => true + +bool = isDataProperty( {}, 'toString' ); +console.log( bool ); +// => false + +bool = isDataProperty( {}, 'hasOwnProperty' ); +console.log( bool ); +// => false + +bool = isDataProperty( null, 'a' ); +console.log( bool ); +// => false + +bool = isDataProperty( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-data-property/lib/index.js b/lib/node_modules/@stdlib/assert/is-data-property/lib/index.js new file mode 100644 index 000000000000..46fada10b48f --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-data-property/lib/index.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own property has a data descriptor. +* +* @module @stdlib/assert/is-data-property +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isDataProperty = require( '@stdlib/assert/is-data-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* function getter() { +* return 'beep'; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'get': getter +* }); +* +* var bool = isDataProperty( obj, 'boop' ); +* // returns true +* +* bool = isDataProperty( obj, 'beep' ); +* // returns false +*/ + +// MODULES // + +var isDataProperty = require( './main.js' ); + + +// EXPORTS // + +module.exports = isDataProperty; diff --git a/lib/node_modules/@stdlib/assert/is-data-property/lib/main.js b/lib/node_modules/@stdlib/assert/is-data-property/lib/main.js new file mode 100644 index 000000000000..30fa3d8ec730 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-data-property/lib/main.js @@ -0,0 +1,66 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptor = require( '@stdlib/utils/property-descriptor' ); + + +// MAIN // + +/** +* Tests if an object's own property has a data descriptor. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property has a data descriptor +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* function getter() { +* return 'beep'; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'get': getter +* }); +* +* var bool = isDataProperty( obj, 'boop' ); +* // returns true +* +* bool = isDataProperty( obj, 'beep' ); +* // returns false +*/ +function isDataProperty( value, property ) { + var desc = propertyDescriptor( value, property ); + return ( desc !== null && typeof desc.writable === 'boolean' ); +} + + +// EXPORTS // + +module.exports = isDataProperty; diff --git a/lib/node_modules/@stdlib/assert/is-data-property/package.json b/lib/node_modules/@stdlib/assert/is-data-property/package.json new file mode 100644 index 000000000000..f489819aa52b --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-data-property/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/assert/is-data-property", + "version": "0.0.0", + "description": "Test if an object's own property has a data descriptor.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "data", + "descriptor", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-data-property/test/test.js b/lib/node_modules/@stdlib/assert/is-data-property/test/test.js new file mode 100644 index 000000000000..87ec6cb256a5 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-data-property/test/test.js @@ -0,0 +1,144 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isDataProperty = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isDataProperty, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if an object property has a data descriptor', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isDataProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isDataProperty( [ 1, 2, 3 ], '1' ); + t.equal( bool, true, 'returns true' ); + + bool = isDataProperty( [ 1, 2, 3 ], 1 ); + t.equal( bool, true, 'returns true' ); + + bool = isDataProperty( new Foo(), 'bar' ); + t.equal( bool, true, 'returns true' ); + + bool = isDataProperty( [ 'a' ], 'length' ); + t.equal( bool, true, 'returns true' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + + bool = isDataProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isDataProperty( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isDataProperty( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a property having a data descriptor', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + bool = isDataProperty( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'get': getter, + 'set': setter + }); + + bool = isDataProperty( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + t.end(); + + function getter() { + // No-op... + } + + function setter() { + // No-op... + } +}); + +tape( 'the function returns `false` if provided an inherited property', function test( t ) { + var bool; + + bool = isDataProperty( {}, 'hasOwnProperty' ); + t.equal( bool, false, 'returns false' ); + + bool = isDataProperty( {}, 'toString' ); + t.equal( bool, false, 'returns false' ); + + bool = isDataProperty( {}, 'constructor' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isDataProperty( 'beep', 'length' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); From 3a726579cf120b08471f9efcf1e9288bdf24a862 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 00:40:34 -0700 Subject: [PATCH 0197/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 6c8fa7aee4ba..6dc3c05c722a 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -666,6 +666,15 @@ setReadOnly( ns, 'isConfigurablePropertyIn', require( '@stdlib/assert/is-configu */ setReadOnly( ns, 'IS_DARWIN', require( '@stdlib/assert/is-darwin' ) ); +/** +* @name isDataProperty +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-data-property} +*/ +setReadOnly( ns, 'isDataProperty', require( '@stdlib/assert/is-data-property' ) ); + /** * @name isDateObject * @memberof ns From 84145fddf8c7103babb48b27cf6d6c5b0a7a8248 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 00:40:52 -0700 Subject: [PATCH 0198/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 12 ++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 11 ++++++----- lib/node_modules/@stdlib/repl/help/lib/db.js | 19 ++++++++++--------- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index b75f5afc8d7f..870724d1dc4b 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -2058,6 +2058,18 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isDataProperty', + 'path': '@stdlib/assert/is-data-property', + 'value': require( '@stdlib/assert/is-data-property' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/has-own-property', + '@stdlib/assert/is-accessor-property', + '@stdlib/assert/is-data-property-in' + ] +}); + ns.push({ 'alias': 'isDateObject', 'path': '@stdlib/assert/is-date-object', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index c90e9fa6514f..16e4be33a1ec 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -787,7 +787,7 @@ var db = { "base.zeta": "y = base.zeta( 1.1 )\ny = base.zeta( -4.0 )\ny = base.zeta( 70.0 )\ny = base.zeta( 0.5 )\ny = base.zeta( NaN )\n\n// Evaluate at a pole:\ny = base.zeta( 1.0 )\n", "bifurcate": "collection = [ 'beep', 'boop', 'foo', 'bar' ];\nf = [ true, true, false, true ];\nout = bifurcate( collection, f )\nf = [ 1, 1, 0, 1 ];\nout = bifurcate( collection, f )\n\n// Output group results as indices:\nf = [ true, true, false, true ];\nopts = { 'returns': 'indices' };\nout = bifurcate( collection, opts, f )\n\n// Output group results as index-element pairs:\nopts = { 'returns': '*' };\nout = bifurcate( collection, opts, f )\n", "bifurcateBy": "function predicate( v ) { v[ 0 ] === 'b' };\ncollection = [ 'beep', 'boop', 'foo', 'bar' ];\nout = bifurcateBy( collection, predicate )\n\n// Output group results as indices:\nopts = { 'returns': 'indices' };\nout = bifurcateBy( collection, opts, predicate )\n\n// Output group results as index-value pairs:\nopts = { 'returns': '*' };\nout = bifurcateBy( collection, opts, predicate )\n", - "bifurcateByAsync": "\n// Basic usage:\nfunction predicate( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\narr = [ 3000, 2500, 1000 ];\nbifurcateByAsync( arr, predicate, done )\n\n// Output group results as indices:\nopts = { 'returns': 'indices' };\nbifurcateByAsync( arr, opts, predicate, done )\n\n// Output group results as index-value pairs:\nopts = { 'returns': '*' };\nbifurcateByAsync( arr, opts, predicate done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\nbifurcateByAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\nopts = { 'series': true };\narr = [ 3000, 2500, 1000 ];\nbifurcateByAsync( arr, opts, predicate, done )\n", + "bifurcateByAsync": "\n// Basic usage:\nfunction predicate( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\narr = [ 3000, 2500, 1000 ];\nbifurcateByAsync( arr, predicate, done )\n\n// Output group results as indices:\nopts = { 'returns': 'indices' };\nbifurcateByAsync( arr, opts, predicate, done )\n\n// Output group results as index-value pairs:\nopts = { 'returns': '*' };\nbifurcateByAsync( arr, opts, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\nbifurcateByAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\nopts = { 'series': true };\narr = [ 3000, 2500, 1000 ];\nbifurcateByAsync( arr, opts, predicate, done )\n", "bifurcateIn": "function Foo() { this.a = 'beep'; this.b = 'boop'; return this; };\nFoo.prototype = Object.create( null );\nFoo.prototype.c = 'foo';\nFoo.prototype.d = 'bar';\nobj = new Foo();\nfunction predicate( v ) { v[ 0 ] === 'b' };\nout = bifurcateIn( obj, predicate )\n\n// Output group results as keys:\nopts = { 'returns': 'keys' };\nout = bifurcateIn( obj, opts, predicate )\n\n// Output group results as key-value pairs:\nopts = { 'returns': '*' };\nout = bifurcateIn( obj, opts, predicate )\n", "bifurcateOwn": "function predicate( v ) { v[ 0 ] === 'b' };\nobj = { 'a': 'beep', 'b': 'boop', 'c': 'foo', 'd': 'bar' };\nout = bifurcateOwn( obj, predicate )\n\n// Output group results as keys:\nopts = { 'returns': 'keys' };\nout = bifurcateOwn( obj, opts, predicate )\n\n// Output group results as key-value pairs:\nopts = { 'returns': '*' };\nout = bifurcateOwn( obj, opts, predicate )\n", "Buffer": "b = new Buffer( 4 )\n", @@ -801,9 +801,9 @@ var db = { "CircularBuffer": "b = CircularBuffer( 3 );\nb.push( 'foo' );\nb.push( 'bar' );\nb.push( 'beep' );\nb.length\nb.count\nb.push( 'boop' )\n", "CMUDICT": "data = CMUDICT();\ndict = data.dict\nphones = data.phones\nsymbols = data.symbols\nvp = data.vp\n", "complex": "z = complex( 5.0, 3.0, 'float64' )\nz = complex( 5.0, 3.0, 'float32' )\n", - "Complex64": "z = Complex64( 5.0, 3.0 )\nz.re\nz.im\n", + "Complex64": "z = new Complex64( 5.0, 3.0 )\nz.re\nz.im\n", "COMPLEX64_NUM_BYTES": "COMPLEX64_NUM_BYTES\n", - "Complex128": "z = Complex128( 5.0, 3.0 )\nz.re\nz.im\n", + "Complex128": "z = new Complex128( 5.0, 3.0 )\nz.re\nz.im\n", "COMPLEX128_NUM_BYTES": "COMPLEX128_NUM_BYTES\n", "compose": "function a( x ) {\n return 2 * x;\n}\nfunction b( x ) {\n return x + 3;\n}\nfunction c( x ) {\n return x / 5;\n}\nf = compose( c, b, a );\nz = f( 6 )\n", "composeAsync": "function a( x, next ) {\n setTimeout( onTimeout, 0 );\n function onTimeout() {\n next( null, 2*x );\n }\n};\nfunction b( x, next ) {\n setTimeout( onTimeout, 0 );\n function onTimeout() {\n next( null, x+3 );\n }\n};\nfunction c( x, next ) {\n setTimeout( onTimeout, 0 );\n function onTimeout() {\n next( null, x/5 );\n }\n};\nf = composeAsync( c, b, a );\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\nf( 6, done )\n", @@ -951,7 +951,7 @@ var db = { "GLAISHER": "GLAISHER\n", "group": "collection = [ 'beep', 'boop', 'foo', 'bar' ];\ngroups = [ 'b', 'b', 'f', 'b' ];\nout = group( collection, groups )\ngroups = [ 1, 1, 2, 1 ];\nout = group( collection, groups )\n\n// Output group results as indices:\ngroups = [ 'b', 'b', 'f', 'b' ];\nopts = { 'returns': 'indices' };\nout = group( collection, opts, groups )\n\n// Output group results as index-element pairs:\nopts = { 'returns': '*' };\nout = group( collection, opts, groups )\n", "groupBy": "function indicator( v ) {\n if ( v[ 0 ] === 'b' ) {\n return 'b';\n }\n return 'other';\n};\ncollection = [ 'beep', 'boop', 'foo', 'bar' ];\nout = groupBy( collection, indicator )\n\n// Output group results as indices:\nopts = { 'returns': 'indices' };\nout = groupBy( collection, opts, indicator )\n\n// Output group results as index-value pairs:\nopts = { 'returns': '*' };\nout = groupBy( collection, opts, indicator )\n", - "groupByAsync": "\n// Basic usage:\nfunction indicator( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\narr = [ 3000, 2500, 1000 ];\ngroupByAsync( arr, indicator, done )\n\n// Output group results as indices:\nopts = { 'returns': 'indices' };\ngroupByAsync( arr, opts, indicator, done )\n\n// Output group results as index-value pairs:\nopts = { 'returns': '*' };\ngroupByAsync( arr, opts, indicator done )\n\n// Limit number of concurrent invocations:\nfunction indicator( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\ngroupByAsync( arr, opts, indicator, done )\n\n// Process sequentially:\nfunction indicator( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\nopts = { 'series': true };\narr = [ 3000, 2500, 1000 ];\ngroupByAsync( arr, opts, indicator, done )\n", + "groupByAsync": "\n// Basic usage:\nfunction indicator( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\narr = [ 3000, 2500, 1000 ];\ngroupByAsync( arr, indicator, done )\n\n// Output group results as indices:\nopts = { 'returns': 'indices' };\ngroupByAsync( arr, opts, indicator, done )\n\n// Output group results as index-value pairs:\nopts = { 'returns': '*' };\ngroupByAsync( arr, opts, indicator, done )\n\n// Limit number of concurrent invocations:\nfunction indicator( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\ngroupByAsync( arr, opts, indicator, done )\n\n// Process sequentially:\nfunction indicator( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\nopts = { 'series': true };\narr = [ 3000, 2500, 1000 ];\ngroupByAsync( arr, opts, indicator, done )\n", "groupIn": "function indicator( v ) {\n if ( v[ 0 ] === 'b' ) {\n return 'b';\n }\n return 'other';\n};\nfunction Foo() { this.a = 'beep'; this.b = 'boop'; return this; };\nFoo.prototype = Object.create( null );\nFoo.prototype.c = 'foo';\nFoo.prototype.d = 'bar';\nobj = new Foo();\nout = groupIn( obj, indicator )\n\n// Output group results as keys:\nopts = { 'returns': 'keys' };\nout = groupIn( obj, opts, indicator )\n\n// Output group results as key-value pairs:\nopts = { 'returns': '*' };\nout = groupIn( obj, opts, indicator )\n", "groupOwn": "function indicator( v ) {\n if ( v[ 0 ] === 'b' ) {\n return 'b';\n }\n return 'other';\n};\nobj = { 'a': 'beep', 'b': 'boop', 'c': 'foo', 'd': 'bar' };\nout = groupOwn( obj, indicator )\n\n// Output group results as keys:\nopts = { 'returns': 'keys' };\nout = groupOwn( obj, opts, indicator )\n\n// Output group results as key-value pairs:\nopts = { 'returns': '*' };\nout = groupOwn( obj, opts, indicator )\n", "HALF_LN2": "HALF_LN2\n", @@ -1164,6 +1164,7 @@ var db = { "isComplexTypedArray": "bool = isComplexTypedArray( new Complex64Array( 10 ) )\n", "isConfigurableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = true;\ndesc.value = true;\ndefineProperty( obj, 'beep', desc );\nbool = isConfigurableProperty( obj, 'boop' )\nbool = isConfigurableProperty( obj, 'beep' )\n", "isConfigurablePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = true;\ndesc.value = true;\ndefineProperty( obj, 'beep', desc );\nbool = isConfigurablePropertyIn( obj, 'boop' )\nbool = isConfigurablePropertyIn( obj, 'beep' )\n", + "isDataProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.get = function getter() { return 'beep'; };\ndefineProperty( obj, 'beep', desc );\nbool = isDataProperty( obj, 'boop' )\nbool = isDataProperty( obj, 'beep' )\n", "isDateObject": "bool = isDateObject( new Date() )\nbool = isDateObject( '2017-01-01' )\n", "isDigitString": "bool = isDigitString( '0123456789' )\nbool = isDigitString( 'abcdef' )\nbool = isDigitString( '0xff' )\nbool = isDigitString( '' )\n", "isEmailAddress": "bool = isEmailAddress( 'beep@boop.com' )\nbool = isEmailAddress( 'beep' )\nbool = isEmailAddress( null )\n", @@ -1549,7 +1550,7 @@ var db = { "someByAsync": "\n// Basic usage:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\narr = [ 3000, 2500, 1000 ];\nsomeByAsync( arr, 2, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\nsomeByAsync( arr, 2, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'series': true };\narr = [ 3000, 2500, 1000 ];\nsomeByAsync( arr, 2, opts, predicate, done )\n", "someByRight": "function negative( v ) { return ( v < 0 ); };\narr = [ -1, 1, -2, 3, 4 ];\nbool = someByRight( arr, 2, negative )\n", "someByRightAsync": "\n// Basic usage:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\narr = [ 1000, 2500, 3000 ];\nsomeByRightAsync( arr, 2, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'limit': 2 };\narr = [ 1000, 2500, 3000 ];\nsomeByRightAsync( arr, 2, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'series': true };\narr = [ 1000, 2500, 3000 ];\nsomeByRightAsync( arr, 2, opts, predicate, done )\n", - "SOTU": "out = SOTU()\n\n// Retrieve addresses by one or more Presidents...\nopts = { 'name': 'Barack Obama' };\nout = SOTU( opts )\n\n// Retrieve addresses by one or more political parties...\nopts = { 'party': [ 'Democratic', 'Federalist' ] };\nout = SOTU( opts )\n\n// Retrieve addresses from one or more years...\nopts = { 'year': [ 2008, 2009, 2011 ] };\nout = SOTU( opts )\n\n// Retrieve addresses from a range of consecutive years...\nopts = { 'range': [ 2008-2016 ] }\nout = SOTU( opts )\n", + "SOTU": "out = SOTU()\n\n// Retrieve addresses by one or more Presidents...\nopts = { 'name': 'Barack Obama' };\nout = SOTU( opts )\n\n// Retrieve addresses by one or more political parties...\nopts = { 'party': [ 'Democratic', 'Federalist' ] };\nout = SOTU( opts )\n\n// Retrieve addresses from one or more years...\nopts = { 'year': [ 2008, 2009, 2011 ] };\nout = SOTU( opts )\n\n// Retrieve addresses from a range of consecutive years...\nopts = { 'range': [ 2008, 2016 ] }\nout = SOTU( opts )\n", "SPACHE_REVISED": "list = SPACHE_REVISED()\n", "SPAM_ASSASSIN": "data = SPAM_ASSASSIN()\n", "SparklineBase": "sparkline = new SparklineBase()\n\n// Provide sparkline data at instantiation:\ndata = [ 1, 2, 3 ];\nsparkline = new SparklineBase( data )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index f52bfd939802..818dedc73c6e 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -580,8 +580,8 @@ var db = { "base.exp10": "\nbase.exp10( x )\n Evaluates the base 10 exponential function.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.exp10( 3.0 )\n 1000\n > y = base.exp10( -9.0 )\n 1.0e-9\n > y = base.exp10( 0.0 )\n 1.0\n > y = base.exp10( NaN )\n NaN\n\n See Also\n --------\n base.exp, base.exp2\n", "base.expm1": "\nbase.expm1( x )\n Computes `exp(x)-1`, where `exp(x)` is the natural exponential function.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.expm1( 0.2 )\n ~0.221\n > y = base.expm1( -9.0 )\n ~-1.0\n > y = base.expm1( 0.0 )\n 0.0\n > y = base.expm1( NaN )\n NaN\n\n See Also\n --------\n base.exp, base.expm1rel\n", "base.expm1rel": "\nbase.expm1rel( x )\n Relative error exponential.\n\n When `x` is near zero,\n\n e^x - 1\n\n can suffer catastrophic cancellation (i.e., significant loss of precision).\n This function avoids the loss of precision when `x` is near zero.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.expm1rel( 0.0 )\n 1.0\n > y = base.expm1rel( 1.0 )\n ~1.718\n > y = base.expm1rel( -1.0 )\n ~0.632\n > y = base.expm1rel( NaN )\n NaN\n\t\n See Also\n --------\n base.exp, base.expm1\n", - "base.exponent": "\nbase.exponent( x )\n Returns an integer corresponding to the unbiased exponent of a double-\n precision floating-point number.\n\n Parameters\n ----------\n x: number\n Double-precision floating-point number.\n\n Returns\n -------\n out: integer\n Unbiased exponent.\n\n Examples\n --------\n > var exponent = base.exponent( 3.14e-307 )\n -1019\n > exponent = base.exponent( -3.14 )\n 1\n > exponent = base.exponent( 0.0 )\n 0\n > exponent = base.exponent( NaN )\n 1024\n\n See Also\n --------\n base.exponentf\n", - "base.exponentf": "\nbase.exponentf( x )\n Returns an integer corresponding to the unbiased exponent of a single-\n precision floating-point number.\n\n Parameters\n ----------\n x: float\n Single-precision floating-point number.\n\n Returns\n -------\n out: integer\n Unbiased exponent.\n\n Examples\n --------\n > var exponent = base.exponentf( base.float64ToFloat32( 3.14e34 ) )\n 114\n > exponent = base.exponentf( base.float64ToFloat32( 3.14e-34 ) )\n -112\n > exponent = base.exponentf( base.float64ToFloat32( -3.14 ) )\n 1\n > exponent = base.exponentf( 0.0 )\n 0\n > exponent = base.exponentf( NaN )\n 128\n\n See Also\n --------\n base.exponent\n", + "base.exponent": "\nbase.exponent( x )\n Returns an integer corresponding to the unbiased exponent of a double-\n precision floating-point number.\n\n Parameters\n ----------\n x: number\n Double-precision floating-point number.\n\n Returns\n -------\n out: integer\n Unbiased exponent.\n\n Examples\n --------\n > var exponent = base.exponent( 3.14e-307 )\n -1019\n > exponent = base.exponent( -3.14 )\n 1\n > exponent = base.exponent( 0.0 )\n -1023\n > exponent = base.exponent( NaN )\n 1024\n\n See Also\n --------\n base.exponentf\n", + "base.exponentf": "\nbase.exponentf( x )\n Returns an integer corresponding to the unbiased exponent of a single-\n precision floating-point number.\n\n Parameters\n ----------\n x: float\n Single-precision floating-point number.\n\n Returns\n -------\n out: integer\n Unbiased exponent.\n\n Examples\n --------\n > var exponent = base.exponentf( base.float64ToFloat32( 3.14e34 ) )\n 114\n > exponent = base.exponentf( base.float64ToFloat32( 3.14e-34 ) )\n -112\n > exponent = base.exponentf( base.float64ToFloat32( -3.14 ) )\n 1\n > exponent = base.exponentf( 0.0 )\n -127\n > exponent = base.exponentf( NaN )\n 128\n\n See Also\n --------\n base.exponent\n", "base.factorial": "\nbase.factorial( x )\n Evaluates the factorial of `x`.\n\n If provided `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Factorial.\n\n Examples\n --------\n > var y = base.factorial( 3.0 )\n 6.0\n > y = base.factorial( -1.5 )\n ~-3.545\n > y = base.factorial( -0.5 )\n ~1.772\n > y = base.factorial( 0.5 )\n ~0.886\n > y = base.factorial( -10.0 )\n NaN\n > y = base.factorial( 171.0 )\n Infinity\n > y = base.factorial( NaN )\n NaN\n\n See Also\n --------\n base.factorialln\n", "base.factorialln": "\nbase.factorialln( x )\n Evaluates the natural logarithm of the factorial of `x`.\n\n For input values other than negative integers, the function returns\n\n ln( x! ) = ln( Γ(x+1) )\n\n where `Γ` is the Gamma function. For negative integers, the function returns\n `NaN`.\n\n If provided `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Natural logarithm of the factorial of `x`.\n\n Examples\n --------\n > var y = base.factorialln( 3.0 )\n ~1.792\n > y = base.factorialln( 2.4 )\n ~1.092\n > y = base.factorialln( -1.0 )\n NaN\n > y = base.factorialln( -1.5 )\n ~1.266\n > y = base.factorialln( NaN )\n NaN\n\n See Also\n --------\n base.factorial\n", "base.fallingFactorial": "\nbase.fallingFactorial( x, n )\n Computes the falling factorial of `x` and `n`.\n\n If not provided a non-negative integer for `n`, the function returns `NaN`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n Parameters\n ----------\n x: number\n First function parameter.\n\n n: integer\n Second function parameter.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var v = base.fallingFactorial( 0.9, 5 )\n ~0.644\n > v = base.fallingFactorial( -9.0, 3 )\n -990.0\n > v = base.fallingFactorial( 0.0, 2 )\n 0.0\n > v = base.fallingFactorial( 3.0, -2 )\n NaN\n\n See Also\n --------\n base.risingFactorial\n", @@ -787,7 +787,7 @@ var db = { "base.zeta": "\nbase.zeta( s )\n Evaluates the Riemann zeta function as a function of a real variable `s`.\n\n Parameters\n ----------\n s: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.zeta( 1.1 )\n ~10.584\n > y = base.zeta( -4.0 )\n 0.0\n > y = base.zeta( 70.0 )\n 1.0\n > y = base.zeta( 0.5 )\n ~-1.46\n > y = base.zeta( NaN )\n NaN\n\n // Evaluate at a pole:\n > y = base.zeta( 1.0 )\n NaN\n\n", "bifurcate": "\nbifurcate( collection, [options,] filter )\n Splits values into two groups.\n\n If an element in `filter` is truthy, then the corresponding element in the\n input collection belongs to the first group; otherwise, the collection\n element belongs to the second group.\n\n If provided an empty collection, the function returns an empty array.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection to group. If provided an object, the object must be\n array-like (excluding strings and functions).\n\n options: Object (optional)\n Options.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n filter: Array|TypedArray|Object\n A collection indicating which group an element in the input collection\n belongs to. If an element in `filter` is truthy, the corresponding\n element in `collection` belongs to the first group; otherwise, the\n collection element belongs to the second group. If provided an object,\n the object must be array-like (excluding strings and functions).\n\n Returns\n -------\n out: Array|Array\n Group results.\n\n Examples\n --------\n > var collection = [ 'beep', 'boop', 'foo', 'bar' ];\n > var f = [ true, true, false, true ];\n > var out = bifurcate( collection, f )\n [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n > f = [ 1, 1, 0, 1 ];\n > out = bifurcate( collection, f )\n [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n\n // Output group results as indices:\n > f = [ true, true, false, true ];\n > var opts = { 'returns': 'indices' };\n > out = bifurcate( collection, opts, f )\n [ [ 0, 1, 3 ], [ 2 ] ]\n\n // Output group results as index-element pairs:\n > opts = { 'returns': '*' };\n > out = bifurcate( collection, opts, f )\n [ [ [0, 'beep'], [1, 'boop'], [3, 'bar'] ], [ [2, 'foo'] ] ]\n\n See Also\n --------\n bifurcateBy, bifurcateOwn, group\n", "bifurcateBy": "\nbifurcateBy( collection, [options,] predicate )\n Splits values into two groups according to a predicate function.\n\n When invoked, the predicate function is provided two arguments:\n\n - `value`: collection value\n - `index`: collection index\n\n If a predicate function returns a truthy value, a collection value is\n placed in the first group; otherwise, a collection value is placed in the\n second group.\n\n If provided an empty collection, the function returns an empty array.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection to group. If provided an object, the object must be\n array-like (excluding strings and functions).\n\n options: Object (optional)\n Options.\n\n options.thisArg: any (optional)\n Execution context.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n predicate: Function\n Predicate function indicating which group an element in the input\n collection belongs to.\n\n Returns\n -------\n out: Array|Array\n Group results.\n\n Examples\n --------\n > function predicate( v ) { v[ 0 ] === 'b' };\n > var collection = [ 'beep', 'boop', 'foo', 'bar' ];\n > var out = bifurcateBy( collection, predicate )\n [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n\n // Output group results as indices:\n > var opts = { 'returns': 'indices' };\n > out = bifurcateBy( collection, opts, predicate )\n [ [ 0, 1, 3 ], [ 2 ] ]\n\n // Output group results as index-value pairs:\n > opts = { 'returns': '*' };\n > out = bifurcateBy( collection, opts, predicate )\n [ [ [0, 'beep'], [1, 'boop'], [3, 'bar'] ], [ [2, 'foo' ] ] ]\n\n See Also\n --------\n bifurcate, groupBy\n", - "bifurcateByAsync": "\nbifurcateByAsync( collection, [options,] predicate, done )\n Splits values into two groups according to a predicate function.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `group`: value group\n\n If an predicate function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n If a predicate function calls the `next` callback with a truthy group value,\n a collection value is placed in the first group; otherwise, a collection\n value is placed in the second group.\n\n If provided an empty collection, the function calls the `done` callback with\n an empty array as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n Predicate function indicating which group an element in the input\n collection belongs to.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > bifurcateByAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n [ [ 1000, 3000 ], [ 2500 ] ]\n\n // Output group results as indices:\n > var opts = { 'returns': 'indices' };\n > bifurcateByAsync( arr, opts, predicate, done )\n 1000\n 2500\n 3000\n [ [ 2, 0 ], [ 1 ] ]\n\n // Output group results as index-value pairs:\n > opts = { 'returns': '*' };\n > bifurcateByAsync( arr, opts, predicate done )\n 1000\n 2500\n 3000\n [ [ [ 2, 1000 ], [ 0, 3000 ] ], [ [ 1, 2500 ] ] ]\n\n // Limit number of concurrent invocations:\n > function predicate( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > bifurcateByAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n [ [ 3000, 1000 ], [ 2500 ] ]\n\n // Process sequentially:\n > function predicate( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > bifurcateByAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n [ [ 3000, 1000 ], [ 2500 ] ]\n\n\nbifurcateByAsync.factory( [options,] predicate )\n Returns a function which splits values into two groups according to an\n predicate function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n Predicate function indicating which group an element in the input\n collection belongs to.\n\n Returns\n -------\n out: Function\n A function which splits values into two groups.\n\n Examples\n --------\n > function predicate( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = bifurcateByAsync.factory( opts, predicate );\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n [ [ 3000, 1000 ], [ 2500 ] ]\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n [ [ 2000, 1000 ], [ 1500 ] ]\n\n See Also\n --------\n bifurcateBy, groupByAsync\n", + "bifurcateByAsync": "\nbifurcateByAsync( collection, [options,] predicate, done )\n Splits values into two groups according to a predicate function.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `group`: value group\n\n If an predicate function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n If a predicate function calls the `next` callback with a truthy group value,\n a collection value is placed in the first group; otherwise, a collection\n value is placed in the second group.\n\n If provided an empty collection, the function calls the `done` callback with\n an empty array as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n Predicate function indicating which group an element in the input\n collection belongs to.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > bifurcateByAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n [ [ 1000, 3000 ], [ 2500 ] ]\n\n // Output group results as indices:\n > var opts = { 'returns': 'indices' };\n > bifurcateByAsync( arr, opts, predicate, done )\n 1000\n 2500\n 3000\n [ [ 2, 0 ], [ 1 ] ]\n\n // Output group results as index-value pairs:\n > opts = { 'returns': '*' };\n > bifurcateByAsync( arr, opts, predicate, done )\n 1000\n 2500\n 3000\n [ [ [ 2, 1000 ], [ 0, 3000 ] ], [ [ 1, 2500 ] ] ]\n\n // Limit number of concurrent invocations:\n > function predicate( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > bifurcateByAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n [ [ 3000, 1000 ], [ 2500 ] ]\n\n // Process sequentially:\n > function predicate( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > bifurcateByAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n [ [ 3000, 1000 ], [ 2500 ] ]\n\n\nbifurcateByAsync.factory( [options,] predicate )\n Returns a function which splits values into two groups according to an\n predicate function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n Predicate function indicating which group an element in the input\n collection belongs to.\n\n Returns\n -------\n out: Function\n A function which splits values into two groups.\n\n Examples\n --------\n > function predicate( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = bifurcateByAsync.factory( opts, predicate );\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n [ [ 3000, 1000 ], [ 2500 ] ]\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n [ [ 2000, 1000 ], [ 1500 ] ]\n\n See Also\n --------\n bifurcateBy, groupByAsync\n", "bifurcateIn": "\nbifurcateIn( obj, [options,] predicate )\n Splits values into two groups according to a predicate function.\n\n When invoked, the predicate function is provided two arguments:\n\n - `value`: object value\n - `key`: object key\n\n If a predicate function returns a truthy value, a value is placed in the\n first group; otherwise, a value is placed in the second group.\n\n If provided an empty object with no prototype, the function returns an empty\n array.\n\n The function iterates over an object's own and inherited properties.\n\n Key iteration order is *not* guaranteed, and, thus, result order is *not*\n guaranteed.\n\n Parameters\n ----------\n obj: Object|Array|TypedArray\n Input object to group.\n\n options: Object (optional)\n Options.\n\n options.thisArg: any (optional)\n Execution context.\n\n options.returns: string (optional)\n If `values`, values are returned; if `keys`, keys are returned; if `*`,\n both keys and values are returned. Default: 'values'.\n\n predicate: Function\n Predicate function indicating which group a value in the input object\n belongs to.\n\n Returns\n -------\n out: Array|Array\n Group results.\n\n Examples\n --------\n > function Foo() { this.a = 'beep'; this.b = 'boop'; return this; };\n > Foo.prototype = Object.create( null );\n > Foo.prototype.c = 'foo';\n > Foo.prototype.d = 'bar';\n > var obj = new Foo();\n > function predicate( v ) { v[ 0 ] === 'b' };\n > var out = bifurcateIn( obj, predicate )\n [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n\n // Output group results as keys:\n > var opts = { 'returns': 'keys' };\n > out = bifurcateIn( obj, opts, predicate )\n [ [ 'a', 'b', 'd' ], [ 'c' ] ]\n\n // Output group results as key-value pairs:\n > opts = { 'returns': '*' };\n > out = bifurcateIn( obj, opts, predicate )\n [ [ ['a', 'beep'], ['b', 'boop'], ['d', 'bar'] ], [ ['c', 'foo' ] ] ]\n\n See Also\n --------\n bifurcate, bifurcateBy, bifurcateOwn, groupIn\n", "bifurcateOwn": "\nbifurcateOwn( obj, [options,] predicate )\n Splits values into two groups according to a predicate function.\n\n When invoked, the predicate function is provided two arguments:\n\n - `value`: object value\n - `key`: object key\n\n If a predicate function returns a truthy value, a value is placed in the\n first group; otherwise, a value is placed in the second group.\n\n If provided an empty object, the function returns an empty array.\n\n The function iterates over an object's own properties.\n\n Key iteration order is *not* guaranteed, and, thus, result order is *not*\n guaranteed.\n\n Parameters\n ----------\n obj: Object|Array|TypedArray\n Input object to group.\n\n options: Object (optional)\n Options.\n\n options.thisArg: any (optional)\n Execution context.\n\n options.returns: string (optional)\n If `values`, values are returned; if `keys`, keys are returned; if `*`,\n both keys and values are returned. Default: 'values'.\n\n predicate: Function\n Predicate function indicating which group a value in the input object\n belongs to.\n\n Returns\n -------\n out: Array|Array\n Group results.\n\n Examples\n --------\n > function predicate( v ) { v[ 0 ] === 'b' };\n > var obj = { 'a': 'beep', 'b': 'boop', 'c': 'foo', 'd': 'bar' };\n > var out = bifurcateOwn( obj, predicate )\n [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n\n // Output group results as keys:\n > var opts = { 'returns': 'keys' };\n > out = bifurcateOwn( obj, opts, predicate )\n [ [ 'a', 'b', 'd' ], [ 'c' ] ]\n\n // Output group results as key-value pairs:\n > opts = { 'returns': '*' };\n > out = bifurcateOwn( obj, opts, predicate )\n [ [ ['a', 'beep'], ['b', 'boop'], ['d', 'bar'] ], [ ['c', 'foo' ] ] ]\n\n See Also\n --------\n bifurcate, bifurcateBy, bifurcateIn, groupOwn\n", "Buffer": "\nBuffer\n Buffer constructor.\n\n\nBuffer( size )\n Allocates a buffer having a specified number of bytes.\n\n Parameters\n ----------\n size: integer\n Number of bytes to allocate.\n\n Returns\n -------\n out: Buffer\n Buffer instance.\n\n Examples\n --------\n > var b = new Buffer( 4 )\n \n\n\nBuffer( buffer )\n Copies buffer data to a new Buffer instance.\n\n Parameters\n ----------\n buffer: Buffer\n Buffer to copy from.\n\n Returns\n -------\n out: Buffer\n Buffer instance.\n\n Examples\n --------\n > var b1 = new Buffer( [ 1, 2, 3, 4 ] );\n > var b2 = new Buffer( b1 )\n [ 1, 2, 3, 4 ]\n\n\nBuffer( array )\n Allocates a buffer using an array of octets.\n\n Parameters\n ----------\n array: Array\n Array of octets.\n\n Returns\n -------\n out: Buffer\n Buffer instance.\n\n Examples\n --------\n > var b = new Buffer( [ 1, 2, 3, 4 ] )\n [ 1, 2, 3, 4 ]\n\n\nBuffer( str[, encoding] )\n Allocates a buffer containing a provided string.\n\n Parameters\n ----------\n str: string\n Input string.\n\n encoding: string (optional)\n Character encoding. Default: 'utf8'.\n\n Returns\n -------\n out: Buffer\n Buffer instance.\n\n Examples\n --------\n > var b = new Buffer( 'beep boop' )\n \n\n\nTODO: add methods and properties\n\n\n See Also\n --------\n ArrayBuffer\n", @@ -801,9 +801,9 @@ var db = { "CircularBuffer": "\nCircularBuffer( buffer )\n Circular buffer constructor.\n\n Parameters\n ----------\n buffer: integer|ArrayLike\n Buffer size or an array-like object to use as the underlying buffer.\n\n Returns\n -------\n buf: Object\n Circular buffer data structure.\n\n buf.clear: Function\n Clears the buffer.\n\n buf.count: integer\n Number of elements currently in the buffer.\n\n buf.full: boolean\n Boolean indicating whether the buffer is full.\n\n buf.iterator: Function\n Returns an iterator for iterating over a buffer. If an environment\n supports Symbol.iterator, the returned iterator is iterable. Note that a\n returned iterator does **not** iterate over partially full buffers.\n\n buf.length: integer\n Buffer length (capacity).\n\n buf.push: Function\n Adds a value to the buffer. If the buffer is full, the method returns\n the removed value; otherwise, the method returns `undefined`.\n\n buf.toArray: Function\n Returns an array of buffer values.\n\n buf.toJSON: Function\n Serializes a circular buffer as JSON.\n\n Examples\n --------\n > var b = CircularBuffer( 3 );\n > b.push( 'foo' );\n > b.push( 'bar' );\n > b.push( 'beep' );\n > b.length\n 3\n > b.count\n 3\n > b.push( 'boop' )\n 'foo'\n\n See Also\n --------\n FIFO, Stack\n", "CMUDICT": "\nCMUDICT( [options] )\n Returns datasets from the Carnegie Mellon Pronouncing Dictionary (CMUdict).\n\n Data includes the following:\n\n - dict: the main pronouncing dictionary\n - phones: manners of articulation for each sound\n - symbols: complete list of ARPABET symbols used by the dictionary\n - vp: verbal pronunciations of punctuation marks\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.data: string (optional)\n Dataset name.\n\n Returns\n -------\n out: Object|Array\n CMUdict dataset.\n\n Examples\n --------\n > var data = CMUDICT();\n > var dict = data.dict\n {...}\n > var phones = data.phones\n {...}\n > var symbols = data.symbols\n [...]\n > var vp = data.vp\n {...}\n\n", "complex": "\ncomplex( real, imag[, dtype] )\n Creates a complex number.\n\n The function supports the following data types:\n\n - float64\n - float32\n\n Parameters\n ----------\n real: number\n Real component.\n\n imag: number\n Imaginary component.\n\n dtype: string (optional)\n Data type. Default: 'float64'.\n\n Returns\n -------\n z: Complex\n Complex number.\n\n Examples\n --------\n > var z = complex( 5.0, 3.0, 'float64' )\n \n > z = complex( 5.0, 3.0, 'float32' )\n \n\n See Also\n --------\n Complex128, Complex64\n", - "Complex64": "\nComplex64( real, imag )\n 64-bit complex number constructor.\n\n Both the real and imaginary components are stored as single-precision\n floating-point numbers.\n\n Parameters\n ----------\n real: number\n Real component.\n\n imag: number\n Imaginary component.\n\n Returns\n -------\n z: Complex64\n 64-bit complex number.\n\n z.re: number\n Read-only property returning the real component.\n\n z.im: number\n Read-only property returning the imaginary component.\n\n z.BYTES_PER_ELEMENT\n Size (in bytes) of each component. Value: 4.\n\n z.byteLength\n Length (in bytes) of a complex number. Value: 8.\n\n Examples\n --------\n > var z = Complex64( 5.0, 3.0 )\n \n > z.re\n 5.0\n > z.im\n 3.0\n\n See Also\n --------\n complex, Complex128\n", + "Complex64": "\nComplex64( real, imag )\n 64-bit complex number constructor.\n\n Both the real and imaginary components are stored as single-precision\n floating-point numbers.\n\n Parameters\n ----------\n real: number\n Real component.\n\n imag: number\n Imaginary component.\n\n Returns\n -------\n z: Complex64\n 64-bit complex number.\n\n z.re: number\n Read-only property returning the real component.\n\n z.im: number\n Read-only property returning the imaginary component.\n\n z.BYTES_PER_ELEMENT\n Size (in bytes) of each component. Value: 4.\n\n z.byteLength\n Length (in bytes) of a complex number. Value: 8.\n\n Examples\n --------\n > var z = new Complex64( 5.0, 3.0 )\n \n > z.re\n 5.0\n > z.im\n 3.0\n\n See Also\n --------\n complex, Complex128\n", "COMPLEX64_NUM_BYTES": "\nCOMPLEX64_NUM_BYTES\n Size (in bytes) of a 64-bit complex number.\n\n Examples\n --------\n > COMPLEX64_NUM_BYTES\n 8\n\n See Also\n --------\n COMPLEX128_NUM_BYTES, FLOAT32_NUM_BYTES\n", - "Complex128": "\nComplex128( real, imag )\n 128-bit complex number constructor.\n\n Both the real and imaginary components are stored as double-precision\n floating-point numbers.\n\n Parameters\n ----------\n real: number\n Real component.\n\n imag: number\n Imaginary component.\n\n Returns\n -------\n z: Complex128\n 128-bit complex number.\n\n z.re: number\n Read-only property returning the real component.\n\n z.im: number\n Read-only property returning the imaginary component.\n\n z.BYTES_PER_ELEMENT\n Size (in bytes) of each component. Value: 8.\n\n z.byteLength\n Length (in bytes) of a complex number. Value: 16.\n\n Examples\n --------\n > var z = Complex128( 5.0, 3.0 )\n \n > z.re\n 5.0\n > z.im\n 3.0\n\n See Also\n --------\n complex, Complex64\n", + "Complex128": "\nComplex128( real, imag )\n 128-bit complex number constructor.\n\n Both the real and imaginary components are stored as double-precision\n floating-point numbers.\n\n Parameters\n ----------\n real: number\n Real component.\n\n imag: number\n Imaginary component.\n\n Returns\n -------\n z: Complex128\n 128-bit complex number.\n\n z.re: number\n Read-only property returning the real component.\n\n z.im: number\n Read-only property returning the imaginary component.\n\n z.BYTES_PER_ELEMENT\n Size (in bytes) of each component. Value: 8.\n\n z.byteLength\n Length (in bytes) of a complex number. Value: 16.\n\n Examples\n --------\n > var z = new Complex128( 5.0, 3.0 )\n \n > z.re\n 5.0\n > z.im\n 3.0\n\n See Also\n --------\n complex, Complex64\n", "COMPLEX128_NUM_BYTES": "\nCOMPLEX128_NUM_BYTES\n Size (in bytes) of a 128-bit complex number.\n\n Examples\n --------\n > COMPLEX128_NUM_BYTES\n 16\n\n See Also\n --------\n COMPLEX64_NUM_BYTES, FLOAT64_NUM_BYTES\n", "compose": "\ncompose( ...f )\n Function composition.\n\n Returns a composite function. Starting from the right, the composite\n function evaluates each function and passes the result as an argument\n to the next function. The result of the leftmost function is the result\n of the whole.\n\n Notes:\n\n - Only the rightmost function is explicitly permitted to accept multiple\n arguments. All other functions are evaluated as unary functions.\n - The function will throw if provided fewer than two input arguments.\n\n Parameters\n ----------\n f: ...Function\n Functions to compose.\n\n Returns\n -------\n out: Function\n Composite function.\n\n Examples\n --------\n > function a( x ) {\n ... return 2 * x;\n ... }\n > function b( x ) {\n ... return x + 3;\n ... }\n > function c( x ) {\n ... return x / 5;\n ... }\n > var f = compose( c, b, a );\n > var z = f( 6 )\n 3\n\n See Also\n --------\n composeAsync\n", "composeAsync": "\ncomposeAsync( ...f )\n Function composition.\n\n Returns a composite function. Starting from the right, the composite\n function evaluates each function and passes the result as the first argument\n of the next function. The result of the leftmost function is the result\n of the whole.\n\n The last argument for each provided function is a `next` callback which\n should be invoked upon function completion. The callback accepts two\n arguments:\n\n - `error`: error argument\n - `result`: function result\n\n If a composed function calls the `next` callback with a truthy `error`\n argument, the composite function suspends execution and immediately calls\n the `done` callback for subsequent `error` handling.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n Only the rightmost function is explicitly permitted to accept multiple\n arguments. All other functions are evaluated as binary functions.\n\n The function will throw if provided fewer than two input arguments.\n\n Parameters\n ----------\n f: ...Function\n Functions to compose.\n\n Returns\n -------\n out: Function\n Composite function.\n\n Examples\n --------\n > function a( x, next ) {\n ... setTimeout( onTimeout, 0 );\n ... function onTimeout() {\n ... next( null, 2*x );\n ... }\n ... };\n > function b( x, next ) {\n ... setTimeout( onTimeout, 0 );\n ... function onTimeout() {\n ... next( null, x+3 );\n ... }\n ... };\n > function c( x, next ) {\n ... setTimeout( onTimeout, 0 );\n ... function onTimeout() {\n ... next( null, x/5 );\n ... }\n ... };\n > var f = composeAsync( c, b, a );\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > f( 6, done )\n 3\n\n See Also\n --------\n compose\n", @@ -951,7 +951,7 @@ var db = { "GLAISHER": "\nGLAISHER\n Glaisher-Kinkelin constant.\n\n Examples\n --------\n > GLAISHER\n 1.2824271291006226\n\n", "group": "\ngroup( collection, [options,] groups )\n Groups values as arrays associated with distinct keys.\n\n If provided an empty collection, the function returns an empty object.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection to group. If provided an object, the object must be\n array-like (excluding strings and functions).\n\n options: Object (optional)\n Options.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n groups: Array|TypedArray|Object\n A collection defining which group an element in the input collection\n belongs to. Each value in `groups` should resolve to a value which can\n be serialized as an object key. If provided an object, the object must\n be array-like (excluding strings and functions).\n\n Returns\n -------\n out: Object\n Group results.\n\n Examples\n --------\n > var collection = [ 'beep', 'boop', 'foo', 'bar' ];\n > var groups = [ 'b', 'b', 'f', 'b' ];\n > var out = group( collection, groups )\n { 'b': [ 'beep', 'boop', 'bar' ], 'f': [ 'foo' ] }\n > groups = [ 1, 1, 2, 1 ];\n > out = group( collection, groups )\n { '1': [ 'beep', 'boop', 'bar' ], '2': [ 'foo' ] }\n\n // Output group results as indices:\n > groups = [ 'b', 'b', 'f', 'b' ];\n > var opts = { 'returns': 'indices' };\n > out = group( collection, opts, groups )\n { '1': [ 0, 1, 3 ], '2': [ 2 ] }\n\n // Output group results as index-element pairs:\n > opts = { 'returns': '*' };\n > out = group( collection, opts, groups )\n { '1': [ [0, 'beep'], [1, 'boop'], [3, 'bar'] ], '2': [ [2, 'foo'] ] }\n\n See Also\n --------\n bifurcate, countBy, groupBy\n", "groupBy": "\ngroupBy( collection, [options,] indicator )\n Groups values according to an indicator function.\n\n When invoked, the indicator function is provided two arguments:\n\n - `value`: collection value\n - `index`: collection index\n\n The value returned by an indicator function should be a value which can be\n serialized as an object key.\n\n If provided an empty collection, the function returns an empty object.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection to group. If provided an object, the object must be\n array-like (excluding strings and functions).\n\n options: Object (optional)\n Options.\n\n options.thisArg: any (optional)\n Execution context.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n indicator: Function\n Indicator function specifying which group an element in the input\n collection belongs to.\n\n Returns\n -------\n out: Object\n Group results.\n\n Examples\n --------\n > function indicator( v ) {\n ... if ( v[ 0 ] === 'b' ) {\n ... return 'b';\n ... }\n ... return 'other';\n ... };\n > var collection = [ 'beep', 'boop', 'foo', 'bar' ];\n > var out = groupBy( collection, indicator )\n { 'b': [ 'beep', 'boop', 'bar' ], 'other': [ 'foo' ] }\n\n // Output group results as indices:\n > var opts = { 'returns': 'indices' };\n > out = groupBy( collection, opts, indicator )\n { 'b': [ 0, 1, 3 ], 'other': [ 2 ] }\n\n // Output group results as index-value pairs:\n > opts = { 'returns': '*' };\n > out = groupBy( collection, opts, indicator )\n { 'b': [ [0, 'beep'], [1, 'boop'], [3, 'bar'] ], 'f': [ [2, 'foo' ] ] }\n\n See Also\n --------\n bifurcateBy, countBy, group\n", - "groupByAsync": "\ngroupByAsync( collection, [options,] indicator, done )\n Groups values according to an indicator function.\n\n When invoked, the indicator function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n indicator function accepts two arguments, the indicator function is\n provided:\n\n - `value`\n - `next`\n\n If the indicator function accepts three arguments, the indicator function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other indicator function signature, the indicator function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `group`: value group\n\n If an indicator function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n If provided an empty collection, the function calls the `done` callback with\n an empty object as the second argument.\n\n The `group` returned by an indicator function should be a value which can be\n serialized as an object key.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n options.thisArg: any (optional)\n Execution context.\n\n indicator: Function\n Indicator function specifying which group an element in the input\n collection belongs to.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function indicator( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > groupByAsync( arr, indicator, done )\n 1000\n 2500\n 3000\n { \"true\": [ 1000, 3000 ], \"false\": [ 2500 ] }\n\n // Output group results as indices:\n > var opts = { 'returns': 'indices' };\n > groupByAsync( arr, opts, indicator, done )\n 1000\n 2500\n 3000\n { \"true\": [ 2, 0 ], \"false\": [ 1 ] }\n\n // Output group results as index-value pairs:\n > opts = { 'returns': '*' };\n > groupByAsync( arr, opts, indicator done )\n 1000\n 2500\n 3000\n { \"true\": [ [ 2, 1000 ], [ 0, 3000 ] ], \"false\": [ [ 1, 2500 ] ] }\n\n // Limit number of concurrent invocations:\n > function indicator( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > groupByAsync( arr, opts, indicator, done )\n 2500\n 3000\n 1000\n { \"true\": [ 3000, 1000 ], \"false\": [ 2500 ] }\n\n // Process sequentially:\n > function indicator( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > groupByAsync( arr, opts, indicator, done )\n 3000\n 2500\n 1000\n { \"true\": [ 3000, 1000 ], \"false\": [ 2500 ] }\n\n\ngroupByAsync.factory( [options,] indicator )\n Returns a function which groups values according to an indicator function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n options.thisArg: any (optional)\n Execution context.\n\n indicator: Function\n Indicator function specifying which group an element in the input\n collection belongs to.\n\n Returns\n -------\n out: Function\n A group-by function.\n\n Examples\n --------\n > function indicator( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = groupByAsync.factory( opts, indicator );\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n { \"true\": [ 3000, 1000 ], \"false\": [ 2500 ] }\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n { \"true\": [ 2000, 1000 ], \"false\": [ 1500 ] }\n\n See Also\n --------\n bifurcateByAsync, countByAsync, groupBy\n", + "groupByAsync": "\ngroupByAsync( collection, [options,] indicator, done )\n Groups values according to an indicator function.\n\n When invoked, the indicator function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n indicator function accepts two arguments, the indicator function is\n provided:\n\n - `value`\n - `next`\n\n If the indicator function accepts three arguments, the indicator function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other indicator function signature, the indicator function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `group`: value group\n\n If an indicator function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n If provided an empty collection, the function calls the `done` callback with\n an empty object as the second argument.\n\n The `group` returned by an indicator function should be a value which can be\n serialized as an object key.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n options.thisArg: any (optional)\n Execution context.\n\n indicator: Function\n Indicator function specifying which group an element in the input\n collection belongs to.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function indicator( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > groupByAsync( arr, indicator, done )\n 1000\n 2500\n 3000\n { \"true\": [ 1000, 3000 ], \"false\": [ 2500 ] }\n\n // Output group results as indices:\n > var opts = { 'returns': 'indices' };\n > groupByAsync( arr, opts, indicator, done )\n 1000\n 2500\n 3000\n { \"true\": [ 2, 0 ], \"false\": [ 1 ] }\n\n // Output group results as index-value pairs:\n > opts = { 'returns': '*' };\n > groupByAsync( arr, opts, indicator, done )\n 1000\n 2500\n 3000\n { \"true\": [ [ 2, 1000 ], [ 0, 3000 ] ], \"false\": [ [ 1, 2500 ] ] }\n\n // Limit number of concurrent invocations:\n > function indicator( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > groupByAsync( arr, opts, indicator, done )\n 2500\n 3000\n 1000\n { \"true\": [ 3000, 1000 ], \"false\": [ 2500 ] }\n\n // Process sequentially:\n > function indicator( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > groupByAsync( arr, opts, indicator, done )\n 3000\n 2500\n 1000\n { \"true\": [ 3000, 1000 ], \"false\": [ 2500 ] }\n\n\ngroupByAsync.factory( [options,] indicator )\n Returns a function which groups values according to an indicator function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n options.thisArg: any (optional)\n Execution context.\n\n indicator: Function\n Indicator function specifying which group an element in the input\n collection belongs to.\n\n Returns\n -------\n out: Function\n A group-by function.\n\n Examples\n --------\n > function indicator( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = groupByAsync.factory( opts, indicator );\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n { \"true\": [ 3000, 1000 ], \"false\": [ 2500 ] }\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n { \"true\": [ 2000, 1000 ], \"false\": [ 1500 ] }\n\n See Also\n --------\n bifurcateByAsync, countByAsync, groupBy\n", "groupIn": "\ngroupIn( obj, [options,] indicator )\n Group values according to an indicator function.\n\n When invoked, the indicator function is provided two arguments:\n\n - `value`: object value\n - `key`: object key\n\n The value returned by an indicator function should be a value which can be\n serialized as an object key.\n\n If provided an empty object with no prototype, the function returns an empty\n object.\n\n The function iterates over an object's own and inherited properties.\n\n Key iteration order is *not* guaranteed, and, thus, result order is *not*\n guaranteed.\n\n Parameters\n ----------\n obj: Object|Array|TypedArray\n Input object to group.\n\n options: Object (optional)\n Options.\n\n options.thisArg: any (optional)\n Execution context.\n\n options.returns: string (optional)\n If `values`, values are returned; if `keys`, keys are returned; if `*`,\n both keys and values are returned. Default: 'values'.\n\n indicator: Function\n Indicator function indicating which group a value in the input object\n belongs to.\n\n Returns\n -------\n out: Object\n Group results.\n\n Examples\n --------\n > function indicator( v ) {\n ... if ( v[ 0 ] === 'b' ) {\n ... return 'b';\n ... }\n ... return 'other';\n ... };\n > function Foo() { this.a = 'beep'; this.b = 'boop'; return this; };\n > Foo.prototype = Object.create( null );\n > Foo.prototype.c = 'foo';\n > Foo.prototype.d = 'bar';\n > var obj = new Foo();\n > var out = groupIn( obj, indicator )\n { 'b': [ 'beep', 'boop', 'bar' ], 'other': [ 'foo' ] }\n\n // Output group results as keys:\n > var opts = { 'returns': 'keys' };\n > out = groupIn( obj, opts, indicator )\n { 'b': [ 'a', 'b', 'd' ], 'other': [ 'c' ] }\n\n // Output group results as key-value pairs:\n > opts = { 'returns': '*' };\n > out = groupIn( obj, opts, indicator )\n { 'b': [['a','beep'], ['b','boop'], ['d','bar']], 'other': [['c','foo' ]] }\n\n See Also\n --------\n bifurcateIn, groupBy, groupOwn\n", "groupOwn": "\ngroupOwn( obj, [options,] indicator )\n Group values according to an indicator function.\n\n When invoked, the indicator function is provided two arguments:\n\n - `value`: object value\n - `key`: object key\n\n The value returned by an indicator function should be a value which can be\n serialized as an object key.\n\n If provided an empty object, the function returns an empty object.\n\n The function iterates over an object's own properties.\n\n Key iteration order is *not* guaranteed, and, thus, result order is *not*\n guaranteed.\n\n Parameters\n ----------\n obj: Object|Array|TypedArray\n Input object to group.\n\n options: Object (optional)\n Options.\n\n options.thisArg: any (optional)\n Execution context.\n\n options.returns: string (optional)\n If `values`, values are returned; if `keys`, keys are returned; if `*`,\n both keys and values are returned. Default: 'values'.\n\n indicator: Function\n Indicator function indicating which group a value in the input object\n belongs to.\n\n Returns\n -------\n out: Object\n Group results.\n\n Examples\n --------\n > function indicator( v ) {\n ... if ( v[ 0 ] === 'b' ) {\n ... return 'b';\n ... }\n ... return 'other';\n ... };\n > var obj = { 'a': 'beep', 'b': 'boop', 'c': 'foo', 'd': 'bar' };\n > var out = groupOwn( obj, indicator )\n { 'b': [ 'beep', 'boop', 'bar' ], 'other': [ 'foo' ] }\n\n // Output group results as keys:\n > var opts = { 'returns': 'keys' };\n > out = groupOwn( obj, opts, indicator )\n { 'b': [ 'a', 'b', 'd' ], 'other': [ 'c' ] }\n\n // Output group results as key-value pairs:\n > opts = { 'returns': '*' };\n > out = groupOwn( obj, opts, indicator )\n { 'b': [['a','beep'], ['b','boop'], ['d','bar']], 'other': [['c','foo' ]] }\n\n See Also\n --------\n bifurcateOwn, group, groupBy\n", "HALF_LN2": "\nHALF_LN2\n One half times the natural logarithm of `2`.\n\n Examples\n --------\n > HALF_LN2\n 3.46573590279972654709e-01\n\n See Also\n --------\n LN2\n", @@ -1164,6 +1164,7 @@ var db = { "isComplexTypedArray": "\nisComplexTypedArray( value )\n Tests if a value is a complex typed array.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a complex typed array.\n\n Examples\n --------\n > var bool = isComplexTypedArray( new Complex64Array( 10 ) )\n true\n\n See Also\n --------\n isComplex, isComplex64Array, isComplex128Array\n", "isConfigurableProperty": "\nisConfigurableProperty( value, property )\n Tests if an object's own property is configurable.\n\n A property is configurable if the property may be deleted or its descriptor\n may be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isConfigurableProperty( obj, 'boop' )\n true\n > bool = isConfigurableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isConfigurablePropertyIn, isEnumerableProperty, isReadableProperty, isWritableProperty\n", "isConfigurablePropertyIn": "\nisConfigurablePropertyIn( value, property )\n Tests if an object's own or inherited property is configurable.\n\n A property is configurable if the property may be deleted or its descriptor\n may be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is\n configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isConfigurablePropertyIn( obj, 'boop' )\n true\n > bool = isConfigurablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isConfigurableProperty, isEnumerablePropertyIn, isReadablePropertyIn, isWritablePropertyIn\n", + "isDataProperty": "\nisDataProperty( value, property )\n Tests if an object's own property has a data descriptor.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property has a data descriptor.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.get = function getter() { return 'beep'; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isDataProperty( obj, 'boop' )\n true\n > bool = isDataProperty( obj, 'beep' )\n false\n\n See Also\n --------\n hasOwnProp\n", "isDateObject": "\nisDateObject( value )\n Tests if a value is a Date object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a Date object.\n\n Examples\n --------\n > var bool = isDateObject( new Date() )\n true\n > bool = isDateObject( '2017-01-01' )\n false\n\n", "isDigitString": "\nisDigitString( str )\n Tests whether a string contains only numeric digits.\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only numeric digits.\n\n Examples\n --------\n > var bool = isDigitString( '0123456789' )\n true\n > bool = isDigitString( 'abcdef' )\n false\n > bool = isDigitString( '0xff' )\n false\n > bool = isDigitString( '' )\n false\n\n See Also\n --------\n isHexString, isString\n", "isEmailAddress": "\nisEmailAddress( value )\n Tests if a value is an email address.\n\n Validation is not rigorous. *9* RFCs relate to email addresses, and\n accounting for all of them is a fool's errand. The function performs the\n simplest validation; i.e., requiring at least one `@` symbol.\n\n For rigorous validation, send a confirmation email. If the email bounces,\n consider the email invalid.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an email address.\n\n Examples\n --------\n > var bool = isEmailAddress( 'beep@boop.com' )\n true\n > bool = isEmailAddress( 'beep' )\n false\n > bool = isEmailAddress( null )\n false\n\n", @@ -1323,7 +1324,7 @@ var db = { "ltrim": "\nltrim( str )\n Trims whitespace from the beginning of a `string`.\n\n \"Whitespace\" is defined as the following characters:\n\n - \\f\n - \\n\n - \\r\n - \\t\n - \\v\n - \\u0020\n - \\u00a0\n - \\u1680\n - \\u2000-\\u200a\n - \\u2028\n - \\u2029\n - \\u202f\n - \\u205f\n - \\u3000\n - \\ufeff\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n out: string\n Trimmed string.\n\n Examples\n --------\n > var out = ltrim( ' \\r\\n\\t Beep \\t\\t\\n ' )\n 'Beep \\t\\t\\n '\n\n See Also\n --------\n trim, rtrim\n", "MALE_FIRST_NAMES_EN": "\nMALE_FIRST_NAMES_EN()\n Returns a list of common male first names in English speaking countries.\n\n Returns\n -------\n out: Array\n List of common male first names.\n\n Examples\n --------\n > var list = MALE_FIRST_NAMES_EN()\n [ 'Aaron', 'Ab', 'Abba', 'Abbe', ... ]\n\n References\n ----------\n - Ward, Grady. 2002. 'Moby Word II.' .\n\n See Also\n --------\n FEMALE_FIRST_NAMES_EN\n", "mapFun": "\nmapFun( fcn, n[, thisArg] )\n Invokes a function `n` times and returns an array of accumulated function\n return values.\n\n The invoked function is provided a single argument: the invocation index\n (zero-based).\n\n Parameters\n ----------\n fcn: Function\n Function to invoke.\n\n n: integer\n Number of times to invoke a function.\n\n thisArg: any (optional)\n Function execution context.\n\n Returns\n -------\n out: Array\n Array of accumulated function return values.\n\n Examples\n --------\n > function fcn( i ) { return i; };\n > var arr = mapFun( fcn, 5 )\n [ 0, 1, 2, 3, 4 ]\n\n See Also\n --------\n mapFunAsync\n", - "mapFunAsync": "\nmapFunAsync( fcn, n, [options,] done )\n Invokes a function `n` times and returns an array of accumulated function\n return values.\n\n For each iteration, the provided function is invoked with two arguments:\n\n - `index`: invocation index (starting from zero)\n - `next`: callback to be invoked upon function completion\n\n The `next` callback accepts two arguments:\n\n - `error`: error argument\n - `result`: function result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n Parameters\n ----------\n fcn: Function\n Function to invoke.\n\n n: integer\n Number of times to invoke a function.\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to allow only one pending invocation at a\n time. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n done: Function\n A callback invoked upon executing a provided function `n` times or upon\n encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function fcn( i, next ) {\n ... setTimeout( onTimeout, 0 );\n ... function onTimeout() {\n ... next( null, i );\n ... }\n ... };\n > function done( error, arr ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( arr );\n ... };\n > mapFunAsync( fcn, 10, done )\n [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]\n\n // Limit number of concurrent invocations:\n > function fcn( i, next ) {\n ... setTimeout( onTimeout, 0 );\n ... function onTimeout() {\n ... next( null, i );\n ... }\n ... };\n > function done( error, arr ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( arr );\n ... };\n > var opts = { 'limit': 2 };\n > mapFunAsync( fcn, 10, opts, done )\n [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]\n\n // Sequential invocation:\n > function fcn( i, next ) {\n ... setTimeout( onTimeout, 0 );\n ... function onTimeout() {\n ... next( null, i );\n ... }\n ... };\n > function done( error, arr ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( arr );\n ... };\n > var opts = { 'series': true };\n > mapFunAsync( fcn, 10, opts, done )\n [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]\n\n\nmapFunAsync.factory( [options,] fcn )\n Returns a function which invokes a function `n` times and returns an array\n of accumulated function return values.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to allow only one pending invocation at a\n time. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n Function to invoke.\n\n Returns\n -------\n out: Function\n A function which invokes a function `n` times and returns an array of\n accumulated function return values.\n\n Examples\n --------\n > function fcn( i, next ) {\n ... setTimeout( onTimeout, 0 );\n ... function onTimeout() {\n ... next( null, i );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = mapFunAsync.factory( opts, fcn );\n > function done( error, arr ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( arr );\n ... };\n > mapFunAsync( 10, done )\n [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]\n\n See Also\n --------\n mapFun\n", + "mapFunAsync": "\nmapFunAsync( fcn, n, [options,] done )\n Invokes a function `n` times and returns an array of accumulated function\n return values.\n\n For each iteration, the provided function is invoked with two arguments:\n\n - `index`: invocation index (starting from zero)\n - `next`: callback to be invoked upon function completion\n\n The `next` callback accepts two arguments:\n\n - `error`: error argument\n - `result`: function result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n Parameters\n ----------\n fcn: Function\n Function to invoke.\n\n n: integer\n Number of times to invoke a function.\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to allow only one pending invocation at a\n time. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n done: Function\n A callback invoked upon executing a provided function `n` times or upon\n encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function fcn( i, next ) {\n ... setTimeout( onTimeout, 0 );\n ... function onTimeout() {\n ... next( null, i );\n ... }\n ... };\n > function done( error, arr ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( arr );\n ... };\n > mapFunAsync( fcn, 10, done )\n [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]\n\n // Limit number of concurrent invocations:\n > function fcn( i, next ) {\n ... setTimeout( onTimeout, 0 );\n ... function onTimeout() {\n ... next( null, i );\n ... }\n ... };\n > function done( error, arr ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( arr );\n ... };\n > var opts = { 'limit': 2 };\n > mapFunAsync( fcn, 10, opts, done )\n [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]\n\n // Sequential invocation:\n > function fcn( i, next ) {\n ... setTimeout( onTimeout, 0 );\n ... function onTimeout() {\n ... next( null, i );\n ... }\n ... };\n > function done( error, arr ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( arr );\n ... };\n > var opts = { 'series': true };\n > mapFunAsync( fcn, 10, opts, done )\n [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]\n\n\nmapFunAsync.factory( [options,] fcn )\n Returns a function which invokes a function `n` times and returns an array\n of accumulated function return values.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to allow only one pending invocation at a\n time. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n Function to invoke.\n\n Returns\n -------\n out: Function\n A function which invokes a function `n` times and returns an array of\n accumulated function return values.\n\n Examples\n --------\n > function fcn( i, next ) {\n ... setTimeout( onTimeout, 0 );\n ... function onTimeout() {\n ... next( null, i );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = mapFunAsync.factory( opts, fcn );\n > function done( error, arr ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( arr );\n ... };\n > f( 10, done )\n [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]\n\n See Also\n --------\n mapFun\n", "mapKeys": "\nmapKeys( obj, transform )\n Maps keys from one object to a new object having the same values.\n\n The transform function is provided three arguments:\n\n - `key`: object key\n - `value`: object value corresponding to `key`\n - `obj`: the input object\n\n The value returned by a transform function should be a value which can be\n serialized as an object key.\n\n The function only maps own properties. Hence, the function does not map\n inherited properties.\n\n The function shallow copies key values.\n\n Key iteration order is *not* guaranteed.\n\n Parameters\n ----------\n obj: Object\n Source object.\n\n transform: Function\n Transform function. Return values specify the keys of the output object.\n\n Returns\n -------\n out: Object\n New object.\n\n Examples\n --------\n > function transform( key, value ) { return key + value; };\n > var obj = { 'a': 1, 'b': 2 };\n > var out = mapKeys( obj, transform )\n { 'a1': 1, 'b2': 2 }\n\n See Also\n --------\n mapValues\n", "mapKeysAsync": "\nmapKeysAsync( obj, [options,] transform, done )\n Maps keys from one object to a new object having the same values.\n\n When invoked, `transform` is provided a maximum of four arguments:\n\n - `key`: object key\n - `value`: object value corresponding to `key`\n - `obj`: the input object\n - `next`: a callback to be invoked after processing an object `key`\n\n The actual number of provided arguments depends on function length. If\n `transform` accepts two arguments, `transform` is provided:\n\n - `key`\n - `next`\n\n If `transform` accepts three arguments, `transform` is provided:\n\n - `key`\n - `value`\n - `next`\n\n For every other `transform` signature, `transform` is provided all four\n arguments.\n\n The `next` callback accepts two arguments:\n\n - `error`: error argument\n - `key`: transformed key\n\n If a `transform` function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The key returned by a transform function should be a value which can be\n serialized as an object key.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function only maps own properties. Hence, the function does not map\n inherited properties.\n\n The function shallow copies key values.\n\n Key iteration and insertion order are *not* guaranteed.\n\n Parameters\n ----------\n obj: Object\n Source object.\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each property sequentially.\n Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n transform: Function\n Transform function. Returned values specify the keys of the output\n object.\n\n done: Function\n A callback invoked either upon processing all own properties or upon\n encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function transform( key, value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... next( null, key+':'+value );\n ... }\n ... };\n > function done( error, out ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( out );\n ... };\n > var obj = { 'a': 1, 'b': 2 };\n > mapKeysAsync( obj, transform, done )\n { 'a:1': 1, 'b:2': 2 }\n\n // Limit number of concurrent invocations:\n > function transform( key, value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... next( null, key+':'+value );\n ... }\n ... };\n > function done( error, out ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( out );\n ... };\n > var opts = { 'limit': 2 };\n > var obj = { 'a': 1, 'b': 2, 'c': 3 };\n > mapKeysAsync( obj, opts, transform, done )\n { 'a:1': 1, 'b:2': 2, 'c:3': 3 }\n\n // Process sequentially:\n > function transform( key, value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... next( null, key+':'+value );\n ... }\n ... };\n > function done( error, out ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( out );\n ... };\n > var opts = { 'series': true };\n > var obj = { 'a': 1, 'b': 2, 'c': 3 };\n > mapKeysAsync( obj, opts, transform, done )\n { 'a:1': 1, 'b:2': 2, 'c:3': 3 }\n\n\nmapKeysAsync.factory( [options,] transform )\n Returns a function which maps keys from one object to a new object having\n the same values.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each property sequentially.\n Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n transform: Function\n Transform function. Returned values specify the keys of the output\n object.\n\n Returns\n -------\n out: Function\n A function which maps keys from one object to a new object having the\n same values.\n\n Examples\n --------\n > function transform( key, value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... next( null, key+':'+value );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = mapKeysAsync.factory( opts, transform );\n > function done( error, out ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( out );\n ... };\n > var obj = { 'a': 1, 'b': 2, 'c': 3 };\n > f( obj, done )\n { 'a:1': 1, 'b:2': 2, 'c:3': 3 }\n > obj = { 'beep': 'boop' };\n > f( obj, done )\n { 'beep:boop': 'beep' }\n\n See Also\n --------\n mapKeys, mapValuesAsync\n", "mapValues": "\nmapValues( obj, transform )\n Maps values from one object to a new object having the same keys.\n\n The transform function is provided three arguments:\n\n - `value`: object value corresponding to `key`\n - `key`: object key\n - `obj`: the input object\n\n The function only maps values from own properties. Hence, the function does\n not map inherited properties.\n\n The function shallow copies key values.\n\n Key iteration order is *not* guaranteed.\n\n Parameters\n ----------\n obj: Object\n Source object.\n\n transform: Function\n Transform function. Return values are the key values of the output\n object.\n\n Returns\n -------\n out: Object\n New object.\n\n Examples\n --------\n > function transform( value, key ) { return key + value; };\n > var obj = { 'a': 1, 'b': 2 };\n > var out = mapValues( obj, transform )\n { 'a': 'a1', 'b': 'b2' }\n\n See Also\n --------\n mapKeys, omitBy, pickBy\n", @@ -1418,7 +1419,7 @@ var db = { "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeysIn, propertyNames, propertySymbolsIn\n", "propertySymbols": "\npropertySymbols( value )\n Returns an array of an object's own symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own symbol properties.\n\n Examples\n --------\n > var s = propertySymbols( {} )\n\n See Also\n --------\n propertyNames, propertySymbolsIn\n", "propertySymbolsIn": "\npropertySymbolsIn( value )\n Returns an array of an object's own and inherited symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited symbol properties.\n\n Examples\n --------\n > var s = propertySymbolsIn( [] )\n\n See Also\n --------\n propertyNamesIn, propertySymbols\n", - "Proxy": "\nProxy( target, handlers )\n Returns a proxy object implementing custom behavior for specified object\n operations.\n\n The following \"traps\" are supported:\n\n - getPrototypeOf( target )\n Trap for `Object.getPrototypeOf()`. Can be used to intercept the\n `instanceof` operator. The method must return an object or `null`.\n\n - setPrototypeOf( target, prototype )\n Trap for `Object.setPrototypeOf()`. The method must return a boolean\n indicating if prototype successfully set.\n\n - isExtensible( target )\n Trap for `Object.isExtensible()`. The method must return a boolean.\n\n - preventExtensions( target )\n Trap for `Object.preventExtensions()`. The method must return a boolean.\n\n - getOwnPropertyDescriptor( target, property )\n Trap for `Object.getOwnPropertyDescriptor()`. The method must return an\n object or `undefined`.\n\n - defineProperty( target, property, descriptor )\n Trap for `Object.defineProperty()`. The method must return a boolean\n indicating whether the operation succeeded.\n\n - has( target, property )\n Trap for the `in` operator. The method must return a boolean.\n\n - get( target, property, receiver )\n Trap for retrieving property values. The method can return any value.\n\n - set( target, property, value, receiver )\n Trap for setting property values. The method should return a boolean\n indicating whether assignment succeeded.\n\n - deleteProperty( target, property )\n Trap for the `delete` operator. The method must return a boolean\n indicating whether operation succeeded.\n\n - ownKeys( target )\n Trap for `Object.keys`, `Object.getOwnPropertyNames()`, and\n `Object.getOwnPropertySymbols()`. The method must return an enumerable\n object.\n\n - apply( target, thisArg, argumentsList )\n Trap for a function call. The method can return any value.\n\n - construct( target, argumentsList, newTarget )\n Trap for the `new` operator. The method must return an object.\n\n All traps are optional. If a trap is not defined, the default behavior is to\n forward the operation to the target.\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Proxy object.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.a = 3.14;\n > p.a\n 6.28\n\n\nProxy.revocable( target, handlers )\n Returns a revocable proxy object\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Revocable proxy object.\n\n p.proxy: Object\n Proxy object.\n\n p.revoke: Function\n Invalidates a proxy, rendering a proxy object unusable.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.proxy.a = 3.14;\n > p.proxy.a\n 6.28\n > p.revoke();\n\n", + "Proxy": "\nProxy( target, handlers )\n Returns a proxy object implementing custom behavior for specified object\n operations.\n\n The following \"traps\" are supported:\n\n - getPrototypeOf( target )\n Trap for `Object.getPrototypeOf()`. Can be used to intercept the\n `instanceof` operator. The method must return an object or `null`.\n\n - setPrototypeOf( target, prototype )\n Trap for `Object.setPrototypeOf()`. The method must return a boolean\n indicating if prototype successfully set.\n\n - isExtensible( target )\n Trap for `Object.isExtensible()`. The method must return a boolean.\n\n - preventExtensions( target )\n Trap for `Object.preventExtensions()`. The method must return a boolean.\n\n - getOwnPropertyDescriptor( target, property )\n Trap for `Object.getOwnPropertyDescriptor()`. The method must return an\n object or `undefined`.\n\n - defineProperty( target, property, descriptor )\n Trap for `Object.defineProperty()`. The method must return a boolean\n indicating whether the operation succeeded.\n\n - has( target, property )\n Trap for the `in` operator. The method must return a boolean.\n\n - get( target, property, receiver )\n Trap for retrieving property values. The method can return any value.\n\n - set( target, property, value, receiver )\n Trap for setting property values. The method should return a boolean\n indicating whether assignment succeeded.\n\n - deleteProperty( target, property )\n Trap for the `delete` operator. The method must return a boolean\n indicating whether operation succeeded.\n\n - ownKeys( target )\n Trap for `Object.keys`, `Object.getOwnPropertyNames()`, and\n `Object.getOwnPropertySymbols()`. The method must return an enumerable\n object.\n\n - apply( target, thisArg, argumentsList )\n Trap for a function call. The method can return any value.\n\n - construct( target, argumentsList, newTarget )\n Trap for the `new` operator. The method must return an object.\n\n All traps are optional. If a trap is not defined, the default behavior is to\n forward the operation to the target.\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Proxy object.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.a = 3.14;\n > p.a\n 6.28\n\n\nProxy.revocable( target, handlers )\n Returns a revocable proxy object\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Revocable proxy object.\n\n p.proxy: Object\n Proxy object.\n\n p.revoke: Function\n Invalidates a proxy, rendering a proxy object unusable.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = new Proxy( {}, h );\n > p.proxy.a = 3.14;\n > p.proxy.a\n 6.28\n > p.revoke();\n\n", "push": "\npush( collection, ...items )\n Adds one or more elements to the end of a collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n items: ...any\n Items to add.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = push( arr, 6.0, 7.0 )\n [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = push( arr, 3.0, 4.0 )\n [ 1.0, 2.0, 3.0, 4.0 ]\n\n // Array-like object:\n > arr = { 'length': 0 };\n > arr = push( arr, 1.0, 2.0 )\n { 'length': 2, '0': 1.0, '1': 2.0 }\n\n See Also\n --------\n pop, shift, unshift\n", "quarterOfYear": "\nquarterOfYear( [month] )\n Returns the quarter of the year.\n\n By default, the function returns the quarter of the year for the current\n month in the current year (according to local time). To determine the\n quarter for a particular month, provide either a month or a `Date`\n object.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n Parameters\n ----------\n month: integer|string|Date (optional)\n Month (or `Date`).\n\n Returns\n -------\n out: integer\n Quarter of the year.\n\n Examples\n --------\n > var q = quarterOfYear( new Date() )\n \n > q = quarterOfYear( 4 )\n 2\n > q = quarterOfYear( 'June' )\n 2\n\n // Other ways to supply month:\n > q = quarterOfYear( 'April' )\n 2\n > q = quarterOfYear( 'apr' )\n 2\n\n See Also\n --------\n dayOfYear\n", "random.iterators.arcsine": "\nrandom.iterators.arcsine( a, b[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from an\n arcsine distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n a: number\n Minimum support.\n\n b: number\n Maximum support.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.arcsine( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.arcsine\n", @@ -1550,7 +1551,7 @@ var db = { "someByAsync": "\nsomeByAsync( collection, n, [options,] predicate, done )\n Tests whether a collection contains at least `n` elements which pass a test\n implemented by a predicate function.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon receiving `n` non-falsy `result`\n values and calls the `done` callback with `null` as the first argument and\n `true` as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null`\n as the first argument and `false` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n n: number\n Minimum number of successful elements.\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > someByAsync( arr, 2, predicate, done )\n 1000\n 2500\n 3000\n false\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > someByAsync( arr, 2, opts, predicate, done )\n 2500\n 3000\n 1000\n false\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > someByAsync( arr, 2, opts, predicate, done )\n 3000\n 2500\n 1000\n false\n\n\nsomeByAsync.factory( [options,] predicate )\n Returns a function which tests whether a collection contains at least `n`\n elements which pass a test implemented by a predicate function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = someByAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, 2, done )\n 3000\n 2500\n 1000\n false\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, 2, done )\n 2000\n 1500\n 1000\n false\n\n See Also\n --------\n anyByAsync, everyByAsync, forEachAsync, noneByAsync, someBy, someByRightAsync\n", "someByRight": "\nsomeByRight( collection, n, predicate[, thisArg ] )\n Tests whether a collection contains at least `n` elements which pass a test\n implemented by a predicate function, iterating from right to left.\n\n The predicate function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n The function immediately returns upon finding `n` successful elements.\n\n If provided an empty collection, the function returns `false`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n n: number\n Minimum number of successful elements.\n\n predicate: Function\n The test function.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n bool: boolean\n The function returns `true` if a collection contains at least `n`\n successful elements; otherwise, the function returns `false`.\n\n Examples\n --------\n > function negative( v ) { return ( v < 0 ); };\n > var arr = [ -1, 1, -2, 3, 4 ];\n > var bool = someByRight( arr, 2, negative )\n true\n\n See Also\n --------\n anyByRight, everyByRight, forEachRight, noneByRight, someBy, someByRightAsync\n", "someByRightAsync": "\nsomeByRightAsync( collection, n, [options,] predicate, done )\n Tests whether a collection contains at least `n` elements which pass a test\n implemented by a predicate function, iterating from right to left.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon receiving `n` non-falsy `result`\n values and calls the `done` callback with `null` as the first argument and\n `true` as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null`\n as the first argument and `false` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n n: number\n Minimum number of successful elements.\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > someByRightAsync( arr, 2, predicate, done )\n 1000\n 2500\n 3000\n false\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > someByRightAsync( arr, 2, opts, predicate, done )\n 2500\n 3000\n 1000\n false\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 1000, 2500, 3000 ];\n > someByRightAsync( arr, 2, opts, predicate, done )\n 3000\n 2500\n 1000\n false\n\n\nsomeByRightAsync.factory( [options,] predicate )\n Returns a function which tests whether a collection contains at least `n`\n elements which pass a test implemented by a predicate function, iterating\n from right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = someByRightAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > f( arr, 2, done )\n 3000\n 2500\n 1000\n false\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, 2, done )\n 2000\n 1500\n 1000\n false\n\n See Also\n --------\n anyByRightAsync, everyByRightAsync, forEachRightAsync, noneByRightAsync, someByAsync, someByRight\n", - "SOTU": "\nSOTU( [options] )\n Returns State of the Union (SOTU) addresses.\n\n Each State of the Union address is represented by an object with the\n following fields:\n\n - year: speech year\n - name: President name\n - party: the President's political party\n - text: speech text\n\n The following political parties are recognized:\n\n - Democratic\n - Republican\n - Democratic-Republican\n - Federalist\n - National Union\n - Whig\n - Whig & Democratic\n - none\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.name: String|Array (optional)\n President name(s).\n\n options.party: String|Array (optional)\n Political party (or parties).\n\n options.year: integer|Array (optional)\n Year(s).\n\n options.range: Array (optional)\n Two-element array specifying a year range.\n\n Returns\n -------\n out: Array\n State of the Union addresses.\n\n Examples\n --------\n > var out = SOTU()\n [ {...}, {...}, ... ]\n\n // Retrieve addresses by one or more Presidents...\n > var opts = { 'name': 'Barack Obama' };\n > out = SOTU( opts )\n [ {...}, {...}, ... ]\n\n // Retrieve addresses by one or more political parties...\n > opts = { 'party': [ 'Democratic', 'Federalist' ] };\n > out = SOTU( opts )\n [ {...}, {...}, ... ]\n\n // Retrieve addresses from one or more years...\n > opts = { 'year': [ 2008, 2009, 2011 ] };\n > out = SOTU( opts )\n [ {...}, {...}, {...} ]\n\n // Retrieve addresses from a range of consecutive years...\n > opts = { 'range': [ 2008-2016 ] }\n > out = SOTU( opts )\n [ {...}, {...}, ... ]\n\n", + "SOTU": "\nSOTU( [options] )\n Returns State of the Union (SOTU) addresses.\n\n Each State of the Union address is represented by an object with the\n following fields:\n\n - year: speech year\n - name: President name\n - party: the President's political party\n - text: speech text\n\n The following political parties are recognized:\n\n - Democratic\n - Republican\n - Democratic-Republican\n - Federalist\n - National Union\n - Whig\n - Whig & Democratic\n - none\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.name: String|Array (optional)\n President name(s).\n\n options.party: String|Array (optional)\n Political party (or parties).\n\n options.year: integer|Array (optional)\n Year(s).\n\n options.range: Array (optional)\n Two-element array specifying a year range.\n\n Returns\n -------\n out: Array\n State of the Union addresses.\n\n Examples\n --------\n > var out = SOTU()\n [ {...}, {...}, ... ]\n\n // Retrieve addresses by one or more Presidents...\n > var opts = { 'name': 'Barack Obama' };\n > out = SOTU( opts )\n [ {...}, {...}, ... ]\n\n // Retrieve addresses by one or more political parties...\n > opts = { 'party': [ 'Democratic', 'Federalist' ] };\n > out = SOTU( opts )\n [ {...}, {...}, ... ]\n\n // Retrieve addresses from one or more years...\n > opts = { 'year': [ 2008, 2009, 2011 ] };\n > out = SOTU( opts )\n [ {...}, {...}, {...} ]\n\n // Retrieve addresses from a range of consecutive years...\n > opts = { 'range': [ 2008, 2016 ] }\n > out = SOTU( opts )\n [ {...}, {...}, ... ]\n\n", "SPACHE_REVISED": "\nSPACHE_REVISED()\n Returns a list of simple American-English words (revised Spache).\n\n Returns\n -------\n out: Array\n List of simple American-English words.\n\n Examples\n --------\n > var list = SPACHE_REVISED()\n [ 'a', 'able', 'about', 'above', ... ]\n\n References\n ----------\n - Spache, George. 1953. \"A New Readability Formula for Primary-Grade Reading\n Materials.\" *The Elementary School Journal* 53 (7): 410–13. doi:10.1086/\n 458513.\n - Klare, George R. 1974. \"Assessing Readability.\" *Reading Research\n Quarterly* 10 (1). Wiley, International Reading Association: 62–102.\n .\n - Stone, Clarence R. 1956. \"Measuring Difficulty of Primary Reading\n Material: A Constructive Criticism of Spache's Measure.\" *The Elementary\n School Journal* 57 (1). University of Chicago Press: 36–41.\n .\n - Perera, Katherine. 2012. \"The assessment of linguistic difficulty in\n reading material.\" In *Linguistics and the Teacher*, edited by Ronald\n Carter, 101–13. Routledge Library Editions: Education. Taylor & Francis.\n .\n\n", "SPAM_ASSASSIN": "\nSPAM_ASSASSIN()\n Returns the Spam Assassin public mail corpus.\n\n Each array element has the following fields:\n\n - id: message id (relative to message group)\n - group: message group\n - checksum: object containing checksum info\n - text: message text (including headers)\n\n The message group may be one of the following:\n\n - easy-ham-1: easier to detect non-spam e-mails (2500 messages)\n - easy-ham-2: easier to detect non-spam e-mails collected at a later date\n (1400 messages)\n - hard-ham-1: harder to detect non-spam e-mails (250 messages)\n - spam-1: spam e-mails (500 messages)\n - spam-2: spam e-mails collected at a later date (1396 messages)\n\n The checksum object contains the following fields:\n\n - type: checksum type (e.g., MD5)\n - value: checksum value\n\n Returns\n -------\n out: Array\n Corpus.\n\n Examples\n --------\n > var data = SPAM_ASSASSIN()\n [ {...}, {...}, ... ]\n\n", "SparklineBase": "\nSparklineBase( [data,] [options] )\n Returns a Sparkline instance.\n\n This constructor is a base Sparkline constructor from which constructors\n tailored to generating particular types of Sparkline graphics should be\n derived.\n\n At a minimum, descendants should implement a private `_render()` method\n which will be automatically invoked by the public `render()` method.\n\n The `data` argument takes precedence over the `data` option.\n\n Parameters\n ----------\n data: ArrayLike|ndarray (optional)\n Sparkline data.\n\n options: Object (optional)\n Options.\n\n options.autoRender: boolean (optional)\n Boolean indicating whether to re-render on a 'change' event. Default:\n false.\n\n options.bufferSize: integer|null (optional)\n Data buffer size. If provided, data is kept in a first-in first-out\n (FIFO) buffer which cannot exceed the buffer size. Default: +infinity.\n\n options.data: ArrayLike|ndarray (optional)\n Sparkline data.\n\n options.description: string (optional)\n Sparkline description.\n\n options.isDefined: Function (optional)\n An accessor function indicating whether a datum is defined.\n\n options.label: string (optional)\n Data label.\n\n Returns\n -------\n sparkline: Sparkline\n Sparkline instance.\n\n sparkline.autoRender\n Rendering mode. If `true`, an instance renders on each 'change' event;\n otherwise, rendering must be triggered manually.\n\n sparkline.bufferSize\n Data buffer size.\n\n sparkline.description\n Sparkline description.\n\n sparkline.data\n Sparkline data.\n\n sparkline.label\n Data label.\n\n sparkline.isDefined( d, i )\n An accessor function which defines whether a datum is defined. This\n accessor is used to define how missing values are encoded. The default\n behavior is to ignore values which are `NaN`.\n\n sparkline.render()\n Renders a sparkline. This method calls `_render()` which must be\n implemented by instances and child classes. The default behavior is\n throw an error.\n\n Examples\n --------\n > var sparkline = new SparklineBase()\n \n\n // Provide sparkline data at instantiation:\n > var data = [ 1, 2, 3 ];\n > sparkline = new SparklineBase( data )\n \n\n See Also\n --------\n plot, Plot, UnicodeColumnChartSparkline, UnicodeLineChartSparkline, UnicodeTristateChartSparkline, UnicodeWinLossChartSparkline\n", From 566a90928c59e48601ed725e2f7bd5239f8deebf Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 00:48:44 -0700 Subject: [PATCH 0199/1062] Add assertion utility to test if an object property has a data descriptor --- .../assert/is-data-property-in/README.md | 157 ++++++++++++++++ .../benchmark/benchmark.js | 51 +++++ .../assert/is-data-property-in/docs/repl.txt | 34 ++++ .../is-data-property-in/examples/index.js | 59 ++++++ .../assert/is-data-property-in/lib/index.js | 58 ++++++ .../assert/is-data-property-in/lib/main.js | 66 +++++++ .../assert/is-data-property-in/package.json | 76 ++++++++ .../assert/is-data-property-in/test/test.js | 175 ++++++++++++++++++ 8 files changed, 676 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-data-property-in/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-data-property-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-data-property-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-data-property-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-data-property-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-data-property-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-data-property-in/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-data-property-in/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-data-property-in/README.md b/lib/node_modules/@stdlib/assert/is-data-property-in/README.md new file mode 100644 index 000000000000..d1a6ff614561 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-data-property-in/README.md @@ -0,0 +1,157 @@ + + +# isDataPropertyIn + +> Test if an object's own or inherited property has a data descriptor. + +
+ +## Usage + +```javascript +var isDataPropertyIn = require( '@stdlib/assert/is-data-property-in' ); +``` + +#### isDataPropertyIn( value, property ) + +Returns a `boolean` indicating if a `value` has a data `property` (either own or inherited). + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var bool; +var obj; + +function Foo() { + this.foo = 'bar'; + return this; +} + +defineProperty( Foo.prototype, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); + +defineProperty( Foo.prototype, 'accessor', { + 'configurable': false, + 'enumerable': false, + 'get': function getter() { + return obj.foo; + }, + 'set': function setter( v ) { + obj.foo = v; + } +}); + +obj = new Foo(); + +bool = isDataPropertyIn( obj, 'foo' ); +// returns true + +bool = isDataPropertyIn( obj, 'beep' ); +// returns true + +bool = isDataPropertyIn( obj, 'accessor' ); +// returns false +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isDataPropertyIn( 'beep', 'length' ); + // returns true + ``` + +- Non-symbol property arguments are coerced to `strings`. + + ```javascript + var obj = { + 'null': 'foo' + }; + + var bool = isDataPropertyIn( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isDataPropertyIn = require( '@stdlib/assert/is-data-property-in' ); + +var bool = isDataPropertyIn( [ 'a' ], 'length' ); +// returns true + +bool = isDataPropertyIn( { 'a': 'b' }, 'a' ); +// returns true + +bool = isDataPropertyIn( [ 'a' ], 0 ); +// returns true + +bool = isDataPropertyIn( { 'null': false }, null ); +// returns true + +bool = isDataPropertyIn( { '[object Object]': false }, {} ); +// returns true + +bool = isDataPropertyIn( {}, 'toString' ); +// returns true + +bool = isDataPropertyIn( {}, 'hasOwnProperty' ); +// returns true + +bool = isDataPropertyIn( null, 'a' ); +// returns false + +bool = isDataPropertyIn( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-data-property-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-data-property-in/benchmark/benchmark.js new file mode 100644 index 000000000000..52ec0c1424d8 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-data-property-in/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isDataPropertyIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isDataPropertyIn( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-data-property-in/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-data-property-in/docs/repl.txt new file mode 100644 index 000000000000..b81648594819 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-data-property-in/docs/repl.txt @@ -0,0 +1,34 @@ + +{{alias}}( value, property ) + Tests if an object's own or inherited property has a data descriptor. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own or inherited property has a data + descriptor. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = false; + > desc.get = function getter() { return 'beep'; }; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + true + > bool = {{alias}}( obj, 'beep' ) + false + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-data-property-in/examples/index.js b/lib/node_modules/@stdlib/assert/is-data-property-in/examples/index.js new file mode 100644 index 000000000000..21e39e825a6a --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-data-property-in/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isDataPropertyIn = require( './../lib' ); + +var bool = isDataPropertyIn( [ 'a' ], 'length' ); +console.log( bool ); +// => true + +bool = isDataPropertyIn( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => true + +bool = isDataPropertyIn( [ 'a' ], 0 ); +console.log( bool ); +// => true + +bool = isDataPropertyIn( { 'null': false }, null ); +console.log( bool ); +// => true + +bool = isDataPropertyIn( { '[object Object]': false }, {} ); +console.log( bool ); +// => true + +bool = isDataPropertyIn( {}, 'toString' ); +console.log( bool ); +// => true + +bool = isDataPropertyIn( {}, 'hasOwnProperty' ); +console.log( bool ); +// => true + +bool = isDataPropertyIn( null, 'a' ); +console.log( bool ); +// => false + +bool = isDataPropertyIn( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-data-property-in/lib/index.js b/lib/node_modules/@stdlib/assert/is-data-property-in/lib/index.js new file mode 100644 index 000000000000..ab3aa88fc938 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-data-property-in/lib/index.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own or inherited property has a data descriptor. +* +* @module @stdlib/assert/is-data-property-in +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isDataPropertyIn = require( '@stdlib/assert/is-data-property-in' ); +* +* var obj = { +* 'boop': true +* }; +* +* function getter() { +* return 'beep'; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'get': getter +* }); +* +* var bool = isDataPropertyIn( obj, 'boop' ); +* // returns true +* +* bool = isDataPropertyIn( obj, 'beep' ); +* // returns false +*/ + +// MODULES // + +var isDataPropertyIn = require( './main.js' ); + + +// EXPORTS // + +module.exports = isDataPropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-data-property-in/lib/main.js b/lib/node_modules/@stdlib/assert/is-data-property-in/lib/main.js new file mode 100644 index 000000000000..4595166b78b9 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-data-property-in/lib/main.js @@ -0,0 +1,66 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptorIn = require( '@stdlib/utils/property-descriptor-in' ); + + +// MAIN // + +/** +* Tests if an object's own or inherited property has a data descriptor. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property has a data descriptor +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* function getter() { +* return 'beep'; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'get': getter +* }); +* +* var bool = isDataPropertyIn( obj, 'boop' ); +* // returns true +* +* bool = isDataPropertyIn( obj, 'beep' ); +* // returns false +*/ +function isDataPropertyIn( value, property ) { + var desc = propertyDescriptorIn( value, property ); + return ( desc !== null && typeof desc.writable === 'boolean' ); +} + + +// EXPORTS // + +module.exports = isDataPropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-data-property-in/package.json b/lib/node_modules/@stdlib/assert/is-data-property-in/package.json new file mode 100644 index 000000000000..b018475d469d --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-data-property-in/package.json @@ -0,0 +1,76 @@ +{ + "name": "@stdlib/assert/is-data-property-in", + "version": "0.0.0", + "description": "Test if an object's own or inherited property has a data descriptor.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "inherited", + "in", + "prototype", + "proto", + "data", + "descriptor", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-data-property-in/test/test.js b/lib/node_modules/@stdlib/assert/is-data-property-in/test/test.js new file mode 100644 index 000000000000..f8643d7d428e --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-data-property-in/test/test.js @@ -0,0 +1,175 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isDataPropertyIn = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isDataPropertyIn, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if an object property has a data descriptor', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isDataPropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isDataPropertyIn( [ 1, 2, 3 ], '1' ); + t.equal( bool, true, 'returns true' ); + + bool = isDataPropertyIn( [ 1, 2, 3 ], 1 ); + t.equal( bool, true, 'returns true' ); + + bool = isDataPropertyIn( new Foo(), 'bar' ); + t.equal( bool, true, 'returns true' ); + + bool = isDataPropertyIn( [ 'a' ], 'length' ); + t.equal( bool, true, 'returns true' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + + bool = isDataPropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isDataPropertyIn( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isDataPropertyIn( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a property having a data descriptor', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + bool = isDataPropertyIn( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'get': getter, + 'set': setter + }); + + bool = isDataPropertyIn( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + t.end(); + + function getter() { + // No-op... + } + + function setter() { + // No-op... + } +}); + +tape( 'the function returns `true` if provided an inherited property having a data descriptor', function test( t ) { + var bool; + + bool = isDataPropertyIn( {}, 'hasOwnProperty' ); + t.equal( bool, true, 'returns true' ); + + bool = isDataPropertyIn( {}, 'toString' ); + t.equal( bool, true, 'returns true' ); + + bool = isDataPropertyIn( {}, 'constructor' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided an inherited property not having a data descriptor', function test( t ) { + var bool; + var obj; + + function Foo() { + return this; + } + + defineProperty( Foo.prototype, 'bar', { + 'configurable': true, + 'enumerable': true, + 'get': getter, + 'set': setter + }); + + obj = new Foo(); + + bool = isDataPropertyIn( obj, 'bar' ); + t.equal( bool, false, 'returns false' ); + + t.end(); + + function getter() { + // No-op... + } + + function setter() { + // No-op... + } +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isDataPropertyIn( 'beep', 'length' ); + t.equal( bool, true, 'returns true' ); + + t.end(); +}); From 8f4eeaff4c84b7400b0574d93a17feb85c533396 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 00:49:42 -0700 Subject: [PATCH 0200/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 6dc3c05c722a..b794b3e2ba06 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -675,6 +675,15 @@ setReadOnly( ns, 'IS_DARWIN', require( '@stdlib/assert/is-darwin' ) ); */ setReadOnly( ns, 'isDataProperty', require( '@stdlib/assert/is-data-property' ) ); +/** +* @name isDataPropertyIn +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-data-property-in} +*/ +setReadOnly( ns, 'isDataPropertyIn', require( '@stdlib/assert/is-data-property-in' ) ); + /** * @name isDateObject * @memberof ns From ad3548ecae4e809faf782975e08d3f99378c87e7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 00:50:36 -0700 Subject: [PATCH 0201/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 12 ++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 870724d1dc4b..9ea578ef9433 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -2070,6 +2070,18 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isDataPropertyIn', + 'path': '@stdlib/assert/is-data-property-in', + 'value': require( '@stdlib/assert/is-data-property-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/has-property', + '@stdlib/assert/is-accessor-property-in', + '@stdlib/assert/is-data-property' + ] +}); + ns.push({ 'alias': 'isDateObject', 'path': '@stdlib/assert/is-date-object', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 16e4be33a1ec..2f9ab2e2cfd8 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1165,6 +1165,7 @@ var db = { "isConfigurableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = true;\ndesc.value = true;\ndefineProperty( obj, 'beep', desc );\nbool = isConfigurableProperty( obj, 'boop' )\nbool = isConfigurableProperty( obj, 'beep' )\n", "isConfigurablePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = true;\ndesc.value = true;\ndefineProperty( obj, 'beep', desc );\nbool = isConfigurablePropertyIn( obj, 'boop' )\nbool = isConfigurablePropertyIn( obj, 'beep' )\n", "isDataProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.get = function getter() { return 'beep'; };\ndefineProperty( obj, 'beep', desc );\nbool = isDataProperty( obj, 'boop' )\nbool = isDataProperty( obj, 'beep' )\n", + "isDataPropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.get = function getter() { return 'beep'; };\ndefineProperty( obj, 'beep', desc );\nbool = isDataPropertyIn( obj, 'boop' )\nbool = isDataPropertyIn( obj, 'beep' )\n", "isDateObject": "bool = isDateObject( new Date() )\nbool = isDateObject( '2017-01-01' )\n", "isDigitString": "bool = isDigitString( '0123456789' )\nbool = isDigitString( 'abcdef' )\nbool = isDigitString( '0xff' )\nbool = isDigitString( '' )\n", "isEmailAddress": "bool = isEmailAddress( 'beep@boop.com' )\nbool = isEmailAddress( 'beep' )\nbool = isEmailAddress( null )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 818dedc73c6e..8b2a67703217 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1164,7 +1164,8 @@ var db = { "isComplexTypedArray": "\nisComplexTypedArray( value )\n Tests if a value is a complex typed array.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a complex typed array.\n\n Examples\n --------\n > var bool = isComplexTypedArray( new Complex64Array( 10 ) )\n true\n\n See Also\n --------\n isComplex, isComplex64Array, isComplex128Array\n", "isConfigurableProperty": "\nisConfigurableProperty( value, property )\n Tests if an object's own property is configurable.\n\n A property is configurable if the property may be deleted or its descriptor\n may be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isConfigurableProperty( obj, 'boop' )\n true\n > bool = isConfigurableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isConfigurablePropertyIn, isEnumerableProperty, isReadableProperty, isWritableProperty\n", "isConfigurablePropertyIn": "\nisConfigurablePropertyIn( value, property )\n Tests if an object's own or inherited property is configurable.\n\n A property is configurable if the property may be deleted or its descriptor\n may be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is\n configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isConfigurablePropertyIn( obj, 'boop' )\n true\n > bool = isConfigurablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isConfigurableProperty, isEnumerablePropertyIn, isReadablePropertyIn, isWritablePropertyIn\n", - "isDataProperty": "\nisDataProperty( value, property )\n Tests if an object's own property has a data descriptor.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property has a data descriptor.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.get = function getter() { return 'beep'; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isDataProperty( obj, 'boop' )\n true\n > bool = isDataProperty( obj, 'beep' )\n false\n\n See Also\n --------\n hasOwnProp\n", + "isDataProperty": "\nisDataProperty( value, property )\n Tests if an object's own property has a data descriptor.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property has a data descriptor.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.get = function getter() { return 'beep'; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isDataProperty( obj, 'boop' )\n true\n > bool = isDataProperty( obj, 'beep' )\n false\n\n See Also\n --------\n hasOwnProp, isDataPropertyIn\n", + "isDataPropertyIn": "\nisDataPropertyIn( value, property )\n Tests if an object's own or inherited property has a data descriptor.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property has a data\n descriptor.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.get = function getter() { return 'beep'; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isDataPropertyIn( obj, 'boop' )\n true\n > bool = isDataPropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n hasProp, isDataProperty\n", "isDateObject": "\nisDateObject( value )\n Tests if a value is a Date object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a Date object.\n\n Examples\n --------\n > var bool = isDateObject( new Date() )\n true\n > bool = isDateObject( '2017-01-01' )\n false\n\n", "isDigitString": "\nisDigitString( str )\n Tests whether a string contains only numeric digits.\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only numeric digits.\n\n Examples\n --------\n > var bool = isDigitString( '0123456789' )\n true\n > bool = isDigitString( 'abcdef' )\n false\n > bool = isDigitString( '0xff' )\n false\n > bool = isDigitString( '' )\n false\n\n See Also\n --------\n isHexString, isString\n", "isEmailAddress": "\nisEmailAddress( value )\n Tests if a value is an email address.\n\n Validation is not rigorous. *9* RFCs relate to email addresses, and\n accounting for all of them is a fool's errand. The function performs the\n simplest validation; i.e., requiring at least one `@` symbol.\n\n For rigorous validation, send a confirmation email. If the email bounces,\n consider the email invalid.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an email address.\n\n Examples\n --------\n > var bool = isEmailAddress( 'beep@boop.com' )\n true\n > bool = isEmailAddress( 'beep' )\n false\n > bool = isEmailAddress( null )\n false\n\n", From 3f4e33a48e0dab6b78308efa808076c0a7627470 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 01:06:10 -0700 Subject: [PATCH 0202/1062] Add assertion utility to test if an object's own property has an accessor descriptor --- .../assert/is-accessor-property/README.md | 161 +++++++++++++++ .../benchmark/benchmark.js | 51 +++++ .../assert/is-accessor-property/docs/repl.txt | 34 +++ .../is-accessor-property/examples/index.js | 59 ++++++ .../assert/is-accessor-property/lib/index.js | 58 ++++++ .../assert/is-accessor-property/lib/main.js | 72 +++++++ .../assert/is-accessor-property/package.json | 74 +++++++ .../assert/is-accessor-property/test/test.js | 193 ++++++++++++++++++ 8 files changed, 702 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-accessor-property/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-accessor-property/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-accessor-property/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-accessor-property/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-accessor-property/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-accessor-property/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-accessor-property/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-accessor-property/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-accessor-property/README.md b/lib/node_modules/@stdlib/assert/is-accessor-property/README.md new file mode 100644 index 000000000000..6e57a0553d77 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-accessor-property/README.md @@ -0,0 +1,161 @@ + + +# isAccessorProperty + +> Test if an object's own property has an accessor descriptor. + +
+ +## Usage + +```javascript +var isAccessorProperty = require( '@stdlib/assert/is-accessor-property' ); +``` + +#### isAccessorProperty( value, property ) + +Returns a `boolean` indicating if an object's own `property` has an accessor descriptor. + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = { + 'foo': 'bar' +}; + +defineProperty( obj, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); + +defineProperty( obj, 'accessor', { + 'configurable': false, + 'enumerable': false, + 'get': function getter() { + return obj.foo; + }, + 'set': function setter( v ) { + obj.foo = v; + } +}); + +var bool = isAccessorProperty( obj, 'foo' ); +// returns false + +bool = isAccessorProperty( obj, 'beep' ); +// returns false + +bool = isAccessorProperty( obj, 'accessor' ); +// returns true +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isAccessorProperty( 'beep', 'length' ); + // returns false + ``` + +- Non-symbol property arguments are coerced to `strings`. + + ```javascript + var defineProperty = require( '@stdlib/utils/define-property' ); + + var obj = {}; + + function getter() { + return true; + } + + defineProperty( obj, 'null', { + 'configurable': true, + 'enumerable': true, + 'get': getter + }); + + var bool = isAccessorProperty( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isAccessorProperty = require( '@stdlib/assert/is-accessor-property' ); + +var bool = isAccessorProperty( [ 'a' ], 'length' ); +// returns false + +bool = isAccessorProperty( { 'a': 'b' }, 'a' ); +// returns false + +bool = isAccessorProperty( [ 'a' ], 0 ); +// returns false + +bool = isAccessorProperty( { 'null': false }, null ); +// returns false + +bool = isAccessorProperty( { '[object Object]': false }, {} ); +// returns false + +bool = isAccessorProperty( {}, 'toString' ); +// returns false + +bool = isAccessorProperty( {}, 'hasOwnProperty' ); +// returns false + +bool = isAccessorProperty( null, 'a' ); +// returns false + +bool = isAccessorProperty( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-accessor-property/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-accessor-property/benchmark/benchmark.js new file mode 100644 index 000000000000..94b59b7a3142 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-accessor-property/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isAccessorProperty = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isAccessorProperty( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-accessor-property/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-accessor-property/docs/repl.txt new file mode 100644 index 000000000000..7a81376152b9 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-accessor-property/docs/repl.txt @@ -0,0 +1,34 @@ + +{{alias}}( value, property ) + Tests if an object's own property has an accessor descriptor. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own property has an accessor + descriptor. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = false; + > desc.get = function getter() { return 'beep'; }; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + false + > bool = {{alias}}( obj, 'beep' ) + true + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-accessor-property/examples/index.js b/lib/node_modules/@stdlib/assert/is-accessor-property/examples/index.js new file mode 100644 index 000000000000..0c31749f4fef --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-accessor-property/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isAccessorProperty = require( './../lib' ); + +var bool = isAccessorProperty( [ 'a' ], 'length' ); +console.log( bool ); +// => false + +bool = isAccessorProperty( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => false + +bool = isAccessorProperty( [ 'a' ], 0 ); +console.log( bool ); +// => false + +bool = isAccessorProperty( { 'null': false }, null ); +console.log( bool ); +// => false + +bool = isAccessorProperty( { '[object Object]': false }, {} ); +console.log( bool ); +// => false + +bool = isAccessorProperty( {}, 'toString' ); +console.log( bool ); +// => false + +bool = isAccessorProperty( {}, 'hasOwnProperty' ); +console.log( bool ); +// => false + +bool = isAccessorProperty( null, 'a' ); +console.log( bool ); +// => false + +bool = isAccessorProperty( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-accessor-property/lib/index.js b/lib/node_modules/@stdlib/assert/is-accessor-property/lib/index.js new file mode 100644 index 000000000000..71945ae4f217 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-accessor-property/lib/index.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own property has an accessor descriptor. +* +* @module @stdlib/assert/is-accessor-property +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isAccessorProperty = require( '@stdlib/assert/is-accessor-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* function getter() { +* return 'beep'; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'get': getter +* }); +* +* var bool = isAccessorProperty( obj, 'boop' ); +* // returns false +* +* bool = isAccessorProperty( obj, 'beep' ); +* // returns true +*/ + +// MODULES // + +var isAccessorProperty = require( './main.js' ); + + +// EXPORTS // + +module.exports = isAccessorProperty; diff --git a/lib/node_modules/@stdlib/assert/is-accessor-property/lib/main.js b/lib/node_modules/@stdlib/assert/is-accessor-property/lib/main.js new file mode 100644 index 000000000000..dfeec60f1fc4 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-accessor-property/lib/main.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptor = require( '@stdlib/utils/property-descriptor' ); + + +// MAIN // + +/** +* Tests if an object's own property has an accessor descriptor. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property has an accessor descriptor +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* function getter() { +* return 'beep'; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'get': getter +* }); +* +* var bool = isAccessorProperty( obj, 'boop' ); +* // returns false +* +* bool = isAccessorProperty( obj, 'beep' ); +* // returns true +*/ +function isAccessorProperty( value, property ) { + var desc = propertyDescriptor( value, property ); + return ( + desc !== null && + ( + typeof desc.get === 'function' || + typeof desc.set === 'function' + ) + ); +} + + +// EXPORTS // + +module.exports = isAccessorProperty; diff --git a/lib/node_modules/@stdlib/assert/is-accessor-property/package.json b/lib/node_modules/@stdlib/assert/is-accessor-property/package.json new file mode 100644 index 000000000000..b1114c6fede9 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-accessor-property/package.json @@ -0,0 +1,74 @@ +{ + "name": "@stdlib/assert/is-accessor-property", + "version": "0.0.0", + "description": "Test if an object's own property has an accessor descriptor.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "accessor", + "get", + "set", + "descriptor", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-accessor-property/test/test.js b/lib/node_modules/@stdlib/assert/is-accessor-property/test/test.js new file mode 100644 index 000000000000..d05b8b725613 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-accessor-property/test/test.js @@ -0,0 +1,193 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isAccessorProperty = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isAccessorProperty, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if an object property has an accessor descriptor', function test( t ) { + var bool; + var obj; + + obj = {}; + + defineProperty( obj, 'a', { + 'configurable': true, + 'enumerable': true, + 'get': getter, + 'set': setter + }); + + defineProperty( obj, 'b', { + 'configurable': true, + 'enumerable': true, + 'get': getter + }); + + defineProperty( obj, 'c', { + 'configurable': true, + 'enumerable': true, + 'set': setter + }); + + bool = isAccessorProperty( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isAccessorProperty( obj, 'b' ); + t.equal( bool, true, 'returns true' ); + + bool = isAccessorProperty( obj, 'c' ); + t.equal( bool, true, 'returns true' ); + + t.end(); + + function getter() { + // No-op... + } + + function setter() { + // No-op... + } +}); + +tape( 'the function returns `false` if an object property has a data descriptor', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isAccessorProperty( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + bool = isAccessorProperty( [ 1, 2, 3 ], '1' ); + t.equal( bool, false, 'returns false' ); + + bool = isAccessorProperty( [ 1, 2, 3 ], 1 ); + t.equal( bool, false, 'returns false' ); + + bool = isAccessorProperty( new Foo(), 'bar' ); + t.equal( bool, false, 'returns false' ); + + bool = isAccessorProperty( [ 'a' ], 'length' ); + t.equal( bool, false, 'returns false' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + + bool = isAccessorProperty( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isAccessorProperty( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isAccessorProperty( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + bool = isAccessorProperty( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + bool = isAccessorProperty( obj, 'd' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided an inherited property', function test( t ) { + var bool; + var obj; + + function Foo() { + return this; + } + + defineProperty( Foo.prototype, 'a', { + 'configurable': true, + 'enumerable': true, + 'get': getter + }); + + obj = new Foo(); + + bool = isAccessorProperty( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + bool = isAccessorProperty( {}, 'hasOwnProperty' ); + t.equal( bool, false, 'returns false' ); + + bool = isAccessorProperty( {}, 'toString' ); + t.equal( bool, false, 'returns false' ); + + bool = isAccessorProperty( {}, 'constructor' ); + t.equal( bool, false, 'returns false' ); + + t.end(); + + function getter() { + // No-op... + } +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isAccessorProperty( 'beep', 'length' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); From 28bd58f9af85385d9ef5980081fe9475e2845a1e Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 01:07:25 -0700 Subject: [PATCH 0203/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index b794b3e2ba06..6f0fd5d0b83c 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -351,6 +351,15 @@ setReadOnly( ns, 'instanceOf', require( '@stdlib/assert/instance-of' ) ); */ setReadOnly( ns, 'isAbsolutePath', require( '@stdlib/assert/is-absolute-path' ) ); +/** +* @name isAccessorProperty +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-accessor-property} +*/ +setReadOnly( ns, 'isAccessorProperty', require( '@stdlib/assert/is-accessor-property' ) ); + /** * @name isAlphagram * @memberof ns From 4f607560ce7d481041115d32288fe97b65b45922 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 01:07:42 -0700 Subject: [PATCH 0204/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 12 ++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 9ea578ef9433..adf1e27eede0 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -1721,6 +1721,18 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isAccessorProperty', + 'path': '@stdlib/assert/is-accessor-property', + 'value': require( '@stdlib/assert/is-accessor-property' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/has-own-property', + '@stdlib/assert/is-accessor-property-in', + '@stdlib/assert/is-data-property' + ] +}); + ns.push({ 'alias': 'isAlphagram', 'path': '@stdlib/assert/is-alphagram', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 2f9ab2e2cfd8..60d31f7221b6 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1132,6 +1132,7 @@ var db = { "IS_WEB_WORKER": "IS_WEB_WORKER\n", "IS_WINDOWS": "IS_WINDOWS\n", "isAbsolutePath": "\n// Windows environment:\nbool = isAbsolutePath( 'C:\\\\foo\\\\bar\\\\baz' )\n\n// POSIX environment:\nbool = isAbsolutePath( '/foo/bar/baz' )\n", + "isAccessorProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.get = function getter() { return 'beep'; };\ndefineProperty( obj, 'beep', desc );\nbool = isAccessorProperty( obj, 'boop' )\nbool = isAccessorProperty( obj, 'beep' )\n", "isAlphagram": "out = isAlphagram( 'beep' )\nout = isAlphagram( 'zba' )\nout = isAlphagram( '' )\n", "isAlphaNumeric": "bool = isAlphaNumeric( 'abc0123456789' )\nbool = isAlphaNumeric( 'abcdef' )\nbool = isAlphaNumeric( '0xff' )\nbool = isAlphaNumeric( '' )\n", "isAnagram": "str1 = 'I am a weakish speller';\nstr2 = 'William Shakespeare';\nbool = isAnagram( str1, str2 )\nbool = isAnagram( 'bat', 'tabba' )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 8b2a67703217..d046de6cfd2f 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1132,6 +1132,7 @@ var db = { "IS_WEB_WORKER": "\nIS_WEB_WORKER\n Boolean indicating if the runtime is a web worker.\n\n Examples\n --------\n > IS_WEB_WORKER\n \n\n", "IS_WINDOWS": "\nIS_WINDOWS\n Boolean indicating if the current process is running on Windows.\n\n Examples\n --------\n > IS_WINDOWS\n \n\n", "isAbsolutePath": "\nisAbsolutePath( value )\n Tests if a value is an absolute path.\n\n Function behavior is platform-specific. On Windows platforms, the function\n is equal to `.win32()`. On POSIX platforms, the function is equal to\n `.posix()`.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is an absolute path.\n\n Examples\n --------\n // Windows environment:\n > var bool = isAbsolutePath( 'C:\\\\foo\\\\bar\\\\baz' )\n true\n\n // POSIX environment:\n > bool = isAbsolutePath( '/foo/bar/baz' )\n true\n\n\nisAbsolutePath.posix( value )\n Tests if a value is a POSIX absolute path.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is a POSIX absolute path.\n\n Examples\n --------\n > var bool = isAbsolutePath.posix( '/foo/bar/baz' )\n true\n > bool = isAbsolutePath.posix( 'foo/bar/baz' )\n false\n\n\nisAbsolutePath.win32( value )\n Tests if a value is a Windows absolute path.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is a Windows absolute path.\n\n Examples\n --------\n > var bool = isAbsolutePath.win32( 'C:\\\\foo\\\\bar\\\\baz' )\n true\n > bool = isAbsolutePath.win32( 'foo\\\\bar\\\\baz' )\n false\n\n See Also\n --------\n isRelativePath\n", + "isAccessorProperty": "\nisAccessorProperty( value, property )\n Tests if an object's own property has an accessor descriptor.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property has an accessor\n descriptor.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.get = function getter() { return 'beep'; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isAccessorProperty( obj, 'boop' )\n false\n > bool = isAccessorProperty( obj, 'beep' )\n true\n\n See Also\n --------\n hasOwnProp, isDataProperty\n", "isAlphagram": "\nisAlphagram( value )\n Tests if a value is an alphagram (i.e., a sequence of characters arranged in\n alphabetical order).\n\n The function first checks that an input value is a string before validating\n that the value is an alphagram. For non-string values, the function returns\n `false`.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an alphagram.\n\n Examples\n --------\n > var out = isAlphagram( 'beep' )\n true\n > out = isAlphagram( 'zba' )\n false\n > out = isAlphagram( '' )\n false\n\n See Also\n --------\n isAnagram\n", "isAlphaNumeric": "\nisAlphaNumeric( str )\n Tests whether a string contains only alphanumeric characters.\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only alphanumeric\n characters.\n\n Examples\n --------\n > var bool = isAlphaNumeric( 'abc0123456789' )\n true\n > bool = isAlphaNumeric( 'abcdef' )\n true\n > bool = isAlphaNumeric( '0xff' )\n true\n > bool = isAlphaNumeric( '' )\n false\n\n See Also\n --------\n isDigitString\n", "isAnagram": "\nisAnagram( str, value )\n Tests if a value is an anagram.\n\n Parameters\n ----------\n str: string\n Comparison string.\n\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an anagram.\n\n Examples\n --------\n > var str1 = 'I am a weakish speller';\n > var str2 = 'William Shakespeare';\n > var bool = isAnagram( str1, str2 )\n true\n > bool = isAnagram( 'bat', 'tabba' )\n false\n\n See Also\n --------\n isAlphagram\n", @@ -1164,7 +1165,7 @@ var db = { "isComplexTypedArray": "\nisComplexTypedArray( value )\n Tests if a value is a complex typed array.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a complex typed array.\n\n Examples\n --------\n > var bool = isComplexTypedArray( new Complex64Array( 10 ) )\n true\n\n See Also\n --------\n isComplex, isComplex64Array, isComplex128Array\n", "isConfigurableProperty": "\nisConfigurableProperty( value, property )\n Tests if an object's own property is configurable.\n\n A property is configurable if the property may be deleted or its descriptor\n may be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isConfigurableProperty( obj, 'boop' )\n true\n > bool = isConfigurableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isConfigurablePropertyIn, isEnumerableProperty, isReadableProperty, isWritableProperty\n", "isConfigurablePropertyIn": "\nisConfigurablePropertyIn( value, property )\n Tests if an object's own or inherited property is configurable.\n\n A property is configurable if the property may be deleted or its descriptor\n may be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is\n configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isConfigurablePropertyIn( obj, 'boop' )\n true\n > bool = isConfigurablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isConfigurableProperty, isEnumerablePropertyIn, isReadablePropertyIn, isWritablePropertyIn\n", - "isDataProperty": "\nisDataProperty( value, property )\n Tests if an object's own property has a data descriptor.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property has a data descriptor.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.get = function getter() { return 'beep'; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isDataProperty( obj, 'boop' )\n true\n > bool = isDataProperty( obj, 'beep' )\n false\n\n See Also\n --------\n hasOwnProp, isDataPropertyIn\n", + "isDataProperty": "\nisDataProperty( value, property )\n Tests if an object's own property has a data descriptor.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property has a data descriptor.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.get = function getter() { return 'beep'; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isDataProperty( obj, 'boop' )\n true\n > bool = isDataProperty( obj, 'beep' )\n false\n\n See Also\n --------\n hasOwnProp, isAccessorProperty, isDataPropertyIn\n", "isDataPropertyIn": "\nisDataPropertyIn( value, property )\n Tests if an object's own or inherited property has a data descriptor.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property has a data\n descriptor.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.get = function getter() { return 'beep'; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isDataPropertyIn( obj, 'boop' )\n true\n > bool = isDataPropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n hasProp, isDataProperty\n", "isDateObject": "\nisDateObject( value )\n Tests if a value is a Date object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a Date object.\n\n Examples\n --------\n > var bool = isDateObject( new Date() )\n true\n > bool = isDateObject( '2017-01-01' )\n false\n\n", "isDigitString": "\nisDigitString( str )\n Tests whether a string contains only numeric digits.\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only numeric digits.\n\n Examples\n --------\n > var bool = isDigitString( '0123456789' )\n true\n > bool = isDigitString( 'abcdef' )\n false\n > bool = isDigitString( '0xff' )\n false\n > bool = isDigitString( '' )\n false\n\n See Also\n --------\n isHexString, isString\n", From 6c22b9b3bce3e51e9d8c41ae7f899bab2a97c291 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 01:15:03 -0700 Subject: [PATCH 0205/1062] Add assertion utility to test if an object property has an accessor descriptor --- .../assert/is-accessor-property-in/README.md | 167 ++++++++++++ .../benchmark/benchmark.js | 51 ++++ .../is-accessor-property-in/docs/repl.txt | 34 +++ .../is-accessor-property-in/examples/index.js | 59 +++++ .../is-accessor-property-in/lib/index.js | 58 +++++ .../is-accessor-property-in/lib/main.js | 72 ++++++ .../is-accessor-property-in/package.json | 78 ++++++ .../is-accessor-property-in/test/test.js | 239 ++++++++++++++++++ 8 files changed, 758 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-accessor-property-in/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-accessor-property-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-accessor-property-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-accessor-property-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-accessor-property-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-accessor-property-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-accessor-property-in/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-accessor-property-in/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-accessor-property-in/README.md b/lib/node_modules/@stdlib/assert/is-accessor-property-in/README.md new file mode 100644 index 000000000000..36cd0bf6690c --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-accessor-property-in/README.md @@ -0,0 +1,167 @@ + + +# isAccessorPropertyIn + +> Test if an object's own or inherited property has an accessor descriptor. + +
+ +## Usage + +```javascript +var isAccessorPropertyIn = require( '@stdlib/assert/is-accessor-property-in' ); +``` + +#### isAccessorPropertyIn( value, property ) + +Returns a `boolean` indicating if an object's own or inherited `property` has an accessor descriptor. + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var bool; +var obj; + +function Foo() { + this.foo = 'bar'; + return this; +} + +defineProperty( Foo.prototype, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); + +defineProperty( Foo.prototype, 'accessor', { + 'configurable': false, + 'enumerable': false, + 'get': function getter() { + return obj.foo; + }, + 'set': function setter( v ) { + obj.foo = v; + } +}); + +obj = new Foo(); + +bool = isAccessorPropertyIn( obj, 'foo' ); +// returns false + +bool = isAccessorPropertyIn( obj, 'beep' ); +// returns false + +bool = isAccessorPropertyIn( obj, 'accessor' ); +// returns true +``` + +
+ + + +
+ +## Notes + +- Value arguments other than `null` or `undefined` are coerced to `objects`. + + ```javascript + var bool = isAccessorPropertyIn( 'beep', 'length' ); + // returns false + ``` + +- Non-symbol property arguments are coerced to `strings`. + + ```javascript + var defineProperty = require( '@stdlib/utils/define-property' ); + + var obj = {}; + + function getter() { + return true; + } + + defineProperty( obj, 'null', { + 'configurable': true, + 'enumerable': true, + 'get': getter + }); + + var bool = isAccessorPropertyIn( obj, null ); + // returns true + ``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var isAccessorPropertyIn = require( '@stdlib/assert/is-accessor-property-in' ); + +var bool = isAccessorPropertyIn( [ 'a' ], 'length' ); +// returns false + +bool = isAccessorPropertyIn( { 'a': 'b' }, 'a' ); +// returns false + +bool = isAccessorPropertyIn( [ 'a' ], 0 ); +// returns false + +bool = isAccessorPropertyIn( { 'null': false }, null ); +// returns false + +bool = isAccessorPropertyIn( { '[object Object]': false }, {} ); +// returns false + +bool = isAccessorPropertyIn( {}, 'toString' ); +// returns false + +bool = isAccessorPropertyIn( {}, 'hasOwnProperty' ); +// returns false + +bool = isAccessorPropertyIn( null, 'a' ); +// returns false + +bool = isAccessorPropertyIn( void 0, 'a' ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-accessor-property-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-accessor-property-in/benchmark/benchmark.js new file mode 100644 index 000000000000..5e17bd8edf57 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-accessor-property-in/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isAccessorPropertyIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Array( 100 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isAccessorPropertyIn( arr, i ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-accessor-property-in/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-accessor-property-in/docs/repl.txt new file mode 100644 index 000000000000..50081d090ccb --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-accessor-property-in/docs/repl.txt @@ -0,0 +1,34 @@ + +{{alias}}( value, property ) + Tests if an object's own or inherited property has an accessor descriptor. + + Parameters + ---------- + value: any + Value to test. + + property: any + Property to test. + + Returns + ------- + bool: boolean + Boolean indicating if an object's own or inherited property has an + accessor descriptor. + + Examples + -------- + > var obj = { 'boop': true }; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = false; + > desc.get = function getter() { return 'beep'; }; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var bool = {{alias}}( obj, 'boop' ) + false + > bool = {{alias}}( obj, 'beep' ) + true + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-accessor-property-in/examples/index.js b/lib/node_modules/@stdlib/assert/is-accessor-property-in/examples/index.js new file mode 100644 index 000000000000..1bfa45011816 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-accessor-property-in/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable object-curly-newline */ + +'use strict'; + +var isAccessorPropertyIn = require( './../lib' ); + +var bool = isAccessorPropertyIn( [ 'a' ], 'length' ); +console.log( bool ); +// => false + +bool = isAccessorPropertyIn( { 'a': 'b' }, 'a' ); +console.log( bool ); +// => false + +bool = isAccessorPropertyIn( [ 'a' ], 0 ); +console.log( bool ); +// => false + +bool = isAccessorPropertyIn( { 'null': false }, null ); +console.log( bool ); +// => false + +bool = isAccessorPropertyIn( { '[object Object]': false }, {} ); +console.log( bool ); +// => false + +bool = isAccessorPropertyIn( {}, 'toString' ); +console.log( bool ); +// => false + +bool = isAccessorPropertyIn( {}, 'hasOwnProperty' ); +console.log( bool ); +// => false + +bool = isAccessorPropertyIn( null, 'a' ); +console.log( bool ); +// => false + +bool = isAccessorPropertyIn( void 0, 'a' ); +console.log( bool ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-accessor-property-in/lib/index.js b/lib/node_modules/@stdlib/assert/is-accessor-property-in/lib/index.js new file mode 100644 index 000000000000..5f8f49df3f29 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-accessor-property-in/lib/index.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether an object's own or inherited property has an accessor descriptor. +* +* @module @stdlib/assert/is-accessor-property-in +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var isAccessorPropertyIn = require( '@stdlib/assert/is-accessor-property-in' ); +* +* var obj = { +* 'boop': true +* }; +* +* function getter() { +* return 'beep'; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'get': getter +* }); +* +* var bool = isAccessorPropertyIn( obj, 'boop' ); +* // returns false +* +* bool = isAccessorPropertyIn( obj, 'beep' ); +* // returns true +*/ + +// MODULES // + +var isAccessorPropertyIn = require( './main.js' ); + + +// EXPORTS // + +module.exports = isAccessorPropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-accessor-property-in/lib/main.js b/lib/node_modules/@stdlib/assert/is-accessor-property-in/lib/main.js new file mode 100644 index 000000000000..d0d33ffc0bbc --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-accessor-property-in/lib/main.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyDescriptorIn = require( '@stdlib/utils/property-descriptor-in' ); + + +// MAIN // + +/** +* Tests if an object's own or inherited property has an accessor descriptor. +* +* @param {*} value - value to test +* @param {*} property - property to test +* @returns {boolean} boolean indicating if an object property has an accessor descriptor +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = { +* 'boop': true +* }; +* +* function getter() { +* return 'beep'; +* } +* +* defineProperty( obj, 'beep', { +* 'configurable': false, +* 'enumerable': false, +* 'get': getter +* }); +* +* var bool = isAccessorPropertyIn( obj, 'boop' ); +* // returns false +* +* bool = isAccessorPropertyIn( obj, 'beep' ); +* // returns true +*/ +function isAccessorPropertyIn( value, property ) { + var desc = propertyDescriptorIn( value, property ); + return ( + desc !== null && + ( + typeof desc.get === 'function' || + typeof desc.set === 'function' + ) + ); +} + + +// EXPORTS // + +module.exports = isAccessorPropertyIn; diff --git a/lib/node_modules/@stdlib/assert/is-accessor-property-in/package.json b/lib/node_modules/@stdlib/assert/is-accessor-property-in/package.json new file mode 100644 index 000000000000..ec8b3158709f --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-accessor-property-in/package.json @@ -0,0 +1,78 @@ +{ + "name": "@stdlib/assert/is-accessor-property-in", + "version": "0.0.0", + "description": "Test if an object's own or inherited property has an accessor descriptor.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "is", + "has", + "own", + "inherited", + "in", + "prototype", + "proto", + "accessor", + "get", + "set", + "descriptor", + "property", + "prop", + "test", + "check", + "validate" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-accessor-property-in/test/test.js b/lib/node_modules/@stdlib/assert/is-accessor-property-in/test/test.js new file mode 100644 index 000000000000..830fd2deb227 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-accessor-property-in/test/test.js @@ -0,0 +1,239 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isAccessorPropertyIn = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isAccessorPropertyIn, 'function', 'export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if an object property has an accessor descriptor', function test( t ) { + var bool; + var obj; + + obj = {}; + + defineProperty( obj, 'a', { + 'configurable': true, + 'enumerable': true, + 'get': getter, + 'set': setter + }); + + defineProperty( obj, 'b', { + 'configurable': true, + 'enumerable': true, + 'get': getter + }); + + defineProperty( obj, 'c', { + 'configurable': true, + 'enumerable': true, + 'set': setter + }); + + bool = isAccessorPropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isAccessorPropertyIn( obj, 'b' ); + t.equal( bool, true, 'returns true' ); + + bool = isAccessorPropertyIn( obj, 'c' ); + t.equal( bool, true, 'returns true' ); + + t.end(); + + function getter() { + // No-op... + } + + function setter() { + // No-op... + } +}); + +tape( 'the function returns `true` if provided an inherited property having an accessor descriptor', function test( t ) { + var bool; + var obj; + + function Foo() { + return this; + } + + defineProperty( Foo.prototype, 'a', { + 'configurable': true, + 'enumerable': true, + 'get': getter, + 'set': setter + }); + + defineProperty( Foo.prototype, 'b', { + 'configurable': true, + 'enumerable': true, + 'get': getter + }); + + defineProperty( Foo.prototype, 'c', { + 'configurable': true, + 'enumerable': true, + 'set': setter + }); + + obj = new Foo(); + + bool = isAccessorPropertyIn( obj, 'a' ); + t.equal( bool, true, 'returns true' ); + + bool = isAccessorPropertyIn( obj, 'b' ); + t.equal( bool, true, 'returns true' ); + + bool = isAccessorPropertyIn( obj, 'c' ); + t.equal( bool, true, 'returns true' ); + + t.end(); + + function getter() { + // No-op... + } + + function setter() { + // No-op... + } +}); + +tape( 'the function returns `false` if an object property has a data descriptor', function test( t ) { + var bool; + var obj; + + function Foo() { + this.bar = 'beep'; + return this; + } + + obj = { + 'a': 'b' + }; + bool = isAccessorPropertyIn( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + bool = isAccessorPropertyIn( [ 1, 2, 3 ], '1' ); + t.equal( bool, false, 'returns false' ); + + bool = isAccessorPropertyIn( [ 1, 2, 3 ], 1 ); + t.equal( bool, false, 'returns false' ); + + bool = isAccessorPropertyIn( new Foo(), 'bar' ); + t.equal( bool, false, 'returns false' ); + + bool = isAccessorPropertyIn( [ 'a' ], 'length' ); + t.equal( bool, false, 'returns false' ); + + obj = {}; + defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + + bool = isAccessorPropertyIn( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided `null` or `undefined` for the first argument', function test( t ) { + var bool; + + bool = isAccessorPropertyIn( null, 'beep' ); + t.equal( bool, false, 'returns false when provided null' ); + + bool = isAccessorPropertyIn( void 0, 'beep' ); + t.equal( bool, false, 'returns false when provided undefined' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided a property argument which does not correspond to a property', function test( t ) { + var bool; + var obj; + + obj = { + 'a': 'b' + }; + + bool = isAccessorPropertyIn( obj, 'c' ); + t.equal( bool, false, 'returns false' ); + + bool = isAccessorPropertyIn( obj, 'd' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'the function returns `false` if provided an inherited property having a data descriptor', function test( t ) { + var bool; + var obj; + + function Foo() { + return this; + } + + defineProperty( Foo.prototype, 'a', { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': true + }); + + obj = new Foo(); + + bool = isAccessorPropertyIn( obj, 'a' ); + t.equal( bool, false, 'returns false' ); + + bool = isAccessorPropertyIn( {}, 'hasOwnProperty' ); + t.equal( bool, false, 'returns false' ); + + bool = isAccessorPropertyIn( {}, 'toString' ); + t.equal( bool, false, 'returns false' ); + + bool = isAccessorPropertyIn( {}, 'constructor' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); + +tape( 'values are coerced to objects', function test( t ) { + var bool; + + bool = isAccessorPropertyIn( 'beep', 'length' ); + t.equal( bool, false, 'returns false' ); + + t.end(); +}); From 3aefd80fbf048c13196ccd0fc5ccf63f0cef906f Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 01:16:07 -0700 Subject: [PATCH 0206/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 6f0fd5d0b83c..42d2f662040b 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -360,6 +360,15 @@ setReadOnly( ns, 'isAbsolutePath', require( '@stdlib/assert/is-absolute-path' ) */ setReadOnly( ns, 'isAccessorProperty', require( '@stdlib/assert/is-accessor-property' ) ); +/** +* @name isAccessorPropertyIn +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-accessor-property-in} +*/ +setReadOnly( ns, 'isAccessorPropertyIn', require( '@stdlib/assert/is-accessor-property-in' ) ); + /** * @name isAlphagram * @memberof ns From 1f648e33b46f94c8e9e8b2864980a9f8f66b29d8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 01:16:31 -0700 Subject: [PATCH 0207/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 12 ++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 +++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index adf1e27eede0..be78e9926914 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -1733,6 +1733,18 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isAccessorPropertyIn', + 'path': '@stdlib/assert/is-accessor-property-in', + 'value': require( '@stdlib/assert/is-accessor-property-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/has-property', + '@stdlib/assert/is-accessor-property', + '@stdlib/assert/is-data-property-in' + ] +}); + ns.push({ 'alias': 'isAlphagram', 'path': '@stdlib/assert/is-alphagram', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 60d31f7221b6..09990fe39a2b 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1133,6 +1133,7 @@ var db = { "IS_WINDOWS": "IS_WINDOWS\n", "isAbsolutePath": "\n// Windows environment:\nbool = isAbsolutePath( 'C:\\\\foo\\\\bar\\\\baz' )\n\n// POSIX environment:\nbool = isAbsolutePath( '/foo/bar/baz' )\n", "isAccessorProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.get = function getter() { return 'beep'; };\ndefineProperty( obj, 'beep', desc );\nbool = isAccessorProperty( obj, 'boop' )\nbool = isAccessorProperty( obj, 'beep' )\n", + "isAccessorPropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.get = function getter() { return 'beep'; };\ndefineProperty( obj, 'beep', desc );\nbool = isAccessorPropertyIn( obj, 'boop' )\nbool = isAccessorPropertyIn( obj, 'beep' )\n", "isAlphagram": "out = isAlphagram( 'beep' )\nout = isAlphagram( 'zba' )\nout = isAlphagram( '' )\n", "isAlphaNumeric": "bool = isAlphaNumeric( 'abc0123456789' )\nbool = isAlphaNumeric( 'abcdef' )\nbool = isAlphaNumeric( '0xff' )\nbool = isAlphaNumeric( '' )\n", "isAnagram": "str1 = 'I am a weakish speller';\nstr2 = 'William Shakespeare';\nbool = isAnagram( str1, str2 )\nbool = isAnagram( 'bat', 'tabba' )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index d046de6cfd2f..16c539768fc5 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1132,7 +1132,8 @@ var db = { "IS_WEB_WORKER": "\nIS_WEB_WORKER\n Boolean indicating if the runtime is a web worker.\n\n Examples\n --------\n > IS_WEB_WORKER\n \n\n", "IS_WINDOWS": "\nIS_WINDOWS\n Boolean indicating if the current process is running on Windows.\n\n Examples\n --------\n > IS_WINDOWS\n \n\n", "isAbsolutePath": "\nisAbsolutePath( value )\n Tests if a value is an absolute path.\n\n Function behavior is platform-specific. On Windows platforms, the function\n is equal to `.win32()`. On POSIX platforms, the function is equal to\n `.posix()`.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is an absolute path.\n\n Examples\n --------\n // Windows environment:\n > var bool = isAbsolutePath( 'C:\\\\foo\\\\bar\\\\baz' )\n true\n\n // POSIX environment:\n > bool = isAbsolutePath( '/foo/bar/baz' )\n true\n\n\nisAbsolutePath.posix( value )\n Tests if a value is a POSIX absolute path.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is a POSIX absolute path.\n\n Examples\n --------\n > var bool = isAbsolutePath.posix( '/foo/bar/baz' )\n true\n > bool = isAbsolutePath.posix( 'foo/bar/baz' )\n false\n\n\nisAbsolutePath.win32( value )\n Tests if a value is a Windows absolute path.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is a Windows absolute path.\n\n Examples\n --------\n > var bool = isAbsolutePath.win32( 'C:\\\\foo\\\\bar\\\\baz' )\n true\n > bool = isAbsolutePath.win32( 'foo\\\\bar\\\\baz' )\n false\n\n See Also\n --------\n isRelativePath\n", - "isAccessorProperty": "\nisAccessorProperty( value, property )\n Tests if an object's own property has an accessor descriptor.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property has an accessor\n descriptor.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.get = function getter() { return 'beep'; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isAccessorProperty( obj, 'boop' )\n false\n > bool = isAccessorProperty( obj, 'beep' )\n true\n\n See Also\n --------\n hasOwnProp, isDataProperty\n", + "isAccessorProperty": "\nisAccessorProperty( value, property )\n Tests if an object's own property has an accessor descriptor.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property has an accessor\n descriptor.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.get = function getter() { return 'beep'; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isAccessorProperty( obj, 'boop' )\n false\n > bool = isAccessorProperty( obj, 'beep' )\n true\n\n See Also\n --------\n hasOwnProp, isAccessorPropertyIn, isDataProperty\n", + "isAccessorPropertyIn": "\nisAccessorPropertyIn( value, property )\n Tests if an object's own or inherited property has an accessor descriptor.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property has an\n accessor descriptor.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.get = function getter() { return 'beep'; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isAccessorPropertyIn( obj, 'boop' )\n false\n > bool = isAccessorPropertyIn( obj, 'beep' )\n true\n\n See Also\n --------\n hasProp, isAccessorProperty, isDataPropertyIn\n", "isAlphagram": "\nisAlphagram( value )\n Tests if a value is an alphagram (i.e., a sequence of characters arranged in\n alphabetical order).\n\n The function first checks that an input value is a string before validating\n that the value is an alphagram. For non-string values, the function returns\n `false`.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an alphagram.\n\n Examples\n --------\n > var out = isAlphagram( 'beep' )\n true\n > out = isAlphagram( 'zba' )\n false\n > out = isAlphagram( '' )\n false\n\n See Also\n --------\n isAnagram\n", "isAlphaNumeric": "\nisAlphaNumeric( str )\n Tests whether a string contains only alphanumeric characters.\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only alphanumeric\n characters.\n\n Examples\n --------\n > var bool = isAlphaNumeric( 'abc0123456789' )\n true\n > bool = isAlphaNumeric( 'abcdef' )\n true\n > bool = isAlphaNumeric( '0xff' )\n true\n > bool = isAlphaNumeric( '' )\n false\n\n See Also\n --------\n isDigitString\n", "isAnagram": "\nisAnagram( str, value )\n Tests if a value is an anagram.\n\n Parameters\n ----------\n str: string\n Comparison string.\n\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an anagram.\n\n Examples\n --------\n > var str1 = 'I am a weakish speller';\n > var str2 = 'William Shakespeare';\n > var bool = isAnagram( str1, str2 )\n true\n > bool = isAnagram( 'bat', 'tabba' )\n false\n\n See Also\n --------\n isAlphagram\n", @@ -1166,7 +1167,7 @@ var db = { "isConfigurableProperty": "\nisConfigurableProperty( value, property )\n Tests if an object's own property is configurable.\n\n A property is configurable if the property may be deleted or its descriptor\n may be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isConfigurableProperty( obj, 'boop' )\n true\n > bool = isConfigurableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isConfigurablePropertyIn, isEnumerableProperty, isReadableProperty, isWritableProperty\n", "isConfigurablePropertyIn": "\nisConfigurablePropertyIn( value, property )\n Tests if an object's own or inherited property is configurable.\n\n A property is configurable if the property may be deleted or its descriptor\n may be changed.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is\n configurable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = true;\n > defineProperty( obj, 'beep', desc );\n > var bool = isConfigurablePropertyIn( obj, 'boop' )\n true\n > bool = isConfigurablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isConfigurableProperty, isEnumerablePropertyIn, isReadablePropertyIn, isWritablePropertyIn\n", "isDataProperty": "\nisDataProperty( value, property )\n Tests if an object's own property has a data descriptor.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property has a data descriptor.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.get = function getter() { return 'beep'; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isDataProperty( obj, 'boop' )\n true\n > bool = isDataProperty( obj, 'beep' )\n false\n\n See Also\n --------\n hasOwnProp, isAccessorProperty, isDataPropertyIn\n", - "isDataPropertyIn": "\nisDataPropertyIn( value, property )\n Tests if an object's own or inherited property has a data descriptor.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property has a data\n descriptor.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.get = function getter() { return 'beep'; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isDataPropertyIn( obj, 'boop' )\n true\n > bool = isDataPropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n hasProp, isDataProperty\n", + "isDataPropertyIn": "\nisDataPropertyIn( value, property )\n Tests if an object's own or inherited property has a data descriptor.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property has a data\n descriptor.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.get = function getter() { return 'beep'; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isDataPropertyIn( obj, 'boop' )\n true\n > bool = isDataPropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n hasProp, isAccessorPropertyIn, isDataProperty\n", "isDateObject": "\nisDateObject( value )\n Tests if a value is a Date object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a Date object.\n\n Examples\n --------\n > var bool = isDateObject( new Date() )\n true\n > bool = isDateObject( '2017-01-01' )\n false\n\n", "isDigitString": "\nisDigitString( str )\n Tests whether a string contains only numeric digits.\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a string contains only numeric digits.\n\n Examples\n --------\n > var bool = isDigitString( '0123456789' )\n true\n > bool = isDigitString( 'abcdef' )\n false\n > bool = isDigitString( '0xff' )\n false\n > bool = isDigitString( '' )\n false\n\n See Also\n --------\n isHexString, isString\n", "isEmailAddress": "\nisEmailAddress( value )\n Tests if a value is an email address.\n\n Validation is not rigorous. *9* RFCs relate to email addresses, and\n accounting for all of them is a fool's errand. The function performs the\n simplest validation; i.e., requiring at least one `@` symbol.\n\n For rigorous validation, send a confirmation email. If the email bounces,\n consider the email invalid.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an email address.\n\n Examples\n --------\n > var bool = isEmailAddress( 'beep@boop.com' )\n true\n > bool = isEmailAddress( 'beep' )\n false\n > bool = isEmailAddress( null )\n false\n\n", From 3193b48a0930a3fa61fa67c37974a740fdb034b8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 02:28:13 -0700 Subject: [PATCH 0208/1062] Ignore CircleCI configuration directory --- .npmignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.npmignore b/.npmignore index 28b876a23286..25a4167f4332 100644 --- a/.npmignore +++ b/.npmignore @@ -24,6 +24,7 @@ ROADMAP.md # Directories # ############### +.circleci/ .github/ **/benchmark/ **/build/ @@ -98,3 +99,5 @@ appveyor.yml .editorconfig .codeclimate.yml .codecov.yml + +.rtlintrc From 717ef6215b2dd276968eb1f9cf7fca6f16ab5e66 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 12:07:10 -0700 Subject: [PATCH 0209/1062] Fix cross-realm behavior --- .../@stdlib/assert/is-circular/lib/main.js | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-circular/lib/main.js b/lib/node_modules/@stdlib/assert/is-circular/lib/main.js index a5cdb343e0e6..9b0ba8ee39be 100644 --- a/lib/node_modules/@stdlib/assert/is-circular/lib/main.js +++ b/lib/node_modules/@stdlib/assert/is-circular/lib/main.js @@ -25,6 +25,22 @@ var objectKeys = require( '@stdlib/utils/keys' ); // FUNCTIONS // +/** +* Tests if a value is an object. +* +* ## Notes +* +* - The function excludes `null`. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating if a value is an object +*/ +function isObject( value ) { + var type = typeof value; + return ( value !== null && ( type === 'object' || type === 'function' ) ); +} + /** * Tests if the seen array contains a search value. * @@ -63,10 +79,8 @@ function isCircObj( obj, seen ) { } for ( i = 0; i < keys.length; i++ ) { val = obj[ keys[ i ] ]; - if ( val instanceof Object ) { - if ( contains( seen, val ) || isCircObj( val, seen ) ) { - return true; - } + if ( isObject( val ) && ( contains( seen, val ) || isCircObj( val, seen ) ) ) { // eslint-disable-line max-len + return true; } } seen.pop( obj ); @@ -108,8 +122,7 @@ function isCircObj( obj, seen ) { * // returns false */ function isCircular( value ) { - var type = typeof value; - if ( value === null || !( type === 'object' || type === 'function' ) ) { + if ( !isObject( value ) ) { return false; } return isCircObj( value, [] ); From b4ffb91d4fc67575a5aa860f9b8ba8069e512690 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 13:47:01 -0700 Subject: [PATCH 0210/1062] Use double quotes to prevent word splitting --- tools/ci/circle/script | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ci/circle/script b/tools/ci/circle/script index 88a6499cadac..1aef9f40ff62 100755 --- a/tools/ci/circle/script +++ b/tools/ci/circle/script @@ -46,7 +46,7 @@ log_file='/var/log/circle-ci.log' # Determine the root project directory: root_dir=$(dirname "$0")/../../.. -root_dir=$(cd "${root_dir}" && echo $PWD) +root_dir=$(cd "${root_dir}" && echo "$PWD") # Define the project source code directory: base_dir="${root_dir}/lib/node_modules" From 17975cdda2b4b7e100cefcc9f2bd91d3087d10f6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 13:49:55 -0700 Subject: [PATCH 0211/1062] Declare and assign separately to avoid masking return values --- tools/ci/circle/script | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tools/ci/circle/script b/tools/ci/circle/script index 1aef9f40ff62..8fc72ba8c6f3 100755 --- a/tools/ci/circle/script +++ b/tools/ci/circle/script @@ -151,7 +151,8 @@ create_dir() { # # $1 - log file path create_log_file() { - local owner=$(whoami) + local owner + owner=$(whoami) echo "Creating an output log file: $1." >&2 sudo touch "$1" sudo chown "${owner}:${owner}" "$1" @@ -374,8 +375,10 @@ find_tests() { # $1 - total number of nodes # $2 - node index allocate_tests() { + local tests + # Keep those tests (rows) where the VM index equals the modulo: - local tests=$(find_tests | sort | awk -v "n=$1" -v "i=$2" '{if (NR % n == i) printf "%s ", $0} END {print ""}') + tests=$(find_tests | sort | awk -v "n=$1" -v "i=$2" '{if (NR % n == i) printf "%s ", $0} END {print ""}') echo "${tests}" } From 2234c093590b1525d423c06962f36ce5d90a74e7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 17:47:07 -0700 Subject: [PATCH 0212/1062] Declare and assign separately to avoid masking return values --- tools/ci/circle/system_metrics | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/ci/circle/system_metrics b/tools/ci/circle/system_metrics index e7bcd19dc22f..4ab12059376b 100644 --- a/tools/ci/circle/system_metrics +++ b/tools/ci/circle/system_metrics @@ -42,7 +42,8 @@ on_error() { # memory_used_in_MB,total_memory_in_MB,percent_used # memory_usage() { - local mem=$(free -m | awk 'NR==2 {printf "%sMB,%sMB,%.2f%%)", $3, $2, $3*100/$2}') + local mem + mem=$(free -m | awk 'NR==2 {printf "%sMB,%sMB,%.2f%%)", $3, $2, $3*100/$2}') echo "${mem}" } @@ -53,13 +54,15 @@ memory_usage() { # disk_used_in_GB,total_disk_space_in_GB,percent_used # disk_usage() { - local disk=$(df -h | awk '$NF=="/" {printf "%dGB,%dGB,%s", $3, $2, $5}') + local disk + disk=$(df -h | awk '$NF=="/" {printf "%dGB,%dGB,%s", $3, $2, $5}') echo "${disk}" } # Prints the system load average. load_avg() { - local load=$(top -bn1 | grep load | awk '{printf "%.2f", $(NF-2)}') + local load + load=$(top -bn1 | grep load | awk '{printf "%.2f", $(NF-2)}') echo "${load}" } From 9fc93a46bfc558b093a91c2f5009f4107e154ebf Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 17:50:59 -0700 Subject: [PATCH 0213/1062] Use character classes to support other locales --- tools/ci/circle/script | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ci/circle/script b/tools/ci/circle/script index 8fc72ba8c6f3..ee56b021025d 100755 --- a/tools/ci/circle/script +++ b/tools/ci/circle/script @@ -399,7 +399,7 @@ run_tests() { path="${test#${base_dir}/}" # Slugify the path (basic algorithm): - slug="$(echo ${path} | sed -e 's/[^[:alnum:]]/_/g' | tr -s '-' | tr A-Z a-z)" + slug="$(echo ${path} | sed -e 's/[^[:alnum:]]/_/g' | tr -s '-' | tr '[:upper:]' '[:lower:]')" # Define the output log file path: log_file="$2/test-results.${slug}.xml" From 03db82d1b3ae753d326c3f809713987db9d6aad9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 17:53:29 -0700 Subject: [PATCH 0214/1062] Disable lint warning --- tools/ci/circle/script | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/ci/circle/script b/tools/ci/circle/script index ee56b021025d..9a6a346783cd 100755 --- a/tools/ci/circle/script +++ b/tools/ci/circle/script @@ -20,6 +20,8 @@ # # [1]: https://circleci.com +# shellcheck disable=SC2181 + # DEPENDENCIES # From 43ff635362b0a3d3d61adc7c397ae049ee737a3e Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 17:59:33 -0700 Subject: [PATCH 0215/1062] Add link to ST3 plugin --- docs/links/database.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/links/database.json b/docs/links/database.json index 423bbf56df18..cf02c0095137 100644 --- a/docs/links/database.json +++ b/docs/links/database.json @@ -3539,6 +3539,20 @@ "json" ] }, + "https://github.com/SublimeLinter/SublimeLinter-shellcheck": { + "id": "sublime-text-sublimelinter-shellcheck", + "description": "Sublime Text plugin which provides an interface to shellcheck for linting files having \"Shell-Unix-Generic\" syntax (aka Shell Script).", + "short_url": "", + "keywords": [ + "sublime text", + "st3", + "linter", + "shell", + "bash", + "lint", + "shellcheck" + ] + }, "https://github.com/SublimeLinter/SublimeLinter3": { "id": "sublime-text-sublimelinter3", "description": "Linting framework for Sublime Text 3.", From 16c7db79eb184f164b7d339ccb74fd8e7cea3f00 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 18:01:04 -0700 Subject: [PATCH 0216/1062] Add shellscript link --- docs/links/database.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/links/database.json b/docs/links/database.json index cf02c0095137..03f18c4c9a03 100644 --- a/docs/links/database.json +++ b/docs/links/database.json @@ -3626,6 +3626,18 @@ "plugin" ] }, + "https://github.com/koalaman/shellcheck": { + "id": "shellcheck", + "description": "GitHub repository for shellcheck, a shell script static analysis tool.", + "short_url": "", + "keywords": [ + "linter", + "lint", + "shell", + "bash", + "static analysis" + ] + }, "https://github.com/mvoidex/UnicodeMath": { "id": "sublime-text-unicode-math", "description": "Sublime Text package for inserting Unicode math symbols and emoji.", From 41b23d99874bb30b537e5b97bbb0062dce25e895 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 7 Sep 2018 18:01:23 -0700 Subject: [PATCH 0217/1062] Update docs to include shell script static analysis tools --- docs/editors/sublime-text/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/editors/sublime-text/README.md b/docs/editors/sublime-text/README.md index ded31aa49daa..f1b1280d891a 100644 --- a/docs/editors/sublime-text/README.md +++ b/docs/editors/sublime-text/README.md @@ -158,6 +158,8 @@ $ subl . ``` - [**SublimeLinter-json**][sublime-text-sublimelinter-json]: plugin which lints [JSON][json]. + + - [**SublimeLinter-shellcheck**][sublime-text-sublimelinter-shellcheck]: plugin which provides an interface to [shellcheck][shellcheck] for linting files having "Shell-Unix-Generic" syntax (aka Shell Script). diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/docs/repl.txt b/lib/node_modules/@stdlib/utils/property-descriptor/docs/repl.txt index 7d9bb88ebbe0..cf132db82f6e 100644 --- a/lib/node_modules/@stdlib/utils/property-descriptor/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/property-descriptor/docs/repl.txt @@ -10,7 +10,7 @@ value: any Input value. - property: string + property: string|symbol Property name. Returns diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/lib/builtin.js b/lib/node_modules/@stdlib/utils/property-descriptor/lib/builtin.js index 7cd075b4319f..a3197e94e65e 100644 --- a/lib/node_modules/@stdlib/utils/property-descriptor/lib/builtin.js +++ b/lib/node_modules/@stdlib/utils/property-descriptor/lib/builtin.js @@ -31,11 +31,11 @@ var propertyDescriptor = Object.getOwnPropertyDescriptor; * ## Notes * * - In contrast to the built-in `Object.getOwnPropertyDescriptor()`, this function returns `null` if provided `undefined` or `null`, rather than throwing an error. -* - In contrast to the built-in `Object.getOwnPropertyDescriptor()`, this function returns `null` if an object does not have a provided property name, rather than `undefined`. +* - In contrast to the built-in `Object.getOwnPropertyDescriptor()`, this function returns `null` if an object does not have a provided property, rather than `undefined`. * * @private * @param {*} value - input object -* @param {string} property - property name +* @param {(string|symbol)} property - property * @returns {(Object|null)} property descriptor or null * * @example diff --git a/lib/node_modules/@stdlib/utils/property-descriptor/lib/polyfill.js b/lib/node_modules/@stdlib/utils/property-descriptor/lib/polyfill.js index 7687a3b457e6..f9d3258049bd 100644 --- a/lib/node_modules/@stdlib/utils/property-descriptor/lib/polyfill.js +++ b/lib/node_modules/@stdlib/utils/property-descriptor/lib/polyfill.js @@ -31,12 +31,12 @@ var hasOwnProp = require( '@stdlib/assert/has-own-property' ); * ## Notes * * - In contrast to the built-in `Object.getOwnPropertyDescriptor()`, this function returns `null` if provided `undefined` or `null`, rather than throwing an error. -* - In contrast to the built-in `Object.getOwnPropertyDescriptor()`, this function returns `null` if an object does not have a provided property name, rather than `undefined`. +* - In contrast to the built-in `Object.getOwnPropertyDescriptor()`, this function returns `null` if an object does not have a provided property, rather than `undefined`. * - In environments lacking `Object.getOwnPropertyDescriptor()` support, property descriptors do not exist. In non-supporting environment, if an object has a provided property, this function returns a descriptor object equivalent to that returned in a supporting environment; otherwise, the function returns `null`. * * @private * @param {*} value - input object -* @param {string} property - property name +* @param {(string|symbol)} property - property * @returns {(Object|null)} property descriptor or null * * @example From 36c60f288e460807ddf6b366b5b3e760c9f40350 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 11 Sep 2018 02:52:24 -0700 Subject: [PATCH 0266/1062] Rename variable and update examples --- .../@stdlib/utils/define-property/lib/builtin.js | 6 ++++-- .../@stdlib/utils/define-property/lib/polyfill.js | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js b/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js index ec1972533ad9..e572de647688 100644 --- a/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js +++ b/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js @@ -45,15 +45,17 @@ * * @example * var obj = {}; +* * defineProperty( obj, 'foo', { * 'value': 'bar' * }); +* * var str = obj.foo; * // returns 'bar' */ -var main = Object.defineProperty; +var defineProperty = Object.defineProperty; // EXPORTS // -module.exports = main; +module.exports = defineProperty; diff --git a/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js b/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js index 9612b645fb71..d57f9db398b1 100644 --- a/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js +++ b/lib/node_modules/@stdlib/utils/define-property/lib/polyfill.js @@ -60,9 +60,11 @@ var lookupSetter = objectProtoype.__lookupSetter__; * * @example * var obj = {}; +* * defineProperty( obj, 'foo', { * 'value': 'bar' * }); +* * var str = obj.foo; * // returns 'bar' */ From f1ff635c83b14e61eb33313388061013ae6617b9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 11 Sep 2018 02:53:35 -0700 Subject: [PATCH 0267/1062] Update param type --- lib/node_modules/@stdlib/utils/define-property/docs/repl.txt | 2 +- lib/node_modules/@stdlib/utils/define-property/lib/builtin.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/define-property/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-property/docs/repl.txt index 84879f669d28..b399651277b2 100644 --- a/lib/node_modules/@stdlib/utils/define-property/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/define-property/docs/repl.txt @@ -13,7 +13,7 @@ obj: Object Object on which to define the property. - prop: string + prop: string|symbol Property name. descriptor: Object diff --git a/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js b/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js index e572de647688..b3bbfbb7b7cd 100644 --- a/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js +++ b/lib/node_modules/@stdlib/utils/define-property/lib/builtin.js @@ -30,7 +30,7 @@ * @name defineProperty * @type {Function} * @param {Object} obj - object on which to define the property -* @param {string} prop - property name +* @param {(string|symbol)} prop - property name * @param {Object} descriptor - property descriptor * @param {boolean} [descriptor.configurable=false] - boolean indicating if property descriptor can be changed and if the property can be deleted from the provided object * @param {boolean} [descriptor.enumerable=false] - boolean indicating if the property shows up when enumerating object properties From 5dff62d40979dc8848149f98fa8d6e2542de3804 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 11 Sep 2018 02:59:21 -0700 Subject: [PATCH 0268/1062] Add utility to return an inherited property descriptor --- .../inherited-property-descriptor/README.md | 136 +++++++ .../benchmark/benchmark.js | 72 ++++ .../docs/repl.txt | 31 ++ .../examples/index.js | 44 +++ .../lib/index.js | 40 ++ .../inherited-property-descriptor/lib/main.js | 85 +++++ .../package.json | 69 ++++ .../test/test.js | 352 ++++++++++++++++++ 8 files changed, 829 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-descriptor/README.md create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-descriptor/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-descriptor/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-descriptor/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-descriptor/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-descriptor/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-descriptor/package.json create mode 100644 lib/node_modules/@stdlib/utils/inherited-property-descriptor/test/test.js diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptor/README.md b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/README.md new file mode 100644 index 000000000000..a00e5064c2ea --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/README.md @@ -0,0 +1,136 @@ + + +# inheritedPropertyDescriptor + +> Return a property descriptor for an object's inherited property. + +
+ +## Usage + + + +```javascript +var inheritedPropertyDescriptor = require( '@stdlib/utils/inherited-property-descriptor' ); +``` + +#### inheritedPropertyDescriptor( obj, property\[, level] ) + +Returns a property descriptor for an object's inherited property. + +```javascript +function Foo() { + return this; +} + +Foo.prototype.bar = 'foo'; + +var obj = new Foo(); + +var desc = inheritedPropertyDescriptor( obj, 'bar' ); +// returns {'configurable':true,'enumerable':true,'writable':true,'value':'foo'} +``` + +By default, the function walks an object's entire prototype chain. To limit the inheritance level, provide a `level` argument. + +```javascript +var inherit = require( '@stdlib/utils/inherit' ); + +function Bar() { + return this; +} + +Bar.prototype.beep = 'beepboop'; + +function Foo() { + Bar.call( this ); + return this; +} + +inherit( Foo, Bar ); +Foo.prototype.beep = 'boop'; + +var f = new Foo(); +var desc = inheritedPropertyDescriptor( f, 'beep', 2 ); +// returns {'configurable':true,'enumerable':true,'writable':true,'value':'beepboop'} +``` + +
+ + + +
+ +## Notes + +- This function differs from the built-in `Object.getOwnPropertyDescriptor()` as follows: + + - If provided `null` or `undefined`, the function returns `null`, rather than throwing an error. + - If an object does not have a provided inherited property, the function returns `null`, rather than `undefined`. + +
+ + + +
+ +## Examples + + + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var inheritedPropertyDescriptor = require( '@stdlib/utils/inherited-property-descriptor' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'value': 'qux', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; + +var obj = new Foo(); +var desc = inheritedPropertyDescriptor( obj, 'foo' ); + +console.log( desc ); +// => {'configurable':true,'enumerable':false,'writable':true,'value':['bar']} +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptor/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/benchmark/benchmark.js new file mode 100644 index 000000000000..655bc4d50195 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isObject = require( '@stdlib/assert/is-plain-object' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var inheritedPropertyDescriptor = require( './../lib' ); // eslint-disable-line id-length + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = 'bar'; + defineProperty( this, 'g', { + 'value': randu(), + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = randu(); + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.h = randu(); + out = inheritedPropertyDescriptor( obj, 'h' ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isObject( out ) ) { + b.fail( 'should return an object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptor/docs/repl.txt b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/docs/repl.txt new file mode 100644 index 000000000000..8ebdb2aa81b2 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/docs/repl.txt @@ -0,0 +1,31 @@ + +{{alias}}( value, property[, level] ) + Returns a property descriptor for an object's inherited property. + + If provided `null` or `undefined` or provided a non-existent property, the + function returns `null`. + + Parameters + ---------- + value: any + Input value. + + property: string|symbol + Property name. + + level: integer (optional) + Inheritance level. + + Returns + ------- + desc: Object|null + Property descriptor. + + Examples + -------- + > var desc = {{alias}}( {}, 'toString' ) + {...} + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptor/examples/index.js b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/examples/index.js new file mode 100644 index 000000000000..3f25fcc9c187 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/examples/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var inheritedPropertyDescriptor = require( './../lib' ); // eslint-disable-line id-length + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'value': 'qux', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; + +var obj = new Foo(); +var desc = inheritedPropertyDescriptor( obj, 'foo' ); + +console.log( desc ); +// => {'configurable':true,'enumerable':true,'writable':true,'value':['bar']} diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptor/lib/index.js b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/lib/index.js new file mode 100644 index 000000000000..5085f6ed04c0 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/lib/index.js @@ -0,0 +1,40 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return a property descriptor for an object's inherited property. +* +* @module @stdlib/utils/inherited-property-descriptor +* +* @example +* var inheritedPropertyDescriptor = require( '@stdlib/utils/inherited-property-descriptor' ); +* +* var desc = inheritedPropertyDescriptor( {}, 'toString' ); +* // returns {...} +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptor/lib/main.js b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/lib/main.js new file mode 100644 index 000000000000..d5a12b6e0768 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/lib/main.js @@ -0,0 +1,85 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var MAX_SAFE_INTEGER = require( '@stdlib/constants/math/float64-max-safe-integer' ); +var isPositiveInteger = require( '@stdlib/assert/is-positive-integer' ).isPrimitive; +var getOwnPropertyDescriptor = require( '@stdlib/utils/property-descriptor' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); + + +// MAIN // + +/** +* Returns a property descriptor for an object's inherited property. +* +* ## Notes +* +* - In contrast to the built-in `Object.getOwnPropertyDescriptor()`, this function returns `null` if provided `undefined` or `null`, rather than throwing an error. +* - In contrast to the built-in `Object.getOwnPropertyDescriptor()`, this function returns `null` if an object does not have an inherited provided property, rather than `undefined`. +* +* @private +* @param {*} value - input object +* @param {(string|symbol)} property - property +* @param {PositiveInteger} [level] - inheritance level +* @throws {TypeError} third argument must be a positive integer +* @returns {(Object|null)} property descriptor or null +* +* @example +* var desc = inheritedPropertyDescriptor( {}, 'toString' ); +* // returns {...} +*/ +function inheritedPropertyDescriptor( value, property, level ) { // eslint-disable-line id-length + var desc; + var obj; + var N; + var n; + if ( arguments.length > 2 ) { + if ( !isPositiveInteger( level ) ) { + throw new TypeError( 'invalid argument. Third argument must be a positive integer. Value: `' + level + '`.' ); + } + N = level; + } else { + N = MAX_SAFE_INTEGER; + } + if ( value === null || value === void 0 ) { + return null; + } + // Get the value's prototype: + obj = getPrototypeOf( value ); + + // Walk the prototype chain in search of a specified property... + n = 1; + while ( obj && n <= N ) { + desc = getOwnPropertyDescriptor( obj, property ); + if ( desc ) { + return desc; + } + obj = getPrototypeOf( obj ); + n += 1; + } + return null; +} + + +// EXPORTS // + +module.exports = inheritedPropertyDescriptor; diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptor/package.json b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/package.json new file mode 100644 index 000000000000..0550c5d2730d --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/package.json @@ -0,0 +1,69 @@ +{ + "name": "@stdlib/utils/inherited-property-descriptor", + "version": "0.0.0", + "description": "Return a property descriptor for an object's inherited property.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "in", + "inherited", + "prototype", + "proto", + "property", + "prop", + "descriptor", + "desc" + ] +} diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptor/test/test.js b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/test/test.js new file mode 100644 index 000000000000..693f6b46dff8 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/test/test.js @@ -0,0 +1,352 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var inherit = require( '@stdlib/utils/inherit' ); +var inheritedPropertyDescriptor = require( './../lib' ); // eslint-disable-line id-length + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof inheritedPropertyDescriptor, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function throws an error if not provided a positive integer for the inheritance level', function test( t ) { + var values; + var i; + + values = [ + '5', + -5, + 0, + 3.14, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + inheritedPropertyDescriptor( {}, 'toString', value ); + }; + } +}); + +tape( 'the function returns an inherited property descriptor', function test( t ) { + var expected; + var actual; + var obj; + + function Foo() { + this.a = 'b'; + return this; + } + + Foo.prototype.foo = 'bar'; + defineProperty( Foo.prototype, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': true + }); + + obj = new Foo(); + + expected = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'bar' + }; + actual = inheritedPropertyDescriptor( obj, 'foo' ); + t.deepEqual( actual, expected, 'returns expected value' ); + + expected = { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': true + }; + actual = inheritedPropertyDescriptor( obj, 'beep' ); + t.deepEqual( actual, expected, 'returns expected value' ); + + expected = null; + actual = inheritedPropertyDescriptor( obj, 'a' ); + t.strictEqual( actual, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns an inherited property descriptor (multiple inheritance)', function test( t ) { + var expected; + var actual; + var obj; + + function Bar() { + this.a = 'b'; + return this; + } + + Bar.prototype.baz = 'bap'; + Bar.prototype.foo = 'bebop'; + + function Foo() { + Bar.call( this ); + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.foo = 'bar'; + defineProperty( Foo.prototype, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': true + }); + + obj = new Foo(); + + expected = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'bar' + }; + actual = inheritedPropertyDescriptor( obj, 'foo' ); + t.deepEqual( actual, expected, 'returns expected value' ); + + expected = { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': true + }; + actual = inheritedPropertyDescriptor( obj, 'beep' ); + t.deepEqual( actual, expected, 'returns expected value' ); + + expected = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'bap' + }; + actual = inheritedPropertyDescriptor( obj, 'baz' ); + t.deepEqual( actual, expected, 'returns expected value' ); + + expected = null; + actual = inheritedPropertyDescriptor( obj, 'a' ); + t.strictEqual( actual, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns an inherited property descriptor (symbol)', function test( t ) { + var expected; + var actual; + var obj; + var s1; + var s2; + + if ( hasSymbolSupport() === false ) { + t.pass( 'environment lacks Symbol support' ); + return t.end(); + } + s1 = Symbol( 'foo' ); + s2 = Symbol( 'beep' ); + + function Foo() { + this.a = 'b'; + return this; + } + + Foo.prototype[ s1 ] = 'bar'; + defineProperty( Foo.prototype, s2, { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': true + }); + + obj = new Foo(); + + expected = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'bar' + }; + actual = inheritedPropertyDescriptor( obj, s1 ); + t.deepEqual( actual, expected, 'returns expected value' ); + + expected = { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': true + }; + actual = inheritedPropertyDescriptor( obj, s2 ); + t.deepEqual( actual, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports limiting the inheritance level', function test( t ) { + var expected; + var actual; + var obj; + + function Bar() { + this.a = 'b'; + return this; + } + + Bar.prototype.baz = 'bap'; + Bar.prototype.foo = 'bebop'; + + function Foo() { + Bar.call( this ); + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.foo = 'bar'; + defineProperty( Foo.prototype, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': true + }); + + obj = new Foo(); + + expected = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'bar' + }; + actual = inheritedPropertyDescriptor( obj, 'foo', 2 ); + t.deepEqual( actual, expected, 'returns expected value' ); + + expected = { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': true + }; + actual = inheritedPropertyDescriptor( obj, 'beep', 1 ); + t.deepEqual( actual, expected, 'returns expected value' ); + + expected = null; + actual = inheritedPropertyDescriptor( obj, 'baz', 1 ); + t.strictEqual( actual, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `null` if provided a non-string primitive or `null`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + 3.14, + NaN, + true, + false, + void 0, + null + ]; + expected = null; + + for ( i = 0; i < values.length; i++ ) { + actual = inheritedPropertyDescriptor( values[ i ], 'length' ); + t.strictEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); + +tape( 'the function coerces a non-symbol property argument to a string', function test( t ) { + var expected; + var actual; + var obj; + + function Foo() { + return this; + } + + Foo.prototype[ 'null' ] = true; + Foo.prototype[ '[object Object]' ] = false; + + obj = new Foo(); + + expected = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': true + }; + actual = inheritedPropertyDescriptor( obj, null ); + t.deepEqual( actual, expected, 'returns expected value' ); + + expected = { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': false + }; + actual = inheritedPropertyDescriptor( obj, {} ); + t.deepEqual( actual, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `null` if provided a non-existent inherited property', function test( t ) { + var expected; + var actual; + var obj; + + obj = {}; + + expected = null; + actual = inheritedPropertyDescriptor( obj, 'a' ); + + t.strictEqual( actual, expected, 'returns expected value' ); + t.end(); +}); From dc4e01845c565655c759747dc666b7e879bd0193 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 11 Sep 2018 02:59:47 -0700 Subject: [PATCH 0269/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 381f47324802..680ee5c49d52 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -774,6 +774,15 @@ setReadOnly( utils, 'inherit', require( '@stdlib/utils/inherit' ) ); */ setReadOnly( utils, 'inheritedKeys', require( '@stdlib/utils/inherited-keys' ) ); +/** +* @name inheritedPropertyDescriptor +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/inherited-property-descriptor} +*/ +setReadOnly( utils, 'inheritedPropertyDescriptor', require( '@stdlib/utils/inherited-property-descriptor' ) ); + /** * @name inheritedPropertyDescriptors * @memberof utils From a6f6a5f7d32fdb73ab2fbe97c1eee13cc374e304 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 11 Sep 2018 03:02:12 -0700 Subject: [PATCH 0270/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 15 ++++++ .../@stdlib/repl/code-blocks/lib/db.js | 13 ++--- lib/node_modules/@stdlib/repl/help/lib/db.js | 53 ++++++++++--------- 3 files changed, 49 insertions(+), 32 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index be78e9926914..bb30959905e9 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -1363,6 +1363,21 @@ ns.push({ ] }); +ns.push({ + 'alias': 'inheritedPropertyDescriptor', + 'path': '@stdlib/utils/inherited-property-descriptor', + 'value': require( '@stdlib/utils/inherited-property-descriptor' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/property-descriptor', + '@stdlib/utils/property-descriptor-in', + '@stdlib/utils/inherited-keys', + '@stdlib/utils/inherited-property-descriptors', + '@stdlib/utils/inherited-property-names', + '@stdlib/utils/inherited-property-symbols' + ] +}); + ns.push({ 'alias': 'inheritedPropertyDescriptors', 'path': '@stdlib/utils/inherited-property-descriptors', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 09990fe39a2b..dbd7c8101cc4 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -820,7 +820,7 @@ var db = { "countBy": "function indicator( v ) {\n if ( v[ 0 ] === 'b' ) {\n return 'b';\n }\n return 'other';\n};\ncollection = [ 'beep', 'boop', 'foo', 'bar' ];\nout = countBy( collection, indicator )\n", "countByAsync": "\n// Basic usage:\nfunction indicator( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) ? 'even': 'odd' );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\narr = [ 3000, 2500, 1000 ];\ncountByAsync( arr, indicator, done )\n\n// Limit number of concurrent invocations:\nfunction indicator( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) ? 'even' : 'odd' );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\ncountByAsync( arr, opts, indicator, done )\n\n// Process sequentially:\nfunction indicator( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) ? 'even' : 'odd' );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\nopts = { 'series': true };\narr = [ 3000, 2500, 1000 ];\ncountByAsync( arr, opts, indicator, done )\n", "curry": "function add( x, y ) { return x + y; };\nf = curry( add );\nsum = f( 2 )( 3 )\n\n// Supply arity:\nfunction add() { return arguments[ 0 ] + arguments[ 1 ]; };\nf = curry( add, 2 );\nsum = f( 2 )( 3 )\n\n// Provide function context:\nobj = {\n 'name': 'Ada',\n 'greet': function greet( word1, word2 ) {\n return word1 + ' ' + word2 + ', ' + this.name + '!'\n }\n};\nf = curry( obj.greet, obj );\nstr = f( 'Hello' )( 'there' )\n", - "curryRight": "function add( x, y ) { return x + y; };\nf = curryRight( add );\nsum = f( 2 )( 3 )\n\n// Supply arity:\nfunction add() { return arguments[ 0 ] + arguments[ 1 ]; };\nf = curryRight( add, 2 );\nsum = f( 2 )( 3 )\n\n// Provide function context:\nobj = {\n 'name': 'Ada',\n 'greet': function greet( word1, word2 ) {\n return word1 + ' ' + word2 + ', ' + this.name + '!'\n }\n};\nf = curryRight( obj.greet, obj );\nstr = f( 'Hello' )( 'there' )\n", + "curryRight": "function add( x, y ) { return x + y; };\nf = curryRight( add );\nsum = f( 2 )( 3 )\n\n// Supply arity:\nfunction add() { return arguments[ 0 ] + arguments[ 1 ]; };\nf = curryRight( add, 2 );\nsum = f( 2 )( 3 )\n\n// Provide function context:\nobj = {\n 'name': 'Ada',\n 'greet': function greet( word1, word2 ) {\n return word1 + ' ' + word2 + ', ' + this.name + '!'\n }\n};\nf = curryRight( obj.greet, obj );\nstr = f( 'there' )( 'Hello' )\n", "cwd": "dir = cwd()\n", "DALE_CHALL_NEW": "list = DALE_CHALL_NEW()\n", "datasets": "out = datasets( 'MONTH_NAMES_EN' )\nopts = { 'data': 'cities' };\nout = datasets( 'MINARD_NAPOLEONS_MARCH', opts )\n", @@ -1101,6 +1101,7 @@ var db = { "indexOf": "\n// Basic usage:\narr = [ 4, 3, 2, 1 ];\nidx = indexOf( arr, 3 )\narr = [ 4, 3, 2, 1 ];\nidx = indexOf( arr, 5 )\n\n// Using a `fromIndex`:\narr = [ 1, 2, 3, 4, 5, 2, 6 ];\nidx = indexOf( arr, 2, 3 )\n\n// `fromIndex` which exceeds `array` length:\narr = [ 1, 2, 3, 4, 2, 5 ];\nidx = indexOf( arr, 2, 10 )\n\n// Negative `fromIndex`:\narr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];\nidx = indexOf( arr, 2, -4 )\nidx = indexOf( arr, 2, -1 )\n\n// Negative `fromIndex` exceeding input `array` length:\narr = [ 1, 2, 3, 4, 5, 2, 6 ];\nidx = indexOf( arr, 2, -10 )\n\n// Array-like objects:\nstr = 'bebop';\nidx = indexOf( str, 'o' )\n", "inherit": "\n// Create a parent constructor:\nfunction Foo() { return this; };\nFoo.prototype.beep = function beep() { return 'boop'; };\n\n// Create a child constructor:\nfunction Bar() { Foo.call( this ); return this; };\n\n// Setup inheritance:\ninherit( Bar, Foo );\nbar = new Bar();\nv = bar.beep()\n", "inheritedKeys": "keys = inheritedKeys( {} )\n", + "inheritedPropertyDescriptor": "desc = inheritedPropertyDescriptor( {}, 'toString' )\n", "inheritedPropertyDescriptors": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\ndesc = inheritedPropertyDescriptors( obj )\n", "inheritedPropertyNames": "keys = inheritedPropertyNames( [] )\n", "inheritedPropertySymbols": "symbols = inheritedPropertySymbols( [] )\n", @@ -1351,11 +1352,11 @@ var db = { "MONTHS_IN_YEAR": "yrs = 3.14;\nmons = yrs * MONTHS_IN_YEAR\n", "moveProperty": "obj1 = { 'a': 'b' };\nobj2 = {};\nbool = moveProperty( obj1, 'a', obj2 )\nbool = moveProperty( obj1, 'c', obj2 )\n", "nativeClass": "str = nativeClass( 'a' )\nstr = nativeClass( 5 )\nfunction Beep(){};\nstr = nativeClass( new Beep() )\n", - "ndarray": "ctor = ndarray( 'generic', 3 )\n\n// To create a new instance...\nb = [ 1.0, 2.0, 3.0, 4.0 ]; // underlying data buffer\nd = [ 2, 2 ]; // shape\ns = [ 2, 1 ]; // strides\no = 0; // index offset\narr = ctor( b, d, s, o, 'row-major' )\n\n// Get an element using subscripts:\nv = arr.get( 1, 1 )\n\n// Get an element using a linear index:\nv = arr.iget( 3 )\n\n// Set an element using subscripts:\narr.set( 1, 1, 40.0 );\narr.get( 1, 1 )\n\n// Set an element using a linear index:\narr.iset( 3, 99.0 );\narr.get( 1, 1 )\n", + "ndarray": "ctor = ndarray( 'generic', 2 )\n\n// To create a new instance...\nb = [ 1.0, 2.0, 3.0, 4.0 ]; // underlying data buffer\nd = [ 2, 2 ]; // shape\ns = [ 2, 1 ]; // strides\no = 0; // index offset\narr = ctor( b, d, s, o, 'row-major' )\n\n// Get an element using subscripts:\nv = arr.get( 1, 1 )\n\n// Get an element using a linear index:\nv = arr.iget( 3 )\n\n// Set an element using subscripts:\narr.set( 1, 1, 40.0 );\narr.get( 1, 1 )\n\n// Set an element using a linear index:\narr.iset( 3, 99.0 );\narr.get( 1, 1 )\n", "ndarrayCastingModes": "out = ndarrayCastingModes()\n", "ndarrayDataTypes": "out = ndarrayDataTypes()\n", "ndarrayIndexModes": "out = ndarrayIndexModes()\n", - "ndarrayMemoized": "ctor = ndarrayMemoized( 'generic', 3 )\nf = ndarrayMemoized( 'generic', 3 )\nbool = ( f === ctor )\n\n// To create a new instance...\nb = [ 1.0, 2.0, 3.0, 4.0 ]; // underlying data buffer\nd = [ 2, 2 ]; // shape\ns = [ 2, 1 ]; // strides\no = 0; // index offset\narr = ctor( b, d, s, o, 'row-major' )\n\n// Get an element using subscripts:\nv = arr.get( 1, 1 )\n\n// Get an element using a linear index:\nv = arr.iget( 3 )\n\n// Set an element using subscripts:\narr.set( 1, 1, 40.0 );\narr.get( 1, 1 )\n\n// Set an element using a linear index:\narr.iset( 3, 99.0 );\narr.get( 1, 1 )\n", + "ndarrayMemoized": "ctor = ndarrayMemoized( 'generic', 2 )\nf = ndarrayMemoized( 'generic', 2 )\nbool = ( f === ctor )\n\n// To create a new instance...\nb = [ 1.0, 2.0, 3.0, 4.0 ]; // underlying data buffer\nd = [ 2, 2 ]; // shape\ns = [ 2, 1 ]; // strides\no = 0; // index offset\narr = ctor( b, d, s, o, 'row-major' )\n\n// Get an element using subscripts:\nv = arr.get( 1, 1 )\n\n// Get an element using a linear index:\nv = arr.iget( 3 )\n\n// Set an element using subscripts:\narr.set( 1, 1, 40.0 );\narr.get( 1, 1 )\n\n// Set an element using a linear index:\narr.iset( 3, 99.0 );\narr.get( 1, 1 )\n", "ndarrayMinDataType": "dt = ndarrayMinDataType( 3.141592653589793 )\ndt = ndarrayMinDataType( 3 )\ndt = ndarrayMinDataType( -3 )\ndt = ndarrayMinDataType( '-3' )\n", "ndarrayNextDataType": "out = ndarrayNextDataType( 'float32' )\n", "ndarrayOrders": "out = ndarrayOrders()\n", @@ -1421,7 +1422,7 @@ var db = { "propertyNamesIn": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nkeys = propertyNamesIn( obj )\n", "propertySymbols": "s = propertySymbols( {} )\n", "propertySymbolsIn": "s = propertySymbolsIn( [] )\n", - "Proxy": "function get( obj, prop ) { return obj[ prop ] * 2.0 };\nh = { 'get': get };\np = Proxy( {}, h );\np.a = 3.14;\np.a\n", + "Proxy": "function get( obj, prop ) { return obj[ prop ] * 2.0 };\nh = { 'get': get };\np = new Proxy( {}, h );\np.a = 3.14;\np.a\n", "push": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\narr = push( arr, 6.0, 7.0 )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\narr = push( arr, 3.0, 4.0 )\n\n// Array-like object:\narr = { 'length': 0 };\narr = push( arr, 1.0, 2.0 )\n", "quarterOfYear": "q = quarterOfYear( new Date() )\nq = quarterOfYear( 4 )\nq = quarterOfYear( 'June' )\n\n// Other ways to supply month:\nq = quarterOfYear( 'April' )\nq = quarterOfYear( 'apr' )\n", "random.iterators.arcsine": "it = random.iterators.arcsine( 0.0, 1.0 );\nr = it.next().value\nr = it.next().value\n", @@ -1499,7 +1500,7 @@ var db = { "realmin": "m = realmin( 'float16' )\nm = realmin( 'float32' )\n", "reduce": "function sum( acc, v ) { return acc + v; };\narr = [ 1.0, 2.0, 3.0 ];\nout = reduce( arr, 0, sum )\n", "reduceAsync": "\n// Basic usage:\nfunction fcn( acc, value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n acc.sum += value;\n next( null, acc );\n }\n};\nfunction done( error, acc ) {\n if ( error ) {\n throw error;\n }\n console.log( acc.sum );\n};\narr = [ 3000, 2500, 1000 ];\nacc = { 'sum': 0 };\nreduceAsync( arr, acc, fcn, done )\n\n// Limit number of concurrent invocations:\nfunction fcn( acc, value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n acc.sum += value;\n next( null, acc );\n }\n};\nfunction done( error, acc ) {\n if ( error ) {\n throw error;\n }\n console.log( acc.sum );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\nacc = { 'sum': 0 };\nreduceAsync( arr, acc, opts, fcn, done )\n\n// Process concurrently:\nfunction fcn( acc, value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n acc.sum += value;\n next( null, acc );\n }\n};\nfunction done( error, acc ) {\n if ( error ) {\n throw error;\n }\n console.log( acc.sum );\n};\nopts = { 'series': false };\narr = [ 3000, 2500, 1000 ];\nacc = { 'sum': 0 };\nreduceAsync( arr, acc, opts, fcn, done )\n", - "reduceRight": "function sum( acc, v ) {\n console.log( '%s: %d', acc, v );\n return acc + v;\n};\narr = [ 1.0, 2.0, 3.0 ];\nout = reduceRight( arr, 0, sum )\n", + "reduceRight": "function sum( acc, v ) {\n console.log( '%s: %d', acc, v );\n return acc + v;\n};\narr = [ 1.0, 2.0, 3.0 ];\nout = reduceRight( arr, 0, sum );\nout\n", "reduceRightAsync": "\n// Basic usage:\nfunction fcn( acc, value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n acc.sum += value;\n next( null, acc );\n }\n};\nfunction done( error, acc ) {\n if ( error ) {\n throw error;\n }\n console.log( acc.sum );\n};\narr = [ 1000, 2500, 3000 ];\nacc = { 'sum': 0 };\nreduceRightAsync( arr, acc, fcn, done )\n\n// Limit number of concurrent invocations:\nfunction fcn( acc, value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n acc.sum += value;\n next( null, acc );\n }\n};\nfunction done( error, acc ) {\n if ( error ) {\n throw error;\n }\n console.log( acc.sum );\n};\nopts = { 'limit': 2 };\narr = [ 1000, 2500, 3000 ];\nacc = { 'sum': 0 };\nreduceRightAsync( arr, acc, opts, fcn, done )\n\n// Process concurrently:\nfunction fcn( acc, value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n acc.sum += value;\n next( null, acc );\n }\n};\nfunction done( error, acc ) {\n if ( error ) {\n throw error;\n }\n console.log( acc.sum );\n};\nopts = { 'series': false };\narr = [ 1000, 2500, 3000 ];\nacc = { 'sum': 0 };\nreduceRightAsync( arr, acc, opts, fcn, done )\n", "reFromString": "re = reFromString( '/beep/' )\nre = reFromString( '/beep' )\n", "reim": "z = new Complex128( 5.0, 3.0 );\nout = reim( z )\n", @@ -1599,7 +1600,7 @@ var db = { "typedarraypool": "arr = typedarraypool()\narr = typedarraypool( 'float32' )\n", "typemax": "m = typemax( 'int8' )\nm = typemax( 'uint32' )\n", "typemin": "m = typemin( 'int8' )\nm = typemin( 'uint32' )\n", - "typeOf": "\n// Built-ins:\nt = typeOf( 'a' )\nt = typeOf( 5 )\nt = typeOf( NaN )\nt = typeOf( true )\nt = typeOf( false )\nt = typeOf( null )\nt = typeOf( undefined )\nt = typeOf( [] )\nt = typeOf( {} )\nt = typeOf( function noop() {} )\nt = typeOf( new Symbol( 'beep' ) )\nt = typeOf( /.+/ )\nt = typeOf( new String( 'beep' ) )\nt = typeOf( new Number( 5 ) )\nt = typeOf( new Boolean( false ) )\nt = typeOf( new Array() )\nt = typeOf( new Object() )\nt = typeOf( new Int8Array( 10 ) )\nt = typeOf( new Uint8Array( 10 ) )\nt = typeOf( new Uint8ClampedArray( 10 ) )\nt = typeOf( new Int16Array( 10 ) )\nt = typeOf( new Uint16Array( 10 ) )\nt = typeOf( new Int32Array( 10 ) )\nt = typeOf( new Uint32Array( 10 ) )\nt = typeOf( new Float32Array( 10 ) )\nt = typeOf( new Float64Array( 10 ) )\nt = typeOf( new ArrayBuffer( 10 ) )\nt = typeOf( new Date() )\nt = typeOf( new RegExp( '.+ )') )\nt = typeOf( new Map() )\nt = typeOf( new Set() )\nt = typeOf( new WeakMap() )\nt = typeOf( new WeakSet() )\nt = typeOf( new Error( 'beep' ) )\nt = typeOf( new TypeError( 'beep' ) )\nt = typeOf( new SyntaxError( 'beep' ) )\nt = typeOf( new ReferenceError( 'beep' ) )\nt = typeOf( new URIError( 'beep' ) )\nt = typeOf( new RangeError( 'beep' ) )\nt = typeOf( new EvalError( 'beep' ) )\nt = typeOf( Math )\nt = typeOf( JSON )\n\n// Arguments object:\nfunction beep() { return arguments; };\nt = typeOf( beep() )\n\n// Node.js Buffer object:\nt = typeOf( new Buffer( 10 ) )\n\n// Custom constructor:\nfunction Person() { return this };\nt = typeOf( new Person() )\n\n// Anonymous constructor:\nFoo = function () { return this; };\nt = typeOf new Foo() )\n", + "typeOf": "\n// Built-ins:\nt = typeOf( 'a' )\nt = typeOf( 5 )\nt = typeOf( NaN )\nt = typeOf( true )\nt = typeOf( false )\nt = typeOf( null )\nt = typeOf( undefined )\nt = typeOf( [] )\nt = typeOf( {} )\nt = typeOf( function noop() {} )\nt = typeOf( Symbol( 'beep' ) )\nt = typeOf( /.+/ )\nt = typeOf( new String( 'beep' ) )\nt = typeOf( new Number( 5 ) )\nt = typeOf( new Boolean( false ) )\nt = typeOf( new Array() )\nt = typeOf( new Object() )\nt = typeOf( new Int8Array( 10 ) )\nt = typeOf( new Uint8Array( 10 ) )\nt = typeOf( new Uint8ClampedArray( 10 ) )\nt = typeOf( new Int16Array( 10 ) )\nt = typeOf( new Uint16Array( 10 ) )\nt = typeOf( new Int32Array( 10 ) )\nt = typeOf( new Uint32Array( 10 ) )\nt = typeOf( new Float32Array( 10 ) )\nt = typeOf( new Float64Array( 10 ) )\nt = typeOf( new ArrayBuffer( 10 ) )\nt = typeOf( new Date() )\nt = typeOf( new RegExp( '.+' ) )\nt = typeOf( new Map() )\nt = typeOf( new Set() )\nt = typeOf( new WeakMap() )\nt = typeOf( new WeakSet() )\nt = typeOf( new Error( 'beep' ) )\nt = typeOf( new TypeError( 'beep' ) )\nt = typeOf( new SyntaxError( 'beep' ) )\nt = typeOf( new ReferenceError( 'beep' ) )\nt = typeOf( new URIError( 'beep' ) )\nt = typeOf( new RangeError( 'beep' ) )\nt = typeOf( new EvalError( 'beep' ) )\nt = typeOf( Math )\nt = typeOf( JSON )\n\n// Arguments object:\nfunction beep() { return arguments; };\nt = typeOf( beep() )\n\n// Node.js Buffer object:\nt = typeOf( new Buffer( 10 ) )\n\n// Custom constructor:\nfunction Person() { return this };\nt = typeOf( new Person() )\n\n// Anonymous constructor:\nFoo = function () { return this; };\nt = typeOf( new Foo() )\n", "UINT8_MAX": "UINT8_MAX\n", "UINT8_NUM_BYTES": "UINT8_NUM_BYTES\n", "Uint8Array": "arr = new Uint8Array()\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 16c539768fc5..36bbf7731fa9 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -404,10 +404,10 @@ var db = { "base.dists.laplace.skewness": "\nbase.dists.laplace.skewness( μ, b )\n Returns the skewness of a Laplace distribution with location parameter `μ`\n and scale parameter `b`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `b <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n b: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Skewness.\n\n Examples\n --------\n > var y = base.dists.laplace.skewness( 0.0, 1.0 )\n 0.0\n > y = base.dists.laplace.skewness( 4.0, 2.0 )\n 0.0\n > y = base.dists.laplace.skewness( NaN, 1.0 )\n NaN\n > y = base.dists.laplace.skewness( 0.0, NaN )\n NaN\n > y = base.dists.laplace.skewness( 0.0, 0.0 )\n NaN\n\n", "base.dists.laplace.stdev": "\nbase.dists.laplace.stdev( μ, b )\n Returns the standard deviation of a Laplace distribution with location\n parameter `μ` and scale parameter `b`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `b <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n b: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Standard deviation.\n\n Examples\n --------\n > var y = base.dists.laplace.stdev( 0.0, 1.0 )\n ~1.414\n > y = base.dists.laplace.stdev( 4.0, 2.0 )\n ~2.828\n > y = base.dists.laplace.stdev( NaN, 1.0 )\n NaN\n > y = base.dists.laplace.stdev( 0.0, NaN )\n NaN\n > y = base.dists.laplace.stdev( 0.0, 0.0 )\n NaN\n\n", "base.dists.laplace.variance": "\nbase.dists.laplace.variance( μ, b )\n Returns the variance of a Laplace distribution with location parameter `μ`\n and scale parameter `b`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `b <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n b: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Variance.\n\n Examples\n --------\n > var y = base.dists.laplace.variance( 0.0, 1.0 )\n 2.0\n > y = base.dists.laplace.variance( 4.0, 2.0 )\n 8.0\n > y = base.dists.laplace.variance( NaN, 1.0 )\n NaN\n > y = base.dists.laplace.variance( 0.0, NaN )\n NaN\n > y = base.dists.laplace.variance( 0.0, 0.0 )\n NaN\n\n", - "base.dists.levy.cdf": "\nbase.dists.levy.cdf( x, μ, c )\n Evaluates the cumulative distribution function (CDF) for a Lévy distribution\n with location parameter `μ` and scale parameter `c` at a value `x`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `c <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n μ: number\n Location parameter.\n\n c: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Evaluated CDF.\n\n Examples\n --------\n > var y = base.dists.levy.cdf( 2.0, 0.0, 1.0 )\n ~0.48\n > y = base.dists.levy.cdf( 12.0, 10.0, 3.0 )\n ~0.221\n > y = base.dists.levy.cdf( 9.0, 10.0, 3.0 )\n NaN\n > y = base.dists.levy.cdf( NaN, 0.0, 1.0 )\n NaN\n > y = base.dists.levy.cdf( 2, NaN, 1.0 )\n NaN\n > y = base.dists.levy.cdf( 2.0, 0.0, NaN )\n NaN\n // Negative scale parameter:\n > y = base.dists.levy.cdf( 2.0, 0.0, -1.0 )\n NaN\n\n\nbase.dists.levy.cdf.factory( μ, c )\n Returns a function for evaluating the cumulative distribution function (CDF)\n of a Lévy distribution with location parameter `μ` and scale parameter `c`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n c: number\n Scale parameter.\n\n Returns\n -------\n cdf: Function\n Cumulative distribution function (CDF).\n\n Examples\n --------\n > var myCDF = base.dists.levy.cdf.factory( 2.0, 3.0 );\n > var y = myCDF( 10.0 )\n ~0.54\n > y = myCDF( 2.0 )\n 0.0\n\n", + "base.dists.levy.cdf": "\nbase.dists.levy.cdf( x, μ, c )\n Evaluates the cumulative distribution function (CDF) for a Lévy distribution\n with location parameter `μ` and scale parameter `c` at a value `x`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `c <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n μ: number\n Location parameter.\n\n c: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Evaluated CDF.\n\n Examples\n --------\n > var y = base.dists.levy.cdf( 2.0, 0.0, 1.0 )\n ~0.48\n > y = base.dists.levy.cdf( 12.0, 10.0, 3.0 )\n ~0.221\n > y = base.dists.levy.cdf( 9.0, 10.0, 3.0 )\n 0.0\n > y = base.dists.levy.cdf( NaN, 0.0, 1.0 )\n NaN\n > y = base.dists.levy.cdf( 2, NaN, 1.0 )\n NaN\n > y = base.dists.levy.cdf( 2.0, 0.0, NaN )\n NaN\n // Negative scale parameter:\n > y = base.dists.levy.cdf( 2.0, 0.0, -1.0 )\n NaN\n\n\nbase.dists.levy.cdf.factory( μ, c )\n Returns a function for evaluating the cumulative distribution function (CDF)\n of a Lévy distribution with location parameter `μ` and scale parameter `c`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n c: number\n Scale parameter.\n\n Returns\n -------\n cdf: Function\n Cumulative distribution function (CDF).\n\n Examples\n --------\n > var myCDF = base.dists.levy.cdf.factory( 2.0, 3.0 );\n > var y = myCDF( 10.0 )\n ~0.54\n > y = myCDF( 2.0 )\n 0.0\n\n", "base.dists.levy.entropy": "\nbase.dists.levy.entropy( μ, c )\n Returns the entropy of a Lévy distribution with location parameter `μ` and\n scale parameter `c`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `c <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n c: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Entropy.\n\n Examples\n --------\n > var y = base.dists.levy.entropy( 0.0, 1.0 )\n ~3.324\n > y = base.dists.levy.entropy( 4.0, 2.0 )\n ~4.018\n > y = base.dists.levy.entropy( NaN, 1.0 )\n NaN\n > y = base.dists.levy.entropy( 0.0, NaN )\n NaN\n > y = base.dists.levy.entropy( 0.0, 0.0 )\n NaN\n\n", "base.dists.levy.Levy": "\nbase.dists.levy.Levy( [μ, c] )\n Returns a Lévy distribution object.\n\n Parameters\n ----------\n μ: number (optional)\n Location parameter. Default: `0.0`.\n\n c: number (optional)\n Scale parameter. Must be greater than `0`. Default: `1.0`.\n\n Returns\n -------\n levy: Object\n Distribution instance.\n\n levy.mu: number\n Location parameter.\n\n levy.c: number\n Scale parameter. If set, the value must be greater than `0`.\n\n levy.entropy: number\n Read-only property which returns the differential entropy.\n\n levy.mean: number\n Read-only property which returns the expected value.\n\n levy.median: number\n Read-only property which returns the median.\n\n levy.mode: number\n Read-only property which returns the mode.\n\n levy.stdev: number\n Read-only property which returns the standard deviation.\n\n levy.variance: number\n Read-only property which returns the variance.\n\n levy.cdf: Function\n Evaluates the cumulative distribution function (CDF).\n\n levy.logcdf: Function\n Evaluates the natural logarithm of the cumulative distribution function\n (CDF).\n\n levy.logpdf: Function\n Evaluates the natural logarithm of the probability density function\n (PDF).\n\n levy.pdf: Function\n Evaluates the probability density function (PDF).\n\n levy.quantile: Function\n Evaluates the quantile function at probability `p`.\n\n Examples\n --------\n > var levy = base.dists.levy.Levy( -2.0, 3.0 );\n > levy.mu\n -2.0\n > levy.c\n 3.0\n > levy.entropy\n ~4.423\n > levy.mean\n Infinity\n > levy.median\n ~4.594\n > levy.mode\n -1.0\n > levy.stdev\n Infinity\n > levy.variance\n Infinity\n > levy.cdf( 0.8 )\n ~0.3\n > levy.logcdf( 0.8 )\n ~-1.2\n > levy.logpdf( 1.0 )\n ~-2.518\n > levy.pdf( 1.0 )\n ~0.081\n > levy.quantile( 0.8 )\n ~44.74\n\n", - "base.dists.levy.logcdf": "\nbase.dists.levy.logcdf( x, μ, c )\n Evaluates the logarithm of the cumulative distribution function (CDF) for a\n Lévy distribution with location parameter `μ` and scale parameter `c` at a\n value `x`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `c <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n μ: number\n Location parameter.\n\n c: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Evaluated logCDF.\n\n Examples\n --------\n > var y = base.dists.levy.logcdf( 2.0, 0.0, 1.0 )\n ~-0.735\n > y = base.dists.levy.logcdf( 12.0, 10.0, 3.0 )\n ~-1.51\n > y = base.dists.levy.logcdf( 9.0, 10.0, 3.0 )\n NaN\n > y = base.dists.levy.logcdf( NaN, 0.0, 1.0 )\n NaN\n > y = base.dists.levy.logcdf( 2, NaN, 1.0 )\n NaN\n > y = base.dists.levy.logcdf( 2.0, 0.0, NaN )\n NaN\n // Negative scale parameter:\n > y = base.dists.levy.logcdf( 2.0, 0.0, -1.0 )\n NaN\n\n\nbase.dists.levy.logcdf.factory( μ, c )\n Returns a function for evaluating the logarithm of the cumulative\n distribution function (CDF) of a Lévy distribution with location parameter\n `μ` and scale parameter `c`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n c: number\n Scale parameter.\n\n Returns\n -------\n logcdf: Function\n Logarithm of cumulative distribution function (CDF).\n\n Examples\n --------\n > var mylogcdf = base.dists.levy.logcdf.factory( 2.0, 3.0 );\n > var y = mylogcdf( 10.0 )\n ~-0.616\n > y = mylogcdf( 2.0 )\n -Infinity\n\n", + "base.dists.levy.logcdf": "\nbase.dists.levy.logcdf( x, μ, c )\n Evaluates the logarithm of the cumulative distribution function (CDF) for a\n Lévy distribution with location parameter `μ` and scale parameter `c` at a\n value `x`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `c <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n μ: number\n Location parameter.\n\n c: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Evaluated logCDF.\n\n Examples\n --------\n > var y = base.dists.levy.logcdf( 2.0, 0.0, 1.0 )\n ~-0.735\n > y = base.dists.levy.logcdf( 12.0, 10.0, 3.0 )\n ~-1.51\n > y = base.dists.levy.logcdf( 9.0, 10.0, 3.0 )\n -Infinity\n > y = base.dists.levy.logcdf( NaN, 0.0, 1.0 )\n NaN\n > y = base.dists.levy.logcdf( 2, NaN, 1.0 )\n NaN\n > y = base.dists.levy.logcdf( 2.0, 0.0, NaN )\n NaN\n // Negative scale parameter:\n > y = base.dists.levy.logcdf( 2.0, 0.0, -1.0 )\n NaN\n\n\nbase.dists.levy.logcdf.factory( μ, c )\n Returns a function for evaluating the logarithm of the cumulative\n distribution function (CDF) of a Lévy distribution with location parameter\n `μ` and scale parameter `c`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n c: number\n Scale parameter.\n\n Returns\n -------\n logcdf: Function\n Logarithm of cumulative distribution function (CDF).\n\n Examples\n --------\n > var mylogcdf = base.dists.levy.logcdf.factory( 2.0, 3.0 );\n > var y = mylogcdf( 10.0 )\n ~-0.616\n > y = mylogcdf( 2.0 )\n -Infinity\n\n", "base.dists.levy.logpdf": "\nbase.dists.levy.logpdf( x, μ, c )\n Evaluates the logarithm of the probability density function (PDF) for a Lévy\n distribution with location parameter `μ` and scale parameter `c` at a value\n `x`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `c <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n μ: number\n Location parameter.\n\n c: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Evaluated logPDF.\n\n Examples\n --------\n > var y = base.dists.levy.logpdf( 2.0, 0.0, 1.0 )\n ~-2.209\n > y = base.dists.levy.logpdf( -1.0, 4.0, 2.0 )\n -Infinity\n > y = base.dists.levy.logpdf( NaN, 0.0, 1.0 )\n NaN\n > y = base.dists.levy.logpdf( 0.0, NaN, 1.0 )\n NaN\n > y = base.dists.levy.logpdf( 0.0, 0.0, NaN )\n NaN\n // Negative scale parameter:\n > y = base.dists.levy.logpdf( 2.0, 0.0, -1.0 )\n NaN\n\n\nbase.dists.levy.logpdf.factory( μ, c )\n Returns a function for evaluating the logarithm of the probability density\n function (PDF) of a Lévy distribution with location parameter `μ` and scale\n parameter `c`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n c: number\n Scale parameter.\n\n Returns\n -------\n logpdf: Function\n Logarithm of probability density function (PDF).\n\n Examples\n --------\n > var mylogPDF = base.dists.levy.logpdf.factory( 10.0, 2.0 );\n > var y = mylogPDF( 11.0 )\n ~-1.572\n\n", "base.dists.levy.mean": "\nbase.dists.levy.mean( μ, c )\n Returns the expected value of a Lévy distribution with location parameter\n `μ` and scale parameter `c`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `c <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n c: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Expected value.\n\n Examples\n --------\n > var y = base.dists.levy.mean( 0.0, 1.0 )\n Infinity\n > y = base.dists.levy.mean( 4.0, 3.0 )\n Infinity\n > y = base.dists.levy.mean( NaN, 1.0 )\n NaN\n > y = base.dists.levy.mean( 0.0, NaN )\n NaN\n > y = base.dists.levy.mean( 0.0, 0.0 )\n NaN\n\n", "base.dists.levy.median": "\nbase.dists.levy.median( μ, c )\n Returns the median of a Lévy distribution with location parameter `μ` and\n scale parameter `c`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `c <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n c: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Median.\n\n Examples\n --------\n > var y = base.dists.levy.median( 0.0, 1.0 )\n ~2.198\n > y = base.dists.levy.median( 4.0, 3.0 )\n ~10.594\n > y = base.dists.levy.median( NaN, 1.0 )\n NaN\n > y = base.dists.levy.median( 0.0, NaN )\n NaN\n > y = base.dists.levy.median( 0.0, 0.0 )\n NaN\n\n", @@ -424,7 +424,7 @@ var db = { "base.dists.logistic.logpdf": "\nbase.dists.logistic.logpdf( x, μ, s )\n Evaluates the logarithm of the probability density function (PDF) for a\n logistic distribution with location parameter `μ` and scale parameter `s` at\n a value `x`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `s < 0`, the function returns `NaN`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n μ: number\n Location parameter.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Evaluated logPDF.\n\n Examples\n --------\n > var y = base.dists.logistic.logpdf( 2.0, 0.0, 1.0 )\n ~-2.254\n > y = base.dists.logistic.logpdf( -1.0, 4.0, 2.0 )\n ~-3.351\n > y = base.dists.logistic.logpdf( NaN, 0.0, 1.0 )\n NaN\n > y = base.dists.logistic.logpdf( 0.0, NaN, 1.0 )\n NaN\n > y = base.dists.logistic.logpdf( 0.0, 0.0, NaN )\n NaN\n\n // Negative scale parameter:\n > y = base.dists.logistic.logpdf( 2.0, 0.0, -1.0 )\n NaN\n\n // Degenerate distribution at `s = 0.0`:\n > y = base.dists.logistic.logpdf( 2.0, 8.0, 0.0 )\n -Infinity\n > y = base.dists.logistic.logpdf( 8.0, 8.0, 0.0 )\n Infinity\n\n\nbase.dists.logistic.logpdf.factory( μ, s )\n Returns a function for evaluating the logarithm of the probability density\n function (PDF) of a Logistic distribution with location parameter `μ` and\n scale parameter `s`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n logpdf: Function\n Logarithm of probability density function (PDF).\n\n Examples\n --------\n > var mylogpdf = base.dists.logistic.logpdf.factory( 10.0, 2.0 );\n > var y = mylogpdf( 10.0 )\n ~-2.079\n\n", "base.dists.logistic.mean": "\nbase.dists.logistic.mean( μ, s )\n Returns the expected value of a logistic distribution with location\n parameter `μ` and scale parameter `s`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `s <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Expected value.\n\n Examples\n --------\n > var y = base.dists.logistic.mean( 0.0, 1.0 )\n 0.0\n > y = base.dists.logistic.mean( 4.0, 2.0 )\n 4.0\n > y = base.dists.logistic.mean( NaN, 1.0 )\n NaN\n > y = base.dists.logistic.mean( 0.0, NaN )\n NaN\n > y = base.dists.logistic.mean( 0.0, 0.0 )\n NaN\n\n", "base.dists.logistic.median": "\nbase.dists.logistic.median( μ, s )\n Returns the median of a logistic distribution with location parameter `μ`\n and scale parameter `s`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `s <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Median.\n\n Examples\n --------\n > var y = base.dists.logistic.median( 0.0, 1.0 )\n 0.0\n > y = base.dists.logistic.median( 4.0, 2.0 )\n 4.0\n > y = base.dists.logistic.median( NaN, 1.0 )\n NaN\n > y = base.dists.logistic.median( 0.0, NaN )\n NaN\n > y = base.dists.logistic.median( 0.0, 0.0 )\n NaN\n\n", - "base.dists.logistic.mgf": "\nbase.dists.logistic.mgf( t, μ, s )\n Evaluates the moment-generating function (MGF) for a logistic distribution\n with location parameter `μ` and scale parameter `s` at a value `t`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `s < 0`, the function returns `NaN`.\n\n Parameters\n ----------\n t: number\n Input value.\n\n μ: number\n Location parameter.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Evaluated MGF.\n\n Examples\n --------\n > var y = base.dists.logistic.mgf( 0.9, 0.0, 1.0 )\n ~9.15\n > y = base.dists.logistic.mgf( 0.1, 4.0, 4.0 )\n ~1.971\n > y = base.dists.logistic.mgf( -0.2, 4.0, 4.0 )\n ~1.921\n > y = base.dists.logistic.mgf( 0.5, 0.0, -1.0 )\n NaN\n > y = base.dists.logistic.mgf( 0.5, 0.0, 4.0 )\n NaN\n > y = base.dists.logistic.mgf( NaN, 0.0, 1.0 )\n NaN\n > y = base.dists.logistic.mgf( 0.0, NaN, 1.0 )\n NaN\n > y = base.dists.logistic.mgf( 0.0, 0.0, NaN )\n NaN\n\n\nbase.dists.logistic.mgf.factory( μ, s )\n Returns a function for evaluating the moment-generating function (MGF)\n of a Logistic distribution with location parameter `μ` and scale parameter\n `s`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n mgf: Function\n Moment-generating function (MGF).\n\n Examples\n --------\n > var mymgf = base.dists.logistic.mgf.factory( 10.0, 0.5 );\n > var y = mymgf( 0.5 )\n ~164.846\n > y = mymgf( 2.0 )\n Infinity\n\n", + "base.dists.logistic.mgf": "\nbase.dists.logistic.mgf( t, μ, s )\n Evaluates the moment-generating function (MGF) for a logistic distribution\n with location parameter `μ` and scale parameter `s` at a value `t`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `s < 0`, the function returns `NaN`.\n\n Parameters\n ----------\n t: number\n Input value.\n\n μ: number\n Location parameter.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Evaluated MGF.\n\n Examples\n --------\n > var y = base.dists.logistic.mgf( 0.9, 0.0, 1.0 )\n ~9.15\n > y = base.dists.logistic.mgf( 0.1, 4.0, 4.0 )\n ~1.971\n > y = base.dists.logistic.mgf( -0.2, 4.0, 4.0 )\n ~1.921\n > y = base.dists.logistic.mgf( 0.5, 0.0, -1.0 )\n NaN\n > y = base.dists.logistic.mgf( 0.5, 0.0, 4.0 )\n Infinity\n > y = base.dists.logistic.mgf( NaN, 0.0, 1.0 )\n NaN\n > y = base.dists.logistic.mgf( 0.0, NaN, 1.0 )\n NaN\n > y = base.dists.logistic.mgf( 0.0, 0.0, NaN )\n NaN\n\n\nbase.dists.logistic.mgf.factory( μ, s )\n Returns a function for evaluating the moment-generating function (MGF)\n of a Logistic distribution with location parameter `μ` and scale parameter\n `s`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n mgf: Function\n Moment-generating function (MGF).\n\n Examples\n --------\n > var mymgf = base.dists.logistic.mgf.factory( 10.0, 0.5 );\n > var y = mymgf( 0.5 )\n ~164.846\n > y = mymgf( 2.0 )\n Infinity\n\n", "base.dists.logistic.mode": "\nbase.dists.logistic.mode( μ, s )\n Returns the mode of a logistic distribution with location parameter `μ` and\n scale parameter `s`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `s <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Mode.\n\n Examples\n --------\n > var y = base.dists.logistic.mode( 0.0, 1.0 )\n 0.0\n > y = base.dists.logistic.mode( 4.0, 2.0 )\n 4.0\n > y = base.dists.logistic.mode( NaN, 1.0 )\n NaN\n > y = base.dists.logistic.mode( 0.0, NaN )\n NaN\n > y = base.dists.logistic.mode( 0.0, 0.0 )\n NaN\n\n", "base.dists.logistic.pdf": "\nbase.dists.logistic.pdf( x, μ, s )\n Evaluates the probability density function (PDF) for a logistic distribution\n with location parameter `μ` and scale parameter `s` at a value `x`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `s < 0`, the function returns `NaN`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n μ: number\n Location parameter.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Evaluated PDF.\n\n Examples\n --------\n > var y = base.dists.logistic.pdf( 2.0, 0.0, 1.0 )\n ~0.105\n > y = base.dists.logistic.pdf( -1.0, 4.0, 2.0 )\n ~0.035\n > y = base.dists.logistic.pdf( NaN, 0.0, 1.0 )\n NaN\n > y = base.dists.logistic.pdf( 0.0, NaN, 1.0 )\n NaN\n > y = base.dists.logistic.pdf( 0.0, 0.0, NaN )\n NaN\n // Negative scale parameter:\n > y = base.dists.logistic.pdf( 2.0, 0.0, -1.0 )\n NaN\n > y = base.dists.logistic.pdf( 2.0, 8.0, 0.0 )\n 0.0\n > y = base.dists.logistic.pdf( 8.0, 8.0, 0.0 )\n Infinity\n\n\nbase.dists.logistic.pdf.factory( μ, s )\n Returns a function for evaluating the probability density function (PDF) of\n a Logistic distribution with location parameter `μ` and scale parameter `s`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n pdf: Function\n Probability density function (PDF).\n\n Examples\n --------\n > var myPDF = base.dists.logistic.pdf.factory( 10.0, 2.0 );\n > var y = myPDF( 10.0 )\n 0.125\n\n", "base.dists.logistic.quantile": "\nbase.dists.logistic.quantile( p, μ, s )\n Evaluates the quantile function for a logistic distribution with location\n parameter `μ` and scale parameter `s` at a probability `p`.\n\n If `p < 0` or `p > 1`, the function returns `NaN`.\n\n If provided `NaN` as any argument, the function returns `NaN`.\n\n If provided `s < 0`, the function returns `NaN`.\n\n Parameters\n ----------\n p: number\n Input probability.\n\n μ: number\n Location parameter.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n out: number\n Evaluated quantile function.\n\n Examples\n --------\n > var y = base.dists.logistic.quantile( 0.8, 0.0, 1.0 )\n ~1.386\n > y = base.dists.logistic.quantile( 0.5, 4.0, 2.0 )\n 4\n\n > y = base.dists.logistic.quantile( 1.1, 0.0, 1.0 )\n NaN\n > y = base.dists.logistic.quantile( -0.2, 0.0, 1.0 )\n NaN\n\n > y = base.dists.logistic.quantile( NaN, 0.0, 1.0 )\n NaN\n > y = base.dists.logistic.quantile( 0.0, NaN, 1.0 )\n NaN\n > y = base.dists.logistic.quantile( 0.0, 0.0, NaN )\n NaN\n\n // Negative scale parameter:\n > y = base.dists.logistic.quantile( 0.5, 0.0, -1.0 )\n NaN\n\n\nbase.dists.logistic.quantile.factory( μ, s )\n Returns a function for evaluating the quantile function of a logistic\n distribution with location parameter `μ` and scale parameter `s`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n quantile: Function\n Quantile function.\n\n Examples\n --------\n > var myQuantile = base.dists.logistic.quantile.factory( 10.0, 2.0 );\n > var y = myQuantile( 0.5 )\n 10.0\n\n", @@ -610,7 +610,7 @@ var db = { "base.fromBinaryStringUint16": "\nbase.fromBinaryStringUint16( bstr )\n Creates an unsigned 16-bit integer from a literal bit representation.\n\n Parameters\n ----------\n bstr: string\n Literal bit representation.\n\n Returns\n -------\n out: integer\n Unsigned 16-bit integer.\n\n Examples\n --------\n > var bstr = '0101010101010101';\n > var val = base.fromBinaryStringUint16( bstr )\n 21845\n > bstr = '0000000000000000';\n > val = base.fromBinaryStringUint16( bstr )\n 0\n > bstr = '0000000000000010';\n > val = base.fromBinaryStringUint16( bstr )\n 2\n > bstr = '1111111111111111';\n > val = base.fromBinaryStringUint16( bstr )\n 65535\n\n See Also\n --------\n base.toBinaryStringUint16, base.fromBinaryStringUint32, base.fromBinaryStringUint8\n", "base.fromBinaryStringUint32": "\nbase.fromBinaryStringUint32( bstr )\n Creates an unsigned 32-bit integer from a literal bit representation.\n\n Parameters\n ----------\n bstr: string\n Literal bit representation.\n\n Returns\n -------\n out: integer\n Unsigned 32-bit integer.\n\n Examples\n --------\n > var bstr = '01010101010101010101010101010101';\n > var val = base.fromBinaryStringUint32( bstr )\n 1431655765\n > bstr = '00000000000000000000000000000000';\n > val = base.fromBinaryStringUint32( bstr )\n 0\n > bstr = '00000000000000000000000000000010';\n > val = base.fromBinaryStringUint32( bstr )\n 2\n > bstr = '11111111111111111111111111111111';\n > val = base.fromBinaryStringUint32( bstr )\n 4294967295\n\n See Also\n --------\n base.fromBinaryStringUint16, base.toBinaryStringUint32, base.fromBinaryStringUint8\n", "base.fromWordf": "\nbase.fromWordf( x )\n Creates a single-precision floating-point number from an unsigned integer\n corresponding to an IEEE 754 binary representation.\n\n Parameters\n ----------\n x: integer\n Unsigned integer.\n\n Returns\n -------\n out: float\n Single-precision floating-point number.\n\n Examples\n --------\n > var word = 1068180177; // => 0 01111111 01010110010001011010001\n > var f32 = base.fromWordf( word ) // when printed, promoted to float64\n 1.3370000123977661\n\n See Also\n --------\n base.fromWords\n", - "base.fromWords": "\nbase.fromWords( high, low )\n Creates a double-precision floating-point number from a higher order word\n (unsigned 32-bit integer) and a lower order word (unsigned 32-bit integer).\n\n Parameters\n ----------\n high: integer\n Higher order word (unsigned 32-bit integer).\n\n low: integer\n Lower order word (unsigned 32-bit integer).\n\n Returns\n -------\n out: number\n Double-precision floating-point number.\n\n Examples\n --------\n > var v = base.fromWords( 1774486211, 2479577218 )\n 3.14e201\n > v = base.fromWords( 3221823995, 1413754136 )\n 3.141592653589793\n > v = base.fromWords( 0, 0 )\n 0.0\n > v = base.fromWords( 2147483648, 0 )\n -0.0\n > v = base.fromWords( 2146959360, 0 )\n NaN\n > v = base.fromWords( 2146435072, 0 )\n Infinity\n > v = base.fromWords( 4293918720, 0 )\n -Infinity\n\n See Also\n --------\n base.fromWordf\n", + "base.fromWords": "\nbase.fromWords( high, low )\n Creates a double-precision floating-point number from a higher order word\n (unsigned 32-bit integer) and a lower order word (unsigned 32-bit integer).\n\n Parameters\n ----------\n high: integer\n Higher order word (unsigned 32-bit integer).\n\n low: integer\n Lower order word (unsigned 32-bit integer).\n\n Returns\n -------\n out: number\n Double-precision floating-point number.\n\n Examples\n --------\n > var v = base.fromWords( 1774486211, 2479577218 )\n 3.14e201\n > v = base.fromWords( 3221823995, 1413754136 )\n -3.141592653589793\n > v = base.fromWords( 0, 0 )\n 0.0\n > v = base.fromWords( 2147483648, 0 )\n -0.0\n > v = base.fromWords( 2146959360, 0 )\n NaN\n > v = base.fromWords( 2146435072, 0 )\n Infinity\n > v = base.fromWords( 4293918720, 0 )\n -Infinity\n\n See Also\n --------\n base.fromWordf\n", "base.gamma": "\nbase.gamma( x )\n Evaluates the gamma function.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.gamma( 4.0 )\n 6.0\n > y = base.gamma( -1.5 )\n ~2.363\n > y = base.gamma( -0.5 )\n ~-3.545\n > y = base.gamma( 0.5 )\n ~1.772\n > y = base.gamma( 0.0 )\n Infinity\n > y = base.gamma( -0.0 )\n -Infinity\n > y = base.gamma( NaN )\n NaN\n\n See Also\n --------\n base.gamma1pm1, base.gammainc, base.gammaincinv, base.gammaln\n", "base.gamma1pm1": "\nbase.gamma1pm1( x )\n Computes `gamma(x+1) - 1` without cancellation errors, where `gamma(x)` is\n the gamma function.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.gamma1pm1( 0.2 )\n ~-0.082\n > y = base.gamma1pm1( -6.7 )\n ~-0.991\n > y = base.gamma1pm1( 0.0 )\n 0.0\n > y = base.gamma1pm1( NaN )\n NaN\n\n See Also\n --------\n base.gamma, base.gammainc, base.gammaincinv, base.gammaln\n", "base.gammaDeltaRatio": "\nbase.gammaDeltaRatio( z, delta )\n Computes the ratio of two gamma functions.\n\n The ratio is defined as: Γ(z) / Γ(z+Δ).\n\n Parameters\n ----------\n z: number\n First gamma parameter.\n\n delta: number\n Difference.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.gammaDeltaRatio( 2.0, 3.0 )\n ~0.042\n > y = base.gammaDeltaRatio( 4.0, 0.5 )\n ~0.516\n > y = base.gammaDeltaRatio( 100.0, 0.0 )\n 1.0\n > y = base.gammaDeltaRatio( NaN, 3.0 )\n NaN\n > y = base.gammaDeltaRatio( 5.0, NaN )\n NaN\n > y = base.gammaDeltaRatio( NaN, NaN )\n NaN\n\n See Also\n --------\n base.gamma\n", @@ -684,7 +684,7 @@ var db = { "base.normalizef": "\nbase.normalizef( [out,] x )\n Returns a normal number `y` and exponent `exp` satisfying `x = y * 2^exp` as\n an array.\n\n The first element of the returned array corresponds to `y` and the second to\n `exp`.\n\n While the function accepts higher precision floating-point numbers, beware\n that providing such numbers can be a source of subtle bugs as the relation\n `x = y * 2^exp` may not hold.\n\n Parameters\n ----------\n out: Array|TypedArray|Object (optional)\n Output array.\n\n x: float\n Single-precision floating-point number.\n\n Returns\n -------\n out: Array|TypedArray|Object\n An array containing `y` and `exp`.\n\n Examples\n --------\n > var out = base.normalizef( base.float64ToFloat32( 1.401e-45 ) )\n [ 1.1754943508222875e-38, -23 ]\n > var y = out[ 0 ];\n > var exp = out[ 1 ];\n > var bool = ( y*base.pow(2,exp) === base.float64ToFloat32(1.401e-45) )\n true\n\n // Special cases:\n > out = base.normalizef( FLOAT32_PINF )\n [ Infinity, 0 ]\n > out = base.normalizef( FLOAT32_NINF )\n [ -Infinity, 0 ]\n > out = base.normalizef( NaN )\n [ NaN, 0 ]\n\n // Provide an output array:\n > out = new Float32Array( 2 );\n > var v = base.normalizef( out, base.float64ToFloat32( 1.401e-45 ) )\n [ 1.1754943508222875e-38, -23.0 ]\n > bool = ( v === out )\n true\n\n See Also\n --------\n base.normalize\n", "base.normhermitepoly": "\nbase.normhermitepoly( n, x )\n Evaluates a normalized Hermite polynomial.\n\n Parameters\n ----------\n n: integer\n Non-negative polynomial degree.\n\n x: number\n Value at which to evaluate the polynomial.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.normhermitepoly( 1, 0.5 )\n 0.5\n > y = base.normhermitepoly( -1, 0.5 )\n NaN\n > y = base.normhermitepoly( 0, 0.5 )\n 1.0\n > y = base.normhermitepoly( 2, 0.5 )\n -0.75\n\n\nbase.normhermitepoly.factory( n )\n Returns a function for evaluating a normalized Hermite polynomial.\n\n Parameters\n ----------\n n: integer\n Non-negative polynomial degree.\n\n Returns\n -------\n fcn: Function\n Function for evaluating a normalized Hermite polynomial.\n\n Examples\n --------\n > var polyval = base.normhermitepoly.factory( 2 );\n > var v = polyval( 0.5 )\n -0.75\n\n See Also\n --------\n base.evalpoly, base.hermitepoly\n", "base.pdiff": "\nbase.pdiff( x, y )\n Returns the positive difference between `x` and `y` if `x > y`; otherwise,\n returns `0`.\n\n Parameters\n ----------\n x: number\n First number.\n\n y: number\n Second number.\n\n Returns\n -------\n out: number\n Positive difference.\n\n Examples\n --------\n > var v = base.pdiff( 5.9, 3.14 )\n 2.76\n > v = base.pdiff( 3.14, 4.2 )\n 0.0\n > v = base.pdiff( 3.14, NaN )\n NaN\n > v = base.pdiff( -0.0, +0.0 )\n +0.0\n\n", - "base.polygamma": "\nbase.polygamma( n, x )\n Evaluates the polygamma function of order `n`; i.e., the (n+1)th derivative\n of the natural logarithm of the gamma function.\n\n If `n` is not a non-negative integer, the function returns `NaN`.\n\n If `x` is zero or a negative integer, the function returns `NaN`.\n\n If provided `NaN` as either parameter, the function returns `NaN`.\n\n Parameters\n ----------\n n: integer\n Derivative order.\n\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var v = base.polygamma( 3, 1.2 )\n ~3.245\n > v = base.polygamma( 5, 1.2 )\n ~41.39\n > v = base.polygamma( 3, -4.9 )\n ~60014.239\n > v = base.polygamma( -1, 5.3 )\n NaN\n > v = base.polygamma( 2, -1.0 )\n NaN\n\n See Also\n --------\n base.trigamma, base.digamma, base.gamma\n", + "base.polygamma": "\nbase.polygamma( n, x )\n Evaluates the polygamma function of order `n`; i.e., the (n+1)th derivative\n of the natural logarithm of the gamma function.\n\n If `n` is not a non-negative integer, the function returns `NaN`.\n\n If `x` is zero or a negative integer, the function returns `NaN`.\n\n If provided `NaN` as either parameter, the function returns `NaN`.\n\n Parameters\n ----------\n n: integer\n Derivative order.\n\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var v = base.polygamma( 3, 1.2 )\n ~3.245\n > v = base.polygamma( 5, 1.2 )\n ~41.39\n > v = base.polygamma( 3, -4.9 )\n ~60014.239\n > v = base.polygamma( -1, 5.3 )\n NaN\n > v = base.polygamma( 2, -1.0 )\n Infinity\n\n See Also\n --------\n base.trigamma, base.digamma, base.gamma\n", "base.pow": "\nbase.pow( b, x )\n Evaluates the exponential function `bˣ`.\n\n Parameters\n ----------\n b: number\n Base.\n\n x: number\n Exponent.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.pow( 2.0, 3.0 )\n 8.0\n > y = base.pow( 4.0, 0.5 )\n 2.0\n > y = base.pow( 100.0, 0.0 )\n 1.0\n > y = base.pow( PI, 5.0 )\n ~306.0197\n > y = base.pow( PI, -0.2 )\n ~0.7954\n > y = base.pow( NaN, 3.0 )\n NaN\n > y = base.pow( 5.0, NaN )\n NaN\n > y = base.pow( NaN, NaN )\n NaN\n\n See Also\n --------\n base.exp, base.powm1\n", "base.powm1": "\nbase.powm1( b, x )\n Evaluates `bˣ - 1`.\n\n When `b` is close to `1` and/or `x` is small, this function is more accurate\n than naively computing `bˣ` and subtracting `1`.\n\n Parameters\n ----------\n b: number\n Base.\n\n x: number\n Exponent.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.powm1( 2.0, 3.0 )\n 7.0\n > y = base.powm1( 4.0, 0.5 )\n 1.0\n > y = base.powm1( 0.0, 100.0 )\n -1.0\n > y = base.powm1( 100.0, 0.0 )\n 0.0\n > y = base.powm1( 0.0, 0.0 )\n 0.0\n > y = base.powm1( PI, 5.0 )\n ~305.0197\n > y = base.powm1( NaN, 3.0 )\n NaN\n > y = base.powm1( 5.0, NaN )\n NaN\n\n See Also\n --------\n base.pow\n", "base.rad2deg": "\nbase.rad2deg( x )\n Converts an angle from radians to degrees.\n\n Parameters\n ----------\n x: number\n Angle in radians.\n\n Returns\n -------\n d: number\n Angle in degrees.\n\n Examples\n --------\n > var d = base.rad2deg( PI/2.0 )\n 90.0\n > d = base.rad2deg( -PI/4.0 )\n -45.0\n > d = base.rad2deg( NaN )\n NaN\n\n // Due to finite precision, canonical values may not be returned:\n > d = base.rad2deg( PI/6.0 )\n 29.999999999999996\n\n See Also\n --------\n base.deg2rad\n", @@ -808,7 +808,7 @@ var db = { "compose": "\ncompose( ...f )\n Function composition.\n\n Returns a composite function. Starting from the right, the composite\n function evaluates each function and passes the result as an argument\n to the next function. The result of the leftmost function is the result\n of the whole.\n\n Notes:\n\n - Only the rightmost function is explicitly permitted to accept multiple\n arguments. All other functions are evaluated as unary functions.\n - The function will throw if provided fewer than two input arguments.\n\n Parameters\n ----------\n f: ...Function\n Functions to compose.\n\n Returns\n -------\n out: Function\n Composite function.\n\n Examples\n --------\n > function a( x ) {\n ... return 2 * x;\n ... }\n > function b( x ) {\n ... return x + 3;\n ... }\n > function c( x ) {\n ... return x / 5;\n ... }\n > var f = compose( c, b, a );\n > var z = f( 6 )\n 3\n\n See Also\n --------\n composeAsync\n", "composeAsync": "\ncomposeAsync( ...f )\n Function composition.\n\n Returns a composite function. Starting from the right, the composite\n function evaluates each function and passes the result as the first argument\n of the next function. The result of the leftmost function is the result\n of the whole.\n\n The last argument for each provided function is a `next` callback which\n should be invoked upon function completion. The callback accepts two\n arguments:\n\n - `error`: error argument\n - `result`: function result\n\n If a composed function calls the `next` callback with a truthy `error`\n argument, the composite function suspends execution and immediately calls\n the `done` callback for subsequent `error` handling.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n Only the rightmost function is explicitly permitted to accept multiple\n arguments. All other functions are evaluated as binary functions.\n\n The function will throw if provided fewer than two input arguments.\n\n Parameters\n ----------\n f: ...Function\n Functions to compose.\n\n Returns\n -------\n out: Function\n Composite function.\n\n Examples\n --------\n > function a( x, next ) {\n ... setTimeout( onTimeout, 0 );\n ... function onTimeout() {\n ... next( null, 2*x );\n ... }\n ... };\n > function b( x, next ) {\n ... setTimeout( onTimeout, 0 );\n ... function onTimeout() {\n ... next( null, x+3 );\n ... }\n ... };\n > function c( x, next ) {\n ... setTimeout( onTimeout, 0 );\n ... function onTimeout() {\n ... next( null, x/5 );\n ... }\n ... };\n > var f = composeAsync( c, b, a );\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > f( 6, done )\n 3\n\n See Also\n --------\n compose\n", "configdir": "\nconfigdir( [p] )\n Returns a directory for user-specific configuration files.\n\n On Windows platforms, the function first checks for a `LOCALAPPDATA`\n environment variable before checking for an `APPDATA` environment variable.\n This means that machine specific user configuration files have precedence\n over roaming user configuration files.\n\n On non-Windows platforms, if the function is unable to locate the current\n user's `home` directory, the function returns `null`. Similarly, on Windows\n platforms, if the function is unable to locate an application data\n directory, the function also returns `null`.\n\n Parameters\n ----------\n p: string (optional)\n Path to append to a base directory.\n\n Returns\n -------\n out: string|null\n Directory.\n\n Examples\n --------\n > var dir = configdir()\n e.g., '/Users//Library/Preferences'\n > dir = configdir( 'appname/config' )\n e.g., '/Users//Library/Preferences/appname/config'\n\n See Also\n --------\n homedir, tmpdir\n", - "conj": "\nconj( z )\n Returns the complex conjugate of a complex number.\n\n Parameters\n ----------\n z: Complex\n Complex number.\n\n Returns\n -------\n out: Complex\n Complex conjugate.\n\n Examples\n --------\n > var z = new Complex128( 5.0, 3.0 );\n > z.toString()\n 5 + 3i\n > var v = conj( z );\n > v.toString()\n 5 - 3i\n\n See Also\n --------\n imag, real, reim\n", + "conj": "\nconj( z )\n Returns the complex conjugate of a complex number.\n\n Parameters\n ----------\n z: Complex\n Complex number.\n\n Returns\n -------\n out: Complex\n Complex conjugate.\n\n Examples\n --------\n > var z = new Complex128( 5.0, 3.0 );\n > z.toString()\n '5 + 3i'\n > var v = conj( z );\n > v.toString()\n '5 - 3i'\n\n See Also\n --------\n imag, real, reim\n", "constantFunction": "\nconstantFunction( val )\n Creates a function which always returns the same value.\n\n Notes:\n\n - When provided an object reference, the returned `function` always returns\n the same reference.\n\n Parameters\n ----------\n val: any\n Value to always return.\n\n Returns\n -------\n out: Function\n Constant function.\n\n Examples\n --------\n > var fcn = constantFunction( 3.14 );\n > var v = fcn()\n 3.14\n > v = fcn()\n 3.14\n > v = fcn()\n 3.14\n\n See Also\n --------\n argumentFunction, identity\n", "constructorName": "\nconstructorName( val )\n Determines the name of a value's constructor.\n\n Parameters\n ----------\n val: any\n Input value.\n\n Returns\n -------\n out: string\n Name of a value's constructor.\n\n Examples\n --------\n > var v = constructorName( 'a' )\n 'String'\n > v = constructorName( {} )\n 'Object'\n > v = constructorName( true )\n 'Boolean'\n\n See Also\n --------\n functionName\n", "contains": "\ncontains( val, searchValue[, position] )\n Tests if an array-like value contains a search value.\n\n When `val` is a string, the function checks whether the characters of the\n search string are found in the input string. The search is case-sensitive.\n\n When `val` is an array-like object, the function checks whether the input\n array contains an element strictly equal to the specified search value.\n\n For strings, this function is modeled after `String.prototype.includes`,\n part of the ECMAScript 6 specification. This function is different from a\n call to `String.prototype.includes.call` insofar as type-checking is\n performed for all arguments.\n\n The function does not distinguish between positive and negative zero.\n\n If `position < 0`, the search is performed for the entire input array or\n string.\n\n\n Parameters\n ----------\n val: ArrayLike\n Input value.\n\n searchValue: any\n Value to search for.\n\n position: integer (optional)\n Position at which to start searching for `searchValue`. Default: `0`.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an input value contains another value.\n\n Examples\n --------\n > var bool = contains( 'Hello World', 'World' )\n true\n > bool = contains( 'Hello World', 'world' )\n false\n > bool = contains( [ 1, 2, 3, 4 ], 2 )\n true\n > bool = contains( [ NaN, 2, 3, 4 ], NaN )\n true\n\n // Supply a position:\n > bool = contains( 'Hello World', 'Hello', 6 )\n false\n > bool = contains( [ true, NaN, false ], true, 1 )\n false\n\n", @@ -820,7 +820,7 @@ var db = { "countBy": "\ncountBy( collection, [options,] indicator )\n Groups values according to an indicator function and returns group counts.\n\n When invoked, the indicator function is provided two arguments:\n\n - `value`: collection value\n - `index`: collection index\n\n The value returned by an indicator function should be a value which can be\n serialized as an object key.\n\n If provided an empty collection, the function returns an empty object.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection to group. If provided an object, the object must be\n array-like (excluding strings and functions).\n\n options: Object (optional)\n Options.\n\n options.thisArg: any (optional)\n Execution context.\n\n indicator: Function\n Indicator function specifying which group an element in the input\n collection belongs to.\n\n Returns\n -------\n out: Object\n Group results.\n\n Examples\n --------\n > function indicator( v ) {\n ... if ( v[ 0 ] === 'b' ) {\n ... return 'b';\n ... }\n ... return 'other';\n ... };\n > var collection = [ 'beep', 'boop', 'foo', 'bar' ];\n > var out = countBy( collection, indicator )\n { 'b': 3, 'other': 1 }\n\n See Also\n --------\n group, groupBy\n", "countByAsync": "\ncountByAsync( collection, [options,] indicator, done )\n Groups values according to an indicator function and returns group counts.\n\n When invoked, the indicator function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n indicator function accepts two arguments, the indicator function is\n provided:\n\n - `value`\n - `next`\n\n If the indicator function accepts three arguments, the indicator function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other indicator function signature, the indicator function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `group`: value group\n\n If an indicator function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n If provided an empty collection, the function calls the `done` callback with\n an empty object as the second argument.\n\n The `group` returned by an indicator function should be a value which can be\n serialized as an object key.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n indicator: Function\n Indicator function specifying which group an element in the input\n collection belongs to.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function indicator( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) ? 'even': 'odd' );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > countByAsync( arr, indicator, done )\n 1000\n 2500\n 3000\n { \"even\": 2, \"odd\": 1 }\n\n // Limit number of concurrent invocations:\n > function indicator( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) ? 'even' : 'odd' );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > countByAsync( arr, opts, indicator, done )\n 2500\n 3000\n 1000\n { \"even\": 2, \"odd\": 1 }\n\n // Process sequentially:\n > function indicator( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) ? 'even' : 'odd' );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > countByAsync( arr, opts, indicator, done )\n 3000\n 2500\n 1000\n { \"even\": 2, \"odd\": 1 }\n\n\ncountByAsync.factory( [options,] indicator )\n Returns a function which groups values according to an indicator function\n and returns group counts.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n indicator: Function\n Indicator function specifying which group an element in the input\n collection belongs to.\n\n Returns\n -------\n out: Function\n A function which groups values and returns group counts.\n\n Examples\n --------\n > function indicator( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) ? 'even' : 'odd' );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = countByAsync.factory( opts, indicator );\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n { \"even\": 2, \"odd\": 1 }\n > arr = [ 2000, 1500, 1000, 500 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n 500\n { \"even\": 2, \"odd\": 2 }\n\n See Also\n --------\n countBy, groupByAsync, tabulateByAsync\n", "curry": "\ncurry( fcn[, arity][, thisArg] )\n Transforms a function into a sequence of functions each accepting a single\n argument.\n\n Until return value resolution, each invocation returns a new partially\n applied curry function.\n\n Parameters\n ----------\n fcn: Function\n Function to curry.\n\n arity: integer (optional)\n Number of parameters. Default: `fcn.length`.\n\n thisArg: any (optional)\n Evaluation context.\n\n Returns\n -------\n out: Function\n Curry function.\n\n Examples\n --------\n > function add( x, y ) { return x + y; };\n > var f = curry( add );\n > var sum = f( 2 )( 3 )\n 5\n\n // Supply arity:\n > function add() { return arguments[ 0 ] + arguments[ 1 ]; };\n > f = curry( add, 2 );\n > sum = f( 2 )( 3 )\n 5\n\n // Provide function context:\n > var obj = {\n ... 'name': 'Ada',\n ... 'greet': function greet( word1, word2 ) {\n ... return word1 + ' ' + word2 + ', ' + this.name + '!'\n ... }\n ... };\n > f = curry( obj.greet, obj );\n > var str = f( 'Hello' )( 'there' )\n 'Hello there, Ada!'\n\n See Also\n --------\n curryRight, uncurry, uncurryRight\n", - "curryRight": "\ncurryRight( fcn[, arity][, thisArg] )\n Transforms a function into a sequence of functions each accepting a single\n argument.\n\n Until return value resolution, each invocation returns a new partially\n applied curry function.\n\n This function applies arguments starting from the right.\n\n Parameters\n ----------\n fcn: Function\n Function to curry.\n\n arity: integer (optional)\n Number of parameters. Default: `fcn.length`.\n\n thisArg: any (optional)\n Evaluation context.\n\n Returns\n -------\n out: Function\n Curry function.\n\n Examples\n --------\n > function add( x, y ) { return x + y; };\n > var f = curryRight( add );\n > var sum = f( 2 )( 3 )\n 5\n\n // Supply arity:\n > function add() { return arguments[ 0 ] + arguments[ 1 ]; };\n > f = curryRight( add, 2 );\n > sum = f( 2 )( 3 )\n 5\n\n // Provide function context:\n > var obj = {\n ... 'name': 'Ada',\n ... 'greet': function greet( word1, word2 ) {\n ... return word1 + ' ' + word2 + ', ' + this.name + '!'\n ... }\n ... };\n > f = curryRight( obj.greet, obj );\n > var str = f( 'Hello' )( 'there' )\n 'Hello there, Ada!'\n\n See Also\n --------\n curry, uncurry, uncurryRight\n", + "curryRight": "\ncurryRight( fcn[, arity][, thisArg] )\n Transforms a function into a sequence of functions each accepting a single\n argument.\n\n Until return value resolution, each invocation returns a new partially\n applied curry function.\n\n This function applies arguments starting from the right.\n\n Parameters\n ----------\n fcn: Function\n Function to curry.\n\n arity: integer (optional)\n Number of parameters. Default: `fcn.length`.\n\n thisArg: any (optional)\n Evaluation context.\n\n Returns\n -------\n out: Function\n Curry function.\n\n Examples\n --------\n > function add( x, y ) { return x + y; };\n > var f = curryRight( add );\n > var sum = f( 2 )( 3 )\n 5\n\n // Supply arity:\n > function add() { return arguments[ 0 ] + arguments[ 1 ]; };\n > f = curryRight( add, 2 );\n > sum = f( 2 )( 3 )\n 5\n\n // Provide function context:\n > var obj = {\n ... 'name': 'Ada',\n ... 'greet': function greet( word1, word2 ) {\n ... return word1 + ' ' + word2 + ', ' + this.name + '!'\n ... }\n ... };\n > f = curryRight( obj.greet, obj );\n > var str = f( 'there' )( 'Hello' )\n 'Hello there, Ada!'\n\n See Also\n --------\n curry, uncurry, uncurryRight\n", "cwd": "\ncwd()\n Returns the current working directory.\n\n Returns\n -------\n path: string\n Current working directory of the process.\n\n Examples\n --------\n > var dir = cwd()\n '/path/to/current/working/directory'\n\n See Also\n --------\n chdir\n", "DALE_CHALL_NEW": "\nDALE_CHALL_NEW()\n Returns a list of familiar English words.\n\n Returns\n -------\n out: Array\n List of familiar English words.\n\n Examples\n --------\n > var list = DALE_CHALL_NEW()\n [ 'a', 'able', 'aboard', 'about', 'above', ... ]\n\n References\n ----------\n - Chall, Jeanne Sternlicht, and Edgar Dale. 1995. *Readability revisited:\n the new Dale-Chall readability formula*. Brookline Books.\n .\n\n", "datasets": "\ndatasets( name[, options] )\n Returns a dataset.\n\n The function forwards provided options to the dataset interface specified\n by `name`.\n\n Parameters\n ----------\n name: string\n Dataset name.\n\n options: Object (optional)\n Function options.\n\n Returns\n -------\n out: any\n Dataset.\n\n Examples\n --------\n > var out = datasets( 'MONTH_NAMES_EN' )\n [ 'January', 'February', ... ]\n > var opts = { 'data': 'cities' };\n > out = datasets( 'MINARD_NAPOLEONS_MARCH', opts )\n [ {...}, {...}, ... ]\n\n", @@ -834,7 +834,7 @@ var db = { "deepPluck": "\ndeepPluck( arr, path[, options] )\n Extracts a nested property value from each element of an object array.\n\n If a key path does not exist, the function sets the plucked value as\n `undefined`.\n\n Extracted values are not cloned.\n\n Parameters\n ----------\n arr: Array\n Source array.\n\n path: string|Array\n Key path.\n\n options: Object (optional)\n Options.\n\n options.copy: boolean (optional)\n Boolean indicating whether to return a new data structure. Default:\n true.\n\n options.sep: string (optional)\n Key path separator. Default: '.'.\n\n Returns\n -------\n out: Array\n Destination array.\n\n Examples\n --------\n > var arr = [\n ... { 'a': { 'b': { 'c': 1 } } },\n ... { 'a': { 'b': { 'c': 2 } } }\n ... ];\n > var out = deepPluck( arr, 'a.b.c' )\n [ 1, 2 ]\n > arr = [\n ... { 'a': [ 0, 1, 2 ] },\n ... { 'a': [ 3, 4, 5 ] }\n ... ];\n > out = deepPluck( arr, [ 'a', 1 ] )\n [ 1, 4 ]\n\n See Also\n --------\n deepGet, deepSet\n", "deepSet": "\ndeepSet( obj, path, value[, options] )\n Sets a nested property value.\n\n Parameters\n ----------\n obj: ObjectLike\n Input object.\n\n path: string|Array\n Key path.\n\n value: any\n Value to set.\n\n options: Object (optional)\n Options.\n\n options.create: boolean (optional)\n Boolean indicating whether to create a path if the key path does not\n already exist. Default: false.\n\n options.sep: string (optional)\n Key path separator. Default: '.'.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if the property was successfully set.\n\n Examples\n --------\n > var obj = { 'a': { 'b': { 'c': 'd' } } };\n > var bool = deepSet( obj, 'a.b.c', 'beep' )\n true\n\n // Specify an alternative separator via the sep option:\n > obj = { 'a': { 'b': { 'c': 'd' } } };\n > bool = deepSet( obj, 'a/b/c', 'beep', { 'sep': '/' } );\n > obj\n { 'a': { 'b': { 'c': 'beep' } } }\n\n // To create a key path which does not exist, set the create option to true:\n > bool = deepSet( obj, 'a.e.c', 'boop', { 'create': true } );\n > obj\n { 'a': { 'b': { 'c': 'beep' }, 'e': { 'c': 'boop' } } }\n\n\ndeepSet.factory( path[, options] )\n Creates a reusable deep set function.\n\n Parameters\n ----------\n path: string|Array\n Key path.\n\n options: Object (optional)\n Options.\n\n options.create: boolean (optional)\n Boolean indicating whether to create a path if the key path does not\n already exist. Default: false.\n\n options.sep: string (optional)\n Key path separator. Default: '.'.\n\n Returns\n -------\n out: Function\n Deep get function.\n\n Examples\n --------\n > var dset = deepSet.factory( 'a/b/c', {\n ... 'create': true,\n ... 'sep': '/'\n ... });\n > var obj = { 'a': { 'b': { 'c': 'd' } } };\n > var bool = dset( obj, 'beep' )\n true\n > obj\n { 'a': { 'b': { 'c': 'beep' } } }\n\n See Also\n --------\n deepGet, deepPluck\n", "defineProperties": "\ndefineProperties( obj, properties )\n Defines (and/or modifies) object properties.\n\n The second argument is an object whose own enumerable property values are\n descriptors for the properties to be defined or modified.\n\n Property descriptors come in two flavors: data descriptors and accessor\n descriptors. A data descriptor is a property that has a value, which may or\n may not be writable. An accessor descriptor is a property described by a\n getter-setter function pair. A descriptor must be one of these two flavors\n and cannot be both.\n\n A property descriptor has the following optional properties:\n\n - configurable: boolean indicating if property descriptor can be changed and\n if the property can be deleted from the provided object. Default: false.\n\n - enumerable: boolean indicating if the property shows up when enumerating\n object properties. Default: false.\n\n - writable: boolean indicating if the value associated with the property can\n be changed with an assignment operator. Default: false.\n\n - value: property value.\n\n - get: function which serves as a getter for the property, or, if no getter,\n undefined. When the property is accessed, a getter function is called\n without arguments and with the `this` context set to the object through\n which the property is accessed (which may not be the object on which the\n property is defined due to inheritance). The return value will be used as\n the property value. Default: undefined.\n\n - set: function which serves as a setter for the property, or, if no setter,\n undefined. When assigning a property value, a setter function is called with\n one argument (the value being assigned to the property) and with the `this`\n context set to the object through which the property is assigned. Default: undefined.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the properties.\n\n properties: Object\n Object with property descriptors.\n\n Returns\n -------\n obj: Object\n Object on which properties were defined (and/or modified).\n\n Examples\n --------\n > var obj = {};\n > defineProperties( obj, {\n ... 'foo': {\n ... 'value': 'bar',\n ... 'writable': false,\n ... 'configurable': false,\n ... 'enumerable': true\n ... },\n ... 'baz': {\n ... 'value': 13\n ... }\n ... });\n > obj.foo\n 'bar'\n > obj.baz\n 13\n\n See Also\n --------\n defineProperty, setReadOnly\n", - "defineProperty": "\ndefineProperty( obj, prop, descriptor )\n Defines (or modifies) an object property.\n\n Property descriptors come in two flavors: data descriptors and accessor\n descriptors. A data descriptor is a property that has a value, which may or\n may not be writable. An accessor descriptor is a property described by a\n getter-setter function pair. A descriptor must be one of these two flavors\n and cannot be both.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n descriptor: Object\n Property descriptor.\n\n descriptor.configurable: boolean (optional)\n Boolean indicating if property descriptor can be changed and if the\n property can be deleted from the provided object. Default: false.\n\n descriptor.enumerable: boolean (optional)\n Boolean indicating if the property shows up when enumerating object\n properties. Default: false.\n\n descriptor.writable: boolean (optional)\n Boolean indicating if the value associated with the property can be\n changed with an assignment operator. Default: false.\n\n descriptor.value: any (optional)\n Property value.\n\n descriptor.get: Function|void (optional)\n Function which serves as a getter for the property, or, if no getter,\n undefined. When the property is accessed, a getter function is called\n without arguments and with the `this` context set to the object through\n which the property is accessed (which may not be the object on which the\n property is defined due to inheritance). The return value will be used\n as the property value. Default: undefined.\n\n descriptor.set: Function|void (optional)\n Function which serves as a setter for the property, or, if no setter,\n undefined. When assigning a property value, a setter function is called\n with one argument (the value being assigned to the property) and with\n the `this` context set to the object through which the property is\n assigned. Default: undefined.\n\n Returns\n -------\n obj: Object\n Object on which the property was defined (or modified).\n\n Examples\n --------\n > var obj = {};\n > defineProperty( obj, 'foo', {\n ... 'value': 'bar',\n ... 'writable': false\n ... });\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n defineProperties, setReadOnly\n", + "defineProperty": "\ndefineProperty( obj, prop, descriptor )\n Defines (or modifies) an object property.\n\n Property descriptors come in two flavors: data descriptors and accessor\n descriptors. A data descriptor is a property that has a value, which may or\n may not be writable. An accessor descriptor is a property described by a\n getter-setter function pair. A descriptor must be one of these two flavors\n and cannot be both.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n descriptor: Object\n Property descriptor.\n\n descriptor.configurable: boolean (optional)\n Boolean indicating if property descriptor can be changed and if the\n property can be deleted from the provided object. Default: false.\n\n descriptor.enumerable: boolean (optional)\n Boolean indicating if the property shows up when enumerating object\n properties. Default: false.\n\n descriptor.writable: boolean (optional)\n Boolean indicating if the value associated with the property can be\n changed with an assignment operator. Default: false.\n\n descriptor.value: any (optional)\n Property value.\n\n descriptor.get: Function|void (optional)\n Function which serves as a getter for the property, or, if no getter,\n undefined. When the property is accessed, a getter function is called\n without arguments and with the `this` context set to the object through\n which the property is accessed (which may not be the object on which the\n property is defined due to inheritance). The return value will be used\n as the property value. Default: undefined.\n\n descriptor.set: Function|void (optional)\n Function which serves as a setter for the property, or, if no setter,\n undefined. When assigning a property value, a setter function is called\n with one argument (the value being assigned to the property) and with\n the `this` context set to the object through which the property is\n assigned. Default: undefined.\n\n Returns\n -------\n obj: Object\n Object on which the property was defined (or modified).\n\n Examples\n --------\n > var obj = {};\n > defineProperty( obj, 'foo', {\n ... 'value': 'bar',\n ... 'writable': false\n ... });\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n defineProperties, setReadOnly\n", "dirname": "\ndirname( path )\n Returns a directory name.\n\n Parameters\n ----------\n path: string\n Path.\n\n Returns\n -------\n out: string\n Directory name.\n\n Examples\n --------\n > var dir = dirname( './foo/bar/index.js' )\n './foo/bar'\n\n See Also\n --------\n extname\n", "DoublyLinkedList": "\nDoublyLinkedList()\n Doubly linked list constructor.\n\n Returns\n -------\n list: Object\n Doubly linked list.\n\n list.clear: Function\n Clears the list.\n\n list.first: Function\n Returns the first list node. If the list is empty, the returned value is\n `undefined`.\n\n list.insert: Function\n Inserts a value after a provided list node. For its third argument, the\n method accepts a location: 'before' or 'after'. Default: 'after'.\n\n list.iterator: Function\n Returns an iterator for iterating over a list. If an environment\n supports Symbol.iterator, the returned iterator is iterable. Note that,\n in order to prevent confusion arising from list mutation during\n iteration, a returned iterator **always** iterates over a list\n \"snapshot\", which is defined as the list of list elements at the time\n of the method's invocation. For its sole argument, the method accepts a\n direction: 'forward' or 'reverse'. Default: 'forward'.\n\n list.last: Function\n Returns the last list node. If the list is empty, the returned value is\n `undefined`.\n\n list.length: integer\n List length.\n\n list.pop: Function\n Removes and returns the last list value. If the list is empty, the\n returned value is `undefined`.\n\n list.push: Function\n Adds a value to the end of the list.\n\n list.remove: Function\n Removes a list node from the list.\n\n list.shift: Function\n Removes and returns the first list value. If the list is empty, the\n returned value is `undefined`.\n\n list.toArray: Function\n Returns an array of list values.\n\n list.toJSON: Function\n Serializes a list as JSON.\n\n list.unshift: Function\n Adds a value to the beginning of the list.\n\n Examples\n --------\n > var list = DoublyLinkedList();\n > list.push( 'foo' ).push( 'bar' );\n > list.length\n 2\n > list.pop()\n 'bar'\n > list.length\n 1\n > list.pop()\n 'foo'\n > list.length\n 0\n\n See Also\n --------\n LinkedList, Stack\n", "doUntil": "\ndoUntil( fcn, predicate[, thisArg] )\n Invokes a function until a test condition is true.\n\n The condition is evaluated *after* executing the provided function; thus,\n `fcn` *always* executes at least once.\n\n When invoked, both the predicate function and the function to invoke are\n provided a single argument:\n\n - `i`: iteration number (starting from zero)\n\n Parameters\n ----------\n fcn: Function\n The function to invoke.\n\n predicate: Function\n The predicate function which indicates whether to stop invoking a\n function.\n\n thisArg: any (optional)\n Execution context for the invoked function.\n\n Examples\n --------\n > function predicate( i ) { return ( i >= 5 ); };\n > function beep( i ) { console.log( 'boop: %d', i ); };\n > doUntil( beep, predicate )\n boop: 0\n boop: 1\n boop: 2\n boop: 3\n boop: 4\n\n See Also\n --------\n doUntilAsync, doUntilEach, doWhile, until, whilst\n", @@ -902,7 +902,7 @@ var db = { "FLOAT32_SMALLEST_NORMAL": "\nFLOAT32_SMALLEST_NORMAL\n Smallest positive normalized single-precision floating-point number.\n\n Examples\n --------\n > FLOAT32_SMALLEST_NORMAL\n 1.1754943508222875e-38\n\n See Also\n --------\n FLOAT32_SMALLEST_SUBNORMAL, FLOAT64_SMALLEST_NORMAL\n", "FLOAT32_SMALLEST_SUBNORMAL": "\nFLOAT32_SMALLEST_SUBNORMAL\n Smallest positive denormalized single-precision floating-point number.\n\n Examples\n --------\n > FLOAT32_SMALLEST_SUBNORMAL\n 1.401298464324817e-45\n\n See Also\n --------\n FLOAT32_SMALLEST_NORMAL, FLOAT64_SMALLEST_SUBNORMAL\n", "FLOAT32_SQRT_EPS": "\nFLOAT32_SQRT_EPS\n Square root of single-precision floating-point epsilon.\n\n Examples\n --------\n > FLOAT32_SQRT_EPS\n 0.0003452669770922512\n\n See Also\n --------\n FLOAT32_EPS, SQRT_EPS\n", - "Float32Array": "\nFloat32Array()\n A typed array constructor which returns a typed array representing an array\n of single-precision floating-point numbers in the platform byte order.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float32Array()\n \n\n\nFloat32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 )\n [ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 0.5, 0.5, 0.5 ] );\n > var arr2 = new Float32Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 0.5, 0.5, 0.5 ];\n > var arr2 = new Float32Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Float32Array( buf, 0, 4 )\n [ 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Float32Array.BYTES_PER_ELEMENT\n 4\n\n\nFloat32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Float32Array.name\n Float32Array\n\n\nFloat32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.buffer\n \n\n\nFloat32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.byteLength\n 20\n\n\nFloat32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.byteOffset\n 0\n\n\nFloat32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Float32Array": "\nFloat32Array()\n A typed array constructor which returns a typed array representing an array\n of single-precision floating-point numbers in the platform byte order.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float32Array()\n \n\n\nFloat32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 )\n [ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 0.5, 0.5, 0.5 ] );\n > var arr2 = new Float32Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 0.5, 0.5, 0.5 ];\n > var arr2 = new Float32Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Float32Array( buf, 0, 4 )\n [ 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Float32Array.BYTES_PER_ELEMENT\n 4\n\n\nFloat32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Float32Array.name\n 'Float32Array'\n\n\nFloat32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.buffer\n \n\n\nFloat32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.byteLength\n 20\n\n\nFloat32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.byteOffset\n 0\n\n\nFloat32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "FLOAT64_EXPONENT_BIAS": "\nFLOAT64_EXPONENT_BIAS\n The bias of a double-precision floating-point number's exponent.\n\n Examples\n --------\n > FLOAT64_EXPONENT_BIAS\n 1023\n\n See Also\n --------\n FLOAT16_EXPONENT_BIAS, FLOAT32_EXPONENT_BIAS\n", "FLOAT64_HIGH_WORD_EXPONENT_MASK": "\nFLOAT64_HIGH_WORD_EXPONENT_MASK\n High word mask for the exponent of a double-precision floating-point number.\n\n Examples\n --------\n > FLOAT64_HIGH_WORD_EXPONENT_MASK\n 2146435072\n > base.toBinaryStringUint32( FLOAT64_HIGH_WORD_EXPONENT_MASK )\n '01111111111100000000000000000000'\n\n See Also\n --------\n FLOAT64_HIGH_WORD_SIGNIFICAND_MASK\n", "FLOAT64_HIGH_WORD_SIGNIFICAND_MASK": "\nFLOAT64_HIGH_WORD_SIGNIFICAND_MASK\n High word mask for the significand of a double-precision floating-point\n number.\n\n Examples\n --------\n > FLOAT64_HIGH_WORD_SIGNIFICAND_MASK\n 1048575\n > base.toBinaryStringUint32( FLOAT64_HIGH_WORD_SIGNIFICAND_MASK )\n '00000000000011111111111111111111'\n\n See Also\n --------\n FLOAT64_HIGH_WORD_EXPONENT_MASK\n", @@ -927,7 +927,7 @@ var db = { "FLOAT64_PRECISION": "\nFLOAT64_PRECISION\n Effective number of bits in the significand of a double-precision floating-\n point number.\n\n The effective number of bits is `52` significand bits plus `1` hidden bit.\n\n Examples\n --------\n > FLOAT64_PRECISION\n 53\n\n See Also\n --------\n FLOAT16_PRECISION, FLOAT32_PRECISION\n", "FLOAT64_SMALLEST_NORMAL": "\nFLOAT64_SMALLEST_NORMAL\n Smallest positive normalized double-precision floating-point number.\n\n Examples\n --------\n > FLOAT64_SMALLEST_NORMAL\n 2.2250738585072014e-308\n\n See Also\n --------\n FLOAT32_SMALLEST_NORMAL, FLOAT64_SMALLEST_SUBNORMAL\n", "FLOAT64_SMALLEST_SUBNORMAL": "\nFLOAT64_SMALLEST_SUBNORMAL\n Smallest positive denormalized double-precision floating-point number.\n\n Examples\n --------\n > FLOAT64_SMALLEST_SUBNORMAL\n 4.940656458412465e-324\n\n See Also\n --------\n FLOAT32_SMALLEST_SUBNORMAL, FLOAT64_SMALLEST_NORMAL\n", - "Float64Array": "\nFloat64Array()\n A typed array constructor which returns a typed array representing an array\n of double-precision floating-point numbers in the platform byte order.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float64Array()\n \n\n\nFloat64Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 )\n [ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat64Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 0.5, 0.5, 0.5 ] );\n > var arr2 = new Float64Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat64Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 0.5, 0.5, 0.5 ];\n > var arr2 = new Float64Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat64Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 32 );\n > var arr = new Float64Array( buf, 0, 4 )\n [ 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat64Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Float64Array.BYTES_PER_ELEMENT\n 8\n\n\nFloat64Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Float64Array.name\n Float64Array\n\n\nFloat64Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.buffer\n \n\n\nFloat64Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.byteLength\n 40\n\n\nFloat64Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.byteOffset\n 0\n\n\nFloat64Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Float64Array": "\nFloat64Array()\n A typed array constructor which returns a typed array representing an array\n of double-precision floating-point numbers in the platform byte order.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float64Array()\n \n\n\nFloat64Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 )\n [ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat64Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 0.5, 0.5, 0.5 ] );\n > var arr2 = new Float64Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat64Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 0.5, 0.5, 0.5 ];\n > var arr2 = new Float64Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat64Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 32 );\n > var arr = new Float64Array( buf, 0, 4 )\n [ 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat64Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Float64Array.BYTES_PER_ELEMENT\n 8\n\n\nFloat64Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Float64Array.name\n 'Float64Array'\n\n\nFloat64Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.buffer\n \n\n\nFloat64Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.byteLength\n 40\n\n\nFloat64Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.byteOffset\n 0\n\n\nFloat64Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "forEach": "\nforEach( collection, fcn[, thisArg] )\n Invokes a function for each element in a collection.\n\n When invoked, the input function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function logger( v, i ) { console.log( '%s: %d', i, v ); };\n > var arr = [ 1, 2, 3, 4 ];\n > forEach( arr, logger )\n 0: 1\n 1: 2\n 2: 3\n 3: 4\n\n See Also\n --------\n forEachAsync, forEachRight\n", "forEachAsync": "\nforEachAsync( collection, [options,] fcn, done )\n Invokes a function once for each element in a collection.\n\n When invoked, `fcn` is provided a maximum of four arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If `fcn`\n accepts two arguments, `fcn` is provided:\n\n - `value`\n - `next`\n\n If `fcn` accepts three arguments, `fcn` is provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other `fcn` signature, `fcn` is provided all four arguments.\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function onDuration( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next();\n ... }\n ... };\n > function done( error ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( 'Done.' );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > forEachAsync( arr, onDuration, done )\n 1000\n 2500\n 3000\n Done.\n\n // Limit number of concurrent invocations:\n > function onDuration( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next();\n ... }\n ... };\n > function done( error ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( 'Done.' );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > forEachAsync( arr, opts, onDuration, done )\n 2500\n 3000\n 1000\n Done.\n\n // Process sequentially:\n > function onDuration( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next();\n ... }\n ... };\n > function done( error ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( 'Done.' );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > forEachAsync( arr, opts, onDuration, done )\n 3000\n 2500\n 1000\n Done.\n\n\nforEachAsync.factory( [options,] fcn )\n Returns a function which invokes a function once for each element in a\n collection.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which invokes a function for each element in a collection.\n\n Examples\n --------\n > function onDuration( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next();\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = forEachAsync.factory( opts, onDuration );\n > function done( error ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( 'Done.' );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n Done.\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n Done.\n\n See Also\n --------\n forEach, forEachRightAsync\n", "forEachRight": "\nforEachRight( collection, fcn[, thisArg] )\n Invokes a function for each element in a collection, iterating from right to\n left.\n\n When invoked, the input function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function logger( v, i ) { console.log( '%s: %d', i, v ); };\n > var arr = [ 1, 2, 3, 4 ];\n > forEachRight( arr, logger )\n 3: 4\n 2: 3\n 1: 2\n 0: 1\n\n See Also\n --------\n forEach, forEachRightAsync\n", @@ -1101,6 +1101,7 @@ var db = { "indexOf": "\nindexOf( arr, searchElement[, fromIndex] )\n Returns the first index at which a given element can be found.\n\n Search is performed using *strict equality* comparison.\n\n Parameters\n ----------\n arr: ArrayLike\n Array-like object.\n\n searchElement: any\n Element to find.\n\n fromIndex: integer (optional)\n Starting index (if negative, the start index is determined relative to\n last element).\n\n Returns\n -------\n out: integer\n Index or -1.\n\n Examples\n --------\n // Basic usage:\n > var arr = [ 4, 3, 2, 1 ];\n > var idx = indexOf( arr, 3 )\n 1\n > arr = [ 4, 3, 2, 1 ];\n > idx = indexOf( arr, 5 )\n -1\n\n // Using a `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, 3 )\n 5\n\n // `fromIndex` which exceeds `array` length:\n > arr = [ 1, 2, 3, 4, 2, 5 ];\n > idx = indexOf( arr, 2, 10 )\n -1\n\n // Negative `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];\n > idx = indexOf( arr, 2, -4 )\n 5\n > idx = indexOf( arr, 2, -1 )\n 7\n\n // Negative `fromIndex` exceeding input `array` length:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, -10 )\n 1\n\n // Array-like objects:\n > var str = 'bebop';\n > idx = indexOf( str, 'o' )\n 3\n\n", "inherit": "\ninherit( ctor, superCtor )\n Prototypical inheritance by replacing the prototype of one constructor with\n the prototype of another constructor.\n\n This function is not designed to work with ES2015/ES6 classes. For\n ES2015/ES6 classes, use `class` with `extends`.\n\n Parameters\n ----------\n ctor: Object|Function\n Constructor which will inherit.\n\n superCtor: Object|Function\n Super (parent) constructor.\n\n Returns\n -------\n out: Object|Function\n Child constructor.\n\n Examples\n --------\n // Create a parent constructor:\n > function Foo() { return this; };\n > Foo.prototype.beep = function beep() { return 'boop'; };\n\n // Create a child constructor:\n > function Bar() { Foo.call( this ); return this; };\n\n // Setup inheritance:\n > inherit( Bar, Foo );\n > var bar = new Bar();\n > var v = bar.beep()\n 'boop'\n\n", "inheritedKeys": "\ninheritedKeys( value[, level] )\n Returns an array of an object's inherited enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable property names.\n\n Examples\n --------\n > var keys = inheritedKeys( {} )\n\n See Also\n --------\n objectKeys, keysIn, inheritedPropertyNames, inheritedPropertySymbols\n", + "inheritedPropertyDescriptor": "\ninheritedPropertyDescriptor( value, property[, level] )\n Returns a property descriptor for an object's inherited property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string|symbol\n Property name.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var desc = inheritedPropertyDescriptor( {}, 'toString' )\n {...}\n\n See Also\n --------\n propertyDescriptor, propertyDescriptorIn, inheritedKeys, inheritedPropertyDescriptors, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedPropertyDescriptors": "\ninheritedPropertyDescriptors( value[, level] )\n Returns an object's inherited property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n desc: Object\n An object's inherited property descriptors.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var desc = inheritedPropertyDescriptors( obj )\n { 'foo': {...}, ... }\n\n See Also\n --------\n propertyDescriptors, propertyDescriptorsIn, inheritedKeys, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedPropertyNames": "\ninheritedPropertyNames( value[, level] )\n Returns an array of an object's inherited enumerable and non-enumerable\n property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable and non-enumerable property\n names.\n\n Examples\n --------\n > var keys = inheritedPropertyNames( [] )\n\n See Also\n --------\n inheritedKeys, inheritedPropertyDescriptors, inheritedPropertySymbols, propertyNames, propertyNamesIn\n", "inheritedPropertySymbols": "\ninheritedPropertySymbols( value[, level] )\n Returns an array of an object's inherited symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited symbol properties.\n\n Examples\n --------\n > var symbols = inheritedPropertySymbols( [] )\n\n See Also\n --------\n inheritedKeys, inheritedPropertyDescriptors, inheritedPropertyNames, propertySymbols, propertySymbolsIn\n", @@ -1112,15 +1113,15 @@ var db = { "INT8_MAX": "\nINT8_MAX\n Maximum signed 8-bit integer.\n\n The maximum signed 8-bit integer is given by `2^7 - 1`.\n\n Examples\n --------\n > INT8_MAX\n 127\n\n See Also\n --------\n INT8_MIN\n", "INT8_MIN": "\nINT8_MIN\n Minimum signed 8-bit integer.\n\n The minimum signed 8-bit integer is given by `-(2^7)`.\n\n Examples\n --------\n > INT8_MIN\n -128\n\n See Also\n --------\n INT8_MAX\n", "INT8_NUM_BYTES": "\nINT8_NUM_BYTES\n Size (in bytes) of an 8-bit signed integer.\n\n Examples\n --------\n > INT8_NUM_BYTES\n 1\n\n See Also\n --------\n INT16_NUM_BYTES, INT32_NUM_BYTES, UINT8_NUM_BYTES\n", - "Int8Array": "\nInt8Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 8-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int8Array()\n \n\n\nInt8Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt8Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Int8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt8Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt8Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Int8Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt8Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int8Array.BYTES_PER_ELEMENT\n 1\n\n\nInt8Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int8Array.name\n Int8Array\n\n\nInt8Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.buffer\n \n\n\nInt8Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.byteLength\n 5\n\n\nInt8Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt8Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Int8Array": "\nInt8Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 8-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int8Array()\n \n\n\nInt8Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt8Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Int8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt8Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt8Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Int8Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt8Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int8Array.BYTES_PER_ELEMENT\n 1\n\n\nInt8Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int8Array.name\n 'Int8Array'\n\n\nInt8Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.buffer\n \n\n\nInt8Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.byteLength\n 5\n\n\nInt8Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt8Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "INT16_MAX": "\nINT16_MAX\n Maximum signed 16-bit integer.\n\n The maximum signed 16-bit integer is given by `2^15 - 1`.\n\n Examples\n --------\n > INT16_MAX\n 32767\n\n See Also\n --------\n INT16_MIN\n", "INT16_MIN": "\nINT16_MIN\n Minimum signed 16-bit integer.\n\n The minimum signed 16-bit integer is given by `-(2^15)`.\n\n Examples\n --------\n > INT16_MIN\n -32768\n\n See Also\n --------\n INT16_MAX\n", "INT16_NUM_BYTES": "\nINT16_NUM_BYTES\n Size (in bytes) of a 16-bit signed integer.\n\n Examples\n --------\n > INT16_NUM_BYTES\n 2\n\n See Also\n --------\n INT32_NUM_BYTES, INT8_NUM_BYTES, UINT16_NUM_BYTES\n", - "Int16Array": "\nInt16Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 16-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int16Array()\n \n\n\nInt16Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt16Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Int16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt16Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt16Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 8 );\n > var arr = new Int16Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt16Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int16Array.BYTES_PER_ELEMENT\n 2\n\n\nInt16Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int16Array.name\n Int16Array\n\n\nInt16Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.buffer\n \n\n\nInt16Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.byteLength\n 10\n\n\nInt16Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt16Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Int16Array": "\nInt16Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 16-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int16Array()\n \n\n\nInt16Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt16Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Int16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt16Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt16Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 8 );\n > var arr = new Int16Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt16Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int16Array.BYTES_PER_ELEMENT\n 2\n\n\nInt16Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int16Array.name\n 'Int16Array'\n\n\nInt16Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.buffer\n \n\n\nInt16Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.byteLength\n 10\n\n\nInt16Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt16Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "INT32_MAX": "\nINT32_MAX\n Maximum signed 32-bit integer.\n\n The maximum signed 32-bit integer is given by `2^31 - 1`.\n\n Examples\n --------\n > INT32_MAX\n 2147483647\n\n See Also\n --------\n INT32_MIN\n", "INT32_MIN": "\nINT32_MIN\n Minimum signed 32-bit integer.\n\n The minimum signed 32-bit integer is given by `-(2^31)`.\n\n Examples\n --------\n > INT32_MIN\n -2147483648\n\n See Also\n --------\n INT32_MAX\n", "INT32_NUM_BYTES": "\nINT32_NUM_BYTES\n Size (in bytes) of a 32-bit signed integer.\n\n Examples\n --------\n > INT32_NUM_BYTES\n 4\n\n See Also\n --------\n INT16_NUM_BYTES, INT8_NUM_BYTES, UINT32_NUM_BYTES\n", - "Int32Array": "\nInt32Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 32-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int32Array()\n \n\n\nInt32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int16Array( [ 5, 5, 5 ] );\n > var arr2 = new Int32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Int32Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int32Array.BYTES_PER_ELEMENT\n 4\n\n\nInt32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int32Array.name\n Int32Array\n\n\nInt32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.buffer\n \n\n\nInt32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.byteLength\n 20\n\n\nInt32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Int32Array": "\nInt32Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 32-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int32Array()\n \n\n\nInt32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int16Array( [ 5, 5, 5 ] );\n > var arr2 = new Int32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Int32Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int32Array.BYTES_PER_ELEMENT\n 4\n\n\nInt32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int32Array.name\n 'Int32Array'\n\n\nInt32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.buffer\n \n\n\nInt32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.byteLength\n 20\n\n\nInt32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "IS_BIG_ENDIAN": "\nIS_BIG_ENDIAN\n Boolean indicating if the environment is big endian.\n\n Examples\n --------\n > IS_BIG_ENDIAN\n \n\n See Also\n --------\n IS_LITTLE_ENDIAN\n", "IS_BROWSER": "\nIS_BROWSER\n Boolean indicating if the runtime is a web browser.\n\n Examples\n --------\n > IS_BROWSER\n \n\n", "IS_DARWIN": "\nIS_DARWIN\n Boolean indicating if the current process is running on Darwin.\n\n Examples\n --------\n > IS_DARWIN\n \n\n", @@ -1352,11 +1353,11 @@ var db = { "MONTHS_IN_YEAR": "\nMONTHS_IN_YEAR\n Number of months in a year.\n\n The value is a generalization and does **not** take into account\n inaccuracies due to daylight savings conventions, crossing timezones, or\n other complications with time and dates.\n\n Examples\n --------\n > var yrs = 3.14;\n > var mons = yrs * MONTHS_IN_YEAR\n 37.68\n\n", "moveProperty": "\nmoveProperty( source, prop, target )\n Moves a property from one object to another object.\n\n The property is deleted from the source object and the property's descriptor\n is preserved during transfer.\n\n If a source property is not configurable, the function throws an error, as\n the property cannot be deleted from the source object.\n\n Parameters\n ----------\n source: Object\n Source object.\n\n prop: string\n Property to move.\n\n target: Object\n Target object.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether operation was successful.\n\n Examples\n --------\n > var obj1 = { 'a': 'b' };\n > var obj2 = {};\n > var bool = moveProperty( obj1, 'a', obj2 )\n true\n > bool = moveProperty( obj1, 'c', obj2 )\n false\n\n", "nativeClass": "\nnativeClass( value )\n Returns a string value indicating a specification defined classification of\n an object.\n\n The function is *not* robust for ES2015+ environments. In ES2015+,\n `Symbol.toStringTag` allows overriding the default description of an object.\n While measures are taken to uncover the default description, such measures\n can be thwarted. While this function remains useful for type-checking, be\n aware that value impersonation is possible. Where possible, prefer functions\n tailored to checking for particular value types, as specialized functions\n are better equipped to address `Symbol.toStringTag`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n out: string\n String value indicating a specification defined classification of the\n input value.\n\n Examples\n --------\n > var str = nativeClass( 'a' )\n '[object String]'\n > str = nativeClass( 5 )\n '[object Number]'\n > function Beep(){};\n > str = nativeClass( new Beep() )\n '[object Object]'\n\n See Also\n --------\n constructorName, typeOf\n", - "ndarray": "\nndarray( dtype, ndims[, options] )\n Returns an ndarray constructor.\n\n Parameters\n ----------\n dtype: string\n Underlying data type.\n\n ndims: integer\n Number of dimensions.\n\n options: Object (optional)\n Options.\n\n options.codegen: boolean (optional)\n Boolean indicating whether to use code generation. Code generation can\n boost performance, but may be problematic in browser contexts enforcing\n a strict content security policy (CSP). Default: true.\n\n options.mode: string (optional)\n Specifies how to handle indices which exceed array dimensions. If equal\n to 'throw', an ndarray instance throws an error when an index exceeds\n array dimensions. If equal to 'wrap', an ndarray instance wraps around\n indices exceeding array dimensions using modulo arithmetic. If equal to\n 'clamp', an ndarray instance sets an index exceeding array dimensions to\n either `0` (minimum index) or the maximum index. Default: 'throw'.\n\n options.submode: Array (optional)\n Specifies how to handle subscripts which exceed array dimensions. If a\n mode for a corresponding dimension is equal to 'throw', an ndarray\n instance throws an error when a subscript exceeds array dimensions. If\n equal to 'wrap', an ndarray instance wraps around subscripts exceeding\n array dimensions using modulo arithmetic. If equal to 'clamp', an\n ndarray instance sets a subscript exceeding array dimensions to either\n `0` (minimum index) or the maximum index. If the number of modes is\n fewer than the number of dimensions, the function recycles modes using\n modulo arithmetic. Default: [ options.mode ].\n\n Returns\n -------\n ctor: Function\n ndarray constructor.\n\n ctor.BYTES_PER_ELEMENT: integer\n Size (in bytes) of each array element (if known).\n\n ctor.dtype: string\n Underlying data type.\n\n ctor.ndims: integer\n Number of dimensions.\n\n ctor.prototype.byteLength: integer\n Size (in bytes) of the array (if known).\n\n ctor.prototype.BYTES_PER_ELEMENT: integer\n Size (in bytes) of each array element (if known).\n\n ctor.prototype.data: ArrayLikeObject|TypedArray|Buffer\n Pointer to the underlying data buffer.\n\n ctor.prototype.dtype: string\n Underlying data type.\n\n ctor.prototype.flags: Object\n Information about the memory layout of the array.\n\n ctor.prototype.length: integer\n Length of the array (i.e., number of elements).\n\n ctor.prototype.ndims: integer\n Number of dimensions.\n\n ctor.prototype.offset: integer\n Index offset which specifies the buffer index at which to start\n iterating over array elements.\n\n ctor.prototype.order: string\n Array order. The array order is either row-major (C-style) or column-\n major (Fortran-style).\n\n ctor.prototype.shape: Array\n Array shape.\n\n ctor.prototype.strides: Array\n Index strides which specify how to access data along corresponding array\n dimensions.\n\n ctor.prototype.get: Function\n Returns an array element specified according to provided subscripts. The\n number of provided subscripts should equal the number of dimensions.\n\n ctor.prototype.iget: Function\n Returns an array element located at a specified linear index.\n\n ctor.prototype.set: Function\n Sets an array element specified according to provided subscripts. The\n number of provided subscripts should equal the number of dimensions.\n\n ctor.prototype.iset: Function\n Sets an array element located at a specified linear index.\n\n ctor.prototype.toString: Function\n Serializes an ndarray as a string. This method does **not** serialize\n data outside of the buffer region defined by the array configuration.\n\n ctor.prototype.toJSON: Function\n Serializes an ndarray as a JSON object. This method does **not**\n serialize data outside of the buffer region defined by the array\n configuration.\n\n Examples\n --------\n > var ctor = ndarray( 'generic', 3 )\n \n\n // To create a new instance...\n > var b = [ 1.0, 2.0, 3.0, 4.0 ]; // underlying data buffer\n > var d = [ 2, 2 ]; // shape\n > var s = [ 2, 1 ]; // strides\n > var o = 0; // index offset\n > var arr = ctor( b, d, s, o, 'row-major' )\n \n\n // Get an element using subscripts:\n > var v = arr.get( 1, 1 )\n 4.0\n\n // Get an element using a linear index:\n > v = arr.iget( 3 )\n 4.0\n\n // Set an element using subscripts:\n > arr.set( 1, 1, 40.0 );\n > arr.get( 1, 1 )\n 40.0\n\n // Set an element using a linear index:\n > arr.iset( 3, 99.0 );\n > arr.get( 1, 1 )\n 99.0\n\n See Also\n --------\n array\n", + "ndarray": "\nndarray( dtype, ndims[, options] )\n Returns an ndarray constructor.\n\n Parameters\n ----------\n dtype: string\n Underlying data type.\n\n ndims: integer\n Number of dimensions.\n\n options: Object (optional)\n Options.\n\n options.codegen: boolean (optional)\n Boolean indicating whether to use code generation. Code generation can\n boost performance, but may be problematic in browser contexts enforcing\n a strict content security policy (CSP). Default: true.\n\n options.mode: string (optional)\n Specifies how to handle indices which exceed array dimensions. If equal\n to 'throw', an ndarray instance throws an error when an index exceeds\n array dimensions. If equal to 'wrap', an ndarray instance wraps around\n indices exceeding array dimensions using modulo arithmetic. If equal to\n 'clamp', an ndarray instance sets an index exceeding array dimensions to\n either `0` (minimum index) or the maximum index. Default: 'throw'.\n\n options.submode: Array (optional)\n Specifies how to handle subscripts which exceed array dimensions. If a\n mode for a corresponding dimension is equal to 'throw', an ndarray\n instance throws an error when a subscript exceeds array dimensions. If\n equal to 'wrap', an ndarray instance wraps around subscripts exceeding\n array dimensions using modulo arithmetic. If equal to 'clamp', an\n ndarray instance sets a subscript exceeding array dimensions to either\n `0` (minimum index) or the maximum index. If the number of modes is\n fewer than the number of dimensions, the function recycles modes using\n modulo arithmetic. Default: [ options.mode ].\n\n Returns\n -------\n ctor: Function\n ndarray constructor.\n\n ctor.BYTES_PER_ELEMENT: integer\n Size (in bytes) of each array element (if known).\n\n ctor.dtype: string\n Underlying data type.\n\n ctor.ndims: integer\n Number of dimensions.\n\n ctor.prototype.byteLength: integer\n Size (in bytes) of the array (if known).\n\n ctor.prototype.BYTES_PER_ELEMENT: integer\n Size (in bytes) of each array element (if known).\n\n ctor.prototype.data: ArrayLikeObject|TypedArray|Buffer\n Pointer to the underlying data buffer.\n\n ctor.prototype.dtype: string\n Underlying data type.\n\n ctor.prototype.flags: Object\n Information about the memory layout of the array.\n\n ctor.prototype.length: integer\n Length of the array (i.e., number of elements).\n\n ctor.prototype.ndims: integer\n Number of dimensions.\n\n ctor.prototype.offset: integer\n Index offset which specifies the buffer index at which to start\n iterating over array elements.\n\n ctor.prototype.order: string\n Array order. The array order is either row-major (C-style) or column-\n major (Fortran-style).\n\n ctor.prototype.shape: Array\n Array shape.\n\n ctor.prototype.strides: Array\n Index strides which specify how to access data along corresponding array\n dimensions.\n\n ctor.prototype.get: Function\n Returns an array element specified according to provided subscripts. The\n number of provided subscripts should equal the number of dimensions.\n\n ctor.prototype.iget: Function\n Returns an array element located at a specified linear index.\n\n ctor.prototype.set: Function\n Sets an array element specified according to provided subscripts. The\n number of provided subscripts should equal the number of dimensions.\n\n ctor.prototype.iset: Function\n Sets an array element located at a specified linear index.\n\n ctor.prototype.toString: Function\n Serializes an ndarray as a string. This method does **not** serialize\n data outside of the buffer region defined by the array configuration.\n\n ctor.prototype.toJSON: Function\n Serializes an ndarray as a JSON object. This method does **not**\n serialize data outside of the buffer region defined by the array\n configuration.\n\n Examples\n --------\n > var ctor = ndarray( 'generic', 2 )\n \n\n // To create a new instance...\n > var b = [ 1.0, 2.0, 3.0, 4.0 ]; // underlying data buffer\n > var d = [ 2, 2 ]; // shape\n > var s = [ 2, 1 ]; // strides\n > var o = 0; // index offset\n > var arr = ctor( b, d, s, o, 'row-major' )\n \n\n // Get an element using subscripts:\n > var v = arr.get( 1, 1 )\n 4.0\n\n // Get an element using a linear index:\n > v = arr.iget( 3 )\n 4.0\n\n // Set an element using subscripts:\n > arr.set( 1, 1, 40.0 );\n > arr.get( 1, 1 )\n 40.0\n\n // Set an element using a linear index:\n > arr.iset( 3, 99.0 );\n > arr.get( 1, 1 )\n 99.0\n\n See Also\n --------\n array\n", "ndarrayCastingModes": "\nndarrayCastingModes()\n Returns a list of ndarray casting modes.\n\n The output array contains the following modes:\n\n - 'none': only allow casting between identical types\n - 'equiv': allow casting between identical and byte swapped types\n - 'safe': only allow \"safe\" casts\n - 'same-kind': allow \"safe\" casts and casts within the same kind (e.g.,\n between signed integers or between floats)\n - 'unsafe': allow casting between all types (including between integers and\n floats)\n\n Returns\n -------\n out: Array\n List of ndarray casting modes.\n\n Examples\n --------\n > var out = ndarrayCastingModes()\n [ 'none', 'equiv', 'safe', 'same-kind', 'unsafe' ]\n\n See Also\n --------\n array, ndarray\n", "ndarrayDataTypes": "\nndarrayDataTypes()\n Returns a list of ndarray data types.\n\n The output array contains the following data types:\n\n - binary: binary.\n - float32: single-precision floating-point numbers.\n - float64: double-precision floating-point numbers.\n - generic: values of any type.\n - int16: signed 16-bit integers.\n - int32: signed 32-bit integers.\n - int8: signed 8-bit integers.\n - uint16: unsigned 16-bit integers.\n - uint32: unsigned 32-bit integers.\n - uint8: unsigned 8-bit integers.\n - uint8c: unsigned clamped 8-bit integers.\n\n Returns\n -------\n out: Array\n List of ndarray data types.\n\n Examples\n --------\n > var out = ndarrayDataTypes()\n \n\n See Also\n --------\n arrayDataTypes, array, ndarray, typedarrayDataTypes\n", "ndarrayIndexModes": "\nndarrayIndexModes()\n Returns a list of ndarray index modes.\n\n The output array contains the following modes:\n\n - throw: specifies that a function should throw an error when an index is\n outside a restricted interval.\n - wrap: specifies that a function should wrap around an index using modulo\n arithmetic.\n - clamp: specifies that a function should set an index less than zero to\n zero (minimum index) and set an index greater than a maximum index value to\n the maximum possible index.\n\n Returns\n -------\n out: Array\n List of ndarray index modes.\n\n Examples\n --------\n > var out = ndarrayIndexModes()\n [ 'throw', 'clamp', 'wrap' ]\n\n See Also\n --------\n array, ndarray\n", - "ndarrayMemoized": "\nndarrayMemoized( dtype, ndims[, options] )\n Returns a memoized ndarray constructor.\n\n Parameters\n ----------\n dtype: string\n Underlying data type.\n\n ndims: integer\n Number of dimensions.\n\n options: Object (optional)\n Options.\n\n options.codegen: boolean (optional)\n Boolean indicating whether to use code generation. Code generation can\n boost performance, but may be problematic in browser contexts enforcing\n a strict content security policy (CSP). Default: true.\n\n options.mode: string (optional)\n Specifies how to handle indices which exceed array dimensions. If equal\n to 'throw', an ndarray instance throws an error when an index exceeds\n array dimensions. If equal to 'wrap', an ndarray instance wraps around\n indices exceeding array dimensions using modulo arithmetic. If equal to\n 'clamp', an ndarray instance sets an index exceeding array dimensions to\n either `0` (minimum index) or the maximum index. Default: 'throw'.\n\n options.submode: Array (optional)\n Specifies how to handle subscripts which exceed array dimensions. If a\n mode for a corresponding dimension is equal to 'throw', an ndarray\n instance throws an error when a subscript exceeds array dimensions. If\n equal to 'wrap', an ndarray instance wraps around subscripts exceeding\n array dimensions using modulo arithmetic. If equal to 'clamp', an\n ndarray instance sets a subscript exceeding array dimensions to either\n `0` (minimum index) or the maximum index. If the number of modes is\n fewer than the number of dimensions, the function recycles modes using\n modulo arithmetic. Default: [ options.mode ].\n\n Returns\n -------\n ctor: Function\n Memoized ndarray constructor.\n\n ctor.BYTES_PER_ELEMENT: integer\n Size (in bytes) of each array element (if known).\n\n ctor.dtype: string\n Underlying data type.\n\n ctor.ndims: integer\n Number of dimensions.\n\n ctor.prototype.byteLength: integer\n Size (in bytes) of the array (if known).\n\n ctor.prototype.BYTES_PER_ELEMENT: integer\n Size (in bytes) of each array element (if known).\n\n ctor.prototype.data: ArrayLikeObject|TypedArray|Buffer\n Pointer to the underlying data buffer.\n\n ctor.prototype.dtype: string\n Underlying data type.\n\n ctor.prototype.flags: Object\n Information about the memory layout of the array.\n\n ctor.prototype.length: integer\n Length of the array (i.e., number of elements).\n\n ctor.prototype.ndims: integer\n Number of dimensions.\n\n ctor.prototype.offset: integer\n Index offset which specifies the buffer index at which to start\n iterating over array elements.\n\n ctor.prototype.order: string\n Array order. The array order is either row-major (C-style) or column-\n major (Fortran-style).\n\n ctor.prototype.shape: Array\n Array shape.\n\n ctor.prototype.strides: Array\n Index strides which specify how to access data along corresponding array\n dimensions.\n\n ctor.prototype.get: Function\n Returns an array element specified according to provided subscripts. The\n number of provided subscripts should equal the number of dimensions.\n\n ctor.prototype.iget: Function\n Returns an array element located at a specified linear index.\n\n ctor.prototype.set: Function\n Sets an array element specified according to provided subscripts. The\n number of provided subscripts should equal the number of dimensions.\n\n ctor.prototype.iset: Function\n Sets an array element located at a specified linear index.\n\n ctor.prototype.toString: Function\n Serializes an ndarray as a string. This method does **not** serialize\n data outside of the buffer region defined by the array configuration.\n\n ctor.prototype.toJSON: Function\n Serializes an ndarray as a JSON object. This method does **not**\n serialize data outside of the buffer region defined by the array\n configuration.\n\n Examples\n --------\n > var ctor = ndarrayMemoized( 'generic', 3 )\n \n > var f = ndarrayMemoized( 'generic', 3 )\n \n > var bool = ( f === ctor )\n true\n\n // To create a new instance...\n > var b = [ 1.0, 2.0, 3.0, 4.0 ]; // underlying data buffer\n > var d = [ 2, 2 ]; // shape\n > var s = [ 2, 1 ]; // strides\n > var o = 0; // index offset\n > var arr = ctor( b, d, s, o, 'row-major' )\n \n\n // Get an element using subscripts:\n > var v = arr.get( 1, 1 )\n 4.0\n\n // Get an element using a linear index:\n > v = arr.iget( 3 )\n 4.0\n\n // Set an element using subscripts:\n > arr.set( 1, 1, 40.0 );\n > arr.get( 1, 1 )\n 40.0\n\n // Set an element using a linear index:\n > arr.iset( 3, 99.0 );\n > arr.get( 1, 1 )\n 99.0\n\n See Also\n --------\n array, ndarray\n", + "ndarrayMemoized": "\nndarrayMemoized( dtype, ndims[, options] )\n Returns a memoized ndarray constructor.\n\n Parameters\n ----------\n dtype: string\n Underlying data type.\n\n ndims: integer\n Number of dimensions.\n\n options: Object (optional)\n Options.\n\n options.codegen: boolean (optional)\n Boolean indicating whether to use code generation. Code generation can\n boost performance, but may be problematic in browser contexts enforcing\n a strict content security policy (CSP). Default: true.\n\n options.mode: string (optional)\n Specifies how to handle indices which exceed array dimensions. If equal\n to 'throw', an ndarray instance throws an error when an index exceeds\n array dimensions. If equal to 'wrap', an ndarray instance wraps around\n indices exceeding array dimensions using modulo arithmetic. If equal to\n 'clamp', an ndarray instance sets an index exceeding array dimensions to\n either `0` (minimum index) or the maximum index. Default: 'throw'.\n\n options.submode: Array (optional)\n Specifies how to handle subscripts which exceed array dimensions. If a\n mode for a corresponding dimension is equal to 'throw', an ndarray\n instance throws an error when a subscript exceeds array dimensions. If\n equal to 'wrap', an ndarray instance wraps around subscripts exceeding\n array dimensions using modulo arithmetic. If equal to 'clamp', an\n ndarray instance sets a subscript exceeding array dimensions to either\n `0` (minimum index) or the maximum index. If the number of modes is\n fewer than the number of dimensions, the function recycles modes using\n modulo arithmetic. Default: [ options.mode ].\n\n Returns\n -------\n ctor: Function\n Memoized ndarray constructor.\n\n ctor.BYTES_PER_ELEMENT: integer\n Size (in bytes) of each array element (if known).\n\n ctor.dtype: string\n Underlying data type.\n\n ctor.ndims: integer\n Number of dimensions.\n\n ctor.prototype.byteLength: integer\n Size (in bytes) of the array (if known).\n\n ctor.prototype.BYTES_PER_ELEMENT: integer\n Size (in bytes) of each array element (if known).\n\n ctor.prototype.data: ArrayLikeObject|TypedArray|Buffer\n Pointer to the underlying data buffer.\n\n ctor.prototype.dtype: string\n Underlying data type.\n\n ctor.prototype.flags: Object\n Information about the memory layout of the array.\n\n ctor.prototype.length: integer\n Length of the array (i.e., number of elements).\n\n ctor.prototype.ndims: integer\n Number of dimensions.\n\n ctor.prototype.offset: integer\n Index offset which specifies the buffer index at which to start\n iterating over array elements.\n\n ctor.prototype.order: string\n Array order. The array order is either row-major (C-style) or column-\n major (Fortran-style).\n\n ctor.prototype.shape: Array\n Array shape.\n\n ctor.prototype.strides: Array\n Index strides which specify how to access data along corresponding array\n dimensions.\n\n ctor.prototype.get: Function\n Returns an array element specified according to provided subscripts. The\n number of provided subscripts should equal the number of dimensions.\n\n ctor.prototype.iget: Function\n Returns an array element located at a specified linear index.\n\n ctor.prototype.set: Function\n Sets an array element specified according to provided subscripts. The\n number of provided subscripts should equal the number of dimensions.\n\n ctor.prototype.iset: Function\n Sets an array element located at a specified linear index.\n\n ctor.prototype.toString: Function\n Serializes an ndarray as a string. This method does **not** serialize\n data outside of the buffer region defined by the array configuration.\n\n ctor.prototype.toJSON: Function\n Serializes an ndarray as a JSON object. This method does **not**\n serialize data outside of the buffer region defined by the array\n configuration.\n\n Examples\n --------\n > var ctor = ndarrayMemoized( 'generic', 2 )\n \n > var f = ndarrayMemoized( 'generic', 2 )\n \n > var bool = ( f === ctor )\n true\n\n // To create a new instance...\n > var b = [ 1.0, 2.0, 3.0, 4.0 ]; // underlying data buffer\n > var d = [ 2, 2 ]; // shape\n > var s = [ 2, 1 ]; // strides\n > var o = 0; // index offset\n > var arr = ctor( b, d, s, o, 'row-major' )\n \n\n // Get an element using subscripts:\n > var v = arr.get( 1, 1 )\n 4.0\n\n // Get an element using a linear index:\n > v = arr.iget( 3 )\n 4.0\n\n // Set an element using subscripts:\n > arr.set( 1, 1, 40.0 );\n > arr.get( 1, 1 )\n 40.0\n\n // Set an element using a linear index:\n > arr.iset( 3, 99.0 );\n > arr.get( 1, 1 )\n 99.0\n\n See Also\n --------\n array, ndarray\n", "ndarrayMinDataType": "\nndarrayMinDataType( value )\n Returns the minimum ndarray data type of the closest \"kind\" necessary for\n storing a provided scalar value.\n\n The function does *not* provide precision guarantees for non-integer-valued\n real numbers. In other words, the function returns the smallest possible\n floating-point (i.e., inexact) data type for storing numbers having\n decimals.\n\n Parameters\n ----------\n value: any\n Scalar value.\n\n Returns\n -------\n dt: string\n ndarray data type.\n\n Examples\n --------\n > var dt = ndarrayMinDataType( 3.141592653589793 )\n 'float32'\n > dt = ndarrayMinDataType( 3 )\n 'uint8'\n > dt = ndarrayMinDataType( -3 )\n 'int8'\n > dt = ndarrayMinDataType( '-3' )\n 'generic'\n\n See Also\n --------\n ndarrayDataTypes, ndarrayPromotionRules, ndarraySafeCasts\n", "ndarrayNextDataType": "\nndarrayNextDataType( [dtype] )\n Returns the next larger ndarray data type of the same kind.\n\n If not provided a data type, the function returns a table.\n\n If a data type does not have a next larger data type or the next larger type\n is not supported, the function returns `-1`.\n\n If provided an unrecognized data type, the function returns `null`.\n\n Parameters\n ----------\n dtype: string (optional)\n ndarray data type.\n\n Returns\n -------\n out: Object|string|integer|null\n Next larger type(s).\n\n Examples\n --------\n > var out = ndarrayNextDataType( 'float32' )\n 'float64'\n\n See Also\n --------\n ndarrayDataTypes, ndarrayPromotionRules, ndarraySafeCasts\n", "ndarrayOrders": "\nndarrayOrders()\n Returns a list of ndarray orders.\n\n The output array contains the following orders:\n\n - row-major: row-major (C-style) order.\n - column-major: column-major (Fortran-style) order.\n\n Returns\n -------\n out: Array\n List of ndarray orders.\n\n Examples\n --------\n > var out = ndarrayOrders()\n [ 'row-major', 'column-major' ]\n\n See Also\n --------\n array, ndarray\n", @@ -1414,15 +1415,15 @@ var db = { "pluck": "\npluck( arr, prop[, options] )\n Extracts a property value from each element of an object array.\n\n The function skips `null` and `undefined` array elements.\n\n Extracted values are not cloned.\n\n Parameters\n ----------\n arr: Array\n Source array.\n\n prop: string\n Property to access.\n\n options: Object (optional)\n Options.\n\n options.copy: boolean (optional)\n Boolean indicating whether to return a new data structure. To mutate the\n input data structure (e.g., when input values can be discarded or when\n optimizing memory usage), set the `copy` option to `false`. Default:\n true.\n\n Returns\n -------\n out: Array\n Destination array.\n\n Examples\n --------\n > var arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > var out = pluck( arr, 'a' )\n [ 1, 0.5 ]\n\n > arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > out = pluck( arr, 'a', { 'copy': false } )\n [ 1, 0.5 ]\n > var bool = ( arr[ 0 ] === out[ 0 ] )\n true\n\n See Also\n --------\n deepPluck, pick\n", "pop": "\npop( collection )\n Removes and returns the last element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = pop( arr )\n [ [ 1.0, 2.0, 3.0, 4.0 ], 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = pop( arr )\n [ [ 1.0 ], 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = pop( arr )\n [ { 'length': 1, '0': 1.0 }, 2.0 ]\n\n See Also\n --------\n push, shift, unshift\n", "prepend": "\nprepend( collection1, collection2 )\n Adds the elements of one collection to the beginning of another collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection1: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n collection2: Array|TypedArray|Object\n A collection containing the elements to add. If the collection is an\n `Object`, the collection should be array-like.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = prepend( arr, [ 6.0, 7.0 ] )\n [ 6.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = prepend( arr, [ 3.0, 4.0 ] )\n [ 3.0, 4.0, 1.0, 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 1, '0': 1.0 };\n > arr = prepend( arr, [ 2.0, 3.0 ] )\n { 'length': 3, '0': 2.0, '1': 3.0, '2': 1.0 }\n\n See Also\n --------\n append, unshift\n", - "propertyDescriptor": "\npropertyDescriptor( value, property )\n Returns a property descriptor for an object's own property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptor( obj, 'a' )\n {...}\n\n See Also\n --------\n hasOwnProp, defineProperty, propertyDescriptorIn, propertyDescriptors\n", - "propertyDescriptorIn": "\npropertyDescriptorIn( value, property )\n Returns a property descriptor for an object's own or inherited property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptorIn( obj, 'a' )\n {...}\n\n See Also\n --------\n hasProp, defineProperty, propertyDescriptor, propertyDescriptorsIn\n", + "propertyDescriptor": "\npropertyDescriptor( value, property )\n Returns a property descriptor for an object's own property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string|symbol\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptor( obj, 'a' )\n {...}\n\n See Also\n --------\n hasOwnProp, defineProperty, propertyDescriptorIn, propertyDescriptors\n", + "propertyDescriptorIn": "\npropertyDescriptorIn( value, property )\n Returns a property descriptor for an object's own or inherited property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string|symbol\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptorIn( obj, 'a' )\n {...}\n\n See Also\n --------\n hasProp, defineProperty, propertyDescriptor, propertyDescriptorsIn\n", "propertyDescriptors": "\npropertyDescriptors( value )\n Returns an object's own property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n desc: Object\n Property descriptors.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptors( obj )\n { 'a': {...} }\n\n See Also\n --------\n defineProperty, defineProperties, propertyDescriptor, propertyDescriptorsIn, propertyNames, propertySymbols\n", "propertyDescriptorsIn": "\npropertyDescriptorsIn( value )\n Returns an object's own and inherited property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n desc: Object\n An object's own and inherited property descriptors.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var desc = propertyDescriptorsIn( obj )\n { 'beep': {...}, 'foo': {...}, ... }\n\n See Also\n --------\n defineProperties, propertyDescriptorIn, propertyDescriptors, propertyNamesIn, propertySymbolsIn\n", "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeys, propertyNamesIn, propertySymbols\n", "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeysIn, propertyNames, propertySymbolsIn\n", "propertySymbols": "\npropertySymbols( value )\n Returns an array of an object's own symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own symbol properties.\n\n Examples\n --------\n > var s = propertySymbols( {} )\n\n See Also\n --------\n propertyNames, propertySymbolsIn\n", "propertySymbolsIn": "\npropertySymbolsIn( value )\n Returns an array of an object's own and inherited symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited symbol properties.\n\n Examples\n --------\n > var s = propertySymbolsIn( [] )\n\n See Also\n --------\n propertyNamesIn, propertySymbols\n", - "Proxy": "\nProxy( target, handlers )\n Returns a proxy object implementing custom behavior for specified object\n operations.\n\n The following \"traps\" are supported:\n\n - getPrototypeOf( target )\n Trap for `Object.getPrototypeOf()`. Can be used to intercept the\n `instanceof` operator. The method must return an object or `null`.\n\n - setPrototypeOf( target, prototype )\n Trap for `Object.setPrototypeOf()`. The method must return a boolean\n indicating if prototype successfully set.\n\n - isExtensible( target )\n Trap for `Object.isExtensible()`. The method must return a boolean.\n\n - preventExtensions( target )\n Trap for `Object.preventExtensions()`. The method must return a boolean.\n\n - getOwnPropertyDescriptor( target, property )\n Trap for `Object.getOwnPropertyDescriptor()`. The method must return an\n object or `undefined`.\n\n - defineProperty( target, property, descriptor )\n Trap for `Object.defineProperty()`. The method must return a boolean\n indicating whether the operation succeeded.\n\n - has( target, property )\n Trap for the `in` operator. The method must return a boolean.\n\n - get( target, property, receiver )\n Trap for retrieving property values. The method can return any value.\n\n - set( target, property, value, receiver )\n Trap for setting property values. The method should return a boolean\n indicating whether assignment succeeded.\n\n - deleteProperty( target, property )\n Trap for the `delete` operator. The method must return a boolean\n indicating whether operation succeeded.\n\n - ownKeys( target )\n Trap for `Object.keys`, `Object.getOwnPropertyNames()`, and\n `Object.getOwnPropertySymbols()`. The method must return an enumerable\n object.\n\n - apply( target, thisArg, argumentsList )\n Trap for a function call. The method can return any value.\n\n - construct( target, argumentsList, newTarget )\n Trap for the `new` operator. The method must return an object.\n\n All traps are optional. If a trap is not defined, the default behavior is to\n forward the operation to the target.\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Proxy object.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy( {}, h );\n > p.a = 3.14;\n > p.a\n 6.28\n\n\nProxy.revocable( target, handlers )\n Returns a revocable proxy object\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Revocable proxy object.\n\n p.proxy: Object\n Proxy object.\n\n p.revoke: Function\n Invalidates a proxy, rendering a proxy object unusable.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = new Proxy( {}, h );\n > p.proxy.a = 3.14;\n > p.proxy.a\n 6.28\n > p.revoke();\n\n", + "Proxy": "\nProxy( target, handlers )\n Returns a proxy object implementing custom behavior for specified object\n operations.\n\n The following \"traps\" are supported:\n\n - getPrototypeOf( target )\n Trap for `Object.getPrototypeOf()`. Can be used to intercept the\n `instanceof` operator. The method must return an object or `null`.\n\n - setPrototypeOf( target, prototype )\n Trap for `Object.setPrototypeOf()`. The method must return a boolean\n indicating if prototype successfully set.\n\n - isExtensible( target )\n Trap for `Object.isExtensible()`. The method must return a boolean.\n\n - preventExtensions( target )\n Trap for `Object.preventExtensions()`. The method must return a boolean.\n\n - getOwnPropertyDescriptor( target, property )\n Trap for `Object.getOwnPropertyDescriptor()`. The method must return an\n object or `undefined`.\n\n - defineProperty( target, property, descriptor )\n Trap for `Object.defineProperty()`. The method must return a boolean\n indicating whether the operation succeeded.\n\n - has( target, property )\n Trap for the `in` operator. The method must return a boolean.\n\n - get( target, property, receiver )\n Trap for retrieving property values. The method can return any value.\n\n - set( target, property, value, receiver )\n Trap for setting property values. The method should return a boolean\n indicating whether assignment succeeded.\n\n - deleteProperty( target, property )\n Trap for the `delete` operator. The method must return a boolean\n indicating whether operation succeeded.\n\n - ownKeys( target )\n Trap for `Object.keys`, `Object.getOwnPropertyNames()`, and\n `Object.getOwnPropertySymbols()`. The method must return an enumerable\n object.\n\n - apply( target, thisArg, argumentsList )\n Trap for a function call. The method can return any value.\n\n - construct( target, argumentsList, newTarget )\n Trap for the `new` operator. The method must return an object.\n\n All traps are optional. If a trap is not defined, the default behavior is to\n forward the operation to the target.\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Proxy object.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = new Proxy( {}, h );\n > p.a = 3.14;\n > p.a\n 6.28\n\n\nProxy.revocable( target, handlers )\n Returns a revocable proxy object\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Revocable proxy object.\n\n p.proxy: Object\n Proxy object.\n\n p.revoke: Function\n Invalidates a proxy, rendering a proxy object unusable.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy.revocable( {}, h );\n > p.proxy.a = 3.14;\n > p.proxy.a\n 6.28\n > p.revoke();\n\n", "push": "\npush( collection, ...items )\n Adds one or more elements to the end of a collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n items: ...any\n Items to add.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = push( arr, 6.0, 7.0 )\n [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = push( arr, 3.0, 4.0 )\n [ 1.0, 2.0, 3.0, 4.0 ]\n\n // Array-like object:\n > arr = { 'length': 0 };\n > arr = push( arr, 1.0, 2.0 )\n { 'length': 2, '0': 1.0, '1': 2.0 }\n\n See Also\n --------\n pop, shift, unshift\n", "quarterOfYear": "\nquarterOfYear( [month] )\n Returns the quarter of the year.\n\n By default, the function returns the quarter of the year for the current\n month in the current year (according to local time). To determine the\n quarter for a particular month, provide either a month or a `Date`\n object.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n Parameters\n ----------\n month: integer|string|Date (optional)\n Month (or `Date`).\n\n Returns\n -------\n out: integer\n Quarter of the year.\n\n Examples\n --------\n > var q = quarterOfYear( new Date() )\n \n > q = quarterOfYear( 4 )\n 2\n > q = quarterOfYear( 'June' )\n 2\n\n // Other ways to supply month:\n > q = quarterOfYear( 'April' )\n 2\n > q = quarterOfYear( 'apr' )\n 2\n\n See Also\n --------\n dayOfYear\n", "random.iterators.arcsine": "\nrandom.iterators.arcsine( a, b[, options] )\n Returns an iterator for generating pseudorandom numbers drawn from an\n arcsine distribution.\n\n If an environment supports Symbol.iterator, the returned iterator is\n iterable.\n\n Parameters\n ----------\n a: number\n Minimum support.\n\n b: number\n Maximum support.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n options.iter: integer (optional)\n Number of iterations.\n\n Returns\n -------\n iterator: Object\n Iterator.\n\n iterator.next(): Function\n Returns an iterator protocol-compliant object containing the next\n iterated value (if one exists) and a boolean flag indicating whether the\n iterator is finished.\n\n iterator.return( [value] ): Function\n Finishes an iterator and returns a provided value.\n\n iterator.seed: any\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var it = random.iterators.arcsine( 0.0, 1.0 );\n > var r = it.next().value\n \n > r = it.next().value\n \n\n See Also\n --------\n base.random.arcsine\n", @@ -1500,13 +1501,13 @@ var db = { "realmin": "\nrealmin( dtype )\n Returns the smallest positive normal value capable of being represented by a\n numeric real type.\n\n The following numeric real types are supported:\n\n - float64: double-precision floating-point numbers\n - float32: single-precision floating-point numbers\n - float16: half-precision floating-point numbers\n\n Parameters\n ----------\n dtype: string\n Numeric type.\n\n Returns\n -------\n out: number\n Smallest finite normal value.\n\n Examples\n --------\n > var m = realmin( 'float16' )\n 0.00006103515625\n > m = realmin( 'float32' )\n 1.1754943508222875e-38\n\n See Also\n --------\n realmax, typemin\n", "reduce": "\nreduce( collection, initial, reducer[, thisArg] )\n Applies a function against an accumulator and each element in a collection\n and returns the accumulated result.\n\n When invoked, the reduction function is provided four arguments:\n\n - `accumulator`: accumulated value\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n If provided an empty collection, the function returns the initial value.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection. If provided an object, the object must be array-like\n (excluding strings and functions).\n\n initial: any\n Accumulator value used in the first invocation of the reduction\n function.\n\n reducer: Function\n Function to invoke for each element in the input collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: any\n Accumulated result.\n\n Examples\n --------\n > function sum( acc, v ) { return acc + v; };\n > var arr = [ 1.0, 2.0, 3.0 ];\n > var out = reduce( arr, 0, sum )\n 6.0\n\n See Also\n --------\n forEach, reduceAsync, reduceRight\n", "reduceAsync": "\nreduceAsync( collection, initial, [options,] reducer, done )\n Applies a function against an accumulator and each element in a collection\n and returns the accumulated result.\n\n When invoked, `reducer` is provided a maximum of five arguments:\n\n - `accumulator`: accumulated value\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If\n `reducer` accepts three arguments, `reducer` is provided:\n\n - `accumulator`\n - `value`\n - `next`\n\n If `reducer` accepts four arguments, `reducer` is provided:\n\n - `accumulator`\n - `value`\n - `index`\n - `next`\n\n For every other `reducer` signature, `reducer` is provided all five\n arguments.\n\n The `next` callback accepts two arguments:\n\n - `error`: error argument\n - `accumulator`: accumulated value\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n If provided an empty collection, the function invokes the `done` callback\n with the `initial` value as the second argument.\n\n The function does not skip `undefined` elements.\n\n When processing collection elements concurrently, *beware* of race\n conditions when updating an accumulator. This is especially true when an\n accumulator is a primitive (e.g., a number). In general, prefer object\n accumulators.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n initial: any\n Accumulator value used in the first invocation of the reduction\n function.\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: true.\n\n options.thisArg: any (optional)\n Execution context.\n\n reducer: Function\n The function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function fcn( acc, value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... acc.sum += value;\n ... next( null, acc );\n ... }\n ... };\n > function done( error, acc ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( acc.sum );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > var acc = { 'sum': 0 };\n > reduceAsync( arr, acc, fcn, done )\n 3000\n 2500\n 1000\n 6500\n\n // Limit number of concurrent invocations:\n > function fcn( acc, value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... acc.sum += value;\n ... next( null, acc );\n ... }\n ... };\n > function done( error, acc ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( acc.sum );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > var acc = { 'sum': 0 };\n > reduceAsync( arr, acc, opts, fcn, done )\n 2500\n 3000\n 1000\n 6500\n\n // Process concurrently:\n > function fcn( acc, value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... acc.sum += value;\n ... next( null, acc );\n ... }\n ... };\n > function done( error, acc ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( acc.sum );\n ... };\n > var opts = { 'series': false };\n > var arr = [ 3000, 2500, 1000 ];\n > var acc = { 'sum': 0 };\n > reduceAsync( arr, acc, opts, fcn, done )\n 1000\n 2500\n 3000\n 6500\n\n\nreduceAsync.factory( [options,] fcn )\n Returns a function which applies a function against an accumulator and each\n element in a collection and returns the accumulated result.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: true.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which invokes a function for each element in a collection.\n\n Examples\n --------\n > function fcn( acc, value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... acc.sum += value;\n ... next( null, acc );\n ... }\n ... };\n > var opts = { 'series': false };\n > var f = reduceAsync.factory( opts, fcn );\n > function done( error, acc ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( acc.sum );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > var acc = { 'sum': 0 };\n > f( arr, acc, done )\n 1000\n 2500\n 3000\n 6500\n > acc = { 'sum': 0 };\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, acc, done )\n 1000\n 1500\n 2000\n 4500\n\n See Also\n --------\n forEachAsync, reduce, reduceRightAsync\n", - "reduceRight": "\nreduceRight( collection, initial, reducer[, thisArg] )\n Applies a function against an accumulator and each element in a collection\n and returns the accumulated result, iterating from right to left.\n\n When invoked, the reduction function is provided four arguments:\n\n - `accumulator`: accumulated value\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n If provided an empty collection, the function returns the initial value.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection. If provided an object, the object must be array-like\n (excluding strings and functions).\n\n initial: any\n Accumulator value used in the first invocation of the reduction\n function.\n\n reducer: Function\n Function to invoke for each element in the input collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: any\n Accumulated result.\n\n Examples\n --------\n > function sum( acc, v ) {\n ... console.log( '%s: %d', acc, v );\n ... return acc + v;\n ... };\n > var arr = [ 1.0, 2.0, 3.0 ];\n > var out = reduceRight( arr, 0, sum )\n 2: 3.0\n 1: 2.0\n 0: 1.0\n 6.0\n\n See Also\n --------\n forEachRight, reduce, reduceRightAsync\n", + "reduceRight": "\nreduceRight( collection, initial, reducer[, thisArg] )\n Applies a function against an accumulator and each element in a collection\n and returns the accumulated result, iterating from right to left.\n\n When invoked, the reduction function is provided four arguments:\n\n - `accumulator`: accumulated value\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n If provided an empty collection, the function returns the initial value.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection. If provided an object, the object must be array-like\n (excluding strings and functions).\n\n initial: any\n Accumulator value used in the first invocation of the reduction\n function.\n\n reducer: Function\n Function to invoke for each element in the input collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: any\n Accumulated result.\n\n Examples\n --------\n > function sum( acc, v ) {\n ... console.log( '%s: %d', acc, v );\n ... return acc + v;\n ... };\n > var arr = [ 1.0, 2.0, 3.0 ];\n > var out = reduceRight( arr, 0, sum );\n 2: 3.0\n 1: 2.0\n 0: 1.0\n > out\n 6.0\n\n See Also\n --------\n forEachRight, reduce, reduceRightAsync\n", "reduceRightAsync": "\nreduceRightAsync( collection, initial, [options,] reducer, done )\n Applies a function against an accumulator and each element in a collection\n and returns the accumulated result, iterating from right to left.\n\n When invoked, `reducer` is provided a maximum of five arguments:\n\n - `accumulator`: accumulated value\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If\n `reducer` accepts three arguments, `reducer` is provided:\n\n - `accumulator`\n - `value`\n - `next`\n\n If `reducer` accepts four arguments, `reducer` is provided:\n\n - `accumulator`\n - `value`\n - `index`\n - `next`\n\n For every other `reducer` signature, `reducer` is provided all five\n arguments.\n\n The `next` callback accepts two arguments:\n\n - `error`: error argument\n - `accumulator`: accumulated value\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n If provided an empty collection, the function invokes the `done` callback\n with the `initial` value as the second argument.\n\n The function does not skip `undefined` elements.\n\n When processing collection elements concurrently, *beware* of race\n conditions when updating an accumulator. This is especially true when an\n accumulator is a primitive (e.g., a number). In general, prefer object\n accumulators.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n initial: any\n Accumulator value used in the first invocation of the reduction\n function.\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: true.\n\n options.thisArg: any (optional)\n Execution context.\n\n reducer: Function\n The function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function fcn( acc, value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... acc.sum += value;\n ... next( null, acc );\n ... }\n ... };\n > function done( error, acc ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( acc.sum );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > var acc = { 'sum': 0 };\n > reduceRightAsync( arr, acc, fcn, done )\n 3000\n 2500\n 1000\n 6500\n\n // Limit number of concurrent invocations:\n > function fcn( acc, value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... acc.sum += value;\n ... next( null, acc );\n ... }\n ... };\n > function done( error, acc ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( acc.sum );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > var acc = { 'sum': 0 };\n > reduceRightAsync( arr, acc, opts, fcn, done )\n 2500\n 3000\n 1000\n 6500\n\n // Process concurrently:\n > function fcn( acc, value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... acc.sum += value;\n ... next( null, acc );\n ... }\n ... };\n > function done( error, acc ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( acc.sum );\n ... };\n > var opts = { 'series': false };\n > var arr = [ 1000, 2500, 3000 ];\n > var acc = { 'sum': 0 };\n > reduceRightAsync( arr, acc, opts, fcn, done )\n 1000\n 2500\n 3000\n 6500\n\n\nreduceRightAsync.factory( [options,] fcn )\n Returns a function which applies a function against an accumulator and each\n element in a collection and returns the accumulated result, iterating from\n right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: true.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which invokes a function for each element in a collection.\n\n Examples\n --------\n > function fcn( acc, value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... acc.sum += value;\n ... next( null, acc );\n ... }\n ... };\n > var opts = { 'series': false };\n > var f = reduceRightAsync.factory( opts, fcn );\n > function done( error, acc ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( acc.sum );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > var acc = { 'sum': 0 };\n > f( arr, acc, done )\n 1000\n 2500\n 3000\n 6500\n > acc = { 'sum': 0 };\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, acc, done )\n 1000\n 1500\n 2000\n 4500\n\n See Also\n --------\n forEachRightAsync, reduceAsync, reduceRight\n", "reFromString": "\nreFromString( str )\n Parses a regular expression string and returns a new regular expression.\n\n Provided strings should be properly escaped.\n\n If unable to parse a string as a regular expression, the function returns\n `null`.\n\n Parameters\n ----------\n str: string\n Regular expression string.\n\n Returns\n -------\n out: RegExp|null\n Regular expression or null.\n\n Examples\n --------\n > var re = reFromString( '/beep/' )\n /beep/\n > re = reFromString( '/beep' )\n null\n\n", "reim": "\nreim( z )\n Returns the real and imaginary components of a complex number.\n\n Parameters\n ----------\n z: Complex\n Complex number.\n\n Returns\n -------\n out: Float64Array|Float32Array\n Array containing the real and imaginary components, respectively.\n\n Examples\n --------\n > var z = new Complex128( 5.0, 3.0 );\n > var out = reim( z )\n [ 5.0, 3.0 ]\n\n See Also\n --------\n imag, real\n", "removeFirst": "\nremoveFirst( str )\n Removes the first character of a `string`.\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n out: string\n Updated string.\n\n Examples\n --------\n > var out = removeFirst( 'beep' )\n 'eep'\n > out = removeFirst( 'Boop' )\n 'oop'\n\n See Also\n --------\n removeLast\n", "removeLast": "\nremoveLast( str )\n Removes the last character of a `string`.\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n out: string\n Updated string.\n\n Examples\n --------\n > var out = removeLast( 'beep' )\n 'bee'\n > out = removeLast( 'Boop' )\n 'Boo'\n\n See Also\n --------\n removeFirst\n", - "removePunctuation": "\nremovePunctuation( str )\n Removes punctuation characters from a `string`.\n\n The function removes the following characters:\n\n - Apostrophe: `\n - Braces : { }\n - Brackets: [ ]\n - Colon: :\n - Comma: ,\n - Exclamation Mark: !\n - Fraction Slash: /\n - Guillemets: < >\n - Parentheses: ( )\n - Period: .\n - Semicolon: ;\n - Tilde: ~\n - Vertical Bar: |\n - Question Mark: ?\n - Quotation Marks: ' \"\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n out: string\n String with punctuation characters removed.\n\n Examples\n --------\n > var str = 'Sun Tzu said: \"A leader leads by example not by force.\"';\n > var out = removePunctuation( str )\n 'Sun Tzu said A leader leads by example not by force'\n\n > str = 'This function removes these characters: `{}[]:,!/<>().;~|?\\'\"';\n > out = removePunctuation( str )\n 'This function removes these characters'\n\n", + "removePunctuation": "\nremovePunctuation( str )\n Removes punctuation characters from a `string`.\n\n The function removes the following characters:\n\n - Apostrophe: `\n - Braces : { }\n - Brackets: [ ]\n - Colon: :\n - Comma: ,\n - Exclamation Mark: !\n - Fraction Slash: /\n - Guillemets: < >\n - Parentheses: ( )\n - Period: .\n - Semicolon: ;\n - Tilde: ~\n - Vertical Bar: |\n - Question Mark: ?\n - Quotation Marks: ' \"\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n out: string\n String with punctuation characters removed.\n\n Examples\n --------\n > var str = 'Sun Tzu said: \"A leader leads by example not by force.\"';\n > var out = removePunctuation( str )\n 'Sun Tzu said A leader leads by example not by force'\n\n > str = 'This function removes these characters: `{}[]:,!/<>().;~|?\\'\"';\n > out = removePunctuation( str )\n 'This function removes these characters '\n\n", "removeUTF8BOM": "\nremoveUTF8BOM( str )\n Removes a UTF-8 byte order mark (BOM) from the beginning of a `string`.\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n out: string\n String with BOM removed.\n\n Examples\n --------\n > var out = removeUTF8BOM( '\\ufeffbeep' )\n 'beep'\n\n", "removeWords": "\nremoveWords( str, words[, ignoreCase] )\n Removes all occurrences of the given words from a `string`.\n\n Parameters\n ----------\n str: string\n Input string.\n\n words: Array\n Array of words to be removed.\n\n ignoreCase: boolean (optional)\n Boolean indicating whether to perform a case-insensitive operation.\n Default: `false`.\n\n Returns\n -------\n out: string\n String with words removed.\n\n Examples\n --------\n > var out = removeWords( 'beep boop Foo bar', [ 'boop', 'foo' ] )\n 'beep Foo bar'\n\n // Case-insensitive:\n > out = removeWords( 'beep boop Foo bar', [ 'boop', 'foo' ], true )\n 'beep bar'\n\n", "rename": "\nrename( oldPath, newPath, clbk )\n Asynchronously renames a file.\n\n The old path can specify a directory. In this case, the new path must either\n not exist, or it must specify an empty directory.\n\n The old pathname should not name an ancestor directory of the new pathname.\n\n If the old path points to the pathname of a file that is not a directory,\n the new path should not point to the pathname of a directory.\n\n Write access permission is required for both the directory containing the\n old path and the directory containing the new path.\n\n If the link named by the new path exists, the new path is removed and the\n old path is renamed to the new path. The link named by the new path will\n remain visible to other threads throughout the renaming operation and refer\n to either the file referred to by the new path or to the file referred to by\n the old path before the operation began.\n\n If the old path and the new path resolve to either the same existing\n directory entry or to different directory entries for the same existing\n file, no action is taken, and no error is returned.\n\n If the old path points to a pathname of a symbolic link, the symbolic link\n is renamed. If the new path points to a pathname of a symbolic link, the\n symbolic link is removed.\n\n If a link named by the new path exists and the file's link count becomes 0\n when it is removed and no process has the file open, the space occupied by\n the file is freed and the file is no longer accessible. If one or more\n processes have the file open when the last link is removed, the link is\n removed before the function returns, but the removal of file contents is\n postponed until all references to the file are closed.\n\n Parameters\n ----------\n oldPath: string|Buffer\n Old path.\n\n newPath: string|Buffer\n New path.\n\n clbk: Function\n Callback to invoke upon renaming a file.\n\n Examples\n --------\n > function done( error ) {\n ... if ( error ) {\n ... console.error( error.message );\n ... }\n ... };\n > rename( './beep/boop.txt', './beep/foo.txt', done );\n\n\nrename.sync( oldPath, newPath )\n Synchronously renames a file.\n\n Parameters\n ----------\n oldPath: string|Buffer\n Old path.\n\n newPath: string|Buffer\n New path.\n\n Returns\n -------\n err: Error|null\n Error object or null.\n\n Examples\n --------\n > var err = rename.sync( './beep/boop.txt', './beep/foo.txt' );\n\n See Also\n --------\n exists, readFile, writeFile, unlink\n", @@ -1570,7 +1571,7 @@ var db = { "startcase": "\nstartcase( str )\n Capitalizes the first letter of each word in an input `string`.\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n out: string\n String containing words where each first letter is capitalized.\n\n Examples\n --------\n > var out = startcase( 'beep boop' )\n 'Beep Boop'\n\n See Also\n --------\n lowercase, uppercase\n", "startsWith": "\nstartsWith( str, search[, position] )\n Tests if a `string` starts with the characters of another `string`.\n\n If provided an empty `search` string, the function always returns `true`.\n\n Parameters\n ----------\n str: string\n Input string.\n\n search: string\n Search string.\n\n position: integer (optional)\n Position at which to start searching for `search`. If less than `0`, the\n start position is determined relative to the end of the input string.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a `string` starts with the characters of\n another `string`.\n\n Examples\n --------\n > var bool = startsWith( 'Beep', 'Be' )\n true\n > bool = startsWith( 'Beep', 'ep' )\n false\n > bool = startsWith( 'Beep', 'ee', 1 )\n true\n > bool = startsWith( 'Beep', 'ee', -3 )\n true\n > bool = startsWith( 'Beep', '' )\n true\n\n See Also\n --------\n endsWith\n", "STOPWORDS_EN": "\nSTOPWORDS_EN()\n Returns a list of English stop words.\n\n Returns\n -------\n out: Array\n List of stop words.\n\n Examples\n --------\n > var list = STOPWORDS_EN()\n [ 'a', 'about', 'above', 'across', ... ]\n\n", - "string2buffer": "\nstring2buffer( str[, encoding] )\n Allocates a buffer containing a provided string.\n\n Parameters\n ----------\n str: string\n Input string.\n\n encoding: string (optional)\n Character encoding. Default: 'utf8'.\n\n Returns\n -------\n out: Buffer\n Buffer instance.\n\n Examples\n --------\n > var b = string2buffer( 'beep boop' )\n \n > b = string2buffer( '7468697320697320612074c3a97374', 'hex' );\n > b.toString()\n this is a tést\n\n See Also\n --------\n Buffer, array2buffer, arraybuffer2buffer, copyBuffer\n", + "string2buffer": "\nstring2buffer( str[, encoding] )\n Allocates a buffer containing a provided string.\n\n Parameters\n ----------\n str: string\n Input string.\n\n encoding: string (optional)\n Character encoding. Default: 'utf8'.\n\n Returns\n -------\n out: Buffer\n Buffer instance.\n\n Examples\n --------\n > var b = string2buffer( 'beep boop' )\n \n > b = string2buffer( '7468697320697320612074c3a97374', 'hex' );\n > b.toString()\n 'this is a tést'\n\n See Also\n --------\n Buffer, array2buffer, arraybuffer2buffer, copyBuffer\n", "sub2ind": "\nsub2ind( shape, ...subscript[, options] )\n Converts subscripts to a linear index.\n\n Parameters\n ----------\n shape: ArrayLike\n Array shape.\n\n subscript: ...integer\n Subscripts.\n\n options: Object (optional)\n Options.\n\n options.order: string (optional)\n Specifies whether an array is row-major (C-style) or column-major\n (Fortran style). Default: 'row-major'.\n\n options.mode: string|Array (optional)\n Specifies how to handle subscripts which exceed array dimensions. If\n equal to 'throw', the function throws an error when a subscript exceeds\n array dimensions. If equal to 'wrap', the function wraps around\n subscripts exceeding array dimensions using modulo arithmetic. If equal\n to 'clamp', the function sets subscripts exceeding array dimensions to\n either `0` (minimum index) or the maximum index along a particular\n dimension. If provided a mode array, each array element specifies the\n mode for a corresponding array dimension. If provided fewer modes than\n dimensions, the function recycles modes using modulo arithmetic.\n Default: [ 'throw' ].\n\n Returns\n -------\n idx: integer\n Linear index.\n\n Examples\n --------\n > var d = [ 3, 3, 3 ];\n > var idx = sub2ind( d, 1, 2, 2 )\n 17\n\n See Also\n --------\n array, ndarray, ind2sub\n", "Symbol": "\nSymbol( [description] )\n Returns a symbol.\n\n Unlike conventional constructors, this function does **not** support the\n `new` keyword.\n\n This function is only supported in environments which support symbols.\n\n Parameters\n ----------\n description: string (optional)\n Symbol description which can be used for debugging but not to access the\n symbol itself.\n\n Returns\n -------\n out: symbol\n Symbol.\n\n Examples\n --------\n > var s = ( Symbol ) ? Symbol( 'beep' ) : null\n\n", "tabulate": "\ntabulate( collection )\n Generates a frequency table.\n\n The table is an array of arrays where each sub-array corresponds to a unique\n value in the input collection. Each sub-array is structured as follows:\n\n - 0: unique value\n - 1: value count\n - 2: frequency percentage\n\n If provided an empty collection, the function returns an empty array.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection to tabulate. If provided an object, the object must be\n array-like (excluding strings and functions).\n\n Returns\n -------\n out: Array|Array\n Frequency table.\n\n Examples\n --------\n > var collection = [ 'beep', 'boop', 'foo', 'beep' ];\n > var out = tabulate( collection )\n [ [ 'beep', 2, 0.5 ], [ 'boop', 1, 0.25 ], [ 'foo', 1, 0.25 ] ]\n\n See Also\n --------\n countBy, groupBy, tabulateBy\n", @@ -1600,17 +1601,17 @@ var db = { "typedarraypool": "\ntypedarraypool( [dtype] )\n Returns an uninitialized typed array from a typed array memory pool.\n\n Memory is **uninitialized**, which means that the contents of a returned\n typed array may contain sensitive contents.\n\n The function supports the following data types:\n\n - float64: double-precision floating-point numbers (IEEE 754)\n - float32: single-precision floating-point numbers (IEEE 754)\n - int32: 32-bit two's complement signed integers\n - uint32: 32-bit unsigned integers\n - int16: 16-bit two's complement signed integers\n - uint16: 16-bit unsigned integers\n - int8: 8-bit two's complement signed integers\n - uint8: 8-bit unsigned integers\n - uint8c: 8-bit unsigned integers clamped to 0-255\n\n The default typed array data type is `float64`.\n\n Parameters\n ----------\n dtype: string (optional)\n Data type. Default: 'float64'.\n\n Returns\n -------\n out: TypedArray|null\n If the function is unable to allocate a typed array from the typed array\n pool (e.g., due to insufficient memory), the function returns `null`.\n\n Examples\n --------\n > var arr = typedarraypool()\n []\n > arr = typedarraypool( 'float32' )\n []\n\n\ntypedarraypool( length[, dtype] )\n Returns an uninitialized typed array having a specified length from a typed\n array memory pool.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n dtype: string (optional)\n Data type. Default: 'float64'.\n\n Returns\n -------\n out: TypedArray|null\n If the function is unable to allocate a typed array from the typed array\n pool (e.g., due to insufficient memory), the function returns `null`.\n\n Examples\n --------\n > var arr = typedarraypool( 5 )\n \n > arr = typedarraypool( 5, 'int32' )\n \n\n\ntypedarraypool( typedarray[, dtype] )\n Creates a pooled typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n dtype: string (optional)\n Data type. Default: 'float64'.\n\n Returns\n -------\n out: TypedArray|null\n If the function is unable to allocate a typed array from the typed array\n pool (e.g., due to insufficient memory), the function returns `null`.\n\n Examples\n --------\n > var arr1 = typedarraypool( [ 0.5, 0.5, 0.5 ] );\n > var arr2 = typedarraypool( arr1, 'float32' )\n [ 0.5, 0.5, 0.5 ]\n\n\ntypedarraypool( obj[, dtype] )\n Creates a pooled typed array from an array-like object.\n\n Parameters\n ----------\n obj: Object\n Array-like object from which to generate a typed array.\n\n dtype: string (optional)\n Data type. Default: 'float64'.\n\n Returns\n -------\n out: TypedArray|null\n If the function is unable to allocate a typed array from the typed array\n pool (e.g., due to insufficient memory), the function returns `null`.\n\n Examples\n --------\n > var arr1 = [ 0.5, 0.5, 0.5 ];\n > var arr2 = typedarraypool( arr1, 'float32' )\n [ 0.5, 0.5, 0.5 ]\n\n\ntypedarraypool.malloc( [dtype] )\n Returns an uninitialized typed array from a typed array memory pool.\n\n This method shares the same security vulnerabilities mentioned above.\n\n Parameters\n ----------\n dtype: string (optional)\n Data type. Default: 'float64'.\n\n Returns\n -------\n out: TypedArray|null\n If the function is unable to allocate a typed array from the typed array\n pool (e.g., due to insufficient memory), the function returns `null`.\n\n Examples\n --------\n > var arr = typedarraypool.malloc()\n \n > arr = typedarraypool.malloc( 'float32' )\n \n\n\ntypedarraypool.malloc( length[, dtype] )\n Returns a typed array having a specified length from a typed array memory\n pool.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n dtype: string (optional)\n Data type. Default: 'float64'.\n\n Returns\n -------\n out: TypedArray|null\n If the function is unable to allocate a typed array from the typed array\n pool (e.g., due to insufficient memory), the function returns `null`.\n\n Examples\n --------\n > var arr = typedarraypool.malloc( 5 )\n \n > arr = typedarraypool.malloc( 5, 'int32' )\n \n\n\ntypedarraypool.malloc( typedarray[, dtype] )\n Creates a pooled typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n dtype: string (optional)\n Data type. Default: 'float64'.\n\n Returns\n -------\n out: TypedArray|null\n If the function is unable to allocate a typed array from the typed array\n pool (e.g., due to insufficient memory), the function returns `null`.\n\n Examples\n --------\n > var arr1 = typedarraypool.malloc( [ 0.5, 0.5, 0.5 ] );\n > var arr2 = typedarraypool.malloc( arr1, 'float32' )\n [ 0.5, 0.5, 0.5 ]\n\n\ntypedarraypool.malloc( obj[, dtype] )\n Creates a pooled typed array from an array-like object.\n\n Parameters\n ----------\n obj: Object\n Array-like object from which to generate a typed array.\n\n dtype: string (optional)\n Data type. Default: 'float64'.\n\n Returns\n -------\n out: TypedArray|null\n If the function is unable to allocate a typed array from the typed array\n pool (e.g., due to insufficient memory), the function returns `null`.\n\n Examples\n --------\n > var arr1 = [ 0.5, 0.5, 0.5 ];\n > var arr2 = typedarraypool.malloc( arr1, 'float32' )\n [ 0.5, 0.5, 0.5 ]\n\n\ntypedarraypool.calloc( [dtype] )\n Returns a zero-initialized typed array from a typed array memory pool.\n\n Parameters\n ----------\n dtype: string (optional)\n Data type. Default: 'float64'.\n\n Returns\n -------\n out: TypedArray|null\n If the function is unable to allocate a typed array from the typed array\n pool (e.g., due to insufficient memory), the function returns `null`.\n\n Examples\n --------\n > var arr = typedarraypool.calloc()\n []\n > arr = typedarraypool.calloc( 'float32' )\n []\n\n\ntypedarraypool.calloc( length[, dtype] )\n Returns a zero-initialized typed array having a specified length from a\n typed array memory pool.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n dtype: string (optional)\n Data type. Default: 'float64'.\n\n Returns\n -------\n out: TypedArray|null\n If the function is unable to allocate a typed array from the typed array\n pool (e.g., due to insufficient memory), the function returns `null`.\n\n Examples\n --------\n > var arr = typedarraypool.calloc( 5 )\n [ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n > arr = typedarraypool.calloc( 5, 'int32' )\n [ 0, 0, 0, 0, 0 ]\n\n\ntypedarraypool.free( buf )\n Frees a typed array or typed array buffer for use in a future allocation.\n\n Parameters\n ----------\n buf: TypedArray|ArrayBuffer\n Typed array or typed array buffer to free.\n\n Examples\n --------\n > var arr = typedarraypool( 5 )\n \n > typedarraypool.free( arr )\n\n\ntypedarraypool.clear()\n Clears the typed array pool allowing garbage collection of previously\n allocated (and currently free) array buffers.\n\n Examples\n --------\n > var arr = typedarraypool( 5 )\n \n > typedarraypool.free( arr );\n > typedarraypool.clear()\n\n\ntypedarraypool.highWaterMark\n Read-only property returning the pool's high water mark.\n\n Once a high water mark is reached, typed array allocation fails.\n\n Examples\n --------\n > typedarraypool.highWaterMark\n\n\ntypedarraypool.nbytes\n Read-only property returning the total number of allocated bytes.\n\n The returned value is the total accumulated value. Hence, anytime a pool\n must allocate a new array buffer (i.e., more memory), the pool increments\n this value.\n\n The only time this value is decremented is when a pool is cleared.\n\n This behavior means that, while allocated buffers which are never freed may,\n in fact, be garbage collected, they continue to count against the high water\n mark limit.\n\n Accordingly, you should *always* free allocated buffers in order to prevent\n the pool from believing that non-freed buffers are continually in use.\n\n Examples\n --------\n > var arr = typedarraypool( 5 )\n \n > typedarraypool.nbytes\n\n\ntypedarraypool.factory( [options] )\n Creates a typed array pool.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.highWaterMark: integer (optional)\n Maximum total memory (in bytes) which can be allocated.\n\n Returns\n -------\n fcn: Function\n Function for creating typed arrays from a typed array memory pool.\n\n Examples\n --------\n > var pool = typedarraypool.factory();\n > var arr1 = pool( 3, 'float64' )\n \n\n See Also\n --------\n typedarray\n", "typemax": "\ntypemax( dtype )\n Returns the maximum value of a specified numeric type.\n\n The following numeric types are supported:\n\n - float64: double-precision floating-point numbers\n - float32: single-precision floating-point numbers\n - float16: half-precision floating-point numbers\n - int32: 32-bit two's complement signed integers\n - uint32: 32-bit unsigned integers\n - int16: 16-bit two's complement signed integers\n - uint16: 16-bit unsigned integers\n - int8: 8-bit two's complement signed integers\n - uint8: 8-bit unsigned integers\n - uint8c: 8-bit unsigned integers clamped to 0-255\n\n Parameters\n ----------\n dtype: string\n Numeric type.\n\n Returns\n -------\n out: number\n Maximum value.\n\n Examples\n --------\n > var m = typemax( 'int8' )\n 127\n > m = typemax( 'uint32' )\n 4294967295\n\n See Also\n --------\n realmax, typemin\n", "typemin": "\ntypemin( dtype )\n Returns the minimum value of a specified numeric type.\n\n The following numeric types are supported:\n\n - float64: double-precision floating-point numbers\n - float32: single-precision floating-point numbers\n - float16: half-precision floating-point numbers\n - int32: 32-bit two's complement signed integers\n - uint32: 32-bit unsigned integers\n - int16: 16-bit two's complement signed integers\n - uint16: 16-bit unsigned integers\n - int8: 8-bit two's complement signed integers\n - uint8: 8-bit unsigned integers\n - uint8c: 8-bit unsigned integers clamped to 0-255\n\n Parameters\n ----------\n dtype: string\n Numeric type.\n\n Returns\n -------\n out: number\n Minimum value.\n\n Examples\n --------\n > var m = typemin( 'int8' )\n -128\n > m = typemin( 'uint32' )\n 0\n\n See Also\n --------\n realmin, typemax\n", - "typeOf": "\ntypeOf( value )\n Determines a value's type.\n\n The following values are not natively provided in older JavaScript engines:\n\n - Map\n - Set\n - WeakMap\n - WeakSet\n - Symbol\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n out: string\n The value's type.\n\n Examples\n --------\n // Built-ins:\n > var t = typeOf( 'a' )\n 'string'\n > t = typeOf( 5 )\n 'number'\n > t = typeOf( NaN )\n 'number'\n > t = typeOf( true )\n 'boolean'\n > t = typeOf( false )\n 'boolean'\n > t = typeOf( null )\n 'null'\n > t = typeOf( undefined )\n 'undefined'\n > t = typeOf( [] )\n 'array'\n > t = typeOf( {} )\n 'object'\n > t = typeOf( function noop() {} )\n 'function'\n > t = typeOf( new Symbol( 'beep' ) )\n 'symbol'\n > t = typeOf( /.+/ )\n 'regexp'\n > t = typeOf( new String( 'beep' ) )\n 'string'\n > t = typeOf( new Number( 5 ) )\n 'number'\n > t = typeOf( new Boolean( false ) )\n 'boolean'\n > t = typeOf( new Array() )\n 'array'\n > t = typeOf( new Object() )\n 'object'\n > t = typeOf( new Int8Array( 10 ) )\n 'int8array'\n > t = typeOf( new Uint8Array( 10 ) )\n 'uint8array'\n > t = typeOf( new Uint8ClampedArray( 10 ) )\n 'uint8clampedarray'\n > t = typeOf( new Int16Array( 10 ) )\n 'int16array'\n > t = typeOf( new Uint16Array( 10 ) )\n 'uint16array'\n > t = typeOf( new Int32Array( 10 ) )\n 'int32array'\n > t = typeOf( new Uint32Array( 10 ) )\n 'uint32array'\n > t = typeOf( new Float32Array( 10 ) )\n 'float32array'\n > t = typeOf( new Float64Array( 10 ) )\n 'float64array'\n > t = typeOf( new ArrayBuffer( 10 ) )\n 'arraybuffer'\n > t = typeOf( new Date() )\n 'date'\n > t = typeOf( new RegExp( '.+ )') )\n 'regexp'\n > t = typeOf( new Map() )\n 'map'\n > t = typeOf( new Set() )\n 'set'\n > t = typeOf( new WeakMap() )\n 'weakmap'\n > t = typeOf( new WeakSet() )\n 'weakset'\n > t = typeOf( new Error( 'beep' ) )\n 'error'\n > t = typeOf( new TypeError( 'beep' ) )\n 'typeerror'\n > t = typeOf( new SyntaxError( 'beep' ) )\n 'syntaxerror'\n > t = typeOf( new ReferenceError( 'beep' ) )\n 'referenceerror'\n > t = typeOf( new URIError( 'beep' ) )\n 'urierror'\n > t = typeOf( new RangeError( 'beep' ) )\n 'rangeerror'\n > t = typeOf( new EvalError( 'beep' ) )\n 'evalerror'\n > t = typeOf( Math )\n 'math'\n > t = typeOf( JSON )\n 'json'\n\n // Arguments object:\n > function beep() { return arguments; };\n > t = typeOf( beep() )\n 'arguments'\n\n // Node.js Buffer object:\n > t = typeOf( new Buffer( 10 ) )\n 'buffer'\n\n // Custom constructor:\n > function Person() { return this };\n > t = typeOf( new Person() )\n 'person'\n\n // Anonymous constructor:\n > var Foo = function () { return this; };\n > t = typeOf new Foo() )\n ''\n\n See Also\n --------\n constructorName, nativeClass\n", + "typeOf": "\ntypeOf( value )\n Determines a value's type.\n\n The following values are not natively provided in older JavaScript engines:\n\n - Map\n - Set\n - WeakMap\n - WeakSet\n - Symbol\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n out: string\n The value's type.\n\n Examples\n --------\n // Built-ins:\n > var t = typeOf( 'a' )\n 'string'\n > t = typeOf( 5 )\n 'number'\n > t = typeOf( NaN )\n 'number'\n > t = typeOf( true )\n 'boolean'\n > t = typeOf( false )\n 'boolean'\n > t = typeOf( null )\n 'null'\n > t = typeOf( undefined )\n 'undefined'\n > t = typeOf( [] )\n 'array'\n > t = typeOf( {} )\n 'object'\n > t = typeOf( function noop() {} )\n 'function'\n > t = typeOf( Symbol( 'beep' ) )\n 'symbol'\n > t = typeOf( /.+/ )\n 'regexp'\n > t = typeOf( new String( 'beep' ) )\n 'string'\n > t = typeOf( new Number( 5 ) )\n 'number'\n > t = typeOf( new Boolean( false ) )\n 'boolean'\n > t = typeOf( new Array() )\n 'array'\n > t = typeOf( new Object() )\n 'object'\n > t = typeOf( new Int8Array( 10 ) )\n 'int8array'\n > t = typeOf( new Uint8Array( 10 ) )\n 'uint8array'\n > t = typeOf( new Uint8ClampedArray( 10 ) )\n 'uint8clampedarray'\n > t = typeOf( new Int16Array( 10 ) )\n 'int16array'\n > t = typeOf( new Uint16Array( 10 ) )\n 'uint16array'\n > t = typeOf( new Int32Array( 10 ) )\n 'int32array'\n > t = typeOf( new Uint32Array( 10 ) )\n 'uint32array'\n > t = typeOf( new Float32Array( 10 ) )\n 'float32array'\n > t = typeOf( new Float64Array( 10 ) )\n 'float64array'\n > t = typeOf( new ArrayBuffer( 10 ) )\n 'arraybuffer'\n > t = typeOf( new Date() )\n 'date'\n > t = typeOf( new RegExp( '.+' ) )\n 'regexp'\n > t = typeOf( new Map() )\n 'map'\n > t = typeOf( new Set() )\n 'set'\n > t = typeOf( new WeakMap() )\n 'weakmap'\n > t = typeOf( new WeakSet() )\n 'weakset'\n > t = typeOf( new Error( 'beep' ) )\n 'error'\n > t = typeOf( new TypeError( 'beep' ) )\n 'typeerror'\n > t = typeOf( new SyntaxError( 'beep' ) )\n 'syntaxerror'\n > t = typeOf( new ReferenceError( 'beep' ) )\n 'referenceerror'\n > t = typeOf( new URIError( 'beep' ) )\n 'urierror'\n > t = typeOf( new RangeError( 'beep' ) )\n 'rangeerror'\n > t = typeOf( new EvalError( 'beep' ) )\n 'evalerror'\n > t = typeOf( Math )\n 'math'\n > t = typeOf( JSON )\n 'json'\n\n // Arguments object:\n > function beep() { return arguments; };\n > t = typeOf( beep() )\n 'arguments'\n\n // Node.js Buffer object:\n > t = typeOf( new Buffer( 10 ) )\n 'buffer'\n\n // Custom constructor:\n > function Person() { return this };\n > t = typeOf( new Person() )\n 'person'\n\n // Anonymous constructor:\n > var Foo = function () { return this; };\n > t = typeOf( new Foo() )\n '' || 'foo'\n\n See Also\n --------\n constructorName, nativeClass\n", "UINT8_MAX": "\nUINT8_MAX\n Maximum unsigned 8-bit integer.\n\n The maximum unsigned 8-bit integer is given by `2^8 - 1`.\n\n Examples\n --------\n > UINT8_MAX\n 255\n\n See Also\n --------\n INT8_MAX\n", "UINT8_NUM_BYTES": "\nUINT8_NUM_BYTES\n Size (in bytes) of an 8-bit unsigned integer.\n\n Examples\n --------\n > UINT8_NUM_BYTES\n 1\n\n See Also\n --------\n INT8_NUM_BYTES, UINT16_NUM_BYTES, UINT32_NUM_BYTES\n", - "Uint8Array": "\nUint8Array()\n A typed array constructor which returns a typed array representing an array\n of 8-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8Array()\n \n\n\nUint8Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint8Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Uint8Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint8Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint8Array.BYTES_PER_ELEMENT\n 1\n\n\nUint8Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint8Array.name\n Uint8Array\n\n\nUint8Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.buffer\n \n\n\nUint8Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.byteLength\n 5\n\n\nUint8Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint8Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8ClampedArray\n", - "Uint8ClampedArray": "\nUint8ClampedArray()\n A typed array constructor which returns a typed array representing an array\n of 8-bit unsigned integers in the platform byte order clamped to 0-255.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray()\n \n\n\nUint8ClampedArray( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint8ClampedArray( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint8ClampedArray( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8ClampedArray( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint8ClampedArray( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8ClampedArray( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Uint8ClampedArray( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint8ClampedArray.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint8ClampedArray.BYTES_PER_ELEMENT\n 1\n\n\nUint8ClampedArray.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint8ClampedArray.name\n Uint8ClampedArray\n\n\nUint8ClampedArray.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.buffer\n \n\n\nUint8ClampedArray.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.byteLength\n 5\n\n\nUint8ClampedArray.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.byteOffset\n 0\n\n\nUint8ClampedArray.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array\n", + "Uint8Array": "\nUint8Array()\n A typed array constructor which returns a typed array representing an array\n of 8-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8Array()\n \n\n\nUint8Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint8Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Uint8Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint8Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint8Array.BYTES_PER_ELEMENT\n 1\n\n\nUint8Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint8Array.name\n 'Uint8Array'\n\n\nUint8Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.buffer\n \n\n\nUint8Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.byteLength\n 5\n\n\nUint8Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint8Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8ClampedArray\n", + "Uint8ClampedArray": "\nUint8ClampedArray()\n A typed array constructor which returns a typed array representing an array\n of 8-bit unsigned integers in the platform byte order clamped to 0-255.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray()\n \n\n\nUint8ClampedArray( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint8ClampedArray( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint8ClampedArray( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8ClampedArray( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint8ClampedArray( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8ClampedArray( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Uint8ClampedArray( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint8ClampedArray.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint8ClampedArray.BYTES_PER_ELEMENT\n 1\n\n\nUint8ClampedArray.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint8ClampedArray.name\n 'Uint8ClampedArray'\n\n\nUint8ClampedArray.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.buffer\n \n\n\nUint8ClampedArray.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.byteLength\n 5\n\n\nUint8ClampedArray.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.byteOffset\n 0\n\n\nUint8ClampedArray.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array\n", "UINT16_MAX": "\nUINT16_MAX\n Maximum unsigned 16-bit integer.\n\n The maximum unsigned 16-bit integer is given by `2^16 - 1`.\n\n Examples\n --------\n > UINT16_MAX\n 65535\n\n See Also\n --------\n INT16_MAX\n", "UINT16_NUM_BYTES": "\nUINT16_NUM_BYTES\n Size (in bytes) of a 16-bit unsigned integer.\n\n Examples\n --------\n > UINT16_NUM_BYTES\n 2\n\n See Also\n --------\n INT16_NUM_BYTES, UINT32_NUM_BYTES, UINT8_NUM_BYTES\n", - "Uint16Array": "\nUint16Array()\n A typed array constructor which returns a typed array representing an array\n of 16-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint16Array()\n \n\n\nUint16Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint16Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint16Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint16Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 8 );\n > var arr = new Uint16Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint16Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint16Array.BYTES_PER_ELEMENT\n 2\n\n\nUint16Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint16Array.name\n Uint16Array\n\n\nUint16Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.buffer\n \n\n\nUint16Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.byteLength\n 10\n\n\nUint16Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint16Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Uint16Array": "\nUint16Array()\n A typed array constructor which returns a typed array representing an array\n of 16-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint16Array()\n \n\n\nUint16Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint16Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint16Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint16Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 8 );\n > var arr = new Uint16Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint16Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint16Array.BYTES_PER_ELEMENT\n 2\n\n\nUint16Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint16Array.name\n 'Uint16Array'\n\n\nUint16Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.buffer\n \n\n\nUint16Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.byteLength\n 10\n\n\nUint16Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint16Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "UINT32_MAX": "\nUINT32_MAX\n Maximum unsigned 32-bit integer.\n\n The maximum unsigned 32-bit integer is given by `2^32 - 1`.\n\n Examples\n --------\n > UINT32_MAX\n 4294967295\n\n See Also\n --------\n INT32_MAX\n", "UINT32_NUM_BYTES": "\nUINT32_NUM_BYTES\n Size (in bytes) of a 32-bit unsigned integer.\n\n Examples\n --------\n > UINT32_NUM_BYTES\n 4\n\n See Also\n --------\n INT32_NUM_BYTES, UINT16_NUM_BYTES, UINT8_NUM_BYTES\n", - "Uint32Array": "\nUint32Array()\n A typed array constructor which returns a typed array representing an array\n of 32-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint32Array()\n \n\n\nUint32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Uint32Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint32Array.BYTES_PER_ELEMENT\n 4\n\n\nUint32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint32Array.name\n Uint32Array\n\n\nUint32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.buffer\n \n\n\nUint32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.byteLength\n 20\n\n\nUint32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint8Array, Uint8ClampedArray\n", + "Uint32Array": "\nUint32Array()\n A typed array constructor which returns a typed array representing an array\n of 32-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint32Array()\n \n\n\nUint32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Uint32Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint32Array.BYTES_PER_ELEMENT\n 4\n\n\nUint32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint32Array.name\n 'Uint32Array'\n\n\nUint32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.buffer\n \n\n\nUint32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.byteLength\n 20\n\n\nUint32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint8Array, Uint8ClampedArray\n", "umask": "\numask( [mask,] [options] )\n Returns the current process mask, if not provided a mask; otherwise, sets\n the process mask and returns the previous mask.\n\n A mask is a set of bits, each of which restricts how its corresponding\n permission is set for newly created files.\n\n On POSIX platforms, each file has a set of attributes that control who can\n read, write, or execute that file. Upon creating a file, file permissions\n must be set to an initial setting. The process mask restricts those\n permission settings.\n\n If the mask contains a bit set to \"1\", the corresponding initial file\n permission is disabled. If the mask contains a bit set to \"0\", the\n corresponding permission is left to be determined by the requesting process\n and the system.\n\n The process mask is thus a filter that removes permissions as a file is\n created; i.e., each bit set to a \"1\" removes its corresponding permission.\n\n In octal representation, a mask is a four digit number, e.g., 0077,\n comprised as follows:\n\n - 0: special permissions (setuid, setgid, sticky bit)\n - 0: (u)ser/owner permissions\n - 7: (g)roup permissions\n - 7: (o)thers/non-group permissions\n\n Octal codes correspond to the following permissions:\n\n - 0: read, write, execute\n - 1: read, write\n - 2: read, execute\n - 3: read\n - 4: write, execute\n - 5: write\n - 6: execute\n - 7: no permissions\n\n If provided fewer than four digits, the mask is left-padded with zeros.\n\n Note, however, that only the last three digits (i.e., the file permissions\n digits) of the mask are actually used when the mask is applied.\n\n Permissions can be represented using the following symbolic form:\n\n u=rwx,g=rwx,o=rwx\n\n where\n\n - u: user permissions\n - g: group permissions\n - o: other/non-group permissions\n - r: read\n - w: write\n - x: execute\n\n When setting permissions using symbolic notation, the function accepts a\n mask expression of the form:\n\n []\n\n where \"classes\" may be a combination of\n\n - u: user\n - g: group\n - o: other/non-group\n - a: all\n\n \"symbols\" may be a combination of\n\n - r: read\n - w: write\n - x: execute\n - X: special execute\n - s: setuid/gid on execution\n - t: sticky\n\n and \"operator\" may be one of\n\n - `+`: enable\n - `-`: disable\n - `=`: enable specified and disable unspecified permissions\n\n For example,\n\n - `u-w`: disable user write permissions\n - `u+w`: enable user write permissions\n - `u=w`: enable user write permissions and disable user read and execute\n\n To specify multiple changes, provide a comma-separated list of mask\n expressions. For example,\n\n u+rwx,g-x,o=r\n\n would enable user read, write, and execute permissions, disable group\n execute permissions, enable other read permissions, and disable other\n write and execute permissions.\n\n The `a` class indicates \"all\", which is the same as specifying \"ugo\". This\n is the default class if a class is omitted when specifying permissions. For\n example, `+x` is equivalent to `a+x` which is equivalent to `ugo+x` which\n is equivalent to `u+x,g+x,o+x` and enables execution for all classes.\n\n Parameters\n ----------\n mask: integer|string (optional)\n Mask or mask expression. If the mask is a string, the mask is assumed to\n be in symbolic notation.\n\n options: Object (optional)\n Options.\n\n options.symbolic: boolean (optional)\n Boolean indicating whether to return the mask using symbolic notation.\n\n Returns\n -------\n mask: integer|string\n Process mask. If provided a mask, the returned value is the previous\n mask; otherwise, the returned value is the current process mask.\n\n Examples\n --------\n > var mask = umask()\n \n > mask = umask( { 'symbolic': true } )\n \n\n", "uncapitalize": "\nuncapitalize( str )\n Lowercases the first character of a `string`.\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n out: string\n Uncapitalized string.\n\n Examples\n --------\n > var out = uncapitalize( 'Beep' )\n 'beep'\n > out = uncapitalize( 'bOOp' )\n 'bOOp'\n\n See Also\n --------\n capitalize, lowercase\n", "uncapitalizeKeys": "\nuncapitalizeKeys( obj )\n Converts the first letter of each object key to lowercase.\n\n The function only transforms own properties. Hence, the function does not\n transform inherited properties.\n\n The function shallow copies key values.\n\n Parameters\n ----------\n obj: Object\n Source object.\n\n Returns\n -------\n out: Object\n New object.\n\n Examples\n --------\n > var obj = { 'AA': 1, 'BB': 2 };\n > var out = uncapitalizeKeys( obj )\n { 'aA': 1, 'bB': 2 }\n\n See Also\n --------\n capitalizeKeys, lowercaseKeys\n", From 271ec41cf331a2ecad965c3cfaddd880eed1217a Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 11 Sep 2018 03:21:10 -0700 Subject: [PATCH 0271/1062] Fix example --- .../@stdlib/utils/inherited-property-descriptor/README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptor/README.md b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/README.md index a00e5064c2ea..51a80a5e12ad 100644 --- a/lib/node_modules/@stdlib/utils/inherited-property-descriptor/README.md +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptor/README.md @@ -58,7 +58,7 @@ function Bar() { return this; } -Bar.prototype.beep = 'beepboop'; +Bar.prototype.beep = 'boop'; function Foo() { Bar.call( this ); @@ -66,11 +66,10 @@ function Foo() { } inherit( Foo, Bar ); -Foo.prototype.beep = 'boop'; var f = new Foo(); -var desc = inheritedPropertyDescriptor( f, 'beep', 2 ); -// returns {'configurable':true,'enumerable':true,'writable':true,'value':'beepboop'} +var desc = inheritedPropertyDescriptor( f, 'beep', 1 ); +// returns null ``` From 683a7586f10bb96f88e5c68d0078ef18e3dfa106 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 11 Sep 2018 12:22:43 -0700 Subject: [PATCH 0272/1062] Rename packages and fix examples --- lib/node_modules/@stdlib/utils/lib/index.js | 12 ++++++------ .../README.md | 16 ++++++++++------ .../benchmark/benchmark.js | 4 ++-- .../docs/repl.txt | 0 .../examples/index.js | 4 ++-- .../lib/index.js | 8 ++++---- .../lib/main.js | 8 ++++---- .../package.json | 2 +- .../test/test.js | 8 ++++---- .../README.md | 16 ++++++++++------ .../benchmark/benchmark.js | 4 ++-- .../docs/repl.txt | 0 .../examples/index.js | 4 ++-- .../lib/index.js | 8 ++++---- .../lib/main.js | 8 ++++---- .../package.json | 2 +- .../test/test.js | 12 ++++++------ 17 files changed, 62 insertions(+), 54 deletions(-) rename lib/node_modules/@stdlib/utils/{nonenumerable-keys-in => nonenumerable-property-names-in}/README.md (84%) rename lib/node_modules/@stdlib/utils/{nonenumerable-keys-in => nonenumerable-property-names-in}/benchmark/benchmark.js (92%) rename lib/node_modules/@stdlib/utils/{nonenumerable-keys-in => nonenumerable-property-names-in}/docs/repl.txt (100%) rename lib/node_modules/@stdlib/utils/{nonenumerable-keys-in => nonenumerable-property-names-in}/examples/index.js (89%) rename lib/node_modules/@stdlib/utils/{nonenumerable-keys-in => nonenumerable-property-names-in}/lib/index.js (82%) rename lib/node_modules/@stdlib/utils/{nonenumerable-keys-in => nonenumerable-property-names-in}/lib/main.js (91%) rename lib/node_modules/@stdlib/utils/{nonenumerable-keys-in => nonenumerable-property-names-in}/package.json (95%) rename lib/node_modules/@stdlib/utils/{nonenumerable-keys-in => nonenumerable-property-names-in}/test/test.js (87%) rename lib/node_modules/@stdlib/utils/{nonenumerable-keys => nonenumerable-property-names}/README.md (84%) rename lib/node_modules/@stdlib/utils/{nonenumerable-keys => nonenumerable-property-names}/benchmark/benchmark.js (92%) rename lib/node_modules/@stdlib/utils/{nonenumerable-keys => nonenumerable-property-names}/docs/repl.txt (100%) rename lib/node_modules/@stdlib/utils/{nonenumerable-keys => nonenumerable-property-names}/examples/index.js (89%) rename lib/node_modules/@stdlib/utils/{nonenumerable-keys => nonenumerable-property-names}/lib/index.js (82%) rename lib/node_modules/@stdlib/utils/{nonenumerable-keys => nonenumerable-property-names}/lib/main.js (88%) rename lib/node_modules/@stdlib/utils/{nonenumerable-keys => nonenumerable-property-names}/package.json (95%) rename lib/node_modules/@stdlib/utils/{nonenumerable-keys => nonenumerable-property-names}/test/test.js (88%) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 680ee5c49d52..5bc8dd2801e0 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1045,22 +1045,22 @@ setReadOnly( utils, 'noneByRightAsync', require( '@stdlib/utils/none-by-right-as setReadOnly( utils, 'nonEnumerableInheritedKeys', require( '@stdlib/utils/nonenumerable-inherited-keys' ) ); /** -* @name nonEnumerableKeys +* @name nonEnumerablePropertyNames * @memberof utils * @readonly * @type {Function} -* @see {@link module:@stdlib/utils/nonenumerable-keys} +* @see {@link module:@stdlib/utils/nonenumerable-property-names} */ -setReadOnly( utils, 'nonEnumerableKeys', require( '@stdlib/utils/nonenumerable-keys' ) ); +setReadOnly( utils, 'nonEnumerablePropertyNames', require( '@stdlib/utils/nonenumerable-property-names' ) ); /** -* @name nonEnumerableKeysIn +* @name nonEnumerablePropertyNamesIn * @memberof utils * @readonly * @type {Function} -* @see {@link module:@stdlib/utils/nonenumerable-keys-in} +* @see {@link module:@stdlib/utils/nonenumerable-property-names-in} */ -setReadOnly( utils, 'nonEnumerableKeysIn', require( '@stdlib/utils/nonenumerable-keys-in' ) ); +setReadOnly( utils, 'nonEnumerablePropertyNamesIn', require( '@stdlib/utils/nonenumerable-property-names-in' ) ); /** * @name noop diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/README.md b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/README.md similarity index 84% rename from lib/node_modules/@stdlib/utils/nonenumerable-keys-in/README.md rename to lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/README.md index 9a761f41b91d..2e7e8b7c100f 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/README.md +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/README.md @@ -18,7 +18,7 @@ limitations under the License. --> -# nonEnumerableKeysIn +# nonEnumerablePropertyNamesIn > Return an array of an object's own and inherited non-enumerable property names. @@ -26,11 +26,13 @@ limitations under the License. ## Usage + + ```javascript -var nonEnumerableKeysIn = require( '@stdlib/utils/nonenumerable-keys-in' ); +var nonEnumerablePropertyNamesIn = require( '@stdlib/utils/nonenumerable-property-names-in' ); ``` -#### nonEnumerableKeysIn( obj ) +#### nonEnumerablePropertyNamesIn( obj ) Returns an `array` of an object's own and inherited non-enumerable property names. @@ -48,7 +50,7 @@ defineProperty( obj, 'c', { 'value': 'd' }); -var keys = nonEnumerableKeysIn( obj ); +var keys = nonEnumerablePropertyNamesIn( obj ); // e.g., returns [ 'c', ... ] ``` @@ -70,11 +72,13 @@ var keys = nonEnumerableKeysIn( obj ); ## Examples + + ```javascript var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerableKeysIn = require( '@stdlib/utils/nonenumerable-keys-in' ); +var nonEnumerablePropertyNamesIn = require( '@stdlib/utils/nonenumerable-property-names-in' ); function Foo() { this.beep = 'boop'; @@ -99,7 +103,7 @@ defineProperty( Foo.prototype, 'bip', { }); var obj = new Foo(); -var keys = nonEnumerableKeysIn( obj ); +var keys = nonEnumerablePropertyNamesIn( obj ); console.log( keys ); // e.g., => [ 'baz', 'bip', ... ] diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/benchmark/benchmark.js similarity index 92% rename from lib/node_modules/@stdlib/utils/nonenumerable-keys-in/benchmark/benchmark.js rename to lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/benchmark/benchmark.js index e86dfc13484b..b191e0aac450 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/benchmark/benchmark.js @@ -25,7 +25,7 @@ var isArray = require( '@stdlib/assert/is-array' ); var randu = require( '@stdlib/random/base/randu' ); var defineProperty = require( '@stdlib/utils/define-property' ); var pkg = require( './../package.json' ).name; -var nonEnumerableKeysIn = require( './../lib' ); +var nonEnumerablePropertyNamesIn = require( './../lib' ); // eslint-disable-line id-length // MAIN // @@ -58,7 +58,7 @@ bench( pkg, function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { obj.f = randu(); - out = nonEnumerableKeysIn( obj ); + out = nonEnumerablePropertyNamesIn( obj ); if ( !isArray( out ) ) { b.fail( 'should return an array' ); } diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/docs/repl.txt b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/docs/repl.txt similarity index 100% rename from lib/node_modules/@stdlib/utils/nonenumerable-keys-in/docs/repl.txt rename to lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/docs/repl.txt diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/examples/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/examples/index.js similarity index 89% rename from lib/node_modules/@stdlib/utils/nonenumerable-keys-in/examples/index.js rename to lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/examples/index.js index 6742c1695fcf..0d68c2fb6499 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/examples/index.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/examples/index.js @@ -19,7 +19,7 @@ 'use strict'; var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerableKeysIn = require( './../lib' ); +var nonEnumerablePropertyNamesIn = require( './../lib' ); // eslint-disable-line id-length function Foo() { this.beep = 'boop'; @@ -44,7 +44,7 @@ defineProperty( Foo.prototype, 'bip', { }); var obj = new Foo(); -var keys = nonEnumerableKeysIn( obj ); +var keys = nonEnumerablePropertyNamesIn( obj ); console.log( keys ); // e.g., => [ 'baz', 'bip', ... ] diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/index.js similarity index 82% rename from lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/index.js rename to lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/index.js index f4d4088400dc..1ef51728e7a1 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/index.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/index.js @@ -21,22 +21,22 @@ /** * Return an array of an object's own and inherited non-enumerable property names. * -* @module @stdlib/utils/nonenumerable-keys-in +* @module @stdlib/utils/nonenumerable-property-names-in * * @example * var defineProperty = require( '@stdlib/utils/define-property' ); -* var nonEnumerableKeysIn = require( '@stdlib/utils/nonenumerable-keys-in' ); +* var nonEnumerablePropertyNamesIn = require( '@stdlib/utils/nonenumerable-property-names-in' ); * * var obj = {}; * * defineProperty( obj, 'beep', { * 'configurable': false, -* 'enumerable': true, +* 'enumerable': false, * 'writable': false, * 'value': 'boop' * }); * -* var keys = nonEnumerableKeysIn( obj ); +* var keys = nonEnumerablePropertyNamesIn( obj ); * // e.g., returns [ 'beep', ... ] */ diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/main.js similarity index 91% rename from lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/main.js rename to lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/main.js index da0581355f3b..6451ed168cd2 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/lib/main.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/main.js @@ -61,15 +61,15 @@ function contains( arr, v ) { * * defineProperty( obj, 'beep', { * 'configurable': false, -* 'enumerable': true, +* 'enumerable': false, * 'writable': false, * 'value': 'boop' * }); * -* var keys = nonEnumerableKeysIn( obj ); +* var keys = nonEnumerablePropertyNamesIn( obj ); * // e.g., returns [ 'beep', ... ] */ -function nonEnumerableKeysIn( value ) { +function nonEnumerablePropertyNamesIn( value ) { // eslint-disable-line id-length var names; var obj; var tmp; @@ -102,4 +102,4 @@ function nonEnumerableKeysIn( value ) { // EXPORTS // -module.exports = nonEnumerableKeysIn; +module.exports = nonEnumerablePropertyNamesIn; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/package.json b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/package.json similarity index 95% rename from lib/node_modules/@stdlib/utils/nonenumerable-keys-in/package.json rename to lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/package.json index 19d0744e0910..98045c2c7a6d 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/package.json +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/package.json @@ -1,5 +1,5 @@ { - "name": "@stdlib/utils/nonenumerable-keys-in", + "name": "@stdlib/utils/nonenumerable-property-names-in", "version": "0.0.0", "description": "Return an array of an object's own and inherited non-enumerable property names.", "license": "Apache-2.0", diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/test/test.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/test/test.js similarity index 87% rename from lib/node_modules/@stdlib/utils/nonenumerable-keys-in/test/test.js rename to lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/test/test.js index 1ff4ee67fb1c..51adf6b10e16 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys-in/test/test.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/test/test.js @@ -23,14 +23,14 @@ var tape = require( 'tape' ); var indexOf = require( '@stdlib/utils/index-of' ); var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerableKeysIn = require( './../lib' ); +var nonEnumerablePropertyNamesIn = require( './../lib' ); // eslint-disable-line id-length // TESTS // tape( 'main export is a function', function test( t ) { t.ok( true, __filename ); - t.strictEqual( typeof nonEnumerableKeysIn, 'function', 'main export is a function' ); + t.strictEqual( typeof nonEnumerablePropertyNamesIn, 'function', 'main export is a function' ); t.end(); }); @@ -66,7 +66,7 @@ tape( 'the function returns an array of an object\'s own and inherited non-enume obj = new Foo(); expected = [ 'd', 'baz' ]; - actual = nonEnumerableKeysIn( obj ); + actual = nonEnumerablePropertyNamesIn( obj ); for ( i = 0; i < expected.length; i++ ) { idx = indexOf( actual, expected[ i ] ); @@ -88,7 +88,7 @@ tape( 'the function returns an empty array if provided `null` or `undefined`', f expected = []; for ( i = 0; i < values.length; i++ ) { - actual = nonEnumerableKeysIn( values[ i ] ); + actual = nonEnumerablePropertyNamesIn( values[ i ] ); t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); } t.end(); diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys/README.md b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/README.md similarity index 84% rename from lib/node_modules/@stdlib/utils/nonenumerable-keys/README.md rename to lib/node_modules/@stdlib/utils/nonenumerable-property-names/README.md index 5e75e0ef8c35..d1b053d3622f 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys/README.md +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/README.md @@ -18,7 +18,7 @@ limitations under the License. --> -# nonEnumerableKeys +# nonEnumerablePropertyNames > Return an array of an object's own non-enumerable property names. @@ -26,11 +26,13 @@ limitations under the License. ## Usage + + ```javascript -var nonEnumerableKeys = require( '@stdlib/utils/nonenumerable-keys' ); +var nonEnumerablePropertyNames = require( '@stdlib/utils/nonenumerable-property-names' ); ``` -#### nonEnumerableKeys( obj ) +#### nonEnumerablePropertyNames( obj ) Returns an `array` of an object's own non-enumerable property names. @@ -48,7 +50,7 @@ defineProperty( obj, 'c', { 'value': 'd' }); -var keys = nonEnumerableKeys( obj ); +var keys = nonEnumerablePropertyNames( obj ); // returns [ 'c' ] ``` @@ -70,11 +72,13 @@ var keys = nonEnumerableKeys( obj ); ## Examples + + ```javascript var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerableKeys = require( '@stdlib/utils/nonenumerable-keys' ); +var nonEnumerablePropertyNames = require( '@stdlib/utils/nonenumerable-property-names' ); function Foo() { this.beep = 'boop'; @@ -99,7 +103,7 @@ defineProperty( Foo.prototype, 'bip', { }); var obj = new Foo(); -var keys = nonEnumerableKeys( obj ); +var keys = nonEnumerablePropertyNames( obj ); console.log( keys ); // => [ 'baz' ] diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/benchmark/benchmark.js similarity index 92% rename from lib/node_modules/@stdlib/utils/nonenumerable-keys/benchmark/benchmark.js rename to lib/node_modules/@stdlib/utils/nonenumerable-property-names/benchmark/benchmark.js index ce7a621acee9..aaffece1cf32 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/benchmark/benchmark.js @@ -25,7 +25,7 @@ var isArray = require( '@stdlib/assert/is-array' ); var randu = require( '@stdlib/random/base/randu' ); var defineProperty = require( '@stdlib/utils/define-property' ); var pkg = require( './../package.json' ).name; -var nonEnumerableKeys = require( './../lib' ); +var nonEnumerablePropertyNames = require( './../lib' ); // eslint-disable-line id-length // MAIN // @@ -58,7 +58,7 @@ bench( pkg, function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { obj.f = randu(); - out = nonEnumerableKeys( obj ); + out = nonEnumerablePropertyNames( obj ); if ( !isArray( out ) ) { b.fail( 'should return an array' ); } diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys/docs/repl.txt b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/docs/repl.txt similarity index 100% rename from lib/node_modules/@stdlib/utils/nonenumerable-keys/docs/repl.txt rename to lib/node_modules/@stdlib/utils/nonenumerable-property-names/docs/repl.txt diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys/examples/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/examples/index.js similarity index 89% rename from lib/node_modules/@stdlib/utils/nonenumerable-keys/examples/index.js rename to lib/node_modules/@stdlib/utils/nonenumerable-property-names/examples/index.js index 96aa13c2a56b..2f9fec2e86ed 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys/examples/index.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/examples/index.js @@ -19,7 +19,7 @@ 'use strict'; var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerableKeys = require( './../lib' ); +var nonEnumerablePropertyNames = require( './../lib' ); // eslint-disable-line id-length function Foo() { this.beep = 'boop'; @@ -44,7 +44,7 @@ defineProperty( Foo.prototype, 'bip', { }); var obj = new Foo(); -var keys = nonEnumerableKeys( obj ); +var keys = nonEnumerablePropertyNames( obj ); console.log( keys ); // => [ 'baz' ] diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/index.js similarity index 82% rename from lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/index.js rename to lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/index.js index bda373fabe3f..8e5b6ada4a40 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/index.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/index.js @@ -21,22 +21,22 @@ /** * Return an array of an object's own non-enumerable property names. * -* @module @stdlib/utils/nonenumerable-keys +* @module @stdlib/utils/nonenumerable-property-names * * @example * var defineProperty = require( '@stdlib/utils/define-property' ); -* var nonEnumerableKeys = require( '@stdlib/utils/nonenumerable-keys' ); +* var nonEnumerablePropertyNames = require( '@stdlib/utils/nonenumerable-property-names' ); * * var obj = {}; * * defineProperty( obj, 'beep', { * 'configurable': false, -* 'enumerable': true, +* 'enumerable': false, * 'writable': false, * 'value': 'boop' * }); * -* var keys = nonEnumerableKeys( obj ); +* var keys = nonEnumerablePropertyNames( obj ); * // returns [ 'beep' ] */ diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/main.js similarity index 88% rename from lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/main.js rename to lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/main.js index af9e37df0b75..5c4e90af21a2 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys/lib/main.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/lib/main.js @@ -39,15 +39,15 @@ var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property * * defineProperty( obj, 'beep', { * 'configurable': false, -* 'enumerable': true, +* 'enumerable': false, * 'writable': false, * 'value': 'boop' * }); * -* var keys = nonEnumerableKeys( obj ); +* var keys = nonEnumerablePropertyNames( obj ); * // returns [ 'beep' ] */ -function nonEnumerableKeys( value ) { +function nonEnumerablePropertyNames( value ) { // eslint-disable-line id-length var names; var i; var n; @@ -71,4 +71,4 @@ function nonEnumerableKeys( value ) { // EXPORTS // -module.exports = nonEnumerableKeys; +module.exports = nonEnumerablePropertyNames; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys/package.json b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/package.json similarity index 95% rename from lib/node_modules/@stdlib/utils/nonenumerable-keys/package.json rename to lib/node_modules/@stdlib/utils/nonenumerable-property-names/package.json index f164f006ed3c..3d0d683f8cfb 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys/package.json +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/package.json @@ -1,5 +1,5 @@ { - "name": "@stdlib/utils/nonenumerable-keys", + "name": "@stdlib/utils/nonenumerable-property-names", "version": "0.0.0", "description": "Return an array of an object's own non-enumerable property names.", "license": "Apache-2.0", diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-keys/test/test.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/test/test.js similarity index 88% rename from lib/node_modules/@stdlib/utils/nonenumerable-keys/test/test.js rename to lib/node_modules/@stdlib/utils/nonenumerable-property-names/test/test.js index b29251c7fdaf..17d3e3fea195 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-keys/test/test.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/test/test.js @@ -23,14 +23,14 @@ var tape = require( 'tape' ); var indexOf = require( '@stdlib/utils/index-of' ); var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerableKeys = require( './../lib' ); +var nonEnumerablePropertyNames = require( './../lib' ); // eslint-disable-line id-length // TESTS // tape( 'main export is a function', function test( t ) { t.ok( true, __filename ); - t.strictEqual( typeof nonEnumerableKeys, 'function', 'main export is a function' ); + t.strictEqual( typeof nonEnumerablePropertyNames, 'function', 'main export is a function' ); t.end(); }); @@ -78,7 +78,7 @@ tape( 'the function returns an array of an object\'s own non-enumerable property obj = new Foo(); expected = [ 'd', 'f', 'h' ]; - actual = nonEnumerableKeys( obj ); + actual = nonEnumerablePropertyNames( obj ); t.strictEqual( actual.length, 3, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { @@ -93,7 +93,7 @@ tape( 'the function returns an array of an object\'s own non-enumerable property var actual; expected = [ 'length' ]; - actual = nonEnumerableKeys( 'foo' ); + actual = nonEnumerablePropertyNames( 'foo' ); t.deepEqual( actual, expected, 'returns expected results' ); t.end(); @@ -112,7 +112,7 @@ tape( 'the function returns an empty array if provided `null` or `undefined`', f expected = []; for ( i = 0; i < values.length; i++ ) { - actual = nonEnumerableKeys( values[ i ] ); + actual = nonEnumerablePropertyNames( values[ i ] ); t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); } t.end(); @@ -133,7 +133,7 @@ tape( 'the function returns an empty array if provided a non-string primitive', expected = []; for ( i = 0; i < values.length; i++ ) { - actual = nonEnumerableKeys( values[ i ] ); + actual = nonEnumerablePropertyNames( values[ i ] ); t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); } t.end(); From 8293b27f26fe3ca88688bfea37944746594e79a4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 11 Sep 2018 12:27:16 -0700 Subject: [PATCH 0273/1062] Rename package --- lib/node_modules/@stdlib/utils/lib/index.js | 6 +++--- .../README.md | 14 +++++++------- .../benchmark/benchmark.js | 4 ++-- .../docs/repl.txt | 0 .../examples/index.js | 4 ++-- .../lib/index.js | 6 +++--- .../lib/main.js | 6 +++--- .../package.json | 2 +- .../test/test.js | 14 +++++++------- 9 files changed, 28 insertions(+), 28 deletions(-) rename lib/node_modules/@stdlib/utils/{nonenumerable-inherited-keys => nonenumerable-inherited-property-names}/README.md (86%) rename lib/node_modules/@stdlib/utils/{nonenumerable-inherited-keys => nonenumerable-inherited-property-names}/benchmark/benchmark.js (91%) rename lib/node_modules/@stdlib/utils/{nonenumerable-inherited-keys => nonenumerable-inherited-property-names}/docs/repl.txt (100%) rename lib/node_modules/@stdlib/utils/{nonenumerable-inherited-keys => nonenumerable-inherited-property-names}/examples/index.js (88%) rename lib/node_modules/@stdlib/utils/{nonenumerable-inherited-keys => nonenumerable-inherited-property-names}/lib/index.js (78%) rename lib/node_modules/@stdlib/utils/{nonenumerable-inherited-keys => nonenumerable-inherited-property-names}/lib/main.js (92%) rename lib/node_modules/@stdlib/utils/{nonenumerable-inherited-keys => nonenumerable-inherited-property-names}/package.json (95%) rename lib/node_modules/@stdlib/utils/{nonenumerable-inherited-keys => nonenumerable-inherited-property-names}/test/test.js (91%) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 5bc8dd2801e0..4a9aff9eae62 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1036,13 +1036,13 @@ setReadOnly( utils, 'noneByRight', require( '@stdlib/utils/none-by-right' ) ); setReadOnly( utils, 'noneByRightAsync', require( '@stdlib/utils/none-by-right-async' ) ); /** -* @name nonEnumerableInheritedKeys +* @name nonEnumerableInheritedPropertyNames * @memberof utils * @readonly * @type {Function} -* @see {@link module:@stdlib/utils/nonenumerable-inherited-keys} +* @see {@link module:@stdlib/utils/nonenumerable-inherited-property-names} */ -setReadOnly( utils, 'nonEnumerableInheritedKeys', require( '@stdlib/utils/nonenumerable-inherited-keys' ) ); +setReadOnly( utils, 'nonEnumerableInheritedPropertyNames', require( '@stdlib/utils/nonenumerable-inherited-property-names' ) ); /** * @name nonEnumerablePropertyNames diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/README.md b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/README.md similarity index 86% rename from lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/README.md rename to lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/README.md index ce44af351749..5774474ef25b 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/README.md +++ b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/README.md @@ -18,7 +18,7 @@ limitations under the License. --> -# nonEnumerableInheritedKeys +# nonEnumerableInheritedPropertyNames > Return an array of an object's inherited non-enumerable property names. @@ -29,10 +29,10 @@ limitations under the License. ```javascript -var nonEnumerableInheritedKeys = require( '@stdlib/utils/nonenumerable-inherited-keys' ); +var nonEnumerableInheritedPropertyNames = require( '@stdlib/utils/nonenumerable-inherited-property-names' ); ``` -#### nonEnumerableInheritedKeys( obj\[, level] ) +#### nonEnumerableInheritedPropertyNames( obj\[, level] ) Returns an `array` of an object's inherited non-enumerable property names. @@ -52,7 +52,7 @@ defineProperty( Foo.prototype, 'beep', { }); var f = new Foo(); -var keys = nonEnumerableInheritedKeys( f ); +var keys = nonEnumerableInheritedPropertyNames( f ); // e.g., returns [ 'beep', ... ] ``` @@ -89,7 +89,7 @@ defineProperty( Foo.prototype, 'beep', { }); var f = new Foo(); -var keys = nonEnumerableInheritedKeys( f, 1 ); +var keys = nonEnumerableInheritedPropertyNames( f, 1 ); // e.g., returns [ 'beep', ... ] ``` @@ -117,7 +117,7 @@ var keys = nonEnumerableInheritedKeys( f, 1 ); ```javascript var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerableInheritedKeys = require( '@stdlib/utils/nonenumerable-inherited-keys' ); +var nonEnumerableInheritedPropertyNames = require( '@stdlib/utils/nonenumerable-inherited-property-names' ); function Foo() { this.beep = 'boop'; @@ -142,7 +142,7 @@ defineProperty( Foo.prototype, 'bip', { }); var obj = new Foo(); -var keys = nonEnumerableInheritedKeys( obj ); +var keys = nonEnumerableInheritedPropertyNames( obj ); console.log( keys ); // e.g., => [ 'bip', ... ] diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/benchmark/benchmark.js similarity index 91% rename from lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/benchmark/benchmark.js rename to lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/benchmark/benchmark.js index ad9c672079b6..bfa21a542203 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/benchmark/benchmark.js @@ -25,7 +25,7 @@ var isArray = require( '@stdlib/assert/is-array' ); var randu = require( '@stdlib/random/base/randu' ); var defineProperty = require( '@stdlib/utils/define-property' ); var pkg = require( './../package.json' ).name; -var nonEnumerableInheritedKeys = require( './../lib' ); // eslint-disable-line id-length +var nonEnumerableInheritedPropertyNames = require( './../lib' ); // eslint-disable-line id-length // MAIN // @@ -58,7 +58,7 @@ bench( pkg, function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { obj.f = randu(); - out = nonEnumerableInheritedKeys( obj ); + out = nonEnumerableInheritedPropertyNames( obj ); if ( !isArray( out ) ) { b.fail( 'should return an array' ); } diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/docs/repl.txt b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/docs/repl.txt similarity index 100% rename from lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/docs/repl.txt rename to lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/docs/repl.txt diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/examples/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/examples/index.js similarity index 88% rename from lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/examples/index.js rename to lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/examples/index.js index a60e9f1e1b73..576034a0ab83 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/examples/index.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/examples/index.js @@ -19,7 +19,7 @@ 'use strict'; var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerableInheritedKeys = require( './../lib' ); // eslint-disable-line id-length +var nonEnumerableInheritedPropertyNames = require( './../lib' ); // eslint-disable-line id-length function Foo() { this.beep = 'boop'; @@ -44,7 +44,7 @@ defineProperty( Foo.prototype, 'bip', { }); var obj = new Foo(); -var keys = nonEnumerableInheritedKeys( obj ); +var keys = nonEnumerableInheritedPropertyNames( obj ); console.log( keys ); // e.g., => [ 'bip', ... ] diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/lib/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/lib/index.js similarity index 78% rename from lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/lib/index.js rename to lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/lib/index.js index 8242ab051a93..f35d8f60258b 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/lib/index.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/lib/index.js @@ -21,12 +21,12 @@ /** * Return an array of an object's inherited non-enumerable property names. * -* @module @stdlib/utils/nonenumerable-inherited-keys +* @module @stdlib/utils/nonenumerable-inherited-property-names * * @example -* var nonEnumerableInheritedKeys = require( '@stdlib/utils/nonenumerable-inherited-keys' ); +* var nonEnumerableInheritedPropertyNames = require( '@stdlib/utils/nonenumerable-inherited-property-names' ); * -* var keys = nonEnumerableInheritedKeys( [] ); +* var keys = nonEnumerableInheritedPropertyNames( [] ); */ // MODULES // diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/lib/main.js similarity index 92% rename from lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/lib/main.js rename to lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/lib/main.js index 2455527a9a54..0a42a74b8fa3 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/lib/main.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/lib/main.js @@ -59,9 +59,9 @@ function contains( arr, v ) { * @returns {Array} a list of inherited non-enumerable property names * * @example -* var keys = nonEnumerableInheritedKeys( {} ); +* var keys = nonEnumerableInheritedPropertyNames( {} ); */ -function nonEnumerableInheritedKeys( value, level ) { // eslint-disable-line id-length +function nonEnumerableInheritedPropertyNames( value, level ) { // eslint-disable-line id-length var names; var obj; var tmp; @@ -106,4 +106,4 @@ function nonEnumerableInheritedKeys( value, level ) { // eslint-disable-line id- // EXPORTS // -module.exports = nonEnumerableInheritedKeys; +module.exports = nonEnumerableInheritedPropertyNames; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/package.json b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/package.json similarity index 95% rename from lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/package.json rename to lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/package.json index 6930e346ba99..4a9c18375d76 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/package.json +++ b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/package.json @@ -1,5 +1,5 @@ { - "name": "@stdlib/utils/nonenumerable-inherited-keys", + "name": "@stdlib/utils/nonenumerable-inherited-property-names", "version": "0.0.0", "description": "Return an array of an object's inherited non-enumerable property names.", "license": "Apache-2.0", diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/test/test.js b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/test/test.js similarity index 91% rename from lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/test/test.js rename to lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/test/test.js index 99c085584802..ffd55c49375f 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-keys/test/test.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/test/test.js @@ -24,14 +24,14 @@ var tape = require( 'tape' ); var indexOf = require( '@stdlib/utils/index-of' ); var defineProperty = require( '@stdlib/utils/define-property' ); var inherit = require( '@stdlib/utils/inherit' ); -var nonEnumerableInheritedKeys = require( './../lib' ); // eslint-disable-line id-length +var nonEnumerableInheritedPropertyNames = require( './../lib' ); // eslint-disable-line id-length // TESTS // tape( 'main export is a function', function test( t ) { t.ok( true, __filename ); - t.strictEqual( typeof nonEnumerableInheritedKeys, 'function', 'main export is a function' ); + t.strictEqual( typeof nonEnumerableInheritedPropertyNames, 'function', 'main export is a function' ); t.end(); }); @@ -60,7 +60,7 @@ tape( 'the function throws an error if not provided a positive integer for the i function badValue( value ) { return function badValue() { - nonEnumerableInheritedKeys( {}, value ); + nonEnumerableInheritedPropertyNames( {}, value ); }; } }); @@ -97,7 +97,7 @@ tape( 'the function returns an array of an object\'s inherited non-enumerable pr obj = new Foo(); expected = [ 'baz' ]; - actual = nonEnumerableInheritedKeys( obj ); + actual = nonEnumerableInheritedPropertyNames( obj ); t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { @@ -165,7 +165,7 @@ tape( 'the function returns an array of an object\'s inherited non-enumerable pr obj = new Foo(); expected = [ 'baz', 'bap' ]; - actual = nonEnumerableInheritedKeys( obj ); + actual = nonEnumerableInheritedPropertyNames( obj ); t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { @@ -232,7 +232,7 @@ tape( 'the function supports limiting the inheritance level', function test( t ) obj = new Foo(); expected = [ 'baz' ]; - actual = nonEnumerableInheritedKeys( obj, 1 ); + actual = nonEnumerableInheritedPropertyNames( obj, 1 ); t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { @@ -257,7 +257,7 @@ tape( 'the function returns an empty array if provided `null` or `undefined`', f expected = []; for ( i = 0; i < values.length; i++ ) { - actual = nonEnumerableInheritedKeys( values[ i ] ); + actual = nonEnumerableInheritedPropertyNames( values[ i ] ); t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); } t.end(); From 1c37787e170c931f6166366fc53d091a56506894 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 11 Sep 2018 12:28:18 -0700 Subject: [PATCH 0274/1062] Fix require paths and aliases --- .../@stdlib/namespace/lib/namespace/n.js | 30 +++++++++---------- .../@stdlib/namespace/lib/namespace/p.js | 4 +-- .../@stdlib/repl/code-blocks/lib/db.js | 6 ++-- lib/node_modules/@stdlib/repl/help/lib/db.js | 10 +++---- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js index dc2592a029a8..fa93f0db24d2 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js @@ -265,40 +265,40 @@ ns.push({ }); ns.push({ - 'alias': 'nonEnumerableInheritedKeys', - 'path': '@stdlib/utils/nonenumerable-inherited-keys', - 'value': require( '@stdlib/utils/nonenumerable-inherited-keys' ), + 'alias': 'nonEnumerableInheritedPropertyNames', + 'path': '@stdlib/utils/nonenumerable-inherited-property-names', + 'value': require( '@stdlib/utils/nonenumerable-inherited-property-names' ), 'type': 'Function', 'related': [ '@stdlib/utils/keys', - '@stdlib/utils/nonenumerable-keys', - '@stdlib/utils/nonenumerable-keys-in', + '@stdlib/utils/nonenumerable-property-names', + '@stdlib/utils/nonenumerable-property-names-in', '@stdlib/utils/property-names' ] }); ns.push({ - 'alias': 'nonEnumerableKeys', - 'path': '@stdlib/utils/nonenumerable-keys', - 'value': require( '@stdlib/utils/nonenumerable-keys' ), + 'alias': 'nonEnumerablePropertyNames', + 'path': '@stdlib/utils/nonenumerable-property-names', + 'value': require( '@stdlib/utils/nonenumerable-property-names' ), 'type': 'Function', 'related': [ '@stdlib/utils/keys', - '@stdlib/utils/nonenumerable-inherited-keys', - '@stdlib/utils/nonenumerable-keys-in', + '@stdlib/utils/nonenumerable-inherited-property-names', + '@stdlib/utils/nonenumerable-property-names-in', '@stdlib/utils/property-names' ] }); ns.push({ - 'alias': 'nonEnumerableKeysIn', - 'path': '@stdlib/utils/nonenumerable-keys-in', - 'value': require( '@stdlib/utils/nonenumerable-keys-in' ), + 'alias': 'nonEnumerablePropertyNamesIn', + 'path': '@stdlib/utils/nonenumerable-property-names-in', + 'value': require( '@stdlib/utils/nonenumerable-property-names-in' ), 'type': 'Function', 'related': [ '@stdlib/utils/keys-in', - '@stdlib/utils/nonenumerable-inherited-keys', - '@stdlib/utils/nonenumerable-keys', + '@stdlib/utils/nonenumerable-inherited-property-names', + '@stdlib/utils/nonenumerable-property-names', '@stdlib/utils/property-names-in' ] }); diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js index 2f6d67b02f3c..537079edf827 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js @@ -339,7 +339,7 @@ ns.push({ 'type': 'Function', 'related': [ '@stdlib/utils/keys', - '@stdlib/utils/nonenumerable-keys', + '@stdlib/utils/nonenumerable-property-names', '@stdlib/utils/property-names-in', '@stdlib/utils/property-symbols' ] @@ -352,7 +352,7 @@ ns.push({ 'type': 'Function', 'related': [ '@stdlib/utils/keys', - '@stdlib/utils/nonenumerable-keys-in', + '@stdlib/utils/nonenumerable-property-names-in', '@stdlib/utils/property-names', '@stdlib/utils/property-symbols-in' ] diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index dbd7c8101cc4..51e0cddb54d2 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1371,9 +1371,9 @@ var db = { "noneByAsync": "\n// Basic usage:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'series': true };\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, opts, predicate, done )\n", "noneByRight": "function positive( v ) { return ( v > 0 ); };\narr = [ -1, -2, -3, -4 ];\nbool = noneByRight( arr, positive )\n", "noneByRightAsync": "\n// Basic usage:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'limit': 2 };\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'series': true };\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, opts, predicate, done )\n", - "nonEnumerableInheritedKeys": "keys = nonEnumerableInheritedKeys( {} )\n", - "nonEnumerableKeys": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerableKeys( obj )\n", - "nonEnumerableKeysIn": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerableKeysIn( obj )\n", + "nonEnumerableInheritedPropertyNames": "keys = nonEnumerableInheritedPropertyNames( {} )\n", + "nonEnumerablePropertyNames": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerablePropertyNames( obj )\n", + "nonEnumerablePropertyNamesIn": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerablePropertyNamesIn( obj )\n", "noop": "noop();\n", "now": "ts = now()\n", "NUM_CPUS": "NUM_CPUS\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 36bbf7731fa9..2fb5c6531110 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1372,9 +1372,9 @@ var db = { "noneByAsync": "\nnoneByAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByAsync, everyByAsync, forEachAsync, noneBy, noneByRightAsync, someByAsync\n", "noneByRight": "\nnoneByRight( collection, predicate[, thisArg ] )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n The predicate function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n The function immediately returns upon encountering a truthy return value.\n\n If provided an empty collection, the function returns `true`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n predicate: Function\n The test function.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n bool: boolean\n The function returns `true` if the predicate function returns a falsy\n value for all elements; otherwise, the function returns `false`.\n\n Examples\n --------\n > function positive( v ) { return ( v > 0 ); };\n > var arr = [ -1, -2, -3, -4 ];\n > var bool = noneByRight( arr, positive )\n true\n\n See Also\n --------\n anyByRight, everyByRight, forEachRight, none, noneBy, someByRight\n", "noneByRightAsync": "\nnoneByRightAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByRightAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function, iterating from right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByRightAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByRightAsync, everyByRightAsync, forEachRightAsync, noneByAsync, noneByRight, someByRightAsync\n", - "nonEnumerableInheritedKeys": "\nnonEnumerableInheritedKeys( value[, level] )\n Returns an array of an object's inherited non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited non-enumerable property names.\n\n Examples\n --------\n > var keys = nonEnumerableInheritedKeys( {} )\n\n See Also\n --------\n objectKeys, nonEnumerableKeys, nonEnumerableKeysIn, propertyNames\n", - "nonEnumerableKeys": "\nnonEnumerableKeys( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerableKeys( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableInheritedKeys, nonEnumerableKeysIn, propertyNames\n", - "nonEnumerableKeysIn": "\nnonEnumerableKeysIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerableKeysIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, nonEnumerableInheritedKeys, nonEnumerableKeys, propertyNamesIn\n", + "nonEnumerableInheritedPropertyNames": "\nnonEnumerableInheritedPropertyNames( value[, level] )\n Returns an array of an object's inherited non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited non-enumerable property names.\n\n Examples\n --------\n > var keys = nonEnumerableInheritedPropertyNames( {} )\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, propertyNames\n", + "nonEnumerablePropertyNames": "\nnonEnumerablePropertyNames( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNames( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableInheritedPropertyNames, nonEnumerablePropertyNamesIn, propertyNames\n", + "nonEnumerablePropertyNamesIn": "\nnonEnumerablePropertyNamesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNamesIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, nonEnumerableInheritedPropertyNames, nonEnumerablePropertyNames, propertyNamesIn\n", "noop": "\nnoop()\n A function which does nothing.\n\n Examples\n --------\n > noop();\n\n", "now": "\nnow()\n Returns the time in seconds since the epoch.\n\n The Unix epoch is 00:00:00 UTC on 1 January 1970.\n\n Returns\n -------\n out: integer\n Time in seconds since the epoch.\n\n Examples\n --------\n > var ts = now()\n \n\n", "NUM_CPUS": "\nNUM_CPUS\n Number of CPUs.\n\n In browser environments, the number of CPUs is determined by querying the\n hardware concurrency API.\n\n In Node.js environments, the number of CPUs is determined via the `os`\n module.\n\n Examples\n --------\n > NUM_CPUS\n \n\n", @@ -1419,8 +1419,8 @@ var db = { "propertyDescriptorIn": "\npropertyDescriptorIn( value, property )\n Returns a property descriptor for an object's own or inherited property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string|symbol\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptorIn( obj, 'a' )\n {...}\n\n See Also\n --------\n hasProp, defineProperty, propertyDescriptor, propertyDescriptorsIn\n", "propertyDescriptors": "\npropertyDescriptors( value )\n Returns an object's own property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n desc: Object\n Property descriptors.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptors( obj )\n { 'a': {...} }\n\n See Also\n --------\n defineProperty, defineProperties, propertyDescriptor, propertyDescriptorsIn, propertyNames, propertySymbols\n", "propertyDescriptorsIn": "\npropertyDescriptorsIn( value )\n Returns an object's own and inherited property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n desc: Object\n An object's own and inherited property descriptors.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var desc = propertyDescriptorsIn( obj )\n { 'beep': {...}, 'foo': {...}, ... }\n\n See Also\n --------\n defineProperties, propertyDescriptorIn, propertyDescriptors, propertyNamesIn, propertySymbolsIn\n", - "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeys, propertyNamesIn, propertySymbols\n", - "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableKeysIn, propertyNames, propertySymbolsIn\n", + "propertyNames": "\npropertyNames( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own enumerable and non-enumerable property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNames( obj )\n [ 'beep' ]\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNames, propertyNamesIn, propertySymbols\n", + "propertyNamesIn": "\npropertyNamesIn( value )\n Returns an array of an object's own and inherited enumerable and non-\n enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited enumerable and non-enumerable\n property names.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var keys = propertyNamesIn( obj )\n e.g., [ 'beep', 'foo', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNamesIn, propertyNames, propertySymbolsIn\n", "propertySymbols": "\npropertySymbols( value )\n Returns an array of an object's own symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own symbol properties.\n\n Examples\n --------\n > var s = propertySymbols( {} )\n\n See Also\n --------\n propertyNames, propertySymbolsIn\n", "propertySymbolsIn": "\npropertySymbolsIn( value )\n Returns an array of an object's own and inherited symbol properties.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited symbol properties.\n\n Examples\n --------\n > var s = propertySymbolsIn( [] )\n\n See Also\n --------\n propertyNamesIn, propertySymbols\n", "Proxy": "\nProxy( target, handlers )\n Returns a proxy object implementing custom behavior for specified object\n operations.\n\n The following \"traps\" are supported:\n\n - getPrototypeOf( target )\n Trap for `Object.getPrototypeOf()`. Can be used to intercept the\n `instanceof` operator. The method must return an object or `null`.\n\n - setPrototypeOf( target, prototype )\n Trap for `Object.setPrototypeOf()`. The method must return a boolean\n indicating if prototype successfully set.\n\n - isExtensible( target )\n Trap for `Object.isExtensible()`. The method must return a boolean.\n\n - preventExtensions( target )\n Trap for `Object.preventExtensions()`. The method must return a boolean.\n\n - getOwnPropertyDescriptor( target, property )\n Trap for `Object.getOwnPropertyDescriptor()`. The method must return an\n object or `undefined`.\n\n - defineProperty( target, property, descriptor )\n Trap for `Object.defineProperty()`. The method must return a boolean\n indicating whether the operation succeeded.\n\n - has( target, property )\n Trap for the `in` operator. The method must return a boolean.\n\n - get( target, property, receiver )\n Trap for retrieving property values. The method can return any value.\n\n - set( target, property, value, receiver )\n Trap for setting property values. The method should return a boolean\n indicating whether assignment succeeded.\n\n - deleteProperty( target, property )\n Trap for the `delete` operator. The method must return a boolean\n indicating whether operation succeeded.\n\n - ownKeys( target )\n Trap for `Object.keys`, `Object.getOwnPropertyNames()`, and\n `Object.getOwnPropertySymbols()`. The method must return an enumerable\n object.\n\n - apply( target, thisArg, argumentsList )\n Trap for a function call. The method can return any value.\n\n - construct( target, argumentsList, newTarget )\n Trap for the `new` operator. The method must return an object.\n\n All traps are optional. If a trap is not defined, the default behavior is to\n forward the operation to the target.\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Proxy object.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = new Proxy( {}, h );\n > p.a = 3.14;\n > p.a\n 6.28\n\n\nProxy.revocable( target, handlers )\n Returns a revocable proxy object\n\n Parameters\n ----------\n target: Object\n Object which the proxy virtualizes.\n\n handlers: Object\n Object whose properties are functions which define the behavior of the\n proxy when performing operations.\n\n Returns\n -------\n p: Object\n Revocable proxy object.\n\n p.proxy: Object\n Proxy object.\n\n p.revoke: Function\n Invalidates a proxy, rendering a proxy object unusable.\n\n Examples\n --------\n > function get( obj, prop ) { return obj[ prop ] * 2.0 };\n > var h = { 'get': get };\n > var p = Proxy.revocable( {}, h );\n > p.proxy.a = 3.14;\n > p.proxy.a\n 6.28\n > p.revoke();\n\n", From b4c2e1d40f4c68df53ee3e6b585bc80daa94e975 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 11 Sep 2018 14:16:00 -0700 Subject: [PATCH 0275/1062] Add utility to return an object's own nonenumerable symbol properties --- .../nonenumerable-property-symbols/README.md | 127 ++++++++++ .../benchmark/benchmark.js | 72 ++++++ .../docs/repl.txt | 36 +++ .../examples/index.js | 54 +++++ .../lib/index.js | 39 +++ .../lib/main.js | 62 +++++ .../package.json | 68 ++++++ .../test/test.js | 227 ++++++++++++++++++ 8 files changed, 685 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/README.md create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/package.json create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/test/test.js diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/README.md b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/README.md new file mode 100644 index 000000000000..c83112a948dd --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/README.md @@ -0,0 +1,127 @@ + + +# nonEnumerablePropertySymbols + +> Return an array of an object's own non-enumerable symbol properties. + +
+ +## Usage + + + +```javascript +var nonEnumerablePropertySymbols = require( '@stdlib/utils/nonenumerable-property-symbols' ); +``` + +#### nonEnumerablePropertySymbols( obj ) + +Returns an `array` of an object's own non-enumerable symbol properties. + +```javascript +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = {}; + +if ( hasSymbolSupport() ) { + defineProperty( obj, Symbol( 'a' ), { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); +} + +var symbols = nonEnumerablePropertySymbols( obj ); +``` + +
+ + + +
+ +## Notes + +- Property order is not guaranteed, as `object` property enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. practice, however, most engines use insertion order to sort an `object`'s properties, thus allowing for deterministic extraction. + +
+ + + +
+ +## Examples + + + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var nonEnumerablePropertySymbols = require( '@stdlib/utils/nonenumerable-property-symbols' ); + +var hasSymbols = hasSymbolSupport(); +var symbols; +var obj; + +function Foo() { + if ( hasSymbols ) { + defineProperty( this, Symbol( 'baz' ), { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + } + return this; +} + +if ( hasSymbols ) { + defineProperty( Foo.prototype, Symbol( 'bip' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' + }); +} + +obj = new Foo(); +symbols = nonEnumerablePropertySymbols( obj ); + +console.log( symbols ); +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/benchmark/benchmark.js new file mode 100644 index 000000000000..faaaa78384b1 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var nonEnumerablePropertySymbols = require( './../lib' ); // eslint-disable-line id-length + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = nonEnumerablePropertySymbols( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/docs/repl.txt b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/docs/repl.txt new file mode 100644 index 000000000000..5930831b5290 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/docs/repl.txt @@ -0,0 +1,36 @@ + +{{alias}}( value ) + Returns an array of an object's own non-enumerable symbol properties. + + Property order is not guaranteed, as object property enumeration is not + specified according to the ECMAScript specification. In practice, however, + most engines use insertion order to sort an object's properties, thus + allowing for deterministic extraction. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + Returns + ------- + symbols: Array + List of an object's own non-enumerable symbol properties. + + Examples + -------- + > var obj = {}; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = false; + > desc.writable = true; + > desc.value = 'boop'; + > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep'; + > {{alias:@stdlib/utils/define-property}}( obj, sym, desc ); + > var symbols = {{alias}}( obj ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/examples/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/examples/index.js new file mode 100644 index 000000000000..f1ca0f0299b9 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/examples/index.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var nonEnumerablePropertySymbols = require( './../lib' ); // eslint-disable-line id-length + +var hasSymbols = hasSymbolSupport(); +var symbols; +var obj; + +function Foo() { + if ( hasSymbols ) { + defineProperty( this, Symbol( 'baz' ), { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + } + return this; +} + +if ( hasSymbols ) { + defineProperty( Foo.prototype, Symbol( 'bip' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' + }); +} + +obj = new Foo(); +symbols = nonEnumerablePropertySymbols( obj ); + +console.log( symbols ); diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/lib/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/lib/index.js new file mode 100644 index 000000000000..57fa871ea8be --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/lib/index.js @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's own non-enumerable symbol properties. +* +* @module @stdlib/utils/nonenumerable-property-symbols +* +* @example +* var nonEnumerablePropertySymbols = require( '@stdlib/utils/nonenumerable-property-symbols' ); +* +* var symbols = nonEnumerablePropertySymbols( {} ); +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/lib/main.js new file mode 100644 index 000000000000..221f10b44370 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/lib/main.js @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); +var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property' ); + + +// MAIN // + +/** +* Returns an array of an object's own non-enumerable symbol properties. +* +* @param {*} value - input object +* @returns {Array} a list of own non-enumerable symbol property +* +* @example +* var symbols = nonEnumerablePropertySymbols( {} ); +*/ +function nonEnumerablePropertySymbols( value ) { // eslint-disable-line id-length + var symbols; + var i; + var n; + + if ( value === null || value === void 0 ) { + return []; + } + symbols = getOwnPropertySymbols( Object( value ) ); + n = 0; + for ( i = 0; i < symbols.length; i++ ) { + if ( isNonEnumerableProperty( value, symbols[ i ] ) ) { + symbols[ n ] = symbols[ i ]; + n += 1; + } + } + symbols.length = n; + + return symbols; +} + + +// EXPORTS // + +module.exports = nonEnumerablePropertySymbols; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/package.json b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/package.json new file mode 100644 index 000000000000..f033facf8c86 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/package.json @@ -0,0 +1,68 @@ +{ + "name": "@stdlib/utils/nonenumerable-property-symbols", + "version": "0.0.0", + "description": "Return an array of an object's own non-enumerable symbol properties.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "symbols", + "sym", + "enumerable", + "non-enumerable", + "own", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/test/test.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/test/test.js new file mode 100644 index 000000000000..bb61cb6e23f1 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/test/test.js @@ -0,0 +1,227 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var nonEnumerablePropertySymbols = require( './../lib' ); // eslint-disable-line id-length + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof nonEnumerablePropertySymbols, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns an array of an object\'s own non-enumerable symbol properties', function test( t ) { + var hasSymbols; + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + hasSymbols = hasSymbolSupport(); + + function Foo() { + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'boop'; + this[ syms[ 1 ] ] = { + 'b': 'c' + }; + defineProperty( this, syms[ 2 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + defineProperty( this, syms[ 3 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'g' + }); + defineProperty( this, syms[ 4 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'i' + }); + } + return this; + } + + if ( hasSymbols ) { + syms = [ + Symbol( 'beep' ), + Symbol( 'a' ), + Symbol( 'd' ), + Symbol( 'f' ), + Symbol( 'h' ), + Symbol( 'foo' ), + Symbol( 'baz' ) + ]; + + Foo.prototype[ syms[ 5 ] ] = [ 'bar' ]; + defineProperty( Foo.prototype, syms[ 6 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ syms[ 2 ], syms[ 3 ], syms[ 4 ] ]; + } else { + syms = []; + expected = []; + } + actual = nonEnumerablePropertySymbols( obj ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s own non-enumerable symbol properties (mock)', function test( t ) { + var nonEnumerablePropertySymbols; // eslint-disable-line id-length + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + nonEnumerablePropertySymbols = proxyquire( './../lib/main.js', { + '@stdlib/utils/property-symbols': propertySymbols + }); + + syms = [ + 'beep', + 'a', + 'd', + 'f', + 'h', + 'foo', + 'baz' + ]; + + function Foo() { + this[ syms[ 0 ] ] = 'boop'; + this[ syms[ 1 ] ] = { + 'b': 'c' + }; + defineProperty( this, syms[ 2 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + defineProperty( this, syms[ 3 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'g' + }); + defineProperty( this, syms[ 4 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'i' + }); + return this; + } + + Foo.prototype[ syms[ 5 ] ] = [ 'bar' ]; + defineProperty( Foo.prototype, syms[ 6 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ syms[ 2 ], syms[ 3 ], syms[ 4 ] ]; + actual = nonEnumerablePropertySymbols( obj ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i].toString() ); + } + t.end(); + + function propertySymbols() { + return syms.slice(); + } +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = nonEnumerablePropertySymbols( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided a non-string primitive', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + 3.14, + NaN, + true, + false + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = nonEnumerablePropertySymbols( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From d718357896249be2edaefd4423dc717735a55ead Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 11 Sep 2018 14:18:23 -0700 Subject: [PATCH 0276/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 4a9aff9eae62..5e628115e83a 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1062,6 +1062,15 @@ setReadOnly( utils, 'nonEnumerablePropertyNames', require( '@stdlib/utils/nonenu */ setReadOnly( utils, 'nonEnumerablePropertyNamesIn', require( '@stdlib/utils/nonenumerable-property-names-in' ) ); +/** +* @name nonEnumerablePropertySymbols +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/nonenumerable-property-symbols} +*/ +setReadOnly( utils, 'nonEnumerablePropertySymbols', require( '@stdlib/utils/nonenumerable-property-symbols' ) ); + /** * @name noop * @memberof utils From 805d371271d254233b4afe92cfe8289e2b1d9196 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 11 Sep 2018 14:19:09 -0700 Subject: [PATCH 0277/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/n.js | 15 +++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js index fa93f0db24d2..4dbde3a02f3f 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js @@ -273,6 +273,7 @@ ns.push({ '@stdlib/utils/keys', '@stdlib/utils/nonenumerable-property-names', '@stdlib/utils/nonenumerable-property-names-in', + '@stdlib/utils/nonenumerable-property-symbols', '@stdlib/utils/property-names' ] }); @@ -286,6 +287,7 @@ ns.push({ '@stdlib/utils/keys', '@stdlib/utils/nonenumerable-inherited-property-names', '@stdlib/utils/nonenumerable-property-names-in', + '@stdlib/utils/nonenumerable-property-symbols-in', '@stdlib/utils/property-names' ] }); @@ -303,6 +305,19 @@ ns.push({ ] }); +ns.push({ + 'alias': 'nonEnumerablePropertySymbols', + 'path': '@stdlib/utils/nonenumerable-property-symbols', + 'value': require( '@stdlib/utils/nonenumerable-property-symbols' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/nonenumerable-inherited-property-symbols', + '@stdlib/utils/nonenumerable-property-names', + '@stdlib/utils/nonenumerable-property-symbols-in', + '@stdlib/utils/property-symbols' + ] +}); + ns.push({ 'alias': 'noop', 'path': '@stdlib/utils/noop', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 51e0cddb54d2..961b3d455043 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1374,6 +1374,7 @@ var db = { "nonEnumerableInheritedPropertyNames": "keys = nonEnumerableInheritedPropertyNames( {} )\n", "nonEnumerablePropertyNames": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerablePropertyNames( obj )\n", "nonEnumerablePropertyNamesIn": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerablePropertyNamesIn( obj )\n", + "nonEnumerablePropertySymbols": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\nsym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\ndefineProperty( obj, sym, desc );\nsymbols = nonEnumerablePropertySymbols( obj )\n", "noop": "noop();\n", "now": "ts = now()\n", "NUM_CPUS": "NUM_CPUS\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 2fb5c6531110..cf3b0d338ed3 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1372,9 +1372,10 @@ var db = { "noneByAsync": "\nnoneByAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByAsync, everyByAsync, forEachAsync, noneBy, noneByRightAsync, someByAsync\n", "noneByRight": "\nnoneByRight( collection, predicate[, thisArg ] )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n The predicate function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n The function immediately returns upon encountering a truthy return value.\n\n If provided an empty collection, the function returns `true`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n predicate: Function\n The test function.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n bool: boolean\n The function returns `true` if the predicate function returns a falsy\n value for all elements; otherwise, the function returns `false`.\n\n Examples\n --------\n > function positive( v ) { return ( v > 0 ); };\n > var arr = [ -1, -2, -3, -4 ];\n > var bool = noneByRight( arr, positive )\n true\n\n See Also\n --------\n anyByRight, everyByRight, forEachRight, none, noneBy, someByRight\n", "noneByRightAsync": "\nnoneByRightAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByRightAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function, iterating from right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByRightAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByRightAsync, everyByRightAsync, forEachRightAsync, noneByAsync, noneByRight, someByRightAsync\n", - "nonEnumerableInheritedPropertyNames": "\nnonEnumerableInheritedPropertyNames( value[, level] )\n Returns an array of an object's inherited non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited non-enumerable property names.\n\n Examples\n --------\n > var keys = nonEnumerableInheritedPropertyNames( {} )\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, propertyNames\n", + "nonEnumerableInheritedPropertyNames": "\nnonEnumerableInheritedPropertyNames( value[, level] )\n Returns an array of an object's inherited non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited non-enumerable property names.\n\n Examples\n --------\n > var keys = nonEnumerableInheritedPropertyNames( {} )\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertyNames\n", "nonEnumerablePropertyNames": "\nnonEnumerablePropertyNames( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNames( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableInheritedPropertyNames, nonEnumerablePropertyNamesIn, propertyNames\n", "nonEnumerablePropertyNamesIn": "\nnonEnumerablePropertyNamesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNamesIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, nonEnumerableInheritedPropertyNames, nonEnumerablePropertyNames, propertyNamesIn\n", + "nonEnumerablePropertySymbols": "\nnonEnumerablePropertySymbols( value )\n Returns an array of an object's own non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbols( obj )\n\n See Also\n --------\n nonEnumerablePropertyNames, propertySymbols\n", "noop": "\nnoop()\n A function which does nothing.\n\n Examples\n --------\n > noop();\n\n", "now": "\nnow()\n Returns the time in seconds since the epoch.\n\n The Unix epoch is 00:00:00 UTC on 1 January 1970.\n\n Returns\n -------\n out: integer\n Time in seconds since the epoch.\n\n Examples\n --------\n > var ts = now()\n \n\n", "NUM_CPUS": "\nNUM_CPUS\n Number of CPUs.\n\n In browser environments, the number of CPUs is determined by querying the\n hardware concurrency API.\n\n In Node.js environments, the number of CPUs is determined via the `os`\n module.\n\n Examples\n --------\n > NUM_CPUS\n \n\n", From c13616562bdb00e9124c62f77b6f794152a966af Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 11 Sep 2018 19:04:04 -0700 Subject: [PATCH 0278/1062] Fix description --- .../@stdlib/utils/nonenumerable-property-symbols/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/lib/main.js index 221f10b44370..0d34ed9474e0 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/lib/main.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/lib/main.js @@ -30,7 +30,7 @@ var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property * Returns an array of an object's own non-enumerable symbol properties. * * @param {*} value - input object -* @returns {Array} a list of own non-enumerable symbol property +* @returns {Array} a list of own non-enumerable symbol properties * * @example * var symbols = nonEnumerablePropertySymbols( {} ); From 6c8597f69952bae90c9ebc8e889cad3d3d011c78 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 12 Sep 2018 00:47:53 -0700 Subject: [PATCH 0279/1062] Fix note --- .../@stdlib/utils/nonenumerable-property-symbols/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/README.md b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/README.md index c83112a948dd..b86b302a76b6 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/README.md +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols/README.md @@ -63,7 +63,7 @@ var symbols = nonEnumerablePropertySymbols( obj ); ## Notes -- Property order is not guaranteed, as `object` property enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. practice, however, most engines use insertion order to sort an `object`'s properties, thus allowing for deterministic extraction. +- Property order is not guaranteed, as `object` property enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s properties, thus allowing for deterministic extraction. From c022ac1c43f2741ca36710c7fc51abc332aa019f Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 12 Sep 2018 00:48:15 -0700 Subject: [PATCH 0280/1062] Fix note --- .../@stdlib/utils/nonenumerable-property-names/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/README.md b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/README.md index d1b053d3622f..660bec78351e 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-property-names/README.md +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names/README.md @@ -62,7 +62,7 @@ var keys = nonEnumerablePropertyNames( obj ); ## Notes -- Name order is not guaranteed, as `object` key enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. practice, however, most engines use insertion order to sort an `object`'s keys, thus allowing for deterministic extraction. +- Name order is not guaranteed, as `object` key enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s keys, thus allowing for deterministic extraction. From 24b65b34cc4c5c43a2df07876774e86e298cf84d Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 12 Sep 2018 00:49:44 -0700 Subject: [PATCH 0281/1062] Add utility to return an object's own and inherited non-enumerable symbol properties --- .../README.md | 127 ++++++++++ .../benchmark/benchmark.js | 72 ++++++ .../docs/repl.txt | 37 +++ .../examples/index.js | 54 +++++ .../lib/index.js | 39 +++ .../lib/main.js | 93 +++++++ .../package.json | 70 ++++++ .../test/test.js | 227 ++++++++++++++++++ 8 files changed, 719 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/README.md create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/package.json create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/test/test.js diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/README.md b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/README.md new file mode 100644 index 000000000000..a4871372732d --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/README.md @@ -0,0 +1,127 @@ + + +# nonEnumerablePropertySymbolsIn + +> Return an array of an object's own and inherited non-enumerable symbol properties. + +
+ +## Usage + + + +```javascript +var nonEnumerablePropertySymbolsIn = require( '@stdlib/utils/nonenumerable-property-symbols-in' ); +``` + +#### nonEnumerablePropertySymbolsIn( obj ) + +Returns an `array` of an object's own and inherited non-enumerable symbol properties. + +```javascript +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = {}; + +if ( hasSymbolSupport() ) { + defineProperty( obj, Symbol( 'a' ), { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); +} + +var symbols = nonEnumerablePropertySymbolsIn( obj ); +``` + +
+ + + +
+ +## Notes + +- Property order is not guaranteed, as `object` property enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s properties, thus allowing for deterministic extraction. + +
+ + + +
+ +## Examples + + + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var nonEnumerablePropertySymbolsIn = require( '@stdlib/utils/nonenumerable-property-symbols-in' ); + +var hasSymbols = hasSymbolSupport(); +var symbols; +var obj; + +function Foo() { + if ( hasSymbols ) { + defineProperty( this, Symbol( 'baz' ), { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + } + return this; +} + +if ( hasSymbols ) { + defineProperty( Foo.prototype, Symbol( 'bip' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' + }); +} + +obj = new Foo(); +symbols = nonEnumerablePropertySymbolsIn( obj ); + +console.log( symbols ); +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/benchmark/benchmark.js new file mode 100644 index 000000000000..543adfe1bdb3 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var nonEnumerablePropertySymbolsIn = require( './../lib' ); // eslint-disable-line id-length + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = nonEnumerablePropertySymbolsIn( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/docs/repl.txt b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/docs/repl.txt new file mode 100644 index 000000000000..e6b8fb7e24fe --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/docs/repl.txt @@ -0,0 +1,37 @@ + +{{alias}}( value ) + Returns an array of an object's own and inherited non-enumerable symbol + properties. + + Property order is not guaranteed, as object property enumeration is not + specified according to the ECMAScript specification. In practice, however, + most engines use insertion order to sort an object's properties, thus + allowing for deterministic extraction. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + Returns + ------- + symbols: Array + List of an object's own and inherited non-enumerable symbol properties. + + Examples + -------- + > var obj = {}; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = false; + > desc.writable = true; + > desc.value = 'boop'; + > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep'; + > {{alias:@stdlib/utils/define-property}}( obj, sym, desc ); + > var symbols = {{alias}}( obj ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/examples/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/examples/index.js new file mode 100644 index 000000000000..a8a6a63632f0 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/examples/index.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var nonEnumerablePropertySymbolsIn = require( './../lib' ); // eslint-disable-line id-length + +var hasSymbols = hasSymbolSupport(); +var symbols; +var obj; + +function Foo() { + if ( hasSymbols ) { + defineProperty( this, Symbol( 'baz' ), { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + } + return this; +} + +if ( hasSymbols ) { + defineProperty( Foo.prototype, Symbol( 'bip' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' + }); +} + +obj = new Foo(); +symbols = nonEnumerablePropertySymbolsIn( obj ); + +console.log( symbols ); diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/lib/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/lib/index.js new file mode 100644 index 000000000000..676ec8c68e2d --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/lib/index.js @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's own and inherited non-enumerable symbol properties. +* +* @module @stdlib/utils/nonenumerable-property-symbols-in +* +* @example +* var nonEnumerablePropertySymbolsIn = require( '@stdlib/utils/nonenumerable-property-symbols-in' ); +* +* var symbols = nonEnumerablePropertySymbolsIn( {} ); +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/lib/main.js new file mode 100644 index 000000000000..56ed9f556190 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/lib/main.js @@ -0,0 +1,93 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); +var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating if an array contains a provided value. +* +* @private +* @param {Array} arr - array +* @param {*} v - search value +* @returns {boolean} boolean indicating if an array contains a search value +*/ +function contains( arr, v ) { + var i; + for ( i = 0; i < arr.length; i++ ) { + if ( arr[ i ] === v ) { + return true; + } + } + return false; +} + + +// MAIN // + +/** +* Returns an array of an object's own and inherited non-enumerable symbol properties. +* +* @param {*} value - input object +* @returns {Array} a list of own and inherited non-enumerable symbol properties +* +* @example +* var symbols = nonEnumerablePropertySymbolsIn( {} ); +*/ +function nonEnumerablePropertySymbolsIn( value ) { // eslint-disable-line id-length + var symbols; + var obj; + var tmp; + var i; + + if ( value === null || value === void 0 ) { + return []; + } + // Cast the value to an object: + obj = Object( value ); + + // Walk the prototype chain collecting all non-enumerable symbol properties... + symbols = []; + do { + tmp = getOwnPropertySymbols( obj ); + for ( i = 0; i < tmp.length; i++ ) { + if ( + isNonEnumerableProperty( obj, tmp[ i ] ) && + contains( symbols, tmp[ i ] ) === false + ) { + symbols.push( tmp[ i ] ); + } + } + obj = getPrototypeOf( obj ); + } while ( obj ); + + return symbols; +} + + +// EXPORTS // + +module.exports = nonEnumerablePropertySymbolsIn; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/package.json b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/package.json new file mode 100644 index 000000000000..592ddedeeb6f --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/package.json @@ -0,0 +1,70 @@ +{ + "name": "@stdlib/utils/nonenumerable-property-symbols-in", + "version": "0.0.0", + "description": "Return an array of an object's own and inherited non-enumerable symbol properties.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "symbols", + "sym", + "enumerable", + "non-enumerable", + "own", + "inherited", + "in", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/test/test.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/test/test.js new file mode 100644 index 000000000000..42455635c935 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/test/test.js @@ -0,0 +1,227 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var nonEnumerablePropertySymbolsIn = require( './../lib' ); // eslint-disable-line id-length + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof nonEnumerablePropertySymbolsIn, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns an array of an object\'s own and inherited non-enumerable symbol properties', function test( t ) { + var hasSymbols; + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + hasSymbols = hasSymbolSupport(); + + function Foo() { + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'boop'; + this[ syms[ 1 ] ] = { + 'b': 'c' + }; + defineProperty( this, syms[ 2 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + defineProperty( this, syms[ 3 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'g' + }); + defineProperty( this, syms[ 4 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'i' + }); + } + return this; + } + + if ( hasSymbols ) { + syms = [ + Symbol( 'beep' ), + Symbol( 'a' ), + Symbol( 'd' ), + Symbol( 'f' ), + Symbol( 'h' ), + Symbol( 'foo' ), + Symbol( 'baz' ) + ]; + + Foo.prototype[ syms[ 5 ] ] = [ 'bar' ]; + defineProperty( Foo.prototype, syms[ 6 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ syms[ 2 ], syms[ 3 ], syms[ 4 ], syms[ 6 ] ]; + } else { + syms = []; + expected = []; + } + actual = nonEnumerablePropertySymbolsIn( obj ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s own and inherited non-enumerable symbol properties (mock)', function test( t ) { + var nonEnumerablePropertySymbolsIn; // eslint-disable-line id-length + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + nonEnumerablePropertySymbolsIn = proxyquire( './../lib/main.js', { + '@stdlib/utils/property-symbols': propertySymbolsIn + }); + + syms = [ + 'beep', + 'a', + 'd', + 'f', + 'h', + 'foo', + 'baz' + ]; + + function Foo() { + this[ syms[ 0 ] ] = 'boop'; + this[ syms[ 1 ] ] = { + 'b': 'c' + }; + defineProperty( this, syms[ 2 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + defineProperty( this, syms[ 3 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'g' + }); + defineProperty( this, syms[ 4 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'i' + }); + return this; + } + + Foo.prototype[ syms[ 5 ] ] = [ 'bar' ]; + defineProperty( Foo.prototype, syms[ 6 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ syms[ 2 ], syms[ 3 ], syms[ 4 ], syms[ 6 ] ]; + actual = nonEnumerablePropertySymbolsIn( obj ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i].toString() ); + } + t.end(); + + function propertySymbolsIn() { + return syms.slice(); + } +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = nonEnumerablePropertySymbolsIn( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided a non-string primitive', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + 3.14, + NaN, + true, + false + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = nonEnumerablePropertySymbolsIn( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From 0a47305ee8b12ff155b5c0504a6ed7dc5ce233d3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 12 Sep 2018 00:51:35 -0700 Subject: [PATCH 0282/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 5e628115e83a..afac8cb7e796 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1071,6 +1071,15 @@ setReadOnly( utils, 'nonEnumerablePropertyNamesIn', require( '@stdlib/utils/none */ setReadOnly( utils, 'nonEnumerablePropertySymbols', require( '@stdlib/utils/nonenumerable-property-symbols' ) ); +/** +* @name nonEnumerablePropertySymbolsIn +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/nonenumerable-property-symbols-in} +*/ +setReadOnly( utils, 'nonEnumerablePropertySymbolsIn', require( '@stdlib/utils/nonenumerable-property-symbols-in' ) ); + /** * @name noop * @memberof utils From b8e904554b0932906cccb1bb878420d987cd985c Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 12 Sep 2018 00:52:59 -0700 Subject: [PATCH 0283/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/n.js | 13 +++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 +++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js index 4dbde3a02f3f..0416ac499f85 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js @@ -318,6 +318,19 @@ ns.push({ ] }); +ns.push({ + 'alias': 'nonEnumerablePropertySymbolsIn', + 'path': '@stdlib/utils/nonenumerable-property-symbols-in', + 'value': require( '@stdlib/utils/nonenumerable-property-symbols-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/nonenumerable-inherited-property-symbols', + '@stdlib/utils/nonenumerable-property-names-in', + '@stdlib/utils/nonenumerable-property-symbols', + '@stdlib/utils/property-symbols-in' + ] +}); + ns.push({ 'alias': 'noop', 'path': '@stdlib/utils/noop', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 961b3d455043..f576ee6b9682 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1375,6 +1375,7 @@ var db = { "nonEnumerablePropertyNames": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerablePropertyNames( obj )\n", "nonEnumerablePropertyNamesIn": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerablePropertyNamesIn( obj )\n", "nonEnumerablePropertySymbols": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\nsym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\ndefineProperty( obj, sym, desc );\nsymbols = nonEnumerablePropertySymbols( obj )\n", + "nonEnumerablePropertySymbolsIn": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\nsym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\ndefineProperty( obj, sym, desc );\nsymbols = nonEnumerablePropertySymbolsIn( obj )\n", "noop": "noop();\n", "now": "ts = now()\n", "NUM_CPUS": "NUM_CPUS\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index cf3b0d338ed3..8d89e7f2a714 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1373,9 +1373,10 @@ var db = { "noneByRight": "\nnoneByRight( collection, predicate[, thisArg ] )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n The predicate function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n The function immediately returns upon encountering a truthy return value.\n\n If provided an empty collection, the function returns `true`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n predicate: Function\n The test function.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n bool: boolean\n The function returns `true` if the predicate function returns a falsy\n value for all elements; otherwise, the function returns `false`.\n\n Examples\n --------\n > function positive( v ) { return ( v > 0 ); };\n > var arr = [ -1, -2, -3, -4 ];\n > var bool = noneByRight( arr, positive )\n true\n\n See Also\n --------\n anyByRight, everyByRight, forEachRight, none, noneBy, someByRight\n", "noneByRightAsync": "\nnoneByRightAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByRightAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function, iterating from right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByRightAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByRightAsync, everyByRightAsync, forEachRightAsync, noneByAsync, noneByRight, someByRightAsync\n", "nonEnumerableInheritedPropertyNames": "\nnonEnumerableInheritedPropertyNames( value[, level] )\n Returns an array of an object's inherited non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited non-enumerable property names.\n\n Examples\n --------\n > var keys = nonEnumerableInheritedPropertyNames( {} )\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertyNames\n", - "nonEnumerablePropertyNames": "\nnonEnumerablePropertyNames( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNames( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableInheritedPropertyNames, nonEnumerablePropertyNamesIn, propertyNames\n", + "nonEnumerablePropertyNames": "\nnonEnumerablePropertyNames( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNames( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableInheritedPropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbolsIn, propertyNames\n", "nonEnumerablePropertyNamesIn": "\nnonEnumerablePropertyNamesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNamesIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, nonEnumerableInheritedPropertyNames, nonEnumerablePropertyNames, propertyNamesIn\n", - "nonEnumerablePropertySymbols": "\nnonEnumerablePropertySymbols( value )\n Returns an array of an object's own non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbols( obj )\n\n See Also\n --------\n nonEnumerablePropertyNames, propertySymbols\n", + "nonEnumerablePropertySymbols": "\nnonEnumerablePropertySymbols( value )\n Returns an array of an object's own non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbols( obj )\n\n See Also\n --------\n nonEnumerablePropertyNames, nonEnumerablePropertySymbolsIn, propertySymbols\n", + "nonEnumerablePropertySymbolsIn": "\nnonEnumerablePropertySymbolsIn( value )\n Returns an array of an object's own and inherited non-enumerable symbol\n properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbolsIn( obj )\n\n See Also\n --------\n nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertySymbolsIn\n", "noop": "\nnoop()\n A function which does nothing.\n\n Examples\n --------\n > noop();\n\n", "now": "\nnow()\n Returns the time in seconds since the epoch.\n\n The Unix epoch is 00:00:00 UTC on 1 January 1970.\n\n Returns\n -------\n out: integer\n Time in seconds since the epoch.\n\n Examples\n --------\n > var ts = now()\n \n\n", "NUM_CPUS": "\nNUM_CPUS\n Number of CPUs.\n\n In browser environments, the number of CPUs is determined by querying the\n hardware concurrency API.\n\n In Node.js environments, the number of CPUs is determined via the `os`\n module.\n\n Examples\n --------\n > NUM_CPUS\n \n\n", From 0f5b49caeb300138d5dc314ec60909c1555b9841 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 12 Sep 2018 01:28:39 -0700 Subject: [PATCH 0284/1062] Update electron --- TODO.md | 3 --- deps/checksums/electron_v2_0_8_darwin_x64_zip/sha256 | 1 - deps/checksums/electron_v2_0_8_linux_arm64_zip/sha256 | 1 - deps/checksums/electron_v2_0_8_linux_arm_zip/sha256 | 1 - deps/checksums/electron_v2_0_8_linux_armv7l_zip/sha256 | 1 - deps/checksums/electron_v2_0_8_linux_ia32_zip/sha256 | 1 - deps/checksums/electron_v2_0_8_linux_x64_zip/sha256 | 1 - deps/checksums/electron_v2_0_8_mas_x64_zip/sha256 | 1 - deps/checksums/electron_v2_0_8_win32_ia32_zip/sha256 | 1 - deps/checksums/electron_v2_0_8_win32_x64_zip/sha256 | 1 - deps/checksums/electron_v2_0_9_darwin_x64_zip/sha256 | 1 + deps/checksums/electron_v2_0_9_linux_arm64_zip/sha256 | 1 + deps/checksums/electron_v2_0_9_linux_arm_zip/sha256 | 1 + deps/checksums/electron_v2_0_9_linux_armv7l_zip/sha256 | 1 + deps/checksums/electron_v2_0_9_linux_ia32_zip/sha256 | 1 + deps/checksums/electron_v2_0_9_linux_x64_zip/sha256 | 1 + deps/checksums/electron_v2_0_9_mas_x64_zip/sha256 | 1 + deps/checksums/electron_v2_0_9_win32_ia32_zip/sha256 | 1 + deps/checksums/electron_v2_0_9_win32_x64_zip/sha256 | 1 + etc/david/.pkg.json | 2 +- tools/make/common.mk | 2 +- 21 files changed, 11 insertions(+), 14 deletions(-) delete mode 100644 deps/checksums/electron_v2_0_8_darwin_x64_zip/sha256 delete mode 100644 deps/checksums/electron_v2_0_8_linux_arm64_zip/sha256 delete mode 100644 deps/checksums/electron_v2_0_8_linux_arm_zip/sha256 delete mode 100644 deps/checksums/electron_v2_0_8_linux_armv7l_zip/sha256 delete mode 100644 deps/checksums/electron_v2_0_8_linux_ia32_zip/sha256 delete mode 100644 deps/checksums/electron_v2_0_8_linux_x64_zip/sha256 delete mode 100644 deps/checksums/electron_v2_0_8_mas_x64_zip/sha256 delete mode 100644 deps/checksums/electron_v2_0_8_win32_ia32_zip/sha256 delete mode 100644 deps/checksums/electron_v2_0_8_win32_x64_zip/sha256 create mode 100644 deps/checksums/electron_v2_0_9_darwin_x64_zip/sha256 create mode 100644 deps/checksums/electron_v2_0_9_linux_arm64_zip/sha256 create mode 100644 deps/checksums/electron_v2_0_9_linux_arm_zip/sha256 create mode 100644 deps/checksums/electron_v2_0_9_linux_armv7l_zip/sha256 create mode 100644 deps/checksums/electron_v2_0_9_linux_ia32_zip/sha256 create mode 100644 deps/checksums/electron_v2_0_9_linux_x64_zip/sha256 create mode 100644 deps/checksums/electron_v2_0_9_mas_x64_zip/sha256 create mode 100644 deps/checksums/electron_v2_0_9_win32_ia32_zip/sha256 create mode 100644 deps/checksums/electron_v2_0_9_win32_x64_zip/sha256 diff --git a/TODO.md b/TODO.md index 7ef8580e0858..6a9826370094 100644 --- a/TODO.md +++ b/TODO.md @@ -621,9 +621,6 @@ limitations under the License. // Output to terminal: // {"beep":"boop"} - // Output to terminal: - // - // Output to terminal: // diff --git a/deps/checksums/electron_v2_0_8_darwin_x64_zip/sha256 b/deps/checksums/electron_v2_0_8_darwin_x64_zip/sha256 deleted file mode 100644 index 44396a86fb7e..000000000000 --- a/deps/checksums/electron_v2_0_8_darwin_x64_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -603de8aa2d59b923717cbbf3020d9ef9b7db5f856ac2e662ba60e1f680c7fbf6 diff --git a/deps/checksums/electron_v2_0_8_linux_arm64_zip/sha256 b/deps/checksums/electron_v2_0_8_linux_arm64_zip/sha256 deleted file mode 100644 index ba24ae39771f..000000000000 --- a/deps/checksums/electron_v2_0_8_linux_arm64_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -68d0aa855fb4bc0e51ce4b3a5cff7bf432004d85133b4c69ded8746d53cf5c95 diff --git a/deps/checksums/electron_v2_0_8_linux_arm_zip/sha256 b/deps/checksums/electron_v2_0_8_linux_arm_zip/sha256 deleted file mode 100644 index 8c300c9b52dc..000000000000 --- a/deps/checksums/electron_v2_0_8_linux_arm_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -05bb6c331e43468a0c80cf6ee5ebe1892ef3d763713b0f7f45fe0db3fb9924aa diff --git a/deps/checksums/electron_v2_0_8_linux_armv7l_zip/sha256 b/deps/checksums/electron_v2_0_8_linux_armv7l_zip/sha256 deleted file mode 100644 index 8c300c9b52dc..000000000000 --- a/deps/checksums/electron_v2_0_8_linux_armv7l_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -05bb6c331e43468a0c80cf6ee5ebe1892ef3d763713b0f7f45fe0db3fb9924aa diff --git a/deps/checksums/electron_v2_0_8_linux_ia32_zip/sha256 b/deps/checksums/electron_v2_0_8_linux_ia32_zip/sha256 deleted file mode 100644 index 64d54e241131..000000000000 --- a/deps/checksums/electron_v2_0_8_linux_ia32_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -a737902009baa7bb317485ab6c719c755c0e4b1daf3352e80b9a0dd23d683433 diff --git a/deps/checksums/electron_v2_0_8_linux_x64_zip/sha256 b/deps/checksums/electron_v2_0_8_linux_x64_zip/sha256 deleted file mode 100644 index 1aa618d115eb..000000000000 --- a/deps/checksums/electron_v2_0_8_linux_x64_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -c416eccf6e79fdc4df47005b4bf3d3f7c95f4bed049412ce63b9181294d020bb diff --git a/deps/checksums/electron_v2_0_8_mas_x64_zip/sha256 b/deps/checksums/electron_v2_0_8_mas_x64_zip/sha256 deleted file mode 100644 index eae988e05e73..000000000000 --- a/deps/checksums/electron_v2_0_8_mas_x64_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -b734960240127f6c2a7482ed251228786975df537bbb6f599b9f9ca59e4cc417 diff --git a/deps/checksums/electron_v2_0_8_win32_ia32_zip/sha256 b/deps/checksums/electron_v2_0_8_win32_ia32_zip/sha256 deleted file mode 100644 index d531275386f4..000000000000 --- a/deps/checksums/electron_v2_0_8_win32_ia32_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -e214e709d827f58f16c76fddeeb1321e29bf0ed20383a4c5b50ba9392cb2a4ed diff --git a/deps/checksums/electron_v2_0_8_win32_x64_zip/sha256 b/deps/checksums/electron_v2_0_8_win32_x64_zip/sha256 deleted file mode 100644 index cfc9a8366916..000000000000 --- a/deps/checksums/electron_v2_0_8_win32_x64_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -9319f3d5c9275a5ea77568a1dab009707e250eeb7738d6d54e71eb65a5c50478 diff --git a/deps/checksums/electron_v2_0_9_darwin_x64_zip/sha256 b/deps/checksums/electron_v2_0_9_darwin_x64_zip/sha256 new file mode 100644 index 000000000000..dca36ae498f0 --- /dev/null +++ b/deps/checksums/electron_v2_0_9_darwin_x64_zip/sha256 @@ -0,0 +1 @@ +57cdeeaa730597debf285c89e246bad3530ff91814b61e9524422156ecb3e96a diff --git a/deps/checksums/electron_v2_0_9_linux_arm64_zip/sha256 b/deps/checksums/electron_v2_0_9_linux_arm64_zip/sha256 new file mode 100644 index 000000000000..b568f5b42cb5 --- /dev/null +++ b/deps/checksums/electron_v2_0_9_linux_arm64_zip/sha256 @@ -0,0 +1 @@ +dd0f0bc5a55a87afd6344413b99faf323029579780734d6f570fbd142a05db91 diff --git a/deps/checksums/electron_v2_0_9_linux_arm_zip/sha256 b/deps/checksums/electron_v2_0_9_linux_arm_zip/sha256 new file mode 100644 index 000000000000..85889b7c0ff2 --- /dev/null +++ b/deps/checksums/electron_v2_0_9_linux_arm_zip/sha256 @@ -0,0 +1 @@ +70bcf944a7742a70438166dcd1208ae6de3bb76d15c139a586bfccfd93c3f5d4 diff --git a/deps/checksums/electron_v2_0_9_linux_armv7l_zip/sha256 b/deps/checksums/electron_v2_0_9_linux_armv7l_zip/sha256 new file mode 100644 index 000000000000..85889b7c0ff2 --- /dev/null +++ b/deps/checksums/electron_v2_0_9_linux_armv7l_zip/sha256 @@ -0,0 +1 @@ +70bcf944a7742a70438166dcd1208ae6de3bb76d15c139a586bfccfd93c3f5d4 diff --git a/deps/checksums/electron_v2_0_9_linux_ia32_zip/sha256 b/deps/checksums/electron_v2_0_9_linux_ia32_zip/sha256 new file mode 100644 index 000000000000..fb02c1035e75 --- /dev/null +++ b/deps/checksums/electron_v2_0_9_linux_ia32_zip/sha256 @@ -0,0 +1 @@ +378e5c60d339d6359f7f99fbbf6783f51635f15dbeabc9c64537c9de649929ef diff --git a/deps/checksums/electron_v2_0_9_linux_x64_zip/sha256 b/deps/checksums/electron_v2_0_9_linux_x64_zip/sha256 new file mode 100644 index 000000000000..1e21c2b3020a --- /dev/null +++ b/deps/checksums/electron_v2_0_9_linux_x64_zip/sha256 @@ -0,0 +1 @@ +ce34b4f3710bf880b680ac587b6a857f7821680659eb0526948ab09c2285aefd diff --git a/deps/checksums/electron_v2_0_9_mas_x64_zip/sha256 b/deps/checksums/electron_v2_0_9_mas_x64_zip/sha256 new file mode 100644 index 000000000000..9db226980732 --- /dev/null +++ b/deps/checksums/electron_v2_0_9_mas_x64_zip/sha256 @@ -0,0 +1 @@ +8129f58d83a7bbe134691d75ebf880521c290d9d89a6e601596e8d46f09a9755 diff --git a/deps/checksums/electron_v2_0_9_win32_ia32_zip/sha256 b/deps/checksums/electron_v2_0_9_win32_ia32_zip/sha256 new file mode 100644 index 000000000000..9b436556d821 --- /dev/null +++ b/deps/checksums/electron_v2_0_9_win32_ia32_zip/sha256 @@ -0,0 +1 @@ +e3284e5d3eb31e4af259cfdb1f08ebbe355933488b4658576861fbe08bbb7b04 diff --git a/deps/checksums/electron_v2_0_9_win32_x64_zip/sha256 b/deps/checksums/electron_v2_0_9_win32_x64_zip/sha256 new file mode 100644 index 000000000000..d23a1afbdc86 --- /dev/null +++ b/deps/checksums/electron_v2_0_9_win32_x64_zip/sha256 @@ -0,0 +1 @@ +421fc6201455a9423d748cb6723629d83e9d7fcb03a37bad1423f60a0731cf31 diff --git a/etc/david/.pkg.json b/etc/david/.pkg.json index 24d1d6c4b983..8ffb13ffcf6e 100644 --- a/etc/david/.pkg.json +++ b/etc/david/.pkg.json @@ -1,6 +1,6 @@ { "dependencies": { - "electron": "2.0.8" + "electron": "2.0.9" }, "devDependencies":{} } diff --git a/tools/make/common.mk b/tools/make/common.mk index 499665142e1e..6ffac9e24f4f 100644 --- a/tools/make/common.mk +++ b/tools/make/common.mk @@ -528,7 +528,7 @@ endif endif # Define the Electron version (NOTE: whenever updated, update the `david` configuration file): -DEPS_ELECTRON_VERSION ?= 2.0.8 +DEPS_ELECTRON_VERSION ?= 2.0.9 # Generate a version slug: deps_electron_version_slug := $(subst .,_,$(DEPS_ELECTRON_VERSION)) From c177e9387f6fbc754ca0ae345ba82f5de233af24 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 12 Sep 2018 15:37:40 -0700 Subject: [PATCH 0285/1062] Add assertion utility to test whether two values are the same value --- .../assert/is-same-value-zero/README.md | 138 ++++++++++++++++++ .../is-same-value-zero/benchmark/benchmark.js | 70 +++++++++ .../assert/is-same-value-zero/docs/repl.txt | 36 +++++ .../is-same-value-zero/examples/index.js | 54 +++++++ .../assert/is-same-value-zero/lib/index.js | 58 ++++++++ .../assert/is-same-value-zero/lib/main.js | 70 +++++++++ .../assert/is-same-value-zero/package.json | 75 ++++++++++ .../assert/is-same-value-zero/test/test.js | 120 +++++++++++++++ 8 files changed, 621 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-same-value-zero/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-same-value-zero/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-same-value-zero/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-same-value-zero/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-same-value-zero/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-same-value-zero/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-same-value-zero/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-same-value-zero/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-same-value-zero/README.md b/lib/node_modules/@stdlib/assert/is-same-value-zero/README.md new file mode 100644 index 000000000000..ce29585d17f0 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-same-value-zero/README.md @@ -0,0 +1,138 @@ + + +# isSameValueZero + +> Test if two arguments are the same value. + +
+ +## Usage + +```javascript +var isSameValueZero = require( '@stdlib/assert/is-same-value-zero' ); +``` + +#### isSameValueZero( a, b ) + +Tests if two arguments `a` and `b` are the same value. + +```javascript +var bool = isSameValueZero( false, false ); +// returns true + +bool = isSameValueZero( '', '' ); +// returns true + +bool = isSameValueZero( {}, {} ); +// returns false +``` + +In contrast to the strict equality operator `===`, the function treats `NaNs` as the same value. + + + +```javascript +var bool = ( NaN === NaN ); +// returns false + +bool = isSameValueZero( NaN, NaN ); +// returns true +``` + +In contrast to the [SameValue Algorithm][@stdlib/assert/is-same-value], the function does **not** distinguish between `+0` and `-0`. + + + +```javascript +var bool = ( 0.0 === -0.0 ); +// returns true + +bool = isSameValueZero( 0.0, -0.0 ); +// returns true + +bool = isSameValueZero( -0.0, 0.0 ); +// returns true +``` + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var isSameValueZero = require( '@stdlib/assert/is-same-value-zero' ); + +var bool = isSameValueZero( true, true ); +// returns true + +bool = isSameValueZero( true, false ); +// returns false + +bool = isSameValueZero( 'beep', 'beep' ); +// returns true + +bool = isSameValueZero( 3.14, 3.14 ); +// returns true + +bool = isSameValueZero( null, null ); +// returns true + +bool = isSameValueZero( 0.0, 0.0 ); +// returns true + +bool = isSameValueZero( -0.0, 0.0 ); +// returns true + +bool = isSameValueZero( NaN, NaN ); +// returns true + +bool = isSameValueZero( {}, {} ); +// returns false + +bool = isSameValueZero( [], [] ); +// returns false + +bool = isSameValueZero( isSameValueZero, isSameValueZero ); +// returns true +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-same-value-zero/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-same-value-zero/benchmark/benchmark.js new file mode 100644 index 000000000000..37bc5f7fe75d --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-same-value-zero/benchmark/benchmark.js @@ -0,0 +1,70 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable no-empty-function */ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var isSameValueZero = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var values; + var bool; + var v; + var i; + + values = [ + '', + '5', + 0, + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + new RegExp( '.*' ), + new Date(), + function noop() {} + ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = values[ i%values.length ]; + bool = isSameValueZero( v, v ); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-same-value-zero/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-same-value-zero/docs/repl.txt new file mode 100644 index 000000000000..bf908dd8b0d3 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-same-value-zero/docs/repl.txt @@ -0,0 +1,36 @@ + +{{alias}}( a, b ) + Tests if two arguments are the same value. + + The function differs from the `===` operator in that the function treats + `NaNs` as the same. + + Parameters + ---------- + a: any + First input value. + + b: any + Second input value. + + Returns + ------- + bool: boolean + Boolean indicating whether two arguments are the same value. + + Examples + -------- + > var bool = {{alias}}( true, true ) + true + > bool = {{alias}}( {}, {} ) + false + > bool = {{alias}}( -0.0, -0.0 ) + true + > bool = {{alias}}( -0.0, 0.0 ) + true + > bool = {{alias}}( NaN, NaN ) + true + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-same-value-zero/examples/index.js b/lib/node_modules/@stdlib/assert/is-same-value-zero/examples/index.js new file mode 100644 index 000000000000..9a1c56f73d44 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-same-value-zero/examples/index.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var isSameValueZero = require( './../lib' ); + +console.log( isSameValueZero( true, true ) ); +// => true + +console.log( isSameValueZero( true, false ) ); +// => false + +console.log( isSameValueZero( 'beep', 'beep' ) ); +// => true + +console.log( isSameValueZero( 3.14, 3.14 ) ); +// => true + +console.log( isSameValueZero( null, null ) ); +// => true + +console.log( isSameValueZero( 0.0, 0.0 ) ); +// => true + +console.log( isSameValueZero( -0.0, 0.0 ) ); +// => true + +console.log( isSameValueZero( NaN, NaN ) ); +// => true + +console.log( isSameValueZero( {}, {} ) ); +// => false + +console.log( isSameValueZero( [], [] ) ); +// => false + +console.log( isSameValueZero( isSameValueZero, isSameValueZero ) ); +// => true diff --git a/lib/node_modules/@stdlib/assert/is-same-value-zero/lib/index.js b/lib/node_modules/@stdlib/assert/is-same-value-zero/lib/index.js new file mode 100644 index 000000000000..e3b61bccf857 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-same-value-zero/lib/index.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test if two arguments are the same value. +* +* @module @stdlib/assert/is-same-value-zero +* +* @example +* var isSameValueZero = require( '@stdlib/assert/is-same-value-zero' ); +* +* var bool = isSameValueZero( true, true ); +* // returns true +* +* bool = isSameValueZero( 3.14, 3.14 ); +* // returns true +* +* bool = isSameValueZero( {}, {} ); +* // returns false +* +* bool = isSameValueZero( -0.0, -0.0 ); +* // returns true +* +* bool = isSameValueZero( -0.0, 0.0 ); +* // returns true +* +* bool = isSameValueZero( NaN, NaN ); +* // returns true +* +* bool = isSameValueZero( [], [] ); +* // returns false +*/ + +// MODULES // + +var isSameValueZero = require( './main.js' ); + + +// EXPORTS // + +module.exports = isSameValueZero; diff --git a/lib/node_modules/@stdlib/assert/is-same-value-zero/lib/main.js b/lib/node_modules/@stdlib/assert/is-same-value-zero/lib/main.js new file mode 100644 index 000000000000..c303a0660658 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-same-value-zero/lib/main.js @@ -0,0 +1,70 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Tests if two arguments are the same value. +* +* ## Notes +* +* - The function implements the SameValueZero Algorithm used by `TypedArray` and `ArrayBuffer` constructors, `Map` and `Set` operations, `String.prototype.includes`, and `Array.prototype.includes` since ES2016. +* - In contrast to the strict equality operator `===`, `NaNs` are considered the same value. +* +* @param {*} a - first input value +* @param {*} b - second input value +* @returns {boolean} boolean indicating whether two arguments are the same value +* +* @example +* var bool = isSameValueZero( true, true ); +* // returns true +* +* @example +* var bool = isSameValueZero( 3.14, 3.14 ); +* // returns true +* +* @example +* var bool = isSameValueZero( {}, {} ); +* // returns false +* +* @example +* var bool = isSameValueZero( -0.0, -0.0 ); +* // returns true +* +* @example +* var bool = isSameValueZero( -0.0, 0.0 ); +* // returns true +* +* @example +* var bool = isSameValueZero( NaN, NaN ); +* // returns true +* +* @example +* var bool = isSameValueZero( [], [] ); +* // returns false +*/ +function isSameValueZero( a, b ) { + return ( a === b ) || ( a !== a && b !== b ); // handles NaNs +} + + +// EXPORTS // + +module.exports = isSameValueZero; diff --git a/lib/node_modules/@stdlib/assert/is-same-value-zero/package.json b/lib/node_modules/@stdlib/assert/is-same-value-zero/package.json new file mode 100644 index 000000000000..7f0a17878675 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-same-value-zero/package.json @@ -0,0 +1,75 @@ +{ + "name": "@stdlib/assert/is-same-value-zero", + "version": "0.0.0", + "description": "Test if two arguments are the same value.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "equal", + "same", + "strict", + "is", + "issame", + "issamevalue", + "isequal", + "isstrictequal", + "samevalue", + "samevaluezero", + "type", + "check", + "valid", + "validate", + "test" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-same-value-zero/test/test.js b/lib/node_modules/@stdlib/assert/is-same-value-zero/test/test.js new file mode 100644 index 000000000000..0840f6ccd02d --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-same-value-zero/test/test.js @@ -0,0 +1,120 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable no-new-wrappers */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Number = require( '@stdlib/number/ctor' ); +var isSameValueZero = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof isSameValueZero, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if provided two arguments which are the same value', function test( t ) { + var values; + var i; + + values = [ + '', + 'beep', + 5, + 3.14, + -3.14, + 0.0, + -0.0, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {}, + new Date(), + /.*/ + ]; + for ( i = 0; i < values.length; i++ ) { + t.strictEqual( isSameValueZero( values[ i ], values[ i ] ), true, 'returns true when provided '+values[ i ] ); + } + t.end(); +}); + +tape( 'the function does not distinguish between positive and negative zero', function test( t ) { + t.strictEqual( isSameValueZero( -0.0, +0.0 ), true, 'returns expected value' ); + t.strictEqual( isSameValueZero( +0.0, -0.0 ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `false` if not provided two arguments which are the same value', function test( t ) { + var a; + var b; + var i; + + a = [ + '', + 'beep', + new String( 'beep' ), + 5, + 3.14, + -3.14, + new Number( 5 ), + true, + false, + new Boolean( true ), + null, + void 0, + [], + {}, + function noop() {}, + new Date(), + /.*/ + ]; + b = [ + 'abc', + 'boop', + new String( 'beep' ), + -5, + -3.14, + 3.14, + new Number( 5 ), + false, + true, + new Boolean( true ), + void 0, + null, + [], + {}, + function noop() {}, + new Date(), + /.*/ + ]; + for ( i = 0; i < a.length; i++ ) { + t.strictEqual( isSameValueZero( a[ i ], b[ i ] ), false, 'returns false when provided '+a[ i ]+' and '+b[ i ] ); + } + t.end(); +}); From 6a44905aae6a6f7db24ec78ea290822e3b495939 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 12 Sep 2018 15:40:53 -0700 Subject: [PATCH 0286/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 42d2f662040b..9cef21833276 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -1620,6 +1620,15 @@ setReadOnly( ns, 'isSafeIntegerArray', require( '@stdlib/assert/is-safe-integer- */ setReadOnly( ns, 'isSameValue', require( '@stdlib/assert/is-same-value' ) ); +/** +* @name isSameValueZero +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-same-value-zero} +*/ +setReadOnly( ns, 'isSameValueZero', require( '@stdlib/assert/is-same-value-zero' ) ); + /** * @name isSharedArrayBuffer * @memberof ns From 5530736f0c63aba4cf39fdf25197da1761bece7f Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 12 Sep 2018 15:42:16 -0700 Subject: [PATCH 0287/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 13 +++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index bb30959905e9..4435834b37d1 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -3163,6 +3163,19 @@ ns.push({ 'type': 'Function', 'related': [ '@stdlib/assert/is-equal', + '@stdlib/assert/is-same-value-zero', + '@stdlib/assert/is-strict-equal' + ] +}); + +ns.push({ + 'alias': 'isSameValueZero', + 'path': '@stdlib/assert/is-same-value-zero', + 'value': require( '@stdlib/assert/is-same-value-zero' ), + 'type': 'Function', + 'related': [ + '@stdlib/assert/is-equal', + '@stdlib/assert/is-same-value', '@stdlib/assert/is-strict-equal' ] }); diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index f576ee6b9682..be0e2c5725df 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1267,6 +1267,7 @@ var db = { "isSafeInteger": "bool = isSafeInteger( 5.0 )\nbool = isSafeInteger( new Number( 5.0 ) )\nbool = isSafeInteger( 2.0e200 )\nbool = isSafeInteger( -3.14 )\nbool = isSafeInteger( null )\n", "isSafeIntegerArray": "arr = [ -3.0, new Number(0.0), 2.0 ];\nbool = isSafeIntegerArray( arr )\narr = [ -3.0, '3.0' ];\nbool = isSafeIntegerArray( arr )\n", "isSameValue": "bool = isSameValue( true, true )\nbool = isSameValue( {}, {} )\nbool = isSameValue( -0.0, -0.0 )\nbool = isSameValue( -0.0, 0.0 )\nbool = isSameValue( NaN, NaN )\n", + "isSameValueZero": "bool = isSameValueZero( true, true )\nbool = isSameValueZero( {}, {} )\nbool = isSameValueZero( -0.0, -0.0 )\nbool = isSameValueZero( -0.0, 0.0 )\nbool = isSameValueZero( NaN, NaN )\n", "isSharedArrayBuffer": "\n// Assuming an environment supports SharedArrayBuffer...\nbool = isSharedArrayBuffer( new SharedArrayBuffer( 10 ) )\nbool = isSharedArrayBuffer( [] )\n", "isSkewCentrosymmetricMatrix": "mat = ndarray( 'generic', 2 );\nM = mat( [ 2, 1, -1, -2 ], [ 2, 2 ], [ 2, 1 ], 0, 'row-major' );\nbool = isSkewCentrosymmetricMatrix( M )\nbool = isSkewCentrosymmetricMatrix( [ 1, 2, 3, 4 ] )\nbool = isSkewCentrosymmetricMatrix( 3.14 )\nbool = isSkewCentrosymmetricMatrix( {} )\n", "isSkewPersymmetricMatrix": "mat = ndarray( 'generic', 2 );\nM = mat( [ 1, 0, 0, -1 ], [ 2, 2 ], [ 2, 1 ], 0, 'row-major' );\nbool = isSkewPersymmetricMatrix( M )\nbool = isSkewPersymmetricMatrix( [ 1, 2, 3, 4 ] )\nbool = isSkewPersymmetricMatrix( 3.14 )\nbool = isSkewPersymmetricMatrix( {} )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 8d89e7f2a714..f823b85c116a 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1266,7 +1266,8 @@ var db = { "isRelativePath": "\nisRelativePath( value )\n Tests if a value is a relative path.\n\n Function behavior is platform-specific. On Windows platforms, the function\n is equal to `.win32()`. On POSIX platforms, the function is equal to\n `.posix()`.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a relative path.\n\n Examples\n --------\n // Windows environments:\n > var bool = isRelativePath( 'foo\\\\bar\\\\baz' )\n true\n\n // POSIX environments:\n > bool = isRelativePath( './foo/bar/baz' )\n true\n\n\nisRelativePath.posix( value )\n Tests if a value is a POSIX relative path.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a POSIX relative path.\n\n Examples\n --------\n > var bool = isRelativePath.posix( './foo/bar/baz' )\n true\n > bool = isRelativePath.posix( '/foo/../bar/baz' )\n false\n\n\nisRelativePath.win32( value )\n Tests if a value is a Windows relative path.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a Windows relative path.\n\n Examples\n --------\n > var bool = isRelativePath( 'foo\\\\bar\\\\baz' )\n true\n > bool = isRelativePath( 'C:\\\\foo\\\\..\\\\bar\\\\baz' )\n false\n\n See Also\n --------\n isAbsolutePath\n", "isSafeInteger": "\nisSafeInteger( value )\n Tests if a value is a safe integer.\n\n An integer valued number is \"safe\" when the number can be exactly\n represented as a double-precision floating-point number.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a safe integer.\n\n Examples\n --------\n > var bool = isSafeInteger( 5.0 )\n true\n > bool = isSafeInteger( new Number( 5.0 ) )\n true\n > bool = isSafeInteger( 2.0e200 )\n false\n > bool = isSafeInteger( -3.14 )\n false\n > bool = isSafeInteger( null )\n false\n\n\nisSafeInteger.isPrimitive( value )\n Tests if a value is a number primitive having a safe integer value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive having a safe\n integer value.\n\n Examples\n --------\n > var bool = isSafeInteger.isPrimitive( -3.0 )\n true\n > bool = isSafeInteger.isPrimitive( new Number( -3.0 ) )\n false\n\n\nisSafeInteger.isObject( value )\n Tests if a value is a `Number` object having a safe integer value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a `Number` object having a safe\n integer value.\n\n Examples\n --------\n > var bool = isSafeInteger.isObject( 3.0 )\n false\n > bool = isSafeInteger.isObject( new Number( 3.0 ) )\n true\n\n See Also\n --------\n isInteger, isNumber\n", "isSafeIntegerArray": "\nisSafeIntegerArray( value )\n Tests if a value is an array-like object containing only safe integers.\n\n An integer valued number is \"safe\" when the number can be exactly\n represented as a double-precision floating-point number.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing\n only safe integers.\n\n Examples\n --------\n > var arr = [ -3.0, new Number(0.0), 2.0 ];\n > var bool = isSafeIntegerArray( arr )\n true\n > arr = [ -3.0, '3.0' ];\n > bool = isSafeIntegerArray( arr )\n false\n\n\nisSafeIntegerArray.primitives( value )\n Tests if a value is an array-like object containing only primitive safe\n integer values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n primitive safe integer values.\n\n Examples\n --------\n > var arr = [ -1.0, 10.0 ];\n > var bool = isSafeIntegerArray.primitives( arr )\n true\n > arr = [ -1.0, 0.0, 5.0 ];\n > bool = isSafeIntegerArray.primitives( arr )\n true\n > arr = [ -3.0, new Number(-1.0) ];\n > bool = isSafeIntegerArray.primitives( arr )\n false\n\n\nisSafeIntegerArray.objects( value )\n Tests if a value is an array-like object containing only `Number` objects\n having safe integer values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n `Number` objects having safe integer values.\n\n Examples\n --------\n > var arr = [ new Number(1.0), new Number(3.0) ];\n > var bool = isSafeIntegerArray.objects( arr )\n true\n > arr = [ -1.0, 0.0, 3.0 ];\n > bool = isSafeIntegerArray.objects( arr )\n false\n > arr = [ 3.0, new Number(-1.0) ];\n > bool = isSafeIntegerArray.objects( arr )\n false\n\n See Also\n --------\n isArray, isSafeInteger\n", - "isSameValue": "\nisSameValue( a, b )\n Tests if two arguments are the same value.\n\n The function differs from the `===` operator in that the function treats\n `-0` and `+0` as distinct and `NaNs` as the same.\n\n Parameters\n ----------\n a: any\n First input value.\n\n b: any\n Second input value.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether two arguments are the same value.\n\n Examples\n --------\n > var bool = isSameValue( true, true )\n true\n > bool = isSameValue( {}, {} )\n false\n > bool = isSameValue( -0.0, -0.0 )\n true\n > bool = isSameValue( -0.0, 0.0 )\n false\n > bool = isSameValue( NaN, NaN )\n true\n\n See Also\n --------\n isStrictEqual\n", + "isSameValue": "\nisSameValue( a, b )\n Tests if two arguments are the same value.\n\n The function differs from the `===` operator in that the function treats\n `-0` and `+0` as distinct and `NaNs` as the same.\n\n Parameters\n ----------\n a: any\n First input value.\n\n b: any\n Second input value.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether two arguments are the same value.\n\n Examples\n --------\n > var bool = isSameValue( true, true )\n true\n > bool = isSameValue( {}, {} )\n false\n > bool = isSameValue( -0.0, -0.0 )\n true\n > bool = isSameValue( -0.0, 0.0 )\n false\n > bool = isSameValue( NaN, NaN )\n true\n\n See Also\n --------\n isSameValueZero, isStrictEqual\n", + "isSameValueZero": "\nisSameValueZero( a, b )\n Tests if two arguments are the same value.\n\n The function differs from the `===` operator in that the function treats\n `NaNs` as the same.\n\n Parameters\n ----------\n a: any\n First input value.\n\n b: any\n Second input value.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether two arguments are the same value.\n\n Examples\n --------\n > var bool = isSameValueZero( true, true )\n true\n > bool = isSameValueZero( {}, {} )\n false\n > bool = isSameValueZero( -0.0, -0.0 )\n true\n > bool = isSameValueZero( -0.0, 0.0 )\n true\n > bool = isSameValueZero( NaN, NaN )\n true\n\n See Also\n --------\n isSameValue, isStrictEqual\n", "isSharedArrayBuffer": "\nisSharedArrayBuffer( value )\n Tests if a value is a SharedArrayBuffer.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a SharedArrayBuffer.\n\n Examples\n --------\n // Assuming an environment supports SharedArrayBuffer...\n > var bool = isSharedArrayBuffer( new SharedArrayBuffer( 10 ) )\n true\n > bool = isSharedArrayBuffer( [] )\n false\n\n See Also\n --------\n isArrayBuffer, isTypedArray\n", "isSkewCentrosymmetricMatrix": "\nisSkewCentrosymmetricMatrix( value )\n Tests if a value is a skew-centrosymmetric matrix.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a skew-centrosymmetric matrix.\n\n Examples\n --------\n > var mat = ndarray( 'generic', 2 );\n > var M = mat( [ 2, 1, -1, -2 ], [ 2, 2 ], [ 2, 1 ], 0, 'row-major' );\n > var bool = isSkewCentrosymmetricMatrix( M )\n true\n > bool = isSkewCentrosymmetricMatrix( [ 1, 2, 3, 4 ] )\n false\n > bool = isSkewCentrosymmetricMatrix( 3.14 )\n false\n > bool = isSkewCentrosymmetricMatrix( {} )\n false\n\n See Also\n --------\n isCentrosymmetricMatrix, isMatrixLike, isSkewSymmetricMatrix\n", "isSkewPersymmetricMatrix": "\nisSkewPersymmetricMatrix( value )\n Tests if a value is a skew-persymmetric matrix.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a skew-persymmetric matrix.\n\n Examples\n --------\n > var mat = ndarray( 'generic', 2 );\n > var M = mat( [ 1, 0, 0, -1 ], [ 2, 2 ], [ 2, 1 ], 0, 'row-major' );\n > var bool = isSkewPersymmetricMatrix( M )\n true\n > bool = isSkewPersymmetricMatrix( [ 1, 2, 3, 4 ] )\n false\n > bool = isSkewPersymmetricMatrix( 3.14 )\n false\n > bool = isSkewPersymmetricMatrix( {} )\n false\n\n See Also\n --------\n isMatrixLike, isPersymmetricMatrix, isSkewSymmetricMatrix\n", From 113ea3ea0cb16b67b543c414f3335bf89ecee678 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 12 Sep 2018 15:54:15 -0700 Subject: [PATCH 0288/1062] Cache reference to global prototype method --- .../@stdlib/assert/has-prototype/lib/main.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/assert/has-prototype/lib/main.js b/lib/node_modules/@stdlib/assert/has-prototype/lib/main.js index d10f9635509d..4b88c0f95055 100644 --- a/lib/node_modules/@stdlib/assert/has-prototype/lib/main.js +++ b/lib/node_modules/@stdlib/assert/has-prototype/lib/main.js @@ -18,6 +18,13 @@ 'use strict'; +// VARIABLES // + +var isProtoOf = Object.prototype.isPrototypeOf; + + +// MAIN // + /** * Tests if an object's prototype chain contains a provided prototype. * @@ -59,7 +66,7 @@ function hasPrototype( value, proto ) { ) { return false; } - return proto.isPrototypeOf( value ); // eslint-disable-line no-prototype-builtins + return isProtoOf.call( proto, value ); } From 5a7a931121c7662ab72ea9137b591d98204f2628 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 12 Sep 2018 16:02:45 -0700 Subject: [PATCH 0289/1062] Rename package --- lib/node_modules/@stdlib/assert/README.md | 4 +- .../README.md | 50 ++++++++++--------- .../benchmark/benchmark.js | 4 +- .../docs/repl.txt | 0 .../examples/index.js | 26 +++++----- .../lib/index.js | 10 ++-- .../lib/main.js | 7 ++- .../package.json | 3 +- .../test/test.js | 22 ++++---- .../@stdlib/namespace/lib/namespace/g.js | 2 +- .../@stdlib/namespace/lib/namespace/h.js | 10 ---- .../@stdlib/namespace/lib/namespace/i.js | 12 ++++- .../@stdlib/utils/inherit/test/test.js | 2 +- 13 files changed, 78 insertions(+), 74 deletions(-) rename lib/node_modules/@stdlib/assert/{has-prototype => is-prototype-of}/README.md (70%) rename lib/node_modules/@stdlib/assert/{has-prototype => is-prototype-of}/benchmark/benchmark.js (89%) rename lib/node_modules/@stdlib/assert/{has-prototype => is-prototype-of}/docs/repl.txt (100%) rename lib/node_modules/@stdlib/assert/{has-prototype => is-prototype-of}/examples/index.js (76%) rename lib/node_modules/@stdlib/assert/{has-prototype => is-prototype-of}/lib/index.js (77%) rename lib/node_modules/@stdlib/assert/{has-prototype => is-prototype-of}/lib/main.js (90%) rename lib/node_modules/@stdlib/assert/{has-prototype => is-prototype-of}/package.json (95%) rename lib/node_modules/@stdlib/assert/{has-prototype => is-prototype-of}/test/test.js (87%) diff --git a/lib/node_modules/@stdlib/assert/README.md b/lib/node_modules/@stdlib/assert/README.md index 63dd963d50c9..f538e8fd04ca 100644 --- a/lib/node_modules/@stdlib/assert/README.md +++ b/lib/node_modules/@stdlib/assert/README.md @@ -325,7 +325,7 @@ The remaining functions of the `assert` namespace are: - [`deepHasProp( value, path[, options] )`][@stdlib/assert/deep-has-property]: test whether an object contains a nested key path, either own or inherited. - [`hasOwnProp( value, property )`][@stdlib/assert/has-own-property]: test if an object has a specified property. - [`hasProp( value, property )`][@stdlib/assert/has-property]: test if an object has a specified property, either own or inherited. -- [`hasPrototype( obj, prototype )`][@stdlib/assert/has-prototype]: test if an object's prototype chain contains a provided prototype. +- [`hasPrototype( obj, prototype )`][@stdlib/assert/is-prototype-of]: test if an object's prototype chain contains a provided prototype. - [`instanceOf( value, constructor )`][@stdlib/assert/instance-of]: test whether a value has in its prototype chain a specified constructor as a prototype property. - [`isAbsolutePath( value )`][@stdlib/assert/is-absolute-path]: test if a value is an absolute path. - [`isAlphagram( value )`][@stdlib/assert/is-alphagram]: test if a value is an alphagram. @@ -421,7 +421,7 @@ console.log( getKeys( assert ) ); [@stdlib/assert/has-property]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/assert/has-property -[@stdlib/assert/has-prototype]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/assert/has-prototype +[@stdlib/assert/is-prototype-of]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/assert/is-prototype-of [@stdlib/assert/instance-of]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/assert/instance-of diff --git a/lib/node_modules/@stdlib/assert/has-prototype/README.md b/lib/node_modules/@stdlib/assert/is-prototype-of/README.md similarity index 70% rename from lib/node_modules/@stdlib/assert/has-prototype/README.md rename to lib/node_modules/@stdlib/assert/is-prototype-of/README.md index 0042a481446b..677e8b0a2570 100644 --- a/lib/node_modules/@stdlib/assert/has-prototype/README.md +++ b/lib/node_modules/@stdlib/assert/is-prototype-of/README.md @@ -18,7 +18,7 @@ limitations under the License. --> -# hasPrototype +# isPrototypeOf > Test if an object's prototype chain contains a provided prototype. @@ -32,11 +32,13 @@ limitations under the License. ## Usage + + ```javascript -var hasPrototype = require( '@stdlib/assert/has-prototype' ); +var isPrototypeOf = require( '@stdlib/assert/is-prototype-of' ); ``` -#### hasPrototype( obj, prototype ) +#### isPrototypeOf( obj, prototype ) Tests if an `object`'s prototype chain contains a provided `prototype`. @@ -54,7 +56,7 @@ inherit( Bar, Foo ); var bar = new Bar(); -var bool = hasPrototype( bar, Foo.prototype ); +var bool = isPrototypeOf( bar, Foo.prototype ); // returns true ``` @@ -71,24 +73,24 @@ var bool = hasPrototype( bar, Foo.prototype ); ```javascript var Number = require( '@stdlib/number/ctor' ); - var bool = hasPrototype( 5, Number.prototype ); + var bool = isPrototypeOf( 5, Number.prototype ); // returns false - bool = hasPrototype( 'beep', String.prototype ); + bool = isPrototypeOf( 'beep', String.prototype ); // returns false - bool = hasPrototype( true, Boolean.prototype ); + bool = isPrototypeOf( true, Boolean.prototype ); // returns false ``` - The function throws a `TypeError` if provided a `prototype` value which is neither an `object` (except `null`) or a `function`. ```javascript - var bool = hasPrototype( Object.create( null ), null ); + var bool = isPrototypeOf( Object.create( null ), null ); // throws ``` -- `hasPrototype()` is generally more robust than the `instanceof` operator. Consider the following example which does not use constructors: +- `isPrototypeOf()` is generally more robust than the `instanceof` operator. Consider the following example which does not use constructors: ```javascript // Functionally similar to `Object.create()`... @@ -116,7 +118,7 @@ var bool = hasPrototype( bar, Foo.prototype ); console.error( error.message ); } - bool = hasPrototype( v, superProto ); + bool = isPrototypeOf( v, superProto ); // returns true ``` @@ -128,11 +130,13 @@ var bool = hasPrototype( bar, Foo.prototype ); ## Examples + + ```javascript var inherit = require( '@stdlib/utils/inherit' ); -var hasPrototype = require( '@stdlib/assert/has-prototype' ); +var isPrototypeOf = require( '@stdlib/assert/is-prototype-of' ); function A() { return this; @@ -158,40 +162,40 @@ var b = new B(); var c = new C(); var d = new D(); -var bool = hasPrototype( d, C.prototype ); +var bool = isPrototypeOf( d, C.prototype ); // returns true -bool = hasPrototype( d, B.prototype ); +bool = isPrototypeOf( d, B.prototype ); // returns true -bool = hasPrototype( d, A.prototype ); +bool = isPrototypeOf( d, A.prototype ); // returns true -bool = hasPrototype( c, B.prototype ); +bool = isPrototypeOf( c, B.prototype ); // returns true -bool = hasPrototype( c, A.prototype ); +bool = isPrototypeOf( c, A.prototype ); // returns true -bool = hasPrototype( c, D.prototype ); +bool = isPrototypeOf( c, D.prototype ); // returns false -bool = hasPrototype( b, A.prototype ); +bool = isPrototypeOf( b, A.prototype ); // returns true -bool = hasPrototype( b, C.prototype ); +bool = isPrototypeOf( b, C.prototype ); // returns false -bool = hasPrototype( b, D.prototype ); +bool = isPrototypeOf( b, D.prototype ); // returns false -bool = hasPrototype( a, B.prototype ); +bool = isPrototypeOf( a, B.prototype ); // returns false -bool = hasPrototype( a, C.prototype ); +bool = isPrototypeOf( a, C.prototype ); // returns false -bool = hasPrototype( a, D.prototype ); +bool = isPrototypeOf( a, D.prototype ); // returns false ``` diff --git a/lib/node_modules/@stdlib/assert/has-prototype/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-prototype-of/benchmark/benchmark.js similarity index 89% rename from lib/node_modules/@stdlib/assert/has-prototype/benchmark/benchmark.js rename to lib/node_modules/@stdlib/assert/is-prototype-of/benchmark/benchmark.js index 58f67ea453a5..16c1b39f5f28 100644 --- a/lib/node_modules/@stdlib/assert/has-prototype/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/assert/is-prototype-of/benchmark/benchmark.js @@ -23,7 +23,7 @@ var bench = require( '@stdlib/bench' ); var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; var pkg = require( './../package.json' ).name; -var hasPrototype = require( './../lib' ); +var isPrototypeOf = require( './../lib' ); // eslint-disable-line stdlib/no-redeclare // MAIN // @@ -45,7 +45,7 @@ bench( pkg, function benchmark( b ) { ]; b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = hasPrototype( vals[ i%vals.length ], Foo.prototype ); + bool = isPrototypeOf( vals[ i%vals.length ], Foo.prototype ); if ( !isBoolean( bool ) ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/assert/has-prototype/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-prototype-of/docs/repl.txt similarity index 100% rename from lib/node_modules/@stdlib/assert/has-prototype/docs/repl.txt rename to lib/node_modules/@stdlib/assert/is-prototype-of/docs/repl.txt diff --git a/lib/node_modules/@stdlib/assert/has-prototype/examples/index.js b/lib/node_modules/@stdlib/assert/is-prototype-of/examples/index.js similarity index 76% rename from lib/node_modules/@stdlib/assert/has-prototype/examples/index.js rename to lib/node_modules/@stdlib/assert/is-prototype-of/examples/index.js index 98840237a199..f4314787c9bd 100644 --- a/lib/node_modules/@stdlib/assert/has-prototype/examples/index.js +++ b/lib/node_modules/@stdlib/assert/is-prototype-of/examples/index.js @@ -19,7 +19,7 @@ 'use strict'; var inherit = require( '@stdlib/utils/inherit' ); -var hasPrototype = require( './../lib' ); +var isPrototypeOf = require( './../lib' ); // eslint-disable-line stdlib/no-redeclare function A() { return this; @@ -45,50 +45,50 @@ var b = new B(); var c = new C(); var d = new D(); -var bool = hasPrototype( d, C.prototype ); +var bool = isPrototypeOf( d, C.prototype ); console.log( 'd --> ... --> C? %s.', bool ); // => 'd --> ... --> C? true.' -bool = hasPrototype( d, B.prototype ); +bool = isPrototypeOf( d, B.prototype ); console.log( 'd --> ... --> B? %s.', bool ); // => 'd --> ... --> B? true.' -bool = hasPrototype( d, A.prototype ); +bool = isPrototypeOf( d, A.prototype ); console.log( 'd --> ... --> A? %s.', bool ); // => 'd --> ... --> A? true.' -bool = hasPrototype( c, B.prototype ); +bool = isPrototypeOf( c, B.prototype ); console.log( 'c --> ... --> B? %s.', bool ); // => 'c --> ... --> B? true.' -bool = hasPrototype( c, A.prototype ); +bool = isPrototypeOf( c, A.prototype ); console.log( 'c --> ... --> A? %s.', bool ); // => 'c --> ... --> A? true.' -bool = hasPrototype( c, D.prototype ); +bool = isPrototypeOf( c, D.prototype ); console.log( 'c --> ... --> D? %s.', bool ); // => 'c --> ... --> D? false.' -bool = hasPrototype( b, A.prototype ); +bool = isPrototypeOf( b, A.prototype ); console.log( 'b --> ... --> A? %s.', bool ); // => 'b --> ... --> A? true.' -bool = hasPrototype( b, C.prototype ); +bool = isPrototypeOf( b, C.prototype ); console.log( 'b --> ... --> C? %s.', bool ); // => 'b --> ... --> C? false.' -bool = hasPrototype( b, D.prototype ); +bool = isPrototypeOf( b, D.prototype ); console.log( 'b --> ... --> D? %s.', bool ); // => 'b --> ... --> D? false.' -bool = hasPrototype( a, B.prototype ); +bool = isPrototypeOf( a, B.prototype ); console.log( 'a --> ... --> B? %s.', bool ); // => 'a --> ... --> B? false.' -bool = hasPrototype( a, C.prototype ); +bool = isPrototypeOf( a, C.prototype ); console.log( 'a --> ... --> C? %s.', bool ); // => 'a --> ... --> C? false.' -bool = hasPrototype( a, D.prototype ); +bool = isPrototypeOf( a, D.prototype ); console.log( 'a --> ... --> D? %s.', bool ); // => 'a --> ... --> D? false.' diff --git a/lib/node_modules/@stdlib/assert/has-prototype/lib/index.js b/lib/node_modules/@stdlib/assert/is-prototype-of/lib/index.js similarity index 77% rename from lib/node_modules/@stdlib/assert/has-prototype/lib/index.js rename to lib/node_modules/@stdlib/assert/is-prototype-of/lib/index.js index f3ce22c240bd..aa730ed5dc18 100644 --- a/lib/node_modules/@stdlib/assert/has-prototype/lib/index.js +++ b/lib/node_modules/@stdlib/assert/is-prototype-of/lib/index.js @@ -21,11 +21,11 @@ /** * Test if an object's prototype chain contains a provided prototype. * -* @module @stdlib/assert/has-prototype +* @module @stdlib/assert/is-prototype-of * * @example * var inherit = require( '@stdlib/utils/inherit' ); -* var hasPrototype = require( '@stdlib/assert/has-prototype' ); +* var isPrototypeOf = require( '@stdlib/assert/is-prototype-of' ); * * function Foo() { * return this; @@ -38,15 +38,15 @@ * * var bar = new Bar(); * -* var bool = hasPrototype( bar, Foo.prototype ); +* var bool = isPrototypeOf( bar, Foo.prototype ); * // returns true */ // MODULES // -var hasPrototype = require( './main.js' ); +var isPrototypeOf = require( './main.js' ); // eslint-disable-line stdlib/no-redeclare // EXPORTS // -module.exports = hasPrototype; +module.exports = isPrototypeOf; diff --git a/lib/node_modules/@stdlib/assert/has-prototype/lib/main.js b/lib/node_modules/@stdlib/assert/is-prototype-of/lib/main.js similarity index 90% rename from lib/node_modules/@stdlib/assert/has-prototype/lib/main.js rename to lib/node_modules/@stdlib/assert/is-prototype-of/lib/main.js index 4b88c0f95055..781542f4adda 100644 --- a/lib/node_modules/@stdlib/assert/has-prototype/lib/main.js +++ b/lib/node_modules/@stdlib/assert/is-prototype-of/lib/main.js @@ -35,7 +35,6 @@ var isProtoOf = Object.prototype.isPrototypeOf; * * @example * var inherit = require( '@stdlib/utils/inherit' ); -* var hasPrototype = require( '@stdlib/assert/has-prototype' ); * * function Foo() { * return this; @@ -48,10 +47,10 @@ var isProtoOf = Object.prototype.isPrototypeOf; * * var bar = new Bar(); * -* var bool = hasPrototype( bar, Foo.prototype ); +* var bool = isPrototypeOf( bar, Foo.prototype ); * // returns true */ -function hasPrototype( value, proto ) { +function isPrototypeOf( value, proto ) { // eslint-disable-line stdlib/no-redeclare var type = typeof proto; if ( proto === null || @@ -72,4 +71,4 @@ function hasPrototype( value, proto ) { // EXPORTS // -module.exports = hasPrototype; +module.exports = isPrototypeOf; diff --git a/lib/node_modules/@stdlib/assert/has-prototype/package.json b/lib/node_modules/@stdlib/assert/is-prototype-of/package.json similarity index 95% rename from lib/node_modules/@stdlib/assert/has-prototype/package.json rename to lib/node_modules/@stdlib/assert/is-prototype-of/package.json index 11b1cce63e9e..280c44cf6a6c 100644 --- a/lib/node_modules/@stdlib/assert/has-prototype/package.json +++ b/lib/node_modules/@stdlib/assert/is-prototype-of/package.json @@ -1,5 +1,5 @@ { - "name": "@stdlib/assert/has-prototype", + "name": "@stdlib/assert/is-prototype-of", "version": "0.0.0", "description": "Test if an object's prototype chain contains a provided prototype.", "license": "Apache-2.0", @@ -66,6 +66,7 @@ "inheritance", "instanceof", "instance", + "isprototypeof", "super", "parent", "test", diff --git a/lib/node_modules/@stdlib/assert/has-prototype/test/test.js b/lib/node_modules/@stdlib/assert/is-prototype-of/test/test.js similarity index 87% rename from lib/node_modules/@stdlib/assert/has-prototype/test/test.js rename to lib/node_modules/@stdlib/assert/is-prototype-of/test/test.js index e77833e60ca2..a837c502f43e 100644 --- a/lib/node_modules/@stdlib/assert/has-prototype/test/test.js +++ b/lib/node_modules/@stdlib/assert/is-prototype-of/test/test.js @@ -23,14 +23,14 @@ var tape = require( 'tape' ); var inherit = require( '@stdlib/utils/inherit' ); var Number = require( '@stdlib/number/ctor' ); -var hasPrototype = require( './../lib' ); +var isPrototypeOf = require( './../lib' ); // eslint-disable-line stdlib/no-redeclare // TESTS // tape( 'main export is a function', function test( t ) { t.ok( true, __filename ); - t.equal( typeof hasPrototype, 'function', 'main export is a function' ); + t.equal( typeof isPrototypeOf, 'function', 'main export is a function' ); t.end(); }); @@ -54,7 +54,7 @@ tape( 'the function throws an error if a prototype argument which is neither an function badValue( value ) { return function badValue() { - hasPrototype( {}, value ); + isPrototypeOf( {}, value ); }; } }); @@ -71,10 +71,10 @@ tape( 'the function returns `false` if provided a test value which is neither an true, false, null, - undefined + void 0 ]; for ( i = 0; i < values.length; i++ ) { - bool = hasPrototype( values[i], {} ); + bool = isPrototypeOf( values[i], {} ); t.strictEqual( bool, false, 'returns false when provided '+values[i] ); } t.end(); @@ -94,7 +94,7 @@ tape( 'the function returns `true` if a provided prototype is part of a value\'s inherit( Bar, Foo ); bar = new Bar(); - bool = hasPrototype( bar, Foo.prototype ); + bool = isPrototypeOf( bar, Foo.prototype ); t.strictEqual( bool, true, 'returns true' ); t.strictEqual( bar instanceof Bar, true, 'is instance of Bar' ); @@ -115,7 +115,7 @@ tape( 'the function returns `false` if a provided prototype is not part of a val } bar = new Bar(); - bool = hasPrototype( bar, Foo.prototype ); + bool = isPrototypeOf( bar, Foo.prototype ); t.strictEqual( bool, false, 'returns false' ); t.strictEqual( bar instanceof Bar, true, 'is instance of Bar' ); @@ -145,7 +145,7 @@ tape( 'the function supports situations where constructors are never used', func t.throws( isInstance, TypeError, 'throws type error if using `instanceof`' ); - bool = hasPrototype( v, superProto ); + bool = isPrototypeOf( v, superProto ); t.strictEqual( bool, true, 'returns true' ); t.end(); @@ -159,13 +159,13 @@ tape( 'the function supports situations where constructors are never used', func tape( 'the function returns `false` if provided primitives and their corresponding object constructors', function test( t ) { var bool; - bool = hasPrototype( true, Boolean.prototype ); + bool = isPrototypeOf( true, Boolean.prototype ); t.strictEqual( bool, false, 'returns false' ); - bool = hasPrototype( 'beep', String.prototype ); + bool = isPrototypeOf( 'beep', String.prototype ); t.strictEqual( bool, false, 'returns false' ); - bool = hasPrototype( 5, Number.prototype ); + bool = isPrototypeOf( 5, Number.prototype ); t.strictEqual( bool, false, 'returns false' ); t.end(); diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/g.js b/lib/node_modules/@stdlib/namespace/lib/namespace/g.js index 1f27b0464dec..7d1341e4581d 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/g.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/g.js @@ -91,7 +91,7 @@ ns.push({ 'value': require( '@stdlib/utils/get-prototype-of' ), 'type': 'Function', 'related': [ - '@stdlib/assert/has-prototype' + '@stdlib/assert/is-prototype-of' ] }); diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/h.js b/lib/node_modules/@stdlib/namespace/lib/namespace/h.js index e25eb53c9263..4fb7a445dd9d 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/h.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/h.js @@ -202,16 +202,6 @@ ns.push({ ] }); -ns.push({ - 'alias': 'hasPrototype', - 'path': '@stdlib/assert/has-prototype', - 'value': require( '@stdlib/assert/has-prototype' ), - 'type': 'Function', - 'related': [ - '@stdlib/utils/get-prototype-of' - ] -}); - ns.push({ 'alias': 'hasProxySupport', 'path': '@stdlib/assert/has-proxy-support', diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 4435834b37d1..9337321fce59 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -1476,7 +1476,7 @@ ns.push({ 'value': require( '@stdlib/assert/instance-of' ), 'type': 'Function', 'related': [ - '@stdlib/assert/has-prototype', + '@stdlib/assert/is-prototype-of', '@stdlib/utils/constructor-name', '@stdlib/utils/inherit', '@stdlib/utils/type-of' @@ -3008,6 +3008,16 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isPrototypeOf', + 'path': '@stdlib/assert/is-prototype-of', + 'value': require( '@stdlib/assert/is-prototype-of' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/get-prototype-of' + ] +}); + ns.push({ 'alias': 'isRangeError', 'path': '@stdlib/assert/is-range-error', diff --git a/lib/node_modules/@stdlib/utils/inherit/test/test.js b/lib/node_modules/@stdlib/utils/inherit/test/test.js index 1c644f6f80bc..11071e1bf0f0 100644 --- a/lib/node_modules/@stdlib/utils/inherit/test/test.js +++ b/lib/node_modules/@stdlib/utils/inherit/test/test.js @@ -21,7 +21,7 @@ // MODULES // var tape = require( 'tape' ); -var hasPrototype = require( '@stdlib/assert/has-prototype' ); +var hasPrototype = require( '@stdlib/assert/is-prototype-of' ); var inherit = require( './../lib' ); From 6d7e769fd33b150dd816396307add89bd781bac4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 12 Sep 2018 16:04:24 -0700 Subject: [PATCH 0290/1062] Update REPL help --- lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 2 +- lib/node_modules/@stdlib/repl/help/lib/db.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index be0e2c5725df..480b92a3e301 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -973,7 +973,6 @@ var db = { "hasNodeBufferSupport": "bool = hasNodeBufferSupport()\n", "hasOwnProp": "beep = { 'boop': true };\nbool = hasOwnProp( beep, 'boop' )\nbool = hasOwnProp( beep, 'bop' )\n", "hasProp": "beep = { 'boop': true };\nbool = hasProp( beep, 'boop' )\nbool = hasProp( beep, 'toString' )\nbool = hasProp( beep, 'bop' )\n", - "hasPrototype": "function Foo() { return this; };\nfunction Bar() { return this; };\ninherit( Bar, Foo );\nbar = new Bar();\nbool = hasPrototype( bar, Foo.prototype )\n", "hasProxySupport": "bool = hasProxySupport()\n", "hasSetSupport": "bool = hasSetSupport()\n", "hasSharedArrayBufferSupport": "bool = hasSharedArrayBufferSupport()\n", @@ -1253,6 +1252,7 @@ var db = { "isPrimitiveArray": "bool = isPrimitiveArray( [ '3', 2, null ] )\nbool = isPrimitiveArray( [ {}, 2, 1 ] )\nbool = isPrimitiveArray( [ new String('abc'), '3.0' ] )\n", "isProbability": "bool = isProbability( 0.5 )\nbool = isProbability( new Number( 0.5 ) )\nbool = isProbability( 3.14 )\nbool = isProbability( -5.0 )\nbool = isProbability( null )\n", "isProbabilityArray": "bool = isProbabilityArray( [ 0.5, new Number(0.8) ] )\nbool = isProbabilityArray( [ 0.8, 1.2 ] )\nbool = isProbabilityArray( [ 0.8, '0.2' ] )\n", + "isPrototypeOf": "function Foo() { return this; };\nfunction Bar() { return this; };\ninherit( Bar, Foo );\nbar = new Bar();\nbool = isPrototypeOf( bar, Foo.prototype )\n", "isRangeError": "bool = isRangeError( new RangeError( 'beep' ) )\nbool = isRangeError( {} )\n", "isReadableProperty": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadableProperty( obj, 'boop' )\nbool = isReadableProperty( obj, 'beep' )\n", "isReadablePropertyIn": "obj = { 'boop': true };\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.set = function setter( v ) { obj.boop = v; };\ndefineProperty( obj, 'beep', desc );\nbool = isReadablePropertyIn( obj, 'boop' )\nbool = isReadablePropertyIn( obj, 'beep' )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index f823b85c116a..c2780217228d 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -946,7 +946,7 @@ var db = { "geteuid": "\ngeteuid()\n Returns the effective numeric user identity of the calling process.\n\n The function only returns an effective user identity on POSIX platforms. For\n all other platforms (e.g., Windows and Android), the function returns\n `null`.\n\n Returns\n -------\n id: integer|null\n Effective numeric user identity.\n\n Examples\n --------\n > var uid = geteuid()\n\n See Also\n --------\n getegid, getgid, getuid\n", "getgid": "\ngetgid()\n Returns the numeric group identity of the calling process.\n\n The function only returns a group identity on POSIX platforms. For all other\n platforms (e.g., Windows and Android), the function returns `null`.\n\n Returns\n -------\n id: integer|null\n Numeric group identity.\n\n Examples\n --------\n > var gid = getgid()\n\n See Also\n --------\n getegid, geteuid, getuid\n", "getGlobal": "\ngetGlobal( [codegen] )\n Returns the global object.\n\n Parameters\n ----------\n codegen: boolean (optional)\n Boolean indicating whether to use code generation to resolve the global\n object. Code generation is the *most* reliable means for resolving the\n global object; however, using code generation may violate content\n security policies (CSPs). Default: false.\n\n Returns\n -------\n global: Object\n Global object.\n\n Examples\n --------\n > var g = getGlobal()\n {...}\n\n", - "getPrototypeOf": "\ngetPrototypeOf( value )\n Returns the prototype of a provided object.\n\n In contrast to the native `Object.getPrototypeOf`, this function does not\n throw when provided `null` or `undefined`. Instead, similar to when provided\n any value with *no* inherited properties, the function returns `null`.\n\n Value arguments other than `null` or `undefined` are coerced to objects.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n out: Object|null\n Prototype.\n\n Examples\n --------\n > var proto = getPrototypeOf( {} )\n {}\n\n See Also\n --------\n hasPrototype\n", + "getPrototypeOf": "\ngetPrototypeOf( value )\n Returns the prototype of a provided object.\n\n In contrast to the native `Object.getPrototypeOf`, this function does not\n throw when provided `null` or `undefined`. Instead, similar to when provided\n any value with *no* inherited properties, the function returns `null`.\n\n Value arguments other than `null` or `undefined` are coerced to objects.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n out: Object|null\n Prototype.\n\n Examples\n --------\n > var proto = getPrototypeOf( {} )\n {}\n\n See Also\n --------\n isPrototypeOf\n", "getuid": "\ngetuid()\n Returns the numeric user identity of the calling process.\n\n The function only returns a user identity on POSIX platforms. For all other\n platforms (e.g., Windows and Android), the function returns `null`.\n\n Returns\n -------\n id: integer|null\n Numeric user identity.\n\n Examples\n --------\n > var uid = getuid()\n\n See Also\n --------\n getegid, geteuid, getgid\n", "GLAISHER": "\nGLAISHER\n Glaisher-Kinkelin constant.\n\n Examples\n --------\n > GLAISHER\n 1.2824271291006226\n\n", "group": "\ngroup( collection, [options,] groups )\n Groups values as arrays associated with distinct keys.\n\n If provided an empty collection, the function returns an empty object.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection to group. If provided an object, the object must be\n array-like (excluding strings and functions).\n\n options: Object (optional)\n Options.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n groups: Array|TypedArray|Object\n A collection defining which group an element in the input collection\n belongs to. Each value in `groups` should resolve to a value which can\n be serialized as an object key. If provided an object, the object must\n be array-like (excluding strings and functions).\n\n Returns\n -------\n out: Object\n Group results.\n\n Examples\n --------\n > var collection = [ 'beep', 'boop', 'foo', 'bar' ];\n > var groups = [ 'b', 'b', 'f', 'b' ];\n > var out = group( collection, groups )\n { 'b': [ 'beep', 'boop', 'bar' ], 'f': [ 'foo' ] }\n > groups = [ 1, 1, 2, 1 ];\n > out = group( collection, groups )\n { '1': [ 'beep', 'boop', 'bar' ], '2': [ 'foo' ] }\n\n // Output group results as indices:\n > groups = [ 'b', 'b', 'f', 'b' ];\n > var opts = { 'returns': 'indices' };\n > out = group( collection, opts, groups )\n { '1': [ 0, 1, 3 ], '2': [ 2 ] }\n\n // Output group results as index-element pairs:\n > opts = { 'returns': '*' };\n > out = group( collection, opts, groups )\n { '1': [ [0, 'beep'], [1, 'boop'], [3, 'bar'] ], '2': [ [2, 'foo'] ] }\n\n See Also\n --------\n bifurcate, countBy, groupBy\n", @@ -973,7 +973,6 @@ var db = { "hasNodeBufferSupport": "\nhasNodeBufferSupport()\n Tests for native `Buffer` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has `Buffer` support.\n\n Examples\n --------\n > var bool = hasNodeBufferSupport()\n \n\n", "hasOwnProp": "\nhasOwnProp( value, property )\n Tests if an object has a specified property.\n\n In contrast to the native `Object.prototype.hasOwnProperty`, this function\n does not throw when provided `null` or `undefined`. Instead, the function\n returns `false`.\n\n Value arguments other than `null` or `undefined` are coerced to objects.\n\n Property arguments are coerced to strings.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object has a specified property.\n\n Examples\n --------\n > var beep = { 'boop': true };\n > var bool = hasOwnProp( beep, 'boop' )\n true\n > bool = hasOwnProp( beep, 'bop' )\n false\n\n See Also\n --------\n hasProp\n", "hasProp": "\nhasProp( value, property )\n Tests if an object has a specified property, either own or inherited.\n\n Value arguments other than `null` or `undefined` are coerced to objects.\n\n Non-symbol property arguments are coerced to strings.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object has a specified property.\n\n Examples\n --------\n > var beep = { 'boop': true };\n > var bool = hasProp( beep, 'boop' )\n true\n > bool = hasProp( beep, 'toString' )\n true\n > bool = hasProp( beep, 'bop' )\n false\n\n See Also\n --------\n hasOwnProp\n", - "hasPrototype": "\nhasPrototype( value, proto )\n Tests if an object's prototype chain contains a provided prototype.\n\n The function returns `false` if provided a primitive value.\n\n This function is generally more robust than the `instanceof` operator (e.g.,\n where inheritance is performed without using constructors).\n\n Parameters\n ----------\n value: any\n Input value.\n\n proto: Object|Function\n Prototype.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a provided prototype exists in a prototype chain.\n\n Examples\n --------\n > function Foo() { return this; };\n > function Bar() { return this; };\n > inherit( Bar, Foo );\n > var bar = new Bar();\n > var bool = hasPrototype( bar, Foo.prototype )\n true\n\n See Also\n --------\n getPrototypeOf\n", "hasProxySupport": "\nhasProxySupport()\n Tests whether an environment has native `Proxy` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has native `Proxy` support.\n\n Examples\n --------\n > var bool = hasProxySupport()\n \n\n", "hasSetSupport": "\nhasSetSupport()\n Tests for native `Set` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has native `Set` support.\n\n Examples\n --------\n > var bool = hasSetSupport()\n \n\n", "hasSharedArrayBufferSupport": "\nhasSharedArrayBufferSupport()\n Tests for native `SharedArrayBuffer` support.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an environment has `SharedArrayBuffer` support.\n\n Examples\n --------\n > var bool = hasSharedArrayBufferSupport()\n \n\n See Also\n --------\n hasArrayBufferSupport, hasFloat32ArraySupport, hasFloat64ArraySupport, hasInt16ArraySupport, hasInt32ArraySupport, hasInt8ArraySupport, hasNodeBufferSupport, hasUint16ArraySupport, hasUint32ArraySupport, hasUint8ArraySupport, hasUint8ClampedArraySupport\n", @@ -1109,7 +1108,7 @@ var db = { "inmapAsync": "\ninmapAsync( collection, [options,] fcn, done )\n Invokes a function once for each element in a collection and updates a\n collection in-place.\n\n When invoked, `fcn` is provided a maximum of four arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If `fcn`\n accepts two arguments, `fcn` is provided:\n\n - `value`\n - `next`\n\n If `fcn` accepts three arguments, `fcn` is provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other `fcn` signature, `fcn` is provided all four arguments.\n\n The `next` callback accepts two arguments:\n\n - `error`: error argument\n - `result`: value used to update the collection\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling. Note, however, that the function\n may have mutated an input collection during prior invocations, resulting in\n a partially mutated collection.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > inmapAsync( arr, fcn, done )\n 1000\n 2500\n 3000\n true\n [ 0, 2500, 2000 ]\n\n // Limit number of concurrent invocations:\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > inmapAsync( arr, opts, fcn, done )\n 2500\n 3000\n 1000\n true\n [ 0, 2500, 2000 ]\n\n // Process sequentially:\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > inmapAsync( arr, opts, fcn, done )\n 3000\n 2500\n 1000\n true\n [ 0, 2500, 2000 ]\n\n\ninmapAsync.factory( [options,] fcn )\n Returns a function which invokes a function once for each element in a\n collection and updates a collection in-place.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which invokes a function for each element in a collection.\n\n Examples\n --------\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = inmapAsync.factory( opts, fcn );\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n [ 0, 2500, 2000 ]\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n [ 0, 1500, 2000 ]\n\n See Also\n --------\n forEachAsync, inmap, inmapRightAsync\n", "inmapRight": "\ninmapRight( collection, fcn[, thisArg] )\n Invokes a function for each element in a collection and updates the\n collection in-place, iterating from right to left.\n\n When invoked, the input function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection. If provided an object, the object must be array-like\n (excluding strings and functions).\n\n fcn: Function\n Function to invoke for each element in the input collection. The\n function's return value is used to update the collection in-place.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function foo( v, i ) { console.log( '%s: %d', i, v ); return v * i; };\n > var arr = [ 1.0, 2.0, 3.0 ];\n > var out = inmapRight( arr, foo )\n 2: 3.0\n 1: 2.0\n 0: 1.0\n [ 0.0, 2.0, 6.0 ]\n > var bool = ( out === arr )\n true\n\n See Also\n --------\n forEachRight, inmap\n", "inmapRightAsync": "\ninmapRightAsync( collection, [options,] fcn, done )\n Invokes a function once for each element in a collection and updates a\n collection in-place, iterating from right to left.\n\n When invoked, `fcn` is provided a maximum of four arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If `fcn`\n accepts two arguments, `fcn` is provided:\n\n - `value`\n - `next`\n\n If `fcn` accepts three arguments, `fcn` is provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other `fcn` signature, `fcn` is provided all four arguments.\n\n The `next` callback accepts two arguments:\n\n - `error`: error argument\n - `result`: value used to update the collection\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling. Note, however, that the function\n may have mutated an input collection during prior invocations, resulting in\n a partially mutated collection.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > inmapRightAsync( arr, fcn, done )\n 1000\n 2500\n 3000\n true\n [ 0, 2500, 6000 ]\n\n // Limit number of concurrent invocations:\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > inmapRightAsync( arr, opts, fcn, done )\n 2500\n 3000\n 1000\n true\n [ 0, 2500, 6000 ]\n\n // Process sequentially:\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 1000, 2500, 3000 ];\n > inmapRightAsync( arr, opts, fcn, done )\n 3000\n 2500\n 1000\n true\n [ 0, 2500, 6000 ]\n\n\ninmapRightAsync.factory( [options,] fcn )\n Returns a function which invokes a function once for each element in a\n collection and updates a collection in-place, iterating from right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which invokes a function for each element in a collection.\n\n Examples\n --------\n > function fcn( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, value*index );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = inmapRightAsync.factory( opts, fcn );\n > function done( error, collection ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( collection === arr );\n ... console.log( collection );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n [ 0, 2500, 6000 ]\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n [ 0, 1500, 4000 ]\n\n See Also\n --------\n forEachRightAsync, inmapAsync, inmapRight\n", - "instanceOf": "\ninstanceOf( value, constructor )\n Tests whether a value has in its prototype chain a specified constructor as\n a prototype property.\n\n While the prototype of an `object` created using object literal notion is\n `undefined`, the function returns `true` when provided an `object` literal\n and the `Object` constructor. This maintains consistent behavior with the\n `instanceof` operator.\n\n Parameters\n ----------\n value: any\n Input value.\n\n constructor: Function\n Constructor.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is an instance of a provided constructor.\n\n Examples\n --------\n > var bool = instanceOf( [], Array )\n true\n > bool = instanceOf( {}, Object )\n true\n > bool = instanceOf( null, Object )\n false\n\n See Also\n --------\n hasPrototype, constructorName, inherit, typeOf\n", + "instanceOf": "\ninstanceOf( value, constructor )\n Tests whether a value has in its prototype chain a specified constructor as\n a prototype property.\n\n While the prototype of an `object` created using object literal notion is\n `undefined`, the function returns `true` when provided an `object` literal\n and the `Object` constructor. This maintains consistent behavior with the\n `instanceof` operator.\n\n Parameters\n ----------\n value: any\n Input value.\n\n constructor: Function\n Constructor.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a value is an instance of a provided constructor.\n\n Examples\n --------\n > var bool = instanceOf( [], Array )\n true\n > bool = instanceOf( {}, Object )\n true\n > bool = instanceOf( null, Object )\n false\n\n See Also\n --------\n isPrototypeOf, constructorName, inherit, typeOf\n", "INT8_MAX": "\nINT8_MAX\n Maximum signed 8-bit integer.\n\n The maximum signed 8-bit integer is given by `2^7 - 1`.\n\n Examples\n --------\n > INT8_MAX\n 127\n\n See Also\n --------\n INT8_MIN\n", "INT8_MIN": "\nINT8_MIN\n Minimum signed 8-bit integer.\n\n The minimum signed 8-bit integer is given by `-(2^7)`.\n\n Examples\n --------\n > INT8_MIN\n -128\n\n See Also\n --------\n INT8_MAX\n", "INT8_NUM_BYTES": "\nINT8_NUM_BYTES\n Size (in bytes) of an 8-bit signed integer.\n\n Examples\n --------\n > INT8_NUM_BYTES\n 1\n\n See Also\n --------\n INT16_NUM_BYTES, INT32_NUM_BYTES, UINT8_NUM_BYTES\n", @@ -1253,6 +1252,7 @@ var db = { "isPrimitiveArray": "\nisPrimitiveArray( value )\n Tests if a value is an array-like object containing only JavaScript\n primitives.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n JavaScript primitives.\n\n Examples\n --------\n > var bool = isPrimitiveArray( [ '3', 2, null ] )\n true\n > bool = isPrimitiveArray( [ {}, 2, 1 ] )\n false\n > bool = isPrimitiveArray( [ new String('abc'), '3.0' ] )\n false\n\n See Also\n --------\n isArray, isPrimitive\n", "isProbability": "\nisProbability( value )\n Tests if a value is a probability.\n\n A probability is defined as a numeric value on the interval [0,1].\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a probability.\n\n Examples\n --------\n > var bool = isProbability( 0.5 )\n true\n > bool = isProbability( new Number( 0.5 ) )\n true\n > bool = isProbability( 3.14 )\n false\n > bool = isProbability( -5.0 )\n false\n > bool = isProbability( null )\n false\n\n\nisProbability.isPrimitive( value )\n Tests if a value is a number primitive which is a probability.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive which is a\n probability.\n\n Examples\n --------\n > var bool = isProbability.isPrimitive( 0.3 )\n true\n > bool = isProbability.isPrimitive( new Number( 0.3 ) )\n false\n\n\nisProbability.isObject( value )\n Tests if a value is a number object having a value which is a probability.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object having a value which\n is a probability.\n\n Examples\n --------\n > var bool = isProbability.isObject( 0.77 )\n false\n > bool = isProbability.isObject( new Number( 0.77 ) )\n true\n\n\n See Also\n --------\n isNumber\n", "isProbabilityArray": "\nisProbabilityArray( value )\n Tests if a value is an array-like object containing only probabilities.\n\n A probability is defined as a numeric value on the interval [0,1].\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n probabilities.\n\n Examples\n --------\n > var bool = isProbabilityArray( [ 0.5, new Number(0.8) ] )\n true\n > bool = isProbabilityArray( [ 0.8, 1.2 ] )\n false\n > bool = isProbabilityArray( [ 0.8, '0.2' ] )\n false\n\n\nisProbabilityArray.primitives( value )\n Tests if a value is an array-like object containing only primitive\n probabilities.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n primitive probabilities.\n\n Examples\n --------\n > var bool = isProbabilityArray.primitives( [ 1.0, 0.0, 0.5 ] )\n true\n > bool = isProbabilityArray.primitives( [ 0.3, new Number(0.4) ] )\n false\n\n\nisProbabilityArray.objects( value )\n Tests if a value is an array-like object containing only number objects\n having probability values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n number objects having probability values.\n\n Examples\n --------\n > var bool = isProbabilityArray.objects( [ new Number(0.7), new Number(1.0) ] )\n true\n > bool = isProbabilityArray.objects( [ 1.0, 0.0, new Number(0.7) ] )\n false\n\n See Also\n --------\n isArray, isProbability\n", + "isPrototypeOf": "\nisPrototypeOf( value, proto )\n Tests if an object's prototype chain contains a provided prototype.\n\n The function returns `false` if provided a primitive value.\n\n This function is generally more robust than the `instanceof` operator (e.g.,\n where inheritance is performed without using constructors).\n\n Parameters\n ----------\n value: any\n Input value.\n\n proto: Object|Function\n Prototype.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if a provided prototype exists in a prototype chain.\n\n Examples\n --------\n > function Foo() { return this; };\n > function Bar() { return this; };\n > inherit( Bar, Foo );\n > var bar = new Bar();\n > var bool = isPrototypeOf( bar, Foo.prototype )\n true\n\n See Also\n --------\n getPrototypeOf\n", "isRangeError": "\nisRangeError( value )\n Tests if a value is a RangeError object.\n\n This function should *not* be considered robust. While the function should\n always return `true` if provided a RangeError (or a descendant) object,\n false positives may occur due to the fact that the RangeError constructor\n inherits from Error and has no internal class of its own. Hence, RangeError\n impersonation is possible.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a RangeError object.\n\n Examples\n --------\n > var bool = isRangeError( new RangeError( 'beep' ) )\n true\n > bool = isRangeError( {} )\n false\n\n See Also\n --------\n isError\n", "isReadableProperty": "\nisReadableProperty( value, property )\n Tests if an object's own property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadableProperty( obj, 'boop' )\n true\n > bool = isReadableProperty( obj, 'beep' )\n false\n\n See Also\n --------\n isReadOnlyProperty, isReadWriteProperty, isReadablePropertyIn, isWritableProperty\n", "isReadablePropertyIn": "\nisReadablePropertyIn( value, property )\n Tests if an object's own or inherited property is readable.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n property: any\n Property to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object's own or inherited property is readable.\n\n Examples\n --------\n > var obj = { 'boop': true };\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.set = function setter( v ) { obj.boop = v; };\n > defineProperty( obj, 'beep', desc );\n > var bool = isReadablePropertyIn( obj, 'boop' )\n true\n > bool = isReadablePropertyIn( obj, 'beep' )\n false\n\n See Also\n --------\n isReadOnlyPropertyIn, isReadWritePropertyIn, isReadableProperty, isWritablePropertyIn\n", From 99108a270d04261d3e5ae3e5734fae47f78cadea Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 12 Sep 2018 16:07:30 -0700 Subject: [PATCH 0291/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 9cef21833276..d6d53c36113e 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -216,15 +216,6 @@ setReadOnly( ns, 'hasOwnProp', require( '@stdlib/assert/has-own-property' ) ); */ setReadOnly( ns, 'hasProp', require( '@stdlib/assert/has-property' ) ); -/** -* @name hasPrototype -* @memberof ns -* @readonly -* @type {Function} -* @see {@link module:@stdlib/assert/has-prototype} -*/ -setReadOnly( ns, 'hasPrototype', require( '@stdlib/assert/has-prototype' ) ); - /** * @name hasProxySupport * @memberof ns @@ -1494,6 +1485,15 @@ setReadOnly( ns, 'isProbability', require( '@stdlib/assert/is-probability' ) ); */ setReadOnly( ns, 'isProbabilityArray', require( '@stdlib/assert/is-probability-array' ) ); +/** +* @name isPrototypeOf +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-prototype-of} +*/ +setReadOnly( ns, 'isPrototypeOf', require( '@stdlib/assert/is-prototype-of' ) ); + /** * @name isRangeError * @memberof ns From 1589484d51b2673f547ea544d993cea119a3c4ae Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 13 Sep 2018 11:58:19 -0700 Subject: [PATCH 0292/1062] Update doctest --- lib/node_modules/@stdlib/error/to-json/lib/to_json.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/error/to-json/lib/to_json.js b/lib/node_modules/@stdlib/error/to-json/lib/to_json.js index daa569067e7b..9fa5ba4ea559 100644 --- a/lib/node_modules/@stdlib/error/to-json/lib/to_json.js +++ b/lib/node_modules/@stdlib/error/to-json/lib/to_json.js @@ -38,7 +38,7 @@ var typeName = require( './type.js' ); * @example * var err = new Error( 'beep' ); * var json = toJSON( err ); -* // returns +* // returns {...} */ function toJSON( err ) { var keys; From 3c4d35a1762254eeea64c43ea10c37f77163f481 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 13 Sep 2018 11:59:53 -0700 Subject: [PATCH 0293/1062] Rename file --- lib/node_modules/@stdlib/error/to-json/lib/index.js | 2 +- .../@stdlib/error/to-json/lib/{to_json.js => main.js} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename lib/node_modules/@stdlib/error/to-json/lib/{to_json.js => main.js} (100%) diff --git a/lib/node_modules/@stdlib/error/to-json/lib/index.js b/lib/node_modules/@stdlib/error/to-json/lib/index.js index 10fb4098aaab..6baae9ce44a5 100644 --- a/lib/node_modules/@stdlib/error/to-json/lib/index.js +++ b/lib/node_modules/@stdlib/error/to-json/lib/index.js @@ -33,7 +33,7 @@ // MODULES // -var toJSON = require( './to_json.js' ); +var toJSON = require( './main.js' ); // EXPORTS // diff --git a/lib/node_modules/@stdlib/error/to-json/lib/to_json.js b/lib/node_modules/@stdlib/error/to-json/lib/main.js similarity index 100% rename from lib/node_modules/@stdlib/error/to-json/lib/to_json.js rename to lib/node_modules/@stdlib/error/to-json/lib/main.js From 46f56869aad3aea804756cc61ec9a7cbe45c548f Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 13 Sep 2018 12:16:40 -0700 Subject: [PATCH 0294/1062] Rename package --- .../@stdlib/namespace/lib/namespace/i.js | 14 ++++++++++++++ .../@stdlib/namespace/lib/namespace/n.js | 18 ++---------------- .../@stdlib/repl/code-blocks/lib/db.js | 2 +- lib/node_modules/@stdlib/repl/help/lib/db.js | 6 +++--- .../README.md | 14 +++++++------- .../benchmark/benchmark.js | 4 ++-- .../docs/repl.txt | 0 .../examples/index.js | 4 ++-- .../lib/index.js | 6 +++--- .../lib/main.js | 6 +++--- .../package.json | 2 +- .../test/test.js | 14 +++++++------- lib/node_modules/@stdlib/utils/lib/index.js | 18 +++++++++--------- 13 files changed, 54 insertions(+), 54 deletions(-) rename lib/node_modules/@stdlib/utils/{nonenumerable-inherited-property-names => inherited-nonenumerable-property-names}/README.md (86%) rename lib/node_modules/@stdlib/utils/{nonenumerable-inherited-property-names => inherited-nonenumerable-property-names}/benchmark/benchmark.js (93%) rename lib/node_modules/@stdlib/utils/{nonenumerable-inherited-property-names => inherited-nonenumerable-property-names}/docs/repl.txt (100%) rename lib/node_modules/@stdlib/utils/{nonenumerable-inherited-property-names => inherited-nonenumerable-property-names}/examples/index.js (90%) rename lib/node_modules/@stdlib/utils/{nonenumerable-inherited-property-names => inherited-nonenumerable-property-names}/lib/index.js (78%) rename lib/node_modules/@stdlib/utils/{nonenumerable-inherited-property-names => inherited-nonenumerable-property-names}/lib/main.js (93%) rename lib/node_modules/@stdlib/utils/{nonenumerable-inherited-property-names => inherited-nonenumerable-property-names}/package.json (95%) rename lib/node_modules/@stdlib/utils/{nonenumerable-inherited-property-names => inherited-nonenumerable-property-names}/test/test.js (92%) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 9337321fce59..b30cae9adae6 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -1363,6 +1363,20 @@ ns.push({ ] }); +ns.push({ + 'alias': 'inheritedNonEnumerablePropertyNames', + 'path': '@stdlib/utils/inherited-nonenumerable-property-names', + 'value': require( '@stdlib/utils/inherited-nonenumerable-property-names' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/keys', + '@stdlib/utils/nonenumerable-property-names', + '@stdlib/utils/nonenumerable-property-names-in', + '@stdlib/utils/nonenumerable-property-symbols', + '@stdlib/utils/property-names' + ] +}); + ns.push({ 'alias': 'inheritedPropertyDescriptor', 'path': '@stdlib/utils/inherited-property-descriptor', diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js index 0416ac499f85..a8a9b7a2f461 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js @@ -264,20 +264,6 @@ ns.push({ ] }); -ns.push({ - 'alias': 'nonEnumerableInheritedPropertyNames', - 'path': '@stdlib/utils/nonenumerable-inherited-property-names', - 'value': require( '@stdlib/utils/nonenumerable-inherited-property-names' ), - 'type': 'Function', - 'related': [ - '@stdlib/utils/keys', - '@stdlib/utils/nonenumerable-property-names', - '@stdlib/utils/nonenumerable-property-names-in', - '@stdlib/utils/nonenumerable-property-symbols', - '@stdlib/utils/property-names' - ] -}); - ns.push({ 'alias': 'nonEnumerablePropertyNames', 'path': '@stdlib/utils/nonenumerable-property-names', @@ -285,7 +271,7 @@ ns.push({ 'type': 'Function', 'related': [ '@stdlib/utils/keys', - '@stdlib/utils/nonenumerable-inherited-property-names', + '@stdlib/utils/inherited-nonenumerable-property-names', '@stdlib/utils/nonenumerable-property-names-in', '@stdlib/utils/nonenumerable-property-symbols-in', '@stdlib/utils/property-names' @@ -299,7 +285,7 @@ ns.push({ 'type': 'Function', 'related': [ '@stdlib/utils/keys-in', - '@stdlib/utils/nonenumerable-inherited-property-names', + '@stdlib/utils/inherited-nonenumerable-property-names', '@stdlib/utils/nonenumerable-property-names', '@stdlib/utils/property-names-in' ] diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 480b92a3e301..01cf9f5d1adf 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1100,6 +1100,7 @@ var db = { "indexOf": "\n// Basic usage:\narr = [ 4, 3, 2, 1 ];\nidx = indexOf( arr, 3 )\narr = [ 4, 3, 2, 1 ];\nidx = indexOf( arr, 5 )\n\n// Using a `fromIndex`:\narr = [ 1, 2, 3, 4, 5, 2, 6 ];\nidx = indexOf( arr, 2, 3 )\n\n// `fromIndex` which exceeds `array` length:\narr = [ 1, 2, 3, 4, 2, 5 ];\nidx = indexOf( arr, 2, 10 )\n\n// Negative `fromIndex`:\narr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];\nidx = indexOf( arr, 2, -4 )\nidx = indexOf( arr, 2, -1 )\n\n// Negative `fromIndex` exceeding input `array` length:\narr = [ 1, 2, 3, 4, 5, 2, 6 ];\nidx = indexOf( arr, 2, -10 )\n\n// Array-like objects:\nstr = 'bebop';\nidx = indexOf( str, 'o' )\n", "inherit": "\n// Create a parent constructor:\nfunction Foo() { return this; };\nFoo.prototype.beep = function beep() { return 'boop'; };\n\n// Create a child constructor:\nfunction Bar() { Foo.call( this ); return this; };\n\n// Setup inheritance:\ninherit( Bar, Foo );\nbar = new Bar();\nv = bar.beep()\n", "inheritedKeys": "keys = inheritedKeys( {} )\n", + "inheritedNonEnumerablePropertyNames": "keys = inheritedNonEnumerablePropertyNames( {} )\n", "inheritedPropertyDescriptor": "desc = inheritedPropertyDescriptor( {}, 'toString' )\n", "inheritedPropertyDescriptors": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\ndesc = inheritedPropertyDescriptors( obj )\n", "inheritedPropertyNames": "keys = inheritedPropertyNames( [] )\n", @@ -1372,7 +1373,6 @@ var db = { "noneByAsync": "\n// Basic usage:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'series': true };\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, opts, predicate, done )\n", "noneByRight": "function positive( v ) { return ( v > 0 ); };\narr = [ -1, -2, -3, -4 ];\nbool = noneByRight( arr, positive )\n", "noneByRightAsync": "\n// Basic usage:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'limit': 2 };\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'series': true };\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, opts, predicate, done )\n", - "nonEnumerableInheritedPropertyNames": "keys = nonEnumerableInheritedPropertyNames( {} )\n", "nonEnumerablePropertyNames": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerablePropertyNames( obj )\n", "nonEnumerablePropertyNamesIn": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerablePropertyNamesIn( obj )\n", "nonEnumerablePropertySymbols": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\nsym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\ndefineProperty( obj, sym, desc );\nsymbols = nonEnumerablePropertySymbols( obj )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index c2780217228d..829cbf9b4374 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1100,6 +1100,7 @@ var db = { "indexOf": "\nindexOf( arr, searchElement[, fromIndex] )\n Returns the first index at which a given element can be found.\n\n Search is performed using *strict equality* comparison.\n\n Parameters\n ----------\n arr: ArrayLike\n Array-like object.\n\n searchElement: any\n Element to find.\n\n fromIndex: integer (optional)\n Starting index (if negative, the start index is determined relative to\n last element).\n\n Returns\n -------\n out: integer\n Index or -1.\n\n Examples\n --------\n // Basic usage:\n > var arr = [ 4, 3, 2, 1 ];\n > var idx = indexOf( arr, 3 )\n 1\n > arr = [ 4, 3, 2, 1 ];\n > idx = indexOf( arr, 5 )\n -1\n\n // Using a `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, 3 )\n 5\n\n // `fromIndex` which exceeds `array` length:\n > arr = [ 1, 2, 3, 4, 2, 5 ];\n > idx = indexOf( arr, 2, 10 )\n -1\n\n // Negative `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];\n > idx = indexOf( arr, 2, -4 )\n 5\n > idx = indexOf( arr, 2, -1 )\n 7\n\n // Negative `fromIndex` exceeding input `array` length:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, -10 )\n 1\n\n // Array-like objects:\n > var str = 'bebop';\n > idx = indexOf( str, 'o' )\n 3\n\n", "inherit": "\ninherit( ctor, superCtor )\n Prototypical inheritance by replacing the prototype of one constructor with\n the prototype of another constructor.\n\n This function is not designed to work with ES2015/ES6 classes. For\n ES2015/ES6 classes, use `class` with `extends`.\n\n Parameters\n ----------\n ctor: Object|Function\n Constructor which will inherit.\n\n superCtor: Object|Function\n Super (parent) constructor.\n\n Returns\n -------\n out: Object|Function\n Child constructor.\n\n Examples\n --------\n // Create a parent constructor:\n > function Foo() { return this; };\n > Foo.prototype.beep = function beep() { return 'boop'; };\n\n // Create a child constructor:\n > function Bar() { Foo.call( this ); return this; };\n\n // Setup inheritance:\n > inherit( Bar, Foo );\n > var bar = new Bar();\n > var v = bar.beep()\n 'boop'\n\n", "inheritedKeys": "\ninheritedKeys( value[, level] )\n Returns an array of an object's inherited enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable property names.\n\n Examples\n --------\n > var keys = inheritedKeys( {} )\n\n See Also\n --------\n objectKeys, keysIn, inheritedPropertyNames, inheritedPropertySymbols\n", + "inheritedNonEnumerablePropertyNames": "\ninheritedNonEnumerablePropertyNames( value[, level] )\n Returns an array of an object's inherited non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited non-enumerable property names.\n\n Examples\n --------\n > var keys = inheritedNonEnumerablePropertyNames( {} )\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertyNames\n", "inheritedPropertyDescriptor": "\ninheritedPropertyDescriptor( value, property[, level] )\n Returns a property descriptor for an object's inherited property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string|symbol\n Property name.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var desc = inheritedPropertyDescriptor( {}, 'toString' )\n {...}\n\n See Also\n --------\n propertyDescriptor, propertyDescriptorIn, inheritedKeys, inheritedPropertyDescriptors, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedPropertyDescriptors": "\ninheritedPropertyDescriptors( value[, level] )\n Returns an object's inherited property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n desc: Object\n An object's inherited property descriptors.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var desc = inheritedPropertyDescriptors( obj )\n { 'foo': {...}, ... }\n\n See Also\n --------\n propertyDescriptors, propertyDescriptorsIn, inheritedKeys, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedPropertyNames": "\ninheritedPropertyNames( value[, level] )\n Returns an array of an object's inherited enumerable and non-enumerable\n property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable and non-enumerable property\n names.\n\n Examples\n --------\n > var keys = inheritedPropertyNames( [] )\n\n See Also\n --------\n inheritedKeys, inheritedPropertyDescriptors, inheritedPropertySymbols, propertyNames, propertyNamesIn\n", @@ -1373,9 +1374,8 @@ var db = { "noneByAsync": "\nnoneByAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByAsync, everyByAsync, forEachAsync, noneBy, noneByRightAsync, someByAsync\n", "noneByRight": "\nnoneByRight( collection, predicate[, thisArg ] )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n The predicate function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n The function immediately returns upon encountering a truthy return value.\n\n If provided an empty collection, the function returns `true`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n predicate: Function\n The test function.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n bool: boolean\n The function returns `true` if the predicate function returns a falsy\n value for all elements; otherwise, the function returns `false`.\n\n Examples\n --------\n > function positive( v ) { return ( v > 0 ); };\n > var arr = [ -1, -2, -3, -4 ];\n > var bool = noneByRight( arr, positive )\n true\n\n See Also\n --------\n anyByRight, everyByRight, forEachRight, none, noneBy, someByRight\n", "noneByRightAsync": "\nnoneByRightAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByRightAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function, iterating from right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByRightAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByRightAsync, everyByRightAsync, forEachRightAsync, noneByAsync, noneByRight, someByRightAsync\n", - "nonEnumerableInheritedPropertyNames": "\nnonEnumerableInheritedPropertyNames( value[, level] )\n Returns an array of an object's inherited non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited non-enumerable property names.\n\n Examples\n --------\n > var keys = nonEnumerableInheritedPropertyNames( {} )\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertyNames\n", - "nonEnumerablePropertyNames": "\nnonEnumerablePropertyNames( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNames( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, nonEnumerableInheritedPropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbolsIn, propertyNames\n", - "nonEnumerablePropertyNamesIn": "\nnonEnumerablePropertyNamesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNamesIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, nonEnumerableInheritedPropertyNames, nonEnumerablePropertyNames, propertyNamesIn\n", + "nonEnumerablePropertyNames": "\nnonEnumerablePropertyNames( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNames( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbolsIn, propertyNames\n", + "nonEnumerablePropertyNamesIn": "\nnonEnumerablePropertyNamesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNamesIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNames, propertyNamesIn\n", "nonEnumerablePropertySymbols": "\nnonEnumerablePropertySymbols( value )\n Returns an array of an object's own non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbols( obj )\n\n See Also\n --------\n nonEnumerablePropertyNames, nonEnumerablePropertySymbolsIn, propertySymbols\n", "nonEnumerablePropertySymbolsIn": "\nnonEnumerablePropertySymbolsIn( value )\n Returns an array of an object's own and inherited non-enumerable symbol\n properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbolsIn( obj )\n\n See Also\n --------\n nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertySymbolsIn\n", "noop": "\nnoop()\n A function which does nothing.\n\n Examples\n --------\n > noop();\n\n", diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/README.md b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/README.md similarity index 86% rename from lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/README.md rename to lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/README.md index 5774474ef25b..308d2e084e18 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/README.md +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/README.md @@ -18,7 +18,7 @@ limitations under the License. --> -# nonEnumerableInheritedPropertyNames +# inheritedNonEnumerablePropertyNames > Return an array of an object's inherited non-enumerable property names. @@ -29,10 +29,10 @@ limitations under the License. ```javascript -var nonEnumerableInheritedPropertyNames = require( '@stdlib/utils/nonenumerable-inherited-property-names' ); +var inheritedNonEnumerablePropertyNames = require( '@stdlib/utils/inherited-nonenumerable-property-names' ); ``` -#### nonEnumerableInheritedPropertyNames( obj\[, level] ) +#### inheritedNonEnumerablePropertyNames( obj\[, level] ) Returns an `array` of an object's inherited non-enumerable property names. @@ -52,7 +52,7 @@ defineProperty( Foo.prototype, 'beep', { }); var f = new Foo(); -var keys = nonEnumerableInheritedPropertyNames( f ); +var keys = inheritedNonEnumerablePropertyNames( f ); // e.g., returns [ 'beep', ... ] ``` @@ -89,7 +89,7 @@ defineProperty( Foo.prototype, 'beep', { }); var f = new Foo(); -var keys = nonEnumerableInheritedPropertyNames( f, 1 ); +var keys = inheritedNonEnumerablePropertyNames( f, 1 ); // e.g., returns [ 'beep', ... ] ``` @@ -117,7 +117,7 @@ var keys = nonEnumerableInheritedPropertyNames( f, 1 ); ```javascript var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerableInheritedPropertyNames = require( '@stdlib/utils/nonenumerable-inherited-property-names' ); +var inheritedNonEnumerablePropertyNames = require( '@stdlib/utils/inherited-nonenumerable-property-names' ); function Foo() { this.beep = 'boop'; @@ -142,7 +142,7 @@ defineProperty( Foo.prototype, 'bip', { }); var obj = new Foo(); -var keys = nonEnumerableInheritedPropertyNames( obj ); +var keys = inheritedNonEnumerablePropertyNames( obj ); console.log( keys ); // e.g., => [ 'bip', ... ] diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/benchmark/benchmark.js similarity index 93% rename from lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/benchmark/benchmark.js rename to lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/benchmark/benchmark.js index bfa21a542203..8fdd872a6882 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/benchmark/benchmark.js @@ -25,7 +25,7 @@ var isArray = require( '@stdlib/assert/is-array' ); var randu = require( '@stdlib/random/base/randu' ); var defineProperty = require( '@stdlib/utils/define-property' ); var pkg = require( './../package.json' ).name; -var nonEnumerableInheritedPropertyNames = require( './../lib' ); // eslint-disable-line id-length +var inheritedNonEnumerablePropertyNames = require( './../lib' ); // eslint-disable-line id-length // MAIN // @@ -58,7 +58,7 @@ bench( pkg, function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { obj.f = randu(); - out = nonEnumerableInheritedPropertyNames( obj ); + out = inheritedNonEnumerablePropertyNames( obj ); if ( !isArray( out ) ) { b.fail( 'should return an array' ); } diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/docs/repl.txt b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/docs/repl.txt similarity index 100% rename from lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/docs/repl.txt rename to lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/docs/repl.txt diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/examples/index.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/examples/index.js similarity index 90% rename from lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/examples/index.js rename to lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/examples/index.js index 576034a0ab83..75998cf4a7f0 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/examples/index.js +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/examples/index.js @@ -19,7 +19,7 @@ 'use strict'; var defineProperty = require( '@stdlib/utils/define-property' ); -var nonEnumerableInheritedPropertyNames = require( './../lib' ); // eslint-disable-line id-length +var inheritedNonEnumerablePropertyNames = require( './../lib' ); // eslint-disable-line id-length function Foo() { this.beep = 'boop'; @@ -44,7 +44,7 @@ defineProperty( Foo.prototype, 'bip', { }); var obj = new Foo(); -var keys = nonEnumerableInheritedPropertyNames( obj ); +var keys = inheritedNonEnumerablePropertyNames( obj ); console.log( keys ); // e.g., => [ 'bip', ... ] diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/lib/index.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/lib/index.js similarity index 78% rename from lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/lib/index.js rename to lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/lib/index.js index f35d8f60258b..70b79833755c 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/lib/index.js +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/lib/index.js @@ -21,12 +21,12 @@ /** * Return an array of an object's inherited non-enumerable property names. * -* @module @stdlib/utils/nonenumerable-inherited-property-names +* @module @stdlib/utils/inherited-nonenumerable-property-names * * @example -* var nonEnumerableInheritedPropertyNames = require( '@stdlib/utils/nonenumerable-inherited-property-names' ); +* var inheritedNonEnumerablePropertyNames = require( '@stdlib/utils/inherited-nonenumerable-property-names' ); * -* var keys = nonEnumerableInheritedPropertyNames( [] ); +* var keys = inheritedNonEnumerablePropertyNames( [] ); */ // MODULES // diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/lib/main.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/lib/main.js similarity index 93% rename from lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/lib/main.js rename to lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/lib/main.js index 0a42a74b8fa3..5a7c6a267e07 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/lib/main.js +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/lib/main.js @@ -59,9 +59,9 @@ function contains( arr, v ) { * @returns {Array} a list of inherited non-enumerable property names * * @example -* var keys = nonEnumerableInheritedPropertyNames( {} ); +* var keys = inheritedNonEnumerablePropertyNames( {} ); */ -function nonEnumerableInheritedPropertyNames( value, level ) { // eslint-disable-line id-length +function inheritedNonEnumerablePropertyNames( value, level ) { // eslint-disable-line id-length var names; var obj; var tmp; @@ -106,4 +106,4 @@ function nonEnumerableInheritedPropertyNames( value, level ) { // eslint-disable // EXPORTS // -module.exports = nonEnumerableInheritedPropertyNames; +module.exports = inheritedNonEnumerablePropertyNames; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/package.json b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/package.json similarity index 95% rename from lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/package.json rename to lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/package.json index 4a9c18375d76..e5f26a9022b0 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/package.json +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/package.json @@ -1,5 +1,5 @@ { - "name": "@stdlib/utils/nonenumerable-inherited-property-names", + "name": "@stdlib/utils/inherited-nonenumerable-property-names", "version": "0.0.0", "description": "Return an array of an object's inherited non-enumerable property names.", "license": "Apache-2.0", diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/test/test.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/test/test.js similarity index 92% rename from lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/test/test.js rename to lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/test/test.js index ffd55c49375f..b2a308d629cf 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-inherited-property-names/test/test.js +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/test/test.js @@ -24,14 +24,14 @@ var tape = require( 'tape' ); var indexOf = require( '@stdlib/utils/index-of' ); var defineProperty = require( '@stdlib/utils/define-property' ); var inherit = require( '@stdlib/utils/inherit' ); -var nonEnumerableInheritedPropertyNames = require( './../lib' ); // eslint-disable-line id-length +var inheritedNonEnumerablePropertyNames = require( './../lib' ); // eslint-disable-line id-length // TESTS // tape( 'main export is a function', function test( t ) { t.ok( true, __filename ); - t.strictEqual( typeof nonEnumerableInheritedPropertyNames, 'function', 'main export is a function' ); + t.strictEqual( typeof inheritedNonEnumerablePropertyNames, 'function', 'main export is a function' ); t.end(); }); @@ -60,7 +60,7 @@ tape( 'the function throws an error if not provided a positive integer for the i function badValue( value ) { return function badValue() { - nonEnumerableInheritedPropertyNames( {}, value ); + inheritedNonEnumerablePropertyNames( {}, value ); }; } }); @@ -97,7 +97,7 @@ tape( 'the function returns an array of an object\'s inherited non-enumerable pr obj = new Foo(); expected = [ 'baz' ]; - actual = nonEnumerableInheritedPropertyNames( obj ); + actual = inheritedNonEnumerablePropertyNames( obj ); t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { @@ -165,7 +165,7 @@ tape( 'the function returns an array of an object\'s inherited non-enumerable pr obj = new Foo(); expected = [ 'baz', 'bap' ]; - actual = nonEnumerableInheritedPropertyNames( obj ); + actual = inheritedNonEnumerablePropertyNames( obj ); t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { @@ -232,7 +232,7 @@ tape( 'the function supports limiting the inheritance level', function test( t ) obj = new Foo(); expected = [ 'baz' ]; - actual = nonEnumerableInheritedPropertyNames( obj, 1 ); + actual = inheritedNonEnumerablePropertyNames( obj, 1 ); t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { @@ -257,7 +257,7 @@ tape( 'the function returns an empty array if provided `null` or `undefined`', f expected = []; for ( i = 0; i < values.length; i++ ) { - actual = nonEnumerableInheritedPropertyNames( values[ i ] ); + actual = inheritedNonEnumerablePropertyNames( values[ i ] ); t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); } t.end(); diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index afac8cb7e796..c2fa2e6a53ba 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -774,6 +774,15 @@ setReadOnly( utils, 'inherit', require( '@stdlib/utils/inherit' ) ); */ setReadOnly( utils, 'inheritedKeys', require( '@stdlib/utils/inherited-keys' ) ); +/** +* @name inheritedNonEnumerablePropertyNames +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/inherited-nonenumerable-property-names} +*/ +setReadOnly( utils, 'inheritedNonEnumerablePropertyNames', require( '@stdlib/utils/inherited-nonenumerable-property-names' ) ); + /** * @name inheritedPropertyDescriptor * @memberof utils @@ -1035,15 +1044,6 @@ setReadOnly( utils, 'noneByRight', require( '@stdlib/utils/none-by-right' ) ); */ setReadOnly( utils, 'noneByRightAsync', require( '@stdlib/utils/none-by-right-async' ) ); -/** -* @name nonEnumerableInheritedPropertyNames -* @memberof utils -* @readonly -* @type {Function} -* @see {@link module:@stdlib/utils/nonenumerable-inherited-property-names} -*/ -setReadOnly( utils, 'nonEnumerableInheritedPropertyNames', require( '@stdlib/utils/nonenumerable-inherited-property-names' ) ); - /** * @name nonEnumerablePropertyNames * @memberof utils From 7b4b584ed66f7c5437f2daf99e05bae9b251817f Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 13 Sep 2018 12:18:12 -0700 Subject: [PATCH 0295/1062] Update related pkg path --- lib/node_modules/@stdlib/namespace/lib/namespace/n.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js index a8a9b7a2f461..36aa36b7970c 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js @@ -297,7 +297,7 @@ ns.push({ 'value': require( '@stdlib/utils/nonenumerable-property-symbols' ), 'type': 'Function', 'related': [ - '@stdlib/utils/nonenumerable-inherited-property-symbols', + '@stdlib/utils/inherited-nonenumerable-property-symbols', '@stdlib/utils/nonenumerable-property-names', '@stdlib/utils/nonenumerable-property-symbols-in', '@stdlib/utils/property-symbols' @@ -310,7 +310,7 @@ ns.push({ 'value': require( '@stdlib/utils/nonenumerable-property-symbols-in' ), 'type': 'Function', 'related': [ - '@stdlib/utils/nonenumerable-inherited-property-symbols', + '@stdlib/utils/inherited-nonenumerable-property-symbols', '@stdlib/utils/nonenumerable-property-names-in', '@stdlib/utils/nonenumerable-property-symbols', '@stdlib/utils/property-symbols-in' From 1ac93d1d94fdfb59d7a56fc25de97c0e89ddb73a Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 13 Sep 2018 12:20:49 -0700 Subject: [PATCH 0296/1062] Rename file --- lib/node_modules/@stdlib/utils/constructor-name/lib/index.js | 2 +- .../utils/constructor-name/lib/{constructor_name.js => main.js} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename lib/node_modules/@stdlib/utils/constructor-name/lib/{constructor_name.js => main.js} (100%) diff --git a/lib/node_modules/@stdlib/utils/constructor-name/lib/index.js b/lib/node_modules/@stdlib/utils/constructor-name/lib/index.js index 86e6dcd5fdf3..06c24c7feb8b 100644 --- a/lib/node_modules/@stdlib/utils/constructor-name/lib/index.js +++ b/lib/node_modules/@stdlib/utils/constructor-name/lib/index.js @@ -38,7 +38,7 @@ // MODULES // -var constructorName = require( './constructor_name.js' ); +var constructorName = require( './main.js' ); // EXPORTS // diff --git a/lib/node_modules/@stdlib/utils/constructor-name/lib/constructor_name.js b/lib/node_modules/@stdlib/utils/constructor-name/lib/main.js similarity index 100% rename from lib/node_modules/@stdlib/utils/constructor-name/lib/constructor_name.js rename to lib/node_modules/@stdlib/utils/constructor-name/lib/main.js From 45bc7ae0e22cc041a96c7a2b32fa245724552adb Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 13 Sep 2018 12:23:15 -0700 Subject: [PATCH 0297/1062] Fix test --- .../@stdlib/utils/constructor-name/test/test.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/constructor-name/test/test.js b/lib/node_modules/@stdlib/utils/constructor-name/test/test.js index 0d379e37f078..ca4a6468212d 100644 --- a/lib/node_modules/@stdlib/utils/constructor-name/test/test.js +++ b/lib/node_modules/@stdlib/utils/constructor-name/test/test.js @@ -41,6 +41,7 @@ var Uint32Array = require( '@stdlib/array/uint32' ); var ArrayBuffer = require( '@stdlib/array/buffer' ); var Buffer = require( '@stdlib/buffer/ctor' ); var Number = require( '@stdlib/number/ctor' ); +var Symbol = require( '@stdlib/symbol/ctor' ); var constructorName = require( './../lib' ); @@ -148,8 +149,8 @@ tape( 'the function supports environments lacking `Function.name` support', func var foo; var v; - constructorName = proxyquire( './../lib', { - '@stdlib/utils/constructor-name': getName + constructorName = proxyquire( './../lib/main.js', { + '@stdlib/utils/native-class': nativeClass }); function Foo() { @@ -167,7 +168,7 @@ tape( 'the function supports environments lacking `Function.name` support', func t.equal( v, 'Foo', 'returns Foo' ); t.end(); - function getName() { + function nativeClass() { return '[object Object]'; } function toString() { From 62c5224f2748b5080885617208265233fd5d6634 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 13 Sep 2018 15:32:35 -0700 Subject: [PATCH 0298/1062] Add utility to return an object's own enumerable symbol properties --- .../enumerable-property-symbols/README.md | 127 ++++++++++ .../benchmark/benchmark.js | 72 ++++++ .../enumerable-property-symbols/docs/repl.txt | 36 +++ .../examples/index.js | 54 +++++ .../enumerable-property-symbols/lib/index.js | 39 +++ .../enumerable-property-symbols/lib/main.js | 62 +++++ .../enumerable-property-symbols/package.json | 67 ++++++ .../enumerable-property-symbols/test/test.js | 227 ++++++++++++++++++ 8 files changed, 684 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/enumerable-property-symbols/README.md create mode 100644 lib/node_modules/@stdlib/utils/enumerable-property-symbols/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/enumerable-property-symbols/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/enumerable-property-symbols/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/enumerable-property-symbols/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/enumerable-property-symbols/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/enumerable-property-symbols/package.json create mode 100644 lib/node_modules/@stdlib/utils/enumerable-property-symbols/test/test.js diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols/README.md b/lib/node_modules/@stdlib/utils/enumerable-property-symbols/README.md new file mode 100644 index 000000000000..7155f0ec96ed --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols/README.md @@ -0,0 +1,127 @@ + + +# enumerablePropertySymbols + +> Return an array of an object's own enumerable symbol properties. + +
+ +## Usage + + + +```javascript +var enumerablePropertySymbols = require( '@stdlib/utils/enumerable-property-symbols' ); +``` + +#### enumerablePropertySymbols( obj ) + +Returns an `array` of an object's own enumerable symbol properties. + +```javascript +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = {}; + +if ( hasSymbolSupport() ) { + defineProperty( obj, Symbol( 'a' ), { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': 'b' + }); +} + +var symbols = enumerablePropertySymbols( obj ); +``` + +
+ + + +
+ +## Notes + +- Property order is not guaranteed, as `object` property enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s properties, thus allowing for deterministic extraction. + +
+ + + +
+ +## Examples + + + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var enumerablePropertySymbols = require( '@stdlib/utils/enumerable-property-symbols' ); + +var hasSymbols = hasSymbolSupport(); +var symbols; +var obj; + +function Foo() { + if ( hasSymbols ) { + defineProperty( this, Symbol( 'baz' ), { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': 'qux' + }); + } + return this; +} + +if ( hasSymbols ) { + defineProperty( Foo.prototype, Symbol( 'bip' ), { + 'configurable': false, + 'enumerable': true, + 'writable': false, + 'value': 'bop' + }); +} + +obj = new Foo(); +symbols = enumerablePropertySymbols( obj ); + +console.log( symbols ); +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/enumerable-property-symbols/benchmark/benchmark.js new file mode 100644 index 000000000000..90ca4b6c8d90 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var enumerablePropertySymbols = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = enumerablePropertySymbols( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols/docs/repl.txt b/lib/node_modules/@stdlib/utils/enumerable-property-symbols/docs/repl.txt new file mode 100644 index 000000000000..0d6eaa855cc2 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols/docs/repl.txt @@ -0,0 +1,36 @@ + +{{alias}}( value ) + Returns an array of an object's own enumerable symbol properties. + + Property order is not guaranteed, as object property enumeration is not + specified according to the ECMAScript specification. In practice, however, + most engines use insertion order to sort an object's properties, thus + allowing for deterministic extraction. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + Returns + ------- + symbols: Array + List of an object's own enumerable symbol properties. + + Examples + -------- + > var obj = {}; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = true; + > desc.writable = true; + > desc.value = 'boop'; + > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep'; + > {{alias:@stdlib/utils/define-property}}( obj, sym, desc ); + > var symbols = {{alias}}( obj ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols/examples/index.js b/lib/node_modules/@stdlib/utils/enumerable-property-symbols/examples/index.js new file mode 100644 index 000000000000..f1f1822d9f91 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols/examples/index.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var enumerablePropertySymbols = require( './../lib' ); + +var hasSymbols = hasSymbolSupport(); +var symbols; +var obj; + +function Foo() { + if ( hasSymbols ) { + defineProperty( this, Symbol( 'baz' ), { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': 'qux' + }); + } + return this; +} + +if ( hasSymbols ) { + defineProperty( Foo.prototype, Symbol( 'bip' ), { + 'configurable': false, + 'enumerable': true, + 'writable': false, + 'value': 'bop' + }); +} + +obj = new Foo(); +symbols = enumerablePropertySymbols( obj ); + +console.log( symbols ); diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols/lib/index.js b/lib/node_modules/@stdlib/utils/enumerable-property-symbols/lib/index.js new file mode 100644 index 000000000000..e5401766d01e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols/lib/index.js @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's own enumerable symbol properties. +* +* @module @stdlib/utils/enumerable-property-symbols +* +* @example +* var enumerablePropertySymbols = require( '@stdlib/utils/enumerable-property-symbols' ); +* +* var symbols = enumerablePropertySymbols( {} ); +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols/lib/main.js b/lib/node_modules/@stdlib/utils/enumerable-property-symbols/lib/main.js new file mode 100644 index 000000000000..4f341d6a2687 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols/lib/main.js @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); +var isEnumerableProperty = require( '@stdlib/assert/is-enumerable-property' ); + + +// MAIN // + +/** +* Returns an array of an object's own enumerable symbol properties. +* +* @param {*} value - input object +* @returns {Array} a list of own enumerable symbol properties +* +* @example +* var symbols = enumerablePropertySymbols( {} ); +*/ +function enumerablePropertySymbols( value ) { + var symbols; + var i; + var n; + + if ( value === null || value === void 0 ) { + return []; + } + symbols = getOwnPropertySymbols( Object( value ) ); + n = 0; + for ( i = 0; i < symbols.length; i++ ) { + if ( isEnumerableProperty( value, symbols[ i ] ) ) { + symbols[ n ] = symbols[ i ]; + n += 1; + } + } + symbols.length = n; + + return symbols; +} + + +// EXPORTS // + +module.exports = enumerablePropertySymbols; diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols/package.json b/lib/node_modules/@stdlib/utils/enumerable-property-symbols/package.json new file mode 100644 index 000000000000..8e7061924fdd --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols/package.json @@ -0,0 +1,67 @@ +{ + "name": "@stdlib/utils/enumerable-property-symbols", + "version": "0.0.0", + "description": "Return an array of an object's own enumerable symbol properties.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "symbols", + "sym", + "enumerable", + "own", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols/test/test.js b/lib/node_modules/@stdlib/utils/enumerable-property-symbols/test/test.js new file mode 100644 index 000000000000..7f3d54ca51d8 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols/test/test.js @@ -0,0 +1,227 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var enumerablePropertySymbols = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof enumerablePropertySymbols, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns an array of an object\'s own enumerable symbol properties', function test( t ) { + var hasSymbols; + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + hasSymbols = hasSymbolSupport(); + + function Foo() { + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'boop'; + this[ syms[ 1 ] ] = { + 'b': 'c' + }; + defineProperty( this, syms[ 2 ], { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': 'e' + }); + defineProperty( this, syms[ 3 ], { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': 'g' + }); + defineProperty( this, syms[ 4 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'i' + }); + } + return this; + } + + if ( hasSymbols ) { + syms = [ + Symbol( 'beep' ), + Symbol( 'a' ), + Symbol( 'd' ), + Symbol( 'f' ), + Symbol( 'h' ), + Symbol( 'foo' ), + Symbol( 'baz' ) + ]; + + Foo.prototype[ syms[ 5 ] ] = [ 'bar' ]; + defineProperty( Foo.prototype, syms[ 6 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ syms[ 0 ], syms[ 1 ], syms[ 2 ], syms[ 3 ] ]; + } else { + syms = []; + expected = []; + } + actual = enumerablePropertySymbols( obj ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s own enumerable symbol properties (mock)', function test( t ) { + var enumerablePropertySymbols; + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + enumerablePropertySymbols = proxyquire( './../lib/main.js', { + '@stdlib/utils/property-symbols': propertySymbols + }); + + syms = [ + 'beep', + 'a', + 'd', + 'f', + 'h', + 'foo', + 'baz' + ]; + + function Foo() { + this[ syms[ 0 ] ] = 'boop'; + this[ syms[ 1 ] ] = { + 'b': 'c' + }; + defineProperty( this, syms[ 2 ], { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': 'e' + }); + defineProperty( this, syms[ 3 ], { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': 'g' + }); + defineProperty( this, syms[ 4 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'i' + }); + return this; + } + + Foo.prototype[ syms[ 5 ] ] = [ 'bar' ]; + defineProperty( Foo.prototype, syms[ 6 ], { + 'configurable': false, + 'enumerable': true, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ syms[ 0 ], syms[ 1 ], syms[ 2 ], syms[ 3 ] ]; + actual = enumerablePropertySymbols( obj ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i].toString() ); + } + t.end(); + + function propertySymbols() { + return syms.slice(); + } +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = enumerablePropertySymbols( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided a non-string primitive', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + 3.14, + NaN, + true, + false + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = enumerablePropertySymbols( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From 947f46efe3982aade68010a7363f362674e3dec2 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 01:27:29 -0700 Subject: [PATCH 0299/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index c2fa2e6a53ba..ce06e725603e 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -441,6 +441,15 @@ setReadOnly( utils, 'objectEntries', require( '@stdlib/utils/entries' ) ); */ setReadOnly( utils, 'objectEntriesIn', require( '@stdlib/utils/entries-in' ) ); +/** +* @name enumerablePropertySymbols +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/enumerable-property-symbols} +*/ +setReadOnly( utils, 'enumerablePropertySymbols', require( '@stdlib/utils/enumerable-property-symbols' ) ); + /** * @name rescape * @memberof utils From 427e360d86c3d3668048c26fa2829edc6b453976 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 01:30:43 -0700 Subject: [PATCH 0300/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/e.js | 14 ++++++++++++++ .../@stdlib/namespace/lib/namespace/n.js | 2 ++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/e.js b/lib/node_modules/@stdlib/namespace/lib/namespace/e.js index 1ecf080d1052..313b96aef0e0 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/e.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/e.js @@ -42,6 +42,20 @@ ns.push({ ] }); +ns.push({ + 'alias': 'enumerablePropertySymbols', + 'path': '@stdlib/utils/enumerable-property-symbols', + 'value': require( '@stdlib/utils/enumerable-property-symbols' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/enumerable-property-symbols-in', + '@stdlib/utils/inherited-enumerable-property-symbols', + '@stdlib/utils/keys', + '@stdlib/utils/nonenumerable-property-names', + '@stdlib/utils/property-symbols' + ] +}); + ns.push({ 'alias': 'ENV', 'path': '@stdlib/process/env', diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js index 36aa36b7970c..51925140dd34 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js @@ -297,6 +297,7 @@ ns.push({ 'value': require( '@stdlib/utils/nonenumerable-property-symbols' ), 'type': 'Function', 'related': [ + '@stdlib/utils/enumerable-property-symbols', '@stdlib/utils/inherited-nonenumerable-property-symbols', '@stdlib/utils/nonenumerable-property-names', '@stdlib/utils/nonenumerable-property-symbols-in', @@ -310,6 +311,7 @@ ns.push({ 'value': require( '@stdlib/utils/nonenumerable-property-symbols-in' ), 'type': 'Function', 'related': [ + '@stdlib/utils/enumerable-property-symbols-in', '@stdlib/utils/inherited-nonenumerable-property-symbols', '@stdlib/utils/nonenumerable-property-names-in', '@stdlib/utils/nonenumerable-property-symbols', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 01cf9f5d1adf..bc41ec7c35a3 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -847,6 +847,7 @@ var db = { "doWhileEachRight": "function predicate( v ) { return v === v; };\nfunction logger( v, i ) { console.log( '%s: %d', i, v ); };\narr = [ 1, NaN, 2, 3, 4, 5 ];\ndoWhileEachRight( arr, logger, predicate )\n", "E": "E\n", "endsWith": "bool = endsWith( 'beep', 'ep' )\nbool = endsWith( 'Beep', 'op' )\nbool = endsWith( 'Beep', 'ee', 3 )\nbool = endsWith( 'Beep', 'ee', -1 )\nbool = endsWith( 'beep', '' )\n", + "enumerablePropertySymbols": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = true;\ndesc.value = 'boop';\nsym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\ndefineProperty( obj, sym, desc );\nsymbols = enumerablePropertySymbols( obj )\n", "ENV": "user = ENV.USER\n", "EPS": "EPS\n", "error2json": "err = new Error( 'beep' );\njson = error2json( err )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 829cbf9b4374..c4e9badf8b73 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -847,6 +847,7 @@ var db = { "doWhileEachRight": "\ndoWhileEachRight( collection, fcn, predicate[, thisArg] )\n While a test condition is true, invokes a function for each element in a\n collection, iterating from right to left.\n\n The condition is evaluated *after* executing the provided function; thus,\n `fcn` *always* executes at least once.\n\n When invoked, both the predicate function and the function to apply are\n provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n If provided an empty collection, both `value` and `index` are `undefined`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n predicate: Function\n The predicate function which indicates whether to continue iterating\n over a collection.\n\n thisArg: any (optional)\n Execution context for the applied function.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function predicate( v ) { return v === v; };\n > function logger( v, i ) { console.log( '%s: %d', i, v ); };\n > var arr = [ 1, NaN, 2, 3, 4, 5 ];\n > doWhileEachRight( arr, logger, predicate )\n 5: 5\n 4: 4\n 3: 3\n 2: 2\n 1: NaN\n\n See Also\n --------\n doUntilEachRight, doWhileEach, whileEachRight\n", "E": "\nE\n Euler's number.\n\n Examples\n --------\n > E\n 2.718281828459045\n\n", "endsWith": "\nendsWith( str, search[, len] )\n Tests if a `string` ends with the characters of another `string`.\n\n If provided an empty `search` string, the function always returns `true`.\n\n Parameters\n ----------\n str: string\n Input string.\n\n search: string\n Search string.\n\n len: integer (optional)\n Substring length. Restricts the search to a substring within the input\n string beginning from the leftmost character. If provided a negative\n value, `len` indicates to ignore the last `len` characters, returning\n the same output as `str.length + len`. Default: `str.length`.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a `string` ends with the characters of\n another `string`.\n\n Examples\n --------\n > var bool = endsWith( 'beep', 'ep' )\n true\n > bool = endsWith( 'Beep', 'op' )\n false\n > bool = endsWith( 'Beep', 'ee', 3 )\n true\n > bool = endsWith( 'Beep', 'ee', -1 )\n true\n > bool = endsWith( 'beep', '' )\n true\n\n See Also\n --------\n startsWith\n", + "enumerablePropertySymbols": "\nenumerablePropertySymbols( value )\n Returns an array of an object's own enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = enumerablePropertySymbols( obj )\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNames, propertySymbols\n", "ENV": "\nENV\n An object containing the user environment.\n\n Examples\n --------\n > var user = ENV.USER\n \n\n See Also\n --------\n ARGV\n", "EPS": "\nEPS\n Difference between one and the smallest value greater than one that can be\n represented as a double-precision floating-point number.\n\n Examples\n --------\n > EPS\n 2.220446049250313e-16\n\n See Also\n --------\n FLOAT32_EPS\n", "error2json": "\nerror2json( error )\n Returns a JSON representation of an error object.\n\n The following built-in error types are supported:\n\n - Error\n - URIError\n - ReferenceError\n - SyntaxError\n - RangeError\n - EvalError\n - TypeError\n\n The JSON object is guaranteed to have the following properties:\n\n - type: error type.\n - message: error message.\n\n The only standardized cross-platform property is `message`. Depending on the\n platform, the following properties *may* be present:\n\n - name: error name.\n - stack: stack trace.\n - code: error code (Node.js system errors).\n - errno: error code string (Node.js system errors).\n - syscall: string representing the failed system call (Node.js system\n errors).\n\n The function also serializes all enumerable properties.\n\n The implementation supports custom error types and sets the `type` field to\n the closest built-in error type.\n\n Parameters\n ----------\n error: Error\n Error to serialize.\n\n Returns\n -------\n out: Object\n JSON representation.\n\n Examples\n --------\n > var err = new Error( 'beep' );\n > var json = error2json( err )\n \n\n See Also\n --------\n reviveError\n", @@ -1376,7 +1377,7 @@ var db = { "noneByRightAsync": "\nnoneByRightAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByRightAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function, iterating from right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByRightAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByRightAsync, everyByRightAsync, forEachRightAsync, noneByAsync, noneByRight, someByRightAsync\n", "nonEnumerablePropertyNames": "\nnonEnumerablePropertyNames( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNames( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbolsIn, propertyNames\n", "nonEnumerablePropertyNamesIn": "\nnonEnumerablePropertyNamesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNamesIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNames, propertyNamesIn\n", - "nonEnumerablePropertySymbols": "\nnonEnumerablePropertySymbols( value )\n Returns an array of an object's own non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbols( obj )\n\n See Also\n --------\n nonEnumerablePropertyNames, nonEnumerablePropertySymbolsIn, propertySymbols\n", + "nonEnumerablePropertySymbols": "\nnonEnumerablePropertySymbols( value )\n Returns an array of an object's own non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbols( obj )\n\n See Also\n --------\n enumerablePropertySymbols, nonEnumerablePropertyNames, nonEnumerablePropertySymbolsIn, propertySymbols\n", "nonEnumerablePropertySymbolsIn": "\nnonEnumerablePropertySymbolsIn( value )\n Returns an array of an object's own and inherited non-enumerable symbol\n properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbolsIn( obj )\n\n See Also\n --------\n nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertySymbolsIn\n", "noop": "\nnoop()\n A function which does nothing.\n\n Examples\n --------\n > noop();\n\n", "now": "\nnow()\n Returns the time in seconds since the epoch.\n\n The Unix epoch is 00:00:00 UTC on 1 January 1970.\n\n Returns\n -------\n out: integer\n Time in seconds since the epoch.\n\n Examples\n --------\n > var ts = now()\n \n\n", From b05bbffdfa5101c8489d0ee78c92805232339c09 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 02:09:08 -0700 Subject: [PATCH 0301/1062] Add utility to return an object's own and inherited enumerable symbol props --- .../enumerable-property-symbols-in/README.md | 127 ++++++++++ .../benchmark/benchmark.js | 72 ++++++ .../docs/repl.txt | 37 +++ .../examples/index.js | 54 +++++ .../lib/index.js | 39 +++ .../lib/main.js | 93 +++++++ .../package.json | 69 ++++++ .../test/test.js | 227 ++++++++++++++++++ 8 files changed, 718 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/README.md create mode 100644 lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/package.json create mode 100644 lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/test/test.js diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/README.md b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/README.md new file mode 100644 index 000000000000..95da0535b31d --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/README.md @@ -0,0 +1,127 @@ + + +# enumerablePropertySymbolsIn + +> Return an array of an object's own and inherited enumerable symbol properties. + +
+ +## Usage + + + +```javascript +var enumerablePropertySymbolsIn = require( '@stdlib/utils/enumerable-property-symbols-in' ); +``` + +#### enumerablePropertySymbolsIn( obj ) + +Returns an `array` of an object's own and inherited enumerable symbol properties. + +```javascript +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = {}; + +if ( hasSymbolSupport() ) { + defineProperty( obj, Symbol( 'a' ), { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': 'b' + }); +} + +var symbols = enumerablePropertySymbolsIn( obj ); +``` + +
+ + + +
+ +## Notes + +- Property order is not guaranteed, as `object` property enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s properties, thus allowing for deterministic extraction. + +
+ + + +
+ +## Examples + + + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var enumerablePropertySymbolsIn = require( '@stdlib/utils/enumerable-property-symbols-in' ); + +var hasSymbols = hasSymbolSupport(); +var symbols; +var obj; + +function Foo() { + if ( hasSymbols ) { + defineProperty( this, Symbol( 'baz' ), { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': 'qux' + }); + } + return this; +} + +if ( hasSymbols ) { + defineProperty( Foo.prototype, Symbol( 'bip' ), { + 'configurable': false, + 'enumerable': true, + 'writable': false, + 'value': 'bop' + }); +} + +obj = new Foo(); +symbols = enumerablePropertySymbolsIn( obj ); + +console.log( symbols ); +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/benchmark/benchmark.js new file mode 100644 index 000000000000..405e3bb4f348 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var enumerablePropertySymbolsIn = require( './../lib' ); // eslint-disable-line id-length + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = enumerablePropertySymbolsIn( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/docs/repl.txt b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/docs/repl.txt new file mode 100644 index 000000000000..233aa2961e8e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/docs/repl.txt @@ -0,0 +1,37 @@ + +{{alias}}( value ) + Returns an array of an object's own and inherited enumerable symbol + properties. + + Property order is not guaranteed, as object property enumeration is not + specified according to the ECMAScript specification. In practice, however, + most engines use insertion order to sort an object's properties, thus + allowing for deterministic extraction. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + Returns + ------- + symbols: Array + List of an object's own and inherited enumerable symbol properties. + + Examples + -------- + > var obj = {}; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = true; + > desc.writable = true; + > desc.value = 'boop'; + > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep'; + > {{alias:@stdlib/utils/define-property}}( obj, sym, desc ); + > var symbols = {{alias}}( obj ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/examples/index.js b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/examples/index.js new file mode 100644 index 000000000000..9ac34c4b2c48 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/examples/index.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var enumerablePropertySymbolsIn = require( './../lib' ); // eslint-disable-line id-length + +var hasSymbols = hasSymbolSupport(); +var symbols; +var obj; + +function Foo() { + if ( hasSymbols ) { + defineProperty( this, Symbol( 'baz' ), { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': 'qux' + }); + } + return this; +} + +if ( hasSymbols ) { + defineProperty( Foo.prototype, Symbol( 'bip' ), { + 'configurable': false, + 'enumerable': true, + 'writable': false, + 'value': 'bop' + }); +} + +obj = new Foo(); +symbols = enumerablePropertySymbolsIn( obj ); + +console.log( symbols ); diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/lib/index.js b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/lib/index.js new file mode 100644 index 000000000000..afbb185a2005 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/lib/index.js @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's own and inherited enumerable symbol properties. +* +* @module @stdlib/utils/enumerable-property-symbols-in +* +* @example +* var enumerablePropertySymbolsIn = require( '@stdlib/utils/enumerable-property-symbols-in' ); +* +* var symbols = enumerablePropertySymbolsIn( {} ); +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/lib/main.js b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/lib/main.js new file mode 100644 index 000000000000..8fa05b73d728 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/lib/main.js @@ -0,0 +1,93 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); +var isEnumerableProperty = require( '@stdlib/assert/is-enumerable-property' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating if an array contains a provided value. +* +* @private +* @param {Array} arr - array +* @param {*} v - search value +* @returns {boolean} boolean indicating if an array contains a search value +*/ +function contains( arr, v ) { + var i; + for ( i = 0; i < arr.length; i++ ) { + if ( arr[ i ] === v ) { + return true; + } + } + return false; +} + + +// MAIN // + +/** +* Returns an array of an object's own and inherited enumerable symbol properties. +* +* @param {*} value - input object +* @returns {Array} a list of own and inherited enumerable symbol properties +* +* @example +* var symbols = enumerablePropertySymbolsIn( {} ); +*/ +function enumerablePropertySymbolsIn( value ) { // eslint-disable-line id-length + var symbols; + var obj; + var tmp; + var i; + + if ( value === null || value === void 0 ) { + return []; + } + // Cast the value to an object: + obj = Object( value ); + + // Walk the prototype chain collecting all enumerable symbol properties... + symbols = []; + do { + tmp = getOwnPropertySymbols( obj ); + for ( i = 0; i < tmp.length; i++ ) { + if ( + isEnumerableProperty( obj, tmp[ i ] ) && + contains( symbols, tmp[ i ] ) === false + ) { + symbols.push( tmp[ i ] ); + } + } + obj = getPrototypeOf( obj ); + } while ( obj ); + + return symbols; +} + + +// EXPORTS // + +module.exports = enumerablePropertySymbolsIn; diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/package.json b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/package.json new file mode 100644 index 000000000000..5b53ca5b5e02 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/package.json @@ -0,0 +1,69 @@ +{ + "name": "@stdlib/utils/enumerable-property-symbols-in", + "version": "0.0.0", + "description": "Return an array of an object's own and inherited enumerable symbol properties.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "symbols", + "sym", + "enumerable", + "own", + "inherited", + "in", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/test/test.js b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/test/test.js new file mode 100644 index 000000000000..04af5e70f057 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/test/test.js @@ -0,0 +1,227 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var enumerablePropertySymbolsIn = require( './../lib' ); // eslint-disable-line id-length + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof enumerablePropertySymbolsIn, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns an array of an object\'s own and inherited enumerable symbol properties', function test( t ) { + var hasSymbols; + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + hasSymbols = hasSymbolSupport(); + + function Foo() { + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'boop'; + this[ syms[ 1 ] ] = { + 'b': 'c' + }; + defineProperty( this, syms[ 2 ], { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': 'e' + }); + defineProperty( this, syms[ 3 ], { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': 'g' + }); + defineProperty( this, syms[ 4 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'i' + }); + } + return this; + } + + if ( hasSymbols ) { + syms = [ + Symbol( 'beep' ), + Symbol( 'a' ), + Symbol( 'd' ), + Symbol( 'f' ), + Symbol( 'h' ), + Symbol( 'foo' ), + Symbol( 'baz' ) + ]; + + Foo.prototype[ syms[ 5 ] ] = [ 'bar' ]; + defineProperty( Foo.prototype, syms[ 6 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ syms[ 0 ], syms[ 1 ], syms[ 2 ], syms[ 3 ], syms[ 5 ] ]; + } else { + syms = []; + expected = []; + } + actual = enumerablePropertySymbolsIn( obj ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s own and inherited enumerable symbol properties (mock)', function test( t ) { + var enumerablePropertySymbolsIn; // eslint-disable-line id-length + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + enumerablePropertySymbolsIn = proxyquire( './../lib/main.js', { + '@stdlib/utils/property-symbols': propertySymbolsIn + }); + + syms = [ + 'beep', + 'a', + 'd', + 'f', + 'h', + 'foo', + 'baz' + ]; + + function Foo() { + this[ syms[ 0 ] ] = 'boop'; + this[ syms[ 1 ] ] = { + 'b': 'c' + }; + defineProperty( this, syms[ 2 ], { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': 'e' + }); + defineProperty( this, syms[ 3 ], { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': 'g' + }); + defineProperty( this, syms[ 4 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'i' + }); + return this; + } + + Foo.prototype[ syms[ 5 ] ] = [ 'bar' ]; + defineProperty( Foo.prototype, syms[ 6 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + + obj = new Foo(); + + expected = [ syms[ 0 ], syms[ 1 ], syms[ 2 ], syms[ 3 ], syms[ 5 ] ]; + actual = enumerablePropertySymbolsIn( obj ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i].toString() ); + } + t.end(); + + function propertySymbolsIn() { + return syms.slice(); + } +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = enumerablePropertySymbolsIn( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided a non-string primitive', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + 3.14, + NaN, + true, + false + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = enumerablePropertySymbolsIn( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From 86aed90bc328e206f5e888768574b70cf888056b Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 02:10:17 -0700 Subject: [PATCH 0302/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index ce06e725603e..3c1e7adcfadd 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -450,6 +450,15 @@ setReadOnly( utils, 'objectEntriesIn', require( '@stdlib/utils/entries-in' ) ); */ setReadOnly( utils, 'enumerablePropertySymbols', require( '@stdlib/utils/enumerable-property-symbols' ) ); +/** +* @name enumerablePropertySymbolsIn +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/enumerable-property-symbols-in} +*/ +setReadOnly( utils, 'enumerablePropertySymbolsIn', require( '@stdlib/utils/enumerable-property-symbols-in' ) ); + /** * @name rescape * @memberof utils From af51d3c32cdd84a3f5ff4a88a988f7350723b09c Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 02:12:01 -0700 Subject: [PATCH 0303/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/e.js | 16 +++++++++++++++- .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 +++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/e.js b/lib/node_modules/@stdlib/namespace/lib/namespace/e.js index 313b96aef0e0..fd1a8722c3a2 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/e.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/e.js @@ -51,11 +51,25 @@ ns.push({ '@stdlib/utils/enumerable-property-symbols-in', '@stdlib/utils/inherited-enumerable-property-symbols', '@stdlib/utils/keys', - '@stdlib/utils/nonenumerable-property-names', + '@stdlib/utils/nonenumerable-property-symbols', '@stdlib/utils/property-symbols' ] }); +ns.push({ + 'alias': 'enumerablePropertySymbolsIn', + 'path': '@stdlib/utils/enumerable-property-symbols-in', + 'value': require( '@stdlib/utils/enumerable-property-symbols-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/enumerable-property-symbols', + '@stdlib/utils/inherited-enumerable-property-symbols', + '@stdlib/utils/keys-in', + '@stdlib/utils/nonenumerable-property-symbols-in', + '@stdlib/utils/property-symbols-in' + ] +}); + ns.push({ 'alias': 'ENV', 'path': '@stdlib/process/env', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index bc41ec7c35a3..6bf745e1ab4a 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -848,6 +848,7 @@ var db = { "E": "E\n", "endsWith": "bool = endsWith( 'beep', 'ep' )\nbool = endsWith( 'Beep', 'op' )\nbool = endsWith( 'Beep', 'ee', 3 )\nbool = endsWith( 'Beep', 'ee', -1 )\nbool = endsWith( 'beep', '' )\n", "enumerablePropertySymbols": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = true;\ndesc.value = 'boop';\nsym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\ndefineProperty( obj, sym, desc );\nsymbols = enumerablePropertySymbols( obj )\n", + "enumerablePropertySymbolsIn": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = true;\ndesc.value = 'boop';\nsym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\ndefineProperty( obj, sym, desc );\nsymbols = enumerablePropertySymbolsIn( obj )\n", "ENV": "user = ENV.USER\n", "EPS": "EPS\n", "error2json": "err = new Error( 'beep' );\njson = error2json( err )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index c4e9badf8b73..b63dd7dd6789 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -847,7 +847,8 @@ var db = { "doWhileEachRight": "\ndoWhileEachRight( collection, fcn, predicate[, thisArg] )\n While a test condition is true, invokes a function for each element in a\n collection, iterating from right to left.\n\n The condition is evaluated *after* executing the provided function; thus,\n `fcn` *always* executes at least once.\n\n When invoked, both the predicate function and the function to apply are\n provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n If provided an empty collection, both `value` and `index` are `undefined`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n predicate: Function\n The predicate function which indicates whether to continue iterating\n over a collection.\n\n thisArg: any (optional)\n Execution context for the applied function.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function predicate( v ) { return v === v; };\n > function logger( v, i ) { console.log( '%s: %d', i, v ); };\n > var arr = [ 1, NaN, 2, 3, 4, 5 ];\n > doWhileEachRight( arr, logger, predicate )\n 5: 5\n 4: 4\n 3: 3\n 2: 2\n 1: NaN\n\n See Also\n --------\n doUntilEachRight, doWhileEach, whileEachRight\n", "E": "\nE\n Euler's number.\n\n Examples\n --------\n > E\n 2.718281828459045\n\n", "endsWith": "\nendsWith( str, search[, len] )\n Tests if a `string` ends with the characters of another `string`.\n\n If provided an empty `search` string, the function always returns `true`.\n\n Parameters\n ----------\n str: string\n Input string.\n\n search: string\n Search string.\n\n len: integer (optional)\n Substring length. Restricts the search to a substring within the input\n string beginning from the leftmost character. If provided a negative\n value, `len` indicates to ignore the last `len` characters, returning\n the same output as `str.length + len`. Default: `str.length`.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a `string` ends with the characters of\n another `string`.\n\n Examples\n --------\n > var bool = endsWith( 'beep', 'ep' )\n true\n > bool = endsWith( 'Beep', 'op' )\n false\n > bool = endsWith( 'Beep', 'ee', 3 )\n true\n > bool = endsWith( 'Beep', 'ee', -1 )\n true\n > bool = endsWith( 'beep', '' )\n true\n\n See Also\n --------\n startsWith\n", - "enumerablePropertySymbols": "\nenumerablePropertySymbols( value )\n Returns an array of an object's own enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = enumerablePropertySymbols( obj )\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNames, propertySymbols\n", + "enumerablePropertySymbols": "\nenumerablePropertySymbols( value )\n Returns an array of an object's own enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = enumerablePropertySymbols( obj )\n\n See Also\n --------\n enumerablePropertySymbolsIn, objectKeys, nonEnumerablePropertySymbols, propertySymbols\n", + "enumerablePropertySymbolsIn": "\nenumerablePropertySymbolsIn( value )\n Returns an array of an object's own and inherited enumerable symbol\n properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = enumerablePropertySymbolsIn( obj )\n\n See Also\n --------\n enumerablePropertySymbols, keysIn, nonEnumerablePropertySymbolsIn, propertySymbolsIn\n", "ENV": "\nENV\n An object containing the user environment.\n\n Examples\n --------\n > var user = ENV.USER\n \n\n See Also\n --------\n ARGV\n", "EPS": "\nEPS\n Difference between one and the smallest value greater than one that can be\n represented as a double-precision floating-point number.\n\n Examples\n --------\n > EPS\n 2.220446049250313e-16\n\n See Also\n --------\n FLOAT32_EPS\n", "error2json": "\nerror2json( error )\n Returns a JSON representation of an error object.\n\n The following built-in error types are supported:\n\n - Error\n - URIError\n - ReferenceError\n - SyntaxError\n - RangeError\n - EvalError\n - TypeError\n\n The JSON object is guaranteed to have the following properties:\n\n - type: error type.\n - message: error message.\n\n The only standardized cross-platform property is `message`. Depending on the\n platform, the following properties *may* be present:\n\n - name: error name.\n - stack: stack trace.\n - code: error code (Node.js system errors).\n - errno: error code string (Node.js system errors).\n - syscall: string representing the failed system call (Node.js system\n errors).\n\n The function also serializes all enumerable properties.\n\n The implementation supports custom error types and sets the `type` field to\n the closest built-in error type.\n\n Parameters\n ----------\n error: Error\n Error to serialize.\n\n Returns\n -------\n out: Object\n JSON representation.\n\n Examples\n --------\n > var err = new Error( 'beep' );\n > var json = error2json( err )\n \n\n See Also\n --------\n reviveError\n", @@ -1378,7 +1379,7 @@ var db = { "nonEnumerablePropertyNames": "\nnonEnumerablePropertyNames( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNames( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbolsIn, propertyNames\n", "nonEnumerablePropertyNamesIn": "\nnonEnumerablePropertyNamesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNamesIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNames, propertyNamesIn\n", "nonEnumerablePropertySymbols": "\nnonEnumerablePropertySymbols( value )\n Returns an array of an object's own non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbols( obj )\n\n See Also\n --------\n enumerablePropertySymbols, nonEnumerablePropertyNames, nonEnumerablePropertySymbolsIn, propertySymbols\n", - "nonEnumerablePropertySymbolsIn": "\nnonEnumerablePropertySymbolsIn( value )\n Returns an array of an object's own and inherited non-enumerable symbol\n properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbolsIn( obj )\n\n See Also\n --------\n nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertySymbolsIn\n", + "nonEnumerablePropertySymbolsIn": "\nnonEnumerablePropertySymbolsIn( value )\n Returns an array of an object's own and inherited non-enumerable symbol\n properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbolsIn( obj )\n\n See Also\n --------\n enumerablePropertySymbolsIn, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertySymbolsIn\n", "noop": "\nnoop()\n A function which does nothing.\n\n Examples\n --------\n > noop();\n\n", "now": "\nnow()\n Returns the time in seconds since the epoch.\n\n The Unix epoch is 00:00:00 UTC on 1 January 1970.\n\n Returns\n -------\n out: integer\n Time in seconds since the epoch.\n\n Examples\n --------\n > var ts = now()\n \n\n", "NUM_CPUS": "\nNUM_CPUS\n Number of CPUs.\n\n In browser environments, the number of CPUs is determined by querying the\n hardware concurrency API.\n\n In Node.js environments, the number of CPUs is determined via the `os`\n module.\n\n Examples\n --------\n > NUM_CPUS\n \n\n", From 925e809bc85cf299c72646452106d63d8650470c Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 13:11:10 -0700 Subject: [PATCH 0304/1062] Update tests --- .../utils/property-names/test/test.builtin.js | 21 ++++++++++++++++++- .../property-names/test/test.polyfill.js | 5 +++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/property-names/test/test.builtin.js b/lib/node_modules/@stdlib/utils/property-names/test/test.builtin.js index 34a2da0d3379..745131d31bb2 100644 --- a/lib/node_modules/@stdlib/utils/property-names/test/test.builtin.js +++ b/lib/node_modules/@stdlib/utils/property-names/test/test.builtin.js @@ -65,6 +65,7 @@ tape( 'the function returns an array of an object\'s own property names', opts, expected = [ 'beep', 'a' ]; actual = getOwnPropertyNames( obj ); + t.strictEqual( actual.length, expected.length, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { idx = indexOf( actual, expected[ i ] ); t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); @@ -78,9 +79,27 @@ tape( 'the function returns an array of an object\'s own property names (argumen var idx; var i; - expected = [ '0' ]; + expected = [ '0', 'length' ]; actual = getOwnPropertyNames( arguments ); + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s own property names (string)', opts, function test( t ) { + var expected; + var actual; + var idx; + var i; + + expected = [ '0', '1', '2', 'length' ]; + actual = getOwnPropertyNames( 'foo' ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { idx = indexOf( actual, expected[ i ] ); t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); diff --git a/lib/node_modules/@stdlib/utils/property-names/test/test.polyfill.js b/lib/node_modules/@stdlib/utils/property-names/test/test.polyfill.js index 6ad5b176daf3..b10245a14091 100644 --- a/lib/node_modules/@stdlib/utils/property-names/test/test.polyfill.js +++ b/lib/node_modules/@stdlib/utils/property-names/test/test.polyfill.js @@ -58,6 +58,7 @@ tape( 'the function returns an array of an object\'s own property names', functi expected = [ 'beep', 'a' ]; actual = getOwnPropertyNames( obj ); + t.strictEqual( actual.length, expected.length, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { idx = indexOf( actual, expected[ i ] ); t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); @@ -71,9 +72,11 @@ tape( 'the function returns an array of an object\'s own property names (argumen var idx; var i; + // Note: we only test for enumerable properties in modern environments given the environments the polyfill targets... expected = [ '0' ]; actual = getOwnPropertyNames( arguments ); + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { idx = indexOf( actual, expected[ i ] ); t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); @@ -87,9 +90,11 @@ tape( 'the function returns an array of an object\'s own property names (string) var idx; var i; + // Note: we only test for enumerable properties in modern environments given the environments the polyfill targets... expected = [ '0', '1', '2' ]; actual = getOwnPropertyNames( 'foo' ); + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { idx = indexOf( actual, expected[ i ] ); t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); From f5f410aab00b40d5f416b23d7fd33a957c352bea Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 13:12:32 -0700 Subject: [PATCH 0305/1062] Add utility to return an object's property names and symbols --- .../@stdlib/utils/properties/README.md | 104 +++++++++++++ .../utils/properties/benchmark/benchmark.js | 72 +++++++++ .../@stdlib/utils/properties/docs/repl.txt | 33 +++++ .../utils/properties/examples/index.js | 44 ++++++ .../@stdlib/utils/properties/lib/index.js | 43 ++++++ .../@stdlib/utils/properties/lib/main.js | 60 ++++++++ .../@stdlib/utils/properties/package.json | 70 +++++++++ .../@stdlib/utils/properties/test/test.js | 139 ++++++++++++++++++ 8 files changed, 565 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/properties/README.md create mode 100644 lib/node_modules/@stdlib/utils/properties/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/properties/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/properties/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/properties/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/properties/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/properties/package.json create mode 100644 lib/node_modules/@stdlib/utils/properties/test/test.js diff --git a/lib/node_modules/@stdlib/utils/properties/README.md b/lib/node_modules/@stdlib/utils/properties/README.md new file mode 100644 index 000000000000..235759c163ee --- /dev/null +++ b/lib/node_modules/@stdlib/utils/properties/README.md @@ -0,0 +1,104 @@ + + +# properties + +> Return an array of an object's own enumerable and non-enumerable property names and symbols. + +
+ +## Usage + +```javascript +var properties = require( '@stdlib/utils/properties' ); +``` + +#### properties( obj ) + +Returns an `array` of an object's own enumerable and non-enumerable property names and symbols. + +```javascript +var obj = { + 'a': 1, + 'b': 2 +}; + +var props = properties( obj ); +// e.g., returns [ 'a', 'b' ] +``` + +
+ + + +
+ +## Notes + +- Property order is not guaranteed, as `object` property enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s properties, thus allowing for deterministic extraction. + +
+ + + +
+ +## Examples + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var properties = require( '@stdlib/utils/properties' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'value': 'qux', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; + +var obj = new Foo(); +var props = properties( obj ); + +console.log( props ); +// e.g., => [ 'beep', 'a', 'baz' ] +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/properties/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/properties/benchmark/benchmark.js new file mode 100644 index 000000000000..fe446d0fb1b8 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/properties/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var properties = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = properties( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/properties/docs/repl.txt b/lib/node_modules/@stdlib/utils/properties/docs/repl.txt new file mode 100644 index 000000000000..1efcc85be2b2 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/properties/docs/repl.txt @@ -0,0 +1,33 @@ + +{{alias}}( value ) + Returns an array of an object's own enumerable and non-enumerable property + names and symbols. + + Property order is not guaranteed, as object property enumeration is not + specified according to the ECMAScript specification. In practice, however, + most engines use insertion order to sort an object's properties, thus + allowing for deterministic extraction. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + Returns + ------- + props: Array + List of an object's own enumerable and non-enumerable properties. + + Examples + -------- + > function Foo() { this.beep = 'boop'; return this; }; + > Foo.prototype.foo = 'bar'; + > var obj = new Foo(); + > var props = {{alias}}( obj ) + [ 'beep' ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/properties/examples/index.js b/lib/node_modules/@stdlib/utils/properties/examples/index.js new file mode 100644 index 000000000000..16bbc1a7126f --- /dev/null +++ b/lib/node_modules/@stdlib/utils/properties/examples/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var properties = require( './../lib' ); + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'value': 'qux', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; +} + +Foo.prototype.foo = [ 'bar' ]; + +var obj = new Foo(); +var props = properties( obj ); + +console.log( props ); +// e.g., => [ 'beep', 'a', 'baz' ] diff --git a/lib/node_modules/@stdlib/utils/properties/lib/index.js b/lib/node_modules/@stdlib/utils/properties/lib/index.js new file mode 100644 index 000000000000..fee8b497a614 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/properties/lib/index.js @@ -0,0 +1,43 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's own enumerable and non-enumerable property names and symbols. +* +* @module @stdlib/utils/properties +* +* @example +* var properties = require( '@stdlib/utils/properties' ); +* +* var props = properties({ +* 'foo': 'bar', +* 'beep': 'boop' +* }); +* // e.g., returns [ 'foo', 'beep' ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/properties/lib/main.js b/lib/node_modules/@stdlib/utils/properties/lib/main.js new file mode 100644 index 000000000000..ef866fbffe7e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/properties/lib/main.js @@ -0,0 +1,60 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyNames = require( '@stdlib/utils/property-names' ); +var propertySymbols = require( '@stdlib/utils/property-symbols' ); + + +// MAIN // + +/** +* Returns an array of an object's own enumerable and non-enumerable property names and symbols. +* +* @param {*} value - input object +* @returns {Array} a list of own property names and symbols +* +* @example +* var obj = { +* 'beep': 'boop', +* 'foo': 3.14 +* }; +* +* var props = properties( obj ); +* // e.g., returns [ 'beep', 'foo' ] +*/ +function properties( value ) { + var out; + var tmp; + var i; + + out = propertyNames( value ); + tmp = propertySymbols( value ); + for ( i = 0; i < tmp.length; i++ ) { + out.push( tmp[ i ] ); + } + return out; +} + + +// EXPORTS // + +module.exports = properties; diff --git a/lib/node_modules/@stdlib/utils/properties/package.json b/lib/node_modules/@stdlib/utils/properties/package.json new file mode 100644 index 000000000000..68ebc056000a --- /dev/null +++ b/lib/node_modules/@stdlib/utils/properties/package.json @@ -0,0 +1,70 @@ +{ + "name": "@stdlib/utils/properties", + "version": "0.0.0", + "description": "Return an array of an object's own enumerable and non-enumerable property names and symbols.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "names", + "keys", + "symbols", + "syms", + "enumerable", + "non-enumerable", + "own", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/properties/test/test.js b/lib/node_modules/@stdlib/utils/properties/test/test.js new file mode 100644 index 000000000000..e252097f8acf --- /dev/null +++ b/lib/node_modules/@stdlib/utils/properties/test/test.js @@ -0,0 +1,139 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var properties = require( './../lib' ); + + +// VARIABLES // + +var hasSymbols = hasSymbolSupport(); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof properties, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns an array of an object\'s own property names and symbols', function test( t ) { + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + syms = []; + + function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + if ( hasSymbols ) { + syms.push( Symbol( '0' ) ); + defineProperty( this, syms[ 0 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 0 + }); + } + return this; + } + + Foo.prototype.foo = [ 'bar' ]; + if ( hasSymbols ) { + syms.push( Symbol( '1' ) ); + defineProperty( Foo.prototype, syms[ 1 ], { + 'configurable': false, + 'enumerable': true, + 'writable': false, + 'value': 1 + }); + } + + obj = new Foo(); + + expected = [ 'beep', 'a' ]; + if ( hasSymbols ) { + expected.push( syms[ 0 ] ); + } + actual = properties( obj ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s own properties (string)', function test( t ) { + var expected; + var actual; + var idx; + var i; + + expected = [ '0', '1', '2', 'length' ]; + actual = properties( 'foo' ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided non-string primitives', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + 3.14, + NaN, + true, + false, + void 0, + null + ]; + if ( hasSymbols ) { + values.push( Symbol( 'beep' ) ); + } + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = properties( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+String( values[ i ] ) ); + } + t.end(); +}); From 17b1f9fd6784cc33c5c55fbfb181781eb03e3548 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 13:14:03 -0700 Subject: [PATCH 0306/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 3c1e7adcfadd..ecbc781ea4fa 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1233,6 +1233,15 @@ setReadOnly( utils, 'pop', require( '@stdlib/utils/pop' ) ); */ setReadOnly( utils, 'prepend', require( '@stdlib/utils/prepend' ) ); +/** +* @name properties +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/properties} +*/ +setReadOnly( utils, 'properties', require( '@stdlib/utils/properties' ) ); + /** * @name propertyDescriptor * @memberof utils From 8c758c4ac9387f0f056484dede68b60336c3a653 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 13:15:55 -0700 Subject: [PATCH 0307/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/p.js | 14 ++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 1 + 3 files changed, 16 insertions(+) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js index 537079edf827..385765502895 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js @@ -277,6 +277,20 @@ ns.push({ ] }); +ns.push({ + 'alias': 'properties', + 'path': '@stdlib/utils/properties', + 'value': require( '@stdlib/utils/properties' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/define-properties', + '@stdlib/utils/inherited-properties', + '@stdlib/utils/properties-in', + '@stdlib/utils/property-names', + '@stdlib/utils/property-symbols' + ] +}); + ns.push({ 'alias': 'propertyDescriptor', 'path': '@stdlib/utils/property-descriptor', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 6bf745e1ab4a..a2ef68dd65ab 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1419,6 +1419,7 @@ var db = { "pluck": "arr = [\n { 'a': 1, 'b': 2 },\n { 'a': 0.5, 'b': 3 }\n];\nout = pluck( arr, 'a' )\narr = [\n { 'a': 1, 'b': 2 },\n { 'a': 0.5, 'b': 3 }\n];\nout = pluck( arr, 'a', { 'copy': false } )\nbool = ( arr[ 0 ] === out[ 0 ] )\n", "pop": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\nout = pop( arr )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\nout = pop( arr )\n\n// Array-like object:\narr = { 'length': 2, '0': 1.0, '1': 2.0 };\nout = pop( arr )\n", "prepend": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\narr = prepend( arr, [ 6.0, 7.0 ] )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\narr = prepend( arr, [ 3.0, 4.0 ] )\n\n// Array-like object:\narr = { 'length': 1, '0': 1.0 };\narr = prepend( arr, [ 2.0, 3.0 ] )\n", + "properties": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nprops = properties( obj )\n", "propertyDescriptor": "obj = { 'a': 'b' };\ndesc = propertyDescriptor( obj, 'a' )\n", "propertyDescriptorIn": "obj = { 'a': 'b' };\ndesc = propertyDescriptorIn( obj, 'a' )\n", "propertyDescriptors": "obj = { 'a': 'b' };\ndesc = propertyDescriptors( obj )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index b63dd7dd6789..033723ec2278 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1420,6 +1420,7 @@ var db = { "pluck": "\npluck( arr, prop[, options] )\n Extracts a property value from each element of an object array.\n\n The function skips `null` and `undefined` array elements.\n\n Extracted values are not cloned.\n\n Parameters\n ----------\n arr: Array\n Source array.\n\n prop: string\n Property to access.\n\n options: Object (optional)\n Options.\n\n options.copy: boolean (optional)\n Boolean indicating whether to return a new data structure. To mutate the\n input data structure (e.g., when input values can be discarded or when\n optimizing memory usage), set the `copy` option to `false`. Default:\n true.\n\n Returns\n -------\n out: Array\n Destination array.\n\n Examples\n --------\n > var arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > var out = pluck( arr, 'a' )\n [ 1, 0.5 ]\n\n > arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > out = pluck( arr, 'a', { 'copy': false } )\n [ 1, 0.5 ]\n > var bool = ( arr[ 0 ] === out[ 0 ] )\n true\n\n See Also\n --------\n deepPluck, pick\n", "pop": "\npop( collection )\n Removes and returns the last element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = pop( arr )\n [ [ 1.0, 2.0, 3.0, 4.0 ], 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = pop( arr )\n [ [ 1.0 ], 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = pop( arr )\n [ { 'length': 1, '0': 1.0 }, 2.0 ]\n\n See Also\n --------\n push, shift, unshift\n", "prepend": "\nprepend( collection1, collection2 )\n Adds the elements of one collection to the beginning of another collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection1: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n collection2: Array|TypedArray|Object\n A collection containing the elements to add. If the collection is an\n `Object`, the collection should be array-like.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = prepend( arr, [ 6.0, 7.0 ] )\n [ 6.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = prepend( arr, [ 3.0, 4.0 ] )\n [ 3.0, 4.0, 1.0, 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 1, '0': 1.0 };\n > arr = prepend( arr, [ 2.0, 3.0 ] )\n { 'length': 3, '0': 2.0, '1': 3.0, '2': 1.0 }\n\n See Also\n --------\n append, unshift\n", + "properties": "\nproperties( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names and symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own enumerable and non-enumerable properties.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var props = properties( obj )\n [ 'beep' ]\n\n See Also\n --------\n defineProperties, propertyNames, propertySymbols\n", "propertyDescriptor": "\npropertyDescriptor( value, property )\n Returns a property descriptor for an object's own property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string|symbol\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptor( obj, 'a' )\n {...}\n\n See Also\n --------\n hasOwnProp, defineProperty, propertyDescriptorIn, propertyDescriptors\n", "propertyDescriptorIn": "\npropertyDescriptorIn( value, property )\n Returns a property descriptor for an object's own or inherited property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string|symbol\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptorIn( obj, 'a' )\n {...}\n\n See Also\n --------\n hasProp, defineProperty, propertyDescriptor, propertyDescriptorsIn\n", "propertyDescriptors": "\npropertyDescriptors( value )\n Returns an object's own property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n desc: Object\n Property descriptors.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptors( obj )\n { 'a': {...} }\n\n See Also\n --------\n defineProperty, defineProperties, propertyDescriptor, propertyDescriptorsIn, propertyNames, propertySymbols\n", From ea4b63220f83682f619ad14d1aa25ab5992c36c1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 14:28:49 -0700 Subject: [PATCH 0308/1062] Add utility to return an object's property names and symbols --- .../@stdlib/utils/properties-in/README.md | 99 +++++++++++++++++ .../properties-in/benchmark/benchmark.js | 72 ++++++++++++ .../@stdlib/utils/properties-in/docs/repl.txt | 24 ++++ .../utils/properties-in/examples/index.js | 48 ++++++++ .../@stdlib/utils/properties-in/lib/index.js | 40 +++++++ .../@stdlib/utils/properties-in/lib/main.js | 97 +++++++++++++++++ .../@stdlib/utils/properties-in/package.json | 73 +++++++++++++ .../@stdlib/utils/properties-in/test/test.js | 103 ++++++++++++++++++ 8 files changed, 556 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/properties-in/README.md create mode 100644 lib/node_modules/@stdlib/utils/properties-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/properties-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/properties-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/properties-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/properties-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/properties-in/package.json create mode 100644 lib/node_modules/@stdlib/utils/properties-in/test/test.js diff --git a/lib/node_modules/@stdlib/utils/properties-in/README.md b/lib/node_modules/@stdlib/utils/properties-in/README.md new file mode 100644 index 000000000000..a84eda01e144 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/properties-in/README.md @@ -0,0 +1,99 @@ + + +# propertiesIn + +> Return an array of an object's own and inherited property names and [symbols][@stdlib/symbol/ctor]. + +
+ +## Usage + +```javascript +var propertiesIn = require( '@stdlib/utils/properties-in' ); +``` + +#### propertiesIn( obj ) + +Returns an `array` of an object's own and inherited property names and [symbols][@stdlib/symbol/ctor]. + +```javascript +var props = propertiesIn( [] ); +// returns [...] +``` + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var propertiesIn = require( '@stdlib/utils/properties-in' ); + +var hasSymbols; +var props; +var obj; + +hasSymbols = hasSymbolSupport(); + +function Foo() { + this.a = 'b'; + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'b'; + } + return this; +} + +Foo.prototype.foo = 'bar'; +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'foo' ) ] = 'bar'; +} + +obj = new Foo(); +props = propertiesIn( obj ); + +console.log( props ); +// => [ 'a', 'foo', ... ] +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/properties-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/properties-in/benchmark/benchmark.js new file mode 100644 index 000000000000..c7086a52332e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/properties-in/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var propertiesIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = propertiesIn( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/properties-in/docs/repl.txt b/lib/node_modules/@stdlib/utils/properties-in/docs/repl.txt new file mode 100644 index 000000000000..cd347350c218 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/properties-in/docs/repl.txt @@ -0,0 +1,24 @@ + +{{alias}}( value ) + Returns an array of an object's own and inherited property names and + symbols. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + Returns + ------- + props: Array + List of an object's own and inherited property names and symbols. + + Examples + -------- + > var props = {{alias}}( [] ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/properties-in/examples/index.js b/lib/node_modules/@stdlib/utils/properties-in/examples/index.js new file mode 100644 index 000000000000..ce42a0fc3273 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/properties-in/examples/index.js @@ -0,0 +1,48 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var propertiesIn = require( './../lib' ); + +var hasSymbols; +var props; +var obj; + +hasSymbols = hasSymbolSupport(); + +function Foo() { + this.a = 'b'; + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'b'; + } + return this; +} + +Foo.prototype.foo = 'bar'; +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'foo' ) ] = 'bar'; +} + +obj = new Foo(); +props = propertiesIn( obj ); + +console.log( props ); +// => [ 'a', 'foo', ... ] diff --git a/lib/node_modules/@stdlib/utils/properties-in/lib/index.js b/lib/node_modules/@stdlib/utils/properties-in/lib/index.js new file mode 100644 index 000000000000..ca69dbea269e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/properties-in/lib/index.js @@ -0,0 +1,40 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's own and inherited property names and symbols. +* +* @module @stdlib/utils/properties-in +* +* @example +* var propertiesIn = require( '@stdlib/utils/properties-in' ); +* +* var props = propertiesIn( [] ); +* // returns [...] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/properties-in/lib/main.js b/lib/node_modules/@stdlib/utils/properties-in/lib/main.js new file mode 100644 index 000000000000..3b7410066d55 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/properties-in/lib/main.js @@ -0,0 +1,97 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); +var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating if an array contains a provided value. +* +* @private +* @param {Array} arr - array +* @param {*} v - search value +* @returns {boolean} boolean indicating if an array contains a search value +*/ +function contains( arr, v ) { + var i; + for ( i = 0; i < arr.length; i++ ) { + if ( arr[ i ] === v ) { + return true; + } + } + return false; +} + + +// MAIN // + +/** +* Returns an array of an object's own and inherited property names and symbols. +* +* @param {*} value - input object +* @returns {Array} a list of own and inherited property names and symbols +* +* @example +* var props = propertiesIn( [] ); +* // returns [...] +*/ +function propertiesIn( value ) { + var out; + var obj; + var tmp; + var i; + + if ( value === null || value === void 0 ) { + return []; + } + // Cast the value to an object: + obj = Object( value ); + + // Walk the prototype chain collecting all properties... + out = []; + do { + tmp = getOwnPropertyNames( obj ); + for ( i = 0; i < tmp.length; i++ ) { + if ( contains( out, tmp[ i ] ) === false ) { + out.push( tmp[ i ] ); + } + } + tmp = getOwnPropertySymbols( obj ); + for ( i = 0; i < tmp.length; i++ ) { + if ( contains( out, tmp[ i ] ) === false ) { + out.push( tmp[ i ] ); + } + } + obj = getPrototypeOf( obj ); + } while ( obj ); + + return out; +} + + +// EXPORTS // + +module.exports = propertiesIn; diff --git a/lib/node_modules/@stdlib/utils/properties-in/package.json b/lib/node_modules/@stdlib/utils/properties-in/package.json new file mode 100644 index 000000000000..08abe94dc2e6 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/properties-in/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/utils/properties-in", + "version": "0.0.0", + "description": "Return an array of an object's own and inherited property names and symbols.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "names", + "names-in", + "keys", + "keys-in", + "symbols", + "symbols-in", + "symbol", + "sym", + "own", + "inherited", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/properties-in/test/test.js b/lib/node_modules/@stdlib/utils/properties-in/test/test.js new file mode 100644 index 000000000000..a91213749562 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/properties-in/test/test.js @@ -0,0 +1,103 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var propertiesIn = require( './../lib' ); + + +// VARIABLES // + +var hasSymbols = hasSymbolSupport(); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof propertiesIn, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns an array of an object\'s own and inherited property names and symbols', function test( t ) { + var expected; + var symbols; + var actual; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + symbols = [ Symbol( 'a' ), Symbol( 'b' ), Symbol( 'c' ) ]; + } else { + symbols = []; + } + + function Foo() { + this.a = 'b'; + if ( hasSymbols ) { + this[ symbols[ 0 ] ] = 0; + this[ symbols[ 1 ] ] = 1; + } + return this; + } + + Foo.prototype.a = 'c'; + Foo.prototype.foo = 'bar'; + if ( hasSymbols ) { + Foo.prototype[ symbols[ 1 ] ] = '1'; + Foo.prototype[ symbols[ 2 ] ] = 2; + } + + obj = new Foo(); + + expected = [ 'a', 'foo' ].concat( symbols ); + actual = propertiesIn( obj ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = propertiesIn( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From 081d9db72eb7d96511872cc0b2b226bd7ae7c57c Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 14:32:18 -0700 Subject: [PATCH 0309/1062] Update tests --- .../@stdlib/utils/properties-in/test/test.js | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/properties-in/test/test.js b/lib/node_modules/@stdlib/utils/properties-in/test/test.js index a91213749562..82149b668bc7 100644 --- a/lib/node_modules/@stdlib/utils/properties-in/test/test.js +++ b/lib/node_modules/@stdlib/utils/properties-in/test/test.js @@ -22,6 +22,7 @@ var tape = require( 'tape' ); var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); var Symbol = require( '@stdlib/symbol/ctor' ); var propertiesIn = require( './../lib' ); @@ -56,23 +57,44 @@ tape( 'the function returns an array of an object\'s own and inherited property function Foo() { this.a = 'b'; + defineProperty( this, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': true + }); if ( hasSymbols ) { this[ symbols[ 0 ] ] = 0; - this[ symbols[ 1 ] ] = 1; + defineProperty( this, symbols[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 1 + }); } return this; } Foo.prototype.a = 'c'; - Foo.prototype.foo = 'bar'; + defineProperty( Foo.prototype, 'foo', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bar' + }); if ( hasSymbols ) { Foo.prototype[ symbols[ 1 ] ] = '1'; - Foo.prototype[ symbols[ 2 ] ] = 2; + defineProperty( Foo.prototype, symbols[ 2 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 2 + }); } obj = new Foo(); - expected = [ 'a', 'foo' ].concat( symbols ); + expected = [ 'a', 'foo', 'beep' ].concat( symbols ); actual = propertiesIn( obj ); t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); From d39b2c325ce8f3196a8e3c9760f54611dd1a55a3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 14:32:40 -0700 Subject: [PATCH 0310/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index ecbc781ea4fa..26d50e6b526b 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1242,6 +1242,15 @@ setReadOnly( utils, 'prepend', require( '@stdlib/utils/prepend' ) ); */ setReadOnly( utils, 'properties', require( '@stdlib/utils/properties' ) ); +/** +* @name propertiesIn +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/properties-in} +*/ +setReadOnly( utils, 'propertiesIn', require( '@stdlib/utils/properties-in' ) ); + /** * @name propertyDescriptor * @memberof utils From 46039362fce3a641348152c1eba60c839681f59f Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 14:34:06 -0700 Subject: [PATCH 0311/1062] Update tests --- .../utils/property-symbols-in/test/test.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/property-symbols-in/test/test.js b/lib/node_modules/@stdlib/utils/property-symbols-in/test/test.js index 4c71815d8f55..333013d4ade7 100644 --- a/lib/node_modules/@stdlib/utils/property-symbols-in/test/test.js +++ b/lib/node_modules/@stdlib/utils/property-symbols-in/test/test.js @@ -22,6 +22,7 @@ var tape = require( 'tape' ); var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); var Symbol = require( '@stdlib/symbol/ctor' ); var propertySymbolsIn = require( './../lib' ); @@ -57,14 +58,24 @@ tape( 'the function returns an array of an object\'s own and inherited symbol pr function Foo() { if ( hasSymbols ) { this[ symbols[ 0 ] ] = 0; - this[ symbols[ 1 ] ] = 1; + defineProperty( this, symbols[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 1 + }); } return this; } if ( hasSymbols ) { Foo.prototype[ symbols[ 1 ] ] = '1'; - Foo.prototype[ symbols[ 2 ] ] = 2; + defineProperty( Foo.prototype, symbols[ 2 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 2 + }); } obj = new Foo(); From ab4fd71dac4f041b3a26fcbeb5c46cc886ed8a3a Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 14:35:35 -0700 Subject: [PATCH 0312/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/p.js | 14 ++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js index 385765502895..f059fb3b5df7 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/p.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/p.js @@ -291,6 +291,20 @@ ns.push({ ] }); +ns.push({ + 'alias': 'propertiesIn', + 'path': '@stdlib/utils/properties-in', + 'value': require( '@stdlib/utils/properties-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/define-properties', + '@stdlib/utils/inherited-properties', + '@stdlib/utils/properties', + '@stdlib/utils/property-names-in', + '@stdlib/utils/property-symbols-in' + ] +}); + ns.push({ 'alias': 'propertyDescriptor', 'path': '@stdlib/utils/property-descriptor', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index a2ef68dd65ab..d95929a9a3bb 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1420,6 +1420,7 @@ var db = { "pop": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\nout = pop( arr )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\nout = pop( arr )\n\n// Array-like object:\narr = { 'length': 2, '0': 1.0, '1': 2.0 };\nout = pop( arr )\n", "prepend": "\n// Arrays:\narr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\narr = prepend( arr, [ 6.0, 7.0 ] )\n\n// Typed arrays:\narr = new Float64Array( [ 1.0, 2.0 ] );\narr = prepend( arr, [ 3.0, 4.0 ] )\n\n// Array-like object:\narr = { 'length': 1, '0': 1.0 };\narr = prepend( arr, [ 2.0, 3.0 ] )\n", "properties": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nprops = properties( obj )\n", + "propertiesIn": "props = propertiesIn( [] )\n", "propertyDescriptor": "obj = { 'a': 'b' };\ndesc = propertyDescriptor( obj, 'a' )\n", "propertyDescriptorIn": "obj = { 'a': 'b' };\ndesc = propertyDescriptorIn( obj, 'a' )\n", "propertyDescriptors": "obj = { 'a': 'b' };\ndesc = propertyDescriptors( obj )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 033723ec2278..6f18b27b6f7c 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1420,7 +1420,8 @@ var db = { "pluck": "\npluck( arr, prop[, options] )\n Extracts a property value from each element of an object array.\n\n The function skips `null` and `undefined` array elements.\n\n Extracted values are not cloned.\n\n Parameters\n ----------\n arr: Array\n Source array.\n\n prop: string\n Property to access.\n\n options: Object (optional)\n Options.\n\n options.copy: boolean (optional)\n Boolean indicating whether to return a new data structure. To mutate the\n input data structure (e.g., when input values can be discarded or when\n optimizing memory usage), set the `copy` option to `false`. Default:\n true.\n\n Returns\n -------\n out: Array\n Destination array.\n\n Examples\n --------\n > var arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > var out = pluck( arr, 'a' )\n [ 1, 0.5 ]\n\n > arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > out = pluck( arr, 'a', { 'copy': false } )\n [ 1, 0.5 ]\n > var bool = ( arr[ 0 ] === out[ 0 ] )\n true\n\n See Also\n --------\n deepPluck, pick\n", "pop": "\npop( collection )\n Removes and returns the last element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = pop( arr )\n [ [ 1.0, 2.0, 3.0, 4.0 ], 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = pop( arr )\n [ [ 1.0 ], 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = pop( arr )\n [ { 'length': 1, '0': 1.0 }, 2.0 ]\n\n See Also\n --------\n push, shift, unshift\n", "prepend": "\nprepend( collection1, collection2 )\n Adds the elements of one collection to the beginning of another collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection1: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n collection2: Array|TypedArray|Object\n A collection containing the elements to add. If the collection is an\n `Object`, the collection should be array-like.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = prepend( arr, [ 6.0, 7.0 ] )\n [ 6.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = prepend( arr, [ 3.0, 4.0 ] )\n [ 3.0, 4.0, 1.0, 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 1, '0': 1.0 };\n > arr = prepend( arr, [ 2.0, 3.0 ] )\n { 'length': 3, '0': 2.0, '1': 3.0, '2': 1.0 }\n\n See Also\n --------\n append, unshift\n", - "properties": "\nproperties( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names and symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own enumerable and non-enumerable properties.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var props = properties( obj )\n [ 'beep' ]\n\n See Also\n --------\n defineProperties, propertyNames, propertySymbols\n", + "properties": "\nproperties( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names and symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own enumerable and non-enumerable properties.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var props = properties( obj )\n [ 'beep' ]\n\n See Also\n --------\n defineProperties, propertiesIn, propertyNames, propertySymbols\n", + "propertiesIn": "\npropertiesIn( value )\n Returns an array of an object's own and inherited property names and\n symbols.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own and inherited property names and symbols.\n\n Examples\n --------\n > var props = propertiesIn( [] )\n\n See Also\n --------\n defineProperties, properties, propertyNamesIn, propertySymbolsIn\n", "propertyDescriptor": "\npropertyDescriptor( value, property )\n Returns a property descriptor for an object's own property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string|symbol\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptor( obj, 'a' )\n {...}\n\n See Also\n --------\n hasOwnProp, defineProperty, propertyDescriptorIn, propertyDescriptors\n", "propertyDescriptorIn": "\npropertyDescriptorIn( value, property )\n Returns a property descriptor for an object's own or inherited property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string|symbol\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptorIn( obj, 'a' )\n {...}\n\n See Also\n --------\n hasProp, defineProperty, propertyDescriptor, propertyDescriptorsIn\n", "propertyDescriptors": "\npropertyDescriptors( value )\n Returns an object's own property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n desc: Object\n Property descriptors.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptors( obj )\n { 'a': {...} }\n\n See Also\n --------\n defineProperty, defineProperties, propertyDescriptor, propertyDescriptorsIn, propertyNames, propertySymbols\n", From 40ebc87f90b4ed8718d6536549dacf824da3a919 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 14:41:28 -0700 Subject: [PATCH 0313/1062] Update feature list --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7b05f1a3d386..053ccafe8b2e 100644 --- a/README.md +++ b/README.md @@ -66,13 +66,13 @@ This is the GitHub repository of stdlib source code and documentation. For help Demo showcasing PRNGs -- 160+ general [utilities][@stdlib/utils] for data transformation, functional programming, and asynchronous control flow. +- 200+ general [utilities][@stdlib/utils] for data transformation, functional programming, and asynchronous control flow.
Demo showcasing general utilities
-- 170+ [assertion utilities][@stdlib/assert] for data validation and feature detection. +- 200+ [assertion utilities][@stdlib/assert] for data validation and feature detection.
Demo showcasing assertion utilities From 653095f259be3f1ecda8559201992a78b2998562 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 15:08:16 -0700 Subject: [PATCH 0314/1062] Rename variable --- .../@stdlib/utils/inherited-property-symbols/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/inherited-property-symbols/lib/main.js b/lib/node_modules/@stdlib/utils/inherited-property-symbols/lib/main.js index 49046ccdb4dd..fc5a9a5641be 100644 --- a/lib/node_modules/@stdlib/utils/inherited-property-symbols/lib/main.js +++ b/lib/node_modules/@stdlib/utils/inherited-property-symbols/lib/main.js @@ -58,7 +58,7 @@ function contains( arr, v ) { * @returns {Array} a list of inherited symbol properties * * @example -* var keys = inheritedPropertySymbols( [] ); +* var symbols = inheritedPropertySymbols( [] ); */ function inheritedPropertySymbols( value, level ) { var names; From 74e29fad7797a2b36f4446c8b74995839975fd49 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 15:09:11 -0700 Subject: [PATCH 0315/1062] Rename variable --- .../utils/inherited-property-symbols/lib/main.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/inherited-property-symbols/lib/main.js b/lib/node_modules/@stdlib/utils/inherited-property-symbols/lib/main.js index fc5a9a5641be..f3f54a7d0024 100644 --- a/lib/node_modules/@stdlib/utils/inherited-property-symbols/lib/main.js +++ b/lib/node_modules/@stdlib/utils/inherited-property-symbols/lib/main.js @@ -61,7 +61,7 @@ function contains( arr, v ) { * var symbols = inheritedPropertySymbols( [] ); */ function inheritedPropertySymbols( value, level ) { - var names; + var out; var obj; var tmp; var N; @@ -83,20 +83,20 @@ function inheritedPropertySymbols( value, level ) { obj = getPrototypeOf( value ); // Walk the prototype chain collecting all symbol properties... - names = []; + out = []; n = 1; while ( obj && n <= N ) { tmp = propertySymbols( obj ); for ( i = 0; i < tmp.length; i++ ) { - if ( contains( names, tmp[ i ] ) === false ) { - names.push( tmp[ i ] ); + if ( contains( out, tmp[ i ] ) === false ) { + out.push( tmp[ i ] ); } } obj = getPrototypeOf( obj ); n += 1; } - return names; + return out; } From 05c83bb3e2d57a4c696dc0080e78f76c1a9b2d9d Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 15:22:46 -0700 Subject: [PATCH 0316/1062] Add utility to return an object's inherited properties --- .../utils/inherited-properties/README.md | 130 +++++++ .../benchmark/benchmark.js | 72 ++++ .../utils/inherited-properties/docs/repl.txt | 26 ++ .../inherited-properties/examples/index.js | 73 ++++ .../utils/inherited-properties/lib/index.js | 40 +++ .../utils/inherited-properties/lib/main.js | 113 ++++++ .../utils/inherited-properties/package.json | 72 ++++ .../utils/inherited-properties/test/test.js | 327 ++++++++++++++++++ 8 files changed, 853 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/inherited-properties/README.md create mode 100644 lib/node_modules/@stdlib/utils/inherited-properties/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-properties/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/inherited-properties/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-properties/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-properties/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-properties/package.json create mode 100644 lib/node_modules/@stdlib/utils/inherited-properties/test/test.js diff --git a/lib/node_modules/@stdlib/utils/inherited-properties/README.md b/lib/node_modules/@stdlib/utils/inherited-properties/README.md new file mode 100644 index 000000000000..330afaae50fb --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-properties/README.md @@ -0,0 +1,130 @@ + + +# inheritedProperties + +> Return an array of an object's inherited property names and [symbols][@stdlib/symbol/ctor]. + +
+ +## Usage + +```javascript +var inheritedProperties = require( '@stdlib/utils/inherited-properties' ); +``` + +#### inheritedProperties( obj\[, level] ) + +Returns an `array` of an object's inherited property names and [symbols][@stdlib/symbol/ctor]. + +```javascript +var props = inheritedProperties( [ 1, 2, 3 ] ); +// returns [...] +``` + +By default, the function walks an object's entire prototype chain. To limit the inheritance level, provide a `level` argument. + +```javascript +var props = inheritedProperties( [ 1, 2, 3 ], 1 ); +``` + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var inheritedProperties = require( '@stdlib/utils/inherited-properties' ); + +var hasSymbols; +var props; +var obj; + +hasSymbols = hasSymbolSupport(); + +function Foo() { + this.a = 'b'; + defineProperty( this, 'foo', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bar' + }); + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'b'; + defineProperty( this, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' + }); + } + return this; +} + +Foo.prototype.c = 'd'; +defineProperty( Foo.prototype, 'bip', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' +}); +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'c' ) ] = 'd'; + defineProperty( Foo.prototype, Symbol( 'e' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'f' + }); +} + +obj = new Foo(); +props = inheritedProperties( obj ); + +console.log( props ); +// => [ 'c', 'bip', ... ] +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/inherited-properties/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/inherited-properties/benchmark/benchmark.js new file mode 100644 index 000000000000..3fda6b622010 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-properties/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var inheritedProperties = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = inheritedProperties( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/inherited-properties/docs/repl.txt b/lib/node_modules/@stdlib/utils/inherited-properties/docs/repl.txt new file mode 100644 index 000000000000..7cb0280a384a --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-properties/docs/repl.txt @@ -0,0 +1,26 @@ + +{{alias}}( value[, level] ) + Returns an array of an object's inherited property names and symbols. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + level: integer (optional) + Inheritance level. + + Returns + ------- + symbols: Array + List of an object's inherited property names and symbols. + + Examples + -------- + > var symbols = {{alias}}( [] ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/inherited-properties/examples/index.js b/lib/node_modules/@stdlib/utils/inherited-properties/examples/index.js new file mode 100644 index 000000000000..5afe3476f3a2 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-properties/examples/index.js @@ -0,0 +1,73 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var inheritedProperties = require( './../lib' ); + +var hasSymbols; +var props; +var obj; + +hasSymbols = hasSymbolSupport(); + +function Foo() { + this.a = 'b'; + defineProperty( this, 'foo', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bar' + }); + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'b'; + defineProperty( this, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' + }); + } + return this; +} + +Foo.prototype.c = 'd'; +defineProperty( Foo.prototype, 'bip', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' +}); +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'c' ) ] = 'd'; + defineProperty( Foo.prototype, Symbol( 'e' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'f' + }); +} + +obj = new Foo(); +props = inheritedProperties( obj ); + +console.log( props ); +// => [ 'c', 'bip', ... ] diff --git a/lib/node_modules/@stdlib/utils/inherited-properties/lib/index.js b/lib/node_modules/@stdlib/utils/inherited-properties/lib/index.js new file mode 100644 index 000000000000..2c9e7b7adc38 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-properties/lib/index.js @@ -0,0 +1,40 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's inherited property names and symbols. +* +* @module @stdlib/utils/inherited-properties +* +* @example +* var inheritedProperties = require( '@stdlib/utils/inherited-properties' ); +* +* var props = inheritedProperties( [] ); +* // returns [...] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/inherited-properties/lib/main.js b/lib/node_modules/@stdlib/utils/inherited-properties/lib/main.js new file mode 100644 index 000000000000..2d3cecd11bcb --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-properties/lib/main.js @@ -0,0 +1,113 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var MAX_SAFE_INTEGER = require( '@stdlib/constants/math/float64-max-safe-integer' ); +var isPositiveInteger = require( '@stdlib/assert/is-positive-integer' ).isPrimitive; +var propertySymbols = require( '@stdlib/utils/property-symbols' ); +var propertyNames = require( '@stdlib/utils/property-names' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating if an array contains a provided value. +* +* @private +* @param {Array} arr - array +* @param {*} v - search value +* @returns {boolean} boolean indicating if an array contains a search value +*/ +function contains( arr, v ) { + var i; + for ( i = 0; i < arr.length; i++ ) { + if ( arr[ i ] === v ) { + return true; + } + } + return false; +} + + +// MAIN // + +/** +* Returns an array of an object's inherited property names and symbols. +* +* @param {*} value - input object +* @param {PositiveInteger} [level] - inheritance level +* @throws {TypeError} second argument must be a positive integer +* @returns {Array} a list of inherited property names and symbols +* +* @example +* var props = inheritedProperties( [] ); +* // returns [...] +*/ +function inheritedProperties( value, level ) { + var out; + var obj; + var tmp; + var N; + var n; + var i; + + if ( arguments.length > 1 ) { + if ( !isPositiveInteger( level ) ) { + throw new TypeError( 'invalid argument. Second argument must be a positive integer. Value: `' + level + '`.' ); + } + N = level; + } else { + N = MAX_SAFE_INTEGER; + } + if ( value === null || value === void 0 ) { + return []; + } + // Get the value's prototype: + obj = getPrototypeOf( value ); + + // Walk the prototype chain collecting all properties... + out = []; + n = 1; + while ( obj && n <= N ) { + tmp = propertyNames( obj ); + for ( i = 0; i < tmp.length; i++ ) { + if ( contains( out, tmp[ i ] ) === false ) { + out.push( tmp[ i ] ); + } + } + tmp = propertySymbols( obj ); + for ( i = 0; i < tmp.length; i++ ) { + if ( contains( out, tmp[ i ] ) === false ) { + out.push( tmp[ i ] ); + } + } + obj = getPrototypeOf( obj ); + n += 1; + } + + return out; +} + + +// EXPORTS // + +module.exports = inheritedProperties; diff --git a/lib/node_modules/@stdlib/utils/inherited-properties/package.json b/lib/node_modules/@stdlib/utils/inherited-properties/package.json new file mode 100644 index 000000000000..80cc8613570a --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-properties/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/utils/inherited-properties", + "version": "0.0.0", + "description": "Return an array of an object's inherited property names and symbols.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "names", + "names-in", + "keys", + "symbols", + "symbols-in", + "sym", + "symbol", + "inherited", + "in", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/inherited-properties/test/test.js b/lib/node_modules/@stdlib/utils/inherited-properties/test/test.js new file mode 100644 index 000000000000..52ee08ea1523 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-properties/test/test.js @@ -0,0 +1,327 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var inherit = require( '@stdlib/utils/inherit' ); +var inheritedProperties = require( './../lib' ); + + +// VARIABLES // + +var hasSymbols = hasSymbolSupport(); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof inheritedProperties, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function throws an error if not provided a positive integer for the inheritance level', function test( t ) { + var values; + var i; + + values = [ + '5', + -5, + 0, + 3.14, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + inheritedProperties( {}, value ); + }; + } +}); + +tape( 'the function returns an array of an object\'s inherited property names and symbols', function test( t ) { + var expected; + var symbols; + var actual; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + symbols = [ Symbol( 'a' ), Symbol( 'b' ), Symbol( 'c' ) ]; + } else { + symbols = []; + } + + function Foo() { + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ symbols[ 0 ] ] = 0; + defineProperty( this, symbols[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 1 + }); + } + return this; + } + + Foo.prototype.c = 'c'; + defineProperty( Foo.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + if ( hasSymbols ) { + Foo.prototype[ symbols[ 1 ] ] = 1; + defineProperty( Foo.prototype, symbols[ 2 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 2 + }); + } + + obj = new Foo(); + + if ( hasSymbols ) { + expected = [ 'c', 'd', symbols[ 1 ], symbols[ 2 ] ]; + } else { + expected = []; + } + actual = inheritedProperties( obj ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s inherited property names and symbols (multiple inheritance)', function test( t ) { + var expected; + var symbols; + var actual; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + symbols = [ Symbol( 'a' ), Symbol( 'b' ), Symbol( 'c' ) ]; + } else { + symbols = []; + } + + function Bar() { + return this; + } + + Bar.prototype.c = 'c'; + if ( hasSymbols ) { + Bar.prototype[ symbols[ 1 ] ] = 1; + Bar.prototype[ symbols[ 2 ] ] = 2; + } + + function Foo() { + Bar.call( this ); + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ symbols[ 0 ] ] = 0; + defineProperty( this, symbols[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 1 + }); + } + return this; + } + + inherit( Foo, Bar ); + + defineProperty( Foo.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + if ( hasSymbols ) { + defineProperty( Foo.prototype, symbols[ 2 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 2 + }); + } + + obj = new Foo(); + + if ( hasSymbols ) { + expected = [ 'c', 'd', symbols[ 1 ], symbols[ 2 ] ]; + } else { + expected = []; + } + actual = inheritedProperties( obj ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function supports limiting the inheritance level', function test( t ) { + var expected; + var symbols; + var actual; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + symbols = [ Symbol( 'a' ), Symbol( 'b' ), Symbol( 'c' ) ]; + } else { + symbols = []; + } + + function Bar() { + return this; + } + + Bar.prototype.c = 'c'; + if ( hasSymbols ) { + Bar.prototype[ symbols[ 1 ] ] = 1; + } + + function Foo() { + Bar.call( this ); + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ symbols[ 0 ] ] = 0; + defineProperty( this, symbols[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 1 + }); + } + return this; + } + + inherit( Foo, Bar ); + + defineProperty( Foo.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + if ( hasSymbols ) { + defineProperty( Foo.prototype, symbols[ 2 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 2 + }); + } + + obj = new Foo(); + + if ( hasSymbols ) { + expected = [ 'd', symbols[ 2 ] ]; + } else { + expected = []; + } + actual = inheritedProperties( obj, 1 ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + // Check for the absence of ancestor properties... + if ( hasSymbols ) { + expected = [ 'c', symbols[ 1 ] ]; + } else { + expected = []; + } + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx === -1, true, 'does not contain property: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = inheritedProperties( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From 3631d69cedd40defc62c672d5852074f0fd3988b Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 15:24:25 -0700 Subject: [PATCH 0317/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 26d50e6b526b..4ce0066dc7f9 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -801,6 +801,15 @@ setReadOnly( utils, 'inheritedKeys', require( '@stdlib/utils/inherited-keys' ) ) */ setReadOnly( utils, 'inheritedNonEnumerablePropertyNames', require( '@stdlib/utils/inherited-nonenumerable-property-names' ) ); +/** +* @name inheritedProperties +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/inherited-properties} +*/ +setReadOnly( utils, 'inheritedProperties', require( '@stdlib/utils/inherited-properties' ) ); + /** * @name inheritedPropertyDescriptor * @memberof utils From 55181099300aa1b07541c376cc558d8d91acf1df Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 15:24:53 -0700 Subject: [PATCH 0318/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 13 +++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 +++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index b30cae9adae6..a0379b1ad016 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -1377,6 +1377,19 @@ ns.push({ ] }); +ns.push({ + 'alias': 'inheritedProperties', + 'path': '@stdlib/utils/inherited-properties', + 'value': require( '@stdlib/utils/inherited-properties' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/properties', + '@stdlib/utils/properties-in', + '@stdlib/utils/inherited-property-names', + '@stdlib/utils/inherited-property-symbols' + ] +}); + ns.push({ 'alias': 'inheritedPropertyDescriptor', 'path': '@stdlib/utils/inherited-property-descriptor', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index d95929a9a3bb..63ef5ff10bb9 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1103,6 +1103,7 @@ var db = { "inherit": "\n// Create a parent constructor:\nfunction Foo() { return this; };\nFoo.prototype.beep = function beep() { return 'boop'; };\n\n// Create a child constructor:\nfunction Bar() { Foo.call( this ); return this; };\n\n// Setup inheritance:\ninherit( Bar, Foo );\nbar = new Bar();\nv = bar.beep()\n", "inheritedKeys": "keys = inheritedKeys( {} )\n", "inheritedNonEnumerablePropertyNames": "keys = inheritedNonEnumerablePropertyNames( {} )\n", + "inheritedProperties": "symbols = inheritedProperties( [] )\n", "inheritedPropertyDescriptor": "desc = inheritedPropertyDescriptor( {}, 'toString' )\n", "inheritedPropertyDescriptors": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\ndesc = inheritedPropertyDescriptors( obj )\n", "inheritedPropertyNames": "keys = inheritedPropertyNames( [] )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 6f18b27b6f7c..bcc638c25ffe 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1103,6 +1103,7 @@ var db = { "inherit": "\ninherit( ctor, superCtor )\n Prototypical inheritance by replacing the prototype of one constructor with\n the prototype of another constructor.\n\n This function is not designed to work with ES2015/ES6 classes. For\n ES2015/ES6 classes, use `class` with `extends`.\n\n Parameters\n ----------\n ctor: Object|Function\n Constructor which will inherit.\n\n superCtor: Object|Function\n Super (parent) constructor.\n\n Returns\n -------\n out: Object|Function\n Child constructor.\n\n Examples\n --------\n // Create a parent constructor:\n > function Foo() { return this; };\n > Foo.prototype.beep = function beep() { return 'boop'; };\n\n // Create a child constructor:\n > function Bar() { Foo.call( this ); return this; };\n\n // Setup inheritance:\n > inherit( Bar, Foo );\n > var bar = new Bar();\n > var v = bar.beep()\n 'boop'\n\n", "inheritedKeys": "\ninheritedKeys( value[, level] )\n Returns an array of an object's inherited enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable property names.\n\n Examples\n --------\n > var keys = inheritedKeys( {} )\n\n See Also\n --------\n objectKeys, keysIn, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedNonEnumerablePropertyNames": "\ninheritedNonEnumerablePropertyNames( value[, level] )\n Returns an array of an object's inherited non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited non-enumerable property names.\n\n Examples\n --------\n > var keys = inheritedNonEnumerablePropertyNames( {} )\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertyNames\n", + "inheritedProperties": "\ninheritedProperties( value[, level] )\n Returns an array of an object's inherited property names and symbols.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited property names and symbols.\n\n Examples\n --------\n > var symbols = inheritedProperties( [] )\n\n See Also\n --------\n properties, propertiesIn, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedPropertyDescriptor": "\ninheritedPropertyDescriptor( value, property[, level] )\n Returns a property descriptor for an object's inherited property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string|symbol\n Property name.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var desc = inheritedPropertyDescriptor( {}, 'toString' )\n {...}\n\n See Also\n --------\n propertyDescriptor, propertyDescriptorIn, inheritedKeys, inheritedPropertyDescriptors, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedPropertyDescriptors": "\ninheritedPropertyDescriptors( value[, level] )\n Returns an object's inherited property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n desc: Object\n An object's inherited property descriptors.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var desc = inheritedPropertyDescriptors( obj )\n { 'foo': {...}, ... }\n\n See Also\n --------\n propertyDescriptors, propertyDescriptorsIn, inheritedKeys, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedPropertyNames": "\ninheritedPropertyNames( value[, level] )\n Returns an array of an object's inherited enumerable and non-enumerable\n property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable and non-enumerable property\n names.\n\n Examples\n --------\n > var keys = inheritedPropertyNames( [] )\n\n See Also\n --------\n inheritedKeys, inheritedPropertyDescriptors, inheritedPropertySymbols, propertyNames, propertyNamesIn\n", @@ -1420,8 +1421,8 @@ var db = { "pluck": "\npluck( arr, prop[, options] )\n Extracts a property value from each element of an object array.\n\n The function skips `null` and `undefined` array elements.\n\n Extracted values are not cloned.\n\n Parameters\n ----------\n arr: Array\n Source array.\n\n prop: string\n Property to access.\n\n options: Object (optional)\n Options.\n\n options.copy: boolean (optional)\n Boolean indicating whether to return a new data structure. To mutate the\n input data structure (e.g., when input values can be discarded or when\n optimizing memory usage), set the `copy` option to `false`. Default:\n true.\n\n Returns\n -------\n out: Array\n Destination array.\n\n Examples\n --------\n > var arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > var out = pluck( arr, 'a' )\n [ 1, 0.5 ]\n\n > arr = [\n ... { 'a': 1, 'b': 2 },\n ... { 'a': 0.5, 'b': 3 }\n ... ];\n > out = pluck( arr, 'a', { 'copy': false } )\n [ 1, 0.5 ]\n > var bool = ( arr[ 0 ] === out[ 0 ] )\n true\n\n See Also\n --------\n deepPluck, pick\n", "pop": "\npop( collection )\n Removes and returns the last element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = pop( arr )\n [ [ 1.0, 2.0, 3.0, 4.0 ], 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = pop( arr )\n [ [ 1.0 ], 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = pop( arr )\n [ { 'length': 1, '0': 1.0 }, 2.0 ]\n\n See Also\n --------\n push, shift, unshift\n", "prepend": "\nprepend( collection1, collection2 )\n Adds the elements of one collection to the beginning of another collection.\n\n If the input collection is a typed array, the output value does not equal\n the input reference and the underlying `ArrayBuffer` may *not* be the same\n as the `ArrayBuffer` belonging to the input view.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection1: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the collection should be\n array-like.\n\n collection2: Array|TypedArray|Object\n A collection containing the elements to add. If the collection is an\n `Object`, the collection should be array-like.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Updated collection.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > arr = prepend( arr, [ 6.0, 7.0 ] )\n [ 6.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > arr = prepend( arr, [ 3.0, 4.0 ] )\n [ 3.0, 4.0, 1.0, 2.0 ]\n\n // Array-like object:\n > arr = { 'length': 1, '0': 1.0 };\n > arr = prepend( arr, [ 2.0, 3.0 ] )\n { 'length': 3, '0': 2.0, '1': 3.0, '2': 1.0 }\n\n See Also\n --------\n append, unshift\n", - "properties": "\nproperties( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names and symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own enumerable and non-enumerable properties.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var props = properties( obj )\n [ 'beep' ]\n\n See Also\n --------\n defineProperties, propertiesIn, propertyNames, propertySymbols\n", - "propertiesIn": "\npropertiesIn( value )\n Returns an array of an object's own and inherited property names and\n symbols.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own and inherited property names and symbols.\n\n Examples\n --------\n > var props = propertiesIn( [] )\n\n See Also\n --------\n defineProperties, properties, propertyNamesIn, propertySymbolsIn\n", + "properties": "\nproperties( value )\n Returns an array of an object's own enumerable and non-enumerable property\n names and symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own enumerable and non-enumerable properties.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var props = properties( obj )\n [ 'beep' ]\n\n See Also\n --------\n defineProperties, inheritedProperties, propertiesIn, propertyNames, propertySymbols\n", + "propertiesIn": "\npropertiesIn( value )\n Returns an array of an object's own and inherited property names and\n symbols.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own and inherited property names and symbols.\n\n Examples\n --------\n > var props = propertiesIn( [] )\n\n See Also\n --------\n defineProperties, inheritedProperties, properties, propertyNamesIn, propertySymbolsIn\n", "propertyDescriptor": "\npropertyDescriptor( value, property )\n Returns a property descriptor for an object's own property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string|symbol\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptor( obj, 'a' )\n {...}\n\n See Also\n --------\n hasOwnProp, defineProperty, propertyDescriptorIn, propertyDescriptors\n", "propertyDescriptorIn": "\npropertyDescriptorIn( value, property )\n Returns a property descriptor for an object's own or inherited property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string|symbol\n Property name.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptorIn( obj, 'a' )\n {...}\n\n See Also\n --------\n hasProp, defineProperty, propertyDescriptor, propertyDescriptorsIn\n", "propertyDescriptors": "\npropertyDescriptors( value )\n Returns an object's own property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n desc: Object\n Property descriptors.\n\n Examples\n --------\n > var obj = { 'a': 'b' };\n > var desc = propertyDescriptors( obj )\n { 'a': {...} }\n\n See Also\n --------\n defineProperty, defineProperties, propertyDescriptor, propertyDescriptorsIn, propertyNames, propertySymbols\n", From ab5721d55b4819c73cfe293f2206fdd6190a8b21 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 17:02:48 -0700 Subject: [PATCH 0319/1062] Add utility to return an object's inherited nonenumerable symbol properties --- .../README.md | 166 ++++++++ .../benchmark/benchmark.js | 72 ++++ .../docs/repl.txt | 31 ++ .../examples/index.js | 70 ++++ .../lib/index.js | 39 ++ .../lib/main.js | 109 +++++ .../package.json | 71 ++++ .../test/test.js | 385 ++++++++++++++++++ 8 files changed, 943 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/README.md create mode 100644 lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/package.json create mode 100644 lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/test/test.js diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/README.md b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/README.md new file mode 100644 index 000000000000..532583707834 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/README.md @@ -0,0 +1,166 @@ + + +# inheritedNonEnumerablePropertySymbols + +> Return an array of an object's inherited non-enumerable [symbol][@stdlib/symbol/ctor] properties. + +
+ +## Usage + + + +```javascript +var inheritedNonEnumerablePropertySymbols = require( '@stdlib/utils/inherited-nonenumerable-property-symbols' ); +``` + +#### inheritedNonEnumerablePropertySymbols( obj\[, level] ) + +Returns an `array` of an object's inherited non-enumerable [symbol][@stdlib/symbol/ctor] properties. + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); + +var hasSymbols = hasSymbolSupport(); +var symbols; +var f; + +function Foo() { + if ( hasSymbols ) { + defineProperty( this, Symbol( 'a' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'a' + }); + } + return this; +} + +if ( hasSymbols ) { + defineProperty( Foo.prototype, Symbol( 'b' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'b' + }); +} + +f = new Foo(); +symbols = inheritedNonEnumerablePropertySymbols( f ); +``` + +By default, the function walks an object's entire prototype chain. To limit the inheritance level, provide a `level` argument. + +```javascript +var symbols = inheritedNonEnumerablePropertySymbols( [], 1 ); +``` + +
+ + + +
+ +## Notes + +- Property order is not guaranteed, as `object` property enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s properties, thus allowing for deterministic extraction. + +
+ + + +
+ +## Examples + + + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var inheritedNonEnumerablePropertySymbols = require( '@stdlib/utils/inherited-nonenumerable-property-symbols' ); + +var hasSymbols = hasSymbolSupport(); +var symbols; +var obj; + +function Foo() { + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'a'; + defineProperty( this, Symbol( 'b' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'b' + }); + } + return this; +} + +Foo.prototype.c = 'c'; +defineProperty( Foo.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' +}); +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'c' ) ] = 'c'; + defineProperty( Foo.prototype, Symbol( 'd' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); +} + +obj = new Foo(); +symbols = inheritedNonEnumerablePropertySymbols( obj ); + +console.log( symbols ); +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/benchmark/benchmark.js new file mode 100644 index 000000000000..fa2688219249 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var inheritedNonEnumerablePropertySymbols = require( './../lib' ); // eslint-disable-line id-length + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = inheritedNonEnumerablePropertySymbols( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/docs/repl.txt b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/docs/repl.txt new file mode 100644 index 000000000000..4fadfe2fe1d1 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/docs/repl.txt @@ -0,0 +1,31 @@ + +{{alias}}( value[, level] ) + Returns an array of an object's inherited non-enumerable symbol properties. + + Property order is not guaranteed, as object property enumeration is not + specified according to the ECMAScript specification. In practice, however, + most engines use insertion order to sort an object's properties, thus + allowing for deterministic extraction. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + level: integer (optional) + Inheritance level. + + Returns + ------- + symbols: Array + List of an object's inherited non-enumerable symbol properties. + + Examples + -------- + > var symbols = {{alias}}( [] ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/examples/index.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/examples/index.js new file mode 100644 index 000000000000..82ac451f1b68 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/examples/index.js @@ -0,0 +1,70 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var inheritedNonEnumerablePropertySymbols = require( './../lib' ); // eslint-disable-line id-length + +var hasSymbols = hasSymbolSupport(); +var symbols; +var obj; + +function Foo() { + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'a'; + defineProperty( this, Symbol( 'b' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'b' + }); + } + return this; +} + +Foo.prototype.c = 'c'; +defineProperty( Foo.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' +}); +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'c' ) ] = 'c'; + defineProperty( Foo.prototype, Symbol( 'd' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); +} + +obj = new Foo(); +symbols = inheritedNonEnumerablePropertySymbols( obj ); + +console.log( symbols ); diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/lib/index.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/lib/index.js new file mode 100644 index 000000000000..c3483ab6d69e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/lib/index.js @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's inherited non-enumerable symbol properties. +* +* @module @stdlib/utils/inherited-nonenumerable-property-symbols +* +* @example +* var inheritedNonEnumerablePropertySymbols = require( '@stdlib/utils/inherited-nonenumerable-property-symbols' ); +* +* var symbols = inheritedNonEnumerablePropertySymbols( [] ); +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/lib/main.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/lib/main.js new file mode 100644 index 000000000000..6f48895b4b69 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/lib/main.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var MAX_SAFE_INTEGER = require( '@stdlib/constants/math/float64-max-safe-integer' ); +var isPositiveInteger = require( '@stdlib/assert/is-positive-integer' ).isPrimitive; +var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property' ); +var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating if an array contains a provided value. +* +* @private +* @param {Array} arr - array +* @param {*} v - search value +* @returns {boolean} boolean indicating if an array contains a search value +*/ +function contains( arr, v ) { + var i; + for ( i = 0; i < arr.length; i++ ) { + if ( arr[ i ] === v ) { + return true; + } + } + return false; +} + + +// MAIN // + +/** +* Returns an array of an object's inherited non-enumerable symbol properties. +* +* @param {*} value - input object +* @param {PositiveInteger} [level] - inheritance level +* @throws {TypeError} second argument must be a positive integer +* @returns {Array} a list of inherited non-enumerable symbol properties +* +* @example +* var symbols = inheritedNonEnumerablePropertySymbols( [] ); +*/ +function inheritedNonEnumerablePropertySymbols( value, level ) { // eslint-disable-line id-length + var out; + var obj; + var tmp; + var N; + var n; + var i; + + if ( arguments.length > 1 ) { + if ( !isPositiveInteger( level ) ) { + throw new TypeError( 'invalid argument. Second argument must be a positive integer. Value: `' + level + '`.' ); + } + N = level; + } else { + N = MAX_SAFE_INTEGER; + } + if ( value === null || value === void 0 ) { + return []; + } + // Get the value's prototype: + obj = getPrototypeOf( value ); + + // Walk the prototype chain collecting all non-enumerable symbol properties... + out = []; + n = 1; + while ( obj && n <= N ) { + tmp = getOwnPropertySymbols( obj ); + for ( i = 0; i < tmp.length; i++ ) { + if ( + isNonEnumerableProperty( obj, tmp[ i ] ) && + contains( out, tmp[ i ] ) === false + ) { + out.push( tmp[ i ] ); + } + } + obj = getPrototypeOf( obj ); + n += 1; + } + + return out; +} + + +// EXPORTS // + +module.exports = inheritedNonEnumerablePropertySymbols; diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/package.json b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/package.json new file mode 100644 index 000000000000..e278d2b43629 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/utils/inherited-nonenumerable-property-symbols", + "version": "0.0.0", + "description": "Return an array of an object's inherited non-enumerable symbol properties.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "symbols", + "syms", + "symbols-in", + "enumerable", + "nonenumerable", + "non-enumerable", + "hidden", + "inherited", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/test/test.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/test/test.js new file mode 100644 index 000000000000..b89721a596c1 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/test/test.js @@ -0,0 +1,385 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var inherit = require( '@stdlib/utils/inherit' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var inheritedNonEnumerablePropertySymbols = require( './../lib' ); // eslint-disable-line id-length + + +// VARIABLES // + +var hasSymbols = hasSymbolSupport(); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof inheritedNonEnumerablePropertySymbols, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function throws an error if not provided a positive integer for the inheritance level', function test( t ) { + var values; + var i; + + values = [ + '5', + -5, + 0, + 3.14, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + inheritedNonEnumerablePropertySymbols( {}, value ); + }; + } +}); + +tape( 'the function returns an array of an object\'s inherited non-enumerable symbol properties', function test( t ) { + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + syms = [ + Symbol( 'a' ), + Symbol( 'b' ), + Symbol( 'c' ), + Symbol( 'd' ) + ]; + } else { + syms = []; + } + + function Foo() { + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'a'; + defineProperty( this, syms[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; + } + + Foo.prototype.c = 'c'; + defineProperty( Foo.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + if ( hasSymbols ) { + Foo.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Foo.prototype, syms[ 3 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + } + + obj = new Foo(); + + if ( hasSymbols ) { + expected = [ syms[ 3 ] ]; + } else { + expected = []; + } + actual = inheritedNonEnumerablePropertySymbols( obj ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s inherited non-enumerable symbol properties (multiple inheritance)', function test( t ) { + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + syms = [ + Symbol( 'a' ), + Symbol( 'b' ), + Symbol( 'c' ), + Symbol( 'd' ), + Symbol( 'e' ), + Symbol( 'f' ) + ]; + } else { + syms = []; + } + + function Bar() { + this.a = 'a'; + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'a'; + } + return this; + } + + Bar.prototype.c = 'c'; + Bar.prototype.d = 'd'; + defineProperty( Bar.prototype, 'e', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + if ( hasSymbols ) { + Bar.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Bar.prototype, syms[ 3 ], { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + defineProperty( Bar.prototype, syms[ 4 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + } + + function Foo() { + Bar.call( this ); + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + if ( hasSymbols ) { + defineProperty( this, syms[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.c = 'c'; + defineProperty( Foo.prototype, 'f', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'f' + }); + if ( hasSymbols ) { + Foo.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Bar.prototype, syms[ 3 ], { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + defineProperty( Foo.prototype, syms[ 5 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'f' + }); + } + + obj = new Foo(); + + if ( hasSymbols ) { + expected = [ syms[ 3 ], syms[ 4 ], syms[ 5 ] ]; + } else { + expected = []; + } + actual = inheritedNonEnumerablePropertySymbols( obj ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function supports limiting the inheritance level', function test( t ) { + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + syms = [ + Symbol( 'a' ), + Symbol( 'b' ), + Symbol( 'c' ), + Symbol( 'd' ), + Symbol( 'e' ) + ]; + } else { + syms = []; + } + + function Bar() { + this.a = 'a'; + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'a'; + } + return this; + } + + Bar.prototype.c = 'c'; + defineProperty( Bar.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + if ( hasSymbols ) { + Bar.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Bar.prototype, syms[ 3 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + } + + function Foo() { + Bar.call( this ); + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + if ( hasSymbols ) { + defineProperty( this, syms[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.c = 'c'; + defineProperty( Foo.prototype, 'e', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + if ( hasSymbols ) { + Foo.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Foo.prototype, syms[ 4 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + } + + obj = new Foo(); + + if ( hasSymbols ) { + expected = [ syms[ 4 ] ]; + } else { + expected = []; + } + actual = inheritedNonEnumerablePropertySymbols( obj, 1 ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + if ( hasSymbols ) { + idx = indexOf( actual, syms[ 3 ] ); + t.strictEqual( idx === -1, true, 'does not contain property' ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = inheritedNonEnumerablePropertySymbols( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From e9fe540888d552c6112a29e017b310fd08c6bf79 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 17:05:04 -0700 Subject: [PATCH 0320/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 4ce0066dc7f9..1649ddba5682 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -801,6 +801,15 @@ setReadOnly( utils, 'inheritedKeys', require( '@stdlib/utils/inherited-keys' ) ) */ setReadOnly( utils, 'inheritedNonEnumerablePropertyNames', require( '@stdlib/utils/inherited-nonenumerable-property-names' ) ); +/** +* @name inheritedNonEnumerablePropertySymbols +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/inherited-nonenumerable-property-symbols} +*/ +setReadOnly( utils, 'inheritedNonEnumerablePropertySymbols', require( '@stdlib/utils/inherited-nonenumerable-property-symbols' ) ); + /** * @name inheritedProperties * @memberof utils From 53b16c96b819daa991a53a637338bdb18de1ae9d Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 17:05:55 -0700 Subject: [PATCH 0321/1062] Fix test --- .../utils/inherited-nonenumerable-property-symbols/test/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/test/test.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/test/test.js index b89721a596c1..280b71901759 100644 --- a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/test/test.js +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/test/test.js @@ -229,7 +229,7 @@ tape( 'the function returns an array of an object\'s inherited non-enumerable sy }); if ( hasSymbols ) { Foo.prototype[ syms[ 2 ] ] = 'c'; - defineProperty( Bar.prototype, syms[ 3 ], { + defineProperty( Foo.prototype, syms[ 3 ], { 'configurable': true, 'enumerable': false, 'writable': false, From de5d84fd3d76428f9d9900e9b3b4955fab595731 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 17:06:41 -0700 Subject: [PATCH 0322/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 16 ++++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 7 ++++--- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index a0379b1ad016..641162913caf 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -1369,6 +1369,7 @@ ns.push({ 'value': require( '@stdlib/utils/inherited-nonenumerable-property-names' ), 'type': 'Function', 'related': [ + '@stdlib/utils/inherited-nonenumerable-property-symbols', '@stdlib/utils/keys', '@stdlib/utils/nonenumerable-property-names', '@stdlib/utils/nonenumerable-property-names-in', @@ -1377,6 +1378,21 @@ ns.push({ ] }); +ns.push({ + 'alias': 'inheritedNonEnumerablePropertySymbols', + 'path': '@stdlib/utils/inherited-nonenumerable-property-symbols', + 'value': require( '@stdlib/utils/inherited-nonenumerable-property-symbols' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/inherited-nonenumerable-property-names', + '@stdlib/utils/nonenumerable-properties', + '@stdlib/utils/nonenumerable-property-names', + '@stdlib/utils/nonenumerable-property-symbols', + '@stdlib/utils/nonenumerable-property-symbols-in', + '@stdlib/utils/property-symbols' + ] +}); + ns.push({ 'alias': 'inheritedProperties', 'path': '@stdlib/utils/inherited-properties', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 63ef5ff10bb9..f96ac13bac89 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1103,6 +1103,7 @@ var db = { "inherit": "\n// Create a parent constructor:\nfunction Foo() { return this; };\nFoo.prototype.beep = function beep() { return 'boop'; };\n\n// Create a child constructor:\nfunction Bar() { Foo.call( this ); return this; };\n\n// Setup inheritance:\ninherit( Bar, Foo );\nbar = new Bar();\nv = bar.beep()\n", "inheritedKeys": "keys = inheritedKeys( {} )\n", "inheritedNonEnumerablePropertyNames": "keys = inheritedNonEnumerablePropertyNames( {} )\n", + "inheritedNonEnumerablePropertySymbols": "symbols = inheritedNonEnumerablePropertySymbols( [] )\n", "inheritedProperties": "symbols = inheritedProperties( [] )\n", "inheritedPropertyDescriptor": "desc = inheritedPropertyDescriptor( {}, 'toString' )\n", "inheritedPropertyDescriptors": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\ndesc = inheritedPropertyDescriptors( obj )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index bcc638c25ffe..7b556b295c17 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1102,7 +1102,8 @@ var db = { "indexOf": "\nindexOf( arr, searchElement[, fromIndex] )\n Returns the first index at which a given element can be found.\n\n Search is performed using *strict equality* comparison.\n\n Parameters\n ----------\n arr: ArrayLike\n Array-like object.\n\n searchElement: any\n Element to find.\n\n fromIndex: integer (optional)\n Starting index (if negative, the start index is determined relative to\n last element).\n\n Returns\n -------\n out: integer\n Index or -1.\n\n Examples\n --------\n // Basic usage:\n > var arr = [ 4, 3, 2, 1 ];\n > var idx = indexOf( arr, 3 )\n 1\n > arr = [ 4, 3, 2, 1 ];\n > idx = indexOf( arr, 5 )\n -1\n\n // Using a `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, 3 )\n 5\n\n // `fromIndex` which exceeds `array` length:\n > arr = [ 1, 2, 3, 4, 2, 5 ];\n > idx = indexOf( arr, 2, 10 )\n -1\n\n // Negative `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];\n > idx = indexOf( arr, 2, -4 )\n 5\n > idx = indexOf( arr, 2, -1 )\n 7\n\n // Negative `fromIndex` exceeding input `array` length:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, -10 )\n 1\n\n // Array-like objects:\n > var str = 'bebop';\n > idx = indexOf( str, 'o' )\n 3\n\n", "inherit": "\ninherit( ctor, superCtor )\n Prototypical inheritance by replacing the prototype of one constructor with\n the prototype of another constructor.\n\n This function is not designed to work with ES2015/ES6 classes. For\n ES2015/ES6 classes, use `class` with `extends`.\n\n Parameters\n ----------\n ctor: Object|Function\n Constructor which will inherit.\n\n superCtor: Object|Function\n Super (parent) constructor.\n\n Returns\n -------\n out: Object|Function\n Child constructor.\n\n Examples\n --------\n // Create a parent constructor:\n > function Foo() { return this; };\n > Foo.prototype.beep = function beep() { return 'boop'; };\n\n // Create a child constructor:\n > function Bar() { Foo.call( this ); return this; };\n\n // Setup inheritance:\n > inherit( Bar, Foo );\n > var bar = new Bar();\n > var v = bar.beep()\n 'boop'\n\n", "inheritedKeys": "\ninheritedKeys( value[, level] )\n Returns an array of an object's inherited enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable property names.\n\n Examples\n --------\n > var keys = inheritedKeys( {} )\n\n See Also\n --------\n objectKeys, keysIn, inheritedPropertyNames, inheritedPropertySymbols\n", - "inheritedNonEnumerablePropertyNames": "\ninheritedNonEnumerablePropertyNames( value[, level] )\n Returns an array of an object's inherited non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited non-enumerable property names.\n\n Examples\n --------\n > var keys = inheritedNonEnumerablePropertyNames( {} )\n\n See Also\n --------\n objectKeys, nonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertyNames\n", + "inheritedNonEnumerablePropertyNames": "\ninheritedNonEnumerablePropertyNames( value[, level] )\n Returns an array of an object's inherited non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited non-enumerable property names.\n\n Examples\n --------\n > var keys = inheritedNonEnumerablePropertyNames( {} )\n\n See Also\n --------\n inheritedNonEnumerablePropertySymbols, objectKeys, nonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertyNames\n", + "inheritedNonEnumerablePropertySymbols": "\ninheritedNonEnumerablePropertySymbols( value[, level] )\n Returns an array of an object's inherited non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited non-enumerable symbol properties.\n\n Examples\n --------\n > var symbols = inheritedNonEnumerablePropertySymbols( [] )\n\n See Also\n --------\n inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNames, nonEnumerablePropertySymbols, nonEnumerablePropertySymbolsIn, propertySymbols\n", "inheritedProperties": "\ninheritedProperties( value[, level] )\n Returns an array of an object's inherited property names and symbols.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited property names and symbols.\n\n Examples\n --------\n > var symbols = inheritedProperties( [] )\n\n See Also\n --------\n properties, propertiesIn, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedPropertyDescriptor": "\ninheritedPropertyDescriptor( value, property[, level] )\n Returns a property descriptor for an object's inherited property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string|symbol\n Property name.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var desc = inheritedPropertyDescriptor( {}, 'toString' )\n {...}\n\n See Also\n --------\n propertyDescriptor, propertyDescriptorIn, inheritedKeys, inheritedPropertyDescriptors, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedPropertyDescriptors": "\ninheritedPropertyDescriptors( value[, level] )\n Returns an object's inherited property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n desc: Object\n An object's inherited property descriptors.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var desc = inheritedPropertyDescriptors( obj )\n { 'foo': {...}, ... }\n\n See Also\n --------\n propertyDescriptors, propertyDescriptorsIn, inheritedKeys, inheritedPropertyNames, inheritedPropertySymbols\n", @@ -1379,8 +1380,8 @@ var db = { "noneByRightAsync": "\nnoneByRightAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByRightAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function, iterating from right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByRightAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByRightAsync, everyByRightAsync, forEachRightAsync, noneByAsync, noneByRight, someByRightAsync\n", "nonEnumerablePropertyNames": "\nnonEnumerablePropertyNames( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNames( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbolsIn, propertyNames\n", "nonEnumerablePropertyNamesIn": "\nnonEnumerablePropertyNamesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNamesIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNames, propertyNamesIn\n", - "nonEnumerablePropertySymbols": "\nnonEnumerablePropertySymbols( value )\n Returns an array of an object's own non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbols( obj )\n\n See Also\n --------\n enumerablePropertySymbols, nonEnumerablePropertyNames, nonEnumerablePropertySymbolsIn, propertySymbols\n", - "nonEnumerablePropertySymbolsIn": "\nnonEnumerablePropertySymbolsIn( value )\n Returns an array of an object's own and inherited non-enumerable symbol\n properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbolsIn( obj )\n\n See Also\n --------\n enumerablePropertySymbolsIn, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertySymbolsIn\n", + "nonEnumerablePropertySymbols": "\nnonEnumerablePropertySymbols( value )\n Returns an array of an object's own non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbols( obj )\n\n See Also\n --------\n enumerablePropertySymbols, inheritedNonEnumerablePropertySymbols, nonEnumerablePropertyNames, nonEnumerablePropertySymbolsIn, propertySymbols\n", + "nonEnumerablePropertySymbolsIn": "\nnonEnumerablePropertySymbolsIn( value )\n Returns an array of an object's own and inherited non-enumerable symbol\n properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbolsIn( obj )\n\n See Also\n --------\n enumerablePropertySymbolsIn, inheritedNonEnumerablePropertySymbols, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertySymbolsIn\n", "noop": "\nnoop()\n A function which does nothing.\n\n Examples\n --------\n > noop();\n\n", "now": "\nnow()\n Returns the time in seconds since the epoch.\n\n The Unix epoch is 00:00:00 UTC on 1 January 1970.\n\n Returns\n -------\n out: integer\n Time in seconds since the epoch.\n\n Examples\n --------\n > var ts = now()\n \n\n", "NUM_CPUS": "\nNUM_CPUS\n Number of CPUs.\n\n In browser environments, the number of CPUs is determined by querying the\n hardware concurrency API.\n\n In Node.js environments, the number of CPUs is determined via the `os`\n module.\n\n Examples\n --------\n > NUM_CPUS\n \n\n", From 8c5370a70d459e5df79fef1591871550df603305 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 17:23:31 -0700 Subject: [PATCH 0323/1062] Add utility to return an object's inherited enumerable symbol properties --- .../README.md | 155 +++++++ .../benchmark/benchmark.js | 72 ++++ .../docs/repl.txt | 31 ++ .../examples/index.js | 70 ++++ .../lib/index.js | 39 ++ .../lib/main.js | 109 +++++ .../package.json | 68 ++++ .../test/test.js | 385 ++++++++++++++++++ 8 files changed, 929 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/README.md create mode 100644 lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/package.json create mode 100644 lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/test/test.js diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/README.md b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/README.md new file mode 100644 index 000000000000..3520ed28bfe6 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/README.md @@ -0,0 +1,155 @@ + + +# inheritedEnumerablePropertySymbols + +> Return an array of an object's inherited enumerable [symbol][@stdlib/symbol/ctor] properties. + +
+ +## Usage + + + +```javascript +var inheritedEnumerablePropertySymbols = require( '@stdlib/utils/inherited-enumerable-property-symbols' ); +``` + +#### inheritedEnumerablePropertySymbols( obj\[, level] ) + +Returns an `array` of an object's inherited enumerable [symbol][@stdlib/symbol/ctor] properties. + +```javascript +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); + +var hasSymbols = hasSymbolSupport(); +var symbols; +var f; + +function Foo() { + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'a'; + } + return this; +} + +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'b' ) ] = 'b'; +} + +f = new Foo(); +symbols = inheritedEnumerablePropertySymbols( f ); +``` + +By default, the function walks an object's entire prototype chain. To limit the inheritance level, provide a `level` argument. + +```javascript +var symbols = inheritedEnumerablePropertySymbols( [], 1 ); +``` + +
+ + + +
+ +## Notes + +- Property order is not guaranteed, as `object` property enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s properties, thus allowing for deterministic extraction. + +
+ + + +
+ +## Examples + + + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var inheritedEnumerablePropertySymbols = require( '@stdlib/utils/inherited-enumerable-property-symbols' ); + +var hasSymbols = hasSymbolSupport(); +var symbols; +var obj; + +function Foo() { + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'a'; + defineProperty( this, Symbol( 'b' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'b' + }); + } + return this; +} + +Foo.prototype.c = 'c'; +defineProperty( Foo.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' +}); +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'c' ) ] = 'c'; + defineProperty( Foo.prototype, Symbol( 'd' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); +} + +obj = new Foo(); +symbols = inheritedEnumerablePropertySymbols( obj ); + +console.log( symbols ); +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/benchmark/benchmark.js new file mode 100644 index 000000000000..826be6bff979 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var inheritedEnumerablePropertySymbols = require( './../lib' ); // eslint-disable-line id-length + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = inheritedEnumerablePropertySymbols( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/docs/repl.txt b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/docs/repl.txt new file mode 100644 index 000000000000..bb6b4ae70833 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/docs/repl.txt @@ -0,0 +1,31 @@ + +{{alias}}( value[, level] ) + Returns an array of an object's inherited enumerable symbol properties. + + Property order is not guaranteed, as object property enumeration is not + specified according to the ECMAScript specification. In practice, however, + most engines use insertion order to sort an object's properties, thus + allowing for deterministic extraction. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + level: integer (optional) + Inheritance level. + + Returns + ------- + symbols: Array + List of an object's inherited enumerable symbol properties. + + Examples + -------- + > var symbols = {{alias}}( [] ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/examples/index.js b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/examples/index.js new file mode 100644 index 000000000000..6c0e49d5d1ee --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/examples/index.js @@ -0,0 +1,70 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var inheritedEnumerablePropertySymbols = require( './../lib' ); // eslint-disable-line id-length + +var hasSymbols = hasSymbolSupport(); +var symbols; +var obj; + +function Foo() { + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'a'; + defineProperty( this, Symbol( 'b' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'b' + }); + } + return this; +} + +Foo.prototype.c = 'c'; +defineProperty( Foo.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' +}); +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'c' ) ] = 'c'; + defineProperty( Foo.prototype, Symbol( 'd' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); +} + +obj = new Foo(); +symbols = inheritedEnumerablePropertySymbols( obj ); + +console.log( symbols ); diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/lib/index.js b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/lib/index.js new file mode 100644 index 000000000000..9e82f05817fb --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/lib/index.js @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's inherited enumerable symbol properties. +* +* @module @stdlib/utils/inherited-enumerable-property-symbols +* +* @example +* var inheritedEnumerablePropertySymbols = require( '@stdlib/utils/inherited-enumerable-property-symbols' ); +* +* var symbols = inheritedEnumerablePropertySymbols( [] ); +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/lib/main.js b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/lib/main.js new file mode 100644 index 000000000000..07a35dc0b853 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/lib/main.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var MAX_SAFE_INTEGER = require( '@stdlib/constants/math/float64-max-safe-integer' ); +var isPositiveInteger = require( '@stdlib/assert/is-positive-integer' ).isPrimitive; +var isEnumerableProperty = require( '@stdlib/assert/is-enumerable-property' ); +var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating if an array contains a provided value. +* +* @private +* @param {Array} arr - array +* @param {*} v - search value +* @returns {boolean} boolean indicating if an array contains a search value +*/ +function contains( arr, v ) { + var i; + for ( i = 0; i < arr.length; i++ ) { + if ( arr[ i ] === v ) { + return true; + } + } + return false; +} + + +// MAIN // + +/** +* Returns an array of an object's inherited enumerable symbol properties. +* +* @param {*} value - input object +* @param {PositiveInteger} [level] - inheritance level +* @throws {TypeError} second argument must be a positive integer +* @returns {Array} a list of inherited enumerable symbol properties +* +* @example +* var symbols = inheritedEnumerablePropertySymbols( [] ); +*/ +function inheritedEnumerablePropertySymbols( value, level ) { // eslint-disable-line id-length + var out; + var obj; + var tmp; + var N; + var n; + var i; + + if ( arguments.length > 1 ) { + if ( !isPositiveInteger( level ) ) { + throw new TypeError( 'invalid argument. Second argument must be a positive integer. Value: `' + level + '`.' ); + } + N = level; + } else { + N = MAX_SAFE_INTEGER; + } + if ( value === null || value === void 0 ) { + return []; + } + // Get the value's prototype: + obj = getPrototypeOf( value ); + + // Walk the prototype chain collecting all enumerable symbol properties... + out = []; + n = 1; + while ( obj && n <= N ) { + tmp = getOwnPropertySymbols( obj ); + for ( i = 0; i < tmp.length; i++ ) { + if ( + isEnumerableProperty( obj, tmp[ i ] ) && + contains( out, tmp[ i ] ) === false + ) { + out.push( tmp[ i ] ); + } + } + obj = getPrototypeOf( obj ); + n += 1; + } + + return out; +} + + +// EXPORTS // + +module.exports = inheritedEnumerablePropertySymbols; diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/package.json b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/package.json new file mode 100644 index 000000000000..91a37af09a94 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/package.json @@ -0,0 +1,68 @@ +{ + "name": "@stdlib/utils/inherited-enumerable-property-symbols", + "version": "0.0.0", + "description": "Return an array of an object's inherited enumerable symbol properties.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "symbols", + "syms", + "symbols-in", + "enumerable", + "inherited", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/test/test.js b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/test/test.js new file mode 100644 index 000000000000..49da006ca53f --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/test/test.js @@ -0,0 +1,385 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var inherit = require( '@stdlib/utils/inherit' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var inheritedEnumerablePropertySymbols = require( './../lib' ); // eslint-disable-line id-length + + +// VARIABLES // + +var hasSymbols = hasSymbolSupport(); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof inheritedEnumerablePropertySymbols, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function throws an error if not provided a positive integer for the inheritance level', function test( t ) { + var values; + var i; + + values = [ + '5', + -5, + 0, + 3.14, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + inheritedEnumerablePropertySymbols( {}, value ); + }; + } +}); + +tape( 'the function returns an array of an object\'s inherited enumerable symbol properties', function test( t ) { + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + syms = [ + Symbol( 'a' ), + Symbol( 'b' ), + Symbol( 'c' ), + Symbol( 'd' ) + ]; + } else { + syms = []; + } + + function Foo() { + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'a'; + defineProperty( this, syms[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; + } + + Foo.prototype.c = 'c'; + defineProperty( Foo.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + if ( hasSymbols ) { + Foo.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Foo.prototype, syms[ 3 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + } + + obj = new Foo(); + + if ( hasSymbols ) { + expected = [ syms[ 2 ] ]; + } else { + expected = []; + } + actual = inheritedEnumerablePropertySymbols( obj ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s inherited enumerable symbol properties (multiple inheritance)', function test( t ) { + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + syms = [ + Symbol( 'a' ), + Symbol( 'b' ), + Symbol( 'c' ), + Symbol( 'd' ), + Symbol( 'e' ), + Symbol( 'f' ) + ]; + } else { + syms = []; + } + + function Bar() { + this.a = 'a'; + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'a'; + } + return this; + } + + Bar.prototype.c = 'c'; + Bar.prototype.d = 'd'; + defineProperty( Bar.prototype, 'e', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + if ( hasSymbols ) { + Bar.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Bar.prototype, syms[ 3 ], { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + defineProperty( Bar.prototype, syms[ 4 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + } + + function Foo() { + Bar.call( this ); + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + if ( hasSymbols ) { + defineProperty( this, syms[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.c = 'c'; + defineProperty( Foo.prototype, 'f', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'f' + }); + if ( hasSymbols ) { + Foo.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Foo.prototype, syms[ 3 ], { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + defineProperty( Foo.prototype, syms[ 5 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'f' + }); + } + + obj = new Foo(); + + if ( hasSymbols ) { + expected = [ syms[ 2 ] ]; + } else { + expected = []; + } + actual = inheritedEnumerablePropertySymbols( obj ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function supports limiting the inheritance level', function test( t ) { + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + syms = [ + Symbol( 'a' ), + Symbol( 'b' ), + Symbol( 'c' ), + Symbol( 'd' ), + Symbol( 'e' ) + ]; + } else { + syms = []; + } + + function Bar() { + this.a = 'a'; + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'a'; + } + return this; + } + + Bar.prototype.c = 'c'; + defineProperty( Bar.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + if ( hasSymbols ) { + Bar.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Bar.prototype, syms[ 3 ], { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'd' + }); + } + + function Foo() { + Bar.call( this ); + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + if ( hasSymbols ) { + defineProperty( this, syms[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.c = 'c'; + defineProperty( Foo.prototype, 'e', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + if ( hasSymbols ) { + Foo.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Foo.prototype, syms[ 4 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + } + + obj = new Foo(); + + if ( hasSymbols ) { + expected = [ syms[ 2 ] ]; + } else { + expected = []; + } + actual = inheritedEnumerablePropertySymbols( obj, 1 ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + if ( hasSymbols ) { + idx = indexOf( actual, syms[ 3 ] ); + t.strictEqual( idx === -1, true, 'does not contain property' ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = inheritedEnumerablePropertySymbols( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From 0e97bf05fe9221620a7ce9aacb44c1ffd76a8739 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 17:26:13 -0700 Subject: [PATCH 0324/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 1649ddba5682..052769afdc93 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -783,6 +783,15 @@ setReadOnly( utils, 'indexOf', require( '@stdlib/utils/index-of' ) ); */ setReadOnly( utils, 'inherit', require( '@stdlib/utils/inherit' ) ); +/** +* @name inheritedEnumerablePropertySymbols +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/inherited-enumerable-property-symbols} +*/ +setReadOnly( utils, 'inheritedEnumerablePropertySymbols', require( '@stdlib/utils/inherited-enumerable-property-symbols' ) ); + /** * @name inheritedKeys * @memberof utils From 030678da3553dd012a77e9af83a3c461e41711fe Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 17:26:43 -0700 Subject: [PATCH 0325/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 15 +++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 +++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 641162913caf..4eb4f6e84b34 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -1350,6 +1350,21 @@ ns.push({ 'related': [] }); +ns.push({ + 'alias': 'inheritedEnumerablePropertySymbols', + 'path': '@stdlib/utils/inherited-enumerable-property-symbols', + 'value': require( '@stdlib/utils/inherited-enumerable-property-symbols' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/enumerable-properties', + '@stdlib/utils/enumerable-property-symbols', + '@stdlib/utils/inherited-keys', + '@stdlib/utils/nonenumerable-property-symbols', + '@stdlib/utils/nonenumerable-property-symbols-in', + '@stdlib/utils/property-symbols' + ] +}); + ns.push({ 'alias': 'inheritedKeys', 'path': '@stdlib/utils/inherited-keys', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index f96ac13bac89..1a215d916830 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1101,6 +1101,7 @@ var db = { "ind2sub": "d = [ 3, 3, 3 ];\ns = ind2sub( d, 17 )\n\n// Provide an output array:\nout = new Array( d.length );\ns = ind2sub( out, d, 17 )\nbool = ( s === out )\n", "indexOf": "\n// Basic usage:\narr = [ 4, 3, 2, 1 ];\nidx = indexOf( arr, 3 )\narr = [ 4, 3, 2, 1 ];\nidx = indexOf( arr, 5 )\n\n// Using a `fromIndex`:\narr = [ 1, 2, 3, 4, 5, 2, 6 ];\nidx = indexOf( arr, 2, 3 )\n\n// `fromIndex` which exceeds `array` length:\narr = [ 1, 2, 3, 4, 2, 5 ];\nidx = indexOf( arr, 2, 10 )\n\n// Negative `fromIndex`:\narr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];\nidx = indexOf( arr, 2, -4 )\nidx = indexOf( arr, 2, -1 )\n\n// Negative `fromIndex` exceeding input `array` length:\narr = [ 1, 2, 3, 4, 5, 2, 6 ];\nidx = indexOf( arr, 2, -10 )\n\n// Array-like objects:\nstr = 'bebop';\nidx = indexOf( str, 'o' )\n", "inherit": "\n// Create a parent constructor:\nfunction Foo() { return this; };\nFoo.prototype.beep = function beep() { return 'boop'; };\n\n// Create a child constructor:\nfunction Bar() { Foo.call( this ); return this; };\n\n// Setup inheritance:\ninherit( Bar, Foo );\nbar = new Bar();\nv = bar.beep()\n", + "inheritedEnumerablePropertySymbols": "symbols = inheritedEnumerablePropertySymbols( [] )\n", "inheritedKeys": "keys = inheritedKeys( {} )\n", "inheritedNonEnumerablePropertyNames": "keys = inheritedNonEnumerablePropertyNames( {} )\n", "inheritedNonEnumerablePropertySymbols": "symbols = inheritedNonEnumerablePropertySymbols( [] )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 7b556b295c17..7cb7f0451174 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -847,8 +847,8 @@ var db = { "doWhileEachRight": "\ndoWhileEachRight( collection, fcn, predicate[, thisArg] )\n While a test condition is true, invokes a function for each element in a\n collection, iterating from right to left.\n\n The condition is evaluated *after* executing the provided function; thus,\n `fcn` *always* executes at least once.\n\n When invoked, both the predicate function and the function to apply are\n provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n If provided an empty collection, both `value` and `index` are `undefined`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n predicate: Function\n The predicate function which indicates whether to continue iterating\n over a collection.\n\n thisArg: any (optional)\n Execution context for the applied function.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function predicate( v ) { return v === v; };\n > function logger( v, i ) { console.log( '%s: %d', i, v ); };\n > var arr = [ 1, NaN, 2, 3, 4, 5 ];\n > doWhileEachRight( arr, logger, predicate )\n 5: 5\n 4: 4\n 3: 3\n 2: 2\n 1: NaN\n\n See Also\n --------\n doUntilEachRight, doWhileEach, whileEachRight\n", "E": "\nE\n Euler's number.\n\n Examples\n --------\n > E\n 2.718281828459045\n\n", "endsWith": "\nendsWith( str, search[, len] )\n Tests if a `string` ends with the characters of another `string`.\n\n If provided an empty `search` string, the function always returns `true`.\n\n Parameters\n ----------\n str: string\n Input string.\n\n search: string\n Search string.\n\n len: integer (optional)\n Substring length. Restricts the search to a substring within the input\n string beginning from the leftmost character. If provided a negative\n value, `len` indicates to ignore the last `len` characters, returning\n the same output as `str.length + len`. Default: `str.length`.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a `string` ends with the characters of\n another `string`.\n\n Examples\n --------\n > var bool = endsWith( 'beep', 'ep' )\n true\n > bool = endsWith( 'Beep', 'op' )\n false\n > bool = endsWith( 'Beep', 'ee', 3 )\n true\n > bool = endsWith( 'Beep', 'ee', -1 )\n true\n > bool = endsWith( 'beep', '' )\n true\n\n See Also\n --------\n startsWith\n", - "enumerablePropertySymbols": "\nenumerablePropertySymbols( value )\n Returns an array of an object's own enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = enumerablePropertySymbols( obj )\n\n See Also\n --------\n enumerablePropertySymbolsIn, objectKeys, nonEnumerablePropertySymbols, propertySymbols\n", - "enumerablePropertySymbolsIn": "\nenumerablePropertySymbolsIn( value )\n Returns an array of an object's own and inherited enumerable symbol\n properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = enumerablePropertySymbolsIn( obj )\n\n See Also\n --------\n enumerablePropertySymbols, keysIn, nonEnumerablePropertySymbolsIn, propertySymbolsIn\n", + "enumerablePropertySymbols": "\nenumerablePropertySymbols( value )\n Returns an array of an object's own enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = enumerablePropertySymbols( obj )\n\n See Also\n --------\n enumerablePropertySymbolsIn, inheritedEnumerablePropertySymbols, objectKeys, nonEnumerablePropertySymbols, propertySymbols\n", + "enumerablePropertySymbolsIn": "\nenumerablePropertySymbolsIn( value )\n Returns an array of an object's own and inherited enumerable symbol\n properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = enumerablePropertySymbolsIn( obj )\n\n See Also\n --------\n enumerablePropertySymbols, inheritedEnumerablePropertySymbols, keysIn, nonEnumerablePropertySymbolsIn, propertySymbolsIn\n", "ENV": "\nENV\n An object containing the user environment.\n\n Examples\n --------\n > var user = ENV.USER\n \n\n See Also\n --------\n ARGV\n", "EPS": "\nEPS\n Difference between one and the smallest value greater than one that can be\n represented as a double-precision floating-point number.\n\n Examples\n --------\n > EPS\n 2.220446049250313e-16\n\n See Also\n --------\n FLOAT32_EPS\n", "error2json": "\nerror2json( error )\n Returns a JSON representation of an error object.\n\n The following built-in error types are supported:\n\n - Error\n - URIError\n - ReferenceError\n - SyntaxError\n - RangeError\n - EvalError\n - TypeError\n\n The JSON object is guaranteed to have the following properties:\n\n - type: error type.\n - message: error message.\n\n The only standardized cross-platform property is `message`. Depending on the\n platform, the following properties *may* be present:\n\n - name: error name.\n - stack: stack trace.\n - code: error code (Node.js system errors).\n - errno: error code string (Node.js system errors).\n - syscall: string representing the failed system call (Node.js system\n errors).\n\n The function also serializes all enumerable properties.\n\n The implementation supports custom error types and sets the `type` field to\n the closest built-in error type.\n\n Parameters\n ----------\n error: Error\n Error to serialize.\n\n Returns\n -------\n out: Object\n JSON representation.\n\n Examples\n --------\n > var err = new Error( 'beep' );\n > var json = error2json( err )\n \n\n See Also\n --------\n reviveError\n", @@ -1101,6 +1101,7 @@ var db = { "ind2sub": "\nind2sub( [out,] shape, idx[, options] )\n Converts a linear index to an array of subscripts.\n\n Parameters\n ----------\n out: Array|TypedArray|Object (optional)\n Output array.\n\n shape: ArrayLike\n Array shape.\n\n idx: integer\n Linear index.\n\n options: Object (optional)\n Options.\n\n options.order: string (optional)\n Specifies whether an array is row-major (C-style) or column-major\n (Fortran style). Default: 'row-major'.\n\n options.mode: string (optional)\n Specifies how to handle a linear index which exceeds array dimensions.\n If equal to 'throw', the function throws an error when a linear index\n exceeds array dimensions. If equal to 'wrap', the function wraps around\n a linear index exceeding array dimensions using modulo arithmetic. If\n equal to 'clamp', the function sets a linear index exceeding array\n dimensions to either `0` (minimum linear index) or the maximum linear\n index. Default: 'throw'.\n\n Returns\n -------\n out: Array\n Subscripts.\n\n Examples\n --------\n > var d = [ 3, 3, 3 ];\n > var s = ind2sub( d, 17 )\n [ 1, 2, 2 ]\n\n // Provide an output array:\n > var out = new Array( d.length );\n > s = ind2sub( out, d, 17 )\n [ 1, 2, 2 ]\n > var bool = ( s === out )\n true\n\n See Also\n --------\n array, ndarray, sub2ind\n", "indexOf": "\nindexOf( arr, searchElement[, fromIndex] )\n Returns the first index at which a given element can be found.\n\n Search is performed using *strict equality* comparison.\n\n Parameters\n ----------\n arr: ArrayLike\n Array-like object.\n\n searchElement: any\n Element to find.\n\n fromIndex: integer (optional)\n Starting index (if negative, the start index is determined relative to\n last element).\n\n Returns\n -------\n out: integer\n Index or -1.\n\n Examples\n --------\n // Basic usage:\n > var arr = [ 4, 3, 2, 1 ];\n > var idx = indexOf( arr, 3 )\n 1\n > arr = [ 4, 3, 2, 1 ];\n > idx = indexOf( arr, 5 )\n -1\n\n // Using a `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, 3 )\n 5\n\n // `fromIndex` which exceeds `array` length:\n > arr = [ 1, 2, 3, 4, 2, 5 ];\n > idx = indexOf( arr, 2, 10 )\n -1\n\n // Negative `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];\n > idx = indexOf( arr, 2, -4 )\n 5\n > idx = indexOf( arr, 2, -1 )\n 7\n\n // Negative `fromIndex` exceeding input `array` length:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, -10 )\n 1\n\n // Array-like objects:\n > var str = 'bebop';\n > idx = indexOf( str, 'o' )\n 3\n\n", "inherit": "\ninherit( ctor, superCtor )\n Prototypical inheritance by replacing the prototype of one constructor with\n the prototype of another constructor.\n\n This function is not designed to work with ES2015/ES6 classes. For\n ES2015/ES6 classes, use `class` with `extends`.\n\n Parameters\n ----------\n ctor: Object|Function\n Constructor which will inherit.\n\n superCtor: Object|Function\n Super (parent) constructor.\n\n Returns\n -------\n out: Object|Function\n Child constructor.\n\n Examples\n --------\n // Create a parent constructor:\n > function Foo() { return this; };\n > Foo.prototype.beep = function beep() { return 'boop'; };\n\n // Create a child constructor:\n > function Bar() { Foo.call( this ); return this; };\n\n // Setup inheritance:\n > inherit( Bar, Foo );\n > var bar = new Bar();\n > var v = bar.beep()\n 'boop'\n\n", + "inheritedEnumerablePropertySymbols": "\ninheritedEnumerablePropertySymbols( value[, level] )\n Returns an array of an object's inherited enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited enumerable symbol properties.\n\n Examples\n --------\n > var symbols = inheritedEnumerablePropertySymbols( [] )\n\n See Also\n --------\n enumerablePropertySymbols, inheritedKeys, nonEnumerablePropertySymbols, nonEnumerablePropertySymbolsIn, propertySymbols\n", "inheritedKeys": "\ninheritedKeys( value[, level] )\n Returns an array of an object's inherited enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable property names.\n\n Examples\n --------\n > var keys = inheritedKeys( {} )\n\n See Also\n --------\n objectKeys, keysIn, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedNonEnumerablePropertyNames": "\ninheritedNonEnumerablePropertyNames( value[, level] )\n Returns an array of an object's inherited non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited non-enumerable property names.\n\n Examples\n --------\n > var keys = inheritedNonEnumerablePropertyNames( {} )\n\n See Also\n --------\n inheritedNonEnumerablePropertySymbols, objectKeys, nonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertyNames\n", "inheritedNonEnumerablePropertySymbols": "\ninheritedNonEnumerablePropertySymbols( value[, level] )\n Returns an array of an object's inherited non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited non-enumerable symbol properties.\n\n Examples\n --------\n > var symbols = inheritedNonEnumerablePropertySymbols( [] )\n\n See Also\n --------\n inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNames, nonEnumerablePropertySymbols, nonEnumerablePropertySymbolsIn, propertySymbols\n", From 6e151a30d6126c55550c06a322218a1d7125dbc6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 17:29:38 -0700 Subject: [PATCH 0326/1062] Update test to ensure branch coverage --- .../utils/inherited-enumerable-property-symbols/test/test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/test/test.js b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/test/test.js index 49da006ca53f..85d29b7c4928 100644 --- a/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/test/test.js +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/test/test.js @@ -192,7 +192,7 @@ tape( 'the function returns an array of an object\'s inherited enumerable symbol }); defineProperty( Bar.prototype, syms[ 4 ], { 'configurable': false, - 'enumerable': false, + 'enumerable': true, 'writable': false, 'value': 'e' }); @@ -246,7 +246,7 @@ tape( 'the function returns an array of an object\'s inherited enumerable symbol obj = new Foo(); if ( hasSymbols ) { - expected = [ syms[ 2 ] ]; + expected = [ syms[ 2 ], syms[ 4 ] ]; } else { expected = []; } From b345abf1f5a64b2a25ae116b0c409e20ab55fcdc Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 18:10:02 -0700 Subject: [PATCH 0327/1062] Add utility to return an object's own enumerable properties --- .../utils/enumerable-properties/README.md | 119 +++++++++++++ .../benchmark/benchmark.js | 72 ++++++++ .../utils/enumerable-properties/docs/repl.txt | 32 ++++ .../enumerable-properties/examples/index.js | 59 +++++++ .../utils/enumerable-properties/lib/index.js | 43 +++++ .../utils/enumerable-properties/lib/main.js | 63 +++++++ .../utils/enumerable-properties/package.json | 69 ++++++++ .../utils/enumerable-properties/test/test.js | 157 ++++++++++++++++++ 8 files changed, 614 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/enumerable-properties/README.md create mode 100644 lib/node_modules/@stdlib/utils/enumerable-properties/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/enumerable-properties/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/enumerable-properties/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/enumerable-properties/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/enumerable-properties/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/enumerable-properties/package.json create mode 100644 lib/node_modules/@stdlib/utils/enumerable-properties/test/test.js diff --git a/lib/node_modules/@stdlib/utils/enumerable-properties/README.md b/lib/node_modules/@stdlib/utils/enumerable-properties/README.md new file mode 100644 index 000000000000..6bcf3f34ac93 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-properties/README.md @@ -0,0 +1,119 @@ + + +# enumerableProperties + +> Return an array of an object's own enumerable property names and symbols. + +
+ +## Usage + +```javascript +var enumerableProperties = require( '@stdlib/utils/enumerable-properties' ); +``` + +#### enumerableProperties( obj ) + +Returns an `array` of an object's own enumerable property names and symbols. + +```javascript +var obj = { + 'a': 1, + 'b': 2 +}; + +var props = enumerableProperties( obj ); +// e.g., returns [ 'a', 'b' ] +``` + +
+ + + +
+ +## Notes + +- Property order is not guaranteed, as `object` property enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s properties, thus allowing for deterministic extraction. + +
+ + + +
+ +## Examples + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var enumerableProperties = require( '@stdlib/utils/enumerable-properties' ); + +var hasSymbols = hasSymbolSupport(); +var props; +var obj; + +function Foo() { + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'a'; + defineProperty( this, Symbol( 'b' ), { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; +} + +Foo.prototype.c = 'c'; +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'c' ) ] = 'c'; +} + +obj = new Foo(); +props = enumerableProperties( obj ); + +console.log( props ); +// => [ 'a', ... ] +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/enumerable-properties/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/enumerable-properties/benchmark/benchmark.js new file mode 100644 index 000000000000..8786ab654d3f --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-properties/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var enumerableProperties = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = enumerableProperties( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/enumerable-properties/docs/repl.txt b/lib/node_modules/@stdlib/utils/enumerable-properties/docs/repl.txt new file mode 100644 index 000000000000..eead48b13593 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-properties/docs/repl.txt @@ -0,0 +1,32 @@ + +{{alias}}( value ) + Returns an array of an object's own enumerable property names and symbols. + + Property order is not guaranteed, as object property enumeration is not + specified according to the ECMAScript specification. In practice, however, + most engines use insertion order to sort an object's properties, thus + allowing for deterministic extraction. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + Returns + ------- + props: Array + List of an object's own enumerable properties. + + Examples + -------- + > function Foo() { this.beep = 'boop'; return this; }; + > Foo.prototype.foo = 'bar'; + > var obj = new Foo(); + > var props = {{alias}}( obj ) + [ 'beep' ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/enumerable-properties/examples/index.js b/lib/node_modules/@stdlib/utils/enumerable-properties/examples/index.js new file mode 100644 index 000000000000..ff712f0a58f5 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-properties/examples/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var enumerableProperties = require( './../lib' ); + +var hasSymbols = hasSymbolSupport(); +var props; +var obj; + +function Foo() { + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'a'; + defineProperty( this, Symbol( 'b' ), { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; +} + +Foo.prototype.c = 'c'; +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'c' ) ] = 'c'; +} + +obj = new Foo(); +props = enumerableProperties( obj ); + +console.log( props ); +// => [ 'a', ... ] diff --git a/lib/node_modules/@stdlib/utils/enumerable-properties/lib/index.js b/lib/node_modules/@stdlib/utils/enumerable-properties/lib/index.js new file mode 100644 index 000000000000..bcbe3b763ef0 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-properties/lib/index.js @@ -0,0 +1,43 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's own enumerable property names and symbols. +* +* @module @stdlib/utils/enumerable-properties +* +* @example +* var enumerableProperties = require( '@stdlib/utils/enumerable-properties' ); +* +* var props = enumerableProperties({ +* 'foo': 'bar', +* 'beep': 'boop' +* }); +* // e.g., returns [ 'foo', 'beep' ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/enumerable-properties/lib/main.js b/lib/node_modules/@stdlib/utils/enumerable-properties/lib/main.js new file mode 100644 index 000000000000..84fdb38713d6 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-properties/lib/main.js @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var keys = require( '@stdlib/utils/keys' ); +var propertySymbols = require( '@stdlib/utils/property-symbols' ); +var isEnumerable = require( '@stdlib/assert/is-enumerable-property' ); + + +// MAIN // + +/** +* Returns an array of an object's own enumerable property names and symbols. +* +* @param {*} value - input object +* @returns {Array} a list of own property enumerable names and symbols +* +* @example +* var obj = { +* 'beep': 'boop', +* 'foo': 3.14 +* }; +* +* var props = enumerableProperties( obj ); +* // e.g., returns [ 'beep', 'foo' ] +*/ +function enumerableProperties( value ) { + var out; + var tmp; + var i; + + out = keys( value ); + tmp = propertySymbols( value ); + for ( i = 0; i < tmp.length; i++ ) { + if ( isEnumerable( value, tmp[ i ] ) ) { + out.push( tmp[ i ] ); + } + } + return out; +} + + +// EXPORTS // + +module.exports = enumerableProperties; diff --git a/lib/node_modules/@stdlib/utils/enumerable-properties/package.json b/lib/node_modules/@stdlib/utils/enumerable-properties/package.json new file mode 100644 index 000000000000..029404105d85 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-properties/package.json @@ -0,0 +1,69 @@ +{ + "name": "@stdlib/utils/enumerable-properties", + "version": "0.0.0", + "description": "Return an array of an object's own enumerable property names and symbols.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "names", + "keys", + "symbols", + "syms", + "enumerable", + "own", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/enumerable-properties/test/test.js b/lib/node_modules/@stdlib/utils/enumerable-properties/test/test.js new file mode 100644 index 000000000000..b2f42d28d77e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-properties/test/test.js @@ -0,0 +1,157 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var enumerableProperties = require( './../lib' ); + + +// VARIABLES // + +var hasSymbols = hasSymbolSupport(); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof enumerableProperties, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns an array of an object\'s own enumerable property names and symbols', function test( t ) { + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + syms = [ + Symbol( 'a' ), + Symbol( 'b' ), + Symbol( 'c' ), + Symbol( 'd' ) + ]; + } else { + syms = []; + } + + function Foo() { + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'a'; + defineProperty( this, syms[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'b' + }); + } + return this; + } + + Foo.prototype.c = 'c'; + defineProperty( Foo.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + if ( hasSymbols ) { + Foo.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Foo.prototype, syms[ 3 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + } + + obj = new Foo(); + + expected = [ 'a' ]; + if ( hasSymbols ) { + expected.push( syms[ 0 ] ); + } + actual = enumerableProperties( obj ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s own enumerable properties (string)', function test( t ) { + var expected; + var actual; + var idx; + var i; + + expected = [ '0', '1', '2' ]; + actual = enumerableProperties( 'foo' ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i] ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided non-string primitives', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + 3.14, + NaN, + true, + false, + void 0, + null + ]; + if ( hasSymbols ) { + values.push( Symbol( 'beep' ) ); + } + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = enumerableProperties( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+String( values[ i ] ) ); + } + t.end(); +}); From cbc07f3ed0f8b4aca7f26061864d6ff6ac7e8f4f Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 18:12:08 -0700 Subject: [PATCH 0328/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 052769afdc93..f222fa3b2bbf 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -441,6 +441,15 @@ setReadOnly( utils, 'objectEntries', require( '@stdlib/utils/entries' ) ); */ setReadOnly( utils, 'objectEntriesIn', require( '@stdlib/utils/entries-in' ) ); +/** +* @name enumerableProperties +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/enumerable-properties} +*/ +setReadOnly( utils, 'enumerableProperties', require( '@stdlib/utils/enumerable-properties' ) ); + /** * @name enumerablePropertySymbols * @memberof utils From b0c73faa759862efaae366acfd1bd36f04190680 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 18:13:19 -0700 Subject: [PATCH 0329/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/e.js | 15 +++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/e.js b/lib/node_modules/@stdlib/namespace/lib/namespace/e.js index fd1a8722c3a2..74bba7d0b144 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/e.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/e.js @@ -42,6 +42,21 @@ ns.push({ ] }); +ns.push({ + 'alias': 'enumerableProperties', + 'path': '@stdlib/utils/enumerable-properties', + 'value': require( '@stdlib/utils/enumerable-properties' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/enumerable-properties-in', + '@stdlib/utils/enumerable-property-symbols', + '@stdlib/utils/inherited-enumerable-properties', + '@stdlib/utils/keys', + '@stdlib/utils/nonenumerable-properties', + '@stdlib/utils/properties' + ] +}); + ns.push({ 'alias': 'enumerablePropertySymbols', 'path': '@stdlib/utils/enumerable-property-symbols', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 1a215d916830..81a1f46f148f 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -847,6 +847,7 @@ var db = { "doWhileEachRight": "function predicate( v ) { return v === v; };\nfunction logger( v, i ) { console.log( '%s: %d', i, v ); };\narr = [ 1, NaN, 2, 3, 4, 5 ];\ndoWhileEachRight( arr, logger, predicate )\n", "E": "E\n", "endsWith": "bool = endsWith( 'beep', 'ep' )\nbool = endsWith( 'Beep', 'op' )\nbool = endsWith( 'Beep', 'ee', 3 )\nbool = endsWith( 'Beep', 'ee', -1 )\nbool = endsWith( 'beep', '' )\n", + "enumerableProperties": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nprops = enumerableProperties( obj )\n", "enumerablePropertySymbols": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = true;\ndesc.value = 'boop';\nsym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\ndefineProperty( obj, sym, desc );\nsymbols = enumerablePropertySymbols( obj )\n", "enumerablePropertySymbolsIn": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = true;\ndesc.value = 'boop';\nsym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\ndefineProperty( obj, sym, desc );\nsymbols = enumerablePropertySymbolsIn( obj )\n", "ENV": "user = ENV.USER\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 7cb7f0451174..be66db854a48 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -847,6 +847,7 @@ var db = { "doWhileEachRight": "\ndoWhileEachRight( collection, fcn, predicate[, thisArg] )\n While a test condition is true, invokes a function for each element in a\n collection, iterating from right to left.\n\n The condition is evaluated *after* executing the provided function; thus,\n `fcn` *always* executes at least once.\n\n When invoked, both the predicate function and the function to apply are\n provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n If provided an empty collection, both `value` and `index` are `undefined`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n predicate: Function\n The predicate function which indicates whether to continue iterating\n over a collection.\n\n thisArg: any (optional)\n Execution context for the applied function.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function predicate( v ) { return v === v; };\n > function logger( v, i ) { console.log( '%s: %d', i, v ); };\n > var arr = [ 1, NaN, 2, 3, 4, 5 ];\n > doWhileEachRight( arr, logger, predicate )\n 5: 5\n 4: 4\n 3: 3\n 2: 2\n 1: NaN\n\n See Also\n --------\n doUntilEachRight, doWhileEach, whileEachRight\n", "E": "\nE\n Euler's number.\n\n Examples\n --------\n > E\n 2.718281828459045\n\n", "endsWith": "\nendsWith( str, search[, len] )\n Tests if a `string` ends with the characters of another `string`.\n\n If provided an empty `search` string, the function always returns `true`.\n\n Parameters\n ----------\n str: string\n Input string.\n\n search: string\n Search string.\n\n len: integer (optional)\n Substring length. Restricts the search to a substring within the input\n string beginning from the leftmost character. If provided a negative\n value, `len` indicates to ignore the last `len` characters, returning\n the same output as `str.length + len`. Default: `str.length`.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a `string` ends with the characters of\n another `string`.\n\n Examples\n --------\n > var bool = endsWith( 'beep', 'ep' )\n true\n > bool = endsWith( 'Beep', 'op' )\n false\n > bool = endsWith( 'Beep', 'ee', 3 )\n true\n > bool = endsWith( 'Beep', 'ee', -1 )\n true\n > bool = endsWith( 'beep', '' )\n true\n\n See Also\n --------\n startsWith\n", + "enumerableProperties": "\nenumerableProperties( value )\n Returns an array of an object's own enumerable property names and symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own enumerable properties.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var props = enumerableProperties( obj )\n [ 'beep' ]\n\n See Also\n --------\n enumerablePropertySymbols, objectKeys, properties\n", "enumerablePropertySymbols": "\nenumerablePropertySymbols( value )\n Returns an array of an object's own enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = enumerablePropertySymbols( obj )\n\n See Also\n --------\n enumerablePropertySymbolsIn, inheritedEnumerablePropertySymbols, objectKeys, nonEnumerablePropertySymbols, propertySymbols\n", "enumerablePropertySymbolsIn": "\nenumerablePropertySymbolsIn( value )\n Returns an array of an object's own and inherited enumerable symbol\n properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = enumerablePropertySymbolsIn( obj )\n\n See Also\n --------\n enumerablePropertySymbols, inheritedEnumerablePropertySymbols, keysIn, nonEnumerablePropertySymbolsIn, propertySymbolsIn\n", "ENV": "\nENV\n An object containing the user environment.\n\n Examples\n --------\n > var user = ENV.USER\n \n\n See Also\n --------\n ARGV\n", @@ -1101,7 +1102,7 @@ var db = { "ind2sub": "\nind2sub( [out,] shape, idx[, options] )\n Converts a linear index to an array of subscripts.\n\n Parameters\n ----------\n out: Array|TypedArray|Object (optional)\n Output array.\n\n shape: ArrayLike\n Array shape.\n\n idx: integer\n Linear index.\n\n options: Object (optional)\n Options.\n\n options.order: string (optional)\n Specifies whether an array is row-major (C-style) or column-major\n (Fortran style). Default: 'row-major'.\n\n options.mode: string (optional)\n Specifies how to handle a linear index which exceeds array dimensions.\n If equal to 'throw', the function throws an error when a linear index\n exceeds array dimensions. If equal to 'wrap', the function wraps around\n a linear index exceeding array dimensions using modulo arithmetic. If\n equal to 'clamp', the function sets a linear index exceeding array\n dimensions to either `0` (minimum linear index) or the maximum linear\n index. Default: 'throw'.\n\n Returns\n -------\n out: Array\n Subscripts.\n\n Examples\n --------\n > var d = [ 3, 3, 3 ];\n > var s = ind2sub( d, 17 )\n [ 1, 2, 2 ]\n\n // Provide an output array:\n > var out = new Array( d.length );\n > s = ind2sub( out, d, 17 )\n [ 1, 2, 2 ]\n > var bool = ( s === out )\n true\n\n See Also\n --------\n array, ndarray, sub2ind\n", "indexOf": "\nindexOf( arr, searchElement[, fromIndex] )\n Returns the first index at which a given element can be found.\n\n Search is performed using *strict equality* comparison.\n\n Parameters\n ----------\n arr: ArrayLike\n Array-like object.\n\n searchElement: any\n Element to find.\n\n fromIndex: integer (optional)\n Starting index (if negative, the start index is determined relative to\n last element).\n\n Returns\n -------\n out: integer\n Index or -1.\n\n Examples\n --------\n // Basic usage:\n > var arr = [ 4, 3, 2, 1 ];\n > var idx = indexOf( arr, 3 )\n 1\n > arr = [ 4, 3, 2, 1 ];\n > idx = indexOf( arr, 5 )\n -1\n\n // Using a `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, 3 )\n 5\n\n // `fromIndex` which exceeds `array` length:\n > arr = [ 1, 2, 3, 4, 2, 5 ];\n > idx = indexOf( arr, 2, 10 )\n -1\n\n // Negative `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];\n > idx = indexOf( arr, 2, -4 )\n 5\n > idx = indexOf( arr, 2, -1 )\n 7\n\n // Negative `fromIndex` exceeding input `array` length:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, -10 )\n 1\n\n // Array-like objects:\n > var str = 'bebop';\n > idx = indexOf( str, 'o' )\n 3\n\n", "inherit": "\ninherit( ctor, superCtor )\n Prototypical inheritance by replacing the prototype of one constructor with\n the prototype of another constructor.\n\n This function is not designed to work with ES2015/ES6 classes. For\n ES2015/ES6 classes, use `class` with `extends`.\n\n Parameters\n ----------\n ctor: Object|Function\n Constructor which will inherit.\n\n superCtor: Object|Function\n Super (parent) constructor.\n\n Returns\n -------\n out: Object|Function\n Child constructor.\n\n Examples\n --------\n // Create a parent constructor:\n > function Foo() { return this; };\n > Foo.prototype.beep = function beep() { return 'boop'; };\n\n // Create a child constructor:\n > function Bar() { Foo.call( this ); return this; };\n\n // Setup inheritance:\n > inherit( Bar, Foo );\n > var bar = new Bar();\n > var v = bar.beep()\n 'boop'\n\n", - "inheritedEnumerablePropertySymbols": "\ninheritedEnumerablePropertySymbols( value[, level] )\n Returns an array of an object's inherited enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited enumerable symbol properties.\n\n Examples\n --------\n > var symbols = inheritedEnumerablePropertySymbols( [] )\n\n See Also\n --------\n enumerablePropertySymbols, inheritedKeys, nonEnumerablePropertySymbols, nonEnumerablePropertySymbolsIn, propertySymbols\n", + "inheritedEnumerablePropertySymbols": "\ninheritedEnumerablePropertySymbols( value[, level] )\n Returns an array of an object's inherited enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited enumerable symbol properties.\n\n Examples\n --------\n > var symbols = inheritedEnumerablePropertySymbols( [] )\n\n See Also\n --------\n enumerableProperties, enumerablePropertySymbols, inheritedKeys, nonEnumerablePropertySymbols, nonEnumerablePropertySymbolsIn, propertySymbols\n", "inheritedKeys": "\ninheritedKeys( value[, level] )\n Returns an array of an object's inherited enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable property names.\n\n Examples\n --------\n > var keys = inheritedKeys( {} )\n\n See Also\n --------\n objectKeys, keysIn, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedNonEnumerablePropertyNames": "\ninheritedNonEnumerablePropertyNames( value[, level] )\n Returns an array of an object's inherited non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited non-enumerable property names.\n\n Examples\n --------\n > var keys = inheritedNonEnumerablePropertyNames( {} )\n\n See Also\n --------\n inheritedNonEnumerablePropertySymbols, objectKeys, nonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertyNames\n", "inheritedNonEnumerablePropertySymbols": "\ninheritedNonEnumerablePropertySymbols( value[, level] )\n Returns an array of an object's inherited non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited non-enumerable symbol properties.\n\n Examples\n --------\n > var symbols = inheritedNonEnumerablePropertySymbols( [] )\n\n See Also\n --------\n inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNames, nonEnumerablePropertySymbols, nonEnumerablePropertySymbolsIn, propertySymbols\n", From b3613ce0f4b9e284950135d1037e0a4c6b63ba22 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 18:27:42 -0700 Subject: [PATCH 0330/1062] Add utility to return an object's non-enumerable properties --- .../utils/nonenumerable-properties/README.md | 138 +++++++++++++++++ .../benchmark/benchmark.js | 72 +++++++++ .../nonenumerable-properties/docs/repl.txt | 37 +++++ .../examples/index.js | 71 +++++++++ .../nonenumerable-properties/lib/index.js | 51 +++++++ .../nonenumerable-properties/lib/main.js | 80 ++++++++++ .../nonenumerable-properties/package.json | 71 +++++++++ .../nonenumerable-properties/test/test.js | 140 ++++++++++++++++++ 8 files changed, 660 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-properties/README.md create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-properties/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-properties/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-properties/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-properties/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-properties/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-properties/package.json create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-properties/test/test.js diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties/README.md b/lib/node_modules/@stdlib/utils/nonenumerable-properties/README.md new file mode 100644 index 000000000000..189703307c1c --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties/README.md @@ -0,0 +1,138 @@ + + +# nonEnumerableProperties + +> Return an array of an object's own non-enumerable property names and symbols. + +
+ +## Usage + +```javascript +var nonEnumerableProperties = require( '@stdlib/utils/nonenumerable-properties' ); +``` + +#### nonEnumerableProperties( obj ) + +Returns an `array` of an object's own non-enumerable property names and symbols. + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = {}; + +obj.a = 'a'; +defineProperty( obj, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'b' +}); + +var props = nonEnumerableProperties( obj ); +// returns [ 'b' ] +``` + +
+ + + +
+ +## Notes + +- Property order is not guaranteed, as `object` property enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s properties, thus allowing for deterministic extraction. + +
+ + + +
+ +## Examples + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var nonEnumerableProperties = require( '@stdlib/utils/nonenumerable-properties' ); + +var hasSymbols = hasSymbolSupport(); +var props; +var obj; + +function Foo() { + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'a'; + defineProperty( this, Symbol( 'b' ), { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; +} + +Foo.prototype.c = 'c'; +defineProperty( Foo.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' +}); +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'c' ) ] = 'c'; + defineProperty( Foo.prototype, Symbol( 'd' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); +} + +obj = new Foo(); +props = nonEnumerableProperties( obj ); + +console.log( props ); +// => [ 'b', ... ] +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/nonenumerable-properties/benchmark/benchmark.js new file mode 100644 index 000000000000..5f21f6a44f41 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var nonEnumerableProperties = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = nonEnumerableProperties( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties/docs/repl.txt b/lib/node_modules/@stdlib/utils/nonenumerable-properties/docs/repl.txt new file mode 100644 index 000000000000..42fec67f5313 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties/docs/repl.txt @@ -0,0 +1,37 @@ + +{{alias}}( value ) + Returns an array of an object's own non-enumerable property names and + symbols. + + Property order is not guaranteed, as object property enumeration is not + specified according to the ECMAScript specification. In practice, however, + most engines use insertion order to sort an object's properties, thus + allowing for deterministic extraction. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + Returns + ------- + props: Array + List of an object's own non-enumerable properties. + + Examples + -------- + > var obj = {}; + > var desc = {}; + > desc.configurable = false; + > desc.enumerable = false; + > desc.writable = false; + > desc.value = 'boop'; + > {{alias:@stdlib/utils/define-property}}( obj, 'beep', desc ); + > var props = {{alias}}( obj ) + [ 'beep' ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties/examples/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-properties/examples/index.js new file mode 100644 index 000000000000..d6d6f5753e94 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties/examples/index.js @@ -0,0 +1,71 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var nonEumerableProperties = require( './../lib' ); + +var hasSymbols = hasSymbolSupport(); +var props; +var obj; + +function Foo() { + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'a'; + defineProperty( this, Symbol( 'b' ), { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; +} + +Foo.prototype.c = 'c'; +defineProperty( Foo.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' +}); +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'c' ) ] = 'c'; + defineProperty( Foo.prototype, Symbol( 'd' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); +} + +obj = new Foo(); +props = nonEumerableProperties( obj ); + +console.log( props ); +// => [ 'b', ... ] diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties/lib/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-properties/lib/index.js new file mode 100644 index 000000000000..4c04bc163a6b --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties/lib/index.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's own non-enumerable property names and symbols. +* +* @module @stdlib/utils/non-enumerable-properties +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* var nonEnumerableProperties = require( '@stdlib/utils/nonenumerable-properties' ); +* +* var obj = {}; +* +* obj.a = 'a'; +* defineProperty( obj, 'b', { +* 'configurable': false, +* 'enumerable': false, +* 'writable': false, +* 'value': 'b' +* }); +* +* var props = nonEnumerableProperties( obj ); +* // returns [ 'b' ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-properties/lib/main.js new file mode 100644 index 000000000000..f0d85828fccf --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties/lib/main.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var propertyNames = require( '@stdlib/utils/property-names' ); +var propertySymbols = require( '@stdlib/utils/property-symbols' ); +var isNonEnumerable = require( '@stdlib/assert/is-nonenumerable-property' ); + + +// MAIN // + +/** +* Returns an array of an object's own non-enumerable property names and symbols. +* +* @param {*} value - input object +* @returns {Array} a list of own property non-enumerable names and symbols +* +* @example +* var defineProperty = require( '@stdlib/utils/define-property' ); +* +* var obj = {}; +* +* obj.a = 'a'; +* defineProperty( obj, 'b', { +* 'configurable': false, +* 'enumerable': false, +* 'writable': false, +* 'value': 'b' +* }); +* +* var props = nonEnumerableProperties( obj ); +* // returns [ 'b' ] +*/ +function nonEnumerableProperties( value ) { + var out; + var tmp; + var n; + var i; + + out = propertyNames( value ); + n = 0; + for ( i = 0; i < out.length; i++ ) { + if ( isNonEnumerable( value, out[ i ] ) ) { + out[ n ] = out[ i ]; + n += 1; + } + } + out.length = n; + + tmp = propertySymbols( value ); + for ( i = 0; i < tmp.length; i++ ) { + if ( isNonEnumerable( value, tmp[ i ] ) ) { + out.push( tmp[ i ] ); + } + } + return out; +} + + +// EXPORTS // + +module.exports = nonEnumerableProperties; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties/package.json b/lib/node_modules/@stdlib/utils/nonenumerable-properties/package.json new file mode 100644 index 000000000000..5cdbb75d5f1c --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/utils/nonenumerable-properties", + "version": "0.0.0", + "description": "Return an array of an object's own non-enumerable property names and symbols.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "names", + "keys", + "symbols", + "syms", + "enumerable", + "non-enumerable", + "own", + "hidden", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties/test/test.js b/lib/node_modules/@stdlib/utils/nonenumerable-properties/test/test.js new file mode 100644 index 000000000000..0ee72de00430 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties/test/test.js @@ -0,0 +1,140 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var nonEnumerableProperties = require( './../lib' ); + + +// VARIABLES // + +var hasSymbols = hasSymbolSupport(); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof nonEnumerableProperties, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns an array of an object\'s own non-enumerable property names and symbols', function test( t ) { + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + syms = [ + Symbol( 'a' ), + Symbol( 'b' ), + Symbol( 'c' ), + Symbol( 'd' ) + ]; + } else { + syms = []; + } + + function Foo() { + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'a'; + defineProperty( this, syms[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'b' + }); + } + return this; + } + + Foo.prototype.c = 'c'; + defineProperty( Foo.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + if ( hasSymbols ) { + Foo.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Foo.prototype, syms[ 3 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + } + + obj = new Foo(); + + expected = [ 'b' ]; + if ( hasSymbols ) { + expected.push( syms[ 1 ] ); + } + actual = nonEnumerableProperties( obj ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided non-string primitives', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + 3.14, + NaN, + true, + false, + void 0, + null + ]; + if ( hasSymbols ) { + values.push( Symbol( 'beep' ) ); + } + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = nonEnumerableProperties( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+String( values[ i ] ) ); + } + t.end(); +}); From 32761e99fa18631e5f70190ca37d5a8aae9663a2 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 18:28:34 -0700 Subject: [PATCH 0331/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index f222fa3b2bbf..f4fba28a3509 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1098,6 +1098,15 @@ setReadOnly( utils, 'noneByRight', require( '@stdlib/utils/none-by-right' ) ); */ setReadOnly( utils, 'noneByRightAsync', require( '@stdlib/utils/none-by-right-async' ) ); +/** +* @name nonEnumerableProperties +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/nonenumerable-properties} +*/ +setReadOnly( utils, 'nonEnumerableProperties', require( '@stdlib/utils/nonenumerable-properties' ) ); + /** * @name nonEnumerablePropertyNames * @memberof utils From dd252887e43d4d41ab856b13d22d4156be720a11 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 18:30:49 -0700 Subject: [PATCH 0332/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/n.js | 13 +++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 +++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js index 51925140dd34..2bcbe07ce8d8 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js @@ -264,6 +264,19 @@ ns.push({ ] }); +ns.push({ + 'alias': 'nonEnumerableProperties', + 'path': '@stdlib/utils/nonenumerable-properties', + 'value': require( '@stdlib/utils/nonenumerable-properties' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/enumerable-properties', + '@stdlib/utils/inherited-nonenumerable-properties', + '@stdlib/utils/nonenumerable-properties-in', + '@stdlib/utils/properties' + ] +}); + ns.push({ 'alias': 'nonEnumerablePropertyNames', 'path': '@stdlib/utils/nonenumerable-property-names', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 81a1f46f148f..c4b8c75325f5 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1379,6 +1379,7 @@ var db = { "noneByAsync": "\n// Basic usage:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'series': true };\narr = [ 3000, 2500, 1000 ];\nnoneByAsync( arr, opts, predicate, done )\n", "noneByRight": "function positive( v ) { return ( v > 0 ); };\narr = [ -1, -2, -3, -4 ];\nbool = noneByRight( arr, positive )\n", "noneByRightAsync": "\n// Basic usage:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'limit': 2 };\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'series': true };\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, opts, predicate, done )\n", + "nonEnumerableProperties": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = false;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nprops = nonEnumerableProperties( obj )\n", "nonEnumerablePropertyNames": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerablePropertyNames( obj )\n", "nonEnumerablePropertyNamesIn": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerablePropertyNamesIn( obj )\n", "nonEnumerablePropertySymbols": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\nsym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\ndefineProperty( obj, sym, desc );\nsymbols = nonEnumerablePropertySymbols( obj )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index be66db854a48..e83f53016596 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -847,7 +847,7 @@ var db = { "doWhileEachRight": "\ndoWhileEachRight( collection, fcn, predicate[, thisArg] )\n While a test condition is true, invokes a function for each element in a\n collection, iterating from right to left.\n\n The condition is evaluated *after* executing the provided function; thus,\n `fcn` *always* executes at least once.\n\n When invoked, both the predicate function and the function to apply are\n provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n If provided an empty collection, both `value` and `index` are `undefined`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n predicate: Function\n The predicate function which indicates whether to continue iterating\n over a collection.\n\n thisArg: any (optional)\n Execution context for the applied function.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function predicate( v ) { return v === v; };\n > function logger( v, i ) { console.log( '%s: %d', i, v ); };\n > var arr = [ 1, NaN, 2, 3, 4, 5 ];\n > doWhileEachRight( arr, logger, predicate )\n 5: 5\n 4: 4\n 3: 3\n 2: 2\n 1: NaN\n\n See Also\n --------\n doUntilEachRight, doWhileEach, whileEachRight\n", "E": "\nE\n Euler's number.\n\n Examples\n --------\n > E\n 2.718281828459045\n\n", "endsWith": "\nendsWith( str, search[, len] )\n Tests if a `string` ends with the characters of another `string`.\n\n If provided an empty `search` string, the function always returns `true`.\n\n Parameters\n ----------\n str: string\n Input string.\n\n search: string\n Search string.\n\n len: integer (optional)\n Substring length. Restricts the search to a substring within the input\n string beginning from the leftmost character. If provided a negative\n value, `len` indicates to ignore the last `len` characters, returning\n the same output as `str.length + len`. Default: `str.length`.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a `string` ends with the characters of\n another `string`.\n\n Examples\n --------\n > var bool = endsWith( 'beep', 'ep' )\n true\n > bool = endsWith( 'Beep', 'op' )\n false\n > bool = endsWith( 'Beep', 'ee', 3 )\n true\n > bool = endsWith( 'Beep', 'ee', -1 )\n true\n > bool = endsWith( 'beep', '' )\n true\n\n See Also\n --------\n startsWith\n", - "enumerableProperties": "\nenumerableProperties( value )\n Returns an array of an object's own enumerable property names and symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own enumerable properties.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var props = enumerableProperties( obj )\n [ 'beep' ]\n\n See Also\n --------\n enumerablePropertySymbols, objectKeys, properties\n", + "enumerableProperties": "\nenumerableProperties( value )\n Returns an array of an object's own enumerable property names and symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own enumerable properties.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var props = enumerableProperties( obj )\n [ 'beep' ]\n\n See Also\n --------\n enumerablePropertySymbols, objectKeys, nonEnumerableProperties, properties\n", "enumerablePropertySymbols": "\nenumerablePropertySymbols( value )\n Returns an array of an object's own enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = enumerablePropertySymbols( obj )\n\n See Also\n --------\n enumerablePropertySymbolsIn, inheritedEnumerablePropertySymbols, objectKeys, nonEnumerablePropertySymbols, propertySymbols\n", "enumerablePropertySymbolsIn": "\nenumerablePropertySymbolsIn( value )\n Returns an array of an object's own and inherited enumerable symbol\n properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = enumerablePropertySymbolsIn( obj )\n\n See Also\n --------\n enumerablePropertySymbols, inheritedEnumerablePropertySymbols, keysIn, nonEnumerablePropertySymbolsIn, propertySymbolsIn\n", "ENV": "\nENV\n An object containing the user environment.\n\n Examples\n --------\n > var user = ENV.USER\n \n\n See Also\n --------\n ARGV\n", @@ -1105,7 +1105,7 @@ var db = { "inheritedEnumerablePropertySymbols": "\ninheritedEnumerablePropertySymbols( value[, level] )\n Returns an array of an object's inherited enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited enumerable symbol properties.\n\n Examples\n --------\n > var symbols = inheritedEnumerablePropertySymbols( [] )\n\n See Also\n --------\n enumerableProperties, enumerablePropertySymbols, inheritedKeys, nonEnumerablePropertySymbols, nonEnumerablePropertySymbolsIn, propertySymbols\n", "inheritedKeys": "\ninheritedKeys( value[, level] )\n Returns an array of an object's inherited enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable property names.\n\n Examples\n --------\n > var keys = inheritedKeys( {} )\n\n See Also\n --------\n objectKeys, keysIn, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedNonEnumerablePropertyNames": "\ninheritedNonEnumerablePropertyNames( value[, level] )\n Returns an array of an object's inherited non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited non-enumerable property names.\n\n Examples\n --------\n > var keys = inheritedNonEnumerablePropertyNames( {} )\n\n See Also\n --------\n inheritedNonEnumerablePropertySymbols, objectKeys, nonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertyNames\n", - "inheritedNonEnumerablePropertySymbols": "\ninheritedNonEnumerablePropertySymbols( value[, level] )\n Returns an array of an object's inherited non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited non-enumerable symbol properties.\n\n Examples\n --------\n > var symbols = inheritedNonEnumerablePropertySymbols( [] )\n\n See Also\n --------\n inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNames, nonEnumerablePropertySymbols, nonEnumerablePropertySymbolsIn, propertySymbols\n", + "inheritedNonEnumerablePropertySymbols": "\ninheritedNonEnumerablePropertySymbols( value[, level] )\n Returns an array of an object's inherited non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited non-enumerable symbol properties.\n\n Examples\n --------\n > var symbols = inheritedNonEnumerablePropertySymbols( [] )\n\n See Also\n --------\n inheritedNonEnumerablePropertyNames, nonEnumerableProperties, nonEnumerablePropertyNames, nonEnumerablePropertySymbols, nonEnumerablePropertySymbolsIn, propertySymbols\n", "inheritedProperties": "\ninheritedProperties( value[, level] )\n Returns an array of an object's inherited property names and symbols.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited property names and symbols.\n\n Examples\n --------\n > var symbols = inheritedProperties( [] )\n\n See Also\n --------\n properties, propertiesIn, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedPropertyDescriptor": "\ninheritedPropertyDescriptor( value, property[, level] )\n Returns a property descriptor for an object's inherited property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string|symbol\n Property name.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var desc = inheritedPropertyDescriptor( {}, 'toString' )\n {...}\n\n See Also\n --------\n propertyDescriptor, propertyDescriptorIn, inheritedKeys, inheritedPropertyDescriptors, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedPropertyDescriptors": "\ninheritedPropertyDescriptors( value[, level] )\n Returns an object's inherited property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n desc: Object\n An object's inherited property descriptors.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var desc = inheritedPropertyDescriptors( obj )\n { 'foo': {...}, ... }\n\n See Also\n --------\n propertyDescriptors, propertyDescriptorsIn, inheritedKeys, inheritedPropertyNames, inheritedPropertySymbols\n", @@ -1380,6 +1380,7 @@ var db = { "noneByAsync": "\nnoneByAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByAsync, everyByAsync, forEachAsync, noneBy, noneByRightAsync, someByAsync\n", "noneByRight": "\nnoneByRight( collection, predicate[, thisArg ] )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n The predicate function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n The function immediately returns upon encountering a truthy return value.\n\n If provided an empty collection, the function returns `true`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n predicate: Function\n The test function.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n bool: boolean\n The function returns `true` if the predicate function returns a falsy\n value for all elements; otherwise, the function returns `false`.\n\n Examples\n --------\n > function positive( v ) { return ( v > 0 ); };\n > var arr = [ -1, -2, -3, -4 ];\n > var bool = noneByRight( arr, positive )\n true\n\n See Also\n --------\n anyByRight, everyByRight, forEachRight, none, noneBy, someByRight\n", "noneByRightAsync": "\nnoneByRightAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByRightAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function, iterating from right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByRightAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByRightAsync, everyByRightAsync, forEachRightAsync, noneByAsync, noneByRight, someByRightAsync\n", + "nonEnumerableProperties": "\nnonEnumerableProperties( value )\n Returns an array of an object's own non-enumerable property names and\n symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own non-enumerable properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var props = nonEnumerableProperties( obj )\n [ 'beep' ]\n\n See Also\n --------\n enumerableProperties, properties\n", "nonEnumerablePropertyNames": "\nnonEnumerablePropertyNames( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNames( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbolsIn, propertyNames\n", "nonEnumerablePropertyNamesIn": "\nnonEnumerablePropertyNamesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNamesIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNames, propertyNamesIn\n", "nonEnumerablePropertySymbols": "\nnonEnumerablePropertySymbols( value )\n Returns an array of an object's own non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbols( obj )\n\n See Also\n --------\n enumerablePropertySymbols, inheritedNonEnumerablePropertySymbols, nonEnumerablePropertyNames, nonEnumerablePropertySymbolsIn, propertySymbols\n", From c85b26ffa1e105f364599fea02284cb7e7bef4de Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 20:17:16 -0700 Subject: [PATCH 0333/1062] Add utility to return an object's own and inherited enumerable properties --- .../utils/enumerable-properties-in/README.md | 103 +++++++++ .../benchmark/benchmark.js | 72 ++++++ .../enumerable-properties-in/docs/repl.txt | 25 +++ .../examples/index.js | 48 ++++ .../enumerable-properties-in/lib/index.js | 40 ++++ .../enumerable-properties-in/lib/main.js | 114 ++++++++++ .../enumerable-properties-in/package.json | 75 +++++++ .../enumerable-properties-in/test/test.js | 206 ++++++++++++++++++ 8 files changed, 683 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/enumerable-properties-in/README.md create mode 100644 lib/node_modules/@stdlib/utils/enumerable-properties-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/enumerable-properties-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/enumerable-properties-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/enumerable-properties-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/enumerable-properties-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/enumerable-properties-in/package.json create mode 100644 lib/node_modules/@stdlib/utils/enumerable-properties-in/test/test.js diff --git a/lib/node_modules/@stdlib/utils/enumerable-properties-in/README.md b/lib/node_modules/@stdlib/utils/enumerable-properties-in/README.md new file mode 100644 index 000000000000..b47ea101ee9c --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-properties-in/README.md @@ -0,0 +1,103 @@ + + +# enumerablePropertiesIn + +> Return an array of an object's own and inherited enumerable property names and [symbols][@stdlib/symbol/ctor]. + +
+ +## Usage + +```javascript +var enumerablePropertiesIn = require( '@stdlib/utils/enumerable-properties-in' ); +``` + +#### enumerablePropertiesIn( obj ) + +Returns an `array` of an object's own and inherited enumerable property names and [symbols][@stdlib/symbol/ctor]. + +```javascript +var obj = { + 'a': 'a' +}; + +var props = enumerablePropertiesIn( obj ); +// returns [ 'a' ] +``` + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var enumerablePropertiesIn = require( '@stdlib/utils/enumerable-properties-in' ); + +var hasSymbols; +var props; +var obj; + +hasSymbols = hasSymbolSupport(); + +function Foo() { + this.a = 'b'; + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'b'; + } + return this; +} + +Foo.prototype.foo = 'bar'; +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'foo' ) ] = 'bar'; +} + +obj = new Foo(); +props = enumerablePropertiesIn( obj ); + +console.log( props ); +// => [ 'a', 'foo', ... ] +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/enumerable-properties-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/enumerable-properties-in/benchmark/benchmark.js new file mode 100644 index 000000000000..cf5a953c5dfd --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-properties-in/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var enumerablePropertiesIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = enumerablePropertiesIn( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/enumerable-properties-in/docs/repl.txt b/lib/node_modules/@stdlib/utils/enumerable-properties-in/docs/repl.txt new file mode 100644 index 000000000000..cef2410868cc --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-properties-in/docs/repl.txt @@ -0,0 +1,25 @@ + +{{alias}}( value ) + Returns an array of an object's own and inherited enumerable property names + and symbols. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + Returns + ------- + props: Array + List of an object's own and inherited enumerable property names and + symbols. + + Examples + -------- + > var props = {{alias}}( [] ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/enumerable-properties-in/examples/index.js b/lib/node_modules/@stdlib/utils/enumerable-properties-in/examples/index.js new file mode 100644 index 000000000000..b78674dfce6b --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-properties-in/examples/index.js @@ -0,0 +1,48 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var enumerablePropertiesIn = require( './../lib' ); + +var hasSymbols; +var props; +var obj; + +hasSymbols = hasSymbolSupport(); + +function Foo() { + this.a = 'b'; + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'b'; + } + return this; +} + +Foo.prototype.foo = 'bar'; +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'foo' ) ] = 'bar'; +} + +obj = new Foo(); +props = enumerablePropertiesIn( obj ); + +console.log( props ); +// => [ 'a', 'foo', ... ] diff --git a/lib/node_modules/@stdlib/utils/enumerable-properties-in/lib/index.js b/lib/node_modules/@stdlib/utils/enumerable-properties-in/lib/index.js new file mode 100644 index 000000000000..86e93a523e8f --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-properties-in/lib/index.js @@ -0,0 +1,40 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's own and inherited enumerable property names and symbols. +* +* @module @stdlib/utils/enumerable-properties-in +* +* @example +* var enumerablePropertiesIn = require( '@stdlib/utils/enumerable-properties-in' ); +* +* var props = enumerablePropertiesIn( [] ); +* // returns [...] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/enumerable-properties-in/lib/main.js b/lib/node_modules/@stdlib/utils/enumerable-properties-in/lib/main.js new file mode 100644 index 000000000000..f8fb3c3afd1b --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-properties-in/lib/main.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); +var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); +var isEnumerable = require( '@stdlib/assert/is-enumerable-property' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating if an array contains a provided value. +* +* @private +* @param {Array} arr - array +* @param {*} v - search value +* @returns {boolean} boolean indicating if an array contains a search value +*/ +function contains( arr, v ) { + var i; + for ( i = 0; i < arr.length; i++ ) { + if ( arr[ i ] === v ) { + return true; + } + } + return false; +} + + +// MAIN // + +/** +* Returns an array of an object's own and inherited enumerable property names and symbols. +* +* @param {*} value - input object +* @returns {Array} a list of own and inherited enumerable property names and symbols +* +* @example +* var props = enumerablePropertiesIn( [] ); +* // returns [...] +*/ +function enumerablePropertiesIn( value ) { + var cache; + var out; + var obj; + var tmp; + var k; + var i; + + if ( value === null || value === void 0 ) { + return []; + } + // Cast the value to an object: + obj = Object( value ); + + // Walk the prototype chain collecting enumerable properties... + cache = {}; + out = []; + do { + tmp = getOwnPropertyNames( obj ); + for ( i = 0; i < tmp.length; i++ ) { + k = tmp[ i ]; + if ( + hasOwnProp( cache, k ) === false && // guards against processing a name more than once + isEnumerable( obj, k ) && + contains( out, k ) === false + ) { + out.push( k ); + } + cache[ k ] = true; + } + tmp = getOwnPropertySymbols( obj ); + for ( i = 0; i < tmp.length; i++ ) { + k = tmp[ i ]; + if ( + hasOwnProp( cache, k ) === false && // guards against processing a symbol more than once + isEnumerable( obj, k ) && + contains( out, k ) === false + ) { + out.push( k ); + } + cache[ k ] = true; + } + obj = getPrototypeOf( obj ); + } while ( obj ); + + return out; +} + + +// EXPORTS // + +module.exports = enumerablePropertiesIn; diff --git a/lib/node_modules/@stdlib/utils/enumerable-properties-in/package.json b/lib/node_modules/@stdlib/utils/enumerable-properties-in/package.json new file mode 100644 index 000000000000..9e04aa53177b --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-properties-in/package.json @@ -0,0 +1,75 @@ +{ + "name": "@stdlib/utils/enumerable-properties-in", + "version": "0.0.0", + "description": "Return an array of an object's own and inherited enumerable property names and symbols.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "names", + "names-in", + "keys", + "keys-in", + "symbols", + "symbols-in", + "symbol", + "sym", + "own", + "enumerable", + "inherited", + "in", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/enumerable-properties-in/test/test.js b/lib/node_modules/@stdlib/utils/enumerable-properties-in/test/test.js new file mode 100644 index 000000000000..a4a32cd5004b --- /dev/null +++ b/lib/node_modules/@stdlib/utils/enumerable-properties-in/test/test.js @@ -0,0 +1,206 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var enumerablePropertiesIn = require( './../lib' ); + + +// VARIABLES // + +var hasSymbols = hasSymbolSupport(); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof enumerablePropertiesIn, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns an array of an object\'s own and inherited enumerable property names and symbols', function test( t ) { + var expected; + var symbols; + var actual; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + symbols = [ + Symbol( 'a' ), + Symbol( 'b' ), + Symbol( 'c' ) + ]; + } else { + symbols = []; + } + + function Foo() { + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ symbols[ 0 ] ] = 'a'; + defineProperty( this, symbols[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; + } + + Foo.prototype.b = 'b'; + Foo.prototype.c = 'c'; + defineProperty( Foo.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + if ( hasSymbols ) { + Foo.prototype[ symbols[ 1 ] ] = 'b'; + defineProperty( Foo.prototype, symbols[ 2 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'c' + }); + } + + obj = new Foo(); + + expected = [ 'a', 'c' ]; + if ( hasSymbols ) { + expected.push( symbols[ 0 ] ); + } + actual = enumerablePropertiesIn( obj ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s own and inherited enumerable property names and symbols (mock)', function test( t ) { + var enumerablePropertiesIn; + var expected; + var symbols; + var actual; + var obj; + var idx; + var i; + + enumerablePropertiesIn = proxyquire( './../lib/main.js', { + '@stdlib/utils/property-symbols': propertySymbols + }); + + symbols = [ '__a__', '__b__', '__c__' ]; + + function Foo() { + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'b' + }); + this[ symbols[ 0 ] ] = 'a'; + defineProperty( this, symbols[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + return this; + } + + Foo.prototype.b = 'b'; + Foo.prototype.c = 'c'; + defineProperty( Foo.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + Foo.prototype[ symbols[ 1 ] ] = 'b'; + defineProperty( Foo.prototype, symbols[ 2 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'c' + }); + + obj = new Foo(); + + expected = [ 'a', 'c', symbols[ 0 ] ]; + actual = enumerablePropertiesIn( obj ); + + t.strictEqual( actual.length, expected.length, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + t.end(); + + function propertySymbols( value ) { + if ( value === obj ) { + return symbols.slice( 0, 2 ); + } + if ( value === Foo.prototype ) { + return symbols.slice( 1 ); + } + return []; + } +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = enumerablePropertiesIn( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From e77e938daac989e69e5a0c993b1d182292578186 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 20:22:03 -0700 Subject: [PATCH 0334/1062] Remove unnecessary check --- .../enumerable-properties-in/lib/main.js | 27 ++----------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/enumerable-properties-in/lib/main.js b/lib/node_modules/@stdlib/utils/enumerable-properties-in/lib/main.js index f8fb3c3afd1b..012036d45404 100644 --- a/lib/node_modules/@stdlib/utils/enumerable-properties-in/lib/main.js +++ b/lib/node_modules/@stdlib/utils/enumerable-properties-in/lib/main.js @@ -27,27 +27,6 @@ var hasOwnProp = require( '@stdlib/assert/has-own-property' ); var isEnumerable = require( '@stdlib/assert/is-enumerable-property' ); -// FUNCTIONS // - -/** -* Returns a boolean indicating if an array contains a provided value. -* -* @private -* @param {Array} arr - array -* @param {*} v - search value -* @returns {boolean} boolean indicating if an array contains a search value -*/ -function contains( arr, v ) { - var i; - for ( i = 0; i < arr.length; i++ ) { - if ( arr[ i ] === v ) { - return true; - } - } - return false; -} - - // MAIN // /** @@ -83,8 +62,7 @@ function enumerablePropertiesIn( value ) { k = tmp[ i ]; if ( hasOwnProp( cache, k ) === false && // guards against processing a name more than once - isEnumerable( obj, k ) && - contains( out, k ) === false + isEnumerable( obj, k ) ) { out.push( k ); } @@ -95,8 +73,7 @@ function enumerablePropertiesIn( value ) { k = tmp[ i ]; if ( hasOwnProp( cache, k ) === false && // guards against processing a symbol more than once - isEnumerable( obj, k ) && - contains( out, k ) === false + isEnumerable( obj, k ) ) { out.push( k ); } From b4d670d8dcff2b64214379e079bdcd96ca8d0068 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 20:30:41 -0700 Subject: [PATCH 0335/1062] Fix behavior when property appears than once in prototype chain --- .../lib/main.js | 35 +++++----------- .../test/test.js | 40 +++++++++++-------- 2 files changed, 34 insertions(+), 41 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/lib/main.js b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/lib/main.js index 8fa05b73d728..93f995913dfa 100644 --- a/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/lib/main.js +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/lib/main.js @@ -23,27 +23,7 @@ var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); var isEnumerableProperty = require( '@stdlib/assert/is-enumerable-property' ); - - -// FUNCTIONS // - -/** -* Returns a boolean indicating if an array contains a provided value. -* -* @private -* @param {Array} arr - array -* @param {*} v - search value -* @returns {boolean} boolean indicating if an array contains a search value -*/ -function contains( arr, v ) { - var i; - for ( i = 0; i < arr.length; i++ ) { - if ( arr[ i ] === v ) { - return true; - } - } - return false; -} +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); // MAIN // @@ -59,8 +39,10 @@ function contains( arr, v ) { */ function enumerablePropertySymbolsIn( value ) { // eslint-disable-line id-length var symbols; + var cache; var obj; var tmp; + var k; var i; if ( value === null || value === void 0 ) { @@ -69,17 +51,20 @@ function enumerablePropertySymbolsIn( value ) { // eslint-disable-line id-length // Cast the value to an object: obj = Object( value ); - // Walk the prototype chain collecting all enumerable symbol properties... + // Walk the prototype chain collecting enumerable symbol properties... symbols = []; + cache = {}; do { tmp = getOwnPropertySymbols( obj ); for ( i = 0; i < tmp.length; i++ ) { + k = tmp[ i ]; if ( - isEnumerableProperty( obj, tmp[ i ] ) && - contains( symbols, tmp[ i ] ) === false + hasOwnProp( cache, k ) === false && // guards against processing a symbol more than once + isEnumerableProperty( obj, k ) ) { - symbols.push( tmp[ i ] ); + symbols.push( k ); } + cache[ k ] = true; } obj = getPrototypeOf( obj ); } while ( obj ); diff --git a/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/test/test.js b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/test/test.js index 04af5e70f057..a80d2a4e455a 100644 --- a/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/test/test.js +++ b/lib/node_modules/@stdlib/utils/enumerable-property-symbols-in/test/test.js @@ -62,7 +62,7 @@ tape( 'the function returns an array of an object\'s own and inherited enumerabl }); defineProperty( this, syms[ 3 ], { 'configurable': false, - 'enumerable': true, + 'enumerable': false, 'writable': true, 'value': 'g' }); @@ -87,6 +87,7 @@ tape( 'the function returns an array of an object\'s own and inherited enumerabl Symbol( 'baz' ) ]; + Foo.prototype[ syms[ 3 ] ] = 'g'; Foo.prototype[ syms[ 5 ] ] = [ 'bar' ]; defineProperty( Foo.prototype, syms[ 6 ], { 'configurable': false, @@ -97,7 +98,7 @@ tape( 'the function returns an array of an object\'s own and inherited enumerabl obj = new Foo(); - expected = [ syms[ 0 ], syms[ 1 ], syms[ 2 ], syms[ 3 ], syms[ 5 ] ]; + expected = [ syms[ 0 ], syms[ 1 ], syms[ 2 ], syms[ 5 ] ]; } else { syms = []; expected = []; @@ -107,7 +108,7 @@ tape( 'the function returns an array of an object\'s own and inherited enumerabl t.strictEqual( actual.length, expected.length, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { idx = indexOf( actual, expected[ i ] ); - t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i].toString() ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); } t.end(); }); @@ -122,17 +123,17 @@ tape( 'the function returns an array of an object\'s own and inherited enumerabl var i; enumerablePropertySymbolsIn = proxyquire( './../lib/main.js', { - '@stdlib/utils/property-symbols': propertySymbolsIn + '@stdlib/utils/property-symbols': propertySymbols }); syms = [ - 'beep', - 'a', - 'd', - 'f', - 'h', - 'foo', - 'baz' + '__beep__', + '__a__', + '__d__', + '__f__', + '__h__', + '__foo__', + '__baz__' ]; function Foo() { @@ -148,7 +149,7 @@ tape( 'the function returns an array of an object\'s own and inherited enumerabl }); defineProperty( this, syms[ 3 ], { 'configurable': false, - 'enumerable': true, + 'enumerable': false, 'writable': true, 'value': 'g' }); @@ -161,6 +162,7 @@ tape( 'the function returns an array of an object\'s own and inherited enumerabl return this; } + Foo.prototype[ syms[ 3 ] ] = 'g'; Foo.prototype[ syms[ 5 ] ] = [ 'bar' ]; defineProperty( Foo.prototype, syms[ 6 ], { 'configurable': false, @@ -171,18 +173,24 @@ tape( 'the function returns an array of an object\'s own and inherited enumerabl obj = new Foo(); - expected = [ syms[ 0 ], syms[ 1 ], syms[ 2 ], syms[ 3 ], syms[ 5 ] ]; + expected = [ syms[ 0 ], syms[ 1 ], syms[ 2 ], syms[ 5 ] ]; actual = enumerablePropertySymbolsIn( obj ); t.strictEqual( actual.length, expected.length, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { idx = indexOf( actual, expected[ i ] ); - t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i].toString() ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); } t.end(); - function propertySymbolsIn() { - return syms.slice(); + function propertySymbols( value ) { + if ( value === obj ) { + return syms.slice( 0, 5 ); + } + if ( value === Foo.prototype ) { + return [ syms[ 3 ], syms[ 5 ], syms[ 6 ] ]; + } + return []; } }); From f91d9d2599717544a04c71a23c24bfc79db85487 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 20:36:00 -0700 Subject: [PATCH 0336/1062] Fix behavior when property appears than once in prototype chain --- .../lib/main.js | 35 ++++++------------- .../test/test.js | 9 +++++ 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/main.js index 6451ed168cd2..6fb8a4ecea77 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/main.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/lib/main.js @@ -23,27 +23,7 @@ var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property' ); - - -// FUNCTIONS // - -/** -* Returns a boolean indicating if an array contains a provided value. -* -* @private -* @param {Array} arr - array -* @param {*} v - search value -* @returns {boolean} boolean indicating if an array contains a search value -*/ -function contains( arr, v ) { - var i; - for ( i = 0; i < arr.length; i++ ) { - if ( arr[ i ] === v ) { - return true; - } - } - return false; -} +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); // MAIN // @@ -71,8 +51,10 @@ function contains( arr, v ) { */ function nonEnumerablePropertyNamesIn( value ) { // eslint-disable-line id-length var names; + var cache; var obj; var tmp; + var k; var i; if ( value === null || value === void 0 ) { @@ -81,17 +63,20 @@ function nonEnumerablePropertyNamesIn( value ) { // eslint-disable-line id-lengt // Cast the value to an object: obj = Object( value ); - // Walk the prototype chain collecting all non-enumerable property names... + // Walk the prototype chain collecting non-enumerable property names... names = []; + cache = {}; do { tmp = getOwnPropertyNames( obj ); for ( i = 0; i < tmp.length; i++ ) { + k = tmp[ i ]; if ( - isNonEnumerableProperty( obj, tmp[ i ] ) && - contains( names, tmp[ i ] ) === false + hasOwnProp( cache, k ) === false && + isNonEnumerableProperty( obj, k ) ) { - names.push( tmp[ i ] ); + names.push( k ); } + cache[ k ] = true; } obj = getPrototypeOf( obj ); } while ( obj ); diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/test/test.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/test/test.js index 51adf6b10e16..70405fe2e748 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/test/test.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-names-in/test/test.js @@ -56,6 +56,12 @@ tape( 'the function returns an array of an object\'s own and inherited non-enume } Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'a', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'a' + }); defineProperty( Foo.prototype, 'baz', { 'configurable': false, 'enumerable': false, @@ -68,10 +74,13 @@ tape( 'the function returns an array of an object\'s own and inherited non-enume expected = [ 'd', 'baz' ]; actual = nonEnumerablePropertyNamesIn( obj ); + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { idx = indexOf( actual, expected[ i ] ); t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); } + idx = indexOf( actual, 'a' ); + t.strictEqual( idx, -1, 'does not contain property' ); t.end(); }); From 0468c8b7e045884d8c543151ebcdcc6be7dcf028 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 20:42:41 -0700 Subject: [PATCH 0337/1062] Fix behavior when property appears than once in prototype chain --- .../lib/main.js | 33 ++++-------- .../test/test.js | 50 +++++++++++++------ 2 files changed, 43 insertions(+), 40 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/lib/main.js index 56ed9f556190..32bb01fa1911 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/lib/main.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/lib/main.js @@ -23,27 +23,7 @@ var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property' ); - - -// FUNCTIONS // - -/** -* Returns a boolean indicating if an array contains a provided value. -* -* @private -* @param {Array} arr - array -* @param {*} v - search value -* @returns {boolean} boolean indicating if an array contains a search value -*/ -function contains( arr, v ) { - var i; - for ( i = 0; i < arr.length; i++ ) { - if ( arr[ i ] === v ) { - return true; - } - } - return false; -} +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); // MAIN // @@ -59,8 +39,10 @@ function contains( arr, v ) { */ function nonEnumerablePropertySymbolsIn( value ) { // eslint-disable-line id-length var symbols; + var cache; var obj; var tmp; + var k; var i; if ( value === null || value === void 0 ) { @@ -71,15 +53,18 @@ function nonEnumerablePropertySymbolsIn( value ) { // eslint-disable-line id-len // Walk the prototype chain collecting all non-enumerable symbol properties... symbols = []; + cache = {}; do { tmp = getOwnPropertySymbols( obj ); for ( i = 0; i < tmp.length; i++ ) { + k = tmp[ i ]; if ( - isNonEnumerableProperty( obj, tmp[ i ] ) && - contains( symbols, tmp[ i ] ) === false + hasOwnProp( cache, k ) === false && + isNonEnumerableProperty( obj, k ) ) { - symbols.push( tmp[ i ] ); + symbols.push( k ); } + cache[ k ] = true; } obj = getPrototypeOf( obj ); } while ( obj ); diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/test/test.js b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/test/test.js index 42455635c935..3d746cbca492 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/test/test.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-property-symbols-in/test/test.js @@ -61,8 +61,8 @@ tape( 'the function returns an array of an object\'s own and inherited non-enume 'value': 'e' }); defineProperty( this, syms[ 3 ], { - 'configurable': false, - 'enumerable': false, + 'configurable': true, + 'enumerable': true, 'writable': true, 'value': 'g' }); @@ -87,6 +87,12 @@ tape( 'the function returns an array of an object\'s own and inherited non-enume Symbol( 'baz' ) ]; + defineProperty( Foo.prototype, syms[ 3 ], { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'g' + }); Foo.prototype[ syms[ 5 ] ] = [ 'bar' ]; defineProperty( Foo.prototype, syms[ 6 ], { 'configurable': false, @@ -97,7 +103,7 @@ tape( 'the function returns an array of an object\'s own and inherited non-enume obj = new Foo(); - expected = [ syms[ 2 ], syms[ 3 ], syms[ 4 ], syms[ 6 ] ]; + expected = [ syms[ 2 ], syms[ 4 ], syms[ 6 ] ]; } else { syms = []; expected = []; @@ -122,17 +128,17 @@ tape( 'the function returns an array of an object\'s own and inherited non-enume var i; nonEnumerablePropertySymbolsIn = proxyquire( './../lib/main.js', { - '@stdlib/utils/property-symbols': propertySymbolsIn + '@stdlib/utils/property-symbols': propertySymbols }); syms = [ - 'beep', - 'a', - 'd', - 'f', - 'h', - 'foo', - 'baz' + '__beep__', + '__a__', + '__d__', + '__f__', + '__h__', + '__foo__', + '__baz__' ]; function Foo() { @@ -148,7 +154,7 @@ tape( 'the function returns an array of an object\'s own and inherited non-enume }); defineProperty( this, syms[ 3 ], { 'configurable': false, - 'enumerable': false, + 'enumerable': true, 'writable': true, 'value': 'g' }); @@ -161,6 +167,12 @@ tape( 'the function returns an array of an object\'s own and inherited non-enume return this; } + defineProperty( Foo.prototype, syms[ 3 ], { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'g' + }); Foo.prototype[ syms[ 5 ] ] = [ 'bar' ]; defineProperty( Foo.prototype, syms[ 6 ], { 'configurable': false, @@ -171,18 +183,24 @@ tape( 'the function returns an array of an object\'s own and inherited non-enume obj = new Foo(); - expected = [ syms[ 2 ], syms[ 3 ], syms[ 4 ], syms[ 6 ] ]; + expected = [ syms[ 2 ], syms[ 4 ], syms[ 6 ] ]; actual = nonEnumerablePropertySymbolsIn( obj ); t.strictEqual( actual.length, expected.length, 'has expected length' ); for ( i = 0; i < expected.length; i++ ) { idx = indexOf( actual, expected[ i ] ); - t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i].toString() ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); } t.end(); - function propertySymbolsIn() { - return syms.slice(); + function propertySymbols( value ) { + if ( value === obj ) { + return syms.slice( 0, 5 ); + } + if ( value === Foo.prototype ) { + return [ syms[ 3 ], syms[ 5 ], syms[ 6 ] ]; + } + return []; } }); From 9d76e0fa235c56e4aa253581d6faa09bd4aeee98 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 20:53:15 -0700 Subject: [PATCH 0338/1062] Fix behavior when property appears than once in prototype chain --- .../lib/main.js | 35 ++++++------------- .../test/test.js | 17 +++++++-- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/lib/main.js b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/lib/main.js index 07a35dc0b853..a22d099768d9 100644 --- a/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/lib/main.js +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/lib/main.js @@ -25,27 +25,7 @@ var isPositiveInteger = require( '@stdlib/assert/is-positive-integer' ).isPrimit var isEnumerableProperty = require( '@stdlib/assert/is-enumerable-property' ); var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); - - -// FUNCTIONS // - -/** -* Returns a boolean indicating if an array contains a provided value. -* -* @private -* @param {Array} arr - array -* @param {*} v - search value -* @returns {boolean} boolean indicating if an array contains a search value -*/ -function contains( arr, v ) { - var i; - for ( i = 0; i < arr.length; i++ ) { - if ( arr[ i ] === v ) { - return true; - } - } - return false; -} +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); // MAIN // @@ -62,11 +42,13 @@ function contains( arr, v ) { * var symbols = inheritedEnumerablePropertySymbols( [] ); */ function inheritedEnumerablePropertySymbols( value, level ) { // eslint-disable-line id-length + var cache; var out; var obj; var tmp; var N; var n; + var k; var i; if ( arguments.length > 1 ) { @@ -83,18 +65,21 @@ function inheritedEnumerablePropertySymbols( value, level ) { // eslint-disable- // Get the value's prototype: obj = getPrototypeOf( value ); - // Walk the prototype chain collecting all enumerable symbol properties... + // Walk the prototype chain collecting enumerable symbol properties... + cache = {}; out = []; n = 1; while ( obj && n <= N ) { tmp = getOwnPropertySymbols( obj ); for ( i = 0; i < tmp.length; i++ ) { + k = tmp[ i ]; if ( - isEnumerableProperty( obj, tmp[ i ] ) && - contains( out, tmp[ i ] ) === false + hasOwnProp( cache, k ) === false && + isEnumerableProperty( obj, k ) ) { - out.push( tmp[ i ] ); + out.push( k ); } + cache[ k ] = true; } obj = getPrototypeOf( obj ); n += 1; diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/test/test.js b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/test/test.js index 85d29b7c4928..78ca2bd99d63 100644 --- a/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/test/test.js +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-property-symbols/test/test.js @@ -119,6 +119,7 @@ tape( 'the function returns an array of an object\'s inherited enumerable symbol 'value': 'd' }); if ( hasSymbols ) { + Foo.prototype[ syms[ 1 ] ] = 'b'; Foo.prototype[ syms[ 2 ] ] = 'c'; defineProperty( Foo.prototype, syms[ 3 ], { 'configurable': false, @@ -131,7 +132,7 @@ tape( 'the function returns an array of an object\'s inherited enumerable symbol obj = new Foo(); if ( hasSymbols ) { - expected = [ syms[ 2 ] ]; + expected = [ syms[ 1 ], syms[ 2 ] ]; } else { expected = []; } @@ -160,7 +161,8 @@ tape( 'the function returns an array of an object\'s inherited enumerable symbol Symbol( 'c' ), Symbol( 'd' ), Symbol( 'e' ), - Symbol( 'f' ) + Symbol( 'f' ), + Symbol( 'g' ) ]; } else { syms = []; @@ -196,6 +198,7 @@ tape( 'the function returns an array of an object\'s inherited enumerable symbol 'writable': false, 'value': 'e' }); + Bar.prototype[ syms[ 6 ] ] = 'g'; } function Foo() { @@ -241,6 +244,12 @@ tape( 'the function returns an array of an object\'s inherited enumerable symbol 'writable': false, 'value': 'f' }); + defineProperty( Foo.prototype, syms[ 6 ], { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'g' + }); } obj = new Foo(); @@ -257,6 +266,10 @@ tape( 'the function returns an array of an object\'s inherited enumerable symbol idx = indexOf( actual, expected[ i ] ); t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); } + if ( hasSymbols ) { + idx = indexOf( actual, syms[ 6 ] ); + t.strictEqual( idx, -1, 'does not contain property' ); + } t.end(); }); From 7f39189ae928d2815a4ab090be11264e878a36e7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 14 Sep 2018 22:27:56 -0700 Subject: [PATCH 0339/1062] Fix behavior when property appears than once in prototype chain --- .../@stdlib/utils/inherited-keys/lib/main.js | 41 ++++------- .../@stdlib/utils/inherited-keys/test/test.js | 69 ++++++++++--------- 2 files changed, 53 insertions(+), 57 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/inherited-keys/lib/main.js b/lib/node_modules/@stdlib/utils/inherited-keys/lib/main.js index ff6af0ead8bf..d51fbb467996 100644 --- a/lib/node_modules/@stdlib/utils/inherited-keys/lib/main.js +++ b/lib/node_modules/@stdlib/utils/inherited-keys/lib/main.js @@ -22,29 +22,10 @@ var MAX_SAFE_INTEGER = require( '@stdlib/constants/math/float64-max-safe-integer' ); var isPositiveInteger = require( '@stdlib/assert/is-positive-integer' ).isPrimitive; -var getKeys = require( '@stdlib/utils/keys' ); +var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); - - -// FUNCTIONS // - -/** -* Returns a boolean indicating if an array contains a provided value. -* -* @private -* @param {Array} arr - array -* @param {*} v - search value -* @returns {boolean} boolean indicating if an array contains a search value -*/ -function contains( arr, v ) { - var i; - for ( i = 0; i < arr.length; i++ ) { - if ( arr[ i ] === v ) { - return true; - } - } - return false; -} +var isEnumerable = require( '@stdlib/assert/is-enumerable-property' ); +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); // MAIN // @@ -62,10 +43,12 @@ function contains( arr, v ) { */ function inheritedKeys( value, level ) { var names; + var cache; var obj; var tmp; var N; var n; + var k; var i; if ( arguments.length > 1 ) { @@ -82,15 +65,21 @@ function inheritedKeys( value, level ) { // Get the value's prototype: obj = getPrototypeOf( value ); - // Walk the prototype chain collecting all enumerable property names... + // Walk the prototype chain collecting enumerable property names... names = []; + cache = {}; n = 1; while ( obj && n <= N ) { - tmp = getKeys( obj ); + tmp = getOwnPropertyNames( obj ); for ( i = 0; i < tmp.length; i++ ) { - if ( contains( names, tmp[ i ] ) === false ) { - names.push( tmp[ i ] ); + k = tmp[ i ]; + if ( + hasOwnProp( cache, k ) === false && + isEnumerable( obj, k ) + ) { + names.push( k ); } + cache[ k ] = true; } obj = getPrototypeOf( obj ); n += 1; diff --git a/lib/node_modules/@stdlib/utils/inherited-keys/test/test.js b/lib/node_modules/@stdlib/utils/inherited-keys/test/test.js index f8491a3aa1bf..6d953331674f 100644 --- a/lib/node_modules/@stdlib/utils/inherited-keys/test/test.js +++ b/lib/node_modules/@stdlib/utils/inherited-keys/test/test.js @@ -73,30 +73,35 @@ tape( 'the function returns an array of an object\'s inherited enumerable proper var i; function Foo() { - this.beep = 'boop'; - this.a = { - 'b': 'c' - }; - defineProperty( this, 'd', { + this.a = 'a'; + this.b = 'b'; + defineProperty( this, 'c', { 'configurable': false, 'enumerable': false, 'writable': true, - 'value': 'e' + 'value': 'c' + }); + defineProperty( this, 'f', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'f' }); return this; } - Foo.prototype.foo = [ 'bar' ]; - defineProperty( Foo.prototype, 'baz', { + Foo.prototype.d = 'd'; + defineProperty( Foo.prototype, 'e', { 'configurable': false, 'enumerable': false, 'writable': false, - 'value': 'bap' + 'value': 'e' }); + Foo.prototype.f = 'f'; obj = new Foo(); - expected = [ 'foo' ]; + expected = [ 'd', 'f' ]; actual = inheritedKeys( obj ); t.strictEqual( actual.length, expected.length, 'has expected length' ); @@ -115,56 +120,58 @@ tape( 'the function returns an array of an object\'s inherited enumerable proper var i; function Bar() { - this.boop = 'beep'; - this.a = { - 'b': 'c' - }; - defineProperty( this, 'd', { + this.a = 'a'; + this.b = 'b'; + defineProperty( this, 'c', { 'configurable': false, 'enumerable': false, 'writable': true, - 'value': 'e' + 'value': 'c' }); return this; } - Bar.prototype.foo = 3.14; - Bar.prototype.bar = [ 'foo' ]; - defineProperty( Bar.prototype, 'bap', { - 'configurable': false, - 'enumerable': false, + Bar.prototype.c = 'c'; + Bar.prototype.d = 'd'; + defineProperty( Bar.prototype, 'e', { + 'configurable': true, + 'enumerable': true, 'writable': false, - 'value': 'baz' + 'value': 'e' }); function Foo() { Bar.call( this ); - this.beep = 'boop'; - this.a = { - 'b': 'c' - }; + this.a = 'a'; + this.b = 'b'; defineProperty( this, 'd', { 'configurable': false, 'enumerable': false, 'writable': true, - 'value': 'e' + 'value': 'd' }); return this; } inherit( Foo, Bar ); - Foo.prototype.foo = [ 'bar' ]; - defineProperty( Foo.prototype, 'baz', { + defineProperty( Foo.prototype, 'e', { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + Foo.prototype.f = 'f'; + defineProperty( Foo.prototype, 'g', { 'configurable': false, 'enumerable': false, 'writable': false, - 'value': 'bap' + 'value': 'g' }); obj = new Foo(); - expected = [ 'foo', 'bar' ]; + expected = [ 'f', 'c', 'd' ]; actual = inheritedKeys( obj ); t.strictEqual( actual.length, expected.length, 'has expected length' ); From c8866c41354bbe30ea129ef94aa4437e23b49d36 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 15 Sep 2018 01:27:03 -0700 Subject: [PATCH 0340/1062] Fix behavior when property appears more than once in prototype chain --- .../lib/main.js | 35 +++------- .../test/test.js | 70 +++++++++++-------- 2 files changed, 52 insertions(+), 53 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/lib/main.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/lib/main.js index 5a7c6a267e07..539b6c1d2613 100644 --- a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/lib/main.js +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/lib/main.js @@ -25,27 +25,7 @@ var isPositiveInteger = require( '@stdlib/assert/is-positive-integer' ).isPrimit var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property' ); var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); - - -// FUNCTIONS // - -/** -* Returns a boolean indicating if an array contains a provided value. -* -* @private -* @param {Array} arr - array -* @param {*} v - search value -* @returns {boolean} boolean indicating if an array contains a search value -*/ -function contains( arr, v ) { - var i; - for ( i = 0; i < arr.length; i++ ) { - if ( arr[ i ] === v ) { - return true; - } - } - return false; -} +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); // MAIN // @@ -63,10 +43,12 @@ function contains( arr, v ) { */ function inheritedNonEnumerablePropertyNames( value, level ) { // eslint-disable-line id-length var names; + var cache; var obj; var tmp; var N; var n; + var k; var i; if ( arguments.length > 1 ) { @@ -83,18 +65,21 @@ function inheritedNonEnumerablePropertyNames( value, level ) { // eslint-disable // Get the value's prototype: obj = getPrototypeOf( value ); - // Walk the prototype chain collecting all non-enumerable property names... + // Walk the prototype chain collecting non-enumerable property names... names = []; + cache = {}; n = 1; while ( obj && n <= N ) { tmp = getOwnPropertyNames( obj ); for ( i = 0; i < tmp.length; i++ ) { + k = tmp[ i ]; if ( - isNonEnumerableProperty( obj, tmp[ i ] ) && - contains( names, tmp[ i ] ) === false + hasOwnProp( cache, k ) === false && + isNonEnumerableProperty( obj, k ) ) { - names.push( tmp[ i ] ); + names.push( k ); } + cache[ k ] = true; } obj = getPrototypeOf( obj ); n += 1; diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/test/test.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/test/test.js index b2a308d629cf..6602e63b1bdf 100644 --- a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/test/test.js +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-names/test/test.js @@ -73,30 +73,35 @@ tape( 'the function returns an array of an object\'s inherited non-enumerable pr var i; function Foo() { - this.beep = 'boop'; - this.a = { - 'b': 'c' - }; - defineProperty( this, 'd', { + this.a = 'a'; + this.b = 'b'; + defineProperty( this, 'c', { 'configurable': false, 'enumerable': false, 'writable': true, - 'value': 'e' + 'value': 'c' + }); + defineProperty( this, 'f', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'f' }); return this; } - Foo.prototype.foo = [ 'bar' ]; - defineProperty( Foo.prototype, 'baz', { + Foo.prototype.d = 'd'; + defineProperty( Foo.prototype, 'e', { 'configurable': false, 'enumerable': false, 'writable': false, - 'value': 'bap' + 'value': 'e' }); + Foo.prototype.f = 'f'; obj = new Foo(); - expected = [ 'baz' ]; + expected = [ 'e' ]; actual = inheritedNonEnumerablePropertyNames( obj ); t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); @@ -115,56 +120,63 @@ tape( 'the function returns an array of an object\'s inherited non-enumerable pr var i; function Bar() { - this.boop = 'beep'; - this.a = { - 'b': 'c' - }; + this.a = 'a'; defineProperty( this, 'd', { 'configurable': false, 'enumerable': false, 'writable': true, - 'value': 'e' + 'value': 'd' }); return this; } - Bar.prototype.foo = 3.14; - Bar.prototype.bar = [ 'foo' ]; - defineProperty( Bar.prototype, 'bap', { + Bar.prototype.b = 'b'; + Bar.prototype.c = 'c'; + defineProperty( Bar.prototype, 'd', { 'configurable': false, 'enumerable': false, 'writable': false, - 'value': 'baz' + 'value': 'd' + }); + defineProperty( Bar.prototype, 'f', { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'f' }); function Foo() { Bar.call( this ); - this.beep = 'boop'; - this.a = { - 'b': 'c' - }; + this.a = 'a'; + this.b = 'b'; defineProperty( this, 'd', { 'configurable': false, 'enumerable': false, 'writable': true, - 'value': 'e' + 'value': 'd' }); return this; } inherit( Foo, Bar ); - Foo.prototype.foo = [ 'bar' ]; - defineProperty( Foo.prototype, 'baz', { + Foo.prototype.b = 'b'; + defineProperty( Foo.prototype, 'e', { 'configurable': false, 'enumerable': false, 'writable': false, - 'value': 'bap' + 'value': 'e' + }); + defineProperty( Foo.prototype, 'f', { + 'configurable': true, + 'enumerable': true, + 'writable': false, + 'value': 'f' }); obj = new Foo(); - expected = [ 'baz', 'bap' ]; + expected = [ 'e', 'd' ]; actual = inheritedNonEnumerablePropertyNames( obj ); t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); @@ -172,6 +184,8 @@ tape( 'the function returns an array of an object\'s inherited non-enumerable pr idx = indexOf( actual, expected[ i ] ); t.strictEqual( idx !== -1, true, 'contains property name: '+expected[i] ); } + idx = indexOf( actual, 'f' ); + t.strictEqual( idx, -1, 'does not contain property' ); t.end(); }); From 38f1cafe31d386e8ff2e542b7f4436e3b2e5f075 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 15 Sep 2018 01:32:16 -0700 Subject: [PATCH 0341/1062] Fix behavior when property appears more than once in prototype chain --- .../lib/main.js | 35 ++++++------------- .../test/test.js | 18 ++++++++-- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/lib/main.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/lib/main.js index 6f48895b4b69..119af3e9940c 100644 --- a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/lib/main.js +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/lib/main.js @@ -25,27 +25,7 @@ var isPositiveInteger = require( '@stdlib/assert/is-positive-integer' ).isPrimit var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property' ); var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); - - -// FUNCTIONS // - -/** -* Returns a boolean indicating if an array contains a provided value. -* -* @private -* @param {Array} arr - array -* @param {*} v - search value -* @returns {boolean} boolean indicating if an array contains a search value -*/ -function contains( arr, v ) { - var i; - for ( i = 0; i < arr.length; i++ ) { - if ( arr[ i ] === v ) { - return true; - } - } - return false; -} +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); // MAIN // @@ -62,11 +42,13 @@ function contains( arr, v ) { * var symbols = inheritedNonEnumerablePropertySymbols( [] ); */ function inheritedNonEnumerablePropertySymbols( value, level ) { // eslint-disable-line id-length + var cache; var out; var obj; var tmp; var N; var n; + var k; var i; if ( arguments.length > 1 ) { @@ -83,18 +65,21 @@ function inheritedNonEnumerablePropertySymbols( value, level ) { // eslint-disab // Get the value's prototype: obj = getPrototypeOf( value ); - // Walk the prototype chain collecting all non-enumerable symbol properties... + // Walk the prototype chain collecting non-enumerable symbol properties... + cache = {}; out = []; n = 1; while ( obj && n <= N ) { tmp = getOwnPropertySymbols( obj ); for ( i = 0; i < tmp.length; i++ ) { + k = tmp[ i ]; if ( - isNonEnumerableProperty( obj, tmp[ i ] ) && - contains( out, tmp[ i ] ) === false + hasOwnProp( cache, k ) === false && + isNonEnumerableProperty( obj, k ) ) { - out.push( tmp[ i ] ); + out.push( k ); } + cache[ k ] = true; } obj = getPrototypeOf( obj ); n += 1; diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/test/test.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/test/test.js index 280b71901759..21ee74026226 100644 --- a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/test/test.js +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-property-symbols/test/test.js @@ -183,7 +183,12 @@ tape( 'the function returns an array of an object\'s inherited non-enumerable sy 'value': 'e' }); if ( hasSymbols ) { - Bar.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Bar.prototype, syms[ 2 ], { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'c' + }); defineProperty( Bar.prototype, syms[ 3 ], { 'configurable': true, 'enumerable': false, @@ -228,7 +233,12 @@ tape( 'the function returns an array of an object\'s inherited non-enumerable sy 'value': 'f' }); if ( hasSymbols ) { - Foo.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Foo.prototype, syms[ 2 ], { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'c' + }); defineProperty( Foo.prototype, syms[ 3 ], { 'configurable': true, 'enumerable': false, @@ -257,6 +267,10 @@ tape( 'the function returns an array of an object\'s inherited non-enumerable sy idx = indexOf( actual, expected[ i ] ); t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); } + if ( hasSymbols ) { + idx = indexOf( actual, syms[ 2 ] ); + t.strictEqual( idx, -1, 'does not contain property' ); + } t.end(); }); From d838da723bd52b186ae5f876a08e64257ce3b72f Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 15 Sep 2018 01:50:57 -0700 Subject: [PATCH 0342/1062] Add utility to return an object's own and inherited non-enumerable properties --- .../nonenumerable-properties-in/README.md | 135 +++++++++ .../benchmark/benchmark.js | 72 +++++ .../nonenumerable-properties-in/docs/repl.txt | 25 ++ .../examples/index.js | 73 +++++ .../nonenumerable-properties-in/lib/index.js | 40 +++ .../nonenumerable-properties-in/lib/main.js | 91 ++++++ .../nonenumerable-properties-in/package.json | 77 +++++ .../nonenumerable-properties-in/test/test.js | 268 ++++++++++++++++++ 8 files changed, 781 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-properties-in/README.md create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-properties-in/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-properties-in/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-properties-in/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-properties-in/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-properties-in/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-properties-in/package.json create mode 100644 lib/node_modules/@stdlib/utils/nonenumerable-properties-in/test/test.js diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/README.md b/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/README.md new file mode 100644 index 000000000000..57bfeeae7c69 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/README.md @@ -0,0 +1,135 @@ + + +# nonEnumerablePropertiesIn + +> Return an array of an object's own and inherited non-enumerable property names and [symbols][@stdlib/symbol/ctor]. + +
+ +## Usage + +```javascript +var nonEnumerablePropertiesIn = require( '@stdlib/utils/nonenumerable-properties-in' ); +``` + +#### nonEnumerablePropertiesIn( obj ) + +Returns an `array` of an object's own and inherited non-enumerable property names and [symbols][@stdlib/symbol/ctor]. + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +var obj = {}; + +defineProperty( obj, 'a', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'a' +}); + +var props = nonEnumerablePropertiesIn( obj ); +// returns [ 'a', ... ] +``` + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var nonEnumerablePropertiesIn = require( '@stdlib/utils/nonenumerable-properties-in' ); + +var hasSymbols; +var props; +var obj; + +hasSymbols = hasSymbolSupport(); + +function Foo() { + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'a'; + defineProperty( this, Symbol( 'b' ), { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; +} + +Foo.prototype.foo = 'bar'; +defineProperty( Foo.prototype, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'foo' ) ] = 'bar'; + defineProperty( Foo.prototype, Symbol( 'beep' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' + }); +} + +obj = new Foo(); +props = nonEnumerablePropertiesIn( obj ); + +console.log( props ); +// => [ 'b', 'beep', ... ] +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/benchmark/benchmark.js new file mode 100644 index 000000000000..94f922160ad5 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var nonEnumerablePropertiesIn = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = nonEnumerablePropertiesIn( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/docs/repl.txt b/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/docs/repl.txt new file mode 100644 index 000000000000..d654a1576404 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/docs/repl.txt @@ -0,0 +1,25 @@ + +{{alias}}( value ) + Returns an array of an object's own and inherited non-enumerable property + names and symbols. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + Returns + ------- + props: Array + List of an object's own and inherited non-enumerable property names and + symbols. + + Examples + -------- + > var props = {{alias}}( [] ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/examples/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/examples/index.js new file mode 100644 index 000000000000..3da08bd1ec58 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/examples/index.js @@ -0,0 +1,73 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var nonEnumerablePropertiesIn = require( './../lib' ); + +var hasSymbols; +var props; +var obj; + +hasSymbols = hasSymbolSupport(); + +function Foo() { + this.a = 'a'; + defineProperty( this, 'b', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'a'; + defineProperty( this, Symbol( 'b' ), { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; +} + +Foo.prototype.foo = 'bar'; +defineProperty( Foo.prototype, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'foo' ) ] = 'bar'; + defineProperty( Foo.prototype, Symbol( 'beep' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' + }); +} + +obj = new Foo(); +props = nonEnumerablePropertiesIn( obj ); + +console.log( props ); +// => [ 'b', 'beep', ... ] diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/lib/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/lib/index.js new file mode 100644 index 000000000000..4cf8052704a8 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/lib/index.js @@ -0,0 +1,40 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's own and inherited non-enumerable property names and symbols. +* +* @module @stdlib/utils/nonenumerable-properties-in +* +* @example +* var nonEnumerablePropertiesIn = require( '@stdlib/utils/nonenumerable-properties-in' ); +* +* var props = nonEnumerablePropertiesIn( [] ); +* // returns [...] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/lib/main.js new file mode 100644 index 000000000000..87ec784f74bf --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/lib/main.js @@ -0,0 +1,91 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); +var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); +var isNonEnumerable = require( '@stdlib/assert/is-nonenumerable-property' ); + + +// MAIN // + +/** +* Returns an array of an object's own and inherited non-enumerable property names and symbols. +* +* @param {*} value - input object +* @returns {Array} a list of own and inherited non-enumerable property names and symbols +* +* @example +* var props = nonEnumerablePropertiesIn( [] ); +* // returns [...] +*/ +function nonEnumerablePropertiesIn( value ) { + var cache; + var out; + var obj; + var tmp; + var k; + var i; + + if ( value === null || value === void 0 ) { + return []; + } + // Cast the value to an object: + obj = Object( value ); + + // Walk the prototype chain collecting non-enumerable properties... + cache = {}; + out = []; + do { + tmp = getOwnPropertyNames( obj ); + for ( i = 0; i < tmp.length; i++ ) { + k = tmp[ i ]; + if ( + hasOwnProp( cache, k ) === false && // guards against processing a name more than once + isNonEnumerable( obj, k ) + ) { + out.push( k ); + } + cache[ k ] = true; + } + tmp = getOwnPropertySymbols( obj ); + for ( i = 0; i < tmp.length; i++ ) { + k = tmp[ i ]; + if ( + hasOwnProp( cache, k ) === false && // guards against processing a symbol more than once + isNonEnumerable( obj, k ) + ) { + out.push( k ); + } + cache[ k ] = true; + } + obj = getPrototypeOf( obj ); + } while ( obj ); + + return out; +} + + +// EXPORTS // + +module.exports = nonEnumerablePropertiesIn; diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/package.json b/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/package.json new file mode 100644 index 000000000000..8f5cca82fcff --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/package.json @@ -0,0 +1,77 @@ +{ + "name": "@stdlib/utils/nonenumerable-properties-in", + "version": "0.0.0", + "description": "Return an array of an object's own and inherited non-enumerable property names and symbols.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "names", + "names-in", + "keys", + "keys-in", + "symbols", + "symbols-in", + "symbol", + "sym", + "own", + "enumerable", + "non-enumerable", + "inherited", + "in", + "hidden", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/test/test.js b/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/test/test.js new file mode 100644 index 000000000000..467efa4d2ad2 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties-in/test/test.js @@ -0,0 +1,268 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var nonEnumerablePropertiesIn = require( './../lib' ); + + +// VARIABLES // + +var hasSymbols = hasSymbolSupport(); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof nonEnumerablePropertiesIn, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns an array of an object\'s own and inherited non-enumerable property names and symbols', function test( t ) { + var expected; + var symbols; + var actual; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + symbols = [ + Symbol( 'a' ), + Symbol( 'b' ), + Symbol( 'c' ) + ]; + } else { + symbols = []; + } + + function Foo() { + defineProperty( this, 'a', { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'a' + }); + defineProperty( this, 'b', { + 'configurable': true, + 'enumerable': true, + 'writable': false, + 'value': 'b' + }); + if ( hasSymbols ) { + defineProperty( this, symbols[ 0 ], { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'a' + }); + defineProperty( this, symbols[ 1 ], { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'b' + }); + } + return this; + } + + defineProperty( Foo.prototype, 'b', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'c' + }); + defineProperty( Foo.prototype, 'c', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'c' + }); + defineProperty( Foo.prototype, 'd', { + 'configurable': true, + 'enumerable': true, + 'writable': false, + 'value': 'd' + }); + if ( hasSymbols ) { + defineProperty( Foo.prototype, symbols[ 1 ], { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + defineProperty( Foo.prototype, symbols[ 2 ], { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'c' + }); + } + + obj = new Foo(); + + expected = [ 'a', 'c' ]; + if ( hasSymbols ) { + expected.push( symbols[ 0 ] ); + } + actual = nonEnumerablePropertiesIn( obj ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + idx = indexOf( actual, 'b' ); + t.strictEqual( idx, -1, 'does not contain property' ); + if ( hasSymbols ) { + idx = indexOf( actual, symbols[ 1 ] ); + t.strictEqual( idx, -1, 'does not contain property' ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s own and inherited non-enumerable property names and symbols (mock)', function test( t ) { + var nonEnumerablePropertiesIn; + var expected; + var symbols; + var actual; + var obj; + var idx; + var i; + + nonEnumerablePropertiesIn = proxyquire( './../lib/main.js', { + '@stdlib/utils/property-symbols': propertySymbols + }); + + symbols = [ '__a__', '__b__', '__c__' ]; + + function Foo() { + defineProperty( this, 'a', { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'a' + }); + defineProperty( this, 'b', { + 'configurable': true, + 'enumerable': true, + 'writable': false, + 'value': 'b' + }); + defineProperty( this, symbols[ 0 ], { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'a' + }); + defineProperty( this, symbols[ 1 ], { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'b' + }); + return this; + } + + defineProperty( Foo.prototype, 'b', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'c' + }); + defineProperty( Foo.prototype, 'c', { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'c' + }); + defineProperty( Foo.prototype, 'd', { + 'configurable': true, + 'enumerable': true, + 'writable': false, + 'value': 'd' + }); + defineProperty( Foo.prototype, symbols[ 1 ], { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + defineProperty( Foo.prototype, symbols[ 2 ], { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'c' + }); + + obj = new Foo(); + + expected = [ 'a', 'c', symbols[ 0 ] ]; + actual = nonEnumerablePropertiesIn( obj ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + idx = indexOf( actual, 'b' ); + t.strictEqual( idx, -1, 'does not contain property' ); + + idx = indexOf( actual, symbols[ 1 ] ); + t.strictEqual( idx, -1, 'does not contain property' ); + + t.end(); + + function propertySymbols( value ) { + if ( value === obj ) { + return symbols.slice( 0, 2 ); + } + if ( value === Foo.prototype ) { + return symbols.slice( 1 ); + } + return []; + } +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = nonEnumerablePropertiesIn( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From 47bb63f2cfa630e8204e32cd09fc3a9567077caf Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 15 Sep 2018 01:52:19 -0700 Subject: [PATCH 0343/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index f4fba28a3509..49b0204b7ad5 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1107,6 +1107,15 @@ setReadOnly( utils, 'noneByRightAsync', require( '@stdlib/utils/none-by-right-as */ setReadOnly( utils, 'nonEnumerableProperties', require( '@stdlib/utils/nonenumerable-properties' ) ); +/** +* @name nonEnumerablePropertiesIn +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/nonenumerable-properties-in} +*/ +setReadOnly( utils, 'nonEnumerablePropertiesIn', require( '@stdlib/utils/nonenumerable-properties-in' ) ); + /** * @name nonEnumerablePropertyNames * @memberof utils From c43a38da5b9b6becc3b812e34fff44a1aceb5970 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 15 Sep 2018 01:54:29 -0700 Subject: [PATCH 0344/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/n.js | 13 +++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js index 2bcbe07ce8d8..d08fdaba4345 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js @@ -277,6 +277,19 @@ ns.push({ ] }); +ns.push({ + 'alias': 'nonEnumerablePropertiesIn', + 'path': '@stdlib/utils/nonenumerable-properties-in', + 'value': require( '@stdlib/utils/nonenumerable-properties-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/enumerable-properties-in', + '@stdlib/utils/inherited-nonenumerable-properties', + '@stdlib/utils/nonenumerable-properties', + '@stdlib/utils/properties-in' + ] +}); + ns.push({ 'alias': 'nonEnumerablePropertyNames', 'path': '@stdlib/utils/nonenumerable-property-names', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index c4b8c75325f5..105254501e9c 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1380,6 +1380,7 @@ var db = { "noneByRight": "function positive( v ) { return ( v > 0 ); };\narr = [ -1, -2, -3, -4 ];\nbool = noneByRight( arr, positive )\n", "noneByRightAsync": "\n// Basic usage:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'limit': 2 };\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, false );\n }\n};\nfunction done( error, bool ) {\n if ( error ) {\n throw error;\n }\n console.log( bool );\n};\nopts = { 'series': true };\narr = [ 1000, 2500, 3000 ];\nnoneByRightAsync( arr, opts, predicate, done )\n", "nonEnumerableProperties": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = false;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nprops = nonEnumerableProperties( obj )\n", + "nonEnumerablePropertiesIn": "props = nonEnumerablePropertiesIn( [] )\n", "nonEnumerablePropertyNames": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerablePropertyNames( obj )\n", "nonEnumerablePropertyNamesIn": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\ndefineProperty( obj, 'beep', desc );\nkeys = nonEnumerablePropertyNamesIn( obj )\n", "nonEnumerablePropertySymbols": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = false;\ndesc.writable = true;\ndesc.value = 'boop';\nsym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\ndefineProperty( obj, sym, desc );\nsymbols = nonEnumerablePropertySymbols( obj )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index e83f53016596..08e1fa0eeb05 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1380,7 +1380,8 @@ var db = { "noneByAsync": "\nnoneByAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByAsync, everyByAsync, forEachAsync, noneBy, noneByRightAsync, someByAsync\n", "noneByRight": "\nnoneByRight( collection, predicate[, thisArg ] )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n The predicate function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n The function immediately returns upon encountering a truthy return value.\n\n If provided an empty collection, the function returns `true`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n predicate: Function\n The test function.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n bool: boolean\n The function returns `true` if the predicate function returns a falsy\n value for all elements; otherwise, the function returns `false`.\n\n Examples\n --------\n > function positive( v ) { return ( v > 0 ); };\n > var arr = [ -1, -2, -3, -4 ];\n > var bool = noneByRight( arr, positive )\n true\n\n See Also\n --------\n anyByRight, everyByRight, forEachRight, none, noneBy, someByRight\n", "noneByRightAsync": "\nnoneByRightAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByRightAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function, iterating from right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByRightAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByRightAsync, everyByRightAsync, forEachRightAsync, noneByAsync, noneByRight, someByRightAsync\n", - "nonEnumerableProperties": "\nnonEnumerableProperties( value )\n Returns an array of an object's own non-enumerable property names and\n symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own non-enumerable properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var props = nonEnumerableProperties( obj )\n [ 'beep' ]\n\n See Also\n --------\n enumerableProperties, properties\n", + "nonEnumerableProperties": "\nnonEnumerableProperties( value )\n Returns an array of an object's own non-enumerable property names and\n symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own non-enumerable properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var props = nonEnumerableProperties( obj )\n [ 'beep' ]\n\n See Also\n --------\n enumerableProperties, nonEnumerablePropertiesIn, properties\n", + "nonEnumerablePropertiesIn": "\nnonEnumerablePropertiesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names and symbols.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own and inherited non-enumerable property names and\n symbols.\n\n Examples\n --------\n > var props = nonEnumerablePropertiesIn( [] )\n\n See Also\n --------\n nonEnumerableProperties, propertiesIn\n", "nonEnumerablePropertyNames": "\nnonEnumerablePropertyNames( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNames( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbolsIn, propertyNames\n", "nonEnumerablePropertyNamesIn": "\nnonEnumerablePropertyNamesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNamesIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNames, propertyNamesIn\n", "nonEnumerablePropertySymbols": "\nnonEnumerablePropertySymbols( value )\n Returns an array of an object's own non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbols( obj )\n\n See Also\n --------\n enumerablePropertySymbols, inheritedNonEnumerablePropertySymbols, nonEnumerablePropertyNames, nonEnumerablePropertySymbolsIn, propertySymbols\n", From 7c86a4e10b03cf29f7b478e509abdc25c27a5152 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 15 Sep 2018 01:56:23 -0700 Subject: [PATCH 0345/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/e.js | 15 +++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 +++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/e.js b/lib/node_modules/@stdlib/namespace/lib/namespace/e.js index 74bba7d0b144..78373efa6d99 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/e.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/e.js @@ -57,6 +57,21 @@ ns.push({ ] }); +ns.push({ + 'alias': 'enumerablePropertiesIn', + 'path': '@stdlib/utils/enumerable-properties-in', + 'value': require( '@stdlib/utils/enumerable-properties-in' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/enumerable-properties', + '@stdlib/utils/enumerable-property-symbols-in', + '@stdlib/utils/inherited-enumerable-properties', + '@stdlib/utils/keys-in', + '@stdlib/utils/nonenumerable-properties-in', + '@stdlib/utils/properties-in' + ] +}); + ns.push({ 'alias': 'enumerablePropertySymbols', 'path': '@stdlib/utils/enumerable-property-symbols', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 105254501e9c..b023f396a894 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -848,6 +848,7 @@ var db = { "E": "E\n", "endsWith": "bool = endsWith( 'beep', 'ep' )\nbool = endsWith( 'Beep', 'op' )\nbool = endsWith( 'Beep', 'ee', 3 )\nbool = endsWith( 'Beep', 'ee', -1 )\nbool = endsWith( 'beep', '' )\n", "enumerableProperties": "function Foo() { this.beep = 'boop'; return this; };\nFoo.prototype.foo = 'bar';\nobj = new Foo();\nprops = enumerableProperties( obj )\n", + "enumerablePropertiesIn": "props = enumerablePropertiesIn( [] )\n", "enumerablePropertySymbols": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = true;\ndesc.value = 'boop';\nsym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\ndefineProperty( obj, sym, desc );\nsymbols = enumerablePropertySymbols( obj )\n", "enumerablePropertySymbolsIn": "obj = {};\ndesc = {};\ndesc.configurable = false;\ndesc.enumerable = true;\ndesc.writable = true;\ndesc.value = 'boop';\nsym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\ndefineProperty( obj, sym, desc );\nsymbols = enumerablePropertySymbolsIn( obj )\n", "ENV": "user = ENV.USER\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 08e1fa0eeb05..4033f9125270 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -847,7 +847,8 @@ var db = { "doWhileEachRight": "\ndoWhileEachRight( collection, fcn, predicate[, thisArg] )\n While a test condition is true, invokes a function for each element in a\n collection, iterating from right to left.\n\n The condition is evaluated *after* executing the provided function; thus,\n `fcn` *always* executes at least once.\n\n When invoked, both the predicate function and the function to apply are\n provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n If provided an empty collection, both `value` and `index` are `undefined`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n predicate: Function\n The predicate function which indicates whether to continue iterating\n over a collection.\n\n thisArg: any (optional)\n Execution context for the applied function.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function predicate( v ) { return v === v; };\n > function logger( v, i ) { console.log( '%s: %d', i, v ); };\n > var arr = [ 1, NaN, 2, 3, 4, 5 ];\n > doWhileEachRight( arr, logger, predicate )\n 5: 5\n 4: 4\n 3: 3\n 2: 2\n 1: NaN\n\n See Also\n --------\n doUntilEachRight, doWhileEach, whileEachRight\n", "E": "\nE\n Euler's number.\n\n Examples\n --------\n > E\n 2.718281828459045\n\n", "endsWith": "\nendsWith( str, search[, len] )\n Tests if a `string` ends with the characters of another `string`.\n\n If provided an empty `search` string, the function always returns `true`.\n\n Parameters\n ----------\n str: string\n Input string.\n\n search: string\n Search string.\n\n len: integer (optional)\n Substring length. Restricts the search to a substring within the input\n string beginning from the leftmost character. If provided a negative\n value, `len` indicates to ignore the last `len` characters, returning\n the same output as `str.length + len`. Default: `str.length`.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a `string` ends with the characters of\n another `string`.\n\n Examples\n --------\n > var bool = endsWith( 'beep', 'ep' )\n true\n > bool = endsWith( 'Beep', 'op' )\n false\n > bool = endsWith( 'Beep', 'ee', 3 )\n true\n > bool = endsWith( 'Beep', 'ee', -1 )\n true\n > bool = endsWith( 'beep', '' )\n true\n\n See Also\n --------\n startsWith\n", - "enumerableProperties": "\nenumerableProperties( value )\n Returns an array of an object's own enumerable property names and symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own enumerable properties.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var props = enumerableProperties( obj )\n [ 'beep' ]\n\n See Also\n --------\n enumerablePropertySymbols, objectKeys, nonEnumerableProperties, properties\n", + "enumerableProperties": "\nenumerableProperties( value )\n Returns an array of an object's own enumerable property names and symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own enumerable properties.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var props = enumerableProperties( obj )\n [ 'beep' ]\n\n See Also\n --------\n enumerablePropertiesIn, enumerablePropertySymbols, objectKeys, nonEnumerableProperties, properties\n", + "enumerablePropertiesIn": "\nenumerablePropertiesIn( value )\n Returns an array of an object's own and inherited enumerable property names\n and symbols.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own and inherited enumerable property names and\n symbols.\n\n Examples\n --------\n > var props = enumerablePropertiesIn( [] )\n\n See Also\n --------\n enumerableProperties, enumerablePropertySymbolsIn, keysIn, nonEnumerablePropertiesIn, propertiesIn\n", "enumerablePropertySymbols": "\nenumerablePropertySymbols( value )\n Returns an array of an object's own enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = enumerablePropertySymbols( obj )\n\n See Also\n --------\n enumerablePropertySymbolsIn, inheritedEnumerablePropertySymbols, objectKeys, nonEnumerablePropertySymbols, propertySymbols\n", "enumerablePropertySymbolsIn": "\nenumerablePropertySymbolsIn( value )\n Returns an array of an object's own and inherited enumerable symbol\n properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = enumerablePropertySymbolsIn( obj )\n\n See Also\n --------\n enumerablePropertySymbols, inheritedEnumerablePropertySymbols, keysIn, nonEnumerablePropertySymbolsIn, propertySymbolsIn\n", "ENV": "\nENV\n An object containing the user environment.\n\n Examples\n --------\n > var user = ENV.USER\n \n\n See Also\n --------\n ARGV\n", @@ -1381,7 +1382,7 @@ var db = { "noneByRight": "\nnoneByRight( collection, predicate[, thisArg ] )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n The predicate function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n The function immediately returns upon encountering a truthy return value.\n\n If provided an empty collection, the function returns `true`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n predicate: Function\n The test function.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n bool: boolean\n The function returns `true` if the predicate function returns a falsy\n value for all elements; otherwise, the function returns `false`.\n\n Examples\n --------\n > function positive( v ) { return ( v > 0 ); };\n > var arr = [ -1, -2, -3, -4 ];\n > var bool = noneByRight( arr, positive )\n true\n\n See Also\n --------\n anyByRight, everyByRight, forEachRight, none, noneBy, someByRight\n", "noneByRightAsync": "\nnoneByRightAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByRightAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function, iterating from right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByRightAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByRightAsync, everyByRightAsync, forEachRightAsync, noneByAsync, noneByRight, someByRightAsync\n", "nonEnumerableProperties": "\nnonEnumerableProperties( value )\n Returns an array of an object's own non-enumerable property names and\n symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own non-enumerable properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var props = nonEnumerableProperties( obj )\n [ 'beep' ]\n\n See Also\n --------\n enumerableProperties, nonEnumerablePropertiesIn, properties\n", - "nonEnumerablePropertiesIn": "\nnonEnumerablePropertiesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names and symbols.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own and inherited non-enumerable property names and\n symbols.\n\n Examples\n --------\n > var props = nonEnumerablePropertiesIn( [] )\n\n See Also\n --------\n nonEnumerableProperties, propertiesIn\n", + "nonEnumerablePropertiesIn": "\nnonEnumerablePropertiesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names and symbols.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own and inherited non-enumerable property names and\n symbols.\n\n Examples\n --------\n > var props = nonEnumerablePropertiesIn( [] )\n\n See Also\n --------\n enumerablePropertiesIn, nonEnumerableProperties, propertiesIn\n", "nonEnumerablePropertyNames": "\nnonEnumerablePropertyNames( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNames( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbolsIn, propertyNames\n", "nonEnumerablePropertyNamesIn": "\nnonEnumerablePropertyNamesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNamesIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNames, propertyNamesIn\n", "nonEnumerablePropertySymbols": "\nnonEnumerablePropertySymbols( value )\n Returns an array of an object's own non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbols( obj )\n\n See Also\n --------\n enumerablePropertySymbols, inheritedNonEnumerablePropertySymbols, nonEnumerablePropertyNames, nonEnumerablePropertySymbolsIn, propertySymbols\n", From 7459042ce638b2142460d0b6b0ab948fc41ed8ef Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 15 Sep 2018 01:56:50 -0700 Subject: [PATCH 0346/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 49b0204b7ad5..5e71ae01ed7a 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -450,6 +450,15 @@ setReadOnly( utils, 'objectEntriesIn', require( '@stdlib/utils/entries-in' ) ); */ setReadOnly( utils, 'enumerableProperties', require( '@stdlib/utils/enumerable-properties' ) ); +/** +* @name enumerablePropertiesIn +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/enumerable-properties-in} +*/ +setReadOnly( utils, 'enumerablePropertiesIn', require( '@stdlib/utils/enumerable-properties-in' ) ); + /** * @name enumerablePropertySymbols * @memberof utils From b9f62f32d24b97987c77c80ffdf47eb61ea90364 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 16 Sep 2018 02:41:16 -0700 Subject: [PATCH 0347/1062] Add factory function for creating named typed tuples --- .../utils/named-typed-tuple/examples/index.js | 41 ++ .../utils/named-typed-tuple/lib/contains.js | 44 +++ .../utils/named-typed-tuple/lib/index.js | 53 +++ .../utils/named-typed-tuple/lib/main.js | 374 ++++++++++++++++++ .../utils/named-typed-tuple/lib/validate.js | 75 ++++ 5 files changed, 587 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/lib/contains.js create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/lib/validate.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js new file mode 100644 index 000000000000..bd6bf474595e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js @@ -0,0 +1,41 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var namedtypedtuple = require( './../lib' ); + +var point = namedtypedtuple( [ 'x', 'y' ] ); + +var p = point( [ 1.0, -1.0 ] ); + +var x = p[ 0 ]; +console.log( x ); +// => 1.0 + +x = p.x; +console.log( x ); +// => 1.0 + +var y = p[ 1 ]; +console.log( y ); +// => -1.0 + +y = p.y; +console.log( y ); +// => -1.0 diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/contains.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/contains.js new file mode 100644 index 000000000000..4e388401f9e0 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/contains.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Returns a boolean indicating if an array contains a provided value. +* +* @private +* @param {Array} arr - array +* @param {*} v - search value +* @returns {boolean} boolean indicating if an array contains a search value +*/ +function contains( arr, v ) { + var i; + for ( i = 0; i < arr.length; i++ ) { + if ( arr[ i ] === v ) { + return true; + } + } + return false; +} + + +// EXPORTS // + +module.exports = contains; diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/index.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/index.js new file mode 100644 index 000000000000..a22b651f41f5 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/index.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Named typed tuple. +* +* @module @stdlib/utils/named-typed-tuple +* +* @example +* var namedtypedtuple = require( '@stdlib/utils/named-typed-tuple' ); +* +* var point = namedtypedtuple( [ 'x', 'y' ] ); +* +* var p = point( [ 1.0, -1.0 ] ); +* +* var x = p[ 0 ]; +* // returns 1.0 +* +* x = p.x; +* // returns 1.0 +* +* var y = p[ 1 ]; +* // returns -1.0 +* +* y = p.y; +* // returns -1.0 +*/ + +// MAIN // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js new file mode 100644 index 000000000000..d923b683a0e6 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -0,0 +1,374 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable max-len */ + +'use strict'; + +// MODULES // + +var isStringArray = require( '@stdlib/assert/is-string-array' ).primitives; +var isString = require( '@stdlib/assert/is-string' ).isPrimitive; +var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' ); +var propertiesIn = require( '@stdlib/utils/properties-in' ); +var typedarray = require( '@stdlib/array/typed' ); +var Int8Array = require( '@stdlib/array/int8' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); +var floor = require( '@stdlib/math/base/special/floor' ); +var contains = require( './contains.js' ); +var validate = require( './validate.js' ); + + +// VARIABLES // + +var RESERVED_PROPS = propertiesIn( new Int8Array( 0 ) ); + + +// MAIN // + +/** +* Returns a named typed tuple factory. +* +* @param {StringArray} names - field (property) names +* @param {Options} [options] - options +* @param {string} [options.dtype="float64"] - default data type +* @throws {TypeError} must provide an array of strings +* @throws {Error} cannot provide a reserved field (property) name +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a recognized data type +* @returns {Function} factory function +* +* @example +* var point = factory( [ 'x', 'y' ] ); +* +* var p = point( [ 1.0, -1.0 ] ); +* +* var x = p[ 0 ]; +* // returns 1.0 +* +* x = p.x; +* // returns 1.0 +* +* var y = p[ 1 ]; +* // returns -1.0 +* +* y = p.y; +* // returns -1.0 +*/ +function factory( names, options ) { + var nfields; + var opts; + var err; + var i; + if ( !isStringArray( names ) ) { + throw new TypeError( 'invalid argument. Must provide an array of strings. Value: `' + names + '`.' ); + } + nfields = names.length; + for ( i = 0; i < nfields; i++ ) { + if ( contains( RESERVED_PROPS, names[ i ] ) ) { + throw new Error( 'invalid argument. Provided field name is reserved. Name: `' + names[ i ] + '`.' ); + } + } + opts = { + 'dtype': 'float64' + }; + if ( arguments.length > 1 ) { + err = validate( opts, options ); + if ( err ) { + throw err; + } + } + return namedtypedtuple; + + /** + * Returns a named typed tuple. + * + * @private + * @param {(TypedArray|ArrayLikeObject|ArrayBuffer)} [arg] - a typed array, array-like object, or buffer + * @param {NonNegativeInteger} [byteOffset=0] - byte offset + * @param {string} [dtype] - data type + * @throws {TypeError} must provide a recognized data type + * @throws {RangeError} arguments must be compatible with tuple length + * @returns {TypedArray} named typed tuple + */ + function namedtypedtuple() { + var indices; + var nargs; + var tuple; + var i; + + nargs = arguments.length; + if ( nargs <= 0 ) { + tuple = typedarray( nfields ); + } else if ( nargs === 1 ) { + if ( isString( arguments[ 0 ] ) ) { + // Arguments: [ dtype ] + tuple = typedarray( nfields, arguments[ 0 ] ); + } else if ( isArrayBuffer( arguments[ 0 ] ) ) { + // Arguments: [ ArrayBuffer ] + tuple = typedarray( arguments[ 0 ], 0, nfields, opts.dtype ); + } else { + // Arguments: [ TypedArray|ArrayLikeObject ] + tuple = typedarray( arguments[ 0 ], opts.dtype ); + } + } else if ( nargs === 2 ) { + if ( isArrayBuffer( arguments[ 0 ] ) ) { + if ( isString( arguments[ 1 ] ) ) { + // Arguments: [ ArrayBuffer, dtype ] + tuple = typedarray( arguments[ 0 ], 0, nfields, arguments[ 1 ] ); + } else { + // Arguments: [ ArrayBuffer, byteOffset ] + tuple = typedarray( arguments[ 0 ], arguments[ 1 ], nfields, opts.dtype ); + } + } else { + // Arguments: [ TypedArray|ArrayLikeObject, dtype ] + tuple = typedarray( arguments[ 0 ], arguments[ 1 ] ); + } + } else { + // Arguments: [ ArrayBuffer, byteOffset, dtype ] + tuple = typedarray( arguments[ 0 ], arguments[ 1 ], nfields, arguments[ 2 ] ); + } + if ( tuple.length !== nfields ) { + throw new RangeError( 'invalid arguments. Arguments are incompatible with number of tuple fields. Tuple length: `' + tuple.length + '`.' ); + } + indices = []; // indirect index look-up table + for ( i = 0; i < nfields; i++ ) { + indices.push( i ); + setReadWriteAccessor( tuple, names[ i ], getter( i ), setter( i ) ); + } + // TODO: filter => return new tuple; clbk( value, index, name, array ) + + // TODO: entries => [ index, key, value ] + + tuple.every = every; + tuple.find = find; + tuple.findIndex = findIndex; + tuple.forEach = forEach; + + // TODO: keys => [ index, key ] + + // TODO: map => return new tuple; clbk( value, index, name, array ) + + // TODO: reduce => clbk( prev, curr, index, name, array ) + + // TODO: reduceRight => clbk( prev, curr, index, name, array ) + + tuple.reverse = reverse; + tuple.some = some; + + // TODO: sort => update mapping of keys to indices (this may require a custom sort algorithm to allow tracking indices) + + // TODO: subtuple => similar to subarray but a new tuple atop the same arraybuffer + + // TODO: toString (?) => custom string representation based on tuple name and fields + + return tuple; + + /** + * Returns an accessor to retrieve a tuple value. + * + * @private + * @param {NonNegativeInteger} i - tuple index + * @returns {Function} accessor + */ + function getter( i ) { + return get; + + /** + * Returns a tuple value. + * + * @private + * @returns {number} tuple value + */ + function get() { + return tuple[ indices[ i ] ]; + } + } + + /** + * Returns an accessor to set a tuple value. + * + * @private + * @param {NonNegativeInteger} i - tuple index + * @returns {Function} accessor + */ + function setter( i ) { + return set; + + /** + * Sets a tuple value. + * + * @private + * @param {number} v - value to set + */ + function set( v ) { + tuple[ indices[ i ] ] = v; + } + } + + /** + * Tests whether all tuple elements pass a test implemented by a predicate function. + * + * @private + * @param {Function} predicate - predicate function + * @param {*} [thisArg] - execution context + * @throws {TypeError} `this` must be the host tuple + * @returns {boolean} boolean indicating if all elements pass + */ + function every( predicate, thisArg ) { + var bool; + var i; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + for ( i = 0; i < nfields; i++ ) { + bool = predicate.call( thisArg, tuple[ i ], i, names[ indices[i] ], tuple ); + if ( !bool ) { + return false; + } + } + return true; + } + + /** + * Returns the first tuple element for which a provided predicate function returns a truthy value. + * + * @private + * @param {Function} predicate - predicate function + * @param {*} [thisArg] - execution context + * @throws {TypeError} `this` must be the host tuple + * @returns {(number|void)} tuple element + */ + function find( predicate, thisArg ) { + var bool; + var i; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + for ( i = 0; i < nfields; i++ ) { + bool = predicate.call( thisArg, tuple[ i ], i, names[ indices[i] ], tuple ); + if ( bool ) { + return tuple[ i ]; + } + } + } + + /** + * Returns the index of the first tuple element for which a provided predicate function returns a truthy value. + * + * ## Notes + * + * - If the predicate function never returns a truthy value, the function returns `-1`. + * + * @private + * @param {Function} predicate - predicate function + * @param {*} [thisArg] - execution context + * @throws {TypeError} `this` must be the host tuple + * @returns {integer} tuple index or `-1` + */ + function findIndex( predicate, thisArg ) { + var bool; + var i; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + for ( i = 0; i < nfields; i++ ) { + bool = predicate.call( thisArg, tuple[ i ], i, names[ indices[i] ], tuple ); + if ( bool ) { + return i; + } + } + return -1; + } + + /** + * Invokes a callback for each tuple element. + * + * @private + * @param {Function} fcn - function to invoke + * @param {*} [thisArg] - execution context + * @throws {TypeError} `this` must be the host tuple + */ + function forEach( fcn, thisArg ) { + var i; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + for ( i = 0; i < nfields; i++ ) { + fcn.call( thisArg, tuple[ i ], i, names[ indices[i] ], tuple ); + } + } + + /** + * Reverses a tuple **in-place**. + * + * @private + * @throws {TypeError} `this` must be the host tuple + * @returns {TypedArray} reversed tuple + */ + function reverse() { + var tmp; + var i; + var j; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + for ( i = 0; i < floor( nfields/2 ); i++ ) { + j = nfields - i - 1; + tmp = tuple[ i ]; + tuple[ i ] = tuple[ j ]; + tuple[ j ] = tmp; + } + for ( i = 0; i < nfields; i++ ) { + indices[ i ] = nfields - indices[ i ] - 1; + } + return tuple; + } + + /** + * Tests whether at least one tuple element passes a test implemented by a predicate function. + * + * @private + * @param {Function} predicate - predicate function + * @param {*} [thisArg] - execution context + * @throws {TypeError} `this` must be the host tuple + * @returns {boolean} boolean indicating if at least one element passes + */ + function some( predicate, thisArg ) { + var bool; + var i; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + for ( i = 0; i < nfields; i++ ) { + bool = predicate.call( thisArg, tuple[ i ], i, names[ indices[i] ], tuple ); + if ( bool ) { + return true; + } + } + return false; + } + } + + // TODO: (read-only) static methods => of, from +} + + +// EXPORTS // + +module.exports = factory; diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/validate.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/validate.js new file mode 100644 index 000000000000..4baab3b37eeb --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/validate.js @@ -0,0 +1,75 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var isObject = require( '@stdlib/assert/is-plain-object' ); +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); +var isString = require( '@stdlib/assert/is-string' ).isPrimitive; +var dtypes = require( '@stdlib/array/typed-dtypes' ); +var contains = require( './contains.js' ); + + +// VARIABLES // + +var DTYPES = dtypes(); + + +// MAIN // + +/** +* Validates function options. +* +* @private +* @param {Object} opts - destination object +* @param {Options} options - function options +* @param {string} [options.dtype] - default data type +* @returns {(Error|null)} null or an error object +* +* @example +* var opts = {}; +* var options = { +* 'dtype': 'float64' +* }; +* var err = validate( opts, options ); +* if ( err ) { +* throw err; +* } +*/ +function validate( opts, options ) { + if ( !isObject( options ) ) { + return new TypeError( 'invalid argument. Options must be an object. Value: `' + options + '`.' ); + } + if ( hasOwnProp( options, 'dtype' ) ) { + opts.dtype = options.dtype; + if ( !isString( opts.dtype ) ) { + return new TypeError( 'invalid option. `dtype` option must be a string. Option: `' + opts.dtype + '`.' ); + } + if ( !contains( DTYPES, opts.dtype ) ) { + return new Error( 'invalid option. `dtype` option must be a recognized data type. Option: `' + opts.dtype + '`.' ); + } + } + return null; +} + + +// EXPORTS // + +module.exports = validate; From a4515747ac2f16c250f9bb812593eacbf1cddaa8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 16 Sep 2018 02:56:25 -0700 Subject: [PATCH 0348/1062] Add custom `map` method --- .../utils/named-typed-tuple/lib/main.js | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index d923b683a0e6..6af3d7d8fe91 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -28,6 +28,7 @@ var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' ); var propertiesIn = require( '@stdlib/utils/properties-in' ); var typedarray = require( '@stdlib/array/typed' ); var Int8Array = require( '@stdlib/array/int8' ); +var getDtype = require( '@stdlib/array/dtype' ); var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var floor = require( '@stdlib/math/base/special/floor' ); var contains = require( './contains.js' ); @@ -108,6 +109,7 @@ function factory( names, options ) { */ function namedtypedtuple() { var indices; + var dtype; var nargs; var tuple; var i; @@ -146,6 +148,8 @@ function factory( names, options ) { if ( tuple.length !== nfields ) { throw new RangeError( 'invalid arguments. Arguments are incompatible with number of tuple fields. Tuple length: `' + tuple.length + '`.' ); } + dtype = getDtype( tuple ); + indices = []; // indirect index look-up table for ( i = 0; i < nfields; i++ ) { indices.push( i ); @@ -162,7 +166,7 @@ function factory( names, options ) { // TODO: keys => [ index, key ] - // TODO: map => return new tuple; clbk( value, index, name, array ) + tuple.map = map; // TODO: reduce => clbk( prev, curr, index, name, array ) @@ -314,6 +318,32 @@ function factory( names, options ) { } } + /** + * Maps each tuple element to an element in a new tuple. + * + * ## Notes + * + * - The returned tuple has the same data type as the host tuple. + * + * @private + * @param {Function} fcn - map function + * @param {*} [thisArg] - execution context + * @throws {TypeError} `this` must be the host tuple + * @returns {TypedArray} new tuple + */ + function map( fcn, thisArg ) { + var out; + var i; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + out = namedtypedtuple( dtype ); + for ( i = 0; i < nfields; i++ ) { + out[ i ] = fcn.call( thisArg, tuple[ i ], i, names[ indices[i] ], tuple ); + } + return out; + } + /** * Reverses a tuple **in-place**. * From 34358a9da6b2673f026f8cb8f7b330f0f0e50de0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 16 Sep 2018 03:13:20 -0700 Subject: [PATCH 0349/1062] Add custom `filter` method --- .../utils/named-typed-tuple/lib/main.js | 64 +++++++++++++++---- 1 file changed, 52 insertions(+), 12 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 6af3d7d8fe91..2e1029cd5732 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -73,16 +73,18 @@ var RESERVED_PROPS = propertiesIn( new Int8Array( 0 ) ); */ function factory( names, options ) { var nfields; + var fields; var opts; var err; var i; if ( !isStringArray( names ) ) { throw new TypeError( 'invalid argument. Must provide an array of strings. Value: `' + names + '`.' ); } - nfields = names.length; + fields = names.slice(); + nfields = fields.length; for ( i = 0; i < nfields; i++ ) { - if ( contains( RESERVED_PROPS, names[ i ] ) ) { - throw new Error( 'invalid argument. Provided field name is reserved. Name: `' + names[ i ] + '`.' ); + if ( contains( RESERVED_PROPS, fields[ i ] ) ) { + throw new Error( 'invalid argument. Provided field name is reserved. Name: `' + fields[ i ] + '`.' ); } } opts = { @@ -153,13 +155,12 @@ function factory( names, options ) { indices = []; // indirect index look-up table for ( i = 0; i < nfields; i++ ) { indices.push( i ); - setReadWriteAccessor( tuple, names[ i ], getter( i ), setter( i ) ); + setReadWriteAccessor( tuple, fields[ i ], getter( i ), setter( i ) ); } - // TODO: filter => return new tuple; clbk( value, index, name, array ) - // TODO: entries => [ index, key, value ] tuple.every = every; + tuple.filter = filter; tuple.find = find; tuple.findIndex = findIndex; tuple.forEach = forEach; @@ -241,7 +242,7 @@ function factory( names, options ) { throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } for ( i = 0; i < nfields; i++ ) { - bool = predicate.call( thisArg, tuple[ i ], i, names[ indices[i] ], tuple ); + bool = predicate.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); if ( !bool ) { return false; } @@ -249,6 +250,45 @@ function factory( names, options ) { return true; } + /** + * Creates a new tuple which includes those elements for which a predicate function returns a truthy value. + * + * ## Notes + * + * - The returned tuple has the same data type as the host tuple. + * + * @private + * @param {Function} fcn - filter function + * @param {*} [thisArg] - execution context + * @throws {TypeError} `this` must be the host tuple + * @returns {TypedArray} new tuple + */ + function filter( fcn, thisArg ) { + var fields; + var bool; + var out; + var tmp; + var i; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + fields = []; + tmp = []; + for ( i = 0; i < nfields; i++ ) { + bool = fcn.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); + if ( bool ) { + fields.push( fields[ indices[i] ] ); + tmp.push( tuple[ i ] ); + } + } + if ( fields.length === nfields ) { + out = namedtypedtuple( tmp, dtype ); + } else if ( fields.length ) { + out = factory( fields, opts )( tmp ); + } + return out; + } + /** * Returns the first tuple element for which a provided predicate function returns a truthy value. * @@ -265,7 +305,7 @@ function factory( names, options ) { throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } for ( i = 0; i < nfields; i++ ) { - bool = predicate.call( thisArg, tuple[ i ], i, names[ indices[i] ], tuple ); + bool = predicate.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); if ( bool ) { return tuple[ i ]; } @@ -292,7 +332,7 @@ function factory( names, options ) { throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } for ( i = 0; i < nfields; i++ ) { - bool = predicate.call( thisArg, tuple[ i ], i, names[ indices[i] ], tuple ); + bool = predicate.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); if ( bool ) { return i; } @@ -314,7 +354,7 @@ function factory( names, options ) { throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } for ( i = 0; i < nfields; i++ ) { - fcn.call( thisArg, tuple[ i ], i, names[ indices[i] ], tuple ); + fcn.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); } } @@ -339,7 +379,7 @@ function factory( names, options ) { } out = namedtypedtuple( dtype ); for ( i = 0; i < nfields; i++ ) { - out[ i ] = fcn.call( thisArg, tuple[ i ], i, names[ indices[i] ], tuple ); + out[ i ] = fcn.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); } return out; } @@ -386,7 +426,7 @@ function factory( names, options ) { throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } for ( i = 0; i < nfields; i++ ) { - bool = predicate.call( thisArg, tuple[ i ], i, names[ indices[i] ], tuple ); + bool = predicate.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); if ( bool ) { return true; } From c1d59a5021797e898f5c4c7271e022b335a1dd5d Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 16 Sep 2018 11:36:06 -0700 Subject: [PATCH 0350/1062] Add method to return tuple fields --- .../@stdlib/utils/named-typed-tuple/lib/main.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 2e1029cd5732..e4423a4ce346 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -160,11 +160,17 @@ function factory( names, options ) { // TODO: entries => [ index, key, value ] tuple.every = every; + + // TODO: field2ind + + tuple.fields = getFields; tuple.filter = filter; tuple.find = find; tuple.findIndex = findIndex; tuple.forEach = forEach; + // TODO: ind2field + // TODO: keys => [ index, key ] tuple.map = map; @@ -250,6 +256,16 @@ function factory( names, options ) { return true; } + /** + * Returns the list of tuple fields. + * + * @private + * @returns {StringArray} tuple fields + */ + function getFields() { + return fields.slice(); + } + /** * Creates a new tuple which includes those elements for which a predicate function returns a truthy value. * From 39c434efdd22c4627232497dbf9643aea9b183e1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 16 Sep 2018 11:39:42 -0700 Subject: [PATCH 0351/1062] Add support for specifying the tuple name --- .../@stdlib/utils/named-typed-tuple/lib/main.js | 6 ++++-- .../@stdlib/utils/named-typed-tuple/lib/validate.js | 10 +++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index e4423a4ce346..9751884805c7 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -48,6 +48,7 @@ var RESERVED_PROPS = propertiesIn( new Int8Array( 0 ) ); * @param {StringArray} names - field (property) names * @param {Options} [options] - options * @param {string} [options.dtype="float64"] - default data type +* @param {string} [options.name="tuple"] - tuple name * @throws {TypeError} must provide an array of strings * @throws {Error} cannot provide a reserved field (property) name * @throws {TypeError} must provide valid options @@ -71,7 +72,7 @@ var RESERVED_PROPS = propertiesIn( new Int8Array( 0 ) ); * y = p.y; * // returns -1.0 */ -function factory( names, options ) { +function factory( names, options ) { // eslint-disable-line max-lines-per-function var nfields; var fields; var opts; @@ -88,7 +89,8 @@ function factory( names, options ) { } } opts = { - 'dtype': 'float64' + 'dtype': 'float64', + 'name': 'tuple' }; if ( arguments.length > 1 ) { err = validate( opts, options ); diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/validate.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/validate.js index 4baab3b37eeb..7441d097a081 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/validate.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/validate.js @@ -41,12 +41,14 @@ var DTYPES = dtypes(); * @param {Object} opts - destination object * @param {Options} options - function options * @param {string} [options.dtype] - default data type +* @param {string} [options.name] - tuple name * @returns {(Error|null)} null or an error object * * @example * var opts = {}; * var options = { -* 'dtype': 'float64' +* 'dtype': 'float64', +* 'name': 'Complex128' * }; * var err = validate( opts, options ); * if ( err ) { @@ -66,6 +68,12 @@ function validate( opts, options ) { return new Error( 'invalid option. `dtype` option must be a recognized data type. Option: `' + opts.dtype + '`.' ); } } + if ( hasOwnProp( options, 'name' ) ) { + opts.name = options.name; + if ( !isString( opts.name ) ) { + return new TypeError( 'invalid option. `name` option must be a string. Option: `' + opts.name + '`.' ); + } + } return null; } From c9723837aa0501996c0ff49a85dd25b84444e074 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 16 Sep 2018 11:49:41 -0700 Subject: [PATCH 0352/1062] Add custom string serialization method --- .../utils/named-typed-tuple/examples/index.js | 11 ++++++-- .../utils/named-typed-tuple/lib/main.js | 25 ++++++++++++++++++- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js index bd6bf474595e..e1a30dc01b68 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js @@ -20,9 +20,14 @@ var namedtypedtuple = require( './../lib' ); -var point = namedtypedtuple( [ 'x', 'y' ] ); +var fields = [ 'x', 'y' ]; +var opts = { + 'name': 'Point' +}; -var p = point( [ 1.0, -1.0 ] ); +var Point = namedtypedtuple( fields, opts ); + +var p = new Point( [ 1.0, -1.0 ] ); var x = p[ 0 ]; console.log( x ); @@ -39,3 +44,5 @@ console.log( y ); y = p.y; console.log( y ); // => -1.0 + +console.log( p.toString() ); diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 9751884805c7..0b1a41ce7825 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -188,7 +188,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi // TODO: subtuple => similar to subarray but a new tuple atop the same arraybuffer - // TODO: toString (?) => custom string representation based on tuple name and fields + tuple.toString = toString; return tuple; @@ -451,6 +451,29 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } return false; } + + /** + * Serializes a tuple as a string. + * + * @private + * @returns {string} tuple string representation + */ + function toString() { + var out; + var i; + + out = opts.name + '('; + for ( i = 0; i < nfields; i++ ) { + out += fields[ indices[i] ]; + out += '='; + out += tuple[ i ]; + if ( i < nfields-1 ) { + out += ', '; + } + } + out += ')'; + return out; + } } // TODO: (read-only) static methods => of, from From 060568487b756f1bd2a9c9fe52edde2878a3a528 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 16 Sep 2018 12:07:19 -0700 Subject: [PATCH 0353/1062] Add method to create a (sub-)tuple using the same underlying ArrayBuffer --- .../utils/named-typed-tuple/lib/main.js | 37 +++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 0b1a41ce7825..35766bd510e3 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -111,7 +111,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @throws {RangeError} arguments must be compatible with tuple length * @returns {TypedArray} named typed tuple */ - function namedtypedtuple() { + function namedtypedtuple() { // eslint-disable-line max-lines-per-function var indices; var dtype; var nargs; @@ -186,8 +186,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi // TODO: sort => update mapping of keys to indices (this may require a custom sort algorithm to allow tracking indices) - // TODO: subtuple => similar to subarray but a new tuple atop the same arraybuffer - + tuple.subtuple = subtuple; tuple.toString = toString; return tuple; @@ -452,6 +451,38 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi return false; } + /** + * Create a new tuple over the same underlying `ArrayBuffer` and with the same underlying data type as the host tuple. + * + * @private + * @param {NonNegativeInteger} [begin] - start element index (inclusive) + * @param {NonNegativeInteger} [end] - end element index (exclusive) + * @throws {RangeError} cannot create an empty named tuple + * @returns {TypedArray} new tuple + */ + function subtuple( begin, end ) { + var f; + var i; + var j; + + if ( arguments.length === 0 ) { + return namedtypedtuple( tuple.buffer, tuple.byteOffset, dtype ); + } + if ( arguments.length === 1 ) { + j = tuple.length; + } else { + j = end; + } + if ( i >= j ) { + throw new RangeError( 'invalid arguments. Cannot create an empty named tuple. Ensure that the starting element index is less than the end element index.' ); + } + f = []; + for ( i = 0; i < j; i++ ) { + f.push( fields[ indices[i] ] ); + } + return factory( f, opts )( tuple.buffer, tuple.byteOffset+(begin*tuple.BYTES_PER_ELEMENT), dtype ); + } + /** * Serializes a tuple as a string. * From 6aff6ccef8634a451560ddde724a91a170497b1d Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 16 Sep 2018 12:18:43 -0700 Subject: [PATCH 0354/1062] Add method to convert a field to a tuple index --- .../utils/named-typed-tuple/lib/main.js | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 35766bd510e3..10069ab782b5 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -162,16 +162,15 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi // TODO: entries => [ index, key, value ] tuple.every = every; - - // TODO: field2ind - tuple.fields = getFields; tuple.filter = filter; tuple.find = find; tuple.findIndex = findIndex; tuple.forEach = forEach; - // TODO: ind2field + // TODO: ind2key + + tuple.key2ind = key2ind; // TODO: keys => [ index, key ] @@ -375,6 +374,27 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } } + /** + * Converts a field name to a tuple index. + * + * ## Notes + * + * - If provided an unknown field name, the function returns `-1`. + * + * @private + * @param {string} key - field name + * @returns {integer} tuple index + */ + function key2ind( key ) { + var i; + for ( i = 0; i < nfields; i++ ) { + if ( fields[ indices[i] ] === key ) { + return i; + } + } + return -1; + } + /** * Maps each tuple element to an element in a new tuple. * From 079ffda6bea6c8afbd40f85938762c14d48595b4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 16 Sep 2018 12:22:01 -0700 Subject: [PATCH 0355/1062] Add method to convert a tuple index to a field --- .../utils/named-typed-tuple/lib/main.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 10069ab782b5..4547c80819e5 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -167,9 +167,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi tuple.find = find; tuple.findIndex = findIndex; tuple.forEach = forEach; - - // TODO: ind2key - + tuple.ind2key = ind2key; tuple.key2ind = key2ind; // TODO: keys => [ index, key ] @@ -374,6 +372,21 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } } + /** + * Converts a tuple index to a field name. + * + * @private + * @param {NonNegativeInteger} ind - tuple index + * @throws {RangeError} index cannot exceed tuple dimensions + * @returns {string} field name + */ + function ind2key( ind ) { + if ( ind < 0 || ind >= nfields ) { + throw new RangeError( 'invalid argument. Tuple index cannot exceed tuple dimensions. Value: `' + ind + '`.' ); + } + return fields[ indices[ ind ] ]; + } + /** * Converts a field name to a tuple index. * From 931ada52224f4f8a117f7babac9e6871f7e4858f Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 16 Sep 2018 13:40:22 -0700 Subject: [PATCH 0356/1062] Add static method to create a tuple from a variable number of arguments --- .../utils/named-typed-tuple/lib/main.js | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 4547c80819e5..0d4ad28ecb4d 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -30,6 +30,7 @@ var typedarray = require( '@stdlib/array/typed' ); var Int8Array = require( '@stdlib/array/int8' ); var getDtype = require( '@stdlib/array/dtype' ); var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); +var defineProperty = require( '@stdlib/utils/define-property' ); var floor = require( '@stdlib/math/base/special/floor' ); var contains = require( './contains.js' ); var validate = require( './validate.js' ); @@ -98,7 +99,6 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi throw err; } } - return namedtypedtuple; /** * Returns a named typed tuple. @@ -490,6 +490,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @private * @param {NonNegativeInteger} [begin] - start element index (inclusive) * @param {NonNegativeInteger} [end] - end element index (exclusive) + * @throws {TypeError} `this` must be the host tuple * @throws {RangeError} cannot create an empty named tuple * @returns {TypedArray} new tuple */ @@ -498,6 +499,9 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi var i; var j; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } if ( arguments.length === 0 ) { return namedtypedtuple( tuple.buffer, tuple.byteOffset, dtype ); } @@ -540,7 +544,37 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } } - // TODO: (read-only) static methods => of, from + /** + * Creates a new tuple from a variable number of arguments. + * + * @name of + * @memberof namedtypedtuple + * @type {Function} + * @param {...number} element - tuple elements + * @throws {TypeError} `this` must be the host tuple + * @returns {TypedArray} new tuple + */ + defineProperty( namedtypedtuple, 'of', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': function of() { // eslint-disable-line no-restricted-syntax + var args; + var i; + if ( this !== namedtypedtuple ) { + throw new TypeError( 'invalid invocation. `this` is not the host tuple factory.' ); + } + args = []; + for ( i = 0; i < arguments.length; i++ ) { + args.push( arguments[ i ] ); + } + return new namedtypedtuple( args ); + } + }); + + // TODO: (read-only) static methods => from + + return namedtypedtuple; } From 97ad5bf0f6b7bdcd1b4b343e3f5f207adff94cc4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 16 Sep 2018 13:43:06 -0700 Subject: [PATCH 0357/1062] Ensure methods called on host tuple/tuple factory --- .../utils/named-typed-tuple/lib/main.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 0d4ad28ecb4d..9483c71c9ab3 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -258,9 +258,13 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * Returns the list of tuple fields. * * @private + * @throws {TypeError} `this` must be the host tuple * @returns {StringArray} tuple fields */ function getFields() { + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } return fields.slice(); } @@ -377,10 +381,14 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * * @private * @param {NonNegativeInteger} ind - tuple index + * @throws {TypeError} `this` must be the host tuple * @throws {RangeError} index cannot exceed tuple dimensions * @returns {string} field name */ function ind2key( ind ) { + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } if ( ind < 0 || ind >= nfields ) { throw new RangeError( 'invalid argument. Tuple index cannot exceed tuple dimensions. Value: `' + ind + '`.' ); } @@ -396,10 +404,14 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * * @private * @param {string} key - field name + * @throws {TypeError} `this` must be the host tuple * @returns {integer} tuple index */ function key2ind( key ) { var i; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } for ( i = 0; i < nfields; i++ ) { if ( fields[ indices[i] ] === key ) { return i; @@ -524,12 +536,16 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * Serializes a tuple as a string. * * @private + * @throws {TypeError} `this` must be the host tuple * @returns {string} tuple string representation */ function toString() { var out; var i; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } out = opts.name + '('; for ( i = 0; i < nfields; i++ ) { out += fields[ indices[i] ]; @@ -568,7 +584,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi for ( i = 0; i < arguments.length; i++ ) { args.push( arguments[ i ] ); } - return new namedtypedtuple( args ); + return namedtypedtuple( args ); } }); From 7441cb89ebcfae7c7e010a760508e4c500120501 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 01:52:10 -0700 Subject: [PATCH 0358/1062] Add `entries` method --- .../utils/named-typed-tuple/lib/main.js | 122 +++++++++++++++++- 1 file changed, 116 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 9483c71c9ab3..eac3a8db432a 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -1,3 +1,5 @@ +/* eslint-disable max-len, max-lines */ + /** * @license Apache-2.0 * @@ -16,8 +18,6 @@ * limitations under the License. */ -/* eslint-disable max-len */ - 'use strict'; // MODULES // @@ -32,6 +32,7 @@ var getDtype = require( '@stdlib/array/dtype' ); var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var defineProperty = require( '@stdlib/utils/define-property' ); var floor = require( '@stdlib/math/base/special/floor' ); +var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); var contains = require( './contains.js' ); var validate = require( './validate.js' ); @@ -159,8 +160,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi indices.push( i ); setReadWriteAccessor( tuple, fields[ i ], getter( i ), setter( i ) ); } - // TODO: entries => [ index, key, value ] - + tuple.entries = entries; tuple.every = every; tuple.fields = getFields; tuple.filter = filter; @@ -230,10 +230,107 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } } + /** + * Returns an iterator for iterating over tuple key-value pairs. + * + * @private + * @memberof tuple + * @throws {TypeError} `this` must be the host tuple + * @returns {Iterator} iterator + */ + function entries() { + var self; + var iter; + var FLG; + var i; + + self = this; // eslint-disable-line no-invalid-this + if ( self !== tuple ) { + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + + // Initialize the iteration index: + i = -1; + + // Create an iterator protocol-compliant object: + iter = {}; + defineProperty( iter, 'next', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': next + }); + defineProperty( iter, 'return', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': end + }); + if ( ITERATOR_SYMBOL ) { + defineProperty( iter, ITERATOR_SYMBOL, { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': factory + }); + } + return iter; + + /** + * Returns an iterator protocol-compliant object containing the next iterated value. + * + * @private + * @returns {Object} iterator protocol-compliant object + */ + function next() { + i += 1; + if ( FLG || i >= nfields ) { + return { + 'done': true + }; + } + return { + 'value': [ i, fields[ indices[ i ] ], tuple[ i ] ], + 'done': false + }; + } + + /** + * Finishes an iterator. + * + * @private + * @param {*} [value] - value to return + * @returns {Object} iterator protocol-compliant object + */ + function end( value ) { + FLG = true; + if ( arguments.length ) { + return { + 'value': value, + 'done': true + }; + } + return { + 'done': true + }; + } + + /** + * Returns a new iterator. + * + * @private + * @returns {Iterator} iterator + */ + function factory() { + return self.entries(); + } + } + /** * Tests whether all tuple elements pass a test implemented by a predicate function. * * @private + * @memberof tuple * @param {Function} predicate - predicate function * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple @@ -258,6 +355,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * Returns the list of tuple fields. * * @private + * @memberof tuple * @throws {TypeError} `this` must be the host tuple * @returns {StringArray} tuple fields */ @@ -276,6 +374,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * - The returned tuple has the same data type as the host tuple. * * @private + * @memberof tuple * @param {Function} fcn - filter function * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple @@ -311,6 +410,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * Returns the first tuple element for which a provided predicate function returns a truthy value. * * @private + * @memberof tuple * @param {Function} predicate - predicate function * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple @@ -338,6 +438,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * - If the predicate function never returns a truthy value, the function returns `-1`. * * @private + * @memberof tuple * @param {Function} predicate - predicate function * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple @@ -362,6 +463,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * Invokes a callback for each tuple element. * * @private + * @memberof tuple * @param {Function} fcn - function to invoke * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple @@ -380,6 +482,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * Converts a tuple index to a field name. * * @private + * @memberof tuple * @param {NonNegativeInteger} ind - tuple index * @throws {TypeError} `this` must be the host tuple * @throws {RangeError} index cannot exceed tuple dimensions @@ -403,6 +506,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * - If provided an unknown field name, the function returns `-1`. * * @private + * @memberof tuple * @param {string} key - field name * @throws {TypeError} `this` must be the host tuple * @returns {integer} tuple index @@ -428,6 +532,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * - The returned tuple has the same data type as the host tuple. * * @private + * @memberof tuple * @param {Function} fcn - map function * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple @@ -450,6 +555,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * Reverses a tuple **in-place**. * * @private + * @memberof tuple * @throws {TypeError} `this` must be the host tuple * @returns {TypedArray} reversed tuple */ @@ -476,6 +582,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * Tests whether at least one tuple element passes a test implemented by a predicate function. * * @private + * @memberof tuple * @param {Function} predicate - predicate function * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple @@ -500,6 +607,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * Create a new tuple over the same underlying `ArrayBuffer` and with the same underlying data type as the host tuple. * * @private + * @memberof tuple * @param {NonNegativeInteger} [begin] - start element index (inclusive) * @param {NonNegativeInteger} [end] - end element index (exclusive) * @throws {TypeError} `this` must be the host tuple @@ -536,6 +644,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * Serializes a tuple as a string. * * @private + * @memberof tuple * @throws {TypeError} `this` must be the host tuple * @returns {string} tuple string representation */ @@ -563,11 +672,12 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi /** * Creates a new tuple from a variable number of arguments. * + * @private * @name of * @memberof namedtypedtuple * @type {Function} * @param {...number} element - tuple elements - * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} `this` must be the host tuple factory * @returns {TypedArray} new tuple */ defineProperty( namedtypedtuple, 'of', { @@ -588,7 +698,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } }); - // TODO: (read-only) static methods => from + // TODO: (read-only) static method: from return namedtypedtuple; } From 42f1287555d5323545a8096305fc8f8a9f2d42c6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 01:55:09 -0700 Subject: [PATCH 0359/1062] Add `keys` method --- .../utils/named-typed-tuple/lib/main.js | 100 +++++++++++++++++- 1 file changed, 97 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index eac3a8db432a..8a6ce2740fe5 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -169,9 +169,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi tuple.forEach = forEach; tuple.ind2key = ind2key; tuple.key2ind = key2ind; - - // TODO: keys => [ index, key ] - + tuple.keys = keys; tuple.map = map; // TODO: reduce => clbk( prev, curr, index, name, array ) @@ -524,6 +522,102 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi return -1; } + /** + * Returns an iterator for iterating over tuple keys. + * + * @private + * @memberof tuple + * @throws {TypeError} `this` must be the host tuple + * @returns {Iterator} iterator + */ + function keys() { + var self; + var iter; + var FLG; + var i; + + self = this; // eslint-disable-line no-invalid-this + if ( self !== tuple ) { + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + + // Initialize the iteration index: + i = -1; + + // Create an iterator protocol-compliant object: + iter = {}; + defineProperty( iter, 'next', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': next + }); + defineProperty( iter, 'return', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': end + }); + if ( ITERATOR_SYMBOL ) { + defineProperty( iter, ITERATOR_SYMBOL, { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': factory + }); + } + return iter; + + /** + * Returns an iterator protocol-compliant object containing the next iterated value. + * + * @private + * @returns {Object} iterator protocol-compliant object + */ + function next() { + i += 1; + if ( FLG || i >= nfields ) { + return { + 'done': true + }; + } + return { + 'value': [ i, fields[ indices[ i ] ] ], + 'done': false + }; + } + + /** + * Finishes an iterator. + * + * @private + * @param {*} [value] - value to return + * @returns {Object} iterator protocol-compliant object + */ + function end( value ) { + FLG = true; + if ( arguments.length ) { + return { + 'value': value, + 'done': true + }; + } + return { + 'done': true + }; + } + + /** + * Returns a new iterator. + * + * @private + * @returns {Iterator} iterator + */ + function factory() { + return self.keys(); + } + } + /** * Maps each tuple element to an element in a new tuple. * From b275f9d0aa77fcad93da84081fb41cea45834a3f Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 02:19:24 -0700 Subject: [PATCH 0360/1062] Add missing argument validation --- .../utils/named-typed-tuple/lib/main.js | 73 ++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 8a6ce2740fe5..6e1eed75232a 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -25,6 +25,8 @@ var isStringArray = require( '@stdlib/assert/is-string-array' ).primitives; var isString = require( '@stdlib/assert/is-string' ).isPrimitive; var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' ); +var isFunction = require( '@stdlib/assert/is-function' ); +var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive; var propertiesIn = require( '@stdlib/utils/properties-in' ); var typedarray = require( '@stdlib/array/typed' ); var Int8Array = require( '@stdlib/array/int8' ); @@ -171,6 +173,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi tuple.key2ind = key2ind; tuple.keys = keys; tuple.map = map; + tuple.reduce = reduce; // TODO: reduce => clbk( prev, curr, index, name, array ) @@ -332,6 +335,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @param {Function} predicate - predicate function * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} first argument must be a function * @returns {boolean} boolean indicating if all elements pass */ function every( predicate, thisArg ) { @@ -340,6 +344,9 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } + if ( !isFunction( predicate ) ) { + throw new TypeError( 'invalid argument. First argument must be a function. Value: `' + predicate + '`.' ); + } for ( i = 0; i < nfields; i++ ) { bool = predicate.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); if ( !bool ) { @@ -376,6 +383,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @param {Function} fcn - filter function * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} first argument must be a function * @returns {TypedArray} new tuple */ function filter( fcn, thisArg ) { @@ -387,6 +395,9 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } + if ( !isFunction( fcn ) ) { + throw new TypeError( 'invalid argument. First argument must be a function. Value: `' + fcn + '`.' ); + } fields = []; tmp = []; for ( i = 0; i < nfields; i++ ) { @@ -412,6 +423,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @param {Function} predicate - predicate function * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} first argument must be a function * @returns {(number|void)} tuple element */ function find( predicate, thisArg ) { @@ -420,6 +432,9 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } + if ( !isFunction( predicate ) ) { + throw new TypeError( 'invalid argument. First argument must be a function. Value: `' + predicate + '`.' ); + } for ( i = 0; i < nfields; i++ ) { bool = predicate.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); if ( bool ) { @@ -440,6 +455,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @param {Function} predicate - predicate function * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} first argument must be a function * @returns {integer} tuple index or `-1` */ function findIndex( predicate, thisArg ) { @@ -448,6 +464,9 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } + if ( !isFunction( predicate ) ) { + throw new TypeError( 'invalid argument. First argument must be a function. Value: `' + predicate + '`.' ); + } for ( i = 0; i < nfields; i++ ) { bool = predicate.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); if ( bool ) { @@ -465,12 +484,16 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @param {Function} fcn - function to invoke * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} first argument must be a function */ function forEach( fcn, thisArg ) { var i; if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } + if ( !isFunction( fcn ) ) { + throw new TypeError( 'invalid argument. First argument must be a function. Value: `' + fcn + '`.' ); + } for ( i = 0; i < nfields; i++ ) { fcn.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); } @@ -483,6 +506,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @memberof tuple * @param {NonNegativeInteger} ind - tuple index * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} first argument must be a nonnegative integer * @throws {RangeError} index cannot exceed tuple dimensions * @returns {string} field name */ @@ -490,7 +514,10 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } - if ( ind < 0 || ind >= nfields ) { + if ( !isNonNegativeInteger( ind ) ) { + throw new TypeError( 'invalid argument. First argument must be a nonnegative integer. Value: `' + ind + '`.' ); + } + if ( ind >= nfields ) { throw new RangeError( 'invalid argument. Tuple index cannot exceed tuple dimensions. Value: `' + ind + '`.' ); } return fields[ indices[ ind ] ]; @@ -507,6 +534,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @memberof tuple * @param {string} key - field name * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} first argument must be a string * @returns {integer} tuple index */ function key2ind( key ) { @@ -514,6 +542,9 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } + if ( !isString( key ) ) { + throw new TypeError( 'invalid argument. First argument must be a string. Value: `' + key + '`.' ); + } for ( i = 0; i < nfields; i++ ) { if ( fields[ indices[i] ] === key ) { return i; @@ -630,6 +661,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @param {Function} fcn - map function * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} first argument must be a function * @returns {TypedArray} new tuple */ function map( fcn, thisArg ) { @@ -638,6 +670,9 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } + if ( !isFunction( fcn ) ) { + throw new TypeError( 'invalid argument. First argument must be a function. Value: `' + fcn + '`.' ); + } out = namedtypedtuple( dtype ); for ( i = 0; i < nfields; i++ ) { out[ i ] = fcn.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); @@ -645,6 +680,29 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi return out; } + /** + * Applies a function against an accumulator and each element in a tuple and returns the accumulated result. + * + * @private + * @memberof tuple + * @param {Function} fcn - reduction function + * @param {*} [initial] - initial value + * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} first argument must be a function + * @returns {*} accumulated result + */ + function reduce( fcn ) { + var acc; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + if ( !isFunction( fcn ) ) { + throw new TypeError( 'invalid argument. First argument must be a function. Value: `' + fcn + '`.' ); + } + // TODO: implement + return acc; + } + /** * Reverses a tuple **in-place**. * @@ -680,6 +738,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @param {Function} predicate - predicate function * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} first argument must be a function * @returns {boolean} boolean indicating if at least one element passes */ function some( predicate, thisArg ) { @@ -688,6 +747,9 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } + if ( !isFunction( predicate ) ) { + throw new TypeError( 'invalid argument. First argument must be a function. Value: `' + predicate + '`.' ); + } for ( i = 0; i < nfields; i++ ) { bool = predicate.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); if ( bool ) { @@ -706,6 +768,8 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @param {NonNegativeInteger} [end] - end element index (exclusive) * @throws {TypeError} `this` must be the host tuple * @throws {RangeError} cannot create an empty named tuple + * @throws {TypeError} first argument must be a nonnegative integer + * @throws {TypeError} second argument must be a nonnegative integer * @returns {TypedArray} new tuple */ function subtuple( begin, end ) { @@ -719,10 +783,17 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi if ( arguments.length === 0 ) { return namedtypedtuple( tuple.buffer, tuple.byteOffset, dtype ); } + i = begin; + if ( !isNonNegativeInteger( i ) ) { + throw new TypeError( 'invalid argument. First argument must be a nonnegative integer. Value: `' + begin + '`.' ); + } if ( arguments.length === 1 ) { j = tuple.length; } else { j = end; + if ( !isNonNegativeInteger( j ) ) { + throw new TypeError( 'invalid argument. Second argument must be a nonnegative integer. Value: `' + end + '`.' ); + } } if ( i >= j ) { throw new RangeError( 'invalid arguments. Cannot create an empty named tuple. Ensure that the starting element index is less than the end element index.' ); From 3c19939555b32853b0094095929f31d2ed488eed Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 02:29:19 -0700 Subject: [PATCH 0361/1062] Implement `reduce` method --- .../@stdlib/utils/named-typed-tuple/lib/main.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 6e1eed75232a..9a34c2e4ee61 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -693,13 +693,23 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi */ function reduce( fcn ) { var acc; + var i; if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } if ( !isFunction( fcn ) ) { throw new TypeError( 'invalid argument. First argument must be a function. Value: `' + fcn + '`.' ); } - // TODO: implement + if ( arguments.length > 1 ) { + acc = arguments[ 1 ]; + i = 0; + } else { + acc = tuple[ 0 ]; + i = 1; + } + for ( ; i < nfields; i++ ) { + acc = fcn( acc, tuple[ i ], i, fields[ indices[i] ], tuple ); + } return acc; } From a705205d7b7d4d508a8978a8a71abd0df586ec84 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 02:33:41 -0700 Subject: [PATCH 0362/1062] Add `reduceRight` method --- .../utils/named-typed-tuple/lib/main.js | 39 ++++++++++++++++--- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 9a34c2e4ee61..aa954538cecb 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -174,11 +174,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi tuple.keys = keys; tuple.map = map; tuple.reduce = reduce; - - // TODO: reduce => clbk( prev, curr, index, name, array ) - - // TODO: reduceRight => clbk( prev, curr, index, name, array ) - + tuple.reduceRight = reduceRight; tuple.reverse = reverse; tuple.some = some; @@ -713,6 +709,39 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi return acc; } + /** + * Applies a function against an accumulator and each element in a tuple and returns the accumulated result, iterating from right to left. + * + * @private + * @memberof tuple + * @param {Function} fcn - reduction function + * @param {*} [initial] - initial value + * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} first argument must be a function + * @returns {*} accumulated result + */ + function reduceRight( fcn ) { + var acc; + var i; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + if ( !isFunction( fcn ) ) { + throw new TypeError( 'invalid argument. First argument must be a function. Value: `' + fcn + '`.' ); + } + if ( arguments.length > 1 ) { + acc = arguments[ 1 ]; + i = nfields - 1; + } else { + acc = tuple[ nfields-1 ]; + i = nfields - 2; + } + for ( ; i >= 0; i-- ) { + acc = fcn( acc, tuple[ i ], i, fields[ indices[i] ], tuple ); + } + return acc; + } + /** * Reverses a tuple **in-place**. * From 64c65ec30eb4d0cb0ce5ba30ac097d7f7e7cf720 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 13:39:55 -0700 Subject: [PATCH 0363/1062] Fix package path --- .../@stdlib/assert/is-read-only-property-in/README.md | 2 +- .../@stdlib/assert/is-read-only-property-in/lib/index.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property-in/README.md b/lib/node_modules/@stdlib/assert/is-read-only-property-in/README.md index 07f33618d127..60c210aafe5f 100644 --- a/lib/node_modules/@stdlib/assert/is-read-only-property-in/README.md +++ b/lib/node_modules/@stdlib/assert/is-read-only-property-in/README.md @@ -120,7 +120,7 @@ bool = isReadOnlyPropertyIn( obj, 'accessor' ); ```javascript -var isReadOnlyPropertyIn = require( '@stdlib/assert/is-read-only-property' ); +var isReadOnlyPropertyIn = require( '@stdlib/assert/is-read-only-property-in' ); var bool = isReadOnlyPropertyIn( 'a', 'length' ); // returns true diff --git a/lib/node_modules/@stdlib/assert/is-read-only-property-in/lib/index.js b/lib/node_modules/@stdlib/assert/is-read-only-property-in/lib/index.js index c4b9bd87cdbe..a42522170608 100644 --- a/lib/node_modules/@stdlib/assert/is-read-only-property-in/lib/index.js +++ b/lib/node_modules/@stdlib/assert/is-read-only-property-in/lib/index.js @@ -21,11 +21,11 @@ /** * Test whether an object's own or inherited property is read-only. * -* @module @stdlib/assert/is-read-only-property +* @module @stdlib/assert/is-read-only-property-in * * @example * var defineProperty = require( '@stdlib/utils/define-property' ); -* var isReadOnlyPropertyIn = require( '@stdlib/assert/is-read-only-property' ); +* var isReadOnlyPropertyIn = require( '@stdlib/assert/is-read-only-property-in' ); * * var obj = { * 'boop': true From f9cd846e111c8287b10a0237e05d625eb7db9af9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 14:54:33 -0700 Subject: [PATCH 0364/1062] Fix description --- lib/node_modules/@stdlib/assert/is-big-endian/test/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/assert/is-big-endian/test/test.js b/lib/node_modules/@stdlib/assert/is-big-endian/test/test.js index dabb6001c878..5ea09cc50aaa 100644 --- a/lib/node_modules/@stdlib/assert/is-big-endian/test/test.js +++ b/lib/node_modules/@stdlib/assert/is-big-endian/test/test.js @@ -51,7 +51,7 @@ tape( 'the boolean is `true` if an environment is big endian', function test( t } }); -tape( 'the boolean is `false` if an environment is not big endian (e.g., big endian)', function test( t ) { +tape( 'the boolean is `false` if an environment is not big endian (e.g., little endian)', function test( t ) { var IS_BIG_ENDIAN = proxyquire( './../lib/main.js', { './ctors.js': { 'uint8': Foo From 18a202304548788618cc5298c961bada4aa59171 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 14:57:03 -0700 Subject: [PATCH 0365/1062] Add sort implementation --- .../utils/named-typed-tuple/lib/ascending.js | 44 +++++++++++ .../utils/named-typed-tuple/lib/main.js | 77 ++++++++++++++++++- 2 files changed, 118 insertions(+), 3 deletions(-) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/lib/ascending.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/ascending.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/ascending.js new file mode 100644 index 000000000000..b00658fa302f --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/ascending.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Specifies a sort order for ordering numeric values in ascending order. +* +* ## Notes +* +* - If `a < b`, then function returns a number less than `0`, which specifies to sort `a` to an index lower than `b`. +* - If `a > b`, then function returns a number greater than `0`, which specifies to sort `a` to an index higher than `b`. +* - If `a == b`, then function returns `0`, which specifies that the order of `a` and `b` should remain unchanged (not guaranteed). +* +* @private +* @param {number} a - first value +* @param {number} b - second value +* @returns {number} difference between `a` and `b` +*/ +function ascending( a, b ) { + return a - b; +} + + +// EXPORTS // + +module.exports = ascending; diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index aa954538cecb..a741aea2aa97 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -37,6 +37,7 @@ var floor = require( '@stdlib/math/base/special/floor' ); var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); var contains = require( './contains.js' ); var validate = require( './validate.js' ); +var ascending = require( './ascending.js' ); // VARIABLES // @@ -162,6 +163,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi indices.push( i ); setReadWriteAccessor( tuple, fields[ i ], getter( i ), setter( i ) ); } + // Note: keep in alphabetical order tuple.entries = entries; tuple.every = every; tuple.fields = getFields; @@ -177,9 +179,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi tuple.reduceRight = reduceRight; tuple.reverse = reverse; tuple.some = some; - - // TODO: sort => update mapping of keys to indices (this may require a custom sort algorithm to allow tracking indices) - + tuple.sort = sort; tuple.subtuple = subtuple; tuple.toString = toString; @@ -227,6 +227,8 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } } + // Note: keep functions which follow in alphabetical order + /** * Returns an iterator for iterating over tuple key-value pairs. * @@ -798,6 +800,75 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi return false; } + /** + * Sorts a tuple in-place. + * + * @private + * @memberof tuple + * @param {Function} [compareFunction] - function which specifies the sort order + * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} first argument must be a function + * @returns {TypedArray} sorted tuple + */ + function sort( compareFunction ) { + var clbk; + var tmp; + var i; + var j; + var k; + var v; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + if ( arguments.length ) { + if ( !isFunction( compareFunction ) ) { + throw new TypeError( 'invalid argument. First argument must be a function. Value: `' + compareFunction + '`.' ); + } + clbk = compareFunction; + } else { + clbk = ascending; + } + indices.sort( wrapper ); + + // Create a temporary indices array which we'll reorder as we rearrange the tuple elements: + tmp = indices.slice(); + + // Rearrange tuple elements according to the rearranged indices (note: every "move" moves a tuple element to its desired position with runtime complexity O(N))... + for ( i = 0; i < nfields; i++ ) { + // Check if we need to move a tuple element: + if ( tmp[ i ] !== i ) { + v = tuple[ i ]; + j = i; + k = tmp[ j ]; + + // Follow "cycles", stopping once we are back at index `i`... + while ( i !== k ) { + tuple[ j ] = tuple[ k ]; + tmp[ j ] = j; + j = k; + k = tmp[ j ]; + } + tuple[ j ] = v; + tmp[ j ] = j; + } + } + return tuple; + + /** + * Wraps a comparison function to allow sorting the internal indices array rather than the tuple directly. + * + * @private + * @param {NonNegativeInteger} ia - first index + * @param {NonNegativeInteger} ib - second index + * @returns {*} value specifying the sort order + */ + function wrapper( ia, ib ) { + var a = tuple[ indices[ ia ] ]; + var b = tuple[ indices[ ib ] ]; + return clbk( a, b ); + } + } + /** * Create a new tuple over the same underlying `ArrayBuffer` and with the same underlying data type as the host tuple. * From f98d36737ab3b69283a78f974e3bc39aa881131c Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 15:00:32 -0700 Subject: [PATCH 0366/1062] Reorder operands --- lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index a741aea2aa97..6d4c6f4231ff 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -842,7 +842,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi k = tmp[ j ]; // Follow "cycles", stopping once we are back at index `i`... - while ( i !== k ) { + while ( k !== i ) { tuple[ j ] = tuple[ k ]; tmp[ j ] = j; j = k; From 866466577896f1a43690f0cebd3a467332fc1591 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 15:14:17 -0700 Subject: [PATCH 0367/1062] Serialize according to field order and update example --- .../@stdlib/utils/named-typed-tuple/examples/index.js | 3 +++ lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js index e1a30dc01b68..9b430ddb3e39 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js @@ -45,4 +45,7 @@ y = p.y; console.log( y ); // => -1.0 +p.sort(); +console.log( 'p[0]=%d, p[1]=%d, x=%d, y=%d', p[ 0 ], p[ 1 ], p.x, p.y ); + console.log( p.toString() ); diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 6d4c6f4231ff..09b5a0800e7a 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -932,9 +932,9 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } out = opts.name + '('; for ( i = 0; i < nfields; i++ ) { - out += fields[ indices[i] ]; + out += fields[ i ]; out += '='; - out += tuple[ i ]; + out += tuple[ indices[ i ] ]; if ( i < nfields-1 ) { out += ', '; } From 6878c613048f82668ae8af90f7f2f4250cdcc918 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 15:20:50 -0700 Subject: [PATCH 0368/1062] Add support for returning fields according to index order --- .../utils/named-typed-tuple/examples/index.js | 2 ++ .../utils/named-typed-tuple/lib/main.js | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js index 9b430ddb3e39..ce0f7fb0764b 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js @@ -48,4 +48,6 @@ console.log( y ); p.sort(); console.log( 'p[0]=%d, p[1]=%d, x=%d, y=%d', p[ 0 ], p[ 1 ], p.x, p.y ); +console.log( p.fields( true ) ); + console.log( p.toString() ); diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 09b5a0800e7a..e5a190b2795b 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -27,6 +27,7 @@ var isString = require( '@stdlib/assert/is-string' ).isPrimitive; var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' ); var isFunction = require( '@stdlib/assert/is-function' ); var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive; +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; var propertiesIn = require( '@stdlib/utils/properties-in' ); var typedarray = require( '@stdlib/array/typed' ); var Int8Array = require( '@stdlib/array/int8' ); @@ -359,14 +360,27 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * * @private * @memberof tuple + * @param {boolean} [ordered=false] - boolean indicating whether to return tuple fields according to index order * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} must provide a boolean * @returns {StringArray} tuple fields */ - function getFields() { + function getFields( ordered ) { + var out; + var i; if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } - return fields.slice(); + if ( arguments.length && !isBoolean( ordered ) ) { + throw new TypeError( 'invalid argument. Must provide a boolean. Value: `' + ordered + '`.' ); + } + out = fields.slice(); + if ( ordered ) { + for ( i = 0; i < nfields; i++ ) { + out[ i ] = fields[ indices[i] ]; + } + } + return out; } /** From acf032a5130f26504e020c2ad7c23342885b9348 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 15:40:22 -0700 Subject: [PATCH 0369/1062] Add `slice` method --- .../utils/named-typed-tuple/lib/main.js | 59 ++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index e5a190b2795b..062ab84bfed9 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -27,6 +27,7 @@ var isString = require( '@stdlib/assert/is-string' ).isPrimitive; var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' ); var isFunction = require( '@stdlib/assert/is-function' ); var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive; +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; var propertiesIn = require( '@stdlib/utils/properties-in' ); var typedarray = require( '@stdlib/array/typed' ); @@ -179,6 +180,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi tuple.reduce = reduce; tuple.reduceRight = reduceRight; tuple.reverse = reverse; + tuple.slice = slice; tuple.some = some; tuple.sort = sort; tuple.subtuple = subtuple; @@ -785,6 +787,61 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi return tuple; } + /** + * Copies elements to a new tuple with the same underlying data type as the host tuple. + * + * @private + * @memberof tuple + * @param {integer} [begin] - start element index (inclusive) + * @param {integer} [end] - end element index (exclusive) + * @throws {TypeError} `this` must be the host tuple + * @throws {RangeError} cannot create an empty named tuple + * @throws {TypeError} first argument must be an integer + * @throws {TypeError} second argument must be an integer + * @returns {TypedArray} new tuple + */ + function slice( begin, end ) { + var tmp; + var f; + var i; + var j; + + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + if ( arguments.length === 0 ) { + return namedtypedtuple( tuple, dtype ); + } + i = begin; + if ( !isInteger( i ) ) { + throw new TypeError( 'invalid argument. First argument must be an integer. Value: `' + begin + '`.' ); + } + if ( i < 0 ) { + i = nfields + i; + } + if ( arguments.length === 1 ) { + j = tuple.length; + } else { + j = end; + if ( !isInteger( j ) ) { + throw new TypeError( 'invalid argument. Second argument must be an integer. Value: `' + end + '`.' ); + } + if ( j < 0 ) { + j = nfields + j; + } + } + if ( i >= j ) { + throw new RangeError( 'invalid arguments. Cannot create an empty named tuple. Ensure that the starting element index is less than the end element index.' ); + } + f = []; + tmp = []; + for ( i = 0; i < j; i++ ) { + f.push( fields[ indices[i] ] ); + tmp.push( tuple[ i ] ); + } + return factory( f, opts )( tmp, dtype ); + } + /** * Tests whether at least one tuple element passes a test implemented by a predicate function. * @@ -884,7 +941,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } /** - * Create a new tuple over the same underlying `ArrayBuffer` and with the same underlying data type as the host tuple. + * Creates a new tuple over the same underlying `ArrayBuffer` and with the same underlying data type as the host tuple. * * @private * @memberof tuple From 077699c5bcbfe3068f80958dca227e832bf3f0f9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 15:44:33 -0700 Subject: [PATCH 0370/1062] Clamp indices to `0` --- .../@stdlib/utils/named-typed-tuple/lib/main.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 062ab84bfed9..021d4394edc4 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -818,6 +818,9 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } if ( i < 0 ) { i = nfields + i; + if ( i < 0 ) { + i = 0; + } } if ( arguments.length === 1 ) { j = tuple.length; @@ -828,6 +831,9 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } if ( j < 0 ) { j = nfields + j; + if ( j < 0 ) { + j = 0; + } } } if ( i >= j ) { From fff5f06fa52a16ad7bfb94aeaa240cd7e2cd564f Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 15:46:40 -0700 Subject: [PATCH 0371/1062] Clamp indices to tuple length --- lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 021d4394edc4..01f6f50bf5f3 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -834,6 +834,8 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi if ( j < 0 ) { j = 0; } + } else if ( j > tuple.length ) { + j = tuple.length; } } if ( i >= j ) { @@ -981,6 +983,9 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi if ( !isNonNegativeInteger( j ) ) { throw new TypeError( 'invalid argument. Second argument must be a nonnegative integer. Value: `' + end + '`.' ); } + if ( j > tuple.length ) { + j = tuple.length; + } } if ( i >= j ) { throw new RangeError( 'invalid arguments. Cannot create an empty named tuple. Ensure that the starting element index is less than the end element index.' ); From ccfb21fa39795f85063edbbcd0cd937c7992e7b0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 15:47:49 -0700 Subject: [PATCH 0372/1062] Use cached tuple length --- .../@stdlib/utils/named-typed-tuple/lib/main.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 01f6f50bf5f3..d12498e16d53 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -823,7 +823,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } } if ( arguments.length === 1 ) { - j = tuple.length; + j = nfields; } else { j = end; if ( !isInteger( j ) ) { @@ -834,8 +834,8 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi if ( j < 0 ) { j = 0; } - } else if ( j > tuple.length ) { - j = tuple.length; + } else if ( j > nfields ) { + j = nfields; } } if ( i >= j ) { @@ -977,14 +977,14 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi throw new TypeError( 'invalid argument. First argument must be a nonnegative integer. Value: `' + begin + '`.' ); } if ( arguments.length === 1 ) { - j = tuple.length; + j = nfields; } else { j = end; if ( !isNonNegativeInteger( j ) ) { throw new TypeError( 'invalid argument. Second argument must be a nonnegative integer. Value: `' + end + '`.' ); } - if ( j > tuple.length ) { - j = tuple.length; + if ( j > nfields ) { + j = nfields; } } if ( i >= j ) { From 8d93238f07367788e9f8b3d17574eb9a2855334f Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 15:53:06 -0700 Subject: [PATCH 0373/1062] Fix variable bug --- .../utils/named-typed-tuple/lib/main.js | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index d12498e16d53..114fb7fa8a9d 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -391,6 +391,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * ## Notes * * - The returned tuple has the same data type as the host tuple. + * - If a predicate does not return a truthy value for any tuple element, the function returns `null`. * * @private * @memberof tuple @@ -398,13 +399,12 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple * @throws {TypeError} first argument must be a function - * @returns {TypedArray} new tuple + * @returns {(TypedArray|null)} new tuple */ function filter( fcn, thisArg ) { - var fields; var bool; - var out; var tmp; + var f; var i; if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); @@ -412,21 +412,22 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi if ( !isFunction( fcn ) ) { throw new TypeError( 'invalid argument. First argument must be a function. Value: `' + fcn + '`.' ); } - fields = []; tmp = []; + f = []; for ( i = 0; i < nfields; i++ ) { bool = fcn.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); if ( bool ) { - fields.push( fields[ indices[i] ] ); + f.push( fields[ indices[i] ] ); tmp.push( tuple[ i ] ); } } - if ( fields.length === nfields ) { - out = namedtypedtuple( tmp, dtype ); - } else if ( fields.length ) { - out = factory( fields, opts )( tmp ); + if ( f.length === nfields ) { + return namedtypedtuple( tmp, dtype ); } - return out; + if ( f.length ) { + return factory( f, opts )( tmp ); + } + return null; } /** From a98a893a9a68dd85d759c2f419956ba938540389 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 15:59:56 -0700 Subject: [PATCH 0374/1062] Return `null` rather than throw Normalizes method behavior to be aligned with "filtering" a tuple. --- .../utils/named-typed-tuple/lib/main.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 114fb7fa8a9d..648b88842af2 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -791,15 +791,18 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi /** * Copies elements to a new tuple with the same underlying data type as the host tuple. * + * ## Notes + * + * - If the function is unable to resolve indices to a non-empty tuple subsequence, the function returns `null`. + * * @private * @memberof tuple * @param {integer} [begin] - start element index (inclusive) * @param {integer} [end] - end element index (exclusive) * @throws {TypeError} `this` must be the host tuple - * @throws {RangeError} cannot create an empty named tuple * @throws {TypeError} first argument must be an integer * @throws {TypeError} second argument must be an integer - * @returns {TypedArray} new tuple + * @returns {(TypedArray|null)} new tuple */ function slice( begin, end ) { var tmp; @@ -840,7 +843,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } } if ( i >= j ) { - throw new RangeError( 'invalid arguments. Cannot create an empty named tuple. Ensure that the starting element index is less than the end element index.' ); + return null; } f = []; tmp = []; @@ -952,15 +955,18 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi /** * Creates a new tuple over the same underlying `ArrayBuffer` and with the same underlying data type as the host tuple. * + * ## Notes + * + * - If the function is unable to resolve indices to a non-empty tuple subsequence, the function returns `null`. + * * @private * @memberof tuple * @param {NonNegativeInteger} [begin] - start element index (inclusive) * @param {NonNegativeInteger} [end] - end element index (exclusive) * @throws {TypeError} `this` must be the host tuple - * @throws {RangeError} cannot create an empty named tuple * @throws {TypeError} first argument must be a nonnegative integer * @throws {TypeError} second argument must be a nonnegative integer - * @returns {TypedArray} new tuple + * @returns {(TypedArray|null)} new tuple */ function subtuple( begin, end ) { var f; @@ -989,7 +995,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } } if ( i >= j ) { - throw new RangeError( 'invalid arguments. Cannot create an empty named tuple. Ensure that the starting element index is less than the end element index.' ); + return null; } f = []; for ( i = 0; i < j; i++ ) { From 2c6841ce13db676bf06fa62d46b59f0f8ff0a4a7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 16:08:50 -0700 Subject: [PATCH 0375/1062] Throw an error if provided an incompatible number of arguments --- .../@stdlib/utils/named-typed-tuple/lib/main.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 648b88842af2..0950a8b0fa40 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -156,7 +156,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi tuple = typedarray( arguments[ 0 ], arguments[ 1 ], nfields, arguments[ 2 ] ); } if ( tuple.length !== nfields ) { - throw new RangeError( 'invalid arguments. Arguments are incompatible with number of tuple fields. Tuple length: `' + tuple.length + '`.' ); + throw new RangeError( 'invalid arguments. Arguments are incompatible with number of tuple fields. Number of fields: `' + nfields + '`. Number of data elements: `' + tuple.length + '`.' ); } dtype = getDtype( tuple ); @@ -1042,6 +1042,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @type {Function} * @param {...number} element - tuple elements * @throws {TypeError} `this` must be the host tuple factory + * @throws {RangeError} incompatible number of arguments * @returns {TypedArray} new tuple */ defineProperty( namedtypedtuple, 'of', { @@ -1054,6 +1055,9 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi if ( this !== namedtypedtuple ) { throw new TypeError( 'invalid invocation. `this` is not the host tuple factory.' ); } + if ( arguments.length !== nfields ) { + throw new RangeError( 'invalid invocation. Number of arguments incompatible with number of tuple fields. Number of fields: `' + nfields + '`. Number of arguments: `' + arguments.length + '`.' ); + } args = []; for ( i = 0; i < arguments.length; i++ ) { args.push( arguments[ i ] ); From 298e788408216e9531f713f2b30cd1236a41384c Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 16:14:28 -0700 Subject: [PATCH 0376/1062] Allow negative indices --- .../utils/named-typed-tuple/lib/main.js | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 0950a8b0fa40..6f988a3f4564 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -961,11 +961,11 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * * @private * @memberof tuple - * @param {NonNegativeInteger} [begin] - start element index (inclusive) - * @param {NonNegativeInteger} [end] - end element index (exclusive) + * @param {integer} [begin] - start element index (inclusive) + * @param {integer} [end] - end element index (exclusive) * @throws {TypeError} `this` must be the host tuple - * @throws {TypeError} first argument must be a nonnegative integer - * @throws {TypeError} second argument must be a nonnegative integer + * @throws {TypeError} first argument must be an integer + * @throws {TypeError} second argument must be an integer * @returns {(TypedArray|null)} new tuple */ function subtuple( begin, end ) { @@ -980,17 +980,28 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi return namedtypedtuple( tuple.buffer, tuple.byteOffset, dtype ); } i = begin; - if ( !isNonNegativeInteger( i ) ) { - throw new TypeError( 'invalid argument. First argument must be a nonnegative integer. Value: `' + begin + '`.' ); + if ( !isInteger( i ) ) { + throw new TypeError( 'invalid argument. First argument must be an integer. Value: `' + begin + '`.' ); + } + if ( i < 0 ) { + i = nfields + i; + if ( i < 0 ) { + i = 0; + } } if ( arguments.length === 1 ) { j = nfields; } else { j = end; - if ( !isNonNegativeInteger( j ) ) { - throw new TypeError( 'invalid argument. Second argument must be a nonnegative integer. Value: `' + end + '`.' ); + if ( !isInteger( j ) ) { + throw new TypeError( 'invalid argument. Second argument must be an integer. Value: `' + end + '`.' ); } - if ( j > nfields ) { + if ( j < 0 ) { + j = nfields + j; + if ( j < 0 ) { + j = 0; + } + } else if ( j > nfields ) { j = nfields; } } From 572693dbf86653009c64b5b75fd6c3e598a2068a Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 17:40:28 -0700 Subject: [PATCH 0377/1062] Fix path and description --- .../@stdlib/utils/nonenumerable-properties/lib/index.js | 2 +- .../@stdlib/utils/nonenumerable-properties/lib/main.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties/lib/index.js b/lib/node_modules/@stdlib/utils/nonenumerable-properties/lib/index.js index 4c04bc163a6b..2e578c9bc6ec 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-properties/lib/index.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties/lib/index.js @@ -21,7 +21,7 @@ /** * Return an array of an object's own non-enumerable property names and symbols. * -* @module @stdlib/utils/non-enumerable-properties +* @module @stdlib/utils/nonenumerable-properties * * @example * var defineProperty = require( '@stdlib/utils/define-property' ); diff --git a/lib/node_modules/@stdlib/utils/nonenumerable-properties/lib/main.js b/lib/node_modules/@stdlib/utils/nonenumerable-properties/lib/main.js index f0d85828fccf..28af1d8e0480 100644 --- a/lib/node_modules/@stdlib/utils/nonenumerable-properties/lib/main.js +++ b/lib/node_modules/@stdlib/utils/nonenumerable-properties/lib/main.js @@ -31,7 +31,7 @@ var isNonEnumerable = require( '@stdlib/assert/is-nonenumerable-property' ); * Returns an array of an object's own non-enumerable property names and symbols. * * @param {*} value - input object -* @returns {Array} a list of own property non-enumerable names and symbols +* @returns {Array} a list of own non-enumerable property names and symbols * * @example * var defineProperty = require( '@stdlib/utils/define-property' ); From 47aefd87aed715b2e2d51e46a7ce3868a454fbf5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 18:16:05 -0700 Subject: [PATCH 0378/1062] Ensure distinct field names --- .../lib/has_distinct_elements.js | 52 +++++++++++++++++++ .../utils/named-typed-tuple/lib/main.js | 5 ++ 2 files changed, 57 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/lib/has_distinct_elements.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/has_distinct_elements.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/has_distinct_elements.js new file mode 100644 index 000000000000..d6eb83794cf7 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/has_distinct_elements.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); + + +// MAIN // + +/** +* Tests if an array contains distinct elements. +* +* @private +* @param {Array} arr - input array +* @returns {boolean} boolean indicating if an array contains distinct elements +*/ +function hasDistinctElements( arr ) { + var obj; + var i; + + obj = {}; + for ( i = 0; i < arr.length; i++ ) { + if ( hasOwnProp( obj, arr[ i ] ) ) { + return false; + } + obj[ arr[i] ] = true; + } + return true; +} + + +// EXPORTS // + +module.exports = hasDistinctElements; diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 6f988a3f4564..83f3a73ae8ea 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -38,6 +38,7 @@ var defineProperty = require( '@stdlib/utils/define-property' ); var floor = require( '@stdlib/math/base/special/floor' ); var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); var contains = require( './contains.js' ); +var hasDistinctElements = require( './has_distinct_elements.js' ); var validate = require( './validate.js' ); var ascending = require( './ascending.js' ); @@ -57,6 +58,7 @@ var RESERVED_PROPS = propertiesIn( new Int8Array( 0 ) ); * @param {string} [options.dtype="float64"] - default data type * @param {string} [options.name="tuple"] - tuple name * @throws {TypeError} must provide an array of strings +* @throws {TypeError} must provide distinct field names * @throws {Error} cannot provide a reserved field (property) name * @throws {TypeError} must provide valid options * @throws {Error} must provide a recognized data type @@ -88,6 +90,9 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi if ( !isStringArray( names ) ) { throw new TypeError( 'invalid argument. Must provide an array of strings. Value: `' + names + '`.' ); } + if ( !hasDistinctElements( names ) ) { + throw new TypeError( 'invalid argument. Field names must be distinct. Value: `' + names + '`.' ); + } fields = names.slice(); nfields = fields.length; for ( i = 0; i < nfields; i++ ) { From 8f3b1e417ff5e9270bb9d00a84b7f9c2d334759d Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 18:18:07 -0700 Subject: [PATCH 0379/1062] Fix path --- .../@stdlib/utils/inherited-property-descriptors/lib/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/inherited-property-descriptors/lib/index.js b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/lib/index.js index 40190404df1a..08330d9937bd 100644 --- a/lib/node_modules/@stdlib/utils/inherited-property-descriptors/lib/index.js +++ b/lib/node_modules/@stdlib/utils/inherited-property-descriptors/lib/index.js @@ -24,7 +24,7 @@ * @module @stdlib/utils/inherited-property-descriptors * * @example -* var inheritedPropertyDescriptors = require( '@stdlib/utils/property-descriptors' ); +* var inheritedPropertyDescriptors = require( '@stdlib/utils/inherited-property-descriptors' ); * * var desc = inheritedPropertyDescriptors( [] ); * // returns {...} From 0fc7dd56f3c1e531073ca4c7fc7bfce3b59c9cbb Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 18:37:46 -0700 Subject: [PATCH 0380/1062] Add static method to create a tuple from an object --- .../utils/named-typed-tuple/lib/main.js | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 83f3a73ae8ea..a2a64d9c1eca 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -29,6 +29,7 @@ var isFunction = require( '@stdlib/assert/is-function' ); var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive; var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); var propertiesIn = require( '@stdlib/utils/properties-in' ); var typedarray = require( '@stdlib/array/typed' ); var Int8Array = require( '@stdlib/array/int8' ); @@ -131,7 +132,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi nargs = arguments.length; if ( nargs <= 0 ) { - tuple = typedarray( nfields ); + tuple = typedarray( nfields, opts.dtype ); } else if ( nargs === 1 ) { if ( isString( arguments[ 0 ] ) ) { // Arguments: [ dtype ] @@ -1084,6 +1085,41 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi // TODO: (read-only) static method: from + /** + * Creates a new tuple from an object containing tuple fields. + * + * @private + * @name fromObject + * @memberof namedtypedtuple + * @type {Function} + * @param {Object} obj - source object + * @throws {TypeError} `this` must be the host tuple factory + * @throws {TypeError} must provide an object + * @returns {TypedArray} new tuple + */ + defineProperty( namedtypedtuple, 'fromObject', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': function fromObject( obj ) { // eslint-disable-line no-restricted-syntax + var tuple; + var i; + if ( this !== namedtypedtuple ) { + throw new TypeError( 'invalid invocation. `this` is not the host tuple factory.' ); + } + if ( obj === null || typeof obj !== 'object' ) { + throw new TypeError( 'invalid argument. Must provide an object. Value: `' + obj + '`.' ); + } + tuple = typedarray( nfields, opts.dtype ); + for ( i = 0; i < nfields; i++ ) { + if ( hasOwnProp( obj, fields[ i ] ) ) { + tuple[ i ] = obj[ fields[ i ] ]; + } + } + return tuple; + } + }); + return namedtypedtuple; } From 11065bed1dffa59839c94ac50309f2cfadf5e0f0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 18:38:24 -0700 Subject: [PATCH 0381/1062] Fix function invocation --- lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index a2a64d9c1eca..24e817efd461 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -1110,7 +1110,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi if ( obj === null || typeof obj !== 'object' ) { throw new TypeError( 'invalid argument. Must provide an object. Value: `' + obj + '`.' ); } - tuple = typedarray( nfields, opts.dtype ); + tuple = namedtypedtuple( nfields, opts.dtype ); for ( i = 0; i < nfields; i++ ) { if ( hasOwnProp( obj, fields[ i ] ) ) { tuple[ i ] = obj[ fields[ i ] ]; From 17c7f7966957da5618519ae6f7ffdbe711149599 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 18:42:13 -0700 Subject: [PATCH 0382/1062] Add method to serialize a tuple as JSON --- .../utils/named-typed-tuple/lib/main.js | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 24e817efd461..d855f6e86dd8 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -190,6 +190,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi tuple.some = some; tuple.sort = sort; tuple.subtuple = subtuple; + tuple.toJSON = toJSON; tuple.toString = toString; return tuple; @@ -1032,7 +1033,6 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi function toString() { var out; var i; - if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } @@ -1048,6 +1048,27 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi out += ')'; return out; } + + /** + * Serializes a tuple as JSON. + * + * @private + * @memberof tuple + * @throws {TypeError} `this` must be the host tuple + * @returns {JSON} tuple JSON representation + */ + function toJSON() { + var out; + var i; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + out = {}; + for ( i = 0; i < nfields; i++ ) { + out[ fields[i] ] = tuple[ indices[i] ]; + } + return out; + } } /** From 8e86370930637a9d8b374a53b229a44fa23d2d73 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 18:45:01 -0700 Subject: [PATCH 0383/1062] Update example --- .../@stdlib/utils/named-typed-tuple/examples/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js index ce0f7fb0764b..992fe28b74d4 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js @@ -29,6 +29,7 @@ var Point = namedtypedtuple( fields, opts ); var p = new Point( [ 1.0, -1.0 ] ); +// Tuple elements can be accessed by index or name: var x = p[ 0 ]; console.log( x ); // => 1.0 @@ -45,9 +46,15 @@ y = p.y; console.log( y ); // => -1.0 +// Sort tuple elements while retaining name access: p.sort(); console.log( 'p[0]=%d, p[1]=%d, x=%d, y=%d', p[ 0 ], p[ 1 ], p.x, p.y ); +// Retrieve the tuple fields in index order: console.log( p.fields( true ) ); +// Serialize the tuple as a string: console.log( p.toString() ); + +// Serialize the tuple a JSON string: +console.log( JSON.stringify( p ) ); From 758aa55f03eaba221526e064fadf47f40a1be4c0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 20:57:12 -0700 Subject: [PATCH 0384/1062] Fix off-by-one bug and update param type --- .../@stdlib/array/complex64/lib/from_iterator_map.js | 2 +- lib/node_modules/@stdlib/array/complex64/lib/main.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/array/complex64/lib/from_iterator_map.js b/lib/node_modules/@stdlib/array/complex64/lib/from_iterator_map.js index 710ce80c34a1..84caa076bc64 100644 --- a/lib/node_modules/@stdlib/array/complex64/lib/from_iterator_map.js +++ b/lib/node_modules/@stdlib/array/complex64/lib/from_iterator_map.js @@ -44,7 +44,7 @@ function fromIteratorMap( it, clbk, thisArg ) { var i; out = []; - i = 0; + i = -1; while ( true ) { i += 1; v = it.next(); diff --git a/lib/node_modules/@stdlib/array/complex64/lib/main.js b/lib/node_modules/@stdlib/array/complex64/lib/main.js index 987ab6d8fdce..dc4f8ce07372 100644 --- a/lib/node_modules/@stdlib/array/complex64/lib/main.js +++ b/lib/node_modules/@stdlib/array/complex64/lib/main.js @@ -284,7 +284,7 @@ defineProperty( Complex64Array, 'BYTES_PER_ELEMENT', { * @name from * @memberof Complex64Array * @type {Function} -* @param {(ArrayLikeObject|Object)} src - array-like object or iterable +* @param {(ArrayLikeObject|Iterable)} src - array-like object or iterable * @param {Function} [clbk] - callback to invoke for each source element * @param {*} [thisArg] - context * @throws {TypeError} `this` context must be a constructor From 017704ae2c24669d9d045545d7a0332adfcd76a4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 20:59:46 -0700 Subject: [PATCH 0385/1062] Add static `from` method --- .../named-typed-tuple/lib/from_iterator.js | 50 +++++++++++ .../lib/from_iterator_map.js | 56 ++++++++++++ .../utils/named-typed-tuple/lib/main.js | 89 +++++++++++++++++-- 3 files changed, 189 insertions(+), 6 deletions(-) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/lib/from_iterator.js create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/lib/from_iterator_map.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/from_iterator.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/from_iterator.js new file mode 100644 index 000000000000..0a97ee8fd53a --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/from_iterator.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Returns an array of iterated values. +* +* @private +* @param {Object} it - iterator +* @returns {Array} output array +*/ +function fromIterator( it ) { + var out; + var v; + + out = []; + while ( true ) { + v = it.next(); + if ( v.value !== void 0 ) { + out.push( v.value ); + } + if ( v.done ) { + break; + } + } + return out; +} + + +// EXPORTS // + +module.exports = fromIterator; diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/from_iterator_map.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/from_iterator_map.js new file mode 100644 index 000000000000..3ea839baf8cd --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/from_iterator_map.js @@ -0,0 +1,56 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Returns an array of iterated values. +* +* @private +* @param {StringArray} fields - tuple fields +* @param {Object} it - iterator +* @param {Function} clbk - callback to invoke for each iterated value +* @param {*} thisArg - invocation context +* @returns {Array} output array +*/ +function fromIteratorMap( fields, it, clbk, thisArg ) { + var out; + var v; + var i; + + out = []; + i = -1; + while ( true ) { + i += 1; + v = it.next(); + if ( v.value !== void 0 ) { + out.push( clbk.call( thisArg, v.value, i, fields[ i ] ) ); + } + if ( v.done ) { + break; + } + } + return out; +} + + +// EXPORTS // + +module.exports = fromIteratorMap; diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index d855f6e86dd8..8681f269273b 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -29,7 +29,10 @@ var isFunction = require( '@stdlib/assert/is-function' ); var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive; var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var isObject = require( '@stdlib/assert/is-object' ); +var isCollection = require( '@stdlib/assert/is-collection' ); var hasOwnProp = require( '@stdlib/assert/has-own-property' ); +var hasIteratorSymbolSupport = require( '@stdlib/assert/has-iterator-symbol-support' ); var propertiesIn = require( '@stdlib/utils/properties-in' ); var typedarray = require( '@stdlib/array/typed' ); var Int8Array = require( '@stdlib/array/int8' ); @@ -42,11 +45,14 @@ var contains = require( './contains.js' ); var hasDistinctElements = require( './has_distinct_elements.js' ); var validate = require( './validate.js' ); var ascending = require( './ascending.js' ); +var fromIterator = require( './from_iterator.js' ); +var fromIteratorMap = require( './from_iterator_map.js' ); // VARIABLES // var RESERVED_PROPS = propertiesIn( new Int8Array( 0 ) ); +var HAS_ITERATOR_SYMBOL = hasIteratorSymbolSupport(); // MAIN // @@ -116,7 +122,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * Returns a named typed tuple. * * @private - * @param {(TypedArray|ArrayLikeObject|ArrayBuffer)} [arg] - a typed array, array-like object, or buffer + * @param {(TypedArray|ArrayLikeObject|ArrayBuffer|Iterable)} [arg] - a typed array, array-like object, buffer, or an iterable * @param {NonNegativeInteger} [byteOffset=0] - byte offset * @param {string} [dtype] - data type * @throws {TypeError} must provide a recognized data type @@ -141,7 +147,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi // Arguments: [ ArrayBuffer ] tuple = typedarray( arguments[ 0 ], 0, nfields, opts.dtype ); } else { - // Arguments: [ TypedArray|ArrayLikeObject ] + // Arguments: [ TypedArray|ArrayLikeObject|Iterable ] tuple = typedarray( arguments[ 0 ], opts.dtype ); } } else if ( nargs === 2 ) { @@ -154,7 +160,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi tuple = typedarray( arguments[ 0 ], arguments[ 1 ], nfields, opts.dtype ); } } else { - // Arguments: [ TypedArray|ArrayLikeObject, dtype ] + // Arguments: [ TypedArray|ArrayLikeObject|Iterable, dtype ] tuple = typedarray( arguments[ 0 ], arguments[ 1 ] ); } } else { @@ -275,7 +281,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi 'writable': false, 'value': end }); - if ( ITERATOR_SYMBOL ) { + if ( HAS_ITERATOR_SYMBOL ) { defineProperty( iter, ITERATOR_SYMBOL, { 'configurable': false, 'enumerable': false, @@ -611,7 +617,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi 'writable': false, 'value': end }); - if ( ITERATOR_SYMBOL ) { + if ( HAS_ITERATOR_SYMBOL ) { defineProperty( iter, ITERATOR_SYMBOL, { 'configurable': false, 'enumerable': false, @@ -1104,7 +1110,78 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } }); - // TODO: (read-only) static method: from + /** + * Creates a new tuple from an array-like object or an iterable. + * + * @private + * @name from + * @memberof namedtypedtuple + * @type {Function} + * @param {(ArrayLikeObject|Iterable)} src - array-like object or iterable + * @param {Function} [clbk] - callback to invoke for each source element + * @param {*} [thisArg] - context + * @throws {TypeError} `this` must be the host tuple factory + * @throws {TypeError} first argument must be an array-like object or an iterable + * @throws {RangeError} source must be compatible with tuple length + * @throws {TypeError} second argument must be a function + * @returns {TypedArray} new tuple + */ + defineProperty( namedtypedtuple, 'from', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': function from( src ) { // eslint-disable-line no-restricted-syntax + var thisArg; + var nargs; + var tuple; + var clbk; + var tmp; + var it; + var i; + if ( this !== namedtypedtuple ) { + throw new TypeError( 'invalid invocation. `this` is not the host tuple factory.' ); + } + nargs = arguments.length; + if ( nargs > 1 ) { + clbk = arguments[ 1 ]; + if ( !isFunction( clbk ) ) { + throw new TypeError( 'invalid argument. Second argument must be a function. Value: `'+clbk+'`.' ); + } + if ( nargs > 2 ) { + thisArg = arguments[ 2 ]; + } + } + if ( isCollection( src ) ) { + if ( src.length !== nfields ) { + throw new RangeError( 'invalid argument. Source is incompatible with number of tuple fields. Number of fields: `' + nfields + '`. Source length: `' + src.length + '`.' ); + } + tuple = namedtypedtuple( nfields, opts.dtype ); + if ( clbk ) { + for ( i = 0; i < nfields; i++ ) { + tuple[ i ] = clbk.call( thisArg, src[ i ], i, fields[ i ] ); + } + } else { + for ( i = 0; i < nfields; i++ ) { + tuple[ i ] = src[ i ]; + } + } + } else if ( isObject( src ) && HAS_ITERATOR_SYMBOL && isFunction( src[ ITERATOR_SYMBOL ] ) ) { + it = src[ ITERATOR_SYMBOL ](); + if ( !isFunction( it.next ) ) { + throw new TypeError( 'invalid argument. First argument must be an array-like object or an iterable.' ); + } + if ( clbk ) { + tmp = fromIteratorMap( fields, it, clbk, thisArg ); + } else { + tmp = fromIterator( it ); + } + tuple = namedtypedtuple( tmp, opts.dtype ); + } else { + throw new TypeError( 'invalid argument. First argument must be an array-like object or an iterable. Value: `' + src + '`.' ); + } + return tuple; + } + }); /** * Creates a new tuple from an object containing tuple fields. From c3bfcc1e5ff20ee0f46f36e5273e0b2c1b7482e6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 21:06:21 -0700 Subject: [PATCH 0386/1062] Add package meta data --- .../utils/named-typed-tuple/package.json | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/package.json diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/package.json b/lib/node_modules/@stdlib/utils/named-typed-tuple/package.json new file mode 100644 index 000000000000..e89992ead645 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/utils/named-typed-tuple", + "version": "0.0.0", + "description": "Named typed tuple.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "data structures", + "data structure", + "data", + "structure", + "collection", + "tuple", + "named", + "typed", + "array", + "typed-array", + "list", + "object" + ], + "__stdlib__": {} +} From 041c7ed5fa0aaecd64ef2b28880e1fde80a48d64 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 21:28:45 -0700 Subject: [PATCH 0387/1062] Add REPL text --- .../utils/named-typed-tuple/docs/repl.txt | 196 ++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt new file mode 100644 index 000000000000..f5245bb852ec --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -0,0 +1,196 @@ + +{{alias}}( names[, options] ) + Returns a named typed tuple factory. + + Named typed tuples may be one the following data types: + + - float64: double-precision floating-point numbers (IEEE 754) + - float32: single-precision floating-point numbers (IEEE 754) + - int32: 32-bit two's complement signed integers + - uint32: 32-bit unsigned integers + - int16: 16-bit two's complement signed integers + - uint16: 16-bit unsigned integers + - int8: 8-bit two's complement signed integers + - uint8: 8-bit unsigned integers + - uint8c: 8-bit unsigned integers clamped to 0-255 + + Parameters + ---------- + names: Array + Field (property) names. + + options: Object (optional) + Function options. + + options.dtype: string (optional) + Default tuple data type. Default: 'float64'. + + options.name: string (optional) + Tuple name. Default: 'tuple'. + + Returns + ------- + factory: Function + Named typed tuple factory. + + Examples + -------- + > var opts = {}; + > opts.name = 'Point'; + > var factory = {{alias}}( [ 'x', 'y' ], opts ); + > var tuple = factory(); + + +factory() + Returns a named typed tuple of the default data type. + + Returns + ------- + tuple: TypedArray + Named typed tuple. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > p = factory(); + > p.x + 0.0 + > p.y + 0.0 + > p[ 0 ] + 0.0 + > p[ 1 ] + 0.0 + + +factory( dtype ) + Returns a named typed tuple of the specified data type. + + Parameters + ---------- + dtype: string + Tuple data type. + + Returns + ------- + tuple: TypedArray + Named typed tuple. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > p = factory( 'int32' ); + > p.x + 0 + > p.y + 0 + > p[ 0 ] + 0 + > p[ 1 ] + 0 + + +factory( typedarray[, dtype] ) + Creates a named typed tuple from a typed array. + + Parameters + ---------- + typedarray: TypedArray + Typed array from which to generate a named typed tuple. + + dtype: string (optional) + Tuple data type. + + Returns + ------- + tuple: TypedArray + Named typed tuple. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > p = factory( {{alias:@stdlib/array/float64}}[ 1.0, -1.0 ] ); + > p.x + 1.0 + > p.y + -1.0 + > p[ 0 ] + 1.0 + > p[ 1 ] + -1.0 + + +factory( obj[, dtype] ) + Creates a named typed tuple from an array-like object or iterable. + + Parameters + ---------- + obj: Object + Array-like object or iterable from which to generate a named typed + tuple. + + dtype: string (optional) + Tuple data type. + + Returns + ------- + tuple: TypedArray + Named typed tuple. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > p = factory( [ 1, -1 ], 'int32' ); + > p.x + 1 + > p.y + -1 + > p[ 0 ] + 1 + > p[ 1 ] + -1 + + +factory( buffer[, byteOffset][, dtype] ) + Returns a named typed tuple view of an ArrayBuffer. + + The view length equals the number of tuple fields. + + Parameters + ---------- + buffer: ArrayBuffer + Underlying ArrayBuffer. + + byteOffset: integer (optional) + Integer byte offset specifying the location of the first tuple element. + Default: 0. + + dtype: string (optional) + Tuple data type. + + Returns + ------- + tuple: TypedArray + Named typed tuple. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > var buf = new {{alias:@stdlib/array/buffer}}( 16 ); + > var p = factory( buf, 4, 'float32' ); + > p.x + 0.0 + > p.y + 0.0 + > p[ 0 ] + 0.0 + > p[ 1 ] + 0.0 + + +factory.from( TODO ) +tuple. + + See Also + -------- + From e825db76d5b1c98d5642084b30056b4bd7c1a10f Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 23:05:48 -0700 Subject: [PATCH 0388/1062] Add V8 numerical stability bug --- docs/misc/built_in_math_bugs.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/misc/built_in_math_bugs.md b/docs/misc/built_in_math_bugs.md index 5de133e4a529..efc49a40a716 100644 --- a/docs/misc/built_in_math_bugs.md +++ b/docs/misc/built_in_math_bugs.md @@ -1,7 +1,28 @@ + + # Bugs > Bugs in the built-in `Math` namespace. +- [Numeric instability of transcendental functions][@bug:v8:436] - [Sine and cosine in V8][@bug:v8:3006] - [Trigonometric functions in V8][@bug:chromium:320097] - [V8 not IEEE 754-2008 compliant][@bug:v8:3089] @@ -56,6 +77,8 @@ +[@bug:v8:436]: https://bugs.chromium.org/p/v8/issues/detail?id=436 + [@bug:v8:3006]: https://bugs.chromium.org/p/v8/issues/detail?id=3006 [@bug:chromium:320097]: https://bugs.chromium.org/p/chromium/issues/detail?id=320097 From c3575a79bd59c6b09c30860b359befcdc324c7eb Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 23:55:18 -0700 Subject: [PATCH 0389/1062] Update intro --- .../@stdlib/utils/named-typed-tuple/docs/repl.txt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index f5245bb852ec..ce950ecd7a67 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -1,7 +1,14 @@ -{{alias}}( names[, options] ) +{{alias}}( fields[, options] ) Returns a named typed tuple factory. + Named tuples assign a property name, and thus a meaning, to each position in + a tuple and allow for more readable, self-documenting code. + + Named typed tuples can be used wherever typed arrays are used, with the + added benefit that they allow accessing fields by both field name and + position index. + Named typed tuples may be one the following data types: - float64: double-precision floating-point numbers (IEEE 754) @@ -16,14 +23,16 @@ Parameters ---------- - names: Array + fields: Array Field (property) names. options: Object (optional) Function options. options.dtype: string (optional) - Default tuple data type. Default: 'float64'. + Default tuple data type. If a data type is not provided to a named typed + tuple factory, this option specifies the underlying tuple data type. + Default: 'float64'. options.name: string (optional) Tuple name. Default: 'tuple'. From b356ca7a7cfaa43421359f1f75e7da0db5726885 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 17 Sep 2018 23:56:54 -0700 Subject: [PATCH 0390/1062] Reorder methods --- .../utils/named-typed-tuple/lib/main.js | 66 ++++++++++--------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 8681f269273b..e1a6f77ea04a 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -1077,38 +1077,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } } - /** - * Creates a new tuple from a variable number of arguments. - * - * @private - * @name of - * @memberof namedtypedtuple - * @type {Function} - * @param {...number} element - tuple elements - * @throws {TypeError} `this` must be the host tuple factory - * @throws {RangeError} incompatible number of arguments - * @returns {TypedArray} new tuple - */ - defineProperty( namedtypedtuple, 'of', { - 'configurable': false, - 'enumerable': false, - 'writable': false, - 'value': function of() { // eslint-disable-line no-restricted-syntax - var args; - var i; - if ( this !== namedtypedtuple ) { - throw new TypeError( 'invalid invocation. `this` is not the host tuple factory.' ); - } - if ( arguments.length !== nfields ) { - throw new RangeError( 'invalid invocation. Number of arguments incompatible with number of tuple fields. Number of fields: `' + nfields + '`. Number of arguments: `' + arguments.length + '`.' ); - } - args = []; - for ( i = 0; i < arguments.length; i++ ) { - args.push( arguments[ i ] ); - } - return namedtypedtuple( args ); - } - }); + // Note: keep the following methods in alphabetical order... /** * Creates a new tuple from an array-like object or an iterable. @@ -1218,6 +1187,39 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } }); + /** + * Creates a new tuple from a variable number of arguments. + * + * @private + * @name of + * @memberof namedtypedtuple + * @type {Function} + * @param {...number} element - tuple elements + * @throws {TypeError} `this` must be the host tuple factory + * @throws {RangeError} incompatible number of arguments + * @returns {TypedArray} new tuple + */ + defineProperty( namedtypedtuple, 'of', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': function of() { // eslint-disable-line no-restricted-syntax + var args; + var i; + if ( this !== namedtypedtuple ) { + throw new TypeError( 'invalid invocation. `this` is not the host tuple factory.' ); + } + if ( arguments.length !== nfields ) { + throw new RangeError( 'invalid invocation. Number of arguments incompatible with number of tuple fields. Number of fields: `' + nfields + '`. Number of arguments: `' + arguments.length + '`.' ); + } + args = []; + for ( i = 0; i < arguments.length; i++ ) { + args.push( arguments[ i ] ); + } + return namedtypedtuple( args ); + } + }); + return namedtypedtuple; } From 7f079de35daef35eadd9d118efdd57dab15eb2b8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 00:07:11 -0700 Subject: [PATCH 0391/1062] Document static methods --- .../utils/named-typed-tuple/docs/repl.txt | 97 ++++++++++++++++++- .../utils/named-typed-tuple/lib/main.js | 2 +- 2 files changed, 97 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index ce950ecd7a67..ec698304a1a8 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -197,7 +197,102 @@ factory( buffer[, byteOffset][, dtype] ) 0.0 -factory.from( TODO ) +factory.from( src[, map[, thisArg]] ) + Creates a new named typed tuple from an array-like object or an iterable. + + Parameters + ---------- + src: ArrayLike|Iterable + Source of tuple elements. + + map: Function (optional) + Callback to invoke for each source element. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + tuple: TypedArray + Named typed tuple. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > function mapFcn( v ) { return v * 2.0; }; + > var tuple = factory.from( [ 1.0, -1.0 ], mapFcn ); + > p.x + 2.0 + > p.y + -2.0 + > p[ 0 ] + 2.0 + > p[ 1 ] + -2.0 + + +factory.fromObject( obj[, map[, thisArg]] ) + Creates a new named typed tuple from an object containing tuple fields. + + Parameters + ---------- + obj: Object + Source object. + + map: Function (optional) + Callback to invoke for each source object tuple field. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + tuple: TypedArray + Named typed tuple. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > var tuple = factory.fromObject( { 'x': 2.0, 'y': -2.0 } ); + > p.x + 2.0 + > p.y + -2.0 + > p[ 0 ] + 2.0 + > p[ 1 ] + -2.0 + + +factory.of( element0[, element1[, element2[, ...]]] ) + Creates a new named typed tuple from a variable number of arguments. + + The number of arguments *must* equal the number of tuple fields. + + Parameters + ---------- + element: ...number + Tuple elements. + + Returns + ------- + tuple: TypedArray + Named typed tuple. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > var tuple = factory.of( 2.0, -2.0 ); + > p.x + 2.0 + > p.y + -2.0 + > p[ 0 ] + 2.0 + > p[ 1 ] + -2.0 + + tuple. See Also diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index e1a6f77ea04a..906a5f341a44 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -1088,7 +1088,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @type {Function} * @param {(ArrayLikeObject|Iterable)} src - array-like object or iterable * @param {Function} [clbk] - callback to invoke for each source element - * @param {*} [thisArg] - context + * @param {*} [thisArg] - callback execution context * @throws {TypeError} `this` must be the host tuple factory * @throws {TypeError} first argument must be an array-like object or an iterable * @throws {RangeError} source must be compatible with tuple length From 314aab7f726def0fb6b626442226f2090f96ffa6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 00:12:36 -0700 Subject: [PATCH 0392/1062] Add support for providing a clbk to apply to each source object tuple field --- .../utils/named-typed-tuple/lib/main.js | 37 ++++++++++++++++--- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 906a5f341a44..1454cad1cb7d 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -1160,8 +1160,11 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @memberof namedtypedtuple * @type {Function} * @param {Object} obj - source object + * @param {Function} [clbk] - callback to invoke for each source object tuple field + * @param {*} [thisArg] - callback execution context * @throws {TypeError} `this` must be the host tuple factory - * @throws {TypeError} must provide an object + * @throws {TypeError} first argument must be an object + * @throws {TypeError} second argument must be a function * @returns {TypedArray} new tuple */ defineProperty( namedtypedtuple, 'fromObject', { @@ -1169,18 +1172,42 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi 'enumerable': false, 'writable': false, 'value': function fromObject( obj ) { // eslint-disable-line no-restricted-syntax + var thisArg; + var nargs; var tuple; + var clbk; + var f; var i; if ( this !== namedtypedtuple ) { throw new TypeError( 'invalid invocation. `this` is not the host tuple factory.' ); } if ( obj === null || typeof obj !== 'object' ) { - throw new TypeError( 'invalid argument. Must provide an object. Value: `' + obj + '`.' ); + throw new TypeError( 'invalid argument. First argument must be an object. Value: `' + obj + '`.' ); + } + nargs = arguments.length; + if ( nargs > 1 ) { + clbk = arguments[ 1 ]; + if ( !isFunction( clbk ) ) { + throw new TypeError( 'invalid argument. Second argument must be a function. Value: `'+clbk+'`.' ); + } + if ( nargs > 2 ) { + thisArg = arguments[ 2 ]; + } } tuple = namedtypedtuple( nfields, opts.dtype ); - for ( i = 0; i < nfields; i++ ) { - if ( hasOwnProp( obj, fields[ i ] ) ) { - tuple[ i ] = obj[ fields[ i ] ]; + if ( clbk ) { + for ( i = 0; i < nfields; i++ ) { + f = fields[ i ]; + if ( hasOwnProp( obj, f ) ) { + tuple[ i ] = clbk.call( thisArg, obj[ f ], f ); + } + } + } else { + for ( i = 0; i < nfields; i++ ) { + f = fields[ i ]; + if ( hasOwnProp( obj, f ) ) { + tuple[ i ] = obj[ f ]; + } } } return tuple; From dd763a8ab4f32464ba18769e2e0d7d1644be67bb Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 00:25:50 -0700 Subject: [PATCH 0393/1062] Document properties --- .../utils/named-typed-tuple/docs/repl.txt | 75 ++++++++++++++++++- .../utils/named-typed-tuple/lib/main.js | 2 + 2 files changed, 73 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index ec698304a1a8..381fa2012bba 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -220,7 +220,7 @@ factory.from( src[, map[, thisArg]] ) -------- > var factory = {{alias}}( [ 'x', 'y' ] ); > function mapFcn( v ) { return v * 2.0; }; - > var tuple = factory.from( [ 1.0, -1.0 ], mapFcn ); + > var p = factory.from( [ 1.0, -1.0 ], mapFcn ); > p.x 2.0 > p.y @@ -253,7 +253,7 @@ factory.fromObject( obj[, map[, thisArg]] ) Examples -------- > var factory = {{alias}}( [ 'x', 'y' ] ); - > var tuple = factory.fromObject( { 'x': 2.0, 'y': -2.0 } ); + > var p = factory.fromObject( { 'x': 2.0, 'y': -2.0 } ); > p.x 2.0 > p.y @@ -282,7 +282,7 @@ factory.of( element0[, element1[, element2[, ...]]] ) Examples -------- > var factory = {{alias}}( [ 'x', 'y' ] ); - > var tuple = factory.of( 2.0, -2.0 ); + > var p = factory.of( 2.0, -2.0 ); > p.x 2.0 > p.y @@ -293,7 +293,74 @@ factory.of( element0[, element1[, element2[, ...]]] ) -2.0 -tuple. +tuple.BYTES_PER_ELEMENT + Size (in bytes) of each tuple element. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > var p = factory( [ 1.0, -1.0 ] ); + > p.BYTES_PER_ELEMENT + 8 + + +tuple.buffer + Returns the underlying ArrayBuffer. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > var p = factory( [ 1.0, -1.0 ] ); + > p.buffer + + + +tuple.byteLength + Length (in bytes) of the tuple. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > var p = factory( [ 1.0, -1.0 ] ); + > p.byteLength + 16 + + +tuple.byteOffset + Offset (in bytes) of a tuple from the start of its underlying ArrayBuffer. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > var p = factory( [ 1.0, -1.0 ] ); + > p.byteOffset + 0 + + +tuple.length + Tuple length (i.e., number of elements). + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > var p = factory( [ 1.0, -1.0 ] ); + > p.length + 2 + + +tuple.name + Tuple name. + + Examples + -------- + > var opts = { 'name': 'Point' }; + > var factory = {{alias}}( [ 'x', 'y' ], opts ); + > var p = factory( [ 1.0, -1.0 ] ); + > p.name + 'Point' + + +tuple. See Also -------- diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 1454cad1cb7d..d8f1dad8634a 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -177,6 +177,8 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi indices.push( i ); setReadWriteAccessor( tuple, fields[ i ], getter( i ), setter( i ) ); } + tuple.name = opts.name; + // Note: keep in alphabetical order tuple.entries = entries; tuple.every = every; From 7a7cdcbf46766abc302f0e78a10936e0705c25b2 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 00:37:48 -0700 Subject: [PATCH 0394/1062] Document additional methods --- .../utils/named-typed-tuple/docs/repl.txt | 62 ++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 381fa2012bba..537aa58eb48d 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -200,6 +200,12 @@ factory( buffer[, byteOffset][, dtype] ) factory.from( src[, map[, thisArg]] ) Creates a new named typed tuple from an array-like object or an iterable. + A callback is provided the following arguments: + + - value: source value. + - index: source index. + - field: tuple field. + Parameters ---------- src: ArrayLike|Iterable @@ -234,6 +240,11 @@ factory.from( src[, map[, thisArg]] ) factory.fromObject( obj[, map[, thisArg]] ) Creates a new named typed tuple from an object containing tuple fields. + A callback is provided the following arguments: + + - value: source object tuple field value. + - field: source object tuple field name. + Parameters ---------- obj: Object @@ -360,7 +371,56 @@ tuple.name 'Point' -tuple. +tuple.copyWithin( target, start[, end] ) + Copies a sequence of elements within the tuple starting at `start` and + ending at `end` (non-inclusive) to the position starting at `target`. + + Parameters + ---------- + target: integer + Target start index position. + + start: integer + Source start index position. + + end: integer (optional) + Source end index position. Default: tuple.length. + + Returns + ------- + tuple: TypedArray + Modified tuple. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z', 'w', 'v' ] ); + > var p = factory( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] ); + > p.copyWithin( 3, 0, 2 ); + > p.w + 2.0 + > p.v + -2.0 + + +tuple.entries() + Returns an iterator for iterating over tuple key-value pairs. + + Returns + ------- + it: Iterator + Iterator for iterating over tuple key-value pairs. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > var p = factory( [ 1.0, -1.0 ] ); + > it = p.entries(); + > it.next().value + [ 1.0, 0, 'x' ] + > it.next().value + [ -1.0, 1, 'y' ] + > it.next().done + true See Also -------- From 1af71b704df84d7bcc2f573137b1329763582a4f Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 00:52:11 -0700 Subject: [PATCH 0395/1062] Refactor by converting method to accessor --- .../utils/named-typed-tuple/docs/repl.txt | 69 ++++++++++++++++++- .../utils/named-typed-tuple/examples/index.js | 2 +- .../utils/named-typed-tuple/lib/main.js | 61 ++++++++-------- 3 files changed, 100 insertions(+), 32 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 537aa58eb48d..b4e7e756c92d 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -371,6 +371,45 @@ tuple.name 'Point' +tuple.fields + Returns the list of tuple fields. + + Returns + ------- + fields: Array + Tuple fields. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > var p = factory( [ 1.0, -1.0 ] ); + > p.fields + [ 'x', 'y' ] + + +tuple.orderedFields + Returns the list of tuple fields in index order. + + Returns + ------- + fields: Array + Tuple fields. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > var p = factory( [ 1.0, -1.0 ] ); + > p[ 0 ] + 1.0 + > p.sort(); + > p[ 0 ] + -1.0 + > p.fields + [ 'x', 'y' ] + > p.orderedFields + [ 'y', 'x' ] + + tuple.copyWithin( target, start[, end] ) Copies a sequence of elements within the tuple starting at `start` and ending at `end` (non-inclusive) to the position starting at `target`. @@ -407,7 +446,7 @@ tuple.entries() Returns ------- - it: Iterator + iter: Iterator Iterator for iterating over tuple key-value pairs. Examples @@ -422,6 +461,34 @@ tuple.entries() > it.next().done true + +tuple.every( predicate[, thisArg] ) + Tests whether all tuple elements pass a test implemented by a predicate + function. + + Parameters + ---------- + predicate: Function + Predicate function which tests tuple elements. If the function returns + a truthy value, a tuple elements passes; otherwise, a tuple element + fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether all tuple elements pass. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > var p = factory( [ 1.0, -1.0 ] ); + > function predicate( v ) { return ( v >= 0.0 ); }; + > p.every( predicate ) + false + See Also -------- diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js index 992fe28b74d4..9122ff579fe7 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js @@ -51,7 +51,7 @@ p.sort(); console.log( 'p[0]=%d, p[1]=%d, x=%d, y=%d', p[ 0 ], p[ 1 ], p.x, p.y ); // Retrieve the tuple fields in index order: -console.log( p.fields( true ) ); +console.log( p.orderedFields ); // Serialize the tuple as a string: console.log( p.toString() ); diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index d8f1dad8634a..003a346c3a87 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -28,7 +28,6 @@ var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' ); var isFunction = require( '@stdlib/assert/is-function' ); var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive; var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; -var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; var isObject = require( '@stdlib/assert/is-object' ); var isCollection = require( '@stdlib/assert/is-collection' ); var hasOwnProp = require( '@stdlib/assert/has-own-property' ); @@ -38,6 +37,7 @@ var typedarray = require( '@stdlib/array/typed' ); var Int8Array = require( '@stdlib/array/int8' ); var getDtype = require( '@stdlib/array/dtype' ); var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); var defineProperty = require( '@stdlib/utils/define-property' ); var floor = require( '@stdlib/math/base/special/floor' ); var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); @@ -178,11 +178,12 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi setReadWriteAccessor( tuple, fields[ i ], getter( i ), setter( i ) ); } tuple.name = opts.name; + setReadOnlyAccessor( tuple, 'fields', getFields ); + setReadOnlyAccessor( tuple, 'orderedFields', orderedFields ); // Note: keep in alphabetical order tuple.entries = entries; tuple.every = every; - tuple.fields = getFields; tuple.filter = filter; tuple.find = find; tuple.findIndex = findIndex; @@ -245,6 +246,34 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } } + /** + * Returns the list of tuple fields. + * + * @private + * @memberof tuple + * @returns {StringArray} tuple fields + */ + function getFields() { + return fields.slice(); + } + + /** + * Returns the list of tuple fields in index order. + * + * @private + * @memberof tuple + * @returns {StringArray} tuple fields + */ + function orderedFields() { + var out; + var i; + out = fields.slice(); + for ( i = 0; i < nfields; i++ ) { + out[ i ] = fields[ indices[i] ]; + } + return out; + } + // Note: keep functions which follow in alphabetical order /** @@ -372,34 +401,6 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi return true; } - /** - * Returns the list of tuple fields. - * - * @private - * @memberof tuple - * @param {boolean} [ordered=false] - boolean indicating whether to return tuple fields according to index order - * @throws {TypeError} `this` must be the host tuple - * @throws {TypeError} must provide a boolean - * @returns {StringArray} tuple fields - */ - function getFields( ordered ) { - var out; - var i; - if ( this !== tuple ) { // eslint-disable-line no-invalid-this - throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); - } - if ( arguments.length && !isBoolean( ordered ) ) { - throw new TypeError( 'invalid argument. Must provide a boolean. Value: `' + ordered + '`.' ); - } - out = fields.slice(); - if ( ordered ) { - for ( i = 0; i < nfields; i++ ) { - out[ i ] = fields[ indices[i] ]; - } - } - return out; - } - /** * Creates a new tuple which includes those elements for which a predicate function returns a truthy value. * From 003fc531d29c3f6b9f29120fce2d213569dd30c7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 00:52:53 -0700 Subject: [PATCH 0396/1062] Disable lint rule --- lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 003a346c3a87..3a62c52be4e5 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -88,7 +88,7 @@ var HAS_ITERATOR_SYMBOL = hasIteratorSymbolSupport(); * y = p.y; * // returns -1.0 */ -function factory( names, options ) { // eslint-disable-line max-lines-per-function +function factory( names, options ) { // eslint-disable-line max-lines-per-function, stdlib/jsdoc-require-throws-tags var nfields; var fields; var opts; From f874e7cf7bb6b37bc0c5db0776cbc4dce7243ca3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 01:07:32 -0700 Subject: [PATCH 0397/1062] Rename parameter and document methods --- .../utils/named-typed-tuple/docs/repl.txt | 84 ++++++++++++++++++- .../utils/named-typed-tuple/lib/main.js | 12 +-- 2 files changed, 89 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index b4e7e756c92d..c662e3973a3b 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -466,11 +466,18 @@ tuple.every( predicate[, thisArg] ) Tests whether all tuple elements pass a test implemented by a predicate function. + A predicate function is provided the following arguments: + + - value: tuple element. + - index: tuple index. + - field: tuple field name. + - tuple: tuple on which the method is invoked. + Parameters ---------- predicate: Function Predicate function which tests tuple elements. If the function returns - a truthy value, a tuple elements passes; otherwise, a tuple element + a truthy value, a tuple element passes; otherwise, a tuple element fails. thisArg: Any (optional) @@ -489,6 +496,81 @@ tuple.every( predicate[, thisArg] ) > p.every( predicate ) false + +tuple.fill( value[, start[, end]] ) + Fills a tuple from a start index to an end index (non-inclusive) with a + provided value. + + Parameters + ---------- + value: number + Fill value. + + start: integer (optional) + Start index. If less than zero, the start index is resolved relative to + the last tuple element. Default: 0. + + end: integer (optional) + End index (non-inclusive). If less than zero, the end index is resolved + relative to the last tuple element. Default: tuple.length. + + Returns + ------- + tuple: TypedArray + Modified tuple. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > var p = factory( [ 1.0, -1.0 ] ); + > p.fill( 2.0 ); + > p.x + 2.0 + > p.y + 2.0 + + +tuple.filter( predicate[, thisArg] ) + Creates a new tuple which includes those elements for which a predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: tuple element. + - index: tuple index. + - field: tuple field name. + - tuple: tuple on which the method is invoked. + + The returned tuple has the same data type as the host tuple. + + If a predicate function does not return a truthy value for any tuple + element, the function returns `null`. + + Parameters + ---------- + predicate: Function + Predicate function which filters tuple elements. If the function returns + a truthy value, a tuple element is included in the output tuple; + otherwise, a tuple element is not included in the output tuple. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + tuple: TypedArray + A new named typed tuple. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p1 = factory( [ 1.0, 0.0, -1.0 ] ); + > function predicate( v ) { return ( v >= 0.0 ); }; + > var p2 = p1.filter( predicate ); + > p2.fields + [ 'x', 'y' ] + + See Also -------- diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 3a62c52be4e5..8de14b4fa01f 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -407,17 +407,17 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * ## Notes * * - The returned tuple has the same data type as the host tuple. - * - If a predicate does not return a truthy value for any tuple element, the function returns `null`. + * - If a predicate function does not return a truthy value for any tuple element, the function returns `null`. * * @private * @memberof tuple - * @param {Function} fcn - filter function + * @param {Function} predicate - filter (predicate) function * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple * @throws {TypeError} first argument must be a function * @returns {(TypedArray|null)} new tuple */ - function filter( fcn, thisArg ) { + function filter( predicate, thisArg ) { var bool; var tmp; var f; @@ -425,13 +425,13 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } - if ( !isFunction( fcn ) ) { - throw new TypeError( 'invalid argument. First argument must be a function. Value: `' + fcn + '`.' ); + if ( !isFunction( predicate ) ) { + throw new TypeError( 'invalid argument. First argument must be a function. Value: `' + predicate + '`.' ); } tmp = []; f = []; for ( i = 0; i < nfields; i++ ) { - bool = fcn.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); + bool = predicate.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); if ( bool ) { f.push( fields[ indices[i] ] ); tmp.push( tuple[ i ] ); From 3b16394b2687ff6d60154b29883e2570dab852ee Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 01:15:35 -0700 Subject: [PATCH 0398/1062] Document methods --- .../utils/named-typed-tuple/docs/repl.txt | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index c662e3973a3b..76efae0591b6 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -571,6 +571,77 @@ tuple.filter( predicate[, thisArg] ) [ 'x', 'y' ] +tuple.find( predicate[, thisArg] ) + Returns the first tuple element for which a provided predicate function + returns a truthy value. + + A predicate function is provided the following arguments: + + - value: tuple element. + - index: tuple index. + - field: tuple field name. + - tuple: tuple on which the method is invoked. + + If a predicate function never returns a truthy value, the function returns + `undefined`. + + Parameters + ---------- + predicate: Function + Predicate function which tests tuple elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + value: number|undefined + Tuple element. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p = factory( [ 1.0, 0.0, -1.0 ] ); + > function predicate( v ) { return ( v < 0.0 ); }; + > var v = p.find( predicate ) + -1.0 + + +tuple.findIndex( predicate[, thisArg] ) + Returns the index of the first tuple element for which a provided predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: tuple element. + - index: tuple index. + - field: tuple field name. + - tuple: tuple on which the method is invoked. + + If a predicate function never returns a truthy value, the function returns + `-1`. + + Parameters + ---------- + predicate: Function + Predicate function which tests tuple elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + idx: number + Tuple element. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p = factory( [ 1.0, 0.0, -1.0 ] ); + > function predicate( v ) { return ( v < 0.0 ); }; + > var idx = p.find( predicate ) + 2 + See Also -------- From 8236f04266028ac73aeb7648124aea97634ce171 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 01:18:49 -0700 Subject: [PATCH 0399/1062] Add `findField` method --- .../utils/named-typed-tuple/docs/repl.txt | 42 +++++++++++++++++-- .../utils/named-typed-tuple/lib/main.js | 35 ++++++++++++++++ 2 files changed, 74 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 76efae0591b6..ec0d4a9390ef 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -631,17 +631,53 @@ tuple.findIndex( predicate[, thisArg] ) Returns ------- - idx: number - Tuple element. + idx: integer + Tuple index. Examples -------- > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); > var p = factory( [ 1.0, 0.0, -1.0 ] ); > function predicate( v ) { return ( v < 0.0 ); }; - > var idx = p.find( predicate ) + > var idx = p.findIndex( predicate ) 2 + +tuple.findField( predicate[, thisArg] ) + Returns the field of the first tuple element for which a provided predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: tuple element. + - index: tuple index. + - field: tuple field name. + - tuple: tuple on which the method is invoked. + + If a predicate function never returns a truthy value, the function returns + `undefined`. + + Parameters + ---------- + predicate: Function + Predicate function which tests tuple elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + field: string|undefined + Tuple field. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p = factory( [ 1.0, 0.0, -1.0 ] ); + > function predicate( v ) { return ( v < 0.0 ); }; + > var f = p.findField( predicate ) + 'z' + See Also -------- diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 8de14b4fa01f..c6ccadc9eea1 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -187,6 +187,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi tuple.filter = filter; tuple.find = find; tuple.findIndex = findIndex; + tuple.findField = findField; tuple.forEach = forEach; tuple.ind2key = ind2key; tuple.key2ind = key2ind; @@ -507,6 +508,40 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi return -1; } + /** + * Returns the field of the first tuple element for which a provided predicate function returns a truthy value. + * + * ## Notes + * + * - If the predicate function never returns a truthy value, the function returns `undefined`. + * + * @private + * @memberof tuple + * @param {Function} predicate - predicate function + * @param {*} [thisArg] - execution context + * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} first argument must be a function + * @returns {(string|void)} tuple field name or `undefined` + */ + function findField( predicate, thisArg ) { + var bool; + var f; + var i; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + if ( !isFunction( predicate ) ) { + throw new TypeError( 'invalid argument. First argument must be a function. Value: `' + predicate + '`.' ); + } + for ( i = 0; i < nfields; i++ ) { + f = fields[ indices[ i ] ]; + bool = predicate.call( thisArg, tuple[ i ], i, f, tuple ); + if ( bool ) { + return f; + } + } + } + /** * Invokes a callback for each tuple element. * From 6b7e8959e7c2e2e9684a0966b2326b16e5e4dc5f Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 01:40:10 -0700 Subject: [PATCH 0400/1062] Document methods --- .../utils/named-typed-tuple/docs/repl.txt | 106 ++++++++++++++++-- 1 file changed, 98 insertions(+), 8 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index ec0d4a9390ef..5b2e83df94ba 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -476,9 +476,8 @@ tuple.every( predicate[, thisArg] ) Parameters ---------- predicate: Function - Predicate function which tests tuple elements. If the function returns - a truthy value, a tuple element passes; otherwise, a tuple element - fails. + Predicate function which tests tuple elements. If the method returns a + truthy value, a tuple element passes; otherwise, a tuple element fails. thisArg: Any (optional) Callback execution context. @@ -544,12 +543,12 @@ tuple.filter( predicate[, thisArg] ) The returned tuple has the same data type as the host tuple. If a predicate function does not return a truthy value for any tuple - element, the function returns `null`. + element, the method returns `null`. Parameters ---------- predicate: Function - Predicate function which filters tuple elements. If the function returns + Predicate function which filters tuple elements. If the method returns a truthy value, a tuple element is included in the output tuple; otherwise, a tuple element is not included in the output tuple. @@ -582,7 +581,7 @@ tuple.find( predicate[, thisArg] ) - field: tuple field name. - tuple: tuple on which the method is invoked. - If a predicate function never returns a truthy value, the function returns + If a predicate function never returns a truthy value, the method returns `undefined`. Parameters @@ -618,7 +617,7 @@ tuple.findIndex( predicate[, thisArg] ) - field: tuple field name. - tuple: tuple on which the method is invoked. - If a predicate function never returns a truthy value, the function returns + If a predicate function never returns a truthy value, the method returns `-1`. Parameters @@ -654,7 +653,7 @@ tuple.findField( predicate[, thisArg] ) - field: tuple field name. - tuple: tuple on which the method is invoked. - If a predicate function never returns a truthy value, the function returns + If a predicate function never returns a truthy value, the method returns `undefined`. Parameters @@ -678,6 +677,97 @@ tuple.findField( predicate[, thisArg] ) > var f = p.findField( predicate ) 'z' + +tuple.forEach( fcn[, thisArg] ) + Invokes a callback for each tuple element. + + A provided function is provided the following arguments: + + - value: tuple element. + - index: tuple index. + - field: tuple field name. + - tuple: tuple on which the method is invoked. + + Parameters + ---------- + fcn: Function + Function to invoke for each tuple element. + + thisArg: Any (optional) + Callback execution context. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p = factory( [ 1, 0, -1 ], 'int32' ); + > var str = ''; + > function fcn( v, i, f ) { str += f + '=' + v + ' '; }; + > p.forEach( fcn ); + > str + 'x=1 y=0 z=-1' + + +tuple.includes( searchElement[, fromIndex] ) + Returns a boolean indicating whether a tuple includes a search element. + + The method does not distinguish between signed and unsigned zero. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Tuple index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last tuple + element. Default: 0. + + Returns + ------- + bool: boolean + Boolean indicating whether a tuple includes a search element. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p = factory( [ 1.0, 0.0, -1.0 ] ); + > var bool = p.includes( 2.0 ) + false + > bool = p.includes( -1.0 ) + true + + +tuple.indexOf( searchElement[, fromIndex] ) + Returns the index of the first tuple element equal to a search element. + + The method does not distinguish between signed and unsigned zero. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Tuple index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last tuple + element. Default: 0. + + Returns + ------- + idx: integer + Tuple index. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p = factory( [ 1.0, 0.0, -1.0 ] ); + > var idx = p.indexOf( 2.0 ) + -1 + > idx = p.indexOf( -1.0 ) + 2 + See Also -------- From e983680ce2ab8f110773bb294e92cb2bff8a8538 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 01:40:49 -0700 Subject: [PATCH 0401/1062] Update description --- lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 5b2e83df94ba..525eaa0120cf 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -738,7 +738,8 @@ tuple.includes( searchElement[, fromIndex] ) tuple.indexOf( searchElement[, fromIndex] ) - Returns the index of the first tuple element equal to a search element. + Returns the index of the first tuple element strictly equal to a search + element. The method does not distinguish between signed and unsigned zero. From af06d7b84994fd209e755dfadcc98a32114be2ba Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 01:43:39 -0700 Subject: [PATCH 0402/1062] Remove parameters sections --- .../@stdlib/utils/named-typed-tuple/docs/repl.txt | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 525eaa0120cf..3493d576a606 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -374,11 +374,6 @@ tuple.name tuple.fields Returns the list of tuple fields. - Returns - ------- - fields: Array - Tuple fields. - Examples -------- > var factory = {{alias}}( [ 'x', 'y' ] ); @@ -390,11 +385,6 @@ tuple.fields tuple.orderedFields Returns the list of tuple fields in index order. - Returns - ------- - fields: Array - Tuple fields. - Examples -------- > var factory = {{alias}}( [ 'x', 'y' ] ); From b57baea2a30c0d62c45971e45a92cb1de2f609a0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 01:50:48 -0700 Subject: [PATCH 0403/1062] Update mustache dev dep --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7f269c11c179..84ee6f1c0784 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "mathjax-node": "^2.0.1", "mathjax-node-sre": "^3.0.0", "mkdirp": "^0.5.1", - "mustache": "^2.2.1", + "mustache": "^3.0.0", "parse-link-header": "^1.0.1", "plato": "^1.5.0", "proxyquire": "^2.0.0", From e0604f44f33f64a0da49d5042f9158637c147ac9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 03:38:02 -0700 Subject: [PATCH 0404/1062] Document methods --- .../utils/named-typed-tuple/docs/repl.txt | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 3493d576a606..22e0ad9b9b0a 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -759,6 +759,122 @@ tuple.indexOf( searchElement[, fromIndex] ) > idx = p.indexOf( -1.0 ) 2 + +tuple.join( [separator] ) + Serializes a tuple by joining all tuple elements as a string. + + Parameters + ---------- + separator: string (optional) + String delineating tuple elements. Default: ','. + + Returns + ------- + str: string + Tuple serialized as a string. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p = factory( [ 1, 0, -1 ], 'int32' ); + > p.join( '|' ) + '1|0|-1' + + +tuple.keys() + Returns an iterator for iterating over tuple keys. + + Returns + ------- + iter: Iterator + Iterator for iterating over tuple keys. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > var p = factory( [ 1.0, -1.0 ] ); + > it = p.entries(); + > it.next().value + [ 0, 'x' ] + > it.next().value + [ 1, 'y' ] + > it.next().done + true + + +tuple.lastIndexOf( searchElement[, fromIndex] ) + Returns the index of the last tuple element strictly equal to a search + element. + + The method iterates from the last tuple element to the first tuple element. + + The method does not distinguish between signed and unsigned zero. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Tuple index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last tuple + element. Default: 0. + + Returns + ------- + idx: integer + Tuple index. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z', 'w', 'v' ] ); + > var p = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] ); + > var idx = p.lastIndexOf( 2.0 ) + -1 + > idx = p.lastIndexOf( 0.0 ) + 3 + + +tuple.map( fcn[, thisArg] ) + Maps each tuple element to an element in a new tuple. + + A provided function is provided the following arguments: + + - value: tuple element. + - index: tuple index. + - field: tuple field name. + - tuple: tuple on which the method is invoked. + + The returned tuple has the same data type as the host tuple. + + Parameters + ---------- + fcn: Function + Function which maps tuple elements to elements in the new tuple. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + tuple: TypedArray + A new named typed tuple. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p1 = factory( [ 1.0, 0.0, -1.0 ] ); + > function fcn( v ) { return v * 2.0; }; + > var p2 = p1.map( fcn ); + > p2.x + 2.0 + > p2.y + 0.0 + > p2.z + -2.0 + See Also -------- From cfa8ff7964d369f8a3d217e42fd2f7d0cd7e5ac5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 03:42:05 -0700 Subject: [PATCH 0405/1062] Document methods --- .../utils/named-typed-tuple/docs/repl.txt | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 22e0ad9b9b0a..ed37edd205f5 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -760,6 +760,27 @@ tuple.indexOf( searchElement[, fromIndex] ) 2 +tuple.ind2key( ind ) + Converts a tuple index to a field name. + + Parameters + ---------- + ind: integer + Tuple index. + + Returns + ------- + field: string + Field name. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p = factory( [ 1.0, 0.0, -1.0 ] ); + > p.ind2key( 1 ) + 'y' + + tuple.join( [separator] ) Serializes a tuple by joining all tuple elements as a string. @@ -802,6 +823,29 @@ tuple.keys() true +tuple.key2ind( field ) + Converts a field name to tuple index. + + If provided an unknown field name, the method returns `-1`. + + Parameters + ---------- + field: string + Tuple field name. + + Returns + ------- + idx: integer + Tuple index. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p = factory( [ 1.0, 0.0, -1.0 ] ); + > p.key2ind( 'y' ) + 1 + + tuple.lastIndexOf( searchElement[, fromIndex] ) Returns the index of the last tuple element strictly equal to a search element. From 1996fed0b2d34c5897b1c33967bdbf5664b5c0c8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 03:59:12 -0700 Subject: [PATCH 0406/1062] Document methods --- .../utils/named-typed-tuple/docs/repl.txt | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index ed37edd205f5..d4932f6fe698 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -919,6 +919,90 @@ tuple.map( fcn[, thisArg] ) > p2.z -2.0 + +tuple.reduce( fcn[, initialValue] ) + Applies a function against an accumulator and each element in a tuple and + returns the accumulated result. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current tuple element. + - index: index of the current tuple element. + - field: field name corresponding to the current tuple element. + - tuple: tuple on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the first tuple element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the first tuple element as the first argument and the second tuple + element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p = factory( [ 1.0, 0.0, -1.0 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = p.reduce( fcn, 0.0 ) + 2.0 + + +tuple.reduceRight( fcn[, initialValue] ) + Applies a function against an accumulator and each element in a tuple and + returns the accumulated result, iterating from right to left. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current tuple element. + - index: index of the current tuple element. + - field: field name corresponding to the current tuple element. + - tuple: tuple on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the first tuple element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the first tuple element as the first argument and the second tuple + element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p = factory( [ 1.0, 0.0, -1.0 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = p.reduceRight( fcn, 0.0 ) + 2.0 + See Also -------- From 06f63140dea0df8e9deaabe1a9ef329ab8bc85b8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 04:02:52 -0700 Subject: [PATCH 0407/1062] Document method --- .../utils/named-typed-tuple/docs/repl.txt | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index d4932f6fe698..2000f9e4e1cf 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -1003,6 +1003,31 @@ tuple.reduceRight( fcn[, initialValue] ) > var v = p.reduceRight( fcn, 0.0 ) 2.0 + +tuple.reverse() + Reverses a tuple *in-place*. + + This method mutates the tuple on which the method is invoked. + + Returns + ------- + tuple: TypedArray + Modified tuple. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p = factory( [ 1.0, 0.0, -1.0 ] ); + > p[ 0 ] + 1.0 + > p.x + 1.0 + > p.reverse(); + > p[ 0 ] + -1.0 + > p.x + 1.0 + See Also -------- From 814183b224990e4718302013950296a3cc6e23e2 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 13:20:13 -0700 Subject: [PATCH 0408/1062] Fix example --- lib/node_modules/@stdlib/array/complex64/lib/main.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/array/complex64/lib/main.js b/lib/node_modules/@stdlib/array/complex64/lib/main.js index dc4f8ce07372..5afdb9705807 100644 --- a/lib/node_modules/@stdlib/array/complex64/lib/main.js +++ b/lib/node_modules/@stdlib/array/complex64/lib/main.js @@ -574,15 +574,15 @@ defineProperty( Complex64Array.prototype, 'BYTES_PER_ELEMENT', { * * // Set the array elements: * arr.set( new Complex64( 1.0, 1.0 ), 0 ); -* arr.set( new Complex64( 2.0, 2.0 ), 0 ); -* arr.set( new Complex64( 3.0, 3.0 ), 0 ); -* arr.set( new Complex64( 4.0, 4.0 ), 0 ); +* arr.set( new Complex64( 2.0, 2.0 ), 1 ); +* arr.set( new Complex64( 3.0, 3.0 ), 2 ); +* arr.set( new Complex64( 4.0, 4.0 ), 3 ); * * // Copy the first two elements to the last two elements: * arr.copyWithin( 2, 0, 2 ); * * // Get the last array element: -* var z = arr.get( 2 ); +* var z = arr.get( 3 ); * * var re = real( z ); * // returns 2.0 @@ -598,7 +598,7 @@ defineProperty( Complex64Array.prototype, 'copyWithin', { if ( !isComplexArray( this ) ) { throw new TypeError( 'invalid invocation. `this` is not a complex number array.' ); } - // FIXME: prefer a functional `copyWithin` implementation which addresses lack of universal browser support (e.g., IE11 and Safari) + // FIXME: prefer a functional `copyWithin` implementation which addresses lack of universal browser support (e.g., IE11 and Safari) or ensure that typed arrays are polyfilled if ( arguments.length === 2 ) { this._buffer.copyWithin( target*2, start*2 ); } else { From 9b331a1c4afdc4fdd7e78fcc1d6c328c265f806f Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 13:32:27 -0700 Subject: [PATCH 0409/1062] Document methods --- .../utils/named-typed-tuple/docs/repl.txt | 67 +++++++++++++++++++ .../utils/named-typed-tuple/lib/main.js | 8 +-- 2 files changed, 71 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 2000f9e4e1cf..376e57818178 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -1028,6 +1028,73 @@ tuple.reverse() > p.x 1.0 + +tuple.set( arr[, offset] ) + Sets tuple elements. + + Parameters + ---------- + arr: ArrayLike + Source array containing tuple values to set. + + offset: integer (optional) + Tuple index at which to start writing values. Default: 0. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p = factory( [ 1.0, 0.0, -1.0 ] ); + > p[ 1 ] + 0.0 + > p.y + 0.0 + > p.set( [ -2.0, 2.0 ], 1 ); + > p[ 1 ] + -2.0 + > p.y + -2.0 + > p[ 2 ] + 2.0 + > p.z + 2.0 + + +tuple.slice( [begin[, end]] ) + Copies tuple elements to a new tuple with the same underlying data type as + the host tuple. + + If the method is unable to resolve indices to a non-empty tuple subsequence, + the method returns `null`. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last tuple element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last tuple element. Default: tuple.length. + + Returns + ------- + tuple: TypedArray + A new named typed tuple. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p1 = factory( [ 1.0, 0.0, -1.0 ] ); + > p1.fields + [ 'x', 'y', 'z' ] + > var p2 = p1.slice( 1 ); + > p2.fields + [ 'y', 'z' ] + > p2.y + 0.0 + > p2.z + -1.0 + See Also -------- diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index c6ccadc9eea1..ebc672884c83 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -848,8 +848,8 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * * @private * @memberof tuple - * @param {integer} [begin] - start element index (inclusive) - * @param {integer} [end] - end element index (exclusive) + * @param {integer} [begin=0] - start element index (inclusive) + * @param {integer} [end=tuple.length] - end element index (exclusive) * @throws {TypeError} `this` must be the host tuple * @throws {TypeError} first argument must be an integer * @throws {TypeError} second argument must be an integer @@ -1012,8 +1012,8 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * * @private * @memberof tuple - * @param {integer} [begin] - start element index (inclusive) - * @param {integer} [end] - end element index (exclusive) + * @param {integer} [begin=0] - start element index (inclusive) + * @param {integer} [end=tuple.length] - end element index (exclusive) * @throws {TypeError} `this` must be the host tuple * @throws {TypeError} first argument must be an integer * @throws {TypeError} second argument must be an integer From 9d1399f7f9ae24a4e381d395020b4bbc24ef07f4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 13:36:14 -0700 Subject: [PATCH 0410/1062] Fix descriptions --- .../utils/named-typed-tuple/docs/repl.txt | 44 +++++++++++++++++-- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 376e57818178..09340b1adba2 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -466,8 +466,9 @@ tuple.every( predicate[, thisArg] ) Parameters ---------- predicate: Function - Predicate function which tests tuple elements. If the method returns a - truthy value, a tuple element passes; otherwise, a tuple element fails. + Predicate function which tests tuple elements. If a predicate function + returns a truthy value, a tuple element passes; otherwise, a tuple + element fails. thisArg: Any (optional) Callback execution context. @@ -538,8 +539,8 @@ tuple.filter( predicate[, thisArg] ) Parameters ---------- predicate: Function - Predicate function which filters tuple elements. If the method returns - a truthy value, a tuple element is included in the output tuple; + Predicate function which filters tuple elements. If a predicate function + returns a truthy value, a tuple element is included in the output tuple; otherwise, a tuple element is not included in the output tuple. thisArg: Any (optional) @@ -1095,6 +1096,41 @@ tuple.slice( [begin[, end]] ) > p2.z -1.0 + +tuple.some( predicate[, thisArg] ) + Tests whether at least one tuple element passes a test implemented by a + predicate function. + + A predicate function is provided the following arguments: + + - value: tuple element. + - index: tuple index. + - field: tuple field name. + - tuple: tuple on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests tuple elements. If a predicate function + returns a truthy value, a tuple element passes; otherwise, a tuple + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether at least one tuple element passes. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > var p = factory( [ 1.0, -1.0 ] ); + > function predicate( v ) { return ( v < 0.0 ); }; + > p.some( predicate ) + true + See Also -------- From 1164f45817df6b453aaa13ff6ce1587ae851f95f Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 13:46:27 -0700 Subject: [PATCH 0411/1062] Document method --- .../utils/named-typed-tuple/docs/repl.txt | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 09340b1adba2..b7ee24a5daab 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -1131,6 +1131,47 @@ tuple.some( predicate[, thisArg] ) > p.some( predicate ) true + +tuple.sort( [compareFunction] ) + Sorts a tuple *in-place*. + + Sorting a tuple does *not* affect field assignments. Accessing a tuple field + before and after sorting will always return the same tuple element. However, + this behavior is generally not true when accessing tuple elements according + to tuple index. In summary, sorting affects index order but not field + assignments. + + This method mutates the tuple on which the method is invoked. + + Parameters + ---------- + compareFunction: Function (optional) + Function which specifies the sort order. The default sort order is for + tuple elements to be sorted in ascending order. + + Returns + ------- + tuple: TypedArray + Modified tuple. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z', 'w', 'v' ] ); + > var p = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] ); + > p.sort(); + > p.orderedFields + [ 'v', 'y', 'z', 'x', 'w' ] + > p[ 0 ] + -2.0 + > p.x + 1.0 + > p[ 1 ] + -1.0 + > p.y + -1.0 + > p.key2ind( 'x' ) + 3 + See Also -------- From 5ff3acbf89cdd3ee610eb022eb34b61d1fc1c42e Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 14:10:58 -0700 Subject: [PATCH 0412/1062] Reorder and document methods --- .../utils/named-typed-tuple/docs/repl.txt | 161 ++++++++++++++++++ .../utils/named-typed-tuple/lib/main.js | 32 ++-- 2 files changed, 177 insertions(+), 16 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index b7ee24a5daab..234650aa13ec 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -1172,6 +1172,167 @@ tuple.sort( [compareFunction] ) > p.key2ind( 'x' ) 3 + +tuple.subarray( [begin[, end]] ) + Creates a new typed array over the same underlying ArrayBuffer and with the + same underlying data type as the host tuple. + + If the function is unable to resolve indices to a non-empty tuple + subsequence, the function returns an empty typed array. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last tuple element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last tuple element. Default: tuple.length. + + Returns + ------- + arr: TypedArray + A new typed array view. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z', 'w', 'v' ] ); + > var p = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] ); + > var arr = p.subarray( 2 ) + + > arr[ 0 ] + 0.0 + > arr[ 1 ] + 2.0 + > arr[ 2 ] + -2.0 + > arr.length + 3 + + +tuple.subtuple( [begin[, end]] ) + Creates a new named typed tuple over the same underlying ArrayBuffer and + with the same underlying data type as the host tuple. + + If the function is unable to resolve indices to a non-empty tuple + subsequence, the function returns `null`. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last tuple element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last tuple element. Default: tuple.length. + + Returns + ------- + tuple: TypedArray|null + A new named typed tuple. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z', 'w', 'v' ] ); + > var p1 = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] ); + > var p2 = p1.subtuple( 2 ); + > p2.fields + [ 'z', 'w', 'v' ] + > p2[ 0 ] + 0.0 + > p2.z + 0.0 + > p2[ 1 ] + 2.0 + > p2.w + 2.0 + > p2[ 2 ] + -2.0 + > p2.v + -2.0 + > p2.length + 3 + + +tuple.toJSON() + Serializes a tuple as JSON. + + Returns + ------- + obj: Object + A tuple JSON representation. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p = factory( [ 1.0, -1.0, 0.0 ] ); + > p.toJSON() + { 'x': 1.0, 'y': -1.0, 'z': 0.0 } + + +tuple.toLocaleString( [locales[, options]] ) + Serializes a tuple as a locale-specific string. + + Parameters + ---------- + locales: string|Array (optional) + A BCP 47 language tag, or an array of such tags. + + options: Object (optional) + Options. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p = factory( [ 1.0, -1.0, 0.0 ] ); + > p.toLocaleString() + '1,-1,0' + + +tuple.toString() + Serializes a tuple as a string. + + Returns + ------- + str: string + A tuple string representation. + + Examples + -------- + > opts = { 'name': 'Point' }; + > var factory = {{alias}}( [ 'x', 'y', 'z' ], opts ); + > var p = factory( [ 1.0, -1.0, 0.0 ] ); + > p.toString() + 'Point(x=1, y=-1, z=0)' + + +tuple.values() + Returns an iterator for iterating over tuple elements. + + Returns + ------- + iter: Iterator + Iterator for iterating over tuple elements. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y' ] ); + > var p = factory( [ 1.0, -1.0 ] ); + > it = p.values(); + > it.next().value + 1.0 + > it.next().value + -1.0 + > it.next().done + true + See Also -------- diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index ebc672884c83..c689a5fc5c94 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -1067,50 +1067,50 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } /** - * Serializes a tuple as a string. + * Serializes a tuple as JSON. * * @private * @memberof tuple * @throws {TypeError} `this` must be the host tuple - * @returns {string} tuple string representation + * @returns {JSON} tuple JSON representation */ - function toString() { + function toJSON() { var out; var i; if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } - out = opts.name + '('; + out = {}; for ( i = 0; i < nfields; i++ ) { - out += fields[ i ]; - out += '='; - out += tuple[ indices[ i ] ]; - if ( i < nfields-1 ) { - out += ', '; - } + out[ fields[i] ] = tuple[ indices[i] ]; } - out += ')'; return out; } /** - * Serializes a tuple as JSON. + * Serializes a tuple as a string. * * @private * @memberof tuple * @throws {TypeError} `this` must be the host tuple - * @returns {JSON} tuple JSON representation + * @returns {string} tuple string representation */ - function toJSON() { + function toString() { var out; var i; if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } - out = {}; + out = opts.name + '('; for ( i = 0; i < nfields; i++ ) { - out[ fields[i] ] = tuple[ indices[i] ]; + out += fields[ i ]; + out += '='; + out += tuple[ indices[ i ] ]; + if ( i < nfields-1 ) { + out += ', '; + } } + out += ')'; return out; } } From dfebfec08e5e4665ec0bbc444d743f4b4123b0bb Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 14:13:00 -0700 Subject: [PATCH 0413/1062] Update description --- .../@stdlib/utils/named-typed-tuple/docs/repl.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 234650aa13ec..a8f3fcb67e09 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -1146,8 +1146,8 @@ tuple.sort( [compareFunction] ) Parameters ---------- compareFunction: Function (optional) - Function which specifies the sort order. The default sort order is for - tuple elements to be sorted in ascending order. + Function which specifies the sort order. The default sort order is + ascending order. Returns ------- From fc7846fa154fe8a9f4dd6c29d876f4e6f9ac75a3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 14:16:44 -0700 Subject: [PATCH 0414/1062] Add TODO --- lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index c689a5fc5c94..09d456b9daab 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -1087,6 +1087,8 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi return out; } + // TODO: consider adding `toLocaleString()` in a manner similar to `toString()` below + /** * Serializes a tuple as a string. * From b87ef1ca6819daaddbeb500bf3b253f84634bcdb Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 14:45:12 -0700 Subject: [PATCH 0415/1062] Add README --- .../@stdlib/utils/named-typed-tuple/README.md | 157 ++++++++++++++++++ .../utils/named-typed-tuple/examples/index.js | 1 + 2 files changed, 158 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/README.md diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md new file mode 100644 index 000000000000..91d73aec1c05 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -0,0 +1,157 @@ + + +# Named Typed Tuple + +> Create a factory for generating named typed tuples. + + + +
+ +Named tuples assign a property name, and thus a meaning, to each position in a tuple and allow for more readable, self-documenting code. + +Named typed tuples can be used wherever [typed arrays][@stdlib/array/typed] are used, with the added benefit that they allow accessing fields by both field name and position index. + +
+ + + + + +
+ +## Usage + +```javascript +var namedtypedtuple = require( '@stdlib/utils/named-typed-tuple' ); +``` + + + +#### namedtypedtuple( fields\[, options] ) + +Returns a named typed tuple factory. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, -1.0 ] ); +``` + +The function accepts the following `options`: + +- **dtype**: default tuple data type. If a data type is not provided to a named typed tuple factory, this option specifies the underlying tuple data type. The following data types are supported: + + - `float64`: double-precision floating-point numbers (IEEE 754). + - `float32`: single-precision floating-point numbers (IEEE 754). + - `int32`: 32-bit two's complement signed integers. + - `uint32`: 32-bit unsigned integers. + - `int16`: 16-bit two's complement signed integers. + - `uint16`: 16-bit unsigned integers. + - `int8`: 8-bit two's complement signed integers. + - `uint8`: 8-bit unsigned integers. + - `uint8c`: 8-bit unsigned integers clamped to 0-255. + + Default: `'float64'`. + +- **name**: tuple name. Default: `'tuple'`. + +
+ + + + + +
+ +
+ + + + + +
+ +## Examples + + + +```javascript +var namedtypedtuple = require( '@stdlib/utils/named-typed-tuple' ); + +var fields = [ 'x', 'y' ]; +var opts = { + 'name': 'Point' +}; + +var Point = namedtypedtuple( fields, opts ); + +var p = new Point( [ 1.0, -1.0 ] ); + +// Tuple elements can be accessed by index or name: +var x = p[ 0 ]; +// returns 1.0 + +x = p.x; +// returns 1.0 + +var y = p[ 1 ]; +// returns -1.0 + +y = p.y; +// returns -1.0 + +// Sort tuple elements while retaining name access: +p.sort(); +console.log( 'p[0]=%d, p[1]=%d, x=%d, y=%d', p[ 0 ], p[ 1 ], p.x, p.y ); + +// Retrieve the tuple fields in index order: +console.log( p.orderedFields ); +// => [ 'y', 'x' ] + +// Serialize the tuple as a string: +console.log( p.toString() ); + +// Serialize the tuple a JSON string: +console.log( JSON.stringify( p ) ); +``` + +
+ + + + + +
+ +
+ + + + + + + + diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js index 9122ff579fe7..df4e586433d9 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/examples/index.js @@ -52,6 +52,7 @@ console.log( 'p[0]=%d, p[1]=%d, x=%d, y=%d', p[ 0 ], p[ 1 ], p.x, p.y ); // Retrieve the tuple fields in index order: console.log( p.orderedFields ); +// => [ 'y', 'x' ] // Serialize the tuple as a string: console.log( p.toString() ); From 6110f2eb69bd2be4a4b50557d2a5fb52706cd19d Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 15:09:36 -0700 Subject: [PATCH 0416/1062] Add note regarding mutability --- .../@stdlib/utils/named-typed-tuple/README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 91d73aec1c05..dda3c65c4132 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -82,6 +82,21 @@ The function accepts the following `options`:
+## Notes + +- Named typed tuples are **not** immutable. In order to create immutable named typed tuples, use `Object.freeze()` on returned tuples. + + + + ```javascript + var factory = namedtypedtuple( [ 'x', 'y' ] ); + + var tuple = factory( [ 1.0, -1.0 ] ); + + // Make the tuple immutable: + tuple = Object.freeze( tuple ); + ``` +
From 82c8c284cdd5fe52d4a82f75cea95be499875eed Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 15:30:56 -0700 Subject: [PATCH 0417/1062] Document factory invocations --- .../@stdlib/utils/named-typed-tuple/README.md | 231 ++++++++++++++++++ 1 file changed, 231 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index dda3c65c4132..10d962b97a7d 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -54,6 +54,18 @@ Returns a named typed tuple factory. var factory = namedtypedtuple( [ 'x', 'y' ] ); var tuple = factory( [ 1.0, -1.0 ] ); + +var x = tuple.x; +// returns 1.0 + +x = tuple[ 0 ]; +// returns 1.0 + +var y = tuple.y; +// returns -1.0 + +y = tuple[ 1 ]; +// returns -1.0 ``` The function accepts the following `options`: @@ -74,6 +86,223 @@ The function accepts the following `options`: - **name**: tuple name. Default: `'tuple'`. + + +#### factory() + +Returns a named typed tuple of the default data type. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory(); + +var x = tuple.x; +// returns 0.0 + +x = tuple[ 0 ]; +// returns 0.0 + +var y = tuple.y; +// returns 0.0 + +y = tuple[ 1 ]; +// returns 0.0 +``` + +#### factory( dtype ) + +Returns a named typed tuple of the specified data type. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( 'int32' ); + +var x = tuple.x; +// returns 0 + +x = tuple[ 0 ]; +// returns 0 + +var y = tuple.y; +// returns 0 + +y = tuple[ 1 ]; +// returns 0 +``` + +#### factory( typedarray\[, dtype] ) + +Returns a named typed tuple from a [typed array][@stdlib/array/typed]. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( new Float64Array( [ 1.0, -1.0 ] ) ); + +var x = tuple.x; +// returns 1.0 + +x = tuple[ 0 ]; +// returns 1.0 + +var y = tuple.y; +// returns -1.0 + +y = tuple[ 1 ]; +// returns -1.0 +``` + +To override the default tuple data type (and potentially cast [typed array][@stdlib/array/typed] values to another data type), provide a `dtype`. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +// Cast double-precision floating-point numbers to signed 32-bit integers: +var tuple = factory( new Float64Array( [ 1.0, -1.0 ] ), 'int32' ); + +var x = tuple.x; +// returns 1 + +x = tuple[ 0 ]; +// returns 1 + +var y = tuple.y; +// returns -1 + +y = tuple[ 1 ]; +// returns -1 +``` + +#### factory( obj\[, dtype] ) + +Returns a named typed tuple from an array-like object or iterable. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, -1.0 ] ); + +var x = tuple.x; +// returns 1.0 + +x = tuple[ 0 ]; +// returns 1.0 + +var y = tuple.y; +// returns -1.0 + +y = tuple[ 1 ]; +// returns -1.0 +``` + +To override the default tuple data type, provide a `dtype`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, -1.0 ], 'int32' ); + +var x = tuple.x; +// returns 1 + +x = tuple[ 0 ]; +// returns 1 + +var y = tuple.y; +// returns -1 + +y = tuple[ 1 ]; +// returns -1 +``` + +#### factory( buffer\[, byteOffset]\[, dtype] ) + +Returns a named typed tuple view of an [`ArrayBuffer`][@stdlib/array/buffer] where the view length equals the number of tuple fields. + +```javascript +var ArrayBuffer = require( '@stdlib/array/buffer' ); + +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var buf = new ArrayBuffer( 32 ); + +// Create a tuple view of the first 16 bytes (8 bytes per double): +var tuple = factory( buf ); + +var x = tuple.x; +// returns 0.0 + +x = tuple[ 0 ]; +// returns 0.0 + +var y = tuple.y; +// returns 0.0 + +y = tuple[ 1 ]; +// returns 0.0 + +// Create a tuple view of the last 16 bytes: +tuple = factory( buf, 16 ); + +x = tuple.x; +// returns 0.0 + +x = tuple[ 0 ]; +// returns 0.0 + +y = tuple.y; +// returns 0.0 + +y = tuple[ 1 ]; +// returns 0.0 +``` + +To override the default tuple data type, provide a `dtype`. + +```javascript +var ArrayBuffer = require( '@stdlib/array/buffer' ); + +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var buf = new ArrayBuffer( 16 ); + +// Create a tuple view of the first 8 bytes (4 bytes per float): +var tuple = factory( buf, 'float32' ); + +var x = tuple.x; +// returns 0.0 + +x = tuple[ 0 ]; +// returns 0.0 + +var y = tuple.y; +// returns 0.0 + +y = tuple[ 1 ]; +// returns 0.0 + +// Create a tuple view of the last 8 bytes: +tuple = factory( buf, 8, 'float32' ); + +x = tuple.x; +// returns 0.0 + +x = tuple[ 0 ]; +// returns 0.0 + +y = tuple.y; +// returns 0.0 + +y = tuple[ 1 ]; +// returns 0.0 +``` + @@ -167,6 +396,8 @@ console.log( JSON.stringify( p ) ); [@stdlib/array/typed]: https://github.com/stdlib-js/stdlib +[@stdlib/array/buffer]: https://github.com/stdlib-js/stdlib + From dbd1a8f392b12cb95b9e55ad746def61f430af21 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 15:32:08 -0700 Subject: [PATCH 0418/1062] Update links --- lib/node_modules/@stdlib/array/complex64/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/array/complex64/README.md b/lib/node_modules/@stdlib/array/complex64/README.md index 32af5ca0c198..c5dec1494d41 100644 --- a/lib/node_modules/@stdlib/array/complex64/README.md +++ b/lib/node_modules/@stdlib/array/complex64/README.md @@ -65,7 +65,7 @@ var len = arr.length; #### Complex64Array( typedarray ) -Creates a 64-bit complex number array from a [typed array][mdn-typed-array] containing interleaves real and imaginary components. +Creates a 64-bit complex number array from a [typed array][@stdlib/array/typed] containing interleaves real and imaginary components. ```javascript var Float32Array = require( '@stdlib/array/float32' ); @@ -104,7 +104,7 @@ len = arr2.length; #### Complex64Array( buffer\[, byteOffset\[, length]] ) -Returns a 64-bit complex number array view of an [`ArrayBuffer`][mdn-arraybuffer]. +Returns a 64-bit complex number array view of an [`ArrayBuffer`][@stdlib/array/buffer]. ```javascript var ArrayBuffer = require( '@stdlib/array/buffer' ); @@ -792,7 +792,7 @@ A few notes: - If `i` is out-of-bounds, the method throws an error. - If a target array cannot accommodate all values (i.e., the length of source array plus `i` exceeds the target array length), the method throws an error. -- If provided a [typed array][mdn-typed-array] which shares an [`ArrayBuffer`][mdn-arraybuffer] with the target array, the method will intelligently copy the source range to the destination range. +- If provided a [typed array][@stdlib/array/typed] which shares an [`ArrayBuffer`][@stdlib/array/buffer] with the target array, the method will intelligently copy the source range to the destination range. @@ -806,7 +806,7 @@ A few notes: ## Notes -- While a `Complex64Array` _strives_ to maintain (but does not **guarantee**) consistency with [typed arrays][mdn-typed-array], significant deviations from ECMAScript-defined [typed array][mdn-typed-array] behavior are as follows: +- While a `Complex64Array` _strives_ to maintain (but does not **guarantee**) consistency with [typed arrays][@stdlib/array/typed], significant deviations from ECMAScript-defined [typed array][@stdlib/array/typed] behavior are as follows: - The constructor does **not** require the `new` operator. - The constructor and associated methods support a broader variety of input argument types in order to better accommodate complex number input. @@ -880,9 +880,9 @@ console.log( out ); diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index a8f3fcb67e09..45fa4a0c7f0a 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -275,14 +275,14 @@ factory.fromObject( obj[, map[, thisArg]] ) -2.0 -factory.of( element0[, element1[, element2[, ...]]] ) +factory.of( element0[, element1[, ...elementN]]] ) Creates a new named typed tuple from a variable number of arguments. The number of arguments *must* equal the number of tuple fields. Parameters ---------- - element: ...number + element: number Tuple elements. Returns From 7dd51b031100df7c7577ae7aa34198939b821153 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 16:30:29 -0700 Subject: [PATCH 0420/1062] Fix missing bracket --- lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 45fa4a0c7f0a..59d8b3fb78b5 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -275,7 +275,7 @@ factory.fromObject( obj[, map[, thisArg]] ) -2.0 -factory.of( element0[, element1[, ...elementN]]] ) +factory.of( element0[, element1[, ...[, elementN]]] ) Creates a new named typed tuple from a variable number of arguments. The number of arguments *must* equal the number of tuple fields. From d135ba02c8667be1b081977cf3c391baaf7e57e7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 16:31:10 -0700 Subject: [PATCH 0421/1062] Add horizontal rules --- lib/node_modules/@stdlib/utils/named-typed-tuple/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index a070bcb6d316..c92ac6cfb61e 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -501,6 +501,8 @@ y = tuple[ 1 ];
+* * * + ## Notes - Named typed tuples are **not** immutable. In order to create immutable named typed tuples, use `Object.freeze()` on returned tuples. @@ -524,6 +526,8 @@ y = tuple[ 1 ];
+* * * + ## Examples From 09f5b05be0b8fddcb7efc25a7f9af4990448b393 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 16:31:39 -0700 Subject: [PATCH 0422/1062] Update note --- lib/node_modules/@stdlib/utils/named-typed-tuple/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index c92ac6cfb61e..74d1be003604 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -505,7 +505,7 @@ y = tuple[ 1 ]; ## Notes -- Named typed tuples are **not** immutable. In order to create immutable named typed tuples, use `Object.freeze()` on returned tuples. +- Named typed tuples are **not** immutable. In order to create immutable named typed tuples, invoke `Object.freeze()` on returned tuples. From b2c5b97cc5238dfeff46c6df8c35e80be388becf Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 16:48:48 -0700 Subject: [PATCH 0423/1062] Document tuple properties --- .../@stdlib/utils/named-typed-tuple/README.md | 150 ++++++++++++++++++ .../utils/named-typed-tuple/docs/repl.txt | 2 +- 2 files changed, 151 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 74d1be003604..cffd71f5856e 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -493,6 +493,156 @@ y = tuple[ 1 ]; // returns -1.0 ``` +### Tuple + + + +#### tuple.BYTES_PER_ELEMENT + +Size (in bytes) of each tuple element. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, -1.0 ] ); + +var nbytes = tuple.BYTES_PER_ELEMENT; +// returns 8 +``` + + + +#### tuple.buffer + +Pointer to the underlying data buffer. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, -1.0 ] ); + +var buf = tuple.buffer; +// returns +``` + + + +#### tuple.byteLength + +Length (in bytes) of the tuple. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, -1.0 ] ); + +var nbytes = tuple.byteLength; +// returns 16 +``` + + + +#### tuple.byteOffset + +Offset (in bytes) of a tuple from the start of its underlying [`ArrayBuffer`][@stdlib/array/buffer]. + +```javascript +var ArrayBuffer = require( '@stdlib/array/buffer' ); + +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, -1.0 ] ); + +var offset = tuple.byteOffset; +// returns 0 + +var buf = new ArrayBuffer( 64 ); +tuple = factory( buf, 32 ); + +offset = tuple.byteOffset; +// returns 32 +``` + + + +#### tuple.length + +Number of tuple elements. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, -1.0 ] ); + +var len = tuple.length; +// returns 2 +``` + + + +#### tuple.name + +Tuple name. + +```javascript +// Create a tuple factory which generates tuples having the default tuple name: +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, -1.0 ] ); + +var n = tuple.name; +// returns 'tuple' + +// Create a tuple factory which generates tuples having a custom tuple name: +var opts = { + 'name': 'Point' +}; +factory = namedtypedtuple( [ 'x', 'y' ], opts ); + +tuple = factory( [ 1.0, -1.0 ] ); + +n = tuple.name; +// returns 'Point' +``` + + + +#### tuple.fields + +Returns the list of tuple fields. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, -1.0 ] ); + +var fields = tuple.fields; +// returns [ 'x', 'y' ] +``` + + + +#### tuple.orderedFields + +Returns the list of tuple fields in index order. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, -1.0 ] ); + +// Sort tuple elements in ascending order: +tuple.sort(); + +// Get the list of tuple fields: +var fields = tuple.fields; +// returns [ 'x', 'y' ] + +// Get the list of tuple fields in index order: +fields = tuple.orderedFields; +// returns [ 'y', 'x' ] +``` +
diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 59d8b3fb78b5..9632040f87a1 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -316,7 +316,7 @@ tuple.BYTES_PER_ELEMENT tuple.buffer - Returns the underlying ArrayBuffer. + Pointer to the underlying data buffer. Examples -------- From 0c3dba935e9244443de5d4448f41d66c9c9cd5a4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 16:50:28 -0700 Subject: [PATCH 0424/1062] Add horizontal rule --- lib/node_modules/@stdlib/utils/named-typed-tuple/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index cffd71f5856e..6dd192b6d551 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -493,6 +493,8 @@ y = tuple[ 1 ]; // returns -1.0 ``` +* * * + ### Tuple From 7e2383fa824f8146b157b8af42933e0178a05b14 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 17:27:17 -0700 Subject: [PATCH 0425/1062] Document methods --- .../@stdlib/utils/named-typed-tuple/README.md | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 6dd192b6d551..4d85f277e8f9 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -645,6 +645,153 @@ fields = tuple.orderedFields; // returns [ 'y', 'x' ] ``` + + +#### tuple.copyWithin( target, start\[, end] ) + +Copies a sequence of elements within the tuple starting at `start` and ending at `end` (non-inclusive) to the position starting at `target`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] ); + +var tuple = factory( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] ); + +var x = p.x; +// returns 2.0 + +var y = p.y; +// returns -2.0 + +// Copy the last two elements to the first two elements: +tuple.copyWithin( 0, 3 ); + +x = p.x; +// returns -1.0 + +y = p.y; +// returns 1.0 +``` + +By default, `end` equals the number of tuple elements (i.e., one more than the last tuple index). To limit the sequence length, provide an `end` argument. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] ); + +var tuple = factory( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] ); + +var w = p.w; +// returns -1.0 + +var v = p.v; +// returns 1.0 + +// Copy the first two elements to the last two elements: +tuple.copyWithin( 3, 0, 2 ); + +w = p.w; +// returns 2.0 + +v = p.v; +// returns -2.0 +``` + +When a `target`, `start`, and/or `end` index is negative, the respective index is determined relative to the last tuple element. The following example achieves the same behavior as the previous example: + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] ); + +var tuple = factory( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] ); + +var w = p.w; +// returns -1.0 + +var v = p.v; +// returns 1.0 + +// Copy the first two elements to the last two elements: +tuple.copyWithin( -2, -5, -3 ); + +w = p.w; +// returns 2.0 + +v = p.v; +// returns -2.0 +``` + + + +#### tuple.entries() + +Returns an iterator for iterating over tuple key-value pairs. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, -1.0 ] ); + +// Create an iterator: +var it = tuple.entries(); + +// Iterate over key-value pairs... +var v = it.next().value; +// returns [ 1.0, 0, 'x' ] + +v = it.next().value; +// returns [ -1.0, 1, 'y' ] + +var bool = it.next().done; +// returns true +``` + + + +#### tuple.every( predicate\[, thisArg] ) + +Tests whether all tuple elements pass a test implemented by a `predicate` function. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, -1.0 ] ); + +function predicate( v ) { + return ( v >= 0.0 ); +} + +var bool = tuple.every( predicate ); +// returns false +``` + +A `predicate` function is provided four arguments: + +- `value`: tuple element +- `index`: tuple index +- `field`: tuple field name +- `tuple`: tuple on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, 1.0 ] ); + +function predicate( v ) { + this.count += 1; + return ( v >= 0.0 ); +} + +var ctx = { + 'count': 0 +}; + +var bool = tuple.every( predicate, ctx ); +// returns true + +var n = ctx.count; +// returns 2 +``` +
From 8a6c9bfa81a64ce638121eafe3c7cc0144c987d9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 17:28:53 -0700 Subject: [PATCH 0426/1062] Fix examples --- .../@stdlib/utils/named-typed-tuple/README.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 4d85f277e8f9..d911e16a67f9 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -656,19 +656,19 @@ var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] ); var tuple = factory( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] ); -var x = p.x; +var x = tuple.x; // returns 2.0 -var y = p.y; +var y = tuple.y; // returns -2.0 // Copy the last two elements to the first two elements: tuple.copyWithin( 0, 3 ); -x = p.x; +x = tuple.x; // returns -1.0 -y = p.y; +y = tuple.y; // returns 1.0 ``` @@ -679,19 +679,19 @@ var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] ); var tuple = factory( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] ); -var w = p.w; +var w = tuple.w; // returns -1.0 -var v = p.v; +var v = tuple.v; // returns 1.0 // Copy the first two elements to the last two elements: tuple.copyWithin( 3, 0, 2 ); -w = p.w; +w = tuple.w; // returns 2.0 -v = p.v; +v = tuple.v; // returns -2.0 ``` @@ -702,19 +702,19 @@ var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] ); var tuple = factory( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] ); -var w = p.w; +var w = tuple.w; // returns -1.0 -var v = p.v; +var v = tuple.v; // returns 1.0 // Copy the first two elements to the last two elements: tuple.copyWithin( -2, -5, -3 ); -w = p.w; +w = tuple.w; // returns 2.0 -v = p.v; +v = tuple.v; // returns -2.0 ``` From 4ec56a98cb431e4a60dbfa43086721f9e6b42327 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 18:53:28 -0700 Subject: [PATCH 0427/1062] Document methods --- .../@stdlib/utils/named-typed-tuple/README.md | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index d911e16a67f9..d1c1fdc22d12 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -792,6 +792,128 @@ var n = ctx.count; // returns 2 ``` + + +#### tuple.fill( value\[, start\[, end]] ) + +Fills a tuple from a `start` index to an `end` index (non-inclusive) with a provided value. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory(); + +// Set all tuple elements to the same value: +tuple.fill( 2.0 ); + +var x = tuple.x; +// returns 2.0 + +var y = tuple.y; +// returns 2.0 + +// Set all tuple elements starting from the first index to the same value: +tuple.fill( 3.0, 1 ); + +x = tuple.x; +// returns 2.0 + +y = tuple.y; +// returns 3.0 + +// Set all tuple elements, except the last element, to the same value: +tuple.fill( 4.0, 0, tuple.length-1 ); + +x = tuple.x; +// returns 4.0 + +y = tuple.y; +// returns 3.0 +``` + +When a `start` and/or `end` index is negative, the respective index is determined relative to the last tuple element. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory(); + +// Set all tuple elements, except the last element, to the same value: +tuple.fill( 2.0, -tuple.length, -1 ); + +var x = tuple.x; +// returns 2.0 + +var y = tuple.y; +// returns 0.0 +``` + + + +#### tuple.filter( predicate\[, thisArg] ) + +Creates a new tuple (of the same data type as the host tuple) which includes those elements for which a `predicate` function returns a truthy value. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var p1 = factory( [ 1.0, 0.0, -1.0 ] ); + +function predicate( v ) { + return ( v >= 0.0 ); +} + +var p2 = p1.filter( predicate ); + +var f = p2.fields; +// returns [ 'x', 'y' ] +``` + +If a `predicate` function does not return a truthy value for any tuple element, the method returns `null`. + +```javascript + +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var p1 = factory( [ 1.0, 0.0, -1.0 ] ); + +function predicate( v ) { + return ( v >= 10.0 ); +} + +var p2 = p1.filter( predicate ); +// returns null +``` + +A `predicate` function is provided four arguments: + +- `value`: tuple element +- `index`: tuple index +- `field`: tuple field name +- `tuple`: tuple on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var p1 = factory( [ 1.0, 0.0, -1.0 ] ); + +function predicate( v ) { + this.count += 1; + return ( v >= 0.0 ); +} + +var ctx = { + 'count': 0 +}; + +var p2 = p1.filter( predicate, ctx ); + +var n = ctx.count; +// returns 3 +``` + From 5cf37c6ed21752cb43e4261fdb27c3684d30ce25 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 18:58:01 -0700 Subject: [PATCH 0428/1062] Add backticks --- lib/node_modules/@stdlib/utils/named-typed-tuple/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index d1c1fdc22d12..4c1e400ca5f2 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -796,7 +796,7 @@ var n = ctx.count; #### tuple.fill( value\[, start\[, end]] ) -Fills a tuple from a `start` index to an `end` index (non-inclusive) with a provided value. +Fills a tuple from a `start` index to an `end` index (non-inclusive) with a provided `value`. ```javascript var factory = namedtypedtuple( [ 'x', 'y' ] ); From 4a072063cb7b6f7c5c0467cafd1b19dd5a807ecc Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 18 Sep 2018 19:06:19 -0700 Subject: [PATCH 0429/1062] Document methods --- .../@stdlib/utils/named-typed-tuple/README.md | 193 +++++++++++++++++- 1 file changed, 192 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 4c1e400ca5f2..bce96e26b1e5 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -872,7 +872,6 @@ var f = p2.fields; If a `predicate` function does not return a truthy value for any tuple element, the method returns `null`. ```javascript - var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); var p1 = factory( [ 1.0, 0.0, -1.0 ] ); @@ -914,6 +913,198 @@ var n = ctx.count; // returns 3 ``` + + +#### tuple.find( predicate\[, thisArg] ) + +Returns the first tuple element for which a provided `predicate` function returns a truthy value. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +function predicate( v ) { + return ( v < 0.0 ); +} + +var v = tuple.find( predicate ); +// returns -1.0 +``` + +If a `predicate` function does not return a truthy value for any tuple element, the method returns `undefined`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +function predicate( v ) { + return ( v < -10.0 ); +} + +var v = tuple.find( predicate ); +// returns undefined +``` + +A `predicate` function is provided four arguments: + +- `value`: tuple element +- `index`: tuple index +- `field`: tuple field name +- `tuple`: tuple on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +function predicate( v ) { + this.count += 1; + return ( v < 0.0 ); +} + +var ctx = { + 'count': 0 +}; + +var v = tuple.find( predicate, ctx ); +// returns -1.0 + +var n = ctx.count; +// returns 3 +``` + + + +#### tuple.findIndex( predicate\[, thisArg] ) + +Returns the index of the first tuple element for which a provided `predicate` function returns a truthy value. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +function predicate( v ) { + return ( v < 0.0 ); +} + +var idx = tuple.findIndex( predicate ); +// returns 2 +``` + +If a `predicate` function does not return a truthy value for any tuple element, the method returns `-1`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +function predicate( v ) { + return ( v < -10.0 ); +} + +var idx = tuple.findIndex( predicate ); +// returns -1 +``` + +A `predicate` function is provided four arguments: + +- `value`: tuple element +- `index`: tuple index +- `field`: tuple field name +- `tuple`: tuple on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +function predicate( v ) { + this.count += 1; + return ( v < 0.0 ); +} + +var ctx = { + 'count': 0 +}; + +var idx = tuple.findIndex( predicate, ctx ); +// returns 2 + +var n = ctx.count; +// returns 3 +``` + + + +#### tuple.findField( predicate\[, thisArg] ) + +Returns the field of the first tuple element for which a provided `predicate` function returns a truthy value. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +function predicate( v ) { + return ( v < 0.0 ); +} + +var f = tuple.findField( predicate ); +// returns 'z' +``` + +If a `predicate` function does not return a truthy value for any tuple element, the method returns `undefined`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +function predicate( v ) { + return ( v < -10.0 ); +} + +var f = tuple.findField( predicate ); +// returns undefined +``` + +A `predicate` function is provided four arguments: + +- `value`: tuple element +- `index`: tuple index +- `field`: tuple field name +- `tuple`: tuple on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +function predicate( v ) { + this.count += 1; + return ( v < 0.0 ); +} + +var ctx = { + 'count': 0 +}; + +var f = tuple.findField( predicate, ctx ); +// returns 'z' + +var n = ctx.count; +// returns 3 +``` + From c24e7d3900dae4eb64b965d047aaabe141463a56 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 01:50:29 -0700 Subject: [PATCH 0430/1062] Document method --- TODO.md | 3 -- .../@stdlib/utils/named-typed-tuple/README.md | 54 +++++++++++++++++++ .../utils/named-typed-tuple/docs/repl.txt | 4 +- 3 files changed, 56 insertions(+), 5 deletions(-) diff --git a/TODO.md b/TODO.md index 6a9826370094..2bdb6b82c4d6 100644 --- a/TODO.md +++ b/TODO.md @@ -1635,7 +1635,6 @@ limitations under the License. 1. [ilogb](https://github.com/JuliaLang/openlibm/blob/master/src/s_ilogb.c) and [logb](https://github.com/JuliaLang/openlibm/blob/master/src/s_logb.c), although these may just be `float64-exponent` - 1. stream module (e.g., flow-split, flow-join, flow-mean) => /utils /math etc 1. [hdbscan](https://github.com/lmcinnes/hdbscan) @@ -1676,8 +1675,6 @@ limitations under the License. 1. [to-number](https://github.com/lodash/lodash/blob/4.1.1-npm-packages/lodash.curry/index.js#L1160) -1. global var detection - 1. feature detection [utils](https://github.com/williamkapke/node-compat-table/blob/gh-pages/testers.json) 1. port `https-server` diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index bce96e26b1e5..85b8c5923b41 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1105,6 +1105,60 @@ var n = ctx.count; // returns 3 ``` + + +#### tuple.forEach( fcn\[, thisArg] ) + +Invokes a callback for each tuple element. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ], 'int32' ); + +var str = ''; + +function fcn( v, i, f ) { + str += f + '=' + v; + if ( i < tuple.length-1 ) { + str += ' '; + } +} + +tuple.forEach( fcn ); + +console.log( str ); +// => 'x=1 y=0 z=-1' +``` + +The callback is provided four arguments: + +- `value`: tuple element +- `index`: tuple index +- `field`: tuple field name +- `tuple`: tuple on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ], 'int32' ); + +function fcn() { + this.count += 1; +} + +var ctx = { + 'count': 0 +}; + +tuple.forEach( fcn, ctx ); + +var n = ctx.count; +// returns 3 +``` + diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 9632040f87a1..8d7f19752031 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -691,11 +691,11 @@ tuple.forEach( fcn[, thisArg] ) -------- > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); > var p = factory( [ 1, 0, -1 ], 'int32' ); - > var str = ''; + > var str = ' '; > function fcn( v, i, f ) { str += f + '=' + v + ' '; }; > p.forEach( fcn ); > str - 'x=1 y=0 z=-1' + ' x=1 y=0 z=-1 ' tuple.includes( searchElement[, fromIndex] ) From ed2f54df821c818cfd5ae7117678a9b0a308c7ea Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 03:42:17 -0700 Subject: [PATCH 0431/1062] Document methods --- .../@stdlib/utils/named-typed-tuple/README.md | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 85b8c5923b41..62923ce3ad32 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1159,6 +1159,90 @@ var n = ctx.count; // returns 3 ``` + + +#### tuple.includes( searchElement\[, fromIndex] ) + +Returns a `boolean` indicating whether a tuple includes a search element. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var bool = tuple.includes( -1.0 ); +// returns true + +bool = tuple.includes( 2.0 ); +// returns false +``` + +By default, the method searches the entire tuple (`fromIndex = 0`). To begin searching from a specific tuple index, provide a `fromIndex`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var bool = tuple.includes( 1.0, 1 ); +// returns false +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last tuple element. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +bool = tuple.includes( 1.0, -2 ); +// returns false +``` + +The method does **not** distinguish between signed and unsigned zero. + + + +#### tuple.indexOf( searchElement\[, fromIndex] ) + +Returns the index of the first tuple element strictly equal to a search element. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var idx = tuple.indexOf( -1.0 ); +// returns 2 + +idx = tuple.indexOf( 2.0 ); +// returns -1 +``` + +By default, the method searches the entire tuple (`fromIndex = 0`). To begin searching from a specific tuple index, provide a `fromIndex`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var idx = tuple.indexOf( 1.0, 1 ); +// returns -1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last tuple element. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +idx = tuple.indexOf( 1.0, -2 ); +// returns -1 +``` + +The method does **not** distinguish between signed and unsigned zero. + From 3a7f44f9009a476eda74cba0d4cb9178487695ed Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 03:53:59 -0700 Subject: [PATCH 0432/1062] Document methods --- .../@stdlib/utils/named-typed-tuple/README.md | 129 ++++++++++++++++++ .../utils/named-typed-tuple/docs/repl.txt | 4 +- 2 files changed, 131 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 62923ce3ad32..438243284752 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1243,6 +1243,135 @@ idx = tuple.indexOf( 1.0, -2 ); The method does **not** distinguish between signed and unsigned zero. + + +#### tuple.ind2key( ind ) + +Converts a tuple index to a field name. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var field = tuple.ind2key( 1 ); +// returns 'y' + +field = tuple.ind2key( 100 ); +// returns undefined +``` + + + +#### tuple.join( \[separator] ) + +Serializes a tuple by joining all tuple elements as a string. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ], 'int32' ); + +var str = tuple.join(); +// returns '1,0,-1' +``` + +By default, the method delineates tuple elements using a comma `,`. To specify a custom separator, provide a `separator` string. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ], 'int32' ); + +var str = tuple.join( '|' ); +// returns '1|0|-1' +``` + + + +#### tuple.keys() + +Returns an iterator for iterating over tuple keys. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, -1.0 ] ); + +// Create an iterator: +var it = tuple.keys(); + +// Iterate over keys... +var v = it.next().value; +// returns [ 0, 'x' ] + +v = it.next().value; +// returns [ 1, 'y' ] + +var bool = it.next().done; +// returns true +``` + + + +#### tuple.key2ind( field ) + +Converts a field name to a tuple index. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var idx = tuple.key2ind( 'y' ); +// returns 1 + +idx = tuple.key2ind( 'foo' ); +// returns -1 +``` + + + +#### tuple.lastIndexOf( searchElement\[, fromIndex] ) + +Returns the index of the last tuple element strictly equal to a search element, iterating from right to left. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] ); + +var idx = tuple.lastIndexOf( 0.0 ); +// returns 3 + +idx = tuple.lastIndexOf( 2.0 ); +// returns -1 +``` + +By default, the method searches the entire tuple (`fromIndex = -1`). To begin searching from a specific tuple index, provide a `fromIndex`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] ); + +var idx = tuple.lastIndexOf( 0.0, 3 ); +// returns 1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last tuple element. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] ); + +var idx = tuple.lastIndexOf( 0.0, -2 ); +// returns 1 +``` + +The method does **not** distinguish between signed and unsigned zero. + diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 8d7f19752031..82afb8e80ef0 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -825,7 +825,7 @@ tuple.keys() tuple.key2ind( field ) - Converts a field name to tuple index. + Converts a field name to a tuple index. If provided an unknown field name, the method returns `-1`. @@ -865,7 +865,7 @@ tuple.lastIndexOf( searchElement[, fromIndex] ) fromIndex: integer (optional) Tuple index from which to begin searching. If provided a negative value, the method resolves the start index relative to the last tuple - element. Default: 0. + element. Default: -1. Returns ------- From 37eaed4c09c45d002121deba42773a1a4c39374c Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 03:57:14 -0700 Subject: [PATCH 0433/1062] Document method --- .../@stdlib/utils/named-typed-tuple/README.md | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 438243284752..388cc6ae7151 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1372,6 +1372,62 @@ var idx = tuple.lastIndexOf( 0.0, -2 ); The method does **not** distinguish between signed and unsigned zero. + + +#### tuple.map( fcn\[, thisArg] ) + +Maps each tuple element to an element in a new tuple. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var p1 = factory( [ 1.0, 0.0, -1.0 ] ); + +function fcn( v ) { + return v * 2.0; +} + +var p2 = p1.map( fcn ); + +var x = p2.x; +// returns 2.0 + +var y = p2.y; +// returns 0.0 + +var z = p2.z; +// returns -2.0 +``` + +A callback is provided four arguments: + +- `value`: tuple element +- `index`: tuple index +- `field`: tuple field name +- `tuple`: tuple on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var p1 = factory( [ 1.0, 0.0, -1.0 ] ); + +function fcn( v ) { + this.count += 1; + return v * 2.0; +} + +var ctx = { + 'count': 0 +}; + +var p2 = p1.map( fcn ); + +var n = ctx.count; +// returns 3 +``` + From 7a7707ea206e452449ead2f202c426f1e3c7b01e Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 03:57:50 -0700 Subject: [PATCH 0434/1062] Update description --- lib/node_modules/@stdlib/utils/named-typed-tuple/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 388cc6ae7151..2c1f53426c6d 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1376,7 +1376,7 @@ The method does **not** distinguish between signed and unsigned zero. #### tuple.map( fcn\[, thisArg] ) -Maps each tuple element to an element in a new tuple. +Maps each tuple element to an element in a new tuple having the same data type as the host tuple. ```javascript var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); From b6d1e67273848ce3185a31922e64ad82d9abc1d3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 04:02:27 -0700 Subject: [PATCH 0435/1062] Update example --- .../@stdlib/_tools/lint/repl-txt/examples/index.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/_tools/lint/repl-txt/examples/index.js b/lib/node_modules/@stdlib/_tools/lint/repl-txt/examples/index.js index 4834b5af75e5..1c8718f65a7e 100644 --- a/lib/node_modules/@stdlib/_tools/lint/repl-txt/examples/index.js +++ b/lib/node_modules/@stdlib/_tools/lint/repl-txt/examples/index.js @@ -20,12 +20,11 @@ var lint = require( './../lib' ); -lint({ - 'pattern': '**/lib/node_modules/@stdlib/utils/**/docs/repl.txt', - 'ignore': [ - '**/lib/node_modules/@stdlib/utils/parallel/docs/repl.txt' - ] -}, done ); +var opts = { + 'pattern': '**/utils/define-property/**/repl.txt' +}; + +lint( opts, done ); function done( error, errs ) { if ( error ) { From f9ea0633fc3d99856fa626e0be5de76315adca1c Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 04:05:43 -0700 Subject: [PATCH 0436/1062] Update example to avoid walking entire project --- .../@stdlib/_tools/lint/repl-txt/examples/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/_tools/lint/repl-txt/examples/index.js b/lib/node_modules/@stdlib/_tools/lint/repl-txt/examples/index.js index 1c8718f65a7e..4fb35fc1d98a 100644 --- a/lib/node_modules/@stdlib/_tools/lint/repl-txt/examples/index.js +++ b/lib/node_modules/@stdlib/_tools/lint/repl-txt/examples/index.js @@ -18,10 +18,12 @@ 'use strict'; +var resolve = require( 'path' ).resolve; var lint = require( './../lib' ); var opts = { - 'pattern': '**/utils/define-property/**/repl.txt' + 'dir': resolve( __dirname, '..', 'test' ), + 'pattern': '**/repl.txt' }; lint( opts, done ); From 76684f50b8a03eb4af6de453f84d30b7be7ff706 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 04:07:09 -0700 Subject: [PATCH 0437/1062] Update example to avoid searching entire project --- .../@stdlib/_tools/lint/repl-txt/README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/_tools/lint/repl-txt/README.md b/lib/node_modules/@stdlib/_tools/lint/repl-txt/README.md index c51118b679c1..097f3ec897ad 100644 --- a/lib/node_modules/@stdlib/_tools/lint/repl-txt/README.md +++ b/lib/node_modules/@stdlib/_tools/lint/repl-txt/README.md @@ -154,14 +154,15 @@ The function accepts the same `options` as `lint()` above. ```javascript +var join = require( 'path' ).join; var lint = require( '@stdlib/_tools/lint/repl-txt' ); -lint({ - 'pattern': '**/lib/node_modules/@stdlib/utils/**/docs/repl.txt', - 'ignore': [ - '**/lib/node_modules/@stdlib/utils/parallel/docs/repl.txt' - ] -}, done ); +var opts = { + 'dir': join( __dirname, 'test' ), + 'pattern': '**/repl.txt' +}; + +lint( opts, done ); function done( error, errs ) { if ( error ) { From 6b4e60658f23d631263d72cb8b2ba4e6abbce773 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 04:11:47 -0700 Subject: [PATCH 0438/1062] Disable lint rule --- .../_tools/eslint/rules/jsdoc-doctest-quote-props/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/_tools/eslint/rules/jsdoc-doctest-quote-props/README.md b/lib/node_modules/@stdlib/_tools/eslint/rules/jsdoc-doctest-quote-props/README.md index 573b0bb48cdc..a839edb0649e 100644 --- a/lib/node_modules/@stdlib/_tools/eslint/rules/jsdoc-doctest-quote-props/README.md +++ b/lib/node_modules/@stdlib/_tools/eslint/rules/jsdoc-doctest-quote-props/README.md @@ -42,7 +42,7 @@ var rule = require( '@stdlib/_tools/eslint/rules/jsdoc-doctest-quote-props' ); **Bad**: - + ```javascript var hasOwnProp = require( '@stdlib/assert/has-own-property' ); From 51944c651e0dace8dbc4e9fadfd9a16e8ae00593 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 04:24:26 -0700 Subject: [PATCH 0439/1062] Add support for negative indices and return `undefined` rather than throw --- .../@stdlib/utils/named-typed-tuple/README.md | 11 +++++++++ .../utils/named-typed-tuple/docs/repl.txt | 9 ++++++-- .../utils/named-typed-tuple/lib/main.js | 23 +++++++++++-------- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 2c1f53426c6d..f0590a49bf97 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1261,6 +1261,17 @@ field = tuple.ind2key( 100 ); // returns undefined ``` +If provided a negative index, the method resolves the index relative to the last tuple element. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var field = tuple.ind2key( -2 ); +// returns 'y' +``` + #### tuple.join( \[separator] ) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 82afb8e80ef0..4a7b8803ad28 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -764,14 +764,17 @@ tuple.indexOf( searchElement[, fromIndex] ) tuple.ind2key( ind ) Converts a tuple index to a field name. + If provided an out-of-bounds index, the method returns `undefined`. + Parameters ---------- ind: integer - Tuple index. + Tuple index. If less than zero, the method resolves the index relative + to the last tuple element. Returns ------- - field: string + field: string|undefined Field name. Examples @@ -780,6 +783,8 @@ tuple.ind2key( ind ) > var p = factory( [ 1.0, 0.0, -1.0 ] ); > p.ind2key( 1 ) 'y' + > p.ind2key( 100 ) + undefined tuple.join( [separator] ) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 09d456b9daab..498c38a3b3bf 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -26,7 +26,6 @@ var isStringArray = require( '@stdlib/assert/is-string-array' ).primitives; var isString = require( '@stdlib/assert/is-string' ).isPrimitive; var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' ); var isFunction = require( '@stdlib/assert/is-function' ); -var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive; var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; var isObject = require( '@stdlib/assert/is-object' ); var isCollection = require( '@stdlib/assert/is-collection' ); @@ -568,23 +567,29 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi /** * Converts a tuple index to a field name. * + * ## Notes + * + * - If provided an out-of-bounds index, the function returns `undefined`. + * - If provided a negative tuple index, the function resolves the index relative to the last tuple element. + * * @private * @memberof tuple - * @param {NonNegativeInteger} ind - tuple index + * @param {integer} ind - tuple index * @throws {TypeError} `this` must be the host tuple - * @throws {TypeError} first argument must be a nonnegative integer - * @throws {RangeError} index cannot exceed tuple dimensions - * @returns {string} field name + * @returns {(string|void)} field name or undefined */ function ind2key( ind ) { if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } - if ( !isNonNegativeInteger( ind ) ) { - throw new TypeError( 'invalid argument. First argument must be a nonnegative integer. Value: `' + ind + '`.' ); + if ( !isInteger( ind ) ) { + throw new TypeError( 'invalid argument. First argument must be an integer. Value: `' + ind + '`.' ); + } + if ( ind < 0 ) { + ind = nfields - ind; } - if ( ind >= nfields ) { - throw new RangeError( 'invalid argument. Tuple index cannot exceed tuple dimensions. Value: `' + ind + '`.' ); + if ( ind < 0 || ind >= nfields ) { + return; } return fields[ indices[ ind ] ]; } From 138539563feb3383b7173a1fe4b2dca2638e572b Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 04:25:40 -0700 Subject: [PATCH 0440/1062] Add missing throws annotation and update error message --- lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 498c38a3b3bf..f3e6b0fa860c 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -576,6 +576,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @memberof tuple * @param {integer} ind - tuple index * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} must provide an integer * @returns {(string|void)} field name or undefined */ function ind2key( ind ) { @@ -583,7 +584,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); } if ( !isInteger( ind ) ) { - throw new TypeError( 'invalid argument. First argument must be an integer. Value: `' + ind + '`.' ); + throw new TypeError( 'invalid argument. Must provide an integer. Value: `' + ind + '`.' ); } if ( ind < 0 ) { ind = nfields - ind; From 9dc661c62ba4005db8f1ace5ec768791ea790119 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 13:09:20 -0700 Subject: [PATCH 0441/1062] Document methods and fix description --- .../@stdlib/utils/named-typed-tuple/README.md | 121 ++++++++++++++++++ .../utils/named-typed-tuple/docs/repl.txt | 6 +- 2 files changed, 124 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index f0590a49bf97..6e1123e70b76 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1439,6 +1439,127 @@ var n = ctx.count; // returns 3 ``` + + +#### tuple.reduce( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in a tuple and returns the accumulated result. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 2.0, 0.0, -3.0 ] ); + +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var v = tuple.reduce( fcn ); +// returns 9.0 +``` + +If not provided an initial value, the method invokes a provided function with the first tuple element as the first argument and the second tuple element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the first tuple element as the second argument. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 2.0, 0.0, -3.0 ] ); + +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var v = tuple.reduce( fcn, 0.0 ); +// returns 13.0 +``` + +A callback is provided five arguments: + +- `acc`: accumulate result +- `value`: tuple element +- `index`: tuple index +- `field`: tuple field name +- `tuple`: tuple on which the method is invoked + + + +#### tuple.reduceRight( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in a tuple and returns the accumulated result, iterating from right to left. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 2.0, 0.0, -3.0 ] ); + +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var v = tuple.reduce( fcn ); +// returns 4.0 +``` + +If not provided an initial value, the method invokes a provided function with the last tuple element as the first argument and the second-to-last tuple element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the last tuple element as the second argument. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 2.0, 0.0, -3.0 ] ); + +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var v = tuple.reduce( fcn, 0.0 ); +// returns 13.0 +``` + +A callback is provided five arguments: + +- `acc`: accumulate result +- `value`: tuple element +- `index`: tuple index +- `field`: tuple field name +- `tuple`: tuple on which the method is invoked + + + +#### tuple.reverse() + +Reverses a tuple **in-place** (and thus mutating the tuple on which the method is invoked). + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 2.0, 0.0, -3.0 ] ); + +var x = tuple[ 0 ]; +// returns 2.0 + +x = tuple.x; +// returns 2.0 + +// Reverse the tuple: +tuple.reverse(); + +var fields = tuple.orderedFields; +// returns [ 'z', 'y', 'x' ] + +var z = tuple[ 0 ]; +// returns -3.0 + +// Tuple field assignments do NOT change: +x = tuple.x; +// returns 2.0 +``` + +Invoking this method does **not** affect tuple field assignments. + diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 4a7b8803ad28..e3faf5a7d00e 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -981,12 +981,12 @@ tuple.reduceRight( fcn[, initialValue] ) - tuple: tuple on which the method is invoked. If provided an initial value, the method invokes a provided function with - the initial value as the first argument and the first tuple element as the + the initial value as the first argument and the last tuple element as the second argument. If not provided an initial value, the method invokes a provided function - with the first tuple element as the first argument and the second tuple - element as the second argument. + with the last tuple element as the first argument and the second-to-last + tuple element as the second argument. Parameters ---------- From 8e4f60f2eff2dc26a11dc42297416ff4e0801f91 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 13:29:10 -0700 Subject: [PATCH 0442/1062] Document methods --- .../@stdlib/utils/named-typed-tuple/README.md | 200 ++++++++++++++++++ 1 file changed, 200 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 6e1123e70b76..2439a533882a 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1560,6 +1560,206 @@ x = tuple.x; Invoking this method does **not** affect tuple field assignments. + + +#### tuple.set( arr\[, offset] ) + +Sets tuple elements. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var y = tuple[ 1 ]; +// returns 0.0 + +y = tuple.y; +// returns 0.0 + +// Set the first two tuple elements: +tuple.set( [ -2.0, 2.0 ] ); + +var x = tuple[ 0 ]; +// returns -2.0 + +x = tuple.x; +// returns -2.0 + +y = tuple[ 1 ]; +// returns 2.0 + +y = tuple.y; +// returns 2.0 +``` + +By default, the method starts writing values at the first tuple index. To specify an alternative index, provide an index `offset`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var y = tuple[ 1 ]; +// returns 0.0 + +y = tuple.y; +// returns 0.0 + +// Set the last two tuple elements: +tuple.set( [ -2.0, 2.0 ], 1 ); + +var x = tuple[ 0 ]; +// returns 1.0 + +x = tuple.x; +// returns 1.0 + +y = tuple[ 1 ]; +// returns -2.0 + +y = tuple.y; +// returns -2.0 + +var z = tuple[ 2 ]; +// returns 2.0 + +z = tuple.z; +// returns 2.0 +``` + + + +#### tuple.slice( \[begin\[, end]] ) + +Copies tuple elements to a new tuple with the same underlying data type as the host tuple. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var p1 = factory( [ 1.0, 0.0, -1.0 ] ); + +var p2 = p1.slice(); + +var bool = ( p1 === p2 ); +// returns false + +var x = p2.x; +// returns 1.0 + +var y = p2.y; +// returns 0.0 + +var z = p2.z; +// returns -1.0 +``` + +By default, the method copies elements beginning with the first tuple element. To specify an alternative tuple index at which to begin copying, provide a `begin` index (inclusive). + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var p1 = factory( [ 1.0, 0.0, -1.0 ] ); + +var p2 = p1.slice( 1 ); + +var fields = p2.fields; +// returns [ 'y', 'z' ] + +var y = p2.y; +// returns 0.0 + +var z = p2.z; +// returns -1.0 +``` + +By default, the method copies all tuple elements after `begin`. To specify an alternative tuple index at which to end copying, provide an `end` index (exclusive). + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var p1 = factory( [ 1.0, 0.0, -1.0 ] ); + +var p2 = p1.slice( 0, 2 ); + +var fields = p2.fields; +// returns [ 'x', 'y' ] + +var x = p2.x; +// returns 1.0 + +var y = p2.y; +// returns 0.0 +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last tuple element. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var p1 = factory( [ 1.0, 0.0, -1.0 ] ); + +var p2 = p1.slice( -tuple.length, -1 ); + +var fields = p2.fields; +// returns [ 'x', 'y' ] + +var x = p2.x; +// returns 1.0 + +var y = p2.y; +// returns 0.0 +``` + + + +#### tuple.some( predicate\[, thisArg] ) + +Tests whether at least one tuple element passes a test implemented by a `predicate` function. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, -1.0 ] ); + +function predicate( v ) { + return ( v < 0.0 ); +} + +var bool = tuple.some( predicate ); +// returns true +``` + +A `predicate` function is provided four arguments: + +- `value`: tuple element +- `index`: tuple index +- `field`: tuple field name +- `tuple`: tuple on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, 1.0 ] ); + +function predicate( v ) { + this.count += 1; + return ( v < 0.0 ); +} + +var ctx = { + 'count': 0 +}; + +var bool = tuple.some( predicate, ctx ); +// returns false + +var n = ctx.count; +// returns 2 +``` + From 08a5cbe0dfae8917cc2d7fe5a01131ea17d22cd8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 13:31:02 -0700 Subject: [PATCH 0443/1062] Fix example --- lib/node_modules/@stdlib/utils/named-typed-tuple/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 2439a533882a..911ec4874bdc 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1699,7 +1699,7 @@ var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); var p1 = factory( [ 1.0, 0.0, -1.0 ] ); -var p2 = p1.slice( -tuple.length, -1 ); +var p2 = p1.slice( -p1.length, -1 ); var fields = p2.fields; // returns [ 'x', 'y' ] From e919cbf4868d72c7040f48601aef85186cffb648 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 13:33:49 -0700 Subject: [PATCH 0444/1062] Fix typo --- lib/node_modules/@stdlib/utils/named-typed-tuple/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 911ec4874bdc..9807f928593f 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1477,7 +1477,7 @@ var v = tuple.reduce( fcn, 0.0 ); A callback is provided five arguments: -- `acc`: accumulate result +- `acc`: accumulated result - `value`: tuple element - `index`: tuple index - `field`: tuple field name @@ -1521,7 +1521,7 @@ var v = tuple.reduce( fcn, 0.0 ); A callback is provided five arguments: -- `acc`: accumulate result +- `acc`: accumulated result - `value`: tuple element - `index`: tuple index - `field`: tuple field name From b77abacf8f0d8181ad4875548184143892ed73c3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 13:34:41 -0700 Subject: [PATCH 0445/1062] Remove word --- lib/node_modules/@stdlib/utils/named-typed-tuple/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 9807f928593f..34ec59e0bcd5 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1531,7 +1531,7 @@ A callback is provided five arguments: #### tuple.reverse() -Reverses a tuple **in-place** (and thus mutating the tuple on which the method is invoked). +Reverses a tuple **in-place** (thus mutating the tuple on which the method is invoked). ```javascript var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); From cf7140990672779efd86a98b887bad2d06714402 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 18:47:52 -0700 Subject: [PATCH 0446/1062] Document methods --- .../@stdlib/utils/named-typed-tuple/README.md | 72 ++++++++++++++++++- .../utils/named-typed-tuple/docs/repl.txt | 15 ++++ .../utils/named-typed-tuple/lib/main.js | 10 +++ 3 files changed, 96 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 34ec59e0bcd5..bc95d46f191a 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1527,7 +1527,7 @@ A callback is provided five arguments: - `field`: tuple field name - `tuple`: tuple on which the method is invoked - + #### tuple.reverse() @@ -1760,6 +1760,76 @@ var n = ctx.count; // returns 2 ``` + + +#### tuple.sort( \[compareFunction] ) + +Sorts a tuple **in-place** (thus mutating the tuple on which the method is invoked). + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 2.0, -3.0, 0.0 ] ); + +var x = tuple[ 0 ]; +// returns 2.0 + +x = tuple.x; +// returns 2.0 + +// Sort the tuple (in ascending order): +tuple.sort(); + +var fields = tuple.orderedFields; +// returns [ 'y', 'z', 'x' ] + +var y = tuple[ 0 ]; +// returns -3.0 + +// Tuple field assignments do NOT change: +x = tuple.x; +// returns 2.0 +``` + +By default, the method sorts tuple elements in ascending order. To impose a custom order, provide a `compareFunction`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 2.0, -3.0, 0.0 ] ); + +var x = tuple[ 0 ]; +// returns 2.0 + +x = tuple.x; +// returns 2.0 + +function descending( a, b ) { + return b - a; +} + +// Sort the tuple (in descending order): +tuple.sort( descending ); + +var fields = tuple.orderedFields; +// returns [ 'x', 'z', 'y' ] + +var z = tuple[ 1 ]; +// returns 0.0 + +// Tuple field assignments do NOT change: +y = tuple.y; +// returns -3.0 +``` + +The comparison function is provided two tuple elements, `a` and `b`, per invocation, and its return value determines the sort order as follows: + +- If the comparison function returns a value **less** than zero, then the method sorts `a` to an index lower than `b` (i.e., `a` should come **before** `b`). +- If the comparison function returns a value **greater** than zero, then the method sorts `a` to an index greater than `b` (i.e., `b` should come **before** `a`). +- If the comparison function returns **zero**, then the relative order of `a` and `b` _should_ remain unchanged. + +Invoking this method does **not** affect tuple field assignments. + diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index e3faf5a7d00e..b7097fa31d97 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -1146,6 +1146,21 @@ tuple.sort( [compareFunction] ) to tuple index. In summary, sorting affects index order but not field assignments. + The comparison function is provided two tuple elements per invocation: `a` + and `b`. + + The comparison function return value determines the sort order as follows: + + - If the comparison function returns a value less than zero, then the method + sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`). + + - If the comparison function returns a value greater than zero, then the + method sorts `a` to an index greater than `b` (i.e., `b` should come + *before* `a`). + + - If the comparison function returns zero, then the relative order of `a` + and `b` should remain unchanged. + This method mutates the tuple on which the method is invoked. Parameters diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index f3e6b0fa860c..2bbeebcbf113 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -943,6 +943,16 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi /** * Sorts a tuple in-place. * + * ## Notes + * + * - The comparison function is provided two tuple elements, `a` and `b`, per invocation, and its return value determines the sort order as follows: + * + * - If the comparison function returns a value **less** than zero, then the function sorts `a` to an index lower than `b` (i.e., `a` should come **before** `b`). + * - If the comparison function returns a value **greater** than zero, then the function sorts `a` to an index greater than `b` (i.e., `b` should come **before** `a`). + * - If the comparison function returns **zero**, then the relative order of `a` and `b` _should_ remain unchanged. + * + * - Invoking this method does **not** affect tuple field assignments. + * * @private * @memberof tuple * @param {Function} [compareFunction] - function which specifies the sort order From ef2b271e3686ada48a7826528fca4aef034f74e5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 19:02:12 -0700 Subject: [PATCH 0447/1062] Document method --- .../@stdlib/utils/named-typed-tuple/README.md | 165 ++++++++++++++++++ .../utils/named-typed-tuple/docs/repl.txt | 12 +- 2 files changed, 168 insertions(+), 9 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index bc95d46f191a..eb6e4ea563b8 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1830,6 +1830,171 @@ The comparison function is provided two tuple elements, `a` and `b`, per invocat Invoking this method does **not** affect tuple field assignments. + + +#### tuple.subarray( \[begin\[, end]] ) + +Creates a new [typed array][@stdlib/array/typed] over the same underlying [`ArrayBuffer`][@stdlib/array/buffer] and with the same underlying data type as the host tuple. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var arr = tuple.subarray(); +// returns [ 1.0, 0.0, -1.0 ] +``` + +By default, the method creates a [typed array][@stdlib/array/typed] view beginning with the first tuple element. To specify an alternative tuple index at which to begin, provide a `begin` index (inclusive). + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var arr = tuple.subarray( 1 ); +// returns [ 0.0, -1.0 ] +``` + +By default, the method creates a [typed array][@stdlib/array/typed] view which includes all tuple elements after `begin`. To limit the number of tuple elements after `begin`, provide an `end` index (exclusive). + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var arr = tuple.subarray( 0, 2 ); +// returns [ 1.0, 0.0 ] +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last tuple element. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var arr = tuple.subarray( -tuple.length, -1 ); +// returns [ 1.0, 0.0 ] +``` + +If the method is unable to resolve indices to a non-empty tuple subsequence, the method returns an empty [typed array][@stdlib/array/typed]. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var arr = tuple.subarray( 10, -1 ); +// returns [] +``` + + + +#### tuple.subtuple( \[begin\[, end]] ) + +Creates a new named typed tuple over the same underlying [`ArrayBuffer`][@stdlib/array/buffer] and with the same underlying data type as the host tuple. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var p1 = factory( [ 1.0, 0.0, -1.0 ] ); + +var p2 = p1.subtuple(); + +var bool = ( p1 === p2 ); +// returns false + +var len = p2.length; +// returns 3 + +var x = p2.x; +// returns 1.0 + +var y = p2.y; +// returns 0.0 + +var z = p2.z; +// returns -1.0 +``` + +By default, the method creates a new tuple beginning with the first tuple element. To specify an alternative tuple index at which to begin, provide a `begin` index (inclusive). + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var p1 = factory( [ 1.0, 0.0, -1.0 ] ); + +var p2 = p1.subtuple( 1 ); + +var len = p2.length; +// returns 2 + +var fields = p2.fields; +// returns [ 'y', 'z' ] + +var y = p2.y; +// returns 0.0 + +var z = p2.z; +// returns -1.0 +``` + +By default, the method creates a new tuple which includes all tuple elements after `begin`. To limit the number of tuple elements after `begin`, provide an `end` index (exclusive). + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var p1 = factory( [ 1.0, 0.0, -1.0 ] ); + +var p2 = p1.subtuple( 0, 2 ); + +var len = p2.length; +// returns 2 + +var fields = p2.fields; +// returns [ 'x', 'y' ] + +var x = p2.x; +// returns 1.0 + +var y = p2.y; +// returns 0.0 +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last tuple element. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var p1 = factory( [ 1.0, 0.0, -1.0 ] ); + +var p2 = p1.subtuple( -tuple.length, -1 ); + +var len = p2.length; +// returns 2 + +var fields = p2.fields; +// returns [ 'x', 'y' ] + +var x = p2.x; +// returns 1.0 + +var y = p2.y; +// returns 0.0 +``` + +If the method is unable to resolve indices to a non-empty tuple subsequence, the method returns `null`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var p1 = factory( [ 1.0, 0.0, -1.0 ] ); + +var p2 = tuple.subtuple( 10, -1 ); +// returns null +``` + diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index b7097fa31d97..b66bcfe51256 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -1197,8 +1197,8 @@ tuple.subarray( [begin[, end]] ) Creates a new typed array over the same underlying ArrayBuffer and with the same underlying data type as the host tuple. - If the function is unable to resolve indices to a non-empty tuple - subsequence, the function returns an empty typed array. + If the method is unable to resolve indices to a non-empty tuple subsequence, + the method returns an empty typed array. Parameters ---------- @@ -1220,13 +1220,7 @@ tuple.subarray( [begin[, end]] ) > var factory = {{alias}}( [ 'x', 'y', 'z', 'w', 'v' ] ); > var p = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] ); > var arr = p.subarray( 2 ) - - > arr[ 0 ] - 0.0 - > arr[ 1 ] - 2.0 - > arr[ 2 ] - -2.0 + [ 0.0, 2.0, -2.0 ] > arr.length 3 From 14cf295f9ce8e1b60fe8d272f8cce07c2cc95210 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 19:11:16 -0700 Subject: [PATCH 0448/1062] Document methods --- .../@stdlib/utils/named-typed-tuple/README.md | 85 +++++++++++++++++++ .../utils/named-typed-tuple/docs/repl.txt | 2 +- 2 files changed, 86 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index eb6e4ea563b8..ddb7cff72996 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1995,6 +1995,91 @@ var p2 = tuple.subtuple( 10, -1 ); // returns null ``` + + +#### tuple.toJSON() + +Serializes a tuple as JSON. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var obj = tuple.toJSON(); +// reutrns { 'x': 1.0, 'y': 0.0, 'z': -1.0 } +``` + + + +#### tuple.toLocaleString( \[locales\[, options]] ) + +Serializes a tuple as a locale-specific `string`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ], 'int32' ); + +var str = tuple.toLocaleString(); +// returns '1,0,-1' +``` + + + +#### tuple.toString() + +Serializes a tuple as a `string`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ], 'int32' ); + +var str = tuple.toString(); +// returns 'tuple(x=1, y=0, z=-1)' +``` + +The returned string uses the tuple `name` as specified when creating a tuple factory. + +```javascript +var opts = { + 'name': 'Point' +}; + +var factory = namedtypedtuple( [ 'x', 'y', 'z' ], opts ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ], 'int32' ); + +var str = tuple.toString(); +// returns 'Point(x=1, y=0, z=-1)' +``` + + + +#### tuple.values() + +Returns an iterator for iterating over tuple elements. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory( [ 1.0, -1.0 ] ); + +// Create an iterator: +var it = tuple.values(); + +// Iterate over tuple elements... +var v = it.next().value; +// returns 1.0 + +v = it.next().value; +// returns -1.0 + +var bool = it.next().done; +// returns true +``` + diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index b66bcfe51256..eaaa64e625b3 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -1305,7 +1305,7 @@ tuple.toLocaleString( [locales[, options]] ) Examples -------- > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); - > var p = factory( [ 1.0, -1.0, 0.0 ] ); + > var p = factory( [ 1.0, -1.0, 0.0 ], 'int32' ); > p.toLocaleString() '1,-1,0' From 90adb07138fd75fdd08b92b7bbd989deaf831f4d Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 19:17:59 -0700 Subject: [PATCH 0449/1062] Fix iteration bug --- lib/node_modules/@stdlib/utils/named-typed-tuple/README.md | 2 +- lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index ddb7cff72996..8eb41ef44172 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -2040,7 +2040,7 @@ var str = tuple.toString(); // returns 'tuple(x=1, y=0, z=-1)' ``` -The returned string uses the tuple `name` as specified when creating a tuple factory. +The returned `string` uses the tuple `name` as specified when creating a tuple factory. ```javascript var opts = { diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 2bbeebcbf113..580e882ca9d1 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -1076,7 +1076,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi return null; } f = []; - for ( i = 0; i < j; i++ ) { + for ( ; i < j; i++ ) { f.push( fields[ indices[i] ] ); } return factory( f, opts )( tuple.buffer, tuple.byteOffset+(begin*tuple.BYTES_PER_ELEMENT), dtype ); From 0a8b4f81f1c4c20d7591968ce7bd64cd9d6c4896 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 19:19:49 -0700 Subject: [PATCH 0450/1062] Add link --- lib/node_modules/@stdlib/utils/named-typed-tuple/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 8eb41ef44172..e96da97cbf56 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1999,7 +1999,7 @@ var p2 = tuple.subtuple( 10, -1 ); #### tuple.toJSON() -Serializes a tuple as JSON. +Serializes a tuple as [JSON][json]. ```javascript var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); @@ -2179,6 +2179,8 @@ console.log( JSON.stringify( p ) ); [@stdlib/array/buffer]: https://github.com/stdlib-js/stdlib +[json]: http://www.json.org/ + From 967534629bab242e22e752686a5a6f2d73f0430b Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 19:22:26 -0700 Subject: [PATCH 0451/1062] Fix examples --- lib/node_modules/@stdlib/utils/named-typed-tuple/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index e96da97cbf56..ed52a4569973 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1969,7 +1969,7 @@ var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); var p1 = factory( [ 1.0, 0.0, -1.0 ] ); -var p2 = p1.subtuple( -tuple.length, -1 ); +var p2 = p1.subtuple( -p1.length, -1 ); var len = p2.length; // returns 2 @@ -1991,7 +1991,7 @@ var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); var p1 = factory( [ 1.0, 0.0, -1.0 ] ); -var p2 = tuple.subtuple( 10, -1 ); +var p2 = p1.subtuple( 10, -1 ); // returns null ``` From 96b9482dd7c368764a286ca59d87b71a6549a438 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 19:30:58 -0700 Subject: [PATCH 0452/1062] Fix byte offset computation --- .../@stdlib/utils/named-typed-tuple/lib/main.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 580e882ca9d1..7509e91bb1eb 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -1039,6 +1039,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi var f; var i; var j; + var k; if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); @@ -1076,10 +1077,10 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi return null; } f = []; - for ( ; i < j; i++ ) { - f.push( fields[ indices[i] ] ); + for ( k = i; k < j; k++ ) { + f.push( fields[ indices[k] ] ); } - return factory( f, opts )( tuple.buffer, tuple.byteOffset+(begin*tuple.BYTES_PER_ELEMENT), dtype ); + return factory( f, opts )( tuple.buffer, tuple.byteOffset+(i*tuple.BYTES_PER_ELEMENT), dtype ); } /** From 0250943969deb11d891dfbc14eb68086e8698bc4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 19:34:33 -0700 Subject: [PATCH 0453/1062] Update wording --- lib/node_modules/@stdlib/utils/named-typed-tuple/README.md | 2 +- .../@stdlib/utils/named-typed-tuple/docs/repl.txt | 4 ++-- lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index ed52a4569973..19edc4f9ba10 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1825,7 +1825,7 @@ y = tuple.y; The comparison function is provided two tuple elements, `a` and `b`, per invocation, and its return value determines the sort order as follows: - If the comparison function returns a value **less** than zero, then the method sorts `a` to an index lower than `b` (i.e., `a` should come **before** `b`). -- If the comparison function returns a value **greater** than zero, then the method sorts `a` to an index greater than `b` (i.e., `b` should come **before** `a`). +- If the comparison function returns a value **greater** than zero, then the method sorts `a` to an index higher than `b` (i.e., `b` should come **before** `a`). - If the comparison function returns **zero**, then the relative order of `a` and `b` _should_ remain unchanged. Invoking this method does **not** affect tuple field assignments. diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index eaaa64e625b3..301fe2a4c217 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -1155,8 +1155,8 @@ tuple.sort( [compareFunction] ) sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`). - If the comparison function returns a value greater than zero, then the - method sorts `a` to an index greater than `b` (i.e., `b` should come - *before* `a`). + method sorts `a` to an index higher than `b` (i.e., `b` should come *before* + `a`). - If the comparison function returns zero, then the relative order of `a` and `b` should remain unchanged. diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 7509e91bb1eb..8152e2a9b355 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -948,7 +948,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * - The comparison function is provided two tuple elements, `a` and `b`, per invocation, and its return value determines the sort order as follows: * * - If the comparison function returns a value **less** than zero, then the function sorts `a` to an index lower than `b` (i.e., `a` should come **before** `b`). - * - If the comparison function returns a value **greater** than zero, then the function sorts `a` to an index greater than `b` (i.e., `b` should come **before** `a`). + * - If the comparison function returns a value **greater** than zero, then the function sorts `a` to an index higher than `b` (i.e., `b` should come **before** `a`). * - If the comparison function returns **zero**, then the relative order of `a` and `b` _should_ remain unchanged. * * - Invoking this method does **not** affect tuple field assignments. From 6da7607db2164709092ae59680634af27a31a81b Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 20:16:49 -0700 Subject: [PATCH 0454/1062] Add length benchmarks --- .../benchmark/benchmark.length.js | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.length.js new file mode 100644 index 000000000000..3c0d0fc752f8 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.length.js @@ -0,0 +1,102 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Vector; + var i; + + fields = []; + for ( i = 0; i < len; i++ ) { + fields.push( '_'+i.toString() ); + } + Vector = namedtypedtuple( fields ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var vec; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + vec = new Vector( len ); + if ( vec.length !== len ) { + b.fail( 'unexpected length' ); + } + } + b.toc(); + if ( typeof vec.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 4; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':len='+len, f ); + } +} + +main(); From 0092dd576037d1bfe45189e9e2a7ea5fc4fd004f Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 20:22:20 -0700 Subject: [PATCH 0455/1062] Fix benchmark --- lib/node_modules/@stdlib/array/complex64/benchmark/benchmark.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/array/complex64/benchmark/benchmark.js b/lib/node_modules/@stdlib/array/complex64/benchmark/benchmark.js index f11ecc0786dd..4ded56cae0f9 100644 --- a/lib/node_modules/@stdlib/array/complex64/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/array/complex64/benchmark/benchmark.js @@ -84,7 +84,7 @@ bench( pkg+'::instantiation,length', function benchmark( b ) { var i; b.tic(); for ( i = 0; i < b.iterations; i++ ) { - arr = new Complex64Array(); + arr = new Complex64Array( 0 ); if ( arr.length !== 0 ) { b.fail( 'should have length 0' ); } From 0326a6317f983024b24cef60aed89c332fa2705d Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 20:52:56 -0700 Subject: [PATCH 0456/1062] Add benchmarks --- .../benchmark/benchmark.length.js | 2 +- .../benchmark.tuple_instantiation.js | 378 ++++++++++++++++++ .../benchmark/benchmark.tuple_properties.js | 205 ++++++++++ 3 files changed, 584 insertions(+), 1 deletion(-) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.tuple_instantiation.js create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.tuple_properties.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.length.js index 3c0d0fc752f8..cd921929b416 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.length.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.length.js @@ -60,7 +60,7 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - vec = new Vector( len ); + vec = new Vector(); if ( vec.length !== len ) { b.fail( 'unexpected length' ); } diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.tuple_instantiation.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.tuple_instantiation.js new file mode 100644 index 000000000000..aaed8503604c --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.tuple_instantiation.js @@ -0,0 +1,378 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var ArrayBuffer = require( '@stdlib/array/buffer' ); +var Float32Array = require( '@stdlib/array/float32' ); +var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': ( ITERATOR_SYMBOL === null ) +}; + + +// MAIN // + +bench( pkg+'::instantiation,new', function benchmark( b ) { + var Point; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = new Point(); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::instantiation,no_new', function benchmark( b ) { + var point; + var p; + var i; + + point = namedtypedtuple( [ 'x', 'y' ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = point(); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::instantiation,typed_array', function benchmark( b ) { + var Point; + var buf; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + buf = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = new Point( buf ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::instantiation,typed_array,dtype', function benchmark( b ) { + var Point; + var buf; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + buf = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = new Point( buf, 'int32' ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::instantiation,array', function benchmark( b ) { + var Point; + var buf; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + buf = [ 1.0, -1.0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = new Point( buf ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::instantiation,array,dtype', function benchmark( b ) { + var Point; + var buf; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + buf = [ 1.0, -1.0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = new Point( buf, 'int32' ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::instantiation,iterable', opts, function benchmark( b ) { + var Point; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = new Point( createIterable() ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2) { + return { + 'value': 1.0 + }; + } + return { + 'done': true + }; + } + } +}); + +bench( pkg+'::instantiation,iterable,dtype', opts, function benchmark( b ) { + var Point; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = new Point( createIterable(), 'int32' ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2) { + return { + 'value': 1.0 + }; + } + return { + 'done': true + }; + } + } +}); + +bench( pkg+'::instantiation,arraybuffer', function benchmark( b ) { + var Point; + var buf; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + buf = new ArrayBuffer( 16 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = new Point( buf ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::instantiation,arraybuffer,dtype', function benchmark( b ) { + var Point; + var buf; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + buf = new ArrayBuffer( 16 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = new Point( buf, 'float32' ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::instantiation,arraybuffer,byte_offset', function benchmark( b ) { + var Point; + var buf; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + buf = new ArrayBuffer( 24 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = new Point( buf, 8 ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::instantiation,arraybuffer,byte_offset,dtype', function benchmark( b ) { + var Point; + var buf; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + buf = new ArrayBuffer( 24 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = new Point( buf, 8, 'float32' ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.tuple_properties.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.tuple_properties.js new file mode 100644 index 000000000000..91b71fcd8f5d --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.tuple_properties.js @@ -0,0 +1,205 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' ); +var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive; +var isString = require( '@stdlib/assert/is-string' ).isPrimitive; +var isArray = require( '@stdlib/assert/is-array' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::tuple,get:buffer', function benchmark( b ) { + var Point; + var p; + var v; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = p.buffer; + if ( typeof v !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isArrayBuffer( v ) ) { + b.fail( 'should return an ArrayBuffer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::tuple,get:byteLength', function benchmark( b ) { + var Point; + var p; + var v; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = p.byteLength; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::tuple,get:byteOffset', function benchmark( b ) { + var Point; + var p; + var v; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = p.byteOffset; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::tuple,get:length', function benchmark( b ) { + var Point; + var p; + var v; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = p.length; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::tuple,get:name', function benchmark( b ) { + var Point; + var p; + var v; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = p.name; + if ( typeof v !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( !isString( v ) ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::tuple,get:fields', function benchmark( b ) { + var Point; + var p; + var v; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = p.fields; + if ( typeof v !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isArray( v ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::tuple,get:orderedFields', function benchmark( b ) { + var Point; + var p; + var v; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = p.orderedFields; + if ( typeof v !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isArray( v ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 3e707d9765af20056bbc03483dcb328ba30f8d96 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 19 Sep 2018 21:03:23 -0700 Subject: [PATCH 0457/1062] Add benchmarks --- .../benchmark/benchmark.tuple_data.js | 138 ++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.tuple_data.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.tuple_data.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.tuple_data.js new file mode 100644 index 000000000000..9694cdca3547 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.tuple_data.js @@ -0,0 +1,138 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::tuple,get,index', function benchmark( b ) { + var Point; + var N; + var p; + var v; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + + p = new Point( [ 1.0, -1.0 ] ); + N = p.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = p[ i%N ]; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::tuple,get,property_name', function benchmark( b ) { + var fields; + var Point; + var N; + var p; + var v; + var i; + + fields = [ 'x', 'y' ]; + Point = namedtypedtuple( fields ); + + p = new Point( [ 1.0, -1.0 ] ); + N = p.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = p[ fields[ i%N ] ]; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::tuple,set,index', function benchmark( b ) { + var Point; + var N; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + + p = new Point( [ 1.0, -1.0 ] ); + N = p.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p[ i%N ] = i; + if ( p[ 0 ] !== p[ 0 ] ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( p[ 0 ] !== p[ 0 ] || p[ 1 ] !== p[ 1 ] ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::tuple,set,property_name', function benchmark( b ) { + var fields; + var Point; + var N; + var p; + var i; + + fields = [ 'x', 'y' ]; + Point = namedtypedtuple( fields ); + + p = new Point( [ 1.0, -1.0 ] ); + N = p.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p[ fields[ i%N ] ] = i; + if ( p[ 0 ] !== p[ 0 ] ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( p[ 0 ] !== p[ 0 ] || p[ 1 ] !== p[ 1 ] ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 14b2c4eebed7235a3a37087e17df64e0a068164e Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 18:31:46 -0700 Subject: [PATCH 0458/1062] Add benchmarks --- .../named-typed-tuple/benchmark/benchmark.js | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.js new file mode 100644 index 000000000000..f38c9ed581a3 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.js @@ -0,0 +1,67 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isFunction = require( '@stdlib/assert/is-function' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var Point; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + Point = namedtypedtuple( [ 'x', 'y' ] ); + if ( typeof Point !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( !isFunction( Point ) ) { + b.fail( 'should return a function' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::options', function benchmark( b ) { + var Point; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + Point = namedtypedtuple( [ 'x', 'y' ], {} ); + if ( typeof Point !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( !isFunction( Point ) ) { + b.fail( 'should return a function' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From d74c58662937bdc4813abe8ee9fdd40047b2992c Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 18:46:55 -0700 Subject: [PATCH 0459/1062] Add benchmarks --- .../benchmark/benchmark.entries.js | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.entries.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.entries.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.entries.js new file mode 100644 index 000000000000..1e33f6caf392 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.entries.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':entries', function benchmark( b ) { + var Point; + var iter; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = p.entries(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From f73a29308fd413017d2242c6dbbbf65690515181 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 18:58:37 -0700 Subject: [PATCH 0460/1062] Add benchmarks --- .../benchmark/benchmark.from.js | 251 ++++++++++++++++++ 1 file changed, 251 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.from.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.from.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.from.js new file mode 100644 index 000000000000..0f208dcd7741 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.from.js @@ -0,0 +1,251 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Float32Array = require( '@stdlib/array/float32' ); +var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': ( ITERATOR_SYMBOL === null ) +}; + + +// MAIN // + +bench( pkg+'::typed_array:from', function benchmark( b ) { + var Point; + var buf; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + buf = new Float32Array( [ 1.0, 2.0 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = Point.from( buf ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array,clbk:from', function benchmark( b ) { + var Point; + var buf; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + buf = new Float32Array( [ 1.0, 2.0 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = Point.from( buf, clbk ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1.0; + } +}); + +bench( pkg+'::array:from', function benchmark( b ) { + var Point; + var buf; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + buf = [ 1.0, 2.0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = Point.from( buf ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::array,clbk:from', function benchmark( b ) { + var Point; + var buf; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + buf = [ 1.0, 2.0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = Point.from( buf, clbk ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1.0; + } +}); + +bench( pkg+'::iterable:from', opts, function benchmark( b ) { + var Point; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = Point.from( createIterable() ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 0.0, + 'done': false + }; + } + return { + 'done': true + }; + } + } +}); + +bench( pkg+'::iterable,clbk:from:', opts, function benchmark( b ) { + var Point; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = Point.from( createIterable(), clbk ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 1.0, + 'done': false + }; + } + return { + 'done': true + }; + } + } + + function clbk( v ) { + return v + 1.0; + } +}); From 1effd30314ac67732f9d164d8191c66b326518ad Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 19:13:04 -0700 Subject: [PATCH 0461/1062] Add benchmarks --- .../benchmark/benchmark.from_object.js | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.from_object.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.from_object.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.from_object.js new file mode 100644 index 000000000000..12fccf3b5139 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.from_object.js @@ -0,0 +1,86 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':fromObject', function benchmark( b ) { + var Point; + var obj; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + obj = { + 'x': 1.0, + 'y': 2.0 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = Point.fromObject( obj ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::clbk:fromObject', function benchmark( b ) { + var Point; + var obj; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + obj = { + 'x': 1.0, + 'y': 2.0 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = Point.fromObject( obj, clbk ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1.0; + } +}); From e923d810a47fdef6b470cb374d7c994df17a08e5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 19:15:53 -0700 Subject: [PATCH 0462/1062] Add benchmarks --- .../benchmark/benchmark.of.js | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.of.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.of.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.of.js new file mode 100644 index 000000000000..f86ab3834e81 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.of.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtyple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':of', function benchmark( b ) { + var Point; + var p; + var i; + + Point = namedtypedtyple( [ 'x', 'y' ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = Point.of( 1.0, 2.0 ); + if ( p.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( typeof p.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 02af72a674908b3fa5a646a54f5def389a7790c1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 19:23:06 -0700 Subject: [PATCH 0463/1062] Add benchmarks --- .../benchmark/benchmark.copy_within.js | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.copy_within.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.copy_within.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.copy_within.js new file mode 100644 index 000000000000..4eab0da9eb46 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.copy_within.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':copyWithin', function benchmark( b ) { + var Point; + var buf; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + buf = p.buffer; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = i; + p = p.copyWithin( 1, 0 ); + if ( buf[ 0 ] !== i ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( buf[ 0 ] !== buf[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From c3452ac02005f78b3bd07a429b7b75e6ab2c92e0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 19:26:14 -0700 Subject: [PATCH 0464/1062] Add benchmarks --- .../benchmark/benchmark.copy_within.length.js | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.copy_within.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.copy_within.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.copy_within.length.js new file mode 100644 index 000000000000..48933cd106f7 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.copy_within.length.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var buf; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + buf = p.buffer; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = i; + p = p.copyWithin( 1, 0 ); + if ( buf[ 0 ] !== i ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( buf[ 0 ] !== buf[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':copyWithin:len='+len, f ); + } +} + +main(); From fd434279f677ae3cdf1bb04cafe362b98d911c3d Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 19:35:50 -0700 Subject: [PATCH 0465/1062] Add benchmarks --- .../benchmark/benchmark.set.js | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.set.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.set.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.set.js new file mode 100644 index 000000000000..3a7af4417a7b --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.set.js @@ -0,0 +1,101 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Float32Array = require( '@stdlib/array/float32' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::array:set', function benchmark( b ) { + var values; + var Point; + var buf; + var p; + var N; + var v; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + + values = []; + for ( i = 0; i < 10; i++ ) { + values.push( i ); + } + N = values.length; + + p = new Point(); + buf = [ 0.0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = p.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array:set', function benchmark( b ) { + var values; + var Point; + var buf; + var p; + var N; + var v; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + + values = new Float32Array( 20 ); + N = values.length; + for ( i = 0; i < N; i++ ) { + values[ i ] = i; + } + + p = new Point(); + buf = new Float32Array( 1 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = p.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 24db4f411e16f842fbeb4c7247f4dd1b1a36d055 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 19:40:22 -0700 Subject: [PATCH 0466/1062] Add benchmarks --- .../benchmark/benchmark.set.length.js | 119 ++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.set.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.set.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.set.length.js new file mode 100644 index 000000000000..83133b5dfeb0 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.set.length.js @@ -0,0 +1,119 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randu = require( '@stdlib/random/base/randu' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var values; + var Point; + var arr1; + var arr2; + var N; + var p; + var i; + + fields = []; + arr1 = []; + arr2 = []; + for ( i = 0; i < len; i++ ) { + fields.push( '_'+i.toString() ); + arr1.push( randu() ); + arr2.push( -randu() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + values = [ + arr1, + arr2 + ]; + N = values.length; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = p.set( values[ i%N ] ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':set:len='+len, f ); + } +} + +main(); From 21c86183558cddfe79779d9ed0ec7f8dea207e66 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 23:13:30 -0700 Subject: [PATCH 0467/1062] Add benchmarks --- .../benchmark/benchmark.every.js | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.every.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.every.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.every.js new file mode 100644 index 000000000000..98230f7819c5 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.every.js @@ -0,0 +1,85 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':every', function benchmark( b ) { + var Point; + var bool; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = p.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0.0; + } +}); + +bench( pkg+'::this_context:every', function benchmark( b ) { + var Point; + var bool; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = p.every( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0.0; + } +}); From 2749f83e3ca9b3a19716e9858ec50862908e05df Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 23:17:01 -0700 Subject: [PATCH 0468/1062] Add benchmarks --- .../benchmark/benchmark.every.length.js | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.every.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.every.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.every.length.js new file mode 100644 index 000000000000..749c46849e30 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.every.length.js @@ -0,0 +1,116 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether a tuple value passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether a tuple value passes a test +*/ +function predicate( value ) { + return value >= 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = p.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':every:len='+len, f ); + } +} + +main(); From fd75e1347a0b1b10c3f795b5892ce4813249c076 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 23:18:43 -0700 Subject: [PATCH 0469/1062] Add benchmarks --- .../benchmark/benchmark.some.js | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.some.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.some.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.some.js new file mode 100644 index 000000000000..dd3db64ba343 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.some.js @@ -0,0 +1,85 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':some', function benchmark( b ) { + var Point; + var bool; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = p.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); + +bench( pkg+'::this_context:some', function benchmark( b ) { + var Point; + var bool; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = p.some( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); From fa526d6c6dc03002c71eb349d2a589912688c165 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 23:20:24 -0700 Subject: [PATCH 0470/1062] Add benchmarks --- .../benchmark/benchmark.some.length.js | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.some.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.some.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.some.length.js new file mode 100644 index 000000000000..f171497a5c00 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.some.length.js @@ -0,0 +1,116 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether a tuple value passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether a tuple value passes a test +*/ +function predicate( value ) { + return value > 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = p.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':some:len='+len, f ); + } +} + +main(); From 3b8904f5fe0354b1353369569b255218a3f54085 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 23:26:40 -0700 Subject: [PATCH 0471/1062] Add benchmarks --- .../benchmark/benchmark.fill.js | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.fill.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.fill.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.fill.js new file mode 100644 index 000000000000..309c5e656f94 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.fill.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':fill', function benchmark( b ) { + var Point; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = p.fill( i ); + if ( p[ 0 ] !== i ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( p[ 0 ] !== p[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From c6fa313f76dd9d83713ae4c5e5d12efa5b363357 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 23:27:45 -0700 Subject: [PATCH 0472/1062] Fix benchmark assertions --- .../named-typed-tuple/benchmark/benchmark.copy_within.js | 8 +++----- .../benchmark/benchmark.copy_within.length.js | 8 +++----- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.copy_within.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.copy_within.js index 4eab0da9eb46..1165527d14c6 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.copy_within.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.copy_within.js @@ -29,24 +29,22 @@ var namedtypedtuple = require( './../lib' ); bench( pkg+':copyWithin', function benchmark( b ) { var Point; - var buf; var p; var i; Point = namedtypedtuple( [ 'x', 'y' ] ); p = new Point(); - buf = p.buffer; b.tic(); for ( i = 0; i < b.iterations; i++ ) { - buf[ 0 ] = i; + p[ 0 ] = i; p = p.copyWithin( 1, 0 ); - if ( buf[ 0 ] !== i ) { + if ( p[ 0 ] !== i ) { b.fail( 'unexpected result' ); } } b.toc(); - if ( buf[ 0 ] !== buf[ 0 ] ) { + if ( p[ 0 ] !== p[ 0 ] ) { b.fail( 'should not be NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.copy_within.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.copy_within.length.js index 48933cd106f7..8b12ad62bf1a 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.copy_within.length.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.copy_within.length.js @@ -38,7 +38,6 @@ var namedtypedtuple = require( './../lib' ); function createBenchmark( len ) { var fields; var Point; - var buf; var p; var i; @@ -48,7 +47,6 @@ function createBenchmark( len ) { } Point = namedtypedtuple( fields ); p = new Point(); - buf = p.buffer; return benchmark; @@ -63,14 +61,14 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - buf[ 0 ] = i; + p[ 0 ] = i; p = p.copyWithin( 1, 0 ); - if ( buf[ 0 ] !== i ) { + if ( p[ 0 ] !== i ) { b.fail( 'unexpected result' ); } } b.toc(); - if ( buf[ 0 ] !== buf[ 0 ] ) { + if ( p[ 0 ] !== p[ 0 ] ) { b.fail( 'should not be NaN' ); } b.pass( 'benchmark finished' ); From 9ba358847dce9d273e92acf9ebd6627c4a4bc33c Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 23:31:32 -0700 Subject: [PATCH 0473/1062] Add benchmarks --- .../benchmark/benchmark.fill.length.js | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.fill.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.fill.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.fill.length.js new file mode 100644 index 000000000000..92bbde41dafd --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.fill.length.js @@ -0,0 +1,103 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p = p.fill( i ); + if ( p[ 0 ] !== i ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( p[ 0 ] !== p[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':fill:len='+len, f ); + } +} + +main(); From 433e55db2edfb51d00c401fbd1663b12cab33d1e Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 23:38:17 -0700 Subject: [PATCH 0474/1062] Add benchmarks --- .../benchmark/benchmark.filter.js | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.filter.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.filter.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.filter.js new file mode 100644 index 000000000000..4985cc3877c7 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.filter.js @@ -0,0 +1,84 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':filter', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.filter( predicate ); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + } + b.toc(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0.0; + } +}); + +bench( pkg+'::this_context:filter', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.filter( predicate, {} ); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + } + b.toc(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0.0; + } +}); From a289da0a4ab06679061f33d99e1d7c42d80601d6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 23:41:16 -0700 Subject: [PATCH 0475/1062] Add benchmarks --- .../benchmark/benchmark.filter.length.js | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.filter.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.filter.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.filter.length.js new file mode 100644 index 000000000000..8e3b4f2afb59 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.filter.length.js @@ -0,0 +1,115 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether a tuple value passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether a tuple value passes a test +*/ +function predicate( value ) { + return value >= 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.filter( predicate ); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + } + b.toc(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':filter:len='+len, f ); + } +} + +main(); From 6a02cfb25595f73073aebccbfa8a0490e6961e9f Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 23:44:34 -0700 Subject: [PATCH 0476/1062] Add benchmark --- .../benchmark/benchmark.find.js | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find.js new file mode 100644 index 000000000000..e10e10e6eda3 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find.js @@ -0,0 +1,86 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':find', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); + +bench( pkg+'::this_context:find', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.find( predicate, {} ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); From 0da0856d284f06f21fd3cb54a31113d5d7fcc0e6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 23:46:07 -0700 Subject: [PATCH 0477/1062] Add benchmarks --- .../benchmark/benchmark.find.length.js | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find.length.js new file mode 100644 index 000000000000..9f4070274d31 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find.length.js @@ -0,0 +1,115 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether a tuple value passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether a tuple value passes a test +*/ +function predicate( value ) { + return value > 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':find:len='+len, f ); + } +} + +main(); From f8ec11d4abf59f1704873d6357f2e359f46a4a0c Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 23:48:17 -0700 Subject: [PATCH 0478/1062] Add benchmarks --- .../benchmark/benchmark.find_index.js | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find_index.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find_index.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find_index.js new file mode 100644 index 000000000000..aab9c496cd5d --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find_index.js @@ -0,0 +1,86 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':findIndex', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); + +bench( pkg+'::this_context:findIndex', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.findIndex( predicate, {} ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); From edee36df47656b17fbc15251050b23009ead342e Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 23:49:48 -0700 Subject: [PATCH 0479/1062] Add benchmarks --- .../benchmark/benchmark.find_index.length.js | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find_index.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find_index.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find_index.length.js new file mode 100644 index 000000000000..5639c9ea09d9 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find_index.length.js @@ -0,0 +1,115 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether a tuple value passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether a tuple value passes a test +*/ +function predicate( value ) { + return value > 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':findIndex:len='+len, f ); + } +} + +main(); From d65eea710bcdc5a09ac6a3348150e3962f1f9a23 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 23:51:11 -0700 Subject: [PATCH 0480/1062] Add benchmarks --- .../benchmark/benchmark.find_field.js | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find_field.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find_field.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find_field.js new file mode 100644 index 000000000000..885f4a799c66 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find_field.js @@ -0,0 +1,86 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':findField', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.findField( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); + +bench( pkg+'::this_context:findField', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.findField( predicate, {} ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); From aa852e82e8aa27167a63787488877244ee217fec Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 28 Sep 2018 23:52:18 -0700 Subject: [PATCH 0481/1062] Add benchmarks --- .../benchmark/benchmark.find_field.length.js | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find_field.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find_field.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find_field.length.js new file mode 100644 index 000000000000..c6a6703eb2e7 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.find_field.length.js @@ -0,0 +1,115 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether a tuple value passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether a tuple value passes a test +*/ +function predicate( value ) { + return value > 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.findField( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':findField:len='+len, f ); + } +} + +main(); From 3a2560a0e5982f8e56310c72a1e967eb9c17d25a Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 13:04:08 -0700 Subject: [PATCH 0482/1062] Add benchmarks --- .../benchmark/benchmark.for_each.js | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.for_each.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.for_each.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.for_each.js new file mode 100644 index 000000000000..bd7f89bb69ce --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.for_each.js @@ -0,0 +1,92 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':forEach', function benchmark( b ) { + var count; + var Point; + var N; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + N = p.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p.forEach( fcn ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); + +bench( pkg+'::this_context:forEach', function benchmark( b ) { + var count; + var Point; + var N; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + N = p.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p.forEach( fcn, {} ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); From e6ffdb8afea71ea8b5e39e07f0bee1bbf3ffac33 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 13:08:41 -0700 Subject: [PATCH 0483/1062] Add benchmarks --- .../benchmark/benchmark.for_each.length.js | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.for_each.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.for_each.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.for_each.length.js new file mode 100644 index 000000000000..27d681abd692 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.for_each.length.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var count; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + count = 0; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p.forEach( fcn ); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + } + b.toc(); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } + + /** + * Callback invoked for each tuple element. + * + * @private + */ + function fcn() { + count += 1; + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':forEach:len='+len, f ); + } +} + +main(); From 1e7bcbb35facf07c870f1f49db0e57cfef0a8dbd Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 13:10:32 -0700 Subject: [PATCH 0484/1062] Add benchmarks --- .../benchmark/benchmark.includes.js | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.js new file mode 100644 index 000000000000..a41c5d69400e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.js @@ -0,0 +1,77 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':includes', function benchmark( b ) { + var Point; + var bool; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = p.includes( 3.14 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::this_context:includes', function benchmark( b ) { + var Point; + var bool; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = p.includes( 3.14, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From e2412807ee22e649b6ee383dc0b9c20f1ca9074e Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 13:11:45 -0700 Subject: [PATCH 0485/1062] Add benchmarks --- .../benchmark/benchmark.includes.length.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.length.js new file mode 100644 index 000000000000..5f386c5c7392 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = p.includes( 3.14 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':includes:len='+len, f ); + } +} + +main(); From 8c4814a5ca45f9b4784b1b7d4b316b63ec1b1b8c Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 13:14:54 -0700 Subject: [PATCH 0486/1062] Add benchmarks --- .../benchmark/benchmark.index_of.js | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.js new file mode 100644 index 000000000000..e584c65bcbb2 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.js @@ -0,0 +1,78 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':indexOf', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.indexOf( 3.14 ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::this_context:indexOf', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.indexOf( 3.14, {} ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 27ceb54d9cd7e30160988d13cae9c1af6ef26410 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 13:16:20 -0700 Subject: [PATCH 0487/1062] Add benchmarks --- .../benchmark/benchmark.index_of.length.js | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.length.js new file mode 100644 index 000000000000..0b2ca0a42716 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.indexOf( 3.14 ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':indexOf:len='+len, f ); + } +} + +main(); From 966d703930ae3635def49a6171472e5ed6cfe8b3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 13:26:51 -0700 Subject: [PATCH 0488/1062] Fix method order --- .../@stdlib/utils/named-typed-tuple/README.md | 40 +++++++++---------- .../utils/named-typed-tuple/lib/main.js | 30 +++++++------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 19edc4f9ba10..5415c0f31ffa 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -977,11 +977,11 @@ var n = ctx.count; // returns 3 ``` - + -#### tuple.findIndex( predicate\[, thisArg] ) +#### tuple.findField( predicate\[, thisArg] ) -Returns the index of the first tuple element for which a provided `predicate` function returns a truthy value. +Returns the field of the first tuple element for which a provided `predicate` function returns a truthy value. ```javascript var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); @@ -992,11 +992,11 @@ function predicate( v ) { return ( v < 0.0 ); } -var idx = tuple.findIndex( predicate ); -// returns 2 +var f = tuple.findField( predicate ); +// returns 'z' ``` -If a `predicate` function does not return a truthy value for any tuple element, the method returns `-1`. +If a `predicate` function does not return a truthy value for any tuple element, the method returns `undefined`. ```javascript var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); @@ -1007,8 +1007,8 @@ function predicate( v ) { return ( v < -10.0 ); } -var idx = tuple.findIndex( predicate ); -// returns -1 +var f = tuple.findField( predicate ); +// returns undefined ``` A `predicate` function is provided four arguments: @@ -1034,18 +1034,18 @@ var ctx = { 'count': 0 }; -var idx = tuple.findIndex( predicate, ctx ); -// returns 2 +var f = tuple.findField( predicate, ctx ); +// returns 'z' var n = ctx.count; // returns 3 ``` - + -#### tuple.findField( predicate\[, thisArg] ) +#### tuple.findIndex( predicate\[, thisArg] ) -Returns the field of the first tuple element for which a provided `predicate` function returns a truthy value. +Returns the index of the first tuple element for which a provided `predicate` function returns a truthy value. ```javascript var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); @@ -1056,11 +1056,11 @@ function predicate( v ) { return ( v < 0.0 ); } -var f = tuple.findField( predicate ); -// returns 'z' +var idx = tuple.findIndex( predicate ); +// returns 2 ``` -If a `predicate` function does not return a truthy value for any tuple element, the method returns `undefined`. +If a `predicate` function does not return a truthy value for any tuple element, the method returns `-1`. ```javascript var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); @@ -1071,8 +1071,8 @@ function predicate( v ) { return ( v < -10.0 ); } -var f = tuple.findField( predicate ); -// returns undefined +var idx = tuple.findIndex( predicate ); +// returns -1 ``` A `predicate` function is provided four arguments: @@ -1098,8 +1098,8 @@ var ctx = { 'count': 0 }; -var f = tuple.findField( predicate, ctx ); -// returns 'z' +var idx = tuple.findIndex( predicate, ctx ); +// returns 2 var n = ctx.count; // returns 3 diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 8152e2a9b355..bf59cc1618f6 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -475,11 +475,11 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } /** - * Returns the index of the first tuple element for which a provided predicate function returns a truthy value. + * Returns the field of the first tuple element for which a provided predicate function returns a truthy value. * * ## Notes * - * - If the predicate function never returns a truthy value, the function returns `-1`. + * - If the predicate function never returns a truthy value, the function returns `undefined`. * * @private * @memberof tuple @@ -487,10 +487,11 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple * @throws {TypeError} first argument must be a function - * @returns {integer} tuple index or `-1` + * @returns {(string|void)} tuple field name or `undefined` */ - function findIndex( predicate, thisArg ) { + function findField( predicate, thisArg ) { var bool; + var f; var i; if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); @@ -499,20 +500,20 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi throw new TypeError( 'invalid argument. First argument must be a function. Value: `' + predicate + '`.' ); } for ( i = 0; i < nfields; i++ ) { - bool = predicate.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); + f = fields[ indices[ i ] ]; + bool = predicate.call( thisArg, tuple[ i ], i, f, tuple ); if ( bool ) { - return i; + return f; } } - return -1; } /** - * Returns the field of the first tuple element for which a provided predicate function returns a truthy value. + * Returns the index of the first tuple element for which a provided predicate function returns a truthy value. * * ## Notes * - * - If the predicate function never returns a truthy value, the function returns `undefined`. + * - If the predicate function never returns a truthy value, the function returns `-1`. * * @private * @memberof tuple @@ -520,11 +521,10 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @param {*} [thisArg] - execution context * @throws {TypeError} `this` must be the host tuple * @throws {TypeError} first argument must be a function - * @returns {(string|void)} tuple field name or `undefined` + * @returns {integer} tuple index or `-1` */ - function findField( predicate, thisArg ) { + function findIndex( predicate, thisArg ) { var bool; - var f; var i; if ( this !== tuple ) { // eslint-disable-line no-invalid-this throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); @@ -533,12 +533,12 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi throw new TypeError( 'invalid argument. First argument must be a function. Value: `' + predicate + '`.' ); } for ( i = 0; i < nfields; i++ ) { - f = fields[ indices[ i ] ]; - bool = predicate.call( thisArg, tuple[ i ], i, f, tuple ); + bool = predicate.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple ); if ( bool ) { - return f; + return i; } } + return -1; } /** From 92aa60e239418263d1f9c70d4ddf17e23aacf74a Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 13:45:49 -0700 Subject: [PATCH 0489/1062] Add `fieldOf` method --- .../@stdlib/utils/named-typed-tuple/README.md | 42 +++++++++++ .../utils/named-typed-tuple/docs/repl.txt | 73 ++++++++++++++----- .../utils/named-typed-tuple/lib/main.js | 46 ++++++++++++ 3 files changed, 141 insertions(+), 20 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 5415c0f31ffa..86e2f29c63c1 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -792,6 +792,48 @@ var n = ctx.count; // returns 2 ``` + + +#### tuple.fieldOf( searchElement\[, fromIndex] ) + +Returns the field of the first tuple element strictly equal to a search element. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var f = tuple.fieldOf( -1.0 ); +// returns 'z' + +f = tuple.fieldOf( 2.0 ); +// returns undefined +``` + +By default, the method searches the entire tuple (`fromIndex = 0`). To begin searching from a specific tuple index, provide a `fromIndex`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var f = tuple.fieldOf( 1.0, 1 ); +// returns undefined +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last tuple element. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0 ] ); + +var f = tuple.fieldOf( 1.0, -2 ); +// returns undefined +``` + +The method does **not** distinguish between signed and unsigned zero. + #### tuple.fill( value\[, start\[, end]] ) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 301fe2a4c217..8ec7d245c6fe 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -487,6 +487,39 @@ tuple.every( predicate[, thisArg] ) false +tuple.fieldOf( searchElement[, fromIndex] ) + Returns the field of the first tuple element strictly equal to a search + element. + + The method does not distinguish between signed and unsigned zero. + + If unable to locate a search element, the method returns `undefined`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Tuple index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last tuple element. + Default: 0. + + Returns + ------- + field: string|undefined + Tuple field. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); + > var p = factory( [ 1.0, 0.0, -1.0 ] ); + > var f = p.fieldOf( 2.0 ) + undefined + > f = p.fieldOf( -1.0 ) + 'z' + + tuple.fill( value[, start[, end]] ) Fills a tuple from a start index to an end index (non-inclusive) with a provided value. @@ -597,8 +630,8 @@ tuple.find( predicate[, thisArg] ) -1.0 -tuple.findIndex( predicate[, thisArg] ) - Returns the index of the first tuple element for which a provided predicate +tuple.findField( predicate[, thisArg] ) + Returns the field of the first tuple element for which a provided predicate function returns a truthy value. A predicate function is provided the following arguments: @@ -609,7 +642,7 @@ tuple.findIndex( predicate[, thisArg] ) - tuple: tuple on which the method is invoked. If a predicate function never returns a truthy value, the method returns - `-1`. + `undefined`. Parameters ---------- @@ -621,20 +654,20 @@ tuple.findIndex( predicate[, thisArg] ) Returns ------- - idx: integer - Tuple index. + field: string|undefined + Tuple field. Examples -------- > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); > var p = factory( [ 1.0, 0.0, -1.0 ] ); > function predicate( v ) { return ( v < 0.0 ); }; - > var idx = p.findIndex( predicate ) - 2 + > var f = p.findField( predicate ) + 'z' -tuple.findField( predicate[, thisArg] ) - Returns the field of the first tuple element for which a provided predicate +tuple.findIndex( predicate[, thisArg] ) + Returns the index of the first tuple element for which a provided predicate function returns a truthy value. A predicate function is provided the following arguments: @@ -645,7 +678,7 @@ tuple.findField( predicate[, thisArg] ) - tuple: tuple on which the method is invoked. If a predicate function never returns a truthy value, the method returns - `undefined`. + `-1`. Parameters ---------- @@ -657,16 +690,16 @@ tuple.findField( predicate[, thisArg] ) Returns ------- - field: string|undefined - Tuple field. + idx: integer + Tuple index. Examples -------- > var factory = {{alias}}( [ 'x', 'y', 'z' ] ); > var p = factory( [ 1.0, 0.0, -1.0 ] ); > function predicate( v ) { return ( v < 0.0 ); }; - > var f = p.findField( predicate ) - 'z' + > var idx = p.findIndex( predicate ) + 2 tuple.forEach( fcn[, thisArg] ) @@ -710,8 +743,8 @@ tuple.includes( searchElement[, fromIndex] ) fromIndex: integer (optional) Tuple index from which to begin searching. If provided a negative value, - the method resolves the start index relative to the last tuple - element. Default: 0. + the method resolves the start index relative to the last tuple element. + Default: 0. Returns ------- @@ -743,8 +776,8 @@ tuple.indexOf( searchElement[, fromIndex] ) fromIndex: integer (optional) Tuple index from which to begin searching. If provided a negative value, - the method resolves the start index relative to the last tuple - element. Default: 0. + the method resolves the start index relative to the last tuple element. + Default: 0. Returns ------- @@ -869,8 +902,8 @@ tuple.lastIndexOf( searchElement[, fromIndex] ) fromIndex: integer (optional) Tuple index from which to begin searching. If provided a negative value, - the method resolves the start index relative to the last tuple - element. Default: -1. + the method resolves the start index relative to the last tuple element. + Default: -1. Returns ------- diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index bf59cc1618f6..8c6e45ca9c78 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -183,6 +183,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi // Note: keep in alphabetical order tuple.entries = entries; tuple.every = every; + tuple.fieldOf = fieldOf; tuple.filter = filter; tuple.find = find; tuple.findIndex = findIndex; @@ -401,6 +402,51 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi return true; } + /** + * Returns the field of the first tuple element strictly equal to a search element. + * + * ## Notes + * + * - The function does not distinguish between signed and unsigned zero. + * - If unable to locate a search element, the function returns `undefined`. + * + * @private + * @memberof tuple + * @param {*} searchElement - search element + * @param {integer} [fromIndex] - tuple index from which to begin searching + * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} second argument must be an integer + * @returns {(string|void)} tuple field name or `undefined` + */ + function fieldOf( searchElement ) { + var i; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + if ( arguments.length > 1 ) { + i = arguments[ 0 ]; + if ( !isInteger( i ) ) { + throw new TypeError( 'invalid argument. Second argument must be an integer. Value: `' + i + '`.' ); + } + if ( i >= nfields ) { + return; + } + if ( i < 0 ) { + i = nfields + i; + if ( i < 0 ) { + i = 0; + } + } + } else { + i = 0; + } + for ( ; i < nfields; i++ ) { + if ( tuple[ i ] === searchElement ) { + return fields[ indices[ i ] ]; + } + } + } + /** * Creates a new tuple which includes those elements for which a predicate function returns a truthy value. * From 26359f20d1d000e45627354cdf977f1a43fc78d2 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 13:49:11 -0700 Subject: [PATCH 0490/1062] Fix missing variable declaration --- lib/node_modules/@stdlib/utils/named-typed-tuple/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 86e2f29c63c1..7a91c92a783d 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1279,7 +1279,7 @@ var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); var tuple = factory( [ 1.0, 0.0, -1.0 ] ); -idx = tuple.indexOf( 1.0, -2 ); +var idx = tuple.indexOf( 1.0, -2 ); // returns -1 ``` From 8fa0051d406ae748ea0e73547ce495853dc44cb3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 13:59:48 -0700 Subject: [PATCH 0491/1062] Add `lastFieldOf` method --- .../@stdlib/utils/named-typed-tuple/README.md | 56 ++++++++++++++++--- .../utils/named-typed-tuple/docs/repl.txt | 35 ++++++++++++ .../utils/named-typed-tuple/lib/main.js | 47 +++++++++++++++- 3 files changed, 130 insertions(+), 8 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 7a91c92a783d..93e23bab4ba0 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -803,10 +803,10 @@ var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); var tuple = factory( [ 1.0, 0.0, -1.0 ] ); -var f = tuple.fieldOf( -1.0 ); +var field = tuple.fieldOf( -1.0 ); // returns 'z' -f = tuple.fieldOf( 2.0 ); +field = tuple.fieldOf( 2.0 ); // returns undefined ``` @@ -817,7 +817,7 @@ var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); var tuple = factory( [ 1.0, 0.0, -1.0 ] ); -var f = tuple.fieldOf( 1.0, 1 ); +var field = tuple.fieldOf( 1.0, 1 ); // returns undefined ``` @@ -828,7 +828,7 @@ var factory = namedtypedtuple( [ 'x', 'y', 'z' ] ); var tuple = factory( [ 1.0, 0.0, -1.0 ] ); -var f = tuple.fieldOf( 1.0, -2 ); +var field = tuple.fieldOf( 1.0, -2 ); // returns undefined ``` @@ -1034,7 +1034,7 @@ function predicate( v ) { return ( v < 0.0 ); } -var f = tuple.findField( predicate ); +var field = tuple.findField( predicate ); // returns 'z' ``` @@ -1049,7 +1049,7 @@ function predicate( v ) { return ( v < -10.0 ); } -var f = tuple.findField( predicate ); +var field = tuple.findField( predicate ); // returns undefined ``` @@ -1076,7 +1076,7 @@ var ctx = { 'count': 0 }; -var f = tuple.findField( predicate, ctx ); +var field = tuple.findField( predicate, ctx ); // returns 'z' var n = ctx.count; @@ -1383,6 +1383,48 @@ idx = tuple.key2ind( 'foo' ); // returns -1 ``` + + +#### tuple.lastFieldOf( searchElement\[, fromIndex] ) + +Returns the field of the last tuple element strictly equal to a search element, iterating from right to left. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] ); + +var field = tuple.lastFieldOf( 0.0 ); +// returns 'w' + +field = tuple.lastFieldOf( 2.0 ); +// returns undefined +``` + +By default, the method searches the entire tuple (`fromIndex = -1`). To begin searching from a specific tuple index, provide a `fromIndex`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] ); + +var field = tuple.lastFieldOf( 0.0, 3 ); +// returns 'y' +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last tuple element. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] ); + +var tuple = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] ); + +var field = tuple.lastFieldOf( 0.0, -2 ); +// returns 'y' +``` + +The method does **not** distinguish between signed and unsigned zero. + #### tuple.lastIndexOf( searchElement\[, fromIndex] ) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 8ec7d245c6fe..02e2b348a232 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -885,6 +885,41 @@ tuple.key2ind( field ) 1 +tuple.lastFieldOf( searchElement[, fromIndex] ) + Returns the field of the last tuple element strictly equal to a search + element. + + The method iterates from the last tuple element to the first tuple element. + + The method does not distinguish between signed and unsigned zero. + + If unable to locate a search element, the method returns `undefined`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Tuple index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last tuple element. + Default: -1. + + Returns + ------- + field: string|undefined + Tuple field. + + Examples + -------- + > var factory = {{alias}}( [ 'x', 'y', 'z', 'w', 'v' ] ); + > var p = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] ); + > var f = p.lastFieldOf( 2.0 ) + undefined + > f = p.lastFieldOf( 0.0 ) + 'w' + + tuple.lastIndexOf( searchElement[, fromIndex] ) Returns the index of the last tuple element strictly equal to a search element. diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 8c6e45ca9c78..3a14330c88bb 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -192,6 +192,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi tuple.ind2key = ind2key; tuple.key2ind = key2ind; tuple.keys = keys; + tuple.lastFieldOf = lastFieldOf; tuple.map = map; tuple.reduce = reduce; tuple.reduceRight = reduceRight; @@ -413,7 +414,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @private * @memberof tuple * @param {*} searchElement - search element - * @param {integer} [fromIndex] - tuple index from which to begin searching + * @param {integer} [fromIndex=0] - tuple index from which to begin searching * @throws {TypeError} `this` must be the host tuple * @throws {TypeError} second argument must be an integer * @returns {(string|void)} tuple field name or `undefined` @@ -767,6 +768,50 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } } + /** + * Returns the field of the last tuple element strictly equal to a search element, iterating from right to left. + * + * ## Notes + * + * - The function does not distinguish between signed and unsigned zero. + * - If unable to locate a search element, the function returns `undefined`. + * + * @private + * @memberof tuple + * @param {*} searchElement - search element + * @param {integer} [fromIndex=tuple.length] - tuple index from which to begin searching + * @throws {TypeError} `this` must be the host tuple + * @throws {TypeError} second argument must be an integer + * @returns {(string|void)} tuple field name or `undefined` + */ + function lastFieldOf( searchElement ) { + var i; + if ( this !== tuple ) { // eslint-disable-line no-invalid-this + throw new TypeError( 'invalid invocation. `this` is not host tuple.' ); + } + if ( arguments.length > 1 ) { + i = arguments[ 0 ]; + if ( !isInteger( i ) ) { + throw new TypeError( 'invalid argument. Second argument must be an integer. Value: `' + i + '`.' ); + } + if ( i >= nfields ) { + i = nfields - 1; + } else if ( i < 0 ) { + i = nfields + i; + if ( i < 0 ) { + return; + } + } + } else { + i = nfields - 1; + } + for ( ; i >= 0; i-- ) { + if ( tuple[ i ] === searchElement ) { + return fields[ indices[ i ] ]; + } + } + } + /** * Maps each tuple element to an element in a new tuple. * From 193bfd35d698c4b17db2b1338500283dece4bd17 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 14:04:41 -0700 Subject: [PATCH 0492/1062] Add benchmarks --- .../benchmark/benchmark.field_of.js | 53 +++++++++ .../benchmark/benchmark.field_of.length.js | 104 ++++++++++++++++++ .../benchmark/benchmark.index_of.js | 25 ----- .../utils/named-typed-tuple/lib/main.js | 2 +- 4 files changed, 158 insertions(+), 26 deletions(-) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.field_of.js create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.field_of.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.field_of.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.field_of.js new file mode 100644 index 000000000000..30d42b5d1f36 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.field_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':fieldOf', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.fieldOf( 3.14 ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.field_of.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.field_of.length.js new file mode 100644 index 000000000000..4afdf2397b47 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.field_of.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.fieldOf( 3.14 ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':fieldOf:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.js index e584c65bcbb2..b0d5c8d936d6 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.js @@ -51,28 +51,3 @@ bench( pkg+':indexOf', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); - -bench( pkg+'::this_context:indexOf', function benchmark( b ) { - var Point; - var out; - var p; - var i; - - Point = namedtypedtuple( [ 'x', 'y' ] ); - p = new Point(); - - // Benchmark worst case scenario... - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = p.indexOf( 3.14, {} ); - if ( out !== -1 ) { - b.fail( 'should return -1' ); - } - } - b.toc(); - if ( out !== -1 ) { - b.fail( 'should return -1' ); - } - b.pass( 'benchmark finished' ); - b.end(); -}); diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 3a14330c88bb..da956937b179 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -779,7 +779,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi * @private * @memberof tuple * @param {*} searchElement - search element - * @param {integer} [fromIndex=tuple.length] - tuple index from which to begin searching + * @param {integer} [fromIndex=-1] - tuple index from which to begin searching * @throws {TypeError} `this` must be the host tuple * @throws {TypeError} second argument must be an integer * @returns {(string|void)} tuple field name or `undefined` From d031186e29e9acecaf3040ac15e32ddb5d9b8f00 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 14:09:24 -0700 Subject: [PATCH 0493/1062] Add benchmarks --- .../benchmark/benchmark.last_index_of.js | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_index_of.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_index_of.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_index_of.js new file mode 100644 index 000000000000..dcb33a97b698 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':lastIndexOf', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.lastIndexOf( 3.14 ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 736c53a3015c12d76377ac9327f827fdb6049d4a Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 14:13:36 -0700 Subject: [PATCH 0494/1062] Add benchmarks --- .../benchmark/benchmark.last_field_of.js | 53 +++++++++ .../benchmark.last_index_of.length.js | 104 ++++++++++++++++++ 2 files changed, 157 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_field_of.js create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_index_of.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_field_of.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_field_of.js new file mode 100644 index 000000000000..d3f058574562 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_field_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':lastFieldOf', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.lastFieldOf( 3.14 ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_index_of.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_index_of.length.js new file mode 100644 index 000000000000..7c0194b5ce8b --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_index_of.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.lastIndexOf( 3.14 ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':lastIndexOf:len='+len, f ); + } +} + +main(); From d22b6d169575cb8fe51c5a3332b3e86877b2c63d Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 14:16:49 -0700 Subject: [PATCH 0495/1062] Add benchmarks --- .../benchmark.last_field_of.length.js | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_field_of.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_field_of.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_field_of.length.js new file mode 100644 index 000000000000..958250aacc3c --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_field_of.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.lastFieldOf( 3.14 ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':lastFieldOf:len='+len, f ); + } +} + +main(); From 01c87928e31f581386fafded18456ed8778d49d5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 15:28:12 -0700 Subject: [PATCH 0496/1062] Remove unused dev dep --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 84ee6f1c0784..6a3344771dbf 100644 --- a/package.json +++ b/package.json @@ -172,8 +172,7 @@ "uglify-es": "^3.1.1", "uglifyify": "^5.0.0", "unified-lint-rule": "^1.0.1", - "unist-util-visit": "^1.1.0", - "yaml": "^0.3.0" + "unist-util-visit": "^1.1.0" }, "engines": { "node": ">=0.10.0", From 121cd67f93e2c2162dc0d7e1e51cde37b5f5e00a Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 15:37:08 -0700 Subject: [PATCH 0497/1062] Add benchmarks --- .../benchmark/benchmark.ind2key.js | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.ind2key.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.ind2key.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.ind2key.js new file mode 100644 index 000000000000..914964a5363e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.ind2key.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':ind2key', function benchmark( b ) { + var Point; + var out; + var N; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + N = p.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.ind2key( i%N ); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 1d6e2584269d3eee73216134af412ce34055bbcc Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 15:39:37 -0700 Subject: [PATCH 0498/1062] Add benchmarks --- .../benchmark/benchmark.ind2key.length.js | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.ind2key.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.ind2key.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.ind2key.length.js new file mode 100644 index 000000000000..7f8db76699df --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.ind2key.length.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var N; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + N = p.length; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.ind2key( i%N ); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':ind2key:len='+len, f ); + } +} + +main(); From f0a42c3da1380c430ac85ccafc187d93e40007c4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 15:41:03 -0700 Subject: [PATCH 0499/1062] Add benchmarks --- .../benchmark/benchmark.keys.js | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.keys.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.keys.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.keys.js new file mode 100644 index 000000000000..cac6091ad7b2 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.keys.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':keys', function benchmark( b ) { + var Point; + var iter; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = p.keys(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 8d4f12b6fa4f581f72787fa96e4c9fe3b8db94e4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 15:43:21 -0700 Subject: [PATCH 0500/1062] Add benchmarks --- .../benchmark/benchmark.key2ind.js | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.key2ind.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.key2ind.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.key2ind.js new file mode 100644 index 000000000000..fd746c131d10 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.key2ind.js @@ -0,0 +1,56 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':key2ind', function benchmark( b ) { + var fields; + var Point; + var out; + var N; + var p; + var i; + + fields = [ 'x', 'y' ]; + Point = namedtypedtuple( fields ); + p = new Point(); + N = p.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.key2ind( fields[ i%N ] ); + if ( out === -1 ) { + b.fail( 'should not return -1' ); + } + } + b.toc(); + if ( out === -1 ) { + b.fail( 'should not return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From fd3b82f0f017a51ccae1932db189f9392fbd8dab Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 15:45:20 -0700 Subject: [PATCH 0501/1062] Add benchmarks --- .../benchmark/benchmark.key2ind.length.js | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.key2ind.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.key2ind.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.key2ind.length.js new file mode 100644 index 000000000000..a3de6f2eed96 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.key2ind.length.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var N; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + N = p.length; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.key2ind( fields[ i%N ] ); + if ( out === -1 ) { + b.fail( 'should not return -1' ); + } + } + b.toc(); + if ( out === -1 ) { + b.fail( 'should not return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':key2ind:len='+len, f ); + } +} + +main(); From 5baba8d87652e85f5036528a225d265da546abd5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 15:53:10 -0700 Subject: [PATCH 0502/1062] Measure worst case scenarios --- .../named-typed-tuple/benchmark/benchmark.ind2key.js | 11 ++++++----- .../benchmark/benchmark.ind2key.length.js | 2 +- .../named-typed-tuple/benchmark/benchmark.key2ind.js | 12 ++++++------ .../benchmark/benchmark.key2ind.length.js | 12 +++++++----- 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.ind2key.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.ind2key.js index 914964a5363e..b444b030810b 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.ind2key.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.ind2key.js @@ -38,16 +38,17 @@ bench( pkg+':ind2key', function benchmark( b ) { p = new Point(); N = p.length; + // Benchmark worst case scenario... b.tic(); for ( i = 0; i < b.iterations; i++ ) { - out = p.ind2key( i%N ); - if ( typeof out !== 'string' ) { - b.fail( 'should return a string' ); + out = p.ind2key( N+i ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); } } b.toc(); - if ( typeof out !== 'string' ) { - b.fail( 'should return a string' ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); } b.pass( 'benchmark finished' ); b.end(); diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.ind2key.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.ind2key.length.js index 7f8db76699df..93a30af1c0a0 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.ind2key.length.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.ind2key.length.js @@ -64,7 +64,7 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - out = p.ind2key( i%N ); + out = p.ind2key( N-1 ); if ( typeof out !== 'string' ) { b.fail( 'should return a string' ); } diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.key2ind.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.key2ind.js index fd746c131d10..20bd0d0cc494 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.key2ind.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.key2ind.js @@ -35,21 +35,21 @@ bench( pkg+':key2ind', function benchmark( b ) { var p; var i; - fields = [ 'x', 'y' ]; - Point = namedtypedtuple( fields ); + fields = [ 'z', 'w' ]; + Point = namedtypedtuple( [ 'x', 'y' ] ); p = new Point(); N = p.length; b.tic(); for ( i = 0; i < b.iterations; i++ ) { out = p.key2ind( fields[ i%N ] ); - if ( out === -1 ) { - b.fail( 'should not return -1' ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); } } b.toc(); - if ( out === -1 ) { - b.fail( 'should not return -1' ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); } b.pass( 'benchmark finished' ); b.end(); diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.key2ind.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.key2ind.length.js index a3de6f2eed96..570f3cf43803 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.key2ind.length.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.key2ind.length.js @@ -48,7 +48,9 @@ function createBenchmark( len ) { } Point = namedtypedtuple( fields ); p = new Point(); - N = p.length; + + fields = [ 'x', 'y', 'z' ]; + N = fields.length; return benchmark; @@ -65,13 +67,13 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { out = p.key2ind( fields[ i%N ] ); - if ( out === -1 ) { - b.fail( 'should not return -1' ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); } } b.toc(); - if ( out === -1 ) { - b.fail( 'should not return -1' ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); } b.pass( 'benchmark finished' ); b.end(); From 800736240984417088017e2ee78249dceeade23a Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 15:55:57 -0700 Subject: [PATCH 0503/1062] Add benchmark --- .../benchmark/benchmark.join.js | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.join.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.join.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.join.js new file mode 100644 index 000000000000..8d321c478176 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.join.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':join', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 2540018a8c3f30ca857820fdeb3a6978b1d03ada Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 15:57:34 -0700 Subject: [PATCH 0504/1062] Add benchmarks --- .../benchmark/benchmark.join.length.js | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.join.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.join.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.join.length.js new file mode 100644 index 000000000000..f4337a17ecba --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.join.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':join:len='+len, f ); + } +} + +main(); From a22e3dc953c1d0adfadb7ad3fc4cd37ef1b35b4d Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 15:59:43 -0700 Subject: [PATCH 0505/1062] Add benchmarks --- .../benchmark/benchmark.map.js | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.map.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.map.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.map.js new file mode 100644 index 000000000000..80f40d5af28c --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.map.js @@ -0,0 +1,84 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':map', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.map( fcn ); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + } + b.toc(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1.0; + } +}); + +bench( pkg+'::this_context:map', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.map( fcn, {} ); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + } + b.toc(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1.0; + } +}); From 12e9d639715134317ef46d1a337869dd66bca5b9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 16:01:37 -0700 Subject: [PATCH 0506/1062] Add benchmarks --- .../benchmark/benchmark.map.length.js | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.map.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.map.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.map.length.js new file mode 100644 index 000000000000..9d4bb3073de7 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.map.length.js @@ -0,0 +1,115 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Maps a tuple value to a new value. +* +* @private +* @param {*} value - tuple value +* @returns {*} new value +*/ +function fcn( value ) { + return value + 1.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.map( fcn ); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + } + b.toc(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':map:len='+len, f ); + } +} + +main(); From 8d8fd568561b07be48665c88c197b1851d1c749c Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 16:48:20 -0700 Subject: [PATCH 0507/1062] Add benchmarks --- .../benchmark/benchmark.reduce.js | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reduce.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reduce.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reduce.js new file mode 100644 index 000000000000..23cf8a05bb4e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reduce.js @@ -0,0 +1,84 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduce', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1.0; + } +}); + +bench( pkg+'::initial_value:reduce', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.reduce( fcn, 3.14 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1.0; + } +}); From 9121488a8825ace36010993e2173e4b5e6434349 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 16:50:59 -0700 Subject: [PATCH 0508/1062] Add benchmarks --- .../benchmark/benchmark.reduce.length.js | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reduce.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reduce.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reduce.length.js new file mode 100644 index 000000000000..504614d8c661 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reduce.length.js @@ -0,0 +1,116 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - tuple value +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduce:len='+len, f ); + } +} + +main(); From eff9ba1e4b571cefc87f20e8c720da163bc3806d Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 16:52:13 -0700 Subject: [PATCH 0509/1062] Add benchmarks --- .../benchmark/benchmark.reduce_right.js | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reduce_right.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reduce_right.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reduce_right.js new file mode 100644 index 000000000000..7bc784b48d81 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reduce_right.js @@ -0,0 +1,84 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduceRight', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1.0; + } +}); + +bench( pkg+'::initial_value:reduceRight', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.reduceRight( fcn, 3.14 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1.0; + } +}); From e2b8d64f48088d919ea4803a6ec55b2df03ed3c4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 16:53:13 -0700 Subject: [PATCH 0510/1062] Add benchmarks --- .../benchmark.reduce_right.length.js | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reduce_right.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reduce_right.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reduce_right.length.js new file mode 100644 index 000000000000..e8cd43d5bf56 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reduce_right.length.js @@ -0,0 +1,116 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - tuple value +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduceRight:len='+len, f ); + } +} + +main(); From ad6dff54adc7567feaf7beb3baaa22f883520a60 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 17:01:17 -0700 Subject: [PATCH 0511/1062] Add comment and add benchmarks --- .../benchmark/benchmark.reverse.js | 52 +++++++++++++++++++ .../utils/named-typed-tuple/lib/main.js | 1 + 2 files changed, 53 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reverse.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reverse.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reverse.js new file mode 100644 index 000000000000..ad4df1e29279 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reverse.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reverse', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.reverse(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + } + b.toc(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index da956937b179..a8e9769b3545 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -930,6 +930,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi tuple[ i ] = tuple[ j ]; tuple[ j ] = tmp; } + // Because the indices are bounded [0,nfields), we can use simple arithmetic to "reverse" index values in-place... for ( i = 0; i < nfields; i++ ) { indices[ i ] = nfields - indices[ i ] - 1; } From 83aedfe7117e68626f35b55f1f2c297f6d4ac79f Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 17:02:45 -0700 Subject: [PATCH 0512/1062] Add benchmarks --- .../benchmark/benchmark.reverse.length.js | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reverse.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reverse.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reverse.length.js new file mode 100644 index 000000000000..d08d763813de --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reverse.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.reverse(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a function' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reverse:len='+len, f ); + } +} + +main(); From 387b8ee7ee2aba90a78ee796e8dce34af943f4c3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 17:04:36 -0700 Subject: [PATCH 0513/1062] Fix iteration bug --- lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index a8e9769b3545..b78c35bcc450 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -996,7 +996,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi } f = []; tmp = []; - for ( i = 0; i < j; i++ ) { + for ( ; i < j; i++ ) { f.push( fields[ indices[i] ] ); tmp.push( tuple[ i ] ); } From a901882c27962693874ce250f029a049013c09c0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 17:10:08 -0700 Subject: [PATCH 0514/1062] Revert dev dep removal and update example --- lib/node_modules/@stdlib/utils/named-typed-tuple/README.md | 3 +++ package.json | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 93e23bab4ba0..134f155d3188 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1728,6 +1728,9 @@ var p2 = p1.slice(); var bool = ( p1 === p2 ); // returns false +bool = ( p1.buffer === p2.buffer ); +// returns false + var x = p2.x; // returns 1.0 diff --git a/package.json b/package.json index 6a3344771dbf..4429740f803d 100644 --- a/package.json +++ b/package.json @@ -172,7 +172,8 @@ "uglify-es": "^3.1.1", "uglifyify": "^5.0.0", "unified-lint-rule": "^1.0.1", - "unist-util-visit": "^1.1.0" + "unist-util-visit": "^1.1.0", + "yaml": "^1.0.0" }, "engines": { "node": ">=0.10.0", From 7418b9a09077dc1882913cd3db9e0ff9c1a18aa1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 29 Sep 2018 17:10:48 -0700 Subject: [PATCH 0515/1062] Update example --- lib/node_modules/@stdlib/utils/named-typed-tuple/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 134f155d3188..c2276420c4e5 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1992,6 +1992,9 @@ var p2 = p1.subtuple(); var bool = ( p1 === p2 ); // returns false +bool = ( p1.buffer === p2.buffer ); +// returns true + var len = p2.length; // returns 3 From c7308e752f917e28d24aaa90c85e423e64acdf9d Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 00:00:08 -0700 Subject: [PATCH 0516/1062] Add benchmarks --- .../benchmark/benchmark.slice.js | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.slice.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.slice.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.slice.js new file mode 100644 index 000000000000..2799aecf5a44 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.slice.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':slice', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.slice(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + } + b.toc(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From ccc520accadcaf80a9f8f928074658e454feb3dd Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 00:01:17 -0700 Subject: [PATCH 0517/1062] Add benchmarks --- .../benchmark/benchmark.slice.length.js | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.slice.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.slice.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.slice.length.js new file mode 100644 index 000000000000..0c6718cd55c7 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.slice.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.slice(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a function' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 4; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':slice:len='+len, f ); + } +} + +main(); From 8e561b9d051c70fa999c6503c57d0eb942bc1b7e Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 00:04:11 -0700 Subject: [PATCH 0518/1062] Add benchmarks --- .../benchmark/benchmark.sort.js | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.sort.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.sort.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.sort.js new file mode 100644 index 000000000000..80c2ca42a6e0 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.sort.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var randu = require( '@stdlib/random/base/randu' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':sort', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point( [ randu(), randu() ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p[ 0 ] = randu(); + out = p.sort(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + } + b.toc(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 343830f719bf516445140cd11ba4bd30a592fbfa Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 00:07:50 -0700 Subject: [PATCH 0519/1062] Add benchmarks --- .../benchmark/benchmark.sort.length.js | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.sort.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.sort.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.sort.length.js new file mode 100644 index 000000000000..90a7515c8b1c --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.sort.length.js @@ -0,0 +1,111 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randu = require( '@stdlib/random/base/randu' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var data; + var N; + var p; + var i; + + fields = []; + data = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + data.push( randu() ); + } + Point = namedtypedtuple( fields ); + p = new Point( data ); + N = p.length; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + p[ i%N ] = randu(); + out = p.sort(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a function' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':sort:len='+len, f ); + } +} + +main(); From 1d79973d4a1f47fc7b47ad61b0793d346d159a67 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 00:10:17 -0700 Subject: [PATCH 0520/1062] Add benchmarks --- .../benchmark/benchmark.subarray.js | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.subarray.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.subarray.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.subarray.js new file mode 100644 index 000000000000..6c82c130131f --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.subarray.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isTypedArray = require( '@stdlib/assert/is-typed-array' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':subarray', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return a typed array' ); + } + } + b.toc(); + if ( !isTypedArray( out ) ) { + b.fail( 'should return a typed array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From dc4bac845c4010025b129eae589db37a08670b97 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 00:12:10 -0700 Subject: [PATCH 0521/1062] Add benchmarks --- .../benchmark/benchmark.subarray.length.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.subarray.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.subarray.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.subarray.length.js new file mode 100644 index 000000000000..6f916a8788f7 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.subarray.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isTypedArray = require( '@stdlib/assert/is-typed-array' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isTypedArray( out ) ) { + b.fail( 'should return a typed array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':subarray:len='+len, f ); + } +} + +main(); From 716e398e9c626bb6bc2ac6ca2146c3021daef612 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 00:12:39 -0700 Subject: [PATCH 0522/1062] Fix messages --- .../named-typed-tuple/benchmark/benchmark.reverse.length.js | 4 ++-- .../named-typed-tuple/benchmark/benchmark.slice.length.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reverse.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reverse.length.js index d08d763813de..339b1444d349 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reverse.length.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.reverse.length.js @@ -64,12 +64,12 @@ function createBenchmark( len ) { for ( i = 0; i < b.iterations; i++ ) { out = p.reverse(); if ( typeof out.subtuple !== 'function' ) { - b.fail( 'should return a function' ); + b.fail( 'should return a tuple' ); } } b.toc(); if ( typeof out.subtuple !== 'function' ) { - b.fail( 'should return a function' ); + b.fail( 'should return a tuple' ); } b.pass( 'benchmark finished' ); b.end(); diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.slice.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.slice.length.js index 0c6718cd55c7..71b30ebd6e59 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.slice.length.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.slice.length.js @@ -64,12 +64,12 @@ function createBenchmark( len ) { for ( i = 0; i < b.iterations; i++ ) { out = p.slice(); if ( typeof out.subtuple !== 'function' ) { - b.fail( 'should return a function' ); + b.fail( 'should return a tuple' ); } } b.toc(); if ( typeof out.subtuple !== 'function' ) { - b.fail( 'should return a function' ); + b.fail( 'should return a tuple' ); } b.pass( 'benchmark finished' ); b.end(); From f1012f29e3374af38114b46518d8312bba74db64 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 00:14:25 -0700 Subject: [PATCH 0523/1062] Add benchmarks --- .../benchmark/benchmark.subtuple.js | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.subtuple.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.subtuple.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.subtuple.js new file mode 100644 index 000000000000..75ddf190b59f --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.subtuple.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':subtuple', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.subtuple(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + } + b.toc(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 28cceaa188c9b5eb9f1011fc5671c5df0e3ac400 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 00:15:58 -0700 Subject: [PATCH 0524/1062] Add benchmarks --- .../benchmark/benchmark.subtuple.length.js | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.subtuple.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.subtuple.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.subtuple.length.js new file mode 100644 index 000000000000..2750214e9dde --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.subtuple.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.subtuple(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + } + b.toc(); + if ( typeof out.subtuple !== 'function' ) { + b.fail( 'should return a tuple' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 4; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':subtuple:len='+len, f ); + } +} + +main(); From e0d2fee4ad81b38f7a44936e631fa647c7937726 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 00:17:50 -0700 Subject: [PATCH 0525/1062] Add benchmarks --- .../benchmark/benchmark.to_json.js | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_json.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_json.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_json.js new file mode 100644 index 000000000000..ec524e14fc68 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_json.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toJSON', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.toJSON(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 7dc04d836eaa596cf94f03fd52d0e1428ac6b94a Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 00:20:00 -0700 Subject: [PATCH 0526/1062] Add benchmarks --- .../benchmark/benchmark.to_json.length.js | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_json.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_json.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_json.length.js new file mode 100644 index 000000000000..515f509b7a54 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_json.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.toJSON(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toJSON:len='+len, f ); + } +} + +main(); From 289a2040573fe8f4f6228e9cd5fd214c01583ace Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 00:20:48 -0700 Subject: [PATCH 0527/1062] Add benchmarks --- .../benchmark/benchmark.to_string.js | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_string.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_string.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_string.js new file mode 100644 index 000000000000..e7c32f531668 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_string.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toString', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From cc1aec538bd1d7cebd02c8d62f2669c676317187 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 00:23:03 -0700 Subject: [PATCH 0528/1062] Add benchmarks --- .../benchmark/benchmark.to_string.length.js | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_string.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_string.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_string.length.js new file mode 100644 index 000000000000..f00369c05d09 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_string.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toString:len='+len, f ); + } +} + +main(); From 6170d57181211132b08f4a1c6503462d7c30fd41 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 00:24:12 -0700 Subject: [PATCH 0529/1062] Add benchmarks --- .../benchmark/benchmark.to_locale_string.js | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_locale_string.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_locale_string.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_locale_string.js new file mode 100644 index 000000000000..c7e09475d96e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_locale_string.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toLocaleString', function benchmark( b ) { + var Point; + var out; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 4a1ca5d195e4d99970dbf52fad5c9f665cd98b63 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 00:25:19 -0700 Subject: [PATCH 0530/1062] Add benchmarks --- .../benchmark.to_locale_string.length.js | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_locale_string.length.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_locale_string.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_locale_string.length.js new file mode 100644 index 000000000000..1c7ba0e27dc6 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.to_locale_string.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var fields; + var Point; + var p; + var i; + + fields = []; + for ( i = 0; i < len+1; i++ ) { + fields.push( '_'+i.toString() ); + } + Point = namedtypedtuple( fields ); + p = new Point(); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = p.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toLocaleString:len='+len, f ); + } +} + +main(); From 252df0b3a35836ff9c235ea6f534deab2e3a0169 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 00:26:53 -0700 Subject: [PATCH 0531/1062] Add benchmarks --- .../benchmark/benchmark.values.js | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.values.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.values.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.values.js new file mode 100644 index 000000000000..44d55c545838 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.values.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var namedtypedtuple = require( './../lib' ); + + +// MAIN // + +bench( pkg+':values', function benchmark( b ) { + var Point; + var iter; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = p.values(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 13b4e58f717ede0945d9ae3c39d49838c91da5f3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 01:04:51 -0700 Subject: [PATCH 0532/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 5e71ae01ed7a..a3e76bf94895 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -1053,6 +1053,15 @@ setReadOnly( utils, 'merge', require( '@stdlib/utils/merge' ) ); */ setReadOnly( utils, 'moveProperty', require( '@stdlib/utils/move-property' ) ); +/** +* @name namedtypedtuple +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/named-typed-tuple} +*/ +setReadOnly( utils, 'namedtypedtuple', require( '@stdlib/utils/named-typed-tuple' ) ); + /** * @name nativeClass * @memberof utils From 7cc5810ce63377178d5dd5cad4d2f7092f280783 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 01:07:50 -0700 Subject: [PATCH 0533/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/n.js | 11 +++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 11 +++++++---- lib/node_modules/@stdlib/repl/help/lib/db.js | 19 +++++++++++-------- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js index d08fdaba4345..8db4591abe69 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/n.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/n.js @@ -24,6 +24,17 @@ var ns = []; +ns.push({ + 'alias': 'namedtypedtuple', + 'path': '@stdlib/utils/named-typed-tuple', + 'value': require( '@stdlib/utils/named-typed-tuple' ), + 'type': 'Function', + 'related': [ + '@stdlib/array/typed', + '@stdlib/utils/named-tuple' + ] +}); + ns.push({ 'alias': 'nativeClass', 'path': '@stdlib/utils/native-class', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index b023f396a894..0f930625b538 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -786,10 +786,10 @@ var db = { "base.xlogy": "out = base.xlogy( 3.0, 2.0 )\nout = base.xlogy( 1.5, 5.9 )\nout = base.xlogy( 0.9, 1.0 )\nout = base.xlogy( 0.0, -2.0 )\nout = base.xlogy( 1.5, NaN )\nout = base.xlogy( 0.0, NaN )\nout = base.xlogy( NaN, 2.3 )\n", "base.zeta": "y = base.zeta( 1.1 )\ny = base.zeta( -4.0 )\ny = base.zeta( 70.0 )\ny = base.zeta( 0.5 )\ny = base.zeta( NaN )\n\n// Evaluate at a pole:\ny = base.zeta( 1.0 )\n", "bifurcate": "collection = [ 'beep', 'boop', 'foo', 'bar' ];\nf = [ true, true, false, true ];\nout = bifurcate( collection, f )\nf = [ 1, 1, 0, 1 ];\nout = bifurcate( collection, f )\n\n// Output group results as indices:\nf = [ true, true, false, true ];\nopts = { 'returns': 'indices' };\nout = bifurcate( collection, opts, f )\n\n// Output group results as index-element pairs:\nopts = { 'returns': '*' };\nout = bifurcate( collection, opts, f )\n", - "bifurcateBy": "function predicate( v ) { v[ 0 ] === 'b' };\ncollection = [ 'beep', 'boop', 'foo', 'bar' ];\nout = bifurcateBy( collection, predicate )\n\n// Output group results as indices:\nopts = { 'returns': 'indices' };\nout = bifurcateBy( collection, opts, predicate )\n\n// Output group results as index-value pairs:\nopts = { 'returns': '*' };\nout = bifurcateBy( collection, opts, predicate )\n", + "bifurcateBy": "function predicate( v ) { return v[ 0 ] === 'b'; };\ncollection = [ 'beep', 'boop', 'foo', 'bar' ];\nout = bifurcateBy( collection, predicate )\n\n// Output group results as indices:\nopts = { 'returns': 'indices' };\nout = bifurcateBy( collection, opts, predicate )\n\n// Output group results as index-value pairs:\nopts = { 'returns': '*' };\nout = bifurcateBy( collection, opts, predicate )\n", "bifurcateByAsync": "\n// Basic usage:\nfunction predicate( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\narr = [ 3000, 2500, 1000 ];\nbifurcateByAsync( arr, predicate, done )\n\n// Output group results as indices:\nopts = { 'returns': 'indices' };\nbifurcateByAsync( arr, opts, predicate, done )\n\n// Output group results as index-value pairs:\nopts = { 'returns': '*' };\nbifurcateByAsync( arr, opts, predicate, done )\n\n// Limit number of concurrent invocations:\nfunction predicate( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\nopts = { 'limit': 2 };\narr = [ 3000, 2500, 1000 ];\nbifurcateByAsync( arr, opts, predicate, done )\n\n// Process sequentially:\nfunction predicate( value, index, next ) {\n setTimeout( onTimeout, value );\n function onTimeout() {\n console.log( value );\n next( null, ( index%2 === 0 ) );\n }\n};\nfunction done( error, result ) {\n if ( error ) {\n throw error;\n }\n console.log( result );\n};\nopts = { 'series': true };\narr = [ 3000, 2500, 1000 ];\nbifurcateByAsync( arr, opts, predicate, done )\n", - "bifurcateIn": "function Foo() { this.a = 'beep'; this.b = 'boop'; return this; };\nFoo.prototype = Object.create( null );\nFoo.prototype.c = 'foo';\nFoo.prototype.d = 'bar';\nobj = new Foo();\nfunction predicate( v ) { v[ 0 ] === 'b' };\nout = bifurcateIn( obj, predicate )\n\n// Output group results as keys:\nopts = { 'returns': 'keys' };\nout = bifurcateIn( obj, opts, predicate )\n\n// Output group results as key-value pairs:\nopts = { 'returns': '*' };\nout = bifurcateIn( obj, opts, predicate )\n", - "bifurcateOwn": "function predicate( v ) { v[ 0 ] === 'b' };\nobj = { 'a': 'beep', 'b': 'boop', 'c': 'foo', 'd': 'bar' };\nout = bifurcateOwn( obj, predicate )\n\n// Output group results as keys:\nopts = { 'returns': 'keys' };\nout = bifurcateOwn( obj, opts, predicate )\n\n// Output group results as key-value pairs:\nopts = { 'returns': '*' };\nout = bifurcateOwn( obj, opts, predicate )\n", + "bifurcateIn": "function Foo() { this.a = 'beep'; this.b = 'boop'; return this; };\nFoo.prototype = Object.create( null );\nFoo.prototype.c = 'foo';\nFoo.prototype.d = 'bar';\nobj = new Foo();\nfunction predicate( v ) { return v[ 0 ] === 'b'; };\nout = bifurcateIn( obj, predicate )\n\n// Output group results as keys:\nopts = { 'returns': 'keys' };\nout = bifurcateIn( obj, opts, predicate )\n\n// Output group results as key-value pairs:\nopts = { 'returns': '*' };\nout = bifurcateIn( obj, opts, predicate )\n", + "bifurcateOwn": "function predicate( v ) { return v[ 0 ] === 'b'; };\nobj = { 'a': 'beep', 'b': 'boop', 'c': 'foo', 'd': 'bar' };\nout = bifurcateOwn( obj, predicate )\n\n// Output group results as keys:\nopts = { 'returns': 'keys' };\nout = bifurcateOwn( obj, opts, predicate )\n\n// Output group results as key-value pairs:\nopts = { 'returns': '*' };\nout = bifurcateOwn( obj, opts, predicate )\n", "Buffer": "b = new Buffer( 4 )\n", "buffer2json": "buf = new allocUnsafe( 2 );\nbuf[ 0 ] = 1;\nbuf[ 1 ] = 2;\njson = buffer2json( buf )\n", "capitalize": "out = capitalize( 'beep' )\nout = capitalize( 'Boop' )\n", @@ -828,13 +828,14 @@ var db = { "dayOfYear": "day = dayOfYear()\nday = dayOfYear( new Date() )\nday = dayOfYear( 12, 31, 2016 )\n\n// Other ways to supply month:\nday = dayOfYear( 'dec', 31, 2016 )\nday = dayOfYear( 'december', 31, 2016 )\n", "daysInMonth": "num = daysInMonth()\nnum = daysInMonth( 2 )\nnum = daysInMonth( 2, 2016 )\nnum = daysInMonth( 2, 2017 )\n\n// Other ways to supply month:\nnum = daysInMonth( 'feb', 2016 )\nnum = daysInMonth( 'february', 2016 )\n", "daysInYear": "num = daysInYear()\nnum = daysInYear( 2016 )\nnum = daysInYear( 2017 )\n", + "deepEqual": "bool = deepEqual( [ 1, 2, 3 ], [ 1, 2, 3 ] )\nbool = deepEqual( [ 1, 2, 3 ], [ 1, 2, '3' ] )\nbool = deepEqual( { 'a': 2 }, { 'a': [ 2 ] } )\n", "deepGet": "obj = { 'a': { 'b': { 'c': 'd' } } };\nval = deepGet( obj, 'a.b.c' )\n\n// Specify a custom separator via the `sep` option:\nobj = { 'a': { 'b': { 'c': 'd' } } };\nval = deepGet( obj, 'a/b/c', { 'sep': '/' } )\n", "deepHasOwnProp": "obj = { 'a': { 'b': { 'c': 'd' } } };\nbool = deepHasOwnProp( obj, 'a.b.c' )\n\n// Specify a custom separator via the `sep` option:\nobj = { 'a': { 'b': { 'c': 'd' } } };\nbool = deepHasOwnProp( obj, 'a/b/c', { 'sep': '/' } )\n", "deepHasProp": "function Foo() { return this; };\nFoo.prototype.b = { 'c': 'd' };\nobj = { 'a': new Foo() };\nbool = deepHasProp( obj, 'a.b.c' )\n\n// Specify a custom separator via the `sep` option:\nbool = deepHasProp( obj, 'a/b/c', { 'sep': '/' } )\n", "deepPluck": "arr = [\n { 'a': { 'b': { 'c': 1 } } },\n { 'a': { 'b': { 'c': 2 } } }\n];\nout = deepPluck( arr, 'a.b.c' )\narr = [\n { 'a': [ 0, 1, 2 ] },\n { 'a': [ 3, 4, 5 ] }\n];\nout = deepPluck( arr, [ 'a', 1 ] )\n", "deepSet": "obj = { 'a': { 'b': { 'c': 'd' } } };\nbool = deepSet( obj, 'a.b.c', 'beep' )\n\n// Specify an alternative separator via the sep option:\nobj = { 'a': { 'b': { 'c': 'd' } } };\nbool = deepSet( obj, 'a/b/c', 'beep', { 'sep': '/' } );\nobj\n\n// To create a key path which does not exist, set the create option to true:\nbool = deepSet( obj, 'a.e.c', 'boop', { 'create': true } );\nobj\n", "defineProperties": "obj = {};\ndefineProperties( obj, {\n 'foo': {\n 'value': 'bar',\n 'writable': false,\n 'configurable': false,\n 'enumerable': true\n },\n 'baz': {\n 'value': 13\n }\n});\nobj.foo\nobj.baz\n", - "defineProperty": "obj = {};\ndefineProperty( obj, 'foo', {\n 'value': 'bar',\n 'writable': false\n});\nobj.foo = 'boop';\nobj\n", + "defineProperty": "obj = {};\ndefineProperty( obj, 'foo', {\n 'value': 'bar',\n 'enumerable': true,\n 'writable': false\n});\nobj.foo = 'boop';\nobj\n", "dirname": "dir = dirname( './foo/bar/index.js' )\n", "DoublyLinkedList": "list = DoublyLinkedList();\nlist.push( 'foo' ).push( 'bar' );\nlist.length\nlist.pop()\nlist.length\nlist.pop()\nlist.length\n", "doUntil": "function predicate( i ) { return ( i >= 5 ); };\nfunction beep( i ) { console.log( 'boop: %d', i ); };\ndoUntil( beep, predicate )\n", @@ -1158,6 +1159,7 @@ var db = { "isBinaryString": "bool = isBinaryString( '1000101' )\nbool = isBinaryString( 'beep' )\nbool = isBinaryString( '' )\n", "isBoolean": "bool = isBoolean( false )\nbool = isBoolean( new Boolean( false ) )\n", "isBooleanArray": "bool = isBooleanArray( [ true, false, true ] )\nbool = isBooleanArray( [ true, 'abc', false ] )\n", + "isBoxedPrimitive": "bool = isBoxedPrimitive( new Boolean( false ) )\nbool = isBoxedPrimitive( true )\n", "isBuffer": "bool = isBuffer( new Buffer( 'beep' ) )\nbool = isBuffer( new Buffer( [ 1, 2, 3, 4 ] ) )\nbool = isBuffer( {} )\nbool = isBuffer( [] )\n", "isCapitalized": "bool = isCapitalized( 'Hello' )\nbool = isCapitalized( 'world' )\n", "isCentrosymmetricMatrix": "mat = ndarray( 'generic', 2 );\nM = mat( [ 2, 1, 1, 2 ], [ 2, 2 ], [ 2, 1 ], 0, 'row-major' );\nbool = isCentrosymmetricMatrix( M )\nbool = isCentrosymmetricMatrix( [ 1, 2, 3, 4 ] )\nbool = isCentrosymmetricMatrix( 3.14 )\nbool = isCentrosymmetricMatrix( {} )\n", @@ -1360,6 +1362,7 @@ var db = { "MONTH_NAMES_EN": "list = MONTH_NAMES_EN()\n", "MONTHS_IN_YEAR": "yrs = 3.14;\nmons = yrs * MONTHS_IN_YEAR\n", "moveProperty": "obj1 = { 'a': 'b' };\nobj2 = {};\nbool = moveProperty( obj1, 'a', obj2 )\nbool = moveProperty( obj1, 'c', obj2 )\n", + "namedtypedtuple": "opts = {};\nopts.name = 'Point';\nfactory = namedtypedtuple( [ 'x', 'y' ], opts );\ntuple = factory();\n", "nativeClass": "str = nativeClass( 'a' )\nstr = nativeClass( 5 )\nfunction Beep(){};\nstr = nativeClass( new Beep() )\n", "ndarray": "ctor = ndarray( 'generic', 2 )\n\n// To create a new instance...\nb = [ 1.0, 2.0, 3.0, 4.0 ]; // underlying data buffer\nd = [ 2, 2 ]; // shape\ns = [ 2, 1 ]; // strides\no = 0; // index offset\narr = ctor( b, d, s, o, 'row-major' )\n\n// Get an element using subscripts:\nv = arr.get( 1, 1 )\n\n// Get an element using a linear index:\nv = arr.iget( 3 )\n\n// Set an element using subscripts:\narr.set( 1, 1, 40.0 );\narr.get( 1, 1 )\n\n// Set an element using a linear index:\narr.iset( 3, 99.0 );\narr.get( 1, 1 )\n", "ndarrayCastingModes": "out = ndarrayCastingModes()\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 4033f9125270..a82b4c710542 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -786,10 +786,10 @@ var db = { "base.xlogy": "\nbase.xlogy( x, y )\n Computes `x * ln(y)` so that the result is `0` if `x = 0`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n y: number\n Input value.\n\n Returns\n -------\n out: number\n Function value.\n\n Examples\n --------\n > var out = base.xlogy( 3.0, 2.0 )\n ~2.079\n > out = base.xlogy( 1.5, 5.9 )\n ~2.662\n > out = base.xlogy( 0.9, 1.0 )\n 0.0\n > out = base.xlogy( 0.0, -2.0 )\n 0.0\n > out = base.xlogy( 1.5, NaN )\n NaN\n > out = base.xlogy( 0.0, NaN )\n NaN\n > out = base.xlogy( NaN, 2.3 )\n NaN\n\n See Also\n --------\n base.ln, base.xlog1py\n", "base.zeta": "\nbase.zeta( s )\n Evaluates the Riemann zeta function as a function of a real variable `s`.\n\n Parameters\n ----------\n s: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.zeta( 1.1 )\n ~10.584\n > y = base.zeta( -4.0 )\n 0.0\n > y = base.zeta( 70.0 )\n 1.0\n > y = base.zeta( 0.5 )\n ~-1.46\n > y = base.zeta( NaN )\n NaN\n\n // Evaluate at a pole:\n > y = base.zeta( 1.0 )\n NaN\n\n", "bifurcate": "\nbifurcate( collection, [options,] filter )\n Splits values into two groups.\n\n If an element in `filter` is truthy, then the corresponding element in the\n input collection belongs to the first group; otherwise, the collection\n element belongs to the second group.\n\n If provided an empty collection, the function returns an empty array.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection to group. If provided an object, the object must be\n array-like (excluding strings and functions).\n\n options: Object (optional)\n Options.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n filter: Array|TypedArray|Object\n A collection indicating which group an element in the input collection\n belongs to. If an element in `filter` is truthy, the corresponding\n element in `collection` belongs to the first group; otherwise, the\n collection element belongs to the second group. If provided an object,\n the object must be array-like (excluding strings and functions).\n\n Returns\n -------\n out: Array|Array\n Group results.\n\n Examples\n --------\n > var collection = [ 'beep', 'boop', 'foo', 'bar' ];\n > var f = [ true, true, false, true ];\n > var out = bifurcate( collection, f )\n [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n > f = [ 1, 1, 0, 1 ];\n > out = bifurcate( collection, f )\n [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n\n // Output group results as indices:\n > f = [ true, true, false, true ];\n > var opts = { 'returns': 'indices' };\n > out = bifurcate( collection, opts, f )\n [ [ 0, 1, 3 ], [ 2 ] ]\n\n // Output group results as index-element pairs:\n > opts = { 'returns': '*' };\n > out = bifurcate( collection, opts, f )\n [ [ [0, 'beep'], [1, 'boop'], [3, 'bar'] ], [ [2, 'foo'] ] ]\n\n See Also\n --------\n bifurcateBy, bifurcateOwn, group\n", - "bifurcateBy": "\nbifurcateBy( collection, [options,] predicate )\n Splits values into two groups according to a predicate function.\n\n When invoked, the predicate function is provided two arguments:\n\n - `value`: collection value\n - `index`: collection index\n\n If a predicate function returns a truthy value, a collection value is\n placed in the first group; otherwise, a collection value is placed in the\n second group.\n\n If provided an empty collection, the function returns an empty array.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection to group. If provided an object, the object must be\n array-like (excluding strings and functions).\n\n options: Object (optional)\n Options.\n\n options.thisArg: any (optional)\n Execution context.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n predicate: Function\n Predicate function indicating which group an element in the input\n collection belongs to.\n\n Returns\n -------\n out: Array|Array\n Group results.\n\n Examples\n --------\n > function predicate( v ) { v[ 0 ] === 'b' };\n > var collection = [ 'beep', 'boop', 'foo', 'bar' ];\n > var out = bifurcateBy( collection, predicate )\n [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n\n // Output group results as indices:\n > var opts = { 'returns': 'indices' };\n > out = bifurcateBy( collection, opts, predicate )\n [ [ 0, 1, 3 ], [ 2 ] ]\n\n // Output group results as index-value pairs:\n > opts = { 'returns': '*' };\n > out = bifurcateBy( collection, opts, predicate )\n [ [ [0, 'beep'], [1, 'boop'], [3, 'bar'] ], [ [2, 'foo' ] ] ]\n\n See Also\n --------\n bifurcate, groupBy\n", + "bifurcateBy": "\nbifurcateBy( collection, [options,] predicate )\n Splits values into two groups according to a predicate function.\n\n When invoked, the predicate function is provided two arguments:\n\n - `value`: collection value\n - `index`: collection index\n\n If a predicate function returns a truthy value, a collection value is\n placed in the first group; otherwise, a collection value is placed in the\n second group.\n\n If provided an empty collection, the function returns an empty array.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection to group. If provided an object, the object must be\n array-like (excluding strings and functions).\n\n options: Object (optional)\n Options.\n\n options.thisArg: any (optional)\n Execution context.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n predicate: Function\n Predicate function indicating which group an element in the input\n collection belongs to.\n\n Returns\n -------\n out: Array|Array\n Group results.\n\n Examples\n --------\n > function predicate( v ) { return v[ 0 ] === 'b'; };\n > var collection = [ 'beep', 'boop', 'foo', 'bar' ];\n > var out = bifurcateBy( collection, predicate )\n [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n\n // Output group results as indices:\n > var opts = { 'returns': 'indices' };\n > out = bifurcateBy( collection, opts, predicate )\n [ [ 0, 1, 3 ], [ 2 ] ]\n\n // Output group results as index-value pairs:\n > opts = { 'returns': '*' };\n > out = bifurcateBy( collection, opts, predicate )\n [ [ [0, 'beep'], [1, 'boop'], [3, 'bar'] ], [ [2, 'foo' ] ] ]\n\n See Also\n --------\n bifurcate, groupBy\n", "bifurcateByAsync": "\nbifurcateByAsync( collection, [options,] predicate, done )\n Splits values into two groups according to a predicate function.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `group`: value group\n\n If an predicate function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n If a predicate function calls the `next` callback with a truthy group value,\n a collection value is placed in the first group; otherwise, a collection\n value is placed in the second group.\n\n If provided an empty collection, the function calls the `done` callback with\n an empty array as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n Predicate function indicating which group an element in the input\n collection belongs to.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > bifurcateByAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n [ [ 1000, 3000 ], [ 2500 ] ]\n\n // Output group results as indices:\n > var opts = { 'returns': 'indices' };\n > bifurcateByAsync( arr, opts, predicate, done )\n 1000\n 2500\n 3000\n [ [ 2, 0 ], [ 1 ] ]\n\n // Output group results as index-value pairs:\n > opts = { 'returns': '*' };\n > bifurcateByAsync( arr, opts, predicate, done )\n 1000\n 2500\n 3000\n [ [ [ 2, 1000 ], [ 0, 3000 ] ], [ [ 1, 2500 ] ] ]\n\n // Limit number of concurrent invocations:\n > function predicate( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > bifurcateByAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n [ [ 3000, 1000 ], [ 2500 ] ]\n\n // Process sequentially:\n > function predicate( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > bifurcateByAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n [ [ 3000, 1000 ], [ 2500 ] ]\n\n\nbifurcateByAsync.factory( [options,] predicate )\n Returns a function which splits values into two groups according to an\n predicate function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n Predicate function indicating which group an element in the input\n collection belongs to.\n\n Returns\n -------\n out: Function\n A function which splits values into two groups.\n\n Examples\n --------\n > function predicate( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = bifurcateByAsync.factory( opts, predicate );\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n [ [ 3000, 1000 ], [ 2500 ] ]\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n [ [ 2000, 1000 ], [ 1500 ] ]\n\n See Also\n --------\n bifurcateBy, groupByAsync\n", - "bifurcateIn": "\nbifurcateIn( obj, [options,] predicate )\n Splits values into two groups according to a predicate function.\n\n When invoked, the predicate function is provided two arguments:\n\n - `value`: object value\n - `key`: object key\n\n If a predicate function returns a truthy value, a value is placed in the\n first group; otherwise, a value is placed in the second group.\n\n If provided an empty object with no prototype, the function returns an empty\n array.\n\n The function iterates over an object's own and inherited properties.\n\n Key iteration order is *not* guaranteed, and, thus, result order is *not*\n guaranteed.\n\n Parameters\n ----------\n obj: Object|Array|TypedArray\n Input object to group.\n\n options: Object (optional)\n Options.\n\n options.thisArg: any (optional)\n Execution context.\n\n options.returns: string (optional)\n If `values`, values are returned; if `keys`, keys are returned; if `*`,\n both keys and values are returned. Default: 'values'.\n\n predicate: Function\n Predicate function indicating which group a value in the input object\n belongs to.\n\n Returns\n -------\n out: Array|Array\n Group results.\n\n Examples\n --------\n > function Foo() { this.a = 'beep'; this.b = 'boop'; return this; };\n > Foo.prototype = Object.create( null );\n > Foo.prototype.c = 'foo';\n > Foo.prototype.d = 'bar';\n > var obj = new Foo();\n > function predicate( v ) { v[ 0 ] === 'b' };\n > var out = bifurcateIn( obj, predicate )\n [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n\n // Output group results as keys:\n > var opts = { 'returns': 'keys' };\n > out = bifurcateIn( obj, opts, predicate )\n [ [ 'a', 'b', 'd' ], [ 'c' ] ]\n\n // Output group results as key-value pairs:\n > opts = { 'returns': '*' };\n > out = bifurcateIn( obj, opts, predicate )\n [ [ ['a', 'beep'], ['b', 'boop'], ['d', 'bar'] ], [ ['c', 'foo' ] ] ]\n\n See Also\n --------\n bifurcate, bifurcateBy, bifurcateOwn, groupIn\n", - "bifurcateOwn": "\nbifurcateOwn( obj, [options,] predicate )\n Splits values into two groups according to a predicate function.\n\n When invoked, the predicate function is provided two arguments:\n\n - `value`: object value\n - `key`: object key\n\n If a predicate function returns a truthy value, a value is placed in the\n first group; otherwise, a value is placed in the second group.\n\n If provided an empty object, the function returns an empty array.\n\n The function iterates over an object's own properties.\n\n Key iteration order is *not* guaranteed, and, thus, result order is *not*\n guaranteed.\n\n Parameters\n ----------\n obj: Object|Array|TypedArray\n Input object to group.\n\n options: Object (optional)\n Options.\n\n options.thisArg: any (optional)\n Execution context.\n\n options.returns: string (optional)\n If `values`, values are returned; if `keys`, keys are returned; if `*`,\n both keys and values are returned. Default: 'values'.\n\n predicate: Function\n Predicate function indicating which group a value in the input object\n belongs to.\n\n Returns\n -------\n out: Array|Array\n Group results.\n\n Examples\n --------\n > function predicate( v ) { v[ 0 ] === 'b' };\n > var obj = { 'a': 'beep', 'b': 'boop', 'c': 'foo', 'd': 'bar' };\n > var out = bifurcateOwn( obj, predicate )\n [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n\n // Output group results as keys:\n > var opts = { 'returns': 'keys' };\n > out = bifurcateOwn( obj, opts, predicate )\n [ [ 'a', 'b', 'd' ], [ 'c' ] ]\n\n // Output group results as key-value pairs:\n > opts = { 'returns': '*' };\n > out = bifurcateOwn( obj, opts, predicate )\n [ [ ['a', 'beep'], ['b', 'boop'], ['d', 'bar'] ], [ ['c', 'foo' ] ] ]\n\n See Also\n --------\n bifurcate, bifurcateBy, bifurcateIn, groupOwn\n", + "bifurcateIn": "\nbifurcateIn( obj, [options,] predicate )\n Splits values into two groups according to a predicate function.\n\n When invoked, the predicate function is provided two arguments:\n\n - `value`: object value\n - `key`: object key\n\n If a predicate function returns a truthy value, a value is placed in the\n first group; otherwise, a value is placed in the second group.\n\n If provided an empty object with no prototype, the function returns an empty\n array.\n\n The function iterates over an object's own and inherited properties.\n\n Key iteration order is *not* guaranteed, and, thus, result order is *not*\n guaranteed.\n\n Parameters\n ----------\n obj: Object|Array|TypedArray\n Input object to group.\n\n options: Object (optional)\n Options.\n\n options.thisArg: any (optional)\n Execution context.\n\n options.returns: string (optional)\n If `values`, values are returned; if `keys`, keys are returned; if `*`,\n both keys and values are returned. Default: 'values'.\n\n predicate: Function\n Predicate function indicating which group a value in the input object\n belongs to.\n\n Returns\n -------\n out: Array|Array\n Group results.\n\n Examples\n --------\n > function Foo() { this.a = 'beep'; this.b = 'boop'; return this; };\n > Foo.prototype = Object.create( null );\n > Foo.prototype.c = 'foo';\n > Foo.prototype.d = 'bar';\n > var obj = new Foo();\n > function predicate( v ) { return v[ 0 ] === 'b'; };\n > var out = bifurcateIn( obj, predicate )\n [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n\n // Output group results as keys:\n > var opts = { 'returns': 'keys' };\n > out = bifurcateIn( obj, opts, predicate )\n [ [ 'a', 'b', 'd' ], [ 'c' ] ]\n\n // Output group results as key-value pairs:\n > opts = { 'returns': '*' };\n > out = bifurcateIn( obj, opts, predicate )\n [ [ ['a', 'beep'], ['b', 'boop'], ['d', 'bar'] ], [ ['c', 'foo' ] ] ]\n\n See Also\n --------\n bifurcate, bifurcateBy, bifurcateOwn, groupIn\n", + "bifurcateOwn": "\nbifurcateOwn( obj, [options,] predicate )\n Splits values into two groups according to a predicate function.\n\n When invoked, the predicate function is provided two arguments:\n\n - `value`: object value\n - `key`: object key\n\n If a predicate function returns a truthy value, a value is placed in the\n first group; otherwise, a value is placed in the second group.\n\n If provided an empty object, the function returns an empty array.\n\n The function iterates over an object's own properties.\n\n Key iteration order is *not* guaranteed, and, thus, result order is *not*\n guaranteed.\n\n Parameters\n ----------\n obj: Object|Array|TypedArray\n Input object to group.\n\n options: Object (optional)\n Options.\n\n options.thisArg: any (optional)\n Execution context.\n\n options.returns: string (optional)\n If `values`, values are returned; if `keys`, keys are returned; if `*`,\n both keys and values are returned. Default: 'values'.\n\n predicate: Function\n Predicate function indicating which group a value in the input object\n belongs to.\n\n Returns\n -------\n out: Array|Array\n Group results.\n\n Examples\n --------\n > function predicate( v ) { return v[ 0 ] === 'b'; };\n > var obj = { 'a': 'beep', 'b': 'boop', 'c': 'foo', 'd': 'bar' };\n > var out = bifurcateOwn( obj, predicate )\n [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n\n // Output group results as keys:\n > var opts = { 'returns': 'keys' };\n > out = bifurcateOwn( obj, opts, predicate )\n [ [ 'a', 'b', 'd' ], [ 'c' ] ]\n\n // Output group results as key-value pairs:\n > opts = { 'returns': '*' };\n > out = bifurcateOwn( obj, opts, predicate )\n [ [ ['a', 'beep'], ['b', 'boop'], ['d', 'bar'] ], [ ['c', 'foo' ] ] ]\n\n See Also\n --------\n bifurcate, bifurcateBy, bifurcateIn, groupOwn\n", "Buffer": "\nBuffer\n Buffer constructor.\n\n\nBuffer( size )\n Allocates a buffer having a specified number of bytes.\n\n Parameters\n ----------\n size: integer\n Number of bytes to allocate.\n\n Returns\n -------\n out: Buffer\n Buffer instance.\n\n Examples\n --------\n > var b = new Buffer( 4 )\n \n\n\nBuffer( buffer )\n Copies buffer data to a new Buffer instance.\n\n Parameters\n ----------\n buffer: Buffer\n Buffer to copy from.\n\n Returns\n -------\n out: Buffer\n Buffer instance.\n\n Examples\n --------\n > var b1 = new Buffer( [ 1, 2, 3, 4 ] );\n > var b2 = new Buffer( b1 )\n [ 1, 2, 3, 4 ]\n\n\nBuffer( array )\n Allocates a buffer using an array of octets.\n\n Parameters\n ----------\n array: Array\n Array of octets.\n\n Returns\n -------\n out: Buffer\n Buffer instance.\n\n Examples\n --------\n > var b = new Buffer( [ 1, 2, 3, 4 ] )\n [ 1, 2, 3, 4 ]\n\n\nBuffer( str[, encoding] )\n Allocates a buffer containing a provided string.\n\n Parameters\n ----------\n str: string\n Input string.\n\n encoding: string (optional)\n Character encoding. Default: 'utf8'.\n\n Returns\n -------\n out: Buffer\n Buffer instance.\n\n Examples\n --------\n > var b = new Buffer( 'beep boop' )\n \n\n\nTODO: add methods and properties\n\n\n See Also\n --------\n ArrayBuffer\n", "buffer2json": "\nbuffer2json( buffer )\n Returns a JSON representation of a buffer.\n\n The returned JSON object has the following properties:\n\n - type: value type\n - data: buffer data as a generic array\n\n Parameters\n ----------\n buffer: Buffer\n Buffer to serialize.\n\n Returns\n -------\n out: Object\n JSON representation.\n\n Examples\n --------\n > var buf = new allocUnsafe( 2 );\n > buf[ 0 ] = 1;\n > buf[ 1 ] = 2;\n > var json = buffer2json( buf )\n { 'type': 'Buffer', 'data': [ 1, 2 ] }\n\n See Also\n --------\n typedarray2json, reviveBuffer\n", "capitalize": "\ncapitalize( str )\n Capitalizes the first character in a `string`.\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n out: string\n Capitalized string.\n\n Examples\n --------\n > var out = capitalize( 'beep' )\n 'Beep'\n > out = capitalize( 'Boop' )\n 'Boop'\n\n See Also\n --------\n uncapitalize, uppercase\n", @@ -828,13 +828,14 @@ var db = { "dayOfYear": "\ndayOfYear( [month[, day, year]] )\n Returns the day of the year.\n\n By default, the function returns the day of the year for the current date\n (according to local time). To determine the day of the year for a particular\n day, provide `month`, `day`, and `year` arguments.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n The function also accepts a `Date` object.\n\n Parameters\n ----------\n month: string|integer|Date (optional)\n Month (or `Date`).\n\n day: integer (optional)\n Day.\n\n year: integer (optional)\n Year.\n\n Returns\n -------\n out: integer\n Day of the year.\n\n Examples\n --------\n > var day = dayOfYear()\n \n > day = dayOfYear( new Date() )\n \n > day = dayOfYear( 12, 31, 2016 )\n 366\n\n // Other ways to supply month:\n > day = dayOfYear( 'dec', 31, 2016 )\n 366\n > day = dayOfYear( 'december', 31, 2016 )\n 366\n\n See Also\n --------\n dayOfQuarter\n", "daysInMonth": "\ndaysInMonth( [month[, year]] )\n Returns the number of days in a month.\n\n By default, the function returns the number of days in the current month\n of the current year (according to local time). To determine the number of\n days for a particular month and year, provide `month` and `year` arguments.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n The function's return value is a generalization and does **not** take into\n account inaccuracies due to daylight savings conventions, crossing\n timezones, or other complications with time and dates.\n\n Parameters\n ----------\n month: string|integer|Date (optional)\n Month (or `Date`).\n\n year: integer (optional)\n Year.\n\n Returns\n -------\n out: integer\n Days in a month.\n\n Examples\n --------\n > var num = daysInMonth()\n \n > num = daysInMonth( 2 )\n \n > num = daysInMonth( 2, 2016 )\n 29\n > num = daysInMonth( 2, 2017 )\n 28\n\n // Other ways to supply month:\n > num = daysInMonth( 'feb', 2016 )\n 29\n > num = daysInMonth( 'february', 2016 )\n 29\n\n See Also\n --------\n daysInYear\n", "daysInYear": "\ndaysInYear( [value] )\n Returns the number of days in a year according to the Gregorian calendar.\n\n By default, the function returns the number of days in the current year\n (according to local time). To determine the number of days for a particular\n year, provide either a year or a `Date` object.\n\n The function's return value is a generalization and does **not** take into\n account inaccuracies due to daylight savings conventions, crossing\n timezones, or other complications with time and dates.\n\n Parameters\n ----------\n value: integer|Date (optional)\n Year or `Date` object.\n\n Returns\n -------\n out: integer\n Number of days in a year.\n\n Examples\n --------\n > var num = daysInYear()\n \n > num = daysInYear( 2016 )\n 366\n > num = daysInYear( 2017 )\n 365\n\n See Also\n --------\n daysInMonth\n", + "deepEqual": "\ndeepEqual( a, b )\n Tests for deep equality between two values.\n\n Parameters\n ----------\n a: any\n First comparison value.\n\n b: any\n Second comparison value.\n\n Returns\n -------\n out: bool\n Boolean indicating if `a` is deep equal to `b`.\n\n Examples\n --------\n > var bool = deepEqual( [ 1, 2, 3 ], [ 1, 2, 3 ] )\n true\n\n > bool = deepEqual( [ 1, 2, 3 ], [ 1, 2, '3' ] )\n false\n\n > bool = deepEqual( { 'a': 2 }, { 'a': [ 2 ] } )\n false\n\n See Also\n --------\n isStrictEqual, isSameValue\n", "deepGet": "\ndeepGet( obj, path[, options] )\n Returns a nested property value.\n\n Parameters\n ----------\n obj: ObjectLike\n Input object.\n\n path: string|Array\n Key path.\n\n options: Object (optional)\n Options.\n\n options.sep: string (optional)\n Key path separator. Default: '.'.\n\n Returns\n -------\n out: any\n Nested property value.\n\n Examples\n --------\n > var obj = { 'a': { 'b': { 'c': 'd' } } };\n > var val = deepGet( obj, 'a.b.c' )\n 'd'\n\n // Specify a custom separator via the `sep` option:\n > var obj = { 'a': { 'b': { 'c': 'd' } } };\n > var val = deepGet( obj, 'a/b/c', { 'sep': '/' } )\n 'd'\n\ndeepGet.factory( path[, options] )\n Creates a reusable deep get function.\n\n Parameters\n ----------\n path: string|Array\n Key path.\n\n options: Object (optional)\n Options.\n\n options.sep: string (optional)\n Key path separator. Default: '.'.\n\n Returns\n -------\n out: Function\n Deep get factory.\n\n Examples\n --------\n > var dget = deepGet.factory( 'a/b/c', { 'sep': '/' } );\n > var obj = { 'a': { 'b': { 'c': 'd' } } };\n > var val = dget( obj )\n 'd'\n\n See Also\n --------\n deepPluck, deepSet\n", "deepHasOwnProp": "\ndeepHasOwnProp( value, path[, options] )\n Returns a boolean indicating whether an object contains a nested key path.\n\n The function tests for \"own\" properties and will return `false` for\n inherited properties.\n\n Value arguments other than `null` or `undefined` are coerced to objects.\n\n Key path array elements are coerced to strings.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n path: string|Array\n Key path.\n\n options: Object (optional)\n Options.\n\n options.sep: string (optional)\n Key path separator. Default: '.'.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object has a specified path.\n\n Examples\n --------\n > var obj = { 'a': { 'b': { 'c': 'd' } } };\n > var bool = deepHasOwnProp( obj, 'a.b.c' )\n true\n\n // Specify a custom separator via the `sep` option:\n > obj = { 'a': { 'b': { 'c': 'd' } } };\n > bool = deepHasOwnProp( obj, 'a/b/c', { 'sep': '/' } )\n true\n\ndeepHasOwnProp.factory( path[, options] )\n Returns a function which tests whether an object contains a nested key path.\n\n The returned function tests for \"own\" properties and will return `false` for\n inherited properties.\n\n Parameters\n ----------\n path: string|Array\n Key path.\n\n options: Object (optional)\n Options.\n\n options.sep: string (optional)\n Key path separator. Default: '.'.\n\n Returns\n -------\n out: Function\n Function which tests whether an object contains a nested key path.\n\n Examples\n --------\n > var has = deepHasOwnProp.factory( 'a/b/c', { 'sep': '/' } );\n > var obj = { 'a': { 'b': { 'c': 'd' } } };\n > var bool = has( obj )\n true\n\n See Also\n --------\n deepHasProp, hasOwnProp, deepGet, deepPluck, deepSet\n", "deepHasProp": "\ndeepHasProp( value, path[, options] )\n Returns a boolean indicating whether an object contains a nested key path,\n either own or inherited.\n\n Value arguments other than `null` or `undefined` are coerced to objects.\n\n Key path array elements are coerced to strings.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n path: string|Array\n Key path.\n\n options: Object (optional)\n Options.\n\n options.sep: string (optional)\n Key path separator. Default: '.'.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if an object has a specified path.\n\n Examples\n --------\n > function Foo() { return this; };\n > Foo.prototype.b = { 'c': 'd' };\n > var obj = { 'a': new Foo() };\n > var bool = deepHasProp( obj, 'a.b.c' )\n true\n\n // Specify a custom separator via the `sep` option:\n > bool = deepHasProp( obj, 'a/b/c', { 'sep': '/' } )\n true\n\ndeepHasProp.factory( path[, options] )\n Returns a function which tests whether an object contains a nested key path,\n either own or inherited.\n\n Parameters\n ----------\n path: string|Array\n Key path.\n\n options: Object (optional)\n Options.\n\n options.sep: string (optional)\n Key path separator. Default: '.'.\n\n Returns\n -------\n out: Function\n Function which tests whether an object contains a nested key path.\n\n Examples\n --------\n > function Foo() { return this; };\n > Foo.prototype.b = { 'c': 'd' };\n > var has = deepHasProp.factory( 'a/b/c', { 'sep': '/' } );\n > var obj = { 'a': new Foo() };\n > var bool = has( obj )\n true\n\n See Also\n --------\n deepHasOwnProp, hasOwnProp, deepGet, deepPluck, deepSet\n", "deepPluck": "\ndeepPluck( arr, path[, options] )\n Extracts a nested property value from each element of an object array.\n\n If a key path does not exist, the function sets the plucked value as\n `undefined`.\n\n Extracted values are not cloned.\n\n Parameters\n ----------\n arr: Array\n Source array.\n\n path: string|Array\n Key path.\n\n options: Object (optional)\n Options.\n\n options.copy: boolean (optional)\n Boolean indicating whether to return a new data structure. Default:\n true.\n\n options.sep: string (optional)\n Key path separator. Default: '.'.\n\n Returns\n -------\n out: Array\n Destination array.\n\n Examples\n --------\n > var arr = [\n ... { 'a': { 'b': { 'c': 1 } } },\n ... { 'a': { 'b': { 'c': 2 } } }\n ... ];\n > var out = deepPluck( arr, 'a.b.c' )\n [ 1, 2 ]\n > arr = [\n ... { 'a': [ 0, 1, 2 ] },\n ... { 'a': [ 3, 4, 5 ] }\n ... ];\n > out = deepPluck( arr, [ 'a', 1 ] )\n [ 1, 4 ]\n\n See Also\n --------\n deepGet, deepSet\n", "deepSet": "\ndeepSet( obj, path, value[, options] )\n Sets a nested property value.\n\n Parameters\n ----------\n obj: ObjectLike\n Input object.\n\n path: string|Array\n Key path.\n\n value: any\n Value to set.\n\n options: Object (optional)\n Options.\n\n options.create: boolean (optional)\n Boolean indicating whether to create a path if the key path does not\n already exist. Default: false.\n\n options.sep: string (optional)\n Key path separator. Default: '.'.\n\n Returns\n -------\n bool: boolean\n Boolean indicating if the property was successfully set.\n\n Examples\n --------\n > var obj = { 'a': { 'b': { 'c': 'd' } } };\n > var bool = deepSet( obj, 'a.b.c', 'beep' )\n true\n\n // Specify an alternative separator via the sep option:\n > obj = { 'a': { 'b': { 'c': 'd' } } };\n > bool = deepSet( obj, 'a/b/c', 'beep', { 'sep': '/' } );\n > obj\n { 'a': { 'b': { 'c': 'beep' } } }\n\n // To create a key path which does not exist, set the create option to true:\n > bool = deepSet( obj, 'a.e.c', 'boop', { 'create': true } );\n > obj\n { 'a': { 'b': { 'c': 'beep' }, 'e': { 'c': 'boop' } } }\n\n\ndeepSet.factory( path[, options] )\n Creates a reusable deep set function.\n\n Parameters\n ----------\n path: string|Array\n Key path.\n\n options: Object (optional)\n Options.\n\n options.create: boolean (optional)\n Boolean indicating whether to create a path if the key path does not\n already exist. Default: false.\n\n options.sep: string (optional)\n Key path separator. Default: '.'.\n\n Returns\n -------\n out: Function\n Deep get function.\n\n Examples\n --------\n > var dset = deepSet.factory( 'a/b/c', {\n ... 'create': true,\n ... 'sep': '/'\n ... });\n > var obj = { 'a': { 'b': { 'c': 'd' } } };\n > var bool = dset( obj, 'beep' )\n true\n > obj\n { 'a': { 'b': { 'c': 'beep' } } }\n\n See Also\n --------\n deepGet, deepPluck\n", "defineProperties": "\ndefineProperties( obj, properties )\n Defines (and/or modifies) object properties.\n\n The second argument is an object whose own enumerable property values are\n descriptors for the properties to be defined or modified.\n\n Property descriptors come in two flavors: data descriptors and accessor\n descriptors. A data descriptor is a property that has a value, which may or\n may not be writable. An accessor descriptor is a property described by a\n getter-setter function pair. A descriptor must be one of these two flavors\n and cannot be both.\n\n A property descriptor has the following optional properties:\n\n - configurable: boolean indicating if property descriptor can be changed and\n if the property can be deleted from the provided object. Default: false.\n\n - enumerable: boolean indicating if the property shows up when enumerating\n object properties. Default: false.\n\n - writable: boolean indicating if the value associated with the property can\n be changed with an assignment operator. Default: false.\n\n - value: property value.\n\n - get: function which serves as a getter for the property, or, if no getter,\n undefined. When the property is accessed, a getter function is called\n without arguments and with the `this` context set to the object through\n which the property is accessed (which may not be the object on which the\n property is defined due to inheritance). The return value will be used as\n the property value. Default: undefined.\n\n - set: function which serves as a setter for the property, or, if no setter,\n undefined. When assigning a property value, a setter function is called with\n one argument (the value being assigned to the property) and with the `this`\n context set to the object through which the property is assigned. Default: undefined.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the properties.\n\n properties: Object\n Object with property descriptors.\n\n Returns\n -------\n obj: Object\n Object on which properties were defined (and/or modified).\n\n Examples\n --------\n > var obj = {};\n > defineProperties( obj, {\n ... 'foo': {\n ... 'value': 'bar',\n ... 'writable': false,\n ... 'configurable': false,\n ... 'enumerable': true\n ... },\n ... 'baz': {\n ... 'value': 13\n ... }\n ... });\n > obj.foo\n 'bar'\n > obj.baz\n 13\n\n See Also\n --------\n defineProperty, setReadOnly\n", - "defineProperty": "\ndefineProperty( obj, prop, descriptor )\n Defines (or modifies) an object property.\n\n Property descriptors come in two flavors: data descriptors and accessor\n descriptors. A data descriptor is a property that has a value, which may or\n may not be writable. An accessor descriptor is a property described by a\n getter-setter function pair. A descriptor must be one of these two flavors\n and cannot be both.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n descriptor: Object\n Property descriptor.\n\n descriptor.configurable: boolean (optional)\n Boolean indicating if property descriptor can be changed and if the\n property can be deleted from the provided object. Default: false.\n\n descriptor.enumerable: boolean (optional)\n Boolean indicating if the property shows up when enumerating object\n properties. Default: false.\n\n descriptor.writable: boolean (optional)\n Boolean indicating if the value associated with the property can be\n changed with an assignment operator. Default: false.\n\n descriptor.value: any (optional)\n Property value.\n\n descriptor.get: Function|void (optional)\n Function which serves as a getter for the property, or, if no getter,\n undefined. When the property is accessed, a getter function is called\n without arguments and with the `this` context set to the object through\n which the property is accessed (which may not be the object on which the\n property is defined due to inheritance). The return value will be used\n as the property value. Default: undefined.\n\n descriptor.set: Function|void (optional)\n Function which serves as a setter for the property, or, if no setter,\n undefined. When assigning a property value, a setter function is called\n with one argument (the value being assigned to the property) and with\n the `this` context set to the object through which the property is\n assigned. Default: undefined.\n\n Returns\n -------\n obj: Object\n Object on which the property was defined (or modified).\n\n Examples\n --------\n > var obj = {};\n > defineProperty( obj, 'foo', {\n ... 'value': 'bar',\n ... 'writable': false\n ... });\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n defineProperties, setReadOnly\n", + "defineProperty": "\ndefineProperty( obj, prop, descriptor )\n Defines (or modifies) an object property.\n\n Property descriptors come in two flavors: data descriptors and accessor\n descriptors. A data descriptor is a property that has a value, which may or\n may not be writable. An accessor descriptor is a property described by a\n getter-setter function pair. A descriptor must be one of these two flavors\n and cannot be both.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n descriptor: Object\n Property descriptor.\n\n descriptor.configurable: boolean (optional)\n Boolean indicating if property descriptor can be changed and if the\n property can be deleted from the provided object. Default: false.\n\n descriptor.enumerable: boolean (optional)\n Boolean indicating if the property shows up when enumerating object\n properties. Default: false.\n\n descriptor.writable: boolean (optional)\n Boolean indicating if the value associated with the property can be\n changed with an assignment operator. Default: false.\n\n descriptor.value: any (optional)\n Property value.\n\n descriptor.get: Function|void (optional)\n Function which serves as a getter for the property, or, if no getter,\n undefined. When the property is accessed, a getter function is called\n without arguments and with the `this` context set to the object through\n which the property is accessed (which may not be the object on which the\n property is defined due to inheritance). The return value will be used\n as the property value. Default: undefined.\n\n descriptor.set: Function|void (optional)\n Function which serves as a setter for the property, or, if no setter,\n undefined. When assigning a property value, a setter function is called\n with one argument (the value being assigned to the property) and with\n the `this` context set to the object through which the property is\n assigned. Default: undefined.\n\n Returns\n -------\n obj: Object\n Object on which the property was defined (or modified).\n\n Examples\n --------\n > var obj = {};\n > defineProperty( obj, 'foo', {\n ... 'value': 'bar',\n ... 'enumerable': true,\n ... 'writable': false\n ... });\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n defineProperties, setReadOnly\n", "dirname": "\ndirname( path )\n Returns a directory name.\n\n Parameters\n ----------\n path: string\n Path.\n\n Returns\n -------\n out: string\n Directory name.\n\n Examples\n --------\n > var dir = dirname( './foo/bar/index.js' )\n './foo/bar'\n\n See Also\n --------\n extname\n", "DoublyLinkedList": "\nDoublyLinkedList()\n Doubly linked list constructor.\n\n Returns\n -------\n list: Object\n Doubly linked list.\n\n list.clear: Function\n Clears the list.\n\n list.first: Function\n Returns the first list node. If the list is empty, the returned value is\n `undefined`.\n\n list.insert: Function\n Inserts a value after a provided list node. For its third argument, the\n method accepts a location: 'before' or 'after'. Default: 'after'.\n\n list.iterator: Function\n Returns an iterator for iterating over a list. If an environment\n supports Symbol.iterator, the returned iterator is iterable. Note that,\n in order to prevent confusion arising from list mutation during\n iteration, a returned iterator **always** iterates over a list\n \"snapshot\", which is defined as the list of list elements at the time\n of the method's invocation. For its sole argument, the method accepts a\n direction: 'forward' or 'reverse'. Default: 'forward'.\n\n list.last: Function\n Returns the last list node. If the list is empty, the returned value is\n `undefined`.\n\n list.length: integer\n List length.\n\n list.pop: Function\n Removes and returns the last list value. If the list is empty, the\n returned value is `undefined`.\n\n list.push: Function\n Adds a value to the end of the list.\n\n list.remove: Function\n Removes a list node from the list.\n\n list.shift: Function\n Removes and returns the first list value. If the list is empty, the\n returned value is `undefined`.\n\n list.toArray: Function\n Returns an array of list values.\n\n list.toJSON: Function\n Serializes a list as JSON.\n\n list.unshift: Function\n Adds a value to the beginning of the list.\n\n Examples\n --------\n > var list = DoublyLinkedList();\n > list.push( 'foo' ).push( 'bar' );\n > list.length\n 2\n > list.pop()\n 'bar'\n > list.length\n 1\n > list.pop()\n 'foo'\n > list.length\n 0\n\n See Also\n --------\n LinkedList, Stack\n", "doUntil": "\ndoUntil( fcn, predicate[, thisArg] )\n Invokes a function until a test condition is true.\n\n The condition is evaluated *after* executing the provided function; thus,\n `fcn` *always* executes at least once.\n\n When invoked, both the predicate function and the function to invoke are\n provided a single argument:\n\n - `i`: iteration number (starting from zero)\n\n Parameters\n ----------\n fcn: Function\n The function to invoke.\n\n predicate: Function\n The predicate function which indicates whether to stop invoking a\n function.\n\n thisArg: any (optional)\n Execution context for the invoked function.\n\n Examples\n --------\n > function predicate( i ) { return ( i >= 5 ); };\n > function beep( i ) { console.log( 'boop: %d', i ); };\n > doUntil( beep, predicate )\n boop: 0\n boop: 1\n boop: 2\n boop: 3\n boop: 4\n\n See Also\n --------\n doUntilAsync, doUntilEach, doWhile, until, whilst\n", @@ -879,7 +880,7 @@ var db = { "FIFO": "\nFIFO()\n First-in-first-out (FIFO) queue constructor.\n\n Returns\n -------\n queue: Object\n First-in-first-out queue.\n\n queue.clear: Function\n Clears the queue.\n\n queue.first: Function\n Returns the \"oldest\" queue value (i.e., the value which is \"first-out\").\n If the queue is empty, the returned value is `undefined`.\n\n queue.iterator: Function\n Returns an iterator for iterating over a queue. If an environment\n supports Symbol.iterator, the returned iterator is iterable. Note that,\n in order to prevent confusion arising from queue mutation during\n iteration, a returned iterator **always** iterates over a queue\n \"snapshot\", which is defined as the list of queue elements at the time\n of the method's invocation.\n\n queue.last: Function\n Returns the \"newest\" queue value (i.e., the value which is \"last-out\").\n If the queue is empty, the returned value is `undefined`.\n\n queue.length: integer\n Queue length.\n\n queue.pop: Function\n Removes and returns the current \"first-out\" value from the queue. If the\n queue is empty, the returned value is `undefined`.\n\n queue.push: Function\n Adds a value to the queue.\n\n queue.toArray: Function\n Returns an array of queue values.\n\n queue.toJSON: Function\n Serializes a queue as JSON.\n\n Examples\n --------\n > var q = FIFO();\n > q.push( 'foo' ).push( 'bar' );\n > q.length\n 2\n > q.pop()\n 'foo'\n > q.length\n 1\n > q.pop()\n 'bar'\n > q.length\n 0\n\n See Also\n --------\n Stack\n", "find": "\nfind( arr, [options,] clbk )\n Finds elements in an array-like object that satisfy a test condition.\n\n Parameters\n ----------\n arr: Array|TypedArray|string\n Object from which elements will be tested.\n\n options: Object (optional)\n Options.\n\n options.k: integer (optional)\n Limits the number of returned elements. The sign determines the\n direction in which to search. If set to a negative integer, the function\n searches from last element to first element. Default: arr.length.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'indices'.\n\n clbk: Function\n Function invoked for each array element. If the return value is truthy,\n the value is considered to have satisfied the test condition.\n\n Returns\n -------\n out: Array\n Array of indices, element values, or arrays of index-value pairs.\n\n Examples\n --------\n > var data = [ 30, 20, 50, 60, 10 ];\n > function condition( val ) { return val > 20; };\n > var vals = find( data, condition )\n [ 0, 2, 3 ]\n\n // Limit number of results:\n > data = [ 30, 20, 50, 60, 10 ];\n > var opts = { 'k': 2, 'returns': 'values' };\n > vals = find( data, opts, condition )\n [ 30, 50 ]\n\n // Return both indices and values as index-value pairs:\n > data = [ 30, 20, 50, 60, 10 ];\n > opts = { 'k': -2, 'returns': '*' };\n > vals = find( data, opts, condition )\n [ [ 3, 60 ], [ 2, 50 ] ]\n\n", "flattenArray": "\nflattenArray( arr[, options] )\n Flattens an array.\n\n Parameters\n ----------\n arr: Array\n Input array.\n\n options: Object (optional)\n Options.\n\n options.depth: integer (optional)\n Maximum depth to flatten.\n\n options.copy: boolean (optional)\n Boolean indicating whether to deep copy array elements. Default: false.\n\n Returns\n -------\n out: Array\n Flattened array.\n\n Examples\n --------\n > var arr = [ 1, [ 2, [ 3, [ 4, [ 5 ], 6 ], 7 ], 8 ], 9 ];\n > var out = flattenArray( arr )\n [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]\n\n // Set the maximum depth:\n > arr = [ 1, [ 2, [ 3, [ 4, [ 5 ], 6 ], 7 ], 8 ], 9 ];\n > out = flattenArray( arr, { 'depth': 2 } )\n [ 1, 2, 3, [ 4, [ 5 ], 6 ], 7, 8, 9 ]\n > var bool = ( arr[ 1 ][ 1 ][ 1 ] === out[ 3 ] )\n true\n\n // Deep copy:\n > arr = [ 1, [ 2, [ 3, [ 4, [ 5 ], 6 ], 7 ], 8 ], 9 ];\n > out = flattenArray( arr, { 'depth': 2, 'copy': true } )\n [ 1, 2, 3, [ 4, [ 5 ], 6 ], 7, 8, 9 ]\n > bool = ( arr[ 1 ][ 1 ][ 1 ] === out[ 3 ] )\n false\n\n\nflattenArray.factory( dims[, options] )\n Returns a function for flattening arrays having specified dimensions.\n\n The returned function does not validate that input arrays actually have the\n specified dimensions.\n\n Parameters\n ----------\n dims: Array\n Dimensions.\n\n options: Object (optional)\n Options.\n\n options.copy: boolean (optional)\n Boolean indicating whether to deep copy array elements. Default: false.\n\n Returns\n -------\n fcn: Function\n Flatten function.\n\n Examples\n --------\n > var flatten = flattenArray.factory( [ 2, 2 ], {\n ... 'copy': false\n ... });\n > var out = flatten( [ [ 1, 2 ], [ 3, 4 ] ] )\n [ 1, 2, 3, 4 ]\n > out = flatten( [ [ 5, 6 ], [ 7, 8 ] ] )\n [ 5, 6, 7, 8 ]\n\n See Also\n --------\n flattenObject\n", - "flattenObject": "\nflattenObject( obj[, options] )\n Flattens an object.\n\n Parameters\n ----------\n obj: ObjectLike\n Object to flatten.\n\n options: Object (optional)\n Options.\n\n options.depth: integer (optional)\n Maximum depth to flatten.\n\n options.copy: boolean (optional)\n Boolean indicating whether to deep copy. Default: false.\n\n options.flattenArrays: boolean (optional)\n Boolean indicating whether to flatten arrays. Default: false.\n\n options.delimiter: string (optional)\n Key path delimiter. Default: '.'.\n\n Returns\n -------\n out: ObjectLike\n Flattened object.\n\n Examples\n --------\n > var obj = { 'a': { 'b': { 'c': 'd' } } };\n > var out = flattenObject( obj )\n { 'a.b.c': 'd' }\n\n // Set the `depth` option to flatten to a specified depth:\n > obj = { 'a': { 'b': { 'c': 'd' } } };\n > out = flattenObject( obj, { 'depth': 1 } )\n { 'a.b': { 'c': 'd' } }\n > var bool = ( obj.a.b === out[ 'a.b' ] )\n true\n\n // Set the `delimiter` option:\n > obj = { 'a': { 'b': { 'c': 'd' } } };\n > out = flattenObject( obj, { 'delimiter': '-|-' } )\n { 'a-|-b-|-c': 'd' }\n\n // Flatten arrays:\n > obj = { 'a': { 'b': [ 1, 2, 3 ] } };\n > out = flattenObject( obj, { 'flattenArrays': true } )\n { 'a.b.0': 1, 'a.b.1': 2, 'a.b.2': 3 }\n\n\nflattenObject.factory( [options] )\n Returns a function to flatten an object.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.depth: integer (optional)\n Maximum depth to flatten.\n\n options.copy: boolean (optional)\n Boolean indicating whether to deep copy. Default: false.\n\n options.flattenArrays: boolean (optional)\n Boolean indicating whether to flatten arrays. Default: false.\n\n options.delimiter: string (optional)\n Key path delimiter. Default: '.'.\n\n Returns\n -------\n fcn: Function\n Flatten function.\n\n Examples\n --------\n > var flatten = flattenObject.factory({\n ... 'depth': 2,\n ... 'copy': true,\n ... 'delimiter': '|'\n ... });\n > var obj = { 'a': { 'b': { 'c': 'd' } } };\n > var out = flatten( obj )\n { 'a|b': { 'c': 'd' } }\n\n See Also\n --------\n flattenArray\n", + "flattenObject": "\nflattenObject( obj[, options] )\n Flattens an object.\n\n Parameters\n ----------\n obj: ObjectLike\n Object to flatten.\n\n options: Object (optional)\n Options.\n\n options.depth: integer (optional)\n Maximum depth to flatten.\n\n options.copy: boolean (optional)\n Boolean indicating whether to deep copy. Default: false.\n\n options.flattenArrays: boolean (optional)\n Boolean indicating whether to flatten arrays. Default: false.\n\n options.delimiter: string (optional)\n Key path delimiter. Default: '.'.\n\n Returns\n -------\n out: ObjectLike\n Flattened object.\n\n Examples\n --------\n > var obj = { 'a': { 'b': { 'c': 'd' } } };\n > var out = flattenObject( obj )\n { 'a.b.c': 'd' }\n\n // Set the `depth` option to flatten to a specified depth:\n > obj = { 'a': { 'b': { 'c': 'd' } } };\n > out = flattenObject( obj, { 'depth': 1 } )\n { 'a.b': { 'c': 'd' } }\n > var bool = ( obj.a.b === out[ 'a.b' ] )\n true\n\n // Set the `delimiter` option:\n > obj = { 'a': { 'b': { 'c': 'd' } } };\n > out = flattenObject( obj, { 'delimiter': '-|-' } )\n { 'a-|-b-|-c': 'd' }\n\n // Flatten arrays:\n > obj = { 'a': { 'b': [ 1, 2, 3 ] } };\n > out = flattenObject( obj, { 'flattenArrays': true } )\n { 'a.b.0': 1, 'a.b.1': 2, 'a.b.2': 3 }\n\n\nflattenObject.factory( [options] )\n Returns a function to flatten an object.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.depth: integer (optional)\n Maximum depth to flatten.\n\n options.copy: boolean (optional)\n Boolean indicating whether to deep copy. Default: false.\n\n options.flattenArrays: boolean (optional)\n Boolean indicating whether to flatten arrays. Default: false.\n\n options.delimiter: string (optional)\n Key path delimiter. Default: '.'.\n\n Returns\n -------\n fcn: Function\n Flatten function.\n\n Examples\n --------\n > var flatten = flattenObject.factory({\n ... 'depth': 1,\n ... 'copy': true,\n ... 'delimiter': '|'\n ... });\n > var obj = { 'a': { 'b': { 'c': 'd' } } };\n > var out = flatten( obj )\n { 'a|b': { 'c': 'd' } }\n\n See Also\n --------\n flattenArray\n", "FLOAT16_CBRT_EPS": "\nFLOAT16_CBRT_EPS\n Cube root of half-precision floating-point epsilon.\n\n Examples\n --------\n > FLOAT16_CBRT_EPS\n 0.09921256574801247\n\n See Also\n --------\n FLOAT16_EPS, FLOAT16_SQRT_EPS, FLOAT32_CBRT_EPS, CBRT_EPS\n", "FLOAT16_EPS": "\nFLOAT16_EPS\n Difference between one and the smallest value greater than one that can be\n represented as a half-precision floating-point number.\n\n Examples\n --------\n > FLOAT16_EPS\n 0.0009765625\n\n See Also\n --------\n FLOAT32_EPS, EPS\n", "FLOAT16_EXPONENT_BIAS": "\nFLOAT16_EXPONENT_BIAS\n The bias of a half-precision floating-point number's exponent.\n\n Examples\n --------\n > FLOAT16_EXPONENT_BIAS\n 15\n\n See Also\n --------\n FLOAT32_EXPONENT_BIAS, FLOAT64_EXPONENT_BIAS\n", @@ -953,8 +954,8 @@ var db = { "getPrototypeOf": "\ngetPrototypeOf( value )\n Returns the prototype of a provided object.\n\n In contrast to the native `Object.getPrototypeOf`, this function does not\n throw when provided `null` or `undefined`. Instead, similar to when provided\n any value with *no* inherited properties, the function returns `null`.\n\n Value arguments other than `null` or `undefined` are coerced to objects.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n out: Object|null\n Prototype.\n\n Examples\n --------\n > var proto = getPrototypeOf( {} )\n {}\n\n See Also\n --------\n isPrototypeOf\n", "getuid": "\ngetuid()\n Returns the numeric user identity of the calling process.\n\n The function only returns a user identity on POSIX platforms. For all other\n platforms (e.g., Windows and Android), the function returns `null`.\n\n Returns\n -------\n id: integer|null\n Numeric user identity.\n\n Examples\n --------\n > var uid = getuid()\n\n See Also\n --------\n getegid, geteuid, getgid\n", "GLAISHER": "\nGLAISHER\n Glaisher-Kinkelin constant.\n\n Examples\n --------\n > GLAISHER\n 1.2824271291006226\n\n", - "group": "\ngroup( collection, [options,] groups )\n Groups values as arrays associated with distinct keys.\n\n If provided an empty collection, the function returns an empty object.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection to group. If provided an object, the object must be\n array-like (excluding strings and functions).\n\n options: Object (optional)\n Options.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n groups: Array|TypedArray|Object\n A collection defining which group an element in the input collection\n belongs to. Each value in `groups` should resolve to a value which can\n be serialized as an object key. If provided an object, the object must\n be array-like (excluding strings and functions).\n\n Returns\n -------\n out: Object\n Group results.\n\n Examples\n --------\n > var collection = [ 'beep', 'boop', 'foo', 'bar' ];\n > var groups = [ 'b', 'b', 'f', 'b' ];\n > var out = group( collection, groups )\n { 'b': [ 'beep', 'boop', 'bar' ], 'f': [ 'foo' ] }\n > groups = [ 1, 1, 2, 1 ];\n > out = group( collection, groups )\n { '1': [ 'beep', 'boop', 'bar' ], '2': [ 'foo' ] }\n\n // Output group results as indices:\n > groups = [ 'b', 'b', 'f', 'b' ];\n > var opts = { 'returns': 'indices' };\n > out = group( collection, opts, groups )\n { '1': [ 0, 1, 3 ], '2': [ 2 ] }\n\n // Output group results as index-element pairs:\n > opts = { 'returns': '*' };\n > out = group( collection, opts, groups )\n { '1': [ [0, 'beep'], [1, 'boop'], [3, 'bar'] ], '2': [ [2, 'foo'] ] }\n\n See Also\n --------\n bifurcate, countBy, groupBy\n", - "groupBy": "\ngroupBy( collection, [options,] indicator )\n Groups values according to an indicator function.\n\n When invoked, the indicator function is provided two arguments:\n\n - `value`: collection value\n - `index`: collection index\n\n The value returned by an indicator function should be a value which can be\n serialized as an object key.\n\n If provided an empty collection, the function returns an empty object.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection to group. If provided an object, the object must be\n array-like (excluding strings and functions).\n\n options: Object (optional)\n Options.\n\n options.thisArg: any (optional)\n Execution context.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n indicator: Function\n Indicator function specifying which group an element in the input\n collection belongs to.\n\n Returns\n -------\n out: Object\n Group results.\n\n Examples\n --------\n > function indicator( v ) {\n ... if ( v[ 0 ] === 'b' ) {\n ... return 'b';\n ... }\n ... return 'other';\n ... };\n > var collection = [ 'beep', 'boop', 'foo', 'bar' ];\n > var out = groupBy( collection, indicator )\n { 'b': [ 'beep', 'boop', 'bar' ], 'other': [ 'foo' ] }\n\n // Output group results as indices:\n > var opts = { 'returns': 'indices' };\n > out = groupBy( collection, opts, indicator )\n { 'b': [ 0, 1, 3 ], 'other': [ 2 ] }\n\n // Output group results as index-value pairs:\n > opts = { 'returns': '*' };\n > out = groupBy( collection, opts, indicator )\n { 'b': [ [0, 'beep'], [1, 'boop'], [3, 'bar'] ], 'f': [ [2, 'foo' ] ] }\n\n See Also\n --------\n bifurcateBy, countBy, group\n", + "group": "\ngroup( collection, [options,] groups )\n Groups values as arrays associated with distinct keys.\n\n If provided an empty collection, the function returns an empty object.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection to group. If provided an object, the object must be\n array-like (excluding strings and functions).\n\n options: Object (optional)\n Options.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n groups: Array|TypedArray|Object\n A collection defining which group an element in the input collection\n belongs to. Each value in `groups` should resolve to a value which can\n be serialized as an object key. If provided an object, the object must\n be array-like (excluding strings and functions).\n\n Returns\n -------\n out: Object\n Group results.\n\n Examples\n --------\n > var collection = [ 'beep', 'boop', 'foo', 'bar' ];\n > var groups = [ 'b', 'b', 'f', 'b' ];\n > var out = group( collection, groups )\n { 'b': [ 'beep', 'boop', 'bar' ], 'f': [ 'foo' ] }\n > groups = [ 1, 1, 2, 1 ];\n > out = group( collection, groups )\n { '1': [ 'beep', 'boop', 'bar' ], '2': [ 'foo' ] }\n\n // Output group results as indices:\n > groups = [ 'b', 'b', 'f', 'b' ];\n > var opts = { 'returns': 'indices' };\n > out = group( collection, opts, groups )\n { 'b': [ 0, 1, 3 ], 'f': [ 2 ] }\n\n // Output group results as index-element pairs:\n > opts = { 'returns': '*' };\n > out = group( collection, opts, groups )\n { 'b': [ [0, 'beep'], [1, 'boop'], [3, 'bar'] ], 'f': [ [2, 'foo'] ] }\n\n See Also\n --------\n bifurcate, countBy, groupBy\n", + "groupBy": "\ngroupBy( collection, [options,] indicator )\n Groups values according to an indicator function.\n\n When invoked, the indicator function is provided two arguments:\n\n - `value`: collection value\n - `index`: collection index\n\n The value returned by an indicator function should be a value which can be\n serialized as an object key.\n\n If provided an empty collection, the function returns an empty object.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection to group. If provided an object, the object must be\n array-like (excluding strings and functions).\n\n options: Object (optional)\n Options.\n\n options.thisArg: any (optional)\n Execution context.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n indicator: Function\n Indicator function specifying which group an element in the input\n collection belongs to.\n\n Returns\n -------\n out: Object\n Group results.\n\n Examples\n --------\n > function indicator( v ) {\n ... if ( v[ 0 ] === 'b' ) {\n ... return 'b';\n ... }\n ... return 'other';\n ... };\n > var collection = [ 'beep', 'boop', 'foo', 'bar' ];\n > var out = groupBy( collection, indicator )\n { 'b': [ 'beep', 'boop', 'bar' ], 'other': [ 'foo' ] }\n\n // Output group results as indices:\n > var opts = { 'returns': 'indices' };\n > out = groupBy( collection, opts, indicator )\n { 'b': [ 0, 1, 3 ], 'other': [ 2 ] }\n\n // Output group results as index-value pairs:\n > opts = { 'returns': '*' };\n > out = groupBy( collection, opts, indicator )\n { 'b': [ [0, 'beep'], [1, 'boop'], [3, 'bar'] ], 'other': [ [2, 'foo' ] ] }\n\n See Also\n --------\n bifurcateBy, countBy, group\n", "groupByAsync": "\ngroupByAsync( collection, [options,] indicator, done )\n Groups values according to an indicator function.\n\n When invoked, the indicator function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n indicator function accepts two arguments, the indicator function is\n provided:\n\n - `value`\n - `next`\n\n If the indicator function accepts three arguments, the indicator function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other indicator function signature, the indicator function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `group`: value group\n\n If an indicator function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n If provided an empty collection, the function calls the `done` callback with\n an empty object as the second argument.\n\n The `group` returned by an indicator function should be a value which can be\n serialized as an object key.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n options.thisArg: any (optional)\n Execution context.\n\n indicator: Function\n Indicator function specifying which group an element in the input\n collection belongs to.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function indicator( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > groupByAsync( arr, indicator, done )\n 1000\n 2500\n 3000\n { \"true\": [ 1000, 3000 ], \"false\": [ 2500 ] }\n\n // Output group results as indices:\n > var opts = { 'returns': 'indices' };\n > groupByAsync( arr, opts, indicator, done )\n 1000\n 2500\n 3000\n { \"true\": [ 2, 0 ], \"false\": [ 1 ] }\n\n // Output group results as index-value pairs:\n > opts = { 'returns': '*' };\n > groupByAsync( arr, opts, indicator, done )\n 1000\n 2500\n 3000\n { \"true\": [ [ 2, 1000 ], [ 0, 3000 ] ], \"false\": [ [ 1, 2500 ] ] }\n\n // Limit number of concurrent invocations:\n > function indicator( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > groupByAsync( arr, opts, indicator, done )\n 2500\n 3000\n 1000\n { \"true\": [ 3000, 1000 ], \"false\": [ 2500 ] }\n\n // Process sequentially:\n > function indicator( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > groupByAsync( arr, opts, indicator, done )\n 3000\n 2500\n 1000\n { \"true\": [ 3000, 1000 ], \"false\": [ 2500 ] }\n\n\ngroupByAsync.factory( [options,] indicator )\n Returns a function which groups values according to an indicator function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.returns: string (optional)\n If `values`, values are returned; if `indices`, indices are returned; if\n `*`, both indices and values are returned. Default: 'values'.\n\n options.thisArg: any (optional)\n Execution context.\n\n indicator: Function\n Indicator function specifying which group an element in the input\n collection belongs to.\n\n Returns\n -------\n out: Function\n A group-by function.\n\n Examples\n --------\n > function indicator( value, index, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, ( index%2 === 0 ) );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = groupByAsync.factory( opts, indicator );\n > function done( error, result ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( result );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n { \"true\": [ 3000, 1000 ], \"false\": [ 2500 ] }\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n { \"true\": [ 2000, 1000 ], \"false\": [ 1500 ] }\n\n See Also\n --------\n bifurcateByAsync, countByAsync, groupBy\n", "groupIn": "\ngroupIn( obj, [options,] indicator )\n Group values according to an indicator function.\n\n When invoked, the indicator function is provided two arguments:\n\n - `value`: object value\n - `key`: object key\n\n The value returned by an indicator function should be a value which can be\n serialized as an object key.\n\n If provided an empty object with no prototype, the function returns an empty\n object.\n\n The function iterates over an object's own and inherited properties.\n\n Key iteration order is *not* guaranteed, and, thus, result order is *not*\n guaranteed.\n\n Parameters\n ----------\n obj: Object|Array|TypedArray\n Input object to group.\n\n options: Object (optional)\n Options.\n\n options.thisArg: any (optional)\n Execution context.\n\n options.returns: string (optional)\n If `values`, values are returned; if `keys`, keys are returned; if `*`,\n both keys and values are returned. Default: 'values'.\n\n indicator: Function\n Indicator function indicating which group a value in the input object\n belongs to.\n\n Returns\n -------\n out: Object\n Group results.\n\n Examples\n --------\n > function indicator( v ) {\n ... if ( v[ 0 ] === 'b' ) {\n ... return 'b';\n ... }\n ... return 'other';\n ... };\n > function Foo() { this.a = 'beep'; this.b = 'boop'; return this; };\n > Foo.prototype = Object.create( null );\n > Foo.prototype.c = 'foo';\n > Foo.prototype.d = 'bar';\n > var obj = new Foo();\n > var out = groupIn( obj, indicator )\n { 'b': [ 'beep', 'boop', 'bar' ], 'other': [ 'foo' ] }\n\n // Output group results as keys:\n > var opts = { 'returns': 'keys' };\n > out = groupIn( obj, opts, indicator )\n { 'b': [ 'a', 'b', 'd' ], 'other': [ 'c' ] }\n\n // Output group results as key-value pairs:\n > opts = { 'returns': '*' };\n > out = groupIn( obj, opts, indicator )\n { 'b': [['a','beep'], ['b','boop'], ['d','bar']], 'other': [['c','foo' ]] }\n\n See Also\n --------\n bifurcateIn, groupBy, groupOwn\n", "groupOwn": "\ngroupOwn( obj, [options,] indicator )\n Group values according to an indicator function.\n\n When invoked, the indicator function is provided two arguments:\n\n - `value`: object value\n - `key`: object key\n\n The value returned by an indicator function should be a value which can be\n serialized as an object key.\n\n If provided an empty object, the function returns an empty object.\n\n The function iterates over an object's own properties.\n\n Key iteration order is *not* guaranteed, and, thus, result order is *not*\n guaranteed.\n\n Parameters\n ----------\n obj: Object|Array|TypedArray\n Input object to group.\n\n options: Object (optional)\n Options.\n\n options.thisArg: any (optional)\n Execution context.\n\n options.returns: string (optional)\n If `values`, values are returned; if `keys`, keys are returned; if `*`,\n both keys and values are returned. Default: 'values'.\n\n indicator: Function\n Indicator function indicating which group a value in the input object\n belongs to.\n\n Returns\n -------\n out: Object\n Group results.\n\n Examples\n --------\n > function indicator( v ) {\n ... if ( v[ 0 ] === 'b' ) {\n ... return 'b';\n ... }\n ... return 'other';\n ... };\n > var obj = { 'a': 'beep', 'b': 'boop', 'c': 'foo', 'd': 'bar' };\n > var out = groupOwn( obj, indicator )\n { 'b': [ 'beep', 'boop', 'bar' ], 'other': [ 'foo' ] }\n\n // Output group results as keys:\n > var opts = { 'returns': 'keys' };\n > out = groupOwn( obj, opts, indicator )\n { 'b': [ 'a', 'b', 'd' ], 'other': [ 'c' ] }\n\n // Output group results as key-value pairs:\n > opts = { 'returns': '*' };\n > out = groupOwn( obj, opts, indicator )\n { 'b': [['a','beep'], ['b','boop'], ['d','bar']], 'other': [['c','foo' ]] }\n\n See Also\n --------\n bifurcateOwn, group, groupBy\n", @@ -1158,6 +1159,7 @@ var db = { "isBinaryString": "\nisBinaryString( value )\n Tests if a value is a binary string.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a binary string.\n\n Examples\n --------\n > var bool = isBinaryString( '1000101' )\n true\n > bool = isBinaryString( 'beep' )\n false\n > bool = isBinaryString( '' )\n false\n\n See Also\n --------\n isString\n", "isBoolean": "\nisBoolean( value )\n Tests if a value is a boolean.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a boolean.\n\n Examples\n --------\n > var bool = isBoolean( false )\n true\n > bool = isBoolean( new Boolean( false ) )\n true\n\n\nisBoolean.isPrimitive( value )\n Tests if a value is a boolean primitive.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a boolean primitive.\n\n Examples\n --------\n > var bool = isBoolean.isPrimitive( true )\n true\n > bool = isBoolean.isPrimitive( false )\n true\n > bool = isBoolean.isPrimitive( new Boolean( true ) )\n false\n\n\nisBoolean.isObject( value )\n Tests if a value is a boolean object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a boolean object.\n\n Examples\n --------\n > var bool = isBoolean.isObject( true )\n false\n > bool = isBoolean.isObject( new Boolean( false ) )\n true\n\n", "isBooleanArray": "\nisBooleanArray( value )\n Tests if a value is an array-like object of booleans.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object of booleans.\n\n Examples\n --------\n > var bool = isBooleanArray( [ true, false, true ] )\n true\n > bool = isBooleanArray( [ true, 'abc', false ] )\n false\n\n\nisBooleanArray.primitives( value )\n Tests if a value is an array-like object containing only boolean primitives.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n boolean primitives.\n\n Examples\n --------\n > var bool = isBooleanArray.primitives( [ true, false ] )\n true\n > bool = isBooleanArray.primitives( [ false, new Boolean( true ) ] )\n false\n\n\nisBooleanArray.objects( value )\n Tests if a value is an array-like object containing only Boolean objects.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n Boolean objects.\n\n Examples\n --------\n > var bool = isBooleanArray.objects( [ new Boolean( false ), true ] )\n false\n > bool = isBooleanArray.objects( [ new Boolean( false ), new Boolean( true ) ] )\n true\n\n", + "isBoxedPrimitive": "\nisBoxedPrimitive( value )\n Tests if a value is a JavaScript boxed primitive.\n\n Boxed primitive objects can be created with one of the following:\n\n - new Boolean()\n - new Number()\n - new String()\n - Object( Symbol() ) (ES6/ES2015)\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a JavaScript boxed primitive.\n\n Examples\n --------\n > var bool = isBoxedPrimitive( new Boolean( false ) )\n true\n > bool = isBoxedPrimitive( true )\n false\n\n See Also\n --------\n isPrimitive\n", "isBuffer": "\nisBuffer( value )\n Tests if a value is a Buffer instance.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a Buffer instance.\n\n Examples\n --------\n > var bool = isBuffer( new Buffer( 'beep' ) )\n true\n > bool = isBuffer( new Buffer( [ 1, 2, 3, 4 ] ) )\n true\n > bool = isBuffer( {} )\n false\n > bool = isBuffer( [] )\n false\n\n", "isCapitalized": "\nisCapitalized( value )\n Tests if a value is a string having an uppercase first character.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a string with an uppercase first\n character.\n\n Examples\n --------\n > var bool = isCapitalized( 'Hello' )\n true\n > bool = isCapitalized( 'world' )\n false\n\n See Also\n --------\n isString\n", "isCentrosymmetricMatrix": "\nisCentrosymmetricMatrix( value )\n Tests if a value is a matrix which is symmetric about its center.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a centrosymmetric matrix.\n\n Examples\n --------\n > var mat = ndarray( 'generic', 2 );\n > var M = mat( [ 2, 1, 1, 2 ], [ 2, 2 ], [ 2, 1 ], 0, 'row-major' );\n > var bool = isCentrosymmetricMatrix( M )\n true\n > bool = isCentrosymmetricMatrix( [ 1, 2, 3, 4 ] )\n false\n > bool = isCentrosymmetricMatrix( 3.14 )\n false\n > bool = isCentrosymmetricMatrix( {} )\n false\n\n See Also\n --------\n isMatrixLike, isSquareMatrix, isSymmetricMatrix\n", @@ -1256,7 +1258,7 @@ var db = { "isPositiveNumber": "\nisPositiveNumber( value )\n Tests if a value is a positive number.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a positive number.\n\n Examples\n --------\n > var bool = isPositiveNumber( 5.0 )\n true\n > bool = isPositiveNumber( new Number( 5.0 ) )\n true\n > bool = isPositiveNumber( 3.14 )\n true\n > bool = isPositiveNumber( -5.0 )\n false\n > bool = isPositiveNumber( null )\n false\n\n\nisPositiveNumber.isPrimitive( value )\n Tests if a value is a number primitive having a positive value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive having a positive\n value.\n\n Examples\n --------\n > var bool = isPositiveNumber.isPrimitive( 3.0 )\n true\n > bool = isPositiveNumber.isPrimitive( new Number( 3.0 ) )\n false\n\n\nisPositiveNumber.isObject( value )\n Tests if a value is a number object having a positive value.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object having a positive\n value.\n\n Examples\n --------\n > var bool = isPositiveNumber.isObject( 3.0 )\n false\n > bool = isPositiveNumber.isObject( new Number( 3.0 ) )\n true\n\n\n See Also\n --------\n isNumber\n", "isPositiveNumberArray": "\nisPositiveNumberArray( value )\n Tests if a value is an array-like object containing only positive numbers.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n positive numbers.\n\n Examples\n --------\n > var bool = isPositiveNumberArray( [ 3.0, new Number(3.0) ] )\n true\n > bool = isPositiveNumberArray( [ 3.0, '3.0' ] )\n false\n\n\nisPositiveNumberArray.primitives( value )\n Tests if a value is an array-like object containing only positive primitive\n number values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n positive primitive number values.\n\n Examples\n --------\n > var bool = isPositiveNumberArray.primitives( [ 1.0, 10.0 ] )\n true\n > bool = isPositiveNumberArray.primitives( [ 1.0, 0.0, 10.0 ] )\n false\n > bool = isPositiveNumberArray.primitives( [ 3.0, new Number(1.0) ] )\n false\n\n\nisPositiveNumberArray.objects( value )\n Tests if a value is an array-like object containing only number objects\n having positive values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n number objects having positive values.\n\n Examples\n --------\n > var bool = isPositiveNumberArray.objects( [ new Number(1.0), new Number(10.0) ] )\n true\n > bool = isPositiveNumberArray.objects( [ 1.0, 2.0, 10.0 ] )\n false\n > bool = isPositiveNumberArray.objects( [ 3.0, new Number(1.0) ] )\n false\n\n See Also\n --------\n isArray, isNumber, isPositiveNumber\n", "isPositiveZero": "\nisPositiveZero( value )\n Tests if a value is positive zero.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is positive zero.\n\n Examples\n --------\n > var bool = isPositiveZero( 0.0 )\n true\n > bool = isPositiveZero( new Number( 0.0 ) )\n true\n > bool = isPositiveZero( -3.14 )\n false\n > bool = isPositiveZero( -0.0 )\n false\n > bool = isPositiveZero( null )\n false\n\n\nisPositiveZero.isPrimitive( value )\n Tests if a value is a number primitive equal to positive zero.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a number primitive equal to\n positive zero.\n\n Examples\n --------\n > var bool = isPositiveZero.isPrimitive( 0.0 )\n true\n > bool = isPositiveZero.isPrimitive( new Number( 0.0 ) )\n false\n\n\nisPositiveZero.isObject( value )\n Tests if a value is a number object having a value equal to positive zero.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a number object having a value\n equal to positive zero.\n\n Examples\n --------\n > var bool = isPositiveZero.isObject( 0.0 )\n false\n > bool = isPositiveZero.isObject( new Number( 0.0 ) )\n true\n\n See Also\n --------\n isNumber, isNegativeZero\n", - "isPrimitive": "\nisPrimitive( value )\n Tests if a value is a JavaScript primitive.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a JavaScript primitive.\n\n Examples\n --------\n > var bool = isPrimitive( true )\n true\n > bool = isPrimitive( {} )\n false\n\n", + "isPrimitive": "\nisPrimitive( value )\n Tests if a value is a JavaScript primitive.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a JavaScript primitive.\n\n Examples\n --------\n > var bool = isPrimitive( true )\n true\n > bool = isPrimitive( {} )\n false\n\n See Also\n --------\n isBoxedPrimitive\n", "isPrimitiveArray": "\nisPrimitiveArray( value )\n Tests if a value is an array-like object containing only JavaScript\n primitives.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n JavaScript primitives.\n\n Examples\n --------\n > var bool = isPrimitiveArray( [ '3', 2, null ] )\n true\n > bool = isPrimitiveArray( [ {}, 2, 1 ] )\n false\n > bool = isPrimitiveArray( [ new String('abc'), '3.0' ] )\n false\n\n See Also\n --------\n isArray, isPrimitive\n", "isProbability": "\nisProbability( value )\n Tests if a value is a probability.\n\n A probability is defined as a numeric value on the interval [0,1].\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a probability.\n\n Examples\n --------\n > var bool = isProbability( 0.5 )\n true\n > bool = isProbability( new Number( 0.5 ) )\n true\n > bool = isProbability( 3.14 )\n false\n > bool = isProbability( -5.0 )\n false\n > bool = isProbability( null )\n false\n\n\nisProbability.isPrimitive( value )\n Tests if a value is a number primitive which is a probability.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number primitive which is a\n probability.\n\n Examples\n --------\n > var bool = isProbability.isPrimitive( 0.3 )\n true\n > bool = isProbability.isPrimitive( new Number( 0.3 ) )\n false\n\n\nisProbability.isObject( value )\n Tests if a value is a number object having a value which is a probability.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object having a value which\n is a probability.\n\n Examples\n --------\n > var bool = isProbability.isObject( 0.77 )\n false\n > bool = isProbability.isObject( new Number( 0.77 ) )\n true\n\n\n See Also\n --------\n isNumber\n", "isProbabilityArray": "\nisProbabilityArray( value )\n Tests if a value is an array-like object containing only probabilities.\n\n A probability is defined as a numeric value on the interval [0,1].\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n probabilities.\n\n Examples\n --------\n > var bool = isProbabilityArray( [ 0.5, new Number(0.8) ] )\n true\n > bool = isProbabilityArray( [ 0.8, 1.2 ] )\n false\n > bool = isProbabilityArray( [ 0.8, '0.2' ] )\n false\n\n\nisProbabilityArray.primitives( value )\n Tests if a value is an array-like object containing only primitive\n probabilities.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n primitive probabilities.\n\n Examples\n --------\n > var bool = isProbabilityArray.primitives( [ 1.0, 0.0, 0.5 ] )\n true\n > bool = isProbabilityArray.primitives( [ 0.3, new Number(0.4) ] )\n false\n\n\nisProbabilityArray.objects( value )\n Tests if a value is an array-like object containing only number objects\n having probability values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n number objects having probability values.\n\n Examples\n --------\n > var bool = isProbabilityArray.objects( [ new Number(0.7), new Number(1.0) ] )\n true\n > bool = isProbabilityArray.objects( [ 1.0, 0.0, new Number(0.7) ] )\n false\n\n See Also\n --------\n isArray, isProbability\n", @@ -1361,6 +1363,7 @@ var db = { "MONTH_NAMES_EN": "\nMONTH_NAMES_EN()\n Returns a list of month names (English).\n\n Returns\n -------\n out: Array\n List of month names.\n\n Examples\n --------\n > var list = MONTH_NAMES_EN()\n [ 'January', 'February', 'March', 'April', ... ]\n\n", "MONTHS_IN_YEAR": "\nMONTHS_IN_YEAR\n Number of months in a year.\n\n The value is a generalization and does **not** take into account\n inaccuracies due to daylight savings conventions, crossing timezones, or\n other complications with time and dates.\n\n Examples\n --------\n > var yrs = 3.14;\n > var mons = yrs * MONTHS_IN_YEAR\n 37.68\n\n", "moveProperty": "\nmoveProperty( source, prop, target )\n Moves a property from one object to another object.\n\n The property is deleted from the source object and the property's descriptor\n is preserved during transfer.\n\n If a source property is not configurable, the function throws an error, as\n the property cannot be deleted from the source object.\n\n Parameters\n ----------\n source: Object\n Source object.\n\n prop: string\n Property to move.\n\n target: Object\n Target object.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether operation was successful.\n\n Examples\n --------\n > var obj1 = { 'a': 'b' };\n > var obj2 = {};\n > var bool = moveProperty( obj1, 'a', obj2 )\n true\n > bool = moveProperty( obj1, 'c', obj2 )\n false\n\n", + "namedtypedtuple": "\nnamedtypedtuple( fields[, options] )\n Returns a named typed tuple factory.\n\n Named tuples assign a property name, and thus a meaning, to each position in\n a tuple and allow for more readable, self-documenting code.\n\n Named typed tuples can be used wherever typed arrays are used, with the\n added benefit that they allow accessing fields by both field name and\n position index.\n\n Named typed tuples may be one the following data types:\n\n - float64: double-precision floating-point numbers (IEEE 754)\n - float32: single-precision floating-point numbers (IEEE 754)\n - int32: 32-bit two's complement signed integers\n - uint32: 32-bit unsigned integers\n - int16: 16-bit two's complement signed integers\n - uint16: 16-bit unsigned integers\n - int8: 8-bit two's complement signed integers\n - uint8: 8-bit unsigned integers\n - uint8c: 8-bit unsigned integers clamped to 0-255\n\n Parameters\n ----------\n fields: Array\n Field (property) names.\n\n options: Object (optional)\n Function options.\n\n options.dtype: string (optional)\n Default tuple data type. If a data type is not provided to a named typed\n tuple factory, this option specifies the underlying tuple data type.\n Default: 'float64'.\n\n options.name: string (optional)\n Tuple name. Default: 'tuple'.\n\n Returns\n -------\n factory: Function\n Named typed tuple factory.\n\n Examples\n --------\n > var opts = {};\n > opts.name = 'Point';\n > var factory = namedtypedtuple( [ 'x', 'y' ], opts );\n > var tuple = factory();\n\n\nfactory()\n Returns a named typed tuple of the default data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory();\n > p.x\n 0.0\n > p.y\n 0.0\n > p[ 0 ]\n 0.0\n > p[ 1 ]\n 0.0\n\n\nfactory( dtype )\n Returns a named typed tuple of the specified data type.\n\n Parameters\n ----------\n dtype: string\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory( 'int32' );\n > p.x\n 0\n > p.y\n 0\n > p[ 0 ]\n 0\n > p[ 1 ]\n 0\n\n\nfactory( typedarray[, dtype] )\n Creates a named typed tuple from a typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate a named typed tuple.\n\n dtype: string (optional)\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory( Float64Array[ 1.0, -1.0 ] );\n > p.x\n 1.0\n > p.y\n -1.0\n > p[ 0 ]\n 1.0\n > p[ 1 ]\n -1.0\n\n\nfactory( obj[, dtype] )\n Creates a named typed tuple from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a named typed\n tuple.\n\n dtype: string (optional)\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory( [ 1, -1 ], 'int32' );\n > p.x\n 1\n > p.y\n -1\n > p[ 0 ]\n 1\n > p[ 1 ]\n -1\n\n\nfactory( buffer[, byteOffset][, dtype] )\n Returns a named typed tuple view of an ArrayBuffer.\n\n The view length equals the number of tuple fields.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first tuple element.\n Default: 0.\n\n dtype: string (optional)\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var buf = new ArrayBuffer( 16 );\n > var p = factory( buf, 4, 'float32' );\n > p.x\n 0.0\n > p.y\n 0.0\n > p[ 0 ]\n 0.0\n > p[ 1 ]\n 0.0\n\n\nfactory.from( src[, map[, thisArg]] )\n Creates a new named typed tuple from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n - field: tuple field.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of tuple elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > function mapFcn( v ) { return v * 2.0; };\n > var p = factory.from( [ 1.0, -1.0 ], mapFcn );\n > p.x\n 2.0\n > p.y\n -2.0\n > p[ 0 ]\n 2.0\n > p[ 1 ]\n -2.0\n\n\nfactory.fromObject( obj[, map[, thisArg]] )\n Creates a new named typed tuple from an object containing tuple fields.\n\n A callback is provided the following arguments:\n\n - value: source object tuple field value.\n - field: source object tuple field name.\n\n Parameters\n ----------\n obj: Object\n Source object.\n\n map: Function (optional)\n Callback to invoke for each source object tuple field.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory.fromObject( { 'x': 2.0, 'y': -2.0 } );\n > p.x\n 2.0\n > p.y\n -2.0\n > p[ 0 ]\n 2.0\n > p[ 1 ]\n -2.0\n\n\nfactory.of( element0[, element1[, ...[, elementN]]] )\n Creates a new named typed tuple from a variable number of arguments.\n\n The number of arguments *must* equal the number of tuple fields.\n\n Parameters\n ----------\n element: number\n Tuple elements.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory.of( 2.0, -2.0 );\n > p.x\n 2.0\n > p.y\n -2.0\n > p[ 0 ]\n 2.0\n > p[ 1 ]\n -2.0\n\n\ntuple.BYTES_PER_ELEMENT\n Size (in bytes) of each tuple element.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.BYTES_PER_ELEMENT\n 8\n\n\ntuple.buffer\n Pointer to the underlying data buffer.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.buffer\n \n\n\ntuple.byteLength\n Length (in bytes) of the tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.byteLength\n 16\n\n\ntuple.byteOffset\n Offset (in bytes) of a tuple from the start of its underlying ArrayBuffer.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.byteOffset\n 0\n\n\ntuple.length\n Tuple length (i.e., number of elements).\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.length\n 2\n\n\ntuple.name\n Tuple name.\n\n Examples\n --------\n > var opts = { 'name': 'Point' };\n > var factory = namedtypedtuple( [ 'x', 'y' ], opts );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.name\n 'Point'\n\n\ntuple.fields\n Returns the list of tuple fields.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.fields\n [ 'x', 'y' ]\n\n\ntuple.orderedFields\n Returns the list of tuple fields in index order.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p[ 0 ]\n 1.0\n > p.sort();\n > p[ 0 ]\n -1.0\n > p.fields\n [ 'x', 'y' ]\n > p.orderedFields\n [ 'y', 'x' ]\n\n\ntuple.copyWithin( target, start[, end] )\n Copies a sequence of elements within the tuple starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] );\n > p.copyWithin( 3, 0, 2 );\n > p.w\n 2.0\n > p.v\n -2.0\n\n\ntuple.entries()\n Returns an iterator for iterating over tuple key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over tuple key-value pairs.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > it = p.entries();\n > it.next().value\n [ 1.0, 0, 'x' ]\n > it.next().value\n [ -1.0, 1, 'y' ]\n > it.next().done\n true\n\n\ntuple.every( predicate[, thisArg] )\n Tests whether all tuple elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements. If a predicate function\n returns a truthy value, a tuple element passes; otherwise, a tuple\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all tuple elements pass.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > p.every( predicate )\n false\n\n\ntuple.fieldOf( searchElement[, fromIndex] )\n Returns the field of the first tuple element strictly equal to a search\n element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `undefined`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: 0.\n\n Returns\n -------\n field: string|undefined\n Tuple field.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > var f = p.fieldOf( 2.0 )\n undefined\n > f = p.fieldOf( -1.0 )\n 'z'\n\n\ntuple.fill( value[, start[, end]] )\n Fills a tuple from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last tuple element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.fill( 2.0 );\n > p.x\n 2.0\n > p.y\n 2.0\n\n\ntuple.filter( predicate[, thisArg] )\n Creates a new tuple which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n The returned tuple has the same data type as the host tuple.\n\n If a predicate function does not return a truthy value for any tuple\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters tuple elements. If a predicate function\n returns a truthy value, a tuple element is included in the output tuple;\n otherwise, a tuple element is not included in the output tuple.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p1 = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > var p2 = p1.filter( predicate );\n > p2.fields\n [ 'x', 'y' ]\n\n\ntuple.find( predicate[, thisArg] )\n Returns the first tuple element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Tuple element.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var v = p.find( predicate )\n -1.0\n\n\ntuple.findField( predicate[, thisArg] )\n Returns the field of the first tuple element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n field: string|undefined\n Tuple field.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var f = p.findField( predicate )\n 'z'\n\n\ntuple.findIndex( predicate[, thisArg] )\n Returns the index of the first tuple element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var idx = p.findIndex( predicate )\n 2\n\n\ntuple.forEach( fcn[, thisArg] )\n Invokes a callback for each tuple element.\n\n A provided function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each tuple element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1, 0, -1 ], 'int32' );\n > var str = ' ';\n > function fcn( v, i, f ) { str += f + '=' + v + ' '; };\n > p.forEach( fcn );\n > str\n ' x=1 y=0 z=-1 '\n\n\ntuple.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether a tuple includes a search element.\n\n The method does not distinguish between signed and unsigned zero.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a tuple includes a search element.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > var bool = p.includes( 2.0 )\n false\n > bool = p.includes( -1.0 )\n true\n\n\ntuple.indexOf( searchElement[, fromIndex] )\n Returns the index of the first tuple element strictly equal to a search\n element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > var idx = p.indexOf( 2.0 )\n -1\n > idx = p.indexOf( -1.0 )\n 2\n\n\ntuple.ind2key( ind )\n Converts a tuple index to a field name.\n\n If provided an out-of-bounds index, the method returns `undefined`.\n\n Parameters\n ----------\n ind: integer\n Tuple index. If less than zero, the method resolves the index relative\n to the last tuple element.\n\n Returns\n -------\n field: string|undefined\n Field name.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p.ind2key( 1 )\n 'y'\n > p.ind2key( 100 )\n undefined\n\n\ntuple.join( [separator] )\n Serializes a tuple by joining all tuple elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating tuple elements. Default: ','.\n\n Returns\n -------\n str: string\n Tuple serialized as a string.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1, 0, -1 ], 'int32' );\n > p.join( '|' )\n '1|0|-1'\n\n\ntuple.keys()\n Returns an iterator for iterating over tuple keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over tuple keys.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > it = p.entries();\n > it.next().value\n [ 0, 'x' ]\n > it.next().value\n [ 1, 'y' ]\n > it.next().done\n true\n\n\ntuple.key2ind( field )\n Converts a field name to a tuple index.\n\n If provided an unknown field name, the method returns `-1`.\n\n Parameters\n ----------\n field: string\n Tuple field name.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p.key2ind( 'y' )\n 1\n\n\ntuple.lastFieldOf( searchElement[, fromIndex] )\n Returns the field of the last tuple element strictly equal to a search\n element.\n\n The method iterates from the last tuple element to the first tuple element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `undefined`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: -1.\n\n Returns\n -------\n field: string|undefined\n Tuple field.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n > var f = p.lastFieldOf( 2.0 )\n undefined\n > f = p.lastFieldOf( 0.0 )\n 'w'\n\n\ntuple.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last tuple element strictly equal to a search\n element.\n\n The method iterates from the last tuple element to the first tuple element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n > var idx = p.lastIndexOf( 2.0 )\n -1\n > idx = p.lastIndexOf( 0.0 )\n 3\n\n\ntuple.map( fcn[, thisArg] )\n Maps each tuple element to an element in a new tuple.\n\n A provided function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n The returned tuple has the same data type as the host tuple.\n\n Parameters\n ----------\n fcn: Function\n Function which maps tuple elements to elements in the new tuple.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p1 = factory( [ 1.0, 0.0, -1.0 ] );\n > function fcn( v ) { return v * 2.0; };\n > var p2 = p1.map( fcn );\n > p2.x\n 2.0\n > p2.y\n 0.0\n > p2.z\n -2.0\n\n\ntuple.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in a tuple and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current tuple element.\n - index: index of the current tuple element.\n - field: field name corresponding to the current tuple element.\n - tuple: tuple on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first tuple element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first tuple element as the first argument and the second tuple\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = p.reduce( fcn, 0.0 )\n 2.0\n\n\ntuple.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in a tuple and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current tuple element.\n - index: index of the current tuple element.\n - field: field name corresponding to the current tuple element.\n - tuple: tuple on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last tuple element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last tuple element as the first argument and the second-to-last\n tuple element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = p.reduceRight( fcn, 0.0 )\n 2.0\n\n\ntuple.reverse()\n Reverses a tuple *in-place*.\n\n This method mutates the tuple on which the method is invoked.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p[ 0 ]\n 1.0\n > p.x\n 1.0\n > p.reverse();\n > p[ 0 ]\n -1.0\n > p.x\n 1.0\n\n\ntuple.set( arr[, offset] )\n Sets tuple elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing tuple values to set.\n\n offset: integer (optional)\n Tuple index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p[ 1 ]\n 0.0\n > p.y\n 0.0\n > p.set( [ -2.0, 2.0 ], 1 );\n > p[ 1 ]\n -2.0\n > p.y\n -2.0\n > p[ 2 ]\n 2.0\n > p.z\n 2.0\n\n\ntuple.slice( [begin[, end]] )\n Copies tuple elements to a new tuple with the same underlying data type as\n the host tuple.\n\n If the method is unable to resolve indices to a non-empty tuple subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last tuple element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p1 = factory( [ 1.0, 0.0, -1.0 ] );\n > p1.fields\n [ 'x', 'y', 'z' ]\n > var p2 = p1.slice( 1 );\n > p2.fields\n [ 'y', 'z' ]\n > p2.y\n 0.0\n > p2.z\n -1.0\n\n\ntuple.some( predicate[, thisArg] )\n Tests whether at least one tuple element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements. If a predicate function\n returns a truthy value, a tuple element passes; otherwise, a tuple\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one tuple element passes.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > p.some( predicate )\n true\n\n\ntuple.sort( [compareFunction] )\n Sorts a tuple *in-place*.\n\n Sorting a tuple does *not* affect field assignments. Accessing a tuple field\n before and after sorting will always return the same tuple element. However,\n this behavior is generally not true when accessing tuple elements according\n to tuple index. In summary, sorting affects index order but not field\n assignments.\n\n The comparison function is provided two tuple elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the tuple on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > p.sort();\n > p.orderedFields\n [ 'v', 'y', 'z', 'x', 'w' ]\n > p[ 0 ]\n -2.0\n > p.x\n 1.0\n > p[ 1 ]\n -1.0\n > p.y\n -1.0\n > p.key2ind( 'x' )\n 3\n\n\ntuple.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host tuple.\n\n If the method is unable to resolve indices to a non-empty tuple subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last tuple element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n arr: TypedArray\n A new typed array view.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > var arr = p.subarray( 2 )\n [ 0.0, 2.0, -2.0 ]\n > arr.length\n 3\n\n\ntuple.subtuple( [begin[, end]] )\n Creates a new named typed tuple over the same underlying ArrayBuffer and\n with the same underlying data type as the host tuple.\n\n If the function is unable to resolve indices to a non-empty tuple\n subsequence, the function returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last tuple element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray|null\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p1 = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > var p2 = p1.subtuple( 2 );\n > p2.fields\n [ 'z', 'w', 'v' ]\n > p2[ 0 ]\n 0.0\n > p2.z\n 0.0\n > p2[ 1 ]\n 2.0\n > p2.w\n 2.0\n > p2[ 2 ]\n -2.0\n > p2.v\n -2.0\n > p2.length\n 3\n\n\ntuple.toJSON()\n Serializes a tuple as JSON.\n\n Returns\n -------\n obj: Object\n A tuple JSON representation.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, -1.0, 0.0 ] );\n > p.toJSON()\n { 'x': 1.0, 'y': -1.0, 'z': 0.0 }\n\n\ntuple.toLocaleString( [locales[, options]] )\n Serializes a tuple as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, -1.0, 0.0 ], 'int32' );\n > p.toLocaleString()\n '1,-1,0'\n\n\ntuple.toString()\n Serializes a tuple as a string.\n\n Returns\n -------\n str: string\n A tuple string representation.\n\n Examples\n --------\n > opts = { 'name': 'Point' };\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ], opts );\n > var p = factory( [ 1.0, -1.0, 0.0 ] );\n > p.toString()\n 'Point(x=1, y=-1, z=0)'\n\n\ntuple.values()\n Returns an iterator for iterating over tuple elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over tuple elements.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > it = p.values();\n > it.next().value\n 1.0\n > it.next().value\n -1.0\n > it.next().done\n true\n\n See Also\n --------\n typedarray\n", "nativeClass": "\nnativeClass( value )\n Returns a string value indicating a specification defined classification of\n an object.\n\n The function is *not* robust for ES2015+ environments. In ES2015+,\n `Symbol.toStringTag` allows overriding the default description of an object.\n While measures are taken to uncover the default description, such measures\n can be thwarted. While this function remains useful for type-checking, be\n aware that value impersonation is possible. Where possible, prefer functions\n tailored to checking for particular value types, as specialized functions\n are better equipped to address `Symbol.toStringTag`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n out: string\n String value indicating a specification defined classification of the\n input value.\n\n Examples\n --------\n > var str = nativeClass( 'a' )\n '[object String]'\n > str = nativeClass( 5 )\n '[object Number]'\n > function Beep(){};\n > str = nativeClass( new Beep() )\n '[object Object]'\n\n See Also\n --------\n constructorName, typeOf\n", "ndarray": "\nndarray( dtype, ndims[, options] )\n Returns an ndarray constructor.\n\n Parameters\n ----------\n dtype: string\n Underlying data type.\n\n ndims: integer\n Number of dimensions.\n\n options: Object (optional)\n Options.\n\n options.codegen: boolean (optional)\n Boolean indicating whether to use code generation. Code generation can\n boost performance, but may be problematic in browser contexts enforcing\n a strict content security policy (CSP). Default: true.\n\n options.mode: string (optional)\n Specifies how to handle indices which exceed array dimensions. If equal\n to 'throw', an ndarray instance throws an error when an index exceeds\n array dimensions. If equal to 'wrap', an ndarray instance wraps around\n indices exceeding array dimensions using modulo arithmetic. If equal to\n 'clamp', an ndarray instance sets an index exceeding array dimensions to\n either `0` (minimum index) or the maximum index. Default: 'throw'.\n\n options.submode: Array (optional)\n Specifies how to handle subscripts which exceed array dimensions. If a\n mode for a corresponding dimension is equal to 'throw', an ndarray\n instance throws an error when a subscript exceeds array dimensions. If\n equal to 'wrap', an ndarray instance wraps around subscripts exceeding\n array dimensions using modulo arithmetic. If equal to 'clamp', an\n ndarray instance sets a subscript exceeding array dimensions to either\n `0` (minimum index) or the maximum index. If the number of modes is\n fewer than the number of dimensions, the function recycles modes using\n modulo arithmetic. Default: [ options.mode ].\n\n Returns\n -------\n ctor: Function\n ndarray constructor.\n\n ctor.BYTES_PER_ELEMENT: integer\n Size (in bytes) of each array element (if known).\n\n ctor.dtype: string\n Underlying data type.\n\n ctor.ndims: integer\n Number of dimensions.\n\n ctor.prototype.byteLength: integer\n Size (in bytes) of the array (if known).\n\n ctor.prototype.BYTES_PER_ELEMENT: integer\n Size (in bytes) of each array element (if known).\n\n ctor.prototype.data: ArrayLikeObject|TypedArray|Buffer\n Pointer to the underlying data buffer.\n\n ctor.prototype.dtype: string\n Underlying data type.\n\n ctor.prototype.flags: Object\n Information about the memory layout of the array.\n\n ctor.prototype.length: integer\n Length of the array (i.e., number of elements).\n\n ctor.prototype.ndims: integer\n Number of dimensions.\n\n ctor.prototype.offset: integer\n Index offset which specifies the buffer index at which to start\n iterating over array elements.\n\n ctor.prototype.order: string\n Array order. The array order is either row-major (C-style) or column-\n major (Fortran-style).\n\n ctor.prototype.shape: Array\n Array shape.\n\n ctor.prototype.strides: Array\n Index strides which specify how to access data along corresponding array\n dimensions.\n\n ctor.prototype.get: Function\n Returns an array element specified according to provided subscripts. The\n number of provided subscripts should equal the number of dimensions.\n\n ctor.prototype.iget: Function\n Returns an array element located at a specified linear index.\n\n ctor.prototype.set: Function\n Sets an array element specified according to provided subscripts. The\n number of provided subscripts should equal the number of dimensions.\n\n ctor.prototype.iset: Function\n Sets an array element located at a specified linear index.\n\n ctor.prototype.toString: Function\n Serializes an ndarray as a string. This method does **not** serialize\n data outside of the buffer region defined by the array configuration.\n\n ctor.prototype.toJSON: Function\n Serializes an ndarray as a JSON object. This method does **not**\n serialize data outside of the buffer region defined by the array\n configuration.\n\n Examples\n --------\n > var ctor = ndarray( 'generic', 2 )\n \n\n // To create a new instance...\n > var b = [ 1.0, 2.0, 3.0, 4.0 ]; // underlying data buffer\n > var d = [ 2, 2 ]; // shape\n > var s = [ 2, 1 ]; // strides\n > var o = 0; // index offset\n > var arr = ctor( b, d, s, o, 'row-major' )\n \n\n // Get an element using subscripts:\n > var v = arr.get( 1, 1 )\n 4.0\n\n // Get an element using a linear index:\n > v = arr.iget( 3 )\n 4.0\n\n // Set an element using subscripts:\n > arr.set( 1, 1, 40.0 );\n > arr.get( 1, 1 )\n 40.0\n\n // Set an element using a linear index:\n > arr.iset( 3, 99.0 );\n > arr.get( 1, 1 )\n 99.0\n\n See Also\n --------\n array\n", "ndarrayCastingModes": "\nndarrayCastingModes()\n Returns a list of ndarray casting modes.\n\n The output array contains the following modes:\n\n - 'none': only allow casting between identical types\n - 'equiv': allow casting between identical and byte swapped types\n - 'safe': only allow \"safe\" casts\n - 'same-kind': allow \"safe\" casts and casts within the same kind (e.g.,\n between signed integers or between floats)\n - 'unsafe': allow casting between all types (including between integers and\n floats)\n\n Returns\n -------\n out: Array\n List of ndarray casting modes.\n\n Examples\n --------\n > var out = ndarrayCastingModes()\n [ 'none', 'equiv', 'safe', 'same-kind', 'unsafe' ]\n\n See Also\n --------\n array, ndarray\n", From 24386afb04fdfa715aec85773c56bbafafe1cc41 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 01:24:18 -0700 Subject: [PATCH 0534/1062] Ensure properties/methods are non-enumerable --- .../lib/define_nonenumerable_property.js | 53 +++++++++++++++++++ .../utils/named-typed-tuple/lib/main.js | 47 ++++++++-------- 2 files changed, 77 insertions(+), 23 deletions(-) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_property.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_property.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_property.js new file mode 100644 index 000000000000..b9f4d8fa6024 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_property.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var defineProperty = require( '@stdlib/utils/define-property' ); + + +// MAIN // + +/** +* Defines a non-enumerable property. +* +* @private +* @param {Object} obj - object on which to define the property +* @param {(string|symbol)} prop - property name +* @param {*} value - value to set +* +* @example +* var obj = {}; +* +* defineNonEnumerableProperty( obj, 'beep', 'boop' ); +*/ +function defineNonEnumerableProperty( obj, prop, value ) { // eslint-disable-line id-length + defineProperty( obj, prop, { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': value + }); +} + + +// EXPORTS // + +module.exports = defineNonEnumerableProperty; diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index b78c35bcc450..5d79403e81c1 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -46,6 +46,7 @@ var validate = require( './validate.js' ); var ascending = require( './ascending.js' ); var fromIterator = require( './from_iterator.js' ); var fromIteratorMap = require( './from_iterator_map.js' ); +var defineNonEnumerableProperty = require( './define_nonenumerable_property.js' ); // eslint-disable-line id-length // VARIABLES // @@ -176,33 +177,33 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi indices.push( i ); setReadWriteAccessor( tuple, fields[ i ], getter( i ), setter( i ) ); } - tuple.name = opts.name; + defineNonEnumerableProperty( tuple, 'name', opts.name ); setReadOnlyAccessor( tuple, 'fields', getFields ); setReadOnlyAccessor( tuple, 'orderedFields', orderedFields ); // Note: keep in alphabetical order - tuple.entries = entries; - tuple.every = every; - tuple.fieldOf = fieldOf; - tuple.filter = filter; - tuple.find = find; - tuple.findIndex = findIndex; - tuple.findField = findField; - tuple.forEach = forEach; - tuple.ind2key = ind2key; - tuple.key2ind = key2ind; - tuple.keys = keys; - tuple.lastFieldOf = lastFieldOf; - tuple.map = map; - tuple.reduce = reduce; - tuple.reduceRight = reduceRight; - tuple.reverse = reverse; - tuple.slice = slice; - tuple.some = some; - tuple.sort = sort; - tuple.subtuple = subtuple; - tuple.toJSON = toJSON; - tuple.toString = toString; + defineNonEnumerableProperty( tuple, 'entries', entries ); + defineNonEnumerableProperty( tuple, 'every', every ); + defineNonEnumerableProperty( tuple, 'fieldOf', fieldOf ); + defineNonEnumerableProperty( tuple, 'filter', filter ); + defineNonEnumerableProperty( tuple, 'find', find ); + defineNonEnumerableProperty( tuple, 'findIndex', findIndex ); + defineNonEnumerableProperty( tuple, 'findField', findField ); + defineNonEnumerableProperty( tuple, 'forEach', forEach ); + defineNonEnumerableProperty( tuple, 'ind2key', ind2key ); + defineNonEnumerableProperty( tuple, 'key2ind', key2ind ); + defineNonEnumerableProperty( tuple, 'keys', keys ); + defineNonEnumerableProperty( tuple, 'lastFieldOf', lastFieldOf ); + defineNonEnumerableProperty( tuple, 'map', map ); + defineNonEnumerableProperty( tuple, 'reduce', reduce ); + defineNonEnumerableProperty( tuple, 'reduceRight', reduceRight ); + defineNonEnumerableProperty( tuple, 'reverse', reverse ); + defineNonEnumerableProperty( tuple, 'slice', slice ); + defineNonEnumerableProperty( tuple, 'some', some ); + defineNonEnumerableProperty( tuple, 'sort', sort ); + defineNonEnumerableProperty( tuple, 'subtuple', subtuple ); + defineNonEnumerableProperty( tuple, 'toJSON', toJSON ); + defineNonEnumerableProperty( tuple, 'toString', toString ); return tuple; From 4220121f212498fe9bb3c71b52929150bda44d24 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 01:24:57 -0700 Subject: [PATCH 0535/1062] Update parameter type --- .../@stdlib/utils/define-read-only-property/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/define-read-only-property/lib/main.js b/lib/node_modules/@stdlib/utils/define-read-only-property/lib/main.js index 427373bc7708..7235910aee5d 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-property/lib/main.js +++ b/lib/node_modules/@stdlib/utils/define-read-only-property/lib/main.js @@ -29,7 +29,7 @@ var defineProperty = require( '@stdlib/utils/define-property' ); * Defines a read-only property. * * @param {Object} obj - object on which to define the property -* @param {string} prop - property name +* @param {(string|symbol)} prop - property name * @param {*} value - value to set * * @example From 62248253a68fc75fc5e4b2349174d45998b19bee Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 01:26:26 -0700 Subject: [PATCH 0536/1062] Update parameter types --- .../@stdlib/utils/define-read-only-accessor/docs/repl.txt | 2 +- .../@stdlib/utils/define-read-only-accessor/lib/main.js | 2 +- .../@stdlib/utils/define-read-only-property/docs/repl.txt | 2 +- .../@stdlib/utils/define-read-write-accessor/docs/repl.txt | 2 +- .../@stdlib/utils/define-read-write-accessor/lib/main.js | 2 +- .../@stdlib/utils/define-write-only-accessor/docs/repl.txt | 2 +- .../@stdlib/utils/define-write-only-accessor/lib/main.js | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/define-read-only-accessor/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-read-only-accessor/docs/repl.txt index b61b54a4078f..66b1f0bdb3b5 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-accessor/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/define-read-only-accessor/docs/repl.txt @@ -7,7 +7,7 @@ obj: Object Object on which to define the property. - prop: string + prop: string|symbol Property name. getter: Function diff --git a/lib/node_modules/@stdlib/utils/define-read-only-accessor/lib/main.js b/lib/node_modules/@stdlib/utils/define-read-only-accessor/lib/main.js index 57a07245b87d..e786799be448 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-accessor/lib/main.js +++ b/lib/node_modules/@stdlib/utils/define-read-only-accessor/lib/main.js @@ -29,7 +29,7 @@ var defineProperty = require( '@stdlib/utils/define-property' ); * Defines a read-only accessor. * * @param {Object} obj - object on which to define the property -* @param {string} prop - property name +* @param {(string|symbol)} prop - property name * @param {Function} getter - accessor * * @example diff --git a/lib/node_modules/@stdlib/utils/define-read-only-property/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-read-only-property/docs/repl.txt index 1f97fdc23933..d533282b5948 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-property/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/define-read-only-property/docs/repl.txt @@ -7,7 +7,7 @@ obj: Object Object on which to define the property. - prop: string + prop: string|symbol Property name. value: any diff --git a/lib/node_modules/@stdlib/utils/define-read-write-accessor/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-read-write-accessor/docs/repl.txt index 36ef8ce77d1c..d7aba18f973e 100644 --- a/lib/node_modules/@stdlib/utils/define-read-write-accessor/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/define-read-write-accessor/docs/repl.txt @@ -7,7 +7,7 @@ obj: Object Object on which to define the property. - prop: string + prop: string|symbol Property name. getter: Function diff --git a/lib/node_modules/@stdlib/utils/define-read-write-accessor/lib/main.js b/lib/node_modules/@stdlib/utils/define-read-write-accessor/lib/main.js index ed3162e89779..1165895e86b1 100644 --- a/lib/node_modules/@stdlib/utils/define-read-write-accessor/lib/main.js +++ b/lib/node_modules/@stdlib/utils/define-read-write-accessor/lib/main.js @@ -29,7 +29,7 @@ var defineProperty = require( '@stdlib/utils/define-property' ); * Defines a read-write accessor. * * @param {Object} obj - object on which to define the property -* @param {string} prop - property name +* @param {(string|symbol)} prop - property name * @param {Function} getter - get accessor * @param {Function} setter - set accessor * diff --git a/lib/node_modules/@stdlib/utils/define-write-only-accessor/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-write-only-accessor/docs/repl.txt index e506019ae2b3..ad55424eaf2e 100644 --- a/lib/node_modules/@stdlib/utils/define-write-only-accessor/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/define-write-only-accessor/docs/repl.txt @@ -7,7 +7,7 @@ obj: Object Object on which to define the property. - prop: string + prop: string|symbol Property name. setter: Function diff --git a/lib/node_modules/@stdlib/utils/define-write-only-accessor/lib/main.js b/lib/node_modules/@stdlib/utils/define-write-only-accessor/lib/main.js index 2211d69d911d..e3ed60ec4f59 100644 --- a/lib/node_modules/@stdlib/utils/define-write-only-accessor/lib/main.js +++ b/lib/node_modules/@stdlib/utils/define-write-only-accessor/lib/main.js @@ -29,7 +29,7 @@ var defineProperty = require( '@stdlib/utils/define-property' ); * Defines a write-only accessor. * * @param {Object} obj - object on which to define the property -* @param {string} prop - property name +* @param {(string|symbol)} prop - property name * @param {Function} setter - accessor * * @example From 158abf0ac3fa2edd3ca69197e82b3be52f78aad9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 01:34:22 -0700 Subject: [PATCH 0537/1062] Ensure properties are non-enumerable --- ...define_nonenumerable_read_only_accessor.js | 56 +++++++++++++++++++ .../utils/named-typed-tuple/lib/main.js | 54 +++++++++--------- 2 files changed, 83 insertions(+), 27 deletions(-) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_read_only_accessor.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_read_only_accessor.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_read_only_accessor.js new file mode 100644 index 000000000000..2ea42db72778 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_read_only_accessor.js @@ -0,0 +1,56 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var defineProperty = require( '@stdlib/utils/define-property' ); + + +// MAIN // + +/** +* Defines a non-enumerable read-only accessor. +* +* @private +* @param {Object} obj - object on which to define the property +* @param {(string|symbol)} prop - property name +* @param {Function} get - getter +* +* @example +* var obj = {}; +* +* function get() { +* return 'boop'; +* } +* +* defineNonEnumerableReadOnlyAccessor( obj, 'beep', get ); +*/ +function defineNonEnumerableReadOnlyAccessor( obj, prop, get ) { // eslint-disable-line id-length + defineProperty( obj, prop, { + 'configurable': false, + 'enumerable': false, + 'get': get + }); +} + + +// EXPORTS // + +module.exports = defineNonEnumerableReadOnlyAccessor; diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 5d79403e81c1..53b70d816656 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -36,7 +36,6 @@ var typedarray = require( '@stdlib/array/typed' ); var Int8Array = require( '@stdlib/array/int8' ); var getDtype = require( '@stdlib/array/dtype' ); var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); -var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); var defineProperty = require( '@stdlib/utils/define-property' ); var floor = require( '@stdlib/math/base/special/floor' ); var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); @@ -46,7 +45,8 @@ var validate = require( './validate.js' ); var ascending = require( './ascending.js' ); var fromIterator = require( './from_iterator.js' ); var fromIteratorMap = require( './from_iterator_map.js' ); -var defineNonEnumerableProperty = require( './define_nonenumerable_property.js' ); // eslint-disable-line id-length +var setNonEnumerableProperty = require( './define_nonenumerable_property.js' ); +var setNonEnumerableReadOnlyAccessor = require( './define_nonenumerable_read_only_accessor.js' ); // eslint-disable-line id-length // VARIABLES // @@ -177,33 +177,33 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi indices.push( i ); setReadWriteAccessor( tuple, fields[ i ], getter( i ), setter( i ) ); } - defineNonEnumerableProperty( tuple, 'name', opts.name ); - setReadOnlyAccessor( tuple, 'fields', getFields ); - setReadOnlyAccessor( tuple, 'orderedFields', orderedFields ); + setNonEnumerableProperty( tuple, 'name', opts.name ); + setNonEnumerableReadOnlyAccessor( tuple, 'fields', getFields ); + setNonEnumerableReadOnlyAccessor( tuple, 'orderedFields', orderedFields ); // Note: keep in alphabetical order - defineNonEnumerableProperty( tuple, 'entries', entries ); - defineNonEnumerableProperty( tuple, 'every', every ); - defineNonEnumerableProperty( tuple, 'fieldOf', fieldOf ); - defineNonEnumerableProperty( tuple, 'filter', filter ); - defineNonEnumerableProperty( tuple, 'find', find ); - defineNonEnumerableProperty( tuple, 'findIndex', findIndex ); - defineNonEnumerableProperty( tuple, 'findField', findField ); - defineNonEnumerableProperty( tuple, 'forEach', forEach ); - defineNonEnumerableProperty( tuple, 'ind2key', ind2key ); - defineNonEnumerableProperty( tuple, 'key2ind', key2ind ); - defineNonEnumerableProperty( tuple, 'keys', keys ); - defineNonEnumerableProperty( tuple, 'lastFieldOf', lastFieldOf ); - defineNonEnumerableProperty( tuple, 'map', map ); - defineNonEnumerableProperty( tuple, 'reduce', reduce ); - defineNonEnumerableProperty( tuple, 'reduceRight', reduceRight ); - defineNonEnumerableProperty( tuple, 'reverse', reverse ); - defineNonEnumerableProperty( tuple, 'slice', slice ); - defineNonEnumerableProperty( tuple, 'some', some ); - defineNonEnumerableProperty( tuple, 'sort', sort ); - defineNonEnumerableProperty( tuple, 'subtuple', subtuple ); - defineNonEnumerableProperty( tuple, 'toJSON', toJSON ); - defineNonEnumerableProperty( tuple, 'toString', toString ); + setNonEnumerableProperty( tuple, 'entries', entries ); + setNonEnumerableProperty( tuple, 'every', every ); + setNonEnumerableProperty( tuple, 'fieldOf', fieldOf ); + setNonEnumerableProperty( tuple, 'filter', filter ); + setNonEnumerableProperty( tuple, 'find', find ); + setNonEnumerableProperty( tuple, 'findIndex', findIndex ); + setNonEnumerableProperty( tuple, 'findField', findField ); + setNonEnumerableProperty( tuple, 'forEach', forEach ); + setNonEnumerableProperty( tuple, 'ind2key', ind2key ); + setNonEnumerableProperty( tuple, 'key2ind', key2ind ); + setNonEnumerableProperty( tuple, 'keys', keys ); + setNonEnumerableProperty( tuple, 'lastFieldOf', lastFieldOf ); + setNonEnumerableProperty( tuple, 'map', map ); + setNonEnumerableProperty( tuple, 'reduce', reduce ); + setNonEnumerableProperty( tuple, 'reduceRight', reduceRight ); + setNonEnumerableProperty( tuple, 'reverse', reverse ); + setNonEnumerableProperty( tuple, 'slice', slice ); + setNonEnumerableProperty( tuple, 'some', some ); + setNonEnumerableProperty( tuple, 'sort', sort ); + setNonEnumerableProperty( tuple, 'subtuple', subtuple ); + setNonEnumerableProperty( tuple, 'toJSON', toJSON ); + setNonEnumerableProperty( tuple, 'toString', toString ); return tuple; From 217a5fa2d0d24b6e1af929fed2f28484e835b77d Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 12:55:05 -0700 Subject: [PATCH 0538/1062] Make accessors non-enumerable --- ...efine_nonenumerable_read_write_accessor.js | 62 +++++++++++++++++++ .../utils/named-typed-tuple/lib/main.js | 4 +- 2 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_read_write_accessor.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_read_write_accessor.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_read_write_accessor.js new file mode 100644 index 000000000000..fccbde567921 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_read_write_accessor.js @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var defineProperty = require( '@stdlib/utils/define-property' ); + + +// MAIN // + +/** +* Defines a non-enumerable read-write accessor. +* +* @private +* @param {Object} obj - object on which to define the property +* @param {(string|symbol)} prop - property name +* @param {Function} get - getter +* @param {Function} set - setter +* +* @example +* var obj = {}; +* +* function get() { +* return 'boop'; +* } +* +* function set( v ) { +* obj.beep = v; +* } +* +* defineNonEnumerableReadWriteAccessor( obj, 'beep', get, set ); +*/ +function defineNonEnumerableReadWriteAccessor( obj, prop, get, set ) { // eslint-disable-line id-length + defineProperty( obj, prop, { + 'configurable': false, + 'enumerable': false, + 'get': get, + 'set': set + }); +} + + +// EXPORTS // + +module.exports = defineNonEnumerableReadWriteAccessor; diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 53b70d816656..726dbf71b6a2 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -35,7 +35,6 @@ var propertiesIn = require( '@stdlib/utils/properties-in' ); var typedarray = require( '@stdlib/array/typed' ); var Int8Array = require( '@stdlib/array/int8' ); var getDtype = require( '@stdlib/array/dtype' ); -var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var defineProperty = require( '@stdlib/utils/define-property' ); var floor = require( '@stdlib/math/base/special/floor' ); var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); @@ -47,6 +46,7 @@ var fromIterator = require( './from_iterator.js' ); var fromIteratorMap = require( './from_iterator_map.js' ); var setNonEnumerableProperty = require( './define_nonenumerable_property.js' ); var setNonEnumerableReadOnlyAccessor = require( './define_nonenumerable_read_only_accessor.js' ); // eslint-disable-line id-length +var setNonEnumerableReadWriteAccessor = require( './define_nonenumerable_read_write_accessor.js' ); // eslint-disable-line id-length // VARIABLES // @@ -175,7 +175,7 @@ function factory( names, options ) { // eslint-disable-line max-lines-per-functi indices = []; // indirect index look-up table for ( i = 0; i < nfields; i++ ) { indices.push( i ); - setReadWriteAccessor( tuple, fields[ i ], getter( i ), setter( i ) ); + setNonEnumerableReadWriteAccessor( tuple, fields[ i ], getter( i ), setter( i ) ); } setNonEnumerableProperty( tuple, 'name', opts.name ); setNonEnumerableReadOnlyAccessor( tuple, 'fields', getFields ); From 05b196481ffe224ad1deb70a76ca2a6fb8063c8d Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 12:58:44 -0700 Subject: [PATCH 0539/1062] Add note regarding field enumerability --- lib/node_modules/@stdlib/utils/named-typed-tuple/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index c2276420c4e5..3f9538c6b279 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -2195,6 +2195,8 @@ var bool = it.next().done; tuple = Object.freeze( tuple ); ``` +- Tuple fields are **non-enumerable**. To return the list of tuple fields, use [`tuple.fields`](#prop-fields). + From efad22ab04c4bf5f7264810932734ce18e8fc09c Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 13:51:59 -0700 Subject: [PATCH 0540/1062] Add notes regarding enumerability and configurability --- .../@stdlib/utils/define-read-only-accessor/README.md | 10 ++++++++++ .../utils/define-read-only-accessor/docs/repl.txt | 2 ++ .../@stdlib/utils/define-read-only-property/README.md | 10 ++++++++++ .../utils/define-read-only-property/docs/repl.txt | 2 ++ 4 files changed, 24 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/define-read-only-accessor/README.md b/lib/node_modules/@stdlib/utils/define-read-only-accessor/README.md index fddf15b0cac9..f067cd5a0b05 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-accessor/README.md +++ b/lib/node_modules/@stdlib/utils/define-read-only-accessor/README.md @@ -53,6 +53,16 @@ obj.foo = 'boop'; +
+ +## Notes + +- Read-only accessors are **enumerable** and **non-configurable**. + +
+ + +
## Examples diff --git a/lib/node_modules/@stdlib/utils/define-read-only-accessor/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-read-only-accessor/docs/repl.txt index 66b1f0bdb3b5..91e9e77a9648 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-accessor/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/define-read-only-accessor/docs/repl.txt @@ -2,6 +2,8 @@ {{alias}}( obj, prop, getter ) Defines a read-only accessor. + Read-only accessors are enumerable and non-configurable. + Parameters ---------- obj: Object diff --git a/lib/node_modules/@stdlib/utils/define-read-only-property/README.md b/lib/node_modules/@stdlib/utils/define-read-only-property/README.md index 0b89a505444a..32a45459f9b2 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-property/README.md +++ b/lib/node_modules/@stdlib/utils/define-read-only-property/README.md @@ -49,6 +49,16 @@ obj.foo = 'boop'; +
+ +## Notes + +- Read-only properties are **enumerable** and **non-configurable**. + +
+ + +
## Examples diff --git a/lib/node_modules/@stdlib/utils/define-read-only-property/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-read-only-property/docs/repl.txt index d533282b5948..7d51d2956ae7 100644 --- a/lib/node_modules/@stdlib/utils/define-read-only-property/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/define-read-only-property/docs/repl.txt @@ -2,6 +2,8 @@ {{alias}}( obj, prop, value ) Defines a read-only property. + Read-only properties are enumerable and non-configurable. + Parameters ---------- obj: Object From 7d50813c058a9a2cda0e9c1cc1352f6196e97579 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 13:52:52 -0700 Subject: [PATCH 0541/1062] Add notes regarding enumerability and configurability --- .../@stdlib/utils/define-read-write-accessor/README.md | 10 ++++++++++ .../utils/define-read-write-accessor/docs/repl.txt | 2 ++ 2 files changed, 12 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/define-read-write-accessor/README.md b/lib/node_modules/@stdlib/utils/define-read-write-accessor/README.md index 4ae4d23f61d4..8562681c93a5 100644 --- a/lib/node_modules/@stdlib/utils/define-read-write-accessor/README.md +++ b/lib/node_modules/@stdlib/utils/define-read-write-accessor/README.md @@ -61,6 +61,16 @@ v = obj.foo; +
+ +## Notes + +- Read-write accessors are **enumerable** and **non-configurable**. + +
+ + +
## Examples diff --git a/lib/node_modules/@stdlib/utils/define-read-write-accessor/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-read-write-accessor/docs/repl.txt index d7aba18f973e..3bd84e751f68 100644 --- a/lib/node_modules/@stdlib/utils/define-read-write-accessor/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/define-read-write-accessor/docs/repl.txt @@ -2,6 +2,8 @@ {{alias}}( obj, prop, getter, setter ) Defines a property having read-write accessors. + Read-write accessors are enumerable and non-configurable. + Parameters ---------- obj: Object From f0ae7473f1d88d7347e3e30ca215c4939e28e742 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 13:53:31 -0700 Subject: [PATCH 0542/1062] Add notes regarding enumerability and configurability --- .../@stdlib/utils/define-write-only-accessor/README.md | 10 ++++++++++ .../utils/define-write-only-accessor/docs/repl.txt | 2 ++ 2 files changed, 12 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/define-write-only-accessor/README.md b/lib/node_modules/@stdlib/utils/define-write-only-accessor/README.md index 4bac0e7deeda..12c32095c368 100644 --- a/lib/node_modules/@stdlib/utils/define-write-only-accessor/README.md +++ b/lib/node_modules/@stdlib/utils/define-write-only-accessor/README.md @@ -56,6 +56,16 @@ var bool = ( val === 'boop' ); +
+ +## Notes + +- Write-only accessors are **enumerable** and **non-configurable**. + +
+ + +
## Examples diff --git a/lib/node_modules/@stdlib/utils/define-write-only-accessor/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-write-only-accessor/docs/repl.txt index ad55424eaf2e..2efd27c1ba9b 100644 --- a/lib/node_modules/@stdlib/utils/define-write-only-accessor/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/define-write-only-accessor/docs/repl.txt @@ -2,6 +2,8 @@ {{alias}}( obj, prop, setter ) Defines a write-only accessor. + Write-only accessors are enumerable and non-configurable. + Parameters ---------- obj: Object From a08743cb59f3fda95094920237873dff16fae74c Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 14:07:46 -0700 Subject: [PATCH 0543/1062] Add utility to define a non-enumerable read-only property --- .../README.md | 98 +++++++++++++++++++ .../benchmark/benchmark.js | 50 ++++++++++ .../docs/repl.txt | 28 ++++++ .../examples/index.js | 37 +++++++ .../lib/index.js | 47 +++++++++ .../lib/main.js | 58 +++++++++++ .../package.json | 71 ++++++++++++++ .../test/test.js | 81 +++++++++++++++ 8 files changed, 470 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/README.md create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/package.json create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/test/test.js diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/README.md b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/README.md new file mode 100644 index 000000000000..d8e4ab2fcbee --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/README.md @@ -0,0 +1,98 @@ + + +# Non-Enumerable Read-Only + +> [Define][@stdlib/utils/define-property] a non-enumerable **read-only** property. + +
+ +## Usage + +```javascript +var setNonEnumerableReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +``` + +#### setNonEnumerableReadOnly( obj, prop, value ) + +[Defines][@stdlib/utils/define-property] a non-enumerable **read-only** property. + + + +```javascript +var obj = {}; + +setNonEnumerableReadOnly( obj, 'foo', 'bar' ); + +obj.foo = 'boop'; +// throws +``` + +
+ + + +
+ +## Notes + +- Non-enumerable read-only properties are **non-configurable**. + +
+ + + +
+ +## Examples + + + +```javascript +var setNonEnumerableReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); + +function Foo( name ) { + if ( !(this instanceof Foo) ) { + return new Foo( name ); + } + setNonEnumerableReadOnly( this, 'name', name ); + return this; +} + +var foo = new Foo( 'beep' ); + +try { + foo.name = 'boop'; +} catch ( err ) { + console.error( err.message ); +} +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/benchmark/benchmark.js new file mode 100644 index 000000000000..45a480c9f6d8 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/benchmark/benchmark.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isString = require( '@stdlib/assert/is-string' ).isPrimitive; +var fromCodePoint = require( '@stdlib/string/from-code-point' ); +var pkg = require( './../package.json' ).name; +var setNonEnumerableReadOnly = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var obj; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj = {}; + setNonEnumerableReadOnly( obj, 'foo', fromCodePoint( 97 + (i%26) ) ); + if ( !isString( obj.foo ) ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( !isString( obj.foo ) ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/docs/repl.txt new file mode 100644 index 000000000000..7cb624cfb7c6 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/docs/repl.txt @@ -0,0 +1,28 @@ + +{{alias}}( obj, prop, value ) + Defines a non-enumerable read-only property. + + Non-enumerable read-only properties are non-configurable. + + Parameters + ---------- + obj: Object + Object on which to define the property. + + prop: string|symbol + Property name. + + value: any + Value to set. + + Examples + -------- + > var obj = {}; + > {{alias}}( obj, 'foo', 'bar' ); + > obj.foo = 'boop'; + > obj + { 'foo': 'bar' } + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/examples/index.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/examples/index.js new file mode 100644 index 000000000000..9eae62d2e922 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/examples/index.js @@ -0,0 +1,37 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var setNonEnumerableReadOnly = require( './../lib' ); + +function Foo( name ) { + if ( !(this instanceof Foo) ) { + return new Foo( name ); + } + setNonEnumerableReadOnly( this, 'name', name ); + return this; +} + +var foo = new Foo( 'beep' ); + +try { + foo.name = 'boop'; +} catch ( err ) { + console.error( err.message ); +} diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/lib/index.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/lib/index.js new file mode 100644 index 000000000000..01073922ac62 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/lib/index.js @@ -0,0 +1,47 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Define a non-enumerable read-only property. +* +* @module @stdlib/utils/define-nonenumerable-read-only-property +* +* @example +* var setNonEnumerableReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +* +* var obj = {}; +* +* setNonEnumerableReadOnly( obj, 'foo', 'bar' ); +* +* try { +* obj.foo = 'boop'; +* } catch ( err ) { +* console.error( err.message ); +* } +*/ + +// MODULES // + +var setNonEnumerableReadOnly = require( './main.js' ); + + +// EXPORTS // + +module.exports = setNonEnumerableReadOnly; diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/lib/main.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/lib/main.js new file mode 100644 index 000000000000..abbff5dd7c0e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/lib/main.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var defineProperty = require( '@stdlib/utils/define-property' ); + + +// MAIN // + +/** +* Defines a non-enumerable read-only property. +* +* @param {Object} obj - object on which to define the property +* @param {(string|symbol)} prop - property name +* @param {*} value - value to set +* +* @example +* var obj = {}; +* +* setNonEnumerableReadOnly( obj, 'foo', 'bar' ); +* +* try { +* obj.foo = 'boop'; +* } catch ( err ) { +* console.error( err.message ); +* } +*/ +function setNonEnumerableReadOnly( obj, prop, value ) { + defineProperty( obj, prop, { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': value + }); +} + + +// EXPORTS // + +module.exports = setNonEnumerableReadOnly; diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/package.json b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/package.json new file mode 100644 index 000000000000..dc56b968a26a --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/utils/define-nonenumerable-read-only-property", + "version": "0.0.0", + "description": "Define a non-enumerable read-only property.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "property", + "define", + "set", + "value", + "prop", + "read-only", + "writable", + "configurable", + "non-enumerable", + "hidden", + "private" + ] +} diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/test/test.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/test/test.js new file mode 100644 index 000000000000..39b3daf7ff79 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-property/test/test.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var getKeys = require( '@stdlib/utils/keys' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var setNonEnumerableReadOnly = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof setNonEnumerableReadOnly, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function sets a property on a provided object', function test( t ) { + var obj = {}; + setNonEnumerableReadOnly( obj, 'foo', 'bar' ); + t.equal( obj.foo, 'bar', 'returns expected value' ); + t.end(); +}); + +tape( 'the read-only property is not writable', function test( t ) { + var obj = {}; + setNonEnumerableReadOnly( obj, 'foo', 'bar' ); + t.throws( foo, Error, 'property cannot be set' ); + t.end(); + + function foo() { + obj.foo = 'bip'; + } +}); + +tape( 'the read-only property is not configurable', function test( t ) { + var obj = {}; + setNonEnumerableReadOnly( obj, 'foo', 'bar' ); + t.throws( foo, Error, 'property cannot be deleted' ); + t.throws( bar, Error, 'property cannot be reconfigured' ); + t.end(); + + function foo() { + delete obj.foo; + } + + function bar() { + defineProperty( obj, 'foo', { + 'value': 'boop', + 'writable': true, + 'configurable': false, + 'enumerable': true + }); + } +}); + +tape( 'the read-only property is not enumerable', function test( t ) { + var obj = {}; + setNonEnumerableReadOnly( obj, 'foo', 'bar' ); + t.equal( getKeys( obj ).length, 0, 'property is not enumerable' ); + t.end(); +}); From b0c1070a8d82bc2a910a71fafcb788f76e8aafd6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 14:09:07 -0700 Subject: [PATCH 0544/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index a3e76bf94895..c82e3aeb6a6d 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -279,6 +279,15 @@ setReadOnly( utils, 'deepPluck', require( '@stdlib/utils/deep-pluck' ) ); */ setReadOnly( utils, 'deepSet', require( '@stdlib/utils/deep-set' ) ); +/** +* @name setNonEnumerableReadOnly +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/define-nonenumerable-read-only-property} +*/ +setReadOnly( utils, 'setNonEnumerableReadOnly', require( '@stdlib/utils/define-nonenumerable-read-only-property' ) ); + /** * @name defineProperties * @memberof utils From ac689a1f7d34a4c8bf83fdae73f2d4c678d5356a Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 14:10:45 -0700 Subject: [PATCH 0545/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/s.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/s.js b/lib/node_modules/@stdlib/namespace/lib/namespace/s.js index 1e31779b14d6..d6a173a79caf 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/s.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/s.js @@ -166,6 +166,20 @@ ns.push({ ] }); +ns.push({ + 'alias': 'setNonEnumerableReadOnly', + 'path': '@stdlib/utils/define-nonenumerable-read-only-property', + 'value': require( '@stdlib/utils/define-nonenumerable-read-only-property' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/define-nonenumerable-property', + '@stdlib/utils/define-nonenumerable-read-only-accessor', + '@stdlib/utils/define-nonenumerable-read-write-accessor', + '@stdlib/utils/define-nonenumerable-write-only-accessor', + '@stdlib/utils/define-read-only-property' + ] +}); + ns.push({ 'alias': 'setReadOnly', 'path': '@stdlib/utils/define-read-only-property', From 1bb034ee03b434d35fd9fa8b684e409e73b43698 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 14:16:51 -0700 Subject: [PATCH 0546/1062] Add utility to define a non-enumerable read-only accessor --- .../README.md | 110 ++++++++++++++++++ .../benchmark/benchmark.js | 59 ++++++++++ .../docs/repl.txt | 28 +++++ .../examples/index.js | 41 +++++++ .../lib/index.js | 51 ++++++++ .../lib/main.js | 61 ++++++++++ .../package.json | 72 ++++++++++++ .../test/test.js | 96 +++++++++++++++ 8 files changed, 518 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/README.md create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/package.json create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/test/test.js diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/README.md b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/README.md new file mode 100644 index 000000000000..2b78fc400671 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/README.md @@ -0,0 +1,110 @@ + + +# Non-Enumerable Read-Only Accessor + +> [Define][@stdlib/utils/define-property] a non-enumerable **read-only** accessor. + +
+ +## Usage + + + +```javascript +var setNonEnumerableReadOnlyAccessor = require( '@stdlib/utils/define-nonenumerable-read-only-accessor' ); +``` + +#### setNonEnumerableReadOnlyAccessor( obj, prop, getter ) + +[Defines][@stdlib/utils/define-property] a non-enumerable **read-only** accessor. + + + +```javascript +function getter() { + return 'bar'; +} + +var obj = {}; + +setNonEnumerableReadOnlyAccessor( obj, 'foo', getter ); + +obj.foo = 'boop'; +// throws +``` + +
+ + + +
+ +## Notes + +- Non-enumerable read-only accessors are **non-configurable**. + +
+ + + +
+ +## Examples + + + + + +```javascript +var setNonEnumerableReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); + +function Foo( name ) { + if ( !(this instanceof Foo) ) { + return new Foo( name ); + } + setNonEnumerableReadOnlyAccessor( this, 'name', getName ); + return this; + + function getName() { + return name; + } +} + +var foo = new Foo( 'beep' ); + +try { + foo.name = 'boop'; +} catch ( err ) { + console.error( err.message ); +} +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/benchmark/benchmark.js new file mode 100644 index 000000000000..3a7dc2e3f6fc --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/benchmark/benchmark.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isString = require( '@stdlib/assert/is-string' ).isPrimitive; +var fromCodePoint = require( '@stdlib/string/from-code-point' ); +var pkg = require( './../package.json' ).name; +var setNonEnumerableReadOnlyAccessor = require( './../lib' ); // eslint-disable-line id-length + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var obj; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj = {}; + setNonEnumerableReadOnlyAccessor( obj, 'foo', getter( i ) ); + if ( !isString( obj.foo ) ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( !isString( obj.foo ) ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function getter( i ) { + var v = fromCodePoint( 97 + (i%26) ); + return get; + + function get() { + return v; + } + } +}); diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/docs/repl.txt new file mode 100644 index 000000000000..92d3ea03dd18 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/docs/repl.txt @@ -0,0 +1,28 @@ + +{{alias}}( obj, prop, getter ) + Defines a non-enumerable read-only accessor. + + Non-enumerable read-only accessors are non-configurable. + + Parameters + ---------- + obj: Object + Object on which to define the property. + + prop: string|symbol + Property name. + + getter: Function + Get accessor. + + Examples + -------- + > var obj = {}; + > function getter() { return 'bar'; }; + > {{alias}}( obj, 'foo', getter ); + > obj.foo + 'bar' + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/examples/index.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/examples/index.js new file mode 100644 index 000000000000..2c7cfe0dcbf1 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/examples/index.js @@ -0,0 +1,41 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var setNonEnumerableReadOnlyAccessor = require( './../lib' ); // eslint-disable-line id-length + +function Foo( name ) { + if ( !(this instanceof Foo) ) { + return new Foo( name ); + } + setNonEnumerableReadOnlyAccessor( this, 'name', getName ); + return this; + + function getName() { + return name; + } +} + +var foo = new Foo( 'beep' ); + +try { + foo.name = 'boop'; +} catch ( err ) { + console.error( err.message ); +} diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/lib/index.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/lib/index.js new file mode 100644 index 000000000000..c33b3bbf350c --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/lib/index.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Define a non-enumerable read-only accessor. +* +* @module @stdlib/utils/define-nonenumerable-read-only-accessor +* +* @example +* var setNonEnumerableReadOnlyAccessor = require( '@stdlib/utils/define-nonenumerable-read-only-accessor' ); +* +* function getter() { +* return 'bar'; +* } +* +* var obj = {}; +* +* setNonEnumerableReadOnlyAccessor( obj, 'foo', getter ); +* +* try { +* obj.foo = 'boop'; +* } catch ( err ) { +* console.error( err.message ); +* } +*/ + +// MODULES // + +var setNonEnumerableReadOnlyAccessor = require( './main.js' ); // eslint-disable-line id-length + + +// EXPORTS // + +module.exports = setNonEnumerableReadOnlyAccessor; diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/lib/main.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/lib/main.js new file mode 100644 index 000000000000..3e57ffd2cbec --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/lib/main.js @@ -0,0 +1,61 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var defineProperty = require( '@stdlib/utils/define-property' ); + + +// MAIN // + +/** +* Defines a non-enumerable read-only accessor. +* +* @param {Object} obj - object on which to define the property +* @param {(string|symbol)} prop - property name +* @param {Function} getter - accessor +* +* @example +* function getter() { +* return 'bar'; +* } +* +* var obj = {}; +* +* setNonEnumerableReadOnlyAccessor( obj, 'foo', getter ); +* +* try { +* obj.foo = 'boop'; +* } catch ( err ) { +* console.error( err.message ); +* } +*/ +function setNonEnumerableReadOnlyAccessor( obj, prop, getter ) { // eslint-disable-line id-length + defineProperty( obj, prop, { + 'configurable': false, + 'enumerable': false, + 'get': getter + }); +} + + +// EXPORTS // + +module.exports = setNonEnumerableReadOnlyAccessor; diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/package.json b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/package.json new file mode 100644 index 000000000000..b894ac45d4e0 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/utils/define-nonenumerable-read-only-accessor", + "version": "0.0.0", + "description": "Define a non-enumerable read-only accessor.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "property", + "define", + "prop", + "read-only", + "writable", + "configurable", + "accessor", + "get", + "getter", + "non-enumerable", + "hidden", + "private" + ] +} diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/test/test.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/test/test.js new file mode 100644 index 000000000000..c2a3f42bb083 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-only-accessor/test/test.js @@ -0,0 +1,96 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var getKeys = require( '@stdlib/utils/keys' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var setNonEnumerableeadOnlyAccessor = require( './../lib' ); // eslint-disable-line id-length + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof setNonEnumerableeadOnlyAccessor, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function sets a property on a provided object', function test( t ) { + var obj = {}; + setNonEnumerableeadOnlyAccessor( obj, 'foo', getter ); + t.equal( obj.foo, 'bar', 'returns expected value' ); + t.end(); + + function getter() { + return 'bar'; + } +}); + +tape( 'the read-only property is not writable', function test( t ) { + var obj = {}; + setNonEnumerableeadOnlyAccessor( obj, 'foo', getter ); + t.throws( foo, Error, 'property cannot be set' ); + t.end(); + + function getter() { + return 'bar'; + } + + function foo() { + obj.foo = 'bip'; + } +}); + +tape( 'the read-only property is not configurable', function test( t ) { + var obj = {}; + setNonEnumerableeadOnlyAccessor( obj, 'foo', getter ); + t.throws( foo, Error, 'property cannot be deleted' ); + t.throws( bar, Error, 'property cannot be reconfigured' ); + t.end(); + + function getter() { + return 'bar'; + } + + function foo() { + delete obj.foo; + } + function bar() { + defineProperty( obj, 'foo', { + 'value': 'boop', + 'writable': true, + 'configurable': false, + 'enumerable': true + }); + } +}); + +tape( 'the read-only property is not enumerable', function test( t ) { + var obj = {}; + setNonEnumerableeadOnlyAccessor( obj, 'foo', getter ); + t.equal( getKeys( obj ).length, 0, 'property is not enumerable' ); + t.end(); + + function getter() { + return 'bar'; + } +}); From 6231845863237a127ae0b5940f290613023b6750 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 14:18:10 -0700 Subject: [PATCH 0547/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index c82e3aeb6a6d..38bf0fd12de8 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -279,6 +279,15 @@ setReadOnly( utils, 'deepPluck', require( '@stdlib/utils/deep-pluck' ) ); */ setReadOnly( utils, 'deepSet', require( '@stdlib/utils/deep-set' ) ); +/** +* @name setNonEnumerableReadOnlyAccessor +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/define-nonenumerable-read-only-accessor} +*/ +setReadOnly( utils, 'setNonEnumerableReadOnlyAccessor', require( '@stdlib/utils/define-nonenumerable-read-only-accessor' ) ); + /** * @name setNonEnumerableReadOnly * @memberof utils From 4ab69d153d26c095b4a9a5f1e4564678b2afa69c Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 14:18:29 -0700 Subject: [PATCH 0548/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/s.js | 14 ++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 2 ++ lib/node_modules/@stdlib/repl/help/lib/db.js | 10 ++++++---- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/s.js b/lib/node_modules/@stdlib/namespace/lib/namespace/s.js index d6a173a79caf..d9429e811423 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/s.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/s.js @@ -180,6 +180,20 @@ ns.push({ ] }); +ns.push({ + 'alias': 'setNonEnumerableReadOnlyAccessor', + 'path': '@stdlib/utils/define-nonenumerable-read-only-accessor', + 'value': require( '@stdlib/utils/define-nonenumerable-read-only-accessor' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/define-nonenumerable-property', + '@stdlib/utils/define-nonenumerable-read-only-property', + '@stdlib/utils/define-nonenumerable-read-write-accessor', + '@stdlib/utils/define-nonenumerable-write-only-accessor', + '@stdlib/utils/define-read-only-accessor' + ] +}); + ns.push({ 'alias': 'setReadOnly', 'path': '@stdlib/utils/define-read-only-property', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 0f930625b538..c8679e49c7cb 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1558,6 +1558,8 @@ var db = { "SECONDS_IN_WEEK": "wks = 3.14;\nsecs = wks * SECONDS_IN_WEEK\n", "secondsInMonth": "num = secondsInMonth()\nnum = secondsInMonth( 2 )\nnum = secondsInMonth( 2, 2016 )\nnum = secondsInMonth( 2, 2017 )\n\n// Other ways to supply month:\nnum = secondsInMonth( 'feb', 2016 )\nnum = secondsInMonth( 'february', 2016 )\n", "secondsInYear": "num = secondsInYear()\nnum = secondsInYear( 2016 )\nnum = secondsInYear( 2017 )\n", + "setNonEnumerableReadOnly": "obj = {};\nsetNonEnumerableReadOnly( obj, 'foo', 'bar' );\nobj.foo = 'boop';\nobj\n", + "setNonEnumerableReadOnlyAccessor": "obj = {};\nfunction getter() { return 'bar'; };\nsetNonEnumerableReadOnlyAccessor( obj, 'foo', getter );\nobj.foo\n", "setReadOnly": "obj = {};\nsetReadOnly( obj, 'foo', 'bar' );\nobj.foo = 'boop';\nobj\n", "setReadOnlyAccessor": "obj = {};\nfunction getter() { return 'bar'; };\nsetReadOnlyAccessor( obj, 'foo', getter );\nobj.foo\n", "setReadWriteAccessor": "obj = {};\nname = 'bar';\nfunction getter() { return name + ' foo'; };\nfunction setter( v ) { name = v; };\nsetReadWriteAccessor( obj, 'foo', getter, setter );\nobj.foo\nobj.foo = 'beep';\nobj.foo\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index a82b4c710542..ce7ba8ca1586 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1559,10 +1559,12 @@ var db = { "SECONDS_IN_WEEK": "\nSECONDS_IN_WEEK\n Number of seconds in a week.\n\n The value is a generalization and does **not** take into account\n inaccuracies due to daylight savings conventions, crossing timezones, or\n other complications with time and dates.\n\n Examples\n --------\n > var wks = 3.14;\n > var secs = wks * SECONDS_IN_WEEK\n 1899072\n\n", "secondsInMonth": "\nsecondsInMonth( [month[, year]] )\n Returns the number of seconds in a month.\n\n By default, the function returns the number of seconds in the current month\n of the current year (according to local time). To determine the number of\n seconds for a particular month and year, provide `month` and `year`\n arguments.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n The function's return value is a generalization and does **not** take into\n account inaccuracies due to daylight savings conventions, crossing\n timezones, or other complications with time and dates.\n\n Parameters\n ----------\n month: string|Date|integer (optional)\n Month.\n\n year: integer (optional)\n Year.\n\n Returns\n -------\n out: integer\n Seconds in a month.\n\n Examples\n --------\n > var num = secondsInMonth()\n \n > num = secondsInMonth( 2 )\n \n > num = secondsInMonth( 2, 2016 )\n 2505600\n > num = secondsInMonth( 2, 2017 )\n 2419200\n\n // Other ways to supply month:\n > num = secondsInMonth( 'feb', 2016 )\n 2505600\n > num = secondsInMonth( 'february', 2016 )\n 2505600\n\n See Also\n --------\n secondsInYear\n", "secondsInYear": "\nsecondsInYear( [value] )\n Returns the number of seconds in a year according to the Gregorian calendar.\n\n By default, the function returns the number of seconds in the current year\n (according to local time). To determine the number of seconds for a\n particular year, provide either a year or a `Date` object.\n\n The function's return value is a generalization and does **not** take into\n account inaccuracies due to daylight savings conventions, crossing\n timezones, or other complications with time and dates.\n\n Parameters\n ----------\n value: integer|Date (optional)\n Year or `Date` object.\n\n Returns\n -------\n out: integer\n Number of seconds in a year.\n\n Examples\n --------\n > var num = secondsInYear()\n \n > num = secondsInYear( 2016 )\n 31622400\n > num = secondsInYear( 2017 )\n 31536000\n\n See Also\n --------\n secondsInMonth\n", - "setReadOnly": "\nsetReadOnly( obj, prop, value )\n Defines a read-only property.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n setReadOnlyAccessor, setReadWriteAccessor, setWriteOnlyAccessor\n", - "setReadOnlyAccessor": "\nsetReadOnlyAccessor( obj, prop, getter )\n Defines a read-only accessor.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n getter: Function\n Get accessor.\n\n Examples\n --------\n > var obj = {};\n > function getter() { return 'bar'; };\n > setReadOnlyAccessor( obj, 'foo', getter );\n > obj.foo\n 'bar'\n\n See Also\n --------\n setReadOnly, setReadWriteAccessor, setWriteOnlyAccessor\n", - "setReadWriteAccessor": "\nsetReadWriteAccessor( obj, prop, getter, setter )\n Defines a property having read-write accessors.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n getter: Function\n Get accessor.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var name = 'bar';\n > function getter() { return name + ' foo'; };\n > function setter( v ) { name = v; };\n > setReadWriteAccessor( obj, 'foo', getter, setter );\n > obj.foo\n 'bar foo'\n > obj.foo = 'beep';\n > obj.foo\n 'beep foo'\n\n See Also\n --------\n setReadOnly, setReadOnlyAccessor, setWriteOnlyAccessor\n", - "setWriteOnlyAccessor": "\nsetWriteOnlyAccessor( obj, prop, setter )\n Defines a write-only accessor.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string\n Property name.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var val = '';\n > function setter( v ) { val = v; };\n > setWriteOnlyAccessor( obj, 'foo', setter );\n > obj.foo = 'bar';\n > val\n 'bar'\n\n See Also\n --------\n setReadOnly, setReadOnlyAccessor, setReadWriteAccessor\n", + "setNonEnumerableReadOnly": "\nsetNonEnumerableReadOnly( obj, prop, value )\n Defines a non-enumerable read-only property.\n\n Non-enumerable read-only properties are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setNonEnumerableReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n setNonEnumerableReadOnlyAccessor, setReadOnly\n", + "setNonEnumerableReadOnlyAccessor": "\nsetNonEnumerableReadOnlyAccessor( obj, prop, getter )\n Defines a non-enumerable read-only accessor.\n\n Non-enumerable read-only accessors are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n Examples\n --------\n > var obj = {};\n > function getter() { return 'bar'; };\n > setNonEnumerableReadOnlyAccessor( obj, 'foo', getter );\n > obj.foo\n 'bar'\n\n See Also\n --------\n setNonEnumerableReadOnly, setReadOnlyAccessor\n", + "setReadOnly": "\nsetReadOnly( obj, prop, value )\n Defines a read-only property.\n\n Read-only properties are enumerable and non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n setReadOnlyAccessor, setReadWriteAccessor, setWriteOnlyAccessor\n", + "setReadOnlyAccessor": "\nsetReadOnlyAccessor( obj, prop, getter )\n Defines a read-only accessor.\n\n Read-only accessors are enumerable and non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n Examples\n --------\n > var obj = {};\n > function getter() { return 'bar'; };\n > setReadOnlyAccessor( obj, 'foo', getter );\n > obj.foo\n 'bar'\n\n See Also\n --------\n setReadOnly, setReadWriteAccessor, setWriteOnlyAccessor\n", + "setReadWriteAccessor": "\nsetReadWriteAccessor( obj, prop, getter, setter )\n Defines a property having read-write accessors.\n\n Read-write accessors are enumerable and non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var name = 'bar';\n > function getter() { return name + ' foo'; };\n > function setter( v ) { name = v; };\n > setReadWriteAccessor( obj, 'foo', getter, setter );\n > obj.foo\n 'bar foo'\n > obj.foo = 'beep';\n > obj.foo\n 'beep foo'\n\n See Also\n --------\n setReadOnly, setReadOnlyAccessor, setWriteOnlyAccessor\n", + "setWriteOnlyAccessor": "\nsetWriteOnlyAccessor( obj, prop, setter )\n Defines a write-only accessor.\n\n Write-only accessors are enumerable and non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var val = '';\n > function setter( v ) { val = v; };\n > setWriteOnlyAccessor( obj, 'foo', setter );\n > obj.foo = 'bar';\n > val\n 'bar'\n\n See Also\n --------\n setReadOnly, setReadOnlyAccessor, setReadWriteAccessor\n", "SharedArrayBuffer": "\nSharedArrayBuffer( size )\n Returns a shared array buffer having a specified number of bytes.\n\n A shared array buffer behaves similarly to a non-shared array buffer, except\n that a shared array buffer allows creating views of memory shared between\n threads.\n\n Buffer contents are initialized to 0.\n\n If an environment does not support shared array buffers, the function throws\n an error.\n\n Parameters\n ----------\n size: integer\n Number of bytes.\n\n Returns\n -------\n out: SharedArrayBuffer\n A shared array buffer.\n\n Examples\n --------\n // Assuming an environment supports SharedArrayBuffers...\n > var buf = new SharedArrayBuffer( 5 )\n \n\n\nSharedArrayBuffer.length\n Number of input arguments the constructor accepts.\n\n Examples\n --------\n > SharedArrayBuffer.length\n 1\n\n\nSharedArrayBuffer.prototype.byteLength\n Read-only property which returns the length (in bytes) of the array buffer.\n\n Examples\n --------\n // Assuming an environment supports SharedArrayBuffers...\n > var buf = new SharedArrayBuffer( 5 );\n > buf.byteLength\n 5\n\n\nSharedArrayBuffer.prototype.slice( [start[, end]] )\n Copies the bytes of a shared array buffer to a new shared array buffer.\n\n Parameters\n ----------\n start: integer (optional)\n Index at which to start copying buffer contents (inclusive). If\n negative, the index is relative to the end of the buffer.\n\n end: integer (optional)\n Index at which to stop copying buffer contents (exclusive). If negative,\n the index is relative to the end of the buffer.\n\n Returns\n -------\n out: SharedArrayBuffer\n A new shared array buffer whose contents have been copied from the\n calling shared array buffer.\n\n Examples\n --------\n // Assuming an environment supports SharedArrayBuffers...\n > var b1 = new SharedArrayBuffer( 10 );\n > var b2 = b1.slice( 2, 6 );\n > var bool = ( b1 === b2 )\n false\n > b2.byteLength\n 4\n\n See Also\n --------\n Buffer, ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "shift": "\nshift( collection )\n Removes and returns the first element of a collection.\n\n The function returns an array with two elements: the shortened collection\n and the removed element.\n\n If the input collection is a typed array whose length is greater than `0`,\n the first return value does not equal the input reference.\n\n For purposes of generality, always treat the output collection as distinct\n from the input collection.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n A collection. If the collection is an `Object`, the value should be\n array-like.\n\n Returns\n -------\n out: Array\n Updated collection and the removed item.\n\n Examples\n --------\n // Arrays:\n > var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];\n > var out = shift( arr )\n [ [ 2.0, 3.0, 4.0, 5.0 ], 1.0 ]\n\n // Typed arrays:\n > arr = new Float64Array( [ 1.0, 2.0 ] );\n > out = shift( arr )\n [ [ 2.0 ], 1.0 ]\n\n // Array-like object:\n > arr = { 'length': 2, '0': 1.0, '1': 2.0 };\n > out = shift( arr )\n [ { 'length': 1, '0': 2.0 }, 1.0 ]\n\n See Also\n --------\n pop, push, unshift\n", "shuffle": "\nshuffle( arr[, options] )\n Shuffles elements of an array-like object.\n\n Parameters\n ----------\n arr: ArrayLike\n Array-like object to shuffle.\n\n options: Object (optional)\n Options.\n\n options.copy: string (optional)\n String indicating whether to return a copy (`deep`,`shallow` or `none`).\n Default: `'shallow'`.\n\n Returns\n -------\n out: ArrayLike\n Shuffled array-like object.\n\n Examples\n --------\n > var data = [ 1, 2, 3 ];\n > var out = shuffle( data )\n e.g., [ 3, 1, 2 ]\n > out = shuffle( data, { 'copy': 'none' });\n > var bool = ( data === out )\n true\n\n\nshuffle.factory( [options] )\n Returns a function to shuffle elements of array-like objects.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.seed: integer (optional)\n Integer-valued seed.\n\n options.copy: string (optional)\n String indicating whether to return a copy (`deep`,`shallow` or `none`).\n Default: `'shallow'`.\n\n Returns\n -------\n fcn: Function\n Shuffle function.\n\n Examples\n --------\n > var myshuffle = shuffle.factory();\n\n // Set a seed:\n > myshuffle = shuffle.factory({ 'seed': 239 });\n > var arr = [ 0, 1, 2, 3, 4 ];\n > var out = myshuffle( arr )\n e.g., [ 3, 4, 1, 0, 2 ]\n\n // Use a different copy strategy:\n > myshuffle = shuffle.factory({ 'copy': 'none', 'seed': 867 });\n\n // Created shuffle function mutates input array by default:\n > arr = [ 1, 2, 3, 4, 5, 6 ];\n > out = myshuffle( arr );\n > var bool = ( arr === out )\n true\n // Default option can be overridden:\n > arr = [ 1, 2, 3, 4 ];\n > out = myshuffle( arr, { 'copy': 'shallow' });\n > bool = ( arr === out )\n false\n\n See Also\n --------\n sample\n", From a4d0d86dc3dfa264b9a0affed2f6e6a7ca2f4e70 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 14:28:34 -0700 Subject: [PATCH 0549/1062] Add utility to define a non-enumerable write-only accessor --- .../README.md | 109 ++++++++++++++++++ .../benchmark/benchmark.js | 54 +++++++++ .../docs/repl.txt | 30 +++++ .../examples/index.js | 37 ++++++ .../lib/index.js | 48 ++++++++ .../lib/main.js | 58 ++++++++++ .../package.json | 72 ++++++++++++ .../test/test.js | 109 ++++++++++++++++++ 8 files changed, 517 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/README.md create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/package.json create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/test/test.js diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/README.md b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/README.md new file mode 100644 index 000000000000..cf18d78da031 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/README.md @@ -0,0 +1,109 @@ + + +# Non-Enumerable Write-Only Accessor + +> [Define][@stdlib/utils/define-property] a non-enumerable **write-only** accessor. + +
+ +## Usage + + + +```javascript +var setNonEnumerableWriteOnlyAccessor = require( '@stdlib/utils/define-nonenumerable-write-only-accessor' ); +``` + +#### setNonEnumerableWriteOnlyAccessor( obj, prop, setter ) + +[Defines][@stdlib/utils/define-property] a non-enumerable **write-only** accessor. + + + +```javascript +var obj = {}; +var val = ''; + +function setter( v ) { + val = v; +} + +setNonEnumerableWriteOnlyAccessor( obj, 'foo', setter ); + +obj.foo = 'boop'; + +var bool = ( val === 'boop' ); +// returns true +``` + +
+ + + +
+ +## Notes + +- Non-enumerable write-only accessors are **non-configurable**. + +
+ + + +
+ +## Examples + + + + + +```javascript +var setNonEnumerableWriteOnlyAccessor = require( '@stdlib/utils/define-nonenumerable-write-only-accessor' ); + +function Foo( secret ) { + if ( !(this instanceof Foo) ) { + return new Foo( secret ); + } + setNonEnumerableWriteOnlyAccessor( this, 'secret', setter ); + return this; + + function setter( v ) { + secret = v; + } +} + +var foo = new Foo( 'beep' ); + +foo.secret = 'boop'; +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/benchmark/benchmark.js new file mode 100644 index 000000000000..2ca134f6ef1c --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/benchmark/benchmark.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var setNonEnumerableWriteOnlyAccessor = require( './../lib' ); // eslint-disable-line id-length + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var obj; + var val; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj = {}; + setNonEnumerableWriteOnlyAccessor( obj, 'foo', setter ); + obj.foo = i; + if ( val !== i ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( val !== (i-1) ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function setter( v ) { + val = v; + } +}); diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/docs/repl.txt new file mode 100644 index 000000000000..741e7acd806e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/docs/repl.txt @@ -0,0 +1,30 @@ + +{{alias}}( obj, prop, setter ) + Defines a non-enumerable write-only accessor. + + Non-enumerable write-only accessors are non-configurable. + + Parameters + ---------- + obj: Object + Object on which to define the property. + + prop: string|symbol + Property name. + + setter: Function + Set accessor. + + Examples + -------- + > var obj = {}; + > var val = ''; + > function setter( v ) { val = v; }; + > {{alias}}( obj, 'foo', setter ); + > obj.foo = 'bar'; + > val + 'bar' + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/examples/index.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/examples/index.js new file mode 100644 index 000000000000..d16424037b87 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/examples/index.js @@ -0,0 +1,37 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var setNonEnumerableWriteOnlyAccessor = require( './../lib' ); // eslint-disable-line id-length + +function Foo( secret ) { + if ( !(this instanceof Foo) ) { + return new Foo( secret ); + } + setNonEnumerableWriteOnlyAccessor( this, 'secret', setter ); + return this; + + function setter( v ) { + secret = v; + } +} + +var foo = new Foo( 'beep' ); + +foo.secret = 'boop'; diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/lib/index.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/lib/index.js new file mode 100644 index 000000000000..5a393bc779b8 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/lib/index.js @@ -0,0 +1,48 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Define a non-enumerable write-only accessor. +* +* @module @stdlib/utils/define-nonenumerable-write-only-accessor +* +* @example +* var setNonEnumerableWriteOnlyAccessor = require( '@stdlib/utils/define-nonenumerable-write-only-accessor' ); +* +* var obj = {}; +* var val = ''; +* +* function setter( v ) { +* val = v; +* } +* +* setNonEnumerableWriteOnlyAccessor( obj, 'foo', setter ); +* +* obj.foo = 'beep'; +*/ + +// MODULES // + +var setNonEnumerableWriteOnlyAccessor = require( './main.js' ); // eslint-disable-line id-length + + +// EXPORTS // + +module.exports = setNonEnumerableWriteOnlyAccessor; diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/lib/main.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/lib/main.js new file mode 100644 index 000000000000..fd962a039cf6 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/lib/main.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var defineProperty = require( '@stdlib/utils/define-property' ); + + +// MAIN // + +/** +* Defines a non-enumerable write-only accessor. +* +* @param {Object} obj - object on which to define the property +* @param {(string|symbol)} prop - property name +* @param {Function} setter - accessor +* +* @example +* var obj = {}; +* var val = ''; +* +* function setter( v ) { +* val = v; +* } +* +* setNonEnumerableWriteOnlyAccessor( obj, 'foo', setter ); +* +* obj.foo = 'beep'; +*/ +function setNonEnumerableWriteOnlyAccessor( obj, prop, setter ) { // eslint-disable-line id-length + defineProperty( obj, prop, { + 'configurable': false, + 'enumerable': false, + 'set': setter + }); +} + + +// EXPORTS // + +module.exports = setNonEnumerableWriteOnlyAccessor; diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/package.json b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/package.json new file mode 100644 index 000000000000..2a3bbd611bc2 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/utils/define-nonenumerable-write-only-accessor", + "version": "0.0.0", + "description": "Define a non-enumerable write-only accessor.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "property", + "define", + "prop", + "write-only", + "writable", + "configurable", + "accessor", + "set", + "setter", + "non-enumerable", + "hidden", + "private" + ] +} diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/test/test.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/test/test.js new file mode 100644 index 000000000000..5420b9828bf4 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/test/test.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var getKeys = require( '@stdlib/utils/keys' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var setNonEnumerableWriteOnlyAccessor = require( './../lib' ); // eslint-disable-line id-length + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof setNonEnumerableWriteOnlyAccessor, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function sets a property on a provided object', function test( t ) { + var obj = {}; + var val = ''; + + setNonEnumerableWriteOnlyAccessor( obj, 'foo', setter ); + obj.foo = 'bar'; + + t.equal( val, 'bar', 'equals expected value' ); + t.end(); + + function setter( v ) { + val = v; + } +}); + +tape( 'the write-only property is not readable', function test( t ) { + var obj = {}; + var val = ''; + + setNonEnumerableWriteOnlyAccessor( obj, 'foo', setter ); + t.equal( obj.foo, void 0, 'property cannot be get' ); + + t.equal( val, '', 'equals expected value' ); + t.end(); + + function setter(v ) { + val = v; + } +}); + +tape( 'the write-only property is not configurable', function test( t ) { + var obj = {}; + var val = ''; + + setNonEnumerableWriteOnlyAccessor( obj, 'foo', setter ); + t.throws( foo, Error, 'property cannot be deleted' ); + t.throws( bar, Error, 'property cannot be reconfigured' ); + + t.equal( val, '', 'equals expected value' ); + t.end(); + + function setter( v ) { + val = v; + } + + function foo() { + delete obj.foo; + } + + function bar() { + defineProperty( obj, 'foo', { + 'value': 'boop', + 'writable': true, + 'configurable': false, + 'enumerable': true + }); + } +}); + +tape( 'the write-only property is not enumerable', function test( t ) { + var obj = {}; + var val = ''; + + setNonEnumerableWriteOnlyAccessor( obj, 'foo', setter ); + t.equal( getKeys( obj ).length, 0, 'property is not enumerable' ); + + t.equal( val, '', 'equals expected value' ); + t.end(); + + function setter( v ) { + val = v; + } +}); From ab3343d6826dd97e044606f69b418892e4fbde69 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 14:29:27 -0700 Subject: [PATCH 0550/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 38bf0fd12de8..db4c766f9af6 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -297,6 +297,15 @@ setReadOnly( utils, 'setNonEnumerableReadOnlyAccessor', require( '@stdlib/utils/ */ setReadOnly( utils, 'setNonEnumerableReadOnly', require( '@stdlib/utils/define-nonenumerable-read-only-property' ) ); +/** +* @name setNonEnumerableWriteOnlyAccessor +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/define-nonenumerable-write-only-accessor} +*/ +setReadOnly( utils, 'setNonEnumerableWriteOnlyAccessor', require( '@stdlib/utils/define-nonenumerable-write-only-accessor' ) ); + /** * @name defineProperties * @memberof utils From b8243fd180b2b00b8450293fc05eed4d50363dda Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 14:30:04 -0700 Subject: [PATCH 0551/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/s.js | 14 ++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 5 +++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/s.js b/lib/node_modules/@stdlib/namespace/lib/namespace/s.js index d9429e811423..959cbdb1b75f 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/s.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/s.js @@ -194,6 +194,20 @@ ns.push({ ] }); +ns.push({ + 'alias': 'setNonEnumerableWriteOnlyAccessor', + 'path': '@stdlib/utils/define-nonenumerable-write-only-accessor', + 'value': require( '@stdlib/utils/define-nonenumerable-write-only-accessor' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/define-nonenumerable-property', + '@stdlib/utils/define-nonenumerable-read-only-accessor', + '@stdlib/utils/define-nonenumerable-read-only-property', + '@stdlib/utils/define-nonenumerable-read-write-accessor', + '@stdlib/utils/define-write-only-accessor' + ] +}); + ns.push({ 'alias': 'setReadOnly', 'path': '@stdlib/utils/define-read-only-property', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index c8679e49c7cb..b6de7539750b 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1560,6 +1560,7 @@ var db = { "secondsInYear": "num = secondsInYear()\nnum = secondsInYear( 2016 )\nnum = secondsInYear( 2017 )\n", "setNonEnumerableReadOnly": "obj = {};\nsetNonEnumerableReadOnly( obj, 'foo', 'bar' );\nobj.foo = 'boop';\nobj\n", "setNonEnumerableReadOnlyAccessor": "obj = {};\nfunction getter() { return 'bar'; };\nsetNonEnumerableReadOnlyAccessor( obj, 'foo', getter );\nobj.foo\n", + "setNonEnumerableWriteOnlyAccessor": "obj = {};\nval = '';\nfunction setter( v ) { val = v; };\nsetNonEnumerableWriteOnlyAccessor( obj, 'foo', setter );\nobj.foo = 'bar';\nval\n", "setReadOnly": "obj = {};\nsetReadOnly( obj, 'foo', 'bar' );\nobj.foo = 'boop';\nobj\n", "setReadOnlyAccessor": "obj = {};\nfunction getter() { return 'bar'; };\nsetReadOnlyAccessor( obj, 'foo', getter );\nobj.foo\n", "setReadWriteAccessor": "obj = {};\nname = 'bar';\nfunction getter() { return name + ' foo'; };\nfunction setter( v ) { name = v; };\nsetReadWriteAccessor( obj, 'foo', getter, setter );\nobj.foo\nobj.foo = 'beep';\nobj.foo\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index ce7ba8ca1586..90de802999a4 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1559,8 +1559,9 @@ var db = { "SECONDS_IN_WEEK": "\nSECONDS_IN_WEEK\n Number of seconds in a week.\n\n The value is a generalization and does **not** take into account\n inaccuracies due to daylight savings conventions, crossing timezones, or\n other complications with time and dates.\n\n Examples\n --------\n > var wks = 3.14;\n > var secs = wks * SECONDS_IN_WEEK\n 1899072\n\n", "secondsInMonth": "\nsecondsInMonth( [month[, year]] )\n Returns the number of seconds in a month.\n\n By default, the function returns the number of seconds in the current month\n of the current year (according to local time). To determine the number of\n seconds for a particular month and year, provide `month` and `year`\n arguments.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n The function's return value is a generalization and does **not** take into\n account inaccuracies due to daylight savings conventions, crossing\n timezones, or other complications with time and dates.\n\n Parameters\n ----------\n month: string|Date|integer (optional)\n Month.\n\n year: integer (optional)\n Year.\n\n Returns\n -------\n out: integer\n Seconds in a month.\n\n Examples\n --------\n > var num = secondsInMonth()\n \n > num = secondsInMonth( 2 )\n \n > num = secondsInMonth( 2, 2016 )\n 2505600\n > num = secondsInMonth( 2, 2017 )\n 2419200\n\n // Other ways to supply month:\n > num = secondsInMonth( 'feb', 2016 )\n 2505600\n > num = secondsInMonth( 'february', 2016 )\n 2505600\n\n See Also\n --------\n secondsInYear\n", "secondsInYear": "\nsecondsInYear( [value] )\n Returns the number of seconds in a year according to the Gregorian calendar.\n\n By default, the function returns the number of seconds in the current year\n (according to local time). To determine the number of seconds for a\n particular year, provide either a year or a `Date` object.\n\n The function's return value is a generalization and does **not** take into\n account inaccuracies due to daylight savings conventions, crossing\n timezones, or other complications with time and dates.\n\n Parameters\n ----------\n value: integer|Date (optional)\n Year or `Date` object.\n\n Returns\n -------\n out: integer\n Number of seconds in a year.\n\n Examples\n --------\n > var num = secondsInYear()\n \n > num = secondsInYear( 2016 )\n 31622400\n > num = secondsInYear( 2017 )\n 31536000\n\n See Also\n --------\n secondsInMonth\n", - "setNonEnumerableReadOnly": "\nsetNonEnumerableReadOnly( obj, prop, value )\n Defines a non-enumerable read-only property.\n\n Non-enumerable read-only properties are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setNonEnumerableReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n setNonEnumerableReadOnlyAccessor, setReadOnly\n", - "setNonEnumerableReadOnlyAccessor": "\nsetNonEnumerableReadOnlyAccessor( obj, prop, getter )\n Defines a non-enumerable read-only accessor.\n\n Non-enumerable read-only accessors are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n Examples\n --------\n > var obj = {};\n > function getter() { return 'bar'; };\n > setNonEnumerableReadOnlyAccessor( obj, 'foo', getter );\n > obj.foo\n 'bar'\n\n See Also\n --------\n setNonEnumerableReadOnly, setReadOnlyAccessor\n", + "setNonEnumerableReadOnly": "\nsetNonEnumerableReadOnly( obj, prop, value )\n Defines a non-enumerable read-only property.\n\n Non-enumerable read-only properties are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setNonEnumerableReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n setNonEnumerableReadOnlyAccessor, setNonEnumerableWriteOnlyAccessor, setReadOnly\n", + "setNonEnumerableReadOnlyAccessor": "\nsetNonEnumerableReadOnlyAccessor( obj, prop, getter )\n Defines a non-enumerable read-only accessor.\n\n Non-enumerable read-only accessors are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n Examples\n --------\n > var obj = {};\n > function getter() { return 'bar'; };\n > setNonEnumerableReadOnlyAccessor( obj, 'foo', getter );\n > obj.foo\n 'bar'\n\n See Also\n --------\n setNonEnumerableReadOnly, setNonEnumerableWriteOnlyAccessor, setReadOnlyAccessor\n", + "setNonEnumerableWriteOnlyAccessor": "\nsetNonEnumerableWriteOnlyAccessor( obj, prop, setter )\n Defines a non-enumerable write-only accessor.\n\n Non-enumerable write-only accessors are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var val = '';\n > function setter( v ) { val = v; };\n > setNonEnumerableWriteOnlyAccessor( obj, 'foo', setter );\n > obj.foo = 'bar';\n > val\n 'bar'\n\n See Also\n --------\n setNonEnumerableReadOnlyAccessor, setNonEnumerableReadOnly, setWriteOnlyAccessor\n", "setReadOnly": "\nsetReadOnly( obj, prop, value )\n Defines a read-only property.\n\n Read-only properties are enumerable and non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n setReadOnlyAccessor, setReadWriteAccessor, setWriteOnlyAccessor\n", "setReadOnlyAccessor": "\nsetReadOnlyAccessor( obj, prop, getter )\n Defines a read-only accessor.\n\n Read-only accessors are enumerable and non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n Examples\n --------\n > var obj = {};\n > function getter() { return 'bar'; };\n > setReadOnlyAccessor( obj, 'foo', getter );\n > obj.foo\n 'bar'\n\n See Also\n --------\n setReadOnly, setReadWriteAccessor, setWriteOnlyAccessor\n", "setReadWriteAccessor": "\nsetReadWriteAccessor( obj, prop, getter, setter )\n Defines a property having read-write accessors.\n\n Read-write accessors are enumerable and non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var name = 'bar';\n > function getter() { return name + ' foo'; };\n > function setter( v ) { name = v; };\n > setReadWriteAccessor( obj, 'foo', getter, setter );\n > obj.foo\n 'bar foo'\n > obj.foo = 'beep';\n > obj.foo\n 'beep foo'\n\n See Also\n --------\n setReadOnly, setReadOnlyAccessor, setWriteOnlyAccessor\n", From bac56cf5e820395847a42d16c4176d8764d3b011 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 14:34:32 -0700 Subject: [PATCH 0552/1062] Add utility to define a non-enumerable read-write accessor --- .../README.md | 120 +++++++++++++++++ .../benchmark/benchmark.js | 61 +++++++++ .../docs/repl.txt | 36 +++++ .../examples/index.js | 43 ++++++ .../lib/index.js | 58 ++++++++ .../lib/main.js | 70 ++++++++++ .../package.json | 77 +++++++++++ .../test/test.js | 124 ++++++++++++++++++ 8 files changed, 589 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/README.md create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/package.json create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/test/test.js diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/README.md b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/README.md new file mode 100644 index 000000000000..5d477b8e42c1 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/README.md @@ -0,0 +1,120 @@ + + +# Non-Enumerable Read-Write Accessor + +> [Define][@stdlib/utils/define-property] a non-enumerable **read-write** accessor. + +
+ +## Usage + + + +```javascript +var setNonEnumerableReadWriteAccessor = require( '@stdlib/utils/define-nonenumerable-read-write-accessor' ); +``` + +#### setNonEnumerableReadWriteAccessor( obj, prop, getter, setter ) + +[Defines][@stdlib/utils/define-property] a non-enumerable **read-write** accessor. + +```javascript +var word = 'bar'; +var obj = {}; + +function getter() { + return word + ' foo'; +} + +function setter( v ) { + word = v; +} + +setNonEnumerableReadWriteAccessor( obj, 'foo', getter, setter ); + +var v = obj.foo; +// returns 'bar foo' + +obj.foo = 'beep'; + +v = obj.foo; +// returns 'beep foo' +``` + +
+ + + +
+ +## Notes + +- Non-enumerable read-write accessors are **non-configurable**. + +
+ + + +
+ +## Examples + + + + + +```javascript +var setNonEnumerableReadWriteAccessor = require( '@stdlib/utils/define-nonenumerable-read-write-accessor' ); + +function Foo( name ) { + if ( !(this instanceof Foo) ) { + return new Foo( name ); + } + setNonEnumerableReadWriteAccessor( this, 'name', getName, setName ); + return this; + + function getName() { + return 'Hello, ' + name; + } + + function setName( v ) { + name = v; + } +} + +var foo = new Foo( 'Grace' ); +console.log( foo.name ); + +foo.name = 'Ada'; +console.log( foo.name ); +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/benchmark/benchmark.js new file mode 100644 index 000000000000..8fb29c70dfb4 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/benchmark/benchmark.js @@ -0,0 +1,61 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isString = require( '@stdlib/assert/is-string' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var setNonEnumerableReadWriteAccessor = require( './../lib' ); // eslint-disable-line id-length + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var obj; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj = {}; + setNonEnumerableReadWriteAccessor( obj, 'foo', getter( i.toString() ), setter ); + if ( !isString( obj.foo ) ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( !isString( obj.foo ) ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function getter( v ) { + return get; + + function get() { + return v; + } + } + + function setter( v ) { + obj.foo = v; + } +}); diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/docs/repl.txt new file mode 100644 index 000000000000..4cd5f7f87e26 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/docs/repl.txt @@ -0,0 +1,36 @@ + +{{alias}}( obj, prop, getter, setter ) + Defines a non-enumerable property having read-write accessors. + + Non-enumerable read-write accessors are non-configurable. + + Parameters + ---------- + obj: Object + Object on which to define the property. + + prop: string|symbol + Property name. + + getter: Function + Get accessor. + + setter: Function + Set accessor. + + Examples + -------- + > var obj = {}; + > var name = 'bar'; + > function getter() { return name + ' foo'; }; + > function setter( v ) { name = v; }; + > {{alias}}( obj, 'foo', getter, setter ); + > obj.foo + 'bar foo' + > obj.foo = 'beep'; + > obj.foo + 'beep foo' + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/examples/index.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/examples/index.js new file mode 100644 index 000000000000..b0760971ffc1 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/examples/index.js @@ -0,0 +1,43 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var setNonEnumerableReadWriteAccessor = require( './../lib' ); // eslint-disable-line id-length + +function Foo( name ) { + if ( !(this instanceof Foo) ) { + return new Foo( name ); + } + setNonEnumerableReadWriteAccessor( this, 'name', getName, setName ); + return this; + + function getName() { + return 'Hello, ' + name; + } + + function setName( v ) { + name = v; + } +} + +var foo = new Foo( 'Grace' ); +console.log( foo.name ); + +foo.name = 'Ada'; +console.log( foo.name ); diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/lib/index.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/lib/index.js new file mode 100644 index 000000000000..40bc105add04 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/lib/index.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Define a non-enumerable read-write accessor. +* +* @module @stdlib/utils/define-nonenumerable-read-write-accessor +* +* @example +* var setNonEnumerableReadWriteAccessor = require( '@stdlib/utils/define-nonenumerable-read-write-accessor' ); +* +* function getter() { +* return name + ' foo'; +* } +* +* function setter( v ) { +* name = v; +* } +* +* var name = 'bar'; +* var obj = {}; +* +* setNonEnumerableReadWriteAccessor( obj, 'foo', getter, setter ); +* +* var v = obj.foo; +* // returns 'bar foo' +* +* obj.foo = 'beep'; +* +* v = obj.foo; +* // returns 'beep foo' +*/ + +// MODULES // + +var setNonEnumerableReadWriteAccessor = require( './main.js' ); + + +// EXPORTS // + +module.exports = setNonEnumerableReadWriteAccessor; diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/lib/main.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/lib/main.js new file mode 100644 index 000000000000..90914acadcc1 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/lib/main.js @@ -0,0 +1,70 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var defineProperty = require( '@stdlib/utils/define-property' ); + + +// MAIN // + +/** +* Defines a non-enumerable read-write accessor. +* +* @param {Object} obj - object on which to define the property +* @param {(string|symbol)} prop - property name +* @param {Function} getter - get accessor +* @param {Function} setter - set accessor +* +* @example +* function getter() { +* return name + ' foo'; +* } +* +* function setter( v ) { +* name = v; +* } +* +* var name = 'bar'; +* var obj = {}; +* +* setNonEnumerableReadWriteAccessor( obj, 'foo', getter, setter ); +* +* var v = obj.foo; +* // returns 'bar foo' +* +* obj.foo = 'beep'; +* +* v = obj.foo; +* // returns 'beep foo' +*/ +function setNonEnumerableReadWriteAccessor( obj, prop, getter, setter ) { // eslint-disable-line id-length + defineProperty( obj, prop, { + 'configurable': false, + 'enumerable': false, + 'get': getter, + 'set': setter + }); +} + + +// EXPORTS // + +module.exports = setNonEnumerableReadWriteAccessor; diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/package.json b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/package.json new file mode 100644 index 000000000000..9c1600d6a6ab --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/package.json @@ -0,0 +1,77 @@ +{ + "name": "@stdlib/utils/define-nonenumerable-read-write-accessor", + "version": "0.0.0", + "description": "Define a non-enumerable read-write accessor.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "property", + "define", + "prop", + "read-write", + "read", + "write", + "readable", + "writable", + "configurable", + "accessor", + "get", + "getter", + "set", + "setter", + "non-enumerable", + "hidden", + "private" + ] +} diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/test/test.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/test/test.js new file mode 100644 index 000000000000..9e7315582c90 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-read-write-accessor/test/test.js @@ -0,0 +1,124 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var getKeys = require( '@stdlib/utils/keys' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var setNonEnumerableReadWriteAccessor = require( './../lib' ); // eslint-disable-line id-length + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof setNonEnumerableReadWriteAccessor, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function sets a property on a provided object', function test( t ) { + var obj = {}; + var val = 0; + + setNonEnumerableReadWriteAccessor( obj, 'foo', getter, setter ); + t.equal( obj.foo, val, 'returns expected value' ); + + t.end(); + + function getter() { + return val; + } + + function setter( v ) { + val = v; + } +}); + +tape( 'the read-write property is writable', function test( t ) { + var obj = {}; + var val = 0; + + setNonEnumerableReadWriteAccessor( obj, 'foo', getter, setter ); + t.equal( obj.foo, 0, 'returns expected value' ); + + obj.foo = 1; + t.equal( obj.foo, 1, 'returns expected value' ); + + t.end(); + + function getter() { + return val; + } + + function setter( v ) { + val = v; + } +}); + +tape( 'the read-write property is not configurable', function test( t ) { + var obj = {}; + var val = 0; + + setNonEnumerableReadWriteAccessor( obj, 'foo', getter, setter ); + + t.throws( foo, Error, 'property cannot be deleted' ); + t.throws( bar, Error, 'property cannot be reconfigured' ); + t.end(); + + function getter() { + return val; + } + + function setter( v ) { + val = v; + } + + function foo() { + delete obj.foo; + } + + function bar() { + defineProperty( obj, 'foo', { + 'value': 'boop', + 'writable': true, + 'configurable': false, + 'enumerable': true + }); + } +}); + +tape( 'the read-write property is not enumerable', function test( t ) { + var obj = {}; + var val = 0; + + setNonEnumerableReadWriteAccessor( obj, 'foo', getter, setter ); + + t.equal( getKeys( obj ).length, 0, 'property is not enumerable' ); + t.end(); + + function getter() { + return val; + } + + function setter( v ) { + val = v; + } +}); From b9335cb8c48c8bc1886aa8bc6e3085ac841bdd85 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 14:35:58 -0700 Subject: [PATCH 0553/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index db4c766f9af6..3ac70b4fb234 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -297,6 +297,15 @@ setReadOnly( utils, 'setNonEnumerableReadOnlyAccessor', require( '@stdlib/utils/ */ setReadOnly( utils, 'setNonEnumerableReadOnly', require( '@stdlib/utils/define-nonenumerable-read-only-property' ) ); +/** +* @name setNonEnumerableReadWriteAccessor +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/define-nonenumerable-read-write-accessor} +*/ +setReadOnly( utils, 'setNonEnumerableReadWriteAccessor', require( '@stdlib/utils/define-nonenumerable-read-write-accessor' ) ); + /** * @name setNonEnumerableWriteOnlyAccessor * @memberof utils From c023d9b072fc4e1e51961d58fb260a8ce38150d0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 14:36:33 -0700 Subject: [PATCH 0554/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/s.js | 14 ++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 7 ++++--- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/s.js b/lib/node_modules/@stdlib/namespace/lib/namespace/s.js index 959cbdb1b75f..dcde9f2a1049 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/s.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/s.js @@ -194,6 +194,20 @@ ns.push({ ] }); +ns.push({ + 'alias': 'setNonEnumerableReadWriteAccessor', + 'path': '@stdlib/utils/define-nonenumerable-read-write-accessor', + 'value': require( '@stdlib/utils/define-nonenumerable-read-write-accessor' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/define-nonenumerable-property', + '@stdlib/utils/define-nonenumerable-read-only-accessor', + '@stdlib/utils/define-nonenumerable-read-only-property', + '@stdlib/utils/define-nonenumerable-write-only-accessor', + '@stdlib/utils/define-read-write-accessor' + ] +}); + ns.push({ 'alias': 'setNonEnumerableWriteOnlyAccessor', 'path': '@stdlib/utils/define-nonenumerable-write-only-accessor', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index b6de7539750b..2067b099ff43 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1560,6 +1560,7 @@ var db = { "secondsInYear": "num = secondsInYear()\nnum = secondsInYear( 2016 )\nnum = secondsInYear( 2017 )\n", "setNonEnumerableReadOnly": "obj = {};\nsetNonEnumerableReadOnly( obj, 'foo', 'bar' );\nobj.foo = 'boop';\nobj\n", "setNonEnumerableReadOnlyAccessor": "obj = {};\nfunction getter() { return 'bar'; };\nsetNonEnumerableReadOnlyAccessor( obj, 'foo', getter );\nobj.foo\n", + "setNonEnumerableReadWriteAccessor": "obj = {};\nname = 'bar';\nfunction getter() { return name + ' foo'; };\nfunction setter( v ) { name = v; };\nsetNonEnumerableReadWriteAccessor( obj, 'foo', getter, setter );\nobj.foo\nobj.foo = 'beep';\nobj.foo\n", "setNonEnumerableWriteOnlyAccessor": "obj = {};\nval = '';\nfunction setter( v ) { val = v; };\nsetNonEnumerableWriteOnlyAccessor( obj, 'foo', setter );\nobj.foo = 'bar';\nval\n", "setReadOnly": "obj = {};\nsetReadOnly( obj, 'foo', 'bar' );\nobj.foo = 'boop';\nobj\n", "setReadOnlyAccessor": "obj = {};\nfunction getter() { return 'bar'; };\nsetReadOnlyAccessor( obj, 'foo', getter );\nobj.foo\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 90de802999a4..157c1bbe48a3 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1559,9 +1559,10 @@ var db = { "SECONDS_IN_WEEK": "\nSECONDS_IN_WEEK\n Number of seconds in a week.\n\n The value is a generalization and does **not** take into account\n inaccuracies due to daylight savings conventions, crossing timezones, or\n other complications with time and dates.\n\n Examples\n --------\n > var wks = 3.14;\n > var secs = wks * SECONDS_IN_WEEK\n 1899072\n\n", "secondsInMonth": "\nsecondsInMonth( [month[, year]] )\n Returns the number of seconds in a month.\n\n By default, the function returns the number of seconds in the current month\n of the current year (according to local time). To determine the number of\n seconds for a particular month and year, provide `month` and `year`\n arguments.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n The function's return value is a generalization and does **not** take into\n account inaccuracies due to daylight savings conventions, crossing\n timezones, or other complications with time and dates.\n\n Parameters\n ----------\n month: string|Date|integer (optional)\n Month.\n\n year: integer (optional)\n Year.\n\n Returns\n -------\n out: integer\n Seconds in a month.\n\n Examples\n --------\n > var num = secondsInMonth()\n \n > num = secondsInMonth( 2 )\n \n > num = secondsInMonth( 2, 2016 )\n 2505600\n > num = secondsInMonth( 2, 2017 )\n 2419200\n\n // Other ways to supply month:\n > num = secondsInMonth( 'feb', 2016 )\n 2505600\n > num = secondsInMonth( 'february', 2016 )\n 2505600\n\n See Also\n --------\n secondsInYear\n", "secondsInYear": "\nsecondsInYear( [value] )\n Returns the number of seconds in a year according to the Gregorian calendar.\n\n By default, the function returns the number of seconds in the current year\n (according to local time). To determine the number of seconds for a\n particular year, provide either a year or a `Date` object.\n\n The function's return value is a generalization and does **not** take into\n account inaccuracies due to daylight savings conventions, crossing\n timezones, or other complications with time and dates.\n\n Parameters\n ----------\n value: integer|Date (optional)\n Year or `Date` object.\n\n Returns\n -------\n out: integer\n Number of seconds in a year.\n\n Examples\n --------\n > var num = secondsInYear()\n \n > num = secondsInYear( 2016 )\n 31622400\n > num = secondsInYear( 2017 )\n 31536000\n\n See Also\n --------\n secondsInMonth\n", - "setNonEnumerableReadOnly": "\nsetNonEnumerableReadOnly( obj, prop, value )\n Defines a non-enumerable read-only property.\n\n Non-enumerable read-only properties are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setNonEnumerableReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n setNonEnumerableReadOnlyAccessor, setNonEnumerableWriteOnlyAccessor, setReadOnly\n", - "setNonEnumerableReadOnlyAccessor": "\nsetNonEnumerableReadOnlyAccessor( obj, prop, getter )\n Defines a non-enumerable read-only accessor.\n\n Non-enumerable read-only accessors are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n Examples\n --------\n > var obj = {};\n > function getter() { return 'bar'; };\n > setNonEnumerableReadOnlyAccessor( obj, 'foo', getter );\n > obj.foo\n 'bar'\n\n See Also\n --------\n setNonEnumerableReadOnly, setNonEnumerableWriteOnlyAccessor, setReadOnlyAccessor\n", - "setNonEnumerableWriteOnlyAccessor": "\nsetNonEnumerableWriteOnlyAccessor( obj, prop, setter )\n Defines a non-enumerable write-only accessor.\n\n Non-enumerable write-only accessors are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var val = '';\n > function setter( v ) { val = v; };\n > setNonEnumerableWriteOnlyAccessor( obj, 'foo', setter );\n > obj.foo = 'bar';\n > val\n 'bar'\n\n See Also\n --------\n setNonEnumerableReadOnlyAccessor, setNonEnumerableReadOnly, setWriteOnlyAccessor\n", + "setNonEnumerableReadOnly": "\nsetNonEnumerableReadOnly( obj, prop, value )\n Defines a non-enumerable read-only property.\n\n Non-enumerable read-only properties are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setNonEnumerableReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n setNonEnumerableReadOnlyAccessor, setNonEnumerableReadWriteAccessor, setNonEnumerableWriteOnlyAccessor, setReadOnly\n", + "setNonEnumerableReadOnlyAccessor": "\nsetNonEnumerableReadOnlyAccessor( obj, prop, getter )\n Defines a non-enumerable read-only accessor.\n\n Non-enumerable read-only accessors are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n Examples\n --------\n > var obj = {};\n > function getter() { return 'bar'; };\n > setNonEnumerableReadOnlyAccessor( obj, 'foo', getter );\n > obj.foo\n 'bar'\n\n See Also\n --------\n setNonEnumerableReadOnly, setNonEnumerableReadWriteAccessor, setNonEnumerableWriteOnlyAccessor, setReadOnlyAccessor\n", + "setNonEnumerableReadWriteAccessor": "\nsetNonEnumerableReadWriteAccessor( obj, prop, getter, setter )\n Defines a non-enumerable property having read-write accessors.\n\n Non-enumerable read-write accessors are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var name = 'bar';\n > function getter() { return name + ' foo'; };\n > function setter( v ) { name = v; };\n > setNonEnumerableReadWriteAccessor( obj, 'foo', getter, setter );\n > obj.foo\n 'bar foo'\n > obj.foo = 'beep';\n > obj.foo\n 'beep foo'\n\n See Also\n --------\n setNonEnumerableReadOnlyAccessor, setNonEnumerableReadOnly, setNonEnumerableWriteOnlyAccessor, setReadWriteAccessor\n", + "setNonEnumerableWriteOnlyAccessor": "\nsetNonEnumerableWriteOnlyAccessor( obj, prop, setter )\n Defines a non-enumerable write-only accessor.\n\n Non-enumerable write-only accessors are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var val = '';\n > function setter( v ) { val = v; };\n > setNonEnumerableWriteOnlyAccessor( obj, 'foo', setter );\n > obj.foo = 'bar';\n > val\n 'bar'\n\n See Also\n --------\n setNonEnumerableReadOnlyAccessor, setNonEnumerableReadOnly, setNonEnumerableReadWriteAccessor, setWriteOnlyAccessor\n", "setReadOnly": "\nsetReadOnly( obj, prop, value )\n Defines a read-only property.\n\n Read-only properties are enumerable and non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n setReadOnlyAccessor, setReadWriteAccessor, setWriteOnlyAccessor\n", "setReadOnlyAccessor": "\nsetReadOnlyAccessor( obj, prop, getter )\n Defines a read-only accessor.\n\n Read-only accessors are enumerable and non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n Examples\n --------\n > var obj = {};\n > function getter() { return 'bar'; };\n > setReadOnlyAccessor( obj, 'foo', getter );\n > obj.foo\n 'bar'\n\n See Also\n --------\n setReadOnly, setReadWriteAccessor, setWriteOnlyAccessor\n", "setReadWriteAccessor": "\nsetReadWriteAccessor( obj, prop, getter, setter )\n Defines a property having read-write accessors.\n\n Read-write accessors are enumerable and non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var name = 'bar';\n > function getter() { return name + ' foo'; };\n > function setter( v ) { name = v; };\n > setReadWriteAccessor( obj, 'foo', getter, setter );\n > obj.foo\n 'bar foo'\n > obj.foo = 'beep';\n > obj.foo\n 'beep foo'\n\n See Also\n --------\n setReadOnly, setReadOnlyAccessor, setWriteOnlyAccessor\n", From a15e0adaa89b1998be1b3a668d2353a1e418b9ae Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 14:39:32 -0700 Subject: [PATCH 0555/1062] Use project utilities --- ...define_nonenumerable_read_only_accessor.js | 56 ----------------- ...efine_nonenumerable_read_write_accessor.js | 62 ------------------- .../utils/named-typed-tuple/lib/main.js | 4 +- 3 files changed, 2 insertions(+), 120 deletions(-) delete mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_read_only_accessor.js delete mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_read_write_accessor.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_read_only_accessor.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_read_only_accessor.js deleted file mode 100644 index 2ea42db72778..000000000000 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_read_only_accessor.js +++ /dev/null @@ -1,56 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2018 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var defineProperty = require( '@stdlib/utils/define-property' ); - - -// MAIN // - -/** -* Defines a non-enumerable read-only accessor. -* -* @private -* @param {Object} obj - object on which to define the property -* @param {(string|symbol)} prop - property name -* @param {Function} get - getter -* -* @example -* var obj = {}; -* -* function get() { -* return 'boop'; -* } -* -* defineNonEnumerableReadOnlyAccessor( obj, 'beep', get ); -*/ -function defineNonEnumerableReadOnlyAccessor( obj, prop, get ) { // eslint-disable-line id-length - defineProperty( obj, prop, { - 'configurable': false, - 'enumerable': false, - 'get': get - }); -} - - -// EXPORTS // - -module.exports = defineNonEnumerableReadOnlyAccessor; diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_read_write_accessor.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_read_write_accessor.js deleted file mode 100644 index fccbde567921..000000000000 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_read_write_accessor.js +++ /dev/null @@ -1,62 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2018 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var defineProperty = require( '@stdlib/utils/define-property' ); - - -// MAIN // - -/** -* Defines a non-enumerable read-write accessor. -* -* @private -* @param {Object} obj - object on which to define the property -* @param {(string|symbol)} prop - property name -* @param {Function} get - getter -* @param {Function} set - setter -* -* @example -* var obj = {}; -* -* function get() { -* return 'boop'; -* } -* -* function set( v ) { -* obj.beep = v; -* } -* -* defineNonEnumerableReadWriteAccessor( obj, 'beep', get, set ); -*/ -function defineNonEnumerableReadWriteAccessor( obj, prop, get, set ) { // eslint-disable-line id-length - defineProperty( obj, prop, { - 'configurable': false, - 'enumerable': false, - 'get': get, - 'set': set - }); -} - - -// EXPORTS // - -module.exports = defineNonEnumerableReadWriteAccessor; diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index 726dbf71b6a2..b091244efdcc 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -36,6 +36,8 @@ var typedarray = require( '@stdlib/array/typed' ); var Int8Array = require( '@stdlib/array/int8' ); var getDtype = require( '@stdlib/array/dtype' ); var defineProperty = require( '@stdlib/utils/define-property' ); +var setNonEnumerableReadOnlyAccessor = require( '@stdlib/utils/define-nonenumerable-read-only-accessor' ); // eslint-disable-line id-length +var setNonEnumerableReadWriteAccessor = require( '@stdlib/utils/define-nonenumerable-read-write-accessor' ); // eslint-disable-line id-length var floor = require( '@stdlib/math/base/special/floor' ); var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); var contains = require( './contains.js' ); @@ -45,8 +47,6 @@ var ascending = require( './ascending.js' ); var fromIterator = require( './from_iterator.js' ); var fromIteratorMap = require( './from_iterator_map.js' ); var setNonEnumerableProperty = require( './define_nonenumerable_property.js' ); -var setNonEnumerableReadOnlyAccessor = require( './define_nonenumerable_read_only_accessor.js' ); // eslint-disable-line id-length -var setNonEnumerableReadWriteAccessor = require( './define_nonenumerable_read_write_accessor.js' ); // eslint-disable-line id-length // VARIABLES // From 50a2fa74944d5f65ac117221f7268384531fa692 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sun, 30 Sep 2018 14:48:04 -0700 Subject: [PATCH 0556/1062] Remove unnecessary code block configuration comments --- .../utils/define-nonenumerable-write-only-accessor/README.md | 2 -- .../@stdlib/utils/define-write-only-accessor/README.md | 2 -- 2 files changed, 4 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/README.md b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/README.md index cf18d78da031..a9458912906b 100644 --- a/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/README.md +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-write-only-accessor/README.md @@ -36,8 +36,6 @@ var setNonEnumerableWriteOnlyAccessor = require( '@stdlib/utils/define-nonenumer [Defines][@stdlib/utils/define-property] a non-enumerable **write-only** accessor. - - ```javascript var obj = {}; var val = ''; diff --git a/lib/node_modules/@stdlib/utils/define-write-only-accessor/README.md b/lib/node_modules/@stdlib/utils/define-write-only-accessor/README.md index 12c32095c368..ef709bd8c547 100644 --- a/lib/node_modules/@stdlib/utils/define-write-only-accessor/README.md +++ b/lib/node_modules/@stdlib/utils/define-write-only-accessor/README.md @@ -34,8 +34,6 @@ var setWriteOnlyAccessor = require( '@stdlib/utils/define-write-only-accessor' ) [Defines][@stdlib/utils/define-property] a **write-only** accessor. - - ```javascript var obj = {}; var val = ''; From 698e8131f6be34d6d72ce32147800e44da4f6628 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 14:04:18 -0700 Subject: [PATCH 0557/1062] Add utility to define a non-enumerable property --- .../define-nonenumerable-property/README.md | 97 +++++++++++++++++++ .../benchmark/benchmark.js | 50 ++++++++++ .../docs/repl.txt | 29 ++++++ .../examples/index.js | 40 ++++++++ .../lib/index.js | 48 +++++++++ .../define-nonenumerable-property/lib/main.js | 60 ++++++++++++ .../package.json | 70 +++++++++++++ .../test/test.js | 88 +++++++++++++++++ 8 files changed, 482 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-property/README.md create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-property/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-property/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-property/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-property/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-property/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-property/package.json create mode 100644 lib/node_modules/@stdlib/utils/define-nonenumerable-property/test/test.js diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-property/README.md b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/README.md new file mode 100644 index 000000000000..3718dcdba91f --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/README.md @@ -0,0 +1,97 @@ + + +# Non-Enumerable Property + +> [Define][@stdlib/utils/define-property] a **non-enumerable** property. + +
+ +## Usage + +```javascript +var setNonEnumerableProperty = require( '@stdlib/utils/define-nonenumerable-property-property' ); +``` + +#### setNonEnumerableProperty( obj, prop, value ) + +[Defines][@stdlib/utils/define-property] a **non-enumerable** property. + +```javascript +var obj = {}; + +setNonEnumerableProperty( obj, 'foo', 'bar' ); + +var v = obj.foo; +// returns 'bar' +``` + +
+ + + +
+ +## Notes + +- Non-enumerable properties are **writable** and **configurable**. + +
+ + + +
+ +## Examples + + + +```javascript +var getKeys = require( '@stdlib/utils/keys' ); +var setNonEnumerableProperty = require( '@stdlib/utils/define-nonenumerable-property' ); + +function Foo( name ) { + if ( !(this instanceof Foo) ) { + return new Foo( name ); + } + setNonEnumerableProperty( this, 'name', name ); + return this; +} + +var foo = new Foo( 'beep' ); + +var v = foo.name; +// returns 'beep' + +var keys = getKeys( foo ); +// returns [] +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-property/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/benchmark/benchmark.js new file mode 100644 index 000000000000..31268d30f0cf --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/benchmark/benchmark.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isString = require( '@stdlib/assert/is-string' ).isPrimitive; +var fromCodePoint = require( '@stdlib/string/from-code-point' ); +var pkg = require( './../package.json' ).name; +var setNonEnumerableProperty = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var obj; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj = {}; + setNonEnumerableProperty( obj, 'foo', fromCodePoint( 97 + (i%26) ) ); + if ( !isString( obj.foo ) ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( !isString( obj.foo ) ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-property/docs/repl.txt b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/docs/repl.txt new file mode 100644 index 000000000000..77d789cf3c06 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/docs/repl.txt @@ -0,0 +1,29 @@ + +{{alias}}( obj, prop, value ) + Defines a non-enumerable property. + + Non-enumerable properties are writable and configurable. + + Parameters + ---------- + obj: Object + Object on which to define the property. + + prop: string|symbol + Property name. + + value: any + Value to set. + + Examples + -------- + > var obj = {}; + > {{alias}}( obj, 'foo', 'bar' ); + > obj.foo + 'bar' + > {{alias:@stdlib/utils/keys}}( obj ) + [] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-property/examples/index.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/examples/index.js new file mode 100644 index 000000000000..6ff7642f9746 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/examples/index.js @@ -0,0 +1,40 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var getKeys = require( '@stdlib/utils/keys' ); +var setNonEnumerableProperty = require( './../lib' ); + +function Foo( name ) { + if ( !(this instanceof Foo) ) { + return new Foo( name ); + } + setNonEnumerableProperty( this, 'name', name ); + return this; +} + +var foo = new Foo( 'beep' ); + +var v = foo.name; +console.log( v ); +// => 'beep' + +var keys = getKeys( foo ); +console.log( keys.length ); +// => 0 diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-property/lib/index.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/lib/index.js new file mode 100644 index 000000000000..c008cd599ea8 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/lib/index.js @@ -0,0 +1,48 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Define a non-enumerable property. +* +* @module @stdlib/utils/define-nonenumerable-property +* +* @example +* var getKeys = require( '@stdlib/utils/keys' ); +* var setNonEnumerableProperty = require( '@stdlib/utils/define-nonenumerable-property' ); +* +* var obj = {}; +* +* setNonEnumerableProperty( obj, 'foo', 'bar' ); +* +* var v = obj.foo; +* // returns 'bar' +* +* var keys = getKeys( obj ); +* // returns [] +*/ + +// MODULES // + +var setNonEnumerableProperty = require( './main.js' ); + + +// EXPORTS // + +module.exports = setNonEnumerableProperty; diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-property/lib/main.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/lib/main.js new file mode 100644 index 000000000000..ff5631402c5d --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/lib/main.js @@ -0,0 +1,60 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var defineProperty = require( '@stdlib/utils/define-property' ); + + +// MAIN // + +/** +* Defines a non-enumerable property. +* +* @param {Object} obj - object on which to define the property +* @param {(string|symbol)} prop - property name +* @param {*} value - value to set +* +* @example +* var getKeys = require( '@stdlib/utils/keys' ); +* +* var obj = {}; +* +* setNonEnumerableProperty( obj, 'foo', 'bar' ); +* +* var v = obj.foo; +* // returns 'bar' +* +* var keys = getKeys( obj ); +* // returns [] +*/ +function setNonEnumerableProperty( obj, prop, value ) { + defineProperty( obj, prop, { + 'configurable': true, + 'enumerable': false, + 'writable': true, + 'value': value + }); +} + + +// EXPORTS // + +module.exports = setNonEnumerableProperty; diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-property/package.json b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/package.json new file mode 100644 index 000000000000..222ad4053b7f --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/package.json @@ -0,0 +1,70 @@ +{ + "name": "@stdlib/utils/define-nonenumerable-property", + "version": "0.0.0", + "description": "Define a non-enumerable property.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "property", + "define", + "set", + "value", + "prop", + "non-enumerable", + "writable", + "configurable", + "hidden", + "private" + ] +} diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-property/test/test.js b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/test/test.js new file mode 100644 index 000000000000..e8b963a4f1a5 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/test/test.js @@ -0,0 +1,88 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property' ); +var isConfigurableProperty = require( '@stdlib/assert/is-configurable-property' ); +var isWritableProperty = require( '@stdlib/assert/is-writable-property' ); +var setNonEnumerableProperty = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof setNonEnumerableProperty, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function sets a property on a provided object', function test( t ) { + var obj = {}; + setNonEnumerableProperty( obj, 'foo', 'bar' ); + t.equal( obj.foo, 'bar', 'returns expected value' ); + t.end(); +}); + +tape( 'the property is writable', function test( t ) { + var obj; + + obj = {}; + setNonEnumerableProperty( obj, 'foo', 'bar' ); + t.equal( isWritableProperty( obj, 'foo' ), true, 'property is writable' ); + + // The following should not throw... + obj.foo = 'beep'; + + t.end(); +}); + +tape( 'the property is configurable', function test( t ) { + var obj; + + obj = {}; + setNonEnumerableProperty( obj, 'foo', 'bar' ); + + delete obj.foo; + t.equal( obj.foo, void 0, 'returns expected value' ); + + obj = {}; + setNonEnumerableProperty( obj, 'foo', 'bar' ); + t.equal( isConfigurableProperty( obj, 'foo' ), true, 'property is configurable' ); + + // The following should not throw... + defineProperty( obj, 'foo', { + 'configurable': false, + 'enumerable': true, + 'writable': true, + 'value': 'boop' + }); + + t.end(); +}); + +tape( 'the property is not enumerable (in supporting environments; ES5+)', function test( t ) { + var obj = {}; + setNonEnumerableProperty( obj, 'foo', 'bar' ); + t.equal( isNonEnumerableProperty( obj, 'foo' ), true, 'property is not enumerable' ); + t.end(); +}); From 7129ca99279a1c623b5f3e2d1714975d050e4558 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 14:05:50 -0700 Subject: [PATCH 0558/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 3ac70b4fb234..1f6845053fd2 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -279,6 +279,15 @@ setReadOnly( utils, 'deepPluck', require( '@stdlib/utils/deep-pluck' ) ); */ setReadOnly( utils, 'deepSet', require( '@stdlib/utils/deep-set' ) ); +/** +* @name setNonEnumerableProperty +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/define-nonenumerable-property} +*/ +setReadOnly( utils, 'setNonEnumerableProperty', require( '@stdlib/utils/define-nonenumerable-property' ) ); + /** * @name setNonEnumerableReadOnlyAccessor * @memberof utils From e5a5aa7f1a6f5351e5c6162af6efe59636681399 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 14:06:26 -0700 Subject: [PATCH 0559/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/s.js | 14 ++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 9 +++++---- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/s.js b/lib/node_modules/@stdlib/namespace/lib/namespace/s.js index dcde9f2a1049..46e23bb232a9 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/s.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/s.js @@ -166,6 +166,20 @@ ns.push({ ] }); +ns.push({ + 'alias': 'setNonEnumerableProperty', + 'path': '@stdlib/utils/define-nonenumerable-property', + 'value': require( '@stdlib/utils/define-nonenumerable-property' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/define-nonenumerable-read-only-accessor', + '@stdlib/utils/define-nonenumerable-read-only-property', + '@stdlib/utils/define-nonenumerable-read-write-accessor', + '@stdlib/utils/define-nonenumerable-write-only-accessor', + '@stdlib/utils/define-read-only-property' + ] +}); + ns.push({ 'alias': 'setNonEnumerableReadOnly', 'path': '@stdlib/utils/define-nonenumerable-read-only-property', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 2067b099ff43..222874dc8e64 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1558,6 +1558,7 @@ var db = { "SECONDS_IN_WEEK": "wks = 3.14;\nsecs = wks * SECONDS_IN_WEEK\n", "secondsInMonth": "num = secondsInMonth()\nnum = secondsInMonth( 2 )\nnum = secondsInMonth( 2, 2016 )\nnum = secondsInMonth( 2, 2017 )\n\n// Other ways to supply month:\nnum = secondsInMonth( 'feb', 2016 )\nnum = secondsInMonth( 'february', 2016 )\n", "secondsInYear": "num = secondsInYear()\nnum = secondsInYear( 2016 )\nnum = secondsInYear( 2017 )\n", + "setNonEnumerableProperty": "obj = {};\nsetNonEnumerableProperty( obj, 'foo', 'bar' );\nobj.foo\nobjectKeys( obj )\n", "setNonEnumerableReadOnly": "obj = {};\nsetNonEnumerableReadOnly( obj, 'foo', 'bar' );\nobj.foo = 'boop';\nobj\n", "setNonEnumerableReadOnlyAccessor": "obj = {};\nfunction getter() { return 'bar'; };\nsetNonEnumerableReadOnlyAccessor( obj, 'foo', getter );\nobj.foo\n", "setNonEnumerableReadWriteAccessor": "obj = {};\nname = 'bar';\nfunction getter() { return name + ' foo'; };\nfunction setter( v ) { name = v; };\nsetNonEnumerableReadWriteAccessor( obj, 'foo', getter, setter );\nobj.foo\nobj.foo = 'beep';\nobj.foo\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 157c1bbe48a3..0fa141f9c2e6 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1559,10 +1559,11 @@ var db = { "SECONDS_IN_WEEK": "\nSECONDS_IN_WEEK\n Number of seconds in a week.\n\n The value is a generalization and does **not** take into account\n inaccuracies due to daylight savings conventions, crossing timezones, or\n other complications with time and dates.\n\n Examples\n --------\n > var wks = 3.14;\n > var secs = wks * SECONDS_IN_WEEK\n 1899072\n\n", "secondsInMonth": "\nsecondsInMonth( [month[, year]] )\n Returns the number of seconds in a month.\n\n By default, the function returns the number of seconds in the current month\n of the current year (according to local time). To determine the number of\n seconds for a particular month and year, provide `month` and `year`\n arguments.\n\n A `month` may be either a month's integer value, three letter abbreviation,\n or full name (case insensitive).\n\n The function's return value is a generalization and does **not** take into\n account inaccuracies due to daylight savings conventions, crossing\n timezones, or other complications with time and dates.\n\n Parameters\n ----------\n month: string|Date|integer (optional)\n Month.\n\n year: integer (optional)\n Year.\n\n Returns\n -------\n out: integer\n Seconds in a month.\n\n Examples\n --------\n > var num = secondsInMonth()\n \n > num = secondsInMonth( 2 )\n \n > num = secondsInMonth( 2, 2016 )\n 2505600\n > num = secondsInMonth( 2, 2017 )\n 2419200\n\n // Other ways to supply month:\n > num = secondsInMonth( 'feb', 2016 )\n 2505600\n > num = secondsInMonth( 'february', 2016 )\n 2505600\n\n See Also\n --------\n secondsInYear\n", "secondsInYear": "\nsecondsInYear( [value] )\n Returns the number of seconds in a year according to the Gregorian calendar.\n\n By default, the function returns the number of seconds in the current year\n (according to local time). To determine the number of seconds for a\n particular year, provide either a year or a `Date` object.\n\n The function's return value is a generalization and does **not** take into\n account inaccuracies due to daylight savings conventions, crossing\n timezones, or other complications with time and dates.\n\n Parameters\n ----------\n value: integer|Date (optional)\n Year or `Date` object.\n\n Returns\n -------\n out: integer\n Number of seconds in a year.\n\n Examples\n --------\n > var num = secondsInYear()\n \n > num = secondsInYear( 2016 )\n 31622400\n > num = secondsInYear( 2017 )\n 31536000\n\n See Also\n --------\n secondsInMonth\n", - "setNonEnumerableReadOnly": "\nsetNonEnumerableReadOnly( obj, prop, value )\n Defines a non-enumerable read-only property.\n\n Non-enumerable read-only properties are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setNonEnumerableReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n setNonEnumerableReadOnlyAccessor, setNonEnumerableReadWriteAccessor, setNonEnumerableWriteOnlyAccessor, setReadOnly\n", - "setNonEnumerableReadOnlyAccessor": "\nsetNonEnumerableReadOnlyAccessor( obj, prop, getter )\n Defines a non-enumerable read-only accessor.\n\n Non-enumerable read-only accessors are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n Examples\n --------\n > var obj = {};\n > function getter() { return 'bar'; };\n > setNonEnumerableReadOnlyAccessor( obj, 'foo', getter );\n > obj.foo\n 'bar'\n\n See Also\n --------\n setNonEnumerableReadOnly, setNonEnumerableReadWriteAccessor, setNonEnumerableWriteOnlyAccessor, setReadOnlyAccessor\n", - "setNonEnumerableReadWriteAccessor": "\nsetNonEnumerableReadWriteAccessor( obj, prop, getter, setter )\n Defines a non-enumerable property having read-write accessors.\n\n Non-enumerable read-write accessors are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var name = 'bar';\n > function getter() { return name + ' foo'; };\n > function setter( v ) { name = v; };\n > setNonEnumerableReadWriteAccessor( obj, 'foo', getter, setter );\n > obj.foo\n 'bar foo'\n > obj.foo = 'beep';\n > obj.foo\n 'beep foo'\n\n See Also\n --------\n setNonEnumerableReadOnlyAccessor, setNonEnumerableReadOnly, setNonEnumerableWriteOnlyAccessor, setReadWriteAccessor\n", - "setNonEnumerableWriteOnlyAccessor": "\nsetNonEnumerableWriteOnlyAccessor( obj, prop, setter )\n Defines a non-enumerable write-only accessor.\n\n Non-enumerable write-only accessors are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var val = '';\n > function setter( v ) { val = v; };\n > setNonEnumerableWriteOnlyAccessor( obj, 'foo', setter );\n > obj.foo = 'bar';\n > val\n 'bar'\n\n See Also\n --------\n setNonEnumerableReadOnlyAccessor, setNonEnumerableReadOnly, setNonEnumerableReadWriteAccessor, setWriteOnlyAccessor\n", + "setNonEnumerableProperty": "\nsetNonEnumerableProperty( obj, prop, value )\n Defines a non-enumerable property.\n\n Non-enumerable properties are writable and configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setNonEnumerableProperty( obj, 'foo', 'bar' );\n > obj.foo\n 'bar'\n > objectKeys( obj )\n []\n\n See Also\n --------\n setNonEnumerableReadOnlyAccessor, setNonEnumerableReadOnly, setNonEnumerableReadWriteAccessor, setNonEnumerableWriteOnlyAccessor, setReadOnly\n", + "setNonEnumerableReadOnly": "\nsetNonEnumerableReadOnly( obj, prop, value )\n Defines a non-enumerable read-only property.\n\n Non-enumerable read-only properties are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setNonEnumerableReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n setNonEnumerableProperty, setNonEnumerableReadOnlyAccessor, setNonEnumerableReadWriteAccessor, setNonEnumerableWriteOnlyAccessor, setReadOnly\n", + "setNonEnumerableReadOnlyAccessor": "\nsetNonEnumerableReadOnlyAccessor( obj, prop, getter )\n Defines a non-enumerable read-only accessor.\n\n Non-enumerable read-only accessors are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n Examples\n --------\n > var obj = {};\n > function getter() { return 'bar'; };\n > setNonEnumerableReadOnlyAccessor( obj, 'foo', getter );\n > obj.foo\n 'bar'\n\n See Also\n --------\n setNonEnumerableProperty, setNonEnumerableReadOnly, setNonEnumerableReadWriteAccessor, setNonEnumerableWriteOnlyAccessor, setReadOnlyAccessor\n", + "setNonEnumerableReadWriteAccessor": "\nsetNonEnumerableReadWriteAccessor( obj, prop, getter, setter )\n Defines a non-enumerable property having read-write accessors.\n\n Non-enumerable read-write accessors are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var name = 'bar';\n > function getter() { return name + ' foo'; };\n > function setter( v ) { name = v; };\n > setNonEnumerableReadWriteAccessor( obj, 'foo', getter, setter );\n > obj.foo\n 'bar foo'\n > obj.foo = 'beep';\n > obj.foo\n 'beep foo'\n\n See Also\n --------\n setNonEnumerableProperty, setNonEnumerableReadOnlyAccessor, setNonEnumerableReadOnly, setNonEnumerableWriteOnlyAccessor, setReadWriteAccessor\n", + "setNonEnumerableWriteOnlyAccessor": "\nsetNonEnumerableWriteOnlyAccessor( obj, prop, setter )\n Defines a non-enumerable write-only accessor.\n\n Non-enumerable write-only accessors are non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var val = '';\n > function setter( v ) { val = v; };\n > setNonEnumerableWriteOnlyAccessor( obj, 'foo', setter );\n > obj.foo = 'bar';\n > val\n 'bar'\n\n See Also\n --------\n setNonEnumerableProperty, setNonEnumerableReadOnlyAccessor, setNonEnumerableReadOnly, setNonEnumerableReadWriteAccessor, setWriteOnlyAccessor\n", "setReadOnly": "\nsetReadOnly( obj, prop, value )\n Defines a read-only property.\n\n Read-only properties are enumerable and non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n value: any\n Value to set.\n\n Examples\n --------\n > var obj = {};\n > setReadOnly( obj, 'foo', 'bar' );\n > obj.foo = 'boop';\n > obj\n { 'foo': 'bar' }\n\n See Also\n --------\n setReadOnlyAccessor, setReadWriteAccessor, setWriteOnlyAccessor\n", "setReadOnlyAccessor": "\nsetReadOnlyAccessor( obj, prop, getter )\n Defines a read-only accessor.\n\n Read-only accessors are enumerable and non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n Examples\n --------\n > var obj = {};\n > function getter() { return 'bar'; };\n > setReadOnlyAccessor( obj, 'foo', getter );\n > obj.foo\n 'bar'\n\n See Also\n --------\n setReadOnly, setReadWriteAccessor, setWriteOnlyAccessor\n", "setReadWriteAccessor": "\nsetReadWriteAccessor( obj, prop, getter, setter )\n Defines a property having read-write accessors.\n\n Read-write accessors are enumerable and non-configurable.\n\n Parameters\n ----------\n obj: Object\n Object on which to define the property.\n\n prop: string|symbol\n Property name.\n\n getter: Function\n Get accessor.\n\n setter: Function\n Set accessor.\n\n Examples\n --------\n > var obj = {};\n > var name = 'bar';\n > function getter() { return name + ' foo'; };\n > function setter( v ) { name = v; };\n > setReadWriteAccessor( obj, 'foo', getter, setter );\n > obj.foo\n 'bar foo'\n > obj.foo = 'beep';\n > obj.foo\n 'beep foo'\n\n See Also\n --------\n setReadOnly, setReadOnlyAccessor, setWriteOnlyAccessor\n", From b4cf77af52c447c4c958324e5220153ff24a1375 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 14:08:02 -0700 Subject: [PATCH 0560/1062] Use project utility --- .../lib/define_nonenumerable_property.js | 53 ------------------- .../utils/named-typed-tuple/lib/main.js | 2 +- 2 files changed, 1 insertion(+), 54 deletions(-) delete mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_property.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_property.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_property.js deleted file mode 100644 index b9f4d8fa6024..000000000000 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/define_nonenumerable_property.js +++ /dev/null @@ -1,53 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2018 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var defineProperty = require( '@stdlib/utils/define-property' ); - - -// MAIN // - -/** -* Defines a non-enumerable property. -* -* @private -* @param {Object} obj - object on which to define the property -* @param {(string|symbol)} prop - property name -* @param {*} value - value to set -* -* @example -* var obj = {}; -* -* defineNonEnumerableProperty( obj, 'beep', 'boop' ); -*/ -function defineNonEnumerableProperty( obj, prop, value ) { // eslint-disable-line id-length - defineProperty( obj, prop, { - 'configurable': true, - 'enumerable': false, - 'writable': true, - 'value': value - }); -} - - -// EXPORTS // - -module.exports = defineNonEnumerableProperty; diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js index b091244efdcc..f08abcedcbdf 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/lib/main.js @@ -36,6 +36,7 @@ var typedarray = require( '@stdlib/array/typed' ); var Int8Array = require( '@stdlib/array/int8' ); var getDtype = require( '@stdlib/array/dtype' ); var defineProperty = require( '@stdlib/utils/define-property' ); +var setNonEnumerableProperty = require( '@stdlib/utils/define-nonenumerable-property' ); var setNonEnumerableReadOnlyAccessor = require( '@stdlib/utils/define-nonenumerable-read-only-accessor' ); // eslint-disable-line id-length var setNonEnumerableReadWriteAccessor = require( '@stdlib/utils/define-nonenumerable-read-write-accessor' ); // eslint-disable-line id-length var floor = require( '@stdlib/math/base/special/floor' ); @@ -46,7 +47,6 @@ var validate = require( './validate.js' ); var ascending = require( './ascending.js' ); var fromIterator = require( './from_iterator.js' ); var fromIteratorMap = require( './from_iterator_map.js' ); -var setNonEnumerableProperty = require( './define_nonenumerable_property.js' ); // VARIABLES // From 8fa4aaa29b653b2147ab1214e42b8167f835229d Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 14:09:04 -0700 Subject: [PATCH 0561/1062] Fix require path --- .../@stdlib/utils/define-nonenumerable-property/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/define-nonenumerable-property/README.md b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/README.md index 3718dcdba91f..da538d28924b 100644 --- a/lib/node_modules/@stdlib/utils/define-nonenumerable-property/README.md +++ b/lib/node_modules/@stdlib/utils/define-nonenumerable-property/README.md @@ -27,7 +27,7 @@ limitations under the License. ## Usage ```javascript -var setNonEnumerableProperty = require( '@stdlib/utils/define-nonenumerable-property-property' ); +var setNonEnumerableProperty = require( '@stdlib/utils/define-nonenumerable-property' ); ``` #### setNonEnumerableProperty( obj, prop, value ) From 8f30e9e172529172bee0d4e5448e186cb0d06183 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 15:53:44 -0700 Subject: [PATCH 0562/1062] Add utility to list an object's inherited non-enumerable properties --- .../README.md | 187 ++++++++ .../benchmark/benchmark.js | 72 +++ .../docs/repl.txt | 32 ++ .../examples/index.js | 74 +++ .../lib/index.js | 39 ++ .../lib/main.js | 106 +++++ .../package.json | 74 +++ .../test/test.js | 439 ++++++++++++++++++ 8 files changed, 1023 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/README.md create mode 100644 lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/package.json create mode 100644 lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/test/test.js diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/README.md b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/README.md new file mode 100644 index 000000000000..82fe30ac258e --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/README.md @@ -0,0 +1,187 @@ + + +# inheritedNonEnumerableProperties + +> Return an array of an object's inherited non-enumerable property names and [symbols][@stdlib/symbol/ctor]. + +
+ +## Usage + + + +```javascript +var inheritedNonEnumerableProperties = require( '@stdlib/utils/inherited-nonenumerable-properties' ); +``` + +#### inheritedNonEnumerableProperties( obj\[, level] ) + +Returns an `array` of an object's inherited non-enumerable property names and [symbols][@stdlib/symbol/ctor]. + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +function Foo() { + this.a = 'b'; + return this; +} + +defineProperty( Foo.prototype, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); + +var f = new Foo(); +var props = inheritedNonEnumerableProperties( f ); +// e.g., returns [ 'beep', ... ] +``` + +By default, the function walks an object's entire prototype chain. To limit the inheritance level, provide a `level` argument. + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var inherit = require( '@stdlib/utils/inherit' ); + +function Bar() { + return this; +} + +defineProperty( Bar.prototype, 'boop', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'beep' +}); + +function Foo() { + Bar.call( this ); + this.a = 'b'; + return this; +} + +inherit( Foo, Bar ); + +defineProperty( Foo.prototype, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' +}); + +var f = new Foo(); +var pros = inheritedNonEnumerableProperties( f, 1 ); +// e.g., returns [ 'beep', ... ] +``` + +
+ + + +
+ +## Notes + +- Property order is not guaranteed, as `object` property enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s properties, thus allowing for deterministic extraction. + +
+ + + +
+ +## Examples + + + + + +```javascript +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var inheritedNonEnumerableProperties = require( '@stdlib/utils/inherited-nonenumerable-properties' ); + +var hasSymbols = hasSymbolSupport(); +var props; +var obj; + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'b'; + defineProperty( this, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' + }); + } + return this; +} + +Foo.prototype.c = 'd'; +defineProperty( Foo.prototype, 'bip', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' +}); +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'c' ) ] = 'd'; + defineProperty( Foo.prototype, Symbol( 'e' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'f' + }); +} + +obj = new Foo(); +props = inheritedNonEnumerableProperties( obj ); + +console.log( props ); +// e.g., => [ 'bip', ... ] +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/benchmark/benchmark.js new file mode 100644 index 000000000000..0e05fe1758f5 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var inheritedNonEnumerableProperties = require( './../lib' ); // eslint-disable-line id-length + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = inheritedNonEnumerableProperties( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/docs/repl.txt b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/docs/repl.txt new file mode 100644 index 000000000000..220c58da5b80 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/docs/repl.txt @@ -0,0 +1,32 @@ + +{{alias}}( value[, level] ) + Returns an array of an object's inherited non-enumerable property names and + symbols. + + Property order is not guaranteed, as object property enumeration is not + specified according to the ECMAScript specification. In practice, however, + most engines use insertion order to sort an object's properties, thus + allowing for deterministic extraction. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + level: integer (optional) + Inheritance level. + + Returns + ------- + props: Array + List of an object's inherited non-enumerable properties. + + Examples + -------- + > var props = {{alias}}( {} ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/examples/index.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/examples/index.js new file mode 100644 index 000000000000..6cc83b06ae56 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/examples/index.js @@ -0,0 +1,74 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var inheritedNonEnumerableProperties = require( './../lib' ); // eslint-disable-line id-length + +var hasSymbols = hasSymbolSupport(); +var props; +var obj; + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'b'; + defineProperty( this, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' + }); + } + return this; +} + +Foo.prototype.c = 'd'; +defineProperty( Foo.prototype, 'bip', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' +}); +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'c' ) ] = 'd'; + defineProperty( Foo.prototype, Symbol( 'e' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'f' + }); +} + +obj = new Foo(); +props = inheritedNonEnumerableProperties( obj ); + +console.log( props ); +// e.g., => [ 'bip', ... ] diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/lib/index.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/lib/index.js new file mode 100644 index 000000000000..ac1ae3515c92 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/lib/index.js @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's inherited non-enumerable property names and symbols. +* +* @module @stdlib/utils/inherited-nonenumerable-properties +* +* @example +* var inheritedNonEnumerableProperties = require( '@stdlib/utils/inherited-nonenumerable-properties' ); +* +* var props = inheritedNonEnumerableProperties( [] ); +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/lib/main.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/lib/main.js new file mode 100644 index 000000000000..d5caed039053 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/lib/main.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var MAX_SAFE_INTEGER = require( '@stdlib/constants/math/float64-max-safe-integer' ); +var isPositiveInteger = require( '@stdlib/assert/is-positive-integer' ).isPrimitive; +var isNonEnumerableProperty = require( '@stdlib/assert/is-nonenumerable-property' ); +var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); +var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); + + +// MAIN // + +/** +* Returns an array of an object's inherited non-enumerable property names and symbols. +* +* @param {*} value - input object +* @param {PositiveInteger} [level] - inheritance level +* @throws {TypeError} second argument must be a positive integer +* @returns {Array} a list of inherited non-enumerable property names and symbols +* +* @example +* var props = inheritedNonEnumerableProperties( {} ); +*/ +function inheritedNonEnumerableProperties( value, level ) { // eslint-disable-line id-length + var props; + var cache; + var obj; + var tmp; + var N; + var n; + var k; + var i; + + if ( arguments.length > 1 ) { + if ( !isPositiveInteger( level ) ) { + throw new TypeError( 'invalid argument. Second argument must be a positive integer. Value: `' + level + '`.' ); + } + N = level; + } else { + N = MAX_SAFE_INTEGER; + } + if ( value === null || value === void 0 ) { + return []; + } + // Get the value's prototype: + obj = getPrototypeOf( value ); + + // Walk the prototype chain collecting non-enumerable properties... + props = []; + cache = {}; + n = 1; + while ( obj && n <= N ) { + tmp = getOwnPropertyNames( obj ); + for ( i = 0; i < tmp.length; i++ ) { + k = tmp[ i ]; + if ( + hasOwnProp( cache, k ) === false && + isNonEnumerableProperty( obj, k ) + ) { + props.push( k ); + } + cache[ k ] = true; + } + tmp = getOwnPropertySymbols( obj ); + for ( i = 0; i < tmp.length; i++ ) { + k = tmp[ i ]; + if ( + hasOwnProp( cache, k ) === false && + isNonEnumerableProperty( obj, k ) + ) { + props.push( k ); + } + cache[ k ] = true; + } + obj = getPrototypeOf( obj ); + n += 1; + } + + return props; +} + + +// EXPORTS // + +module.exports = inheritedNonEnumerableProperties; diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/package.json b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/package.json new file mode 100644 index 000000000000..b16d8e553b3f --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/package.json @@ -0,0 +1,74 @@ +{ + "name": "@stdlib/utils/inherited-nonenumerable-properties", + "version": "0.0.0", + "description": "Return an array of an object's inherited non-enumerable property names and symbols.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "names", + "keys", + "keys-in", + "symbols", + "syms", + "symbols-in", + "enumerable", + "nonenumerable", + "non-enumerable", + "hidden", + "inherited", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/test/test.js b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/test/test.js new file mode 100644 index 000000000000..43857b8d0dae --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-nonenumerable-properties/test/test.js @@ -0,0 +1,439 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var inherit = require( '@stdlib/utils/inherit' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var inheritedNonEnumerableProperties = require( './../lib' ); // eslint-disable-line id-length + + +// VARIABLES // + +var hasSymbols = hasSymbolSupport(); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof inheritedNonEnumerableProperties, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function throws an error if not provided a positive integer for the inheritance level', function test( t ) { + var values; + var i; + + values = [ + '5', + -5, + 0, + 3.14, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + inheritedNonEnumerableProperties( {}, value ); + }; + } +}); + +tape( 'the function returns an array of an object\'s inherited non-enumerable properties', function test( t ) { + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + syms = [ + Symbol( 'a' ), + Symbol( 'b' ), + Symbol( 'c' ), + Symbol( 'd' ) + ]; + } else { + syms = []; + } + + function Foo() { + this.a = 'a'; + this.b = 'b'; + defineProperty( this, 'c', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'c' + }); + defineProperty( this, 'f', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'f' + }); + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'a'; + defineProperty( this, syms[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; + } + + Foo.prototype.d = 'd'; + defineProperty( Foo.prototype, 'e', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + Foo.prototype.f = 'f'; + if ( hasSymbols ) { + Foo.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Foo.prototype, syms[ 3 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + } + + obj = new Foo(); + + expected = [ 'e' ]; + if ( hasSymbols ) { + expected.push( syms[ 3 ] ); + } + actual = inheritedNonEnumerableProperties( obj ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s inherited non-enumerable properties (multiple inheritance)', function test( t ) { + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + syms = [ + Symbol( 'a' ), + Symbol( 'b' ), + Symbol( 'c' ), + Symbol( 'd' ), + Symbol( 'e' ), + Symbol( 'f' ) + ]; + } else { + syms = []; + } + + function Bar() { + this.a = 'a'; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'd' + }); + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'a'; + } + return this; + } + + Bar.prototype.b = 'b'; + Bar.prototype.c = 'c'; + defineProperty( Bar.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + defineProperty( Bar.prototype, 'f', { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'f' + }); + if ( hasSymbols ) { + defineProperty( Bar.prototype, syms[ 2 ], { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'c' + }); + defineProperty( Bar.prototype, syms[ 3 ], { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + defineProperty( Bar.prototype, syms[ 4 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + } + + function Foo() { + Bar.call( this ); + this.a = 'a'; + this.b = 'b'; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'd' + }); + if ( hasSymbols ) { + defineProperty( this, syms[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.b = 'b'; + defineProperty( Foo.prototype, 'e', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + defineProperty( Foo.prototype, 'f', { + 'configurable': true, + 'enumerable': true, + 'writable': false, + 'value': 'f' + }); + if ( hasSymbols ) { + defineProperty( Foo.prototype, syms[ 2 ], { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'c' + }); + defineProperty( Foo.prototype, syms[ 3 ], { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + defineProperty( Foo.prototype, syms[ 5 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'f' + }); + } + + obj = new Foo(); + + expected = [ 'e', 'd' ]; + if ( hasSymbols ) { + expected.push( syms[ 3 ], syms[ 4 ], syms[ 5 ] ); + } + actual = inheritedNonEnumerableProperties( obj ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + idx = indexOf( actual, 'f' ); + t.strictEqual( idx, -1, 'does not contain property' ); + if ( hasSymbols ) { + idx = indexOf( actual, syms[ 2 ] ); + t.strictEqual( idx, -1, 'does not contain property' ); + } + t.end(); +}); + +tape( 'the function supports limiting the inheritance level', function test( t ) { + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + syms = [ + Symbol( 'a' ), + Symbol( 'b' ), + Symbol( 'c' ), + Symbol( 'd' ), + Symbol( 'e' ) + ]; + } else { + syms = []; + } + + function Bar() { + this.boop = 'beep'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'a'; + } + return this; + } + + Bar.prototype.bar = [ 'foo' ]; + defineProperty( Bar.prototype, 'bap', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'baz' + }); + if ( hasSymbols ) { + Bar.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Bar.prototype, syms[ 3 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + } + + function Foo() { + Bar.call( this ); + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + if ( hasSymbols ) { + defineProperty( this, syms[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + if ( hasSymbols ) { + Foo.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Foo.prototype, syms[ 4 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + } + + obj = new Foo(); + + expected = [ 'baz' ]; + if ( hasSymbols ) { + expected.push( syms[ 4 ] ); + } + actual = inheritedNonEnumerableProperties( obj, 1 ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + idx = indexOf( actual, 'bap' ); + t.strictEqual( idx === -1, true, 'does not contain property' ); + if ( hasSymbols ) { + idx = indexOf( actual, syms[ 3 ] ); + t.strictEqual( idx === -1, true, 'does not contain property' ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = inheritedNonEnumerableProperties( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From 9da50399afbd47817eb5b727353565ee03b531c9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 15:56:02 -0700 Subject: [PATCH 0563/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index 1f6845053fd2..e9e4b73f8c9d 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -864,6 +864,15 @@ setReadOnly( utils, 'inheritedEnumerablePropertySymbols', require( '@stdlib/util */ setReadOnly( utils, 'inheritedKeys', require( '@stdlib/utils/inherited-keys' ) ); +/** +* @name inheritedNonEnumerableProperties +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/inherited-nonenumerable-properties} +*/ +setReadOnly( utils, 'inheritedNonEnumerableProperties', require( '@stdlib/utils/inherited-nonenumerable-properties' ) ); + /** * @name inheritedNonEnumerablePropertyNames * @memberof utils From f4f10772e3f515a3bd450b746b5bc73f42282d8f Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 15:59:07 -0700 Subject: [PATCH 0564/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 18 ++++++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 9 +++++---- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index ab0b87023269..70d555ed90c1 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -1378,12 +1378,29 @@ ns.push({ ] }); +ns.push({ + 'alias': 'inheritedNonEnumerableProperties', + 'path': '@stdlib/utils/inherited-nonenumerable-properties', + 'value': require( '@stdlib/utils/inherited-nonenumerable-properties' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/inherited-enumerable-properties', + '@stdlib/utils/inherited-nonenumerable-property-names', + '@stdlib/utils/inherited-nonenumerable-property-symbols', + '@stdlib/utils/inherited-keys', + '@stdlib/utils/nonenumerable-properties', + '@stdlib/utils/nonenumerable-properties-in', + '@stdlib/utils/properties' + ] +}); + ns.push({ 'alias': 'inheritedNonEnumerablePropertyNames', 'path': '@stdlib/utils/inherited-nonenumerable-property-names', 'value': require( '@stdlib/utils/inherited-nonenumerable-property-names' ), 'type': 'Function', 'related': [ + '@stdlib/utils/inherited-nonenumerable-properties', '@stdlib/utils/inherited-nonenumerable-property-symbols', '@stdlib/utils/keys', '@stdlib/utils/nonenumerable-property-names', @@ -1399,6 +1416,7 @@ ns.push({ 'value': require( '@stdlib/utils/inherited-nonenumerable-property-symbols' ), 'type': 'Function', 'related': [ + '@stdlib/utils/inherited-nonenumerable-properties', '@stdlib/utils/inherited-nonenumerable-property-names', '@stdlib/utils/nonenumerable-properties', '@stdlib/utils/nonenumerable-property-names', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 222874dc8e64..f01fdd64a974 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1106,6 +1106,7 @@ var db = { "inherit": "\n// Create a parent constructor:\nfunction Foo() { return this; };\nFoo.prototype.beep = function beep() { return 'boop'; };\n\n// Create a child constructor:\nfunction Bar() { Foo.call( this ); return this; };\n\n// Setup inheritance:\ninherit( Bar, Foo );\nbar = new Bar();\nv = bar.beep()\n", "inheritedEnumerablePropertySymbols": "symbols = inheritedEnumerablePropertySymbols( [] )\n", "inheritedKeys": "keys = inheritedKeys( {} )\n", + "inheritedNonEnumerableProperties": "props = inheritedNonEnumerableProperties( {} )\n", "inheritedNonEnumerablePropertyNames": "keys = inheritedNonEnumerablePropertyNames( {} )\n", "inheritedNonEnumerablePropertySymbols": "symbols = inheritedNonEnumerablePropertySymbols( [] )\n", "inheritedProperties": "symbols = inheritedProperties( [] )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 0fa141f9c2e6..b32b0eee01f0 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1106,8 +1106,9 @@ var db = { "inherit": "\ninherit( ctor, superCtor )\n Prototypical inheritance by replacing the prototype of one constructor with\n the prototype of another constructor.\n\n This function is not designed to work with ES2015/ES6 classes. For\n ES2015/ES6 classes, use `class` with `extends`.\n\n Parameters\n ----------\n ctor: Object|Function\n Constructor which will inherit.\n\n superCtor: Object|Function\n Super (parent) constructor.\n\n Returns\n -------\n out: Object|Function\n Child constructor.\n\n Examples\n --------\n // Create a parent constructor:\n > function Foo() { return this; };\n > Foo.prototype.beep = function beep() { return 'boop'; };\n\n // Create a child constructor:\n > function Bar() { Foo.call( this ); return this; };\n\n // Setup inheritance:\n > inherit( Bar, Foo );\n > var bar = new Bar();\n > var v = bar.beep()\n 'boop'\n\n", "inheritedEnumerablePropertySymbols": "\ninheritedEnumerablePropertySymbols( value[, level] )\n Returns an array of an object's inherited enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited enumerable symbol properties.\n\n Examples\n --------\n > var symbols = inheritedEnumerablePropertySymbols( [] )\n\n See Also\n --------\n enumerableProperties, enumerablePropertySymbols, inheritedKeys, nonEnumerablePropertySymbols, nonEnumerablePropertySymbolsIn, propertySymbols\n", "inheritedKeys": "\ninheritedKeys( value[, level] )\n Returns an array of an object's inherited enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable property names.\n\n Examples\n --------\n > var keys = inheritedKeys( {} )\n\n See Also\n --------\n objectKeys, keysIn, inheritedPropertyNames, inheritedPropertySymbols\n", - "inheritedNonEnumerablePropertyNames": "\ninheritedNonEnumerablePropertyNames( value[, level] )\n Returns an array of an object's inherited non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited non-enumerable property names.\n\n Examples\n --------\n > var keys = inheritedNonEnumerablePropertyNames( {} )\n\n See Also\n --------\n inheritedNonEnumerablePropertySymbols, objectKeys, nonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertyNames\n", - "inheritedNonEnumerablePropertySymbols": "\ninheritedNonEnumerablePropertySymbols( value[, level] )\n Returns an array of an object's inherited non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited non-enumerable symbol properties.\n\n Examples\n --------\n > var symbols = inheritedNonEnumerablePropertySymbols( [] )\n\n See Also\n --------\n inheritedNonEnumerablePropertyNames, nonEnumerableProperties, nonEnumerablePropertyNames, nonEnumerablePropertySymbols, nonEnumerablePropertySymbolsIn, propertySymbols\n", + "inheritedNonEnumerableProperties": "\ninheritedNonEnumerableProperties( value[, level] )\n Returns an array of an object's inherited non-enumerable property names and\n symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n props: Array\n List of an object's inherited non-enumerable properties.\n\n Examples\n --------\n > var props = inheritedNonEnumerableProperties( {} )\n\n See Also\n --------\n inheritedNonEnumerablePropertyNames, inheritedNonEnumerablePropertySymbols, inheritedKeys, nonEnumerableProperties, nonEnumerablePropertiesIn, properties\n", + "inheritedNonEnumerablePropertyNames": "\ninheritedNonEnumerablePropertyNames( value[, level] )\n Returns an array of an object's inherited non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited non-enumerable property names.\n\n Examples\n --------\n > var keys = inheritedNonEnumerablePropertyNames( {} )\n\n See Also\n --------\n inheritedNonEnumerableProperties, inheritedNonEnumerablePropertySymbols, objectKeys, nonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertyNames\n", + "inheritedNonEnumerablePropertySymbols": "\ninheritedNonEnumerablePropertySymbols( value[, level] )\n Returns an array of an object's inherited non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited non-enumerable symbol properties.\n\n Examples\n --------\n > var symbols = inheritedNonEnumerablePropertySymbols( [] )\n\n See Also\n --------\n inheritedNonEnumerableProperties, inheritedNonEnumerablePropertyNames, nonEnumerableProperties, nonEnumerablePropertyNames, nonEnumerablePropertySymbols, nonEnumerablePropertySymbolsIn, propertySymbols\n", "inheritedProperties": "\ninheritedProperties( value[, level] )\n Returns an array of an object's inherited property names and symbols.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited property names and symbols.\n\n Examples\n --------\n > var symbols = inheritedProperties( [] )\n\n See Also\n --------\n properties, propertiesIn, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedPropertyDescriptor": "\ninheritedPropertyDescriptor( value, property[, level] )\n Returns a property descriptor for an object's inherited property.\n\n If provided `null` or `undefined` or provided a non-existent property, the\n function returns `null`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n property: string|symbol\n Property name.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n desc: Object|null\n Property descriptor.\n\n Examples\n --------\n > var desc = inheritedPropertyDescriptor( {}, 'toString' )\n {...}\n\n See Also\n --------\n propertyDescriptor, propertyDescriptorIn, inheritedKeys, inheritedPropertyDescriptors, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedPropertyDescriptors": "\ninheritedPropertyDescriptors( value[, level] )\n Returns an object's inherited property descriptors.\n\n If provided `null` or `undefined`, the function returns an empty object.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n desc: Object\n An object's inherited property descriptors.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var desc = inheritedPropertyDescriptors( obj )\n { 'foo': {...}, ... }\n\n See Also\n --------\n propertyDescriptors, propertyDescriptorsIn, inheritedKeys, inheritedPropertyNames, inheritedPropertySymbols\n", @@ -1384,8 +1385,8 @@ var db = { "noneByAsync": "\nnoneByAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > noneByAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByAsync, everyByAsync, forEachAsync, noneBy, noneByRightAsync, someByAsync\n", "noneByRight": "\nnoneByRight( collection, predicate[, thisArg ] )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n The predicate function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n The function immediately returns upon encountering a truthy return value.\n\n If provided an empty collection, the function returns `true`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n predicate: Function\n The test function.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n bool: boolean\n The function returns `true` if the predicate function returns a falsy\n value for all elements; otherwise, the function returns `false`.\n\n Examples\n --------\n > function positive( v ) { return ( v > 0 ); };\n > var arr = [ -1, -2, -3, -4 ];\n > var bool = noneByRight( arr, positive )\n true\n\n See Also\n --------\n anyByRight, everyByRight, forEachRight, none, noneBy, someByRight\n", "noneByRightAsync": "\nnoneByRightAsync( collection, [options,] predicate, done )\n Tests whether all elements in a collection fail a test implemented by a\n predicate function, iterating from right to left.\n\n When invoked, the predicate function is provided a maximum of four\n arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If the\n predicate function accepts two arguments, the predicate function is\n provided:\n\n - `value`\n - `next`\n\n If the predicate function accepts three arguments, the predicate function is\n provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other predicate function signature, the predicate function is\n provided all four arguments.\n\n The `next` callback takes two arguments:\n\n - `error`: error argument\n - `result`: test result\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n The function immediately returns upon encountering a truthy `result` value\n and calls the `done` callback with `null` as the first argument and `false`\n as the second argument.\n\n If all elements fail, the function calls the `done` callback with `null` as\n the first argument and `true` as the second argument.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, predicate, done )\n 1000\n 2500\n 3000\n true\n\n // Limit number of concurrent invocations:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 2500\n 3000\n 1000\n true\n\n // Process sequentially:\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 1000, 2500, 3000 ];\n > noneByRightAsync( arr, opts, predicate, done )\n 3000\n 2500\n 1000\n true\n\n\nnoneByRightAsync.factory( [options,] predicate )\n Returns a function which tests whether all elements in a collection fail a\n test implemented by a predicate function, iterating from right to left.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n predicate: Function\n The test function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which tests each element in a collection.\n\n Examples\n --------\n > function predicate( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next( null, false );\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = noneByRightAsync.factory( opts, predicate );\n > function done( error, bool ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( bool );\n ... };\n > var arr = [ 1000, 2500, 3000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n true\n > arr = [ 1000, 1500, 2000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n true\n\n See Also\n --------\n anyByRightAsync, everyByRightAsync, forEachRightAsync, noneByAsync, noneByRight, someByRightAsync\n", - "nonEnumerableProperties": "\nnonEnumerableProperties( value )\n Returns an array of an object's own non-enumerable property names and\n symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own non-enumerable properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var props = nonEnumerableProperties( obj )\n [ 'beep' ]\n\n See Also\n --------\n enumerableProperties, nonEnumerablePropertiesIn, properties\n", - "nonEnumerablePropertiesIn": "\nnonEnumerablePropertiesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names and symbols.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own and inherited non-enumerable property names and\n symbols.\n\n Examples\n --------\n > var props = nonEnumerablePropertiesIn( [] )\n\n See Also\n --------\n enumerablePropertiesIn, nonEnumerableProperties, propertiesIn\n", + "nonEnumerableProperties": "\nnonEnumerableProperties( value )\n Returns an array of an object's own non-enumerable property names and\n symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own non-enumerable properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = false;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var props = nonEnumerableProperties( obj )\n [ 'beep' ]\n\n See Also\n --------\n enumerableProperties, inheritedNonEnumerableProperties, nonEnumerablePropertiesIn, properties\n", + "nonEnumerablePropertiesIn": "\nnonEnumerablePropertiesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names and symbols.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own and inherited non-enumerable property names and\n symbols.\n\n Examples\n --------\n > var props = nonEnumerablePropertiesIn( [] )\n\n See Also\n --------\n enumerablePropertiesIn, inheritedNonEnumerableProperties, nonEnumerableProperties, propertiesIn\n", "nonEnumerablePropertyNames": "\nnonEnumerablePropertyNames( value )\n Returns an array of an object's own non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNames( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n objectKeys, inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbolsIn, propertyNames\n", "nonEnumerablePropertyNamesIn": "\nnonEnumerablePropertyNamesIn( value )\n Returns an array of an object's own and inherited non-enumerable property\n names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n keys: Array\n List of an object's own and inherited non-enumerable property names.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > defineProperty( obj, 'beep', desc );\n > var keys = nonEnumerablePropertyNamesIn( obj )\n e.g., [ 'beep', ... ]\n\n See Also\n --------\n keysIn, inheritedNonEnumerablePropertyNames, nonEnumerablePropertyNames, propertyNamesIn\n", "nonEnumerablePropertySymbols": "\nnonEnumerablePropertySymbols( value )\n Returns an array of an object's own non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own non-enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = false;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = nonEnumerablePropertySymbols( obj )\n\n See Also\n --------\n enumerablePropertySymbols, inheritedNonEnumerablePropertySymbols, nonEnumerablePropertyNames, nonEnumerablePropertySymbolsIn, propertySymbols\n", From df65045e46ef07311e9318dc287f04ad096b1acd Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 16:22:25 -0700 Subject: [PATCH 0565/1062] Add utility to list an object's inherited enumerable properties --- .../inherited-enumerable-properties/README.md | 171 +++++++ .../benchmark/benchmark.js | 72 +++ .../docs/repl.txt | 32 ++ .../examples/index.js | 74 +++ .../lib/index.js | 39 ++ .../lib/main.js | 106 +++++ .../package.json | 74 +++ .../test/test.js | 439 ++++++++++++++++++ 8 files changed, 1007 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/inherited-enumerable-properties/README.md create mode 100644 lib/node_modules/@stdlib/utils/inherited-enumerable-properties/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-enumerable-properties/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/inherited-enumerable-properties/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-enumerable-properties/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-enumerable-properties/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/inherited-enumerable-properties/package.json create mode 100644 lib/node_modules/@stdlib/utils/inherited-enumerable-properties/test/test.js diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/README.md b/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/README.md new file mode 100644 index 000000000000..9cff1c35e5c6 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/README.md @@ -0,0 +1,171 @@ + + +# inheritedEnumerableProperties + +> Return an array of an object's inherited enumerable property names and [symbols][@stdlib/symbol/ctor]. + +
+ +## Usage + + + +```javascript +var inheritedEnumerableProperties = require( '@stdlib/utils/inherited-enumerable-properties' ); +``` + +#### inheritedEnumerableProperties( obj\[, level] ) + +Returns an `array` of an object's inherited enumerable property names and [symbols][@stdlib/symbol/ctor]. + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); + +function Foo() { + this.a = 'b'; + return this; +} + +Foo.prototype.beep = 'boop'; + +var f = new Foo(); +var props = inheritedEnumerableProperties( f ); +// returns [ 'beep' ] +``` + +By default, the function walks an object's entire prototype chain. To limit the inheritance level, provide a `level` argument. + +```javascript +var defineProperty = require( '@stdlib/utils/define-property' ); +var inherit = require( '@stdlib/utils/inherit' ); + +function Bar() { + return this; +} + +Bar.prototype.boop = 'beep'; + +function Foo() { + Bar.call( this ); + this.a = 'b'; + return this; +} + +inherit( Foo, Bar ); +Foo.prototype.beep = 'boop'; + +var f = new Foo(); +var pros = inheritedEnumerableProperties( f, 1 ); +// returns [ 'beep' ] +``` + +
+ + + +
+ +## Notes + +- Property order is not guaranteed, as `object` property enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s properties, thus allowing for deterministic extraction. + +
+ + + +
+ +## Examples + + + + + +```javascript +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var inheritedEnumerableProperties = require( '@stdlib/utils/inherited-enumerable-properties' ); + +var hasSymbols = hasSymbolSupport(); +var props; +var obj; + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'b'; + defineProperty( this, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' + }); + } + return this; +} + +Foo.prototype.c = 'd'; +defineProperty( Foo.prototype, 'bip', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' +}); +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'c' ) ] = 'd'; + defineProperty( Foo.prototype, Symbol( 'e' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'f' + }); +} + +obj = new Foo(); +props = inheritedEnumerableProperties( obj ); + +console.log( props ); +// e.g., => [ 'c', ... ] +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/benchmark/benchmark.js b/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/benchmark/benchmark.js new file mode 100644 index 000000000000..a74b994208b1 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/benchmark/benchmark.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArray = require( '@stdlib/assert/is-array' ); +var randu = require( '@stdlib/random/base/randu' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var pkg = require( './../package.json' ).name; +var inheritedEnumerableProperties = require( './../lib' ); // eslint-disable-line id-length + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var obj; + var i; + + function Foo() { + this.a = 'beep'; + this.b = 'boop'; + this.c = [ 1, 2, 3 ]; + this.d = {}; + this.e = null; + this.f = randu(); + defineProperty( this, 'g', { + 'value': 'bar', + 'configurable': true, + 'writable': true, + 'enumerable': false + }); + return this; + } + + Foo.prototype.h = [ 'foo' ]; + + obj = new Foo(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + obj.f = randu(); + out = inheritedEnumerableProperties( obj ); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + } + b.toc(); + if ( !isArray( out ) ) { + b.fail( 'should return an array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/docs/repl.txt b/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/docs/repl.txt new file mode 100644 index 000000000000..9df74601ce40 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/docs/repl.txt @@ -0,0 +1,32 @@ + +{{alias}}( value[, level] ) + Returns an array of an object's inherited enumerable property names and + symbols. + + Property order is not guaranteed, as object property enumeration is not + specified according to the ECMAScript specification. In practice, however, + most engines use insertion order to sort an object's properties, thus + allowing for deterministic extraction. + + If provided `null` or `undefined`, the function returns an empty array. + + Parameters + ---------- + value: any + Input value. + + level: integer (optional) + Inheritance level. + + Returns + ------- + props: Array + List of an object's inherited enumerable properties. + + Examples + -------- + > var props = {{alias}}( {} ) + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/examples/index.js b/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/examples/index.js new file mode 100644 index 000000000000..df3139b3c297 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/examples/index.js @@ -0,0 +1,74 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var inheritedEnumerableProperties = require( './../lib' ); // eslint-disable-line id-length + +var hasSymbols = hasSymbolSupport(); +var props; +var obj; + +function Foo() { + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'qux' + }); + if ( hasSymbols ) { + this[ Symbol( 'a' ) ] = 'b'; + defineProperty( this, 'beep', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'boop' + }); + } + return this; +} + +Foo.prototype.c = 'd'; +defineProperty( Foo.prototype, 'bip', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bop' +}); +if ( hasSymbols ) { + Foo.prototype[ Symbol( 'c' ) ] = 'd'; + defineProperty( Foo.prototype, Symbol( 'e' ), { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'f' + }); +} + +obj = new Foo(); +props = inheritedEnumerableProperties( obj ); + +console.log( props ); +// e.g., => [ 'c', ... ] diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/lib/index.js b/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/lib/index.js new file mode 100644 index 000000000000..40575d2ad2fd --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/lib/index.js @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return an array of an object's inherited enumerable property names and symbols. +* +* @module @stdlib/utils/inherited-enumerable-properties +* +* @example +* var inheritedEnumerableProperties = require( '@stdlib/utils/inherited-enumerable-properties' ); +* +* var props = inheritedEnumerableProperties( [] ); +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/lib/main.js b/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/lib/main.js new file mode 100644 index 000000000000..4294ace6ae9d --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/lib/main.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var MAX_SAFE_INTEGER = require( '@stdlib/constants/math/float64-max-safe-integer' ); +var isPositiveInteger = require( '@stdlib/assert/is-positive-integer' ).isPrimitive; +var isEnumerableProperty = require( '@stdlib/assert/is-enumerable-property' ); +var getOwnPropertyNames = require( '@stdlib/utils/property-names' ); +var getOwnPropertySymbols = require( '@stdlib/utils/property-symbols' ); +var getPrototypeOf = require( '@stdlib/utils/get-prototype-of' ); +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); + + +// MAIN // + +/** +* Returns an array of an object's inherited enumerable property names and symbols. +* +* @param {*} value - input object +* @param {PositiveInteger} [level] - inheritance level +* @throws {TypeError} second argument must be a positive integer +* @returns {Array} a list of inherited enumerable property names and symbols +* +* @example +* var props = inheritedEnumerableProperties( {} ); +*/ +function inheritedEnumerableProperties( value, level ) { // eslint-disable-line id-length + var props; + var cache; + var obj; + var tmp; + var N; + var n; + var k; + var i; + + if ( arguments.length > 1 ) { + if ( !isPositiveInteger( level ) ) { + throw new TypeError( 'invalid argument. Second argument must be a positive integer. Value: `' + level + '`.' ); + } + N = level; + } else { + N = MAX_SAFE_INTEGER; + } + if ( value === null || value === void 0 ) { + return []; + } + // Get the value's prototype: + obj = getPrototypeOf( value ); + + // Walk the prototype chain collecting enumerable properties... + props = []; + cache = {}; + n = 1; + while ( obj && n <= N ) { + tmp = getOwnPropertyNames( obj ); + for ( i = 0; i < tmp.length; i++ ) { + k = tmp[ i ]; + if ( + hasOwnProp( cache, k ) === false && + isEnumerableProperty( obj, k ) + ) { + props.push( k ); + } + cache[ k ] = true; + } + tmp = getOwnPropertySymbols( obj ); + for ( i = 0; i < tmp.length; i++ ) { + k = tmp[ i ]; + if ( + hasOwnProp( cache, k ) === false && + isEnumerableProperty( obj, k ) + ) { + props.push( k ); + } + cache[ k ] = true; + } + obj = getPrototypeOf( obj ); + n += 1; + } + + return props; +} + + +// EXPORTS // + +module.exports = inheritedEnumerableProperties; diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/package.json b/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/package.json new file mode 100644 index 000000000000..337772eec133 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/package.json @@ -0,0 +1,74 @@ +{ + "name": "@stdlib/utils/inherited-enumerable-properties", + "version": "0.0.0", + "description": "Return an array of an object's inherited enumerable property names and symbols.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdutils", + "stdutil", + "utilities", + "utility", + "utils", + "util", + "object", + "obj", + "names", + "keys", + "keys-in", + "symbols", + "syms", + "symbols-in", + "enumerable", + "nonenumerable", + "non-enumerable", + "hidden", + "inherited", + "properties", + "props" + ] +} diff --git a/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/test/test.js b/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/test/test.js new file mode 100644 index 000000000000..cdbb52384048 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/inherited-enumerable-properties/test/test.js @@ -0,0 +1,439 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var indexOf = require( '@stdlib/utils/index-of' ); +var defineProperty = require( '@stdlib/utils/define-property' ); +var inherit = require( '@stdlib/utils/inherit' ); +var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); +var Symbol = require( '@stdlib/symbol/ctor' ); +var inheritedEnumerableProperties = require( './../lib' ); // eslint-disable-line id-length + + +// VARIABLES // + +var hasSymbols = hasSymbolSupport(); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof inheritedEnumerableProperties, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function throws an error if not provided a positive integer for the inheritance level', function test( t ) { + var values; + var i; + + values = [ + '5', + -5, + 0, + 3.14, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + inheritedEnumerableProperties( {}, value ); + }; + } +}); + +tape( 'the function returns an array of an object\'s inherited enumerable properties', function test( t ) { + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + syms = [ + Symbol( 'a' ), + Symbol( 'b' ), + Symbol( 'c' ), + Symbol( 'd' ) + ]; + } else { + syms = []; + } + + function Foo() { + this.a = 'a'; + this.b = 'b'; + defineProperty( this, 'c', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'c' + }); + defineProperty( this, 'f', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'f' + }); + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'a'; + defineProperty( this, syms[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; + } + + Foo.prototype.d = 'd'; + defineProperty( Foo.prototype, 'e', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + Foo.prototype.f = 'f'; + if ( hasSymbols ) { + Foo.prototype[ syms[ 1 ] ] = 'b'; + Foo.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Foo.prototype, syms[ 3 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + } + + obj = new Foo(); + + expected = [ 'd', 'f' ]; + if ( hasSymbols ) { + expected.push( syms[ 1 ], syms[ 2 ] ); + } + actual = inheritedEnumerableProperties( obj ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + t.end(); +}); + +tape( 'the function returns an array of an object\'s inherited enumerable properties (multiple inheritance)', function test( t ) { + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + syms = [ + Symbol( 'a' ), + Symbol( 'b' ), + Symbol( 'c' ), + Symbol( 'd' ), + Symbol( 'e' ), + Symbol( 'f' ), + Symbol( 'g' ) + ]; + } else { + syms = []; + } + + function Bar() { + this.a = 'a'; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'd' + }); + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'a'; + } + return this; + } + + Bar.prototype.b = 'b'; + Bar.prototype.c = 'c'; + defineProperty( Bar.prototype, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + Bar.prototype.e = 'e'; + defineProperty( Bar.prototype, 'f', { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'f' + }); + if ( hasSymbols ) { + Bar.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Bar.prototype, syms[ 3 ], { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + defineProperty( Bar.prototype, syms[ 4 ], { + 'configurable': false, + 'enumerable': true, + 'writable': false, + 'value': 'e' + }); + Bar.prototype[ syms[ 6 ] ] = 'g'; + } + + function Foo() { + Bar.call( this ); + this.a = 'a'; + this.b = 'b'; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'd' + }); + if ( hasSymbols ) { + defineProperty( this, syms[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.b = 'b'; + defineProperty( Foo.prototype, 'e', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + defineProperty( Foo.prototype, 'f', { + 'configurable': true, + 'enumerable': true, + 'writable': false, + 'value': 'f' + }); + if ( hasSymbols ) { + Foo.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Foo.prototype, syms[ 3 ], { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'd' + }); + defineProperty( Foo.prototype, syms[ 5 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'f' + }); + defineProperty( Foo.prototype, syms[ 6 ], { + 'configurable': true, + 'enumerable': false, + 'writable': false, + 'value': 'g' + }); + } + + obj = new Foo(); + + expected = [ 'b', 'c', 'f' ]; + if ( hasSymbols ) { + expected.push( syms[ 2 ], syms[ 4 ] ); + } + actual = inheritedEnumerableProperties( obj ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + idx = indexOf( actual, 'e' ); + t.strictEqual( idx, -1, 'does not contain property' ); + if ( hasSymbols ) { + idx = indexOf( actual, syms[ 6 ] ); + t.strictEqual( idx, -1, 'does not contain property' ); + } + t.end(); +}); + +tape( 'the function supports limiting the inheritance level', function test( t ) { + var expected; + var actual; + var syms; + var obj; + var idx; + var i; + + if ( hasSymbols ) { + syms = [ + Symbol( 'a' ), + Symbol( 'b' ), + Symbol( 'c' ), + Symbol( 'd' ), + Symbol( 'e' ) + ]; + } else { + syms = []; + } + + function Bar() { + this.boop = 'beep'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + if ( hasSymbols ) { + this[ syms[ 0 ] ] = 'a'; + } + return this; + } + + Bar.prototype.bar = [ 'foo' ]; + defineProperty( Bar.prototype, 'bap', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'baz' + }); + if ( hasSymbols ) { + Bar.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Bar.prototype, syms[ 3 ], { + 'configurable': true, + 'enumerable': true, + 'writable': true, + 'value': 'd' + }); + } + + function Foo() { + Bar.call( this ); + this.beep = 'boop'; + this.a = { + 'b': 'c' + }; + defineProperty( this, 'd', { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'e' + }); + if ( hasSymbols ) { + defineProperty( this, syms[ 1 ], { + 'configurable': false, + 'enumerable': false, + 'writable': true, + 'value': 'b' + }); + } + return this; + } + + inherit( Foo, Bar ); + + Foo.prototype.foo = [ 'bar' ]; + defineProperty( Foo.prototype, 'baz', { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'bap' + }); + if ( hasSymbols ) { + Foo.prototype[ syms[ 2 ] ] = 'c'; + defineProperty( Foo.prototype, syms[ 4 ], { + 'configurable': false, + 'enumerable': false, + 'writable': false, + 'value': 'e' + }); + } + + obj = new Foo(); + + expected = [ 'foo' ]; + if ( hasSymbols ) { + expected.push( syms[ 2 ] ); + } + actual = inheritedEnumerableProperties( obj, 1 ); + + t.strictEqual( actual.length >= expected.length, true, 'has expected length' ); + for ( i = 0; i < expected.length; i++ ) { + idx = indexOf( actual, expected[ i ] ); + t.strictEqual( idx !== -1, true, 'contains property: '+expected[i].toString() ); + } + idx = indexOf( actual, 'bap' ); + t.strictEqual( idx === -1, true, 'does not contain property' ); + if ( hasSymbols ) { + idx = indexOf( actual, syms[ 3 ] ); + t.strictEqual( idx === -1, true, 'does not contain property' ); + } + t.end(); +}); + +tape( 'the function returns an empty array if provided `null` or `undefined`', function test( t ) { + var expected; + var actual; + var values; + var i; + + values = [ + void 0, + null + ]; + expected = []; + + for ( i = 0; i < values.length; i++ ) { + actual = inheritedEnumerableProperties( values[ i ] ); + t.deepEqual( actual, expected, 'returns expected value when provided '+values[ i ] ); + } + t.end(); +}); From 22827714e86a1d80ee65579f9c091ed7acba0616 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 16:27:33 -0700 Subject: [PATCH 0566/1062] Update namespace --- lib/node_modules/@stdlib/utils/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/lib/index.js b/lib/node_modules/@stdlib/utils/lib/index.js index e9e4b73f8c9d..a3d3ff563ed7 100644 --- a/lib/node_modules/@stdlib/utils/lib/index.js +++ b/lib/node_modules/@stdlib/utils/lib/index.js @@ -846,6 +846,15 @@ setReadOnly( utils, 'indexOf', require( '@stdlib/utils/index-of' ) ); */ setReadOnly( utils, 'inherit', require( '@stdlib/utils/inherit' ) ); +/** +* @name inheritedEnumerableProperties +* @memberof utils +* @readonly +* @type {Function} +* @see {@link module:@stdlib/utils/inherited-enumerable-properties} +*/ +setReadOnly( utils, 'inheritedEnumerableProperties', require( '@stdlib/utils/inherited-enumerable-properties' ) ); + /** * @name inheritedEnumerablePropertySymbols * @memberof utils From 379a106548c7c6797685f5b576fd771bc67974a6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 16:28:00 -0700 Subject: [PATCH 0567/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/i.js | 16 ++++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 7 ++++--- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 70d555ed90c1..15b816404163 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -1350,6 +1350,22 @@ ns.push({ 'related': [] }); +ns.push({ + 'alias': 'inheritedEnumerableProperties', + 'path': '@stdlib/utils/inherited-enumerable-properties', + 'value': require( '@stdlib/utils/inherited-enumerable-properties' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/enumerable-properties', + '@stdlib/utils/enumerable-properties-in', + '@stdlib/utils/inherited-enumerable-property-symbols', + '@stdlib/utils/inherited-keys', + '@stdlib/utils/inherited-nonenumerable-properties', + '@stdlib/utils/keys', + '@stdlib/utils/keys-in' + ] +}); + ns.push({ 'alias': 'inheritedEnumerablePropertySymbols', 'path': '@stdlib/utils/inherited-enumerable-property-symbols', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index f01fdd64a974..853c7458d6cb 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1104,6 +1104,7 @@ var db = { "ind2sub": "d = [ 3, 3, 3 ];\ns = ind2sub( d, 17 )\n\n// Provide an output array:\nout = new Array( d.length );\ns = ind2sub( out, d, 17 )\nbool = ( s === out )\n", "indexOf": "\n// Basic usage:\narr = [ 4, 3, 2, 1 ];\nidx = indexOf( arr, 3 )\narr = [ 4, 3, 2, 1 ];\nidx = indexOf( arr, 5 )\n\n// Using a `fromIndex`:\narr = [ 1, 2, 3, 4, 5, 2, 6 ];\nidx = indexOf( arr, 2, 3 )\n\n// `fromIndex` which exceeds `array` length:\narr = [ 1, 2, 3, 4, 2, 5 ];\nidx = indexOf( arr, 2, 10 )\n\n// Negative `fromIndex`:\narr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];\nidx = indexOf( arr, 2, -4 )\nidx = indexOf( arr, 2, -1 )\n\n// Negative `fromIndex` exceeding input `array` length:\narr = [ 1, 2, 3, 4, 5, 2, 6 ];\nidx = indexOf( arr, 2, -10 )\n\n// Array-like objects:\nstr = 'bebop';\nidx = indexOf( str, 'o' )\n", "inherit": "\n// Create a parent constructor:\nfunction Foo() { return this; };\nFoo.prototype.beep = function beep() { return 'boop'; };\n\n// Create a child constructor:\nfunction Bar() { Foo.call( this ); return this; };\n\n// Setup inheritance:\ninherit( Bar, Foo );\nbar = new Bar();\nv = bar.beep()\n", + "inheritedEnumerableProperties": "props = inheritedEnumerableProperties( {} )\n", "inheritedEnumerablePropertySymbols": "symbols = inheritedEnumerablePropertySymbols( [] )\n", "inheritedKeys": "keys = inheritedKeys( {} )\n", "inheritedNonEnumerableProperties": "props = inheritedNonEnumerableProperties( {} )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index b32b0eee01f0..a67dea6908cc 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -848,8 +848,8 @@ var db = { "doWhileEachRight": "\ndoWhileEachRight( collection, fcn, predicate[, thisArg] )\n While a test condition is true, invokes a function for each element in a\n collection, iterating from right to left.\n\n The condition is evaluated *after* executing the provided function; thus,\n `fcn` *always* executes at least once.\n\n When invoked, both the predicate function and the function to apply are\n provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n If provided an empty collection, both `value` and `index` are `undefined`.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n predicate: Function\n The predicate function which indicates whether to continue iterating\n over a collection.\n\n thisArg: any (optional)\n Execution context for the applied function.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function predicate( v ) { return v === v; };\n > function logger( v, i ) { console.log( '%s: %d', i, v ); };\n > var arr = [ 1, NaN, 2, 3, 4, 5 ];\n > doWhileEachRight( arr, logger, predicate )\n 5: 5\n 4: 4\n 3: 3\n 2: 2\n 1: NaN\n\n See Also\n --------\n doUntilEachRight, doWhileEach, whileEachRight\n", "E": "\nE\n Euler's number.\n\n Examples\n --------\n > E\n 2.718281828459045\n\n", "endsWith": "\nendsWith( str, search[, len] )\n Tests if a `string` ends with the characters of another `string`.\n\n If provided an empty `search` string, the function always returns `true`.\n\n Parameters\n ----------\n str: string\n Input string.\n\n search: string\n Search string.\n\n len: integer (optional)\n Substring length. Restricts the search to a substring within the input\n string beginning from the leftmost character. If provided a negative\n value, `len` indicates to ignore the last `len` characters, returning\n the same output as `str.length + len`. Default: `str.length`.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a `string` ends with the characters of\n another `string`.\n\n Examples\n --------\n > var bool = endsWith( 'beep', 'ep' )\n true\n > bool = endsWith( 'Beep', 'op' )\n false\n > bool = endsWith( 'Beep', 'ee', 3 )\n true\n > bool = endsWith( 'Beep', 'ee', -1 )\n true\n > bool = endsWith( 'beep', '' )\n true\n\n See Also\n --------\n startsWith\n", - "enumerableProperties": "\nenumerableProperties( value )\n Returns an array of an object's own enumerable property names and symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own enumerable properties.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var props = enumerableProperties( obj )\n [ 'beep' ]\n\n See Also\n --------\n enumerablePropertiesIn, enumerablePropertySymbols, objectKeys, nonEnumerableProperties, properties\n", - "enumerablePropertiesIn": "\nenumerablePropertiesIn( value )\n Returns an array of an object's own and inherited enumerable property names\n and symbols.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own and inherited enumerable property names and\n symbols.\n\n Examples\n --------\n > var props = enumerablePropertiesIn( [] )\n\n See Also\n --------\n enumerableProperties, enumerablePropertySymbolsIn, keysIn, nonEnumerablePropertiesIn, propertiesIn\n", + "enumerableProperties": "\nenumerableProperties( value )\n Returns an array of an object's own enumerable property names and symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own enumerable properties.\n\n Examples\n --------\n > function Foo() { this.beep = 'boop'; return this; };\n > Foo.prototype.foo = 'bar';\n > var obj = new Foo();\n > var props = enumerableProperties( obj )\n [ 'beep' ]\n\n See Also\n --------\n enumerablePropertiesIn, enumerablePropertySymbols, inheritedEnumerableProperties, objectKeys, nonEnumerableProperties, properties\n", + "enumerablePropertiesIn": "\nenumerablePropertiesIn( value )\n Returns an array of an object's own and inherited enumerable property names\n and symbols.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n props: Array\n List of an object's own and inherited enumerable property names and\n symbols.\n\n Examples\n --------\n > var props = enumerablePropertiesIn( [] )\n\n See Also\n --------\n enumerableProperties, enumerablePropertySymbolsIn, inheritedEnumerableProperties, keysIn, nonEnumerablePropertiesIn, propertiesIn\n", "enumerablePropertySymbols": "\nenumerablePropertySymbols( value )\n Returns an array of an object's own enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = enumerablePropertySymbols( obj )\n\n See Also\n --------\n enumerablePropertySymbolsIn, inheritedEnumerablePropertySymbols, objectKeys, nonEnumerablePropertySymbols, propertySymbols\n", "enumerablePropertySymbolsIn": "\nenumerablePropertySymbolsIn( value )\n Returns an array of an object's own and inherited enumerable symbol\n properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n symbols: Array\n List of an object's own and inherited enumerable symbol properties.\n\n Examples\n --------\n > var obj = {};\n > var desc = {};\n > desc.configurable = false;\n > desc.enumerable = true;\n > desc.writable = true;\n > desc.value = 'boop';\n > var sym = ( {{@alias:@stdlib/symbol/ctor}} ) ? Symbol( 'beep' ) : 'beep';\n > defineProperty( obj, sym, desc );\n > var symbols = enumerablePropertySymbolsIn( obj )\n\n See Also\n --------\n enumerablePropertySymbols, inheritedEnumerablePropertySymbols, keysIn, nonEnumerablePropertySymbolsIn, propertySymbolsIn\n", "ENV": "\nENV\n An object containing the user environment.\n\n Examples\n --------\n > var user = ENV.USER\n \n\n See Also\n --------\n ARGV\n", @@ -1104,9 +1104,10 @@ var db = { "ind2sub": "\nind2sub( [out,] shape, idx[, options] )\n Converts a linear index to an array of subscripts.\n\n Parameters\n ----------\n out: Array|TypedArray|Object (optional)\n Output array.\n\n shape: ArrayLike\n Array shape.\n\n idx: integer\n Linear index.\n\n options: Object (optional)\n Options.\n\n options.order: string (optional)\n Specifies whether an array is row-major (C-style) or column-major\n (Fortran style). Default: 'row-major'.\n\n options.mode: string (optional)\n Specifies how to handle a linear index which exceeds array dimensions.\n If equal to 'throw', the function throws an error when a linear index\n exceeds array dimensions. If equal to 'wrap', the function wraps around\n a linear index exceeding array dimensions using modulo arithmetic. If\n equal to 'clamp', the function sets a linear index exceeding array\n dimensions to either `0` (minimum linear index) or the maximum linear\n index. Default: 'throw'.\n\n Returns\n -------\n out: Array\n Subscripts.\n\n Examples\n --------\n > var d = [ 3, 3, 3 ];\n > var s = ind2sub( d, 17 )\n [ 1, 2, 2 ]\n\n // Provide an output array:\n > var out = new Array( d.length );\n > s = ind2sub( out, d, 17 )\n [ 1, 2, 2 ]\n > var bool = ( s === out )\n true\n\n See Also\n --------\n array, ndarray, sub2ind\n", "indexOf": "\nindexOf( arr, searchElement[, fromIndex] )\n Returns the first index at which a given element can be found.\n\n Search is performed using *strict equality* comparison.\n\n Parameters\n ----------\n arr: ArrayLike\n Array-like object.\n\n searchElement: any\n Element to find.\n\n fromIndex: integer (optional)\n Starting index (if negative, the start index is determined relative to\n last element).\n\n Returns\n -------\n out: integer\n Index or -1.\n\n Examples\n --------\n // Basic usage:\n > var arr = [ 4, 3, 2, 1 ];\n > var idx = indexOf( arr, 3 )\n 1\n > arr = [ 4, 3, 2, 1 ];\n > idx = indexOf( arr, 5 )\n -1\n\n // Using a `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, 3 )\n 5\n\n // `fromIndex` which exceeds `array` length:\n > arr = [ 1, 2, 3, 4, 2, 5 ];\n > idx = indexOf( arr, 2, 10 )\n -1\n\n // Negative `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];\n > idx = indexOf( arr, 2, -4 )\n 5\n > idx = indexOf( arr, 2, -1 )\n 7\n\n // Negative `fromIndex` exceeding input `array` length:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, -10 )\n 1\n\n // Array-like objects:\n > var str = 'bebop';\n > idx = indexOf( str, 'o' )\n 3\n\n", "inherit": "\ninherit( ctor, superCtor )\n Prototypical inheritance by replacing the prototype of one constructor with\n the prototype of another constructor.\n\n This function is not designed to work with ES2015/ES6 classes. For\n ES2015/ES6 classes, use `class` with `extends`.\n\n Parameters\n ----------\n ctor: Object|Function\n Constructor which will inherit.\n\n superCtor: Object|Function\n Super (parent) constructor.\n\n Returns\n -------\n out: Object|Function\n Child constructor.\n\n Examples\n --------\n // Create a parent constructor:\n > function Foo() { return this; };\n > Foo.prototype.beep = function beep() { return 'boop'; };\n\n // Create a child constructor:\n > function Bar() { Foo.call( this ); return this; };\n\n // Setup inheritance:\n > inherit( Bar, Foo );\n > var bar = new Bar();\n > var v = bar.beep()\n 'boop'\n\n", + "inheritedEnumerableProperties": "\ninheritedEnumerableProperties( value[, level] )\n Returns an array of an object's inherited enumerable property names and\n symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n props: Array\n List of an object's inherited enumerable properties.\n\n Examples\n --------\n > var props = inheritedEnumerableProperties( {} )\n\n See Also\n --------\n enumerableProperties, enumerablePropertiesIn, inheritedEnumerablePropertySymbols, inheritedKeys, inheritedNonEnumerableProperties, objectKeys, keysIn\n", "inheritedEnumerablePropertySymbols": "\ninheritedEnumerablePropertySymbols( value[, level] )\n Returns an array of an object's inherited enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited enumerable symbol properties.\n\n Examples\n --------\n > var symbols = inheritedEnumerablePropertySymbols( [] )\n\n See Also\n --------\n enumerableProperties, enumerablePropertySymbols, inheritedKeys, nonEnumerablePropertySymbols, nonEnumerablePropertySymbolsIn, propertySymbols\n", "inheritedKeys": "\ninheritedKeys( value[, level] )\n Returns an array of an object's inherited enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable property names.\n\n Examples\n --------\n > var keys = inheritedKeys( {} )\n\n See Also\n --------\n objectKeys, keysIn, inheritedPropertyNames, inheritedPropertySymbols\n", - "inheritedNonEnumerableProperties": "\ninheritedNonEnumerableProperties( value[, level] )\n Returns an array of an object's inherited non-enumerable property names and\n symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n props: Array\n List of an object's inherited non-enumerable properties.\n\n Examples\n --------\n > var props = inheritedNonEnumerableProperties( {} )\n\n See Also\n --------\n inheritedNonEnumerablePropertyNames, inheritedNonEnumerablePropertySymbols, inheritedKeys, nonEnumerableProperties, nonEnumerablePropertiesIn, properties\n", + "inheritedNonEnumerableProperties": "\ninheritedNonEnumerableProperties( value[, level] )\n Returns an array of an object's inherited non-enumerable property names and\n symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n props: Array\n List of an object's inherited non-enumerable properties.\n\n Examples\n --------\n > var props = inheritedNonEnumerableProperties( {} )\n\n See Also\n --------\n inheritedEnumerableProperties, inheritedNonEnumerablePropertyNames, inheritedNonEnumerablePropertySymbols, inheritedKeys, nonEnumerableProperties, nonEnumerablePropertiesIn, properties\n", "inheritedNonEnumerablePropertyNames": "\ninheritedNonEnumerablePropertyNames( value[, level] )\n Returns an array of an object's inherited non-enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited non-enumerable property names.\n\n Examples\n --------\n > var keys = inheritedNonEnumerablePropertyNames( {} )\n\n See Also\n --------\n inheritedNonEnumerableProperties, inheritedNonEnumerablePropertySymbols, objectKeys, nonEnumerablePropertyNames, nonEnumerablePropertyNamesIn, nonEnumerablePropertySymbols, propertyNames\n", "inheritedNonEnumerablePropertySymbols": "\ninheritedNonEnumerablePropertySymbols( value[, level] )\n Returns an array of an object's inherited non-enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited non-enumerable symbol properties.\n\n Examples\n --------\n > var symbols = inheritedNonEnumerablePropertySymbols( [] )\n\n See Also\n --------\n inheritedNonEnumerableProperties, inheritedNonEnumerablePropertyNames, nonEnumerableProperties, nonEnumerablePropertyNames, nonEnumerablePropertySymbols, nonEnumerablePropertySymbolsIn, propertySymbols\n", "inheritedProperties": "\ninheritedProperties( value[, level] )\n Returns an array of an object's inherited property names and symbols.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited property names and symbols.\n\n Examples\n --------\n > var symbols = inheritedProperties( [] )\n\n See Also\n --------\n properties, propertiesIn, inheritedPropertyNames, inheritedPropertySymbols\n", From cbb9b94f39e3d0462127545830bda08177da35d3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 16:32:52 -0700 Subject: [PATCH 0568/1062] Update list of related packages --- lib/node_modules/@stdlib/namespace/lib/namespace/i.js | 3 +-- lib/node_modules/@stdlib/repl/help/lib/db.js | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 15b816404163..9a05b97f6d9f 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -1361,8 +1361,7 @@ ns.push({ '@stdlib/utils/inherited-enumerable-property-symbols', '@stdlib/utils/inherited-keys', '@stdlib/utils/inherited-nonenumerable-properties', - '@stdlib/utils/keys', - '@stdlib/utils/keys-in' + '@stdlib/utils/inherited-properties' ] }); diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index a67dea6908cc..c3b21350f26f 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1104,7 +1104,7 @@ var db = { "ind2sub": "\nind2sub( [out,] shape, idx[, options] )\n Converts a linear index to an array of subscripts.\n\n Parameters\n ----------\n out: Array|TypedArray|Object (optional)\n Output array.\n\n shape: ArrayLike\n Array shape.\n\n idx: integer\n Linear index.\n\n options: Object (optional)\n Options.\n\n options.order: string (optional)\n Specifies whether an array is row-major (C-style) or column-major\n (Fortran style). Default: 'row-major'.\n\n options.mode: string (optional)\n Specifies how to handle a linear index which exceeds array dimensions.\n If equal to 'throw', the function throws an error when a linear index\n exceeds array dimensions. If equal to 'wrap', the function wraps around\n a linear index exceeding array dimensions using modulo arithmetic. If\n equal to 'clamp', the function sets a linear index exceeding array\n dimensions to either `0` (minimum linear index) or the maximum linear\n index. Default: 'throw'.\n\n Returns\n -------\n out: Array\n Subscripts.\n\n Examples\n --------\n > var d = [ 3, 3, 3 ];\n > var s = ind2sub( d, 17 )\n [ 1, 2, 2 ]\n\n // Provide an output array:\n > var out = new Array( d.length );\n > s = ind2sub( out, d, 17 )\n [ 1, 2, 2 ]\n > var bool = ( s === out )\n true\n\n See Also\n --------\n array, ndarray, sub2ind\n", "indexOf": "\nindexOf( arr, searchElement[, fromIndex] )\n Returns the first index at which a given element can be found.\n\n Search is performed using *strict equality* comparison.\n\n Parameters\n ----------\n arr: ArrayLike\n Array-like object.\n\n searchElement: any\n Element to find.\n\n fromIndex: integer (optional)\n Starting index (if negative, the start index is determined relative to\n last element).\n\n Returns\n -------\n out: integer\n Index or -1.\n\n Examples\n --------\n // Basic usage:\n > var arr = [ 4, 3, 2, 1 ];\n > var idx = indexOf( arr, 3 )\n 1\n > arr = [ 4, 3, 2, 1 ];\n > idx = indexOf( arr, 5 )\n -1\n\n // Using a `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, 3 )\n 5\n\n // `fromIndex` which exceeds `array` length:\n > arr = [ 1, 2, 3, 4, 2, 5 ];\n > idx = indexOf( arr, 2, 10 )\n -1\n\n // Negative `fromIndex`:\n > arr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];\n > idx = indexOf( arr, 2, -4 )\n 5\n > idx = indexOf( arr, 2, -1 )\n 7\n\n // Negative `fromIndex` exceeding input `array` length:\n > arr = [ 1, 2, 3, 4, 5, 2, 6 ];\n > idx = indexOf( arr, 2, -10 )\n 1\n\n // Array-like objects:\n > var str = 'bebop';\n > idx = indexOf( str, 'o' )\n 3\n\n", "inherit": "\ninherit( ctor, superCtor )\n Prototypical inheritance by replacing the prototype of one constructor with\n the prototype of another constructor.\n\n This function is not designed to work with ES2015/ES6 classes. For\n ES2015/ES6 classes, use `class` with `extends`.\n\n Parameters\n ----------\n ctor: Object|Function\n Constructor which will inherit.\n\n superCtor: Object|Function\n Super (parent) constructor.\n\n Returns\n -------\n out: Object|Function\n Child constructor.\n\n Examples\n --------\n // Create a parent constructor:\n > function Foo() { return this; };\n > Foo.prototype.beep = function beep() { return 'boop'; };\n\n // Create a child constructor:\n > function Bar() { Foo.call( this ); return this; };\n\n // Setup inheritance:\n > inherit( Bar, Foo );\n > var bar = new Bar();\n > var v = bar.beep()\n 'boop'\n\n", - "inheritedEnumerableProperties": "\ninheritedEnumerableProperties( value[, level] )\n Returns an array of an object's inherited enumerable property names and\n symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n props: Array\n List of an object's inherited enumerable properties.\n\n Examples\n --------\n > var props = inheritedEnumerableProperties( {} )\n\n See Also\n --------\n enumerableProperties, enumerablePropertiesIn, inheritedEnumerablePropertySymbols, inheritedKeys, inheritedNonEnumerableProperties, objectKeys, keysIn\n", + "inheritedEnumerableProperties": "\ninheritedEnumerableProperties( value[, level] )\n Returns an array of an object's inherited enumerable property names and\n symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n props: Array\n List of an object's inherited enumerable properties.\n\n Examples\n --------\n > var props = inheritedEnumerableProperties( {} )\n\n See Also\n --------\n enumerableProperties, enumerablePropertiesIn, inheritedEnumerablePropertySymbols, inheritedKeys, inheritedNonEnumerableProperties, inheritedProperties\n", "inheritedEnumerablePropertySymbols": "\ninheritedEnumerablePropertySymbols( value[, level] )\n Returns an array of an object's inherited enumerable symbol properties.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n symbols: Array\n List of an object's inherited enumerable symbol properties.\n\n Examples\n --------\n > var symbols = inheritedEnumerablePropertySymbols( [] )\n\n See Also\n --------\n enumerableProperties, enumerablePropertySymbols, inheritedKeys, nonEnumerablePropertySymbols, nonEnumerablePropertySymbolsIn, propertySymbols\n", "inheritedKeys": "\ninheritedKeys( value[, level] )\n Returns an array of an object's inherited enumerable property names.\n\n Name order is not guaranteed, as object key enumeration is not specified\n according to the ECMAScript specification. In practice, however, most\n engines use insertion order to sort an object's keys, thus allowing for\n deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n keys: Array\n List of an object's inherited enumerable property names.\n\n Examples\n --------\n > var keys = inheritedKeys( {} )\n\n See Also\n --------\n objectKeys, keysIn, inheritedPropertyNames, inheritedPropertySymbols\n", "inheritedNonEnumerableProperties": "\ninheritedNonEnumerableProperties( value[, level] )\n Returns an array of an object's inherited non-enumerable property names and\n symbols.\n\n Property order is not guaranteed, as object property enumeration is not\n specified according to the ECMAScript specification. In practice, however,\n most engines use insertion order to sort an object's properties, thus\n allowing for deterministic extraction.\n\n If provided `null` or `undefined`, the function returns an empty array.\n\n Parameters\n ----------\n value: any\n Input value.\n\n level: integer (optional)\n Inheritance level.\n\n Returns\n -------\n props: Array\n List of an object's inherited non-enumerable properties.\n\n Examples\n --------\n > var props = inheritedNonEnumerableProperties( {} )\n\n See Also\n --------\n inheritedEnumerableProperties, inheritedNonEnumerablePropertyNames, inheritedNonEnumerablePropertySymbols, inheritedKeys, nonEnumerableProperties, nonEnumerablePropertiesIn, properties\n", From d90d8a11435d2e8f7eee2772da1d27877887cd6f Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 21:42:41 -0700 Subject: [PATCH 0569/1062] Rename variable --- lib/node_modules/@stdlib/assert/is-ndarray-like/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/assert/is-ndarray-like/README.md b/lib/node_modules/@stdlib/assert/is-ndarray-like/README.md index 16cedd657998..8ed68c6119d5 100644 --- a/lib/node_modules/@stdlib/assert/is-ndarray-like/README.md +++ b/lib/node_modules/@stdlib/assert/is-ndarray-like/README.md @@ -61,16 +61,16 @@ var isndarrayLike = require( '@stdlib/assert/is-ndarray-like' ); var ndarray = ctor( 'generic', 2 ); var arr = ndarray( [ 0, 0, 0, 0 ], [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); -var out = isndarrayLike( arr ); +var bool = isndarrayLike( arr ); // returns true -out = isndarrayLike( [ 1, 2, 3, 4 ] ); +bool = isndarrayLike( [ 1, 2, 3, 4 ] ); // returns false -out = isndarrayLike( {} ); +bool = isndarrayLike( {} ); // returns false -out = isndarrayLike( null ); +bool = isndarrayLike( null ); // returns false ``` From 1437304f0c3422c57464140324e06e594ca5c487 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 21:49:03 -0700 Subject: [PATCH 0570/1062] Add utility to test if a value is named typed tuple-like --- .../is-named-typed-tuple-like/README.md | 87 +++++++++++++++++++ .../benchmark/benchmark.js | 63 ++++++++++++++ .../is-named-typed-tuple-like/docs/repl.txt | 30 +++++++ .../examples/index.js | 37 ++++++++ .../is-named-typed-tuple-like/lib/index.js | 48 ++++++++++ .../is-named-typed-tuple-like/lib/main.js | 65 ++++++++++++++ .../is-named-typed-tuple-like/package.json | 71 +++++++++++++++ .../is-named-typed-tuple-like/test/test.js | 87 +++++++++++++++++++ 8 files changed, 488 insertions(+) create mode 100644 lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/README.md create mode 100644 lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/examples/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/lib/index.js create mode 100644 lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/lib/main.js create mode 100644 lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/package.json create mode 100644 lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/test/test.js diff --git a/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/README.md b/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/README.md new file mode 100644 index 000000000000..1ad4a5e75bad --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/README.md @@ -0,0 +1,87 @@ + + +# isNamedTypedTupleLike + +> Test if a value is [named typed tuple][@stdlib/utils/named-typed-tuple]-like. + +
+ +## Usage + +```javascript +var isNamedTypedTupleLike = require( '@stdlib/assert/is-named-typed-tuple-like' ); +``` + +#### isNamedTypedTupleLike( value ) + +Tests if a value is [named typed tuple][@stdlib/utils/named-typed-tuple]-like. + +```javascript +var namedtypedtuple = require( '@stdlib/utils/named-typed-tuple' ); + +var Point = namedtypedtuple( [ 'x', 'y' ] ); +var p = new Point(); + +var bool = isNamedTypedTupleLike( p ); +// returns true +``` + +
+ + + +
+ +## Examples + + + +```javascript +var namedtypedtuple = require( '@stdlib/utils/named-typed-tuple' ); +var isNamedTypedTupleLike = require( '@stdlib/assert/is-named-typed-tuple-like' ); + +var Point = namedtypedtuple( [ 'x', 'y' ] ); +var p = new Point(); + +var bool = isNamedTypedTupleLike( p ); +// returns true + +bool = isNamedTypedTupleLike( [ 1, 2, 3, 4 ] ); +// returns false + +bool = isNamedTypedTupleLike( {} ); +// returns false + +bool = isNamedTypedTupleLike( null ); +// returns false +``` + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/benchmark/benchmark.js new file mode 100644 index 000000000000..12af8689f8a6 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/benchmark/benchmark.js @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var namedtypedtuple = require( '@stdlib/utils/named-typed-tuple' ); +var pkg = require( './../package.json' ).name; +var isNamedTypedTupleLike = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var values; + var Point; + var bool; + var p; + var i; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + values = [ + p, + [ 1, 2, 3 ], + null, + 5, + 'beep' + ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isNamedTypedTupleLike( values[ i%values.length ] ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/docs/repl.txt new file mode 100644 index 000000000000..5886b9e001d7 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/docs/repl.txt @@ -0,0 +1,30 @@ + +{{alias}}( value ) + Tests if a value is named typed tuple-like. + + Parameters + ---------- + value: any + Value to test. + + Returns + ------- + bool: boolean + Boolean indicating whether a value is named typed tuple-like. + + Examples + -------- + > var Point = {{alias:@stdlib/utils/named-typed-tuple}}( [ 'x', 'y' ] ); + > var p = new Point(); + > var bool = {{alias}}( p ) + true + > bool = {{alias}}( [ 1, 2, 3, 4 ] ) + false + > bool = {{alias}}( 3.14 ) + false + > bool = {{alias}}( {} ) + false + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/examples/index.js b/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/examples/index.js new file mode 100644 index 000000000000..0de14254c377 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/examples/index.js @@ -0,0 +1,37 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var namedtypedtuple = require( '@stdlib/utils/named-typed-tuple' ); +var isNamedTypedTupleLike = require( './../lib' ); + +var Point = namedtypedtuple( [ 'x', 'y' ] ); +var p = new Point(); + +console.log( isNamedTypedTupleLike( p ) ); +// => true + +console.log( isNamedTypedTupleLike( [ 1, 2, 3, 4 ] ) ); +// => false + +console.log( isNamedTypedTupleLike( {} ) ); +// => false + +console.log( isNamedTypedTupleLike( null ) ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/lib/index.js b/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/lib/index.js new file mode 100644 index 000000000000..f20235566685 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/lib/index.js @@ -0,0 +1,48 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test if a value is named typed tuple-like. +* +* @module @stdlib/assert/is-named-typed-tuple-like +* +* @example +* var namedtypedtuple = require( '@stdlib/utils/named-typed-tuple' ); +* var isNamedTypedTupleLike = require( '@stdlib/assert/is-named-typed-tuple-like' ); +* +* var Point = namedtypedtuple( [ 'x', 'y' ] ); +* +* var p = new Point(); +* +* var bool = isNamedTypedTupleLike( p ); +* // returns true +* +* bool = isNamedTypedTupleLike( [] ); +* // returns false +*/ + +// MODULES // + +var isNamedTypedTupleLike = require( './main.js' ); + + +// EXPORTS // + +module.exports = isNamedTypedTupleLike; diff --git a/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/lib/main.js b/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/lib/main.js new file mode 100644 index 000000000000..ee27dcc4ee87 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/lib/main.js @@ -0,0 +1,65 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var isTypedArray = require( '@stdlib/assert/is-typed-array' ); +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); + + +// MAIN // + +/** +* Tests if a value is named typed tuple-like. +* +* @param {*} v - value to test +* @returns {boolean} boolean indicating if a value is named typed tuple-like +* +* @example +* var namedtypedtuple = require( '@stdlib/utils/named-typed-tuple' ); +* +* var Point = namedtypedtuple( [ 'x', 'y' ] ); +* +* var p = new Point(); +* +* var bool = isNamedTypedTupleLike( p ); +* // returns true +* +* bool = isNamedTypedTupleLike( [] ); +* // returns false +*/ +function isNamedTypedTupleLike( v ) { + return ( + isTypedArray( v ) && + typeof v.fieldOf === 'function' && + typeof v.findField === 'function' && + typeof v.ind2key === 'function' && + typeof v.key2ind === 'function' && + typeof v.lastFieldOf === 'function' && + typeof v.subtuple === 'function' && + hasOwnProp( v, 'fields' ) && + hasOwnProp( v, 'orderedFields' ) + ); +} + + +// EXPORTS // + +module.exports = isNamedTypedTupleLike; diff --git a/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/package.json b/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/package.json new file mode 100644 index 000000000000..013258a46551 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/assert/is-named-typed-tuple-like", + "version": "0.0.0", + "description": "Test if a value is named typed tuple-like.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "is", + "istuple", + "istuplelike", + "typed", + "tuple", + "tuple-like", + "validate", + "isvalid", + "test", + "type", + "check" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/test/test.js b/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/test/test.js new file mode 100644 index 000000000000..69e0a79007ad --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-named-typed-tuple-like/test/test.js @@ -0,0 +1,87 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var namedtypedtuple = require( '@stdlib/utils/named-typed-tuple' ); +var Float64Array = require( '@stdlib/array/float64' ); +var noop = require( '@stdlib/utils/noop' ); +var isNamedTypedTuple = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.equal( typeof isNamedTypedTuple, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if provided a named typed tuple', function test( t ) { + var Point; + var p; + + Point = namedtypedtuple( [ 'x', 'y' ] ); + p = new Point(); + + t.equal( isNamedTypedTuple( p ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `true` if provided a named typed tuple-like object', function test( t ) { + var tuple; + + tuple = new Float64Array( [ 1.0, 2.0 ] ); + tuple.fieldOf = noop; + tuple.findField = noop; + tuple.ind2key = noop; + tuple.key2ind = noop; + tuple.lastFieldOf = noop; + tuple.subtuple = noop; + tuple.fields = [ 'x', 'y' ]; + tuple.orderedFields = [ 'x', 'y' ]; + + t.equal( isNamedTypedTuple( tuple ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `false` if not provided a named typed tuple-like object', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + true, + false, + [], + {}, + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.equal( isNamedTypedTuple( values[i] ), false, 'returns false when provided '+values[i] ); + } + t.end(); +}); From f075cdde9c0f4aa79e5f054297d2ed7ba432f93b Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 21:50:32 -0700 Subject: [PATCH 0571/1062] Update namespace --- lib/node_modules/@stdlib/assert/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index 71ee5a477514..39be9f0b2eb5 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -1044,6 +1044,15 @@ setReadOnly( ns, 'isLowercase', require( '@stdlib/assert/is-lowercase' ) ); */ setReadOnly( ns, 'isMatrixLike', require( '@stdlib/assert/is-matrix-like' ) ); +/** +* @name isNamedTypedTupleLike +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-named-typed-tuple-like} +*/ +setReadOnly( ns, 'isNamedTypedTupleLike', require( '@stdlib/assert/is-named-typed-tuple-like' ) ); + /** * @name isnan * @memberof ns From 78d0db7ceeaa41f5a252e71fc27950a43487463d Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 21:51:39 -0700 Subject: [PATCH 0572/1062] Update namespace --- lib/node_modules/@stdlib/namespace/lib/namespace/i.js | 10 ++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 1 + 3 files changed, 12 insertions(+) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js index 9a05b97f6d9f..35b3ff085dbd 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/i.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/i.js @@ -2565,6 +2565,16 @@ ns.push({ ] }); +ns.push({ + 'alias': 'isNamedTypedTupleLike', + 'path': '@stdlib/assert/is-named-typed-tuple-like', + 'value': require( '@stdlib/assert/is-named-typed-tuple-like' ), + 'type': 'Function', + 'related': [ + '@stdlib/utils/named-typed-tuple' + ] +}); + ns.push({ 'alias': 'isnan', 'path': '@stdlib/assert/is-nan', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 853c7458d6cb..2e202e16b929 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -1213,6 +1213,7 @@ var db = { "isLeapYear": "bool = isLeapYear( new Date() )\nbool = isLeapYear( 1996 )\nbool = isLeapYear( 2001 )\n", "isLowercase": "bool = isLowercase( 'hello' )\nbool = isLowercase( 'World' )\n", "isMatrixLike": "M = {};\nM.data = [ 0, 0, 0, 0 ];\nM.ndims = 2;\nM.shape = [ 2, 2 ];\nM.strides = [ 2, 1 ];\nM.offset = 0;\nM.order = 'row-major';\nM.dtype = 'generic';\nM.length = 4;\nM.flags = {};\nM.get = function get( i, j ) {};\nM.set = function set( i, j ) {};\nbool = isMatrixLike( M )\nbool = isMatrixLike( [ 1, 2, 3, 4 ] )\nbool = isMatrixLike( 3.14 )\nbool = isMatrixLike( {} )\n", + "isNamedTypedTupleLike": "Point = namedtypedtuple( [ 'x', 'y' ] );\np = new Point();\nbool = isNamedTypedTupleLike( p )\nbool = isNamedTypedTupleLike( [ 1, 2, 3, 4 ] )\nbool = isNamedTypedTupleLike( 3.14 )\nbool = isNamedTypedTupleLike( {} )\n", "isnan": "bool = isnan( NaN )\nbool = isnan( new Number( NaN ) )\nbool = isnan( 3.14 )\nbool = isnan( null )\n", "isNaNArray": "bool = isNaNArray( [ NaN, NaN, NaN ] )\nbool = isNaNArray( [ NaN, 2 ] )\n", "isNativeFunction": "bool = isNativeFunction( Date )\nfunction beep() {};\nbool = isNativeFunction( beep )\nbool = isNativeFunction( {} )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index c3b21350f26f..3dc431aabeb0 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -1213,6 +1213,7 @@ var db = { "isLeapYear": "\nisLeapYear( value )\n Tests whether a value corresponds to a leap year in the Gregorian calendar.\n\n A leap year is defined as any year which is exactly divisible by 4, except\n for years which are exactly divisible by 100 and not by 400. In this\n definition, 100 corresponds to years marking a new century, and 400\n corresponds to the length of the *leap cycle*.\n\n If not provided any arguments, the function returns a boolean indicating\n if the current year (according to local time) is a leap year.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value corresponds to a leap year.\n\n Examples\n --------\n > var bool = isLeapYear( new Date() )\n \n > bool = isLeapYear( 1996 )\n true\n > bool = isLeapYear( 2001 )\n false\n\n", "isLowercase": "\nisLowercase( value )\n Tests if a value is a lowercase string.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a lowercase string.\n\n Examples\n --------\n > var bool = isLowercase( 'hello' )\n true\n > bool = isLowercase( 'World' )\n false\n\n See Also\n --------\n isString, isUppercase\n", "isMatrixLike": "\nisMatrixLike( value )\n Tests if a value is a 2-dimensional ndarray-like object.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is a 2-dimensional ndarray-like\n object.\n\n Examples\n --------\n > var M = {};\n > M.data = [ 0, 0, 0, 0 ];\n > M.ndims = 2;\n > M.shape = [ 2, 2 ];\n > M.strides = [ 2, 1 ];\n > M.offset = 0;\n > M.order = 'row-major';\n > M.dtype = 'generic';\n > M.length = 4;\n > M.flags = {};\n > M.get = function get( i, j ) {};\n > M.set = function set( i, j ) {};\n > var bool = isMatrixLike( M )\n true\n > bool = isMatrixLike( [ 1, 2, 3, 4 ] )\n false\n > bool = isMatrixLike( 3.14 )\n false\n > bool = isMatrixLike( {} )\n false\n\n See Also\n --------\n isArray, isArrayLike, isndarrayLike, isTypedArrayLike, isVectorLike\n", + "isNamedTypedTupleLike": "\nisNamedTypedTupleLike( value )\n Tests if a value is named typed tuple-like.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a value is named typed tuple-like.\n\n Examples\n --------\n > var Point = namedtypedtuple( [ 'x', 'y' ] );\n > var p = new Point();\n > var bool = isNamedTypedTupleLike( p )\n true\n > bool = isNamedTypedTupleLike( [ 1, 2, 3, 4 ] )\n false\n > bool = isNamedTypedTupleLike( 3.14 )\n false\n > bool = isNamedTypedTupleLike( {} )\n false\n\n See Also\n --------\n namedtypedtuple\n", "isnan": "\nisnan( value )\n Tests if a value is NaN.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is NaN.\n\n Examples\n --------\n > var bool = isnan( NaN )\n true\n > bool = isnan( new Number( NaN ) )\n true\n > bool = isnan( 3.14 )\n false\n > bool = isnan( null )\n false\n\n\nisnan.isPrimitive( value )\n Tests if a value is a NaN number primitive.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a NaN number primitive.\n\n Examples\n --------\n > var bool = isnan.isPrimitive( NaN )\n true\n > bool = isnan.isPrimitive( 3.14 )\n false\n > bool = isnan.isPrimitive( new Number( NaN ) )\n false\n\n\nisnan.isObject( value )\n Tests if a value is a number object having a value of NaN.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a number object having a value of\n NaN.\n\n Examples\n --------\n > var bool = isnan.isObject( NaN )\n false\n > bool = isnan.isObject( new Number( NaN ) )\n true\n\n See Also\n --------\n isNumber\n", "isNaNArray": "\nisNaNArray( value )\n Tests if a value is an array-like object containing only NaN values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n NaN values.\n\n Examples\n --------\n > var bool = isNaNArray( [ NaN, NaN, NaN ] )\n true\n > bool = isNaNArray( [ NaN, 2 ] )\n false\n\n\nisNaNArray.primitives( value )\n Tests if a value is an array-like object containing only primitive NaN\n values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n primitive NaN values.\n\n Examples\n --------\n > var bool = isNaNArray.primitives( [ NaN, new Number( NaN ) ] )\n false\n > bool = isNaNArray.primitives( [ NaN, NaN, NaN ] )\n true\n\n\nisNaNArray.objects( value )\n Tests if a value is an array-like object containing only number objects\n having NaN values.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is an array-like object containing only\n number objects having NaN values.\n\n Examples\n --------\n > var bool = isNaNArray.objects( [ new Number( NaN ), new Number( NaN ) ] )\n true\n > bool = isNaNArray.objects( [ NaN, new Number( NaN ), new Number( NaN ) ] )\n false\n > bool = isNaNArray.objects( [ NaN, NaN, NaN ] )\n false\n\n See Also\n --------\n isnan\n", "isNativeFunction": "\nisNativeFunction( value )\n Tests if a value is a native function.\n\n Parameters\n ----------\n value: any\n Value to test.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether value is a native function.\n\n Examples\n --------\n > var bool = isNativeFunction( Date )\n true\n > function beep() {};\n > bool = isNativeFunction( beep )\n false\n > bool = isNativeFunction( {} )\n false\n\n See Also\n --------\n isFunction\n", From 582f4beeaf14ae3bfa17b3f0c9cd14c4873bbff2 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 23:31:56 -0700 Subject: [PATCH 0573/1062] Add tests --- .../test/test.copy_within.js | 353 ++++++++++++++++++ 1 file changed, 353 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/named-typed-tuple/test/test.copy_within.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/test/test.copy_within.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/test/test.copy_within.js new file mode 100644 index 000000000000..ad32cf29265a --- /dev/null +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/test/test.copy_within.js @@ -0,0 +1,353 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var hasProp = require( '@stdlib/assert/has-property' ); +var isFunction = require( '@stdlib/assert/is-function' ); +var namedtypetuple = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof namedtypetuple, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'a tuple has a `copyWithin` method for copying a sequence of tuple elements within a tuple', function test( t ) { + var Point; + var p; + + Point = namedtypetuple( [ 'x', 'y' ] ); + p = new Point(); + + t.strictEqual( hasProp( p, 'copyWithin' ), true, 'has property' ); + t.strictEqual( isFunction( p.copyWithin ), true, 'has method' ); + t.end(); +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance', function test( t ) { + var values; + var Point; + var p; + var i; + + Point = namedtypetuple( [ 'x', 'y' ] ); + p = new Point(); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return p.copyWithin.call( value, 3, 0 ); + }; + } +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance (end)', function test( t ) { + var values; + var Point; + var p; + var i; + + Point = namedtypetuple( [ 'x', 'y' ] ); + p = new Point(); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return p.copyWithin.call( value, 3, 0, 5 ); + }; + } +}); + +tape( 'the method copies a sequence of elements within a tuple', function test( t ) { + var Point; + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + Point = namedtypetuple( [ 'x', 'y', 'z', 'w', 'v' ] ); + p = new Point( arr ); + + p.copyWithin( 0, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a tuple (negative target)', function test( t ) { + var Point; + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + Point = namedtypetuple( [ 'x', 'y', 'z', 'w', 'v' ] ); + p = new Point( arr ); + + p.copyWithin( -p.length, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a tuple (negative start)', function test( t ) { + var Point; + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + Point = namedtypetuple( [ 'x', 'y', 'z', 'w', 'v' ] ); + p = new Point( arr ); + + p.copyWithin( 0, -2 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a tuple (end=length)', function test( t ) { + var Point; + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + Point = namedtypetuple( [ 'x', 'y', 'z', 'w', 'v' ] ); + p = new Point( arr ); + + p.copyWithin( 0, 3, p.length ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a tuple (non-inclusive end)', function test( t ) { + var Point; + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + Point = namedtypetuple( [ 'x', 'y', 'z', 'w', 'v' ] ); + p = new Point( arr ); + + p.copyWithin( 2, 0, 2 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1.0, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a tuple (negative end)', function test( t ) { + var Point; + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + Point = namedtypetuple( [ 'x', 'y', 'z', 'w', 'v' ] ); + p = new Point( arr ); + + p.copyWithin( 2, 0, -3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1.0, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a tuple (target >= length)', function test( t ) { + var Point; + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + Point = namedtypetuple( [ 'x', 'y', 'z', 'w', 'v' ] ); + p = new Point( arr ); + + p.copyWithin( p.length, 3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1.0, 'returns expected value' ); + t.strictEqual( p[ 2 ], 2.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a tuple (target > start)', function test( t ) { + var Point; + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + Point = namedtypetuple( [ 'x', 'y', 'z', 'w', 'v' ] ); + p = new Point( arr ); + + p.copyWithin( 2, 0 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1.0, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 2.0, 'returns expected value' ); + + t.end(); +}); From a0f8baf9e1cd8c84d36a9e44afef9e36a2e2af8f Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 23:43:09 -0700 Subject: [PATCH 0574/1062] Add tests --- .../array/float32/test/test.copy_within.js | 320 ++++++++++++++++++ 1 file changed, 320 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/test/test.copy_within.js diff --git a/lib/node_modules/@stdlib/array/float32/test/test.copy_within.js b/lib/node_modules/@stdlib/array/float32/test/test.copy_within.js new file mode 100644 index 000000000000..fb7e117ac9a6 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/test/test.copy_within.js @@ -0,0 +1,320 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var hasProp = require( '@stdlib/assert/has-property' ); +var isFunction = require( '@stdlib/assert/is-function' ); +var Float32Array = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof Float32Array, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'a typed array instance has a `copyWithin` method for copying a sequence of elements within a typed array', function test( t ) { + var arr = new Float32Array( 2 ); + t.strictEqual( hasProp( arr, 'copyWithin' ), true, 'has property' ); + t.strictEqual( isFunction( arr.copyWithin ), true, 'has method' ); + t.end(); +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance', function test( t ) { + var values; + var arr; + var i; + + arr = new Float32Array( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0 ); + }; + } +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance (end)', function test( t ) { + var values; + var arr; + var i; + + arr = new Float32Array( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0, 5 ); + }; + } +}); + +tape( 'the method copies a sequence of elements within a typed array', function test( t ) { + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + p = new Float32Array( arr ); + p.copyWithin( 0, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative target)', function test( t ) { + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + p = new Float32Array( arr ); + p.copyWithin( -p.length, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative start)', function test( t ) { + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + p = new Float32Array( arr ); + p.copyWithin( 0, -2 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (end=length)', function test( t ) { + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + p = new Float32Array( arr ); + p.copyWithin( 0, 3, p.length ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (non-inclusive end)', function test( t ) { + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + p = new Float32Array( arr ); + p.copyWithin( 2, 0, 2 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1.0, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative end)', function test( t ) { + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + p = new Float32Array( arr ); + p.copyWithin( 2, 0, -3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1.0, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target >= length)', function test( t ) { + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + p = new Float32Array( arr ); + p.copyWithin( p.length, 3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1.0, 'returns expected value' ); + t.strictEqual( p[ 2 ], 2.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target > start)', function test( t ) { + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + p = new Float32Array( arr ); + p.copyWithin( 2, 0 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1.0, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 2.0, 'returns expected value' ); + + t.end(); +}); From 058521203ed51910e33d79c5f05e8bd76fa5ef2a Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 23:44:13 -0700 Subject: [PATCH 0575/1062] Add tests --- .../array/float64/test/test.copy_within.js | 320 ++++++++++++++++++ 1 file changed, 320 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float64/test/test.copy_within.js diff --git a/lib/node_modules/@stdlib/array/float64/test/test.copy_within.js b/lib/node_modules/@stdlib/array/float64/test/test.copy_within.js new file mode 100644 index 000000000000..01647bc09023 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/test/test.copy_within.js @@ -0,0 +1,320 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var hasProp = require( '@stdlib/assert/has-property' ); +var isFunction = require( '@stdlib/assert/is-function' ); +var Float64Array = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof Float64Array, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'a typed array instance has a `copyWithin` method for copying a sequence of elements within a typed array', function test( t ) { + var arr = new Float64Array( 2 ); + t.strictEqual( hasProp( arr, 'copyWithin' ), true, 'has property' ); + t.strictEqual( isFunction( arr.copyWithin ), true, 'has method' ); + t.end(); +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance', function test( t ) { + var values; + var arr; + var i; + + arr = new Float64Array( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0 ); + }; + } +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance (end)', function test( t ) { + var values; + var arr; + var i; + + arr = new Float64Array( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0, 5 ); + }; + } +}); + +tape( 'the method copies a sequence of elements within a typed array', function test( t ) { + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + p = new Float64Array( arr ); + p.copyWithin( 0, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative target)', function test( t ) { + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + p = new Float64Array( arr ); + p.copyWithin( -p.length, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative start)', function test( t ) { + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + p = new Float64Array( arr ); + p.copyWithin( 0, -2 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (end=length)', function test( t ) { + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + p = new Float64Array( arr ); + p.copyWithin( 0, 3, p.length ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (non-inclusive end)', function test( t ) { + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + p = new Float64Array( arr ); + p.copyWithin( 2, 0, 2 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1.0, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative end)', function test( t ) { + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + p = new Float64Array( arr ); + p.copyWithin( 2, 0, -3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1.0, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1.0, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target >= length)', function test( t ) { + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + p = new Float64Array( arr ); + p.copyWithin( p.length, 3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1.0, 'returns expected value' ); + t.strictEqual( p[ 2 ], 2.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target > start)', function test( t ) { + var arr; + var p; + + arr = [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0 + ]; + + p = new Float64Array( arr ); + p.copyWithin( 2, 0 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1.0, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0.0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1.0, 'returns expected value' ); + t.strictEqual( p[ 4 ], 2.0, 'returns expected value' ); + + t.end(); +}); From ff4d98f9c75a097a5119320783a2e51aa45f9bd4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 23:49:16 -0700 Subject: [PATCH 0576/1062] Add tests --- .../array/int16/test/test.copy_within.js | 320 ++++++++++++++++++ .../array/int32/test/test.copy_within.js | 320 ++++++++++++++++++ .../array/int8/test/test.copy_within.js | 320 ++++++++++++++++++ .../array/uint16/test/test.copy_within.js | 320 ++++++++++++++++++ .../array/uint32/test/test.copy_within.js | 320 ++++++++++++++++++ .../array/uint8/test/test.copy_within.js | 320 ++++++++++++++++++ .../array/uint8c/test/test.copy_within.js | 320 ++++++++++++++++++ 7 files changed, 2240 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/int16/test/test.copy_within.js create mode 100644 lib/node_modules/@stdlib/array/int32/test/test.copy_within.js create mode 100644 lib/node_modules/@stdlib/array/int8/test/test.copy_within.js create mode 100644 lib/node_modules/@stdlib/array/uint16/test/test.copy_within.js create mode 100644 lib/node_modules/@stdlib/array/uint32/test/test.copy_within.js create mode 100644 lib/node_modules/@stdlib/array/uint8/test/test.copy_within.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/test/test.copy_within.js diff --git a/lib/node_modules/@stdlib/array/int16/test/test.copy_within.js b/lib/node_modules/@stdlib/array/int16/test/test.copy_within.js new file mode 100644 index 000000000000..357839c706bc --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/test/test.copy_within.js @@ -0,0 +1,320 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var hasProp = require( '@stdlib/assert/has-property' ); +var isFunction = require( '@stdlib/assert/is-function' ); +var Int16Array = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof Int16Array, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'a typed array instance has a `copyWithin` method for copying a sequence of elements within a typed array', function test( t ) { + var arr = new Int16Array( 2 ); + t.strictEqual( hasProp( arr, 'copyWithin' ), true, 'has property' ); + t.strictEqual( isFunction( arr.copyWithin ), true, 'has method' ); + t.end(); +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance', function test( t ) { + var values; + var arr; + var i; + + arr = new Int16Array( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0 ); + }; + } +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance (end)', function test( t ) { + var values; + var arr; + var i; + + arr = new Int16Array( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0, 5 ); + }; + } +}); + +tape( 'the method copies a sequence of elements within a typed array', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int16Array( arr ); + p.copyWithin( 0, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative target)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int16Array( arr ); + p.copyWithin( -p.length, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative start)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int16Array( arr ); + p.copyWithin( 0, -2 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (end=length)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int16Array( arr ); + p.copyWithin( 0, 3, p.length ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (non-inclusive end)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int16Array( arr ); + p.copyWithin( 2, 0, 2 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative end)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int16Array( arr ); + p.copyWithin( 2, 0, -3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target >= length)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int16Array( arr ); + p.copyWithin( p.length, 3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target > start)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int16Array( arr ); + p.copyWithin( 2, 0 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + t.strictEqual( p[ 4 ], 2, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/test/test.copy_within.js b/lib/node_modules/@stdlib/array/int32/test/test.copy_within.js new file mode 100644 index 000000000000..4e137ffbd4af --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/test/test.copy_within.js @@ -0,0 +1,320 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var hasProp = require( '@stdlib/assert/has-property' ); +var isFunction = require( '@stdlib/assert/is-function' ); +var Int32Array = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof Int32Array, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'a typed array instance has a `copyWithin` method for copying a sequence of elements within a typed array', function test( t ) { + var arr = new Int32Array( 2 ); + t.strictEqual( hasProp( arr, 'copyWithin' ), true, 'has property' ); + t.strictEqual( isFunction( arr.copyWithin ), true, 'has method' ); + t.end(); +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance', function test( t ) { + var values; + var arr; + var i; + + arr = new Int32Array( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0 ); + }; + } +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance (end)', function test( t ) { + var values; + var arr; + var i; + + arr = new Int32Array( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0, 5 ); + }; + } +}); + +tape( 'the method copies a sequence of elements within a typed array', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int32Array( arr ); + p.copyWithin( 0, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative target)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int32Array( arr ); + p.copyWithin( -p.length, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative start)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int32Array( arr ); + p.copyWithin( 0, -2 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (end=length)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int32Array( arr ); + p.copyWithin( 0, 3, p.length ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (non-inclusive end)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int32Array( arr ); + p.copyWithin( 2, 0, 2 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative end)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int32Array( arr ); + p.copyWithin( 2, 0, -3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target >= length)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int32Array( arr ); + p.copyWithin( p.length, 3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target > start)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int32Array( arr ); + p.copyWithin( 2, 0 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + t.strictEqual( p[ 4 ], 2, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/test/test.copy_within.js b/lib/node_modules/@stdlib/array/int8/test/test.copy_within.js new file mode 100644 index 000000000000..dda6a6761a74 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/test/test.copy_within.js @@ -0,0 +1,320 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var hasProp = require( '@stdlib/assert/has-property' ); +var isFunction = require( '@stdlib/assert/is-function' ); +var Int8Array = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof Int8Array, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'a typed array instance has a `copyWithin` method for copying a sequence of elements within a typed array', function test( t ) { + var arr = new Int8Array( 2 ); + t.strictEqual( hasProp( arr, 'copyWithin' ), true, 'has property' ); + t.strictEqual( isFunction( arr.copyWithin ), true, 'has method' ); + t.end(); +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance', function test( t ) { + var values; + var arr; + var i; + + arr = new Int8Array( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0 ); + }; + } +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance (end)', function test( t ) { + var values; + var arr; + var i; + + arr = new Int8Array( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0, 5 ); + }; + } +}); + +tape( 'the method copies a sequence of elements within a typed array', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int8Array( arr ); + p.copyWithin( 0, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative target)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int8Array( arr ); + p.copyWithin( -p.length, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative start)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int8Array( arr ); + p.copyWithin( 0, -2 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (end=length)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int8Array( arr ); + p.copyWithin( 0, 3, p.length ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (non-inclusive end)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int8Array( arr ); + p.copyWithin( 2, 0, 2 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative end)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int8Array( arr ); + p.copyWithin( 2, 0, -3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target >= length)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int8Array( arr ); + p.copyWithin( p.length, 3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target > start)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Int8Array( arr ); + p.copyWithin( 2, 0 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + t.strictEqual( p[ 4 ], 2, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/test/test.copy_within.js b/lib/node_modules/@stdlib/array/uint16/test/test.copy_within.js new file mode 100644 index 000000000000..c8c3ab2034c3 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/test/test.copy_within.js @@ -0,0 +1,320 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var hasProp = require( '@stdlib/assert/has-property' ); +var isFunction = require( '@stdlib/assert/is-function' ); +var Uint16Array = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof Uint16Array, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'a typed array instance has a `copyWithin` method for copying a sequence of elements within a typed array', function test( t ) { + var arr = new Uint16Array( 2 ); + t.strictEqual( hasProp( arr, 'copyWithin' ), true, 'has property' ); + t.strictEqual( isFunction( arr.copyWithin ), true, 'has method' ); + t.end(); +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance', function test( t ) { + var values; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0 ); + }; + } +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance (end)', function test( t ) { + var values; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0, 5 ); + }; + } +}); + +tape( 'the method copies a sequence of elements within a typed array', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint16Array( arr ); + p.copyWithin( 0, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative target)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint16Array( arr ); + p.copyWithin( -p.length, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative start)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint16Array( arr ); + p.copyWithin( 0, -2 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (end=length)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint16Array( arr ); + p.copyWithin( 0, 3, p.length ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (non-inclusive end)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint16Array( arr ); + p.copyWithin( 2, 0, 2 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative end)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint16Array( arr ); + p.copyWithin( 2, 0, -3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target >= length)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint16Array( arr ); + p.copyWithin( p.length, 3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target > start)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint16Array( arr ); + p.copyWithin( 2, 0 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + t.strictEqual( p[ 4 ], 2, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/test/test.copy_within.js b/lib/node_modules/@stdlib/array/uint32/test/test.copy_within.js new file mode 100644 index 000000000000..a02b4a21fa31 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/test/test.copy_within.js @@ -0,0 +1,320 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var hasProp = require( '@stdlib/assert/has-property' ); +var isFunction = require( '@stdlib/assert/is-function' ); +var Uint32Array = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof Uint32Array, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'a typed array instance has a `copyWithin` method for copying a sequence of elements within a typed array', function test( t ) { + var arr = new Uint32Array( 2 ); + t.strictEqual( hasProp( arr, 'copyWithin' ), true, 'has property' ); + t.strictEqual( isFunction( arr.copyWithin ), true, 'has method' ); + t.end(); +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance', function test( t ) { + var values; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0 ); + }; + } +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance (end)', function test( t ) { + var values; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0, 5 ); + }; + } +}); + +tape( 'the method copies a sequence of elements within a typed array', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint32Array( arr ); + p.copyWithin( 0, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative target)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint32Array( arr ); + p.copyWithin( -p.length, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative start)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint32Array( arr ); + p.copyWithin( 0, -2 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (end=length)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint32Array( arr ); + p.copyWithin( 0, 3, p.length ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (non-inclusive end)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint32Array( arr ); + p.copyWithin( 2, 0, 2 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative end)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint32Array( arr ); + p.copyWithin( 2, 0, -3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target >= length)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint32Array( arr ); + p.copyWithin( p.length, 3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target > start)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint32Array( arr ); + p.copyWithin( 2, 0 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + t.strictEqual( p[ 4 ], 2, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/test/test.copy_within.js b/lib/node_modules/@stdlib/array/uint8/test/test.copy_within.js new file mode 100644 index 000000000000..56d67eea355c --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/test/test.copy_within.js @@ -0,0 +1,320 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var hasProp = require( '@stdlib/assert/has-property' ); +var isFunction = require( '@stdlib/assert/is-function' ); +var Uint8Array = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof Uint8Array, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'a typed array instance has a `copyWithin` method for copying a sequence of elements within a typed array', function test( t ) { + var arr = new Uint8Array( 2 ); + t.strictEqual( hasProp( arr, 'copyWithin' ), true, 'has property' ); + t.strictEqual( isFunction( arr.copyWithin ), true, 'has method' ); + t.end(); +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance', function test( t ) { + var values; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0 ); + }; + } +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance (end)', function test( t ) { + var values; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0, 5 ); + }; + } +}); + +tape( 'the method copies a sequence of elements within a typed array', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint8Array( arr ); + p.copyWithin( 0, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative target)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint8Array( arr ); + p.copyWithin( -p.length, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative start)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint8Array( arr ); + p.copyWithin( 0, -2 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (end=length)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint8Array( arr ); + p.copyWithin( 0, 3, p.length ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (non-inclusive end)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint8Array( arr ); + p.copyWithin( 2, 0, 2 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative end)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint8Array( arr ); + p.copyWithin( 2, 0, -3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target >= length)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint8Array( arr ); + p.copyWithin( p.length, 3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target > start)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint8Array( arr ); + p.copyWithin( 2, 0 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + t.strictEqual( p[ 4 ], 2, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/test/test.copy_within.js b/lib/node_modules/@stdlib/array/uint8c/test/test.copy_within.js new file mode 100644 index 000000000000..386560bf09cf --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/test/test.copy_within.js @@ -0,0 +1,320 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var hasProp = require( '@stdlib/assert/has-property' ); +var isFunction = require( '@stdlib/assert/is-function' ); +var Uint8ClampedArray = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof Uint8ClampedArray, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'a typed array instance has a `copyWithin` method for copying a sequence of elements within a typed array', function test( t ) { + var arr = new Uint8ClampedArray( 2 ); + t.strictEqual( hasProp( arr, 'copyWithin' ), true, 'has property' ); + t.strictEqual( isFunction( arr.copyWithin ), true, 'has method' ); + t.end(); +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance', function test( t ) { + var values; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0 ); + }; + } +}); + +tape( 'the method throws an error if invoked with a `this` context which is not a typed array instance (end)', function test( t ) { + var values; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + return arr.copyWithin.call( value, 3, 0, 5 ); + }; + } +}); + +tape( 'the method copies a sequence of elements within a typed array', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint8ClampedArray( arr ); + p.copyWithin( 0, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative target)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint8ClampedArray( arr ); + p.copyWithin( -p.length, 3 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative start)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint8ClampedArray( arr ); + p.copyWithin( 0, -2 ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (end=length)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint8ClampedArray( arr ); + p.copyWithin( 0, 3, p.length ); + + // Overwritten: + t.strictEqual( p[ 0 ], 3, 'returns expected value' ); + t.strictEqual( p[ 1 ], 4, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (non-inclusive end)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint8ClampedArray( arr ); + p.copyWithin( 2, 0, 2 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (negative end)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint8ClampedArray( arr ); + p.copyWithin( 2, 0, -3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + + // Remain the same: + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target >= length)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint8ClampedArray( arr ); + p.copyWithin( p.length, 3 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + t.strictEqual( p[ 2 ], 2, 'returns expected value' ); + t.strictEqual( p[ 3 ], 3, 'returns expected value' ); + t.strictEqual( p[ 4 ], 4, 'returns expected value' ); + + t.end(); +}); + +tape( 'the method copies a sequence of elements within a typed array (target > start)', function test( t ) { + var arr; + var p; + + arr = [ + 0, + 1, + 2, + 3, + 4 + ]; + + p = new Uint8ClampedArray( arr ); + p.copyWithin( 2, 0 ); + + // Remain the same: + t.strictEqual( p[ 0 ], 0, 'returns expected value' ); + t.strictEqual( p[ 1 ], 1, 'returns expected value' ); + + // Overwritten: + t.strictEqual( p[ 2 ], 0, 'returns expected value' ); + t.strictEqual( p[ 3 ], 1, 'returns expected value' ); + t.strictEqual( p[ 4 ], 2, 'returns expected value' ); + + t.end(); +}); From c172cd2d2ad5ca83cb640ca179d81194699c8de5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 23:57:46 -0700 Subject: [PATCH 0577/1062] Add benchmarks --- .../benchmark/benchmark.copy_within.js | 50 ++++++++++ .../benchmark/benchmark.copy_within.length.js | 93 +++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.copy_within.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.copy_within.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.copy_within.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.copy_within.js new file mode 100644 index 000000000000..7e64a807cec8 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.copy_within.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':copyWithin', function benchmark( b ) { + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== i ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.copy_within.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.copy_within.length.js new file mode 100644 index 000000000000..e7c4529c10e5 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.copy_within.length.js @@ -0,0 +1,93 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== i ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':copyWithin:len='+len, f ); + } +} + +main(); From c7030d9b8eed1d3ed23f789f86ce44aff0e00823 Mon Sep 17 00:00:00 2001 From: kgryte Date: Mon, 1 Oct 2018 23:59:10 -0700 Subject: [PATCH 0578/1062] Add benchmarks --- .../benchmark/benchmark.copy_within.js | 50 ++++++++++ .../benchmark/benchmark.copy_within.length.js | 93 +++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.copy_within.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.copy_within.length.js diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.copy_within.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.copy_within.js new file mode 100644 index 000000000000..52cb63a752b7 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.copy_within.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':copyWithin', function benchmark( b ) { + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== i ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.copy_within.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.copy_within.length.js new file mode 100644 index 000000000000..ebfc0c9544db --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.copy_within.length.js @@ -0,0 +1,93 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== i ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':copyWithin:len='+len, f ); + } +} + +main(); From fd60d535546f7d7044e40c02230d6b08feaa1c08 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 00:09:08 -0700 Subject: [PATCH 0579/1062] Add benchmarks --- .../int16/benchmark/benchmark.copy_within.js | 52 ++++++++++ .../benchmark/benchmark.copy_within.length.js | 95 +++++++++++++++++++ .../int32/benchmark/benchmark.copy_within.js | 52 ++++++++++ .../benchmark/benchmark.copy_within.length.js | 95 +++++++++++++++++++ .../int8/benchmark/benchmark.copy_within.js | 52 ++++++++++ .../benchmark/benchmark.copy_within.length.js | 95 +++++++++++++++++++ .../uint16/benchmark/benchmark.copy_within.js | 52 ++++++++++ .../benchmark/benchmark.copy_within.length.js | 95 +++++++++++++++++++ .../uint32/benchmark/benchmark.copy_within.js | 52 ++++++++++ .../benchmark/benchmark.copy_within.length.js | 95 +++++++++++++++++++ .../uint8/benchmark/benchmark.copy_within.js | 52 ++++++++++ .../benchmark/benchmark.copy_within.length.js | 95 +++++++++++++++++++ .../uint8c/benchmark/benchmark.copy_within.js | 52 ++++++++++ .../benchmark/benchmark.copy_within.length.js | 95 +++++++++++++++++++ 14 files changed, 1029 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.copy_within.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.copy_within.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.copy_within.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.copy_within.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.copy_within.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.copy_within.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.copy_within.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.copy_within.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.copy_within.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.copy_within.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.copy_within.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.copy_within.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.copy_within.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.copy_within.length.js diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.copy_within.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.copy_within.js new file mode 100644 index 000000000000..b6f867732f82 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.copy_within.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':copyWithin', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 255; + arr[ 0 ] = v; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.copy_within.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.copy_within.length.js new file mode 100644 index 000000000000..b0f5e42d671f --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.copy_within.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 255; + arr[ 0 ] = v; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':copyWithin:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.copy_within.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.copy_within.js new file mode 100644 index 000000000000..3a07bc9546d1 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.copy_within.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':copyWithin', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 255; + arr[ 0 ] = v; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.copy_within.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.copy_within.length.js new file mode 100644 index 000000000000..4216daa8f759 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.copy_within.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 255; + arr[ 0 ] = v; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':copyWithin:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.copy_within.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.copy_within.js new file mode 100644 index 000000000000..60156d2652ee --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.copy_within.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':copyWithin', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr[ 0 ] = v; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.copy_within.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.copy_within.length.js new file mode 100644 index 000000000000..1a00aacc2834 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.copy_within.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr[ 0 ] = v; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':copyWithin:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.copy_within.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.copy_within.js new file mode 100644 index 000000000000..7c903c34f681 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.copy_within.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':copyWithin', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr[ 0 ] = v; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.copy_within.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.copy_within.length.js new file mode 100644 index 000000000000..84e9cd61c87c --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.copy_within.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr[ 0 ] = v; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':copyWithin:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.copy_within.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.copy_within.js new file mode 100644 index 000000000000..c9ddce74d0d0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.copy_within.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':copyWithin', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr[ 0 ] = v; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.copy_within.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.copy_within.length.js new file mode 100644 index 000000000000..1822878d220a --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.copy_within.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr[ 0 ] = v; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':copyWithin:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.copy_within.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.copy_within.js new file mode 100644 index 000000000000..fd94b25461f8 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.copy_within.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':copyWithin', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr[ 0 ] = v; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.copy_within.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.copy_within.length.js new file mode 100644 index 000000000000..7dd8aae099cb --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.copy_within.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr[ 0 ] = v; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':copyWithin:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.copy_within.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.copy_within.js new file mode 100644 index 000000000000..e2731bd2b643 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.copy_within.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':copyWithin', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr[ 0 ] = v; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.copy_within.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.copy_within.length.js new file mode 100644 index 000000000000..bd70626c57cf --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.copy_within.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr[ 0 ] = v; + arr = arr.copyWithin( 1, 0 ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':copyWithin:len='+len, f ); + } +} + +main(); From ccc160f5cebcc41977a3e57f627e6a6f9bc15ace Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 00:32:30 -0700 Subject: [PATCH 0580/1062] Add `entries` benchmarks --- .../float32/benchmark/benchmark.entries.js | 50 +++++++++++++++++++ .../float64/benchmark/benchmark.entries.js | 50 +++++++++++++++++++ .../int16/benchmark/benchmark.entries.js | 50 +++++++++++++++++++ .../int32/benchmark/benchmark.entries.js | 50 +++++++++++++++++++ .../array/int8/benchmark/benchmark.entries.js | 50 +++++++++++++++++++ .../uint16/benchmark/benchmark.entries.js | 50 +++++++++++++++++++ .../uint32/benchmark/benchmark.entries.js | 50 +++++++++++++++++++ .../uint8/benchmark/benchmark.entries.js | 50 +++++++++++++++++++ .../uint8c/benchmark/benchmark.entries.js | 50 +++++++++++++++++++ 9 files changed, 450 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.entries.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.entries.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.entries.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.entries.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.entries.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.entries.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.entries.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.entries.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.entries.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.entries.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.entries.js new file mode 100644 index 000000000000..66e8bb259989 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.entries.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':entries', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Float32Array( [ 1.0, 2.0 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.entries(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.entries.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.entries.js new file mode 100644 index 000000000000..0eee5195673b --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.entries.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':entries', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Float64Array( [ 1.0, 2.0 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.entries(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.entries.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.entries.js new file mode 100644 index 000000000000..b0427cb1f2c9 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.entries.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':entries', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Int16Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.entries(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.entries.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.entries.js new file mode 100644 index 000000000000..a858f7905b07 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.entries.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':entries', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Int32Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.entries(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.entries.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.entries.js new file mode 100644 index 000000000000..b830a69ea0f9 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.entries.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':entries', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Int8Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.entries(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.entries.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.entries.js new file mode 100644 index 000000000000..072c7c53b1bc --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.entries.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':entries', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Uint16Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.entries(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.entries.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.entries.js new file mode 100644 index 000000000000..b14d89bd1e03 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.entries.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':entries', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Uint32Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.entries(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.entries.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.entries.js new file mode 100644 index 000000000000..fefbd578947e --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.entries.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':entries', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Uint8Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.entries(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.entries.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.entries.js new file mode 100644 index 000000000000..0b2af25f1eac --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.entries.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':entries', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Uint8ClampedArray( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.entries(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 7900a882361db45cc4f45b2f9bb1d251e76ef6f6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 00:44:53 -0700 Subject: [PATCH 0581/1062] Add `every` benchmarks --- .../float32/benchmark/benchmark.every.js | 81 ++++++++++++++ .../benchmark/benchmark.every.length.js | 105 ++++++++++++++++++ .../float64/benchmark/benchmark.every.js | 81 ++++++++++++++ .../benchmark/benchmark.every.length.js | 105 ++++++++++++++++++ .../array/int16/benchmark/benchmark.every.js | 81 ++++++++++++++ .../int16/benchmark/benchmark.every.length.js | 105 ++++++++++++++++++ .../array/int32/benchmark/benchmark.every.js | 81 ++++++++++++++ .../int32/benchmark/benchmark.every.length.js | 105 ++++++++++++++++++ .../array/int8/benchmark/benchmark.every.js | 81 ++++++++++++++ .../int8/benchmark/benchmark.every.length.js | 105 ++++++++++++++++++ .../array/uint16/benchmark/benchmark.every.js | 81 ++++++++++++++ .../benchmark/benchmark.every.length.js | 105 ++++++++++++++++++ .../array/uint32/benchmark/benchmark.every.js | 81 ++++++++++++++ .../benchmark/benchmark.every.length.js | 105 ++++++++++++++++++ .../array/uint8/benchmark/benchmark.every.js | 81 ++++++++++++++ .../uint8/benchmark/benchmark.every.length.js | 105 ++++++++++++++++++ .../array/uint8c/benchmark/benchmark.every.js | 81 ++++++++++++++ .../benchmark/benchmark.every.length.js | 105 ++++++++++++++++++ 18 files changed, 1674 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.every.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.every.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.every.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.every.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.every.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.every.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.every.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.every.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.every.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.every.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.every.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.every.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.every.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.every.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.every.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.every.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.every.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.every.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.every.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.every.js new file mode 100644 index 000000000000..3ae104313ca3 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.every.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0.0; + } +}); + +bench( pkg+'::this_context:every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.every.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.every.length.js new file mode 100644 index 000000000000..f5693bf22285 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.every.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':every:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.every.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.every.js new file mode 100644 index 000000000000..7499ada3d0af --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.every.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0.0; + } +}); + +bench( pkg+'::this_context:every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.every.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.every.length.js new file mode 100644 index 000000000000..b90ff3e26502 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.every.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':every:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.every.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.every.js new file mode 100644 index 000000000000..67572362e18a --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.every.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); + +bench( pkg+'::this_context:every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.every.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.every.length.js new file mode 100644 index 000000000000..a94be9da673a --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.every.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':every:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.every.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.every.js new file mode 100644 index 000000000000..de59ee238225 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.every.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); + +bench( pkg+'::this_context:every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.every.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.every.length.js new file mode 100644 index 000000000000..a6834093c9dc --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.every.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':every:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.every.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.every.js new file mode 100644 index 000000000000..40a8642cbfbb --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.every.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); + +bench( pkg+'::this_context:every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.every.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.every.length.js new file mode 100644 index 000000000000..a0229bdb8254 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.every.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':every:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.every.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.every.js new file mode 100644 index 000000000000..93a5d357c9a7 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.every.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); + +bench( pkg+'::this_context:every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.every.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.every.length.js new file mode 100644 index 000000000000..3340d9833df0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.every.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':every:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.every.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.every.js new file mode 100644 index 000000000000..27e2f00d2b53 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.every.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); + +bench( pkg+'::this_context:every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.every.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.every.length.js new file mode 100644 index 000000000000..92bc5336ddab --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.every.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':every:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.every.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.every.js new file mode 100644 index 000000000000..d22cc45dfa85 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.every.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); + +bench( pkg+'::this_context:every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.every.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.every.length.js new file mode 100644 index 000000000000..f89c9abb4437 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.every.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':every:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.every.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.every.js new file mode 100644 index 000000000000..c2dea91d5390 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.every.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); + +bench( pkg+'::this_context:every', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.every.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.every.length.js new file mode 100644 index 000000000000..0ec67464564c --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.every.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.every( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':every:len='+len, f ); + } +} + +main(); From c7b47bd488af46f2f00442f6d5eec1c24cc50a40 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 00:55:51 -0700 Subject: [PATCH 0582/1062] Add `fill` benchmarks --- .../array/float32/benchmark/benchmark.fill.js | 51 ++++++++++ .../benchmark/benchmark.fill.length.js | 94 +++++++++++++++++++ .../array/float32/benchmark/benchmark.js | 2 + .../array/float64/benchmark/benchmark.fill.js | 51 ++++++++++ .../benchmark/benchmark.fill.length.js | 94 +++++++++++++++++++ .../array/int16/benchmark/benchmark.fill.js | 51 ++++++++++ .../int16/benchmark/benchmark.fill.length.js | 94 +++++++++++++++++++ .../array/int32/benchmark/benchmark.fill.js | 51 ++++++++++ .../int32/benchmark/benchmark.fill.length.js | 94 +++++++++++++++++++ .../array/int8/benchmark/benchmark.fill.js | 51 ++++++++++ .../int8/benchmark/benchmark.fill.length.js | 94 +++++++++++++++++++ .../array/uint16/benchmark/benchmark.fill.js | 51 ++++++++++ .../uint16/benchmark/benchmark.fill.length.js | 94 +++++++++++++++++++ .../array/uint32/benchmark/benchmark.fill.js | 51 ++++++++++ .../uint32/benchmark/benchmark.fill.length.js | 94 +++++++++++++++++++ .../array/uint8/benchmark/benchmark.fill.js | 51 ++++++++++ .../uint8/benchmark/benchmark.fill.length.js | 94 +++++++++++++++++++ .../array/uint8c/benchmark/benchmark.fill.js | 51 ++++++++++ .../uint8c/benchmark/benchmark.fill.length.js | 94 +++++++++++++++++++ 19 files changed, 1307 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.fill.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.fill.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.fill.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.fill.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.fill.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.fill.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.fill.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.fill.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.fill.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.fill.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.fill.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.fill.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.fill.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.fill.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.fill.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.fill.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.fill.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.fill.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.fill.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.fill.js new file mode 100644 index 000000000000..2358c69c8e8a --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.fill.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':fill', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.fill.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.fill.length.js new file mode 100644 index 000000000000..e7c5dab2e610 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.fill.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':fill:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.js index 6abd61ff7b58..b924b087cb0d 100644 --- a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.js @@ -45,3 +45,5 @@ bench( pkg, function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +// TODO: add additional instantiation benchmarks (e.g., ArrayBuffer, etc) diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.fill.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.fill.js new file mode 100644 index 000000000000..7137c71f2555 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.fill.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':fill', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.fill.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.fill.length.js new file mode 100644 index 000000000000..f896f8ee3596 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.fill.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':fill:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.fill.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.fill.js new file mode 100644 index 000000000000..145d1ef88177 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.fill.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':fill', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.fill.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.fill.length.js new file mode 100644 index 000000000000..b18ef85a68d9 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.fill.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':fill:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.fill.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.fill.js new file mode 100644 index 000000000000..9a4992c80a14 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.fill.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':fill', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.fill.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.fill.length.js new file mode 100644 index 000000000000..f94e0b75a666 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.fill.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':fill:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.fill.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.fill.js new file mode 100644 index 000000000000..da6d595a086e --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.fill.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':fill', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.fill.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.fill.length.js new file mode 100644 index 000000000000..e81e99fbe211 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.fill.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':fill:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.fill.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.fill.js new file mode 100644 index 000000000000..f0983e0d62a8 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.fill.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':fill', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.fill.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.fill.length.js new file mode 100644 index 000000000000..33877794be96 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.fill.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':fill:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.fill.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.fill.js new file mode 100644 index 000000000000..ad81b7bf25e0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.fill.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':fill', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.fill.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.fill.length.js new file mode 100644 index 000000000000..cd975c94b76a --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.fill.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':fill:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.fill.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.fill.js new file mode 100644 index 000000000000..ba36b1313c3d --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.fill.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':fill', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.fill.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.fill.length.js new file mode 100644 index 000000000000..010fbc572ade --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.fill.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':fill:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.fill.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.fill.js new file mode 100644 index 000000000000..d98109597e11 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.fill.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':fill', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.fill.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.fill.length.js new file mode 100644 index 000000000000..60c5757ae89d --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.fill.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = i % 128; + arr = arr.fill( v ); + if ( arr[ 0 ] !== v ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':fill:len='+len, f ); + } +} + +main(); From b57e078c6fe0fc29d2630ea2cd086a17ff2d430e Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 01:50:39 -0700 Subject: [PATCH 0583/1062] Add `filter` benchmarks --- .../float32/benchmark/benchmark.filter.js | 81 ++++++++++++++ .../benchmark/benchmark.filter.length.js | 105 ++++++++++++++++++ .../float64/benchmark/benchmark.filter.js | 81 ++++++++++++++ .../benchmark/benchmark.filter.length.js | 105 ++++++++++++++++++ .../array/int16/benchmark/benchmark.filter.js | 81 ++++++++++++++ .../benchmark/benchmark.filter.length.js | 105 ++++++++++++++++++ .../array/int32/benchmark/benchmark.filter.js | 81 ++++++++++++++ .../benchmark/benchmark.filter.length.js | 105 ++++++++++++++++++ .../array/int8/benchmark/benchmark.filter.js | 81 ++++++++++++++ .../int8/benchmark/benchmark.filter.length.js | 105 ++++++++++++++++++ .../uint16/benchmark/benchmark.filter.js | 81 ++++++++++++++ .../benchmark/benchmark.filter.length.js | 105 ++++++++++++++++++ .../uint32/benchmark/benchmark.filter.js | 81 ++++++++++++++ .../benchmark/benchmark.filter.length.js | 105 ++++++++++++++++++ .../array/uint8/benchmark/benchmark.filter.js | 81 ++++++++++++++ .../benchmark/benchmark.filter.length.js | 105 ++++++++++++++++++ .../uint8c/benchmark/benchmark.filter.js | 81 ++++++++++++++ .../benchmark/benchmark.filter.length.js | 105 ++++++++++++++++++ 18 files changed, 1674 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.filter.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.filter.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.filter.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.filter.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.filter.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.filter.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.filter.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.filter.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.filter.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.filter.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.filter.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.filter.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.filter.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.filter.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.filter.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.filter.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.filter.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.filter.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.filter.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.filter.js new file mode 100644 index 000000000000..1534462c1740 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.filter.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isFloat32Array = require( '@stdlib/assert/is-float32array' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat32Array( out ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0.0; + } +}); + +bench( pkg+'::this_context:filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat32Array( out ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.filter.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.filter.length.js new file mode 100644 index 000000000000..7bb44041a782 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.filter.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isFloat32Array = require( '@stdlib/assert/is-float32array' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat32Array( out ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':filter:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.filter.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.filter.js new file mode 100644 index 000000000000..8e4ce6a5bf6e --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.filter.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isFloat64Array = require( '@stdlib/assert/is-float64array' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat64Array( out ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0.0; + } +}); + +bench( pkg+'::this_context:filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat64Array( out ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.filter.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.filter.length.js new file mode 100644 index 000000000000..ebcae45a6825 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.filter.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isFloat64Array = require( '@stdlib/assert/is-float64array' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat64Array( out ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':filter:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.filter.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.filter.js new file mode 100644 index 000000000000..14a278ee00ad --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.filter.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt16Array = require( '@stdlib/assert/is-int16array' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt16Array( out ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); + +bench( pkg+'::this_context:filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt16Array( out ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.filter.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.filter.length.js new file mode 100644 index 000000000000..ac3e84419f90 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.filter.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInt16Array = require( '@stdlib/assert/is-int16array' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt16Array( out ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':filter:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.filter.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.filter.js new file mode 100644 index 000000000000..8bc01e999dda --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.filter.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt32Array = require( '@stdlib/assert/is-int32array' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt32Array( out ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); + +bench( pkg+'::this_context:filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt32Array( out ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.filter.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.filter.length.js new file mode 100644 index 000000000000..450af28467bb --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.filter.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInt32Array = require( '@stdlib/assert/is-int32array' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt32Array( out ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':filter:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.filter.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.filter.js new file mode 100644 index 000000000000..3ea9329bd18e --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.filter.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt8Array = require( '@stdlib/assert/is-int8array' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt8Array( out ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); + +bench( pkg+'::this_context:filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt8Array( out ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.filter.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.filter.length.js new file mode 100644 index 000000000000..bfabe84c2564 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.filter.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInt8Array = require( '@stdlib/assert/is-int8array' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt8Array( out ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':filter:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.filter.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.filter.js new file mode 100644 index 000000000000..e9d36969a51c --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.filter.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint16Array = require( '@stdlib/assert/is-uint16array' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint16Array( out ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); + +bench( pkg+'::this_context:filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint16Array( out ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.filter.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.filter.length.js new file mode 100644 index 000000000000..6941c0a61fe2 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.filter.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint16Array = require( '@stdlib/assert/is-uint16array' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint16Array( out ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':filter:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.filter.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.filter.js new file mode 100644 index 000000000000..2482f7986a9a --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.filter.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint32Array( out ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); + +bench( pkg+'::this_context:filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint32Array( out ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.filter.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.filter.length.js new file mode 100644 index 000000000000..9f0be6f7e1da --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.filter.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint32Array( out ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':filter:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.filter.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.filter.js new file mode 100644 index 000000000000..1dae0041ea23 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.filter.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint8Array = require( '@stdlib/assert/is-uint8array' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8Array( out ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); + +bench( pkg+'::this_context:filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8Array( out ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.filter.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.filter.length.js new file mode 100644 index 000000000000..37014c67521b --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.filter.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint8Array = require( '@stdlib/assert/is-uint8array' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8Array( out ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':filter:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.filter.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.filter.js new file mode 100644 index 000000000000..e1c52ee7263a --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.filter.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint8ClampedArray = require( '@stdlib/assert/is-uint8clampedarray' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( out ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); + +bench( pkg+'::this_context:filter', function benchmark( b ) { + var arr; + var out; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( out ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v >= 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.filter.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.filter.length.js new file mode 100644 index 000000000000..dffa04ec88b8 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.filter.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint8ClampedArray = require( '@stdlib/assert/is-uint8clampedarray' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value >= 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.filter( predicate ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( out ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':filter:len='+len, f ); + } +} + +main(); From 39a261afae1b9a1322a825d0aee7d7752437629f Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 02:01:45 -0700 Subject: [PATCH 0584/1062] Add `findIndex` benchmarks --- .../float32/benchmark/benchmark.find_index.js | 82 ++++++++++++++ .../benchmark/benchmark.find_index.length.js | 104 ++++++++++++++++++ .../float64/benchmark/benchmark.find_index.js | 82 ++++++++++++++ .../benchmark/benchmark.find_index.length.js | 104 ++++++++++++++++++ .../int16/benchmark/benchmark.find_index.js | 82 ++++++++++++++ .../benchmark/benchmark.find_index.length.js | 104 ++++++++++++++++++ .../int32/benchmark/benchmark.find_index.js | 82 ++++++++++++++ .../benchmark/benchmark.find_index.length.js | 104 ++++++++++++++++++ .../int8/benchmark/benchmark.find_index.js | 82 ++++++++++++++ .../benchmark/benchmark.find_index.length.js | 104 ++++++++++++++++++ .../uint16/benchmark/benchmark.find_index.js | 82 ++++++++++++++ .../benchmark/benchmark.find_index.length.js | 104 ++++++++++++++++++ .../uint32/benchmark/benchmark.find_index.js | 82 ++++++++++++++ .../benchmark/benchmark.find_index.length.js | 104 ++++++++++++++++++ .../uint8/benchmark/benchmark.find_index.js | 82 ++++++++++++++ .../benchmark/benchmark.find_index.length.js | 104 ++++++++++++++++++ .../uint8c/benchmark/benchmark.find_index.js | 82 ++++++++++++++ .../benchmark/benchmark.find_index.length.js | 104 ++++++++++++++++++ 18 files changed, 1674 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.find_index.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.find_index.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.find_index.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.find_index.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.find_index.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.find_index.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.find_index.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.find_index.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.find_index.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.find_index.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.find_index.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.find_index.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.find_index.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.find_index.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.find_index.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.find_index.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.find_index.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.find_index.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.find_index.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.find_index.js new file mode 100644 index 000000000000..ebfae0de4282 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.find_index.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); + +bench( pkg+'::this_context:findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate, {} ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.find_index.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.find_index.length.js new file mode 100644 index 000000000000..05cfd05e4ae2 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.find_index.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':findIndex:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.find_index.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.find_index.js new file mode 100644 index 000000000000..44f1b1da025b --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.find_index.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float64Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); + +bench( pkg+'::this_context:findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float64Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate, {} ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.find_index.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.find_index.length.js new file mode 100644 index 000000000000..78d12368bf43 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.find_index.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':findIndex:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.find_index.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.find_index.js new file mode 100644 index 000000000000..475627ee6ff6 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.find_index.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int16Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int16Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate, {} ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.find_index.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.find_index.length.js new file mode 100644 index 000000000000..6a9ed79c538f --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.find_index.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':findIndex:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.find_index.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.find_index.js new file mode 100644 index 000000000000..7099aa08b19b --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.find_index.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate, {} ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.find_index.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.find_index.length.js new file mode 100644 index 000000000000..172815ce6407 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.find_index.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':findIndex:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.find_index.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.find_index.js new file mode 100644 index 000000000000..7b6e03291990 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.find_index.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int8Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int8Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate, {} ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.find_index.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.find_index.length.js new file mode 100644 index 000000000000..05cfd05e4ae2 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.find_index.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':findIndex:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.find_index.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.find_index.js new file mode 100644 index 000000000000..c1e86611cc27 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.find_index.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate, {} ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.find_index.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.find_index.length.js new file mode 100644 index 000000000000..83fd164a2998 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.find_index.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':findIndex:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.find_index.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.find_index.js new file mode 100644 index 000000000000..e724bed51e4e --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.find_index.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate, {} ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.find_index.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.find_index.length.js new file mode 100644 index 000000000000..6cbba8cef1a2 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.find_index.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':findIndex:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.find_index.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.find_index.js new file mode 100644 index 000000000000..b4d8cd4244f0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.find_index.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate, {} ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.find_index.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.find_index.length.js new file mode 100644 index 000000000000..bf124a9938a5 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.find_index.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':findIndex:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.find_index.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.find_index.js new file mode 100644 index 000000000000..439909a4e3da --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.find_index.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:findIndex', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate, {} ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.find_index.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.find_index.length.js new file mode 100644 index 000000000000..5aadd9b1153b --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.find_index.length.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.findIndex( predicate ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':findIndex:len='+len, f ); + } +} + +main(); From 5dc813e6aa7c658011ebf69ff4007c53ca05972e Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 02:17:21 -0700 Subject: [PATCH 0585/1062] Add `find` benchmarks --- .../array/float32/benchmark/benchmark.find.js | 82 ++++++++++++++ .../benchmark/benchmark.find.length.js | 105 ++++++++++++++++++ .../array/float64/benchmark/benchmark.find.js | 82 ++++++++++++++ .../benchmark/benchmark.find.length.js | 105 ++++++++++++++++++ .../array/int16/benchmark/benchmark.find.js | 82 ++++++++++++++ .../int16/benchmark/benchmark.find.length.js | 105 ++++++++++++++++++ .../array/int32/benchmark/benchmark.find.js | 82 ++++++++++++++ .../int32/benchmark/benchmark.find.length.js | 105 ++++++++++++++++++ .../array/int8/benchmark/benchmark.find.js | 82 ++++++++++++++ .../int8/benchmark/benchmark.find.length.js | 105 ++++++++++++++++++ .../array/uint16/benchmark/benchmark.find.js | 82 ++++++++++++++ .../uint16/benchmark/benchmark.find.length.js | 105 ++++++++++++++++++ .../array/uint32/benchmark/benchmark.find.js | 82 ++++++++++++++ .../uint32/benchmark/benchmark.find.length.js | 105 ++++++++++++++++++ .../array/uint8/benchmark/benchmark.find.js | 82 ++++++++++++++ .../uint8/benchmark/benchmark.find.length.js | 105 ++++++++++++++++++ .../array/uint8c/benchmark/benchmark.find.js | 82 ++++++++++++++ .../uint8c/benchmark/benchmark.find.length.js | 105 ++++++++++++++++++ 18 files changed, 1683 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.find.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.find.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.find.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.find.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.find.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.find.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.find.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.find.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.find.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.find.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.find.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.find.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.find.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.find.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.find.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.find.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.find.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.find.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.find.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.find.js new file mode 100644 index 000000000000..993fa3db077b --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.find.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); + +bench( pkg+'::this_context:find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate, {} ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.find.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.find.length.js new file mode 100644 index 000000000000..d53055c708ee --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.find.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':find:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.find.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.find.js new file mode 100644 index 000000000000..196c22c0a6b4 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.find.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float64Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); + +bench( pkg+'::this_context:find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float64Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate, {} ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.find.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.find.length.js new file mode 100644 index 000000000000..07c5444804b1 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.find.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':find:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.find.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.find.js new file mode 100644 index 000000000000..293ae5915aab --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.find.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int16Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int16Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate, {} ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.find.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.find.length.js new file mode 100644 index 000000000000..da60e8cc8fdc --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.find.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':find:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.find.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.find.js new file mode 100644 index 000000000000..f37b3af40568 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.find.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate, {} ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.find.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.find.length.js new file mode 100644 index 000000000000..eff7959281c6 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.find.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':find:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.find.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.find.js new file mode 100644 index 000000000000..470dd8da8cd0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.find.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int8Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int8Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate, {} ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.find.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.find.length.js new file mode 100644 index 000000000000..5abbeee838e8 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.find.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':find:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.find.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.find.js new file mode 100644 index 000000000000..1d347e492b3b --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.find.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate, {} ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.find.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.find.length.js new file mode 100644 index 000000000000..b1cfa5ec7178 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.find.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':find:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.find.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.find.js new file mode 100644 index 000000000000..ed2e4fd0cfd9 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.find.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate, {} ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.find.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.find.length.js new file mode 100644 index 000000000000..594f6f3af05e --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.find.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':find:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.find.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.find.js new file mode 100644 index 000000000000..5327e0ebaa1e --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.find.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate, {} ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.find.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.find.length.js new file mode 100644 index 000000000000..c3628e40055c --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.find.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':find:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.find.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.find.js new file mode 100644 index 000000000000..d1f8b34316a7 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.find.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:find', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate, {} ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.find.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.find.length.js new file mode 100644 index 000000000000..bbdca5941bf5 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.find.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - tuple length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.find( predicate ); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof out !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':find:len='+len, f ); + } +} + +main(); From de8b6a78d889b8d5d765f59e1c41d67dc326ea9d Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 02:23:18 -0700 Subject: [PATCH 0586/1062] Add `forEach` benchmarks --- .../float32/benchmark/benchmark.for_each.js | 88 +++++++++++++++ .../benchmark/benchmark.for_each.length.js | 106 ++++++++++++++++++ .../float64/benchmark/benchmark.for_each.js | 88 +++++++++++++++ .../benchmark/benchmark.for_each.length.js | 106 ++++++++++++++++++ .../int16/benchmark/benchmark.for_each.js | 88 +++++++++++++++ .../benchmark/benchmark.for_each.length.js | 106 ++++++++++++++++++ .../int32/benchmark/benchmark.for_each.js | 88 +++++++++++++++ .../benchmark/benchmark.for_each.length.js | 106 ++++++++++++++++++ .../int8/benchmark/benchmark.for_each.js | 88 +++++++++++++++ .../benchmark/benchmark.for_each.length.js | 106 ++++++++++++++++++ .../uint16/benchmark/benchmark.for_each.js | 88 +++++++++++++++ .../benchmark/benchmark.for_each.length.js | 106 ++++++++++++++++++ .../uint32/benchmark/benchmark.for_each.js | 88 +++++++++++++++ .../benchmark/benchmark.for_each.length.js | 106 ++++++++++++++++++ .../uint8/benchmark/benchmark.for_each.js | 88 +++++++++++++++ .../benchmark/benchmark.for_each.length.js | 106 ++++++++++++++++++ .../uint8c/benchmark/benchmark.for_each.js | 88 +++++++++++++++ .../benchmark/benchmark.for_each.length.js | 106 ++++++++++++++++++ 18 files changed, 1746 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.for_each.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.for_each.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.for_each.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.for_each.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.for_each.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.for_each.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.for_each.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.for_each.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.for_each.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.for_each.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.for_each.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.for_each.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.for_each.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.for_each.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.for_each.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.for_each.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.for_each.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.for_each.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.for_each.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.for_each.js new file mode 100644 index 000000000000..60c398fa4df5 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.for_each.js @@ -0,0 +1,88 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Float32Array( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); + +bench( pkg+'::this_context:forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Float32Array( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn, {} ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.for_each.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.for_each.length.js new file mode 100644 index 000000000000..0d700cc3ddae --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.for_each.length.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var count; + var arr; + + arr = new Float32Array( len ); + count = 0; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + } + b.toc(); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } + + /** + * Callback invoked for each tuple element. + * + * @private + */ + function fcn() { + count += 1; + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':forEach:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.for_each.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.for_each.js new file mode 100644 index 000000000000..a5d013bc0492 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.for_each.js @@ -0,0 +1,88 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Float64Array( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); + +bench( pkg+'::this_context:forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Float64Array( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn, {} ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.for_each.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.for_each.length.js new file mode 100644 index 000000000000..1b33a73ff379 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.for_each.length.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var count; + var arr; + + arr = new Float64Array( len ); + count = 0; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + } + b.toc(); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } + + /** + * Callback invoked for each tuple element. + * + * @private + */ + function fcn() { + count += 1; + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':forEach:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.for_each.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.for_each.js new file mode 100644 index 000000000000..fe74266ae2bd --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.for_each.js @@ -0,0 +1,88 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Int16Array( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); + +bench( pkg+'::this_context:forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Int16Array( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn, {} ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.for_each.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.for_each.length.js new file mode 100644 index 000000000000..b1c2406891b9 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.for_each.length.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var count; + var arr; + + arr = new Int16Array( len ); + count = 0; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + } + b.toc(); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } + + /** + * Callback invoked for each tuple element. + * + * @private + */ + function fcn() { + count += 1; + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':forEach:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.for_each.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.for_each.js new file mode 100644 index 000000000000..08f29c706f5f --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.for_each.js @@ -0,0 +1,88 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Int32Array( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); + +bench( pkg+'::this_context:forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Int32Array( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn, {} ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.for_each.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.for_each.length.js new file mode 100644 index 000000000000..5cd5e5c94319 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.for_each.length.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var count; + var arr; + + arr = new Int32Array( len ); + count = 0; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + } + b.toc(); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } + + /** + * Callback invoked for each tuple element. + * + * @private + */ + function fcn() { + count += 1; + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':forEach:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.for_each.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.for_each.js new file mode 100644 index 000000000000..c88177eaee80 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.for_each.js @@ -0,0 +1,88 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Int8Array( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); + +bench( pkg+'::this_context:forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Int8Array( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn, {} ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.for_each.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.for_each.length.js new file mode 100644 index 000000000000..09f039189ccb --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.for_each.length.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var count; + var arr; + + arr = new Int8Array( len ); + count = 0; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + } + b.toc(); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } + + /** + * Callback invoked for each tuple element. + * + * @private + */ + function fcn() { + count += 1; + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':forEach:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.for_each.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.for_each.js new file mode 100644 index 000000000000..67594f8de5fe --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.for_each.js @@ -0,0 +1,88 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Uint16Array( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); + +bench( pkg+'::this_context:forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Uint16Array( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn, {} ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.for_each.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.for_each.length.js new file mode 100644 index 000000000000..ed6ad3f5f47d --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.for_each.length.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var count; + var arr; + + arr = new Uint16Array( len ); + count = 0; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + } + b.toc(); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } + + /** + * Callback invoked for each tuple element. + * + * @private + */ + function fcn() { + count += 1; + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':forEach:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.for_each.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.for_each.js new file mode 100644 index 000000000000..8b5ae0152527 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.for_each.js @@ -0,0 +1,88 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Uint32Array( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); + +bench( pkg+'::this_context:forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Uint32Array( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn, {} ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.for_each.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.for_each.length.js new file mode 100644 index 000000000000..d888fdf7628a --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.for_each.length.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var count; + var arr; + + arr = new Uint32Array( len ); + count = 0; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + } + b.toc(); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } + + /** + * Callback invoked for each tuple element. + * + * @private + */ + function fcn() { + count += 1; + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':forEach:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.for_each.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.for_each.js new file mode 100644 index 000000000000..404a9c9dfdd0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.for_each.js @@ -0,0 +1,88 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Uint8Array( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); + +bench( pkg+'::this_context:forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Uint8Array( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn, {} ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.for_each.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.for_each.length.js new file mode 100644 index 000000000000..a7ef3a42a06d --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.for_each.length.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var count; + var arr; + + arr = new Uint8Array( len ); + count = 0; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + } + b.toc(); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } + + /** + * Callback invoked for each tuple element. + * + * @private + */ + function fcn() { + count += 1; + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':forEach:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.for_each.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.for_each.js new file mode 100644 index 000000000000..0666c43c243f --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.for_each.js @@ -0,0 +1,88 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Uint8ClampedArray( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); + +bench( pkg+'::this_context:forEach', function benchmark( b ) { + var count; + var arr; + var N; + var i; + + arr = new Uint8ClampedArray( 2 ); + N = arr.length; + + count = 0; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn, {} ); + if ( count !== N*(i+1) ) { + b.fail( 'unexpected result' ); + } + } + b.toc(); + if ( count !== N*i ) { + b.fail( 'unexpected result' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn() { + count += 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.for_each.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.for_each.length.js new file mode 100644 index 000000000000..e24aed6a8f0c --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.for_each.length.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var count; + var arr; + + arr = new Uint8ClampedArray( len ); + count = 0; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr.forEach( fcn ); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + } + b.toc(); + if ( count !== count ) { + b.fail( 'should not be NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } + + /** + * Callback invoked for each tuple element. + * + * @private + */ + function fcn() { + count += 1; + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':forEach:len='+len, f ); + } +} + +main(); From 2ee8b1c3bf92ce22742557eebd69ba9cbe7a6ba3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 02:38:23 -0700 Subject: [PATCH 0587/1062] Add `from` benchmarks --- .../array/float32/benchmark/benchmark.from.js | 237 ++++++++++++++++++ .../array/float64/benchmark/benchmark.from.js | 237 ++++++++++++++++++ .../array/int16/benchmark/benchmark.from.js | 237 ++++++++++++++++++ .../array/int32/benchmark/benchmark.from.js | 237 ++++++++++++++++++ .../array/int8/benchmark/benchmark.from.js | 237 ++++++++++++++++++ .../array/uint16/benchmark/benchmark.from.js | 237 ++++++++++++++++++ .../array/uint32/benchmark/benchmark.from.js | 237 ++++++++++++++++++ .../array/uint8/benchmark/benchmark.from.js | 237 ++++++++++++++++++ .../array/uint8c/benchmark/benchmark.from.js | 237 ++++++++++++++++++ 9 files changed, 2133 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.from.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.from.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.from.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.from.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.from.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.from.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.from.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.from.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.from.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.from.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.from.js new file mode 100644 index 000000000000..6465a9009c23 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.from.js @@ -0,0 +1,237 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); +var isFloat32Array = require( '@stdlib/assert/is-float32array' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': ( ITERATOR_SYMBOL === null ) +}; + + +// MAIN // + +bench( pkg+'::typed_array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Float32Array( [ 1.0, 2.0 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Float32Array.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isFloat32Array( arr ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Float32Array( [ 1.0, 2.0 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Float32Array.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isFloat32Array( arr ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1.0; + } +}); + +bench( pkg+'::array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1.0, 2.0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Float32Array.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isFloat32Array( arr ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1.0, 2.0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Float32Array.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isFloat32Array( arr ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1.0; + } +}); + +bench( pkg+'::iterable:from', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Float32Array.from( createIterable() ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isFloat32Array( arr ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 0.0, + 'done': false + }; + } + return { + 'done': true + }; + } + } +}); + +bench( pkg+'::iterable,clbk:from:', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Float32Array.from( createIterable(), clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isFloat32Array( arr ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 1.0, + 'done': false + }; + } + return { + 'done': true + }; + } + } + + function clbk( v ) { + return v + 1.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.from.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.from.js new file mode 100644 index 000000000000..2d3e37593914 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.from.js @@ -0,0 +1,237 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); +var isFloat64Array = require( '@stdlib/assert/is-float64array' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': ( ITERATOR_SYMBOL === null ) +}; + + +// MAIN // + +bench( pkg+'::typed_array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Float64Array( [ 1.0, 2.0 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Float64Array.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isFloat64Array( arr ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Float64Array( [ 1.0, 2.0 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Float64Array.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isFloat64Array( arr ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1.0; + } +}); + +bench( pkg+'::array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1.0, 2.0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Float64Array.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isFloat64Array( arr ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1.0, 2.0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Float64Array.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isFloat64Array( arr ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1.0; + } +}); + +bench( pkg+'::iterable:from', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Float64Array.from( createIterable() ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isFloat64Array( arr ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 0.0, + 'done': false + }; + } + return { + 'done': true + }; + } + } +}); + +bench( pkg+'::iterable,clbk:from:', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Float64Array.from( createIterable(), clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isFloat64Array( arr ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 1.0, + 'done': false + }; + } + return { + 'done': true + }; + } + } + + function clbk( v ) { + return v + 1.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.from.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.from.js new file mode 100644 index 000000000000..74ad4ec0b913 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.from.js @@ -0,0 +1,237 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); +var isInt16Array = require( '@stdlib/assert/is-int16array' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': ( ITERATOR_SYMBOL === null ) +}; + + +// MAIN // + +bench( pkg+'::typed_array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Int16Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int16Array.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt16Array( arr ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Int16Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int16Array.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt16Array( arr ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1; + } +}); + +bench( pkg+'::array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1, 2 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int16Array.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt16Array( arr ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1, 2 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int16Array.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt16Array( arr ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1; + } +}); + +bench( pkg+'::iterable:from', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int16Array.from( createIterable() ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt16Array( arr ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 0, + 'done': false + }; + } + return { + 'done': true + }; + } + } +}); + +bench( pkg+'::iterable,clbk:from:', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int16Array.from( createIterable(), clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt16Array( arr ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 1, + 'done': false + }; + } + return { + 'done': true + }; + } + } + + function clbk( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.from.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.from.js new file mode 100644 index 000000000000..c32f489ecc24 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.from.js @@ -0,0 +1,237 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); +var isInt32Array = require( '@stdlib/assert/is-int32array' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': ( ITERATOR_SYMBOL === null ) +}; + + +// MAIN // + +bench( pkg+'::typed_array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Int32Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int32Array.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt32Array( arr ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Int32Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int32Array.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt32Array( arr ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1; + } +}); + +bench( pkg+'::array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1, 2 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int32Array.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt32Array( arr ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1, 2 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int32Array.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt32Array( arr ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1; + } +}); + +bench( pkg+'::iterable:from', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int32Array.from( createIterable() ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt32Array( arr ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 0, + 'done': false + }; + } + return { + 'done': true + }; + } + } +}); + +bench( pkg+'::iterable,clbk:from:', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int32Array.from( createIterable(), clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt32Array( arr ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 1, + 'done': false + }; + } + return { + 'done': true + }; + } + } + + function clbk( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.from.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.from.js new file mode 100644 index 000000000000..0708827be90c --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.from.js @@ -0,0 +1,237 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); +var isInt8Array = require( '@stdlib/assert/is-int8array' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': ( ITERATOR_SYMBOL === null ) +}; + + +// MAIN // + +bench( pkg+'::typed_array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Int8Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int8Array.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt8Array( arr ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Int8Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int8Array.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt8Array( arr ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1; + } +}); + +bench( pkg+'::array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1, 2 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int8Array.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt8Array( arr ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1, 2 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int8Array.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt8Array( arr ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1; + } +}); + +bench( pkg+'::iterable:from', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int8Array.from( createIterable() ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt8Array( arr ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 0, + 'done': false + }; + } + return { + 'done': true + }; + } + } +}); + +bench( pkg+'::iterable,clbk:from:', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int8Array.from( createIterable(), clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt8Array( arr ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 1, + 'done': false + }; + } + return { + 'done': true + }; + } + } + + function clbk( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.from.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.from.js new file mode 100644 index 000000000000..44de0b6ffb57 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.from.js @@ -0,0 +1,237 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); +var isUint16Array = require( '@stdlib/assert/is-uint16array' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': ( ITERATOR_SYMBOL === null ) +}; + + +// MAIN // + +bench( pkg+'::typed_array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Uint16Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint16Array.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint16Array( arr ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Uint16Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint16Array.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint16Array( arr ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1; + } +}); + +bench( pkg+'::array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1, 2 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint16Array.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint16Array( arr ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1, 2 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint16Array.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint16Array( arr ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1; + } +}); + +bench( pkg+'::iterable:from', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint16Array.from( createIterable() ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint16Array( arr ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 0, + 'done': false + }; + } + return { + 'done': true + }; + } + } +}); + +bench( pkg+'::iterable,clbk:from:', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint16Array.from( createIterable(), clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint16Array( arr ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 1, + 'done': false + }; + } + return { + 'done': true + }; + } + } + + function clbk( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.from.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.from.js new file mode 100644 index 000000000000..4ff139dfaaeb --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.from.js @@ -0,0 +1,237 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': ( ITERATOR_SYMBOL === null ) +}; + + +// MAIN // + +bench( pkg+'::typed_array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Uint32Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint32Array.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint32Array( arr ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Uint32Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint32Array.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint32Array( arr ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1; + } +}); + +bench( pkg+'::array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1, 2 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint32Array.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint32Array( arr ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1, 2 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint32Array.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint32Array( arr ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1; + } +}); + +bench( pkg+'::iterable:from', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint32Array.from( createIterable() ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint32Array( arr ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 0, + 'done': false + }; + } + return { + 'done': true + }; + } + } +}); + +bench( pkg+'::iterable,clbk:from:', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint32Array.from( createIterable(), clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint32Array( arr ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 1, + 'done': false + }; + } + return { + 'done': true + }; + } + } + + function clbk( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.from.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.from.js new file mode 100644 index 000000000000..abe60a0518e6 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.from.js @@ -0,0 +1,237 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); +var isUint8Array = require( '@stdlib/assert/is-uint8array' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': ( ITERATOR_SYMBOL === null ) +}; + + +// MAIN // + +bench( pkg+'::typed_array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Uint8Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint8Array.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint8Array( arr ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Uint8Array( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint8Array.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint8Array( arr ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1; + } +}); + +bench( pkg+'::array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1, 2 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint8Array.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint8Array( arr ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1, 2 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint8Array.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint8Array( arr ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1; + } +}); + +bench( pkg+'::iterable:from', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint8Array.from( createIterable() ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint8Array( arr ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 0, + 'done': false + }; + } + return { + 'done': true + }; + } + } +}); + +bench( pkg+'::iterable,clbk:from:', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint8Array.from( createIterable(), clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint8Array( arr ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 1, + 'done': false + }; + } + return { + 'done': true + }; + } + } + + function clbk( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.from.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.from.js new file mode 100644 index 000000000000..9ed431a30434 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.from.js @@ -0,0 +1,237 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' ); +var isUint8ClampedArray = require( '@stdlib/assert/is-uint8clampedarray' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': ( ITERATOR_SYMBOL === null ) +}; + + +// MAIN // + +bench( pkg+'::typed_array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Uint8ClampedArray( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint8ClampedArray.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( arr ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = new Uint8ClampedArray( [ 1, 2 ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint8ClampedArray.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( arr ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1; + } +}); + +bench( pkg+'::array:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1, 2 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint8ClampedArray.from( buf ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( arr ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::array,clbk:from', function benchmark( b ) { + var buf; + var arr; + var i; + + buf = [ 1, 2 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint8ClampedArray.from( buf, clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( arr ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function clbk( v ) { + return v + 1; + } +}); + +bench( pkg+'::iterable:from', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint8ClampedArray.from( createIterable() ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( arr ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 0, + 'done': false + }; + } + return { + 'done': true + }; + } + } +}); + +bench( pkg+'::iterable,clbk:from:', opts, function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint8ClampedArray.from( createIterable(), clbk ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( arr ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function createIterable() { + var out; + var i; + + out = {}; + out[ ITERATOR_SYMBOL ] = iterator; + + i = 0; + + return out; + + function iterator() { + return { + 'next': next + }; + } + + function next() { + i += 1; + if ( i <= 2 ) { + return { + 'value': 1, + 'done': false + }; + } + return { + 'done': true + }; + } + } + + function clbk( v ) { + return v + 1; + } +}); From 883c90711bdd9349257e97ce0f1bc2c6b57258b0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 10:59:01 -0700 Subject: [PATCH 0588/1062] Remove non-applicable benchmark --- .../benchmark/benchmark.includes.js | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.js index a41c5d69400e..2bae648465a2 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.js @@ -51,27 +51,3 @@ bench( pkg+':includes', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); - -bench( pkg+'::this_context:includes', function benchmark( b ) { - var Point; - var bool; - var p; - var i; - - Point = namedtypedtuple( [ 'x', 'y' ] ); - p = new Point(); - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - bool = p.includes( 3.14, {} ); - if ( typeof bool !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( bool ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); -}); From 1999b93c13d66e9717b9685cd0a8bb1509ec1c58 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 11:02:49 -0700 Subject: [PATCH 0589/1062] Add `includes` benchmarks --- .../float32/benchmark/benchmark.includes.js | 51 ++++++++++ .../benchmark/benchmark.includes.length.js | 94 +++++++++++++++++++ .../float64/benchmark/benchmark.includes.js | 51 ++++++++++ .../benchmark/benchmark.includes.length.js | 94 +++++++++++++++++++ .../int16/benchmark/benchmark.includes.js | 51 ++++++++++ .../benchmark/benchmark.includes.length.js | 94 +++++++++++++++++++ .../int32/benchmark/benchmark.includes.js | 51 ++++++++++ .../benchmark/benchmark.includes.length.js | 94 +++++++++++++++++++ .../int8/benchmark/benchmark.includes.js | 51 ++++++++++ .../benchmark/benchmark.includes.length.js | 94 +++++++++++++++++++ .../uint16/benchmark/benchmark.includes.js | 51 ++++++++++ .../benchmark/benchmark.includes.length.js | 94 +++++++++++++++++++ .../uint32/benchmark/benchmark.includes.js | 51 ++++++++++ .../benchmark/benchmark.includes.length.js | 94 +++++++++++++++++++ .../uint8/benchmark/benchmark.includes.js | 51 ++++++++++ .../benchmark/benchmark.includes.length.js | 94 +++++++++++++++++++ .../uint8c/benchmark/benchmark.includes.js | 51 ++++++++++ .../benchmark/benchmark.includes.length.js | 94 +++++++++++++++++++ 18 files changed, 1305 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.includes.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.includes.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.includes.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.includes.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.includes.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.includes.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.includes.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.includes.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.includes.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.includes.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.includes.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.includes.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.includes.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.includes.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.includes.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.includes.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.includes.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.includes.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.includes.js new file mode 100644 index 000000000000..8d4a3fbf00e0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.includes.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':includes', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3.14 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.includes.length.js new file mode 100644 index 000000000000..8e8ead4f2d88 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.includes.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3.14 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':includes:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.includes.js new file mode 100644 index 000000000000..ed684ae31356 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.includes.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':includes', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3.14 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.includes.length.js new file mode 100644 index 000000000000..e293534250df --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.includes.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3.14 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':includes:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.includes.js new file mode 100644 index 000000000000..088ba65084aa --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.includes.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':includes', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.includes.length.js new file mode 100644 index 000000000000..f9392025b54c --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.includes.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':includes:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.includes.js new file mode 100644 index 000000000000..c9d11aef4e5a --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.includes.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':includes', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.includes.length.js new file mode 100644 index 000000000000..a6ae2ec2d9e6 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.includes.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':includes:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.includes.js new file mode 100644 index 000000000000..158285c5f16b --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.includes.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':includes', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.includes.length.js new file mode 100644 index 000000000000..3b9c9968f18a --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.includes.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':includes:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.includes.js new file mode 100644 index 000000000000..72b31c389967 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.includes.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':includes', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.includes.length.js new file mode 100644 index 000000000000..f49ab50cc073 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.includes.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':includes:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.includes.js new file mode 100644 index 000000000000..c4f3cdd0f5bb --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.includes.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':includes', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.includes.length.js new file mode 100644 index 000000000000..460a6f203903 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.includes.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':includes:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.includes.js new file mode 100644 index 000000000000..eaa6797da8ff --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.includes.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':includes', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.includes.length.js new file mode 100644 index 000000000000..54799460e0d8 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.includes.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':includes:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.includes.js new file mode 100644 index 000000000000..707e980e7f9f --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.includes.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':includes', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.includes.length.js new file mode 100644 index 000000000000..bab59ee98bcb --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.includes.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.includes( 3 ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':includes:len='+len, f ); + } +} + +main(); From 7cb0182f9d02b7f663446389e3f4355f81cf81c5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 11:13:15 -0700 Subject: [PATCH 0590/1062] Update benchmarks to prevent optimizations --- .../@stdlib/array/float32/benchmark/benchmark.includes.js | 4 +++- .../array/float32/benchmark/benchmark.includes.length.js | 4 +++- .../@stdlib/array/float64/benchmark/benchmark.includes.js | 4 +++- .../array/float64/benchmark/benchmark.includes.length.js | 4 +++- .../@stdlib/array/int16/benchmark/benchmark.includes.js | 4 +++- .../array/int16/benchmark/benchmark.includes.length.js | 4 +++- .../@stdlib/array/int32/benchmark/benchmark.includes.js | 4 +++- .../array/int32/benchmark/benchmark.includes.length.js | 4 +++- .../@stdlib/array/int8/benchmark/benchmark.includes.js | 4 +++- .../@stdlib/array/int8/benchmark/benchmark.includes.length.js | 4 +++- .../@stdlib/array/uint16/benchmark/benchmark.includes.js | 4 +++- .../array/uint16/benchmark/benchmark.includes.length.js | 4 +++- .../@stdlib/array/uint32/benchmark/benchmark.includes.js | 4 +++- .../array/uint32/benchmark/benchmark.includes.length.js | 4 +++- .../@stdlib/array/uint8/benchmark/benchmark.includes.js | 4 +++- .../array/uint8/benchmark/benchmark.includes.length.js | 4 +++- .../@stdlib/array/uint8c/benchmark/benchmark.includes.js | 4 +++- .../array/uint8c/benchmark/benchmark.includes.length.js | 4 +++- 18 files changed, 54 insertions(+), 18 deletions(-) diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.includes.js index 8d4a3fbf00e0..3082378a5bf2 100644 --- a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.includes.js +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.includes.js @@ -31,13 +31,15 @@ var Float32Array = require( './../lib' ); bench( pkg+':includes', function benchmark( b ) { var bool; var arr; + var v; var i; arr = new Float32Array( 2 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3.14 ); + v = (i%127) + 1.0; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.includes.length.js index 8e8ead4f2d88..a9c2d9fab02c 100644 --- a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.includes.length.js +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.includes.length.js @@ -48,11 +48,13 @@ function createBenchmark( len ) { */ function benchmark( b ) { var bool; + var v; var i; b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3.14 ); + v = (i%127) + 1.0; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.includes.js index ed684ae31356..411edf6a20c4 100644 --- a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.includes.js +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.includes.js @@ -31,13 +31,15 @@ var Float64Array = require( './../lib' ); bench( pkg+':includes', function benchmark( b ) { var bool; var arr; + var v; var i; arr = new Float64Array( 2 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3.14 ); + v = (i%127) + 1.0; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.includes.length.js index e293534250df..9c649244ec91 100644 --- a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.includes.length.js +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.includes.length.js @@ -48,11 +48,13 @@ function createBenchmark( len ) { */ function benchmark( b ) { var bool; + var v; var i; b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3.14 ); + v = (i%127) + 1.0; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.includes.js index 088ba65084aa..62c3d8dde772 100644 --- a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.includes.js +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.includes.js @@ -31,13 +31,15 @@ var Int16Array = require( './../lib' ); bench( pkg+':includes', function benchmark( b ) { var bool; var arr; + var v; var i; arr = new Int16Array( 2 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3 ); + v = (i%127) + 1; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.includes.length.js index f9392025b54c..d69dfe988444 100644 --- a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.includes.length.js +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.includes.length.js @@ -48,11 +48,13 @@ function createBenchmark( len ) { */ function benchmark( b ) { var bool; + var v; var i; b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3 ); + v = (i%127) + 1; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.includes.js index c9d11aef4e5a..144ca93dec5d 100644 --- a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.includes.js +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.includes.js @@ -31,13 +31,15 @@ var Int32Array = require( './../lib' ); bench( pkg+':includes', function benchmark( b ) { var bool; var arr; + var v; var i; arr = new Int32Array( 2 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3 ); + v = (i%127) + 1; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.includes.length.js index a6ae2ec2d9e6..d9a6c8d417a0 100644 --- a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.includes.length.js +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.includes.length.js @@ -48,11 +48,13 @@ function createBenchmark( len ) { */ function benchmark( b ) { var bool; + var v; var i; b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3 ); + v = (i%127) + 1; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.includes.js index 158285c5f16b..78e6a65f158b 100644 --- a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.includes.js +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.includes.js @@ -31,13 +31,15 @@ var Int8Array = require( './../lib' ); bench( pkg+':includes', function benchmark( b ) { var bool; var arr; + var v; var i; arr = new Int8Array( 2 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3 ); + v = (i%127) + 1; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.includes.length.js index 3b9c9968f18a..3aa2aaa716cb 100644 --- a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.includes.length.js +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.includes.length.js @@ -48,11 +48,13 @@ function createBenchmark( len ) { */ function benchmark( b ) { var bool; + var v; var i; b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3 ); + v = (i%127) + 1; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.includes.js index 72b31c389967..45b77212c999 100644 --- a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.includes.js +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.includes.js @@ -31,13 +31,15 @@ var Uint16Array = require( './../lib' ); bench( pkg+':includes', function benchmark( b ) { var bool; var arr; + var v; var i; arr = new Uint16Array( 2 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3 ); + v = (i%127) + 1; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.includes.length.js index f49ab50cc073..6bc43f188835 100644 --- a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.includes.length.js +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.includes.length.js @@ -48,11 +48,13 @@ function createBenchmark( len ) { */ function benchmark( b ) { var bool; + var v; var i; b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3 ); + v = (i%127) + 1; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.includes.js index c4f3cdd0f5bb..e161e273fff9 100644 --- a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.includes.js +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.includes.js @@ -31,13 +31,15 @@ var Uint32Array = require( './../lib' ); bench( pkg+':includes', function benchmark( b ) { var bool; var arr; + var v; var i; arr = new Uint32Array( 2 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3 ); + v = (i%127) + 1; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.includes.length.js index 460a6f203903..3472fabb999e 100644 --- a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.includes.length.js +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.includes.length.js @@ -48,11 +48,13 @@ function createBenchmark( len ) { */ function benchmark( b ) { var bool; + var v; var i; b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3 ); + v = (i%127) + 1; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.includes.js index eaa6797da8ff..12a1656c8364 100644 --- a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.includes.js +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.includes.js @@ -31,13 +31,15 @@ var Uint8Array = require( './../lib' ); bench( pkg+':includes', function benchmark( b ) { var bool; var arr; + var v; var i; arr = new Uint8Array( 2 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3 ); + v = (i%127) + 1; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.includes.length.js index 54799460e0d8..fdb98c85a978 100644 --- a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.includes.length.js +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.includes.length.js @@ -48,11 +48,13 @@ function createBenchmark( len ) { */ function benchmark( b ) { var bool; + var v; var i; b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3 ); + v = (i%127) + 1; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.includes.js index 707e980e7f9f..b709e50ca208 100644 --- a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.includes.js +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.includes.js @@ -31,13 +31,15 @@ var Uint8ClampedArray = require( './../lib' ); bench( pkg+':includes', function benchmark( b ) { var bool; var arr; + var v; var i; arr = new Uint8ClampedArray( 2 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3 ); + v = (i%127) + 1; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.includes.length.js index bab59ee98bcb..d6ff5c71fb7f 100644 --- a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.includes.length.js +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.includes.length.js @@ -48,11 +48,13 @@ function createBenchmark( len ) { */ function benchmark( b ) { var bool; + var v; var i; b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = arr.includes( 3 ); + v = (i%127) + 1; + bool = arr.includes( v ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } From 9f8d5bfada517eec2468792dc6ae976467535663 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 11:14:55 -0700 Subject: [PATCH 0591/1062] Update benchmarks to prevent optimizations --- .../utils/named-typed-tuple/benchmark/benchmark.includes.js | 2 +- .../named-typed-tuple/benchmark/benchmark.includes.length.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.js index 2bae648465a2..a89bb91279e6 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.js @@ -39,7 +39,7 @@ bench( pkg+':includes', function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = p.includes( 3.14 ); + bool = p.includes( 3.14*i ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.length.js index 5f386c5c7392..f921e31fc919 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.length.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.includes.length.js @@ -63,7 +63,7 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - bool = p.includes( 3.14 ); + bool = p.includes( 3.14*i ); if ( typeof bool !== 'boolean' ) { b.fail( 'should return a boolean' ); } From 80dcccbedecb1c4d4d65a46263ed2434b674975c Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 11:23:41 -0700 Subject: [PATCH 0592/1062] Update benchmarks to prevent optimizations --- .../utils/named-typed-tuple/benchmark/benchmark.index_of.js | 2 +- .../named-typed-tuple/benchmark/benchmark.index_of.length.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.js index b0d5c8d936d6..c5e8b71f6d80 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.js @@ -39,7 +39,7 @@ bench( pkg+':indexOf', function benchmark( b ) { // Benchmark worst case scenario... b.tic(); for ( i = 0; i < b.iterations; i++ ) { - out = p.indexOf( 3.14 ); + out = p.indexOf( 3.14*i ); if ( out !== -1 ) { b.fail( 'should return -1' ); } diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.length.js index 0b2ca0a42716..81aee20e1380 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.length.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.length.js @@ -62,7 +62,7 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - out = p.indexOf( 3.14 ); + out = p.indexOf( 3.14*i ); if ( out !== -1 ) { b.fail( 'should return -1' ); } From 9dbb284ad8fbf7a4332a09a729a2882d5b9166aa Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 11:26:59 -0700 Subject: [PATCH 0593/1062] Add `indexOf` benchmarks --- .../float32/benchmark/benchmark.index_of.js | 53 +++++++++++ .../benchmark/benchmark.index_of.length.js | 95 +++++++++++++++++++ .../float64/benchmark/benchmark.index_of.js | 53 +++++++++++ .../benchmark/benchmark.index_of.length.js | 95 +++++++++++++++++++ .../int16/benchmark/benchmark.index_of.js | 53 +++++++++++ .../benchmark/benchmark.index_of.length.js | 95 +++++++++++++++++++ .../int32/benchmark/benchmark.index_of.js | 53 +++++++++++ .../benchmark/benchmark.index_of.length.js | 95 +++++++++++++++++++ .../int8/benchmark/benchmark.index_of.js | 53 +++++++++++ .../benchmark/benchmark.index_of.length.js | 95 +++++++++++++++++++ .../uint16/benchmark/benchmark.index_of.js | 53 +++++++++++ .../benchmark/benchmark.index_of.length.js | 95 +++++++++++++++++++ .../uint32/benchmark/benchmark.index_of.js | 53 +++++++++++ .../benchmark/benchmark.index_of.length.js | 95 +++++++++++++++++++ .../uint8/benchmark/benchmark.index_of.js | 53 +++++++++++ .../benchmark/benchmark.index_of.length.js | 95 +++++++++++++++++++ .../uint8c/benchmark/benchmark.index_of.js | 53 +++++++++++ .../benchmark/benchmark.index_of.length.js | 95 +++++++++++++++++++ 18 files changed, 1332 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.index_of.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.index_of.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.index_of.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.index_of.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.index_of.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.index_of.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.index_of.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.index_of.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.index_of.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.index_of.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.index_of.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.index_of.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.index_of.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.index_of.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.index_of.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.index_of.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.index_of.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.index_of.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.index_of.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.index_of.js new file mode 100644 index 000000000000..b289de192037 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':indexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Float32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1.0; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.index_of.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.index_of.length.js new file mode 100644 index 000000000000..adb0e9706448 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1.0; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':indexOf:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.index_of.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.index_of.js new file mode 100644 index 000000000000..ccbf9a329628 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':indexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Float64Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1.0; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.index_of.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.index_of.length.js new file mode 100644 index 000000000000..6f5742809262 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1.0; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':indexOf:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.index_of.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.index_of.js new file mode 100644 index 000000000000..bab8a1a7339b --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':indexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Int16Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.index_of.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.index_of.length.js new file mode 100644 index 000000000000..c2258f7541ea --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':indexOf:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.index_of.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.index_of.js new file mode 100644 index 000000000000..45d65f02b648 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':indexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Int32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.index_of.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.index_of.length.js new file mode 100644 index 000000000000..cdf1ca4364cc --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':indexOf:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.index_of.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.index_of.js new file mode 100644 index 000000000000..d638435a7cb6 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':indexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Int8Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.index_of.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.index_of.length.js new file mode 100644 index 000000000000..6cf9936b48dc --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':indexOf:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.index_of.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.index_of.js new file mode 100644 index 000000000000..c3f4e8655e7d --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':indexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Uint16Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.index_of.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.index_of.length.js new file mode 100644 index 000000000000..70ae6f9c2973 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':indexOf:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.index_of.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.index_of.js new file mode 100644 index 000000000000..7f04d9653a7f --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':indexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Uint32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.index_of.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.index_of.length.js new file mode 100644 index 000000000000..9adbbeec50c2 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':indexOf:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.index_of.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.index_of.js new file mode 100644 index 000000000000..8fa6d85b43ed --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':indexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Uint8Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.index_of.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.index_of.length.js new file mode 100644 index 000000000000..dd76a68acbd6 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':indexOf:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.index_of.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.index_of.js new file mode 100644 index 000000000000..8cb378320567 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':indexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Uint8ClampedArray( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.index_of.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.index_of.length.js new file mode 100644 index 000000000000..9b55a7f8ead6 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.indexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':indexOf:len='+len, f ); + } +} + +main(); From 3a6f0ed57308c0f0f0943f8627bc87169ac50e5a Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 11:33:20 -0700 Subject: [PATCH 0594/1062] Add `join` benchmarks --- .../array/float32/benchmark/benchmark.join.js | 51 ++++++++++ .../benchmark/benchmark.join.length.js | 94 +++++++++++++++++++ .../array/float64/benchmark/benchmark.join.js | 51 ++++++++++ .../benchmark/benchmark.join.length.js | 94 +++++++++++++++++++ .../array/int16/benchmark/benchmark.join.js | 51 ++++++++++ .../int16/benchmark/benchmark.join.length.js | 94 +++++++++++++++++++ .../array/int32/benchmark/benchmark.join.js | 51 ++++++++++ .../int32/benchmark/benchmark.join.length.js | 94 +++++++++++++++++++ .../array/int8/benchmark/benchmark.join.js | 51 ++++++++++ .../int8/benchmark/benchmark.join.length.js | 94 +++++++++++++++++++ .../array/uint16/benchmark/benchmark.join.js | 51 ++++++++++ .../uint16/benchmark/benchmark.join.length.js | 94 +++++++++++++++++++ .../array/uint32/benchmark/benchmark.join.js | 51 ++++++++++ .../uint32/benchmark/benchmark.join.length.js | 94 +++++++++++++++++++ .../array/uint8/benchmark/benchmark.join.js | 51 ++++++++++ .../uint8/benchmark/benchmark.join.length.js | 94 +++++++++++++++++++ .../array/uint8c/benchmark/benchmark.join.js | 51 ++++++++++ .../uint8c/benchmark/benchmark.join.length.js | 94 +++++++++++++++++++ 18 files changed, 1305 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.join.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.join.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.join.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.join.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.join.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.join.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.join.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.join.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.join.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.join.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.join.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.join.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.join.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.join.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.join.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.join.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.join.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.join.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.join.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.join.js new file mode 100644 index 000000000000..d31859c4cf04 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.join.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':join', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.join.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.join.length.js new file mode 100644 index 000000000000..93632d2fe1f1 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.join.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':join:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.join.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.join.js new file mode 100644 index 000000000000..96c057f1ea43 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.join.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':join', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.join.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.join.length.js new file mode 100644 index 000000000000..55bf7ae0fdb0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.join.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':join:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.join.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.join.js new file mode 100644 index 000000000000..6f68e402dabe --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.join.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':join', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.join.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.join.length.js new file mode 100644 index 000000000000..4d4344de3e89 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.join.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':join:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.join.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.join.js new file mode 100644 index 000000000000..d4cbe4078498 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.join.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':join', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.join.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.join.length.js new file mode 100644 index 000000000000..24ef4d7baafb --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.join.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':join:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.join.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.join.js new file mode 100644 index 000000000000..2f0ddb4f8ad6 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.join.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':join', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.join.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.join.length.js new file mode 100644 index 000000000000..93d779a5e813 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.join.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':join:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.join.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.join.js new file mode 100644 index 000000000000..bc8234cfc873 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.join.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':join', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.join.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.join.length.js new file mode 100644 index 000000000000..94f15eab5bc3 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.join.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':join:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.join.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.join.js new file mode 100644 index 000000000000..74605f53f0c5 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.join.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':join', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.join.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.join.length.js new file mode 100644 index 000000000000..8533a1299b4b --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.join.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':join:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.join.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.join.js new file mode 100644 index 000000000000..958aa5489b70 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.join.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':join', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.join.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.join.length.js new file mode 100644 index 000000000000..c25d21214e9d --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.join.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':join:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.join.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.join.js new file mode 100644 index 000000000000..ee4ac6254824 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.join.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':join', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.join.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.join.length.js new file mode 100644 index 000000000000..7b7c9d89fdf5 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.join.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i % 127; + out = arr.join(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':join:len='+len, f ); + } +} + +main(); From 9a6a89446234f607f7210f424b9cae323f45398d Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 11:36:00 -0700 Subject: [PATCH 0595/1062] Update benchmarks to prevent optimizations --- .../@stdlib/utils/named-typed-tuple/benchmark/benchmark.join.js | 1 + .../utils/named-typed-tuple/benchmark/benchmark.join.length.js | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.join.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.join.js index 8d321c478176..aeb2dd75ab15 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.join.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.join.js @@ -38,6 +38,7 @@ bench( pkg+':join', function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { + p[ 0 ] = i; out = p.join(); if ( typeof out !== 'string' ) { b.fail( 'should return a string' ); diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.join.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.join.length.js index f4337a17ecba..b6ea7bca8544 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.join.length.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.join.length.js @@ -62,6 +62,7 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { + p[ 0 ] = i; out = p.join(); if ( typeof out !== 'string' ) { b.fail( 'should return a string' ); From 8be41d7252a056407c1d978e23a2ecf67d0cb056 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 11:43:01 -0700 Subject: [PATCH 0596/1062] Add `keys` benchmarks --- .../array/float32/benchmark/benchmark.keys.js | 50 +++++++++++++++++++ .../array/float64/benchmark/benchmark.keys.js | 50 +++++++++++++++++++ .../array/int16/benchmark/benchmark.keys.js | 50 +++++++++++++++++++ .../array/int32/benchmark/benchmark.keys.js | 50 +++++++++++++++++++ .../array/int8/benchmark/benchmark.keys.js | 50 +++++++++++++++++++ .../array/uint16/benchmark/benchmark.keys.js | 50 +++++++++++++++++++ .../array/uint32/benchmark/benchmark.keys.js | 50 +++++++++++++++++++ .../array/uint8/benchmark/benchmark.keys.js | 50 +++++++++++++++++++ .../array/uint8c/benchmark/benchmark.keys.js | 50 +++++++++++++++++++ 9 files changed, 450 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.keys.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.keys.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.keys.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.keys.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.keys.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.keys.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.keys.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.keys.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.keys.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.keys.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.keys.js new file mode 100644 index 000000000000..b3445cc524d8 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.keys.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':keys', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.keys(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.keys.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.keys.js new file mode 100644 index 000000000000..e01f172d12b4 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.keys.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':keys', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.keys(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.keys.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.keys.js new file mode 100644 index 000000000000..5affbd12bf19 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.keys.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':keys', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.keys(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.keys.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.keys.js new file mode 100644 index 000000000000..1b086405a292 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.keys.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':keys', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.keys(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.keys.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.keys.js new file mode 100644 index 000000000000..dfdeb1dc44c8 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.keys.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':keys', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.keys(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.keys.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.keys.js new file mode 100644 index 000000000000..d65e8f0f343d --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.keys.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':keys', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.keys(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.keys.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.keys.js new file mode 100644 index 000000000000..e3d8e656726a --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.keys.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':keys', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.keys(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.keys.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.keys.js new file mode 100644 index 000000000000..2c70df05ee1d --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.keys.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':keys', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.keys(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.keys.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.keys.js new file mode 100644 index 000000000000..9f472e0b5d47 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.keys.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':keys', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.keys(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From f566da2ac650b0fa73da183cd3f735872774f992 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 11:43:56 -0700 Subject: [PATCH 0597/1062] Fix test value generation --- .../utils/named-typed-tuple/benchmark/benchmark.index_of.js | 2 +- .../named-typed-tuple/benchmark/benchmark.index_of.length.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.js index c5e8b71f6d80..b2af340a276d 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.js @@ -39,7 +39,7 @@ bench( pkg+':indexOf', function benchmark( b ) { // Benchmark worst case scenario... b.tic(); for ( i = 0; i < b.iterations; i++ ) { - out = p.indexOf( 3.14*i ); + out = p.indexOf( (3.14*i)+1.0 ); if ( out !== -1 ) { b.fail( 'should return -1' ); } diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.length.js index 81aee20e1380..8a21a7c9eb6b 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.length.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.index_of.length.js @@ -62,7 +62,7 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - out = p.indexOf( 3.14*i ); + out = p.indexOf( (3.14*i)+1.0 ); if ( out !== -1 ) { b.fail( 'should return -1' ); } From 1986af8a641419b2149fdaf7bed830e26180f762 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 11:52:13 -0700 Subject: [PATCH 0598/1062] Update benchmarks to prevent optimizations --- .../named-typed-tuple/benchmark/benchmark.last_field_of.js | 2 +- .../benchmark/benchmark.last_field_of.length.js | 2 +- .../named-typed-tuple/benchmark/benchmark.last_index_of.js | 2 +- .../benchmark/benchmark.last_index_of.length.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_field_of.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_field_of.js index d3f058574562..2df416454b39 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_field_of.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_field_of.js @@ -39,7 +39,7 @@ bench( pkg+':lastFieldOf', function benchmark( b ) { // Benchmark worst case scenario... b.tic(); for ( i = 0; i < b.iterations; i++ ) { - out = p.lastFieldOf( 3.14 ); + out = p.lastFieldOf( (3.14*i)+1.0 ); if ( typeof out !== 'undefined' ) { b.fail( 'should return undefined' ); } diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_field_of.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_field_of.length.js index 958250aacc3c..8037af10381a 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_field_of.length.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_field_of.length.js @@ -62,7 +62,7 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - out = p.lastFieldOf( 3.14 ); + out = p.lastFieldOf( (3.14*i)+1.0 ); if ( typeof out !== 'undefined' ) { b.fail( 'should return undefined' ); } diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_index_of.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_index_of.js index dcb33a97b698..e4a4299fd112 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_index_of.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_index_of.js @@ -39,7 +39,7 @@ bench( pkg+':lastIndexOf', function benchmark( b ) { // Benchmark worst case scenario... b.tic(); for ( i = 0; i < b.iterations; i++ ) { - out = p.lastIndexOf( 3.14 ); + out = p.lastIndexOf( (3.14*i)+1.0 ); if ( out !== -1 ) { b.fail( 'should return -1' ); } diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_index_of.length.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_index_of.length.js index 7c0194b5ce8b..447830934339 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_index_of.length.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.last_index_of.length.js @@ -62,7 +62,7 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - out = p.lastIndexOf( 3.14 ); + out = p.lastIndexOf( (3.14*i)+1.0 ); if ( out !== -1 ) { b.fail( 'should return -1' ); } From a4024b66010451e5d56281d9e36fddaac20afd11 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 11:52:44 -0700 Subject: [PATCH 0599/1062] Add `lastIndexOf` benchmarks --- .../benchmark/benchmark.last_index_of.js | 53 +++++++++++ .../benchmark.last_index_of.length.js | 95 +++++++++++++++++++ .../benchmark/benchmark.last_index_of.js | 53 +++++++++++ .../benchmark.last_index_of.length.js | 95 +++++++++++++++++++ .../benchmark/benchmark.last_index_of.js | 53 +++++++++++ .../benchmark.last_index_of.length.js | 95 +++++++++++++++++++ .../benchmark/benchmark.last_index_of.js | 53 +++++++++++ .../benchmark.last_index_of.length.js | 95 +++++++++++++++++++ .../int8/benchmark/benchmark.last_index_of.js | 53 +++++++++++ .../benchmark.last_index_of.length.js | 95 +++++++++++++++++++ .../benchmark/benchmark.last_index_of.js | 53 +++++++++++ .../benchmark.last_index_of.length.js | 95 +++++++++++++++++++ .../benchmark/benchmark.last_index_of.js | 53 +++++++++++ .../benchmark.last_index_of.length.js | 95 +++++++++++++++++++ .../benchmark/benchmark.last_index_of.js | 53 +++++++++++ .../benchmark.last_index_of.length.js | 95 +++++++++++++++++++ .../benchmark/benchmark.last_index_of.js | 53 +++++++++++ .../benchmark.last_index_of.length.js | 95 +++++++++++++++++++ 18 files changed, 1332 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.last_index_of.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.last_index_of.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.last_index_of.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.last_index_of.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.last_index_of.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.last_index_of.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.last_index_of.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.last_index_of.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.last_index_of.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.last_index_of.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.last_index_of.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.last_index_of.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.last_index_of.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.last_index_of.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.last_index_of.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.last_index_of.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.last_index_of.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.last_index_of.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.last_index_of.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.last_index_of.js new file mode 100644 index 000000000000..b20104455e59 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.last_index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':lastIndexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Float32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1.0; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.last_index_of.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.last_index_of.length.js new file mode 100644 index 000000000000..a9bec6955749 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.last_index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1.0; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':lastIndexOf:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.last_index_of.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.last_index_of.js new file mode 100644 index 000000000000..3bd0469b6bfa --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.last_index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':lastIndexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Float64Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1.0; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.last_index_of.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.last_index_of.length.js new file mode 100644 index 000000000000..4843100c8bd2 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.last_index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1.0; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':lastIndexOf:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.last_index_of.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.last_index_of.js new file mode 100644 index 000000000000..00d3186a22f9 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.last_index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':lastIndexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Int16Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.last_index_of.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.last_index_of.length.js new file mode 100644 index 000000000000..aa69337dcf11 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.last_index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':lastIndexOf:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.last_index_of.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.last_index_of.js new file mode 100644 index 000000000000..77a474e34d77 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.last_index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':lastIndexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Int32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.last_index_of.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.last_index_of.length.js new file mode 100644 index 000000000000..1d5b5ae37911 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.last_index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':lastIndexOf:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.last_index_of.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.last_index_of.js new file mode 100644 index 000000000000..00b9448c5a6a --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.last_index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':lastIndexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Int8Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.last_index_of.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.last_index_of.length.js new file mode 100644 index 000000000000..12efaf1acd6c --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.last_index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':lastIndexOf:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.last_index_of.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.last_index_of.js new file mode 100644 index 000000000000..318584ae6337 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.last_index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':lastIndexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Uint16Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.last_index_of.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.last_index_of.length.js new file mode 100644 index 000000000000..2f711a7311cf --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.last_index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':lastIndexOf:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.last_index_of.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.last_index_of.js new file mode 100644 index 000000000000..dd0e58474873 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.last_index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':lastIndexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Uint32Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.last_index_of.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.last_index_of.length.js new file mode 100644 index 000000000000..03ab92e987cc --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.last_index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':lastIndexOf:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.last_index_of.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.last_index_of.js new file mode 100644 index 000000000000..0e80fc654916 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.last_index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':lastIndexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Uint8Array( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.last_index_of.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.last_index_of.length.js new file mode 100644 index 000000000000..b36aa4c73cd0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.last_index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':lastIndexOf:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.last_index_of.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.last_index_of.js new file mode 100644 index 000000000000..97746402a0cf --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.last_index_of.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':lastIndexOf', function benchmark( b ) { + var out; + var arr; + var v; + var i; + + arr = new Uint8ClampedArray( 2 ); + + // Benchmark worst case scenario... + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.last_index_of.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.last_index_of.length.js new file mode 100644 index 000000000000..e509fd027c2a --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.last_index_of.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = (i%127) + 1; + out = arr.lastIndexOf( v ); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + } + b.toc(); + if ( out !== -1 ) { + b.fail( 'should return -1' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':lastIndexOf:len='+len, f ); + } +} + +main(); From 73ff107372de405fd3b199eb25874e6a1d05cf18 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 13:40:26 -0700 Subject: [PATCH 0600/1062] Add `map` benchmarks --- .../array/float32/benchmark/benchmark.map.js | 81 ++++++++++++++ .../float32/benchmark/benchmark.map.length.js | 105 ++++++++++++++++++ .../array/float64/benchmark/benchmark.map.js | 81 ++++++++++++++ .../float64/benchmark/benchmark.map.length.js | 105 ++++++++++++++++++ .../array/int16/benchmark/benchmark.map.js | 81 ++++++++++++++ .../int16/benchmark/benchmark.map.length.js | 105 ++++++++++++++++++ .../array/int32/benchmark/benchmark.map.js | 81 ++++++++++++++ .../int32/benchmark/benchmark.map.length.js | 105 ++++++++++++++++++ .../array/int8/benchmark/benchmark.map.js | 81 ++++++++++++++ .../int8/benchmark/benchmark.map.length.js | 105 ++++++++++++++++++ .../array/uint16/benchmark/benchmark.map.js | 81 ++++++++++++++ .../uint16/benchmark/benchmark.map.length.js | 105 ++++++++++++++++++ .../array/uint32/benchmark/benchmark.map.js | 81 ++++++++++++++ .../uint32/benchmark/benchmark.map.length.js | 105 ++++++++++++++++++ .../array/uint8/benchmark/benchmark.map.js | 81 ++++++++++++++ .../uint8/benchmark/benchmark.map.length.js | 105 ++++++++++++++++++ .../array/uint8c/benchmark/benchmark.map.js | 81 ++++++++++++++ .../uint8c/benchmark/benchmark.map.length.js | 105 ++++++++++++++++++ 18 files changed, 1674 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.map.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.map.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.map.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.map.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.map.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.map.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.map.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.map.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.map.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.map.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.map.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.map.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.map.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.map.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.map.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.map.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.map.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.map.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.map.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.map.js new file mode 100644 index 000000000000..fc405d038a8a --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.map.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isFloat32Array = require( '@stdlib/assert/is-float32array' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat32Array( out ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1.0; + } +}); + +bench( pkg+'::this_context:map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat32Array( out ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.map.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.map.length.js new file mode 100644 index 000000000000..5149d9d791b9 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.map.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isFloat32Array = require( '@stdlib/assert/is-float32array' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Maps an array element to a new value. +* +* @private +* @param {*} value - array element +* @returns {*} new value +*/ +function fcn( value ) { + return value + 1.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat32Array( out ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':map:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.map.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.map.js new file mode 100644 index 000000000000..652e648381f0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.map.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isFloat64Array = require( '@stdlib/assert/is-float64array' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat64Array( out ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1.0; + } +}); + +bench( pkg+'::this_context:map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat64Array( out ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.map.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.map.length.js new file mode 100644 index 000000000000..5b974ee49455 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.map.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isFloat64Array = require( '@stdlib/assert/is-float64array' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Maps an array element to a new value. +* +* @private +* @param {*} value - array element +* @returns {*} new value +*/ +function fcn( value ) { + return value + 1.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat64Array( out ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':map:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.map.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.map.js new file mode 100644 index 000000000000..4405af654160 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.map.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt16Array = require( '@stdlib/assert/is-int16array' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt16Array( out ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); + +bench( pkg+'::this_context:map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt16Array( out ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.map.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.map.length.js new file mode 100644 index 000000000000..2b3c70f8af75 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.map.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInt16Array = require( '@stdlib/assert/is-int16array' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Maps an array element to a new value. +* +* @private +* @param {*} value - array element +* @returns {*} new value +*/ +function fcn( value ) { + return value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt16Array( out ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':map:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.map.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.map.js new file mode 100644 index 000000000000..49b37a12c737 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.map.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt32Array = require( '@stdlib/assert/is-int32array' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt32Array( out ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); + +bench( pkg+'::this_context:map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt32Array( out ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.map.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.map.length.js new file mode 100644 index 000000000000..56053bebdf46 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.map.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInt32Array = require( '@stdlib/assert/is-int32array' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Maps an array element to a new value. +* +* @private +* @param {*} value - array element +* @returns {*} new value +*/ +function fcn( value ) { + return value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt32Array( out ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':map:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.map.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.map.js new file mode 100644 index 000000000000..ff3dfb1bb85a --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.map.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt8Array = require( '@stdlib/assert/is-int8array' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt8Array( out ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); + +bench( pkg+'::this_context:map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt8Array( out ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.map.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.map.length.js new file mode 100644 index 000000000000..e44b72129b25 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.map.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInt8Array = require( '@stdlib/assert/is-int8array' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Maps an array element to a new value. +* +* @private +* @param {*} value - array element +* @returns {*} new value +*/ +function fcn( value ) { + return value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt8Array( out ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':map:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.map.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.map.js new file mode 100644 index 000000000000..a6389e1de64e --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.map.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint16Array = require( '@stdlib/assert/is-uint16array' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint16Array( out ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); + +bench( pkg+'::this_context:map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint16Array( out ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.map.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.map.length.js new file mode 100644 index 000000000000..460ac0681885 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.map.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint16Array = require( '@stdlib/assert/is-uint16array' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Maps an array element to a new value. +* +* @private +* @param {*} value - array element +* @returns {*} new value +*/ +function fcn( value ) { + return value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint16Array( out ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':map:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.map.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.map.js new file mode 100644 index 000000000000..b57414a6c98b --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.map.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint32Array( out ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); + +bench( pkg+'::this_context:map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint32Array( out ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.map.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.map.length.js new file mode 100644 index 000000000000..0fed7073d447 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.map.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Maps an array element to a new value. +* +* @private +* @param {*} value - array element +* @returns {*} new value +*/ +function fcn( value ) { + return value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint32Array( out ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':map:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.map.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.map.js new file mode 100644 index 000000000000..106bc120486b --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.map.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint8Array = require( '@stdlib/assert/is-uint8array' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8Array( out ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); + +bench( pkg+'::this_context:map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8Array( out ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.map.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.map.length.js new file mode 100644 index 000000000000..f0200bd5778f --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.map.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint8Array = require( '@stdlib/assert/is-uint8array' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Maps an array element to a new value. +* +* @private +* @param {*} value - array element +* @returns {*} new value +*/ +function fcn( value ) { + return value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8Array( out ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':map:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.map.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.map.js new file mode 100644 index 000000000000..a28681c855e4 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.map.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint8ClampedArray = require( '@stdlib/assert/is-uint8clampedarray' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( out ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); + +bench( pkg+'::this_context:map', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn, {} ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( out ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.map.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.map.length.js new file mode 100644 index 000000000000..40011ea58bac --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.map.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint8ClampedArray = require( '@stdlib/assert/is-uint8clampedarray' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Maps an array element to a new value. +* +* @private +* @param {*} value - array element +* @returns {*} new value +*/ +function fcn( value ) { + return value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.map( fcn ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( out ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':map:len='+len, f ); + } +} + +main(); From a80fcd57fef31458a3390fc4591a6bade4a65481 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 13:49:05 -0700 Subject: [PATCH 0601/1062] Add `of` benchmarks --- .../array/float32/benchmark/benchmark.of.js | 48 +++++++++++++++++++ .../array/float64/benchmark/benchmark.of.js | 48 +++++++++++++++++++ .../array/int16/benchmark/benchmark.of.js | 48 +++++++++++++++++++ .../array/int32/benchmark/benchmark.of.js | 48 +++++++++++++++++++ .../array/int8/benchmark/benchmark.of.js | 48 +++++++++++++++++++ .../array/uint16/benchmark/benchmark.of.js | 48 +++++++++++++++++++ .../array/uint32/benchmark/benchmark.of.js | 48 +++++++++++++++++++ .../array/uint8/benchmark/benchmark.of.js | 48 +++++++++++++++++++ .../array/uint8c/benchmark/benchmark.of.js | 48 +++++++++++++++++++ 9 files changed, 432 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.of.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.of.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.of.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.of.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.of.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.of.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.of.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.of.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.of.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.of.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.of.js new file mode 100644 index 000000000000..0eaa158664d3 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.of.js @@ -0,0 +1,48 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isFloat32Array = require( '@stdlib/assert/is-float32array' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':of', function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Float32Array.of( i, 2.0 ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isFloat32Array( arr ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.of.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.of.js new file mode 100644 index 000000000000..25d5c5e3c0d1 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.of.js @@ -0,0 +1,48 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isFloat64Array = require( '@stdlib/assert/is-float64array' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':of', function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Float64Array.of( i, 2.0 ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isFloat64Array( arr ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.of.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.of.js new file mode 100644 index 000000000000..837f9e3c738a --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.of.js @@ -0,0 +1,48 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt16Array = require( '@stdlib/assert/is-int16array' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':of', function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int16Array.of( i, 2 ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt16Array( arr ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.of.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.of.js new file mode 100644 index 000000000000..dce80d0f2ec9 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.of.js @@ -0,0 +1,48 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt32Array = require( '@stdlib/assert/is-int32array' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':of', function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int32Array.of( i, 2 ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt32Array( arr ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.of.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.of.js new file mode 100644 index 000000000000..53a4794080d0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.of.js @@ -0,0 +1,48 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt8Array = require( '@stdlib/assert/is-int8array' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':of', function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Int8Array.of( i, 2 ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isInt8Array( arr ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.of.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.of.js new file mode 100644 index 000000000000..a82d4ffead17 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.of.js @@ -0,0 +1,48 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint16Array = require( '@stdlib/assert/is-uint16array' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':of', function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint16Array.of( i, 2 ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint16Array( arr ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.of.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.of.js new file mode 100644 index 000000000000..4b7f085c2784 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.of.js @@ -0,0 +1,48 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':of', function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint32Array.of( i, 2 ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint32Array( arr ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.of.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.of.js new file mode 100644 index 000000000000..6aaa2bf409fa --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.of.js @@ -0,0 +1,48 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint8Array = require( '@stdlib/assert/is-uint8array' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':of', function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint8Array.of( i, 2 ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint8Array( arr ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.of.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.of.js new file mode 100644 index 000000000000..41b32ac8a314 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.of.js @@ -0,0 +1,48 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint8ClampedArray = require( '@stdlib/assert/is-uint8clampedarray' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':of', function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = Uint8ClampedArray.of( i, 2 ); + if ( arr.length !== 2 ) { + b.fail( 'should have length 2' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( arr ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 5ab3c87bc9d733028a7caa355b619739cc71869a Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 13:50:25 -0700 Subject: [PATCH 0602/1062] Update benchmarks to prevent optimizations --- .../@stdlib/utils/named-typed-tuple/benchmark/benchmark.of.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.of.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.of.js index f86ab3834e81..8cfb23b17769 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.of.js +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.of.js @@ -36,7 +36,7 @@ bench( pkg+':of', function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - p = Point.of( 1.0, 2.0 ); + p = Point.of( i, 2.0 ); if ( p.length !== 2 ) { b.fail( 'should have length 2' ); } From dda7621791370b26c0eaaf4dddb5e53feda33112 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 13:57:28 -0700 Subject: [PATCH 0603/1062] Add `reduceRight` benchmarks --- .../benchmark/benchmark.reduce_right.js | 80 +++++++++++++ .../benchmark.reduce_right.length.js | 105 ++++++++++++++++++ .../benchmark/benchmark.reduce_right.js | 80 +++++++++++++ .../benchmark.reduce_right.length.js | 105 ++++++++++++++++++ .../int16/benchmark/benchmark.reduce_right.js | 80 +++++++++++++ .../benchmark.reduce_right.length.js | 105 ++++++++++++++++++ .../int32/benchmark/benchmark.reduce_right.js | 80 +++++++++++++ .../benchmark.reduce_right.length.js | 105 ++++++++++++++++++ .../int8/benchmark/benchmark.reduce_right.js | 80 +++++++++++++ .../benchmark.reduce_right.length.js | 105 ++++++++++++++++++ .../benchmark/benchmark.reduce_right.js | 80 +++++++++++++ .../benchmark.reduce_right.length.js | 105 ++++++++++++++++++ .../benchmark/benchmark.reduce_right.js | 80 +++++++++++++ .../benchmark.reduce_right.length.js | 105 ++++++++++++++++++ .../uint8/benchmark/benchmark.reduce_right.js | 80 +++++++++++++ .../benchmark.reduce_right.length.js | 105 ++++++++++++++++++ .../benchmark/benchmark.reduce_right.js | 80 +++++++++++++ .../benchmark.reduce_right.length.js | 105 ++++++++++++++++++ 18 files changed, 1665 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reduce_right.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reduce_right.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reduce_right.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reduce_right.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reduce_right.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reduce_right.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reduce_right.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reduce_right.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reduce_right.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reduce_right.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reduce_right.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reduce_right.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reduce_right.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reduce_right.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reduce_right.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reduce_right.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reduce_right.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reduce_right.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reduce_right.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reduce_right.js new file mode 100644 index 000000000000..bd2ff498880c --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reduce_right.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1.0; + } +}); + +bench( pkg+'::initial_value:reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn, 3.14 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reduce_right.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reduce_right.length.js new file mode 100644 index 000000000000..5010b8c4c116 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reduce_right.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduceRight:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reduce_right.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reduce_right.js new file mode 100644 index 000000000000..738859bbf822 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reduce_right.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1.0; + } +}); + +bench( pkg+'::initial_value:reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn, 3.14 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reduce_right.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reduce_right.length.js new file mode 100644 index 000000000000..bb2b39bff2f8 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reduce_right.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduceRight:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reduce_right.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reduce_right.js new file mode 100644 index 000000000000..130699931e2d --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reduce_right.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1; + } +}); + +bench( pkg+'::initial_value:reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn, 3 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reduce_right.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reduce_right.length.js new file mode 100644 index 000000000000..524c9acdcd5e --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reduce_right.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduceRight:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reduce_right.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reduce_right.js new file mode 100644 index 000000000000..381181cd70e7 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reduce_right.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1; + } +}); + +bench( pkg+'::initial_value:reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn, 3 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reduce_right.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reduce_right.length.js new file mode 100644 index 000000000000..941a868cd09a --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reduce_right.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduceRight:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reduce_right.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reduce_right.js new file mode 100644 index 000000000000..5c5d499d93ef --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reduce_right.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1; + } +}); + +bench( pkg+'::initial_value:reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn, 3 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reduce_right.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reduce_right.length.js new file mode 100644 index 000000000000..ec8826e46e51 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reduce_right.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduceRight:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reduce_right.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reduce_right.js new file mode 100644 index 000000000000..ec3f69b913c1 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reduce_right.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1; + } +}); + +bench( pkg+'::initial_value:reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn, 3 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reduce_right.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reduce_right.length.js new file mode 100644 index 000000000000..f2e544b70205 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reduce_right.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduceRight:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reduce_right.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reduce_right.js new file mode 100644 index 000000000000..22685d203775 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reduce_right.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1; + } +}); + +bench( pkg+'::initial_value:reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn, 3 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reduce_right.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reduce_right.length.js new file mode 100644 index 000000000000..fcba6798a3dc --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reduce_right.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduceRight:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reduce_right.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reduce_right.js new file mode 100644 index 000000000000..e452af1d4b5c --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reduce_right.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1; + } +}); + +bench( pkg+'::initial_value:reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn, 3 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reduce_right.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reduce_right.length.js new file mode 100644 index 000000000000..6e1b422e37a5 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reduce_right.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduceRight:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reduce_right.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reduce_right.js new file mode 100644 index 000000000000..0e2cefa21289 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reduce_right.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1; + } +}); + +bench( pkg+'::initial_value:reduceRight', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn, 3 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reduce_right.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reduce_right.length.js new file mode 100644 index 000000000000..cd48ec9e8c82 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reduce_right.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduceRight( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduceRight:len='+len, f ); + } +} + +main(); From ea0f772f7da7bd20d6969dc9a4b23beb6ca2c4ed Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 14:09:24 -0700 Subject: [PATCH 0604/1062] Add `reduce` benchmarks --- .../float32/benchmark/benchmark.reduce.js | 80 +++++++++++++ .../benchmark/benchmark.reduce.length.js | 105 ++++++++++++++++++ .../float64/benchmark/benchmark.reduce.js | 80 +++++++++++++ .../benchmark/benchmark.reduce.length.js | 105 ++++++++++++++++++ .../array/int16/benchmark/benchmark.reduce.js | 80 +++++++++++++ .../benchmark/benchmark.reduce.length.js | 105 ++++++++++++++++++ .../array/int32/benchmark/benchmark.reduce.js | 80 +++++++++++++ .../benchmark/benchmark.reduce.length.js | 105 ++++++++++++++++++ .../array/int8/benchmark/benchmark.reduce.js | 80 +++++++++++++ .../int8/benchmark/benchmark.reduce.length.js | 105 ++++++++++++++++++ .../uint16/benchmark/benchmark.reduce.js | 80 +++++++++++++ .../benchmark/benchmark.reduce.length.js | 105 ++++++++++++++++++ .../uint32/benchmark/benchmark.reduce.js | 80 +++++++++++++ .../benchmark/benchmark.reduce.length.js | 105 ++++++++++++++++++ .../array/uint8/benchmark/benchmark.reduce.js | 80 +++++++++++++ .../benchmark/benchmark.reduce.length.js | 105 ++++++++++++++++++ .../uint8c/benchmark/benchmark.reduce.js | 80 +++++++++++++ .../benchmark/benchmark.reduce.length.js | 105 ++++++++++++++++++ 18 files changed, 1665 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reduce.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reduce.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reduce.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reduce.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reduce.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reduce.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reduce.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reduce.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reduce.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reduce.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reduce.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reduce.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reduce.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reduce.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reduce.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reduce.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reduce.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reduce.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reduce.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reduce.js new file mode 100644 index 000000000000..52e04a3d59a0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reduce.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1.0; + } +}); + +bench( pkg+'::initial_value:reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn, 3.14 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reduce.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reduce.length.js new file mode 100644 index 000000000000..2f7db24855ff --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reduce.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduce:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reduce.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reduce.js new file mode 100644 index 000000000000..fd1a058bef69 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reduce.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1.0; + } +}); + +bench( pkg+'::initial_value:reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn, 3.14 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reduce.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reduce.length.js new file mode 100644 index 000000000000..7b4fd8835ca3 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reduce.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduce:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reduce.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reduce.js new file mode 100644 index 000000000000..c377afa44087 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reduce.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1; + } +}); + +bench( pkg+'::initial_value:reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn, 3 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reduce.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reduce.length.js new file mode 100644 index 000000000000..3320230b97ab --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reduce.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduce:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reduce.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reduce.js new file mode 100644 index 000000000000..43b87c964616 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reduce.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1; + } +}); + +bench( pkg+'::initial_value:reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn, 3 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reduce.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reduce.length.js new file mode 100644 index 000000000000..cc066bfc7fa2 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reduce.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduce:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reduce.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reduce.js new file mode 100644 index 000000000000..6dc489b5ff09 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reduce.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1; + } +}); + +bench( pkg+'::initial_value:reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn, 3 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reduce.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reduce.length.js new file mode 100644 index 000000000000..ed2dff614825 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reduce.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduce:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reduce.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reduce.js new file mode 100644 index 000000000000..dd3dfdd13e9f --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reduce.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1; + } +}); + +bench( pkg+'::initial_value:reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn, 3 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reduce.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reduce.length.js new file mode 100644 index 000000000000..1023c90771d9 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reduce.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduce:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reduce.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reduce.js new file mode 100644 index 000000000000..1a8a085847ac --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reduce.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1; + } +}); + +bench( pkg+'::initial_value:reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn, 3 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reduce.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reduce.length.js new file mode 100644 index 000000000000..36d875fb0327 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reduce.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduce:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reduce.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reduce.js new file mode 100644 index 000000000000..21498da836a4 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reduce.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1; + } +}); + +bench( pkg+'::initial_value:reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn, 3 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reduce.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reduce.length.js new file mode 100644 index 000000000000..82c3ceb41797 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reduce.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduce:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reduce.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reduce.js new file mode 100644 index 000000000000..b28a5ddb1b49 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reduce.js @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( acc, v ) { + return acc + v + 1; + } +}); + +bench( pkg+'::initial_value:reduce', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn, 3 ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function fcn( v ) { + return v + 1; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reduce.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reduce.length.js new file mode 100644 index 000000000000..eb3e2e507c8f --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reduce.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Updates an accumulated value. +* +* @private +* @param {*} acc - accumulated value +* @param {*} value - array element +* @returns {*} accumulated value +*/ +function fcn( acc, value ) { + return acc + value + 1; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.reduce( fcn ); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( out !== out ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reduce:len='+len, f ); + } +} + +main(); From 3023c94b8e432d01cfcc4ccfd835822926101cb5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 14:17:48 -0700 Subject: [PATCH 0605/1062] Add `reverse` benchmarks --- .../float32/benchmark/benchmark.reverse.js | 52 ++++++++++ .../benchmark/benchmark.reverse.length.js | 95 +++++++++++++++++++ .../float64/benchmark/benchmark.reverse.js | 52 ++++++++++ .../benchmark/benchmark.reverse.length.js | 95 +++++++++++++++++++ .../int16/benchmark/benchmark.reverse.js | 52 ++++++++++ .../benchmark/benchmark.reverse.length.js | 95 +++++++++++++++++++ .../int32/benchmark/benchmark.reverse.js | 52 ++++++++++ .../benchmark/benchmark.reverse.length.js | 95 +++++++++++++++++++ .../array/int8/benchmark/benchmark.reverse.js | 52 ++++++++++ .../benchmark/benchmark.reverse.length.js | 95 +++++++++++++++++++ .../uint16/benchmark/benchmark.reverse.js | 52 ++++++++++ .../benchmark/benchmark.reverse.length.js | 95 +++++++++++++++++++ .../uint32/benchmark/benchmark.reverse.js | 52 ++++++++++ .../benchmark/benchmark.reverse.length.js | 95 +++++++++++++++++++ .../uint8/benchmark/benchmark.reverse.js | 52 ++++++++++ .../benchmark/benchmark.reverse.length.js | 95 +++++++++++++++++++ .../uint8c/benchmark/benchmark.reverse.js | 52 ++++++++++ .../benchmark/benchmark.reverse.length.js | 95 +++++++++++++++++++ 18 files changed, 1323 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reverse.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reverse.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reverse.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reverse.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reverse.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reverse.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reverse.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reverse.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reverse.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reverse.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reverse.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reverse.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reverse.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reverse.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reverse.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reverse.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reverse.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reverse.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reverse.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reverse.js new file mode 100644 index 000000000000..9f19259a16e3 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reverse.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isFloat32Array = require( '@stdlib/assert/is-float32array' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reverse', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat32Array( out ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reverse.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reverse.length.js new file mode 100644 index 000000000000..e0f46f40bc0e --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.reverse.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isFloat32Array = require( '@stdlib/assert/is-float32array' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat32Array( out ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reverse:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reverse.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reverse.js new file mode 100644 index 000000000000..972570e08e16 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reverse.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isFloat64Array = require( '@stdlib/assert/is-float64array' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reverse', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat64Array( out ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reverse.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reverse.length.js new file mode 100644 index 000000000000..05138a8298fe --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.reverse.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isFloat64Array = require( '@stdlib/assert/is-float64array' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat64Array( out ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reverse:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reverse.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reverse.js new file mode 100644 index 000000000000..d831070b3077 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reverse.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt16Array = require( '@stdlib/assert/is-int16array' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reverse', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt16Array( out ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reverse.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reverse.length.js new file mode 100644 index 000000000000..28d248155ee3 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.reverse.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInt16Array = require( '@stdlib/assert/is-int16array' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt16Array( out ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reverse:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reverse.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reverse.js new file mode 100644 index 000000000000..3f9cd876ddbc --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reverse.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt32Array = require( '@stdlib/assert/is-int32array' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reverse', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt32Array( out ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reverse.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reverse.length.js new file mode 100644 index 000000000000..6c00fb153998 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.reverse.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInt32Array = require( '@stdlib/assert/is-int32array' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt32Array( out ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reverse:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reverse.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reverse.js new file mode 100644 index 000000000000..513401797330 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reverse.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt8Array = require( '@stdlib/assert/is-int8array' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reverse', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt8Array( out ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reverse.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reverse.length.js new file mode 100644 index 000000000000..01d44fd383bc --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.reverse.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInt8Array = require( '@stdlib/assert/is-int8array' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt8Array( out ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reverse:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reverse.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reverse.js new file mode 100644 index 000000000000..4ead6ff88633 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reverse.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint16Array = require( '@stdlib/assert/is-uint16array' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reverse', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint16Array( out ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reverse.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reverse.length.js new file mode 100644 index 000000000000..653f41a31184 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.reverse.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint16Array = require( '@stdlib/assert/is-uint16array' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint16Array( out ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reverse:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reverse.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reverse.js new file mode 100644 index 000000000000..49e486c34e24 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reverse.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reverse', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint32Array( out ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reverse.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reverse.length.js new file mode 100644 index 000000000000..bc78f719c7d6 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.reverse.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint32Array( out ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reverse:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reverse.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reverse.js new file mode 100644 index 000000000000..84bcc28b59c0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reverse.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint8Array = require( '@stdlib/assert/is-uint8array' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reverse', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8Array( out ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reverse.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reverse.length.js new file mode 100644 index 000000000000..e5e360eec52e --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.reverse.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint8Array = require( '@stdlib/assert/is-uint8array' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8Array( out ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reverse:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reverse.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reverse.js new file mode 100644 index 000000000000..17e6ec0e95bb --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reverse.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint8ClampedArray = require( '@stdlib/assert/is-uint8clampedarray' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':reverse', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( out ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reverse.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reverse.length.js new file mode 100644 index 000000000000..6e77be0c79a0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.reverse.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint8ClampedArray = require( '@stdlib/assert/is-uint8clampedarray' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.reverse(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( out ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':reverse:len='+len, f ); + } +} + +main(); From 5af94f61fd073245fdd2c475c38d714b84ef433b Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 14:31:35 -0700 Subject: [PATCH 0606/1062] Add `set` benchmarks --- .../array/float32/benchmark/benchmark.set.js | 94 +++++++++++++++ .../float32/benchmark/benchmark.set.length.js | 114 ++++++++++++++++++ .../array/float64/benchmark/benchmark.set.js | 94 +++++++++++++++ .../float64/benchmark/benchmark.set.length.js | 114 ++++++++++++++++++ .../array/int16/benchmark/benchmark.set.js | 94 +++++++++++++++ .../int16/benchmark/benchmark.set.length.js | 114 ++++++++++++++++++ .../array/int32/benchmark/benchmark.set.js | 94 +++++++++++++++ .../int32/benchmark/benchmark.set.length.js | 114 ++++++++++++++++++ .../array/int8/benchmark/benchmark.set.js | 94 +++++++++++++++ .../int8/benchmark/benchmark.set.length.js | 114 ++++++++++++++++++ .../array/uint16/benchmark/benchmark.set.js | 94 +++++++++++++++ .../uint16/benchmark/benchmark.set.length.js | 114 ++++++++++++++++++ .../array/uint32/benchmark/benchmark.set.js | 94 +++++++++++++++ .../uint32/benchmark/benchmark.set.length.js | 114 ++++++++++++++++++ .../array/uint8/benchmark/benchmark.set.js | 94 +++++++++++++++ .../uint8/benchmark/benchmark.set.length.js | 114 ++++++++++++++++++ .../array/uint8c/benchmark/benchmark.set.js | 94 +++++++++++++++ .../uint8c/benchmark/benchmark.set.length.js | 114 ++++++++++++++++++ 18 files changed, 1872 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.set.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.set.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.set.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.set.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.set.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.set.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.set.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.set.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.set.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.set.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.set.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.set.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.set.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.set.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.set.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.set.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.set.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.set.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.set.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.set.js new file mode 100644 index 000000000000..9fc4b69e0aaf --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.set.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = []; + for ( i = 0; i < 10; i++ ) { + values.push( i ); + } + N = values.length; + + arr = new Float32Array( 2 ); + buf = [ 0.0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = new Float32Array( 20 ); + N = values.length; + for ( i = 0; i < N; i++ ) { + values[ i ] = i; + } + + arr = new Float32Array( 2 ); + buf = new Float32Array( 1 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.set.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.set.length.js new file mode 100644 index 000000000000..b67f4fa0e8ac --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.set.length.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var values; + var arr1; + var arr2; + var arr; + var N; + var i; + + arr1 = []; + arr2 = []; + for ( i = 0; i < len; i++ ) { + arr1.push( randi() ); + arr2.push( randi() ); + } + arr = new Float32Array( len ); + + values = [ + arr1, + arr2 + ]; + N = values.length; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr.set( values[ i%N ] ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':set:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.set.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.set.js new file mode 100644 index 000000000000..026c58dd6ba8 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.set.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = []; + for ( i = 0; i < 10; i++ ) { + values.push( i ); + } + N = values.length; + + arr = new Float64Array( 2 ); + buf = [ 0.0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = new Float64Array( 20 ); + N = values.length; + for ( i = 0; i < N; i++ ) { + values[ i ] = i; + } + + arr = new Float64Array( 2 ); + buf = new Float64Array( 1 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.set.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.set.length.js new file mode 100644 index 000000000000..d93bcd493742 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.set.length.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var values; + var arr1; + var arr2; + var arr; + var N; + var i; + + arr1 = []; + arr2 = []; + for ( i = 0; i < len; i++ ) { + arr1.push( randi() ); + arr2.push( randi() ); + } + arr = new Float64Array( len ); + + values = [ + arr1, + arr2 + ]; + N = values.length; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr.set( values[ i%N ] ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':set:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.set.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.set.js new file mode 100644 index 000000000000..419bb419de57 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.set.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = []; + for ( i = 0; i < 10; i++ ) { + values.push( i ); + } + N = values.length; + + arr = new Int16Array( 2 ); + buf = [ 0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = new Int16Array( 20 ); + N = values.length; + for ( i = 0; i < N; i++ ) { + values[ i ] = i; + } + + arr = new Int16Array( 2 ); + buf = new Int16Array( 1 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.set.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.set.length.js new file mode 100644 index 000000000000..a5ba2d8f47f8 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.set.length.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var values; + var arr1; + var arr2; + var arr; + var N; + var i; + + arr1 = []; + arr2 = []; + for ( i = 0; i < len; i++ ) { + arr1.push( randi() ); + arr2.push( randi() ); + } + arr = new Int16Array( len ); + + values = [ + arr1, + arr2 + ]; + N = values.length; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr.set( values[ i%N ] ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':set:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.set.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.set.js new file mode 100644 index 000000000000..0f1b764f38bf --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.set.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = []; + for ( i = 0; i < 10; i++ ) { + values.push( i ); + } + N = values.length; + + arr = new Int32Array( 2 ); + buf = [ 0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = new Int32Array( 20 ); + N = values.length; + for ( i = 0; i < N; i++ ) { + values[ i ] = i; + } + + arr = new Int32Array( 2 ); + buf = new Int32Array( 1 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.set.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.set.length.js new file mode 100644 index 000000000000..312069bab874 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.set.length.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var values; + var arr1; + var arr2; + var arr; + var N; + var i; + + arr1 = []; + arr2 = []; + for ( i = 0; i < len; i++ ) { + arr1.push( randi() ); + arr2.push( randi() ); + } + arr = new Int32Array( len ); + + values = [ + arr1, + arr2 + ]; + N = values.length; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr.set( values[ i%N ] ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':set:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.set.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.set.js new file mode 100644 index 000000000000..0072330a574d --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.set.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = []; + for ( i = 0; i < 10; i++ ) { + values.push( i ); + } + N = values.length; + + arr = new Int8Array( 2 ); + buf = [ 0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = new Int8Array( 20 ); + N = values.length; + for ( i = 0; i < N; i++ ) { + values[ i ] = i; + } + + arr = new Int8Array( 2 ); + buf = new Int8Array( 1 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.set.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.set.length.js new file mode 100644 index 000000000000..bce7b9156ce7 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.set.length.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var values; + var arr1; + var arr2; + var arr; + var N; + var i; + + arr1 = []; + arr2 = []; + for ( i = 0; i < len; i++ ) { + arr1.push( randi() ); + arr2.push( randi() ); + } + arr = new Int8Array( len ); + + values = [ + arr1, + arr2 + ]; + N = values.length; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr.set( values[ i%N ] ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':set:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.set.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.set.js new file mode 100644 index 000000000000..1598ea324145 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.set.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = []; + for ( i = 0; i < 10; i++ ) { + values.push( i ); + } + N = values.length; + + arr = new Uint16Array( 2 ); + buf = [ 0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = new Uint16Array( 20 ); + N = values.length; + for ( i = 0; i < N; i++ ) { + values[ i ] = i; + } + + arr = new Uint16Array( 2 ); + buf = new Uint16Array( 1 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.set.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.set.length.js new file mode 100644 index 000000000000..be2a0c9f5d9b --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.set.length.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var values; + var arr1; + var arr2; + var arr; + var N; + var i; + + arr1 = []; + arr2 = []; + for ( i = 0; i < len; i++ ) { + arr1.push( randi() ); + arr2.push( randi() ); + } + arr = new Uint16Array( len ); + + values = [ + arr1, + arr2 + ]; + N = values.length; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr.set( values[ i%N ] ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':set:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.set.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.set.js new file mode 100644 index 000000000000..fdcd920dbc4c --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.set.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = []; + for ( i = 0; i < 10; i++ ) { + values.push( i ); + } + N = values.length; + + arr = new Uint32Array( 2 ); + buf = [ 0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = new Uint32Array( 20 ); + N = values.length; + for ( i = 0; i < N; i++ ) { + values[ i ] = i; + } + + arr = new Uint32Array( 2 ); + buf = new Uint32Array( 1 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.set.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.set.length.js new file mode 100644 index 000000000000..8d28e8263d7e --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.set.length.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var values; + var arr1; + var arr2; + var arr; + var N; + var i; + + arr1 = []; + arr2 = []; + for ( i = 0; i < len; i++ ) { + arr1.push( randi() ); + arr2.push( randi() ); + } + arr = new Uint32Array( len ); + + values = [ + arr1, + arr2 + ]; + N = values.length; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr.set( values[ i%N ] ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':set:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.set.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.set.js new file mode 100644 index 000000000000..59827e1ee005 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.set.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = []; + for ( i = 0; i < 10; i++ ) { + values.push( i ); + } + N = values.length; + + arr = new Uint8Array( 2 ); + buf = [ 0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = new Uint8Array( 20 ); + N = values.length; + for ( i = 0; i < N; i++ ) { + values[ i ] = i; + } + + arr = new Uint8Array( 2 ); + buf = new Uint8Array( 1 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.set.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.set.length.js new file mode 100644 index 000000000000..052293f4472b --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.set.length.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var values; + var arr1; + var arr2; + var arr; + var N; + var i; + + arr1 = []; + arr2 = []; + for ( i = 0; i < len; i++ ) { + arr1.push( randi() ); + arr2.push( randi() ); + } + arr = new Uint8Array( len ); + + values = [ + arr1, + arr2 + ]; + N = values.length; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr.set( values[ i%N ] ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':set:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.set.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.set.js new file mode 100644 index 000000000000..f4076722bf60 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.set.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = []; + for ( i = 0; i < 10; i++ ) { + values.push( i ); + } + N = values.length; + + arr = new Uint8ClampedArray( 2 ); + buf = [ 0 ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::typed_array:set', function benchmark( b ) { + var values; + var buf; + var arr; + var N; + var v; + var i; + + values = new Uint8ClampedArray( 20 ); + N = values.length; + for ( i = 0; i < N; i++ ) { + values[ i ] = i; + } + + arr = new Uint8ClampedArray( 2 ); + buf = new Uint8ClampedArray( 1 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + buf[ 0 ] = values[ i%N ]; + v = arr.set( buf ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.set.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.set.length.js new file mode 100644 index 000000000000..8aa8938813b0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.set.length.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var values; + var arr1; + var arr2; + var arr; + var N; + var i; + + arr1 = []; + arr2 = []; + for ( i = 0; i < len; i++ ) { + arr1.push( randi() ); + arr2.push( randi() ); + } + arr = new Uint8ClampedArray( len ); + + values = [ + arr1, + arr2 + ]; + N = values.length; + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr.set( values[ i%N ] ); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + } + b.toc(); + if ( typeof v !== 'undefined' ) { + b.fail( 'should return undefined' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':set:len='+len, f ); + } +} + +main(); From 65f0d7855e06f1ba76552cdd422872d01d61aae3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 15:48:37 -0700 Subject: [PATCH 0607/1062] Add `slice` benchmarks --- .../float32/benchmark/benchmark.slice.js | 52 ++++++++++ .../benchmark/benchmark.slice.length.js | 95 +++++++++++++++++++ .../float64/benchmark/benchmark.slice.js | 52 ++++++++++ .../benchmark/benchmark.slice.length.js | 95 +++++++++++++++++++ .../array/int16/benchmark/benchmark.slice.js | 52 ++++++++++ .../int16/benchmark/benchmark.slice.length.js | 95 +++++++++++++++++++ .../array/int32/benchmark/benchmark.slice.js | 52 ++++++++++ .../int32/benchmark/benchmark.slice.length.js | 95 +++++++++++++++++++ .../array/int8/benchmark/benchmark.slice.js | 52 ++++++++++ .../int8/benchmark/benchmark.slice.length.js | 95 +++++++++++++++++++ .../array/uint16/benchmark/benchmark.slice.js | 52 ++++++++++ .../benchmark/benchmark.slice.length.js | 95 +++++++++++++++++++ .../array/uint32/benchmark/benchmark.slice.js | 52 ++++++++++ .../benchmark/benchmark.slice.length.js | 95 +++++++++++++++++++ .../array/uint8/benchmark/benchmark.slice.js | 52 ++++++++++ .../uint8/benchmark/benchmark.slice.length.js | 95 +++++++++++++++++++ .../array/uint8c/benchmark/benchmark.slice.js | 52 ++++++++++ .../benchmark/benchmark.slice.length.js | 95 +++++++++++++++++++ 18 files changed, 1323 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.slice.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.slice.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.slice.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.slice.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.slice.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.slice.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.slice.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.slice.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.slice.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.slice.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.slice.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.slice.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.slice.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.slice.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.slice.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.slice.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.slice.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.slice.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.slice.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.slice.js new file mode 100644 index 000000000000..0c585e89e33f --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.slice.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isFloat32Array = require( '@stdlib/assert/is-float32array' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':slice', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat32Array( out ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.slice.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.slice.length.js new file mode 100644 index 000000000000..8458ec83173c --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.slice.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isFloat32Array = require( '@stdlib/assert/is-float32array' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat32Array( out ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':slice:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.slice.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.slice.js new file mode 100644 index 000000000000..27eb72d8a850 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.slice.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isFloat64Array = require( '@stdlib/assert/is-float64array' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':slice', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat64Array( out ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.slice.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.slice.length.js new file mode 100644 index 000000000000..a808ebf91f49 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.slice.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isFloat64Array = require( '@stdlib/assert/is-float64array' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat64Array( out ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':slice:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.slice.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.slice.js new file mode 100644 index 000000000000..a4d7f8108ccf --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.slice.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt16Array = require( '@stdlib/assert/is-int16array' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':slice', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt16Array( out ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.slice.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.slice.length.js new file mode 100644 index 000000000000..891f92d36ea2 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.slice.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInt16Array = require( '@stdlib/assert/is-int16array' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt16Array( out ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':slice:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.slice.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.slice.js new file mode 100644 index 000000000000..4d68a9301b83 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.slice.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt32Array = require( '@stdlib/assert/is-int32array' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':slice', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt32Array( out ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.slice.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.slice.length.js new file mode 100644 index 000000000000..8ef4b3ee63ca --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.slice.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInt32Array = require( '@stdlib/assert/is-int32array' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt32Array( out ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':slice:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.slice.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.slice.js new file mode 100644 index 000000000000..3fa057a3ffd9 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.slice.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt8Array = require( '@stdlib/assert/is-int8array' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':slice', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt8Array( out ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.slice.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.slice.length.js new file mode 100644 index 000000000000..c28a6871ee5f --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.slice.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInt8Array = require( '@stdlib/assert/is-int8array' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt8Array( out ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':slice:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.slice.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.slice.js new file mode 100644 index 000000000000..e5c0dbb54127 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.slice.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint16Array = require( '@stdlib/assert/is-uint16array' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':slice', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint16Array( out ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.slice.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.slice.length.js new file mode 100644 index 000000000000..f5b60c8b543f --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.slice.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint16Array = require( '@stdlib/assert/is-uint16array' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint16Array( out ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':slice:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.slice.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.slice.js new file mode 100644 index 000000000000..00e73452ecc7 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.slice.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':slice', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint32Array( out ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.slice.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.slice.length.js new file mode 100644 index 000000000000..e46ac89f529a --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.slice.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint32Array( out ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':slice:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.slice.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.slice.js new file mode 100644 index 000000000000..874b535e5f9e --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.slice.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint8Array = require( '@stdlib/assert/is-uint8array' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':slice', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8Array( out ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.slice.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.slice.length.js new file mode 100644 index 000000000000..78e2b7e1deea --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.slice.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint8Array = require( '@stdlib/assert/is-uint8array' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8Array( out ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':slice:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.slice.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.slice.js new file mode 100644 index 000000000000..d1e0cda9ac5d --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.slice.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint8ClampedArray = require( '@stdlib/assert/is-uint8clampedarray' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':slice', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( out ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.slice.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.slice.length.js new file mode 100644 index 000000000000..82e5f69152e0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.slice.length.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint8ClampedArray = require( '@stdlib/assert/is-uint8clampedarray' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.slice(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( out ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':slice:len='+len, f ); + } +} + +main(); From 8f24ae3607bc1a7e82053b1e380b8f4ad95759a7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 15:54:53 -0700 Subject: [PATCH 0608/1062] Add `some` benchmarks --- .../array/float32/benchmark/benchmark.some.js | 81 ++++++++++++++ .../benchmark/benchmark.some.length.js | 105 ++++++++++++++++++ .../array/float64/benchmark/benchmark.some.js | 81 ++++++++++++++ .../benchmark/benchmark.some.length.js | 105 ++++++++++++++++++ .../array/int16/benchmark/benchmark.some.js | 81 ++++++++++++++ .../int16/benchmark/benchmark.some.length.js | 105 ++++++++++++++++++ .../array/int32/benchmark/benchmark.some.js | 81 ++++++++++++++ .../int32/benchmark/benchmark.some.length.js | 105 ++++++++++++++++++ .../array/int8/benchmark/benchmark.some.js | 81 ++++++++++++++ .../int8/benchmark/benchmark.some.length.js | 105 ++++++++++++++++++ .../array/uint16/benchmark/benchmark.some.js | 81 ++++++++++++++ .../uint16/benchmark/benchmark.some.length.js | 105 ++++++++++++++++++ .../array/uint32/benchmark/benchmark.some.js | 81 ++++++++++++++ .../uint32/benchmark/benchmark.some.length.js | 105 ++++++++++++++++++ .../array/uint8/benchmark/benchmark.some.js | 81 ++++++++++++++ .../uint8/benchmark/benchmark.some.length.js | 105 ++++++++++++++++++ .../array/uint8c/benchmark/benchmark.some.js | 81 ++++++++++++++ .../uint8c/benchmark/benchmark.some.length.js | 105 ++++++++++++++++++ 18 files changed, 1674 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.some.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.some.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.some.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.some.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.some.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.some.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.some.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.some.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.some.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.some.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.some.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.some.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.some.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.some.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.some.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.some.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.some.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.some.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.some.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.some.js new file mode 100644 index 000000000000..0fd324374389 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.some.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); + +bench( pkg+'::this_context:some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.some.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.some.length.js new file mode 100644 index 000000000000..f82b82cbf0fb --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.some.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':some:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.some.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.some.js new file mode 100644 index 000000000000..9cec5ef7b3e6 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.some.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); + +bench( pkg+'::this_context:some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0.0; + } +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.some.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.some.length.js new file mode 100644 index 000000000000..efa5670b7c0d --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.some.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0.0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':some:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.some.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.some.js new file mode 100644 index 000000000000..336fd656761c --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.some.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.some.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.some.length.js new file mode 100644 index 000000000000..07549123475e --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.some.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':some:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.some.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.some.js new file mode 100644 index 000000000000..a4c82f141cd6 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.some.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.some.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.some.length.js new file mode 100644 index 000000000000..686b1612a335 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.some.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':some:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.some.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.some.js new file mode 100644 index 000000000000..40ca80b82c7b --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.some.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.some.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.some.length.js new file mode 100644 index 000000000000..6805fd5470f5 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.some.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':some:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.some.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.some.js new file mode 100644 index 000000000000..6a9ede19e4e4 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.some.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.some.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.some.length.js new file mode 100644 index 000000000000..f5fc249e32d4 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.some.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':some:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.some.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.some.js new file mode 100644 index 000000000000..3abaeec284a8 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.some.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.some.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.some.length.js new file mode 100644 index 000000000000..8b8b2a53a003 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.some.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':some:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.some.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.some.js new file mode 100644 index 000000000000..f20c59cad266 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.some.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.some.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.some.length.js new file mode 100644 index 000000000000..647c0768d9d1 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.some.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':some:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.some.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.some.js new file mode 100644 index 000000000000..ad545e25e680 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.some.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); + +bench( pkg+'::this_context:some', function benchmark( b ) { + var bool; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate, {} ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + + function predicate( v ) { + return v > 0; + } +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.some.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.some.length.js new file mode 100644 index 000000000000..79f4623f1b4b --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.some.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a boolean indicating whether an array element passes a test. +* +* @private +* @param {*} value - value to test +* @returns {boolean} boolean indicating whether an array element passes a test +*/ +function predicate( value ) { + return value > 0; +} + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var bool; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = arr.some( predicate ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':some:len='+len, f ); + } +} + +main(); From 5d6f297c1c3b3b73abf589e2c31aa95be75e58c3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 16:08:05 -0700 Subject: [PATCH 0609/1062] Add `sort` benchmarks --- .../array/float32/benchmark/benchmark.sort.js | 53 +++++++++ .../benchmark/benchmark.sort.length.js | 105 ++++++++++++++++++ .../array/float64/benchmark/benchmark.sort.js | 53 +++++++++ .../benchmark/benchmark.sort.length.js | 105 ++++++++++++++++++ .../array/int16/benchmark/benchmark.sort.js | 53 +++++++++ .../int16/benchmark/benchmark.sort.length.js | 105 ++++++++++++++++++ .../array/int32/benchmark/benchmark.sort.js | 53 +++++++++ .../int32/benchmark/benchmark.sort.length.js | 105 ++++++++++++++++++ .../array/int8/benchmark/benchmark.sort.js | 53 +++++++++ .../int8/benchmark/benchmark.sort.length.js | 105 ++++++++++++++++++ .../array/uint16/benchmark/benchmark.sort.js | 53 +++++++++ .../uint16/benchmark/benchmark.sort.length.js | 105 ++++++++++++++++++ .../array/uint32/benchmark/benchmark.sort.js | 53 +++++++++ .../uint32/benchmark/benchmark.sort.length.js | 105 ++++++++++++++++++ .../array/uint8/benchmark/benchmark.sort.js | 53 +++++++++ .../uint8/benchmark/benchmark.sort.length.js | 105 ++++++++++++++++++ .../array/uint8c/benchmark/benchmark.sort.js | 53 +++++++++ .../uint8c/benchmark/benchmark.sort.length.js | 105 ++++++++++++++++++ 18 files changed, 1422 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.sort.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.sort.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.sort.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.sort.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.sort.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.sort.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.sort.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.sort.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.sort.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.sort.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.sort.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.sort.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.sort.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.sort.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.sort.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.sort.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.sort.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.sort.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.sort.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.sort.js new file mode 100644 index 000000000000..98441ed4f937 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.sort.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var randi = require( '@stdlib/random/base/randi' ); +var isFloat32Array = require( '@stdlib/assert/is-float32array' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':sort', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float32Array( [ randi(), randi() ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat32Array( out ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.sort.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.sort.length.js new file mode 100644 index 000000000000..aa0e5595b58a --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.sort.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var isFloat32Array = require( '@stdlib/assert/is-float32array' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var data; + var arr; + var i; + + data = []; + for ( i = 0; i < len; i++ ) { + data.push( randi() ); + } + arr = new Float32Array( data ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%len ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat32Array( out ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':sort:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.sort.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.sort.js new file mode 100644 index 000000000000..caf0421c9751 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.sort.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var randi = require( '@stdlib/random/base/randi' ); +var isFloat64Array = require( '@stdlib/assert/is-float64array' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':sort', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float64Array( [ randi(), randi() ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat64Array( out ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.sort.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.sort.length.js new file mode 100644 index 000000000000..9f27d46eb3eb --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.sort.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var isFloat64Array = require( '@stdlib/assert/is-float64array' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var data; + var arr; + var i; + + data = []; + for ( i = 0; i < len; i++ ) { + data.push( randi() ); + } + arr = new Float64Array( data ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%len ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat64Array( out ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':sort:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.sort.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.sort.js new file mode 100644 index 000000000000..d9a420e77969 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.sort.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var randi = require( '@stdlib/random/base/randi' ); +var isInt16Array = require( '@stdlib/assert/is-int16array' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':sort', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int16Array( [ randi(), randi() ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt16Array( out ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.sort.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.sort.length.js new file mode 100644 index 000000000000..cc05c62acc34 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.sort.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var isInt16Array = require( '@stdlib/assert/is-int16array' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var data; + var arr; + var i; + + data = []; + for ( i = 0; i < len; i++ ) { + data.push( randi() ); + } + arr = new Int16Array( data ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%len ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt16Array( out ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':sort:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.sort.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.sort.js new file mode 100644 index 000000000000..976caea092a0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.sort.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var randi = require( '@stdlib/random/base/randi' ); +var isInt32Array = require( '@stdlib/assert/is-int32array' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':sort', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int32Array( [ randi(), randi() ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt32Array( out ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.sort.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.sort.length.js new file mode 100644 index 000000000000..3c70f9d1162d --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.sort.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var isInt32Array = require( '@stdlib/assert/is-int32array' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var data; + var arr; + var i; + + data = []; + for ( i = 0; i < len; i++ ) { + data.push( randi() ); + } + arr = new Int32Array( data ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%len ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt32Array( out ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':sort:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.sort.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.sort.js new file mode 100644 index 000000000000..ea9a380e3464 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.sort.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var randi = require( '@stdlib/random/base/randi' ); +var isInt8Array = require( '@stdlib/assert/is-int8array' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':sort', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int8Array( [ randi(), randi() ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt8Array( out ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.sort.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.sort.length.js new file mode 100644 index 000000000000..e58533fad757 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.sort.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var isInt8Array = require( '@stdlib/assert/is-int8array' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var data; + var arr; + var i; + + data = []; + for ( i = 0; i < len; i++ ) { + data.push( randi() ); + } + arr = new Int8Array( data ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%len ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt8Array( out ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':sort:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.sort.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.sort.js new file mode 100644 index 000000000000..ce9f91244cf6 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.sort.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var randi = require( '@stdlib/random/base/randi' ); +var isUint16Array = require( '@stdlib/assert/is-uint16array' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':sort', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint16Array( [ randi(), randi() ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint16Array( out ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.sort.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.sort.length.js new file mode 100644 index 000000000000..5af89301b0d8 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.sort.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var isUint16Array = require( '@stdlib/assert/is-uint16array' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var data; + var arr; + var i; + + data = []; + for ( i = 0; i < len; i++ ) { + data.push( randi() ); + } + arr = new Uint16Array( data ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%len ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint16Array( out ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':sort:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.sort.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.sort.js new file mode 100644 index 000000000000..dd4f6a2446a2 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.sort.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var randi = require( '@stdlib/random/base/randi' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':sort', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint32Array( [ randi(), randi() ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint32Array( out ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.sort.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.sort.length.js new file mode 100644 index 000000000000..c40b6ec9380d --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.sort.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var data; + var arr; + var i; + + data = []; + for ( i = 0; i < len; i++ ) { + data.push( randi() ); + } + arr = new Uint32Array( data ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%len ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint32Array( out ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':sort:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.sort.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.sort.js new file mode 100644 index 000000000000..4d36b9d6d06c --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.sort.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var randi = require( '@stdlib/random/base/randi' ); +var isUint8Array = require( '@stdlib/assert/is-uint8array' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':sort', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8Array( [ randi(), randi() ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8Array( out ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.sort.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.sort.length.js new file mode 100644 index 000000000000..ca66eda0949a --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.sort.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var isUint8Array = require( '@stdlib/assert/is-uint8array' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var data; + var arr; + var i; + + data = []; + for ( i = 0; i < len; i++ ) { + data.push( randi() ); + } + arr = new Uint8Array( data ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%len ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8Array( out ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':sort:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.sort.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.sort.js new file mode 100644 index 000000000000..291a17351033 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.sort.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var randi = require( '@stdlib/random/base/randi' ); +var isUint8ClampedArray = require( '@stdlib/assert/is-uint8clampedarray' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':sort', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8ClampedArray( [ randi(), randi() ] ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( out ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.sort.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.sort.length.js new file mode 100644 index 000000000000..cc51978659d5 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.sort.length.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var randi = require( '@stdlib/random/base/randi' ); +var isUint8ClampedArray = require( '@stdlib/assert/is-uint8clampedarray' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var data; + var arr; + var i; + + data = []; + for ( i = 0; i < len; i++ ) { + data.push( randi() ); + } + arr = new Uint8ClampedArray( data ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%len ] = randi(); + out = arr.sort(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( out ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':sort:len='+len, f ); + } +} + +main(); From 9743c01eab9f42a3ab9565df9c04f7cb92b9f8b9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 16:17:01 -0700 Subject: [PATCH 0610/1062] Add `subarray` benchmarks --- .../float32/benchmark/benchmark.subarray.js | 51 ++++++++++ .../benchmark/benchmark.subarray.length.js | 94 +++++++++++++++++++ .../float64/benchmark/benchmark.subarray.js | 51 ++++++++++ .../benchmark/benchmark.subarray.length.js | 94 +++++++++++++++++++ .../int16/benchmark/benchmark.subarray.js | 51 ++++++++++ .../benchmark/benchmark.subarray.length.js | 94 +++++++++++++++++++ .../int32/benchmark/benchmark.subarray.js | 51 ++++++++++ .../benchmark/benchmark.subarray.length.js | 94 +++++++++++++++++++ .../int8/benchmark/benchmark.subarray.js | 51 ++++++++++ .../benchmark/benchmark.subarray.length.js | 94 +++++++++++++++++++ .../uint16/benchmark/benchmark.subarray.js | 51 ++++++++++ .../benchmark/benchmark.subarray.length.js | 94 +++++++++++++++++++ .../uint32/benchmark/benchmark.subarray.js | 51 ++++++++++ .../benchmark/benchmark.subarray.length.js | 94 +++++++++++++++++++ .../uint8/benchmark/benchmark.subarray.js | 51 ++++++++++ .../benchmark/benchmark.subarray.length.js | 94 +++++++++++++++++++ .../uint8c/benchmark/benchmark.subarray.js | 51 ++++++++++ .../benchmark/benchmark.subarray.length.js | 94 +++++++++++++++++++ 18 files changed, 1305 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.subarray.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.subarray.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.subarray.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.subarray.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.subarray.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.subarray.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.subarray.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.subarray.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.subarray.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.subarray.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.subarray.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.subarray.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.subarray.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.subarray.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.subarray.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.subarray.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.subarray.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.subarray.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.subarray.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.subarray.js new file mode 100644 index 000000000000..5b032889b83b --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.subarray.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isFloat32Array = require( '@stdlib/assert/is-float32array' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':subarray', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat32Array( out ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.subarray.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.subarray.length.js new file mode 100644 index 000000000000..d2a112e4baa2 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.subarray.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isFloat32Array = require( '@stdlib/assert/is-float32array' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat32Array( out ) ) { + b.fail( 'should return a Float32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':subarray:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.subarray.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.subarray.js new file mode 100644 index 000000000000..797cd5e91b9c --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.subarray.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isFloat64Array = require( '@stdlib/assert/is-float64array' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':subarray', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat64Array( out ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.subarray.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.subarray.length.js new file mode 100644 index 000000000000..fbfc2c3396ec --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.subarray.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isFloat64Array = require( '@stdlib/assert/is-float64array' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isFloat64Array( out ) ) { + b.fail( 'should return a Float64Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':subarray:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.subarray.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.subarray.js new file mode 100644 index 000000000000..a0833f739c10 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.subarray.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt16Array = require( '@stdlib/assert/is-int16array' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':subarray', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt16Array( out ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.subarray.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.subarray.length.js new file mode 100644 index 000000000000..8501c8da7a6b --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.subarray.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInt16Array = require( '@stdlib/assert/is-int16array' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt16Array( out ) ) { + b.fail( 'should return an Int16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':subarray:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.subarray.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.subarray.js new file mode 100644 index 000000000000..1dbc01041b9b --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.subarray.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt32Array = require( '@stdlib/assert/is-int32array' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':subarray', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt32Array( out ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.subarray.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.subarray.length.js new file mode 100644 index 000000000000..0fc2921e77cc --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.subarray.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInt32Array = require( '@stdlib/assert/is-int32array' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt32Array( out ) ) { + b.fail( 'should return an Int32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':subarray:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.subarray.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.subarray.js new file mode 100644 index 000000000000..8ee2e1533ae2 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.subarray.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInt8Array = require( '@stdlib/assert/is-int8array' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':subarray', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt8Array( out ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.subarray.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.subarray.length.js new file mode 100644 index 000000000000..86eda65e9fb9 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.subarray.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInt8Array = require( '@stdlib/assert/is-int8array' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isInt8Array( out ) ) { + b.fail( 'should return an Int8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':subarray:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.subarray.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.subarray.js new file mode 100644 index 000000000000..ecfbb3e8e1da --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.subarray.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint16Array = require( '@stdlib/assert/is-uint16array' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':subarray', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint16Array( out ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.subarray.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.subarray.length.js new file mode 100644 index 000000000000..b0931b06dc7e --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.subarray.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint16Array = require( '@stdlib/assert/is-uint16array' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint16Array( out ) ) { + b.fail( 'should return a Uint16Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':subarray:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.subarray.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.subarray.js new file mode 100644 index 000000000000..5014eb4da356 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.subarray.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':subarray', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint32Array( out ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.subarray.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.subarray.length.js new file mode 100644 index 000000000000..1bca9ab45cc4 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.subarray.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint32Array( out ) ) { + b.fail( 'should return a Uint32Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':subarray:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.subarray.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.subarray.js new file mode 100644 index 000000000000..2c91017e90e6 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.subarray.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint8Array = require( '@stdlib/assert/is-uint8array' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':subarray', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8Array( out ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.subarray.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.subarray.length.js new file mode 100644 index 000000000000..e353f0178d8d --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.subarray.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint8Array = require( '@stdlib/assert/is-uint8array' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8Array( out ) ) { + b.fail( 'should return a Uint8Array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':subarray:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.subarray.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.subarray.js new file mode 100644 index 000000000000..6fac854ff905 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.subarray.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isUint8ClampedArray = require( '@stdlib/assert/is-uint8clampedarray' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':subarray', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( out ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.subarray.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.subarray.length.js new file mode 100644 index 000000000000..70c5d0c4cb60 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.subarray.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isUint8ClampedArray = require( '@stdlib/assert/is-uint8clampedarray' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = arr.subarray(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isUint8ClampedArray( out ) ) { + b.fail( 'should return a Uint8ClampedArray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':subarray:len='+len, f ); + } +} + +main(); From 44d2a1b269933cedbb8eceb5e666de521f5b41df Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 16:28:51 -0700 Subject: [PATCH 0611/1062] Add `toLocaleString` benchmarks --- .../benchmark/benchmark.to_locale_string.js | 51 ++++++++++ .../benchmark.to_locale_string.length.js | 94 +++++++++++++++++++ .../benchmark/benchmark.to_locale_string.js | 51 ++++++++++ .../benchmark.to_locale_string.length.js | 94 +++++++++++++++++++ .../benchmark/benchmark.to_locale_string.js | 51 ++++++++++ .../benchmark.to_locale_string.length.js | 94 +++++++++++++++++++ .../benchmark/benchmark.to_locale_string.js | 51 ++++++++++ .../benchmark.to_locale_string.length.js | 94 +++++++++++++++++++ .../benchmark/benchmark.to_locale_string.js | 51 ++++++++++ .../benchmark.to_locale_string.length.js | 94 +++++++++++++++++++ .../benchmark/benchmark.to_locale_string.js | 51 ++++++++++ .../benchmark.to_locale_string.length.js | 94 +++++++++++++++++++ .../benchmark/benchmark.to_locale_string.js | 51 ++++++++++ .../benchmark.to_locale_string.length.js | 94 +++++++++++++++++++ .../benchmark/benchmark.to_locale_string.js | 51 ++++++++++ .../benchmark.to_locale_string.length.js | 94 +++++++++++++++++++ .../benchmark/benchmark.to_locale_string.js | 51 ++++++++++ .../benchmark.to_locale_string.length.js | 94 +++++++++++++++++++ 18 files changed, 1305 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.to_locale_string.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.to_locale_string.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.to_locale_string.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.to_locale_string.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.to_locale_string.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.to_locale_string.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.to_locale_string.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.to_locale_string.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.to_locale_string.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.to_locale_string.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.to_locale_string.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.to_locale_string.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.to_locale_string.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.to_locale_string.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.to_locale_string.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.to_locale_string.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.to_locale_string.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.to_locale_string.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.to_locale_string.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.to_locale_string.js new file mode 100644 index 000000000000..e1bc74e71813 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.to_locale_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toLocaleString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.to_locale_string.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.to_locale_string.length.js new file mode 100644 index 000000000000..5948a579fe9c --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.to_locale_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toLocaleString:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.to_locale_string.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.to_locale_string.js new file mode 100644 index 000000000000..005b9334ff6e --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.to_locale_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toLocaleString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.to_locale_string.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.to_locale_string.length.js new file mode 100644 index 000000000000..2a99382fc6fc --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.to_locale_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toLocaleString:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.to_locale_string.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.to_locale_string.js new file mode 100644 index 000000000000..9e0bd74bc6b1 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.to_locale_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toLocaleString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.to_locale_string.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.to_locale_string.length.js new file mode 100644 index 000000000000..c1e688775b69 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.to_locale_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toLocaleString:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.to_locale_string.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.to_locale_string.js new file mode 100644 index 000000000000..32c7d394030d --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.to_locale_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toLocaleString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.to_locale_string.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.to_locale_string.length.js new file mode 100644 index 000000000000..ec49e474a032 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.to_locale_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toLocaleString:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.to_locale_string.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.to_locale_string.js new file mode 100644 index 000000000000..510a369333a5 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.to_locale_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toLocaleString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.to_locale_string.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.to_locale_string.length.js new file mode 100644 index 000000000000..4c75af0333e9 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.to_locale_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toLocaleString:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.to_locale_string.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.to_locale_string.js new file mode 100644 index 000000000000..2afdc4538f9e --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.to_locale_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toLocaleString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.to_locale_string.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.to_locale_string.length.js new file mode 100644 index 000000000000..f08d59c6a906 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.to_locale_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toLocaleString:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.to_locale_string.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.to_locale_string.js new file mode 100644 index 000000000000..e947d2ad6777 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.to_locale_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toLocaleString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.to_locale_string.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.to_locale_string.length.js new file mode 100644 index 000000000000..a4da2c1834ef --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.to_locale_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toLocaleString:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.to_locale_string.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.to_locale_string.js new file mode 100644 index 000000000000..7631518acd30 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.to_locale_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toLocaleString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.to_locale_string.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.to_locale_string.length.js new file mode 100644 index 000000000000..824ebc2967d1 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.to_locale_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toLocaleString:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.to_locale_string.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.to_locale_string.js new file mode 100644 index 000000000000..d214048edb6a --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.to_locale_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toLocaleString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.to_locale_string.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.to_locale_string.length.js new file mode 100644 index 000000000000..0963f1db0ac3 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.to_locale_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toLocaleString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toLocaleString:len='+len, f ); + } +} + +main(); From 2c4f1f2e7a4faece365c717531cf3e180189dd2e Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 16:57:34 -0700 Subject: [PATCH 0612/1062] Add `toString` benchmarks --- .../float32/benchmark/benchmark.to_string.js | 51 ++++++++++ .../benchmark/benchmark.to_string.length.js | 94 +++++++++++++++++++ .../float64/benchmark/benchmark.to_string.js | 51 ++++++++++ .../benchmark/benchmark.to_string.length.js | 94 +++++++++++++++++++ .../int16/benchmark/benchmark.to_string.js | 51 ++++++++++ .../benchmark/benchmark.to_string.length.js | 94 +++++++++++++++++++ .../int32/benchmark/benchmark.to_string.js | 51 ++++++++++ .../benchmark/benchmark.to_string.length.js | 94 +++++++++++++++++++ .../int8/benchmark/benchmark.to_string.js | 51 ++++++++++ .../benchmark/benchmark.to_string.length.js | 94 +++++++++++++++++++ .../uint16/benchmark/benchmark.to_string.js | 51 ++++++++++ .../benchmark/benchmark.to_string.length.js | 94 +++++++++++++++++++ .../uint32/benchmark/benchmark.to_string.js | 51 ++++++++++ .../benchmark/benchmark.to_string.length.js | 94 +++++++++++++++++++ .../uint8/benchmark/benchmark.to_string.js | 51 ++++++++++ .../benchmark/benchmark.to_string.length.js | 94 +++++++++++++++++++ .../uint8c/benchmark/benchmark.to_string.js | 51 ++++++++++ .../benchmark/benchmark.to_string.length.js | 94 +++++++++++++++++++ 18 files changed, 1305 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.to_string.js create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.to_string.length.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.to_string.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.to_string.length.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.to_string.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.to_string.length.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.to_string.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.to_string.length.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.to_string.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.to_string.length.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.to_string.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.to_string.length.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.to_string.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.to_string.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.to_string.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.to_string.length.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.to_string.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.to_string.length.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.to_string.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.to_string.js new file mode 100644 index 000000000000..25c4da95f92a --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.to_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.to_string.length.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.to_string.length.js new file mode 100644 index 000000000000..954d171335ad --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.to_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toString:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.to_string.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.to_string.js new file mode 100644 index 000000000000..a7275fc6259e --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.to_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.to_string.length.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.to_string.length.js new file mode 100644 index 000000000000..39f880d653d5 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.to_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Float64Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toString:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.to_string.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.to_string.js new file mode 100644 index 000000000000..6e6d5d95a45f --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.to_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.to_string.length.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.to_string.length.js new file mode 100644 index 000000000000..306e398d4205 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.to_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toString:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.to_string.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.to_string.js new file mode 100644 index 000000000000..f5fa1e9fb5bd --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.to_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.to_string.length.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.to_string.length.js new file mode 100644 index 000000000000..b679840b878d --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.to_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toString:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.to_string.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.to_string.js new file mode 100644 index 000000000000..ab4aebc3dd8e --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.to_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.to_string.length.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.to_string.length.js new file mode 100644 index 000000000000..f63ab08db607 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.to_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Int8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toString:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.to_string.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.to_string.js new file mode 100644 index 000000000000..4e731b56150a --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.to_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.to_string.length.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.to_string.length.js new file mode 100644 index 000000000000..94478a00141f --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.to_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint16Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toString:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.to_string.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.to_string.js new file mode 100644 index 000000000000..78c524a444c4 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.to_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.to_string.length.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.to_string.length.js new file mode 100644 index 000000000000..af13a8cc738c --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.to_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint32Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toString:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.to_string.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.to_string.js new file mode 100644 index 000000000000..75f8bcb25d6d --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.to_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.to_string.length.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.to_string.length.js new file mode 100644 index 000000000000..de8020da3c07 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.to_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toString:len='+len, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.to_string.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.to_string.js new file mode 100644 index 000000000000..0eb5fa464e97 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.to_string.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':toString', function benchmark( b ) { + var out; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.to_string.length.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.to_string.length.js new file mode 100644 index 000000000000..d0eaa01f2116 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.to_string.length.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var arr = new Uint8ClampedArray( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ 0 ] = i; + out = arr.toString(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + } + b.toc(); + if ( typeof out !== 'string' ) { + b.fail( 'should return a string' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 5; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( pkg+':toString:len='+len, f ); + } +} + +main(); From fff4547d0347d342a637159731f3885d0c3e21f5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 17:01:24 -0700 Subject: [PATCH 0613/1062] Add `values` benchmarks --- .../float32/benchmark/benchmark.values.js | 50 +++++++++++++++++++ .../float64/benchmark/benchmark.values.js | 50 +++++++++++++++++++ .../array/int16/benchmark/benchmark.values.js | 50 +++++++++++++++++++ .../array/int32/benchmark/benchmark.values.js | 50 +++++++++++++++++++ .../array/int8/benchmark/benchmark.values.js | 50 +++++++++++++++++++ .../uint16/benchmark/benchmark.values.js | 50 +++++++++++++++++++ .../uint32/benchmark/benchmark.values.js | 50 +++++++++++++++++++ .../array/uint8/benchmark/benchmark.values.js | 50 +++++++++++++++++++ .../uint8c/benchmark/benchmark.values.js | 50 +++++++++++++++++++ 9 files changed, 450 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.values.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.values.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.values.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.values.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.values.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.values.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.values.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.values.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.values.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.values.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.values.js new file mode 100644 index 000000000000..dda1b3f8c065 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.values.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':values', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.values(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.values.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.values.js new file mode 100644 index 000000000000..4d4bca6aa1b8 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.values.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':values', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.values(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.values.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.values.js new file mode 100644 index 000000000000..a34f4ca63933 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.values.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':values', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.values(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.values.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.values.js new file mode 100644 index 000000000000..8132a04ce6fe --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.values.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':values', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.values(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.values.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.values.js new file mode 100644 index 000000000000..1849e01dadb5 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.values.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':values', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.values(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.values.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.values.js new file mode 100644 index 000000000000..5e39e6c164e4 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.values.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':values', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.values(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.values.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.values.js new file mode 100644 index 000000000000..3854804a69db --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.values.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':values', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.values(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.values.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.values.js new file mode 100644 index 000000000000..f59323841a3a --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.values.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+':values', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.values(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.values.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.values.js new file mode 100644 index 000000000000..64345b080222 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.values.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+':values', function benchmark( b ) { + var iter; + var arr; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + iter = arr.values(); + if ( typeof iter !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof iter !== 'object' || typeof iter.next !== 'function' ) { + b.fail( 'should return an iterator protocol-compliant object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 3c95a9e9f2f511f974f8fb9e01960c80f1bb5779 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 17:11:01 -0700 Subject: [PATCH 0614/1062] Add benchmarks for accessing property values --- .../float32/benchmark/benchmark.properties.js | 145 ++++++++++++++++++ .../float64/benchmark/benchmark.properties.js | 145 ++++++++++++++++++ .../int16/benchmark/benchmark.properties.js | 145 ++++++++++++++++++ .../int32/benchmark/benchmark.properties.js | 145 ++++++++++++++++++ .../int8/benchmark/benchmark.properties.js | 145 ++++++++++++++++++ .../uint16/benchmark/benchmark.properties.js | 145 ++++++++++++++++++ .../uint32/benchmark/benchmark.properties.js | 145 ++++++++++++++++++ .../uint8/benchmark/benchmark.properties.js | 145 ++++++++++++++++++ .../uint8c/benchmark/benchmark.properties.js | 145 ++++++++++++++++++ 9 files changed, 1305 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.properties.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.properties.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.properties.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.properties.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.properties.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.properties.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.properties.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.properties.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.properties.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.properties.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.properties.js new file mode 100644 index 000000000000..563d90f414c8 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.properties.js @@ -0,0 +1,145 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' ); +var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get:buffer', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.buffer; + if ( typeof v !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isArrayBuffer( v ) ) { + b.fail( 'should return an ArrayBuffer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteLength', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteLength; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteOffset', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteOffset; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:BYTES_PER_ELEMENT', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.BYTES_PER_ELEMENT; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:length', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.length; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.properties.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.properties.js new file mode 100644 index 000000000000..8fbfb46d9b79 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.properties.js @@ -0,0 +1,145 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' ); +var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get:buffer', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.buffer; + if ( typeof v !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isArrayBuffer( v ) ) { + b.fail( 'should return an ArrayBuffer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteLength', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteLength; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteOffset', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteOffset; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:BYTES_PER_ELEMENT', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.BYTES_PER_ELEMENT; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:length', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Float64Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.length; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.properties.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.properties.js new file mode 100644 index 000000000000..2a061fcd70aa --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.properties.js @@ -0,0 +1,145 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' ); +var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get:buffer', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.buffer; + if ( typeof v !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isArrayBuffer( v ) ) { + b.fail( 'should return an ArrayBuffer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteLength', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteLength; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteOffset', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteOffset; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:BYTES_PER_ELEMENT', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.BYTES_PER_ELEMENT; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:length', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.length; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.properties.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.properties.js new file mode 100644 index 000000000000..16ed292916c0 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.properties.js @@ -0,0 +1,145 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' ); +var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get:buffer', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.buffer; + if ( typeof v !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isArrayBuffer( v ) ) { + b.fail( 'should return an ArrayBuffer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteLength', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteLength; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteOffset', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteOffset; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:BYTES_PER_ELEMENT', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.BYTES_PER_ELEMENT; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:length', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.length; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.properties.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.properties.js new file mode 100644 index 000000000000..95ef3416de68 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.properties.js @@ -0,0 +1,145 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' ); +var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get:buffer', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.buffer; + if ( typeof v !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isArrayBuffer( v ) ) { + b.fail( 'should return an ArrayBuffer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteLength', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteLength; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteOffset', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteOffset; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:BYTES_PER_ELEMENT', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.BYTES_PER_ELEMENT; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:length', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Int8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.length; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.properties.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.properties.js new file mode 100644 index 000000000000..7805cb961afe --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.properties.js @@ -0,0 +1,145 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' ); +var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get:buffer', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.buffer; + if ( typeof v !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isArrayBuffer( v ) ) { + b.fail( 'should return an ArrayBuffer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteLength', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteLength; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteOffset', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteOffset; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:BYTES_PER_ELEMENT', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.BYTES_PER_ELEMENT; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:length', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint16Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.length; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.properties.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.properties.js new file mode 100644 index 000000000000..75282035bb31 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.properties.js @@ -0,0 +1,145 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' ); +var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get:buffer', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.buffer; + if ( typeof v !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isArrayBuffer( v ) ) { + b.fail( 'should return an ArrayBuffer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteLength', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteLength; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteOffset', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteOffset; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:BYTES_PER_ELEMENT', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.BYTES_PER_ELEMENT; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:length', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.length; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.properties.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.properties.js new file mode 100644 index 000000000000..891b634f69b5 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.properties.js @@ -0,0 +1,145 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' ); +var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get:buffer', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.buffer; + if ( typeof v !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isArrayBuffer( v ) ) { + b.fail( 'should return an ArrayBuffer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteLength', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteLength; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteOffset', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteOffset; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:BYTES_PER_ELEMENT', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.BYTES_PER_ELEMENT; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:length', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint8Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.length; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.properties.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.properties.js new file mode 100644 index 000000000000..ca8f308cea44 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.properties.js @@ -0,0 +1,145 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' ); +var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive; +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get:buffer', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.buffer; + if ( typeof v !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( !isArrayBuffer( v ) ) { + b.fail( 'should return an ArrayBuffer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteLength', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteLength; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:byteOffset', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.byteOffset; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:BYTES_PER_ELEMENT', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.BYTES_PER_ELEMENT; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::get:length', function benchmark( b ) { + var arr; + var v; + var i; + + arr = new Uint8ClampedArray( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + // Note: the following may be optimized away due to loop invariant code motion and/or other compiler optimizations, rendering this benchmark meaningless... + v = arr.length; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( !isNonNegativeInteger( v ) ) { + b.fail( 'should return a nonnegative integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 7b1021ea09fb83b55c7359d19a48b645d3d31f31 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 17:17:41 -0700 Subject: [PATCH 0615/1062] Add data accessor benchmarks --- .../array/float32/benchmark/benchmark.data.js | 75 +++++++++++++++++++ .../array/float64/benchmark/benchmark.data.js | 75 +++++++++++++++++++ .../array/int16/benchmark/benchmark.data.js | 75 +++++++++++++++++++ .../array/int32/benchmark/benchmark.data.js | 75 +++++++++++++++++++ .../array/int8/benchmark/benchmark.data.js | 75 +++++++++++++++++++ .../array/uint16/benchmark/benchmark.data.js | 75 +++++++++++++++++++ .../array/uint32/benchmark/benchmark.data.js | 75 +++++++++++++++++++ .../array/uint8/benchmark/benchmark.data.js | 75 +++++++++++++++++++ .../array/uint8c/benchmark/benchmark.data.js | 75 +++++++++++++++++++ 9 files changed, 675 insertions(+) create mode 100644 lib/node_modules/@stdlib/array/float32/benchmark/benchmark.data.js create mode 100644 lib/node_modules/@stdlib/array/float64/benchmark/benchmark.data.js create mode 100644 lib/node_modules/@stdlib/array/int16/benchmark/benchmark.data.js create mode 100644 lib/node_modules/@stdlib/array/int32/benchmark/benchmark.data.js create mode 100644 lib/node_modules/@stdlib/array/int8/benchmark/benchmark.data.js create mode 100644 lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.data.js create mode 100644 lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.data.js create mode 100644 lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.data.js create mode 100644 lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.data.js diff --git a/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.data.js b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.data.js new file mode 100644 index 000000000000..b120c941862e --- /dev/null +++ b/lib/node_modules/@stdlib/array/float32/benchmark/benchmark.data.js @@ -0,0 +1,75 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get,index', function benchmark( b ) { + var arr; + var N; + var v; + var i; + + arr = new Float32Array( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr[ i%N ]; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::set,index', function benchmark( b ) { + var arr; + var N; + var i; + + arr = new Float32Array( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%N ] = i; + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] || arr[ 1 ] !== arr[ 1 ] ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.data.js b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.data.js new file mode 100644 index 000000000000..f4a417b02bd2 --- /dev/null +++ b/lib/node_modules/@stdlib/array/float64/benchmark/benchmark.data.js @@ -0,0 +1,75 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Float64Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get,index', function benchmark( b ) { + var arr; + var N; + var v; + var i; + + arr = new Float64Array( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr[ i%N ]; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::set,index', function benchmark( b ) { + var arr; + var N; + var i; + + arr = new Float64Array( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%N ] = i; + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] || arr[ 1 ] !== arr[ 1 ] ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.data.js b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.data.js new file mode 100644 index 000000000000..4ced13981206 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int16/benchmark/benchmark.data.js @@ -0,0 +1,75 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get,index', function benchmark( b ) { + var arr; + var N; + var v; + var i; + + arr = new Int16Array( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr[ i%N ]; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::set,index', function benchmark( b ) { + var arr; + var N; + var i; + + arr = new Int16Array( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%N ] = i; + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] || arr[ 1 ] !== arr[ 1 ] ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.data.js b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.data.js new file mode 100644 index 000000000000..0bee1465d727 --- /dev/null +++ b/lib/node_modules/@stdlib/array/int32/benchmark/benchmark.data.js @@ -0,0 +1,75 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get,index', function benchmark( b ) { + var arr; + var N; + var v; + var i; + + arr = new Int32Array( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr[ i%N ]; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::set,index', function benchmark( b ) { + var arr; + var N; + var i; + + arr = new Int32Array( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%N ] = i; + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] || arr[ 1 ] !== arr[ 1 ] ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.data.js b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.data.js new file mode 100644 index 000000000000..a4dda02b72cb --- /dev/null +++ b/lib/node_modules/@stdlib/array/int8/benchmark/benchmark.data.js @@ -0,0 +1,75 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Int8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get,index', function benchmark( b ) { + var arr; + var N; + var v; + var i; + + arr = new Int8Array( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr[ i%N ]; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::set,index', function benchmark( b ) { + var arr; + var N; + var i; + + arr = new Int8Array( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%N ] = i; + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] || arr[ 1 ] !== arr[ 1 ] ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.data.js b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.data.js new file mode 100644 index 000000000000..fb912ea2b923 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint16/benchmark/benchmark.data.js @@ -0,0 +1,75 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint16Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get,index', function benchmark( b ) { + var arr; + var N; + var v; + var i; + + arr = new Uint16Array( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr[ i%N ]; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::set,index', function benchmark( b ) { + var arr; + var N; + var i; + + arr = new Uint16Array( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%N ] = i; + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] || arr[ 1 ] !== arr[ 1 ] ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.data.js b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.data.js new file mode 100644 index 000000000000..e29992213ec2 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint32/benchmark/benchmark.data.js @@ -0,0 +1,75 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint32Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get,index', function benchmark( b ) { + var arr; + var N; + var v; + var i; + + arr = new Uint32Array( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr[ i%N ]; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::set,index', function benchmark( b ) { + var arr; + var N; + var i; + + arr = new Uint32Array( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%N ] = i; + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] || arr[ 1 ] !== arr[ 1 ] ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.data.js b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.data.js new file mode 100644 index 000000000000..c494b681f138 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8/benchmark/benchmark.data.js @@ -0,0 +1,75 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8Array = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get,index', function benchmark( b ) { + var arr; + var N; + var v; + var i; + + arr = new Uint8Array( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr[ i%N ]; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::set,index', function benchmark( b ) { + var arr; + var N; + var i; + + arr = new Uint8Array( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%N ] = i; + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] || arr[ 1 ] !== arr[ 1 ] ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.data.js b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.data.js new file mode 100644 index 000000000000..5cbb9007fbc8 --- /dev/null +++ b/lib/node_modules/@stdlib/array/uint8c/benchmark/benchmark.data.js @@ -0,0 +1,75 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pkg = require( './../package.json' ).name; +var Uint8ClampedArray = require( './../lib' ); + + +// MAIN // + +bench( pkg+'::get,index', function benchmark( b ) { + var arr; + var N; + var v; + var i; + + arr = new Uint8ClampedArray( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = arr[ i%N ]; + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( v !== v ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+'::set,index', function benchmark( b ) { + var arr; + var N; + var i; + + arr = new Uint8ClampedArray( 2 ); + N = arr.length; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr[ i%N ] = i; + if ( arr[ 0 ] !== arr[ 0 ] ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( arr[ 0 ] !== arr[ 0 ] || arr[ 1 ] !== arr[ 1 ] ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From d548f9efda205464c97fd1d0f3ca28b3e067d47b Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 17:19:16 -0700 Subject: [PATCH 0616/1062] Rename files --- .../benchmark/{benchmark.tuple_data.js => benchmark.data.js} | 0 .../{benchmark.tuple_properties.js => benchmark.properties.js} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/{benchmark.tuple_data.js => benchmark.data.js} (100%) rename lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/{benchmark.tuple_properties.js => benchmark.properties.js} (100%) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.tuple_data.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.data.js similarity index 100% rename from lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.tuple_data.js rename to lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.data.js diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.tuple_properties.js b/lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.properties.js similarity index 100% rename from lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.tuple_properties.js rename to lib/node_modules/@stdlib/utils/named-typed-tuple/benchmark/benchmark.properties.js From 0cac7fffbb2be64a97df671841e61bd6d65efca4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 17:25:20 -0700 Subject: [PATCH 0617/1062] Rename file --- lib/node_modules/@stdlib/array/typed/lib/index.js | 2 +- .../@stdlib/array/typed/lib/{typedarray.js => main.js} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename lib/node_modules/@stdlib/array/typed/lib/{typedarray.js => main.js} (100%) diff --git a/lib/node_modules/@stdlib/array/typed/lib/index.js b/lib/node_modules/@stdlib/array/typed/lib/index.js index f0fd394ce80e..36bdbec0eb9b 100644 --- a/lib/node_modules/@stdlib/array/typed/lib/index.js +++ b/lib/node_modules/@stdlib/array/typed/lib/index.js @@ -118,7 +118,7 @@ // MODULES // -var typedarray = require( './typedarray.js' ); +var typedarray = require( './main.js' ); // EXPORTS // diff --git a/lib/node_modules/@stdlib/array/typed/lib/typedarray.js b/lib/node_modules/@stdlib/array/typed/lib/main.js similarity index 100% rename from lib/node_modules/@stdlib/array/typed/lib/typedarray.js rename to lib/node_modules/@stdlib/array/typed/lib/main.js From 49abb6f25e94af00ef98830dcfca34b827863b27 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 17:43:09 -0700 Subject: [PATCH 0618/1062] Update REPL help --- .../@stdlib/array/float32/README.md | 12 ++++ .../@stdlib/array/float32/docs/repl.txt | 60 +++++++++++++++++++ .../@stdlib/array/float64/docs/repl.txt | 60 +++++++++++++++++++ .../@stdlib/array/int16/docs/repl.txt | 60 +++++++++++++++++++ .../@stdlib/array/int32/docs/repl.txt | 60 +++++++++++++++++++ .../@stdlib/array/int8/docs/repl.txt | 60 +++++++++++++++++++ .../@stdlib/array/uint16/docs/repl.txt | 60 +++++++++++++++++++ .../@stdlib/array/uint32/docs/repl.txt | 60 +++++++++++++++++++ .../@stdlib/array/uint8/docs/repl.txt | 60 +++++++++++++++++++ .../@stdlib/array/uint8c/docs/repl.txt | 60 +++++++++++++++++++ 10 files changed, 552 insertions(+) diff --git a/lib/node_modules/@stdlib/array/float32/README.md b/lib/node_modules/@stdlib/array/float32/README.md index 618d88be40d7..dec55b7d3aed 100644 --- a/lib/node_modules/@stdlib/array/float32/README.md +++ b/lib/node_modules/@stdlib/array/float32/README.md @@ -163,6 +163,18 @@ var byteOffset = arr.byteOffset; // returns 0 ``` +#### Float32Array.prototype.BYTES_PER_ELEMENT + +Number of bytes per view element. + + + +```javascript +var arr = new Float32Array( 5 ); +var nbytes = arr.BYTES_PER_ELEMENT; +// returns 4 +``` + #### Float32Array.prototype.length **Read-only** property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/float32/docs/repl.txt b/lib/node_modules/@stdlib/array/float32/docs/repl.txt index 7daff32d37ca..219f67d63002 100644 --- a/lib/node_modules/@stdlib/array/float32/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/float32/docs/repl.txt @@ -101,6 +101,56 @@ [ 0.0, 0.0, 0.0, 0.0 ] +{{alias}}.from( src[, map[, thisArg]] ) + Creates a new typed array from an array-like object or an iterable. + + A callback is provided the following arguments: + + - value: source value. + - index: source index. + + Parameters + ---------- + src: ArrayLike|Iterable + Source of array elements. + + map: Function (optional) + Callback to invoke for each source element. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Float32Array + A typed array. + + Examples + -------- + > function mapFcn( v ) { return v * 2.0; }; + > var arr = {{alias}}.from( [ 1.0, -1.0 ], mapFcn ) + [ 2.0, -2.0 ] + + +{{alias}}.of( element0[, element1[, ...[, elementN]]] ) + Creates a new typed array from a variable number of arguments. + + Parameters + ---------- + element: number + Array elements. + + Returns + ------- + out: Float32Array + A typed array. + + Examples + -------- + > var arr = {{alias}}.of( 2.0, -2.0 ) + [ 2.0, -2.0 ] + + {{alias}}.BYTES_PER_ELEMENT Number of bytes per view element. @@ -151,6 +201,16 @@ 0 +{{alias}}.prototype.BYTES_PER_ELEMENT + Number of bytes per view element. + + Examples + -------- + > var arr = new {{alias}}( 5 ); + > arr.BYTES_PER_ELEMENT + 4 + + {{alias}}.prototype.length Read-only property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/float64/docs/repl.txt b/lib/node_modules/@stdlib/array/float64/docs/repl.txt index 742ef7e515ef..08a3856580c5 100644 --- a/lib/node_modules/@stdlib/array/float64/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/float64/docs/repl.txt @@ -101,6 +101,56 @@ [ 0.0, 0.0, 0.0, 0.0 ] +{{alias}}.from( src[, map[, thisArg]] ) + Creates a new typed array from an array-like object or an iterable. + + A callback is provided the following arguments: + + - value: source value. + - index: source index. + + Parameters + ---------- + src: ArrayLike|Iterable + Source of array elements. + + map: Function (optional) + Callback to invoke for each source element. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Float64Array + A typed array. + + Examples + -------- + > function mapFcn( v ) { return v * 2.0; }; + > var arr = {{alias}}.from( [ 1.0, -1.0 ], mapFcn ) + [ 2.0, -2.0 ] + + +{{alias}}.of( element0[, element1[, ...[, elementN]]] ) + Creates a new typed array from a variable number of arguments. + + Parameters + ---------- + element: number + Array elements. + + Returns + ------- + out: Float64Array + A typed array. + + Examples + -------- + > var arr = {{alias}}.of( 2.0, -2.0 ) + [ 2.0, -2.0 ] + + {{alias}}.BYTES_PER_ELEMENT Number of bytes per view element. @@ -151,6 +201,16 @@ 0 +{{alias}}.prototype.BYTES_PER_ELEMENT + Number of bytes per view element. + + Examples + -------- + > var arr = new {{alias}}( 5 ); + > arr.BYTES_PER_ELEMENT + 8 + + {{alias}}.prototype.length Read-only property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/int16/docs/repl.txt b/lib/node_modules/@stdlib/array/int16/docs/repl.txt index 021c1472084f..1748ae0a692f 100644 --- a/lib/node_modules/@stdlib/array/int16/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/int16/docs/repl.txt @@ -101,6 +101,56 @@ [ 0, 0, 0, 0 ] +{{alias}}.from( src[, map[, thisArg]] ) + Creates a new typed array from an array-like object or an iterable. + + A callback is provided the following arguments: + + - value: source value. + - index: source index. + + Parameters + ---------- + src: ArrayLike|Iterable + Source of array elements. + + map: Function (optional) + Callback to invoke for each source element. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Int16Array + A typed array. + + Examples + -------- + > function mapFcn( v ) { return v * 2; }; + > var arr = {{alias}}.from( [ 1, 2 ], mapFcn ) + [ 2, 4 ] + + +{{alias}}.of( element0[, element1[, ...[, elementN]]] ) + Creates a new typed array from a variable number of arguments. + + Parameters + ---------- + element: number + Array elements. + + Returns + ------- + out: Int16Array + A typed array. + + Examples + -------- + > var arr = {{alias}}.of( 1, 2 ) + [ 1, 2 ] + + {{alias}}.BYTES_PER_ELEMENT Number of bytes per view element. @@ -151,6 +201,16 @@ 0 +{{alias}}.prototype.BYTES_PER_ELEMENT + Number of bytes per view element. + + Examples + -------- + > var arr = new {{alias}}( 5 ); + > arr.BYTES_PER_ELEMENT + 2 + + {{alias}}.prototype.length Read-only property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/int32/docs/repl.txt b/lib/node_modules/@stdlib/array/int32/docs/repl.txt index 7a5b55f872f4..4e6061c74fa1 100644 --- a/lib/node_modules/@stdlib/array/int32/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/int32/docs/repl.txt @@ -101,6 +101,56 @@ [ 0, 0, 0, 0 ] +{{alias}}.from( src[, map[, thisArg]] ) + Creates a new typed array from an array-like object or an iterable. + + A callback is provided the following arguments: + + - value: source value. + - index: source index. + + Parameters + ---------- + src: ArrayLike|Iterable + Source of array elements. + + map: Function (optional) + Callback to invoke for each source element. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Int32Array + A typed array. + + Examples + -------- + > function mapFcn( v ) { return v * 2; }; + > var arr = {{alias}}.from( [ 1, 2 ], mapFcn ) + [ 2, 4 ] + + +{{alias}}.of( element0[, element1[, ...[, elementN]]] ) + Creates a new typed array from a variable number of arguments. + + Parameters + ---------- + element: number + Array elements. + + Returns + ------- + out: Int32Array + A typed array. + + Examples + -------- + > var arr = {{alias}}.of( 1, 2 ) + [ 1, 2 ] + + {{alias}}.BYTES_PER_ELEMENT Number of bytes per view element. @@ -151,6 +201,16 @@ 0 +{{alias}}.prototype.BYTES_PER_ELEMENT + Number of bytes per view element. + + Examples + -------- + > var arr = new {{alias}}( 5 ); + > arr.BYTES_PER_ELEMENT + 4 + + {{alias}}.prototype.length Read-only property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/int8/docs/repl.txt b/lib/node_modules/@stdlib/array/int8/docs/repl.txt index 65a7d70212a5..a2dfa5fce091 100644 --- a/lib/node_modules/@stdlib/array/int8/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/int8/docs/repl.txt @@ -101,6 +101,56 @@ [ 0, 0, 0, 0 ] +{{alias}}.from( src[, map[, thisArg]] ) + Creates a new typed array from an array-like object or an iterable. + + A callback is provided the following arguments: + + - value: source value. + - index: source index. + + Parameters + ---------- + src: ArrayLike|Iterable + Source of array elements. + + map: Function (optional) + Callback to invoke for each source element. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Int8Array + A typed array. + + Examples + -------- + > function mapFcn( v ) { return v * 2; }; + > var arr = {{alias}}.from( [ 1, 2 ], mapFcn ) + [ 2, 4 ] + + +{{alias}}.of( element0[, element1[, ...[, elementN]]] ) + Creates a new typed array from a variable number of arguments. + + Parameters + ---------- + element: number + Array elements. + + Returns + ------- + out: Int8Array + A typed array. + + Examples + -------- + > var arr = {{alias}}.of( 1, 2 ) + [ 1, 2 ] + + {{alias}}.BYTES_PER_ELEMENT Number of bytes per view element. @@ -151,6 +201,16 @@ 0 +{{alias}}.prototype.BYTES_PER_ELEMENT + Number of bytes per view element. + + Examples + -------- + > var arr = new {{alias}}( 5 ); + > arr.BYTES_PER_ELEMENT + 1 + + {{alias}}.prototype.length Read-only property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/uint16/docs/repl.txt b/lib/node_modules/@stdlib/array/uint16/docs/repl.txt index ccb416d228e4..6d58f007e6bc 100644 --- a/lib/node_modules/@stdlib/array/uint16/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/uint16/docs/repl.txt @@ -101,6 +101,56 @@ [ 0, 0, 0, 0 ] +{{alias}}.from( src[, map[, thisArg]] ) + Creates a new typed array from an array-like object or an iterable. + + A callback is provided the following arguments: + + - value: source value. + - index: source index. + + Parameters + ---------- + src: ArrayLike|Iterable + Source of array elements. + + map: Function (optional) + Callback to invoke for each source element. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Uint16Array + A typed array. + + Examples + -------- + > function mapFcn( v ) { return v * 2; }; + > var arr = {{alias}}.from( [ 1, 2 ], mapFcn ) + [ 2, 4 ] + + +{{alias}}.of( element0[, element1[, ...[, elementN]]] ) + Creates a new typed array from a variable number of arguments. + + Parameters + ---------- + element: number + Array elements. + + Returns + ------- + out: Uint16Array + A typed array. + + Examples + -------- + > var arr = {{alias}}.of( 1, 2 ) + [ 1, 2 ] + + {{alias}}.BYTES_PER_ELEMENT Number of bytes per view element. @@ -151,6 +201,16 @@ 0 +{{alias}}.prototype.BYTES_PER_ELEMENT + Number of bytes per view element. + + Examples + -------- + > var arr = new {{alias}}( 5 ); + > arr.BYTES_PER_ELEMENT + 2 + + {{alias}}.prototype.length Read-only property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/uint32/docs/repl.txt b/lib/node_modules/@stdlib/array/uint32/docs/repl.txt index ecc46e90b5b5..39dd016042ad 100644 --- a/lib/node_modules/@stdlib/array/uint32/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/uint32/docs/repl.txt @@ -101,6 +101,56 @@ [ 0, 0, 0, 0 ] +{{alias}}.from( src[, map[, thisArg]] ) + Creates a new typed array from an array-like object or an iterable. + + A callback is provided the following arguments: + + - value: source value. + - index: source index. + + Parameters + ---------- + src: ArrayLike|Iterable + Source of array elements. + + map: Function (optional) + Callback to invoke for each source element. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Uint32Array + A typed array. + + Examples + -------- + > function mapFcn( v ) { return v * 2; }; + > var arr = {{alias}}.from( [ 1, 2 ], mapFcn ) + [ 2, 4 ] + + +{{alias}}.of( element0[, element1[, ...[, elementN]]] ) + Creates a new typed array from a variable number of arguments. + + Parameters + ---------- + element: number + Array elements. + + Returns + ------- + out: Uint32Array + A typed array. + + Examples + -------- + > var arr = {{alias}}.of( 1, 2 ) + [ 1, 2 ] + + {{alias}}.BYTES_PER_ELEMENT Number of bytes per view element. @@ -151,6 +201,16 @@ 0 +{{alias}}.prototype.BYTES_PER_ELEMENT + Number of bytes per view element. + + Examples + -------- + > var arr = new {{alias}}( 5 ); + > arr.BYTES_PER_ELEMENT + 4 + + {{alias}}.prototype.length Read-only property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/uint8/docs/repl.txt b/lib/node_modules/@stdlib/array/uint8/docs/repl.txt index f0383487e50b..0e5b0cbeb90c 100644 --- a/lib/node_modules/@stdlib/array/uint8/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/uint8/docs/repl.txt @@ -101,6 +101,56 @@ [ 0, 0, 0, 0 ] +{{alias}}.from( src[, map[, thisArg]] ) + Creates a new typed array from an array-like object or an iterable. + + A callback is provided the following arguments: + + - value: source value. + - index: source index. + + Parameters + ---------- + src: ArrayLike|Iterable + Source of array elements. + + map: Function (optional) + Callback to invoke for each source element. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Uint8Array + A typed array. + + Examples + -------- + > function mapFcn( v ) { return v * 2; }; + > var arr = {{alias}}.from( [ 1, 2 ], mapFcn ) + [ 2, 4 ] + + +{{alias}}.of( element0[, element1[, ...[, elementN]]] ) + Creates a new typed array from a variable number of arguments. + + Parameters + ---------- + element: number + Array elements. + + Returns + ------- + out: Uint8Array + A typed array. + + Examples + -------- + > var arr = {{alias}}.of( 1, 2 ) + [ 1, 2 ] + + {{alias}}.BYTES_PER_ELEMENT Number of bytes per view element. @@ -151,6 +201,16 @@ 0 +{{alias}}.prototype.BYTES_PER_ELEMENT + Number of bytes per view element. + + Examples + -------- + > var arr = new {{alias}}( 5 ); + > arr.BYTES_PER_ELEMENT + 1 + + {{alias}}.prototype.length Read-only property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/uint8c/docs/repl.txt b/lib/node_modules/@stdlib/array/uint8c/docs/repl.txt index cc5be98a7ecf..79f3ca57b34d 100644 --- a/lib/node_modules/@stdlib/array/uint8c/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/uint8c/docs/repl.txt @@ -101,6 +101,56 @@ [ 0, 0, 0, 0 ] +{{alias}}.from( src[, map[, thisArg]] ) + Creates a new typed array from an array-like object or an iterable. + + A callback is provided the following arguments: + + - value: source value. + - index: source index. + + Parameters + ---------- + src: ArrayLike|Iterable + Source of array elements. + + map: Function (optional) + Callback to invoke for each source element. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Uint8ClampedArray + A typed array. + + Examples + -------- + > function mapFcn( v ) { return v * 2; }; + > var arr = {{alias}}.from( [ 1, 2 ], mapFcn ) + [ 2, 4 ] + + +{{alias}}.of( element0[, element1[, ...[, elementN]]] ) + Creates a new typed array from a variable number of arguments. + + Parameters + ---------- + element: number + Array elements. + + Returns + ------- + out: Uint8ClampedArray + A typed array. + + Examples + -------- + > var arr = {{alias}}.of( 1, 2 ) + [ 1, 2 ] + + {{alias}}.BYTES_PER_ELEMENT Number of bytes per view element. @@ -151,6 +201,16 @@ 0 +{{alias}}.prototype.BYTES_PER_ELEMENT + Number of bytes per view element. + + Examples + -------- + > var arr = new {{alias}}( 5 ); + > arr.BYTES_PER_ELEMENT + 1 + + {{alias}}.prototype.length Read-only property which returns the number of view elements. From c7403cabb66071fd69e61934db24ccdc026eabc9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 17:59:19 -0700 Subject: [PATCH 0619/1062] Fix example --- lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 02e2b348a232..42158b10436a 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -853,7 +853,7 @@ tuple.keys() -------- > var factory = {{alias}}( [ 'x', 'y' ] ); > var p = factory( [ 1.0, -1.0 ] ); - > it = p.entries(); + > it = p.keys(); > it.next().value [ 0, 'x' ] > it.next().value From 337a50bf9c0b755ce3204efd490c54152e5682b4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 18:10:46 -0700 Subject: [PATCH 0620/1062] Update REPL help --- .../@stdlib/array/float32/docs/repl.txt | 726 +++++++++++++++++- 1 file changed, 725 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/array/float32/docs/repl.txt b/lib/node_modules/@stdlib/array/float32/docs/repl.txt index 219f67d63002..aaf56f29c526 100644 --- a/lib/node_modules/@stdlib/array/float32/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/float32/docs/repl.txt @@ -221,7 +221,731 @@ 5 -TODO: add methods +{{alias}}.prototype.copyWithin( target, start[, end] ) + Copies a sequence of elements within the array starting at `start` and + ending at `end` (non-inclusive) to the position starting at `target`. + + Parameters + ---------- + target: integer + Target start index position. + + start: integer + Source start index position. + + end: integer (optional) + Source end index position. Default: out.length. + + Returns + ------- + out: Float32Array + Modified typed array. + + Examples + -------- + > var arr = new {{alias}}( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] ); + > arr.copyWithin( 3, 0, 2 ); + > arr[ 3 ] + 2.0 + > arr[ 4 ] + -2.0 + + +{{alias}}.prototype.entries() + Returns an iterator for iterating over array key-value pairs. + + Returns + ------- + iter: Iterator + Iterator for iterating over array key-value pairs. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0 ] ); + > it = arr.entries(); + > it.next().value + [ 1.0, 0 ] + > it.next().value + [ -1.0, 1 ] + > it.next().done + true + + +{{alias}}.prototype.every( predicate[, thisArg] ) + Tests whether all array elements pass a test implemented by a predicate + function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, an array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether all array elements pass. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0 ] ); + > function predicate( v ) { return ( v >= 0.0 ); }; + > arr.every( predicate ) + false + + +{{alias}}.prototype.fill( value[, start[, end]] ) + Fills an array from a start index to an end index (non-inclusive) with a + provided value. + + Parameters + ---------- + value: number + Fill value. + + start: integer (optional) + Start index. If less than zero, the start index is resolved relative to + the last array element. Default: 0. + + end: integer (optional) + End index (non-inclusive). If less than zero, the end index is resolved + relative to the last array element. Default: out.length. + + Returns + ------- + out: Float32Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0 ] ); + > arr.fill( 2.0 ); + > arr[ 0 ] + 2.0 + > arr[ 1 ] + 2.0 + + +{{alias}}.prototype.filter( predicate[, thisArg] ) + Creates a new array which includes those elements for which a predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + If a predicate function does not return a truthy value for any array + element, the method returns `null`. + + Parameters + ---------- + predicate: Function + Predicate function which filters array elements. If a predicate function + returns a truthy value, an array element is included in the output + array; otherwise, an array element is not included in the output array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Float32Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > function predicate( v ) { return ( v >= 0.0 ); }; + > var arr2 = arr1.filter( predicate ); + > arr2.length + 2 + + +{{alias}}.prototype.find( predicate[, thisArg] ) + Returns the first array element for which a provided predicate function + returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `undefined`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + value: number|undefined + Array element. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > function predicate( v ) { return ( v < 0.0 ); }; + > var v = arr.find( predicate ) + -1.0 + + +{{alias}}.prototype.findIndex( predicate[, thisArg] ) + Returns the index of the first array element for which a provided predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `-1`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > function predicate( v ) { return ( v < 0.0 ); }; + > var idx = arr.findIndex( predicate ) + 2 + + +{{alias}}.prototype.forEach( fcn[, thisArg] ) + Invokes a callback for each array element. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + fcn: Function + Function to invoke for each array element. + + thisArg: Any (optional) + Callback execution context. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > var str = ' '; + > function fcn( v, i ) { str += i + ':' + v + ' '; }; + > arr.forEach( fcn ); + > str + ' 0:1 1:0 2:-1 ' + + +{{alias}}.prototype.includes( searchElement[, fromIndex] ) + Returns a boolean indicating whether an array includes a search element. + + The method does not distinguish between signed and unsigned zero. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + bool: boolean + Boolean indicating whether an array includes a search element. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > var bool = arr.includes( 2.0 ) + false + > bool = arr.includes( -1.0 ) + true + + +{{alias}}.prototype.indexOf( searchElement[, fromIndex] ) + Returns the index of the first array element strictly equal to a search + element. + + The method does not distinguish between signed and unsigned zero. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > var idx = arr.indexOf( 2.0 ) + -1 + > idx = arr.indexOf( -1.0 ) + 2 + + +{{alias}}.prototype.join( [separator] ) + Serializes an array by joining all array elements as a string. + + Parameters + ---------- + separator: string (optional) + String delineating array elements. Default: ','. + + Returns + ------- + str: string + Array serialized as a string. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > arr.join( '|' ) + '1|0|-1' + + +{{alias}}.prototype.keys() + Returns an iterator for iterating over array keys. + + Returns + ------- + iter: Iterator + Iterator for iterating over array keys. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0 ] ); + > it = arr.keys(); + > it.next().value + 0 + > it.next().value + 1 + > it.next().done + true + + +{{alias}}.prototype.lastIndexOf( searchElement[, fromIndex] ) + Returns the index of the last array element strictly equal to a search + element. + + The method iterates from the last array element to the first array element. + + The method does not distinguish between signed and unsigned zero. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: -1. + + Returns + ------- + idx: integer + array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] ); + > var idx = arr.lastIndexOf( 2.0 ) + -1 + > idx = arr.lastIndexOf( 0.0 ) + 3 + + +{{alias}}.prototype.map( fcn[, thisArg] ) + Maps each array element to an element in a new typed array. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + Parameters + ---------- + fcn: Function + Function which maps array elements to elements in the new array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Float32Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > function fcn( v ) { return v * 2.0; }; + > var arr2 = arr1.map( fcn ); + [ 2.0, 0.0, -2.0 ] + + +{{alias}}.prototype.reduce( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the first array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the first array element as the first argument and the second array + element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduce( fcn, 0.0 ) + 2.0 + + +{{alias}}.prototype.reduceRight( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result, iterating from right to left. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the last array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the last array element as the first argument and the second-to-last + array element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduceRight( fcn, 0.0 ) + 2.0 + + +{{alias}}.prototype.reverse() + Reverses an array *in-place*. + + This method mutates the array on which the method is invoked. + + Returns + ------- + out: Float32Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ) + [ 1.0, 0.0, -1.0 ] + > arr.reverse() + [ -1.0, 0.0, 1.0 ] + + +{{alias}}.prototype.set( arr[, offset] ) + Sets array elements. + + Parameters + ---------- + arr: ArrayLike + Source array containing array values to set. + + offset: integer (optional) + Array index at which to start writing values. Default: 0. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > arr.set( [ -2.0, 2.0 ], 1 ); + > arr[ 1 ] + -2.0 + > arr[ 2 ] + 2.0 + + +{{alias}}.prototype.slice( [begin[, end]] ) + Copies array elements to a new array with the same underlying data type as + the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns `null`. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Float32Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > var arr2 = arr1.slice( 1 ); + > arr2.length + 2 + > arr2[ 0 ] + 0.0 + > arr2[ 1 ] + -1.0 + + +{{alias}}.prototype.some( predicate[, thisArg] ) + Tests whether at least one array element passes a test implemented by a + predicate function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, a array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether at least one array element passes. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0 ] ); + > function predicate( v ) { return ( v < 0.0 ); }; + > arr.some( predicate ) + true + + +{{alias}}.prototype.sort( [compareFunction] ) + Sorts an array *in-place*. + + The comparison function is provided two array elements per invocation: `a` + and `b`. + + The comparison function return value determines the sort order as follows: + + - If the comparison function returns a value less than zero, then the method + sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`). + + - If the comparison function returns a value greater than zero, then the + method sorts `a` to an index higher than `b` (i.e., `b` should come *before* + `a`). + + - If the comparison function returns zero, then the relative order of `a` + and `b` should remain unchanged. + + This method mutates the array on which the method is invoked. + + Parameters + ---------- + compareFunction: Function (optional) + Function which specifies the sort order. The default sort order is + ascending order. + + Returns + ------- + out: Float32Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] ); + > arr.sort() + [ -2.0, -1.0, 0.0, 1.0, 2.0 ] + + +{{alias}}.prototype.subarray( [begin[, end]] ) + Creates a new typed array over the same underlying ArrayBuffer and with the + same underlying data type as the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns an empty typed array. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Float32Array + A new typed array view. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] ); + > var arr2 = arr1.subarray( 2 ) + [ 0.0, 2.0, -2.0 ] + + +{{alias}}.prototype.toLocaleString( [locales[, options]] ) + Serializes an array as a locale-specific string. + + Parameters + ---------- + locales: string|Array (optional) + A BCP 47 language tag, or an array of such tags. + + options: Object (optional) + Options. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0, 0.0 ] ); + > arr.toLocaleString() + '1,-1,0' + + +{{alias}}.prototype.toString() + Serializes an array as a string. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0, 0.0 ] ); + > arr.toString() + '1,-1,0' + + +{{alias}}.prototype.values() + Returns an iterator for iterating over array elements. + + Returns + ------- + iter: Iterator + Iterator for iterating over array elements. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0 ] ); + > it = arr.values(); + > it.next().value + 1.0 + > it.next().value + -1.0 + > it.next().done + true See Also From da49a0ef301de4823b9c735a42eb2b34c07ac184 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 18:15:30 -0700 Subject: [PATCH 0621/1062] Update REPL help --- .../@stdlib/array/float64/docs/repl.txt | 726 +++++++++++++++++- 1 file changed, 725 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/array/float64/docs/repl.txt b/lib/node_modules/@stdlib/array/float64/docs/repl.txt index 08a3856580c5..1c0eae15a90c 100644 --- a/lib/node_modules/@stdlib/array/float64/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/float64/docs/repl.txt @@ -221,7 +221,731 @@ 5 -TODO: add methods +{{alias}}.prototype.copyWithin( target, start[, end] ) + Copies a sequence of elements within the array starting at `start` and + ending at `end` (non-inclusive) to the position starting at `target`. + + Parameters + ---------- + target: integer + Target start index position. + + start: integer + Source start index position. + + end: integer (optional) + Source end index position. Default: out.length. + + Returns + ------- + out: Float64Array + Modified typed array. + + Examples + -------- + > var arr = new {{alias}}( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] ); + > arr.copyWithin( 3, 0, 2 ); + > arr[ 3 ] + 2.0 + > arr[ 4 ] + -2.0 + + +{{alias}}.prototype.entries() + Returns an iterator for iterating over array key-value pairs. + + Returns + ------- + iter: Iterator + Iterator for iterating over array key-value pairs. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0 ] ); + > it = arr.entries(); + > it.next().value + [ 1.0, 0 ] + > it.next().value + [ -1.0, 1 ] + > it.next().done + true + + +{{alias}}.prototype.every( predicate[, thisArg] ) + Tests whether all array elements pass a test implemented by a predicate + function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, an array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether all array elements pass. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0 ] ); + > function predicate( v ) { return ( v >= 0.0 ); }; + > arr.every( predicate ) + false + + +{{alias}}.prototype.fill( value[, start[, end]] ) + Fills an array from a start index to an end index (non-inclusive) with a + provided value. + + Parameters + ---------- + value: number + Fill value. + + start: integer (optional) + Start index. If less than zero, the start index is resolved relative to + the last array element. Default: 0. + + end: integer (optional) + End index (non-inclusive). If less than zero, the end index is resolved + relative to the last array element. Default: out.length. + + Returns + ------- + out: Float64Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0 ] ); + > arr.fill( 2.0 ); + > arr[ 0 ] + 2.0 + > arr[ 1 ] + 2.0 + + +{{alias}}.prototype.filter( predicate[, thisArg] ) + Creates a new array which includes those elements for which a predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + If a predicate function does not return a truthy value for any array + element, the method returns `null`. + + Parameters + ---------- + predicate: Function + Predicate function which filters array elements. If a predicate function + returns a truthy value, an array element is included in the output + array; otherwise, an array element is not included in the output array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Float64Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > function predicate( v ) { return ( v >= 0.0 ); }; + > var arr2 = arr1.filter( predicate ); + > arr2.length + 2 + + +{{alias}}.prototype.find( predicate[, thisArg] ) + Returns the first array element for which a provided predicate function + returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `undefined`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + value: number|undefined + Array element. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > function predicate( v ) { return ( v < 0.0 ); }; + > var v = arr.find( predicate ) + -1.0 + + +{{alias}}.prototype.findIndex( predicate[, thisArg] ) + Returns the index of the first array element for which a provided predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `-1`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > function predicate( v ) { return ( v < 0.0 ); }; + > var idx = arr.findIndex( predicate ) + 2 + + +{{alias}}.prototype.forEach( fcn[, thisArg] ) + Invokes a callback for each array element. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + fcn: Function + Function to invoke for each array element. + + thisArg: Any (optional) + Callback execution context. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > var str = ' '; + > function fcn( v, i ) { str += i + ':' + v + ' '; }; + > arr.forEach( fcn ); + > str + ' 0:1 1:0 2:-1 ' + + +{{alias}}.prototype.includes( searchElement[, fromIndex] ) + Returns a boolean indicating whether an array includes a search element. + + The method does not distinguish between signed and unsigned zero. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + bool: boolean + Boolean indicating whether an array includes a search element. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > var bool = arr.includes( 2.0 ) + false + > bool = arr.includes( -1.0 ) + true + + +{{alias}}.prototype.indexOf( searchElement[, fromIndex] ) + Returns the index of the first array element strictly equal to a search + element. + + The method does not distinguish between signed and unsigned zero. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > var idx = arr.indexOf( 2.0 ) + -1 + > idx = arr.indexOf( -1.0 ) + 2 + + +{{alias}}.prototype.join( [separator] ) + Serializes an array by joining all array elements as a string. + + Parameters + ---------- + separator: string (optional) + String delineating array elements. Default: ','. + + Returns + ------- + str: string + Array serialized as a string. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > arr.join( '|' ) + '1|0|-1' + + +{{alias}}.prototype.keys() + Returns an iterator for iterating over array keys. + + Returns + ------- + iter: Iterator + Iterator for iterating over array keys. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0 ] ); + > it = arr.keys(); + > it.next().value + 0 + > it.next().value + 1 + > it.next().done + true + + +{{alias}}.prototype.lastIndexOf( searchElement[, fromIndex] ) + Returns the index of the last array element strictly equal to a search + element. + + The method iterates from the last array element to the first array element. + + The method does not distinguish between signed and unsigned zero. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: -1. + + Returns + ------- + idx: integer + array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] ); + > var idx = arr.lastIndexOf( 2.0 ) + -1 + > idx = arr.lastIndexOf( 0.0 ) + 3 + + +{{alias}}.prototype.map( fcn[, thisArg] ) + Maps each array element to an element in a new typed array. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + Parameters + ---------- + fcn: Function + Function which maps array elements to elements in the new array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Float64Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > function fcn( v ) { return v * 2.0; }; + > var arr2 = arr1.map( fcn ); + [ 2.0, 0.0, -2.0 ] + + +{{alias}}.prototype.reduce( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the first array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the first array element as the first argument and the second array + element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduce( fcn, 0.0 ) + 2.0 + + +{{alias}}.prototype.reduceRight( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result, iterating from right to left. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the last array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the last array element as the first argument and the second-to-last + array element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduceRight( fcn, 0.0 ) + 2.0 + + +{{alias}}.prototype.reverse() + Reverses an array *in-place*. + + This method mutates the array on which the method is invoked. + + Returns + ------- + out: Float64Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ) + [ 1.0, 0.0, -1.0 ] + > arr.reverse() + [ -1.0, 0.0, 1.0 ] + + +{{alias}}.prototype.set( arr[, offset] ) + Sets array elements. + + Parameters + ---------- + arr: ArrayLike + Source array containing array values to set. + + offset: integer (optional) + Array index at which to start writing values. Default: 0. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > arr.set( [ -2.0, 2.0 ], 1 ); + > arr[ 1 ] + -2.0 + > arr[ 2 ] + 2.0 + + +{{alias}}.prototype.slice( [begin[, end]] ) + Copies array elements to a new array with the same underlying data type as + the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns `null`. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Float64Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1.0, 0.0, -1.0 ] ); + > var arr2 = arr1.slice( 1 ); + > arr2.length + 2 + > arr2[ 0 ] + 0.0 + > arr2[ 1 ] + -1.0 + + +{{alias}}.prototype.some( predicate[, thisArg] ) + Tests whether at least one array element passes a test implemented by a + predicate function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, a array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether at least one array element passes. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0 ] ); + > function predicate( v ) { return ( v < 0.0 ); }; + > arr.some( predicate ) + true + + +{{alias}}.prototype.sort( [compareFunction] ) + Sorts an array *in-place*. + + The comparison function is provided two array elements per invocation: `a` + and `b`. + + The comparison function return value determines the sort order as follows: + + - If the comparison function returns a value less than zero, then the method + sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`). + + - If the comparison function returns a value greater than zero, then the + method sorts `a` to an index higher than `b` (i.e., `b` should come *before* + `a`). + + - If the comparison function returns zero, then the relative order of `a` + and `b` should remain unchanged. + + This method mutates the array on which the method is invoked. + + Parameters + ---------- + compareFunction: Function (optional) + Function which specifies the sort order. The default sort order is + ascending order. + + Returns + ------- + out: Float64Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] ); + > arr.sort() + [ -2.0, -1.0, 0.0, 1.0, 2.0 ] + + +{{alias}}.prototype.subarray( [begin[, end]] ) + Creates a new typed array over the same underlying ArrayBuffer and with the + same underlying data type as the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns an empty typed array. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Float64Array + A new typed array view. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] ); + > var arr2 = arr1.subarray( 2 ) + [ 0.0, 2.0, -2.0 ] + + +{{alias}}.prototype.toLocaleString( [locales[, options]] ) + Serializes an array as a locale-specific string. + + Parameters + ---------- + locales: string|Array (optional) + A BCP 47 language tag, or an array of such tags. + + options: Object (optional) + Options. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0, 0.0 ] ); + > arr.toLocaleString() + '1,-1,0' + + +{{alias}}.prototype.toString() + Serializes an array as a string. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0, 0.0 ] ); + > arr.toString() + '1,-1,0' + + +{{alias}}.prototype.values() + Returns an iterator for iterating over array elements. + + Returns + ------- + iter: Iterator + Iterator for iterating over array elements. + + Examples + -------- + > var arr = new {{alias}}( [ 1.0, -1.0 ] ); + > it = arr.values(); + > it.next().value + 1.0 + > it.next().value + -1.0 + > it.next().done + true See Also From d9cb79e41be50b801c21bca9b59f7f1cc949ef64 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 18:18:07 -0700 Subject: [PATCH 0622/1062] Update REPL help --- lib/node_modules/@stdlib/repl/help/lib/db.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 3dc431aabeb0..85476aaefb8e 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -907,7 +907,7 @@ var db = { "FLOAT32_SMALLEST_NORMAL": "\nFLOAT32_SMALLEST_NORMAL\n Smallest positive normalized single-precision floating-point number.\n\n Examples\n --------\n > FLOAT32_SMALLEST_NORMAL\n 1.1754943508222875e-38\n\n See Also\n --------\n FLOAT32_SMALLEST_SUBNORMAL, FLOAT64_SMALLEST_NORMAL\n", "FLOAT32_SMALLEST_SUBNORMAL": "\nFLOAT32_SMALLEST_SUBNORMAL\n Smallest positive denormalized single-precision floating-point number.\n\n Examples\n --------\n > FLOAT32_SMALLEST_SUBNORMAL\n 1.401298464324817e-45\n\n See Also\n --------\n FLOAT32_SMALLEST_NORMAL, FLOAT64_SMALLEST_SUBNORMAL\n", "FLOAT32_SQRT_EPS": "\nFLOAT32_SQRT_EPS\n Square root of single-precision floating-point epsilon.\n\n Examples\n --------\n > FLOAT32_SQRT_EPS\n 0.0003452669770922512\n\n See Also\n --------\n FLOAT32_EPS, SQRT_EPS\n", - "Float32Array": "\nFloat32Array()\n A typed array constructor which returns a typed array representing an array\n of single-precision floating-point numbers in the platform byte order.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float32Array()\n \n\n\nFloat32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 )\n [ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 0.5, 0.5, 0.5 ] );\n > var arr2 = new Float32Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 0.5, 0.5, 0.5 ];\n > var arr2 = new Float32Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Float32Array( buf, 0, 4 )\n [ 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Float32Array.BYTES_PER_ELEMENT\n 4\n\n\nFloat32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Float32Array.name\n 'Float32Array'\n\n\nFloat32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.buffer\n \n\n\nFloat32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.byteLength\n 20\n\n\nFloat32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.byteOffset\n 0\n\n\nFloat32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Float32Array": "\nFloat32Array()\n A typed array constructor which returns a typed array representing an array\n of single-precision floating-point numbers in the platform byte order.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float32Array()\n \n\n\nFloat32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 )\n [ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 0.5, 0.5, 0.5 ] );\n > var arr2 = new Float32Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 0.5, 0.5, 0.5 ];\n > var arr2 = new Float32Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Float32Array( buf, 0, 4 )\n [ 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat32Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2.0; };\n > var arr = Float32Array.from( [ 1.0, -1.0 ], mapFcn )\n [ 2.0, -2.0 ]\n\n\nFloat32Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr = Float32Array.of( 2.0, -2.0 )\n [ 2.0, -2.0 ]\n\n\nFloat32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Float32Array.BYTES_PER_ELEMENT\n 4\n\n\nFloat32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Float32Array.name\n 'Float32Array'\n\n\nFloat32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.buffer\n \n\n\nFloat32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.byteLength\n 20\n\n\nFloat32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.byteOffset\n 0\n\n\nFloat32Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 4\n\n\nFloat32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.length\n 5\n\n\nFloat32Array.prototype.copyWithin( target, start[, end] )\n Copies a sequence of elements within the array starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: out.length.\n\n Returns\n -------\n out: Float32Array\n Modified typed array.\n\n Examples\n --------\n > var arr = new Float32Array( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] );\n > arr.copyWithin( 3, 0, 2 );\n > arr[ 3 ]\n 2.0\n > arr[ 4 ]\n -2.0\n\n\nFloat32Array.prototype.entries()\n Returns an iterator for iterating over array key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array key-value pairs.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > it = arr.entries();\n > it.next().value\n [ 1.0, 0 ]\n > it.next().value\n [ -1.0, 1 ]\n > it.next().done\n true\n\n\nFloat32Array.prototype.every( predicate[, thisArg] )\n Tests whether all array elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, an array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all array elements pass.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > arr.every( predicate )\n false\n\n\nFloat32Array.prototype.fill( value[, start[, end]] )\n Fills an array from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last array element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last array element. Default: out.length.\n\n Returns\n -------\n out: Float32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > arr.fill( 2.0 );\n > arr[ 0 ]\n 2.0\n > arr[ 1 ]\n 2.0\n\n\nFloat32Array.prototype.filter( predicate[, thisArg] )\n Creates a new array which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n If a predicate function does not return a truthy value for any array\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters array elements. If a predicate function\n returns a truthy value, an array element is included in the output\n array; otherwise, an array element is not included in the output array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > var arr2 = arr1.filter( predicate );\n > arr2.length\n 2\n\n\nFloat32Array.prototype.find( predicate[, thisArg] )\n Returns the first array element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Array element.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var v = arr.find( predicate )\n -1.0\n\n\nFloat32Array.prototype.findIndex( predicate[, thisArg] )\n Returns the index of the first array element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var idx = arr.findIndex( predicate )\n 2\n\n\nFloat32Array.prototype.forEach( fcn[, thisArg] )\n Invokes a callback for each array element.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each array element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > var str = ' ';\n > function fcn( v, i ) { str += i + ':' + v + ' '; };\n > arr.forEach( fcn );\n > str\n ' 0:1 1:0 2:-1 '\n\n\nFloat32Array.prototype.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether an array includes a search element.\n\n The method does not distinguish between signed and unsigned zero.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether an array includes a search element.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > var bool = arr.includes( 2.0 )\n false\n > bool = arr.includes( -1.0 )\n true\n\n\nFloat32Array.prototype.indexOf( searchElement[, fromIndex] )\n Returns the index of the first array element strictly equal to a search\n element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > var idx = arr.indexOf( 2.0 )\n -1\n > idx = arr.indexOf( -1.0 )\n 2\n\n\nFloat32Array.prototype.join( [separator] )\n Serializes an array by joining all array elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating array elements. Default: ','.\n\n Returns\n -------\n str: string\n Array serialized as a string.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > arr.join( '|' )\n '1|0|-1'\n\n\nFloat32Array.prototype.keys()\n Returns an iterator for iterating over array keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array keys.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > it = arr.keys();\n > it.next().value\n 0\n > it.next().value\n 1\n > it.next().done\n true\n\n\nFloat32Array.prototype.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last array element strictly equal to a search\n element.\n\n The method iterates from the last array element to the first array element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n array index.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n > var idx = arr.lastIndexOf( 2.0 )\n -1\n > idx = arr.lastIndexOf( 0.0 )\n 3\n\n\nFloat32Array.prototype.map( fcn[, thisArg] )\n Maps each array element to an element in a new typed array.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n Parameters\n ----------\n fcn: Function\n Function which maps array elements to elements in the new array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( v ) { return v * 2.0; };\n > var arr2 = arr1.map( fcn );\n [ 2.0, 0.0, -2.0 ]\n\n\nFloat32Array.prototype.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first array element as the first argument and the second array\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduce( fcn, 0.0 )\n 2.0\n\n\nFloat32Array.prototype.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last array element as the first argument and the second-to-last\n array element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduceRight( fcn, 0.0 )\n 2.0\n\n\nFloat32Array.prototype.reverse()\n Reverses an array *in-place*.\n\n This method mutates the array on which the method is invoked.\n\n Returns\n -------\n out: Float32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] )\n [ 1.0, 0.0, -1.0 ]\n > arr.reverse()\n [ -1.0, 0.0, 1.0 ]\n\n\nFloat32Array.prototype.set( arr[, offset] )\n Sets array elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing array values to set.\n\n offset: integer (optional)\n Array index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > arr.set( [ -2.0, 2.0 ], 1 );\n > arr[ 1 ]\n -2.0\n > arr[ 2 ]\n 2.0\n\n\nFloat32Array.prototype.slice( [begin[, end]] )\n Copies array elements to a new array with the same underlying data type as\n the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > var arr2 = arr1.slice( 1 );\n > arr2.length\n 2\n > arr2[ 0 ]\n 0.0\n > arr2[ 1 ]\n -1.0\n\n\nFloat32Array.prototype.some( predicate[, thisArg] )\n Tests whether at least one array element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, a array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one array element passes.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > arr.some( predicate )\n true\n\n\nFloat32Array.prototype.sort( [compareFunction] )\n Sorts an array *in-place*.\n\n The comparison function is provided two array elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the array on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n out: Float32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > arr.sort()\n [ -2.0, -1.0, 0.0, 1.0, 2.0 ]\n\n\nFloat32Array.prototype.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Float32Array\n A new typed array view.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > var arr2 = arr1.subarray( 2 )\n [ 0.0, 2.0, -2.0 ]\n\n\nFloat32Array.prototype.toLocaleString( [locales[, options]] )\n Serializes an array as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0, 0.0 ] );\n > arr.toLocaleString()\n '1,-1,0'\n\n\nFloat32Array.prototype.toString()\n Serializes an array as a string.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0, 0.0 ] );\n > arr.toString()\n '1,-1,0'\n\n\nFloat32Array.prototype.values()\n Returns an iterator for iterating over array elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array elements.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > it = arr.values();\n > it.next().value\n 1.0\n > it.next().value\n -1.0\n > it.next().done\n true\n\n\n See Also\n --------\n ArrayBuffer, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "FLOAT64_EXPONENT_BIAS": "\nFLOAT64_EXPONENT_BIAS\n The bias of a double-precision floating-point number's exponent.\n\n Examples\n --------\n > FLOAT64_EXPONENT_BIAS\n 1023\n\n See Also\n --------\n FLOAT16_EXPONENT_BIAS, FLOAT32_EXPONENT_BIAS\n", "FLOAT64_HIGH_WORD_EXPONENT_MASK": "\nFLOAT64_HIGH_WORD_EXPONENT_MASK\n High word mask for the exponent of a double-precision floating-point number.\n\n Examples\n --------\n > FLOAT64_HIGH_WORD_EXPONENT_MASK\n 2146435072\n > base.toBinaryStringUint32( FLOAT64_HIGH_WORD_EXPONENT_MASK )\n '01111111111100000000000000000000'\n\n See Also\n --------\n FLOAT64_HIGH_WORD_SIGNIFICAND_MASK\n", "FLOAT64_HIGH_WORD_SIGNIFICAND_MASK": "\nFLOAT64_HIGH_WORD_SIGNIFICAND_MASK\n High word mask for the significand of a double-precision floating-point\n number.\n\n Examples\n --------\n > FLOAT64_HIGH_WORD_SIGNIFICAND_MASK\n 1048575\n > base.toBinaryStringUint32( FLOAT64_HIGH_WORD_SIGNIFICAND_MASK )\n '00000000000011111111111111111111'\n\n See Also\n --------\n FLOAT64_HIGH_WORD_EXPONENT_MASK\n", @@ -932,7 +932,7 @@ var db = { "FLOAT64_PRECISION": "\nFLOAT64_PRECISION\n Effective number of bits in the significand of a double-precision floating-\n point number.\n\n The effective number of bits is `52` significand bits plus `1` hidden bit.\n\n Examples\n --------\n > FLOAT64_PRECISION\n 53\n\n See Also\n --------\n FLOAT16_PRECISION, FLOAT32_PRECISION\n", "FLOAT64_SMALLEST_NORMAL": "\nFLOAT64_SMALLEST_NORMAL\n Smallest positive normalized double-precision floating-point number.\n\n Examples\n --------\n > FLOAT64_SMALLEST_NORMAL\n 2.2250738585072014e-308\n\n See Also\n --------\n FLOAT32_SMALLEST_NORMAL, FLOAT64_SMALLEST_SUBNORMAL\n", "FLOAT64_SMALLEST_SUBNORMAL": "\nFLOAT64_SMALLEST_SUBNORMAL\n Smallest positive denormalized double-precision floating-point number.\n\n Examples\n --------\n > FLOAT64_SMALLEST_SUBNORMAL\n 4.940656458412465e-324\n\n See Also\n --------\n FLOAT32_SMALLEST_SUBNORMAL, FLOAT64_SMALLEST_NORMAL\n", - "Float64Array": "\nFloat64Array()\n A typed array constructor which returns a typed array representing an array\n of double-precision floating-point numbers in the platform byte order.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float64Array()\n \n\n\nFloat64Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 )\n [ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat64Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 0.5, 0.5, 0.5 ] );\n > var arr2 = new Float64Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat64Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 0.5, 0.5, 0.5 ];\n > var arr2 = new Float64Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat64Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 32 );\n > var arr = new Float64Array( buf, 0, 4 )\n [ 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat64Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Float64Array.BYTES_PER_ELEMENT\n 8\n\n\nFloat64Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Float64Array.name\n 'Float64Array'\n\n\nFloat64Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.buffer\n \n\n\nFloat64Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.byteLength\n 40\n\n\nFloat64Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.byteOffset\n 0\n\n\nFloat64Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Float64Array": "\nFloat64Array()\n A typed array constructor which returns a typed array representing an array\n of double-precision floating-point numbers in the platform byte order.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float64Array()\n \n\n\nFloat64Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 )\n [ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat64Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 0.5, 0.5, 0.5 ] );\n > var arr2 = new Float64Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat64Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 0.5, 0.5, 0.5 ];\n > var arr2 = new Float64Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat64Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 32 );\n > var arr = new Float64Array( buf, 0, 4 )\n [ 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat64Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2.0; };\n > var arr = Float64Array.from( [ 1.0, -1.0 ], mapFcn )\n [ 2.0, -2.0 ]\n\n\nFloat64Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr = Float64Array.of( 2.0, -2.0 )\n [ 2.0, -2.0 ]\n\n\nFloat64Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Float64Array.BYTES_PER_ELEMENT\n 8\n\n\nFloat64Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Float64Array.name\n 'Float64Array'\n\n\nFloat64Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.buffer\n \n\n\nFloat64Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.byteLength\n 40\n\n\nFloat64Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.byteOffset\n 0\n\n\nFloat64Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 8\n\n\nFloat64Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.length\n 5\n\n\nFloat64Array.prototype.copyWithin( target, start[, end] )\n Copies a sequence of elements within the array starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: out.length.\n\n Returns\n -------\n out: Float64Array\n Modified typed array.\n\n Examples\n --------\n > var arr = new Float64Array( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] );\n > arr.copyWithin( 3, 0, 2 );\n > arr[ 3 ]\n 2.0\n > arr[ 4 ]\n -2.0\n\n\nFloat64Array.prototype.entries()\n Returns an iterator for iterating over array key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array key-value pairs.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > it = arr.entries();\n > it.next().value\n [ 1.0, 0 ]\n > it.next().value\n [ -1.0, 1 ]\n > it.next().done\n true\n\n\nFloat64Array.prototype.every( predicate[, thisArg] )\n Tests whether all array elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, an array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all array elements pass.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > arr.every( predicate )\n false\n\n\nFloat64Array.prototype.fill( value[, start[, end]] )\n Fills an array from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last array element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last array element. Default: out.length.\n\n Returns\n -------\n out: Float64Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > arr.fill( 2.0 );\n > arr[ 0 ]\n 2.0\n > arr[ 1 ]\n 2.0\n\n\nFloat64Array.prototype.filter( predicate[, thisArg] )\n Creates a new array which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n If a predicate function does not return a truthy value for any array\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters array elements. If a predicate function\n returns a truthy value, an array element is included in the output\n array; otherwise, an array element is not included in the output array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > var arr2 = arr1.filter( predicate );\n > arr2.length\n 2\n\n\nFloat64Array.prototype.find( predicate[, thisArg] )\n Returns the first array element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Array element.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var v = arr.find( predicate )\n -1.0\n\n\nFloat64Array.prototype.findIndex( predicate[, thisArg] )\n Returns the index of the first array element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var idx = arr.findIndex( predicate )\n 2\n\n\nFloat64Array.prototype.forEach( fcn[, thisArg] )\n Invokes a callback for each array element.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each array element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > var str = ' ';\n > function fcn( v, i ) { str += i + ':' + v + ' '; };\n > arr.forEach( fcn );\n > str\n ' 0:1 1:0 2:-1 '\n\n\nFloat64Array.prototype.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether an array includes a search element.\n\n The method does not distinguish between signed and unsigned zero.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether an array includes a search element.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > var bool = arr.includes( 2.0 )\n false\n > bool = arr.includes( -1.0 )\n true\n\n\nFloat64Array.prototype.indexOf( searchElement[, fromIndex] )\n Returns the index of the first array element strictly equal to a search\n element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > var idx = arr.indexOf( 2.0 )\n -1\n > idx = arr.indexOf( -1.0 )\n 2\n\n\nFloat64Array.prototype.join( [separator] )\n Serializes an array by joining all array elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating array elements. Default: ','.\n\n Returns\n -------\n str: string\n Array serialized as a string.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > arr.join( '|' )\n '1|0|-1'\n\n\nFloat64Array.prototype.keys()\n Returns an iterator for iterating over array keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array keys.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > it = arr.keys();\n > it.next().value\n 0\n > it.next().value\n 1\n > it.next().done\n true\n\n\nFloat64Array.prototype.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last array element strictly equal to a search\n element.\n\n The method iterates from the last array element to the first array element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n array index.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n > var idx = arr.lastIndexOf( 2.0 )\n -1\n > idx = arr.lastIndexOf( 0.0 )\n 3\n\n\nFloat64Array.prototype.map( fcn[, thisArg] )\n Maps each array element to an element in a new typed array.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n Parameters\n ----------\n fcn: Function\n Function which maps array elements to elements in the new array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( v ) { return v * 2.0; };\n > var arr2 = arr1.map( fcn );\n [ 2.0, 0.0, -2.0 ]\n\n\nFloat64Array.prototype.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first array element as the first argument and the second array\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduce( fcn, 0.0 )\n 2.0\n\n\nFloat64Array.prototype.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last array element as the first argument and the second-to-last\n array element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduceRight( fcn, 0.0 )\n 2.0\n\n\nFloat64Array.prototype.reverse()\n Reverses an array *in-place*.\n\n This method mutates the array on which the method is invoked.\n\n Returns\n -------\n out: Float64Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] )\n [ 1.0, 0.0, -1.0 ]\n > arr.reverse()\n [ -1.0, 0.0, 1.0 ]\n\n\nFloat64Array.prototype.set( arr[, offset] )\n Sets array elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing array values to set.\n\n offset: integer (optional)\n Array index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > arr.set( [ -2.0, 2.0 ], 1 );\n > arr[ 1 ]\n -2.0\n > arr[ 2 ]\n 2.0\n\n\nFloat64Array.prototype.slice( [begin[, end]] )\n Copies array elements to a new array with the same underlying data type as\n the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > var arr2 = arr1.slice( 1 );\n > arr2.length\n 2\n > arr2[ 0 ]\n 0.0\n > arr2[ 1 ]\n -1.0\n\n\nFloat64Array.prototype.some( predicate[, thisArg] )\n Tests whether at least one array element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, a array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one array element passes.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > arr.some( predicate )\n true\n\n\nFloat64Array.prototype.sort( [compareFunction] )\n Sorts an array *in-place*.\n\n The comparison function is provided two array elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the array on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n out: Float64Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > arr.sort()\n [ -2.0, -1.0, 0.0, 1.0, 2.0 ]\n\n\nFloat64Array.prototype.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Float64Array\n A new typed array view.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > var arr2 = arr1.subarray( 2 )\n [ 0.0, 2.0, -2.0 ]\n\n\nFloat64Array.prototype.toLocaleString( [locales[, options]] )\n Serializes an array as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0, 0.0 ] );\n > arr.toLocaleString()\n '1,-1,0'\n\n\nFloat64Array.prototype.toString()\n Serializes an array as a string.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0, 0.0 ] );\n > arr.toString()\n '1,-1,0'\n\n\nFloat64Array.prototype.values()\n Returns an iterator for iterating over array elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array elements.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > it = arr.values();\n > it.next().value\n 1.0\n > it.next().value\n -1.0\n > it.next().done\n true\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "forEach": "\nforEach( collection, fcn[, thisArg] )\n Invokes a function for each element in a collection.\n\n When invoked, the input function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function logger( v, i ) { console.log( '%s: %d', i, v ); };\n > var arr = [ 1, 2, 3, 4 ];\n > forEach( arr, logger )\n 0: 1\n 1: 2\n 2: 3\n 3: 4\n\n See Also\n --------\n forEachAsync, forEachRight\n", "forEachAsync": "\nforEachAsync( collection, [options,] fcn, done )\n Invokes a function once for each element in a collection.\n\n When invoked, `fcn` is provided a maximum of four arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If `fcn`\n accepts two arguments, `fcn` is provided:\n\n - `value`\n - `next`\n\n If `fcn` accepts three arguments, `fcn` is provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other `fcn` signature, `fcn` is provided all four arguments.\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function onDuration( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next();\n ... }\n ... };\n > function done( error ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( 'Done.' );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > forEachAsync( arr, onDuration, done )\n 1000\n 2500\n 3000\n Done.\n\n // Limit number of concurrent invocations:\n > function onDuration( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next();\n ... }\n ... };\n > function done( error ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( 'Done.' );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > forEachAsync( arr, opts, onDuration, done )\n 2500\n 3000\n 1000\n Done.\n\n // Process sequentially:\n > function onDuration( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next();\n ... }\n ... };\n > function done( error ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( 'Done.' );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > forEachAsync( arr, opts, onDuration, done )\n 3000\n 2500\n 1000\n Done.\n\n\nforEachAsync.factory( [options,] fcn )\n Returns a function which invokes a function once for each element in a\n collection.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which invokes a function for each element in a collection.\n\n Examples\n --------\n > function onDuration( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next();\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = forEachAsync.factory( opts, onDuration );\n > function done( error ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( 'Done.' );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n Done.\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n Done.\n\n See Also\n --------\n forEach, forEachRightAsync\n", "forEachRight": "\nforEachRight( collection, fcn[, thisArg] )\n Invokes a function for each element in a collection, iterating from right to\n left.\n\n When invoked, the input function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function logger( v, i ) { console.log( '%s: %d', i, v ); };\n > var arr = [ 1, 2, 3, 4 ];\n > forEachRight( arr, logger )\n 3: 4\n 2: 3\n 1: 2\n 0: 1\n\n See Also\n --------\n forEach, forEachRightAsync\n", @@ -1123,15 +1123,15 @@ var db = { "INT8_MAX": "\nINT8_MAX\n Maximum signed 8-bit integer.\n\n The maximum signed 8-bit integer is given by `2^7 - 1`.\n\n Examples\n --------\n > INT8_MAX\n 127\n\n See Also\n --------\n INT8_MIN\n", "INT8_MIN": "\nINT8_MIN\n Minimum signed 8-bit integer.\n\n The minimum signed 8-bit integer is given by `-(2^7)`.\n\n Examples\n --------\n > INT8_MIN\n -128\n\n See Also\n --------\n INT8_MAX\n", "INT8_NUM_BYTES": "\nINT8_NUM_BYTES\n Size (in bytes) of an 8-bit signed integer.\n\n Examples\n --------\n > INT8_NUM_BYTES\n 1\n\n See Also\n --------\n INT16_NUM_BYTES, INT32_NUM_BYTES, UINT8_NUM_BYTES\n", - "Int8Array": "\nInt8Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 8-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int8Array()\n \n\n\nInt8Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt8Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Int8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt8Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt8Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Int8Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt8Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int8Array.BYTES_PER_ELEMENT\n 1\n\n\nInt8Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int8Array.name\n 'Int8Array'\n\n\nInt8Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.buffer\n \n\n\nInt8Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.byteLength\n 5\n\n\nInt8Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt8Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Int8Array": "\nInt8Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 8-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int8Array()\n \n\n\nInt8Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt8Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Int8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt8Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt8Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Int8Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt8Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Int8Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nInt8Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr = Int8Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nInt8Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int8Array.BYTES_PER_ELEMENT\n 1\n\n\nInt8Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int8Array.name\n 'Int8Array'\n\n\nInt8Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.buffer\n \n\n\nInt8Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.byteLength\n 5\n\n\nInt8Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt8Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 1\n\n\nInt8Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "INT16_MAX": "\nINT16_MAX\n Maximum signed 16-bit integer.\n\n The maximum signed 16-bit integer is given by `2^15 - 1`.\n\n Examples\n --------\n > INT16_MAX\n 32767\n\n See Also\n --------\n INT16_MIN\n", "INT16_MIN": "\nINT16_MIN\n Minimum signed 16-bit integer.\n\n The minimum signed 16-bit integer is given by `-(2^15)`.\n\n Examples\n --------\n > INT16_MIN\n -32768\n\n See Also\n --------\n INT16_MAX\n", "INT16_NUM_BYTES": "\nINT16_NUM_BYTES\n Size (in bytes) of a 16-bit signed integer.\n\n Examples\n --------\n > INT16_NUM_BYTES\n 2\n\n See Also\n --------\n INT32_NUM_BYTES, INT8_NUM_BYTES, UINT16_NUM_BYTES\n", - "Int16Array": "\nInt16Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 16-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int16Array()\n \n\n\nInt16Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt16Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Int16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt16Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt16Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 8 );\n > var arr = new Int16Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt16Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int16Array.BYTES_PER_ELEMENT\n 2\n\n\nInt16Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int16Array.name\n 'Int16Array'\n\n\nInt16Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.buffer\n \n\n\nInt16Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.byteLength\n 10\n\n\nInt16Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt16Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Int16Array": "\nInt16Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 16-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int16Array()\n \n\n\nInt16Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt16Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Int16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt16Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt16Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 8 );\n > var arr = new Int16Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt16Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Int16Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nInt16Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr = Int16Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nInt16Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int16Array.BYTES_PER_ELEMENT\n 2\n\n\nInt16Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int16Array.name\n 'Int16Array'\n\n\nInt16Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.buffer\n \n\n\nInt16Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.byteLength\n 10\n\n\nInt16Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt16Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 2\n\n\nInt16Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "INT32_MAX": "\nINT32_MAX\n Maximum signed 32-bit integer.\n\n The maximum signed 32-bit integer is given by `2^31 - 1`.\n\n Examples\n --------\n > INT32_MAX\n 2147483647\n\n See Also\n --------\n INT32_MIN\n", "INT32_MIN": "\nINT32_MIN\n Minimum signed 32-bit integer.\n\n The minimum signed 32-bit integer is given by `-(2^31)`.\n\n Examples\n --------\n > INT32_MIN\n -2147483648\n\n See Also\n --------\n INT32_MAX\n", "INT32_NUM_BYTES": "\nINT32_NUM_BYTES\n Size (in bytes) of a 32-bit signed integer.\n\n Examples\n --------\n > INT32_NUM_BYTES\n 4\n\n See Also\n --------\n INT16_NUM_BYTES, INT8_NUM_BYTES, UINT32_NUM_BYTES\n", - "Int32Array": "\nInt32Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 32-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int32Array()\n \n\n\nInt32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int16Array( [ 5, 5, 5 ] );\n > var arr2 = new Int32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Int32Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int32Array.BYTES_PER_ELEMENT\n 4\n\n\nInt32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int32Array.name\n 'Int32Array'\n\n\nInt32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.buffer\n \n\n\nInt32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.byteLength\n 20\n\n\nInt32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Int32Array": "\nInt32Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 32-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int32Array()\n \n\n\nInt32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int16Array( [ 5, 5, 5 ] );\n > var arr2 = new Int32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Int32Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt32Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Int32Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nInt32Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr = Int32Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nInt32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int32Array.BYTES_PER_ELEMENT\n 4\n\n\nInt32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int32Array.name\n 'Int32Array'\n\n\nInt32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.buffer\n \n\n\nInt32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.byteLength\n 20\n\n\nInt32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt32Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 4\n\n\nInt32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "IS_BIG_ENDIAN": "\nIS_BIG_ENDIAN\n Boolean indicating if the environment is big endian.\n\n Examples\n --------\n > IS_BIG_ENDIAN\n \n\n See Also\n --------\n IS_LITTLE_ENDIAN\n", "IS_BROWSER": "\nIS_BROWSER\n Boolean indicating if the runtime is a web browser.\n\n Examples\n --------\n > IS_BROWSER\n \n\n", "IS_DARWIN": "\nIS_DARWIN\n Boolean indicating if the current process is running on Darwin.\n\n Examples\n --------\n > IS_DARWIN\n \n\n", @@ -1366,7 +1366,7 @@ var db = { "MONTH_NAMES_EN": "\nMONTH_NAMES_EN()\n Returns a list of month names (English).\n\n Returns\n -------\n out: Array\n List of month names.\n\n Examples\n --------\n > var list = MONTH_NAMES_EN()\n [ 'January', 'February', 'March', 'April', ... ]\n\n", "MONTHS_IN_YEAR": "\nMONTHS_IN_YEAR\n Number of months in a year.\n\n The value is a generalization and does **not** take into account\n inaccuracies due to daylight savings conventions, crossing timezones, or\n other complications with time and dates.\n\n Examples\n --------\n > var yrs = 3.14;\n > var mons = yrs * MONTHS_IN_YEAR\n 37.68\n\n", "moveProperty": "\nmoveProperty( source, prop, target )\n Moves a property from one object to another object.\n\n The property is deleted from the source object and the property's descriptor\n is preserved during transfer.\n\n If a source property is not configurable, the function throws an error, as\n the property cannot be deleted from the source object.\n\n Parameters\n ----------\n source: Object\n Source object.\n\n prop: string\n Property to move.\n\n target: Object\n Target object.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether operation was successful.\n\n Examples\n --------\n > var obj1 = { 'a': 'b' };\n > var obj2 = {};\n > var bool = moveProperty( obj1, 'a', obj2 )\n true\n > bool = moveProperty( obj1, 'c', obj2 )\n false\n\n", - "namedtypedtuple": "\nnamedtypedtuple( fields[, options] )\n Returns a named typed tuple factory.\n\n Named tuples assign a property name, and thus a meaning, to each position in\n a tuple and allow for more readable, self-documenting code.\n\n Named typed tuples can be used wherever typed arrays are used, with the\n added benefit that they allow accessing fields by both field name and\n position index.\n\n Named typed tuples may be one the following data types:\n\n - float64: double-precision floating-point numbers (IEEE 754)\n - float32: single-precision floating-point numbers (IEEE 754)\n - int32: 32-bit two's complement signed integers\n - uint32: 32-bit unsigned integers\n - int16: 16-bit two's complement signed integers\n - uint16: 16-bit unsigned integers\n - int8: 8-bit two's complement signed integers\n - uint8: 8-bit unsigned integers\n - uint8c: 8-bit unsigned integers clamped to 0-255\n\n Parameters\n ----------\n fields: Array\n Field (property) names.\n\n options: Object (optional)\n Function options.\n\n options.dtype: string (optional)\n Default tuple data type. If a data type is not provided to a named typed\n tuple factory, this option specifies the underlying tuple data type.\n Default: 'float64'.\n\n options.name: string (optional)\n Tuple name. Default: 'tuple'.\n\n Returns\n -------\n factory: Function\n Named typed tuple factory.\n\n Examples\n --------\n > var opts = {};\n > opts.name = 'Point';\n > var factory = namedtypedtuple( [ 'x', 'y' ], opts );\n > var tuple = factory();\n\n\nfactory()\n Returns a named typed tuple of the default data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory();\n > p.x\n 0.0\n > p.y\n 0.0\n > p[ 0 ]\n 0.0\n > p[ 1 ]\n 0.0\n\n\nfactory( dtype )\n Returns a named typed tuple of the specified data type.\n\n Parameters\n ----------\n dtype: string\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory( 'int32' );\n > p.x\n 0\n > p.y\n 0\n > p[ 0 ]\n 0\n > p[ 1 ]\n 0\n\n\nfactory( typedarray[, dtype] )\n Creates a named typed tuple from a typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate a named typed tuple.\n\n dtype: string (optional)\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory( Float64Array[ 1.0, -1.0 ] );\n > p.x\n 1.0\n > p.y\n -1.0\n > p[ 0 ]\n 1.0\n > p[ 1 ]\n -1.0\n\n\nfactory( obj[, dtype] )\n Creates a named typed tuple from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a named typed\n tuple.\n\n dtype: string (optional)\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory( [ 1, -1 ], 'int32' );\n > p.x\n 1\n > p.y\n -1\n > p[ 0 ]\n 1\n > p[ 1 ]\n -1\n\n\nfactory( buffer[, byteOffset][, dtype] )\n Returns a named typed tuple view of an ArrayBuffer.\n\n The view length equals the number of tuple fields.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first tuple element.\n Default: 0.\n\n dtype: string (optional)\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var buf = new ArrayBuffer( 16 );\n > var p = factory( buf, 4, 'float32' );\n > p.x\n 0.0\n > p.y\n 0.0\n > p[ 0 ]\n 0.0\n > p[ 1 ]\n 0.0\n\n\nfactory.from( src[, map[, thisArg]] )\n Creates a new named typed tuple from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n - field: tuple field.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of tuple elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > function mapFcn( v ) { return v * 2.0; };\n > var p = factory.from( [ 1.0, -1.0 ], mapFcn );\n > p.x\n 2.0\n > p.y\n -2.0\n > p[ 0 ]\n 2.0\n > p[ 1 ]\n -2.0\n\n\nfactory.fromObject( obj[, map[, thisArg]] )\n Creates a new named typed tuple from an object containing tuple fields.\n\n A callback is provided the following arguments:\n\n - value: source object tuple field value.\n - field: source object tuple field name.\n\n Parameters\n ----------\n obj: Object\n Source object.\n\n map: Function (optional)\n Callback to invoke for each source object tuple field.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory.fromObject( { 'x': 2.0, 'y': -2.0 } );\n > p.x\n 2.0\n > p.y\n -2.0\n > p[ 0 ]\n 2.0\n > p[ 1 ]\n -2.0\n\n\nfactory.of( element0[, element1[, ...[, elementN]]] )\n Creates a new named typed tuple from a variable number of arguments.\n\n The number of arguments *must* equal the number of tuple fields.\n\n Parameters\n ----------\n element: number\n Tuple elements.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory.of( 2.0, -2.0 );\n > p.x\n 2.0\n > p.y\n -2.0\n > p[ 0 ]\n 2.0\n > p[ 1 ]\n -2.0\n\n\ntuple.BYTES_PER_ELEMENT\n Size (in bytes) of each tuple element.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.BYTES_PER_ELEMENT\n 8\n\n\ntuple.buffer\n Pointer to the underlying data buffer.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.buffer\n \n\n\ntuple.byteLength\n Length (in bytes) of the tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.byteLength\n 16\n\n\ntuple.byteOffset\n Offset (in bytes) of a tuple from the start of its underlying ArrayBuffer.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.byteOffset\n 0\n\n\ntuple.length\n Tuple length (i.e., number of elements).\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.length\n 2\n\n\ntuple.name\n Tuple name.\n\n Examples\n --------\n > var opts = { 'name': 'Point' };\n > var factory = namedtypedtuple( [ 'x', 'y' ], opts );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.name\n 'Point'\n\n\ntuple.fields\n Returns the list of tuple fields.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.fields\n [ 'x', 'y' ]\n\n\ntuple.orderedFields\n Returns the list of tuple fields in index order.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p[ 0 ]\n 1.0\n > p.sort();\n > p[ 0 ]\n -1.0\n > p.fields\n [ 'x', 'y' ]\n > p.orderedFields\n [ 'y', 'x' ]\n\n\ntuple.copyWithin( target, start[, end] )\n Copies a sequence of elements within the tuple starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] );\n > p.copyWithin( 3, 0, 2 );\n > p.w\n 2.0\n > p.v\n -2.0\n\n\ntuple.entries()\n Returns an iterator for iterating over tuple key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over tuple key-value pairs.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > it = p.entries();\n > it.next().value\n [ 1.0, 0, 'x' ]\n > it.next().value\n [ -1.0, 1, 'y' ]\n > it.next().done\n true\n\n\ntuple.every( predicate[, thisArg] )\n Tests whether all tuple elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements. If a predicate function\n returns a truthy value, a tuple element passes; otherwise, a tuple\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all tuple elements pass.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > p.every( predicate )\n false\n\n\ntuple.fieldOf( searchElement[, fromIndex] )\n Returns the field of the first tuple element strictly equal to a search\n element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `undefined`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: 0.\n\n Returns\n -------\n field: string|undefined\n Tuple field.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > var f = p.fieldOf( 2.0 )\n undefined\n > f = p.fieldOf( -1.0 )\n 'z'\n\n\ntuple.fill( value[, start[, end]] )\n Fills a tuple from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last tuple element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.fill( 2.0 );\n > p.x\n 2.0\n > p.y\n 2.0\n\n\ntuple.filter( predicate[, thisArg] )\n Creates a new tuple which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n The returned tuple has the same data type as the host tuple.\n\n If a predicate function does not return a truthy value for any tuple\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters tuple elements. If a predicate function\n returns a truthy value, a tuple element is included in the output tuple;\n otherwise, a tuple element is not included in the output tuple.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p1 = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > var p2 = p1.filter( predicate );\n > p2.fields\n [ 'x', 'y' ]\n\n\ntuple.find( predicate[, thisArg] )\n Returns the first tuple element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Tuple element.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var v = p.find( predicate )\n -1.0\n\n\ntuple.findField( predicate[, thisArg] )\n Returns the field of the first tuple element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n field: string|undefined\n Tuple field.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var f = p.findField( predicate )\n 'z'\n\n\ntuple.findIndex( predicate[, thisArg] )\n Returns the index of the first tuple element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var idx = p.findIndex( predicate )\n 2\n\n\ntuple.forEach( fcn[, thisArg] )\n Invokes a callback for each tuple element.\n\n A provided function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each tuple element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1, 0, -1 ], 'int32' );\n > var str = ' ';\n > function fcn( v, i, f ) { str += f + '=' + v + ' '; };\n > p.forEach( fcn );\n > str\n ' x=1 y=0 z=-1 '\n\n\ntuple.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether a tuple includes a search element.\n\n The method does not distinguish between signed and unsigned zero.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a tuple includes a search element.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > var bool = p.includes( 2.0 )\n false\n > bool = p.includes( -1.0 )\n true\n\n\ntuple.indexOf( searchElement[, fromIndex] )\n Returns the index of the first tuple element strictly equal to a search\n element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > var idx = p.indexOf( 2.0 )\n -1\n > idx = p.indexOf( -1.0 )\n 2\n\n\ntuple.ind2key( ind )\n Converts a tuple index to a field name.\n\n If provided an out-of-bounds index, the method returns `undefined`.\n\n Parameters\n ----------\n ind: integer\n Tuple index. If less than zero, the method resolves the index relative\n to the last tuple element.\n\n Returns\n -------\n field: string|undefined\n Field name.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p.ind2key( 1 )\n 'y'\n > p.ind2key( 100 )\n undefined\n\n\ntuple.join( [separator] )\n Serializes a tuple by joining all tuple elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating tuple elements. Default: ','.\n\n Returns\n -------\n str: string\n Tuple serialized as a string.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1, 0, -1 ], 'int32' );\n > p.join( '|' )\n '1|0|-1'\n\n\ntuple.keys()\n Returns an iterator for iterating over tuple keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over tuple keys.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > it = p.entries();\n > it.next().value\n [ 0, 'x' ]\n > it.next().value\n [ 1, 'y' ]\n > it.next().done\n true\n\n\ntuple.key2ind( field )\n Converts a field name to a tuple index.\n\n If provided an unknown field name, the method returns `-1`.\n\n Parameters\n ----------\n field: string\n Tuple field name.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p.key2ind( 'y' )\n 1\n\n\ntuple.lastFieldOf( searchElement[, fromIndex] )\n Returns the field of the last tuple element strictly equal to a search\n element.\n\n The method iterates from the last tuple element to the first tuple element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `undefined`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: -1.\n\n Returns\n -------\n field: string|undefined\n Tuple field.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n > var f = p.lastFieldOf( 2.0 )\n undefined\n > f = p.lastFieldOf( 0.0 )\n 'w'\n\n\ntuple.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last tuple element strictly equal to a search\n element.\n\n The method iterates from the last tuple element to the first tuple element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n > var idx = p.lastIndexOf( 2.0 )\n -1\n > idx = p.lastIndexOf( 0.0 )\n 3\n\n\ntuple.map( fcn[, thisArg] )\n Maps each tuple element to an element in a new tuple.\n\n A provided function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n The returned tuple has the same data type as the host tuple.\n\n Parameters\n ----------\n fcn: Function\n Function which maps tuple elements to elements in the new tuple.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p1 = factory( [ 1.0, 0.0, -1.0 ] );\n > function fcn( v ) { return v * 2.0; };\n > var p2 = p1.map( fcn );\n > p2.x\n 2.0\n > p2.y\n 0.0\n > p2.z\n -2.0\n\n\ntuple.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in a tuple and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current tuple element.\n - index: index of the current tuple element.\n - field: field name corresponding to the current tuple element.\n - tuple: tuple on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first tuple element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first tuple element as the first argument and the second tuple\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = p.reduce( fcn, 0.0 )\n 2.0\n\n\ntuple.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in a tuple and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current tuple element.\n - index: index of the current tuple element.\n - field: field name corresponding to the current tuple element.\n - tuple: tuple on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last tuple element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last tuple element as the first argument and the second-to-last\n tuple element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = p.reduceRight( fcn, 0.0 )\n 2.0\n\n\ntuple.reverse()\n Reverses a tuple *in-place*.\n\n This method mutates the tuple on which the method is invoked.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p[ 0 ]\n 1.0\n > p.x\n 1.0\n > p.reverse();\n > p[ 0 ]\n -1.0\n > p.x\n 1.0\n\n\ntuple.set( arr[, offset] )\n Sets tuple elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing tuple values to set.\n\n offset: integer (optional)\n Tuple index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p[ 1 ]\n 0.0\n > p.y\n 0.0\n > p.set( [ -2.0, 2.0 ], 1 );\n > p[ 1 ]\n -2.0\n > p.y\n -2.0\n > p[ 2 ]\n 2.0\n > p.z\n 2.0\n\n\ntuple.slice( [begin[, end]] )\n Copies tuple elements to a new tuple with the same underlying data type as\n the host tuple.\n\n If the method is unable to resolve indices to a non-empty tuple subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last tuple element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p1 = factory( [ 1.0, 0.0, -1.0 ] );\n > p1.fields\n [ 'x', 'y', 'z' ]\n > var p2 = p1.slice( 1 );\n > p2.fields\n [ 'y', 'z' ]\n > p2.y\n 0.0\n > p2.z\n -1.0\n\n\ntuple.some( predicate[, thisArg] )\n Tests whether at least one tuple element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements. If a predicate function\n returns a truthy value, a tuple element passes; otherwise, a tuple\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one tuple element passes.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > p.some( predicate )\n true\n\n\ntuple.sort( [compareFunction] )\n Sorts a tuple *in-place*.\n\n Sorting a tuple does *not* affect field assignments. Accessing a tuple field\n before and after sorting will always return the same tuple element. However,\n this behavior is generally not true when accessing tuple elements according\n to tuple index. In summary, sorting affects index order but not field\n assignments.\n\n The comparison function is provided two tuple elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the tuple on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > p.sort();\n > p.orderedFields\n [ 'v', 'y', 'z', 'x', 'w' ]\n > p[ 0 ]\n -2.0\n > p.x\n 1.0\n > p[ 1 ]\n -1.0\n > p.y\n -1.0\n > p.key2ind( 'x' )\n 3\n\n\ntuple.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host tuple.\n\n If the method is unable to resolve indices to a non-empty tuple subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last tuple element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n arr: TypedArray\n A new typed array view.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > var arr = p.subarray( 2 )\n [ 0.0, 2.0, -2.0 ]\n > arr.length\n 3\n\n\ntuple.subtuple( [begin[, end]] )\n Creates a new named typed tuple over the same underlying ArrayBuffer and\n with the same underlying data type as the host tuple.\n\n If the function is unable to resolve indices to a non-empty tuple\n subsequence, the function returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last tuple element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray|null\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p1 = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > var p2 = p1.subtuple( 2 );\n > p2.fields\n [ 'z', 'w', 'v' ]\n > p2[ 0 ]\n 0.0\n > p2.z\n 0.0\n > p2[ 1 ]\n 2.0\n > p2.w\n 2.0\n > p2[ 2 ]\n -2.0\n > p2.v\n -2.0\n > p2.length\n 3\n\n\ntuple.toJSON()\n Serializes a tuple as JSON.\n\n Returns\n -------\n obj: Object\n A tuple JSON representation.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, -1.0, 0.0 ] );\n > p.toJSON()\n { 'x': 1.0, 'y': -1.0, 'z': 0.0 }\n\n\ntuple.toLocaleString( [locales[, options]] )\n Serializes a tuple as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, -1.0, 0.0 ], 'int32' );\n > p.toLocaleString()\n '1,-1,0'\n\n\ntuple.toString()\n Serializes a tuple as a string.\n\n Returns\n -------\n str: string\n A tuple string representation.\n\n Examples\n --------\n > opts = { 'name': 'Point' };\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ], opts );\n > var p = factory( [ 1.0, -1.0, 0.0 ] );\n > p.toString()\n 'Point(x=1, y=-1, z=0)'\n\n\ntuple.values()\n Returns an iterator for iterating over tuple elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over tuple elements.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > it = p.values();\n > it.next().value\n 1.0\n > it.next().value\n -1.0\n > it.next().done\n true\n\n See Also\n --------\n typedarray\n", + "namedtypedtuple": "\nnamedtypedtuple( fields[, options] )\n Returns a named typed tuple factory.\n\n Named tuples assign a property name, and thus a meaning, to each position in\n a tuple and allow for more readable, self-documenting code.\n\n Named typed tuples can be used wherever typed arrays are used, with the\n added benefit that they allow accessing fields by both field name and\n position index.\n\n Named typed tuples may be one the following data types:\n\n - float64: double-precision floating-point numbers (IEEE 754)\n - float32: single-precision floating-point numbers (IEEE 754)\n - int32: 32-bit two's complement signed integers\n - uint32: 32-bit unsigned integers\n - int16: 16-bit two's complement signed integers\n - uint16: 16-bit unsigned integers\n - int8: 8-bit two's complement signed integers\n - uint8: 8-bit unsigned integers\n - uint8c: 8-bit unsigned integers clamped to 0-255\n\n Parameters\n ----------\n fields: Array\n Field (property) names.\n\n options: Object (optional)\n Function options.\n\n options.dtype: string (optional)\n Default tuple data type. If a data type is not provided to a named typed\n tuple factory, this option specifies the underlying tuple data type.\n Default: 'float64'.\n\n options.name: string (optional)\n Tuple name. Default: 'tuple'.\n\n Returns\n -------\n factory: Function\n Named typed tuple factory.\n\n Examples\n --------\n > var opts = {};\n > opts.name = 'Point';\n > var factory = namedtypedtuple( [ 'x', 'y' ], opts );\n > var tuple = factory();\n\n\nfactory()\n Returns a named typed tuple of the default data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory();\n > p.x\n 0.0\n > p.y\n 0.0\n > p[ 0 ]\n 0.0\n > p[ 1 ]\n 0.0\n\n\nfactory( dtype )\n Returns a named typed tuple of the specified data type.\n\n Parameters\n ----------\n dtype: string\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory( 'int32' );\n > p.x\n 0\n > p.y\n 0\n > p[ 0 ]\n 0\n > p[ 1 ]\n 0\n\n\nfactory( typedarray[, dtype] )\n Creates a named typed tuple from a typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate a named typed tuple.\n\n dtype: string (optional)\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory( Float64Array[ 1.0, -1.0 ] );\n > p.x\n 1.0\n > p.y\n -1.0\n > p[ 0 ]\n 1.0\n > p[ 1 ]\n -1.0\n\n\nfactory( obj[, dtype] )\n Creates a named typed tuple from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a named typed\n tuple.\n\n dtype: string (optional)\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory( [ 1, -1 ], 'int32' );\n > p.x\n 1\n > p.y\n -1\n > p[ 0 ]\n 1\n > p[ 1 ]\n -1\n\n\nfactory( buffer[, byteOffset][, dtype] )\n Returns a named typed tuple view of an ArrayBuffer.\n\n The view length equals the number of tuple fields.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first tuple element.\n Default: 0.\n\n dtype: string (optional)\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var buf = new ArrayBuffer( 16 );\n > var p = factory( buf, 4, 'float32' );\n > p.x\n 0.0\n > p.y\n 0.0\n > p[ 0 ]\n 0.0\n > p[ 1 ]\n 0.0\n\n\nfactory.from( src[, map[, thisArg]] )\n Creates a new named typed tuple from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n - field: tuple field.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of tuple elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > function mapFcn( v ) { return v * 2.0; };\n > var p = factory.from( [ 1.0, -1.0 ], mapFcn );\n > p.x\n 2.0\n > p.y\n -2.0\n > p[ 0 ]\n 2.0\n > p[ 1 ]\n -2.0\n\n\nfactory.fromObject( obj[, map[, thisArg]] )\n Creates a new named typed tuple from an object containing tuple fields.\n\n A callback is provided the following arguments:\n\n - value: source object tuple field value.\n - field: source object tuple field name.\n\n Parameters\n ----------\n obj: Object\n Source object.\n\n map: Function (optional)\n Callback to invoke for each source object tuple field.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory.fromObject( { 'x': 2.0, 'y': -2.0 } );\n > p.x\n 2.0\n > p.y\n -2.0\n > p[ 0 ]\n 2.0\n > p[ 1 ]\n -2.0\n\n\nfactory.of( element0[, element1[, ...[, elementN]]] )\n Creates a new named typed tuple from a variable number of arguments.\n\n The number of arguments *must* equal the number of tuple fields.\n\n Parameters\n ----------\n element: number\n Tuple elements.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory.of( 2.0, -2.0 );\n > p.x\n 2.0\n > p.y\n -2.0\n > p[ 0 ]\n 2.0\n > p[ 1 ]\n -2.0\n\n\ntuple.BYTES_PER_ELEMENT\n Size (in bytes) of each tuple element.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.BYTES_PER_ELEMENT\n 8\n\n\ntuple.buffer\n Pointer to the underlying data buffer.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.buffer\n \n\n\ntuple.byteLength\n Length (in bytes) of the tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.byteLength\n 16\n\n\ntuple.byteOffset\n Offset (in bytes) of a tuple from the start of its underlying ArrayBuffer.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.byteOffset\n 0\n\n\ntuple.length\n Tuple length (i.e., number of elements).\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.length\n 2\n\n\ntuple.name\n Tuple name.\n\n Examples\n --------\n > var opts = { 'name': 'Point' };\n > var factory = namedtypedtuple( [ 'x', 'y' ], opts );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.name\n 'Point'\n\n\ntuple.fields\n Returns the list of tuple fields.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.fields\n [ 'x', 'y' ]\n\n\ntuple.orderedFields\n Returns the list of tuple fields in index order.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p[ 0 ]\n 1.0\n > p.sort();\n > p[ 0 ]\n -1.0\n > p.fields\n [ 'x', 'y' ]\n > p.orderedFields\n [ 'y', 'x' ]\n\n\ntuple.copyWithin( target, start[, end] )\n Copies a sequence of elements within the tuple starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] );\n > p.copyWithin( 3, 0, 2 );\n > p.w\n 2.0\n > p.v\n -2.0\n\n\ntuple.entries()\n Returns an iterator for iterating over tuple key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over tuple key-value pairs.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > it = p.entries();\n > it.next().value\n [ 1.0, 0, 'x' ]\n > it.next().value\n [ -1.0, 1, 'y' ]\n > it.next().done\n true\n\n\ntuple.every( predicate[, thisArg] )\n Tests whether all tuple elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements. If a predicate function\n returns a truthy value, a tuple element passes; otherwise, a tuple\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all tuple elements pass.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > p.every( predicate )\n false\n\n\ntuple.fieldOf( searchElement[, fromIndex] )\n Returns the field of the first tuple element strictly equal to a search\n element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `undefined`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: 0.\n\n Returns\n -------\n field: string|undefined\n Tuple field.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > var f = p.fieldOf( 2.0 )\n undefined\n > f = p.fieldOf( -1.0 )\n 'z'\n\n\ntuple.fill( value[, start[, end]] )\n Fills a tuple from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last tuple element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.fill( 2.0 );\n > p.x\n 2.0\n > p.y\n 2.0\n\n\ntuple.filter( predicate[, thisArg] )\n Creates a new tuple which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n The returned tuple has the same data type as the host tuple.\n\n If a predicate function does not return a truthy value for any tuple\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters tuple elements. If a predicate function\n returns a truthy value, a tuple element is included in the output tuple;\n otherwise, a tuple element is not included in the output tuple.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p1 = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > var p2 = p1.filter( predicate );\n > p2.fields\n [ 'x', 'y' ]\n\n\ntuple.find( predicate[, thisArg] )\n Returns the first tuple element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Tuple element.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var v = p.find( predicate )\n -1.0\n\n\ntuple.findField( predicate[, thisArg] )\n Returns the field of the first tuple element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n field: string|undefined\n Tuple field.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var f = p.findField( predicate )\n 'z'\n\n\ntuple.findIndex( predicate[, thisArg] )\n Returns the index of the first tuple element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var idx = p.findIndex( predicate )\n 2\n\n\ntuple.forEach( fcn[, thisArg] )\n Invokes a callback for each tuple element.\n\n A provided function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each tuple element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1, 0, -1 ], 'int32' );\n > var str = ' ';\n > function fcn( v, i, f ) { str += f + '=' + v + ' '; };\n > p.forEach( fcn );\n > str\n ' x=1 y=0 z=-1 '\n\n\ntuple.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether a tuple includes a search element.\n\n The method does not distinguish between signed and unsigned zero.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a tuple includes a search element.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > var bool = p.includes( 2.0 )\n false\n > bool = p.includes( -1.0 )\n true\n\n\ntuple.indexOf( searchElement[, fromIndex] )\n Returns the index of the first tuple element strictly equal to a search\n element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > var idx = p.indexOf( 2.0 )\n -1\n > idx = p.indexOf( -1.0 )\n 2\n\n\ntuple.ind2key( ind )\n Converts a tuple index to a field name.\n\n If provided an out-of-bounds index, the method returns `undefined`.\n\n Parameters\n ----------\n ind: integer\n Tuple index. If less than zero, the method resolves the index relative\n to the last tuple element.\n\n Returns\n -------\n field: string|undefined\n Field name.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p.ind2key( 1 )\n 'y'\n > p.ind2key( 100 )\n undefined\n\n\ntuple.join( [separator] )\n Serializes a tuple by joining all tuple elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating tuple elements. Default: ','.\n\n Returns\n -------\n str: string\n Tuple serialized as a string.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1, 0, -1 ], 'int32' );\n > p.join( '|' )\n '1|0|-1'\n\n\ntuple.keys()\n Returns an iterator for iterating over tuple keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over tuple keys.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > it = p.keys();\n > it.next().value\n [ 0, 'x' ]\n > it.next().value\n [ 1, 'y' ]\n > it.next().done\n true\n\n\ntuple.key2ind( field )\n Converts a field name to a tuple index.\n\n If provided an unknown field name, the method returns `-1`.\n\n Parameters\n ----------\n field: string\n Tuple field name.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p.key2ind( 'y' )\n 1\n\n\ntuple.lastFieldOf( searchElement[, fromIndex] )\n Returns the field of the last tuple element strictly equal to a search\n element.\n\n The method iterates from the last tuple element to the first tuple element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `undefined`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: -1.\n\n Returns\n -------\n field: string|undefined\n Tuple field.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n > var f = p.lastFieldOf( 2.0 )\n undefined\n > f = p.lastFieldOf( 0.0 )\n 'w'\n\n\ntuple.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last tuple element strictly equal to a search\n element.\n\n The method iterates from the last tuple element to the first tuple element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n > var idx = p.lastIndexOf( 2.0 )\n -1\n > idx = p.lastIndexOf( 0.0 )\n 3\n\n\ntuple.map( fcn[, thisArg] )\n Maps each tuple element to an element in a new tuple.\n\n A provided function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n The returned tuple has the same data type as the host tuple.\n\n Parameters\n ----------\n fcn: Function\n Function which maps tuple elements to elements in the new tuple.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p1 = factory( [ 1.0, 0.0, -1.0 ] );\n > function fcn( v ) { return v * 2.0; };\n > var p2 = p1.map( fcn );\n > p2.x\n 2.0\n > p2.y\n 0.0\n > p2.z\n -2.0\n\n\ntuple.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in a tuple and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current tuple element.\n - index: index of the current tuple element.\n - field: field name corresponding to the current tuple element.\n - tuple: tuple on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first tuple element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first tuple element as the first argument and the second tuple\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = p.reduce( fcn, 0.0 )\n 2.0\n\n\ntuple.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in a tuple and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current tuple element.\n - index: index of the current tuple element.\n - field: field name corresponding to the current tuple element.\n - tuple: tuple on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last tuple element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last tuple element as the first argument and the second-to-last\n tuple element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = p.reduceRight( fcn, 0.0 )\n 2.0\n\n\ntuple.reverse()\n Reverses a tuple *in-place*.\n\n This method mutates the tuple on which the method is invoked.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p[ 0 ]\n 1.0\n > p.x\n 1.0\n > p.reverse();\n > p[ 0 ]\n -1.0\n > p.x\n 1.0\n\n\ntuple.set( arr[, offset] )\n Sets tuple elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing tuple values to set.\n\n offset: integer (optional)\n Tuple index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p[ 1 ]\n 0.0\n > p.y\n 0.0\n > p.set( [ -2.0, 2.0 ], 1 );\n > p[ 1 ]\n -2.0\n > p.y\n -2.0\n > p[ 2 ]\n 2.0\n > p.z\n 2.0\n\n\ntuple.slice( [begin[, end]] )\n Copies tuple elements to a new tuple with the same underlying data type as\n the host tuple.\n\n If the method is unable to resolve indices to a non-empty tuple subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last tuple element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p1 = factory( [ 1.0, 0.0, -1.0 ] );\n > p1.fields\n [ 'x', 'y', 'z' ]\n > var p2 = p1.slice( 1 );\n > p2.fields\n [ 'y', 'z' ]\n > p2.y\n 0.0\n > p2.z\n -1.0\n\n\ntuple.some( predicate[, thisArg] )\n Tests whether at least one tuple element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements. If a predicate function\n returns a truthy value, a tuple element passes; otherwise, a tuple\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one tuple element passes.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > p.some( predicate )\n true\n\n\ntuple.sort( [compareFunction] )\n Sorts a tuple *in-place*.\n\n Sorting a tuple does *not* affect field assignments. Accessing a tuple field\n before and after sorting will always return the same tuple element. However,\n this behavior is generally not true when accessing tuple elements according\n to tuple index. In summary, sorting affects index order but not field\n assignments.\n\n The comparison function is provided two tuple elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the tuple on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > p.sort();\n > p.orderedFields\n [ 'v', 'y', 'z', 'x', 'w' ]\n > p[ 0 ]\n -2.0\n > p.x\n 1.0\n > p[ 1 ]\n -1.0\n > p.y\n -1.0\n > p.key2ind( 'x' )\n 3\n\n\ntuple.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host tuple.\n\n If the method is unable to resolve indices to a non-empty tuple subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last tuple element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n arr: TypedArray\n A new typed array view.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > var arr = p.subarray( 2 )\n [ 0.0, 2.0, -2.0 ]\n > arr.length\n 3\n\n\ntuple.subtuple( [begin[, end]] )\n Creates a new named typed tuple over the same underlying ArrayBuffer and\n with the same underlying data type as the host tuple.\n\n If the function is unable to resolve indices to a non-empty tuple\n subsequence, the function returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last tuple element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray|null\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p1 = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > var p2 = p1.subtuple( 2 );\n > p2.fields\n [ 'z', 'w', 'v' ]\n > p2[ 0 ]\n 0.0\n > p2.z\n 0.0\n > p2[ 1 ]\n 2.0\n > p2.w\n 2.0\n > p2[ 2 ]\n -2.0\n > p2.v\n -2.0\n > p2.length\n 3\n\n\ntuple.toJSON()\n Serializes a tuple as JSON.\n\n Returns\n -------\n obj: Object\n A tuple JSON representation.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, -1.0, 0.0 ] );\n > p.toJSON()\n { 'x': 1.0, 'y': -1.0, 'z': 0.0 }\n\n\ntuple.toLocaleString( [locales[, options]] )\n Serializes a tuple as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, -1.0, 0.0 ], 'int32' );\n > p.toLocaleString()\n '1,-1,0'\n\n\ntuple.toString()\n Serializes a tuple as a string.\n\n Returns\n -------\n str: string\n A tuple string representation.\n\n Examples\n --------\n > opts = { 'name': 'Point' };\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ], opts );\n > var p = factory( [ 1.0, -1.0, 0.0 ] );\n > p.toString()\n 'Point(x=1, y=-1, z=0)'\n\n\ntuple.values()\n Returns an iterator for iterating over tuple elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over tuple elements.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > it = p.values();\n > it.next().value\n 1.0\n > it.next().value\n -1.0\n > it.next().done\n true\n\n See Also\n --------\n typedarray\n", "nativeClass": "\nnativeClass( value )\n Returns a string value indicating a specification defined classification of\n an object.\n\n The function is *not* robust for ES2015+ environments. In ES2015+,\n `Symbol.toStringTag` allows overriding the default description of an object.\n While measures are taken to uncover the default description, such measures\n can be thwarted. While this function remains useful for type-checking, be\n aware that value impersonation is possible. Where possible, prefer functions\n tailored to checking for particular value types, as specialized functions\n are better equipped to address `Symbol.toStringTag`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n out: string\n String value indicating a specification defined classification of the\n input value.\n\n Examples\n --------\n > var str = nativeClass( 'a' )\n '[object String]'\n > str = nativeClass( 5 )\n '[object Number]'\n > function Beep(){};\n > str = nativeClass( new Beep() )\n '[object Object]'\n\n See Also\n --------\n constructorName, typeOf\n", "ndarray": "\nndarray( dtype, ndims[, options] )\n Returns an ndarray constructor.\n\n Parameters\n ----------\n dtype: string\n Underlying data type.\n\n ndims: integer\n Number of dimensions.\n\n options: Object (optional)\n Options.\n\n options.codegen: boolean (optional)\n Boolean indicating whether to use code generation. Code generation can\n boost performance, but may be problematic in browser contexts enforcing\n a strict content security policy (CSP). Default: true.\n\n options.mode: string (optional)\n Specifies how to handle indices which exceed array dimensions. If equal\n to 'throw', an ndarray instance throws an error when an index exceeds\n array dimensions. If equal to 'wrap', an ndarray instance wraps around\n indices exceeding array dimensions using modulo arithmetic. If equal to\n 'clamp', an ndarray instance sets an index exceeding array dimensions to\n either `0` (minimum index) or the maximum index. Default: 'throw'.\n\n options.submode: Array (optional)\n Specifies how to handle subscripts which exceed array dimensions. If a\n mode for a corresponding dimension is equal to 'throw', an ndarray\n instance throws an error when a subscript exceeds array dimensions. If\n equal to 'wrap', an ndarray instance wraps around subscripts exceeding\n array dimensions using modulo arithmetic. If equal to 'clamp', an\n ndarray instance sets a subscript exceeding array dimensions to either\n `0` (minimum index) or the maximum index. If the number of modes is\n fewer than the number of dimensions, the function recycles modes using\n modulo arithmetic. Default: [ options.mode ].\n\n Returns\n -------\n ctor: Function\n ndarray constructor.\n\n ctor.BYTES_PER_ELEMENT: integer\n Size (in bytes) of each array element (if known).\n\n ctor.dtype: string\n Underlying data type.\n\n ctor.ndims: integer\n Number of dimensions.\n\n ctor.prototype.byteLength: integer\n Size (in bytes) of the array (if known).\n\n ctor.prototype.BYTES_PER_ELEMENT: integer\n Size (in bytes) of each array element (if known).\n\n ctor.prototype.data: ArrayLikeObject|TypedArray|Buffer\n Pointer to the underlying data buffer.\n\n ctor.prototype.dtype: string\n Underlying data type.\n\n ctor.prototype.flags: Object\n Information about the memory layout of the array.\n\n ctor.prototype.length: integer\n Length of the array (i.e., number of elements).\n\n ctor.prototype.ndims: integer\n Number of dimensions.\n\n ctor.prototype.offset: integer\n Index offset which specifies the buffer index at which to start\n iterating over array elements.\n\n ctor.prototype.order: string\n Array order. The array order is either row-major (C-style) or column-\n major (Fortran-style).\n\n ctor.prototype.shape: Array\n Array shape.\n\n ctor.prototype.strides: Array\n Index strides which specify how to access data along corresponding array\n dimensions.\n\n ctor.prototype.get: Function\n Returns an array element specified according to provided subscripts. The\n number of provided subscripts should equal the number of dimensions.\n\n ctor.prototype.iget: Function\n Returns an array element located at a specified linear index.\n\n ctor.prototype.set: Function\n Sets an array element specified according to provided subscripts. The\n number of provided subscripts should equal the number of dimensions.\n\n ctor.prototype.iset: Function\n Sets an array element located at a specified linear index.\n\n ctor.prototype.toString: Function\n Serializes an ndarray as a string. This method does **not** serialize\n data outside of the buffer region defined by the array configuration.\n\n ctor.prototype.toJSON: Function\n Serializes an ndarray as a JSON object. This method does **not**\n serialize data outside of the buffer region defined by the array\n configuration.\n\n Examples\n --------\n > var ctor = ndarray( 'generic', 2 )\n \n\n // To create a new instance...\n > var b = [ 1.0, 2.0, 3.0, 4.0 ]; // underlying data buffer\n > var d = [ 2, 2 ]; // shape\n > var s = [ 2, 1 ]; // strides\n > var o = 0; // index offset\n > var arr = ctor( b, d, s, o, 'row-major' )\n \n\n // Get an element using subscripts:\n > var v = arr.get( 1, 1 )\n 4.0\n\n // Get an element using a linear index:\n > v = arr.iget( 3 )\n 4.0\n\n // Set an element using subscripts:\n > arr.set( 1, 1, 40.0 );\n > arr.get( 1, 1 )\n 40.0\n\n // Set an element using a linear index:\n > arr.iset( 3, 99.0 );\n > arr.get( 1, 1 )\n 99.0\n\n See Also\n --------\n array\n", "ndarrayCastingModes": "\nndarrayCastingModes()\n Returns a list of ndarray casting modes.\n\n The output array contains the following modes:\n\n - 'none': only allow casting between identical types\n - 'equiv': allow casting between identical and byte swapped types\n - 'safe': only allow \"safe\" casts\n - 'same-kind': allow \"safe\" casts and casts within the same kind (e.g.,\n between signed integers or between floats)\n - 'unsafe': allow casting between all types (including between integers and\n floats)\n\n Returns\n -------\n out: Array\n List of ndarray casting modes.\n\n Examples\n --------\n > var out = ndarrayCastingModes()\n [ 'none', 'equiv', 'safe', 'same-kind', 'unsafe' ]\n\n See Also\n --------\n array, ndarray\n", @@ -1629,14 +1629,14 @@ var db = { "typeOf": "\ntypeOf( value )\n Determines a value's type.\n\n The following values are not natively provided in older JavaScript engines:\n\n - Map\n - Set\n - WeakMap\n - WeakSet\n - Symbol\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n out: string\n The value's type.\n\n Examples\n --------\n // Built-ins:\n > var t = typeOf( 'a' )\n 'string'\n > t = typeOf( 5 )\n 'number'\n > t = typeOf( NaN )\n 'number'\n > t = typeOf( true )\n 'boolean'\n > t = typeOf( false )\n 'boolean'\n > t = typeOf( null )\n 'null'\n > t = typeOf( undefined )\n 'undefined'\n > t = typeOf( [] )\n 'array'\n > t = typeOf( {} )\n 'object'\n > t = typeOf( function noop() {} )\n 'function'\n > t = typeOf( Symbol( 'beep' ) )\n 'symbol'\n > t = typeOf( /.+/ )\n 'regexp'\n > t = typeOf( new String( 'beep' ) )\n 'string'\n > t = typeOf( new Number( 5 ) )\n 'number'\n > t = typeOf( new Boolean( false ) )\n 'boolean'\n > t = typeOf( new Array() )\n 'array'\n > t = typeOf( new Object() )\n 'object'\n > t = typeOf( new Int8Array( 10 ) )\n 'int8array'\n > t = typeOf( new Uint8Array( 10 ) )\n 'uint8array'\n > t = typeOf( new Uint8ClampedArray( 10 ) )\n 'uint8clampedarray'\n > t = typeOf( new Int16Array( 10 ) )\n 'int16array'\n > t = typeOf( new Uint16Array( 10 ) )\n 'uint16array'\n > t = typeOf( new Int32Array( 10 ) )\n 'int32array'\n > t = typeOf( new Uint32Array( 10 ) )\n 'uint32array'\n > t = typeOf( new Float32Array( 10 ) )\n 'float32array'\n > t = typeOf( new Float64Array( 10 ) )\n 'float64array'\n > t = typeOf( new ArrayBuffer( 10 ) )\n 'arraybuffer'\n > t = typeOf( new Date() )\n 'date'\n > t = typeOf( new RegExp( '.+' ) )\n 'regexp'\n > t = typeOf( new Map() )\n 'map'\n > t = typeOf( new Set() )\n 'set'\n > t = typeOf( new WeakMap() )\n 'weakmap'\n > t = typeOf( new WeakSet() )\n 'weakset'\n > t = typeOf( new Error( 'beep' ) )\n 'error'\n > t = typeOf( new TypeError( 'beep' ) )\n 'typeerror'\n > t = typeOf( new SyntaxError( 'beep' ) )\n 'syntaxerror'\n > t = typeOf( new ReferenceError( 'beep' ) )\n 'referenceerror'\n > t = typeOf( new URIError( 'beep' ) )\n 'urierror'\n > t = typeOf( new RangeError( 'beep' ) )\n 'rangeerror'\n > t = typeOf( new EvalError( 'beep' ) )\n 'evalerror'\n > t = typeOf( Math )\n 'math'\n > t = typeOf( JSON )\n 'json'\n\n // Arguments object:\n > function beep() { return arguments; };\n > t = typeOf( beep() )\n 'arguments'\n\n // Node.js Buffer object:\n > t = typeOf( new Buffer( 10 ) )\n 'buffer'\n\n // Custom constructor:\n > function Person() { return this };\n > t = typeOf( new Person() )\n 'person'\n\n // Anonymous constructor:\n > var Foo = function () { return this; };\n > t = typeOf( new Foo() )\n '' || 'foo'\n\n See Also\n --------\n constructorName, nativeClass\n", "UINT8_MAX": "\nUINT8_MAX\n Maximum unsigned 8-bit integer.\n\n The maximum unsigned 8-bit integer is given by `2^8 - 1`.\n\n Examples\n --------\n > UINT8_MAX\n 255\n\n See Also\n --------\n INT8_MAX\n", "UINT8_NUM_BYTES": "\nUINT8_NUM_BYTES\n Size (in bytes) of an 8-bit unsigned integer.\n\n Examples\n --------\n > UINT8_NUM_BYTES\n 1\n\n See Also\n --------\n INT8_NUM_BYTES, UINT16_NUM_BYTES, UINT32_NUM_BYTES\n", - "Uint8Array": "\nUint8Array()\n A typed array constructor which returns a typed array representing an array\n of 8-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8Array()\n \n\n\nUint8Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint8Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Uint8Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint8Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint8Array.BYTES_PER_ELEMENT\n 1\n\n\nUint8Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint8Array.name\n 'Uint8Array'\n\n\nUint8Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.buffer\n \n\n\nUint8Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.byteLength\n 5\n\n\nUint8Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint8Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8ClampedArray\n", - "Uint8ClampedArray": "\nUint8ClampedArray()\n A typed array constructor which returns a typed array representing an array\n of 8-bit unsigned integers in the platform byte order clamped to 0-255.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray()\n \n\n\nUint8ClampedArray( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint8ClampedArray( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint8ClampedArray( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8ClampedArray( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint8ClampedArray( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8ClampedArray( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Uint8ClampedArray( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint8ClampedArray.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint8ClampedArray.BYTES_PER_ELEMENT\n 1\n\n\nUint8ClampedArray.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint8ClampedArray.name\n 'Uint8ClampedArray'\n\n\nUint8ClampedArray.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.buffer\n \n\n\nUint8ClampedArray.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.byteLength\n 5\n\n\nUint8ClampedArray.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.byteOffset\n 0\n\n\nUint8ClampedArray.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array\n", + "Uint8Array": "\nUint8Array()\n A typed array constructor which returns a typed array representing an array\n of 8-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8Array()\n \n\n\nUint8Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint8Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Uint8Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint8Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Uint8Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nUint8Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr = Uint8Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nUint8Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint8Array.BYTES_PER_ELEMENT\n 1\n\n\nUint8Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint8Array.name\n 'Uint8Array'\n\n\nUint8Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.buffer\n \n\n\nUint8Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.byteLength\n 5\n\n\nUint8Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint8Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 1\n\n\nUint8Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8ClampedArray\n", + "Uint8ClampedArray": "\nUint8ClampedArray()\n A typed array constructor which returns a typed array representing an array\n of 8-bit unsigned integers in the platform byte order clamped to 0-255.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray()\n \n\n\nUint8ClampedArray( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint8ClampedArray( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint8ClampedArray( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8ClampedArray( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint8ClampedArray( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8ClampedArray( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Uint8ClampedArray( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint8ClampedArray.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Uint8ClampedArray.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nUint8ClampedArray.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr = Uint8ClampedArray.of( 1, 2 )\n [ 1, 2 ]\n\n\nUint8ClampedArray.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint8ClampedArray.BYTES_PER_ELEMENT\n 1\n\n\nUint8ClampedArray.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint8ClampedArray.name\n 'Uint8ClampedArray'\n\n\nUint8ClampedArray.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.buffer\n \n\n\nUint8ClampedArray.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.byteLength\n 5\n\n\nUint8ClampedArray.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.byteOffset\n 0\n\n\nUint8ClampedArray.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.BYTES_PER_ELEMENT\n 1\n\n\nUint8ClampedArray.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array\n", "UINT16_MAX": "\nUINT16_MAX\n Maximum unsigned 16-bit integer.\n\n The maximum unsigned 16-bit integer is given by `2^16 - 1`.\n\n Examples\n --------\n > UINT16_MAX\n 65535\n\n See Also\n --------\n INT16_MAX\n", "UINT16_NUM_BYTES": "\nUINT16_NUM_BYTES\n Size (in bytes) of a 16-bit unsigned integer.\n\n Examples\n --------\n > UINT16_NUM_BYTES\n 2\n\n See Also\n --------\n INT16_NUM_BYTES, UINT32_NUM_BYTES, UINT8_NUM_BYTES\n", - "Uint16Array": "\nUint16Array()\n A typed array constructor which returns a typed array representing an array\n of 16-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint16Array()\n \n\n\nUint16Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint16Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint16Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint16Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 8 );\n > var arr = new Uint16Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint16Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint16Array.BYTES_PER_ELEMENT\n 2\n\n\nUint16Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint16Array.name\n 'Uint16Array'\n\n\nUint16Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.buffer\n \n\n\nUint16Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.byteLength\n 10\n\n\nUint16Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint16Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Uint16Array": "\nUint16Array()\n A typed array constructor which returns a typed array representing an array\n of 16-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint16Array()\n \n\n\nUint16Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint16Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint16Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint16Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 8 );\n > var arr = new Uint16Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint16Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Uint16Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nUint16Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr = Uint16Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nUint16Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint16Array.BYTES_PER_ELEMENT\n 2\n\n\nUint16Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint16Array.name\n 'Uint16Array'\n\n\nUint16Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.buffer\n \n\n\nUint16Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.byteLength\n 10\n\n\nUint16Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint16Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 2\n\n\nUint16Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "UINT32_MAX": "\nUINT32_MAX\n Maximum unsigned 32-bit integer.\n\n The maximum unsigned 32-bit integer is given by `2^32 - 1`.\n\n Examples\n --------\n > UINT32_MAX\n 4294967295\n\n See Also\n --------\n INT32_MAX\n", "UINT32_NUM_BYTES": "\nUINT32_NUM_BYTES\n Size (in bytes) of a 32-bit unsigned integer.\n\n Examples\n --------\n > UINT32_NUM_BYTES\n 4\n\n See Also\n --------\n INT32_NUM_BYTES, UINT16_NUM_BYTES, UINT8_NUM_BYTES\n", - "Uint32Array": "\nUint32Array()\n A typed array constructor which returns a typed array representing an array\n of 32-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint32Array()\n \n\n\nUint32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Uint32Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint32Array.BYTES_PER_ELEMENT\n 4\n\n\nUint32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint32Array.name\n 'Uint32Array'\n\n\nUint32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.buffer\n \n\n\nUint32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.byteLength\n 20\n\n\nUint32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint8Array, Uint8ClampedArray\n", + "Uint32Array": "\nUint32Array()\n A typed array constructor which returns a typed array representing an array\n of 32-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint32Array()\n \n\n\nUint32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Uint32Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint32Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Uint32Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nUint32Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr = Uint32Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nUint32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint32Array.BYTES_PER_ELEMENT\n 4\n\n\nUint32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint32Array.name\n 'Uint32Array'\n\n\nUint32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.buffer\n \n\n\nUint32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.byteLength\n 20\n\n\nUint32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint32Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 4\n\n\nUint32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint8Array, Uint8ClampedArray\n", "umask": "\numask( [mask,] [options] )\n Returns the current process mask, if not provided a mask; otherwise, sets\n the process mask and returns the previous mask.\n\n A mask is a set of bits, each of which restricts how its corresponding\n permission is set for newly created files.\n\n On POSIX platforms, each file has a set of attributes that control who can\n read, write, or execute that file. Upon creating a file, file permissions\n must be set to an initial setting. The process mask restricts those\n permission settings.\n\n If the mask contains a bit set to \"1\", the corresponding initial file\n permission is disabled. If the mask contains a bit set to \"0\", the\n corresponding permission is left to be determined by the requesting process\n and the system.\n\n The process mask is thus a filter that removes permissions as a file is\n created; i.e., each bit set to a \"1\" removes its corresponding permission.\n\n In octal representation, a mask is a four digit number, e.g., 0077,\n comprised as follows:\n\n - 0: special permissions (setuid, setgid, sticky bit)\n - 0: (u)ser/owner permissions\n - 7: (g)roup permissions\n - 7: (o)thers/non-group permissions\n\n Octal codes correspond to the following permissions:\n\n - 0: read, write, execute\n - 1: read, write\n - 2: read, execute\n - 3: read\n - 4: write, execute\n - 5: write\n - 6: execute\n - 7: no permissions\n\n If provided fewer than four digits, the mask is left-padded with zeros.\n\n Note, however, that only the last three digits (i.e., the file permissions\n digits) of the mask are actually used when the mask is applied.\n\n Permissions can be represented using the following symbolic form:\n\n u=rwx,g=rwx,o=rwx\n\n where\n\n - u: user permissions\n - g: group permissions\n - o: other/non-group permissions\n - r: read\n - w: write\n - x: execute\n\n When setting permissions using symbolic notation, the function accepts a\n mask expression of the form:\n\n []\n\n where \"classes\" may be a combination of\n\n - u: user\n - g: group\n - o: other/non-group\n - a: all\n\n \"symbols\" may be a combination of\n\n - r: read\n - w: write\n - x: execute\n - X: special execute\n - s: setuid/gid on execution\n - t: sticky\n\n and \"operator\" may be one of\n\n - `+`: enable\n - `-`: disable\n - `=`: enable specified and disable unspecified permissions\n\n For example,\n\n - `u-w`: disable user write permissions\n - `u+w`: enable user write permissions\n - `u=w`: enable user write permissions and disable user read and execute\n\n To specify multiple changes, provide a comma-separated list of mask\n expressions. For example,\n\n u+rwx,g-x,o=r\n\n would enable user read, write, and execute permissions, disable group\n execute permissions, enable other read permissions, and disable other\n write and execute permissions.\n\n The `a` class indicates \"all\", which is the same as specifying \"ugo\". This\n is the default class if a class is omitted when specifying permissions. For\n example, `+x` is equivalent to `a+x` which is equivalent to `ugo+x` which\n is equivalent to `u+x,g+x,o+x` and enables execution for all classes.\n\n Parameters\n ----------\n mask: integer|string (optional)\n Mask or mask expression. If the mask is a string, the mask is assumed to\n be in symbolic notation.\n\n options: Object (optional)\n Options.\n\n options.symbolic: boolean (optional)\n Boolean indicating whether to return the mask using symbolic notation.\n\n Returns\n -------\n mask: integer|string\n Process mask. If provided a mask, the returned value is the previous\n mask; otherwise, the returned value is the current process mask.\n\n Examples\n --------\n > var mask = umask()\n \n > mask = umask( { 'symbolic': true } )\n \n\n", "uncapitalize": "\nuncapitalize( str )\n Lowercases the first character of a `string`.\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n out: string\n Uncapitalized string.\n\n Examples\n --------\n > var out = uncapitalize( 'Beep' )\n 'beep'\n > out = uncapitalize( 'bOOp' )\n 'bOOp'\n\n See Also\n --------\n capitalize, lowercase\n", "uncapitalizeKeys": "\nuncapitalizeKeys( obj )\n Converts the first letter of each object key to lowercase.\n\n The function only transforms own properties. Hence, the function does not\n transform inherited properties.\n\n The function shallow copies key values.\n\n Parameters\n ----------\n obj: Object\n Source object.\n\n Returns\n -------\n out: Object\n New object.\n\n Examples\n --------\n > var obj = { 'AA': 1, 'BB': 2 };\n > var out = uncapitalizeKeys( obj )\n { 'aA': 1, 'bB': 2 }\n\n See Also\n --------\n capitalizeKeys, lowercaseKeys\n", From c41d3acb17f5e11a7860b51aabc3b4f62287293a Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 18:30:29 -0700 Subject: [PATCH 0623/1062] Update REPL help --- .../@stdlib/array/int16/docs/repl.txt | 720 +++++++++++++++++- 1 file changed, 719 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/array/int16/docs/repl.txt b/lib/node_modules/@stdlib/array/int16/docs/repl.txt index 1748ae0a692f..c9cf1121db48 100644 --- a/lib/node_modules/@stdlib/array/int16/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/int16/docs/repl.txt @@ -221,7 +221,725 @@ 5 -TODO: add methods +{{alias}}.prototype.copyWithin( target, start[, end] ) + Copies a sequence of elements within the array starting at `start` and + ending at `end` (non-inclusive) to the position starting at `target`. + + Parameters + ---------- + target: integer + Target start index position. + + start: integer + Source start index position. + + end: integer (optional) + Source end index position. Default: out.length. + + Returns + ------- + out: Int16Array + Modified typed array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3, 4, 5 ] ); + > arr.copyWithin( 3, 0, 2 ); + > arr[ 3 ] + 1 + > arr[ 4 ] + 2 + + +{{alias}}.prototype.entries() + Returns an iterator for iterating over array key-value pairs. + + Returns + ------- + iter: Iterator + Iterator for iterating over array key-value pairs. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.entries(); + > it.next().value + [ 1, 0 ] + > it.next().value + [ 2, 1 ] + > it.next().done + true + + +{{alias}}.prototype.every( predicate[, thisArg] ) + Tests whether all array elements pass a test implemented by a predicate + function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, an array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether all array elements pass. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > function predicate( v ) { return ( v <= 1 ); }; + > arr.every( predicate ) + false + + +{{alias}}.prototype.fill( value[, start[, end]] ) + Fills an array from a start index to an end index (non-inclusive) with a + provided value. + + Parameters + ---------- + value: number + Fill value. + + start: integer (optional) + Start index. If less than zero, the start index is resolved relative to + the last array element. Default: 0. + + end: integer (optional) + End index (non-inclusive). If less than zero, the end index is resolved + relative to the last array element. Default: out.length. + + Returns + ------- + out: Int16Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > arr.fill( 3 ); + > arr[ 0 ] + 3 + > arr[ 1 ] + 3 + + +{{alias}}.prototype.filter( predicate[, thisArg] ) + Creates a new array which includes those elements for which a predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + If a predicate function does not return a truthy value for any array + element, the method returns `null`. + + Parameters + ---------- + predicate: Function + Predicate function which filters array elements. If a predicate function + returns a truthy value, an array element is included in the output + array; otherwise, an array element is not included in the output array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Int16Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 1 ); }; + > var arr2 = arr1.filter( predicate ); + > arr2.length + 2 + + +{{alias}}.prototype.find( predicate[, thisArg] ) + Returns the first array element for which a provided predicate function + returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `undefined`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + value: number|undefined + Array element. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 2 ); }; + > var v = arr.find( predicate ) + 3 + + +{{alias}}.prototype.findIndex( predicate[, thisArg] ) + Returns the index of the first array element for which a provided predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `-1`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 2 ); }; + > var idx = arr.findIndex( predicate ) + 2 + + +{{alias}}.prototype.forEach( fcn[, thisArg] ) + Invokes a callback for each array element. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + fcn: Function + Function to invoke for each array element. + + thisArg: Any (optional) + Callback execution context. + + Examples + -------- + > var arr = new {{alias}}( [ 3, 2, 1 ] ); + > var str = ' '; + > function fcn( v, i ) { str += i + ':' + v + ' '; }; + > arr.forEach( fcn ); + > str + ' 0:3 1:2 2:1 ' + + +{{alias}}.prototype.includes( searchElement[, fromIndex] ) + Returns a boolean indicating whether an array includes a search element. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + bool: boolean + Boolean indicating whether an array includes a search element. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > var bool = arr.includes( 4 ) + false + > bool = arr.includes( 3 ) + true + + +{{alias}}.prototype.indexOf( searchElement[, fromIndex] ) + Returns the index of the first array element strictly equal to a search + element. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > var idx = arr.indexOf( 4 ) + -1 + > idx = arr.indexOf( 3 ) + 2 + + +{{alias}}.prototype.join( [separator] ) + Serializes an array by joining all array elements as a string. + + Parameters + ---------- + separator: string (optional) + String delineating array elements. Default: ','. + + Returns + ------- + str: string + Array serialized as a string. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.join( '|' ) + '1|2|3' + + +{{alias}}.prototype.keys() + Returns an iterator for iterating over array keys. + + Returns + ------- + iter: Iterator + Iterator for iterating over array keys. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.keys(); + > it.next().value + 0 + > it.next().value + 1 + > it.next().done + true + + +{{alias}}.prototype.lastIndexOf( searchElement[, fromIndex] ) + Returns the index of the last array element strictly equal to a search + element. + + The method iterates from the last array element to the first array element. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: -1. + + Returns + ------- + idx: integer + array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 0, 2, 0, 1 ] ); + > var idx = arr.lastIndexOf( 3 ) + -1 + > idx = arr.lastIndexOf( 0 ) + 3 + + +{{alias}}.prototype.map( fcn[, thisArg] ) + Maps each array element to an element in a new typed array. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + Parameters + ---------- + fcn: Function + Function which maps array elements to elements in the new array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Int16Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( v ) { return v * 2; }; + > var arr2 = arr1.map( fcn ); + [ 2, 4, 6 ] + + +{{alias}}.prototype.reduce( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the first array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the first array element as the first argument and the second array + element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduce( fcn, 0 ) + 14 + + +{{alias}}.prototype.reduceRight( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result, iterating from right to left. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the last array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the last array element as the first argument and the second-to-last + array element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduceRight( fcn, 0 ) + 14 + + +{{alias}}.prototype.reverse() + Reverses an array *in-place*. + + This method mutates the array on which the method is invoked. + + Returns + ------- + out: Int16Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ) + [ 1, 2, 3 ] + > arr.reverse() + [ 3, 2, 1 ] + + +{{alias}}.prototype.set( arr[, offset] ) + Sets array elements. + + Parameters + ---------- + arr: ArrayLike + Source array containing array values to set. + + offset: integer (optional) + Array index at which to start writing values. Default: 0. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.set( [ 4, 4 ], 1 ); + > arr[ 1 ] + 4 + > arr[ 2 ] + 4 + + +{{alias}}.prototype.slice( [begin[, end]] ) + Copies array elements to a new array with the same underlying data type as + the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns `null`. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Int16Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > var arr2 = arr1.slice( 1 ); + > arr2.length + 2 + > arr2[ 0 ] + 1 + > arr2[ 1 ] + 2 + + +{{alias}}.prototype.some( predicate[, thisArg] ) + Tests whether at least one array element passes a test implemented by a + predicate function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, a array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether at least one array element passes. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > function predicate( v ) { return ( v > 1 ); }; + > arr.some( predicate ) + true + + +{{alias}}.prototype.sort( [compareFunction] ) + Sorts an array *in-place*. + + The comparison function is provided two array elements per invocation: `a` + and `b`. + + The comparison function return value determines the sort order as follows: + + - If the comparison function returns a value less than zero, then the method + sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`). + + - If the comparison function returns a value greater than zero, then the + method sorts `a` to an index higher than `b` (i.e., `b` should come *before* + `a`). + + - If the comparison function returns zero, then the relative order of `a` + and `b` should remain unchanged. + + This method mutates the array on which the method is invoked. + + Parameters + ---------- + compareFunction: Function (optional) + Function which specifies the sort order. The default sort order is + ascending order. + + Returns + ------- + out: Int16Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 0, 2, 1 ] ); + > arr.sort() + [ 0, 1, 1, 2, 2 ] + + +{{alias}}.prototype.subarray( [begin[, end]] ) + Creates a new typed array over the same underlying ArrayBuffer and with the + same underlying data type as the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns an empty typed array. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Int16Array + A new typed array view. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3, 4, 5 ] ); + > var arr2 = arr1.subarray( 2 ) + [ 3, 4, 5 ] + + +{{alias}}.prototype.toLocaleString( [locales[, options]] ) + Serializes an array as a locale-specific string. + + Parameters + ---------- + locales: string|Array (optional) + A BCP 47 language tag, or an array of such tags. + + options: Object (optional) + Options. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.toLocaleString() + '1,2,3' + + +{{alias}}.prototype.toString() + Serializes an array as a string. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.toString() + '1,2,3' + + +{{alias}}.prototype.values() + Returns an iterator for iterating over array elements. + + Returns + ------- + iter: Iterator + Iterator for iterating over array elements. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.values(); + > it.next().value + 1 + > it.next().value + 2 + > it.next().done + true See Also From 8cdf2e843c66b0e9cd1661d8ae65bd6c62878dd3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 18:40:45 -0700 Subject: [PATCH 0624/1062] Fix examples --- .../@stdlib/array/float32/docs/repl.txt | 6 +- .../@stdlib/array/float64/docs/repl.txt | 6 +- .../@stdlib/array/int16/docs/repl.txt | 6 +- .../@stdlib/array/int32/docs/repl.txt | 720 +++++++++++++++++- 4 files changed, 728 insertions(+), 10 deletions(-) diff --git a/lib/node_modules/@stdlib/array/float32/docs/repl.txt b/lib/node_modules/@stdlib/array/float32/docs/repl.txt index aaf56f29c526..bce337f64609 100644 --- a/lib/node_modules/@stdlib/array/float32/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/float32/docs/repl.txt @@ -239,7 +239,7 @@ Returns ------- out: Float32Array - Modified typed array. + Modified array. Examples -------- @@ -264,9 +264,9 @@ > var arr = new {{alias}}( [ 1.0, -1.0 ] ); > it = arr.entries(); > it.next().value - [ 1.0, 0 ] + [ 0, 1.0 ] > it.next().value - [ -1.0, 1 ] + [ 1, -1.0 ] > it.next().done true diff --git a/lib/node_modules/@stdlib/array/float64/docs/repl.txt b/lib/node_modules/@stdlib/array/float64/docs/repl.txt index 1c0eae15a90c..632e96fb6823 100644 --- a/lib/node_modules/@stdlib/array/float64/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/float64/docs/repl.txt @@ -239,7 +239,7 @@ Returns ------- out: Float64Array - Modified typed array. + Modified array. Examples -------- @@ -264,9 +264,9 @@ > var arr = new {{alias}}( [ 1.0, -1.0 ] ); > it = arr.entries(); > it.next().value - [ 1.0, 0 ] + [ 0, 1.0 ] > it.next().value - [ -1.0, 1 ] + [ 1, -1.0 ] > it.next().done true diff --git a/lib/node_modules/@stdlib/array/int16/docs/repl.txt b/lib/node_modules/@stdlib/array/int16/docs/repl.txt index c9cf1121db48..56f44dbc4a4b 100644 --- a/lib/node_modules/@stdlib/array/int16/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/int16/docs/repl.txt @@ -239,7 +239,7 @@ Returns ------- out: Int16Array - Modified typed array. + Modified array. Examples -------- @@ -264,9 +264,9 @@ > var arr = new {{alias}}( [ 1, 2 ] ); > it = arr.entries(); > it.next().value - [ 1, 0 ] + [ 0, 1 ] > it.next().value - [ 2, 1 ] + [ 1, 2 ] > it.next().done true diff --git a/lib/node_modules/@stdlib/array/int32/docs/repl.txt b/lib/node_modules/@stdlib/array/int32/docs/repl.txt index 4e6061c74fa1..7c78acaec67e 100644 --- a/lib/node_modules/@stdlib/array/int32/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/int32/docs/repl.txt @@ -221,7 +221,725 @@ 5 -TODO: add methods +{{alias}}.prototype.copyWithin( target, start[, end] ) + Copies a sequence of elements within the array starting at `start` and + ending at `end` (non-inclusive) to the position starting at `target`. + + Parameters + ---------- + target: integer + Target start index position. + + start: integer + Source start index position. + + end: integer (optional) + Source end index position. Default: out.length. + + Returns + ------- + out: Int32Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3, 4, 5 ] ); + > arr.copyWithin( 3, 0, 2 ); + > arr[ 3 ] + 1 + > arr[ 4 ] + 2 + + +{{alias}}.prototype.entries() + Returns an iterator for iterating over array key-value pairs. + + Returns + ------- + iter: Iterator + Iterator for iterating over array key-value pairs. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.entries(); + > it.next().value + [ 0, 1 ] + > it.next().value + [ 1, 2 ] + > it.next().done + true + + +{{alias}}.prototype.every( predicate[, thisArg] ) + Tests whether all array elements pass a test implemented by a predicate + function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, an array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether all array elements pass. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > function predicate( v ) { return ( v <= 1 ); }; + > arr.every( predicate ) + false + + +{{alias}}.prototype.fill( value[, start[, end]] ) + Fills an array from a start index to an end index (non-inclusive) with a + provided value. + + Parameters + ---------- + value: number + Fill value. + + start: integer (optional) + Start index. If less than zero, the start index is resolved relative to + the last array element. Default: 0. + + end: integer (optional) + End index (non-inclusive). If less than zero, the end index is resolved + relative to the last array element. Default: out.length. + + Returns + ------- + out: Int32Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > arr.fill( 3 ); + > arr[ 0 ] + 3 + > arr[ 1 ] + 3 + + +{{alias}}.prototype.filter( predicate[, thisArg] ) + Creates a new array which includes those elements for which a predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + If a predicate function does not return a truthy value for any array + element, the method returns `null`. + + Parameters + ---------- + predicate: Function + Predicate function which filters array elements. If a predicate function + returns a truthy value, an array element is included in the output + array; otherwise, an array element is not included in the output array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Int32Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 1 ); }; + > var arr2 = arr1.filter( predicate ); + > arr2.length + 2 + + +{{alias}}.prototype.find( predicate[, thisArg] ) + Returns the first array element for which a provided predicate function + returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `undefined`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + value: number|undefined + Array element. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 2 ); }; + > var v = arr.find( predicate ) + 3 + + +{{alias}}.prototype.findIndex( predicate[, thisArg] ) + Returns the index of the first array element for which a provided predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `-1`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 2 ); }; + > var idx = arr.findIndex( predicate ) + 2 + + +{{alias}}.prototype.forEach( fcn[, thisArg] ) + Invokes a callback for each array element. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + fcn: Function + Function to invoke for each array element. + + thisArg: Any (optional) + Callback execution context. + + Examples + -------- + > var arr = new {{alias}}( [ 3, 2, 1 ] ); + > var str = ' '; + > function fcn( v, i ) { str += i + ':' + v + ' '; }; + > arr.forEach( fcn ); + > str + ' 0:3 1:2 2:1 ' + + +{{alias}}.prototype.includes( searchElement[, fromIndex] ) + Returns a boolean indicating whether an array includes a search element. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + bool: boolean + Boolean indicating whether an array includes a search element. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > var bool = arr.includes( 4 ) + false + > bool = arr.includes( 3 ) + true + + +{{alias}}.prototype.indexOf( searchElement[, fromIndex] ) + Returns the index of the first array element strictly equal to a search + element. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > var idx = arr.indexOf( 4 ) + -1 + > idx = arr.indexOf( 3 ) + 2 + + +{{alias}}.prototype.join( [separator] ) + Serializes an array by joining all array elements as a string. + + Parameters + ---------- + separator: string (optional) + String delineating array elements. Default: ','. + + Returns + ------- + str: string + Array serialized as a string. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.join( '|' ) + '1|2|3' + + +{{alias}}.prototype.keys() + Returns an iterator for iterating over array keys. + + Returns + ------- + iter: Iterator + Iterator for iterating over array keys. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.keys(); + > it.next().value + 0 + > it.next().value + 1 + > it.next().done + true + + +{{alias}}.prototype.lastIndexOf( searchElement[, fromIndex] ) + Returns the index of the last array element strictly equal to a search + element. + + The method iterates from the last array element to the first array element. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: -1. + + Returns + ------- + idx: integer + array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 0, 2, 0, 1 ] ); + > var idx = arr.lastIndexOf( 3 ) + -1 + > idx = arr.lastIndexOf( 0 ) + 3 + + +{{alias}}.prototype.map( fcn[, thisArg] ) + Maps each array element to an element in a new typed array. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + Parameters + ---------- + fcn: Function + Function which maps array elements to elements in the new array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Int32Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( v ) { return v * 2; }; + > var arr2 = arr1.map( fcn ); + [ 2, 4, 6 ] + + +{{alias}}.prototype.reduce( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the first array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the first array element as the first argument and the second array + element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduce( fcn, 0 ) + 14 + + +{{alias}}.prototype.reduceRight( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result, iterating from right to left. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the last array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the last array element as the first argument and the second-to-last + array element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduceRight( fcn, 0 ) + 14 + + +{{alias}}.prototype.reverse() + Reverses an array *in-place*. + + This method mutates the array on which the method is invoked. + + Returns + ------- + out: Int32Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ) + [ 1, 2, 3 ] + > arr.reverse() + [ 3, 2, 1 ] + + +{{alias}}.prototype.set( arr[, offset] ) + Sets array elements. + + Parameters + ---------- + arr: ArrayLike + Source array containing array values to set. + + offset: integer (optional) + Array index at which to start writing values. Default: 0. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.set( [ 4, 4 ], 1 ); + > arr[ 1 ] + 4 + > arr[ 2 ] + 4 + + +{{alias}}.prototype.slice( [begin[, end]] ) + Copies array elements to a new array with the same underlying data type as + the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns `null`. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Int32Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > var arr2 = arr1.slice( 1 ); + > arr2.length + 2 + > arr2[ 0 ] + 1 + > arr2[ 1 ] + 2 + + +{{alias}}.prototype.some( predicate[, thisArg] ) + Tests whether at least one array element passes a test implemented by a + predicate function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, a array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether at least one array element passes. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > function predicate( v ) { return ( v > 1 ); }; + > arr.some( predicate ) + true + + +{{alias}}.prototype.sort( [compareFunction] ) + Sorts an array *in-place*. + + The comparison function is provided two array elements per invocation: `a` + and `b`. + + The comparison function return value determines the sort order as follows: + + - If the comparison function returns a value less than zero, then the method + sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`). + + - If the comparison function returns a value greater than zero, then the + method sorts `a` to an index higher than `b` (i.e., `b` should come *before* + `a`). + + - If the comparison function returns zero, then the relative order of `a` + and `b` should remain unchanged. + + This method mutates the array on which the method is invoked. + + Parameters + ---------- + compareFunction: Function (optional) + Function which specifies the sort order. The default sort order is + ascending order. + + Returns + ------- + out: Int32Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 0, 2, 1 ] ); + > arr.sort() + [ 0, 1, 1, 2, 2 ] + + +{{alias}}.prototype.subarray( [begin[, end]] ) + Creates a new typed array over the same underlying ArrayBuffer and with the + same underlying data type as the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns an empty typed array. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Int32Array + A new typed array view. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3, 4, 5 ] ); + > var arr2 = arr1.subarray( 2 ) + [ 3, 4, 5 ] + + +{{alias}}.prototype.toLocaleString( [locales[, options]] ) + Serializes an array as a locale-specific string. + + Parameters + ---------- + locales: string|Array (optional) + A BCP 47 language tag, or an array of such tags. + + options: Object (optional) + Options. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.toLocaleString() + '1,2,3' + + +{{alias}}.prototype.toString() + Serializes an array as a string. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.toString() + '1,2,3' + + +{{alias}}.prototype.values() + Returns an iterator for iterating over array elements. + + Returns + ------- + iter: Iterator + Iterator for iterating over array elements. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.values(); + > it.next().value + 1 + > it.next().value + 2 + > it.next().done + true See Also From 4f5b292be88bf83ff887cdee196a64e016b75491 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 18:42:40 -0700 Subject: [PATCH 0625/1062] Fix examples --- lib/node_modules/@stdlib/utils/named-typed-tuple/README.md | 4 ++-- .../@stdlib/utils/named-typed-tuple/docs/repl.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index 3f9538c6b279..cde9fbc6d908 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -734,10 +734,10 @@ var it = tuple.entries(); // Iterate over key-value pairs... var v = it.next().value; -// returns [ 1.0, 0, 'x' ] +// returns [ 0, 'x', 1.0 ] v = it.next().value; -// returns [ -1.0, 1, 'y' ] +// returns [ 1, 'y', -1.0 ] var bool = it.next().done; // returns true diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt index 42158b10436a..31e27284ed56 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/docs/repl.txt @@ -445,9 +445,9 @@ tuple.entries() > var p = factory( [ 1.0, -1.0 ] ); > it = p.entries(); > it.next().value - [ 1.0, 0, 'x' ] + [ 0, 'x', 1.0 ] > it.next().value - [ -1.0, 1, 'y' ] + [ 1, 'y', -1.0 ] > it.next().done true From 33faffd29cdbc5d41a24cbb8962810dbcffdf0d7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 18:46:42 -0700 Subject: [PATCH 0626/1062] Update REPL help --- .../@stdlib/array/int8/docs/repl.txt | 720 +++++++++++++++++- .../@stdlib/array/uint16/docs/repl.txt | 720 +++++++++++++++++- .../@stdlib/array/uint32/docs/repl.txt | 720 +++++++++++++++++- .../@stdlib/array/uint8/docs/repl.txt | 720 +++++++++++++++++- .../@stdlib/array/uint8c/docs/repl.txt | 720 +++++++++++++++++- 5 files changed, 3595 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/array/int8/docs/repl.txt b/lib/node_modules/@stdlib/array/int8/docs/repl.txt index a2dfa5fce091..81e4ef283c79 100644 --- a/lib/node_modules/@stdlib/array/int8/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/int8/docs/repl.txt @@ -221,7 +221,725 @@ 5 -TODO: add methods +{{alias}}.prototype.copyWithin( target, start[, end] ) + Copies a sequence of elements within the array starting at `start` and + ending at `end` (non-inclusive) to the position starting at `target`. + + Parameters + ---------- + target: integer + Target start index position. + + start: integer + Source start index position. + + end: integer (optional) + Source end index position. Default: out.length. + + Returns + ------- + out: Int8Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3, 4, 5 ] ); + > arr.copyWithin( 3, 0, 2 ); + > arr[ 3 ] + 1 + > arr[ 4 ] + 2 + + +{{alias}}.prototype.entries() + Returns an iterator for iterating over array key-value pairs. + + Returns + ------- + iter: Iterator + Iterator for iterating over array key-value pairs. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.entries(); + > it.next().value + [ 0, 1 ] + > it.next().value + [ 1, 2 ] + > it.next().done + true + + +{{alias}}.prototype.every( predicate[, thisArg] ) + Tests whether all array elements pass a test implemented by a predicate + function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, an array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether all array elements pass. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > function predicate( v ) { return ( v <= 1 ); }; + > arr.every( predicate ) + false + + +{{alias}}.prototype.fill( value[, start[, end]] ) + Fills an array from a start index to an end index (non-inclusive) with a + provided value. + + Parameters + ---------- + value: number + Fill value. + + start: integer (optional) + Start index. If less than zero, the start index is resolved relative to + the last array element. Default: 0. + + end: integer (optional) + End index (non-inclusive). If less than zero, the end index is resolved + relative to the last array element. Default: out.length. + + Returns + ------- + out: Int8Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > arr.fill( 3 ); + > arr[ 0 ] + 3 + > arr[ 1 ] + 3 + + +{{alias}}.prototype.filter( predicate[, thisArg] ) + Creates a new array which includes those elements for which a predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + If a predicate function does not return a truthy value for any array + element, the method returns `null`. + + Parameters + ---------- + predicate: Function + Predicate function which filters array elements. If a predicate function + returns a truthy value, an array element is included in the output + array; otherwise, an array element is not included in the output array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Int8Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 1 ); }; + > var arr2 = arr1.filter( predicate ); + > arr2.length + 2 + + +{{alias}}.prototype.find( predicate[, thisArg] ) + Returns the first array element for which a provided predicate function + returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `undefined`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + value: number|undefined + Array element. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 2 ); }; + > var v = arr.find( predicate ) + 3 + + +{{alias}}.prototype.findIndex( predicate[, thisArg] ) + Returns the index of the first array element for which a provided predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `-1`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 2 ); }; + > var idx = arr.findIndex( predicate ) + 2 + + +{{alias}}.prototype.forEach( fcn[, thisArg] ) + Invokes a callback for each array element. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + fcn: Function + Function to invoke for each array element. + + thisArg: Any (optional) + Callback execution context. + + Examples + -------- + > var arr = new {{alias}}( [ 3, 2, 1 ] ); + > var str = ' '; + > function fcn( v, i ) { str += i + ':' + v + ' '; }; + > arr.forEach( fcn ); + > str + ' 0:3 1:2 2:1 ' + + +{{alias}}.prototype.includes( searchElement[, fromIndex] ) + Returns a boolean indicating whether an array includes a search element. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + bool: boolean + Boolean indicating whether an array includes a search element. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > var bool = arr.includes( 4 ) + false + > bool = arr.includes( 3 ) + true + + +{{alias}}.prototype.indexOf( searchElement[, fromIndex] ) + Returns the index of the first array element strictly equal to a search + element. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > var idx = arr.indexOf( 4 ) + -1 + > idx = arr.indexOf( 3 ) + 2 + + +{{alias}}.prototype.join( [separator] ) + Serializes an array by joining all array elements as a string. + + Parameters + ---------- + separator: string (optional) + String delineating array elements. Default: ','. + + Returns + ------- + str: string + Array serialized as a string. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.join( '|' ) + '1|2|3' + + +{{alias}}.prototype.keys() + Returns an iterator for iterating over array keys. + + Returns + ------- + iter: Iterator + Iterator for iterating over array keys. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.keys(); + > it.next().value + 0 + > it.next().value + 1 + > it.next().done + true + + +{{alias}}.prototype.lastIndexOf( searchElement[, fromIndex] ) + Returns the index of the last array element strictly equal to a search + element. + + The method iterates from the last array element to the first array element. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: -1. + + Returns + ------- + idx: integer + array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 0, 2, 0, 1 ] ); + > var idx = arr.lastIndexOf( 3 ) + -1 + > idx = arr.lastIndexOf( 0 ) + 3 + + +{{alias}}.prototype.map( fcn[, thisArg] ) + Maps each array element to an element in a new typed array. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + Parameters + ---------- + fcn: Function + Function which maps array elements to elements in the new array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Int8Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( v ) { return v * 2; }; + > var arr2 = arr1.map( fcn ); + [ 2, 4, 6 ] + + +{{alias}}.prototype.reduce( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the first array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the first array element as the first argument and the second array + element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduce( fcn, 0 ) + 14 + + +{{alias}}.prototype.reduceRight( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result, iterating from right to left. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the last array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the last array element as the first argument and the second-to-last + array element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduceRight( fcn, 0 ) + 14 + + +{{alias}}.prototype.reverse() + Reverses an array *in-place*. + + This method mutates the array on which the method is invoked. + + Returns + ------- + out: Int8Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ) + [ 1, 2, 3 ] + > arr.reverse() + [ 3, 2, 1 ] + + +{{alias}}.prototype.set( arr[, offset] ) + Sets array elements. + + Parameters + ---------- + arr: ArrayLike + Source array containing array values to set. + + offset: integer (optional) + Array index at which to start writing values. Default: 0. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.set( [ 4, 4 ], 1 ); + > arr[ 1 ] + 4 + > arr[ 2 ] + 4 + + +{{alias}}.prototype.slice( [begin[, end]] ) + Copies array elements to a new array with the same underlying data type as + the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns `null`. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Int8Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > var arr2 = arr1.slice( 1 ); + > arr2.length + 2 + > arr2[ 0 ] + 1 + > arr2[ 1 ] + 2 + + +{{alias}}.prototype.some( predicate[, thisArg] ) + Tests whether at least one array element passes a test implemented by a + predicate function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, a array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether at least one array element passes. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > function predicate( v ) { return ( v > 1 ); }; + > arr.some( predicate ) + true + + +{{alias}}.prototype.sort( [compareFunction] ) + Sorts an array *in-place*. + + The comparison function is provided two array elements per invocation: `a` + and `b`. + + The comparison function return value determines the sort order as follows: + + - If the comparison function returns a value less than zero, then the method + sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`). + + - If the comparison function returns a value greater than zero, then the + method sorts `a` to an index higher than `b` (i.e., `b` should come *before* + `a`). + + - If the comparison function returns zero, then the relative order of `a` + and `b` should remain unchanged. + + This method mutates the array on which the method is invoked. + + Parameters + ---------- + compareFunction: Function (optional) + Function which specifies the sort order. The default sort order is + ascending order. + + Returns + ------- + out: Int8Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 0, 2, 1 ] ); + > arr.sort() + [ 0, 1, 1, 2, 2 ] + + +{{alias}}.prototype.subarray( [begin[, end]] ) + Creates a new typed array over the same underlying ArrayBuffer and with the + same underlying data type as the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns an empty typed array. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Int8Array + A new typed array view. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3, 4, 5 ] ); + > var arr2 = arr1.subarray( 2 ) + [ 3, 4, 5 ] + + +{{alias}}.prototype.toLocaleString( [locales[, options]] ) + Serializes an array as a locale-specific string. + + Parameters + ---------- + locales: string|Array (optional) + A BCP 47 language tag, or an array of such tags. + + options: Object (optional) + Options. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.toLocaleString() + '1,2,3' + + +{{alias}}.prototype.toString() + Serializes an array as a string. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.toString() + '1,2,3' + + +{{alias}}.prototype.values() + Returns an iterator for iterating over array elements. + + Returns + ------- + iter: Iterator + Iterator for iterating over array elements. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.values(); + > it.next().value + 1 + > it.next().value + 2 + > it.next().done + true See Also diff --git a/lib/node_modules/@stdlib/array/uint16/docs/repl.txt b/lib/node_modules/@stdlib/array/uint16/docs/repl.txt index 6d58f007e6bc..69fabdbf42c8 100644 --- a/lib/node_modules/@stdlib/array/uint16/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/uint16/docs/repl.txt @@ -221,7 +221,725 @@ 5 -TODO: add methods +{{alias}}.prototype.copyWithin( target, start[, end] ) + Copies a sequence of elements within the array starting at `start` and + ending at `end` (non-inclusive) to the position starting at `target`. + + Parameters + ---------- + target: integer + Target start index position. + + start: integer + Source start index position. + + end: integer (optional) + Source end index position. Default: out.length. + + Returns + ------- + out: Uint16Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3, 4, 5 ] ); + > arr.copyWithin( 3, 0, 2 ); + > arr[ 3 ] + 1 + > arr[ 4 ] + 2 + + +{{alias}}.prototype.entries() + Returns an iterator for iterating over array key-value pairs. + + Returns + ------- + iter: Iterator + Iterator for iterating over array key-value pairs. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.entries(); + > it.next().value + [ 0, 1 ] + > it.next().value + [ 1, 2 ] + > it.next().done + true + + +{{alias}}.prototype.every( predicate[, thisArg] ) + Tests whether all array elements pass a test implemented by a predicate + function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, an array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether all array elements pass. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > function predicate( v ) { return ( v <= 1 ); }; + > arr.every( predicate ) + false + + +{{alias}}.prototype.fill( value[, start[, end]] ) + Fills an array from a start index to an end index (non-inclusive) with a + provided value. + + Parameters + ---------- + value: number + Fill value. + + start: integer (optional) + Start index. If less than zero, the start index is resolved relative to + the last array element. Default: 0. + + end: integer (optional) + End index (non-inclusive). If less than zero, the end index is resolved + relative to the last array element. Default: out.length. + + Returns + ------- + out: Uint16Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > arr.fill( 3 ); + > arr[ 0 ] + 3 + > arr[ 1 ] + 3 + + +{{alias}}.prototype.filter( predicate[, thisArg] ) + Creates a new array which includes those elements for which a predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + If a predicate function does not return a truthy value for any array + element, the method returns `null`. + + Parameters + ---------- + predicate: Function + Predicate function which filters array elements. If a predicate function + returns a truthy value, an array element is included in the output + array; otherwise, an array element is not included in the output array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Uint16Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 1 ); }; + > var arr2 = arr1.filter( predicate ); + > arr2.length + 2 + + +{{alias}}.prototype.find( predicate[, thisArg] ) + Returns the first array element for which a provided predicate function + returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `undefined`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + value: number|undefined + Array element. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 2 ); }; + > var v = arr.find( predicate ) + 3 + + +{{alias}}.prototype.findIndex( predicate[, thisArg] ) + Returns the index of the first array element for which a provided predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `-1`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 2 ); }; + > var idx = arr.findIndex( predicate ) + 2 + + +{{alias}}.prototype.forEach( fcn[, thisArg] ) + Invokes a callback for each array element. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + fcn: Function + Function to invoke for each array element. + + thisArg: Any (optional) + Callback execution context. + + Examples + -------- + > var arr = new {{alias}}( [ 3, 2, 1 ] ); + > var str = ' '; + > function fcn( v, i ) { str += i + ':' + v + ' '; }; + > arr.forEach( fcn ); + > str + ' 0:3 1:2 2:1 ' + + +{{alias}}.prototype.includes( searchElement[, fromIndex] ) + Returns a boolean indicating whether an array includes a search element. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + bool: boolean + Boolean indicating whether an array includes a search element. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > var bool = arr.includes( 4 ) + false + > bool = arr.includes( 3 ) + true + + +{{alias}}.prototype.indexOf( searchElement[, fromIndex] ) + Returns the index of the first array element strictly equal to a search + element. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > var idx = arr.indexOf( 4 ) + -1 + > idx = arr.indexOf( 3 ) + 2 + + +{{alias}}.prototype.join( [separator] ) + Serializes an array by joining all array elements as a string. + + Parameters + ---------- + separator: string (optional) + String delineating array elements. Default: ','. + + Returns + ------- + str: string + Array serialized as a string. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.join( '|' ) + '1|2|3' + + +{{alias}}.prototype.keys() + Returns an iterator for iterating over array keys. + + Returns + ------- + iter: Iterator + Iterator for iterating over array keys. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.keys(); + > it.next().value + 0 + > it.next().value + 1 + > it.next().done + true + + +{{alias}}.prototype.lastIndexOf( searchElement[, fromIndex] ) + Returns the index of the last array element strictly equal to a search + element. + + The method iterates from the last array element to the first array element. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: -1. + + Returns + ------- + idx: integer + array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 0, 2, 0, 1 ] ); + > var idx = arr.lastIndexOf( 3 ) + -1 + > idx = arr.lastIndexOf( 0 ) + 3 + + +{{alias}}.prototype.map( fcn[, thisArg] ) + Maps each array element to an element in a new typed array. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + Parameters + ---------- + fcn: Function + Function which maps array elements to elements in the new array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Uint16Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( v ) { return v * 2; }; + > var arr2 = arr1.map( fcn ); + [ 2, 4, 6 ] + + +{{alias}}.prototype.reduce( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the first array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the first array element as the first argument and the second array + element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduce( fcn, 0 ) + 14 + + +{{alias}}.prototype.reduceRight( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result, iterating from right to left. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the last array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the last array element as the first argument and the second-to-last + array element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduceRight( fcn, 0 ) + 14 + + +{{alias}}.prototype.reverse() + Reverses an array *in-place*. + + This method mutates the array on which the method is invoked. + + Returns + ------- + out: Uint16Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ) + [ 1, 2, 3 ] + > arr.reverse() + [ 3, 2, 1 ] + + +{{alias}}.prototype.set( arr[, offset] ) + Sets array elements. + + Parameters + ---------- + arr: ArrayLike + Source array containing array values to set. + + offset: integer (optional) + Array index at which to start writing values. Default: 0. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.set( [ 4, 4 ], 1 ); + > arr[ 1 ] + 4 + > arr[ 2 ] + 4 + + +{{alias}}.prototype.slice( [begin[, end]] ) + Copies array elements to a new array with the same underlying data type as + the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns `null`. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Uint16Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > var arr2 = arr1.slice( 1 ); + > arr2.length + 2 + > arr2[ 0 ] + 1 + > arr2[ 1 ] + 2 + + +{{alias}}.prototype.some( predicate[, thisArg] ) + Tests whether at least one array element passes a test implemented by a + predicate function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, a array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether at least one array element passes. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > function predicate( v ) { return ( v > 1 ); }; + > arr.some( predicate ) + true + + +{{alias}}.prototype.sort( [compareFunction] ) + Sorts an array *in-place*. + + The comparison function is provided two array elements per invocation: `a` + and `b`. + + The comparison function return value determines the sort order as follows: + + - If the comparison function returns a value less than zero, then the method + sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`). + + - If the comparison function returns a value greater than zero, then the + method sorts `a` to an index higher than `b` (i.e., `b` should come *before* + `a`). + + - If the comparison function returns zero, then the relative order of `a` + and `b` should remain unchanged. + + This method mutates the array on which the method is invoked. + + Parameters + ---------- + compareFunction: Function (optional) + Function which specifies the sort order. The default sort order is + ascending order. + + Returns + ------- + out: Uint16Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 0, 2, 1 ] ); + > arr.sort() + [ 0, 1, 1, 2, 2 ] + + +{{alias}}.prototype.subarray( [begin[, end]] ) + Creates a new typed array over the same underlying ArrayBuffer and with the + same underlying data type as the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns an empty typed array. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Uint16Array + A new typed array view. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3, 4, 5 ] ); + > var arr2 = arr1.subarray( 2 ) + [ 3, 4, 5 ] + + +{{alias}}.prototype.toLocaleString( [locales[, options]] ) + Serializes an array as a locale-specific string. + + Parameters + ---------- + locales: string|Array (optional) + A BCP 47 language tag, or an array of such tags. + + options: Object (optional) + Options. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.toLocaleString() + '1,2,3' + + +{{alias}}.prototype.toString() + Serializes an array as a string. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.toString() + '1,2,3' + + +{{alias}}.prototype.values() + Returns an iterator for iterating over array elements. + + Returns + ------- + iter: Iterator + Iterator for iterating over array elements. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.values(); + > it.next().value + 1 + > it.next().value + 2 + > it.next().done + true See Also diff --git a/lib/node_modules/@stdlib/array/uint32/docs/repl.txt b/lib/node_modules/@stdlib/array/uint32/docs/repl.txt index 39dd016042ad..e374319336d0 100644 --- a/lib/node_modules/@stdlib/array/uint32/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/uint32/docs/repl.txt @@ -221,7 +221,725 @@ 5 -TODO: add methods +{{alias}}.prototype.copyWithin( target, start[, end] ) + Copies a sequence of elements within the array starting at `start` and + ending at `end` (non-inclusive) to the position starting at `target`. + + Parameters + ---------- + target: integer + Target start index position. + + start: integer + Source start index position. + + end: integer (optional) + Source end index position. Default: out.length. + + Returns + ------- + out: Uint32Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3, 4, 5 ] ); + > arr.copyWithin( 3, 0, 2 ); + > arr[ 3 ] + 1 + > arr[ 4 ] + 2 + + +{{alias}}.prototype.entries() + Returns an iterator for iterating over array key-value pairs. + + Returns + ------- + iter: Iterator + Iterator for iterating over array key-value pairs. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.entries(); + > it.next().value + [ 0, 1 ] + > it.next().value + [ 1, 2 ] + > it.next().done + true + + +{{alias}}.prototype.every( predicate[, thisArg] ) + Tests whether all array elements pass a test implemented by a predicate + function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, an array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether all array elements pass. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > function predicate( v ) { return ( v <= 1 ); }; + > arr.every( predicate ) + false + + +{{alias}}.prototype.fill( value[, start[, end]] ) + Fills an array from a start index to an end index (non-inclusive) with a + provided value. + + Parameters + ---------- + value: number + Fill value. + + start: integer (optional) + Start index. If less than zero, the start index is resolved relative to + the last array element. Default: 0. + + end: integer (optional) + End index (non-inclusive). If less than zero, the end index is resolved + relative to the last array element. Default: out.length. + + Returns + ------- + out: Uint32Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > arr.fill( 3 ); + > arr[ 0 ] + 3 + > arr[ 1 ] + 3 + + +{{alias}}.prototype.filter( predicate[, thisArg] ) + Creates a new array which includes those elements for which a predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + If a predicate function does not return a truthy value for any array + element, the method returns `null`. + + Parameters + ---------- + predicate: Function + Predicate function which filters array elements. If a predicate function + returns a truthy value, an array element is included in the output + array; otherwise, an array element is not included in the output array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Uint32Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 1 ); }; + > var arr2 = arr1.filter( predicate ); + > arr2.length + 2 + + +{{alias}}.prototype.find( predicate[, thisArg] ) + Returns the first array element for which a provided predicate function + returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `undefined`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + value: number|undefined + Array element. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 2 ); }; + > var v = arr.find( predicate ) + 3 + + +{{alias}}.prototype.findIndex( predicate[, thisArg] ) + Returns the index of the first array element for which a provided predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `-1`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 2 ); }; + > var idx = arr.findIndex( predicate ) + 2 + + +{{alias}}.prototype.forEach( fcn[, thisArg] ) + Invokes a callback for each array element. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + fcn: Function + Function to invoke for each array element. + + thisArg: Any (optional) + Callback execution context. + + Examples + -------- + > var arr = new {{alias}}( [ 3, 2, 1 ] ); + > var str = ' '; + > function fcn( v, i ) { str += i + ':' + v + ' '; }; + > arr.forEach( fcn ); + > str + ' 0:3 1:2 2:1 ' + + +{{alias}}.prototype.includes( searchElement[, fromIndex] ) + Returns a boolean indicating whether an array includes a search element. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + bool: boolean + Boolean indicating whether an array includes a search element. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > var bool = arr.includes( 4 ) + false + > bool = arr.includes( 3 ) + true + + +{{alias}}.prototype.indexOf( searchElement[, fromIndex] ) + Returns the index of the first array element strictly equal to a search + element. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > var idx = arr.indexOf( 4 ) + -1 + > idx = arr.indexOf( 3 ) + 2 + + +{{alias}}.prototype.join( [separator] ) + Serializes an array by joining all array elements as a string. + + Parameters + ---------- + separator: string (optional) + String delineating array elements. Default: ','. + + Returns + ------- + str: string + Array serialized as a string. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.join( '|' ) + '1|2|3' + + +{{alias}}.prototype.keys() + Returns an iterator for iterating over array keys. + + Returns + ------- + iter: Iterator + Iterator for iterating over array keys. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.keys(); + > it.next().value + 0 + > it.next().value + 1 + > it.next().done + true + + +{{alias}}.prototype.lastIndexOf( searchElement[, fromIndex] ) + Returns the index of the last array element strictly equal to a search + element. + + The method iterates from the last array element to the first array element. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: -1. + + Returns + ------- + idx: integer + array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 0, 2, 0, 1 ] ); + > var idx = arr.lastIndexOf( 3 ) + -1 + > idx = arr.lastIndexOf( 0 ) + 3 + + +{{alias}}.prototype.map( fcn[, thisArg] ) + Maps each array element to an element in a new typed array. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + Parameters + ---------- + fcn: Function + Function which maps array elements to elements in the new array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Uint32Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( v ) { return v * 2; }; + > var arr2 = arr1.map( fcn ); + [ 2, 4, 6 ] + + +{{alias}}.prototype.reduce( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the first array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the first array element as the first argument and the second array + element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduce( fcn, 0 ) + 14 + + +{{alias}}.prototype.reduceRight( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result, iterating from right to left. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the last array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the last array element as the first argument and the second-to-last + array element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduceRight( fcn, 0 ) + 14 + + +{{alias}}.prototype.reverse() + Reverses an array *in-place*. + + This method mutates the array on which the method is invoked. + + Returns + ------- + out: Uint32Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ) + [ 1, 2, 3 ] + > arr.reverse() + [ 3, 2, 1 ] + + +{{alias}}.prototype.set( arr[, offset] ) + Sets array elements. + + Parameters + ---------- + arr: ArrayLike + Source array containing array values to set. + + offset: integer (optional) + Array index at which to start writing values. Default: 0. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.set( [ 4, 4 ], 1 ); + > arr[ 1 ] + 4 + > arr[ 2 ] + 4 + + +{{alias}}.prototype.slice( [begin[, end]] ) + Copies array elements to a new array with the same underlying data type as + the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns `null`. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Uint32Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > var arr2 = arr1.slice( 1 ); + > arr2.length + 2 + > arr2[ 0 ] + 1 + > arr2[ 1 ] + 2 + + +{{alias}}.prototype.some( predicate[, thisArg] ) + Tests whether at least one array element passes a test implemented by a + predicate function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, a array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether at least one array element passes. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > function predicate( v ) { return ( v > 1 ); }; + > arr.some( predicate ) + true + + +{{alias}}.prototype.sort( [compareFunction] ) + Sorts an array *in-place*. + + The comparison function is provided two array elements per invocation: `a` + and `b`. + + The comparison function return value determines the sort order as follows: + + - If the comparison function returns a value less than zero, then the method + sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`). + + - If the comparison function returns a value greater than zero, then the + method sorts `a` to an index higher than `b` (i.e., `b` should come *before* + `a`). + + - If the comparison function returns zero, then the relative order of `a` + and `b` should remain unchanged. + + This method mutates the array on which the method is invoked. + + Parameters + ---------- + compareFunction: Function (optional) + Function which specifies the sort order. The default sort order is + ascending order. + + Returns + ------- + out: Uint32Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 0, 2, 1 ] ); + > arr.sort() + [ 0, 1, 1, 2, 2 ] + + +{{alias}}.prototype.subarray( [begin[, end]] ) + Creates a new typed array over the same underlying ArrayBuffer and with the + same underlying data type as the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns an empty typed array. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Uint32Array + A new typed array view. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3, 4, 5 ] ); + > var arr2 = arr1.subarray( 2 ) + [ 3, 4, 5 ] + + +{{alias}}.prototype.toLocaleString( [locales[, options]] ) + Serializes an array as a locale-specific string. + + Parameters + ---------- + locales: string|Array (optional) + A BCP 47 language tag, or an array of such tags. + + options: Object (optional) + Options. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.toLocaleString() + '1,2,3' + + +{{alias}}.prototype.toString() + Serializes an array as a string. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.toString() + '1,2,3' + + +{{alias}}.prototype.values() + Returns an iterator for iterating over array elements. + + Returns + ------- + iter: Iterator + Iterator for iterating over array elements. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.values(); + > it.next().value + 1 + > it.next().value + 2 + > it.next().done + true See Also diff --git a/lib/node_modules/@stdlib/array/uint8/docs/repl.txt b/lib/node_modules/@stdlib/array/uint8/docs/repl.txt index 0e5b0cbeb90c..4bf71b37ef3b 100644 --- a/lib/node_modules/@stdlib/array/uint8/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/uint8/docs/repl.txt @@ -221,7 +221,725 @@ 5 -TODO: add methods +{{alias}}.prototype.copyWithin( target, start[, end] ) + Copies a sequence of elements within the array starting at `start` and + ending at `end` (non-inclusive) to the position starting at `target`. + + Parameters + ---------- + target: integer + Target start index position. + + start: integer + Source start index position. + + end: integer (optional) + Source end index position. Default: out.length. + + Returns + ------- + out: Uint8Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3, 4, 5 ] ); + > arr.copyWithin( 3, 0, 2 ); + > arr[ 3 ] + 1 + > arr[ 4 ] + 2 + + +{{alias}}.prototype.entries() + Returns an iterator for iterating over array key-value pairs. + + Returns + ------- + iter: Iterator + Iterator for iterating over array key-value pairs. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.entries(); + > it.next().value + [ 0, 1 ] + > it.next().value + [ 1, 2 ] + > it.next().done + true + + +{{alias}}.prototype.every( predicate[, thisArg] ) + Tests whether all array elements pass a test implemented by a predicate + function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, an array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether all array elements pass. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > function predicate( v ) { return ( v <= 1 ); }; + > arr.every( predicate ) + false + + +{{alias}}.prototype.fill( value[, start[, end]] ) + Fills an array from a start index to an end index (non-inclusive) with a + provided value. + + Parameters + ---------- + value: number + Fill value. + + start: integer (optional) + Start index. If less than zero, the start index is resolved relative to + the last array element. Default: 0. + + end: integer (optional) + End index (non-inclusive). If less than zero, the end index is resolved + relative to the last array element. Default: out.length. + + Returns + ------- + out: Uint8Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > arr.fill( 3 ); + > arr[ 0 ] + 3 + > arr[ 1 ] + 3 + + +{{alias}}.prototype.filter( predicate[, thisArg] ) + Creates a new array which includes those elements for which a predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + If a predicate function does not return a truthy value for any array + element, the method returns `null`. + + Parameters + ---------- + predicate: Function + Predicate function which filters array elements. If a predicate function + returns a truthy value, an array element is included in the output + array; otherwise, an array element is not included in the output array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Uint8Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 1 ); }; + > var arr2 = arr1.filter( predicate ); + > arr2.length + 2 + + +{{alias}}.prototype.find( predicate[, thisArg] ) + Returns the first array element for which a provided predicate function + returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `undefined`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + value: number|undefined + Array element. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 2 ); }; + > var v = arr.find( predicate ) + 3 + + +{{alias}}.prototype.findIndex( predicate[, thisArg] ) + Returns the index of the first array element for which a provided predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `-1`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 2 ); }; + > var idx = arr.findIndex( predicate ) + 2 + + +{{alias}}.prototype.forEach( fcn[, thisArg] ) + Invokes a callback for each array element. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + fcn: Function + Function to invoke for each array element. + + thisArg: Any (optional) + Callback execution context. + + Examples + -------- + > var arr = new {{alias}}( [ 3, 2, 1 ] ); + > var str = ' '; + > function fcn( v, i ) { str += i + ':' + v + ' '; }; + > arr.forEach( fcn ); + > str + ' 0:3 1:2 2:1 ' + + +{{alias}}.prototype.includes( searchElement[, fromIndex] ) + Returns a boolean indicating whether an array includes a search element. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + bool: boolean + Boolean indicating whether an array includes a search element. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > var bool = arr.includes( 4 ) + false + > bool = arr.includes( 3 ) + true + + +{{alias}}.prototype.indexOf( searchElement[, fromIndex] ) + Returns the index of the first array element strictly equal to a search + element. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > var idx = arr.indexOf( 4 ) + -1 + > idx = arr.indexOf( 3 ) + 2 + + +{{alias}}.prototype.join( [separator] ) + Serializes an array by joining all array elements as a string. + + Parameters + ---------- + separator: string (optional) + String delineating array elements. Default: ','. + + Returns + ------- + str: string + Array serialized as a string. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.join( '|' ) + '1|2|3' + + +{{alias}}.prototype.keys() + Returns an iterator for iterating over array keys. + + Returns + ------- + iter: Iterator + Iterator for iterating over array keys. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.keys(); + > it.next().value + 0 + > it.next().value + 1 + > it.next().done + true + + +{{alias}}.prototype.lastIndexOf( searchElement[, fromIndex] ) + Returns the index of the last array element strictly equal to a search + element. + + The method iterates from the last array element to the first array element. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: -1. + + Returns + ------- + idx: integer + array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 0, 2, 0, 1 ] ); + > var idx = arr.lastIndexOf( 3 ) + -1 + > idx = arr.lastIndexOf( 0 ) + 3 + + +{{alias}}.prototype.map( fcn[, thisArg] ) + Maps each array element to an element in a new typed array. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + Parameters + ---------- + fcn: Function + Function which maps array elements to elements in the new array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Uint8Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( v ) { return v * 2; }; + > var arr2 = arr1.map( fcn ); + [ 2, 4, 6 ] + + +{{alias}}.prototype.reduce( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the first array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the first array element as the first argument and the second array + element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduce( fcn, 0 ) + 14 + + +{{alias}}.prototype.reduceRight( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result, iterating from right to left. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the last array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the last array element as the first argument and the second-to-last + array element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduceRight( fcn, 0 ) + 14 + + +{{alias}}.prototype.reverse() + Reverses an array *in-place*. + + This method mutates the array on which the method is invoked. + + Returns + ------- + out: Uint8Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ) + [ 1, 2, 3 ] + > arr.reverse() + [ 3, 2, 1 ] + + +{{alias}}.prototype.set( arr[, offset] ) + Sets array elements. + + Parameters + ---------- + arr: ArrayLike + Source array containing array values to set. + + offset: integer (optional) + Array index at which to start writing values. Default: 0. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.set( [ 4, 4 ], 1 ); + > arr[ 1 ] + 4 + > arr[ 2 ] + 4 + + +{{alias}}.prototype.slice( [begin[, end]] ) + Copies array elements to a new array with the same underlying data type as + the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns `null`. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Uint8Array + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > var arr2 = arr1.slice( 1 ); + > arr2.length + 2 + > arr2[ 0 ] + 1 + > arr2[ 1 ] + 2 + + +{{alias}}.prototype.some( predicate[, thisArg] ) + Tests whether at least one array element passes a test implemented by a + predicate function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, a array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether at least one array element passes. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > function predicate( v ) { return ( v > 1 ); }; + > arr.some( predicate ) + true + + +{{alias}}.prototype.sort( [compareFunction] ) + Sorts an array *in-place*. + + The comparison function is provided two array elements per invocation: `a` + and `b`. + + The comparison function return value determines the sort order as follows: + + - If the comparison function returns a value less than zero, then the method + sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`). + + - If the comparison function returns a value greater than zero, then the + method sorts `a` to an index higher than `b` (i.e., `b` should come *before* + `a`). + + - If the comparison function returns zero, then the relative order of `a` + and `b` should remain unchanged. + + This method mutates the array on which the method is invoked. + + Parameters + ---------- + compareFunction: Function (optional) + Function which specifies the sort order. The default sort order is + ascending order. + + Returns + ------- + out: Uint8Array + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 0, 2, 1 ] ); + > arr.sort() + [ 0, 1, 1, 2, 2 ] + + +{{alias}}.prototype.subarray( [begin[, end]] ) + Creates a new typed array over the same underlying ArrayBuffer and with the + same underlying data type as the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns an empty typed array. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Uint8Array + A new typed array view. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3, 4, 5 ] ); + > var arr2 = arr1.subarray( 2 ) + [ 3, 4, 5 ] + + +{{alias}}.prototype.toLocaleString( [locales[, options]] ) + Serializes an array as a locale-specific string. + + Parameters + ---------- + locales: string|Array (optional) + A BCP 47 language tag, or an array of such tags. + + options: Object (optional) + Options. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.toLocaleString() + '1,2,3' + + +{{alias}}.prototype.toString() + Serializes an array as a string. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.toString() + '1,2,3' + + +{{alias}}.prototype.values() + Returns an iterator for iterating over array elements. + + Returns + ------- + iter: Iterator + Iterator for iterating over array elements. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.values(); + > it.next().value + 1 + > it.next().value + 2 + > it.next().done + true See Also diff --git a/lib/node_modules/@stdlib/array/uint8c/docs/repl.txt b/lib/node_modules/@stdlib/array/uint8c/docs/repl.txt index 79f3ca57b34d..0c2385a535e9 100644 --- a/lib/node_modules/@stdlib/array/uint8c/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/uint8c/docs/repl.txt @@ -221,7 +221,725 @@ 5 -TODO: add methods +{{alias}}.prototype.copyWithin( target, start[, end] ) + Copies a sequence of elements within the array starting at `start` and + ending at `end` (non-inclusive) to the position starting at `target`. + + Parameters + ---------- + target: integer + Target start index position. + + start: integer + Source start index position. + + end: integer (optional) + Source end index position. Default: out.length. + + Returns + ------- + out: Uint8ClampedArray + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3, 4, 5 ] ); + > arr.copyWithin( 3, 0, 2 ); + > arr[ 3 ] + 1 + > arr[ 4 ] + 2 + + +{{alias}}.prototype.entries() + Returns an iterator for iterating over array key-value pairs. + + Returns + ------- + iter: Iterator + Iterator for iterating over array key-value pairs. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.entries(); + > it.next().value + [ 0, 1 ] + > it.next().value + [ 1, 2 ] + > it.next().done + true + + +{{alias}}.prototype.every( predicate[, thisArg] ) + Tests whether all array elements pass a test implemented by a predicate + function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, an array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether all array elements pass. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > function predicate( v ) { return ( v <= 1 ); }; + > arr.every( predicate ) + false + + +{{alias}}.prototype.fill( value[, start[, end]] ) + Fills an array from a start index to an end index (non-inclusive) with a + provided value. + + Parameters + ---------- + value: number + Fill value. + + start: integer (optional) + Start index. If less than zero, the start index is resolved relative to + the last array element. Default: 0. + + end: integer (optional) + End index (non-inclusive). If less than zero, the end index is resolved + relative to the last array element. Default: out.length. + + Returns + ------- + out: Uint8ClampedArray + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > arr.fill( 3 ); + > arr[ 0 ] + 3 + > arr[ 1 ] + 3 + + +{{alias}}.prototype.filter( predicate[, thisArg] ) + Creates a new array which includes those elements for which a predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + If a predicate function does not return a truthy value for any array + element, the method returns `null`. + + Parameters + ---------- + predicate: Function + Predicate function which filters array elements. If a predicate function + returns a truthy value, an array element is included in the output + array; otherwise, an array element is not included in the output array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Uint8ClampedArray + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 1 ); }; + > var arr2 = arr1.filter( predicate ); + > arr2.length + 2 + + +{{alias}}.prototype.find( predicate[, thisArg] ) + Returns the first array element for which a provided predicate function + returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `undefined`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + value: number|undefined + Array element. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 2 ); }; + > var v = arr.find( predicate ) + 3 + + +{{alias}}.prototype.findIndex( predicate[, thisArg] ) + Returns the index of the first array element for which a provided predicate + function returns a truthy value. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + If a predicate function never returns a truthy value, the method returns + `-1`. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function predicate( v ) { return ( v > 2 ); }; + > var idx = arr.findIndex( predicate ) + 2 + + +{{alias}}.prototype.forEach( fcn[, thisArg] ) + Invokes a callback for each array element. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + fcn: Function + Function to invoke for each array element. + + thisArg: Any (optional) + Callback execution context. + + Examples + -------- + > var arr = new {{alias}}( [ 3, 2, 1 ] ); + > var str = ' '; + > function fcn( v, i ) { str += i + ':' + v + ' '; }; + > arr.forEach( fcn ); + > str + ' 0:3 1:2 2:1 ' + + +{{alias}}.prototype.includes( searchElement[, fromIndex] ) + Returns a boolean indicating whether an array includes a search element. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + bool: boolean + Boolean indicating whether an array includes a search element. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > var bool = arr.includes( 4 ) + false + > bool = arr.includes( 3 ) + true + + +{{alias}}.prototype.indexOf( searchElement[, fromIndex] ) + Returns the index of the first array element strictly equal to a search + element. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: 0. + + Returns + ------- + idx: integer + Array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > var idx = arr.indexOf( 4 ) + -1 + > idx = arr.indexOf( 3 ) + 2 + + +{{alias}}.prototype.join( [separator] ) + Serializes an array by joining all array elements as a string. + + Parameters + ---------- + separator: string (optional) + String delineating array elements. Default: ','. + + Returns + ------- + str: string + Array serialized as a string. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.join( '|' ) + '1|2|3' + + +{{alias}}.prototype.keys() + Returns an iterator for iterating over array keys. + + Returns + ------- + iter: Iterator + Iterator for iterating over array keys. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.keys(); + > it.next().value + 0 + > it.next().value + 1 + > it.next().done + true + + +{{alias}}.prototype.lastIndexOf( searchElement[, fromIndex] ) + Returns the index of the last array element strictly equal to a search + element. + + The method iterates from the last array element to the first array element. + + If unable to locate a search element, the method returns `-1`. + + Parameters + ---------- + searchElement: number + Search element. + + fromIndex: integer (optional) + Array index from which to begin searching. If provided a negative value, + the method resolves the start index relative to the last array element. + Default: -1. + + Returns + ------- + idx: integer + array index. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 0, 2, 0, 1 ] ); + > var idx = arr.lastIndexOf( 3 ) + -1 + > idx = arr.lastIndexOf( 0 ) + 3 + + +{{alias}}.prototype.map( fcn[, thisArg] ) + Maps each array element to an element in a new typed array. + + A provided function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + The returned array has the same data type as the host array. + + Parameters + ---------- + fcn: Function + Function which maps array elements to elements in the new array. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + out: Uint8ClampedArray + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( v ) { return v * 2; }; + > var arr2 = arr1.map( fcn ); + [ 2, 4, 6 ] + + +{{alias}}.prototype.reduce( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the first array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the first array element as the first argument and the second array + element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduce( fcn, 0 ) + 14 + + +{{alias}}.prototype.reduceRight( fcn[, initialValue] ) + Applies a function against an accumulator and each element in an array and + returns the accumulated result, iterating from right to left. + + The provided function is provided the following arguments: + + - acc: accumulated result. + - value: current array element. + - index: index of the current array element. + - arr: array on which the method is invoked. + + If provided an initial value, the method invokes a provided function with + the initial value as the first argument and the last array element as the + second argument. + + If not provided an initial value, the method invokes a provided function + with the last array element as the first argument and the second-to-last + array element as the second argument. + + Parameters + ---------- + fcn: Function + Function to apply. + + initialValue: Any (optional) + Initial accumulation value. + + Returns + ------- + out: Any + Accumulated result. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > function fcn( acc, v ) { return acc + (v*v); }; + > var v = arr.reduceRight( fcn, 0 ) + 14 + + +{{alias}}.prototype.reverse() + Reverses an array *in-place*. + + This method mutates the array on which the method is invoked. + + Returns + ------- + out: Uint8ClampedArray + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ) + [ 1, 2, 3 ] + > arr.reverse() + [ 3, 2, 1 ] + + +{{alias}}.prototype.set( arr[, offset] ) + Sets array elements. + + Parameters + ---------- + arr: ArrayLike + Source array containing array values to set. + + offset: integer (optional) + Array index at which to start writing values. Default: 0. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.set( [ 4, 4 ], 1 ); + > arr[ 1 ] + 4 + > arr[ 2 ] + 4 + + +{{alias}}.prototype.slice( [begin[, end]] ) + Copies array elements to a new array with the same underlying data type as + the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns `null`. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Uint8ClampedArray + A typed array. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3 ] ); + > var arr2 = arr1.slice( 1 ); + > arr2.length + 2 + > arr2[ 0 ] + 1 + > arr2[ 1 ] + 2 + + +{{alias}}.prototype.some( predicate[, thisArg] ) + Tests whether at least one array element passes a test implemented by a + predicate function. + + A predicate function is provided the following arguments: + + - value: array element. + - index: array index. + - arr: array on which the method is invoked. + + Parameters + ---------- + predicate: Function + Predicate function which tests array elements. If a predicate function + returns a truthy value, a array element passes; otherwise, an array + element fails. + + thisArg: Any (optional) + Callback execution context. + + Returns + ------- + bool: boolean + Boolean indicating whether at least one array element passes. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > function predicate( v ) { return ( v > 1 ); }; + > arr.some( predicate ) + true + + +{{alias}}.prototype.sort( [compareFunction] ) + Sorts an array *in-place*. + + The comparison function is provided two array elements per invocation: `a` + and `b`. + + The comparison function return value determines the sort order as follows: + + - If the comparison function returns a value less than zero, then the method + sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`). + + - If the comparison function returns a value greater than zero, then the + method sorts `a` to an index higher than `b` (i.e., `b` should come *before* + `a`). + + - If the comparison function returns zero, then the relative order of `a` + and `b` should remain unchanged. + + This method mutates the array on which the method is invoked. + + Parameters + ---------- + compareFunction: Function (optional) + Function which specifies the sort order. The default sort order is + ascending order. + + Returns + ------- + out: Uint8ClampedArray + Modified array. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 0, 2, 1 ] ); + > arr.sort() + [ 0, 1, 1, 2, 2 ] + + +{{alias}}.prototype.subarray( [begin[, end]] ) + Creates a new typed array over the same underlying ArrayBuffer and with the + same underlying data type as the host array. + + If the method is unable to resolve indices to a non-empty array subsequence, + the method returns an empty typed array. + + Parameters + ---------- + begin: integer (optional) + Start element index (inclusive). If less than zero, the start index is + resolved relative to the last array element. Default: 0. + + end: integer (optional) + End element index (exclusive). If less than zero, the end index is + resolved relative to the last array element. Default: arr.length. + + Returns + ------- + out: Uint8ClampedArray + A new typed array view. + + Examples + -------- + > var arr1 = new {{alias}}( [ 1, 2, 3, 4, 5 ] ); + > var arr2 = arr1.subarray( 2 ) + [ 3, 4, 5 ] + + +{{alias}}.prototype.toLocaleString( [locales[, options]] ) + Serializes an array as a locale-specific string. + + Parameters + ---------- + locales: string|Array (optional) + A BCP 47 language tag, or an array of such tags. + + options: Object (optional) + Options. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.toLocaleString() + '1,2,3' + + +{{alias}}.prototype.toString() + Serializes an array as a string. + + Returns + ------- + str: string + A typed array string representation. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2, 3 ] ); + > arr.toString() + '1,2,3' + + +{{alias}}.prototype.values() + Returns an iterator for iterating over array elements. + + Returns + ------- + iter: Iterator + Iterator for iterating over array elements. + + Examples + -------- + > var arr = new {{alias}}( [ 1, 2 ] ); + > it = arr.values(); + > it.next().value + 1 + > it.next().value + 2 + > it.next().done + true See Also From 7c4cecaecab2998279f8a083ca341cb29705335b Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 18:47:11 -0700 Subject: [PATCH 0627/1062] Update REPL help --- lib/node_modules/@stdlib/repl/help/lib/db.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 85476aaefb8e..7d2d2dae9086 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -907,7 +907,7 @@ var db = { "FLOAT32_SMALLEST_NORMAL": "\nFLOAT32_SMALLEST_NORMAL\n Smallest positive normalized single-precision floating-point number.\n\n Examples\n --------\n > FLOAT32_SMALLEST_NORMAL\n 1.1754943508222875e-38\n\n See Also\n --------\n FLOAT32_SMALLEST_SUBNORMAL, FLOAT64_SMALLEST_NORMAL\n", "FLOAT32_SMALLEST_SUBNORMAL": "\nFLOAT32_SMALLEST_SUBNORMAL\n Smallest positive denormalized single-precision floating-point number.\n\n Examples\n --------\n > FLOAT32_SMALLEST_SUBNORMAL\n 1.401298464324817e-45\n\n See Also\n --------\n FLOAT32_SMALLEST_NORMAL, FLOAT64_SMALLEST_SUBNORMAL\n", "FLOAT32_SQRT_EPS": "\nFLOAT32_SQRT_EPS\n Square root of single-precision floating-point epsilon.\n\n Examples\n --------\n > FLOAT32_SQRT_EPS\n 0.0003452669770922512\n\n See Also\n --------\n FLOAT32_EPS, SQRT_EPS\n", - "Float32Array": "\nFloat32Array()\n A typed array constructor which returns a typed array representing an array\n of single-precision floating-point numbers in the platform byte order.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float32Array()\n \n\n\nFloat32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 )\n [ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 0.5, 0.5, 0.5 ] );\n > var arr2 = new Float32Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 0.5, 0.5, 0.5 ];\n > var arr2 = new Float32Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Float32Array( buf, 0, 4 )\n [ 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat32Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2.0; };\n > var arr = Float32Array.from( [ 1.0, -1.0 ], mapFcn )\n [ 2.0, -2.0 ]\n\n\nFloat32Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr = Float32Array.of( 2.0, -2.0 )\n [ 2.0, -2.0 ]\n\n\nFloat32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Float32Array.BYTES_PER_ELEMENT\n 4\n\n\nFloat32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Float32Array.name\n 'Float32Array'\n\n\nFloat32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.buffer\n \n\n\nFloat32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.byteLength\n 20\n\n\nFloat32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.byteOffset\n 0\n\n\nFloat32Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 4\n\n\nFloat32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.length\n 5\n\n\nFloat32Array.prototype.copyWithin( target, start[, end] )\n Copies a sequence of elements within the array starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: out.length.\n\n Returns\n -------\n out: Float32Array\n Modified typed array.\n\n Examples\n --------\n > var arr = new Float32Array( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] );\n > arr.copyWithin( 3, 0, 2 );\n > arr[ 3 ]\n 2.0\n > arr[ 4 ]\n -2.0\n\n\nFloat32Array.prototype.entries()\n Returns an iterator for iterating over array key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array key-value pairs.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > it = arr.entries();\n > it.next().value\n [ 1.0, 0 ]\n > it.next().value\n [ -1.0, 1 ]\n > it.next().done\n true\n\n\nFloat32Array.prototype.every( predicate[, thisArg] )\n Tests whether all array elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, an array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all array elements pass.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > arr.every( predicate )\n false\n\n\nFloat32Array.prototype.fill( value[, start[, end]] )\n Fills an array from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last array element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last array element. Default: out.length.\n\n Returns\n -------\n out: Float32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > arr.fill( 2.0 );\n > arr[ 0 ]\n 2.0\n > arr[ 1 ]\n 2.0\n\n\nFloat32Array.prototype.filter( predicate[, thisArg] )\n Creates a new array which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n If a predicate function does not return a truthy value for any array\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters array elements. If a predicate function\n returns a truthy value, an array element is included in the output\n array; otherwise, an array element is not included in the output array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > var arr2 = arr1.filter( predicate );\n > arr2.length\n 2\n\n\nFloat32Array.prototype.find( predicate[, thisArg] )\n Returns the first array element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Array element.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var v = arr.find( predicate )\n -1.0\n\n\nFloat32Array.prototype.findIndex( predicate[, thisArg] )\n Returns the index of the first array element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var idx = arr.findIndex( predicate )\n 2\n\n\nFloat32Array.prototype.forEach( fcn[, thisArg] )\n Invokes a callback for each array element.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each array element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > var str = ' ';\n > function fcn( v, i ) { str += i + ':' + v + ' '; };\n > arr.forEach( fcn );\n > str\n ' 0:1 1:0 2:-1 '\n\n\nFloat32Array.prototype.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether an array includes a search element.\n\n The method does not distinguish between signed and unsigned zero.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether an array includes a search element.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > var bool = arr.includes( 2.0 )\n false\n > bool = arr.includes( -1.0 )\n true\n\n\nFloat32Array.prototype.indexOf( searchElement[, fromIndex] )\n Returns the index of the first array element strictly equal to a search\n element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > var idx = arr.indexOf( 2.0 )\n -1\n > idx = arr.indexOf( -1.0 )\n 2\n\n\nFloat32Array.prototype.join( [separator] )\n Serializes an array by joining all array elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating array elements. Default: ','.\n\n Returns\n -------\n str: string\n Array serialized as a string.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > arr.join( '|' )\n '1|0|-1'\n\n\nFloat32Array.prototype.keys()\n Returns an iterator for iterating over array keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array keys.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > it = arr.keys();\n > it.next().value\n 0\n > it.next().value\n 1\n > it.next().done\n true\n\n\nFloat32Array.prototype.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last array element strictly equal to a search\n element.\n\n The method iterates from the last array element to the first array element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n array index.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n > var idx = arr.lastIndexOf( 2.0 )\n -1\n > idx = arr.lastIndexOf( 0.0 )\n 3\n\n\nFloat32Array.prototype.map( fcn[, thisArg] )\n Maps each array element to an element in a new typed array.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n Parameters\n ----------\n fcn: Function\n Function which maps array elements to elements in the new array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( v ) { return v * 2.0; };\n > var arr2 = arr1.map( fcn );\n [ 2.0, 0.0, -2.0 ]\n\n\nFloat32Array.prototype.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first array element as the first argument and the second array\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduce( fcn, 0.0 )\n 2.0\n\n\nFloat32Array.prototype.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last array element as the first argument and the second-to-last\n array element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduceRight( fcn, 0.0 )\n 2.0\n\n\nFloat32Array.prototype.reverse()\n Reverses an array *in-place*.\n\n This method mutates the array on which the method is invoked.\n\n Returns\n -------\n out: Float32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] )\n [ 1.0, 0.0, -1.0 ]\n > arr.reverse()\n [ -1.0, 0.0, 1.0 ]\n\n\nFloat32Array.prototype.set( arr[, offset] )\n Sets array elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing array values to set.\n\n offset: integer (optional)\n Array index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > arr.set( [ -2.0, 2.0 ], 1 );\n > arr[ 1 ]\n -2.0\n > arr[ 2 ]\n 2.0\n\n\nFloat32Array.prototype.slice( [begin[, end]] )\n Copies array elements to a new array with the same underlying data type as\n the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > var arr2 = arr1.slice( 1 );\n > arr2.length\n 2\n > arr2[ 0 ]\n 0.0\n > arr2[ 1 ]\n -1.0\n\n\nFloat32Array.prototype.some( predicate[, thisArg] )\n Tests whether at least one array element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, a array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one array element passes.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > arr.some( predicate )\n true\n\n\nFloat32Array.prototype.sort( [compareFunction] )\n Sorts an array *in-place*.\n\n The comparison function is provided two array elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the array on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n out: Float32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > arr.sort()\n [ -2.0, -1.0, 0.0, 1.0, 2.0 ]\n\n\nFloat32Array.prototype.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Float32Array\n A new typed array view.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > var arr2 = arr1.subarray( 2 )\n [ 0.0, 2.0, -2.0 ]\n\n\nFloat32Array.prototype.toLocaleString( [locales[, options]] )\n Serializes an array as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0, 0.0 ] );\n > arr.toLocaleString()\n '1,-1,0'\n\n\nFloat32Array.prototype.toString()\n Serializes an array as a string.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0, 0.0 ] );\n > arr.toString()\n '1,-1,0'\n\n\nFloat32Array.prototype.values()\n Returns an iterator for iterating over array elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array elements.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > it = arr.values();\n > it.next().value\n 1.0\n > it.next().value\n -1.0\n > it.next().done\n true\n\n\n See Also\n --------\n ArrayBuffer, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Float32Array": "\nFloat32Array()\n A typed array constructor which returns a typed array representing an array\n of single-precision floating-point numbers in the platform byte order.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float32Array()\n \n\n\nFloat32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 )\n [ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 0.5, 0.5, 0.5 ] );\n > var arr2 = new Float32Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 0.5, 0.5, 0.5 ];\n > var arr2 = new Float32Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Float32Array( buf, 0, 4 )\n [ 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat32Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2.0; };\n > var arr = Float32Array.from( [ 1.0, -1.0 ], mapFcn )\n [ 2.0, -2.0 ]\n\n\nFloat32Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr = Float32Array.of( 2.0, -2.0 )\n [ 2.0, -2.0 ]\n\n\nFloat32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Float32Array.BYTES_PER_ELEMENT\n 4\n\n\nFloat32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Float32Array.name\n 'Float32Array'\n\n\nFloat32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.buffer\n \n\n\nFloat32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.byteLength\n 20\n\n\nFloat32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.byteOffset\n 0\n\n\nFloat32Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 4\n\n\nFloat32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Float32Array( 5 );\n > arr.length\n 5\n\n\nFloat32Array.prototype.copyWithin( target, start[, end] )\n Copies a sequence of elements within the array starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: out.length.\n\n Returns\n -------\n out: Float32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float32Array( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] );\n > arr.copyWithin( 3, 0, 2 );\n > arr[ 3 ]\n 2.0\n > arr[ 4 ]\n -2.0\n\n\nFloat32Array.prototype.entries()\n Returns an iterator for iterating over array key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array key-value pairs.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > it = arr.entries();\n > it.next().value\n [ 0, 1.0 ]\n > it.next().value\n [ 1, -1.0 ]\n > it.next().done\n true\n\n\nFloat32Array.prototype.every( predicate[, thisArg] )\n Tests whether all array elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, an array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all array elements pass.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > arr.every( predicate )\n false\n\n\nFloat32Array.prototype.fill( value[, start[, end]] )\n Fills an array from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last array element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last array element. Default: out.length.\n\n Returns\n -------\n out: Float32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > arr.fill( 2.0 );\n > arr[ 0 ]\n 2.0\n > arr[ 1 ]\n 2.0\n\n\nFloat32Array.prototype.filter( predicate[, thisArg] )\n Creates a new array which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n If a predicate function does not return a truthy value for any array\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters array elements. If a predicate function\n returns a truthy value, an array element is included in the output\n array; otherwise, an array element is not included in the output array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > var arr2 = arr1.filter( predicate );\n > arr2.length\n 2\n\n\nFloat32Array.prototype.find( predicate[, thisArg] )\n Returns the first array element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Array element.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var v = arr.find( predicate )\n -1.0\n\n\nFloat32Array.prototype.findIndex( predicate[, thisArg] )\n Returns the index of the first array element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var idx = arr.findIndex( predicate )\n 2\n\n\nFloat32Array.prototype.forEach( fcn[, thisArg] )\n Invokes a callback for each array element.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each array element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > var str = ' ';\n > function fcn( v, i ) { str += i + ':' + v + ' '; };\n > arr.forEach( fcn );\n > str\n ' 0:1 1:0 2:-1 '\n\n\nFloat32Array.prototype.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether an array includes a search element.\n\n The method does not distinguish between signed and unsigned zero.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether an array includes a search element.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > var bool = arr.includes( 2.0 )\n false\n > bool = arr.includes( -1.0 )\n true\n\n\nFloat32Array.prototype.indexOf( searchElement[, fromIndex] )\n Returns the index of the first array element strictly equal to a search\n element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > var idx = arr.indexOf( 2.0 )\n -1\n > idx = arr.indexOf( -1.0 )\n 2\n\n\nFloat32Array.prototype.join( [separator] )\n Serializes an array by joining all array elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating array elements. Default: ','.\n\n Returns\n -------\n str: string\n Array serialized as a string.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > arr.join( '|' )\n '1|0|-1'\n\n\nFloat32Array.prototype.keys()\n Returns an iterator for iterating over array keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array keys.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > it = arr.keys();\n > it.next().value\n 0\n > it.next().value\n 1\n > it.next().done\n true\n\n\nFloat32Array.prototype.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last array element strictly equal to a search\n element.\n\n The method iterates from the last array element to the first array element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n array index.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n > var idx = arr.lastIndexOf( 2.0 )\n -1\n > idx = arr.lastIndexOf( 0.0 )\n 3\n\n\nFloat32Array.prototype.map( fcn[, thisArg] )\n Maps each array element to an element in a new typed array.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n Parameters\n ----------\n fcn: Function\n Function which maps array elements to elements in the new array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( v ) { return v * 2.0; };\n > var arr2 = arr1.map( fcn );\n [ 2.0, 0.0, -2.0 ]\n\n\nFloat32Array.prototype.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first array element as the first argument and the second array\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduce( fcn, 0.0 )\n 2.0\n\n\nFloat32Array.prototype.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last array element as the first argument and the second-to-last\n array element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduceRight( fcn, 0.0 )\n 2.0\n\n\nFloat32Array.prototype.reverse()\n Reverses an array *in-place*.\n\n This method mutates the array on which the method is invoked.\n\n Returns\n -------\n out: Float32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] )\n [ 1.0, 0.0, -1.0 ]\n > arr.reverse()\n [ -1.0, 0.0, 1.0 ]\n\n\nFloat32Array.prototype.set( arr[, offset] )\n Sets array elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing array values to set.\n\n offset: integer (optional)\n Array index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > arr.set( [ -2.0, 2.0 ], 1 );\n > arr[ 1 ]\n -2.0\n > arr[ 2 ]\n 2.0\n\n\nFloat32Array.prototype.slice( [begin[, end]] )\n Copies array elements to a new array with the same underlying data type as\n the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Float32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 1.0, 0.0, -1.0 ] );\n > var arr2 = arr1.slice( 1 );\n > arr2.length\n 2\n > arr2[ 0 ]\n 0.0\n > arr2[ 1 ]\n -1.0\n\n\nFloat32Array.prototype.some( predicate[, thisArg] )\n Tests whether at least one array element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, a array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one array element passes.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > arr.some( predicate )\n true\n\n\nFloat32Array.prototype.sort( [compareFunction] )\n Sorts an array *in-place*.\n\n The comparison function is provided two array elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the array on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n out: Float32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > arr.sort()\n [ -2.0, -1.0, 0.0, 1.0, 2.0 ]\n\n\nFloat32Array.prototype.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Float32Array\n A new typed array view.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > var arr2 = arr1.subarray( 2 )\n [ 0.0, 2.0, -2.0 ]\n\n\nFloat32Array.prototype.toLocaleString( [locales[, options]] )\n Serializes an array as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0, 0.0 ] );\n > arr.toLocaleString()\n '1,-1,0'\n\n\nFloat32Array.prototype.toString()\n Serializes an array as a string.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0, 0.0 ] );\n > arr.toString()\n '1,-1,0'\n\n\nFloat32Array.prototype.values()\n Returns an iterator for iterating over array elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array elements.\n\n Examples\n --------\n > var arr = new Float32Array( [ 1.0, -1.0 ] );\n > it = arr.values();\n > it.next().value\n 1.0\n > it.next().value\n -1.0\n > it.next().done\n true\n\n\n See Also\n --------\n ArrayBuffer, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "FLOAT64_EXPONENT_BIAS": "\nFLOAT64_EXPONENT_BIAS\n The bias of a double-precision floating-point number's exponent.\n\n Examples\n --------\n > FLOAT64_EXPONENT_BIAS\n 1023\n\n See Also\n --------\n FLOAT16_EXPONENT_BIAS, FLOAT32_EXPONENT_BIAS\n", "FLOAT64_HIGH_WORD_EXPONENT_MASK": "\nFLOAT64_HIGH_WORD_EXPONENT_MASK\n High word mask for the exponent of a double-precision floating-point number.\n\n Examples\n --------\n > FLOAT64_HIGH_WORD_EXPONENT_MASK\n 2146435072\n > base.toBinaryStringUint32( FLOAT64_HIGH_WORD_EXPONENT_MASK )\n '01111111111100000000000000000000'\n\n See Also\n --------\n FLOAT64_HIGH_WORD_SIGNIFICAND_MASK\n", "FLOAT64_HIGH_WORD_SIGNIFICAND_MASK": "\nFLOAT64_HIGH_WORD_SIGNIFICAND_MASK\n High word mask for the significand of a double-precision floating-point\n number.\n\n Examples\n --------\n > FLOAT64_HIGH_WORD_SIGNIFICAND_MASK\n 1048575\n > base.toBinaryStringUint32( FLOAT64_HIGH_WORD_SIGNIFICAND_MASK )\n '00000000000011111111111111111111'\n\n See Also\n --------\n FLOAT64_HIGH_WORD_EXPONENT_MASK\n", @@ -932,7 +932,7 @@ var db = { "FLOAT64_PRECISION": "\nFLOAT64_PRECISION\n Effective number of bits in the significand of a double-precision floating-\n point number.\n\n The effective number of bits is `52` significand bits plus `1` hidden bit.\n\n Examples\n --------\n > FLOAT64_PRECISION\n 53\n\n See Also\n --------\n FLOAT16_PRECISION, FLOAT32_PRECISION\n", "FLOAT64_SMALLEST_NORMAL": "\nFLOAT64_SMALLEST_NORMAL\n Smallest positive normalized double-precision floating-point number.\n\n Examples\n --------\n > FLOAT64_SMALLEST_NORMAL\n 2.2250738585072014e-308\n\n See Also\n --------\n FLOAT32_SMALLEST_NORMAL, FLOAT64_SMALLEST_SUBNORMAL\n", "FLOAT64_SMALLEST_SUBNORMAL": "\nFLOAT64_SMALLEST_SUBNORMAL\n Smallest positive denormalized double-precision floating-point number.\n\n Examples\n --------\n > FLOAT64_SMALLEST_SUBNORMAL\n 4.940656458412465e-324\n\n See Also\n --------\n FLOAT32_SMALLEST_SUBNORMAL, FLOAT64_SMALLEST_NORMAL\n", - "Float64Array": "\nFloat64Array()\n A typed array constructor which returns a typed array representing an array\n of double-precision floating-point numbers in the platform byte order.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float64Array()\n \n\n\nFloat64Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 )\n [ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat64Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 0.5, 0.5, 0.5 ] );\n > var arr2 = new Float64Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat64Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 0.5, 0.5, 0.5 ];\n > var arr2 = new Float64Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat64Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 32 );\n > var arr = new Float64Array( buf, 0, 4 )\n [ 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat64Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2.0; };\n > var arr = Float64Array.from( [ 1.0, -1.0 ], mapFcn )\n [ 2.0, -2.0 ]\n\n\nFloat64Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr = Float64Array.of( 2.0, -2.0 )\n [ 2.0, -2.0 ]\n\n\nFloat64Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Float64Array.BYTES_PER_ELEMENT\n 8\n\n\nFloat64Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Float64Array.name\n 'Float64Array'\n\n\nFloat64Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.buffer\n \n\n\nFloat64Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.byteLength\n 40\n\n\nFloat64Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.byteOffset\n 0\n\n\nFloat64Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 8\n\n\nFloat64Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.length\n 5\n\n\nFloat64Array.prototype.copyWithin( target, start[, end] )\n Copies a sequence of elements within the array starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: out.length.\n\n Returns\n -------\n out: Float64Array\n Modified typed array.\n\n Examples\n --------\n > var arr = new Float64Array( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] );\n > arr.copyWithin( 3, 0, 2 );\n > arr[ 3 ]\n 2.0\n > arr[ 4 ]\n -2.0\n\n\nFloat64Array.prototype.entries()\n Returns an iterator for iterating over array key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array key-value pairs.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > it = arr.entries();\n > it.next().value\n [ 1.0, 0 ]\n > it.next().value\n [ -1.0, 1 ]\n > it.next().done\n true\n\n\nFloat64Array.prototype.every( predicate[, thisArg] )\n Tests whether all array elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, an array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all array elements pass.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > arr.every( predicate )\n false\n\n\nFloat64Array.prototype.fill( value[, start[, end]] )\n Fills an array from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last array element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last array element. Default: out.length.\n\n Returns\n -------\n out: Float64Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > arr.fill( 2.0 );\n > arr[ 0 ]\n 2.0\n > arr[ 1 ]\n 2.0\n\n\nFloat64Array.prototype.filter( predicate[, thisArg] )\n Creates a new array which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n If a predicate function does not return a truthy value for any array\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters array elements. If a predicate function\n returns a truthy value, an array element is included in the output\n array; otherwise, an array element is not included in the output array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > var arr2 = arr1.filter( predicate );\n > arr2.length\n 2\n\n\nFloat64Array.prototype.find( predicate[, thisArg] )\n Returns the first array element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Array element.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var v = arr.find( predicate )\n -1.0\n\n\nFloat64Array.prototype.findIndex( predicate[, thisArg] )\n Returns the index of the first array element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var idx = arr.findIndex( predicate )\n 2\n\n\nFloat64Array.prototype.forEach( fcn[, thisArg] )\n Invokes a callback for each array element.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each array element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > var str = ' ';\n > function fcn( v, i ) { str += i + ':' + v + ' '; };\n > arr.forEach( fcn );\n > str\n ' 0:1 1:0 2:-1 '\n\n\nFloat64Array.prototype.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether an array includes a search element.\n\n The method does not distinguish between signed and unsigned zero.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether an array includes a search element.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > var bool = arr.includes( 2.0 )\n false\n > bool = arr.includes( -1.0 )\n true\n\n\nFloat64Array.prototype.indexOf( searchElement[, fromIndex] )\n Returns the index of the first array element strictly equal to a search\n element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > var idx = arr.indexOf( 2.0 )\n -1\n > idx = arr.indexOf( -1.0 )\n 2\n\n\nFloat64Array.prototype.join( [separator] )\n Serializes an array by joining all array elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating array elements. Default: ','.\n\n Returns\n -------\n str: string\n Array serialized as a string.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > arr.join( '|' )\n '1|0|-1'\n\n\nFloat64Array.prototype.keys()\n Returns an iterator for iterating over array keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array keys.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > it = arr.keys();\n > it.next().value\n 0\n > it.next().value\n 1\n > it.next().done\n true\n\n\nFloat64Array.prototype.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last array element strictly equal to a search\n element.\n\n The method iterates from the last array element to the first array element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n array index.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n > var idx = arr.lastIndexOf( 2.0 )\n -1\n > idx = arr.lastIndexOf( 0.0 )\n 3\n\n\nFloat64Array.prototype.map( fcn[, thisArg] )\n Maps each array element to an element in a new typed array.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n Parameters\n ----------\n fcn: Function\n Function which maps array elements to elements in the new array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( v ) { return v * 2.0; };\n > var arr2 = arr1.map( fcn );\n [ 2.0, 0.0, -2.0 ]\n\n\nFloat64Array.prototype.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first array element as the first argument and the second array\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduce( fcn, 0.0 )\n 2.0\n\n\nFloat64Array.prototype.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last array element as the first argument and the second-to-last\n array element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduceRight( fcn, 0.0 )\n 2.0\n\n\nFloat64Array.prototype.reverse()\n Reverses an array *in-place*.\n\n This method mutates the array on which the method is invoked.\n\n Returns\n -------\n out: Float64Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] )\n [ 1.0, 0.0, -1.0 ]\n > arr.reverse()\n [ -1.0, 0.0, 1.0 ]\n\n\nFloat64Array.prototype.set( arr[, offset] )\n Sets array elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing array values to set.\n\n offset: integer (optional)\n Array index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > arr.set( [ -2.0, 2.0 ], 1 );\n > arr[ 1 ]\n -2.0\n > arr[ 2 ]\n 2.0\n\n\nFloat64Array.prototype.slice( [begin[, end]] )\n Copies array elements to a new array with the same underlying data type as\n the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > var arr2 = arr1.slice( 1 );\n > arr2.length\n 2\n > arr2[ 0 ]\n 0.0\n > arr2[ 1 ]\n -1.0\n\n\nFloat64Array.prototype.some( predicate[, thisArg] )\n Tests whether at least one array element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, a array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one array element passes.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > arr.some( predicate )\n true\n\n\nFloat64Array.prototype.sort( [compareFunction] )\n Sorts an array *in-place*.\n\n The comparison function is provided two array elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the array on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n out: Float64Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > arr.sort()\n [ -2.0, -1.0, 0.0, 1.0, 2.0 ]\n\n\nFloat64Array.prototype.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Float64Array\n A new typed array view.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > var arr2 = arr1.subarray( 2 )\n [ 0.0, 2.0, -2.0 ]\n\n\nFloat64Array.prototype.toLocaleString( [locales[, options]] )\n Serializes an array as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0, 0.0 ] );\n > arr.toLocaleString()\n '1,-1,0'\n\n\nFloat64Array.prototype.toString()\n Serializes an array as a string.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0, 0.0 ] );\n > arr.toString()\n '1,-1,0'\n\n\nFloat64Array.prototype.values()\n Returns an iterator for iterating over array elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array elements.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > it = arr.values();\n > it.next().value\n 1.0\n > it.next().value\n -1.0\n > it.next().done\n true\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Float64Array": "\nFloat64Array()\n A typed array constructor which returns a typed array representing an array\n of double-precision floating-point numbers in the platform byte order.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float64Array()\n \n\n\nFloat64Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 )\n [ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat64Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float32Array( [ 0.5, 0.5, 0.5 ] );\n > var arr2 = new Float64Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat64Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 0.5, 0.5, 0.5 ];\n > var arr2 = new Float64Array( arr1 )\n [ 0.5, 0.5, 0.5 ]\n\n\nFloat64Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 32 );\n > var arr = new Float64Array( buf, 0, 4 )\n [ 0.0, 0.0, 0.0, 0.0 ]\n\n\nFloat64Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2.0; };\n > var arr = Float64Array.from( [ 1.0, -1.0 ], mapFcn )\n [ 2.0, -2.0 ]\n\n\nFloat64Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr = Float64Array.of( 2.0, -2.0 )\n [ 2.0, -2.0 ]\n\n\nFloat64Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Float64Array.BYTES_PER_ELEMENT\n 8\n\n\nFloat64Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Float64Array.name\n 'Float64Array'\n\n\nFloat64Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.buffer\n \n\n\nFloat64Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.byteLength\n 40\n\n\nFloat64Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.byteOffset\n 0\n\n\nFloat64Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 8\n\n\nFloat64Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Float64Array( 5 );\n > arr.length\n 5\n\n\nFloat64Array.prototype.copyWithin( target, start[, end] )\n Copies a sequence of elements within the array starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: out.length.\n\n Returns\n -------\n out: Float64Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float64Array( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] );\n > arr.copyWithin( 3, 0, 2 );\n > arr[ 3 ]\n 2.0\n > arr[ 4 ]\n -2.0\n\n\nFloat64Array.prototype.entries()\n Returns an iterator for iterating over array key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array key-value pairs.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > it = arr.entries();\n > it.next().value\n [ 0, 1.0 ]\n > it.next().value\n [ 1, -1.0 ]\n > it.next().done\n true\n\n\nFloat64Array.prototype.every( predicate[, thisArg] )\n Tests whether all array elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, an array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all array elements pass.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > arr.every( predicate )\n false\n\n\nFloat64Array.prototype.fill( value[, start[, end]] )\n Fills an array from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last array element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last array element. Default: out.length.\n\n Returns\n -------\n out: Float64Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > arr.fill( 2.0 );\n > arr[ 0 ]\n 2.0\n > arr[ 1 ]\n 2.0\n\n\nFloat64Array.prototype.filter( predicate[, thisArg] )\n Creates a new array which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n If a predicate function does not return a truthy value for any array\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters array elements. If a predicate function\n returns a truthy value, an array element is included in the output\n array; otherwise, an array element is not included in the output array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > var arr2 = arr1.filter( predicate );\n > arr2.length\n 2\n\n\nFloat64Array.prototype.find( predicate[, thisArg] )\n Returns the first array element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Array element.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var v = arr.find( predicate )\n -1.0\n\n\nFloat64Array.prototype.findIndex( predicate[, thisArg] )\n Returns the index of the first array element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var idx = arr.findIndex( predicate )\n 2\n\n\nFloat64Array.prototype.forEach( fcn[, thisArg] )\n Invokes a callback for each array element.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each array element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > var str = ' ';\n > function fcn( v, i ) { str += i + ':' + v + ' '; };\n > arr.forEach( fcn );\n > str\n ' 0:1 1:0 2:-1 '\n\n\nFloat64Array.prototype.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether an array includes a search element.\n\n The method does not distinguish between signed and unsigned zero.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether an array includes a search element.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > var bool = arr.includes( 2.0 )\n false\n > bool = arr.includes( -1.0 )\n true\n\n\nFloat64Array.prototype.indexOf( searchElement[, fromIndex] )\n Returns the index of the first array element strictly equal to a search\n element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > var idx = arr.indexOf( 2.0 )\n -1\n > idx = arr.indexOf( -1.0 )\n 2\n\n\nFloat64Array.prototype.join( [separator] )\n Serializes an array by joining all array elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating array elements. Default: ','.\n\n Returns\n -------\n str: string\n Array serialized as a string.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > arr.join( '|' )\n '1|0|-1'\n\n\nFloat64Array.prototype.keys()\n Returns an iterator for iterating over array keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array keys.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > it = arr.keys();\n > it.next().value\n 0\n > it.next().value\n 1\n > it.next().done\n true\n\n\nFloat64Array.prototype.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last array element strictly equal to a search\n element.\n\n The method iterates from the last array element to the first array element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n array index.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n > var idx = arr.lastIndexOf( 2.0 )\n -1\n > idx = arr.lastIndexOf( 0.0 )\n 3\n\n\nFloat64Array.prototype.map( fcn[, thisArg] )\n Maps each array element to an element in a new typed array.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n Parameters\n ----------\n fcn: Function\n Function which maps array elements to elements in the new array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( v ) { return v * 2.0; };\n > var arr2 = arr1.map( fcn );\n [ 2.0, 0.0, -2.0 ]\n\n\nFloat64Array.prototype.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first array element as the first argument and the second array\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduce( fcn, 0.0 )\n 2.0\n\n\nFloat64Array.prototype.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last array element as the first argument and the second-to-last\n array element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduceRight( fcn, 0.0 )\n 2.0\n\n\nFloat64Array.prototype.reverse()\n Reverses an array *in-place*.\n\n This method mutates the array on which the method is invoked.\n\n Returns\n -------\n out: Float64Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] )\n [ 1.0, 0.0, -1.0 ]\n > arr.reverse()\n [ -1.0, 0.0, 1.0 ]\n\n\nFloat64Array.prototype.set( arr[, offset] )\n Sets array elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing array values to set.\n\n offset: integer (optional)\n Array index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > arr.set( [ -2.0, 2.0 ], 1 );\n > arr[ 1 ]\n -2.0\n > arr[ 2 ]\n 2.0\n\n\nFloat64Array.prototype.slice( [begin[, end]] )\n Copies array elements to a new array with the same underlying data type as\n the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Float64Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 1.0, 0.0, -1.0 ] );\n > var arr2 = arr1.slice( 1 );\n > arr2.length\n 2\n > arr2[ 0 ]\n 0.0\n > arr2[ 1 ]\n -1.0\n\n\nFloat64Array.prototype.some( predicate[, thisArg] )\n Tests whether at least one array element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, a array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one array element passes.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > arr.some( predicate )\n true\n\n\nFloat64Array.prototype.sort( [compareFunction] )\n Sorts an array *in-place*.\n\n The comparison function is provided two array elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the array on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n out: Float64Array\n Modified array.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > arr.sort()\n [ -2.0, -1.0, 0.0, 1.0, 2.0 ]\n\n\nFloat64Array.prototype.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Float64Array\n A new typed array view.\n\n Examples\n --------\n > var arr1 = new Float64Array( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > var arr2 = arr1.subarray( 2 )\n [ 0.0, 2.0, -2.0 ]\n\n\nFloat64Array.prototype.toLocaleString( [locales[, options]] )\n Serializes an array as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0, 0.0 ] );\n > arr.toLocaleString()\n '1,-1,0'\n\n\nFloat64Array.prototype.toString()\n Serializes an array as a string.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0, 0.0 ] );\n > arr.toString()\n '1,-1,0'\n\n\nFloat64Array.prototype.values()\n Returns an iterator for iterating over array elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array elements.\n\n Examples\n --------\n > var arr = new Float64Array( [ 1.0, -1.0 ] );\n > it = arr.values();\n > it.next().value\n 1.0\n > it.next().value\n -1.0\n > it.next().done\n true\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "forEach": "\nforEach( collection, fcn[, thisArg] )\n Invokes a function for each element in a collection.\n\n When invoked, the input function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function logger( v, i ) { console.log( '%s: %d', i, v ); };\n > var arr = [ 1, 2, 3, 4 ];\n > forEach( arr, logger )\n 0: 1\n 1: 2\n 2: 3\n 3: 4\n\n See Also\n --------\n forEachAsync, forEachRight\n", "forEachAsync": "\nforEachAsync( collection, [options,] fcn, done )\n Invokes a function once for each element in a collection.\n\n When invoked, `fcn` is provided a maximum of four arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n - `next`: a callback to be invoked after processing a collection `value`\n\n The actual number of provided arguments depends on function length. If `fcn`\n accepts two arguments, `fcn` is provided:\n\n - `value`\n - `next`\n\n If `fcn` accepts three arguments, `fcn` is provided:\n\n - `value`\n - `index`\n - `next`\n\n For every other `fcn` signature, `fcn` is provided all four arguments.\n\n If a provided function calls the `next` callback with a truthy `error`\n argument, the function suspends execution and immediately calls the `done`\n callback for subsequent `error` handling.\n\n Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony,\n wrap the `done` callback in a function which either executes at the end of\n the current stack (e.g., `nextTick`) or during a subsequent turn of the\n event loop (e.g., `setImmediate`, `setTimeout`).\n\n The function does not support dynamic collection resizing.\n\n The function does not skip `undefined` elements.\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n done: Function\n A callback invoked either upon processing all collection elements or\n upon encountering an error.\n\n Examples\n --------\n // Basic usage:\n > function onDuration( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next();\n ... }\n ... };\n > function done( error ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( 'Done.' );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > forEachAsync( arr, onDuration, done )\n 1000\n 2500\n 3000\n Done.\n\n // Limit number of concurrent invocations:\n > function onDuration( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next();\n ... }\n ... };\n > function done( error ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( 'Done.' );\n ... };\n > var opts = { 'limit': 2 };\n > var arr = [ 3000, 2500, 1000 ];\n > forEachAsync( arr, opts, onDuration, done )\n 2500\n 3000\n 1000\n Done.\n\n // Process sequentially:\n > function onDuration( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next();\n ... }\n ... };\n > function done( error ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( 'Done.' );\n ... };\n > var opts = { 'series': true };\n > var arr = [ 3000, 2500, 1000 ];\n > forEachAsync( arr, opts, onDuration, done )\n 3000\n 2500\n 1000\n Done.\n\n\nforEachAsync.factory( [options,] fcn )\n Returns a function which invokes a function once for each element in a\n collection.\n\n Parameters\n ----------\n options: Object (optional)\n Function options.\n\n options.limit: integer (optional)\n Maximum number of pending invocations. Default: Infinity.\n\n options.series: boolean (optional)\n Boolean indicating whether to process each collection element\n sequentially. Default: false.\n\n options.thisArg: any (optional)\n Execution context.\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n Returns\n -------\n out: Function\n A function which invokes a function for each element in a collection.\n\n Examples\n --------\n > function onDuration( value, next ) {\n ... setTimeout( onTimeout, value );\n ... function onTimeout() {\n ... console.log( value );\n ... next();\n ... }\n ... };\n > var opts = { 'series': true };\n > var f = forEachAsync.factory( opts, onDuration );\n > function done( error ) {\n ... if ( error ) {\n ... throw error;\n ... }\n ... console.log( 'Done.' );\n ... };\n > var arr = [ 3000, 2500, 1000 ];\n > f( arr, done )\n 3000\n 2500\n 1000\n Done.\n > arr = [ 2000, 1500, 1000 ];\n > f( arr, done )\n 2000\n 1500\n 1000\n Done.\n\n See Also\n --------\n forEach, forEachRightAsync\n", "forEachRight": "\nforEachRight( collection, fcn[, thisArg] )\n Invokes a function for each element in a collection, iterating from right to\n left.\n\n When invoked, the input function is provided three arguments:\n\n - `value`: collection value\n - `index`: collection index\n - `collection`: the input collection\n\n Parameters\n ----------\n collection: Array|TypedArray|Object\n Input collection over which to iterate. If provided an object, the\n object must be array-like (excluding strings and functions).\n\n fcn: Function\n The function to invoke for each element in a collection.\n\n thisArg: any (optional)\n Execution context.\n\n Returns\n -------\n out: Array|TypedArray|Object\n Input collection.\n\n Examples\n --------\n > function logger( v, i ) { console.log( '%s: %d', i, v ); };\n > var arr = [ 1, 2, 3, 4 ];\n > forEachRight( arr, logger )\n 3: 4\n 2: 3\n 1: 2\n 0: 1\n\n See Also\n --------\n forEach, forEachRightAsync\n", @@ -1123,15 +1123,15 @@ var db = { "INT8_MAX": "\nINT8_MAX\n Maximum signed 8-bit integer.\n\n The maximum signed 8-bit integer is given by `2^7 - 1`.\n\n Examples\n --------\n > INT8_MAX\n 127\n\n See Also\n --------\n INT8_MIN\n", "INT8_MIN": "\nINT8_MIN\n Minimum signed 8-bit integer.\n\n The minimum signed 8-bit integer is given by `-(2^7)`.\n\n Examples\n --------\n > INT8_MIN\n -128\n\n See Also\n --------\n INT8_MAX\n", "INT8_NUM_BYTES": "\nINT8_NUM_BYTES\n Size (in bytes) of an 8-bit signed integer.\n\n Examples\n --------\n > INT8_NUM_BYTES\n 1\n\n See Also\n --------\n INT16_NUM_BYTES, INT32_NUM_BYTES, UINT8_NUM_BYTES\n", - "Int8Array": "\nInt8Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 8-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int8Array()\n \n\n\nInt8Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt8Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Int8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt8Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt8Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Int8Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt8Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Int8Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nInt8Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr = Int8Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nInt8Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int8Array.BYTES_PER_ELEMENT\n 1\n\n\nInt8Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int8Array.name\n 'Int8Array'\n\n\nInt8Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.buffer\n \n\n\nInt8Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.byteLength\n 5\n\n\nInt8Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt8Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 1\n\n\nInt8Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Int8Array": "\nInt8Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 8-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int8Array()\n \n\n\nInt8Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt8Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Int8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt8Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt8Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Int8Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt8Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Int8Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nInt8Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr = Int8Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nInt8Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int8Array.BYTES_PER_ELEMENT\n 1\n\n\nInt8Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int8Array.name\n 'Int8Array'\n\n\nInt8Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.buffer\n \n\n\nInt8Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.byteLength\n 5\n\n\nInt8Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt8Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 1\n\n\nInt8Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int8Array( 5 );\n > arr.length\n 5\n\n\nInt8Array.prototype.copyWithin( target, start[, end] )\n Copies a sequence of elements within the array starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: out.length.\n\n Returns\n -------\n out: Int8Array\n Modified array.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2, 3, 4, 5 ] );\n > arr.copyWithin( 3, 0, 2 );\n > arr[ 3 ]\n 1\n > arr[ 4 ]\n 2\n\n\nInt8Array.prototype.entries()\n Returns an iterator for iterating over array key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array key-value pairs.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2 ] );\n > it = arr.entries();\n > it.next().value\n [ 0, 1 ]\n > it.next().value\n [ 1, 2 ]\n > it.next().done\n true\n\n\nInt8Array.prototype.every( predicate[, thisArg] )\n Tests whether all array elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, an array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all array elements pass.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2 ] );\n > function predicate( v ) { return ( v <= 1 ); };\n > arr.every( predicate )\n false\n\n\nInt8Array.prototype.fill( value[, start[, end]] )\n Fills an array from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last array element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last array element. Default: out.length.\n\n Returns\n -------\n out: Int8Array\n Modified array.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2 ] );\n > arr.fill( 3 );\n > arr[ 0 ]\n 3\n > arr[ 1 ]\n 3\n\n\nInt8Array.prototype.filter( predicate[, thisArg] )\n Creates a new array which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n If a predicate function does not return a truthy value for any array\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters array elements. If a predicate function\n returns a truthy value, an array element is included in the output\n array; otherwise, an array element is not included in the output array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int8Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 1 ); };\n > var arr2 = arr1.filter( predicate );\n > arr2.length\n 2\n\n\nInt8Array.prototype.find( predicate[, thisArg] )\n Returns the first array element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Array element.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 2 ); };\n > var v = arr.find( predicate )\n 3\n\n\nInt8Array.prototype.findIndex( predicate[, thisArg] )\n Returns the index of the first array element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 2 ); };\n > var idx = arr.findIndex( predicate )\n 2\n\n\nInt8Array.prototype.forEach( fcn[, thisArg] )\n Invokes a callback for each array element.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each array element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var arr = new Int8Array( [ 3, 2, 1 ] );\n > var str = ' ';\n > function fcn( v, i ) { str += i + ':' + v + ' '; };\n > arr.forEach( fcn );\n > str\n ' 0:3 1:2 2:1 '\n\n\nInt8Array.prototype.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether an array includes a search element.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether an array includes a search element.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2, 3 ] );\n > var bool = arr.includes( 4 )\n false\n > bool = arr.includes( 3 )\n true\n\n\nInt8Array.prototype.indexOf( searchElement[, fromIndex] )\n Returns the index of the first array element strictly equal to a search\n element.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2, 3 ] );\n > var idx = arr.indexOf( 4 )\n -1\n > idx = arr.indexOf( 3 )\n 2\n\n\nInt8Array.prototype.join( [separator] )\n Serializes an array by joining all array elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating array elements. Default: ','.\n\n Returns\n -------\n str: string\n Array serialized as a string.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2, 3 ] );\n > arr.join( '|' )\n '1|2|3'\n\n\nInt8Array.prototype.keys()\n Returns an iterator for iterating over array keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array keys.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2 ] );\n > it = arr.keys();\n > it.next().value\n 0\n > it.next().value\n 1\n > it.next().done\n true\n\n\nInt8Array.prototype.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last array element strictly equal to a search\n element.\n\n The method iterates from the last array element to the first array element.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n array index.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 0, 2, 0, 1 ] );\n > var idx = arr.lastIndexOf( 3 )\n -1\n > idx = arr.lastIndexOf( 0 )\n 3\n\n\nInt8Array.prototype.map( fcn[, thisArg] )\n Maps each array element to an element in a new typed array.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n Parameters\n ----------\n fcn: Function\n Function which maps array elements to elements in the new array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int8Array( [ 1, 2, 3 ] );\n > function fcn( v ) { return v * 2; };\n > var arr2 = arr1.map( fcn );\n [ 2, 4, 6 ]\n\n\nInt8Array.prototype.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first array element as the first argument and the second array\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2, 3 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduce( fcn, 0 )\n 14\n\n\nInt8Array.prototype.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last array element as the first argument and the second-to-last\n array element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2, 3 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduceRight( fcn, 0 )\n 14\n\n\nInt8Array.prototype.reverse()\n Reverses an array *in-place*.\n\n This method mutates the array on which the method is invoked.\n\n Returns\n -------\n out: Int8Array\n Modified array.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2, 3 ] )\n [ 1, 2, 3 ]\n > arr.reverse()\n [ 3, 2, 1 ]\n\n\nInt8Array.prototype.set( arr[, offset] )\n Sets array elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing array values to set.\n\n offset: integer (optional)\n Array index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2, 3 ] );\n > arr.set( [ 4, 4 ], 1 );\n > arr[ 1 ]\n 4\n > arr[ 2 ]\n 4\n\n\nInt8Array.prototype.slice( [begin[, end]] )\n Copies array elements to a new array with the same underlying data type as\n the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Int8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int8Array( [ 1, 2, 3 ] );\n > var arr2 = arr1.slice( 1 );\n > arr2.length\n 2\n > arr2[ 0 ]\n 1\n > arr2[ 1 ]\n 2\n\n\nInt8Array.prototype.some( predicate[, thisArg] )\n Tests whether at least one array element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, a array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one array element passes.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2 ] );\n > function predicate( v ) { return ( v > 1 ); };\n > arr.some( predicate )\n true\n\n\nInt8Array.prototype.sort( [compareFunction] )\n Sorts an array *in-place*.\n\n The comparison function is provided two array elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the array on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n out: Int8Array\n Modified array.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2, 0, 2, 1 ] );\n > arr.sort()\n [ 0, 1, 1, 2, 2 ]\n\n\nInt8Array.prototype.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Int8Array\n A new typed array view.\n\n Examples\n --------\n > var arr1 = new Int8Array( [ 1, 2, 3, 4, 5 ] );\n > var arr2 = arr1.subarray( 2 )\n [ 3, 4, 5 ]\n\n\nInt8Array.prototype.toLocaleString( [locales[, options]] )\n Serializes an array as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2, 3 ] );\n > arr.toLocaleString()\n '1,2,3'\n\n\nInt8Array.prototype.toString()\n Serializes an array as a string.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2, 3 ] );\n > arr.toString()\n '1,2,3'\n\n\nInt8Array.prototype.values()\n Returns an iterator for iterating over array elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array elements.\n\n Examples\n --------\n > var arr = new Int8Array( [ 1, 2 ] );\n > it = arr.values();\n > it.next().value\n 1\n > it.next().value\n 2\n > it.next().done\n true\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "INT16_MAX": "\nINT16_MAX\n Maximum signed 16-bit integer.\n\n The maximum signed 16-bit integer is given by `2^15 - 1`.\n\n Examples\n --------\n > INT16_MAX\n 32767\n\n See Also\n --------\n INT16_MIN\n", "INT16_MIN": "\nINT16_MIN\n Minimum signed 16-bit integer.\n\n The minimum signed 16-bit integer is given by `-(2^15)`.\n\n Examples\n --------\n > INT16_MIN\n -32768\n\n See Also\n --------\n INT16_MAX\n", "INT16_NUM_BYTES": "\nINT16_NUM_BYTES\n Size (in bytes) of a 16-bit signed integer.\n\n Examples\n --------\n > INT16_NUM_BYTES\n 2\n\n See Also\n --------\n INT32_NUM_BYTES, INT8_NUM_BYTES, UINT16_NUM_BYTES\n", - "Int16Array": "\nInt16Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 16-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int16Array()\n \n\n\nInt16Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt16Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Int16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt16Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt16Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 8 );\n > var arr = new Int16Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt16Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Int16Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nInt16Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr = Int16Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nInt16Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int16Array.BYTES_PER_ELEMENT\n 2\n\n\nInt16Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int16Array.name\n 'Int16Array'\n\n\nInt16Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.buffer\n \n\n\nInt16Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.byteLength\n 10\n\n\nInt16Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt16Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 2\n\n\nInt16Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Int16Array": "\nInt16Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 16-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int16Array()\n \n\n\nInt16Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt16Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Int16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt16Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt16Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 8 );\n > var arr = new Int16Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt16Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Int16Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nInt16Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr = Int16Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nInt16Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int16Array.BYTES_PER_ELEMENT\n 2\n\n\nInt16Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int16Array.name\n 'Int16Array'\n\n\nInt16Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.buffer\n \n\n\nInt16Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.byteLength\n 10\n\n\nInt16Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt16Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 2\n\n\nInt16Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int16Array( 5 );\n > arr.length\n 5\n\n\nInt16Array.prototype.copyWithin( target, start[, end] )\n Copies a sequence of elements within the array starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: out.length.\n\n Returns\n -------\n out: Int16Array\n Modified array.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2, 3, 4, 5 ] );\n > arr.copyWithin( 3, 0, 2 );\n > arr[ 3 ]\n 1\n > arr[ 4 ]\n 2\n\n\nInt16Array.prototype.entries()\n Returns an iterator for iterating over array key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array key-value pairs.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2 ] );\n > it = arr.entries();\n > it.next().value\n [ 0, 1 ]\n > it.next().value\n [ 1, 2 ]\n > it.next().done\n true\n\n\nInt16Array.prototype.every( predicate[, thisArg] )\n Tests whether all array elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, an array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all array elements pass.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2 ] );\n > function predicate( v ) { return ( v <= 1 ); };\n > arr.every( predicate )\n false\n\n\nInt16Array.prototype.fill( value[, start[, end]] )\n Fills an array from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last array element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last array element. Default: out.length.\n\n Returns\n -------\n out: Int16Array\n Modified array.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2 ] );\n > arr.fill( 3 );\n > arr[ 0 ]\n 3\n > arr[ 1 ]\n 3\n\n\nInt16Array.prototype.filter( predicate[, thisArg] )\n Creates a new array which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n If a predicate function does not return a truthy value for any array\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters array elements. If a predicate function\n returns a truthy value, an array element is included in the output\n array; otherwise, an array element is not included in the output array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int16Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 1 ); };\n > var arr2 = arr1.filter( predicate );\n > arr2.length\n 2\n\n\nInt16Array.prototype.find( predicate[, thisArg] )\n Returns the first array element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Array element.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 2 ); };\n > var v = arr.find( predicate )\n 3\n\n\nInt16Array.prototype.findIndex( predicate[, thisArg] )\n Returns the index of the first array element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 2 ); };\n > var idx = arr.findIndex( predicate )\n 2\n\n\nInt16Array.prototype.forEach( fcn[, thisArg] )\n Invokes a callback for each array element.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each array element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var arr = new Int16Array( [ 3, 2, 1 ] );\n > var str = ' ';\n > function fcn( v, i ) { str += i + ':' + v + ' '; };\n > arr.forEach( fcn );\n > str\n ' 0:3 1:2 2:1 '\n\n\nInt16Array.prototype.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether an array includes a search element.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether an array includes a search element.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2, 3 ] );\n > var bool = arr.includes( 4 )\n false\n > bool = arr.includes( 3 )\n true\n\n\nInt16Array.prototype.indexOf( searchElement[, fromIndex] )\n Returns the index of the first array element strictly equal to a search\n element.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2, 3 ] );\n > var idx = arr.indexOf( 4 )\n -1\n > idx = arr.indexOf( 3 )\n 2\n\n\nInt16Array.prototype.join( [separator] )\n Serializes an array by joining all array elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating array elements. Default: ','.\n\n Returns\n -------\n str: string\n Array serialized as a string.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2, 3 ] );\n > arr.join( '|' )\n '1|2|3'\n\n\nInt16Array.prototype.keys()\n Returns an iterator for iterating over array keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array keys.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2 ] );\n > it = arr.keys();\n > it.next().value\n 0\n > it.next().value\n 1\n > it.next().done\n true\n\n\nInt16Array.prototype.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last array element strictly equal to a search\n element.\n\n The method iterates from the last array element to the first array element.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n array index.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 0, 2, 0, 1 ] );\n > var idx = arr.lastIndexOf( 3 )\n -1\n > idx = arr.lastIndexOf( 0 )\n 3\n\n\nInt16Array.prototype.map( fcn[, thisArg] )\n Maps each array element to an element in a new typed array.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n Parameters\n ----------\n fcn: Function\n Function which maps array elements to elements in the new array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int16Array( [ 1, 2, 3 ] );\n > function fcn( v ) { return v * 2; };\n > var arr2 = arr1.map( fcn );\n [ 2, 4, 6 ]\n\n\nInt16Array.prototype.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first array element as the first argument and the second array\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2, 3 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduce( fcn, 0 )\n 14\n\n\nInt16Array.prototype.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last array element as the first argument and the second-to-last\n array element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2, 3 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduceRight( fcn, 0 )\n 14\n\n\nInt16Array.prototype.reverse()\n Reverses an array *in-place*.\n\n This method mutates the array on which the method is invoked.\n\n Returns\n -------\n out: Int16Array\n Modified array.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2, 3 ] )\n [ 1, 2, 3 ]\n > arr.reverse()\n [ 3, 2, 1 ]\n\n\nInt16Array.prototype.set( arr[, offset] )\n Sets array elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing array values to set.\n\n offset: integer (optional)\n Array index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2, 3 ] );\n > arr.set( [ 4, 4 ], 1 );\n > arr[ 1 ]\n 4\n > arr[ 2 ]\n 4\n\n\nInt16Array.prototype.slice( [begin[, end]] )\n Copies array elements to a new array with the same underlying data type as\n the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Int16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int16Array( [ 1, 2, 3 ] );\n > var arr2 = arr1.slice( 1 );\n > arr2.length\n 2\n > arr2[ 0 ]\n 1\n > arr2[ 1 ]\n 2\n\n\nInt16Array.prototype.some( predicate[, thisArg] )\n Tests whether at least one array element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, a array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one array element passes.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2 ] );\n > function predicate( v ) { return ( v > 1 ); };\n > arr.some( predicate )\n true\n\n\nInt16Array.prototype.sort( [compareFunction] )\n Sorts an array *in-place*.\n\n The comparison function is provided two array elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the array on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n out: Int16Array\n Modified array.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2, 0, 2, 1 ] );\n > arr.sort()\n [ 0, 1, 1, 2, 2 ]\n\n\nInt16Array.prototype.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Int16Array\n A new typed array view.\n\n Examples\n --------\n > var arr1 = new Int16Array( [ 1, 2, 3, 4, 5 ] );\n > var arr2 = arr1.subarray( 2 )\n [ 3, 4, 5 ]\n\n\nInt16Array.prototype.toLocaleString( [locales[, options]] )\n Serializes an array as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2, 3 ] );\n > arr.toLocaleString()\n '1,2,3'\n\n\nInt16Array.prototype.toString()\n Serializes an array as a string.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2, 3 ] );\n > arr.toString()\n '1,2,3'\n\n\nInt16Array.prototype.values()\n Returns an iterator for iterating over array elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array elements.\n\n Examples\n --------\n > var arr = new Int16Array( [ 1, 2 ] );\n > it = arr.values();\n > it.next().value\n 1\n > it.next().value\n 2\n > it.next().done\n true\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "INT32_MAX": "\nINT32_MAX\n Maximum signed 32-bit integer.\n\n The maximum signed 32-bit integer is given by `2^31 - 1`.\n\n Examples\n --------\n > INT32_MAX\n 2147483647\n\n See Also\n --------\n INT32_MIN\n", "INT32_MIN": "\nINT32_MIN\n Minimum signed 32-bit integer.\n\n The minimum signed 32-bit integer is given by `-(2^31)`.\n\n Examples\n --------\n > INT32_MIN\n -2147483648\n\n See Also\n --------\n INT32_MAX\n", "INT32_NUM_BYTES": "\nINT32_NUM_BYTES\n Size (in bytes) of a 32-bit signed integer.\n\n Examples\n --------\n > INT32_NUM_BYTES\n 4\n\n See Also\n --------\n INT16_NUM_BYTES, INT8_NUM_BYTES, UINT32_NUM_BYTES\n", - "Int32Array": "\nInt32Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 32-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int32Array()\n \n\n\nInt32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int16Array( [ 5, 5, 5 ] );\n > var arr2 = new Int32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Int32Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt32Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Int32Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nInt32Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr = Int32Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nInt32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int32Array.BYTES_PER_ELEMENT\n 4\n\n\nInt32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int32Array.name\n 'Int32Array'\n\n\nInt32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.buffer\n \n\n\nInt32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.byteLength\n 20\n\n\nInt32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt32Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 4\n\n\nInt32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Int32Array": "\nInt32Array()\n A typed array constructor which returns a typed array representing an array\n of twos-complement 32-bit signed integers in the platform byte order.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int32Array()\n \n\n\nInt32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nInt32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int16Array( [ 5, 5, 5 ] );\n > var arr2 = new Int32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Int32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nInt32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Int32Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nInt32Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Int32Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nInt32Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr = Int32Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nInt32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Int32Array.BYTES_PER_ELEMENT\n 4\n\n\nInt32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Int32Array.name\n 'Int32Array'\n\n\nInt32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.buffer\n \n\n\nInt32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.byteLength\n 20\n\n\nInt32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.byteOffset\n 0\n\n\nInt32Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 4\n\n\nInt32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Int32Array( 5 );\n > arr.length\n 5\n\n\nInt32Array.prototype.copyWithin( target, start[, end] )\n Copies a sequence of elements within the array starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: out.length.\n\n Returns\n -------\n out: Int32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2, 3, 4, 5 ] );\n > arr.copyWithin( 3, 0, 2 );\n > arr[ 3 ]\n 1\n > arr[ 4 ]\n 2\n\n\nInt32Array.prototype.entries()\n Returns an iterator for iterating over array key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array key-value pairs.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2 ] );\n > it = arr.entries();\n > it.next().value\n [ 0, 1 ]\n > it.next().value\n [ 1, 2 ]\n > it.next().done\n true\n\n\nInt32Array.prototype.every( predicate[, thisArg] )\n Tests whether all array elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, an array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all array elements pass.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2 ] );\n > function predicate( v ) { return ( v <= 1 ); };\n > arr.every( predicate )\n false\n\n\nInt32Array.prototype.fill( value[, start[, end]] )\n Fills an array from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last array element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last array element. Default: out.length.\n\n Returns\n -------\n out: Int32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2 ] );\n > arr.fill( 3 );\n > arr[ 0 ]\n 3\n > arr[ 1 ]\n 3\n\n\nInt32Array.prototype.filter( predicate[, thisArg] )\n Creates a new array which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n If a predicate function does not return a truthy value for any array\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters array elements. If a predicate function\n returns a truthy value, an array element is included in the output\n array; otherwise, an array element is not included in the output array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 1 ); };\n > var arr2 = arr1.filter( predicate );\n > arr2.length\n 2\n\n\nInt32Array.prototype.find( predicate[, thisArg] )\n Returns the first array element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Array element.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 2 ); };\n > var v = arr.find( predicate )\n 3\n\n\nInt32Array.prototype.findIndex( predicate[, thisArg] )\n Returns the index of the first array element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 2 ); };\n > var idx = arr.findIndex( predicate )\n 2\n\n\nInt32Array.prototype.forEach( fcn[, thisArg] )\n Invokes a callback for each array element.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each array element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var arr = new Int32Array( [ 3, 2, 1 ] );\n > var str = ' ';\n > function fcn( v, i ) { str += i + ':' + v + ' '; };\n > arr.forEach( fcn );\n > str\n ' 0:3 1:2 2:1 '\n\n\nInt32Array.prototype.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether an array includes a search element.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether an array includes a search element.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2, 3 ] );\n > var bool = arr.includes( 4 )\n false\n > bool = arr.includes( 3 )\n true\n\n\nInt32Array.prototype.indexOf( searchElement[, fromIndex] )\n Returns the index of the first array element strictly equal to a search\n element.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2, 3 ] );\n > var idx = arr.indexOf( 4 )\n -1\n > idx = arr.indexOf( 3 )\n 2\n\n\nInt32Array.prototype.join( [separator] )\n Serializes an array by joining all array elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating array elements. Default: ','.\n\n Returns\n -------\n str: string\n Array serialized as a string.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2, 3 ] );\n > arr.join( '|' )\n '1|2|3'\n\n\nInt32Array.prototype.keys()\n Returns an iterator for iterating over array keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array keys.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2 ] );\n > it = arr.keys();\n > it.next().value\n 0\n > it.next().value\n 1\n > it.next().done\n true\n\n\nInt32Array.prototype.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last array element strictly equal to a search\n element.\n\n The method iterates from the last array element to the first array element.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n array index.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 0, 2, 0, 1 ] );\n > var idx = arr.lastIndexOf( 3 )\n -1\n > idx = arr.lastIndexOf( 0 )\n 3\n\n\nInt32Array.prototype.map( fcn[, thisArg] )\n Maps each array element to an element in a new typed array.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n Parameters\n ----------\n fcn: Function\n Function which maps array elements to elements in the new array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 1, 2, 3 ] );\n > function fcn( v ) { return v * 2; };\n > var arr2 = arr1.map( fcn );\n [ 2, 4, 6 ]\n\n\nInt32Array.prototype.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first array element as the first argument and the second array\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2, 3 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduce( fcn, 0 )\n 14\n\n\nInt32Array.prototype.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last array element as the first argument and the second-to-last\n array element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2, 3 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduceRight( fcn, 0 )\n 14\n\n\nInt32Array.prototype.reverse()\n Reverses an array *in-place*.\n\n This method mutates the array on which the method is invoked.\n\n Returns\n -------\n out: Int32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2, 3 ] )\n [ 1, 2, 3 ]\n > arr.reverse()\n [ 3, 2, 1 ]\n\n\nInt32Array.prototype.set( arr[, offset] )\n Sets array elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing array values to set.\n\n offset: integer (optional)\n Array index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2, 3 ] );\n > arr.set( [ 4, 4 ], 1 );\n > arr[ 1 ]\n 4\n > arr[ 2 ]\n 4\n\n\nInt32Array.prototype.slice( [begin[, end]] )\n Copies array elements to a new array with the same underlying data type as\n the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Int32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 1, 2, 3 ] );\n > var arr2 = arr1.slice( 1 );\n > arr2.length\n 2\n > arr2[ 0 ]\n 1\n > arr2[ 1 ]\n 2\n\n\nInt32Array.prototype.some( predicate[, thisArg] )\n Tests whether at least one array element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, a array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one array element passes.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2 ] );\n > function predicate( v ) { return ( v > 1 ); };\n > arr.some( predicate )\n true\n\n\nInt32Array.prototype.sort( [compareFunction] )\n Sorts an array *in-place*.\n\n The comparison function is provided two array elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the array on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n out: Int32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2, 0, 2, 1 ] );\n > arr.sort()\n [ 0, 1, 1, 2, 2 ]\n\n\nInt32Array.prototype.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Int32Array\n A new typed array view.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 1, 2, 3, 4, 5 ] );\n > var arr2 = arr1.subarray( 2 )\n [ 3, 4, 5 ]\n\n\nInt32Array.prototype.toLocaleString( [locales[, options]] )\n Serializes an array as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2, 3 ] );\n > arr.toLocaleString()\n '1,2,3'\n\n\nInt32Array.prototype.toString()\n Serializes an array as a string.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2, 3 ] );\n > arr.toString()\n '1,2,3'\n\n\nInt32Array.prototype.values()\n Returns an iterator for iterating over array elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array elements.\n\n Examples\n --------\n > var arr = new Int32Array( [ 1, 2 ] );\n > it = arr.values();\n > it.next().value\n 1\n > it.next().value\n 2\n > it.next().done\n true\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "IS_BIG_ENDIAN": "\nIS_BIG_ENDIAN\n Boolean indicating if the environment is big endian.\n\n Examples\n --------\n > IS_BIG_ENDIAN\n \n\n See Also\n --------\n IS_LITTLE_ENDIAN\n", "IS_BROWSER": "\nIS_BROWSER\n Boolean indicating if the runtime is a web browser.\n\n Examples\n --------\n > IS_BROWSER\n \n\n", "IS_DARWIN": "\nIS_DARWIN\n Boolean indicating if the current process is running on Darwin.\n\n Examples\n --------\n > IS_DARWIN\n \n\n", @@ -1366,7 +1366,7 @@ var db = { "MONTH_NAMES_EN": "\nMONTH_NAMES_EN()\n Returns a list of month names (English).\n\n Returns\n -------\n out: Array\n List of month names.\n\n Examples\n --------\n > var list = MONTH_NAMES_EN()\n [ 'January', 'February', 'March', 'April', ... ]\n\n", "MONTHS_IN_YEAR": "\nMONTHS_IN_YEAR\n Number of months in a year.\n\n The value is a generalization and does **not** take into account\n inaccuracies due to daylight savings conventions, crossing timezones, or\n other complications with time and dates.\n\n Examples\n --------\n > var yrs = 3.14;\n > var mons = yrs * MONTHS_IN_YEAR\n 37.68\n\n", "moveProperty": "\nmoveProperty( source, prop, target )\n Moves a property from one object to another object.\n\n The property is deleted from the source object and the property's descriptor\n is preserved during transfer.\n\n If a source property is not configurable, the function throws an error, as\n the property cannot be deleted from the source object.\n\n Parameters\n ----------\n source: Object\n Source object.\n\n prop: string\n Property to move.\n\n target: Object\n Target object.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether operation was successful.\n\n Examples\n --------\n > var obj1 = { 'a': 'b' };\n > var obj2 = {};\n > var bool = moveProperty( obj1, 'a', obj2 )\n true\n > bool = moveProperty( obj1, 'c', obj2 )\n false\n\n", - "namedtypedtuple": "\nnamedtypedtuple( fields[, options] )\n Returns a named typed tuple factory.\n\n Named tuples assign a property name, and thus a meaning, to each position in\n a tuple and allow for more readable, self-documenting code.\n\n Named typed tuples can be used wherever typed arrays are used, with the\n added benefit that they allow accessing fields by both field name and\n position index.\n\n Named typed tuples may be one the following data types:\n\n - float64: double-precision floating-point numbers (IEEE 754)\n - float32: single-precision floating-point numbers (IEEE 754)\n - int32: 32-bit two's complement signed integers\n - uint32: 32-bit unsigned integers\n - int16: 16-bit two's complement signed integers\n - uint16: 16-bit unsigned integers\n - int8: 8-bit two's complement signed integers\n - uint8: 8-bit unsigned integers\n - uint8c: 8-bit unsigned integers clamped to 0-255\n\n Parameters\n ----------\n fields: Array\n Field (property) names.\n\n options: Object (optional)\n Function options.\n\n options.dtype: string (optional)\n Default tuple data type. If a data type is not provided to a named typed\n tuple factory, this option specifies the underlying tuple data type.\n Default: 'float64'.\n\n options.name: string (optional)\n Tuple name. Default: 'tuple'.\n\n Returns\n -------\n factory: Function\n Named typed tuple factory.\n\n Examples\n --------\n > var opts = {};\n > opts.name = 'Point';\n > var factory = namedtypedtuple( [ 'x', 'y' ], opts );\n > var tuple = factory();\n\n\nfactory()\n Returns a named typed tuple of the default data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory();\n > p.x\n 0.0\n > p.y\n 0.0\n > p[ 0 ]\n 0.0\n > p[ 1 ]\n 0.0\n\n\nfactory( dtype )\n Returns a named typed tuple of the specified data type.\n\n Parameters\n ----------\n dtype: string\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory( 'int32' );\n > p.x\n 0\n > p.y\n 0\n > p[ 0 ]\n 0\n > p[ 1 ]\n 0\n\n\nfactory( typedarray[, dtype] )\n Creates a named typed tuple from a typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate a named typed tuple.\n\n dtype: string (optional)\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory( Float64Array[ 1.0, -1.0 ] );\n > p.x\n 1.0\n > p.y\n -1.0\n > p[ 0 ]\n 1.0\n > p[ 1 ]\n -1.0\n\n\nfactory( obj[, dtype] )\n Creates a named typed tuple from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a named typed\n tuple.\n\n dtype: string (optional)\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory( [ 1, -1 ], 'int32' );\n > p.x\n 1\n > p.y\n -1\n > p[ 0 ]\n 1\n > p[ 1 ]\n -1\n\n\nfactory( buffer[, byteOffset][, dtype] )\n Returns a named typed tuple view of an ArrayBuffer.\n\n The view length equals the number of tuple fields.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first tuple element.\n Default: 0.\n\n dtype: string (optional)\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var buf = new ArrayBuffer( 16 );\n > var p = factory( buf, 4, 'float32' );\n > p.x\n 0.0\n > p.y\n 0.0\n > p[ 0 ]\n 0.0\n > p[ 1 ]\n 0.0\n\n\nfactory.from( src[, map[, thisArg]] )\n Creates a new named typed tuple from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n - field: tuple field.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of tuple elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > function mapFcn( v ) { return v * 2.0; };\n > var p = factory.from( [ 1.0, -1.0 ], mapFcn );\n > p.x\n 2.0\n > p.y\n -2.0\n > p[ 0 ]\n 2.0\n > p[ 1 ]\n -2.0\n\n\nfactory.fromObject( obj[, map[, thisArg]] )\n Creates a new named typed tuple from an object containing tuple fields.\n\n A callback is provided the following arguments:\n\n - value: source object tuple field value.\n - field: source object tuple field name.\n\n Parameters\n ----------\n obj: Object\n Source object.\n\n map: Function (optional)\n Callback to invoke for each source object tuple field.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory.fromObject( { 'x': 2.0, 'y': -2.0 } );\n > p.x\n 2.0\n > p.y\n -2.0\n > p[ 0 ]\n 2.0\n > p[ 1 ]\n -2.0\n\n\nfactory.of( element0[, element1[, ...[, elementN]]] )\n Creates a new named typed tuple from a variable number of arguments.\n\n The number of arguments *must* equal the number of tuple fields.\n\n Parameters\n ----------\n element: number\n Tuple elements.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory.of( 2.0, -2.0 );\n > p.x\n 2.0\n > p.y\n -2.0\n > p[ 0 ]\n 2.0\n > p[ 1 ]\n -2.0\n\n\ntuple.BYTES_PER_ELEMENT\n Size (in bytes) of each tuple element.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.BYTES_PER_ELEMENT\n 8\n\n\ntuple.buffer\n Pointer to the underlying data buffer.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.buffer\n \n\n\ntuple.byteLength\n Length (in bytes) of the tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.byteLength\n 16\n\n\ntuple.byteOffset\n Offset (in bytes) of a tuple from the start of its underlying ArrayBuffer.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.byteOffset\n 0\n\n\ntuple.length\n Tuple length (i.e., number of elements).\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.length\n 2\n\n\ntuple.name\n Tuple name.\n\n Examples\n --------\n > var opts = { 'name': 'Point' };\n > var factory = namedtypedtuple( [ 'x', 'y' ], opts );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.name\n 'Point'\n\n\ntuple.fields\n Returns the list of tuple fields.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.fields\n [ 'x', 'y' ]\n\n\ntuple.orderedFields\n Returns the list of tuple fields in index order.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p[ 0 ]\n 1.0\n > p.sort();\n > p[ 0 ]\n -1.0\n > p.fields\n [ 'x', 'y' ]\n > p.orderedFields\n [ 'y', 'x' ]\n\n\ntuple.copyWithin( target, start[, end] )\n Copies a sequence of elements within the tuple starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] );\n > p.copyWithin( 3, 0, 2 );\n > p.w\n 2.0\n > p.v\n -2.0\n\n\ntuple.entries()\n Returns an iterator for iterating over tuple key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over tuple key-value pairs.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > it = p.entries();\n > it.next().value\n [ 1.0, 0, 'x' ]\n > it.next().value\n [ -1.0, 1, 'y' ]\n > it.next().done\n true\n\n\ntuple.every( predicate[, thisArg] )\n Tests whether all tuple elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements. If a predicate function\n returns a truthy value, a tuple element passes; otherwise, a tuple\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all tuple elements pass.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > p.every( predicate )\n false\n\n\ntuple.fieldOf( searchElement[, fromIndex] )\n Returns the field of the first tuple element strictly equal to a search\n element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `undefined`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: 0.\n\n Returns\n -------\n field: string|undefined\n Tuple field.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > var f = p.fieldOf( 2.0 )\n undefined\n > f = p.fieldOf( -1.0 )\n 'z'\n\n\ntuple.fill( value[, start[, end]] )\n Fills a tuple from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last tuple element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.fill( 2.0 );\n > p.x\n 2.0\n > p.y\n 2.0\n\n\ntuple.filter( predicate[, thisArg] )\n Creates a new tuple which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n The returned tuple has the same data type as the host tuple.\n\n If a predicate function does not return a truthy value for any tuple\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters tuple elements. If a predicate function\n returns a truthy value, a tuple element is included in the output tuple;\n otherwise, a tuple element is not included in the output tuple.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p1 = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > var p2 = p1.filter( predicate );\n > p2.fields\n [ 'x', 'y' ]\n\n\ntuple.find( predicate[, thisArg] )\n Returns the first tuple element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Tuple element.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var v = p.find( predicate )\n -1.0\n\n\ntuple.findField( predicate[, thisArg] )\n Returns the field of the first tuple element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n field: string|undefined\n Tuple field.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var f = p.findField( predicate )\n 'z'\n\n\ntuple.findIndex( predicate[, thisArg] )\n Returns the index of the first tuple element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var idx = p.findIndex( predicate )\n 2\n\n\ntuple.forEach( fcn[, thisArg] )\n Invokes a callback for each tuple element.\n\n A provided function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each tuple element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1, 0, -1 ], 'int32' );\n > var str = ' ';\n > function fcn( v, i, f ) { str += f + '=' + v + ' '; };\n > p.forEach( fcn );\n > str\n ' x=1 y=0 z=-1 '\n\n\ntuple.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether a tuple includes a search element.\n\n The method does not distinguish between signed and unsigned zero.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a tuple includes a search element.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > var bool = p.includes( 2.0 )\n false\n > bool = p.includes( -1.0 )\n true\n\n\ntuple.indexOf( searchElement[, fromIndex] )\n Returns the index of the first tuple element strictly equal to a search\n element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > var idx = p.indexOf( 2.0 )\n -1\n > idx = p.indexOf( -1.0 )\n 2\n\n\ntuple.ind2key( ind )\n Converts a tuple index to a field name.\n\n If provided an out-of-bounds index, the method returns `undefined`.\n\n Parameters\n ----------\n ind: integer\n Tuple index. If less than zero, the method resolves the index relative\n to the last tuple element.\n\n Returns\n -------\n field: string|undefined\n Field name.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p.ind2key( 1 )\n 'y'\n > p.ind2key( 100 )\n undefined\n\n\ntuple.join( [separator] )\n Serializes a tuple by joining all tuple elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating tuple elements. Default: ','.\n\n Returns\n -------\n str: string\n Tuple serialized as a string.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1, 0, -1 ], 'int32' );\n > p.join( '|' )\n '1|0|-1'\n\n\ntuple.keys()\n Returns an iterator for iterating over tuple keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over tuple keys.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > it = p.keys();\n > it.next().value\n [ 0, 'x' ]\n > it.next().value\n [ 1, 'y' ]\n > it.next().done\n true\n\n\ntuple.key2ind( field )\n Converts a field name to a tuple index.\n\n If provided an unknown field name, the method returns `-1`.\n\n Parameters\n ----------\n field: string\n Tuple field name.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p.key2ind( 'y' )\n 1\n\n\ntuple.lastFieldOf( searchElement[, fromIndex] )\n Returns the field of the last tuple element strictly equal to a search\n element.\n\n The method iterates from the last tuple element to the first tuple element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `undefined`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: -1.\n\n Returns\n -------\n field: string|undefined\n Tuple field.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n > var f = p.lastFieldOf( 2.0 )\n undefined\n > f = p.lastFieldOf( 0.0 )\n 'w'\n\n\ntuple.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last tuple element strictly equal to a search\n element.\n\n The method iterates from the last tuple element to the first tuple element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n > var idx = p.lastIndexOf( 2.0 )\n -1\n > idx = p.lastIndexOf( 0.0 )\n 3\n\n\ntuple.map( fcn[, thisArg] )\n Maps each tuple element to an element in a new tuple.\n\n A provided function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n The returned tuple has the same data type as the host tuple.\n\n Parameters\n ----------\n fcn: Function\n Function which maps tuple elements to elements in the new tuple.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p1 = factory( [ 1.0, 0.0, -1.0 ] );\n > function fcn( v ) { return v * 2.0; };\n > var p2 = p1.map( fcn );\n > p2.x\n 2.0\n > p2.y\n 0.0\n > p2.z\n -2.0\n\n\ntuple.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in a tuple and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current tuple element.\n - index: index of the current tuple element.\n - field: field name corresponding to the current tuple element.\n - tuple: tuple on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first tuple element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first tuple element as the first argument and the second tuple\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = p.reduce( fcn, 0.0 )\n 2.0\n\n\ntuple.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in a tuple and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current tuple element.\n - index: index of the current tuple element.\n - field: field name corresponding to the current tuple element.\n - tuple: tuple on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last tuple element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last tuple element as the first argument and the second-to-last\n tuple element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = p.reduceRight( fcn, 0.0 )\n 2.0\n\n\ntuple.reverse()\n Reverses a tuple *in-place*.\n\n This method mutates the tuple on which the method is invoked.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p[ 0 ]\n 1.0\n > p.x\n 1.0\n > p.reverse();\n > p[ 0 ]\n -1.0\n > p.x\n 1.0\n\n\ntuple.set( arr[, offset] )\n Sets tuple elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing tuple values to set.\n\n offset: integer (optional)\n Tuple index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p[ 1 ]\n 0.0\n > p.y\n 0.0\n > p.set( [ -2.0, 2.0 ], 1 );\n > p[ 1 ]\n -2.0\n > p.y\n -2.0\n > p[ 2 ]\n 2.0\n > p.z\n 2.0\n\n\ntuple.slice( [begin[, end]] )\n Copies tuple elements to a new tuple with the same underlying data type as\n the host tuple.\n\n If the method is unable to resolve indices to a non-empty tuple subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last tuple element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p1 = factory( [ 1.0, 0.0, -1.0 ] );\n > p1.fields\n [ 'x', 'y', 'z' ]\n > var p2 = p1.slice( 1 );\n > p2.fields\n [ 'y', 'z' ]\n > p2.y\n 0.0\n > p2.z\n -1.0\n\n\ntuple.some( predicate[, thisArg] )\n Tests whether at least one tuple element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements. If a predicate function\n returns a truthy value, a tuple element passes; otherwise, a tuple\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one tuple element passes.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > p.some( predicate )\n true\n\n\ntuple.sort( [compareFunction] )\n Sorts a tuple *in-place*.\n\n Sorting a tuple does *not* affect field assignments. Accessing a tuple field\n before and after sorting will always return the same tuple element. However,\n this behavior is generally not true when accessing tuple elements according\n to tuple index. In summary, sorting affects index order but not field\n assignments.\n\n The comparison function is provided two tuple elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the tuple on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > p.sort();\n > p.orderedFields\n [ 'v', 'y', 'z', 'x', 'w' ]\n > p[ 0 ]\n -2.0\n > p.x\n 1.0\n > p[ 1 ]\n -1.0\n > p.y\n -1.0\n > p.key2ind( 'x' )\n 3\n\n\ntuple.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host tuple.\n\n If the method is unable to resolve indices to a non-empty tuple subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last tuple element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n arr: TypedArray\n A new typed array view.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > var arr = p.subarray( 2 )\n [ 0.0, 2.0, -2.0 ]\n > arr.length\n 3\n\n\ntuple.subtuple( [begin[, end]] )\n Creates a new named typed tuple over the same underlying ArrayBuffer and\n with the same underlying data type as the host tuple.\n\n If the function is unable to resolve indices to a non-empty tuple\n subsequence, the function returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last tuple element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray|null\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p1 = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > var p2 = p1.subtuple( 2 );\n > p2.fields\n [ 'z', 'w', 'v' ]\n > p2[ 0 ]\n 0.0\n > p2.z\n 0.0\n > p2[ 1 ]\n 2.0\n > p2.w\n 2.0\n > p2[ 2 ]\n -2.0\n > p2.v\n -2.0\n > p2.length\n 3\n\n\ntuple.toJSON()\n Serializes a tuple as JSON.\n\n Returns\n -------\n obj: Object\n A tuple JSON representation.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, -1.0, 0.0 ] );\n > p.toJSON()\n { 'x': 1.0, 'y': -1.0, 'z': 0.0 }\n\n\ntuple.toLocaleString( [locales[, options]] )\n Serializes a tuple as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, -1.0, 0.0 ], 'int32' );\n > p.toLocaleString()\n '1,-1,0'\n\n\ntuple.toString()\n Serializes a tuple as a string.\n\n Returns\n -------\n str: string\n A tuple string representation.\n\n Examples\n --------\n > opts = { 'name': 'Point' };\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ], opts );\n > var p = factory( [ 1.0, -1.0, 0.0 ] );\n > p.toString()\n 'Point(x=1, y=-1, z=0)'\n\n\ntuple.values()\n Returns an iterator for iterating over tuple elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over tuple elements.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > it = p.values();\n > it.next().value\n 1.0\n > it.next().value\n -1.0\n > it.next().done\n true\n\n See Also\n --------\n typedarray\n", + "namedtypedtuple": "\nnamedtypedtuple( fields[, options] )\n Returns a named typed tuple factory.\n\n Named tuples assign a property name, and thus a meaning, to each position in\n a tuple and allow for more readable, self-documenting code.\n\n Named typed tuples can be used wherever typed arrays are used, with the\n added benefit that they allow accessing fields by both field name and\n position index.\n\n Named typed tuples may be one the following data types:\n\n - float64: double-precision floating-point numbers (IEEE 754)\n - float32: single-precision floating-point numbers (IEEE 754)\n - int32: 32-bit two's complement signed integers\n - uint32: 32-bit unsigned integers\n - int16: 16-bit two's complement signed integers\n - uint16: 16-bit unsigned integers\n - int8: 8-bit two's complement signed integers\n - uint8: 8-bit unsigned integers\n - uint8c: 8-bit unsigned integers clamped to 0-255\n\n Parameters\n ----------\n fields: Array\n Field (property) names.\n\n options: Object (optional)\n Function options.\n\n options.dtype: string (optional)\n Default tuple data type. If a data type is not provided to a named typed\n tuple factory, this option specifies the underlying tuple data type.\n Default: 'float64'.\n\n options.name: string (optional)\n Tuple name. Default: 'tuple'.\n\n Returns\n -------\n factory: Function\n Named typed tuple factory.\n\n Examples\n --------\n > var opts = {};\n > opts.name = 'Point';\n > var factory = namedtypedtuple( [ 'x', 'y' ], opts );\n > var tuple = factory();\n\n\nfactory()\n Returns a named typed tuple of the default data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory();\n > p.x\n 0.0\n > p.y\n 0.0\n > p[ 0 ]\n 0.0\n > p[ 1 ]\n 0.0\n\n\nfactory( dtype )\n Returns a named typed tuple of the specified data type.\n\n Parameters\n ----------\n dtype: string\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory( 'int32' );\n > p.x\n 0\n > p.y\n 0\n > p[ 0 ]\n 0\n > p[ 1 ]\n 0\n\n\nfactory( typedarray[, dtype] )\n Creates a named typed tuple from a typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate a named typed tuple.\n\n dtype: string (optional)\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory( Float64Array[ 1.0, -1.0 ] );\n > p.x\n 1.0\n > p.y\n -1.0\n > p[ 0 ]\n 1.0\n > p[ 1 ]\n -1.0\n\n\nfactory( obj[, dtype] )\n Creates a named typed tuple from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a named typed\n tuple.\n\n dtype: string (optional)\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > p = factory( [ 1, -1 ], 'int32' );\n > p.x\n 1\n > p.y\n -1\n > p[ 0 ]\n 1\n > p[ 1 ]\n -1\n\n\nfactory( buffer[, byteOffset][, dtype] )\n Returns a named typed tuple view of an ArrayBuffer.\n\n The view length equals the number of tuple fields.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first tuple element.\n Default: 0.\n\n dtype: string (optional)\n Tuple data type.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var buf = new ArrayBuffer( 16 );\n > var p = factory( buf, 4, 'float32' );\n > p.x\n 0.0\n > p.y\n 0.0\n > p[ 0 ]\n 0.0\n > p[ 1 ]\n 0.0\n\n\nfactory.from( src[, map[, thisArg]] )\n Creates a new named typed tuple from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n - field: tuple field.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of tuple elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > function mapFcn( v ) { return v * 2.0; };\n > var p = factory.from( [ 1.0, -1.0 ], mapFcn );\n > p.x\n 2.0\n > p.y\n -2.0\n > p[ 0 ]\n 2.0\n > p[ 1 ]\n -2.0\n\n\nfactory.fromObject( obj[, map[, thisArg]] )\n Creates a new named typed tuple from an object containing tuple fields.\n\n A callback is provided the following arguments:\n\n - value: source object tuple field value.\n - field: source object tuple field name.\n\n Parameters\n ----------\n obj: Object\n Source object.\n\n map: Function (optional)\n Callback to invoke for each source object tuple field.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory.fromObject( { 'x': 2.0, 'y': -2.0 } );\n > p.x\n 2.0\n > p.y\n -2.0\n > p[ 0 ]\n 2.0\n > p[ 1 ]\n -2.0\n\n\nfactory.of( element0[, element1[, ...[, elementN]]] )\n Creates a new named typed tuple from a variable number of arguments.\n\n The number of arguments *must* equal the number of tuple fields.\n\n Parameters\n ----------\n element: number\n Tuple elements.\n\n Returns\n -------\n tuple: TypedArray\n Named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory.of( 2.0, -2.0 );\n > p.x\n 2.0\n > p.y\n -2.0\n > p[ 0 ]\n 2.0\n > p[ 1 ]\n -2.0\n\n\ntuple.BYTES_PER_ELEMENT\n Size (in bytes) of each tuple element.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.BYTES_PER_ELEMENT\n 8\n\n\ntuple.buffer\n Pointer to the underlying data buffer.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.buffer\n \n\n\ntuple.byteLength\n Length (in bytes) of the tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.byteLength\n 16\n\n\ntuple.byteOffset\n Offset (in bytes) of a tuple from the start of its underlying ArrayBuffer.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.byteOffset\n 0\n\n\ntuple.length\n Tuple length (i.e., number of elements).\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.length\n 2\n\n\ntuple.name\n Tuple name.\n\n Examples\n --------\n > var opts = { 'name': 'Point' };\n > var factory = namedtypedtuple( [ 'x', 'y' ], opts );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.name\n 'Point'\n\n\ntuple.fields\n Returns the list of tuple fields.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.fields\n [ 'x', 'y' ]\n\n\ntuple.orderedFields\n Returns the list of tuple fields in index order.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p[ 0 ]\n 1.0\n > p.sort();\n > p[ 0 ]\n -1.0\n > p.fields\n [ 'x', 'y' ]\n > p.orderedFields\n [ 'y', 'x' ]\n\n\ntuple.copyWithin( target, start[, end] )\n Copies a sequence of elements within the tuple starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] );\n > p.copyWithin( 3, 0, 2 );\n > p.w\n 2.0\n > p.v\n -2.0\n\n\ntuple.entries()\n Returns an iterator for iterating over tuple key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over tuple key-value pairs.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > it = p.entries();\n > it.next().value\n [ 0, 'x', 1.0 ]\n > it.next().value\n [ 1, 'y', -1.0 ]\n > it.next().done\n true\n\n\ntuple.every( predicate[, thisArg] )\n Tests whether all tuple elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements. If a predicate function\n returns a truthy value, a tuple element passes; otherwise, a tuple\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all tuple elements pass.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > p.every( predicate )\n false\n\n\ntuple.fieldOf( searchElement[, fromIndex] )\n Returns the field of the first tuple element strictly equal to a search\n element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `undefined`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: 0.\n\n Returns\n -------\n field: string|undefined\n Tuple field.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > var f = p.fieldOf( 2.0 )\n undefined\n > f = p.fieldOf( -1.0 )\n 'z'\n\n\ntuple.fill( value[, start[, end]] )\n Fills a tuple from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last tuple element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > p.fill( 2.0 );\n > p.x\n 2.0\n > p.y\n 2.0\n\n\ntuple.filter( predicate[, thisArg] )\n Creates a new tuple which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n The returned tuple has the same data type as the host tuple.\n\n If a predicate function does not return a truthy value for any tuple\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters tuple elements. If a predicate function\n returns a truthy value, a tuple element is included in the output tuple;\n otherwise, a tuple element is not included in the output tuple.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p1 = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v >= 0.0 ); };\n > var p2 = p1.filter( predicate );\n > p2.fields\n [ 'x', 'y' ]\n\n\ntuple.find( predicate[, thisArg] )\n Returns the first tuple element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Tuple element.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var v = p.find( predicate )\n -1.0\n\n\ntuple.findField( predicate[, thisArg] )\n Returns the field of the first tuple element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n field: string|undefined\n Tuple field.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var f = p.findField( predicate )\n 'z'\n\n\ntuple.findIndex( predicate[, thisArg] )\n Returns the index of the first tuple element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > var idx = p.findIndex( predicate )\n 2\n\n\ntuple.forEach( fcn[, thisArg] )\n Invokes a callback for each tuple element.\n\n A provided function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each tuple element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1, 0, -1 ], 'int32' );\n > var str = ' ';\n > function fcn( v, i, f ) { str += f + '=' + v + ' '; };\n > p.forEach( fcn );\n > str\n ' x=1 y=0 z=-1 '\n\n\ntuple.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether a tuple includes a search element.\n\n The method does not distinguish between signed and unsigned zero.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether a tuple includes a search element.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > var bool = p.includes( 2.0 )\n false\n > bool = p.includes( -1.0 )\n true\n\n\ntuple.indexOf( searchElement[, fromIndex] )\n Returns the index of the first tuple element strictly equal to a search\n element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > var idx = p.indexOf( 2.0 )\n -1\n > idx = p.indexOf( -1.0 )\n 2\n\n\ntuple.ind2key( ind )\n Converts a tuple index to a field name.\n\n If provided an out-of-bounds index, the method returns `undefined`.\n\n Parameters\n ----------\n ind: integer\n Tuple index. If less than zero, the method resolves the index relative\n to the last tuple element.\n\n Returns\n -------\n field: string|undefined\n Field name.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p.ind2key( 1 )\n 'y'\n > p.ind2key( 100 )\n undefined\n\n\ntuple.join( [separator] )\n Serializes a tuple by joining all tuple elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating tuple elements. Default: ','.\n\n Returns\n -------\n str: string\n Tuple serialized as a string.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1, 0, -1 ], 'int32' );\n > p.join( '|' )\n '1|0|-1'\n\n\ntuple.keys()\n Returns an iterator for iterating over tuple keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over tuple keys.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > it = p.keys();\n > it.next().value\n [ 0, 'x' ]\n > it.next().value\n [ 1, 'y' ]\n > it.next().done\n true\n\n\ntuple.key2ind( field )\n Converts a field name to a tuple index.\n\n If provided an unknown field name, the method returns `-1`.\n\n Parameters\n ----------\n field: string\n Tuple field name.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p.key2ind( 'y' )\n 1\n\n\ntuple.lastFieldOf( searchElement[, fromIndex] )\n Returns the field of the last tuple element strictly equal to a search\n element.\n\n The method iterates from the last tuple element to the first tuple element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `undefined`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: -1.\n\n Returns\n -------\n field: string|undefined\n Tuple field.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n > var f = p.lastFieldOf( 2.0 )\n undefined\n > f = p.lastFieldOf( 0.0 )\n 'w'\n\n\ntuple.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last tuple element strictly equal to a search\n element.\n\n The method iterates from the last tuple element to the first tuple element.\n\n The method does not distinguish between signed and unsigned zero.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Tuple index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last tuple element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n Tuple index.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n > var idx = p.lastIndexOf( 2.0 )\n -1\n > idx = p.lastIndexOf( 0.0 )\n 3\n\n\ntuple.map( fcn[, thisArg] )\n Maps each tuple element to an element in a new tuple.\n\n A provided function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n The returned tuple has the same data type as the host tuple.\n\n Parameters\n ----------\n fcn: Function\n Function which maps tuple elements to elements in the new tuple.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n tuple: TypedArray\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p1 = factory( [ 1.0, 0.0, -1.0 ] );\n > function fcn( v ) { return v * 2.0; };\n > var p2 = p1.map( fcn );\n > p2.x\n 2.0\n > p2.y\n 0.0\n > p2.z\n -2.0\n\n\ntuple.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in a tuple and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current tuple element.\n - index: index of the current tuple element.\n - field: field name corresponding to the current tuple element.\n - tuple: tuple on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first tuple element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first tuple element as the first argument and the second tuple\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = p.reduce( fcn, 0.0 )\n 2.0\n\n\ntuple.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in a tuple and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current tuple element.\n - index: index of the current tuple element.\n - field: field name corresponding to the current tuple element.\n - tuple: tuple on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last tuple element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last tuple element as the first argument and the second-to-last\n tuple element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = p.reduceRight( fcn, 0.0 )\n 2.0\n\n\ntuple.reverse()\n Reverses a tuple *in-place*.\n\n This method mutates the tuple on which the method is invoked.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p[ 0 ]\n 1.0\n > p.x\n 1.0\n > p.reverse();\n > p[ 0 ]\n -1.0\n > p.x\n 1.0\n\n\ntuple.set( arr[, offset] )\n Sets tuple elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing tuple values to set.\n\n offset: integer (optional)\n Tuple index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, 0.0, -1.0 ] );\n > p[ 1 ]\n 0.0\n > p.y\n 0.0\n > p.set( [ -2.0, 2.0 ], 1 );\n > p[ 1 ]\n -2.0\n > p.y\n -2.0\n > p[ 2 ]\n 2.0\n > p.z\n 2.0\n\n\ntuple.slice( [begin[, end]] )\n Copies tuple elements to a new tuple with the same underlying data type as\n the host tuple.\n\n If the method is unable to resolve indices to a non-empty tuple subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last tuple element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p1 = factory( [ 1.0, 0.0, -1.0 ] );\n > p1.fields\n [ 'x', 'y', 'z' ]\n > var p2 = p1.slice( 1 );\n > p2.fields\n [ 'y', 'z' ]\n > p2.y\n 0.0\n > p2.z\n -1.0\n\n\ntuple.some( predicate[, thisArg] )\n Tests whether at least one tuple element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: tuple element.\n - index: tuple index.\n - field: tuple field name.\n - tuple: tuple on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests tuple elements. If a predicate function\n returns a truthy value, a tuple element passes; otherwise, a tuple\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one tuple element passes.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > function predicate( v ) { return ( v < 0.0 ); };\n > p.some( predicate )\n true\n\n\ntuple.sort( [compareFunction] )\n Sorts a tuple *in-place*.\n\n Sorting a tuple does *not* affect field assignments. Accessing a tuple field\n before and after sorting will always return the same tuple element. However,\n this behavior is generally not true when accessing tuple elements according\n to tuple index. In summary, sorting affects index order but not field\n assignments.\n\n The comparison function is provided two tuple elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the tuple on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n tuple: TypedArray\n Modified tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > p.sort();\n > p.orderedFields\n [ 'v', 'y', 'z', 'x', 'w' ]\n > p[ 0 ]\n -2.0\n > p.x\n 1.0\n > p[ 1 ]\n -1.0\n > p.y\n -1.0\n > p.key2ind( 'x' )\n 3\n\n\ntuple.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host tuple.\n\n If the method is unable to resolve indices to a non-empty tuple subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last tuple element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n arr: TypedArray\n A new typed array view.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > var arr = p.subarray( 2 )\n [ 0.0, 2.0, -2.0 ]\n > arr.length\n 3\n\n\ntuple.subtuple( [begin[, end]] )\n Creates a new named typed tuple over the same underlying ArrayBuffer and\n with the same underlying data type as the host tuple.\n\n If the function is unable to resolve indices to a non-empty tuple\n subsequence, the function returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last tuple element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last tuple element. Default: tuple.length.\n\n Returns\n -------\n tuple: TypedArray|null\n A new named typed tuple.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n > var p1 = factory( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );\n > var p2 = p1.subtuple( 2 );\n > p2.fields\n [ 'z', 'w', 'v' ]\n > p2[ 0 ]\n 0.0\n > p2.z\n 0.0\n > p2[ 1 ]\n 2.0\n > p2.w\n 2.0\n > p2[ 2 ]\n -2.0\n > p2.v\n -2.0\n > p2.length\n 3\n\n\ntuple.toJSON()\n Serializes a tuple as JSON.\n\n Returns\n -------\n obj: Object\n A tuple JSON representation.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, -1.0, 0.0 ] );\n > p.toJSON()\n { 'x': 1.0, 'y': -1.0, 'z': 0.0 }\n\n\ntuple.toLocaleString( [locales[, options]] )\n Serializes a tuple as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n > var p = factory( [ 1.0, -1.0, 0.0 ], 'int32' );\n > p.toLocaleString()\n '1,-1,0'\n\n\ntuple.toString()\n Serializes a tuple as a string.\n\n Returns\n -------\n str: string\n A tuple string representation.\n\n Examples\n --------\n > opts = { 'name': 'Point' };\n > var factory = namedtypedtuple( [ 'x', 'y', 'z' ], opts );\n > var p = factory( [ 1.0, -1.0, 0.0 ] );\n > p.toString()\n 'Point(x=1, y=-1, z=0)'\n\n\ntuple.values()\n Returns an iterator for iterating over tuple elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over tuple elements.\n\n Examples\n --------\n > var factory = namedtypedtuple( [ 'x', 'y' ] );\n > var p = factory( [ 1.0, -1.0 ] );\n > it = p.values();\n > it.next().value\n 1.0\n > it.next().value\n -1.0\n > it.next().done\n true\n\n See Also\n --------\n typedarray\n", "nativeClass": "\nnativeClass( value )\n Returns a string value indicating a specification defined classification of\n an object.\n\n The function is *not* robust for ES2015+ environments. In ES2015+,\n `Symbol.toStringTag` allows overriding the default description of an object.\n While measures are taken to uncover the default description, such measures\n can be thwarted. While this function remains useful for type-checking, be\n aware that value impersonation is possible. Where possible, prefer functions\n tailored to checking for particular value types, as specialized functions\n are better equipped to address `Symbol.toStringTag`.\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n out: string\n String value indicating a specification defined classification of the\n input value.\n\n Examples\n --------\n > var str = nativeClass( 'a' )\n '[object String]'\n > str = nativeClass( 5 )\n '[object Number]'\n > function Beep(){};\n > str = nativeClass( new Beep() )\n '[object Object]'\n\n See Also\n --------\n constructorName, typeOf\n", "ndarray": "\nndarray( dtype, ndims[, options] )\n Returns an ndarray constructor.\n\n Parameters\n ----------\n dtype: string\n Underlying data type.\n\n ndims: integer\n Number of dimensions.\n\n options: Object (optional)\n Options.\n\n options.codegen: boolean (optional)\n Boolean indicating whether to use code generation. Code generation can\n boost performance, but may be problematic in browser contexts enforcing\n a strict content security policy (CSP). Default: true.\n\n options.mode: string (optional)\n Specifies how to handle indices which exceed array dimensions. If equal\n to 'throw', an ndarray instance throws an error when an index exceeds\n array dimensions. If equal to 'wrap', an ndarray instance wraps around\n indices exceeding array dimensions using modulo arithmetic. If equal to\n 'clamp', an ndarray instance sets an index exceeding array dimensions to\n either `0` (minimum index) or the maximum index. Default: 'throw'.\n\n options.submode: Array (optional)\n Specifies how to handle subscripts which exceed array dimensions. If a\n mode for a corresponding dimension is equal to 'throw', an ndarray\n instance throws an error when a subscript exceeds array dimensions. If\n equal to 'wrap', an ndarray instance wraps around subscripts exceeding\n array dimensions using modulo arithmetic. If equal to 'clamp', an\n ndarray instance sets a subscript exceeding array dimensions to either\n `0` (minimum index) or the maximum index. If the number of modes is\n fewer than the number of dimensions, the function recycles modes using\n modulo arithmetic. Default: [ options.mode ].\n\n Returns\n -------\n ctor: Function\n ndarray constructor.\n\n ctor.BYTES_PER_ELEMENT: integer\n Size (in bytes) of each array element (if known).\n\n ctor.dtype: string\n Underlying data type.\n\n ctor.ndims: integer\n Number of dimensions.\n\n ctor.prototype.byteLength: integer\n Size (in bytes) of the array (if known).\n\n ctor.prototype.BYTES_PER_ELEMENT: integer\n Size (in bytes) of each array element (if known).\n\n ctor.prototype.data: ArrayLikeObject|TypedArray|Buffer\n Pointer to the underlying data buffer.\n\n ctor.prototype.dtype: string\n Underlying data type.\n\n ctor.prototype.flags: Object\n Information about the memory layout of the array.\n\n ctor.prototype.length: integer\n Length of the array (i.e., number of elements).\n\n ctor.prototype.ndims: integer\n Number of dimensions.\n\n ctor.prototype.offset: integer\n Index offset which specifies the buffer index at which to start\n iterating over array elements.\n\n ctor.prototype.order: string\n Array order. The array order is either row-major (C-style) or column-\n major (Fortran-style).\n\n ctor.prototype.shape: Array\n Array shape.\n\n ctor.prototype.strides: Array\n Index strides which specify how to access data along corresponding array\n dimensions.\n\n ctor.prototype.get: Function\n Returns an array element specified according to provided subscripts. The\n number of provided subscripts should equal the number of dimensions.\n\n ctor.prototype.iget: Function\n Returns an array element located at a specified linear index.\n\n ctor.prototype.set: Function\n Sets an array element specified according to provided subscripts. The\n number of provided subscripts should equal the number of dimensions.\n\n ctor.prototype.iset: Function\n Sets an array element located at a specified linear index.\n\n ctor.prototype.toString: Function\n Serializes an ndarray as a string. This method does **not** serialize\n data outside of the buffer region defined by the array configuration.\n\n ctor.prototype.toJSON: Function\n Serializes an ndarray as a JSON object. This method does **not**\n serialize data outside of the buffer region defined by the array\n configuration.\n\n Examples\n --------\n > var ctor = ndarray( 'generic', 2 )\n \n\n // To create a new instance...\n > var b = [ 1.0, 2.0, 3.0, 4.0 ]; // underlying data buffer\n > var d = [ 2, 2 ]; // shape\n > var s = [ 2, 1 ]; // strides\n > var o = 0; // index offset\n > var arr = ctor( b, d, s, o, 'row-major' )\n \n\n // Get an element using subscripts:\n > var v = arr.get( 1, 1 )\n 4.0\n\n // Get an element using a linear index:\n > v = arr.iget( 3 )\n 4.0\n\n // Set an element using subscripts:\n > arr.set( 1, 1, 40.0 );\n > arr.get( 1, 1 )\n 40.0\n\n // Set an element using a linear index:\n > arr.iset( 3, 99.0 );\n > arr.get( 1, 1 )\n 99.0\n\n See Also\n --------\n array\n", "ndarrayCastingModes": "\nndarrayCastingModes()\n Returns a list of ndarray casting modes.\n\n The output array contains the following modes:\n\n - 'none': only allow casting between identical types\n - 'equiv': allow casting between identical and byte swapped types\n - 'safe': only allow \"safe\" casts\n - 'same-kind': allow \"safe\" casts and casts within the same kind (e.g.,\n between signed integers or between floats)\n - 'unsafe': allow casting between all types (including between integers and\n floats)\n\n Returns\n -------\n out: Array\n List of ndarray casting modes.\n\n Examples\n --------\n > var out = ndarrayCastingModes()\n [ 'none', 'equiv', 'safe', 'same-kind', 'unsafe' ]\n\n See Also\n --------\n array, ndarray\n", @@ -1629,14 +1629,14 @@ var db = { "typeOf": "\ntypeOf( value )\n Determines a value's type.\n\n The following values are not natively provided in older JavaScript engines:\n\n - Map\n - Set\n - WeakMap\n - WeakSet\n - Symbol\n\n Parameters\n ----------\n value: any\n Input value.\n\n Returns\n -------\n out: string\n The value's type.\n\n Examples\n --------\n // Built-ins:\n > var t = typeOf( 'a' )\n 'string'\n > t = typeOf( 5 )\n 'number'\n > t = typeOf( NaN )\n 'number'\n > t = typeOf( true )\n 'boolean'\n > t = typeOf( false )\n 'boolean'\n > t = typeOf( null )\n 'null'\n > t = typeOf( undefined )\n 'undefined'\n > t = typeOf( [] )\n 'array'\n > t = typeOf( {} )\n 'object'\n > t = typeOf( function noop() {} )\n 'function'\n > t = typeOf( Symbol( 'beep' ) )\n 'symbol'\n > t = typeOf( /.+/ )\n 'regexp'\n > t = typeOf( new String( 'beep' ) )\n 'string'\n > t = typeOf( new Number( 5 ) )\n 'number'\n > t = typeOf( new Boolean( false ) )\n 'boolean'\n > t = typeOf( new Array() )\n 'array'\n > t = typeOf( new Object() )\n 'object'\n > t = typeOf( new Int8Array( 10 ) )\n 'int8array'\n > t = typeOf( new Uint8Array( 10 ) )\n 'uint8array'\n > t = typeOf( new Uint8ClampedArray( 10 ) )\n 'uint8clampedarray'\n > t = typeOf( new Int16Array( 10 ) )\n 'int16array'\n > t = typeOf( new Uint16Array( 10 ) )\n 'uint16array'\n > t = typeOf( new Int32Array( 10 ) )\n 'int32array'\n > t = typeOf( new Uint32Array( 10 ) )\n 'uint32array'\n > t = typeOf( new Float32Array( 10 ) )\n 'float32array'\n > t = typeOf( new Float64Array( 10 ) )\n 'float64array'\n > t = typeOf( new ArrayBuffer( 10 ) )\n 'arraybuffer'\n > t = typeOf( new Date() )\n 'date'\n > t = typeOf( new RegExp( '.+' ) )\n 'regexp'\n > t = typeOf( new Map() )\n 'map'\n > t = typeOf( new Set() )\n 'set'\n > t = typeOf( new WeakMap() )\n 'weakmap'\n > t = typeOf( new WeakSet() )\n 'weakset'\n > t = typeOf( new Error( 'beep' ) )\n 'error'\n > t = typeOf( new TypeError( 'beep' ) )\n 'typeerror'\n > t = typeOf( new SyntaxError( 'beep' ) )\n 'syntaxerror'\n > t = typeOf( new ReferenceError( 'beep' ) )\n 'referenceerror'\n > t = typeOf( new URIError( 'beep' ) )\n 'urierror'\n > t = typeOf( new RangeError( 'beep' ) )\n 'rangeerror'\n > t = typeOf( new EvalError( 'beep' ) )\n 'evalerror'\n > t = typeOf( Math )\n 'math'\n > t = typeOf( JSON )\n 'json'\n\n // Arguments object:\n > function beep() { return arguments; };\n > t = typeOf( beep() )\n 'arguments'\n\n // Node.js Buffer object:\n > t = typeOf( new Buffer( 10 ) )\n 'buffer'\n\n // Custom constructor:\n > function Person() { return this };\n > t = typeOf( new Person() )\n 'person'\n\n // Anonymous constructor:\n > var Foo = function () { return this; };\n > t = typeOf( new Foo() )\n '' || 'foo'\n\n See Also\n --------\n constructorName, nativeClass\n", "UINT8_MAX": "\nUINT8_MAX\n Maximum unsigned 8-bit integer.\n\n The maximum unsigned 8-bit integer is given by `2^8 - 1`.\n\n Examples\n --------\n > UINT8_MAX\n 255\n\n See Also\n --------\n INT8_MAX\n", "UINT8_NUM_BYTES": "\nUINT8_NUM_BYTES\n Size (in bytes) of an 8-bit unsigned integer.\n\n Examples\n --------\n > UINT8_NUM_BYTES\n 1\n\n See Also\n --------\n INT8_NUM_BYTES, UINT16_NUM_BYTES, UINT32_NUM_BYTES\n", - "Uint8Array": "\nUint8Array()\n A typed array constructor which returns a typed array representing an array\n of 8-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8Array()\n \n\n\nUint8Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint8Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Uint8Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint8Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Uint8Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nUint8Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr = Uint8Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nUint8Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint8Array.BYTES_PER_ELEMENT\n 1\n\n\nUint8Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint8Array.name\n 'Uint8Array'\n\n\nUint8Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.buffer\n \n\n\nUint8Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.byteLength\n 5\n\n\nUint8Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint8Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 1\n\n\nUint8Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8ClampedArray\n", - "Uint8ClampedArray": "\nUint8ClampedArray()\n A typed array constructor which returns a typed array representing an array\n of 8-bit unsigned integers in the platform byte order clamped to 0-255.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray()\n \n\n\nUint8ClampedArray( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint8ClampedArray( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint8ClampedArray( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8ClampedArray( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint8ClampedArray( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8ClampedArray( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Uint8ClampedArray( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint8ClampedArray.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Uint8ClampedArray.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nUint8ClampedArray.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr = Uint8ClampedArray.of( 1, 2 )\n [ 1, 2 ]\n\n\nUint8ClampedArray.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint8ClampedArray.BYTES_PER_ELEMENT\n 1\n\n\nUint8ClampedArray.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint8ClampedArray.name\n 'Uint8ClampedArray'\n\n\nUint8ClampedArray.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.buffer\n \n\n\nUint8ClampedArray.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.byteLength\n 5\n\n\nUint8ClampedArray.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.byteOffset\n 0\n\n\nUint8ClampedArray.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.BYTES_PER_ELEMENT\n 1\n\n\nUint8ClampedArray.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array\n", + "Uint8Array": "\nUint8Array()\n A typed array constructor which returns a typed array representing an array\n of 8-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8Array()\n \n\n\nUint8Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint8Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint8Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Uint8Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint8Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Uint8Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nUint8Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr = Uint8Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nUint8Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint8Array.BYTES_PER_ELEMENT\n 1\n\n\nUint8Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint8Array.name\n 'Uint8Array'\n\n\nUint8Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.buffer\n \n\n\nUint8Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.byteLength\n 5\n\n\nUint8Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint8Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 1\n\n\nUint8Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint8Array( 5 );\n > arr.length\n 5\n\n\nUint8Array.prototype.copyWithin( target, start[, end] )\n Copies a sequence of elements within the array starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: out.length.\n\n Returns\n -------\n out: Uint8Array\n Modified array.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2, 3, 4, 5 ] );\n > arr.copyWithin( 3, 0, 2 );\n > arr[ 3 ]\n 1\n > arr[ 4 ]\n 2\n\n\nUint8Array.prototype.entries()\n Returns an iterator for iterating over array key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array key-value pairs.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2 ] );\n > it = arr.entries();\n > it.next().value\n [ 0, 1 ]\n > it.next().value\n [ 1, 2 ]\n > it.next().done\n true\n\n\nUint8Array.prototype.every( predicate[, thisArg] )\n Tests whether all array elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, an array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all array elements pass.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2 ] );\n > function predicate( v ) { return ( v <= 1 ); };\n > arr.every( predicate )\n false\n\n\nUint8Array.prototype.fill( value[, start[, end]] )\n Fills an array from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last array element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last array element. Default: out.length.\n\n Returns\n -------\n out: Uint8Array\n Modified array.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2 ] );\n > arr.fill( 3 );\n > arr[ 0 ]\n 3\n > arr[ 1 ]\n 3\n\n\nUint8Array.prototype.filter( predicate[, thisArg] )\n Creates a new array which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n If a predicate function does not return a truthy value for any array\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters array elements. If a predicate function\n returns a truthy value, an array element is included in the output\n array; otherwise, an array element is not included in the output array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Uint8Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 1 ); };\n > var arr2 = arr1.filter( predicate );\n > arr2.length\n 2\n\n\nUint8Array.prototype.find( predicate[, thisArg] )\n Returns the first array element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Array element.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 2 ); };\n > var v = arr.find( predicate )\n 3\n\n\nUint8Array.prototype.findIndex( predicate[, thisArg] )\n Returns the index of the first array element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 2 ); };\n > var idx = arr.findIndex( predicate )\n 2\n\n\nUint8Array.prototype.forEach( fcn[, thisArg] )\n Invokes a callback for each array element.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each array element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 3, 2, 1 ] );\n > var str = ' ';\n > function fcn( v, i ) { str += i + ':' + v + ' '; };\n > arr.forEach( fcn );\n > str\n ' 0:3 1:2 2:1 '\n\n\nUint8Array.prototype.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether an array includes a search element.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether an array includes a search element.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2, 3 ] );\n > var bool = arr.includes( 4 )\n false\n > bool = arr.includes( 3 )\n true\n\n\nUint8Array.prototype.indexOf( searchElement[, fromIndex] )\n Returns the index of the first array element strictly equal to a search\n element.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2, 3 ] );\n > var idx = arr.indexOf( 4 )\n -1\n > idx = arr.indexOf( 3 )\n 2\n\n\nUint8Array.prototype.join( [separator] )\n Serializes an array by joining all array elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating array elements. Default: ','.\n\n Returns\n -------\n str: string\n Array serialized as a string.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2, 3 ] );\n > arr.join( '|' )\n '1|2|3'\n\n\nUint8Array.prototype.keys()\n Returns an iterator for iterating over array keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array keys.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2 ] );\n > it = arr.keys();\n > it.next().value\n 0\n > it.next().value\n 1\n > it.next().done\n true\n\n\nUint8Array.prototype.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last array element strictly equal to a search\n element.\n\n The method iterates from the last array element to the first array element.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n array index.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 0, 2, 0, 1 ] );\n > var idx = arr.lastIndexOf( 3 )\n -1\n > idx = arr.lastIndexOf( 0 )\n 3\n\n\nUint8Array.prototype.map( fcn[, thisArg] )\n Maps each array element to an element in a new typed array.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n Parameters\n ----------\n fcn: Function\n Function which maps array elements to elements in the new array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Uint8Array( [ 1, 2, 3 ] );\n > function fcn( v ) { return v * 2; };\n > var arr2 = arr1.map( fcn );\n [ 2, 4, 6 ]\n\n\nUint8Array.prototype.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first array element as the first argument and the second array\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2, 3 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduce( fcn, 0 )\n 14\n\n\nUint8Array.prototype.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last array element as the first argument and the second-to-last\n array element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2, 3 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduceRight( fcn, 0 )\n 14\n\n\nUint8Array.prototype.reverse()\n Reverses an array *in-place*.\n\n This method mutates the array on which the method is invoked.\n\n Returns\n -------\n out: Uint8Array\n Modified array.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2, 3 ] )\n [ 1, 2, 3 ]\n > arr.reverse()\n [ 3, 2, 1 ]\n\n\nUint8Array.prototype.set( arr[, offset] )\n Sets array elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing array values to set.\n\n offset: integer (optional)\n Array index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2, 3 ] );\n > arr.set( [ 4, 4 ], 1 );\n > arr[ 1 ]\n 4\n > arr[ 2 ]\n 4\n\n\nUint8Array.prototype.slice( [begin[, end]] )\n Copies array elements to a new array with the same underlying data type as\n the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Uint8Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Uint8Array( [ 1, 2, 3 ] );\n > var arr2 = arr1.slice( 1 );\n > arr2.length\n 2\n > arr2[ 0 ]\n 1\n > arr2[ 1 ]\n 2\n\n\nUint8Array.prototype.some( predicate[, thisArg] )\n Tests whether at least one array element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, a array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one array element passes.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2 ] );\n > function predicate( v ) { return ( v > 1 ); };\n > arr.some( predicate )\n true\n\n\nUint8Array.prototype.sort( [compareFunction] )\n Sorts an array *in-place*.\n\n The comparison function is provided two array elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the array on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n out: Uint8Array\n Modified array.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2, 0, 2, 1 ] );\n > arr.sort()\n [ 0, 1, 1, 2, 2 ]\n\n\nUint8Array.prototype.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Uint8Array\n A new typed array view.\n\n Examples\n --------\n > var arr1 = new Uint8Array( [ 1, 2, 3, 4, 5 ] );\n > var arr2 = arr1.subarray( 2 )\n [ 3, 4, 5 ]\n\n\nUint8Array.prototype.toLocaleString( [locales[, options]] )\n Serializes an array as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2, 3 ] );\n > arr.toLocaleString()\n '1,2,3'\n\n\nUint8Array.prototype.toString()\n Serializes an array as a string.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2, 3 ] );\n > arr.toString()\n '1,2,3'\n\n\nUint8Array.prototype.values()\n Returns an iterator for iterating over array elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array elements.\n\n Examples\n --------\n > var arr = new Uint8Array( [ 1, 2 ] );\n > it = arr.values();\n > it.next().value\n 1\n > it.next().value\n 2\n > it.next().done\n true\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8ClampedArray\n", + "Uint8ClampedArray": "\nUint8ClampedArray()\n A typed array constructor which returns a typed array representing an array\n of 8-bit unsigned integers in the platform byte order clamped to 0-255.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray()\n \n\n\nUint8ClampedArray( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint8ClampedArray( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint8ClampedArray( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8ClampedArray( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint8ClampedArray( arr1 )\n [ 5, 5, 5 ]\n\n\nUint8ClampedArray( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 4 );\n > var arr = new Uint8ClampedArray( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint8ClampedArray.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Uint8ClampedArray.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nUint8ClampedArray.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr = Uint8ClampedArray.of( 1, 2 )\n [ 1, 2 ]\n\n\nUint8ClampedArray.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint8ClampedArray.BYTES_PER_ELEMENT\n 1\n\n\nUint8ClampedArray.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint8ClampedArray.name\n 'Uint8ClampedArray'\n\n\nUint8ClampedArray.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.buffer\n \n\n\nUint8ClampedArray.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.byteLength\n 5\n\n\nUint8ClampedArray.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.byteOffset\n 0\n\n\nUint8ClampedArray.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.BYTES_PER_ELEMENT\n 1\n\n\nUint8ClampedArray.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( 5 );\n > arr.length\n 5\n\n\nUint8ClampedArray.prototype.copyWithin( target, start[, end] )\n Copies a sequence of elements within the array starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: out.length.\n\n Returns\n -------\n out: Uint8ClampedArray\n Modified array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2, 3, 4, 5 ] );\n > arr.copyWithin( 3, 0, 2 );\n > arr[ 3 ]\n 1\n > arr[ 4 ]\n 2\n\n\nUint8ClampedArray.prototype.entries()\n Returns an iterator for iterating over array key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array key-value pairs.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2 ] );\n > it = arr.entries();\n > it.next().value\n [ 0, 1 ]\n > it.next().value\n [ 1, 2 ]\n > it.next().done\n true\n\n\nUint8ClampedArray.prototype.every( predicate[, thisArg] )\n Tests whether all array elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, an array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all array elements pass.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2 ] );\n > function predicate( v ) { return ( v <= 1 ); };\n > arr.every( predicate )\n false\n\n\nUint8ClampedArray.prototype.fill( value[, start[, end]] )\n Fills an array from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last array element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last array element. Default: out.length.\n\n Returns\n -------\n out: Uint8ClampedArray\n Modified array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2 ] );\n > arr.fill( 3 );\n > arr[ 0 ]\n 3\n > arr[ 1 ]\n 3\n\n\nUint8ClampedArray.prototype.filter( predicate[, thisArg] )\n Creates a new array which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n If a predicate function does not return a truthy value for any array\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters array elements. If a predicate function\n returns a truthy value, an array element is included in the output\n array; otherwise, an array element is not included in the output array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr1 = new Uint8ClampedArray( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 1 ); };\n > var arr2 = arr1.filter( predicate );\n > arr2.length\n 2\n\n\nUint8ClampedArray.prototype.find( predicate[, thisArg] )\n Returns the first array element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Array element.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 2 ); };\n > var v = arr.find( predicate )\n 3\n\n\nUint8ClampedArray.prototype.findIndex( predicate[, thisArg] )\n Returns the index of the first array element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 2 ); };\n > var idx = arr.findIndex( predicate )\n 2\n\n\nUint8ClampedArray.prototype.forEach( fcn[, thisArg] )\n Invokes a callback for each array element.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each array element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 3, 2, 1 ] );\n > var str = ' ';\n > function fcn( v, i ) { str += i + ':' + v + ' '; };\n > arr.forEach( fcn );\n > str\n ' 0:3 1:2 2:1 '\n\n\nUint8ClampedArray.prototype.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether an array includes a search element.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether an array includes a search element.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2, 3 ] );\n > var bool = arr.includes( 4 )\n false\n > bool = arr.includes( 3 )\n true\n\n\nUint8ClampedArray.prototype.indexOf( searchElement[, fromIndex] )\n Returns the index of the first array element strictly equal to a search\n element.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2, 3 ] );\n > var idx = arr.indexOf( 4 )\n -1\n > idx = arr.indexOf( 3 )\n 2\n\n\nUint8ClampedArray.prototype.join( [separator] )\n Serializes an array by joining all array elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating array elements. Default: ','.\n\n Returns\n -------\n str: string\n Array serialized as a string.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2, 3 ] );\n > arr.join( '|' )\n '1|2|3'\n\n\nUint8ClampedArray.prototype.keys()\n Returns an iterator for iterating over array keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array keys.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2 ] );\n > it = arr.keys();\n > it.next().value\n 0\n > it.next().value\n 1\n > it.next().done\n true\n\n\nUint8ClampedArray.prototype.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last array element strictly equal to a search\n element.\n\n The method iterates from the last array element to the first array element.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n array index.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 0, 2, 0, 1 ] );\n > var idx = arr.lastIndexOf( 3 )\n -1\n > idx = arr.lastIndexOf( 0 )\n 3\n\n\nUint8ClampedArray.prototype.map( fcn[, thisArg] )\n Maps each array element to an element in a new typed array.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n Parameters\n ----------\n fcn: Function\n Function which maps array elements to elements in the new array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr1 = new Uint8ClampedArray( [ 1, 2, 3 ] );\n > function fcn( v ) { return v * 2; };\n > var arr2 = arr1.map( fcn );\n [ 2, 4, 6 ]\n\n\nUint8ClampedArray.prototype.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first array element as the first argument and the second array\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2, 3 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduce( fcn, 0 )\n 14\n\n\nUint8ClampedArray.prototype.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last array element as the first argument and the second-to-last\n array element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2, 3 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduceRight( fcn, 0 )\n 14\n\n\nUint8ClampedArray.prototype.reverse()\n Reverses an array *in-place*.\n\n This method mutates the array on which the method is invoked.\n\n Returns\n -------\n out: Uint8ClampedArray\n Modified array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2, 3 ] )\n [ 1, 2, 3 ]\n > arr.reverse()\n [ 3, 2, 1 ]\n\n\nUint8ClampedArray.prototype.set( arr[, offset] )\n Sets array elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing array values to set.\n\n offset: integer (optional)\n Array index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2, 3 ] );\n > arr.set( [ 4, 4 ], 1 );\n > arr[ 1 ]\n 4\n > arr[ 2 ]\n 4\n\n\nUint8ClampedArray.prototype.slice( [begin[, end]] )\n Copies array elements to a new array with the same underlying data type as\n the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Uint8ClampedArray\n A typed array.\n\n Examples\n --------\n > var arr1 = new Uint8ClampedArray( [ 1, 2, 3 ] );\n > var arr2 = arr1.slice( 1 );\n > arr2.length\n 2\n > arr2[ 0 ]\n 1\n > arr2[ 1 ]\n 2\n\n\nUint8ClampedArray.prototype.some( predicate[, thisArg] )\n Tests whether at least one array element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, a array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one array element passes.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2 ] );\n > function predicate( v ) { return ( v > 1 ); };\n > arr.some( predicate )\n true\n\n\nUint8ClampedArray.prototype.sort( [compareFunction] )\n Sorts an array *in-place*.\n\n The comparison function is provided two array elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the array on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n out: Uint8ClampedArray\n Modified array.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2, 0, 2, 1 ] );\n > arr.sort()\n [ 0, 1, 1, 2, 2 ]\n\n\nUint8ClampedArray.prototype.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Uint8ClampedArray\n A new typed array view.\n\n Examples\n --------\n > var arr1 = new Uint8ClampedArray( [ 1, 2, 3, 4, 5 ] );\n > var arr2 = arr1.subarray( 2 )\n [ 3, 4, 5 ]\n\n\nUint8ClampedArray.prototype.toLocaleString( [locales[, options]] )\n Serializes an array as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2, 3 ] );\n > arr.toLocaleString()\n '1,2,3'\n\n\nUint8ClampedArray.prototype.toString()\n Serializes an array as a string.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2, 3 ] );\n > arr.toString()\n '1,2,3'\n\n\nUint8ClampedArray.prototype.values()\n Returns an iterator for iterating over array elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array elements.\n\n Examples\n --------\n > var arr = new Uint8ClampedArray( [ 1, 2 ] );\n > it = arr.values();\n > it.next().value\n 1\n > it.next().value\n 2\n > it.next().done\n true\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array\n", "UINT16_MAX": "\nUINT16_MAX\n Maximum unsigned 16-bit integer.\n\n The maximum unsigned 16-bit integer is given by `2^16 - 1`.\n\n Examples\n --------\n > UINT16_MAX\n 65535\n\n See Also\n --------\n INT16_MAX\n", "UINT16_NUM_BYTES": "\nUINT16_NUM_BYTES\n Size (in bytes) of a 16-bit unsigned integer.\n\n Examples\n --------\n > UINT16_NUM_BYTES\n 2\n\n See Also\n --------\n INT16_NUM_BYTES, UINT32_NUM_BYTES, UINT8_NUM_BYTES\n", - "Uint16Array": "\nUint16Array()\n A typed array constructor which returns a typed array representing an array\n of 16-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint16Array()\n \n\n\nUint16Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint16Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint16Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint16Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 8 );\n > var arr = new Uint16Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint16Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Uint16Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nUint16Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr = Uint16Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nUint16Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint16Array.BYTES_PER_ELEMENT\n 2\n\n\nUint16Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint16Array.name\n 'Uint16Array'\n\n\nUint16Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.buffer\n \n\n\nUint16Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.byteLength\n 10\n\n\nUint16Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint16Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 2\n\n\nUint16Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", + "Uint16Array": "\nUint16Array()\n A typed array constructor which returns a typed array representing an array\n of 16-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint16Array()\n \n\n\nUint16Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint16Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint16Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint16Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint16Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 8 );\n > var arr = new Uint16Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint16Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Uint16Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nUint16Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr = Uint16Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nUint16Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint16Array.BYTES_PER_ELEMENT\n 2\n\n\nUint16Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint16Array.name\n 'Uint16Array'\n\n\nUint16Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.buffer\n \n\n\nUint16Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.byteLength\n 10\n\n\nUint16Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint16Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 2\n\n\nUint16Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint16Array( 5 );\n > arr.length\n 5\n\n\nUint16Array.prototype.copyWithin( target, start[, end] )\n Copies a sequence of elements within the array starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: out.length.\n\n Returns\n -------\n out: Uint16Array\n Modified array.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2, 3, 4, 5 ] );\n > arr.copyWithin( 3, 0, 2 );\n > arr[ 3 ]\n 1\n > arr[ 4 ]\n 2\n\n\nUint16Array.prototype.entries()\n Returns an iterator for iterating over array key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array key-value pairs.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2 ] );\n > it = arr.entries();\n > it.next().value\n [ 0, 1 ]\n > it.next().value\n [ 1, 2 ]\n > it.next().done\n true\n\n\nUint16Array.prototype.every( predicate[, thisArg] )\n Tests whether all array elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, an array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all array elements pass.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2 ] );\n > function predicate( v ) { return ( v <= 1 ); };\n > arr.every( predicate )\n false\n\n\nUint16Array.prototype.fill( value[, start[, end]] )\n Fills an array from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last array element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last array element. Default: out.length.\n\n Returns\n -------\n out: Uint16Array\n Modified array.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2 ] );\n > arr.fill( 3 );\n > arr[ 0 ]\n 3\n > arr[ 1 ]\n 3\n\n\nUint16Array.prototype.filter( predicate[, thisArg] )\n Creates a new array which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n If a predicate function does not return a truthy value for any array\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters array elements. If a predicate function\n returns a truthy value, an array element is included in the output\n array; otherwise, an array element is not included in the output array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Uint16Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 1 ); };\n > var arr2 = arr1.filter( predicate );\n > arr2.length\n 2\n\n\nUint16Array.prototype.find( predicate[, thisArg] )\n Returns the first array element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Array element.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 2 ); };\n > var v = arr.find( predicate )\n 3\n\n\nUint16Array.prototype.findIndex( predicate[, thisArg] )\n Returns the index of the first array element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 2 ); };\n > var idx = arr.findIndex( predicate )\n 2\n\n\nUint16Array.prototype.forEach( fcn[, thisArg] )\n Invokes a callback for each array element.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each array element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 3, 2, 1 ] );\n > var str = ' ';\n > function fcn( v, i ) { str += i + ':' + v + ' '; };\n > arr.forEach( fcn );\n > str\n ' 0:3 1:2 2:1 '\n\n\nUint16Array.prototype.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether an array includes a search element.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether an array includes a search element.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2, 3 ] );\n > var bool = arr.includes( 4 )\n false\n > bool = arr.includes( 3 )\n true\n\n\nUint16Array.prototype.indexOf( searchElement[, fromIndex] )\n Returns the index of the first array element strictly equal to a search\n element.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2, 3 ] );\n > var idx = arr.indexOf( 4 )\n -1\n > idx = arr.indexOf( 3 )\n 2\n\n\nUint16Array.prototype.join( [separator] )\n Serializes an array by joining all array elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating array elements. Default: ','.\n\n Returns\n -------\n str: string\n Array serialized as a string.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2, 3 ] );\n > arr.join( '|' )\n '1|2|3'\n\n\nUint16Array.prototype.keys()\n Returns an iterator for iterating over array keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array keys.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2 ] );\n > it = arr.keys();\n > it.next().value\n 0\n > it.next().value\n 1\n > it.next().done\n true\n\n\nUint16Array.prototype.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last array element strictly equal to a search\n element.\n\n The method iterates from the last array element to the first array element.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n array index.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 0, 2, 0, 1 ] );\n > var idx = arr.lastIndexOf( 3 )\n -1\n > idx = arr.lastIndexOf( 0 )\n 3\n\n\nUint16Array.prototype.map( fcn[, thisArg] )\n Maps each array element to an element in a new typed array.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n Parameters\n ----------\n fcn: Function\n Function which maps array elements to elements in the new array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Uint16Array( [ 1, 2, 3 ] );\n > function fcn( v ) { return v * 2; };\n > var arr2 = arr1.map( fcn );\n [ 2, 4, 6 ]\n\n\nUint16Array.prototype.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first array element as the first argument and the second array\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2, 3 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduce( fcn, 0 )\n 14\n\n\nUint16Array.prototype.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last array element as the first argument and the second-to-last\n array element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2, 3 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduceRight( fcn, 0 )\n 14\n\n\nUint16Array.prototype.reverse()\n Reverses an array *in-place*.\n\n This method mutates the array on which the method is invoked.\n\n Returns\n -------\n out: Uint16Array\n Modified array.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2, 3 ] )\n [ 1, 2, 3 ]\n > arr.reverse()\n [ 3, 2, 1 ]\n\n\nUint16Array.prototype.set( arr[, offset] )\n Sets array elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing array values to set.\n\n offset: integer (optional)\n Array index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2, 3 ] );\n > arr.set( [ 4, 4 ], 1 );\n > arr[ 1 ]\n 4\n > arr[ 2 ]\n 4\n\n\nUint16Array.prototype.slice( [begin[, end]] )\n Copies array elements to a new array with the same underlying data type as\n the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Uint16Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Uint16Array( [ 1, 2, 3 ] );\n > var arr2 = arr1.slice( 1 );\n > arr2.length\n 2\n > arr2[ 0 ]\n 1\n > arr2[ 1 ]\n 2\n\n\nUint16Array.prototype.some( predicate[, thisArg] )\n Tests whether at least one array element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, a array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one array element passes.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2 ] );\n > function predicate( v ) { return ( v > 1 ); };\n > arr.some( predicate )\n true\n\n\nUint16Array.prototype.sort( [compareFunction] )\n Sorts an array *in-place*.\n\n The comparison function is provided two array elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the array on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n out: Uint16Array\n Modified array.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2, 0, 2, 1 ] );\n > arr.sort()\n [ 0, 1, 1, 2, 2 ]\n\n\nUint16Array.prototype.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Uint16Array\n A new typed array view.\n\n Examples\n --------\n > var arr1 = new Uint16Array( [ 1, 2, 3, 4, 5 ] );\n > var arr2 = arr1.subarray( 2 )\n [ 3, 4, 5 ]\n\n\nUint16Array.prototype.toLocaleString( [locales[, options]] )\n Serializes an array as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2, 3 ] );\n > arr.toLocaleString()\n '1,2,3'\n\n\nUint16Array.prototype.toString()\n Serializes an array as a string.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2, 3 ] );\n > arr.toString()\n '1,2,3'\n\n\nUint16Array.prototype.values()\n Returns an iterator for iterating over array elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array elements.\n\n Examples\n --------\n > var arr = new Uint16Array( [ 1, 2 ] );\n > it = arr.values();\n > it.next().value\n 1\n > it.next().value\n 2\n > it.next().done\n true\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint32Array, Uint8Array, Uint8ClampedArray\n", "UINT32_MAX": "\nUINT32_MAX\n Maximum unsigned 32-bit integer.\n\n The maximum unsigned 32-bit integer is given by `2^32 - 1`.\n\n Examples\n --------\n > UINT32_MAX\n 4294967295\n\n See Also\n --------\n INT32_MAX\n", "UINT32_NUM_BYTES": "\nUINT32_NUM_BYTES\n Size (in bytes) of a 32-bit unsigned integer.\n\n Examples\n --------\n > UINT32_NUM_BYTES\n 4\n\n See Also\n --------\n INT32_NUM_BYTES, UINT16_NUM_BYTES, UINT8_NUM_BYTES\n", - "Uint32Array": "\nUint32Array()\n A typed array constructor which returns a typed array representing an array\n of 32-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint32Array()\n \n\n\nUint32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Uint32Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint32Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Uint32Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nUint32Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr = Uint32Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nUint32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint32Array.BYTES_PER_ELEMENT\n 4\n\n\nUint32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint32Array.name\n 'Uint32Array'\n\n\nUint32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.buffer\n \n\n\nUint32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.byteLength\n 20\n\n\nUint32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint32Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 4\n\n\nUint32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.length\n 5\n\n\nTODO: add methods\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint8Array, Uint8ClampedArray\n", + "Uint32Array": "\nUint32Array()\n A typed array constructor which returns a typed array representing an array\n of 32-bit unsigned integers in the platform byte order.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint32Array()\n \n\n\nUint32Array( length )\n Returns a typed array having a specified length.\n\n Parameters\n ----------\n length: integer\n Typed array length.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 )\n [ 0, 0, 0, 0, 0 ]\n\n\nUint32Array( typedarray )\n Creates a typed array from another typed array.\n\n Parameters\n ----------\n typedarray: TypedArray\n Typed array from which to generate another typed array.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Int32Array( [ 5, 5, 5 ] );\n > var arr2 = new Uint32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint32Array( obj )\n Creates a typed array from an array-like object or iterable.\n\n Parameters\n ----------\n obj: Object\n Array-like object or iterable from which to generate a typed array.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = [ 5.0, 5.0, 5.0 ];\n > var arr2 = new Uint32Array( arr1 )\n [ 5, 5, 5 ]\n\n\nUint32Array( buffer[, byteOffset[, length]] )\n Returns a typed array view of an ArrayBuffer.\n\n Parameters\n ----------\n buffer: ArrayBuffer\n Underlying ArrayBuffer.\n\n byteOffset: integer (optional)\n Integer byte offset specifying the location of the first typed array\n element. Default: 0.\n\n length: integer (optional)\n View length. If not provided, the view spans from the byteOffset to\n the end of the underlying ArrayBuffer.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var buf = new ArrayBuffer( 16 );\n > var arr = new Uint32Array( buf, 0, 4 )\n [ 0, 0, 0, 0 ]\n\n\nUint32Array.from( src[, map[, thisArg]] )\n Creates a new typed array from an array-like object or an iterable.\n\n A callback is provided the following arguments:\n\n - value: source value.\n - index: source index.\n\n Parameters\n ----------\n src: ArrayLike|Iterable\n Source of array elements.\n\n map: Function (optional)\n Callback to invoke for each source element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > function mapFcn( v ) { return v * 2; };\n > var arr = Uint32Array.from( [ 1, 2 ], mapFcn )\n [ 2, 4 ]\n\n\nUint32Array.of( element0[, element1[, ...[, elementN]]] )\n Creates a new typed array from a variable number of arguments.\n\n Parameters\n ----------\n element: number\n Array elements.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr = Uint32Array.of( 1, 2 )\n [ 1, 2 ]\n\n\nUint32Array.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > Uint32Array.BYTES_PER_ELEMENT\n 4\n\n\nUint32Array.name\n Typed array constructor name.\n\n Examples\n --------\n > Uint32Array.name\n 'Uint32Array'\n\n\nUint32Array.prototype.buffer\n Read-only property which returns the ArrayBuffer referenced by the typed\n array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.buffer\n \n\n\nUint32Array.prototype.byteLength\n Read-only property which returns the length (in bytes) of the typed array.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.byteLength\n 20\n\n\nUint32Array.prototype.byteOffset\n Read-only property which returns the offset (in bytes) of the typed array\n from the start of its ArrayBuffer.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.byteOffset\n 0\n\n\nUint32Array.prototype.BYTES_PER_ELEMENT\n Number of bytes per view element.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.BYTES_PER_ELEMENT\n 4\n\n\nUint32Array.prototype.length\n Read-only property which returns the number of view elements.\n\n Examples\n --------\n > var arr = new Uint32Array( 5 );\n > arr.length\n 5\n\n\nUint32Array.prototype.copyWithin( target, start[, end] )\n Copies a sequence of elements within the array starting at `start` and\n ending at `end` (non-inclusive) to the position starting at `target`.\n\n Parameters\n ----------\n target: integer\n Target start index position.\n\n start: integer\n Source start index position.\n\n end: integer (optional)\n Source end index position. Default: out.length.\n\n Returns\n -------\n out: Uint32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2, 3, 4, 5 ] );\n > arr.copyWithin( 3, 0, 2 );\n > arr[ 3 ]\n 1\n > arr[ 4 ]\n 2\n\n\nUint32Array.prototype.entries()\n Returns an iterator for iterating over array key-value pairs.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array key-value pairs.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2 ] );\n > it = arr.entries();\n > it.next().value\n [ 0, 1 ]\n > it.next().value\n [ 1, 2 ]\n > it.next().done\n true\n\n\nUint32Array.prototype.every( predicate[, thisArg] )\n Tests whether all array elements pass a test implemented by a predicate\n function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, an array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether all array elements pass.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2 ] );\n > function predicate( v ) { return ( v <= 1 ); };\n > arr.every( predicate )\n false\n\n\nUint32Array.prototype.fill( value[, start[, end]] )\n Fills an array from a start index to an end index (non-inclusive) with a\n provided value.\n\n Parameters\n ----------\n value: number\n Fill value.\n\n start: integer (optional)\n Start index. If less than zero, the start index is resolved relative to\n the last array element. Default: 0.\n\n end: integer (optional)\n End index (non-inclusive). If less than zero, the end index is resolved\n relative to the last array element. Default: out.length.\n\n Returns\n -------\n out: Uint32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2 ] );\n > arr.fill( 3 );\n > arr[ 0 ]\n 3\n > arr[ 1 ]\n 3\n\n\nUint32Array.prototype.filter( predicate[, thisArg] )\n Creates a new array which includes those elements for which a predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n If a predicate function does not return a truthy value for any array\n element, the method returns `null`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which filters array elements. If a predicate function\n returns a truthy value, an array element is included in the output\n array; otherwise, an array element is not included in the output array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Uint32Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 1 ); };\n > var arr2 = arr1.filter( predicate );\n > arr2.length\n 2\n\n\nUint32Array.prototype.find( predicate[, thisArg] )\n Returns the first array element for which a provided predicate function\n returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `undefined`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n value: number|undefined\n Array element.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 2 ); };\n > var v = arr.find( predicate )\n 3\n\n\nUint32Array.prototype.findIndex( predicate[, thisArg] )\n Returns the index of the first array element for which a provided predicate\n function returns a truthy value.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n If a predicate function never returns a truthy value, the method returns\n `-1`.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2, 3 ] );\n > function predicate( v ) { return ( v > 2 ); };\n > var idx = arr.findIndex( predicate )\n 2\n\n\nUint32Array.prototype.forEach( fcn[, thisArg] )\n Invokes a callback for each array element.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n fcn: Function\n Function to invoke for each array element.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 3, 2, 1 ] );\n > var str = ' ';\n > function fcn( v, i ) { str += i + ':' + v + ' '; };\n > arr.forEach( fcn );\n > str\n ' 0:3 1:2 2:1 '\n\n\nUint32Array.prototype.includes( searchElement[, fromIndex] )\n Returns a boolean indicating whether an array includes a search element.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether an array includes a search element.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2, 3 ] );\n > var bool = arr.includes( 4 )\n false\n > bool = arr.includes( 3 )\n true\n\n\nUint32Array.prototype.indexOf( searchElement[, fromIndex] )\n Returns the index of the first array element strictly equal to a search\n element.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: 0.\n\n Returns\n -------\n idx: integer\n Array index.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2, 3 ] );\n > var idx = arr.indexOf( 4 )\n -1\n > idx = arr.indexOf( 3 )\n 2\n\n\nUint32Array.prototype.join( [separator] )\n Serializes an array by joining all array elements as a string.\n\n Parameters\n ----------\n separator: string (optional)\n String delineating array elements. Default: ','.\n\n Returns\n -------\n str: string\n Array serialized as a string.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2, 3 ] );\n > arr.join( '|' )\n '1|2|3'\n\n\nUint32Array.prototype.keys()\n Returns an iterator for iterating over array keys.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array keys.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2 ] );\n > it = arr.keys();\n > it.next().value\n 0\n > it.next().value\n 1\n > it.next().done\n true\n\n\nUint32Array.prototype.lastIndexOf( searchElement[, fromIndex] )\n Returns the index of the last array element strictly equal to a search\n element.\n\n The method iterates from the last array element to the first array element.\n\n If unable to locate a search element, the method returns `-1`.\n\n Parameters\n ----------\n searchElement: number\n Search element.\n\n fromIndex: integer (optional)\n Array index from which to begin searching. If provided a negative value,\n the method resolves the start index relative to the last array element.\n Default: -1.\n\n Returns\n -------\n idx: integer\n array index.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 0, 2, 0, 1 ] );\n > var idx = arr.lastIndexOf( 3 )\n -1\n > idx = arr.lastIndexOf( 0 )\n 3\n\n\nUint32Array.prototype.map( fcn[, thisArg] )\n Maps each array element to an element in a new typed array.\n\n A provided function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n The returned array has the same data type as the host array.\n\n Parameters\n ----------\n fcn: Function\n Function which maps array elements to elements in the new array.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Uint32Array( [ 1, 2, 3 ] );\n > function fcn( v ) { return v * 2; };\n > var arr2 = arr1.map( fcn );\n [ 2, 4, 6 ]\n\n\nUint32Array.prototype.reduce( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the first array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the first array element as the first argument and the second array\n element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2, 3 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduce( fcn, 0 )\n 14\n\n\nUint32Array.prototype.reduceRight( fcn[, initialValue] )\n Applies a function against an accumulator and each element in an array and\n returns the accumulated result, iterating from right to left.\n\n The provided function is provided the following arguments:\n\n - acc: accumulated result.\n - value: current array element.\n - index: index of the current array element.\n - arr: array on which the method is invoked.\n\n If provided an initial value, the method invokes a provided function with\n the initial value as the first argument and the last array element as the\n second argument.\n\n If not provided an initial value, the method invokes a provided function\n with the last array element as the first argument and the second-to-last\n array element as the second argument.\n\n Parameters\n ----------\n fcn: Function\n Function to apply.\n\n initialValue: Any (optional)\n Initial accumulation value.\n\n Returns\n -------\n out: Any\n Accumulated result.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2, 3 ] );\n > function fcn( acc, v ) { return acc + (v*v); };\n > var v = arr.reduceRight( fcn, 0 )\n 14\n\n\nUint32Array.prototype.reverse()\n Reverses an array *in-place*.\n\n This method mutates the array on which the method is invoked.\n\n Returns\n -------\n out: Uint32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2, 3 ] )\n [ 1, 2, 3 ]\n > arr.reverse()\n [ 3, 2, 1 ]\n\n\nUint32Array.prototype.set( arr[, offset] )\n Sets array elements.\n\n Parameters\n ----------\n arr: ArrayLike\n Source array containing array values to set.\n\n offset: integer (optional)\n Array index at which to start writing values. Default: 0.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2, 3 ] );\n > arr.set( [ 4, 4 ], 1 );\n > arr[ 1 ]\n 4\n > arr[ 2 ]\n 4\n\n\nUint32Array.prototype.slice( [begin[, end]] )\n Copies array elements to a new array with the same underlying data type as\n the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns `null`.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Uint32Array\n A typed array.\n\n Examples\n --------\n > var arr1 = new Uint32Array( [ 1, 2, 3 ] );\n > var arr2 = arr1.slice( 1 );\n > arr2.length\n 2\n > arr2[ 0 ]\n 1\n > arr2[ 1 ]\n 2\n\n\nUint32Array.prototype.some( predicate[, thisArg] )\n Tests whether at least one array element passes a test implemented by a\n predicate function.\n\n A predicate function is provided the following arguments:\n\n - value: array element.\n - index: array index.\n - arr: array on which the method is invoked.\n\n Parameters\n ----------\n predicate: Function\n Predicate function which tests array elements. If a predicate function\n returns a truthy value, a array element passes; otherwise, an array\n element fails.\n\n thisArg: Any (optional)\n Callback execution context.\n\n Returns\n -------\n bool: boolean\n Boolean indicating whether at least one array element passes.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2 ] );\n > function predicate( v ) { return ( v > 1 ); };\n > arr.some( predicate )\n true\n\n\nUint32Array.prototype.sort( [compareFunction] )\n Sorts an array *in-place*.\n\n The comparison function is provided two array elements per invocation: `a`\n and `b`.\n\n The comparison function return value determines the sort order as follows:\n\n - If the comparison function returns a value less than zero, then the method\n sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).\n\n - If the comparison function returns a value greater than zero, then the\n method sorts `a` to an index higher than `b` (i.e., `b` should come *before*\n `a`).\n\n - If the comparison function returns zero, then the relative order of `a`\n and `b` should remain unchanged.\n\n This method mutates the array on which the method is invoked.\n\n Parameters\n ----------\n compareFunction: Function (optional)\n Function which specifies the sort order. The default sort order is\n ascending order.\n\n Returns\n -------\n out: Uint32Array\n Modified array.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2, 0, 2, 1 ] );\n > arr.sort()\n [ 0, 1, 1, 2, 2 ]\n\n\nUint32Array.prototype.subarray( [begin[, end]] )\n Creates a new typed array over the same underlying ArrayBuffer and with the\n same underlying data type as the host array.\n\n If the method is unable to resolve indices to a non-empty array subsequence,\n the method returns an empty typed array.\n\n Parameters\n ----------\n begin: integer (optional)\n Start element index (inclusive). If less than zero, the start index is\n resolved relative to the last array element. Default: 0.\n\n end: integer (optional)\n End element index (exclusive). If less than zero, the end index is\n resolved relative to the last array element. Default: arr.length.\n\n Returns\n -------\n out: Uint32Array\n A new typed array view.\n\n Examples\n --------\n > var arr1 = new Uint32Array( [ 1, 2, 3, 4, 5 ] );\n > var arr2 = arr1.subarray( 2 )\n [ 3, 4, 5 ]\n\n\nUint32Array.prototype.toLocaleString( [locales[, options]] )\n Serializes an array as a locale-specific string.\n\n Parameters\n ----------\n locales: string|Array (optional)\n A BCP 47 language tag, or an array of such tags.\n\n options: Object (optional)\n Options.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2, 3 ] );\n > arr.toLocaleString()\n '1,2,3'\n\n\nUint32Array.prototype.toString()\n Serializes an array as a string.\n\n Returns\n -------\n str: string\n A typed array string representation.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2, 3 ] );\n > arr.toString()\n '1,2,3'\n\n\nUint32Array.prototype.values()\n Returns an iterator for iterating over array elements.\n\n Returns\n -------\n iter: Iterator\n Iterator for iterating over array elements.\n\n Examples\n --------\n > var arr = new Uint32Array( [ 1, 2 ] );\n > it = arr.values();\n > it.next().value\n 1\n > it.next().value\n 2\n > it.next().done\n true\n\n\n See Also\n --------\n ArrayBuffer, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint8Array, Uint8ClampedArray\n", "umask": "\numask( [mask,] [options] )\n Returns the current process mask, if not provided a mask; otherwise, sets\n the process mask and returns the previous mask.\n\n A mask is a set of bits, each of which restricts how its corresponding\n permission is set for newly created files.\n\n On POSIX platforms, each file has a set of attributes that control who can\n read, write, or execute that file. Upon creating a file, file permissions\n must be set to an initial setting. The process mask restricts those\n permission settings.\n\n If the mask contains a bit set to \"1\", the corresponding initial file\n permission is disabled. If the mask contains a bit set to \"0\", the\n corresponding permission is left to be determined by the requesting process\n and the system.\n\n The process mask is thus a filter that removes permissions as a file is\n created; i.e., each bit set to a \"1\" removes its corresponding permission.\n\n In octal representation, a mask is a four digit number, e.g., 0077,\n comprised as follows:\n\n - 0: special permissions (setuid, setgid, sticky bit)\n - 0: (u)ser/owner permissions\n - 7: (g)roup permissions\n - 7: (o)thers/non-group permissions\n\n Octal codes correspond to the following permissions:\n\n - 0: read, write, execute\n - 1: read, write\n - 2: read, execute\n - 3: read\n - 4: write, execute\n - 5: write\n - 6: execute\n - 7: no permissions\n\n If provided fewer than four digits, the mask is left-padded with zeros.\n\n Note, however, that only the last three digits (i.e., the file permissions\n digits) of the mask are actually used when the mask is applied.\n\n Permissions can be represented using the following symbolic form:\n\n u=rwx,g=rwx,o=rwx\n\n where\n\n - u: user permissions\n - g: group permissions\n - o: other/non-group permissions\n - r: read\n - w: write\n - x: execute\n\n When setting permissions using symbolic notation, the function accepts a\n mask expression of the form:\n\n []\n\n where \"classes\" may be a combination of\n\n - u: user\n - g: group\n - o: other/non-group\n - a: all\n\n \"symbols\" may be a combination of\n\n - r: read\n - w: write\n - x: execute\n - X: special execute\n - s: setuid/gid on execution\n - t: sticky\n\n and \"operator\" may be one of\n\n - `+`: enable\n - `-`: disable\n - `=`: enable specified and disable unspecified permissions\n\n For example,\n\n - `u-w`: disable user write permissions\n - `u+w`: enable user write permissions\n - `u=w`: enable user write permissions and disable user read and execute\n\n To specify multiple changes, provide a comma-separated list of mask\n expressions. For example,\n\n u+rwx,g-x,o=r\n\n would enable user read, write, and execute permissions, disable group\n execute permissions, enable other read permissions, and disable other\n write and execute permissions.\n\n The `a` class indicates \"all\", which is the same as specifying \"ugo\". This\n is the default class if a class is omitted when specifying permissions. For\n example, `+x` is equivalent to `a+x` which is equivalent to `ugo+x` which\n is equivalent to `u+x,g+x,o+x` and enables execution for all classes.\n\n Parameters\n ----------\n mask: integer|string (optional)\n Mask or mask expression. If the mask is a string, the mask is assumed to\n be in symbolic notation.\n\n options: Object (optional)\n Options.\n\n options.symbolic: boolean (optional)\n Boolean indicating whether to return the mask using symbolic notation.\n\n Returns\n -------\n mask: integer|string\n Process mask. If provided a mask, the returned value is the previous\n mask; otherwise, the returned value is the current process mask.\n\n Examples\n --------\n > var mask = umask()\n \n > mask = umask( { 'symbolic': true } )\n \n\n", "uncapitalize": "\nuncapitalize( str )\n Lowercases the first character of a `string`.\n\n Parameters\n ----------\n str: string\n Input string.\n\n Returns\n -------\n out: string\n Uncapitalized string.\n\n Examples\n --------\n > var out = uncapitalize( 'Beep' )\n 'beep'\n > out = uncapitalize( 'bOOp' )\n 'bOOp'\n\n See Also\n --------\n capitalize, lowercase\n", "uncapitalizeKeys": "\nuncapitalizeKeys( obj )\n Converts the first letter of each object key to lowercase.\n\n The function only transforms own properties. Hence, the function does not\n transform inherited properties.\n\n The function shallow copies key values.\n\n Parameters\n ----------\n obj: Object\n Source object.\n\n Returns\n -------\n out: Object\n New object.\n\n Examples\n --------\n > var obj = { 'AA': 1, 'BB': 2 };\n > var out = uncapitalizeKeys( obj )\n { 'aA': 1, 'bB': 2 }\n\n See Also\n --------\n capitalizeKeys, lowercaseKeys\n", From 3fdfa8016b7f852f0ed5f0d013e0620d82d90731 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 2 Oct 2018 18:59:00 -0700 Subject: [PATCH 0628/1062] Document prototype property --- lib/node_modules/@stdlib/array/float64/README.md | 12 ++++++++++++ lib/node_modules/@stdlib/array/int16/README.md | 12 ++++++++++++ lib/node_modules/@stdlib/array/int32/README.md | 12 ++++++++++++ lib/node_modules/@stdlib/array/int8/README.md | 12 ++++++++++++ lib/node_modules/@stdlib/array/uint16/README.md | 12 ++++++++++++ lib/node_modules/@stdlib/array/uint32/README.md | 12 ++++++++++++ lib/node_modules/@stdlib/array/uint8/README.md | 12 ++++++++++++ lib/node_modules/@stdlib/array/uint8c/README.md | 12 ++++++++++++ 8 files changed, 96 insertions(+) diff --git a/lib/node_modules/@stdlib/array/float64/README.md b/lib/node_modules/@stdlib/array/float64/README.md index f2ec89c9ba87..3396f1ba55b1 100644 --- a/lib/node_modules/@stdlib/array/float64/README.md +++ b/lib/node_modules/@stdlib/array/float64/README.md @@ -163,6 +163,18 @@ var byteOffset = arr.byteOffset; // returns 0 ``` +#### Float64Array.prototype.BYTES_PER_ELEMENT + +Number of bytes per view element. + + + +```javascript +var arr = new Float64Array( 5 ); +var nbytes = arr.BYTES_PER_ELEMENT; +// returns 8 +``` + #### Float64Array.prototype.length **Read-only** property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/int16/README.md b/lib/node_modules/@stdlib/array/int16/README.md index f4bf32464bbe..21d691e8b2da 100644 --- a/lib/node_modules/@stdlib/array/int16/README.md +++ b/lib/node_modules/@stdlib/array/int16/README.md @@ -163,6 +163,18 @@ var byteOffset = arr.byteOffset; // returns 0 ``` +#### Int16Array.prototype.BYTES_PER_ELEMENT + +Number of bytes per view element. + + + +```javascript +var arr = new Int16Array( 5 ); +var nbytes = arr.BYTES_PER_ELEMENT; +// returns 2 +``` + #### Int16Array.prototype.length **Read-only** property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/int32/README.md b/lib/node_modules/@stdlib/array/int32/README.md index 5084dded849a..3dbe5b6d61cd 100644 --- a/lib/node_modules/@stdlib/array/int32/README.md +++ b/lib/node_modules/@stdlib/array/int32/README.md @@ -163,6 +163,18 @@ var byteOffset = arr.byteOffset; // returns 0 ``` +#### Int32Array.prototype.BYTES_PER_ELEMENT + +Number of bytes per view element. + + + +```javascript +var arr = new Int32Array( 5 ); +var nbytes = arr.BYTES_PER_ELEMENT; +// returns 4 +``` + #### Int32Array.prototype.length **Read-only** property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/int8/README.md b/lib/node_modules/@stdlib/array/int8/README.md index fd271f81e376..b473e828b3dd 100644 --- a/lib/node_modules/@stdlib/array/int8/README.md +++ b/lib/node_modules/@stdlib/array/int8/README.md @@ -163,6 +163,18 @@ var byteOffset = arr.byteOffset; // returns 0 ``` +#### Int8Array.prototype.BYTES_PER_ELEMENT + +Number of bytes per view element. + + + +```javascript +var arr = new Int8Array( 5 ); +var nbytes = arr.BYTES_PER_ELEMENT; +// returns 1 +``` + #### Int8Array.prototype.length **Read-only** property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/uint16/README.md b/lib/node_modules/@stdlib/array/uint16/README.md index cdd006fe8dfe..6869f5f00124 100644 --- a/lib/node_modules/@stdlib/array/uint16/README.md +++ b/lib/node_modules/@stdlib/array/uint16/README.md @@ -163,6 +163,18 @@ var byteOffset = arr.byteOffset; // returns 0 ``` +#### Uint16Array.prototype.BYTES_PER_ELEMENT + +Number of bytes per view element. + + + +```javascript +var arr = new Uint16Array( 5 ); +var nbytes = arr.BYTES_PER_ELEMENT; +// returns 2 +``` + #### Uint16Array.prototype.length **Read-only** property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/uint32/README.md b/lib/node_modules/@stdlib/array/uint32/README.md index 1201f14c0526..15fc89cee0ac 100644 --- a/lib/node_modules/@stdlib/array/uint32/README.md +++ b/lib/node_modules/@stdlib/array/uint32/README.md @@ -163,6 +163,18 @@ var byteOffset = arr.byteOffset; // returns 0 ``` +#### Uint32Array.prototype.BYTES_PER_ELEMENT + +Number of bytes per view element. + + + +```javascript +var arr = new Uint32Array( 5 ); +var nbytes = arr.BYTES_PER_ELEMENT; +// returns 4 +``` + #### Uint32Array.prototype.length **Read-only** property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/uint8/README.md b/lib/node_modules/@stdlib/array/uint8/README.md index abbe14ec3ecb..16cf5698e098 100644 --- a/lib/node_modules/@stdlib/array/uint8/README.md +++ b/lib/node_modules/@stdlib/array/uint8/README.md @@ -163,6 +163,18 @@ var byteOffset = arr.byteOffset; // returns 0 ``` +#### Uint8Array.prototype.BYTES_PER_ELEMENT + +Number of bytes per view element. + + + +```javascript +var arr = new Uint8Array( 5 ); +var nbytes = arr.BYTES_PER_ELEMENT; +// returns 1 +``` + #### Uint8Array.prototype.length **Read-only** property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/uint8c/README.md b/lib/node_modules/@stdlib/array/uint8c/README.md index 7284c9bc9b05..b5e0102a1d9b 100644 --- a/lib/node_modules/@stdlib/array/uint8c/README.md +++ b/lib/node_modules/@stdlib/array/uint8c/README.md @@ -163,6 +163,18 @@ var byteOffset = arr.byteOffset; // returns 0 ``` +#### Uint8ClampedArray.prototype.BYTES_PER_ELEMENT + +Number of bytes per view element. + + + +```javascript +var arr = new Uint8ClampedArray( 5 ); +var nbytes = arr.BYTES_PER_ELEMENT; +// returns 1 +``` + #### Uint8ClampedArray.prototype.length **Read-only** property which returns the number of view elements. From 0450ae69fa43aa8dbd5777482dae578567b0636c Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 3 Oct 2018 02:56:13 -0700 Subject: [PATCH 0629/1062] Add anchors --- .../@stdlib/array/float32/README.md | 112 +++++++++++++++++- 1 file changed, 111 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/array/float32/README.md b/lib/node_modules/@stdlib/array/float32/README.md index dec55b7d3aed..bd452ef83297 100644 --- a/lib/node_modules/@stdlib/array/float32/README.md +++ b/lib/node_modules/@stdlib/array/float32/README.md @@ -105,6 +105,8 @@ var arr = new Float32Array( buf, 0, 4 ); ### Properties + + #### Float32Array.BYTES_PER_ELEMENT Number of bytes per view element. @@ -116,6 +118,8 @@ var nbytes = Float32Array.BYTES_PER_ELEMENT; // returns 4 ``` + + #### Float32Array.name [Typed array][mdn-typed-array] constructor name. @@ -127,6 +131,8 @@ var str = Float32Array.name; // returns 'Float32Array' ``` + + #### Float32Array.prototype.buffer **Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. @@ -139,6 +145,8 @@ var buf = arr.buffer; // returns ``` + + #### Float32Array.prototype.byteLength **Read-only** property which returns the length (in bytes) of the [typed array][mdn-typed-array]. @@ -151,6 +159,8 @@ var byteLength = arr.byteLength; // returns 20 ``` + + #### Float32Array.prototype.byteOffset **Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. @@ -163,6 +173,8 @@ var byteOffset = arr.byteOffset; // returns 0 ``` + + #### Float32Array.prototype.BYTES_PER_ELEMENT Number of bytes per view element. @@ -175,6 +187,8 @@ var nbytes = arr.BYTES_PER_ELEMENT; // returns 4 ``` + + #### Float32Array.prototype.length **Read-only** property which returns the number of view elements. @@ -191,7 +205,103 @@ var len = arr.length; ### Methods -TODO: add methods + + +#### factory.from( src\[, map\[, thisArg]] ) + +Creates a new named typed tuple from an array-like `object` or an iterable. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory.from( [ 1.0, -1.0 ] ); + +var x = tuple.x; +// returns 1.0 + +x = tuple[ 0 ]; +// returns 1.0 + +var y = tuple.y; +// returns -1.0 + +y = tuple[ 1 ]; +// returns -1.0 +``` + +To invoke a function for each `src` value, provide a callback function. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +function mapFcn( v ) { + return v * 2.0; +} + +var tuple = factory.from( [ 1.0, -1.0 ], mapFcn ); + +var x = tuple.x; +// returns 2.0 + +x = tuple[ 0 ]; +// returns 2.0 + +var y = tuple.y; +// returns -2.0 + +y = tuple[ 1 ]; +// returns -2.0 +``` + +A callback function is provided three arguments: + +- `value`: source value +- `index`: source index +- `field`: tuple field + +To set the callback execution context, provide a `thisArg`. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +function mapFcn( v ) { + this.count += 1; + return v * 2.0; +} + +var ctx = { + 'count': 0 +}; + +var tuple = factory.from( [ 1.0, -1.0 ], mapFcn, ctx ); + +var n = ctx.count; +// returns 2 +``` + + + +#### factory.of( element0\[, element1\[, ...\[, elementN]]] ) + +Creates a new named typed tuple from a variable number of arguments. + +```javascript +var factory = namedtypedtuple( [ 'x', 'y' ] ); + +var tuple = factory.of( 1.0, -1.0 ); + +var x = tuple.x; +// returns 1.0 + +x = tuple[ 0 ]; +// returns 1.0 + +var y = tuple.y; +// returns -1.0 + +y = tuple[ 1 ]; +// returns -1.0 +```
From 0ed0309569827d03eb9fb7a12831b174124cd1bf Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 3 Oct 2018 03:06:36 -0700 Subject: [PATCH 0630/1062] Add anchors --- lib/node_modules/@stdlib/array/float64/README.md | 14 ++++++++++++++ lib/node_modules/@stdlib/array/int16/README.md | 14 ++++++++++++++ lib/node_modules/@stdlib/array/int32/README.md | 14 ++++++++++++++ lib/node_modules/@stdlib/array/int8/README.md | 14 ++++++++++++++ lib/node_modules/@stdlib/array/uint16/README.md | 14 ++++++++++++++ lib/node_modules/@stdlib/array/uint32/README.md | 14 ++++++++++++++ lib/node_modules/@stdlib/array/uint8/README.md | 14 ++++++++++++++ lib/node_modules/@stdlib/array/uint8c/README.md | 14 ++++++++++++++ 8 files changed, 112 insertions(+) diff --git a/lib/node_modules/@stdlib/array/float64/README.md b/lib/node_modules/@stdlib/array/float64/README.md index 3396f1ba55b1..a29937d39fee 100644 --- a/lib/node_modules/@stdlib/array/float64/README.md +++ b/lib/node_modules/@stdlib/array/float64/README.md @@ -105,6 +105,8 @@ var arr = new Float64Array( buf, 0, 4 ); ### Properties + + #### Float64Array.BYTES_PER_ELEMENT Number of bytes per view element. @@ -116,6 +118,8 @@ var nbytes = Float64Array.BYTES_PER_ELEMENT; // returns 8 ``` + + #### Float64Array.name [Typed array][mdn-typed-array] constructor name. @@ -127,6 +131,8 @@ var str = Float64Array.name; // returns 'Float64Array' ``` + + #### Float64Array.prototype.buffer **Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. @@ -139,6 +145,8 @@ var buf = arr.buffer; // returns ``` + + #### Float64Array.prototype.byteLength **Read-only** property which returns the length (in bytes) of the [typed array][mdn-typed-array]. @@ -151,6 +159,8 @@ var byteLength = arr.byteLength; // returns 40 ``` + + #### Float64Array.prototype.byteOffset **Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. @@ -163,6 +173,8 @@ var byteOffset = arr.byteOffset; // returns 0 ``` + + #### Float64Array.prototype.BYTES_PER_ELEMENT Number of bytes per view element. @@ -175,6 +187,8 @@ var nbytes = arr.BYTES_PER_ELEMENT; // returns 8 ``` + + #### Float64Array.prototype.length **Read-only** property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/int16/README.md b/lib/node_modules/@stdlib/array/int16/README.md index 21d691e8b2da..a30311332d8d 100644 --- a/lib/node_modules/@stdlib/array/int16/README.md +++ b/lib/node_modules/@stdlib/array/int16/README.md @@ -105,6 +105,8 @@ var arr = new Int16Array( buf, 0, 4 ); ### Properties + + #### Int16Array.BYTES_PER_ELEMENT Number of bytes per view element. @@ -116,6 +118,8 @@ var nbytes = Int16Array.BYTES_PER_ELEMENT; // returns 2 ``` + + #### Int16Array.name [Typed array][mdn-typed-array] constructor name. @@ -127,6 +131,8 @@ var str = Int16Array.name; // returns 'Int16Array' ``` + + #### Int16Array.prototype.buffer **Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. @@ -139,6 +145,8 @@ var buf = arr.buffer; // returns ``` + + #### Int16Array.prototype.byteLength **Read-only** property which returns the length (in bytes) of the [typed array][mdn-typed-array]. @@ -151,6 +159,8 @@ var byteLength = arr.byteLength; // returns 10 ``` + + #### Int16Array.prototype.byteOffset **Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. @@ -163,6 +173,8 @@ var byteOffset = arr.byteOffset; // returns 0 ``` + + #### Int16Array.prototype.BYTES_PER_ELEMENT Number of bytes per view element. @@ -175,6 +187,8 @@ var nbytes = arr.BYTES_PER_ELEMENT; // returns 2 ``` + + #### Int16Array.prototype.length **Read-only** property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/int32/README.md b/lib/node_modules/@stdlib/array/int32/README.md index 3dbe5b6d61cd..c6edfe86a095 100644 --- a/lib/node_modules/@stdlib/array/int32/README.md +++ b/lib/node_modules/@stdlib/array/int32/README.md @@ -105,6 +105,8 @@ var arr = new Int32Array( buf, 0, 4 ); ### Properties + + #### Int32Array.BYTES_PER_ELEMENT Number of bytes per view element. @@ -116,6 +118,8 @@ var nbytes = Int32Array.BYTES_PER_ELEMENT; // returns 4 ``` + + #### Int32Array.name [Typed array][mdn-typed-array] constructor name. @@ -127,6 +131,8 @@ var str = Int32Array.name; // returns 'Int32Array' ``` + + #### Int32Array.prototype.buffer **Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. @@ -139,6 +145,8 @@ var buf = arr.buffer; // returns ``` + + #### Int32Array.prototype.byteLength **Read-only** property which returns the length (in bytes) of the [typed array][mdn-typed-array]. @@ -151,6 +159,8 @@ var byteLength = arr.byteLength; // returns 20 ``` + + #### Int32Array.prototype.byteOffset **Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. @@ -163,6 +173,8 @@ var byteOffset = arr.byteOffset; // returns 0 ``` + + #### Int32Array.prototype.BYTES_PER_ELEMENT Number of bytes per view element. @@ -175,6 +187,8 @@ var nbytes = arr.BYTES_PER_ELEMENT; // returns 4 ``` + + #### Int32Array.prototype.length **Read-only** property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/int8/README.md b/lib/node_modules/@stdlib/array/int8/README.md index b473e828b3dd..1b3b29fd2037 100644 --- a/lib/node_modules/@stdlib/array/int8/README.md +++ b/lib/node_modules/@stdlib/array/int8/README.md @@ -105,6 +105,8 @@ var arr = new Int8Array( buf, 0, 4 ); ### Properties + + #### Int8Array.BYTES_PER_ELEMENT Number of bytes per view element. @@ -116,6 +118,8 @@ var nbytes = Int8Array.BYTES_PER_ELEMENT; // returns 1 ``` + + #### Int8Array.name [Typed array][mdn-typed-array] constructor name. @@ -127,6 +131,8 @@ var str = Int8Array.name; // returns 'Int8Array' ``` + + #### Int8Array.prototype.buffer **Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. @@ -139,6 +145,8 @@ var buf = arr.buffer; // returns ``` + + #### Int8Array.prototype.byteLength **Read-only** property which returns the length (in bytes) of the [typed array][mdn-typed-array]. @@ -151,6 +159,8 @@ var byteLength = arr.byteLength; // returns 5 ``` + + #### Int8Array.prototype.byteOffset **Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. @@ -163,6 +173,8 @@ var byteOffset = arr.byteOffset; // returns 0 ``` + + #### Int8Array.prototype.BYTES_PER_ELEMENT Number of bytes per view element. @@ -175,6 +187,8 @@ var nbytes = arr.BYTES_PER_ELEMENT; // returns 1 ``` + + #### Int8Array.prototype.length **Read-only** property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/uint16/README.md b/lib/node_modules/@stdlib/array/uint16/README.md index 6869f5f00124..02a3c14a6b0e 100644 --- a/lib/node_modules/@stdlib/array/uint16/README.md +++ b/lib/node_modules/@stdlib/array/uint16/README.md @@ -105,6 +105,8 @@ var arr = new Uint16Array( buf, 0, 4 ); ### Properties + + #### Uint16Array.BYTES_PER_ELEMENT Number of bytes per view element. @@ -116,6 +118,8 @@ var nbytes = Uint16Array.BYTES_PER_ELEMENT; // returns 2 ``` + + #### Uint16Array.name [Typed array][mdn-typed-array] constructor name. @@ -127,6 +131,8 @@ var str = Uint16Array.name; // returns 'Uint16Array' ``` + + #### Uint16Array.prototype.buffer **Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. @@ -139,6 +145,8 @@ var buf = arr.buffer; // returns ``` + + #### Uint16Array.prototype.byteLength **Read-only** property which returns the length (in bytes) of the [typed array][mdn-typed-array]. @@ -151,6 +159,8 @@ var byteLength = arr.byteLength; // returns 10 ``` + + #### Uint16Array.prototype.byteOffset **Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. @@ -163,6 +173,8 @@ var byteOffset = arr.byteOffset; // returns 0 ``` + + #### Uint16Array.prototype.BYTES_PER_ELEMENT Number of bytes per view element. @@ -175,6 +187,8 @@ var nbytes = arr.BYTES_PER_ELEMENT; // returns 2 ``` + + #### Uint16Array.prototype.length **Read-only** property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/uint32/README.md b/lib/node_modules/@stdlib/array/uint32/README.md index 15fc89cee0ac..c04adc10aa08 100644 --- a/lib/node_modules/@stdlib/array/uint32/README.md +++ b/lib/node_modules/@stdlib/array/uint32/README.md @@ -105,6 +105,8 @@ var arr = new Uint32Array( buf, 0, 4 ); ### Properties + + #### Uint32Array.BYTES_PER_ELEMENT Number of bytes per view element. @@ -116,6 +118,8 @@ var nbytes = Uint32Array.BYTES_PER_ELEMENT; // returns 4 ``` + + #### Uint32Array.name [Typed array][mdn-typed-array] constructor name. @@ -127,6 +131,8 @@ var str = Uint32Array.name; // returns 'Uint32Array' ``` + + #### Uint32Array.prototype.buffer **Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. @@ -139,6 +145,8 @@ var buf = arr.buffer; // returns ``` + + #### Uint32Array.prototype.byteLength **Read-only** property which returns the length (in bytes) of the [typed array][mdn-typed-array]. @@ -151,6 +159,8 @@ var byteLength = arr.byteLength; // returns 20 ``` + + #### Uint32Array.prototype.byteOffset **Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. @@ -163,6 +173,8 @@ var byteOffset = arr.byteOffset; // returns 0 ``` + + #### Uint32Array.prototype.BYTES_PER_ELEMENT Number of bytes per view element. @@ -175,6 +187,8 @@ var nbytes = arr.BYTES_PER_ELEMENT; // returns 4 ``` + + #### Uint32Array.prototype.length **Read-only** property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/uint8/README.md b/lib/node_modules/@stdlib/array/uint8/README.md index 16cf5698e098..defe18044003 100644 --- a/lib/node_modules/@stdlib/array/uint8/README.md +++ b/lib/node_modules/@stdlib/array/uint8/README.md @@ -105,6 +105,8 @@ var arr = new Uint8Array( buf, 0, 4 ); ### Properties + + #### Uint8Array.BYTES_PER_ELEMENT Number of bytes per view element. @@ -116,6 +118,8 @@ var nbytes = Uint8Array.BYTES_PER_ELEMENT; // returns 1 ``` + + #### Uint8Array.name [Typed array][mdn-typed-array] constructor name. @@ -127,6 +131,8 @@ var str = Uint8Array.name; // returns 'Uint8Array' ``` + + #### Uint8Array.prototype.buffer **Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. @@ -139,6 +145,8 @@ var buf = arr.buffer; // returns ``` + + #### Uint8Array.prototype.byteLength **Read-only** property which returns the length (in bytes) of the [typed array][mdn-typed-array]. @@ -151,6 +159,8 @@ var byteLength = arr.byteLength; // returns 5 ``` + + #### Uint8Array.prototype.byteOffset **Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. @@ -163,6 +173,8 @@ var byteOffset = arr.byteOffset; // returns 0 ``` + + #### Uint8Array.prototype.BYTES_PER_ELEMENT Number of bytes per view element. @@ -175,6 +187,8 @@ var nbytes = arr.BYTES_PER_ELEMENT; // returns 1 ``` + + #### Uint8Array.prototype.length **Read-only** property which returns the number of view elements. diff --git a/lib/node_modules/@stdlib/array/uint8c/README.md b/lib/node_modules/@stdlib/array/uint8c/README.md index b5e0102a1d9b..7cd94d7b4c71 100644 --- a/lib/node_modules/@stdlib/array/uint8c/README.md +++ b/lib/node_modules/@stdlib/array/uint8c/README.md @@ -105,6 +105,8 @@ var arr = new Uint8ClampedArray( buf, 0, 4 ); ### Properties + + #### Uint8ClampedArray.BYTES_PER_ELEMENT Number of bytes per view element. @@ -116,6 +118,8 @@ var nbytes = Uint8ClampedArray.BYTES_PER_ELEMENT; // returns 1 ``` + + #### Uint8ClampedArray.name [Typed array][mdn-typed-array] constructor name. @@ -127,6 +131,8 @@ var str = Uint8ClampedArray.name; // returns 'Uint8ClampedArray' ``` + + #### Uint8ClampedArray.prototype.buffer **Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. @@ -139,6 +145,8 @@ var buf = arr.buffer; // returns ``` + + #### Uint8ClampedArray.prototype.byteLength **Read-only** property which returns the length (in bytes) of the [typed array][mdn-typed-array]. @@ -151,6 +159,8 @@ var byteLength = arr.byteLength; // returns 5 ``` + + #### Uint8ClampedArray.prototype.byteOffset **Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. @@ -163,6 +173,8 @@ var byteOffset = arr.byteOffset; // returns 0 ``` + + #### Uint8ClampedArray.prototype.BYTES_PER_ELEMENT Number of bytes per view element. @@ -175,6 +187,8 @@ var nbytes = arr.BYTES_PER_ELEMENT; // returns 1 ``` + + #### Uint8ClampedArray.prototype.length **Read-only** property which returns the number of view elements. From b9b2d90f86c5f0571e42898e95a87ce1fba1a61d Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 3 Oct 2018 03:10:25 -0700 Subject: [PATCH 0631/1062] Fix examples --- .../@stdlib/array/float32/README.md | 67 ++++--------------- 1 file changed, 13 insertions(+), 54 deletions(-) diff --git a/lib/node_modules/@stdlib/array/float32/README.md b/lib/node_modules/@stdlib/array/float32/README.md index bd452ef83297..c1f66b0e0a47 100644 --- a/lib/node_modules/@stdlib/array/float32/README.md +++ b/lib/node_modules/@stdlib/array/float32/README.md @@ -207,63 +207,34 @@ var len = arr.length; -#### factory.from( src\[, map\[, thisArg]] ) +#### Float32Array.from( src\[, map\[, thisArg]] ) -Creates a new named typed tuple from an array-like `object` or an iterable. +Creates a new typed array from an array-like `object` or an iterable. ```javascript -var factory = namedtypedtuple( [ 'x', 'y' ] ); - -var tuple = factory.from( [ 1.0, -1.0 ] ); - -var x = tuple.x; -// returns 1.0 - -x = tuple[ 0 ]; -// returns 1.0 - -var y = tuple.y; -// returns -1.0 - -y = tuple[ 1 ]; -// returns -1.0 +var arr = Float32Array.from( [ 1.0, -1.0 ] ); +// returns [ 1.0, -1.0 ] ``` To invoke a function for each `src` value, provide a callback function. ```javascript -var factory = namedtypedtuple( [ 'x', 'y' ] ); - function mapFcn( v ) { return v * 2.0; } -var tuple = factory.from( [ 1.0, -1.0 ], mapFcn ); - -var x = tuple.x; -// returns 2.0 - -x = tuple[ 0 ]; -// returns 2.0 - -var y = tuple.y; -// returns -2.0 - -y = tuple[ 1 ]; -// returns -2.0 +var arr = Float32Array.from( [ 1.0, -1.0 ], mapFcn ); +// returns [ 2.0, -2.0 ] ``` -A callback function is provided three arguments: +A callback function is provided two arguments: - `value`: source value - `index`: source index -- `field`: tuple field To set the callback execution context, provide a `thisArg`. ```javascript -var factory = namedtypedtuple( [ 'x', 'y' ] ); - function mapFcn( v ) { this.count += 1; return v * 2.0; @@ -273,7 +244,8 @@ var ctx = { 'count': 0 }; -var tuple = factory.from( [ 1.0, -1.0 ], mapFcn, ctx ); +var arr = Float32Array.from( [ 1.0, -1.0 ], mapFcn, ctx ); +// returns [ 2.0, -2.0 ] var n = ctx.count; // returns 2 @@ -281,26 +253,13 @@ var n = ctx.count; -#### factory.of( element0\[, element1\[, ...\[, elementN]]] ) +#### Float32Array.of( element0\[, element1\[, ...\[, elementN]]] ) -Creates a new named typed tuple from a variable number of arguments. +Creates a new typed array from a variable number of arguments. ```javascript -var factory = namedtypedtuple( [ 'x', 'y' ] ); - -var tuple = factory.of( 1.0, -1.0 ); - -var x = tuple.x; -// returns 1.0 - -x = tuple[ 0 ]; -// returns 1.0 - -var y = tuple.y; -// returns -1.0 - -y = tuple[ 1 ]; -// returns -1.0 +var arr = Float32Array.of( 1.0, -1.0 ); +// returns [ 1.0, -1.0 ] ```
From 093c27881e1ca4500a71aa522491f94b0ccd4c30 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 3 Oct 2018 03:16:47 -0700 Subject: [PATCH 0632/1062] Document static methods --- .../@stdlib/array/float64/README.md | 57 ++++++++++++++++++- .../@stdlib/array/int16/README.md | 57 ++++++++++++++++++- .../@stdlib/array/int32/README.md | 57 ++++++++++++++++++- lib/node_modules/@stdlib/array/int8/README.md | 57 ++++++++++++++++++- .../@stdlib/array/uint16/README.md | 57 ++++++++++++++++++- .../@stdlib/array/uint32/README.md | 57 ++++++++++++++++++- .../@stdlib/array/uint8/README.md | 57 ++++++++++++++++++- .../@stdlib/array/uint8c/README.md | 57 ++++++++++++++++++- 8 files changed, 448 insertions(+), 8 deletions(-) diff --git a/lib/node_modules/@stdlib/array/float64/README.md b/lib/node_modules/@stdlib/array/float64/README.md index a29937d39fee..9dabec62b2d7 100644 --- a/lib/node_modules/@stdlib/array/float64/README.md +++ b/lib/node_modules/@stdlib/array/float64/README.md @@ -205,7 +205,62 @@ var len = arr.length; ### Methods -TODO: add methods + + +#### Float64Array.from( src\[, map\[, thisArg]] ) + +Creates a new typed array from an array-like `object` or an iterable. + +```javascript +var arr = Float64Array.from( [ 1.0, -1.0 ] ); +// returns [ 1.0, -1.0 ] +``` + +To invoke a function for each `src` value, provide a callback function. + +```javascript +function mapFcn( v ) { + return v * 2.0; +} + +var arr = Float64Array.from( [ 1.0, -1.0 ], mapFcn ); +// returns [ 2.0, -2.0 ] +``` + +A callback function is provided two arguments: + +- `value`: source value +- `index`: source index + +To set the callback execution context, provide a `thisArg`. + +```javascript +function mapFcn( v ) { + this.count += 1; + return v * 2.0; +} + +var ctx = { + 'count': 0 +}; + +var arr = Float64Array.from( [ 1.0, -1.0 ], mapFcn, ctx ); +// returns [ 2.0, -2.0 ] + +var n = ctx.count; +// returns 2 +``` + + + +#### Float64Array.of( element0\[, element1\[, ...\[, elementN]]] ) + +Creates a new typed array from a variable number of arguments. + +```javascript +var arr = Float64Array.of( 1.0, -1.0 ); +// returns [ 1.0, -1.0 ] +```
diff --git a/lib/node_modules/@stdlib/array/int16/README.md b/lib/node_modules/@stdlib/array/int16/README.md index a30311332d8d..ae5adf8b831c 100644 --- a/lib/node_modules/@stdlib/array/int16/README.md +++ b/lib/node_modules/@stdlib/array/int16/README.md @@ -205,7 +205,62 @@ var len = arr.length; ### Methods -TODO: add methods + + +#### Int16Array.from( src\[, map\[, thisArg]] ) + +Creates a new typed array from an array-like `object` or an iterable. + +```javascript +var arr = Int16Array.from( [ 1, 2 ] ); +// returns [ 1, 2 ] +``` + +To invoke a function for each `src` value, provide a callback function. + +```javascript +function mapFcn( v ) { + return v * 2; +} + +var arr = Int16Array.from( [ 1, 2 ], mapFcn ); +// returns [ 2, 4 ] +``` + +A callback function is provided two arguments: + +- `value`: source value +- `index`: source index + +To set the callback execution context, provide a `thisArg`. + +```javascript +function mapFcn( v ) { + this.count += 1; + return v * 2; +} + +var ctx = { + 'count': 0 +}; + +var arr = Int16Array.from( [ 1, 2 ], mapFcn, ctx ); +// returns [ 2, 4 ] + +var n = ctx.count; +// returns 2 +``` + + + +#### Int16Array.of( element0\[, element1\[, ...\[, elementN]]] ) + +Creates a new typed array from a variable number of arguments. + +```javascript +var arr = Int16Array.of( 1, 2 ); +// returns [ 1, 2 ] +```
diff --git a/lib/node_modules/@stdlib/array/int32/README.md b/lib/node_modules/@stdlib/array/int32/README.md index c6edfe86a095..c2ecff8e0b39 100644 --- a/lib/node_modules/@stdlib/array/int32/README.md +++ b/lib/node_modules/@stdlib/array/int32/README.md @@ -205,7 +205,62 @@ var len = arr.length; ### Methods -TODO: add methods + + +#### Int32Array.from( src\[, map\[, thisArg]] ) + +Creates a new typed array from an array-like `object` or an iterable. + +```javascript +var arr = Int32Array.from( [ 1, 2 ] ); +// returns [ 1, 2 ] +``` + +To invoke a function for each `src` value, provide a callback function. + +```javascript +function mapFcn( v ) { + return v * 2; +} + +var arr = Int32Array.from( [ 1, 2 ], mapFcn ); +// returns [ 2, 4 ] +``` + +A callback function is provided two arguments: + +- `value`: source value +- `index`: source index + +To set the callback execution context, provide a `thisArg`. + +```javascript +function mapFcn( v ) { + this.count += 1; + return v * 2; +} + +var ctx = { + 'count': 0 +}; + +var arr = Int32Array.from( [ 1, 2 ], mapFcn, ctx ); +// returns [ 2, 4 ] + +var n = ctx.count; +// returns 2 +``` + + + +#### Int32Array.of( element0\[, element1\[, ...\[, elementN]]] ) + +Creates a new typed array from a variable number of arguments. + +```javascript +var arr = Int32Array.of( 1, 2 ); +// returns [ 1, 2 ] +``` diff --git a/lib/node_modules/@stdlib/array/int8/README.md b/lib/node_modules/@stdlib/array/int8/README.md index 1b3b29fd2037..d980a8fa807b 100644 --- a/lib/node_modules/@stdlib/array/int8/README.md +++ b/lib/node_modules/@stdlib/array/int8/README.md @@ -205,7 +205,62 @@ var len = arr.length; ### Methods -TODO: add methods + + +#### Int8Array.from( src\[, map\[, thisArg]] ) + +Creates a new typed array from an array-like `object` or an iterable. + +```javascript +var arr = Int8Array.from( [ 1, 2 ] ); +// returns [ 1, 2 ] +``` + +To invoke a function for each `src` value, provide a callback function. + +```javascript +function mapFcn( v ) { + return v * 2; +} + +var arr = Int8Array.from( [ 1, 2 ], mapFcn ); +// returns [ 2, 4 ] +``` + +A callback function is provided two arguments: + +- `value`: source value +- `index`: source index + +To set the callback execution context, provide a `thisArg`. + +```javascript +function mapFcn( v ) { + this.count += 1; + return v * 2; +} + +var ctx = { + 'count': 0 +}; + +var arr = Int8Array.from( [ 1, 2 ], mapFcn, ctx ); +// returns [ 2, 4 ] + +var n = ctx.count; +// returns 2 +``` + + + +#### Int8Array.of( element0\[, element1\[, ...\[, elementN]]] ) + +Creates a new typed array from a variable number of arguments. + +```javascript +var arr = Int8Array.of( 1, 2 ); +// returns [ 1, 2 ] +``` diff --git a/lib/node_modules/@stdlib/array/uint16/README.md b/lib/node_modules/@stdlib/array/uint16/README.md index 02a3c14a6b0e..9f661ca5b254 100644 --- a/lib/node_modules/@stdlib/array/uint16/README.md +++ b/lib/node_modules/@stdlib/array/uint16/README.md @@ -205,7 +205,62 @@ var len = arr.length; ### Methods -TODO: add methods + + +#### Uint16Array.from( src\[, map\[, thisArg]] ) + +Creates a new typed array from an array-like `object` or an iterable. + +```javascript +var arr = Uint16Array.from( [ 1, 2 ] ); +// returns [ 1, 2 ] +``` + +To invoke a function for each `src` value, provide a callback function. + +```javascript +function mapFcn( v ) { + return v * 2; +} + +var arr = Uint16Array.from( [ 1, 2 ], mapFcn ); +// returns [ 2, 4 ] +``` + +A callback function is provided two arguments: + +- `value`: source value +- `index`: source index + +To set the callback execution context, provide a `thisArg`. + +```javascript +function mapFcn( v ) { + this.count += 1; + return v * 2; +} + +var ctx = { + 'count': 0 +}; + +var arr = Uint16Array.from( [ 1, 2 ], mapFcn, ctx ); +// returns [ 2, 4 ] + +var n = ctx.count; +// returns 2 +``` + + + +#### Uint16Array.of( element0\[, element1\[, ...\[, elementN]]] ) + +Creates a new typed array from a variable number of arguments. + +```javascript +var arr = Uint16Array.of( 1, 2 ); +// returns [ 1, 2 ] +``` diff --git a/lib/node_modules/@stdlib/array/uint32/README.md b/lib/node_modules/@stdlib/array/uint32/README.md index c04adc10aa08..d39109179de3 100644 --- a/lib/node_modules/@stdlib/array/uint32/README.md +++ b/lib/node_modules/@stdlib/array/uint32/README.md @@ -205,7 +205,62 @@ var len = arr.length; ### Methods -TODO: add methods + + +#### Uint32Array.from( src\[, map\[, thisArg]] ) + +Creates a new typed array from an array-like `object` or an iterable. + +```javascript +var arr = Uint32Array.from( [ 1, 2 ] ); +// returns [ 1, 2 ] +``` + +To invoke a function for each `src` value, provide a callback function. + +```javascript +function mapFcn( v ) { + return v * 2; +} + +var arr = Uint32Array.from( [ 1, 2 ], mapFcn ); +// returns [ 2, 4 ] +``` + +A callback function is provided two arguments: + +- `value`: source value +- `index`: source index + +To set the callback execution context, provide a `thisArg`. + +```javascript +function mapFcn( v ) { + this.count += 1; + return v * 2; +} + +var ctx = { + 'count': 0 +}; + +var arr = Uint32Array.from( [ 1, 2 ], mapFcn, ctx ); +// returns [ 2, 4 ] + +var n = ctx.count; +// returns 2 +``` + + + +#### Uint32Array.of( element0\[, element1\[, ...\[, elementN]]] ) + +Creates a new typed array from a variable number of arguments. + +```javascript +var arr = Uint32Array.of( 1, 2 ); +// returns [ 1, 2 ] +``` diff --git a/lib/node_modules/@stdlib/array/uint8/README.md b/lib/node_modules/@stdlib/array/uint8/README.md index defe18044003..c08b717e64ac 100644 --- a/lib/node_modules/@stdlib/array/uint8/README.md +++ b/lib/node_modules/@stdlib/array/uint8/README.md @@ -205,7 +205,62 @@ var len = arr.length; ### Methods -TODO: add methods + + +#### Uint8Array.from( src\[, map\[, thisArg]] ) + +Creates a new typed array from an array-like `object` or an iterable. + +```javascript +var arr = Uint8Array.from( [ 1, 2 ] ); +// returns [ 1, 2 ] +``` + +To invoke a function for each `src` value, provide a callback function. + +```javascript +function mapFcn( v ) { + return v * 2; +} + +var arr = Uint8Array.from( [ 1, 2 ], mapFcn ); +// returns [ 2, 4 ] +``` + +A callback function is provided two arguments: + +- `value`: source value +- `index`: source index + +To set the callback execution context, provide a `thisArg`. + +```javascript +function mapFcn( v ) { + this.count += 1; + return v * 2; +} + +var ctx = { + 'count': 0 +}; + +var arr = Uint8Array.from( [ 1, 2 ], mapFcn, ctx ); +// returns [ 2, 4 ] + +var n = ctx.count; +// returns 2 +``` + + + +#### Uint8Array.of( element0\[, element1\[, ...\[, elementN]]] ) + +Creates a new typed array from a variable number of arguments. + +```javascript +var arr = Uint8Array.of( 1, 2 ); +// returns [ 1, 2 ] +``` diff --git a/lib/node_modules/@stdlib/array/uint8c/README.md b/lib/node_modules/@stdlib/array/uint8c/README.md index 7cd94d7b4c71..d0bafd181a9a 100644 --- a/lib/node_modules/@stdlib/array/uint8c/README.md +++ b/lib/node_modules/@stdlib/array/uint8c/README.md @@ -205,7 +205,62 @@ var len = arr.length; ### Methods -TODO: add methods + + +#### Uint8ClampedArray.from( src\[, map\[, thisArg]] ) + +Creates a new typed array from an array-like `object` or an iterable. + +```javascript +var arr = Uint8ClampedArray.from( [ 1, 2 ] ); +// returns [ 1, 2 ] +``` + +To invoke a function for each `src` value, provide a callback function. + +```javascript +function mapFcn( v ) { + return v * 2; +} + +var arr = Uint8ClampedArray.from( [ 1, 2 ], mapFcn ); +// returns [ 2, 4 ] +``` + +A callback function is provided two arguments: + +- `value`: source value +- `index`: source index + +To set the callback execution context, provide a `thisArg`. + +```javascript +function mapFcn( v ) { + this.count += 1; + return v * 2; +} + +var ctx = { + 'count': 0 +}; + +var arr = Uint8ClampedArray.from( [ 1, 2 ], mapFcn, ctx ); +// returns [ 2, 4 ] + +var n = ctx.count; +// returns 2 +``` + + + +#### Uint8ClampedArray.of( element0\[, element1\[, ...\[, elementN]]] ) + +Creates a new typed array from a variable number of arguments. + +```javascript +var arr = Uint8ClampedArray.of( 1, 2 ); +// returns [ 1, 2 ] +``` From ae6bfb7ded82c4d14f439413acb048dbb697f42e Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 3 Oct 2018 13:58:26 -0700 Subject: [PATCH 0633/1062] Fix examples --- .../@stdlib/utils/named-typed-tuple/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md index cde9fbc6d908..9638a0430692 100644 --- a/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md +++ b/lib/node_modules/@stdlib/utils/named-typed-tuple/README.md @@ -1408,7 +1408,7 @@ var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] ); var tuple = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] ); -var field = tuple.lastFieldOf( 0.0, 3 ); +var field = tuple.lastFieldOf( 0.0, 2 ); // returns 'y' ``` @@ -1419,7 +1419,7 @@ var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] ); var tuple = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] ); -var field = tuple.lastFieldOf( 0.0, -2 ); +var field = tuple.lastFieldOf( 0.0, -3 ); // returns 'y' ``` @@ -1450,7 +1450,7 @@ var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] ); var tuple = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] ); -var idx = tuple.lastIndexOf( 0.0, 3 ); +var idx = tuple.lastIndexOf( 0.0, 2 ); // returns 1 ``` @@ -1461,7 +1461,7 @@ var factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] ); var tuple = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] ); -var idx = tuple.lastIndexOf( 0.0, -2 ); +var idx = tuple.lastIndexOf( 0.0, -3 ); // returns 1 ``` From 26323a538ee15bb199593608c34f16341310288d Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 3 Oct 2018 15:17:54 -0700 Subject: [PATCH 0634/1062] Document prototype methods --- .../@stdlib/array/float32/README.md | 1145 ++++++++++++++++- 1 file changed, 1133 insertions(+), 12 deletions(-) diff --git a/lib/node_modules/@stdlib/array/float32/README.md b/lib/node_modules/@stdlib/array/float32/README.md index c1f66b0e0a47..b8fd8ff13edc 100644 --- a/lib/node_modules/@stdlib/array/float32/README.md +++ b/lib/node_modules/@stdlib/array/float32/README.md @@ -89,7 +89,7 @@ var arr = new Float32Array( [ 0.5, 0.5, 0.5 ] ); #### Float32Array( buffer\[, byteOffset\[, length]] ) -Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][mdn-arraybuffer]. +Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][@stdlib/array/buffer]. @@ -135,7 +135,7 @@ var str = Float32Array.name; #### Float32Array.prototype.buffer -**Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. +**Read-only** property which returns the [`ArrayBuffer`][@stdlib/array/buffer] referenced by the [typed array][mdn-typed-array]. @@ -163,7 +163,7 @@ var byteLength = arr.byteLength; #### Float32Array.prototype.byteOffset -**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. +**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][@stdlib/array/buffer]. @@ -211,20 +211,24 @@ var len = arr.length; Creates a new typed array from an array-like `object` or an iterable. + + ```javascript -var arr = Float32Array.from( [ 1.0, -1.0 ] ); -// returns [ 1.0, -1.0 ] +var arr = Float32Array.from( [ 1.0, 2.0 ] ); +// returns [ 1.0, 2.0 ] ``` To invoke a function for each `src` value, provide a callback function. + + ```javascript function mapFcn( v ) { return v * 2.0; } -var arr = Float32Array.from( [ 1.0, -1.0 ], mapFcn ); -// returns [ 2.0, -2.0 ] +var arr = Float32Array.from( [ 1.0, 2.0 ], mapFcn ); +// returns [ 2.0, 4.0 ] ``` A callback function is provided two arguments: @@ -234,6 +238,8 @@ A callback function is provided two arguments: To set the callback execution context, provide a `thisArg`. + + ```javascript function mapFcn( v ) { this.count += 1; @@ -244,8 +250,8 @@ var ctx = { 'count': 0 }; -var arr = Float32Array.from( [ 1.0, -1.0 ], mapFcn, ctx ); -// returns [ 2.0, -2.0 ] +var arr = Float32Array.from( [ 1.0, 2.0 ], mapFcn, ctx ); +// returns [ 2.0, 4.0 ] var n = ctx.count; // returns 2 @@ -257,9 +263,1124 @@ var n = ctx.count; Creates a new typed array from a variable number of arguments. + + +```javascript +var arr = Float32Array.of( 1.0, 2.0 ); +// returns [ 1.0, 2.0 ] +``` + + + +#### Float32Array.prototype.copyWithin( target, start\[, end] ) + +Copies a sequence of elements within an array starting at `start` and ending at `end` (non-inclusive) to the position starting at `target`. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + +// Copy the last two elements to the first two elements: +arr.copyWithin( 0, 3 ); + +var v = arr[ 0 ]; +// returns 4.0 + +v = arr[ 1 ]; +// returns 5.0 +``` + +By default, `end` equals the number of array elements (i.e., one more than the last array index). To limit the sequence length, provide an `end` argument. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( 3, 0, 2 ); + +var v = arr[ 3 ]; +// returns 1.0 + +v = arr[ 4 ]; +// returns 2.0 +``` + +When a `target`, `start`, and/or `end` index is negative, the respective index is determined relative to the last array element. The following example achieves the same behavior as the previous example: + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( -2, -5, -3 ); + +var v = arr[ 3 ]; +// returns 1.0 + +v = arr[ 4 ]; +// returns 2.0 +``` + + + +#### Float32Array.prototype.entries() + +Returns an iterator for iterating over array key-value pairs. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0 ] ); + +// Create an iterator: +var it = arr.entries(); + +// Iterate over key-value pairs... +var v = it.next().value; +// returns [ 0, 1.0 ] + +v = it.next().value; +// returns [ 1, 2.0 ] + +var bool = it.next().done; +// returns true +``` + + + +#### Float32Array.prototype.every( predicate\[, thisArg] ) + +Tests whether all array elements pass a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v <= 1.0 ); +} + +var arr = new Float32Array( [ 1.0, 2.0 ] ); + +var bool = arr.every( predicate ); +// returns false +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 1.0 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Float32Array( [ 1.0, 2.0 ] ); + +var bool = arr.every( predicate, ctx ); +// returns true + +var n = ctx.count; +// returns 2 +``` + + + +#### Float32Array.prototype.fill( value\[, start\[, end]] ) + +Fills an array from a `start` index to an `end` index (non-inclusive) with a provided `value`. + + + +```javascript +var arr = new Float32Array( 2 ); + +// Set all array elements to the same value: +arr.fill( 2.0 ); + +var v = arr[ 0 ]; +// returns 2.0 + +v = arr[ 1 ]; +// returns 2.0 + +// Set all array elements starting from the first index to the same value: +arr.fill( 3.0, 1 ); + +v = arr[ 0 ]; +// returns 2.0 + +v = arr[ 1 ]; +// returns 3.0 + +// Set all array elements, except the last element, to the same value: +arr.fill( 4.0, 0, arr.length-1 ); + +v = arr[ 0 ]; +// returns 4.0 + +v = arr[ 1 ]; +// returns 3.0 +``` + +When a `start` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr = new Float32Array( 2 ); + +// Set all array elements, except the last element, to the same value: +arr.fill( 2.0, -arr.length, -1 ); + +var v = arr[ 0 ]; +// returns 2.0 + +v = arr[ 1 ]; +// returns 0.0 +``` + + + +#### Float32Array.prototype.filter( predicate\[, thisArg] ) + +Creates a new array (of the same data type as the host array) which includes those elements for which a `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v >= 2.0 ); +} + +var arr1 = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [ 2.0, 3.0 ] +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns an empty array. + + + +```javascript +function predicate( v ) { + return ( v >= 10.0 ); +} + +var arr1 = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [] +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2.0 ); +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.filter( predicate, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Float32Array.prototype.find( predicate\[, thisArg] ) + +Returns the first array element for which a provided `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v > 2.0 ); +} + +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var v = arr.find( predicate ); +// returns 3.0 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `undefined`. + + + +```javascript +function predicate( v ) { + return ( v < 1.0 ); +} + +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var v = arr.find( predicate ); +// returns undefined +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v > 2.0 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var v = arr.find( predicate, ctx ); +// returns 3.0 + +var n = ctx.count; +// returns 3 +``` + + + +#### Float32Array.prototype.findIndex( predicate\[, thisArg] ) + +Returns the index of the first array element for which a provided `predicate` function returns a truthy value. + + + ```javascript -var arr = Float32Array.of( 1.0, -1.0 ); -// returns [ 1.0, -1.0 ] +function predicate( v ) { + return ( v >= 3.0 ); +} + +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var idx = arr.findIndex( predicate ); +// returns 2 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `-1`. + + + +```javascript +function predicate( v ) { + return ( v < 1.0 ); +} + +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var idx = arr.findIndex( predicate ); +// returns -1 +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 3.0 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var idx = arr.findIndex( predicate, ctx ); +// returns 2 + +var n = ctx.count; +// returns 3 +``` + + + +#### Float32Array.prototype.forEach( fcn\[, thisArg] ) + +Invokes a callback for each array element. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var str = ''; + +function fcn( v, i ) { + str += i + ':' + v; + if ( i < arr.length-1 ) { + str += ' '; + } +} + +arr.forEach( fcn ); + +console.log( str ); +// => '0:1 1:2 2:3' +``` + +The callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn() { + this.count += 1; +} + +var ctx = { + 'count': 0 +}; + +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +arr.forEach( fcn, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Float32Array.prototype.includes( searchElement\[, fromIndex] ) + +Returns a `boolean` indicating whether an array includes a search element. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var bool = arr.includes( 3.0 ); +// returns true + +bool = arr.includes( 0.0 ); +// returns false +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var bool = arr.includes( 1.0, 1 ); +// returns false +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +bool = arr.includes( 1.0, -2 ); +// returns false +``` + +The method does **not** distinguish between signed and unsigned zero. + + + +#### Float32Array.prototype.indexOf( searchElement\[, fromIndex] ) + +Returns the index of the first array element strictly equal to a search element. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var idx = arr.indexOf( 3.0 ); +// returns 2 + +idx = arr.indexOf( 0.0 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var idx = arr.indexOf( 1.0, 1 ); +// returns -1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var idx = arr.indexOf( 1.0, -2 ); +// returns -1 +``` + +The method does **not** distinguish between signed and unsigned zero. + + + +#### Float32Array.prototype.join( \[separator] ) + +Serializes an array by joining all array elements as a string. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var str = arr.join(); +// returns '1,2,3' +``` + +By default, the method delineates array elements using a comma `,`. To specify a custom separator, provide a `separator` string. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var str = arr.join( '|' ); +// returns '1|2|3' +``` + + + +#### Float32Array.prototype.keys() + +Returns an iterator for iterating over array keys. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0 ] ); + +// Create an iterator: +var it = arr.keys(); + +// Iterate over keys... +var v = it.next().value; +// returns 0 + +v = it.next().value; +// returns 1 + +var bool = it.next().done; +// returns true +``` + + + +#### Float32Array.prototype.lastIndexOf( searchElement\[, fromIndex] ) + +Returns the index of the last array element strictly equal to a search element, iterating from right to left. + + + +```javascript +var arr = new Float32Array( [ 1.0, 0.0, 2.0, 0.0, 1.0 ] ); + +var idx = arr.lastIndexOf( 0.0 ); +// returns 3 + +idx = arr.lastIndexOf( 3.0 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = -1`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Float32Array( [ 1.0, 0.0, 2.0, 0.0, 1.0 ] ); + +var idx = arr.lastIndexOf( 0.0, 2 ); +// returns 1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Float32Array( [ 1.0, 0.0, 2.0, 0.0, 1.0 ] ); + +var idx = arr.lastIndexOf( 0.0, -3 ); +// returns 1 +``` + +The method does **not** distinguish between signed and unsigned zero. + + + +#### Float32Array.prototype.map( fcn\[, thisArg] ) + +Maps each array element to an element in a new array having the same data type as the host array. + + + +```javascript +function fcn( v ) { + return v * 2.0; +} + +var arr1 = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.map( fcn ); +// returns [ 2.0, 4.0, 6.0 ] +``` + +A callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn( v ) { + this.count += 1; + return v * 2.0; +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.map( fcn ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Float32Array.prototype.reduce( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Float32Array( [ 2.0, 1.0, 3.0 ] ); + +var v = arr.reduce( fcn ); +// returns 12.0 +``` + +If not provided an initial value, the method invokes a provided function with the first array element as the first argument and the second array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the first array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Float32Array( [ 2.0, 1.0, 3.0 ] ); + +var v = arr.reduce( fcn, 0.0 ); +// returns 14.0 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Float32Array.prototype.reduceRight( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result, iterating from right to left. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Float32Array( [ 2.0, 1.0, 3.0 ] ); + +var v = arr.reduce( fcn ); +// returns 8.0 +``` + +If not provided an initial value, the method invokes a provided function with the last array element as the first argument and the second-to-last array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the last array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Float32Array( [ 2.0, 1.0, 3.0 ] ); + +var v = arr.reduce( fcn, 0.0 ); +// returns 14.0 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Float32Array.prototype.reverse() + +Reverses an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Float32Array( [ 2.0, 0.0, 3.0 ] ); + +// Reverse the array: +arr.reverse(); + +var v = arr[ 0 ]; +// returns 3.0 + +v = arr[ 1 ]; +// returns 0.0 + +v = arr[ 2 ]; +// returns 2.0 +``` + + + +#### Float32Array.prototype.set( arr\[, offset] ) + +Sets array elements. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); +// returns [ 1.0, 2.0, 3.0 ] + +// Set the first two array elements: +arr.set( [ 4.0, 5.0 ] ); + +var v = arr[ 0 ]; +// returns 4.0 + +v = arr[ 1 ]; +// returns 5.0 +``` + +By default, the method starts writing values at the first array index. To specify an alternative index, provide an index `offset`. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); +// returns [ 1.0, 2.0, 3.0 ] + +// Set the last two array elements: +arr.set( [ 4.0, 5.0 ], 1 ); + +var v = arr[ 1 ]; +// returns 4.0 + +v = arr[ 2 ]; +// returns 5.0 +``` + + + +#### Float32Array.prototype.slice( \[begin\[, end]] ) + +Copies array elements to a new array with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.slice(); + +var bool = ( arr1 === arr2 ); +// returns false + +bool = ( arr1.buffer === arr2.buffer ); +// returns false + +var v = arr2[ 0 ]; +// returns 1.0 + +v = arr2[ 1 ]; +// returns 2.0 + +v = arr2[ 2 ]; +// returns 3.0 +``` + +By default, the method copies elements beginning with the first array element. To specify an alternative array index at which to begin copying, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.slice( 1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 2.0 + +v = arr2[ 1 ]; +// returns 3.0 +``` + +By default, the method copies all array elements after `begin`. To specify an alternative array index at which to end copying, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.slice( 0, 2 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1.0 + +v = arr2[ 1 ]; +// returns 2.0 +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.slice( -arr1.length, -1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1.0 + +v = arr2[ 1 ]; +// returns 2.0 +``` + + + +#### Float32Array.prototype.some( predicate\[, thisArg] ) + +Tests whether at least one array element passes a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v >= 2.0 ); +} + +var arr = new Float32Array( [ 1.0, 2.0 ] ); + +var bool = arr.some( predicate ); +// returns true +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2.0 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Float32Array( [ 1.0, 1.0 ] ); + +var bool = arr.some( predicate, ctx ); +// returns false + +var n = ctx.count; +// returns 2 +``` + + + +#### Float32Array.prototype.sort( \[compareFunction] ) + +Sorts an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Float32Array( [ 2.0, 3.0, 0.0 ] ); + +// Sort the array (in ascending order): +arr.sort(); + +var v = arr[ 0 ]; +// returns 0.0 + +v = arr[ 1 ]; +// returns 2.0 + +v = arr[ 2 ]; +// returns 3.0 +``` + +By default, the method sorts array elements in ascending order. To impose a custom order, provide a `compareFunction`. + + + +```javascript +function descending( a, b ) { + return b - a; +} + +var arr = new Float32Array( [ 2.0, 3.0, 0.0 ] ); + +// Sort the array (in descending order): +arr.sort( descending ); + +var v = arr[ 0 ]; +// returns 3.0 + +v = arr[ 1 ]; +// returns 2.0 + +v = arr[ 2 ]; +// returns 0.0 +``` + +The comparison function is provided two array elements, `a` and `b`, per invocation, and its return value determines the sort order as follows: + +- If the comparison function returns a value **less** than zero, then the method sorts `a` to an index lower than `b` (i.e., `a` should come **before** `b`). +- If the comparison function returns a value **greater** than zero, then the method sorts `a` to an index higher than `b` (i.e., `b` should come **before** `a`). +- If the comparison function returns **zero**, then the relative order of `a` and `b` _should_ remain unchanged. + + + +#### Float32Array.prototype.subarray( \[begin\[, end]] ) + +Creates a new typed array view over the same underlying [`ArrayBuffer`][@stdlib/array/buffer] and with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.subarray(); +// returns [ 1.0, 2.0, 3.0 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view beginning with the first array element. To specify an alternative array index at which to begin, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.subarray( 1 ); +// returns [ 2.0, 3.0 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view which includes all array elements after `begin`. To limit the number of array elements after `begin`, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.subarray( 0, 2 ); +// returns [ 1.0, 2.0 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.subarray( -arr1.length, -1 ); +// returns [ 1.0, 2.0 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +If the method is unable to resolve indices to a non-empty array subsequence, the method returns an empty typed array. + + + +```javascript +var arr1 = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.subarray( 10, -1 ); +// returns [] +``` + + + +#### Float32Array.prototype.toLocaleString( \[locales\[, options]] ) + +Serializes an array as a locale-specific `string`. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var str = arr.toLocaleString(); +// returns '1,2,3' +``` + + + +#### Float32Array.prototype.toString() + +Serializes an array as a `string`. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + +var str = arr.toString(); +// returns '1,2,3' +``` + + + +#### Float32Array.prototype.values() + +Returns an iterator for iterating over array elements. + + + +```javascript +var arr = new Float32Array( [ 1.0, 2.0 ] ); + +// Create an iterator: +var it = arr.values(); + +// Iterate over array elements... +var v = it.next().value; +// returns 1.0 + +v = it.next().value; +// returns 2.0 + +var bool = it.next().done; +// returns true ``` @@ -316,7 +1437,7 @@ console.log( arr ); [mdn-typed-array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray -[mdn-arraybuffer]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer +[@stdlib/array/buffer]: https://github.com/stdlib-js/stdlib From f02efc5af31740800b01c6ded0388d1839b2db52 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 3 Oct 2018 15:20:01 -0700 Subject: [PATCH 0635/1062] Update reference ids and associated links --- lib/node_modules/@stdlib/array/float64/README.md | 8 ++++---- lib/node_modules/@stdlib/array/int16/README.md | 8 ++++---- lib/node_modules/@stdlib/array/int32/README.md | 8 ++++---- lib/node_modules/@stdlib/array/int8/README.md | 8 ++++---- lib/node_modules/@stdlib/array/uint16/README.md | 8 ++++---- lib/node_modules/@stdlib/array/uint32/README.md | 8 ++++---- lib/node_modules/@stdlib/array/uint8/README.md | 8 ++++---- lib/node_modules/@stdlib/array/uint8c/README.md | 8 ++++---- 8 files changed, 32 insertions(+), 32 deletions(-) diff --git a/lib/node_modules/@stdlib/array/float64/README.md b/lib/node_modules/@stdlib/array/float64/README.md index 9dabec62b2d7..8bbf896ff531 100644 --- a/lib/node_modules/@stdlib/array/float64/README.md +++ b/lib/node_modules/@stdlib/array/float64/README.md @@ -89,7 +89,7 @@ var arr = new Float64Array( [ 0.5, 0.5, 0.5 ] ); #### Float64Array( buffer\[, byteOffset\[, length]] ) -Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][mdn-arraybuffer]. +Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][@stdlib/array/buffer]. @@ -135,7 +135,7 @@ var str = Float64Array.name; #### Float64Array.prototype.buffer -**Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. +**Read-only** property which returns the [`ArrayBuffer`][@stdlib/array/buffer] referenced by the [typed array][mdn-typed-array]. @@ -163,7 +163,7 @@ var byteLength = arr.byteLength; #### Float64Array.prototype.byteOffset -**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. +**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][@stdlib/array/buffer]. @@ -316,7 +316,7 @@ console.log( arr ); [mdn-typed-array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray -[mdn-arraybuffer]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer +[@stdlib/array/buffer]: https://github.com/stdlib-js/stdlib diff --git a/lib/node_modules/@stdlib/array/int16/README.md b/lib/node_modules/@stdlib/array/int16/README.md index ae5adf8b831c..dc3716e1c5e7 100644 --- a/lib/node_modules/@stdlib/array/int16/README.md +++ b/lib/node_modules/@stdlib/array/int16/README.md @@ -89,7 +89,7 @@ var arr = new Int16Array( [ 5.0, 5.0, 5.0 ] ); #### Int16Array( buffer\[, byteOffset\[, length]] ) -Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][mdn-arraybuffer]. +Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][@stdlib/array/buffer]. @@ -135,7 +135,7 @@ var str = Int16Array.name; #### Int16Array.prototype.buffer -**Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. +**Read-only** property which returns the [`ArrayBuffer`][@stdlib/array/buffer] referenced by the [typed array][mdn-typed-array]. @@ -163,7 +163,7 @@ var byteLength = arr.byteLength; #### Int16Array.prototype.byteOffset -**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. +**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][@stdlib/array/buffer]. @@ -317,7 +317,7 @@ console.log( arr ); [mdn-typed-array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray -[mdn-arraybuffer]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer +[@stdlib/array/buffer]: https://github.com/stdlib-js/stdlib diff --git a/lib/node_modules/@stdlib/array/int32/README.md b/lib/node_modules/@stdlib/array/int32/README.md index c2ecff8e0b39..34a79f67a9b7 100644 --- a/lib/node_modules/@stdlib/array/int32/README.md +++ b/lib/node_modules/@stdlib/array/int32/README.md @@ -89,7 +89,7 @@ var arr = new Int32Array( [ 5.0, 5.0, 5.0 ] ); #### Int32Array( buffer\[, byteOffset\[, length]] ) -Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][mdn-arraybuffer]. +Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][@stdlib/array/buffer]. @@ -135,7 +135,7 @@ var str = Int32Array.name; #### Int32Array.prototype.buffer -**Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. +**Read-only** property which returns the [`ArrayBuffer`][@stdlib/array/buffer] referenced by the [typed array][mdn-typed-array]. @@ -163,7 +163,7 @@ var byteLength = arr.byteLength; #### Int32Array.prototype.byteOffset -**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. +**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][@stdlib/array/buffer]. @@ -317,7 +317,7 @@ console.log( arr ); [mdn-typed-array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray -[mdn-arraybuffer]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer +[@stdlib/array/buffer]: https://github.com/stdlib-js/stdlib diff --git a/lib/node_modules/@stdlib/array/int8/README.md b/lib/node_modules/@stdlib/array/int8/README.md index d980a8fa807b..ce6920111cfd 100644 --- a/lib/node_modules/@stdlib/array/int8/README.md +++ b/lib/node_modules/@stdlib/array/int8/README.md @@ -89,7 +89,7 @@ var arr = new Int8Array( [ 5.0, 5.0, 5.0 ] ); #### Int8Array( buffer\[, byteOffset\[, length]] ) -Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][mdn-arraybuffer]. +Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][@stdlib/array/buffer]. @@ -135,7 +135,7 @@ var str = Int8Array.name; #### Int8Array.prototype.buffer -**Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. +**Read-only** property which returns the [`ArrayBuffer`][@stdlib/array/buffer] referenced by the [typed array][mdn-typed-array]. @@ -163,7 +163,7 @@ var byteLength = arr.byteLength; #### Int8Array.prototype.byteOffset -**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. +**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][@stdlib/array/buffer]. @@ -317,7 +317,7 @@ console.log( arr ); [mdn-typed-array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray -[mdn-arraybuffer]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer +[@stdlib/array/buffer]: https://github.com/stdlib-js/stdlib diff --git a/lib/node_modules/@stdlib/array/uint16/README.md b/lib/node_modules/@stdlib/array/uint16/README.md index 9f661ca5b254..0ab8193f8bea 100644 --- a/lib/node_modules/@stdlib/array/uint16/README.md +++ b/lib/node_modules/@stdlib/array/uint16/README.md @@ -89,7 +89,7 @@ var arr = new Uint16Array( [ 5.0, 5.0, 5.0 ] ); #### Uint16Array( buffer\[, byteOffset\[, length]] ) -Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][mdn-arraybuffer]. +Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][@stdlib/array/buffer]. @@ -135,7 +135,7 @@ var str = Uint16Array.name; #### Uint16Array.prototype.buffer -**Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. +**Read-only** property which returns the [`ArrayBuffer`][@stdlib/array/buffer] referenced by the [typed array][mdn-typed-array]. @@ -163,7 +163,7 @@ var byteLength = arr.byteLength; #### Uint16Array.prototype.byteOffset -**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. +**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][@stdlib/array/buffer]. @@ -317,7 +317,7 @@ console.log( arr ); [mdn-typed-array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray -[mdn-arraybuffer]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer +[@stdlib/array/buffer]: https://github.com/stdlib-js/stdlib diff --git a/lib/node_modules/@stdlib/array/uint32/README.md b/lib/node_modules/@stdlib/array/uint32/README.md index d39109179de3..7499bc61dfb7 100644 --- a/lib/node_modules/@stdlib/array/uint32/README.md +++ b/lib/node_modules/@stdlib/array/uint32/README.md @@ -89,7 +89,7 @@ var arr = new Uint32Array( [ 5.0, 5.0, 5.0 ] ); #### Uint32Array( buffer\[, byteOffset\[, length]] ) -Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][mdn-arraybuffer]. +Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][@stdlib/array/buffer]. @@ -135,7 +135,7 @@ var str = Uint32Array.name; #### Uint32Array.prototype.buffer -**Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. +**Read-only** property which returns the [`ArrayBuffer`][@stdlib/array/buffer] referenced by the [typed array][mdn-typed-array]. @@ -163,7 +163,7 @@ var byteLength = arr.byteLength; #### Uint32Array.prototype.byteOffset -**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. +**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][@stdlib/array/buffer]. @@ -317,7 +317,7 @@ console.log( arr ); [mdn-typed-array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray -[mdn-arraybuffer]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer +[@stdlib/array/buffer]: https://github.com/stdlib-js/stdlib diff --git a/lib/node_modules/@stdlib/array/uint8/README.md b/lib/node_modules/@stdlib/array/uint8/README.md index c08b717e64ac..38ab49685244 100644 --- a/lib/node_modules/@stdlib/array/uint8/README.md +++ b/lib/node_modules/@stdlib/array/uint8/README.md @@ -89,7 +89,7 @@ var arr = new Uint8Array( [ 5.0, 5.0, 5.0 ] ); #### Uint8Array( buffer\[, byteOffset\[, length]] ) -Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][mdn-arraybuffer]. +Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][@stdlib/array/buffer]. @@ -135,7 +135,7 @@ var str = Uint8Array.name; #### Uint8Array.prototype.buffer -**Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. +**Read-only** property which returns the [`ArrayBuffer`][@stdlib/array/buffer] referenced by the [typed array][mdn-typed-array]. @@ -163,7 +163,7 @@ var byteLength = arr.byteLength; #### Uint8Array.prototype.byteOffset -**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. +**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][@stdlib/array/buffer]. @@ -317,7 +317,7 @@ console.log( arr ); [mdn-typed-array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray -[mdn-arraybuffer]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer +[@stdlib/array/buffer]: https://github.com/stdlib-js/stdlib diff --git a/lib/node_modules/@stdlib/array/uint8c/README.md b/lib/node_modules/@stdlib/array/uint8c/README.md index d0bafd181a9a..6c045b53ac12 100644 --- a/lib/node_modules/@stdlib/array/uint8c/README.md +++ b/lib/node_modules/@stdlib/array/uint8c/README.md @@ -89,7 +89,7 @@ var arr = new Uint8ClampedArray( [ 5.0, 5.0, 5.0 ] ); #### Uint8ClampedArray( buffer\[, byteOffset\[, length]] ) -Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][mdn-arraybuffer]. +Returns a [typed array][mdn-typed-array] view of an [`ArrayBuffer`][@stdlib/array/buffer]. @@ -135,7 +135,7 @@ var str = Uint8ClampedArray.name; #### Uint8ClampedArray.prototype.buffer -**Read-only** property which returns the [`ArrayBuffer`][mdn-arraybuffer] referenced by the [typed array][mdn-typed-array]. +**Read-only** property which returns the [`ArrayBuffer`][@stdlib/array/buffer] referenced by the [typed array][mdn-typed-array]. @@ -163,7 +163,7 @@ var byteLength = arr.byteLength; #### Uint8ClampedArray.prototype.byteOffset -**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][mdn-arraybuffer]. +**Read-only** property which returns the offset (in bytes) of the [typed array][mdn-typed-array] from the start of its [`ArrayBuffer`][@stdlib/array/buffer]. @@ -317,7 +317,7 @@ console.log( arr ); [mdn-typed-array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray -[mdn-arraybuffer]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer +[@stdlib/array/buffer]: https://github.com/stdlib-js/stdlib From 529da0838f77ffc41e380a32ebe8592a93083ad8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 3 Oct 2018 15:34:24 -0700 Subject: [PATCH 0636/1062] Document prototype methods --- .../@stdlib/array/float64/README.md | 1113 +++++++++++++++++ .../@stdlib/array/int16/README.md | 1107 ++++++++++++++++ .../@stdlib/array/int32/README.md | 1107 ++++++++++++++++ lib/node_modules/@stdlib/array/int8/README.md | 1107 ++++++++++++++++ .../@stdlib/array/uint16/README.md | 1107 ++++++++++++++++ .../@stdlib/array/uint32/README.md | 1107 ++++++++++++++++ .../@stdlib/array/uint8/README.md | 1107 ++++++++++++++++ .../@stdlib/array/uint8c/README.md | 1107 ++++++++++++++++ 8 files changed, 8862 insertions(+) diff --git a/lib/node_modules/@stdlib/array/float64/README.md b/lib/node_modules/@stdlib/array/float64/README.md index 8bbf896ff531..9cb698f83765 100644 --- a/lib/node_modules/@stdlib/array/float64/README.md +++ b/lib/node_modules/@stdlib/array/float64/README.md @@ -262,6 +262,1119 @@ var arr = Float64Array.of( 1.0, -1.0 ); // returns [ 1.0, -1.0 ] ``` + + +#### Float64Array.prototype.copyWithin( target, start\[, end] ) + +Copies a sequence of elements within an array starting at `start` and ending at `end` (non-inclusive) to the position starting at `target`. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + +// Copy the last two elements to the first two elements: +arr.copyWithin( 0, 3 ); + +var v = arr[ 0 ]; +// returns 4.0 + +v = arr[ 1 ]; +// returns 5.0 +``` + +By default, `end` equals the number of array elements (i.e., one more than the last array index). To limit the sequence length, provide an `end` argument. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( 3, 0, 2 ); + +var v = arr[ 3 ]; +// returns 1.0 + +v = arr[ 4 ]; +// returns 2.0 +``` + +When a `target`, `start`, and/or `end` index is negative, the respective index is determined relative to the last array element. The following example achieves the same behavior as the previous example: + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( -2, -5, -3 ); + +var v = arr[ 3 ]; +// returns 1.0 + +v = arr[ 4 ]; +// returns 2.0 +``` + + + +#### Float64Array.prototype.entries() + +Returns an iterator for iterating over array key-value pairs. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0 ] ); + +// Create an iterator: +var it = arr.entries(); + +// Iterate over key-value pairs... +var v = it.next().value; +// returns [ 0, 1.0 ] + +v = it.next().value; +// returns [ 1, 2.0 ] + +var bool = it.next().done; +// returns true +``` + + + +#### Float64Array.prototype.every( predicate\[, thisArg] ) + +Tests whether all array elements pass a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v <= 1.0 ); +} + +var arr = new Float64Array( [ 1.0, 2.0 ] ); + +var bool = arr.every( predicate ); +// returns false +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 1.0 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Float64Array( [ 1.0, 2.0 ] ); + +var bool = arr.every( predicate, ctx ); +// returns true + +var n = ctx.count; +// returns 2 +``` + + + +#### Float64Array.prototype.fill( value\[, start\[, end]] ) + +Fills an array from a `start` index to an `end` index (non-inclusive) with a provided `value`. + + + +```javascript +var arr = new Float64Array( 2 ); + +// Set all array elements to the same value: +arr.fill( 2.0 ); + +var v = arr[ 0 ]; +// returns 2.0 + +v = arr[ 1 ]; +// returns 2.0 + +// Set all array elements starting from the first index to the same value: +arr.fill( 3.0, 1 ); + +v = arr[ 0 ]; +// returns 2.0 + +v = arr[ 1 ]; +// returns 3.0 + +// Set all array elements, except the last element, to the same value: +arr.fill( 4.0, 0, arr.length-1 ); + +v = arr[ 0 ]; +// returns 4.0 + +v = arr[ 1 ]; +// returns 3.0 +``` + +When a `start` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr = new Float64Array( 2 ); + +// Set all array elements, except the last element, to the same value: +arr.fill( 2.0, -arr.length, -1 ); + +var v = arr[ 0 ]; +// returns 2.0 + +v = arr[ 1 ]; +// returns 0.0 +``` + + + +#### Float64Array.prototype.filter( predicate\[, thisArg] ) + +Creates a new array (of the same data type as the host array) which includes those elements for which a `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v >= 2.0 ); +} + +var arr1 = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [ 2.0, 3.0 ] +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns an empty array. + + + +```javascript +function predicate( v ) { + return ( v >= 10.0 ); +} + +var arr1 = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [] +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2.0 ); +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.filter( predicate, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Float64Array.prototype.find( predicate\[, thisArg] ) + +Returns the first array element for which a provided `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v > 2.0 ); +} + +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var v = arr.find( predicate ); +// returns 3.0 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `undefined`. + + + +```javascript +function predicate( v ) { + return ( v < 1.0 ); +} + +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var v = arr.find( predicate ); +// returns undefined +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v > 2.0 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var v = arr.find( predicate, ctx ); +// returns 3.0 + +var n = ctx.count; +// returns 3 +``` + + + +#### Float64Array.prototype.findIndex( predicate\[, thisArg] ) + +Returns the index of the first array element for which a provided `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v >= 3.0 ); +} + +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var idx = arr.findIndex( predicate ); +// returns 2 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `-1`. + + + +```javascript +function predicate( v ) { + return ( v < 1.0 ); +} + +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var idx = arr.findIndex( predicate ); +// returns -1 +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 3.0 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var idx = arr.findIndex( predicate, ctx ); +// returns 2 + +var n = ctx.count; +// returns 3 +``` + + + +#### Float64Array.prototype.forEach( fcn\[, thisArg] ) + +Invokes a callback for each array element. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var str = ''; + +function fcn( v, i ) { + str += i + ':' + v; + if ( i < arr.length-1 ) { + str += ' '; + } +} + +arr.forEach( fcn ); + +console.log( str ); +// => '0:1 1:2 2:3' +``` + +The callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn() { + this.count += 1; +} + +var ctx = { + 'count': 0 +}; + +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +arr.forEach( fcn, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Float64Array.prototype.includes( searchElement\[, fromIndex] ) + +Returns a `boolean` indicating whether an array includes a search element. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var bool = arr.includes( 3.0 ); +// returns true + +bool = arr.includes( 0.0 ); +// returns false +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var bool = arr.includes( 1.0, 1 ); +// returns false +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +bool = arr.includes( 1.0, -2 ); +// returns false +``` + +The method does **not** distinguish between signed and unsigned zero. + + + +#### Float64Array.prototype.indexOf( searchElement\[, fromIndex] ) + +Returns the index of the first array element strictly equal to a search element. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var idx = arr.indexOf( 3.0 ); +// returns 2 + +idx = arr.indexOf( 0.0 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var idx = arr.indexOf( 1.0, 1 ); +// returns -1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var idx = arr.indexOf( 1.0, -2 ); +// returns -1 +``` + +The method does **not** distinguish between signed and unsigned zero. + + + +#### Float64Array.prototype.join( \[separator] ) + +Serializes an array by joining all array elements as a string. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var str = arr.join(); +// returns '1,2,3' +``` + +By default, the method delineates array elements using a comma `,`. To specify a custom separator, provide a `separator` string. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var str = arr.join( '|' ); +// returns '1|2|3' +``` + + + +#### Float64Array.prototype.keys() + +Returns an iterator for iterating over array keys. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0 ] ); + +// Create an iterator: +var it = arr.keys(); + +// Iterate over keys... +var v = it.next().value; +// returns 0 + +v = it.next().value; +// returns 1 + +var bool = it.next().done; +// returns true +``` + + + +#### Float64Array.prototype.lastIndexOf( searchElement\[, fromIndex] ) + +Returns the index of the last array element strictly equal to a search element, iterating from right to left. + + + +```javascript +var arr = new Float64Array( [ 1.0, 0.0, 2.0, 0.0, 1.0 ] ); + +var idx = arr.lastIndexOf( 0.0 ); +// returns 3 + +idx = arr.lastIndexOf( 3.0 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = -1`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Float64Array( [ 1.0, 0.0, 2.0, 0.0, 1.0 ] ); + +var idx = arr.lastIndexOf( 0.0, 2 ); +// returns 1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Float64Array( [ 1.0, 0.0, 2.0, 0.0, 1.0 ] ); + +var idx = arr.lastIndexOf( 0.0, -3 ); +// returns 1 +``` + +The method does **not** distinguish between signed and unsigned zero. + + + +#### Float64Array.prototype.map( fcn\[, thisArg] ) + +Maps each array element to an element in a new array having the same data type as the host array. + + + +```javascript +function fcn( v ) { + return v * 2.0; +} + +var arr1 = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.map( fcn ); +// returns [ 2.0, 4.0, 6.0 ] +``` + +A callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn( v ) { + this.count += 1; + return v * 2.0; +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.map( fcn ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Float64Array.prototype.reduce( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Float64Array( [ 2.0, 1.0, 3.0 ] ); + +var v = arr.reduce( fcn ); +// returns 12.0 +``` + +If not provided an initial value, the method invokes a provided function with the first array element as the first argument and the second array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the first array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Float64Array( [ 2.0, 1.0, 3.0 ] ); + +var v = arr.reduce( fcn, 0.0 ); +// returns 14.0 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Float64Array.prototype.reduceRight( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result, iterating from right to left. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Float64Array( [ 2.0, 1.0, 3.0 ] ); + +var v = arr.reduce( fcn ); +// returns 8.0 +``` + +If not provided an initial value, the method invokes a provided function with the last array element as the first argument and the second-to-last array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the last array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Float64Array( [ 2.0, 1.0, 3.0 ] ); + +var v = arr.reduce( fcn, 0.0 ); +// returns 14.0 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Float64Array.prototype.reverse() + +Reverses an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Float64Array( [ 2.0, 0.0, 3.0 ] ); + +// Reverse the array: +arr.reverse(); + +var v = arr[ 0 ]; +// returns 3.0 + +v = arr[ 1 ]; +// returns 0.0 + +v = arr[ 2 ]; +// returns 2.0 +``` + + + +#### Float64Array.prototype.set( arr\[, offset] ) + +Sets array elements. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); +// returns [ 1.0, 2.0, 3.0 ] + +// Set the first two array elements: +arr.set( [ 4.0, 5.0 ] ); + +var v = arr[ 0 ]; +// returns 4.0 + +v = arr[ 1 ]; +// returns 5.0 +``` + +By default, the method starts writing values at the first array index. To specify an alternative index, provide an index `offset`. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); +// returns [ 1.0, 2.0, 3.0 ] + +// Set the last two array elements: +arr.set( [ 4.0, 5.0 ], 1 ); + +var v = arr[ 1 ]; +// returns 4.0 + +v = arr[ 2 ]; +// returns 5.0 +``` + + + +#### Float64Array.prototype.slice( \[begin\[, end]] ) + +Copies array elements to a new array with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.slice(); + +var bool = ( arr1 === arr2 ); +// returns false + +bool = ( arr1.buffer === arr2.buffer ); +// returns false + +var v = arr2[ 0 ]; +// returns 1.0 + +v = arr2[ 1 ]; +// returns 2.0 + +v = arr2[ 2 ]; +// returns 3.0 +``` + +By default, the method copies elements beginning with the first array element. To specify an alternative array index at which to begin copying, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.slice( 1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 2.0 + +v = arr2[ 1 ]; +// returns 3.0 +``` + +By default, the method copies all array elements after `begin`. To specify an alternative array index at which to end copying, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.slice( 0, 2 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1.0 + +v = arr2[ 1 ]; +// returns 2.0 +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.slice( -arr1.length, -1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1.0 + +v = arr2[ 1 ]; +// returns 2.0 +``` + + + +#### Float64Array.prototype.some( predicate\[, thisArg] ) + +Tests whether at least one array element passes a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v >= 2.0 ); +} + +var arr = new Float64Array( [ 1.0, 2.0 ] ); + +var bool = arr.some( predicate ); +// returns true +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2.0 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Float64Array( [ 1.0, 1.0 ] ); + +var bool = arr.some( predicate, ctx ); +// returns false + +var n = ctx.count; +// returns 2 +``` + + + +#### Float64Array.prototype.sort( \[compareFunction] ) + +Sorts an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Float64Array( [ 2.0, 3.0, 0.0 ] ); + +// Sort the array (in ascending order): +arr.sort(); + +var v = arr[ 0 ]; +// returns 0.0 + +v = arr[ 1 ]; +// returns 2.0 + +v = arr[ 2 ]; +// returns 3.0 +``` + +By default, the method sorts array elements in ascending order. To impose a custom order, provide a `compareFunction`. + + + +```javascript +function descending( a, b ) { + return b - a; +} + +var arr = new Float64Array( [ 2.0, 3.0, 0.0 ] ); + +// Sort the array (in descending order): +arr.sort( descending ); + +var v = arr[ 0 ]; +// returns 3.0 + +v = arr[ 1 ]; +// returns 2.0 + +v = arr[ 2 ]; +// returns 0.0 +``` + +The comparison function is provided two array elements, `a` and `b`, per invocation, and its return value determines the sort order as follows: + +- If the comparison function returns a value **less** than zero, then the method sorts `a` to an index lower than `b` (i.e., `a` should come **before** `b`). +- If the comparison function returns a value **greater** than zero, then the method sorts `a` to an index higher than `b` (i.e., `b` should come **before** `a`). +- If the comparison function returns **zero**, then the relative order of `a` and `b` _should_ remain unchanged. + + + +#### Float64Array.prototype.subarray( \[begin\[, end]] ) + +Creates a new typed array view over the same underlying [`ArrayBuffer`][@stdlib/array/buffer] and with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.subarray(); +// returns [ 1.0, 2.0, 3.0 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view beginning with the first array element. To specify an alternative array index at which to begin, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.subarray( 1 ); +// returns [ 2.0, 3.0 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view which includes all array elements after `begin`. To limit the number of array elements after `begin`, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.subarray( 0, 2 ); +// returns [ 1.0, 2.0 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.subarray( -arr1.length, -1 ); +// returns [ 1.0, 2.0 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +If the method is unable to resolve indices to a non-empty array subsequence, the method returns an empty typed array. + + + +```javascript +var arr1 = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var arr2 = arr1.subarray( 10, -1 ); +// returns [] +``` + + + +#### Float64Array.prototype.toLocaleString( \[locales\[, options]] ) + +Serializes an array as a locale-specific `string`. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var str = arr.toLocaleString(); +// returns '1,2,3' +``` + + + +#### Float64Array.prototype.toString() + +Serializes an array as a `string`. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + +var str = arr.toString(); +// returns '1,2,3' +``` + + + +#### Float64Array.prototype.values() + +Returns an iterator for iterating over array elements. + + + +```javascript +var arr = new Float64Array( [ 1.0, 2.0 ] ); + +// Create an iterator: +var it = arr.values(); + +// Iterate over array elements... +var v = it.next().value; +// returns 1.0 + +v = it.next().value; +// returns 2.0 + +var bool = it.next().done; +// returns true +``` + diff --git a/lib/node_modules/@stdlib/array/int16/README.md b/lib/node_modules/@stdlib/array/int16/README.md index dc3716e1c5e7..c36724835b64 100644 --- a/lib/node_modules/@stdlib/array/int16/README.md +++ b/lib/node_modules/@stdlib/array/int16/README.md @@ -262,6 +262,1113 @@ var arr = Int16Array.of( 1, 2 ); // returns [ 1, 2 ] ``` + + +#### Int16Array.prototype.copyWithin( target, start\[, end] ) + +Copies a sequence of elements within an array starting at `start` and ending at `end` (non-inclusive) to the position starting at `target`. + + + +```javascript +var arr = new Int16Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the last two elements to the first two elements: +arr.copyWithin( 0, 3 ); + +var v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 5 +``` + +By default, `end` equals the number of array elements (i.e., one more than the last array index). To limit the sequence length, provide an `end` argument. + + + +```javascript +var arr = new Int16Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( 3, 0, 2 ); + +var v = arr[ 3 ]; +// returns 1 + +v = arr[ 4 ]; +// returns 2 +``` + +When a `target`, `start`, and/or `end` index is negative, the respective index is determined relative to the last array element. The following example achieves the same behavior as the previous example: + + + +```javascript +var arr = new Int16Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( -2, -5, -3 ); + +var v = arr[ 3 ]; +// returns 1 + +v = arr[ 4 ]; +// returns 2 +``` + + + +#### Int16Array.prototype.entries() + +Returns an iterator for iterating over array key-value pairs. + + + +```javascript +var arr = new Int16Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.entries(); + +// Iterate over key-value pairs... +var v = it.next().value; +// returns [ 0, 1 ] + +v = it.next().value; +// returns [ 1, 2 ] + +var bool = it.next().done; +// returns true +``` + + + +#### Int16Array.prototype.every( predicate\[, thisArg] ) + +Tests whether all array elements pass a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v <= 1 ); +} + +var arr = new Int16Array( [ 1, 2 ] ); + +var bool = arr.every( predicate ); +// returns false +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 1 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Int16Array( [ 1, 2 ] ); + +var bool = arr.every( predicate, ctx ); +// returns true + +var n = ctx.count; +// returns 2 +``` + + + +#### Int16Array.prototype.fill( value\[, start\[, end]] ) + +Fills an array from a `start` index to an `end` index (non-inclusive) with a provided `value`. + + + +```javascript +var arr = new Int16Array( 2 ); + +// Set all array elements to the same value: +arr.fill( 2 ); + +var v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 2 + +// Set all array elements starting from the first index to the same value: +arr.fill( 3, 1 ); + +v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 3 + +// Set all array elements, except the last element, to the same value: +arr.fill( 4, 0, arr.length-1 ); + +v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 3 +``` + +When a `start` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr = new Int16Array( 2 ); + +// Set all array elements, except the last element, to the same value: +arr.fill( 2, -arr.length, -1 ); + +var v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 0 +``` + + + +#### Int16Array.prototype.filter( predicate\[, thisArg] ) + +Creates a new array (of the same data type as the host array) which includes those elements for which a `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v >= 2 ); +} + +var arr1 = new Int16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [ 2, 3 ] +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns an empty array. + + + +```javascript +function predicate( v ) { + return ( v >= 10 ); +} + +var arr1 = new Int16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [] +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Int16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Int16Array.prototype.find( predicate\[, thisArg] ) + +Returns the first array element for which a provided `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v > 2 ); +} + +var arr = new Int16Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate ); +// returns 3 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `undefined`. + + + +```javascript +function predicate( v ) { + return ( v < 1 ); +} + +var arr = new Int16Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate ); +// returns undefined +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v > 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Int16Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate, ctx ); +// returns 3 + +var n = ctx.count; +// returns 3 +``` + + + +#### Int16Array.prototype.findIndex( predicate\[, thisArg] ) + +Returns the index of the first array element for which a provided `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v >= 3 ); +} + +var arr = new Int16Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate ); +// returns 2 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `-1`. + + + +```javascript +function predicate( v ) { + return ( v < 1 ); +} + +var arr = new Int16Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate ); +// returns -1 +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 3 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Int16Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate, ctx ); +// returns 2 + +var n = ctx.count; +// returns 3 +``` + + + +#### Int16Array.prototype.forEach( fcn\[, thisArg] ) + +Invokes a callback for each array element. + + + +```javascript +var arr = new Int16Array( [ 1, 2, 3 ] ); + +var str = ''; + +function fcn( v, i ) { + str += i + ':' + v; + if ( i < arr.length-1 ) { + str += ' '; + } +} + +arr.forEach( fcn ); + +console.log( str ); +// => '0:1 1:2 2:3' +``` + +The callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn() { + this.count += 1; +} + +var ctx = { + 'count': 0 +}; + +var arr = new Int16Array( [ 1, 2, 3 ] ); + +arr.forEach( fcn, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Int16Array.prototype.includes( searchElement\[, fromIndex] ) + +Returns a `boolean` indicating whether an array includes a search element. + + + +```javascript +var arr = new Int16Array( [ 1, 2, 3 ] ); + +var bool = arr.includes( 3 ); +// returns true + +bool = arr.includes( 0 ); +// returns false +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Int16Array( [ 1, 2, 3 ] ); + +var bool = arr.includes( 1, 1 ); +// returns false +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Int16Array( [ 1, 2, 3 ] ); + +bool = arr.includes( 1, -2 ); +// returns false +``` + + + +#### Int16Array.prototype.indexOf( searchElement\[, fromIndex] ) + +Returns the index of the first array element strictly equal to a search element. + + + +```javascript +var arr = new Int16Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 3 ); +// returns 2 + +idx = arr.indexOf( 0 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Int16Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 1, 1 ); +// returns -1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Int16Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 1, -2 ); +// returns -1 +``` + + + +#### Int16Array.prototype.join( \[separator] ) + +Serializes an array by joining all array elements as a string. + + + +```javascript +var arr = new Int16Array( [ 1, 2, 3 ] ); + +var str = arr.join(); +// returns '1,2,3' +``` + +By default, the method delineates array elements using a comma `,`. To specify a custom separator, provide a `separator` string. + + + +```javascript +var arr = new Int16Array( [ 1, 2, 3 ] ); + +var str = arr.join( '|' ); +// returns '1|2|3' +``` + + + +#### Int16Array.prototype.keys() + +Returns an iterator for iterating over array keys. + + + +```javascript +var arr = new Int16Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.keys(); + +// Iterate over keys... +var v = it.next().value; +// returns 0 + +v = it.next().value; +// returns 1 + +var bool = it.next().done; +// returns true +``` + + + +#### Int16Array.prototype.lastIndexOf( searchElement\[, fromIndex] ) + +Returns the index of the last array element strictly equal to a search element, iterating from right to left. + + + +```javascript +var arr = new Int16Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0 ); +// returns 3 + +idx = arr.lastIndexOf( 3 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = -1`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Int16Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0, 2 ); +// returns 1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Int16Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0, -3 ); +// returns 1 +``` + + + +#### Int16Array.prototype.map( fcn\[, thisArg] ) + +Maps each array element to an element in a new array having the same data type as the host array. + + + +```javascript +function fcn( v ) { + return v * 2; +} + +var arr1 = new Int16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.map( fcn ); +// returns [ 2, 4, 6 ] +``` + +A callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn( v ) { + this.count += 1; + return v * 2; +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Int16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.map( fcn ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Int16Array.prototype.reduce( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Int16Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn ); +// returns 12 +``` + +If not provided an initial value, the method invokes a provided function with the first array element as the first argument and the second array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the first array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Int16Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn, 0 ); +// returns 14 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Int16Array.prototype.reduceRight( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result, iterating from right to left. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Int16Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn ); +// returns 8 +``` + +If not provided an initial value, the method invokes a provided function with the last array element as the first argument and the second-to-last array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the last array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Int16Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn, 0 ); +// returns 14 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Int16Array.prototype.reverse() + +Reverses an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Int16Array( [ 2, 0, 3 ] ); + +// Reverse the array: +arr.reverse(); + +var v = arr[ 0 ]; +// returns 3 + +v = arr[ 1 ]; +// returns 0 + +v = arr[ 2 ]; +// returns 2 +``` + + + +#### Int16Array.prototype.set( arr\[, offset] ) + +Sets array elements. + + + +```javascript +var arr = new Int16Array( [ 1, 2, 3 ] ); +// returns [ 1, 2, 3 ] + +// Set the first two array elements: +arr.set( [ 4, 5 ] ); + +var v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 5 +``` + +By default, the method starts writing values at the first array index. To specify an alternative index, provide an index `offset`. + + + +```javascript +var arr = new Int16Array( [ 1, 2, 3 ] ); +// returns [ 1, 2, 3 ] + +// Set the last two array elements: +arr.set( [ 4, 5 ], 1 ); + +var v = arr[ 1 ]; +// returns 4 + +v = arr[ 2 ]; +// returns 5 +``` + + + +#### Int16Array.prototype.slice( \[begin\[, end]] ) + +Copies array elements to a new array with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Int16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice(); + +var bool = ( arr1 === arr2 ); +// returns false + +bool = ( arr1.buffer === arr2.buffer ); +// returns false + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 + +v = arr2[ 2 ]; +// returns 3 +``` + +By default, the method copies elements beginning with the first array element. To specify an alternative array index at which to begin copying, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Int16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( 1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 2 + +v = arr2[ 1 ]; +// returns 3 +``` + +By default, the method copies all array elements after `begin`. To specify an alternative array index at which to end copying, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Int16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( 0, 2 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Int16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( -arr1.length, -1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 +``` + + + +#### Int16Array.prototype.some( predicate\[, thisArg] ) + +Tests whether at least one array element passes a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v >= 2 ); +} + +var arr = new Int16Array( [ 1, 2 ] ); + +var bool = arr.some( predicate ); +// returns true +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Int16Array( [ 1, 1 ] ); + +var bool = arr.some( predicate, ctx ); +// returns false + +var n = ctx.count; +// returns 2 +``` + + + +#### Int16Array.prototype.sort( \[compareFunction] ) + +Sorts an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Int16Array( [ 2, 3, 0 ] ); + +// Sort the array (in ascending order): +arr.sort(); + +var v = arr[ 0 ]; +// returns 0 + +v = arr[ 1 ]; +// returns 2 + +v = arr[ 2 ]; +// returns 3 +``` + +By default, the method sorts array elements in ascending order. To impose a custom order, provide a `compareFunction`. + + + +```javascript +function descending( a, b ) { + return b - a; +} + +var arr = new Int16Array( [ 2, 3, 0 ] ); + +// Sort the array (in descending order): +arr.sort( descending ); + +var v = arr[ 0 ]; +// returns 3 + +v = arr[ 1 ]; +// returns 2 + +v = arr[ 2 ]; +// returns 0 +``` + +The comparison function is provided two array elements, `a` and `b`, per invocation, and its return value determines the sort order as follows: + +- If the comparison function returns a value **less** than zero, then the method sorts `a` to an index lower than `b` (i.e., `a` should come **before** `b`). +- If the comparison function returns a value **greater** than zero, then the method sorts `a` to an index higher than `b` (i.e., `b` should come **before** `a`). +- If the comparison function returns **zero**, then the relative order of `a` and `b` _should_ remain unchanged. + + + +#### Int16Array.prototype.subarray( \[begin\[, end]] ) + +Creates a new typed array view over the same underlying [`ArrayBuffer`][@stdlib/array/buffer] and with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Int16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray(); +// returns [ 1, 2, 3 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view beginning with the first array element. To specify an alternative array index at which to begin, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Int16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 1 ); +// returns [ 2, 3 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view which includes all array elements after `begin`. To limit the number of array elements after `begin`, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Int16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 0, 2 ); +// returns [ 1, 2 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Int16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( -arr1.length, -1 ); +// returns [ 1, 2 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +If the method is unable to resolve indices to a non-empty array subsequence, the method returns an empty typed array. + + + +```javascript +var arr1 = new Int16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 10, -1 ); +// returns [] +``` + + + +#### Int16Array.prototype.toLocaleString( \[locales\[, options]] ) + +Serializes an array as a locale-specific `string`. + + + +```javascript +var arr = new Int16Array( [ 1, 2, 3 ] ); + +var str = arr.toLocaleString(); +// returns '1,2,3' +``` + + + +#### Int16Array.prototype.toString() + +Serializes an array as a `string`. + + + +```javascript +var arr = new Int16Array( [ 1, 2, 3 ] ); + +var str = arr.toString(); +// returns '1,2,3' +``` + + + +#### Int16Array.prototype.values() + +Returns an iterator for iterating over array elements. + + + +```javascript +var arr = new Int16Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.values(); + +// Iterate over array elements... +var v = it.next().value; +// returns 1 + +v = it.next().value; +// returns 2 + +var bool = it.next().done; +// returns true +``` + diff --git a/lib/node_modules/@stdlib/array/int32/README.md b/lib/node_modules/@stdlib/array/int32/README.md index 34a79f67a9b7..548c0a2eb8de 100644 --- a/lib/node_modules/@stdlib/array/int32/README.md +++ b/lib/node_modules/@stdlib/array/int32/README.md @@ -262,6 +262,1113 @@ var arr = Int32Array.of( 1, 2 ); // returns [ 1, 2 ] ``` + + +#### Int32Array.prototype.copyWithin( target, start\[, end] ) + +Copies a sequence of elements within an array starting at `start` and ending at `end` (non-inclusive) to the position starting at `target`. + + + +```javascript +var arr = new Int32Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the last two elements to the first two elements: +arr.copyWithin( 0, 3 ); + +var v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 5 +``` + +By default, `end` equals the number of array elements (i.e., one more than the last array index). To limit the sequence length, provide an `end` argument. + + + +```javascript +var arr = new Int32Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( 3, 0, 2 ); + +var v = arr[ 3 ]; +// returns 1 + +v = arr[ 4 ]; +// returns 2 +``` + +When a `target`, `start`, and/or `end` index is negative, the respective index is determined relative to the last array element. The following example achieves the same behavior as the previous example: + + + +```javascript +var arr = new Int32Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( -2, -5, -3 ); + +var v = arr[ 3 ]; +// returns 1 + +v = arr[ 4 ]; +// returns 2 +``` + + + +#### Int32Array.prototype.entries() + +Returns an iterator for iterating over array key-value pairs. + + + +```javascript +var arr = new Int32Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.entries(); + +// Iterate over key-value pairs... +var v = it.next().value; +// returns [ 0, 1 ] + +v = it.next().value; +// returns [ 1, 2 ] + +var bool = it.next().done; +// returns true +``` + + + +#### Int32Array.prototype.every( predicate\[, thisArg] ) + +Tests whether all array elements pass a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v <= 1 ); +} + +var arr = new Int32Array( [ 1, 2 ] ); + +var bool = arr.every( predicate ); +// returns false +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 1 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Int32Array( [ 1, 2 ] ); + +var bool = arr.every( predicate, ctx ); +// returns true + +var n = ctx.count; +// returns 2 +``` + + + +#### Int32Array.prototype.fill( value\[, start\[, end]] ) + +Fills an array from a `start` index to an `end` index (non-inclusive) with a provided `value`. + + + +```javascript +var arr = new Int32Array( 2 ); + +// Set all array elements to the same value: +arr.fill( 2 ); + +var v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 2 + +// Set all array elements starting from the first index to the same value: +arr.fill( 3, 1 ); + +v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 3 + +// Set all array elements, except the last element, to the same value: +arr.fill( 4, 0, arr.length-1 ); + +v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 3 +``` + +When a `start` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr = new Int32Array( 2 ); + +// Set all array elements, except the last element, to the same value: +arr.fill( 2, -arr.length, -1 ); + +var v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 0 +``` + + + +#### Int32Array.prototype.filter( predicate\[, thisArg] ) + +Creates a new array (of the same data type as the host array) which includes those elements for which a `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v >= 2 ); +} + +var arr1 = new Int32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [ 2, 3 ] +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns an empty array. + + + +```javascript +function predicate( v ) { + return ( v >= 10 ); +} + +var arr1 = new Int32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [] +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Int32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Int32Array.prototype.find( predicate\[, thisArg] ) + +Returns the first array element for which a provided `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v > 2 ); +} + +var arr = new Int32Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate ); +// returns 3 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `undefined`. + + + +```javascript +function predicate( v ) { + return ( v < 1 ); +} + +var arr = new Int32Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate ); +// returns undefined +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v > 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Int32Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate, ctx ); +// returns 3 + +var n = ctx.count; +// returns 3 +``` + + + +#### Int32Array.prototype.findIndex( predicate\[, thisArg] ) + +Returns the index of the first array element for which a provided `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v >= 3 ); +} + +var arr = new Int32Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate ); +// returns 2 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `-1`. + + + +```javascript +function predicate( v ) { + return ( v < 1 ); +} + +var arr = new Int32Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate ); +// returns -1 +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 3 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Int32Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate, ctx ); +// returns 2 + +var n = ctx.count; +// returns 3 +``` + + + +#### Int32Array.prototype.forEach( fcn\[, thisArg] ) + +Invokes a callback for each array element. + + + +```javascript +var arr = new Int32Array( [ 1, 2, 3 ] ); + +var str = ''; + +function fcn( v, i ) { + str += i + ':' + v; + if ( i < arr.length-1 ) { + str += ' '; + } +} + +arr.forEach( fcn ); + +console.log( str ); +// => '0:1 1:2 2:3' +``` + +The callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn() { + this.count += 1; +} + +var ctx = { + 'count': 0 +}; + +var arr = new Int32Array( [ 1, 2, 3 ] ); + +arr.forEach( fcn, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Int32Array.prototype.includes( searchElement\[, fromIndex] ) + +Returns a `boolean` indicating whether an array includes a search element. + + + +```javascript +var arr = new Int32Array( [ 1, 2, 3 ] ); + +var bool = arr.includes( 3 ); +// returns true + +bool = arr.includes( 0 ); +// returns false +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Int32Array( [ 1, 2, 3 ] ); + +var bool = arr.includes( 1, 1 ); +// returns false +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Int32Array( [ 1, 2, 3 ] ); + +bool = arr.includes( 1, -2 ); +// returns false +``` + + + +#### Int32Array.prototype.indexOf( searchElement\[, fromIndex] ) + +Returns the index of the first array element strictly equal to a search element. + + + +```javascript +var arr = new Int32Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 3 ); +// returns 2 + +idx = arr.indexOf( 0 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Int32Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 1, 1 ); +// returns -1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Int32Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 1, -2 ); +// returns -1 +``` + + + +#### Int32Array.prototype.join( \[separator] ) + +Serializes an array by joining all array elements as a string. + + + +```javascript +var arr = new Int32Array( [ 1, 2, 3 ] ); + +var str = arr.join(); +// returns '1,2,3' +``` + +By default, the method delineates array elements using a comma `,`. To specify a custom separator, provide a `separator` string. + + + +```javascript +var arr = new Int32Array( [ 1, 2, 3 ] ); + +var str = arr.join( '|' ); +// returns '1|2|3' +``` + + + +#### Int32Array.prototype.keys() + +Returns an iterator for iterating over array keys. + + + +```javascript +var arr = new Int32Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.keys(); + +// Iterate over keys... +var v = it.next().value; +// returns 0 + +v = it.next().value; +// returns 1 + +var bool = it.next().done; +// returns true +``` + + + +#### Int32Array.prototype.lastIndexOf( searchElement\[, fromIndex] ) + +Returns the index of the last array element strictly equal to a search element, iterating from right to left. + + + +```javascript +var arr = new Int32Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0 ); +// returns 3 + +idx = arr.lastIndexOf( 3 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = -1`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Int32Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0, 2 ); +// returns 1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Int32Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0, -3 ); +// returns 1 +``` + + + +#### Int32Array.prototype.map( fcn\[, thisArg] ) + +Maps each array element to an element in a new array having the same data type as the host array. + + + +```javascript +function fcn( v ) { + return v * 2; +} + +var arr1 = new Int32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.map( fcn ); +// returns [ 2, 4, 6 ] +``` + +A callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn( v ) { + this.count += 1; + return v * 2; +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Int32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.map( fcn ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Int32Array.prototype.reduce( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Int32Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn ); +// returns 12 +``` + +If not provided an initial value, the method invokes a provided function with the first array element as the first argument and the second array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the first array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Int32Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn, 0 ); +// returns 14 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Int32Array.prototype.reduceRight( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result, iterating from right to left. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Int32Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn ); +// returns 8 +``` + +If not provided an initial value, the method invokes a provided function with the last array element as the first argument and the second-to-last array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the last array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Int32Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn, 0 ); +// returns 14 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Int32Array.prototype.reverse() + +Reverses an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Int32Array( [ 2, 0, 3 ] ); + +// Reverse the array: +arr.reverse(); + +var v = arr[ 0 ]; +// returns 3 + +v = arr[ 1 ]; +// returns 0 + +v = arr[ 2 ]; +// returns 2 +``` + + + +#### Int32Array.prototype.set( arr\[, offset] ) + +Sets array elements. + + + +```javascript +var arr = new Int32Array( [ 1, 2, 3 ] ); +// returns [ 1, 2, 3 ] + +// Set the first two array elements: +arr.set( [ 4, 5 ] ); + +var v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 5 +``` + +By default, the method starts writing values at the first array index. To specify an alternative index, provide an index `offset`. + + + +```javascript +var arr = new Int32Array( [ 1, 2, 3 ] ); +// returns [ 1, 2, 3 ] + +// Set the last two array elements: +arr.set( [ 4, 5 ], 1 ); + +var v = arr[ 1 ]; +// returns 4 + +v = arr[ 2 ]; +// returns 5 +``` + + + +#### Int32Array.prototype.slice( \[begin\[, end]] ) + +Copies array elements to a new array with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Int32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice(); + +var bool = ( arr1 === arr2 ); +// returns false + +bool = ( arr1.buffer === arr2.buffer ); +// returns false + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 + +v = arr2[ 2 ]; +// returns 3 +``` + +By default, the method copies elements beginning with the first array element. To specify an alternative array index at which to begin copying, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Int32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( 1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 2 + +v = arr2[ 1 ]; +// returns 3 +``` + +By default, the method copies all array elements after `begin`. To specify an alternative array index at which to end copying, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Int32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( 0, 2 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Int32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( -arr1.length, -1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 +``` + + + +#### Int32Array.prototype.some( predicate\[, thisArg] ) + +Tests whether at least one array element passes a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v >= 2 ); +} + +var arr = new Int32Array( [ 1, 2 ] ); + +var bool = arr.some( predicate ); +// returns true +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Int32Array( [ 1, 1 ] ); + +var bool = arr.some( predicate, ctx ); +// returns false + +var n = ctx.count; +// returns 2 +``` + + + +#### Int32Array.prototype.sort( \[compareFunction] ) + +Sorts an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Int32Array( [ 2, 3, 0 ] ); + +// Sort the array (in ascending order): +arr.sort(); + +var v = arr[ 0 ]; +// returns 0 + +v = arr[ 1 ]; +// returns 2 + +v = arr[ 2 ]; +// returns 3 +``` + +By default, the method sorts array elements in ascending order. To impose a custom order, provide a `compareFunction`. + + + +```javascript +function descending( a, b ) { + return b - a; +} + +var arr = new Int32Array( [ 2, 3, 0 ] ); + +// Sort the array (in descending order): +arr.sort( descending ); + +var v = arr[ 0 ]; +// returns 3 + +v = arr[ 1 ]; +// returns 2 + +v = arr[ 2 ]; +// returns 0 +``` + +The comparison function is provided two array elements, `a` and `b`, per invocation, and its return value determines the sort order as follows: + +- If the comparison function returns a value **less** than zero, then the method sorts `a` to an index lower than `b` (i.e., `a` should come **before** `b`). +- If the comparison function returns a value **greater** than zero, then the method sorts `a` to an index higher than `b` (i.e., `b` should come **before** `a`). +- If the comparison function returns **zero**, then the relative order of `a` and `b` _should_ remain unchanged. + + + +#### Int32Array.prototype.subarray( \[begin\[, end]] ) + +Creates a new typed array view over the same underlying [`ArrayBuffer`][@stdlib/array/buffer] and with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Int32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray(); +// returns [ 1, 2, 3 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view beginning with the first array element. To specify an alternative array index at which to begin, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Int32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 1 ); +// returns [ 2, 3 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view which includes all array elements after `begin`. To limit the number of array elements after `begin`, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Int32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 0, 2 ); +// returns [ 1, 2 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Int32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( -arr1.length, -1 ); +// returns [ 1, 2 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +If the method is unable to resolve indices to a non-empty array subsequence, the method returns an empty typed array. + + + +```javascript +var arr1 = new Int32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 10, -1 ); +// returns [] +``` + + + +#### Int32Array.prototype.toLocaleString( \[locales\[, options]] ) + +Serializes an array as a locale-specific `string`. + + + +```javascript +var arr = new Int32Array( [ 1, 2, 3 ] ); + +var str = arr.toLocaleString(); +// returns '1,2,3' +``` + + + +#### Int32Array.prototype.toString() + +Serializes an array as a `string`. + + + +```javascript +var arr = new Int32Array( [ 1, 2, 3 ] ); + +var str = arr.toString(); +// returns '1,2,3' +``` + + + +#### Int32Array.prototype.values() + +Returns an iterator for iterating over array elements. + + + +```javascript +var arr = new Int32Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.values(); + +// Iterate over array elements... +var v = it.next().value; +// returns 1 + +v = it.next().value; +// returns 2 + +var bool = it.next().done; +// returns true +``` + diff --git a/lib/node_modules/@stdlib/array/int8/README.md b/lib/node_modules/@stdlib/array/int8/README.md index ce6920111cfd..91399b13feab 100644 --- a/lib/node_modules/@stdlib/array/int8/README.md +++ b/lib/node_modules/@stdlib/array/int8/README.md @@ -262,6 +262,1113 @@ var arr = Int8Array.of( 1, 2 ); // returns [ 1, 2 ] ``` + + +#### Int8Array.prototype.copyWithin( target, start\[, end] ) + +Copies a sequence of elements within an array starting at `start` and ending at `end` (non-inclusive) to the position starting at `target`. + + + +```javascript +var arr = new Int8Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the last two elements to the first two elements: +arr.copyWithin( 0, 3 ); + +var v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 5 +``` + +By default, `end` equals the number of array elements (i.e., one more than the last array index). To limit the sequence length, provide an `end` argument. + + + +```javascript +var arr = new Int8Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( 3, 0, 2 ); + +var v = arr[ 3 ]; +// returns 1 + +v = arr[ 4 ]; +// returns 2 +``` + +When a `target`, `start`, and/or `end` index is negative, the respective index is determined relative to the last array element. The following example achieves the same behavior as the previous example: + + + +```javascript +var arr = new Int8Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( -2, -5, -3 ); + +var v = arr[ 3 ]; +// returns 1 + +v = arr[ 4 ]; +// returns 2 +``` + + + +#### Int8Array.prototype.entries() + +Returns an iterator for iterating over array key-value pairs. + + + +```javascript +var arr = new Int8Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.entries(); + +// Iterate over key-value pairs... +var v = it.next().value; +// returns [ 0, 1 ] + +v = it.next().value; +// returns [ 1, 2 ] + +var bool = it.next().done; +// returns true +``` + + + +#### Int8Array.prototype.every( predicate\[, thisArg] ) + +Tests whether all array elements pass a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v <= 1 ); +} + +var arr = new Int8Array( [ 1, 2 ] ); + +var bool = arr.every( predicate ); +// returns false +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 1 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Int8Array( [ 1, 2 ] ); + +var bool = arr.every( predicate, ctx ); +// returns true + +var n = ctx.count; +// returns 2 +``` + + + +#### Int8Array.prototype.fill( value\[, start\[, end]] ) + +Fills an array from a `start` index to an `end` index (non-inclusive) with a provided `value`. + + + +```javascript +var arr = new Int8Array( 2 ); + +// Set all array elements to the same value: +arr.fill( 2 ); + +var v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 2 + +// Set all array elements starting from the first index to the same value: +arr.fill( 3, 1 ); + +v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 3 + +// Set all array elements, except the last element, to the same value: +arr.fill( 4, 0, arr.length-1 ); + +v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 3 +``` + +When a `start` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr = new Int8Array( 2 ); + +// Set all array elements, except the last element, to the same value: +arr.fill( 2, -arr.length, -1 ); + +var v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 0 +``` + + + +#### Int8Array.prototype.filter( predicate\[, thisArg] ) + +Creates a new array (of the same data type as the host array) which includes those elements for which a `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v >= 2 ); +} + +var arr1 = new Int8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [ 2, 3 ] +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns an empty array. + + + +```javascript +function predicate( v ) { + return ( v >= 10 ); +} + +var arr1 = new Int8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [] +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Int8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Int8Array.prototype.find( predicate\[, thisArg] ) + +Returns the first array element for which a provided `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v > 2 ); +} + +var arr = new Int8Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate ); +// returns 3 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `undefined`. + + + +```javascript +function predicate( v ) { + return ( v < 1 ); +} + +var arr = new Int8Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate ); +// returns undefined +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v > 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Int8Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate, ctx ); +// returns 3 + +var n = ctx.count; +// returns 3 +``` + + + +#### Int8Array.prototype.findIndex( predicate\[, thisArg] ) + +Returns the index of the first array element for which a provided `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v >= 3 ); +} + +var arr = new Int8Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate ); +// returns 2 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `-1`. + + + +```javascript +function predicate( v ) { + return ( v < 1 ); +} + +var arr = new Int8Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate ); +// returns -1 +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 3 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Int8Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate, ctx ); +// returns 2 + +var n = ctx.count; +// returns 3 +``` + + + +#### Int8Array.prototype.forEach( fcn\[, thisArg] ) + +Invokes a callback for each array element. + + + +```javascript +var arr = new Int8Array( [ 1, 2, 3 ] ); + +var str = ''; + +function fcn( v, i ) { + str += i + ':' + v; + if ( i < arr.length-1 ) { + str += ' '; + } +} + +arr.forEach( fcn ); + +console.log( str ); +// => '0:1 1:2 2:3' +``` + +The callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn() { + this.count += 1; +} + +var ctx = { + 'count': 0 +}; + +var arr = new Int8Array( [ 1, 2, 3 ] ); + +arr.forEach( fcn, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Int8Array.prototype.includes( searchElement\[, fromIndex] ) + +Returns a `boolean` indicating whether an array includes a search element. + + + +```javascript +var arr = new Int8Array( [ 1, 2, 3 ] ); + +var bool = arr.includes( 3 ); +// returns true + +bool = arr.includes( 0 ); +// returns false +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Int8Array( [ 1, 2, 3 ] ); + +var bool = arr.includes( 1, 1 ); +// returns false +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Int8Array( [ 1, 2, 3 ] ); + +bool = arr.includes( 1, -2 ); +// returns false +``` + + + +#### Int8Array.prototype.indexOf( searchElement\[, fromIndex] ) + +Returns the index of the first array element strictly equal to a search element. + + + +```javascript +var arr = new Int8Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 3 ); +// returns 2 + +idx = arr.indexOf( 0 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Int8Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 1, 1 ); +// returns -1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Int8Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 1, -2 ); +// returns -1 +``` + + + +#### Int8Array.prototype.join( \[separator] ) + +Serializes an array by joining all array elements as a string. + + + +```javascript +var arr = new Int8Array( [ 1, 2, 3 ] ); + +var str = arr.join(); +// returns '1,2,3' +``` + +By default, the method delineates array elements using a comma `,`. To specify a custom separator, provide a `separator` string. + + + +```javascript +var arr = new Int8Array( [ 1, 2, 3 ] ); + +var str = arr.join( '|' ); +// returns '1|2|3' +``` + + + +#### Int8Array.prototype.keys() + +Returns an iterator for iterating over array keys. + + + +```javascript +var arr = new Int8Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.keys(); + +// Iterate over keys... +var v = it.next().value; +// returns 0 + +v = it.next().value; +// returns 1 + +var bool = it.next().done; +// returns true +``` + + + +#### Int8Array.prototype.lastIndexOf( searchElement\[, fromIndex] ) + +Returns the index of the last array element strictly equal to a search element, iterating from right to left. + + + +```javascript +var arr = new Int8Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0 ); +// returns 3 + +idx = arr.lastIndexOf( 3 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = -1`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Int8Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0, 2 ); +// returns 1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Int8Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0, -3 ); +// returns 1 +``` + + + +#### Int8Array.prototype.map( fcn\[, thisArg] ) + +Maps each array element to an element in a new array having the same data type as the host array. + + + +```javascript +function fcn( v ) { + return v * 2; +} + +var arr1 = new Int8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.map( fcn ); +// returns [ 2, 4, 6 ] +``` + +A callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn( v ) { + this.count += 1; + return v * 2; +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Int8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.map( fcn ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Int8Array.prototype.reduce( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Int8Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn ); +// returns 12 +``` + +If not provided an initial value, the method invokes a provided function with the first array element as the first argument and the second array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the first array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Int8Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn, 0 ); +// returns 14 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Int8Array.prototype.reduceRight( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result, iterating from right to left. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Int8Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn ); +// returns 8 +``` + +If not provided an initial value, the method invokes a provided function with the last array element as the first argument and the second-to-last array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the last array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Int8Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn, 0 ); +// returns 14 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Int8Array.prototype.reverse() + +Reverses an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Int8Array( [ 2, 0, 3 ] ); + +// Reverse the array: +arr.reverse(); + +var v = arr[ 0 ]; +// returns 3 + +v = arr[ 1 ]; +// returns 0 + +v = arr[ 2 ]; +// returns 2 +``` + + + +#### Int8Array.prototype.set( arr\[, offset] ) + +Sets array elements. + + + +```javascript +var arr = new Int8Array( [ 1, 2, 3 ] ); +// returns [ 1, 2, 3 ] + +// Set the first two array elements: +arr.set( [ 4, 5 ] ); + +var v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 5 +``` + +By default, the method starts writing values at the first array index. To specify an alternative index, provide an index `offset`. + + + +```javascript +var arr = new Int8Array( [ 1, 2, 3 ] ); +// returns [ 1, 2, 3 ] + +// Set the last two array elements: +arr.set( [ 4, 5 ], 1 ); + +var v = arr[ 1 ]; +// returns 4 + +v = arr[ 2 ]; +// returns 5 +``` + + + +#### Int8Array.prototype.slice( \[begin\[, end]] ) + +Copies array elements to a new array with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Int8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice(); + +var bool = ( arr1 === arr2 ); +// returns false + +bool = ( arr1.buffer === arr2.buffer ); +// returns false + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 + +v = arr2[ 2 ]; +// returns 3 +``` + +By default, the method copies elements beginning with the first array element. To specify an alternative array index at which to begin copying, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Int8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( 1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 2 + +v = arr2[ 1 ]; +// returns 3 +``` + +By default, the method copies all array elements after `begin`. To specify an alternative array index at which to end copying, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Int8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( 0, 2 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Int8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( -arr1.length, -1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 +``` + + + +#### Int8Array.prototype.some( predicate\[, thisArg] ) + +Tests whether at least one array element passes a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v >= 2 ); +} + +var arr = new Int8Array( [ 1, 2 ] ); + +var bool = arr.some( predicate ); +// returns true +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Int8Array( [ 1, 1 ] ); + +var bool = arr.some( predicate, ctx ); +// returns false + +var n = ctx.count; +// returns 2 +``` + + + +#### Int8Array.prototype.sort( \[compareFunction] ) + +Sorts an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Int8Array( [ 2, 3, 0 ] ); + +// Sort the array (in ascending order): +arr.sort(); + +var v = arr[ 0 ]; +// returns 0 + +v = arr[ 1 ]; +// returns 2 + +v = arr[ 2 ]; +// returns 3 +``` + +By default, the method sorts array elements in ascending order. To impose a custom order, provide a `compareFunction`. + + + +```javascript +function descending( a, b ) { + return b - a; +} + +var arr = new Int8Array( [ 2, 3, 0 ] ); + +// Sort the array (in descending order): +arr.sort( descending ); + +var v = arr[ 0 ]; +// returns 3 + +v = arr[ 1 ]; +// returns 2 + +v = arr[ 2 ]; +// returns 0 +``` + +The comparison function is provided two array elements, `a` and `b`, per invocation, and its return value determines the sort order as follows: + +- If the comparison function returns a value **less** than zero, then the method sorts `a` to an index lower than `b` (i.e., `a` should come **before** `b`). +- If the comparison function returns a value **greater** than zero, then the method sorts `a` to an index higher than `b` (i.e., `b` should come **before** `a`). +- If the comparison function returns **zero**, then the relative order of `a` and `b` _should_ remain unchanged. + + + +#### Int8Array.prototype.subarray( \[begin\[, end]] ) + +Creates a new typed array view over the same underlying [`ArrayBuffer`][@stdlib/array/buffer] and with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Int8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray(); +// returns [ 1, 2, 3 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view beginning with the first array element. To specify an alternative array index at which to begin, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Int8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 1 ); +// returns [ 2, 3 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view which includes all array elements after `begin`. To limit the number of array elements after `begin`, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Int8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 0, 2 ); +// returns [ 1, 2 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Int8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( -arr1.length, -1 ); +// returns [ 1, 2 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +If the method is unable to resolve indices to a non-empty array subsequence, the method returns an empty typed array. + + + +```javascript +var arr1 = new Int8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 10, -1 ); +// returns [] +``` + + + +#### Int8Array.prototype.toLocaleString( \[locales\[, options]] ) + +Serializes an array as a locale-specific `string`. + + + +```javascript +var arr = new Int8Array( [ 1, 2, 3 ] ); + +var str = arr.toLocaleString(); +// returns '1,2,3' +``` + + + +#### Int8Array.prototype.toString() + +Serializes an array as a `string`. + + + +```javascript +var arr = new Int8Array( [ 1, 2, 3 ] ); + +var str = arr.toString(); +// returns '1,2,3' +``` + + + +#### Int8Array.prototype.values() + +Returns an iterator for iterating over array elements. + + + +```javascript +var arr = new Int8Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.values(); + +// Iterate over array elements... +var v = it.next().value; +// returns 1 + +v = it.next().value; +// returns 2 + +var bool = it.next().done; +// returns true +``` + diff --git a/lib/node_modules/@stdlib/array/uint16/README.md b/lib/node_modules/@stdlib/array/uint16/README.md index 0ab8193f8bea..c5760e3527e2 100644 --- a/lib/node_modules/@stdlib/array/uint16/README.md +++ b/lib/node_modules/@stdlib/array/uint16/README.md @@ -262,6 +262,1113 @@ var arr = Uint16Array.of( 1, 2 ); // returns [ 1, 2 ] ``` + + +#### Uint16Array.prototype.copyWithin( target, start\[, end] ) + +Copies a sequence of elements within an array starting at `start` and ending at `end` (non-inclusive) to the position starting at `target`. + + + +```javascript +var arr = new Uint16Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the last two elements to the first two elements: +arr.copyWithin( 0, 3 ); + +var v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 5 +``` + +By default, `end` equals the number of array elements (i.e., one more than the last array index). To limit the sequence length, provide an `end` argument. + + + +```javascript +var arr = new Uint16Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( 3, 0, 2 ); + +var v = arr[ 3 ]; +// returns 1 + +v = arr[ 4 ]; +// returns 2 +``` + +When a `target`, `start`, and/or `end` index is negative, the respective index is determined relative to the last array element. The following example achieves the same behavior as the previous example: + + + +```javascript +var arr = new Uint16Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( -2, -5, -3 ); + +var v = arr[ 3 ]; +// returns 1 + +v = arr[ 4 ]; +// returns 2 +``` + + + +#### Uint16Array.prototype.entries() + +Returns an iterator for iterating over array key-value pairs. + + + +```javascript +var arr = new Uint16Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.entries(); + +// Iterate over key-value pairs... +var v = it.next().value; +// returns [ 0, 1 ] + +v = it.next().value; +// returns [ 1, 2 ] + +var bool = it.next().done; +// returns true +``` + + + +#### Uint16Array.prototype.every( predicate\[, thisArg] ) + +Tests whether all array elements pass a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v <= 1 ); +} + +var arr = new Uint16Array( [ 1, 2 ] ); + +var bool = arr.every( predicate ); +// returns false +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 1 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint16Array( [ 1, 2 ] ); + +var bool = arr.every( predicate, ctx ); +// returns true + +var n = ctx.count; +// returns 2 +``` + + + +#### Uint16Array.prototype.fill( value\[, start\[, end]] ) + +Fills an array from a `start` index to an `end` index (non-inclusive) with a provided `value`. + + + +```javascript +var arr = new Uint16Array( 2 ); + +// Set all array elements to the same value: +arr.fill( 2 ); + +var v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 2 + +// Set all array elements starting from the first index to the same value: +arr.fill( 3, 1 ); + +v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 3 + +// Set all array elements, except the last element, to the same value: +arr.fill( 4, 0, arr.length-1 ); + +v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 3 +``` + +When a `start` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr = new Uint16Array( 2 ); + +// Set all array elements, except the last element, to the same value: +arr.fill( 2, -arr.length, -1 ); + +var v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 0 +``` + + + +#### Uint16Array.prototype.filter( predicate\[, thisArg] ) + +Creates a new array (of the same data type as the host array) which includes those elements for which a `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v >= 2 ); +} + +var arr1 = new Uint16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [ 2, 3 ] +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns an empty array. + + + +```javascript +function predicate( v ) { + return ( v >= 10 ); +} + +var arr1 = new Uint16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [] +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Uint16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint16Array.prototype.find( predicate\[, thisArg] ) + +Returns the first array element for which a provided `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v > 2 ); +} + +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate ); +// returns 3 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `undefined`. + + + +```javascript +function predicate( v ) { + return ( v < 1 ); +} + +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate ); +// returns undefined +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v > 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate, ctx ); +// returns 3 + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint16Array.prototype.findIndex( predicate\[, thisArg] ) + +Returns the index of the first array element for which a provided `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v >= 3 ); +} + +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate ); +// returns 2 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `-1`. + + + +```javascript +function predicate( v ) { + return ( v < 1 ); +} + +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate ); +// returns -1 +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 3 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate, ctx ); +// returns 2 + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint16Array.prototype.forEach( fcn\[, thisArg] ) + +Invokes a callback for each array element. + + + +```javascript +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +var str = ''; + +function fcn( v, i ) { + str += i + ':' + v; + if ( i < arr.length-1 ) { + str += ' '; + } +} + +arr.forEach( fcn ); + +console.log( str ); +// => '0:1 1:2 2:3' +``` + +The callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn() { + this.count += 1; +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +arr.forEach( fcn, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint16Array.prototype.includes( searchElement\[, fromIndex] ) + +Returns a `boolean` indicating whether an array includes a search element. + + + +```javascript +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +var bool = arr.includes( 3 ); +// returns true + +bool = arr.includes( 0 ); +// returns false +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +var bool = arr.includes( 1, 1 ); +// returns false +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +bool = arr.includes( 1, -2 ); +// returns false +``` + + + +#### Uint16Array.prototype.indexOf( searchElement\[, fromIndex] ) + +Returns the index of the first array element strictly equal to a search element. + + + +```javascript +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 3 ); +// returns 2 + +idx = arr.indexOf( 0 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 1, 1 ); +// returns -1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 1, -2 ); +// returns -1 +``` + + + +#### Uint16Array.prototype.join( \[separator] ) + +Serializes an array by joining all array elements as a string. + + + +```javascript +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +var str = arr.join(); +// returns '1,2,3' +``` + +By default, the method delineates array elements using a comma `,`. To specify a custom separator, provide a `separator` string. + + + +```javascript +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +var str = arr.join( '|' ); +// returns '1|2|3' +``` + + + +#### Uint16Array.prototype.keys() + +Returns an iterator for iterating over array keys. + + + +```javascript +var arr = new Uint16Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.keys(); + +// Iterate over keys... +var v = it.next().value; +// returns 0 + +v = it.next().value; +// returns 1 + +var bool = it.next().done; +// returns true +``` + + + +#### Uint16Array.prototype.lastIndexOf( searchElement\[, fromIndex] ) + +Returns the index of the last array element strictly equal to a search element, iterating from right to left. + + + +```javascript +var arr = new Uint16Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0 ); +// returns 3 + +idx = arr.lastIndexOf( 3 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = -1`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Uint16Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0, 2 ); +// returns 1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Uint16Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0, -3 ); +// returns 1 +``` + + + +#### Uint16Array.prototype.map( fcn\[, thisArg] ) + +Maps each array element to an element in a new array having the same data type as the host array. + + + +```javascript +function fcn( v ) { + return v * 2; +} + +var arr1 = new Uint16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.map( fcn ); +// returns [ 2, 4, 6 ] +``` + +A callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn( v ) { + this.count += 1; + return v * 2; +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Uint16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.map( fcn ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint16Array.prototype.reduce( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Uint16Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn ); +// returns 12 +``` + +If not provided an initial value, the method invokes a provided function with the first array element as the first argument and the second array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the first array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Uint16Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn, 0 ); +// returns 14 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Uint16Array.prototype.reduceRight( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result, iterating from right to left. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Uint16Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn ); +// returns 8 +``` + +If not provided an initial value, the method invokes a provided function with the last array element as the first argument and the second-to-last array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the last array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Uint16Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn, 0 ); +// returns 14 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Uint16Array.prototype.reverse() + +Reverses an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Uint16Array( [ 2, 0, 3 ] ); + +// Reverse the array: +arr.reverse(); + +var v = arr[ 0 ]; +// returns 3 + +v = arr[ 1 ]; +// returns 0 + +v = arr[ 2 ]; +// returns 2 +``` + + + +#### Uint16Array.prototype.set( arr\[, offset] ) + +Sets array elements. + + + +```javascript +var arr = new Uint16Array( [ 1, 2, 3 ] ); +// returns [ 1, 2, 3 ] + +// Set the first two array elements: +arr.set( [ 4, 5 ] ); + +var v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 5 +``` + +By default, the method starts writing values at the first array index. To specify an alternative index, provide an index `offset`. + + + +```javascript +var arr = new Uint16Array( [ 1, 2, 3 ] ); +// returns [ 1, 2, 3 ] + +// Set the last two array elements: +arr.set( [ 4, 5 ], 1 ); + +var v = arr[ 1 ]; +// returns 4 + +v = arr[ 2 ]; +// returns 5 +``` + + + +#### Uint16Array.prototype.slice( \[begin\[, end]] ) + +Copies array elements to a new array with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Uint16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice(); + +var bool = ( arr1 === arr2 ); +// returns false + +bool = ( arr1.buffer === arr2.buffer ); +// returns false + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 + +v = arr2[ 2 ]; +// returns 3 +``` + +By default, the method copies elements beginning with the first array element. To specify an alternative array index at which to begin copying, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Uint16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( 1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 2 + +v = arr2[ 1 ]; +// returns 3 +``` + +By default, the method copies all array elements after `begin`. To specify an alternative array index at which to end copying, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Uint16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( 0, 2 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Uint16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( -arr1.length, -1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 +``` + + + +#### Uint16Array.prototype.some( predicate\[, thisArg] ) + +Tests whether at least one array element passes a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v >= 2 ); +} + +var arr = new Uint16Array( [ 1, 2 ] ); + +var bool = arr.some( predicate ); +// returns true +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint16Array( [ 1, 1 ] ); + +var bool = arr.some( predicate, ctx ); +// returns false + +var n = ctx.count; +// returns 2 +``` + + + +#### Uint16Array.prototype.sort( \[compareFunction] ) + +Sorts an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Uint16Array( [ 2, 3, 0 ] ); + +// Sort the array (in ascending order): +arr.sort(); + +var v = arr[ 0 ]; +// returns 0 + +v = arr[ 1 ]; +// returns 2 + +v = arr[ 2 ]; +// returns 3 +``` + +By default, the method sorts array elements in ascending order. To impose a custom order, provide a `compareFunction`. + + + +```javascript +function descending( a, b ) { + return b - a; +} + +var arr = new Uint16Array( [ 2, 3, 0 ] ); + +// Sort the array (in descending order): +arr.sort( descending ); + +var v = arr[ 0 ]; +// returns 3 + +v = arr[ 1 ]; +// returns 2 + +v = arr[ 2 ]; +// returns 0 +``` + +The comparison function is provided two array elements, `a` and `b`, per invocation, and its return value determines the sort order as follows: + +- If the comparison function returns a value **less** than zero, then the method sorts `a` to an index lower than `b` (i.e., `a` should come **before** `b`). +- If the comparison function returns a value **greater** than zero, then the method sorts `a` to an index higher than `b` (i.e., `b` should come **before** `a`). +- If the comparison function returns **zero**, then the relative order of `a` and `b` _should_ remain unchanged. + + + +#### Uint16Array.prototype.subarray( \[begin\[, end]] ) + +Creates a new typed array view over the same underlying [`ArrayBuffer`][@stdlib/array/buffer] and with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Uint16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray(); +// returns [ 1, 2, 3 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view beginning with the first array element. To specify an alternative array index at which to begin, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Uint16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 1 ); +// returns [ 2, 3 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view which includes all array elements after `begin`. To limit the number of array elements after `begin`, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Uint16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 0, 2 ); +// returns [ 1, 2 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Uint16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( -arr1.length, -1 ); +// returns [ 1, 2 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +If the method is unable to resolve indices to a non-empty array subsequence, the method returns an empty typed array. + + + +```javascript +var arr1 = new Uint16Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 10, -1 ); +// returns [] +``` + + + +#### Uint16Array.prototype.toLocaleString( \[locales\[, options]] ) + +Serializes an array as a locale-specific `string`. + + + +```javascript +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +var str = arr.toLocaleString(); +// returns '1,2,3' +``` + + + +#### Uint16Array.prototype.toString() + +Serializes an array as a `string`. + + + +```javascript +var arr = new Uint16Array( [ 1, 2, 3 ] ); + +var str = arr.toString(); +// returns '1,2,3' +``` + + + +#### Uint16Array.prototype.values() + +Returns an iterator for iterating over array elements. + + + +```javascript +var arr = new Uint16Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.values(); + +// Iterate over array elements... +var v = it.next().value; +// returns 1 + +v = it.next().value; +// returns 2 + +var bool = it.next().done; +// returns true +``` + diff --git a/lib/node_modules/@stdlib/array/uint32/README.md b/lib/node_modules/@stdlib/array/uint32/README.md index 7499bc61dfb7..d5e226f6f680 100644 --- a/lib/node_modules/@stdlib/array/uint32/README.md +++ b/lib/node_modules/@stdlib/array/uint32/README.md @@ -262,6 +262,1113 @@ var arr = Uint32Array.of( 1, 2 ); // returns [ 1, 2 ] ``` + + +#### Uint32Array.prototype.copyWithin( target, start\[, end] ) + +Copies a sequence of elements within an array starting at `start` and ending at `end` (non-inclusive) to the position starting at `target`. + + + +```javascript +var arr = new Uint32Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the last two elements to the first two elements: +arr.copyWithin( 0, 3 ); + +var v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 5 +``` + +By default, `end` equals the number of array elements (i.e., one more than the last array index). To limit the sequence length, provide an `end` argument. + + + +```javascript +var arr = new Uint32Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( 3, 0, 2 ); + +var v = arr[ 3 ]; +// returns 1 + +v = arr[ 4 ]; +// returns 2 +``` + +When a `target`, `start`, and/or `end` index is negative, the respective index is determined relative to the last array element. The following example achieves the same behavior as the previous example: + + + +```javascript +var arr = new Uint32Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( -2, -5, -3 ); + +var v = arr[ 3 ]; +// returns 1 + +v = arr[ 4 ]; +// returns 2 +``` + + + +#### Uint32Array.prototype.entries() + +Returns an iterator for iterating over array key-value pairs. + + + +```javascript +var arr = new Uint32Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.entries(); + +// Iterate over key-value pairs... +var v = it.next().value; +// returns [ 0, 1 ] + +v = it.next().value; +// returns [ 1, 2 ] + +var bool = it.next().done; +// returns true +``` + + + +#### Uint32Array.prototype.every( predicate\[, thisArg] ) + +Tests whether all array elements pass a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v <= 1 ); +} + +var arr = new Uint32Array( [ 1, 2 ] ); + +var bool = arr.every( predicate ); +// returns false +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 1 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint32Array( [ 1, 2 ] ); + +var bool = arr.every( predicate, ctx ); +// returns true + +var n = ctx.count; +// returns 2 +``` + + + +#### Uint32Array.prototype.fill( value\[, start\[, end]] ) + +Fills an array from a `start` index to an `end` index (non-inclusive) with a provided `value`. + + + +```javascript +var arr = new Uint32Array( 2 ); + +// Set all array elements to the same value: +arr.fill( 2 ); + +var v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 2 + +// Set all array elements starting from the first index to the same value: +arr.fill( 3, 1 ); + +v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 3 + +// Set all array elements, except the last element, to the same value: +arr.fill( 4, 0, arr.length-1 ); + +v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 3 +``` + +When a `start` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr = new Uint32Array( 2 ); + +// Set all array elements, except the last element, to the same value: +arr.fill( 2, -arr.length, -1 ); + +var v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 0 +``` + + + +#### Uint32Array.prototype.filter( predicate\[, thisArg] ) + +Creates a new array (of the same data type as the host array) which includes those elements for which a `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v >= 2 ); +} + +var arr1 = new Uint32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [ 2, 3 ] +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns an empty array. + + + +```javascript +function predicate( v ) { + return ( v >= 10 ); +} + +var arr1 = new Uint32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [] +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Uint32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint32Array.prototype.find( predicate\[, thisArg] ) + +Returns the first array element for which a provided `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v > 2 ); +} + +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate ); +// returns 3 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `undefined`. + + + +```javascript +function predicate( v ) { + return ( v < 1 ); +} + +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate ); +// returns undefined +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v > 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate, ctx ); +// returns 3 + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint32Array.prototype.findIndex( predicate\[, thisArg] ) + +Returns the index of the first array element for which a provided `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v >= 3 ); +} + +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate ); +// returns 2 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `-1`. + + + +```javascript +function predicate( v ) { + return ( v < 1 ); +} + +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate ); +// returns -1 +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 3 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate, ctx ); +// returns 2 + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint32Array.prototype.forEach( fcn\[, thisArg] ) + +Invokes a callback for each array element. + + + +```javascript +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +var str = ''; + +function fcn( v, i ) { + str += i + ':' + v; + if ( i < arr.length-1 ) { + str += ' '; + } +} + +arr.forEach( fcn ); + +console.log( str ); +// => '0:1 1:2 2:3' +``` + +The callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn() { + this.count += 1; +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +arr.forEach( fcn, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint32Array.prototype.includes( searchElement\[, fromIndex] ) + +Returns a `boolean` indicating whether an array includes a search element. + + + +```javascript +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +var bool = arr.includes( 3 ); +// returns true + +bool = arr.includes( 0 ); +// returns false +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +var bool = arr.includes( 1, 1 ); +// returns false +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +bool = arr.includes( 1, -2 ); +// returns false +``` + + + +#### Uint32Array.prototype.indexOf( searchElement\[, fromIndex] ) + +Returns the index of the first array element strictly equal to a search element. + + + +```javascript +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 3 ); +// returns 2 + +idx = arr.indexOf( 0 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 1, 1 ); +// returns -1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 1, -2 ); +// returns -1 +``` + + + +#### Uint32Array.prototype.join( \[separator] ) + +Serializes an array by joining all array elements as a string. + + + +```javascript +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +var str = arr.join(); +// returns '1,2,3' +``` + +By default, the method delineates array elements using a comma `,`. To specify a custom separator, provide a `separator` string. + + + +```javascript +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +var str = arr.join( '|' ); +// returns '1|2|3' +``` + + + +#### Uint32Array.prototype.keys() + +Returns an iterator for iterating over array keys. + + + +```javascript +var arr = new Uint32Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.keys(); + +// Iterate over keys... +var v = it.next().value; +// returns 0 + +v = it.next().value; +// returns 1 + +var bool = it.next().done; +// returns true +``` + + + +#### Uint32Array.prototype.lastIndexOf( searchElement\[, fromIndex] ) + +Returns the index of the last array element strictly equal to a search element, iterating from right to left. + + + +```javascript +var arr = new Uint32Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0 ); +// returns 3 + +idx = arr.lastIndexOf( 3 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = -1`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Uint32Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0, 2 ); +// returns 1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Uint32Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0, -3 ); +// returns 1 +``` + + + +#### Uint32Array.prototype.map( fcn\[, thisArg] ) + +Maps each array element to an element in a new array having the same data type as the host array. + + + +```javascript +function fcn( v ) { + return v * 2; +} + +var arr1 = new Uint32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.map( fcn ); +// returns [ 2, 4, 6 ] +``` + +A callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn( v ) { + this.count += 1; + return v * 2; +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Uint32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.map( fcn ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint32Array.prototype.reduce( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Uint32Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn ); +// returns 12 +``` + +If not provided an initial value, the method invokes a provided function with the first array element as the first argument and the second array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the first array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Uint32Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn, 0 ); +// returns 14 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Uint32Array.prototype.reduceRight( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result, iterating from right to left. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Uint32Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn ); +// returns 8 +``` + +If not provided an initial value, the method invokes a provided function with the last array element as the first argument and the second-to-last array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the last array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Uint32Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn, 0 ); +// returns 14 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Uint32Array.prototype.reverse() + +Reverses an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Uint32Array( [ 2, 0, 3 ] ); + +// Reverse the array: +arr.reverse(); + +var v = arr[ 0 ]; +// returns 3 + +v = arr[ 1 ]; +// returns 0 + +v = arr[ 2 ]; +// returns 2 +``` + + + +#### Uint32Array.prototype.set( arr\[, offset] ) + +Sets array elements. + + + +```javascript +var arr = new Uint32Array( [ 1, 2, 3 ] ); +// returns [ 1, 2, 3 ] + +// Set the first two array elements: +arr.set( [ 4, 5 ] ); + +var v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 5 +``` + +By default, the method starts writing values at the first array index. To specify an alternative index, provide an index `offset`. + + + +```javascript +var arr = new Uint32Array( [ 1, 2, 3 ] ); +// returns [ 1, 2, 3 ] + +// Set the last two array elements: +arr.set( [ 4, 5 ], 1 ); + +var v = arr[ 1 ]; +// returns 4 + +v = arr[ 2 ]; +// returns 5 +``` + + + +#### Uint32Array.prototype.slice( \[begin\[, end]] ) + +Copies array elements to a new array with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Uint32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice(); + +var bool = ( arr1 === arr2 ); +// returns false + +bool = ( arr1.buffer === arr2.buffer ); +// returns false + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 + +v = arr2[ 2 ]; +// returns 3 +``` + +By default, the method copies elements beginning with the first array element. To specify an alternative array index at which to begin copying, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Uint32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( 1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 2 + +v = arr2[ 1 ]; +// returns 3 +``` + +By default, the method copies all array elements after `begin`. To specify an alternative array index at which to end copying, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Uint32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( 0, 2 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Uint32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( -arr1.length, -1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 +``` + + + +#### Uint32Array.prototype.some( predicate\[, thisArg] ) + +Tests whether at least one array element passes a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v >= 2 ); +} + +var arr = new Uint32Array( [ 1, 2 ] ); + +var bool = arr.some( predicate ); +// returns true +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint32Array( [ 1, 1 ] ); + +var bool = arr.some( predicate, ctx ); +// returns false + +var n = ctx.count; +// returns 2 +``` + + + +#### Uint32Array.prototype.sort( \[compareFunction] ) + +Sorts an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Uint32Array( [ 2, 3, 0 ] ); + +// Sort the array (in ascending order): +arr.sort(); + +var v = arr[ 0 ]; +// returns 0 + +v = arr[ 1 ]; +// returns 2 + +v = arr[ 2 ]; +// returns 3 +``` + +By default, the method sorts array elements in ascending order. To impose a custom order, provide a `compareFunction`. + + + +```javascript +function descending( a, b ) { + return b - a; +} + +var arr = new Uint32Array( [ 2, 3, 0 ] ); + +// Sort the array (in descending order): +arr.sort( descending ); + +var v = arr[ 0 ]; +// returns 3 + +v = arr[ 1 ]; +// returns 2 + +v = arr[ 2 ]; +// returns 0 +``` + +The comparison function is provided two array elements, `a` and `b`, per invocation, and its return value determines the sort order as follows: + +- If the comparison function returns a value **less** than zero, then the method sorts `a` to an index lower than `b` (i.e., `a` should come **before** `b`). +- If the comparison function returns a value **greater** than zero, then the method sorts `a` to an index higher than `b` (i.e., `b` should come **before** `a`). +- If the comparison function returns **zero**, then the relative order of `a` and `b` _should_ remain unchanged. + + + +#### Uint32Array.prototype.subarray( \[begin\[, end]] ) + +Creates a new typed array view over the same underlying [`ArrayBuffer`][@stdlib/array/buffer] and with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Uint32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray(); +// returns [ 1, 2, 3 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view beginning with the first array element. To specify an alternative array index at which to begin, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Uint32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 1 ); +// returns [ 2, 3 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view which includes all array elements after `begin`. To limit the number of array elements after `begin`, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Uint32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 0, 2 ); +// returns [ 1, 2 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Uint32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( -arr1.length, -1 ); +// returns [ 1, 2 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +If the method is unable to resolve indices to a non-empty array subsequence, the method returns an empty typed array. + + + +```javascript +var arr1 = new Uint32Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 10, -1 ); +// returns [] +``` + + + +#### Uint32Array.prototype.toLocaleString( \[locales\[, options]] ) + +Serializes an array as a locale-specific `string`. + + + +```javascript +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +var str = arr.toLocaleString(); +// returns '1,2,3' +``` + + + +#### Uint32Array.prototype.toString() + +Serializes an array as a `string`. + + + +```javascript +var arr = new Uint32Array( [ 1, 2, 3 ] ); + +var str = arr.toString(); +// returns '1,2,3' +``` + + + +#### Uint32Array.prototype.values() + +Returns an iterator for iterating over array elements. + + + +```javascript +var arr = new Uint32Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.values(); + +// Iterate over array elements... +var v = it.next().value; +// returns 1 + +v = it.next().value; +// returns 2 + +var bool = it.next().done; +// returns true +``` + diff --git a/lib/node_modules/@stdlib/array/uint8/README.md b/lib/node_modules/@stdlib/array/uint8/README.md index 38ab49685244..6924d9c3a22e 100644 --- a/lib/node_modules/@stdlib/array/uint8/README.md +++ b/lib/node_modules/@stdlib/array/uint8/README.md @@ -262,6 +262,1113 @@ var arr = Uint8Array.of( 1, 2 ); // returns [ 1, 2 ] ``` + + +#### Uint8Array.prototype.copyWithin( target, start\[, end] ) + +Copies a sequence of elements within an array starting at `start` and ending at `end` (non-inclusive) to the position starting at `target`. + + + +```javascript +var arr = new Uint8Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the last two elements to the first two elements: +arr.copyWithin( 0, 3 ); + +var v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 5 +``` + +By default, `end` equals the number of array elements (i.e., one more than the last array index). To limit the sequence length, provide an `end` argument. + + + +```javascript +var arr = new Uint8Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( 3, 0, 2 ); + +var v = arr[ 3 ]; +// returns 1 + +v = arr[ 4 ]; +// returns 2 +``` + +When a `target`, `start`, and/or `end` index is negative, the respective index is determined relative to the last array element. The following example achieves the same behavior as the previous example: + + + +```javascript +var arr = new Uint8Array( [ 1, 2, 3, 4, 5 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( -2, -5, -3 ); + +var v = arr[ 3 ]; +// returns 1 + +v = arr[ 4 ]; +// returns 2 +``` + + + +#### Uint8Array.prototype.entries() + +Returns an iterator for iterating over array key-value pairs. + + + +```javascript +var arr = new Uint8Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.entries(); + +// Iterate over key-value pairs... +var v = it.next().value; +// returns [ 0, 1 ] + +v = it.next().value; +// returns [ 1, 2 ] + +var bool = it.next().done; +// returns true +``` + + + +#### Uint8Array.prototype.every( predicate\[, thisArg] ) + +Tests whether all array elements pass a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v <= 1 ); +} + +var arr = new Uint8Array( [ 1, 2 ] ); + +var bool = arr.every( predicate ); +// returns false +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 1 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint8Array( [ 1, 2 ] ); + +var bool = arr.every( predicate, ctx ); +// returns true + +var n = ctx.count; +// returns 2 +``` + + + +#### Uint8Array.prototype.fill( value\[, start\[, end]] ) + +Fills an array from a `start` index to an `end` index (non-inclusive) with a provided `value`. + + + +```javascript +var arr = new Uint8Array( 2 ); + +// Set all array elements to the same value: +arr.fill( 2 ); + +var v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 2 + +// Set all array elements starting from the first index to the same value: +arr.fill( 3, 1 ); + +v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 3 + +// Set all array elements, except the last element, to the same value: +arr.fill( 4, 0, arr.length-1 ); + +v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 3 +``` + +When a `start` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr = new Uint8Array( 2 ); + +// Set all array elements, except the last element, to the same value: +arr.fill( 2, -arr.length, -1 ); + +var v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 0 +``` + + + +#### Uint8Array.prototype.filter( predicate\[, thisArg] ) + +Creates a new array (of the same data type as the host array) which includes those elements for which a `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v >= 2 ); +} + +var arr1 = new Uint8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [ 2, 3 ] +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns an empty array. + + + +```javascript +function predicate( v ) { + return ( v >= 10 ); +} + +var arr1 = new Uint8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [] +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Uint8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint8Array.prototype.find( predicate\[, thisArg] ) + +Returns the first array element for which a provided `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v > 2 ); +} + +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate ); +// returns 3 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `undefined`. + + + +```javascript +function predicate( v ) { + return ( v < 1 ); +} + +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate ); +// returns undefined +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v > 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +var v = arr.find( predicate, ctx ); +// returns 3 + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint8Array.prototype.findIndex( predicate\[, thisArg] ) + +Returns the index of the first array element for which a provided `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v >= 3 ); +} + +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate ); +// returns 2 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `-1`. + + + +```javascript +function predicate( v ) { + return ( v < 1 ); +} + +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate ); +// returns -1 +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 3 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate, ctx ); +// returns 2 + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint8Array.prototype.forEach( fcn\[, thisArg] ) + +Invokes a callback for each array element. + + + +```javascript +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +var str = ''; + +function fcn( v, i ) { + str += i + ':' + v; + if ( i < arr.length-1 ) { + str += ' '; + } +} + +arr.forEach( fcn ); + +console.log( str ); +// => '0:1 1:2 2:3' +``` + +The callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn() { + this.count += 1; +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +arr.forEach( fcn, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint8Array.prototype.includes( searchElement\[, fromIndex] ) + +Returns a `boolean` indicating whether an array includes a search element. + + + +```javascript +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +var bool = arr.includes( 3 ); +// returns true + +bool = arr.includes( 0 ); +// returns false +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +var bool = arr.includes( 1, 1 ); +// returns false +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +bool = arr.includes( 1, -2 ); +// returns false +``` + + + +#### Uint8Array.prototype.indexOf( searchElement\[, fromIndex] ) + +Returns the index of the first array element strictly equal to a search element. + + + +```javascript +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 3 ); +// returns 2 + +idx = arr.indexOf( 0 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 1, 1 ); +// returns -1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 1, -2 ); +// returns -1 +``` + + + +#### Uint8Array.prototype.join( \[separator] ) + +Serializes an array by joining all array elements as a string. + + + +```javascript +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +var str = arr.join(); +// returns '1,2,3' +``` + +By default, the method delineates array elements using a comma `,`. To specify a custom separator, provide a `separator` string. + + + +```javascript +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +var str = arr.join( '|' ); +// returns '1|2|3' +``` + + + +#### Uint8Array.prototype.keys() + +Returns an iterator for iterating over array keys. + + + +```javascript +var arr = new Uint8Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.keys(); + +// Iterate over keys... +var v = it.next().value; +// returns 0 + +v = it.next().value; +// returns 1 + +var bool = it.next().done; +// returns true +``` + + + +#### Uint8Array.prototype.lastIndexOf( searchElement\[, fromIndex] ) + +Returns the index of the last array element strictly equal to a search element, iterating from right to left. + + + +```javascript +var arr = new Uint8Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0 ); +// returns 3 + +idx = arr.lastIndexOf( 3 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = -1`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Uint8Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0, 2 ); +// returns 1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Uint8Array( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0, -3 ); +// returns 1 +``` + + + +#### Uint8Array.prototype.map( fcn\[, thisArg] ) + +Maps each array element to an element in a new array having the same data type as the host array. + + + +```javascript +function fcn( v ) { + return v * 2; +} + +var arr1 = new Uint8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.map( fcn ); +// returns [ 2, 4, 6 ] +``` + +A callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn( v ) { + this.count += 1; + return v * 2; +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Uint8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.map( fcn ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint8Array.prototype.reduce( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Uint8Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn ); +// returns 12 +``` + +If not provided an initial value, the method invokes a provided function with the first array element as the first argument and the second array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the first array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Uint8Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn, 0 ); +// returns 14 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Uint8Array.prototype.reduceRight( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result, iterating from right to left. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Uint8Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn ); +// returns 8 +``` + +If not provided an initial value, the method invokes a provided function with the last array element as the first argument and the second-to-last array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the last array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Uint8Array( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn, 0 ); +// returns 14 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Uint8Array.prototype.reverse() + +Reverses an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Uint8Array( [ 2, 0, 3 ] ); + +// Reverse the array: +arr.reverse(); + +var v = arr[ 0 ]; +// returns 3 + +v = arr[ 1 ]; +// returns 0 + +v = arr[ 2 ]; +// returns 2 +``` + + + +#### Uint8Array.prototype.set( arr\[, offset] ) + +Sets array elements. + + + +```javascript +var arr = new Uint8Array( [ 1, 2, 3 ] ); +// returns [ 1, 2, 3 ] + +// Set the first two array elements: +arr.set( [ 4, 5 ] ); + +var v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 5 +``` + +By default, the method starts writing values at the first array index. To specify an alternative index, provide an index `offset`. + + + +```javascript +var arr = new Uint8Array( [ 1, 2, 3 ] ); +// returns [ 1, 2, 3 ] + +// Set the last two array elements: +arr.set( [ 4, 5 ], 1 ); + +var v = arr[ 1 ]; +// returns 4 + +v = arr[ 2 ]; +// returns 5 +``` + + + +#### Uint8Array.prototype.slice( \[begin\[, end]] ) + +Copies array elements to a new array with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Uint8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice(); + +var bool = ( arr1 === arr2 ); +// returns false + +bool = ( arr1.buffer === arr2.buffer ); +// returns false + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 + +v = arr2[ 2 ]; +// returns 3 +``` + +By default, the method copies elements beginning with the first array element. To specify an alternative array index at which to begin copying, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Uint8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( 1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 2 + +v = arr2[ 1 ]; +// returns 3 +``` + +By default, the method copies all array elements after `begin`. To specify an alternative array index at which to end copying, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Uint8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( 0, 2 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Uint8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( -arr1.length, -1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 +``` + + + +#### Uint8Array.prototype.some( predicate\[, thisArg] ) + +Tests whether at least one array element passes a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v >= 2 ); +} + +var arr = new Uint8Array( [ 1, 2 ] ); + +var bool = arr.some( predicate ); +// returns true +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint8Array( [ 1, 1 ] ); + +var bool = arr.some( predicate, ctx ); +// returns false + +var n = ctx.count; +// returns 2 +``` + + + +#### Uint8Array.prototype.sort( \[compareFunction] ) + +Sorts an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Uint8Array( [ 2, 3, 0 ] ); + +// Sort the array (in ascending order): +arr.sort(); + +var v = arr[ 0 ]; +// returns 0 + +v = arr[ 1 ]; +// returns 2 + +v = arr[ 2 ]; +// returns 3 +``` + +By default, the method sorts array elements in ascending order. To impose a custom order, provide a `compareFunction`. + + + +```javascript +function descending( a, b ) { + return b - a; +} + +var arr = new Uint8Array( [ 2, 3, 0 ] ); + +// Sort the array (in descending order): +arr.sort( descending ); + +var v = arr[ 0 ]; +// returns 3 + +v = arr[ 1 ]; +// returns 2 + +v = arr[ 2 ]; +// returns 0 +``` + +The comparison function is provided two array elements, `a` and `b`, per invocation, and its return value determines the sort order as follows: + +- If the comparison function returns a value **less** than zero, then the method sorts `a` to an index lower than `b` (i.e., `a` should come **before** `b`). +- If the comparison function returns a value **greater** than zero, then the method sorts `a` to an index higher than `b` (i.e., `b` should come **before** `a`). +- If the comparison function returns **zero**, then the relative order of `a` and `b` _should_ remain unchanged. + + + +#### Uint8Array.prototype.subarray( \[begin\[, end]] ) + +Creates a new typed array view over the same underlying [`ArrayBuffer`][@stdlib/array/buffer] and with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Uint8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray(); +// returns [ 1, 2, 3 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view beginning with the first array element. To specify an alternative array index at which to begin, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Uint8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 1 ); +// returns [ 2, 3 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view which includes all array elements after `begin`. To limit the number of array elements after `begin`, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Uint8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 0, 2 ); +// returns [ 1, 2 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Uint8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( -arr1.length, -1 ); +// returns [ 1, 2 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +If the method is unable to resolve indices to a non-empty array subsequence, the method returns an empty typed array. + + + +```javascript +var arr1 = new Uint8Array( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 10, -1 ); +// returns [] +``` + + + +#### Uint8Array.prototype.toLocaleString( \[locales\[, options]] ) + +Serializes an array as a locale-specific `string`. + + + +```javascript +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +var str = arr.toLocaleString(); +// returns '1,2,3' +``` + + + +#### Uint8Array.prototype.toString() + +Serializes an array as a `string`. + + + +```javascript +var arr = new Uint8Array( [ 1, 2, 3 ] ); + +var str = arr.toString(); +// returns '1,2,3' +``` + + + +#### Uint8Array.prototype.values() + +Returns an iterator for iterating over array elements. + + + +```javascript +var arr = new Uint8Array( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.values(); + +// Iterate over array elements... +var v = it.next().value; +// returns 1 + +v = it.next().value; +// returns 2 + +var bool = it.next().done; +// returns true +``` + diff --git a/lib/node_modules/@stdlib/array/uint8c/README.md b/lib/node_modules/@stdlib/array/uint8c/README.md index 6c045b53ac12..b7b03bbb8cc1 100644 --- a/lib/node_modules/@stdlib/array/uint8c/README.md +++ b/lib/node_modules/@stdlib/array/uint8c/README.md @@ -262,6 +262,1113 @@ var arr = Uint8ClampedArray.of( 1, 2 ); // returns [ 1, 2 ] ``` + + +#### Uint8ClampedArray.prototype.copyWithin( target, start\[, end] ) + +Copies a sequence of elements within an array starting at `start` and ending at `end` (non-inclusive) to the position starting at `target`. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2, 3, 4, 5 ] ); + +// Copy the last two elements to the first two elements: +arr.copyWithin( 0, 3 ); + +var v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 5 +``` + +By default, `end` equals the number of array elements (i.e., one more than the last array index). To limit the sequence length, provide an `end` argument. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2, 3, 4, 5 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( 3, 0, 2 ); + +var v = arr[ 3 ]; +// returns 1 + +v = arr[ 4 ]; +// returns 2 +``` + +When a `target`, `start`, and/or `end` index is negative, the respective index is determined relative to the last array element. The following example achieves the same behavior as the previous example: + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2, 3, 4, 5 ] ); + +// Copy the first two elements to the last two elements: +arr.copyWithin( -2, -5, -3 ); + +var v = arr[ 3 ]; +// returns 1 + +v = arr[ 4 ]; +// returns 2 +``` + + + +#### Uint8ClampedArray.prototype.entries() + +Returns an iterator for iterating over array key-value pairs. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.entries(); + +// Iterate over key-value pairs... +var v = it.next().value; +// returns [ 0, 1 ] + +v = it.next().value; +// returns [ 1, 2 ] + +var bool = it.next().done; +// returns true +``` + + + +#### Uint8ClampedArray.prototype.every( predicate\[, thisArg] ) + +Tests whether all array elements pass a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v <= 1 ); +} + +var arr = new Uint8ClampedArray( [ 1, 2 ] ); + +var bool = arr.every( predicate ); +// returns false +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 1 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint8ClampedArray( [ 1, 2 ] ); + +var bool = arr.every( predicate, ctx ); +// returns true + +var n = ctx.count; +// returns 2 +``` + + + +#### Uint8ClampedArray.prototype.fill( value\[, start\[, end]] ) + +Fills an array from a `start` index to an `end` index (non-inclusive) with a provided `value`. + + + +```javascript +var arr = new Uint8ClampedArray( 2 ); + +// Set all array elements to the same value: +arr.fill( 2 ); + +var v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 2 + +// Set all array elements starting from the first index to the same value: +arr.fill( 3, 1 ); + +v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 3 + +// Set all array elements, except the last element, to the same value: +arr.fill( 4, 0, arr.length-1 ); + +v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 3 +``` + +When a `start` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr = new Uint8ClampedArray( 2 ); + +// Set all array elements, except the last element, to the same value: +arr.fill( 2, -arr.length, -1 ); + +var v = arr[ 0 ]; +// returns 2 + +v = arr[ 1 ]; +// returns 0 +``` + + + +#### Uint8ClampedArray.prototype.filter( predicate\[, thisArg] ) + +Creates a new array (of the same data type as the host array) which includes those elements for which a `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v >= 2 ); +} + +var arr1 = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [ 2, 3 ] +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns an empty array. + + + +```javascript +function predicate( v ) { + return ( v >= 10 ); +} + +var arr1 = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate ); +// returns [] +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var arr2 = arr1.filter( predicate, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint8ClampedArray.prototype.find( predicate\[, thisArg] ) + +Returns the first array element for which a provided `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v > 2 ); +} + +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var v = arr.find( predicate ); +// returns 3 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `undefined`. + + + +```javascript +function predicate( v ) { + return ( v < 1 ); +} + +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var v = arr.find( predicate ); +// returns undefined +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v > 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var v = arr.find( predicate, ctx ); +// returns 3 + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint8ClampedArray.prototype.findIndex( predicate\[, thisArg] ) + +Returns the index of the first array element for which a provided `predicate` function returns a truthy value. + + + +```javascript +function predicate( v ) { + return ( v >= 3 ); +} + +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate ); +// returns 2 +``` + +If a `predicate` function does not return a truthy value for any array element, the method returns `-1`. + + + +```javascript +function predicate( v ) { + return ( v < 1 ); +} + +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate ); +// returns -1 +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 3 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var idx = arr.findIndex( predicate, ctx ); +// returns 2 + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint8ClampedArray.prototype.forEach( fcn\[, thisArg] ) + +Invokes a callback for each array element. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var str = ''; + +function fcn( v, i ) { + str += i + ':' + v; + if ( i < arr.length-1 ) { + str += ' '; + } +} + +arr.forEach( fcn ); + +console.log( str ); +// => '0:1 1:2 2:3' +``` + +The callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn() { + this.count += 1; +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +arr.forEach( fcn, ctx ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint8ClampedArray.prototype.includes( searchElement\[, fromIndex] ) + +Returns a `boolean` indicating whether an array includes a search element. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var bool = arr.includes( 3 ); +// returns true + +bool = arr.includes( 0 ); +// returns false +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var bool = arr.includes( 1, 1 ); +// returns false +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +bool = arr.includes( 1, -2 ); +// returns false +``` + + + +#### Uint8ClampedArray.prototype.indexOf( searchElement\[, fromIndex] ) + +Returns the index of the first array element strictly equal to a search element. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 3 ); +// returns 2 + +idx = arr.indexOf( 0 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = 0`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 1, 1 ); +// returns -1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var idx = arr.indexOf( 1, -2 ); +// returns -1 +``` + + + +#### Uint8ClampedArray.prototype.join( \[separator] ) + +Serializes an array by joining all array elements as a string. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var str = arr.join(); +// returns '1,2,3' +``` + +By default, the method delineates array elements using a comma `,`. To specify a custom separator, provide a `separator` string. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var str = arr.join( '|' ); +// returns '1|2|3' +``` + + + +#### Uint8ClampedArray.prototype.keys() + +Returns an iterator for iterating over array keys. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.keys(); + +// Iterate over keys... +var v = it.next().value; +// returns 0 + +v = it.next().value; +// returns 1 + +var bool = it.next().done; +// returns true +``` + + + +#### Uint8ClampedArray.prototype.lastIndexOf( searchElement\[, fromIndex] ) + +Returns the index of the last array element strictly equal to a search element, iterating from right to left. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0 ); +// returns 3 + +idx = arr.lastIndexOf( 3 ); +// returns -1 +``` + +By default, the method searches the entire array (`fromIndex = -1`). To begin searching from a specific array index, provide a `fromIndex`. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0, 2 ); +// returns 1 +``` + +When a `fromIndex` is negative, the starting index is resolved relative to the last array element. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 0, 2, 0, 1 ] ); + +var idx = arr.lastIndexOf( 0, -3 ); +// returns 1 +``` + + + +#### Uint8ClampedArray.prototype.map( fcn\[, thisArg] ) + +Maps each array element to an element in a new array having the same data type as the host array. + + + +```javascript +function fcn( v ) { + return v * 2; +} + +var arr1 = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var arr2 = arr1.map( fcn ); +// returns [ 2, 4, 6 ] +``` + +A callback is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function fcn( v ) { + this.count += 1; + return v * 2; +} + +var ctx = { + 'count': 0 +}; + +var arr1 = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var arr2 = arr1.map( fcn ); + +var n = ctx.count; +// returns 3 +``` + + + +#### Uint8ClampedArray.prototype.reduce( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Uint8ClampedArray( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn ); +// returns 12 +``` + +If not provided an initial value, the method invokes a provided function with the first array element as the first argument and the second array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the first array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Uint8ClampedArray( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn, 0 ); +// returns 14 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Uint8ClampedArray.prototype.reduceRight( fcn\[, initialValue] ) + +Applies a function against an accumulator and each element in an array and returns the accumulated result, iterating from right to left. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Uint8ClampedArray( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn ); +// returns 8 +``` + +If not provided an initial value, the method invokes a provided function with the last array element as the first argument and the second-to-last array element as the second argument. + +If provided an initial value, the method invokes a provided function with the initial value as the first argument and the last array element as the second argument. + + + +```javascript +function fcn( acc, v ) { + return acc + ( v*v ); +} + +var arr = new Uint8ClampedArray( [ 2, 1, 3 ] ); + +var v = arr.reduce( fcn, 0 ); +// returns 14 +``` + +A callback is provided four arguments: + +- `acc`: accumulated result +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + + + +#### Uint8ClampedArray.prototype.reverse() + +Reverses an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Uint8ClampedArray( [ 2, 0, 3 ] ); + +// Reverse the array: +arr.reverse(); + +var v = arr[ 0 ]; +// returns 3 + +v = arr[ 1 ]; +// returns 0 + +v = arr[ 2 ]; +// returns 2 +``` + + + +#### Uint8ClampedArray.prototype.set( arr\[, offset] ) + +Sets array elements. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); +// returns [ 1, 2, 3 ] + +// Set the first two array elements: +arr.set( [ 4, 5 ] ); + +var v = arr[ 0 ]; +// returns 4 + +v = arr[ 1 ]; +// returns 5 +``` + +By default, the method starts writing values at the first array index. To specify an alternative index, provide an index `offset`. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); +// returns [ 1, 2, 3 ] + +// Set the last two array elements: +arr.set( [ 4, 5 ], 1 ); + +var v = arr[ 1 ]; +// returns 4 + +v = arr[ 2 ]; +// returns 5 +``` + + + +#### Uint8ClampedArray.prototype.slice( \[begin\[, end]] ) + +Copies array elements to a new array with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice(); + +var bool = ( arr1 === arr2 ); +// returns false + +bool = ( arr1.buffer === arr2.buffer ); +// returns false + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 + +v = arr2[ 2 ]; +// returns 3 +``` + +By default, the method copies elements beginning with the first array element. To specify an alternative array index at which to begin copying, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( 1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 2 + +v = arr2[ 1 ]; +// returns 3 +``` + +By default, the method copies all array elements after `begin`. To specify an alternative array index at which to end copying, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( 0, 2 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var arr2 = arr1.slice( -arr1.length, -1 ); + +var len = arr2.length; +// returns 2 + +var v = arr2[ 0 ]; +// returns 1 + +v = arr2[ 1 ]; +// returns 2 +``` + + + +#### Uint8ClampedArray.prototype.some( predicate\[, thisArg] ) + +Tests whether at least one array element passes a test implemented by a `predicate` function. + + + +```javascript +function predicate( v ) { + return ( v >= 2 ); +} + +var arr = new Uint8ClampedArray( [ 1, 2 ] ); + +var bool = arr.some( predicate ); +// returns true +``` + +A `predicate` function is provided three arguments: + +- `value`: array element +- `index`: array index +- `arr`: array on which the method is invoked + +To set the callback execution context, provide a `thisArg`. + + + +```javascript +function predicate( v ) { + this.count += 1; + return ( v >= 2 ); +} + +var ctx = { + 'count': 0 +}; + +var arr = new Uint8ClampedArray( [ 1, 1 ] ); + +var bool = arr.some( predicate, ctx ); +// returns false + +var n = ctx.count; +// returns 2 +``` + + + +#### Uint8ClampedArray.prototype.sort( \[compareFunction] ) + +Sorts an array **in-place** (thus mutating the array on which the method is invoked). + + + +```javascript +var arr = new Uint8ClampedArray( [ 2, 3, 0 ] ); + +// Sort the array (in ascending order): +arr.sort(); + +var v = arr[ 0 ]; +// returns 0 + +v = arr[ 1 ]; +// returns 2 + +v = arr[ 2 ]; +// returns 3 +``` + +By default, the method sorts array elements in ascending order. To impose a custom order, provide a `compareFunction`. + + + +```javascript +function descending( a, b ) { + return b - a; +} + +var arr = new Uint8ClampedArray( [ 2, 3, 0 ] ); + +// Sort the array (in descending order): +arr.sort( descending ); + +var v = arr[ 0 ]; +// returns 3 + +v = arr[ 1 ]; +// returns 2 + +v = arr[ 2 ]; +// returns 0 +``` + +The comparison function is provided two array elements, `a` and `b`, per invocation, and its return value determines the sort order as follows: + +- If the comparison function returns a value **less** than zero, then the method sorts `a` to an index lower than `b` (i.e., `a` should come **before** `b`). +- If the comparison function returns a value **greater** than zero, then the method sorts `a` to an index higher than `b` (i.e., `b` should come **before** `a`). +- If the comparison function returns **zero**, then the relative order of `a` and `b` _should_ remain unchanged. + + + +#### Uint8ClampedArray.prototype.subarray( \[begin\[, end]] ) + +Creates a new typed array view over the same underlying [`ArrayBuffer`][@stdlib/array/buffer] and with the same underlying data type as the host array. + + + +```javascript +var arr1 = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray(); +// returns [ 1, 2, 3 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view beginning with the first array element. To specify an alternative array index at which to begin, provide a `begin` index (inclusive). + + + +```javascript +var arr1 = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 1 ); +// returns [ 2, 3 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +By default, the method creates a typed array view which includes all array elements after `begin`. To limit the number of array elements after `begin`, provide an `end` index (exclusive). + + + +```javascript +var arr1 = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 0, 2 ); +// returns [ 1, 2 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +When a `begin` and/or `end` index is negative, the respective index is determined relative to the last array element. + + + +```javascript +var arr1 = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( -arr1.length, -1 ); +// returns [ 1, 2 ] + +var bool = ( arr1.buffer === arr2.buffer ); +// returns true +``` + +If the method is unable to resolve indices to a non-empty array subsequence, the method returns an empty typed array. + + + +```javascript +var arr1 = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var arr2 = arr1.subarray( 10, -1 ); +// returns [] +``` + + + +#### Uint8ClampedArray.prototype.toLocaleString( \[locales\[, options]] ) + +Serializes an array as a locale-specific `string`. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var str = arr.toLocaleString(); +// returns '1,2,3' +``` + + + +#### Uint8ClampedArray.prototype.toString() + +Serializes an array as a `string`. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2, 3 ] ); + +var str = arr.toString(); +// returns '1,2,3' +``` + + + +#### Uint8ClampedArray.prototype.values() + +Returns an iterator for iterating over array elements. + + + +```javascript +var arr = new Uint8ClampedArray( [ 1, 2 ] ); + +// Create an iterator: +var it = arr.values(); + +// Iterate over array elements... +var v = it.next().value; +// returns 1 + +v = it.next().value; +// returns 2 + +var bool = it.next().done; +// returns true +``` + From 4cd89210b90696a839ce6baf0975de90e1317dfe Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 3 Oct 2018 15:47:57 -0700 Subject: [PATCH 0637/1062] Fix code fence language --- lib/node_modules/@stdlib/_tools/lint/pkg-json/README.md | 2 +- lib/node_modules/@stdlib/_tools/lint/repl-txt/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/_tools/lint/pkg-json/README.md b/lib/node_modules/@stdlib/_tools/lint/pkg-json/README.md index 4195874eab0e..7ac841a588d7 100644 --- a/lib/node_modules/@stdlib/_tools/lint/pkg-json/README.md +++ b/lib/node_modules/@stdlib/_tools/lint/pkg-json/README.md @@ -184,7 +184,7 @@ function done( error, errs ) { ### Usage -```bash +```text Usage: lint-pkg-json [options] [dir] Options: diff --git a/lib/node_modules/@stdlib/_tools/lint/repl-txt/README.md b/lib/node_modules/@stdlib/_tools/lint/repl-txt/README.md index 315e142510e8..acc01f70fb7d 100644 --- a/lib/node_modules/@stdlib/_tools/lint/repl-txt/README.md +++ b/lib/node_modules/@stdlib/_tools/lint/repl-txt/README.md @@ -190,7 +190,7 @@ function done( error, errs ) { ### Usage -```bash +```text Usage: lint-repl-txt [options] [dir] Options: From 4f1724c721a55b545bbb412ee9024c7841cba5e0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 3 Oct 2018 16:13:57 -0700 Subject: [PATCH 0638/1062] Fix example output and disable running long-running code blocks --- .../@stdlib/_tools/pkgs/readmes/README.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/_tools/pkgs/readmes/README.md b/lib/node_modules/@stdlib/_tools/pkgs/readmes/README.md index f08903e8c878..8c8454614d4f 100644 --- a/lib/node_modules/@stdlib/_tools/pkgs/readmes/README.md +++ b/lib/node_modules/@stdlib/_tools/pkgs/readmes/README.md @@ -34,6 +34,8 @@ var findREADMEs = require( '@stdlib/_tools/pkgs/readmes' ); Asynchronously search for package READMEs. + + ```javascript findREADMEs( onFiles ); @@ -87,6 +89,8 @@ function onFiles( error, files ) { To exclude matches, set the `ignore` option. + + ```javascript var opts = { 'ignore': [ @@ -110,6 +114,8 @@ function onFiles( error, files ) { Synchronously searches for package READMEs. + + ```javascript var files = findREADMEs.sync(); // returns [...] @@ -135,6 +141,8 @@ The function accepts the same `options` as `findREADMEs()` above. ## Examples + + ```javascript @@ -187,6 +195,8 @@ Options: - To provide multiple exclusion glob patterns, set multiple `--ignore` option arguments. + + ```bash $ find-pkg-readmes --ignore=node_modules/** --ignore=build/** --ignore=reports/** ``` @@ -199,10 +209,12 @@ Options: ### Examples + + ```bash $ find-pkg-readmes - - + + ... ``` From b7951df99371a150bc5b77c685ca54a6a8ac8830 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 3 Oct 2018 16:50:19 -0700 Subject: [PATCH 0639/1062] Update example return values --- lib/node_modules/@stdlib/_tools/pkgs/readmes/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/_tools/pkgs/readmes/README.md b/lib/node_modules/@stdlib/_tools/pkgs/readmes/README.md index 8c8454614d4f..2b878271e182 100644 --- a/lib/node_modules/@stdlib/_tools/pkgs/readmes/README.md +++ b/lib/node_modules/@stdlib/_tools/pkgs/readmes/README.md @@ -213,8 +213,8 @@ Options: ```bash $ find-pkg-readmes - - + + ... ``` From 71844cdc0f0d353976c9675026725e3329815257 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 3 Oct 2018 16:59:33 -0700 Subject: [PATCH 0640/1062] Add tool for listing package REPL help files --- .../@stdlib/_tools/pkgs/repl-help/README.md | 231 +++++++++++++++++ .../@stdlib/_tools/pkgs/repl-help/bin/cli | 101 ++++++++ .../_tools/pkgs/repl-help/docs/usage.txt | 11 + .../_tools/pkgs/repl-help/etc/cli_opts.json | 19 ++ .../_tools/pkgs/repl-help/examples/index.js | 30 +++ .../_tools/pkgs/repl-help/lib/config.json | 5 + .../@stdlib/_tools/pkgs/repl-help/lib/find.js | 112 ++++++++ .../_tools/pkgs/repl-help/lib/index.js | 58 +++++ .../@stdlib/_tools/pkgs/repl-help/lib/main.js | 131 ++++++++++ .../@stdlib/_tools/pkgs/repl-help/lib/sync.js | 97 +++++++ .../_tools/pkgs/repl-help/lib/validate.js | 97 +++++++ .../_tools/pkgs/repl-help/package.json | 74 ++++++ .../_tools/pkgs/repl-help/test/test.async.js | 209 +++++++++++++++ .../_tools/pkgs/repl-help/test/test.cli.js | 239 ++++++++++++++++++ .../_tools/pkgs/repl-help/test/test.find.js | 106 ++++++++ .../_tools/pkgs/repl-help/test/test.js | 38 +++ .../_tools/pkgs/repl-help/test/test.sync.js | 146 +++++++++++ .../pkgs/repl-help/test/test.validate.js | 234 +++++++++++++++++ 18 files changed, 1938 insertions(+) create mode 100644 lib/node_modules/@stdlib/_tools/pkgs/repl-help/README.md create mode 100755 lib/node_modules/@stdlib/_tools/pkgs/repl-help/bin/cli create mode 100644 lib/node_modules/@stdlib/_tools/pkgs/repl-help/docs/usage.txt create mode 100644 lib/node_modules/@stdlib/_tools/pkgs/repl-help/etc/cli_opts.json create mode 100644 lib/node_modules/@stdlib/_tools/pkgs/repl-help/examples/index.js create mode 100644 lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/config.json create mode 100644 lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/find.js create mode 100644 lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/index.js create mode 100644 lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/main.js create mode 100644 lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/sync.js create mode 100644 lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/validate.js create mode 100644 lib/node_modules/@stdlib/_tools/pkgs/repl-help/package.json create mode 100644 lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.async.js create mode 100644 lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.cli.js create mode 100644 lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.find.js create mode 100644 lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.js create mode 100644 lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.sync.js create mode 100644 lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.validate.js diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/README.md b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/README.md new file mode 100644 index 000000000000..dcba3af3ccdf --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/README.md @@ -0,0 +1,231 @@ + + +# REPL Help + +> Find package REPL help files. + +
+ +## Usage + +```javascript +var findREPLHelp = require( '@stdlib/_tools/pkgs/repl-help' ); +``` + +#### findREPLHelp( \[options,] clbk ) + +Asynchronously search for package REPL help files. + + + +```javascript +findREPLHelp( onFiles ); + +function onFiles( error, files ) { + if ( error ) { + throw error; + } + console.log( files.join( '\n' ) ); +} +``` + +The function accepts the following `options`: + +- **dir**: root directory from which to search for package REPL help files. May be either an absolute path or a path relative to the current working directory. Default: current working directory. +- **pattern**: glob pattern used to find packages. Default: `'**/package.json'` (note: pattern **must** end with `package.json`). +- **filename**: REPL help filename. May include a directory prefix (relative to a package's directory). Default: `docs/repl.txt`. +- **ignore**: list of glob patterns used to exclude matches. + +To search from an alternative directory, set the `dir` option. + +```javascript +var opts = { + 'dir': '/foo/bar/baz' +}; + +findREPLHelp( opts, onFiles ); + +function onFiles( error, files ) { + if ( error ) { + throw error; + } + console.log( files.join( '\n' ) ); +} +``` + +To provide an alternative include filter, set the `pattern` option. + +```javascript +var opts = { + 'pattern': '**/foo/**/package.json' +}; + +findREPLHelp( opts, onFiles ); + +function onFiles( error, files ) { + if ( error ) { + throw error; + } + console.log( files.join( '\n' ) ); +} +``` + +To exclude matches, set the `ignore` option. + + + +```javascript +var opts = { + 'ignore': [ + 'node_modules/**', + 'build/**', + 'reports/**' + ] +}; + +findREPLHelp( opts, onFiles ); + +function onFiles( error, files ) { + if ( error ) { + throw error; + } + console.log( files.join( '\n' ) ); +} +``` + +#### findREPLHelp.sync( \[options] ) + +Synchronously searches for package REPL help files. + + + +```javascript +var files = findREPLHelp.sync(); +// returns [...] +``` + +The function accepts the same `options` as `findREPLHelp()` above. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + + + +```javascript +var findREPLHelp = require( '@stdlib/_tools/pkgs/repl-help' ); + +findREPLHelp( onFiles ); + +function onFiles( error, files ) { + if ( error ) { + throw error; + } + console.log( files.join( '\n' ) ); +} +``` + +
+ + + +* * * + +
+ +## CLI + +
+ +### Usage + +```text +Usage: find-pkg-repl-help [options] [] + +Options: + + -h, --help Print this message. + -V, --version Print the package version. + --pattern pattern Inclusion glob pattern. + --ignore pattern Exclusion glob pattern. + --filename filename REPL help filename. +``` + +
+ + + +
+ +### Notes + +- If not provided a `dir` argument, the current working directory is the search directory. + +- To provide multiple exclusion glob patterns, set multiple `--ignore` option arguments. + + + + ```bash + $ find-pkg-repl-help --ignore=node_modules/** --ignore=build/** --ignore=reports/** + ``` + +
+ + + +
+ +### Examples + + + +```bash +$ find-pkg-repl-help + + +... +``` + +
+ + + +
+ + + + + + diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/bin/cli b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/bin/cli new file mode 100755 index 000000000000..63bfd5483b30 --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/bin/cli @@ -0,0 +1,101 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var readFileSync = require( '@stdlib/fs/read-file' ).sync; +var CLI = require( '@stdlib/tools/cli' ); +var find = require( './../lib' ); // eslint-disable-line stdlib/no-redeclare + + +// FUNCTIONS // + +/** +* Callback invoked after finding package REPL help files. +* +* @private +* @param {(Error|null)} error - error object +* @param {(EmptyArray|StringArray)} files - list of files +* @throws {Error} unexpected error +*/ +function onFiles( error, files ) { + if ( error ) { + throw error; + } + if ( files.length ) { + console.log( files.join( '\n' ) ); // eslint-disable-line no-console + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var flags; + var args; + var opts; + var cli; + + // Create a command-line interface: + cli = new CLI({ + 'pkg': require( './../package.json' ), + 'options': require( './../etc/cli_opts.json' ), + 'help': readFileSync( resolve( __dirname, '..', 'docs', 'usage.txt' ), { + 'encoding': 'utf8' + }) + }); + + // Get any provided command-line arguments: + args = cli.args(); + + // Get any provided command-line options: + flags = cli.flags(); + + // Extract options... + opts = {}; + if ( flags.pattern ) { + opts.pattern = flags.pattern; + } + if ( flags.filename ) { + opts.filename = flags.filename; + } + if ( flags.ignore ) { + if ( typeof flags.ignore === 'string' ) { + opts.ignore = [ flags.ignore ]; + } else { + opts.ignore = flags.ignore; + } + } + if ( args[ 0 ] ) { + opts.dir = args[ 0 ]; + } + // Find package REPL help files: + find( opts, onFiles ); +} + +main(); diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/docs/usage.txt b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/docs/usage.txt new file mode 100644 index 000000000000..62b9699cca03 --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/docs/usage.txt @@ -0,0 +1,11 @@ + +Usage: find-pkg-repl-help [options] [] + +Options: + + -h, --help Print this message. + -V, --version Print the package version. + --pattern pattern Inclusion glob pattern. + --ignore pattern Exclusion glob pattern. + --filename filename REPL help filename. + diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/etc/cli_opts.json b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/etc/cli_opts.json new file mode 100644 index 000000000000..1a02b06f78e0 --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/etc/cli_opts.json @@ -0,0 +1,19 @@ +{ + "string": [ + "pattern", + "ignore", + "filename" + ], + "boolean": [ + "help", + "version" + ], + "alias": { + "help": [ + "h" + ], + "version": [ + "V" + ] + } +} diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/examples/index.js b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/examples/index.js new file mode 100644 index 000000000000..63dd564ef36e --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/examples/index.js @@ -0,0 +1,30 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var findREPLHelp = require( './../lib' ); + +findREPLHelp( done ); + +function done( error, files ) { + if ( error ) { + throw error; + } + console.log( files.join( '\n' ) ); +} diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/config.json b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/config.json new file mode 100644 index 000000000000..498979242449 --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/config.json @@ -0,0 +1,5 @@ +{ + "pattern": "**/package.json", + "filename": "docs/repl.txt", + "ignore": [] +} diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/find.js b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/find.js new file mode 100644 index 000000000000..b8b9620c5201 --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/find.js @@ -0,0 +1,112 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var join = require( 'path' ).join; +var logger = require( 'debug' ); +var dirname = require( '@stdlib/utils/dirname' ); +var exists = require( '@stdlib/fs/exists' ); + + +// VARIABLES // + +var debug = logger( 'pkgs:repl-help:find' ); + + +// MAIN // + +/** +* Searches for REPL help files based on a list of `package.json` files. +* +* @private +* @param {StringArray} files - list of `package.json` files +* @param {Options} opts - search options +* @param {string} opts.filename - REPL help filename +* @param {Callback} clbk - callback to invoke upon completion +* @returns {void} +*/ +function find( files, opts, clbk ) { // eslint-disable-line stdlib/no-redeclare + var total; + var out; + var i; + + total = files.length; + i = -1; + out = []; + + return next(); + + /** + * Checks the next package. + * + * @private + */ + function next() { + var fpath; + var dir; + + i += 1; + debug( 'Searching package %d of %d: %s', i+1, total, files[ i ] ); + + debug( 'Checking for a REPL help file...' ); + dir = dirname( files[ i ] ); + fpath = join( dir, opts.filename ); + exists( fpath, onExists ); + + /** + * Callback invoked after checking for a REPL help file. + * + * @private + * @param {(Error|null)} error - error object + * @param {boolean} bool - boolean indicating if a file exists + */ + function onExists( error, bool ) { // eslint-disable-line no-unused-vars + if ( error ) { + debug( 'Encountered an error when searching for a REPL help file. Directory: %s (%d of %d). Error: %s', dir, i+1, total, error.message ); + } else { + debug( 'Found a package REPL help file.' ); + out.push( fpath ); + } + done(); + } + } + + /** + * Callback invoked upon checking all packages. + * + * @private + * @returns {void} + */ + function done() { + var j = i + 1; + if ( j < total ) { + debug( 'Searched %d of %d packages.', j, total ); + return next(); + } + debug( 'Successfully searched all packages.' ); + return clbk( null, out ); + } +} + + +// EXPORTS // + +module.exports = find; diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/index.js b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/index.js new file mode 100644 index 000000000000..4538c72d11fe --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/index.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Find package REPL help files. +* +* @module @stdlib/_tools/pkgs/repl-help +* +* @example +* var findREPLHelp = require( '@stdlib/_tools/pkgs/repl-help' ); +* +* findREPLHelp( clbk ); +* +* function clbk( error, files ) { +* if ( error ) { +* throw error; +* } +* console.dir( files ); +* } +* +* @example +* var findREPLHelp = require( '@stdlib/_tools/pkgs/repl-help' ); +* +* var files = findREPLHelp.sync(); +*/ + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var main = require( './main.js' ); +var sync = require( './sync.js' ); + + +// MAIN // + +setReadOnly( main, 'sync', sync ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/main.js b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/main.js new file mode 100644 index 000000000000..26f665b38ae9 --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/main.js @@ -0,0 +1,131 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var glob = require( 'glob' ); +var isFunction = require( '@stdlib/assert/is-function' ); +var copy = require( '@stdlib/utils/copy' ); +var cwd = require( '@stdlib/process/cwd' ); +var config = require( './config.json' ); +var validate = require( './validate.js' ); +var find = require( './find.js' ); // eslint-disable-line stdlib/no-redeclare + + +// MAIN // + +/** +* Asynchronously finds package REPL help files. +* +* @param {Options} [options] - function options +* @param {string} [options.dir] - root directory from which to search for package REPL help files +* @param {string} [options.pattern='**\/package.json'] - glob pattern +* @param {StringArray} [options.ignore] - glob pattern(s) to exclude matches +* @param {string} [options.filename='docs/repl.txt'] - REPL help filename +* @param {Callback} clbk - callback to invoke after finding package REPL help files +* @throws {TypeError} callback argument must be a function +* @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} `pattern` option must end with `package.json` +* +* @example +* findREPLHelp( clbk ); +* +* function clbk( error, files ) { +* if ( error ) { +* throw error; +* } +* console.dir( files ); +* } +*/ +function findREPLHelp() { + var options; + var gopts; + var opts; + var clbk; + var err; + var dir; + + opts = copy( config ); + if ( arguments.length < 2 ) { + clbk = arguments[ 0 ]; + } else { + options = arguments[ 0 ]; + clbk = arguments[ 1 ]; + err = validate( opts, options ); + if ( err ) { + throw err; + } + } + if ( !isFunction( clbk ) ) { + throw new TypeError( 'invalid argument. Callback argument must be a function. Value: `' + clbk + '`.' ); + } + if ( opts.dir ) { + dir = resolve( cwd(), opts.dir ); + } else { + dir = cwd(); + } + // Find `package.json` files... + gopts = { + 'cwd': dir, + 'ignore': opts.ignore, + 'realpath': true // return absolute file paths + }; + glob( opts.pattern, gopts, onGlob ); + + /** + * Callback invoked after matching files. + * + * @private + * @param {(Error|null)} error - error object + * @param {(EmptyArray|StringArray)} files - list of matching files + * @returns {void} + */ + function onGlob( error, files ) { + if ( error ) { + return done( error ); + } + if ( files.length ) { + return find( files, opts, done ); + } + return done( null, [] ); + } + + /** + * Callback invoked upon finding REPL help files. + * + * @private + * @param {(Error|null)} error - error object + * @param {(EmptyArray|StringArray)} files - files + * @returns {void} + */ + function done( error, files ) { + if ( error ) { + return clbk( error ); + } + clbk( null, files ); + } +} + + +// EXPORTS // + +module.exports = findREPLHelp; diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/sync.js b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/sync.js new file mode 100644 index 000000000000..99f79793cbab --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/sync.js @@ -0,0 +1,97 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var join = require( 'path' ).join; +var resolve = require( 'path' ).resolve; +var glob = require( 'glob' ).sync; +var cwd = require( '@stdlib/process/cwd' ); +var copy = require( '@stdlib/utils/copy' ); +var dirname = require( '@stdlib/utils/dirname' ); +var exists = require( '@stdlib/fs/exists' ).sync; +var config = require( './config.json' ); +var validate = require( './validate.js' ); + + +// MAIN // + +/** +* Synchronously finds package REPL help files. +* +* @param {Options} [options] - function options +* @param {string} [options.dir] - root directory from which to search for package REPL help files +* @param {string} [options.pattern='**\/package.json'] - glob pattern +* @param {StringArray} [options.ignore] - glob pattern(s) to exclude matches +* @param {string} [options.filename='docs/repl.txt'] - REPL help filename +* @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} `pattern` option must end with `package.json` +* @returns {(EmptyArray|StringArray)} list of REPL help files +* +* @example +* var files = findREPLHelp(); +*/ +function findREPLHelp( options ) { + var gopts; + var files; + var fpath; + var opts; + var err; + var dir; + var out; + var i; + + opts = copy( config ); + if ( arguments.length ) { + err = validate( opts, options ); + if ( err ) { + throw err; + } + } + if ( opts.dir ) { + dir = resolve( cwd(), opts.dir ); + } else { + dir = cwd(); + } + // Find `package.json` files... + gopts = { + 'cwd': dir, + 'ignore': opts.ignore, + 'realpath': true // return absolute file paths + }; + files = glob( opts.pattern, gopts ); + + // Search for package REPL help files... + out = []; + for ( i = 0; i < files.length; i++ ) { + dir = dirname( files[ i ] ); + fpath = join( dir, opts.filename ); + if ( exists( fpath ) ) { + out.push( fpath ); + } + } + return out; +} + + +// EXPORTS // + +module.exports = findREPLHelp; diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/validate.js b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/validate.js new file mode 100644 index 000000000000..03e04d4f3c38 --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/lib/validate.js @@ -0,0 +1,97 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var isObject = require( '@stdlib/assert/is-plain-object' ); +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); +var isString = require( '@stdlib/assert/is-string' ).isPrimitive; +var isStringArray = require( '@stdlib/assert/is-string-array' ).primitives; + + +// VARIABLES // + +var RE = /package\.json$/; + + +// MAIN // + +/** +* Validates function options. +* +* @private +* @param {Object} opts - destination object +* @param {Options} options - function options +* @param {string} [options.dir] - root directory from which to search for package REPL help files +* @param {string} [options.pattern] - glob pattern +* @param {StringArray} [options.ignore] - glob pattern(s) to exclude matches +* @param {string} [options.filename] - REPL help filename +* @returns {(Error|null)} error object or null +* +* @example +* var opts = {}; +* var options = { +* 'dir': '/foo/bar/baz' +* }; +* +* var err = validate( opts, options ); +* if ( err ) { +* throw err; +* } +*/ +function validate( opts, options ) { + if ( !isObject( options ) ) { + return new TypeError( 'invalid argument. Options argument must be an object. Value: `' + options + + '`.' ); + } + if ( hasOwnProp( options, 'dir' ) ) { + opts.dir = options.dir; + if ( !isString( opts.dir ) ) { + return new TypeError( 'invalid option. `dir` option must be a primitive string. Option: `' + opts.dir + '`.' ); + } + } + if ( hasOwnProp( options, 'pattern' ) ) { + opts.pattern = options.pattern; + if ( !isString( opts.pattern ) ) { + return new TypeError( 'invalid option. `pattern` option must be a primitive string. Option: `' + opts.pattern + '`.' ); + } + if ( !RE.test( opts.pattern ) ) { + return new Error( 'invalid option. `pattern` option must end with `package.json`. Option: `' + opts.pattern +'`.' ); + } + } + if ( hasOwnProp( options, 'ignore' ) ) { + opts.ignore = options.ignore; + if ( !isStringArray( opts.ignore ) ) { + return new TypeError( 'invalid option. `ignore` option must be a string array. Option: `' + opts.ignore + '`.' ); + } + } + if ( hasOwnProp( options, 'filename' ) ) { + opts.filename = options.filename; + if ( !isString( opts.filename ) ) { + return new TypeError( 'invalid option. `filename` option must be a primitive string. Option: `' + opts.filename + '`.' ); + } + } + return null; +} + + +// EXPORTS // + +module.exports = validate; diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/package.json b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/package.json new file mode 100644 index 000000000000..ae9227f26356 --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/package.json @@ -0,0 +1,74 @@ +{ + "name": "@stdlib/_tools/pkgs/repl-help", + "version": "0.0.0", + "description": "Find package REPL help files.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "bin": { + "find-pkg-repl-help": "./bin/cli" + }, + "main": "./lib", + "directories": { + "bin": "./bin", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "tools", + "tool", + "list", + "ls", + "find", + "search", + "modules", + "names", + "packages", + "pkgs", + "repl", + "help", + "txt", + "text", + "repl-txt", + "documentation", + "docs", + "api" + ] +} diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.async.js b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.async.js new file mode 100644 index 000000000000..5ea207b291e2 --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.async.js @@ -0,0 +1,209 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var join = require( 'path' ).join; +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var noop = require( '@stdlib/utils/noop' ); +var isStringArray = require( '@stdlib/assert/is-string-array' ).primitives; +var isArray = require( '@stdlib/assert/is-array' ); +var findREPLHelp = require( './../lib/main.js' ); + + +// VARIABLES // + +var dir = resolve( __dirname, '..' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof findREPLHelp, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function throws an error if provided an invalid option', function test( t ) { + t.throws( foo, TypeError, 'throws error' ); + t.end(); + function foo() { + var opts = { + 'dir': null + }; + findREPLHelp( opts, noop ); + } +}); + +tape( 'if provided a callback argument which is not a function, the function throws an error (no options)', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + null, + void 0, + [], + {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + findREPLHelp( value ); + }; + } +}); + +tape( 'if provided a callback argument which is not a function, the function throws an error (options)', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + null, + void 0, + [], + {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + findREPLHelp( {}, value ); + }; + } +}); + +tape( 'the function returns an error to a provided callback if an error is encountered while searching a directory', function test( t ) { + var findREPLHelp = proxyquire( './../lib/main.js', { + 'glob': glob + }); + + findREPLHelp( clbk ); + + function glob() { + var cb = arguments[ arguments.length-1 ]; + setTimeout( onTimeout, 0 ); + function onTimeout() { + cb( new Error( 'beep' ) ); + } + } + + function clbk( error ) { + t.ok( error, 'returns an error' ); + t.end(); + } +}); + +tape( 'the function returns an error to a provided callback if an error is encountered while resolving package REPL help files', function test( t ) { + var findREPLHelp; + var opts; + + findREPLHelp = proxyquire( './../lib/main.js', { + './find.js': mock + }); + opts = { + 'dir': dir + }; + + findREPLHelp( opts, clbk ); + + function mock() { + var cb = arguments[ arguments.length-1 ]; + setTimeout( onTimeout, 0 ); + function onTimeout() { + cb( new Error( 'beep' ) ); + } + } + + function clbk( error ) { + t.ok( error, 'returns an error' ); + t.end(); + } +}); + +tape( 'the function returns an empty array if unable to resolve any packages', function test( t ) { + var findREPLHelp = proxyquire( './../lib/main.js', { + 'glob': glob + }); + + findREPLHelp( clbk ); + + function glob() { + var cb = arguments[ arguments.length-1 ]; + setTimeout( onTimeout, 0 ); + function onTimeout() { + cb( null, [] ); + } + } + + function clbk( error, files ) { + if ( error ) { + t.ok( false, error.message ); + } + t.strictEqual( isArray( files ), true, 'returns an array' ); + t.strictEqual( files.length, 0, 'returns an empty array' ); + t.end(); + } +}); + +tape( 'the function returns a string array (if at least one package REPL help file is found)', function test( t ) { + var findREPLHelp; + var opts; + + findREPLHelp = proxyquire( './../lib/main.js', { + './find.js': mock + }); + + opts = { + 'dir': dir + }; + findREPLHelp( opts, clbk ); + + function mock() { + var clbk = arguments[ arguments.length-1 ]; + clbk( null, [ join( dir, 'docs/repl.txt' ) ] ); + } + + function clbk( error, files ) { + if ( error ) { + t.ok( false, error.message ); + } + t.strictEqual( isStringArray( files ), true, 'returns a string array' ); + t.end(); + } +}); diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.cli.js b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.cli.js new file mode 100644 index 000000000000..64c47aedc54b --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.cli.js @@ -0,0 +1,239 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var exec = require( 'child_process' ).exec; +var tape = require( 'tape' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var IS_WINDOWS = require( '@stdlib/assert/is-windows' ); +var EOL = require( '@stdlib/regexp/eol' ); +var readFileSync = require( '@stdlib/fs/read-file' ).sync; + + +// VARIABLES // + +var fpath = resolve( __dirname, '..', 'bin', 'cli' ); +var opts = { + 'skip': IS_BROWSER || IS_WINDOWS +}; + + +// FIXTURES // + +var PKG_VERSION = require( './../package.json' ).version; + + +// TESTS // + +tape( 'command-line interface', function test( t ) { + t.ok( true, __filename ); + t.end(); +}); + +tape( 'when invoked with a `--help` flag, the command-line interface prints the help text to `stderr`', opts, function test( t ) { + var expected; + var cmd; + + expected = readFileSync( resolve( __dirname, '..', 'docs', 'usage.txt' ), { + 'encoding': 'utf8' + }); + cmd = [ + process.execPath, + fpath, + '--help' + ]; + + exec( cmd.join( ' ' ), done ); + + function done( error, stdout, stderr ) { + if ( error ) { + t.fail( error.message ); + } else { + t.strictEqual( stdout.toString(), '', 'does not print to `stdout`' ); + t.strictEqual( stderr.toString(), expected+'\n', 'expected value' ); + } + t.end(); + } +}); + +tape( 'when invoked with a `-h` flag, the command-line interface prints the help text to `stderr`', opts, function test( t ) { + var expected; + var cmd; + + expected = readFileSync( resolve( __dirname, '..', 'docs', 'usage.txt' ), { + 'encoding': 'utf8' + }); + cmd = [ + process.execPath, + fpath, + '-h' + ]; + + exec( cmd.join( ' ' ), done ); + + function done( error, stdout, stderr ) { + if ( error ) { + t.fail( error.message ); + } else { + t.strictEqual( stdout.toString(), '', 'does not print to `stdout`' ); + t.strictEqual( stderr.toString(), expected+'\n', 'expected value' ); + } + t.end(); + } +}); + +tape( 'when invoked with a `--version` flag, the command-line interface prints the version to `stderr`', opts, function test( t ) { + var cmd = [ + process.execPath, + fpath, + '--version' + ]; + + exec( cmd.join( ' ' ), done ); + + function done( error, stdout, stderr ) { + if ( error ) { + t.fail( error.message ); + } else { + t.strictEqual( stdout.toString(), '', 'does not print to `stdout`' ); + t.strictEqual( stderr.toString(), PKG_VERSION+'\n', 'expected value' ); + } + t.end(); + } +}); + +tape( 'when invoked with a `-V` flag, the command-line interface prints the version to `stderr`', opts, function test( t ) { + var cmd = [ + process.execPath, + fpath, + '-V' + ]; + + exec( cmd.join( ' ' ), done ); + + function done( error, stdout, stderr ) { + if ( error ) { + t.fail( error.message ); + } else { + t.strictEqual( stdout.toString(), '', 'does not print to `stdout`' ); + t.strictEqual( stderr.toString(), PKG_VERSION+'\n', 'expected value' ); + } + t.end(); + } +}); + +tape( 'the command-line interface prints a list of files', opts, function test( t ) { + var cmd = [ + process.execPath, + fpath, + resolve( __dirname, '..', '..', '..', '..', '..' ) // WARNING: fragile, as assumes a particular directory structure + ]; + + exec( cmd.join( ' ' ), done ); + + function done( error, stdout, stderr ) { + if ( error ) { + t.fail( error.message ); + } else { + t.strictEqual( stdout.toString().split( EOL ).length > 1, true, 'prints a newline-delimited list' ); + t.strictEqual( stderr.toString(), '', 'does not print to `stderr`' ); + } + t.end(); + } +}); + +tape( 'the command-line interface supports searching based on a pattern', opts, function test( t ) { + var cmd = [ + process.execPath, + fpath, + resolve( __dirname, '..', '..', '..', '..', '..' ), // WARNING: fragile, as assumes a particular directory structure + '--pattern \'**/blas/base/dasum/package.json\'' + ]; + + exec( cmd.join( ' ' ), done ); + + function done( error, stdout, stderr ) { + if ( error ) { + t.fail( error.message ); + } else { + // Includes trailing newline... + t.strictEqual( stdout.toString().split( EOL ).length, 2, 'prints a newline-delimited list' ); + t.strictEqual( stderr.toString(), '', 'does not print to `stderr`' ); + } + t.end(); + } +}); + +tape( 'the command-line interface supports providing an exclusion pattern', opts, function test( t ) { + var cmd; + var dir; + + dir = resolve( __dirname, '..', '..', '..', '..', '..' ); // WARNING: fragile, as assumes a particular directory structure + + cmd = [ + process.execPath, + fpath, + dir, + '--ignore \''+dir+'/**\'' // the same directory we are searching! + ]; + + exec( cmd.join( ' ' ), done ); + + function done( error, stdout, stderr ) { + if ( error ) { + t.fail( error.message ); + } else { + // Only prints a linebreak... + t.strictEqual( stdout.toString().split( EOL ).length, 1, 'excludes matches' ); + t.strictEqual( stderr.toString(), '', 'does not print to `stderr`' ); + } + t.end(); + } +}); + +tape( 'the command-line interface supports providing multiple exclusion patterns', opts, function test( t ) { + var cmd; + var dir; + + dir = resolve( __dirname, '..', '..', '..', '..', '..' ); // WARNING: fragile, as assumes a particular directory structure + + cmd = [ + process.execPath, + fpath, + dir, + '--ignore \''+dir+'/**\'', // the same directory we are searching! + '--ignore build/**' + ]; + + exec( cmd.join( ' ' ), done ); + + function done( error, stdout, stderr ) { + if ( error ) { + t.fail( error.message ); + } else { + // Only prints a linebreak... + t.strictEqual( stdout.toString().split( EOL ).length, 1, 'excludes matches' ); + t.strictEqual( stderr.toString(), '', 'does not print to `stderr`' ); + } + t.end(); + } +}); diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.find.js b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.find.js new file mode 100644 index 000000000000..527ba7d5c79a --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.find.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var isStringArray = require( '@stdlib/assert/is-string-array' ).primitives; +var isArray = require( '@stdlib/assert/is-array' ); +var find = require( './../lib/find.js' ); // eslint-disable-line stdlib/no-redeclare + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof find, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns a string array if able to find at least one package REPL help file', function test( t ) { + var count; + var files; + var opts; + var find; + + find = proxyquire( './../lib/find.js', { + '@stdlib/fs/exists': exists + }); + count = 0; + + files = [ + '/beep/boop/package.json', + '/a/b/c/d/e/f/g/h/beep/boop/bop/package.json' + ]; + opts = { + 'filename': 'docs/repl.txt' + }; + find( files, opts, clbk ); + + function exists() { + var clbk = arguments[ arguments.length-1 ]; + count += 1; + if ( count < 2 ) { + return clbk( null, true ); + } + clbk( new Error( 'not found' ), false ); + } + + function clbk( error, files ) { + if ( error ) { + t.ok( false, error.message ); + } + t.strictEqual( isStringArray( files ), true, 'returns a string array' ); + t.strictEqual( files.length, 1, 'expected length' ); + t.end(); + } +}); + +tape( 'the function returns an empty array if unable to find at least one package REPL help file', function test( t ) { + var files; + var opts; + var find; + + find = proxyquire( './../lib/find.js', { + '@stdlib/fs/exists': exists + }); + + files = [ '/a/b/c/d/e/f/g/h/beep/boop/bop/package.json' ]; + + opts = { + 'filename': 'docs/repl.txt' + }; + find( files, opts, clbk ); + + function exists() { + var clbk = arguments[ arguments.length-1 ]; + clbk( new Error( 'not found' ), false ); + } + + function clbk( error, files ) { + if ( error ) { + t.ok( false, error.message ); + } + t.strictEqual( isArray( files ), true, 'returns an array' ); + t.strictEqual( files.length, 0, 'returns an empty array' ); + t.end(); + } +}); diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.js b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.js new file mode 100644 index 000000000000..4f5d6c715ce7 --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var findREPLHelp = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof findREPLHelp, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method to synchronously find package REPL help files', function test( t ) { + t.strictEqual( typeof findREPLHelp.sync, 'function', 'has sync method' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.sync.js b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.sync.js new file mode 100644 index 000000000000..de065d23c29e --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.sync.js @@ -0,0 +1,146 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var isStringArray = require( '@stdlib/assert/is-string-array' ).primitives; +var isArray = require( '@stdlib/assert/is-array' ); +var findREPLHelp = require( './../lib/sync.js' ); + + +// VARIABLES // + +var dir = resolve( __dirname, '..', '..' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof findREPLHelp, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function throws an error if provided an invalid option', function test( t ) { + t.throws( foo, TypeError, 'throws error' ); + t.end(); + function foo() { + var opts = { + 'dir': null + }; + findREPLHelp( opts ); + } +}); + +tape( 'the function returns a string array (if at least one package REPL help file is found)', function test( t ) { + var findREPLHelp; + var count; + var files; + var opts; + + findREPLHelp = proxyquire( './../lib/sync.js', { + 'glob': { + 'sync': glob + }, + '@stdlib/fs/exists': { + 'sync': exists + } + }); + + count = 0; + opts = { + 'dir': dir + }; + files = findREPLHelp( opts ); + + t.strictEqual( isStringArray( files ), true, 'returns a string array' ); + t.strictEqual( files.length, 1, 'expected length' ); + + t.end(); + + function glob() { + return [ + '/beep/boop/package.json', + '/a/b/c/d/e/f/g/h/beep/boop/bop/package.json' + ]; + } + + function exists() { + count += 1; + if ( count < 2 ) { + return true; + } + return false; + } +}); + +tape( 'the function returns an empty array if unable to find any package REPL help files', function test( t ) { + var findREPLHelp; + var files; + + findREPLHelp = proxyquire( './../lib/sync.js', { + 'glob': { + 'sync': glob + }, + '@stdlib/fs/exists': { + 'sync': exists + } + }); + + files = findREPLHelp(); + + t.strictEqual( isArray( files ), true, 'returns an array' ); + t.strictEqual( files.length, 0, 'returns an empty array' ); + + t.end(); + + function glob() { + return [ '/beep/boop/package.json' ]; + } + + function exists() { + return false; + } +}); + +tape( 'the function returns an empty array if unable to resolve any packages', function test( t ) { + var findREPLHelp; + var files; + + findREPLHelp = proxyquire( './../lib/sync.js', { + 'glob': { + 'sync': glob + } + }); + + files = findREPLHelp(); + + t.strictEqual( isArray( files ), true, 'returns an array' ); + t.strictEqual( files.length, 0, 'returns an empty array' ); + + t.end(); + + function glob() { + return []; + } +}); diff --git a/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.validate.js b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.validate.js new file mode 100644 index 000000000000..719d601aea26 --- /dev/null +++ b/lib/node_modules/@stdlib/_tools/pkgs/repl-help/test/test.validate.js @@ -0,0 +1,234 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var validate = require( './../lib/validate.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof validate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'if provided an `options` argument which is not an `object`, the function returns a type error', function test( t ) { + var values; + var opts; + var err; + var i; + + values = [ + '5', + 5, + NaN, + true, + null, + undefined, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + opts = {}; + err = validate( opts, values[ i ] ); + t.strictEqual( err instanceof TypeError, true, 'returns a type error when provided '+values[ i ] ); + } + t.end(); +}); + +tape( 'if provided a `dir` option which is not a `string`, the function returns a type error', function test( t ) { + var values; + var opts; + var err; + var i; + + values = [ + 5, + NaN, + true, + null, + undefined, + [], + {}, + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + opts = {}; + err = validate( opts, { + 'dir': values[ i ] + }); + t.strictEqual( err instanceof TypeError, true, 'returns a type error when provided '+values[ i ] ); + } + t.end(); +}); + +tape( 'if provided a `pattern` option which is not a `string`, the function returns a type error', function test( t ) { + var values; + var opts; + var err; + var i; + + values = [ + 5, + NaN, + true, + null, + undefined, + [], + {}, + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + opts = {}; + err = validate( opts, { + 'pattern': values[ i ] + }); + t.strictEqual( err instanceof TypeError, true, 'returns a type error when provided '+values[ i ] ); + } + t.end(); +}); + +tape( 'if provided a `pattern` option which does not end with `package.json`, the function returns an error', function test( t ) { + var values; + var opts; + var err; + var i; + + values = [ + 'beep', + 'package*.json', + 'package.js', + 'pkg.json' + ]; + + for ( i = 0; i < values.length; i++ ) { + opts = {}; + err = validate( opts, { + 'pattern': values[ i ] + }); + t.strictEqual( err instanceof Error, true, 'returns an error when provided '+values[ i ] ); + } + t.end(); +}); + +tape( 'if provided an `ignore` option which is not an array of strings, the function returns a type error', function test( t ) { + var values; + var opts; + var err; + var i; + + values = [ + '5', + 5, + NaN, + true, + null, + undefined, + [], + [ '5', null ], + [ 'beep', 5 ], + {}, + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + opts = {}; + err = validate( opts, { + 'ignore': values[ i ] + }); + t.strictEqual( err instanceof TypeError, true, 'returns a type error when provided '+values[ i ] ); + } + t.end(); +}); + +tape( 'if provided a `filename` option which is not a `string`, the function returns a type error', function test( t ) { + var values; + var opts; + var err; + var i; + + values = [ + 5, + NaN, + true, + null, + undefined, + [], + {}, + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + opts = {}; + err = validate( opts, { + 'filename': values[ i ] + }); + t.strictEqual( err instanceof TypeError, true, 'returns a type error when provided '+values[ i ] ); + } + t.end(); +}); + +tape( 'the function returns `null` if all options are valid', function test( t ) { + var opts; + var obj; + var err; + + opts = { + 'dir': './foo/bar', + 'pattern': '**/package.json', + 'ignore': [ 'node_modules/**' ], + 'filename': 'repl.txt' + }; + obj = {}; + err = validate( obj, opts ); + + t.strictEqual( err, null, 'returns null' ); + t.strictEqual( obj.dir, opts.dir, 'sets dir option' ); + t.strictEqual( obj.pattern, opts.pattern, 'sets pattern option' ); + t.deepEqual( obj.ignore, opts.ignore, 'sets ignore option' ); + + t.end(); +}); + +tape( 'the function ignores unsupported/unrecognized options', function test( t ) { + var opts; + var obj; + var err; + + opts = { + 'beep': 'boop', + 'a': 'b', + 'c': [ 1, 2, 3 ] + }; + obj = {}; + err = validate( obj, opts ); + + t.strictEqual( err, null, 'returns null' ); + t.deepEqual( obj, {}, 'does not set any options' ); + + t.end(); +}); + From 7e55fba91508ff9fd7a3c3dbda2ea1ea37b196da Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 3 Oct 2018 17:06:02 -0700 Subject: [PATCH 0641/1062] Add recipe for listing package REPL help files --- tools/make/lib/ls/pkgs/Makefile | 1 + tools/make/lib/ls/pkgs/repl_help.mk | 37 +++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 tools/make/lib/ls/pkgs/repl_help.mk diff --git a/tools/make/lib/ls/pkgs/Makefile b/tools/make/lib/ls/pkgs/Makefile index 5862c2ada52b..6e3537f92ccb 100644 --- a/tools/make/lib/ls/pkgs/Makefile +++ b/tools/make/lib/ls/pkgs/Makefile @@ -28,6 +28,7 @@ include $(TOOLS_MAKE_LIB_DIR)/ls/pkgs/names.mk include $(TOOLS_MAKE_LIB_DIR)/ls/pkgs/namespaces.mk include $(TOOLS_MAKE_LIB_DIR)/ls/pkgs/pkgs.mk include $(TOOLS_MAKE_LIB_DIR)/ls/pkgs/readmes.mk +include $(TOOLS_MAKE_LIB_DIR)/ls/pkgs/repl_help.mk include $(TOOLS_MAKE_LIB_DIR)/ls/pkgs/tools.mk include $(TOOLS_MAKE_LIB_DIR)/ls/pkgs/tree.mk include $(TOOLS_MAKE_LIB_DIR)/ls/pkgs/wasm.mk diff --git a/tools/make/lib/ls/pkgs/repl_help.mk b/tools/make/lib/ls/pkgs/repl_help.mk new file mode 100644 index 000000000000..74b9c679da37 --- /dev/null +++ b/tools/make/lib/ls/pkgs/repl_help.mk @@ -0,0 +1,37 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2018 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +# Define the path of the executable: +LIST_PACKAGE_REPL_HELP_FILES ?= $(TOOLS_PKGS_DIR)/pkgs/repl-help/bin/cli + +# Define the command flags: +LIST_PACKAGE_REPL_HELP_FILES_FLAGS ?= + + +# TARGETS # + +# List all package REPL help files. +# +# This target prints a list of all package REPL help files. + +list-pkgs-repl-help-files: $(LIST_PACKAGE_REPL_HELP_FILES) $(NODE_MODULES) + $(QUIET) NODE_PATH="$(NODE_PATH)" $(NODE) $(LIST_PACKAGE_REPL_HELP_FILES) $(LIST_PACKAGE_REPL_HELP_FILES_FLAGS) $(SRC_DIR) + +.PHONY: list-pkgs-repl-help-files From d3116f85ba376b1b4fbdff8c31ccb429b8fc5131 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 3 Oct 2018 17:11:44 -0700 Subject: [PATCH 0642/1062] Add recipe for linting REPL help files --- tools/make/lib/lint/Makefile | 3 ++- tools/make/lib/lint/repl_help.mk | 40 ++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 tools/make/lib/lint/repl_help.mk diff --git a/tools/make/lib/lint/Makefile b/tools/make/lib/lint/Makefile index eab6ec7f50de..8858c49bdd08 100644 --- a/tools/make/lib/lint/Makefile +++ b/tools/make/lib/lint/Makefile @@ -28,6 +28,7 @@ include $(TOOLS_MAKE_LIB_DIR)/lint/markdown/Makefile include $(TOOLS_MAKE_LIB_DIR)/lint/package_json.mk include $(TOOLS_MAKE_LIB_DIR)/lint/python/Makefile include $(TOOLS_MAKE_LIB_DIR)/lint/r/Makefile +include $(TOOLS_MAKE_LIB_DIR)/lint/repl_help.mk include $(TOOLS_MAKE_LIB_DIR)/lint/shell/Makefile @@ -44,7 +45,7 @@ include $(TOOLS_MAKE_LIB_DIR)/lint/shell/Makefile # @example # make lint #/ -lint: lint-filenames lint-javascript lint-markdown lint-python lint-julia lint-r lint-shell lint-conf lint-pkg-json lint-license-headers +lint: lint-filenames lint-javascript lint-markdown lint-python lint-julia lint-r lint-shell lint-conf lint-pkg-json lint-repl-help lint-license-headers .PHONY: lint diff --git a/tools/make/lib/lint/repl_help.mk b/tools/make/lib/lint/repl_help.mk new file mode 100644 index 000000000000..011bfe871365 --- /dev/null +++ b/tools/make/lib/lint/repl_help.mk @@ -0,0 +1,40 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2018 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +# Define the path of the linter executable: +REPL_HELP_LINTER ?= $(TOOLS_PKGS_DIR)/lint/repl-txt/bin/cli + +# Define the command-line options to be used when invoking the executable: +REPL_HELP_LINTER_FLAGS ?= + + +# RULES # + +#/ +# Lints REPL help files. +# +# @example +# make lint-repl-help +#/ +lint-repl-help: + $(QUIET) $(MAKE_EXECUTABLE) $(REPL_HELP_LINTER) + $(QUIET) NODE_PATH="$(NODE_PATH)" $(REPL_HELP_LINTER) $(REPL_HELP_LINTER_FLAGS) $(ROOT_DIR) + +.PHONY: lint-repl-help From 28c1ee26a47a56f078a2c6ae6a65b6f5ee76ccac Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 3 Oct 2018 17:13:55 -0700 Subject: [PATCH 0643/1062] Document command --- tools/make/lib/lint/README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/make/lib/lint/README.md b/tools/make/lib/lint/README.md index 51f437908c20..3100fd03aa40 100644 --- a/tools/make/lib/lint/README.md +++ b/tools/make/lib/lint/README.md @@ -618,6 +618,20 @@ $ make lint-pkg-json * * * +### REPL Help + +#### lint-repl-help + +Lints REPL help files. + + + +```bash +$ make lint-repl-help +``` + +* * * + ### Configuration Files #### lint-conf From abc51e486b576bcd980db1a69cbbbb97479e88a9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 3 Oct 2018 17:19:10 -0700 Subject: [PATCH 0644/1062] Add support for linting REPL help files pre-commit --- tools/git/hooks/pre-commit | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/git/hooks/pre-commit b/tools/git/hooks/pre-commit index 5e921b2d9ada..5f194f1f04c9 100644 --- a/tools/git/hooks/pre-commit +++ b/tools/git/hooks/pre-commit @@ -34,6 +34,9 @@ lint_filenames="${root}/lib/node_modules/@stdlib/_tools/lint/filenames/bin/cli" # Define the path to a utility for linting package.json files: lint_package_json="${root}/lib/node_modules/@stdlib/_tools/lint/pkg-json/bin/cli" +# Define the path to a utility for linting REPL help files: +lint_repl_help="${root}/lib/node_modules/@stdlib/_tools/lint/repl-help/bin/cli" + # Define the path to ESLint configuration file for linting examples: eslint_examples_conf="${root}/etc/eslint/.eslintrc.examples.js" @@ -120,6 +123,17 @@ run_lint() { fi fi + # Lint REPL help files... + files=$(echo "${changed_files}" | grep 'repl\.txt$' ) + if [[ -n "${files}" ]]; then + echo "${files}" | "${lint_repl_help}" >&2 + if [[ "$?" -ne 0 ]]; then + echo '' >&2 + echo 'REPL help lint errors.' >&2 + return 1 + fi + fi + # Lint JavaScript source files... files=$(echo "${changed_files}" | grep '\.js$' | grep -v -e '/examples' -e '/test' -e '/benchmark' -e '^dist/' | tr '\n' ' ') if [[ -n "${files}" ]]; then From 01fa4f1cb67590ddbb91fde661f57c183bb1a9b4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 00:32:59 -0700 Subject: [PATCH 0645/1062] Rename file, fix spacing, fix description, and clean-up --- .../math/base/special/log1pexp/benchmark/c/benchmark.c | 2 +- .../@stdlib/math/base/special/log1pexp/lib/index.js | 4 ++-- .../math/base/special/log1pexp/lib/{log1pexp.js => main.js} | 0 .../math/base/special/log1pexp/test/fixtures/r/runner.R | 4 ++-- .../@stdlib/math/base/special/log1pexp/test/test.js | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) rename lib/node_modules/@stdlib/math/base/special/log1pexp/lib/{log1pexp.js => main.js} (100%) diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/benchmark/c/benchmark.c b/lib/node_modules/@stdlib/math/base/special/log1pexp/benchmark/c/benchmark.c index 8976c9fc976a..c7d67797c0ac 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1pexp/benchmark/c/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/benchmark/c/benchmark.c @@ -91,7 +91,7 @@ double rand_double() { * @return calculated value */ double log1pexp( double x ) { - if (x != x) { + if ( x != x ) { return NAN; } if ( x <= -37.0 ) { diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/lib/index.js b/lib/node_modules/@stdlib/math/base/special/log1pexp/lib/index.js index ee4f77033a48..72c0ccdbeb0f 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1pexp/lib/index.js +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/lib/index.js @@ -19,7 +19,7 @@ 'use strict'; /** -* Evaluate the natural logarithm of \\(exp(1+x)\\). +* Evaluate the natural logarithm of \\( 1 + exp(x) \\). * * @module @stdlib/math/base/special/log1pexp * @@ -38,7 +38,7 @@ // MODULES // -var log1pexp = require( './log1pexp.js' ); +var log1pexp = require( './main.js' ); // EXPORTS // diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/lib/log1pexp.js b/lib/node_modules/@stdlib/math/base/special/log1pexp/lib/main.js similarity index 100% rename from lib/node_modules/@stdlib/math/base/special/log1pexp/lib/log1pexp.js rename to lib/node_modules/@stdlib/math/base/special/log1pexp/lib/main.js diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/runner.R b/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/runner.R index 44869a4d1302..cf949f78735b 100755 --- a/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/runner.R +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/runner.R @@ -76,10 +76,10 @@ main <- function() { # Get the directory of this script: source_dir <- dirname( get_script_path() ); - # Generate a sequence of numbers to calculate log1pexp for. + # Generate a sequence of numbers for which to calculate `log1pexp`: data <- seq( -100.0, 100.0, 0.1 ); - # Calculate log1pexp for each element in the sequence. + # Calculate `log1pexp` for each value: expected <- lapply( data, VGAM::log1pexp ); # Convert fixture data to JSON: diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/test/test.js b/lib/node_modules/@stdlib/math/base/special/log1pexp/test/test.js index 9363baf82152..1dbee7722595 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1pexp/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/test/test.js @@ -90,8 +90,8 @@ tape( 'the function accurately computes the natural logarithm of 1 + exp(x)', fu for ( i = 0; i < values.length; i++ ) { x = log1pexp( values[ i ] ); y = expected[ i ]; - if (x === expected[ i ]) { - t.equal( y, expected[ i ], 'returns '+x+' when provided ' + values[ i ]); + if ( x === expected[ i ] ) { + t.strictEqual( y, expected[ i ], 'returns '+x+' when provided ' + values[ i ]); } else { delta = abs( x - y ); tol = 20.9 * EPS * abs( y ); From 72efe989cf5147f57b5e884569d2b8056af27e0a Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 00:34:08 -0700 Subject: [PATCH 0646/1062] Update namespace --- lib/node_modules/@stdlib/math/base/special/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/math/base/special/lib/index.js b/lib/node_modules/@stdlib/math/base/special/lib/index.js index 9958cc50e558..90ebfcae6ae7 100644 --- a/lib/node_modules/@stdlib/math/base/special/lib/index.js +++ b/lib/node_modules/@stdlib/math/base/special/lib/index.js @@ -936,6 +936,15 @@ setReadOnly( special, 'log', require( '@stdlib/math/base/special/log' ) ); */ setReadOnly( special, 'log1p', require( '@stdlib/math/base/special/log1p' ) ); +/** +* @name log1pexp +* @memberof special +* @readonly +* @type {Function} +* @see {@link module:@stdlib/math/base/special/log1pexp} +*/ +setReadOnly( special, 'log1pexp', require( '@stdlib/math/base/special/log1pexp' ) ); + /** * @name log2 * @memberof special From 27ffa4e1f26e3053152c283799353b179aaf0f77 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 00:36:25 -0700 Subject: [PATCH 0647/1062] Update contributors --- CONTRIBUTORS | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index a07e605d2dfb..fb302c0ed184 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -13,3 +13,4 @@ Ognjen Jevremović Philipp Burckhardt Ricky Reusser Shraddheya Shendre +rei2hu From 672385231e065baf87fc4bf3715478114908e14e Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 00:37:59 -0700 Subject: [PATCH 0648/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/b.js | 12 ++++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 1 + 3 files changed, 14 insertions(+) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/b.js b/lib/node_modules/@stdlib/namespace/lib/namespace/b.js index e7c7680556c0..84e2a8f6f362 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/b.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/b.js @@ -5436,6 +5436,18 @@ ns.push({ ] }); +ns.push({ + 'alias': 'base.log1pexp', + 'path': '@stdlib/math/base/special/log1pexp', + 'value': require( '@stdlib/math/base/special/log1pexp' ), + 'type': 'Function', + 'related': [ + '@stdlib/math/base/special/exp', + '@stdlib/math/base/special/ln', + '@stdlib/math/base/special/log1p' + ] +}); + ns.push({ 'alias': 'base.log2', 'path': '@stdlib/math/base/special/log2', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 2e202e16b929..f6c23ba34d09 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -663,6 +663,7 @@ var db = { "base.ln": "y = base.ln( 4.0 )\ny = base.ln( 0.0 )\ny = base.ln( PINF )\ny = base.ln( NaN )\ny = base.ln( -4.0 )\n", "base.log": "y = base.log( 100.0, 10.0 )\ny = base.log( 16.0, 2.0 )\ny = base.log( 5.0, 1.0 )\ny = base.log( NaN, 2.0 )\ny = base.log( 1.0, NaN )\ny = base.log( -4.0, 2.0 )\ny = base.log( 4.0, -2.0 )\n", "base.log1p": "y = base.log1p( 4.0 )\ny = base.log1p( -1.0 )\ny = base.log1p( 0.0 )\ny = base.log1p( -0.0 )\ny = base.log1p( -2.0 )\ny = base.log1p( NaN )\n", + "base.log1pexp": "y = base.log1pexp( -10.0 )\ny = base.log1pexp( 0.0 )\ny = base.log1pexp( 5.0 )\ny = base.log1pexp( 34.0 )\ny = base.log1pexp( NaN )\n", "base.log2": "y = base.log2( 4.0 )\ny = base.log2( 8.0 )\ny = base.log2( 0.0 )\ny = base.log2( PINF )\ny = base.log2( NaN )\ny = base.log2( -4.0 )\n", "base.log10": "y = base.log10( 100.0 )\ny = base.log10( 8.0 )\ny = base.log10( 0.0 )\ny = base.log10( PINF )\ny = base.log10( NaN )\ny = base.log10( -4.0 )\n", "base.logit": "y = base.logit( 0.2 )\ny = base.logit( 0.9 )\ny = base.logit( -4.0 )\ny = base.logit( 1.5 )\ny = base.logit( NaN )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 7d2d2dae9086..5456ddda2ae3 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -663,6 +663,7 @@ var db = { "base.ln": "\nbase.ln( x )\n Evaluates the natural logarithm.\n\n For negative numbers, the natural logarithm is not defined.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.ln( 4.0 )\n ~1.386\n > y = base.ln( 0.0 )\n -Infinity\n > y = base.ln( PINF )\n Infinity\n > y = base.ln( NaN )\n NaN\n > y = base.ln( -4.0 )\n NaN\n\n See Also\n --------\n base.exp, base.log10, base.log1p, base.log2\n", "base.log": "\nbase.log( x, b )\n Computes the base `b` logarithm of `x`.\n\n For negative `b` or `x`, the function returns `NaN`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n b: number\n Base.\n\n Returns\n -------\n y: number\n Logarithm (base `b`).\n\n Examples\n --------\n > var y = base.log( 100.0, 10.0 )\n 2.0\n > y = base.log( 16.0, 2.0 )\n 4.0\n > y = base.log( 5.0, 1.0 )\n Infinity\n > y = base.log( NaN, 2.0 )\n NaN\n > y = base.log( 1.0, NaN )\n NaN\n > y = base.log( -4.0, 2.0 )\n NaN\n > y = base.log( 4.0, -2.0 )\n NaN\n\n See Also\n --------\n base.exp, base.ln, base.log10, base.log1p, base.log2\n", "base.log1p": "\nbase.log1p( x )\n Evaluates the natural logarithm of `1+x`.\n\n For `x < -1`, the function returns `NaN`, as the natural logarithm is not\n defined for negative numbers.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log1p( 4.0 )\n ~1.609\n > y = base.log1p( -1.0 )\n -Infinity\n > y = base.log1p( 0.0 )\n 0.0\n > y = base.log1p( -0.0 )\n -0.0\n > y = base.log1p( -2.0 )\n NaN\n > y = base.log1p( NaN )\n NaN\n\n See Also\n --------\n base.ln, base.log\n", + "base.log1pexp": "base.log1pexp( x )\n Evaluates the natural logarithm of `1+exp(x)`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log1pexp( -10.0 )\n ~0.000045\n > y = base.log1pexp( 0.0 )\n ~0.693147\n > y = base.log1pexp( 5.0 )\n ~5.006715\n > y = base.log1pexp( 34.0 )\n 34.0\n > y = base.log1pexp( NaN )\n NaN\n\n See Also\n --------\n base.exp, base.ln, base.log1p", "base.log2": "\nbase.log2( x )\n Evaluates the binary logarithm (base two).\n\n For negative numbers, the binary logarithm is not defined.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log2( 4.0 )\n 2.0\n > y = base.log2( 8.0 )\n 3.0\n > y = base.log2( 0.0 )\n -Infinity\n > y = base.log2( PINF )\n Infinity\n > y = base.log2( NaN )\n NaN\n > y = base.log2( -4.0 )\n NaN\n\n See Also\n --------\n base.exp2, base.ln, base.log\n", "base.log10": "\nbase.log10( x )\n Evaluates the common logarithm (base 10).\n\n For negative numbers, the common logarithm is not defined.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log10( 100.0 )\n 2.0\n > y = base.log10( 8.0 )\n ~0.903\n > y = base.log10( 0.0 )\n -Infinity\n > y = base.log10( PINF )\n Infinity\n > y = base.log10( NaN )\n NaN\n > y = base.log10( -4.0 )\n NaN\n\n See Also\n --------\n base.exp10, base.ln, base.log\n", "base.logit": "\nbase.logit( p )\n Evaluates the logit function.\n\n Let `p` be the probability of some event. The logit function is defined as\n the logarithm of the odds `p / (1-p)`.\n\n If `p < 0` or `p > 1`, the function returns `NaN`.\n\n Parameters\n ----------\n p: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.logit( 0.2 )\n ~-1.386\n > y = base.logit( 0.9 )\n ~2.197\n > y = base.logit( -4.0 )\n NaN\n > y = base.logit( 1.5 )\n NaN\n > y = base.logit( NaN )\n NaN\n\n", From 5e69f2f05959d7b4e120da471b957f5a8c8c40cd Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 00:40:32 -0700 Subject: [PATCH 0649/1062] Fix require path --- lib/node_modules/@stdlib/math/base/special/log1pexp/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/README.md b/lib/node_modules/@stdlib/math/base/special/log1pexp/README.md index 769d768a8eb6..f054809709af 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1pexp/README.md +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/README.md @@ -63,7 +63,7 @@ y = log1pexp( NaN ); ```javascript var incrspace = require( '@stdlib/math/utils/incrspace' ); -var log1pexp = require( './../lib' ); +var log1pexp = require( '@stdlib/math/base/special/log1pexp' ); var x = incrspace( -10.0, 100.0, 1.0 ); var v; From d6120df9e099a47839d26518ab82575502e553b5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 01:00:45 -0700 Subject: [PATCH 0650/1062] Update minimum R version --- docs/development.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/development.md b/docs/development.md index 061fa956793a..e32bcb129901 100644 --- a/docs/development.md +++ b/docs/development.md @@ -44,7 +44,7 @@ Developing and running stdlib **requires** the following prerequisites: While not required to run stdlib, the following dependencies **may** be required for testing, benchmarking, and general development: - [Julia][julia]: language for technical computing (version `>= 0.5`) -- [R][r]: language for statistical computing (version `>= 3.3.3`) +- [R][r]: language for statistical computing (version `>= 3.4.0`) - [Python][python]: general purpose language (version `2.7.x`; version `3.x` is **not** supported due to [node-gyp][node-gyp], which is required for compiling native add-ons) - [pip][pip]: Python package manager (version `>= 9.0.0`; **required** for automatically installing Python packages, such as lint tools) - [gcc & g++][gcc] or [Clang][clang]: C/C++ compilation and linking (g++ version `>= 4.8`; clang version `>= 3.5`, Xcode version `>=8.3.1` on OS X) From fe07e8cbcacbcfc70aa44496616ea9d417ec98d5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 01:11:29 -0700 Subject: [PATCH 0651/1062] Update list of R dependencies --- etc/r/requirements.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/etc/r/requirements.txt b/etc/r/requirements.txt index f3d4439a3271..3f1d0f2f13ac 100644 --- a/etc/r/requirements.txt +++ b/etc/r/requirements.txt @@ -1 +1,4 @@ lintr +microbenchmark +jsonlite +VGAM From a7eaeb1daec9a6efbea5c198fb2ab61d06db6637 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 01:11:48 -0700 Subject: [PATCH 0652/1062] Update minimum R version --- .../math/base/special/log1pexp/test/fixtures/r/DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/DESCRIPTION index cd448131f4dd..6d26a8d50c73 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite VGAM From 091995fed5468cfd8f4f40d3875a69c7f4fee54a Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 01:13:11 -0700 Subject: [PATCH 0653/1062] Update R version --- tools/snippets/benchmark/r/DESCRIPTION | 2 +- tools/snippets/test/fixtures/r/DESCRIPTION | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/snippets/benchmark/r/DESCRIPTION b/tools/snippets/benchmark/r/DESCRIPTION index d258b3aa46a2..018ef5cdbcb5 100644 --- a/tools/snippets/benchmark/r/DESCRIPTION +++ b/tools/snippets/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/tools/snippets/test/fixtures/r/DESCRIPTION b/tools/snippets/test/fixtures/r/DESCRIPTION index f0b0e248063a..d60fe7838b53 100644 --- a/tools/snippets/test/fixtures/r/DESCRIPTION +++ b/tools/snippets/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true From e72b6d37f06697c107a85b27ac42a5529f040f97 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 01:23:21 -0700 Subject: [PATCH 0654/1062] Update R version --- tools/lint/r/DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/lint/r/DESCRIPTION b/tools/lint/r/DESCRIPTION index ac440a26fd20..21cfc712bf64 100644 --- a/tools/lint/r/DESCRIPTION +++ b/tools/lint/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Lint R Code Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Lints R code. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: lintr LazyData: true From ff4c2598a4dd9d07e79715c02bae001d0e0fb812 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 01:27:58 -0700 Subject: [PATCH 0655/1062] Update R version --- .../@stdlib/math/base/special/abs/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/abs2/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/acos/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/acosh/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/asin/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/asinh/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/atan/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/atan2/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/atanh/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/besselj0/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/besselj1/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/bessely0/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/bessely1/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/beta/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/beta/test/fixtures/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/betainc/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/betaln/benchmark/r/DESCRIPTION | 2 +- .../math/base/special/betaln/test/fixtures/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/binomcoef/benchmark/r/DESCRIPTION | 2 +- .../math/base/special/binomcoefln/benchmark/r/DESCRIPTION | 2 +- .../math/base/special/binomcoefln/test/fixtures/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/cbrt/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/ceil/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/cos/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/cosh/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/cospi/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/digamma/benchmark/r/DESCRIPTION | 2 +- .../math/base/special/digamma/test/fixtures/r/DESCRIPTION | 2 +- .../math/base/special/dirichlet-eta/benchmark/r/DESCRIPTION | 2 +- .../math/base/special/dirichlet-eta/test/fixtures/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/erf/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/erfc/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/erfcinv/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/erfinv/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/exp/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/expm1/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/factorial/benchmark/r/DESCRIPTION | 2 +- .../math/base/special/factorialln/benchmark/r/DESCRIPTION | 2 +- .../math/base/special/factorialln/test/fixtures/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/floor/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/gamma/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/gamma/test/fixtures/r/DESCRIPTION | 2 +- .../math/base/special/gammaincinv/test/fixtures/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/gammaln/benchmark/r/DESCRIPTION | 2 +- .../math/base/special/gammaln/test/fixtures/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/inv/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/ln/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/log/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/log10/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/log1p/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/log1pexp/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/log2/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/max/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/maxabs/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/min/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/minabs/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/polygamma/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/pow/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/round/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/roundn/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/roundsd/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/signum/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/sin/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/sinh/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/sinpi/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/sqrt/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/tan/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/tanh/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/trigamma/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/math/base/special/trunc/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/arcsine/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/bernoulli/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/beta/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/betaprime/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/binomial/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/cauchy/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/chi/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/chisquare/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/exponential/benchmark/r/DESCRIPTION | 2 +- lib/node_modules/@stdlib/random/base/f/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/frechet/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/gamma/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/geometric/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/gumbel/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/hypergeometric/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/invgamma/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/laplace/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/levy/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/logistic/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/lognormal/benchmark/r/DESCRIPTION | 2 +- .../random/base/negative-binomial/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/normal/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/poisson/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/randn/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/randu/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/rayleigh/benchmark/r/DESCRIPTION | 2 +- lib/node_modules/@stdlib/random/base/t/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/triangular/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/uniform/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/random/base/weibull/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/bernoulli/cdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/bernoulli/pmf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/bernoulli/quantile/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/binomial/cdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/binomial/logpmf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/binomial/pmf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/binomial/quantile/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/stats/base/dists/cauchy/cdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/cauchy/logcdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/cauchy/logpdf/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/stats/base/dists/cauchy/pdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/cauchy/quantile/benchmark/r/DESCRIPTION | 2 +- .../base/dists/exponential/cdf/test/fixtures/r/DESCRIPTION | 2 +- .../base/dists/exponential/logcdf/test/fixtures/r/DESCRIPTION | 2 +- .../base/dists/exponential/logpdf/test/fixtures/r/DESCRIPTION | 2 +- .../base/dists/exponential/pdf/test/fixtures/r/DESCRIPTION | 2 +- .../base/dists/exponential/quantile/test/fixtures/r/DESCRIPTION | 2 +- .../stats/base/dists/geometric/cdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/geometric/logcdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/geometric/logpmf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/geometric/pmf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/geometric/quantile/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/stats/base/dists/gumbel/cdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/gumbel/logcdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/gumbel/logpdf/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/stats/base/dists/gumbel/pdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/gumbel/quantile/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/laplace/cdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/laplace/logcdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/laplace/logpdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/laplace/pdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/laplace/quantile/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/stats/base/dists/levy/cdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/levy/logcdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/levy/logpdf/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/stats/base/dists/levy/pdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/levy/quantile/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/lognormal/cdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/lognormal/logpdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/lognormal/pdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/lognormal/quantile/benchmark/r/DESCRIPTION | 2 +- .../base/dists/negative-binomial/cdf/benchmark/r/DESCRIPTION | 2 +- .../base/dists/negative-binomial/logpmf/benchmark/r/DESCRIPTION | 2 +- .../base/dists/negative-binomial/pmf/benchmark/r/DESCRIPTION | 2 +- .../dists/negative-binomial/quantile/benchmark/r/DESCRIPTION | 2 +- .../@stdlib/stats/base/dists/normal/cdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/normal/cdf/test/fixtures/r/DESCRIPTION | 2 +- .../stats/base/dists/normal/logpdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/normal/logpdf/test/fixtures/r/DESCRIPTION | 2 +- .../@stdlib/stats/base/dists/normal/pdf/benchmark/r/DESCRIPTION | 2 +- .../stats/base/dists/normal/pdf/test/fixtures/r/DESCRIPTION | 2 +- .../stats/base/dists/normal/quantile/benchmark/r/DESCRIPTION | 2 +- .../base/dists/normal/quantile/test/fixtures/r/DESCRIPTION | 2 +- .../@stdlib/stats/chi2gof/test/fixtures/r/DESCRIPTION | 2 +- .../@stdlib/stats/kde2d/test/fixtures/r/DESCRIPTION | 2 +- .../@stdlib/stats/kstest/test/fixtures/r/DESCRIPTION | 2 +- .../@stdlib/stats/pcorrtest/test/fixtures/r/DESCRIPTION | 2 +- .../@stdlib/stats/ttest/test/fixtures/r/DESCRIPTION | 2 +- .../@stdlib/stats/ttest2/test/fixtures/r/DESCRIPTION | 2 +- 159 files changed, 159 insertions(+), 159 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/abs/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/abs/benchmark/r/DESCRIPTION index 947f7a0f0b8e..691bcdf3f9d6 100644 --- a/lib/node_modules/@stdlib/math/base/special/abs/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/abs/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/r/DESCRIPTION index ff447d126950..fc368b0cb2cf 100644 --- a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/acos/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/acos/benchmark/r/DESCRIPTION index 081a8413abff..af595247d375 100644 --- a/lib/node_modules/@stdlib/math/base/special/acos/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/acos/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/acosh/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/acosh/benchmark/r/DESCRIPTION index adc81950130f..4ba4f0598a4b 100644 --- a/lib/node_modules/@stdlib/math/base/special/acosh/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/acosh/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/asin/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/asin/benchmark/r/DESCRIPTION index 2caa674eaee6..20b795829deb 100644 --- a/lib/node_modules/@stdlib/math/base/special/asin/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/asin/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/asinh/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/asinh/benchmark/r/DESCRIPTION index 2ae9d695b789..6260f9e25faa 100644 --- a/lib/node_modules/@stdlib/math/base/special/asinh/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/asinh/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/atan/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/atan/benchmark/r/DESCRIPTION index 4686c4df0b93..ae9383e77bf1 100644 --- a/lib/node_modules/@stdlib/math/base/special/atan/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/atan/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/atan2/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/atan2/benchmark/r/DESCRIPTION index 9449934bd691..3975d7823e2c 100644 --- a/lib/node_modules/@stdlib/math/base/special/atan2/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/atan2/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/atanh/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/atanh/benchmark/r/DESCRIPTION index f3ee728c92dd..a06d440b542b 100644 --- a/lib/node_modules/@stdlib/math/base/special/atanh/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/atanh/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/besselj0/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/besselj0/benchmark/r/DESCRIPTION index fa9bfb297548..62f64d973a56 100644 --- a/lib/node_modules/@stdlib/math/base/special/besselj0/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/besselj0/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/besselj1/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/besselj1/benchmark/r/DESCRIPTION index 4de0855141e8..fb4ddd5bdb70 100644 --- a/lib/node_modules/@stdlib/math/base/special/besselj1/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/besselj1/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/bessely0/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/bessely0/benchmark/r/DESCRIPTION index f1ca98aa3fb5..b9e4dfb0823c 100644 --- a/lib/node_modules/@stdlib/math/base/special/bessely0/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/bessely0/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/bessely1/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/bessely1/benchmark/r/DESCRIPTION index f1ca98aa3fb5..b9e4dfb0823c 100644 --- a/lib/node_modules/@stdlib/math/base/special/bessely1/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/bessely1/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/beta/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/beta/benchmark/r/DESCRIPTION index e1908154bb00..48e25bd63077 100644 --- a/lib/node_modules/@stdlib/math/base/special/beta/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/beta/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/beta/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/beta/test/fixtures/r/DESCRIPTION index b5289a42a41b..af4bd547fa14 100644 --- a/lib/node_modules/@stdlib/math/base/special/beta/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/beta/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/betainc/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/betainc/benchmark/r/DESCRIPTION index 9de1f7196d01..5214a5f78067 100644 --- a/lib/node_modules/@stdlib/math/base/special/betainc/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/betainc/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/betaln/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/betaln/benchmark/r/DESCRIPTION index 96203e07d899..5e763af9ff6e 100644 --- a/lib/node_modules/@stdlib/math/base/special/betaln/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/betaln/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/betaln/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/betaln/test/fixtures/r/DESCRIPTION index 734cc381aa26..6b62b4a0df41 100644 --- a/lib/node_modules/@stdlib/math/base/special/betaln/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/betaln/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/binomcoef/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/binomcoef/benchmark/r/DESCRIPTION index 046a89e5b8b7..c7b4474b06a4 100644 --- a/lib/node_modules/@stdlib/math/base/special/binomcoef/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/binomcoef/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/binomcoefln/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/binomcoefln/benchmark/r/DESCRIPTION index 24ed4212d0e9..a5a6ce6ea87e 100644 --- a/lib/node_modules/@stdlib/math/base/special/binomcoefln/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/binomcoefln/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/binomcoefln/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/binomcoefln/test/fixtures/r/DESCRIPTION index 56d4100990e7..3754bb0f7429 100644 --- a/lib/node_modules/@stdlib/math/base/special/binomcoefln/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/binomcoefln/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/cbrt/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/cbrt/benchmark/r/DESCRIPTION index f53a4632f6d3..ab160049411b 100644 --- a/lib/node_modules/@stdlib/math/base/special/cbrt/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/cbrt/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/ceil/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/ceil/benchmark/r/DESCRIPTION index f705de3db412..18ab41d75ad8 100644 --- a/lib/node_modules/@stdlib/math/base/special/ceil/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/ceil/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/cos/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/cos/benchmark/r/DESCRIPTION index 21304d9c09ac..97f2161b21de 100644 --- a/lib/node_modules/@stdlib/math/base/special/cos/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/cos/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/cosh/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/cosh/benchmark/r/DESCRIPTION index a421ed3fca9c..0aa3ea733e0f 100644 --- a/lib/node_modules/@stdlib/math/base/special/cosh/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/cosh/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/cospi/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/cospi/benchmark/r/DESCRIPTION index 4d913d082d88..f461c57fd30e 100644 --- a/lib/node_modules/@stdlib/math/base/special/cospi/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/cospi/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/digamma/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/digamma/benchmark/r/DESCRIPTION index 3a23126c5d45..f4c6e0d820bb 100644 --- a/lib/node_modules/@stdlib/math/base/special/digamma/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/digamma/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/digamma/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/digamma/test/fixtures/r/DESCRIPTION index 42b0b77357b6..38aae73f8ce0 100644 --- a/lib/node_modules/@stdlib/math/base/special/digamma/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/digamma/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/dirichlet-eta/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/dirichlet-eta/benchmark/r/DESCRIPTION index ea78bd25998b..62d0d225c41d 100644 --- a/lib/node_modules/@stdlib/math/base/special/dirichlet-eta/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/dirichlet-eta/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark, pracma diff --git a/lib/node_modules/@stdlib/math/base/special/dirichlet-eta/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/dirichlet-eta/test/fixtures/r/DESCRIPTION index 1b36adfd5905..b693e5bb59f6 100644 --- a/lib/node_modules/@stdlib/math/base/special/dirichlet-eta/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/dirichlet-eta/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite, pracma diff --git a/lib/node_modules/@stdlib/math/base/special/erf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/erf/benchmark/r/DESCRIPTION index a9066bbcc94c..d25db3a5459a 100644 --- a/lib/node_modules/@stdlib/math/base/special/erf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/erf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/erfc/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/erfc/benchmark/r/DESCRIPTION index cd9232b354e9..aec2247d2963 100644 --- a/lib/node_modules/@stdlib/math/base/special/erfc/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/erfc/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/erfcinv/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/erfcinv/benchmark/r/DESCRIPTION index b4e4aaf0752e..2fc8756548f2 100644 --- a/lib/node_modules/@stdlib/math/base/special/erfcinv/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/erfcinv/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/erfinv/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/erfinv/benchmark/r/DESCRIPTION index 8c1b7721d3a3..d32880413109 100644 --- a/lib/node_modules/@stdlib/math/base/special/erfinv/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/erfinv/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/exp/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/exp/benchmark/r/DESCRIPTION index c1c2370d813b..517a6d00676f 100644 --- a/lib/node_modules/@stdlib/math/base/special/exp/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/exp/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/expm1/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/expm1/benchmark/r/DESCRIPTION index 21b06e5a041c..c5fcd7e73e24 100644 --- a/lib/node_modules/@stdlib/math/base/special/expm1/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/expm1/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/factorial/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/factorial/benchmark/r/DESCRIPTION index d0aa19ae75c6..d6352bee941f 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorial/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/factorial/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/factorialln/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/factorialln/benchmark/r/DESCRIPTION index 8035fa312103..92ed2021715f 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorialln/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/factorialln/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/factorialln/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/factorialln/test/fixtures/r/DESCRIPTION index e2352744cf0c..29ede4ed8cc4 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorialln/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/factorialln/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/floor/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/floor/benchmark/r/DESCRIPTION index 64c44c81a814..1c48791fb2ab 100644 --- a/lib/node_modules/@stdlib/math/base/special/floor/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/floor/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/gamma/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/gamma/benchmark/r/DESCRIPTION index 48a6e41c8e4f..873d480c4288 100644 --- a/lib/node_modules/@stdlib/math/base/special/gamma/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/gamma/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/gamma/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/gamma/test/fixtures/r/DESCRIPTION index 21c925247f37..83446aabbb2b 100644 --- a/lib/node_modules/@stdlib/math/base/special/gamma/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/gamma/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/gammaincinv/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/gammaincinv/test/fixtures/r/DESCRIPTION index cdee3126ed51..dd23772a4d1f 100644 --- a/lib/node_modules/@stdlib/math/base/special/gammaincinv/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/gammaincinv/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/gammaln/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/gammaln/benchmark/r/DESCRIPTION index b51006188597..131d2ce2fd83 100644 --- a/lib/node_modules/@stdlib/math/base/special/gammaln/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/gammaln/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/gammaln/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/gammaln/test/fixtures/r/DESCRIPTION index 2fe5129f7155..cb3929d04963 100644 --- a/lib/node_modules/@stdlib/math/base/special/gammaln/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/gammaln/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/inv/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/inv/benchmark/r/DESCRIPTION index 997dd4041eee..9b5f8134b594 100644 --- a/lib/node_modules/@stdlib/math/base/special/inv/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/inv/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/ln/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/ln/benchmark/r/DESCRIPTION index b77e6ad677ec..46a145ca9e7c 100644 --- a/lib/node_modules/@stdlib/math/base/special/ln/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/ln/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/log/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/log/benchmark/r/DESCRIPTION index b77e6ad677ec..46a145ca9e7c 100644 --- a/lib/node_modules/@stdlib/math/base/special/log/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/log/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/log10/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/log10/benchmark/r/DESCRIPTION index 9f77a8fc09e7..bc016bdf4f31 100644 --- a/lib/node_modules/@stdlib/math/base/special/log10/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/log10/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/log1p/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/log1p/benchmark/r/DESCRIPTION index 2bf2db638863..0f67acb78031 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1p/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/log1p/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/log1pexp/benchmark/r/DESCRIPTION index 86c8a7dc732b..4ae75c2cab55 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1pexp/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark VGAM diff --git a/lib/node_modules/@stdlib/math/base/special/log2/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/log2/benchmark/r/DESCRIPTION index 919b82319d9a..8404e3e3fc6a 100644 --- a/lib/node_modules/@stdlib/math/base/special/log2/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/log2/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/max/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/max/benchmark/r/DESCRIPTION index e2e51e8ea0cb..da513d77a35c 100644 --- a/lib/node_modules/@stdlib/math/base/special/max/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/max/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/maxabs/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/maxabs/benchmark/r/DESCRIPTION index 3faab7fb4501..9e61d05907b1 100644 --- a/lib/node_modules/@stdlib/math/base/special/maxabs/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/maxabs/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/min/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/min/benchmark/r/DESCRIPTION index 5146eeced74f..bfac4d6fadc7 100644 --- a/lib/node_modules/@stdlib/math/base/special/min/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/min/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/minabs/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/minabs/benchmark/r/DESCRIPTION index 5d3d0e0d5655..1f1f3ce31985 100644 --- a/lib/node_modules/@stdlib/math/base/special/minabs/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/minabs/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/polygamma/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/polygamma/benchmark/r/DESCRIPTION index 884e79e4dc68..1e3999e6afa7 100644 --- a/lib/node_modules/@stdlib/math/base/special/polygamma/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/polygamma/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/pow/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/pow/benchmark/r/DESCRIPTION index 66ebe15386dd..85165f1ed825 100644 --- a/lib/node_modules/@stdlib/math/base/special/pow/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/pow/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/round/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/round/benchmark/r/DESCRIPTION index 8d647a2b1f8e..74fc4bcc39ab 100644 --- a/lib/node_modules/@stdlib/math/base/special/round/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/round/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/roundn/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/roundn/benchmark/r/DESCRIPTION index 456866dd9121..a6eb71722ad1 100644 --- a/lib/node_modules/@stdlib/math/base/special/roundn/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/roundn/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/roundsd/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/roundsd/benchmark/r/DESCRIPTION index 54a953b284e5..8e0a997556f1 100644 --- a/lib/node_modules/@stdlib/math/base/special/roundsd/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/roundsd/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/signum/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/signum/benchmark/r/DESCRIPTION index 2f674eb5e279..9364a7930646 100644 --- a/lib/node_modules/@stdlib/math/base/special/signum/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/signum/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/sin/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/sin/benchmark/r/DESCRIPTION index 5d98020b889b..8590c05a13ff 100644 --- a/lib/node_modules/@stdlib/math/base/special/sin/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/sin/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/sinh/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/sinh/benchmark/r/DESCRIPTION index e93e457b76a3..9580937abd70 100644 --- a/lib/node_modules/@stdlib/math/base/special/sinh/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/sinh/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/sinpi/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/sinpi/benchmark/r/DESCRIPTION index 724353b313f5..289197d4394c 100644 --- a/lib/node_modules/@stdlib/math/base/special/sinpi/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/sinpi/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/sqrt/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/sqrt/benchmark/r/DESCRIPTION index 3138484a33f8..bd4e9118cf4d 100644 --- a/lib/node_modules/@stdlib/math/base/special/sqrt/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/sqrt/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/tan/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/tan/benchmark/r/DESCRIPTION index cd30895d1c5f..bc9351acb970 100644 --- a/lib/node_modules/@stdlib/math/base/special/tan/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/tan/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/tanh/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/tanh/benchmark/r/DESCRIPTION index 156bbfdd5fbc..d3f9add547a3 100644 --- a/lib/node_modules/@stdlib/math/base/special/tanh/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/tanh/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/trigamma/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/trigamma/benchmark/r/DESCRIPTION index 884e79e4dc68..1e3999e6afa7 100644 --- a/lib/node_modules/@stdlib/math/base/special/trigamma/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/trigamma/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/trunc/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/trunc/benchmark/r/DESCRIPTION index 2613bfdb731c..17de45bd25e5 100644 --- a/lib/node_modules/@stdlib/math/base/special/trunc/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/math/base/special/trunc/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/arcsine/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/arcsine/benchmark/r/DESCRIPTION index 995e7d32d15f..5b18c3a5a37e 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/arcsine/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark distr diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/r/DESCRIPTION index 2e317eeafc26..eef36283bd5c 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/beta/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/beta/benchmark/r/DESCRIPTION index c19a040f39d6..53c1592ca59a 100644 --- a/lib/node_modules/@stdlib/random/base/beta/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/beta/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/betaprime/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/betaprime/benchmark/r/DESCRIPTION index c02f7af7e0ac..c08c90a24d44 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/betaprime/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark extraDistr diff --git a/lib/node_modules/@stdlib/random/base/binomial/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/binomial/benchmark/r/DESCRIPTION index 2e317eeafc26..eef36283bd5c 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/binomial/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/cauchy/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/cauchy/benchmark/r/DESCRIPTION index 07bf29bc2d26..65ea7e9d9763 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/cauchy/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/chi/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/chi/benchmark/r/DESCRIPTION index 95eb9bdfd776..c9dfcdce0c6c 100644 --- a/lib/node_modules/@stdlib/random/base/chi/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/chi/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark chi diff --git a/lib/node_modules/@stdlib/random/base/chisquare/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/chisquare/benchmark/r/DESCRIPTION index d98e0c3b1e11..903f25331e07 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/chisquare/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/exponential/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/exponential/benchmark/r/DESCRIPTION index 7e048c72261d..6c2645a4c2aa 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/exponential/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/f/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/f/benchmark/r/DESCRIPTION index 8322c0bc6425..ae5f56bb4af0 100644 --- a/lib/node_modules/@stdlib/random/base/f/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/f/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/frechet/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/frechet/benchmark/r/DESCRIPTION index 875059e55f6b..796fe398bfe1 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/frechet/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark VGAM diff --git a/lib/node_modules/@stdlib/random/base/gamma/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/gamma/benchmark/r/DESCRIPTION index 200f5ef80739..e6fab465b337 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/gamma/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/geometric/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/geometric/benchmark/r/DESCRIPTION index 56b636cad7d2..11b89f6aeef9 100644 --- a/lib/node_modules/@stdlib/random/base/geometric/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/geometric/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/gumbel/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/gumbel/benchmark/r/DESCRIPTION index 2d2a44232c31..3ffacf6501ea 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/gumbel/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark evd diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/hypergeometric/benchmark/r/DESCRIPTION index adda5f06e7e2..e7f6e99316e8 100644 --- a/lib/node_modules/@stdlib/random/base/hypergeometric/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/invgamma/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/invgamma/benchmark/r/DESCRIPTION index 014d2f26a9ce..3ddcf1bada78 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/invgamma/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark MCMCpack diff --git a/lib/node_modules/@stdlib/random/base/laplace/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/laplace/benchmark/r/DESCRIPTION index ef5ea93b30de..cce056d0c689 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/laplace/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark rmutil diff --git a/lib/node_modules/@stdlib/random/base/levy/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/levy/benchmark/r/DESCRIPTION index 10aaeed743c3..319f2c1270fb 100644 --- a/lib/node_modules/@stdlib/random/base/levy/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/levy/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark rmutil diff --git a/lib/node_modules/@stdlib/random/base/logistic/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/logistic/benchmark/r/DESCRIPTION index 4775663651ba..399e38fd528c 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/logistic/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/lognormal/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/lognormal/benchmark/r/DESCRIPTION index 1ae240606ea9..ce211e8203d0 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/lognormal/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/negative-binomial/benchmark/r/DESCRIPTION index a38ea1732bc8..df926b0e0a2f 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/normal/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/normal/benchmark/r/DESCRIPTION index 3364791536fd..63ab1aa38af2 100644 --- a/lib/node_modules/@stdlib/random/base/normal/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/normal/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/poisson/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/poisson/benchmark/r/DESCRIPTION index 2410dba34fbc..063f1d962ad2 100644 --- a/lib/node_modules/@stdlib/random/base/poisson/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/poisson/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/randn/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/randn/benchmark/r/DESCRIPTION index 3364791536fd..63ab1aa38af2 100644 --- a/lib/node_modules/@stdlib/random/base/randn/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/randn/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/randu/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/randu/benchmark/r/DESCRIPTION index 71adb0bb8270..13c355579516 100644 --- a/lib/node_modules/@stdlib/random/base/randu/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/randu/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/rayleigh/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/rayleigh/benchmark/r/DESCRIPTION index f02c4ecb823d..90815c26a7f8 100644 --- a/lib/node_modules/@stdlib/random/base/rayleigh/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/rayleigh/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark VGAM diff --git a/lib/node_modules/@stdlib/random/base/t/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/t/benchmark/r/DESCRIPTION index d574aca34be4..9f64fe696daf 100644 --- a/lib/node_modules/@stdlib/random/base/t/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/t/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/triangular/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/triangular/benchmark/r/DESCRIPTION index dfb6dbf266b1..d2abd2f34dd9 100644 --- a/lib/node_modules/@stdlib/random/base/triangular/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/triangular/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark VGAM diff --git a/lib/node_modules/@stdlib/random/base/uniform/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/uniform/benchmark/r/DESCRIPTION index 71adb0bb8270..13c355579516 100644 --- a/lib/node_modules/@stdlib/random/base/uniform/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/uniform/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/random/base/weibull/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/random/base/weibull/benchmark/r/DESCRIPTION index 41e47f8bc9d9..a94c02a8074f 100644 --- a/lib/node_modules/@stdlib/random/base/weibull/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/random/base/weibull/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/bernoulli/cdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/bernoulli/cdf/benchmark/r/DESCRIPTION index 56982a8d95a9..bfbea83abd4f 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/bernoulli/cdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/bernoulli/cdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/bernoulli/pmf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/bernoulli/pmf/benchmark/r/DESCRIPTION index 81bf1366aa79..97f4e71382f8 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/bernoulli/pmf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/bernoulli/pmf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/bernoulli/quantile/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/bernoulli/quantile/benchmark/r/DESCRIPTION index 8b46e911694b..075e553d20f1 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/bernoulli/quantile/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/bernoulli/quantile/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/cdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/binomial/cdf/benchmark/r/DESCRIPTION index 56982a8d95a9..bfbea83abd4f 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/cdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/cdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/logpmf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/binomial/logpmf/benchmark/r/DESCRIPTION index 6be79c83cdcf..7077c4a34bb8 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/logpmf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/logpmf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/pmf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/binomial/pmf/benchmark/r/DESCRIPTION index 81bf1366aa79..97f4e71382f8 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/pmf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/pmf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/quantile/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/binomial/quantile/benchmark/r/DESCRIPTION index 8b46e911694b..075e553d20f1 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/quantile/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/quantile/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/cauchy/cdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/cauchy/cdf/benchmark/r/DESCRIPTION index 2e41de4472b6..742c139ddc1b 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/cauchy/cdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/cauchy/cdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/cauchy/logcdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/cauchy/logcdf/benchmark/r/DESCRIPTION index 44f21f3c8380..7674f90bfb3f 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/cauchy/logcdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/cauchy/logcdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/cauchy/logpdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/cauchy/logpdf/benchmark/r/DESCRIPTION index d76fa7e29f58..8a0b9c444916 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/cauchy/logpdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/cauchy/logpdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/cauchy/pdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/cauchy/pdf/benchmark/r/DESCRIPTION index 989119cdc9e3..d05210d5b234 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/cauchy/pdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/cauchy/pdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/cauchy/quantile/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/cauchy/quantile/benchmark/r/DESCRIPTION index 83cbe44d124d..ab4e558e4cd0 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/cauchy/quantile/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/cauchy/quantile/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/exponential/cdf/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/exponential/cdf/test/fixtures/r/DESCRIPTION index f5c56db95a40..fcf4e37a32a3 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/exponential/cdf/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/exponential/cdf/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/exponential/logcdf/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/exponential/logcdf/test/fixtures/r/DESCRIPTION index 6a1e00e27068..c4b475968adf 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/exponential/logcdf/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/exponential/logcdf/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/exponential/logpdf/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/exponential/logpdf/test/fixtures/r/DESCRIPTION index aa439c738507..a71572ea3d11 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/exponential/logpdf/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/exponential/logpdf/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/exponential/pdf/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/exponential/pdf/test/fixtures/r/DESCRIPTION index aa439c738507..a71572ea3d11 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/exponential/pdf/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/exponential/pdf/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/exponential/quantile/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/exponential/quantile/test/fixtures/r/DESCRIPTION index ba39fdefcaa4..b2b5fd984610 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/exponential/quantile/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/exponential/quantile/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/geometric/cdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/geometric/cdf/benchmark/r/DESCRIPTION index a5db462de881..eedb94d16148 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/geometric/cdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/geometric/cdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/geometric/logcdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/geometric/logcdf/benchmark/r/DESCRIPTION index dc1054f14f6c..293b76275ccd 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/geometric/logcdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/geometric/logcdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/geometric/logpmf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/geometric/logpmf/benchmark/r/DESCRIPTION index 45ac166c2590..b0196b47cebd 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/geometric/logpmf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/geometric/logpmf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/geometric/pmf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/geometric/pmf/benchmark/r/DESCRIPTION index 58ab088f9648..af237e506323 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/geometric/pmf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/geometric/pmf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/geometric/quantile/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/geometric/quantile/benchmark/r/DESCRIPTION index af2bc4c57ae8..92c0047f3bf0 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/geometric/quantile/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/geometric/quantile/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/gumbel/cdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/gumbel/cdf/benchmark/r/DESCRIPTION index 9cdfda25b615..f73d0220566b 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/gumbel/cdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/gumbel/cdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark evd diff --git a/lib/node_modules/@stdlib/stats/base/dists/gumbel/logcdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/gumbel/logcdf/benchmark/r/DESCRIPTION index 9a3155d551fe..a5abed89f09f 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/gumbel/logcdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/gumbel/logcdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark evd diff --git a/lib/node_modules/@stdlib/stats/base/dists/gumbel/logpdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/gumbel/logpdf/benchmark/r/DESCRIPTION index 84e0f4a7828f..ead7ac62953b 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/gumbel/logpdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/gumbel/logpdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark evd diff --git a/lib/node_modules/@stdlib/stats/base/dists/gumbel/pdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/gumbel/pdf/benchmark/r/DESCRIPTION index dd0d10780ae5..33d18405d732 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/gumbel/pdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/gumbel/pdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark evd diff --git a/lib/node_modules/@stdlib/stats/base/dists/gumbel/quantile/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/gumbel/quantile/benchmark/r/DESCRIPTION index ad78c98fa85c..59e76d2d279f 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/gumbel/quantile/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/gumbel/quantile/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark evd diff --git a/lib/node_modules/@stdlib/stats/base/dists/laplace/cdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/laplace/cdf/benchmark/r/DESCRIPTION index 472a1ea3ee63..e4c775eb7089 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/laplace/cdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/laplace/cdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark rmutil diff --git a/lib/node_modules/@stdlib/stats/base/dists/laplace/logcdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/laplace/logcdf/benchmark/r/DESCRIPTION index b0b1fb67fe28..54244d26fe81 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/laplace/logcdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/laplace/logcdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark rmutil diff --git a/lib/node_modules/@stdlib/stats/base/dists/laplace/logpdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/laplace/logpdf/benchmark/r/DESCRIPTION index 594687bba811..5208858232ed 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/laplace/logpdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/laplace/logpdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark rmutil diff --git a/lib/node_modules/@stdlib/stats/base/dists/laplace/pdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/laplace/pdf/benchmark/r/DESCRIPTION index 16809243ffcc..13f8624888b2 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/laplace/pdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/laplace/pdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark rmutil diff --git a/lib/node_modules/@stdlib/stats/base/dists/laplace/quantile/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/laplace/quantile/benchmark/r/DESCRIPTION index b2b297de14ee..4dff385e28bb 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/laplace/quantile/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/laplace/quantile/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark rmutil diff --git a/lib/node_modules/@stdlib/stats/base/dists/levy/cdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/levy/cdf/benchmark/r/DESCRIPTION index 54b8e44416fb..8e5e27a1dcdb 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/levy/cdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/levy/cdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark rmutil diff --git a/lib/node_modules/@stdlib/stats/base/dists/levy/logcdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/levy/logcdf/benchmark/r/DESCRIPTION index 3d67f58a4186..f494b9e387b7 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/levy/logcdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/levy/logcdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark rmutil diff --git a/lib/node_modules/@stdlib/stats/base/dists/levy/logpdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/levy/logpdf/benchmark/r/DESCRIPTION index 4d7837b8ad65..6ea417118e56 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/levy/logpdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/levy/logpdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark rmutil diff --git a/lib/node_modules/@stdlib/stats/base/dists/levy/pdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/levy/pdf/benchmark/r/DESCRIPTION index 832d0caaed9d..89b9f13a0c1a 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/levy/pdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/levy/pdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark rmutil diff --git a/lib/node_modules/@stdlib/stats/base/dists/levy/quantile/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/levy/quantile/benchmark/r/DESCRIPTION index d33eee7d839a..91fdc4554e69 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/levy/quantile/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/levy/quantile/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark rmutil diff --git a/lib/node_modules/@stdlib/stats/base/dists/lognormal/cdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/lognormal/cdf/benchmark/r/DESCRIPTION index eee596a184d3..675c014e08ae 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/lognormal/cdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/lognormal/cdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/benchmark/r/DESCRIPTION index 432a140b3e00..20d88bf984ec 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/benchmark/r/DESCRIPTION index f8d10d23f4ff..570f66fea824 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/lognormal/quantile/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/lognormal/quantile/benchmark/r/DESCRIPTION index f822d67f7c61..fbeae98a7d01 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/lognormal/quantile/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/lognormal/quantile/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/negative-binomial/cdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/negative-binomial/cdf/benchmark/r/DESCRIPTION index 67b07a0f0a25..0d37661ab0b9 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/negative-binomial/cdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/negative-binomial/cdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/negative-binomial/logpmf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/negative-binomial/logpmf/benchmark/r/DESCRIPTION index d327afaa09c3..e676107c2eeb 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/negative-binomial/logpmf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/negative-binomial/logpmf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/negative-binomial/pmf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/negative-binomial/pmf/benchmark/r/DESCRIPTION index dc7674dc4154..6cd3edfbd896 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/negative-binomial/pmf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/negative-binomial/pmf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/negative-binomial/quantile/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/negative-binomial/quantile/benchmark/r/DESCRIPTION index dc7674dc4154..6cd3edfbd896 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/negative-binomial/quantile/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/negative-binomial/quantile/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/cdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/normal/cdf/benchmark/r/DESCRIPTION index 4e6ecf8b3dc6..1ab5777c6976 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/cdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/cdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/cdf/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/normal/cdf/test/fixtures/r/DESCRIPTION index 67a75e4b5d40..cf77e2b5de56 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/cdf/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/cdf/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/benchmark/r/DESCRIPTION index a7d68ae7fbcc..96871a340510 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/test/fixtures/r/DESCRIPTION index 332eafcde546..abd4eca122f6 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/benchmark/r/DESCRIPTION index 37ad7729bf62..d8fc76527184 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/test/fixtures/r/DESCRIPTION index 332eafcde546..abd4eca122f6 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/benchmark/r/DESCRIPTION index f46e78711158..22949c27d11d 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/benchmark/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/benchmark/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Benchmarks Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Benchmarks. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: microbenchmark LazyData: true diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/test/fixtures/r/DESCRIPTION index 262b3f54b59b..f93b1262efa4 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/stats/chi2gof/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/chi2gof/test/fixtures/r/DESCRIPTION index 2c8122ec54c2..fe72703ae4cf 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/chi2gof/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/stats/kde2d/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/kde2d/test/fixtures/r/DESCRIPTION index f0b0e248063a..d60fe7838b53 100644 --- a/lib/node_modules/@stdlib/stats/kde2d/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/kde2d/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/stats/kstest/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/kstest/test/fixtures/r/DESCRIPTION index f9c5ea0c6da4..7f8500a2bf9a 100644 --- a/lib/node_modules/@stdlib/stats/kstest/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/kstest/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/stats/pcorrtest/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/pcorrtest/test/fixtures/r/DESCRIPTION index 870ae37c92d3..939d2d4a9d15 100644 --- a/lib/node_modules/@stdlib/stats/pcorrtest/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/pcorrtest/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/stats/ttest/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/ttest/test/fixtures/r/DESCRIPTION index a7d8d6293a06..656a41ee36d4 100644 --- a/lib/node_modules/@stdlib/stats/ttest/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/ttest/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true diff --git a/lib/node_modules/@stdlib/stats/ttest2/test/fixtures/r/DESCRIPTION b/lib/node_modules/@stdlib/stats/ttest2/test/fixtures/r/DESCRIPTION index 673a825ca36e..21032e705c21 100644 --- a/lib/node_modules/@stdlib/stats/ttest2/test/fixtures/r/DESCRIPTION +++ b/lib/node_modules/@stdlib/stats/ttest2/test/fixtures/r/DESCRIPTION @@ -3,7 +3,7 @@ Title: Test Fixtures Version: 0.0.0 Authors@R: person("stdlib", "js", role = c("aut","cre")) Description: Generates test fixtures. -Depends: R (>=3.3.3) +Depends: R (>=3.4.0) Imports: jsonlite LazyData: true From ba35123203bdba006fba6c205c3f130a2b9714eb Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 05:40:25 -0700 Subject: [PATCH 0656/1062] Refactor managing of PRNG state --- .../random/base/mt19937/lib/factory.js | 130 +++++++++++------- 1 file changed, 84 insertions(+), 46 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 6f65fe7b6765..9c0593e3b479 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -53,6 +53,8 @@ * ``` */ +/* eslint-disable max-len */ + 'use strict'; // MODULES // @@ -131,6 +133,12 @@ var ONE = 0x1 >>> 0; // asm type annotation // Define the maximum normalized pseudorandom double-precision floating-point number: ( (((2^32-1)>>>5)*2^26)+( (2^32-1)>>>6) ) / 2^53 var MAX_NORMALIZED = FLOAT64_MAX_SAFE_INTEGER * FLOAT64_NORMALIZATION_CONSTANT; +// Define the index offset of the "other" section in the state array: +var OTHER_SECTION_OFFSET = N + 1; // | state_length | ...state | other_length | state_index | seed_length | ...seed | + +// Define the index offset of the seed section in the state array: +var SEED_SECTION_OFFSET = N + 3; // | state_length | ...state | other_length | state_index | seed_length | ...seed | + // FUNCTIONS // @@ -338,7 +346,7 @@ function twist( state ) { * @throws {TypeError} a seed must be either a positive integer less than or equal to the maximum unsigned 32-bit integer or an array-like object containing integers less than or equal to the maximum unsigned 32-bit integer * @throws {RangeError} a numeric seed must be a positive integer less than or equal to the maximum unsigned 32-bit integer * @throws {TypeError} state must be a `Uint32Array` -* @throws {RangeError} insufficient state length +* @throws {Error} must provide a valid state * @throws {TypeError} `copy` option must be a boolean * @returns {Function} Mersenne Twister PRNG * @@ -358,6 +366,7 @@ function twist( state ) { * // returns 822569775 */ function factory( options ) { + var STATE; var state; var seed; var slen; @@ -376,24 +385,19 @@ function factory( options ) { if ( !isUint32Array( state ) ) { throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + state + '`.' ); } - // Determine the seed length: - slen = state.length - N - 1; - if ( slen <= 0 ) { - throw new RangeError( 'invalid option. `state` option has insufficient length.' ); - } - if ( options.copy === false ) { - // Create a state "view" (which includes the state index): - state = new Uint32Array( state.buffer, state.byteOffset, N+1 ); + // TODO: verify state integrity - // Create a seed "view": - seed = new Uint32Array( state.buffer, state.byteOffset+((N+1)*state.BYTES_PER_ELEMENT), slen ); // eslint-disable-line max-len + if ( options.copy === false ) { + STATE = state; } else { - // Extract the state (and state index): - state = gcopy( N+1, state, 1, new Uint32Array( N+1 ), 1 ); - - // Extract the PRNG seed: - seed = gcopy.ndarray( slen, state, 1, N+1, new Uint32Array( slen ), 1, 0 ); // eslint-disable-line max-len + STATE = new Uint32Array( state.length ); + gcopy( state.length, state, 1, STATE, 1 ); } + // Create a state "view": + state = new Uint32Array( STATE.buffer, STATE.byteOffset+(1*STATE.BYTES_PER_ELEMENT), N ); + + // Create a seed "view": + seed = new Uint32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), state[ SEED_SECTION_OFFSET ] ); } // If provided a PRNG state, we ignore the `seed` option... if ( seed === void 0 ) { @@ -406,15 +410,24 @@ function factory( options ) { seed >>>= 0; // asm type annotation } else if ( isCollection( seed ) && seed.length > 0 ) { slen = seed.length; + STATE = new Uint32Array( 1+N+2+1+slen ); + + // Initialize sections: + STATE[ 0 ] = N; + STATE[ OTHER_SECTION_OFFSET ] = 1; + STATE[ OTHER_SECTION_OFFSET+1 ] = N; // state index + STATE[ SEED_SECTION_OFFSET ] = slen; - // Create an internal copy of the provided seed array to prevent the inability to reproduce PRNG values based on the PRNG's stated seed due to external state mutation: - seed = gcopy( slen, seed, 1, new Uint32Array( slen ), 1 ); + // Copy the provided seed array to prevent external mutation, as mutation would lead to an inability to reproduce PRNG values according to the PRNG's stated seed: + gcopy.ndarray( slen, seed, 1, 0, STATE, 1, SEED_SECTION_OFFSET+1 ); + + // Create a seed "view": + seed = new Uint32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), slen ); // Initialize the internal PRNG state: - state = new Uint32Array( N+1 ); + state = new Uint32Array( STATE.buffer, 1*STATE.BYTES_PER_ELEMENT, N ); state = createState( state, N, SEED_ARRAY_INIT_STATE ); state = initState( state, N, seed, slen ); - state[ N ] = N; // state index } else { throw new TypeError( 'invalid option. `seed` option must be either a positive integer less than or equal to the maximum unsigned 32-bit integer or an array-like object containing integer values less than or equal to the maximum unsigned 32-bit integer. Option: `' + seed + '`.' ); } @@ -426,11 +439,21 @@ function factory( options ) { seed = randuint32() >>> 0; // asm type annotation } if ( state === void 0 ) { - state = createState( new Uint32Array( N+1 ), N, seed ); - state[ N ] = N; // state index + STATE = new Uint32Array( 1+N+2+2 ); + + // Initialize sections: + STATE[ 0 ] = N; + STATE[ OTHER_SECTION_OFFSET ] = 1; + STATE[ OTHER_SECTION_OFFSET+1 ] = N; // state index + STATE[ SEED_SECTION_OFFSET ] = 1; + STATE[ SEED_SECTION_OFFSET+1 ] = seed; - seed = new Uint32Array( [ seed ] ); - slen = seed.length; + // Initialize internal PRNG state: + state = new Uint32Array( STATE.buffer, 1*STATE.BYTES_PER_ELEMENT, N ); + state = createState( state, N, seed ); + + // Create a "seed" view: + seed = new Uint32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), 1 ); } // Note: property order matters in order to maintain consistency of PRNG "shape" (hidden classes). setReadOnly( mt19937, 'NAME', 'mt19937' ); @@ -461,7 +484,8 @@ function factory( options ) { * @returns {Uint32Array} seed */ function getSeed() { - return gcopy( slen, seed, 1, new Uint32Array( slen ), 1 ); + var len = STATE[ SEED_SECTION_OFFSET ]; + return gcopy( len, seed, 1, new Uint32Array( len ), 1 ); } /** @@ -471,7 +495,7 @@ function factory( options ) { * @returns {PositiveInteger} seed length */ function getSeedLength() { - return slen; + return STATE[ SEED_SECTION_OFFSET ]; } /** @@ -481,7 +505,7 @@ function factory( options ) { * @returns {PositiveInteger} state length */ function getStateLength() { - return N + 1 + slen; + return STATE.length; } /** @@ -497,19 +521,22 @@ function factory( options ) { /** * Returns the current PRNG state. * + * ## Notes + * + * - The PRNG state array is comprised of `3` sections: + * + * 1. internal PRNG state + * 2. auxiliary state information + * 3. PRNG seed + * + * - The first element of each section specifies the section length. The remaining section elements comprise the section contents. + * * @private * @returns {Uint32Array} current state */ function getState() { - var out = new Uint32Array( getStateLength() ); - - // Copy the internal state (including the state index): - out = gcopy( N+1, state, 1, out, 1 ); - - // Copy the seed: - out = gcopy.ndarray( slen, seed, 1, 0, out, 1, N+1 ); - - return out; + var len = getStateLength(); + return gcopy( len, STATE, 1, new Uint32Array( len ), 1 ); } /** @@ -518,22 +545,33 @@ function factory( options ) { * @private * @param {Uint32Array} s - generator state * @throws {TypeError} must provide a `Uint32Array` - * @throws {RangeError} must provide a `Uint32Array` having sufficient length + * @throws {Error} must provide a valid state */ function setState( s ) { + var FLG; if ( !isUint32Array( s ) ) { throw new TypeError( 'invalid argument. Must provide a Uint32Array. Value: `' + s + '`.' ); } - // Determine the seed length: - slen = s.length - N - 1; - if ( slen <= 0 ) { - throw new RangeError( 'invalid argument. The provided array has insufficient length.' ); + // TODO: verify state integrity + + if ( options.copy === false ) { + STATE = s; + FLG = true; + } else { + // Check if we can reuse allocated memory... + if ( s.length !== STATE.length ) { + STATE = new Uint32Array( s.length ); // reallocate + FLG = true; + } + gcopy( s.length, s, 1, STATE, 1 ); } - // Set the internal state (including the state index): - gcopy( N+1, s, 1, state, 1 ); + if ( FLG ) { + // Create a new state "view": + state = new Uint32Array( STATE.buffer, STATE.byteOffset+(1*STATE.BYTES_PER_ELEMENT), N ); - // Set the seed: - seed = gcopy.ndarray( slen, s, 1, N+1, new Uint32Array( slen ), 1, 0 ); + // Create a new seed "view": + seed = new Uint32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), STATE[ SEED_SECTION_OFFSET ] ); + } } /** @@ -551,7 +589,7 @@ function factory( options ) { var i; // Retrieve the current state index: - i = state[ N ]; + i = STATE[ OTHER_SECTION_OFFSET+1 ]; // Determine whether we need to update the PRNG state: if ( i >= N ) { From c17d31e5dec27e3138c0a9a26bb19e27a1ce46d5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 10:19:21 -0700 Subject: [PATCH 0657/1062] Encode number of state array sections --- .../random/base/mt19937/lib/factory.js | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 9c0593e3b479..7321df490a4b 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -133,11 +133,17 @@ var ONE = 0x1 >>> 0; // asm type annotation // Define the maximum normalized pseudorandom double-precision floating-point number: ( (((2^32-1)>>>5)*2^26)+( (2^32-1)>>>6) ) / 2^53 var MAX_NORMALIZED = FLOAT64_MAX_SAFE_INTEGER * FLOAT64_NORMALIZATION_CONSTANT; +// Define the number of sections in the state array: +var NUM_STATE_SECTIONS = 3; // state, other, seed + +// Define the index offset of the "state" section in the state array: +var STATE_SECTION_OFFSET = 1; // | num_sections | state_length | ...state | other_length | state_index | seed_length | ...seed | + // Define the index offset of the "other" section in the state array: -var OTHER_SECTION_OFFSET = N + 1; // | state_length | ...state | other_length | state_index | seed_length | ...seed | +var OTHER_SECTION_OFFSET = N + 2; // | num_sections | state_length | ...state | other_length | state_index | seed_length | ...seed | // Define the index offset of the seed section in the state array: -var SEED_SECTION_OFFSET = N + 3; // | state_length | ...state | other_length | state_index | seed_length | ...seed | +var SEED_SECTION_OFFSET = N + 4; // | num_sections | state_length | ...state | other_length | state_index | seed_length | ...seed | // FUNCTIONS // @@ -385,7 +391,7 @@ function factory( options ) { if ( !isUint32Array( state ) ) { throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + state + '`.' ); } - // TODO: verify state integrity + // TODO: verify state integrity; consider specifying the number of sections in the STATE array as the first element, as this would allow concatenation of PRNG state for PRNGs having different schemas if ( options.copy === false ) { STATE = state; @@ -394,7 +400,7 @@ function factory( options ) { gcopy( state.length, state, 1, STATE, 1 ); } // Create a state "view": - state = new Uint32Array( STATE.buffer, STATE.byteOffset+(1*STATE.BYTES_PER_ELEMENT), N ); + state = new Uint32Array( STATE.buffer, STATE.byteOffset+((STATE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), N ); // Create a seed "view": seed = new Uint32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), state[ SEED_SECTION_OFFSET ] ); @@ -410,10 +416,11 @@ function factory( options ) { seed >>>= 0; // asm type annotation } else if ( isCollection( seed ) && seed.length > 0 ) { slen = seed.length; - STATE = new Uint32Array( 1+N+2+1+slen ); + STATE = new Uint32Array( 1+1+N+2+1+slen ); // Initialize sections: - STATE[ 0 ] = N; + STATE[ 0 ] = NUM_STATE_SECTIONS; + STATE[ STATE_SECTION_OFFSET ] = N; STATE[ OTHER_SECTION_OFFSET ] = 1; STATE[ OTHER_SECTION_OFFSET+1 ] = N; // state index STATE[ SEED_SECTION_OFFSET ] = slen; @@ -425,7 +432,7 @@ function factory( options ) { seed = new Uint32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), slen ); // Initialize the internal PRNG state: - state = new Uint32Array( STATE.buffer, 1*STATE.BYTES_PER_ELEMENT, N ); + state = new Uint32Array( STATE.buffer, STATE.byteOffset+((STATE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), N ); state = createState( state, N, SEED_ARRAY_INIT_STATE ); state = initState( state, N, seed, slen ); } else { @@ -439,17 +446,18 @@ function factory( options ) { seed = randuint32() >>> 0; // asm type annotation } if ( state === void 0 ) { - STATE = new Uint32Array( 1+N+2+2 ); + STATE = new Uint32Array( 1+1+N+2+2 ); // Initialize sections: - STATE[ 0 ] = N; + STATE[ 0 ] = NUM_STATE_SECTIONS; + STATE[ STATE_SECTION_OFFSET ] = N; STATE[ OTHER_SECTION_OFFSET ] = 1; STATE[ OTHER_SECTION_OFFSET+1 ] = N; // state index STATE[ SEED_SECTION_OFFSET ] = 1; STATE[ SEED_SECTION_OFFSET+1 ] = seed; - // Initialize internal PRNG state: - state = new Uint32Array( STATE.buffer, 1*STATE.BYTES_PER_ELEMENT, N ); + // Initialize the internal PRNG state: + state = new Uint32Array( STATE.buffer, STATE.byteOffset+((STATE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), N ); state = createState( state, N, seed ); // Create a "seed" view: @@ -567,7 +575,7 @@ function factory( options ) { } if ( FLG ) { // Create a new state "view": - state = new Uint32Array( STATE.buffer, STATE.byteOffset+(1*STATE.BYTES_PER_ELEMENT), N ); + state = new Uint32Array( STATE.buffer, STATE.byteOffset+((STATE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), N ); // Create a new seed "view": seed = new Uint32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), STATE[ SEED_SECTION_OFFSET ] ); From 51b25c72bdd91cc4acaed62d2d32c1b4dfdb388c Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 10:26:22 -0700 Subject: [PATCH 0658/1062] Rearrange statements --- .../random/base/mt19937/lib/factory.js | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 7321df490a4b..e9c1e881a9de 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -391,7 +391,7 @@ function factory( options ) { if ( !isUint32Array( state ) ) { throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + state + '`.' ); } - // TODO: verify state integrity; consider specifying the number of sections in the STATE array as the first element, as this would allow concatenation of PRNG state for PRNGs having different schemas + // TODO: verify state integrity if ( options.copy === false ) { STATE = state; @@ -416,7 +416,7 @@ function factory( options ) { seed >>>= 0; // asm type annotation } else if ( isCollection( seed ) && seed.length > 0 ) { slen = seed.length; - STATE = new Uint32Array( 1+1+N+2+1+slen ); + STATE = new Uint32Array( 2+N+3+slen ); // Initialize sections: STATE[ 0 ] = NUM_STATE_SECTIONS; @@ -428,11 +428,13 @@ function factory( options ) { // Copy the provided seed array to prevent external mutation, as mutation would lead to an inability to reproduce PRNG values according to the PRNG's stated seed: gcopy.ndarray( slen, seed, 1, 0, STATE, 1, SEED_SECTION_OFFSET+1 ); + // Create a state "view": + state = new Uint32Array( STATE.buffer, STATE.byteOffset+((STATE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), N ); + // Create a seed "view": seed = new Uint32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), slen ); // Initialize the internal PRNG state: - state = new Uint32Array( STATE.buffer, STATE.byteOffset+((STATE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), N ); state = createState( state, N, SEED_ARRAY_INIT_STATE ); state = initState( state, N, seed, slen ); } else { @@ -446,7 +448,7 @@ function factory( options ) { seed = randuint32() >>> 0; // asm type annotation } if ( state === void 0 ) { - STATE = new Uint32Array( 1+1+N+2+2 ); + STATE = new Uint32Array( 2+N+2+2 ); // Initialize sections: STATE[ 0 ] = NUM_STATE_SECTIONS; @@ -456,12 +458,14 @@ function factory( options ) { STATE[ SEED_SECTION_OFFSET ] = 1; STATE[ SEED_SECTION_OFFSET+1 ] = seed; - // Initialize the internal PRNG state: + // Create a state "view": state = new Uint32Array( STATE.buffer, STATE.byteOffset+((STATE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), N ); - state = createState( state, N, seed ); - // Create a "seed" view: + // Create a seed "view": seed = new Uint32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), 1 ); + + // Initialize the internal PRNG state: + state = createState( state, N, seed ); } // Note: property order matters in order to maintain consistency of PRNG "shape" (hidden classes). setReadOnly( mt19937, 'NAME', 'mt19937' ); @@ -539,6 +543,8 @@ function factory( options ) { * * - The first element of each section specifies the section length. The remaining section elements comprise the section contents. * + * - The first element of the PRNG state array is the number of state array sections (i.e., `3`). + * * @private * @returns {Uint32Array} current state */ From a2cc385d8f8076e2ff7ebcc5f41c79850cafb9c1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 10:55:42 -0700 Subject: [PATCH 0659/1062] Add support for verifying state array integrity --- .../random/base/mt19937/lib/factory.js | 52 +++++++++++++++++-- 1 file changed, 47 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index e9c1e881a9de..02715dd0e711 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -148,6 +148,43 @@ var SEED_SECTION_OFFSET = N + 4; // | num_sections | state_length | ...state | o // FUNCTIONS // +/** +* Verifies state array integrity. +* +* @private +* @param {Uint32Array} state - state array +* @param {boolean} FLG - flag indicating whether the state array was provided as an option (true) or an argument (false) +* @returns {(Error|null)} an error or `null` +*/ +function verifyState( state, FLG ) { + var s1; + if ( FLG ) { + s1 = 'option'; + } else { + s1 = 'argument'; + } + // The state array must have a minimum length... + if ( state.length < (2+N+4) ) { + return new RangeError( 'invalid '+s1+'. `state` array has insufficient length.' ); + } + // The first element of the state array must contain the number of sections... + if ( state[ 0 ] !== NUM_STATE_SECTIONS ) { + return new RangeError( 'invalid '+s1+'. `state` array has an incompatible number of sections.' ); + } + // The length of the "state" section must equal `N`... + if ( state[ STATE_SECTION_OFFSET ] !== N ) { + return new RangeError( 'invalid '+s1+'. `state` array has an incompatible state length.' ); + } + // The length of the "other" section must equal `1`... + if ( state[ OTHER_SECTION_OFFSET ] !== 1 ) { + return new RangeError( 'invalid '+s1+'. `state` array has an incompatible section length.' ); + } + // The length of the "seed" section much match the specified length... + if ( state[ SEED_SECTION_OFFSET ] !== state.length-(2+N+3) ) { + return new RangeError( 'invalid '+s1+'. `state` array length is incompatible with seed section length.' ); + } +} + /** * Returns an initial PRNG state. * @@ -376,7 +413,7 @@ function factory( options ) { var state; var seed; var slen; - + var err; if ( arguments.length ) { if ( !isObject( options ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + options + '`.' ); @@ -391,8 +428,10 @@ function factory( options ) { if ( !isUint32Array( state ) ) { throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + state + '`.' ); } - // TODO: verify state integrity - + err = verifyState( state, true ); + if ( err ) { + throw err; + } if ( options.copy === false ) { STATE = state; } else { @@ -562,12 +601,15 @@ function factory( options ) { * @throws {Error} must provide a valid state */ function setState( s ) { + var err; var FLG; if ( !isUint32Array( s ) ) { throw new TypeError( 'invalid argument. Must provide a Uint32Array. Value: `' + s + '`.' ); } - // TODO: verify state integrity - + err = verifyState( s, false ); + if ( err ) { + throw err; + } if ( options.copy === false ) { STATE = s; FLG = true; From a8c5b8eb31de908781563e41794c23befb039464 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 11:07:53 -0700 Subject: [PATCH 0660/1062] Update comment --- lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 02715dd0e711..d8165bdd1245 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -179,7 +179,7 @@ function verifyState( state, FLG ) { if ( state[ OTHER_SECTION_OFFSET ] !== 1 ) { return new RangeError( 'invalid '+s1+'. `state` array has an incompatible section length.' ); } - // The length of the "seed" section much match the specified length... + // The length of the "seed" section much match the empirical length... if ( state[ SEED_SECTION_OFFSET ] !== state.length-(2+N+3) ) { return new RangeError( 'invalid '+s1+'. `state` array length is incompatible with seed section length.' ); } From f63a90c55c7e1e910f28ccc1c2a4f5644094a647 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 11:19:07 -0700 Subject: [PATCH 0661/1062] Return `null` if state array passes integrity test --- lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index d8165bdd1245..315f024fc3ea 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -183,6 +183,7 @@ function verifyState( state, FLG ) { if ( state[ SEED_SECTION_OFFSET ] !== state.length-(2+N+3) ) { return new RangeError( 'invalid '+s1+'. `state` array length is incompatible with seed section length.' ); } + return null; } /** From 6d3b69f9b057b52c53d1cdaf43b94d7d955ca4b3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 11:27:43 -0700 Subject: [PATCH 0662/1062] Add support for a state array schema version --- .../random/base/mt19937/lib/factory.js | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 315f024fc3ea..eb956bf0c1f2 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -133,17 +133,20 @@ var ONE = 0x1 >>> 0; // asm type annotation // Define the maximum normalized pseudorandom double-precision floating-point number: ( (((2^32-1)>>>5)*2^26)+( (2^32-1)>>>6) ) / 2^53 var MAX_NORMALIZED = FLOAT64_MAX_SAFE_INTEGER * FLOAT64_NORMALIZATION_CONSTANT; +// Define the state array schema version: +var STATE_ARRAY_VERSION = 1; // NOTE: anytime the state array schema changes, this value should be incremented!!! + // Define the number of sections in the state array: var NUM_STATE_SECTIONS = 3; // state, other, seed // Define the index offset of the "state" section in the state array: -var STATE_SECTION_OFFSET = 1; // | num_sections | state_length | ...state | other_length | state_index | seed_length | ...seed | +var STATE_SECTION_OFFSET = 2; // | version | num_sections | state_length | ...state | other_length | state_index | seed_length | ...seed | // Define the index offset of the "other" section in the state array: -var OTHER_SECTION_OFFSET = N + 2; // | num_sections | state_length | ...state | other_length | state_index | seed_length | ...seed | +var OTHER_SECTION_OFFSET = N + 3; // | version | num_sections | state_length | ...state | other_length | state_index | seed_length | ...seed | // Define the index offset of the seed section in the state array: -var SEED_SECTION_OFFSET = N + 4; // | num_sections | state_length | ...state | other_length | state_index | seed_length | ...seed | +var SEED_SECTION_OFFSET = N + 5; // | version | num_sections | state_length | ...state | other_length | state_index | seed_length | ...seed | // FUNCTIONS // @@ -167,8 +170,12 @@ function verifyState( state, FLG ) { if ( state.length < (2+N+4) ) { return new RangeError( 'invalid '+s1+'. `state` array has insufficient length.' ); } - // The first element of the state array must contain the number of sections... - if ( state[ 0 ] !== NUM_STATE_SECTIONS ) { + // The first element of the state array must equal the supported state array schema version... + if ( state[ 0 ] !== STATE_ARRAY_VERSION ) { + return new RangeError( 'invalid '+s1+'. `state` array has an incompatible schema version.' ); + } + // The second element of the state array must contain the number of sections... + if ( state[ 1 ] !== NUM_STATE_SECTIONS ) { return new RangeError( 'invalid '+s1+'. `state` array has an incompatible number of sections.' ); } // The length of the "state" section must equal `N`... @@ -456,10 +463,11 @@ function factory( options ) { seed >>>= 0; // asm type annotation } else if ( isCollection( seed ) && seed.length > 0 ) { slen = seed.length; - STATE = new Uint32Array( 2+N+3+slen ); + STATE = new Uint32Array( 3+N+3+slen ); // Initialize sections: - STATE[ 0 ] = NUM_STATE_SECTIONS; + STATE[ 0 ] = STATE_ARRAY_VERSION; + STATE[ 1 ] = NUM_STATE_SECTIONS; STATE[ STATE_SECTION_OFFSET ] = N; STATE[ OTHER_SECTION_OFFSET ] = 1; STATE[ OTHER_SECTION_OFFSET+1 ] = N; // state index @@ -488,10 +496,11 @@ function factory( options ) { seed = randuint32() >>> 0; // asm type annotation } if ( state === void 0 ) { - STATE = new Uint32Array( 2+N+2+2 ); + STATE = new Uint32Array( 3+N+2+2 ); // Initialize sections: - STATE[ 0 ] = NUM_STATE_SECTIONS; + STATE[ 0 ] = STATE_ARRAY_VERSION; + STATE[ 1 ] = NUM_STATE_SECTIONS; STATE[ STATE_SECTION_OFFSET ] = N; STATE[ OTHER_SECTION_OFFSET ] = 1; STATE[ OTHER_SECTION_OFFSET+1 ] = N; // state index From 2c66494b0a74ae92c729e9b5f6c1e5dc19210a02 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 11:33:21 -0700 Subject: [PATCH 0663/1062] Avoid magic numbers --- .../@stdlib/random/base/mt19937/lib/factory.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index eb956bf0c1f2..9b17361af5ee 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -148,6 +148,9 @@ var OTHER_SECTION_OFFSET = N + 3; // | version | num_sections | state_length | . // Define the index offset of the seed section in the state array: var SEED_SECTION_OFFSET = N + 5; // | version | num_sections | state_length | ...state | other_length | state_index | seed_length | ...seed | +// Define the length of the "fixed" length portion of the state array: +var STATE_FIXED_LENGTH = N + 6; // 1 (version) + 1 (num_sections) + 1 (state_length) + N (state) + 1 (other_length) + 1 (state_index) + 1 (seed_length) + // FUNCTIONS // @@ -463,7 +466,7 @@ function factory( options ) { seed >>>= 0; // asm type annotation } else if ( isCollection( seed ) && seed.length > 0 ) { slen = seed.length; - STATE = new Uint32Array( 3+N+3+slen ); + STATE = new Uint32Array( STATE_FIXED_LENGTH+slen ); // Initialize sections: STATE[ 0 ] = STATE_ARRAY_VERSION; @@ -496,7 +499,7 @@ function factory( options ) { seed = randuint32() >>> 0; // asm type annotation } if ( state === void 0 ) { - STATE = new Uint32Array( 3+N+2+2 ); + STATE = new Uint32Array( STATE_FIXED_LENGTH+1 ); // Initialize sections: STATE[ 0 ] = STATE_ARRAY_VERSION; From 76f404a03247508c51ad1c3ad75cfe35798116aa Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 11:34:13 -0700 Subject: [PATCH 0664/1062] Avoid magic numbers --- lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 9b17361af5ee..3301a0267f3d 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -170,7 +170,7 @@ function verifyState( state, FLG ) { s1 = 'argument'; } // The state array must have a minimum length... - if ( state.length < (2+N+4) ) { + if ( state.length < STATE_FIXED_LENGTH+1 ) { return new RangeError( 'invalid '+s1+'. `state` array has insufficient length.' ); } // The first element of the state array must equal the supported state array schema version... From 402af4b2c5a8d465b610d94b37fceb9a61316a5f Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 11:38:10 -0700 Subject: [PATCH 0665/1062] Avoid magic numbers --- lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 3301a0267f3d..a55bc321ff26 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -190,7 +190,7 @@ function verifyState( state, FLG ) { return new RangeError( 'invalid '+s1+'. `state` array has an incompatible section length.' ); } // The length of the "seed" section much match the empirical length... - if ( state[ SEED_SECTION_OFFSET ] !== state.length-(2+N+3) ) { + if ( state[ SEED_SECTION_OFFSET ] !== state.length-STATE_FIXED_LENGTH ) { return new RangeError( 'invalid '+s1+'. `state` array length is incompatible with seed section length.' ); } return null; From 3aa17132ad7205cf872cda9376a91c2ba8ffb30a Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 11:43:17 -0700 Subject: [PATCH 0666/1062] Simplify computation of state properties --- lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index a55bc321ff26..0efd326466a3 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -579,7 +579,7 @@ function factory( options ) { * @returns {PositiveInteger} state size (in bytes) */ function getStateSize() { - return getStateLength() * 4; // 4 bytes per uint32 + return STATE.byteLength; } /** @@ -601,7 +601,7 @@ function factory( options ) { * @returns {Uint32Array} current state */ function getState() { - var len = getStateLength(); + var len = STATE.length; return gcopy( len, STATE, 1, new Uint32Array( len ), 1 ); } From 129abc9c27ae961b3d237627986659cf8224f626 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 11:46:54 -0700 Subject: [PATCH 0667/1062] Fix schema documentation --- .../@stdlib/random/base/mt19937/lib/factory.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 0efd326466a3..643b80673ade 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -587,15 +587,18 @@ function factory( options ) { * * ## Notes * - * - The PRNG state array is comprised of `3` sections: + * - The PRNG state array is comprised of `4` sections: * + * 0. preamble (version + number of sections) * 1. internal PRNG state * 2. auxiliary state information * 3. PRNG seed * - * - The first element of each section specifies the section length. The remaining section elements comprise the section contents. + * - The first element of the PRNG state array is the state array schema version. * - * - The first element of the PRNG state array is the number of state array sections (i.e., `3`). + * - The second element of the PRNG state array is the number of state array sections (i.e., `3`). + * + * - The first element of each section following the preamble specifies the section length. The remaining section elements comprise the section contents. * * @private * @returns {Uint32Array} current state From a861740f0d7a134169894d2b3a1511561212965a Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 11:49:15 -0700 Subject: [PATCH 0668/1062] Update state array schema documentation --- lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 643b80673ade..5c618fe7f915 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -587,7 +587,7 @@ function factory( options ) { * * ## Notes * - * - The PRNG state array is comprised of `4` sections: + * - The PRNG state array is comprised of a preamble followed by `3` sections: * * 0. preamble (version + number of sections) * 1. internal PRNG state From 99a84f4f2ee7788a383e0bae89c9c29674322fbf Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 11:50:27 -0700 Subject: [PATCH 0669/1062] Update schema documentation --- lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 5c618fe7f915..b22e8624ce45 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -594,9 +594,9 @@ function factory( options ) { * 2. auxiliary state information * 3. PRNG seed * - * - The first element of the PRNG state array is the state array schema version. + * - The first element of the PRNG state array preamble is the state array schema version. * - * - The second element of the PRNG state array is the number of state array sections (i.e., `3`). + * - The second element of the PRNG state array preamble is the number of state array sections (i.e., `3`). * * - The first element of each section following the preamble specifies the section length. The remaining section elements comprise the section contents. * From 2fb9584b47edf210d1a003709cf1ec5888fa523c Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 14:30:48 -0700 Subject: [PATCH 0670/1062] Only allow mutating an exposed state if provided a compatible state and fix bug --- .../random/base/mt19937/lib/factory.js | 32 ++++++++----------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index b22e8624ce45..ff21c8db1845 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -611,6 +611,10 @@ function factory( options ) { /** * Sets the PRNG state. * + * ## Notes + * + * - If a PRNG state is "shared" (meaning the state array is externally exposed) and a provided generator state has a different seed length, the PRNG "reclaims" ownership of the state array by internally allocating a new fixed block of memory. Hence, a PRNG does **not** support updating **shared** state when state arrays differ in length. + * * @private * @param {Uint32Array} s - generator state * @throws {TypeError} must provide a `Uint32Array` @@ -618,7 +622,6 @@ function factory( options ) { */ function setState( s ) { var err; - var FLG; if ( !isUint32Array( s ) ) { throw new TypeError( 'invalid argument. Must provide a Uint32Array. Value: `' + s + '`.' ); } @@ -626,24 +629,17 @@ function factory( options ) { if ( err ) { throw err; } - if ( options.copy === false ) { - STATE = s; - FLG = true; - } else { - // Check if we can reuse allocated memory... - if ( s.length !== STATE.length ) { - STATE = new Uint32Array( s.length ); // reallocate - FLG = true; - } - gcopy( s.length, s, 1, STATE, 1 ); + // Check if we can reuse allocated memory... + if ( s.length !== STATE.length ) { + STATE = new Uint32Array( s.length ); // reallocate } - if ( FLG ) { - // Create a new state "view": - state = new Uint32Array( STATE.buffer, STATE.byteOffset+((STATE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), N ); + gcopy( s.length, s, 1, STATE, 1 ); - // Create a new seed "view": - seed = new Uint32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), STATE[ SEED_SECTION_OFFSET ] ); - } + // Create a new state "view": + state = new Uint32Array( STATE.buffer, STATE.byteOffset+((STATE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), N ); + + // Create a new seed "view": + seed = new Uint32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), STATE[ SEED_SECTION_OFFSET ] ); } /** @@ -672,7 +668,7 @@ function factory( options ) { r = state[ i ]; // Update the state index: - state[ N ] = i + 1; + STATE[ OTHER_SECTION_OFFSET+1 ] = i + 1; // Tempering transform to compensate for the reduced dimensionality of equidistribution: r ^= r >>> 11; From 92d83ed4e4e61dcc36a79d976f75ab91039e769a Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 14:32:08 -0700 Subject: [PATCH 0671/1062] Update and add tests --- .../random/base/mt19937/test/test.factory.js | 597 +++++++++++++++++- 1 file changed, 596 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js index 39227864b23d..6c1b0e3347e2 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js @@ -224,6 +224,201 @@ tape( 'if provided a `state` option having an insufficient length, the factory f } }); +tape( 'if provided a `state` option containing an unsupported version, the factory function throws an error', function test( t ) { + var values; + var v; + var i; + + values = []; + + v = new Uint32Array( 631 ); // 624+7 + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 1; // seed length + values.push( v ); + + v = new Uint32Array( 632 ); // >624+7 + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided a `state` option containing an unsupported number of sections, the factory function throws an error', function test( t ) { + var values; + var v; + var i; + + values = []; + + v = new Uint32Array( 631 ); // 624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 9; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 1; // seed length + values.push( v ); + + v = new Uint32Array( 632 ); // >624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 9; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided a `state` option containing an unsupported state length, the factory function throws an error', function test( t ) { + var values; + var v; + var i; + + values = []; + + v = new Uint32Array( 632 ); // >624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 625; // state length + v[ 628 ] = 1; // other length + v[ 629 ] = 1; // value <= 624 + v[ 630 ] = 1; // seed length + values.push( v ); + + v = new Uint32Array( 633 ); // >624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 625; // state length + v[ 628 ] = 1; // other length + v[ 629 ] = 1; // value <= 624 + v[ 630 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided a `state` option containing an unsupported section length, the factory function throws an error', function test( t ) { + var values; + var v; + var i; + + values = []; + + v = new Uint32Array( 632 ); // >624+7 + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 2; // other length + v[ 628 ] = 1; // value <= 624 + v[ 630 ] = 1; // seed length + values.push( v ); + + v = new Uint32Array( 633 ); // >624+7 + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 2; // other length + v[ 628 ] = 1; // value <= 624 + v[ 630 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided a `state` option containing an incompatible seed length, the factory function throws an error', function test( t ) { + var values; + var v; + var i; + + values = []; + + v = new Uint32Array( 631 ); // 624+7 + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 9; // seed length + values.push( v ); + + v = new Uint32Array( 632 ); // >624+7 + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 9; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + tape( 'the function returns a pseudorandom number generator (no options)', function test( t ) { var mt19937; var v; @@ -439,6 +634,206 @@ tape( 'if the `state` property is set to an Uint32Array having an unexpected len } }); +tape( 'if the `state` property is set to an Uint32Array containing an unsupported version, an error is thrown', function test( t ) { + var mt19937; + var values; + var v; + var i; + + mt19937 = factory(); + + values = []; + + v = new Uint32Array( 631 ); // 624+7 + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 1; // seed length + values.push( v ); + + v = new Uint32Array( 632 ); // >624+7 + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + mt19937.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Uint32Array containing an unsupported number of sections, an error is thrown', function test( t ) { + var mt19937; + var values; + var v; + var i; + + mt19937 = factory(); + + values = []; + + v = new Uint32Array( 631 ); // 624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 9; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 1; // seed length + values.push( v ); + + v = new Uint32Array( 632 ); // >624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 9; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + mt19937.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Uint32Array containing an unsupported state length, an error is thrown', function test( t ) { + var mt19937; + var values; + var v; + var i; + + mt19937 = factory(); + + values = []; + + v = new Uint32Array( 632 ); // >624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 625; // state length + v[ 628 ] = 1; // other length + v[ 629 ] = 1; // value <= 624 + v[ 630 ] = 1; // seed length + values.push( v ); + + v = new Uint32Array( 633 ); // >624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 625; // state length + v[ 628 ] = 1; // other length + v[ 629 ] = 1; // value <= 624 + v[ 630 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + mt19937.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Uint32Array containing an unsupported section length, an error is thrown', function test( t ) { + var mt19937; + var values; + var v; + var i; + + mt19937 = factory(); + + values = []; + + v = new Uint32Array( 632 ); // >624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 2; // other length + v[ 628 ] = 1; // value <= 624 + v[ 630 ] = 1; // seed length + values.push( v ); + + v = new Uint32Array( 633 ); // >624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 2; // other length + v[ 628 ] = 1; // value <= 624 + v[ 630 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + mt19937.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Uint32Array containing an incompatible seed length, an error is thrown', function test( t ) { + var mt19937; + var values; + var v; + var i; + + mt19937 = factory(); + + values = []; + + v = new Uint32Array( 631 ); // 624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 9; // seed length + values.push( v ); + + v = new Uint32Array( 632 ); // >624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 9; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + mt19937.state = value; + }; + } +}); + tape( 'attached to the returned function is a `normalized` method for generating pseudorandom numbers strictly between 0 (inclusive) and 1 (exclusive)', function test( t ) { var mt19937; var v; @@ -584,6 +979,206 @@ tape( 'if the `state` property is set to a Uint32Array having an unexpected leng } }); +tape( 'if the `state` property is set to an Uint32Array containing an unsupported version, an error is thrown (normalized)', function test( t ) { + var mt19937; + var values; + var v; + var i; + + mt19937 = factory(); + + values = []; + + v = new Uint32Array( 631 ); // 624+7 + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 1; // seed length + values.push( v ); + + v = new Uint32Array( 632 ); // >624+7 + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + mt19937.normalized.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Uint32Array containing an unsupported number of sections, an error is thrown (normalized)', function test( t ) { + var mt19937; + var values; + var v; + var i; + + mt19937 = factory(); + + values = []; + + v = new Uint32Array( 631 ); // 624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 9; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 1; // seed length + values.push( v ); + + v = new Uint32Array( 632 ); // >624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 9; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + mt19937.normalized.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Uint32Array containing an unsupported state length, an error is thrown (normalized)', function test( t ) { + var mt19937; + var values; + var v; + var i; + + mt19937 = factory(); + + values = []; + + v = new Uint32Array( 632 ); // >624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 625; // state length + v[ 628 ] = 1; // other length + v[ 629 ] = 1; // value <= 624 + v[ 630 ] = 1; // seed length + values.push( v ); + + v = new Uint32Array( 633 ); // >624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 625; // state length + v[ 628 ] = 1; // other length + v[ 629 ] = 1; // value <= 624 + v[ 630 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + mt19937.normalized.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Uint32Array containing an unsupported section length, an error is thrown (normalized)', function test( t ) { + var mt19937; + var values; + var v; + var i; + + mt19937 = factory(); + + values = []; + + v = new Uint32Array( 632 ); // >624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 2; // other length + v[ 628 ] = 1; // value <= 624 + v[ 630 ] = 1; // seed length + values.push( v ); + + v = new Uint32Array( 633 ); // >624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 2; // other length + v[ 628 ] = 1; // value <= 624 + v[ 630 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + mt19937.normalized.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Uint32Array containing an incompatible seed length, an error is thrown (normalized)', function test( t ) { + var mt19937; + var values; + var v; + var i; + + mt19937 = factory(); + + values = []; + + v = new Uint32Array( 631 ); // 624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 9; // seed length + values.push( v ); + + v = new Uint32Array( 632 ); // >624+7 + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 624; // state length + v[ 627 ] = 1; // other length + v[ 628 ] = 1; // value <= 624 + v[ 629 ] = 9; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + mt19937.normalized.state = value; + }; + } +}); + tape( 'the `normalized` method returns pseudorandom numbers drawn from a uniform distribution', opts, function test( t ) { var threshold; var count; @@ -808,7 +1403,7 @@ tape( 'the function supports specifying a shared generator state', function test } // Reset the (shared) state: - rand1.state = state; + rand1.state = new Uint32Array( state ); // Replay previously generated values... j = 0; From bfa6405659f8b9ed1e0d25285b29b02a4cf6719f Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 15:37:25 -0700 Subject: [PATCH 0672/1062] Fix and add tests --- .../@stdlib/random/base/mt19937/README.md | 1 + .../random/base/mt19937/test/test.factory.js | 176 +++++++++++++++--- 2 files changed, 155 insertions(+), 22 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/README.md b/lib/node_modules/@stdlib/random/base/mt19937/README.md index e7289c4a8163..945a89a86239 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/README.md +++ b/lib/node_modules/@stdlib/random/base/mt19937/README.md @@ -232,6 +232,7 @@ var sz = mt19937.byteLength; - [Mersenne Twister][mersenne-twister] is **not** a cryptographically secure PRNG, as the PRNG is based on a linear recursion. Any pseudorandom number sequence generated by a linear recursion is **insecure**, due to the fact that one can predict future generated outputs by observing a sufficiently long subsequence of generated values. - Compared to other PRNGs, [Mersenne Twister][mersenne-twister] has a large state size (`~2.5kB`). Because of the large state size, beware of increased memory consumption when using the `factory()` method to create many [Mersenne Twister][mersenne-twister] PRNGs. When appropriate (e.g., when external state mutation is not a concern), consider sharing PRNG state. +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG internally allocates a new fixed block of memory for storing PRNG state. Hence, a created PRNG does **not** support updating **shared** state when state arrays differ in length. - The PRNG has a period of `2^19937 - 1`. diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js index 6c1b0e3347e2..f0059fbc77ea 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js @@ -29,6 +29,7 @@ var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var Uint32Array = require( '@stdlib/array/uint32' ); var kstest = require( '@stdlib/stats/kstest' ); var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var gcopy = require( '@stdlib/blas/base/gcopy' ); var factory = require( './../lib/factory.js' ); @@ -349,7 +350,7 @@ tape( 'if provided a `state` option containing an unsupported section length, th values = []; v = new Uint32Array( 632 ); // >624+7 - v[ 0 ] = 0; // version + v[ 0 ] = 1; // version v[ 1 ] = 3; // number of sections v[ 2 ] = 624; // state length v[ 627 ] = 2; // other length @@ -358,7 +359,7 @@ tape( 'if provided a `state` option containing an unsupported section length, th values.push( v ); v = new Uint32Array( 633 ); // >624+7 - v[ 0 ] = 0; // version + v[ 0 ] = 1; // version v[ 1 ] = 3; // number of sections v[ 2 ] = 624; // state length v[ 627 ] = 2; // other length @@ -388,7 +389,7 @@ tape( 'if provided a `state` option containing an incompatible seed length, the values = []; v = new Uint32Array( 631 ); // 624+7 - v[ 0 ] = 0; // version + v[ 0 ] = 1; // version v[ 1 ] = 3; // number of sections v[ 2 ] = 624; // state length v[ 627 ] = 1; // other length @@ -397,7 +398,7 @@ tape( 'if provided a `state` option containing an incompatible seed length, the values.push( v ); v = new Uint32Array( 632 ); // >624+7 - v[ 0 ] = 0; // version + v[ 0 ] = 1; // version v[ 1 ] = 3; // number of sections v[ 2 ] = 624; // state length v[ 627 ] = 1; // other length @@ -1387,24 +1388,6 @@ tape( 'the function supports specifying a shared generator state', function test 'copy': false }); - // Replay previously generated values... - j = 0; - for ( i = 0; i < 50; i++ ) { - v1 = rand1(); - v2 = rand2(); - t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); - t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); - j += 2; // stride - } - - // Move to a future state... - for ( i = 0; i < 100; i++ ) { - v2 = rand2(); - } - - // Reset the (shared) state: - rand1.state = new Uint32Array( state ); - // Replay previously generated values... j = 0; for ( i = 0; i < 50; i++ ) { @@ -1506,3 +1489,152 @@ tape( 'the returned function supports setting the generator state (normalized)', } t.end(); }); + +tape( 'the returned function supports setting a compatible shared generator state', function test( t ) { + var mt19937; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + mt19937 = factory(); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + mt19937(); + } + // Capture the current state: + state = mt19937.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( mt19937() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory({ + 'state': shared, + 'copy': false + }); + rand2 = factory({ + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = new Uint32Array( state ); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function does not support setting an incompatible shared generator state', function test( t ) { + var mt19937; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var s; + var i; + var j; + + mt19937 = factory(); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + mt19937(); + } + // Capture the current state: + state = mt19937.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( mt19937() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory({ + 'state': shared, + 'copy': false + }); + rand2 = factory({ + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (*previously* shared) state: + s = new Uint32Array( state.length+1 ); + gcopy( state.length, state, 1, s, 1 ); + s[ s.length-3 ] = 2; + s[ s.length-1 ] = 1234; + rand1.state = s; + + // Attempt to replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + + // `rand1()` state is not affected by `rand2()`: + t.equal( v1, arr[ i ], 'returns expected value. i: '+i+'.' ); + + // `rand2()` state was never reset: + t.notEqual( v2, arr[ j+1 ], 'does not return expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); From 68b9af6c80e36e6d874b9d50ae25d7fec38b4dae Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 15:38:33 -0700 Subject: [PATCH 0673/1062] Disable lint rule --- .../@stdlib/random/base/mt19937/test/test.factory.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js index f0059fbc77ea..734e76dd3b35 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js @@ -1,3 +1,5 @@ +/* eslint-disable max-lines */ + /** * @license Apache-2.0 * From b82e3bbbb39671cc8bfda799502c8b3cc551defd Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 15:40:08 -0700 Subject: [PATCH 0674/1062] Update note --- lib/node_modules/@stdlib/random/base/mt19937/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/README.md b/lib/node_modules/@stdlib/random/base/mt19937/README.md index 945a89a86239..846142e55ef9 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/README.md +++ b/lib/node_modules/@stdlib/random/base/mt19937/README.md @@ -232,7 +232,7 @@ var sz = mt19937.byteLength; - [Mersenne Twister][mersenne-twister] is **not** a cryptographically secure PRNG, as the PRNG is based on a linear recursion. Any pseudorandom number sequence generated by a linear recursion is **insecure**, due to the fact that one can predict future generated outputs by observing a sufficiently long subsequence of generated values. - Compared to other PRNGs, [Mersenne Twister][mersenne-twister] has a large state size (`~2.5kB`). Because of the large state size, beware of increased memory consumption when using the `factory()` method to create many [Mersenne Twister][mersenne-twister] PRNGs. When appropriate (e.g., when external state mutation is not a concern), consider sharing PRNG state. -- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG internally allocates a new fixed block of memory for storing PRNG state. Hence, a created PRNG does **not** support updating **shared** state when state arrays differ in length. +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG internally allocates a new fixed block of memory for storing PRNG state and PRNG state is **no longer** shared. Hence, a created PRNG does **not** support updating **shared** state when state arrays differ in length. - The PRNG has a period of `2^19937 - 1`. From cbea01970e9c14c3506febebd30685acc5174d2d Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 15:41:07 -0700 Subject: [PATCH 0675/1062] Update note --- lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index ff21c8db1845..4f925d3049f7 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -613,7 +613,7 @@ function factory( options ) { * * ## Notes * - * - If a PRNG state is "shared" (meaning the state array is externally exposed) and a provided generator state has a different seed length, the PRNG "reclaims" ownership of the state array by internally allocating a new fixed block of memory. Hence, a PRNG does **not** support updating **shared** state when state arrays differ in length. + * - If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG internally allocates a new fixed block of memory for storing PRNG state and PRNG state is **no longer** shared. Hence, a created PRNG does **not** support updating **shared** state when state arrays differ in length. * * @private * @param {Uint32Array} s - generator state From 6eed977cc2c0c1cfa4c9ee970a47d62f9c8fb468 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 17:30:07 -0700 Subject: [PATCH 0676/1062] Refactor logic for setting PRNG state --- .../@stdlib/random/base/mt19937/README.md | 3 +- .../random/base/mt19937/lib/factory.js | 29 +++- .../random/base/mt19937/test/test.factory.js | 159 +++++++++++++++++- 3 files changed, 181 insertions(+), 10 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/README.md b/lib/node_modules/@stdlib/random/base/mt19937/README.md index 846142e55ef9..93d6b5449330 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/README.md +++ b/lib/node_modules/@stdlib/random/base/mt19937/README.md @@ -232,7 +232,8 @@ var sz = mt19937.byteLength; - [Mersenne Twister][mersenne-twister] is **not** a cryptographically secure PRNG, as the PRNG is based on a linear recursion. Any pseudorandom number sequence generated by a linear recursion is **insecure**, due to the fact that one can predict future generated outputs by observing a sufficiently long subsequence of generated values. - Compared to other PRNGs, [Mersenne Twister][mersenne-twister] has a large state size (`~2.5kB`). Because of the large state size, beware of increased memory consumption when using the `factory()` method to create many [Mersenne Twister][mersenne-twister] PRNGs. When appropriate (e.g., when external state mutation is not a concern), consider sharing PRNG state. -- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG internally allocates a new fixed block of memory for storing PRNG state and PRNG state is **no longer** shared. Hence, a created PRNG does **not** support updating **shared** state when state arrays differ in length. +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). - The PRNG has a period of `2^19937 - 1`. diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 4f925d3049f7..2819060536ba 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -422,20 +422,25 @@ function twist( state ) { function factory( options ) { var STATE; var state; + var opts; var seed; var slen; var err; + + opts = {}; if ( arguments.length ) { if ( !isObject( options ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + options + '`.' ); } if ( hasOwnProp( options, 'copy' ) ) { + opts.copy = options.copy; if ( !isBoolean( options.copy ) ) { throw new TypeError( 'invalid option. `copy` option must be a boolean. Option: `' + options.copy + '`.' ); } } if ( hasOwnProp( options, 'state' ) ) { state = options.state; + opts.state = true; if ( !isUint32Array( state ) ) { throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + state + '`.' ); } @@ -443,7 +448,7 @@ function factory( options ) { if ( err ) { throw err; } - if ( options.copy === false ) { + if ( opts.copy === false ) { STATE = state; } else { STATE = new Uint32Array( state.length ); @@ -459,6 +464,7 @@ function factory( options ) { if ( seed === void 0 ) { if ( hasOwnProp( options, 'seed' ) ) { seed = options.seed; + opts.seed = true; if ( isPositiveInteger( seed ) ) { if ( seed > MAX_SEED ) { throw new RangeError( 'invalid option. `seed` option must be a positive integer less than or equal to the maximum unsigned 32-bit integer. Option: `' + seed + '`.' ); @@ -613,7 +619,8 @@ function factory( options ) { * * ## Notes * - * - If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG internally allocates a new fixed block of memory for storing PRNG state and PRNG state is **no longer** shared. Hence, a created PRNG does **not** support updating **shared** state when state arrays differ in length. + * - If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. + * - If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). * * @private * @param {Uint32Array} s - generator state @@ -629,12 +636,20 @@ function factory( options ) { if ( err ) { throw err; } - // Check if we can reuse allocated memory... - if ( s.length !== STATE.length ) { - STATE = new Uint32Array( s.length ); // reallocate + if ( opts.copy === false ) { + if ( opts.state && s.length === STATE.length ) { + gcopy( s.length, s, 1, STATE, 1 ); // update current shared state + } else { + STATE = s; // point to new shared state + opts.state = true; // setting this flag allows updating a shared state even if a state array was not provided at PRNG creation + } + } else { + // Check if we can reuse allocated memory... + if ( s.length !== STATE.length ) { + STATE = new Uint32Array( s.length ); // reallocate + } + gcopy( s.length, s, 1, STATE, 1 ); } - gcopy( s.length, s, 1, STATE, 1 ); - // Create a new state "view": state = new Uint32Array( STATE.buffer, STATE.byteOffset+((STATE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), N ); diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js index 734e76dd3b35..71e2ac5df970 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js @@ -1432,6 +1432,66 @@ tape( 'the returned function supports setting the generator state', function tes t.end(); }); +tape( 'the returned function supports setting the generator state to a state array having a different length', function test( t ) { + var mt19937; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + + // Seed length: 2 + mt19937 = factory({ + 'seed': [ 1234, 5678 ] + }); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + mt19937(); + } + // Capture the current state: + state = mt19937.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( mt19937() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs having seed lengths equal to 1: + rand1 = factory({ + 'seed': [ 6789 ] + }); + rand2 = factory({ + 'seed': [ 4321 ] + }); + + // Move to future states... + for ( i = 0; i < 100; i++ ) { + v1 = rand1(); + v2 = rand2(); + } + + // Reset the PRNG states: + rand1.state = shared; + rand2.state = shared; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + v1 = rand1(); + t.equal( v1, arr[ i ], 'returns expected value. i: '+i+'.' ); + v2 = rand2(); + t.equal( v2, arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + tape( 'the returned function supports setting the generator state (normalized)', function test( t ) { var mt19937; var state; @@ -1492,7 +1552,7 @@ tape( 'the returned function supports setting the generator state (normalized)', t.end(); }); -tape( 'the returned function supports setting a compatible shared generator state', function test( t ) { +tape( 'the returned function supports setting a shared generator state (same length)', function test( t ) { var mt19937; var shared; var state; @@ -1562,7 +1622,7 @@ tape( 'the returned function supports setting a compatible shared generator stat t.end(); }); -tape( 'the returned function does not support setting an incompatible shared generator state', function test( t ) { +tape( 'the returned function supports setting a shared generator state (different length)', function test( t ) { var mt19937; var shared; var state; @@ -1638,5 +1698,100 @@ tape( 'the returned function does not support setting an incompatible shared gen t.notEqual( v2, arr[ j+1 ], 'does not return expected value. i: '+(j+1)+'.' ); j += 2; // stride } + + // Reset the (*previously* shared) state: + rand2.state = s; + + // Reset to a shared state: + shared = new Uint32Array( state ); + rand1.state = shared; + rand2.state = shared; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting a shared generator state (no initial shared state)', function test( t ) { + var mt19937; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + mt19937 = factory(); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + mt19937(); + } + // Capture the current state: + state = mt19937.state; + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( mt19937() ); + } + + // Create PRNGs using the captured state: + rand1 = factory({ + 'copy': false + }); + rand2 = factory({ + 'copy': false + }); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v1 = rand1(); + v2 = rand2(); + } + + // Reset to a shared state: + rand1.state = shared; + rand2.state = shared; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Reset the (shared) state: + rand1.state = shared; + rand2.state = shared; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } t.end(); }); From 49204edd7fddd6fefef4b4168d4c16cf6f3b7867 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 17:34:16 -0700 Subject: [PATCH 0677/1062] Fix missing empty lines --- .../@stdlib/math/base/special/log1mexp/docs/repl.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/docs/repl.txt b/lib/node_modules/@stdlib/math/base/special/log1mexp/docs/repl.txt index 0ad7ebed3935..e9ef03746fe1 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1mexp/docs/repl.txt +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/docs/repl.txt @@ -1,3 +1,4 @@ + {{alias}}( x ) Evaluates the natural logarithm of `1-exp(x)`. From 21ca8e8fd99aab85481fa57f2ba19619aacddf6a Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 17:35:09 -0700 Subject: [PATCH 0678/1062] Use TeX command and use project pkg --- .../@stdlib/math/base/special/log1mexp/lib/index.js | 2 +- .../@stdlib/math/base/special/log1mexp/lib/main.js | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/index.js b/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/index.js index 9e16abf5710a..a9ff0a98ade1 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/index.js +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/index.js @@ -19,7 +19,7 @@ 'use strict'; /** -* Evaluate the natural logarithm of \\(1-exp(x)\\). +* Evaluate the natural logarithm of \\(1-\exp(x)\\). * * @module @stdlib/math/base/special/log1mexp * diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/main.js b/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/main.js index f50c870df46a..55b3c0ea04a4 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/main.js +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/main.js @@ -25,11 +25,7 @@ var expm1 = require( '@stdlib/math/base/special/expm1' ); var exp = require( '@stdlib/math/base/special/exp' ); var log1p = require( '@stdlib/math/base/special/log1p' ); var ln = require( '@stdlib/math/base/special/ln' ); - - -// VARIABLES // - -var LN2 = ln( 2.0 ); +var LN2 = require( '@stdlib/constants/math/float64-ln2' ); // MAIN // From 3b77db9289ef85d53ae6dd1d9d13dbcf7bf19dcd Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 17:35:50 -0700 Subject: [PATCH 0679/1062] Remove semicolon --- lib/node_modules/@stdlib/math/base/special/log1mexp/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/main.js b/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/main.js index 55b3c0ea04a4..eab3a7e3fbe9 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/main.js +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/main.js @@ -43,7 +43,7 @@ function log1mexp( x ) { if ( 0 < x && x <= LN2 ) { return ln( -expm1( -x ) ); } - // Case: x > ln( 2.0 ); + // Case: x > ln( 2.0 ) return log1p( -exp( -x ) ); } From 7539235c60a00e681b2ef075dbdb0f0919de58e7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 17:36:21 -0700 Subject: [PATCH 0680/1062] Update punctuation --- .../math/base/special/log1mexp/test/fixtures/r/runner.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/test/fixtures/r/runner.R b/lib/node_modules/@stdlib/math/base/special/log1mexp/test/fixtures/r/runner.R index d0497809403f..234a7bc561f7 100755 --- a/lib/node_modules/@stdlib/math/base/special/log1mexp/test/fixtures/r/runner.R +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/test/fixtures/r/runner.R @@ -76,10 +76,10 @@ main <- function() { # Get the directory of this script: source_dir <- dirname( get_script_path() ); - # Generate a sequence of numbers for which to calculate `log1mexp`. + # Generate a sequence of numbers for which to calculate `log1mexp`: data <- seq( 0.1, 100.0, 0.1 ); - # Calculate `log1mexp` for each value. + # Calculate `log1mexp` for each value: expected <- lapply( data, VGAM::log1mexp ); # Convert fixture data to JSON: From 5d9c1cc2ce4298494338cff5d312d73ab0a4164c Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 17:37:50 -0700 Subject: [PATCH 0681/1062] Add missing decimal, fix require path, and use project pkg --- .../@stdlib/math/base/special/log1mexp/lib/main.js | 4 ++-- .../@stdlib/math/base/special/log1mexp/test/test.js | 6 +----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/main.js b/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/main.js index eab3a7e3fbe9..484541b9b2e9 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/main.js +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/main.js @@ -25,7 +25,7 @@ var expm1 = require( '@stdlib/math/base/special/expm1' ); var exp = require( '@stdlib/math/base/special/exp' ); var log1p = require( '@stdlib/math/base/special/log1p' ); var ln = require( '@stdlib/math/base/special/ln' ); -var LN2 = require( '@stdlib/constants/math/float64-ln2' ); +var LN2 = require( '@stdlib/constants/math/float64-ln-two' ); // MAIN // @@ -40,7 +40,7 @@ function log1mexp( x ) { if ( isnan( x ) ) { return NaN; } - if ( 0 < x && x <= LN2 ) { + if ( 0.0 < x && x <= LN2 ) { return ln( -expm1( -x ) ); } // Case: x > ln( 2.0 ) diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/test/test.js b/lib/node_modules/@stdlib/math/base/special/log1mexp/test/test.js index de2c482066b4..74df8bbfa2c2 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1mexp/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/test/test.js @@ -30,6 +30,7 @@ var expm1 = require( '@stdlib/math/base/special/expm1' ); var EPS = require( '@stdlib/constants/math/float64-eps' ); var ln = require( '@stdlib/math/base/special/ln' ); var log1p = require( '@stdlib/math/base/special/log1p' ); +var LN2 = require( '@stdlib/constants/math/float64-ln-two' ); var log1mexp = require( './../lib' ); @@ -38,11 +39,6 @@ var log1mexp = require( './../lib' ); var expected = require( './fixtures/r/expected.json' ); -// VARIABLES // - -var LN2 = ln( 2.0 ); - - // TESTS // tape( 'main export is a function', function test( t ) { From e9ca780f450ecf9519386f568a8b4a37f72389e5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 18:42:25 -0700 Subject: [PATCH 0682/1062] Refactor to compute absolute value and update tests, examples, and docs --- .../math/base/special/log1mexp/README.md | 8 +-- .../special/log1mexp/benchmark/c/benchmark.c | 7 ++- .../math/base/special/log1mexp/docs/repl.txt | 4 +- .../base/special/log1mexp/examples/index.js | 2 +- .../math/base/special/log1mexp/lib/index.js | 2 +- .../math/base/special/log1mexp/lib/main.js | 17 +++-- .../math/base/special/log1mexp/package.json | 2 +- .../log1mexp/test/fixtures/r/data.json | 1 + .../log1mexp/test/fixtures/r/expected.json | 2 +- .../special/log1mexp/test/fixtures/r/runner.R | 8 ++- .../math/base/special/log1mexp/test/test.js | 63 ++++++++++--------- 11 files changed, 67 insertions(+), 49 deletions(-) create mode 100644 lib/node_modules/@stdlib/math/base/special/log1mexp/test/fixtures/r/data.json diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/README.md b/lib/node_modules/@stdlib/math/base/special/log1mexp/README.md index 4a6f3a3980c5..93af83b6988a 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1mexp/README.md +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/README.md @@ -20,7 +20,7 @@ limitations under the License. # log1mexp -> Evaluates the [natural logarithm][@stdlib/math/base/special/ln] of `1 - exp(x)`. +> Evaluates the [natural logarithm][@stdlib/math/base/special/ln] of `1-exp(-|x|)`.
@@ -32,7 +32,7 @@ var log1mexp = require( '@stdlib/math/base/special/log1mexp' ); #### log1mexp( x ) -Evaluates the [natural logarithm][@stdlib/math/base/special/ln] of `1 - exp(x)`. +Evaluates the [natural logarithm][@stdlib/math/base/special/ln] of `1-exp(-|x|)`. ```javascript var y = log1mexp( 0.0 ); @@ -45,7 +45,7 @@ y = log1mexp( 10.0 ); // returns ~-0.00005 y = log1mexp( -10.0 ); -// returns NaN +// returns ~-0.00005 y = log1mexp( NaN ); // returns NaN @@ -65,7 +65,7 @@ y = log1mexp( NaN ); var incrspace = require( '@stdlib/math/utils/incrspace' ); var log1mexp = require( '@stdlib/math/base/special/log1mexp' ); -var x = incrspace( -10.0, 100.0, 1.0 ); +var x = incrspace( -10.0, 10.0, 0.01 ); var v; var i; diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/benchmark/c/benchmark.c b/lib/node_modules/@stdlib/math/base/special/log1mexp/benchmark/c/benchmark.c index e764812335ff..bee903950f6f 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1mexp/benchmark/c/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/benchmark/c/benchmark.c @@ -87,7 +87,7 @@ double rand_double() { } /** -* Calculates the natural logarithm of 1 - exp(x). +* Calculates the natural logarithm of `1-exp(-|x|)`. * * @return calculated value */ @@ -95,7 +95,10 @@ double log1mexp( double x ) { if ( x != x ) { return NAN; } - if ( x < 0 && x <= LN2 ) { + if ( x < 0.0 ) { + x = -x; + } + if ( x > 0.0 && x <= LN2 ) { return log( -expm1( -x ) ); } return log1p( -exp( -x ) ); diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/docs/repl.txt b/lib/node_modules/@stdlib/math/base/special/log1mexp/docs/repl.txt index e9ef03746fe1..58c644a0f9c4 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1mexp/docs/repl.txt +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/docs/repl.txt @@ -1,6 +1,6 @@ {{alias}}( x ) - Evaluates the natural logarithm of `1-exp(x)`. + Evaluates the natural logarithm of `1-exp(-|x|)`. Parameters ---------- @@ -15,7 +15,7 @@ Examples -------- > var y = {{alias}}( -10.0 ) - NaN + ~-0.00005 > y = {{alias}}( 0.0 ) -Infinity > y = {{alias}}( 5.0 ) diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/examples/index.js b/lib/node_modules/@stdlib/math/base/special/log1mexp/examples/index.js index f3eed3d5947f..ed95c98c6839 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1mexp/examples/index.js +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/examples/index.js @@ -21,7 +21,7 @@ var incrspace = require( '@stdlib/math/utils/incrspace' ); var log1mexp = require( './../lib' ); -var x = incrspace( -10.0, 100.0, 1.0 ); +var x = incrspace( -10.0, 10.0, 0.01 ); var v; var i; diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/index.js b/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/index.js index a9ff0a98ade1..343daf8b12f1 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/index.js +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/index.js @@ -19,7 +19,7 @@ 'use strict'; /** -* Evaluate the natural logarithm of \\(1-\exp(x)\\). +* Evaluate the natural logarithm of \\(1-\exp(-|x|)\\). * * @module @stdlib/math/base/special/log1mexp * diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/main.js b/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/main.js index 484541b9b2e9..a20582e06525 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/main.js +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/lib/main.js @@ -25,26 +25,33 @@ var expm1 = require( '@stdlib/math/base/special/expm1' ); var exp = require( '@stdlib/math/base/special/exp' ); var log1p = require( '@stdlib/math/base/special/log1p' ); var ln = require( '@stdlib/math/base/special/ln' ); +var abs = require( '@stdlib/math/base/special/abs' ); var LN2 = require( '@stdlib/constants/math/float64-ln-two' ); +var NINF = require( '@stdlib/constants/math/float64-ninf' ); // MAIN // /** -* Computes ln( 1 - exp(x) ). +* Computes the natural logarithm of \\( 1-\exp(-|x|) \\). * * @param {number} x - input value * @returns {number} function value */ function log1mexp( x ) { + var ax; if ( isnan( x ) ) { return NaN; } - if ( 0.0 < x && x <= LN2 ) { - return ln( -expm1( -x ) ); + if ( x === 0.0 ) { + return NINF; } - // Case: x > ln( 2.0 ) - return log1p( -exp( -x ) ); + ax = abs( x ); + if ( 0.0 < ax && ax <= LN2 ) { + return ln( -expm1( -ax ) ); + } + // Case: |x| > ln(2) + return log1p( -exp( -ax ) ); } diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/package.json b/lib/node_modules/@stdlib/math/base/special/log1mexp/package.json index c7cdb8aa4221..32067a336ef8 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1mexp/package.json +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/math/base/special/log1mexp", "version": "0.0.0", - "description": "Evaluate the natural logarithm of 1 - exp(x).", + "description": "Evaluate the natural logarithm of 1-exp(-|x|).", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/test/fixtures/r/data.json b/lib/node_modules/@stdlib/math/base/special/log1mexp/test/fixtures/r/data.json new file mode 100644 index 000000000000..53bc67ca40e5 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/test/fixtures/r/data.json @@ -0,0 +1 @@ +[0.1,0.11,0.12,0.13,0.14,0.15,0.16,0.17,0.18,0.19,0.2,0.21,0.22,0.23,0.24,0.25,0.26,0.27,0.28,0.29,0.3,0.31,0.32,0.33,0.34,0.35,0.36,0.37,0.38,0.39,0.4,0.41,0.42,0.43,0.44,0.45,0.46,0.47,0.48,0.49,0.5,0.51,0.52,0.53,0.54,0.55,0.56,0.57,0.58,0.59,0.6,0.61,0.62,0.63,0.64,0.65,0.66,0.67,0.68,0.69,0.7,0.71,0.72,0.73,0.74,0.75,0.76,0.77,0.78,0.79,0.8,0.81,0.82,0.83,0.84,0.85,0.86,0.87,0.88,0.89,0.9,0.91,0.92,0.93,0.94,0.95,0.96,0.97,0.98,0.99,1,1.01,1.02,1.03,1.04,1.05,1.06,1.07,1.08,1.09,1.1,1.11,1.12,1.13,1.14,1.15,1.16,1.17,1.18,1.19,1.2,1.21,1.22,1.23,1.24,1.25,1.26,1.27,1.28,1.29,1.3,1.31,1.32,1.33,1.34,1.35,1.36,1.37,1.38,1.39,1.4,1.41,1.42,1.43,1.44,1.45,1.46,1.47,1.48,1.49,1.5,1.51,1.52,1.53,1.54,1.55,1.56,1.57,1.58,1.59,1.6,1.61,1.62,1.63,1.64,1.65,1.66,1.67,1.68,1.69,1.7,1.71,1.72,1.73,1.74,1.75,1.76,1.77,1.78,1.79,1.8,1.81,1.82,1.83,1.84,1.85,1.86,1.87,1.88,1.89,1.9,1.91,1.92,1.93,1.94,1.95,1.96,1.97,1.98,1.99,2,2.01,2.02,2.03,2.04,2.05,2.06,2.07,2.08,2.09,2.1,2.11,2.12,2.13,2.14,2.15,2.16,2.17,2.18,2.19,2.2,2.21,2.22,2.23,2.24,2.25,2.26,2.27,2.28,2.29,2.3,2.31,2.32,2.33,2.34,2.35,2.36,2.37,2.38,2.39,2.4,2.41,2.42,2.43,2.44,2.45,2.46,2.47,2.48,2.49,2.5,2.51,2.52,2.53,2.54,2.55,2.56,2.57,2.58,2.59,2.6,2.61,2.62,2.63,2.64,2.65,2.66,2.67,2.68,2.69,2.7,2.71,2.72,2.73,2.74,2.75,2.76,2.77,2.78,2.79,2.8,2.81,2.82,2.83,2.84,2.85,2.86,2.87,2.88,2.89,2.9,2.91,2.92,2.93,2.94,2.95,2.96,2.97,2.98,2.99,3,3.01,3.02,3.03,3.04,3.05,3.06,3.07,3.08,3.09,3.1,3.11,3.12,3.13,3.14,3.15,3.16,3.17,3.18,3.19,3.2,3.21,3.22,3.23,3.24,3.25,3.26,3.27,3.28,3.29,3.3,3.31,3.32,3.33,3.34,3.35,3.36,3.37,3.38,3.39,3.4,3.41,3.42,3.43,3.44,3.45,3.46,3.47,3.48,3.49,3.5,3.51,3.52,3.53,3.54,3.55,3.56,3.57,3.58,3.59,3.6,3.61,3.62,3.63,3.64,3.65,3.66,3.67,3.68,3.69,3.7,3.71,3.72,3.73,3.74,3.75,3.76,3.77,3.78,3.79,3.8,3.81,3.82,3.83,3.84,3.85,3.86,3.87,3.88,3.89,3.9,3.91,3.92,3.93,3.94,3.95,3.96,3.97,3.98,3.99,4,4.01,4.02,4.03,4.04,4.05,4.06,4.07,4.08,4.09,4.1,4.11,4.12,4.13,4.14,4.15,4.16,4.17,4.18,4.19,4.2,4.21,4.22,4.23,4.24,4.25,4.26,4.27,4.28,4.29,4.3,4.31,4.32,4.33,4.34,4.35,4.36,4.37,4.38,4.39,4.4,4.41,4.42,4.43,4.44,4.45,4.46,4.47,4.48,4.49,4.5,4.51,4.52,4.53,4.54,4.55,4.56,4.57,4.58,4.59,4.6,4.61,4.62,4.63,4.64,4.65,4.66,4.67,4.68,4.69,4.7,4.71,4.72,4.73,4.74,4.75,4.76,4.77,4.78,4.79,4.8,4.81,4.82,4.83,4.84,4.85,4.86,4.87,4.88,4.89,4.9,4.91,4.92,4.93,4.94,4.95,4.96,4.97,4.98,4.99,5,5.01,5.02,5.03,5.04,5.05,5.06,5.07,5.08,5.09,5.1,5.11,5.12,5.13,5.14,5.15,5.16,5.17,5.18,5.19,5.2,5.21,5.22,5.23,5.24,5.25,5.26,5.27,5.28,5.29,5.3,5.31,5.32,5.33,5.34,5.35,5.36,5.37,5.38,5.39,5.4,5.41,5.42,5.43,5.44,5.45,5.46,5.47,5.48,5.49,5.5,5.51,5.52,5.53,5.54,5.55,5.56,5.57,5.58,5.59,5.6,5.61,5.62,5.63,5.64,5.65,5.66,5.67,5.68,5.69,5.7,5.71,5.72,5.73,5.74,5.75,5.76,5.77,5.78,5.79,5.8,5.81,5.82,5.83,5.84,5.85,5.86,5.87,5.88,5.89,5.9,5.91,5.92,5.93,5.94,5.95,5.96,5.97,5.98,5.99,6,6.01,6.02,6.03,6.04,6.05,6.06,6.07,6.08,6.09,6.1,6.11,6.12,6.13,6.14,6.15,6.16,6.17,6.18,6.19,6.2,6.21,6.22,6.23,6.24,6.25,6.26,6.27,6.28,6.29,6.3,6.31,6.32,6.33,6.34,6.35,6.36,6.37,6.38,6.39,6.4,6.41,6.42,6.43,6.44,6.45,6.46,6.47,6.48,6.49,6.5,6.51,6.52,6.53,6.54,6.55,6.56,6.57,6.58,6.59,6.6,6.61,6.62,6.63,6.64,6.65,6.66,6.67,6.68,6.69,6.7,6.71,6.72,6.73,6.74,6.75,6.76,6.77,6.78,6.79,6.8,6.81,6.82,6.83,6.84,6.85,6.86,6.87,6.88,6.89,6.9,6.91,6.92,6.93,6.94,6.95,6.96,6.97,6.98,6.99,7,7.01,7.02,7.03,7.04,7.05,7.06,7.07,7.08,7.09,7.1,7.11,7.12,7.13,7.14,7.15,7.16,7.17,7.18,7.19,7.2,7.21,7.22,7.23,7.24,7.25,7.26,7.27,7.28,7.29,7.3,7.31,7.32,7.33,7.34,7.35,7.36,7.37,7.38,7.39,7.4,7.41,7.42,7.43,7.44,7.45,7.46,7.47,7.48,7.49,7.5,7.51,7.52,7.53,7.54,7.55,7.56,7.57,7.58,7.59,7.6,7.61,7.62,7.63,7.64,7.65,7.66,7.67,7.68,7.69,7.7,7.71,7.72,7.73,7.74,7.75,7.76,7.77,7.78,7.79,7.8,7.81,7.82,7.83,7.84,7.85,7.86,7.87,7.88,7.89,7.9,7.91,7.92,7.93,7.94,7.95,7.96,7.97,7.98,7.99,8,8.01,8.02,8.03,8.04,8.05,8.06,8.07,8.08,8.09,8.1,8.11,8.12,8.13,8.14,8.15,8.16,8.17,8.18,8.19,8.2,8.21,8.22,8.23,8.24,8.25,8.26,8.27,8.28,8.29,8.3,8.31,8.32,8.33,8.34,8.35,8.36,8.37,8.38,8.39,8.4,8.41,8.42,8.43,8.44,8.45,8.46,8.47,8.48,8.49,8.5,8.51,8.52,8.53,8.54,8.55,8.56,8.57,8.58,8.59,8.6,8.61,8.62,8.63,8.64,8.65,8.66,8.67,8.68,8.69,8.7,8.71,8.72,8.73,8.74,8.75,8.76,8.77,8.78,8.79,8.8,8.81,8.82,8.83,8.84,8.85,8.86,8.87,8.88,8.89,8.9,8.91,8.92,8.93,8.94,8.95,8.96,8.97,8.98,8.99,9,9.01,9.02,9.03,9.04,9.05,9.06,9.07,9.08,9.09,9.1,9.11,9.12,9.13,9.14,9.15,9.16,9.17,9.18,9.19,9.2,9.21,9.22,9.23,9.24,9.25,9.26,9.27,9.28,9.29,9.3,9.31,9.32,9.33,9.34,9.35,9.36,9.37,9.38,9.39,9.4,9.41,9.42,9.43,9.44,9.45,9.46,9.47,9.48,9.49,9.5,9.51,9.52,9.53,9.54,9.55,9.56,9.57,9.58,9.59,9.6,9.61,9.62,9.63,9.64,9.65,9.66,9.67,9.68,9.69,9.7,9.71,9.72,9.73,9.74,9.75,9.76,9.77,9.78,9.79,9.8,9.81,9.82,9.83,9.84,9.85,9.86,9.87,9.88,9.89,9.9,9.91,9.92,9.93,9.94,9.95,9.96,9.97,9.98,9.99,10,10.01,10.02,10.03,10.04,10.05,10.06,10.07,10.08,10.09,10.1,10.11,10.12,10.13,10.14,10.15,10.16,10.17,10.18,10.19,10.2,10.21,10.22,10.23,10.24,10.25,10.26,10.27,10.28,10.29,10.3,10.31,10.32,10.33,10.34,10.35,10.36,10.37,10.38,10.39,10.4,10.41,10.42,10.43,10.44,10.45,10.46,10.47,10.48,10.49,10.5,10.51,10.52,10.53,10.54,10.55,10.56,10.57,10.58,10.59,10.6,10.61,10.62,10.63,10.64,10.65,10.66,10.67,10.68,10.69,10.7,10.71,10.72,10.73,10.74,10.75,10.76,10.77,10.78,10.79,10.8,10.81,10.82,10.83,10.84,10.85,10.86,10.87,10.88,10.89,10.9,10.91,10.92,10.93,10.94,10.95,10.96,10.97,10.98,10.99,11,11.01,11.02,11.03,11.04,11.05,11.06,11.07,11.08,11.09,11.1,11.11,11.12,11.13,11.14,11.15,11.16,11.17,11.18,11.19,11.2,11.21,11.22,11.23,11.24,11.25,11.26,11.27,11.28,11.29,11.3,11.31,11.32,11.33,11.34,11.35,11.36,11.37,11.38,11.39,11.4,11.41,11.42,11.43,11.44,11.45,11.46,11.47,11.48,11.49,11.5,11.51,11.52,11.53,11.54,11.55,11.56,11.57,11.58,11.59,11.6,11.61,11.62,11.63,11.64,11.65,11.66,11.67,11.68,11.69,11.7,11.71,11.72,11.73,11.74,11.75,11.76,11.77,11.78,11.79,11.8,11.81,11.82,11.83,11.84,11.85,11.86,11.87,11.88,11.89,11.9,11.91,11.92,11.93,11.94,11.95,11.96,11.97,11.98,11.99,12,12.01,12.02,12.03,12.04,12.05,12.06,12.07,12.08,12.09,12.1,12.11,12.12,12.13,12.14,12.15,12.16,12.17,12.18,12.19,12.2,12.21,12.22,12.23,12.24,12.25,12.26,12.27,12.28,12.29,12.3,12.31,12.32,12.33,12.34,12.35,12.36,12.37,12.38,12.39,12.4,12.41,12.42,12.43,12.44,12.45,12.46,12.47,12.48,12.49,12.5,12.51,12.52,12.53,12.54,12.55,12.56,12.57,12.58,12.59,12.6,12.61,12.62,12.63,12.64,12.65,12.66,12.67,12.68,12.69,12.7,12.71,12.72,12.73,12.74,12.75,12.76,12.77,12.78,12.79,12.8,12.81,12.82,12.83,12.84,12.85,12.86,12.87,12.88,12.89,12.9,12.91,12.92,12.93,12.94,12.95,12.96,12.97,12.98,12.99,13,13.01,13.02,13.03,13.04,13.05,13.06,13.07,13.08,13.09,13.1,13.11,13.12,13.13,13.14,13.15,13.16,13.17,13.18,13.19,13.2,13.21,13.22,13.23,13.24,13.25,13.26,13.27,13.28,13.29,13.3,13.31,13.32,13.33,13.34,13.35,13.36,13.37,13.38,13.39,13.4,13.41,13.42,13.43,13.44,13.45,13.46,13.47,13.48,13.49,13.5,13.51,13.52,13.53,13.54,13.55,13.56,13.57,13.58,13.59,13.6,13.61,13.62,13.63,13.64,13.65,13.66,13.67,13.68,13.69,13.7,13.71,13.72,13.73,13.74,13.75,13.76,13.77,13.78,13.79,13.8,13.81,13.82,13.83,13.84,13.85,13.86,13.87,13.88,13.89,13.9,13.91,13.92,13.93,13.94,13.95,13.96,13.97,13.98,13.99,14,14.01,14.02,14.03,14.04,14.05,14.06,14.07,14.08,14.09,14.1,14.11,14.12,14.13,14.14,14.15,14.16,14.17,14.18,14.19,14.2,14.21,14.22,14.23,14.24,14.25,14.26,14.27,14.28,14.29,14.3,14.31,14.32,14.33,14.34,14.35,14.36,14.37,14.38,14.39,14.4,14.41,14.42,14.43,14.44,14.45,14.46,14.47,14.48,14.49,14.5,14.51,14.52,14.53,14.54,14.55,14.56,14.57,14.58,14.59,14.6,14.61,14.62,14.63,14.64,14.65,14.66,14.67,14.68,14.69,14.7,14.71,14.72,14.73,14.74,14.75,14.76,14.77,14.78,14.79,14.8,14.81,14.82,14.83,14.84,14.85,14.86,14.87,14.88,14.89,14.9,14.91,14.92,14.93,14.94,14.95,14.96,14.97,14.98,14.99,15,15.01,15.02,15.03,15.04,15.05,15.06,15.07,15.08,15.09,15.1,15.11,15.12,15.13,15.14,15.15,15.16,15.17,15.18,15.19,15.2,15.21,15.22,15.23,15.24,15.25,15.26,15.27,15.28,15.29,15.3,15.31,15.32,15.33,15.34,15.35,15.36,15.37,15.38,15.39,15.4,15.41,15.42,15.43,15.44,15.45,15.46,15.47,15.48,15.49,15.5,15.51,15.52,15.53,15.54,15.55,15.56,15.57,15.58,15.59,15.6,15.61,15.62,15.63,15.64,15.65,15.66,15.67,15.68,15.69,15.7,15.71,15.72,15.73,15.74,15.75,15.76,15.77,15.78,15.79,15.8,15.81,15.82,15.83,15.84,15.85,15.86,15.87,15.88,15.89,15.9,15.91,15.92,15.93,15.94,15.95,15.96,15.97,15.98,15.99,16,16.01,16.02,16.03,16.04,16.05,16.06,16.07,16.08,16.09,16.1,16.11,16.12,16.13,16.14,16.15,16.16,16.17,16.18,16.19,16.2,16.21,16.22,16.23,16.24,16.25,16.26,16.27,16.28,16.29,16.3,16.31,16.32,16.33,16.34,16.35,16.36,16.37,16.38,16.39,16.4,16.41,16.42,16.43,16.44,16.45,16.46,16.47,16.48,16.49,16.5,16.51,16.52,16.53,16.54,16.55,16.56,16.57,16.58,16.59,16.6,16.61,16.62,16.63,16.64,16.65,16.66,16.67,16.68,16.69,16.7,16.71,16.72,16.73,16.74,16.75,16.76,16.77,16.78,16.79,16.8,16.81,16.82,16.83,16.84,16.85,16.86,16.87,16.88,16.89,16.9,16.91,16.92,16.93,16.94,16.95,16.96,16.97,16.98,16.99,17,17.01,17.02,17.03,17.04,17.05,17.06,17.07,17.08,17.09,17.1,17.11,17.12,17.13,17.14,17.15,17.16,17.17,17.18,17.19,17.2,17.21,17.22,17.23,17.24,17.25,17.26,17.27,17.28,17.29,17.3,17.31,17.32,17.33,17.34,17.35,17.36,17.37,17.38,17.39,17.4,17.41,17.42,17.43,17.44,17.45,17.46,17.47,17.48,17.49,17.5,17.51,17.52,17.53,17.54,17.55,17.56,17.57,17.58,17.59,17.6,17.61,17.62,17.63,17.64,17.65,17.66,17.67,17.68,17.69,17.7,17.71,17.72,17.73,17.74,17.75,17.76,17.77,17.78,17.79,17.8,17.81,17.82,17.83,17.84,17.85,17.86,17.87,17.88,17.89,17.9,17.91,17.92,17.93,17.94,17.95,17.96,17.97,17.98,17.99,18,18.01,18.02,18.03,18.04,18.05,18.06,18.07,18.08,18.09,18.1,18.11,18.12,18.13,18.14,18.15,18.16,18.17,18.18,18.19,18.2,18.21,18.22,18.23,18.24,18.25,18.26,18.27,18.28,18.29,18.3,18.31,18.32,18.33,18.34,18.35,18.36,18.37,18.38,18.39,18.4,18.41,18.42,18.43,18.44,18.45,18.46,18.47,18.48,18.49,18.5,18.51,18.52,18.53,18.54,18.55,18.56,18.57,18.58,18.59,18.6,18.61,18.62,18.63,18.64,18.65,18.66,18.67,18.68,18.69,18.7,18.71,18.72,18.73,18.74,18.75,18.76,18.77,18.78,18.79,18.8,18.81,18.82,18.83,18.84,18.85,18.86,18.87,18.88,18.89,18.9,18.91,18.92,18.93,18.94,18.95,18.96,18.97,18.98,18.99,19,19.01,19.02,19.03,19.04,19.05,19.06,19.07,19.08,19.09,19.1,19.11,19.12,19.13,19.14,19.15,19.16,19.17,19.18,19.19,19.2,19.21,19.22,19.23,19.24,19.25,19.26,19.27,19.28,19.29,19.3,19.31,19.32,19.33,19.34,19.35,19.36,19.37,19.38,19.39,19.4,19.41,19.42,19.43,19.44,19.45,19.46,19.47,19.48,19.49,19.5,19.51,19.52,19.53,19.54,19.55,19.56,19.57,19.58,19.59,19.6,19.61,19.62,19.63,19.64,19.65,19.66,19.67,19.68,19.69,19.7,19.71,19.72,19.73,19.74,19.75,19.76,19.77,19.78,19.79,19.8,19.81,19.82,19.83,19.84,19.85,19.86,19.87,19.88,19.89,19.9,19.91,19.92,19.93,19.94,19.95,19.96,19.97,19.98,19.99,20,20.01,20.02,20.03,20.04,20.05,20.06,20.07,20.08,20.09,20.1,20.11,20.12,20.13,20.14,20.15,20.16,20.17,20.18,20.19,20.2,20.21,20.22,20.23,20.24,20.25,20.26,20.27,20.28,20.29,20.3,20.31,20.32,20.33,20.34,20.35,20.36,20.37,20.38,20.39,20.4,20.41,20.42,20.43,20.44,20.45,20.46,20.47,20.48,20.49,20.5,20.51,20.52,20.53,20.54,20.55,20.56,20.57,20.58,20.59,20.6,20.61,20.62,20.63,20.64,20.65,20.66,20.67,20.68,20.69,20.7,20.71,20.72,20.73,20.74,20.75,20.76,20.77,20.78,20.79,20.8,20.81,20.82,20.83,20.84,20.85,20.86,20.87,20.88,20.89,20.9,20.91,20.92,20.93,20.94,20.95,20.96,20.97,20.98,20.99,21,21.01,21.02,21.03,21.04,21.05,21.06,21.07,21.08,21.09,21.1,21.11,21.12,21.13,21.14,21.15,21.16,21.17,21.18,21.19,21.2,21.21,21.22,21.23,21.24,21.25,21.26,21.27,21.28,21.29,21.3,21.31,21.32,21.33,21.34,21.35,21.36,21.37,21.38,21.39,21.4,21.41,21.42,21.43,21.44,21.45,21.46,21.47,21.48,21.49,21.5,21.51,21.52,21.53,21.54,21.55,21.56,21.57,21.58,21.59,21.6,21.61,21.62,21.63,21.64,21.65,21.66,21.67,21.68,21.69,21.7,21.71,21.72,21.73,21.74,21.75,21.76,21.77,21.78,21.79,21.8,21.81,21.82,21.83,21.84,21.85,21.86,21.87,21.88,21.89,21.9,21.91,21.92,21.93,21.94,21.95,21.96,21.97,21.98,21.99,22,22.01,22.02,22.03,22.04,22.05,22.06,22.07,22.08,22.09,22.1,22.11,22.12,22.13,22.14,22.15,22.16,22.17,22.18,22.19,22.2,22.21,22.22,22.23,22.24,22.25,22.26,22.27,22.28,22.29,22.3,22.31,22.32,22.33,22.34,22.35,22.36,22.37,22.38,22.39,22.4,22.41,22.42,22.43,22.44,22.45,22.46,22.47,22.48,22.49,22.5,22.51,22.52,22.53,22.54,22.55,22.56,22.57,22.58,22.59,22.6,22.61,22.62,22.63,22.64,22.65,22.66,22.67,22.68,22.69,22.7,22.71,22.72,22.73,22.74,22.75,22.76,22.77,22.78,22.79,22.8,22.81,22.82,22.83,22.84,22.85,22.86,22.87,22.88,22.89,22.9,22.91,22.92,22.93,22.94,22.95,22.96,22.97,22.98,22.99,23,23.01,23.02,23.03,23.04,23.05,23.06,23.07,23.08,23.09,23.1,23.11,23.12,23.13,23.14,23.15,23.16,23.17,23.18,23.19,23.2,23.21,23.22,23.23,23.24,23.25,23.26,23.27,23.28,23.29,23.3,23.31,23.32,23.33,23.34,23.35,23.36,23.37,23.38,23.39,23.4,23.41,23.42,23.43,23.44,23.45,23.46,23.47,23.48,23.49,23.5,23.51,23.52,23.53,23.54,23.55,23.56,23.57,23.58,23.59,23.6,23.61,23.62,23.63,23.64,23.65,23.66,23.67,23.68,23.69,23.7,23.71,23.72,23.73,23.74,23.75,23.76,23.77,23.78,23.79,23.8,23.81,23.82,23.83,23.84,23.85,23.86,23.87,23.88,23.89,23.9,23.91,23.92,23.93,23.94,23.95,23.96,23.97,23.98,23.99,24,24.01,24.02,24.03,24.04,24.05,24.06,24.07,24.08,24.09,24.1,24.11,24.12,24.13,24.14,24.15,24.16,24.17,24.18,24.19,24.2,24.21,24.22,24.23,24.24,24.25,24.26,24.27,24.28,24.29,24.3,24.31,24.32,24.33,24.34,24.35,24.36,24.37,24.38,24.39,24.4,24.41,24.42,24.43,24.44,24.45,24.46,24.47,24.48,24.49,24.5,24.51,24.52,24.53,24.54,24.55,24.56,24.57,24.58,24.59,24.6,24.61,24.62,24.63,24.64,24.65,24.66,24.67,24.68,24.69,24.7,24.71,24.72,24.73,24.74,24.75,24.76,24.77,24.78,24.79,24.8,24.81,24.82,24.83,24.84,24.85,24.86,24.87,24.88,24.89,24.9,24.91,24.92,24.93,24.94,24.95,24.96,24.97,24.98,24.99,25,25.01,25.02,25.03,25.04,25.05,25.06,25.07,25.08,25.09,25.1,25.11,25.12,25.13,25.14,25.15,25.16,25.17,25.18,25.19,25.2,25.21,25.22,25.23,25.24,25.25,25.26,25.27,25.28,25.29,25.3,25.31,25.32,25.33,25.34,25.35,25.36,25.37,25.38,25.39,25.4,25.41,25.42,25.43,25.44,25.45,25.46,25.47,25.48,25.49,25.5,25.51,25.52,25.53,25.54,25.55,25.56,25.57,25.58,25.59,25.6,25.61,25.62,25.63,25.64,25.65,25.66,25.67,25.68,25.69,25.7,25.71,25.72,25.73,25.74,25.75,25.76,25.77,25.78,25.79,25.8,25.81,25.82,25.83,25.84,25.85,25.86,25.87,25.88,25.89,25.9,25.91,25.92,25.93,25.94,25.95,25.96,25.97,25.98,25.99,26,26.01,26.02,26.03,26.04,26.05,26.06,26.07,26.08,26.09,26.1,26.11,26.12,26.13,26.14,26.15,26.16,26.17,26.18,26.19,26.2,26.21,26.22,26.23,26.24,26.25,26.26,26.27,26.28,26.29,26.3,26.31,26.32,26.33,26.34,26.35,26.36,26.37,26.38,26.39,26.4,26.41,26.42,26.43,26.44,26.45,26.46,26.47,26.48,26.49,26.5,26.51,26.52,26.53,26.54,26.55,26.56,26.57,26.58,26.59,26.6,26.61,26.62,26.63,26.64,26.65,26.66,26.67,26.68,26.69,26.7,26.71,26.72,26.73,26.74,26.75,26.76,26.77,26.78,26.79,26.8,26.81,26.82,26.83,26.84,26.85,26.86,26.87,26.88,26.89,26.9,26.91,26.92,26.93,26.94,26.95,26.96,26.97,26.98,26.99,27,27.01,27.02,27.03,27.04,27.05,27.06,27.07,27.08,27.09,27.1,27.11,27.12,27.13,27.14,27.15,27.16,27.17,27.18,27.19,27.2,27.21,27.22,27.23,27.24,27.25,27.26,27.27,27.28,27.29,27.3,27.31,27.32,27.33,27.34,27.35,27.36,27.37,27.38,27.39,27.4,27.41,27.42,27.43,27.44,27.45,27.46,27.47,27.48,27.49,27.5,27.51,27.52,27.53,27.54,27.55,27.56,27.57,27.58,27.59,27.6,27.61,27.62,27.63,27.64,27.65,27.66,27.67,27.68,27.69,27.7,27.71,27.72,27.73,27.74,27.75,27.76,27.77,27.78,27.79,27.8,27.81,27.82,27.83,27.84,27.85,27.86,27.87,27.88,27.89,27.9,27.91,27.92,27.93,27.94,27.95,27.96,27.97,27.98,27.99,28,28.01,28.02,28.03,28.04,28.05,28.06,28.07,28.08,28.09,28.1,28.11,28.12,28.13,28.14,28.15,28.16,28.17,28.18,28.19,28.2,28.21,28.22,28.23,28.24,28.25,28.26,28.27,28.28,28.29,28.3,28.31,28.32,28.33,28.34,28.35,28.36,28.37,28.38,28.39,28.4,28.41,28.42,28.43,28.44,28.45,28.46,28.47,28.48,28.49,28.5,28.51,28.52,28.53,28.54,28.55,28.56,28.57,28.58,28.59,28.6,28.61,28.62,28.63,28.64,28.65,28.66,28.67,28.68,28.69,28.7,28.71,28.72,28.73,28.74,28.75,28.76,28.77,28.78,28.79,28.8,28.81,28.82,28.83,28.84,28.85,28.86,28.87,28.88,28.89,28.9,28.91,28.92,28.93,28.94,28.95,28.96,28.97,28.98,28.99,29,29.01,29.02,29.03,29.04,29.05,29.06,29.07,29.08,29.09,29.1,29.11,29.12,29.13,29.14,29.15,29.16,29.17,29.18,29.19,29.2,29.21,29.22,29.23,29.24,29.25,29.26,29.27,29.28,29.29,29.3,29.31,29.32,29.33,29.34,29.35,29.36,29.37,29.38,29.39,29.4,29.41,29.42,29.43,29.44,29.45,29.46,29.47,29.48,29.49,29.5,29.51,29.52,29.53,29.54,29.55,29.56,29.57,29.58,29.59,29.6,29.61,29.62,29.63,29.64,29.65,29.66,29.67,29.68,29.69,29.7,29.71,29.72,29.73,29.74,29.75,29.76,29.77,29.78,29.79,29.8,29.81,29.82,29.83,29.84,29.85,29.86,29.87,29.88,29.89,29.9,29.91,29.92,29.93,29.94,29.95,29.96,29.97,29.98,29.99,30,30.01,30.02,30.03,30.04,30.05,30.06,30.07,30.08,30.09,30.1,30.11,30.12,30.13,30.14,30.15,30.16,30.17,30.18,30.19,30.2,30.21,30.22,30.23,30.24,30.25,30.26,30.27,30.28,30.29,30.3,30.31,30.32,30.33,30.34,30.35,30.36,30.37,30.38,30.39,30.4,30.41,30.42,30.43,30.44,30.45,30.46,30.47,30.48,30.49,30.5,30.51,30.52,30.53,30.54,30.55,30.56,30.57,30.58,30.59,30.6,30.61,30.62,30.63,30.64,30.65,30.66,30.67,30.68,30.69,30.7,30.71,30.72,30.73,30.74,30.75,30.76,30.77,30.78,30.79,30.8,30.81,30.82,30.83,30.84,30.85,30.86,30.87,30.88,30.89,30.9,30.91,30.92,30.93,30.94,30.95,30.96,30.97,30.98,30.99,31,31.01,31.02,31.03,31.04,31.05,31.06,31.07,31.08,31.09,31.1,31.11,31.12,31.13,31.14,31.15,31.16,31.17,31.18,31.19,31.2,31.21,31.22,31.23,31.24,31.25,31.26,31.27,31.28,31.29,31.3,31.31,31.32,31.33,31.34,31.35,31.36,31.37,31.38,31.39,31.4,31.41,31.42,31.43,31.44,31.45,31.46,31.47,31.48,31.49,31.5,31.51,31.52,31.53,31.54,31.55,31.56,31.57,31.58,31.59,31.6,31.61,31.62,31.63,31.64,31.65,31.66,31.67,31.68,31.69,31.7,31.71,31.72,31.73,31.74,31.75,31.76,31.77,31.78,31.79,31.8,31.81,31.82,31.83,31.84,31.85,31.86,31.87,31.88,31.89,31.9,31.91,31.92,31.93,31.94,31.95,31.96,31.97,31.98,31.99,32,32.01,32.02,32.03,32.04,32.05,32.06,32.07,32.08,32.09,32.1,32.11,32.12,32.13,32.14,32.15,32.16,32.17,32.18,32.19,32.2,32.21,32.22,32.23,32.24,32.25,32.26,32.27,32.28,32.29,32.3,32.31,32.32,32.33,32.34,32.35,32.36,32.37,32.38,32.39,32.4,32.41,32.42,32.43,32.44,32.45,32.46,32.47,32.48,32.49,32.5,32.51,32.52,32.53,32.54,32.55,32.56,32.57,32.58,32.59,32.6,32.61,32.62,32.63,32.64,32.65,32.66,32.67,32.68,32.69,32.7,32.71,32.72,32.73,32.74,32.75,32.76,32.77,32.78,32.79,32.8,32.81,32.82,32.83,32.84,32.85,32.86,32.87,32.88,32.89,32.9,32.91,32.92,32.93,32.94,32.95,32.96,32.97,32.98,32.99,33,33.01,33.02,33.03,33.04,33.05,33.06,33.07,33.08,33.09,33.1,33.11,33.12,33.13,33.14,33.15,33.16,33.17,33.18,33.19,33.2,33.21,33.22,33.23,33.24,33.25,33.26,33.27,33.28,33.29,33.3,33.31,33.32,33.33,33.34,33.35,33.36,33.37,33.38,33.39,33.4,33.41,33.42,33.43,33.44,33.45,33.46,33.47,33.48,33.49,33.5,33.51,33.52,33.53,33.54,33.55,33.56,33.57,33.58,33.59,33.6,33.61,33.62,33.63,33.64,33.65,33.66,33.67,33.68,33.69,33.7,33.71,33.72,33.73,33.74,33.75,33.76,33.77,33.78,33.79,33.8,33.81,33.82,33.83,33.84,33.85,33.86,33.87,33.88,33.89,33.9,33.91,33.92,33.93,33.94,33.95,33.96,33.97,33.98,33.99,34,34.01,34.02,34.03,34.04,34.05,34.06,34.07,34.08,34.09,34.1,34.11,34.12,34.13,34.14,34.15,34.16,34.17,34.18,34.19,34.2,34.21,34.22,34.23,34.24,34.25,34.26,34.27,34.28,34.29,34.3,34.31,34.32,34.33,34.34,34.35,34.36,34.37,34.38,34.39,34.4,34.41,34.42,34.43,34.44,34.45,34.46,34.47,34.48,34.49,34.5,34.51,34.52,34.53,34.54,34.55,34.56,34.57,34.58,34.59,34.6,34.61,34.62,34.63,34.64,34.65,34.66,34.67,34.68,34.69,34.7,34.71,34.72,34.73,34.74,34.75,34.76,34.77,34.78,34.79,34.8,34.81,34.82,34.83,34.84,34.85,34.86,34.87,34.88,34.89,34.9,34.91,34.92,34.93,34.94,34.95,34.96,34.97,34.98,34.99,35,35.01,35.02,35.03,35.04,35.05,35.06,35.07,35.08,35.09,35.1,35.11,35.12,35.13,35.14,35.15,35.16,35.17,35.18,35.19,35.2,35.21,35.22,35.23,35.24,35.25,35.26,35.27,35.28,35.29,35.3,35.31,35.32,35.33,35.34,35.35,35.36,35.37,35.38,35.39,35.4,35.41,35.42,35.43,35.44,35.45,35.46,35.47,35.48,35.49,35.5,35.51,35.52,35.53,35.54,35.55,35.56,35.57,35.58,35.59,35.6,35.61,35.62,35.63,35.64,35.65,35.66,35.67,35.68,35.69,35.7,35.71,35.72,35.73,35.74,35.75,35.76,35.77,35.78,35.79,35.8,35.81,35.82,35.83,35.84,35.85,35.86,35.87,35.88,35.89,35.9,35.91,35.92,35.93,35.94,35.95,35.96,35.97,35.98,35.99,36,36.01,36.02,36.03,36.04,36.05,36.06,36.07,36.08,36.09,36.1,36.11,36.12,36.13,36.14,36.15,36.16,36.17,36.18,36.19,36.2,36.21,36.22,36.23,36.24,36.25,36.26,36.27,36.28,36.29,36.3,36.31,36.32,36.33,36.34,36.35,36.36,36.37,36.38,36.39,36.4,36.41,36.42,36.43,36.44,36.45,36.46,36.47,36.48,36.49,36.5,36.51,36.52,36.53,36.54,36.55,36.56,36.57,36.58,36.59,36.6,36.61,36.62,36.63,36.64,36.65,36.66,36.67,36.68,36.69,36.7,36.71,36.72,36.73,36.74,36.75,36.76,36.77,36.78,36.79,36.8,36.81,36.82,36.83,36.84,36.85,36.86,36.87,36.88,36.89,36.9,36.91,36.92,36.93,36.94,36.95,36.96,36.97,36.98,36.99,37,37.01,37.02,37.03,37.04,37.05,37.06,37.07,37.08,37.09,37.1,37.11,37.12,37.13,37.14,37.15,37.16,37.17,37.18,37.19,37.2,37.21,37.22,37.23,37.24,37.25,37.26,37.27,37.28,37.29,37.3,37.31,37.32,37.33,37.34,37.35,37.36,37.37,37.38,37.39,37.4,37.41,37.42,37.43,37.44,37.45,37.46,37.47,37.48,37.49,37.5,37.51,37.52,37.53,37.54,37.55,37.56,37.57,37.58,37.59,37.6,37.61,37.62,37.63,37.64,37.65,37.66,37.67,37.68,37.69,37.7,37.71,37.72,37.73,37.74,37.75,37.76,37.77,37.78,37.79,37.8,37.81,37.82,37.83,37.84,37.85,37.86,37.87,37.88,37.89,37.9,37.91,37.92,37.93,37.94,37.95,37.96,37.97,37.98,37.99,38,38.01,38.02,38.03,38.04,38.05,38.06,38.07,38.08,38.09,38.1,38.11,38.12,38.13,38.14,38.15,38.16,38.17,38.18,38.19,38.2,38.21,38.22,38.23,38.24,38.25,38.26,38.27,38.28,38.29,38.3,38.31,38.32,38.33,38.34,38.35,38.36,38.37,38.38,38.39,38.4,38.41,38.42,38.43,38.44,38.45,38.46,38.47,38.48,38.49,38.5,38.51,38.52,38.53,38.54,38.55,38.56,38.57,38.58,38.59,38.6,38.61,38.62,38.63,38.64,38.65,38.66,38.67,38.68,38.69,38.7,38.71,38.72,38.73,38.74,38.75,38.76,38.77,38.78,38.79,38.8,38.81,38.82,38.83,38.84,38.85,38.86,38.87,38.88,38.89,38.9,38.91,38.92,38.93,38.94,38.95,38.96,38.97,38.98,38.99,39,39.01,39.02,39.03,39.04,39.05,39.06,39.07,39.08,39.09,39.1,39.11,39.12,39.13,39.14,39.15,39.16,39.17,39.18,39.19,39.2,39.21,39.22,39.23,39.24,39.25,39.26,39.27,39.28,39.29,39.3,39.31,39.32,39.33,39.34,39.35,39.36,39.37,39.38,39.39,39.4,39.41,39.42,39.43,39.44,39.45,39.46,39.47,39.48,39.49,39.5,39.51,39.52,39.53,39.54,39.55,39.56,39.57,39.58,39.59,39.6,39.61,39.62,39.63,39.64,39.65,39.66,39.67,39.68,39.69,39.7,39.71,39.72,39.73,39.74,39.75,39.76,39.77,39.78,39.79,39.8,39.81,39.82,39.83,39.84,39.85,39.86,39.87,39.88,39.89,39.9,39.91,39.92,39.93,39.94,39.95,39.96,39.97,39.98,39.99,40,40.01,40.02,40.03,40.04,40.05,40.06,40.07,40.08,40.09,40.1,40.11,40.12,40.13,40.14,40.15,40.16,40.17,40.18,40.19,40.2,40.21,40.22,40.23,40.24,40.25,40.26,40.27,40.28,40.29,40.3,40.31,40.32,40.33,40.34,40.35,40.36,40.37,40.38,40.39,40.4,40.41,40.42,40.43,40.44,40.45,40.46,40.47,40.48,40.49,40.5,40.51,40.52,40.53,40.54,40.55,40.56,40.57,40.58,40.59,40.6,40.61,40.62,40.63,40.64,40.65,40.66,40.67,40.68,40.69,40.7,40.71,40.72,40.73,40.74,40.75,40.76,40.77,40.78,40.79,40.8,40.81,40.82,40.83,40.84,40.85,40.86,40.87,40.88,40.89,40.9,40.91,40.92,40.93,40.94,40.95,40.96,40.97,40.98,40.99,41,41.01,41.02,41.03,41.04,41.05,41.06,41.07,41.08,41.09,41.1,41.11,41.12,41.13,41.14,41.15,41.16,41.17,41.18,41.19,41.2,41.21,41.22,41.23,41.24,41.25,41.26,41.27,41.28,41.29,41.3,41.31,41.32,41.33,41.34,41.35,41.36,41.37,41.38,41.39,41.4,41.41,41.42,41.43,41.44,41.45,41.46,41.47,41.48,41.49,41.5,41.51,41.52,41.53,41.54,41.55,41.56,41.57,41.58,41.59,41.6,41.61,41.62,41.63,41.64,41.65,41.66,41.67,41.68,41.69,41.7,41.71,41.72,41.73,41.74,41.75,41.76,41.77,41.78,41.79,41.8,41.81,41.82,41.83,41.84,41.85,41.86,41.87,41.88,41.89,41.9,41.91,41.92,41.93,41.94,41.95,41.96,41.97,41.98,41.99,42,42.01,42.02,42.03,42.04,42.05,42.06,42.07,42.08,42.09,42.1,42.11,42.12,42.13,42.14,42.15,42.16,42.17,42.18,42.19,42.2,42.21,42.22,42.23,42.24,42.25,42.26,42.27,42.28,42.29,42.3,42.31,42.32,42.33,42.34,42.35,42.36,42.37,42.38,42.39,42.4,42.41,42.42,42.43,42.44,42.45,42.46,42.47,42.48,42.49,42.5,42.51,42.52,42.53,42.54,42.55,42.56,42.57,42.58,42.59,42.6,42.61,42.62,42.63,42.64,42.65,42.66,42.67,42.68,42.69,42.7,42.71,42.72,42.73,42.74,42.75,42.76,42.77,42.78,42.79,42.8,42.81,42.82,42.83,42.84,42.85,42.86,42.87,42.88,42.89,42.9,42.91,42.92,42.93,42.94,42.95,42.96,42.97,42.98,42.99,43,43.01,43.02,43.03,43.04,43.05,43.06,43.07,43.08,43.09,43.1,43.11,43.12,43.13,43.14,43.15,43.16,43.17,43.18,43.19,43.2,43.21,43.22,43.23,43.24,43.25,43.26,43.27,43.28,43.29,43.3,43.31,43.32,43.33,43.34,43.35,43.36,43.37,43.38,43.39,43.4,43.41,43.42,43.43,43.44,43.45,43.46,43.47,43.48,43.49,43.5,43.51,43.52,43.53,43.54,43.55,43.56,43.57,43.58,43.59,43.6,43.61,43.62,43.63,43.64,43.65,43.66,43.67,43.68,43.69,43.7,43.71,43.72,43.73,43.74,43.75,43.76,43.77,43.78,43.79,43.8,43.81,43.82,43.83,43.84,43.85,43.86,43.87,43.88,43.89,43.9,43.91,43.92,43.93,43.94,43.95,43.96,43.97,43.98,43.99,44,44.01,44.02,44.03,44.04,44.05,44.06,44.07,44.08,44.09,44.1,44.11,44.12,44.13,44.14,44.15,44.16,44.17,44.18,44.19,44.2,44.21,44.22,44.23,44.24,44.25,44.26,44.27,44.28,44.29,44.3,44.31,44.32,44.33,44.34,44.35,44.36,44.37,44.38,44.39,44.4,44.41,44.42,44.43,44.44,44.45,44.46,44.47,44.48,44.49,44.5,44.51,44.52,44.53,44.54,44.55,44.56,44.57,44.58,44.59,44.6,44.61,44.62,44.63,44.64,44.65,44.66,44.67,44.68,44.69,44.7,44.71,44.72,44.73,44.74,44.75,44.76,44.77,44.78,44.79,44.8,44.81,44.82,44.83,44.84,44.85,44.86,44.87,44.88,44.89,44.9,44.91,44.92,44.93,44.94,44.95,44.96,44.97,44.98,44.99,45,45.01,45.02,45.03,45.04,45.05,45.06,45.07,45.08,45.09,45.1,45.11,45.12,45.13,45.14,45.15,45.16,45.17,45.18,45.19,45.2,45.21,45.22,45.23,45.24,45.25,45.26,45.27,45.28,45.29,45.3,45.31,45.32,45.33,45.34,45.35,45.36,45.37,45.38,45.39,45.4,45.41,45.42,45.43,45.44,45.45,45.46,45.47,45.48,45.49,45.5,45.51,45.52,45.53,45.54,45.55,45.56,45.57,45.58,45.59,45.6,45.61,45.62,45.63,45.64,45.65,45.66,45.67,45.68,45.69,45.7,45.71,45.72,45.73,45.74,45.75,45.76,45.77,45.78,45.79,45.8,45.81,45.82,45.83,45.84,45.85,45.86,45.87,45.88,45.89,45.9,45.91,45.92,45.93,45.94,45.95,45.96,45.97,45.98,45.99,46,46.01,46.02,46.03,46.04,46.05,46.06,46.07,46.08,46.09,46.1,46.11,46.12,46.13,46.14,46.15,46.16,46.17,46.18,46.19,46.2,46.21,46.22,46.23,46.24,46.25,46.26,46.27,46.28,46.29,46.3,46.31,46.32,46.33,46.34,46.35,46.36,46.37,46.38,46.39,46.4,46.41,46.42,46.43,46.44,46.45,46.46,46.47,46.48,46.49,46.5,46.51,46.52,46.53,46.54,46.55,46.56,46.57,46.58,46.59,46.6,46.61,46.62,46.63,46.64,46.65,46.66,46.67,46.68,46.69,46.7,46.71,46.72,46.73,46.74,46.75,46.76,46.77,46.78,46.79,46.8,46.81,46.82,46.83,46.84,46.85,46.86,46.87,46.88,46.89,46.9,46.91,46.92,46.93,46.94,46.95,46.96,46.97,46.98,46.99,47,47.01,47.02,47.03,47.04,47.05,47.06,47.07,47.08,47.09,47.1,47.11,47.12,47.13,47.14,47.15,47.16,47.17,47.18,47.19,47.2,47.21,47.22,47.23,47.24,47.25,47.26,47.27,47.28,47.29,47.3,47.31,47.32,47.33,47.34,47.35,47.36,47.37,47.38,47.39,47.4,47.41,47.42,47.43,47.44,47.45,47.46,47.47,47.48,47.49,47.5,47.51,47.52,47.53,47.54,47.55,47.56,47.57,47.58,47.59,47.6,47.61,47.62,47.63,47.64,47.65,47.66,47.67,47.68,47.69,47.7,47.71,47.72,47.73,47.74,47.75,47.76,47.77,47.78,47.79,47.8,47.81,47.82,47.83,47.84,47.85,47.86,47.87,47.88,47.89,47.9,47.91,47.92,47.93,47.94,47.95,47.96,47.97,47.98,47.99,48,48.01,48.02,48.03,48.04,48.05,48.06,48.07,48.08,48.09,48.1,48.11,48.12,48.13,48.14,48.15,48.16,48.17,48.18,48.19,48.2,48.21,48.22,48.23,48.24,48.25,48.26,48.27,48.28,48.29,48.3,48.31,48.32,48.33,48.34,48.35,48.36,48.37,48.38,48.39,48.4,48.41,48.42,48.43,48.44,48.45,48.46,48.47,48.48,48.49,48.5,48.51,48.52,48.53,48.54,48.55,48.56,48.57,48.58,48.59,48.6,48.61,48.62,48.63,48.64,48.65,48.66,48.67,48.68,48.69,48.7,48.71,48.72,48.73,48.74,48.75,48.76,48.77,48.78,48.79,48.8,48.81,48.82,48.83,48.84,48.85,48.86,48.87,48.88,48.89,48.9,48.91,48.92,48.93,48.94,48.95,48.96,48.97,48.98,48.99,49,49.01,49.02,49.03,49.04,49.05,49.06,49.07,49.08,49.09,49.1,49.11,49.12,49.13,49.14,49.15,49.16,49.17,49.18,49.19,49.2,49.21,49.22,49.23,49.24,49.25,49.26,49.27,49.28,49.29,49.3,49.31,49.32,49.33,49.34,49.35,49.36,49.37,49.38,49.39,49.4,49.41,49.42,49.43,49.44,49.45,49.46,49.47,49.48,49.49,49.5,49.51,49.52,49.53,49.54,49.55,49.56,49.57,49.58,49.59,49.6,49.61,49.62,49.63,49.64,49.65,49.66,49.67,49.68,49.69,49.7,49.71,49.72,49.73,49.74,49.75,49.76,49.77,49.78,49.79,49.8,49.81,49.82,49.83,49.84,49.85,49.86,49.87,49.88,49.89,49.9,49.91,49.92,49.93,49.94,49.95,49.96,49.97,49.98,49.99,50,50.01,50.02,50.03,50.04,50.05,50.06,50.07,50.08,50.09,50.1,50.11,50.12,50.13,50.14,50.15,50.16,50.17,50.18,50.19,50.2,50.21,50.22,50.23,50.24,50.25,50.26,50.27,50.28,50.29,50.3,50.31,50.32,50.33,50.34,50.35,50.36,50.37,50.38,50.39,50.4,50.41,50.42,50.43,50.44,50.45,50.46,50.47,50.48,50.49,50.5,50.51,50.52,50.53,50.54,50.55,50.56,50.57,50.58,50.59,50.6,50.61,50.62,50.63,50.64,50.65,50.66,50.67,50.68,50.69,50.7,50.71,50.72,50.73,50.74,50.75,50.76,50.77,50.78,50.79,50.8,50.81,50.82,50.83,50.84,50.85,50.86,50.87,50.88,50.89,50.9,50.91,50.92,50.93,50.94,50.95,50.96,50.97,50.98,50.99,51,51.01,51.02,51.03,51.04,51.05,51.06,51.07,51.08,51.09,51.1,51.11,51.12,51.13,51.14,51.15,51.16,51.17,51.18,51.19,51.2,51.21,51.22,51.23,51.24,51.25,51.26,51.27,51.28,51.29,51.3,51.31,51.32,51.33,51.34,51.35,51.36,51.37,51.38,51.39,51.4,51.41,51.42,51.43,51.44,51.45,51.46,51.47,51.48,51.49,51.5,51.51,51.52,51.53,51.54,51.55,51.56,51.57,51.58,51.59,51.6,51.61,51.62,51.63,51.64,51.65,51.66,51.67,51.68,51.69,51.7,51.71,51.72,51.73,51.74,51.75,51.76,51.77,51.78,51.79,51.8,51.81,51.82,51.83,51.84,51.85,51.86,51.87,51.88,51.89,51.9,51.91,51.92,51.93,51.94,51.95,51.96,51.97,51.98,51.99,52,52.01,52.02,52.03,52.04,52.05,52.06,52.07,52.08,52.09,52.1,52.11,52.12,52.13,52.14,52.15,52.16,52.17,52.18,52.19,52.2,52.21,52.22,52.23,52.24,52.25,52.26,52.27,52.28,52.29,52.3,52.31,52.32,52.33,52.34,52.35,52.36,52.37,52.38,52.39,52.4,52.41,52.42,52.43,52.44,52.45,52.46,52.47,52.48,52.49,52.5,52.51,52.52,52.53,52.54,52.55,52.56,52.57,52.58,52.59,52.6,52.61,52.62,52.63,52.64,52.65,52.66,52.67,52.68,52.69,52.7,52.71,52.72,52.73,52.74,52.75,52.76,52.77,52.78,52.79,52.8,52.81,52.82,52.83,52.84,52.85,52.86,52.87,52.88,52.89,52.9,52.91,52.92,52.93,52.94,52.95,52.96,52.97,52.98,52.99,53,53.01,53.02,53.03,53.04,53.05,53.06,53.07,53.08,53.09,53.1,53.11,53.12,53.13,53.14,53.15,53.16,53.17,53.18,53.19,53.2,53.21,53.22,53.23,53.24,53.25,53.26,53.27,53.28,53.29,53.3,53.31,53.32,53.33,53.34,53.35,53.36,53.37,53.38,53.39,53.4,53.41,53.42,53.43,53.44,53.45,53.46,53.47,53.48,53.49,53.5,53.51,53.52,53.53,53.54,53.55,53.56,53.57,53.58,53.59,53.6,53.61,53.62,53.63,53.64,53.65,53.66,53.67,53.68,53.69,53.7,53.71,53.72,53.73,53.74,53.75,53.76,53.77,53.78,53.79,53.8,53.81,53.82,53.83,53.84,53.85,53.86,53.87,53.88,53.89,53.9,53.91,53.92,53.93,53.94,53.95,53.96,53.97,53.98,53.99,54,54.01,54.02,54.03,54.04,54.05,54.06,54.07,54.08,54.09,54.1,54.11,54.12,54.13,54.14,54.15,54.16,54.17,54.18,54.19,54.2,54.21,54.22,54.23,54.24,54.25,54.26,54.27,54.28,54.29,54.3,54.31,54.32,54.33,54.34,54.35,54.36,54.37,54.38,54.39,54.4,54.41,54.42,54.43,54.44,54.45,54.46,54.47,54.48,54.49,54.5,54.51,54.52,54.53,54.54,54.55,54.56,54.57,54.58,54.59,54.6,54.61,54.62,54.63,54.64,54.65,54.66,54.67,54.68,54.69,54.7,54.71,54.72,54.73,54.74,54.75,54.76,54.77,54.78,54.79,54.8,54.81,54.82,54.83,54.84,54.85,54.86,54.87,54.88,54.89,54.9,54.91,54.92,54.93,54.94,54.95,54.96,54.97,54.98,54.99,55,55.01,55.02,55.03,55.04,55.05,55.06,55.07,55.08,55.09,55.1,55.11,55.12,55.13,55.14,55.15,55.16,55.17,55.18,55.19,55.2,55.21,55.22,55.23,55.24,55.25,55.26,55.27,55.28,55.29,55.3,55.31,55.32,55.33,55.34,55.35,55.36,55.37,55.38,55.39,55.4,55.41,55.42,55.43,55.44,55.45,55.46,55.47,55.48,55.49,55.5,55.51,55.52,55.53,55.54,55.55,55.56,55.57,55.58,55.59,55.6,55.61,55.62,55.63,55.64,55.65,55.66,55.67,55.68,55.69,55.7,55.71,55.72,55.73,55.74,55.75,55.76,55.77,55.78,55.79,55.8,55.81,55.82,55.83,55.84,55.85,55.86,55.87,55.88,55.89,55.9,55.91,55.92,55.93,55.94,55.95,55.96,55.97,55.98,55.99,56,56.01,56.02,56.03,56.04,56.05,56.06,56.07,56.08,56.09,56.1,56.11,56.12,56.13,56.14,56.15,56.16,56.17,56.18,56.19,56.2,56.21,56.22,56.23,56.24,56.25,56.26,56.27,56.28,56.29,56.3,56.31,56.32,56.33,56.34,56.35,56.36,56.37,56.38,56.39,56.4,56.41,56.42,56.43,56.44,56.45,56.46,56.47,56.48,56.49,56.5,56.51,56.52,56.53,56.54,56.55,56.56,56.57,56.58,56.59,56.6,56.61,56.62,56.63,56.64,56.65,56.66,56.67,56.68,56.69,56.7,56.71,56.72,56.73,56.74,56.75,56.76,56.77,56.78,56.79,56.8,56.81,56.82,56.83,56.84,56.85,56.86,56.87,56.88,56.89,56.9,56.91,56.92,56.93,56.94,56.95,56.96,56.97,56.98,56.99,57,57.01,57.02,57.03,57.04,57.05,57.06,57.07,57.08,57.09,57.1,57.11,57.12,57.13,57.14,57.15,57.16,57.17,57.18,57.19,57.2,57.21,57.22,57.23,57.24,57.25,57.26,57.27,57.28,57.29,57.3,57.31,57.32,57.33,57.34,57.35,57.36,57.37,57.38,57.39,57.4,57.41,57.42,57.43,57.44,57.45,57.46,57.47,57.48,57.49,57.5,57.51,57.52,57.53,57.54,57.55,57.56,57.57,57.58,57.59,57.6,57.61,57.62,57.63,57.64,57.65,57.66,57.67,57.68,57.69,57.7,57.71,57.72,57.73,57.74,57.75,57.76,57.77,57.78,57.79,57.8,57.81,57.82,57.83,57.84,57.85,57.86,57.87,57.88,57.89,57.9,57.91,57.92,57.93,57.94,57.95,57.96,57.97,57.98,57.99,58,58.01,58.02,58.03,58.04,58.05,58.06,58.07,58.08,58.09,58.1,58.11,58.12,58.13,58.14,58.15,58.16,58.17,58.18,58.19,58.2,58.21,58.22,58.23,58.24,58.25,58.26,58.27,58.28,58.29,58.3,58.31,58.32,58.33,58.34,58.35,58.36,58.37,58.38,58.39,58.4,58.41,58.42,58.43,58.44,58.45,58.46,58.47,58.48,58.49,58.5,58.51,58.52,58.53,58.54,58.55,58.56,58.57,58.58,58.59,58.6,58.61,58.62,58.63,58.64,58.65,58.66,58.67,58.68,58.69,58.7,58.71,58.72,58.73,58.74,58.75,58.76,58.77,58.78,58.79,58.8,58.81,58.82,58.83,58.84,58.85,58.86,58.87,58.88,58.89,58.9,58.91,58.92,58.93,58.94,58.95,58.96,58.97,58.98,58.99,59,59.01,59.02,59.03,59.04,59.05,59.06,59.07,59.08,59.09,59.1,59.11,59.12,59.13,59.14,59.15,59.16,59.17,59.18,59.19,59.2,59.21,59.22,59.23,59.24,59.25,59.26,59.27,59.28,59.29,59.3,59.31,59.32,59.33,59.34,59.35,59.36,59.37,59.38,59.39,59.4,59.41,59.42,59.43,59.44,59.45,59.46,59.47,59.48,59.49,59.5,59.51,59.52,59.53,59.54,59.55,59.56,59.57,59.58,59.59,59.6,59.61,59.62,59.63,59.64,59.65,59.66,59.67,59.68,59.69,59.7,59.71,59.72,59.73,59.74,59.75,59.76,59.77,59.78,59.79,59.8,59.81,59.82,59.83,59.84,59.85,59.86,59.87,59.88,59.89,59.9,59.91,59.92,59.93,59.94,59.95,59.96,59.97,59.98,59.99,60,60.01,60.02,60.03,60.04,60.05,60.06,60.07,60.08,60.09,60.1,60.11,60.12,60.13,60.14,60.15,60.16,60.17,60.18,60.19,60.2,60.21,60.22,60.23,60.24,60.25,60.26,60.27,60.28,60.29,60.3,60.31,60.32,60.33,60.34,60.35,60.36,60.37,60.38,60.39,60.4,60.41,60.42,60.43,60.44,60.45,60.46,60.47,60.48,60.49,60.5,60.51,60.52,60.53,60.54,60.55,60.56,60.57,60.58,60.59,60.6,60.61,60.62,60.63,60.64,60.65,60.66,60.67,60.68,60.69,60.7,60.71,60.72,60.73,60.74,60.75,60.76,60.77,60.78,60.79,60.8,60.81,60.82,60.83,60.84,60.85,60.86,60.87,60.88,60.89,60.9,60.91,60.92,60.93,60.94,60.95,60.96,60.97,60.98,60.99,61,61.01,61.02,61.03,61.04,61.05,61.06,61.07,61.08,61.09,61.1,61.11,61.12,61.13,61.14,61.15,61.16,61.17,61.18,61.19,61.2,61.21,61.22,61.23,61.24,61.25,61.26,61.27,61.28,61.29,61.3,61.31,61.32,61.33,61.34,61.35,61.36,61.37,61.38,61.39,61.4,61.41,61.42,61.43,61.44,61.45,61.46,61.47,61.48,61.49,61.5,61.51,61.52,61.53,61.54,61.55,61.56,61.57,61.58,61.59,61.6,61.61,61.62,61.63,61.64,61.65,61.66,61.67,61.68,61.69,61.7,61.71,61.72,61.73,61.74,61.75,61.76,61.77,61.78,61.79,61.8,61.81,61.82,61.83,61.84,61.85,61.86,61.87,61.88,61.89,61.9,61.91,61.92,61.93,61.94,61.95,61.96,61.97,61.98,61.99,62,62.01,62.02,62.03,62.04,62.05,62.06,62.07,62.08,62.09,62.1,62.11,62.12,62.13,62.14,62.15,62.16,62.17,62.18,62.19,62.2,62.21,62.22,62.23,62.24,62.25,62.26,62.27,62.28,62.29,62.3,62.31,62.32,62.33,62.34,62.35,62.36,62.37,62.38,62.39,62.4,62.41,62.42,62.43,62.44,62.45,62.46,62.47,62.48,62.49,62.5,62.51,62.52,62.53,62.54,62.55,62.56,62.57,62.58,62.59,62.6,62.61,62.62,62.63,62.64,62.65,62.66,62.67,62.68,62.69,62.7,62.71,62.72,62.73,62.74,62.75,62.76,62.77,62.78,62.79,62.8,62.81,62.82,62.83,62.84,62.85,62.86,62.87,62.88,62.89,62.9,62.91,62.92,62.93,62.94,62.95,62.96,62.97,62.98,62.99,63,63.01,63.02,63.03,63.04,63.05,63.06,63.07,63.08,63.09,63.1,63.11,63.12,63.13,63.14,63.15,63.16,63.17,63.18,63.19,63.2,63.21,63.22,63.23,63.24,63.25,63.26,63.27,63.28,63.29,63.3,63.31,63.32,63.33,63.34,63.35,63.36,63.37,63.38,63.39,63.4,63.41,63.42,63.43,63.44,63.45,63.46,63.47,63.48,63.49,63.5,63.51,63.52,63.53,63.54,63.55,63.56,63.57,63.58,63.59,63.6,63.61,63.62,63.63,63.64,63.65,63.66,63.67,63.68,63.69,63.7,63.71,63.72,63.73,63.74,63.75,63.76,63.77,63.78,63.79,63.8,63.81,63.82,63.83,63.84,63.85,63.86,63.87,63.88,63.89,63.9,63.91,63.92,63.93,63.94,63.95,63.96,63.97,63.98,63.99,64,64.01,64.02,64.03,64.04,64.05,64.06,64.07,64.08,64.09,64.1,64.11,64.12,64.13,64.14,64.15,64.16,64.17,64.18,64.19,64.2,64.21,64.22,64.23,64.24,64.25,64.26,64.27,64.28,64.29,64.3,64.31,64.32,64.33,64.34,64.35,64.36,64.37,64.38,64.39,64.4,64.41,64.42,64.43,64.44,64.45,64.46,64.47,64.48,64.49,64.5,64.51,64.52,64.53,64.54,64.55,64.56,64.57,64.58,64.59,64.6,64.61,64.62,64.63,64.64,64.65,64.66,64.67,64.68,64.69,64.7,64.71,64.72,64.73,64.74,64.75,64.76,64.77,64.78,64.79,64.8,64.81,64.82,64.83,64.84,64.85,64.86,64.87,64.88,64.89,64.9,64.91,64.92,64.93,64.94,64.95,64.96,64.97,64.98,64.99,65,65.01,65.02,65.03,65.04,65.05,65.06,65.07,65.08,65.09,65.1,65.11,65.12,65.13,65.14,65.15,65.16,65.17,65.18,65.19,65.2,65.21,65.22,65.23,65.24,65.25,65.26,65.27,65.28,65.29,65.3,65.31,65.32,65.33,65.34,65.35,65.36,65.37,65.38,65.39,65.4,65.41,65.42,65.43,65.44,65.45,65.46,65.47,65.48,65.49,65.5,65.51,65.52,65.53,65.54,65.55,65.56,65.57,65.58,65.59,65.6,65.61,65.62,65.63,65.64,65.65,65.66,65.67,65.68,65.69,65.7,65.71,65.72,65.73,65.74,65.75,65.76,65.77,65.78,65.79,65.8,65.81,65.82,65.83,65.84,65.85,65.86,65.87,65.88,65.89,65.9,65.91,65.92,65.93,65.94,65.95,65.96,65.97,65.98,65.99,66,66.01,66.02,66.03,66.04,66.05,66.06,66.07,66.08,66.09,66.1,66.11,66.12,66.13,66.14,66.15,66.16,66.17,66.18,66.19,66.2,66.21,66.22,66.23,66.24,66.25,66.26,66.27,66.28,66.29,66.3,66.31,66.32,66.33,66.34,66.35,66.36,66.37,66.38,66.39,66.4,66.41,66.42,66.43,66.44,66.45,66.46,66.47,66.48,66.49,66.5,66.51,66.52,66.53,66.54,66.55,66.56,66.57,66.58,66.59,66.6,66.61,66.62,66.63,66.64,66.65,66.66,66.67,66.68,66.69,66.7,66.71,66.72,66.73,66.74,66.75,66.76,66.77,66.78,66.79,66.8,66.81,66.82,66.83,66.84,66.85,66.86,66.87,66.88,66.89,66.9,66.91,66.92,66.93,66.94,66.95,66.96,66.97,66.98,66.99,67,67.01,67.02,67.03,67.04,67.05,67.06,67.07,67.08,67.09,67.1,67.11,67.12,67.13,67.14,67.15,67.16,67.17,67.18,67.19,67.2,67.21,67.22,67.23,67.24,67.25,67.26,67.27,67.28,67.29,67.3,67.31,67.32,67.33,67.34,67.35,67.36,67.37,67.38,67.39,67.4,67.41,67.42,67.43,67.44,67.45,67.46,67.47,67.48,67.49,67.5,67.51,67.52,67.53,67.54,67.55,67.56,67.57,67.58,67.59,67.6,67.61,67.62,67.63,67.64,67.65,67.66,67.67,67.68,67.69,67.7,67.71,67.72,67.73,67.74,67.75,67.76,67.77,67.78,67.79,67.8,67.81,67.82,67.83,67.84,67.85,67.86,67.87,67.88,67.89,67.9,67.91,67.92,67.93,67.94,67.95,67.96,67.97,67.98,67.99,68,68.01,68.02,68.03,68.04,68.05,68.06,68.07,68.08,68.09,68.1,68.11,68.12,68.13,68.14,68.15,68.16,68.17,68.18,68.19,68.2,68.21,68.22,68.23,68.24,68.25,68.26,68.27,68.28,68.29,68.3,68.31,68.32,68.33,68.34,68.35,68.36,68.37,68.38,68.39,68.4,68.41,68.42,68.43,68.44,68.45,68.46,68.47,68.48,68.49,68.5,68.51,68.52,68.53,68.54,68.55,68.56,68.57,68.58,68.59,68.6,68.61,68.62,68.63,68.64,68.65,68.66,68.67,68.68,68.69,68.7,68.71,68.72,68.73,68.74,68.75,68.76,68.77,68.78,68.79,68.8,68.81,68.82,68.83,68.84,68.85,68.86,68.87,68.88,68.89,68.9,68.91,68.92,68.93,68.94,68.95,68.96,68.97,68.98,68.99,69,69.01,69.02,69.03,69.04,69.05,69.06,69.07,69.08,69.09,69.1,69.11,69.12,69.13,69.14,69.15,69.16,69.17,69.18,69.19,69.2,69.21,69.22,69.23,69.24,69.25,69.26,69.27,69.28,69.29,69.3,69.31,69.32,69.33,69.34,69.35,69.36,69.37,69.38,69.39,69.4,69.41,69.42,69.43,69.44,69.45,69.46,69.47,69.48,69.49,69.5,69.51,69.52,69.53,69.54,69.55,69.56,69.57,69.58,69.59,69.6,69.61,69.62,69.63,69.64,69.65,69.66,69.67,69.68,69.69,69.7,69.71,69.72,69.73,69.74,69.75,69.76,69.77,69.78,69.79,69.8,69.81,69.82,69.83,69.84,69.85,69.86,69.87,69.88,69.89,69.9,69.91,69.92,69.93,69.94,69.95,69.96,69.97,69.98,69.99,70,70.01,70.02,70.03,70.04,70.05,70.06,70.07,70.08,70.09,70.1,70.11,70.12,70.13,70.14,70.15,70.16,70.17,70.18,70.19,70.2,70.21,70.22,70.23,70.24,70.25,70.26,70.27,70.28,70.29,70.3,70.31,70.32,70.33,70.34,70.35,70.36,70.37,70.38,70.39,70.4,70.41,70.42,70.43,70.44,70.45,70.46,70.47,70.48,70.49,70.5,70.51,70.52,70.53,70.54,70.55,70.56,70.57,70.58,70.59,70.6,70.61,70.62,70.63,70.64,70.65,70.66,70.67,70.68,70.69,70.7,70.71,70.72,70.73,70.74,70.75,70.76,70.77,70.78,70.79,70.8,70.81,70.82,70.83,70.84,70.85,70.86,70.87,70.88,70.89,70.9,70.91,70.92,70.93,70.94,70.95,70.96,70.97,70.98,70.99,71,71.01,71.02,71.03,71.04,71.05,71.06,71.07,71.08,71.09,71.1,71.11,71.12,71.13,71.14,71.15,71.16,71.17,71.18,71.19,71.2,71.21,71.22,71.23,71.24,71.25,71.26,71.27,71.28,71.29,71.3,71.31,71.32,71.33,71.34,71.35,71.36,71.37,71.38,71.39,71.4,71.41,71.42,71.43,71.44,71.45,71.46,71.47,71.48,71.49,71.5,71.51,71.52,71.53,71.54,71.55,71.56,71.57,71.58,71.59,71.6,71.61,71.62,71.63,71.64,71.65,71.66,71.67,71.68,71.69,71.7,71.71,71.72,71.73,71.74,71.75,71.76,71.77,71.78,71.79,71.8,71.81,71.82,71.83,71.84,71.85,71.86,71.87,71.88,71.89,71.9,71.91,71.92,71.93,71.94,71.95,71.96,71.97,71.98,71.99,72,72.01,72.02,72.03,72.04,72.05,72.06,72.07,72.08,72.09,72.1,72.11,72.12,72.13,72.14,72.15,72.16,72.17,72.18,72.19,72.2,72.21,72.22,72.23,72.24,72.25,72.26,72.27,72.28,72.29,72.3,72.31,72.32,72.33,72.34,72.35,72.36,72.37,72.38,72.39,72.4,72.41,72.42,72.43,72.44,72.45,72.46,72.47,72.48,72.49,72.5,72.51,72.52,72.53,72.54,72.55,72.56,72.57,72.58,72.59,72.6,72.61,72.62,72.63,72.64,72.65,72.66,72.67,72.68,72.69,72.7,72.71,72.72,72.73,72.74,72.75,72.76,72.77,72.78,72.79,72.8,72.81,72.82,72.83,72.84,72.85,72.86,72.87,72.88,72.89,72.9,72.91,72.92,72.93,72.94,72.95,72.96,72.97,72.98,72.99,73,73.01,73.02,73.03,73.04,73.05,73.06,73.07,73.08,73.09,73.1,73.11,73.12,73.13,73.14,73.15,73.16,73.17,73.18,73.19,73.2,73.21,73.22,73.23,73.24,73.25,73.26,73.27,73.28,73.29,73.3,73.31,73.32,73.33,73.34,73.35,73.36,73.37,73.38,73.39,73.4,73.41,73.42,73.43,73.44,73.45,73.46,73.47,73.48,73.49,73.5,73.51,73.52,73.53,73.54,73.55,73.56,73.57,73.58,73.59,73.6,73.61,73.62,73.63,73.64,73.65,73.66,73.67,73.68,73.69,73.7,73.71,73.72,73.73,73.74,73.75,73.76,73.77,73.78,73.79,73.8,73.81,73.82,73.83,73.84,73.85,73.86,73.87,73.88,73.89,73.9,73.91,73.92,73.93,73.94,73.95,73.96,73.97,73.98,73.99,74,74.01,74.02,74.03,74.04,74.05,74.06,74.07,74.08,74.09,74.1,74.11,74.12,74.13,74.14,74.15,74.16,74.17,74.18,74.19,74.2,74.21,74.22,74.23,74.24,74.25,74.26,74.27,74.28,74.29,74.3,74.31,74.32,74.33,74.34,74.35,74.36,74.37,74.38,74.39,74.4,74.41,74.42,74.43,74.44,74.45,74.46,74.47,74.48,74.49,74.5,74.51,74.52,74.53,74.54,74.55,74.56,74.57,74.58,74.59,74.6,74.61,74.62,74.63,74.64,74.65,74.66,74.67,74.68,74.69,74.7,74.71,74.72,74.73,74.74,74.75,74.76,74.77,74.78,74.79,74.8,74.81,74.82,74.83,74.84,74.85,74.86,74.87,74.88,74.89,74.9,74.91,74.92,74.93,74.94,74.95,74.96,74.97,74.98,74.99,75,75.01,75.02,75.03,75.04,75.05,75.06,75.07,75.08,75.09,75.1,75.11,75.12,75.13,75.14,75.15,75.16,75.17,75.18,75.19,75.2,75.21,75.22,75.23,75.24,75.25,75.26,75.27,75.28,75.29,75.3,75.31,75.32,75.33,75.34,75.35,75.36,75.37,75.38,75.39,75.4,75.41,75.42,75.43,75.44,75.45,75.46,75.47,75.48,75.49,75.5,75.51,75.52,75.53,75.54,75.55,75.56,75.57,75.58,75.59,75.6,75.61,75.62,75.63,75.64,75.65,75.66,75.67,75.68,75.69,75.7,75.71,75.72,75.73,75.74,75.75,75.76,75.77,75.78,75.79,75.8,75.81,75.82,75.83,75.84,75.85,75.86,75.87,75.88,75.89,75.9,75.91,75.92,75.93,75.94,75.95,75.96,75.97,75.98,75.99,76,76.01,76.02,76.03,76.04,76.05,76.06,76.07,76.08,76.09,76.1,76.11,76.12,76.13,76.14,76.15,76.16,76.17,76.18,76.19,76.2,76.21,76.22,76.23,76.24,76.25,76.26,76.27,76.28,76.29,76.3,76.31,76.32,76.33,76.34,76.35,76.36,76.37,76.38,76.39,76.4,76.41,76.42,76.43,76.44,76.45,76.46,76.47,76.48,76.49,76.5,76.51,76.52,76.53,76.54,76.55,76.56,76.57,76.58,76.59,76.6,76.61,76.62,76.63,76.64,76.65,76.66,76.67,76.68,76.69,76.7,76.71,76.72,76.73,76.74,76.75,76.76,76.77,76.78,76.79,76.8,76.81,76.82,76.83,76.84,76.85,76.86,76.87,76.88,76.89,76.9,76.91,76.92,76.93,76.94,76.95,76.96,76.97,76.98,76.99,77,77.01,77.02,77.03,77.04,77.05,77.06,77.07,77.08,77.09,77.1,77.11,77.12,77.13,77.14,77.15,77.16,77.17,77.18,77.19,77.2,77.21,77.22,77.23,77.24,77.25,77.26,77.27,77.28,77.29,77.3,77.31,77.32,77.33,77.34,77.35,77.36,77.37,77.38,77.39,77.4,77.41,77.42,77.43,77.44,77.45,77.46,77.47,77.48,77.49,77.5,77.51,77.52,77.53,77.54,77.55,77.56,77.57,77.58,77.59,77.6,77.61,77.62,77.63,77.64,77.65,77.66,77.67,77.68,77.69,77.7,77.71,77.72,77.73,77.74,77.75,77.76,77.77,77.78,77.79,77.8,77.81,77.82,77.83,77.84,77.85,77.86,77.87,77.88,77.89,77.9,77.91,77.92,77.93,77.94,77.95,77.96,77.97,77.98,77.99,78,78.01,78.02,78.03,78.04,78.05,78.06,78.07,78.08,78.09,78.1,78.11,78.12,78.13,78.14,78.15,78.16,78.17,78.18,78.19,78.2,78.21,78.22,78.23,78.24,78.25,78.26,78.27,78.28,78.29,78.3,78.31,78.32,78.33,78.34,78.35,78.36,78.37,78.38,78.39,78.4,78.41,78.42,78.43,78.44,78.45,78.46,78.47,78.48,78.49,78.5,78.51,78.52,78.53,78.54,78.55,78.56,78.57,78.58,78.59,78.6,78.61,78.62,78.63,78.64,78.65,78.66,78.67,78.68,78.69,78.7,78.71,78.72,78.73,78.74,78.75,78.76,78.77,78.78,78.79,78.8,78.81,78.82,78.83,78.84,78.85,78.86,78.87,78.88,78.89,78.9,78.91,78.92,78.93,78.94,78.95,78.96,78.97,78.98,78.99,79,79.01,79.02,79.03,79.04,79.05,79.06,79.07,79.08,79.09,79.1,79.11,79.12,79.13,79.14,79.15,79.16,79.17,79.18,79.19,79.2,79.21,79.22,79.23,79.24,79.25,79.26,79.27,79.28,79.29,79.3,79.31,79.32,79.33,79.34,79.35,79.36,79.37,79.38,79.39,79.4,79.41,79.42,79.43,79.44,79.45,79.46,79.47,79.48,79.49,79.5,79.51,79.52,79.53,79.54,79.55,79.56,79.57,79.58,79.59,79.6,79.61,79.62,79.63,79.64,79.65,79.66,79.67,79.68,79.69,79.7,79.71,79.72,79.73,79.74,79.75,79.76,79.77,79.78,79.79,79.8,79.81,79.82,79.83,79.84,79.85,79.86,79.87,79.88,79.89,79.9,79.91,79.92,79.93,79.94,79.95,79.96,79.97,79.98,79.99,80,80.01,80.02,80.03,80.04,80.05,80.06,80.07,80.08,80.09,80.1,80.11,80.12,80.13,80.14,80.15,80.16,80.17,80.18,80.19,80.2,80.21,80.22,80.23,80.24,80.25,80.26,80.27,80.28,80.29,80.3,80.31,80.32,80.33,80.34,80.35,80.36,80.37,80.38,80.39,80.4,80.41,80.42,80.43,80.44,80.45,80.46,80.47,80.48,80.49,80.5,80.51,80.52,80.53,80.54,80.55,80.56,80.57,80.58,80.59,80.6,80.61,80.62,80.63,80.64,80.65,80.66,80.67,80.68,80.69,80.7,80.71,80.72,80.73,80.74,80.75,80.76,80.77,80.78,80.79,80.8,80.81,80.82,80.83,80.84,80.85,80.86,80.87,80.88,80.89,80.9,80.91,80.92,80.93,80.94,80.95,80.96,80.97,80.98,80.99,81,81.01,81.02,81.03,81.04,81.05,81.06,81.07,81.08,81.09,81.1,81.11,81.12,81.13,81.14,81.15,81.16,81.17,81.18,81.19,81.2,81.21,81.22,81.23,81.24,81.25,81.26,81.27,81.28,81.29,81.3,81.31,81.32,81.33,81.34,81.35,81.36,81.37,81.38,81.39,81.4,81.41,81.42,81.43,81.44,81.45,81.46,81.47,81.48,81.49,81.5,81.51,81.52,81.53,81.54,81.55,81.56,81.57,81.58,81.59,81.6,81.61,81.62,81.63,81.64,81.65,81.66,81.67,81.68,81.69,81.7,81.71,81.72,81.73,81.74,81.75,81.76,81.77,81.78,81.79,81.8,81.81,81.82,81.83,81.84,81.85,81.86,81.87,81.88,81.89,81.9,81.91,81.92,81.93,81.94,81.95,81.96,81.97,81.98,81.99,82,82.01,82.02,82.03,82.04,82.05,82.06,82.07,82.08,82.09,82.1,82.11,82.12,82.13,82.14,82.15,82.16,82.17,82.18,82.19,82.2,82.21,82.22,82.23,82.24,82.25,82.26,82.27,82.28,82.29,82.3,82.31,82.32,82.33,82.34,82.35,82.36,82.37,82.38,82.39,82.4,82.41,82.42,82.43,82.44,82.45,82.46,82.47,82.48,82.49,82.5,82.51,82.52,82.53,82.54,82.55,82.56,82.57,82.58,82.59,82.6,82.61,82.62,82.63,82.64,82.65,82.66,82.67,82.68,82.69,82.7,82.71,82.72,82.73,82.74,82.75,82.76,82.77,82.78,82.79,82.8,82.81,82.82,82.83,82.84,82.85,82.86,82.87,82.88,82.89,82.9,82.91,82.92,82.93,82.94,82.95,82.96,82.97,82.98,82.99,83,83.01,83.02,83.03,83.04,83.05,83.06,83.07,83.08,83.09,83.1,83.11,83.12,83.13,83.14,83.15,83.16,83.17,83.18,83.19,83.2,83.21,83.22,83.23,83.24,83.25,83.26,83.27,83.28,83.29,83.3,83.31,83.32,83.33,83.34,83.35,83.36,83.37,83.38,83.39,83.4,83.41,83.42,83.43,83.44,83.45,83.46,83.47,83.48,83.49,83.5,83.51,83.52,83.53,83.54,83.55,83.56,83.57,83.58,83.59,83.6,83.61,83.62,83.63,83.64,83.65,83.66,83.67,83.68,83.69,83.7,83.71,83.72,83.73,83.74,83.75,83.76,83.77,83.78,83.79,83.8,83.81,83.82,83.83,83.84,83.85,83.86,83.87,83.88,83.89,83.9,83.91,83.92,83.93,83.94,83.95,83.96,83.97,83.98,83.99,84,84.01,84.02,84.03,84.04,84.05,84.06,84.07,84.08,84.09,84.1,84.11,84.12,84.13,84.14,84.15,84.16,84.17,84.18,84.19,84.2,84.21,84.22,84.23,84.24,84.25,84.26,84.27,84.28,84.29,84.3,84.31,84.32,84.33,84.34,84.35,84.36,84.37,84.38,84.39,84.4,84.41,84.42,84.43,84.44,84.45,84.46,84.47,84.48,84.49,84.5,84.51,84.52,84.53,84.54,84.55,84.56,84.57,84.58,84.59,84.6,84.61,84.62,84.63,84.64,84.65,84.66,84.67,84.68,84.69,84.7,84.71,84.72,84.73,84.74,84.75,84.76,84.77,84.78,84.79,84.8,84.81,84.82,84.83,84.84,84.85,84.86,84.87,84.88,84.89,84.9,84.91,84.92,84.93,84.94,84.95,84.96,84.97,84.98,84.99,85,85.01,85.02,85.03,85.04,85.05,85.06,85.07,85.08,85.09,85.1,85.11,85.12,85.13,85.14,85.15,85.16,85.17,85.18,85.19,85.2,85.21,85.22,85.23,85.24,85.25,85.26,85.27,85.28,85.29,85.3,85.31,85.32,85.33,85.34,85.35,85.36,85.37,85.38,85.39,85.4,85.41,85.42,85.43,85.44,85.45,85.46,85.47,85.48,85.49,85.5,85.51,85.52,85.53,85.54,85.55,85.56,85.57,85.58,85.59,85.6,85.61,85.62,85.63,85.64,85.65,85.66,85.67,85.68,85.69,85.7,85.71,85.72,85.73,85.74,85.75,85.76,85.77,85.78,85.79,85.8,85.81,85.82,85.83,85.84,85.85,85.86,85.87,85.88,85.89,85.9,85.91,85.92,85.93,85.94,85.95,85.96,85.97,85.98,85.99,86,86.01,86.02,86.03,86.04,86.05,86.06,86.07,86.08,86.09,86.1,86.11,86.12,86.13,86.14,86.15,86.16,86.17,86.18,86.19,86.2,86.21,86.22,86.23,86.24,86.25,86.26,86.27,86.28,86.29,86.3,86.31,86.32,86.33,86.34,86.35,86.36,86.37,86.38,86.39,86.4,86.41,86.42,86.43,86.44,86.45,86.46,86.47,86.48,86.49,86.5,86.51,86.52,86.53,86.54,86.55,86.56,86.57,86.58,86.59,86.6,86.61,86.62,86.63,86.64,86.65,86.66,86.67,86.68,86.69,86.7,86.71,86.72,86.73,86.74,86.75,86.76,86.77,86.78,86.79,86.8,86.81,86.82,86.83,86.84,86.85,86.86,86.87,86.88,86.89,86.9,86.91,86.92,86.93,86.94,86.95,86.96,86.97,86.98,86.99,87,87.01,87.02,87.03,87.04,87.05,87.06,87.07,87.08,87.09,87.1,87.11,87.12,87.13,87.14,87.15,87.16,87.17,87.18,87.19,87.2,87.21,87.22,87.23,87.24,87.25,87.26,87.27,87.28,87.29,87.3,87.31,87.32,87.33,87.34,87.35,87.36,87.37,87.38,87.39,87.4,87.41,87.42,87.43,87.44,87.45,87.46,87.47,87.48,87.49,87.5,87.51,87.52,87.53,87.54,87.55,87.56,87.57,87.58,87.59,87.6,87.61,87.62,87.63,87.64,87.65,87.66,87.67,87.68,87.69,87.7,87.71,87.72,87.73,87.74,87.75,87.76,87.77,87.78,87.79,87.8,87.81,87.82,87.83,87.84,87.85,87.86,87.87,87.88,87.89,87.9,87.91,87.92,87.93,87.94,87.95,87.96,87.97,87.98,87.99,88,88.01,88.02,88.03,88.04,88.05,88.06,88.07,88.08,88.09,88.1,88.11,88.12,88.13,88.14,88.15,88.16,88.17,88.18,88.19,88.2,88.21,88.22,88.23,88.24,88.25,88.26,88.27,88.28,88.29,88.3,88.31,88.32,88.33,88.34,88.35,88.36,88.37,88.38,88.39,88.4,88.41,88.42,88.43,88.44,88.45,88.46,88.47,88.48,88.49,88.5,88.51,88.52,88.53,88.54,88.55,88.56,88.57,88.58,88.59,88.6,88.61,88.62,88.63,88.64,88.65,88.66,88.67,88.68,88.69,88.7,88.71,88.72,88.73,88.74,88.75,88.76,88.77,88.78,88.79,88.8,88.81,88.82,88.83,88.84,88.85,88.86,88.87,88.88,88.89,88.9,88.91,88.92,88.93,88.94,88.95,88.96,88.97,88.98,88.99,89,89.01,89.02,89.03,89.04,89.05,89.06,89.07,89.08,89.09,89.1,89.11,89.12,89.13,89.14,89.15,89.16,89.17,89.18,89.19,89.2,89.21,89.22,89.23,89.24,89.25,89.26,89.27,89.28,89.29,89.3,89.31,89.32,89.33,89.34,89.35,89.36,89.37,89.38,89.39,89.4,89.41,89.42,89.43,89.44,89.45,89.46,89.47,89.48,89.49,89.5,89.51,89.52,89.53,89.54,89.55,89.56,89.57,89.58,89.59,89.6,89.61,89.62,89.63,89.64,89.65,89.66,89.67,89.68,89.69,89.7,89.71,89.72,89.73,89.74,89.75,89.76,89.77,89.78,89.79,89.8,89.81,89.82,89.83,89.84,89.85,89.86,89.87,89.88,89.89,89.9,89.91,89.92,89.93,89.94,89.95,89.96,89.97,89.98,89.99,90,90.01,90.02,90.03,90.04,90.05,90.06,90.07,90.08,90.09,90.1,90.11,90.12,90.13,90.14,90.15,90.16,90.17,90.18,90.19,90.2,90.21,90.22,90.23,90.24,90.25,90.26,90.27,90.28,90.29,90.3,90.31,90.32,90.33,90.34,90.35,90.36,90.37,90.38,90.39,90.4,90.41,90.42,90.43,90.44,90.45,90.46,90.47,90.48,90.49,90.5,90.51,90.52,90.53,90.54,90.55,90.56,90.57,90.58,90.59,90.6,90.61,90.62,90.63,90.64,90.65,90.66,90.67,90.68,90.69,90.7,90.71,90.72,90.73,90.74,90.75,90.76,90.77,90.78,90.79,90.8,90.81,90.82,90.83,90.84,90.85,90.86,90.87,90.88,90.89,90.9,90.91,90.92,90.93,90.94,90.95,90.96,90.97,90.98,90.99,91,91.01,91.02,91.03,91.04,91.05,91.06,91.07,91.08,91.09,91.1,91.11,91.12,91.13,91.14,91.15,91.16,91.17,91.18,91.19,91.2,91.21,91.22,91.23,91.24,91.25,91.26,91.27,91.28,91.29,91.3,91.31,91.32,91.33,91.34,91.35,91.36,91.37,91.38,91.39,91.4,91.41,91.42,91.43,91.44,91.45,91.46,91.47,91.48,91.49,91.5,91.51,91.52,91.53,91.54,91.55,91.56,91.57,91.58,91.59,91.6,91.61,91.62,91.63,91.64,91.65,91.66,91.67,91.68,91.69,91.7,91.71,91.72,91.73,91.74,91.75,91.76,91.77,91.78,91.79,91.8,91.81,91.82,91.83,91.84,91.85,91.86,91.87,91.88,91.89,91.9,91.91,91.92,91.93,91.94,91.95,91.96,91.97,91.98,91.99,92,92.01,92.02,92.03,92.04,92.05,92.06,92.07,92.08,92.09,92.1,92.11,92.12,92.13,92.14,92.15,92.16,92.17,92.18,92.19,92.2,92.21,92.22,92.23,92.24,92.25,92.26,92.27,92.28,92.29,92.3,92.31,92.32,92.33,92.34,92.35,92.36,92.37,92.38,92.39,92.4,92.41,92.42,92.43,92.44,92.45,92.46,92.47,92.48,92.49,92.5,92.51,92.52,92.53,92.54,92.55,92.56,92.57,92.58,92.59,92.6,92.61,92.62,92.63,92.64,92.65,92.66,92.67,92.68,92.69,92.7,92.71,92.72,92.73,92.74,92.75,92.76,92.77,92.78,92.79,92.8,92.81,92.82,92.83,92.84,92.85,92.86,92.87,92.88,92.89,92.9,92.91,92.92,92.93,92.94,92.95,92.96,92.97,92.98,92.99,93,93.01,93.02,93.03,93.04,93.05,93.06,93.07,93.08,93.09,93.1,93.11,93.12,93.13,93.14,93.15,93.16,93.17,93.18,93.19,93.2,93.21,93.22,93.23,93.24,93.25,93.26,93.27,93.28,93.29,93.3,93.31,93.32,93.33,93.34,93.35,93.36,93.37,93.38,93.39,93.4,93.41,93.42,93.43,93.44,93.45,93.46,93.47,93.48,93.49,93.5,93.51,93.52,93.53,93.54,93.55,93.56,93.57,93.58,93.59,93.6,93.61,93.62,93.63,93.64,93.65,93.66,93.67,93.68,93.69,93.7,93.71,93.72,93.73,93.74,93.75,93.76,93.77,93.78,93.79,93.8,93.81,93.82,93.83,93.84,93.85,93.86,93.87,93.88,93.89,93.9,93.91,93.92,93.93,93.94,93.95,93.96,93.97,93.98,93.99,94,94.01,94.02,94.03,94.04,94.05,94.06,94.07,94.08,94.09,94.1,94.11,94.12,94.13,94.14,94.15,94.16,94.17,94.18,94.19,94.2,94.21,94.22,94.23,94.24,94.25,94.26,94.27,94.28,94.29,94.3,94.31,94.32,94.33,94.34,94.35,94.36,94.37,94.38,94.39,94.4,94.41,94.42,94.43,94.44,94.45,94.46,94.47,94.48,94.49,94.5,94.51,94.52,94.53,94.54,94.55,94.56,94.57,94.58,94.59,94.6,94.61,94.62,94.63,94.64,94.65,94.66,94.67,94.68,94.69,94.7,94.71,94.72,94.73,94.74,94.75,94.76,94.77,94.78,94.79,94.8,94.81,94.82,94.83,94.84,94.85,94.86,94.87,94.88,94.89,94.9,94.91,94.92,94.93,94.94,94.95,94.96,94.97,94.98,94.99,95,95.01,95.02,95.03,95.04,95.05,95.06,95.07,95.08,95.09,95.1,95.11,95.12,95.13,95.14,95.15,95.16,95.17,95.18,95.19,95.2,95.21,95.22,95.23,95.24,95.25,95.26,95.27,95.28,95.29,95.3,95.31,95.32,95.33,95.34,95.35,95.36,95.37,95.38,95.39,95.4,95.41,95.42,95.43,95.44,95.45,95.46,95.47,95.48,95.49,95.5,95.51,95.52,95.53,95.54,95.55,95.56,95.57,95.58,95.59,95.6,95.61,95.62,95.63,95.64,95.65,95.66,95.67,95.68,95.69,95.7,95.71,95.72,95.73,95.74,95.75,95.76,95.77,95.78,95.79,95.8,95.81,95.82,95.83,95.84,95.85,95.86,95.87,95.88,95.89,95.9,95.91,95.92,95.93,95.94,95.95,95.96,95.97,95.98,95.99,96,96.01,96.02,96.03,96.04,96.05,96.06,96.07,96.08,96.09,96.1,96.11,96.12,96.13,96.14,96.15,96.16,96.17,96.18,96.19,96.2,96.21,96.22,96.23,96.24,96.25,96.26,96.27,96.28,96.29,96.3,96.31,96.32,96.33,96.34,96.35,96.36,96.37,96.38,96.39,96.4,96.41,96.42,96.43,96.44,96.45,96.46,96.47,96.48,96.49,96.5,96.51,96.52,96.53,96.54,96.55,96.56,96.57,96.58,96.59,96.6,96.61,96.62,96.63,96.64,96.65,96.66,96.67,96.68,96.69,96.7,96.71,96.72,96.73,96.74,96.75,96.76,96.77,96.78,96.79,96.8,96.81,96.82,96.83,96.84,96.85,96.86,96.87,96.88,96.89,96.9,96.91,96.92,96.93,96.94,96.95,96.96,96.97,96.98,96.99,97,97.01,97.02,97.03,97.04,97.05,97.06,97.07,97.08,97.09,97.1,97.11,97.12,97.13,97.14,97.15,97.16,97.17,97.18,97.19,97.2,97.21,97.22,97.23,97.24,97.25,97.26,97.27,97.28,97.29,97.3,97.31,97.32,97.33,97.34,97.35,97.36,97.37,97.38,97.39,97.4,97.41,97.42,97.43,97.44,97.45,97.46,97.47,97.48,97.49,97.5,97.51,97.52,97.53,97.54,97.55,97.56,97.57,97.58,97.59,97.6,97.61,97.62,97.63,97.64,97.65,97.66,97.67,97.68,97.69,97.7,97.71,97.72,97.73,97.74,97.75,97.76,97.77,97.78,97.79,97.8,97.81,97.82,97.83,97.84,97.85,97.86,97.87,97.88,97.89,97.9,97.91,97.92,97.93,97.94,97.95,97.96,97.97,97.98,97.99,98,98.01,98.02,98.03,98.04,98.05,98.06,98.07,98.08,98.09,98.1,98.11,98.12,98.13,98.14,98.15,98.16,98.17,98.18,98.19,98.2,98.21,98.22,98.23,98.24,98.25,98.26,98.27,98.28,98.29,98.3,98.31,98.32,98.33,98.34,98.35,98.36,98.37,98.38,98.39,98.4,98.41,98.42,98.43,98.44,98.45,98.46,98.47,98.48,98.49,98.5,98.51,98.52,98.53,98.54,98.55,98.56,98.57,98.58,98.59,98.6,98.61,98.62,98.63,98.64,98.65,98.66,98.67,98.68,98.69,98.7,98.71,98.72,98.73,98.74,98.75,98.76,98.77,98.78,98.79,98.8,98.81,98.82,98.83,98.84,98.85,98.86,98.87,98.88,98.89,98.9,98.91,98.92,98.93,98.94,98.95,98.96,98.97,98.98,98.99,99,99.01,99.02,99.03,99.04,99.05,99.06,99.07,99.08,99.09,99.1,99.11,99.12,99.13,99.14,99.15,99.16,99.17,99.18,99.19,99.2,99.21,99.22,99.23,99.24,99.25,99.26,99.27,99.28,99.29,99.3,99.31,99.32,99.33,99.34,99.35,99.36,99.37,99.38,99.39,99.4,99.41,99.42,99.43,99.44,99.45,99.46,99.47,99.48,99.49,99.5,99.51,99.52,99.53,99.54,99.55,99.56,99.57,99.58,99.59,99.6,99.61,99.62,99.63,99.64,99.65,99.66,99.67,99.68,99.69,99.7,99.71,99.72,99.73,99.74,99.75,99.76,99.77,99.78,99.79,99.8,99.81,99.82,99.83,99.84,99.85,99.86,99.87,99.88,99.89,99.9,99.91,99.92,99.93,99.94,99.95,99.96,99.97,99.98,99.99,100] diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/test/fixtures/r/expected.json b/lib/node_modules/@stdlib/math/base/special/log1mexp/test/fixtures/r/expected.json index 70e6c6e69f27..06a243ea6dfa 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1mexp/test/fixtures/r/expected.json +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/test/fixtures/r/expected.json @@ -1 +1 @@ -[-2.35216846104409,-1.70777180097052,-1.35022561281485,-1.10963293158893,-0.932752129567189,-0.79587036834632,-0.686341002808385,-0.596617679188975,-0.521835442908722,-0.458675145387082,-0.40477197392829,-0.358382417860434,-0.318184982656405,-0.283154953922927,-0.252482458925454,-0.225517013241198,-0.201728895667445,-0.180681568176634,-0.162011551438894,-0.145413457868859,-0.130628670462299,-0.117436648812859,-0.105648161160276,-0.0950999505224027,-0.0856504837420381,-0.077176528823413,-0.0695703732873238,-0.0627375440044763,-0.0565949232785399,-0.0510691809427016,-0.046095460659601,-0.0416162723528589,-0.0375805530488293,-0.0339428662811794,-0.0306627162554596,-0.0277039576505603,-0.0250342855860401,-0.0226247931559337,-0.0204495862036901,-0.0184854468258866,-0.016711538547081,-0.0151091472825445,-0.0136614531592459,-0.0123533290441633,-0.0111711622682969,-0.0101026965623132,-0.00913689165726834,-0.00826379836845307,-0.00747444728561566,-0.00676074944948856,-0.00611540761129674,-0.00553183685574318,-0.00500409352446766,-0.00452681151073329,-0.00409514511083592,-0.00370471771650489,-0.00335157571787992,-0.00303214706057671,-0.00274320396461053,-0.00248182936895953,-0.00224538671450927,-0.00203149272102713,-0.00183799285150867,-0.00166293919042854,-0.00150457049171581,-0.00136129417817004,-0.00123167009697367,-0.00111439585631403,-0.00100829358622163,-0.000912297982839068,-0.000825445509692349,-0.000746864642352278,-0.000675767054325633,-0.000611439652260927,-0.000553237377728086,-0.000500576701054542,-0.000452929740077202,-0.00040981894329248,-0.000370812282836538,-0.00033551890807682,-0.000303585215407457,-0.000274691294171441,-0.000248547712531767,-0.000224892610626391,-0.000203489071507488,-0.000184122743219583,-0.000166599687945002,-0.000150744436467144,-0.000136398228297431,-0.00012341741970312,-0.000111672043580676,-0.000101044506661317,-9.14284109279612e-05,-8.27274873808561e-05,-7.48546314257204e-05,-6.77310301852938e-05,-6.12853729633286e-05,-5.54531369289548e-05,-5.01759408476415e-05,-4.54009603704892e-05,-4.10803990133378e-05,-3.71710095175413e-05,-3.36336607909469e-05,-3.04329460858097e-05,-2.75368284847286e-05,-2.49163201404298e-05,-2.25451920541447e-05,-2.03997114838714e-05,-1.8458404351078e-05,-1.67018402652033e-05,-1.51124380121711e-05,-1.36742895583523e-05,-1.2373000807047e-05,-1.11955475124991e-05,-1.01301449083754e-05,-9.16612974508652e-06,-8.29385355466566e-06,-7.50458607441249e-06,-6.79042786228256e-06,-6.14423122907825e-06,-5.55952869580117e-06,-5.03046825989568e-06,-4.55175482230349e-06,-4.11859718894547e-06,-3.72666011606786e-06,-3.37202091939533e-06,-3.05113021272947e-06,-2.76077638297681e-06,-2.49805344599955e-06,-2.26033196152942e-06,-2.0452327160105e-06,-1.85060290994641e-06,-1.67449461139959e-06,-1.51514525997525e-06,-1.37096002614935e-06,-1.24049584937137e-06,-1.12244699517773e-06,-1.01563198675648e-06,-9.18981780161584e-07,-8.31529064823765e-07,-7.52398582268164e-07,-6.80798366140788e-07,-6.16011815867292e-07,-5.57390524611529e-07,-5.04347789751213e-07,-4.56352740919296e-07,-4.12925026840854e-07,-3.73630007788209e-07,-3.38074405537619e-07,-3.0590236728995e-07,-2.76791904160956e-07,-2.50451668595778e-07,-2.26618038454437e-07,-2.05052478584451e-07,-1.85539153473986e-07,-1.67882767091877e-07,-1.51906608294704e-07,-1.37450782238498e-07,-1.24370610094311e-07,-1.12535181051342e-07,-1.01826042115471e-07,-9.21360125901833e-08,-8.33681113747486e-08,-7.54345863436307e-08,-6.82560360927916e-08,-6.17606152629904e-08,-5.58833154866549e-08,-5.05653147617807e-08,-4.57533887411442e-08,-4.13993780448058e-08,-3.74597062645672e-08,-3.38949438364027e-08,-3.0669413415942e-08,-2.77508328074618e-08,-2.51099918726956e-08,-2.27204601858482e-08,-2.05583225089267e-08,-1.86019394399316e-08,-1.68317308383911e-08,-1.52299798606887e-08,-1.3780655643899e-08,-1.24692528634921e-08,-1.12826465591457e-08,-1.0208960775709e-08,-9.2374497046358e-09,-8.35839013630595e-09,-7.56298414686448e-09,-6.84327104563317e-09,-6.19204770183474e-09,-5.60279645323291e-09,-5.06961987517281e-09,-4.58718175716863e-09,-4.15065369631217e-09,-3.75566677299081e-09,-3.39826782526917e-09,-3.07487988431405e-09,-2.78226637488637e-09,-2.51749872260717e-09,-2.27792704379984e-09,-2.06115362456273e-09,-1.8650089236419e-09,-1.6875298589324e-09,-1.52694016029238e-09,-1.38163259203399e-09,-1.25015286716818e-09,-1.13118509241142e-09,-1.02353859828323e-09,-9.26136022485636e-10,-8.3800252729907e-10,-7.58256043078664e-10,-6.8609844020471e-10,-6.20807541133061e-10,-5.61729892599498e-10,-5.08274225639763e-10,-4.59905537970987e-10,-4.16139739509001e-10,-3.76538807432025e-10,-3.40706402301028e-10,-3.08283901361386e-10,-2.78946809325797e-10,-2.52401510716374e-10,-2.28382331262236e-10,-2.06648878942109e-10,-1.86983638060166e-10,-1.69189792275825e-10,-1.53089254799666e-10,-1.3852088604097e-10,-1.25338880868538e-10,-1.13411309343928e-10,-1.02618796322284e-10,-9.28533267057602e-11,-8.40171643921181e-11,-7.60218740989629e-11,-6.87874362737117e-11,-6.22414462310146e-11,-5.63183895023286e-11,-5.09589861450939e-11,-4.61095974491451e-11,-4.17216891024705e-11,-3.77513454435034e-11,-3.41588299384219e-11,-3.09081874845609e-11,-2.79668845596602e-11,-2.53054836154391e-11,-2.28973484567176e-11,-2.07183776574235e-11,-1.87467633454185e-11,-1.69627729419845e-11,-1.53485516715431e-11,-1.38879438650604e-11,-1.25663312686813e-11,-1.13704867393313e-11,-1.02884418630231e-11,-9.30936717094637e-12,-8.42346375450409e-12,-7.62186519454194e-12,-6.89654882324496e-12,-6.24025543058185e-12,-5.64641661169089e-12,-5.10908902807636e-12,-4.62289492467935e-12,-4.18296830749748e-12,-3.78490624308151e-12,-3.42472479249744e-12,-3.09881913872662e-12,-2.8039275084454e-12,-2.53709852710139e-12,-2.29566168056498e-12,-2.07720058772629e-12,-1.87952881654084e-12,-1.70066800148285e-12,-1.53882804339799e-12,-1.39238919358946e-12,-1.25988584282858e-12,-1.139991853045e-12,-1.03150728489121e-12,-9.33346388346202e-13,-8.44526736164327e-13,-7.64159391413236e-13,-6.91440010694257e-13,-6.25640794003328e-13,-5.66103200663922e-13,-5.12231358430621e-13,-4.63486099799405e-13,-4.19379565838041e-13,-3.79470323529928e-13,-3.43358947764084e-13,-3.10684023754392e-13,-2.81118529878943e-13,-2.54366564737724e-13,-2.30160385671956e-13,-2.08257729105571e-13,-1.88439385889915e-13,-1.70507007384912e-13,-1.542811203192e-13,-1.3959933056132e-13,-1.26314697824652e-13,-1.1429426503965e-13,-1.03417727674794e-13,-9.35762296884058e-14,-8.46712740607968e-14,-7.66137370029861e-14,-6.93229759758676e-14,-6.27260225925728e-14,-5.67568523263286e-14,-5.13557237148034e-14,-4.64685804474706e-14,-4.20465103518855e-14,-3.80452558642223e-14,-3.44247710847002e-14,-3.11488209847591e-14,-2.81846187547137e-14,-2.55024976623429e-14,-2.30756141382625e-14,-2.08796791164595e-14,-1.88927149411566e-14,-1.70948354070455e-14,-1.54680467314607e-14,-1.39960674665545e-14,-1.26641655490943e-14,-1.14590108570224e-14,-1.03685417971141e-14,-9.38184458849866e-15,-8.48904403387175e-15,-7.68120468520213e-15,-6.95024141476399e-15,-6.28883849646164e-15,-5.69037638758348e-15,-5.14886547819382e-15,-4.65888614510341e-15,-4.21553451045887e-15,-3.81437336208508e-15,-3.4513877443742e-15,-3.1229447752605e-15,-2.82575728711561e-15,-2.55685092766999e-15,-2.31353439169576e-15,-2.09337248551938e-15,-1.89416175478487e-15,-1.71390843154201e-15,-1.55080847994654e-15,-1.40322954086309e-15,-1.26969459466634e-15,-1.14886717873211e-15,-1.03953801167022e-15,-9.40612890429918e-16,-8.51101739147947e-16,-7.70108700136542e-16,-6.96823167838576e-16,-6.30511676014699e-16,-5.70510556966665e-16,-5.16219299327974e-16,-4.67094537944255e-16,-4.22644615692179e-16,-3.82424662809714e-16,-3.46032144490013e-16,-3.13102832177789e-16,-2.83307158247497e-16,-2.5634691757977e-16,-2.31952283024357e-16,-2.09879104879305e-16,-1.89906467358688e-16,-1.71834477593166e-16,-1.55482265034958e-16,-1.40686171244615e-16,-1.27298111942342e-16,-1.15184094930761e-16,-1.04222879055958e-16,-9.43047607852674e-17,-8.53304762574407e-17,-7.72102078165612e-17,-6.9862685086757e-17,-6.32143715909605e-17,-5.71987287731303e-17,-5.17555500580187e-17,-4.68303582835284e-17,-4.23738604749667e-17,-3.83414545043848e-17,-3.46927826974907e-17,-3.13913279204803e-17,-2.84040481042875e-17,-2.57010455484526e-17,-2.32552676948864e-17,-2.10422363767761e-17,-1.90398028328644e-17,-1.72279260352029e-17,-1.55884721118074e-17,-1.41050328567734e-17,-1.27627615114352e-17,-1.15482241730157e-17,-1.0449265343612e-17,-9.45488627388654e-18,-8.55513488388712e-18,-7.74100615928578e-18,-7.0043520261686e-18,-6.33779980237337e-18,-5.73467840920833e-18,-5.18895160505462e-18,-4.69515757263116e-18,-4.24835425529156e-18,-3.84406989526012e-18,-3.47825827877692e-18,-3.14725824023071e-18,-2.84775701998275e-18,-2.57675710915496e-18,-2.33154624955359e-18,-2.1096702884775e-18,-1.90890861673315e-18,-1.72725194403142e-18,-1.56288218933498e-18,-1.41415428489226e-18,-1.2795797118464e-18,-1.15781160263829e-18,-1.0476312611033e-18,-9.47935965350469e-19,-8.57727931351148e-19,-7.76104326781096e-19,-7.02248235171143e-19,-6.35420479932565e-19,-5.74952226429352e-19,-5.20238288056364e-19,-4.70731069328368e-19,-4.25935085360386e-19,-3.85402002888417e-19,-3.48726153199442e-19,-3.15540472062598e-19,-2.85512826026968e-19,-2.58342688318392e-19,-2.33758131066482e-19,-2.11513103759107e-19,-1.91384970686163e-19,-1.73172282726555e-19,-1.56692761177689e-19,-1.41781473448945e-19,-1.28289182360878e-19,-1.16080852529361e-19,-1.0503429888608e-19,-9.5038963809298e-20,-8.59948106260181e-20,-7.78113224113374e-20,-7.04065960646385e-20,-6.37065225958282e-20,-5.76440454176586e-20,-5.21584892208617e-20,-4.71949527152609e-20,-4.27037591592061e-20,-3.86399591780455e-20,-3.49628808956775e-20,-3.16357228767435e-20,-2.86251858054937e-20,-2.59011392150427e-20,-2.34363199315291e-20,-2.12060592151095e-20,-1.91880358669173e-20,-1.73620528310028e-20,-1.57098350554086e-20,-1.42148465893067e-20,-1.28621250856455e-20,-1.1638132052951e-20,-1.05306173575537e-20,-9.52849662013364e-21,-8.62174027952608e-21,-7.80127321350299e-21,-7.05888391189913e-21,-6.38714229305838e-21,-5.77932534107925e-21,-5.22934981961194e-21,-4.73171138878447e-21,-4.28142951591908e-21,-3.87399762868716e-21,-3.50533801181874e-21,-3.17176099595737e-21,-2.86992803020922e-21,-2.59681826880354e-21,-2.3496983374528e-21,-2.12609497682419e-21,-1.92377028932882e-21,-1.74069934149058e-21,-1.57504989773123e-21,-1.42516408274092e-21,-1.28954178890489e-21,-1.16682566272217e-21,-1.05578751995563e-21,-9.55316053551238e-22,-8.64405711303603e-22,-7.82146631951494e-22,-7.07715538980511e-22,-6.40367500995052e-22,-5.79428476194502e-22,-5.24288566336343e-22,-4.74395912669554e-22,-4.29251172746731e-22,-3.88402522837059e-22,-3.51441135922537e-22,-3.17997090019773e-22,-2.87735665876441e-22,-2.60353996988496e-22,-2.35578038410413e-22,-2.13159824021254e-22,-1.9287498479639e-22,-1.74520503246892e-22,-1.57912681552254e-22,-1.42885303050876e-22,-1.2928796868784e-22,-1.16984591770619e-22,-1.05852035967718e-22,-9.57788829188794e-23,-8.66643171226872e-23,-7.84171169411418e-23,-7.09547416228465e-23,-6.42025052074255e-23,-5.8092829043327e-23,-5.25645654379683e-23,-4.75623856710735e-23,-4.30362262462446e-23,-3.89407878386635e-23,-3.52350819242224e-23,-3.18820205525988e-23,-2.88480451585829e-23,-2.61027906966769e-23,-2.36187817375143e-23,-2.13711574845273e-23,-1.93374229587395e-23,-1.74972238614551e-23,-1.58321428615962e-23,-1.43255152688632e-23,-1.29622622479129e-23,-1.17287399043065e-23,-1.0612602731828e-23,-9.60268005450861e-24,-8.68886422674703e-24,-7.86200947259478e-24,-7.11384035175691e-24,-6.43686893620373e-24,-5.82431986847045e-24,-5.27006255160237e-24,-4.76854979207989e-24,-4.31476228164147e-24,-3.90415836235941e-24,-3.53262857220078e-24,-3.19645451615023e-24,-2.89227165126275e-24,-2.61703561318719e-24,-2.36799174714445e-24,-2.14264753841664e-24,-1.93874766642203e-24,-1.75425143270855e-24,-1.58731233695788e-24,-1.43625959658959e-24,-1.29958142500749e-24,-1.17590990113128e-24,-1.06400727878255e-24,-9.62753598905066e-25,-8.71135480638086e-25,-7.88235979060079e-25,-7.13225408095773e-25,-6.45353036739022e-25,-5.83939575484602e-25,-5.283703777705e-25,-4.78089288388543e-25,-4.32593077296141e-25,-3.9142640312087e-25,-3.5417725595099e-25,-3.20472833801755e-25,-2.89975811487847e-25,-2.62380964559547e-25,-2.37412114513845e-25,-2.14819364707165e-25,-1.94376599305756e-25,-1.7587922024243e-25,-1.59142099530339e-25,-1.43997726439853e-25,-1.30294530994885e-25,-1.17895367009618e-25,-1.06676139483385e-25,-9.65245626161901e-26,-8.73390360146836e-26,-7.90276278412759e-26,-7.15071547294067e-26,-6.47023492564541e-26,-5.85451066420712e-26,-5.29738031326515e-26,-4.79326792500936e-26,-4.33712817322004e-26,-3.92439585794743e-26,-3.55094021545619e-26,-3.21302357615343e-26,-2.90726395673533e-26,-2.6306012121614e-26,-2.38026640869438e-26,-2.15375411148076e-26,-1.94879730931658e-26,-1.76334472563744e-26,-1.59554028865311e-26,-1.44370455515723e-26,-1.30631790209522e-26,-1.18200531766599e-26,-1.06952263974167e-26,-9.67744103874855e-27,-8.75651076269646e-27,-7.9232185895224e-27,-7.16922465107795e-27,-6.48698272260112e-27,-5.86966469756227e-27,-5.31109224967906e-27,-4.80567499815042e-27,-4.34835455724639e-27,-3.93455391028371e-27,-3.5601316013044e-27,-3.22134028599249e-27,-2.91478922699268e-27,-2.63741035827109e-27,-2.3864275788793e-27,-2.15932896880295e-27,-1.95384164882191e-27,-1.76790903277115e-27,-1.5996702445351e-27,-1.44744149377409e-27,-1.30969922398465e-27,-1.18506486423397e-27,-1.07229103195861e-27,-9.70249048740541e-28,-8.77917644114236e-28,-7.94372734348536e-28,-7.18778173906094e-28,-6.50377387017796e-28,-5.88485795618155e-28,-5.32483967857968e-28,-4.81811418622146e-28,-4.35961000006305e-28,-3.94473825610082e-28,-3.56934677847794e-28,-3.22967852311294e-28,-2.9223339759397e-28,-2.64423712942804e-28,-2.39260469686649e-28,-2.16491825629339e-28,-1.95889904528342e-28,-1.77248515432735e-28,-1.60381089054864e-28,-1.45118810522199e-28,-1.31308929821355e-28,-1.18813233024621e-28,-1.07506658998503e-28,-9.72760477498771e-29,-8.8019007882742e-29,-7.96428918307064e-29,-7.2063868609014e-29,-6.52060848058633e-29,-5.90009054159706e-29,-5.3386226918371e-29,-4.83058557235003e-29,-4.37089457688698e-29,-3.95494896345782e-29,-3.57858580855913e-29,-3.23803834323679e-29,-2.92989825399579e-29,-2.65108157125363e-29,-2.39879780393586e-29,-2.17052201130364e-29,-1.96396953249821e-29,-1.77707312088696e-29,-1.60796225436447e-29,-1.45494441453844e-29,-1.31648814743679e-29,-1.19120773620165e-29,-1.07784933236916e-29,-9.75278406932695e-30,-8.82468395595209e-30,-7.98490424568698e-30,-7.22504014093182e-30,-6.53748666632686e-30,-5.91536255560374e-30,-5.35244138155911e-30,-4.84308923987873e-30,-4.38220836312963e-30,-3.96518610058977e-30,-3.58784875328974e-30,-3.24641980223025e-30,-2.9374821117108e-30,-2.65794372948724e-30,-2.40500694147408e-30,-2.17614027128198e-30,-1.96905314435087e-30,-1.78167296311001e-30,-1.61212436372495e-30,-1.45871044682574e-30,-1.31989579436789e-30,-1.19429110265237e-30,-1.08063927770728e-30,-9.77802853868904e-31,-8.84752609642924e-31,-8.00557266909885e-31,-7.24374170380669e-31,-6.55440854019179e-31,-5.93067410026002e-31,-5.36629584009197e-31,-4.85562527236595e-31,-4.39355143439779e-31,-3.97544973590865e-31,-3.59713567457134e-31,-3.25482295610414e-31,-2.94508559976546e-31,-2.66482364998668e-31,-2.41123215097509e-31,-2.1817730737736e-31,-1.97414991481367e-31,-1.78628471173592e-31,-1.61629724644425e-31,-1.46248622725123e-31,-1.32331226177916e-31,-1.19738245020357e-31,-1.08343644464378e-31,-9.80333835177542e-32,-8.87042736235329e-32,-8.02629459142733e-32,-7.26249167450303e-32,-6.57137421526501e-32,-5.94602527788851e-32,-5.38018616002114e-32,-4.86819375358636e-32,-4.40492386649383e-32,-3.98573993800328e-32,-3.60644663446571e-32,-3.2632478610144e-32,-2.95270876897166e-32,-2.67172137872843e-32,-2.41747347404012e-32,-2.18742045642089e-32,-1.9792598779469e-32,-1.79090839758366e-32,-1.6204809304085e-32,-1.46627178104734e-32,-1.32673757250187e-32,-1.20048179951388e-32,-1.08624085187131e-32,-9.82871367772409e-33,-8.89338790676664e-33,-8.047070151151e-33,-7.28129017832164e-33,-6.58838380492319e-33,-5.96141619107658e-33,-5.39411243417152e-33,-4.88079476753145e-33,-4.41632573541654e-33,-3.99605677564009e-33,-3.61578169519525e-33,-3.27169457326217e-33,-2.96035167027282e-33,-2.67863696180808e-33,-2.42373095237812e-33,-2.19308245696364e-33,-1.98438306789895e-33,-1.79554405155197e-33,-1.6246754435761e-33,-1.47006713351183e-33,-1.33017174942636e-33,-1.20358917129533e-33,-1.08905251813091e-33,-9.85415468611126e-34,-8.91640788310791e-34,-8.06789948710677e-34,-7.30013734088738e-34,-6.60543742283647e-34,-5.9768469426774e-34,-5.40807475560837e-34,-4.89342839841009e-34,-4.42775711736125e-34,-4.00640031776346e-34,-3.62514091914356e-34,-3.28016314929438e-34,-2.96801435474421e-34,-2.68557044544043e-34,-2.43000462780598e-34,-2.19875911323941e-34,-1.98951951890659e-34,-1.80019170461957e-34,-1.62888081397773e-34,-1.47387231000791e-34,-1.33361481550226e-34,-1.20670458631358e-34,-1.09187146221212e-34,-9.87966154695166e-35,-8.93948744521281e-35,-8.08878273849129e-35,-7.31903328815033e-35,-6.62253518296913e-35,-5.99231763581012e-35,-5.42207321763773e-35,-4.90609473064928e-35,-4.43921808872055e-35,-4.01677063349639e-35,-3.63452436885556e-35,-3.28865364570401e-35,-2.97569687359338e-35,-2.69252187595993e-35,-2.4362945422489e-35,-2.20445046318361e-35,-1.99466926529521e-35,-1.80485138784542e-35,-1.63309706971667e-35,-1.47768733596451e-35,-1.33706679373857e-35,-1.20982806538802e-35,-1.09469770295314e-35,-9.90523443070022e-36,-8.9626267473156e-36,-8.10972004486112e-36,-7.33797814638654e-36,-6.63967719958073e-36,-6.0078283738609e-36,-5.43610791380742e-36,-4.91879384889438e-36,-4.45070872608472e-36,-4.02716779214063e-36,-3.64393210703813e-36,-3.29716611923068e-36,-2.98339927816035e-36,-2.69949129982094e-36,-2.44260073774053e-36,-2.21015654482988e-36,-1.99983234147913e-36,-1.80952313236879e-36,-1.63732423896891e-36,-1.48151223687633e-36,-1.34052770720386e-36,-1.212959629392e-36,-1.09753125924092e-36,-9.93087350825297e-37,-8.98582594404938e-37,-8.13071154613423e-37,-7.3569720421992e-37,-6.6568635872263e-37,-6.02337926048339e-37,-5.45017893790717e-37,-4.93152583800992e-37,-4.46222910624248e-37,-4.03759186317737e-37,-3.65336419656038e-37,-3.30570062676073e-37,-2.99112161991805e-37,-2.70647876359817e-37,-2.44892325642333e-37,-2.21587739631028e-37,-2.00500878196165e-37,-1.81420696940962e-37,-1.64156234998343e-37,-1.48534703830406e-37,-1.34399757902639e-37,-1.21609929925283e-37,-1.10037215001127e-37,-9.95657895094869e-38,-9.00908519044765e-38,-8.15175738259058e-38,-7.37601510251888e-38,-6.67409446075746e-38,-6.03897039959983e-38,-5.46428638396953e-38,-4.94429078308e-38,-4.47377930618112e-38,-4.04804291626765e-38,-3.66282070045435e-38,-3.3142572253278e-38,-2.9988639504726e-38,-2.71348431398676e-38,-2.45526214054887e-38,-2.22161305585567e-38,-2.01019862133543e-38,-1.81890293026858e-38,-1.64581143108227e-38,-1.48919176587456e-38,-1.34747643239434e-38,-1.21924709595201e-38,-1.10322039424904e-38,-9.98235093056925e-39,-9.03240464194519e-39,-8.17285769487363e-39,-7.39510745460482e-39,-6.69136993532305e-39,-6.05460189540119e-39,-5.47843034627047e-39,-4.95708876940917e-39,-4.48535940308728e-39,-4.05852102125277e-39,-3.67230168191504e-39,-3.32283597211314e-39,-3.00662632156383e-39,-2.72050799780279e-39,-2.46161743247803e-39,-2.22736356179574e-39,-2.01540189428265e-39,-1.82361104632748e-39,-1.65007151066082e-39,-1.49304644528102e-39,-1.35096429055585e-39,-1.22240304052535e-39,-1.10607601098825e-39,-1.00081896193413e-39,-9.05578445437899e-40,-8.19401262399051e-40,-7.41424922604568e-40,-6.70869012637023e-40,-6.0702738523482e-40,-5.4926109193299e-40,-4.96991988252261e-40,-4.49696947434737e-40,-4.06902624815496e-40,-3.68180720430111e-40,-3.33143692444598e-40,-3.01440878506537e-40,-2.72754986198348e-40,-2.46798917468145e-40,-2.23312895255948e-40,-2.02061863557525e-40,-1.82833134904926e-40,-1.65434261718794e-40,-1.49691110228318e-40,-1.35446117681928e-40,-1.2255671540631e-40,-1.10893901931214e-40,-1.00340951899373e-40,-9.07922478398982e-41,-8.21522231131348e-41,-7.43344054476024e-41,-6.72605514964471e-41,-6.08598637517202e-41,-5.50682819791263e-41,-4.98278420816691e-41,-4.50860959754806e-41,-4.07955866717756e-41,-3.69133733113518e-41,-3.34006013980408e-41,-3.02221139298517e-41,-2.73460995358754e-41,-2.4743774097396e-41,-2.2389092666753e-41,-2.02584888007524e-41,-1.83306386997833e-41,-1.65862477920618e-41,-1.50078576270739e-41,-1.3579671145533e-41,-1.22873945771014e-41,-1.11180943835335e-41,-1.00600678154765e-41,-9.10272578742244e-42,-8.23648689858071e-42,-7.45268153899872e-42,-6.7434651211919e-42,-6.10173956887478e-42,-5.52108227702853e-42,-4.99568183231062e-42,-4.52027985047706e-42,-4.09011834870566e-42,-3.7008921261043e-42,-3.34870567581384e-42,-3.03003419746578e-42,-2.74168831979557e-42,-2.48078218034319e-42,-2.24470454277133e-42,-2.03109266273481e-42,-1.83780864074076e-42,-1.66291802533203e-42,-1.5046704524469e-42,-1.36148212718704e-42,-1.23191997266603e-42,-1.11468728729407e-42,-1.00861076695267e-42,-9.12628762172724e-43,-8.25780652789715e-43,-7.47197233734299e-43,-6.76092015735758e-43,-6.11753353873066e-43,-5.53537325193347e-43,-5.00861284114475e-43,-4.53198031112319e-43,-4.10070536330654e-43,-3.71047165306047e-43,-3.35737359025087e-43,-3.03787725078469e-43,-2.74878500791021e-43,-2.48720352929345e-43,-2.25051481957579e-43,-2.03635001859663e-43,-1.84256569304444e-43,-1.66722238425598e-43,-1.50856519746195e-43,-1.36500623821036e-43,-1.23510872018525e-43,-1.11757258536611e-43,-1.01122149261045e-43,-9.14991044436113e-44,-8.27918134173591e-44,-7.49131306870786e-44,-6.7784203747886e-44,-6.13336839028609e-44,-5.54970121812987e-44,-5.02157732108361e-44,-4.54371105767725e-44,-4.11131978173009e-44,-3.72007597602084e-44] +[-2.35216846104409,-2.2617707973501,-2.17966360818364,-2.10451676100343,-2.03529632305357,-1.97118266060438,-1.91151502454478,-1.85575296513572,-1.80344879240458,-1.75422749239934,-1.70777180097052,-1.66381092307361,-1.62211187872768,-1.58247277424733,-1.54471750658802,-1.50869154944603,-1.47425856632174,-1.44129766313267,-1.40970114071642,-1.37937264189857,-1.35022561281485,-1.32218201662377,-1.29517125150404,-1.26912923519948,-1.2439976262651,-1.21972315822716,-1.1962570675638,-1.17355460007596,-1.15157458310073,-1.1302790533014,-1.10963293158893,-1.08960373818946,-1.07016134205183,-1.05127773974504,-1.03292685977708,-1.01508438890618,-0.997727617543598,-0.980835301783889,-0.964387539961599,-0.948365661936954,-0.932752129567189,-0.917530447034206,-0.902685079880004,-0.888201381754462,-0.874065528010353,-0.860264455391628,-0.846785807156074,-0.833617883055164,-0.820749593664144,-0.80817041861611,-0.79587036834632,-0.783839948998564,-0.772070130185055,-0.760552315325836,-0.749278314323961,-0.73824031835912,-0.727430876605623,-0.716842874701098,-0.706469514810268,-0.696304297144057,-0.686341002808385,-0.676573677869468,-0.666996618533517,-0.65760435734862,-0.648391650345327,-0.639353465040354,-0.630484969234789,-0.621781520544491,-0.613238656605977,-0.604852085906181,-0.596617679188975,-0.588531461395475,-0.580589604098821,-0.572788418397474,-0.565124348234075,-0.557593964109641,-0.550193957165369,-0.542921133606524,-0.535772409444973,-0.528744805538748,-0.521835442908722,-0.515041538314042,-0.50836040006932,-0.501789424087931,-0.495326090136885,-0.488967958289846,-0.482712665565856,-0.476557922742195,-0.470501511330693,-0.464541280707498,-0.458675145387082,-0.452901082431847,-0.447217128989331,-0.441621379949529,-0.436111985715386,-0.430687150079943,-0.425345128204077,-0.420084224689182,-0.41490279173946,-0.409799227408902,-0.40477197392829,-0.399819516107892,-0.394940379811767,-0.390133130499863,-0.385396371834331,-0.380728744346674,-0.376128924162591,-0.371595621781524,-0.36712758090813,-0.362723577333039,-0.358382417860434,-0.354102939280102,-0.349884007381785,-0.34572451600974,-0.341623386155559,-0.337579565087411,-0.333592025513959,-0.329659764781308,-0.325781804101427,-0.321957187810587,-0.318184982656405,-0.314464277112197,-0.310794180717383,-0.307173823442768,-0.303602355079578,-0.300078944651199,-0.296602779846606,-0.293173066474523,-0.289789027937432,-0.286449904724542,-0.283154953922927,-0.279903448746038,-0.276694678078869,-0.273527946039062,-0.270402571553293,-0.2673178879483,-0.264273242555953,-0.261267996331788,-0.258301523486457,-0.255373211129572,-0.252482458925454,-0.249628678760294,-0.246811294420296,-0.244029741280349,-0.241283466002839,-0.23857192624618,-0.235894590382716,-0.233250937225616,-0.23064045576443,-0.228062644908966,-0.225517013241198,-0.22300307877487,-0.220520368722548,-0.218068419269818,-0.215646775356375,-0.213254990463762,-0.210892626409496,-0.208559253147381,-0.206254448573751,-0.20397779833947,-0.201728895667445,-0.199507341175499,-0.197312742704377,-0.195144715150744,-0.193002880304967,-0.190886866693547,-0.188796309426021,-0.186730850046191,-0.184690136387537,-0.182673822432659,-0.180681568176634,-0.178713039494144,-0.176767908010244,-0.174845850974678,-0.172946551139589,-0.17106969664055,-0.169214980880777,-0.167382102418445,-0.165570764856997,-0.163780676738346,-0.162011551438894,-0.160263107068264,-0.158535066370667,-0.156827156628822,-0.155139109570348,-0.153470661276557,-0.15182155209356,-0.150191526545636,-0.148580333250777,-0.146987724838359,-0.145413457868859,-0.143857292755567,-0.142318993688236,-0.140798328558605,-0.139295068887738,-0.137808989755143,-0.136339869729593,-0.134887490801625,-0.133451638317648,-0.132032100915628,-0.130628670462299,-0.129241141991856,-0.127869313646087,-0.126512986615911,-0.125171965084271,-0.123846056170355,-0.122535069875101,-0.121238819027955,-0.119957119234838,-0.118689788827307,-0.117436648812859,-0.116197522826355,-0.114972237082535,-0.113760620329596,-0.112562503803791,-0.111377721185044,-0.110206108553534,-0.109047504347235,-0.107901749320376,-0.106768686502815,-0.105648161160276,-0.104540020755455,-0.103444114909952,-0.102360295367018,-0.101288415955092,-0.10022833255211,-0.0991799030505667,-0.0981429873233058,-0.0971174471900277,-0.0961031463844929,-0.0950999505224027,-0.0941077270699432,-0.0931263453129736,-0.0921556763268452,-0.0911955929468331,-0.0902459697391682,-0.0893066829726529,-0.0883776105908471,-0.0874586321848115,-0.0865496289663923,-0.0856504837420382,-0.084761080887133,-0.0838813063208344,-0.0830110474814055,-0.0821501933020283,-0.0812986341870868,-0.0804562619889101,-0.0796229699849636,-0.0787986528554789,-0.0779832066615106,-0.077176528823413,-0.0763785180997236,-0.0755890745664476,-0.0748080995967311,-0.0740354958409167,-0.0732711672069716,-0.0725150188412796,-0.0717669571097902,-0.071026889579515,-0.0702947250003656,-0.0695703732873238,-0.0688537455029381,-0.0681447538401375,-0.067443311605359,-0.0667493332019772,-0.0660627341140345,-0.0653834308902613,-0.0647113411283823,-0.064046383459702,-0.063388477533964,-0.0627375440044763,-0.0620935045135003,-0.0614562816778947,-0.0608257990750109,-0.0602019812288338,-0.0595847535963631,-0.05897404255423,-0.0583697753855447,-0.0577718802669694,-0.0571802862560126,-0.0565949232785399,-0.0560157221164971,-0.0554426143958412,-0.0548755325746744,-0.0543144099315789,-0.0537591805541456,-0.0532097793276953,-0.0526661419241877,-0.0521282047913137,-0.0515959051417686,-0.0510691809427016,-0.0505479709053387,-0.0500322144747757,-0.0495218518199372,-0.0490168238236991,-0.0485170720731712,-0.0480225388501368,-0.0475331671216459,-0.0470489005307596,-0.0465696833874426,-0.046095460659601,-0.0456261779642619,-0.0451617815588939,-0.0447022183328632,-0.0442474357990258,-0.0437973820854503,-0.0433520059272713,-0.0429112566586687,-0.0424750842049732,-0.0420434390748925,-0.0416162723528589,-0.0411935356914946,-0.040775181304192,-0.0403611619578086,-0.0399514309654726,-0.0395459421794989,-0.0391446499844116,-0.0387475092900729,-0.0383544755249152,-0.0379655046292755,-0.0375805530488293,-0.0371995777281228,-0.0368225361042017,-0.0364493861003349,-0.0360800861198309,-0.0357145950399456,-0.0353528722058807,-0.034994877424869,-0.0346405709603479,-0.0342899135262168,-0.0339428662811794,-0.0335993908231669,-0.0332594491838435,-0.0329230038231905,-0.0325900176241686,-0.0322604538874569,-0.0319342763262681,-0.0316114490612367,-0.0312919366153809,-0.0309757039091364,-0.0306627162554596,-0.0303529393550016,-0.030046339291349,-0.0297428825263324,-0.0294425358954009,-0.0291452666030609,-0.0288510422183791,-0.0285598306705478,-0.0282716002445123,-0.0279863195766584,-0.0277039576505603,-0.0274244837927862,-0.0271478676687626,-0.0268740792786945,-0.0266030889535427,-0.0263348673510545,-0.0260693854518499,-0.0258066145555601,-0.0255465262770192,-0.0252890925425064,-0.0250342855860401,-0.024782077945721,-0.0245324424601251,-0.0242853522647441,-0.0240407807884745,-0.0237987017501531,-0.0235590891551382,-0.0233219172919371,-0.0230871607288773,-0.0228547943108231,-0.0226247931559337,-0.0223971326524661,-0.0221717884556178,-0.0219487364844132,-0.0217279529186285,-0.0215094141957586,-0.0212930970080221,-0.0210789782994064,-0.0208670352627503,-0.0206572453368646,-0.0204495862036901,-0.0202440357854921,-0.0200405722420909,-0.0198391739681278,-0.0196398195903666,-0.019442487965029,-0.0192471581751644,-0.0190538095280528,-0.0188624215526414,-0.0186729739970129,-0.0184854468258866,-0.0182998202181502,-0.0181160745644237,-0.0179341904646534,-0.017754148725736,-0.0175759303591729,-0.0173995165787538,-0.0172248887982685,-0.0170520286292488,-0.0168809178787365,-0.016711538547081,-0.0165438728257628,-0.0163779030952448,-0.0162136119228498,-0.0160509820606643,-0.0158899964434676,-0.0157306381866876,-0.0155728905843799,-0.0154167371072336,-0.0152621614005996,-0.0151091472825445,-0.0149576787419272,-0.0148077399364994,-0.014659315191029,-0.0145123889954462,-0.0143669460030125,-0.0142229710285106,-0.014080449046458,-0.0139393651893401,-0.0137997047458663,-0.0136614531592459,-0.0135245960254848,-0.0133891190917035,-0.0132550082544735,-0.0131222495581757,-0.0129908291933762,-0.0128607334952229,-0.0127319489418606,-0.012604462152865,-0.0124782598876949,-0.0123533290441633,-0.012229656656926,-0.0121072298959885,-0.0119860360652299,-0.0118660626009447,-0.0117472970704012,-0.0116297271704174,-0.0115133407259532,-0.0113981256887186,-0.0112840701357992,-0.0111711622682969,-0.0110593904099867,-0.0109487430059889,-0.0108392086214572,-0.0107307759402812,-0.0106234337638051,-0.0105171710095599,-0.010411976710011,-0.0103078400113202,-0.0102047501721219,-0.0101026965623132,-0.0100016686618577,-0.0099016560596042,-0.00980264845211705,-0.0097046356425216,-0.00960760753936186,-0.00951155415547152,-0.00941646560685787,-0.00932233211159827,-0.00922914398874932,-0.00913689165726834,-0.00904556563494714,-0.00895515653735778,-0.00886565507681041,-0.00877705206132275,-0.00868933839360128,-0.00860250507003394,-0.00851654317969413,-0.00843144390335594,-0.00834719851252046,-0.00826379836845307,-0.00818123492123139,-0.00809949970880406,-0.00801858435606,-0.00793848057390802,-0.00785918015836679,-0.00778067498966493,-0.00770295703135114,-0.00762601832941424,-0.00754985101141301,-0.00747444728561567,-0.00739979944014893,-0.00732589984215653,-0.00725274093696702,-0.00718031524727078,-0.00710861537230619,-0.00703763398705475,-0.00696736384144506,-0.00689779775956563,-0.00682892863888637,-0.00676074944948856,-0.00669325323330341,-0.0066264331033589,-0.00656028224303489,-0.00649479390532649,-0.00642996141211539,-0.0063657781534492,-0.00630223758682873,-0.00623933323650299,-0.00617705869277192,-0.00611540761129674,-0.00605437371241776,-0.00599395078047971,-0.00593413266316432,-0.00587491327083025,-0.00581628657586009,-0.00575824661201453,-0.00570078747379352,-0.00564390331580431,-0.0055875883521364,-0.00553183685574318,-0.00547664315783037,-0.0054220016472509,-0.0053679067699065,-0.00531435302815561,-0.00526133498022776,-0.00520884723964423,-0.00515688447464493,-0.00510544140762144,-0.00505451281455619,-0.00500409352446766,-0.00495417841886144,-0.00490476243118732,-0.00485584054630208,-0.00480740779993813,-0.00475945927817773,-0.00471199011693294,-0.0046649955014311,-0.00461847066570573,-0.00457241089209296,-0.0045268115107333,-0.00448166789907871,-0.00443697548140493,-0.00439272972832901,-0.00434892615633194,-0.0043055603272864,-0.00426262784798955,-0.00422012436970067,-0.00417804558768381,-0.00413638724075529,-0.00409514511083592,-0.00405431502250808,-0.00401389284257734,-0.00397387447963887,-0.00393425588364833,-0.00389503304549735,-0.00385620199659348,-0.00381775880844456,-0.0037796995922475,-0.00374202049848139,-0.00370471771650489,-0.00366778747415786,-0.0036312260373672,-0.00359502970975683,-0.00355919483226176,-0.00352371778274624,-0.0034885949756259,-0.0034538228614939,-0.00341939792675092,-0.00338531669323913,-0.00335157571787992,-0.00331817159231548,-0.00328510094255412,-0.00325236042861927,-0.00321994674420218,-0.0031878566163183,-0.00315608680496716,-0.00312463410279585,-0.00309349533476604,-0.00306266735782444,-0.00303214706057671,-0.00300193136296475,-0.00297201721594741,-0.0029424016011845,-0.00291308153072402,-0.0028840540466928,-0.0028553162209902,-0.00282686515498511,-0.00279869797921604,-0.00277081185309434,-0.00274320396461053,-0.00271587153004366,-0.00268881179367367,-0.00266202202749675,-0.00263549953094366,-0.002609241630601,-0.00258324567993527,-0.0025575090590199,-0.00253202917426504,-0.00250680345815018,-0.00248182936895953,-0.00245710439052009,-0.00243262603194254,-0.00240839182736466,-0.00238439933569756,-0.00236064614037439,-0.00233712984910174,-0.00231384809361356,-0.00229079852942763,-0.00226797883560457,-0.00224538671450927,-0.00222301989157483,-0.00220087611506895,-0.00217895315586267,-0.0021572488072015,-0.00213576088447898,-0.00211448722501245,-0.00209342568782125,-0.0020725741534071,-0.0020519305235368,-0.00203149272102713,-0.00201125868953199,-0.00199122639333171,-0.00197139381712451,-0.0019517589658201,-0.00193231986433545,-0.00191307455739259,-0.00189402110931852,-0.00187515760384715,-0.0018564821439233,-0.00183799285150867,-0.00181968786738985,-0.00180156535098822,-0.00178362348017187,-0.00176586045106941,-0.00174827447788568,-0.00173086379271937,-0.00171362664538249,-0.00169656130322166,-0.0016796660509413,-0.00166293919042854,-0.00164637904057996,-0.00162998393713013,-0.00161375223248183,-0.00159768229553809,-0.00158177251153583,-0.00156602128188133,-0.00155042702398726,-0.00153498817111148,-0.00151970317219735,-0.00150457049171581,-0.001489588609509,-0.00147475602063544,-0.00146007123521686,-0.00144553277828652,-0.00143113918963915,-0.00141688902368236,-0.00140278084928956,-0.00138881324965442,-0.00137498482214679,-0.00136129417817004,-0.00134773994301995,-0.00133432075574492,-0.00132103526900771,-0.00130788214894849,-0.00129486007504935,-0.00128196774000014,-0.0012692038495657,-0.00125656712245444,-0.00124405629018824,-0.00123167009697367,-0.00121940729957452,-0.00120726666718563,-0.00119524698130799,-0.00118334703562513,-0.00117156563588071,-0.00115990159975742,-0.00114835375675705,-0.00113692094808183,-0.0011256020265169,-0.00111439585631403,-0.00110330131307652,-0.00109231728364521,-0.00108144266598572,-0.00107067636907673,-0.00106001731279953,-0.00104946442782854,-0.00103901665552306,-0.00102867294782003,-0.0010184322671279,-0.00100829358622163,-0.000998255888138651,-0.000988318166075956,-0.000978479423288195,-0.000968738672986815,-0.000959094938240208,-0.000949547251874883,-0.000940094656377619,-0.000930736203798619,-0.000921470955655635,-0.000912297982839068,-0.00090321636551802,-0.000894225193047294,-0.000885323563875339,-0.000876510585453121,-0.00086778537414391,-0.000859147055133981,-0.000850594762344216,-0.000842127638342598,-0.000833744834257582,-0.000825445509692349,-0.000817228832639915,-0.000809093979399102,-0.000801040134491358,-0.000793066490578404,-0.000785172248380725,-0.000777356616596873,-0.000769618811823587,-0.000761958058476716,-0.000754373588712941,-0.000746864642352278,-0.000739430466801376,-0.00073207031697757,-0.000724783455233711,-0.000717569151283747,-0.000710426682129058,-0.000703355331985525,-0.000696354392211338,-0.000689423161235531,-0.000682560944487232,-0.000675767054325633,-0.000669040809970648,-0.000662381537434291,-0.000655788569452723,-0.000649261245418997,-0.000642798911316471,-0.000636400919652895,-0.000630066629395154,-0.000623795405904682,-0.000617586620873501,-0.000611439652260928,-0.000605353884230901,-0.000599328707089942,-0.000593363517225741,-0.000587457717046359,-0.000581610714920036,-0.000575821925115614,-0.000570090767743547,-0.000564416668697511,-0.000558799059596597,-0.000553237377728086,-0.000547731065990797,-0.000542279572839004,-0.000536882352226917,-0.000531538863553718,-0.000526248571609154,-0.000521010946519667,-0.000515825463695074,-0.000510691603775774,-0.000505608852580493,-0.000500576701054542,-0.000495594645218606,-0.000490662186118039,-0.000485778829772669,-0.000480944087127108,-0.00047615747400156,-0.000471418511043119,-0.000466726723677561,-0.000462081642061613,-0.000457482801035708,-0.000452929740077202,-0.000448422003254076,-0.000443959139179086,-0.000439540700964383,-0.000435166246176584,-0.000430835336792294,-0.00042654753915407,-0.000422302423926834,-0.000418099566054715,-0.000413938544718328,-0.00040981894329248,-0.000405740349304296,-0.00040170235439177,-0.000397704554262726,-0.000393746548654197,-0.000389827941292202,-0.000385948339851931,-0.000382107355918329,-0.00037830460494707,-0.00037453970622593,-0.000370812282836538,-0.000367121961616512,-0.000363468373121982,-0.000359851151590474,-0.000356269934904176,-0.000352724364553573,-0.000349214085601433,-0.00034573874664717,-0.000342297999791552,-0.000338891500601762,-0.00033551890807682,-0.000332179884613339,-0.000328874095971624,-0.000325601211242122,-0.000322360902812194,-0.000319152846333223,-0.000315976720688059,-0.000312832207958776,-0.000309718993394768,-0.000306636765381144,-0.000303585215407457,-0.000300564038036739,-0.00029757293087484,-0.000294611594540082,-0.000291679732633214,-0.000288777051707664,-0.000285903261240093,-0.000283058073601239,-0.000280241204027056,-0.00027745237059014,-0.000274691294171441,-0.000271957698432255,-0.000269251309786502,-0.000266571857373276,-0.00026391907302967,-0.000261292691263872,-0.000258692449228534,-0.000256118086694403,-0.000253569346024215,-0.000251045972146855,-0.000248547712531768,-0.00024607431716363,-0.000243625538517274,-0.00024120113153286,-0.000238800853591301,-0.000236424464489924,-0.000234071726418389,-0.000231742403934831,-0.000229436263942254,-0.000227153075665158,-0.000224892610626391,-0.000222654642624245,-0.000220438947709769,-0.000218245304164316,-0.000216073492477315,-0.000213923295324255,-0.000211794497544903,-0.000209686886121726,-0.00020760025015854,-0.000205534380859364,-0.000203489071507488,-0.00020146411744475,-0.00019945931605102,-0.000197474466723889,-0.00019550937085856,-0.000193563831827941,-0.000191637654962931,-0.000189730647532916,-0.000187842618726444,-0.000185973379632102,-0.000184122743219583,-0.000182290524320939,-0.000180476539612027,-0.000178680607594131,-0.000176902548575774,-0.000175142184654712,-0.000173399339700105,-0.000171673839334863,-0.000169965510918178,-0.000168274183528218,-0.000166599687945002,-0.000164941856633446,-0.000163300523726572,-0.000161675525008888,-0.000160066697899938,-0.000158473881438008,-0.000156896916264002,-0.00015533564460547,-0.000153789910260808,-0.000152259558583604,-0.000150744436467144,-0.000149244392329077,-0.000147759276096223,-0.000146288939189546,-0.000144833234509262,-0.00014339201642011,-0.000141965140736757,-0.000140552464709357,-0.000139153847009252,-0.000137769147714814,-0.000136398228297431,-0.000135040951607627,-0.000133697181861328,-0.000132366784626261,-0.000131049626808487,-0.000129745576639074,-0.000128454503660893,-0.000127176278715558,-0.000125910773930488,-0.000124657862706097,-0.00012341741970312,-0.000122189320830054,-0.000120973443230737,-0.000119769665272038,-0.000118577866531681,-0.000117397927786182,-0.000116229730998909,-0.000115073159308264,-0.000113928097015981,-0.000112794429575535,-0.000111672043580676,-0.000110560826754073,-0.000109460667936069,-0.000108371457073549,-0.000107293085208924,-0.000106225444469218,-0.000105168428055268,-0.000104121930231029,-0.000103085846312987,-0.00010206007265968,-0.000101044506661317,-0.000100039046729507,-9.90435922870873e-05,-9.80580437580526e-05,-9.70823025575861e-05,-9.61162710821892e-05,-9.51598526999097e-05,-9.42129517406671e-05,-9.32754734866747e-05,-9.2347324162957e-05,-9.14284109279612e-05,-9.05186418642636e-05,-8.96179259693662e-05,-8.87261731465878e-05,-8.78432941960435e-05,-8.69692008057157e-05,-8.61038055426134e-05,-8.52470218440195e-05,-8.43987640088252e-05,-8.35589471889516e-05,-8.27274873808561e-05,-8.19043014171229e-05,-8.10893069581385e-05,-8.02824224838492e-05,-7.94835672856013e-05,-7.86926614580621e-05,-7.79096258912221e-05,-7.71343822624755e-05,-7.63668530287818e-05,-7.56069614189031e-05,-7.48546314257204e-05,-7.41097877986257e-05,-7.33723560359901e-05,-7.2642262377707e-05,-7.19194337978096e-05,-7.12037979971614e-05,-7.04952833962207e-05,-6.97938191278756e-05,-6.90993350303516e-05,-6.84117616401897e-05,-6.77310301852938e-05,-6.7057072578048e-05,-6.63898214085019e-05,-6.57292099376247e-05,-6.50751720906252e-05,-6.44276424503396e-05,-6.37865562506843e-05,-6.31518493701742e-05,-6.25234583255054e-05,-6.19013202652027e-05,-6.12853729633288e-05,-6.06755548132573e-05,-6.00718048215078e-05,-5.94740626016416e-05,-5.88822683682187e-05,-5.82963629308151e-05,-5.77162876880992e-05,-5.7141984621968e-05,-5.65733962917406e-05,-5.60104658284106e-05,-5.54531369289548e-05,-5.49013538506997e-05,-5.4355061405743e-05,-5.38142049554309e-05,-5.32787304048914e-05,-5.27485841976202e-05,-5.22237133101226e-05,-5.1704065246607e-05,-5.11895880337324e-05,-5.06802302154072e-05,-5.01759408476415e-05,-4.96766694934482e-05,-4.9182366217797e-05,-4.86929815826179e-05,-4.82084666418538e-05,-4.77287729365639e-05,-4.7253852490074e-05,-4.67836578031766e-05,-4.63181418493784e-05,-4.58572580701942e-05,-4.54009603704892e-05,-4.49492031138664e-05,-4.45019411181006e-05,-4.40591296506177e-05,-4.36207244240192e-05,-4.31866815916504e-05,-4.27569577432143e-05,-4.23315099004276e-05,-4.1910295512721e-05,-4.14932724529814e-05,-4.10803990133378e-05,-4.06716339009879e-05,-4.02669362340667e-05,-3.98662655375564e-05,-3.9469581739237e-05,-3.90768451656772e-05,-3.86880165382645e-05,-3.83030569692763e-05,-3.79219279579887e-05,-3.75445913868248e-05,-3.71710095175413e-05,-3.68011449874528e-05,-3.64349608056935e-05,-3.60724203495174e-05,-3.57134873606332e-05,-3.53581259415777e-05,-3.5006300552124e-05,-3.46579760057264e-05,-3.43131174659998e-05,-3.39716904432348e-05,-3.36336607909469e-05,-3.32989947024614e-05,-3.296765870753e-05,-3.26396196689835e-05,-3.23148447794161e-05,-3.19933015579037e-05,-3.1674957846754e-05,-3.13597818082904e-05,-3.1047741921666e-05,-3.07388069797108e-05,-3.04329460858097e-05,-3.01301286508119e-05,-2.98303243899702e-05,-2.95335033199121e-05,-2.92396357556399e-05,-2.89486923075615e-05,-2.86606438785498e-05,-2.83754616610327e-05,-2.80931171341108e-05,-2.78135820607043e-05,-2.75368284847286e-05,-2.72628287282975e-05,-2.69915553889546e-05,-2.67229813369321e-05,-2.64570797124369e-05,-2.61938239229636e-05,-2.59331876406347e-05,-2.56751447995668e-05,-2.54196695932629e-05,-2.51667364720313e-05,-2.49163201404298e-05,-2.46683955547351e-05,-2.4422937920438e-05,-2.41799226897629e-05,-2.39393255592123e-05,-2.37011224671361e-05,-2.34652895913241e-05,-2.32318033466237e-05,-2.30006403825801e-05,-2.27717775811012e-05,-2.25451920541447e-05,-2.23208611414287e-05,-2.20987624081651e-05,-2.18788736428156e-05,-2.16611728548699e-05,-2.14456382726458e-05,-2.12322483411117e-05,-2.10209817197305e-05,-2.08118172803249e-05,-2.06047341049641e-05,-2.03997114838714e-05,-2.01967289133527e-05,-1.99957660937457e-05,-1.97968029273893e-05,-1.95998195166135e-05,-1.94047961617487e-05,-1.92117133591559e-05,-1.90205517992755e-05,-1.88312923646959e-05,-1.8643916128241e-05,-1.8458404351078e-05,-1.82747384808419e-05,-1.80929001497805e-05,-1.79128711729174e-05,-1.77346335462322e-05,-1.75581694448608e-05,-1.73834612213117e-05,-1.72104914037012e-05,-1.70392426940058e-05,-1.6869697966332e-05,-1.67018402652033e-05,-1.65356528038643e-05,-1.6371118962602e-05,-1.62082222870827e-05,-1.60469464867071e-05,-1.58872754329805e-05,-1.57291931578995e-05,-1.55726838523551e-05,-1.54177318645515e-05,-1.52643216984403e-05,-1.51124380121711e-05,-1.49620656165566e-05,-1.48131894735534e-05,-1.46657946947583e-05,-1.45198665399188e-05,-1.43753904154588e-05,-1.42323518730193e-05,-1.40907366080131e-05,-1.39505304581938e-05,-1.381171940224e-05,-1.36742895583523e-05,-1.3538227182865e-05,-1.34035186688719e-05,-1.32701505448649e-05,-1.31381094733868e-05,-1.30073822496973e-05,-1.28779558004524e-05,-1.27498171823968e-05,-1.26229535810693e-05,-1.2497352309521e-05,-1.2373000807047e-05,-1.22498866379294e-05,-1.2127997490194e-05,-1.20073211743787e-05,-1.18878456223145e-05,-1.17695588859182e-05,-1.1652449135998e-05,-1.15365046610697e-05,-1.1421713866186e-05,-1.13080652717763e-05,-1.11955475124991e-05,-1.10841493361048e-05,-1.09738596023106e-05,-1.08646672816862e-05,-1.0756561454551e-05,-1.06495313098815e-05,-1.05435661442304e-05,-1.04386553606558e-05,-1.03347884676619e-05,-1.0231955078149e-05,-1.01301449083754e-05,-1.00293477769281e-05,-9.9295536037053e-06,-9.83075240890763e-06,-9.73293431204044e-06,-9.63608953092545e-06,-9.54020838072249e-06,-9.4452812729608e-06,-9.35129871458016e-06,-9.25825130698142e-06,-9.16612974508652e-06,-9.0749248164079e-06,-8.98462740012712e-06,-8.89522846618269e-06,-8.80671907436692e-06,-8.71909037343186e-06,-8.63233360020402e-06,-8.54644007870795e-06,-8.46140121929858e-06,-8.37720851780215e-06,-8.29385355466568e-06,-8.21132799411494e-06,-8.12962358332076e-06,-8.04873215157374e-06,-7.96864560946695e-06,-7.88935594808702e-06,-7.81085523821312e-06,-7.73313562952397e-06,-7.6561893498127e-06,-7.5800087042096e-06,-7.50458607441249e-06,-7.4299139179249e-06,-7.35598476730166e-06,-7.28279122940211e-06,-7.21032598465075e-06,-7.13858178630518e-06,-7.06755145973133e-06,-6.997227901686e-06,-6.9276040796064e-06,-6.85867303090687e-06,-6.79042786228256e-06,-6.72286174902e-06,-6.6559679343146e-06,-6.58973972859488e-06,-6.5241705088535e-06,-6.45925371798484e-06,-6.3949828641293e-06,-6.33135152002399e-06,-6.26835332236002e-06,-6.20598197114604e-06,-6.14423122907825e-06,-6.08309492091657e-06,-6.02256693286711e-06,-5.96264121197071e-06,-5.9033117654976e-06,-5.84457266034808e-06,-5.78641802245919e-06,-5.72884203621721e-06,-5.67183894387606e-06,-5.61540304498154e-06,-5.55952869580117e-06,-5.5042103087598e-06,-5.44944235188082e-06,-5.3952193482329e-06,-5.34153587538231e-06,-5.28838656485054e-06,-5.23576610157752e-06,-5.18366922338997e-06,-5.13209072047526e-06,-5.08102543486028e-06,-5.03046825989569e-06,-4.98041413974517e-06,-4.93085806887983e-06,-4.88179509157762e-06,-4.83322030142769e-06,-4.78512884083976e-06,-4.73751590055831e-06,-4.69037671918162e-06,-4.64370658268561e-06,-4.59750082395238e-06,-4.55175482230349e-06,-4.5064640030379e-06,-4.46162383697438e-06,-4.41722983999864e-06,-4.37327757261486e-06,-4.32976263950171e-06,-4.28668068907281e-06,-4.24402741304153e-06,-4.20179854599014e-06,-4.15998986494325e-06,-4.11859718894547e-06,-4.0776163786433e-06,-4.03704333587117e-06,-3.99687400324161e-06,-3.95710436373947e-06,-3.91773044032021e-06,-3.87874829551217e-06,-3.84015403102277e-06,-3.80194378734874e-06,-3.76411374339005e-06,-3.72666011606786e-06,-3.68957915994612e-06,-3.65286716685707e-06,-3.61652046553038e-06,-3.580535421226e-06,-3.54490843537064e-06,-3.50963594519796e-06,-3.47471442339222e-06,-3.44014037773555e-06,-3.40591035075872e-06,-3.37202091939533e-06,-3.33846869463957e-06,-3.30525032120722e-06,-3.27236247720015e-06,-3.2398018737741e-06,-3.20756525480979e-06,-3.17564939658728e-06,-3.14405110746359e-06,-3.11276722755352e-06,-3.08179462841365e-06,-3.05113021272948e-06,-3.02077091400566e-06,-2.99071369625938e-06,-2.96095555371671e-06,-2.93149351051203e-06,-2.90232462039043e-06,-2.87344596641306e-06,-2.84485466066543e-06,-2.81654784396862e-06,-2.78852268559334e-06,-2.76077638297681e-06,-2.73330616144258e-06,-2.70610927392294e-06,-2.6791830006843e-06,-2.65252464905514e-06,-2.62613155315675e-06,-2.60000107363666e-06,-2.57413059740466e-06,-2.54851753737147e-06,-2.52315933219009e-06,-2.49805344599955e-06,-2.47319736817141e-06,-2.44858861305864e-06,-2.42422471974704e-06,-2.40010325180919e-06,-2.37622179706072e-06,-2.35257796731915e-06,-2.32916939816503e-06,-2.30599374870549e-06,-2.28304870134017e-06,-2.26033196152942e-06,-2.23784125756483e-06,-2.21557434034209e-06,-2.19352898313605e-06,-2.17170298137805e-06,-2.1500941524354e-06,-2.12870033539322e-06,-2.10751939083824e-06,-2.08654920064489e-06,-2.06578766776348e-06,-2.0452327160105e-06,-2.02488228986095e-06,-2.00473435424284e-06,-1.98478689433365e-06,-1.96503791535882e-06,-1.94548544239229e-06,-1.92612752015901e-06,-1.90696221283937e-06,-1.88798760387566e-06,-1.86920179578036e-06,-1.85060290994642e-06,-1.83218908645938e-06,-1.81395848391137e-06,-1.79590927921698e-06,-1.77803966743093e-06,-1.76034786156756e-06,-1.74283209242215e-06,-1.72549060839398e-06,-1.70832167531119e-06,-1.6913235762573e-06,-1.67449461139959e-06,-1.65783309781904e-06,-1.64133736934208e-06,-1.62500577637396e-06,-1.60883668573377e-06,-1.59282848049112e-06,-1.57697955980447e-06,-1.56128833876099e-06,-1.54575324821813e-06,-1.53037273464664e-06,-1.51514525997525e-06,-1.50006930143685e-06,-1.4851433514162e-06,-1.47036591729917e-06,-1.4557355213235e-06,-1.44125070043096e-06,-1.42691000612111e-06,-1.41271200430638e-06,-1.39865527516873e-06,-1.3847384130176e-06,-1.37096002614935e-06,-1.35731873670813e-06,-1.34381318054805e-06,-1.33044200709675e-06,-1.3172038792204e-06,-1.3040974730899e-06,-1.29112147804857e-06,-1.27827459648105e-06,-1.26555554368352e-06,-1.25296304773524e-06,-1.24049584937137e-06,-1.22815270185703e-06,-1.21593237086259e-06,-1.20383363434031e-06,-1.19185528240205e-06,-1.17999611719834e-06,-1.16825495279854e-06,-1.15663061507231e-06,-1.14512194157212e-06,-1.13372778141706e-06,-1.12244699517774e-06,-1.11127845476229e-06,-1.10022104330364e-06,-1.08927365504776e-06,-1.07843519524309e-06,-1.06770458003111e-06,-1.0570807363379e-06,-1.04656260176685e-06,-1.03614912449241e-06,-1.02583926315492e-06,-1.01563198675648e-06,-1.00552627455781e-06,-9.95521115976211e-07,-9.85615510484476e-07,-9.7580846751086e-07,-9.66099006340008e-07,-9.56486156014883e-07,-9.4696895523967e-07,-9.37546452283641e-07,-9.28217704885988e-07,-9.18981780161584e-07,-9.09837754507702e-07,-9.00784713511647e-07,-8.91821751859316e-07,-8.82947973244666e-07,-8.74162490280078e-07,-8.65464424407617e-07,-8.56852905811178e-07,-8.48327073329501e-07,-8.39886074370053e-07,-8.31529064823765e-07,-8.23255208980623e-07,-8.15063679446094e-07,-8.06953657058385e-07,-7.98924330806526e-07,-7.90974897749264e-07,-7.83104562934777e-07,-7.75312539321165e-07,-7.67598047697751e-07,-7.59960316607158e-07,-7.52398582268164e-07,-7.44912088499316e-07,-7.37500086643318e-07,-7.30161835492157e-07,-7.22896601212992e-07,-7.15703657274753e-07,-7.08582284375502e-07,-7.01531770370492e-07,-6.94551410200956e-07,-6.87640505823599e-07,-6.80798366140789e-07,-6.74024306931454e-07,-6.67317650782648e-07,-6.60677727021822e-07,-6.54103871649741e-07,-6.47595427274094e-07,-6.41151743043749e-07,-6.34772174583667e-07,-6.28456083930465e-07,-6.22202839468617e-07,-6.16011815867292e-07,-6.09882394017823e-07,-6.03813960971788e-07,-5.97805909879722e-07,-5.91857639930424e-07,-5.85968556290883e-07,-5.80138070046786e-07,-5.74365598143629e-07,-5.68650563328412e-07,-5.62992394091912e-07,-5.57390524611529e-07,-5.51844394694706e-07,-5.46353449722906e-07,-5.40917140596151e-07,-5.35534923678112e-07,-5.30206260741744e-07,-5.24930618915459e-07,-5.19707470629842e-07,-5.14536293564897e-07,-5.09416570597804e-07,-5.04347789751213e-07,-4.99329444142045e-07,-4.94361031930802e-07,-4.89442056271381e-07,-4.84572025261392e-07,-4.79750451892962e-07,-4.74976854004041e-07,-4.70250754230178e-07,-4.65571679956786e-07,-4.60939163271883e-07,-4.56352740919296e-07,-4.51811954252335e-07,-4.47316349187932e-07,-4.42865476161228e-07,-4.38458890080616e-07,-4.34096150283235e-07,-4.29776820490897e-07,-4.25500468766464e-07,-4.21266667470651e-07,-4.17074993219263e-07,-4.12925026840854e-07,-4.08816353334812e-07,-4.04748561829855e-07,-4.00721245542947e-07,-3.96734001738617e-07,-3.92786431688684e-07,-3.88878140632386e-07,-3.85008737736903e-07,-3.81177836058271e-07,-3.77385052502689e-07,-3.73630007788209e-07,-3.69912326406808e-07,-3.66231636586836e-07,-3.62587570255837e-07,-3.58979763003741e-07,-3.55407854046427e-07,-3.51871486189641e-07,-3.48370305793273e-07,-3.44903962735998e-07,-3.41472110380264e-07,-3.38074405537619e-07,-3.34710508434403e-07,-3.31380082677762e-07,-3.28082795222012e-07,-3.24818316335334e-07,-3.21586319566799e-07,-3.18386481713724e-07,-3.15218482789349e-07,-3.12082005990841e-07,-3.08976737667611e-07,-3.0590236728995e-07,-3.02858587417975e-07,-2.99845093670883e-07,-2.96861584696517e-07,-2.93907762141226e-07,-2.9098333062003e-07,-2.88087997687084e-07,-2.85221473806432e-07,-2.82383472323048e-07,-2.79573709434179e-07,-2.76791904160956e-07,-2.74037778320303e-07,-2.71311056497113e-07,-2.68611466016707e-07,-2.6593873691757e-07,-2.6329260192435e-07,-2.60672796421133e-07,-2.58079058424978e-07,-2.55511128559724e-07,-2.52968750030046e-07,-2.50451668595779e-07,-2.4795963254649e-07,-2.45492392676313e-07,-2.43049702259021e-07,-2.40631317023359e-07,-2.38236995128612e-07,-2.35866497140424e-07,-2.3351958600685e-07,-2.31196027034658e-07,-2.28895587865851e-07,-2.26618038454437e-07,-2.24363151043421e-07,-2.2213070014203e-07,-2.19920462503165e-07,-2.17732217101073e-07,-2.15565745109247e-07,-2.13420829878541e-07,-2.11297256915506e-07,-2.09194813860942e-07,-2.07113290468658e-07,-2.05052478584451e-07,-2.03012172125287e-07,-2.00992167058695e-07,-1.98992261382363e-07,-1.97012255103937e-07,-1.95051950221021e-07,-1.93111150701378e-07,-1.91189662463325e-07,-1.89287293356327e-07,-1.8740385314178e-07,-1.85539153473986e-07,-1.83693007881319e-07,-1.8186523174758e-07,-1.80055642293532e-07,-1.78264058558624e-07,-1.76490301382891e-07,-1.74734193389046e-07,-1.72995558964732e-07,-1.71274224244967e-07,-1.69570017094757e-07,-1.67882767091877e-07,-1.66212305509838e-07,-1.64558465301004e-07,-1.62921081079895e-07,-1.61299989106644e-07,-1.59695027270623e-07,-1.58106035074235e-07,-1.56532853616859e-07,-1.54975325578965e-07,-1.53433295206378e-07,-1.51906608294705e-07,-1.50395112173911e-07,-1.48898655693058e-07,-1.47417089205183e-07,-1.45950264552336e-07,-1.44498035050765e-07,-1.43060255476247e-07,-1.41636782049564e-07,-1.40227472422126e-07,-1.38832185661736e-07,-1.37450782238498e-07,-1.3608312401086e-07,-1.34729074211805e-07,-1.33388497435168e-07,-1.32061259622101e-07,-1.30747228047664e-07,-1.29446271307552e-07,-1.28158259304957e-07,-1.26883063237555e-07,-1.25620555584628e-07,-1.24370610094311e-07,-1.23133101770966e-07,-1.21907906862684e-07,-1.20694902848908e-07,-1.19493968428181e-07,-1.18304983506017e-07,-1.17127829182892e-07,-1.15962387742349e-07,-1.14808542639234e-07,-1.13666178488034e-07,-1.12535181051342e-07,-1.11415437228435e-07,-1.1030683504396e-07,-1.09209263636737e-07,-1.08122613248675e-07,-1.07046775213794e-07,-1.05981641947359e-07,-1.04927106935122e-07,-1.03883064722669e-07,-1.02849410904878e-07,-1.01826042115471e-07,-1.00812856016687e-07,-9.98097512890399e-08,-9.8816627621191e-08,-9.78333856999169e-08,-9.68599272001762e-08,-9.58961547752801e-08,-9.49419720471545e-08,-9.39972835967042e-08,-9.30619949542707e-08,-9.21360125901833e-08,-9.12192439054089e-08,-9.03115972222893e-08,-8.94129817753756e-08,-8.85233077023494e-08,-8.76424860350389e-08,-8.67704286905195e-08,-8.59070484623076e-08,-8.50522590116386e-08,-8.42059748588328e-08,-8.33681113747486e-08,-8.25385847723179e-08,-8.1717312098169e-08,-8.09042112243293e-08,-8.00992008400144e-08,-7.93022004434957e-08,-7.85131303340498e-08,-7.77319116039901e-08,-7.69584661307737e-08,-7.61927165691914e-08,-7.54345863436307e-08,-7.46839996404205e-08,-7.39408814002478e-08,-7.32051573106527e-08,-7.24767537985974e-08,-7.17555980231071e-08,-7.10416178679884e-08,-7.03347419346147e-08,-6.96348995347894e-08,-6.89420206836739e-08,-6.82560360927919e-08,-6.7576877163098e-08,-6.69044759781197e-08,-6.62387652971648e-08,-6.55796785485967e-08,-6.49271498231788e-08,-6.42811138674814e-08,-6.36415060773587e-08,-6.30082624914857e-08,-6.23813197849645e-08,-6.17606152629904e-08,-6.11460868545819e-08,-6.05376731063751e-08,-5.99353131764767e-08,-5.93389468283814e-08,-5.87485144249461e-08,-5.81639569224285e-08,-5.75852158645806e-08,-5.70122333768043e-08,-5.64449521603639e-08,-5.58833154866549e-08,-5.53272671915328e-08,-5.4776751669695e-08,-5.4231713869122e-08,-5.36920992855701e-08,-5.31578539571229e-08,-5.26289244587935e-08,-5.21052578971831e-08,-5.1586801905191e-08,-5.10735046367776e-08,-5.05653147617807e-08,-5.00621814607813e-08,-4.95640544200227e-08,-4.9070883826378e-08,-4.85826203623696e-08,-4.80992152012374e-08,-4.76206200020549e-08,-4.7146786904897e-08,-4.6677668526052e-08,-4.62132179532848e-08,-4.57533887411442e-08,-4.52981349063199e-08,-4.48474109230425e-08,-4.4401171718532e-08,-4.39593726684903e-08,-4.35219695926382e-08,-4.3088918750298e-08,-4.26601768360188e-08,-4.22357009752466e-08,-4.18154487200359e-08,-4.13993780448059e-08,-4.0987447342137e-08,-4.05796154186106e-08,-4.01758414906897e-08,-3.97760851806398e-08,-3.93803065124924e-08,-3.89884659080456e-08,-3.86005241829084e-08,-3.821644254258e-08,-3.78361825785721e-08,-3.74597062645672e-08,-3.70869759526157e-08,-3.67179543693718e-08,-3.63526046123653e-08,-3.59908901463124e-08,-3.56327747994607e-08,-3.52782227599737e-08,-3.49271985723479e-08,-3.45796671338684e-08,-3.42355936910983e-08,-3.38949438364027e-08,-3.35576835045091e-08,-3.32237789690996e-08,-3.28931968394393e-08,-3.25659040570362e-08,-3.22418678923362e-08,-3.19210559414499e-08,-3.16034361229113e-08,-3.12889766744713e-08,-3.09776461499197e-08,-3.0669413415942e-08,-3.03642476490048e-08,-3.00621183322745e-08,-2.97629952525647e-08,-2.94668484973157e-08,-2.91736484516025e-08,-2.88833657951735e-08,-2.85959714995189e-08,-2.83114368249667e-08,-2.80297333178104e-08,-2.77508328074618e-08,-2.74747074036354e-08,-2.72013294935581e-08,-2.6930671739209e-08,-2.6662707074585e-08,-2.6397408702994e-08,-2.61347500943758e-08,-2.58747049826485e-08,-2.56172473630823e-08,-2.53623514896985e-08,-2.51099918726956e-08,-2.48601432758996e-08,-2.46127807142407e-08,-2.4367879451255e-08,-2.41254149966099e-08,-2.38853631036565e-08,-2.36476997670035e-08,-2.34124012201177e-08,-2.31794439329464e-08,-2.29488046095652e-08,-2.27204601858482e-08,-2.24943878271609e-08,-2.22705649260777e-08,-2.20489691001202e-08,-2.182957818952e-08,-2.16123702550015e-08,-2.13973235755891e-08,-2.11844166464339e-08,-2.09736281766645e-08,-2.07649370872569e-08,-2.05583225089267e-08,-2.03537637800429e-08,-2.01512404445608e-08,-1.99507322499768e-08,-1.97522191453031e-08,-1.95556812790628e-08,-1.93610989973042e-08,-1.91684528416358e-08,-1.89777235472805e-08,-1.87888920411488e-08,-1.86019394399316e-08,-1.84168470482119e-08,-1.82335963565954e-08,-1.80521690398591e-08,-1.78725469551192e-08,-1.76947121400167e-08,-1.75186468109207e-08,-1.73443333611508e-08,-1.71717543592157e-08,-1.70008925470707e-08,-1.68317308383911e-08,-1.66642523168645e-08,-1.6498440234498e-08,-1.63342780099446e-08,-1.61717492268442e-08,-1.60108376321821e-08,-1.58515271346642e-08,-1.5693801803107e-08,-1.55376458648454e-08,-1.53830437041545e-08,-1.52299798606887e-08,-1.50784390279356e-08,-1.49284060516847e-08,-1.47798659285128e-08,-1.46328038042831e-08,-1.44872049726601e-08,-1.43430548736384e-08,-1.42003390920876e-08,-1.40590433563099e-08,-1.39191535366134e-08,-1.3780655643899e-08,-1.36435358282613e-08,-1.3507780377604e-08,-1.33733757162684e-08,-1.32403084036758e-08,-1.31085651329834e-08,-1.2978132729754e-08,-1.2848998150638e-08,-1.27211484820693e-08,-1.25945709389741e-08,-1.24692528634921e-08,-1.23451817237109e-08,-1.22223451124125e-08,-1.21007307458332e-08,-1.19803264624343e-08,-1.18611202216869e-08,-1.1743100102867e-08,-1.16262543038641e-08,-1.15105711400004e-08,-1.13960390428628e-08,-1.12826465591457e-08,-1.11703823495058e-08,-1.10592351874282e-08,-1.09491939581038e-08,-1.08402476573176e-08,-1.07323853903483e-08,-1.06255963708789e-08,-1.05198699199184e-08,-1.04151954647329e-08,-1.03115625377896e-08,-1.0208960775709e-08,-1.01073799182292e-08,-1.00068098071793e-08,-9.90724038546413e-09,-9.80866169605837e-09,-9.71106388101051e-09,-9.61443718045752e-09,-9.51877193164847e-09,-9.42405856797854e-09,-9.33028761803211e-09,-9.2374497046358e-09,-9.14553554392069e-09,-9.05453594439379e-09,-8.96444180601914e-09,-8.8752441193075e-09,-8.7869339644157e-09,-8.69950251025437e-09,-8.61294101360505e-09,-8.52724081824566e-09,-8.44239335408507e-09,-8.35839013630595e-09,-8.27522276451627e-09,-8.19288292190938e-09,-8.11136237443214e-09,-8.03065296996174e-09,-7.95074663749021e-09,-7.87163538631759e-09,-7.79331130525258e-09,-7.71576656182166e-09,-7.63899340148571e-09,-7.56298414686448e-09,-7.48773119696905e-09,-7.41322702644149e-09,-7.33946418480257e-09,-7.26643529570641e-09,-7.19413305620313e-09,-7.12255023600839e-09,-7.05167967678032e-09,-6.98151429140383e-09,-6.91204706328171e-09,-6.84327104563317e-09,-6.77517936079893e-09,-6.70776519955369e-09,-6.64102182042496e-09,-6.57494254901908e-09,-6.50952077735375e-09,-6.44474996319711e-09,-6.38062362941369e-09,-6.31713536331649e-09,-6.25427881602594e-09,-6.19204770183474e-09,-6.13043579757956e-09,-6.06943694201847e-09,-6.00904503521499e-09,-5.94925403792802e-09,-5.89005797100786e-09,-5.83145091479842e-09,-5.77342700854511e-09,-5.71598044980887e-09,-5.65910549388583e-09,-5.60279645323291e-09,-5.54704769689906e-09,-5.49185364996206e-09,-5.43720879297115e-09,-5.38310766139498e-09,-5.32954484507525e-09,-5.27651498768557e-09,-5.22401278619596e-09,-5.17203299034241e-09,-5.12057040210195e-09,-5.06961987517281e-09,-5.01917631445972e-09,-4.96923467556453e-09,-4.91978996428163e-09,-4.87083723609864e-09,-4.82237159570185e-09,-4.77438819648679e-09,-4.72688224007345e-09,-4.67984897582655e-09,-4.63328370038043e-09,-4.58718175716863e-09,-4.54153853595838e-09,-4.49634947238943e-09,-4.45161004751775e-09,-4.40731578736345e-09,-4.36346226246359e-09,-4.32004508742907e-09,-4.27705992050613e-09,-4.23450246314223e-09,-4.19236845955608e-09,-4.15065369631219e-09,-4.10935400189939e-09,-4.0684652463138e-09,-4.02798334064571e-09,-3.98790423667078e-09,-3.94822392644518e-09,-3.90893844190475e-09,-3.87004385446828e-09,-3.83153627464453e-09,-3.79341185164342e-09,-3.75566677299081e-09,-3.71829726414735e-09,-3.68129958813097e-09,-3.64467004514319e-09,-3.60840497219916e-09,-3.57250074276131e-09,-3.53695376637676e-09,-3.50176048831818e-09,-3.46691738922843e-09,-3.4324209847685e-09,-3.39826782526917e-09,-3.36445449538601e-09,-3.3309776137578e-09,-3.29783383266847e-09,-3.26501983771223e-09,-3.23253234746222e-09,-3.20036811314231e-09,-3.16852391830224e-09,-3.13699657849594e-09,-3.10578294096314e-09,-3.07487988431405e-09,-3.04428431821721e-09,-3.01399318309051e-09,-2.98400344979513e-09,-2.95431211933276e-09,-2.92491622254556e-09,-2.89581281981934e-09,-2.86699900078954e-09,-2.83847188405022e-09,-2.81022861686593e-09,-2.78226637488637e-09,-2.75458236186402e-09,-2.72717380937449e-09,-2.70003797653967e-09,-2.67317214975363e-09,-2.64657364241128e-09,-2.62023979463973e-09,-2.59416797303219e-09,-2.5683555703848e-09,-2.54280000543572e-09,-2.51749872260718e-09,-2.49244919174976e-09,-2.4676489078895e-09,-2.44309539097732e-09,-2.41878618564105e-09,-2.3947188609399e-09,-2.37089101012129e-09,-2.3473002503803e-09,-2.32394422262125e-09,-2.30082059122191e-09,-2.27792704379984e-09,-2.25526129098121e-09,-2.23282106617182e-09,-2.2106041253305e-09,-2.18860824674462e-09,-2.16683123080797e-09,-2.14527089980081e-09,-2.12392509767205e-09,-2.10279168982368e-09,-2.08186856289729e-09,-2.06115362456273e-09,-2.0406448033089e-09,-2.02034004823657e-09,-2.0002373288533e-09,-1.98033463487038e-09,-1.96062997600182e-09,-1.9411213817653e-09,-1.92180690128514e-09,-1.90268460309716e-09,-1.88375257495561e-09,-1.8650089236419e-09,-1.84645177477524e-09,-1.82807927262529e-09,-1.80988957992651e-09,-1.79188087769446e-09,-1.77405136504389e-09,-1.75639925900869e-09,-1.73892279436352e-09,-1.72162022344735e-09,-1.70448981598865e-09,-1.6875298589324e-09,-1.67073865626876e-09,-1.65411452886344e-09,-1.63765581428986e-09,-1.62136086666282e-09,-1.60522805647398e-09,-1.58925577042888e-09,-1.57344241128558e-09,-1.55778639769498e-09,-1.54228616404268e-09,-1.52694016029238e-09,-1.51174685183091e-09,-1.49670471931477e-09,-1.48181225851815e-09,-1.46706798018255e-09,-1.45247040986787e-09,-1.43801808780487e-09,-1.42370956874933e-09,-1.40954342183739e-09,-1.39551823044255e-09,-1.38163259203399e-09,-1.36788511803628e-09,-1.35427443369057e-09,-1.34079917791706e-09,-1.32745800317895e-09,-1.31424957534764e-09,-1.30117257356934e-09,-1.28822569013296e-09,-1.27540763033938e-09,-1.26271711237191e-09,-1.25015286716818e-09,-1.23771363829321e-09,-1.22539818181372e-09,-1.21320526617381e-09,-1.20113367207175e-09,-1.18918219233806e-09,-1.1773496318148e-09,-1.16563480723606e-09,-1.15403654710961e-09,-1.14255369159977e-09,-1.13118509241142e-09,-1.11992961267516e-09,-1.10878612683364e-09,-1.09775352052897e-09,-1.08683069049134e-09,-1.07601654442862e-09,-1.06531000091721e-09,-1.05470998929382e-09,-1.04421544954845e-09,-1.03382533221839e-09,-1.02353859828323e-09,-1.01335421906101e-09,-1.00327117610531e-09,-9.93288461103438e-10,-9.83405075775565e-10,-9.73620031774921e-10,-9.63932350588953e-10,-9.5434106344146e-10,-9.44845211195737e-10,-9.35443844258639e-10,-9.26136022485639e-10,-9.16920815086797e-10,-9.07797300533695e-10,-8.98764566467268e-10,-8.89821709606582e-10,-8.80967835658499e-10,-8.72202059228237e-10,-8.63523503730853e-10,-8.54931301303555e-10,-8.46424592718946e-10,-8.3800252729907e-10,-8.2966426283037e-10,-8.21408965479442e-10,-8.13235809709673e-10,-8.05143978198676e-10,-7.97132661756548e-10,-7.89201059244974e-10,-7.81348377497085e-10,-7.73573831238166e-10,-7.65876643007104e-10,-7.58256043078664e-10,-7.50711269386503e-10,-7.43241567446957e-10,-7.35846190283611e-10,-7.2852439835258e-10,-7.21275459468572e-10,-7.14098648731651e-10,-7.06993248454766e-10,-6.99958548091962e-10,-6.92993844167342e-10,-6.8609844020471e-10,-6.79271646657917e-10,-6.72512780841923e-10,-6.65821166864507e-10,-6.591961355587e-10,-6.52637024415844e-10,-6.46143177519361e-10,-6.39713945479145e-10,-6.33348685366636e-10,-6.27046760650517e-10,-6.20807541133061e-10,-6.1463040288712e-10,-6.08514728193716e-10,-6.02459905480286e-10,-5.96465329259507e-10,-5.90530400068765e-10,-5.84654524410194e-10,-5.78837114691327e-10,-5.73077589166347e-10,-5.67375371877897e-10,-5.617298925995e-10,-5.56140586778518e-10,-5.50606895479714e-10,-5.45128265329343e-10,-5.39704148459823e-10,-5.34334002454951e-10,-5.29017290295645e-10,-5.23753480306261e-10,-5.1854204610141e-10,-5.13382466533331e-10,-5.08274225639763e-10,-5.03216812592363e-10,-4.98209721645607e-10,-4.93252452086229e-10,-4.88344508183143e-10,-4.83485399137865e-10,-4.78674639035443e-10,-4.73911746795854e-10,-4.69196246125908e-10,-4.64527665471604e-10,-4.59905537970987e-10,-4.55329401407456e-10,-4.50798798163538e-10,-4.46313275175136e-10,-4.41872383886208e-10,-4.37475680203928e-10,-4.3312272445426e-10,-4.28813081338003e-10,-4.24546319887252e-10,-4.20322013422307e-10,-4.16139739509001e-10,-4.11999079916455e-10,-4.07899620575261e-10,-4.03840951536066e-10,-3.99822666928585e-10,-3.95844364921007e-10,-3.91905647679817e-10,-3.88006121330006e-10,-3.84145395915689e-10,-3.80323085361111e-10,-3.76538807432025e-10,-3.72792183697489e-10,-3.69082839492003e-10,-3.65410403878058e-10,-3.6177450960903e-10,-3.58174793092461e-10,-3.54610894353703e-10,-3.51082456999907e-10,-3.47589128184401e-10,-3.44130558571389e-10,-3.4070640230103e-10,-3.37316316954839e-10,-3.3395996352146e-10,-3.3063700636275e-10,-3.27347113180225e-10,-3.24089954981824e-10,-3.20865206049013e-10,-3.17672543904211e-10,-3.14511649278542e-10,-3.1138220607991e-10,-3.08283901361386e-10,-3.05216425289918e-10,-3.02179471115339e-10,-2.99172735139703e-10,-2.96195916686907e-10,-2.93248718072622e-10,-2.90330844574533e-10,-2.87442004402856e-10,-2.84581908671169e-10,-2.81750271367512e-10,-2.78946809325797e-10,-2.76171242197484e-10,-2.73423292423544e-10,-2.70702685206712e-10,-2.68009148483997e-10,-2.65342412899484e-10,-2.6270221177739e-10,-2.60088281095405e-10,-2.57500359458279e-10,-2.54938188071693e-10,-2.52401510716374e-10,-2.49890073722471e-10,-2.47403625944192e-10,-2.44941918734687e-10,-2.42504705921184e-10,-2.40091743780369e-10,-2.37702791014019e-10,-2.35337608724864e-10,-2.32995960392705e-10,-2.30677611850759e-10,-2.28382331262236e-10,-2.26109889097168e-10,-2.23860058109442e-10,-2.21632613314086e-10,-2.19427331964762e-10,-2.17243993531498e-10,-2.15082379678633e-10,-2.12942274242978e-10,-2.10823463212207e-10,-2.0872573470345e-10,-2.0664887894211e-10,-2.04592688240877e-10,-2.0255695697897e-10,-2.00541481581564e-10,-1.98546060499441e-10,-1.9657049418883e-10,-1.94614585091453e-10,-1.9267813761477e-10,-1.90760958112419e-10,-1.88862854864854e-10,-1.86983638060166e-10,-1.8512311977511e-10,-1.83281113956306e-10,-1.81457436401637e-10,-1.79651904741829e-10,-1.7786433842221e-10,-1.76094558684659e-10,-1.74342388549727e-10,-1.72607652798941e-10,-1.70890177957278e-10,-1.69189792275825e-10,-1.67506325714596e-10,-1.65839609925531e-10,-1.64189478235664e-10,-1.62555765630449e-10,-1.60938308737265e-10,-1.59336945809074e-10,-1.57751516708249e-10,-1.56181862890558e-10,-1.54627827389312e-10,-1.53089254799666e-10,-1.51565991263077e-10,-1.50057884451925e-10,-1.48564783554269e-10,-1.47086539258777e-10,-1.45623003739786e-10,-1.44174030642525e-10,-1.42739475068477e-10,-1.41319193560888e-10,-1.39913044090426e-10,-1.3852088604097e-10,-1.37142580195555e-10,-1.35777988722448e-10,-1.34426975161366e-10,-1.33089404409825e-10,-1.31765142709635e-10,-1.30454057633525e-10,-1.29156018071891e-10,-1.27870894219699e-10,-1.26598557563489e-10,-1.25338880868538e-10,-1.24091738166126e-10,-1.22857004740942e-10,-1.21634557118616e-10,-1.20424273053367e-10,-1.19226031515779e-10,-1.180397126807e-10,-1.16865197915258e-10,-1.15702369766997e-10,-1.14551111952135e-10,-1.13411309343928e-10,-1.12282847961169e-10,-1.11165614956776e-10,-1.10059498606519e-10,-1.08964388297842e-10,-1.07880174518799e-10,-1.06806748847111e-10,-1.05744003939315e-10,-1.04691833520036e-10,-1.03650132371353e-10,-1.02618796322284e-10,-1.01597722238365e-10,-1.00586808011337e-10,-9.95859525489337e-11,-9.85950557647753e-11,-9.76140185683581e-11,-9.6642742855144e-11,-9.56811314967531e-11,-9.47290883312475e-11,-9.37865181535175e-11,-9.28533267057602e-11,-9.19294206680524e-11,-9.10147076490212e-11,-9.01090961766016e-11,-8.92124956888924e-11,-8.8324816525097e-11,-8.74459699165598e-11,-8.6575867977887e-11,-8.57144236981598e-11,-8.48615509322329e-11,-8.40171643921181e-11,-8.31811796384585e-11,-8.23535130720813e-11,-8.15340819256408e-11,-8.07228042553388e-11,-7.99195989327326e-11,-7.91243856366208e-11,-7.83370848450105e-11,-7.75576178271671e-11,-7.67859066357385e-11,-7.60218740989632e-11,-7.52654438129501e-11,-7.45165401340408e-11,-7.37750881712429e-11,-7.30410137787423e-11,-7.23142435484884e-11,-7.15947048028519e-11,-7.08823255873592e-11,-7.01770346634945e-11,-6.94787615015782e-11,-6.87874362737117e-11,-6.81029898467966e-11,-6.74253537756193e-11,-6.67544602960082e-11,-6.60902423180566e-11,-6.54326334194125e-11,-6.47815678386387e-11,-6.41369804686339e-11,-6.34988068501245e-11,-6.28669831652163e-11,-6.22414462310146e-11,-6.16221334933048e-11,-6.10089830202967e-11,-6.04019334964323e-11,-5.98009242162531e-11,-5.92058950783305e-11,-5.86167865792544e-11,-5.80335398076845e-11,-5.74560964384571e-11,-5.68843987267542e-11,-5.63183895023286e-11,-5.57580121637856e-11,-5.52032106729248e-11,-5.46539295491344e-11,-5.41101138638447e-11,-5.35717092350335e-11,-5.30386618217896e-11,-5.25109183189272e-11,-5.19884259516564e-11,-5.14711324703051e-11,-5.09589861450939e-11,-5.04519357609637e-11,-4.99499306124532e-11,-4.94529204986295e-11,-4.89608557180669e-11,-4.84736870638772e-11,-4.79913658187894e-11,-4.75138437502765e-11,-4.70410731057342e-11,-4.65730066077036e-11,-4.61095974491453e-11,-4.56507992887568e-11,-4.51965662463401e-11,-4.47468528982122e-11,-4.43016142726635e-11,-4.38608058454607e-11,-4.34243835353934e-11,-4.29923036998671e-11,-4.2564523130538e-11,-4.21409990489929e-11,-4.17216891024705e-11,-4.13065513596269e-11,-4.08955443063416e-11,-4.04886268415669e-11,-4.00857582732175e-11,-3.96868983141003e-11,-3.92920070778875e-11,-3.8901045075126e-11,-3.851397320929e-11,-3.81307527728701e-11,-3.77513454435034e-11,-3.7375713280141e-11,-3.70038187192533e-11,-3.66356245710744e-11,-3.62710940158825e-11,-3.59101906003185e-11,-3.55528782337398e-11,-3.51991211846124e-11,-3.48488840769361e-11,-3.45021318867086e-11,-3.41588299384219e-11,-3.38189439015949e-11,-3.3482439787341e-11,-3.31492839449679e-11,-3.28194430586141e-11,-3.24928841439158e-11,-3.21695745447095e-11,-3.18494819297661e-11,-3.1532574289557e-11,-3.12188199330544e-11,-3.09081874845609e-11,-3.0600645880573e-11,-3.02961643666738e-11,-2.99947124944584e-11,-2.96962601184881e-11,-2.94007773932768e-11,-2.91082347703058e-11,-2.88186029950688e-11,-2.85318531041471e-11,-2.82479564223125e-11,-2.79668845596603e-11,-2.768860940877e-11,-2.74131031418947e-11,-2.71403382081779e-11,-2.6870287330899e-11,-2.66029235047455e-11,-2.63382199931115e-11,-2.60761503254257e-11,-2.58166882945027e-11,-2.55598079539232e-11,-2.53054836154391e-11,-2.50536898464046e-11,-2.4804401467233e-11,-2.45575935488786e-11,-2.4313241410344e-11,-2.40713206162115e-11,-2.38318069742003e-11,-2.35946765327465e-11,-2.33599055786083e-11,-2.31274706344947e-11,-2.28973484567176e-11,-2.26695160328675e-11,-2.2443950579512e-11,-2.22206295399179e-11,-2.19995305817951e-11,-2.17806315950637e-11,-2.15639106896423e-11,-2.134934619326e-11,-2.11369166492882e-11,-2.09266008145956e-11,-2.07183776574235e-11,-2.05122263552824e-11,-2.03081262928707e-11,-2.01060570600116e-11,-1.99059984496139e-11,-1.97079304556494e-11,-1.95118332711539e-11,-1.93176872862456e-11,-1.9125473086164e-11,-1.89351714493291e-11,-1.87467633454185e-11,-1.85602299334649e-11,-1.83755525599715e-11,-1.81927127570472e-11,-1.80116922405593e-11,-1.78324729083053e-11,-1.76550368382027e-11,-1.74793662864965e-11,-1.73054436859852e-11,-1.71332516442637e-11,-1.69627729419845e-11,-1.67939905311352e-11,-1.66268875333342e-11,-1.64614472381422e-11,-1.6297653101392e-11,-1.61354887435335e-11,-1.59749379479956e-11,-1.58159846595651e-11,-1.56586129827806e-11,-1.55028071803433e-11,-1.53485516715431e-11,-1.51958310307006e-11,-1.50446299856245e-11,-1.48949334160841e-11,-1.47467263522979e-11,-1.45999939734359e-11,-1.44547216061381e-11,-1.43108947230465e-11,-1.4168498941353e-11,-1.40275200213608e-11,-1.38879438650604e-11,-1.37497565147199e-11,-1.3612944151489e-11,-1.34774930940175e-11,-1.33433897970867e-11,-1.32106208502552e-11,-1.30791729765176e-11,-1.2949033030977e-11,-1.28201879995304e-11,-1.26926249975674e-11,-1.25663312686813e-11,-1.24412941833941e-11,-1.23175012378931e-11,-1.21949400527805e-11,-1.20735983718357e-11,-1.19534640607894e-11,-1.18345251061105e-11,-1.17167696138044e-11,-1.16001858082236e-11,-1.14847620308906e-11,-1.13704867393313e-11,-1.12573485059215e-11,-1.11453360167434e-11,-1.10344380704548e-11,-1.09246435771687e-11,-1.08159415573441e-11,-1.07083211406887e-11,-1.0601771565071e-11,-1.04962821754447e-11,-1.03918424227828e-11,-1.02884418630231e-11,-1.01860701560235e-11,-1.00847170645279e-11,-9.98437245314277e-12,-9.88502628732327e-12,-9.7866686323701e-12,-9.68928965243573e-12,-9.59287960954108e-12,-9.49742886260146e-12,-9.4029278664627e-12,-9.30936717094637e-12,-9.21673741990497e-12,-9.12502935028626e-12,-9.03423379120676e-12,-8.94434166303499e-12,-8.85534397648314e-12,-8.76723183170846e-12,-8.67999641742298e-12,-8.59362901001264e-12,-8.50812097266467e-12,-8.42346375450409e-12,-8.33964888973859e-12,-8.25666799681177e-12,-8.17451277756525e-12,-8.09317501640858e-12,-8.01264657949793e-12,-7.93291941392244e-12,-7.85398554689916e-12,-7.77583708497557e-12,-7.69846621324037e-12,-7.62186519454194e-12,-7.54602636871452e-12,-7.47094215181238e-12,-7.39660503535121e-12,-7.32300758555747e-12,-7.2501424426248e-12,-7.1780023199782e-12,-7.10658000354532e-12,-7.03586835103494e-12,-6.96586029122295e-12,-6.89654882324496e-12,-6.82792701589647e-12,-6.75998800693952e-12,-6.69272500241663e-12,-6.62613127597125e-12,-6.56020016817527e-12,-6.494925085863e-12,-6.43029950147174e-12,-6.36631695238926e-12,-6.30297104030729e-12,-6.24025543058187e-12,-6.17816385159972e-12,-6.11669009415125e-12,-6.05582801080944e-12,-5.99557151531525e-12,-5.93591458196894e-12,-5.87685124502743e-12,-5.81837559810784e-12,-5.76048179359671e-12,-5.70316404206538e-12,-5.64641661169089e-12,-5.59023382768294e-12,-5.53461007171633e-12,-5.47953978136906e-12,-5.42501744956626e-12,-5.37103762402926e-12,-5.31759490673056e-12,-5.26468395335387e-12,-5.21229947275978e-12,-5.16043622645656e-12,-5.10908902807636e-12,-5.05825274285658e-12,-5.00792228712629e-12,-4.95809262779803e-12,-4.90875878186428e-12,-4.85991581589939e-12,-4.81155884556602e-12,-4.76368303512688e-12,-4.71628359696098e-12,-4.66935579108503e-12,-4.62289492467935e-12,-4.57689635161855e-12,-4.53135547200702e-12,-4.48626773171883e-12,-4.44162862194239e-12,-4.39743367872951e-12,-4.35367848254904e-12,-4.31035865784492e-12,-4.26746987259856e-12,-4.2250078378957e-12,-4.18296830749748e-12,-4.14134707741584e-12,-4.10013998549306e-12,-4.05934291098565e-12,-4.01895177415212e-12,-3.97896253584514e-12,-3.93937119710758e-12,-3.90017379877254e-12,-3.86136642106755e-12,-3.82294518322246e-12,-3.78490624308152e-12,-3.74724579671897e-12,-3.70996007805882e-12,-3.67304535849812e-12,-3.63649794653414e-12,-3.60031418739526e-12,-3.56449046267538e-12,-3.5290231899722e-12,-3.49390882252887e-12,-3.4591438488794e-12,-3.42472479249744e-12,-3.39064821144869e-12,-3.35691069804664e-12,-3.32350887851181e-12,-3.29043941263446e-12,-3.2576989934404e-12,-3.22528434686045e-12,-3.19319223140293e-12,-3.16141943782956e-12,-3.12996278883449e-12,-3.09881913872662e-12,-3.06798537311498e-12,-3.03745840859732e-12,-3.00723519245175e-12,-2.97731270233145e-12,-2.9476879459625e-12,-2.91835796084455e-12,-2.88931981395468e-12,-2.86057060145396e-12,-2.8321074483972e-12,-2.8039275084454e-12,-2.77602796358104e-12,-2.74840602382642e-12,-2.72105892696452e-12,-2.69398393826288e-12,-2.66717835020005e-12,-2.6406394821949e-12,-2.61436468033853e-12,-2.58835131712882e-12,-2.5625967912078e-12,-2.53709852710139e-12,-2.51185397496197e-12,-2.48686061031325e-12,-2.46211593379796e-12,-2.43761747092781e-12,-2.41336277183612e-12,-2.38934941103276e-12,-2.36557498716162e-12,-2.34203712276053e-12,-2.31873346402341e-12,-2.29566168056499e-12,-2.27281946518767e-12,-2.25020453365091e-12,-2.22781462444268e-12,-2.20564749855341e-12,-2.18370093925205e-12,-2.16197275186437e-12,-2.14046076355353e-12,-2.11916282310277e-12,-2.09807680070029e-12,-2.07720058772629e-12,-2.05653209654206e-12,-2.03606926028128e-12,-2.01581003264325e-12,-1.99575238768834e-12,-1.97589431963532e-12,-1.95623384266086e-12,-1.93676899070086e-12,-1.91749781725391e-12,-1.89841839518661e-12,-1.87952881654084e-12,-1.86082719234302e-12,-1.84231165241512e-12,-1.82398034518773e-12,-1.80583143751484e-12,-1.78786311449058e-12,-1.77007357926765e-12,-1.75246105287772e-12,-1.73502377405346e-12,-1.71775999905246e-12,-1.70066800148285e-12,-1.68374607213061e-12,-1.66699251878871e-12,-1.65040566608786e-12,-1.63398385532896e-12,-1.61772544431724e-12,-1.60162880719807e-12,-1.58569233429432e-12,-1.56991443194541e-12,-1.55429352234796e-12,-1.53882804339799e-12,-1.52351644853473e-12,-1.50835720658592e-12,-1.49334880161474e-12,-1.47848973276818e-12,-1.46377851412698e-12,-1.44921367455701e-12,-1.43479375756217e-12,-1.42051732113877e-12,-1.40638293763124e-12,-1.39238919358947e-12,-1.37853468962738e-12,-1.36481804028304e-12,-1.35123787388008e-12,-1.33779283239054e-12,-1.32448157129908e-12,-1.31130275946848e-12,-1.29825507900658e-12,-1.28533722513447e-12,-1.272547906056e-12,-1.25988584282858e-12,-1.24734976923536e-12,-1.23493843165852e-12,-1.22265058895397e-12,-1.21048501232719e-12,-1.19844048521039e-12,-1.18651580314081e-12,-1.17470977364031e-12,-1.16302121609611e-12,-1.1514489616427e-12,-1.139991853045e-12,-1.12864874458261e-12,-1.11741850193521e-12,-1.10630000206919e-12,-1.0952921331253e-12,-1.08439379430747e-12,-1.07360389577273e-12,-1.06292135852225e-12,-1.05234511429339e-12,-1.04187410545291e-12,-1.03150728489121e-12,-1.0212436159176e-12,-1.01108207215661e-12,-1.00102163744541e-12,-9.91061305732146e-13,-9.81200080975338e-13,-9.71436977044298e-13,-9.61771017620498e-13,-9.52201236099937e-13,-9.42726675496492e-13,-9.33346388346202e-13,-9.24059436612541e-13,-9.14864891592591e-13,-9.05761833824193e-13,-8.96749352993978e-13,-8.87826547846357e-13,-8.78992526093381e-13,-8.70246404325508e-13,-8.61587307923279e-13,-8.5301437096983e-13,-8.4452673616433e-13,-8.36123554736217e-13,-8.27803986360354e-13,-8.19567199072962e-13,-8.11412369188453e-13,-8.03338681217045e-13,-7.95345327783206e-13,-7.8743150954494e-13,-7.7959643511382e-13,-7.7183932097588e-13,-7.64159391413236e-13,-7.56555878426536e-13,-7.49028021658146e-13,-7.41575068316112e-13,-7.34196273098894e-13,-7.26890898120815e-13,-7.19658212838295e-13,-7.12497493976774e-13,-7.05408025458402e-13,-6.98389098330417e-13,-6.91440010694257e-13,-6.84560067635371e-13,-6.77748581153715e-13,-6.71004870094969e-13,-6.64328260082403e-13,-6.57718083449456e-13,-6.51173679172953e-13,-6.44694392807015e-13,-6.38279576417603e-13,-6.31928588517734e-13,-6.25640794003328e-13,-6.1941556408969e-13,-6.13252276248644e-13,-6.07150314146266e-13,-6.01109067581265e-13,-5.95127932423946e-13,-5.89206310555812e-13,-5.83343609809741e-13,-5.77539243910771e-13,-5.71792632417479e-13,-5.66103200663922e-13,-5.60470379702187e-13,-5.54893606245481e-13,-5.49372322611814e-13,-5.43905976668219e-13,-5.38494021775547e-13,-5.331359167338e-13,-5.27831125728007e-13,-5.22579118274649e-13,-5.17379369168601e-13,-5.12231358430623e-13,-5.07134571255347e-13,-5.02088497959811e-13,-4.97092633932479e-13,-4.92146479582785e-13,-4.87249540291174e-13,-4.82401326359633e-13,-4.77601352962733e-13,-4.7284914009913e-13,-4.6814421254358e-13,-4.63486099799405e-13,-4.5887433605145e-13,-4.54308460119497e-13,-4.49788015412147e-13,-4.45312549881164e-13,-4.40881615976263e-13,-4.36494770600364e-13,-4.3215157506527e-13,-4.27851595047812e-13,-4.23594400546401e-13,-4.19379565838041e-13,-4.15206669435751e-13,-4.11075294046409e-13,-4.06985026529038e-13,-4.02935457853473e-13,-3.98926183059476e-13,-3.94956801216223e-13,-3.91026915382225e-13,-3.8713613256562e-13,-3.83284063684887e-13,-3.79470323529928e-13,-3.75694530723547e-13,-3.71956307683319e-13,-3.68255280583823e-13,-3.64591079319268e-13,-3.60963337466469e-13,-3.57371692248222e-13,-3.53815784497011e-13,-3.50295258619096e-13,-3.46809762558958e-13,-3.43358947764084e-13,-3.3994246915012e-13,-3.36559985066357e-13,-3.3321115726157e-13,-3.29895650850184e-13,-3.26613134278797e-13,-3.23363279293018e-13,-3.20145760904637e-13,-3.16960257359137e-13,-3.13806450103506e-13,-3.10684023754393e-13,-3.07592666066558e-13,-3.04532067901659e-13,-3.01501923197327e-13,-2.98501928936567e-13,-2.95531785117455e-13,-2.9259119472313e-13,-2.89679863692106e-13,-2.8679750088885e-13,-2.83943818074683e-13,-2.81118529878943e-13,-2.78321353770457e-13,-2.75552010029285e-13,-2.72810221718742e-13,-2.70095714657714e-13,-2.67408217393232e-13,-2.64747461173331e-13,-2.62113179920169e-13,-2.5950511020343e-13,-2.56922991213964e-13,-2.54366564737724e-13,-2.51835575129931e-13,-2.49329769289513e-13,-2.46848896633801e-13,-2.4439270907346e-13,-2.41960960987688e-13,-2.39553409199649e-13,-2.37169812952159e-13,-2.34809933883605e-13,-2.32473536004116e-13,-2.30160385671956e-13,-2.27870251570164e-13,-2.25602904683422e-13,-2.23358118275151e-13,-2.21135667864841e-13,-2.18935331205596e-13,-2.16756888261919e-13,-2.146001211877e-13,-2.12464814304433e-13,-2.10350754079652e-13,-2.08257729105571e-13,-2.0618553007795e-13,-2.04133949775158e-13,-2.02102783037457e-13,-2.00091826746477e-13,-1.98100879804917e-13,-1.96129743116422e-13,-1.9417821956568e-13,-1.92246113998711e-13,-1.90333233203347e-13,-1.88439385889916e-13,-1.86564382672106e-13,-1.84708036048035e-13,-1.82870160381492e-13,-1.81050571883379e-13,-1.79249088593332e-13,-1.77465530361517e-13,-1.75699718830628e-13,-1.73951477418039e-13,-1.72220631298152e-13,-1.70507007384912e-13,-1.68810434314499e-13,-1.67130742428195e-13,-1.65467763755409e-13,-1.6382133199689e-13,-1.62191282508088e-13,-1.60577452282697e-13,-1.58979679936348e-13,-1.57397805690478e-13,-1.55831671356341e-13,-1.542811203192e-13,-1.5274599752266e-13,-1.5122614945316e-13,-1.49721424124628e-13,-1.48231671063276e-13,-1.46756741292558e-13,-1.45296487318266e-13,-1.43850763113788e-13,-1.42419424105496e-13,-1.41002327158299e-13,-1.3959933056132e-13,-1.38210294013729e-13,-1.36835078610716e-13,-1.35473546829594e-13,-1.3412556251605e-13,-1.32790990870528e-13,-1.31469698434754e-13,-1.30161553078381e-13,-1.28866423985785e-13,-1.27584181642976e-13,-1.26314697824652e-13,-1.25057845581373e-13,-1.23813499226867e-13,-1.22581534325463e-13,-1.21361827679642e-13,-1.20154257317725e-13,-1.18958702481668e-13,-1.17775043614992e-13,-1.16603162350824e-13,-1.1544294150006e-13,-1.1429426503965e-13,-1.13157018100988e-13,-1.12031086958435e-13,-1.10916359017937e-13,-1.09812722805772e-13,-1.08720067957398e-13,-1.0763828520642e-13,-1.06567266373662e-13,-1.05506904356347e-13,-1.04457093117391e-13,-1.03417727674794e-13,-1.02388704091146e-13,-1.01369919463232e-13,-1.00361271911739e-13,-9.93626605710727e-14,-9.83739855792653e-14,-9.73951480679948e-14,-9.64260501526937e-14,-9.54665949227635e-14,-9.45166864318809e-14,-9.35762296884058e-14,-9.26451306458803e-14,-9.17232961936235e-14,-9.08106341474228e-14,-8.99070532403123e-14,-8.90124631134489e-14,-8.81267743070739e-14,-8.72498982515691e-14,-8.63817472585976e-14,-8.55222345123371e-14,-8.46712740607968e-14,-8.3828780807222e-14,-8.29946705015857e-14,-8.21688597321617e-14,-8.13512659171855e-14,-8.05418072965938e-14,-7.974040292385e-14,-7.89469726578495e-14,-7.81614371549039e-14,-7.73837178608087e-14,-7.66137370029861e-14,-7.5851417582709e-14,-7.50966833673996e-14,-7.4349458883008e-14,-7.36096694064625e-14,-7.28772409581993e-14,-7.21521002947634e-14,-7.14341749014837e-14,-7.0723392985223e-14,-7.0019683467197e-14,-6.93229759758679e-14,-6.86332008399054e-14,-6.79502890812217e-14,-6.72741724080714e-14,-6.66047832082238e-14,-6.59420545422015e-14,-6.5285920136585e-14,-6.46363143773876e-14,-6.39931723034914e-14,-6.33564296001536e-14,-6.27260225925728e-14,-6.21018882395232e-14,-6.14839641270495e-14,-6.0872188462225e-14,-6.0266500066974e-14,-5.96668383719517e-14,-5.90731434104894e-14,-5.84853558125957e-14,-5.79034167990214e-14,-5.73272681753798e-14,-5.67568523263286e-14,-5.61921122098078e-14,-5.56329913513347e-14,-5.5079433838358e-14,-5.45313843146645e-14,-5.39887879748457e-14,-5.34515905588149e-14,-5.29197383463834e-14,-5.23931781518863e-14,-5.18718573188655e-14,-5.13557237148034e-14,-5.08447257259092e-14,-5.03388122519586e-14,-4.98379327011821e-14,-4.93420369852076e-14,-4.885107551405e-14,-4.83649991911532e-14,-4.788375940848e-14,-4.74073080416507e-14,-4.69355974451319e-14,-4.64685804474706e-14,-4.60062103465782e-14,-4.5548440905059e-14,-4.50952263455875e-14,-4.46465213463299e-14,-4.42022810364125e-14,-4.37624609914343e-14,-4.33270172290239e-14,-4.28959062044426e-14,-4.24690848062282e-14,-4.20465103518856e-14,-4.16281405836169e-14,-4.1213933664097e-14,-4.08038481722884e-14,-4.03978430993004e-14,-3.99958778442874e-14,-3.95979122103887e-14,-3.92039064007096e-14,-3.88138210143404e-14,-3.84276170424177e-14,-3.80452558642223e-14,-3.76666992433178e-14,-3.72919093237267e-14,-3.69208486261446e-14,-3.65534800441928e-14,-3.61897668407065e-14,-3.58296726440627e-14,-3.54731614445413e-14,-3.51201975907256e-14,-3.47707457859358e-14,-3.44247710847002e-14,-3.40822388892607e-14,-3.37431149461119e-14,-3.34073653425772e-14,-3.30749565034163e-14,-3.27458551874683e-14,-3.24200284843273e-14,-3.20974438110514e-14,-3.17780689089048e-14,-3.14618718401307e-14,-3.11488209847591e-14,-3.08388850374433e-14,-3.05320330043305e-14,-3.02282341999615e-14,-2.99274582442029e-14,-2.96296750592082e-14,-2.93348548664109e-14,-2.90429681835461e-14,-2.87539858217021e-14,-2.84678788824022e-14,-2.81846187547137e-14,-2.7904177112388e-14,-2.76265259110271e-14,-2.73516373852795e-14,-2.70794840460634e-14,-2.68100386778183e-14,-2.65432743357828e-14,-2.62791643433003e-14,-2.60176822891516e-14,-2.57588020249131e-14,-2.5502497662343e-14,-2.52487435707912e-14,-2.49975143746372e-14,-2.4748784950752e-14,-2.45025304259859e-14,-2.42587261746813e-14,-2.40173478162098e-14,-2.37783712125345e-14,-2.35417724657958e-14,-2.33075279159219e-14,-2.30756141382625e-14,-2.28460079412467e-14,-2.26186863640635e-14,-2.23936266743656e-14,-2.21708063659967e-14,-2.195020315674e-14,-2.17317949860909e-14,-2.15155600130503e-14,-2.13014766139407e-14,-2.10895233802437e-14,-2.08796791164595e-14,-2.06719228379867e-14,-2.04662337690244e-14,-2.02625913404942e-14,-2.00609751879836e-14,-1.98613651497094e-14,-1.96637412645013e-14,-1.94680837698061e-14,-1.92743730997114e-14,-1.90825898829887e-14,-1.88927149411566e-14,-1.87047292865624e-14,-1.85186141204844e-14,-1.83343508312505e-14,-1.81519209923785e-14,-1.79713063607324e-14,-1.77924888746984e-14,-1.76154506523791e-14,-1.74401739898046e-14,-1.72666413591626e-14,-1.70948354070455e-14,-1.69247389527148e-14,-1.67563349863833e-14,-1.65896066675142e-14,-1.64245373231365e-14,-1.62611104461783e-14,-1.60993096938157e-14,-1.59391188858386e-14,-1.57805220030327e-14,-1.56235031855776e-14,-1.54680467314607e-14,-1.5314137094907e-14,-1.51617588848247e-14,-1.50108968632657e-14,-1.4861535943902e-14,-1.47136611905175e-14,-1.45672578155134e-14,-1.44223111784304e-14,-1.42788067844837e-14,-1.41367302831147e-14,-1.39960674665545e-14,-1.38568042684044e-14,-1.37189267622285e-14,-1.35824211601613e-14,-1.3447273811529e-14,-1.33134712014838e-14,-1.31809999496534e-14,-1.30498468088021e-14,-1.29199986635066e-14,-1.27914425288442e-14,-1.26641655490943e-14,-1.25381549964527e-14,-1.24133982697593e-14,-1.22898828932374e-14,-1.21675965152465e-14,-1.20465269070467e-14,-1.19266619615764e-14,-1.18079896922413e-14,-1.16904982317154e-14,-1.15741758307547e-14,-1.14590108570224e-14,-1.13449917939249e-14,-1.1232107239461e-14,-1.11203459050812e-14,-1.10096966145589e-14,-1.09001483028729e-14,-1.07916900151005e-14,-1.06843109053228e-14,-1.05780002355393e-14,-1.04727473745943e-14,-1.03685417971141e-14,-1.02653730824542e-14,-1.0163230913657e-14,-1.00621050764204e-14,-9.96198545807671e-15,-9.8628620465805e-15,-9.76472492950795e-15,-9.66756429306573e-15,-9.57137042110913e-15,-9.47613369417082e-15,-9.38184458849866e-15,-9.28849367510365e-15,-9.19607161881659e-15,-9.10456917735476e-15,-9.01397720039789e-15,-8.92428662867274e-15,-8.83548849304739e-15,-8.74757391363421e-15,-8.66053409890213e-15,-8.57436034479707e-15,-8.48904403387181e-15,-8.40457663442411e-15,-8.32094969964375e-15,-8.2381548667675e-15,-8.15618385624302e-15,-8.07502847090107e-15,-7.99468059513542e-15,-7.91513219409154e-15,-7.83637531286297e-15,-7.75840207569609e-15,-7.68120468520213e-15,-7.60477542157765e-15,-7.52910664183273e-15,-7.45419077902627e-15,-7.38002034150955e-15,-7.30658791217697e-15,-7.23388614772451e-15,-7.16190777791507e-15,-7.09064560485165e-15,-7.02009250225766e-15,-6.95024141476399e-15,-6.88108535720369e-15,-6.81261741391331e-15,-6.74483073804157e-15,-6.67771855086435e-15,-6.611274141107e-15,-6.54549086427313e-15,-6.48036214198032e-15,-6.41588146130203e-15,-6.35204237411641e-15,-6.28883849646164e-15,-6.22626350789722e-15,-6.16431115087217e-15,-6.1029752300991e-15,-6.04224961193492e-15,-5.98212822376715e-15,-5.92260505340685e-15,-5.86367414848744e-15,-5.8053296158693e-15,-5.74756562105053e-15,-5.69037638758348e-15,-5.63375619649723e-15,-5.57769938572544e-15,-5.52220034954028e-15,-5.46725353799196e-15,-5.4128534563535e-15,-5.35899466457141e-15,-5.30567177672157e-15,-5.25287946047085e-15,-5.2006124365436e-15,-5.14886547819386e-15,-5.09763341068263e-15,-5.04691111076055e-15,-4.99669350615533e-15,-4.9469755750646e-15,-4.89775234565391e-15,-4.84901889555927e-15,-4.80077035139504e-15,-4.75300188826657e-15,-4.7057087292878e-15,-4.65888614510341e-15,-4.61252945341591e-15,-4.56663401851757e-15,-4.52119525082662e-15,-4.47620860642844e-15,-4.43166958662105e-15,-4.38757373746542e-15,-4.34391664933986e-15,-4.30069395649915e-15,-4.25790133663804e-15,-4.21553451045887e-15,-4.17358924124369e-15,-4.13206133443061e-15,-4.0909466371944e-15,-4.05024103803104e-15,-4.0099404663467e-15,-3.97004089205059e-15,-3.93053832515209e-15,-3.89142881536157e-15,-3.85270845169542e-15,-3.81437336208508e-15,-3.77641971298959e-15,-3.73884370901244e-15,-3.70164159252186e-15,-3.66480964327529e-15,-3.62834417804705e-15,-3.59224155026023e-15,-3.556498149622e-15,-3.52111040176249e-15,-3.48607476787743e-15,-3.4513877443742e-15,-3.4170458625216e-15,-3.3830456881028e-15,-3.349383821072e-15,-3.31605689521449e-15,-3.28306157780989e-15,-3.25039456929897e-15,-3.21805260295363e-15,-3.18603244455033e-15,-3.15433089204651e-15,-3.12294477526052e-15,-3.0918709555545e-15,-3.06110632552062e-15,-3.03064780867022e-15,-3.00049235912621e-15,-2.97063696131856e-15,-2.94107862968258e-15,-2.91181440836048e-15,-2.88284137090571e-15,-2.85415661999043e-15,-2.82575728711561e-15,-2.7976405323243e-15,-2.76980354391761e-15,-2.7422435381735e-15,-2.7149577590684e-15,-2.68794347800167e-15,-2.66119799352272e-15,-2.6347186310608e-15,-2.60850274265756e-15,-2.58254770670237e-15,-2.55685092766999e-15,-2.53140983586108e-15,-2.50622188714526e-15,-2.4812845627067e-15,-2.45659536879215e-15,-2.43215183646164e-15,-2.40795152134157e-15,-2.38399200338029e-15,-2.360270886606e-15,-2.33678579888726e-15,-2.31353439169576e-15,-2.29051433987137e-15,-2.26772334138974e-15,-2.24515911713201e-15,-2.22281941065698e-15,-2.20070198797537e-15,-2.17880463732647e-15,-2.15712516895699e-15,-2.13566141490202e-15,-2.11441122876826e-15,-2.09337248551938e-15,-2.07254308126355e-15,-2.05192093304297e-15,-2.03150397862562e-15,-2.01129017629907e-15,-1.99127750466623e-15,-1.97146396244327e-15,-1.95184756825942e-15,-1.93242636045896e-15,-1.91319839690491e-15,-1.89416175478488e-15,-1.8753145304188e-15,-1.85665483906853e-15,-1.83818081474939e-15,-1.81989061004354e-15,-1.80178239591528e-15,-1.7838543615281e-15,-1.76610471406363e-15,-1.74853167854231e-15,-1.73113349764597e-15,-1.71390843154201e-15,-1.69685475770946e-15,-1.67997077076674e-15,-1.66325478230108e-15,-1.64670512069969e-15,-1.63032013098262e-15,-1.61409817463727e-15,-1.59803762945447e-15,-1.58213688936631e-15,-1.56639436428554e-15,-1.55080847994654e-15,-1.53537767774787e-15,-1.52010041459645e-15,-1.50497516275326e-15,-1.4900004096805e-15,-1.47517465789037e-15,-1.46049642479534e-15,-1.44596424255989e-15,-1.43157665795366e-15,-1.4173322322062e-15,-1.40322954086309e-15,-1.38926717364343e-15,-1.37544373429886e-15,-1.36175784047391e-15,-1.34820812356782e-15,-1.3347932285976e-15,-1.32151181406257e-15,-1.30836255181021e-15,-1.29534412690334e-15,-1.28245523748861e-15,-1.26969459466634e-15,-1.25706092236163e-15,-1.24455295719671e-15,-1.23216944836463e-15,-1.21990915750421e-15,-1.20777085857614e-15,-1.1957533377404e-15,-1.18385539323489e-15,-1.17207583525526e-15,-1.16041348583589e-15,-1.14886717873211e-15,-1.1374357593036e-15,-1.12611808439889e-15,-1.11491302224106e-15,-1.10381945231453e-15,-1.0928362652531e-15,-1.0819623627289e-15,-1.07119665734261e-15,-1.06053807251471e-15,-1.04998554237785e-15,-1.03953801167022e-15,-1.02919443563004e-15,-1.01895377989109e-15,-1.00881502037926e-15,-9.98777143210155e-16,-9.88839144587678e-16,-9.79000030703702e-16,-9.69258817638633e-16,-9.59614531263038e-16,-9.50066207140259e-16,-9.40612890429918e-16,-9.31253635792466e-16,-9.21987507294635e-16,-9.12813578315865e-16,-9.03730931455607e-16,-8.947386584416e-16,-8.85835860039062e-16,-8.77021645960726e-16,-8.6829513477784e-16,-8.59655453832008e-16,-8.51101739147947e-16,-8.42633135347054e-16,-8.34248795561893e-16,-8.25947881351491e-16,-8.17729562617523e-16,-8.0959301752126e-16,-8.01537432401407e-16,-7.9356200169275e-16,-7.85665927845565e-16,-7.77848421245889e-16,-7.70108700136542e-16,-7.62445990538973e-16,-7.54859526175831e-16,-7.47348548394353e-16,-7.39912306090513e-16,-7.32550055633878e-16,-7.25261060793266e-16,-7.18044592663114e-16,-7.10899929590607e-16,-7.03826357103477e-16,-6.96823167838576e-16,-6.89889661471153e-16,-6.83025144644786e-16,-6.76228930902073e-16,-6.69500340615972e-16,-6.62838700921855e-16,-6.56243345650199e-16,-6.49713615259978e-16,-6.43248856772709e-16,-6.36848423707164e-16,-6.30511676014699e-16,-6.24237980015259e-16,-6.18026708334025e-16,-6.11877239838648e-16,-6.05788959577155e-16,-5.9976125871644e-16,-5.93793534481405e-16,-5.87885190094647e-16,-5.820356347168e-16,-5.76244283387461e-16,-5.70510556966665e-16,-5.64833882076993e-16,-5.59213691046221e-16,-5.53649421850571e-16,-5.48140518058482e-16,-5.4268642877498e-16,-5.372866085866e-16,-5.31940517506819e-16,-5.26647620922073e-16,-5.21407389538291e-16,-5.16219299327974e-16,-5.11082831477773e-16,-5.05997472336625e-16,-5.00962713364372e-16,-4.95978051080929e-16,-4.91042987015912e-16,-4.86157027658796e-16,-4.81319684409581e-16,-4.76530473529909e-16,-4.717889160947e-16,-4.67094537944255e-16,-4.62446869636855e-16,-4.57845446401793e-16,-4.53289808092906e-16,-4.48779499142575e-16,-4.44314068516142e-16,-4.39893069666824e-16,-4.35516060491048e-16,-4.31182603284255e-16,-4.26892264697111e-16,-4.22644615692179e-16,-4.18439231501023e-16,-4.14275691581719e-16,-4.10153579576803e-16,-4.06072483271638e-16,-4.02031994553198e-16,-3.98031709369241e-16,-3.94071227687915e-16,-3.90150153457749e-16,-3.86268094568057e-16,-3.82424662809714e-16,-3.78619473836337e-16,-3.74852147125863e-16,-3.7112230594248e-16,-3.67429577298961e-16,-3.63773591919362e-16,-3.60153984202103e-16,-3.56570392183393e-16,-3.53022457501042e-16,-3.4950982535863e-16,-3.46032144490013e-16,-3.42589067124206e-16,-3.39180248950601e-16,-3.35805349084545e-16,-3.32464030033236e-16,-3.29155957661982e-16,-3.25880801160794e-16,-3.2263823301129e-16,-3.19427928953954e-16,-3.16249567955702e-16,-3.13102832177789e-16,-3.09987406944014e-16,-3.06902980709258e-16,-3.03849245028323e-16,-3.00825894525102e-16,-2.97832626862023e-16,-2.94869142709822e-16,-2.9193514571762e-16,-2.89030342483269e-16,-2.86154442524026e-16,-2.83307158247497e-16,-2.80488204922884e-16,-2.77697300652504e-16,-2.74934166343603e-16,-2.72198525680451e-16,-2.694901050967e-16,-2.66808633748034e-16,-2.64153843485082e-16,-2.6152546882661e-16,-2.58923246932959e-16,-2.5634691757977e-16,-2.53796223131963e-16,-2.51270908517967e-16,-2.48770721204216e-16,-2.46295411169894e-16,-2.43844730881937e-16,-2.41418435270273e-16,-2.39016281703318e-16,-2.36638029963713e-16,-2.34283442224306e-16,-2.31952283024357e-16,-2.29644319246003e-16,-2.27359320090947e-16,-2.25097057057366e-16,-2.22857303917073e-16,-2.20639836692885e-16,-2.18444433636235e-16,-2.16270875204986e-16,-2.14118944041482e-16,-2.11988424950817e-16,-2.09879104879305e-16,-2.07790772893181e-16,-2.05723220157503e-16,-2.0367623991528e-16,-2.01649627466779e-16,-1.99643180149065e-16,-1.97656697315738e-16,-1.95689980316856e-16,-1.93742832479082e-16,-1.91815059086007e-16,-1.89906467358688e-16,-1.88016866436362e-16,-1.8614606735736e-16,-1.84293883040215e-16,-1.82460128264953e-16,-1.80644619654569e-16,-1.78847175656687e-16,-1.77067616525412e-16,-1.75305764303346e-16,-1.73561442803799e-16,-1.71834477593166e-16,-1.70124695973489e-16,-1.68431926965181e-16,-1.66756001289929e-16,-1.6509675135377e-16,-1.63454011230328e-16,-1.61827616644221e-16,-1.60217404954635e-16,-1.5862321513906e-16,-1.57044887777185e-16,-1.55482265034958e-16,-1.53935190648804e-16,-1.52403509909995e-16,-1.50887069649181e-16,-1.4938571822107e-16,-1.47899305489271e-16,-1.4642768281127e-16,-1.44970703023574e-16,-1.43528220426989e-16,-1.42100090772055e-16,-1.40686171244615e-16,-1.39286320451537e-16,-1.37900398406578e-16,-1.36528266516377e-16,-1.35169787566601e-16,-1.33824825708223e-16,-1.32493246443938e-16,-1.31174916614709e-16,-1.29869704386453e-16,-1.28577479236861e-16,-1.27298111942342e-16,-1.26031474565099e-16,-1.24777440440338e-16,-1.23535884163604e-16,-1.22306681578232e-16,-1.21089709762941e-16,-1.19884847019535e-16,-1.18691972860735e-16,-1.17510967998132e-16,-1.16341714330254e-16,-1.15184094930761e-16,-1.14037994036749e-16,-1.12903297037172e-16,-1.11779890461384e-16,-1.10667661967794e-16,-1.09566500332624e-16,-1.08476295438792e-16,-1.07396938264902e-16,-1.06328320874336e-16,-1.05270336404464e-16,-1.04222879055958e-16,-1.03185844082212e-16,-1.02159127778861e-16,-1.01142627473421e-16,-1.00136241515015e-16,-9.91398692642072e-17,-9.81534110829428e-17,-9.71767683245807e-17,-9.62098433240328e-17,-9.52525393879923e-17,-9.43047607852674e-17,-9.33664127372092e-17,-9.24374014082304e-17,-9.15176338964238e-17,-9.06070182242712e-17,-8.97054633294477e-17,-8.88128790557119e-17,-8.79291761438928e-17,-8.70542662229619e-17,-8.61880618011994e-17,-8.53304762574407e-17,-8.4481423832416e-17,-8.36408196201767e-17,-8.28085795596002e-17,-8.19846204259871e-17,-8.11688598227368e-17,-8.03612161731102e-17,-7.95616087120689e-17,-7.87699574781998e-17,-7.79861833057209e-17,-7.72102078165612e-17,-7.64419534125253e-17,-7.5681343267532e-17,-7.49283013199339e-17,-7.41827522649083e-17,-7.34446215469278e-17,-7.27138353523066e-17,-7.19903206018156e-17,-7.1274004943377e-17,-7.05648167448274e-17,-6.9862685086757e-17,-6.91675397554144e-17,-6.84793112356872e-17,-6.77979307041493e-17,-6.71233300221807e-17,-6.64554417291507e-17,-6.57941990356728e-17,-6.51395358169277e-17,-6.44913866060474e-17,-6.38496865875707e-17,-6.32143715909605e-17,-6.25853780841887e-17,-6.196264316738e-17,-6.13461045665232e-17,-6.07357006272455e-17,-6.01313703086438e-17,-5.95330531771826e-17,-5.89406894006497e-17,-5.83542197421747e-17,-5.77735855543026e-17,-5.71987287731303e-17,-5.66295919125015e-17,-5.60661180582555e-17,-5.55082508625372e-17,-5.49559345381618e-17,-5.44091138530373e-17,-5.38677341246393e-17,-5.33317412145436e-17,-5.28010815230123e-17,-5.22757019836347e-17,-5.17555500580187e-17,-5.12405737305379e-17,-5.07307215031311e-17,-5.02259423901504e-17,-4.97261859132638e-17,-4.92314020964068e-17,-4.87415414607861e-17,-4.82565550199295e-17,-4.77763942747886e-17,-4.73010112088892e-17,-4.68303582835284e-17,-4.63643884330214e-17,-4.59030550599944e-17,-4.54463120307265e-17,-4.49941136705337e-17,-4.45464147592028e-17,-4.41031705264703e-17,-4.36643366475432e-17,-4.32298692386679e-17,-4.27997248527413e-17,-4.23738604749667e-17,-4.19522335185513e-17,-4.15348018204481e-17,-4.11215236371391e-17,-4.07123576404621e-17,-4.03072629134762e-17,-3.9906198946371e-17,-3.95091256324159e-17,-3.91160032639484e-17,-3.87267925284041e-17,-3.83414545043848e-17,-3.79599506577676e-17,-3.75822428378495e-17,-3.72082932735335e-17,-3.68380645695522e-17,-3.64715197027264e-17,-3.61086220182638e-17,-3.57493352260935e-17,-3.53936233972372e-17,-3.50414509602154e-17,-3.46927826974907e-17,-3.43475837419468e-17,-3.40058195734001e-17,-3.3667456015149e-17,-3.33324592305556e-17,-3.30007957196625e-17,-3.26724323158422e-17,-3.23473361824806e-17,-3.20254748096932e-17,-3.1706816011075e-17,-3.13913279204803e-17,-3.1078978988837e-17,-3.0769737980992e-17,-3.04635739725866e-17,-3.0160456346965e-17,-2.98603547921115e-17,-2.95632392976213e-17,-2.92690801516969e-17,-2.89778479381784e-17,-2.86895135336023e-17,-2.84040481042875e-17,-2.81214231034532e-17,-2.78416102683638e-17,-2.75645816175027e-17,-2.7290309447774e-17,-2.70187663317319e-17,-2.67499251148388e-17,-2.64837589127489e-17,-2.62202411086202e-17,-2.59593453504523e-17,-2.57010455484526e-17,-2.54453158724254e-17,-2.51921307491899e-17,-2.49414648600226e-17,-2.46932931381261e-17,-2.44475907661213e-17,-2.4204333173566e-17,-2.39634960344985e-17,-2.37250552650042e-17,-2.34889870208072e-17,-2.32552676948864e-17,-2.30238739151148e-17,-2.27947825419212e-17,-2.25679706659774e-17,-2.23434156059071e-17,-2.21210949060169e-17,-2.19009863340517e-17,-2.16830678789706e-17,-2.14673177487468e-17,-2.12537143681873e-17,-2.10422363767761e-17,-2.08328626265379e-17,-2.06255721799231e-17,-2.04203443077144e-17,-2.02171584869533e-17,-2.00159943988888e-17,-1.98168319269441e-17,-1.96196511547063e-17,-1.94244323639335e-17,-1.92311560325844e-17,-1.90398028328645e-17,-1.88503536292944e-17,-1.86627894767959e-17,-1.84770916187976e-17,-1.82932414853587e-17,-1.81112206913127e-17,-1.79310110344287e-17,-1.77525944935906e-17,-1.75759532269957e-17,-1.74010695703703e-17,-1.72279260352029e-17,-1.70565053069956e-17,-1.68867902435327e-17,-1.67187638731667e-17,-1.65524093931203e-17,-1.63877101678068e-17,-1.62246497271667e-17,-1.60632117650199e-17,-1.59033801374357e-17,-1.57451388611179e-17,-1.55884721118074e-17,-1.54333642226985e-17,-1.5279799682873e-17,-1.5127763135749e-17,-1.49772393775451e-17,-1.482821335576e-17,-1.46806701676673e-17,-1.45345950588255e-17,-1.43899734216017e-17,-1.42467907937117e-17,-1.41050328567734e-17,-1.39646854348751e-17,-1.38257344931575e-17,-1.36881661364107e-17,-1.35519666076844e-17,-1.34171222869122e-17,-1.32836196895497e-17,-1.31514454652258e-17,-1.30205863964081e-17,-1.28910293970805e-17,-1.27627615114352e-17,-1.26357699125767e-17,-1.25100419012393e-17,-1.23855649045171e-17,-1.22623264746067e-17,-1.21403142875624e-17,-1.20195161420638e-17,-1.18999199581957e-17,-1.178151377624e-17,-1.166428575548e-17,-1.15482241730158e-17,-1.14333174225923e-17,-1.1319554013439e-17,-1.12069225691201e-17,-1.10954118263971e-17,-1.0985010634103e-17,-1.08757079520265e-17,-1.07674928498084e-17,-1.06603545058481e-17,-1.05542822062221e-17,-1.0449265343612e-17,-1.03452934162441e-17,-1.02423560268387e-17,-1.01404428815715e-17,-1.00395437890428e-17,-9.9396486592593e-18,-9.84074750262483e-18,-9.74283042894127e-18,-9.64588764641966e-18,-9.54990946070089e-18,-9.45488627388654e-18,-9.36080858357868e-18,-9.26766698192988e-18,-9.17545215470228e-18,-9.08415488033646e-18,-8.99376602902882e-18,-8.90427656181885e-18,-8.81567752968539e-18,-8.72796007265131e-18,-8.64111541889783e-18,-8.55513488388712e-18,-8.47000986949417e-18,-8.38573186314653e-18,-8.30229243697328e-18,-8.21968324696239e-18,-8.13789603212595e-18,-8.05692261367433e-18,-7.97675489419814e-18,-7.89738485685875e-18,-7.81880456458622e-18,-7.74100615928578e-18,-7.66398186105219e-18,-7.58772396739137e-18,-7.51222485245042e-18,-7.43747696625487e-18,-7.36347283395392e-18,-7.29020505507261e-18,-7.21766630277199e-18,-7.14584932311635e-18,-7.07474693434796e-18,-7.00435202616865e-18,-6.93465755902888e-18,-6.86565656342397e-18,-6.7973421391968e-18,-6.72970745484802e-18,-6.66274574685278e-18,-6.59645031898459e-18,-6.53081454164535e-18,-6.46583185120259e-18,-6.40149574933322e-18,-6.33779980237337e-18,-6.27473764067528e-18,-6.21230295797017e-18,-6.15048951073785e-18,-6.08929111758202e-18,-6.02870165861233e-18,-5.96871507483249e-18,-5.90932536753407e-18,-5.85052659769686e-18,-5.79231288539483e-18,-5.73467840920833e-18,-5.67761740564166e-18,-5.62112416854692e-18,-5.56519304855328e-18,-5.50981845250221e-18,-5.45499484288792e-18,-5.40071673730373e-18,-5.34697870789392e-18,-5.29377538081072e-18,-5.24110143567711e-18,-5.18895160505462e-18,-5.13732067391681e-18,-5.08620347912752e-18,-5.03559490892461e-18,-4.98548990240898e-18,-4.93588344903818e-18,-4.88677058812553e-18,-4.83814640834398e-18,-4.7900060472351e-18,-4.74234469072263e-18,-4.69515757263116e-18,-4.64843997420964e-18,-4.60218722365925e-18,-4.55639469566639e-18,-4.51105781094008e-18,-4.46617203575412e-18,-4.42173288149356e-18,-4.37773590420594e-18,-4.33417670415683e-18,-4.29105092539e-18,-4.24835425529159e-18,-4.20608242415899e-18,-4.16423120477391e-18,-4.12279641197952e-18,-4.08177390226199e-18,-4.04115957333616e-18,-4.00094936373533e-18,-3.96113925240501e-18,-3.92172525830087e-18,-3.88270343999069e-18,-3.84406989526012e-18,-3.80582076072247e-18,-3.76795221143239e-18,-3.73046046050346e-18,-3.6933417587293e-18,-3.65659239420879e-18,-3.62020869197489e-18,-3.58418701362704e-18,-3.54852375696738e-18,-3.51321535564051e-18,-3.47825827877692e-18,-3.44364903063977e-18,-3.40938415027539e-18,-3.37546021116718e-18,-3.34187382089301e-18,-3.30862162078582e-18,-3.27570028559789e-18,-3.2431065231683e-18,-3.21083707409363e-18,-3.17888871140207e-18,-3.14725824023071e-18,-3.11594249750612e-18,-3.0849383516279e-18,-3.05424270215562e-18,-3.02385247949879e-18,-2.99376464460979e-18,-2.96397618868007e-18,-2.93448413283918e-18,-2.90528552785701e-18,-2.8763774538487e-18,-2.84775701998275e-18,-2.81942136419195e-18,-2.7913676528871e-18,-2.76359308067368e-18,-2.73609487007132e-18,-2.70887027123606e-18,-2.68191656168533e-18,-2.65523104602571e-18,-2.62881105568337e-18,-2.6026539486373e-18,-2.57675710915498e-18,-2.55111794753086e-18,-2.52573389982745e-18,-2.50060242761881e-18,-2.47572101773678e-18,-2.45108718201961e-18,-2.42669845706323e-18,-2.40255240397482e-18,-2.37864660812892e-18,-2.35497867892607e-18,-2.33154624955359e-18,-2.30834697674904e-18,-2.28537854056577e-18,-2.26263864414106e-18,-2.2401250134663e-18,-2.21783539715965e-18,-2.19576756624094e-18,-2.17391931390866e-18,-2.15228845531938e-18,-2.13087282736919e-18,-2.1096702884775e-18,-2.08867871837271e-18,-2.06789601788033e-18,-2.04732010871298e-18,-2.02694893326261e-18,-2.00678045439471e-18,-1.98681265524455e-18,-1.96704353901561e-18,-1.94747112877979e-18,-1.92809346727974e-18,-1.90890861673315e-18,-1.88991465863902e-18,-1.87110969358568e-18,-1.85249184106095e-18,-1.83405923926408e-18,-1.81581004491954e-18,-1.79774243309266e-18,-1.7798545970072e-18,-1.76214474786468e-18,-1.7446111146654e-18,-1.72725194403142e-18,-1.71006550003124e-18,-1.69305006400612e-18,-1.67620393439828e-18,-1.65952542658071e-18,-1.64301287268875e-18,-1.62666462145324e-18,-1.61047903803544e-18,-1.5944545038635e-18,-1.57858941647067e-18,-1.56288218933499e-18,-1.54733125172063e-18,-1.53193504852091e-18,-1.51669204010265e-18,-1.50160070215232e-18,-1.48665952552353e-18,-1.47186701608619e-18,-1.45722169457702e-18,-1.44272209645165e-18,-1.42836677173821e-18,-1.41415428489226e-18,-1.40008321465326e-18,-1.38615215390245e-18,-1.37235970952217e-18,-1.35870450225649e-18,-1.34518516657327e-18,-1.33180035052772e-18,-1.31854871562706e-18,-1.30542893669675e-18,-1.29243970174796e-18,-1.2795797118464e-18,-1.26684768098234e-18,-1.25424233594208e-18,-1.24176241618062e-18,-1.22940667369559e-18,-1.21717387290244e-18,-1.20506279051089e-18,-1.19307221540261e-18,-1.18120094851011e-18,-1.1694478026968e-18,-1.15781160263829e-18,-1.1462911847049e-18,-1.13488539684522e-18,-1.12359309847097e-18,-1.1124131603429e-18,-1.10134446445787e-18,-1.09038590393709e-18,-1.07953638291534e-18,-1.06879481643151e-18,-1.05816013032e-18,-1.0476312611033e-18,-1.03720715588576e-18,-1.02688677224815e-18,-1.0166690781435e-18,-1.00655305179389e-18,-9.96537681588256e-19,-9.86621965981237e-19,-9.76804913393002e-19,-9.67085542110108e-19,-9.57462880187338e-19,-9.47935965350476e-19,-9.38503844900091e-19,-9.29165575616292e-19,-9.19920223664361e-19,-9.107668645014e-19,-9.01704582783858e-19,-8.92732472276023e-19,-8.83849635759362e-19,-8.75055184942815e-19,-8.66348240373983e-19,-8.57727931351148e-19,-8.49193395836224e-19,-8.4074378036854e-19,-8.32378239979522e-19,-8.24095938108153e-19,-8.15896046517337e-19,-8.07777745211095e-19,-7.99740222352524e-19,-7.9178267418264e-19,-7.83904304939991e-19,-7.76104326781096e-19,-7.68381959701636e-19,-7.60736431458466e-19,-7.53166977492386e-19,-7.45672840851702e-19,-7.38253272116499e-19,-7.30907529323715e-19,-7.23634877892961e-19,-7.16434590553027e-19,-7.09305947269179e-19,-7.02248235171143e-19,-6.95260748481838e-19,-6.88342788446767e-19,-6.81493663264157e-19,-6.74712688015792e-19,-6.6799918459849e-19,-6.61352481656316e-19,-6.54771914513432e-19,-6.4825682510765e-19,-6.41806561924593e-19,-6.35420479932565e-19,-6.29097940518054e-19,-6.22838311421845e-19,-6.16640966675811e-19,-6.1050528654031e-19,-6.04430657442223e-19,-5.98416471913575e-19,-5.924621285308e-19,-5.86567031854593e-19,-5.80730592370384e-19,-5.74952226429356e-19,-5.69231356190095e-19,-5.63567409560818e-19,-5.57959820142138e-19,-5.52408027170441e-19,-5.46911475461798e-19,-5.41469615356467e-19,-5.36081902663897e-19,-5.30747798608326e-19,-5.25466769774911e-19,-5.20238288056364e-19,-5.15061830600156e-19,-5.09936879756224e-19,-5.0486292302522e-19,-4.99839453007239e-19,-4.9486596735109e-19,-4.89941968704069e-19,-4.85066964662204e-19,-4.8024046772103e-19,-4.75461995226826e-19,-4.70731069328368e-19,-4.66047216929119e-19,-4.61409969639938e-19,-4.56818863732227e-19,-4.52273440091576e-19,-4.4777324417183e-19,-4.43317825949644e-19,-4.38906739879488e-19,-4.34539544849078e-19,-4.30215804135269e-19,-4.25935085360386e-19,-4.21696960448989e-19,-4.17501005585051e-19,-4.13346801169589e-19,-4.09233931778702e-19,-4.05161986122023e-19,-4.01130557001593e-19,-3.97139241271136e-19,-3.9318763979576e-19,-3.89275357412021e-19,-3.85402002888417e-19,-3.81567188886274e-19,-3.77770531920994e-19,-3.74011652323716e-19,-3.70290174203345e-19,-3.66605725408972e-19,-3.62957937492647e-19,-3.59346445672537e-19,-3.55770888796448e-19,-3.52230909305718e-19,-3.48726153199445e-19,-3.45256269999095e-19,-3.41820912713463e-19,-3.38419737803953e-19,-3.35052405150242e-19,-3.31718578016254e-19,-3.28417923016504e-19,-3.25150110082737e-19,-3.21914812430936e-19,-3.18711706528643e-19,-3.15540472062598e-19,-3.12400791906709e-19,-3.09292352090344e-19,-3.06214841766935e-19,-3.03167953182883e-19,-3.00151381646787e-19,-2.97164825498985e-19,-2.94207986081371e-19,-2.9128056770754e-19,-2.88382277633212e-19,-2.85512826026968e-19,-2.82671925941256e-19,-2.79859293283698e-19,-2.77074646788683e-19,-2.74317707989246e-19,-2.71588201189206e-19,-2.68885853435608e-19,-2.66210394491427e-19,-2.63561556808539e-19,-2.60939075500966e-19,-2.58342688318392e-19,-2.55772135619937e-19,-2.53227160348189e-19,-2.50707508003497e-19,-2.48212926618531e-19,-2.45743166733072e-19,-2.43297981369072e-19,-2.40877126005957e-19,-2.38480358556176e-19,-2.36107439340984e-19,-2.33758131066482e-19,-2.31432198799887e-19,-2.29129409946033e-19,-2.26849534224115e-19,-2.24592343644661e-19,-2.22357612486733e-19,-2.20145117275352e-19,-2.17954636759154e-19,-2.15785951888259e-19,-2.13638845792378e-19,-2.11513103759108e-19,-2.09408513212474e-19,-2.07324863691671e-19,-2.05261946830008e-19,-2.03219556334081e-19,-2.01197487963135e-19,-1.99195539508653e-19,-1.97213510774118e-19,-1.95251203555004e-19,-1.93308421618957e-19,-1.91384970686163e-19,-1.89480658409926e-19,-1.87595294357429e-19,-1.85728689990699e-19,-1.83880658647743e-19,-1.82051015523884e-19,-1.80239577653289e-19,-1.78446163890659e-19,-1.76670594893125e-19,-1.74912693102304e-19,-1.73172282726555e-19,-1.7144918972339e-19,-1.69743241782073e-19,-1.68054268306385e-19,-1.66382100397575e-19,-1.64726570837457e-19,-1.63087514071694e-19,-1.61464766193246e-19,-1.59858164925972e-19,-1.58267549608406e-19,-1.56692761177689e-19,-1.5513364215367e-19,-1.53590036623144e-19,-1.52061790224272e-19,-1.50548750131141e-19,-1.49050765038482e-19,-1.47567685146535e-19,-1.46099362146076e-19,-1.44645649203583e-19,-1.43206400946548e-19,-1.41781473448945e-19,-1.40370724216841e-19,-1.38974012174134e-19,-1.37591197648456e-19,-1.36222142357202e-19,-1.34866709393704e-19,-1.33524763213534e-19,-1.32196169620957e-19,-1.30880795755505e-19,-1.29578510078696e-19,-1.28289182360878e-19,-1.27012683668204e-19,-1.25748886349741e-19,-1.24497664024704e-19,-1.23258891569819e-19,-1.22032445106805e-19,-1.20818201989997e-19,-1.1961604079407e-19,-1.18425841301902e-19,-1.17247484492554e-19,-1.16080852529361e-19,-1.14925828748156e-19,-1.13782297645597e-19,-1.12650144867622e-19,-1.11529257198009e-19,-1.10419522547056e-19,-1.09320829940376e-19,-1.0823306950779e-19,-1.0715613247235e-19,-1.06089911139454e-19,-1.0503429888608e-19,-1.03989190150124e-19,-1.02954480419842e-19,-1.01930066223396e-19,-1.00915845118515e-19,-9.99117156822424e-20,-9.89175775007978e-20,-9.79333311595355e-20,-9.69588782330005e-20,-9.59941212750882e-20,-9.5038963809298e-20,-9.40933103190889e-20,-9.3157066238323e-20,-9.22301379418115e-20,-9.13124327359535e-20,-9.0403858849463e-20,-8.95043254241943e-20,-8.86137425060545e-20,-8.7732021036011e-20,-8.68590728411814e-20,-8.59948106260181e-20,-8.51391479635806e-20,-8.42919992868889e-20,-8.34532798803696e-20,-8.26229058713822e-20,-8.18007942218353e-20,-8.09868627198781e-20,-8.01810299716822e-20,-7.93832153933006e-20,-7.85933392026118e-20,-7.7811322411338e-20,-7.70370868171477e-20,-7.62705549958374e-20,-7.55116502935858e-20,-7.47602968192901e-20,-7.40164194369762e-20,-7.32799437582871e-20,-7.25507961350407e-20,-7.18289036518665e-20,-7.11141941189156e-20,-7.04065960646385e-20,-6.97060387286404e-20,-6.90124520546031e-20,-6.83257666832824e-20,-6.76459139455683e-20,-6.69728258556201e-20,-6.63064351040688e-20,-6.56466750512834e-20,-6.49934797207089e-20,-6.43467837922675e-20,-6.37065225958282e-20,-6.30726321047375e-20,-6.24450489294179e-20,-6.18237103110285e-20,-6.12085541151906e-20,-6.05995188257716e-20,-5.99965435387344e-20,-5.93995679560488e-20,-5.88085323796587e-20,-5.82233777055138e-20,-5.76440454176586e-20,-5.70704775823825e-20,-5.65026168424236e-20,-5.59404064112341e-20,-5.53837900673033e-20,-5.48327121485326e-20,-5.42871175466708e-20,-5.37469517018027e-20,-5.32121605968944e-20,-5.26826907523895e-20,-5.21584892208617e-20,-5.1639503581722e-20,-5.11256819359736e-20,-5.06169729010236e-20,-5.01133256055443e-20,-4.96146896843872e-20,-4.91210152735442e-20,-4.86322530051628e-20,-4.81483540026087e-20,-4.76692698755789e-20,-4.71949527152612e-20,-4.6725355089544e-20,-4.6260430038274e-20,-4.58001310685583e-20,-4.53444121501163e-20,-4.48932277106762e-20,-4.44465326314186e-20,-4.4004282242463e-20,-4.35664323184017e-20,-4.31329390738781e-20,-4.27037591592061e-20,-4.22788496560366e-20,-4.18581680730649e-20,-4.14416723417827e-20,-4.10293208122696e-20,-4.06210722490286e-20,-4.02168858268637e-20,-3.98167211267958e-20,-3.94205381320212e-20,-3.90282972239102e-20,-3.86399591780455e-20,-3.82554851602986e-20,-3.78748367229475e-20,-3.74979758008309e-20,-3.7124864707543e-20,-3.67554661316634e-20,-3.63897431330263e-20,-3.60276591390277e-20,-3.56691779409661e-20,-3.53142636904231e-20,-3.49628808956775e-20,-3.46149944181575e-20,-3.42705694689253e-20,-3.39295716051986e-20,-3.35919667269075e-20,-3.32577210732824e-20,-3.29268012194795e-20,-3.25991740732374e-20,-3.2274806871569e-20,-3.19536671774834e-20,-3.16357228767435e-20,-3.13209421746548e-20,-3.10092935928843e-20,-3.07007459663143e-20,-3.03952684399248e-20,-3.00928304657089e-20,-2.97934017996171e-20,-2.94969524985331e-20,-2.92034529172797e-20,-2.89128737056544e-20,-2.86251858054939e-20,-2.83403604477682e-20,-2.80583691497044e-20,-2.77791837119377e-20,-2.75027762156916e-20,-2.72291190199859e-20,-2.69581847588734e-20,-2.6689946338702e-20,-2.6424376935406e-20,-2.61614499918241e-20,-2.59011392150427e-20,-2.56434185737671e-20,-2.53882622957183e-20,-2.51356448650563e-20,-2.48855410198271e-20,-2.46379257494378e-20,-2.43927742921553e-20,-2.41500621326294e-20,-2.39097649994419e-20,-2.3671858862679e-20,-2.34363199315291e-20,-2.32031246519028e-20,-2.29722497040776e-20,-2.27436720003663e-20,-2.25173686828083e-20,-2.22933171208831e-20,-2.20714949092477e-20,-2.18518798654964e-20,-2.16344500279415e-20,-2.14191836534182e-20,-2.12060592151095e-20,-2.09950554003942e-20,-2.07861511087149e-20,-2.05793254494682e-20,-2.0374557739916e-20,-2.01718275031167e-20,-1.99711144658776e-20,-1.97723985567277e-20,-1.95756599039106e-20,-1.93808788333969e-20,-1.91880358669173e-20,-1.89971117200146e-20,-1.88080873001149e-20,-1.86209437046186e-20,-1.84356622190102e-20,-1.82522243149869e-20,-1.80706116486053e-20,-1.78908060584475e-20,-1.77127895638045e-20,-1.75365443628786e-20,-1.73620528310029e-20,-1.71892975188787e-20,-1.70182611508308e-20,-1.684892662308e-20,-1.66812770020323e-20,-1.65152955225859e-20,-1.63509655864545e-20,-1.61882707605077e-20,-1.60271947751271e-20,-1.58677215225802e-20,-1.57098350554086e-20,-1.55535195848342e-20,-1.53987594791794e-20,-1.5245539262305e-20,-1.50938436120616e-20,-1.49436573587574e-20,-1.47949654836423e-20,-1.46477531174048e-20,-1.45020055386855e-20,-1.4357708172605e-20,-1.42148465893067e-20,-1.40734065025131e-20,-1.39333737680975e-20,-1.37947343826699e-20,-1.36574744821763e-20,-1.35215803405122e-20,-1.33870383681501e-20,-1.32538351107807e-20,-1.31219572479674e-20,-1.29913915918138e-20,-1.28621250856455e-20,-1.27341448027044e-20,-1.26074379448553e-20,-1.24819918413069e-20,-1.23577939473444e-20,-1.22348318430748e-20,-1.21130932321853e-20,-1.19925659407132e-20,-1.1873237915829e-20,-1.17550972246309e-20,-1.1638132052951e-20,-1.15223307041751e-20,-1.14076815980715e-20,-1.12941732696341e-20,-1.11817943679355e-20,-1.1070533654992e-20,-1.09603800046394e-20,-1.08513224014209e-20,-1.07433499394854e-20,-1.06364518214966e-20,-1.05306173575538e-20,-1.04258359641222e-20,-1.03220971629753e-20,-1.02193905801465e-20,-1.01177059448919e-20,-1.00170330886631e-20,-9.91736194409084e-21,-9.81868254397748e-21,-9.72098502030071e-21,-9.62425960322689e-21,-9.52849662013364e-21,-9.43368649464284e-21,-9.33981974566286e-21,-9.24688698644073e-21,-9.15487892362301e-21,-9.06378635632668e-21,-8.97360017521922e-21,-8.88431136160732e-21,-8.79591098653519e-21,-8.7083902098916e-21,-8.62174027952608e-21,-8.53595253037331e-21,-8.45101838358691e-21,-8.36692934568134e-21,-8.28367700768286e-21,-8.20125304428824e-21,-8.11964921303239e-21,-8.03885735346429e-21,-7.95886938633062e-21,-7.87967731276799e-21,-7.80127321350299e-21,-7.72364924806049e-21,-7.6467976539792e-21,-7.57071074603559e-21,-7.49538091547559e-21,-7.42080062925331e-21,-7.34696242927798e-21,-7.27385893166801e-21,-7.20148282601283e-21,-7.1298268746415e-21,-7.05888391189913e-21,-6.98864684343043e-21,-6.91910864546996e-21,-6.85026236413998e-21,-6.78210111475493e-21,-6.71461808113318e-21,-6.64780651491508e-21,-6.58165973488832e-21,-6.51617112631974e-21,-6.451334140294e-21,-6.38714229305842e-21,-6.32358916537474e-21,-6.26066840187731e-21,-6.19837371043732e-21,-6.13669886153369e-21,-6.07563768763011e-21,-6.01518408255838e-21,-5.95533200090758e-21,-5.89607545741962e-21,-5.83740852639085e-21,-5.77932534107925e-21,-5.72182009311788e-21,-5.66488703193398e-21,-5.60852046417406e-21,-5.55271475313435e-21,-5.49746431819719e-21,-5.44276363427312e-21,-5.38860723124813e-21,-5.33498969343679e-21,-5.28190565904059e-21,-5.22934981961194e-21,-5.17731691952305e-21,-5.12580175544056e-21,-5.07479917580509e-21,-5.02430408031626e-21,-4.97431141942239e-21,-4.9248161938157e-21,-4.87581345393245e-21,-4.82729829945779e-21,-4.77926587883584e-21,-4.73171138878447e-21,-4.68463007381512e-21,-4.63801722575702e-21,-4.59186818328649e-21,-4.54617833146089e-21,-4.50094310125694e-21,-4.4561579691139e-21,-4.41181845648123e-21,-4.36792012937076e-21,-4.32445859791317e-21,-4.28142951591908e-21,-4.23882858044447e-21,-4.19665153136028e-21,-4.15489415092644e-21,-4.1135522633701e-21,-4.07262173446808e-21,-4.03209847113338e-21,-3.99197842100589e-21,-3.95225757204713e-21,-3.91293195213916e-21,-3.87399762868719e-21,-3.8354507082264e-21,-3.79728733603268e-21,-3.75950369573699e-21,-3.7220960089438e-21,-3.68506053485323e-21,-3.64839356988707e-21,-3.61209144731823e-21,-3.57615053690419e-21,-3.540567244524e-21,-3.50533801181874e-21,-3.47045931583579e-21,-3.43592766867646e-21,-3.4017396171473e-21,-3.36789174241465e-21,-3.3343806596628e-21,-3.30120301775561e-21,-3.2683554989012e-21,-3.23583481832031e-21,-3.20363772391778e-21,-3.17176099595737e-21,-3.14020144673969e-21,-3.10895592028354e-21,-3.07802129201019e-21,-3.0473944684311e-21,-3.01707238683835e-21,-2.9870520149985e-21,-2.95733035084938e-21,-2.92790442219981e-21,-2.89877128643238e-21,-2.86992803020922e-21,-2.84137176918073e-21,-2.81309964769696e-21,-2.78510883852221e-21,-2.75739654255225e-21,-2.7299599885344e-21,-2.70279643279036e-21,-2.67590315894193e-21,-2.64927747763934e-21,-2.62291672629225e-21,-2.59681826880354e-21,-2.57097949530575e-21,-2.54539782189998e-21,-2.52007069039758e-21,-2.49499556806426e-21,-2.47016994736694e-21,-2.44559134572283e-21,-2.4212573052513e-21,-2.39716539252799e-21,-2.37331319834161e-21,-2.34969833745282e-21,-2.32631844835585e-21,-2.30317119304233e-21,-2.28025425676744e-21,-2.25756534781844e-21,-2.23510219728552e-21,-2.21286255883493e-21,-2.19084420848429e-21,-2.16904494438019e-21,-2.14746258657808e-21,-2.12609497682419e-21,-2.10493997833974e-21,-2.08399547560722e-21,-2.06325937415895e-21,-2.04272960036749e-21,-2.02240410123833e-21,-2.00228084420464e-21,-1.98235781692396e-21,-1.96263302707693e-21,-1.94310450216813e-21,-1.92377028932882e-21,-1.90462845512159e-21,-1.88567708534707e-21,-1.86691428485247e-21,-1.84833817734214e-21,-1.82994690518983e-21,-1.81173862925299e-21,-1.79371152868887e-21,-1.77586380077239e-21,-1.75819366071587e-21,-1.74069934149058e-21,-1.72337909365004e-21,-1.70623118515502e-21,-1.68925390120036e-21,-1.67244554404355e-21,-1.65580443283486e-21,-1.63932890344929e-21,-1.62301730832017e-21,-1.60686801627441e-21,-1.59087941236934e-21,-1.57504989773123e-21,-1.55937788939545e-21,-1.5438618201481e-21,-1.52850013836931e-21,-1.51329130787811e-21,-1.49823380777879e-21,-1.48332613230878e-21,-1.46856679068809e-21,-1.4539543069703e-21,-1.43948721989483e-21,-1.42516408274094e-21,-1.41098346318294e-21,-1.3969439431471e-21,-1.3830441186697e-21,-1.3692825997567e-21,-1.35565801024474e-21,-1.34216898766354e-21,-1.32881418309958e-21,-1.31559226106127e-21,-1.3025018993454e-21,-1.28954178890489e-21,-1.2767106337179e-21,-1.26400715065819e-21,-1.2514300693669e-21,-1.23897813212542e-21,-1.22665009372962e-21,-1.21444472136541e-21,-1.20236079448538e-21,-1.19039710468677e-21,-1.17855245559062e-21,-1.16682566272217e-21,-1.15521555339235e-21,-1.14372096658055e-21,-1.13234075281851e-21,-1.12107377407538e-21,-1.10991890364388e-21,-1.09887502602768e-21,-1.08794103682982e-21,-1.07711584264226e-21,-1.06639836093657e-21,-1.05578751995563e-21,-1.04528225860652e-21,-1.03488152635434e-21,-1.02458428311719e-21,-1.01438949916219e-21,-1.00429615500243e-21,-9.94303241295087e-22,-9.84409758740455e-22,-9.74614717982048e-22,-9.64917139507621e-22,-9.55316053551238e-22,-9.45810499996316e-22,-9.36399528279572e-22,-9.27082197295992e-22,-9.17857575304705e-22,-9.0872473983584e-22,-8.99682777598231e-22,-8.90730784388114e-22,-8.8186786499872e-22,-8.73093133130718e-22,-8.6440571130361e-22,-8.55804730767965e-22,-8.47289331418577e-22,-8.38858661708408e-22,-8.30511878563461e-22,-8.22248147298459e-22,-8.14066641533403e-22,-8.05966543110891e-22,-7.97947042014325e-22,-7.90007336286924e-22,-7.82146631951494e-22,-7.7436414293105e-22,-7.66659090970199e-22,-7.59030705557335e-22,-7.51478223847555e-22,-7.44000890586388e-22,-7.36597958034288e-22,-7.29268685891825e-22,-7.22012341225677e-22,-7.14828198395326e-22,-7.07715538980511e-22,-7.00673651709359e-22,-6.9370183238727e-22,-6.86799383826511e-22,-6.7996561577647e-22,-6.73199844854646e-22,-6.66501394478304e-22,-6.59869594796835e-22,-6.53303782624739e-22,-6.46803301375327e-22,-6.40367500995052e-22,-6.33995737898523e-22,-6.27687374904115e-22,-6.21441781170267e-22,-6.15258332132411e-22,-6.09136409440485e-22,-6.03075400897119e-22,-5.97074700396402e-22,-5.91133707863294e-22,-5.85251829193584e-22,-5.79428476194502e-22,-5.73663066525901e-22,-5.67955023642008e-22,-5.62303776733776e-22,-5.56708760671801e-22,-5.51169415949823e-22,-5.4568518862875e-22,-5.40255530281274e-22,-5.34879897937045e-22,-5.29557754028345e-22,-5.24288566336346e-22,-5.19071807937887e-22,-5.13906957152786e-22,-5.08793497491657e-22,-5.03730917604274e-22,-4.98718711228425e-22,-4.93756377139303e-22,-4.88843419099359e-22,-4.83979345808693e-22,-4.79163670855928e-22,-4.74395912669554e-22,-4.69675594469778e-22,-4.65002244220843e-22,-4.60375394583836e-22,-4.55794582869936e-22,-4.51259350994149e-22,-4.46769245429515e-22,-4.42323817161734e-22,-4.37922621644273e-22,-4.3356521875391e-22,-4.29251172746731e-22,-4.24980052214537e-22,-4.20751430041713e-22,-4.16564883362524e-22,-4.12419993518809e-22,-4.08316346018131e-22,-4.04253530492316e-22,-4.00231140656433e-22,-3.96248774268142e-22,-3.92306033087486e-22,-3.88402522837059e-22,-3.84537853162589e-22,-3.80711637593884e-22,-3.76923493506196e-22,-3.73173042081966e-22,-3.69459908272922e-22,-3.6578372076259e-22,-3.62144111929153e-22,-3.58540717808699e-22,-3.5497317805881e-22,-3.51441135922537e-22,-3.47944238192727e-22,-3.44482135176691e-22,-3.41054480661242e-22,-3.3766093187807e-22,-3.34301149469473e-22,-3.30974797454408e-22,-3.276815431949e-22,-3.24421057362782e-22,-3.21193013906752e-22,-3.17997090019775e-22,-3.14832966106796e-22,-3.11700325752791e-22,-3.08598855691113e-22,-3.05528245772171e-22,-3.02488188932411e-22,-2.99478381163621e-22,-2.96498521482514e-22,-2.93548311900635e-22,-2.90627457394573e-22,-2.87735665876441e-22,-2.84872648164677e-22,-2.82038117955123e-22,-2.79231791792398e-22,-2.76453389041547e-22,-2.73702631859976e-22,-2.70979245169679e-22,-2.68282956629717e-22,-2.65613496608987e-22,-2.62970598159261e-22,-2.60353996988496e-22,-2.57763431434393e-22,-2.55198642438234e-22,-2.52659373518988e-22,-2.50145370747643e-22,-2.47656382721829e-22,-2.45192160540666e-22,-2.42752457779886e-22,-2.40337030467178e-22,-2.37945637057799e-22,-2.35578038410413e-22,-2.33233997763185e-22,-2.30913280710095e-22,-2.28615655177504e-22,-2.26340891400945e-22,-2.24088761902145e-22,-2.21859041466276e-22,-2.19651507119435e-22,-2.17465938106351e-22,-2.153021158683e-22,-2.13159824021254e-22,-2.11038848334245e-22,-2.08938976707935e-22,-2.06859999153413e-22,-2.04801707771188e-22,-2.02763896730411e-22,-2.00746362248277e-22,-1.98748902569656e-22,-1.96771317946918e-22,-1.94813410619951e-22,-1.92874984796392e-22,-1.9095584663204e-22,-1.89055804211483e-22,-1.87174667528895e-22,-1.85312248469038e-22,-1.83468360788455e-22,-1.81642820096843e-22,-1.79835443838609e-22,-1.78046051274622e-22,-1.76274463464136e-22,-1.74520503246892e-22,-1.72783995225407e-22,-1.7106476574743e-22,-1.69362642888584e-22,-1.67677456435163e-22,-1.66009037867115e-22,-1.64357220341197e-22,-1.62721838674278e-22,-1.61102729326828e-22,-1.59499730386563e-22,-1.57912681552254e-22,-1.56341424117694e-22,-1.54785800955831e-22,-1.53245656503052e-22,-1.51720836743629e-22,-1.50211189194315e-22,-1.48716562889096e-22,-1.47236808364097e-22,-1.45771777642633e-22,-1.4432132422041e-22,-1.42885303050876e-22,-1.41463570530719e-22,-1.40055984485503e-22,-1.38662404155447e-22,-1.37282690181361e-22,-1.35916704590695e-22,-1.34564310783753e-22,-1.33225373520025e-22,-1.31899758904672e-22,-1.30587334375126e-22,-1.2928796868784e-22,-1.28001531905164e-22,-1.26727895382346e-22,-1.25466931754674e-22,-1.24218514924733e-22,-1.22982520049801e-22,-1.21758823529359e-22,-1.20547302992736e-22,-1.19347837286869e-22,-1.18160306464187e-22,-1.1698459177062e-22,-1.15820575633716e-22,-1.14668141650893e-22,-1.13527174577793e-22,-1.12397560316757e-22,-1.11279185905417e-22,-1.10171939505401e-22,-1.09075710391146e-22,-1.07990388938826e-22,-1.06915866615393e-22,-1.05852035967718e-22,-1.0479879061185e-22,-1.03756025222376e-22,-1.02723635521888e-22,-1.01701518270555e-22,-1.00689571255801e-22,-9.96876932820809e-23,-9.86957841607625e-23,-9.77137447001069e-23,-9.67414766953489e-23,-9.57788829188794e-23,-9.48258671105178e-23,-9.38823339678884e-23,-9.29481891368919e-23,-9.20233392022663e-23,-9.11076916782472e-23,-9.02011549993187e-23,-8.93036385110585e-23,-8.84150524610695e-23,-8.7535307990006e-23,-8.66643171226872e-23,-8.58019927593018e-23,-8.49482486666943e-23,-8.41029994697432e-23,-8.32661606428258e-23,-8.24376485013614e-23,-8.16173801934453e-23,-8.08052736915628e-23,-8.00012477843879e-23,-7.92052220686594e-23,-7.84171169411418e-23,-7.76368535906667e-23,-7.68643539902482e-23,-7.60995408892825e-23,-7.53423378058218e-23,-7.45926690189277e-23,-7.38504595610962e-23,-7.31156352107626e-23,-7.23881224848805e-23,-7.16678486315705e-23,-7.0954741622847e-23,-7.02487301474145e-23,-6.95497436035381e-23,-6.88577120919803e-23,-6.81725664090133e-23,-6.74942380394974e-23,-6.68226591500313e-23,-6.61577625821659e-23,-6.549948184569e-23,-6.48477511119821e-23,-6.42025052074255e-23,-6.35636796068918e-23,-6.29312104272883e-23,-6.23050344211708e-23,-6.16850889704165e-23,-6.10713120799632e-23,-6.04636423716112e-23,-5.98620190778829e-23,-5.92663820359476e-23,-5.86766716816044e-23,-5.8092829043327e-23,-5.75147957363649e-23,-5.69425139569051e-23,-5.63759264762937e-23,-5.581497663531e-23,-5.52596083385025e-23,-5.47097660485782e-23,-5.41653947808509e-23,-5.36264400977396e-23,-5.30928481033269e-23,-5.25645654379683e-23,-5.20415392729579e-23,-5.15237173052429e-23,-5.10110477521946e-23,-5.05034793464312e-23,-5.00009613306889e-23,-4.95034434527472e-23,-4.90108759604035e-23,-4.85232095964987e-23,-4.80403955939896e-23,-4.75623856710735e-23,-4.70891320263602e-23,-4.66205873340906e-23,-4.61567047394051e-23,-4.56974378536572e-23,-4.52427407497763e-23,-4.47925679576729e-23,-4.43468744596921e-23,-4.39056156861135e-23,-4.34687475106916e-23,-4.30362262462449e-23,-4.26080086402861e-23,-4.21840518706984e-23,-4.17643135414514e-23,-4.13487516783621e-23,-4.09373247248979e-23,-4.05299915380209e-23,-4.01267113840729e-23,-3.9727443934702e-23,-3.93321492628312e-23,-3.89407878386635e-23,-3.85533205257305e-23,-3.81697085769777e-23,-3.77899136308911e-23,-3.74138977076592e-23,-3.70416232053762e-23,-3.66730528962821e-23,-3.63081499230386e-23,-3.59468777950443e-23,-3.55892003847851e-23,-3.52350819242224e-23,-3.48844870012147e-23,-3.45373805559775e-23,-3.41937278775773e-23,-3.38534946004598e-23,-3.35166467010136e-23,-3.3183150494168e-23,-3.28529726300247e-23,-3.2526080090522e-23,-3.22024401861335e-23,-3.18820205525988e-23,-3.15647891476881e-23,-3.12507142479962e-23,-3.09397644457712e-23,-3.06319086457743e-23,-3.03271160621686e-23,-3.00253562154418e-23,-2.97265989293576e-23,-2.94308143279387e-23,-2.91379728324784e-23,-2.88480451585829e-23,-2.85610023132435e-23,-2.82768155919364e-23,-2.79954565757526e-23,-2.77168971285558e-23,-2.74411093941695e-23,-2.71680657935903e-23,-2.68977390222304e-23,-2.66301020471878e-23,-2.63651281045417e-23,-2.6102790696677e-23,-2.58430635896343e-23,-2.55859208104867e-23,-2.53313366447418e-23,-2.50792856337708e-23,-2.48297425722626e-23,-2.45826825057033e-23,-2.43380807278802e-23,-2.40959127784115e-23,-2.38561544403008e-23,-2.36187817375143e-23,-2.3383770932584e-23,-2.31510985242333e-23,-2.29207412450278e-23,-2.26926760590475e-23,-2.24668801595836e-23,-2.22433309668583e-23,-2.20220061257658e-23,-2.18028835036376e-23,-2.15859411880288e-23,-2.13711574845273e-23,-2.11585109145836e-23,-2.09479802133633e-23,-2.07395443276212e-23,-2.0533182413595e-23,-2.03288738349211e-23,-2.01265981605713e-23,-1.992633516281e-23,-1.97280648151703e-23,-1.95317672904522e-23,-1.93374229587395e-23,-1.91450123854374e-23,-1.89545163293281e-23,-1.87659157406471e-23,-1.85791917591786e-23,-1.83943257123687e-23,-1.82112991134587e-23,-1.80300936596361e-23,-1.78506912302047e-23,-1.76730738847719e-23,-1.74972238614551e-23,-1.73231235751056e-23,-1.71507556155497e-23,-1.69801027458476e-23,-1.68111479005701e-23,-1.66438741840922e-23,-1.64782648689025e-23,-1.63143033939316e-23,-1.61519733628955e-23,-1.59912585426558e-23,-1.58321428615963e-23,-1.56746104080164e-23,-1.55186454285397e-23,-1.5364232326538e-23,-1.52113556605726e-23,-1.50600001428493e-23,-1.49101506376904e-23,-1.47617921600205e-23,-1.4614909873868e-23,-1.44694890908821e-23,-1.43255152688632e-23,-1.41829740103092e-23,-1.40418510609754e-23,-1.39021323084493e-23,-1.37638037807392e-23,-1.36268516448769e-23,-1.3491262205535e-23,-1.33570219036564e-23,-1.3224117315099e-23,-1.30925351492932e-23,-1.29622622479129e-23,-1.28332855835593e-23,-1.27055922584584e-23,-1.25791695031715e-23,-1.24540046753176e-23,-1.23300852583096e-23,-1.22073988601024e-23,-1.20859332119542e-23,-1.19656761671988e-23,-1.18466157000316e-23,-1.17287399043065e-23,-1.16120369923459e-23,-1.14964952937613e-23,-1.13821032542864e-23,-1.12688494346221e-23,-1.11567225092921e-23,-1.10457112655102e-23,-1.09358046020597e-23,-1.08269915281826e-23,-1.07192611624808e-23,-1.0612602731828e-23,-1.05070055702923e-23,-1.04024591180695e-23,-1.02989529204272e-23,-1.01964766266594e-23,-1.00950199890515e-23,-9.99457286185497e-24,-9.89512520027341e-24,-9.79666705945791e-24,-9.69918859351228e-24,-9.60268005450868e-24,-9.50713179151272e-24,-9.41253424961862e-24,-9.31887796899328e-24,-9.2261535839306e-24,-9.13435182191473e-24,-9.04346350269311e-24,-8.953479537358e-24,-8.86439092743782e-24,-8.77618876399747e-24,-8.68886422674703e-24,-8.60240858316e-24,-8.51681318759993e-24,-8.43206948045605e-24,-8.34816898728697e-24,-8.26510331797338e-24,-8.18286416587926e-24,-8.1014433070208e-24,-8.02083259924427e-24,-7.94102398141166e-24,-7.86200947259478e-24,-7.78378117127686e-24,-7.70633125456252e-24,-7.62965197739566e-24,-7.5537356717846e-24,-7.47857474603552e-24,-7.40416168399315e-24,-7.3304890442894e-24,-7.25754945959883e-24,-7.1853356359022e-24,-7.11384035175691e-24,-7.04305645757506e-24,-6.97297687490821e-24,-6.90359459573963e-24,-6.83490268178369e-24,-6.7668942637917e-24,-6.69956254086518e-24,-6.6329007797757e-24,-6.56690231429167e-24,-6.50156054451151e-24,-6.43686893620373e-24,-6.3728210201537e-24,-6.30941039151639e-24,-6.24663070917609e-24,-6.1844756951122e-24,-6.12293913377162e-24,-6.06201487144688e-24,-6.00169681566094e-24,-5.94197893455803e-24,-5.88285525630025e-24,-5.82431986847049e-24,-5.76636691748116e-24,-5.70899060798894e-24,-5.65218520231502e-24,-5.5959450198715e-24,-5.54026443659324e-24,-5.48513788437557e-24,-5.43055985051731e-24,-5.37652487716954e-24,-5.32302756078998e-24,-5.27006255160237e-24,-5.21762455306166e-24,-5.16570832132424e-24,-5.11430866472377e-24,-5.06342044325171e-24,-5.01303856804347e-24,-4.96315800086961e-24,-4.91377375363182e-24,-4.86488088786422e-24,-4.81647451423945e-24,-4.76854979207989e-24,-4.72110192887333e-24,-4.67412617979389e-24,-4.62761784722759e-24,-4.58157228030237e-24,-4.53598487442316e-24,-4.49085107081137e-24,-4.44616635604908e-24,-4.40192626162754e-24,-4.35812636350046e-24,-4.31476228164147e-24,-4.27182967960633e-24,-4.22932426409901e-24,-4.18724178454253e-24,-4.14557803265391e-24,-4.10432884202321e-24,-4.06349008769701e-24,-4.02305768576579e-24,-3.98302759295575e-24,-3.94339580622419e-24,-3.90415836235941e-24,-3.86531133758436e-24,-3.82685084716418e-24,-3.78877304501777e-24,-3.75107412333315e-24,-3.7137503121868e-24,-3.67679787916647e-24,-3.64021312899804e-24,-3.60399240317605e-24,-3.56813207959772e-24,-3.53262857220081e-24,-3.49747833060495e-24,-3.46267783975676e-24,-3.42822361957811e-24,-3.39411222461829e-24,-3.36034024370934e-24,-3.32690429962508e-24,-3.29380104874321e-24,-3.26102718071103e-24,-3.22857941811448e-24,-3.19645451615023e-24,-3.16464926230132e-24,-3.13316047601583e-24,-3.10198500838895e-24,-3.07111974184789e-24,-3.04056158984028e-24,-3.01030749652548e-24,-2.98035443646893e-24,-2.95069941433967e-24,-2.92133946461074e-24,-2.89227165126275e-24,-2.86349306749013e-24,-2.83500083541048e-24,-2.80679210577691e-24,-2.77886405769291e-24,-2.75121389833041e-24,-2.72383886265041e-24,-2.69673621312656e-24,-2.66990323947132e-24,-2.64333725836495e-24,-2.61703561318719e-24,-2.59099567375163e-24,-2.56521483604262e-24,-2.53969052195489e-24,-2.51442017903578e-24,-2.48940128022993e-24,-2.46463132362661e-24,-2.44010783220951e-24,-2.41582835360907e-24,-2.39179045985719e-24,-2.36799174714445e-24,-2.34442983557977e-24,-2.32110236895234e-24,-2.29800701449607e-24,-2.27514146265624e-24,-2.25250342685866e-24,-2.23009064328085e-24,-2.20790087062577e-24,-2.18593188989769e-24,-2.16418150418022e-24,-2.14264753841665e-24,-2.12132783919246e-24,-2.10022027451998e-24,-2.07932273362514e-24,-2.05863312673644e-24,-2.03814938487594e-24,-2.01786945965239e-24,-1.99779132305638e-24,-1.97791296725749e-24,-1.95823240440361e-24,-1.93874766642203e-24,-1.91945680482272e-24,-1.90035789050343e-24,-1.88144901355685e-24,-1.8627282830795e-24,-1.84419382698272e-24,-1.82584379180549e-24,-1.80767634252898e-24,-1.78968966239312e-24,-1.7718819527149e-24,-1.75425143270855e-24,-1.73679633930734e-24,-1.71951492698739e-24,-1.70240546759308e-24,-1.6854662501642e-24,-1.66869558076491e-24,-1.65209178231426e-24,-1.6356531944186e-24,-1.61937817320544e-24,-1.60326509115908e-24,-1.58731233695788e-24,-1.57151831531316e-24,-1.55588144680957e-24,-1.54040016774722e-24,-1.52507292998533e-24,-1.50989820078733e-24,-1.49487446266767e-24,-1.48000021324e-24,-1.46527396506699e-24,-1.45069424551157e-24,-1.43625959658959e-24,-1.42196857482418e-24,-1.40781975110122e-24,-1.39381171052656e-24,-1.37994305228446e-24,-1.36621238949755e-24,-1.35261834908811e-24,-1.33915957164075e-24,-1.32583471126653e-24,-1.31264243546831e-24,-1.2995814250075e-24,-1.28665037377218e-24,-1.27384798864645e-24,-1.26117298938114e-24,-1.24862410846574e-24,-1.2362000910017e-24,-1.22389969457694e-24,-1.21172168914156e-24,-1.19966485688486e-24,-1.18772799211357e-24,-1.17590990113128e-24,-1.16420940211903e-24,-1.15262532501716e-24,-1.14115651140832e-24,-1.12980181440159e-24,-1.11856009851779e-24,-1.107430239576e-24,-1.09641112458102e-24,-1.08550165161218e-24,-1.07470072971308e-24,-1.06400727878255e-24,-1.05342022946657e-24,-1.04293852305138e-24,-1.03256111135762e-24,-1.02228695663547e-24,-1.0121150314609e-24,-1.00204431863289e-24,-9.92073811071792e-25,-9.82202511718533e-25,-9.72429433434951e-25,-9.62753598905066e-25,-9.53174040537375e-25,-9.43689800368053e-25,-9.34299929965172e-25,-9.25003490333879e-25,-9.15799551822459e-25,-9.06687194029391e-25,-8.97665505711293e-25,-8.8873358469183e-25,-8.79890537771451e-25,-8.71135480638086e-25,-8.62467537778741e-25,-8.53885842391898e-25,-8.45389536300869e-25,-8.36977769867957e-25,-8.28649701909522e-25,-8.20404499611822e-25,-8.12241338447749e-25,-8.04159402094397e-25,-7.9615788235139e-25,-7.88235979060085e-25,-7.80392900023546e-25,-7.72627860927344e-25,-7.64940085261094e-25,-7.57328804240822e-25,-7.49793256732078e-25,-7.42332689173843e-25,-7.34946355503138e-25,-7.27633517080435e-25,-7.20393442615808e-25,-7.13225408095773e-25,-7.06128696710904e-25,-6.99102598784144e-25,-6.92146411699854e-25,-6.85259439833525e-25,-6.78440994482226e-25,-6.7169039379575e-25,-6.65006962708396e-25,-6.58390032871488e-25,-6.51838942586523e-25,-6.45353036739022e-25,-6.38931666732991e-25,-6.32574190426073e-25,-6.26279972065349e-25,-6.20048382223734e-25,-6.1387879773705e-25,-6.07770601641702e-25,-6.01723183113e-25,-5.95735937404047e-25,-5.89808265785283e-25,-5.83939575484602e-25,-5.78129279628091e-25,-5.72376797181319e-25,-5.66681552891243e-25,-5.61042977228697e-25,-5.5546050633141e-25,-5.49933581947643e-25,-5.44461651380345e-25,-5.39044167431909e-25,-5.33680588349422e-25,-5.283703777705e-25,-5.2311300466967e-25,-5.17907943305236e-25,-5.12754673166723e-25,-5.07652678922821e-25,-5.02601450369859e-25,-4.97600482380771e-25,-4.92649274854586e-25,-4.87747332666432e-25,-4.82894165618002e-25,-4.78089288388547e-25,-4.73332220486336e-25,-4.68622486200623e-25,-4.63959614554049e-25,-4.59343139255566e-25,-4.54772598653791e-25,-4.50247535690864e-25,-4.45767497856714e-25,-4.4133203714382e-25,-4.36940710002421e-25,-4.32593077296141e-25,-4.28288704258087e-25,-4.24027160447363e-25,-4.19808019706045e-25,-4.15630860116538e-25,-4.114952639594e-25,-4.07400817671575e-25,-4.03347111805018e-25,-3.99333740985766e-25,-3.95360303873389e-25,-3.9142640312087e-25,-3.87531645334853e-25,-3.83675641036311e-25,-3.79858004621606e-25,-3.76078354323912e-25,-3.72336312175051e-25,-3.68631503967686e-25,-3.64963559217914e-25,-3.61332111128201e-25,-3.57736796550712e-25,-3.5417725595099e-25,-3.50653133372015e-25,-3.47164076398589e-25,-3.43709736122105e-25,-3.40289767105661e-25,-3.36903827349504e-25,-3.33551578256835e-25,-3.30232684599951e-25,-3.26946814486723e-25,-3.23693639327401e-25,-3.20472833801755e-25,-3.17284075826553e-25,-3.14127046523338e-25,-3.11001430186548e-25,-3.07906914251944e-25,-3.04843189265357e-25,-3.01809948851734e-25,-2.98806889684502e-25,-2.95833711455248e-25,-2.92890116843668e-25,-2.89975811487849e-25,-2.87090503954823e-25,-2.84233905711438e-25,-2.81405731095487e-25,-2.7860569728715e-25,-2.75833524280713e-25,-2.73088934856567e-25,-2.70371654553482e-25,-2.67681411641161e-25,-2.65017937093075e-25,-2.62380964559547e-25,-2.59770230341126e-25,-2.57185473362214e-25,-2.54626435144961e-25,-2.52092859783413e-25,-2.49584493917919e-25,-2.47101086709806e-25,-2.44642389816283e-25,-2.42208157365611e-25,-2.39798145932514e-25,-2.37412114513845e-25,-2.35049824504471e-25,-2.32711039673421e-25,-2.30395526140267e-25,-2.28103052351724e-25,-2.25833389058503e-25,-2.23586309292381e-25,-2.21361588343512e-25,-2.19159003737946e-25,-2.16978335215387e-25,-2.14819364707165e-25,-2.12681876314431e-25,-2.10565656286563e-25,-2.08470492999796e-25,-2.06396176936055e-25,-2.04342500662006e-25,-2.02309258808308e-25,-2.00296248049082e-25,-1.98303267081576e-25,-1.96330116606032e-25,-1.94376599305756e-25,-1.92442519827392e-25,-1.90527684761381e-25,-1.8863190262262e-25,-1.86754983831313e-25,-1.8489674069402e-25,-1.83056987384878e-25,-1.81235539927021e-25,-1.79432216174188e-25,-1.776468357925e-25,-1.75879220242431e-25,-1.74129192760951e-25,-1.72396578343857e-25,-1.70681203728261e-25,-1.68982897375274e-25,-1.67301489452841e-25,-1.65636811818774e-25,-1.6398869800392e-25,-1.62356983195523e-25,-1.60741504220744e-25,-1.59142099530339e-25,-1.57558609182506e-25,-1.55990874826889e-25,-1.5443873968875e-25,-1.52902048553278e-25,-1.51380647750079e-25,-1.49874385137808e-25,-1.48383110088945e-25,-1.46906673474745e-25,-1.45444927650314e-25,-1.43997726439853e-25,-1.42564925122035e-25,-1.41146380415533e-25,-1.39741950464696e-25,-1.38351494825357e-25,-1.36974874450793e-25,-1.35611951677821e-25,-1.34262590213027e-25,-1.3292665511914e-25,-1.31604012801538e-25,-1.30294530994885e-25,-1.28998078749912e-25,-1.27714526420313e-25,-1.26443745649784e-25,-1.25185609359191e-25,-1.23939991733856e-25,-1.22706768210977e-25,-1.21485815467175e-25,-1.20277011406159e-25,-1.19080235146515e-25,-1.17895367009618e-25,-1.1672228850767e-25,-1.15560882331841e-25,-1.14411032340547e-25,-1.13272623547828e-25,-1.1214554211186e-25,-1.11029675323557e-25,-1.09924911595312e-25,-1.0883114044983e-25,-1.07748252509087e-25,-1.06676139483385e-25,-1.05614694160528e-25,-1.045638103951e-25,-1.03523383097849e-25,-1.02493308225177e-25,-1.01473482768738e-25,-1.00463804745138e-25,-9.94641731857334e-26,-9.84744881265333e-26,-9.74946505982089e-26,-9.65245626161901e-26,-9.55641271708704e-26,-9.46132482179041e-26,-9.36718306686049e-26,-9.27397803804327e-26,-9.18170041475813e-26,-9.09034096916597e-26,-8.99989056524604e-26,-8.91034015788256e-26,-8.82168079196012e-26,-8.73390360146836e-26,-8.64699980861503e-26,-8.56096072294836e-26,-8.4757777404882e-26,-8.39144234286525e-26,-8.30794609646949e-26,-8.22528065160663e-26,-8.14343774166341e-26,-8.06240918228057e-26,-7.98218687053466e-26,-7.90276278412759e-26,-7.82412898058465e-26,-7.7462775964599e-26,-7.66920084654999e-26,-7.59289102311581e-26,-7.51734049511137e-26,-7.44254170742092e-26,-7.36848718010329e-26,-7.29516950764415e-26,-7.22258135821511e-26,-7.15071547294067e-26,-7.07956466517253e-26,-7.00912181977056e-26,-6.93937989239153e-26,-6.87033190878451e-26,-6.80197096409373e-26,-6.73429022216768e-26,-6.66728291487572e-26,-6.60094234143139e-26,-6.535261867722e-26,-6.47023492564546e-26,-6.40585501245332e-26,-6.34211569010069e-26,-6.27901058460219e-26,-6.21653338539468e-26,-6.15467784470613e-26,-6.093437776931e-26,-6.03280705801145e-26,-5.97277962482501e-26,-5.91334947457843e-26,-5.85451066420712e-26,-5.796257309781e-26,-5.73858358591605e-26,-5.6814837251919e-26,-5.62495201757486e-26,-5.56898280984701e-26,-5.51357050504101e-26,-5.45870956188018e-26,-5.40439449422448e-26,-5.35061987052184e-26,-5.29738031326515e-26,-5.24467049845429e-26,-5.19248515506381e-26,-5.14081906451596e-26,-5.08966706015859e-26,-5.03902402674864e-26,-4.98888489994053e-26,-4.93924466577986e-26,-4.89009836020183e-26,-4.84144106853491e-26,-4.79326792500936e-26,-4.74557411227074e-26,-4.69835486089801e-26,-4.65160544892665e-26,-4.60532120137656e-26,-4.55949748978439e-26,-4.5141297317408e-26,-4.46921339043213e-26,-4.4247439741869e-26,-4.38071703602638e-26,-4.33712817322004e-26,-4.29397302684534e-26,-4.25124728135165e-26,-4.20894666412882e-26,-4.16706694507983e-26,-4.12560393619795e-26,-4.0845534911477e-26,-4.04391150485034e-26,-4.00367391307344e-26,-3.96383669202424e-26,-3.92439585794746e-26,-3.88534746672679e-26,-3.84668761349062e-26,-3.80841243222138e-26,-3.77051809536905e-26,-3.73300081346834e-26,-3.69585683475984e-26,-3.65908244481471e-26,-3.62267396616329e-26,-3.58662775792741e-26,-3.55094021545619e-26,-3.51560776996564e-26,-3.48062688818175e-26,-3.44599407198723e-26,-3.41170585807159e-26,-3.37775881758482e-26,-3.34414955579464e-26,-3.31087471174685e-26,-3.2779309579293e-26,-3.24531499993914e-26,-3.21302357615343e-26,-3.18105345740287e-26,-3.14940144664891e-26,-3.11806437866415e-26,-3.08703911971565e-26,-3.05632256725166e-26,-3.02591164959132e-26,-2.99580332561757e-26,-2.96599458447288e-26,-2.93648244525832e-26,-2.90726395673533e-26,-2.87833619703077e-26,-2.84969627334453e-26,-2.82134132166036e-26,-2.7932685064595e-26,-2.76547502043703e-26,-2.73795808422116e-26,-2.71071494609534e-26,-2.68374288172308e-26,-2.65703919387545e-26,-2.6306012121614e-26,-2.60442629276076e-26,-2.57851181815976e-26,-2.55285519688934e-26,-2.52745386326598e-26,-2.50230527713518e-26,-2.47740692361735e-26,-2.45275631285639e-26,-2.42835097977069e-26,-2.40418848380661e-26,-2.3802664086944e-26,-2.35658236220661e-26,-2.33313397591888e-26,-2.30991890497303e-26,-2.28693482784261e-26,-2.26417944610075e-26,-2.24165048419033e-26,-2.21934568919638e-26,-2.1972628306208e-26,-2.17539970015936e-26,-2.15375411148076e-26,-2.13232390000812e-26,-2.11110692270241e-26,-2.09010105784824e-26,-2.06930420484162e-26,-2.04871428397989e-26,-2.02832923625384e-26,-2.00814702314169e-26,-1.98816562640532e-26,-1.96838304788839e-26,-1.94879730931658e-26,-1.92940645209971e-26,-1.91020853713588e-26,-1.89120164461763e-26,-1.87238387383984e-26,-1.85375334300976e-26,-1.83530818905877e-26,-1.81704656745612e-26,-1.79896665202444e-26,-1.78106663475709e-26,-1.76334472563744e-26,-1.74579915245982e-26,-1.72842816065229e-26,-1.71123001310117e-26,-1.69420298997741e-26,-1.67734538856448e-26,-1.6606555230882e-26,-1.6441317245481e-26,-1.62777234055058e-26,-1.6115757351436e-26,-1.59554028865311e-26,-1.57966439752111e-26,-1.56394647414526e-26,-1.54838494672011e-26,-1.53297825907996e-26,-1.5177248705432e-26,-1.50262325575828e-26,-1.48767190455111e-26,-1.47286932177414e-26,-1.45821402715674e-26,-1.44370455515724e-26,-1.42933945481633e-26,-1.41511728961204e-26,-1.40103663731597e-26,-1.38709608985118e-26,-1.37329425315127e-26,-1.35962974702111e-26,-1.34610120499867e-26,-1.33270727421848e-26,-1.31944661527632e-26,-1.30631790209522e-26,-1.29331982179294e-26,-1.2804510745506e-26,-1.26771037348277e-26,-1.25509644450871e-26,-1.24260802622502e-26,-1.23024386977946e-26,-1.21800273874609e-26,-1.2058834090016e-26,-1.19388466860291e-26,-1.18200531766599e-26,-1.17024416824585e-26,-1.15860004421773e-26,-1.14707178115955e-26,-1.13565822623537e-26,-1.12435823808021e-26,-1.11317068668581e-26,-1.10209445328774e-26,-1.09112843025341e-26,-1.08027152097138e-26,-1.06952263974167e-26,-1.05888071166721e-26,-1.04834467254633e-26,-1.03791346876631e-26,-1.02758605719811e-26,-1.01736140509196e-26,-1.00723848997411e-26,-9.97216299544628e-27,-9.87293831576122e-27,-9.77470093813521e-27,-9.67744103874855e-27,-9.58114889153039e-27,-9.48581486718571e-27,-9.39142943223262e-27,-9.2979831480489e-27,-9.2054666699284e-27,-9.11387074614614e-27,-9.02318621703334e-27,-8.93340401406166e-27,-8.84451515893592e-27,-8.75651076269652e-27,-8.66938202483045e-27,-8.58312023239143e-27,-8.49771675912827e-27,-8.41316306462248e-27,-8.32945069343408e-27,-8.24657127425632e-27,-8.16451651907815e-27,-8.08327822235562e-27,-8.00284826019147e-27,-7.9232185895224e-27,-7.84438124731498e-27,-7.76632834976925e-27,-7.68905209153051e-27,-7.61254474490849e-27,-7.53679865910472e-27,-7.46180625944759e-27,-7.38756004663461e-27,-7.3140525959826e-27,-7.24127655668521e-27,-7.16922465107795e-27,-7.09788967391018e-27,-7.02726449162468e-27,-6.95734204164446e-27,-6.8881153316662e-27,-6.81957743896124e-27,-6.75172150968311e-27,-6.68454075818246e-27,-6.6180284663281e-27,-6.55217798283541e-27,-6.48698272260112e-27,-6.42243616604498e-27,-6.35853185845749e-27,-6.29526340935459e-27,-6.23262449183875e-27,-6.17060884196596e-27,-6.10921025811955e-27,-6.04842260038995e-27,-5.98823978996079e-27,-5.92865580850084e-27,-5.86966469756227e-27,-5.8112605579849e-27,-5.75343754930606e-27,-5.69618988917669e-27,-5.63951185278305e-27,-5.58339777227433e-27,-5.52784203619569e-27,-5.47283908892718e-27,-5.41838343012831e-27,-5.36446961418779e-27,-5.3110922496791e-27,-5.25824599882126e-27,-5.20592557694522e-27,-5.15412575196517e-27,-5.10284134385543e-27,-5.05206722413243e-27,-5.00179831534194e-27,-4.95202959055117e-27,-4.90275607284612e-27,-4.85397283483403e-27,-4.80567499815042e-27,-4.75785773297137e-27,-4.71051625753047e-27,-4.66364583764081e-27,-4.61724178622129e-27,-4.57129946282808e-27,-4.52581427319061e-27,-4.48078166875198e-27,-4.43619714621423e-27,-4.39205624708791e-27,-4.34835455724639e-27,-4.30508770648423e-27,-4.26225136808028e-27,-4.21984125836505e-27,-4.17785313629221e-27,-4.13628280301455e-27,-4.09512610146408e-27,-4.05437891593639e-27,-4.01403717167897e-27,-3.97409683448375e-27,-3.93455391028371e-27,-3.89540444475354e-27,-3.85664452291402e-27,-3.81827026874064e-27,-3.78027784477607e-27,-3.74266345174622e-27,-3.70542332818044e-27,-3.66855375003532e-27,-3.63205103032236e-27,-3.59591151873915e-27,-3.5601316013044e-27,-3.52470769999659e-27,-3.48963627239604e-27,-3.45491381133077e-27,-3.42053684452572e-27,-3.3865019342556e-27,-3.352805677001e-27,-3.31944470310809e-27,-3.28641567645172e-27,-3.2537152941017e-27,-3.22134028599252e-27,-3.18928741459637e-27,-3.15755347459946e-27,-3.12613529258131e-27,-3.09502972669754e-27,-3.06423366636561e-27,-3.03374403195389e-27,-3.00355777447348e-27,-2.97367187527348e-27,-2.94408334573909e-27,-2.91478922699268e-27,-2.88578658959798e-27,-2.85707253326704e-27,-2.82864418657036e-27,-2.80049870664954e-27,-2.77263327893312e-27,-2.74504511685515e-27,-2.71773146157641e-27,-2.69068958170862e-27,-2.66391677304122e-27,-2.63741035827109e-27,-2.61116768673463e-27,-2.58518613414281e-27,-2.55946310231874e-27,-2.53399601893781e-27,-2.50878233727044e-27,-2.48381953592743e-27,-2.45910511860789e-27,-2.43463661384948e-27,-2.41041157478132e-27,-2.3864275788793e-27,-2.36268222772389e-27,-2.33917314676015e-27,-2.3158979850604e-27,-2.29285441508908e-27,-2.27004013247e-27,-2.24745285575586e-27,-2.22509032620018e-27,-2.20295030753137e-27,-2.18103058572912e-27,-2.15932896880295e-27,-2.13784328657313e-27,-2.1165713904535e-27,-2.09551115323674e-27,-2.07466046888155e-27,-2.05401725230216e-27,-2.03357943915968e-27,-2.01334498565575e-27,-1.9933118683282e-27,-1.97347808384859e-27,-1.95384164882192e-27,-1.93440059958834e-27,-1.91515299202673e-27,-1.89609690136029e-27,-1.87723042196407e-27,-1.8585516671744e-27,-1.84005876910025e-27,-1.82174987843641e-27,-1.80362316427853e-27,-1.78567681394011e-27,-1.76790903277115e-27,-1.75031804397873e-27,-1.7329020884493e-27,-1.71565942457282e-27,-1.69858832806852e-27,-1.68168709181251e-27,-1.6649540256671e-27,-1.64838745631172e-27,-1.63198572707564e-27,-1.61574719777224e-27,-1.5996702445351e-27,-1.58375325965547e-27,-1.56799465142159e-27,-1.55239284395953e-27,-1.53694627707554e-27,-1.52165340610004e-27,-1.50651270173319e-27,-1.49152264989196e-27,-1.47668175155866e-27,-1.46198852263107e-27,-1.44744149377409e-27,-1.43303921027268e-27,-1.41878023188651e-27,-1.40466313270584e-27,-1.39068650100901e-27,-1.37684893912118e-27,-1.36314906327465e-27,-1.34958550347039e-27,-1.33615690334115e-27,-1.32286192001571e-27,-1.30969922398465e-27,-1.29666749896742e-27,-1.28376544178065e-27,-1.27099176220786e-27,-1.25834518287045e-27,-1.24582443909996e-27,-1.23342827881157e-27,-1.22115546237891e-27,-1.20900476251013e-27,-1.19697496412511e-27,-1.18506486423398e-27,-1.17327327181683e-27,-1.16159900770459e-27,-1.15004090446113e-27,-1.13859780626648e-27,-1.1272685688013e-27,-1.11605205913239e-27,-1.10494715559945e-27,-1.09395274770284e-27,-1.08306773599265e-27,-1.07229103195861e-27,-1.06162155792135e-27,-1.05105824692456e-27,-1.04060004262835e-27,-1.03024589920358e-27,-1.01999478122726e-27,-1.00984566357907e-27,-9.99797531338778e-28,-9.89849379684788e-28,-9.80000213793637e-28,-9.70249048740541e-28,-9.60594909400863e-28,-9.51036830352617e-28,-9.41573855779946e-28,-9.322050393775e-28,-9.22929444255832e-28,-9.13746142847694e-28,-9.04654216815305e-28,-8.95652756958478e-28,-8.86740863123721e-28,-8.77917644114236e-28,-8.69182217600762e-28,-8.60533710033369e-28,-8.51971256554088e-28,-8.43494000910446e-28,-8.35101095369809e-28,-8.2679170063463e-28,-8.18564985758503e-28,-8.10420128063097e-28,-8.02356313055851e-28,-7.94372734348536e-28,-7.86468593576642e-28,-7.78643100319498e-28,-7.70895472021257e-28,-7.63224933912628e-28,-7.55630718933419e-28,-7.48112067655797e-28,-7.40668228208365e-28,-7.33298456200984e-28,-7.26002014650307e-28,-7.18778173906099e-28,-7.1162621157826e-28,-7.04545412464608e-28,-6.97535068479326e-28,-6.90594478582167e-28,-6.8372294870837e-28,-6.76919791699214e-28,-6.70184327233329e-28,-6.63515881758652e-28,-6.56913788425088e-28,-6.50377387017796e-28,-6.43906023891188e-28,-6.37499051903555e-28,-6.31155830352368e-28,-6.24875724910182e-28,-6.18658107561213e-28,-6.12502356538555e-28,-6.06407856261971e-28,-6.00373997276355e-28,-5.94400176190776e-28,-5.88485795618155e-28,-5.82630264115503e-28,-5.76832996124784e-28,-5.71093411914378e-28,-5.65410937521077e-28,-5.59785004692704e-28,-5.54215050831286e-28,-5.48700518936803e-28,-5.43240857551465e-28,-5.37835520704581e-28,-5.32483967857968e-28,-5.2718566385188e-28,-5.21940078851499e-28,-5.16746688293952e-28,-5.11604972835861e-28,-5.06514418301393e-28,-5.01474515630852e-28,-4.96484760829767e-28,-4.91544654918507e-28,-4.86653703882361e-28,-4.81811418622146e-28,-4.77017314905308e-28,-4.72270913317475e-28,-4.67571739214535e-28,-4.62919322675157e-28,-4.58313198453818e-28,-4.53752905934253e-28,-4.49237989083407e-28,-4.44767996405838e-28,-4.40342480898552e-28,-4.35961000006308e-28,-4.31623115577364e-28,-4.27328393819668e-28,-4.23076405257462e-28,-4.18866724688344e-28,-4.14698931140754e-28,-4.10572607831862e-28,-4.06487342125899e-28,-4.02442725492885e-28,-3.98438353467794e-28,-3.94473825610082e-28,-3.90548745463661e-28,-3.86662720517242e-28,-3.82815362165097e-28,-3.79006285668183e-28,-3.75235110115672e-28,-3.71501458386872e-28,-3.67804957113497e-28,-3.64145236642339e-28,-3.60521930998297e-28,-3.56934677847794e-28,-3.53383118462522e-28,-3.4986689768358e-28,-3.46385663885967e-28,-3.42939068943397e-28,-3.39526768193505e-28,-3.36148420403371e-28,-3.32803687735403e-28,-3.29492235713547e-28,-3.26213733189837e-28,-3.22967852311294e-28,-3.19754268487123e-28,-3.16572660356264e-28,-3.13422709755249e-28,-3.10304101686399e-28,-3.07216524286305e-28,-3.04159668794654e-28,-3.01133229523348e-28,-2.98136903825941e-28,-2.95170392067365e-28,-2.9223339759397e-28,-2.89325626703865e-28,-2.86446788617536e-28,-2.83596595448775e-28,-2.80774762175889e-28,-2.77981006613201e-28,-2.75215049382827e-28,-2.72476613886735e-28,-2.69765426279099e-28,-2.67081215438896e-28,-2.64423712942805e-28,-2.61792653038361e-28,-2.59187772617383e-28,-2.56608811189658e-28,-2.54055510856891e-28,-2.51527616286926e-28,-2.49024874688196e-28,-2.46547035784456e-28,-2.4409385178975e-28,-2.41665077383636e-28,-2.39260469686649e-28,-2.36879788236016e-28,-2.34522794961604e-28,-2.32189254162127e-28,-2.29878932481558e-28,-2.27591598885801e-28,-2.25327024639595e-28,-2.23084983283626e-28,-2.20865250611891e-28,-2.1866760464927e-28,-2.16491825629339e-28,-2.14337695972381e-28,-2.12205000263634e-28,-2.10093525231754e-28,-2.08003059727475e-28,-2.05933394702505e-28,-2.03884323188616e-28,-2.01855640276951e-28,-1.99847143097528e-28,-1.97858630798953e-28,-1.95889904528342e-28,-1.93940767411425e-28,-1.92011024532868e-28,-1.90100482916773e-28,-1.88208951507388e-28,-1.86336241149995e-28,-1.84482164571998e-28,-1.82646536364192e-28,-1.8082917296223e-28,-1.79029892628256e-28,-1.77248515432735e-28,-1.75484863236466e-28,-1.73738759672759e-28,-1.72010030129803e-28,-1.702985017332e-28,-1.68604003328687e-28,-1.66926365465011e-28,-1.65265420376986e-28,-1.63621001968722e-28,-1.61992945797006e-28,-1.60381089054864e-28,-1.58785270555278e-28,-1.57205330715071e-28,-1.55641111538938e-28,-1.5409245660366e-28,-1.52559211042456e-28,-1.51041221529487e-28,-1.49538336264542e-28,-1.48050404957836e-28,-1.46577278815002e-28,-1.45118810522199e-28,-1.43674854231379e-28,-1.42245265545714e-28,-1.4082990150514e-28,-1.39428620572075e-28,-1.3804128261726e-28,-1.36667748905739e-28,-1.35307882083e-28,-1.33961546161227e-28,-1.32628606505704e-28,-1.31308929821357e-28,-1.30002384139415e-28,-1.28708838804223e-28,-1.2742816446017e-28,-1.26160233038753e-28,-1.24904917745773e-28,-1.23662093048657e-28,-1.22431634663896e-28,-1.21213419544629e-28,-1.20007325868329e-28,-1.18813233024621e-28,-1.17631021603226e-28,-1.1646057338202e-28,-1.15301771315201e-28,-1.141544995216e-28,-1.13018643273079e-28,-1.11894088983068e-28,-1.10780724195202e-28,-1.09678437572072e-28,-1.08587118884098e-28,-1.07506658998503e-28,-1.06436949868396e-28,-1.05377884521973e-28,-1.0432935705182e-28,-1.03291262604311e-28,-1.02263497369141e-28,-1.01245958568926e-28,-1.0023854444894e-28,-9.92411542669324e-29,-9.82536882830514e-29,-9.72760477498771e-29,-9.63081349025429e-29,-9.53498529489545e-29,-9.44011060601196e-29,-9.34617993605598e-29,-9.25318389188199e-29,-9.16111317380819e-29,-9.0699585746862e-29,-8.97971097897987e-29,-8.89036136185468e-29,-8.8019007882742e-29,-8.7143204121075e-29,-8.62761147524409e-29,-8.54176530671779e-29,-8.45677332184031e-29,-8.37262702134248e-29,-8.28931799052387e-29,-8.2068378984121e-29,-8.12517849692935e-29,-8.04433162006717e-29,-7.96428918307075e-29,-7.88504318162946e-29,-7.80658569107722e-29,-7.7289088655997e-29,-7.65200493744942e-29,-7.57586621616957e-29,-7.50048508782469e-29,-7.42585401423891e-29,-7.35196553224279e-29,-7.27881225292665e-29,-7.2063868609014e-29,-7.13468211356759e-29,-7.06369084039081e-29,-6.99340594218441e-29,-6.92382039040018e-29,-6.85492722642477e-29,-6.78671956088445e-29,-6.71919057295594e-29,-6.65233350968397e-29,-6.5861416853066e-29,-6.52060848058633e-29,-6.45572734214787e-29,-6.39149178182343e-29,-6.32789537600352e-29,-6.26493176499438e-29,-6.20259465238262e-29,-6.14087780440486e-29,-6.07977504932496e-29,-6.01928027681657e-29,-5.95938743735186e-29,-5.90009054159706e-29,-5.84138365981326e-29,-5.7832609212632e-29,-5.72571651362466e-29,-5.66874468240901e-29,-5.61233973038549e-29,-5.55649601701198e-29,-5.50120795787068e-29,-5.44647002410944e-29,-5.39227674188942e-29,-5.3386226918371e-29,-5.28550250850283e-29,-5.23291087982409e-29,-5.18084254659402e-29,-5.129292301936e-29,-5.07825499078267e-29,-5.02772550936024e-29,-4.97769880467853e-29,-4.92816987402546e-29,-4.87913376446654e-29,-4.83058557235009e-29,-4.78252044281632e-29,-4.73493356931227e-29,-4.68782019311101e-29,-4.64117560283552e-29,-4.59499513398798e-29,-4.54927416848308e-29,-4.50400813418603e-29,-4.45919250445576e-29,-4.414822797692e-29,-4.37089457688698e-29,-4.32740344918207e-29,-4.28434506542833e-29,-4.24171511975136e-29,-4.19950934912121e-29,-4.15772353292551e-29,-4.11635349254788e-29,-4.07539509094987e-29,-4.03484423225708e-29,-3.99469686134989e-29,-3.95494896345782e-29,-3.91559656375784e-29,-3.87663572697724e-29,-3.83806255699994e-29,-3.79987319647667e-29,-3.76206382643968e-29,-3.72463066592035e-29,-3.68756997157148e-29,-3.6508780372928e-29,-3.6145511938602e-29,-3.57858580855913e-29,-3.54297828482114e-29,-3.50772506186406e-29,-3.47282261433628e-29,-3.43826745196402e-29,-3.40405611920214e-29,-3.3701851948889e-29,-3.33665129190369e-29,-3.30345105682818e-29,-3.27058116961128e-29,-3.23803834323679e-29,-3.205819323395e-29,-3.17392088815712e-29,-3.14233984765295e-29,-3.11107304375218e-29,-3.08011734974839e-29,-3.0494696700463e-29,-3.01912693985246e-29,-2.98908612486859e-29,-2.95934422098808e-29,-2.92989825399583e-29,-2.90074527927054e-29,-2.87188238149046e-29,-2.84330667434182e-29,-2.81501530023001e-29,-2.78700542999407e-29,-2.75927426262368e-29,-2.73181902497892e-29,-2.70463697151318e-29,-2.6777253839985e-29,-2.65108157125363e-29,-2.62470286887513e-29,-2.59858663897081e-29,-2.57273026989585e-29,-2.54713117599186e-29,-2.52178679732805e-29,-2.49669459944547e-29,-2.47185207310345e-29,-2.4472567340286e-29,-2.42290612266653e-29,-2.39879780393586e-29,-2.37492936698456e-29,-2.35129842494907e-29,-2.32790261471553e-29,-2.30473959668335e-29,-2.2818070545315e-29,-2.25910269498657e-29,-2.23662424759374e-29,-2.21436946448956e-29,-2.19233612017712e-29,-2.17052201130364e-29,-2.1489249564401e-29,-2.12754279586295e-29,-2.10637339133834e-29,-2.08541462590821e-29,-2.0646644036785e-29,-2.04412064960971e-29,-2.02378130930936e-29,-2.00364434882639e-29,-1.98370775444805e-29,-1.96396953249821e-29,-1.94442770913828e-29,-1.92508033016965e-29,-1.90592546083824e-29,-1.8869611856412e-29,-1.86818560813522e-29,-1.84959685074685e-29,-1.8311930545849e-29,-1.81297237925442e-29,-1.79493300267267e-29,-1.77707312088698e-29,-1.75939094789427e-29,-1.7418847154625e-29,-1.72455267295388e-29,-1.70739308714966e-29,-1.690404242077e-29,-1.67358443883723e-29,-1.65693199543599e-29,-1.64044524661507e-29,-1.62412254368588e-29,-1.60796225436447e-29,-1.59196276260847e-29,-1.5761224684554e-29,-1.56043978786259e-29,-1.54491315254896e-29,-1.52954100983799e-29,-1.51432182250263e-29,-1.49925406861148e-29,-1.48433624137655e-29,-1.46956684900271e-29,-1.45494441453844e-29,-1.44046747572805e-29,-1.42613458486563e-29,-1.41194430865017e-29,-1.39789522804218e-29,-1.38398593812193e-29,-1.3702150479488e-29,-1.35658118042231e-29,-1.34308297214437e-29,-1.32971907328286e-29,-1.31648814743679e-29,-1.30338887150255e-29,-1.29041993554161e-29,-1.27758004264958e-29,-1.26486790882648e-29,-1.25228226284831e-29,-1.23982184614e-29,-1.2274854126495e-29,-1.21527172872316e-29,-1.20317957298244e-29,-1.19120773620165e-29,-1.17935502118716e-29,-1.16762024265761e-29,-1.15600222712532e-29,-1.14449981277909e-29,-1.1331118493679e-29,-1.1218371980859e-29,-1.11067473145857e-29,-1.09962333322997e-29,-1.08868189825103e-29,-1.07784933236917e-29,-1.06712455231874e-29,-1.05650648561282e-29,-1.0459940704359e-29,-1.03558625553768e-29,-1.02528200012799e-29,-1.01508027377274e-29,-1.00498005629076e-29,-9.94980337651892e-30,-9.85080117875955e-30,-9.75278406932695e-30,-9.65574224642864e-30,-9.55966600580158e-30,-9.46454573974138e-30,-9.37037193614243e-30,-9.27713517754564e-30,-9.18482614019757e-30,-9.0934355931177e-30,-9.0029543971749e-30,-8.9133735041743e-30,-8.82468395595209e-30,-8.73687688347927e-30,-8.64994350597556e-30,-8.56387513003088e-30,-8.47866314873566e-30,-8.39429904082102e-30,-8.3107743698056e-30,-8.22808078315284e-30,-8.14621001143527e-30,-8.06515386750726e-30,-7.98490424568698e-30,-7.90545312094549e-30,-7.82679254810389e-30,-7.74891466103944e-30,-7.67181167189866e-30,-7.59547587031815e-30,-7.51989962265427e-30,-7.44507537121936e-30,-7.37099563352571e-30,-7.29765300153804e-30,-7.22504014093182e-30,-7.15314979036058e-30,-7.08197476072945e-30,-7.01150793447596e-30,-6.94174226485886e-30,-6.87267077525315e-30,-6.80428655845211e-30,-6.73658277597718e-30,-6.66955265739378e-30,-6.603189499634e-30,-6.53748666632695e-30,-6.47243758713437e-30,-6.40803575709421e-30,-6.34427473596991e-30,-6.28114814760602e-30,-6.2186496792912e-30,-6.15677308112663e-30,-6.09551216540074e-30,-6.03486080597101e-30,-5.97481293765102e-30,-5.91536255560374e-30,-5.85650371474151e-30,-5.79823052913127e-30,-5.74053717140573e-30,-5.68341787218121e-30,-5.62686691948003e-30,-5.57087865815987e-30,-5.51544748934802e-30,-5.46056786988125e-30,-5.40623431175195e-30,-5.35244138155911e-30,-5.29918369996474e-30,-5.24645594115637e-30,-5.19425283231424e-30,-5.14256915308383e-30,-5.0913997350543e-30,-5.04073946124104e-30,-4.99058326557454e-30,-4.94092613239349e-30,-4.89176309594307e-30,-4.84308923987873e-30,-4.79489969677437e-30,-4.74718964763537e-30,-4.69995432141715e-30,-4.65318899454777e-30,-4.60688899045546e-30,-4.56104967910128e-30,-4.51566647651596e-30,-4.47073484434129e-30,-4.42625028937675e-30,-4.38220836312963e-30,-4.33860466137069e-30,-4.29543482369345e-30,-4.25269453307807e-30,-4.21037951545991e-30,-4.16848553930203e-30,-4.12700841517176e-30,-4.0859439953222e-30,-4.04528817327719e-30,-4.00503688342054e-30,-3.96518610058983e-30,-3.92573183967345e-30,-3.8866701552125e-30,-3.84799714100602e-30,-3.80970892972027e-30,-3.77180169250225e-30,-3.73427163859672e-30,-3.69711501496689e-30,-3.66032810591951e-30,-3.62390723273305e-30,-3.58784875328974e-30,-3.55214906171165e-30,-3.51680458799992e-30,-3.48181179767761e-30,-3.44716719143664e-30,-3.41286730478742e-30,-3.37890870771274e-30,-3.34528800432464e-30,-3.31200183252468e-30,-3.27904686366798e-30,-3.24641980223025e-30,-3.21411738547805e-30,-3.18213638314284e-30,-3.15047359709777e-30,-3.11912586103778e-30,-3.08809004016321e-30,-3.05736303086603e-30,-3.02694176041975e-30,-2.99682318667202e-30,-2.96700429774027e-30,-2.9374821117108e-30,-2.90825367634046e-30,-2.87931606876127e-30,-2.85066639518839e-30,-2.82230179063063e-30,-2.79421941860382e-30,-2.76641647084739e-30,-2.73889016704345e-30,-2.71163775453858e-30,-2.68465650806891e-30,-2.65794372948724e-30,-2.63149674749347e-30,-2.60531291736741e-30,-2.57938962070415e-30,-2.55372426515246e-30,-2.52831428415543e-30,-2.50315713669372e-30,-2.47825030703165e-30,-2.45359130446553e-30,-2.42917766307449e-30,-2.40500694147411e-30,-2.38107672257203e-30,-2.35738461332644e-30,-2.33392824450671e-30,-2.31070527045634e-30,-2.28771336885862e-30,-2.26495024050424e-30,-2.24241360906135e-30,-2.22010122084805e-30,-2.19801084460696e-30,-2.17614027128198e-30,-2.15448731379758e-30,-2.13304980684001e-30,-2.11182560664063e-30,-2.09081259076181e-30,-2.07000865788439e-30,-2.04941172759777e-30,-2.02901974019178e-30,-2.00883065645065e-30,-1.98884245744918e-30,-1.96905314435087e-30,-1.94946073820784e-30,-1.9300632797632e-30,-1.91085882925494e-30,-1.89184546622198e-30,-1.87302128931218e-30,-1.85438441609219e-30,-1.83593298285911e-30,-1.81766514445429e-30,-1.79957907407862e-30,-1.78167296311001e-30,-1.76394502092247e-30,-1.74639347470696e-30,-1.72901656929425e-30,-1.71181256697934e-30,-1.69477974734762e-30,-1.67791640710296e-30,-1.66122085989731e-30,-1.64469143616197e-30,-1.62832648294085e-30,-1.61212436372495e-30,-1.59608345828886e-30,-1.5802021625287e-30,-1.56447888830161e-30,-1.54891206326708e-30,-1.53350013072967e-30,-1.51824154948323e-30,-1.50313479365694e-30,-1.48817835256266e-30,-1.47337073054376e-30,-1.45871044682574e-30,-1.44419603536801e-30,-1.4298260447173e-30,-1.4155990378626e-30,-1.40151359209134e-30,-1.38756829884723e-30,-1.37376176358933e-30,-1.36009260565257e-30,-1.34655945810979e-30,-1.33316096763498e-30,-1.31989579436789e-30,-1.30676261178015e-30,-1.29376010654257e-30,-1.28088697839378e-30,-1.26814194001024e-30,-1.25552371687748e-30,-1.24303104716268e-30,-1.23066268158848e-30,-1.21841738330797e-30,-1.20629392778115e-30,-1.19429110265237e-30,-1.18240770762908e-30,-1.1706425543619e-30,-1.15899446632571e-30,-1.14746227870197e-30,-1.13604483826232e-30,-1.12474100325322e-30,-1.11354964328172e-30,-1.10246963920252e-30,-1.09149988300596e-30,-1.08063927770728e-30,-1.06988673723692e-30,-1.05924118633185e-30,-1.04870156042811e-30,-1.03826680555436e-30,-1.02793587822636e-30,-1.01770774534281e-30,-1.0075813840819e-30,-9.97555781799038e-31,-9.87629935925668e-31,-9.77802853868904e-31,-9.68073552912365e-31,-9.58441060117862e-31,-9.48904412228061e-31,-9.39462655570239e-31,-9.30114845960876e-31,-9.20860048611193e-31,-9.11697338033758e-31,-9.0262579794989e-31,-8.93644521197994e-31,-8.84752609642924e-31,-8.75949174086127e-31,-8.67233334176687e-31,-8.58604218323374e-31,-8.50060963607386e-31,-8.41602715696146e-31,-8.33228628757825e-31,-8.24937865376728e-31,-8.16729596469619e-31,-8.08603001202779e-31,-8.00557266909885e-31,-7.92591589010816e-31,-7.84705170931155e-31,-7.76897224022498e-31,-7.69166967483671e-31,-7.61513628282557e-31,-7.53936441078867e-31,-7.46434648147579e-31,-7.39007499303125e-31,-7.31654251824444e-31,-7.24374170380669e-31,-7.17166526957569e-31,-7.10030600784806e-31,-7.02965678263826e-31,-6.95971052896468e-31,-6.89046025214378e-31,-6.82189902709026e-31,-6.75401999762429e-31,-6.68681637578655e-31,-6.62028144115865e-31,-6.55440854019179e-31,-6.48919108554107e-31,-6.42462255540649e-31,-6.36069649288132e-31,-6.29740650530612e-31,-6.23474626362922e-31,-6.17270950177433e-31,-6.11129001601364e-31,-6.05048166434722e-31,-5.99027836588941e-31,-5.93067410026002e-31,-5.8716629069829e-31,-5.81323888488963e-31,-5.75539619152915e-31,-5.698129042584e-31,-5.64143171129164e-31,-5.58529852787155e-31,-5.52972387895867e-31,-5.47470220704189e-31,-5.42022800990799e-31,-5.36629584009197e-31,-5.31290030433195e-31,-5.26003606302973e-31,-5.20769782971726e-31,-5.15588037052745e-31,-5.10457850367127e-31,-5.05378709891937e-31,-5.00350107708878e-31,-4.95371540953551e-31,-4.90442511765137e-31,-4.85562527236595e-31,-4.80731099365415e-31,-4.75947745004788e-31,-4.71211985815279e-31,-4.66523348217037e-31,-4.6188136334238e-31,-4.5728556698896e-31,-4.52735499573318e-31,-4.48230706084908e-31,-4.43770736040633e-31,-4.39355143439779e-31,-4.34983486719393e-31,-4.30655328710166e-31,-4.26370236592697e-31,-4.22127781854191e-31,-4.17927540245645e-31,-4.13769091739403e-31,-4.09652020487138e-31,-4.05575914778306e-31,-4.01540366998926e-31,-3.97544973590865e-31,-3.93589335011457e-31,-3.89673055693536e-31,-3.85795744005914e-31,-3.81957012214195e-31,-3.78156476441991e-31,-3.74393756632562e-31,-3.70668476510798e-31,-3.66980263545571e-31,-3.63328748912522e-31,-3.59713567457134e-31,-3.56134357658254e-31,-3.52590761591924e-31,-3.49082424895575e-31,-3.45608996732619e-31,-3.42170129757349e-31,-3.38765480080193e-31,-3.3539470723335e-31,-3.32057474136733e-31,-3.28753447064239e-31,-3.25482295610414e-31,-3.22243692657391e-31,-3.19037314342166e-31,-3.15862840024246e-31,-3.12719952253543e-31,-3.09608336738666e-31,-3.06527682315476e-31,-3.03477680915953e-31,-3.00458027537421e-31,-2.97468420212029e-31,-2.94508559976546e-31,-2.91578150842484e-31,-2.88676899766494e-31,-2.85804516621041e-31,-2.82960714165426e-31,-2.80145208017024e-31,-2.7735771662288e-31,-2.74597961231533e-31,-2.71865665865139e-31,-2.69160557291886e-31,-2.66482364998668e-31,-2.63830821164015e-31,-2.61205660631338e-31,-2.586066208824e-31,-2.56033442011053e-31,-2.53485866697269e-31,-2.50963640181397e-31,-2.48466510238677e-31,-2.4599422715404e-31,-2.43546543697112e-31,-2.41123215097509e-31,-2.38723999020355e-31,-2.36348655542038e-31,-2.33996947126233e-31,-2.31668638600142e-31,-2.29363497130966e-31,-2.27081292202639e-31,-2.24821795592771e-31,-2.22584781349811e-31,-2.20370025770478e-31,-2.1817730737736e-31,-2.16006406896796e-31,-2.13857107236929e-31,-2.11729193465999e-31,-2.09622452790857e-31,-2.07536674535682e-31,-2.05471650120906e-31,-2.0342717304237e-31,-2.01403038850663e-31,-1.99399045130675e-31,-1.97414991481367e-31,-1.95450679495722e-31,-1.93505912740901e-31,-1.91580496738612e-31,-1.89674238945645e-31,-1.87786948734634e-31,-1.8591843737499e-31,-1.84068518014013e-31,-1.82237005658229e-31,-1.80423717154877e-31,-1.78628471173592e-31,-1.76851088188282e-31,-1.7509139045917e-31,-1.73349202015011e-31,-1.71624348635514e-31,-1.69916657833899e-31,-1.68225958839665e-31,-1.66552082581506e-31,-1.64894861670397e-31,-1.63254130382868e-31,-1.61629724644425e-31,-1.60021482013136e-31,-1.584292416634e-31,-1.56852844369857e-31,-1.5529213249146e-31,-1.53746949955723e-31,-1.52217142243107e-31,-1.50702556371561e-31,-1.4920304088124e-31,-1.47718445819341e-31,-1.46248622725123e-31,-1.44793424615054e-31,-1.43352705968106e-31,-1.41926322711216e-31,-1.40514132204872e-31,-1.39115993228841e-31,-1.37731765968064e-31,-1.36361311998662e-31,-1.35004494274093e-31,-1.33661177111458e-31,-1.32331226177916e-31,-1.31014508477269e-31,-1.2971089233665e-31,-1.28420247393356e-31,-1.27142444581819e-31,-1.25877356120693e-31,-1.24624855500077e-31,-1.23384817468864e-31,-1.22157118022222e-31,-1.20941634389178e-31,-1.19738245020357e-31,-1.18546829575823e-31,-1.17367268913034e-31,-1.16199445074944e-31,-1.15043241278194e-31,-1.1389854190144e-31,-1.12765232473795e-31,-1.11643199663366e-31,-1.1053233126594e-31,-1.09432516193753e-31,-1.08343644464378e-31,-1.07265607189736e-31,-1.06198296565202e-31,-1.05141605858823e-31,-1.04095429400649e-31,-1.0305966257216e-31,-1.02034201795812e-31,-1.01018944524674e-31,-1.00013789232169e-31,-9.90186354019331e-32,-9.80333835177542e-32,-9.70579350536205e-32,-9.6092192463874e-32,-9.51360591734524e-32,-9.41894395682271e-32,-9.325223898545e-32,-9.23243637042833e-32,-9.1405720936423e-32,-9.04962188168292e-32,-8.95957663945297e-32,-8.87042736235329e-32,-8.78216513538203e-32,-8.69478113224267e-32,-8.60826661446222e-32,-8.52261293051691e-32,-8.43781151496673e-32,-8.35385388759959e-32,-8.27073165258289e-32,-8.18843649762363e-32,-8.10696019313797e-32,-8.02629459142733e-32,-7.94643162586443e-32,-7.86736331008628e-32,-7.78908173719519e-32,-7.71157907896874e-32,-7.63484758507663e-32,-7.55887958230532e-32,-7.48366747379132e-32,-7.40920373826122e-32,-7.3354809292792e-32,-7.26249167450303e-32,-7.19022867494651e-32,-7.11868470424925e-32,-7.04785260795478e-32,-6.97772530279424e-32,-6.90829577597876e-32,-6.83955708449792e-32,-6.77150235442507e-32,-6.70412478023061e-32,-6.63741762410105e-32,-6.57137421526501e-32,-6.50598794932666e-32,-6.44125228760501e-32,-6.37716075647975e-32,-6.31370694674456e-32,-6.25088451296538e-32,-6.1886871728466e-32,-6.12710870660244e-32,-6.06614295633479e-32,-6.00578382541792e-32,-5.94602527788851e-32,-5.88686133784184e-32,-5.82828608883468e-32,-5.77029367329342e-32,-5.712878291928e-32,-5.65603420315252e-32,-5.59975572251081e-32,-5.54403722210775e-32,-5.48887313004703e-32,-5.43425792987331e-32,-5.38018616002114e-32,-5.32665241326855e-32,-5.27365133619611e-32,-5.22117762865201e-32,-5.16922604322184e-32,-5.11779138470363e-32,-5.06686850958873e-32,-5.01645232554726e-32,-4.96653779091867e-32,-4.91711991420803e-32,-4.86819375358636e-32,-4.81975441639689e-32,-4.7717970586656e-32,-4.72431688461662e-32,-4.67730914619305e-32,-4.63076914258194e-32,-4.584692219744e-32,-4.53907376994863e-32,-4.49390923131289e-32,-4.44919408734515e-32,-4.40492386649383e-32,-4.3610941417e-32,-4.31770052995453e-32,-4.27473869186022e-32,-4.23220433119732e-32,-4.1900931944944e-32,-4.14840107060274e-32,-4.10712379027509e-32,-4.06625722574908e-32,-4.02579729033427e-32,-3.98573993800328e-32,-3.94608116298754e-32,-3.90681699937658e-32,-3.86794352072118e-32,-3.82945683964121e-32,-3.79135310743638e-32,-3.75362851370176e-32,-3.7162792859466e-32,-3.67930168921689e-32,-3.64269202572219e-32,-3.60644663446571e-32,-3.570561890878e-32,-3.53503420645487e-32,-3.49986002839829e-32,-3.46503583926107e-32,-3.43055815659531e-32,-3.39642353260407e-32,-3.36262855379641e-32,-3.32916984064637e-32,-3.29604404725467e-32,-3.2632478610144e-32,-3.23077800227967e-32,-3.19863122403744e-32,-3.16680431158314e-32,-3.13529408219907e-32,-3.10409738483592e-32,-3.07321109979802e-32,-3.04263213843115e-32,-3.01235744281362e-32,-2.98238398545072e-32,-2.95270876897166e-32,-2.92332882583008e-32,-2.89424121800725e-32,-2.86544303671805e-32,-2.83693140212041e-32,-2.80870346302713e-32,-2.78075639662071e-32,-2.75308740817125e-32,-2.7256937307569e-32,-2.698572624987e-32,-2.67172137872843e-32,-2.6451373068342e-32,-2.61881775087491e-32,-2.5927600788731e-32,-2.56696168503978e-32,-2.5414199895141e-32,-2.51613243810527e-32,-2.491096502037e-32,-2.46630967769485e-32,-2.44176948637578e-32,-2.41747347404012e-32,-2.39341921106643e-32,-2.3696042920084e-32,-2.34602633535422e-32,-2.32268298328864e-32,-2.29957190145693e-32,-2.27669077873168e-32,-2.25403732698158e-32,-2.23160928084252e-32,-2.20940439749123e-32,-2.18742045642089e-32,-2.16565525921902e-32,-2.14410662934779e-32,-2.12277241192629e-32,-2.10165047351494e-32,-2.08073870190231e-32,-2.06003500589386e-32,-2.03953731510267e-32,-2.01924357974265e-32,-1.99915177042327e-32,-1.9792598779469e-32,-1.95956591310775e-32,-1.94006790649285e-32,-1.92076390828534e-32,-1.90165198806932e-32,-1.88273023463679e-32,-1.86399675579668e-32,-1.84544967818551e-32,-1.82708714708001e-32,-1.80890732621182e-32,-1.79090839758366e-32,-1.77308856128768e-32,-1.75544603532543e-32,-1.73797905542957e-32,-1.72068587488758e-32,-1.703564764367e-32,-1.68661401174248e-32,-1.66983192192465e-32,-1.65321681669057e-32,-1.63676703451582e-32,-1.6204809304085e-32,-1.60435687574465e-32,-1.58839325810531e-32,-1.57258848111548e-32,-1.55694096428423e-32,-1.54144914284686e-32,-1.52611146760835e-32,-1.51092640478834e-32,-1.49589243586791e-32,-1.48100805743768e-32,-1.46627178104734e-32,-1.45168213305701e-32,-1.43723765448975e-32,-1.42293690088561e-32,-1.40877844215737e-32,-1.39476086244731e-32,-1.38088275998579e-32,-1.36714274695104e-32,-1.35353944933025e-32,-1.34007150678235e-32,-1.32673757250187e-32,-1.31353631308425e-32,-1.30046640839255e-32,-1.28752655142543e-32,-1.27471544818638e-32,-1.26203181755442e-32,-1.24947439115592e-32,-1.23704191323776e-32,-1.22473314054181e-32,-1.21254684218051e-32,-1.20048179951388e-32,-1.18853680602763e-32,-1.17671066721242e-32,-1.16500220044452e-32,-1.15341023486752e-32,-1.14193361127518e-32,-1.13057118199557e-32,-1.11932181077632e-32,-1.10818437267091e-32,-1.09715775392627e-32,-1.08624085187131e-32,-1.07543257480674e-32,-1.06473184189586e-32,-1.05413758305644e-32,-1.04364873885377e-32,-1.03326426039471e-32,-1.02298310922274e-32,-1.01280425721417e-32,-1.00272668647535e-32,-9.92749389240771e-33,-9.82871367772409e-33,-9.730916342599e-33,-9.63409210721715e-33,-9.5382312890746e-33,-9.44332430200937e-33,-9.34936165524381e-33,-9.25633395243506e-33,-9.16423189073507e-33,-9.07304625986103e-33,-8.98276794117401e-33,-8.89338790676664e-33,-8.80489721856112e-33,-8.71728702741503e-33,-8.63054857223599e-33,-8.54467317910644e-33,-8.45965226041526e-33,-8.37547731399986e-33,-8.29213992229556e-33,-8.20963175149352e-33,-8.12794455070801e-33,-8.047070151151e-33,-7.96700046531489e-33,-7.88772748616452e-33,-7.80924328633599e-33,-7.73154001734372e-33,-7.65460990879615e-33,-7.57844526761843e-33,-7.50303847728276e-33,-7.42838199704747e-33,-7.35446836120213e-33,-7.28129017832164e-33,-7.20884013052686e-33,-7.13711097275241e-33,-7.06609553202285e-33,-6.99578670673503e-33,-6.92617746594762e-33,-6.85726084867864e-33,-6.78902996320903e-33,-6.72147798639318e-33,-6.65459816297732e-33,-6.58838380492319e-33,-6.52282829073988e-33,-6.45792506482144e-33,-6.39366763679102e-33,-6.33004958085236e-33,-6.26706453514692e-33,-6.20470620111749e-33,-6.14296834287877e-33,-6.08184478659358e-33,-6.02132941985519e-33,-5.96141619107658e-33,-5.90209910888502e-33,-5.84337224152269e-33,-5.7852297162541e-33,-5.72766571877809e-33,-5.67067449264703e-33,-5.61425033869089e-33,-5.55838761444709e-33,-5.50308073359675e-33,-5.44832416540576e-33,-5.39411243417152e-33,-5.34044011867581e-33,-5.28730185164242e-33,-5.23469231920022e-33,-5.18260626035227e-33,-5.13103846644914e-33,-5.07998378066853e-33,-5.02943709749939e-33,-4.97939336223115e-33,-4.92984757044863e-33,-4.88079476753145e-33,-4.8322300481583e-33,-4.78414855581684e-33,-4.73654548231782e-33,-4.68941606731411e-33,-4.64275559782499e-33,-4.59655940776469e-33,-4.55082287747558e-33,-4.50554143326665e-33,-4.46071054695562e-33,-4.41632573541654e-33,-4.37238256013136e-33,-4.32887662674579e-33,-4.28580358463031e-33,-4.24315912644487e-33,-4.20093898770798e-33,-4.15913894637067e-33,-4.11775482239401e-33,-4.076782477331e-33,-4.03621781391311e-33,-3.99605677564009e-33,-3.95629534637469e-33,-3.9169295499409e-33,-3.87795544972617e-33,-3.83936914828806e-33,-3.80116678696431e-33,-3.76334454548686e-33,-3.72589864160008e-33,-3.68882533068245e-33,-3.65212090537186e-33,-3.61578169519525e-33,-3.57980406620137e-33,-3.54418442059725e-33,-3.50891919638873e-33,-3.47400486702391e-33,-3.4394379410408e-33,-3.40521496171806e-33,-3.37133250672913e-33,-3.33778718780032e-33,-3.30457565037184e-33,-3.27169457326217e-33,-3.23914066833625e-33,-3.20691068017651e-33,-3.17500138575716e-33,-3.14340959412229e-33,-3.1121321460663e-33,-3.08116591381836e-33,-3.0505078007295e-33,-3.02015474096277e-33,-2.99010369918693e-33,-2.96035167027282e-33,-2.93089567899266e-33,-2.90173277972283e-33,-2.87286005614912e-33,-2.84427462097505e-33,-2.81597361563331e-33,-2.78795420999983e-33,-2.76021360211061e-33,-2.73274901788183e-33,-2.70555771083209e-33,-2.67863696180808e-33,-2.65198407871249e-33,-2.62559639623473e-33,-2.59947127558459e-33,-2.57360610422829e-33,-2.54799829562705e-33,-2.52264528897871e-33,-2.49754454896151e-33,-2.47269356548048e-33,-2.4480898534166e-33,-2.42373095237812e-33,-2.39961442645466e-33,-2.37573786397356e-33,-2.35209887725862e-33,-2.32869510239149e-33,-2.30552419897522e-33,-2.28258384990008e-33,-2.2598717611121e-33,-2.2373856613835e-33,-2.21512330208549e-33,-2.19308245696364e-33,-2.17126092191509e-33,-2.14965651476809e-33,-2.12826707506398e-33,-2.10709046384091e-33,-2.08612456342014e-33,-2.06536727719418e-33,-2.04481652941706e-33,-2.0244702649969e-33,-2.00432644929034e-33,-1.98438306789895e-33,-1.96463812646801e-33,-1.94508965048695e-33,-1.92573568509182e-33,-1.90657429487001e-33,-1.88760356366648e-33,-1.86882159439233e-33,-1.850226508835e-33,-1.83181644747038e-33,-1.81358956927704e-33,-1.79554405155197e-33,-1.77767808972833e-33,-1.75998989719506e-33,-1.7424777051182e-33,-1.7251397622639e-33,-1.70797433482344e-33,-1.69097970623981e-33,-1.67415417703593e-33,-1.65749606464492e-33,-1.64100370324159e-33,-1.6246754435761e-33,-1.60850965280889e-33,-1.59250471434736e-33,-1.57665902768436e-33,-1.56097100823804e-33,-1.54543908719334e-33,-1.53006171134522e-33,-1.51483734294332e-33,-1.49976445953806e-33,-1.48484155382858e-33,-1.47006713351183e-33,-1.4554397211335e-33,-1.44095785394017e-33,-1.42662008373301e-33,-1.41242497672309e-33,-1.39837111338788e-33,-1.3844570883293e-33,-1.37068151013327e-33,-1.35704300123052e-33,-1.34354019775874e-33,-1.33017174942636e-33,-1.31693631937742e-33,-1.30383258405785e-33,-1.29085923308323e-33,-1.27801496910763e-33,-1.26529850769395e-33,-1.25270857718547e-33,-1.24024391857863e-33,-1.22790328539718e-33,-1.21568544356755e-33,-1.20358917129533e-33,-1.19161325894323e-33,-1.17975650891006e-33,-1.1680177355109e-33,-1.15639576485866e-33,-1.14488943474655e-33,-1.133497594532e-33,-1.12221910502149e-33,-1.11105283835666e-33,-1.09999767790155e-33,-1.08905251813091e-33,-1.07821626451962e-33,-1.06748783343329e-33,-1.0568661520199e-33,-1.04635015810242e-33,-1.03593880007271e-33,-1.02563103678631e-33,-1.01542583745827e-33,-1.00532218156017e-33,-9.95319058717997e-34,-9.85415468611126e-34,-9.75610420872312e-34,-9.65902934988584e-34,-9.56292040203276e-34,-9.46776775418915e-34,-9.37356189101065e-34,-9.28029339183259e-34,-9.18795292972744e-34,-9.09653127057179e-34,-9.00601927212379e-34,-8.91640788310791e-34,-8.82768814231072e-34,-8.73985117768431e-34,-8.65288820545877e-34,-8.56679052926455e-34,-8.48154953926239e-34,-8.39715671128202e-34,-8.31360360597044e-34,-8.23088186794759e-34,-8.14898322497051e-34,-8.06789948710677e-34,-7.98762254591513e-34,-7.90814437363434e-34,-7.82945702238117e-34,-7.75155262335469e-34,-7.6744233860502e-34,-7.5980615974798e-34,-7.52245962140077e-34,-7.44760989755263e-34,-7.3735049409007e-34,-7.30013734088738e-34,-7.2274997606916e-34,-7.15558493649494e-34,-7.08438567675483e-34,-7.01389486148617e-34,-6.94410544154849e-34,-6.87501043794174e-34,-6.80660294110808e-34,-6.73887611024062e-34,-6.67182317259993e-34,-6.60543742283647e-34,-6.53971222231974e-34,-6.47464099847503e-34,-6.41021724412581e-34,-6.34643451684278e-34,-6.28328643830014e-34,-6.22076669363751e-34,-6.15886903082815e-34,-6.09758726005436e-34,-6.03691525308784e-34,-5.9768469426774e-34,-5.91737632194204e-34,-5.85849744376995e-34,-5.80020442022433e-34,-5.74249142195434e-34,-5.68535267761189e-34,-5.62878247327501e-34,-5.57277515187621e-34,-5.5173251126365e-34,-5.46242681050593e-34,-5.40807475560837e-34,-5.35426351269311e-34,-5.3009877005911e-34,-5.24824199167657e-34,-5.19602111133477e-34,-5.1443198374342e-34,-5.09313299980425e-34,-5.04245547971858e-34,-4.992282209383e-34,-4.94260817142855e-34,-4.89342839841009e-34,-4.84473797230941e-34,-4.79653202404319e-34,-4.74880573297656e-34,-4.70155432644052e-34,-4.65477307925509e-34,-4.60845731325665e-34,-4.56260239682986e-34,-4.51720374444493e-34,-4.47225681619887e-34,-4.42775711736125e-34,-4.38370019792518e-34,-4.34008165216206e-34,-4.29689711818084e-34,-4.25414227749226e-34,-4.21181285457649e-34,-4.16990461645604e-34,-4.12841337227223e-34,-4.08733497286595e-34,-4.04666531036307e-34,-4.00640031776352e-34,-3.96653596853437e-34,-3.92706827620752e-34,-3.88799329398093e-34,-3.84930711432368e-34,-3.81100586858563e-34,-3.77308572661034e-34,-3.7355428963519e-34,-3.69837362349612e-34,-3.66157419108463e-34,-3.62514091914356e-34,-3.58907016431542e-34,-3.55335831949456e-34,-3.5180018134668e-34,-3.48299711055211e-34,-3.44834071025093e-34,-3.4140291468944e-34,-3.38005898929765e-34,-3.3464268404165e-34,-3.31312933700814e-34,-3.28016314929438e-34,-3.24752498062903e-34,-3.21521156716807e-34,-3.18321967754314e-34,-3.15154611253865e-34,-3.12018770477175e-34,-3.08914131837546e-34,-3.05840384868529e-34,-3.02797222192872e-34,-2.99784339491761e-34,-2.96801435474421e-34,-2.93848211847967e-34,-2.90924373287569e-34,-2.88029627406941e-34,-2.85163684729075e-34,-2.8232625865732e-34,-2.79517065446706e-34,-2.76735824175566e-34,-2.73982256717456e-34,-2.71256087713342e-34,-2.68557044544043e-34,-2.65884857302996e-34,-2.63239258769255e-34,-2.60619984380754e-34,-2.58026772207878e-34,-2.55459362927243e-34,-2.52917499795784e-34,-2.50400928625074e-34,-2.4790939775589e-34,-2.45442658033074e-34,-2.43000462780601e-34,-2.40582567776904e-34,-2.3818873123047e-34,-2.35818713755655e-34,-2.33472278348727e-34,-2.31149190364196e-34,-2.28849217491329e-34,-2.26572129730916e-34,-2.24317699372291e-34,-2.22085700970531e-34,-2.19875911323941e-34,-2.17688109451716e-34,-2.15522076571841e-34,-2.13377596079226e-34,-2.11254453524036e-34,-2.09152436590243e-34,-2.07071335074402e-34,-2.05010940864632e-34,-2.02971047919788e-34,-2.00951452248883e-34,-1.98951951890659e-34,-1.96972346893419e-34,-1.95012439295014e-34,-1.93072033103048e-34,-1.91150934275285e-34,-1.89248950700246e-34,-1.87365892177982e-34,-1.85501570401075e-34,-1.83655798935795e-34,-1.81828393203454e-34,-1.80019170461957e-34,-1.78227949787525e-34,-1.76454552056593e-34,-1.74698799927916e-34,-1.72960517824811e-34,-1.71239531917624e-34,-1.6953567010633e-34,-1.67848762003325e-34,-1.66178638916395e-34,-1.64525133831841e-34,-1.62888081397773e-34,-1.61267317907586e-34,-1.59662681283581e-34,-1.58074011060755e-34,-1.56501148370766e-34,-1.5494393592603e-34,-1.53402218004007e-34,-1.51875840431622e-34,-1.50364650569842e-34,-1.48868497298423e-34,-1.47387231000793e-34,-1.45920703549085e-34,-1.44468768289332e-34,-1.43031280026802e-34,-1.41608095011465e-34,-1.40199070923637e-34,-1.38804066859736e-34,-1.37422943318189e-34,-1.36055562185496e-34,-1.34701786722399e-34,-1.33361481550226e-34,-1.32034512637345e-34,-1.30720747285755e-34,-1.29420054117829e-34,-1.28132303063166e-34,-1.26857365345585e-34,-1.25595113470253e-34,-1.24345421210933e-34,-1.23108163597354e-34,-1.21883216902727e-34,-1.20670458631358e-34,-1.19469767506411e-34,-1.18281023457775e-34,-1.17104107610051e-34,-1.15938902270675e-34,-1.14785290918144e-34,-1.13643158190358e-34,-1.12512389873093e-34,-1.11392872888579e-34,-1.10284495284179e-34,-1.09187146221212e-34,-1.08100715963858e-34,-1.07025095868183e-34,-1.05960178371284e-34,-1.04905856980522e-34,-1.03862026262879e-34,-1.02828581834416e-34,-1.01805420349826e-34,-1.00792439492108e-34,-9.9789537962336e-35,-9.87966154695166e-35,-9.78135727205748e-35,-9.68403114104182e-35,-9.58767342121017e-35,-9.49227447671053e-35,-9.39782476756868e-35,-9.30431484873514e-35,-9.21173536914023e-35,-9.12007707075857e-35,-9.02933078768407e-35,-8.93948744521294e-35,-8.8505380589358e-35,-8.76247373384003e-35,-8.67528566341985e-35,-8.58896512879532e-35,-8.50350349784117e-35,-8.41889222432319e-35,-8.3351228470433e-35,-8.25218698899418e-35,-8.1700763565207e-35,-8.08878273849129e-35,-8.00829800547651e-35,-7.92861410893577e-35,-7.84972308041313e-35,-7.7716170307401e-35,-7.6942881492464e-35,-7.61772870297955e-35,-7.54193103593124e-35,-7.46688756827137e-35,-7.39259079559087e-35,-7.31903328815033e-35,-7.24620769013783e-35,-7.17410671893296e-35,-7.10272316437834e-35,-7.0320498880591e-35,-6.96207982258883e-35,-6.89280597090247e-35,-6.82422140555723e-35,-6.75631926803951e-35,-6.68909276807879e-35,-6.62253518296913e-35,-6.55663985689666e-35,-6.49140020027368e-35,-6.42680968908033e-35,-6.36286186421149e-35,-6.29955033083148e-35,-6.23686875773428e-35,-6.17481087671017e-35,-6.11337048191943e-35,-6.05254142927145e-35,-5.99231763581012e-35,-5.93269307910599e-35,-5.87366179665378e-35,-5.81521788527588e-35,-5.75735550053263e-35,-5.70006885613716e-35,-5.64335222337738e-35,-5.58719993054282e-35,-5.53160636235725e-35,-5.47656595941761e-35,-5.42207321763781e-35,-5.3681226876981e-35,-5.31470897450062e-35,-5.26182673662959e-35,-5.20947068581703e-35,-5.15763558641429e-35,-5.10631625486831e-35,-5.05550755920301e-35,-5.00520441850665e-35,-4.95540180242309e-35,-4.90609473064928e-35,-4.85727827243703e-35,-4.80894754609971e-35,-4.76109771852446e-35,-4.71372400468873e-35,-4.66682166718151e-35,-4.62038601573005e-35,-4.57441240673056e-35,-4.5288962427837e-35,-4.48383297223527e-35,-4.43921808872055e-35,-4.39504713071405e-35,-4.35131568108325e-35,-4.30801936664659e-35,-4.26515385773664e-35,-4.22271486776682e-35,-4.18069815280266e-35,-4.1390995111377e-35,-4.09791478287318e-35,-4.05713984950183e-35,-4.01677063349639e-35,-3.97680309790168e-35,-3.93723324593071e-35,-3.89805712056544e-35,-3.85927080416055e-35,-3.82087041805215e-35,-3.78285212216968e-35,-3.74521211465176e-35,-3.70794663146633e-35,-3.67105194603406e-35,-3.63452436885556e-35,-3.59836024714273e-35,-3.56255596445331e-35,-3.52710794032909e-35,-3.49201262993822e-35,-3.45726652372031e-35,-3.42286614703584e-35,-3.38880805981852e-35,-3.35508885623115e-35,-3.32170516432532e-35,-3.28865364570406e-35,-3.25593099518788e-35,-3.22353394048451e-35,-3.19145924186152e-35,-3.15970369182223e-35,-3.12826411478521e-35,-3.09713736676662e-35,-3.06632033506561e-35,-3.03580993795343e-35,-3.00560312436485e-35,-2.97569687359338e-35,-2.94608819498907e-35,-2.9167741276593e-35,-2.88775174017295e-35,-2.85901813026713e-35,-2.83057042455682e-35,-2.80240577824777e-35,-2.77452137485194e-35,-2.74691442590566e-35,-2.71958217069112e-35,-2.69252187595993e-35,-2.66573083566011e-35,-2.63920637066535e-35,-2.61294582850696e-35,-2.58694658310889e-35,-2.56120603452495e-35,-2.53572160867878e-35,-2.51049075710659e-35,-2.48551095670222e-35,-2.46077970946476e-35,-2.4362945422489e-35,-2.41205300651755e-35,-2.38805267809687e-35,-2.36429115693408e-35,-2.3407660668572e-35,-2.31747505533766e-35,-2.29441579325491e-35,-2.27158597466348e-35,-2.24898331656251e-35,-2.22660555866739e-35,-2.20445046318361e-35,-2.1825158145832e-35,-2.16079941938304e-35,-2.13929910592547e-35,-2.11801272416127e-35,-2.09693814543448e-35,-2.07607326226969e-35,-2.05541598816121e-35,-2.03496425736438e-35,-2.01471602468909e-35,-1.99466926529524e-35,-1.97482197449012e-35,-1.95517216752814e-35,-1.93571787941225e-35,-1.91645716469738e-35,-1.89738809729603e-35,-1.8785087702856e-35,-1.85981729571761e-35,-1.84131180442906e-35,-1.82299044585536e-35,-1.80485138784542e-35,-1.78689281647832e-35,-1.76911293588194e-35,-1.75150996805341e-35,-1.7340821526813e-35,-1.71682774696951e-35,-1.69974502546312e-35,-1.68283227987575e-35,-1.66608781891871e-35,-1.649509968132e-35,-1.63309706971667e-35,-1.61684748236924e-35,-1.60075958111744e-35,-1.5848317571577e-35,-1.56906241769437e-35,-1.5534499857804e-35,-1.53799290015952e-35,-1.52268961511033e-35,-1.50753860029158e-35,-1.49253834058912e-35,-1.47768733596451e-35,-1.46298410130493e-35,-1.44842716627462e-35,-1.43401507516797e-35,-1.41974638676385e-35,-1.40561967418152e-35,-1.39163352473799e-35,-1.37778653980661e-35,-1.36407733467736e-35,-1.35050453841835e-35,-1.33706679373857e-35,-1.3237627568524e-35,-1.31059109734507e-35,-1.29755049803962e-35,-1.28463965486529e-35,-1.27185727672696e-35,-1.25920208537619e-35,-1.24667281528332e-35,-1.23426821351085e-35,-1.22198703958829e-35,-1.20982806538804e-35,-1.1977900750025e-35,-1.18587186462262e-35,-1.17407224241745e-35,-1.1623900284149e-35,-1.15082405438386e-35,-1.1393731637173e-35,-1.12803621131657e-35,-1.11681206347702e-35,-1.10569959777448e-35,-1.09469770295314e-35,-1.08380527881436e-35,-1.07302123610663e-35,-1.06234449641669e-35,-1.05177399206169e-35,-1.04130866598237e-35,-1.03094747163741e-35,-1.02068937289875e-35,-1.01053334394795e-35,-1.00047836917367e-35,-9.90523443070022e-36,-9.80667570136124e-36,-9.70909764776479e-36,-9.61249051202392e-36,-9.51684463334469e-36,-9.42215044705966e-36,-9.32839848367101e-36,-9.23557936790443e-36,-9.14368381777111e-36,-9.0527026436392e-36,-8.9626267473156e-36,-8.87344712113574e-36,-8.78515484706243e-36,-8.69774109579493e-36,-8.61119712588504e-36,-8.52551428286375e-36,-8.44068399837549e-36,-8.35669778932087e-36,-8.27354725700913e-36,-8.19122408631785e-36,-8.10972004486112e-36,-8.02902698216701e-36,-7.94913682886211e-36,-7.87004159586428e-36,-7.79173337358454e-36,-7.71420433113517e-36,-7.63744671554745e-36,-7.56145285099595e-36,-7.48621513803068e-36,-7.41172605281774e-36,-7.33797814638665e-36,-7.26496404388509e-36,-7.19267644384208e-36,-7.12110811743748e-36,-7.05025190777879e-36,-6.98010072918611e-36,-6.91064756648322e-36,-6.84188547429577e-36,-6.77380757635743e-36,-6.7064070648215e-36,-6.63967719958073e-36,-6.57361130759311e-36,-6.50820278221417e-36,-6.44344508253698e-36,-6.37933173273769e-36,-6.31585632142771e-36,-6.25301250101311e-36,-6.19079398705955e-36,-6.12919455766363e-36,-6.06820805283123e-36,-6.0078283738609e-36,-5.94804948273448e-36,-5.88886540151316e-36,-5.8302702117393e-36,-5.77225805384519e-36,-5.71482312656678e-36,-5.65795968636331e-36,-5.60166204684346e-36,-5.54592457819644e-36,-5.49074170662879e-36,-5.43610791380742e-36,-5.38201773630763e-36,-5.32846576506641e-36,-5.27544664484218e-36,-5.22295507367858e-36,-5.17098580237483e-36,-5.11953363396055e-36,-5.06859342317589e-36,-5.0181600759574e-36,-4.96822854892838e-36,-4.91879384889438e-36,-4.86985103234429e-36,-4.82139520495572e-36,-4.77342152110543e-36,-4.72592518338517e-36,-4.67890144212147e-36,-4.63234559490108e-36,-4.58625298610055e-36,-4.54061900642045e-36,-4.49543909242486e-36,-4.45070872608478e-36,-4.40642343432619e-36,-4.36257878858306e-36,-4.31917040435434e-36,-4.27619394076532e-36,-4.23364510013388e-36,-4.19151962754057e-36,-4.14981331040289e-36,-4.10852197805451e-36,-4.06764150132765e-36,-4.02716779214063e-36,-3.98709680308887e-36,-3.94742452703996e-36,-3.90814699673328e-36,-3.86926028438313e-36,-3.83076050128576e-36,-3.79264379743082e-36,-3.75490636111623e-36,-3.7175444185668e-36,-3.68055423355724e-36,-3.64393210703813e-36,-3.60767437676633e-36,-3.57177741693868e-36,-3.53623763782915e-36,-3.50105148543028e-36,-3.46621544109756e-36,-3.43172602119742e-36,-3.39757977675918e-36,-3.36377329313e-36,-3.33030318963323e-36,-3.29716611923068e-36,-3.26435876818776e-36,-3.23187785574191e-36,-3.19972013377493e-36,-3.16788238648772e-36,-3.13636143007907e-36,-3.10515411242711e-36,-3.07425731277399e-36,-3.04366794141404e-36,-3.01338293938467e-36,-2.98339927816035e-36,-2.95371395935003e-36,-2.92432401439712e-36,-2.89522650428256e-36,-2.86641851923116e-36,-2.83789717842033e-36,-2.80965962969226e-36,-2.7817030492686e-36,-2.75402464146792e-36,-2.72662163842641e-36,-2.69949129982098e-36,-2.67263091259507e-36,-2.64603779068762e-36,-2.61970927476432e-36,-2.59364273195156e-36,-2.56783555557336e-36,-2.54228516489063e-36,-2.51698900484293e-36,-2.49194454579325e-36,-2.46714928327474e-36,-2.44260073774053e-36,-2.41829645431563e-36,-2.39423400255138e-36,-2.37041097618258e-36,-2.34682499288679e-36,-2.32347369404595e-36,-2.30035474451074e-36,-2.27746583236699e-36,-2.25480466870434e-36,-2.2323689873876e-36,-2.21015654482988e-36,-2.18816511976845e-36,-2.1663925130425e-36,-2.14483654737316e-36,-2.12349506714593e-36,-2.10236593819502e-36,-2.08144704758988e-36,-2.06073630342405e-36,-2.04023163460587e-36,-2.01993099065133e-36,-1.99983234147913e-36,-1.97993367720764e-36,-1.96023300795379e-36,-1.9407283636343e-36,-1.92141779376843e-36,-1.90229936728311e-36,-1.88337117231981e-36,-1.8646313160432e-36,-1.84607792445205e-36,-1.82770914219178e-36,-1.80952313236879e-36,-1.79151807636699e-36,-1.77369217366578e-36,-1.75604364166e-36,-1.73857071548178e-36,-1.7212716478239e-36,-1.7041447087652e-36,-1.68718818559753e-36,-1.67040038265438e-36,-1.65377962114151e-36,-1.63732423896893e-36,-1.62103259058467e-36,-1.60490304681032e-36,-1.58893399467811e-36,-1.57312383726945e-36,-1.55747099355547e-36,-1.54197389823876e-36,-1.52663100159683e-36,-1.51144076932728e-36,-1.49640168239418e-36,-1.48151223687633e-36,-1.46677094381678e-36,-1.45217632907391e-36,-1.43772693317409e-36,-1.42342131116572e-36,-1.40925803247464e-36,-1.39523568076119e-36,-1.38135285377853e-36,-1.36760816323237e-36,-1.35400023464222e-36,-1.34052770720386e-36,-1.32718923365333e-36,-1.31398348013218e-36,-1.30090912605401e-36,-1.28796486397254e-36,-1.2751493994508e-36,-1.26246145093161e-36,-1.24989974960956e-36,-1.23746303930409e-36,-1.22515007633374e-36,-1.212959629392e-36,-1.20089047942401e-36,-1.18894141950469e-36,-1.17711125471813e-36,-1.16539880203796e-36,-1.15380289020915e-36,-1.14232235963089e-36,-1.13095606224052e-36,-1.11970286139883e-36,-1.10856163177639e-36,-1.09753125924092e-36,-1.08661064074598e-36,-1.07579868422064e-36,-1.06509430846022e-36,-1.05449644301823e-36,-1.04400402809928e-36,-1.03361601445315e-36,-1.02333136326983e-36,-1.0131490460756e-36,-1.00306804463027e-36,-9.93087350825311e-37,-9.83205966582996e-37,-9.7342290375668e-37,-9.63737184031942e-37,-9.54147838828711e-37,-9.44653909204489e-37,-9.35254445758414e-37,-9.25948508536284e-37,-9.16735166936646e-37,-9.07613499617638e-37,-8.98582594404938e-37,-8.89641548200513e-37,-8.80789466892266e-37,-8.72025465264702e-37,-8.63348666910367e-37,-8.5475820414217e-37,-8.46253217906689e-37,-8.37832857698223e-37,-8.29496281473712e-37,-8.21242655568609e-37,-8.13071154613423e-37,-8.04980961451259e-37,-7.96971267056072e-37,-7.89041270451724e-37,-7.81190178631957e-37,-7.73417206481059e-37,-7.65721576695315e-37,-7.58102519705343e-37,-7.50559273599107e-37,-7.43091084045689e-37,-7.3569720421992e-37,-7.28376894727666e-37,-7.21129423531857e-37,-7.13954065879355e-37,-7.06850104228394e-37,-6.998168281769e-37,-6.92853534391417e-37,-6.85959526536742e-37,-6.79134115206356e-37,-6.72376617853447e-37,-6.6568635872263e-37,-6.59062668782425e-37,-6.52504885658329e-37,-6.46012353566545e-37,-6.39584423248473e-37,-6.33220451905705e-37,-6.26919803135813e-37,-6.20681846868678e-37,-6.14505959303459e-37,-6.08391522846259e-37,-6.02337926048347e-37,-5.96344563544982e-37,-5.90410835994927e-37,-5.8453615002049e-37,-5.78719918148162e-37,-5.72961558749917e-37,-5.67260495985024e-37,-5.61616159742441e-37,-5.56027985583855e-37,-5.50495414687178e-37,-5.45017893790717e-37,-5.39594875137826e-37,-5.34225816422105e-37,-5.28910180733216e-37,-5.23647436503167e-37,-5.18437057453136e-37,-5.13278522540883e-37,-5.08171315908624e-37,-5.03114926831427e-37,-4.98108849666184e-37,-4.93152583800992e-37,-4.88245633605142e-37,-4.83387508379533e-37,-4.78577722307578e-37,-4.73815794406671e-37,-4.69101248480059e-37,-4.64433613069207e-37,-4.59812421406692e-37,-4.55237211369502e-37,-4.50707525432808e-37,-4.46222910624248e-37,-4.4178291847861e-37,-4.37387104992968e-37,-4.33035030582322e-37,-4.28726260035592e-37,-4.24460362472138e-37,-4.20236911298656e-37,-4.16055484166496e-37,-4.11915662929467e-37,-4.07817033602001e-37,-4.03759186317737e-37,-3.99741715288573e-37,-3.95764218764063e-37,-3.91826298991228e-37,-3.8792756217482e-37,-3.84067618437899e-37,-3.80246081782879e-37,-3.76462570052915e-37,-3.72716704893671e-37,-3.69008111715515e-37,-3.65336419656044e-37,-3.6170126154298e-37,-3.5810227385749e-37,-3.5453909669781e-37,-3.51011373743246e-37,-3.47518752218566e-37,-3.44060882858712e-37,-3.40637419873858e-37,-3.37248020914862e-37,-3.33892347038994e-37,-3.30570062676073e-37,-3.27280835594902e-37,-3.24024336870019e-37,-3.20800240848846e-37,-3.17608225119095e-37,-3.14447970476527e-37,-3.11319160893047e-37,-3.08221483485095e-37,-3.05154628482339e-37,-3.02118289196731e-37,-2.99112161991805e-37,-2.9613594625234e-37,-2.93189344354284e-37,-2.90272061634985e-37,-2.87383806363744e-37,-2.8452428971263e-37,-2.81693225727588e-37,-2.78890331299864e-37,-2.76115326137683e-37,-2.73367932738209e-37,-2.70647876359817e-37,-2.67954884994604e-37,-2.65288689341184e-37,-2.62649022777776e-37,-2.60035621335517e-37,-2.57448223672089e-37,-2.54886571045573e-37,-2.52350407288564e-37,-2.49839478782576e-37,-2.47353534432671e-37,-2.44892325642333e-37,-2.42455606288638e-37,-2.40043132697622e-37,-2.37654663619909e-37,-2.35289960206607e-37,-2.32948785985399e-37,-2.30630906836913e-37,-2.28336090971308e-37,-2.26064108905077e-37,-2.23814733438125e-37,-2.21587739631032e-37,-2.19382904782556e-37,-2.17200008407378e-37,-2.15038832214044e-37,-2.12899160083129e-37,-2.10780778045638e-37,-2.08683474261606e-37,-2.06607038998901e-37,-2.04551264612271e-37,-2.0251594552256e-37,-2.00500878196165e-37,-1.98505861124678e-37,-1.96530694804721e-37,-1.94575181718022e-37,-1.92639126311644e-37,-1.90722334978427e-37,-1.88824616037644e-37,-1.86945779715821e-37,-1.85085638127756e-37,-1.83244005257746e-37,-1.81420696940962e-37,-1.79615530845056e-37,-1.77828326451918e-37,-1.76058905039614e-37,-1.74307089664529e-37,-1.7257270514367e-37,-1.70855578037134e-37,-1.69155536630781e-37,-1.67472410919058e-37,-1.65806032587985e-37,-1.64156234998343e-37,-1.62522853169e-37,-1.60905723760408e-37,-1.59304685058283e-37,-1.57719576957416e-37,-1.56150240945678e-37,-1.54596520088162e-37,-1.53058259011484e-37,-1.51535303888256e-37,-1.50027502421699e-37,-1.48534703830406e-37,-1.47056758833274e-37,-1.45593519634576e-37,-1.44144839909167e-37,-1.42710574787873e-37,-1.41290580842981e-37,-1.39884716073916e-37,-1.38492839893031e-37,-1.37114813111545e-37,-1.35750497925633e-37,-1.34399757902641e-37,-1.33062457967437e-37,-1.31738464388916e-37,-1.30427644766618e-37,-1.29129868017485e-37,-1.27845004362763e-37,-1.26572925315016e-37,-1.25313503665277e-37,-1.24066613470334e-37,-1.22832130040126e-37,-1.21609929925283e-37,-1.20399890904775e-37,-1.1920189197369e-37,-1.18015813331137e-37,-1.16841536368266e-37,-1.15678943656399e-37,-1.14527918935297e-37,-1.1338834710153e-37,-1.12260114196962e-37,-1.11143107397366e-37,-1.10037215001127e-37,-1.08942326418087e-37,-1.07858332158476e-37,-1.06785123821961e-37,-1.05722594086816e-37,-1.04670636699184e-37,-1.03629146462446e-37,-1.02598019226712e-37,-1.01577151878401e-37,-1.00566442329925e-37,-9.95657895094869e-38,-9.85750933509731e-38,-9.75942547839391e-38,-9.66231757237137e-38,-9.56617590615789e-38,-9.47099086550687e-38,-9.37675293183505e-38,-9.28345268127027e-38,-9.19108078370985e-38,-9.0996280018872e-38,-9.00908519044765e-38,-8.91944329503474e-38,-8.83069335138436e-38,-8.74282648442792e-38,-8.65583390740576e-38,-8.56970692098745e-38,-8.48443691240267e-38,-8.40001535457965e-38,-8.316433805292e-38,-8.23368390631526e-38,-8.1517573825907e-38,-8.07064604139743e-38,-7.99034177153387e-38,-7.91083654250621e-38,-7.83212240372508e-38,-7.75419148371111e-38,-7.67703598930747e-38,-7.6006482049002e-38,-7.52502049164742e-38,-7.45014528671458e-38,-7.37601510251888e-38,-7.30262252598023e-38,-7.22996021777962e-38,-7.15802091162578e-38,-7.08679741352823e-38,-7.01628260107762e-38,-6.94646942273405e-38,-6.87735089712159e-38,-6.80892011232988e-38,-6.74117022522363e-38,-6.67409446075746e-38,-6.60768611129913e-38,-6.54193853595845e-38,-6.47684515992291e-38,-6.41239947380075e-38,-6.34859503296974e-38,-6.28542545693245e-38,-6.22288442867873e-38,-6.16096569405372e-38,-6.09966306113218e-38,-6.03897039959983e-38,-5.97888164014001e-38,-5.91939077382654e-38,-5.86049185152338e-38,-5.80217898328905e-38,-5.74444633778821e-38,-5.68728814170828e-38,-5.63069867918187e-38,-5.57467229121565e-38,-5.51920337512419e-38,-5.46428638396953e-38,-5.40991582600685e-38,-5.35608626413512e-38,-5.30279231535315e-38,-5.2500286502218e-38,-5.19778999233044e-38,-5.14607111776981e-38,-5.09486685460944e-38,-5.0441720823802e-38,-4.99398173156269e-38,-4.94429078308007e-38,-4.89509426779594e-38,-4.84638726601785e-38,-4.7981649070051e-38,-4.75042236848147e-38,-4.70315487615338e-38,-4.65635770323229e-38,-4.61002616996176e-38,-4.56415564315e-38,-4.51874153570596e-38,-4.47377930618112e-38,-4.42926445831513e-38,-4.38519254058597e-38,-4.34155914576521e-38,-4.29835991047706e-38,-4.25559051476188e-38,-4.21324668164452e-38,-4.17132417670643e-38,-4.12981880766206e-38,-4.08872642394005e-38,-4.04804291626765e-38,-4.00776421626027e-38,-3.96788629601438e-38,-3.92840516770462e-38,-3.88931688318531e-38,-3.85061753359548e-38,-3.81230324896782e-38,-3.77437019784199e-38,-3.73681458688131e-38,-3.69963266049328e-38,-3.66282070045435e-38,-3.62637502553787e-38,-3.59029199114589e-38,-3.55456798894499e-38,-3.51919944650508e-38,-3.4841828269425e-38,-3.44951462856616e-38,-3.41519138452724e-38,-3.38120966247276e-38,-3.34756606420227e-38,-3.3142572253278e-38,-3.28127981493775e-38,-3.24863053526365e-38,-3.21630612135023e-38,-3.18430334072925e-38,-3.1526189930959e-38,-3.12124990998905e-38,-3.0901929544743e-38,-3.05944502083011e-38,-3.02900303423756e-38,-2.99886395047264e-38,-2.9690247556018e-38,-2.93948246568071e-38,-2.91023412645581e-38,-2.88127681306871e-38,-2.852607629764e-38,-2.82422370959948e-38,-2.79612221415941e-38,-2.76830033327091e-38,-2.74075528472261e-38,-2.71348431398676e-38,-2.68648469394359e-38,-2.65975372460853e-38,-2.63328873286239e-38,-2.60708707218399e-38,-2.58114612238535e-38,-2.55546328934991e-38,-2.53003600477301e-38,-2.50486172590491e-38,-2.47993793529683e-38,-2.45526214054887e-38,-2.43083187406103e-38,-2.40664469278632e-38,-2.3826981779864e-38,-2.35898993498987e-38,-2.3355175929527e-38,-2.31227880462107e-38,-2.2892712460968e-38,-2.26649261660491e-38,-2.2439406382634e-38,-2.22161305585567e-38,-2.1995076366049e-38,-2.1776221699507e-38,-2.15595446732821e-38,-2.13450236194906e-38,-2.11326370858486e-38,-2.09223638335261e-38,-2.07141828350221e-38,-2.05080732720634e-38,-2.03040145335223e-38,-2.01019862133543e-38,-1.99019681085594e-38,-1.97039402171607e-38,-1.95078827362034e-38,-1.93137760597766e-38,-1.91216007770504e-38,-1.89313376703366e-38,-1.87429677131663e-38,-1.85564720683862e-38,-1.83718320862767e-38,-1.81890293026861e-38,-1.8008045437183e-38,-1.78288623912304e-38,-1.76514622463746e-38,-1.74758272624528e-38,-1.73019398758205e-38,-1.71297826975943e-38,-1.69593385119126e-38,-1.67905902742151e-38,-1.66235211095369e-38,-1.64581143108227e-38,-1.6294353337255e-38,-1.61322218125994e-38,-1.59717035235687e-38,-1.58127824182003e-38,-1.56554426042509e-38,-1.54996683476082e-38,-1.53454440707169e-38,-1.51927543510203e-38,-1.50415839194197e-38,-1.48919176587456e-38,-1.47437406022473e-38,-1.45970379320959e-38,-1.44517949779018e-38,-1.43079972152487e-38,-1.41656302642406e-38,-1.40246798880636e-38,-1.38851319915626e-38,-1.37469726198319e-38,-1.36101879568189e-38,-1.34747643239434e-38,-1.33406881787295e-38,-1.32079461134505e-38,-1.30765248537898e-38,-1.29464112575114e-38,-1.28175923131474e-38,-1.26900551386964e-38,-1.2563786980334e-38,-1.24387752111396e-38,-1.23150073298322e-38,-1.21924709595201e-38,-1.20711538464643e-38,-1.19510438588527e-38,-1.18321289855861e-38,-1.17143973350784e-38,-1.1597837134066e-38,-1.14824367264319e-38,-1.13681845720393e-38,-1.12550692455773e-38,-1.11430794354192e-38,-1.10322039424906e-38,-1.09224316791497e-38,-1.08137516680787e-38,-1.07061530411862e-38,-1.05996250385195e-38,-1.04941570071897e-38,-1.0389738400306e-38,-1.02863587759202e-38,-1.01840077959842e-38,-1.00826752253143e-38,-9.98235093056925e-39,-9.88302487923603e-39,-9.78468713862647e-39,-9.68732787488471e-39,-9.59093735200337e-39,-9.49550593084958e-39,-9.40102406820182e-39,-9.30748231579522e-39,-9.21487131937633e-39,-9.1231818177686e-39,-9.03240464194519e-39,-8.942530714113e-39,-8.85355104680449e-39,-8.76545674197851e-39,-8.6782389901313e-39,-8.59188906941512e-39,-8.50639834476569e-39,-8.42175826703943e-39,-8.33796037215814e-39,-8.25499628026228e-39,-8.17285769487363e-39,-8.09153640206532e-39,-8.01102426964007e-39,-7.93131324631777e-39,-7.85239536092945e-39,-7.7742627216209e-39,-7.69690751506319e-39,-7.620322005671e-39,-7.54449853482966e-39,-7.46942952012902e-39,-7.39510745460482e-39,-7.3215249059887e-39,-7.24867451596457e-39,-7.17654899943252e-39,-7.10514114378099e-39,-7.0344438081647e-39,-6.96444992279129e-39,-6.89515248821399e-39,-6.82654457463139e-39,-6.75861932119506e-39,-6.69136993532314e-39,-6.62478969202082e-39,-6.55887193320838e-39,-6.49361006705511e-39,-6.4289975673198e-39,-6.36502797269874e-39,-6.30169488617925e-39,-6.23899197439972e-39,-6.17691296701689e-39,-6.11545165607812e-39,-6.05460189540119e-39,-5.9943575999594e-39,-5.93471274527283e-39,-5.87566136680641e-39,-5.81719755937314e-39,-5.75931547654342e-39,-5.70200933006079e-39,-5.64527338926294e-39,-5.58910198050835e-39,-5.53348948660949e-39,-5.47843034627047e-39,-5.42391905353145e-39,-5.3699501572178e-39,-5.31651826039478e-39,-5.26361801982824e-39,-5.21124414545012e-39,-5.15939139982919e-39,-5.10805459764775e-39,-5.05722860518287e-39,-5.00690833979282e-39,-4.95708876940917e-39,-4.90776491203347e-39,-4.85893183523871e-39,-4.81058465567667e-39,-4.76271853858896e-39,-4.71532869732406e-39,-4.6684103928584e-39,-4.62195893332233e-39,-4.57596967353123e-39,-4.53043801452087e-39,-4.48535940308728e-39,-4.4407293313318e-39,-4.39654333621015e-39,-4.35279699908584e-39,-4.30948594528886e-39,-4.26660584367759e-39,-4.2241524062062e-39,-4.18212138749564e-39,-4.14050858440887e-39,-4.09930983563099e-39,-4.05852102125283e-39,-4.01813806235884e-39,-3.97815692061956e-39,-3.93857359788753e-39,-3.89938413579739e-39,-3.86058461537033e-39,-3.82217115662203e-39,-3.78413991817449e-39,-3.74648709687227e-39,-3.70920892740178e-39,-3.67230168191504e-39,-3.63576166965681e-39,-3.5995852365953e-39,-3.56376876505712e-39,-3.52830867336531e-39,-3.49320141548106e-39,-3.45844348064936e-39,-3.42403139304783e-39,-3.38996171143892e-39,-3.35623102882618e-39,-3.32283597211314e-39,-3.28977320176635e-39,-3.25703941148127e-39,-3.22463132785151e-39,-3.19254571004173e-39,-3.16077934946346e-39,-3.12932906945409e-39,-3.09819172495944e-39,-3.06736420221917e-39,-3.03684341845522e-39,-3.00662632156383e-39,-2.97670988981017e-39,-2.94709113152605e-39,-2.91776708481104e-39,-2.88873481723595e-39,-2.85999142554987e-39,-2.83153403538972e-39,-2.80335980099269e-39,-2.7754659049119e-39,-2.74784955773454e-39,-2.72050799780279e-39,-2.69343849093792e-39,-2.66663833016672e-39,-2.64010483545071e-39,-2.61383535341837e-39,-2.58782725709954e-39,-2.56207794566296e-39,-2.53658484415604e-39,-2.51134540324734e-39,-2.48635709897175e-39,-2.46161743247807e-39,-2.43712392977895e-39,-2.41287414150376e-39,-2.38886564265348e-39,-2.36509603235817e-39,-2.34156293363701e-39,-2.31826399316056e-39,-2.29519688101528e-39,-2.27235929047081e-39,-2.24974893774899e-39,-2.22736356179574e-39,-2.20520092405485e-39,-2.18325880824401e-39,-2.16153502013337e-39,-2.14002738732607e-39,-2.11873375904083e-39,-2.09765200589711e-39,-2.07678001970207e-39,-2.05611571323961e-39,-2.03565702006195e-39,-2.01540189428265e-39,-1.99534831037229e-39,-1.97549426295578e-39,-1.9558377666118e-39,-1.93637685567435e-39,-1.91710958403614e-39,-1.89803402495391e-39,-1.87914827085587e-39,-1.86045043315091e-39,-1.84193864203962e-39,-1.82361104632748e-39,-1.80546581323968e-39,-1.78750112823775e-39,-1.76971519483825e-39,-1.75210623443297e-39,-1.73467248611124e-39,-1.7174122064837e-39,-1.70032366950797e-39,-1.68340516631614e-39,-1.6666550050438e-39,-1.65007151066082e-39,-1.63365302480398e-39,-1.61739790561102e-39,-1.60130452755643e-39,-1.58537128128905e-39,-1.56959657347092e-39,-1.55397882661814e-39,-1.53851647894303e-39,-1.5232079841979e-39,-1.50805181152053e-39,-1.49304644528104e-39,-1.47819038493027e-39,-1.46348214484983e-39,-1.44892025420346e-39,-1.43450325678993e-39,-1.42022971089751e-39,-1.40609818915972e-39,-1.39210727841258e-39,-1.37825557955339e-39,-1.36454170740069e-39,-1.35096429055585e-39,-1.3375219712659e-39,-1.32421340528765e-39,-1.31103726175346e-39,-1.29799222303798e-39,-1.28507698462646e-39,-1.27229025498431e-39,-1.25963075542791e-39,-1.24709721999673e-39,-1.23468839532683e-39,-1.22240304052535e-39,-1.21023992704659e-39,-1.19819783856909e-39,-1.18627557087394e-39,-1.17447193172444e-39,-1.16278574074685e-39,-1.15121582931232e-39,-1.13976104042007e-39,-1.12842022858168e-39,-1.11719225970648e-39,-1.10607601098825e-39,-1.09507037079287e-39,-1.08417423854712e-39,-1.07338652462871e-39,-1.06270615025725e-39,-1.0521320473864e-39,-1.04166315859709e-39,-1.03129843699168e-39,-1.02103684608938e-39,-1.01087735972258e-39,-1.00081896193413e-39,-9.90860646875895e-40,-9.81001418708082e-40,-9.71240291499629e-40,-9.6157628912971e-40,-9.52008445190007e-40,-9.42535802888165e-40,-9.33157414952075e-40,-9.23872343535101e-40,-9.14679660122376e-40,-9.05578445437912e-40,-8.9656778935263e-40,-8.87646790793426e-40,-8.78814557653022e-40,-8.70070206700719e-40,-8.61412863494147e-40,-8.52841662291782e-40,-8.44355745966339e-40,-8.35954265919136e-40,-8.27636381995144e-40,-8.19401262399051e-40,-8.11248083612047e-40,-8.03176030309434e-40,-7.95184295279168e-40,-7.87272079341097e-40,-7.79438591267011e-40,-7.71683047701586e-40,-7.64004673084013e-40,-7.56402699570411e-40,-7.48876366957114e-40,-7.41424922604568e-40,-7.34047621362138e-40,-7.26743725493564e-40,-7.1951250460315e-40,-7.12353235562793e-40,-7.05265202439631e-40,-6.98247696424427e-40,-6.9130001576074e-40,-6.84421465674724e-40,-6.77611358305619e-40,-6.70869012637023e-40,-6.64193754428759e-40,-6.57584916149425e-40,-6.51041836909705e-40,-6.44563862396203e-40,-6.38150344806079e-40,-6.31800642782239e-40,-6.2551412134917e-40,-6.19290151849499e-40,-6.13128111881099e-40,-6.0702738523482e-40,-6.00987361832923e-40,-5.95007437668042e-40,-5.89087014742761e-40,-5.83225501009869e-40,-5.77422310313093e-40,-5.71676862328535e-40,-5.65988582506618e-40,-5.60356902014601e-40,-5.54781257679752e-40,-5.49261091932998e-40,-5.43795852753148e-40,-5.38384993611739e-40,-5.33027973418354e-40,-5.27724256466494e-40,-5.22473312380053e-40,-5.17274616060254e-40,-5.12127647633116e-40,-5.07031892397524e-40,-5.01986840773692e-40,-4.96991988252261e-40,-4.92046835343824e-40,-4.87150887528955e-40,-4.82303655208799e-40,-4.77504653656092e-40,-4.72753402966666e-40,-4.68049428011498e-40,-4.63392258389181e-40,-4.58781428378858e-40,-4.54216476893698e-40,-4.49696947434737e-40,-4.45222388045267e-40,-4.40792351265628e-40,-4.36406394088438e-40,-4.3206407791433e-40,-4.27764968508074e-40,-4.23508635955134e-40,-4.19294654618715e-40,-4.15122603097178e-40,-4.10992064181881e-40,-4.06902624815496e-40,-4.02853876050686e-40,-3.98845413009188e-40,-3.94876834841368e-40,-3.90947744686092e-40,-3.87057749631076e-40,-3.83206460673577e-40,-3.7939349268148e-40,-3.75618464354814e-40,-3.71880998187604e-40,-3.68180720430111e-40,-3.64517261051478e-40,-3.60890253702721e-40,-3.57299335680072e-40,-3.53744147888747e-40,-3.50224334806993e-40,-3.46739544450575e-40,-3.43289428337557e-40,-3.39873641453444e-40,-3.36491842216704e-40,-3.33143692444603e-40,-3.29828857319361e-40,-3.2654700535471e-40,-3.23297808362722e-40,-3.20080941420982e-40,-3.16896082840119e-40,-3.13742914131625e-40,-3.10621119975993e-40,-3.07530388191215e-40,-3.04470409701528e-40,-3.01440878506537e-40,-2.98441491650603e-40,-2.95471949192532e-40,-2.92531954175607e-40,-2.89621212597882e-40,-2.86739433382764e-40,-2.83886328349935e-40,-2.81061612186517e-40,-2.78265002418533e-40,-2.75496219382683e-40,-2.72754986198348e-40,-2.7004102873993e-40,-2.67354075609424e-40,-2.64693858109272e-40,-2.62060110215509e-40,-2.59452568551156e-40,-2.56870972359865e-40,-2.5431506347987e-40,-2.51784586318157e-40,-2.49279287824893e-40,-2.46798917468145e-40,-2.44343227208814e-40,-2.4191197147582e-40,-2.39504907141571e-40,-2.37121793497622e-40,-2.34762392230624e-40,-2.32426467398488e-40,-2.30113785406778e-40,-2.27824114985371e-40,-2.2555722716532e-40,-2.23312895255948e-40,-2.21090894822195e-40,-2.18891003662171e-40,-2.1671300178492e-40,-2.14556671388445e-40,-2.12421796837904e-40,-2.10308164644065e-40,-2.08215563441951e-40,-2.06143783969692e-40,-2.04092619047617e-40,-2.02061863557527e-40,-2.00051314422176e-40,-1.98060770584977e-40,-1.9609003298989e-40,-1.94138904561509e-40,-1.92207190185366e-40,-1.90294696688419e-40,-1.88401232819716e-40,-1.865266092313e-40,-1.84670638459244e-40,-1.82833134904926e-40,-1.81013914816463e-40,-1.79212796270324e-40,-1.77429599153157e-40,-1.75664145143766e-40,-1.73916257695275e-40,-1.72185762017483e-40,-1.70472485059385e-40,-1.6877625549185e-40,-1.67096903690515e-40,-1.65434261718794e-40,-1.63788163311108e-40,-1.62158443856245e-40,-1.60544940380899e-40,-1.58947491533378e-40,-1.5736593756747e-40,-1.55800120326455e-40,-1.54249883227306e-40,-1.52715071245024e-40,-1.51195530897128e-40,-1.49691110228318e-40,-1.48201658795276e-40,-1.46727027651613e-40,-1.4526706933299e-40,-1.43821637842355e-40,-1.42390588635356e-40,-1.40973778605882e-40,-1.39571066071745e-40,-1.38182310760524e-40,-1.36807373795534e-40,-1.35446117681928e-40,-1.34098406292962e-40,-1.32764104856377e-40,-1.31443079940913e-40,-1.3013519944298e-40,-1.28840332573437e-40,-1.27558349844518e-40,-1.26289123056884e-40,-1.25032525286796e-40,-1.2378843087343e-40,-1.22556715406311e-40,-1.21337255712862e-40,-1.20129929846099e-40,-1.1893461707243e-40,-1.1775119785958e-40,-1.16579553864642e-40,-1.15419567922242e-40,-1.14271124032816e-40,-1.13134107351021e-40,-1.12008404174238e-40,-1.10893901931214e-40,-1.09790489170796e-40,-1.08698055550785e-40,-1.07616491826912e-40,-1.06545689841904e-40,-1.05485542514667e-40,-1.04435943829587e-40,-1.03396788825921e-40,-1.023679735873e-40,-1.01349395231347e-40,-1.00340951899373e-40,-9.93425427462068e-41,-9.83540679301026e-41,-9.73754286027519e-41,-9.64065268994081e-41,-9.54472659290945e-41,-9.44975497649122e-41,-9.35572834344545e-41,-9.26263729103064e-41,-9.17047251006368e-41,-9.07922478398982e-41,-8.98888498796052e-41,-8.89944408792066e-41,-8.81089313970595e-41,-8.72322328814752e-41,-8.63642576618728e-41,-8.55049189400082e-41,-8.46541307812908e-41,-8.38118081061969e-41,-8.29778666817581e-41,-8.21522231131348e-41,-8.13347948352833e-41,-8.05255001046956e-41,-7.97242579912221e-41,-7.8930988369986e-41,-7.81456119133617e-41,-7.73680500830504e-41,-7.6598225122222e-41,-7.58360600477369e-41,-7.50814786424535e-41,-7.43344054476034e-41,-7.35947657552427e-41,-7.28624856007866e-41,-7.21374917556106e-41,-7.14197117197238e-41,-7.07090737145257e-41,-7.00055066756245e-41,-6.9308940245728e-41,-6.86193047676146e-41,-6.793653127716e-41,-6.72605514964471e-41,-6.65912978269354e-41,-6.59287033426984e-41,-6.52727017837364e-41,-6.46232275493479e-41,-6.39802156915662e-41,-6.33436019086707e-41,-6.27133225387535e-41,-6.20893145533505e-41,-6.1471515551145e-41,-6.08598637517202e-41,-6.02542979893873e-41,-5.96547577070663e-41,-5.90611829502276e-41,-5.84735143609017e-41,-5.78916931717409e-41,-5.73156612001396e-41,-5.67453608424215e-41,-5.61807350680765e-41,-5.56217274140549e-41,-5.50682819791263e-41,-5.45203434182868e-41,-5.39778569372222e-41,-5.34407682868337e-41,-5.29090237578072e-41,-5.23825701752475e-41,-5.18613548933584e-41,-5.13453257901759e-41,-5.08344312623602e-41,-5.03286202200337e-41,-4.98278420816691e-41,-4.93320467690361e-41,-4.88411847021908e-41,-4.83552067945161e-41,-4.78740644478178e-41,-4.73977095474587e-41,-4.69260944575526e-41,-4.64591720161982e-41,-4.59968955307607e-41,-4.55392187732073e-41,-4.50860959754813e-41,-4.4637481824924e-41,-4.41933314597473e-41,-4.37536004645451e-41,-4.33182448658502e-41,-4.28872211277405e-41,-4.24604861474837e-41,-4.20379972512249e-41,-4.16197121897236e-41,-4.12055891341238e-41,-4.07955866717756e-41,-4.03896638020916e-41,-3.99877799324454e-41,-3.95898948741156e-41,-3.91959688382656e-41,-3.88059624319622e-41,-3.84198366542405e-41,-3.80375528922013e-41,-3.76590729171489e-41,-3.72843588807714e-41,-3.69133733113518e-41,-3.65460791100247e-41,-3.61824395470642e-41,-3.58224182582101e-41,-3.54659792410339e-41,-3.51130868513373e-41,-3.47637057995865e-41,-3.44178011473854e-41,-3.40753383039811e-41,-3.3736283022803e-41,-3.34006013980408e-41,-3.30682598612528e-41,-3.27392251780075e-41,-3.24134644445632e-41,-3.20909450845742e-41,-3.17716348458362e-41,-3.14555017970597e-41,-3.11425143246755e-41,-3.08326411296759e-41,-3.05258512244836e-41,-3.02221139298517e-41,-2.99213988717979e-41,-2.96236759785664e-41,-2.93289154776187e-41,-2.90370878926601e-41,-2.87481640406879e-41,-2.84621150290767e-41,-2.81789122526874e-41,-2.78985273910054e-41,-2.76209324053114e-41,-2.73460995358758e-41,-2.70740012991819e-41,-2.68046104851796e-41,-2.65379001545635e-41,-2.62738436360775e-41,-2.60124145238501e-41,-2.57535866747524e-41,-2.54973342057833e-41,-2.5243631491483e-41,-2.49924531613678e-41,-2.4743774097396e-41,-2.44975694314541e-41,-2.42538145428697e-41,-2.40124850559512e-41,-2.3773556837549e-41,-2.35370059946417e-41,-2.33028088719481e-41,-2.3070942049561e-41,-2.28413823406045e-41,-2.26141067889169e-41,-2.2389092666753e-41,-2.21663174725134e-41,-2.19457589284933e-41,-2.1727394978654e-41,-2.15112037864188e-41,-2.12971637324886e-41,-2.10852534126791e-41,-2.08754516357819e-41,-2.06677374214448e-41,-2.04620899980728e-41,-2.02584888007524e-41,-2.00569134691945e-41,-1.98573438456973e-41,-1.96597599731329e-41,-1.94641420929487e-41,-1.92704706431939e-41,-1.90787262565625e-41,-1.88888897584555e-41,-1.87009421650652e-41,-1.85148646814757e-41,-1.83306386997833e-41,-1.81482457972364e-41,-1.79676677343931e-41,-1.77888864532961e-41,-1.76118840756688e-41,-1.74366429011254e-41,-1.72631454054028e-41,-1.70913742386069e-41,-1.69213122234775e-41,-1.67529423536716e-41,-1.65862477920621e-41,-1.64212118690535e-41,-1.62578180809162e-41,-1.60960500881354e-41,-1.59358917137767e-41,-1.57773269418693e-41,-1.56203399158041e-41,-1.54649149367472e-41,-1.53110364620718e-41,-1.51586891038015e-41,-1.50078576270739e-41,-1.48585269486159e-41,-1.47106821352346e-41,-1.45643084023258e-41,-1.44193911123944e-41,-1.42759157735902e-41,-1.41338680382601e-41,-1.39932337015122e-41,-1.38539986997953e-41,-1.37161491094937e-41,-1.3579671145533e-41,-1.34445511600032e-41,-1.33107756407935e-41,-1.317833121024e-41,-1.30472046237895e-41,-1.29173827686743e-41,-1.27888526626003e-41,-1.266160145245e-41,-1.25356164129964e-41,-1.24108849456304e-41,-1.22873945771014e-41,-1.21651329582697e-41,-1.20440878628714e-41,-1.19242471862963e-41,-1.18055989443766e-41,-1.16881312721893e-41,-1.15718324228696e-41,-1.14566907664352e-41,-1.13426947886248e-41,-1.12298330897456e-41,-1.11180943835335e-41,-1.10074674960248e-41,-1.08979413644389e-41,-1.07895050360708e-41,-1.06821476671978e-41,-1.05758585219932e-41,-1.04706269714541e-41,-1.03664424923377e-41,-1.02632946661092e-41,-1.01611731779001e-41,-1.00600678154766e-41,-9.95996846821793e-42,-9.86086512610607e-42,-9.76274787872437e-42,-9.66560691426605e-42,-9.56943251855387e-42,-9.47421507406822e-42,-9.37994505898506e-42,-9.28661304622457e-42,-9.19420970250745e-42,-9.10272578742244e-42,-9.01215215250193e-42,-8.9224797403067e-42,-8.83369958352092e-42,-8.74580280405506e-42,-8.65878061215768e-42,-8.57262430553719e-42,-8.48732526849125e-42,-8.40287497104483e-42,-8.31926496809805e-42,-8.23648689858071e-42,-8.15453248461699e-42,-8.07339353069732e-42,-7.99306192285845e-42,-7.91352962787277e-42,-7.83478869244463e-42,-7.75683124241462e-42,-7.67964948197291e-42,-7.60323569287924e-42,-7.52758223369079e-42,-7.45268153899872e-42,-7.37852611867124e-42,-7.30510855710432e-42,-7.23242151248082e-42,-7.16045771603551e-42,-7.08920997132887e-42,-7.01867115352715e-42,-6.9488342086896e-42,-6.87969215306364e-42,-6.81123807238617e-42,-6.7434651211919e-42,-6.67636652212932e-42,-6.6099355652827e-42,-6.54416560750082e-42,-6.47905007173327e-42,-6.41458244637203e-42,-6.35075628460092e-42,-6.28756520375069e-42,-6.22500288466039e-42,-6.16306307104608e-42,-6.10173956887486e-42,-6.04102624574525e-42,-5.98091703027441e-42,-5.9214059114908e-42,-5.86248693823278e-42,-5.804154218554e-42,-5.74640191913398e-42,-5.68922426469446e-42,-5.63261553742254e-42,-5.57657007639814e-42,-5.52108227702853e-42,-5.46614659048763e-42,-5.41175752316083e-42,-5.35790963609616e-42,-5.30459754446012e-42,-5.25181591699896e-42,-5.19955947550603e-42,-5.1478229942937e-42,-5.0966012996706e-42,-5.04588926942471e-42,-4.99568183231062e-42,-4.94597396754285e-42,-4.89676070429355e-42,-4.84803712119527e-42,-4.79979834584914e-42,-4.75203955433752e-42,-4.70475597074131e-42,-4.65794286666281e-42,-4.61159556075268e-42,-4.56570941824157e-42,-4.52027985047706e-42,-4.47530231446456e-42,-4.43077231241289e-42,-4.38668539128484e-42,-4.34303714235143e-42,-4.29982320075148e-42,-4.25703924505485e-42,-4.21468099683022e-42,-4.17274422021752e-42,-4.13122472150419e-42,-4.09011834870566e-42,-4.04942099115044e-42,-4.00912857906892e-42,-3.9692370831862e-42,-3.92974251431957e-42,-3.8906409229791e-42,-3.85192839897315e-42,-3.8136010710171e-42,-3.77565510634611e-42,-3.73808671033215e-42,-3.70089212610435e-42,-3.6640676341732e-42,-3.62760955205886e-42,-3.5915142339228e-42,-3.55577807020303e-42,-3.52039748725342e-42,-3.48536894698627e-42,-3.45068894651826e-42,-3.41635401782052e-42,-3.38236072737149e-42,-3.34870567581384e-42,-3.31538549761442e-42,-3.28239686072754e-42,-3.24973646626208e-42,-3.21740104815141e-42,-3.18538737282669e-42,-3.15369223889374e-42,-3.12231247681282e-42,-3.09124494858147e-42,-3.06048654742107e-42,-3.03003419746578e-42,-2.99988485345527e-42,-2.97003550043007e-42,-2.9404831534299e-42,-2.91122485719549e-42,-2.88225768587286e-42,-2.85357874272068e-42,-2.82518515982075e-42,-2.79707409779118e-42,-2.76924274550224e-42,-2.74168831979557e-42,-2.71440806520567e-42,-2.68739925368426e-42,-2.66065918432776e-42,-2.63418518310689e-42,-2.60797460259948e-42,-2.58202482172569e-42,-2.55633324548573e-42,-2.53089730470061e-42,-2.50571445575508e-42,-2.48078218034319e-42,-2.45609798521666e-42,-2.43165940193544e-42,-2.40746398662077e-42,-2.383509319711e-42,-2.35979300571948e-42,-2.33631267299501e-42,-2.31306597348481e-42,-2.29005058249948e-42,-2.26726419848078e-42,-2.24470454277136e-42,-2.22236935938678e-42,-2.20025641479011e-42,-2.17836349766851e-42,-2.15668841871196e-42,-2.13522901039452e-42,-2.11398312675751e-42,-2.09294864319481e-42,-2.07212345624059e-42,-2.05150548335873e-42,-2.03109266273481e-42,-2.01088295306977e-42,-1.99087433337575e-42,-1.97106480277414e-42,-1.95145238029539e-42,-1.93203510468086e-42,-1.91281103418683e-42,-1.89377824639027e-42,-1.87493483799647e-42,-1.85627892464891e-42,-1.83780864074076e-42,-1.81952213922816e-42,-1.80141759144579e-42,-1.78349318692372e-42,-1.7657471332066e-42,-1.74817765567428e-42,-1.73078299736432e-42,-1.71356141879642e-42,-1.6965111977984e-42,-1.6796306293339e-42,-1.66291802533203e-42,-1.64637171451849e-42,-1.62999004224835e-42,-1.61377137034079e-42,-1.59771407691506e-42,-1.58181655622846e-42,-1.56607721851568e-42,-1.5504944898298e-42,-1.53506681188499e-42,-1.51979264190061e-42,-1.5046704524469e-42,-1.48969873129233e-42,-1.47487598125233e-42,-1.4602007200395e-42,-1.44567148011552e-42,-1.4312868085443e-42,-1.41704526684665e-42,-1.40294543085659e-42,-1.38898589057871e-42,-1.37516525004739e-42,-1.36148212718706e-42,-1.347935153674e-42,-1.3345229747996e-42,-1.3212442493348e-42,-1.30809764939596e-42,-1.29508186031214e-42,-1.28219558049361e-42,-1.26943752130161e-42,-1.25680640691963e-42,-1.24430097422566e-42,-1.23191997266603e-42,-1.2196621641303e-42,-1.20752632282735e-42,-1.19551123516295e-42,-1.18361569961835e-42,-1.17183852663005e-42,-1.16017853847095e-42,-1.14863456913252e-42,-1.1372054642082e-42,-1.12589008077796e-42,-1.11468728729407e-42,-1.1035959634678e-42,-1.09261500015756e-42,-1.08174329925783e-42,-1.07097977358949e-42,-1.060323346791e-42,-1.04977295321079e-42,-1.03932753780071e-42,-1.02898605601053e-42,-1.01874747368344e-42,-1.00861076695267e-42,-9.98574922139117e-43,-9.88638935649916e-43,-9.78801813878163e-43,-9.69062573103454e-43,-9.59420239393611e-43,-9.4987384850724e-43,-9.40422445797271e-43,-9.31065086115569e-43,-9.21800833718383e-43,-9.12628762172724e-43,-9.0354795426381e-43,-8.94557501903294e-43,-8.85656506038423e-43,-8.76844076562205e-43,-8.68119332224362e-43,-8.59481400543164e-43,-8.5092941771827e-43,-8.42462528544245e-43,-8.34079886325129e-43,-8.25780652789727e-43,-8.17563998007744e-43,-8.09429100306868e-43,-8.01375146190561e-43,-7.93401330256676e-43,-7.85506855116987e-43,-7.77690931317412e-43,-7.69952777259035e-43,-7.62291619120025e-43,-7.54706690778161e-43,-7.47197233734299e-43,-7.39762497036488e-43,-7.3240173720484e-43,-7.2511421815725e-43,-7.1789921113575e-43,-7.10755994633605e-43,-7.03683854323221e-43,-6.96682082984685e-43,-6.89749980435008e-43,-6.82886853458169e-43,-6.76092015735758e-43,-6.69364787778324e-43,-6.62704496857483e-43,-6.56110476938574e-43,-6.49582068614119e-43,-6.43118619037855e-43,-6.3671948185942e-43,-6.30384017159772e-43,-6.2411159138717e-43,-6.17901577293793e-43,-6.11753353873066e-43,-6.0566630629753e-43,-5.99639825857339e-43,-5.93673309899444e-43,-5.8776616176726e-43,-5.8191779074106e-43,-5.76127611978874e-43,-5.70395046457987e-43,-5.64719520917076e-43,-5.59100467798866e-43,-5.53537325193347e-43,-5.48029536781629e-43,-5.42576551780291e-43,-5.37177824886271e-43,-5.31832816222389e-43,-5.26540991283333e-43,-5.21301820882183e-43,-5.16114781097549e-43,-5.10979353221114e-43,-5.05895023705819e-43,-5.00861284114482e-43,-4.95877631068935e-43,-4.90943566199728e-43,-4.86058596096269e-43,-4.81222232257462e-43,-4.76433991042902e-43,-4.71693393624482e-43,-4.66999965938497e-43,-4.6235323863828e-43,-4.57752747047216e-43,-4.53198031112319e-43,-4.48688635358206e-43,-4.44224108841531e-43,-4.39804005105927e-43,-4.35427882137346e-43,-4.31095302319829e-43,-4.26805832391792e-43,-4.22559043402673e-43,-4.18354510670022e-43,-4.14191813737067e-43,-4.10070536330654e-43,-4.05990266319594e-43,-4.01950595673498e-43,-3.97951120421924e-43,-3.93991440614019e-43,-3.90071160278508e-43,-3.8618988738408e-43,-3.82347233800216e-43,-3.78542815258362e-43,-3.74776251313481e-43,-3.71047165306047e-43,-3.67355184324355e-43,-3.63699939167221e-43,-3.60081064307093e-43,-3.56498197853459e-43,-3.52950981516693e-43,-3.49439060572211e-43,-3.45962083824981e-43,-3.42519703574436e-43,-3.39111575579688e-43,-3.35737359025087e-43,-3.3239671648617e-43,-3.29089313895905e-43,-3.25814820511267e-43,-3.22572908880194e-43,-3.19363254808824e-43,-3.16185537329068e-43,-3.13039438666538e-43,-3.09924644208737e-43,-3.06840842473629e-43,-3.03787725078473e-43,-3.00764986708979e-43,-2.97772325088794e-43,-2.94809440949266e-43,-2.91876037999505e-43,-2.88971822896774e-43,-2.86096505217148e-43,-2.83249797426454e-43,-2.80431414851549e-43,-2.77641075651818e-43,-2.74878500791021e-43,-2.72143414009374e-43,-2.6943554179591e-43,-2.66754613361157e-43,-2.64100360610039e-43,-2.61472518115063e-43,-2.58870823089793e-43,-2.56295015362562e-43,-2.53744837350444e-43,-2.51220034033516e-43,-2.48720352929345e-43,-2.46245544067731e-43,-2.43795359965733e-43,-2.41369555602891e-43,-2.38967888396752e-43,-2.36590118178596e-43,-2.34236007169414e-43,-2.31905319956146e-43,-2.29597823468132e-43,-2.27313286953793e-43,-2.25051481957579e-43,-2.22812182297107e-43,-2.20595164040539e-43,-2.18400205484208e-43,-2.16227087130423e-43,-2.14075591665541e-43,-2.11945503938226e-43,-2.09836610937923e-43,-2.07748701773579e-43,-2.05681567652539e-43,-2.03635001859663e-43,-2.0160879973667e-43,-1.99602758661661e-43,-1.97616678028852e-43,-1.95650359228527e-43,-1.9370360562717e-43,-1.91776222547793e-43,-1.89868017250488e-43,-1.87978798913128e-43,-1.8610837861231e-43,-1.84256569304447e-43,-1.82423185807058e-43,-1.80608044780271e-43,-1.78810964708471e-43,-1.77031765882149e-43,-1.75270270379943e-43,-1.73526302050836e-43,-1.71799686496537e-43,-1.70090251054057e-43,-1.68397824778423e-43,-1.66722238425598e-43,-1.65063324435554e-43,-1.63420916915504e-43,-1.61794851623331e-43,-1.60184965951151e-43,-1.58591098909053e-43,-1.57013091109005e-43,-1.55450784748915e-43,-1.5390402359684e-43,-1.52372652975378e-43,-1.50856519746195e-43,-1.49355472294697e-43,-1.47869360514895e-43,-1.46398035794367e-43,-1.44941350999417e-43,-1.43499160460354e-43,-1.42071319956918e-43,-1.4065768670387e-43,-1.39258119336711e-43,-1.37872477897532e-43,-1.36500623821036e-43,-1.35142419920676e-43,-1.33797730374925e-43,-1.32466420713711e-43,-1.31148357804957e-43,-1.29843409841273e-43,-1.28551446326779e-43,-1.27272338064042e-43,-1.26005957141172e-43,-1.24752176919023e-43,-1.23510872018525e-43,-1.22281918308155e-43,-1.21065192891519e-43,-1.19860574095059e-43,-1.18667941455892e-43,-1.17487175709763e-43,-1.1631815877911e-43,-1.15160773761268e-43,-1.14014904916768e-43,-1.12880437657773e-43,-1.11757258536613e-43,-1.10645255234435e-43,-1.09544316549987e-43,-1.08454332388481e-43,-1.07375193750592e-43,-1.06306792721558e-43,-1.05249022460387e-43,-1.04201777189168e-43,-1.03164952182505e-43,-1.02138443757029e-43,-1.01122149261045e-43,-1.00115967064257e-43,-9.91197965476043e-44,-9.81335380932064e-44,-9.71570930743976e-44,-9.61903638458593e-44,-9.52332537338645e-44,-9.42856670266057e-44,-9.33475089646199e-44,-9.24186857313205e-44,-9.14991044436113e-44,-9.05886731425946e-44,-8.96873007843844e-44,-8.87948972309909e-44,-8.79113732413166e-44,-8.70366404622273e-44,-8.61706114197138e-44,-8.53131995101514e-44,-8.44643189916358e-44,-8.36238849754053e-44,-8.27918134173591e-44,-8.19680211096493e-44,-8.11524256723561e-44,-8.03449455452586e-44,-7.95454999796689e-44,-7.87540090303652e-44,-7.79703935475943e-44,-7.71945751691525e-44,-7.64264763125567e-44,-7.56660201672822e-44,-7.49131306870786e-44,-7.41677325823714e-44,-7.34297513127303e-44,-7.2699113079411e-44,-7.19757448179824e-44,-7.12595741910167e-44,-7.05505295808522e-44,-6.98485400824392e-44,-6.91535354962406e-44,-6.84654463212199e-44,-6.7784203747887e-44,-6.71097396514149e-44,-6.64419865848329e-44,-6.57808777722789e-44,-6.51263471023187e-44,-6.44783291213409e-44,-6.38367590270083e-44,-6.32015726617749e-44,-6.25727065064768e-44,-6.19500976739725e-44,-6.13336839028609e-44,-6.0723403551252e-44,-6.01191955906004e-44,-5.95209995996073e-44,-5.89287557581761e-44,-5.83424048414273e-44,-5.77618882137814e-44,-5.71871478230929e-44,-5.66181261948419e-44,-5.60547664263923e-44,-5.54970121812987e-44,-5.494480768367e-44,-5.4398097712598e-44,-5.38568275966284e-44,-5.33209432082993e-44,-5.2790390958726e-44,-5.226511779224e-44,-5.17450711810876e-44,-5.12301991201751e-44,-5.07204501218659e-44,-5.02157732108361e-44,-4.97161179189746e-44,-4.92214342803346e-44,-4.87316728261413e-44,-4.82467845798398e-44,-4.77667210522021e-44,-4.7291434236476e-44,-4.68208766035825e-44,-4.6355001097367e-44,-4.58937611298911e-44,-4.54371105767725e-44,-4.49850037725759e-44,-4.45373955062449e-44,-4.40942410165785e-44,-4.3655495987759e-44,-4.32211165449187e-44,-4.279105924975e-44,-4.23652810961661e-44,-4.19437395059958e-44,-4.15263923247294e-44,-4.11131978173014e-44,-4.07041146639157e-44,-4.02991019559166e-44,-3.98981191916964e-44,-3.95011262726433e-44,-3.91080834991352e-44,-3.87189515665677e-44,-3.83336915614223e-44,-3.79522649573784e-44,-3.75746336114566e-44,-3.72007597602084e-44] diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/test/fixtures/r/runner.R b/lib/node_modules/@stdlib/math/base/special/log1mexp/test/fixtures/r/runner.R index 234a7bc561f7..079bb3cd3db4 100755 --- a/lib/node_modules/@stdlib/math/base/special/log1mexp/test/fixtures/r/runner.R +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/test/fixtures/r/runner.R @@ -77,15 +77,19 @@ main <- function() { source_dir <- dirname( get_script_path() ); # Generate a sequence of numbers for which to calculate `log1mexp`: - data <- seq( 0.1, 100.0, 0.1 ); + x <- seq( 0.1, 100.0, 0.01 ); # Calculate `log1mexp` for each value: - expected <- lapply( data, VGAM::log1mexp ); + expected <- lapply( x, VGAM::log1mexp ); # Convert fixture data to JSON: + x <- to_json( x ); expected <- to_json( expected ); # Write the data to file... + filepath <- get_filepath( "data.json" ); + write( x, filepath ); + filepath <- get_filepath( "expected.json" ); write( expected, filepath ); } diff --git a/lib/node_modules/@stdlib/math/base/special/log1mexp/test/test.js b/lib/node_modules/@stdlib/math/base/special/log1mexp/test/test.js index 74df8bbfa2c2..edb9c8e5bdf5 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1mexp/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/log1mexp/test/test.js @@ -23,7 +23,7 @@ var tape = require( 'tape' ); var NINF = require( '@stdlib/constants/math/float64-ninf' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var incrspace = require( '@stdlib/math/utils/incrspace' ); +var randu = require( '@stdlib/random/base/randu' ); var abs = require( '@stdlib/math/base/special/abs' ); var exp = require( '@stdlib/math/base/special/exp' ); var expm1 = require( '@stdlib/math/base/special/expm1' ); @@ -36,6 +36,7 @@ var log1mexp = require( './../lib' ); // FIXTURES // +var data = require( './fixtures/r/data.json' ); var expected = require( './fixtures/r/expected.json' ); @@ -53,60 +54,62 @@ tape( 'if provided `NaN`, the function returns `NaN`', function test( t ) { t.end(); }); -tape( 'if provided `0`, the function returns -infinity', function test( t ) { - var v = log1mexp( 0.0 ); +tape( 'if provided `+-0`, the function returns -infinity', function test( t ) { + var v; + + v = log1mexp( 0.0 ); + t.strictEqual(v, NINF, 'returns -infinity'); + + v = log1mexp( -0.0 ); t.strictEqual(v, NINF, 'returns -infinity'); + t.end(); }); -tape( 'if `0 < x <= ln(2)`, the function returns `ln(-expm1(-x))`', function test( t ) { - var values; +tape( 'the function computes the natural logarithm of `1-exp(-|x|)` (`0 < |x| <= ln(2)`)', function test( t ) { var x; var y; + var v; var i; - values = incrspace( 0.1, LN2, 0.1 ); - for ( i = 0; i < values.length; i++ ) { - x = log1mexp( values[ i ] ); - y = ln( -expm1( -values[ i ] )); - t.strictEqual( x, y, 'returns '+y+' when provided ' + values[ i ] ); + for ( i = 0; i < 1e3; i++ ) { + v = randu() * LN2; + x = log1mexp( v ); + y = ln( -expm1( -v )); + t.strictEqual( x, y, 'returns '+y+' when provided '+v ); } t.end(); }); -tape( 'if `x > ln(2)`, the function returns `log1p(-exp(-x))`', function test( t ) { - var values; +tape( 'the function computes the natural logarithm of `1-exp(-|x|)` (`x > ln(2)`)', function test( t ) { var x; var y; + var v; var i; - values = incrspace( 33.4, 100, 0.2 ); - for ( i = 0; i < values.length; i++ ) { - x = log1mexp( values[ i ] ); - y = log1p( -exp( -values[ i ] ) ); - t.strictEqual( x, y, 'returns '+y+' when provided ' + values[ i ] ); + for ( i = 0; i < 1e3; i++ ) { + v = LN2 + EPS + (randu()*100.0); + x = log1mexp( v ); + y = log1p( -exp( -v ) ); + t.strictEqual( x, y, 'returns '+y+' when provided '+v ); } t.end(); }); -tape( 'the function accurately computes the natural logarithm of 1 - exp(x)', function test( t ) { - var values; +tape( 'the function accurately computes the natural logarithm of `1-exp(-|x|)`', function test( t ) { + var actual; var delta; var tol; - var x; - var y; var i; - values = incrspace( 0.1, 100.0, 0.1 ); - for ( i = 0; i < values.length; i++ ) { - x = log1mexp( values[ i ] ); - y = expected[ i ]; - if (x === expected[ i ]) { - t.strictEqual( y, expected[ i ], 'returns '+x+' when provided ' + values[ i ]); + for ( i = 0; i < data.length; i++ ) { + actual = log1mexp( data[ i ] ); + if ( actual === expected[ i ] ) { + t.strictEqual( actual, expected[ i ], 'returns '+expected[ i ]+' when provided '+data[ i ] ); } else { - delta = abs( x - y ); - tol = 21.7 * EPS * abs( y ); - t.ok( delta <= tol, 'within tolerance. returns '+x+' when provided '+values[ i ]+'. expected: '+expected[ i ]+', Δ: '+delta+'.' ); + delta = abs( actual - expected[ i ] ); + tol = 100.0 * EPS * abs( expected[ i ] ); + t.ok( delta <= tol, 'within tolerance. x: '+data[ i ]+'. actual: '+actual+'. expected: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' ); } } t.end(); From 8154e46ccdd3bd745c5e860b6832539265dd83bb Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 18:44:02 -0700 Subject: [PATCH 0683/1062] Fix path --- tools/git/hooks/pre-commit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/git/hooks/pre-commit b/tools/git/hooks/pre-commit index 5f194f1f04c9..a54cfa5f2f4d 100644 --- a/tools/git/hooks/pre-commit +++ b/tools/git/hooks/pre-commit @@ -35,7 +35,7 @@ lint_filenames="${root}/lib/node_modules/@stdlib/_tools/lint/filenames/bin/cli" lint_package_json="${root}/lib/node_modules/@stdlib/_tools/lint/pkg-json/bin/cli" # Define the path to a utility for linting REPL help files: -lint_repl_help="${root}/lib/node_modules/@stdlib/_tools/lint/repl-help/bin/cli" +lint_repl_help="${root}/lib/node_modules/@stdlib/_tools/lint/repl-txt/bin/cli" # Define the path to ESLint configuration file for linting examples: eslint_examples_conf="${root}/etc/eslint/.eslintrc.examples.js" From 2bbb9eb9a7c6ce6f6f375a5ae533d63f695a9401 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 18:44:17 -0700 Subject: [PATCH 0684/1062] Update namespace --- lib/node_modules/@stdlib/math/base/special/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/math/base/special/lib/index.js b/lib/node_modules/@stdlib/math/base/special/lib/index.js index 90ebfcae6ae7..989f6bc98206 100644 --- a/lib/node_modules/@stdlib/math/base/special/lib/index.js +++ b/lib/node_modules/@stdlib/math/base/special/lib/index.js @@ -927,6 +927,15 @@ setReadOnly( special, 'ln', require( '@stdlib/math/base/special/ln' ) ); */ setReadOnly( special, 'log', require( '@stdlib/math/base/special/log' ) ); +/** +* @name log1mexp +* @memberof special +* @readonly +* @type {Function} +* @see {@link module:@stdlib/math/base/special/log1mexp} +*/ +setReadOnly( special, 'log1mexp', require( '@stdlib/math/base/special/log1mexp' ) ); + /** * @name log1p * @memberof special From bdc57bd505c3e209c324035818451d5a4378d681 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 18:45:36 -0700 Subject: [PATCH 0685/1062] Update namespace --- .../@stdlib/namespace/lib/namespace/b.js | 14 ++++++++++++++ .../@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 3 ++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/b.js b/lib/node_modules/@stdlib/namespace/lib/namespace/b.js index 84e2a8f6f362..b1c53aa7d509 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/b.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/b.js @@ -5425,6 +5425,19 @@ ns.push({ ] }); +ns.push({ + 'alias': 'base.log1mexp', + 'path': '@stdlib/math/base/special/log1mexp', + 'value': require( '@stdlib/math/base/special/log1mexp' ), + 'type': 'Function', + 'related': [ + '@stdlib/math/base/special/exp', + '@stdlib/math/base/special/ln', + '@stdlib/math/base/special/log1p', + '@stdlib/math/base/special/log1pexp' + ] +}); + ns.push({ 'alias': 'base.log1p', 'path': '@stdlib/math/base/special/log1p', @@ -5444,6 +5457,7 @@ ns.push({ 'related': [ '@stdlib/math/base/special/exp', '@stdlib/math/base/special/ln', + '@stdlib/math/base/special/log1mexp', '@stdlib/math/base/special/log1p' ] }); diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index f6c23ba34d09..04068e927879 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -662,6 +662,7 @@ var db = { "base.ldexp": "x = base.ldexp( 0.5, 3 )\nx = base.ldexp( 4.0, -2 )\nx = base.ldexp( 0.0, 20 )\nx = base.ldexp( -0.0, 39 )\nx = base.ldexp( NaN, -101 )\nx = base.ldexp( PINF, 11 )\nx = base.ldexp( NINF, -118 )\n", "base.ln": "y = base.ln( 4.0 )\ny = base.ln( 0.0 )\ny = base.ln( PINF )\ny = base.ln( NaN )\ny = base.ln( -4.0 )\n", "base.log": "y = base.log( 100.0, 10.0 )\ny = base.log( 16.0, 2.0 )\ny = base.log( 5.0, 1.0 )\ny = base.log( NaN, 2.0 )\ny = base.log( 1.0, NaN )\ny = base.log( -4.0, 2.0 )\ny = base.log( 4.0, -2.0 )\n", + "base.log1mexp": "y = base.log1mexp( -10.0 )\ny = base.log1mexp( 0.0 )\ny = base.log1mexp( 5.0 )\ny = base.log1mexp( 10.0 )\ny = base.log1mexp( NaN )\n", "base.log1p": "y = base.log1p( 4.0 )\ny = base.log1p( -1.0 )\ny = base.log1p( 0.0 )\ny = base.log1p( -0.0 )\ny = base.log1p( -2.0 )\ny = base.log1p( NaN )\n", "base.log1pexp": "y = base.log1pexp( -10.0 )\ny = base.log1pexp( 0.0 )\ny = base.log1pexp( 5.0 )\ny = base.log1pexp( 34.0 )\ny = base.log1pexp( NaN )\n", "base.log2": "y = base.log2( 4.0 )\ny = base.log2( 8.0 )\ny = base.log2( 0.0 )\ny = base.log2( PINF )\ny = base.log2( NaN )\ny = base.log2( -4.0 )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 5456ddda2ae3..62084466ee24 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -662,8 +662,9 @@ var db = { "base.ldexp": "\nbase.ldexp( frac, exp )\n Multiplies a double-precision floating-point number by an integer power of\n two; i.e., `x = frac * 2^exp`.\n\n If `frac` equals positive or negative `zero`, `NaN`, or positive or negative\n infinity, the function returns a value equal to `frac`.\n\n Parameters\n ----------\n frac: number\n Fraction.\n\n exp: number\n Exponent.\n\n Returns\n -------\n out: number\n Double-precision floating-point number equal to `frac * 2^exp`.\n\n Examples\n --------\n > var x = base.ldexp( 0.5, 3 )\n 4.0\n > x = base.ldexp( 4.0, -2 )\n 1.0\n > x = base.ldexp( 0.0, 20 )\n 0.0\n > x = base.ldexp( -0.0, 39 )\n -0.0\n > x = base.ldexp( NaN, -101 )\n NaN\n > x = base.ldexp( PINF, 11 )\n Infinity\n > x = base.ldexp( NINF, -118 )\n -Infinity\n\n See Also\n --------\n base.frexp\n", "base.ln": "\nbase.ln( x )\n Evaluates the natural logarithm.\n\n For negative numbers, the natural logarithm is not defined.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.ln( 4.0 )\n ~1.386\n > y = base.ln( 0.0 )\n -Infinity\n > y = base.ln( PINF )\n Infinity\n > y = base.ln( NaN )\n NaN\n > y = base.ln( -4.0 )\n NaN\n\n See Also\n --------\n base.exp, base.log10, base.log1p, base.log2\n", "base.log": "\nbase.log( x, b )\n Computes the base `b` logarithm of `x`.\n\n For negative `b` or `x`, the function returns `NaN`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n b: number\n Base.\n\n Returns\n -------\n y: number\n Logarithm (base `b`).\n\n Examples\n --------\n > var y = base.log( 100.0, 10.0 )\n 2.0\n > y = base.log( 16.0, 2.0 )\n 4.0\n > y = base.log( 5.0, 1.0 )\n Infinity\n > y = base.log( NaN, 2.0 )\n NaN\n > y = base.log( 1.0, NaN )\n NaN\n > y = base.log( -4.0, 2.0 )\n NaN\n > y = base.log( 4.0, -2.0 )\n NaN\n\n See Also\n --------\n base.exp, base.ln, base.log10, base.log1p, base.log2\n", + "base.log1mexp": "\nbase.log1mexp( x )\n Evaluates the natural logarithm of `1-exp(-|x|)`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log1mexp( -10.0 )\n ~-0.00005\n > y = base.log1mexp( 0.0 )\n -Infinity\n > y = base.log1mexp( 5.0 )\n ~-0.00676\n > y = base.log1mexp( 10.0 )\n ~-0.00005\n > y = base.log1mexp( NaN )\n NaN\n\n See Also\n --------\n base.exp, base.ln, base.log1p, base.log1pexp", "base.log1p": "\nbase.log1p( x )\n Evaluates the natural logarithm of `1+x`.\n\n For `x < -1`, the function returns `NaN`, as the natural logarithm is not\n defined for negative numbers.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log1p( 4.0 )\n ~1.609\n > y = base.log1p( -1.0 )\n -Infinity\n > y = base.log1p( 0.0 )\n 0.0\n > y = base.log1p( -0.0 )\n -0.0\n > y = base.log1p( -2.0 )\n NaN\n > y = base.log1p( NaN )\n NaN\n\n See Also\n --------\n base.ln, base.log\n", - "base.log1pexp": "base.log1pexp( x )\n Evaluates the natural logarithm of `1+exp(x)`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log1pexp( -10.0 )\n ~0.000045\n > y = base.log1pexp( 0.0 )\n ~0.693147\n > y = base.log1pexp( 5.0 )\n ~5.006715\n > y = base.log1pexp( 34.0 )\n 34.0\n > y = base.log1pexp( NaN )\n NaN\n\n See Also\n --------\n base.exp, base.ln, base.log1p", + "base.log1pexp": "base.log1pexp( x )\n Evaluates the natural logarithm of `1+exp(x)`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log1pexp( -10.0 )\n ~0.000045\n > y = base.log1pexp( 0.0 )\n ~0.693147\n > y = base.log1pexp( 5.0 )\n ~5.006715\n > y = base.log1pexp( 34.0 )\n 34.0\n > y = base.log1pexp( NaN )\n NaN\n\n See Also\n --------\n base.exp, base.ln, base.log1mexp, base.log1p", "base.log2": "\nbase.log2( x )\n Evaluates the binary logarithm (base two).\n\n For negative numbers, the binary logarithm is not defined.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log2( 4.0 )\n 2.0\n > y = base.log2( 8.0 )\n 3.0\n > y = base.log2( 0.0 )\n -Infinity\n > y = base.log2( PINF )\n Infinity\n > y = base.log2( NaN )\n NaN\n > y = base.log2( -4.0 )\n NaN\n\n See Also\n --------\n base.exp2, base.ln, base.log\n", "base.log10": "\nbase.log10( x )\n Evaluates the common logarithm (base 10).\n\n For negative numbers, the common logarithm is not defined.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log10( 100.0 )\n 2.0\n > y = base.log10( 8.0 )\n ~0.903\n > y = base.log10( 0.0 )\n -Infinity\n > y = base.log10( PINF )\n Infinity\n > y = base.log10( NaN )\n NaN\n > y = base.log10( -4.0 )\n NaN\n\n See Also\n --------\n base.exp10, base.ln, base.log\n", "base.logit": "\nbase.logit( p )\n Evaluates the logit function.\n\n Let `p` be the probability of some event. The logit function is defined as\n the logarithm of the odds `p / (1-p)`.\n\n If `p < 0` or `p > 1`, the function returns `NaN`.\n\n Parameters\n ----------\n p: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.logit( 0.2 )\n ~-1.386\n > y = base.logit( 0.9 )\n ~2.197\n > y = base.logit( -4.0 )\n NaN\n > y = base.logit( 1.5 )\n NaN\n > y = base.logit( NaN )\n NaN\n\n", From 39b207bf4d5eaab55d8077d4e89be0fad4851def Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 18:47:58 -0700 Subject: [PATCH 0686/1062] Fix missing line --- .../@stdlib/math/base/special/log1pexp/benchmark/c/benchmark.c | 2 +- .../@stdlib/math/base/special/log1pexp/docs/repl.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/benchmark/c/benchmark.c b/lib/node_modules/@stdlib/math/base/special/log1pexp/benchmark/c/benchmark.c index c7d67797c0ac..bd7502b261f7 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1pexp/benchmark/c/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/benchmark/c/benchmark.c @@ -97,7 +97,7 @@ double log1pexp( double x ) { if ( x <= -37.0 ) { return exp( x ); } - if (x <= 18.0 ) { + if ( x <= 18.0 ) { return log1p( exp( x ) ); } if ( x <= 33.3 ) { diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/docs/repl.txt b/lib/node_modules/@stdlib/math/base/special/log1pexp/docs/repl.txt index d73afb271699..6bc100e30863 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1pexp/docs/repl.txt +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/docs/repl.txt @@ -1,3 +1,4 @@ + {{alias}}( x ) Evaluates the natural logarithm of `1+exp(x)`. From 11a24bb06cd048fec83dd74db6844cf5ace5c01d Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 18:49:00 -0700 Subject: [PATCH 0687/1062] Update example --- lib/node_modules/@stdlib/math/base/special/log1pexp/README.md | 2 +- .../@stdlib/math/base/special/log1pexp/examples/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/README.md b/lib/node_modules/@stdlib/math/base/special/log1pexp/README.md index f054809709af..52a5f6fb9450 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1pexp/README.md +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/README.md @@ -65,7 +65,7 @@ y = log1pexp( NaN ); var incrspace = require( '@stdlib/math/utils/incrspace' ); var log1pexp = require( '@stdlib/math/base/special/log1pexp' ); -var x = incrspace( -10.0, 100.0, 1.0 ); +var x = incrspace( -10.0, 10.0, 0.01 ); var v; var i; diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/examples/index.js b/lib/node_modules/@stdlib/math/base/special/log1pexp/examples/index.js index 708c50b37b95..0152fa313c59 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1pexp/examples/index.js +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/examples/index.js @@ -21,7 +21,7 @@ var incrspace = require( '@stdlib/math/utils/incrspace' ); var log1pexp = require( './../lib' ); -var x = incrspace( -10.0, 100.0, 1.0 ); +var x = incrspace( -10.0, 10.0, 0.01 ); var v; var i; From 7324ffe31783fc5520924792f30e14ea1881d49a Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 18:50:02 -0700 Subject: [PATCH 0688/1062] Update description --- lib/node_modules/@stdlib/math/base/special/log1pexp/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/lib/main.js b/lib/node_modules/@stdlib/math/base/special/log1pexp/lib/main.js index dacb32f59d3a..675e01227fee 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1pexp/lib/main.js +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/lib/main.js @@ -28,7 +28,7 @@ var exp = require( '@stdlib/math/base/special/exp' ); // MAIN // /** -* Computes ln( 1 + exp(x) ). +* Computes the natural logarithm of \\( 1 + \exp(x) \\). * * @param {number} x - input value * @returns {number} function value From 57ef56b3f27b50a334bad71387b28f52aa5caa98 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 18:52:12 -0700 Subject: [PATCH 0689/1062] Regenerate test fixtures --- .../math/base/special/log1pexp/test/fixtures/r/data.json | 1 + .../base/special/log1pexp/test/fixtures/r/expected.json | 2 +- .../math/base/special/log1pexp/test/fixtures/r/runner.R | 8 ++++++-- 3 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/data.json diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/data.json b/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/data.json new file mode 100644 index 000000000000..d470cd130976 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/data.json @@ -0,0 +1 @@ +[-100,-99.99,-99.98,-99.97,-99.96,-99.95,-99.94,-99.93,-99.92,-99.91,-99.9,-99.89,-99.88,-99.87,-99.86,-99.85,-99.84,-99.83,-99.82,-99.81,-99.8,-99.79,-99.78,-99.77,-99.76,-99.75,-99.74,-99.73,-99.72,-99.71,-99.7,-99.69,-99.68,-99.67,-99.66,-99.65,-99.64,-99.63,-99.62,-99.61,-99.6,-99.59,-99.58,-99.57,-99.56,-99.55,-99.54,-99.53,-99.52,-99.51,-99.5,-99.49,-99.48,-99.47,-99.46,-99.45,-99.44,-99.43,-99.42,-99.41,-99.4,-99.39,-99.38,-99.37,-99.36,-99.35,-99.34,-99.33,-99.32,-99.31,-99.3,-99.29,-99.28,-99.27,-99.26,-99.25,-99.24,-99.23,-99.22,-99.21,-99.2,-99.19,-99.18,-99.17,-99.16,-99.15,-99.14,-99.13,-99.12,-99.11,-99.1,-99.09,-99.08,-99.07,-99.06,-99.05,-99.04,-99.03,-99.02,-99.01,-99,-98.99,-98.98,-98.97,-98.96,-98.95,-98.94,-98.93,-98.92,-98.91,-98.9,-98.89,-98.88,-98.87,-98.86,-98.85,-98.84,-98.83,-98.82,-98.81,-98.8,-98.79,-98.78,-98.77,-98.76,-98.75,-98.74,-98.73,-98.72,-98.71,-98.7,-98.69,-98.68,-98.67,-98.66,-98.65,-98.64,-98.63,-98.62,-98.61,-98.6,-98.59,-98.58,-98.57,-98.56,-98.55,-98.54,-98.53,-98.52,-98.51,-98.5,-98.49,-98.48,-98.47,-98.46,-98.45,-98.44,-98.43,-98.42,-98.41,-98.4,-98.39,-98.38,-98.37,-98.36,-98.35,-98.34,-98.33,-98.32,-98.31,-98.3,-98.29,-98.28,-98.27,-98.26,-98.25,-98.24,-98.23,-98.22,-98.21,-98.2,-98.19,-98.18,-98.17,-98.16,-98.15,-98.14,-98.13,-98.12,-98.11,-98.1,-98.09,-98.08,-98.07,-98.06,-98.05,-98.04,-98.03,-98.02,-98.01,-98,-97.99,-97.98,-97.97,-97.96,-97.95,-97.94,-97.93,-97.92,-97.91,-97.9,-97.89,-97.88,-97.87,-97.86,-97.85,-97.84,-97.83,-97.82,-97.81,-97.8,-97.79,-97.78,-97.77,-97.76,-97.75,-97.74,-97.73,-97.72,-97.71,-97.7,-97.69,-97.68,-97.67,-97.66,-97.65,-97.64,-97.63,-97.62,-97.61,-97.6,-97.59,-97.58,-97.57,-97.56,-97.55,-97.54,-97.53,-97.52,-97.51,-97.5,-97.49,-97.48,-97.47,-97.46,-97.45,-97.44,-97.43,-97.42,-97.41,-97.4,-97.39,-97.38,-97.37,-97.36,-97.35,-97.34,-97.33,-97.32,-97.31,-97.3,-97.29,-97.28,-97.27,-97.26,-97.25,-97.24,-97.23,-97.22,-97.21,-97.2,-97.19,-97.18,-97.17,-97.16,-97.15,-97.14,-97.13,-97.12,-97.11,-97.1,-97.09,-97.08,-97.07,-97.06,-97.05,-97.04,-97.03,-97.02,-97.01,-97,-96.99,-96.98,-96.97,-96.96,-96.95,-96.94,-96.93,-96.92,-96.91,-96.9,-96.89,-96.88,-96.87,-96.86,-96.85,-96.84,-96.83,-96.82,-96.81,-96.8,-96.79,-96.78,-96.77,-96.76,-96.75,-96.74,-96.73,-96.72,-96.71,-96.7,-96.69,-96.68,-96.67,-96.66,-96.65,-96.64,-96.63,-96.62,-96.61,-96.6,-96.59,-96.58,-96.57,-96.56,-96.55,-96.54,-96.53,-96.52,-96.51,-96.5,-96.49,-96.48,-96.47,-96.46,-96.45,-96.44,-96.43,-96.42,-96.41,-96.4,-96.39,-96.38,-96.37,-96.36,-96.35,-96.34,-96.33,-96.32,-96.31,-96.3,-96.29,-96.28,-96.27,-96.26,-96.25,-96.24,-96.23,-96.22,-96.21,-96.2,-96.19,-96.18,-96.17,-96.16,-96.15,-96.14,-96.13,-96.12,-96.11,-96.1,-96.09,-96.08,-96.07,-96.06,-96.05,-96.04,-96.03,-96.02,-96.01,-96,-95.99,-95.98,-95.97,-95.96,-95.95,-95.94,-95.93,-95.92,-95.91,-95.9,-95.89,-95.88,-95.87,-95.86,-95.85,-95.84,-95.83,-95.82,-95.81,-95.8,-95.79,-95.78,-95.77,-95.76,-95.75,-95.74,-95.73,-95.72,-95.71,-95.7,-95.69,-95.68,-95.67,-95.66,-95.65,-95.64,-95.63,-95.62,-95.61,-95.6,-95.59,-95.58,-95.57,-95.56,-95.55,-95.54,-95.53,-95.52,-95.51,-95.5,-95.49,-95.48,-95.47,-95.46,-95.45,-95.44,-95.43,-95.42,-95.41,-95.4,-95.39,-95.38,-95.37,-95.36,-95.35,-95.34,-95.33,-95.32,-95.31,-95.3,-95.29,-95.28,-95.27,-95.26,-95.25,-95.24,-95.23,-95.22,-95.21,-95.2,-95.19,-95.18,-95.17,-95.16,-95.15,-95.14,-95.13,-95.12,-95.11,-95.1,-95.09,-95.08,-95.07,-95.06,-95.05,-95.04,-95.03,-95.02,-95.01,-95,-94.99,-94.98,-94.97,-94.96,-94.95,-94.94,-94.93,-94.92,-94.91,-94.9,-94.89,-94.88,-94.87,-94.86,-94.85,-94.84,-94.83,-94.82,-94.81,-94.8,-94.79,-94.78,-94.77,-94.76,-94.75,-94.74,-94.73,-94.72,-94.71,-94.7,-94.69,-94.68,-94.67,-94.66,-94.65,-94.64,-94.63,-94.62,-94.61,-94.6,-94.59,-94.58,-94.57,-94.56,-94.55,-94.54,-94.53,-94.52,-94.51,-94.5,-94.49,-94.48,-94.47,-94.46,-94.45,-94.44,-94.43,-94.42,-94.41,-94.4,-94.39,-94.38,-94.37,-94.36,-94.35,-94.34,-94.33,-94.32,-94.31,-94.3,-94.29,-94.28,-94.27,-94.26,-94.25,-94.24,-94.23,-94.22,-94.21,-94.2,-94.19,-94.18,-94.17,-94.16,-94.15,-94.14,-94.13,-94.12,-94.11,-94.1,-94.09,-94.08,-94.07,-94.06,-94.05,-94.04,-94.03,-94.02,-94.01,-94,-93.99,-93.98,-93.97,-93.96,-93.95,-93.94,-93.93,-93.92,-93.91,-93.9,-93.89,-93.88,-93.87,-93.86,-93.85,-93.84,-93.83,-93.82,-93.81,-93.8,-93.79,-93.78,-93.77,-93.76,-93.75,-93.74,-93.73,-93.72,-93.71,-93.7,-93.69,-93.68,-93.67,-93.66,-93.65,-93.64,-93.63,-93.62,-93.61,-93.6,-93.59,-93.58,-93.57,-93.56,-93.55,-93.54,-93.53,-93.52,-93.51,-93.5,-93.49,-93.48,-93.47,-93.46,-93.45,-93.44,-93.43,-93.42,-93.41,-93.4,-93.39,-93.38,-93.37,-93.36,-93.35,-93.34,-93.33,-93.32,-93.31,-93.3,-93.29,-93.28,-93.27,-93.26,-93.25,-93.24,-93.23,-93.22,-93.21,-93.2,-93.19,-93.18,-93.17,-93.16,-93.15,-93.14,-93.13,-93.12,-93.11,-93.1,-93.09,-93.08,-93.07,-93.06,-93.05,-93.04,-93.03,-93.02,-93.01,-93,-92.99,-92.98,-92.97,-92.96,-92.95,-92.94,-92.93,-92.92,-92.91,-92.9,-92.89,-92.88,-92.87,-92.86,-92.85,-92.84,-92.83,-92.82,-92.81,-92.8,-92.79,-92.78,-92.77,-92.76,-92.75,-92.74,-92.73,-92.72,-92.71,-92.7,-92.69,-92.68,-92.67,-92.66,-92.65,-92.64,-92.63,-92.62,-92.61,-92.6,-92.59,-92.58,-92.57,-92.56,-92.55,-92.54,-92.53,-92.52,-92.51,-92.5,-92.49,-92.48,-92.47,-92.46,-92.45,-92.44,-92.43,-92.42,-92.41,-92.4,-92.39,-92.38,-92.37,-92.36,-92.35,-92.34,-92.33,-92.32,-92.31,-92.3,-92.29,-92.28,-92.27,-92.26,-92.25,-92.24,-92.23,-92.22,-92.21,-92.2,-92.19,-92.18,-92.17,-92.16,-92.15,-92.14,-92.13,-92.12,-92.11,-92.1,-92.09,-92.08,-92.07,-92.06,-92.05,-92.04,-92.03,-92.02,-92.01,-92,-91.99,-91.98,-91.97,-91.96,-91.95,-91.94,-91.93,-91.92,-91.91,-91.9,-91.89,-91.88,-91.87,-91.86,-91.85,-91.84,-91.83,-91.82,-91.81,-91.8,-91.79,-91.78,-91.77,-91.76,-91.75,-91.74,-91.73,-91.72,-91.71,-91.7,-91.69,-91.68,-91.67,-91.66,-91.65,-91.64,-91.63,-91.62,-91.61,-91.6,-91.59,-91.58,-91.57,-91.56,-91.55,-91.54,-91.53,-91.52,-91.51,-91.5,-91.49,-91.48,-91.47,-91.46,-91.45,-91.44,-91.43,-91.42,-91.41,-91.4,-91.39,-91.38,-91.37,-91.36,-91.35,-91.34,-91.33,-91.32,-91.31,-91.3,-91.29,-91.28,-91.27,-91.26,-91.25,-91.24,-91.23,-91.22,-91.21,-91.2,-91.19,-91.18,-91.17,-91.16,-91.15,-91.14,-91.13,-91.12,-91.11,-91.1,-91.09,-91.08,-91.07,-91.06,-91.05,-91.04,-91.03,-91.02,-91.01,-91,-90.99,-90.98,-90.97,-90.96,-90.95,-90.94,-90.93,-90.92,-90.91,-90.9,-90.89,-90.88,-90.87,-90.86,-90.85,-90.84,-90.83,-90.82,-90.81,-90.8,-90.79,-90.78,-90.77,-90.76,-90.75,-90.74,-90.73,-90.72,-90.71,-90.7,-90.69,-90.68,-90.67,-90.66,-90.65,-90.64,-90.63,-90.62,-90.61,-90.6,-90.59,-90.58,-90.57,-90.56,-90.55,-90.54,-90.53,-90.52,-90.51,-90.5,-90.49,-90.48,-90.47,-90.46,-90.45,-90.44,-90.43,-90.42,-90.41,-90.4,-90.39,-90.38,-90.37,-90.36,-90.35,-90.34,-90.33,-90.32,-90.31,-90.3,-90.29,-90.28,-90.27,-90.26,-90.25,-90.24,-90.23,-90.22,-90.21,-90.2,-90.19,-90.18,-90.17,-90.16,-90.15,-90.14,-90.13,-90.12,-90.11,-90.1,-90.09,-90.08,-90.07,-90.06,-90.05,-90.04,-90.03,-90.02,-90.01,-90,-89.99,-89.98,-89.97,-89.96,-89.95,-89.94,-89.93,-89.92,-89.91,-89.9,-89.89,-89.88,-89.87,-89.86,-89.85,-89.84,-89.83,-89.82,-89.81,-89.8,-89.79,-89.78,-89.77,-89.76,-89.75,-89.74,-89.73,-89.72,-89.71,-89.7,-89.69,-89.68,-89.67,-89.66,-89.65,-89.64,-89.63,-89.62,-89.61,-89.6,-89.59,-89.58,-89.57,-89.56,-89.55,-89.54,-89.53,-89.52,-89.51,-89.5,-89.49,-89.48,-89.47,-89.46,-89.45,-89.44,-89.43,-89.42,-89.41,-89.4,-89.39,-89.38,-89.37,-89.36,-89.35,-89.34,-89.33,-89.32,-89.31,-89.3,-89.29,-89.28,-89.27,-89.26,-89.25,-89.24,-89.23,-89.22,-89.21,-89.2,-89.19,-89.18,-89.17,-89.16,-89.15,-89.14,-89.13,-89.12,-89.11,-89.1,-89.09,-89.08,-89.07,-89.06,-89.05,-89.04,-89.03,-89.02,-89.01,-89,-88.99,-88.98,-88.97,-88.96,-88.95,-88.94,-88.93,-88.92,-88.91,-88.9,-88.89,-88.88,-88.87,-88.86,-88.85,-88.84,-88.83,-88.82,-88.81,-88.8,-88.79,-88.78,-88.77,-88.76,-88.75,-88.74,-88.73,-88.72,-88.71,-88.7,-88.69,-88.68,-88.67,-88.66,-88.65,-88.64,-88.63,-88.62,-88.61,-88.6,-88.59,-88.58,-88.57,-88.56,-88.55,-88.54,-88.53,-88.52,-88.51,-88.5,-88.49,-88.48,-88.47,-88.46,-88.45,-88.44,-88.43,-88.42,-88.41,-88.4,-88.39,-88.38,-88.37,-88.36,-88.35,-88.34,-88.33,-88.32,-88.31,-88.3,-88.29,-88.28,-88.27,-88.26,-88.25,-88.24,-88.23,-88.22,-88.21,-88.2,-88.19,-88.18,-88.17,-88.16,-88.15,-88.14,-88.13,-88.12,-88.11,-88.1,-88.09,-88.08,-88.07,-88.06,-88.05,-88.04,-88.03,-88.02,-88.01,-88,-87.99,-87.98,-87.97,-87.96,-87.95,-87.94,-87.93,-87.92,-87.91,-87.9,-87.89,-87.88,-87.87,-87.86,-87.85,-87.84,-87.83,-87.82,-87.81,-87.8,-87.79,-87.78,-87.77,-87.76,-87.75,-87.74,-87.73,-87.72,-87.71,-87.7,-87.69,-87.68,-87.67,-87.66,-87.65,-87.64,-87.63,-87.62,-87.61,-87.6,-87.59,-87.58,-87.57,-87.56,-87.55,-87.54,-87.53,-87.52,-87.51,-87.5,-87.49,-87.48,-87.47,-87.46,-87.45,-87.44,-87.43,-87.42,-87.41,-87.4,-87.39,-87.38,-87.37,-87.36,-87.35,-87.34,-87.33,-87.32,-87.31,-87.3,-87.29,-87.28,-87.27,-87.26,-87.25,-87.24,-87.23,-87.22,-87.21,-87.2,-87.19,-87.18,-87.17,-87.16,-87.15,-87.14,-87.13,-87.12,-87.11,-87.1,-87.09,-87.08,-87.07,-87.06,-87.05,-87.04,-87.03,-87.02,-87.01,-87,-86.99,-86.98,-86.97,-86.96,-86.95,-86.94,-86.93,-86.92,-86.91,-86.9,-86.89,-86.88,-86.87,-86.86,-86.85,-86.84,-86.83,-86.82,-86.81,-86.8,-86.79,-86.78,-86.77,-86.76,-86.75,-86.74,-86.73,-86.72,-86.71,-86.7,-86.69,-86.68,-86.67,-86.66,-86.65,-86.64,-86.63,-86.62,-86.61,-86.6,-86.59,-86.58,-86.57,-86.56,-86.55,-86.54,-86.53,-86.52,-86.51,-86.5,-86.49,-86.48,-86.47,-86.46,-86.45,-86.44,-86.43,-86.42,-86.41,-86.4,-86.39,-86.38,-86.37,-86.36,-86.35,-86.34,-86.33,-86.32,-86.31,-86.3,-86.29,-86.28,-86.27,-86.26,-86.25,-86.24,-86.23,-86.22,-86.21,-86.2,-86.19,-86.18,-86.17,-86.16,-86.15,-86.14,-86.13,-86.12,-86.11,-86.1,-86.09,-86.08,-86.07,-86.06,-86.05,-86.04,-86.03,-86.02,-86.01,-86,-85.99,-85.98,-85.97,-85.96,-85.95,-85.94,-85.93,-85.92,-85.91,-85.9,-85.89,-85.88,-85.87,-85.86,-85.85,-85.84,-85.83,-85.82,-85.81,-85.8,-85.79,-85.78,-85.77,-85.76,-85.75,-85.74,-85.73,-85.72,-85.71,-85.7,-85.69,-85.68,-85.67,-85.66,-85.65,-85.64,-85.63,-85.62,-85.61,-85.6,-85.59,-85.58,-85.57,-85.56,-85.55,-85.54,-85.53,-85.52,-85.51,-85.5,-85.49,-85.48,-85.47,-85.46,-85.45,-85.44,-85.43,-85.42,-85.41,-85.4,-85.39,-85.38,-85.37,-85.36,-85.35,-85.34,-85.33,-85.32,-85.31,-85.3,-85.29,-85.28,-85.27,-85.26,-85.25,-85.24,-85.23,-85.22,-85.21,-85.2,-85.19,-85.18,-85.17,-85.16,-85.15,-85.14,-85.13,-85.12,-85.11,-85.1,-85.09,-85.08,-85.07,-85.06,-85.05,-85.04,-85.03,-85.02,-85.01,-85,-84.99,-84.98,-84.97,-84.96,-84.95,-84.94,-84.93,-84.92,-84.91,-84.9,-84.89,-84.88,-84.87,-84.86,-84.85,-84.84,-84.83,-84.82,-84.81,-84.8,-84.79,-84.78,-84.77,-84.76,-84.75,-84.74,-84.73,-84.72,-84.71,-84.7,-84.69,-84.68,-84.67,-84.66,-84.65,-84.64,-84.63,-84.62,-84.61,-84.6,-84.59,-84.58,-84.57,-84.56,-84.55,-84.54,-84.53,-84.52,-84.51,-84.5,-84.49,-84.48,-84.47,-84.46,-84.45,-84.44,-84.43,-84.42,-84.41,-84.4,-84.39,-84.38,-84.37,-84.36,-84.35,-84.34,-84.33,-84.32,-84.31,-84.3,-84.29,-84.28,-84.27,-84.26,-84.25,-84.24,-84.23,-84.22,-84.21,-84.2,-84.19,-84.18,-84.17,-84.16,-84.15,-84.14,-84.13,-84.12,-84.11,-84.1,-84.09,-84.08,-84.07,-84.06,-84.05,-84.04,-84.03,-84.02,-84.01,-84,-83.99,-83.98,-83.97,-83.96,-83.95,-83.94,-83.93,-83.92,-83.91,-83.9,-83.89,-83.88,-83.87,-83.86,-83.85,-83.84,-83.83,-83.82,-83.81,-83.8,-83.79,-83.78,-83.77,-83.76,-83.75,-83.74,-83.73,-83.72,-83.71,-83.7,-83.69,-83.68,-83.67,-83.66,-83.65,-83.64,-83.63,-83.62,-83.61,-83.6,-83.59,-83.58,-83.57,-83.56,-83.55,-83.54,-83.53,-83.52,-83.51,-83.5,-83.49,-83.48,-83.47,-83.46,-83.45,-83.44,-83.43,-83.42,-83.41,-83.4,-83.39,-83.38,-83.37,-83.36,-83.35,-83.34,-83.33,-83.32,-83.31,-83.3,-83.29,-83.28,-83.27,-83.26,-83.25,-83.24,-83.23,-83.22,-83.21,-83.2,-83.19,-83.18,-83.17,-83.16,-83.15,-83.14,-83.13,-83.12,-83.11,-83.1,-83.09,-83.08,-83.07,-83.06,-83.05,-83.04,-83.03,-83.02,-83.01,-83,-82.99,-82.98,-82.97,-82.96,-82.95,-82.94,-82.93,-82.92,-82.91,-82.9,-82.89,-82.88,-82.87,-82.86,-82.85,-82.84,-82.83,-82.82,-82.81,-82.8,-82.79,-82.78,-82.77,-82.76,-82.75,-82.74,-82.73,-82.72,-82.71,-82.7,-82.69,-82.68,-82.67,-82.66,-82.65,-82.64,-82.63,-82.62,-82.61,-82.6,-82.59,-82.58,-82.57,-82.56,-82.55,-82.54,-82.53,-82.52,-82.51,-82.5,-82.49,-82.48,-82.47,-82.46,-82.45,-82.44,-82.43,-82.42,-82.41,-82.4,-82.39,-82.38,-82.37,-82.36,-82.35,-82.34,-82.33,-82.32,-82.31,-82.3,-82.29,-82.28,-82.27,-82.26,-82.25,-82.24,-82.23,-82.22,-82.21,-82.2,-82.19,-82.18,-82.17,-82.16,-82.15,-82.14,-82.13,-82.12,-82.11,-82.1,-82.09,-82.08,-82.07,-82.06,-82.05,-82.04,-82.03,-82.02,-82.01,-82,-81.99,-81.98,-81.97,-81.96,-81.95,-81.94,-81.93,-81.92,-81.91,-81.9,-81.89,-81.88,-81.87,-81.86,-81.85,-81.84,-81.83,-81.82,-81.81,-81.8,-81.79,-81.78,-81.77,-81.76,-81.75,-81.74,-81.73,-81.72,-81.71,-81.7,-81.69,-81.68,-81.67,-81.66,-81.65,-81.64,-81.63,-81.62,-81.61,-81.6,-81.59,-81.58,-81.57,-81.56,-81.55,-81.54,-81.53,-81.52,-81.51,-81.5,-81.49,-81.48,-81.47,-81.46,-81.45,-81.44,-81.43,-81.42,-81.41,-81.4,-81.39,-81.38,-81.37,-81.36,-81.35,-81.34,-81.33,-81.32,-81.31,-81.3,-81.29,-81.28,-81.27,-81.26,-81.25,-81.24,-81.23,-81.22,-81.21,-81.2,-81.19,-81.18,-81.17,-81.16,-81.15,-81.14,-81.13,-81.12,-81.11,-81.1,-81.09,-81.08,-81.07,-81.06,-81.05,-81.04,-81.03,-81.02,-81.01,-81,-80.99,-80.98,-80.97,-80.96,-80.95,-80.94,-80.93,-80.92,-80.91,-80.9,-80.89,-80.88,-80.87,-80.86,-80.85,-80.84,-80.83,-80.82,-80.81,-80.8,-80.79,-80.78,-80.77,-80.76,-80.75,-80.74,-80.73,-80.72,-80.71,-80.7,-80.69,-80.68,-80.67,-80.66,-80.65,-80.64,-80.63,-80.62,-80.61,-80.6,-80.59,-80.58,-80.57,-80.56,-80.55,-80.54,-80.53,-80.52,-80.51,-80.5,-80.49,-80.48,-80.47,-80.46,-80.45,-80.44,-80.43,-80.42,-80.41,-80.4,-80.39,-80.38,-80.37,-80.36,-80.35,-80.34,-80.33,-80.32,-80.31,-80.3,-80.29,-80.28,-80.27,-80.26,-80.25,-80.24,-80.23,-80.22,-80.21,-80.2,-80.19,-80.18,-80.17,-80.16,-80.15,-80.14,-80.13,-80.12,-80.11,-80.1,-80.09,-80.08,-80.07,-80.06,-80.05,-80.04,-80.03,-80.02,-80.01,-80,-79.99,-79.98,-79.97,-79.96,-79.95,-79.94,-79.93,-79.92,-79.91,-79.9,-79.89,-79.88,-79.87,-79.86,-79.85,-79.84,-79.83,-79.82,-79.81,-79.8,-79.79,-79.78,-79.77,-79.76,-79.75,-79.74,-79.73,-79.72,-79.71,-79.7,-79.69,-79.68,-79.67,-79.66,-79.65,-79.64,-79.63,-79.62,-79.61,-79.6,-79.59,-79.58,-79.57,-79.56,-79.55,-79.54,-79.53,-79.52,-79.51,-79.5,-79.49,-79.48,-79.47,-79.46,-79.45,-79.44,-79.43,-79.42,-79.41,-79.4,-79.39,-79.38,-79.37,-79.36,-79.35,-79.34,-79.33,-79.32,-79.31,-79.3,-79.29,-79.28,-79.27,-79.26,-79.25,-79.24,-79.23,-79.22,-79.21,-79.2,-79.19,-79.18,-79.17,-79.16,-79.15,-79.14,-79.13,-79.12,-79.11,-79.1,-79.09,-79.08,-79.07,-79.06,-79.05,-79.04,-79.03,-79.02,-79.01,-79,-78.99,-78.98,-78.97,-78.96,-78.95,-78.94,-78.93,-78.92,-78.91,-78.9,-78.89,-78.88,-78.87,-78.86,-78.85,-78.84,-78.83,-78.82,-78.81,-78.8,-78.79,-78.78,-78.77,-78.76,-78.75,-78.74,-78.73,-78.72,-78.71,-78.7,-78.69,-78.68,-78.67,-78.66,-78.65,-78.64,-78.63,-78.62,-78.61,-78.6,-78.59,-78.58,-78.57,-78.56,-78.55,-78.54,-78.53,-78.52,-78.51,-78.5,-78.49,-78.48,-78.47,-78.46,-78.45,-78.44,-78.43,-78.42,-78.41,-78.4,-78.39,-78.38,-78.37,-78.36,-78.35,-78.34,-78.33,-78.32,-78.31,-78.3,-78.29,-78.28,-78.27,-78.26,-78.25,-78.24,-78.23,-78.22,-78.21,-78.2,-78.19,-78.18,-78.17,-78.16,-78.15,-78.14,-78.13,-78.12,-78.11,-78.1,-78.09,-78.08,-78.07,-78.06,-78.05,-78.04,-78.03,-78.02,-78.01,-78,-77.99,-77.98,-77.97,-77.96,-77.95,-77.94,-77.93,-77.92,-77.91,-77.9,-77.89,-77.88,-77.87,-77.86,-77.85,-77.84,-77.83,-77.82,-77.81,-77.8,-77.79,-77.78,-77.77,-77.76,-77.75,-77.74,-77.73,-77.72,-77.71,-77.7,-77.69,-77.68,-77.67,-77.66,-77.65,-77.64,-77.63,-77.62,-77.61,-77.6,-77.59,-77.58,-77.57,-77.56,-77.55,-77.54,-77.53,-77.52,-77.51,-77.5,-77.49,-77.48,-77.47,-77.46,-77.45,-77.44,-77.43,-77.42,-77.41,-77.4,-77.39,-77.38,-77.37,-77.36,-77.35,-77.34,-77.33,-77.32,-77.31,-77.3,-77.29,-77.28,-77.27,-77.26,-77.25,-77.24,-77.23,-77.22,-77.21,-77.2,-77.19,-77.18,-77.17,-77.16,-77.15,-77.14,-77.13,-77.12,-77.11,-77.1,-77.09,-77.08,-77.07,-77.06,-77.05,-77.04,-77.03,-77.02,-77.01,-77,-76.99,-76.98,-76.97,-76.96,-76.95,-76.94,-76.93,-76.92,-76.91,-76.9,-76.89,-76.88,-76.87,-76.86,-76.85,-76.84,-76.83,-76.82,-76.81,-76.8,-76.79,-76.78,-76.77,-76.76,-76.75,-76.74,-76.73,-76.72,-76.71,-76.7,-76.69,-76.68,-76.67,-76.66,-76.65,-76.64,-76.63,-76.62,-76.61,-76.6,-76.59,-76.58,-76.57,-76.56,-76.55,-76.54,-76.53,-76.52,-76.51,-76.5,-76.49,-76.48,-76.47,-76.46,-76.45,-76.44,-76.43,-76.42,-76.41,-76.4,-76.39,-76.38,-76.37,-76.36,-76.35,-76.34,-76.33,-76.32,-76.31,-76.3,-76.29,-76.28,-76.27,-76.26,-76.25,-76.24,-76.23,-76.22,-76.21,-76.2,-76.19,-76.18,-76.17,-76.16,-76.15,-76.14,-76.13,-76.12,-76.11,-76.1,-76.09,-76.08,-76.07,-76.06,-76.05,-76.04,-76.03,-76.02,-76.01,-76,-75.99,-75.98,-75.97,-75.96,-75.95,-75.94,-75.93,-75.92,-75.91,-75.9,-75.89,-75.88,-75.87,-75.86,-75.85,-75.84,-75.83,-75.82,-75.81,-75.8,-75.79,-75.78,-75.77,-75.76,-75.75,-75.74,-75.73,-75.72,-75.71,-75.7,-75.69,-75.68,-75.67,-75.66,-75.65,-75.64,-75.63,-75.62,-75.61,-75.6,-75.59,-75.58,-75.57,-75.56,-75.55,-75.54,-75.53,-75.52,-75.51,-75.5,-75.49,-75.48,-75.47,-75.46,-75.45,-75.44,-75.43,-75.42,-75.41,-75.4,-75.39,-75.38,-75.37,-75.36,-75.35,-75.34,-75.33,-75.32,-75.31,-75.3,-75.29,-75.28,-75.27,-75.26,-75.25,-75.24,-75.23,-75.22,-75.21,-75.2,-75.19,-75.18,-75.17,-75.16,-75.15,-75.14,-75.13,-75.12,-75.11,-75.1,-75.09,-75.08,-75.07,-75.06,-75.05,-75.04,-75.03,-75.02,-75.01,-75,-74.99,-74.98,-74.97,-74.96,-74.95,-74.94,-74.93,-74.92,-74.91,-74.9,-74.89,-74.88,-74.87,-74.86,-74.85,-74.84,-74.83,-74.82,-74.81,-74.8,-74.79,-74.78,-74.77,-74.76,-74.75,-74.74,-74.73,-74.72,-74.71,-74.7,-74.69,-74.68,-74.67,-74.66,-74.65,-74.64,-74.63,-74.62,-74.61,-74.6,-74.59,-74.58,-74.57,-74.56,-74.55,-74.54,-74.53,-74.52,-74.51,-74.5,-74.49,-74.48,-74.47,-74.46,-74.45,-74.44,-74.43,-74.42,-74.41,-74.4,-74.39,-74.38,-74.37,-74.36,-74.35,-74.34,-74.33,-74.32,-74.31,-74.3,-74.29,-74.28,-74.27,-74.26,-74.25,-74.24,-74.23,-74.22,-74.21,-74.2,-74.19,-74.18,-74.17,-74.16,-74.15,-74.14,-74.13,-74.12,-74.11,-74.1,-74.09,-74.08,-74.07,-74.06,-74.05,-74.04,-74.03,-74.02,-74.01,-74,-73.99,-73.98,-73.97,-73.96,-73.95,-73.94,-73.93,-73.92,-73.91,-73.9,-73.89,-73.88,-73.87,-73.86,-73.85,-73.84,-73.83,-73.82,-73.81,-73.8,-73.79,-73.78,-73.77,-73.76,-73.75,-73.74,-73.73,-73.72,-73.71,-73.7,-73.69,-73.68,-73.67,-73.66,-73.65,-73.64,-73.63,-73.62,-73.61,-73.6,-73.59,-73.58,-73.57,-73.56,-73.55,-73.54,-73.53,-73.52,-73.51,-73.5,-73.49,-73.48,-73.47,-73.46,-73.45,-73.44,-73.43,-73.42,-73.41,-73.4,-73.39,-73.38,-73.37,-73.36,-73.35,-73.34,-73.33,-73.32,-73.31,-73.3,-73.29,-73.28,-73.27,-73.26,-73.25,-73.24,-73.23,-73.22,-73.21,-73.2,-73.19,-73.18,-73.17,-73.16,-73.15,-73.14,-73.13,-73.12,-73.11,-73.1,-73.09,-73.08,-73.07,-73.06,-73.05,-73.04,-73.03,-73.02,-73.01,-73,-72.99,-72.98,-72.97,-72.96,-72.95,-72.94,-72.93,-72.92,-72.91,-72.9,-72.89,-72.88,-72.87,-72.86,-72.85,-72.84,-72.83,-72.82,-72.81,-72.8,-72.79,-72.78,-72.77,-72.76,-72.75,-72.74,-72.73,-72.72,-72.71,-72.7,-72.69,-72.68,-72.67,-72.66,-72.65,-72.64,-72.63,-72.62,-72.61,-72.6,-72.59,-72.58,-72.57,-72.56,-72.55,-72.54,-72.53,-72.52,-72.51,-72.5,-72.49,-72.48,-72.47,-72.46,-72.45,-72.44,-72.43,-72.42,-72.41,-72.4,-72.39,-72.38,-72.37,-72.36,-72.35,-72.34,-72.33,-72.32,-72.31,-72.3,-72.29,-72.28,-72.27,-72.26,-72.25,-72.24,-72.23,-72.22,-72.21,-72.2,-72.19,-72.18,-72.17,-72.16,-72.15,-72.14,-72.13,-72.12,-72.11,-72.1,-72.09,-72.08,-72.07,-72.06,-72.05,-72.04,-72.03,-72.02,-72.01,-72,-71.99,-71.98,-71.97,-71.96,-71.95,-71.94,-71.93,-71.92,-71.91,-71.9,-71.89,-71.88,-71.87,-71.86,-71.85,-71.84,-71.83,-71.82,-71.81,-71.8,-71.79,-71.78,-71.77,-71.76,-71.75,-71.74,-71.73,-71.72,-71.71,-71.7,-71.69,-71.68,-71.67,-71.66,-71.65,-71.64,-71.63,-71.62,-71.61,-71.6,-71.59,-71.58,-71.57,-71.56,-71.55,-71.54,-71.53,-71.52,-71.51,-71.5,-71.49,-71.48,-71.47,-71.46,-71.45,-71.44,-71.43,-71.42,-71.41,-71.4,-71.39,-71.38,-71.37,-71.36,-71.35,-71.34,-71.33,-71.32,-71.31,-71.3,-71.29,-71.28,-71.27,-71.26,-71.25,-71.24,-71.23,-71.22,-71.21,-71.2,-71.19,-71.18,-71.17,-71.16,-71.15,-71.14,-71.13,-71.12,-71.11,-71.1,-71.09,-71.08,-71.07,-71.06,-71.05,-71.04,-71.03,-71.02,-71.01,-71,-70.99,-70.98,-70.97,-70.96,-70.95,-70.94,-70.93,-70.92,-70.91,-70.9,-70.89,-70.88,-70.87,-70.86,-70.85,-70.84,-70.83,-70.82,-70.81,-70.8,-70.79,-70.78,-70.77,-70.76,-70.75,-70.74,-70.73,-70.72,-70.71,-70.7,-70.69,-70.68,-70.67,-70.66,-70.65,-70.64,-70.63,-70.62,-70.61,-70.6,-70.59,-70.58,-70.57,-70.56,-70.55,-70.54,-70.53,-70.52,-70.51,-70.5,-70.49,-70.48,-70.47,-70.46,-70.45,-70.44,-70.43,-70.42,-70.41,-70.4,-70.39,-70.38,-70.37,-70.36,-70.35,-70.34,-70.33,-70.32,-70.31,-70.3,-70.29,-70.28,-70.27,-70.26,-70.25,-70.24,-70.23,-70.22,-70.21,-70.2,-70.19,-70.18,-70.17,-70.16,-70.15,-70.14,-70.13,-70.12,-70.11,-70.1,-70.09,-70.08,-70.07,-70.06,-70.05,-70.04,-70.03,-70.02,-70.01,-70,-69.99,-69.98,-69.97,-69.96,-69.95,-69.94,-69.93,-69.92,-69.91,-69.9,-69.89,-69.88,-69.87,-69.86,-69.85,-69.84,-69.83,-69.82,-69.81,-69.8,-69.79,-69.78,-69.77,-69.76,-69.75,-69.74,-69.73,-69.72,-69.71,-69.7,-69.69,-69.68,-69.67,-69.66,-69.65,-69.64,-69.63,-69.62,-69.61,-69.6,-69.59,-69.58,-69.57,-69.56,-69.55,-69.54,-69.53,-69.52,-69.51,-69.5,-69.49,-69.48,-69.47,-69.46,-69.45,-69.44,-69.43,-69.42,-69.41,-69.4,-69.39,-69.38,-69.37,-69.36,-69.35,-69.34,-69.33,-69.32,-69.31,-69.3,-69.29,-69.28,-69.27,-69.26,-69.25,-69.24,-69.23,-69.22,-69.21,-69.2,-69.19,-69.18,-69.17,-69.16,-69.15,-69.14,-69.13,-69.12,-69.11,-69.1,-69.09,-69.08,-69.07,-69.06,-69.05,-69.04,-69.03,-69.02,-69.01,-69,-68.99,-68.98,-68.97,-68.96,-68.95,-68.94,-68.93,-68.92,-68.91,-68.9,-68.89,-68.88,-68.87,-68.86,-68.85,-68.84,-68.83,-68.82,-68.81,-68.8,-68.79,-68.78,-68.77,-68.76,-68.75,-68.74,-68.73,-68.72,-68.71,-68.7,-68.69,-68.68,-68.67,-68.66,-68.65,-68.64,-68.63,-68.62,-68.61,-68.6,-68.59,-68.58,-68.57,-68.56,-68.55,-68.54,-68.53,-68.52,-68.51,-68.5,-68.49,-68.48,-68.47,-68.46,-68.45,-68.44,-68.43,-68.42,-68.41,-68.4,-68.39,-68.38,-68.37,-68.36,-68.35,-68.34,-68.33,-68.32,-68.31,-68.3,-68.29,-68.28,-68.27,-68.26,-68.25,-68.24,-68.23,-68.22,-68.21,-68.2,-68.19,-68.18,-68.17,-68.16,-68.15,-68.14,-68.13,-68.12,-68.11,-68.1,-68.09,-68.08,-68.07,-68.06,-68.05,-68.04,-68.03,-68.02,-68.01,-68,-67.99,-67.98,-67.97,-67.96,-67.95,-67.94,-67.93,-67.92,-67.91,-67.9,-67.89,-67.88,-67.87,-67.86,-67.85,-67.84,-67.83,-67.82,-67.81,-67.8,-67.79,-67.78,-67.77,-67.76,-67.75,-67.74,-67.73,-67.72,-67.71,-67.7,-67.69,-67.68,-67.67,-67.66,-67.65,-67.64,-67.63,-67.62,-67.61,-67.6,-67.59,-67.58,-67.57,-67.56,-67.55,-67.54,-67.53,-67.52,-67.51,-67.5,-67.49,-67.48,-67.47,-67.46,-67.45,-67.44,-67.43,-67.42,-67.41,-67.4,-67.39,-67.38,-67.37,-67.36,-67.35,-67.34,-67.33,-67.32,-67.31,-67.3,-67.29,-67.28,-67.27,-67.26,-67.25,-67.24,-67.23,-67.22,-67.21,-67.2,-67.19,-67.18,-67.17,-67.16,-67.15,-67.14,-67.13,-67.12,-67.11,-67.1,-67.09,-67.08,-67.07,-67.06,-67.05,-67.04,-67.03,-67.02,-67.01,-67,-66.99,-66.98,-66.97,-66.96,-66.95,-66.94,-66.93,-66.92,-66.91,-66.9,-66.89,-66.88,-66.87,-66.86,-66.85,-66.84,-66.83,-66.82,-66.81,-66.8,-66.79,-66.78,-66.77,-66.76,-66.75,-66.74,-66.73,-66.72,-66.71,-66.7,-66.69,-66.68,-66.67,-66.66,-66.65,-66.64,-66.63,-66.62,-66.61,-66.6,-66.59,-66.58,-66.57,-66.56,-66.55,-66.54,-66.53,-66.52,-66.51,-66.5,-66.49,-66.48,-66.47,-66.46,-66.45,-66.44,-66.43,-66.42,-66.41,-66.4,-66.39,-66.38,-66.37,-66.36,-66.35,-66.34,-66.33,-66.32,-66.31,-66.3,-66.29,-66.28,-66.27,-66.26,-66.25,-66.24,-66.23,-66.22,-66.21,-66.2,-66.19,-66.18,-66.17,-66.16,-66.15,-66.14,-66.13,-66.12,-66.11,-66.1,-66.09,-66.08,-66.07,-66.06,-66.05,-66.04,-66.03,-66.02,-66.01,-66,-65.99,-65.98,-65.97,-65.96,-65.95,-65.94,-65.93,-65.92,-65.91,-65.9,-65.89,-65.88,-65.87,-65.86,-65.85,-65.84,-65.83,-65.82,-65.81,-65.8,-65.79,-65.78,-65.77,-65.76,-65.75,-65.74,-65.73,-65.72,-65.71,-65.7,-65.69,-65.68,-65.67,-65.66,-65.65,-65.64,-65.63,-65.62,-65.61,-65.6,-65.59,-65.58,-65.57,-65.56,-65.55,-65.54,-65.53,-65.52,-65.51,-65.5,-65.49,-65.48,-65.47,-65.46,-65.45,-65.44,-65.43,-65.42,-65.41,-65.4,-65.39,-65.38,-65.37,-65.36,-65.35,-65.34,-65.33,-65.32,-65.31,-65.3,-65.29,-65.28,-65.27,-65.26,-65.25,-65.24,-65.23,-65.22,-65.21,-65.2,-65.19,-65.18,-65.17,-65.16,-65.15,-65.14,-65.13,-65.12,-65.11,-65.1,-65.09,-65.08,-65.07,-65.06,-65.05,-65.04,-65.03,-65.02,-65.01,-65,-64.99,-64.98,-64.97,-64.96,-64.95,-64.94,-64.93,-64.92,-64.91,-64.9,-64.89,-64.88,-64.87,-64.86,-64.85,-64.84,-64.83,-64.82,-64.81,-64.8,-64.79,-64.78,-64.77,-64.76,-64.75,-64.74,-64.73,-64.72,-64.71,-64.7,-64.69,-64.68,-64.67,-64.66,-64.65,-64.64,-64.63,-64.62,-64.61,-64.6,-64.59,-64.58,-64.57,-64.56,-64.55,-64.54,-64.53,-64.52,-64.51,-64.5,-64.49,-64.48,-64.47,-64.46,-64.45,-64.44,-64.43,-64.42,-64.41,-64.4,-64.39,-64.38,-64.37,-64.36,-64.35,-64.34,-64.33,-64.32,-64.31,-64.3,-64.29,-64.28,-64.27,-64.26,-64.25,-64.24,-64.23,-64.22,-64.21,-64.2,-64.19,-64.18,-64.17,-64.16,-64.15,-64.14,-64.13,-64.12,-64.11,-64.1,-64.09,-64.08,-64.07,-64.06,-64.05,-64.04,-64.03,-64.02,-64.01,-64,-63.99,-63.98,-63.97,-63.96,-63.95,-63.94,-63.93,-63.92,-63.91,-63.9,-63.89,-63.88,-63.87,-63.86,-63.85,-63.84,-63.83,-63.82,-63.81,-63.8,-63.79,-63.78,-63.77,-63.76,-63.75,-63.74,-63.73,-63.72,-63.71,-63.7,-63.69,-63.68,-63.67,-63.66,-63.65,-63.64,-63.63,-63.62,-63.61,-63.6,-63.59,-63.58,-63.57,-63.56,-63.55,-63.54,-63.53,-63.52,-63.51,-63.5,-63.49,-63.48,-63.47,-63.46,-63.45,-63.44,-63.43,-63.42,-63.41,-63.4,-63.39,-63.38,-63.37,-63.36,-63.35,-63.34,-63.33,-63.32,-63.31,-63.3,-63.29,-63.28,-63.27,-63.26,-63.25,-63.24,-63.23,-63.22,-63.21,-63.2,-63.19,-63.18,-63.17,-63.16,-63.15,-63.14,-63.13,-63.12,-63.11,-63.1,-63.09,-63.08,-63.07,-63.06,-63.05,-63.04,-63.03,-63.02,-63.01,-63,-62.99,-62.98,-62.97,-62.96,-62.95,-62.94,-62.93,-62.92,-62.91,-62.9,-62.89,-62.88,-62.87,-62.86,-62.85,-62.84,-62.83,-62.82,-62.81,-62.8,-62.79,-62.78,-62.77,-62.76,-62.75,-62.74,-62.73,-62.72,-62.71,-62.7,-62.69,-62.68,-62.67,-62.66,-62.65,-62.64,-62.63,-62.62,-62.61,-62.6,-62.59,-62.58,-62.57,-62.56,-62.55,-62.54,-62.53,-62.52,-62.51,-62.5,-62.49,-62.48,-62.47,-62.46,-62.45,-62.44,-62.43,-62.42,-62.41,-62.4,-62.39,-62.38,-62.37,-62.36,-62.35,-62.34,-62.33,-62.32,-62.31,-62.3,-62.29,-62.28,-62.27,-62.26,-62.25,-62.24,-62.23,-62.22,-62.21,-62.2,-62.19,-62.18,-62.17,-62.16,-62.15,-62.14,-62.13,-62.12,-62.11,-62.1,-62.09,-62.08,-62.07,-62.06,-62.05,-62.04,-62.03,-62.02,-62.01,-62,-61.99,-61.98,-61.97,-61.96,-61.95,-61.94,-61.93,-61.92,-61.91,-61.9,-61.89,-61.88,-61.87,-61.86,-61.85,-61.84,-61.83,-61.82,-61.81,-61.8,-61.79,-61.78,-61.77,-61.76,-61.75,-61.74,-61.73,-61.72,-61.71,-61.7,-61.69,-61.68,-61.67,-61.66,-61.65,-61.64,-61.63,-61.62,-61.61,-61.6,-61.59,-61.58,-61.57,-61.56,-61.55,-61.54,-61.53,-61.52,-61.51,-61.5,-61.49,-61.48,-61.47,-61.46,-61.45,-61.44,-61.43,-61.42,-61.41,-61.4,-61.39,-61.38,-61.37,-61.36,-61.35,-61.34,-61.33,-61.32,-61.31,-61.3,-61.29,-61.28,-61.27,-61.26,-61.25,-61.24,-61.23,-61.22,-61.21,-61.2,-61.19,-61.18,-61.17,-61.16,-61.15,-61.14,-61.13,-61.12,-61.11,-61.1,-61.09,-61.08,-61.07,-61.06,-61.05,-61.04,-61.03,-61.02,-61.01,-61,-60.99,-60.98,-60.97,-60.96,-60.95,-60.94,-60.93,-60.92,-60.91,-60.9,-60.89,-60.88,-60.87,-60.86,-60.85,-60.84,-60.83,-60.82,-60.81,-60.8,-60.79,-60.78,-60.77,-60.76,-60.75,-60.74,-60.73,-60.72,-60.71,-60.7,-60.69,-60.68,-60.67,-60.66,-60.65,-60.64,-60.63,-60.62,-60.61,-60.6,-60.59,-60.58,-60.57,-60.56,-60.55,-60.54,-60.53,-60.52,-60.51,-60.5,-60.49,-60.48,-60.47,-60.46,-60.45,-60.44,-60.43,-60.42,-60.41,-60.4,-60.39,-60.38,-60.37,-60.36,-60.35,-60.34,-60.33,-60.32,-60.31,-60.3,-60.29,-60.28,-60.27,-60.26,-60.25,-60.24,-60.23,-60.22,-60.21,-60.2,-60.19,-60.18,-60.17,-60.16,-60.15,-60.14,-60.13,-60.12,-60.11,-60.1,-60.09,-60.08,-60.07,-60.06,-60.05,-60.04,-60.03,-60.02,-60.01,-60,-59.99,-59.98,-59.97,-59.96,-59.95,-59.94,-59.93,-59.92,-59.91,-59.9,-59.89,-59.88,-59.87,-59.86,-59.85,-59.84,-59.83,-59.82,-59.81,-59.8,-59.79,-59.78,-59.77,-59.76,-59.75,-59.74,-59.73,-59.72,-59.71,-59.7,-59.69,-59.68,-59.67,-59.66,-59.65,-59.64,-59.63,-59.62,-59.61,-59.6,-59.59,-59.58,-59.57,-59.56,-59.55,-59.54,-59.53,-59.52,-59.51,-59.5,-59.49,-59.48,-59.47,-59.46,-59.45,-59.44,-59.43,-59.42,-59.41,-59.4,-59.39,-59.38,-59.37,-59.36,-59.35,-59.34,-59.33,-59.32,-59.31,-59.3,-59.29,-59.28,-59.27,-59.26,-59.25,-59.24,-59.23,-59.22,-59.21,-59.2,-59.19,-59.18,-59.17,-59.16,-59.15,-59.14,-59.13,-59.12,-59.11,-59.1,-59.09,-59.08,-59.07,-59.06,-59.05,-59.04,-59.03,-59.02,-59.01,-59,-58.99,-58.98,-58.97,-58.96,-58.95,-58.94,-58.93,-58.92,-58.91,-58.9,-58.89,-58.88,-58.87,-58.86,-58.85,-58.84,-58.83,-58.82,-58.81,-58.8,-58.79,-58.78,-58.77,-58.76,-58.75,-58.74,-58.73,-58.72,-58.71,-58.7,-58.69,-58.68,-58.67,-58.66,-58.65,-58.64,-58.63,-58.62,-58.61,-58.6,-58.59,-58.58,-58.57,-58.56,-58.55,-58.54,-58.53,-58.52,-58.51,-58.5,-58.49,-58.48,-58.47,-58.46,-58.45,-58.44,-58.43,-58.42,-58.41,-58.4,-58.39,-58.38,-58.37,-58.36,-58.35,-58.34,-58.33,-58.32,-58.31,-58.3,-58.29,-58.28,-58.27,-58.26,-58.25,-58.24,-58.23,-58.22,-58.21,-58.2,-58.19,-58.18,-58.17,-58.16,-58.15,-58.14,-58.13,-58.12,-58.11,-58.1,-58.09,-58.08,-58.07,-58.06,-58.05,-58.04,-58.03,-58.02,-58.01,-58,-57.99,-57.98,-57.97,-57.96,-57.95,-57.94,-57.93,-57.92,-57.91,-57.9,-57.89,-57.88,-57.87,-57.86,-57.85,-57.84,-57.83,-57.82,-57.81,-57.8,-57.79,-57.78,-57.77,-57.76,-57.75,-57.74,-57.73,-57.72,-57.71,-57.7,-57.69,-57.68,-57.67,-57.66,-57.65,-57.64,-57.63,-57.62,-57.61,-57.6,-57.59,-57.58,-57.57,-57.56,-57.55,-57.54,-57.53,-57.52,-57.51,-57.5,-57.49,-57.48,-57.47,-57.46,-57.45,-57.44,-57.43,-57.42,-57.41,-57.4,-57.39,-57.38,-57.37,-57.36,-57.35,-57.34,-57.33,-57.32,-57.31,-57.3,-57.29,-57.28,-57.27,-57.26,-57.25,-57.24,-57.23,-57.22,-57.21,-57.2,-57.19,-57.18,-57.17,-57.16,-57.15,-57.14,-57.13,-57.12,-57.11,-57.1,-57.09,-57.08,-57.07,-57.06,-57.05,-57.04,-57.03,-57.02,-57.01,-57,-56.99,-56.98,-56.97,-56.96,-56.95,-56.94,-56.93,-56.92,-56.91,-56.9,-56.89,-56.88,-56.87,-56.86,-56.85,-56.84,-56.83,-56.82,-56.81,-56.8,-56.79,-56.78,-56.77,-56.76,-56.75,-56.74,-56.73,-56.72,-56.71,-56.7,-56.69,-56.68,-56.67,-56.66,-56.65,-56.64,-56.63,-56.62,-56.61,-56.6,-56.59,-56.58,-56.57,-56.56,-56.55,-56.54,-56.53,-56.52,-56.51,-56.5,-56.49,-56.48,-56.47,-56.46,-56.45,-56.44,-56.43,-56.42,-56.41,-56.4,-56.39,-56.38,-56.37,-56.36,-56.35,-56.34,-56.33,-56.32,-56.31,-56.3,-56.29,-56.28,-56.27,-56.26,-56.25,-56.24,-56.23,-56.22,-56.21,-56.2,-56.19,-56.18,-56.17,-56.16,-56.15,-56.14,-56.13,-56.12,-56.11,-56.1,-56.09,-56.08,-56.07,-56.06,-56.05,-56.04,-56.03,-56.02,-56.01,-56,-55.99,-55.98,-55.97,-55.96,-55.95,-55.94,-55.93,-55.92,-55.91,-55.9,-55.89,-55.88,-55.87,-55.86,-55.85,-55.84,-55.83,-55.82,-55.81,-55.8,-55.79,-55.78,-55.77,-55.76,-55.75,-55.74,-55.73,-55.72,-55.71,-55.7,-55.69,-55.68,-55.67,-55.66,-55.65,-55.64,-55.63,-55.62,-55.61,-55.6,-55.59,-55.58,-55.57,-55.56,-55.55,-55.54,-55.53,-55.52,-55.51,-55.5,-55.49,-55.48,-55.47,-55.46,-55.45,-55.44,-55.43,-55.42,-55.41,-55.4,-55.39,-55.38,-55.37,-55.36,-55.35,-55.34,-55.33,-55.32,-55.31,-55.3,-55.29,-55.28,-55.27,-55.26,-55.25,-55.24,-55.23,-55.22,-55.21,-55.2,-55.19,-55.18,-55.17,-55.16,-55.15,-55.14,-55.13,-55.12,-55.11,-55.1,-55.09,-55.08,-55.07,-55.06,-55.05,-55.04,-55.03,-55.02,-55.01,-55,-54.99,-54.98,-54.97,-54.96,-54.95,-54.94,-54.93,-54.92,-54.91,-54.9,-54.89,-54.88,-54.87,-54.86,-54.85,-54.84,-54.83,-54.82,-54.81,-54.8,-54.79,-54.78,-54.77,-54.76,-54.75,-54.74,-54.73,-54.72,-54.71,-54.7,-54.69,-54.68,-54.67,-54.66,-54.65,-54.64,-54.63,-54.62,-54.61,-54.6,-54.59,-54.58,-54.57,-54.56,-54.55,-54.54,-54.53,-54.52,-54.51,-54.5,-54.49,-54.48,-54.47,-54.46,-54.45,-54.44,-54.43,-54.42,-54.41,-54.4,-54.39,-54.38,-54.37,-54.36,-54.35,-54.34,-54.33,-54.32,-54.31,-54.3,-54.29,-54.28,-54.27,-54.26,-54.25,-54.24,-54.23,-54.22,-54.21,-54.2,-54.19,-54.18,-54.17,-54.16,-54.15,-54.14,-54.13,-54.12,-54.11,-54.1,-54.09,-54.08,-54.07,-54.06,-54.05,-54.04,-54.03,-54.02,-54.01,-54,-53.99,-53.98,-53.97,-53.96,-53.95,-53.94,-53.93,-53.92,-53.91,-53.9,-53.89,-53.88,-53.87,-53.86,-53.85,-53.84,-53.83,-53.82,-53.81,-53.8,-53.79,-53.78,-53.77,-53.76,-53.75,-53.74,-53.73,-53.72,-53.71,-53.7,-53.69,-53.68,-53.67,-53.66,-53.65,-53.64,-53.63,-53.62,-53.61,-53.6,-53.59,-53.58,-53.57,-53.56,-53.55,-53.54,-53.53,-53.52,-53.51,-53.5,-53.49,-53.48,-53.47,-53.46,-53.45,-53.44,-53.43,-53.42,-53.41,-53.4,-53.39,-53.38,-53.37,-53.36,-53.35,-53.34,-53.33,-53.32,-53.31,-53.3,-53.29,-53.28,-53.27,-53.26,-53.25,-53.24,-53.23,-53.22,-53.21,-53.2,-53.19,-53.18,-53.17,-53.16,-53.15,-53.14,-53.13,-53.12,-53.11,-53.1,-53.09,-53.08,-53.07,-53.06,-53.05,-53.04,-53.03,-53.02,-53.01,-53,-52.99,-52.98,-52.97,-52.96,-52.95,-52.94,-52.93,-52.92,-52.91,-52.9,-52.89,-52.88,-52.87,-52.86,-52.85,-52.84,-52.83,-52.82,-52.81,-52.8,-52.79,-52.78,-52.77,-52.76,-52.75,-52.74,-52.73,-52.72,-52.71,-52.7,-52.69,-52.68,-52.67,-52.66,-52.65,-52.64,-52.63,-52.62,-52.61,-52.6,-52.59,-52.58,-52.57,-52.56,-52.55,-52.54,-52.53,-52.52,-52.51,-52.5,-52.49,-52.48,-52.47,-52.46,-52.45,-52.44,-52.43,-52.42,-52.41,-52.4,-52.39,-52.38,-52.37,-52.36,-52.35,-52.34,-52.33,-52.32,-52.31,-52.3,-52.29,-52.28,-52.27,-52.26,-52.25,-52.24,-52.23,-52.22,-52.21,-52.2,-52.19,-52.18,-52.17,-52.16,-52.15,-52.14,-52.13,-52.12,-52.11,-52.1,-52.09,-52.08,-52.07,-52.06,-52.05,-52.04,-52.03,-52.02,-52.01,-52,-51.99,-51.98,-51.97,-51.96,-51.95,-51.94,-51.93,-51.92,-51.91,-51.9,-51.89,-51.88,-51.87,-51.86,-51.85,-51.84,-51.83,-51.82,-51.81,-51.8,-51.79,-51.78,-51.77,-51.76,-51.75,-51.74,-51.73,-51.72,-51.71,-51.7,-51.69,-51.68,-51.67,-51.66,-51.65,-51.64,-51.63,-51.62,-51.61,-51.6,-51.59,-51.58,-51.57,-51.56,-51.55,-51.54,-51.53,-51.52,-51.51,-51.5,-51.49,-51.48,-51.47,-51.46,-51.45,-51.44,-51.43,-51.42,-51.41,-51.4,-51.39,-51.38,-51.37,-51.36,-51.35,-51.34,-51.33,-51.32,-51.31,-51.3,-51.29,-51.28,-51.27,-51.26,-51.25,-51.24,-51.23,-51.22,-51.21,-51.2,-51.19,-51.18,-51.17,-51.16,-51.15,-51.14,-51.13,-51.12,-51.11,-51.1,-51.09,-51.08,-51.07,-51.06,-51.05,-51.04,-51.03,-51.02,-51.01,-51,-50.99,-50.98,-50.97,-50.96,-50.95,-50.94,-50.93,-50.92,-50.91,-50.9,-50.89,-50.88,-50.87,-50.86,-50.85,-50.84,-50.83,-50.82,-50.81,-50.8,-50.79,-50.78,-50.77,-50.76,-50.75,-50.74,-50.73,-50.72,-50.71,-50.7,-50.69,-50.68,-50.67,-50.66,-50.65,-50.64,-50.63,-50.62,-50.61,-50.6,-50.59,-50.58,-50.57,-50.56,-50.55,-50.54,-50.53,-50.52,-50.51,-50.5,-50.49,-50.48,-50.47,-50.46,-50.45,-50.44,-50.43,-50.42,-50.41,-50.4,-50.39,-50.38,-50.37,-50.36,-50.35,-50.34,-50.33,-50.32,-50.31,-50.3,-50.29,-50.28,-50.27,-50.26,-50.25,-50.24,-50.23,-50.22,-50.21,-50.2,-50.19,-50.18,-50.17,-50.16,-50.15,-50.14,-50.13,-50.12,-50.11,-50.1,-50.09,-50.08,-50.07,-50.06,-50.05,-50.04,-50.03,-50.02,-50.01,-50,-49.99,-49.98,-49.97,-49.96,-49.95,-49.94,-49.93,-49.92,-49.91,-49.9,-49.89,-49.88,-49.87,-49.86,-49.85,-49.84,-49.83,-49.82,-49.81,-49.8,-49.79,-49.78,-49.77,-49.76,-49.75,-49.74,-49.73,-49.72,-49.71,-49.7,-49.69,-49.68,-49.67,-49.66,-49.65,-49.64,-49.63,-49.62,-49.61,-49.6,-49.59,-49.58,-49.57,-49.56,-49.55,-49.54,-49.53,-49.52,-49.51,-49.5,-49.49,-49.48,-49.47,-49.46,-49.45,-49.44,-49.43,-49.42,-49.41,-49.4,-49.39,-49.38,-49.37,-49.36,-49.35,-49.34,-49.33,-49.32,-49.31,-49.3,-49.29,-49.28,-49.27,-49.26,-49.25,-49.24,-49.23,-49.22,-49.21,-49.2,-49.19,-49.18,-49.17,-49.16,-49.15,-49.14,-49.13,-49.12,-49.11,-49.1,-49.09,-49.08,-49.07,-49.06,-49.05,-49.04,-49.03,-49.02,-49.01,-49,-48.99,-48.98,-48.97,-48.96,-48.95,-48.94,-48.93,-48.92,-48.91,-48.9,-48.89,-48.88,-48.87,-48.86,-48.85,-48.84,-48.83,-48.82,-48.81,-48.8,-48.79,-48.78,-48.77,-48.76,-48.75,-48.74,-48.73,-48.72,-48.71,-48.7,-48.69,-48.68,-48.67,-48.66,-48.65,-48.64,-48.63,-48.62,-48.61,-48.6,-48.59,-48.58,-48.57,-48.56,-48.55,-48.54,-48.53,-48.52,-48.51,-48.5,-48.49,-48.48,-48.47,-48.46,-48.45,-48.44,-48.43,-48.42,-48.41,-48.4,-48.39,-48.38,-48.37,-48.36,-48.35,-48.34,-48.33,-48.32,-48.31,-48.3,-48.29,-48.28,-48.27,-48.26,-48.25,-48.24,-48.23,-48.22,-48.21,-48.2,-48.19,-48.18,-48.17,-48.16,-48.15,-48.14,-48.13,-48.12,-48.11,-48.1,-48.09,-48.08,-48.07,-48.06,-48.05,-48.04,-48.03,-48.02,-48.01,-48,-47.99,-47.98,-47.97,-47.96,-47.95,-47.94,-47.93,-47.92,-47.91,-47.9,-47.89,-47.88,-47.87,-47.86,-47.85,-47.84,-47.83,-47.82,-47.81,-47.8,-47.79,-47.78,-47.77,-47.76,-47.75,-47.74,-47.73,-47.72,-47.71,-47.7,-47.69,-47.68,-47.67,-47.66,-47.65,-47.64,-47.63,-47.62,-47.61,-47.6,-47.59,-47.58,-47.57,-47.56,-47.55,-47.54,-47.53,-47.52,-47.51,-47.5,-47.49,-47.48,-47.47,-47.46,-47.45,-47.44,-47.43,-47.42,-47.41,-47.4,-47.39,-47.38,-47.37,-47.36,-47.35,-47.34,-47.33,-47.32,-47.31,-47.3,-47.29,-47.28,-47.27,-47.26,-47.25,-47.24,-47.23,-47.22,-47.21,-47.2,-47.19,-47.18,-47.17,-47.16,-47.15,-47.14,-47.13,-47.12,-47.11,-47.1,-47.09,-47.08,-47.07,-47.06,-47.05,-47.04,-47.03,-47.02,-47.01,-47,-46.99,-46.98,-46.97,-46.96,-46.95,-46.94,-46.93,-46.92,-46.91,-46.9,-46.89,-46.88,-46.87,-46.86,-46.85,-46.84,-46.83,-46.82,-46.81,-46.8,-46.79,-46.78,-46.77,-46.76,-46.75,-46.74,-46.73,-46.72,-46.71,-46.7,-46.69,-46.68,-46.67,-46.66,-46.65,-46.64,-46.63,-46.62,-46.61,-46.6,-46.59,-46.58,-46.57,-46.56,-46.55,-46.54,-46.53,-46.52,-46.51,-46.5,-46.49,-46.48,-46.47,-46.46,-46.45,-46.44,-46.43,-46.42,-46.41,-46.4,-46.39,-46.38,-46.37,-46.36,-46.35,-46.34,-46.33,-46.32,-46.31,-46.3,-46.29,-46.28,-46.27,-46.26,-46.25,-46.24,-46.23,-46.22,-46.21,-46.2,-46.19,-46.18,-46.17,-46.16,-46.15,-46.14,-46.13,-46.12,-46.11,-46.1,-46.09,-46.08,-46.07,-46.06,-46.05,-46.04,-46.03,-46.02,-46.01,-46,-45.99,-45.98,-45.97,-45.96,-45.95,-45.94,-45.93,-45.92,-45.91,-45.9,-45.89,-45.88,-45.87,-45.86,-45.85,-45.84,-45.83,-45.82,-45.81,-45.8,-45.79,-45.78,-45.77,-45.76,-45.75,-45.74,-45.73,-45.72,-45.71,-45.7,-45.69,-45.68,-45.67,-45.66,-45.65,-45.64,-45.63,-45.62,-45.61,-45.6,-45.59,-45.58,-45.57,-45.56,-45.55,-45.54,-45.53,-45.52,-45.51,-45.5,-45.49,-45.48,-45.47,-45.46,-45.45,-45.44,-45.43,-45.42,-45.41,-45.4,-45.39,-45.38,-45.37,-45.36,-45.35,-45.34,-45.33,-45.32,-45.31,-45.3,-45.29,-45.28,-45.27,-45.26,-45.25,-45.24,-45.23,-45.22,-45.21,-45.2,-45.19,-45.18,-45.17,-45.16,-45.15,-45.14,-45.13,-45.12,-45.11,-45.1,-45.09,-45.08,-45.07,-45.06,-45.05,-45.04,-45.03,-45.02,-45.01,-45,-44.99,-44.98,-44.97,-44.96,-44.95,-44.94,-44.93,-44.92,-44.91,-44.9,-44.89,-44.88,-44.87,-44.86,-44.85,-44.84,-44.83,-44.82,-44.81,-44.8,-44.79,-44.78,-44.77,-44.76,-44.75,-44.74,-44.73,-44.72,-44.71,-44.7,-44.69,-44.68,-44.67,-44.66,-44.65,-44.64,-44.63,-44.62,-44.61,-44.6,-44.59,-44.58,-44.57,-44.56,-44.55,-44.54,-44.53,-44.52,-44.51,-44.5,-44.49,-44.48,-44.47,-44.46,-44.45,-44.44,-44.43,-44.42,-44.41,-44.4,-44.39,-44.38,-44.37,-44.36,-44.35,-44.34,-44.33,-44.32,-44.31,-44.3,-44.29,-44.28,-44.27,-44.26,-44.25,-44.24,-44.23,-44.22,-44.21,-44.2,-44.19,-44.18,-44.17,-44.16,-44.15,-44.14,-44.13,-44.12,-44.11,-44.1,-44.09,-44.08,-44.07,-44.06,-44.05,-44.04,-44.03,-44.02,-44.01,-44,-43.99,-43.98,-43.97,-43.96,-43.95,-43.94,-43.93,-43.92,-43.91,-43.9,-43.89,-43.88,-43.87,-43.86,-43.85,-43.84,-43.83,-43.82,-43.81,-43.8,-43.79,-43.78,-43.77,-43.76,-43.75,-43.74,-43.73,-43.72,-43.71,-43.7,-43.69,-43.68,-43.67,-43.66,-43.65,-43.64,-43.63,-43.62,-43.61,-43.6,-43.59,-43.58,-43.57,-43.56,-43.55,-43.54,-43.53,-43.52,-43.51,-43.5,-43.49,-43.48,-43.47,-43.46,-43.45,-43.44,-43.43,-43.42,-43.41,-43.4,-43.39,-43.38,-43.37,-43.36,-43.35,-43.34,-43.33,-43.32,-43.31,-43.3,-43.29,-43.28,-43.27,-43.26,-43.25,-43.24,-43.23,-43.22,-43.21,-43.2,-43.19,-43.18,-43.17,-43.16,-43.15,-43.14,-43.13,-43.12,-43.11,-43.1,-43.09,-43.08,-43.07,-43.06,-43.05,-43.04,-43.03,-43.02,-43.01,-43,-42.99,-42.98,-42.97,-42.96,-42.95,-42.94,-42.93,-42.92,-42.91,-42.9,-42.89,-42.88,-42.87,-42.86,-42.85,-42.84,-42.83,-42.82,-42.81,-42.8,-42.79,-42.78,-42.77,-42.76,-42.75,-42.74,-42.73,-42.72,-42.71,-42.7,-42.69,-42.68,-42.67,-42.66,-42.65,-42.64,-42.63,-42.62,-42.61,-42.6,-42.59,-42.58,-42.57,-42.56,-42.55,-42.54,-42.53,-42.52,-42.51,-42.5,-42.49,-42.48,-42.47,-42.46,-42.45,-42.44,-42.43,-42.42,-42.41,-42.4,-42.39,-42.38,-42.37,-42.36,-42.35,-42.34,-42.33,-42.32,-42.31,-42.3,-42.29,-42.28,-42.27,-42.26,-42.25,-42.24,-42.23,-42.22,-42.21,-42.2,-42.19,-42.18,-42.17,-42.16,-42.15,-42.14,-42.13,-42.12,-42.11,-42.1,-42.09,-42.08,-42.07,-42.06,-42.05,-42.04,-42.03,-42.02,-42.01,-42,-41.99,-41.98,-41.97,-41.96,-41.95,-41.94,-41.93,-41.92,-41.91,-41.9,-41.89,-41.88,-41.87,-41.86,-41.85,-41.84,-41.83,-41.82,-41.81,-41.8,-41.79,-41.78,-41.77,-41.76,-41.75,-41.74,-41.73,-41.72,-41.71,-41.7,-41.69,-41.68,-41.67,-41.66,-41.65,-41.64,-41.63,-41.62,-41.61,-41.6,-41.59,-41.58,-41.57,-41.56,-41.55,-41.54,-41.53,-41.52,-41.51,-41.5,-41.49,-41.48,-41.47,-41.46,-41.45,-41.44,-41.43,-41.42,-41.41,-41.4,-41.39,-41.38,-41.37,-41.36,-41.35,-41.34,-41.33,-41.32,-41.31,-41.3,-41.29,-41.28,-41.27,-41.26,-41.25,-41.24,-41.23,-41.22,-41.21,-41.2,-41.19,-41.18,-41.17,-41.16,-41.15,-41.14,-41.13,-41.12,-41.11,-41.1,-41.09,-41.08,-41.07,-41.06,-41.05,-41.04,-41.03,-41.02,-41.01,-41,-40.99,-40.98,-40.97,-40.96,-40.95,-40.94,-40.93,-40.92,-40.91,-40.9,-40.89,-40.88,-40.87,-40.86,-40.85,-40.84,-40.83,-40.82,-40.81,-40.8,-40.79,-40.78,-40.77,-40.76,-40.75,-40.74,-40.73,-40.72,-40.71,-40.7,-40.69,-40.68,-40.67,-40.66,-40.65,-40.64,-40.63,-40.62,-40.61,-40.6,-40.59,-40.58,-40.57,-40.56,-40.55,-40.54,-40.53,-40.52,-40.51,-40.5,-40.49,-40.48,-40.47,-40.46,-40.45,-40.44,-40.43,-40.42,-40.41,-40.4,-40.39,-40.38,-40.37,-40.36,-40.35,-40.34,-40.33,-40.32,-40.31,-40.3,-40.29,-40.28,-40.27,-40.26,-40.25,-40.24,-40.23,-40.22,-40.21,-40.2,-40.19,-40.18,-40.17,-40.16,-40.15,-40.14,-40.13,-40.12,-40.11,-40.1,-40.09,-40.08,-40.07,-40.06,-40.05,-40.04,-40.03,-40.02,-40.01,-40,-39.99,-39.98,-39.97,-39.96,-39.95,-39.94,-39.93,-39.92,-39.91,-39.9,-39.89,-39.88,-39.87,-39.86,-39.85,-39.84,-39.83,-39.82,-39.81,-39.8,-39.79,-39.78,-39.77,-39.76,-39.75,-39.74,-39.73,-39.72,-39.71,-39.7,-39.69,-39.68,-39.67,-39.66,-39.65,-39.64,-39.63,-39.62,-39.61,-39.6,-39.59,-39.58,-39.57,-39.56,-39.55,-39.54,-39.53,-39.52,-39.51,-39.5,-39.49,-39.48,-39.47,-39.46,-39.45,-39.44,-39.43,-39.42,-39.41,-39.4,-39.39,-39.38,-39.37,-39.36,-39.35,-39.34,-39.33,-39.32,-39.31,-39.3,-39.29,-39.28,-39.27,-39.26,-39.25,-39.24,-39.23,-39.22,-39.21,-39.2,-39.19,-39.18,-39.17,-39.16,-39.15,-39.14,-39.13,-39.12,-39.11,-39.1,-39.09,-39.08,-39.07,-39.06,-39.05,-39.04,-39.03,-39.02,-39.01,-39,-38.99,-38.98,-38.97,-38.96,-38.95,-38.94,-38.93,-38.92,-38.91,-38.9,-38.89,-38.88,-38.87,-38.86,-38.85,-38.84,-38.83,-38.82,-38.81,-38.8,-38.79,-38.78,-38.77,-38.76,-38.75,-38.74,-38.73,-38.72,-38.71,-38.7,-38.69,-38.68,-38.67,-38.66,-38.65,-38.64,-38.63,-38.62,-38.61,-38.6,-38.59,-38.58,-38.57,-38.56,-38.55,-38.54,-38.53,-38.52,-38.51,-38.5,-38.49,-38.48,-38.47,-38.46,-38.45,-38.44,-38.43,-38.42,-38.41,-38.4,-38.39,-38.38,-38.37,-38.36,-38.35,-38.34,-38.33,-38.32,-38.31,-38.3,-38.29,-38.28,-38.27,-38.26,-38.25,-38.24,-38.23,-38.22,-38.21,-38.2,-38.19,-38.18,-38.17,-38.16,-38.15,-38.14,-38.13,-38.12,-38.11,-38.1,-38.09,-38.08,-38.07,-38.06,-38.05,-38.04,-38.03,-38.02,-38.01,-38,-37.99,-37.98,-37.97,-37.96,-37.95,-37.94,-37.93,-37.92,-37.91,-37.9,-37.89,-37.88,-37.87,-37.86,-37.85,-37.84,-37.83,-37.82,-37.81,-37.8,-37.79,-37.78,-37.77,-37.76,-37.75,-37.74,-37.73,-37.72,-37.71,-37.7,-37.69,-37.68,-37.67,-37.66,-37.65,-37.64,-37.63,-37.62,-37.61,-37.6,-37.59,-37.58,-37.57,-37.56,-37.55,-37.54,-37.53,-37.52,-37.51,-37.5,-37.49,-37.48,-37.47,-37.46,-37.45,-37.44,-37.43,-37.42,-37.41,-37.4,-37.39,-37.38,-37.37,-37.36,-37.35,-37.34,-37.33,-37.32,-37.31,-37.3,-37.29,-37.28,-37.27,-37.26,-37.25,-37.24,-37.23,-37.22,-37.21,-37.2,-37.19,-37.18,-37.17,-37.16,-37.15,-37.14,-37.13,-37.12,-37.11,-37.1,-37.09,-37.08,-37.07,-37.06,-37.05,-37.04,-37.03,-37.02,-37.01,-37,-36.99,-36.98,-36.97,-36.96,-36.95,-36.94,-36.93,-36.92,-36.91,-36.9,-36.89,-36.88,-36.87,-36.86,-36.85,-36.84,-36.83,-36.82,-36.81,-36.8,-36.79,-36.78,-36.77,-36.76,-36.75,-36.74,-36.73,-36.72,-36.71,-36.7,-36.69,-36.68,-36.67,-36.66,-36.65,-36.64,-36.63,-36.62,-36.61,-36.6,-36.59,-36.58,-36.57,-36.56,-36.55,-36.54,-36.53,-36.52,-36.51,-36.5,-36.49,-36.48,-36.47,-36.46,-36.45,-36.44,-36.43,-36.42,-36.41,-36.4,-36.39,-36.38,-36.37,-36.36,-36.35,-36.34,-36.33,-36.32,-36.31,-36.3,-36.29,-36.28,-36.27,-36.26,-36.25,-36.24,-36.23,-36.22,-36.21,-36.2,-36.19,-36.18,-36.17,-36.16,-36.15,-36.14,-36.13,-36.12,-36.11,-36.1,-36.09,-36.08,-36.07,-36.06,-36.05,-36.04,-36.03,-36.02,-36.01,-36,-35.99,-35.98,-35.97,-35.96,-35.95,-35.94,-35.93,-35.92,-35.91,-35.9,-35.89,-35.88,-35.87,-35.86,-35.85,-35.84,-35.83,-35.82,-35.81,-35.8,-35.79,-35.78,-35.77,-35.76,-35.75,-35.74,-35.73,-35.72,-35.71,-35.7,-35.69,-35.68,-35.67,-35.66,-35.65,-35.64,-35.63,-35.62,-35.61,-35.6,-35.59,-35.58,-35.57,-35.56,-35.55,-35.54,-35.53,-35.52,-35.51,-35.5,-35.49,-35.48,-35.47,-35.46,-35.45,-35.44,-35.43,-35.42,-35.41,-35.4,-35.39,-35.38,-35.37,-35.36,-35.35,-35.34,-35.33,-35.32,-35.31,-35.3,-35.29,-35.28,-35.27,-35.26,-35.25,-35.24,-35.23,-35.22,-35.21,-35.2,-35.19,-35.18,-35.17,-35.16,-35.15,-35.14,-35.13,-35.12,-35.11,-35.1,-35.09,-35.08,-35.07,-35.06,-35.05,-35.04,-35.03,-35.02,-35.01,-35,-34.99,-34.98,-34.97,-34.96,-34.95,-34.94,-34.93,-34.92,-34.91,-34.9,-34.89,-34.88,-34.87,-34.86,-34.85,-34.84,-34.83,-34.82,-34.81,-34.8,-34.79,-34.78,-34.77,-34.76,-34.75,-34.74,-34.73,-34.72,-34.71,-34.7,-34.69,-34.68,-34.67,-34.66,-34.65,-34.64,-34.63,-34.62,-34.61,-34.6,-34.59,-34.58,-34.57,-34.56,-34.55,-34.54,-34.53,-34.52,-34.51,-34.5,-34.49,-34.48,-34.47,-34.46,-34.45,-34.44,-34.43,-34.42,-34.41,-34.4,-34.39,-34.38,-34.37,-34.36,-34.35,-34.34,-34.33,-34.32,-34.31,-34.3,-34.29,-34.28,-34.27,-34.26,-34.25,-34.24,-34.23,-34.22,-34.21,-34.2,-34.19,-34.18,-34.17,-34.16,-34.15,-34.14,-34.13,-34.12,-34.11,-34.1,-34.09,-34.08,-34.07,-34.06,-34.05,-34.04,-34.03,-34.02,-34.01,-34,-33.99,-33.98,-33.97,-33.96,-33.95,-33.94,-33.93,-33.92,-33.91,-33.9,-33.89,-33.88,-33.87,-33.86,-33.85,-33.84,-33.83,-33.82,-33.81,-33.8,-33.79,-33.78,-33.77,-33.76,-33.75,-33.74,-33.73,-33.72,-33.71,-33.7,-33.69,-33.68,-33.67,-33.66,-33.65,-33.64,-33.63,-33.62,-33.61,-33.6,-33.59,-33.58,-33.57,-33.56,-33.55,-33.54,-33.53,-33.52,-33.51,-33.5,-33.49,-33.48,-33.47,-33.46,-33.45,-33.44,-33.43,-33.42,-33.41,-33.4,-33.39,-33.38,-33.37,-33.36,-33.35,-33.34,-33.33,-33.32,-33.31,-33.3,-33.29,-33.28,-33.27,-33.26,-33.25,-33.24,-33.23,-33.22,-33.21,-33.2,-33.19,-33.18,-33.17,-33.16,-33.15,-33.14,-33.13,-33.12,-33.11,-33.1,-33.09,-33.08,-33.07,-33.06,-33.05,-33.04,-33.03,-33.02,-33.01,-33,-32.99,-32.98,-32.97,-32.96,-32.95,-32.94,-32.93,-32.92,-32.91,-32.9,-32.89,-32.88,-32.87,-32.86,-32.85,-32.84,-32.83,-32.82,-32.81,-32.8,-32.79,-32.78,-32.77,-32.76,-32.75,-32.74,-32.73,-32.72,-32.71,-32.7,-32.69,-32.68,-32.67,-32.66,-32.65,-32.64,-32.63,-32.62,-32.61,-32.6,-32.59,-32.58,-32.57,-32.56,-32.55,-32.54,-32.53,-32.52,-32.51,-32.5,-32.49,-32.48,-32.47,-32.46,-32.45,-32.44,-32.43,-32.42,-32.41,-32.4,-32.39,-32.38,-32.37,-32.36,-32.35,-32.34,-32.33,-32.32,-32.31,-32.3,-32.29,-32.28,-32.27,-32.26,-32.25,-32.24,-32.23,-32.22,-32.21,-32.2,-32.19,-32.18,-32.17,-32.16,-32.15,-32.14,-32.13,-32.12,-32.11,-32.1,-32.09,-32.08,-32.07,-32.06,-32.05,-32.04,-32.03,-32.02,-32.01,-32,-31.99,-31.98,-31.97,-31.96,-31.95,-31.94,-31.93,-31.92,-31.91,-31.9,-31.89,-31.88,-31.87,-31.86,-31.85,-31.84,-31.83,-31.82,-31.81,-31.8,-31.79,-31.78,-31.77,-31.76,-31.75,-31.74,-31.73,-31.72,-31.71,-31.7,-31.69,-31.68,-31.67,-31.66,-31.65,-31.64,-31.63,-31.62,-31.61,-31.6,-31.59,-31.58,-31.57,-31.56,-31.55,-31.54,-31.53,-31.52,-31.51,-31.5,-31.49,-31.48,-31.47,-31.46,-31.45,-31.44,-31.43,-31.42,-31.41,-31.4,-31.39,-31.38,-31.37,-31.36,-31.35,-31.34,-31.33,-31.32,-31.31,-31.3,-31.29,-31.28,-31.27,-31.26,-31.25,-31.24,-31.23,-31.22,-31.21,-31.2,-31.19,-31.18,-31.17,-31.16,-31.15,-31.14,-31.13,-31.12,-31.11,-31.1,-31.09,-31.08,-31.07,-31.06,-31.05,-31.04,-31.03,-31.02,-31.01,-31,-30.99,-30.98,-30.97,-30.96,-30.95,-30.94,-30.93,-30.92,-30.91,-30.9,-30.89,-30.88,-30.87,-30.86,-30.85,-30.84,-30.83,-30.82,-30.81,-30.8,-30.79,-30.78,-30.77,-30.76,-30.75,-30.74,-30.73,-30.72,-30.71,-30.7,-30.69,-30.68,-30.67,-30.66,-30.65,-30.64,-30.63,-30.62,-30.61,-30.6,-30.59,-30.58,-30.57,-30.56,-30.55,-30.54,-30.53,-30.52,-30.51,-30.5,-30.49,-30.48,-30.47,-30.46,-30.45,-30.44,-30.43,-30.42,-30.41,-30.4,-30.39,-30.38,-30.37,-30.36,-30.35,-30.34,-30.33,-30.32,-30.31,-30.3,-30.29,-30.28,-30.27,-30.26,-30.25,-30.24,-30.23,-30.22,-30.21,-30.2,-30.19,-30.18,-30.17,-30.16,-30.15,-30.14,-30.13,-30.12,-30.11,-30.1,-30.09,-30.08,-30.07,-30.06,-30.05,-30.04,-30.03,-30.02,-30.01,-30,-29.99,-29.98,-29.97,-29.96,-29.95,-29.94,-29.93,-29.92,-29.91,-29.9,-29.89,-29.88,-29.87,-29.86,-29.85,-29.84,-29.83,-29.82,-29.81,-29.8,-29.79,-29.78,-29.77,-29.76,-29.75,-29.74,-29.73,-29.72,-29.71,-29.7,-29.69,-29.68,-29.67,-29.66,-29.65,-29.64,-29.63,-29.62,-29.61,-29.6,-29.59,-29.58,-29.57,-29.56,-29.55,-29.54,-29.53,-29.52,-29.51,-29.5,-29.49,-29.48,-29.47,-29.46,-29.45,-29.44,-29.43,-29.42,-29.41,-29.4,-29.39,-29.38,-29.37,-29.36,-29.35,-29.34,-29.33,-29.32,-29.31,-29.3,-29.29,-29.28,-29.27,-29.26,-29.25,-29.24,-29.23,-29.22,-29.21,-29.2,-29.19,-29.18,-29.17,-29.16,-29.15,-29.14,-29.13,-29.12,-29.11,-29.1,-29.09,-29.08,-29.07,-29.06,-29.05,-29.04,-29.03,-29.02,-29.01,-29,-28.99,-28.98,-28.97,-28.96,-28.95,-28.94,-28.93,-28.92,-28.91,-28.9,-28.89,-28.88,-28.87,-28.86,-28.85,-28.84,-28.83,-28.82,-28.81,-28.8,-28.79,-28.78,-28.77,-28.76,-28.75,-28.74,-28.73,-28.72,-28.71,-28.7,-28.69,-28.68,-28.67,-28.66,-28.65,-28.64,-28.63,-28.62,-28.61,-28.6,-28.59,-28.58,-28.57,-28.56,-28.55,-28.54,-28.53,-28.52,-28.51,-28.5,-28.49,-28.48,-28.47,-28.46,-28.45,-28.44,-28.43,-28.42,-28.41,-28.4,-28.39,-28.38,-28.37,-28.36,-28.35,-28.34,-28.33,-28.32,-28.31,-28.3,-28.29,-28.28,-28.27,-28.26,-28.25,-28.24,-28.23,-28.22,-28.21,-28.2,-28.19,-28.18,-28.17,-28.16,-28.15,-28.14,-28.13,-28.12,-28.11,-28.1,-28.09,-28.08,-28.07,-28.06,-28.05,-28.04,-28.03,-28.02,-28.01,-28,-27.99,-27.98,-27.97,-27.96,-27.95,-27.94,-27.93,-27.92,-27.91,-27.9,-27.89,-27.88,-27.87,-27.86,-27.85,-27.84,-27.83,-27.82,-27.81,-27.8,-27.79,-27.78,-27.77,-27.76,-27.75,-27.74,-27.73,-27.72,-27.71,-27.7,-27.69,-27.68,-27.67,-27.66,-27.65,-27.64,-27.63,-27.62,-27.61,-27.6,-27.59,-27.58,-27.57,-27.56,-27.55,-27.54,-27.53,-27.52,-27.51,-27.5,-27.49,-27.48,-27.47,-27.46,-27.45,-27.44,-27.43,-27.42,-27.41,-27.4,-27.39,-27.38,-27.37,-27.36,-27.35,-27.34,-27.33,-27.32,-27.31,-27.3,-27.29,-27.28,-27.27,-27.26,-27.25,-27.24,-27.23,-27.22,-27.21,-27.2,-27.19,-27.18,-27.17,-27.16,-27.15,-27.14,-27.13,-27.12,-27.11,-27.1,-27.09,-27.08,-27.07,-27.06,-27.05,-27.04,-27.03,-27.02,-27.01,-27,-26.99,-26.98,-26.97,-26.96,-26.95,-26.94,-26.93,-26.92,-26.91,-26.9,-26.89,-26.88,-26.87,-26.86,-26.85,-26.84,-26.83,-26.82,-26.81,-26.8,-26.79,-26.78,-26.77,-26.76,-26.75,-26.74,-26.73,-26.72,-26.71,-26.7,-26.69,-26.68,-26.67,-26.66,-26.65,-26.64,-26.63,-26.62,-26.61,-26.6,-26.59,-26.58,-26.57,-26.56,-26.55,-26.54,-26.53,-26.52,-26.51,-26.5,-26.49,-26.48,-26.47,-26.46,-26.45,-26.44,-26.43,-26.42,-26.41,-26.4,-26.39,-26.38,-26.37,-26.36,-26.35,-26.34,-26.33,-26.32,-26.31,-26.3,-26.29,-26.28,-26.27,-26.26,-26.25,-26.24,-26.23,-26.22,-26.21,-26.2,-26.19,-26.18,-26.17,-26.16,-26.15,-26.14,-26.13,-26.12,-26.11,-26.1,-26.09,-26.08,-26.07,-26.06,-26.05,-26.04,-26.03,-26.02,-26.01,-26,-25.99,-25.98,-25.97,-25.96,-25.95,-25.94,-25.93,-25.92,-25.91,-25.9,-25.89,-25.88,-25.87,-25.86,-25.85,-25.84,-25.83,-25.82,-25.81,-25.8,-25.79,-25.78,-25.77,-25.76,-25.75,-25.74,-25.73,-25.72,-25.71,-25.7,-25.69,-25.68,-25.67,-25.66,-25.65,-25.64,-25.63,-25.62,-25.61,-25.6,-25.59,-25.58,-25.57,-25.56,-25.55,-25.54,-25.53,-25.52,-25.51,-25.5,-25.49,-25.48,-25.47,-25.46,-25.45,-25.44,-25.43,-25.42,-25.41,-25.4,-25.39,-25.38,-25.37,-25.36,-25.35,-25.34,-25.33,-25.32,-25.31,-25.3,-25.29,-25.28,-25.27,-25.26,-25.25,-25.24,-25.23,-25.22,-25.21,-25.2,-25.19,-25.18,-25.17,-25.16,-25.15,-25.14,-25.13,-25.12,-25.11,-25.1,-25.09,-25.08,-25.07,-25.06,-25.05,-25.04,-25.03,-25.02,-25.01,-25,-24.99,-24.98,-24.97,-24.96,-24.95,-24.94,-24.93,-24.92,-24.91,-24.9,-24.89,-24.88,-24.87,-24.86,-24.85,-24.84,-24.83,-24.82,-24.81,-24.8,-24.79,-24.78,-24.77,-24.76,-24.75,-24.74,-24.73,-24.72,-24.71,-24.7,-24.69,-24.68,-24.67,-24.66,-24.65,-24.64,-24.63,-24.62,-24.61,-24.6,-24.59,-24.58,-24.57,-24.56,-24.55,-24.54,-24.53,-24.52,-24.51,-24.5,-24.49,-24.48,-24.47,-24.46,-24.45,-24.44,-24.43,-24.42,-24.41,-24.4,-24.39,-24.38,-24.37,-24.36,-24.35,-24.34,-24.33,-24.32,-24.31,-24.3,-24.29,-24.28,-24.27,-24.26,-24.25,-24.24,-24.23,-24.22,-24.21,-24.2,-24.19,-24.18,-24.17,-24.16,-24.15,-24.14,-24.13,-24.12,-24.11,-24.1,-24.09,-24.08,-24.07,-24.06,-24.05,-24.04,-24.03,-24.02,-24.01,-24,-23.99,-23.98,-23.97,-23.96,-23.95,-23.94,-23.93,-23.92,-23.91,-23.9,-23.89,-23.88,-23.87,-23.86,-23.85,-23.84,-23.83,-23.82,-23.81,-23.8,-23.79,-23.78,-23.77,-23.76,-23.75,-23.74,-23.73,-23.72,-23.71,-23.7,-23.69,-23.68,-23.67,-23.66,-23.65,-23.64,-23.63,-23.62,-23.61,-23.6,-23.59,-23.58,-23.57,-23.56,-23.55,-23.54,-23.53,-23.52,-23.51,-23.5,-23.49,-23.48,-23.47,-23.46,-23.45,-23.44,-23.43,-23.42,-23.41,-23.4,-23.39,-23.38,-23.37,-23.36,-23.35,-23.34,-23.33,-23.32,-23.31,-23.3,-23.29,-23.28,-23.27,-23.26,-23.25,-23.24,-23.23,-23.22,-23.21,-23.2,-23.19,-23.18,-23.17,-23.16,-23.15,-23.14,-23.13,-23.12,-23.11,-23.1,-23.09,-23.08,-23.07,-23.06,-23.05,-23.04,-23.03,-23.02,-23.01,-23,-22.99,-22.98,-22.97,-22.96,-22.95,-22.94,-22.93,-22.92,-22.91,-22.9,-22.89,-22.88,-22.87,-22.86,-22.85,-22.84,-22.83,-22.82,-22.81,-22.8,-22.79,-22.78,-22.77,-22.76,-22.75,-22.74,-22.73,-22.72,-22.71,-22.7,-22.69,-22.68,-22.67,-22.66,-22.65,-22.64,-22.63,-22.62,-22.61,-22.6,-22.59,-22.58,-22.57,-22.56,-22.55,-22.54,-22.53,-22.52,-22.51,-22.5,-22.49,-22.48,-22.47,-22.46,-22.45,-22.44,-22.43,-22.42,-22.41,-22.4,-22.39,-22.38,-22.37,-22.36,-22.35,-22.34,-22.33,-22.32,-22.31,-22.3,-22.29,-22.28,-22.27,-22.26,-22.25,-22.24,-22.23,-22.22,-22.21,-22.2,-22.19,-22.18,-22.17,-22.16,-22.15,-22.14,-22.13,-22.12,-22.11,-22.1,-22.09,-22.08,-22.07,-22.06,-22.05,-22.04,-22.03,-22.02,-22.01,-22,-21.99,-21.98,-21.97,-21.96,-21.95,-21.94,-21.93,-21.92,-21.91,-21.9,-21.89,-21.88,-21.87,-21.86,-21.85,-21.84,-21.83,-21.82,-21.81,-21.8,-21.79,-21.78,-21.77,-21.76,-21.75,-21.74,-21.73,-21.72,-21.71,-21.7,-21.69,-21.68,-21.67,-21.66,-21.65,-21.64,-21.63,-21.62,-21.61,-21.6,-21.59,-21.58,-21.57,-21.56,-21.55,-21.54,-21.53,-21.52,-21.51,-21.5,-21.49,-21.48,-21.47,-21.46,-21.45,-21.44,-21.43,-21.42,-21.41,-21.4,-21.39,-21.38,-21.37,-21.36,-21.35,-21.34,-21.33,-21.32,-21.31,-21.3,-21.29,-21.28,-21.27,-21.26,-21.25,-21.24,-21.23,-21.22,-21.21,-21.2,-21.19,-21.18,-21.17,-21.16,-21.15,-21.14,-21.13,-21.12,-21.11,-21.1,-21.09,-21.08,-21.07,-21.06,-21.05,-21.04,-21.03,-21.02,-21.01,-21,-20.99,-20.98,-20.97,-20.96,-20.95,-20.94,-20.93,-20.92,-20.91,-20.9,-20.89,-20.88,-20.87,-20.86,-20.85,-20.84,-20.83,-20.82,-20.81,-20.8,-20.79,-20.78,-20.77,-20.76,-20.75,-20.74,-20.73,-20.72,-20.71,-20.7,-20.69,-20.68,-20.67,-20.66,-20.65,-20.64,-20.63,-20.62,-20.61,-20.6,-20.59,-20.58,-20.57,-20.56,-20.55,-20.54,-20.53,-20.52,-20.51,-20.5,-20.49,-20.48,-20.47,-20.46,-20.45,-20.44,-20.43,-20.42,-20.41,-20.4,-20.39,-20.38,-20.37,-20.36,-20.35,-20.34,-20.33,-20.32,-20.31,-20.3,-20.29,-20.28,-20.27,-20.26,-20.25,-20.24,-20.23,-20.22,-20.21,-20.2,-20.19,-20.18,-20.17,-20.16,-20.15,-20.14,-20.13,-20.12,-20.11,-20.1,-20.09,-20.08,-20.07,-20.06,-20.05,-20.04,-20.03,-20.02,-20.01,-20,-19.99,-19.98,-19.97,-19.96,-19.95,-19.94,-19.93,-19.92,-19.91,-19.9,-19.89,-19.88,-19.87,-19.86,-19.85,-19.84,-19.83,-19.82,-19.81,-19.8,-19.79,-19.78,-19.77,-19.76,-19.75,-19.74,-19.73,-19.72,-19.71,-19.7,-19.69,-19.68,-19.67,-19.66,-19.65,-19.64,-19.63,-19.62,-19.61,-19.6,-19.59,-19.58,-19.57,-19.56,-19.55,-19.54,-19.53,-19.52,-19.51,-19.5,-19.49,-19.48,-19.47,-19.46,-19.45,-19.44,-19.43,-19.42,-19.41,-19.4,-19.39,-19.38,-19.37,-19.36,-19.35,-19.34,-19.33,-19.32,-19.31,-19.3,-19.29,-19.28,-19.27,-19.26,-19.25,-19.24,-19.23,-19.22,-19.21,-19.2,-19.19,-19.18,-19.17,-19.16,-19.15,-19.14,-19.13,-19.12,-19.11,-19.1,-19.09,-19.08,-19.07,-19.06,-19.05,-19.04,-19.03,-19.02,-19.01,-19,-18.99,-18.98,-18.97,-18.96,-18.95,-18.94,-18.93,-18.92,-18.91,-18.9,-18.89,-18.88,-18.87,-18.86,-18.85,-18.84,-18.83,-18.82,-18.81,-18.8,-18.79,-18.78,-18.77,-18.76,-18.75,-18.74,-18.73,-18.72,-18.71,-18.7,-18.69,-18.68,-18.67,-18.66,-18.65,-18.64,-18.63,-18.62,-18.61,-18.6,-18.59,-18.58,-18.57,-18.56,-18.55,-18.54,-18.53,-18.52,-18.51,-18.5,-18.49,-18.48,-18.47,-18.46,-18.45,-18.44,-18.43,-18.42,-18.41,-18.4,-18.39,-18.38,-18.37,-18.36,-18.35,-18.34,-18.33,-18.32,-18.31,-18.3,-18.29,-18.28,-18.27,-18.26,-18.25,-18.24,-18.23,-18.22,-18.21,-18.2,-18.19,-18.18,-18.17,-18.16,-18.15,-18.14,-18.13,-18.12,-18.11,-18.1,-18.09,-18.08,-18.07,-18.06,-18.05,-18.04,-18.03,-18.02,-18.01,-18,-17.99,-17.98,-17.97,-17.96,-17.95,-17.94,-17.93,-17.92,-17.91,-17.9,-17.89,-17.88,-17.87,-17.86,-17.85,-17.84,-17.83,-17.82,-17.81,-17.8,-17.79,-17.78,-17.77,-17.76,-17.75,-17.74,-17.73,-17.72,-17.71,-17.7,-17.69,-17.68,-17.67,-17.66,-17.65,-17.64,-17.63,-17.62,-17.61,-17.6,-17.59,-17.58,-17.57,-17.56,-17.55,-17.54,-17.53,-17.52,-17.51,-17.5,-17.49,-17.48,-17.47,-17.46,-17.45,-17.44,-17.43,-17.42,-17.41,-17.4,-17.39,-17.38,-17.37,-17.36,-17.35,-17.34,-17.33,-17.32,-17.31,-17.3,-17.29,-17.28,-17.27,-17.26,-17.25,-17.24,-17.23,-17.22,-17.21,-17.2,-17.19,-17.18,-17.17,-17.16,-17.15,-17.14,-17.13,-17.12,-17.11,-17.1,-17.09,-17.08,-17.07,-17.06,-17.05,-17.04,-17.03,-17.02,-17.01,-17,-16.99,-16.98,-16.97,-16.96,-16.95,-16.94,-16.93,-16.92,-16.91,-16.9,-16.89,-16.88,-16.87,-16.86,-16.85,-16.84,-16.83,-16.82,-16.81,-16.8,-16.79,-16.78,-16.77,-16.76,-16.75,-16.74,-16.73,-16.72,-16.71,-16.7,-16.69,-16.68,-16.67,-16.66,-16.65,-16.64,-16.63,-16.62,-16.61,-16.6,-16.59,-16.58,-16.57,-16.56,-16.55,-16.54,-16.53,-16.52,-16.51,-16.5,-16.49,-16.48,-16.47,-16.46,-16.45,-16.44,-16.43,-16.42,-16.41,-16.4,-16.39,-16.38,-16.37,-16.36,-16.35,-16.34,-16.33,-16.32,-16.31,-16.3,-16.29,-16.28,-16.27,-16.26,-16.25,-16.24,-16.23,-16.22,-16.21,-16.2,-16.19,-16.18,-16.17,-16.16,-16.15,-16.14,-16.13,-16.12,-16.11,-16.1,-16.09,-16.08,-16.07,-16.06,-16.05,-16.04,-16.03,-16.02,-16.01,-16,-15.99,-15.98,-15.97,-15.96,-15.95,-15.94,-15.93,-15.92,-15.91,-15.9,-15.89,-15.88,-15.87,-15.86,-15.85,-15.84,-15.83,-15.82,-15.81,-15.8,-15.79,-15.78,-15.77,-15.76,-15.75,-15.74,-15.73,-15.72,-15.71,-15.7,-15.69,-15.68,-15.67,-15.66,-15.65,-15.64,-15.63,-15.62,-15.61,-15.6,-15.59,-15.58,-15.57,-15.56,-15.55,-15.54,-15.53,-15.52,-15.51,-15.5,-15.49,-15.48,-15.47,-15.46,-15.45,-15.44,-15.43,-15.42,-15.41,-15.4,-15.39,-15.38,-15.37,-15.36,-15.35,-15.34,-15.33,-15.32,-15.31,-15.3,-15.29,-15.28,-15.27,-15.26,-15.25,-15.24,-15.23,-15.22,-15.21,-15.2,-15.19,-15.18,-15.17,-15.16,-15.15,-15.14,-15.13,-15.12,-15.11,-15.1,-15.09,-15.08,-15.07,-15.06,-15.05,-15.04,-15.03,-15.02,-15.01,-15,-14.99,-14.98,-14.97,-14.96,-14.95,-14.94,-14.93,-14.92,-14.91,-14.9,-14.89,-14.88,-14.87,-14.86,-14.85,-14.84,-14.83,-14.82,-14.81,-14.8,-14.79,-14.78,-14.77,-14.76,-14.75,-14.74,-14.73,-14.72,-14.71,-14.7,-14.69,-14.68,-14.67,-14.66,-14.65,-14.64,-14.63,-14.62,-14.61,-14.6,-14.59,-14.58,-14.57,-14.56,-14.55,-14.54,-14.53,-14.52,-14.51,-14.5,-14.49,-14.48,-14.47,-14.46,-14.45,-14.44,-14.43,-14.42,-14.41,-14.4,-14.39,-14.38,-14.37,-14.36,-14.35,-14.34,-14.33,-14.32,-14.31,-14.3,-14.29,-14.28,-14.27,-14.26,-14.25,-14.24,-14.23,-14.22,-14.21,-14.2,-14.19,-14.18,-14.17,-14.16,-14.15,-14.14,-14.13,-14.12,-14.11,-14.1,-14.09,-14.08,-14.07,-14.06,-14.05,-14.04,-14.03,-14.02,-14.01,-14,-13.99,-13.98,-13.97,-13.96,-13.95,-13.94,-13.93,-13.92,-13.91,-13.9,-13.89,-13.88,-13.87,-13.86,-13.85,-13.84,-13.83,-13.82,-13.81,-13.8,-13.79,-13.78,-13.77,-13.76,-13.75,-13.74,-13.73,-13.72,-13.71,-13.7,-13.69,-13.68,-13.67,-13.66,-13.65,-13.64,-13.63,-13.62,-13.61,-13.6,-13.59,-13.58,-13.57,-13.56,-13.55,-13.54,-13.53,-13.52,-13.51,-13.5,-13.49,-13.48,-13.47,-13.46,-13.45,-13.44,-13.43,-13.42,-13.41,-13.4,-13.39,-13.38,-13.37,-13.36,-13.35,-13.34,-13.33,-13.32,-13.31,-13.3,-13.29,-13.28,-13.27,-13.26,-13.25,-13.24,-13.23,-13.22,-13.21,-13.2,-13.19,-13.18,-13.17,-13.16,-13.15,-13.14,-13.13,-13.12,-13.11,-13.1,-13.09,-13.08,-13.07,-13.06,-13.05,-13.04,-13.03,-13.02,-13.01,-13,-12.99,-12.98,-12.97,-12.96,-12.95,-12.94,-12.93,-12.92,-12.91,-12.9,-12.89,-12.88,-12.87,-12.86,-12.85,-12.84,-12.83,-12.82,-12.81,-12.8,-12.79,-12.78,-12.77,-12.76,-12.75,-12.74,-12.73,-12.72,-12.71,-12.7,-12.69,-12.68,-12.67,-12.66,-12.65,-12.64,-12.63,-12.62,-12.61,-12.6,-12.59,-12.58,-12.57,-12.56,-12.55,-12.54,-12.53,-12.52,-12.51,-12.5,-12.49,-12.48,-12.47,-12.46,-12.45,-12.44,-12.43,-12.42,-12.41,-12.4,-12.39,-12.38,-12.37,-12.36,-12.35,-12.34,-12.33,-12.32,-12.31,-12.3,-12.29,-12.28,-12.27,-12.26,-12.25,-12.24,-12.23,-12.22,-12.21,-12.2,-12.19,-12.18,-12.17,-12.16,-12.15,-12.14,-12.13,-12.12,-12.11,-12.1,-12.09,-12.08,-12.07,-12.06,-12.05,-12.04,-12.03,-12.02,-12.01,-12,-11.99,-11.98,-11.97,-11.96,-11.95,-11.94,-11.93,-11.92,-11.91,-11.9,-11.89,-11.88,-11.87,-11.86,-11.85,-11.84,-11.83,-11.82,-11.81,-11.8,-11.79,-11.78,-11.77,-11.76,-11.75,-11.74,-11.73,-11.72,-11.71,-11.7,-11.69,-11.68,-11.67,-11.66,-11.65,-11.64,-11.63,-11.62,-11.61,-11.6,-11.59,-11.58,-11.57,-11.56,-11.55,-11.54,-11.53,-11.52,-11.51,-11.5,-11.49,-11.48,-11.47,-11.46,-11.45,-11.44,-11.43,-11.42,-11.41,-11.4,-11.39,-11.38,-11.37,-11.36,-11.35,-11.34,-11.33,-11.32,-11.31,-11.3,-11.29,-11.28,-11.27,-11.26,-11.25,-11.24,-11.23,-11.22,-11.21,-11.2,-11.19,-11.18,-11.17,-11.16,-11.15,-11.14,-11.13,-11.12,-11.11,-11.1,-11.09,-11.08,-11.07,-11.06,-11.05,-11.04,-11.03,-11.02,-11.01,-11,-10.99,-10.98,-10.97,-10.96,-10.95,-10.94,-10.93,-10.92,-10.91,-10.9,-10.89,-10.88,-10.87,-10.86,-10.85,-10.84,-10.83,-10.82,-10.81,-10.8,-10.79,-10.78,-10.77,-10.76,-10.75,-10.74,-10.73,-10.72,-10.71,-10.7,-10.69,-10.68,-10.67,-10.66,-10.65,-10.64,-10.63,-10.62,-10.61,-10.6,-10.59,-10.58,-10.57,-10.56,-10.55,-10.54,-10.53,-10.52,-10.51,-10.5,-10.49,-10.48,-10.47,-10.46,-10.45,-10.44,-10.43,-10.42,-10.41,-10.4,-10.39,-10.38,-10.37,-10.36,-10.35,-10.34,-10.33,-10.32,-10.31,-10.3,-10.29,-10.28,-10.27,-10.26,-10.25,-10.24,-10.23,-10.22,-10.21,-10.2,-10.19,-10.18,-10.17,-10.16,-10.15,-10.14,-10.13,-10.12,-10.11,-10.1,-10.09,-10.08,-10.07,-10.06,-10.05,-10.04,-10.03,-10.02,-10.01,-10,-9.98999999999999,-9.98,-9.97,-9.95999999999999,-9.95,-9.94,-9.92999999999999,-9.92,-9.91,-9.89999999999999,-9.89,-9.88,-9.87,-9.86,-9.84999999999999,-9.84,-9.83,-9.81999999999999,-9.81,-9.8,-9.78999999999999,-9.78,-9.77,-9.76000000000001,-9.75,-9.73999999999999,-9.73,-9.72,-9.70999999999999,-9.7,-9.69,-9.67999999999999,-9.67,-9.66,-9.64999999999999,-9.64,-9.63,-9.62,-9.61,-9.59999999999999,-9.59,-9.58,-9.56999999999999,-9.56,-9.55,-9.53999999999999,-9.53,-9.52,-9.51000000000001,-9.5,-9.48999999999999,-9.48,-9.47,-9.45999999999999,-9.45,-9.44,-9.42999999999999,-9.42,-9.41,-9.39999999999999,-9.39,-9.38,-9.37,-9.36,-9.34999999999999,-9.34,-9.33,-9.31999999999999,-9.31,-9.3,-9.28999999999999,-9.28,-9.27,-9.26000000000001,-9.25,-9.23999999999999,-9.23,-9.22,-9.20999999999999,-9.2,-9.19,-9.17999999999999,-9.17,-9.16,-9.14999999999999,-9.14,-9.13,-9.12,-9.11,-9.09999999999999,-9.09,-9.08,-9.06999999999999,-9.06,-9.05,-9.03999999999999,-9.03,-9.02,-9.01000000000001,-9,-8.98999999999999,-8.98,-8.97,-8.95999999999999,-8.95,-8.94,-8.92999999999999,-8.92,-8.91,-8.89999999999999,-8.89,-8.88,-8.87,-8.86,-8.84999999999999,-8.84,-8.83,-8.81999999999999,-8.81,-8.8,-8.78999999999999,-8.78,-8.77,-8.76000000000001,-8.75,-8.73999999999999,-8.73,-8.72,-8.70999999999999,-8.7,-8.69,-8.67999999999999,-8.67,-8.66,-8.64999999999999,-8.64,-8.63,-8.62,-8.61,-8.59999999999999,-8.59,-8.58,-8.56999999999999,-8.56,-8.55,-8.53999999999999,-8.53,-8.52,-8.51000000000001,-8.5,-8.48999999999999,-8.48,-8.47,-8.45999999999999,-8.45,-8.44,-8.42999999999999,-8.42,-8.41,-8.39999999999999,-8.39,-8.38,-8.37,-8.36,-8.34999999999999,-8.34,-8.33,-8.31999999999999,-8.31,-8.3,-8.28999999999999,-8.28,-8.27,-8.26000000000001,-8.25,-8.23999999999999,-8.23,-8.22,-8.20999999999999,-8.2,-8.19,-8.17999999999999,-8.17,-8.16,-8.14999999999999,-8.14,-8.13,-8.12,-8.11,-8.09999999999999,-8.09,-8.08,-8.06999999999999,-8.06,-8.05,-8.03999999999999,-8.03,-8.02,-8.01000000000001,-8,-7.98999999999999,-7.98,-7.97,-7.95999999999999,-7.95,-7.94,-7.92999999999999,-7.92,-7.91,-7.89999999999999,-7.89,-7.88,-7.87,-7.86,-7.84999999999999,-7.84,-7.83,-7.81999999999999,-7.81,-7.8,-7.78999999999999,-7.78,-7.77,-7.76000000000001,-7.75,-7.73999999999999,-7.73,-7.72,-7.70999999999999,-7.7,-7.69,-7.67999999999999,-7.67,-7.66,-7.64999999999999,-7.64,-7.63,-7.62,-7.61,-7.59999999999999,-7.59,-7.58,-7.56999999999999,-7.56,-7.55,-7.53999999999999,-7.53,-7.52,-7.51000000000001,-7.5,-7.48999999999999,-7.48,-7.47,-7.45999999999999,-7.45,-7.44,-7.42999999999999,-7.42,-7.41,-7.39999999999999,-7.39,-7.38,-7.37,-7.36,-7.34999999999999,-7.34,-7.33,-7.31999999999999,-7.31,-7.3,-7.28999999999999,-7.28,-7.27,-7.26000000000001,-7.25,-7.23999999999999,-7.23,-7.22,-7.20999999999999,-7.2,-7.19,-7.17999999999999,-7.17,-7.16,-7.14999999999999,-7.14,-7.13,-7.12,-7.11,-7.09999999999999,-7.09,-7.08,-7.06999999999999,-7.06,-7.05,-7.03999999999999,-7.03,-7.02,-7.01000000000001,-7,-6.98999999999999,-6.98,-6.97,-6.95999999999999,-6.95,-6.94,-6.92999999999999,-6.92,-6.91,-6.89999999999999,-6.89,-6.88,-6.87,-6.86,-6.84999999999999,-6.84,-6.83,-6.81999999999999,-6.81,-6.8,-6.78999999999999,-6.78,-6.77,-6.76000000000001,-6.75,-6.73999999999999,-6.73,-6.72,-6.70999999999999,-6.7,-6.69,-6.67999999999999,-6.67,-6.66,-6.64999999999999,-6.64,-6.63,-6.62,-6.61,-6.59999999999999,-6.59,-6.58,-6.56999999999999,-6.56,-6.55,-6.53999999999999,-6.53,-6.52,-6.51000000000001,-6.5,-6.48999999999999,-6.48,-6.47,-6.45999999999999,-6.45,-6.44,-6.42999999999999,-6.42,-6.41,-6.39999999999999,-6.39,-6.38,-6.37,-6.36,-6.34999999999999,-6.34,-6.33,-6.31999999999999,-6.31,-6.3,-6.28999999999999,-6.28,-6.27,-6.26000000000001,-6.25,-6.23999999999999,-6.23,-6.22,-6.20999999999999,-6.2,-6.19,-6.17999999999999,-6.17,-6.16,-6.14999999999999,-6.14,-6.13,-6.12,-6.11,-6.09999999999999,-6.09,-6.08,-6.06999999999999,-6.06,-6.05,-6.03999999999999,-6.03,-6.02,-6.01000000000001,-6,-5.98999999999999,-5.98,-5.97,-5.95999999999999,-5.95,-5.94,-5.92999999999999,-5.92,-5.91,-5.89999999999999,-5.89,-5.88,-5.87,-5.86,-5.84999999999999,-5.84,-5.83,-5.81999999999999,-5.81,-5.8,-5.78999999999999,-5.78,-5.77,-5.76000000000001,-5.75,-5.73999999999999,-5.73,-5.72,-5.70999999999999,-5.7,-5.69,-5.67999999999999,-5.67,-5.66,-5.64999999999999,-5.64,-5.63,-5.62,-5.61,-5.59999999999999,-5.59,-5.58,-5.56999999999999,-5.56,-5.55,-5.53999999999999,-5.53,-5.52,-5.51000000000001,-5.5,-5.48999999999999,-5.48,-5.47,-5.45999999999999,-5.45,-5.44,-5.42999999999999,-5.42,-5.41,-5.39999999999999,-5.39,-5.38,-5.37,-5.36,-5.34999999999999,-5.34,-5.33,-5.31999999999999,-5.31,-5.3,-5.28999999999999,-5.28,-5.27,-5.26000000000001,-5.25,-5.23999999999999,-5.23,-5.22,-5.20999999999999,-5.2,-5.19,-5.17999999999999,-5.17,-5.16,-5.14999999999999,-5.14,-5.13,-5.12,-5.11,-5.09999999999999,-5.09,-5.08,-5.06999999999999,-5.06,-5.05,-5.03999999999999,-5.03,-5.02,-5.01000000000001,-5,-4.98999999999999,-4.98,-4.97,-4.95999999999999,-4.95,-4.94,-4.92999999999999,-4.92,-4.91,-4.89999999999999,-4.89,-4.88,-4.87,-4.86,-4.84999999999999,-4.84,-4.83,-4.81999999999999,-4.81,-4.8,-4.78999999999999,-4.78,-4.77,-4.76000000000001,-4.75,-4.73999999999999,-4.73,-4.72,-4.70999999999999,-4.7,-4.69,-4.67999999999999,-4.67,-4.66,-4.64999999999999,-4.64,-4.63,-4.62,-4.61,-4.59999999999999,-4.59,-4.58,-4.56999999999999,-4.56,-4.55,-4.53999999999999,-4.53,-4.52,-4.51000000000001,-4.5,-4.48999999999999,-4.48,-4.47,-4.45999999999999,-4.45,-4.44,-4.42999999999999,-4.42,-4.41,-4.39999999999999,-4.39,-4.38,-4.37,-4.36,-4.34999999999999,-4.34,-4.33,-4.31999999999999,-4.31,-4.3,-4.28999999999999,-4.28,-4.27,-4.25999999999999,-4.25,-4.23999999999999,-4.23,-4.22,-4.20999999999999,-4.2,-4.19,-4.17999999999999,-4.17,-4.16,-4.14999999999999,-4.14,-4.13,-4.12,-4.11,-4.09999999999999,-4.09,-4.08,-4.06999999999999,-4.06,-4.05,-4.03999999999999,-4.03,-4.02,-4.00999999999999,-4,-3.98999999999999,-3.98,-3.97,-3.95999999999999,-3.95,-3.94,-3.92999999999999,-3.92,-3.91,-3.89999999999999,-3.89,-3.88,-3.87,-3.86,-3.84999999999999,-3.84,-3.83,-3.81999999999999,-3.81,-3.8,-3.78999999999999,-3.78,-3.77,-3.75999999999999,-3.75,-3.73999999999999,-3.73,-3.72,-3.70999999999999,-3.7,-3.69,-3.67999999999999,-3.67,-3.66,-3.64999999999999,-3.64,-3.63,-3.62,-3.61,-3.59999999999999,-3.59,-3.58,-3.56999999999999,-3.56,-3.55,-3.53999999999999,-3.53,-3.52,-3.50999999999999,-3.5,-3.48999999999999,-3.48,-3.47,-3.45999999999999,-3.45,-3.44,-3.42999999999999,-3.42,-3.41,-3.39999999999999,-3.39,-3.38,-3.37,-3.36,-3.34999999999999,-3.34,-3.33,-3.31999999999999,-3.31,-3.3,-3.28999999999999,-3.28,-3.27,-3.25999999999999,-3.25,-3.23999999999999,-3.23,-3.22,-3.20999999999999,-3.2,-3.19,-3.17999999999999,-3.17,-3.16,-3.14999999999999,-3.14,-3.13,-3.12,-3.11,-3.09999999999999,-3.09,-3.08,-3.06999999999999,-3.06,-3.05,-3.03999999999999,-3.03,-3.02,-3.00999999999999,-3,-2.98999999999999,-2.98,-2.97,-2.95999999999999,-2.95,-2.94,-2.92999999999999,-2.92,-2.91,-2.89999999999999,-2.89,-2.88,-2.87,-2.86,-2.84999999999999,-2.84,-2.83,-2.81999999999999,-2.81,-2.8,-2.78999999999999,-2.78,-2.77,-2.75999999999999,-2.75,-2.73999999999999,-2.73,-2.72,-2.70999999999999,-2.7,-2.69,-2.67999999999999,-2.67,-2.66,-2.64999999999999,-2.64,-2.63,-2.62,-2.61,-2.59999999999999,-2.59,-2.58,-2.56999999999999,-2.56,-2.55,-2.53999999999999,-2.53,-2.52,-2.50999999999999,-2.5,-2.48999999999999,-2.48,-2.47,-2.45999999999999,-2.45,-2.44,-2.42999999999999,-2.42,-2.41,-2.39999999999999,-2.39,-2.38,-2.37,-2.36,-2.34999999999999,-2.34,-2.33,-2.31999999999999,-2.31,-2.3,-2.28999999999999,-2.28,-2.27,-2.25999999999999,-2.25,-2.23999999999999,-2.23,-2.22,-2.20999999999999,-2.2,-2.19,-2.17999999999999,-2.17,-2.16,-2.14999999999999,-2.14,-2.13,-2.12,-2.11,-2.09999999999999,-2.09,-2.08,-2.06999999999999,-2.06,-2.05,-2.03999999999999,-2.03,-2.02,-2.00999999999999,-2,-1.98999999999999,-1.98,-1.97,-1.95999999999999,-1.95,-1.94,-1.92999999999999,-1.92,-1.91,-1.89999999999999,-1.89,-1.88,-1.87,-1.86,-1.84999999999999,-1.84,-1.83,-1.81999999999999,-1.81,-1.8,-1.78999999999999,-1.78,-1.77,-1.75999999999999,-1.75,-1.73999999999999,-1.73,-1.72,-1.70999999999999,-1.7,-1.69,-1.67999999999999,-1.67,-1.66,-1.64999999999999,-1.64,-1.63,-1.62,-1.61,-1.59999999999999,-1.59,-1.58,-1.56999999999999,-1.56,-1.55,-1.53999999999999,-1.53,-1.52,-1.50999999999999,-1.5,-1.48999999999999,-1.48,-1.47,-1.45999999999999,-1.45,-1.44,-1.42999999999999,-1.42,-1.41,-1.39999999999999,-1.39,-1.38,-1.37,-1.36,-1.34999999999999,-1.34,-1.33,-1.31999999999999,-1.31,-1.3,-1.28999999999999,-1.28,-1.27,-1.25999999999999,-1.25,-1.23999999999999,-1.23,-1.22,-1.20999999999999,-1.2,-1.19,-1.17999999999999,-1.17,-1.16,-1.14999999999999,-1.14,-1.13,-1.12,-1.11,-1.09999999999999,-1.09,-1.08,-1.06999999999999,-1.06,-1.05,-1.03999999999999,-1.03,-1.02,-1.00999999999999,-1,-0.989999999999995,-0.980000000000004,-0.969999999999999,-0.959999999999994,-0.950000000000003,-0.939999999999998,-0.929999999999993,-0.920000000000002,-0.909999999999997,-0.899999999999991,-0.890000000000001,-0.879999999999995,-0.870000000000005,-0.859999999999999,-0.849999999999994,-0.840000000000003,-0.829999999999998,-0.819999999999993,-0.810000000000002,-0.799999999999997,-0.789999999999992,-0.780000000000001,-0.769999999999996,-0.759999999999991,-0.75,-0.739999999999995,-0.730000000000004,-0.719999999999999,-0.709999999999994,-0.700000000000003,-0.689999999999998,-0.679999999999993,-0.670000000000002,-0.659999999999997,-0.649999999999991,-0.640000000000001,-0.629999999999995,-0.620000000000005,-0.609999999999999,-0.599999999999994,-0.590000000000003,-0.579999999999998,-0.569999999999993,-0.560000000000002,-0.549999999999997,-0.539999999999992,-0.530000000000001,-0.519999999999996,-0.509999999999991,-0.5,-0.489999999999995,-0.480000000000004,-0.469999999999999,-0.459999999999994,-0.450000000000003,-0.439999999999998,-0.429999999999993,-0.420000000000002,-0.409999999999997,-0.399999999999991,-0.390000000000001,-0.379999999999995,-0.370000000000005,-0.359999999999999,-0.349999999999994,-0.340000000000003,-0.329999999999998,-0.319999999999993,-0.310000000000002,-0.299999999999997,-0.289999999999992,-0.280000000000001,-0.269999999999996,-0.259999999999991,-0.25,-0.239999999999995,-0.230000000000004,-0.219999999999999,-0.209999999999994,-0.200000000000003,-0.189999999999998,-0.179999999999993,-0.170000000000002,-0.159999999999997,-0.149999999999991,-0.140000000000001,-0.129999999999995,-0.120000000000005,-0.109999999999999,-0.0999999999999943,-0.0900000000000034,-0.0799999999999983,-0.0699999999999932,-0.0600000000000023,-0.0499999999999972,-0.039999999999992,-0.0300000000000011,-0.019999999999996,-0.00999999999999091,0,0.0100000000000051,0.019999999999996,0.0300000000000011,0.0400000000000063,0.0499999999999972,0.0600000000000023,0.0700000000000074,0.0799999999999983,0.0900000000000034,0.100000000000009,0.109999999999999,0.120000000000005,0.129999999999995,0.140000000000001,0.150000000000006,0.159999999999997,0.170000000000002,0.180000000000007,0.189999999999998,0.200000000000003,0.210000000000008,0.219999999999999,0.230000000000004,0.240000000000009,0.25,0.260000000000005,0.269999999999996,0.280000000000001,0.290000000000006,0.299999999999997,0.310000000000002,0.320000000000007,0.329999999999998,0.340000000000003,0.350000000000009,0.359999999999999,0.370000000000005,0.379999999999995,0.390000000000001,0.400000000000006,0.409999999999997,0.420000000000002,0.430000000000007,0.439999999999998,0.450000000000003,0.460000000000008,0.469999999999999,0.480000000000004,0.490000000000009,0.5,0.510000000000005,0.519999999999996,0.530000000000001,0.540000000000006,0.549999999999997,0.560000000000002,0.570000000000007,0.579999999999998,0.590000000000003,0.600000000000009,0.609999999999999,0.620000000000005,0.629999999999995,0.640000000000001,0.650000000000006,0.659999999999997,0.670000000000002,0.680000000000007,0.689999999999998,0.700000000000003,0.710000000000008,0.719999999999999,0.730000000000004,0.740000000000009,0.75,0.760000000000005,0.769999999999996,0.780000000000001,0.790000000000006,0.799999999999997,0.810000000000002,0.820000000000007,0.829999999999998,0.840000000000003,0.850000000000009,0.859999999999999,0.870000000000005,0.879999999999995,0.890000000000001,0.900000000000006,0.909999999999997,0.920000000000002,0.930000000000007,0.939999999999998,0.950000000000003,0.960000000000008,0.969999999999999,0.980000000000004,0.990000000000009,1,1.01000000000001,1.02,1.03,1.04000000000001,1.05,1.06,1.07000000000001,1.08,1.09,1.10000000000001,1.11,1.12,1.13,1.14,1.15000000000001,1.16,1.17,1.18000000000001,1.19,1.2,1.21000000000001,1.22,1.23,1.24000000000001,1.25,1.26000000000001,1.27,1.28,1.29000000000001,1.3,1.31,1.32000000000001,1.33,1.34,1.35000000000001,1.36,1.37,1.38,1.39,1.40000000000001,1.41,1.42,1.43000000000001,1.44,1.45,1.46000000000001,1.47,1.48,1.49000000000001,1.5,1.51000000000001,1.52,1.53,1.54000000000001,1.55,1.56,1.57000000000001,1.58,1.59,1.60000000000001,1.61,1.62,1.63,1.64,1.65000000000001,1.66,1.67,1.68000000000001,1.69,1.7,1.71000000000001,1.72,1.73,1.74000000000001,1.75,1.76000000000001,1.77,1.78,1.79000000000001,1.8,1.81,1.82000000000001,1.83,1.84,1.85000000000001,1.86,1.87,1.88,1.89,1.90000000000001,1.91,1.92,1.93000000000001,1.94,1.95,1.96000000000001,1.97,1.98,1.99000000000001,2,2.01000000000001,2.02,2.03,2.04000000000001,2.05,2.06,2.07000000000001,2.08,2.09,2.10000000000001,2.11,2.12,2.13,2.14,2.15000000000001,2.16,2.17,2.18000000000001,2.19,2.2,2.21000000000001,2.22,2.23,2.24000000000001,2.25,2.26000000000001,2.27,2.28,2.29000000000001,2.3,2.31,2.32000000000001,2.33,2.34,2.35000000000001,2.36,2.37,2.38,2.39,2.40000000000001,2.41,2.42,2.43000000000001,2.44,2.45,2.46000000000001,2.47,2.48,2.49000000000001,2.5,2.51000000000001,2.52,2.53,2.54000000000001,2.55,2.56,2.57000000000001,2.58,2.59,2.60000000000001,2.61,2.62,2.63,2.64,2.65000000000001,2.66,2.67,2.68000000000001,2.69,2.7,2.71000000000001,2.72,2.73,2.74000000000001,2.75,2.76000000000001,2.77,2.78,2.79000000000001,2.8,2.81,2.82000000000001,2.83,2.84,2.85000000000001,2.86,2.87,2.88,2.89,2.90000000000001,2.91,2.92,2.93000000000001,2.94,2.95,2.96000000000001,2.97,2.98,2.99000000000001,3,3.01000000000001,3.02,3.03,3.04000000000001,3.05,3.06,3.07000000000001,3.08,3.09,3.10000000000001,3.11,3.12,3.13,3.14,3.15000000000001,3.16,3.17,3.18000000000001,3.19,3.2,3.21000000000001,3.22,3.23,3.24000000000001,3.25,3.26000000000001,3.27,3.28,3.29000000000001,3.3,3.31,3.32000000000001,3.33,3.34,3.35000000000001,3.36,3.37,3.38,3.39,3.40000000000001,3.41,3.42,3.43000000000001,3.44,3.45,3.46000000000001,3.47,3.48,3.49000000000001,3.5,3.51000000000001,3.52,3.53,3.54000000000001,3.55,3.56,3.57000000000001,3.58,3.59,3.60000000000001,3.61,3.62,3.63,3.64,3.65000000000001,3.66,3.67,3.68000000000001,3.69,3.7,3.71000000000001,3.72,3.73,3.74000000000001,3.75,3.76000000000001,3.77,3.78,3.79000000000001,3.8,3.81,3.82000000000001,3.83,3.84,3.85000000000001,3.86,3.87,3.88,3.89,3.90000000000001,3.91,3.92,3.93000000000001,3.94,3.95,3.96000000000001,3.97,3.98,3.99000000000001,4,4.01000000000001,4.02,4.03,4.04000000000001,4.05,4.06,4.07000000000001,4.08,4.09,4.10000000000001,4.11,4.12,4.13,4.14,4.15000000000001,4.16,4.17,4.18000000000001,4.19,4.2,4.21000000000001,4.22,4.23,4.24000000000001,4.25,4.26000000000001,4.27,4.28,4.29000000000001,4.3,4.31,4.32000000000001,4.33,4.34,4.35000000000001,4.36,4.37,4.38,4.39,4.40000000000001,4.41,4.42,4.43000000000001,4.44,4.45,4.46000000000001,4.47,4.48,4.49000000000001,4.5,4.51000000000001,4.52,4.53,4.54000000000001,4.55,4.56,4.57000000000001,4.58,4.59,4.60000000000001,4.61,4.62,4.63,4.64,4.65000000000001,4.66,4.67,4.68000000000001,4.69,4.7,4.71000000000001,4.72,4.73,4.74000000000001,4.75,4.76000000000001,4.77,4.78,4.79000000000001,4.8,4.81,4.82000000000001,4.83,4.84,4.85000000000001,4.86,4.87,4.88,4.89,4.90000000000001,4.91,4.92,4.93000000000001,4.94,4.95,4.96000000000001,4.97,4.98,4.99000000000001,5,5.01000000000001,5.02,5.03,5.04000000000001,5.05,5.06,5.07000000000001,5.08,5.09,5.10000000000001,5.11,5.12,5.13,5.14,5.15000000000001,5.16,5.17,5.18000000000001,5.19,5.2,5.21000000000001,5.22,5.23,5.24000000000001,5.25,5.26000000000001,5.27,5.28,5.29000000000001,5.3,5.31,5.32000000000001,5.33,5.34,5.35000000000001,5.36,5.37,5.38,5.39,5.40000000000001,5.41,5.42,5.43000000000001,5.44,5.45,5.46000000000001,5.47,5.48,5.49000000000001,5.5,5.51000000000001,5.52,5.53,5.54000000000001,5.55,5.56,5.57000000000001,5.58,5.59,5.60000000000001,5.61,5.62,5.63,5.64,5.65000000000001,5.66,5.67,5.68000000000001,5.69,5.7,5.71000000000001,5.72,5.73,5.74000000000001,5.75,5.76000000000001,5.77,5.78,5.79000000000001,5.8,5.81,5.82000000000001,5.83,5.84,5.85000000000001,5.86,5.87,5.88,5.89,5.90000000000001,5.91,5.92,5.93000000000001,5.94,5.95,5.96000000000001,5.97,5.98,5.99000000000001,6,6.01000000000001,6.02,6.03,6.04000000000001,6.05,6.06,6.07000000000001,6.08,6.09,6.10000000000001,6.11,6.12,6.13,6.14,6.15000000000001,6.16,6.17,6.18000000000001,6.19,6.2,6.21000000000001,6.22,6.23,6.24000000000001,6.25,6.26000000000001,6.27,6.28,6.29000000000001,6.3,6.31,6.32000000000001,6.33,6.34,6.35000000000001,6.36,6.37,6.38,6.39,6.40000000000001,6.41,6.42,6.43000000000001,6.44,6.45,6.46000000000001,6.47,6.48,6.49000000000001,6.5,6.51000000000001,6.52,6.53,6.54000000000001,6.55,6.56,6.57000000000001,6.58,6.59,6.60000000000001,6.61,6.62,6.63,6.64,6.65000000000001,6.66,6.67,6.68000000000001,6.69,6.7,6.71000000000001,6.72,6.73,6.74000000000001,6.75,6.76000000000001,6.77,6.78,6.79000000000001,6.8,6.81,6.82000000000001,6.83,6.84,6.85000000000001,6.86,6.87,6.88,6.89,6.90000000000001,6.91,6.92,6.93000000000001,6.94,6.95,6.96000000000001,6.97,6.98,6.99000000000001,7,7.01000000000001,7.02,7.03,7.04000000000001,7.05,7.06,7.07000000000001,7.08,7.09,7.10000000000001,7.11,7.12,7.13,7.14,7.15000000000001,7.16,7.17,7.18000000000001,7.19,7.2,7.21000000000001,7.22,7.23,7.24000000000001,7.25,7.26000000000001,7.27,7.28,7.29000000000001,7.3,7.31,7.32000000000001,7.33,7.34,7.35000000000001,7.36,7.37,7.38,7.39,7.40000000000001,7.41,7.42,7.43000000000001,7.44,7.45,7.46000000000001,7.47,7.48,7.49000000000001,7.5,7.51000000000001,7.52,7.53,7.54000000000001,7.55,7.56,7.57000000000001,7.58,7.59,7.60000000000001,7.61,7.62,7.63,7.64,7.65000000000001,7.66,7.67,7.68000000000001,7.69,7.7,7.71000000000001,7.72,7.73,7.74000000000001,7.75,7.76000000000001,7.77,7.78,7.79000000000001,7.8,7.81,7.82000000000001,7.83,7.84,7.85000000000001,7.86,7.87,7.88,7.89,7.90000000000001,7.91,7.92,7.93000000000001,7.94,7.95,7.96000000000001,7.97,7.98,7.99000000000001,8,8.01000000000001,8.02,8.03,8.04000000000001,8.05,8.06,8.07000000000001,8.08,8.09,8.10000000000001,8.11,8.12,8.13,8.14,8.15000000000001,8.16,8.17,8.18000000000001,8.19,8.2,8.21000000000001,8.22,8.23,8.24000000000001,8.25,8.26000000000001,8.27,8.28,8.29000000000001,8.3,8.31,8.32000000000001,8.33,8.34,8.35000000000001,8.36,8.37,8.38,8.39,8.40000000000001,8.41,8.42,8.43000000000001,8.44,8.45,8.46000000000001,8.47,8.48,8.49000000000001,8.5,8.51000000000001,8.52,8.53,8.54000000000001,8.55,8.56,8.57000000000001,8.58,8.59,8.60000000000001,8.61,8.62,8.63,8.64,8.65000000000001,8.66,8.67,8.68000000000001,8.69,8.7,8.71000000000001,8.72,8.73,8.74000000000001,8.75,8.76000000000001,8.77,8.78,8.79000000000001,8.8,8.81,8.82000000000001,8.83,8.84,8.85000000000001,8.86,8.87,8.88,8.89,8.90000000000001,8.91,8.92,8.93000000000001,8.94,8.95,8.96000000000001,8.97,8.98,8.99000000000001,9,9.01000000000001,9.02,9.03,9.04000000000001,9.05,9.06,9.07000000000001,9.08,9.09,9.10000000000001,9.11,9.12,9.13,9.14,9.15000000000001,9.16,9.17,9.18000000000001,9.19,9.2,9.21000000000001,9.22,9.23,9.24000000000001,9.25,9.26000000000001,9.27,9.28,9.29000000000001,9.3,9.31,9.32000000000001,9.33,9.34,9.35000000000001,9.36,9.37,9.38,9.39,9.40000000000001,9.41,9.42,9.43000000000001,9.44,9.45,9.46000000000001,9.47,9.48,9.49000000000001,9.5,9.51000000000001,9.52,9.53,9.54000000000001,9.55,9.56,9.57000000000001,9.58,9.59,9.60000000000001,9.61,9.62,9.63,9.64,9.65000000000001,9.66,9.67,9.68000000000001,9.69,9.7,9.71000000000001,9.72,9.73,9.74000000000001,9.75,9.76000000000001,9.77,9.78,9.79000000000001,9.8,9.81,9.82000000000001,9.83,9.84,9.85000000000001,9.86,9.87,9.88,9.89,9.90000000000001,9.91,9.92,9.93000000000001,9.94,9.95,9.96000000000001,9.97,9.98,9.99000000000001,10,10.01,10.02,10.03,10.04,10.05,10.06,10.07,10.08,10.09,10.1,10.11,10.12,10.13,10.14,10.15,10.16,10.17,10.18,10.19,10.2,10.21,10.22,10.23,10.24,10.25,10.26,10.27,10.28,10.29,10.3,10.31,10.32,10.33,10.34,10.35,10.36,10.37,10.38,10.39,10.4,10.41,10.42,10.43,10.44,10.45,10.46,10.47,10.48,10.49,10.5,10.51,10.52,10.53,10.54,10.55,10.56,10.57,10.58,10.59,10.6,10.61,10.62,10.63,10.64,10.65,10.66,10.67,10.68,10.69,10.7,10.71,10.72,10.73,10.74,10.75,10.76,10.77,10.78,10.79,10.8,10.81,10.82,10.83,10.84,10.85,10.86,10.87,10.88,10.89,10.9,10.91,10.92,10.93,10.94,10.95,10.96,10.97,10.98,10.99,11,11.01,11.02,11.03,11.04,11.05,11.06,11.07,11.08,11.09,11.1,11.11,11.12,11.13,11.14,11.15,11.16,11.17,11.18,11.19,11.2,11.21,11.22,11.23,11.24,11.25,11.26,11.27,11.28,11.29,11.3,11.31,11.32,11.33,11.34,11.35,11.36,11.37,11.38,11.39,11.4,11.41,11.42,11.43,11.44,11.45,11.46,11.47,11.48,11.49,11.5,11.51,11.52,11.53,11.54,11.55,11.56,11.57,11.58,11.59,11.6,11.61,11.62,11.63,11.64,11.65,11.66,11.67,11.68,11.69,11.7,11.71,11.72,11.73,11.74,11.75,11.76,11.77,11.78,11.79,11.8,11.81,11.82,11.83,11.84,11.85,11.86,11.87,11.88,11.89,11.9,11.91,11.92,11.93,11.94,11.95,11.96,11.97,11.98,11.99,12,12.01,12.02,12.03,12.04,12.05,12.06,12.07,12.08,12.09,12.1,12.11,12.12,12.13,12.14,12.15,12.16,12.17,12.18,12.19,12.2,12.21,12.22,12.23,12.24,12.25,12.26,12.27,12.28,12.29,12.3,12.31,12.32,12.33,12.34,12.35,12.36,12.37,12.38,12.39,12.4,12.41,12.42,12.43,12.44,12.45,12.46,12.47,12.48,12.49,12.5,12.51,12.52,12.53,12.54,12.55,12.56,12.57,12.58,12.59,12.6,12.61,12.62,12.63,12.64,12.65,12.66,12.67,12.68,12.69,12.7,12.71,12.72,12.73,12.74,12.75,12.76,12.77,12.78,12.79,12.8,12.81,12.82,12.83,12.84,12.85,12.86,12.87,12.88,12.89,12.9,12.91,12.92,12.93,12.94,12.95,12.96,12.97,12.98,12.99,13,13.01,13.02,13.03,13.04,13.05,13.06,13.07,13.08,13.09,13.1,13.11,13.12,13.13,13.14,13.15,13.16,13.17,13.18,13.19,13.2,13.21,13.22,13.23,13.24,13.25,13.26,13.27,13.28,13.29,13.3,13.31,13.32,13.33,13.34,13.35,13.36,13.37,13.38,13.39,13.4,13.41,13.42,13.43,13.44,13.45,13.46,13.47,13.48,13.49,13.5,13.51,13.52,13.53,13.54,13.55,13.56,13.57,13.58,13.59,13.6,13.61,13.62,13.63,13.64,13.65,13.66,13.67,13.68,13.69,13.7,13.71,13.72,13.73,13.74,13.75,13.76,13.77,13.78,13.79,13.8,13.81,13.82,13.83,13.84,13.85,13.86,13.87,13.88,13.89,13.9,13.91,13.92,13.93,13.94,13.95,13.96,13.97,13.98,13.99,14,14.01,14.02,14.03,14.04,14.05,14.06,14.07,14.08,14.09,14.1,14.11,14.12,14.13,14.14,14.15,14.16,14.17,14.18,14.19,14.2,14.21,14.22,14.23,14.24,14.25,14.26,14.27,14.28,14.29,14.3,14.31,14.32,14.33,14.34,14.35,14.36,14.37,14.38,14.39,14.4,14.41,14.42,14.43,14.44,14.45,14.46,14.47,14.48,14.49,14.5,14.51,14.52,14.53,14.54,14.55,14.56,14.57,14.58,14.59,14.6,14.61,14.62,14.63,14.64,14.65,14.66,14.67,14.68,14.69,14.7,14.71,14.72,14.73,14.74,14.75,14.76,14.77,14.78,14.79,14.8,14.81,14.82,14.83,14.84,14.85,14.86,14.87,14.88,14.89,14.9,14.91,14.92,14.93,14.94,14.95,14.96,14.97,14.98,14.99,15,15.01,15.02,15.03,15.04,15.05,15.06,15.07,15.08,15.09,15.1,15.11,15.12,15.13,15.14,15.15,15.16,15.17,15.18,15.19,15.2,15.21,15.22,15.23,15.24,15.25,15.26,15.27,15.28,15.29,15.3,15.31,15.32,15.33,15.34,15.35,15.36,15.37,15.38,15.39,15.4,15.41,15.42,15.43,15.44,15.45,15.46,15.47,15.48,15.49,15.5,15.51,15.52,15.53,15.54,15.55,15.56,15.57,15.58,15.59,15.6,15.61,15.62,15.63,15.64,15.65,15.66,15.67,15.68,15.69,15.7,15.71,15.72,15.73,15.74,15.75,15.76,15.77,15.78,15.79,15.8,15.81,15.82,15.83,15.84,15.85,15.86,15.87,15.88,15.89,15.9,15.91,15.92,15.93,15.94,15.95,15.96,15.97,15.98,15.99,16,16.01,16.02,16.03,16.04,16.05,16.06,16.07,16.08,16.09,16.1,16.11,16.12,16.13,16.14,16.15,16.16,16.17,16.18,16.19,16.2,16.21,16.22,16.23,16.24,16.25,16.26,16.27,16.28,16.29,16.3,16.31,16.32,16.33,16.34,16.35,16.36,16.37,16.38,16.39,16.4,16.41,16.42,16.43,16.44,16.45,16.46,16.47,16.48,16.49,16.5,16.51,16.52,16.53,16.54,16.55,16.56,16.57,16.58,16.59,16.6,16.61,16.62,16.63,16.64,16.65,16.66,16.67,16.68,16.69,16.7,16.71,16.72,16.73,16.74,16.75,16.76,16.77,16.78,16.79,16.8,16.81,16.82,16.83,16.84,16.85,16.86,16.87,16.88,16.89,16.9,16.91,16.92,16.93,16.94,16.95,16.96,16.97,16.98,16.99,17,17.01,17.02,17.03,17.04,17.05,17.06,17.07,17.08,17.09,17.1,17.11,17.12,17.13,17.14,17.15,17.16,17.17,17.18,17.19,17.2,17.21,17.22,17.23,17.24,17.25,17.26,17.27,17.28,17.29,17.3,17.31,17.32,17.33,17.34,17.35,17.36,17.37,17.38,17.39,17.4,17.41,17.42,17.43,17.44,17.45,17.46,17.47,17.48,17.49,17.5,17.51,17.52,17.53,17.54,17.55,17.56,17.57,17.58,17.59,17.6,17.61,17.62,17.63,17.64,17.65,17.66,17.67,17.68,17.69,17.7,17.71,17.72,17.73,17.74,17.75,17.76,17.77,17.78,17.79,17.8,17.81,17.82,17.83,17.84,17.85,17.86,17.87,17.88,17.89,17.9,17.91,17.92,17.93,17.94,17.95,17.96,17.97,17.98,17.99,18,18.01,18.02,18.03,18.04,18.05,18.06,18.07,18.08,18.09,18.1,18.11,18.12,18.13,18.14,18.15,18.16,18.17,18.18,18.19,18.2,18.21,18.22,18.23,18.24,18.25,18.26,18.27,18.28,18.29,18.3,18.31,18.32,18.33,18.34,18.35,18.36,18.37,18.38,18.39,18.4,18.41,18.42,18.43,18.44,18.45,18.46,18.47,18.48,18.49,18.5,18.51,18.52,18.53,18.54,18.55,18.56,18.57,18.58,18.59,18.6,18.61,18.62,18.63,18.64,18.65,18.66,18.67,18.68,18.69,18.7,18.71,18.72,18.73,18.74,18.75,18.76,18.77,18.78,18.79,18.8,18.81,18.82,18.83,18.84,18.85,18.86,18.87,18.88,18.89,18.9,18.91,18.92,18.93,18.94,18.95,18.96,18.97,18.98,18.99,19,19.01,19.02,19.03,19.04,19.05,19.06,19.07,19.08,19.09,19.1,19.11,19.12,19.13,19.14,19.15,19.16,19.17,19.18,19.19,19.2,19.21,19.22,19.23,19.24,19.25,19.26,19.27,19.28,19.29,19.3,19.31,19.32,19.33,19.34,19.35,19.36,19.37,19.38,19.39,19.4,19.41,19.42,19.43,19.44,19.45,19.46,19.47,19.48,19.49,19.5,19.51,19.52,19.53,19.54,19.55,19.56,19.57,19.58,19.59,19.6,19.61,19.62,19.63,19.64,19.65,19.66,19.67,19.68,19.69,19.7,19.71,19.72,19.73,19.74,19.75,19.76,19.77,19.78,19.79,19.8,19.81,19.82,19.83,19.84,19.85,19.86,19.87,19.88,19.89,19.9,19.91,19.92,19.93,19.94,19.95,19.96,19.97,19.98,19.99,20,20.01,20.02,20.03,20.04,20.05,20.06,20.07,20.08,20.09,20.1,20.11,20.12,20.13,20.14,20.15,20.16,20.17,20.18,20.19,20.2,20.21,20.22,20.23,20.24,20.25,20.26,20.27,20.28,20.29,20.3,20.31,20.32,20.33,20.34,20.35,20.36,20.37,20.38,20.39,20.4,20.41,20.42,20.43,20.44,20.45,20.46,20.47,20.48,20.49,20.5,20.51,20.52,20.53,20.54,20.55,20.56,20.57,20.58,20.59,20.6,20.61,20.62,20.63,20.64,20.65,20.66,20.67,20.68,20.69,20.7,20.71,20.72,20.73,20.74,20.75,20.76,20.77,20.78,20.79,20.8,20.81,20.82,20.83,20.84,20.85,20.86,20.87,20.88,20.89,20.9,20.91,20.92,20.93,20.94,20.95,20.96,20.97,20.98,20.99,21,21.01,21.02,21.03,21.04,21.05,21.06,21.07,21.08,21.09,21.1,21.11,21.12,21.13,21.14,21.15,21.16,21.17,21.18,21.19,21.2,21.21,21.22,21.23,21.24,21.25,21.26,21.27,21.28,21.29,21.3,21.31,21.32,21.33,21.34,21.35,21.36,21.37,21.38,21.39,21.4,21.41,21.42,21.43,21.44,21.45,21.46,21.47,21.48,21.49,21.5,21.51,21.52,21.53,21.54,21.55,21.56,21.57,21.58,21.59,21.6,21.61,21.62,21.63,21.64,21.65,21.66,21.67,21.68,21.69,21.7,21.71,21.72,21.73,21.74,21.75,21.76,21.77,21.78,21.79,21.8,21.81,21.82,21.83,21.84,21.85,21.86,21.87,21.88,21.89,21.9,21.91,21.92,21.93,21.94,21.95,21.96,21.97,21.98,21.99,22,22.01,22.02,22.03,22.04,22.05,22.06,22.07,22.08,22.09,22.1,22.11,22.12,22.13,22.14,22.15,22.16,22.17,22.18,22.19,22.2,22.21,22.22,22.23,22.24,22.25,22.26,22.27,22.28,22.29,22.3,22.31,22.32,22.33,22.34,22.35,22.36,22.37,22.38,22.39,22.4,22.41,22.42,22.43,22.44,22.45,22.46,22.47,22.48,22.49,22.5,22.51,22.52,22.53,22.54,22.55,22.56,22.57,22.58,22.59,22.6,22.61,22.62,22.63,22.64,22.65,22.66,22.67,22.68,22.69,22.7,22.71,22.72,22.73,22.74,22.75,22.76,22.77,22.78,22.79,22.8,22.81,22.82,22.83,22.84,22.85,22.86,22.87,22.88,22.89,22.9,22.91,22.92,22.93,22.94,22.95,22.96,22.97,22.98,22.99,23,23.01,23.02,23.03,23.04,23.05,23.06,23.07,23.08,23.09,23.1,23.11,23.12,23.13,23.14,23.15,23.16,23.17,23.18,23.19,23.2,23.21,23.22,23.23,23.24,23.25,23.26,23.27,23.28,23.29,23.3,23.31,23.32,23.33,23.34,23.35,23.36,23.37,23.38,23.39,23.4,23.41,23.42,23.43,23.44,23.45,23.46,23.47,23.48,23.49,23.5,23.51,23.52,23.53,23.54,23.55,23.56,23.57,23.58,23.59,23.6,23.61,23.62,23.63,23.64,23.65,23.66,23.67,23.68,23.69,23.7,23.71,23.72,23.73,23.74,23.75,23.76,23.77,23.78,23.79,23.8,23.81,23.82,23.83,23.84,23.85,23.86,23.87,23.88,23.89,23.9,23.91,23.92,23.93,23.94,23.95,23.96,23.97,23.98,23.99,24,24.01,24.02,24.03,24.04,24.05,24.06,24.07,24.08,24.09,24.1,24.11,24.12,24.13,24.14,24.15,24.16,24.17,24.18,24.19,24.2,24.21,24.22,24.23,24.24,24.25,24.26,24.27,24.28,24.29,24.3,24.31,24.32,24.33,24.34,24.35,24.36,24.37,24.38,24.39,24.4,24.41,24.42,24.43,24.44,24.45,24.46,24.47,24.48,24.49,24.5,24.51,24.52,24.53,24.54,24.55,24.56,24.57,24.58,24.59,24.6,24.61,24.62,24.63,24.64,24.65,24.66,24.67,24.68,24.69,24.7,24.71,24.72,24.73,24.74,24.75,24.76,24.77,24.78,24.79,24.8,24.81,24.82,24.83,24.84,24.85,24.86,24.87,24.88,24.89,24.9,24.91,24.92,24.93,24.94,24.95,24.96,24.97,24.98,24.99,25,25.01,25.02,25.03,25.04,25.05,25.06,25.07,25.08,25.09,25.1,25.11,25.12,25.13,25.14,25.15,25.16,25.17,25.18,25.19,25.2,25.21,25.22,25.23,25.24,25.25,25.26,25.27,25.28,25.29,25.3,25.31,25.32,25.33,25.34,25.35,25.36,25.37,25.38,25.39,25.4,25.41,25.42,25.43,25.44,25.45,25.46,25.47,25.48,25.49,25.5,25.51,25.52,25.53,25.54,25.55,25.56,25.57,25.58,25.59,25.6,25.61,25.62,25.63,25.64,25.65,25.66,25.67,25.68,25.69,25.7,25.71,25.72,25.73,25.74,25.75,25.76,25.77,25.78,25.79,25.8,25.81,25.82,25.83,25.84,25.85,25.86,25.87,25.88,25.89,25.9,25.91,25.92,25.93,25.94,25.95,25.96,25.97,25.98,25.99,26,26.01,26.02,26.03,26.04,26.05,26.06,26.07,26.08,26.09,26.1,26.11,26.12,26.13,26.14,26.15,26.16,26.17,26.18,26.19,26.2,26.21,26.22,26.23,26.24,26.25,26.26,26.27,26.28,26.29,26.3,26.31,26.32,26.33,26.34,26.35,26.36,26.37,26.38,26.39,26.4,26.41,26.42,26.43,26.44,26.45,26.46,26.47,26.48,26.49,26.5,26.51,26.52,26.53,26.54,26.55,26.56,26.57,26.58,26.59,26.6,26.61,26.62,26.63,26.64,26.65,26.66,26.67,26.68,26.69,26.7,26.71,26.72,26.73,26.74,26.75,26.76,26.77,26.78,26.79,26.8,26.81,26.82,26.83,26.84,26.85,26.86,26.87,26.88,26.89,26.9,26.91,26.92,26.93,26.94,26.95,26.96,26.97,26.98,26.99,27,27.01,27.02,27.03,27.04,27.05,27.06,27.07,27.08,27.09,27.1,27.11,27.12,27.13,27.14,27.15,27.16,27.17,27.18,27.19,27.2,27.21,27.22,27.23,27.24,27.25,27.26,27.27,27.28,27.29,27.3,27.31,27.32,27.33,27.34,27.35,27.36,27.37,27.38,27.39,27.4,27.41,27.42,27.43,27.44,27.45,27.46,27.47,27.48,27.49,27.5,27.51,27.52,27.53,27.54,27.55,27.56,27.57,27.58,27.59,27.6,27.61,27.62,27.63,27.64,27.65,27.66,27.67,27.68,27.69,27.7,27.71,27.72,27.73,27.74,27.75,27.76,27.77,27.78,27.79,27.8,27.81,27.82,27.83,27.84,27.85,27.86,27.87,27.88,27.89,27.9,27.91,27.92,27.93,27.94,27.95,27.96,27.97,27.98,27.99,28,28.01,28.02,28.03,28.04,28.05,28.06,28.07,28.08,28.09,28.1,28.11,28.12,28.13,28.14,28.15,28.16,28.17,28.18,28.19,28.2,28.21,28.22,28.23,28.24,28.25,28.26,28.27,28.28,28.29,28.3,28.31,28.32,28.33,28.34,28.35,28.36,28.37,28.38,28.39,28.4,28.41,28.42,28.43,28.44,28.45,28.46,28.47,28.48,28.49,28.5,28.51,28.52,28.53,28.54,28.55,28.56,28.57,28.58,28.59,28.6,28.61,28.62,28.63,28.64,28.65,28.66,28.67,28.68,28.69,28.7,28.71,28.72,28.73,28.74,28.75,28.76,28.77,28.78,28.79,28.8,28.81,28.82,28.83,28.84,28.85,28.86,28.87,28.88,28.89,28.9,28.91,28.92,28.93,28.94,28.95,28.96,28.97,28.98,28.99,29,29.01,29.02,29.03,29.04,29.05,29.06,29.07,29.08,29.09,29.1,29.11,29.12,29.13,29.14,29.15,29.16,29.17,29.18,29.19,29.2,29.21,29.22,29.23,29.24,29.25,29.26,29.27,29.28,29.29,29.3,29.31,29.32,29.33,29.34,29.35,29.36,29.37,29.38,29.39,29.4,29.41,29.42,29.43,29.44,29.45,29.46,29.47,29.48,29.49,29.5,29.51,29.52,29.53,29.54,29.55,29.56,29.57,29.58,29.59,29.6,29.61,29.62,29.63,29.64,29.65,29.66,29.67,29.68,29.69,29.7,29.71,29.72,29.73,29.74,29.75,29.76,29.77,29.78,29.79,29.8,29.81,29.82,29.83,29.84,29.85,29.86,29.87,29.88,29.89,29.9,29.91,29.92,29.93,29.94,29.95,29.96,29.97,29.98,29.99,30,30.01,30.02,30.03,30.04,30.05,30.06,30.07,30.08,30.09,30.1,30.11,30.12,30.13,30.14,30.15,30.16,30.17,30.18,30.19,30.2,30.21,30.22,30.23,30.24,30.25,30.26,30.27,30.28,30.29,30.3,30.31,30.32,30.33,30.34,30.35,30.36,30.37,30.38,30.39,30.4,30.41,30.42,30.43,30.44,30.45,30.46,30.47,30.48,30.49,30.5,30.51,30.52,30.53,30.54,30.55,30.56,30.57,30.58,30.59,30.6,30.61,30.62,30.63,30.64,30.65,30.66,30.67,30.68,30.69,30.7,30.71,30.72,30.73,30.74,30.75,30.76,30.77,30.78,30.79,30.8,30.81,30.82,30.83,30.84,30.85,30.86,30.87,30.88,30.89,30.9,30.91,30.92,30.93,30.94,30.95,30.96,30.97,30.98,30.99,31,31.01,31.02,31.03,31.04,31.05,31.06,31.07,31.08,31.09,31.1,31.11,31.12,31.13,31.14,31.15,31.16,31.17,31.18,31.19,31.2,31.21,31.22,31.23,31.24,31.25,31.26,31.27,31.28,31.29,31.3,31.31,31.32,31.33,31.34,31.35,31.36,31.37,31.38,31.39,31.4,31.41,31.42,31.43,31.44,31.45,31.46,31.47,31.48,31.49,31.5,31.51,31.52,31.53,31.54,31.55,31.56,31.57,31.58,31.59,31.6,31.61,31.62,31.63,31.64,31.65,31.66,31.67,31.68,31.69,31.7,31.71,31.72,31.73,31.74,31.75,31.76,31.77,31.78,31.79,31.8,31.81,31.82,31.83,31.84,31.85,31.86,31.87,31.88,31.89,31.9,31.91,31.92,31.93,31.94,31.95,31.96,31.97,31.98,31.99,32,32.01,32.02,32.03,32.04,32.05,32.06,32.07,32.08,32.09,32.1,32.11,32.12,32.13,32.14,32.15,32.16,32.17,32.18,32.19,32.2,32.21,32.22,32.23,32.24,32.25,32.26,32.27,32.28,32.29,32.3,32.31,32.32,32.33,32.34,32.35,32.36,32.37,32.38,32.39,32.4,32.41,32.42,32.43,32.44,32.45,32.46,32.47,32.48,32.49,32.5,32.51,32.52,32.53,32.54,32.55,32.56,32.57,32.58,32.59,32.6,32.61,32.62,32.63,32.64,32.65,32.66,32.67,32.68,32.69,32.7,32.71,32.72,32.73,32.74,32.75,32.76,32.77,32.78,32.79,32.8,32.81,32.82,32.83,32.84,32.85,32.86,32.87,32.88,32.89,32.9,32.91,32.92,32.93,32.94,32.95,32.96,32.97,32.98,32.99,33,33.01,33.02,33.03,33.04,33.05,33.06,33.07,33.08,33.09,33.1,33.11,33.12,33.13,33.14,33.15,33.16,33.17,33.18,33.19,33.2,33.21,33.22,33.23,33.24,33.25,33.26,33.27,33.28,33.29,33.3,33.31,33.32,33.33,33.34,33.35,33.36,33.37,33.38,33.39,33.4,33.41,33.42,33.43,33.44,33.45,33.46,33.47,33.48,33.49,33.5,33.51,33.52,33.53,33.54,33.55,33.56,33.57,33.58,33.59,33.6,33.61,33.62,33.63,33.64,33.65,33.66,33.67,33.68,33.69,33.7,33.71,33.72,33.73,33.74,33.75,33.76,33.77,33.78,33.79,33.8,33.81,33.82,33.83,33.84,33.85,33.86,33.87,33.88,33.89,33.9,33.91,33.92,33.93,33.94,33.95,33.96,33.97,33.98,33.99,34,34.01,34.02,34.03,34.04,34.05,34.06,34.07,34.08,34.09,34.1,34.11,34.12,34.13,34.14,34.15,34.16,34.17,34.18,34.19,34.2,34.21,34.22,34.23,34.24,34.25,34.26,34.27,34.28,34.29,34.3,34.31,34.32,34.33,34.34,34.35,34.36,34.37,34.38,34.39,34.4,34.41,34.42,34.43,34.44,34.45,34.46,34.47,34.48,34.49,34.5,34.51,34.52,34.53,34.54,34.55,34.56,34.57,34.58,34.59,34.6,34.61,34.62,34.63,34.64,34.65,34.66,34.67,34.68,34.69,34.7,34.71,34.72,34.73,34.74,34.75,34.76,34.77,34.78,34.79,34.8,34.81,34.82,34.83,34.84,34.85,34.86,34.87,34.88,34.89,34.9,34.91,34.92,34.93,34.94,34.95,34.96,34.97,34.98,34.99,35,35.01,35.02,35.03,35.04,35.05,35.06,35.07,35.08,35.09,35.1,35.11,35.12,35.13,35.14,35.15,35.16,35.17,35.18,35.19,35.2,35.21,35.22,35.23,35.24,35.25,35.26,35.27,35.28,35.29,35.3,35.31,35.32,35.33,35.34,35.35,35.36,35.37,35.38,35.39,35.4,35.41,35.42,35.43,35.44,35.45,35.46,35.47,35.48,35.49,35.5,35.51,35.52,35.53,35.54,35.55,35.56,35.57,35.58,35.59,35.6,35.61,35.62,35.63,35.64,35.65,35.66,35.67,35.68,35.69,35.7,35.71,35.72,35.73,35.74,35.75,35.76,35.77,35.78,35.79,35.8,35.81,35.82,35.83,35.84,35.85,35.86,35.87,35.88,35.89,35.9,35.91,35.92,35.93,35.94,35.95,35.96,35.97,35.98,35.99,36,36.01,36.02,36.03,36.04,36.05,36.06,36.07,36.08,36.09,36.1,36.11,36.12,36.13,36.14,36.15,36.16,36.17,36.18,36.19,36.2,36.21,36.22,36.23,36.24,36.25,36.26,36.27,36.28,36.29,36.3,36.31,36.32,36.33,36.34,36.35,36.36,36.37,36.38,36.39,36.4,36.41,36.42,36.43,36.44,36.45,36.46,36.47,36.48,36.49,36.5,36.51,36.52,36.53,36.54,36.55,36.56,36.57,36.58,36.59,36.6,36.61,36.62,36.63,36.64,36.65,36.66,36.67,36.68,36.69,36.7,36.71,36.72,36.73,36.74,36.75,36.76,36.77,36.78,36.79,36.8,36.81,36.82,36.83,36.84,36.85,36.86,36.87,36.88,36.89,36.9,36.91,36.92,36.93,36.94,36.95,36.96,36.97,36.98,36.99,37,37.01,37.02,37.03,37.04,37.05,37.06,37.07,37.08,37.09,37.1,37.11,37.12,37.13,37.14,37.15,37.16,37.17,37.18,37.19,37.2,37.21,37.22,37.23,37.24,37.25,37.26,37.27,37.28,37.29,37.3,37.31,37.32,37.33,37.34,37.35,37.36,37.37,37.38,37.39,37.4,37.41,37.42,37.43,37.44,37.45,37.46,37.47,37.48,37.49,37.5,37.51,37.52,37.53,37.54,37.55,37.56,37.57,37.58,37.59,37.6,37.61,37.62,37.63,37.64,37.65,37.66,37.67,37.68,37.69,37.7,37.71,37.72,37.73,37.74,37.75,37.76,37.77,37.78,37.79,37.8,37.81,37.82,37.83,37.84,37.85,37.86,37.87,37.88,37.89,37.9,37.91,37.92,37.93,37.94,37.95,37.96,37.97,37.98,37.99,38,38.01,38.02,38.03,38.04,38.05,38.06,38.07,38.08,38.09,38.1,38.11,38.12,38.13,38.14,38.15,38.16,38.17,38.18,38.19,38.2,38.21,38.22,38.23,38.24,38.25,38.26,38.27,38.28,38.29,38.3,38.31,38.32,38.33,38.34,38.35,38.36,38.37,38.38,38.39,38.4,38.41,38.42,38.43,38.44,38.45,38.46,38.47,38.48,38.49,38.5,38.51,38.52,38.53,38.54,38.55,38.56,38.57,38.58,38.59,38.6,38.61,38.62,38.63,38.64,38.65,38.66,38.67,38.68,38.69,38.7,38.71,38.72,38.73,38.74,38.75,38.76,38.77,38.78,38.79,38.8,38.81,38.82,38.83,38.84,38.85,38.86,38.87,38.88,38.89,38.9,38.91,38.92,38.93,38.94,38.95,38.96,38.97,38.98,38.99,39,39.01,39.02,39.03,39.04,39.05,39.06,39.07,39.08,39.09,39.1,39.11,39.12,39.13,39.14,39.15,39.16,39.17,39.18,39.19,39.2,39.21,39.22,39.23,39.24,39.25,39.26,39.27,39.28,39.29,39.3,39.31,39.32,39.33,39.34,39.35,39.36,39.37,39.38,39.39,39.4,39.41,39.42,39.43,39.44,39.45,39.46,39.47,39.48,39.49,39.5,39.51,39.52,39.53,39.54,39.55,39.56,39.57,39.58,39.59,39.6,39.61,39.62,39.63,39.64,39.65,39.66,39.67,39.68,39.69,39.7,39.71,39.72,39.73,39.74,39.75,39.76,39.77,39.78,39.79,39.8,39.81,39.82,39.83,39.84,39.85,39.86,39.87,39.88,39.89,39.9,39.91,39.92,39.93,39.94,39.95,39.96,39.97,39.98,39.99,40,40.01,40.02,40.03,40.04,40.05,40.06,40.07,40.08,40.09,40.1,40.11,40.12,40.13,40.14,40.15,40.16,40.17,40.18,40.19,40.2,40.21,40.22,40.23,40.24,40.25,40.26,40.27,40.28,40.29,40.3,40.31,40.32,40.33,40.34,40.35,40.36,40.37,40.38,40.39,40.4,40.41,40.42,40.43,40.44,40.45,40.46,40.47,40.48,40.49,40.5,40.51,40.52,40.53,40.54,40.55,40.56,40.57,40.58,40.59,40.6,40.61,40.62,40.63,40.64,40.65,40.66,40.67,40.68,40.69,40.7,40.71,40.72,40.73,40.74,40.75,40.76,40.77,40.78,40.79,40.8,40.81,40.82,40.83,40.84,40.85,40.86,40.87,40.88,40.89,40.9,40.91,40.92,40.93,40.94,40.95,40.96,40.97,40.98,40.99,41,41.01,41.02,41.03,41.04,41.05,41.06,41.07,41.08,41.09,41.1,41.11,41.12,41.13,41.14,41.15,41.16,41.17,41.18,41.19,41.2,41.21,41.22,41.23,41.24,41.25,41.26,41.27,41.28,41.29,41.3,41.31,41.32,41.33,41.34,41.35,41.36,41.37,41.38,41.39,41.4,41.41,41.42,41.43,41.44,41.45,41.46,41.47,41.48,41.49,41.5,41.51,41.52,41.53,41.54,41.55,41.56,41.57,41.58,41.59,41.6,41.61,41.62,41.63,41.64,41.65,41.66,41.67,41.68,41.69,41.7,41.71,41.72,41.73,41.74,41.75,41.76,41.77,41.78,41.79,41.8,41.81,41.82,41.83,41.84,41.85,41.86,41.87,41.88,41.89,41.9,41.91,41.92,41.93,41.94,41.95,41.96,41.97,41.98,41.99,42,42.01,42.02,42.03,42.04,42.05,42.06,42.07,42.08,42.09,42.1,42.11,42.12,42.13,42.14,42.15,42.16,42.17,42.18,42.19,42.2,42.21,42.22,42.23,42.24,42.25,42.26,42.27,42.28,42.29,42.3,42.31,42.32,42.33,42.34,42.35,42.36,42.37,42.38,42.39,42.4,42.41,42.42,42.43,42.44,42.45,42.46,42.47,42.48,42.49,42.5,42.51,42.52,42.53,42.54,42.55,42.56,42.57,42.58,42.59,42.6,42.61,42.62,42.63,42.64,42.65,42.66,42.67,42.68,42.69,42.7,42.71,42.72,42.73,42.74,42.75,42.76,42.77,42.78,42.79,42.8,42.81,42.82,42.83,42.84,42.85,42.86,42.87,42.88,42.89,42.9,42.91,42.92,42.93,42.94,42.95,42.96,42.97,42.98,42.99,43,43.01,43.02,43.03,43.04,43.05,43.06,43.07,43.08,43.09,43.1,43.11,43.12,43.13,43.14,43.15,43.16,43.17,43.18,43.19,43.2,43.21,43.22,43.23,43.24,43.25,43.26,43.27,43.28,43.29,43.3,43.31,43.32,43.33,43.34,43.35,43.36,43.37,43.38,43.39,43.4,43.41,43.42,43.43,43.44,43.45,43.46,43.47,43.48,43.49,43.5,43.51,43.52,43.53,43.54,43.55,43.56,43.57,43.58,43.59,43.6,43.61,43.62,43.63,43.64,43.65,43.66,43.67,43.68,43.69,43.7,43.71,43.72,43.73,43.74,43.75,43.76,43.77,43.78,43.79,43.8,43.81,43.82,43.83,43.84,43.85,43.86,43.87,43.88,43.89,43.9,43.91,43.92,43.93,43.94,43.95,43.96,43.97,43.98,43.99,44,44.01,44.02,44.03,44.04,44.05,44.06,44.07,44.08,44.09,44.1,44.11,44.12,44.13,44.14,44.15,44.16,44.17,44.18,44.19,44.2,44.21,44.22,44.23,44.24,44.25,44.26,44.27,44.28,44.29,44.3,44.31,44.32,44.33,44.34,44.35,44.36,44.37,44.38,44.39,44.4,44.41,44.42,44.43,44.44,44.45,44.46,44.47,44.48,44.49,44.5,44.51,44.52,44.53,44.54,44.55,44.56,44.57,44.58,44.59,44.6,44.61,44.62,44.63,44.64,44.65,44.66,44.67,44.68,44.69,44.7,44.71,44.72,44.73,44.74,44.75,44.76,44.77,44.78,44.79,44.8,44.81,44.82,44.83,44.84,44.85,44.86,44.87,44.88,44.89,44.9,44.91,44.92,44.93,44.94,44.95,44.96,44.97,44.98,44.99,45,45.01,45.02,45.03,45.04,45.05,45.06,45.07,45.08,45.09,45.1,45.11,45.12,45.13,45.14,45.15,45.16,45.17,45.18,45.19,45.2,45.21,45.22,45.23,45.24,45.25,45.26,45.27,45.28,45.29,45.3,45.31,45.32,45.33,45.34,45.35,45.36,45.37,45.38,45.39,45.4,45.41,45.42,45.43,45.44,45.45,45.46,45.47,45.48,45.49,45.5,45.51,45.52,45.53,45.54,45.55,45.56,45.57,45.58,45.59,45.6,45.61,45.62,45.63,45.64,45.65,45.66,45.67,45.68,45.69,45.7,45.71,45.72,45.73,45.74,45.75,45.76,45.77,45.78,45.79,45.8,45.81,45.82,45.83,45.84,45.85,45.86,45.87,45.88,45.89,45.9,45.91,45.92,45.93,45.94,45.95,45.96,45.97,45.98,45.99,46,46.01,46.02,46.03,46.04,46.05,46.06,46.07,46.08,46.09,46.1,46.11,46.12,46.13,46.14,46.15,46.16,46.17,46.18,46.19,46.2,46.21,46.22,46.23,46.24,46.25,46.26,46.27,46.28,46.29,46.3,46.31,46.32,46.33,46.34,46.35,46.36,46.37,46.38,46.39,46.4,46.41,46.42,46.43,46.44,46.45,46.46,46.47,46.48,46.49,46.5,46.51,46.52,46.53,46.54,46.55,46.56,46.57,46.58,46.59,46.6,46.61,46.62,46.63,46.64,46.65,46.66,46.67,46.68,46.69,46.7,46.71,46.72,46.73,46.74,46.75,46.76,46.77,46.78,46.79,46.8,46.81,46.82,46.83,46.84,46.85,46.86,46.87,46.88,46.89,46.9,46.91,46.92,46.93,46.94,46.95,46.96,46.97,46.98,46.99,47,47.01,47.02,47.03,47.04,47.05,47.06,47.07,47.08,47.09,47.1,47.11,47.12,47.13,47.14,47.15,47.16,47.17,47.18,47.19,47.2,47.21,47.22,47.23,47.24,47.25,47.26,47.27,47.28,47.29,47.3,47.31,47.32,47.33,47.34,47.35,47.36,47.37,47.38,47.39,47.4,47.41,47.42,47.43,47.44,47.45,47.46,47.47,47.48,47.49,47.5,47.51,47.52,47.53,47.54,47.55,47.56,47.57,47.58,47.59,47.6,47.61,47.62,47.63,47.64,47.65,47.66,47.67,47.68,47.69,47.7,47.71,47.72,47.73,47.74,47.75,47.76,47.77,47.78,47.79,47.8,47.81,47.82,47.83,47.84,47.85,47.86,47.87,47.88,47.89,47.9,47.91,47.92,47.93,47.94,47.95,47.96,47.97,47.98,47.99,48,48.01,48.02,48.03,48.04,48.05,48.06,48.07,48.08,48.09,48.1,48.11,48.12,48.13,48.14,48.15,48.16,48.17,48.18,48.19,48.2,48.21,48.22,48.23,48.24,48.25,48.26,48.27,48.28,48.29,48.3,48.31,48.32,48.33,48.34,48.35,48.36,48.37,48.38,48.39,48.4,48.41,48.42,48.43,48.44,48.45,48.46,48.47,48.48,48.49,48.5,48.51,48.52,48.53,48.54,48.55,48.56,48.57,48.58,48.59,48.6,48.61,48.62,48.63,48.64,48.65,48.66,48.67,48.68,48.69,48.7,48.71,48.72,48.73,48.74,48.75,48.76,48.77,48.78,48.79,48.8,48.81,48.82,48.83,48.84,48.85,48.86,48.87,48.88,48.89,48.9,48.91,48.92,48.93,48.94,48.95,48.96,48.97,48.98,48.99,49,49.01,49.02,49.03,49.04,49.05,49.06,49.07,49.08,49.09,49.1,49.11,49.12,49.13,49.14,49.15,49.16,49.17,49.18,49.19,49.2,49.21,49.22,49.23,49.24,49.25,49.26,49.27,49.28,49.29,49.3,49.31,49.32,49.33,49.34,49.35,49.36,49.37,49.38,49.39,49.4,49.41,49.42,49.43,49.44,49.45,49.46,49.47,49.48,49.49,49.5,49.51,49.52,49.53,49.54,49.55,49.56,49.57,49.58,49.59,49.6,49.61,49.62,49.63,49.64,49.65,49.66,49.67,49.68,49.69,49.7,49.71,49.72,49.73,49.74,49.75,49.76,49.77,49.78,49.79,49.8,49.81,49.82,49.83,49.84,49.85,49.86,49.87,49.88,49.89,49.9,49.91,49.92,49.93,49.94,49.95,49.96,49.97,49.98,49.99,50,50.01,50.02,50.03,50.04,50.05,50.06,50.07,50.08,50.09,50.1,50.11,50.12,50.13,50.14,50.15,50.16,50.17,50.18,50.19,50.2,50.21,50.22,50.23,50.24,50.25,50.26,50.27,50.28,50.29,50.3,50.31,50.32,50.33,50.34,50.35,50.36,50.37,50.38,50.39,50.4,50.41,50.42,50.43,50.44,50.45,50.46,50.47,50.48,50.49,50.5,50.51,50.52,50.53,50.54,50.55,50.56,50.57,50.58,50.59,50.6,50.61,50.62,50.63,50.64,50.65,50.66,50.67,50.68,50.69,50.7,50.71,50.72,50.73,50.74,50.75,50.76,50.77,50.78,50.79,50.8,50.81,50.82,50.83,50.84,50.85,50.86,50.87,50.88,50.89,50.9,50.91,50.92,50.93,50.94,50.95,50.96,50.97,50.98,50.99,51,51.01,51.02,51.03,51.04,51.05,51.06,51.07,51.08,51.09,51.1,51.11,51.12,51.13,51.14,51.15,51.16,51.17,51.18,51.19,51.2,51.21,51.22,51.23,51.24,51.25,51.26,51.27,51.28,51.29,51.3,51.31,51.32,51.33,51.34,51.35,51.36,51.37,51.38,51.39,51.4,51.41,51.42,51.43,51.44,51.45,51.46,51.47,51.48,51.49,51.5,51.51,51.52,51.53,51.54,51.55,51.56,51.57,51.58,51.59,51.6,51.61,51.62,51.63,51.64,51.65,51.66,51.67,51.68,51.69,51.7,51.71,51.72,51.73,51.74,51.75,51.76,51.77,51.78,51.79,51.8,51.81,51.82,51.83,51.84,51.85,51.86,51.87,51.88,51.89,51.9,51.91,51.92,51.93,51.94,51.95,51.96,51.97,51.98,51.99,52,52.01,52.02,52.03,52.04,52.05,52.06,52.07,52.08,52.09,52.1,52.11,52.12,52.13,52.14,52.15,52.16,52.17,52.18,52.19,52.2,52.21,52.22,52.23,52.24,52.25,52.26,52.27,52.28,52.29,52.3,52.31,52.32,52.33,52.34,52.35,52.36,52.37,52.38,52.39,52.4,52.41,52.42,52.43,52.44,52.45,52.46,52.47,52.48,52.49,52.5,52.51,52.52,52.53,52.54,52.55,52.56,52.57,52.58,52.59,52.6,52.61,52.62,52.63,52.64,52.65,52.66,52.67,52.68,52.69,52.7,52.71,52.72,52.73,52.74,52.75,52.76,52.77,52.78,52.79,52.8,52.81,52.82,52.83,52.84,52.85,52.86,52.87,52.88,52.89,52.9,52.91,52.92,52.93,52.94,52.95,52.96,52.97,52.98,52.99,53,53.01,53.02,53.03,53.04,53.05,53.06,53.07,53.08,53.09,53.1,53.11,53.12,53.13,53.14,53.15,53.16,53.17,53.18,53.19,53.2,53.21,53.22,53.23,53.24,53.25,53.26,53.27,53.28,53.29,53.3,53.31,53.32,53.33,53.34,53.35,53.36,53.37,53.38,53.39,53.4,53.41,53.42,53.43,53.44,53.45,53.46,53.47,53.48,53.49,53.5,53.51,53.52,53.53,53.54,53.55,53.56,53.57,53.58,53.59,53.6,53.61,53.62,53.63,53.64,53.65,53.66,53.67,53.68,53.69,53.7,53.71,53.72,53.73,53.74,53.75,53.76,53.77,53.78,53.79,53.8,53.81,53.82,53.83,53.84,53.85,53.86,53.87,53.88,53.89,53.9,53.91,53.92,53.93,53.94,53.95,53.96,53.97,53.98,53.99,54,54.01,54.02,54.03,54.04,54.05,54.06,54.07,54.08,54.09,54.1,54.11,54.12,54.13,54.14,54.15,54.16,54.17,54.18,54.19,54.2,54.21,54.22,54.23,54.24,54.25,54.26,54.27,54.28,54.29,54.3,54.31,54.32,54.33,54.34,54.35,54.36,54.37,54.38,54.39,54.4,54.41,54.42,54.43,54.44,54.45,54.46,54.47,54.48,54.49,54.5,54.51,54.52,54.53,54.54,54.55,54.56,54.57,54.58,54.59,54.6,54.61,54.62,54.63,54.64,54.65,54.66,54.67,54.68,54.69,54.7,54.71,54.72,54.73,54.74,54.75,54.76,54.77,54.78,54.79,54.8,54.81,54.82,54.83,54.84,54.85,54.86,54.87,54.88,54.89,54.9,54.91,54.92,54.93,54.94,54.95,54.96,54.97,54.98,54.99,55,55.01,55.02,55.03,55.04,55.05,55.06,55.07,55.08,55.09,55.1,55.11,55.12,55.13,55.14,55.15,55.16,55.17,55.18,55.19,55.2,55.21,55.22,55.23,55.24,55.25,55.26,55.27,55.28,55.29,55.3,55.31,55.32,55.33,55.34,55.35,55.36,55.37,55.38,55.39,55.4,55.41,55.42,55.43,55.44,55.45,55.46,55.47,55.48,55.49,55.5,55.51,55.52,55.53,55.54,55.55,55.56,55.57,55.58,55.59,55.6,55.61,55.62,55.63,55.64,55.65,55.66,55.67,55.68,55.69,55.7,55.71,55.72,55.73,55.74,55.75,55.76,55.77,55.78,55.79,55.8,55.81,55.82,55.83,55.84,55.85,55.86,55.87,55.88,55.89,55.9,55.91,55.92,55.93,55.94,55.95,55.96,55.97,55.98,55.99,56,56.01,56.02,56.03,56.04,56.05,56.06,56.07,56.08,56.09,56.1,56.11,56.12,56.13,56.14,56.15,56.16,56.17,56.18,56.19,56.2,56.21,56.22,56.23,56.24,56.25,56.26,56.27,56.28,56.29,56.3,56.31,56.32,56.33,56.34,56.35,56.36,56.37,56.38,56.39,56.4,56.41,56.42,56.43,56.44,56.45,56.46,56.47,56.48,56.49,56.5,56.51,56.52,56.53,56.54,56.55,56.56,56.57,56.58,56.59,56.6,56.61,56.62,56.63,56.64,56.65,56.66,56.67,56.68,56.69,56.7,56.71,56.72,56.73,56.74,56.75,56.76,56.77,56.78,56.79,56.8,56.81,56.82,56.83,56.84,56.85,56.86,56.87,56.88,56.89,56.9,56.91,56.92,56.93,56.94,56.95,56.96,56.97,56.98,56.99,57,57.01,57.02,57.03,57.04,57.05,57.06,57.07,57.08,57.09,57.1,57.11,57.12,57.13,57.14,57.15,57.16,57.17,57.18,57.19,57.2,57.21,57.22,57.23,57.24,57.25,57.26,57.27,57.28,57.29,57.3,57.31,57.32,57.33,57.34,57.35,57.36,57.37,57.38,57.39,57.4,57.41,57.42,57.43,57.44,57.45,57.46,57.47,57.48,57.49,57.5,57.51,57.52,57.53,57.54,57.55,57.56,57.57,57.58,57.59,57.6,57.61,57.62,57.63,57.64,57.65,57.66,57.67,57.68,57.69,57.7,57.71,57.72,57.73,57.74,57.75,57.76,57.77,57.78,57.79,57.8,57.81,57.82,57.83,57.84,57.85,57.86,57.87,57.88,57.89,57.9,57.91,57.92,57.93,57.94,57.95,57.96,57.97,57.98,57.99,58,58.01,58.02,58.03,58.04,58.05,58.06,58.07,58.08,58.09,58.1,58.11,58.12,58.13,58.14,58.15,58.16,58.17,58.18,58.19,58.2,58.21,58.22,58.23,58.24,58.25,58.26,58.27,58.28,58.29,58.3,58.31,58.32,58.33,58.34,58.35,58.36,58.37,58.38,58.39,58.4,58.41,58.42,58.43,58.44,58.45,58.46,58.47,58.48,58.49,58.5,58.51,58.52,58.53,58.54,58.55,58.56,58.57,58.58,58.59,58.6,58.61,58.62,58.63,58.64,58.65,58.66,58.67,58.68,58.69,58.7,58.71,58.72,58.73,58.74,58.75,58.76,58.77,58.78,58.79,58.8,58.81,58.82,58.83,58.84,58.85,58.86,58.87,58.88,58.89,58.9,58.91,58.92,58.93,58.94,58.95,58.96,58.97,58.98,58.99,59,59.01,59.02,59.03,59.04,59.05,59.06,59.07,59.08,59.09,59.1,59.11,59.12,59.13,59.14,59.15,59.16,59.17,59.18,59.19,59.2,59.21,59.22,59.23,59.24,59.25,59.26,59.27,59.28,59.29,59.3,59.31,59.32,59.33,59.34,59.35,59.36,59.37,59.38,59.39,59.4,59.41,59.42,59.43,59.44,59.45,59.46,59.47,59.48,59.49,59.5,59.51,59.52,59.53,59.54,59.55,59.56,59.57,59.58,59.59,59.6,59.61,59.62,59.63,59.64,59.65,59.66,59.67,59.68,59.69,59.7,59.71,59.72,59.73,59.74,59.75,59.76,59.77,59.78,59.79,59.8,59.81,59.82,59.83,59.84,59.85,59.86,59.87,59.88,59.89,59.9,59.91,59.92,59.93,59.94,59.95,59.96,59.97,59.98,59.99,60,60.01,60.02,60.03,60.04,60.05,60.06,60.07,60.08,60.09,60.1,60.11,60.12,60.13,60.14,60.15,60.16,60.17,60.18,60.19,60.2,60.21,60.22,60.23,60.24,60.25,60.26,60.27,60.28,60.29,60.3,60.31,60.32,60.33,60.34,60.35,60.36,60.37,60.38,60.39,60.4,60.41,60.42,60.43,60.44,60.45,60.46,60.47,60.48,60.49,60.5,60.51,60.52,60.53,60.54,60.55,60.56,60.57,60.58,60.59,60.6,60.61,60.62,60.63,60.64,60.65,60.66,60.67,60.68,60.69,60.7,60.71,60.72,60.73,60.74,60.75,60.76,60.77,60.78,60.79,60.8,60.81,60.82,60.83,60.84,60.85,60.86,60.87,60.88,60.89,60.9,60.91,60.92,60.93,60.94,60.95,60.96,60.97,60.98,60.99,61,61.01,61.02,61.03,61.04,61.05,61.06,61.07,61.08,61.09,61.1,61.11,61.12,61.13,61.14,61.15,61.16,61.17,61.18,61.19,61.2,61.21,61.22,61.23,61.24,61.25,61.26,61.27,61.28,61.29,61.3,61.31,61.32,61.33,61.34,61.35,61.36,61.37,61.38,61.39,61.4,61.41,61.42,61.43,61.44,61.45,61.46,61.47,61.48,61.49,61.5,61.51,61.52,61.53,61.54,61.55,61.56,61.57,61.58,61.59,61.6,61.61,61.62,61.63,61.64,61.65,61.66,61.67,61.68,61.69,61.7,61.71,61.72,61.73,61.74,61.75,61.76,61.77,61.78,61.79,61.8,61.81,61.82,61.83,61.84,61.85,61.86,61.87,61.88,61.89,61.9,61.91,61.92,61.93,61.94,61.95,61.96,61.97,61.98,61.99,62,62.01,62.02,62.03,62.04,62.05,62.06,62.07,62.08,62.09,62.1,62.11,62.12,62.13,62.14,62.15,62.16,62.17,62.18,62.19,62.2,62.21,62.22,62.23,62.24,62.25,62.26,62.27,62.28,62.29,62.3,62.31,62.32,62.33,62.34,62.35,62.36,62.37,62.38,62.39,62.4,62.41,62.42,62.43,62.44,62.45,62.46,62.47,62.48,62.49,62.5,62.51,62.52,62.53,62.54,62.55,62.56,62.57,62.58,62.59,62.6,62.61,62.62,62.63,62.64,62.65,62.66,62.67,62.68,62.69,62.7,62.71,62.72,62.73,62.74,62.75,62.76,62.77,62.78,62.79,62.8,62.81,62.82,62.83,62.84,62.85,62.86,62.87,62.88,62.89,62.9,62.91,62.92,62.93,62.94,62.95,62.96,62.97,62.98,62.99,63,63.01,63.02,63.03,63.04,63.05,63.06,63.07,63.08,63.09,63.1,63.11,63.12,63.13,63.14,63.15,63.16,63.17,63.18,63.19,63.2,63.21,63.22,63.23,63.24,63.25,63.26,63.27,63.28,63.29,63.3,63.31,63.32,63.33,63.34,63.35,63.36,63.37,63.38,63.39,63.4,63.41,63.42,63.43,63.44,63.45,63.46,63.47,63.48,63.49,63.5,63.51,63.52,63.53,63.54,63.55,63.56,63.57,63.58,63.59,63.6,63.61,63.62,63.63,63.64,63.65,63.66,63.67,63.68,63.69,63.7,63.71,63.72,63.73,63.74,63.75,63.76,63.77,63.78,63.79,63.8,63.81,63.82,63.83,63.84,63.85,63.86,63.87,63.88,63.89,63.9,63.91,63.92,63.93,63.94,63.95,63.96,63.97,63.98,63.99,64,64.01,64.02,64.03,64.04,64.05,64.06,64.07,64.08,64.09,64.1,64.11,64.12,64.13,64.14,64.15,64.16,64.17,64.18,64.19,64.2,64.21,64.22,64.23,64.24,64.25,64.26,64.27,64.28,64.29,64.3,64.31,64.32,64.33,64.34,64.35,64.36,64.37,64.38,64.39,64.4,64.41,64.42,64.43,64.44,64.45,64.46,64.47,64.48,64.49,64.5,64.51,64.52,64.53,64.54,64.55,64.56,64.57,64.58,64.59,64.6,64.61,64.62,64.63,64.64,64.65,64.66,64.67,64.68,64.69,64.7,64.71,64.72,64.73,64.74,64.75,64.76,64.77,64.78,64.79,64.8,64.81,64.82,64.83,64.84,64.85,64.86,64.87,64.88,64.89,64.9,64.91,64.92,64.93,64.94,64.95,64.96,64.97,64.98,64.99,65,65.01,65.02,65.03,65.04,65.05,65.06,65.07,65.08,65.09,65.1,65.11,65.12,65.13,65.14,65.15,65.16,65.17,65.18,65.19,65.2,65.21,65.22,65.23,65.24,65.25,65.26,65.27,65.28,65.29,65.3,65.31,65.32,65.33,65.34,65.35,65.36,65.37,65.38,65.39,65.4,65.41,65.42,65.43,65.44,65.45,65.46,65.47,65.48,65.49,65.5,65.51,65.52,65.53,65.54,65.55,65.56,65.57,65.58,65.59,65.6,65.61,65.62,65.63,65.64,65.65,65.66,65.67,65.68,65.69,65.7,65.71,65.72,65.73,65.74,65.75,65.76,65.77,65.78,65.79,65.8,65.81,65.82,65.83,65.84,65.85,65.86,65.87,65.88,65.89,65.9,65.91,65.92,65.93,65.94,65.95,65.96,65.97,65.98,65.99,66,66.01,66.02,66.03,66.04,66.05,66.06,66.07,66.08,66.09,66.1,66.11,66.12,66.13,66.14,66.15,66.16,66.17,66.18,66.19,66.2,66.21,66.22,66.23,66.24,66.25,66.26,66.27,66.28,66.29,66.3,66.31,66.32,66.33,66.34,66.35,66.36,66.37,66.38,66.39,66.4,66.41,66.42,66.43,66.44,66.45,66.46,66.47,66.48,66.49,66.5,66.51,66.52,66.53,66.54,66.55,66.56,66.57,66.58,66.59,66.6,66.61,66.62,66.63,66.64,66.65,66.66,66.67,66.68,66.69,66.7,66.71,66.72,66.73,66.74,66.75,66.76,66.77,66.78,66.79,66.8,66.81,66.82,66.83,66.84,66.85,66.86,66.87,66.88,66.89,66.9,66.91,66.92,66.93,66.94,66.95,66.96,66.97,66.98,66.99,67,67.01,67.02,67.03,67.04,67.05,67.06,67.07,67.08,67.09,67.1,67.11,67.12,67.13,67.14,67.15,67.16,67.17,67.18,67.19,67.2,67.21,67.22,67.23,67.24,67.25,67.26,67.27,67.28,67.29,67.3,67.31,67.32,67.33,67.34,67.35,67.36,67.37,67.38,67.39,67.4,67.41,67.42,67.43,67.44,67.45,67.46,67.47,67.48,67.49,67.5,67.51,67.52,67.53,67.54,67.55,67.56,67.57,67.58,67.59,67.6,67.61,67.62,67.63,67.64,67.65,67.66,67.67,67.68,67.69,67.7,67.71,67.72,67.73,67.74,67.75,67.76,67.77,67.78,67.79,67.8,67.81,67.82,67.83,67.84,67.85,67.86,67.87,67.88,67.89,67.9,67.91,67.92,67.93,67.94,67.95,67.96,67.97,67.98,67.99,68,68.01,68.02,68.03,68.04,68.05,68.06,68.07,68.08,68.09,68.1,68.11,68.12,68.13,68.14,68.15,68.16,68.17,68.18,68.19,68.2,68.21,68.22,68.23,68.24,68.25,68.26,68.27,68.28,68.29,68.3,68.31,68.32,68.33,68.34,68.35,68.36,68.37,68.38,68.39,68.4,68.41,68.42,68.43,68.44,68.45,68.46,68.47,68.48,68.49,68.5,68.51,68.52,68.53,68.54,68.55,68.56,68.57,68.58,68.59,68.6,68.61,68.62,68.63,68.64,68.65,68.66,68.67,68.68,68.69,68.7,68.71,68.72,68.73,68.74,68.75,68.76,68.77,68.78,68.79,68.8,68.81,68.82,68.83,68.84,68.85,68.86,68.87,68.88,68.89,68.9,68.91,68.92,68.93,68.94,68.95,68.96,68.97,68.98,68.99,69,69.01,69.02,69.03,69.04,69.05,69.06,69.07,69.08,69.09,69.1,69.11,69.12,69.13,69.14,69.15,69.16,69.17,69.18,69.19,69.2,69.21,69.22,69.23,69.24,69.25,69.26,69.27,69.28,69.29,69.3,69.31,69.32,69.33,69.34,69.35,69.36,69.37,69.38,69.39,69.4,69.41,69.42,69.43,69.44,69.45,69.46,69.47,69.48,69.49,69.5,69.51,69.52,69.53,69.54,69.55,69.56,69.57,69.58,69.59,69.6,69.61,69.62,69.63,69.64,69.65,69.66,69.67,69.68,69.69,69.7,69.71,69.72,69.73,69.74,69.75,69.76,69.77,69.78,69.79,69.8,69.81,69.82,69.83,69.84,69.85,69.86,69.87,69.88,69.89,69.9,69.91,69.92,69.93,69.94,69.95,69.96,69.97,69.98,69.99,70,70.01,70.02,70.03,70.04,70.05,70.06,70.07,70.08,70.09,70.1,70.11,70.12,70.13,70.14,70.15,70.16,70.17,70.18,70.19,70.2,70.21,70.22,70.23,70.24,70.25,70.26,70.27,70.28,70.29,70.3,70.31,70.32,70.33,70.34,70.35,70.36,70.37,70.38,70.39,70.4,70.41,70.42,70.43,70.44,70.45,70.46,70.47,70.48,70.49,70.5,70.51,70.52,70.53,70.54,70.55,70.56,70.57,70.58,70.59,70.6,70.61,70.62,70.63,70.64,70.65,70.66,70.67,70.68,70.69,70.7,70.71,70.72,70.73,70.74,70.75,70.76,70.77,70.78,70.79,70.8,70.81,70.82,70.83,70.84,70.85,70.86,70.87,70.88,70.89,70.9,70.91,70.92,70.93,70.94,70.95,70.96,70.97,70.98,70.99,71,71.01,71.02,71.03,71.04,71.05,71.06,71.07,71.08,71.09,71.1,71.11,71.12,71.13,71.14,71.15,71.16,71.17,71.18,71.19,71.2,71.21,71.22,71.23,71.24,71.25,71.26,71.27,71.28,71.29,71.3,71.31,71.32,71.33,71.34,71.35,71.36,71.37,71.38,71.39,71.4,71.41,71.42,71.43,71.44,71.45,71.46,71.47,71.48,71.49,71.5,71.51,71.52,71.53,71.54,71.55,71.56,71.57,71.58,71.59,71.6,71.61,71.62,71.63,71.64,71.65,71.66,71.67,71.68,71.69,71.7,71.71,71.72,71.73,71.74,71.75,71.76,71.77,71.78,71.79,71.8,71.81,71.82,71.83,71.84,71.85,71.86,71.87,71.88,71.89,71.9,71.91,71.92,71.93,71.94,71.95,71.96,71.97,71.98,71.99,72,72.01,72.02,72.03,72.04,72.05,72.06,72.07,72.08,72.09,72.1,72.11,72.12,72.13,72.14,72.15,72.16,72.17,72.18,72.19,72.2,72.21,72.22,72.23,72.24,72.25,72.26,72.27,72.28,72.29,72.3,72.31,72.32,72.33,72.34,72.35,72.36,72.37,72.38,72.39,72.4,72.41,72.42,72.43,72.44,72.45,72.46,72.47,72.48,72.49,72.5,72.51,72.52,72.53,72.54,72.55,72.56,72.57,72.58,72.59,72.6,72.61,72.62,72.63,72.64,72.65,72.66,72.67,72.68,72.69,72.7,72.71,72.72,72.73,72.74,72.75,72.76,72.77,72.78,72.79,72.8,72.81,72.82,72.83,72.84,72.85,72.86,72.87,72.88,72.89,72.9,72.91,72.92,72.93,72.94,72.95,72.96,72.97,72.98,72.99,73,73.01,73.02,73.03,73.04,73.05,73.06,73.07,73.08,73.09,73.1,73.11,73.12,73.13,73.14,73.15,73.16,73.17,73.18,73.19,73.2,73.21,73.22,73.23,73.24,73.25,73.26,73.27,73.28,73.29,73.3,73.31,73.32,73.33,73.34,73.35,73.36,73.37,73.38,73.39,73.4,73.41,73.42,73.43,73.44,73.45,73.46,73.47,73.48,73.49,73.5,73.51,73.52,73.53,73.54,73.55,73.56,73.57,73.58,73.59,73.6,73.61,73.62,73.63,73.64,73.65,73.66,73.67,73.68,73.69,73.7,73.71,73.72,73.73,73.74,73.75,73.76,73.77,73.78,73.79,73.8,73.81,73.82,73.83,73.84,73.85,73.86,73.87,73.88,73.89,73.9,73.91,73.92,73.93,73.94,73.95,73.96,73.97,73.98,73.99,74,74.01,74.02,74.03,74.04,74.05,74.06,74.07,74.08,74.09,74.1,74.11,74.12,74.13,74.14,74.15,74.16,74.17,74.18,74.19,74.2,74.21,74.22,74.23,74.24,74.25,74.26,74.27,74.28,74.29,74.3,74.31,74.32,74.33,74.34,74.35,74.36,74.37,74.38,74.39,74.4,74.41,74.42,74.43,74.44,74.45,74.46,74.47,74.48,74.49,74.5,74.51,74.52,74.53,74.54,74.55,74.56,74.57,74.58,74.59,74.6,74.61,74.62,74.63,74.64,74.65,74.66,74.67,74.68,74.69,74.7,74.71,74.72,74.73,74.74,74.75,74.76,74.77,74.78,74.79,74.8,74.81,74.82,74.83,74.84,74.85,74.86,74.87,74.88,74.89,74.9,74.91,74.92,74.93,74.94,74.95,74.96,74.97,74.98,74.99,75,75.01,75.02,75.03,75.04,75.05,75.06,75.07,75.08,75.09,75.1,75.11,75.12,75.13,75.14,75.15,75.16,75.17,75.18,75.19,75.2,75.21,75.22,75.23,75.24,75.25,75.26,75.27,75.28,75.29,75.3,75.31,75.32,75.33,75.34,75.35,75.36,75.37,75.38,75.39,75.4,75.41,75.42,75.43,75.44,75.45,75.46,75.47,75.48,75.49,75.5,75.51,75.52,75.53,75.54,75.55,75.56,75.57,75.58,75.59,75.6,75.61,75.62,75.63,75.64,75.65,75.66,75.67,75.68,75.69,75.7,75.71,75.72,75.73,75.74,75.75,75.76,75.77,75.78,75.79,75.8,75.81,75.82,75.83,75.84,75.85,75.86,75.87,75.88,75.89,75.9,75.91,75.92,75.93,75.94,75.95,75.96,75.97,75.98,75.99,76,76.01,76.02,76.03,76.04,76.05,76.06,76.07,76.08,76.09,76.1,76.11,76.12,76.13,76.14,76.15,76.16,76.17,76.18,76.19,76.2,76.21,76.22,76.23,76.24,76.25,76.26,76.27,76.28,76.29,76.3,76.31,76.32,76.33,76.34,76.35,76.36,76.37,76.38,76.39,76.4,76.41,76.42,76.43,76.44,76.45,76.46,76.47,76.48,76.49,76.5,76.51,76.52,76.53,76.54,76.55,76.56,76.57,76.58,76.59,76.6,76.61,76.62,76.63,76.64,76.65,76.66,76.67,76.68,76.69,76.7,76.71,76.72,76.73,76.74,76.75,76.76,76.77,76.78,76.79,76.8,76.81,76.82,76.83,76.84,76.85,76.86,76.87,76.88,76.89,76.9,76.91,76.92,76.93,76.94,76.95,76.96,76.97,76.98,76.99,77,77.01,77.02,77.03,77.04,77.05,77.06,77.07,77.08,77.09,77.1,77.11,77.12,77.13,77.14,77.15,77.16,77.17,77.18,77.19,77.2,77.21,77.22,77.23,77.24,77.25,77.26,77.27,77.28,77.29,77.3,77.31,77.32,77.33,77.34,77.35,77.36,77.37,77.38,77.39,77.4,77.41,77.42,77.43,77.44,77.45,77.46,77.47,77.48,77.49,77.5,77.51,77.52,77.53,77.54,77.55,77.56,77.57,77.58,77.59,77.6,77.61,77.62,77.63,77.64,77.65,77.66,77.67,77.68,77.69,77.7,77.71,77.72,77.73,77.74,77.75,77.76,77.77,77.78,77.79,77.8,77.81,77.82,77.83,77.84,77.85,77.86,77.87,77.88,77.89,77.9,77.91,77.92,77.93,77.94,77.95,77.96,77.97,77.98,77.99,78,78.01,78.02,78.03,78.04,78.05,78.06,78.07,78.08,78.09,78.1,78.11,78.12,78.13,78.14,78.15,78.16,78.17,78.18,78.19,78.2,78.21,78.22,78.23,78.24,78.25,78.26,78.27,78.28,78.29,78.3,78.31,78.32,78.33,78.34,78.35,78.36,78.37,78.38,78.39,78.4,78.41,78.42,78.43,78.44,78.45,78.46,78.47,78.48,78.49,78.5,78.51,78.52,78.53,78.54,78.55,78.56,78.57,78.58,78.59,78.6,78.61,78.62,78.63,78.64,78.65,78.66,78.67,78.68,78.69,78.7,78.71,78.72,78.73,78.74,78.75,78.76,78.77,78.78,78.79,78.8,78.81,78.82,78.83,78.84,78.85,78.86,78.87,78.88,78.89,78.9,78.91,78.92,78.93,78.94,78.95,78.96,78.97,78.98,78.99,79,79.01,79.02,79.03,79.04,79.05,79.06,79.07,79.08,79.09,79.1,79.11,79.12,79.13,79.14,79.15,79.16,79.17,79.18,79.19,79.2,79.21,79.22,79.23,79.24,79.25,79.26,79.27,79.28,79.29,79.3,79.31,79.32,79.33,79.34,79.35,79.36,79.37,79.38,79.39,79.4,79.41,79.42,79.43,79.44,79.45,79.46,79.47,79.48,79.49,79.5,79.51,79.52,79.53,79.54,79.55,79.56,79.57,79.58,79.59,79.6,79.61,79.62,79.63,79.64,79.65,79.66,79.67,79.68,79.69,79.7,79.71,79.72,79.73,79.74,79.75,79.76,79.77,79.78,79.79,79.8,79.81,79.82,79.83,79.84,79.85,79.86,79.87,79.88,79.89,79.9,79.91,79.92,79.93,79.94,79.95,79.96,79.97,79.98,79.99,80,80.01,80.02,80.03,80.04,80.05,80.06,80.07,80.08,80.09,80.1,80.11,80.12,80.13,80.14,80.15,80.16,80.17,80.18,80.19,80.2,80.21,80.22,80.23,80.24,80.25,80.26,80.27,80.28,80.29,80.3,80.31,80.32,80.33,80.34,80.35,80.36,80.37,80.38,80.39,80.4,80.41,80.42,80.43,80.44,80.45,80.46,80.47,80.48,80.49,80.5,80.51,80.52,80.53,80.54,80.55,80.56,80.57,80.58,80.59,80.6,80.61,80.62,80.63,80.64,80.65,80.66,80.67,80.68,80.69,80.7,80.71,80.72,80.73,80.74,80.75,80.76,80.77,80.78,80.79,80.8,80.81,80.82,80.83,80.84,80.85,80.86,80.87,80.88,80.89,80.9,80.91,80.92,80.93,80.94,80.95,80.96,80.97,80.98,80.99,81,81.01,81.02,81.03,81.04,81.05,81.06,81.07,81.08,81.09,81.1,81.11,81.12,81.13,81.14,81.15,81.16,81.17,81.18,81.19,81.2,81.21,81.22,81.23,81.24,81.25,81.26,81.27,81.28,81.29,81.3,81.31,81.32,81.33,81.34,81.35,81.36,81.37,81.38,81.39,81.4,81.41,81.42,81.43,81.44,81.45,81.46,81.47,81.48,81.49,81.5,81.51,81.52,81.53,81.54,81.55,81.56,81.57,81.58,81.59,81.6,81.61,81.62,81.63,81.64,81.65,81.66,81.67,81.68,81.69,81.7,81.71,81.72,81.73,81.74,81.75,81.76,81.77,81.78,81.79,81.8,81.81,81.82,81.83,81.84,81.85,81.86,81.87,81.88,81.89,81.9,81.91,81.92,81.93,81.94,81.95,81.96,81.97,81.98,81.99,82,82.01,82.02,82.03,82.04,82.05,82.06,82.07,82.08,82.09,82.1,82.11,82.12,82.13,82.14,82.15,82.16,82.17,82.18,82.19,82.2,82.21,82.22,82.23,82.24,82.25,82.26,82.27,82.28,82.29,82.3,82.31,82.32,82.33,82.34,82.35,82.36,82.37,82.38,82.39,82.4,82.41,82.42,82.43,82.44,82.45,82.46,82.47,82.48,82.49,82.5,82.51,82.52,82.53,82.54,82.55,82.56,82.57,82.58,82.59,82.6,82.61,82.62,82.63,82.64,82.65,82.66,82.67,82.68,82.69,82.7,82.71,82.72,82.73,82.74,82.75,82.76,82.77,82.78,82.79,82.8,82.81,82.82,82.83,82.84,82.85,82.86,82.87,82.88,82.89,82.9,82.91,82.92,82.93,82.94,82.95,82.96,82.97,82.98,82.99,83,83.01,83.02,83.03,83.04,83.05,83.06,83.07,83.08,83.09,83.1,83.11,83.12,83.13,83.14,83.15,83.16,83.17,83.18,83.19,83.2,83.21,83.22,83.23,83.24,83.25,83.26,83.27,83.28,83.29,83.3,83.31,83.32,83.33,83.34,83.35,83.36,83.37,83.38,83.39,83.4,83.41,83.42,83.43,83.44,83.45,83.46,83.47,83.48,83.49,83.5,83.51,83.52,83.53,83.54,83.55,83.56,83.57,83.58,83.59,83.6,83.61,83.62,83.63,83.64,83.65,83.66,83.67,83.68,83.69,83.7,83.71,83.72,83.73,83.74,83.75,83.76,83.77,83.78,83.79,83.8,83.81,83.82,83.83,83.84,83.85,83.86,83.87,83.88,83.89,83.9,83.91,83.92,83.93,83.94,83.95,83.96,83.97,83.98,83.99,84,84.01,84.02,84.03,84.04,84.05,84.06,84.07,84.08,84.09,84.1,84.11,84.12,84.13,84.14,84.15,84.16,84.17,84.18,84.19,84.2,84.21,84.22,84.23,84.24,84.25,84.26,84.27,84.28,84.29,84.3,84.31,84.32,84.33,84.34,84.35,84.36,84.37,84.38,84.39,84.4,84.41,84.42,84.43,84.44,84.45,84.46,84.47,84.48,84.49,84.5,84.51,84.52,84.53,84.54,84.55,84.56,84.57,84.58,84.59,84.6,84.61,84.62,84.63,84.64,84.65,84.66,84.67,84.68,84.69,84.7,84.71,84.72,84.73,84.74,84.75,84.76,84.77,84.78,84.79,84.8,84.81,84.82,84.83,84.84,84.85,84.86,84.87,84.88,84.89,84.9,84.91,84.92,84.93,84.94,84.95,84.96,84.97,84.98,84.99,85,85.01,85.02,85.03,85.04,85.05,85.06,85.07,85.08,85.09,85.1,85.11,85.12,85.13,85.14,85.15,85.16,85.17,85.18,85.19,85.2,85.21,85.22,85.23,85.24,85.25,85.26,85.27,85.28,85.29,85.3,85.31,85.32,85.33,85.34,85.35,85.36,85.37,85.38,85.39,85.4,85.41,85.42,85.43,85.44,85.45,85.46,85.47,85.48,85.49,85.5,85.51,85.52,85.53,85.54,85.55,85.56,85.57,85.58,85.59,85.6,85.61,85.62,85.63,85.64,85.65,85.66,85.67,85.68,85.69,85.7,85.71,85.72,85.73,85.74,85.75,85.76,85.77,85.78,85.79,85.8,85.81,85.82,85.83,85.84,85.85,85.86,85.87,85.88,85.89,85.9,85.91,85.92,85.93,85.94,85.95,85.96,85.97,85.98,85.99,86,86.01,86.02,86.03,86.04,86.05,86.06,86.07,86.08,86.09,86.1,86.11,86.12,86.13,86.14,86.15,86.16,86.17,86.18,86.19,86.2,86.21,86.22,86.23,86.24,86.25,86.26,86.27,86.28,86.29,86.3,86.31,86.32,86.33,86.34,86.35,86.36,86.37,86.38,86.39,86.4,86.41,86.42,86.43,86.44,86.45,86.46,86.47,86.48,86.49,86.5,86.51,86.52,86.53,86.54,86.55,86.56,86.57,86.58,86.59,86.6,86.61,86.62,86.63,86.64,86.65,86.66,86.67,86.68,86.69,86.7,86.71,86.72,86.73,86.74,86.75,86.76,86.77,86.78,86.79,86.8,86.81,86.82,86.83,86.84,86.85,86.86,86.87,86.88,86.89,86.9,86.91,86.92,86.93,86.94,86.95,86.96,86.97,86.98,86.99,87,87.01,87.02,87.03,87.04,87.05,87.06,87.07,87.08,87.09,87.1,87.11,87.12,87.13,87.14,87.15,87.16,87.17,87.18,87.19,87.2,87.21,87.22,87.23,87.24,87.25,87.26,87.27,87.28,87.29,87.3,87.31,87.32,87.33,87.34,87.35,87.36,87.37,87.38,87.39,87.4,87.41,87.42,87.43,87.44,87.45,87.46,87.47,87.48,87.49,87.5,87.51,87.52,87.53,87.54,87.55,87.56,87.57,87.58,87.59,87.6,87.61,87.62,87.63,87.64,87.65,87.66,87.67,87.68,87.69,87.7,87.71,87.72,87.73,87.74,87.75,87.76,87.77,87.78,87.79,87.8,87.81,87.82,87.83,87.84,87.85,87.86,87.87,87.88,87.89,87.9,87.91,87.92,87.93,87.94,87.95,87.96,87.97,87.98,87.99,88,88.01,88.02,88.03,88.04,88.05,88.06,88.07,88.08,88.09,88.1,88.11,88.12,88.13,88.14,88.15,88.16,88.17,88.18,88.19,88.2,88.21,88.22,88.23,88.24,88.25,88.26,88.27,88.28,88.29,88.3,88.31,88.32,88.33,88.34,88.35,88.36,88.37,88.38,88.39,88.4,88.41,88.42,88.43,88.44,88.45,88.46,88.47,88.48,88.49,88.5,88.51,88.52,88.53,88.54,88.55,88.56,88.57,88.58,88.59,88.6,88.61,88.62,88.63,88.64,88.65,88.66,88.67,88.68,88.69,88.7,88.71,88.72,88.73,88.74,88.75,88.76,88.77,88.78,88.79,88.8,88.81,88.82,88.83,88.84,88.85,88.86,88.87,88.88,88.89,88.9,88.91,88.92,88.93,88.94,88.95,88.96,88.97,88.98,88.99,89,89.01,89.02,89.03,89.04,89.05,89.06,89.07,89.08,89.09,89.1,89.11,89.12,89.13,89.14,89.15,89.16,89.17,89.18,89.19,89.2,89.21,89.22,89.23,89.24,89.25,89.26,89.27,89.28,89.29,89.3,89.31,89.32,89.33,89.34,89.35,89.36,89.37,89.38,89.39,89.4,89.41,89.42,89.43,89.44,89.45,89.46,89.47,89.48,89.49,89.5,89.51,89.52,89.53,89.54,89.55,89.56,89.57,89.58,89.59,89.6,89.61,89.62,89.63,89.64,89.65,89.66,89.67,89.68,89.69,89.7,89.71,89.72,89.73,89.74,89.75,89.76,89.77,89.78,89.79,89.8,89.81,89.82,89.83,89.84,89.85,89.86,89.87,89.88,89.89,89.9,89.91,89.92,89.93,89.94,89.95,89.96,89.97,89.98,89.99,90,90.01,90.02,90.03,90.04,90.05,90.06,90.07,90.08,90.09,90.1,90.11,90.12,90.13,90.14,90.15,90.16,90.17,90.18,90.19,90.2,90.21,90.22,90.23,90.24,90.25,90.26,90.27,90.28,90.29,90.3,90.31,90.32,90.33,90.34,90.35,90.36,90.37,90.38,90.39,90.4,90.41,90.42,90.43,90.44,90.45,90.46,90.47,90.48,90.49,90.5,90.51,90.52,90.53,90.54,90.55,90.56,90.57,90.58,90.59,90.6,90.61,90.62,90.63,90.64,90.65,90.66,90.67,90.68,90.69,90.7,90.71,90.72,90.73,90.74,90.75,90.76,90.77,90.78,90.79,90.8,90.81,90.82,90.83,90.84,90.85,90.86,90.87,90.88,90.89,90.9,90.91,90.92,90.93,90.94,90.95,90.96,90.97,90.98,90.99,91,91.01,91.02,91.03,91.04,91.05,91.06,91.07,91.08,91.09,91.1,91.11,91.12,91.13,91.14,91.15,91.16,91.17,91.18,91.19,91.2,91.21,91.22,91.23,91.24,91.25,91.26,91.27,91.28,91.29,91.3,91.31,91.32,91.33,91.34,91.35,91.36,91.37,91.38,91.39,91.4,91.41,91.42,91.43,91.44,91.45,91.46,91.47,91.48,91.49,91.5,91.51,91.52,91.53,91.54,91.55,91.56,91.57,91.58,91.59,91.6,91.61,91.62,91.63,91.64,91.65,91.66,91.67,91.68,91.69,91.7,91.71,91.72,91.73,91.74,91.75,91.76,91.77,91.78,91.79,91.8,91.81,91.82,91.83,91.84,91.85,91.86,91.87,91.88,91.89,91.9,91.91,91.92,91.93,91.94,91.95,91.96,91.97,91.98,91.99,92,92.01,92.02,92.03,92.04,92.05,92.06,92.07,92.08,92.09,92.1,92.11,92.12,92.13,92.14,92.15,92.16,92.17,92.18,92.19,92.2,92.21,92.22,92.23,92.24,92.25,92.26,92.27,92.28,92.29,92.3,92.31,92.32,92.33,92.34,92.35,92.36,92.37,92.38,92.39,92.4,92.41,92.42,92.43,92.44,92.45,92.46,92.47,92.48,92.49,92.5,92.51,92.52,92.53,92.54,92.55,92.56,92.57,92.58,92.59,92.6,92.61,92.62,92.63,92.64,92.65,92.66,92.67,92.68,92.69,92.7,92.71,92.72,92.73,92.74,92.75,92.76,92.77,92.78,92.79,92.8,92.81,92.82,92.83,92.84,92.85,92.86,92.87,92.88,92.89,92.9,92.91,92.92,92.93,92.94,92.95,92.96,92.97,92.98,92.99,93,93.01,93.02,93.03,93.04,93.05,93.06,93.07,93.08,93.09,93.1,93.11,93.12,93.13,93.14,93.15,93.16,93.17,93.18,93.19,93.2,93.21,93.22,93.23,93.24,93.25,93.26,93.27,93.28,93.29,93.3,93.31,93.32,93.33,93.34,93.35,93.36,93.37,93.38,93.39,93.4,93.41,93.42,93.43,93.44,93.45,93.46,93.47,93.48,93.49,93.5,93.51,93.52,93.53,93.54,93.55,93.56,93.57,93.58,93.59,93.6,93.61,93.62,93.63,93.64,93.65,93.66,93.67,93.68,93.69,93.7,93.71,93.72,93.73,93.74,93.75,93.76,93.77,93.78,93.79,93.8,93.81,93.82,93.83,93.84,93.85,93.86,93.87,93.88,93.89,93.9,93.91,93.92,93.93,93.94,93.95,93.96,93.97,93.98,93.99,94,94.01,94.02,94.03,94.04,94.05,94.06,94.07,94.08,94.09,94.1,94.11,94.12,94.13,94.14,94.15,94.16,94.17,94.18,94.19,94.2,94.21,94.22,94.23,94.24,94.25,94.26,94.27,94.28,94.29,94.3,94.31,94.32,94.33,94.34,94.35,94.36,94.37,94.38,94.39,94.4,94.41,94.42,94.43,94.44,94.45,94.46,94.47,94.48,94.49,94.5,94.51,94.52,94.53,94.54,94.55,94.56,94.57,94.58,94.59,94.6,94.61,94.62,94.63,94.64,94.65,94.66,94.67,94.68,94.69,94.7,94.71,94.72,94.73,94.74,94.75,94.76,94.77,94.78,94.79,94.8,94.81,94.82,94.83,94.84,94.85,94.86,94.87,94.88,94.89,94.9,94.91,94.92,94.93,94.94,94.95,94.96,94.97,94.98,94.99,95,95.01,95.02,95.03,95.04,95.05,95.06,95.07,95.08,95.09,95.1,95.11,95.12,95.13,95.14,95.15,95.16,95.17,95.18,95.19,95.2,95.21,95.22,95.23,95.24,95.25,95.26,95.27,95.28,95.29,95.3,95.31,95.32,95.33,95.34,95.35,95.36,95.37,95.38,95.39,95.4,95.41,95.42,95.43,95.44,95.45,95.46,95.47,95.48,95.49,95.5,95.51,95.52,95.53,95.54,95.55,95.56,95.57,95.58,95.59,95.6,95.61,95.62,95.63,95.64,95.65,95.66,95.67,95.68,95.69,95.7,95.71,95.72,95.73,95.74,95.75,95.76,95.77,95.78,95.79,95.8,95.81,95.82,95.83,95.84,95.85,95.86,95.87,95.88,95.89,95.9,95.91,95.92,95.93,95.94,95.95,95.96,95.97,95.98,95.99,96,96.01,96.02,96.03,96.04,96.05,96.06,96.07,96.08,96.09,96.1,96.11,96.12,96.13,96.14,96.15,96.16,96.17,96.18,96.19,96.2,96.21,96.22,96.23,96.24,96.25,96.26,96.27,96.28,96.29,96.3,96.31,96.32,96.33,96.34,96.35,96.36,96.37,96.38,96.39,96.4,96.41,96.42,96.43,96.44,96.45,96.46,96.47,96.48,96.49,96.5,96.51,96.52,96.53,96.54,96.55,96.56,96.57,96.58,96.59,96.6,96.61,96.62,96.63,96.64,96.65,96.66,96.67,96.68,96.69,96.7,96.71,96.72,96.73,96.74,96.75,96.76,96.77,96.78,96.79,96.8,96.81,96.82,96.83,96.84,96.85,96.86,96.87,96.88,96.89,96.9,96.91,96.92,96.93,96.94,96.95,96.96,96.97,96.98,96.99,97,97.01,97.02,97.03,97.04,97.05,97.06,97.07,97.08,97.09,97.1,97.11,97.12,97.13,97.14,97.15,97.16,97.17,97.18,97.19,97.2,97.21,97.22,97.23,97.24,97.25,97.26,97.27,97.28,97.29,97.3,97.31,97.32,97.33,97.34,97.35,97.36,97.37,97.38,97.39,97.4,97.41,97.42,97.43,97.44,97.45,97.46,97.47,97.48,97.49,97.5,97.51,97.52,97.53,97.54,97.55,97.56,97.57,97.58,97.59,97.6,97.61,97.62,97.63,97.64,97.65,97.66,97.67,97.68,97.69,97.7,97.71,97.72,97.73,97.74,97.75,97.76,97.77,97.78,97.79,97.8,97.81,97.82,97.83,97.84,97.85,97.86,97.87,97.88,97.89,97.9,97.91,97.92,97.93,97.94,97.95,97.96,97.97,97.98,97.99,98,98.01,98.02,98.03,98.04,98.05,98.06,98.07,98.08,98.09,98.1,98.11,98.12,98.13,98.14,98.15,98.16,98.17,98.18,98.19,98.2,98.21,98.22,98.23,98.24,98.25,98.26,98.27,98.28,98.29,98.3,98.31,98.32,98.33,98.34,98.35,98.36,98.37,98.38,98.39,98.4,98.41,98.42,98.43,98.44,98.45,98.46,98.47,98.48,98.49,98.5,98.51,98.52,98.53,98.54,98.55,98.56,98.57,98.58,98.59,98.6,98.61,98.62,98.63,98.64,98.65,98.66,98.67,98.68,98.69,98.7,98.71,98.72,98.73,98.74,98.75,98.76,98.77,98.78,98.79,98.8,98.81,98.82,98.83,98.84,98.85,98.86,98.87,98.88,98.89,98.9,98.91,98.92,98.93,98.94,98.95,98.96,98.97,98.98,98.99,99,99.01,99.02,99.03,99.04,99.05,99.06,99.07,99.08,99.09,99.1,99.11,99.12,99.13,99.14,99.15,99.16,99.17,99.18,99.19,99.2,99.21,99.22,99.23,99.24,99.25,99.26,99.27,99.28,99.29,99.3,99.31,99.32,99.33,99.34,99.35,99.36,99.37,99.38,99.39,99.4,99.41,99.42,99.43,99.44,99.45,99.46,99.47,99.48,99.49,99.5,99.51,99.52,99.53,99.54,99.55,99.56,99.57,99.58,99.59,99.6,99.61,99.62,99.63,99.64,99.65,99.66,99.67,99.68,99.69,99.7,99.71,99.72,99.73,99.74,99.75,99.76,99.77,99.78,99.79,99.8,99.81,99.82,99.83,99.84,99.85,99.86,99.87,99.88,99.89,99.9,99.91,99.92,99.93,99.94,99.95,99.96,99.97,99.98,99.99,100] diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/expected.json b/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/expected.json index 511e246eb022..2246ffb5a57c 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/expected.json +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/expected.json @@ -1 +1 @@ -[3.72007597602084e-44,4.11131978173009e-44,4.54371105767725e-44,5.02157732108361e-44,5.54970121812987e-44,6.13336839028609e-44,6.7784203747886e-44,7.49131306870786e-44,8.27918134173591e-44,9.14991044436113e-44,1.01122149261045e-43,1.11757258536611e-43,1.23510872018525e-43,1.36500623821036e-43,1.50856519746195e-43,1.66722238425598e-43,1.84256569304444e-43,2.03635001859663e-43,2.25051481957579e-43,2.48720352929345e-43,2.74878500791021e-43,3.03787725078469e-43,3.35737359025087e-43,3.71047165306047e-43,4.10070536330654e-43,4.53198031112319e-43,5.00861284114475e-43,5.53537325193347e-43,6.11753353873066e-43,6.76092015735758e-43,7.47197233734299e-43,8.25780652789715e-43,9.12628762172724e-43,1.00861076695267e-42,1.11468728729407e-42,1.23191997266603e-42,1.36148212718704e-42,1.5046704524469e-42,1.66291802533203e-42,1.83780864074076e-42,2.03109266273481e-42,2.24470454277133e-42,2.48078218034319e-42,2.74168831979557e-42,3.03003419746578e-42,3.34870567581384e-42,3.7008921261043e-42,4.09011834870566e-42,4.52027985047706e-42,4.99568183231062e-42,5.52108227702853e-42,6.10173956887478e-42,6.7434651211919e-42,7.45268153899872e-42,8.23648689858071e-42,9.10272578742244e-42,1.00600678154765e-41,1.11180943835335e-41,1.22873945771014e-41,1.3579671145533e-41,1.50078576270739e-41,1.65862477920618e-41,1.83306386997833e-41,2.02584888007524e-41,2.2389092666753e-41,2.4743774097396e-41,2.73460995358754e-41,3.02221139298517e-41,3.34006013980408e-41,3.69133733113518e-41,4.07955866717756e-41,4.50860959754806e-41,4.98278420816691e-41,5.50682819791263e-41,6.08598637517202e-41,6.72605514964471e-41,7.43344054476024e-41,8.21522231131348e-41,9.07922478398982e-41,1.00340951899373e-40,1.10893901931214e-40,1.2255671540631e-40,1.35446117681928e-40,1.49691110228318e-40,1.65434261718794e-40,1.82833134904926e-40,2.02061863557525e-40,2.23312895255948e-40,2.46798917468145e-40,2.72754986198348e-40,3.01440878506537e-40,3.33143692444598e-40,3.68180720430111e-40,4.06902624815496e-40,4.49696947434737e-40,4.96991988252261e-40,5.4926109193299e-40,6.0702738523482e-40,6.70869012637023e-40,7.41424922604568e-40,8.19401262399051e-40,9.05578445437899e-40,1.00081896193413e-39,1.10607601098825e-39,1.22240304052535e-39,1.35096429055585e-39,1.49304644528102e-39,1.65007151066082e-39,1.82361104632748e-39,2.01540189428265e-39,2.22736356179574e-39,2.46161743247803e-39,2.72050799780279e-39,3.00662632156383e-39,3.32283597211314e-39,3.67230168191504e-39,4.05852102125277e-39,4.48535940308728e-39,4.95708876940917e-39,5.47843034627047e-39,6.05460189540119e-39,6.69136993532305e-39,7.39510745460482e-39,8.17285769487363e-39,9.03240464194519e-39,9.98235093056925e-39,1.10322039424904e-38,1.21924709595201e-38,1.34747643239434e-38,1.48919176587456e-38,1.64581143108227e-38,1.81890293026858e-38,2.01019862133543e-38,2.22161305585567e-38,2.45526214054887e-38,2.71348431398676e-38,2.9988639504726e-38,3.3142572253278e-38,3.66282070045435e-38,4.04804291626765e-38,4.47377930618112e-38,4.94429078308e-38,5.46428638396953e-38,6.03897039959983e-38,6.67409446075746e-38,7.37601510251888e-38,8.15175738259058e-38,9.00908519044765e-38,9.95657895094869e-38,1.10037215001127e-37,1.21609929925283e-37,1.34399757902639e-37,1.48534703830406e-37,1.64156234998343e-37,1.81420696940962e-37,2.00500878196165e-37,2.21587739631028e-37,2.44892325642333e-37,2.70647876359817e-37,2.99112161991805e-37,3.30570062676073e-37,3.65336419656038e-37,4.03759186317737e-37,4.46222910624248e-37,4.93152583800992e-37,5.45017893790717e-37,6.02337926048339e-37,6.6568635872263e-37,7.3569720421992e-37,8.13071154613423e-37,8.98582594404938e-37,9.93087350825297e-37,1.09753125924092e-36,1.212959629392e-36,1.34052770720386e-36,1.48151223687633e-36,1.63732423896891e-36,1.80952313236879e-36,1.99983234147913e-36,2.21015654482988e-36,2.44260073774053e-36,2.69949129982094e-36,2.98339927816035e-36,3.29716611923068e-36,3.64393210703813e-36,4.02716779214063e-36,4.45070872608472e-36,4.91879384889438e-36,5.43610791380742e-36,6.0078283738609e-36,6.63967719958073e-36,7.33797814638654e-36,8.10972004486112e-36,8.9626267473156e-36,9.90523443070022e-36,1.09469770295314e-35,1.20982806538802e-35,1.33706679373857e-35,1.47768733596451e-35,1.63309706971667e-35,1.80485138784542e-35,1.99466926529521e-35,2.20445046318361e-35,2.4362945422489e-35,2.69252187595993e-35,2.97569687359338e-35,3.28865364570401e-35,3.63452436885556e-35,4.01677063349639e-35,4.43921808872055e-35,4.90609473064928e-35,5.42207321763773e-35,5.99231763581012e-35,6.62253518296913e-35,7.31903328815033e-35,8.08878273849129e-35,8.93948744521281e-35,9.87966154695166e-35,1.09187146221212e-34,1.20670458631358e-34,1.33361481550226e-34,1.47387231000791e-34,1.62888081397773e-34,1.80019170461957e-34,1.98951951890659e-34,2.19875911323941e-34,2.43000462780598e-34,2.68557044544043e-34,2.96801435474421e-34,3.28016314929438e-34,3.62514091914356e-34,4.00640031776346e-34,4.42775711736125e-34,4.89342839841009e-34,5.40807475560837e-34,5.9768469426774e-34,6.60543742283637e-34,7.30013734088738e-34,8.06789948710677e-34,8.91640788310791e-34,9.85415468611126e-34,1.0890525181309e-33,1.20358917129533e-33,1.33017174942636e-33,1.47006713351183e-33,1.6246754435761e-33,1.79554405155195e-33,1.98438306789895e-33,2.19308245696364e-33,2.42373095237812e-33,2.67863696180808e-33,2.96035167027278e-33,3.27169457326217e-33,3.61578169519525e-33,3.99605677564009e-33,4.41632573541654e-33,4.88079476753139e-33,5.39411243417152e-33,5.96141619107658e-33,6.58838380492319e-33,7.28129017832164e-33,8.04707015115088e-33,8.89338790676664e-33,9.82871367772409e-33,1.08624085187131e-32,1.20048179951388e-32,1.32673757250186e-32,1.46627178104734e-32,1.6204809304085e-32,1.79090839758366e-32,1.9792598779469e-32,2.18742045642086e-32,2.41747347404012e-32,2.67172137872843e-32,2.95270876897166e-32,3.2632478610144e-32,3.60644663446566e-32,3.98573993800328e-32,4.40492386649383e-32,4.86819375358636e-32,5.38018616002114e-32,5.94602527788842e-32,6.57137421526501e-32,7.26249167450303e-32,8.02629459142733e-32,8.87042736235329e-32,9.80333835177528e-32,1.08343644464378e-31,1.19738245020357e-31,1.32331226177916e-31,1.46248622725123e-31,1.61629724644422e-31,1.78628471173592e-31,1.97414991481367e-31,2.1817730737736e-31,2.41123215097509e-31,2.66482364998664e-31,2.94508559976546e-31,3.25482295610414e-31,3.59713567457134e-31,3.97544973590865e-31,4.39355143439773e-31,4.85562527236595e-31,5.36629584009197e-31,5.93067410026002e-31,6.55440854019179e-31,7.24374170380659e-31,8.00557266909885e-31,8.84752609642924e-31,9.77802853868904e-31,1.08063927770728e-30,1.19429110265235e-30,1.31989579436789e-30,1.45871044682574e-30,1.61212436372495e-30,1.78167296311001e-30,1.96905314435084e-30,2.17614027128198e-30,2.40500694147408e-30,2.65794372948724e-30,2.9374821117108e-30,3.2464198022302e-30,3.58784875328974e-30,3.96518610058983e-30,4.38220836312963e-30,4.84308923987873e-30,5.35244138155904e-30,5.91536255560374e-30,6.53748666632695e-30,7.22504014093182e-30,7.98490424568698e-30,8.82468395595196e-30,9.75278406932695e-30,1.07784933236917e-29,1.19120773620165e-29,1.31648814743679e-29,1.45494441453842e-29,1.60796225436447e-29,1.77707312088698e-29,1.96396953249821e-29,2.17052201130364e-29,2.39879780393583e-29,2.65108157125363e-29,2.92989825399583e-29,3.23803834323679e-29,3.57858580855913e-29,3.95494896345776e-29,4.37089457688698e-29,4.83058557235009e-29,5.3386226918371e-29,5.90009054159706e-29,6.52060848058623e-29,7.2063868609014e-29,7.96428918307075e-29,8.8019007882742e-29,9.72760477498771e-29,1.07506658998502e-28,1.18813233024621e-28,1.31308929821357e-28,1.45118810522199e-28,1.60381089054864e-28,1.77248515432736e-28,1.95889904528343e-28,2.1649182562934e-28,2.39260469686649e-28,2.64423712942805e-28,2.92233397593972e-28,3.22967852311296e-28,3.56934677847796e-28,3.94473825610082e-28,4.35961000006308e-28,4.8181141862215e-28,5.32483967857972e-28,5.88485795618159e-28,6.50377387017796e-28,7.18778173906099e-28,7.94372734348542e-28,8.77917644114242e-28,9.70249048740548e-28,1.07229103195861e-27,1.18506486423398e-27,1.30969922398466e-27,1.4474414937741e-27,1.59967024453511e-27,1.76790903277116e-27,1.95384164882192e-27,2.15932896880297e-27,2.38642757887932e-27,2.63741035827111e-27,2.9147892269927e-27,3.22134028599252e-27,3.56013160130442e-27,3.93455391028374e-27,4.34835455724642e-27,4.80567499815046e-27,5.3110922496791e-27,5.86966469756231e-27,6.48698272260117e-27,7.16922465107801e-27,7.92321858952246e-27,8.75651076269652e-27,9.67744103874862e-27,1.06952263974168e-26,1.182005317666e-26,1.30631790209523e-26,1.44370455515724e-26,1.59554028865312e-26,1.76334472563745e-26,1.9487973093166e-26,2.15375411148078e-26,2.3802664086944e-26,2.63060121216142e-26,2.90726395673535e-26,3.21302357615345e-26,3.55094021545622e-26,3.92439585794746e-26,4.33712817322007e-26,4.79326792500939e-26,5.29738031326519e-26,5.85451066420716e-26,6.47023492564546e-26,7.15071547294072e-26,7.90276278412765e-26,8.73390360146843e-26,9.65245626161908e-26,1.06676139483385e-25,1.17895367009619e-25,1.30294530994886e-25,1.43997726439855e-25,1.5914209953034e-25,1.75879220242431e-25,1.94376599305757e-25,2.14819364707166e-25,2.37412114513846e-25,2.62380964559549e-25,2.89975811487849e-25,3.20472833801757e-25,3.54177255950993e-25,3.91426403120873e-25,4.32593077296144e-25,4.78089288388547e-25,5.28370377770504e-25,5.83939575484606e-25,6.45353036739027e-25,7.13225408095778e-25,7.88235979060085e-25,8.71135480638092e-25,9.62753598905073e-25,1.06400727878255e-24,1.17590990113129e-24,1.2995814250075e-24,1.4362595965896e-24,1.58731233695789e-24,1.75425143270856e-24,1.93874766642204e-24,2.14264753841665e-24,2.36799174714446e-24,2.61703561318721e-24,2.89227165126277e-24,3.19645451615025e-24,3.53262857220081e-24,3.90415836235944e-24,4.3147622816415e-24,4.76854979207992e-24,5.27006255160241e-24,5.82431986847049e-24,6.43686893620378e-24,7.11384035175696e-24,7.86200947259484e-24,8.68886422674709e-24,9.60268005450868e-24,1.06126027318281e-23,1.17287399043066e-23,1.2962262247913e-23,1.43255152688633e-23,1.58321428615963e-23,1.74972238614552e-23,1.93374229587396e-23,2.13711574845274e-23,2.36187817375145e-23,2.6102790696677e-23,2.88480451585831e-23,3.18820205525991e-23,3.52350819242226e-23,3.89407878386638e-23,4.30362262462449e-23,4.75623856710738e-23,5.25645654379687e-23,5.80928290433274e-23,6.42025052074259e-23,7.0954741622847e-23,7.84171169411423e-23,8.66643171226878e-23,9.57788829188801e-23,1.05852035967719e-22,1.1698459177062e-22,1.29287968687841e-22,1.42885303050877e-22,1.57912681552255e-22,1.74520503246893e-22,1.92874984796392e-22,2.13159824021255e-22,2.35578038410414e-22,2.60353996988498e-22,2.87735665876443e-22,3.17997090019775e-22,3.5144113592254e-22,3.88402522837062e-22,4.29251172746734e-22,4.74395912669557e-22,5.24288566336346e-22,5.79428476194506e-22,6.40367500995056e-22,7.07715538980516e-22,7.82146631951499e-22,8.6440571130361e-22,9.55316053551245e-22,1.05578751995564e-21,1.16682566272218e-21,1.2895417889049e-21,1.42516408274094e-21,1.57504989773124e-21,1.74069934149059e-21,1.92377028932883e-21,2.12609497682421e-21,2.34969833745282e-21,2.59681826880356e-21,2.86992803020924e-21,3.17176099595739e-21,3.50533801181876e-21,3.87399762868719e-21,4.28142951591911e-21,4.7317113887845e-21,5.22934981961197e-21,5.77932534107929e-21,6.38714229305842e-21,7.05888391189918e-21,7.80127321350305e-21,8.62174027952614e-21,9.52849662013371e-21,1.05306173575538e-20,1.16381320529511e-20,1.28621250856456e-20,1.42148465893068e-20,1.57098350554087e-20,1.73620528310029e-20,1.91880358669175e-20,2.12060592151096e-20,2.34363199315293e-20,2.59011392150429e-20,2.86251858054939e-20,3.16357228767438e-20,3.49628808956777e-20,3.86399591780457e-20,4.27037591592064e-20,4.71949527152612e-20,5.21584892208621e-20,5.7644045417659e-20,6.37065225958287e-20,7.0406596064639e-20,7.7811322411338e-20,8.59948106260187e-20,9.50389638092987e-20,1.05034298886081e-19,1.16080852529362e-19,1.28289182360878e-19,1.41781473448946e-19,1.5669276117769e-19,1.73172282726557e-19,1.91384970686164e-19,2.11513103759108e-19,2.33758131066483e-19,2.58342688318394e-19,2.8551282602697e-19,3.155404720626e-19,3.48726153199445e-19,3.8540200288842e-19,4.25935085360389e-19,4.70731069328371e-19,5.20238288056368e-19,5.74952226429356e-19,6.3542047993257e-19,7.02248235171148e-19,7.76104326781102e-19,8.57727931351154e-19,9.47935965350476e-19,1.04763126110331e-18,1.1578116026383e-18,1.27957971184641e-18,1.41415428489227e-18,1.56288218933499e-18,1.72725194403143e-18,1.90890861673317e-18,2.10967028847751e-18,2.33154624955361e-18,2.57675710915498e-18,2.84775701998277e-18,3.14725824023073e-18,3.47825827877695e-18,3.84406989526015e-18,4.24835425529159e-18,4.6951575726312e-18,5.18895160505466e-18,5.73467840920837e-18,6.33779980237341e-18,7.00435202616865e-18,7.74100615928583e-18,8.55513488388718e-18,9.45488627388661e-18,1.04492653436121e-17,1.15482241730158e-17,1.27627615114353e-17,1.41050328567735e-17,1.55884721118075e-17,1.7227926035203e-17,1.90398028328645e-17,2.10422363767762e-17,2.32552676948866e-17,2.57010455484528e-17,2.84040481042877e-17,3.13913279204803e-17,3.4692782697491e-17,3.83414545043851e-17,4.2373860474967e-17,4.68303582835288e-17,5.17555500580187e-17,5.71987287731307e-17,6.32143715909609e-17,6.98626850867575e-17,7.72102078165618e-17,8.53304762574407e-17,9.43047607852681e-17,1.04222879055959e-16,1.15184094930762e-16,1.27298111942343e-16,1.40686171244615e-16,1.55482265034959e-16,1.71834477593167e-16,1.8990646735869e-16,2.09879104879306e-16,2.31952283024357e-16,2.56346917579773e-16,2.83307158247499e-16,3.13102832177789e-16,3.46032144490016e-16,3.82424662809714e-16,4.22644615692185e-16,4.67094537944258e-16,5.16219299327973e-16,5.70510556966669e-16,6.30511676014699e-16,6.96823167838586e-16,7.70108700136547e-16,8.51101739147946e-16,9.40612890429924e-16,1.03953801167022e-15,1.14886717873212e-15,1.26969459466635e-15,1.40322954086309e-15,1.55080847994654e-15,1.71390843154201e-15,1.89416175478489e-15,2.09337248551939e-15,2.31353439169575e-15,2.55685092767e-15,2.82575728711561e-15,3.12294477526053e-15,3.45138774437421e-15,3.81437336208506e-15,4.21553451045888e-15,4.65888614510339e-15,5.14886547819387e-15,5.69037638758349e-15,6.2888384964616e-15,6.95024141476399e-15,7.68120468520207e-15,8.4890440338718e-15,9.38184458849864e-15,1.0368541797114e-14,1.14590108570223e-14,1.26641655490941e-14,1.39960674665544e-14,1.54680467314606e-14,1.70948354070452e-14,1.88927149411563e-14,2.08796791164591e-14,2.30756141382622e-14,2.55024976623425e-14,2.81846187547129e-14,3.11488209847584e-14,3.44247710846992e-14,3.80452558642212e-14,4.2046510351884e-14,4.64685804474685e-14,5.13557237148011e-14,5.67568523263256e-14,6.27260225925696e-14,6.93229759758633e-14,7.66137370029802e-14,8.46712740607902e-14,9.35762296883974e-14,1.03417727674784e-13,1.14294265039637e-13,1.26314697824636e-13,1.39599330561301e-13,1.54281120319177e-13,1.70507007384884e-13,1.88439385889881e-13,2.08257729105528e-13,2.30160385671905e-13,2.5436656473766e-13,2.81118529878867e-13,3.10684023754297e-13,3.43358947763966e-13,3.79470323529787e-13,4.19379565837867e-13,4.63486099799195e-13,5.12231358430362e-13,5.66103200663601e-13,6.25640794002941e-13,6.91440010693781e-13,7.64159391412661e-13,8.4452673616362e-13,9.33346388345331e-13,1.03150728489016e-12,1.13999185304371e-12,1.25988584282701e-12,1.39238919358753e-12,1.53882804339562e-12,1.70066800147997e-12,1.87952881653732e-12,2.07720058772199e-12,2.29566168055973e-12,2.53709852709496e-12,2.80392750843756e-12,3.09881913871702e-12,3.42472479248575e-12,3.78490624306721e-12,4.18296830747998e-12,4.62289492465801e-12,5.10908902805027e-12,5.64641661165907e-12,6.24025543054295e-12,6.8965488231974e-12,7.6218651944839e-12,8.42346375443317e-12,9.3093671708598e-12,1.02884418629173e-11,1.13704867392021e-11,1.25663312685235e-11,1.38879438648676e-11,1.53485516713077e-11,1.69627729416968e-11,1.8746763345067e-11,2.07183776569944e-11,2.28973484561934e-11,2.5305483614799e-11,2.79668845588783e-11,3.09081874836055e-11,3.41588299372554e-11,3.77513454420784e-11,4.17216891007302e-11,4.61095974470193e-11,5.09589861424971e-11,5.63183894991572e-11,6.22414462271408e-11,6.87874362689807e-11,7.60218740931841e-11,8.40171643850604e-11,9.28533266971391e-11,1.02618796311754e-10,1.13411309331068e-10,1.25338880852829e-10,1.38520886021783e-10,1.53089254776231e-10,1.691897922472e-10,1.86983638025205e-10,2.06648878899407e-10,2.28382331210081e-10,2.52401510652669e-10,2.78946809247987e-10,3.08283901266351e-10,3.4070640218495e-10,3.76538807290249e-10,4.16139739335832e-10,4.59905537759475e-10,5.08274225381426e-10,5.61729892283962e-10,6.20807540747668e-10,6.86098439733983e-10,7.58256042503715e-10,8.38002526596831e-10,9.26136021627915e-10,1.02353859723561e-09,1.13118509113185e-09,1.2501528656053e-09,1.3816325901251e-09,1.52694015796084e-09,1.68752985608467e-09,1.86500892016365e-09,2.06115362031438e-09,2.27792703861091e-09,2.51749871626939e-09,2.7822663671454e-09,3.07487987485918e-09,3.39826781372096e-09,3.75566675888581e-09,4.15065367908427e-09,4.58718173612646e-09,5.0696198494718e-09,5.6027964218416e-09,6.19204766349336e-09,6.84327099880283e-09,7.56298408966586e-09,8.35839006644333e-09,9.23744961930536e-09,1.02089606714863e-08,1.12826464318476e-08,1.246925270801e-08,1.37806554539926e-08,1.52299796287365e-08,1.68317305550841e-08,1.86019390938995e-08,2.05583220862824e-08,2.27204596696291e-08,2.5109991242184e-08,2.77508320373534e-08,3.06694124753292e-08,3.3894942687536e-08,3.7459704861338e-08,4.13993763308975e-08,4.57533866477722e-08,5.056531220493e-08,5.58833123637109e-08,6.17606114486175e-08,6.82560314339057e-08,7.54345806532551e-08,8.33681044245075e-08,9.21360041011406e-08,1.0182603174693e-07,1.12535168387177e-07,1.24370594626265e-07,1.37450763345783e-07,1.51906585219092e-07,1.67882738907259e-07,1.85539119049214e-07,2.05052436537942e-07,2.26617987098714e-07,2.50451605869759e-07,2.76791827547221e-07,3.0590227371372e-07,3.38074291243357e-07,3.73629868188879e-07,4.12924856333851e-07,4.56352532661569e-07,5.04347535384648e-07,5.5739021392751e-07,6.16011436396971e-07,6.80797902654697e-07,7.52398016164967e-07,8.31528373383754e-07,9.18980935634856e-07,1.0156309552492e-06,1.12244573529191e-06,1.24049431054333e-06,1.37095814662054e-06,1.51514296431358e-06,1.67449180747208e-06,1.85059948522164e-06,2.0452285330422e-06,2.26032685244039e-06,2.49804720574414e-06,2.76076876111163e-06,3.05112090336234e-06,3.37200954890861e-06,3.72664622812399e-06,4.11858022617256e-06,4.55173410392585e-06,5.03044295441213e-06,5.55949778761371e-06,6.14419347773281e-06,6.79038175268517e-06,7.50452975602301e-06,8.29378476722949e-06,9.16604572792217e-06,1.01300422895791e-05,1.11954221736183e-05,1.23728477177923e-05,1.36741025747144e-05,1.51122096298399e-05,1.6701561318394e-05,1.84580636446758e-05,2.03992953441319e-05,2.25446837799193e-05,2.49156993328888e-05,2.75360702286855e-05,3.04320199497875e-05,3.36325296058546e-05,3.71696278849497e-05,4.10787114834791e-05,4.53988992168646e-05,5.01734233489193e-05,5.54500620490707e-05,6.12816172965564e-05,6.7726443003537e-05,7.48490286292672e-05,8.27206441098112e-05,9.14200525378252e-05,0.000101034297700542,0.000111659574327813,0.000123402189723259,0.000136379626357992,0.000150721716006959,0.000166571937112197,0.000184088848275747,0.000203447672129443,0.000224842045311632,0.000248485951916505,0.0002746158595851,0.000303493079394869,0.000335406372895769,0.000370674832054302,0.00040965106052539,0.000452724687598623,0.000500326249385949,0.000552931475360796,0.000611066022253144,0.000675310701584715,0.000746307251827675,0.000824764711326213,0.000911466453774245,0.00100727795423488,0.00111315536046466,0.00123015495171371,0.0013594435752601,0.00150231015975428,0.00166017841404558,0.00183462083058928,0.0020273741238382,0.00224035624624938,0.00247568513773045,0.00273569937853614,0.00302298093083163,0.00334038017036746,0.00369104342694656,0.00407844327057072,0.00450641179924946,0.00497917720432724,0.00550140390965744,0.00607823660177923,0.00671534848911807,0.00741899414868677,0.0081960673382678,0.00905416416988759,0.0100016520556519,0.0110477448485938,0.0122025846076962,0.0134773304160263,0.0148842546719183,0.0164368472529096,0.0181499279178097,0.0200397672603978,0.0221242164548793,0.0244228459337794,0.0269570930082082,0.0297504182726206,0.0328284704248656,0.0362192588706594,0.0399533331624308,0.0440639679385741,0.0485873515737421,0.0535627762179636,0.0590328262879716,0.0650435617765913,0.0716446919676702,0.0788897342925496,0.0868361521539504,0.0955454645979632,0.105083319768697,0.115519523179756,0.126928011042972,0.139386758282962,0.152977610526075,0.167786029386268,0.18390074088834,0.201413277982752,0.220417409918453,0.241008453832993,0.263282467338034,0.287335325115432,0.313261687518223,0.34115387473209,0.371100665947779,0.403186048885462,0.437487950485888,0.474076984180107,0.513015252399956,0.554355244468528,0.598138869381597,0.644396660073574,0.693147180559945,0.744396660073575,0.798138869381593,0.854355244468534,0.913015252399956,0.974076984180107,1.03748795048589,1.10318604888546,1.17110066594779,1.24115387473209,1.31326168751822,1.38733532511544,1.46328246733803,1.541008453833,1.62041740991846,1.70141327798275,1.78390074088835,1.86778602938627,1.95297761052608,2.03938675828297,2.12692801104297,2.21551952317976,2.3050833197687,2.39554546459797,2.48683615215396,2.57888973429255,2.67164469196768,2.76504356177659,2.85903282628798,2.95356277621797,3.04858735157374,3.14406396793858,3.23995333316243,3.33621925887067,3.43282847042487,3.52975041827262,3.62695709300822,3.72442284593378,3.82212421645489,3.9200397672604,4.01814992791781,4.11643684725292,4.21488425467192,4.31347733041604,4.4122025846077,4.51104774484859,4.61000165205566,4.70905416416989,4.80819606733828,4.90741899414869,5.00671534848912,5.10607823660179,5.20550140390966,5.30497917720434,5.40450641179925,5.50407844327057,5.60369104342695,5.70334038017037,5.80302298093084,5.90273569937854,6.00247568513773,6.10224035624626,6.20202737412384,6.3018346208306,6.40166017841405,6.50150231015975,6.60135944357527,6.70123015495172,6.80111315536048,6.90100727795424,7.00091146645377,7.10082476471133,7.20074630725183,7.3006753107016,7.40061106602226,7.50055293147536,7.60050032624939,7.7004527246876,7.80040965106054,7.90037067483206,8.0003354063729,8.1003034930794,8.20027461585959,8.30024848595193,8.40022484204532,8.50020344767213,8.60018408884828,8.70016657193712,8.80015072171602,8.90013637962636,9.00012340218972,9.10011165957434,9.2001010342977,9.30009142005255,9.40008272064412,9.50007484902863,9.60006772644301,9.7000612816173,9.80005545006206,9.90005017342335,10.0000453988992,10.1000410787115,10.2000371696279,10.3000336325296,10.40003043202,10.5000275360702,10.6000249156993,10.7000225446838,10.8000203992954,10.9000184580637,11.0000167015613,11.1000151122096,11.2000136741026,11.3000123728477,11.4000111954222,11.5000101300423,11.6000091660457,11.7000082937848,11.8000075045298,11.9000067903818,12.0000061441935,12.1000055594978,12.200005030443,12.3000045517341,12.4000041185802,12.5000037266462,12.6000033720096,12.7000030511209,12.8000027607688,12.9000024980472,13.0000022603269,13.1000020452285,13.2000018505995,13.3000016744918,13.400001515143,13.5000013709581,13.6000012404943,13.7000011224457,13.800001015631,13.9000009189809,14.0000008315284,14.100000752398,14.2000006807979,14.3000006160114,14.4000005573902,14.5000005043475,14.6000004563525,14.7000004129249,14.8000003736299,14.9000003380743,15.0000003059023,15.1000002767918,15.2000002504516,15.300000226618,15.4000002050524,15.5000001855391,15.6000001678827,15.7000001519066,15.8000001374508,15.9000001243706,16.0000001125352,16.100000101826,16.200000092136,16.3000000833681,16.4000000754346,16.500000068256,16.6000000617606,16.7000000558833,16.8000000505653,16.9000000457534,17.0000000413994,17.1000000374597,17.2000000338949,17.3000000306694,17.4000000277508,17.50000002511,17.6000000227205,17.7000000205583,17.8000000186019,17.9000000168317,18.00000001523,18.1000000137807,18.2000000124693,18.3000000112827,18.400000010209,18.5000000092374,18.6000000083584,18.700000007563,18.8000000068433,18.9000000061921,19.0000000056028,19.1000000050696,19.2000000045872,19.3000000041507,19.4000000037557,19.5000000033983,19.6000000030749,19.7000000027823,19.8000000025175,19.9000000022779,20.0000000020612,20.100000001865,20.2000000016875,20.3000000015269,20.4000000013816,20.5000000012502,20.6000000011312,20.7000000010235,20.8000000009261,20.900000000838,21.0000000007583,21.1000000006861,21.2000000006208,21.3000000005617,21.4000000005083,21.5000000004599,21.6000000004161,21.7000000003765,21.8000000003407,21.9000000003083,22.0000000002789,22.1000000002524,22.2000000002284,22.3000000002067,22.400000000187,22.5000000001692,22.6000000001531,22.7000000001385,22.8000000001254,22.9000000001134,23.0000000001026,23.1000000000929,23.200000000084,23.300000000076,23.4000000000688,23.5000000000622,23.6000000000563,23.700000000051,23.8000000000461,23.9000000000417,24.0000000000378,24.1000000000342,24.2000000000309,24.300000000028,24.4000000000253,24.5000000000229,24.6000000000207,24.7000000000188,24.800000000017,24.9000000000154,25.0000000000139,25.1000000000126,25.2000000000114,25.3000000000103,25.4000000000093,25.5000000000084,25.6000000000076,25.7000000000069,25.8000000000062,25.9000000000057,26.0000000000051,26.1000000000046,26.2000000000042,26.3000000000038,26.4000000000034,26.5000000000031,26.6000000000028,26.7000000000025,26.8000000000023,26.9000000000021,27.0000000000019,27.1000000000017,27.2000000000015,27.3000000000014,27.4000000000013,27.5000000000011,27.600000000001,27.7000000000009,27.8000000000009,27.9000000000008,28.0000000000007,28.1000000000006,28.2000000000006,28.3000000000005,28.4000000000005,28.5000000000004,28.6000000000004,28.7000000000004,28.8000000000003,28.9000000000003,29.0000000000003,29.1000000000002,29.2000000000002,29.3000000000002,29.4000000000002,29.5000000000002,29.6000000000001,29.7000000000001,29.8000000000001,29.9000000000001,30.0000000000001,30.1000000000001,30.2000000000001,30.3000000000001,30.4000000000001,30.5000000000001,30.6,30.7000000000001,30.8000000000001,30.9,31,31.1,31.2,31.3,31.4,31.5,31.6,31.7,31.8,31.9,32,32.1,32.2,32.3,32.4,32.5,32.6,32.7,32.8,32.9,33,33.1,33.2,33.3,33.4,33.5,33.6,33.7,33.8,33.9,34,34.1,34.2,34.3,34.4,34.5,34.6,34.7,34.8,34.9,35,35.1,35.2,35.3,35.4,35.5,35.6,35.7,35.8,35.9,36,36.1,36.2,36.3,36.4,36.5,36.6,36.7,36.8,36.9,37,37.1,37.2,37.3,37.4,37.5,37.6,37.7,37.8,37.9,38,38.1,38.2,38.3,38.4,38.5,38.6,38.7,38.8,38.9,39,39.1,39.2,39.3,39.4,39.5,39.6,39.7,39.8,39.9,40,40.1,40.2,40.3,40.4,40.5,40.6,40.7,40.8,40.9,41,41.1,41.2,41.3,41.4,41.5,41.6,41.7,41.8,41.9,42,42.1,42.2,42.3,42.4,42.5,42.6,42.7,42.8,42.9,43,43.1,43.2,43.3,43.4,43.5,43.6,43.7,43.8,43.9,44,44.1,44.2,44.3,44.4,44.5,44.6,44.7,44.8,44.9,45,45.1,45.2,45.3,45.4,45.5,45.6,45.7,45.8,45.9,46,46.1,46.2,46.3,46.4,46.5,46.6,46.7,46.8,46.9,47,47.1,47.2,47.3,47.4,47.5,47.6,47.7,47.8,47.9,48,48.1,48.2,48.3,48.4,48.5,48.6,48.7,48.8,48.9,49,49.1,49.2,49.3,49.4,49.5,49.6,49.7,49.8,49.9,50,50.1,50.2,50.3,50.4,50.5,50.6,50.7,50.8,50.9,51,51.1,51.2,51.3,51.4,51.5,51.6,51.7,51.8,51.9,52,52.1,52.2,52.3,52.4,52.5,52.6,52.7,52.8,52.9,53,53.1,53.2,53.3,53.4,53.5,53.6,53.7,53.8,53.9,54,54.1,54.2,54.3,54.4,54.5,54.6,54.7,54.8,54.9,55,55.1,55.2,55.3,55.4,55.5,55.6,55.7,55.8,55.9,56,56.1,56.2,56.3,56.4,56.5,56.6,56.7,56.8,56.9,57,57.1,57.2,57.3,57.4,57.5,57.6,57.7,57.8,57.9,58,58.1,58.2,58.3,58.4,58.5,58.6,58.7,58.8,58.9,59,59.1,59.2,59.3,59.4,59.5,59.6,59.7,59.8,59.9,60,60.1,60.2,60.3,60.4,60.5,60.6,60.7,60.8,60.9,61,61.1,61.2,61.3,61.4,61.5,61.6,61.7,61.8,61.9,62,62.1,62.2,62.3,62.4,62.5,62.6,62.7,62.8,62.9,63,63.1,63.2,63.3,63.4,63.5,63.6,63.7,63.8,63.9,64,64.1,64.2,64.3,64.4,64.5,64.6,64.7,64.8,64.9,65,65.1,65.2,65.3,65.4,65.5,65.6,65.7,65.8,65.9,66,66.1,66.2,66.3,66.4,66.5,66.6,66.7,66.8,66.9,67,67.1,67.2,67.3,67.4,67.5,67.6,67.7,67.8,67.9,68,68.1,68.2,68.3,68.4,68.5,68.6,68.7,68.8,68.9,69,69.1,69.2,69.3,69.4,69.5,69.6,69.7,69.8,69.9,70,70.1,70.2,70.3,70.4,70.5,70.6,70.7,70.8,70.9,71,71.1,71.2,71.3,71.4,71.5,71.6,71.7,71.8,71.9,72,72.1,72.2,72.3,72.4,72.5,72.6,72.7,72.8,72.9,73,73.1,73.2,73.3,73.4,73.5,73.6,73.7,73.8,73.9,74,74.1,74.2,74.3,74.4,74.5,74.6,74.7,74.8,74.9,75,75.1,75.2,75.3,75.4,75.5,75.6,75.7,75.8,75.9,76,76.1,76.2,76.3,76.4,76.5,76.6,76.7,76.8,76.9,77,77.1,77.2,77.3,77.4,77.5,77.6,77.7,77.8,77.9,78,78.1,78.2,78.3,78.4,78.5,78.6,78.7,78.8,78.9,79,79.1,79.2,79.3,79.4,79.5,79.6,79.7,79.8,79.9,80,80.1,80.2,80.3,80.4,80.5,80.6,80.7,80.8,80.9,81,81.1,81.2,81.3,81.4,81.5,81.6,81.7,81.8,81.9,82,82.1,82.2,82.3,82.4,82.5,82.6,82.7,82.8,82.9,83,83.1,83.2,83.3,83.4,83.5,83.6,83.7,83.8,83.9,84,84.1,84.2,84.3,84.4,84.5,84.6,84.7,84.8,84.9,85,85.1,85.2,85.3,85.4,85.5,85.6,85.7,85.8,85.9,86,86.1,86.2,86.3,86.4,86.5,86.6,86.7,86.8,86.9,87,87.1,87.2,87.3,87.4,87.5,87.6,87.7,87.8,87.9,88,88.1,88.2,88.3,88.4,88.5,88.6,88.7,88.8,88.9,89,89.1,89.2,89.3,89.4,89.5,89.6,89.7,89.8,89.9,90,90.1,90.2,90.3,90.4,90.5,90.6,90.7,90.8,90.9,91,91.1,91.2,91.3,91.4,91.5,91.6,91.7,91.8,91.9,92,92.1,92.2,92.3,92.4,92.5,92.6,92.7,92.8,92.9,93,93.1,93.2,93.3,93.4,93.5,93.6,93.7,93.8,93.9,94,94.1,94.2,94.3,94.4,94.5,94.6,94.7,94.8,94.9,95,95.1,95.2,95.3,95.4,95.5,95.6,95.7,95.8,95.9,96,96.1,96.2,96.3,96.4,96.5,96.6,96.7,96.8,96.9,97,97.1,97.2,97.3,97.4,97.5,97.6,97.7,97.8,97.9,98,98.1,98.2,98.3,98.4,98.5,98.6,98.7,98.8,98.9,99,99.1,99.2,99.3,99.4,99.5,99.6,99.7,99.8,99.9,100] +[3.72007597602084e-44,3.75746336114566e-44,3.79522649573778e-44,3.83336915614223e-44,3.87189515665677e-44,3.91080834991352e-44,3.95011262726433e-44,3.98981191916958e-44,4.02991019559166e-44,4.07041146639157e-44,4.11131978173009e-44,4.15263923247294e-44,4.19437395059958e-44,4.23652810961655e-44,4.279105924975e-44,4.32211165449187e-44,4.3655495987759e-44,4.40942410165785e-44,4.45373955062449e-44,4.49850037725759e-44,4.54371105767725e-44,4.58937611298904e-44,4.6355001097367e-44,4.68208766035825e-44,4.72914342364753e-44,4.77667210522021e-44,4.82467845798398e-44,4.87316728261406e-44,4.92214342803346e-44,4.97161179189746e-44,5.02157732108361e-44,5.07204501218659e-44,5.12301991201744e-44,5.17450711810876e-44,5.226511779224e-44,5.27903909587253e-44,5.33209432082993e-44,5.38568275966284e-44,5.43980977125973e-44,5.494480768367e-44,5.54970121812987e-44,5.60547664263923e-44,5.66181261948419e-44,5.71871478230929e-44,5.77618882137814e-44,5.83424048414273e-44,5.89287557581753e-44,5.95209995996073e-44,6.01191955906004e-44,6.07234035512512e-44,6.13336839028609e-44,6.19500976739725e-44,6.25727065064759e-44,6.32015726617749e-44,6.38367590270083e-44,6.44783291213409e-44,6.51263471023187e-44,6.57808777722779e-44,6.64419865848329e-44,6.71097396514149e-44,6.7784203747886e-44,6.84654463212199e-44,6.91535354962406e-44,6.98485400824382e-44,7.05505295808522e-44,7.12595741910167e-44,7.19757448179824e-44,7.2699113079411e-44,7.34297513127303e-44,7.41677325823714e-44,7.49131306870786e-44,7.56660201672811e-44,7.64264763125567e-44,7.71945751691525e-44,7.79703935475932e-44,7.87540090303652e-44,7.95454999796689e-44,8.03449455452575e-44,8.11524256723561e-44,8.19680211096493e-44,8.27918134173591e-44,8.36238849754053e-44,8.44643189916346e-44,8.53131995101514e-44,8.61706114197138e-44,8.70366404622261e-44,8.79113732413166e-44,8.87948972309909e-44,8.96873007843831e-44,9.05886731425946e-44,9.14991044436113e-44,9.24186857313205e-44,9.33475089646199e-44,9.42856670266057e-44,9.52332537338645e-44,9.61903638458593e-44,9.71570930743962e-44,9.81335380932064e-44,9.91197965476043e-44,1.00115967064256e-43,1.01122149261045e-43,1.02138443757029e-43,1.03164952182503e-43,1.04201777189168e-43,1.05249022460387e-43,1.06306792721558e-43,1.07375193750592e-43,1.0845433238848e-43,1.09544316549987e-43,1.10645255234435e-43,1.11757258536611e-43,1.12880437657773e-43,1.14014904916768e-43,1.15160773761266e-43,1.1631815877911e-43,1.17487175709763e-43,1.18667941455892e-43,1.19860574095059e-43,1.21065192891519e-43,1.22281918308155e-43,1.23510872018525e-43,1.24752176919021e-43,1.26005957141172e-43,1.27272338064042e-43,1.28551446326777e-43,1.29843409841273e-43,1.31148357804957e-43,1.3246642071371e-43,1.33797730374925e-43,1.35142419920676e-43,1.36500623821036e-43,1.37872477897532e-43,1.39258119336709e-43,1.4065768670387e-43,1.42071319956918e-43,1.43499160460352e-43,1.44941350999417e-43,1.46398035794367e-43,1.47869360514893e-43,1.49355472294697e-43,1.50856519746195e-43,1.52372652975378e-43,1.5390402359684e-43,1.55450784748915e-43,1.57013091109005e-43,1.58591098909053e-43,1.60184965951149e-43,1.61794851623331e-43,1.63420916915504e-43,1.65063324435552e-43,1.66722238425598e-43,1.68397824778423e-43,1.70090251054055e-43,1.71799686496537e-43,1.73526302050836e-43,1.75270270379943e-43,1.77031765882149e-43,1.78810964708469e-43,1.80608044780271e-43,1.82423185807058e-43,1.84256569304444e-43,1.8610837861231e-43,1.87978798913128e-43,1.89868017250485e-43,1.91776222547793e-43,1.9370360562717e-43,1.95650359228527e-43,1.97616678028852e-43,1.99602758661661e-43,2.0160879973667e-43,2.03635001859663e-43,2.05681567652536e-43,2.07748701773579e-43,2.09836610937923e-43,2.11945503938223e-43,2.14075591665541e-43,2.16227087130423e-43,2.18400205484205e-43,2.20595164040539e-43,2.22812182297107e-43,2.25051481957579e-43,2.27313286953793e-43,2.29597823468128e-43,2.31905319956146e-43,2.34236007169414e-43,2.36590118178592e-43,2.38967888396752e-43,2.41369555602891e-43,2.43795359965729e-43,2.46245544067731e-43,2.48720352929345e-43,2.51220034033516e-43,2.53744837350444e-43,2.56295015362562e-43,2.58870823089793e-43,2.61472518115063e-43,2.64100360610035e-43,2.66754613361157e-43,2.6943554179591e-43,2.7214341400937e-43,2.74878500791021e-43,2.77641075651818e-43,2.80431414851545e-43,2.83249797426454e-43,2.86096505217148e-43,2.88971822896774e-43,2.91876037999505e-43,2.94809440949262e-43,2.97772325088794e-43,3.00764986708979e-43,3.03787725078469e-43,3.06840842473629e-43,3.09924644208737e-43,3.13039438666533e-43,3.16185537329068e-43,3.19363254808824e-43,3.22572908880194e-43,3.25814820511267e-43,3.29089313895905e-43,3.3239671648617e-43,3.35737359025087e-43,3.39111575579683e-43,3.42519703574436e-43,3.45962083824981e-43,3.49439060572206e-43,3.52950981516693e-43,3.56498197853459e-43,3.60081064307088e-43,3.63699939167221e-43,3.67355184324355e-43,3.71047165306047e-43,3.74776251313481e-43,3.78542815258356e-43,3.82347233800216e-43,3.8618988738408e-43,3.90071160278502e-43,3.93991440614019e-43,3.97951120421924e-43,4.01950595673492e-43,4.05990266319594e-43,4.10070536330654e-43,4.14191813737067e-43,4.18354510670022e-43,4.22559043402673e-43,4.26805832391792e-43,4.31095302319829e-43,4.3542788213734e-43,4.39804005105927e-43,4.44224108841531e-43,4.486886353582e-43,4.53198031112319e-43,4.57752747047216e-43,4.62353238638274e-43,4.66999965938497e-43,4.71693393624482e-43,4.76433991042902e-43,4.81222232257462e-43,4.86058596096262e-43,4.90943566199728e-43,4.95877631068935e-43,5.00861284114475e-43,5.05895023705819e-43,5.10979353221114e-43,5.16114781097542e-43,5.21301820882183e-43,5.26540991283333e-43,5.31832816222389e-43,5.37177824886271e-43,5.42576551780291e-43,5.48029536781629e-43,5.53537325193347e-43,5.59100467798858e-43,5.64719520917076e-43,5.70395046457987e-43,5.76127611978866e-43,5.8191779074106e-43,5.8776616176726e-43,5.93673309899436e-43,5.99639825857339e-43,6.0566630629753e-43,6.11753353873066e-43,6.17901577293793e-43,6.24111591387161e-43,6.30384017159772e-43,6.3671948185942e-43,6.43118619037846e-43,6.49582068614119e-43,6.56110476938574e-43,6.62704496857473e-43,6.69364787778324e-43,6.76092015735758e-43,6.82886853458169e-43,6.89749980435008e-43,6.96682082984685e-43,7.03683854323221e-43,7.10755994633605e-43,7.1789921113574e-43,7.2511421815725e-43,7.3240173720484e-43,7.39762497036477e-43,7.47197233734299e-43,7.54706690778161e-43,7.62291619120014e-43,7.69952777259035e-43,7.77690931317412e-43,7.85506855116987e-43,7.93401330256676e-43,8.01375146190549e-43,8.09429100306868e-43,8.17563998007744e-43,8.25780652789715e-43,8.34079886325129e-43,8.42462528544245e-43,8.50929417718258e-43,8.59481400543164e-43,8.68119332224362e-43,8.76844076562205e-43,8.85656506038423e-43,8.94557501903294e-43,9.0354795426381e-43,9.12628762172724e-43,9.21800833718369e-43,9.31065086115569e-43,9.40422445797271e-43,9.49873848507227e-43,9.59420239393611e-43,9.69062573103454e-43,9.78801813878149e-43,9.88638935649916e-43,9.98574922139117e-43,1.00861076695267e-42,1.01874747368344e-42,1.02898605601052e-42,1.03932753780071e-42,1.04977295321079e-42,1.06032334679099e-42,1.07097977358949e-42,1.08174329925783e-42,1.09261500015754e-42,1.1035959634678e-42,1.11468728729407e-42,1.12589008077796e-42,1.1372054642082e-42,1.14863456913252e-42,1.16017853847095e-42,1.17183852663005e-42,1.18361569961834e-42,1.19551123516295e-42,1.20752632282735e-42,1.21966216413028e-42,1.23191997266603e-42,1.24430097422566e-42,1.25680640691961e-42,1.26943752130161e-42,1.28219558049361e-42,1.29508186031214e-42,1.30809764939596e-42,1.32124424933478e-42,1.3345229747996e-42,1.347935153674e-42,1.36148212718704e-42,1.37516525004739e-42,1.38898589057871e-42,1.40294543085657e-42,1.41704526684665e-42,1.4312868085443e-42,1.44567148011552e-42,1.4602007200395e-42,1.47487598125233e-42,1.48969873129233e-42,1.5046704524469e-42,1.51979264190059e-42,1.53506681188499e-42,1.5504944898298e-42,1.56607721851566e-42,1.58181655622846e-42,1.59771407691506e-42,1.61377137034077e-42,1.62999004224835e-42,1.64637171451849e-42,1.66291802533203e-42,1.6796306293339e-42,1.69651119779838e-42,1.71356141879642e-42,1.73078299736432e-42,1.74817765567425e-42,1.7657471332066e-42,1.78349318692372e-42,1.80141759144576e-42,1.81952213922816e-42,1.83780864074076e-42,1.85627892464891e-42,1.87493483799647e-42,1.89377824639027e-42,1.91281103418683e-42,1.93203510468086e-42,1.95145238029537e-42,1.97106480277414e-42,1.99087433337575e-42,2.01088295306974e-42,2.03109266273481e-42,2.05150548335873e-42,2.07212345624056e-42,2.09294864319481e-42,2.11398312675751e-42,2.13522901039452e-42,2.15668841871196e-42,2.17836349766848e-42,2.20025641479011e-42,2.22236935938678e-42,2.24470454277133e-42,2.26726419848078e-42,2.29005058249948e-42,2.31306597348478e-42,2.33631267299501e-42,2.35979300571948e-42,2.383509319711e-42,2.40746398662077e-42,2.43165940193544e-42,2.45609798521666e-42,2.48078218034319e-42,2.50571445575504e-42,2.53089730470061e-42,2.55633324548573e-42,2.58202482172565e-42,2.60797460259948e-42,2.63418518310689e-42,2.66065918432772e-42,2.68739925368426e-42,2.71440806520567e-42,2.74168831979557e-42,2.76924274550224e-42,2.79707409779114e-42,2.82518515982075e-42,2.85357874272068e-42,2.88225768587282e-42,2.91122485719549e-42,2.9404831534299e-42,2.97003550043003e-42,2.99988485345527e-42,3.03003419746578e-42,3.06048654742103e-42,3.09124494858147e-42,3.12231247681282e-42,3.15369223889374e-42,3.18538737282669e-42,3.21740104815136e-42,3.24973646626208e-42,3.28239686072754e-42,3.31538549761438e-42,3.34870567581384e-42,3.38236072737149e-42,3.41635401782047e-42,3.45068894651826e-42,3.48536894698627e-42,3.52039748725342e-42,3.55577807020303e-42,3.59151423392275e-42,3.62760955205886e-42,3.6640676341732e-42,3.7008921261043e-42,3.73808671033215e-42,3.77565510634611e-42,3.81360107101705e-42,3.85192839897315e-42,3.8906409229791e-42,3.92974251431951e-42,3.9692370831862e-42,4.00912857906892e-42,4.04942099115044e-42,4.09011834870566e-42,4.13122472150413e-42,4.17274422021752e-42,4.21468099683022e-42,4.25703924505479e-42,4.29982320075148e-42,4.34303714235143e-42,4.38668539128477e-42,4.43077231241289e-42,4.47530231446456e-42,4.52027985047706e-42,4.56570941824157e-42,4.61159556075262e-42,4.65794286666281e-42,4.70475597074131e-42,4.75203955433745e-42,4.79979834584914e-42,4.84803712119527e-42,4.89676070429348e-42,4.94597396754285e-42,4.99568183231062e-42,5.04588926942464e-42,5.0966012996706e-42,5.1478229942937e-42,5.19955947550603e-42,5.25181591699896e-42,5.30459754446004e-42,5.35790963609616e-42,5.41175752316083e-42,5.46614659048755e-42,5.52108227702853e-42,5.57657007639814e-42,5.63261553742246e-42,5.68922426469446e-42,5.74640191913398e-42,5.804154218554e-42,5.86248693823278e-42,5.92140591149072e-42,5.98091703027441e-42,6.04102624574525e-42,6.10173956887478e-42,6.16306307104608e-42,6.22500288466039e-42,6.2875652037506e-42,6.35075628460092e-42,6.41458244637203e-42,6.47905007173318e-42,6.54416560750082e-42,6.6099355652827e-42,6.67636652212932e-42,6.7434651211919e-42,6.81123807238608e-42,6.87969215306364e-42,6.9488342086896e-42,7.01867115352705e-42,7.08920997132887e-42,7.16045771603551e-42,7.23242151248072e-42,7.30510855710432e-42,7.37852611867124e-42,7.45268153899872e-42,7.52758223369079e-42,7.60323569287913e-42,7.67964948197291e-42,7.75683124241462e-42,7.83478869244451e-42,7.91352962787277e-42,7.99306192285845e-42,8.0733935306972e-42,8.15453248461699e-42,8.23648689858071e-42,8.31926496809794e-42,8.40287497104483e-42,8.48732526849125e-42,8.57262430553719e-42,8.65878061215768e-42,8.74580280405494e-42,8.83369958352092e-42,8.9224797403067e-42,9.0121521525018e-42,9.10272578742244e-42,9.19420970250745e-42,9.28661304622444e-42,9.37994505898506e-42,9.47421507406822e-42,9.56943251855387e-42,9.66560691426605e-42,9.76274787872423e-42,9.86086512610607e-42,9.95996846821793e-42,1.00600678154765e-41,1.01611731779001e-41,1.02632946661092e-41,1.03664424923376e-41,1.04706269714541e-41,1.05758585219932e-41,1.06821476671977e-41,1.07895050360708e-41,1.08979413644389e-41,1.10074674960248e-41,1.11180943835335e-41,1.12298330897455e-41,1.13426947886248e-41,1.14566907664352e-41,1.15718324228695e-41,1.16881312721893e-41,1.18055989443766e-41,1.19242471862962e-41,1.20440878628714e-41,1.21651329582697e-41,1.22873945771014e-41,1.24108849456304e-41,1.25356164129962e-41,1.266160145245e-41,1.27888526626003e-41,1.29173827686741e-41,1.30472046237895e-41,1.317833121024e-41,1.33107756407933e-41,1.34445511600032e-41,1.3579671145533e-41,1.37161491094935e-41,1.38539986997953e-41,1.39932337015122e-41,1.41338680382601e-41,1.42759157735902e-41,1.44193911123942e-41,1.45643084023258e-41,1.47106821352346e-41,1.48585269486157e-41,1.50078576270739e-41,1.51586891038015e-41,1.53110364620715e-41,1.54649149367472e-41,1.56203399158041e-41,1.57773269418693e-41,1.59358917137767e-41,1.60960500881352e-41,1.62578180809162e-41,1.64212118690535e-41,1.65862477920618e-41,1.67529423536716e-41,1.69213122234775e-41,1.70913742386066e-41,1.72631454054028e-41,1.74366429011254e-41,1.76118840756686e-41,1.77888864532961e-41,1.79676677343931e-41,1.81482457972364e-41,1.83306386997833e-41,1.85148646814755e-41,1.87009421650652e-41,1.88888897584555e-41,1.90787262565623e-41,1.92704706431939e-41,1.94641420929487e-41,1.96597599731326e-41,1.98573438456973e-41,2.00569134691945e-41,2.02584888007524e-41,2.04620899980728e-41,2.06677374214445e-41,2.08754516357819e-41,2.10852534126791e-41,2.12971637324883e-41,2.15112037864188e-41,2.1727394978654e-41,2.1945758928493e-41,2.21663174725134e-41,2.2389092666753e-41,2.26141067889165e-41,2.28413823406045e-41,2.3070942049561e-41,2.33028088719481e-41,2.35370059946417e-41,2.37735568375487e-41,2.40124850559512e-41,2.42538145428697e-41,2.44975694314537e-41,2.4743774097396e-41,2.49924531613678e-41,2.52436314914826e-41,2.54973342057833e-41,2.57535866747524e-41,2.60124145238501e-41,2.62738436360775e-41,2.65379001545632e-41,2.68046104851796e-41,2.70740012991819e-41,2.73460995358754e-41,2.76209324053114e-41,2.78985273910054e-41,2.8178912252687e-41,2.84621150290767e-41,2.87481640406879e-41,2.90370878926596e-41,2.93289154776187e-41,2.96236759785664e-41,2.99213988717979e-41,3.02221139298517e-41,3.05258512244832e-41,3.08326411296759e-41,3.11425143246755e-41,3.14555017970592e-41,3.17716348458362e-41,3.20909450845742e-41,3.24134644445627e-41,3.27392251780075e-41,3.30682598612528e-41,3.34006013980408e-41,3.3736283022803e-41,3.40753383039806e-41,3.44178011473854e-41,3.47637057995865e-41,3.51130868513368e-41,3.54659792410339e-41,3.58224182582101e-41,3.61824395470637e-41,3.65460791100247e-41,3.69133733113518e-41,3.72843588807709e-41,3.76590729171489e-41,3.80375528922013e-41,3.84198366542405e-41,3.88059624319622e-41,3.9195968838265e-41,3.95898948741156e-41,3.99877799324454e-41,4.0389663802091e-41,4.07955866717756e-41,4.12055891341238e-41,4.1619712189723e-41,4.20379972512249e-41,4.24604861474837e-41,4.28872211277405e-41,4.33182448658502e-41,4.37536004645445e-41,4.41933314597473e-41,4.4637481824924e-41,4.50860959754806e-41,4.55392187732073e-41,4.59968955307607e-41,4.64591720161975e-41,4.69260944575526e-41,4.73977095474587e-41,4.78740644478171e-41,4.83552067945161e-41,4.88411847021908e-41,4.93320467690361e-41,4.98278420816691e-41,5.0328620220033e-41,5.08344312623602e-41,5.13453257901759e-41,5.18613548933577e-41,5.23825701752475e-41,5.29090237578072e-41,5.34407682868329e-41,5.39778569372222e-41,5.45203434182868e-41,5.50682819791263e-41,5.56217274140549e-41,5.61807350680757e-41,5.67453608424215e-41,5.73156612001396e-41,5.789169317174e-41,5.84735143609017e-41,5.90611829502276e-41,5.96547577070654e-41,6.02542979893873e-41,6.08598637517202e-41,6.14715155511442e-41,6.20893145533505e-41,6.27133225387535e-41,6.33436019086707e-41,6.39802156915662e-41,6.46232275493469e-41,6.52727017837364e-41,6.59287033426984e-41,6.65912978269344e-41,6.72605514964471e-41,6.793653127716e-41,6.86193047676137e-41,6.9308940245728e-41,7.00055066756245e-41,7.07090737145257e-41,7.14197117197238e-41,7.21374917556095e-41,7.28624856007866e-41,7.35947657552427e-41,7.43344054476024e-41,7.50814786424535e-41,7.58360600477369e-41,7.6598225122221e-41,7.73680500830504e-41,7.81456119133617e-41,7.89309883699848e-41,7.97242579912221e-41,8.05255001046956e-41,8.13347948352833e-41,8.21522231131348e-41,8.29778666817569e-41,8.38118081061969e-41,8.46541307812908e-41,8.5504918940007e-41,8.63642576618728e-41,8.72322328814752e-41,8.81089313970583e-41,8.89944408792066e-41,8.98888498796052e-41,9.07922478398982e-41,9.17047251006368e-41,9.26263729103051e-41,9.35572834344545e-41,9.44975497649122e-41,9.54472659290932e-41,9.64065268994081e-41,9.73754286027519e-41,9.83540679301012e-41,9.93425427462068e-41,1.00340951899373e-40,1.01349395231345e-40,1.023679735873e-40,1.03396788825921e-40,1.04435943829587e-40,1.05485542514667e-40,1.06545689841903e-40,1.07616491826912e-40,1.08698055550785e-40,1.09790489170794e-40,1.10893901931214e-40,1.12008404174238e-40,1.13134107351019e-40,1.14271124032816e-40,1.15419567922242e-40,1.16579553864642e-40,1.1775119785958e-40,1.18934617072429e-40,1.20129929846099e-40,1.21337255712862e-40,1.2255671540631e-40,1.2378843087343e-40,1.25032525286796e-40,1.26289123056883e-40,1.27558349844518e-40,1.28840332573437e-40,1.30135199442978e-40,1.31443079940913e-40,1.32764104856377e-40,1.34098406292962e-40,1.35446117681928e-40,1.36807373795534e-40,1.38182310760524e-40,1.39571066071745e-40,1.4097377860588e-40,1.42390588635356e-40,1.43821637842355e-40,1.45267069332988e-40,1.46727027651613e-40,1.48201658795276e-40,1.49691110228318e-40,1.51195530897128e-40,1.52715071245022e-40,1.54249883227306e-40,1.55800120326455e-40,1.57365937567468e-40,1.58947491533378e-40,1.60544940380899e-40,1.62158443856243e-40,1.63788163311108e-40,1.65434261718794e-40,1.67096903690513e-40,1.6877625549185e-40,1.70472485059385e-40,1.72185762017483e-40,1.73916257695275e-40,1.75664145143766e-40,1.77429599153157e-40,1.79212796270324e-40,1.8101391481646e-40,1.82833134904926e-40,1.84670638459244e-40,1.86526609231297e-40,1.88401232819716e-40,1.90294696688419e-40,1.92207190185366e-40,1.94138904561509e-40,1.96090032989888e-40,1.98060770584977e-40,2.00051314422176e-40,2.02061863557525e-40,2.04092619047617e-40,2.06143783969692e-40,2.08215563441948e-40,2.10308164644065e-40,2.12421796837904e-40,2.14556671388442e-40,2.1671300178492e-40,2.18891003662171e-40,2.21090894822195e-40,2.23312895255948e-40,2.2555722716532e-40,2.27824114985371e-40,2.30113785406778e-40,2.32426467398485e-40,2.34762392230624e-40,2.37121793497622e-40,2.39504907141568e-40,2.4191197147582e-40,2.44343227208814e-40,2.46798917468145e-40,2.49279287824893e-40,2.51784586318153e-40,2.5431506347987e-40,2.56870972359865e-40,2.59452568551152e-40,2.62060110215509e-40,2.64693858109272e-40,2.67354075609421e-40,2.7004102873993e-40,2.72754986198348e-40,2.75496219382679e-40,2.78265002418533e-40,2.81061612186517e-40,2.83886328349935e-40,2.86739433382764e-40,2.89621212597882e-40,2.92531954175607e-40,2.95471949192532e-40,2.98441491650599e-40,3.01440878506537e-40,3.04470409701528e-40,3.07530388191211e-40,3.10621119975993e-40,3.13742914131625e-40,3.16896082840119e-40,3.20080941420982e-40,3.23297808362718e-40,3.2654700535471e-40,3.29828857319361e-40,3.33143692444598e-40,3.36491842216704e-40,3.39873641453444e-40,3.43289428337552e-40,3.46739544450575e-40,3.50224334806993e-40,3.53744147888742e-40,3.57299335680072e-40,3.60890253702721e-40,3.64517261051478e-40,3.68180720430111e-40,3.71880998187604e-40,3.75618464354814e-40,3.7939349268148e-40,3.83206460673572e-40,3.87057749631076e-40,3.90947744686092e-40,3.94876834841362e-40,3.98845413009188e-40,4.02853876050686e-40,4.06902624815496e-40,4.10992064181881e-40,4.15122603097172e-40,4.19294654618715e-40,4.23508635955134e-40,4.27764968508068e-40,4.3206407791433e-40,4.36406394088438e-40,4.40792351265622e-40,4.45222388045267e-40,4.49696947434737e-40,4.54216476893692e-40,4.58781428378858e-40,4.63392258389181e-40,4.68049428011498e-40,4.72753402966666e-40,4.77504653656092e-40,4.82303655208799e-40,4.87150887528955e-40,4.92046835343817e-40,4.96991988252261e-40,5.01986840773692e-40,5.07031892397517e-40,5.12127647633116e-40,5.17274616060254e-40,5.22473312380053e-40,5.27724256466494e-40,5.33027973418346e-40,5.38384993611739e-40,5.43795852753148e-40,5.4926109193299e-40,5.54781257679752e-40,5.60356902014601e-40,5.6598858250661e-40,5.71676862328535e-40,5.77422310313093e-40,5.83225501009861e-40,5.89087014742761e-40,5.95007437668042e-40,6.00987361832923e-40,6.0702738523482e-40,6.13128111881099e-40,6.19290151849499e-40,6.2551412134917e-40,6.3180064278223e-40,6.38150344806079e-40,6.44563862396203e-40,6.51041836909696e-40,6.57584916149425e-40,6.64193754428759e-40,6.70869012637023e-40,6.77611358305619e-40,6.84421465674714e-40,6.9130001576074e-40,6.98247696424427e-40,7.05265202439621e-40,7.12353235562793e-40,7.1951250460315e-40,7.26743725493554e-40,7.34047621362138e-40,7.41424922604568e-40,7.48876366957103e-40,7.56402699570411e-40,7.64004673084013e-40,7.71683047701586e-40,7.79438591267011e-40,7.87272079341097e-40,7.95184295279168e-40,8.03176030309434e-40,8.11248083612035e-40,8.19401262399051e-40,8.27636381995144e-40,8.35954265919124e-40,8.44355745966339e-40,8.52841662291782e-40,8.61412863494147e-40,8.70070206700719e-40,8.7881455765301e-40,8.87646790793426e-40,8.9656778935263e-40,9.05578445437899e-40,9.14679660122376e-40,9.23872343535101e-40,9.33157414952062e-40,9.42535802888165e-40,9.52008445190007e-40,9.61576289129697e-40,9.71240291499629e-40,9.81001418708082e-40,9.90860646875895e-40,1.00081896193413e-39,1.01087735972258e-39,1.02103684608938e-39,1.03129843699168e-39,1.04166315859708e-39,1.0521320473864e-39,1.06270615025725e-39,1.0733865246287e-39,1.08417423854712e-39,1.09507037079287e-39,1.10607601098825e-39,1.11719225970648e-39,1.12842022858166e-39,1.13976104042007e-39,1.15121582931232e-39,1.16278574074684e-39,1.17447193172444e-39,1.18627557087394e-39,1.19819783856908e-39,1.21023992704659e-39,1.22240304052535e-39,1.23468839532681e-39,1.24709721999673e-39,1.25963075542791e-39,1.27229025498431e-39,1.28507698462646e-39,1.29799222303798e-39,1.31103726175346e-39,1.32421340528765e-39,1.33752197126588e-39,1.35096429055585e-39,1.36454170740069e-39,1.37825557955337e-39,1.39210727841258e-39,1.40609818915972e-39,1.42022971089751e-39,1.43450325678993e-39,1.44892025420344e-39,1.46348214484983e-39,1.47819038493027e-39,1.49304644528102e-39,1.50805181152053e-39,1.5232079841979e-39,1.53851647894301e-39,1.55397882661814e-39,1.56959657347092e-39,1.58537128128903e-39,1.60130452755643e-39,1.61739790561102e-39,1.63365302480398e-39,1.65007151066082e-39,1.6666550050438e-39,1.68340516631614e-39,1.70032366950797e-39,1.71741220648368e-39,1.73467248611124e-39,1.75210623443297e-39,1.76971519483822e-39,1.78750112823775e-39,1.80546581323968e-39,1.82361104632748e-39,1.84193864203962e-39,1.86045043315088e-39,1.87914827085587e-39,1.89803402495391e-39,1.91710958403611e-39,1.93637685567435e-39,1.9558377666118e-39,1.97549426295576e-39,1.99534831037229e-39,2.01540189428265e-39,2.03565702006192e-39,2.05611571323961e-39,2.07678001970207e-39,2.09765200589711e-39,2.11873375904083e-39,2.14002738732607e-39,2.16153502013337e-39,2.18325880824401e-39,2.20520092405482e-39,2.22736356179574e-39,2.24974893774899e-39,2.27235929047078e-39,2.29519688101528e-39,2.31826399316056e-39,2.34156293363701e-39,2.36509603235817e-39,2.38886564265345e-39,2.41287414150376e-39,2.43712392977895e-39,2.46161743247803e-39,2.48635709897175e-39,2.51134540324734e-39,2.53658484415601e-39,2.56207794566296e-39,2.58782725709954e-39,2.61383535341833e-39,2.64010483545071e-39,2.66663833016672e-39,2.69343849093792e-39,2.72050799780279e-39,2.74784955773454e-39,2.7754659049119e-39,2.80335980099269e-39,2.83153403538968e-39,2.85999142554987e-39,2.88873481723595e-39,2.917767084811e-39,2.94709113152605e-39,2.97670988981017e-39,3.00662632156383e-39,3.03684341845522e-39,3.06736420221913e-39,3.09819172495944e-39,3.12932906945409e-39,3.16077934946341e-39,3.19254571004173e-39,3.22463132785151e-39,3.25703941148123e-39,3.28977320176635e-39,3.32283597211314e-39,3.35623102882613e-39,3.38996171143892e-39,3.42403139304783e-39,3.45844348064936e-39,3.49320141548106e-39,3.52830867336531e-39,3.56376876505712e-39,3.5995852365953e-39,3.63576166965676e-39,3.67230168191504e-39,3.70920892740178e-39,3.74648709687222e-39,3.78413991817449e-39,3.82217115662203e-39,3.86058461537033e-39,3.89938413579739e-39,3.93857359788748e-39,3.97815692061956e-39,4.01813806235884e-39,4.05852102125277e-39,4.09930983563099e-39,4.14050858440887e-39,4.18212138749558e-39,4.2241524062062e-39,4.26660584367759e-39,4.3094859452888e-39,4.35279699908584e-39,4.39654333621015e-39,4.4407293313318e-39,4.48535940308728e-39,4.53043801452087e-39,4.57596967353123e-39,4.62195893332233e-39,4.66841039285834e-39,4.71532869732406e-39,4.76271853858896e-39,4.8105846556766e-39,4.85893183523871e-39,4.90776491203347e-39,4.95708876940917e-39,5.00690833979282e-39,5.0572286051828e-39,5.10805459764775e-39,5.15939139982919e-39,5.21124414545004e-39,5.26361801982824e-39,5.31651826039478e-39,5.36995015721772e-39,5.42391905353145e-39,5.47843034627047e-39,5.53348948660941e-39,5.58910198050835e-39,5.64527338926294e-39,5.70200933006079e-39,5.75931547654342e-39,5.81719755937314e-39,5.87566136680641e-39,5.93471274527283e-39,5.99435759995931e-39,6.05460189540119e-39,6.11545165607812e-39,6.1769129670168e-39,6.23899197439972e-39,6.30169488617925e-39,6.36502797269874e-39,6.4289975673198e-39,6.49361006705501e-39,6.55887193320838e-39,6.62478969202082e-39,6.69136993532305e-39,6.75861932119506e-39,6.82654457463139e-39,6.89515248821389e-39,6.96444992279129e-39,7.0344438081647e-39,7.10514114378089e-39,7.17654899943252e-39,7.24867451596457e-39,7.3215249059887e-39,7.39510745460482e-39,7.46942952012902e-39,7.54449853482966e-39,7.620322005671e-39,7.69690751506308e-39,7.7742627216209e-39,7.85239536092945e-39,7.93131324631766e-39,8.01102426964007e-39,8.09153640206532e-39,8.17285769487363e-39,8.25499628026228e-39,8.33796037215803e-39,8.42175826703943e-39,8.50639834476569e-39,8.591889069415e-39,8.6782389901313e-39,8.76545674197851e-39,8.85355104680436e-39,8.942530714113e-39,9.03240464194519e-39,9.12318181776847e-39,9.21487131937633e-39,9.30748231579522e-39,9.40102406820182e-39,9.49550593084958e-39,9.59093735200337e-39,9.68732787488471e-39,9.78468713862647e-39,9.88302487923589e-39,9.98235093056925e-39,1.00826752253143e-38,1.0184007795984e-38,1.02863587759202e-38,1.0389738400306e-38,1.04941570071897e-38,1.05996250385195e-38,1.07061530411861e-38,1.08137516680787e-38,1.09224316791497e-38,1.10322039424904e-38,1.11430794354192e-38,1.12550692455773e-38,1.13681845720392e-38,1.14824367264319e-38,1.1597837134066e-38,1.17143973350782e-38,1.18321289855861e-38,1.19510438588527e-38,1.20711538464643e-38,1.21924709595201e-38,1.23150073298322e-38,1.24387752111396e-38,1.2563786980334e-38,1.26900551386962e-38,1.28175923131474e-38,1.29464112575114e-38,1.30765248537896e-38,1.32079461134505e-38,1.33406881787295e-38,1.34747643239434e-38,1.36101879568189e-38,1.37469726198317e-38,1.38851319915626e-38,1.40246798880636e-38,1.41656302642404e-38,1.43079972152487e-38,1.44517949779018e-38,1.45970379320957e-38,1.47437406022473e-38,1.48919176587456e-38,1.50415839194195e-38,1.51927543510203e-38,1.53454440707169e-38,1.54996683476082e-38,1.56554426042509e-38,1.58127824182003e-38,1.59717035235687e-38,1.61322218125994e-38,1.62943533372548e-38,1.64581143108227e-38,1.66235211095369e-38,1.67905902742148e-38,1.69593385119126e-38,1.71297826975943e-38,1.73019398758205e-38,1.74758272624528e-38,1.76514622463744e-38,1.78288623912304e-38,1.8008045437183e-38,1.81890293026858e-38,1.83718320862767e-38,1.85564720683862e-38,1.8742967713166e-38,1.89313376703366e-38,1.91216007770504e-38,1.93137760597763e-38,1.95078827362034e-38,1.97039402171607e-38,1.99019681085594e-38,2.01019862133543e-38,2.03040145335223e-38,2.05080732720634e-38,2.07141828350221e-38,2.09223638335258e-38,2.11326370858486e-38,2.13450236194906e-38,2.15595446732818e-38,2.1776221699507e-38,2.1995076366049e-38,2.22161305585567e-38,2.2439406382634e-38,2.26649261660488e-38,2.2892712460968e-38,2.31227880462107e-38,2.33551759295267e-38,2.35898993498987e-38,2.3826981779864e-38,2.40664469278629e-38,2.43083187406103e-38,2.45526214054887e-38,2.4799379352968e-38,2.50486172590491e-38,2.53003600477301e-38,2.55546328934991e-38,2.58114612238535e-38,2.60708707218399e-38,2.63328873286239e-38,2.65975372460853e-38,2.68648469394356e-38,2.71348431398676e-38,2.74075528472261e-38,2.76830033327087e-38,2.79612221415941e-38,2.82422370959948e-38,2.852607629764e-38,2.88127681306871e-38,2.91023412645577e-38,2.93948246568071e-38,2.9690247556018e-38,2.9988639504726e-38,3.02900303423756e-38,3.05944502083011e-38,3.09019295447425e-38,3.12124990998905e-38,3.1526189930959e-38,3.18430334072921e-38,3.21630612135023e-38,3.24863053526365e-38,3.28127981493775e-38,3.3142572253278e-38,3.34756606420227e-38,3.38120966247276e-38,3.41519138452724e-38,3.44951462856611e-38,3.4841828269425e-38,3.51919944650508e-38,3.55456798894494e-38,3.59029199114589e-38,3.62637502553787e-38,3.66282070045435e-38,3.69963266049328e-38,3.73681458688125e-38,3.77437019784199e-38,3.81230324896782e-38,3.85061753359543e-38,3.88931688318531e-38,3.92840516770462e-38,3.96788629601432e-38,4.00776421626027e-38,4.04804291626765e-38,4.08872642393999e-38,4.12981880766206e-38,4.17132417670643e-38,4.21324668164452e-38,4.25559051476188e-38,4.29835991047706e-38,4.34155914576521e-38,4.38519254058597e-38,4.42926445831506e-38,4.47377930618112e-38,4.51874153570596e-38,4.56415564314993e-38,4.61002616996176e-38,4.65635770323229e-38,4.70315487615338e-38,4.75042236848147e-38,4.79816490700503e-38,4.84638726601785e-38,4.89509426779594e-38,4.94429078308e-38,4.99398173156269e-38,5.0441720823802e-38,5.09486685460937e-38,5.14607111776981e-38,5.19778999233044e-38,5.25002865022173e-38,5.30279231535315e-38,5.35608626413512e-38,5.40991582600685e-38,5.46428638396953e-38,5.51920337512419e-38,5.57467229121565e-38,5.63069867918187e-38,5.6872881417082e-38,5.74444633778821e-38,5.80217898328905e-38,5.8604918515233e-38,5.91939077382654e-38,5.97888164014001e-38,6.03897039959983e-38,6.09966306113218e-38,6.16096569405363e-38,6.22288442867873e-38,6.28542545693245e-38,6.34859503296965e-38,6.41239947380075e-38,6.47684515992291e-38,6.54193853595836e-38,6.60768611129913e-38,6.67409446075746e-38,6.74117022522353e-38,6.80892011232988e-38,6.87735089712159e-38,6.94646942273405e-38,7.01628260107762e-38,7.08679741352823e-38,7.15802091162578e-38,7.22996021777962e-38,7.30262252598013e-38,7.37601510251888e-38,7.45014528671458e-38,7.52502049164731e-38,7.6006482049002e-38,7.67703598930747e-38,7.75419148371111e-38,7.83212240372508e-38,7.9108365425061e-38,7.99034177153387e-38,8.07064604139743e-38,8.15175738259058e-38,8.23368390631526e-38,8.316433805292e-38,8.40001535457953e-38,8.48443691240267e-38,8.56970692098745e-38,8.65583390740564e-38,8.74282648442792e-38,8.83069335138436e-38,8.91944329503474e-38,9.00908519044765e-38,9.0996280018872e-38,9.19108078370985e-38,9.28345268127027e-38,9.37675293183492e-38,9.47099086550687e-38,9.56617590615789e-38,9.66231757237124e-38,9.75942547839391e-38,9.85750933509731e-38,9.95657895094869e-38,1.00566442329925e-37,1.015771518784e-37,1.02598019226712e-37,1.03629146462446e-37,1.04670636699182e-37,1.05722594086816e-37,1.06785123821961e-37,1.07858332158474e-37,1.08942326418087e-37,1.10037215001127e-37,1.11143107397364e-37,1.12260114196962e-37,1.1338834710153e-37,1.14527918935297e-37,1.15678943656399e-37,1.16841536368266e-37,1.18015813331137e-37,1.1920189197369e-37,1.20399890904773e-37,1.21609929925283e-37,1.22832130040126e-37,1.24066613470333e-37,1.25313503665277e-37,1.26572925315016e-37,1.27845004362763e-37,1.29129868017485e-37,1.30427644766617e-37,1.31738464388916e-37,1.33062457967437e-37,1.34399757902639e-37,1.35750497925633e-37,1.37114813111545e-37,1.38492839893029e-37,1.39884716073916e-37,1.41290580842981e-37,1.42710574787871e-37,1.44144839909167e-37,1.45593519634576e-37,1.47056758833274e-37,1.48534703830406e-37,1.50027502421699e-37,1.51535303888256e-37,1.53058259011484e-37,1.5459652008816e-37,1.56150240945678e-37,1.57719576957416e-37,1.59304685058281e-37,1.60905723760408e-37,1.62522853169e-37,1.64156234998343e-37,1.65806032587985e-37,1.67472410919056e-37,1.69155536630781e-37,1.70855578037134e-37,1.72572705143668e-37,1.74307089664529e-37,1.76058905039614e-37,1.77828326451916e-37,1.79615530845056e-37,1.81420696940962e-37,1.83244005257743e-37,1.85085638127756e-37,1.86945779715821e-37,1.88824616037644e-37,1.90722334978427e-37,1.92639126311644e-37,1.94575181718022e-37,1.96530694804721e-37,1.98505861124675e-37,2.00500878196165e-37,2.0251594552256e-37,2.04551264612268e-37,2.06607038998901e-37,2.08683474261606e-37,2.10780778045638e-37,2.12899160083129e-37,2.15038832214041e-37,2.17200008407378e-37,2.19382904782556e-37,2.21587739631028e-37,2.23814733438125e-37,2.26064108905077e-37,2.28336090971305e-37,2.30630906836913e-37,2.32948785985399e-37,2.35289960206604e-37,2.37654663619909e-37,2.40043132697622e-37,2.42455606288638e-37,2.44892325642333e-37,2.47353534432671e-37,2.49839478782576e-37,2.52350407288564e-37,2.54886571045569e-37,2.57448223672089e-37,2.60035621335517e-37,2.62649022777772e-37,2.65288689341184e-37,2.67954884994604e-37,2.70647876359817e-37,2.73367932738209e-37,2.76115326137679e-37,2.78890331299864e-37,2.81693225727588e-37,2.84524289712626e-37,2.87383806363744e-37,2.90272061634985e-37,2.9318934435428e-37,2.9613594625234e-37,2.99112161991805e-37,3.02118289196727e-37,3.05154628482339e-37,3.08221483485095e-37,3.11319160893047e-37,3.14447970476527e-37,3.17608225119095e-37,3.20800240848846e-37,3.24024336870019e-37,3.27280835594897e-37,3.30570062676073e-37,3.33892347038994e-37,3.37248020914857e-37,3.40637419873858e-37,3.44060882858708e-37,3.47518752218566e-37,3.51011373743246e-37,3.54539096697805e-37,3.5810227385749e-37,3.6170126154298e-37,3.65336419656038e-37,3.69008111715515e-37,3.72716704893671e-37,3.7646257005291e-37,3.80246081782879e-37,3.84067618437899e-37,3.87927562174815e-37,3.91826298991228e-37,3.95764218764063e-37,3.99741715288573e-37,4.03759186317737e-37,4.07817033602001e-37,4.11915662929467e-37,4.16055484166496e-37,4.20236911298656e-37,4.24460362472138e-37,4.28726260035592e-37,4.33035030582316e-37,4.37387104992968e-37,4.41782918478604e-37,4.46222910624248e-37,4.50707525432808e-37,4.55237211369495e-37,4.59812421406692e-37,4.64433613069207e-37,4.69101248480052e-37,4.73815794406671e-37,4.78577722307578e-37,4.83387508379526e-37,4.88245633605142e-37,4.93152583800992e-37,4.98108849666176e-37,5.03114926831427e-37,5.08171315908624e-37,5.13278522540883e-37,5.18437057453136e-37,5.23647436503167e-37,5.28910180733216e-37,5.34225816422105e-37,5.39594875137826e-37,5.45017893790717e-37,5.50495414687178e-37,5.56027985583847e-37,5.61616159742441e-37,5.67260495985016e-37,5.72961558749917e-37,5.78719918148162e-37,5.84536150020481e-37,5.90410835994927e-37,5.96344563544982e-37,6.02337926048339e-37,6.08391522846259e-37,6.14505959303459e-37,6.2068184686867e-37,6.26919803135813e-37,6.33220451905705e-37,6.39584423248464e-37,6.46012353566545e-37,6.52504885658329e-37,6.59062668782425e-37,6.6568635872263e-37,6.72376617853447e-37,6.79134115206356e-37,6.85959526536742e-37,6.92853534391417e-37,6.998168281769e-37,7.06850104228394e-37,7.13954065879345e-37,7.21129423531857e-37,7.28376894727655e-37,7.3569720421992e-37,7.43091084045689e-37,7.50559273599097e-37,7.58102519705343e-37,7.65721576695315e-37,7.73417206481048e-37,7.81190178631957e-37,7.89041270451724e-37,7.9697126705606e-37,8.04980961451259e-37,8.13071154613423e-37,8.21242655568598e-37,8.29496281473712e-37,8.37832857698223e-37,8.46253217906689e-37,8.5475820414217e-37,8.63348666910367e-37,8.72025465264702e-37,8.80789466892266e-37,8.89641548200513e-37,8.98582594404938e-37,9.07613499617638e-37,9.16735166936633e-37,9.25948508536284e-37,9.35254445758401e-37,9.44653909204489e-37,9.54147838828711e-37,9.63737184031929e-37,9.7342290375668e-37,9.83205966582996e-37,9.93087350825297e-37,1.00306804463027e-36,1.0131490460756e-36,1.02333136326982e-36,1.03361601445315e-36,1.04400402809928e-36,1.05449644301822e-36,1.06509430846022e-36,1.07579868422064e-36,1.08661064074598e-36,1.09753125924092e-36,1.10856163177639e-36,1.11970286139883e-36,1.13095606224052e-36,1.14232235963089e-36,1.15380289020915e-36,1.16539880203796e-36,1.17711125471812e-36,1.18894141950469e-36,1.20089047942399e-36,1.212959629392e-36,1.22515007633374e-36,1.23746303930407e-36,1.24989974960956e-36,1.26246145093161e-36,1.27514939945078e-36,1.28796486397254e-36,1.30090912605401e-36,1.31398348013216e-36,1.32718923365333e-36,1.34052770720386e-36,1.35400023464221e-36,1.36760816323237e-36,1.38135285377853e-36,1.39523568076119e-36,1.40925803247464e-36,1.42342131116572e-36,1.43772693317409e-36,1.45217632907391e-36,1.46677094381678e-36,1.48151223687633e-36,1.49640168239418e-36,1.51144076932726e-36,1.52663100159683e-36,1.54197389823873e-36,1.55747099355547e-36,1.57312383726945e-36,1.58893399467809e-36,1.60490304681032e-36,1.62103259058467e-36,1.63732423896891e-36,1.65377962114151e-36,1.67040038265438e-36,1.6871881855975e-36,1.7041447087652e-36,1.7212716478239e-36,1.73857071548176e-36,1.75604364166e-36,1.77369217366578e-36,1.79151807636699e-36,1.80952313236879e-36,1.82770914219178e-36,1.84607792445205e-36,1.8646313160432e-36,1.88337117231981e-36,1.90229936728311e-36,1.92141779376843e-36,1.94072836363428e-36,1.96023300795379e-36,1.97993367720761e-36,1.99983234147913e-36,2.01993099065133e-36,2.04023163460585e-36,2.06073630342405e-36,2.08144704758988e-36,2.10236593819499e-36,2.12349506714593e-36,2.14483654737316e-36,2.16639251304247e-36,2.18816511976845e-36,2.21015654482988e-36,2.23236898738757e-36,2.25480466870434e-36,2.27746583236699e-36,2.30035474451074e-36,2.32347369404595e-36,2.34682499288679e-36,2.37041097618258e-36,2.39423400255138e-36,2.41829645431563e-36,2.44260073774053e-36,2.46714928327474e-36,2.49194454579322e-36,2.51698900484293e-36,2.5422851648906e-36,2.56783555557336e-36,2.59364273195156e-36,2.61970927476428e-36,2.64603779068762e-36,2.67263091259507e-36,2.69949129982094e-36,2.72662163842641e-36,2.75402464146792e-36,2.78170304926856e-36,2.80965962969226e-36,2.83789717842033e-36,2.86641851923112e-36,2.89522650428256e-36,2.92432401439712e-36,2.95371395935003e-36,2.98339927816035e-36,3.01338293938467e-36,3.04366794141404e-36,3.07425731277399e-36,3.10515411242711e-36,3.13636143007907e-36,3.16788238648772e-36,3.19972013377488e-36,3.23187785574191e-36,3.26435876818771e-36,3.29716611923068e-36,3.33030318963323e-36,3.36377329312995e-36,3.39757977675918e-36,3.43172602119742e-36,3.46621544109751e-36,3.50105148543028e-36,3.53623763782915e-36,3.57177741693863e-36,3.60767437676633e-36,3.64393210703813e-36,3.68055423355719e-36,3.7175444185668e-36,3.75490636111623e-36,3.79264379743082e-36,3.83076050128576e-36,3.86926028438313e-36,3.90814699673328e-36,3.94742452703996e-36,3.98709680308887e-36,4.02716779214063e-36,4.06764150132765e-36,4.10852197805445e-36,4.14981331040289e-36,4.19151962754051e-36,4.23364510013388e-36,4.27619394076532e-36,4.31917040435428e-36,4.36257878858306e-36,4.40642343432619e-36,4.45070872608472e-36,4.49543909242486e-36,4.54061900642045e-36,4.58625298610048e-36,4.63234559490108e-36,4.67890144212147e-36,4.7259251833851e-36,4.77342152110543e-36,4.82139520495572e-36,4.86985103234429e-36,4.91879384889438e-36,4.96822854892838e-36,5.0181600759574e-36,5.06859342317589e-36,5.11953363396055e-36,5.17098580237483e-36,5.22295507367858e-36,5.27544664484211e-36,5.32846576506641e-36,5.38201773630755e-36,5.43610791380742e-36,5.49074170662879e-36,5.54592457819636e-36,5.60166204684346e-36,5.65795968636331e-36,5.7148231265667e-36,5.77225805384519e-36,5.8302702117393e-36,5.88886540151307e-36,5.94804948273448e-36,6.0078283738609e-36,6.06820805283115e-36,6.12919455766363e-36,6.19079398705955e-36,6.25301250101311e-36,6.31585632142771e-36,6.37933173273769e-36,6.44344508253698e-36,6.50820278221417e-36,6.57361130759311e-36,6.63967719958073e-36,6.7064070648215e-36,6.77380757635734e-36,6.84188547429577e-36,6.91064756648312e-36,6.98010072918611e-36,7.05025190777879e-36,7.12110811743737e-36,7.19267644384208e-36,7.26496404388509e-36,7.33797814638654e-36,7.41172605281774e-36,7.48621513803068e-36,7.56145285099585e-36,7.63744671554745e-36,7.71420433113517e-36,7.79173337358442e-36,7.87004159586428e-36,7.94913682886211e-36,8.02902698216701e-36,8.10972004486112e-36,8.19122408631785e-36,8.27354725700913e-36,8.35669778932087e-36,8.44068399837549e-36,8.52551428286375e-36,8.61119712588504e-36,8.69774109579481e-36,8.78515484706243e-36,8.87344712113561e-36,8.9626267473156e-36,9.0527026436392e-36,9.14368381777098e-36,9.23557936790443e-36,9.32839848367101e-36,9.42215044705952e-36,9.51684463334469e-36,9.61249051202392e-36,9.70909764776465e-36,9.80667570136124e-36,9.90523443070022e-36,1.00047836917365e-35,1.01053334394795e-35,1.02068937289875e-35,1.03094747163741e-35,1.04130866598237e-35,1.05177399206169e-35,1.06234449641669e-35,1.07302123610663e-35,1.08380527881436e-35,1.09469770295314e-35,1.10569959777448e-35,1.116812063477e-35,1.12803621131657e-35,1.13937316371728e-35,1.15082405438386e-35,1.1623900284149e-35,1.17407224241743e-35,1.18587186462262e-35,1.1977900750025e-35,1.20982806538802e-35,1.22198703958829e-35,1.23426821351085e-35,1.2466728152833e-35,1.25920208537619e-35,1.27185727672696e-35,1.28463965486527e-35,1.29755049803962e-35,1.31059109734507e-35,1.3237627568524e-35,1.33706679373857e-35,1.35050453841835e-35,1.36407733467736e-35,1.37778653980661e-35,1.39163352473799e-35,1.40561967418152e-35,1.41974638676385e-35,1.43401507516795e-35,1.44842716627462e-35,1.46298410130491e-35,1.47768733596451e-35,1.49253834058912e-35,1.50753860029156e-35,1.52268961511033e-35,1.53799290015952e-35,1.55344998578038e-35,1.56906241769437e-35,1.5848317571577e-35,1.60075958111742e-35,1.61684748236924e-35,1.63309706971667e-35,1.64950996813198e-35,1.66608781891871e-35,1.68283227987575e-35,1.69974502546312e-35,1.71682774696951e-35,1.7340821526813e-35,1.75150996805341e-35,1.76911293588194e-35,1.78689281647832e-35,1.80485138784542e-35,1.82299044585536e-35,1.84131180442904e-35,1.85981729571761e-35,1.87850877028558e-35,1.89738809729603e-35,1.91645716469738e-35,1.93571787941222e-35,1.95517216752814e-35,1.97482197449012e-35,1.99466926529521e-35,2.01471602468909e-35,2.03496425736438e-35,2.05541598816118e-35,2.07607326226969e-35,2.09693814543448e-35,2.11801272416124e-35,2.13929910592547e-35,2.16079941938304e-35,2.1825158145832e-35,2.20445046318361e-35,2.22660555866739e-35,2.24898331656251e-35,2.27158597466348e-35,2.29441579325491e-35,2.31747505533766e-35,2.3407660668572e-35,2.36429115693405e-35,2.38805267809687e-35,2.41205300651752e-35,2.4362945422489e-35,2.46077970946476e-35,2.48551095670219e-35,2.51049075710659e-35,2.53572160867878e-35,2.56120603452492e-35,2.58694658310889e-35,2.61294582850696e-35,2.63920637066531e-35,2.66573083566011e-35,2.69252187595993e-35,2.71958217069108e-35,2.74691442590566e-35,2.77452137485194e-35,2.80240577824777e-35,2.83057042455682e-35,2.85901813026713e-35,2.88775174017295e-35,2.9167741276593e-35,2.94608819498907e-35,2.97569687359338e-35,3.00560312436485e-35,3.03580993795338e-35,3.06632033506561e-35,3.09713736676657e-35,3.12826411478521e-35,3.15970369182223e-35,3.19145924186148e-35,3.22353394048451e-35,3.25593099518788e-35,3.28865364570401e-35,3.32170516432532e-35,3.35508885623115e-35,3.38880805981847e-35,3.42286614703584e-35,3.45726652372031e-35,3.49201262993817e-35,3.52710794032909e-35,3.56255596445331e-35,3.59836024714273e-35,3.63452436885556e-35,3.67105194603406e-35,3.70794663146633e-35,3.74521211465176e-35,3.78285212216968e-35,3.82087041805215e-35,3.85927080416055e-35,3.89805712056538e-35,3.93723324593071e-35,3.97680309790162e-35,4.01677063349639e-35,4.05713984950183e-35,4.09791478287312e-35,4.1390995111377e-35,4.18069815280266e-35,4.22271486776676e-35,4.26515385773664e-35,4.30801936664659e-35,4.35131568108319e-35,4.39504713071405e-35,4.43921808872055e-35,4.48383297223521e-35,4.5288962427837e-35,4.57441240673056e-35,4.62038601573005e-35,4.66682166718151e-35,4.71372400468873e-35,4.76109771852446e-35,4.80894754609971e-35,4.85727827243703e-35,4.90609473064928e-35,4.95540180242309e-35,5.00520441850658e-35,5.05550755920301e-35,5.10631625486823e-35,5.15763558641429e-35,5.20947068581703e-35,5.26182673662952e-35,5.31470897450062e-35,5.3681226876981e-35,5.42207321763773e-35,5.47656595941761e-35,5.53160636235725e-35,5.58719993054274e-35,5.64335222337738e-35,5.70006885613716e-35,5.75735550053255e-35,5.81521788527588e-35,5.87366179665378e-35,5.93269307910599e-35,5.99231763581012e-35,6.05254142927145e-35,6.11337048191943e-35,6.17481087671017e-35,6.23686875773428e-35,6.29955033083148e-35,6.36286186421149e-35,6.42680968908024e-35,6.49140020027368e-35,6.55663985689657e-35,6.62253518296913e-35,6.68909276807879e-35,6.75631926803942e-35,6.82422140555723e-35,6.89280597090247e-35,6.96207982258873e-35,7.0320498880591e-35,7.10272316437834e-35,7.17410671893286e-35,7.24620769013783e-35,7.31903328815033e-35,7.39259079559077e-35,7.46688756827137e-35,7.54193103593124e-35,7.61772870297955e-35,7.6942881492464e-35,7.7716170307401e-35,7.84972308041313e-35,7.92861410893577e-35,8.00829800547651e-35,8.08878273849129e-35,8.1700763565207e-35,8.25218698899407e-35,8.3351228470433e-35,8.41889222432307e-35,8.50350349784117e-35,8.58896512879532e-35,8.67528566341973e-35,8.76247373384003e-35,8.8505380589358e-35,8.93948744521281e-35,9.02933078768407e-35,9.12007707075857e-35,9.2117353691401e-35,9.30431484873514e-35,9.39782476756868e-35,9.4922744767104e-35,9.58767342121017e-35,9.68403114104182e-35,9.78135727205748e-35,9.87966154695166e-35,9.9789537962336e-35,1.00792439492108e-34,1.01805420349826e-34,1.02828581834416e-34,1.03862026262879e-34,1.04905856980522e-34,1.05960178371283e-34,1.07025095868183e-34,1.08100715963856e-34,1.09187146221212e-34,1.10284495284179e-34,1.11392872888577e-34,1.12512389873093e-34,1.13643158190358e-34,1.14785290918142e-34,1.15938902270675e-34,1.17104107610051e-34,1.18281023457773e-34,1.19469767506411e-34,1.20670458631358e-34,1.21883216902725e-34,1.23108163597354e-34,1.24345421210933e-34,1.25595113470253e-34,1.26857365345585e-34,1.28132303063166e-34,1.29420054117829e-34,1.30720747285755e-34,1.32034512637345e-34,1.33361481550226e-34,1.34701786722399e-34,1.36055562185494e-34,1.37422943318189e-34,1.38804066859734e-34,1.40199070923637e-34,1.41608095011465e-34,1.430312800268e-34,1.44468768289332e-34,1.45920703549085e-34,1.47387231000791e-34,1.48868497298423e-34,1.50364650569842e-34,1.5187584043162e-34,1.53402218004007e-34,1.5494393592603e-34,1.56501148370764e-34,1.58074011060755e-34,1.59662681283581e-34,1.61267317907586e-34,1.62888081397773e-34,1.64525133831841e-34,1.66178638916395e-34,1.67848762003325e-34,1.6953567010633e-34,1.71239531917624e-34,1.72960517824811e-34,1.74698799927913e-34,1.76454552056593e-34,1.78227949787523e-34,1.80019170461957e-34,1.81828393203454e-34,1.83655798935793e-34,1.85501570401075e-34,1.87365892177982e-34,1.89248950700243e-34,1.91150934275285e-34,1.93072033103048e-34,1.95012439295011e-34,1.96972346893419e-34,1.98951951890659e-34,2.0095145224888e-34,2.02971047919788e-34,2.05010940864632e-34,2.07071335074402e-34,2.09152436590243e-34,2.11254453524036e-34,2.13377596079226e-34,2.15522076571841e-34,2.17688109451716e-34,2.19875911323941e-34,2.22085700970531e-34,2.24317699372287e-34,2.26572129730916e-34,2.28849217491326e-34,2.31149190364196e-34,2.33472278348727e-34,2.35818713755651e-34,2.3818873123047e-34,2.40582567776904e-34,2.43000462780598e-34,2.45442658033074e-34,2.4790939775589e-34,2.5040092862507e-34,2.52917499795784e-34,2.55459362927243e-34,2.58026772207875e-34,2.60619984380754e-34,2.63239258769255e-34,2.65884857302996e-34,2.68557044544043e-34,2.71256087713342e-34,2.73982256717456e-34,2.76735824175566e-34,2.79517065446706e-34,2.8232625865732e-34,2.85163684729075e-34,2.88029627406937e-34,2.90924373287569e-34,2.93848211847963e-34,2.96801435474421e-34,2.99784339491761e-34,3.02797222192867e-34,3.05840384868529e-34,3.08914131837546e-34,3.12018770477171e-34,3.15154611253865e-34,3.18321967754314e-34,3.21521156716803e-34,3.24752498062903e-34,3.28016314929438e-34,3.31312933700809e-34,3.3464268404165e-34,3.38005898929765e-34,3.4140291468944e-34,3.44834071025093e-34,3.48299711055211e-34,3.5180018134668e-34,3.55335831949456e-34,3.58907016431542e-34,3.62514091914356e-34,3.66157419108463e-34,3.69837362349607e-34,3.7355428963519e-34,3.77308572661028e-34,3.81100586858563e-34,3.84930711432368e-34,3.88799329398087e-34,3.92706827620752e-34,3.96653596853437e-34,4.00640031776346e-34,4.04666531036307e-34,4.08733497286595e-34,4.12841337227217e-34,4.16990461645604e-34,4.21181285457649e-34,4.2541422774922e-34,4.29689711818084e-34,4.34008165216206e-34,4.38370019792518e-34,4.42775711736125e-34,4.47225681619887e-34,4.51720374444493e-34,4.56260239682986e-34,4.60845731325665e-34,4.65477307925509e-34,4.70155432644052e-34,4.74880573297649e-34,4.79653202404319e-34,4.84473797230934e-34,4.89342839841009e-34,4.94260817142855e-34,4.99228220938293e-34,5.04245547971858e-34,5.09313299980425e-34,5.14431983743413e-34,5.19602111133477e-34,5.24824199167657e-34,5.30098770059102e-34,5.35426351269311e-34,5.40807475560837e-34,5.46242681050585e-34,5.5173251126365e-34,5.57277515187621e-34,5.62878247327501e-34,5.68535267761189e-34,5.74249142195434e-34,5.80020442022433e-34,5.85849744376995e-34,5.91737632194204e-34,5.9768469426774e-34,6.03691525308784e-34,6.09758726005428e-34,6.15886903082815e-34,6.22076669363742e-34,6.28328643830014e-34,6.34643451684278e-34,6.41021724412572e-34,6.47464099847503e-34,6.53971222231974e-34,6.60543742283637e-34,6.67182317259993e-34,6.73887611024062e-34,6.80660294110798e-34,6.87501043794174e-34,6.94410544154849e-34,7.01389486148607e-34,7.08438567675483e-34,7.15558493649494e-34,7.2274997606916e-34,7.30013734088738e-34,7.3735049409007e-34,7.44760989755263e-34,7.52245962140077e-34,7.5980615974798e-34,7.6744233860502e-34,7.75155262335469e-34,7.82945702238106e-34,7.90814437363434e-34,7.98762254591502e-34,8.06789948710677e-34,8.14898322497051e-34,8.23088186794747e-34,8.31360360597044e-34,8.39715671128202e-34,8.48154953926227e-34,8.56679052926455e-34,8.65288820545877e-34,8.73985117768418e-34,8.82768814231072e-34,8.91640788310791e-34,9.00601927212366e-34,9.09653127057179e-34,9.18795292972744e-34,9.28029339183259e-34,9.37356189101065e-34,9.46776775418915e-34,9.56292040203276e-34,9.65902934988584e-34,9.75610420872312e-34,9.85415468611126e-34,9.95319058717997e-34,1.00532218156016e-33,1.01542583745827e-33,1.02563103678629e-33,1.03593880007271e-33,1.04635015810242e-33,1.05686615201988e-33,1.06748783343329e-33,1.07821626451962e-33,1.0890525181309e-33,1.09999767790155e-33,1.11105283835666e-33,1.12221910502148e-33,1.133497594532e-33,1.14488943474655e-33,1.15639576485864e-33,1.1680177355109e-33,1.17975650891006e-33,1.19161325894323e-33,1.20358917129533e-33,1.21568544356755e-33,1.22790328539718e-33,1.24024391857863e-33,1.25270857718547e-33,1.26529850769395e-33,1.27801496910763e-33,1.29085923308321e-33,1.30383258405785e-33,1.3169363193774e-33,1.33017174942636e-33,1.34354019775874e-33,1.3570430012305e-33,1.37068151013327e-33,1.3844570883293e-33,1.39837111338786e-33,1.41242497672309e-33,1.42662008373301e-33,1.44095785394015e-33,1.4554397211335e-33,1.47006713351183e-33,1.48484155382856e-33,1.49976445953806e-33,1.51483734294332e-33,1.53006171134522e-33,1.54543908719334e-33,1.56097100823804e-33,1.57665902768436e-33,1.59250471434736e-33,1.60850965280889e-33,1.6246754435761e-33,1.64100370324159e-33,1.65749606464489e-33,1.67415417703593e-33,1.69097970623979e-33,1.70797433482344e-33,1.7251397622639e-33,1.74247770511818e-33,1.75998989719506e-33,1.77767808972833e-33,1.79554405155195e-33,1.81358956927704e-33,1.83181644747038e-33,1.85022650883497e-33,1.86882159439233e-33,1.88760356366648e-33,1.90657429486999e-33,1.92573568509182e-33,1.94508965048695e-33,1.96463812646801e-33,1.98438306789895e-33,2.00432644929034e-33,2.0244702649969e-33,2.04481652941706e-33,2.06536727719418e-33,2.08612456342014e-33,2.10709046384091e-33,2.12826707506395e-33,2.14965651476809e-33,2.17126092191506e-33,2.19308245696364e-33,2.21512330208549e-33,2.23738566138347e-33,2.2598717611121e-33,2.28258384990008e-33,2.30552419897518e-33,2.32869510239149e-33,2.35209887725862e-33,2.37573786397353e-33,2.39961442645466e-33,2.42373095237812e-33,2.44808985341657e-33,2.47269356548048e-33,2.49754454896151e-33,2.52264528897871e-33,2.54799829562705e-33,2.57360610422829e-33,2.59947127558459e-33,2.62559639623473e-33,2.65198407871249e-33,2.67863696180808e-33,2.70555771083209e-33,2.73274901788179e-33,2.76021360211061e-33,2.78795420999979e-33,2.81597361563331e-33,2.84427462097505e-33,2.87286005614908e-33,2.90173277972283e-33,2.93089567899266e-33,2.96035167027278e-33,2.99010369918693e-33,3.02015474096277e-33,3.05050780072946e-33,3.08116591381836e-33,3.1121321460663e-33,3.14340959412224e-33,3.17500138575716e-33,3.20691068017651e-33,3.23914066833625e-33,3.27169457326217e-33,3.30457565037184e-33,3.33778718780032e-33,3.37133250672913e-33,3.40521496171806e-33,3.4394379410408e-33,3.47400486702391e-33,3.50891919638868e-33,3.54418442059725e-33,3.57980406620132e-33,3.61578169519525e-33,3.65212090537186e-33,3.68882533068239e-33,3.72589864160008e-33,3.76334454548686e-33,3.80116678696426e-33,3.83936914828806e-33,3.87795544972617e-33,3.91692954994085e-33,3.95629534637469e-33,3.99605677564009e-33,4.03621781391306e-33,4.076782477331e-33,4.11775482239401e-33,4.15913894637067e-33,4.20093898770798e-33,4.24315912644487e-33,4.28580358463031e-33,4.32887662674579e-33,4.37238256013136e-33,4.41632573541654e-33,4.46071054695562e-33,4.50554143326659e-33,4.55082287747558e-33,4.59655940776463e-33,4.64275559782499e-33,4.68941606731411e-33,4.73654548231776e-33,4.78414855581684e-33,4.8322300481583e-33,4.88079476753139e-33,4.92984757044863e-33,4.97939336223115e-33,5.02943709749932e-33,5.07998378066853e-33,5.13103846644914e-33,5.1826062603522e-33,5.23469231920022e-33,5.28730185164242e-33,5.34044011867581e-33,5.39411243417152e-33,5.44832416540576e-33,5.50308073359675e-33,5.55838761444709e-33,5.61425033869089e-33,5.67067449264703e-33,5.72766571877809e-33,5.78522971625402e-33,5.84337224152269e-33,5.90209910888493e-33,5.96141619107658e-33,6.02132941985519e-33,6.0818447865935e-33,6.14296834287877e-33,6.20470620111749e-33,6.26706453514683e-33,6.33004958085236e-33,6.39366763679102e-33,6.45792506482135e-33,6.52282829073988e-33,6.58838380492319e-33,6.65459816297723e-33,6.72147798639318e-33,6.78902996320903e-33,6.85726084867864e-33,6.92617746594762e-33,6.99578670673503e-33,7.06609553202285e-33,7.13711097275241e-33,7.20884013052686e-33,7.28129017832164e-33,7.35446836120213e-33,7.42838199704737e-33,7.50303847728276e-33,7.57844526761832e-33,7.65460990879615e-33,7.73154001734372e-33,7.80924328633588e-33,7.88772748616452e-33,7.96700046531489e-33,8.04707015115088e-33,8.12794455070801e-33,8.20963175149352e-33,8.29213992229545e-33,8.37547731399986e-33,8.45965226041526e-33,8.54467317910632e-33,8.63054857223599e-33,8.71728702741503e-33,8.80489721856112e-33,8.89338790676664e-33,8.98276794117401e-33,9.07304625986103e-33,9.16423189073507e-33,9.25633395243506e-33,9.34936165524381e-33,9.44332430200937e-33,9.53823128907446e-33,9.63409210721715e-33,9.73091634259886e-33,9.82871367772409e-33,9.92749389240771e-33,1.00272668647534e-32,1.01280425721417e-32,1.02298310922274e-32,1.0332642603947e-32,1.04364873885377e-32,1.05413758305644e-32,1.06473184189585e-32,1.07543257480674e-32,1.08624085187131e-32,1.09715775392626e-32,1.10818437267091e-32,1.11932181077632e-32,1.13057118199557e-32,1.14193361127518e-32,1.15341023486752e-32,1.16500220044452e-32,1.17671066721242e-32,1.18853680602763e-32,1.20048179951388e-32,1.21254684218051e-32,1.22473314054179e-32,1.23704191323776e-32,1.24947439115591e-32,1.26203181755442e-32,1.27471544818638e-32,1.28752655142541e-32,1.30046640839255e-32,1.31353631308425e-32,1.32673757250186e-32,1.34007150678235e-32,1.35353944933025e-32,1.36714274695102e-32,1.38088275998579e-32,1.39476086244731e-32,1.40877844215735e-32,1.42293690088561e-32,1.43723765448975e-32,1.45168213305701e-32,1.46627178104734e-32,1.48100805743768e-32,1.49589243586791e-32,1.51092640478834e-32,1.52611146760835e-32,1.54144914284686e-32,1.55694096428423e-32,1.57258848111546e-32,1.58839325810531e-32,1.60435687574462e-32,1.6204809304085e-32,1.63676703451582e-32,1.65321681669055e-32,1.66983192192465e-32,1.68661401174248e-32,1.70356476436698e-32,1.72068587488758e-32,1.73797905542957e-32,1.75544603532541e-32,1.77308856128768e-32,1.79090839758366e-32,1.80890732621179e-32,1.82708714708001e-32,1.84544967818551e-32,1.86399675579668e-32,1.88273023463679e-32,1.90165198806932e-32,1.92076390828534e-32,1.94006790649285e-32,1.95956591310775e-32,1.9792598779469e-32,1.99915177042327e-32,2.01924357974262e-32,2.03953731510267e-32,2.06003500589383e-32,2.08073870190231e-32,2.10165047351494e-32,2.12277241192626e-32,2.14410662934779e-32,2.16565525921902e-32,2.18742045642086e-32,2.20940439749123e-32,2.23160928084252e-32,2.25403732698155e-32,2.27669077873168e-32,2.29957190145693e-32,2.32268298328861e-32,2.34602633535422e-32,2.3696042920084e-32,2.39341921106643e-32,2.41747347404012e-32,2.44176948637578e-32,2.46630967769485e-32,2.491096502037e-32,2.51613243810527e-32,2.5414199895141e-32,2.56696168503978e-32,2.59276007887306e-32,2.61881775087491e-32,2.64513730683416e-32,2.67172137872843e-32,2.698572624987e-32,2.72569373075686e-32,2.75308740817125e-32,2.78075639662071e-32,2.80870346302709e-32,2.83693140212041e-32,2.86544303671805e-32,2.89424121800721e-32,2.92332882583008e-32,2.95270876897166e-32,2.98238398545068e-32,3.01235744281362e-32,3.04263213843115e-32,3.07321109979802e-32,3.10409738483592e-32,3.13529408219907e-32,3.16680431158314e-32,3.19863122403744e-32,3.23077800227967e-32,3.2632478610144e-32,3.29604404725467e-32,3.32916984064632e-32,3.36262855379641e-32,3.39642353260403e-32,3.43055815659531e-32,3.46503583926107e-32,3.49986002839824e-32,3.53503420645487e-32,3.570561890878e-32,3.60644663446566e-32,3.64269202572219e-32,3.67930168921689e-32,3.71627928594654e-32,3.75362851370176e-32,3.79135310743638e-32,3.82945683964116e-32,3.86794352072118e-32,3.90681699937658e-32,3.94608116298754e-32,3.98573993800328e-32,4.02579729033427e-32,4.06625722574908e-32,4.10712379027509e-32,4.14840107060274e-32,4.1900931944944e-32,4.23220433119732e-32,4.27473869186016e-32,4.31770052995453e-32,4.36109414169994e-32,4.40492386649383e-32,4.44919408734515e-32,4.49390923131283e-32,4.53907376994863e-32,4.584692219744e-32,4.63076914258187e-32,4.67730914619305e-32,4.72431688461662e-32,4.77179705866553e-32,4.81975441639689e-32,4.86819375358636e-32,4.91711991420796e-32,4.96653779091867e-32,5.01645232554726e-32,5.06686850958873e-32,5.11779138470363e-32,5.16922604322184e-32,5.22117762865201e-32,5.27365133619611e-32,5.32665241326855e-32,5.38018616002114e-32,5.43425792987331e-32,5.48887313004695e-32,5.54403722210775e-32,5.59975572251073e-32,5.65603420315252e-32,5.712878291928e-32,5.77029367329334e-32,5.82828608883468e-32,5.88686133784184e-32,5.94602527788842e-32,6.00578382541792e-32,6.06614295633479e-32,6.12710870660235e-32,6.1886871728466e-32,6.25088451296538e-32,6.31370694674447e-32,6.37716075647975e-32,6.44125228760501e-32,6.50598794932666e-32,6.57137421526501e-32,6.63741762410105e-32,6.70412478023061e-32,6.77150235442507e-32,6.83955708449792e-32,6.90829577597876e-32,6.97772530279424e-32,7.04785260795468e-32,7.11868470424925e-32,7.1902286749464e-32,7.26249167450303e-32,7.3354809292792e-32,7.40920373826112e-32,7.48366747379132e-32,7.55887958230532e-32,7.63484758507652e-32,7.71157907896874e-32,7.78908173719519e-32,7.86736331008617e-32,7.94643162586443e-32,8.02629459142733e-32,8.10696019313785e-32,8.18843649762363e-32,8.27073165258289e-32,8.35385388759959e-32,8.43781151496673e-32,8.52261293051691e-32,8.60826661446222e-32,8.69478113224267e-32,8.78216513538203e-32,8.87042736235329e-32,8.95957663945297e-32,9.0496218816828e-32,9.1405720936423e-32,9.2324363704282e-32,9.325223898545e-32,9.41894395682271e-32,9.5136059173451e-32,9.6092192463874e-32,9.70579350536205e-32,9.80333835177528e-32,9.90186354019331e-32,1.00013789232169e-31,1.01018944524672e-31,1.02034201795812e-31,1.0305966257216e-31,1.04095429400648e-31,1.05141605858823e-31,1.06198296565202e-31,1.07265607189736e-31,1.08343644464378e-31,1.09432516193753e-31,1.1053233126594e-31,1.11643199663366e-31,1.12765232473795e-31,1.1389854190144e-31,1.15043241278194e-31,1.16199445074943e-31,1.17367268913034e-31,1.18546829575821e-31,1.19738245020357e-31,1.20941634389178e-31,1.2215711802222e-31,1.23384817468864e-31,1.24624855500077e-31,1.25877356120692e-31,1.27142444581819e-31,1.28420247393356e-31,1.29710892336648e-31,1.31014508477269e-31,1.32331226177916e-31,1.33661177111456e-31,1.35004494274093e-31,1.36361311998662e-31,1.37731765968064e-31,1.39115993228841e-31,1.40514132204872e-31,1.41926322711216e-31,1.43352705968106e-31,1.44793424615054e-31,1.46248622725123e-31,1.47718445819341e-31,1.49203040881237e-31,1.50702556371561e-31,1.52217142243105e-31,1.53746949955723e-31,1.5529213249146e-31,1.56852844369855e-31,1.584292416634e-31,1.60021482013136e-31,1.61629724644422e-31,1.63254130382868e-31,1.64894861670397e-31,1.66552082581504e-31,1.68225958839665e-31,1.69916657833899e-31,1.71624348635511e-31,1.73349202015011e-31,1.7509139045917e-31,1.76851088188282e-31,1.78628471173592e-31,1.80423717154877e-31,1.82237005658229e-31,1.84068518014013e-31,1.8591843737499e-31,1.87786948734634e-31,1.89674238945645e-31,1.91580496738609e-31,1.93505912740901e-31,1.9545067949572e-31,1.97414991481367e-31,1.99399045130675e-31,2.0140303885066e-31,2.0342717304237e-31,2.05471650120906e-31,2.07536674535679e-31,2.09622452790857e-31,2.11729193465999e-31,2.13857107236926e-31,2.16006406896796e-31,2.1817730737736e-31,2.20370025770475e-31,2.22584781349811e-31,2.24821795592771e-31,2.27081292202639e-31,2.29363497130966e-31,2.31668638600142e-31,2.33996947126233e-31,2.36348655542038e-31,2.38723999020355e-31,2.41123215097509e-31,2.43546543697112e-31,2.45994227154037e-31,2.48466510238677e-31,2.50963640181394e-31,2.53485866697269e-31,2.56033442011053e-31,2.58606620882396e-31,2.61205660631338e-31,2.63830821164015e-31,2.66482364998664e-31,2.69160557291886e-31,2.71865665865139e-31,2.7459796123153e-31,2.7735771662288e-31,2.80145208017024e-31,2.82960714165422e-31,2.85804516621041e-31,2.88676899766494e-31,2.91578150842484e-31,2.94508559976546e-31,2.97468420212029e-31,3.00458027537421e-31,3.03477680915953e-31,3.06527682315476e-31,3.09608336738666e-31,3.12719952253543e-31,3.15862840024241e-31,3.19037314342166e-31,3.22243692657386e-31,3.25482295610414e-31,3.28753447064239e-31,3.32057474136728e-31,3.3539470723335e-31,3.38765480080193e-31,3.42170129757344e-31,3.45608996732619e-31,3.49082424895575e-31,3.52590761591919e-31,3.56134357658254e-31,3.59713567457134e-31,3.63328748912517e-31,3.66980263545571e-31,3.70668476510798e-31,3.74393756632562e-31,3.78156476441991e-31,3.81957012214195e-31,3.85795744005914e-31,3.89673055693536e-31,3.93589335011457e-31,3.97544973590865e-31,4.01540366998926e-31,4.055759147783e-31,4.09652020487138e-31,4.13769091739397e-31,4.17927540245645e-31,4.22127781854191e-31,4.26370236592691e-31,4.30655328710166e-31,4.34983486719393e-31,4.39355143439773e-31,4.43770736040633e-31,4.48230706084908e-31,4.52735499573312e-31,4.5728556698896e-31,4.6188136334238e-31,4.6652334821703e-31,4.71211985815279e-31,4.75947745004788e-31,4.80731099365415e-31,4.85562527236595e-31,4.90442511765137e-31,4.95371540953551e-31,5.00350107708878e-31,5.05378709891937e-31,5.10457850367127e-31,5.15588037052745e-31,5.20769782971718e-31,5.26003606302973e-31,5.31290030433188e-31,5.36629584009197e-31,5.42022800990799e-31,5.47470220704181e-31,5.52972387895867e-31,5.58529852787155e-31,5.64143171129156e-31,5.698129042584e-31,5.75539619152915e-31,5.81323888488955e-31,5.8716629069829e-31,5.93067410026002e-31,5.99027836588933e-31,6.05048166434722e-31,6.11129001601364e-31,6.17270950177433e-31,6.23474626362922e-31,6.29740650530612e-31,6.36069649288132e-31,6.42462255540649e-31,6.48919108554107e-31,6.55440854019179e-31,6.62028144115865e-31,6.68681637578645e-31,6.75401999762429e-31,6.82189902709017e-31,6.89046025214378e-31,6.95971052896468e-31,7.02965678263816e-31,7.10030600784806e-31,7.17166526957569e-31,7.24374170380659e-31,7.31654251824444e-31,7.39007499303125e-31,7.46434648147568e-31,7.53936441078867e-31,7.61513628282557e-31,7.6916696748366e-31,7.76897224022498e-31,7.84705170931155e-31,7.92591589010816e-31,8.00557266909885e-31,8.08603001202779e-31,8.16729596469619e-31,8.24937865376728e-31,8.33228628757825e-31,8.41602715696146e-31,8.50060963607386e-31,8.58604218323361e-31,8.67233334176687e-31,8.75949174086115e-31,8.84752609642924e-31,8.93644521197994e-31,9.02625797949877e-31,9.11697338033758e-31,9.20860048611193e-31,9.30114845960862e-31,9.39462655570239e-31,9.48904412228061e-31,9.58441060117849e-31,9.68073552912365e-31,9.77802853868904e-31,9.87629935925654e-31,9.97555781799038e-31,1.0075813840819e-30,1.01770774534281e-30,1.02793587822636e-30,1.03826680555436e-30,1.04870156042811e-30,1.05924118633185e-30,1.06988673723692e-30,1.08063927770728e-30,1.09149988300596e-30,1.10246963920251e-30,1.11354964328172e-30,1.12474100325321e-30,1.13604483826232e-30,1.14746227870197e-30,1.1589944663257e-30,1.1706425543619e-30,1.18240770762908e-30,1.19429110265235e-30,1.20629392778115e-30,1.21841738330797e-30,1.23066268158846e-30,1.24303104716268e-30,1.25552371687748e-30,1.26814194001022e-30,1.28088697839378e-30,1.29376010654257e-30,1.30676261178015e-30,1.31989579436789e-30,1.33316096763498e-30,1.34655945810979e-30,1.36009260565257e-30,1.37376176358933e-30,1.38756829884723e-30,1.40151359209134e-30,1.41559903786258e-30,1.4298260447173e-30,1.44419603536799e-30,1.45871044682574e-30,1.47337073054376e-30,1.48817835256264e-30,1.50313479365694e-30,1.51824154948323e-30,1.53350013072965e-30,1.54891206326708e-30,1.56447888830161e-30,1.58020216252868e-30,1.59608345828886e-30,1.61212436372495e-30,1.62832648294083e-30,1.64469143616197e-30,1.66122085989731e-30,1.67791640710296e-30,1.69477974734762e-30,1.71181256697934e-30,1.72901656929425e-30,1.74639347470696e-30,1.76394502092247e-30,1.78167296311001e-30,1.79957907407862e-30,1.81766514445427e-30,1.83593298285911e-30,1.85438441609216e-30,1.87302128931218e-30,1.89184546622198e-30,1.91085882925492e-30,1.9300632797632e-30,1.94946073820784e-30,1.96905314435084e-30,1.98884245744918e-30,2.00883065645065e-30,2.02901974019176e-30,2.04941172759777e-30,2.07000865788439e-30,2.09081259076178e-30,2.11182560664063e-30,2.13304980684001e-30,2.15448731379758e-30,2.17614027128198e-30,2.19801084460696e-30,2.22010122084805e-30,2.24241360906135e-30,2.26495024050424e-30,2.28771336885862e-30,2.31070527045634e-30,2.33392824450668e-30,2.35738461332644e-30,2.381076722572e-30,2.40500694147408e-30,2.42917766307449e-30,2.4535913044655e-30,2.47825030703165e-30,2.50315713669372e-30,2.5283142841554e-30,2.55372426515246e-30,2.57938962070415e-30,2.60531291736737e-30,2.63149674749347e-30,2.65794372948724e-30,2.68465650806888e-30,2.71163775453858e-30,2.73889016704345e-30,2.76641647084739e-30,2.79421941860382e-30,2.82230179063063e-30,2.85066639518839e-30,2.87931606876127e-30,2.90825367634046e-30,2.9374821117108e-30,2.96700429774022e-30,2.99682318667202e-30,3.02694176041975e-30,3.05736303086599e-30,3.08809004016317e-30,3.11912586103778e-30,3.15047359709773e-30,3.18213638314284e-30,3.21411738547805e-30,3.2464198022302e-30,3.27904686366798e-30,3.31200183252468e-30,3.34528800432459e-30,3.37890870771274e-30,3.41286730478742e-30,3.44716719143659e-30,3.48181179767761e-30,3.51680458799992e-30,3.55214906171165e-30,3.58784875328974e-30,3.62390723273305e-30,3.66032810591951e-30,3.69711501496689e-30,3.73427163859672e-30,3.77180169250225e-30,3.80970892972021e-30,3.84799714100602e-30,3.8866701552125e-30,3.9257318396734e-30,3.96518610058977e-30,4.00503688342054e-30,4.04528817327714e-30,4.0859439953222e-30,4.12700841517176e-30,4.16848553930197e-30,4.21037951545991e-30,4.25269453307807e-30,4.29543482369339e-30,4.33860466137069e-30,4.38220836312963e-30,4.42625028937669e-30,4.47073484434129e-30,4.51566647651596e-30,4.56104967910128e-30,4.60688899045546e-30,4.65318899454777e-30,4.69995432141715e-30,4.74718964763537e-30,4.79489969677437e-30,4.84308923987873e-30,4.891763095943e-30,4.94092613239349e-30,4.99058326557454e-30,5.04073946124097e-30,5.09139973505422e-30,5.14256915308383e-30,5.19425283231417e-30,5.24645594115637e-30,5.29918369996474e-30,5.35244138155904e-30,5.40623431175195e-30,5.46056786988125e-30,5.51544748934794e-30,5.57087865815987e-30,5.62686691948003e-30,5.68341787218113e-30,5.74053717140573e-30,5.79823052913127e-30,5.85650371474151e-30,5.91536255560374e-30,5.97481293765102e-30,6.03486080597101e-30,6.09551216540074e-30,6.15677308112663e-30,6.2186496792912e-30,6.28114814760593e-30,6.34427473596991e-30,6.40803575709421e-30,6.47243758713427e-30,6.53748666632686e-30,6.603189499634e-30,6.66955265739368e-30,6.73658277597718e-30,6.80428655845211e-30,6.87267077525305e-30,6.94174226485886e-30,7.01150793447596e-30,7.08197476072935e-30,7.15314979036058e-30,7.22504014093182e-30,7.29765300153794e-30,7.37099563352571e-30,7.44507537121936e-30,7.51989962265427e-30,7.59547587031815e-30,7.67181167189866e-30,7.74891466103944e-30,7.82679254810389e-30,7.90545312094549e-30,7.98490424568698e-30,8.06515386750714e-30,8.14621001143527e-30,8.22808078315284e-30,8.31077436980549e-30,8.3942990408209e-30,8.47866314873566e-30,8.56387513003075e-30,8.64994350597556e-30,8.73687688347927e-30,8.82468395595196e-30,8.9133735041743e-30,9.0029543971749e-30,9.09343559311757e-30,9.18482614019757e-30,9.27713517754564e-30,9.3703719361423e-30,9.46454573974138e-30,9.55966600580158e-30,9.65574224642864e-30,9.75278406932695e-30,9.85080117875955e-30,9.94980337651892e-30,1.00498005629076e-29,1.01508027377274e-29,1.02528200012799e-29,1.03558625553766e-29,1.0459940704359e-29,1.05650648561282e-29,1.06712455231873e-29,1.07784933236916e-29,1.08868189825103e-29,1.09962333322995e-29,1.11067473145857e-29,1.1218371980859e-29,1.13311184936788e-29,1.14449981277909e-29,1.15600222712532e-29,1.16762024265759e-29,1.17935502118716e-29,1.19120773620165e-29,1.20317957298242e-29,1.21527172872316e-29,1.2274854126495e-29,1.23982184614e-29,1.25228226284831e-29,1.26486790882648e-29,1.27758004264958e-29,1.29041993554161e-29,1.30338887150255e-29,1.31648814743679e-29,1.32971907328284e-29,1.34308297214437e-29,1.35658118042231e-29,1.37021504794878e-29,1.38398593812191e-29,1.39789522804218e-29,1.41194430865015e-29,1.42613458486563e-29,1.44046747572805e-29,1.45494441453842e-29,1.46956684900271e-29,1.48433624137655e-29,1.49925406861146e-29,1.51432182250263e-29,1.52954100983799e-29,1.54491315254893e-29,1.56043978786259e-29,1.5761224684554e-29,1.59196276260847e-29,1.60796225436447e-29,1.62412254368588e-29,1.64044524661507e-29,1.65693199543599e-29,1.67358443883723e-29,1.690404242077e-29,1.70739308714964e-29,1.72455267295388e-29,1.7418847154625e-29,1.75939094789424e-29,1.77707312088696e-29,1.79493300267267e-29,1.8129723792544e-29,1.8311930545849e-29,1.84959685074685e-29,1.86818560813519e-29,1.8869611856412e-29,1.90592546083824e-29,1.92508033016962e-29,1.94442770913828e-29,1.96396953249821e-29,1.98370775444802e-29,2.00364434882639e-29,2.02378130930936e-29,2.04412064960971e-29,2.0646644036785e-29,2.08541462590821e-29,2.10637339133834e-29,2.12754279586295e-29,2.1489249564401e-29,2.17052201130364e-29,2.19233612017709e-29,2.21436946448956e-29,2.23662424759374e-29,2.25910269498654e-29,2.28180705453146e-29,2.30473959668335e-29,2.32790261471549e-29,2.35129842494907e-29,2.37492936698456e-29,2.39879780393583e-29,2.42290612266653e-29,2.4472567340286e-29,2.47185207310342e-29,2.49669459944547e-29,2.52178679732805e-29,2.54713117599182e-29,2.57273026989585e-29,2.59858663897081e-29,2.62470286887513e-29,2.65108157125363e-29,2.6777253839985e-29,2.70463697151318e-29,2.73181902497892e-29,2.75927426262368e-29,2.78700542999407e-29,2.81501530022997e-29,2.84330667434182e-29,2.87188238149046e-29,2.90074527927049e-29,2.92989825399583e-29,2.95934422098808e-29,2.98908612486855e-29,3.01912693985246e-29,3.0494696700463e-29,3.08011734974834e-29,3.11107304375218e-29,3.14233984765295e-29,3.17392088815708e-29,3.205819323395e-29,3.23803834323679e-29,3.27058116961123e-29,3.30345105682818e-29,3.33665129190369e-29,3.3701851948889e-29,3.40405611920214e-29,3.43826745196402e-29,3.47282261433628e-29,3.50772506186406e-29,3.54297828482114e-29,3.57858580855913e-29,3.61455119386015e-29,3.6508780372928e-29,3.68756997157148e-29,3.7246306659203e-29,3.76206382643968e-29,3.79987319647667e-29,3.83806255699988e-29,3.87663572697724e-29,3.91559656375784e-29,3.95494896345776e-29,3.99469686134989e-29,4.03484423225708e-29,4.07539509094982e-29,4.11635349254788e-29,4.15772353292551e-29,4.19950934912115e-29,4.24171511975136e-29,4.28434506542833e-29,4.32740344918207e-29,4.37089457688698e-29,4.414822797692e-29,4.45919250445576e-29,4.50400813418603e-29,4.54927416848308e-29,4.59499513398798e-29,4.64117560283546e-29,4.68782019311101e-29,4.73493356931227e-29,4.78252044281625e-29,4.83058557235009e-29,4.87913376446654e-29,4.92816987402539e-29,4.97769880467853e-29,5.02772550936024e-29,5.0782549907826e-29,5.129292301936e-29,5.18084254659402e-29,5.23291087982401e-29,5.28550250850283e-29,5.3386226918371e-29,5.39227674188935e-29,5.44647002410944e-29,5.50120795787068e-29,5.55649601701198e-29,5.61233973038549e-29,5.66874468240901e-29,5.72571651362466e-29,5.7832609212632e-29,5.84138365981326e-29,5.90009054159706e-29,5.95938743735178e-29,6.01928027681657e-29,6.07977504932496e-29,6.14087780440478e-29,6.20259465238262e-29,6.26493176499438e-29,6.32789537600343e-29,6.39149178182343e-29,6.45572734214787e-29,6.52060848058623e-29,6.5861416853066e-29,6.65233350968397e-29,6.71919057295584e-29,6.78671956088445e-29,6.85492722642477e-29,6.92382039040009e-29,6.99340594218441e-29,7.06369084039081e-29,7.13468211356759e-29,7.2063868609014e-29,7.27881225292665e-29,7.35196553224279e-29,7.42585401423891e-29,7.50048508782469e-29,7.57586621616957e-29,7.65200493744931e-29,7.7289088655997e-29,7.80658569107722e-29,7.88504318162935e-29,7.96428918307075e-29,8.04433162006717e-29,8.12517849692923e-29,8.2068378984121e-29,8.28931799052387e-29,8.37262702134236e-29,8.45677332184031e-29,8.54176530671779e-29,8.62761147524397e-29,8.7143204121075e-29,8.8019007882742e-29,8.89036136185455e-29,8.97971097897987e-29,9.0699585746862e-29,9.16111317380819e-29,9.25318389188199e-29,9.34617993605598e-29,9.44011060601196e-29,9.53498529489545e-29,9.63081349025429e-29,9.72760477498771e-29,9.825368828305e-29,9.92411542669324e-29,1.0023854444894e-28,1.01245958568925e-28,1.02263497369141e-28,1.03291262604311e-28,1.04329357051818e-28,1.05377884521973e-28,1.06436949868396e-28,1.07506658998502e-28,1.08587118884098e-28,1.09678437572072e-28,1.10780724195201e-28,1.11894088983068e-28,1.13018643273079e-28,1.14154499521599e-28,1.15301771315201e-28,1.1646057338202e-28,1.17631021603226e-28,1.18813233024621e-28,1.20007325868329e-28,1.21213419544629e-28,1.22431634663896e-28,1.23662093048657e-28,1.24904917745773e-28,1.26160233038751e-28,1.2742816446017e-28,1.28708838804223e-28,1.30002384139413e-28,1.31308929821357e-28,1.32628606505704e-28,1.33961546161225e-28,1.35307882083e-28,1.36667748905739e-28,1.38041282617258e-28,1.39428620572075e-28,1.4082990150514e-28,1.42245265545712e-28,1.43674854231379e-28,1.45118810522199e-28,1.46577278815002e-28,1.48050404957836e-28,1.49538336264542e-28,1.51041221529487e-28,1.52559211042456e-28,1.54092456603663e-28,1.55641111538938e-28,1.57205330715071e-28,1.5878527055528e-28,1.60381089054864e-28,1.61992945797006e-28,1.63621001968723e-28,1.65265420376987e-28,1.66926365465011e-28,1.68604003328688e-28,1.70298501733201e-28,1.72010030129803e-28,1.73738759672759e-28,1.75484863236468e-28,1.77248515432736e-28,1.79029892628256e-28,1.8082917296223e-28,1.82646536364193e-28,1.84482164571998e-28,1.86336241149995e-28,1.88208951507389e-28,1.90100482916774e-28,1.92011024532868e-28,1.93940767411425e-28,1.95889904528343e-28,1.97858630798954e-28,1.99847143097528e-28,2.01855640276953e-28,2.03884323188618e-28,2.05933394702505e-28,2.08003059727475e-28,2.10093525231755e-28,2.12205000263636e-28,2.14337695972381e-28,2.1649182562934e-28,2.18667604649271e-28,2.20865250611891e-28,2.23084983283626e-28,2.25327024639597e-28,2.27591598885803e-28,2.29878932481558e-28,2.32189254162127e-28,2.34522794961606e-28,2.36879788236016e-28,2.39260469686649e-28,2.41665077383638e-28,2.44093851789752e-28,2.46547035784456e-28,2.49024874688196e-28,2.51527616286928e-28,2.54055510856893e-28,2.56608811189658e-28,2.59187772617385e-28,2.61792653038363e-28,2.64423712942805e-28,2.67081215438896e-28,2.69765426279101e-28,2.72476613886737e-28,2.75215049382827e-28,2.77981006613203e-28,2.80774762175891e-28,2.83596595448775e-28,2.86446788617536e-28,2.89325626703867e-28,2.92233397593972e-28,2.95170392067365e-28,2.98136903825941e-28,3.0113322952335e-28,3.04159668794654e-28,3.07216524286305e-28,3.10304101686401e-28,3.13422709755252e-28,3.16572660356264e-28,3.19754268487123e-28,3.22967852311296e-28,3.26213733189839e-28,3.29492235713547e-28,3.32803687735406e-28,3.36148420403373e-28,3.39526768193505e-28,3.42939068943397e-28,3.46385663885969e-28,3.49866897683583e-28,3.53383118462522e-28,3.56934677847796e-28,3.605219309983e-28,3.64145236642339e-28,3.67804957113497e-28,3.71501458386875e-28,3.75235110115675e-28,3.79006285668183e-28,3.82815362165097e-28,3.86662720517244e-28,3.90548745463661e-28,3.94473825610082e-28,3.98438353467797e-28,4.02442725492888e-28,4.06487342125899e-28,4.10572607831862e-28,4.14698931140757e-28,4.18866724688347e-28,4.23076405257462e-28,4.27328393819671e-28,4.31623115577367e-28,4.35961000006308e-28,4.40342480898552e-28,4.44767996405841e-28,4.4923798908341e-28,4.53752905934253e-28,4.58313198453821e-28,4.62919322675161e-28,4.67571739214535e-28,4.72270913317475e-28,4.77017314905311e-28,4.8181141862215e-28,4.86653703882361e-28,4.91544654918507e-28,4.96484760829771e-28,5.01474515630852e-28,5.06514418301393e-28,5.11604972835865e-28,5.16746688293956e-28,5.21940078851499e-28,5.2718566385188e-28,5.32483967857972e-28,5.37835520704584e-28,5.43240857551465e-28,5.48700518936807e-28,5.5421505083129e-28,5.59785004692704e-28,5.65410937521077e-28,5.71093411914382e-28,5.76832996124788e-28,5.82630264115503e-28,5.88485795618159e-28,5.9440017619078e-28,6.00373997276355e-28,6.06407856261971e-28,6.1250235653856e-28,6.18658107561218e-28,6.24875724910182e-28,6.31155830352368e-28,6.3749905190356e-28,6.43906023891188e-28,6.50377387017796e-28,6.56913788425092e-28,6.63515881758657e-28,6.70184327233329e-28,6.76919791699214e-28,6.83722948708374e-28,6.90594478582172e-28,6.97535068479326e-28,7.04545412464613e-28,7.11626211578265e-28,7.18778173906099e-28,7.26002014650307e-28,7.33298456200989e-28,7.4066822820837e-28,7.48112067655797e-28,7.55630718933424e-28,7.63224933912634e-28,7.70895472021257e-28,7.78643100319498e-28,7.86468593576648e-28,7.94372734348542e-28,8.02356313055851e-28,8.10420128063097e-28,8.18564985758509e-28,8.2679170063463e-28,8.35101095369809e-28,8.43494000910452e-28,8.51971256554094e-28,8.60533710033369e-28,8.69182217600762e-28,8.77917644114242e-28,8.86740863123727e-28,8.95652756958478e-28,9.04654216815312e-28,9.13746142847701e-28,9.22929444255832e-28,9.322050393775e-28,9.41573855779952e-28,9.51036830352623e-28,9.60594909400863e-28,9.70249048740548e-28,9.80000213793643e-28,9.89849379684788e-28,9.99797531338778e-28,1.00984566357908e-27,1.01999478122727e-27,1.03024589920358e-27,1.04060004262835e-27,1.05105824692456e-27,1.06162155792135e-27,1.07229103195861e-27,1.08306773599265e-27,1.09395274770285e-27,1.10494715559945e-27,1.11605205913239e-27,1.12726856880131e-27,1.13859780626649e-27,1.15004090446113e-27,1.1615990077046e-27,1.17327327181684e-27,1.18506486423398e-27,1.19697496412511e-27,1.20900476251014e-27,1.22115546237892e-27,1.23342827881157e-27,1.24582443909997e-27,1.25834518287046e-27,1.27099176220786e-27,1.28376544178065e-27,1.29666749896743e-27,1.30969922398466e-27,1.32286192001571e-27,1.33615690334115e-27,1.3495855034704e-27,1.36314906327465e-27,1.37684893912118e-27,1.39068650100902e-27,1.40466313270585e-27,1.41878023188651e-27,1.43303921027268e-27,1.4474414937741e-27,1.46198852263108e-27,1.47668175155866e-27,1.49152264989197e-27,1.5065127017332e-27,1.52165340610004e-27,1.53694627707554e-27,1.55239284395954e-27,1.5679946514216e-27,1.58375325965547e-27,1.59967024453511e-27,1.61574719777225e-27,1.63198572707564e-27,1.64838745631172e-27,1.66495402566711e-27,1.68168709181252e-27,1.69858832806852e-27,1.71565942457282e-27,1.73290208844932e-27,1.75031804397873e-27,1.76790903277115e-27,1.78567681394012e-27,1.80362316427854e-27,1.82174987843641e-27,1.84005876910025e-27,1.85855166717441e-27,1.87723042196407e-27,1.89609690136029e-27,1.91515299202674e-27,1.93440059958835e-27,1.95384164882192e-27,1.97347808384859e-27,1.99331186832822e-27,2.01334498565577e-27,2.03357943915968e-27,2.05401725230217e-27,2.07466046888157e-27,2.09551115323674e-27,2.1165713904535e-27,2.13784328657314e-27,2.15932896880297e-27,2.18103058572912e-27,2.20295030753137e-27,2.22509032620019e-27,2.24745285575586e-27,2.27004013247e-27,2.2928544150891e-27,2.31589798506041e-27,2.33917314676015e-27,2.36268222772389e-27,2.38642757887932e-27,2.41041157478132e-27,2.43463661384948e-27,2.45910511860791e-27,2.48381953592745e-27,2.50878233727044e-27,2.53399601893781e-27,2.55946310231876e-27,2.58518613414282e-27,2.61116768673463e-27,2.63741035827111e-27,2.66391677304124e-27,2.69068958170862e-27,2.71773146157641e-27,2.74504511685517e-27,2.77263327893314e-27,2.80049870664954e-27,2.82864418657036e-27,2.85707253326706e-27,2.88578658959798e-27,2.91478922699268e-27,2.94408334573911e-27,2.9736718752735e-27,3.00355777447348e-27,3.03374403195389e-27,3.06423366636564e-27,3.09502972669754e-27,3.12613529258131e-27,3.15755347459948e-27,3.18928741459639e-27,3.22134028599252e-27,3.2537152941017e-27,3.28641567645175e-27,3.31944470310811e-27,3.352805677001e-27,3.38650193425562e-27,3.42053684452574e-27,3.45491381133077e-27,3.48963627239604e-27,3.52470769999661e-27,3.56013160130442e-27,3.59591151873915e-27,3.63205103032236e-27,3.66855375003534e-27,3.70542332818044e-27,3.74266345174622e-27,3.7802778447761e-27,3.81827026874067e-27,3.85664452291402e-27,3.89540444475354e-27,3.93455391028374e-27,3.97409683448375e-27,4.01403717167897e-27,4.05437891593642e-27,4.09512610146411e-27,4.13628280301455e-27,4.17785313629221e-27,4.21984125836508e-27,4.26225136808031e-27,4.30508770648423e-27,4.34835455724642e-27,4.39205624708794e-27,4.43619714621423e-27,4.48078166875198e-27,4.52581427319064e-27,4.57129946282811e-27,4.61724178622129e-27,4.66364583764081e-27,4.71051625753051e-27,4.75785773297137e-27,4.80567499815042e-27,4.85397283483407e-27,4.90275607284615e-27,4.95202959055117e-27,5.00179831534194e-27,5.05206722413246e-27,5.10284134385543e-27,5.15412575196517e-27,5.20592557694526e-27,5.25824599882129e-27,5.3110922496791e-27,5.36446961418779e-27,5.41838343012835e-27,5.47283908892721e-27,5.52784203619569e-27,5.58339777227437e-27,5.63951185278309e-27,5.69618988917669e-27,5.75343754930606e-27,5.81126055798494e-27,5.86966469756231e-27,5.92865580850084e-27,5.98823978996079e-27,6.04842260038999e-27,6.10921025811955e-27,6.17060884196596e-27,6.23262449183879e-27,6.29526340935464e-27,6.35853185845749e-27,6.42243616604498e-27,6.48698272260117e-27,6.55217798283541e-27,6.6180284663281e-27,6.68454075818251e-27,6.75172150968316e-27,6.81957743896124e-27,6.8881153316662e-27,6.95734204164451e-27,7.02726449162473e-27,7.09788967391018e-27,7.16922465107801e-27,7.24127655668526e-27,7.3140525959826e-27,7.38756004663461e-27,7.46180625944765e-27,7.53679865910477e-27,7.61254474490849e-27,7.68905209153051e-27,7.76632834976931e-27,7.84438124731498e-27,7.9232185895224e-27,8.00284826019153e-27,8.08327822235568e-27,8.16451651907815e-27,8.24657127425632e-27,8.32945069343414e-27,8.41316306462248e-27,8.49771675912827e-27,8.58312023239149e-27,8.66938202483051e-27,8.75651076269652e-27,8.84451515893592e-27,8.93340401406173e-27,9.02318621703341e-27,9.11387074614614e-27,9.20546666992846e-27,9.29798314804897e-27,9.39142943223262e-27,9.48581486718571e-27,9.58114889153046e-27,9.67744103874862e-27,9.77470093813521e-27,9.87293831576122e-27,9.97216299544635e-27,1.00723848997411e-26,1.01736140509196e-26,1.02758605719812e-26,1.03791346876632e-26,1.04834467254633e-26,1.05888071166721e-26,1.06952263974168e-26,1.08027152097138e-26,1.09112843025341e-26,1.10209445328775e-26,1.11317068668582e-26,1.12435823808021e-26,1.13565822623537e-26,1.14707178115956e-26,1.15860004421774e-26,1.17024416824585e-26,1.182005317666e-26,1.19388466860292e-26,1.2058834090016e-26,1.21800273874609e-26,1.23024386977947e-26,1.24260802622502e-26,1.25509644450871e-26,1.26771037348277e-26,1.28045107455061e-26,1.29331982179294e-26,1.30631790209522e-26,1.31944661527633e-26,1.33270727421849e-26,1.34610120499867e-26,1.35962974702111e-26,1.37329425315128e-26,1.38709608985118e-26,1.40103663731597e-26,1.41511728961205e-26,1.42933945481634e-26,1.44370455515724e-26,1.45821402715674e-26,1.47286932177415e-26,1.48767190455112e-26,1.50262325575828e-26,1.51772487054321e-26,1.53297825907997e-26,1.54838494672011e-26,1.56394647414526e-26,1.57966439752112e-26,1.59554028865312e-26,1.6115757351436e-26,1.62777234055058e-26,1.64413172454811e-26,1.6606555230882e-26,1.67734538856448e-26,1.69420298997742e-26,1.71123001310118e-26,1.72842816065229e-26,1.74579915245982e-26,1.76334472563745e-26,1.78106663475709e-26,1.79896665202444e-26,1.81704656745614e-26,1.83530818905878e-26,1.85375334300976e-26,1.87238387383984e-26,1.89120164461764e-26,1.9102085371359e-26,1.92940645209971e-26,1.9487973093166e-26,1.9683830478884e-26,1.98816562640532e-26,2.00814702314169e-26,2.02832923625385e-26,2.0487142839799e-26,2.06930420484162e-26,2.09010105784824e-26,2.11110692270242e-26,2.13232390000812e-26,2.15375411148076e-26,2.17539970015937e-26,2.19726283062082e-26,2.21934568919638e-26,2.24165048419033e-26,2.26417944610076e-26,2.28693482784261e-26,2.30991890497303e-26,2.3331339759189e-26,2.35658236220663e-26,2.3802664086944e-26,2.40418848380661e-26,2.42835097977071e-26,2.4527563128564e-26,2.47740692361735e-26,2.50230527713519e-26,2.52745386326599e-26,2.55285519688934e-26,2.57851181815976e-26,2.60442629276078e-26,2.63060121216142e-26,2.65703919387545e-26,2.68374288172308e-26,2.71071494609535e-26,2.73795808422116e-26,2.76547502043703e-26,2.79326850645952e-26,2.82134132166038e-26,2.84969627334453e-26,2.87833619703077e-26,2.90726395673535e-26,2.93648244525832e-26,2.96599458447288e-26,2.99580332561759e-26,3.02591164959134e-26,3.05632256725166e-26,3.08703911971565e-26,3.11806437866417e-26,3.14940144664893e-26,3.18105345740287e-26,3.21302357615345e-26,3.24531499993916e-26,3.2779309579293e-26,3.31087471174685e-26,3.34414955579467e-26,3.37775881758484e-26,3.41170585807159e-26,3.44599407198723e-26,3.48062688818178e-26,3.51560776996564e-26,3.55094021545619e-26,3.58662775792744e-26,3.62267396616332e-26,3.65908244481471e-26,3.69585683475984e-26,3.73300081346836e-26,3.77051809536905e-26,3.80841243222138e-26,3.84668761349064e-26,3.88534746672682e-26,3.92439585794746e-26,3.96383669202424e-26,4.00367391307346e-26,4.04391150485037e-26,4.0845534911477e-26,4.12560393619797e-26,4.16706694507986e-26,4.20894666412882e-26,4.25124728135165e-26,4.29397302684537e-26,4.33712817322007e-26,4.38071703602638e-26,4.4247439741869e-26,4.46921339043216e-26,4.5141297317408e-26,4.55949748978439e-26,4.6053212013766e-26,4.65160544892668e-26,4.69835486089801e-26,4.74557411227074e-26,4.79326792500939e-26,4.84144106853491e-26,4.89009836020183e-26,4.9392446657799e-26,4.98888489994056e-26,5.03902402674864e-26,5.08966706015859e-26,5.140819064516e-26,5.19248515506385e-26,5.24467049845429e-26,5.29738031326519e-26,5.35061987052188e-26,5.40439449422448e-26,5.45870956188018e-26,5.51357050504105e-26,5.56898280984705e-26,5.62495201757486e-26,5.6814837251919e-26,5.73858358591609e-26,5.796257309781e-26,5.85451066420712e-26,5.91334947457847e-26,5.97277962482505e-26,6.03280705801145e-26,6.093437776931e-26,6.15467784470617e-26,6.21653338539468e-26,6.27901058460219e-26,6.34211569010074e-26,6.40585501245336e-26,6.47023492564546e-26,6.535261867722e-26,6.60094234143144e-26,6.66728291487577e-26,6.73429022216768e-26,6.80197096409377e-26,6.87033190878456e-26,6.93937989239153e-26,7.00912181977056e-26,7.07956466517258e-26,7.15071547294072e-26,7.22258135821511e-26,7.29516950764415e-26,7.36848718010334e-26,7.44254170742092e-26,7.51734049511137e-26,7.59289102311586e-26,7.66920084655004e-26,7.7462775964599e-26,7.82412898058465e-26,7.90276278412765e-26,7.98218687053466e-26,8.06240918228057e-26,8.14343774166346e-26,8.22528065160669e-26,8.30794609646949e-26,8.39144234286525e-26,8.47577774048826e-26,8.56096072294842e-26,8.64699980861503e-26,8.73390360146843e-26,8.82168079196018e-26,8.91034015788256e-26,8.99989056524604e-26,9.09034096916603e-26,9.18170041475819e-26,9.27397803804327e-26,9.36718306686049e-26,9.46132482179048e-26,9.55641271708704e-26,9.65245626161901e-26,9.74946505982096e-26,9.8474488126534e-26,9.94641731857334e-26,1.00463804745138e-25,1.01473482768739e-25,1.02493308225177e-25,1.03523383097849e-25,1.04563810395101e-25,1.05614694160529e-25,1.06676139483385e-25,1.07748252509087e-25,1.08831140449831e-25,1.09924911595312e-25,1.11029675323557e-25,1.12145542111861e-25,1.13272623547829e-25,1.14411032340547e-25,1.15560882331841e-25,1.16722288507671e-25,1.17895367009619e-25,1.19080235146515e-25,1.20277011406159e-25,1.21485815467176e-25,1.22706768210977e-25,1.23939991733856e-25,1.25185609359192e-25,1.26443745649785e-25,1.27714526420313e-25,1.28998078749912e-25,1.30294530994886e-25,1.31604012801538e-25,1.3292665511914e-25,1.34262590213028e-25,1.35611951677822e-25,1.36974874450793e-25,1.38351494825357e-25,1.39741950464697e-25,1.41146380415534e-25,1.42564925122035e-25,1.43997726439855e-25,1.45444927650315e-25,1.46906673474745e-25,1.48383110088945e-25,1.49874385137809e-25,1.5138064775008e-25,1.52902048553278e-25,1.5443873968875e-25,1.55990874826891e-25,1.57558609182506e-25,1.59142099530339e-25,1.60741504220745e-25,1.62356983195524e-25,1.6398869800392e-25,1.65636811818774e-25,1.67301489452843e-25,1.68982897375274e-25,1.70681203728261e-25,1.72396578343858e-25,1.74129192760953e-25,1.75879220242431e-25,1.776468357925e-25,1.7943221617419e-25,1.81235539927023e-25,1.83056987384878e-25,1.84896740694022e-25,1.86754983831314e-25,1.8863190262262e-25,1.90527684761381e-25,1.92442519827394e-25,1.94376599305757e-25,1.96330116606032e-25,1.98303267081576e-25,2.00296248049084e-25,2.02309258808308e-25,2.04342500662006e-25,2.06396176936057e-25,2.08470492999797e-25,2.10565656286563e-25,2.12681876314431e-25,2.14819364707166e-25,2.16978335215387e-25,2.19159003737946e-25,2.21361588343514e-25,2.23586309292382e-25,2.25833389058503e-25,2.28103052351724e-25,2.30395526140269e-25,2.32711039673423e-25,2.35049824504471e-25,2.37412114513846e-25,2.39798145932516e-25,2.42208157365611e-25,2.44642389816283e-25,2.47101086709808e-25,2.49584493917921e-25,2.52092859783413e-25,2.54626435144961e-25,2.57185473362216e-25,2.59770230341126e-25,2.62380964559547e-25,2.65017937093077e-25,2.67681411641163e-25,2.70371654553482e-25,2.73088934856567e-25,2.75833524280715e-25,2.7860569728715e-25,2.81405731095487e-25,2.8423390571144e-25,2.87090503954825e-25,2.89975811487849e-25,2.92890116843668e-25,2.9583371145525e-25,2.98806889684504e-25,3.01809948851734e-25,3.04843189265359e-25,3.07906914251946e-25,3.11001430186548e-25,3.14127046523338e-25,3.17284075826555e-25,3.20472833801757e-25,3.23693639327401e-25,3.26946814486723e-25,3.30232684599953e-25,3.33551578256835e-25,3.36903827349504e-25,3.40289767105664e-25,3.43709736122108e-25,3.47164076398589e-25,3.50653133372015e-25,3.54177255950993e-25,3.57736796550712e-25,3.61332111128201e-25,3.64963559217916e-25,3.68631503967688e-25,3.72336312175051e-25,3.76078354323912e-25,3.79858004621609e-25,3.83675641036314e-25,3.87531645334853e-25,3.91426403120873e-25,3.95360303873392e-25,3.99333740985766e-25,4.03347111805018e-25,4.07400817671577e-25,4.11495263959403e-25,4.15630860116538e-25,4.19808019706045e-25,4.24027160447366e-25,4.28288704258087e-25,4.32593077296141e-25,4.36940710002424e-25,4.41332037143823e-25,4.45767497856714e-25,4.50247535690864e-25,4.54772598653795e-25,4.59343139255566e-25,4.63959614554049e-25,4.68622486200626e-25,4.7333222048634e-25,4.78089288388547e-25,4.82894165618002e-25,4.87747332666435e-25,4.92649274854589e-25,4.97600482380771e-25,5.02601450369863e-25,5.07652678922824e-25,5.12754673166723e-25,5.17907943305236e-25,5.23113004669674e-25,5.28370377770504e-25,5.33680588349422e-25,5.39044167431909e-25,5.44461651380349e-25,5.49933581947643e-25,5.5546050633141e-25,5.610429772287e-25,5.66681552891247e-25,5.72376797181319e-25,5.78129279628091e-25,5.83939575484606e-25,5.89808265785283e-25,5.95735937404047e-25,6.01723183113005e-25,6.07770601641706e-25,6.1387879773705e-25,6.20048382223734e-25,6.26279972065354e-25,6.32574190426078e-25,6.38931666732991e-25,6.45353036739027e-25,6.51838942586528e-25,6.58390032871488e-25,6.65006962708396e-25,6.71690393795754e-25,6.78440994482231e-25,6.85259439833525e-25,6.92146411699854e-25,6.99102598784149e-25,7.06128696710904e-25,7.13225408095773e-25,7.20393442615813e-25,7.2763351708044e-25,7.34946355503138e-25,7.42332689173843e-25,7.49793256732084e-25,7.57328804240822e-25,7.64940085261094e-25,7.7262786092735e-25,7.80392900023552e-25,7.88235979060085e-25,7.9615788235139e-25,8.04159402094403e-25,8.12241338447755e-25,8.20404499611822e-25,8.28649701909528e-25,8.36977769867963e-25,8.45389536300869e-25,8.53885842391898e-25,8.62467537778747e-25,8.71135480638092e-25,8.79890537771451e-25,8.8873358469183e-25,8.97665505711299e-25,9.06687194029391e-25,9.15799551822459e-25,9.25003490333886e-25,9.34299929965179e-25,9.43689800368053e-25,9.53174040537375e-25,9.62753598905073e-25,9.72429433434951e-25,9.82202511718533e-25,9.92073811071799e-25,1.0020443186329e-24,1.0121150314609e-24,1.02228695663547e-24,1.03256111135763e-24,1.04293852305139e-24,1.05342022946657e-24,1.06400727878255e-24,1.07470072971309e-24,1.08550165161218e-24,1.09641112458102e-24,1.10743023957601e-24,1.1185600985178e-24,1.12980181440159e-24,1.14115651140832e-24,1.15262532501716e-24,1.16420940211903e-24,1.17590990113128e-24,1.18772799211358e-24,1.19966485688487e-24,1.21172168914156e-24,1.22389969457694e-24,1.23620009100171e-24,1.24862410846574e-24,1.26117298938114e-24,1.27384798864646e-24,1.28665037377219e-24,1.2995814250075e-24,1.31264243546831e-24,1.32583471126654e-24,1.33915957164076e-24,1.35261834908811e-24,1.36621238949756e-24,1.37994305228447e-24,1.39381171052656e-24,1.40781975110122e-24,1.42196857482419e-24,1.4362595965896e-24,1.45069424551157e-24,1.46527396506699e-24,1.48000021324001e-24,1.49487446266767e-24,1.50989820078733e-24,1.52507292998534e-24,1.54040016774723e-24,1.55588144680957e-24,1.57151831531316e-24,1.58731233695789e-24,1.60326509115908e-24,1.61937817320544e-24,1.63565319441861e-24,1.65209178231427e-24,1.66869558076491e-24,1.6854662501642e-24,1.70240546759309e-24,1.7195149269874e-24,1.73679633930734e-24,1.75425143270856e-24,1.77188195271492e-24,1.78968966239312e-24,1.80767634252898e-24,1.8258437918055e-24,1.84419382698273e-24,1.8627282830795e-24,1.88144901355685e-24,1.90035789050345e-24,1.91945680482272e-24,1.93874766642203e-24,1.95823240440362e-24,1.9779129672575e-24,1.99779132305638e-24,2.01786945965239e-24,2.03814938487595e-24,2.05863312673644e-24,2.07932273362514e-24,2.10022027452e-24,2.12132783919248e-24,2.14264753841665e-24,2.16418150418022e-24,2.18593188989771e-24,2.20790087062579e-24,2.23009064328085e-24,2.25250342685867e-24,2.27514146265626e-24,2.29800701449607e-24,2.32110236895234e-24,2.34442983557978e-24,2.36799174714446e-24,2.39179045985719e-24,2.41582835360907e-24,2.44010783220952e-24,2.46463132362661e-24,2.48940128022993e-24,2.51442017903579e-24,2.5396905219549e-24,2.56521483604262e-24,2.59099567375163e-24,2.61703561318721e-24,2.64333725836495e-24,2.66990323947132e-24,2.69673621312658e-24,2.72383886265043e-24,2.75121389833041e-24,2.77886405769291e-24,2.80679210577693e-24,2.8350008354105e-24,2.86349306749013e-24,2.89227165126277e-24,2.92133946461076e-24,2.95069941433967e-24,2.98035443646893e-24,3.0103074965255e-24,3.0405615898403e-24,3.07111974184789e-24,3.10198500838895e-24,3.13316047601586e-24,3.16464926230132e-24,3.19645451615023e-24,3.2285794181145e-24,3.26102718071105e-24,3.29380104874321e-24,3.32690429962508e-24,3.36034024370936e-24,3.39411222461829e-24,3.42822361957811e-24,3.46267783975678e-24,3.49747833060498e-24,3.53262857220081e-24,3.56813207959772e-24,3.60399240317608e-24,3.64021312899806e-24,3.67679787916647e-24,3.71375031218683e-24,3.75107412333318e-24,3.78877304501777e-24,3.82685084716418e-24,3.86531133758439e-24,3.90415836235944e-24,3.94339580622419e-24,3.98302759295575e-24,4.02305768576582e-24,4.06349008769701e-24,4.10432884202321e-24,4.14557803265394e-24,4.18724178454256e-24,4.22932426409901e-24,4.27182967960633e-24,4.3147622816415e-24,4.35812636350046e-24,4.40192626162754e-24,4.44616635604911e-24,4.4908510708114e-24,4.53598487442316e-24,4.58157228030237e-24,4.62761784722762e-24,4.67412617979393e-24,4.72110192887333e-24,4.76854979207992e-24,4.81647451423949e-24,4.86488088786422e-24,4.91377375363182e-24,4.96315800086965e-24,5.0130385680435e-24,5.06342044325171e-24,5.11430866472377e-24,5.16570832132428e-24,5.21762455306166e-24,5.27006255160237e-24,5.32302756079002e-24,5.37652487716958e-24,5.43055985051731e-24,5.48513788437557e-24,5.54026443659328e-24,5.5959450198715e-24,5.65218520231502e-24,5.70899060798898e-24,5.7663669174812e-24,5.82431986847049e-24,5.88285525630025e-24,5.94197893455807e-24,6.00169681566098e-24,6.06201487144688e-24,6.12293913377166e-24,6.18447569511225e-24,6.24663070917609e-24,6.30941039151639e-24,6.37282102015375e-24,6.43686893620378e-24,6.50156054451151e-24,6.56690231429167e-24,6.63290077977574e-24,6.69956254086518e-24,6.7668942637917e-24,6.83490268178374e-24,6.90359459573968e-24,6.97297687490821e-24,7.04305645757506e-24,7.11384035175696e-24,7.1853356359022e-24,7.25754945959883e-24,7.33048904428945e-24,7.40416168399321e-24,7.47857474603552e-24,7.5537356717846e-24,7.62965197739571e-24,7.70633125456258e-24,7.78378117127686e-24,7.86200947259484e-24,7.94102398141171e-24,8.02083259924427e-24,8.1014433070208e-24,8.18286416587932e-24,8.26510331797344e-24,8.34816898728697e-24,8.43206948045605e-24,8.51681318759999e-24,8.60240858316e-24,8.68886422674703e-24,8.77618876399753e-24,8.86439092743789e-24,8.953479537358e-24,9.04346350269311e-24,9.1343518219148e-24,9.2261535839306e-24,9.31887796899328e-24,9.41253424961868e-24,9.50713179151279e-24,9.60268005450868e-24,9.69918859351228e-24,9.79666705945798e-24,9.89512520027348e-24,9.99457286185497e-24,1.00950199890516e-23,1.01964766266595e-23,1.02989529204272e-23,1.04024591180695e-23,1.05070055702924e-23,1.06126027318281e-23,1.07192611624808e-23,1.08269915281826e-23,1.09358046020597e-23,1.10457112655102e-23,1.11567225092921e-23,1.12688494346222e-23,1.13821032542865e-23,1.14964952937613e-23,1.16120369923459e-23,1.17287399043066e-23,1.18466157000316e-23,1.19656761671988e-23,1.20859332119543e-23,1.22073988601025e-23,1.23300852583096e-23,1.24540046753176e-23,1.25791695031716e-23,1.27055922584585e-23,1.28332855835593e-23,1.2962262247913e-23,1.30925351492933e-23,1.3224117315099e-23,1.33570219036564e-23,1.34912622055351e-23,1.3626851644877e-23,1.37638037807392e-23,1.39021323084493e-23,1.40418510609755e-23,1.41829740103092e-23,1.43255152688632e-23,1.44694890908822e-23,1.46149098738681e-23,1.47617921600205e-23,1.49101506376904e-23,1.50600001428494e-23,1.52113556605726e-23,1.5364232326538e-23,1.55186454285398e-23,1.56746104080165e-23,1.58321428615963e-23,1.59912585426558e-23,1.61519733628957e-23,1.63143033939318e-23,1.64782648689025e-23,1.66438741840923e-23,1.68111479005702e-23,1.69801027458476e-23,1.71507556155497e-23,1.73231235751058e-23,1.74972238614552e-23,1.76730738847719e-23,1.78506912302047e-23,1.80300936596362e-23,1.82112991134587e-23,1.83943257123687e-23,1.85791917591787e-23,1.87659157406472e-23,1.89545163293281e-23,1.91450123854374e-23,1.93374229587396e-23,1.95317672904522e-23,1.97280648151703e-23,1.99263351628101e-23,2.01265981605715e-23,2.03288738349211e-23,2.0533182413595e-23,2.07395443276214e-23,2.09479802133635e-23,2.11585109145836e-23,2.13711574845274e-23,2.1585941188029e-23,2.18028835036376e-23,2.20220061257658e-23,2.22433309668584e-23,2.24668801595838e-23,2.26926760590475e-23,2.2920741245028e-23,2.31510985242334e-23,2.3383770932584e-23,2.36187817375143e-23,2.38561544403009e-23,2.40959127784116e-23,2.43380807278802e-23,2.45826825057033e-23,2.48297425722628e-23,2.50792856337708e-23,2.53313366447418e-23,2.55859208104869e-23,2.58430635896345e-23,2.6102790696677e-23,2.63651281045417e-23,2.66301020471879e-23,2.68977390222306e-23,2.71680657935903e-23,2.74411093941697e-23,2.7716897128556e-23,2.79954565757526e-23,2.82768155919364e-23,2.85610023132437e-23,2.88480451585831e-23,2.91379728324784e-23,2.94308143279389e-23,2.97265989293578e-23,3.00253562154418e-23,3.03271160621686e-23,3.06319086457745e-23,3.09397644457715e-23,3.12507142479962e-23,3.15647891476881e-23,3.18820205525991e-23,3.22024401861335e-23,3.2526080090522e-23,3.28529726300249e-23,3.31831504941682e-23,3.35166467010136e-23,3.38534946004598e-23,3.41937278775776e-23,3.45373805559777e-23,3.48844870012147e-23,3.52350819242226e-23,3.55892003847853e-23,3.59468777950443e-23,3.63081499230386e-23,3.66730528962823e-23,3.70416232053764e-23,3.74138977076592e-23,3.77899136308913e-23,3.8169708576978e-23,3.85533205257305e-23,3.89407878386635e-23,3.93321492628315e-23,3.97274439347023e-23,4.01267113840729e-23,4.05299915380209e-23,4.09373247248981e-23,4.13487516783621e-23,4.17643135414514e-23,4.21840518706987e-23,4.26080086402864e-23,4.30362262462449e-23,4.34687475106916e-23,4.39056156861138e-23,4.43468744596924e-23,4.47925679576729e-23,4.52427407497767e-23,4.56974378536575e-23,4.61567047394051e-23,4.66205873340906e-23,4.70891320263605e-23,4.75623856710738e-23,4.80403955939896e-23,4.8523209596499e-23,4.90108759604038e-23,4.95034434527472e-23,5.00009613306889e-23,5.05034793464316e-23,5.1011047752195e-23,5.15237173052429e-23,5.20415392729579e-23,5.25645654379687e-23,5.30928481033269e-23,5.36264400977396e-23,5.41653947808513e-23,5.47097660485786e-23,5.52596083385025e-23,5.581497663531e-23,5.63759264762941e-23,5.69425139569055e-23,5.75147957363649e-23,5.80928290433274e-23,5.86766716816048e-23,5.92663820359476e-23,5.98620190778829e-23,6.04636423716116e-23,6.10713120799636e-23,6.16850889704165e-23,6.23050344211712e-23,6.29312104272887e-23,6.35636796068918e-23,6.42025052074255e-23,6.48477511119826e-23,6.54994818456904e-23,6.61577625821659e-23,6.68226591500313e-23,6.74942380394978e-23,6.81725664090133e-23,6.88577120919803e-23,6.95497436035386e-23,7.0248730147415e-23,7.0954741622847e-23,7.16678486315705e-23,7.2388122484881e-23,7.31156352107631e-23,7.38504595610962e-23,7.45926690189282e-23,7.53423378058224e-23,7.60995408892825e-23,7.68643539902482e-23,7.76368535906672e-23,7.84171169411423e-23,7.92052220686594e-23,8.00012477843885e-23,8.08052736915634e-23,8.16173801934453e-23,8.24376485013614e-23,8.32661606428264e-23,8.41029994697438e-23,8.49482486666943e-23,8.58019927593018e-23,8.66643171226878e-23,8.7535307990006e-23,8.84150524610695e-23,8.93036385110592e-23,9.02011549993193e-23,9.11076916782472e-23,9.20233392022663e-23,9.29481891368926e-23,9.3882333967889e-23,9.48258671105178e-23,9.57788829188801e-23,9.67414766953496e-23,9.77137447001069e-23,9.86957841607625e-23,9.96876932820816e-23,1.00689571255802e-22,1.01701518270555e-22,1.02723635521889e-22,1.03756025222377e-22,1.0479879061185e-22,1.05852035967718e-22,1.06915866615394e-22,1.07990388938827e-22,1.09075710391146e-22,1.10171939505401e-22,1.11279185905418e-22,1.12397560316757e-22,1.13527174577793e-22,1.14668141650894e-22,1.15820575633717e-22,1.1698459177062e-22,1.18160306464187e-22,1.1934783728687e-22,1.20547302992736e-22,1.21758823529359e-22,1.22982520049801e-22,1.24218514924734e-22,1.25466931754674e-22,1.26727895382346e-22,1.28001531905165e-22,1.29287968687841e-22,1.30587334375126e-22,1.31899758904673e-22,1.33225373520026e-22,1.34564310783753e-22,1.35916704590695e-22,1.37282690181362e-22,1.38662404155448e-22,1.40055984485503e-22,1.41463570530719e-22,1.42885303050877e-22,1.4432132422041e-22,1.45771777642633e-22,1.47236808364098e-22,1.48716562889097e-22,1.50211189194315e-22,1.51720836743629e-22,1.53245656503053e-22,1.54785800955832e-22,1.56341424117694e-22,1.57912681552255e-22,1.59499730386564e-22,1.61102729326828e-22,1.62721838674278e-22,1.64357220341198e-22,1.66009037867116e-22,1.67677456435163e-22,1.69362642888585e-22,1.71064765747431e-22,1.72783995225407e-22,1.74520503246892e-22,1.76274463464137e-22,1.78046051274623e-22,1.79835443838609e-22,1.81642820096843e-22,1.83468360788456e-22,1.85312248469038e-22,1.87174667528895e-22,1.89055804211485e-22,1.90955846632041e-22,1.92874984796392e-22,1.94813410619951e-22,1.9677131794692e-22,1.98748902569658e-22,2.00746362248277e-22,2.02763896730413e-22,2.0480170777119e-22,2.06859999153413e-22,2.08938976707935e-22,2.11038848334246e-22,2.13159824021255e-22,2.153021158683e-22,2.17465938106353e-22,2.19651507119436e-22,2.21859041466276e-22,2.24088761902145e-22,2.26340891400947e-22,2.28615655177505e-22,2.30913280710095e-22,2.33233997763185e-22,2.35578038410414e-22,2.37945637057799e-22,2.40337030467178e-22,2.42752457779888e-22,2.45192160540667e-22,2.47656382721829e-22,2.50145370747643e-22,2.5265937351899e-22,2.55198642438236e-22,2.57763431434393e-22,2.60353996988498e-22,2.62970598159263e-22,2.65613496608987e-22,2.68282956629717e-22,2.70979245169681e-22,2.73702631859978e-22,2.76453389041547e-22,2.792317917924e-22,2.82038117955125e-22,2.84872648164677e-22,2.87735665876441e-22,2.90627457394575e-22,2.93548311900637e-22,2.96498521482514e-22,2.99478381163621e-22,3.02488188932413e-22,3.05528245772171e-22,3.08598855691113e-22,3.11700325752793e-22,3.14832966106798e-22,3.17997090019775e-22,3.21193013906752e-22,3.24421057362784e-22,3.27681543194902e-22,3.30974797454408e-22,3.34301149469475e-22,3.37660931878072e-22,3.41054480661242e-22,3.44482135176691e-22,3.4794423819273e-22,3.5144113592254e-22,3.5497317805881e-22,3.58540717808701e-22,3.62144111929155e-22,3.6578372076259e-22,3.69459908272922e-22,3.73173042081969e-22,3.76923493506199e-22,3.80711637593884e-22,3.84537853162589e-22,3.88402522837062e-22,3.92306033087486e-22,3.96248774268142e-22,4.00231140656435e-22,4.04253530492319e-22,4.08316346018131e-22,4.12419993518809e-22,4.16564883362527e-22,4.20751430041716e-22,4.24980052214537e-22,4.29251172746734e-22,4.33565218753913e-22,4.37922621644273e-22,4.42323817161734e-22,4.46769245429519e-22,4.51259350994152e-22,4.55794582869936e-22,4.60375394583839e-22,4.65002244220846e-22,4.69675594469778e-22,4.74395912669554e-22,4.79163670855932e-22,4.83979345808696e-22,4.88843419099359e-22,4.93756377139303e-22,4.98718711228429e-22,5.03730917604274e-22,5.08793497491657e-22,5.1390695715279e-22,5.1907180793789e-22,5.24288566336346e-22,5.29557754028345e-22,5.34879897937049e-22,5.40255530281278e-22,5.4568518862875e-22,5.51169415949827e-22,5.56708760671805e-22,5.62303776733776e-22,5.67955023642008e-22,5.73663066525905e-22,5.79428476194506e-22,5.85251829193584e-22,5.91133707863298e-22,5.97074700396407e-22,6.03075400897119e-22,6.09136409440485e-22,6.15258332132416e-22,6.21441781170272e-22,6.27687374904115e-22,6.33995737898523e-22,6.40367500995056e-22,6.46803301375327e-22,6.53303782624739e-22,6.5986959479684e-22,6.66501394478309e-22,6.73199844854646e-22,6.7996561577647e-22,6.86799383826516e-22,6.93701832387275e-22,7.00673651709359e-22,7.07715538980516e-22,7.14828198395331e-22,7.22012341225677e-22,7.29268685891825e-22,7.36597958034293e-22,7.44000890586393e-22,7.51478223847555e-22,7.59030705557341e-22,7.66659090970204e-22,7.7436414293105e-22,7.82146631951494e-22,7.9000733628693e-22,7.9794704201433e-22,8.05966543110891e-22,8.14066641533403e-22,8.22248147298465e-22,8.30511878563461e-22,8.38858661708408e-22,8.47289331418583e-22,8.55804730767972e-22,8.6440571130361e-22,8.73093133130718e-22,8.81867864998726e-22,8.9073078438812e-22,8.99682777598231e-22,9.08724739835846e-22,9.17857575304712e-22,9.27082197295992e-22,9.36399528279572e-22,9.45810499996323e-22,9.55316053551245e-22,9.64917139507621e-22,9.74614717982055e-22,9.84409758740462e-22,9.94303241295087e-22,1.00429615500243e-21,1.0143894991622e-21,1.0245842831172e-21,1.03488152635434e-21,1.04528225860652e-21,1.05578751995564e-21,1.06639836093657e-21,1.07711584264226e-21,1.08794103682982e-21,1.09887502602769e-21,1.10991890364388e-21,1.12107377407538e-21,1.13234075281852e-21,1.14372096658055e-21,1.15521555339235e-21,1.16682566272218e-21,1.17855245559063e-21,1.19039710468677e-21,1.20236079448538e-21,1.21444472136542e-21,1.22665009372963e-21,1.23897813212542e-21,1.25143006936691e-21,1.2640071506582e-21,1.2767106337179e-21,1.28954178890489e-21,1.30250189934541e-21,1.31559226106128e-21,1.32881418309958e-21,1.34216898766354e-21,1.35565801024475e-21,1.3692825997567e-21,1.3830441186697e-21,1.39694394314711e-21,1.41098346318295e-21,1.42516408274094e-21,1.43948721989483e-21,1.45395430697031e-21,1.4685667906881e-21,1.48332613230878e-21,1.4982338077788e-21,1.51329130787812e-21,1.52850013836931e-21,1.5438618201481e-21,1.55937788939546e-21,1.57504989773124e-21,1.59087941236934e-21,1.60686801627442e-21,1.62301730832018e-21,1.63932890344929e-21,1.65580443283486e-21,1.67244554404357e-21,1.68925390120037e-21,1.70623118515502e-21,1.72337909365004e-21,1.74069934149059e-21,1.75819366071587e-21,1.77586380077239e-21,1.79371152868888e-21,1.811738629253e-21,1.82994690518983e-21,1.84833817734214e-21,1.86691428485249e-21,1.88567708534707e-21,1.90462845512159e-21,1.92377028932883e-21,1.94310450216814e-21,1.96263302707693e-21,1.98235781692396e-21,2.00228084420466e-21,2.02240410123834e-21,2.04272960036749e-21,2.06325937415897e-21,2.08399547560724e-21,2.10493997833974e-21,2.12609497682419e-21,2.1474625865781e-21,2.1690449443802e-21,2.19084420848429e-21,2.21286255883493e-21,2.23510219728553e-21,2.25756534781844e-21,2.28025425676744e-21,2.30317119304235e-21,2.32631844835586e-21,2.34969833745282e-21,2.37331319834161e-21,2.39716539252801e-21,2.4212573052513e-21,2.44559134572283e-21,2.47016994736695e-21,2.49499556806428e-21,2.52007069039758e-21,2.54539782189998e-21,2.57097949530577e-21,2.59681826880356e-21,2.62291672629225e-21,2.64927747763936e-21,2.67590315894195e-21,2.70279643279036e-21,2.7299599885344e-21,2.75739654255227e-21,2.78510883852223e-21,2.81309964769696e-21,2.84137176918073e-21,2.86992803020924e-21,2.89877128643238e-21,2.92790442219981e-21,2.9573303508494e-21,2.98705201499852e-21,3.01707238683835e-21,3.0473944684311e-21,3.07802129201021e-21,3.10895592028354e-21,3.14020144673969e-21,3.17176099595739e-21,3.2036377239178e-21,3.23583481832031e-21,3.2683554989012e-21,3.30120301775563e-21,3.33438065966283e-21,3.36789174241465e-21,3.40173961714732e-21,3.43592766867648e-21,3.47045931583579e-21,3.50533801181874e-21,3.54056724452402e-21,3.57615053690421e-21,3.61209144731823e-21,3.64839356988707e-21,3.68506053485325e-21,3.7220960089438e-21,3.75950369573699e-21,3.79728733603271e-21,3.83545070822643e-21,3.87399762868719e-21,3.91293195213916e-21,3.95225757204716e-21,3.99197842100589e-21,4.03209847113338e-21,4.07262173446811e-21,4.11355226337012e-21,4.15489415092644e-21,4.19665153136028e-21,4.2388285804445e-21,4.28142951591911e-21,4.32445859791317e-21,4.36792012937079e-21,4.41181845648126e-21,4.4561579691139e-21,4.50094310125694e-21,4.54617833146093e-21,4.59186818328652e-21,4.63801722575702e-21,4.68463007381512e-21,4.7317113887845e-21,4.77926587883584e-21,4.82729829945779e-21,4.87581345393249e-21,4.92481619381573e-21,4.97431141942239e-21,5.02430408031626e-21,5.07479917580513e-21,5.12580175544056e-21,5.17731691952305e-21,5.22934981961197e-21,5.28190565904063e-21,5.33498969343679e-21,5.38860723124813e-21,5.44276363427316e-21,5.49746431819723e-21,5.55271475313435e-21,5.6085204641741e-21,5.66488703193402e-21,5.72182009311788e-21,5.77932534107925e-21,5.8374085263909e-21,5.89607545741966e-21,5.95533200090758e-21,6.01518408255838e-21,6.07563768763015e-21,6.13669886153369e-21,6.19837371043732e-21,6.26066840187736e-21,6.32358916537478e-21,6.38714229305842e-21,6.451334140294e-21,6.51617112631979e-21,6.58165973488832e-21,6.64780651491508e-21,6.71461808113323e-21,6.78210111475498e-21,6.85026236413998e-21,6.91910864546996e-21,6.98864684343048e-21,7.05888391189918e-21,7.1298268746415e-21,7.20148282601288e-21,7.27385893166806e-21,7.34696242927798e-21,7.42080062925331e-21,7.49538091547565e-21,7.57071074603565e-21,7.6467976539792e-21,7.72364924806049e-21,7.80127321350305e-21,7.87967731276799e-21,7.95886938633062e-21,8.03885735346435e-21,8.11964921303244e-21,8.20125304428824e-21,8.28367700768286e-21,8.3669293456814e-21,8.45101838358691e-21,8.53595253037331e-21,8.62174027952614e-21,8.70839020989166e-21,8.79591098653519e-21,8.88431136160732e-21,8.97360017521929e-21,9.06378635632674e-21,9.15487892362301e-21,9.2468869864408e-21,9.33981974566293e-21,9.43368649464284e-21,9.52849662013364e-21,9.62425960322696e-21,9.72098502030078e-21,9.81868254397748e-21,9.91736194409084e-21,1.00170330886632e-20,1.01177059448919e-20,1.02193905801465e-20,1.03220971629754e-20,1.04258359641223e-20,1.05306173575538e-20,1.06364518214966e-20,1.07433499394854e-20,1.08513224014209e-20,1.09603800046394e-20,1.1070533654992e-20,1.11817943679356e-20,1.12941732696341e-20,1.14076815980715e-20,1.15223307041751e-20,1.16381320529511e-20,1.17550972246309e-20,1.18732379158291e-20,1.19925659407132e-20,1.21130932321853e-20,1.22348318430748e-20,1.23577939473445e-20,1.2481991841307e-20,1.26074379448553e-20,1.27341448027044e-20,1.28621250856456e-20,1.29913915918138e-20,1.31219572479674e-20,1.32538351107808e-20,1.33870383681501e-20,1.35215803405122e-20,1.36574744821763e-20,1.379473438267e-20,1.39333737680975e-20,1.40734065025131e-20,1.42148465893068e-20,1.43577081726051e-20,1.45020055386855e-20,1.46477531174048e-20,1.47949654836424e-20,1.49436573587575e-20,1.50938436120616e-20,1.52455392623052e-20,1.53987594791795e-20,1.55535195848342e-20,1.57098350554086e-20,1.58677215225803e-20,1.60271947751272e-20,1.61882707605077e-20,1.63509655864545e-20,1.6515295522586e-20,1.66812770020323e-20,1.684892662308e-20,1.7018261150831e-20,1.71892975188788e-20,1.73620528310029e-20,1.75365443628786e-20,1.77127895638046e-20,1.78908060584475e-20,1.80706116486053e-20,1.8252224314987e-20,1.84356622190103e-20,1.86209437046186e-20,1.88080873001149e-20,1.89971117200147e-20,1.91880358669175e-20,1.93808788333969e-20,1.95756599039107e-20,1.97723985567278e-20,1.99711144658776e-20,2.01718275031167e-20,2.03745577399162e-20,2.05793254494683e-20,2.07861511087149e-20,2.09950554003942e-20,2.12060592151096e-20,2.14191836534182e-20,2.16344500279415e-20,2.18518798654965e-20,2.20714949092479e-20,2.22933171208831e-20,2.25173686828083e-20,2.27436720003665e-20,2.29722497040776e-20,2.32031246519028e-20,2.34363199315293e-20,2.36718588626791e-20,2.39097649994419e-20,2.41500621326294e-20,2.43927742921555e-20,2.4637925749438e-20,2.48855410198271e-20,2.51356448650564e-20,2.53882622957185e-20,2.56434185737671e-20,2.59011392150427e-20,2.61614499918243e-20,2.64243769354062e-20,2.6689946338702e-20,2.69581847588734e-20,2.72291190199861e-20,2.75027762156916e-20,2.77791837119377e-20,2.80583691497046e-20,2.83403604477684e-20,2.86251858054939e-20,2.89128737056544e-20,2.92034529172799e-20,2.94969524985331e-20,2.97934017996171e-20,3.00928304657091e-20,3.0395268439925e-20,3.07007459663143e-20,3.10092935928843e-20,3.1320942174655e-20,3.16357228767438e-20,3.19536671774834e-20,3.22748068715692e-20,3.25991740732377e-20,3.29268012194795e-20,3.32577210732824e-20,3.35919667269077e-20,3.39295716051989e-20,3.42705694689253e-20,3.46149944181575e-20,3.49628808956777e-20,3.53142636904231e-20,3.56691779409661e-20,3.6027659139028e-20,3.63897431330266e-20,3.67554661316634e-20,3.7124864707543e-20,3.74979758008311e-20,3.78748367229475e-20,3.82554851602986e-20,3.86399591780457e-20,3.90282972239105e-20,3.94205381320212e-20,3.98167211267958e-20,4.0216885826864e-20,4.06210722490288e-20,4.10293208122696e-20,4.1441672341783e-20,4.18581680730652e-20,4.22788496560366e-20,4.27037591592061e-20,4.31329390738784e-20,4.35664323184021e-20,4.4004282242463e-20,4.44465326314186e-20,4.48932277106765e-20,4.53444121501163e-20,4.58001310685583e-20,4.62604300382743e-20,4.67253550895443e-20,4.71949527152612e-20,4.76692698755789e-20,4.8148354002609e-20,4.86322530051628e-20,4.91210152735442e-20,4.96146896843875e-20,5.01133256055446e-20,5.06169729010236e-20,5.11256819359736e-20,5.16395035817224e-20,5.21584892208621e-20,5.26826907523895e-20,5.32121605968948e-20,5.37469517018031e-20,5.42871175466708e-20,5.48327121485326e-20,5.53837900673037e-20,5.59404064112345e-20,5.65026168424236e-20,5.70704775823825e-20,5.7644045417659e-20,5.82233777055138e-20,5.88085323796587e-20,5.93995679560493e-20,5.99965435387348e-20,6.05995188257716e-20,6.12085541151906e-20,6.1823710311029e-20,6.24450489294179e-20,6.30726321047375e-20,6.37065225958287e-20,6.43467837922679e-20,6.49934797207089e-20,6.56466750512834e-20,6.63064351040692e-20,6.69728258556205e-20,6.76459139455683e-20,6.83257666832828e-20,6.90124520546036e-20,6.97060387286404e-20,7.04065960646385e-20,7.11141941189161e-20,7.1828903651867e-20,7.25507961350407e-20,7.32799437582871e-20,7.40164194369767e-20,7.47602968192901e-20,7.55116502935858e-20,7.6270554995838e-20,7.70370868171482e-20,7.7811322411338e-20,7.85933392026118e-20,7.93832153933012e-20,8.01810299716822e-20,8.09868627198781e-20,8.18007942218359e-20,8.26229058713828e-20,8.34532798803696e-20,8.42919992868889e-20,8.51391479635812e-20,8.59948106260187e-20,8.68590728411814e-20,8.77320210360117e-20,8.86137425060552e-20,8.95043254241943e-20,9.0403858849463e-20,9.13124327359541e-20,9.22301379418121e-20,9.3157066238323e-20,9.40933103190889e-20,9.50389638092987e-20,9.59941212750882e-20,9.69588782330005e-20,9.79333311595362e-20,9.89175775007985e-20,9.99117156822424e-20,1.00915845118515e-19,1.01930066223396e-19,1.02954480419842e-19,1.03989190150124e-19,1.05034298886081e-19,1.06089911139454e-19,1.0715613247235e-19,1.0823306950779e-19,1.09320829940377e-19,1.10419522547057e-19,1.11529257198009e-19,1.12650144867623e-19,1.13782297645598e-19,1.14925828748156e-19,1.16080852529361e-19,1.17247484492555e-19,1.18425841301903e-19,1.1961604079407e-19,1.20818201989997e-19,1.22032445106806e-19,1.23258891569819e-19,1.24497664024704e-19,1.25748886349742e-19,1.27012683668205e-19,1.28289182360878e-19,1.29578510078696e-19,1.30880795755505e-19,1.32196169620957e-19,1.33524763213534e-19,1.34866709393705e-19,1.36222142357203e-19,1.37591197648456e-19,1.38974012174134e-19,1.40370724216842e-19,1.41781473448946e-19,1.43206400946548e-19,1.44645649203584e-19,1.46099362146077e-19,1.47567685146535e-19,1.49050765038482e-19,1.50548750131142e-19,1.52061790224273e-19,1.53590036623144e-19,1.5513364215367e-19,1.5669276117769e-19,1.58267549608406e-19,1.59858164925972e-19,1.61464766193247e-19,1.63087514071695e-19,1.64726570837457e-19,1.66382100397575e-19,1.68054268306386e-19,1.69743241782073e-19,1.7144918972339e-19,1.73172282726557e-19,1.74912693102305e-19,1.76670594893125e-19,1.78446163890659e-19,1.8023957765329e-19,1.82051015523885e-19,1.83880658647743e-19,1.857286899907e-19,1.8759529435743e-19,1.89480658409926e-19,1.91384970686163e-19,1.93308421618959e-19,1.95251203555006e-19,1.97213510774118e-19,1.99195539508653e-19,2.01197487963137e-19,2.03219556334081e-19,2.05261946830008e-19,2.07324863691673e-19,2.09408513212476e-19,2.11513103759108e-19,2.13638845792378e-19,2.15785951888261e-19,2.17954636759154e-19,2.20145117275352e-19,2.22357612486734e-19,2.24592343644662e-19,2.26849534224115e-19,2.29129409946033e-19,2.31432198799889e-19,2.33758131066483e-19,2.36107439340984e-19,2.38480358556177e-19,2.40877126005959e-19,2.43297981369072e-19,2.45743166733072e-19,2.48212926618533e-19,2.50707508003499e-19,2.53227160348189e-19,2.55772135619937e-19,2.58342688318394e-19,2.60939075500966e-19,2.63561556808539e-19,2.66210394491429e-19,2.6888585343561e-19,2.71588201189206e-19,2.74317707989246e-19,2.77074646788685e-19,2.79859293283698e-19,2.82671925941256e-19,2.8551282602697e-19,2.88382277633214e-19,2.9128056770754e-19,2.94207986081371e-19,2.97164825498987e-19,3.00151381646789e-19,3.03167953182883e-19,3.06214841766937e-19,3.09292352090347e-19,3.12400791906709e-19,3.15540472062598e-19,3.18711706528646e-19,3.21914812430938e-19,3.25150110082737e-19,3.28417923016504e-19,3.31718578016257e-19,3.35052405150242e-19,3.38419737803953e-19,3.41820912713465e-19,3.45256269999098e-19,3.48726153199445e-19,3.52230909305718e-19,3.5577088879645e-19,3.59346445672537e-19,3.62957937492647e-19,3.66605725408975e-19,3.70290174203347e-19,3.74011652323716e-19,3.77770531920994e-19,3.81567188886277e-19,3.8540200288842e-19,3.89275357412021e-19,3.93187639795763e-19,3.97139241271139e-19,4.01130557001593e-19,4.05161986122023e-19,4.09233931778705e-19,4.13346801169591e-19,4.17501005585051e-19,4.21696960448989e-19,4.25935085360389e-19,4.30215804135269e-19,4.34539544849078e-19,4.38906739879491e-19,4.43317825949647e-19,4.4777324417183e-19,4.52273440091576e-19,4.5681886373223e-19,4.61409969639938e-19,4.66047216929119e-19,4.70731069328371e-19,4.75461995226829e-19,4.8024046772103e-19,4.85066964662204e-19,4.89941968704072e-19,4.94865967351093e-19,4.99839453007239e-19,5.04862923025224e-19,5.09936879756228e-19,5.15061830600156e-19,5.20238288056364e-19,5.25466769774915e-19,5.3074779860833e-19,5.36081902663897e-19,5.41469615356467e-19,5.46911475461802e-19,5.52408027170441e-19,5.57959820142138e-19,5.63567409560822e-19,5.69231356190099e-19,5.74952226429356e-19,5.80730592370384e-19,5.86567031854598e-19,5.924621285308e-19,5.98416471913575e-19,6.04430657442228e-19,6.10505286540314e-19,6.16640966675811e-19,6.22838311421845e-19,6.29097940518059e-19,6.3542047993257e-19,6.41806561924593e-19,6.48256825107654e-19,6.54771914513437e-19,6.61352481656316e-19,6.6799918459849e-19,6.74712688015797e-19,6.81493663264162e-19,6.88342788446767e-19,6.95260748481838e-19,7.02248235171148e-19,7.09305947269179e-19,7.16434590553027e-19,7.23634877892966e-19,7.3090752932372e-19,7.38253272116499e-19,7.45672840851702e-19,7.53166977492391e-19,7.60736431458466e-19,7.68381959701636e-19,7.76104326781102e-19,7.83904304939996e-19,7.9178267418264e-19,7.99740222352524e-19,8.077777452111e-19,8.15896046517343e-19,8.24095938108153e-19,8.32378239979528e-19,8.40743780368546e-19,8.49193395836224e-19,8.57727931351148e-19,8.66348240373989e-19,8.75055184942821e-19,8.83849635759362e-19,8.92732472276023e-19,9.01704582783864e-19,9.107668645014e-19,9.19920223664361e-19,9.29165575616298e-19,9.38503844900097e-19,9.47935965350476e-19,9.57462880187338e-19,9.67085542110115e-19,9.76804913393002e-19,9.86621965981237e-19,9.96537681588264e-19,1.00655305179389e-18,1.0166690781435e-18,1.02688677224815e-18,1.03720715588577e-18,1.04763126110331e-18,1.05816013032e-18,1.06879481643152e-18,1.07953638291535e-18,1.09038590393709e-18,1.10134446445787e-18,1.1124131603429e-18,1.12359309847097e-18,1.13488539684522e-18,1.1462911847049e-18,1.1578116026383e-18,1.1694478026968e-18,1.18120094851011e-18,1.19307221540262e-18,1.20506279051089e-18,1.21717387290244e-18,1.22940667369559e-18,1.24176241618063e-18,1.25424233594208e-18,1.26684768098234e-18,1.27957971184641e-18,1.29243970174797e-18,1.30542893669675e-18,1.31854871562706e-18,1.33180035052773e-18,1.34518516657328e-18,1.35870450225649e-18,1.37235970952218e-18,1.38615215390246e-18,1.40008321465326e-18,1.41415428489226e-18,1.42836677173822e-18,1.44272209645166e-18,1.45722169457702e-18,1.47186701608619e-18,1.48665952552354e-18,1.50160070215232e-18,1.51669204010265e-18,1.53193504852092e-18,1.54733125172064e-18,1.56288218933499e-18,1.57858941647067e-18,1.59445450386351e-18,1.61047903803544e-18,1.62666462145324e-18,1.64301287268876e-18,1.65952542658072e-18,1.67620393439828e-18,1.69305006400612e-18,1.71006550003125e-18,1.72725194403143e-18,1.7446111146654e-18,1.76214474786469e-18,1.77985459700722e-18,1.79774243309266e-18,1.81581004491954e-18,1.8340592392641e-18,1.85249184106096e-18,1.87110969358568e-18,1.88991465863902e-18,1.90890861673317e-18,1.92809346727974e-18,1.94747112877979e-18,1.96704353901563e-18,1.98681265524457e-18,2.00678045439471e-18,2.02694893326261e-18,2.04732010871299e-18,2.06789601788033e-18,2.08867871837271e-18,2.10967028847751e-18,2.13087282736921e-18,2.15228845531938e-18,2.17391931390866e-18,2.19576756624095e-18,2.21783539715967e-18,2.2401250134663e-18,2.26263864414107e-18,2.28537854056578e-18,2.30834697674904e-18,2.33154624955359e-18,2.35497867892608e-18,2.37864660812894e-18,2.40255240397482e-18,2.42669845706323e-18,2.45108718201962e-18,2.47572101773678e-18,2.50060242761881e-18,2.52573389982747e-18,2.55111794753088e-18,2.57675710915498e-18,2.6026539486373e-18,2.62881105568339e-18,2.65523104602571e-18,2.68191656168533e-18,2.70887027123608e-18,2.73609487007134e-18,2.76359308067368e-18,2.7913676528871e-18,2.81942136419197e-18,2.84775701998277e-18,2.8763774538487e-18,2.90528552785703e-18,2.9344841328392e-18,2.96397618868007e-18,2.99376464460979e-18,3.02385247949881e-18,3.05424270215564e-18,3.0849383516279e-18,3.11594249750612e-18,3.14725824023073e-18,3.17888871140207e-18,3.21083707409363e-18,3.24310652316832e-18,3.27570028559792e-18,3.30862162078582e-18,3.34187382089301e-18,3.37546021116721e-18,3.40938415027539e-18,3.44364903063977e-18,3.47825827877695e-18,3.51321535564054e-18,3.54852375696738e-18,3.58418701362704e-18,3.62020869197491e-18,3.65659239420881e-18,3.6933417587293e-18,3.73046046050349e-18,3.76795221143242e-18,3.80582076072247e-18,3.84406989526012e-18,3.88270343999072e-18,3.9217252583009e-18,3.96113925240501e-18,4.00094936373533e-18,4.04115957333619e-18,4.08177390226199e-18,4.12279641197952e-18,4.16423120477394e-18,4.20608242415902e-18,4.24835425529159e-18,4.29105092539e-18,4.33417670415686e-18,4.37773590420594e-18,4.42173288149356e-18,4.46617203575416e-18,4.51105781094011e-18,4.55639469566639e-18,4.60218722365925e-18,4.64843997420967e-18,4.6951575726312e-18,4.74234469072263e-18,4.79000604723513e-18,4.83814640834401e-18,4.88677058812553e-18,4.93588344903818e-18,4.98548990240901e-18,5.03559490892465e-18,5.08620347912752e-18,5.13732067391681e-18,5.18895160505466e-18,5.24110143567711e-18,5.29377538081072e-18,5.34697870789395e-18,5.40071673730377e-18,5.45499484288792e-18,5.50981845250221e-18,5.56519304855332e-18,5.62112416854692e-18,5.67761740564166e-18,5.73467840920837e-18,5.79231288539487e-18,5.85052659769686e-18,5.90932536753407e-18,5.96871507483253e-18,6.02870165861238e-18,6.08929111758202e-18,6.15048951073789e-18,6.21230295797022e-18,6.27473764067528e-18,6.33779980237337e-18,6.40149574933326e-18,6.46583185120264e-18,6.53081454164535e-18,6.59645031898459e-18,6.66274574685283e-18,6.72970745484802e-18,6.7973421391968e-18,6.86565656342402e-18,6.93465755902893e-18,7.00435202616865e-18,7.07474693434796e-18,7.1458493231164e-18,7.21766630277199e-18,7.29020505507261e-18,7.36347283395397e-18,7.43747696625492e-18,7.51222485245042e-18,7.58772396739137e-18,7.66398186105224e-18,7.74100615928583e-18,7.81880456458622e-18,7.8973848568588e-18,7.9767548941982e-18,8.05692261367433e-18,8.13789603212595e-18,8.21968324696245e-18,8.30229243697334e-18,8.38573186314653e-18,8.47000986949417e-18,8.55513488388718e-18,8.64111541889783e-18,8.72796007265131e-18,8.81567752968545e-18,8.90427656181892e-18,8.99376602902882e-18,9.08415488033646e-18,9.17545215470235e-18,9.26766698192988e-18,9.36080858357868e-18,9.45488627388661e-18,9.54990946070096e-18,9.64588764641966e-18,9.74283042894127e-18,9.8407475026249e-18,9.93964865925937e-18,1.00395437890428e-17,1.01404428815716e-17,1.02423560268388e-17,1.03452934162441e-17,1.0449265343612e-17,1.05542822062222e-17,1.06603545058482e-17,1.07674928498084e-17,1.08757079520265e-17,1.09850106341031e-17,1.10954118263971e-17,1.12069225691201e-17,1.13195540134391e-17,1.14333174225924e-17,1.15482241730158e-17,1.166428575548e-17,1.17815137762401e-17,1.18999199581957e-17,1.20195161420638e-17,1.21403142875625e-17,1.22623264746068e-17,1.23855649045171e-17,1.25100419012393e-17,1.26357699125768e-17,1.27627615114353e-17,1.28910293970805e-17,1.30205863964082e-17,1.31514454652259e-17,1.32836196895497e-17,1.34171222869122e-17,1.35519666076845e-17,1.36881661364108e-17,1.38257344931575e-17,1.39646854348751e-17,1.41050328567735e-17,1.42467907937117e-17,1.43899734216017e-17,1.45345950588256e-17,1.46806701676675e-17,1.482821335576e-17,1.49772393775451e-17,1.51277631357491e-17,1.5279799682873e-17,1.54333642226985e-17,1.55884721118075e-17,1.57451388611181e-17,1.59033801374357e-17,1.60632117650199e-17,1.62246497271668e-17,1.63877101678069e-17,1.65524093931203e-17,1.67187638731668e-17,1.68867902435328e-17,1.70565053069956e-17,1.72279260352029e-17,1.74010695703704e-17,1.75759532269958e-17,1.77525944935906e-17,1.79310110344287e-17,1.81112206913128e-17,1.82932414853587e-17,1.84770916187976e-17,1.86627894767961e-17,1.88503536292945e-17,1.90398028328645e-17,1.92311560325844e-17,1.94244323639337e-17,1.96196511547063e-17,1.98168319269441e-17,2.00159943988889e-17,2.02171584869535e-17,2.04203443077144e-17,2.06255721799231e-17,2.0832862626538e-17,2.10422363767762e-17,2.12537143681873e-17,2.14673177487469e-17,2.16830678789707e-17,2.19009863340517e-17,2.21210949060169e-17,2.23434156059073e-17,2.25679706659776e-17,2.27947825419212e-17,2.30238739151149e-17,2.32552676948866e-17,2.34889870208072e-17,2.37250552650042e-17,2.39634960344987e-17,2.42043331735661e-17,2.44475907661213e-17,2.46932931381261e-17,2.49414648600228e-17,2.51921307491899e-17,2.54453158724254e-17,2.57010455484528e-17,2.59593453504525e-17,2.62202411086202e-17,2.64837589127489e-17,2.6749925114839e-17,2.70187663317321e-17,2.7290309447774e-17,2.75645816175029e-17,2.7841610268364e-17,2.81214231034532e-17,2.84040481042875e-17,2.86895135336025e-17,2.89778479381786e-17,2.92690801516969e-17,2.95632392976215e-17,2.98603547921118e-17,3.0160456346965e-17,3.04635739725866e-17,3.07697379809922e-17,3.10789789888372e-17,3.13913279204803e-17,3.1706816011075e-17,3.20254748096934e-17,3.23473361824806e-17,3.26724323158422e-17,3.30007957196628e-17,3.33324592305558e-17,3.3667456015149e-17,3.40058195734001e-17,3.4347583741947e-17,3.4692782697491e-17,3.50414509602154e-17,3.53936233972374e-17,3.57493352260937e-17,3.61086220182638e-17,3.64715197027264e-17,3.68380645695525e-17,3.72082932735338e-17,3.75822428378495e-17,3.79599506577678e-17,3.83414545043851e-17,3.87267925284041e-17,3.91160032639484e-17,3.95091256324162e-17,3.99061989463712e-17,4.03072629134762e-17,4.07123576404621e-17,4.11215236371394e-17,4.15348018204481e-17,4.19522335185513e-17,4.2373860474967e-17,4.27997248527416e-17,4.32298692386679e-17,4.36643366475432e-17,4.41031705264706e-17,4.45464147592031e-17,4.49941136705337e-17,4.54463120307268e-17,4.59030550599948e-17,4.63643884330214e-17,4.68303582835284e-17,4.73010112088896e-17,4.77763942747889e-17,4.82565550199295e-17,4.87415414607864e-17,4.92314020964072e-17,4.97261859132638e-17,5.02259423901504e-17,5.07307215031315e-17,5.12405737305382e-17,5.17555500580187e-17,5.22757019836347e-17,5.28010815230127e-17,5.33317412145436e-17,5.38677341246393e-17,5.44091138530377e-17,5.49559345381622e-17,5.55082508625372e-17,5.60661180582555e-17,5.66295919125019e-17,5.71987287731307e-17,5.77735855543026e-17,5.83542197421751e-17,5.89406894006501e-17,5.95330531771826e-17,6.01313703086438e-17,6.0735700627246e-17,6.13461045665237e-17,6.196264316738e-17,6.25853780841891e-17,6.32143715909609e-17,6.38496865875707e-17,6.44913866060474e-17,6.51395358169282e-17,6.57941990356733e-17,6.64554417291507e-17,6.71233300221807e-17,6.77979307041497e-17,6.84793112356872e-17,6.91675397554144e-17,6.98626850867575e-17,7.05648167448279e-17,7.1274004943377e-17,7.19903206018156e-17,7.27138353523071e-17,7.34446215469283e-17,7.41827522649083e-17,7.49283013199344e-17,7.56813432675325e-17,7.64419534125253e-17,7.72102078165612e-17,7.79861833057214e-17,7.87699574782003e-17,7.95616087120689e-17,8.03612161731108e-17,8.11688598227373e-17,8.19846204259871e-17,8.28085795596002e-17,8.36408196201772e-17,8.44814238324166e-17,8.53304762574407e-17,8.61880618011994e-17,8.70542662229625e-17,8.79291761438928e-17,8.88128790557119e-17,8.97054633294483e-17,9.06070182242718e-17,9.15176338964238e-17,9.24374014082304e-17,9.33664127372099e-17,9.43047607852681e-17,9.52525393879923e-17,9.62098433240334e-17,9.71767683245814e-17,9.81534110829428e-17,9.91398692642072e-17,1.00136241515016e-16,1.01142627473422e-16,1.02159127778861e-16,1.03185844082212e-16,1.04222879055959e-16,1.05270336404464e-16,1.06328320874336e-16,1.07396938264902e-16,1.08476295438792e-16,1.09566500332624e-16,1.10667661967794e-16,1.11779890461385e-16,1.12903297037172e-16,1.14037994036749e-16,1.15184094930762e-16,1.16341714330254e-16,1.17510967998132e-16,1.18691972860735e-16,1.19884847019536e-16,1.21089709762942e-16,1.22306681578232e-16,1.23535884163604e-16,1.24777440440339e-16,1.26031474565099e-16,1.27298111942342e-16,1.28577479236862e-16,1.29869704386454e-16,1.31174916614709e-16,1.32493246443939e-16,1.33824825708224e-16,1.35169787566601e-16,1.36528266516377e-16,1.37900398406579e-16,1.39286320451538e-16,1.40686171244615e-16,1.42100090772055e-16,1.4352822042699e-16,1.44970703023574e-16,1.4642768281127e-16,1.47899305489272e-16,1.49385718221071e-16,1.50887069649181e-16,1.52403509909995e-16,1.53935190648805e-16,1.55482265034959e-16,1.57044887777185e-16,1.58623215139061e-16,1.60217404954636e-16,1.61827616644221e-16,1.63454011230328e-16,1.65096751353771e-16,1.6675600128993e-16,1.68431926965181e-16,1.7012469597349e-16,1.71834477593167e-16,1.73561442803799e-16,1.75305764303346e-16,1.77067616525413e-16,1.78847175656688e-16,1.80644619654569e-16,1.82460128264953e-16,1.84293883040216e-16,1.8614606735736e-16,1.88016866436362e-16,1.8990646735869e-16,1.91815059086008e-16,1.93742832479082e-16,1.95689980316856e-16,1.97656697315739e-16,1.99643180149067e-16,2.01649627466779e-16,2.03676239915282e-16,2.05723220157505e-16,2.0779077289318e-16,2.09879104879305e-16,2.11988424950819e-16,2.14118944041484e-16,2.16270875204986e-16,2.18444433636236e-16,2.20639836692886e-16,2.22857303917073e-16,2.25097057057366e-16,2.27359320090949e-16,2.29644319246005e-16,2.31952283024357e-16,2.34283442224307e-16,2.36638029963713e-16,2.39016281703318e-16,2.41418435270274e-16,2.43844730881937e-16,2.46295411169896e-16,2.48770721204218e-16,2.51270908517967e-16,2.53796223131965e-16,2.56346917579769e-16,2.58923246932959e-16,2.61525468826612e-16,2.64153843485082e-16,2.66808633748034e-16,2.69490105096702e-16,2.72198525680451e-16,2.74934166343605e-16,2.77697300652506e-16,2.80488204922884e-16,2.83307158247499e-16,2.86154442524028e-16,2.89030342483269e-16,2.91935145717622e-16,2.94869142709822e-16,2.97832626862023e-16,3.00825894525104e-16,3.03849245028323e-16,3.06902980709258e-16,3.09987406944017e-16,3.13102832177789e-16,3.16249567955704e-16,3.19427928953956e-16,3.2263823301129e-16,3.25880801160796e-16,3.29155957661982e-16,3.32464030033236e-16,3.35805349084547e-16,3.39180248950601e-16,3.42589067124206e-16,3.46032144490016e-16,3.4950982535863e-16,3.53022457501044e-16,3.56570392183395e-16,3.60153984202103e-16,3.63773591919364e-16,3.67429577298964e-16,3.7112230594248e-16,3.74852147125866e-16,3.78619473836337e-16,3.82424662809714e-16,3.8626809456806e-16,3.90150153457748e-16,3.94071227687915e-16,3.98031709369243e-16,4.02031994553198e-16,4.06072483271641e-16,4.10153579576806e-16,4.14275691581719e-16,4.18439231501026e-16,4.22644615692179e-16,4.26892264697111e-16,4.31182603284258e-16,4.35516060491048e-16,4.39893069666824e-16,4.44314068516145e-16,4.48779499142575e-16,4.53289808092909e-16,4.57845446401796e-16,4.62446869636855e-16,4.67094537944258e-16,4.71788916094703e-16,4.76530473529909e-16,4.81319684409585e-16,4.86157027658795e-16,4.91042987015911e-16,4.95978051080933e-16,5.00962713364372e-16,5.05997472336624e-16,5.11082831477777e-16,5.16219299327973e-16,5.21407389538294e-16,5.26647620922077e-16,5.31940517506818e-16,5.37286608586604e-16,5.4268642877498e-16,5.48140518058482e-16,5.53649421850575e-16,5.59213691046221e-16,5.64833882076993e-16,5.70510556966669e-16,5.7624428338746e-16,5.82035634716804e-16,5.87885190094651e-16,5.93793534481404e-16,5.99761258716444e-16,6.05788959577159e-16,6.11877239838648e-16,6.18026708334029e-16,6.24237980015259e-16,6.30511676014699e-16,6.36848423707169e-16,6.43248856772709e-16,6.49713615259978e-16,6.56243345650203e-16,6.62838700921855e-16,6.69500340615976e-16,6.76228930902077e-16,6.83025144644785e-16,6.89889661471157e-16,6.96823167838576e-16,7.03826357103476e-16,7.10899929590611e-16,7.18044592663114e-16,7.25261060793265e-16,7.32550055633882e-16,7.39912306090513e-16,7.47348548394358e-16,7.54859526175836e-16,7.62445990538972e-16,7.70108700136547e-16,7.77848421245894e-16,7.85665927845565e-16,7.93562001692755e-16,8.01537432401406e-16,8.0959301752126e-16,8.17729562617528e-16,8.25947881351491e-16,8.34248795561892e-16,8.42633135347059e-16,8.51101739147946e-16,8.59655453832013e-16,8.68295134777846e-16,8.77021645960725e-16,8.85835860039067e-16,8.94738658441599e-16,9.03730931455606e-16,9.12813578315871e-16,9.21987507294634e-16,9.31253635792466e-16,9.40612890429924e-16,9.50066207140258e-16,9.59614531263044e-16,9.69258817638639e-16,9.79000030703701e-16,9.88839144587684e-16,9.98777143210161e-16,1.00881502037926e-15,1.0189537798911e-15,1.02919443563004e-15,1.03953801167022e-15,1.04998554237786e-15,1.0605380725147e-15,1.0711966573426e-15,1.08196236272891e-15,1.0928362652531e-15,1.10381945231454e-15,1.11491302224106e-15,1.12611808439889e-15,1.13743575930361e-15,1.14886717873211e-15,1.16041348583589e-15,1.17207583525526e-15,1.18385539323488e-15,1.19575333774039e-15,1.20777085857614e-15,1.21990915750421e-15,1.23216944836464e-15,1.24455295719672e-15,1.25706092236163e-15,1.26969459466635e-15,1.28245523748862e-15,1.29534412690333e-15,1.30836255181022e-15,1.32151181406256e-15,1.3347932285976e-15,1.34820812356783e-15,1.36175784047391e-15,1.37544373429885e-15,1.38926717364344e-15,1.40322954086309e-15,1.41733223220621e-15,1.43157665795367e-15,1.44596424255988e-15,1.46049642479535e-15,1.47517465789036e-15,1.4900004096805e-15,1.50497516275327e-15,1.52010041459645e-15,1.53537767774787e-15,1.55080847994654e-15,1.56639436428554e-15,1.58213688936631e-15,1.59803762945448e-15,1.61409817463727e-15,1.63032013098263e-15,1.6467051206997e-15,1.66325478230107e-15,1.67997077076675e-15,1.69685475770946e-15,1.71390843154201e-15,1.73113349764598e-15,1.74853167854231e-15,1.76610471406363e-15,1.78385436152811e-15,1.80178239591528e-15,1.81989061004355e-15,1.8381808147494e-15,1.85665483906853e-15,1.87531453041881e-15,1.89416175478487e-15,1.91319839690491e-15,1.93242636045897e-15,1.95184756825942e-15,1.97146396244326e-15,1.99127750466624e-15,2.01129017629907e-15,2.03150397862563e-15,2.05192093304298e-15,2.07254308126354e-15,2.09337248551939e-15,2.11441122876827e-15,2.13566141490201e-15,2.157125168957e-15,2.17880463732646e-15,2.20070198797536e-15,2.22281941065699e-15,2.245159117132e-15,2.26772334138973e-15,2.29051433987138e-15,2.31353439169575e-15,2.33678579888727e-15,2.36027088660601e-15,2.38399200338028e-15,2.40795152134158e-15,2.43215183646162e-15,2.45659536879214e-15,2.48128456270671e-15,2.50622188714525e-15,2.53140983586108e-15,2.55685092767e-15,2.58254770670237e-15,2.60850274265758e-15,2.63471863106081e-15,2.66119799352272e-15,2.68794347800169e-15,2.71495775906842e-15,2.74224353817349e-15,2.76980354391763e-15,2.79764053232429e-15,2.82575728711561e-15,2.85415661999044e-15,2.8828413709057e-15,2.91181440836047e-15,2.9410786296826e-15,2.97063696131856e-15,3.00049235912623e-15,3.03064780867023e-15,3.06110632552061e-15,3.09187095555451e-15,3.12294477526049e-15,3.1543308920465e-15,3.18603244455034e-15,3.21805260295362e-15,3.25039456929896e-15,3.28306157780991e-15,3.31605689521448e-15,3.34938382107201e-15,3.38304568810281e-15,3.41704586252159e-15,3.45138774437421e-15,3.48607476787744e-15,3.52111040176248e-15,3.55649814962201e-15,3.59224155026021e-15,3.62834417804704e-15,3.6648096432753e-15,3.70164159252185e-15,3.73884370901242e-15,3.77641971298961e-15,3.81437336208506e-15,3.85270845169544e-15,3.89142881536158e-15,3.93053832515208e-15,3.9700408920506e-15,4.00994046634665e-15,4.05024103803102e-15,4.09094663719441e-15,4.13206133443059e-15,4.17358924124367e-15,4.21553451045888e-15,4.25790133663803e-15,4.30069395649916e-15,4.34391664933987e-15,4.3875737374654e-15,4.43166958662106e-15,4.47620860642845e-15,4.5211952508266e-15,4.56663401851758e-15,4.61252945341589e-15,4.65888614510339e-15,4.70570872928782e-15,4.75300188826654e-15,4.80077035139501e-15,4.84901889555928e-15,4.89775234565389e-15,4.94697557506461e-15,4.99669350615534e-15,5.04691111076053e-15,5.09763341068264e-15,5.14886547819379e-15,5.20061243654357e-15,5.25287946047087e-15,5.30567177672154e-15,5.35899466457138e-15,5.41285345635351e-15,5.46725353799193e-15,5.52220034954029e-15,5.57769938572545e-15,5.6337561964972e-15,5.69037638758349e-15,5.74756562105054e-15,5.80532961586926e-15,5.86367414848745e-15,5.92260505340681e-15,5.98212822376712e-15,6.04224961193493e-15,6.10297523009906e-15,6.16431115087213e-15,6.22626350789723e-15,6.2888384964616e-15,6.35204237411642e-15,6.41588146130203e-15,6.48036214198028e-15,6.54549086427313e-15,6.61127414110691e-15,6.67771855086431e-15,6.74483073804158e-15,6.81261741391326e-15,6.88108535720364e-15,6.95024141476399e-15,7.02009250225761e-15,7.09064560485165e-15,7.16190777791507e-15,7.23388614772445e-15,7.30658791217697e-15,7.38002034150955e-15,7.45419077902621e-15,7.52910664183273e-15,7.6047754215776e-15,7.68120468520207e-15,7.75840207569608e-15,7.83637531286291e-15,7.91513219409147e-15,7.99468059513541e-15,8.075028470901e-15,8.15618385624301e-15,8.23815486676749e-15,8.32094969964368e-15,8.4045766344241e-15,8.48904403387168e-15,8.57436034479699e-15,8.66053409890211e-15,8.74757391363413e-15,8.83548849304731e-15,8.92428662867273e-15,9.01397720039781e-15,9.10456917735474e-15,9.19607161881657e-15,9.28849367510356e-15,9.38184458849864e-15,9.4761336941708e-15,9.57137042110904e-15,9.6675642930657e-15,9.76472492950786e-15,9.8628620465804e-15,9.96198545807669e-15,1.00621050764203e-14,1.01632309136568e-14,1.02653730824541e-14,1.0368541797114e-14,1.04727473745943e-14,1.05780002355393e-14,1.06843109053227e-14,1.07916900151005e-14,1.09001483028727e-14,1.10096966145588e-14,1.11203459050812e-14,1.12321072394609e-14,1.13449917939248e-14,1.14590108570223e-14,1.15741758307546e-14,1.16904982317153e-14,1.18079896922412e-14,1.19266619615763e-14,1.20465269070466e-14,1.21675965152464e-14,1.22898828932372e-14,1.24133982697592e-14,1.25381549964525e-14,1.26641655490941e-14,1.27914425288441e-14,1.29199986635064e-14,1.3049846808802e-14,1.31809999496533e-14,1.33134712014836e-14,1.34472738115288e-14,1.35824211601613e-14,1.37189267622283e-14,1.38568042684043e-14,1.39960674665542e-14,1.41367302831145e-14,1.42788067844836e-14,1.44223111784301e-14,1.45672578155133e-14,1.47136611905174e-14,1.48615359439018e-14,1.50108968632655e-14,1.51617588848246e-14,1.53141370949068e-14,1.54680467314606e-14,1.56235031855775e-14,1.57805220030325e-14,1.59391188858384e-14,1.60993096938154e-14,1.62611104461781e-14,1.64245373231363e-14,1.65896066675139e-14,1.67563349863831e-14,1.69247389527146e-14,1.70948354070452e-14,1.72666413591624e-14,1.74401739898045e-14,1.76154506523788e-14,1.77924888746982e-14,1.79713063607322e-14,1.81519209923782e-14,1.83343508312503e-14,1.8518614120484e-14,1.87047292865622e-14,1.88927149411563e-14,1.90825898829883e-14,1.92743730997111e-14,1.94680837698059e-14,1.96637412645009e-14,1.9861365149709e-14,2.00609751879834e-14,2.02625913404938e-14,2.04662337690241e-14,2.06719228379862e-14,2.08796791164591e-14,2.10895233802435e-14,2.13014766139402e-14,2.15155600130499e-14,2.17317949860906e-14,2.19502031567395e-14,2.21708063659963e-14,2.23936266743654e-14,2.2618686364063e-14,2.28460079412463e-14,2.30756141382622e-14,2.33075279159213e-14,2.35417724657954e-14,2.37783712125339e-14,2.40173478162093e-14,2.42587261746809e-14,2.45025304259853e-14,2.47487849507515e-14,2.49975143746368e-14,2.52487435707906e-14,2.55024976623425e-14,2.57588020249128e-14,2.60176822891509e-14,2.62791643432998e-14,2.6543274335782e-14,2.68100386778177e-14,2.70794840460629e-14,2.73516373852786e-14,2.76265259110264e-14,2.79041771123874e-14,2.81846187547129e-14,2.84678788824015e-14,2.87539858217016e-14,2.90429681835452e-14,2.93348548664102e-14,2.96296750592076e-14,2.9927458244202e-14,3.02282341999608e-14,3.05320330043295e-14,3.08388850374425e-14,3.11488209847584e-14,3.14618718401298e-14,3.17780689089039e-14,3.20974438110507e-14,3.24200284843262e-14,3.27458551874673e-14,3.30749565034155e-14,3.34073653425761e-14,3.3743114946111e-14,3.40822388892594e-14,3.44247710846992e-14,3.47707457859348e-14,3.51201975907243e-14,3.54731614445402e-14,3.58296726440617e-14,3.61897668407052e-14,3.65534800441916e-14,3.69208486261437e-14,3.72919093237253e-14,3.76666992433166e-14,3.80452558642212e-14,3.84276170424162e-14,3.88138210143391e-14,3.92039064007079e-14,3.95979122103873e-14,3.99958778442861e-14,4.03978430992988e-14,4.08038481722869e-14,4.12139336640956e-14,4.16281405836152e-14,4.2046510351884e-14,4.24690848062268e-14,4.28959062044407e-14,4.33270172290224e-14,4.37624609914323e-14,4.42022810364107e-14,4.46465213463283e-14,4.50952263455853e-14,4.5548440905057e-14,4.60062103465764e-14,4.64685804474685e-14,4.69355974451299e-14,4.74073080416489e-14,4.78837594084777e-14,4.83649991911512e-14,4.88510755140482e-14,4.93420369852052e-14,4.98379327011799e-14,5.03388122519559e-14,5.08447257259068e-14,5.13557237148011e-14,5.18718573188628e-14,5.23931781518837e-14,5.2919738346381e-14,5.34515905588121e-14,5.3988787974843e-14,5.45313843146621e-14,5.50794338383549e-14,5.5632991351332e-14,5.61921122098045e-14,5.67568523263256e-14,5.73272681753769e-14,5.79034167990178e-14,5.84853558125924e-14,5.90731434104863e-14,5.96668383719482e-14,6.02665000669706e-14,6.08721884622219e-14,6.14839641270457e-14,6.21018882395198e-14,6.27260225925696e-14,6.33564296001496e-14,6.39931723034878e-14,6.46363143773831e-14,6.5285920136581e-14,6.59420545421976e-14,6.66047832082194e-14,6.72741724080671e-14,6.79502890812176e-14,6.86332008399007e-14,6.93229759758633e-14,7.00196834671929e-14,7.0723392985218e-14,7.14341749014791e-14,7.2152100294758e-14,7.28772409581943e-14,7.36096694064576e-14,7.43494588830022e-14,7.50966833673942e-14,7.58514175827038e-14,7.66137370029802e-14,7.7383717860803e-14,7.81614371548986e-14,7.89469726578433e-14,7.97404029238442e-14,8.05418072965881e-14,8.13512659171789e-14,8.21688597321556e-14,8.29946705015785e-14,8.38287808072152e-14,8.46712740607902e-14,8.55222345123298e-14,8.63817472585905e-14,8.72498982515621e-14,8.81267743070661e-14,8.90124631134413e-14,8.99070532403052e-14,9.08106341474146e-14,9.17232961936158e-14,9.26451306458713e-14,9.35762296883974e-14,9.45166864318727e-14,9.5466594922754e-14,9.64260501526847e-14,9.7395148067986e-14,9.83739855792556e-14,9.93626605710632e-14,1.0036127191173e-13,1.01369919463222e-13,1.02388704091136e-13,1.03417727674784e-13,1.0445709311738e-13,1.05506904356336e-13,1.0656726637365e-13,1.07638285206409e-13,1.08720067957387e-13,1.0981272280576e-13,1.10916359017925e-13,1.12031086958424e-13,1.13157018100976e-13,1.14294265039637e-13,1.15442941500048e-13,1.16603162350811e-13,1.17775043614979e-13,1.18958702481654e-13,1.20154257317711e-13,1.21361827679628e-13,1.22581534325447e-13,1.23813499226852e-13,1.25057845581358e-13,1.26314697824636e-13,1.2758418164296e-13,1.28866423985769e-13,1.30161553078364e-13,1.31469698434737e-13,1.32790990870512e-13,1.34125562516032e-13,1.35473546829576e-13,1.36835078610697e-13,1.38210294013711e-13,1.39599330561301e-13,1.41002327158279e-13,1.42419424105477e-13,1.43850763113768e-13,1.45296487318245e-13,1.46756741292537e-13,1.48231671063256e-13,1.49721424124605e-13,1.51226149453138e-13,1.52745997522636e-13,1.54281120319177e-13,1.55831671356318e-13,1.57397805690453e-13,1.58979679936324e-13,1.60577452282672e-13,1.62191282508061e-13,1.63821331996863e-13,1.65467763755384e-13,1.67130742428167e-13,1.68810434314472e-13,1.70507007384884e-13,1.72220631298122e-13,1.7395147741801e-13,1.75699718830597e-13,1.77465530361487e-13,1.79249088593301e-13,1.81050571883346e-13,1.82870160381459e-13,1.84708036048002e-13,1.86564382672071e-13,1.88439385889881e-13,1.90333233203313e-13,1.92246113998674e-13,1.94178219565644e-13,1.96129743116383e-13,1.98100879804878e-13,2.00091826746439e-13,2.02102783037415e-13,2.04133949775117e-13,2.06185530077909e-13,2.08257729105528e-13,2.10350754079609e-13,2.1246481430439e-13,2.14600121187654e-13,2.16756888261873e-13,2.18935331205551e-13,2.21135667864792e-13,2.23358118275103e-13,2.25602904683371e-13,2.27870251570113e-13,2.30160385671905e-13,2.32473536004062e-13,2.34809933883551e-13,2.37169812952104e-13,2.39553409199591e-13,2.4196096098763e-13,2.44392709073403e-13,2.4684889663374e-13,2.49329769289453e-13,2.51835575129866e-13,2.5436656473766e-13,2.569229912139e-13,2.59505110203361e-13,2.62113179920102e-13,2.64747461173262e-13,2.6740821739316e-13,2.70095714657642e-13,2.7281022171867e-13,2.75552010029209e-13,2.78321353770382e-13,2.81118529878867e-13,2.83943818074602e-13,2.8679750088877e-13,2.89679863692021e-13,2.92591194723046e-13,2.9553178511737e-13,2.98501928936478e-13,3.01501923197238e-13,3.04532067901569e-13,3.07592666066464e-13,3.10684023754297e-13,3.13806450103411e-13,3.16960257359036e-13,3.20145760904537e-13,3.23363279292912e-13,3.26613134278691e-13,3.29895650850077e-13,3.33211157261457e-13,3.36559985066245e-13,3.39942469150007e-13,3.43358947763966e-13,3.46809762558839e-13,3.50295258618977e-13,3.53815784496886e-13,3.57371692248097e-13,3.60963337466343e-13,3.64591079319135e-13,3.6825528058369e-13,3.7195630768318e-13,3.75694530723407e-13,3.79470323529787e-13,3.8328406368474e-13,3.87136132565472e-13,3.91026915382075e-13,3.94956801216067e-13,3.98926183059318e-13,4.02935457853315e-13,4.06985026528872e-13,4.11075294046243e-13,4.15206669435577e-13,4.19379565837867e-13,4.23594400546224e-13,4.27851595047627e-13,4.32151575065085e-13,4.36494770600176e-13,4.40881615976069e-13,4.45312549880968e-13,4.4978801541195e-13,4.54308460119291e-13,4.58874336051242e-13,4.63486099799195e-13,4.68144212543361e-13,4.72849140098909e-13,4.77601352962503e-13,4.82401326359402e-13,4.8724954029094e-13,4.92146479582542e-13,4.97092633932233e-13,5.02088497959563e-13,5.07134571255089e-13,5.12231358430362e-13,5.17379369168339e-13,5.22579118274376e-13,5.27831125727732e-13,5.33135916733514e-13,5.38494021775259e-13,5.43905976667927e-13,5.49372322611511e-13,5.54893606245175e-13,5.60470379701877e-13,5.66103200663601e-13,5.71792632417154e-13,5.77539243910444e-13,5.83343609809401e-13,5.89206310555469e-13,5.95127932423598e-13,6.01109067580904e-13,6.07150314145902e-13,6.13252276248266e-13,6.19415564089308e-13,6.25640794002941e-13,6.31928588517335e-13,6.38279576417198e-13,6.44694392806604e-13,6.51173679172528e-13,6.57718083449026e-13,6.64328260081969e-13,6.71004870094519e-13,6.7774858115326e-13,6.845600676349e-13,6.91440010693781e-13,6.98389098329934e-13,7.05408025457902e-13,7.12497493976268e-13,7.19658212837782e-13,7.26890898120286e-13,7.34196273098357e-13,7.4157506831557e-13,7.49028021657585e-13,7.56555878425969e-13,7.64159391412661e-13,7.71839320975284e-13,7.79596435113217e-13,7.87431509544317e-13,7.95345327782577e-13,8.03338681216405e-13,8.11412369187794e-13,8.19567199072293e-13,8.27803986359674e-13,8.36123554735518e-13,8.4452673616362e-13,8.53014370969112e-13,8.61587307922536e-13,8.70246404324757e-13,8.78992526092605e-13,8.87826547845572e-13,8.9674935299318e-13,9.05761833823369e-13,9.14864891591757e-13,9.24059436611694e-13,9.33346388345331e-13,9.42726675495607e-13,9.5220123609904e-13,9.61771017619574e-13,9.71436977043361e-13,9.81200080974386e-13,9.91061305731164e-13,1.00102163744442e-12,1.01108207215559e-12,1.02124361591656e-12,1.03150728489016e-12,1.04187410545183e-12,1.05234511429228e-12,1.06292135852113e-12,1.07360389577158e-12,1.0843937943063e-12,1.09529213312411e-12,1.10630000206797e-12,1.11741850193397e-12,1.12864874458133e-12,1.13999185304371e-12,1.15144896164138e-12,1.16302121609475e-12,1.17470977363894e-12,1.18651580313941e-12,1.19844048520895e-12,1.21048501232573e-12,1.22265058895249e-12,1.234938431657e-12,1.24734976923381e-12,1.25988584282701e-12,1.27254790605438e-12,1.28533722513283e-12,1.29825507900489e-12,1.31130275946676e-12,1.32448157129733e-12,1.33779283238875e-12,1.35123787387826e-12,1.36481804028119e-12,1.37853468962548e-12,1.39238919358753e-12,1.40638293762928e-12,1.42051732113675e-12,1.43479375756013e-12,1.4492136745549e-12,1.46377851412484e-12,1.478489732766e-12,1.4933488016125e-12,1.50835720658365e-12,1.52351644853242e-12,1.53882804339562e-12,1.55429352234555e-12,1.56991443194296e-12,1.5856923342918e-12,1.60162880719552e-12,1.61772544431464e-12,1.63398385532629e-12,1.65040566608514e-12,1.66699251878593e-12,1.68374607212778e-12,1.70066800147997e-12,1.71775999904951e-12,1.73502377405045e-12,1.75246105287466e-12,1.77007357926451e-12,1.78786311448739e-12,1.8058314375116e-12,1.8239803451844e-12,1.84231165241174e-12,1.86082719233955e-12,1.87952881653732e-12,1.89841839518302e-12,1.91749781725023e-12,1.93676899069711e-12,1.95623384265705e-12,1.97589431963142e-12,1.99575238768436e-12,2.01581003263921e-12,2.03606926027713e-12,2.05653209653785e-12,2.07720058772199e-12,2.09807680069589e-12,2.11916282309829e-12,2.14046076354894e-12,2.1619727518597e-12,2.1837009392473e-12,2.20564749854855e-12,2.22781462443772e-12,2.25020453364586e-12,2.27281946518251e-12,2.29566168055973e-12,2.31873346401806e-12,2.34203712275504e-12,2.36557498715604e-12,2.38934941102704e-12,2.4133627718303e-12,2.43761747092189e-12,2.46211593379189e-12,2.48686061030707e-12,2.51185397495568e-12,2.53709852709496e-12,2.56259679120124e-12,2.58835131712214e-12,2.61436468033169e-12,2.64063948218795e-12,2.66717835019297e-12,2.69398393825562e-12,2.72105892695713e-12,2.74840602381886e-12,2.77602796357335e-12,2.80392750843756e-12,2.83210744838918e-12,2.86057060144579e-12,2.88931981394635e-12,2.91835796083604e-12,2.94768794595382e-12,2.97731270232262e-12,3.00723519244271e-12,3.03745840858811e-12,3.06798537310556e-12,3.09881913871702e-12,3.12996278882471e-12,3.16141943781955e-12,3.19319223139274e-12,3.22528434685007e-12,3.25769899342978e-12,3.29043941262364e-12,3.3235088785008e-12,3.35691069803537e-12,3.39064821143721e-12,3.42472479248575e-12,3.45914384886744e-12,3.49390882251668e-12,3.52902318995973e-12,3.56449046266268e-12,3.60031418738232e-12,3.63649794652092e-12,3.67304535848464e-12,3.70996007804509e-12,3.74724579670493e-12,3.78490624306721e-12,3.82294518320789e-12,3.86136642105264e-12,3.90017379875736e-12,3.93937119709205e-12,3.97896253582932e-12,4.01895177413599e-12,4.05934291096916e-12,4.10013998547627e-12,4.14134707739872e-12,4.18296830747998e-12,4.22500783787787e-12,4.26746987258039e-12,4.31035865782634e-12,4.35367848253012e-12,4.39743367871022e-12,4.44162862192267e-12,4.48626773169873e-12,4.53135547198648e-12,4.57689635159762e-12,4.62289492465801e-12,4.66935579106322e-12,4.71628359693875e-12,4.76368303510422e-12,4.81155884554287e-12,4.85991581587579e-12,4.90875878184024e-12,4.95809262777345e-12,5.00792228710125e-12,5.05825274283097e-12,5.10908902805027e-12,5.16043622642996e-12,5.21229947273259e-12,5.26468395332617e-12,5.31759490670232e-12,5.37103762400041e-12,5.42501744953685e-12,5.4795397813391e-12,5.5346100716857e-12,5.59023382765173e-12,5.64641661165907e-12,5.70316404203285e-12,5.76048179356357e-12,5.81837559807397e-12,5.87685124499291e-12,5.93591458193375e-12,5.9955715152793e-12,6.05582801077278e-12,6.11669009411388e-12,6.17816385156155e-12,6.24025543054295e-12,6.30297104026763e-12,6.36631695234873e-12,6.43029950143044e-12,6.49492508582079e-12,6.56020016813226e-12,6.62613127592739e-12,6.69272500237181e-12,6.75998800689384e-12,6.8279270158499e-12,6.8965488231974e-12,6.96586029117445e-12,7.03586835098551e-12,7.10658000349481e-12,7.17800231992672e-12,7.25014244257231e-12,7.32300758550385e-12,7.39660503529655e-12,7.47094215175654e-12,7.5460263686576e-12,7.6218651944839e-12,7.6984662131811e-12,7.77583708491513e-12,7.85398554683753e-12,7.93291941385951e-12,8.01264657943376e-12,8.09317501634317e-12,8.17451277749843e-12,8.25666799674365e-12,8.33964888966901e-12,8.42346375443317e-12,8.50812097259234e-12,8.59362900993876e-12,8.67999641734767e-12,8.76723183163166e-12,8.85534397640472e-12,8.94434166295502e-12,9.03423379112524e-12,9.12502935020299e-12,9.21673741982009e-12,9.3093671708598e-12,9.40292786637429e-12,9.49742886251133e-12,9.59287960944902e-12,9.68928965234188e-12,9.78666863227439e-12,9.88502628722556e-12,9.98437245304312e-12,1.00847170644263e-11,1.01860701559198e-11,1.02884418629173e-11,1.03918424226749e-11,1.04962821753345e-11,1.06017715649587e-11,1.0708321140574e-11,1.08159415572272e-11,1.09246435770494e-11,1.1034438070333e-11,1.11453360166192e-11,1.12573485057949e-11,1.13704867392021e-11,1.14847620307588e-11,1.16001858080892e-11,1.17167696136671e-11,1.18345251059705e-11,1.19534640606466e-11,1.20735983716899e-11,1.21949400526318e-11,1.23175012377413e-11,1.24412941832394e-11,1.25663312685235e-11,1.26926249974063e-11,1.28201879993661e-11,1.29490330308094e-11,1.30791729763465e-11,1.32106208500807e-11,1.33433897969088e-11,1.34774930938359e-11,1.36129441513038e-11,1.37497565145308e-11,1.38879438648676e-11,1.40275200211641e-11,1.41684989411522e-11,1.43108947228417e-11,1.44547216059293e-11,1.45999939732228e-11,1.47467263520805e-11,1.48949334158624e-11,1.50446299853981e-11,1.51958310304698e-11,1.53485516713077e-11,1.5502807180103e-11,1.56586129825355e-11,1.58159846593149e-11,1.59749379477405e-11,1.61354887432733e-11,1.62976531011264e-11,1.64614472378713e-11,1.66268875330578e-11,1.67939905308532e-11,1.69627729416968e-11,1.71332516439703e-11,1.73054436856857e-11,1.74793662861911e-11,1.76550368378909e-11,1.78324729079874e-11,1.8011692240235e-11,1.81927127567162e-11,1.83755525596339e-11,1.85602299331205e-11,1.8746763345067e-11,1.89351714489706e-11,1.91254730857984e-11,1.93176872858724e-11,1.95118332707734e-11,1.97079304552612e-11,1.99059984492176e-11,2.01060570596075e-11,2.03081262924582e-11,2.05122263548618e-11,2.07183776569944e-11,2.09266008141577e-11,2.11369166488416e-11,2.13493461928044e-11,2.15639106891773e-11,2.17806315945894e-11,2.19995305813114e-11,2.22206295394242e-11,2.24439505790084e-11,2.26695160323535e-11,2.28973484561934e-11,2.312747063396e-11,2.33599055780626e-11,2.35946765321898e-11,2.38318069736325e-11,2.40713206156321e-11,2.43132414097529e-11,2.45575935482758e-11,2.48044014666178e-11,2.50536898457771e-11,2.5305483614799e-11,2.55598079532699e-11,2.58166882938364e-11,2.60761503247457e-11,2.63382199924179e-11,2.66029235040379e-11,2.6870287330177e-11,2.71403382074414e-11,2.74131031411434e-11,2.76886094080033e-11,2.79668845588783e-11,2.82479564215148e-11,2.85318531033331e-11,2.88186029942385e-11,2.91082347694584e-11,2.94007773924125e-11,2.96962601176065e-11,2.99947124935586e-11,3.0296164365756e-11,3.06006458796368e-11,3.09081874836055e-11,3.12188199320799e-11,3.15325742885631e-11,3.18494819287517e-11,3.21695745436749e-11,3.24928841428603e-11,3.28194430575369e-11,3.31492839438692e-11,3.34824397862198e-11,3.38189439004514e-11,3.41588299372554e-11,3.45021318855182e-11,3.48488840757218e-11,3.51991211833736e-11,3.55528782324758e-11,3.5910190599029e-11,3.62710940145673e-11,3.66356245697322e-11,3.70038187178842e-11,3.7375713278744e-11,3.77513454420784e-11,3.81307527714164e-11,3.85139732078065e-11,3.89010450736128e-11,3.92920070763439e-11,3.96868983125252e-11,4.00857582716107e-11,4.0488626839928e-11,4.08955443046692e-11,4.13065513579208e-11,4.17216891007302e-11,4.21409990472171e-11,4.25645231287266e-11,4.29923036980186e-11,4.34243835335078e-11,4.38608058435372e-11,4.43016142707009e-11,4.47468528962101e-11,4.51965662442977e-11,4.56507992866728e-11,4.61095974470193e-11,4.65730066055351e-11,4.70410731035213e-11,4.75138437480193e-11,4.7991365816486e-11,4.84736870615277e-11,4.89608557156701e-11,4.94529204961838e-11,4.99499306099583e-11,5.04519357584186e-11,5.09589861424971e-11,5.1471132467656e-11,5.19884259489541e-11,5.25109183161698e-11,5.30386618189767e-11,5.35717092321641e-11,5.41101138609168e-11,5.46539295461478e-11,5.52032106698772e-11,5.57580121606769e-11,5.63183894991572e-11,5.68843987235184e-11,5.74560964351561e-11,5.8033539804317e-11,5.86167865758185e-11,5.92058950748253e-11,5.98009242126776e-11,6.0401933492784e-11,6.1008983016575e-11,6.16221334895073e-11,6.22414462271408e-11,6.28669831612645e-11,6.34988068460922e-11,6.41369804645206e-11,6.47815678344425e-11,6.54326334151311e-11,6.60902423136889e-11,6.67544602915528e-11,6.74253537710731e-11,6.81029898421588e-11,6.87874362689807e-11,6.94787614967509e-11,7.01770346585702e-11,7.08823255823346e-11,7.15947047977263e-11,7.23142435432595e-11,7.30410137734073e-11,7.37750881658004e-11,7.45165401284887e-11,7.52654438072852e-11,7.60218740931841e-11,7.67859066298433e-11,7.75576178211519e-11,7.83370848388744e-11,7.91243856303598e-11,7.99195989263457e-11,8.07228042488232e-11,8.15340819189927e-11,8.23535130652995e-11,8.31811796315399e-11,8.40171643850592e-11,8.48615509250317e-11,8.57144236908138e-11,8.65758679703916e-11,8.74459699089133e-11,8.83248165172966e-11,8.92124956809335e-11,9.01090961684826e-11,9.10147076407372e-11,9.19294206596017e-11,9.28533266971391e-11,9.37865181447216e-11,9.47290883222742e-11,9.56811314875989e-11,9.66427428458042e-11,9.76140185588299e-11,9.85950557550554e-11,9.95859525390163e-11,1.0058680800122e-10,1.01597722228043e-10,1.02618796311754e-10,1.0365013236061e-10,1.04691833509075e-10,1.05744003928134e-10,1.06806748835704e-10,1.07880174507161e-10,1.08964388285969e-10,1.10059498594407e-10,1.11165614944418e-10,1.12282847948562e-10,1.13411309331068e-10,1.14551111939013e-10,1.15702369753611e-10,1.168651979016e-10,1.18039712666767e-10,1.19226031501565e-10,1.20424273038865e-10,1.21634557103822e-10,1.22857004725849e-10,1.24091738150727e-10,1.25338880852829e-10,1.26598557547463e-10,1.27870894203348e-10,1.29156018055211e-10,1.30454057616506e-10,1.31765142692274e-10,1.33089404392113e-10,1.34426975143295e-10,1.35777988704013e-10,1.37142580176748e-10,1.38520886021781e-10,1.39913044070851e-10,1.41319193540919e-10,1.42739475048102e-10,1.44174030621739e-10,1.45623003718581e-10,1.47086539237142e-10,1.48564783532198e-10,1.50057884429407e-10,1.51565991240106e-10,1.53089254776231e-10,1.54627827365402e-10,1.56181862866166e-10,1.57751516683364e-10,1.59336945783685e-10,1.60938308711364e-10,1.62555765604026e-10,1.64189478208706e-10,1.6583960989803e-10,1.67506325686537e-10,1.691897922472e-10,1.70890177928076e-10,1.72607652769147e-10,1.74342388519332e-10,1.76094558653651e-10,1.77864338390574e-10,1.79651904709555e-10,1.81457436368712e-10,1.83281113922714e-10,1.8512311974084e-10,1.86983638025205e-10,1.88862854829184e-10,1.90760958076031e-10,1.92678137577644e-10,1.94614585053578e-10,1.96570494150192e-10,1.98546060460021e-10,2.00541481541348e-10,2.02556956937942e-10,2.04592688199019e-10,2.06648878899407e-10,2.08725734659886e-10,2.10823463167761e-10,2.12942274197635e-10,2.15082379632372e-10,2.17243993484304e-10,2.19427331916615e-10,2.21632613264964e-10,2.23860058059329e-10,2.26109889046044e-10,2.28382331210078e-10,2.30677611797547e-10,2.32995960338421e-10,2.3533760866948e-10,2.37702790957517e-10,2.40091743722728e-10,2.42504705862376e-10,2.44941918674692e-10,2.47403625882983e-10,2.49890073660027e-10,2.52401510652669e-10,2.54938188006699e-10,2.57500359391973e-10,2.60088281027761e-10,2.62702211708378e-10,2.65342412829079e-10,2.68009148412171e-10,2.70702685133432e-10,2.73423292348785e-10,2.76171242121212e-10,2.78946809247987e-10,2.81750271288131e-10,2.84581908590181e-10,2.87442004320234e-10,2.90330844490243e-10,2.93248717986627e-10,2.96195916599176e-10,2.99172735050202e-10,3.02179471024027e-10,3.05216425196762e-10,3.08283901266351e-10,3.11382205982951e-10,3.14511649179626e-10,3.17672543803294e-10,3.20865205946059e-10,3.24089954876792e-10,3.27347113073068e-10,3.30637006253431e-10,3.33959963409934e-10,3.37316316841057e-10,3.4070640218495e-10,3.44130558452967e-10,3.47589128063583e-10,3.51082456876651e-10,3.54610894227953e-10,3.58174792964173e-10,3.61774509478151e-10,3.65410403744532e-10,3.69082839355782e-10,3.72792183558518e-10,3.76538807290244e-10,3.80323085216466e-10,3.84145395768126e-10,3.88006121179457e-10,3.91905647526228e-10,3.95844364764318e-10,3.99822666768727e-10,4.03840951372981e-10,4.07899620408878e-10,4.11999079746713e-10,4.16139739335832e-10,4.20322013245636e-10,4.24546319707014e-10,4.28813081154126e-10,4.33122724266664e-10,4.37475680012544e-10,4.41872383690961e-10,4.4631327497594e-10,4.50798797960322e-10,4.5532940120013e-10,4.59905537759475e-10,4.64527665255821e-10,4.69196245905761e-10,4.73911746571263e-10,4.78674638806317e-10,4.83485398904107e-10,4.88344507944665e-10,4.93252451842936e-10,4.98209721397394e-10,5.03216812339138e-10,5.08274225381426e-10,5.13382466269769e-10,5.18542045832527e-10,5.23753480031941e-10,5.29017290015787e-10,5.34334002169442e-10,5.39704148168543e-10,5.4512826503218e-10,5.5060689517655e-10,5.56140586469226e-10,5.61729892283962e-10,5.67375371555989e-10,5.73077588837929e-10,5.78837114356279e-10,5.84654524068371e-10,5.90530399720041e-10,5.96465328903741e-10,6.02459905117326e-10,6.08514727823428e-10,6.14630402509354e-10,6.20807540747659e-10,6.27046760257332e-10,6.33348684965512e-10,6.39713945069911e-10,6.46143177101863e-10,6.52637023989916e-10,6.59196135124161e-10,6.65821166421194e-10,6.72512780389647e-10,6.79271646196509e-10,6.86098439733983e-10,6.92993843687101e-10,6.99958547602023e-10,7.06993247954932e-10,7.14098648221714e-10,7.21275458948336e-10,7.2852439782184e-10,7.35846189742142e-10,7.43241566894554e-10,7.50711268822933e-10,7.58256042503715e-10,7.65876642420543e-10,7.73573830639747e-10,7.81348376886583e-10,7.89201058622142e-10,7.97132661121128e-10,8.05143977550422e-10,8.13235809048329e-10,8.21408964804729e-10,8.2966426214203e-10,8.38002526596831e-10,8.46424592002512e-10,8.54931300572654e-10,8.63523502985177e-10,8.72202058467503e-10,8.80967834882401e-10,8.89821708814799e-10,8.98764565659494e-10,9.07797299709606e-10,9.16920814246053e-10,9.26136021627915e-10,9.35443843383593e-10,9.44845210303005e-10,9.543410625307e-10,9.63932349659784e-10,9.73620030826988e-10,9.83405074808486e-10,9.93288460116813e-10,1.00327117509876e-09,1.01335421803413e-09,1.0235385972356e-09,1.0338253311496e-09,1.04421544845808e-09,1.05470998818141e-09,1.06530999978233e-09,1.07601654327082e-09,1.08683068931014e-09,1.09775351932392e-09,1.10878612560423e-09,1.11992961142092e-09,1.13118509113185e-09,1.14255369029434e-09,1.15403654577781e-09,1.16563480587736e-09,1.17734963042864e-09,1.18918219092391e-09,1.20113367062904e-09,1.21320526470194e-09,1.22539818031213e-09,1.23771363676127e-09,1.2501528656053e-09,1.26271711077746e-09,1.27540762871271e-09,1.28822568847344e-09,1.3011725718763e-09,1.31424957362039e-09,1.32745800141681e-09,1.34079917611933e-09,1.35427443185651e-09,1.36788511616518e-09,1.3816325901251e-09,1.39551822849508e-09,1.40954341985058e-09,1.42370956672238e-09,1.43801808573698e-09,1.45247040775821e-09,1.46706797803027e-09,1.48181225632239e-09,1.49670471707466e-09,1.51174684954554e-09,1.52694015796084e-09,1.54228616166405e-09,1.55778639526828e-09,1.57344240880987e-09,1.58925576790314e-09,1.60522805389723e-09,1.62136086403402e-09,1.63765581160794e-09,1.65411452612735e-09,1.6707386534774e-09,1.68752985608465e-09,1.70448981308338e-09,1.72162022048339e-09,1.73892279133967e-09,1.75639925592376e-09,1.77405136189665e-09,1.79188087448362e-09,1.80988957665082e-09,1.82807926928341e-09,1.84645177136586e-09,1.86500892016365e-09,1.88375257140709e-09,1.90268459947696e-09,1.92180689759181e-09,1.94112137799735e-09,1.96062997215776e-09,1.98033463094867e-09,2.00023732485235e-09,2.02034004415481e-09,2.04064479914466e-09,2.06115362031438e-09,2.08186855856313e-09,2.10279168540194e-09,2.123925093161e-09,2.14527089519864e-09,2.16683122611281e-09,2.18860824195462e-09,2.21060412044375e-09,2.23282106118634e-09,2.25526128589501e-09,2.27792703861091e-09,2.30082058592814e-09,2.32394421722055e-09,2.34730024487047e-09,2.37089100450017e-09,2.39471885520523e-09,2.41878617979053e-09,2.44309538500861e-09,2.46764890180023e-09,2.49244918553746e-09,2.51749871626939e-09,2.54279999896992e-09,2.56835556378835e-09,2.5941679663025e-09,2.62023978777406e-09,2.64657363540694e-09,2.6731721426078e-09,2.70003796924946e-09,2.72717380193702e-09,2.75458235427632e-09,2.78226636714536e-09,2.81022860896856e-09,2.83847187599333e-09,2.86699899256986e-09,2.89581281143362e-09,2.92491621399045e-09,2.9543121106048e-09,2.98400344089088e-09,3.01399317400634e-09,3.04428430894955e-09,3.07487987485918e-09,3.10578293131725e-09,3.1369965686552e-09,3.16852390826272e-09,3.20036810289995e-09,3.23253233701297e-09,3.26501982705191e-09,3.29783382179276e-09,3.33097760266242e-09,3.36445448406645e-09,3.39826781372096e-09,3.43242097298701e-09,3.4669173772089e-09,3.50176047605587e-09,3.53695375386674e-09,3.57250072999855e-09,3.60840495917859e-09,3.64467003185961e-09,3.681299574579e-09,3.71829725032163e-09,3.75566675888581e-09,3.79341183725345e-09,3.83153625996388e-09,3.87004383949102e-09,3.90893842662496e-09,3.94822391085674e-09,3.9879042207674e-09,4.02798332442107e-09,4.06846522976142e-09,4.1093539850126e-09,4.15065367908427e-09,4.19236844198017e-09,4.23450244521122e-09,4.27705990221292e-09,4.32004506876627e-09,4.3634622434238e-09,4.40731576793905e-09,4.4516100277009e-09,4.49634945217229e-09,4.54153851533284e-09,4.58718173612639e-09,4.63328367891313e-09,4.67984895392562e-09,4.72688221773003e-09,4.77438817369202e-09,4.82237157244663e-09,4.87083721237358e-09,4.91978994007733e-09,4.96923465087122e-09,5.0191762892676e-09,5.0696198494718e-09,5.12057037588171e-09,5.17203296359251e-09,5.22401275890569e-09,5.27651495984396e-09,5.32954481667122e-09,5.38310763241718e-09,5.43720876340791e-09,5.49185361980164e-09,5.54704766612931e-09,5.6027964218416e-09,5.65910546186039e-09,5.71598041713641e-09,5.77342697521267e-09,5.83145088079264e-09,5.89005793631508e-09,5.94925400253442e-09,6.00904499910643e-09,6.06943690518041e-09,6.13043575999734e-09,6.19204766349336e-09,6.25427877690993e-09,6.31713532341034e-09,6.38062358870131e-09,6.44474992166234e-09,6.50952073497994e-09,6.57494250578921e-09,6.64102177632181e-09,6.70776515455963e-09,6.77517931489588e-09,6.84327099880283e-09,6.91204701550539e-09,6.98151424266228e-09,7.05167962705418e-09,7.12255018527765e-09,7.19413300444761e-09,7.26643524290538e-09,7.33946413093481e-09,7.41322697148559e-09,7.48773114090298e-09,7.56298408966575e-09,7.63899334313152e-09,7.71576650228869e-09,7.79331124451688e-09,7.87163532435498e-09,7.95074657427593e-09,8.03065290547035e-09,8.111362308638e-09,8.19288285478602e-09,8.27522269603698e-09,8.35839006644333e-09,8.44239328281106e-09,8.52724074553186e-09,8.61294093942236e-09,8.69950243457302e-09,8.78693388720553e-09,8.87524404053764e-09,8.96444172565792e-09,9.05453586240924e-09,9.14553546027984e-09,9.23744961930536e-09,9.33028753097791e-09,9.42405847916563e-09,9.51877184104148e-09,9.61443708802019e-09,9.71106378670575e-09,9.80866159984856e-09,9.90724028731083e-09,1.0006809707043e-08,1.01073798160701e-08,1.02089606714863e-08,1.03115624314613e-08,1.04151953562567e-08,1.05198698092507e-08,1.06255962579757e-08,1.07323852751643e-08,1.08402475398066e-08,1.0949193838219e-08,1.10592350651216e-08,1.11703822247283e-08,1.12826464318476e-08,1.13960389129932e-08,1.15105710075072e-08,1.16262541686944e-08,1.17430999649666e-08,1.18611200810007e-08,1.19803263189062e-08,1.21007305994054e-08,1.22223449630268e-08,1.23451815713074e-08,1.24692527080098e-08,1.25945707803509e-08,1.27211483202418e-08,1.28489979855412e-08,1.29781325613222e-08,1.31085649611491e-08,1.324030822837e-08,1.33733755374213e-08,1.35077801951439e-08,1.36435356421153e-08,1.37806554539926e-08,1.39191533428705e-08,1.40590431586533e-08,1.42003388904381e-08,1.43430546679152e-08,1.4487204762781e-08,1.46328035901643e-08,1.47798657100684e-08,1.49284058288275e-08,1.50784388005762e-08,1.52299796287365e-08,1.53830434675165e-08,1.55376456234269e-08,1.56938015568117e-08,1.58515268833934e-08,1.60108373758352e-08,1.61717489653187e-08,1.63342777431361e-08,1.64984399622995e-08,1.66642520391672e-08,1.68317305550841e-08,1.70008922580403e-08,1.71717540643467e-08,1.73443330603248e-08,1.75186465040177e-08,1.7694711826914e-08,1.78725466356913e-08,1.80521687139784e-08,1.82335960241315e-08,1.84168467090317e-08,1.86019390938995e-08,1.87888916881265e-08,1.89777231871265e-08,1.91684524742064e-08,1.9361098622452e-08,1.95556808966382e-08,1.97522187551531e-08,1.9950731851945e-08,2.01512400384884e-08,2.03537633657674e-08,2.05583220862821e-08,2.07649366560743e-08,2.09736277367716e-08,2.11844161976544e-08,2.13973231177437e-08,2.16123697879072e-08,2.18295777129895e-08,2.20489686139634e-08,2.22705644300995e-08,2.24943873211635e-08,2.27204596696291e-08,2.29488040829176e-08,2.31794433956599e-08,2.34124006719773e-08,2.36476992077898e-08,2.38853625331461e-08,2.41254144145746e-08,2.43678788574614e-08,2.4612780108452e-08,2.48601426578728e-08,2.5109991242184e-08,2.53623508464498e-08,2.56172467068389e-08,2.58747043131483e-08,2.61347494113509e-08,2.63974080061708e-08,2.66627063636851e-08,2.69306710139482e-08,2.72013287536458e-08,2.74747066487759e-08,2.77508320373534e-08,2.80297325321445e-08,2.83114360234295e-08,2.85959706817892e-08,2.88833649609248e-08,2.9173647600501e-08,2.94668476290205e-08,2.9762994366729e-08,3.00621174285438e-08,3.03642467270173e-08,3.06694124753292e-08,3.09776451903055e-08,3.12889756954713e-08,3.16034351241344e-08,3.1921054922496e-08,3.22418668527983e-08,3.25659029964984e-08,3.28931957574768e-08,3.32237778652803e-08,3.35576823783913e-08,3.38949426875355e-08,3.42355925190226e-08,3.45796659381155e-08,3.49271973524388e-08,3.52782215154209e-08,3.56327735297665e-08,3.59908888509682e-08,3.63526032908537e-08,3.67179530211635e-08,3.70869745771721e-08,3.7459704861338e-08,3.78361811469955e-08,3.82164410820837e-08,3.86005226929083e-08,3.89884643879452e-08,3.9380304961684e-08,3.97760835985034e-08,4.01758398765915e-08,4.05796137719058e-08,4.09874456621661e-08,4.13993763308975e-08,4.18154469715045e-08,4.22356991913921e-08,4.26601750161283e-08,4.30889168936435e-08,4.35219676984764e-08,4.39593707360641e-08,4.44011697470685e-08,4.48474089117523e-08,4.52981328543991e-08,4.57533866477722e-08,4.62132158176234e-08,4.66776663472477e-08,4.71467846820775e-08,4.76206177343318e-08,4.80992128877033e-08,4.85826180020987e-08,4.90708814184266e-08,4.95640519634277e-08,5.00621789545594e-08,5.056531220493e-08,5.10735020282754e-08,5.1586799243993e-08,5.21052551822257e-08,5.26289216889898e-08,5.31578511313656e-08,5.36920964027291e-08,5.42317109280432e-08,5.47767486692029e-08,5.53272641304269e-08,5.58833123637101e-08,5.64449489743317e-08,5.70122301264104e-08,5.75852125485237e-08,5.8163953539383e-08,5.8748510973559e-08,5.9338943307271e-08,5.99353095842356e-08,6.05376694415652e-08,6.11460831157384e-08,6.17606114486175e-08,6.23813158935357e-08,6.3008258521445e-08,6.36415020271181e-08,6.42811097354201e-08,6.49271456076445e-08,6.55796742479035e-08,6.62387609095911e-08,6.69044715019116e-08,6.75768725964637e-08,6.82560314339057e-08,6.89420159306725e-08,6.96348946857702e-08,7.03347369876394e-08,7.10416128210778e-08,7.17555928742417e-08,7.24767485457182e-08,7.32051519516588e-08,7.39408759329942e-08,7.46839940627214e-08,7.54345806532551e-08,7.61927107638618e-08,7.69584602081692e-08,7.77319055617402e-08,7.85131241697389e-08,7.93021941546577e-08,8.00991944241329e-08,8.09042046788388e-08,8.1717305420451e-08,8.25385779597005e-08,8.33681044245075e-08,8.42059677681881e-08,8.50522517777525e-08,8.59070410822878e-08,8.67704211614126e-08,8.76424783538342e-08,8.85232998659747e-08,8.94129737806947e-08,9.03115890661057e-08,9.12192355844599e-08,9.21360041011393e-08,9.30619862937369e-08,9.39972747612167e-08,9.49419630331773e-08,9.58961455792089e-08,9.68599178183327e-08,9.78333761285465e-08,9.88166178564668e-08,9.98097413270541e-08,1.00812845853456e-07,1.0182603174693e-07,1.02849400326877e-07,1.0388305393098e-07,1.04927095925426e-07,1.05981630715252e-07,1.07046763754783e-07,1.08122601558178e-07,1.09209251710075e-07,1.10306822876364e-07,1.11415424815037e-07,1.12535168387177e-07,1.13666165568035e-07,1.14808529458233e-07,1.15962374295075e-07,1.17127815463966e-07,1.18304969509949e-07,1.19493954149374e-07,1.20694888281651e-07,1.21907892001148e-07,1.23133086609208e-07,1.24370594626265e-07,1.25620539804106e-07,1.26883047138246e-07,1.28158242880419e-07,1.29446254551217e-07,1.30747210952829e-07,1.32061242181927e-07,1.33388479642679e-07,1.34729056059885e-07,1.36083105492246e-07,1.37450763345783e-07,1.38832166387364e-07,1.40227452758384e-07,1.41636761988589e-07,1.43060235010012e-07,1.44498014171086e-07,1.4595024325086e-07,1.47417067473387e-07,1.48898633522252e-07,1.50395089555226e-07,1.5190658521909e-07,1.53433271664606e-07,1.54975301561618e-07,1.56532829114328e-07,1.58106010076721e-07,1.59695001768127e-07,1.61299963088961e-07,1.62921054536621e-07,1.64558438221519e-07,1.66212277883312e-07,1.67882738907259e-07,1.6956998834077e-07,1.71274194910113e-07,1.72995529037275e-07,1.74734162857013e-07,1.76490270234071e-07,1.78264026780556e-07,1.80055609873503e-07,1.81865198672624e-07,1.83692974138203e-07,1.85539119049214e-07,1.87403818021583e-07,1.89287257526654e-07,1.91189625909845e-07,1.9311111340947e-07,1.95051912175764e-07,1.97012216290116e-07,1.98992221784453e-07,2.00992126660852e-07,2.03012130911354e-07,2.05052436537942e-07,2.07113247572752e-07,2.09194770098482e-07,2.11297212268984e-07,2.134207843301e-07,2.15565698640668e-07,2.17732169693765e-07,2.19920414138167e-07,2.22130650799995e-07,2.24363100704608e-07,2.26617987098714e-07,2.28895535472675e-07,2.31195973583067e-07,2.33519531475467e-07,2.35866441507431e-07,2.3823693837176e-07,2.40631259119944e-07,2.43049643185877e-07,2.45492332409813e-07,2.47959571062528e-07,2.50451605869755e-07,2.52968686036875e-07,2.55511063273806e-07,2.58078991820195e-07,2.60672728470844e-07,2.63292532601376e-07,2.65938666194177e-07,2.68611393864608e-07,2.71310982887442e-07,2.7403770322362e-07,2.76791827547221e-07,2.7957363127274e-07,2.82383392582646e-07,2.85221392455168e-07,2.88087914692413e-07,2.90983245948757e-07,2.93907675759481e-07,2.96861496569742e-07,2.99845003763831e-07,3.02858495694677e-07,3.0590227371372e-07,3.08976642201018e-07,3.12081908595692e-07,3.15218383426689e-07,3.18386380343806e-07,3.21586216149071e-07,3.2481821082843e-07,3.28082687583729e-07,3.31379972865038e-07,3.34710396403317e-07,3.38074291243357e-07,3.41471993777101e-07,3.44903843777298e-07,3.48370184431443e-07,3.51871362376141e-07,3.55407727731731e-07,3.58979634137316e-07,3.62587438786139e-07,3.66231502461276e-07,3.69912189571729e-07,3.73629868188879e-07,3.77384910083267e-07,3.81177690761783e-07,3.85008589505233e-07,3.88877989406235e-07,3.92786277407564e-07,3.96733844340814e-07,4.00721084965494e-07,4.04748398008524e-07,4.08816186204072e-07,4.12924856333845e-07,4.17074819267786e-07,4.21266490005124e-07,4.25500287715891e-07,4.29776635782862e-07,4.34095961843853e-07,4.38458697834502e-07,4.42865280031487e-07,4.47316149096103e-07,4.51811750118385e-07,4.56352532661569e-07,4.60938950807067e-07,4.65571463199899e-07,4.70250533094513e-07,4.74976628401135e-07,4.79750221732578e-07,4.84571790451461e-07,4.89441816717971e-07,4.94360787538095e-07,4.99329194812273e-07,5.04347535384648e-07,5.09416311092697e-07,5.14536028817434e-07,5.19707200534129e-07,5.24930343363451e-07,5.30205979623212e-07,5.35534636880613e-07,5.4091684800496e-07,5.46353151220976e-07,5.5184409016264e-07,5.5739021392751e-07,5.62992077131654e-07,5.68650239965135e-07,5.74365268247975e-07,5.80137733486801e-07,5.85968212931938e-07,5.91857289635164e-07,5.9780555250803e-07,6.03813596380713e-07,6.09882022061514e-07,6.16011436396971e-07,6.22202452332489e-07,6.28455688973663e-07,6.34771771648212e-07,6.41151331968452e-07,6.47595007894529e-07,6.5410344379815e-07,6.60677290527049e-07,6.673172054701e-07,6.74023852622997e-07,6.80797902654687e-07,6.8764003297446e-07,6.94550927799635e-07,7.01531278224012e-07,7.08581782287007e-07,7.15703145043401e-07,7.22896078633873e-07,7.30161302356245e-07,7.37499542737337e-07,7.4491153360571e-07,7.52398016164967e-07,7.59959739067912e-07,7.67597458491441e-07,7.75311938212103e-07,7.831039496825e-07,7.90974272108473e-07,7.98923692526955e-07,8.06953005884704e-07,8.15063015117837e-07,8.23254531232037e-07,8.31528373383754e-07,8.39885368962032e-07,8.48326353671286e-07,8.56852171614906e-07,8.654636753796e-07,8.74161726120683e-07,8.82947193648233e-07,8.91820956513995e-07,9.00783902099276e-07,9.09836926703718e-07,9.18980935634856e-07,9.2821684329868e-07,9.3754557329112e-07,9.46968058490312e-07,9.56485241149992e-07,9.66098072993625e-07,9.7580751530962e-07,9.85614539047501e-07,9.95520124914913e-07,1.00552526347574e-06,1.0156309552492e-06,1.02583821080982e-06,1.03614805088851e-06,1.04656150647472e-06,1.05707961891939e-06,1.06770344003926e-06,1.07843403222188e-06,1.08927246853195e-06,1.10021983281863e-06,1.11127721982387e-06,1.12244573529189e-06,1.13372649607984e-06,1.14512063026937e-06,1.15662927727947e-06,1.1682535879805e-06,1.17999472480915e-06,1.19185386188473e-06,1.20383218512664e-06,1.21593089237285e-06,1.22815119349982e-06,1.24049431054333e-06,1.2529614778208e-06,1.26555394205471e-06,1.2782729624972e-06,1.29111981105605e-06,1.3040957724219e-06,1.31720214419663e-06,1.33044023702317e-06,1.34381137471662e-06,1.35731689439647e-06,1.37095814662054e-06,1.38473649551979e-06,1.39865331893488e-06,1.412710008554e-06,1.42690797005186e-06,1.44124862323037e-06,1.45573340216068e-06,1.47036375532643e-06,1.48514114576869e-06,1.50006705123232e-06,1.51514296431358e-06,1.53037039260952e-06,1.54575085886873e-06,1.56128590114351e-06,1.57697707294386e-06,1.5928259433926e-06,1.60883409738245e-06,1.62500313573448e-06,1.64133467535816e-06,1.65783034941301e-06,1.67449180747208e-06,1.69132071568671e-06,1.70831875695322e-06,1.72548763108128e-06,1.74282905496373e-06,1.76034476274842e-06,1.7780365060115e-06,1.79590605393263e-06,1.81395519347196e-06,1.83218572954869e-06,1.85059948522162e-06,1.86919830187154e-06,1.88798403938521e-06,1.90695857634142e-06,1.92612381019893e-06,1.94548165748606e-06,1.9650340539924e-06,1.98478295496246e-06,2.00473033529106e-06,2.02487818972096e-06,2.0452285330422e-06,2.0657834002936e-06,2.08654484696641e-06,2.10751494920964e-06,2.12869580403775e-06,2.15008952954049e-06,2.17169826509446e-06,2.19352417157721e-06,2.21556943158332e-06,2.23783624964253e-06,2.26032685244039e-06,2.28304348904071e-06,2.30598843111058e-06,2.32916397314758e-06,2.35257243270909e-06,2.3762161506441e-06,2.4000974913274e-06,2.42421884289582e-06,2.44858261748712e-06,2.47319125148132e-06,2.49804720574414e-06,2.52315296587313e-06,2.5485110424464e-06,2.57412397127337e-06,2.59999431364866e-06,2.62612465660794e-06,2.65251761318678e-06,2.67917582268198e-06,2.70610195091537e-06,2.73329869050042e-06,2.76076876111163e-06,2.78851490975627e-06,2.8165399110492e-06,2.84484656749042e-06,2.87343770974505e-06,2.90231619692668e-06,2.93148491688304e-06,2.96094678648487e-06,2.99070475191772e-06,3.02076178897633e-06,3.05112090336229e-06,3.08178513098479e-06,3.11275753826389e-06,3.14404122243729e-06,3.17563931187022e-06,3.20755496636795e-06,3.23979137749192e-06,3.27235176887902e-06,3.30523939656363e-06,3.33845754930356e-06,3.37200954890861e-06,3.4058987505729e-06,3.44012854321045e-06,3.47470234979387e-06,3.50962362769671e-06,3.54489586903938e-06,3.58052260103802e-06,3.6165073863574e-06,3.65285382346729e-06,3.68956554700195e-06,3.72664622812399e-06,3.76409957489113e-06,3.80192933262712e-06,3.84013928429643e-06,3.8787332508822e-06,3.91771509176853e-06,3.9570887051265e-06,3.99685802830369e-06,4.03702703821806e-06,4.07759975175578e-06,4.11858022617256e-06,4.15997255949956e-06,4.20178089095332e-06,4.24400940134927e-06,4.28666231352025e-06,4.32974389273839e-06,4.37325844714176e-06,4.41721032816538e-06,4.46160393097597e-06,4.5064436949116e-06,4.55173410392585e-06,4.59747968703576e-06,4.64368501877491e-06,4.69035471965106e-06,4.73749345660771e-06,4.7851059434913e-06,4.83319694152213e-06,4.88177125977062e-06,4.93083375563843e-06,4.98038933534373e-06,5.03044295441205e-06,5.08099961817199e-06,5.1320643822553e-06,5.18364235310263e-06,5.23573868847439e-06,5.28835859796603e-06,5.3415073435292e-06,5.39519023999816e-06,5.44941265562067e-06,5.50418001259543e-06,5.55949778761371e-06,5.61537151240723e-06,5.67180677430153e-06,5.72880921677419e-06,5.78638454001939e-06,5.84453850151817e-06,5.90327691661357e-06,5.96260565909247e-06,6.02253066177312e-06,6.08305791709782e-06,6.14419347773281e-06,6.20594345717287e-06,6.26831403035292e-06,6.33131143426573e-06,6.39494196858503e-06,6.45921199629572e-06,6.52412794433038e-06,6.58969630421139e-06,6.65592363270032e-06,6.72281655245378e-06,6.79038175268517e-06,6.85862598983376e-06,6.92755608824061e-06,6.99717894083024e-06,7.06750150980072e-06,7.13853082731907e-06,7.21027399622478e-06,7.2827381907403e-06,7.35593065718785e-06,7.42985871471422e-06,7.50452975602301e-06,7.57995124811321e-06,7.65613073302611e-06,7.73307582859978e-06,7.81079422923006e-06,7.88929370664079e-06,7.96858211066014e-06,8.04866737000587e-06,8.12955749307846e-06,8.21126056876121e-06,8.29378476722938e-06,8.3771383407675e-06,8.46132962459384e-06,8.54636703769415e-06,8.63225908366392e-06,8.71901435155784e-06,8.80664151674909e-06,8.89514934179708e-06,8.98454667732282e-06,9.07484246289483e-06,9.16604572792217e-06,9.25816559255769e-06,9.35121126861026e-06,9.44519206046518e-06,9.54011736601482e-06,9.63599667759878e-06,9.73283958295218e-06,9.83065576616476e-06,9.92945500864957e-06,1.00292471901201e-05,1.01300422895791e-05,1.02318503863156e-05,1.0334681660913e-05,1.04385463962675e-05,1.05434549786155e-05,1.06494178985721e-05,1.07564457521813e-05,1.08645492419736e-05,1.09737391780375e-05,1.10840264791001e-05,1.11954221736183e-05,1.13079374008821e-05,1.14215834121284e-05,1.15363715716652e-05,1.16523133580093e-05,1.17694203650322e-05,1.18877043031209e-05,1.20071770003481e-05,1.21278504036549e-05,1.2249736580045e-05,1.23728477177923e-05,1.24971961276582e-05,1.26227942441234e-05,1.27496546266312e-05,1.28777899608425e-05,1.30072130599051e-05,1.31379368657341e-05,1.32699744503062e-05,1.34033390169672e-05,1.35380439017512e-05,1.36741025747142e-05,1.38115286412819e-05,1.39503358436088e-05,1.40905380619526e-05,1.42321493160624e-05,1.437518376658e-05,1.45196557164556e-05,1.46655796123787e-05,1.48129700462214e-05,1.49618417564985e-05,1.51122096298399e-05,1.52640887024799e-05,1.54174941617605e-05,1.55724413476493e-05,1.57289457542735e-05,1.58870230314698e-05,1.60466889863478e-05,1.62079595848709e-05,1.63708509534535e-05,1.65353793805718e-05,1.6701561318394e-05,1.68694133844234e-05,1.70389523631612e-05,1.72101952077846e-05,1.73831590418407e-05,1.75578611609594e-05,1.7734319034583e-05,1.79125503077114e-05,1.80925728026673e-05,1.82744045208784e-05,1.84580636446758e-05,1.86435685391129e-05,1.88309377538016e-05,1.90201900247658e-05,1.92113442763164e-05,1.94044196229414e-05,1.95994353712175e-05,1.97964110217417e-05,1.99953662710789e-05,2.01963210137321e-05,2.03992953441319e-05,2.06043095586443e-05,2.08113841576004e-05,2.10205398473467e-05,2.12317975423134e-05,2.14451783671078e-05,2.16607036586239e-05,2.18783949681765e-05,2.20982740636569e-05,2.23203629317071e-05,2.2544683779919e-05,2.27712590390552e-05,2.300011136529e-05,2.32312636424752e-05,2.34647389844287e-05,2.37005607372437e-05,2.39387524816232e-05,2.41793380352386e-05,2.44223414551087e-05,2.46677870400069e-05,2.49156993328888e-05,2.51661031233458e-05,2.54190234500854e-05,2.56744856034314e-05,2.59325151278538e-05,2.61931378245235e-05,2.6456379753889e-05,2.67222672382833e-05,2.69908268645563e-05,2.72620854867299e-05,2.75360702286855e-05,2.78128084868732e-05,2.80923279330515e-05,2.83746565170546e-05,2.86598224695845e-05,2.89478543050341e-05,2.92387808243387e-05,2.9532631117853e-05,2.98294345682605e-05,3.01292208535114e-05,3.04320199497875e-05,3.07378621344996e-05,3.10467779893155e-05,3.13587984032145e-05,3.16739545755779e-05,3.19922780193055e-05,3.23138005639665e-05,3.26385543589827e-05,3.29665718768398e-05,3.32978859163345e-05,3.36325296058546e-05,3.39705364066879e-05,3.43119401163679e-05,3.46567748720545e-05,3.5005075153942e-05,3.53568757887105e-05,3.5712211953003e-05,3.60711191769437e-05,3.64336333476904e-05,3.67997907130193e-05,3.71696278849492e-05,3.7543181843403e-05,3.79204899399011e-05,3.8301589901296e-05,3.86865198335453e-05,3.90753182255172e-05,3.94680239528393e-05,3.98646762817861e-05,4.02653148731998e-05,4.06699797864591e-05,4.10787114834791e-05,4.14915508327578e-05,4.1908539113462e-05,4.23297180195503e-05,4.27551296639416e-05,4.31848165827269e-05,4.36188217394164e-05,4.40571885292359e-05,4.44999607834659e-05,4.49471827738179e-05,4.53988992168646e-05,4.58551552785047e-05,4.63159965784784e-05,4.678146919493e-05,4.72516196690081e-05,4.77264950095199e-05,4.82061426976313e-05,4.86906106916081e-05,4.91799474316113e-05,4.96742018445405e-05,5.01734233489193e-05,5.06776618598368e-05,5.11869677939379e-05,5.1701392074457e-05,5.22209861363132e-05,5.27458019312456e-05,5.32758919330071e-05,5.38113091426112e-05,5.4352107093624e-05,5.48983398575165e-05,5.54500620490707e-05,5.60073288318325e-05,5.65701959236274e-05,5.71387196021305e-05,5.77129567104852e-05,5.82929646629898e-05,5.88788014508298e-05,5.9470525647875e-05,6.00681964165357e-05,6.06718735136695e-05,6.12816172965555e-05,6.18974887289282e-05,6.2519549387064e-05,6.31478614659374e-05,6.37824877854382e-05,6.44234917966439e-05,6.5070937588162e-05,6.57248898925375e-05,6.63854140927142e-05,6.70525762285756e-05,6.7726443003537e-05,6.84070817912137e-05,6.90945606421553e-05,6.978894829064e-05,7.0490314161545e-05,7.11987283772865e-05,7.19142617648198e-05,7.26369858627192e-05,7.33669729283289e-05,7.41042959449753e-05,7.48490286292672e-05,7.56012454384537e-05,7.63610215778667e-05,7.71284330084377e-05,7.79035564542805e-05,7.868646941036e-05,7.94772501502381e-05,8.02759777338865e-05,8.10827320155893e-05,8.18975936519237e-05,8.27206441098112e-05,8.35519656746602e-05,8.43916414585895e-05,8.52397554087233e-05,8.6096392315587e-05,8.69616378215693e-05,8.78355784294813e-05,8.87183015112016e-05,8.96098953163969e-05,9.05104489813415e-05,9.14200525378252e-05,9.23387969221394e-05,9.32667739841643e-05,9.42040764965481e-05,9.51507981639648e-05,9.61070336324846e-05,9.70728784990186e-05,9.80484293208718e-05,9.90337836253914e-05,0.000100029039919701,0.000101034297700541,0.000102049657464216,0.000103075220716617,0.000104111089983372,0.000105157368820081,0.00010621416182266,0.000107281574637784,0.000108359713973447,0.000109448687609606,0.000110548604408961,0.000111659574327813,0.000112781708427052,0.000113915118883251,0.000115059918999862,0.000116216223218531,0.000117384147130538,0.000118563807488326,0.000119755322217164,0.000120958810426933,0.000122174392424001,0.000123402189723259,0.000124642325060233,0.000125894922403353,0.000127160106966332,0.000128438005220659,0.000129728744908235,0.000131032455054128,0.000132349265979451,0.000133679309314372,0.00013502271801127,0.000136379626357992,0.000137750169991267,0.000139134485910255,0.000140532712490211,0.000141944989496312,0.000143371458097602,0.000144812260881085,0.000146267541865971,0.000147737446518035,0.00014922212176415,0.000150721716006959,0.000152236379139672,0.000153766262561041,0.000155311519190474,0.000156872303483287,0.000158448771446136,0.000160041080652576,0.000161649390258793,0.000163273861019497,0.000164914655303954,0.000166571937112194,0.000168245872091393,0.000169936627552384,0.000171644372486366,0.000173369277581773,0.000175111515241298,0.000176871259599099,0.00017864868653819,0.000180443973707969,0.00018225730054197,0.000184088848275747,0.000185938799964967,0.000187807340503684,0.000189694656642771,0.000191600937008562,0.000193526372121676,0.000195471154416019,0.000197435478257981,0.00019941953996584,0.00020142353782933,0.000203447672129443,0.00020549214515839,0.000207557161239789,0.000209642926749057,0.000211749650133981,0.000213877541935513,0.000216026814808789,0.000218197683544316,0.000220390365089406,0.000222605078569826,0.000224842045311632,0.000227101488863253,0.000229383635017796,0.000231688711835544,0.000234016949666719,0.000236368581174439,0.000238743841357923,0.000241142967575938,0.000243566199570447,0.000246013779490523,0.000248485951916505,0.000250982963884366,0.000253505064910347,0.000256052507015855,0.000258625544752554,0.000261224435227779,0.000263849438130136,0.000266500815755407,0.000269178833032704,0.000271883757550856,0.000274615859585096,0.00027737541212401,0.000280162690896724,0.000282977974400399,0.000285821543927996,0.000288693683596292,0.000291594680374202,0.000294524824111393,0.000297484407567136,0.000300473726439517,0.000303493079394869,0.000306542768097546,0.000309623097239993,0.000312734374573079,0.000315876910936769,0.000319051020291109,0.000322257019747474,0.000325495229600175,0.000328765973358377,0.000332069577778293,0.000335406372895769,0.000338776692059124,0.000342180871962367,0.000345619252678743,0.000349092177694573,0.000352599993943477,0.000356143051840939,0.000359721705319169,0.000363336311862359,0.000366987232542302,0.000370674832054302,0.000374399478753508,0.000378161544691595,0.000381961405653775,0.000385799441196238,0.00038967603468391,0.000393591573328617,0.000397546448227652,0.000401541054402666,0.000405575790838994,0.00040965106052539,0.000413767270494087,0.000417924831861325,0.000422124159868276,0.00042636567392232,0.00043064979763882,0.00043497695888323,0.00043934758981368,0.000443762126923983,0.00044822101108702,0.000452724687598616,0.000457273606221848,0.000461868221231738,0.000466508991460459,0.000471196380342979,0.000475930855963109,0.000480712891100073,0.000485542963275531,0.000490421554801013,0.00049534915282593,0.000500326249385949,0.000505353341451931,0.000510430930979354,0.000515559524958159,0.000520739635463168,0.000525971779704994,0.000531256480081399,0.000536594264229229,0.000541985665076865,0.000547431220897124,0.000552931475360796,0.000558486977590609,0.000564098282215795,0.000569765949427212,0.000575490545032939,0.000581272640514497,0.000587112813083624,0.000593011645739556,0.000598969727326937,0.000604987652594316,0.000611066022253144,0.000617205443037442,0.000623406527764052,0.000629669895393413,0.000635996171091065,0.000642385986289634,0.000648839978751524,0.000655358792632233,0.000661943078544214,0.000668593493621458,0.000675310701584715,0.000682095372807281,0.000688948184381526,0.000695869820186079,0.000702860970953591,0.000709922334339307,0.000717054614990186,0.000724258524614792,0.000731534782053892,0.000738884113351657,0.000746307251827664,0.000753804938149614,0.000761377920406675,0.000769026954183655,0.000776752802635904,0.000784556236564864,0.000792438034494473,0.000800398982748318,0.000808439875527449,0.000816561514989132,0.000824764711326213,0.000833050282847378,0.000841419056058224,0.000849871865743009,0.000858409555047335,0.000867032975561644,0.00087574298740543,0.000884540459312403,0.00089342626871649,0.000902401301838569,0.000911466453774245,0.00092062262858231,0.000929870739374207,0.000939211708404375,0.000948646467161377,0.000958175956460044,0.000967801126534533,0.000977522937132188,0.000987342357608444,0.000997260367022679,0.00100727795423488,0.00101739611800341,0.00102761586708369,0.00103793822032781,0.00104836420678524,0.00105889486580436,0.00106953124713516,0.00108027441103292,0.00109112542836282,0.00110208538070565,0.00111315536046466,0.00112433647097322,0.00113562982660378,0.00114703655287784,0.00115855778657686,0.00117019467585456,0.00118194838034997,0.00119382007130187,0.00120581093166431,0.00121792215622312,0.0012301549517137,0.00124251053694003,0.00125499014289464,0.00126759501287996,0.0012803264026308,0.00129318558043796,0.00130617382727318,0.0013192924369153,0.00133254271607748,0.00134592598453603,0.0013594435752601,0.00137309683454291,0.00138688712213426,0.00140081581137421,0.00141488428932811,0.00142909395692314,0.00144344622908588,0.00145794253488146,0.00147258431765407,0.00148737303516865,0.00150231015975428,0.00151739717844865,0.00153263559314415,0.00154802692073546,0.00156357269326828,0.00157927445808983,0.00159513377800072,0.00161115223140821,0.00162733141248107,0.00164367293130604,0.00166017841404558,0.00167684950309733,0.00169368785725526,0.00171069515187197,0.00172787307902311,0.00174522334767296,0.00176274768384185,0.00178044783077529,0.00179832554911446,0.00181638261706864,0.00183462083058928,0.00185304200354558,0.00187164796790195,0.0018904405738973,0.00190942169022572,0.00192859320421938,0.00194795702203276,0.00196751506882899,0.00198726928896798,0.00200722164619613,0.00202737412383817,0.00204772872499081,0.00206828747271804,0.00208905241024863,0.00211002560117549,0.00213120912965669,0.00215260510061882,0.00217421563996212,0.00219604289476752,0.00221808903350595,0.00224035624624938,0.00226284674488409,0.00228556276332606,0.00230850655773819,0.00233168040674985,0.0023550866116786,0.0023787274967537,0.0024026054093422,0.00242672272017705,0.00245108182358721,0.00247568513773045,0.00250053510482783,0.0025256341914009,0.00255098488851104,0.00257658971200097,0.00260245120273871,0.00262857192686406,0.00265495447603703,0.00268160146768901,0.00270851554527637,0.00273569937853614,0.00276315566374452,0.00279088712397784,0.00281889650937563,0.00284718659740688,0.00287576019313815,0.00290462012950471,0.0029337692675843,0.00296321049687307,0.00299294673556461,0.00302298093083163,0.00305331605910989,0.00308395512638532,0.00311490116848382,0.00314615725136344,0.00317772647140993,0.00320961195573453,0.00324181686247502,0.00327434438109957,0.00330719773271319,0.00334038017036741,0.00337389497937295,0.00340774547761495,0.00344193501587158,0.00347646697813572,0.00351134478193922,0.00354657187868068,0.00358215175395639,0.0036180879278938,0.00365438395548899,0.00369104342694656,0.00372806996802318,0.00376546724037448,0.00380323894190466,0.00384138880711991,0.00387992060748519,0.00391883815178381,0.00395814528648097,0.00399784589609065,0.00403794390354546,0.00407844327057072,0.0041193479980613,0.00416066212646248,0.00420238973615444,0.0042445349478398,0.00428710192293532,0.00433009486396725,0.00437351801496988,0.00441737566188831,0.00446167213298498,0.00450641179924946,0.00455159907481263,0.00459723841736463,0.00464333432857621,0.00468989135452478,0.00473691408612361,0.00478440715955553,0.00483237525671077,0.00488082310562814,0.00492975548094099,0.00497917720432724,0.00502909314496297,0.00507950821998079,0.00513042739493251,0.00518185568425525,0.00523379815174303,0.00528625991102152,0.00533924612602793,0.00539276201149527,0.00544681283344043,0.00550140390965736,0.00555654061021474,0.00561222835795759,0.00566847262901409,0.00572527895330702,0.00578265291506919,0.00584060015336425,0.00589912636261223,0.00595823729311905,0.00601793875161207,0.00607823660177923,0.00613913676481391,0.00620064521996473,0.00626276800508953,0.00632551121721512,0.00638888101310207,0.00645288360981383,0.00651752528529167,0.0065828123789349,0.00664875129218527,0.00671534848911807,0.00678261049703702,0.00685054390707553,0.00691915537480321,0.006988451620837,0.00705843943145853,0.00712912565923706,0.00720051722365695,0.00727262111175163,0.00734544437874321,0.00741899414868677,0.00749327761512127,0.00756830204172618,0.00764407476298288,0.00772060318484342,0.0077978947854035,0.00787595711558249,0.00795479779980933,0.00803442453671349,0.00811484509982286,0.0081960673382678,0.00827809917749018,0.00836094861995971,0.00844462374589635,0.00852913271399791,0.00861448376217556,0.00870068520829401,0.00878774545091915,0.00887567297007219,0.00896447632798905,0.00905416416988746,0.00914474522474051,0.00923622830605573,0.00932862231266181,0.00942193622950219,0.00951617912843397,0.00961136016903492,0.00970748859941719,0.00980457375704657,0.00990262506957066,0.0100016520556519,0.0101016643258089,0.0102026715832649,0.0103046836248021,0.0104077103416238,0.0105117617202245,0.0106168478432653,0.0107229788904582,0.0108301651394573,0.0109384169667559,0.0110477448485938,0.0111581593618688,0.0112696711850576,0.0113822910991447,0.0114960299885562,0.0116108988421037,0.0117269087539354,0.0118440709244932,0.0119623966614792,0.0120818973808298,0.0122025846076962,0.012324469977434,0.012447565236601,0.0125718822439606,0.0126974329714963,0.0128242295054313,0.0129522840472575,0.0130816089147735,0.0132122165431278,0.0133441194858728,0.0134773304160263,0.01361186212714,0.0137477275343772,0.0138849396755995,0.0140235117124597,0.014163456931505,0.0143047887452878,0.014447520693484,0.0145916664440221,0.0147372397942175,0.0148842546719181,0.0150327251366574,0.0151826653808153,0.0153340897307886,0.0154870126481703,0.015641448730936,0.01579741271464,0.0159549194736214,0.0161139840222151,0.0162746215159763,0.0164368472529096,0.0166006766747094,0.0167661253680087,0.0169332090656354,0.0171019436478789,0.0172723451437655,0.0174444297323414,0.0176182137439653,0.0177937136616116,0.0179709461221787,0.0181499279178097,0.0183306759972215,0.0185132074670399,0.0186975395931486,0.0188836898020425,0.0190716756821924,0.0192615149854196,0.019453225628276,0.0196468256934366,0.0198423334311004,0.0200397672603978,0.0202391457708098,0.0204404877235963,0.0206438120532297,0.020849137868843,0.0210564844556815,0.0212658712765669,0.0214773179733701,0.0216908443684909,0.021906470466348,0.0221242164548793,0.0223441027070475,0.0225661497823576,0.0227903784283834,0.0230168095822994,0.023245464372425,0.0234763641197771,0.0237095303396284,0.0239449847430788,0.0241827492386313,0.0244228459337791,0.0246652971366018,0.0249101253573664,0.0251573533101411,0.0254070039144157,0.0256591002967291,0.0259136657923071,0.0261707239467091,0.0264302985174787,0.0266924134758087,0.0269570930082082,0.0272243615181816,0.0274942436279155,0.0277667641799696,0.02804194823898,0.0283198210933687,0.0286004082570586,0.0288837354711984,0.029169828705896,0.0294587141619546,0.0297504182726206,0.0300449677053379,0.0303423893635059,0.0306427103882499,0.0309459581601924,0.0312521603012352,0.0315613446763486,0.0318735393953622,0.0321887728147667,0.0325070735395218,0.0328284704248656,0.033152992578135,0.0334806693605906,0.0338115303892437,0.0341456055386951,0.0344829249429721,0.0348235189973763,0.0351674183603348,0.0355146539552534,0.0358652569723778,0.0362192588706594,0.0365766913796214,0.0369375865012328,0.0373019765117865,0.0376698939637765,0.0380413716877831,0.0384164427943614,0.0387951406759271,0.0391774990086539,0.0395635517543647,0.0399533331624302,0.0403468777716709,0.0407442204122541,0.0411453962075993,0.0415504405762832,0.041959389233942,0.0423722781951786,0.0427891437754708,0.0432100225930736,0.0436349515709303,0.0440639679385741,0.0444971092340354,0.0449344133057472,0.0453759183144447,0.0458216627350678,0.0462716853586621,0.0467260252942718,0.0471847219708354,0.0476478151390783,0.0481153448733966,0.0485873515737421,0.0490638759675038,0.0495449591113783,0.0500306423932441,0.0505209675340219,0.0510159765895349,0.051515711952363,0.0520202163536846,0.052529532865117,0.0530437049005499,0.0535627762179636,0.0540867909212465,0.0546157934620025,0.0551498286413423,0.0556889416116759,0.0562331778784835,0.0567825833020827,0.0573372040993851,0.0578970868456333,0.058462278476133,0.0590328262879716,0.0596087779417169,0.0601901814631085,0.0607770852447342,0.0613695380476845,0.0619675890031986,0.0625712876142937,0.0631806837573692,0.0637958276838057,0.0644167700215335,0.0650435617765904,0.06567625433466,0.0663148994625825,0.0669595493098519,0.0676102564100926,0.0682670736825045,0.0689300544332953,0.0695992523570872,0.0702747215382917,0.0709565164524728,0.0716446919676702,0.0723393033457061,0.0730404062434645,0.0737480567141339,0.0744623112084302,0.0751832265757903,0.0759108600655259,0.0766452693279563,0.0773865124155082,0.0781346477837748,0.0788897342925496,0.079651831206827,0.0804209981977564,0.0811972953435765,0.0819807831304968,0.0827715224535523,0.083569574617419,0.0843750013371809,0.0851878647390655,0.0860082273611394,0.0868361521539504,0.0876717024811369,0.0885149421199942,0.0893659352619827,0.090224746513209,0.0910914408948421,0.091966083843493,0.0928487412115463,0.093739479267431,0.0946383646958506,0.0955454645979632,0.0964608464914956,0.0973845783108164,0.0983167284069539,0.0992573655475463,0.100206558916747,0.101164378115073,0.102130893159178,0.103106174481591,0.104090292930367,0.105083319768696,0.106085326674443,0.107096385739616,0.108116569469779,0.109145950783398,0.11018460301111,0.11123259989493,0.112290015587401,0.113356924650641,0.114433402055357,0.115519523179756,0.116615363808394,0.11772100013096,0.118836508740961,0.119961966634348,0.121097451208062,0.12224304025849,0.123398811979851,0.124564844962501,0.125741218191144,0.126928011042972,0.128125303285719,0.129333175075612,0.130551706955269,0.13178097985147,0.133021075072867,0.134272074307598,0.1355340596208,0.136807113452038,0.138091318612647,0.139386758282962,0.140693516009469,0.142011675701859,0.14334132162997,0.144682538420652,0.146035411054511,0.14740002486257,0.148776465522828,0.150164819056703,0.151565171825381,0.152977610526075,0.154402222188148,0.155839094169158,0.157288314150791,0.158749970134673,0.160224150438087,0.161710943689587,0.163210438824475,0.164722725080209,0.166247891991656,0.167786029386265,0.169337227379122,0.170901576367872,0.172479167027549,0.174070090305295,0.175674437414934,0.17729229983146,0.178923769285407,0.180568937757074,0.182227897470678,0.18390074088834,0.185587560703993,0.187288449837159,0.189003501426592,0.190732808823821,0.192476465586579,0.194234565472081,0.196007202430212,0.197794470596597,0.19959646428552,0.201413277982752,0.203245006338259,0.205091744158761,0.206953586400209,0.208830628160113,0.210722964669759,0.212630691286324,0.214553903484834,0.216492696850035,0.218447167068144,0.220417409918453,0.22240352126484,0.224405597047172,0.226423733272545,0.228458026006468,0.230508571363877,0.232575465500062,0.234658804601488,0.236758684876468,0.238875202545749,0.241008453832993,0.24315853495511,0.245325542112517,0.24750957147928,0.249710719193127,0.251929081345373,0.254164753970749,0.256417833037087,0.258688414434953,0.26097659396713,0.263282467338031,0.265606130143012,0.267947677857565,0.270307205826432,0.27268480925264,0.2750805831864,0.277494622513955,0.27992702194633,0.282377876007975,0.284847279025357,0.287335325115432,0.289842108174063,0.292367721864359,0.294912259604913,0.297475814557989,0.300058479617644,0.302660347397741,0.305281510219936,0.307922060101594,0.310582088743613,0.313261687518223,0.315960947456722,0.318679959237132,0.321418813171847,0.324177599195191,0.326956406850951,0.329755325279888,0.332574443207156,0.33541384892973,0.338273630303798,0.34115387473209,0.344054669151211,0.346976100018954,0.349918253301556,0.352881214460992,0.355865068442198,0.358869899660322,0.361895791987978,0.364942828742447,0.368011092672926,0.371100665947779,0.374211630141754,0.377344066223261,0.380498054541653,0.383673674814497,0.3868710061149,0.390090126858872,0.393331114792666,0.396594046980225,0.3998789997906,0.403186048885457,0.406515269206625,0.409866734963665,0.41324051962152,0.41663669588824,0.420055335702718,0.423496510222534,0.426960289811878,0.430446744029494,0.433955941616779,0.437487950485888,0.441042837707979,0.444620669501554,0.448221511220835,0.451845427344306,0.455492481463339,0.459162736270896,0.462856253550384,0.46657309416462,0.470313318044878,0.474076984180107,0.477864150606264,0.481674874395742,0.485509211647004,0.48936721747428,0.493248945997454,0.497154450332111,0.501083782579674,0.505036993817753,0.509014134090646,0.513015252399956,0.517040396695427,0.521089613865939,0.525162949730633,0.529260449030285,0.533382155418779,0.537528111454827,0.541698358593862,0.545892937180078,0.550111886438713,0.554355244468528,0.558623048234429,0.562915333560346,0.567232135122321,0.571573486441741,0.575939419878844,0.580329966626428,0.584745156703729,0.589185018950592,0.593649581021787,0.598138869381591,0.602652909298614,0.607191724840785,0.611755338870622,0.616343773040741,0.620957047789536,0.625595182337151,0.630258194681693,0.634946101595611,0.639658918622423,0.644396660073574,0.649159339025608,0.653946967317591,0.6587595555487,0.66359711307614,0.668459648013288,0.673347167228038,0.678259676341448,0.683197179726636,0.688159680507867,0.693147180559945,0.698159680507865,0.703197179726632,0.708259676341449,0.713347167228037,0.718459648013285,0.723597113076142,0.728759555548701,0.733946967317589,0.739159339025612,0.744396660073575,0.749658918622423,0.754946101595616,0.760258194681688,0.765595182337152,0.770957047789535,0.776343773040738,0.781755338870624,0.787191724840786,0.792652909298612,0.798138869381593,0.803649581021788,0.809185018950591,0.814745156703733,0.820329966626431,0.825939419878844,0.83157348644174,0.837232135122317,0.842915333560347,0.848623048234429,0.854355244468525,0.860111886438716,0.86589293718008,0.87169835859386,0.877528111454831,0.883382155418782,0.889260449030284,0.895162949730638,0.901089613865935,0.907040396695427,0.913015252399956,0.919014134090642,0.925036993817755,0.931083782579676,0.937154450332108,0.943248945997457,0.949367217474282,0.955509211647003,0.961674874395746,0.967864150606267,0.974076984180107,0.980313318044878,0.986573094164616,0.992856253550385,0.999162736270897,1.00549248146334,1.01184542734431,1.01822151122084,1.02462066950155,1.03104283770798,1.03748795048589,1.04395594161678,1.0504467440295,1.05696028981187,1.06349651022253,1.07005533570272,1.07663669588824,1.08324051962152,1.08986673496367,1.09651526920662,1.10318604888546,1.1098789997906,1.11659404698022,1.12333111479267,1.13009012685888,1.1368710061149,1.1436736748145,1.15049805454165,1.15734406622326,1.16421163014176,1.17110066594778,1.17801109267293,1.18494282874245,1.19189579198798,1.19886989966033,1.2058650684422,1.21288121446099,1.21991825330156,1.22697610001895,1.23405466915121,1.24115387473209,1.2482736303038,1.25541384892973,1.26257444320716,1.26975532527989,1.27695640685095,1.28417759919519,1.29141881317185,1.29867995923714,1.30596094745673,1.31326168751822,1.32058208874361,1.32792206010159,1.33528151021994,1.34266034739774,1.35005847961764,1.35747581455799,1.36491225960492,1.37236772186436,1.37984210817407,1.38733532511544,1.39484727902536,1.40237787600798,1.40992702194633,1.41749462251396,1.4250805831864,1.43268480925264,1.44030720582643,1.44794767785757,1.45560613014301,1.46328246733803,1.47097659396713,1.47868841443495,1.48641783303709,1.49416475397075,1.50192908134537,1.50971071919313,1.51750957147928,1.52532554211252,1.53315853495511,1.54100845383299,1.54887520254575,1.55675868487647,1.56465880460149,1.57257546550007,1.58050857136388,1.58845802600647,1.59642373327255,1.60440559704717,1.61240352126484,1.62041740991846,1.62844716706814,1.63649269685004,1.64455390348484,1.65263069128632,1.66072296466976,1.66883062816012,1.67695358640021,1.68509174415876,1.69324500633827,1.70141327798275,1.70959646428552,1.71779447059659,1.72600720243021,1.73423456547208,1.74247646558658,1.75073280882382,1.7590035014266,1.76728844983716,1.775587560704,1.78390074088835,1.79222789747068,1.80056893775708,1.8089237692854,1.81729229983146,1.82567443741494,1.83407009030529,1.84247916702755,1.85090157636788,1.85933722737912,1.86778602938627,1.87624789199166,1.88472272508021,1.89321043882448,1.90171094368959,1.91022415043809,1.91874997013468,1.92728831415079,1.93583909416916,1.94440222218815,1.95297761052607,1.96156517182538,1.97016481905671,1.97877646552283,1.98740002486257,1.99603541105452,2.00468253842065,2.01334132162997,2.02201167570185,2.03069351600947,2.03938675828297,2.04809131861264,2.05680711345204,2.06553405962081,2.0742720743076,2.08302107507287,2.09178097985148,2.10055170695527,2.10933317507562,2.11812530328573,2.12692801104297,2.13574121819115,2.1445648449625,2.15339881197985,2.16224304025849,2.17109745120806,2.17996196663435,2.18883650874097,2.19772100013096,2.2066153638084,2.21551952317976,2.22443340205536,2.23335692465065,2.2422900155874,2.25123259989493,2.26018460301111,2.2691459507834,2.27811656946978,2.28709638573962,2.29608532667444,2.3050833197687,2.31409029293037,2.32310617448159,2.33213089315918,2.34116437811508,2.35020655891675,2.35925736554755,2.36831672840695,2.37738457831082,2.3864608464915,2.39554546459796,2.40463836469585,2.41373947926744,2.42284874121154,2.4319660838435,2.44109144089485,2.45022474651321,2.45936593526199,2.46851494211999,2.47767170248114,2.48683615215396,2.49600822736114,2.50518786473907,2.51437500133719,2.52356957461742,2.53277152245355,2.5419807831305,2.55119729534358,2.56042099819776,2.56965183120683,2.57888973429255,2.58813464778378,2.5973865124155,2.60664526932796,2.61591086006553,2.62518322657579,2.63446231120843,2.64374805671414,2.65304040624346,2.66233930334571,2.67164469196768,2.68095651645247,2.6902747215383,2.69959925235708,2.7089300544333,2.71826707368251,2.72761025641009,2.73695954930985,2.74631489946259,2.75567625433466,2.76504356177659,2.77441677002154,2.7837958276838,2.79318068375737,2.8025712876143,2.8119675890032,2.82136953804769,2.83077708524473,2.84019018146311,2.84960877794172,2.85903282628797,2.86846227847614,2.87789708684564,2.88733720409938,2.89678258330209,2.90623317787849,2.91568894161168,2.92514982864135,2.934615793462,2.94408679092125,2.95356277621797,2.96304370490055,2.97252953286512,2.98202021635369,2.99151571195236,3.00101597658954,3.01052096753403,3.02003064239324,3.02954495911138,3.03906387596751,3.04858735157374,3.0581153448734,3.06764781513907,3.07718472197084,3.08672602529428,3.09627168535866,3.10582166273507,3.11537591831445,3.12493441330575,3.13449710923404,3.14406396793858,3.15363495157093,3.16321002259308,3.17278914377547,3.18237227819518,3.19195938923395,3.20155044057628,3.2111453962076,3.22074422041226,3.23034687777167,3.23995333316243,3.24956355175437,3.25917749900865,3.26879514067593,3.27841644279437,3.28804137168778,3.29766989396378,3.30730197651178,3.31693758650123,3.32657669137963,3.33621925887066,3.34586525697238,3.35551465395526,3.36516741836033,3.37482351899738,3.38448292494298,3.39414560553869,3.40381153038925,3.41348066936059,3.42315299257814,3.43282847042487,3.44250707353952,3.45218877281477,3.46187353939537,3.47156134467635,3.48125216030124,3.4909459581602,3.50064271038825,3.51034238936351,3.52004496770535,3.52975041827262,3.53945871416196,3.54916982870589,3.5588837354712,3.56860040825706,3.57831982109337,3.58804194823898,3.59776676417998,3.60749424362791,3.61722436151818,3.62695709300822,3.63669241347581,3.64643029851748,3.6561707239467,3.66591366579231,3.67565910029673,3.68540700391441,3.69515735331014,3.70491012535737,3.7146652971366,3.72442284593378,3.73418274923864,3.74394498474308,3.75370953033963,3.76347636411979,3.77324546437243,3.7830168095823,3.79279037842838,3.80256614978236,3.81234410270705,3.82212421645488,3.83190647046635,3.8416908443685,3.85147731797337,3.86126587127657,3.87105648445569,3.88084913786884,3.89064381205323,3.90044048772359,3.91023914577081,3.9200397672604,3.9298423334311,3.93964682569344,3.94945322562828,3.95926151498542,3.9690716756822,3.97888368980205,3.98869753959315,3.99851320746704,4.00833067599723,4.01814992791781,4.02797094612218,4.03779371366161,4.04761821374397,4.05744442973235,4.06727234514376,4.07710194364788,4.08693320906564,4.09676612536801,4.10660067667471,4.11643684725292,4.12627462151598,4.13611398402222,4.14595491947362,4.15579741271464,4.16564144873094,4.17548701264817,4.18533408973079,4.19518266538082,4.20503272513665,4.21488425467192,4.22473723979423,4.23459166644402,4.24444752069349,4.2543047887453,4.26416345693151,4.27402351171246,4.2838849396756,4.29374772753438,4.30361186212715,4.31347733041602,4.32334411948588,4.33321221654314,4.34308160891477,4.35295228404726,4.36282422950544,4.3726974329715,4.38257188224397,4.3924475652366,4.40232446997743,4.4122025846077,4.42208189738083,4.43196239666148,4.4418440709245,4.45172690875393,4.46161089884211,4.47149602998856,4.48138229109914,4.49126967118506,4.50115815936188,4.51104774484859,4.52093841696676,4.53083016513945,4.54072297889046,4.55061684784327,4.56051176172022,4.57040771034163,4.58030468362481,4.59020267158326,4.60010166432581,4.61000165205566,4.61990262506957,4.62980457375705,4.63970748859941,4.64961136016904,4.65951617912844,4.6694219362295,4.67932862231266,4.68923622830606,4.69914474522474,4.70905416416989,4.718964476328,4.72887567297007,4.73878774545092,4.7487006852083,4.75861448376218,4.768529132714,4.77844462374589,4.78836094861996,4.7982780991775,4.80819606733827,4.81811484509983,4.82803442453672,4.83795479779981,4.84787595711559,4.85779789478541,4.86772060318484,4.87764407476299,4.88756830204172,4.89749327761512,4.90741899414869,4.91734544437874,4.92727262111175,4.93720051722366,4.94712912565923,4.95705843943146,4.96698845162085,4.9769191553748,4.98685054390708,4.99678261049705,5.00671534848912,5.01664875129219,5.02658281237893,5.03651752528529,5.04645288360982,5.0563888810131,5.06632551121722,5.0762627680051,5.08620064521996,5.09613913676482,5.10607823660179,5.11601793875161,5.12595823729312,5.13589912636261,5.14584060015336,5.15578265291508,5.1657252789533,5.17566847262902,5.18561222835796,5.19555654061021,5.20550140390966,5.21544681283345,5.22539276201149,5.23533924612603,5.24528625991103,5.25523379815174,5.26518185568426,5.27513042739493,5.28507950821998,5.29502909314497,5.30497917720432,5.31492975548094,5.32488082310564,5.33483237525671,5.34478440715956,5.35473691408613,5.36468989135452,5.37464333432858,5.38459723841736,5.39455159907481,5.40450641179925,5.41446167213298,5.42441737566189,5.43437351801498,5.44433009486396,5.45428710192294,5.46424453494785,5.47420238973615,5.48416066212647,5.49411934799807,5.50407844327057,5.51403794390355,5.52399784589609,5.53395814528648,5.54391883815179,5.55387992060748,5.56384138880712,5.57380323894191,5.58376546724037,5.59372806996803,5.60369104342695,5.61365438395549,5.6236180879279,5.63358215175395,5.64354657187868,5.65351134478195,5.66347646697813,5.67344193501587,5.68340774547762,5.69337389497937,5.70334038017037,5.71330719773272,5.7232743443811,5.73324181686248,5.74320961195574,5.75317772647141,5.76314615725137,5.77311490116848,5.78308395512639,5.79305331605912,5.80302298093083,5.81299294673557,5.82296321049688,5.83293376926758,5.84290462012951,5.85287576019315,5.86284718659741,5.87281889650938,5.88279088712397,5.89276315566375,5.90273569937854,5.91270851554527,5.92268160146769,5.93265495447604,5.94262857192686,5.95260245120274,5.96257658971201,5.97255098488851,5.98252563419141,5.99250053510484,6.00247568513773,6.01245108182359,6.02242672272017,6.03240260540934,6.04237872749676,6.05235508661168,6.06233168040675,6.07230850655775,6.08228556276332,6.09226284674489,6.10224035624626,6.11221808903351,6.12219604289477,6.13217421563996,6.14215260510062,6.15213120912966,6.16211002560117,6.17208905241025,6.18206828747272,6.19204772872499,6.20202737412384,6.2120072216462,6.22198726928897,6.23196751506883,6.24194795702204,6.25192859320422,6.26190942169023,6.27189044057389,6.2818716479679,6.29185304200355,6.30183462083059,6.31181638261707,6.32179832554912,6.33178044783077,6.34176274768385,6.35174522334768,6.36172787307902,6.37171069515188,6.38169368785725,6.3916768495031,6.40166017841405,6.4116436729313,6.42162733141248,6.43161115223142,6.441595133778,6.45157927445809,6.46156357269328,6.47154802692073,6.48153263559315,6.49151739717846,6.50150231015975,6.51148737303517,6.52147258431765,6.53145794253488,6.54144344622909,6.55142909395692,6.56141488428933,6.57140081581138,6.58138688712213,6.59137309683455,6.60135944357527,6.61134592598454,6.62133254271608,6.63131929243691,6.64130617382727,6.65129318558044,6.66128032640263,6.67126759501288,6.6812549901429,6.69124251053694,6.70123015495172,6.71121792215623,6.72120581093166,6.73119382007131,6.74118194838036,6.75117019467585,6.76115855778658,6.77114703655287,6.78113562982661,6.79112433647098,6.80111315536046,6.81110208538071,6.82109112542837,6.83108027441103,6.84106953124714,6.85105889486581,6.86104836420678,6.87103793822033,6.88102761586708,6.891017396118,6.90100727795424,6.91099726036702,6.92098734235761,6.93097752293714,6.94096780112653,6.95095817595646,6.96094864646717,6.9709392117084,6.98092987073938,6.99092062262859,7.00091146645377,7.01090240130184,7.02089342626871,7.03088454045931,7.04087574298741,7.05086703297556,7.06085840955505,7.07084987186575,7.08084141905606,7.09083305028285,7.10082476471133,7.11081656151499,7.12080843987553,7.13080039898274,7.1407924380345,7.15078455623657,7.16077675280263,7.17076902695419,7.18076137792041,7.19075380493815,7.20074630725183,7.21073888411336,7.22073153478205,7.23072425852462,7.240717054615,7.25070992233434,7.26070286097096,7.27069586982018,7.28068894818438,7.29068209537281,7.30067531070158,7.31066859349362,7.32066194307855,7.33065535879263,7.34064883997875,7.3506423859863,7.36063599617109,7.3706296698954,7.38062340652776,7.39061720544304,7.40061106602226,7.41060498765259,7.42059896972733,7.43059301164575,7.44058711281308,7.45058127264052,7.46057549054504,7.47056976594943,7.48056409828222,7.4905584869776,7.50055293147536,7.5105474312209,7.52054198566507,7.53053659426423,7.54053125648009,7.5505259717797,7.56052073963547,7.57051555952497,7.58051043093098,7.59050535334146,7.60050032624939,7.61049534915283,7.62049042155481,7.63048554296327,7.6404807128911,7.65047593085597,7.66047119638034,7.67046650899146,7.68046186822124,7.69045727360622,7.7004527246876,7.7104482210111,7.72044376212692,7.73043934758982,7.74043497695889,7.75043064979764,7.76042636567393,7.77042212415986,7.78041792483186,7.7904137672705,7.80040965106052,7.81040557579084,7.82040154105441,7.83039754644823,7.84039359157333,7.85038967603469,7.8603857994412,7.87038196140566,7.88037816154469,7.89037439947875,7.90037067483206,7.91036698723254,7.92036333631186,7.93035972170533,7.94035614305184,7.95035259999395,7.9603490921777,7.97034561925268,7.98034218087197,7.99033877669207,8.0003354063729,8.01033206957778,8.02032876597336,8.0303254952296,8.04032225701975,8.05031905102029,8.06031587691094,8.07031273437458,8.08030962309724,8.0903065427681,8.1003034930794,8.11030047372644,8.12029748440757,8.13029452482411,8.14029159468038,8.1502886936836,8.16028582154392,8.1702829779744,8.1802801626909,8.19027737541212,8.20027461585959,8.21027188375756,8.22026917883303,8.23026650081576,8.24026384943814,8.25026122443523,8.26025862554476,8.27025605250701,8.28025350506491,8.29025098296389,8.30024848595191,8.31024601377949,8.32024356619958,8.33024114296757,8.34023874384136,8.35023636858118,8.36023401694967,8.37023168871184,8.38022938363501,8.39022710148886,8.40022484204532,8.41022260507857,8.42022039036509,8.43021819768355,8.44021602681481,8.45021387754194,8.46021174965014,8.47020964292675,8.48020755716124,8.49020549214517,8.50020344767213,8.51020142353783,8.52019941953996,8.53019743547826,8.54019547115442,8.55019352637212,8.56019160093701,8.57018969465665,8.5801878073405,8.59018593879997,8.60018408884828,8.61018225730054,8.62018044397371,8.63017864868653,8.6401768712596,8.65017511151525,8.66017336927758,8.67017164437249,8.68016993662756,8.69016824587209,8.70016657193712,8.71016491465531,8.72016327386102,8.73016164939026,8.74016004108066,8.75015844877145,8.76015687230349,8.77015531151919,8.78015376626256,8.79015223637915,8.800150721716,8.81014922212177,8.82014773744653,8.83014626754186,8.84014481226088,8.85014337145811,8.8601419449895,8.8701405327125,8.8801391344859,8.89013775016999,8.90013637962636,8.91013502271801,8.92013367930932,8.93013234926599,8.94013103245505,8.95012972874491,8.96012843800523,8.97012716010697,8.98012589492241,8.99012464232507,9.00012340218972,9.01012217439243,9.02012095881042,9.03011975532222,9.04011856380749,9.05011738414713,9.06011621622322,9.07011505991901,9.08011391511888,9.09011278170843,9.10011165957434,9.11011054860441,9.12010944868761,9.13010835971397,9.14010728157464,9.15010621416183,9.16010515736882,9.17010411108999,9.18010307522072,9.19010204965746,9.2001010342977,9.21010002903993,9.22009903378362,9.23009804842932,9.24009707287851,9.25009610703363,9.26009515079817,9.27009420407649,9.28009326677399,9.29009233879693,9.30009142005254,9.31009051044898,9.32008960989532,9.33008871830151,9.34008783557843,9.35008696163783,9.36008609639232,9.37008523975541,9.38008439164145,9.39008355196568,9.40008272064412,9.41008189759365,9.42008108273202,9.43008027597774,9.44007947725015,9.45007868646941,9.46007790355646,9.47007712843301,9.48007636102158,9.49007560124545,9.50007484902863,9.51007410429595,9.52007336697292,9.53007263698586,9.54007191426177,9.55007119872838,9.56007049031416,9.5700697889483,9.58006909456064,9.59006840708179,9.60006772644301,9.61006705257623,9.6200663854141,9.63006572488989,9.64006507093759,9.6500644234918,9.66006378248778,9.67006314786147,9.68006251954939,9.69006189748873,9.7000612816173,9.71006067187352,9.72006006819642,9.73005947052565,9.74005887880146,9.75005829296466,9.76005771295672,9.7700571387196,9.78005657019592,9.79005600732884,9.80005545006205,9.81005489833986,9.8200543521071,9.83005381130914,9.84005327589194,9.85005274580194,9.86005222098614,9.87005170139208,9.88005118696779,9.89005067766186,9.90005017342335,9.91004967420184,9.92004917994743,9.9300486906107,9.94004820614269,9.95004772649501,9.96004725161968,9.97004678146919,9.98004631599658,9.99004585515529,10.0000453988992,10.0100449471828,10.0200444999608,10.0300440571885,10.0400436188217,10.0500431848166,10.0600427551297,10.070042329718,10.0800419085391,10.0900414915508,10.1000410787115,10.1100406699798,10.1200402653149,10.1300398646763,10.140039468024,10.1500390753182,10.1600386865198,10.1700383015899,10.1800379204899,10.1900375431818,10.2000371696279,10.2100367997907,10.2200364336333,10.2300360711192,10.240035712212,10.2500353568758,10.2600350050752,10.2700346567749,10.2800343119401,10.2900339705364,10.3000336325296,10.3100332978859,10.3200329665719,10.3300326385544,10.3400323138006,10.350031992278,10.3600316739546,10.3700313587984,10.380031046778,10.3900307378621,10.40003043202,10.4100301292208,10.4200298294346,10.4300295326311,10.4400292387808,10.4500289478543,10.4600286598225,10.4700283746565,10.4800280923279,10.4900278128085,10.5000275360702,10.5100272620855,10.5200269908269,10.5300267222672,10.5400264563798,10.5500261931378,10.5600259325151,10.5700256744856,10.5800254190234,10.5900251661031,10.6000249156993,10.610024667787,10.6200244223415,10.630024179338,10.6400239387525,10.6500237005607,10.660023464739,10.6700232312636,10.6800230001114,10.690022771259,10.7000225446838,10.7100223203629,10.7200220982741,10.730021878395,10.7400216607037,10.7500214451784,10.7600212317975,10.7700210205398,10.7800208113842,10.7900206043096,10.8000203992953,10.810020196321,10.8200199953663,10.830019796411,10.8400195994354,10.8500194044196,10.8600192113443,10.87001902019,10.8800188309377,10.8900186435685,10.9000184580637,10.9100182744045,10.9200180925728,10.9300179125503,10.940017734319,10.9500175578612,10.960017383159,10.9700172101952,10.9800170389524,10.9900168694134,11.0000167015613,11.0100165353794,11.0200163708509,11.0300162079596,11.040016046689,11.050015887023,11.0600157289458,11.0700155724414,11.0800154174942,11.0900152640887,11.1000151122096,11.1100149618418,11.1200148129701,11.1300146655796,11.1400145196557,11.1500143751838,11.1600142321493,11.1700140905381,11.1800139503358,11.1900138115286,11.2000136741026,11.2100135380439,11.220013403339,11.2300132699745,11.2400131379369,11.2500130072131,11.26001287779,11.2700127496546,11.2800126227942,11.2900124971961,11.3000123728477,11.3100122497366,11.3200121278504,11.330012007177,11.3400118877043,11.3500117694204,11.3600116523134,11.3700115363716,11.3800114215834,11.3900113079374,11.4000111954222,11.4100110840265,11.4200109737392,11.4300108645492,11.4400107564457,11.4500106494179,11.460010543455,11.4700104385464,11.4800103346817,11.4900102318504,11.5000101300423,11.5100100292472,11.520009929455,11.5300098306558,11.5400097328396,11.5500096359967,11.5600095401174,11.5700094451921,11.5800093512113,11.5900092581656,11.6000091660457,11.6100090748425,11.6200089845467,11.6300088951493,11.6400088066415,11.6500087190144,11.6600086322591,11.670008546367,11.6800084613296,11.6900083771383,11.7000082937848,11.7100082112606,11.7200081295575,11.7300080486674,11.7400079685821,11.7500078892937,11.7600078107942,11.7700077330758,11.7800076561307,11.7900075799513,11.8000075045298,11.8100074298587,11.8200073559307,11.8300072827382,11.840007210274,11.8500071385308,11.8600070675015,11.8700069971789,11.8800069275561,11.890006858626,11.9000067903818,11.9100067228165,11.9200066559236,11.9300065896963,11.9400065241279,11.950006459212,11.960006394942,11.9700063313114,11.980006268314,11.9900062059435,12.0000061441935,12.0100060830579,12.0200060225307,12.0300059626057,12.0400059032769,12.0500058445385,12.0600057863845,12.0700057288092,12.0800056718068,12.0900056153715,12.1000055594978,12.11000550418,12.1200054494127,12.1300053951902,12.1400053415073,12.1500052883586,12.1600052357387,12.1700051836424,12.1800051320644,12.1900050809996,12.200005030443,12.2100049803893,12.2200049308338,12.2300048817713,12.240004833197,12.2500047851059,12.2600047374935,12.2700046903547,12.280004643685,12.2900045974797,12.3000045517341,12.3100045064437,12.3200044616039,12.3300044172103,12.3400043732585,12.3500043297439,12.3600042866623,12.3700042440094,12.3800042017809,12.3900041599726,12.4000041185802,12.4100040775997,12.420004037027,12.430003996858,12.4400039570887,12.4500039177151,12.4600038787333,12.4700038401393,12.4800038019293,12.4900037640996,12.5000037266462,12.5100036895656,12.5200036528538,12.5300036165074,12.5400035805226,12.5500035448959,12.5600035096236,12.5700034747024,12.5800034401285,12.5900034058988,12.6000033720096,12.6100033384575,12.6200033052394,12.6300032723518,12.6400032397914,12.650003207555,12.6600031756393,12.6700031440412,12.6800031127575,12.6900030817851,12.7000030511209,12.7100030207618,12.7200029907048,12.7300029609468,12.7400029314849,12.7500029023162,12.7600028734377,12.7700028448466,12.7800028165399,12.7900027885149,12.8000027607688,12.8100027332987,12.820002706102,12.8300026791758,12.8400026525176,12.8500026261247,12.8600025999943,12.870002574124,12.880002548511,12.890002523153,12.9000024980472,12.9100024731912,12.9200024485826,12.9300024242189,12.9400024000975,12.9500023762162,12.9600023525724,12.970002329164,12.9800023059884,12.9900022830435,13.0000022603269,13.0100022378363,13.0200022155694,13.0300021935242,13.0400021716983,13.0500021500895,13.0600021286958,13.070002107515,13.0800020865448,13.0900020657834,13.1000020452285,13.1100020248782,13.1200020047303,13.130001984783,13.1400019650341,13.1500019454817,13.1600019261238,13.1700019069586,13.180001887984,13.1900018691983,13.2000018505995,13.2100018321857,13.2200018139552,13.2300017959061,13.2400017780365,13.2500017603448,13.2600017428291,13.2700017254876,13.2800017083188,13.2900016913207,13.3000016744918,13.3100016578304,13.3200016413347,13.3300016250031,13.3400016088341,13.350001592826,13.3600015769771,13.3700015612859,13.3800015457509,13.3900015303704,13.400001515143,13.410001500067,13.4200014851411,13.4300014703638,13.4400014557334,13.4500014412486,13.460001426908,13.47000141271,13.4800013986533,13.4900013847365,13.5000013709581,13.5100013573169,13.5200013438114,13.5300013304402,13.5400013172022,13.5500013040958,13.5600012911198,13.570001278273,13.5800012655539,13.5900012529615,13.6000012404943,13.6100012281512,13.6200012159309,13.6300012038322,13.6400011918539,13.6500011799947,13.6600011682536,13.6700011566293,13.6800011451206,13.6900011337265,13.7000011224457,13.7100011112772,13.7200011002198,13.7300010892725,13.740001078434,13.7500010677034,13.7600010570796,13.7700010465615,13.7800010361481,13.7900010258382,13.800001015631,13.8100010055253,13.8200009955201,13.8300009856145,13.8400009758075,13.8500009660981,13.8600009564852,13.8700009469681,13.8800009375456,13.8900009282168,13.9000009189809,13.9100009098369,13.9200009007839,13.930000891821,13.9400008829472,13.9500008741617,13.9600008654637,13.9700008568522,13.9800008483264,13.9900008398854,14.0000008315284,14.0100008232545,14.020000815063,14.030000806953,14.0400007989237,14.0500007909743,14.060000783104,14.0700007753119,14.0800007675975,14.0900007599597,14.100000752398,14.1100007449115,14.1200007374995,14.1300007301613,14.1400007228961,14.1500007157032,14.1600007085818,14.1700007015313,14.1800006945509,14.19000068764,14.2000006807979,14.2100006740239,14.2200006673172,14.2300006606773,14.2400006541035,14.250000647595,14.2600006411513,14.2700006347718,14.2800006284557,14.2900006222025,14.3000006160114,14.310000609882,14.3200006038136,14.3300005978056,14.3400005918573,14.3500005859682,14.3600005801377,14.3700005743653,14.3800005686502,14.3900005629921,14.4000005573902,14.4100005518441,14.4200005463532,14.4300005409169,14.4400005355346,14.450000530206,14.4600005249304,14.4700005197072,14.480000514536,14.4900005094163,14.5000005043475,14.5100004993292,14.5200004943608,14.5300004894418,14.5400004845718,14.5500004797502,14.5600004749766,14.5700004702505,14.5800004655715,14.590000460939,14.6000004563525,14.6100004518118,14.6200004473162,14.6300004428653,14.6400004384587,14.650000434096,14.6600004297766,14.6700004255003,14.6800004212665,14.6900004170748,14.7000004129249,14.7100004088162,14.7200004047484,14.7300004007211,14.7400003967339,14.7500003927863,14.760000388878,14.7700003850086,14.7800003811777,14.7900003773849,14.8000003736299,14.8100003699122,14.8200003662315,14.8300003625874,14.8400003589796,14.8500003554077,14.8600003518714,14.8700003483702,14.8800003449038,14.890000341472,14.9000003380743,14.9100003347104,14.92000033138,14.9300003280827,14.9400003248182,14.9500003215862,14.9600003183864,14.9700003152184,14.9800003120819,14.9900003089767,15.0000003059023,15.0100003028585,15.020000299845,15.0300002968615,15.0400002939077,15.0500002909832,15.0600002880879,15.0700002852214,15.0800002823834,15.0900002795736,15.1000002767918,15.1100002740377,15.120000271311,15.1300002686114,15.1400002659387,15.1500002632925,15.1600002606727,15.170000258079,15.1800002555111,15.1900002529687,15.2000002504516,15.2100002479596,15.2200002454923,15.2300002430496,15.2400002406313,15.2500002382369,15.2600002358664,15.2700002335195,15.280000231196,15.2900002288955,15.300000226618,15.3100002243631,15.3200002221307,15.3300002199204,15.3400002177322,15.3500002155657,15.3600002134208,15.3700002112972,15.3800002091948,15.3900002071132,15.4000002050524,15.4100002030121,15.4200002009921,15.4300001989922,15.4400001970122,15.4500001950519,15.4600001931111,15.4700001911896,15.4800001892873,15.4900001874038,15.5000001855391,15.510000183693,15.5200001818652,15.5300001800556,15.540000178264,15.5500001764903,15.5600001747342,15.5700001729955,15.5800001712742,15.59000016957,15.6000001678827,15.6100001662123,15.6200001645584,15.630000162921,15.6400001613,15.650000159695,15.660000158106,15.6700001565328,15.6800001549753,15.6900001534333,15.7000001519066,15.7100001503951,15.7200001488986,15.7300001474171,15.7400001459503,15.750000144498,15.7600001430602,15.7700001416368,15.7800001402275,15.7900001388322,15.8000001374508,15.8100001360831,15.8200001347291,15.8300001333885,15.8400001320612,15.8500001307472,15.8600001294463,15.8700001281582,15.880000126883,15.8900001256205,15.9000001243706,15.9100001231331,15.9200001219079,15.9300001206949,15.940000119494,15.950000118305,15.9600001171278,15.9700001159624,15.9800001148085,15.9900001136662,16.0000001125352,16.0100001114154,16.0200001103068,16.0300001092093,16.0400001081226,16.0500001070468,16.0600001059816,16.0700001049271,16.0800001038831,16.0900001028494,16.100000101826,16.1100001008128,16.1200000998097,16.1300000988166,16.1400000978334,16.1500000968599,16.1600000958961,16.170000094942,16.1800000939973,16.190000093062,16.200000092136,16.2100000912192,16.2200000903116,16.230000089413,16.2400000885233,16.2500000876425,16.2600000867704,16.270000085907,16.2800000850523,16.290000084206,16.3000000833681,16.3100000825386,16.3200000817173,16.3300000809042,16.3400000800992,16.3500000793022,16.3600000785131,16.3700000777319,16.3800000769585,16.3900000761927,16.4000000754346,16.410000074684,16.4200000739409,16.4300000732052,16.4400000724767,16.4500000717556,16.4600000710416,16.4700000703347,16.4800000696349,16.490000068942,16.500000068256,16.5100000675769,16.5200000669045,16.5300000662388,16.5400000655797,16.5500000649271,16.5600000642811,16.5700000636415,16.5800000630083,16.5900000623813,16.6000000617606,16.6100000611461,16.6200000605377,16.6300000599353,16.6400000593389,16.6500000587485,16.6600000581639,16.6700000575852,16.6800000570122,16.6900000564449,16.7000000558833,16.7100000553273,16.7200000547767,16.7300000542317,16.7400000536921,16.7500000531579,16.7600000526289,16.7700000521052,16.7800000515868,16.7900000510735,16.8000000505653,16.8100000500622,16.8200000495641,16.8300000490709,16.8400000485826,16.8500000480992,16.8600000476206,16.8700000471468,16.8800000466777,16.8900000462132,16.9000000457534,16.9100000452981,16.9200000448474,16.9300000444012,16.9400000439594,16.950000043522,16.9600000430889,16.9700000426602,16.9800000422357,16.9900000418155,17.0000000413994,17.0100000409874,17.0200000405796,17.0300000401758,17.0400000397761,17.0500000393803,17.0600000389885,17.0700000386005,17.0800000382164,17.0900000378362,17.1000000374597,17.110000037087,17.120000036718,17.1300000363526,17.1400000359909,17.1500000356328,17.1600000352782,17.1700000349272,17.1800000345797,17.1900000342356,17.2000000338949,17.2100000335577,17.2200000332238,17.2300000328932,17.2400000325659,17.2500000322419,17.2600000319211,17.2700000316034,17.280000031289,17.2900000309777,17.3000000306694,17.3100000303643,17.3200000300621,17.330000029763,17.3400000294669,17.3500000291737,17.3600000288834,17.370000028596,17.3800000283114,17.3900000280297,17.4000000277508,17.4100000274747,17.4200000272013,17.4300000269307,17.4400000266627,17.4500000263974,17.4600000261348,17.4700000258747,17.4800000256173,17.4900000253624,17.50000002511,17.5100000248601,17.5200000246128,17.5300000243679,17.5400000241254,17.5500000238854,17.5600000236477,17.5700000234124,17.5800000231794,17.5900000229488,17.6000000227205,17.6100000224944,17.6200000222706,17.630000022049,17.6400000218296,17.6500000216124,17.6600000213973,17.6700000211844,17.6800000209736,17.6900000207649,17.7000000205583,17.7100000203538,17.7200000201512,17.7300000199507,17.7400000197522,17.7500000195557,17.7600000193611,17.7700000191684,17.7800000189777,17.7900000187889,17.8000000186019,17.8100000184169,17.8200000182336,17.8300000180522,17.8400000178726,17.8500000176947,17.8600000175186,17.8700000173443,17.8800000171717,17.8900000170009,17.9000000168317,17.9100000166642,17.9200000164984,17.9300000163343,17.9400000161717,17.9500000160108,17.9600000158515,17.9700000156938,17.9800000155376,17.9900000153831,18.00000001523,18.0100000150784,18.0200000149284,18.0300000147799,18.0400000146328,18.0500000144872,18.0600000143431,18.0700000142003,18.080000014059,18.0900000139192,18.1000000137807,18.1100000136435,18.1200000135078,18.1300000133734,18.1400000132403,18.1500000131086,18.1600000129781,18.170000012849,18.1800000127212,18.1900000125946,18.2000000124693,18.2100000123452,18.2200000122223,18.2300000121007,18.2400000119803,18.2500000118611,18.2600000117431,18.2700000116263,18.2800000115106,18.290000011396,18.3000000112826,18.3100000111704,18.3200000110592,18.3300000109492,18.3400000108402,18.3500000107324,18.3600000106256,18.3700000105199,18.3800000104152,18.3900000103116,18.400000010209,18.4100000101074,18.4200000100068,18.4300000099072,18.4400000098087,18.4500000097111,18.4600000096144,18.4700000095188,18.4800000094241,18.4900000093303,18.5000000092374,18.5100000091455,18.5200000090545,18.5300000089644,18.5400000088752,18.5500000087869,18.5600000086995,18.5700000086129,18.5800000085272,18.5900000084424,18.6000000083584,18.6100000082752,18.6200000081929,18.6300000081114,18.6400000080307,18.6500000079508,18.6600000078716,18.6700000077933,18.6800000077158,18.690000007639,18.700000007563,18.7100000074877,18.7200000074132,18.7300000073395,18.7400000072664,18.7500000071941,18.7600000071226,18.7700000070517,18.7800000069815,18.7900000069121,18.8000000068433,18.8100000067752,18.8200000067078,18.830000006641,18.8400000065749,18.8500000065095,18.8600000064447,18.8700000063806,18.8800000063171,18.8900000062543,18.9000000061921,18.9100000061304,18.9200000060694,18.9300000060091,18.9400000059493,18.9500000058901,18.9600000058315,18.9700000057734,18.980000005716,18.9900000056591,19.0000000056028,19.0100000055471,19.0200000054918,19.0300000054372,19.0400000053831,19.0500000053295,19.0600000052765,19.070000005224,19.080000005172,19.0900000051206,19.1000000050696,19.1100000050192,19.1200000049692,19.1300000049198,19.1400000048708,19.1500000048224,19.1600000047744,19.1700000047269,19.1800000046799,19.1900000046333,19.2000000045872,19.2100000045415,19.2200000044963,19.2300000044516,19.2400000044073,19.2500000043635,19.2600000043201,19.2700000042771,19.2800000042345,19.2900000041924,19.3000000041507,19.3100000041094,19.3200000040685,19.330000004028,19.3400000039879,19.3500000039482,19.3600000039089,19.3700000038701,19.3800000038315,19.3900000037934,19.4000000037557,19.4100000037183,19.4200000036813,19.4300000036447,19.4400000036084,19.4500000035725,19.460000003537,19.4700000035018,19.4800000034669,19.4900000034324,19.5000000033983,19.5100000033645,19.520000003331,19.5300000032978,19.540000003265,19.5500000032325,19.5600000032004,19.5700000031685,19.580000003137,19.5900000031058,19.6000000030749,19.6100000030443,19.620000003014,19.630000002984,19.6400000029543,19.6500000029249,19.6600000028958,19.670000002867,19.6800000028385,19.6900000028102,19.7000000027823,19.7100000027546,19.7200000027272,19.7300000027,19.7400000026732,19.7500000026466,19.7600000026202,19.7700000025942,19.7800000025684,19.7900000025428,19.8000000025175,19.8100000024925,19.8200000024677,19.8300000024431,19.8400000024188,19.8500000023947,19.8600000023709,19.8700000023473,19.8800000023239,19.8900000023008,19.9000000022779,19.9100000022553,19.9200000022328,19.9300000022106,19.9400000021886,19.9500000021668,19.9600000021453,19.9700000021239,19.9800000021028,19.9900000020819,20.0000000020612,20.0100000020406,20.0200000020203,20.0300000020002,20.0400000019803,20.0500000019606,20.0600000019411,20.0700000019218,20.0800000019027,20.0900000018838,20.100000001865,20.1100000018465,20.1200000018281,20.1300000018099,20.1400000017919,20.1500000017741,20.1600000017564,20.1700000017389,20.1800000017216,20.1900000017045,20.2000000016875,20.2100000016707,20.2200000016541,20.2300000016377,20.2400000016214,20.2500000016052,20.2600000015893,20.2700000015734,20.2800000015578,20.2900000015423,20.3000000015269,20.3100000015117,20.3200000014967,20.3300000014818,20.3400000014671,20.3500000014525,20.360000001438,20.3700000014237,20.3800000014095,20.3900000013955,20.4000000013816,20.4100000013679,20.4200000013543,20.4300000013408,20.4400000013275,20.4500000013143,20.4600000013012,20.4700000012882,20.4800000012754,20.4900000012627,20.5000000012502,20.5100000012377,20.5200000012254,20.5300000012132,20.5400000012011,20.5500000011892,20.5600000011774,20.5700000011656,20.580000001154,20.5900000011426,20.6000000011312,20.6100000011199,20.6200000011088,20.6300000010977,20.6400000010868,20.650000001076,20.6600000010653,20.6700000010547,20.6800000010442,20.6900000010338,20.7000000010235,20.7100000010134,20.7200000010033,20.7300000009933,20.7400000009834,20.7500000009736,20.7600000009639,20.7700000009543,20.7800000009448,20.7900000009354,20.8000000009261,20.8100000009169,20.8200000009078,20.8300000008988,20.8400000008898,20.850000000881,20.8600000008722,20.8700000008635,20.8800000008549,20.8900000008464,20.900000000838,20.9100000008297,20.9200000008214,20.9300000008132,20.9400000008051,20.9500000007971,20.9600000007892,20.9700000007813,20.9800000007736,20.9900000007659,21.0000000007583,21.0100000007507,21.0200000007432,21.0300000007358,21.0400000007285,21.0500000007213,21.0600000007141,21.070000000707,21.0800000007,21.090000000693,21.1000000006861,21.1100000006793,21.1200000006725,21.1300000006658,21.1400000006592,21.1500000006526,21.1600000006461,21.1700000006397,21.1800000006334,21.190000000627,21.2000000006208,21.2100000006146,21.2200000006085,21.2300000006025,21.2400000005965,21.2500000005905,21.2600000005847,21.2700000005788,21.2800000005731,21.2900000005674,21.3000000005617,21.3100000005561,21.3200000005506,21.3300000005451,21.3400000005397,21.3500000005343,21.360000000529,21.3700000005238,21.3800000005185,21.3900000005134,21.4000000005083,21.4100000005032,21.4200000004982,21.4300000004933,21.4400000004883,21.4500000004835,21.4600000004787,21.4700000004739,21.4800000004692,21.4900000004645,21.5000000004599,21.5100000004553,21.5200000004508,21.5300000004463,21.5400000004419,21.5500000004375,21.5600000004331,21.5700000004288,21.5800000004245,21.5900000004203,21.6000000004161,21.610000000412,21.6200000004079,21.6300000004038,21.6400000003998,21.6500000003958,21.6600000003919,21.670000000388,21.6800000003842,21.6900000003803,21.7000000003765,21.7100000003728,21.7200000003691,21.7300000003654,21.7400000003618,21.7500000003582,21.7600000003546,21.7700000003511,21.7800000003476,21.7900000003441,21.8000000003407,21.8100000003373,21.820000000334,21.8300000003306,21.8400000003274,21.8500000003241,21.8600000003209,21.8700000003177,21.8800000003145,21.8900000003114,21.9000000003083,21.9100000003052,21.9200000003022,21.9300000002992,21.9400000002962,21.9500000002933,21.9600000002903,21.9700000002874,21.9800000002846,21.9900000002818,22.0000000002789,22.0100000002762,22.0200000002734,22.0300000002707,22.040000000268,22.0500000002653,22.0600000002627,22.0700000002601,22.0800000002575,22.0900000002549,22.1000000002524,22.1100000002499,22.1200000002474,22.1300000002449,22.1400000002425,22.1500000002401,22.1600000002377,22.1700000002353,22.180000000233,22.1900000002307,22.2000000002284,22.2100000002261,22.2200000002239,22.2300000002216,22.2400000002194,22.2500000002172,22.2600000002151,22.2700000002129,22.2800000002108,22.2900000002087,22.3000000002066,22.3100000002046,22.3200000002026,22.3300000002005,22.3400000001986,22.3500000001966,22.3600000001946,22.3700000001927,22.3800000001908,22.3900000001889,22.400000000187,22.4100000001851,22.4200000001833,22.4300000001815,22.4400000001797,22.4500000001779,22.4600000001761,22.4700000001743,22.4800000001726,22.4900000001709,22.5000000001692,22.5100000001675,22.5200000001658,22.5300000001642,22.5400000001626,22.5500000001609,22.5600000001593,22.5700000001578,22.5800000001562,22.5900000001546,22.6000000001531,22.6100000001516,22.6200000001501,22.6300000001486,22.6400000001471,22.6500000001456,22.6600000001442,22.6700000001427,22.6800000001413,22.6900000001399,22.7000000001385,22.7100000001371,22.7200000001358,22.7300000001344,22.7400000001331,22.7500000001318,22.7600000001305,22.7700000001292,22.7800000001279,22.7900000001266,22.8000000001253,22.8100000001241,22.8200000001229,22.8300000001216,22.8400000001204,22.8500000001192,22.860000000118,22.8700000001169,22.8800000001157,22.8900000001146,22.9000000001134,22.9100000001123,22.9200000001112,22.9300000001101,22.940000000109,22.9500000001079,22.9600000001068,22.9700000001057,22.9800000001047,22.9900000001037,23.0000000001026,23.0100000001016,23.0200000001006,23.0300000000996,23.0400000000986,23.0500000000976,23.0600000000966,23.0700000000957,23.0800000000947,23.0900000000938,23.1000000000929,23.1100000000919,23.120000000091,23.1300000000901,23.1400000000892,23.1500000000883,23.1600000000874,23.1700000000866,23.1800000000857,23.1900000000849,23.200000000084,23.2100000000832,23.2200000000824,23.2300000000815,23.2400000000807,23.2500000000799,23.2600000000791,23.2700000000783,23.2800000000776,23.2900000000768,23.300000000076,23.3100000000753,23.3200000000745,23.3300000000738,23.340000000073,23.3500000000723,23.3600000000716,23.3700000000709,23.3800000000702,23.3900000000695,23.4000000000688,23.4100000000681,23.4200000000674,23.4300000000668,23.4400000000661,23.4500000000654,23.4600000000648,23.4700000000641,23.4800000000635,23.4900000000629,23.5000000000622,23.5100000000616,23.520000000061,23.5300000000604,23.5400000000598,23.5500000000592,23.5600000000586,23.570000000058,23.5800000000575,23.5900000000569,23.6000000000563,23.6100000000558,23.6200000000552,23.6300000000547,23.6400000000541,23.6500000000536,23.660000000053,23.6700000000525,23.680000000052,23.6900000000515,23.700000000051,23.7100000000505,23.72000000005,23.7300000000495,23.740000000049,23.7500000000485,23.760000000048,23.7700000000475,23.780000000047,23.7900000000466,23.8000000000461,23.8100000000457,23.8200000000452,23.8300000000447,23.8400000000443,23.8500000000439,23.8600000000434,23.870000000043,23.8800000000426,23.8900000000421,23.9000000000417,23.9100000000413,23.9200000000409,23.9300000000405,23.9400000000401,23.9500000000397,23.9600000000393,23.9700000000389,23.9800000000385,23.9900000000381,24.0000000000378,24.0100000000374,24.020000000037,24.0300000000366,24.0400000000363,24.0500000000359,24.0600000000356,24.0700000000352,24.0800000000348,24.0900000000345,24.1000000000342,24.1100000000338,24.1200000000335,24.1300000000332,24.1400000000328,24.1500000000325,24.1600000000322,24.1700000000319,24.1800000000315,24.1900000000312,24.2000000000309,24.2100000000306,24.2200000000303,24.23000000003,24.2400000000297,24.2500000000294,24.2600000000291,24.2700000000288,24.2800000000285,24.2900000000283,24.300000000028,24.3100000000277,24.3200000000274,24.3300000000271,24.3400000000269,24.3500000000266,24.3600000000263,24.3700000000261,24.3800000000258,24.3900000000256,24.4000000000253,24.4100000000251,24.4200000000248,24.4300000000246,24.4400000000243,24.4500000000241,24.4600000000238,24.4700000000236,24.4800000000234,24.4900000000231,24.5000000000229,24.5100000000227,24.5200000000224,24.5300000000222,24.540000000022,24.5500000000218,24.5600000000216,24.5700000000214,24.5800000000211,24.5900000000209,24.6000000000207,24.6100000000205,24.6200000000203,24.6300000000201,24.6400000000199,24.6500000000197,24.6600000000195,24.6700000000193,24.6800000000191,24.6900000000189,24.7000000000188,24.7100000000186,24.7200000000184,24.7300000000182,24.740000000018,24.7500000000178,24.7600000000177,24.7700000000175,24.7800000000173,24.7900000000171,24.800000000017,24.8100000000168,24.8200000000166,24.8300000000165,24.8400000000163,24.8500000000161,24.860000000016,24.8700000000158,24.8800000000157,24.8900000000155,24.9000000000154,24.9100000000152,24.920000000015,24.9300000000149,24.9400000000147,24.9500000000146,24.9600000000145,24.9700000000143,24.9800000000142,24.990000000014,25.0000000000139,25.0100000000138,25.0200000000136,25.0300000000135,25.0400000000134,25.0500000000132,25.0600000000131,25.070000000013,25.0800000000128,25.0900000000127,25.1000000000126,25.1100000000124,25.1200000000123,25.1300000000122,25.1400000000121,25.150000000012,25.1600000000118,25.1700000000117,25.1800000000116,25.1900000000115,25.2000000000114,25.2100000000113,25.2200000000111,25.230000000011,25.2400000000109,25.2500000000108,25.2600000000107,25.2700000000106,25.2800000000105,25.2900000000104,25.3000000000103,25.3100000000102,25.3200000000101,25.33000000001,25.3400000000099,25.3500000000098,25.3600000000097,25.3700000000096,25.3800000000095,25.3900000000094,25.4000000000093,25.4100000000092,25.4200000000091,25.430000000009,25.4400000000089,25.4500000000089,25.4600000000088,25.4700000000087,25.4800000000086,25.4900000000085,25.5000000000084,25.5100000000083,25.5200000000083,25.5300000000082,25.5400000000081,25.550000000008,25.5600000000079,25.5700000000079,25.5800000000078,25.5900000000077,25.6000000000076,25.6100000000075,25.6200000000075,25.6300000000074,25.6400000000073,25.6500000000073,25.6600000000072,25.6700000000071,25.680000000007,25.690000000007,25.7000000000069,25.7100000000068,25.7200000000068,25.7300000000067,25.7400000000066,25.7500000000066,25.7600000000065,25.7700000000064,25.7800000000064,25.7900000000063,25.8000000000062,25.8100000000062,25.8200000000061,25.8300000000061,25.840000000006,25.8500000000059,25.8600000000059,25.8700000000058,25.8800000000058,25.8900000000057,25.9000000000057,25.9100000000056,25.9200000000055,25.9300000000055,25.9400000000054,25.9500000000054,25.9600000000053,25.9700000000053,25.9800000000052,25.9900000000052,26.0000000000051,26.0100000000051,26.020000000005,26.030000000005,26.0400000000049,26.0500000000049,26.0600000000048,26.0700000000048,26.0800000000047,26.0900000000047,26.1000000000046,26.1100000000046,26.1200000000045,26.1300000000045,26.1400000000044,26.1500000000044,26.1600000000043,26.1700000000043,26.1800000000043,26.1900000000042,26.2000000000042,26.2100000000042,26.2200000000041,26.2300000000041,26.240000000004,26.250000000004,26.2600000000039,26.2700000000039,26.2800000000039,26.2900000000038,26.3000000000038,26.3100000000038,26.3200000000037,26.3300000000037,26.3400000000036,26.3500000000036,26.3600000000036,26.3700000000035,26.3800000000035,26.3900000000035,26.4000000000034,26.4100000000034,26.4200000000034,26.4300000000033,26.4400000000033,26.4500000000033,26.4600000000032,26.4700000000032,26.4800000000032,26.4900000000031,26.5000000000031,26.5100000000031,26.520000000003,26.530000000003,26.540000000003,26.5500000000029,26.5600000000029,26.5700000000029,26.5800000000029,26.5900000000028,26.6000000000028,26.6100000000028,26.6200000000028,26.6300000000027,26.6400000000027,26.6500000000027,26.6600000000026,26.6700000000026,26.6800000000026,26.6900000000026,26.7000000000025,26.7100000000025,26.7200000000025,26.7300000000025,26.7400000000024,26.7500000000024,26.7600000000024,26.7700000000024,26.7800000000023,26.7900000000023,26.8000000000023,26.8100000000023,26.8200000000023,26.8300000000022,26.8400000000022,26.8500000000022,26.8600000000022,26.8700000000021,26.8800000000021,26.8900000000021,26.9000000000021,26.9100000000021,26.920000000002,26.930000000002,26.940000000002,26.950000000002,26.960000000002,26.9700000000019,26.9800000000019,26.9900000000019,27.0000000000019,27.0100000000019,27.0200000000018,27.0300000000018,27.0400000000018,27.0500000000018,27.0600000000018,27.0700000000018,27.0800000000017,27.0900000000017,27.1000000000017,27.1100000000017,27.1200000000017,27.1300000000017,27.1400000000016,27.1500000000016,27.1600000000016,27.1700000000016,27.1800000000016,27.1900000000016,27.2000000000015,27.2100000000015,27.2200000000015,27.2300000000015,27.2400000000015,27.2500000000015,27.2600000000015,27.2700000000014,27.2800000000014,27.2900000000014,27.3000000000014,27.3100000000014,27.3200000000014,27.3300000000013,27.3400000000013,27.3500000000013,27.3600000000013,27.3700000000013,27.3800000000013,27.3900000000013,27.4000000000013,27.4100000000012,27.4200000000012,27.4300000000012,27.4400000000012,27.4500000000012,27.4600000000012,27.4700000000012,27.4800000000012,27.4900000000012,27.5000000000011,27.5100000000011,27.5200000000011,27.5300000000011,27.5400000000011,27.5500000000011,27.5600000000011,27.5700000000011,27.580000000001,27.590000000001,27.600000000001,27.610000000001,27.620000000001,27.630000000001,27.640000000001,27.650000000001,27.660000000001,27.670000000001,27.680000000001,27.6900000000009,27.7000000000009,27.7100000000009,27.7200000000009,27.7300000000009,27.7400000000009,27.7500000000009,27.7600000000009,27.7700000000009,27.7800000000009,27.7900000000009,27.8000000000008,27.8100000000008,27.8200000000008,27.8300000000008,27.8400000000008,27.8500000000008,27.8600000000008,27.8700000000008,27.8800000000008,27.8900000000008,27.9000000000008,27.9100000000008,27.9200000000008,27.9300000000007,27.9400000000007,27.9500000000007,27.9600000000007,27.9700000000007,27.9800000000007,27.9900000000007,28.0000000000007,28.0100000000007,28.0200000000007,28.0300000000007,28.0400000000007,28.0500000000007,28.0600000000007,28.0700000000006,28.0800000000007,28.0900000000006,28.1000000000006,28.1100000000006,28.1200000000006,28.1300000000006,28.1400000000006,28.1500000000006,28.1600000000006,28.1700000000006,28.1800000000006,28.1900000000006,28.2000000000006,28.2100000000006,28.2200000000006,28.2300000000005,28.2400000000006,28.2500000000005,28.2600000000005,28.2700000000005,28.2800000000005,28.2900000000005,28.3000000000005,28.3100000000005,28.3200000000005,28.3300000000005,28.3400000000005,28.3500000000005,28.3600000000005,28.3700000000005,28.3800000000005,28.3900000000005,28.4000000000005,28.4100000000005,28.4200000000005,28.4300000000005,28.4400000000004,28.4500000000004,28.4600000000004,28.4700000000004,28.4800000000004,28.4900000000004,28.5000000000004,28.5100000000004,28.5200000000004,28.5300000000004,28.5400000000004,28.5500000000004,28.5600000000004,28.5700000000004,28.5800000000004,28.5900000000004,28.6000000000004,28.6100000000004,28.6200000000004,28.6300000000004,28.6400000000004,28.6500000000004,28.6600000000004,28.6700000000004,28.6800000000004,28.6900000000003,28.7000000000003,28.7100000000003,28.7200000000003,28.7300000000003,28.7400000000003,28.7500000000003,28.7600000000003,28.7700000000003,28.7800000000003,28.7900000000003,28.8000000000003,28.8100000000003,28.8200000000003,28.8300000000003,28.8400000000003,28.8500000000003,28.8600000000003,28.8700000000003,28.8800000000003,28.8900000000003,28.9000000000003,28.9100000000003,28.9200000000003,28.9300000000003,28.9400000000003,28.9500000000003,28.9600000000003,28.9700000000003,28.9800000000002,28.9900000000003,29.0000000000003,29.0100000000002,29.0200000000003,29.0300000000002,29.0400000000002,29.0500000000003,29.0600000000002,29.0700000000002,29.0800000000002,29.0900000000002,29.1000000000002,29.1100000000002,29.1200000000002,29.1300000000002,29.1400000000002,29.1500000000002,29.1600000000002,29.1700000000002,29.1800000000002,29.1900000000002,29.2000000000002,29.2100000000002,29.2200000000002,29.2300000000002,29.2400000000002,29.2500000000002,29.2600000000002,29.2700000000002,29.2800000000002,29.2900000000002,29.3000000000002,29.3100000000002,29.3200000000002,29.3300000000002,29.3400000000002,29.3500000000002,29.3600000000002,29.3700000000002,29.3800000000002,29.3900000000002,29.4000000000002,29.4100000000002,29.4200000000002,29.4300000000002,29.4400000000002,29.4500000000002,29.4600000000002,29.4700000000002,29.4800000000001,29.4900000000002,29.5000000000002,29.5100000000001,29.5200000000002,29.5300000000002,29.5400000000001,29.5500000000002,29.5600000000001,29.5700000000001,29.5800000000002,29.5900000000001,29.6000000000001,29.6100000000002,29.6200000000001,29.6300000000001,29.6400000000001,29.6500000000001,29.6600000000001,29.6700000000001,29.6800000000001,29.6900000000001,29.7000000000001,29.7100000000001,29.7200000000001,29.7300000000001,29.7400000000001,29.7500000000001,29.7600000000001,29.7700000000001,29.7800000000001,29.7900000000001,29.8000000000001,29.8100000000001,29.8200000000001,29.8300000000001,29.8400000000001,29.8500000000001,29.8600000000001,29.8700000000001,29.8800000000001,29.8900000000001,29.9000000000001,29.9100000000001,29.9200000000001,29.9300000000001,29.9400000000001,29.9500000000001,29.9600000000001,29.9700000000001,29.9800000000001,29.9900000000001,30.0000000000001,30.0100000000001,30.0200000000001,30.0300000000001,30.0400000000001,30.0500000000001,30.0600000000001,30.0700000000001,30.0800000000001,30.0900000000001,30.1000000000001,30.1100000000001,30.1200000000001,30.1300000000001,30.1400000000001,30.1500000000001,30.1600000000001,30.1700000000001,30.1800000000001,30.1900000000001,30.2000000000001,30.2100000000001,30.2200000000001,30.2300000000001,30.2400000000001,30.2500000000001,30.2600000000001,30.2700000000001,30.2800000000001,30.2900000000001,30.3000000000001,30.3100000000001,30.3200000000001,30.3300000000001,30.3400000000001,30.3500000000001,30.3600000000001,30.3700000000001,30.3800000000001,30.3900000000001,30.4000000000001,30.4100000000001,30.4200000000001,30.4300000000001,30.4400000000001,30.45,30.4600000000001,30.4700000000001,30.48,30.4900000000001,30.5000000000001,30.51,30.5200000000001,30.5300000000001,30.54,30.5500000000001,30.5600000000001,30.57,30.5800000000001,30.5900000000001,30.6,30.6100000000001,30.6200000000001,30.63,30.6400000000001,30.6500000000001,30.66,30.6700000000001,30.6800000000001,30.69,30.7,30.7100000000001,30.72,30.73,30.7400000000001,30.75,30.76,30.7700000000001,30.78,30.79,30.8000000000001,30.81,30.82,30.8300000000001,30.84,30.85,30.8600000000001,30.87,30.88,30.8900000000001,30.9,30.91,30.9200000000001,30.93,30.94,30.95,30.96,30.97,30.98,30.99,31,31.01,31.02,31.03,31.04,31.05,31.06,31.07,31.08,31.09,31.1,31.11,31.12,31.13,31.14,31.15,31.16,31.17,31.18,31.19,31.2,31.21,31.22,31.23,31.24,31.25,31.26,31.27,31.28,31.29,31.3,31.31,31.32,31.33,31.34,31.35,31.36,31.37,31.38,31.39,31.4,31.41,31.42,31.43,31.44,31.45,31.46,31.47,31.48,31.49,31.5,31.51,31.52,31.53,31.54,31.55,31.56,31.57,31.58,31.59,31.6,31.61,31.62,31.63,31.64,31.65,31.66,31.67,31.68,31.69,31.7,31.71,31.72,31.73,31.74,31.75,31.76,31.77,31.78,31.79,31.8,31.81,31.82,31.83,31.84,31.85,31.86,31.87,31.88,31.89,31.9,31.91,31.92,31.93,31.94,31.95,31.96,31.97,31.98,31.99,32,32.01,32.02,32.03,32.04,32.05,32.06,32.07,32.08,32.09,32.1,32.11,32.12,32.13,32.14,32.15,32.16,32.17,32.18,32.19,32.2,32.21,32.22,32.23,32.24,32.25,32.26,32.27,32.28,32.29,32.3,32.31,32.32,32.33,32.34,32.35,32.36,32.37,32.38,32.39,32.4,32.41,32.42,32.43,32.44,32.45,32.46,32.47,32.48,32.49,32.5,32.51,32.52,32.53,32.54,32.55,32.56,32.57,32.58,32.59,32.6,32.61,32.62,32.63,32.64,32.65,32.66,32.67,32.68,32.69,32.7,32.71,32.72,32.73,32.74,32.75,32.76,32.77,32.78,32.79,32.8,32.81,32.82,32.83,32.84,32.85,32.86,32.87,32.88,32.89,32.9,32.91,32.92,32.93,32.94,32.95,32.96,32.97,32.98,32.99,33,33.01,33.02,33.03,33.04,33.05,33.06,33.07,33.08,33.09,33.1,33.11,33.12,33.13,33.14,33.15,33.16,33.17,33.18,33.19,33.2,33.21,33.22,33.23,33.24,33.25,33.26,33.27,33.28,33.29,33.3,33.31,33.32,33.33,33.34,33.35,33.36,33.37,33.38,33.39,33.4,33.41,33.42,33.43,33.44,33.45,33.46,33.47,33.48,33.49,33.5,33.51,33.52,33.53,33.54,33.55,33.56,33.57,33.58,33.59,33.6,33.61,33.62,33.63,33.64,33.65,33.66,33.67,33.68,33.69,33.7,33.71,33.72,33.73,33.74,33.75,33.76,33.77,33.78,33.79,33.8,33.81,33.82,33.83,33.84,33.85,33.86,33.87,33.88,33.89,33.9,33.91,33.92,33.93,33.94,33.95,33.96,33.97,33.98,33.99,34,34.01,34.02,34.03,34.04,34.05,34.06,34.07,34.08,34.09,34.1,34.11,34.12,34.13,34.14,34.15,34.16,34.17,34.18,34.19,34.2,34.21,34.22,34.23,34.24,34.25,34.26,34.27,34.28,34.29,34.3,34.31,34.32,34.33,34.34,34.35,34.36,34.37,34.38,34.39,34.4,34.41,34.42,34.43,34.44,34.45,34.46,34.47,34.48,34.49,34.5,34.51,34.52,34.53,34.54,34.55,34.56,34.57,34.58,34.59,34.6,34.61,34.62,34.63,34.64,34.65,34.66,34.67,34.68,34.69,34.7,34.71,34.72,34.73,34.74,34.75,34.76,34.77,34.78,34.79,34.8,34.81,34.82,34.83,34.84,34.85,34.86,34.87,34.88,34.89,34.9,34.91,34.92,34.93,34.94,34.95,34.96,34.97,34.98,34.99,35,35.01,35.02,35.03,35.04,35.05,35.06,35.07,35.08,35.09,35.1,35.11,35.12,35.13,35.14,35.15,35.16,35.17,35.18,35.19,35.2,35.21,35.22,35.23,35.24,35.25,35.26,35.27,35.28,35.29,35.3,35.31,35.32,35.33,35.34,35.35,35.36,35.37,35.38,35.39,35.4,35.41,35.42,35.43,35.44,35.45,35.46,35.47,35.48,35.49,35.5,35.51,35.52,35.53,35.54,35.55,35.56,35.57,35.58,35.59,35.6,35.61,35.62,35.63,35.64,35.65,35.66,35.67,35.68,35.69,35.7,35.71,35.72,35.73,35.74,35.75,35.76,35.77,35.78,35.79,35.8,35.81,35.82,35.83,35.84,35.85,35.86,35.87,35.88,35.89,35.9,35.91,35.92,35.93,35.94,35.95,35.96,35.97,35.98,35.99,36,36.01,36.02,36.03,36.04,36.05,36.06,36.07,36.08,36.09,36.1,36.11,36.12,36.13,36.14,36.15,36.16,36.17,36.18,36.19,36.2,36.21,36.22,36.23,36.24,36.25,36.26,36.27,36.28,36.29,36.3,36.31,36.32,36.33,36.34,36.35,36.36,36.37,36.38,36.39,36.4,36.41,36.42,36.43,36.44,36.45,36.46,36.47,36.48,36.49,36.5,36.51,36.52,36.53,36.54,36.55,36.56,36.57,36.58,36.59,36.6,36.61,36.62,36.63,36.64,36.65,36.66,36.67,36.68,36.69,36.7,36.71,36.72,36.73,36.74,36.75,36.76,36.77,36.78,36.79,36.8,36.81,36.82,36.83,36.84,36.85,36.86,36.87,36.88,36.89,36.9,36.91,36.92,36.93,36.94,36.95,36.96,36.97,36.98,36.99,37,37.01,37.02,37.03,37.04,37.05,37.06,37.07,37.08,37.09,37.1,37.11,37.12,37.13,37.14,37.15,37.16,37.17,37.18,37.19,37.2,37.21,37.22,37.23,37.24,37.25,37.26,37.27,37.28,37.29,37.3,37.31,37.32,37.33,37.34,37.35,37.36,37.37,37.38,37.39,37.4,37.41,37.42,37.43,37.44,37.45,37.46,37.47,37.48,37.49,37.5,37.51,37.52,37.53,37.54,37.55,37.56,37.57,37.58,37.59,37.6,37.61,37.62,37.63,37.64,37.65,37.66,37.67,37.68,37.69,37.7,37.71,37.72,37.73,37.74,37.75,37.76,37.77,37.78,37.79,37.8,37.81,37.82,37.83,37.84,37.85,37.86,37.87,37.88,37.89,37.9,37.91,37.92,37.93,37.94,37.95,37.96,37.97,37.98,37.99,38,38.01,38.02,38.03,38.04,38.05,38.06,38.07,38.08,38.09,38.1,38.11,38.12,38.13,38.14,38.15,38.16,38.17,38.18,38.19,38.2,38.21,38.22,38.23,38.24,38.25,38.26,38.27,38.28,38.29,38.3,38.31,38.32,38.33,38.34,38.35,38.36,38.37,38.38,38.39,38.4,38.41,38.42,38.43,38.44,38.45,38.46,38.47,38.48,38.49,38.5,38.51,38.52,38.53,38.54,38.55,38.56,38.57,38.58,38.59,38.6,38.61,38.62,38.63,38.64,38.65,38.66,38.67,38.68,38.69,38.7,38.71,38.72,38.73,38.74,38.75,38.76,38.77,38.78,38.79,38.8,38.81,38.82,38.83,38.84,38.85,38.86,38.87,38.88,38.89,38.9,38.91,38.92,38.93,38.94,38.95,38.96,38.97,38.98,38.99,39,39.01,39.02,39.03,39.04,39.05,39.06,39.07,39.08,39.09,39.1,39.11,39.12,39.13,39.14,39.15,39.16,39.17,39.18,39.19,39.2,39.21,39.22,39.23,39.24,39.25,39.26,39.27,39.28,39.29,39.3,39.31,39.32,39.33,39.34,39.35,39.36,39.37,39.38,39.39,39.4,39.41,39.42,39.43,39.44,39.45,39.46,39.47,39.48,39.49,39.5,39.51,39.52,39.53,39.54,39.55,39.56,39.57,39.58,39.59,39.6,39.61,39.62,39.63,39.64,39.65,39.66,39.67,39.68,39.69,39.7,39.71,39.72,39.73,39.74,39.75,39.76,39.77,39.78,39.79,39.8,39.81,39.82,39.83,39.84,39.85,39.86,39.87,39.88,39.89,39.9,39.91,39.92,39.93,39.94,39.95,39.96,39.97,39.98,39.99,40,40.01,40.02,40.03,40.04,40.05,40.06,40.07,40.08,40.09,40.1,40.11,40.12,40.13,40.14,40.15,40.16,40.17,40.18,40.19,40.2,40.21,40.22,40.23,40.24,40.25,40.26,40.27,40.28,40.29,40.3,40.31,40.32,40.33,40.34,40.35,40.36,40.37,40.38,40.39,40.4,40.41,40.42,40.43,40.44,40.45,40.46,40.47,40.48,40.49,40.5,40.51,40.52,40.53,40.54,40.55,40.56,40.57,40.58,40.59,40.6,40.61,40.62,40.63,40.64,40.65,40.66,40.67,40.68,40.69,40.7,40.71,40.72,40.73,40.74,40.75,40.76,40.77,40.78,40.79,40.8,40.81,40.82,40.83,40.84,40.85,40.86,40.87,40.88,40.89,40.9,40.91,40.92,40.93,40.94,40.95,40.96,40.97,40.98,40.99,41,41.01,41.02,41.03,41.04,41.05,41.06,41.07,41.08,41.09,41.1,41.11,41.12,41.13,41.14,41.15,41.16,41.17,41.18,41.19,41.2,41.21,41.22,41.23,41.24,41.25,41.26,41.27,41.28,41.29,41.3,41.31,41.32,41.33,41.34,41.35,41.36,41.37,41.38,41.39,41.4,41.41,41.42,41.43,41.44,41.45,41.46,41.47,41.48,41.49,41.5,41.51,41.52,41.53,41.54,41.55,41.56,41.57,41.58,41.59,41.6,41.61,41.62,41.63,41.64,41.65,41.66,41.67,41.68,41.69,41.7,41.71,41.72,41.73,41.74,41.75,41.76,41.77,41.78,41.79,41.8,41.81,41.82,41.83,41.84,41.85,41.86,41.87,41.88,41.89,41.9,41.91,41.92,41.93,41.94,41.95,41.96,41.97,41.98,41.99,42,42.01,42.02,42.03,42.04,42.05,42.06,42.07,42.08,42.09,42.1,42.11,42.12,42.13,42.14,42.15,42.16,42.17,42.18,42.19,42.2,42.21,42.22,42.23,42.24,42.25,42.26,42.27,42.28,42.29,42.3,42.31,42.32,42.33,42.34,42.35,42.36,42.37,42.38,42.39,42.4,42.41,42.42,42.43,42.44,42.45,42.46,42.47,42.48,42.49,42.5,42.51,42.52,42.53,42.54,42.55,42.56,42.57,42.58,42.59,42.6,42.61,42.62,42.63,42.64,42.65,42.66,42.67,42.68,42.69,42.7,42.71,42.72,42.73,42.74,42.75,42.76,42.77,42.78,42.79,42.8,42.81,42.82,42.83,42.84,42.85,42.86,42.87,42.88,42.89,42.9,42.91,42.92,42.93,42.94,42.95,42.96,42.97,42.98,42.99,43,43.01,43.02,43.03,43.04,43.05,43.06,43.07,43.08,43.09,43.1,43.11,43.12,43.13,43.14,43.15,43.16,43.17,43.18,43.19,43.2,43.21,43.22,43.23,43.24,43.25,43.26,43.27,43.28,43.29,43.3,43.31,43.32,43.33,43.34,43.35,43.36,43.37,43.38,43.39,43.4,43.41,43.42,43.43,43.44,43.45,43.46,43.47,43.48,43.49,43.5,43.51,43.52,43.53,43.54,43.55,43.56,43.57,43.58,43.59,43.6,43.61,43.62,43.63,43.64,43.65,43.66,43.67,43.68,43.69,43.7,43.71,43.72,43.73,43.74,43.75,43.76,43.77,43.78,43.79,43.8,43.81,43.82,43.83,43.84,43.85,43.86,43.87,43.88,43.89,43.9,43.91,43.92,43.93,43.94,43.95,43.96,43.97,43.98,43.99,44,44.01,44.02,44.03,44.04,44.05,44.06,44.07,44.08,44.09,44.1,44.11,44.12,44.13,44.14,44.15,44.16,44.17,44.18,44.19,44.2,44.21,44.22,44.23,44.24,44.25,44.26,44.27,44.28,44.29,44.3,44.31,44.32,44.33,44.34,44.35,44.36,44.37,44.38,44.39,44.4,44.41,44.42,44.43,44.44,44.45,44.46,44.47,44.48,44.49,44.5,44.51,44.52,44.53,44.54,44.55,44.56,44.57,44.58,44.59,44.6,44.61,44.62,44.63,44.64,44.65,44.66,44.67,44.68,44.69,44.7,44.71,44.72,44.73,44.74,44.75,44.76,44.77,44.78,44.79,44.8,44.81,44.82,44.83,44.84,44.85,44.86,44.87,44.88,44.89,44.9,44.91,44.92,44.93,44.94,44.95,44.96,44.97,44.98,44.99,45,45.01,45.02,45.03,45.04,45.05,45.06,45.07,45.08,45.09,45.1,45.11,45.12,45.13,45.14,45.15,45.16,45.17,45.18,45.19,45.2,45.21,45.22,45.23,45.24,45.25,45.26,45.27,45.28,45.29,45.3,45.31,45.32,45.33,45.34,45.35,45.36,45.37,45.38,45.39,45.4,45.41,45.42,45.43,45.44,45.45,45.46,45.47,45.48,45.49,45.5,45.51,45.52,45.53,45.54,45.55,45.56,45.57,45.58,45.59,45.6,45.61,45.62,45.63,45.64,45.65,45.66,45.67,45.68,45.69,45.7,45.71,45.72,45.73,45.74,45.75,45.76,45.77,45.78,45.79,45.8,45.81,45.82,45.83,45.84,45.85,45.86,45.87,45.88,45.89,45.9,45.91,45.92,45.93,45.94,45.95,45.96,45.97,45.98,45.99,46,46.01,46.02,46.03,46.04,46.05,46.06,46.07,46.08,46.09,46.1,46.11,46.12,46.13,46.14,46.15,46.16,46.17,46.18,46.19,46.2,46.21,46.22,46.23,46.24,46.25,46.26,46.27,46.28,46.29,46.3,46.31,46.32,46.33,46.34,46.35,46.36,46.37,46.38,46.39,46.4,46.41,46.42,46.43,46.44,46.45,46.46,46.47,46.48,46.49,46.5,46.51,46.52,46.53,46.54,46.55,46.56,46.57,46.58,46.59,46.6,46.61,46.62,46.63,46.64,46.65,46.66,46.67,46.68,46.69,46.7,46.71,46.72,46.73,46.74,46.75,46.76,46.77,46.78,46.79,46.8,46.81,46.82,46.83,46.84,46.85,46.86,46.87,46.88,46.89,46.9,46.91,46.92,46.93,46.94,46.95,46.96,46.97,46.98,46.99,47,47.01,47.02,47.03,47.04,47.05,47.06,47.07,47.08,47.09,47.1,47.11,47.12,47.13,47.14,47.15,47.16,47.17,47.18,47.19,47.2,47.21,47.22,47.23,47.24,47.25,47.26,47.27,47.28,47.29,47.3,47.31,47.32,47.33,47.34,47.35,47.36,47.37,47.38,47.39,47.4,47.41,47.42,47.43,47.44,47.45,47.46,47.47,47.48,47.49,47.5,47.51,47.52,47.53,47.54,47.55,47.56,47.57,47.58,47.59,47.6,47.61,47.62,47.63,47.64,47.65,47.66,47.67,47.68,47.69,47.7,47.71,47.72,47.73,47.74,47.75,47.76,47.77,47.78,47.79,47.8,47.81,47.82,47.83,47.84,47.85,47.86,47.87,47.88,47.89,47.9,47.91,47.92,47.93,47.94,47.95,47.96,47.97,47.98,47.99,48,48.01,48.02,48.03,48.04,48.05,48.06,48.07,48.08,48.09,48.1,48.11,48.12,48.13,48.14,48.15,48.16,48.17,48.18,48.19,48.2,48.21,48.22,48.23,48.24,48.25,48.26,48.27,48.28,48.29,48.3,48.31,48.32,48.33,48.34,48.35,48.36,48.37,48.38,48.39,48.4,48.41,48.42,48.43,48.44,48.45,48.46,48.47,48.48,48.49,48.5,48.51,48.52,48.53,48.54,48.55,48.56,48.57,48.58,48.59,48.6,48.61,48.62,48.63,48.64,48.65,48.66,48.67,48.68,48.69,48.7,48.71,48.72,48.73,48.74,48.75,48.76,48.77,48.78,48.79,48.8,48.81,48.82,48.83,48.84,48.85,48.86,48.87,48.88,48.89,48.9,48.91,48.92,48.93,48.94,48.95,48.96,48.97,48.98,48.99,49,49.01,49.02,49.03,49.04,49.05,49.06,49.07,49.08,49.09,49.1,49.11,49.12,49.13,49.14,49.15,49.16,49.17,49.18,49.19,49.2,49.21,49.22,49.23,49.24,49.25,49.26,49.27,49.28,49.29,49.3,49.31,49.32,49.33,49.34,49.35,49.36,49.37,49.38,49.39,49.4,49.41,49.42,49.43,49.44,49.45,49.46,49.47,49.48,49.49,49.5,49.51,49.52,49.53,49.54,49.55,49.56,49.57,49.58,49.59,49.6,49.61,49.62,49.63,49.64,49.65,49.66,49.67,49.68,49.69,49.7,49.71,49.72,49.73,49.74,49.75,49.76,49.77,49.78,49.79,49.8,49.81,49.82,49.83,49.84,49.85,49.86,49.87,49.88,49.89,49.9,49.91,49.92,49.93,49.94,49.95,49.96,49.97,49.98,49.99,50,50.01,50.02,50.03,50.04,50.05,50.06,50.07,50.08,50.09,50.1,50.11,50.12,50.13,50.14,50.15,50.16,50.17,50.18,50.19,50.2,50.21,50.22,50.23,50.24,50.25,50.26,50.27,50.28,50.29,50.3,50.31,50.32,50.33,50.34,50.35,50.36,50.37,50.38,50.39,50.4,50.41,50.42,50.43,50.44,50.45,50.46,50.47,50.48,50.49,50.5,50.51,50.52,50.53,50.54,50.55,50.56,50.57,50.58,50.59,50.6,50.61,50.62,50.63,50.64,50.65,50.66,50.67,50.68,50.69,50.7,50.71,50.72,50.73,50.74,50.75,50.76,50.77,50.78,50.79,50.8,50.81,50.82,50.83,50.84,50.85,50.86,50.87,50.88,50.89,50.9,50.91,50.92,50.93,50.94,50.95,50.96,50.97,50.98,50.99,51,51.01,51.02,51.03,51.04,51.05,51.06,51.07,51.08,51.09,51.1,51.11,51.12,51.13,51.14,51.15,51.16,51.17,51.18,51.19,51.2,51.21,51.22,51.23,51.24,51.25,51.26,51.27,51.28,51.29,51.3,51.31,51.32,51.33,51.34,51.35,51.36,51.37,51.38,51.39,51.4,51.41,51.42,51.43,51.44,51.45,51.46,51.47,51.48,51.49,51.5,51.51,51.52,51.53,51.54,51.55,51.56,51.57,51.58,51.59,51.6,51.61,51.62,51.63,51.64,51.65,51.66,51.67,51.68,51.69,51.7,51.71,51.72,51.73,51.74,51.75,51.76,51.77,51.78,51.79,51.8,51.81,51.82,51.83,51.84,51.85,51.86,51.87,51.88,51.89,51.9,51.91,51.92,51.93,51.94,51.95,51.96,51.97,51.98,51.99,52,52.01,52.02,52.03,52.04,52.05,52.06,52.07,52.08,52.09,52.1,52.11,52.12,52.13,52.14,52.15,52.16,52.17,52.18,52.19,52.2,52.21,52.22,52.23,52.24,52.25,52.26,52.27,52.28,52.29,52.3,52.31,52.32,52.33,52.34,52.35,52.36,52.37,52.38,52.39,52.4,52.41,52.42,52.43,52.44,52.45,52.46,52.47,52.48,52.49,52.5,52.51,52.52,52.53,52.54,52.55,52.56,52.57,52.58,52.59,52.6,52.61,52.62,52.63,52.64,52.65,52.66,52.67,52.68,52.69,52.7,52.71,52.72,52.73,52.74,52.75,52.76,52.77,52.78,52.79,52.8,52.81,52.82,52.83,52.84,52.85,52.86,52.87,52.88,52.89,52.9,52.91,52.92,52.93,52.94,52.95,52.96,52.97,52.98,52.99,53,53.01,53.02,53.03,53.04,53.05,53.06,53.07,53.08,53.09,53.1,53.11,53.12,53.13,53.14,53.15,53.16,53.17,53.18,53.19,53.2,53.21,53.22,53.23,53.24,53.25,53.26,53.27,53.28,53.29,53.3,53.31,53.32,53.33,53.34,53.35,53.36,53.37,53.38,53.39,53.4,53.41,53.42,53.43,53.44,53.45,53.46,53.47,53.48,53.49,53.5,53.51,53.52,53.53,53.54,53.55,53.56,53.57,53.58,53.59,53.6,53.61,53.62,53.63,53.64,53.65,53.66,53.67,53.68,53.69,53.7,53.71,53.72,53.73,53.74,53.75,53.76,53.77,53.78,53.79,53.8,53.81,53.82,53.83,53.84,53.85,53.86,53.87,53.88,53.89,53.9,53.91,53.92,53.93,53.94,53.95,53.96,53.97,53.98,53.99,54,54.01,54.02,54.03,54.04,54.05,54.06,54.07,54.08,54.09,54.1,54.11,54.12,54.13,54.14,54.15,54.16,54.17,54.18,54.19,54.2,54.21,54.22,54.23,54.24,54.25,54.26,54.27,54.28,54.29,54.3,54.31,54.32,54.33,54.34,54.35,54.36,54.37,54.38,54.39,54.4,54.41,54.42,54.43,54.44,54.45,54.46,54.47,54.48,54.49,54.5,54.51,54.52,54.53,54.54,54.55,54.56,54.57,54.58,54.59,54.6,54.61,54.62,54.63,54.64,54.65,54.66,54.67,54.68,54.69,54.7,54.71,54.72,54.73,54.74,54.75,54.76,54.77,54.78,54.79,54.8,54.81,54.82,54.83,54.84,54.85,54.86,54.87,54.88,54.89,54.9,54.91,54.92,54.93,54.94,54.95,54.96,54.97,54.98,54.99,55,55.01,55.02,55.03,55.04,55.05,55.06,55.07,55.08,55.09,55.1,55.11,55.12,55.13,55.14,55.15,55.16,55.17,55.18,55.19,55.2,55.21,55.22,55.23,55.24,55.25,55.26,55.27,55.28,55.29,55.3,55.31,55.32,55.33,55.34,55.35,55.36,55.37,55.38,55.39,55.4,55.41,55.42,55.43,55.44,55.45,55.46,55.47,55.48,55.49,55.5,55.51,55.52,55.53,55.54,55.55,55.56,55.57,55.58,55.59,55.6,55.61,55.62,55.63,55.64,55.65,55.66,55.67,55.68,55.69,55.7,55.71,55.72,55.73,55.74,55.75,55.76,55.77,55.78,55.79,55.8,55.81,55.82,55.83,55.84,55.85,55.86,55.87,55.88,55.89,55.9,55.91,55.92,55.93,55.94,55.95,55.96,55.97,55.98,55.99,56,56.01,56.02,56.03,56.04,56.05,56.06,56.07,56.08,56.09,56.1,56.11,56.12,56.13,56.14,56.15,56.16,56.17,56.18,56.19,56.2,56.21,56.22,56.23,56.24,56.25,56.26,56.27,56.28,56.29,56.3,56.31,56.32,56.33,56.34,56.35,56.36,56.37,56.38,56.39,56.4,56.41,56.42,56.43,56.44,56.45,56.46,56.47,56.48,56.49,56.5,56.51,56.52,56.53,56.54,56.55,56.56,56.57,56.58,56.59,56.6,56.61,56.62,56.63,56.64,56.65,56.66,56.67,56.68,56.69,56.7,56.71,56.72,56.73,56.74,56.75,56.76,56.77,56.78,56.79,56.8,56.81,56.82,56.83,56.84,56.85,56.86,56.87,56.88,56.89,56.9,56.91,56.92,56.93,56.94,56.95,56.96,56.97,56.98,56.99,57,57.01,57.02,57.03,57.04,57.05,57.06,57.07,57.08,57.09,57.1,57.11,57.12,57.13,57.14,57.15,57.16,57.17,57.18,57.19,57.2,57.21,57.22,57.23,57.24,57.25,57.26,57.27,57.28,57.29,57.3,57.31,57.32,57.33,57.34,57.35,57.36,57.37,57.38,57.39,57.4,57.41,57.42,57.43,57.44,57.45,57.46,57.47,57.48,57.49,57.5,57.51,57.52,57.53,57.54,57.55,57.56,57.57,57.58,57.59,57.6,57.61,57.62,57.63,57.64,57.65,57.66,57.67,57.68,57.69,57.7,57.71,57.72,57.73,57.74,57.75,57.76,57.77,57.78,57.79,57.8,57.81,57.82,57.83,57.84,57.85,57.86,57.87,57.88,57.89,57.9,57.91,57.92,57.93,57.94,57.95,57.96,57.97,57.98,57.99,58,58.01,58.02,58.03,58.04,58.05,58.06,58.07,58.08,58.09,58.1,58.11,58.12,58.13,58.14,58.15,58.16,58.17,58.18,58.19,58.2,58.21,58.22,58.23,58.24,58.25,58.26,58.27,58.28,58.29,58.3,58.31,58.32,58.33,58.34,58.35,58.36,58.37,58.38,58.39,58.4,58.41,58.42,58.43,58.44,58.45,58.46,58.47,58.48,58.49,58.5,58.51,58.52,58.53,58.54,58.55,58.56,58.57,58.58,58.59,58.6,58.61,58.62,58.63,58.64,58.65,58.66,58.67,58.68,58.69,58.7,58.71,58.72,58.73,58.74,58.75,58.76,58.77,58.78,58.79,58.8,58.81,58.82,58.83,58.84,58.85,58.86,58.87,58.88,58.89,58.9,58.91,58.92,58.93,58.94,58.95,58.96,58.97,58.98,58.99,59,59.01,59.02,59.03,59.04,59.05,59.06,59.07,59.08,59.09,59.1,59.11,59.12,59.13,59.14,59.15,59.16,59.17,59.18,59.19,59.2,59.21,59.22,59.23,59.24,59.25,59.26,59.27,59.28,59.29,59.3,59.31,59.32,59.33,59.34,59.35,59.36,59.37,59.38,59.39,59.4,59.41,59.42,59.43,59.44,59.45,59.46,59.47,59.48,59.49,59.5,59.51,59.52,59.53,59.54,59.55,59.56,59.57,59.58,59.59,59.6,59.61,59.62,59.63,59.64,59.65,59.66,59.67,59.68,59.69,59.7,59.71,59.72,59.73,59.74,59.75,59.76,59.77,59.78,59.79,59.8,59.81,59.82,59.83,59.84,59.85,59.86,59.87,59.88,59.89,59.9,59.91,59.92,59.93,59.94,59.95,59.96,59.97,59.98,59.99,60,60.01,60.02,60.03,60.04,60.05,60.06,60.07,60.08,60.09,60.1,60.11,60.12,60.13,60.14,60.15,60.16,60.17,60.18,60.19,60.2,60.21,60.22,60.23,60.24,60.25,60.26,60.27,60.28,60.29,60.3,60.31,60.32,60.33,60.34,60.35,60.36,60.37,60.38,60.39,60.4,60.41,60.42,60.43,60.44,60.45,60.46,60.47,60.48,60.49,60.5,60.51,60.52,60.53,60.54,60.55,60.56,60.57,60.58,60.59,60.6,60.61,60.62,60.63,60.64,60.65,60.66,60.67,60.68,60.69,60.7,60.71,60.72,60.73,60.74,60.75,60.76,60.77,60.78,60.79,60.8,60.81,60.82,60.83,60.84,60.85,60.86,60.87,60.88,60.89,60.9,60.91,60.92,60.93,60.94,60.95,60.96,60.97,60.98,60.99,61,61.01,61.02,61.03,61.04,61.05,61.06,61.07,61.08,61.09,61.1,61.11,61.12,61.13,61.14,61.15,61.16,61.17,61.18,61.19,61.2,61.21,61.22,61.23,61.24,61.25,61.26,61.27,61.28,61.29,61.3,61.31,61.32,61.33,61.34,61.35,61.36,61.37,61.38,61.39,61.4,61.41,61.42,61.43,61.44,61.45,61.46,61.47,61.48,61.49,61.5,61.51,61.52,61.53,61.54,61.55,61.56,61.57,61.58,61.59,61.6,61.61,61.62,61.63,61.64,61.65,61.66,61.67,61.68,61.69,61.7,61.71,61.72,61.73,61.74,61.75,61.76,61.77,61.78,61.79,61.8,61.81,61.82,61.83,61.84,61.85,61.86,61.87,61.88,61.89,61.9,61.91,61.92,61.93,61.94,61.95,61.96,61.97,61.98,61.99,62,62.01,62.02,62.03,62.04,62.05,62.06,62.07,62.08,62.09,62.1,62.11,62.12,62.13,62.14,62.15,62.16,62.17,62.18,62.19,62.2,62.21,62.22,62.23,62.24,62.25,62.26,62.27,62.28,62.29,62.3,62.31,62.32,62.33,62.34,62.35,62.36,62.37,62.38,62.39,62.4,62.41,62.42,62.43,62.44,62.45,62.46,62.47,62.48,62.49,62.5,62.51,62.52,62.53,62.54,62.55,62.56,62.57,62.58,62.59,62.6,62.61,62.62,62.63,62.64,62.65,62.66,62.67,62.68,62.69,62.7,62.71,62.72,62.73,62.74,62.75,62.76,62.77,62.78,62.79,62.8,62.81,62.82,62.83,62.84,62.85,62.86,62.87,62.88,62.89,62.9,62.91,62.92,62.93,62.94,62.95,62.96,62.97,62.98,62.99,63,63.01,63.02,63.03,63.04,63.05,63.06,63.07,63.08,63.09,63.1,63.11,63.12,63.13,63.14,63.15,63.16,63.17,63.18,63.19,63.2,63.21,63.22,63.23,63.24,63.25,63.26,63.27,63.28,63.29,63.3,63.31,63.32,63.33,63.34,63.35,63.36,63.37,63.38,63.39,63.4,63.41,63.42,63.43,63.44,63.45,63.46,63.47,63.48,63.49,63.5,63.51,63.52,63.53,63.54,63.55,63.56,63.57,63.58,63.59,63.6,63.61,63.62,63.63,63.64,63.65,63.66,63.67,63.68,63.69,63.7,63.71,63.72,63.73,63.74,63.75,63.76,63.77,63.78,63.79,63.8,63.81,63.82,63.83,63.84,63.85,63.86,63.87,63.88,63.89,63.9,63.91,63.92,63.93,63.94,63.95,63.96,63.97,63.98,63.99,64,64.01,64.02,64.03,64.04,64.05,64.06,64.07,64.08,64.09,64.1,64.11,64.12,64.13,64.14,64.15,64.16,64.17,64.18,64.19,64.2,64.21,64.22,64.23,64.24,64.25,64.26,64.27,64.28,64.29,64.3,64.31,64.32,64.33,64.34,64.35,64.36,64.37,64.38,64.39,64.4,64.41,64.42,64.43,64.44,64.45,64.46,64.47,64.48,64.49,64.5,64.51,64.52,64.53,64.54,64.55,64.56,64.57,64.58,64.59,64.6,64.61,64.62,64.63,64.64,64.65,64.66,64.67,64.68,64.69,64.7,64.71,64.72,64.73,64.74,64.75,64.76,64.77,64.78,64.79,64.8,64.81,64.82,64.83,64.84,64.85,64.86,64.87,64.88,64.89,64.9,64.91,64.92,64.93,64.94,64.95,64.96,64.97,64.98,64.99,65,65.01,65.02,65.03,65.04,65.05,65.06,65.07,65.08,65.09,65.1,65.11,65.12,65.13,65.14,65.15,65.16,65.17,65.18,65.19,65.2,65.21,65.22,65.23,65.24,65.25,65.26,65.27,65.28,65.29,65.3,65.31,65.32,65.33,65.34,65.35,65.36,65.37,65.38,65.39,65.4,65.41,65.42,65.43,65.44,65.45,65.46,65.47,65.48,65.49,65.5,65.51,65.52,65.53,65.54,65.55,65.56,65.57,65.58,65.59,65.6,65.61,65.62,65.63,65.64,65.65,65.66,65.67,65.68,65.69,65.7,65.71,65.72,65.73,65.74,65.75,65.76,65.77,65.78,65.79,65.8,65.81,65.82,65.83,65.84,65.85,65.86,65.87,65.88,65.89,65.9,65.91,65.92,65.93,65.94,65.95,65.96,65.97,65.98,65.99,66,66.01,66.02,66.03,66.04,66.05,66.06,66.07,66.08,66.09,66.1,66.11,66.12,66.13,66.14,66.15,66.16,66.17,66.18,66.19,66.2,66.21,66.22,66.23,66.24,66.25,66.26,66.27,66.28,66.29,66.3,66.31,66.32,66.33,66.34,66.35,66.36,66.37,66.38,66.39,66.4,66.41,66.42,66.43,66.44,66.45,66.46,66.47,66.48,66.49,66.5,66.51,66.52,66.53,66.54,66.55,66.56,66.57,66.58,66.59,66.6,66.61,66.62,66.63,66.64,66.65,66.66,66.67,66.68,66.69,66.7,66.71,66.72,66.73,66.74,66.75,66.76,66.77,66.78,66.79,66.8,66.81,66.82,66.83,66.84,66.85,66.86,66.87,66.88,66.89,66.9,66.91,66.92,66.93,66.94,66.95,66.96,66.97,66.98,66.99,67,67.01,67.02,67.03,67.04,67.05,67.06,67.07,67.08,67.09,67.1,67.11,67.12,67.13,67.14,67.15,67.16,67.17,67.18,67.19,67.2,67.21,67.22,67.23,67.24,67.25,67.26,67.27,67.28,67.29,67.3,67.31,67.32,67.33,67.34,67.35,67.36,67.37,67.38,67.39,67.4,67.41,67.42,67.43,67.44,67.45,67.46,67.47,67.48,67.49,67.5,67.51,67.52,67.53,67.54,67.55,67.56,67.57,67.58,67.59,67.6,67.61,67.62,67.63,67.64,67.65,67.66,67.67,67.68,67.69,67.7,67.71,67.72,67.73,67.74,67.75,67.76,67.77,67.78,67.79,67.8,67.81,67.82,67.83,67.84,67.85,67.86,67.87,67.88,67.89,67.9,67.91,67.92,67.93,67.94,67.95,67.96,67.97,67.98,67.99,68,68.01,68.02,68.03,68.04,68.05,68.06,68.07,68.08,68.09,68.1,68.11,68.12,68.13,68.14,68.15,68.16,68.17,68.18,68.19,68.2,68.21,68.22,68.23,68.24,68.25,68.26,68.27,68.28,68.29,68.3,68.31,68.32,68.33,68.34,68.35,68.36,68.37,68.38,68.39,68.4,68.41,68.42,68.43,68.44,68.45,68.46,68.47,68.48,68.49,68.5,68.51,68.52,68.53,68.54,68.55,68.56,68.57,68.58,68.59,68.6,68.61,68.62,68.63,68.64,68.65,68.66,68.67,68.68,68.69,68.7,68.71,68.72,68.73,68.74,68.75,68.76,68.77,68.78,68.79,68.8,68.81,68.82,68.83,68.84,68.85,68.86,68.87,68.88,68.89,68.9,68.91,68.92,68.93,68.94,68.95,68.96,68.97,68.98,68.99,69,69.01,69.02,69.03,69.04,69.05,69.06,69.07,69.08,69.09,69.1,69.11,69.12,69.13,69.14,69.15,69.16,69.17,69.18,69.19,69.2,69.21,69.22,69.23,69.24,69.25,69.26,69.27,69.28,69.29,69.3,69.31,69.32,69.33,69.34,69.35,69.36,69.37,69.38,69.39,69.4,69.41,69.42,69.43,69.44,69.45,69.46,69.47,69.48,69.49,69.5,69.51,69.52,69.53,69.54,69.55,69.56,69.57,69.58,69.59,69.6,69.61,69.62,69.63,69.64,69.65,69.66,69.67,69.68,69.69,69.7,69.71,69.72,69.73,69.74,69.75,69.76,69.77,69.78,69.79,69.8,69.81,69.82,69.83,69.84,69.85,69.86,69.87,69.88,69.89,69.9,69.91,69.92,69.93,69.94,69.95,69.96,69.97,69.98,69.99,70,70.01,70.02,70.03,70.04,70.05,70.06,70.07,70.08,70.09,70.1,70.11,70.12,70.13,70.14,70.15,70.16,70.17,70.18,70.19,70.2,70.21,70.22,70.23,70.24,70.25,70.26,70.27,70.28,70.29,70.3,70.31,70.32,70.33,70.34,70.35,70.36,70.37,70.38,70.39,70.4,70.41,70.42,70.43,70.44,70.45,70.46,70.47,70.48,70.49,70.5,70.51,70.52,70.53,70.54,70.55,70.56,70.57,70.58,70.59,70.6,70.61,70.62,70.63,70.64,70.65,70.66,70.67,70.68,70.69,70.7,70.71,70.72,70.73,70.74,70.75,70.76,70.77,70.78,70.79,70.8,70.81,70.82,70.83,70.84,70.85,70.86,70.87,70.88,70.89,70.9,70.91,70.92,70.93,70.94,70.95,70.96,70.97,70.98,70.99,71,71.01,71.02,71.03,71.04,71.05,71.06,71.07,71.08,71.09,71.1,71.11,71.12,71.13,71.14,71.15,71.16,71.17,71.18,71.19,71.2,71.21,71.22,71.23,71.24,71.25,71.26,71.27,71.28,71.29,71.3,71.31,71.32,71.33,71.34,71.35,71.36,71.37,71.38,71.39,71.4,71.41,71.42,71.43,71.44,71.45,71.46,71.47,71.48,71.49,71.5,71.51,71.52,71.53,71.54,71.55,71.56,71.57,71.58,71.59,71.6,71.61,71.62,71.63,71.64,71.65,71.66,71.67,71.68,71.69,71.7,71.71,71.72,71.73,71.74,71.75,71.76,71.77,71.78,71.79,71.8,71.81,71.82,71.83,71.84,71.85,71.86,71.87,71.88,71.89,71.9,71.91,71.92,71.93,71.94,71.95,71.96,71.97,71.98,71.99,72,72.01,72.02,72.03,72.04,72.05,72.06,72.07,72.08,72.09,72.1,72.11,72.12,72.13,72.14,72.15,72.16,72.17,72.18,72.19,72.2,72.21,72.22,72.23,72.24,72.25,72.26,72.27,72.28,72.29,72.3,72.31,72.32,72.33,72.34,72.35,72.36,72.37,72.38,72.39,72.4,72.41,72.42,72.43,72.44,72.45,72.46,72.47,72.48,72.49,72.5,72.51,72.52,72.53,72.54,72.55,72.56,72.57,72.58,72.59,72.6,72.61,72.62,72.63,72.64,72.65,72.66,72.67,72.68,72.69,72.7,72.71,72.72,72.73,72.74,72.75,72.76,72.77,72.78,72.79,72.8,72.81,72.82,72.83,72.84,72.85,72.86,72.87,72.88,72.89,72.9,72.91,72.92,72.93,72.94,72.95,72.96,72.97,72.98,72.99,73,73.01,73.02,73.03,73.04,73.05,73.06,73.07,73.08,73.09,73.1,73.11,73.12,73.13,73.14,73.15,73.16,73.17,73.18,73.19,73.2,73.21,73.22,73.23,73.24,73.25,73.26,73.27,73.28,73.29,73.3,73.31,73.32,73.33,73.34,73.35,73.36,73.37,73.38,73.39,73.4,73.41,73.42,73.43,73.44,73.45,73.46,73.47,73.48,73.49,73.5,73.51,73.52,73.53,73.54,73.55,73.56,73.57,73.58,73.59,73.6,73.61,73.62,73.63,73.64,73.65,73.66,73.67,73.68,73.69,73.7,73.71,73.72,73.73,73.74,73.75,73.76,73.77,73.78,73.79,73.8,73.81,73.82,73.83,73.84,73.85,73.86,73.87,73.88,73.89,73.9,73.91,73.92,73.93,73.94,73.95,73.96,73.97,73.98,73.99,74,74.01,74.02,74.03,74.04,74.05,74.06,74.07,74.08,74.09,74.1,74.11,74.12,74.13,74.14,74.15,74.16,74.17,74.18,74.19,74.2,74.21,74.22,74.23,74.24,74.25,74.26,74.27,74.28,74.29,74.3,74.31,74.32,74.33,74.34,74.35,74.36,74.37,74.38,74.39,74.4,74.41,74.42,74.43,74.44,74.45,74.46,74.47,74.48,74.49,74.5,74.51,74.52,74.53,74.54,74.55,74.56,74.57,74.58,74.59,74.6,74.61,74.62,74.63,74.64,74.65,74.66,74.67,74.68,74.69,74.7,74.71,74.72,74.73,74.74,74.75,74.76,74.77,74.78,74.79,74.8,74.81,74.82,74.83,74.84,74.85,74.86,74.87,74.88,74.89,74.9,74.91,74.92,74.93,74.94,74.95,74.96,74.97,74.98,74.99,75,75.01,75.02,75.03,75.04,75.05,75.06,75.07,75.08,75.09,75.1,75.11,75.12,75.13,75.14,75.15,75.16,75.17,75.18,75.19,75.2,75.21,75.22,75.23,75.24,75.25,75.26,75.27,75.28,75.29,75.3,75.31,75.32,75.33,75.34,75.35,75.36,75.37,75.38,75.39,75.4,75.41,75.42,75.43,75.44,75.45,75.46,75.47,75.48,75.49,75.5,75.51,75.52,75.53,75.54,75.55,75.56,75.57,75.58,75.59,75.6,75.61,75.62,75.63,75.64,75.65,75.66,75.67,75.68,75.69,75.7,75.71,75.72,75.73,75.74,75.75,75.76,75.77,75.78,75.79,75.8,75.81,75.82,75.83,75.84,75.85,75.86,75.87,75.88,75.89,75.9,75.91,75.92,75.93,75.94,75.95,75.96,75.97,75.98,75.99,76,76.01,76.02,76.03,76.04,76.05,76.06,76.07,76.08,76.09,76.1,76.11,76.12,76.13,76.14,76.15,76.16,76.17,76.18,76.19,76.2,76.21,76.22,76.23,76.24,76.25,76.26,76.27,76.28,76.29,76.3,76.31,76.32,76.33,76.34,76.35,76.36,76.37,76.38,76.39,76.4,76.41,76.42,76.43,76.44,76.45,76.46,76.47,76.48,76.49,76.5,76.51,76.52,76.53,76.54,76.55,76.56,76.57,76.58,76.59,76.6,76.61,76.62,76.63,76.64,76.65,76.66,76.67,76.68,76.69,76.7,76.71,76.72,76.73,76.74,76.75,76.76,76.77,76.78,76.79,76.8,76.81,76.82,76.83,76.84,76.85,76.86,76.87,76.88,76.89,76.9,76.91,76.92,76.93,76.94,76.95,76.96,76.97,76.98,76.99,77,77.01,77.02,77.03,77.04,77.05,77.06,77.07,77.08,77.09,77.1,77.11,77.12,77.13,77.14,77.15,77.16,77.17,77.18,77.19,77.2,77.21,77.22,77.23,77.24,77.25,77.26,77.27,77.28,77.29,77.3,77.31,77.32,77.33,77.34,77.35,77.36,77.37,77.38,77.39,77.4,77.41,77.42,77.43,77.44,77.45,77.46,77.47,77.48,77.49,77.5,77.51,77.52,77.53,77.54,77.55,77.56,77.57,77.58,77.59,77.6,77.61,77.62,77.63,77.64,77.65,77.66,77.67,77.68,77.69,77.7,77.71,77.72,77.73,77.74,77.75,77.76,77.77,77.78,77.79,77.8,77.81,77.82,77.83,77.84,77.85,77.86,77.87,77.88,77.89,77.9,77.91,77.92,77.93,77.94,77.95,77.96,77.97,77.98,77.99,78,78.01,78.02,78.03,78.04,78.05,78.06,78.07,78.08,78.09,78.1,78.11,78.12,78.13,78.14,78.15,78.16,78.17,78.18,78.19,78.2,78.21,78.22,78.23,78.24,78.25,78.26,78.27,78.28,78.29,78.3,78.31,78.32,78.33,78.34,78.35,78.36,78.37,78.38,78.39,78.4,78.41,78.42,78.43,78.44,78.45,78.46,78.47,78.48,78.49,78.5,78.51,78.52,78.53,78.54,78.55,78.56,78.57,78.58,78.59,78.6,78.61,78.62,78.63,78.64,78.65,78.66,78.67,78.68,78.69,78.7,78.71,78.72,78.73,78.74,78.75,78.76,78.77,78.78,78.79,78.8,78.81,78.82,78.83,78.84,78.85,78.86,78.87,78.88,78.89,78.9,78.91,78.92,78.93,78.94,78.95,78.96,78.97,78.98,78.99,79,79.01,79.02,79.03,79.04,79.05,79.06,79.07,79.08,79.09,79.1,79.11,79.12,79.13,79.14,79.15,79.16,79.17,79.18,79.19,79.2,79.21,79.22,79.23,79.24,79.25,79.26,79.27,79.28,79.29,79.3,79.31,79.32,79.33,79.34,79.35,79.36,79.37,79.38,79.39,79.4,79.41,79.42,79.43,79.44,79.45,79.46,79.47,79.48,79.49,79.5,79.51,79.52,79.53,79.54,79.55,79.56,79.57,79.58,79.59,79.6,79.61,79.62,79.63,79.64,79.65,79.66,79.67,79.68,79.69,79.7,79.71,79.72,79.73,79.74,79.75,79.76,79.77,79.78,79.79,79.8,79.81,79.82,79.83,79.84,79.85,79.86,79.87,79.88,79.89,79.9,79.91,79.92,79.93,79.94,79.95,79.96,79.97,79.98,79.99,80,80.01,80.02,80.03,80.04,80.05,80.06,80.07,80.08,80.09,80.1,80.11,80.12,80.13,80.14,80.15,80.16,80.17,80.18,80.19,80.2,80.21,80.22,80.23,80.24,80.25,80.26,80.27,80.28,80.29,80.3,80.31,80.32,80.33,80.34,80.35,80.36,80.37,80.38,80.39,80.4,80.41,80.42,80.43,80.44,80.45,80.46,80.47,80.48,80.49,80.5,80.51,80.52,80.53,80.54,80.55,80.56,80.57,80.58,80.59,80.6,80.61,80.62,80.63,80.64,80.65,80.66,80.67,80.68,80.69,80.7,80.71,80.72,80.73,80.74,80.75,80.76,80.77,80.78,80.79,80.8,80.81,80.82,80.83,80.84,80.85,80.86,80.87,80.88,80.89,80.9,80.91,80.92,80.93,80.94,80.95,80.96,80.97,80.98,80.99,81,81.01,81.02,81.03,81.04,81.05,81.06,81.07,81.08,81.09,81.1,81.11,81.12,81.13,81.14,81.15,81.16,81.17,81.18,81.19,81.2,81.21,81.22,81.23,81.24,81.25,81.26,81.27,81.28,81.29,81.3,81.31,81.32,81.33,81.34,81.35,81.36,81.37,81.38,81.39,81.4,81.41,81.42,81.43,81.44,81.45,81.46,81.47,81.48,81.49,81.5,81.51,81.52,81.53,81.54,81.55,81.56,81.57,81.58,81.59,81.6,81.61,81.62,81.63,81.64,81.65,81.66,81.67,81.68,81.69,81.7,81.71,81.72,81.73,81.74,81.75,81.76,81.77,81.78,81.79,81.8,81.81,81.82,81.83,81.84,81.85,81.86,81.87,81.88,81.89,81.9,81.91,81.92,81.93,81.94,81.95,81.96,81.97,81.98,81.99,82,82.01,82.02,82.03,82.04,82.05,82.06,82.07,82.08,82.09,82.1,82.11,82.12,82.13,82.14,82.15,82.16,82.17,82.18,82.19,82.2,82.21,82.22,82.23,82.24,82.25,82.26,82.27,82.28,82.29,82.3,82.31,82.32,82.33,82.34,82.35,82.36,82.37,82.38,82.39,82.4,82.41,82.42,82.43,82.44,82.45,82.46,82.47,82.48,82.49,82.5,82.51,82.52,82.53,82.54,82.55,82.56,82.57,82.58,82.59,82.6,82.61,82.62,82.63,82.64,82.65,82.66,82.67,82.68,82.69,82.7,82.71,82.72,82.73,82.74,82.75,82.76,82.77,82.78,82.79,82.8,82.81,82.82,82.83,82.84,82.85,82.86,82.87,82.88,82.89,82.9,82.91,82.92,82.93,82.94,82.95,82.96,82.97,82.98,82.99,83,83.01,83.02,83.03,83.04,83.05,83.06,83.07,83.08,83.09,83.1,83.11,83.12,83.13,83.14,83.15,83.16,83.17,83.18,83.19,83.2,83.21,83.22,83.23,83.24,83.25,83.26,83.27,83.28,83.29,83.3,83.31,83.32,83.33,83.34,83.35,83.36,83.37,83.38,83.39,83.4,83.41,83.42,83.43,83.44,83.45,83.46,83.47,83.48,83.49,83.5,83.51,83.52,83.53,83.54,83.55,83.56,83.57,83.58,83.59,83.6,83.61,83.62,83.63,83.64,83.65,83.66,83.67,83.68,83.69,83.7,83.71,83.72,83.73,83.74,83.75,83.76,83.77,83.78,83.79,83.8,83.81,83.82,83.83,83.84,83.85,83.86,83.87,83.88,83.89,83.9,83.91,83.92,83.93,83.94,83.95,83.96,83.97,83.98,83.99,84,84.01,84.02,84.03,84.04,84.05,84.06,84.07,84.08,84.09,84.1,84.11,84.12,84.13,84.14,84.15,84.16,84.17,84.18,84.19,84.2,84.21,84.22,84.23,84.24,84.25,84.26,84.27,84.28,84.29,84.3,84.31,84.32,84.33,84.34,84.35,84.36,84.37,84.38,84.39,84.4,84.41,84.42,84.43,84.44,84.45,84.46,84.47,84.48,84.49,84.5,84.51,84.52,84.53,84.54,84.55,84.56,84.57,84.58,84.59,84.6,84.61,84.62,84.63,84.64,84.65,84.66,84.67,84.68,84.69,84.7,84.71,84.72,84.73,84.74,84.75,84.76,84.77,84.78,84.79,84.8,84.81,84.82,84.83,84.84,84.85,84.86,84.87,84.88,84.89,84.9,84.91,84.92,84.93,84.94,84.95,84.96,84.97,84.98,84.99,85,85.01,85.02,85.03,85.04,85.05,85.06,85.07,85.08,85.09,85.1,85.11,85.12,85.13,85.14,85.15,85.16,85.17,85.18,85.19,85.2,85.21,85.22,85.23,85.24,85.25,85.26,85.27,85.28,85.29,85.3,85.31,85.32,85.33,85.34,85.35,85.36,85.37,85.38,85.39,85.4,85.41,85.42,85.43,85.44,85.45,85.46,85.47,85.48,85.49,85.5,85.51,85.52,85.53,85.54,85.55,85.56,85.57,85.58,85.59,85.6,85.61,85.62,85.63,85.64,85.65,85.66,85.67,85.68,85.69,85.7,85.71,85.72,85.73,85.74,85.75,85.76,85.77,85.78,85.79,85.8,85.81,85.82,85.83,85.84,85.85,85.86,85.87,85.88,85.89,85.9,85.91,85.92,85.93,85.94,85.95,85.96,85.97,85.98,85.99,86,86.01,86.02,86.03,86.04,86.05,86.06,86.07,86.08,86.09,86.1,86.11,86.12,86.13,86.14,86.15,86.16,86.17,86.18,86.19,86.2,86.21,86.22,86.23,86.24,86.25,86.26,86.27,86.28,86.29,86.3,86.31,86.32,86.33,86.34,86.35,86.36,86.37,86.38,86.39,86.4,86.41,86.42,86.43,86.44,86.45,86.46,86.47,86.48,86.49,86.5,86.51,86.52,86.53,86.54,86.55,86.56,86.57,86.58,86.59,86.6,86.61,86.62,86.63,86.64,86.65,86.66,86.67,86.68,86.69,86.7,86.71,86.72,86.73,86.74,86.75,86.76,86.77,86.78,86.79,86.8,86.81,86.82,86.83,86.84,86.85,86.86,86.87,86.88,86.89,86.9,86.91,86.92,86.93,86.94,86.95,86.96,86.97,86.98,86.99,87,87.01,87.02,87.03,87.04,87.05,87.06,87.07,87.08,87.09,87.1,87.11,87.12,87.13,87.14,87.15,87.16,87.17,87.18,87.19,87.2,87.21,87.22,87.23,87.24,87.25,87.26,87.27,87.28,87.29,87.3,87.31,87.32,87.33,87.34,87.35,87.36,87.37,87.38,87.39,87.4,87.41,87.42,87.43,87.44,87.45,87.46,87.47,87.48,87.49,87.5,87.51,87.52,87.53,87.54,87.55,87.56,87.57,87.58,87.59,87.6,87.61,87.62,87.63,87.64,87.65,87.66,87.67,87.68,87.69,87.7,87.71,87.72,87.73,87.74,87.75,87.76,87.77,87.78,87.79,87.8,87.81,87.82,87.83,87.84,87.85,87.86,87.87,87.88,87.89,87.9,87.91,87.92,87.93,87.94,87.95,87.96,87.97,87.98,87.99,88,88.01,88.02,88.03,88.04,88.05,88.06,88.07,88.08,88.09,88.1,88.11,88.12,88.13,88.14,88.15,88.16,88.17,88.18,88.19,88.2,88.21,88.22,88.23,88.24,88.25,88.26,88.27,88.28,88.29,88.3,88.31,88.32,88.33,88.34,88.35,88.36,88.37,88.38,88.39,88.4,88.41,88.42,88.43,88.44,88.45,88.46,88.47,88.48,88.49,88.5,88.51,88.52,88.53,88.54,88.55,88.56,88.57,88.58,88.59,88.6,88.61,88.62,88.63,88.64,88.65,88.66,88.67,88.68,88.69,88.7,88.71,88.72,88.73,88.74,88.75,88.76,88.77,88.78,88.79,88.8,88.81,88.82,88.83,88.84,88.85,88.86,88.87,88.88,88.89,88.9,88.91,88.92,88.93,88.94,88.95,88.96,88.97,88.98,88.99,89,89.01,89.02,89.03,89.04,89.05,89.06,89.07,89.08,89.09,89.1,89.11,89.12,89.13,89.14,89.15,89.16,89.17,89.18,89.19,89.2,89.21,89.22,89.23,89.24,89.25,89.26,89.27,89.28,89.29,89.3,89.31,89.32,89.33,89.34,89.35,89.36,89.37,89.38,89.39,89.4,89.41,89.42,89.43,89.44,89.45,89.46,89.47,89.48,89.49,89.5,89.51,89.52,89.53,89.54,89.55,89.56,89.57,89.58,89.59,89.6,89.61,89.62,89.63,89.64,89.65,89.66,89.67,89.68,89.69,89.7,89.71,89.72,89.73,89.74,89.75,89.76,89.77,89.78,89.79,89.8,89.81,89.82,89.83,89.84,89.85,89.86,89.87,89.88,89.89,89.9,89.91,89.92,89.93,89.94,89.95,89.96,89.97,89.98,89.99,90,90.01,90.02,90.03,90.04,90.05,90.06,90.07,90.08,90.09,90.1,90.11,90.12,90.13,90.14,90.15,90.16,90.17,90.18,90.19,90.2,90.21,90.22,90.23,90.24,90.25,90.26,90.27,90.28,90.29,90.3,90.31,90.32,90.33,90.34,90.35,90.36,90.37,90.38,90.39,90.4,90.41,90.42,90.43,90.44,90.45,90.46,90.47,90.48,90.49,90.5,90.51,90.52,90.53,90.54,90.55,90.56,90.57,90.58,90.59,90.6,90.61,90.62,90.63,90.64,90.65,90.66,90.67,90.68,90.69,90.7,90.71,90.72,90.73,90.74,90.75,90.76,90.77,90.78,90.79,90.8,90.81,90.82,90.83,90.84,90.85,90.86,90.87,90.88,90.89,90.9,90.91,90.92,90.93,90.94,90.95,90.96,90.97,90.98,90.99,91,91.01,91.02,91.03,91.04,91.05,91.06,91.07,91.08,91.09,91.1,91.11,91.12,91.13,91.14,91.15,91.16,91.17,91.18,91.19,91.2,91.21,91.22,91.23,91.24,91.25,91.26,91.27,91.28,91.29,91.3,91.31,91.32,91.33,91.34,91.35,91.36,91.37,91.38,91.39,91.4,91.41,91.42,91.43,91.44,91.45,91.46,91.47,91.48,91.49,91.5,91.51,91.52,91.53,91.54,91.55,91.56,91.57,91.58,91.59,91.6,91.61,91.62,91.63,91.64,91.65,91.66,91.67,91.68,91.69,91.7,91.71,91.72,91.73,91.74,91.75,91.76,91.77,91.78,91.79,91.8,91.81,91.82,91.83,91.84,91.85,91.86,91.87,91.88,91.89,91.9,91.91,91.92,91.93,91.94,91.95,91.96,91.97,91.98,91.99,92,92.01,92.02,92.03,92.04,92.05,92.06,92.07,92.08,92.09,92.1,92.11,92.12,92.13,92.14,92.15,92.16,92.17,92.18,92.19,92.2,92.21,92.22,92.23,92.24,92.25,92.26,92.27,92.28,92.29,92.3,92.31,92.32,92.33,92.34,92.35,92.36,92.37,92.38,92.39,92.4,92.41,92.42,92.43,92.44,92.45,92.46,92.47,92.48,92.49,92.5,92.51,92.52,92.53,92.54,92.55,92.56,92.57,92.58,92.59,92.6,92.61,92.62,92.63,92.64,92.65,92.66,92.67,92.68,92.69,92.7,92.71,92.72,92.73,92.74,92.75,92.76,92.77,92.78,92.79,92.8,92.81,92.82,92.83,92.84,92.85,92.86,92.87,92.88,92.89,92.9,92.91,92.92,92.93,92.94,92.95,92.96,92.97,92.98,92.99,93,93.01,93.02,93.03,93.04,93.05,93.06,93.07,93.08,93.09,93.1,93.11,93.12,93.13,93.14,93.15,93.16,93.17,93.18,93.19,93.2,93.21,93.22,93.23,93.24,93.25,93.26,93.27,93.28,93.29,93.3,93.31,93.32,93.33,93.34,93.35,93.36,93.37,93.38,93.39,93.4,93.41,93.42,93.43,93.44,93.45,93.46,93.47,93.48,93.49,93.5,93.51,93.52,93.53,93.54,93.55,93.56,93.57,93.58,93.59,93.6,93.61,93.62,93.63,93.64,93.65,93.66,93.67,93.68,93.69,93.7,93.71,93.72,93.73,93.74,93.75,93.76,93.77,93.78,93.79,93.8,93.81,93.82,93.83,93.84,93.85,93.86,93.87,93.88,93.89,93.9,93.91,93.92,93.93,93.94,93.95,93.96,93.97,93.98,93.99,94,94.01,94.02,94.03,94.04,94.05,94.06,94.07,94.08,94.09,94.1,94.11,94.12,94.13,94.14,94.15,94.16,94.17,94.18,94.19,94.2,94.21,94.22,94.23,94.24,94.25,94.26,94.27,94.28,94.29,94.3,94.31,94.32,94.33,94.34,94.35,94.36,94.37,94.38,94.39,94.4,94.41,94.42,94.43,94.44,94.45,94.46,94.47,94.48,94.49,94.5,94.51,94.52,94.53,94.54,94.55,94.56,94.57,94.58,94.59,94.6,94.61,94.62,94.63,94.64,94.65,94.66,94.67,94.68,94.69,94.7,94.71,94.72,94.73,94.74,94.75,94.76,94.77,94.78,94.79,94.8,94.81,94.82,94.83,94.84,94.85,94.86,94.87,94.88,94.89,94.9,94.91,94.92,94.93,94.94,94.95,94.96,94.97,94.98,94.99,95,95.01,95.02,95.03,95.04,95.05,95.06,95.07,95.08,95.09,95.1,95.11,95.12,95.13,95.14,95.15,95.16,95.17,95.18,95.19,95.2,95.21,95.22,95.23,95.24,95.25,95.26,95.27,95.28,95.29,95.3,95.31,95.32,95.33,95.34,95.35,95.36,95.37,95.38,95.39,95.4,95.41,95.42,95.43,95.44,95.45,95.46,95.47,95.48,95.49,95.5,95.51,95.52,95.53,95.54,95.55,95.56,95.57,95.58,95.59,95.6,95.61,95.62,95.63,95.64,95.65,95.66,95.67,95.68,95.69,95.7,95.71,95.72,95.73,95.74,95.75,95.76,95.77,95.78,95.79,95.8,95.81,95.82,95.83,95.84,95.85,95.86,95.87,95.88,95.89,95.9,95.91,95.92,95.93,95.94,95.95,95.96,95.97,95.98,95.99,96,96.01,96.02,96.03,96.04,96.05,96.06,96.07,96.08,96.09,96.1,96.11,96.12,96.13,96.14,96.15,96.16,96.17,96.18,96.19,96.2,96.21,96.22,96.23,96.24,96.25,96.26,96.27,96.28,96.29,96.3,96.31,96.32,96.33,96.34,96.35,96.36,96.37,96.38,96.39,96.4,96.41,96.42,96.43,96.44,96.45,96.46,96.47,96.48,96.49,96.5,96.51,96.52,96.53,96.54,96.55,96.56,96.57,96.58,96.59,96.6,96.61,96.62,96.63,96.64,96.65,96.66,96.67,96.68,96.69,96.7,96.71,96.72,96.73,96.74,96.75,96.76,96.77,96.78,96.79,96.8,96.81,96.82,96.83,96.84,96.85,96.86,96.87,96.88,96.89,96.9,96.91,96.92,96.93,96.94,96.95,96.96,96.97,96.98,96.99,97,97.01,97.02,97.03,97.04,97.05,97.06,97.07,97.08,97.09,97.1,97.11,97.12,97.13,97.14,97.15,97.16,97.17,97.18,97.19,97.2,97.21,97.22,97.23,97.24,97.25,97.26,97.27,97.28,97.29,97.3,97.31,97.32,97.33,97.34,97.35,97.36,97.37,97.38,97.39,97.4,97.41,97.42,97.43,97.44,97.45,97.46,97.47,97.48,97.49,97.5,97.51,97.52,97.53,97.54,97.55,97.56,97.57,97.58,97.59,97.6,97.61,97.62,97.63,97.64,97.65,97.66,97.67,97.68,97.69,97.7,97.71,97.72,97.73,97.74,97.75,97.76,97.77,97.78,97.79,97.8,97.81,97.82,97.83,97.84,97.85,97.86,97.87,97.88,97.89,97.9,97.91,97.92,97.93,97.94,97.95,97.96,97.97,97.98,97.99,98,98.01,98.02,98.03,98.04,98.05,98.06,98.07,98.08,98.09,98.1,98.11,98.12,98.13,98.14,98.15,98.16,98.17,98.18,98.19,98.2,98.21,98.22,98.23,98.24,98.25,98.26,98.27,98.28,98.29,98.3,98.31,98.32,98.33,98.34,98.35,98.36,98.37,98.38,98.39,98.4,98.41,98.42,98.43,98.44,98.45,98.46,98.47,98.48,98.49,98.5,98.51,98.52,98.53,98.54,98.55,98.56,98.57,98.58,98.59,98.6,98.61,98.62,98.63,98.64,98.65,98.66,98.67,98.68,98.69,98.7,98.71,98.72,98.73,98.74,98.75,98.76,98.77,98.78,98.79,98.8,98.81,98.82,98.83,98.84,98.85,98.86,98.87,98.88,98.89,98.9,98.91,98.92,98.93,98.94,98.95,98.96,98.97,98.98,98.99,99,99.01,99.02,99.03,99.04,99.05,99.06,99.07,99.08,99.09,99.1,99.11,99.12,99.13,99.14,99.15,99.16,99.17,99.18,99.19,99.2,99.21,99.22,99.23,99.24,99.25,99.26,99.27,99.28,99.29,99.3,99.31,99.32,99.33,99.34,99.35,99.36,99.37,99.38,99.39,99.4,99.41,99.42,99.43,99.44,99.45,99.46,99.47,99.48,99.49,99.5,99.51,99.52,99.53,99.54,99.55,99.56,99.57,99.58,99.59,99.6,99.61,99.62,99.63,99.64,99.65,99.66,99.67,99.68,99.69,99.7,99.71,99.72,99.73,99.74,99.75,99.76,99.77,99.78,99.79,99.8,99.81,99.82,99.83,99.84,99.85,99.86,99.87,99.88,99.89,99.9,99.91,99.92,99.93,99.94,99.95,99.96,99.97,99.98,99.99,100] diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/runner.R b/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/runner.R index cf949f78735b..7d30f12ab2e7 100755 --- a/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/runner.R +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/test/fixtures/r/runner.R @@ -77,15 +77,19 @@ main <- function() { source_dir <- dirname( get_script_path() ); # Generate a sequence of numbers for which to calculate `log1pexp`: - data <- seq( -100.0, 100.0, 0.1 ); + x <- seq( -100.0, 100.0, 0.01 ); # Calculate `log1pexp` for each value: - expected <- lapply( data, VGAM::log1pexp ); + expected <- lapply( x, VGAM::log1pexp ); # Convert fixture data to JSON: + x <- to_json( x ); expected <- to_json( expected ); # Write the data to file... + filepath <- get_filepath( "data.json" ); + write( x, filepath ); + filepath <- get_filepath( "expected.json" ); write( expected, filepath ); } From 7f5158bd93aa198fcd5f1afa07c95763398c03a9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 18:58:23 -0700 Subject: [PATCH 0690/1062] Update tests --- .../math/base/special/log1pexp/README.md | 4 +- .../math/base/special/log1pexp/package.json | 2 +- .../math/base/special/log1pexp/test/test.js | 53 +++++++++---------- 3 files changed, 27 insertions(+), 32 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/README.md b/lib/node_modules/@stdlib/math/base/special/log1pexp/README.md index 52a5f6fb9450..19fb2b746c74 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1pexp/README.md +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/README.md @@ -20,7 +20,7 @@ limitations under the License. # log1pexp -> Evaluates the [natural logarithm][@stdlib/math/base/special/ln] of `1 + exp(x)`. +> Evaluates the [natural logarithm][@stdlib/math/base/special/ln] of `1+exp(x)`.
@@ -32,7 +32,7 @@ var log1pexp = require( '@stdlib/math/base/special/log1pexp' ); #### log1pexp( x ) -Evaluates the [natural logarithm][@stdlib/math/base/special/ln] of `1 + exp(x)`. +Evaluates the [natural logarithm][@stdlib/math/base/special/ln] of `1+exp(x)`. ```javascript var y = log1pexp( -10.0 ); diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/package.json b/lib/node_modules/@stdlib/math/base/special/log1pexp/package.json index b4f41c1c8cfe..7d0c79730644 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1pexp/package.json +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/math/base/special/log1pexp", "version": "0.0.0", - "description": "Evaluate the natural logarithm of 1 + exp(x).", + "description": "Evaluate the natural logarithm of 1+exp(x).", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/math/base/special/log1pexp/test/test.js b/lib/node_modules/@stdlib/math/base/special/log1pexp/test/test.js index 1dbee7722595..7ba5a9f7dec4 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1pexp/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/log1pexp/test/test.js @@ -22,7 +22,7 @@ var tape = require( 'tape' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var incrspace = require( '@stdlib/math/utils/incrspace' ); +var randu = require( '@stdlib/random/base/randu' ); var abs = require( '@stdlib/math/base/special/abs' ); var exp = require( '@stdlib/math/base/special/exp' ); var EPS = require( '@stdlib/constants/math/float64-eps' ); @@ -31,6 +31,7 @@ var log1pexp = require( './../lib' ); // FIXTURES // +var data = require( './fixtures/r/data.json' ); var expected = require( './fixtures/r/expected.json' ); @@ -48,54 +49,48 @@ tape( 'if provided `NaN`, the function returns `NaN`', function test( t ) { t.end(); }); -tape( 'if `x <= -37`, the function returns `exp(x)`', function test( t ) { - var values; +tape( 'the function computes the natural logarithm of `1+exp(x)` (`x <= -37`)', function test( t ) { var x; var y; + var v; var i; - values = incrspace( -100.0, -37.0, 0.2 ); - for ( i = 0; i < values.length; i++ ) { - x = log1pexp( values[ i ] ); - y = exp( values[ i ] ); - t.strictEqual( x, y, 'returns '+y+' when provided ' + values[ i ] ); + for ( i = 0; i < 1e3; i++ ) { + v = -37.0 - ( randu()*100.0 ); + x = log1pexp( v ); + y = exp( v ); + t.strictEqual( x, y, 'returns '+y+' when provided '+v ); } t.end(); }); -tape( 'if `x > 33.3`, the function returns `x`', function test( t ) { - var values; +tape( 'the function computes the natural logarithm of `1+exp(x)` (`x > 33.3`)', function test( t ) { var x; - var y; + var v; var i; - values = incrspace( 33.4, 100, 0.2 ); - for ( i = 0; i < values.length; i++ ) { - x = log1pexp( values[ i ] ); - y = values[ i ]; - t.strictEqual( x, y, 'returns '+y+' when provided ' + values[ i ] ); + for ( i = 0; i < 1e3; i++ ) { + v = 33.3 + EPS + ( randu()*100.0 ); + x = log1pexp( v ); + t.strictEqual( x, v, 'returns '+v+' when provided '+v ); } t.end(); }); -tape( 'the function accurately computes the natural logarithm of 1 + exp(x)', function test( t ) { - var values; +tape( 'the function accurately computes the natural logarithm of `1+exp(x)`', function test( t ) { + var actual; var delta; var tol; - var x; - var y; var i; - values = incrspace( -100.0, 100.0, 0.1 ); - for ( i = 0; i < values.length; i++ ) { - x = log1pexp( values[ i ] ); - y = expected[ i ]; - if ( x === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 'returns '+x+' when provided ' + values[ i ]); + for ( i = 0; i < data.length; i++ ) { + actual = log1pexp( data[ i ] ); + if ( actual === expected[ i ] ) { + t.strictEqual( actual, expected[ i ], 'returns '+actual+' when provided ' + data[ i ]); } else { - delta = abs( x - y ); - tol = 20.9 * EPS * abs( y ); - t.ok( delta <= tol, 'within tolerance. returns '+x+' when provided '+values[ i ]+'. expected: '+expected[ i ]+', Δ: '+delta+'.' ); + delta = abs( actual - expected[ i ] ); + tol = 85.0 * EPS * abs( expected[ i ] ); + t.ok( delta <= tol, 'within tolerance. x: '+data[ i ]+'. actual: '+actual+'. expected: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' ); } } t.end(); From 23be3bfa5fede7631f6b1d23af8a225772a8359a Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 18:58:48 -0700 Subject: [PATCH 0691/1062] Update REPL help --- lib/node_modules/@stdlib/repl/help/lib/db.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 62084466ee24..341f7eff2ac4 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -664,7 +664,7 @@ var db = { "base.log": "\nbase.log( x, b )\n Computes the base `b` logarithm of `x`.\n\n For negative `b` or `x`, the function returns `NaN`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n b: number\n Base.\n\n Returns\n -------\n y: number\n Logarithm (base `b`).\n\n Examples\n --------\n > var y = base.log( 100.0, 10.0 )\n 2.0\n > y = base.log( 16.0, 2.0 )\n 4.0\n > y = base.log( 5.0, 1.0 )\n Infinity\n > y = base.log( NaN, 2.0 )\n NaN\n > y = base.log( 1.0, NaN )\n NaN\n > y = base.log( -4.0, 2.0 )\n NaN\n > y = base.log( 4.0, -2.0 )\n NaN\n\n See Also\n --------\n base.exp, base.ln, base.log10, base.log1p, base.log2\n", "base.log1mexp": "\nbase.log1mexp( x )\n Evaluates the natural logarithm of `1-exp(-|x|)`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log1mexp( -10.0 )\n ~-0.00005\n > y = base.log1mexp( 0.0 )\n -Infinity\n > y = base.log1mexp( 5.0 )\n ~-0.00676\n > y = base.log1mexp( 10.0 )\n ~-0.00005\n > y = base.log1mexp( NaN )\n NaN\n\n See Also\n --------\n base.exp, base.ln, base.log1p, base.log1pexp", "base.log1p": "\nbase.log1p( x )\n Evaluates the natural logarithm of `1+x`.\n\n For `x < -1`, the function returns `NaN`, as the natural logarithm is not\n defined for negative numbers.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log1p( 4.0 )\n ~1.609\n > y = base.log1p( -1.0 )\n -Infinity\n > y = base.log1p( 0.0 )\n 0.0\n > y = base.log1p( -0.0 )\n -0.0\n > y = base.log1p( -2.0 )\n NaN\n > y = base.log1p( NaN )\n NaN\n\n See Also\n --------\n base.ln, base.log\n", - "base.log1pexp": "base.log1pexp( x )\n Evaluates the natural logarithm of `1+exp(x)`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log1pexp( -10.0 )\n ~0.000045\n > y = base.log1pexp( 0.0 )\n ~0.693147\n > y = base.log1pexp( 5.0 )\n ~5.006715\n > y = base.log1pexp( 34.0 )\n 34.0\n > y = base.log1pexp( NaN )\n NaN\n\n See Also\n --------\n base.exp, base.ln, base.log1mexp, base.log1p", + "base.log1pexp": "\nbase.log1pexp( x )\n Evaluates the natural logarithm of `1+exp(x)`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log1pexp( -10.0 )\n ~0.000045\n > y = base.log1pexp( 0.0 )\n ~0.693147\n > y = base.log1pexp( 5.0 )\n ~5.006715\n > y = base.log1pexp( 34.0 )\n 34.0\n > y = base.log1pexp( NaN )\n NaN\n\n See Also\n --------\n base.exp, base.ln, base.log1mexp, base.log1p", "base.log2": "\nbase.log2( x )\n Evaluates the binary logarithm (base two).\n\n For negative numbers, the binary logarithm is not defined.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log2( 4.0 )\n 2.0\n > y = base.log2( 8.0 )\n 3.0\n > y = base.log2( 0.0 )\n -Infinity\n > y = base.log2( PINF )\n Infinity\n > y = base.log2( NaN )\n NaN\n > y = base.log2( -4.0 )\n NaN\n\n See Also\n --------\n base.exp2, base.ln, base.log\n", "base.log10": "\nbase.log10( x )\n Evaluates the common logarithm (base 10).\n\n For negative numbers, the common logarithm is not defined.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log10( 100.0 )\n 2.0\n > y = base.log10( 8.0 )\n ~0.903\n > y = base.log10( 0.0 )\n -Infinity\n > y = base.log10( PINF )\n Infinity\n > y = base.log10( NaN )\n NaN\n > y = base.log10( -4.0 )\n NaN\n\n See Also\n --------\n base.exp10, base.ln, base.log\n", "base.logit": "\nbase.logit( p )\n Evaluates the logit function.\n\n Let `p` be the probability of some event. The logit function is defined as\n the logarithm of the odds `p / (1-p)`.\n\n If `p < 0` or `p > 1`, the function returns `NaN`.\n\n Parameters\n ----------\n p: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.logit( 0.2 )\n ~-1.386\n > y = base.logit( 0.9 )\n ~2.197\n > y = base.logit( -4.0 )\n NaN\n > y = base.logit( 1.5 )\n NaN\n > y = base.logit( NaN )\n NaN\n\n", From 8393dd880574eb7f3778d97a5dbbb77516db68af Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 4 Oct 2018 23:34:21 -0700 Subject: [PATCH 0692/1062] Reorder sections and document property --- .../@stdlib/random/base/minstd/docs/repl.txt | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt b/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt index f622d796d349..54d29bbd1a0d 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/minstd/docs/repl.txt @@ -89,14 +89,6 @@ 'minstd' -{{alias}}.seed - Pseudorandom number generator seed. - - Examples - -------- - > var seed = {{alias}}.seed; - - {{alias}}.MIN Minimum possible value. @@ -115,6 +107,22 @@ 2147483646 +{{alias}}.seed + Pseudorandom number generator seed. + + Examples + -------- + > var seed = {{alias}}.seed; + + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. From 71ee548192c1420bc3a554b46f464812f1b9ff6a Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 00:00:48 -0700 Subject: [PATCH 0693/1062] Refactor PRNG state management --- .../@stdlib/random/base/minstd/lib/factory.js | 271 ++++++++++++------ 1 file changed, 182 insertions(+), 89 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js b/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js index f902158b3e62..0aceb11a5d32 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd/lib/factory.js @@ -16,12 +16,15 @@ * limitations under the License. */ +/* eslint-disable max-len */ + 'use strict'; // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var hasOwnProp = require( '@stdlib/assert/has-own-property' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; @@ -40,6 +43,62 @@ var NORMALIZATION_CONSTANT = (INT32_MAX - 1)|0; // asm type annotation var MAX_SEED = (INT32_MAX - 1)|0; // asm type annotation var A = 16807|0; // asm type annotation +// Define the state array schema version: +var STATE_ARRAY_VERSION = 1; // NOTE: anytime the state array schema changes, this value should be incremented!!! + +// Define the number of sections in the state array: +var NUM_STATE_SECTIONS = 2; // state, seed + +// Define the index offset of the "state" section in the state array: +var STATE_SECTION_OFFSET = 2; // | version | num_sections | state_length | ...state | seed_length | ...seed | + +// Define the index offset of the seed section in the state array: +var SEED_SECTION_OFFSET = 4; // | version | num_sections | state_length | ...state | seed_length | ...seed | + +// Define the length of the "fixed" length portion of the state array: +var STATE_FIXED_LENGTH = 5; // 1 (version) + 1 (num_sections) + 1 (state_length) + 1 (state) + 1 (seed_length) + + +// FUNCTIONS // + +/** +* Verifies state array integrity. +* +* @private +* @param {Int32Array} state - state array +* @param {boolean} FLG - flag indicating whether the state array was provided as an option (true) or an argument (false) +* @returns {(Error|null)} an error or `null` +*/ +function verifyState( state, FLG ) { + var s1; + if ( FLG ) { + s1 = 'option'; + } else { + s1 = 'argument'; + } + // The state array must have a minimum length... + if ( state.length < STATE_FIXED_LENGTH+1 ) { + return new RangeError( 'invalid '+s1+'. `state` array has insufficient length.' ); + } + // The first element of the state array must equal the supported state array schema version... + if ( state[ 0 ] !== STATE_ARRAY_VERSION ) { + return new RangeError( 'invalid '+s1+'. `state` array has an incompatible schema version.' ); + } + // The second element of the state array must contain the number of sections... + if ( state[ 1 ] !== NUM_STATE_SECTIONS ) { + return new RangeError( 'invalid '+s1+'. `state` array has an incompatible number of sections.' ); + } + // The length of the "state" section must equal `1`... + if ( state[ STATE_SECTION_OFFSET ] !== 1 ) { + return new RangeError( 'invalid '+s1+'. `state` array has an incompatible state length.' ); + } + // The length of the "seed" section much match the empirical length... + if ( state[ SEED_SECTION_OFFSET ] !== state.length-STATE_FIXED_LENGTH ) { + return new RangeError( 'invalid '+s1+'. `state` array length is incompatible with seed section length.' ); + } + return null; +} + // MAIN // @@ -54,7 +113,7 @@ var A = 16807|0; // asm type annotation * @throws {TypeError} a seed must be either a positive integer less than the maximum signed 32-bit integer or an array-like object containing integers less than the maximum signed 32-bit integer * @throws {RangeError} a numeric seed must be a positive integer less than the maximum signed 32-bit integer * @throws {TypeError} state must be an `Int32Array` -* @throws {RangeError} insufficient state length +* @throws {Error} must provide a valid state * @throws {TypeError} `copy` option must be a boolean * @returns {Function} LCG PRNG * @@ -74,46 +133,51 @@ var A = 16807|0; // asm type annotation * // returns 20739838 */ function factory( options ) { + var STATE; var state; + var opts; var seed; var slen; + var err; + + opts = {}; if ( arguments.length ) { if ( !isObject( options ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + options + '`.' ); } if ( hasOwnProp( options, 'copy' ) ) { + opts.copy = options.copy; if ( !isBoolean( options.copy ) ) { throw new TypeError( 'invalid option. `copy` option must be a boolean. Option: `' + options.copy + '`.' ); } } if ( hasOwnProp( options, 'state' ) ) { state = options.state; + opts.state = true; if ( !isInt32Array( state ) ) { throw new TypeError( 'invalid option. `state` option must be an Int32Array. Option: `' + state + '`.' ); } - // Determine the seed length: - slen = state.length - 1; - if ( slen <= 0 ) { - throw new RangeError( 'invalid option. `state` option has insufficient length.' ); + err = verifyState( state, true ); + if ( err ) { + throw err; } - if ( options.copy === false ) { - // Create a state "view": - state = new Int32Array( state.buffer, state.byteOffset, 1 ); - - // Create a seed "view": - seed = new Int32Array( state.buffer, state.byteOffset+(1*state.BYTES_PER_ELEMENT), slen ); // eslint-disable-line max-len + if ( opts.copy === false ) { + STATE = state; } else { - // Extract the state: - state = gcopy( 1, state, 1, new Int32Array( 1 ), 1 ); - - // Extract the PRNG seed: - seed = gcopy.ndarray( slen, state, 1, 1, new Int32Array( slen ), 1, 0 ); // eslint-disable-line max-len + STATE = new Int32Array( state.length ); + gcopy( state.length, state, 1, STATE, 1 ); } + // Create a state "view": + state = new Int32Array( STATE.buffer, STATE.byteOffset+((STATE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), 1 ); + + // Create a seed "view": + seed = new Int32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), state[ SEED_SECTION_OFFSET ] ); } // If provided a PRNG state, we ignore the `seed` option... if ( seed === void 0 ) { if ( hasOwnProp( options, 'seed' ) ) { seed = options.seed; + opts.seed = true; if ( isPositiveInteger( seed ) ) { if ( seed > MAX_SEED ) { throw new RangeError( 'invalid option. `seed` option must be a positive integer less than the maximum signed 32-bit integer. Option: `' + seed + '`.' ); @@ -121,12 +185,24 @@ function factory( options ) { seed |= 0; // asm type annotation } else if ( isCollection( seed ) && seed.length > 0 ) { slen = seed.length; + STATE = new Int32Array( STATE_FIXED_LENGTH+slen ); + + // Initialize sections: + STATE[ 0 ] = STATE_ARRAY_VERSION; + STATE[ 1 ] = NUM_STATE_SECTIONS; + STATE[ STATE_SECTION_OFFSET ] = 1; + STATE[ SEED_SECTION_OFFSET ] = slen; + + // Copy the provided seed array to prevent external mutation, as mutation would lead to an inability to reproduce PRNG values according to the PRNG's stated seed: + gcopy.ndarray( slen, seed, 1, 0, STATE, 1, SEED_SECTION_OFFSET+1 ); - // Create an internal copy of the provided seed array to prevent the inability to reproduce PRNG values based on the PRNG's stated seed due to external state mutation: - seed = gcopy( slen, seed, 1, new Int32Array( slen ), 1 ); + // Create a state "view": + state = new Int32Array( STATE.buffer, STATE.byteOffset+((STATE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), 1 ); + + // Create a seed "view": + seed = new Int32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), slen ); // Initialize the internal PRNG state: - state = new Int32Array( 1 ); state[ 0 ] = seed[ 0 ]; } else { throw new TypeError( 'invalid option. `seed` option must be either a positive integer less than the maximum signed 32-bit integer or an array-like object containing integer values less than the maximum signed 32-bit integer. Option: `' + seed + '`.' ); @@ -139,60 +215,40 @@ function factory( options ) { seed = randint32()|0; // asm type annotation } if ( state === void 0 ) { - state = new Int32Array( 1 ); - state[ 0 ] = seed; + STATE = new Int32Array( STATE_FIXED_LENGTH+1 ); + + // Initialize sections: + STATE[ 0 ] = STATE_ARRAY_VERSION; + STATE[ 1 ] = NUM_STATE_SECTIONS; + STATE[ STATE_SECTION_OFFSET ] = 1; + STATE[ SEED_SECTION_OFFSET ] = 1; + STATE[ SEED_SECTION_OFFSET+1 ] = seed; + + // Create a state "view": + state = new Int32Array( STATE.buffer, STATE.byteOffset+((STATE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), 1 ); + + // Create a seed "view": + seed = new Int32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), 1 ); - seed = new Int32Array( [ seed ] ); - slen = 1; + // Initialize the internal PRNG state: + state[ 0 ] = seed[ 0 ]; } setReadOnly( minstd, 'NAME', 'minstd' ); - defineProperty( minstd, 'seed', { - 'configurable': false, - 'enumerable': true, - 'get': getSeed - }); - defineProperty( minstd, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - defineProperty( minstd, 'stateLength', { - 'configurable': false, - 'enumerable': true, - 'get': getStateLength - }); - defineProperty( minstd, 'byteLength', { - 'configurable': false, - 'enumerable': true, - 'get': getStateSize - }); + setReadOnlyAccessor( minstd, 'seed', getSeed ); + setReadOnlyAccessor( minstd, 'seedLength', getSeedLength ); + setReadWriteAccessor( minstd, 'state', getState, setState ); + setReadOnlyAccessor( minstd, 'stateLength', getStateLength ); + setReadOnlyAccessor( minstd, 'byteLength', getStateSize ); setReadOnly( minstd, 'MIN', 1 ); setReadOnly( minstd, 'MAX', INT32_MAX-1 ); setReadOnly( minstd, 'normalized', normalized ); setReadOnly( normalized, 'NAME', minstd.NAME ); - defineProperty( normalized, 'seed', { - 'configurable': false, - 'enumerable': true, - 'get': getSeed - }); - defineProperty( normalized, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - defineProperty( normalized, 'stateLength', { - 'configurable': false, - 'enumerable': true, - 'get': getStateLength - }); - defineProperty( normalized, 'byteLength', { - 'configurable': false, - 'enumerable': true, - 'get': getStateSize - }); + setReadOnlyAccessor( normalized, 'seed', getSeed ); + setReadOnlyAccessor( normalized, 'seedLength', getSeedLength ); + setReadWriteAccessor( normalized, 'state', getState, setState ); + setReadOnlyAccessor( normalized, 'stateLength', getStateLength ); + setReadOnlyAccessor( normalized, 'byteLength', getStateSize ); setReadOnly( normalized, 'MIN', (minstd.MIN-1.0) / NORMALIZATION_CONSTANT ); setReadOnly( normalized, 'MAX', (minstd.MAX-1.0) / NORMALIZATION_CONSTANT ); @@ -205,69 +261,106 @@ function factory( options ) { * @returns {Int32Array} seed */ function getSeed() { - return gcopy( slen, seed, 1, new Int32Array( slen ), 1 ); + var len = STATE[ SEED_SECTION_OFFSET ]; + return gcopy( len, seed, 1, new Int32Array( len ), 1 ); } /** - * Returns the current PRNG state length. + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return STATE[ SEED_SECTION_OFFSET ]; + } + + /** + * Returns the PRNG state length. * * @private * @returns {PositiveInteger} state length */ function getStateLength() { - return 1 + slen; + return STATE.length; } /** - * Returns the current PRNG state size (in bytes). + * Returns the PRNG state size (in bytes). * * @private * @returns {PositiveInteger} state size (in bytes) */ function getStateSize() { - return getStateLength() * 4; // 4 bytes per int32 + return STATE.byteLength; } /** * Returns the current PRNG state. * + * ## Notes + * + * - The PRNG state array is comprised of a preamble followed by `2` sections: + * + * 0. preamble (version + number of sections) + * 1. internal PRNG state + * 2. PRNG seed + * + * - The first element of the PRNG state array preamble is the state array schema version. + * + * - The second element of the PRNG state array preamble is the number of state array sections (i.e., `2`). + * + * - The first element of each section following the preamble specifies the section length. The remaining section elements comprise the section contents. + * * @private * @returns {Int32Array} current state */ function getState() { - var out = new Int32Array( getStateLength() ); - - // Copy the internal state: - out[ 0 ] = state[ 0 ]; - - // Copy the seed: - out = gcopy.ndarray( slen, seed, 1, 0, out, 1, 1 ); - - return out; + var len = STATE.length; + return gcopy( len, STATE, 1, new Int32Array( len ), 1 ); } /** * Sets the PRNG state. * + * ## Notes + * + * - If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. + * - If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + * * @private * @param {Int32Array} s - generator state * @throws {TypeError} must provide an `Int32Array` - * @throws {RangeError} must provide an `Int32Array` having sufficient length + * @throws {Error} must provide a valid state */ function setState( s ) { + var err; if ( !isInt32Array( s ) ) { throw new TypeError( 'invalid argument. Must provide an Int32Array. Value: `' + s + '`.' ); } - // Determine the seed length: - slen = s.length - 1; - if ( slen <= 0 ) { - throw new RangeError( 'invalid argument. The provided array has insufficient length.' ); + err = verifyState( s, false ); + if ( err ) { + throw err; + } + if ( opts.copy === false ) { + if ( opts.state && s.length === STATE.length ) { + gcopy( s.length, s, 1, STATE, 1 ); // update current shared state + } else { + STATE = s; // point to new shared state + opts.state = true; // setting this flag allows updating a shared state even if a state array was not provided at PRNG creation + } + } else { + // Check if we can reuse allocated memory... + if ( s.length !== STATE.length ) { + STATE = new Int32Array( s.length ); // reallocate + } + gcopy( s.length, s, 1, STATE, 1 ); } - // Update the PRNG state: - state[ 0 ] = s[ 0 ]; + // Create a new state "view": + state = new Int32Array( STATE.buffer, STATE.byteOffset+((STATE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), 1 ); - // Set the seed: - seed = gcopy.ndarray( slen, s, 1, 1, new Int32Array( slen ), 1, 0 ); + // Create a new seed "view": + seed = new Int32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), STATE[ SEED_SECTION_OFFSET ] ); } /** From 8f98c16452792ed219d55badd874ccf1a0c026e3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 00:05:17 -0700 Subject: [PATCH 0694/1062] Add notes, document property, and reorder min and max properties --- .../@stdlib/random/base/minstd/README.md | 37 ++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/minstd/README.md b/lib/node_modules/@stdlib/random/base/minstd/README.md index 3f2ff953e440..f370c597fb66 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/README.md +++ b/lib/node_modules/@stdlib/random/base/minstd/README.md @@ -118,6 +118,24 @@ var str = minstd.NAME; // returns 'minstd' ``` +#### minstd.MIN + +Minimum possible value. + +```javascript +var min = minstd.MIN; +// returns 1 +``` + +#### minstd.MAX + +Maximum possible value. + +```javascript +var max = minstd.MAX; +// returns 2147483646 +``` + #### minstd.seed The value used to seed `minstd()`. @@ -141,22 +159,13 @@ for ( i = 0; i < 100; i++ ) { } ``` -#### minstd.MIN - -Minimum possible value. - -```javascript -var min = minstd.MIN; -// returns 1 -``` - -#### minstd.MAX +#### minstd.seedLength -Maximum possible value. +Length of generator seed. ```javascript -var max = minstd.MAX; -// returns 2147483646 +var len = minstd.seedLength; +// returns ``` #### minstd.state @@ -223,6 +232,8 @@ var sz = minstd.byteLength; - The generator has a period of approximately `2.1e9` (see [Numerical Recipes in C, 2nd Edition](#references), p. 279). - An [LCG][lcg] is fast and uses little memory. On the other hand, because the generator is a simple [linear congruential generator][lcg], the generator has recognized shortcomings. By today's PRNG standards, the generator's period is relatively short. More importantly, the "randomness quality" of the generator's output is lacking. These defects make the generator unsuitable, for example, in Monte Carlo simulations and in cryptographic applications. For more on the advantages and disadvantages of [LCGs][lcg], see [Wikipedia][pros-cons]. +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array).
From ef5c0b4422729f253faa080900b1654232bf6267 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 00:10:20 -0700 Subject: [PATCH 0695/1062] Update tests --- .../@stdlib/random/base/minstd/test/test.js | 58 +++++++++++-------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/minstd/test/test.js b/lib/node_modules/@stdlib/random/base/minstd/test/test.js index 52913df49549..6ddccd5e3750 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/test/test.js +++ b/lib/node_modules/@stdlib/random/base/minstd/test/test.js @@ -36,54 +36,59 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate normalized pseudorandom numbers', function test( t ) { - t.equal( typeof minstd.normalized, 'function', 'has `normalized` method' ); + t.equal( typeof minstd.normalized, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is a method to generate linear congruential pseudorandom number generator', function test( t ) { - t.equal( typeof minstd.factory, 'function', 'has `factory` method' ); + t.equal( typeof minstd.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( minstd.NAME, 'minstd', 'has `NAME` property' ); + t.equal( minstd.NAME, 'minstd', 'has property' ); t.end(); }); -tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isInt32Array( minstd.seed ), true, 'has `seed` property' ); +tape( 'attached to the main export is the minimum possible generated number', function test( t ) { + t.equal( minstd.MIN, 1, 'has property' ); t.end(); }); -tape( 'attached to the main export is the minimum possible generated number', function test( t ) { - t.equal( minstd.MIN, 1, 'has `MIN` property' ); +tape( 'attached to the main export is the maximum possible generated number', function test( t ) { + t.equal( minstd.MAX, INT32_MAX-1, 'has property' ); t.end(); }); -tape( 'attached to the main export is the maximum possible generated number', function test( t ) { - t.equal( minstd.MAX, INT32_MAX-1, 'has `MAX` property' ); +tape( 'attached to the main export is the generator seed', function test( t ) { + t.equal( isInt32Array( minstd.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof minstd.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isInt32Array( minstd.state ), true, 'has `state` property' ); + t.equal( isInt32Array( minstd.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof minstd.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof minstd.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof minstd.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof minstd.byteLength, 'number', 'has property' ); t.end(); }); tape( 'the function returns pseudorandom integers strictly between 0 and 2^31-1 (inclusive)', function test( t ) { var v; var i; - for ( i = 0; i < 1e4; i++ ) { + for ( i = 0; i < 1e3; i++ ) { v = minstd(); t.equal( typeof v, 'number', 'returns a number' ); t.equal( isPositiveInteger( v ), true, 'returns a positive integer' ); @@ -95,7 +100,7 @@ tape( 'the function returns pseudorandom integers strictly between 0 and 2^31-1 tape( 'the `normalized` method returns pseudorandom numbers strictly between 0 (inclusive) and 1 (exclusive)', function test( t ) { var v; var i; - for ( i = 0; i < 1e4; i++ ) { + for ( i = 0; i < 1e3; i++ ) { v = minstd.normalized(); t.equal( typeof v, 'number', 'returns a number' ); t.equal( v >= 0.0 && v < 1.0, true, 'returns a number between 0 (inclusive) and 1 (exclusive)' ); @@ -104,37 +109,42 @@ tape( 'the `normalized` method returns pseudorandom numbers strictly between 0 ( }); tape( 'attached to the `normalized` method is the generator name', function test( t ) { - t.equal( minstd.normalized.NAME, 'minstd', 'has `NAME` property' ); + t.equal( minstd.normalized.NAME, 'minstd', 'has property' ); t.end(); }); -tape( 'attached to the `normalized` method is the generator seed', function test( t ) { - t.equal( isInt32Array( minstd.normalized.seed ), true, 'has `seed` property' ); +tape( 'attached to the `normalized` method is the minimum possible generated number', function test( t ) { + t.equal( minstd.normalized.MIN, 0.0, 'has property' ); t.end(); }); -tape( 'attached to the `normalized` method is the minimum possible generated number', function test( t ) { - t.equal( minstd.normalized.MIN, 0.0, 'has `MIN` property' ); +tape( 'attached to the `normalized` method is the maximum possible generated number', function test( t ) { + t.equal( minstd.normalized.MAX, (INT32_MAX-2.0)/(INT32_MAX-1.0), 'has property' ); t.end(); }); -tape( 'attached to the `normalized` method is the maximum possible generated number', function test( t ) { - t.equal( minstd.normalized.MAX, (INT32_MAX-2.0)/(INT32_MAX-1.0), 'has `MAX` property' ); +tape( 'attached to the `normalized` method is the generator seed', function test( t ) { + t.equal( isInt32Array( minstd.normalized.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the `normalized` method is the generator seed length', function test( t ) { + t.equal( typeof minstd.normalized.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the `normalized` method is the generator state', function test( t ) { - t.equal( isInt32Array( minstd.normalized.state ), true, 'has `state` property' ); + t.equal( isInt32Array( minstd.normalized.state ), true, 'has property' ); t.end(); }); tape( 'attached to the `normalized` method is the generator state length', function test( t ) { - t.equal( typeof minstd.normalized.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof minstd.normalized.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the `normalized` method is the generator state size', function test( t ) { - t.equal( typeof minstd.normalized.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof minstd.normalized.byteLength, 'number', 'has property' ); t.end(); }); From bb7c49714f5065dd104c0cf8c9e93aa52fd4c39b Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 00:12:36 -0700 Subject: [PATCH 0696/1062] Fix description --- .../@stdlib/random/base/mt19937/test/test.factory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js index 71e2ac5df970..09bb10cd3f43 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js @@ -148,7 +148,7 @@ tape( 'if provided a `seed` which is not a positive integer or a non-empty array } }); -tape( 'the function throws a range error if provided an integer greater than the maximum unsigned 32-bit integer', function test( t ) { +tape( 'the function throws a range error if provided a `seed` greater than the maximum unsigned 32-bit integer', function test( t ) { var values; var i; From 21af30b87aba598febdc1e3c084a6f5825d775b6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 00:24:38 -0700 Subject: [PATCH 0697/1062] Update test descriptions --- .../random/base/mt19937/test/test.factory.js | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js index 09bb10cd3f43..1e33266df154 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js @@ -613,7 +613,7 @@ tape( 'if the `state` property is set to a value other than a Uint32Array, an er } }); -tape( 'if the `state` property is set to an Uint32Array having an unexpected length, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to a Uint32Array having an unexpected length, an error is thrown', function test( t ) { var mt19937; var values; var i; @@ -637,7 +637,7 @@ tape( 'if the `state` property is set to an Uint32Array having an unexpected len } }); -tape( 'if the `state` property is set to an Uint32Array containing an unsupported version, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to a Uint32Array containing an unsupported version, an error is thrown', function test( t ) { var mt19937; var values; var v; @@ -677,7 +677,7 @@ tape( 'if the `state` property is set to an Uint32Array containing an unsupporte } }); -tape( 'if the `state` property is set to an Uint32Array containing an unsupported number of sections, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to a Uint32Array containing an unsupported number of sections, an error is thrown', function test( t ) { var mt19937; var values; var v; @@ -717,7 +717,7 @@ tape( 'if the `state` property is set to an Uint32Array containing an unsupporte } }); -tape( 'if the `state` property is set to an Uint32Array containing an unsupported state length, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to a Uint32Array containing an unsupported state length, an error is thrown', function test( t ) { var mt19937; var values; var v; @@ -757,7 +757,7 @@ tape( 'if the `state` property is set to an Uint32Array containing an unsupporte } }); -tape( 'if the `state` property is set to an Uint32Array containing an unsupported section length, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to a Uint32Array containing an unsupported section length, an error is thrown', function test( t ) { var mt19937; var values; var v; @@ -797,7 +797,7 @@ tape( 'if the `state` property is set to an Uint32Array containing an unsupporte } }); -tape( 'if the `state` property is set to an Uint32Array containing an incompatible seed length, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to a Uint32Array containing an incompatible seed length, an error is thrown', function test( t ) { var mt19937; var values; var v; @@ -982,7 +982,7 @@ tape( 'if the `state` property is set to a Uint32Array having an unexpected leng } }); -tape( 'if the `state` property is set to an Uint32Array containing an unsupported version, an error is thrown (normalized)', function test( t ) { +tape( 'if the `state` property is set to a Uint32Array containing an unsupported version, an error is thrown (normalized)', function test( t ) { var mt19937; var values; var v; @@ -1022,7 +1022,7 @@ tape( 'if the `state` property is set to an Uint32Array containing an unsupporte } }); -tape( 'if the `state` property is set to an Uint32Array containing an unsupported number of sections, an error is thrown (normalized)', function test( t ) { +tape( 'if the `state` property is set to a Uint32Array containing an unsupported number of sections, an error is thrown (normalized)', function test( t ) { var mt19937; var values; var v; @@ -1062,7 +1062,7 @@ tape( 'if the `state` property is set to an Uint32Array containing an unsupporte } }); -tape( 'if the `state` property is set to an Uint32Array containing an unsupported state length, an error is thrown (normalized)', function test( t ) { +tape( 'if the `state` property is set to a Uint32Array containing an unsupported state length, an error is thrown (normalized)', function test( t ) { var mt19937; var values; var v; @@ -1102,7 +1102,7 @@ tape( 'if the `state` property is set to an Uint32Array containing an unsupporte } }); -tape( 'if the `state` property is set to an Uint32Array containing an unsupported section length, an error is thrown (normalized)', function test( t ) { +tape( 'if the `state` property is set to a Uint32Array containing an unsupported section length, an error is thrown (normalized)', function test( t ) { var mt19937; var values; var v; @@ -1142,7 +1142,7 @@ tape( 'if the `state` property is set to an Uint32Array containing an unsupporte } }); -tape( 'if the `state` property is set to an Uint32Array containing an incompatible seed length, an error is thrown (normalized)', function test( t ) { +tape( 'if the `state` property is set to a Uint32Array containing an incompatible seed length, an error is thrown (normalized)', function test( t ) { var mt19937; var values; var v; From 9a8ce71d87509d95fe6c816c095510a727dd307f Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 00:35:01 -0700 Subject: [PATCH 0698/1062] Update tests --- .../random/base/minstd/test/test.factory.js | 1002 +++++++++++++++-- 1 file changed, 887 insertions(+), 115 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js b/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js index 4d523ca09632..cb534fbf17b8 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js @@ -1,3 +1,5 @@ +/* eslint-disable max-lines */ + /** * @license Apache-2.0 * @@ -28,6 +30,7 @@ var isPositiveInteger = require( '@stdlib/math/base/assert/is-positive-integer' var isInt32Array = require( '@stdlib/assert/is-int32array' ); var Int32Array = require( '@stdlib/array/int32' ); var kstest = require( '@stdlib/stats/kstest' ); +var gcopy = require( '@stdlib/blas/base/gcopy' ); var factory = require( './../lib/factory.js' ); @@ -136,7 +139,7 @@ tape( 'if provided a `seed` which is not a positive integer or a non-empty array } }); -tape( 'the function throws a range error if provided `seed` greater than or equal to the maximum signed 32-bit integer', function test( t ) { +tape( 'the function throws a range error if provided a `seed` greater than or equal to the maximum signed 32-bit integer', function test( t ) { var values; var i; @@ -214,6 +217,168 @@ tape( 'if provided a `state` option having an insufficient length, the factory f } }); +tape( 'if provided a `state` option containing an unsupported version, the factory function throws an error', function test( t ) { + var values; + var v; + var i; + + values = []; + + v = new Int32Array( 6 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // seed length + v[ 5 ] = 123; // seed + values.push( v ); + + v = new Int32Array( 7 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // seed length + v[ 5 ] = 123; // seed + v[ 6 ] = 456; // seed + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided a `state` option containing an unsupported number of sections, the factory function throws an error', function test( t ) { + var values; + var v; + var i; + + values = []; + + v = new Int32Array( 6 ); + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // seed length + v[ 5 ] = 123; // seed + values.push( v ); + + v = new Int32Array( 7 ); + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // seed length + v[ 5 ] = 123; // seed + v[ 6 ] = 456; // seed + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided a `state` option containing an unsupported state length, the factory function throws an error', function test( t ) { + var values; + var v; + var i; + + values = []; + + v = new Int32Array( 7 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 2; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // state + v[ 5 ] = 1; // seed length + v[ 6 ] = 123; // seed + values.push( v ); + + v = new Int32Array( 8 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 2; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // state + v[ 5 ] = 1; // seed length + v[ 6 ] = 123; // seed + v[ 7 ] = 456; // seed + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided a `state` option containing an incompatible seed length, the factory function throws an error', function test( t ) { + var values; + var v; + var i; + + values = []; + + v = new Int32Array( 6 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 9; // seed length + v[ 5 ] = 123; // seed + values.push( v ); + + v = new Int32Array( 7 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 9; // seed length + v[ 5 ] = 123; // seed + v[ 6 ] = 456; // seed + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + tape( 'the function returns a pseudorandom number generator (no options)', function test( t ) { var minstd; var v; @@ -300,7 +465,19 @@ tape( 'the function returns a seeded pseudorandom number generator (array seed)' tape( 'attached to the returned function is the generator name', function test( t ) { var minstd = factory(); - t.equal( minstd.NAME, 'minstd', 'has `NAME` property' ); + t.equal( minstd.NAME, 'minstd', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the minimum possible generated number', function test( t ) { + var minstd = factory(); + t.equal( minstd.MIN, 1, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the maximum possible generated number', function test( t ) { + var minstd = factory(); + t.equal( minstd.MAX, INT32_MAX-1, 'has property' ); t.end(); }); @@ -313,7 +490,7 @@ tape( 'attached to the returned function is the generator seed (integer seed)', }); actual = minstd.seed; - t.equal( isInt32Array( actual ), true, 'has `seed` property' ); + t.equal( isInt32Array( actual ), true, 'has property' ); t.equal( actual.length, 1, 'has expected length' ); t.equal( actual[ 0 ], 12345, 'equal to provided seed' ); t.end(); @@ -332,40 +509,34 @@ tape( 'attached to the returned function is the generator seed (array seed)', fu }); actual = minstd.seed; - t.equal( isInt32Array( actual ), true, 'has `seed` property' ); + t.equal( isInt32Array( actual ), true, 'has property' ); for ( i = 0; i < seed.length; i++ ) { t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } t.end(); }); -tape( 'attached to the returned function is the minimum possible generated number', function test( t ) { - var minstd = factory(); - t.equal( minstd.MIN, 1, 'has `MIN` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the maximum possible generated number', function test( t ) { +tape( 'attached to the returned function is the generator seed length', function test( t ) { var minstd = factory(); - t.equal( minstd.MAX, INT32_MAX-1, 'has `MAX` property' ); + t.equal( typeof minstd.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the returned function is the generator state', function test( t ) { var minstd = factory(); - t.equal( isInt32Array( minstd.state ), true, 'has `state` property' ); + t.equal( isInt32Array( minstd.state ), true, 'has property' ); t.end(); }); tape( 'attached to the returned function is the generator state length', function test( t ) { var minstd = factory(); - t.equal( typeof minstd.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof minstd.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the returned function is the generator state size', function test( t ) { var minstd = factory(); - t.equal( typeof minstd.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof minstd.byteLength, 'number', 'has property' ); t.end(); }); @@ -403,19 +574,162 @@ tape( 'if the `state` property is set to a value other than an Int32Array, an er } }); -tape( 'if the `state` property is set to an Int32Array having an unexpected length, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to an Int32Array containing an unsupported version, an error is thrown', function test( t ) { var minstd; var values; + var v; var i; minstd = factory(); - values = [ - new Int32Array( 0 ), - new Int32Array( 1 ) - ]; + values = []; + + v = new Int32Array( 6 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // seed length + v[ 5 ] = 123; // seed + values.push( v ); + + v = new Int32Array( 7 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // seed length + v[ 5 ] = 123; // seed + v[ 6 ] = 456; // seed + values.push( v ); + for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), RangeError, 'throws an error when set to '+values[i] ); + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + minstd.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Int32Array containing an unsupported number of sections, an error is thrown', function test( t ) { + var minstd; + var values; + var v; + var i; + + minstd = factory(); + + values = []; + + v = new Int32Array( 6 ); + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // seed length + v[ 5 ] = 123; // seed + values.push( v ); + + v = new Int32Array( 7 ); + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // seed length + v[ 5 ] = 123; // seed + v[ 6 ] = 456; // seed + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + minstd.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Int32Array containing an unsupported state length, an error is thrown', function test( t ) { + var minstd; + var values; + var v; + var i; + + minstd = factory(); + + values = []; + + v = new Int32Array( 7 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 2; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // state + v[ 5 ] = 1; // seed length + v[ 6 ] = 123; // seed + values.push( v ); + + v = new Int32Array( 8 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 2; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // state + v[ 5 ] = 1; // seed length + v[ 6 ] = 123; // seed + v[ 7 ] = 456; // seed + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + minstd.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Int32Array containing an incompatible seed length, an error is thrown', function test( t ) { + var minstd; + var values; + var v; + var i; + + minstd = factory(); + + values = []; + + v = new Int32Array( 6 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 9; // seed length + v[ 5 ] = 123; // seed + values.push( v ); + + v = new Int32Array( 7 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 9; // seed length + v[ 5 ] = 123; // seed + v[ 6 ] = 456; // seed + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); } t.end(); @@ -432,7 +746,7 @@ tape( 'attached to the returned function is a `normalized` method for generating var i; minstd = factory(); - for ( i = 0; i < 1e4; i++ ) { + for ( i = 0; i < 1e3; i++ ) { v = minstd.normalized(); t.equal( typeof v, 'number', 'returns a number' ); t.equal( v >= 0.0 && v < 1.0, true, 'returns a number between 0 (inclusive) and 1 (exclusive)' ); @@ -442,7 +756,19 @@ tape( 'attached to the returned function is a `normalized` method for generating tape( 'attached to the `normalized` method is the generator name', function test( t ) { var minstd = factory(); - t.equal( minstd.normalized.NAME, 'minstd', 'has `NAME` property' ); + t.equal( minstd.normalized.NAME, 'minstd', 'has property' ); + t.end(); +}); + +tape( 'attached to the `normalized` method is the minimum possible generated number', function test( t ) { + var minstd = factory(); + t.equal( minstd.normalized.MIN, 0.0, 'has property' ); + t.end(); +}); + +tape( 'attached to the `normalized` method is the maximum possible generated number', function test( t ) { + var minstd = factory(); + t.equal( minstd.normalized.MAX, (INT32_MAX-2.0)/(INT32_MAX-1.0), 'has property' ); t.end(); }); @@ -455,7 +781,7 @@ tape( 'attached to the `normalized` method is the generator seed (integer seed)' }); actual = minstd.normalized.seed; - t.equal( isInt32Array( actual ), true, 'has `seed` property' ); + t.equal( isInt32Array( actual ), true, 'has property' ); t.equal( actual.length, 1, 'has expected length' ); t.equal( actual[ 0 ], 12345, 'equal to provided seed' ); t.end(); @@ -473,40 +799,34 @@ tape( 'attached to the `normalized` method is the generator seed (array seed)', }); actual = minstd.normalized.seed; - t.equal( isInt32Array( actual ), true, 'has `seed` property' ); + t.equal( isInt32Array( actual ), true, 'has property' ); for ( i = 0; i < seed.length; i++ ) { t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } t.end(); }); -tape( 'attached to the `normalized` method is the minimum possible generated number', function test( t ) { - var minstd = factory(); - t.equal( minstd.normalized.MIN, 0.0, 'has `MIN` property' ); - t.end(); -}); - -tape( 'attached to the `normalized` method is the maximum possible generated number', function test( t ) { +tape( 'attached to the `normalized` method is the generator seed length', function test( t ) { var minstd = factory(); - t.equal( minstd.normalized.MAX, (INT32_MAX-2.0)/(INT32_MAX-1.0), 'has `MAX` property' ); + t.equal( typeof minstd.normalized.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the `normalized` method is the generator state', function test( t ) { var minstd = factory(); - t.equal( isInt32Array( minstd.normalized.state ), true, 'has `state` property' ); + t.equal( isInt32Array( minstd.normalized.state ), true, 'has property' ); t.end(); }); tape( 'attached to the `normalized` method is the generator state length', function test( t ) { var minstd = factory(); - t.equal( typeof minstd.normalized.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof minstd.normalized.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the `normalized` method is the generator state size', function test( t ) { var minstd = factory(); - t.equal( typeof minstd.normalized.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof minstd.normalized.byteLength, 'number', 'has property' ); t.end(); }); @@ -567,79 +887,245 @@ tape( 'if the `state` property is set to an Int32Array having an unexpected leng } }); -tape( 'the `normalized` method returns pseudorandom numbers drawn from a uniform distribution', opts, function test( t ) { - var threshold; - var count; - var npass; - var N; - var x; - - threshold = 0.10; - - x = new Array( 1e3 ); - N = 500; - - count = -1; - npass = 0; - - gof(); +tape( 'if the `state` property is set to an Int32Array containing an unsupported version, an error is thrown (normalized)', function test( t ) { + var minstd; + var values; + var v; + var i; - function gof() { - var rejected; - var pValue; - var minstd; - var bool; - var i; - var j; + minstd = factory(); - count += 1; - rejected = 0; - for ( i = 0; i < N; i++ ) { - minstd = factory(); - t.ok( true, 'seed: '+minstd.seed ); - for ( j = 0; j < x.length; j++ ) { - x[ j ] = minstd.normalized(); - if ( x[ j ] < 0.0 || x[ j ] > 1.0 ) { - t.ok( false, 'returned a number outside support: '+x[ j ] ); - } - } - // Test using Kolmogorov-Smirnov goodness-of-fit test: - pValue = kstest( x, 'uniform', 0.0, 1.0 ).pValue; - t.equal( typeof pValue, 'number', 'returns a p-value: '+pValue ); - if ( pValue < 0.05 ) { - rejected += 1; - } - } - // Account for small sample size and few repeats... - bool = ( rejected / N < threshold ); + values = []; + + v = new Int32Array( 6 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // seed length + v[ 5 ] = 123; // seed + values.push( v ); + + v = new Int32Array( 7 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // seed length + v[ 5 ] = 123; // seed + v[ 6 ] = 456; // seed + values.push( v ); - // If we succeed the first time, we are done... - if ( count === 0 && bool ) { - return done( bool, rejected ); - } - // Retry mode... - if ( bool ) { - npass += 1; - } - // Retry twice... - if ( count < 2 ) { - return gof(); - } - // Both retries must succeed for test to pass: - bool = ( npass >= 2 ); - return done( bool, rejected ); + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); } + t.end(); - function done( bool, rejected ) { - t.ok( bool, 'null hypothesis (i.e., that numbers are drawn from Uniform(0,1)) is rejected in less than '+(threshold*100)+'% of cases ('+rejected+' of '+N+'). Repeats: '+npass+' of '+count+'.' ); - t.end(); + function badValue( value ) { + return function badValue() { + minstd.normalized.state = value; + }; } }); -tape( 'the function supports specifying the generator state', function test( t ) { +tape( 'if the `state` property is set to an Int32Array containing an unsupported number of sections, an error is thrown (normalized)', function test( t ) { var minstd; - var state; - var arr; + var values; + var v; + var i; + + minstd = factory(); + + values = []; + + v = new Int32Array( 6 ); + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // seed length + v[ 5 ] = 123; // seed + values.push( v ); + + v = new Int32Array( 7 ); + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // seed length + v[ 5 ] = 123; // seed + v[ 6 ] = 456; // seed + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + minstd.normalized.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Int32Array containing an unsupported state length, an error is thrown (normalized)', function test( t ) { + var minstd; + var values; + var v; + var i; + + minstd = factory(); + + values = []; + + v = new Int32Array( 7 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 2; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // state + v[ 5 ] = 1; // seed length + v[ 6 ] = 123; // seed + values.push( v ); + + v = new Int32Array( 8 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 2; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 1; // state + v[ 5 ] = 1; // seed length + v[ 6 ] = 123; // seed + v[ 7 ] = 456; // seed + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + minstd.normalized.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Int32Array containing an incompatible seed length, an error is thrown (normalized)', function test( t ) { + var minstd; + var values; + var v; + var i; + + minstd = factory(); + + values = []; + + v = new Int32Array( 6 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 9; // seed length + v[ 5 ] = 123; // seed + values.push( v ); + + v = new Int32Array( 7 ); + v[ 0 ] = 0; // version + v[ 1 ] = 2; // number of sections + v[ 2 ] = 1; // state length + v[ 3 ] = 1; // state + v[ 4 ] = 9; // seed length + v[ 5 ] = 123; // seed + v[ 6 ] = 456; // seed + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + minstd.normalized.state = value; + }; + } +}); + +tape( 'the `normalized` method returns pseudorandom numbers drawn from a uniform distribution', opts, function test( t ) { + var threshold; + var count; + var npass; + var N; + var x; + + threshold = 0.10; + + x = new Array( 1e3 ); + N = 500; + + count = -1; + npass = 0; + + gof(); + + function gof() { + var rejected; + var pValue; + var minstd; + var bool; + var i; + var j; + + count += 1; + rejected = 0; + for ( i = 0; i < N; i++ ) { + minstd = factory(); + t.ok( true, 'seed: '+minstd.seed ); + for ( j = 0; j < x.length; j++ ) { + x[ j ] = minstd.normalized(); + if ( x[ j ] < 0.0 || x[ j ] > 1.0 ) { + t.ok( false, 'returned a number outside support: '+x[ j ] ); + } + } + // Test using Kolmogorov-Smirnov goodness-of-fit test: + pValue = kstest( x, 'uniform', 0.0, 1.0 ).pValue; + t.equal( typeof pValue, 'number', 'returns a p-value: '+pValue ); + if ( pValue < 0.05 ) { + rejected += 1; + } + } + // Account for small sample size and few repeats... + bool = ( rejected / N < threshold ); + + // If we succeed the first time, we are done... + if ( count === 0 && bool ) { + return done( bool, rejected ); + } + // Retry mode... + if ( bool ) { + npass += 1; + } + // Retry twice... + if ( count < 2 ) { + return gof(); + } + // Both retries must succeed for test to pass: + bool = ( npass >= 2 ); + return done( bool, rejected ); + } + + function done( bool, rejected ) { + t.ok( bool, 'null hypothesis (i.e., that numbers are drawn from Uniform(0,1)) is rejected in less than '+(threshold*100)+'% of cases ('+rejected+' of '+N+'). Repeats: '+npass+' of '+count+'.' ); + t.end(); + } +}); + +tape( 'the function supports specifying the generator state', function test( t ) { + var minstd; + var state; + var arr; var i; minstd = factory(); @@ -718,34 +1204,54 @@ tape( 'the function supports specifying a shared generator state', function test t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); j += 2; // stride } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var minstd; + var state; + var arr; + var i; + + minstd = factory(); // Move to a future state... for ( i = 0; i < 100; i++ ) { - v2 = rand2(); + minstd(); } + // Capture the current state: + state = minstd.state; - // Reset the (shared) state: - rand1.state = state; + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( minstd() ); + } + // Set the state: + minstd.state = state; // Replay previously generated values... - j = 0; - for ( i = 0; i < 50; i++ ) { - v1 = rand1(); - v2 = rand2(); - t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); - t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); - j += 2; // stride + for ( i = 0; i < 100; i++ ) { + t.equal( minstd(), arr[ i ], 'returns expected value. i: '+i+'.' ); } t.end(); }); -tape( 'the returned function supports setting the generator state', function test( t ) { +tape( 'the returned function supports setting the generator state to a state array having a different length', function test( t ) { var minstd; + var shared; var state; + var rand1; + var rand2; var arr; + var v1; + var v2; var i; - minstd = factory(); + // Seed length: 2 + minstd = factory({ + 'seed': [ 1234, 5678 ] + }); // Move to a future state... for ( i = 0; i < 100; i++ ) { @@ -759,12 +1265,34 @@ tape( 'the returned function supports setting the generator state', function tes for ( i = 0; i < 100; i++ ) { arr.push( minstd() ); } - // Set the state: - minstd.state = state; + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Int32Array( state ); + + // Create PRNGs having seed lengths equal to 1: + rand1 = factory({ + 'seed': [ 6789 ] + }); + rand2 = factory({ + 'seed': [ 4321 ] + }); + + // Move to future states... + for ( i = 0; i < 100; i++ ) { + v1 = rand1(); + v2 = rand2(); + } + + // Reset the PRNG states: + rand1.state = shared; + rand2.state = shared; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { - t.equal( minstd(), arr[ i ], 'returns expected value. i: '+i+'.' ); + v1 = rand1(); + t.equal( v1, arr[ i ], 'returns expected value. i: '+i+'.' ); + v2 = rand2(); + t.equal( v2, arr[ i ], 'returns expected value. i: '+i+'.' ); } t.end(); }); @@ -828,3 +1356,247 @@ tape( 'the returned function supports setting the generator state (normalized)', } t.end(); }); + +tape( 'the returned function supports setting a shared generator state (same length)', function test( t ) { + var minstd; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + minstd = factory(); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + minstd(); + } + // Capture the current state: + state = minstd.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( minstd() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Int32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory({ + 'state': shared, + 'copy': false + }); + rand2 = factory({ + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = new Int32Array( state ); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting a shared generator state (different length)', function test( t ) { + var minstd; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var s; + var i; + var j; + + minstd = factory(); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + minstd(); + } + // Capture the current state: + state = minstd.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( minstd() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Int32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory({ + 'state': shared, + 'copy': false + }); + rand2 = factory({ + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (*previously* shared) state: + s = new Int32Array( state.length+1 ); + gcopy( state.length, state, 1, s, 1 ); + s[ s.length-3 ] = 2; + s[ s.length-1 ] = 1234; + rand1.state = s; + + // Attempt to replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + + // `rand1()` state is not affected by `rand2()`: + t.equal( v1, arr[ i ], 'returns expected value. i: '+i+'.' ); + + // `rand2()` state was never reset: + t.notEqual( v2, arr[ j+1 ], 'does not return expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Reset the (*previously* shared) state: + rand2.state = s; + + // Reset to a shared state: + shared = new Int32Array( state ); + rand1.state = shared; + rand2.state = shared; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting a shared generator state (no initial shared state)', function test( t ) { + var minstd; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + minstd = factory(); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + minstd(); + } + // Capture the current state: + state = minstd.state; + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Int32Array( state ); + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( minstd() ); + } + + // Create PRNGs using the captured state: + rand1 = factory({ + 'copy': false + }); + rand2 = factory({ + 'copy': false + }); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v1 = rand1(); + v2 = rand2(); + } + + // Reset to a shared state: + rand1.state = shared; + rand2.state = shared; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Int32Array( state ); + + // Reset the (shared) state: + rand1.state = shared; + rand2.state = shared; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); From 15c18d3beb42d3b87ed5c3b2aa8c8b113681f8e0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 00:37:29 -0700 Subject: [PATCH 0699/1062] Fix tests --- .../random/base/minstd/test/test.factory.js | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js b/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js index cb534fbf17b8..8370d9959aa7 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd/test/test.factory.js @@ -265,7 +265,7 @@ tape( 'if provided a `state` option containing an unsupported number of sections values = []; v = new Int32Array( 6 ); - v[ 0 ] = 0; // version + v[ 0 ] = 1; // version v[ 1 ] = 3; // number of sections v[ 2 ] = 1; // state length v[ 3 ] = 1; // state @@ -274,7 +274,7 @@ tape( 'if provided a `state` option containing an unsupported number of sections values.push( v ); v = new Int32Array( 7 ); - v[ 0 ] = 0; // version + v[ 0 ] = 1; // version v[ 1 ] = 3; // number of sections v[ 2 ] = 1; // state length v[ 3 ] = 1; // state @@ -305,7 +305,7 @@ tape( 'if provided a `state` option containing an unsupported state length, the values = []; v = new Int32Array( 7 ); - v[ 0 ] = 0; // version + v[ 0 ] = 1; // version v[ 1 ] = 2; // number of sections v[ 2 ] = 2; // state length v[ 3 ] = 1; // state @@ -315,7 +315,7 @@ tape( 'if provided a `state` option containing an unsupported state length, the values.push( v ); v = new Int32Array( 8 ); - v[ 0 ] = 0; // version + v[ 0 ] = 1; // version v[ 1 ] = 2; // number of sections v[ 2 ] = 2; // state length v[ 3 ] = 1; // state @@ -347,7 +347,7 @@ tape( 'if provided a `state` option containing an incompatible seed length, the values = []; v = new Int32Array( 6 ); - v[ 0 ] = 0; // version + v[ 0 ] = 1; // version v[ 1 ] = 2; // number of sections v[ 2 ] = 1; // state length v[ 3 ] = 1; // state @@ -356,7 +356,7 @@ tape( 'if provided a `state` option containing an incompatible seed length, the values.push( v ); v = new Int32Array( 7 ); - v[ 0 ] = 0; // version + v[ 0 ] = 1; // version v[ 1 ] = 2; // number of sections v[ 2 ] = 1; // state length v[ 3 ] = 1; // state @@ -626,7 +626,7 @@ tape( 'if the `state` property is set to an Int32Array containing an unsupported values = []; v = new Int32Array( 6 ); - v[ 0 ] = 0; // version + v[ 0 ] = 1; // version v[ 1 ] = 3; // number of sections v[ 2 ] = 1; // state length v[ 3 ] = 1; // state @@ -635,7 +635,7 @@ tape( 'if the `state` property is set to an Int32Array containing an unsupported values.push( v ); v = new Int32Array( 7 ); - v[ 0 ] = 0; // version + v[ 0 ] = 1; // version v[ 1 ] = 3; // number of sections v[ 2 ] = 1; // state length v[ 3 ] = 1; // state @@ -667,7 +667,7 @@ tape( 'if the `state` property is set to an Int32Array containing an unsupported values = []; v = new Int32Array( 7 ); - v[ 0 ] = 0; // version + v[ 0 ] = 1; // version v[ 1 ] = 2; // number of sections v[ 2 ] = 2; // state length v[ 3 ] = 1; // state @@ -677,7 +677,7 @@ tape( 'if the `state` property is set to an Int32Array containing an unsupported values.push( v ); v = new Int32Array( 8 ); - v[ 0 ] = 0; // version + v[ 0 ] = 1; // version v[ 1 ] = 2; // number of sections v[ 2 ] = 2; // state length v[ 3 ] = 1; // state @@ -710,7 +710,7 @@ tape( 'if the `state` property is set to an Int32Array containing an incompatibl values = []; v = new Int32Array( 6 ); - v[ 0 ] = 0; // version + v[ 0 ] = 1; // version v[ 1 ] = 2; // number of sections v[ 2 ] = 1; // state length v[ 3 ] = 1; // state @@ -719,7 +719,7 @@ tape( 'if the `state` property is set to an Int32Array containing an incompatibl values.push( v ); v = new Int32Array( 7 ); - v[ 0 ] = 0; // version + v[ 0 ] = 1; // version v[ 1 ] = 2; // number of sections v[ 2 ] = 1; // state length v[ 3 ] = 1; // state From d5195c592b6e0bd6861c03608643d8e935716510 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 01:33:24 -0700 Subject: [PATCH 0700/1062] Add benchmark --- .../minstd/benchmark/benchmark.factory.js | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/minstd/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/minstd/benchmark/benchmark.factory.js index 420adbb36ca6..ca16eef6c11a 100644 --- a/lib/node_modules/@stdlib/random/base/minstd/benchmark/benchmark.factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd/benchmark/benchmark.factory.js @@ -22,6 +22,7 @@ var bench = require( '@stdlib/bench' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var Int32Array = require( '@stdlib/array/int32' ); var pkg = require( './../package.json' ).name; var factory = require( './../lib' ).factory; @@ -71,3 +72,33 @@ bench( pkg+':factory:seed=', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Int32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = 123 + i; + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 48eb08ccb4d433516510aef421c8a54dfa7824ff Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 01:34:10 -0700 Subject: [PATCH 0701/1062] Add benchmark --- .../benchmark/benchmark.factory.js | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/benchmark/benchmark.factory.js index 420adbb36ca6..ca16eef6c11a 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/benchmark/benchmark.factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/benchmark/benchmark.factory.js @@ -22,6 +22,7 @@ var bench = require( '@stdlib/bench' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var Int32Array = require( '@stdlib/array/int32' ); var pkg = require( './../package.json' ).name; var factory = require( './../lib' ).factory; @@ -71,3 +72,33 @@ bench( pkg+':factory:seed=', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Int32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = 123 + i; + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 56bcb5d9f1ec8d6bc10d39c19dcf8429580bb822 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 01:35:39 -0700 Subject: [PATCH 0702/1062] Reorder properties and document property --- .../random/base/minstd-shuffle/docs/repl.txt | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt b/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt index 2179c8ff9545..a0885af90c64 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/docs/repl.txt @@ -91,14 +91,6 @@ 'minstd-shuffle' -{{alias}}.seed - Pseudorandom number generator seed. - - Examples - -------- - > var seed = {{alias}}.seed; - - {{alias}}.MIN Minimum possible value. @@ -117,6 +109,22 @@ 2147483646 +{{alias}}.seed + Pseudorandom number generator seed. + + Examples + -------- + > var seed = {{alias}}.seed; + + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. From 6234b8e3b6feb0981f50f052c33e3fd998d173ee Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 01:39:10 -0700 Subject: [PATCH 0703/1062] Reorder properties, add notes, and document property --- .../random/base/minstd-shuffle/README.md | 37 ++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md b/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md index 06a0f424e3d3..5ebc3dfb204d 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/README.md @@ -118,6 +118,24 @@ var str = minstd.NAME; // returns 'minstd-shuffle' ``` +#### minstd.MIN + +Minimum possible value. + +```javascript +var min = minstd.MIN; +// returns 1 +``` + +#### minstd.MAX + +Maximum possible value. + +```javascript +var max = minstd.MAX; +// returns 2147483646 +``` + #### minstd.seed The value used to seed `minstd()`. @@ -141,22 +159,13 @@ for ( i = 0; i < 100; i++ ) { } ``` -#### minstd.MIN - -Minimum possible value. - -```javascript -var min = minstd.MIN; -// returns 1 -``` - -#### minstd.MAX +#### minstd.seedLength -Maximum possible value. +Length of generator seed. ```javascript -var max = minstd.MAX; -// returns 2147483646 +var len = minstd.seedLength; +// returns ``` #### minstd.state @@ -224,6 +233,8 @@ var sz = minstd.byteLength; - Before output from a simple linear congruential generator ([LCG][lcg]) is returned, the output is shuffled using the Bays-Durham algorithm. This additional step considerably strengthens the "randomness quality" of a simple [LCG][lcg]'s output. - The generator has a period of approximately `2.1e9` (see [Numerical Recipes in C, 2nd Edition](#references), p. 279). - An [LCG][lcg] is fast and uses little memory. On the other hand, because the generator is a simple [linear congruential generator][lcg], the generator has recognized shortcomings. By today's PRNG standards, the generator's period is relatively short. In general, this generator is unsuitable for Monte Carlo simulations and cryptographic applications. +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array).
From c2f7b52ea428bedac8f8491eadeecd335ff92610 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 02:10:19 -0700 Subject: [PATCH 0704/1062] Refactor PRNG state management --- .../random/base/minstd-shuffle/lib/factory.js | 312 ++++++++++++------ 1 file changed, 209 insertions(+), 103 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js index 73ef0c2b42c9..e3d23c1320b7 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js @@ -16,12 +16,15 @@ * limitations under the License. */ +/* eslint-disable max-len */ + 'use strict'; // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var hasOwnProp = require( '@stdlib/assert/has-own-property' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; @@ -40,12 +43,78 @@ var randint32 = require( './rand_int32.js' ); var NORMALIZATION_CONSTANT = (INT32_MAX - 1)|0; // asm type annotation var MAX_SEED = (INT32_MAX - 1)|0; // asm type annotation -var TABLE_LENGTH = 32; -var STATE_LENGTH = TABLE_LENGTH + 2; -var SHUFFLE_STATE = STATE_LENGTH - 1; // index -var PRNG_STATE = STATE_LENGTH - 2; // index var A = 16807|0; // asm type annotation +// Define the number of elements in the shuffle table: +var TABLE_LENGTH = 32; + +// Define the state array schema version: +var STATE_ARRAY_VERSION = 1; // NOTE: anytime the state array schema changes, this value should be incremented!!! + +// Define the number of sections in the state array: +var NUM_STATE_SECTIONS = 3; // table, other, seed + +// Define the index offset of the "table" section in the state array: +var TABLE_SECTION_OFFSET = 2; // | version | num_sections | table_length | ...table | other_length | shuffle_state | prng_state | seed_length | ...seed | + +// Define the index offset of the "state" section in the state array: +var STATE_SECTION_OFFSET = TABLE_LENGTH + 3; // | version | num_sections | table_length | ...table | state_length | shuffle_state | prng_state | seed_length | ...seed | + +// Define the index offset of the seed section in the state array: +var SEED_SECTION_OFFSET = TABLE_LENGTH + 6; // | version | num_sections | table_length | ...table | state_length | shuffle_state | prng_state | seed_length | ...seed | + +// Define the length of the "fixed" length portion of the state array: +var STATE_FIXED_LENGTH = TABLE_LENGTH + 7; // 1 (version) + 1 (num_sections) + 1 (table_length) + TABLE_LENGTH (table) + 1 (state_length) + 1 (shuffle_state) + 1 (prng_state) + 1 (seed_length) + +// Define the indices for the shuffle table and PRNG states: +var SHUFFLE_STATE = TABLE_SECTION_OFFSET + 1; +var PRNG_STATE = TABLE_SECTION_OFFSET + 2; + + +// FUNCTIONS // + +/** +* Verifies state array integrity. +* +* @private +* @param {Int32Array} state - state array +* @param {boolean} FLG - flag indicating whether the state array was provided as an option (true) or an argument (false) +* @returns {(Error|null)} an error or `null` +*/ +function verifyState( state, FLG ) { + var s1; + if ( FLG ) { + s1 = 'option'; + } else { + s1 = 'argument'; + } + // The state array must have a minimum length... + if ( state.length < STATE_FIXED_LENGTH+1 ) { + return new RangeError( 'invalid '+s1+'. `state` array has insufficient length.' ); + } + // The first element of the state array must equal the supported state array schema version... + if ( state[ 0 ] !== STATE_ARRAY_VERSION ) { + return new RangeError( 'invalid '+s1+'. `state` array has an incompatible schema version.' ); + } + // The second element of the state array must contain the number of sections... + if ( state[ 1 ] !== NUM_STATE_SECTIONS ) { + return new RangeError( 'invalid '+s1+'. `state` array has an incompatible number of sections.' ); + } + // The length of the "table" section must equal `TABLE_LENGTH`... + if ( state[ TABLE_SECTION_OFFSET ] !== TABLE_LENGTH ) { + return new RangeError( 'invalid '+s1+'. `state` array has an incompatible table length.' ); + } + // The length of the "state" section must equal `2`... + if ( state[ STATE_SECTION_OFFSET ] !== 2 ) { + return new RangeError( 'invalid '+s1+'. `state` array has an incompatible state length.' ); + } + // The length of the "seed" section much match the empirical length... + if ( state[ SEED_SECTION_OFFSET ] !== state.length-STATE_FIXED_LENGTH ) { + return new RangeError( 'invalid '+s1+'. `state` array length is incompatible with seed section length.' ); + } + return null; +} + // MAIN // @@ -60,7 +129,7 @@ var A = 16807|0; // asm type annotation * @throws {TypeError} a seed must be either a positive integer less than the maximum signed 32-bit integer or an array-like object containing integers less than the maximum signed 32-bit integer * @throws {RangeError} a numeric seed must be a positive integer less than the maximum signed 32-bit integer * @throws {TypeError} state must be an `Int32Array` -* @throws {RangeError} insufficient state length +* @throws {Error} must provide a valid state * @throws {TypeError} `copy` option must be a boolean * @returns {Function} shuffled LCG PRNG * @@ -80,46 +149,51 @@ var A = 16807|0; // asm type annotation * // returns 1421600654 */ function factory( options ) { + var STATE; var state; + var opts; var seed; var slen; + var err; + + opts = {}; if ( arguments.length ) { if ( !isObject( options ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + options + '`.' ); } if ( hasOwnProp( options, 'copy' ) ) { + opts.copy = options.copy; if ( !isBoolean( options.copy ) ) { throw new TypeError( 'invalid option. `copy` option must be a boolean. Option: `' + options.copy + '`.' ); } } if ( hasOwnProp( options, 'state' ) ) { state = options.state; + opts.state = true; if ( !isInt32Array( state ) ) { throw new TypeError( 'invalid option. `state` option must be an Int32Array. Option: `' + state + '`.' ); } - // Determine the seed length: - slen = state.length - STATE_LENGTH; - if ( slen <= 0 ) { - throw new RangeError( 'invalid option. `state` option has insufficient length.' ); + err = verifyState( state, true ); + if ( err ) { + throw err; } - if ( options.copy === false ) { - // Create a state "view": - state = new Int32Array( state.buffer, state.byteOffset, STATE_LENGTH ); // eslint-disable-line max-len - - // Create a seed "view": - seed = new Int32Array( state.buffer, state.byteOffset+(STATE_LENGTH*state.BYTES_PER_ELEMENT), slen ); // eslint-disable-line max-len + if ( opts.copy === false ) { + STATE = state; } else { - // Extract the state: - state = gcopy( STATE_LENGTH, state, 1, new Int32Array( STATE_LENGTH ), 1 ); // eslint-disable-line max-len - - // Extract the PRNG seed: - seed = gcopy.ndarray( slen, state, 1, STATE_LENGTH, new Int32Array( slen ), 1, 0 ); // eslint-disable-line max-len + STATE = new Int32Array( state.length ); + gcopy( state.length, state, 1, STATE, 1 ); } + // Create a state (table) "view": + state = new Int32Array( STATE.buffer, STATE.byteOffset+((TABLE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), TABLE_LENGTH ); + + // Create a seed "view": + seed = new Int32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), state[ SEED_SECTION_OFFSET ] ); } // If provided a PRNG state, we ignore the `seed` option... if ( seed === void 0 ) { if ( hasOwnProp( options, 'seed' ) ) { seed = options.seed; + opts.seed = true; if ( isPositiveInteger( seed ) ) { if ( seed > MAX_SEED ) { throw new RangeError( 'invalid option. `seed` option must be a positive integer less than the maximum signed 32-bit integer. Option: `' + seed + '`.' ); @@ -127,15 +201,28 @@ function factory( options ) { seed |= 0; // asm type annotation } else if ( isCollection( seed ) && seed.length > 0 ) { slen = seed.length; + STATE = new Int32Array( STATE_FIXED_LENGTH+slen ); - // Create an internal copy of the provided seed array to prevent the inability to reproduce PRNG values based on the PRNG's stated seed due to external state mutation: - seed = gcopy( slen, seed, 1, new Int32Array( slen ), 1 ); + // Initialize sections: + STATE[ 0 ] = STATE_ARRAY_VERSION; + STATE[ 1 ] = NUM_STATE_SECTIONS; + STATE[ TABLE_SECTION_OFFSET ] = TABLE_LENGTH; + STATE[ STATE_SECTION_OFFSET ] = 2; + STATE[ PRNG_STATE ] = seed[ 0 ]; + STATE[ SEED_SECTION_OFFSET ] = slen; + + // Copy the provided seed array to prevent external mutation, as mutation would lead to an inability to reproduce PRNG values according to the PRNG's stated seed: + gcopy.ndarray( slen, seed, 1, 0, STATE, 1, SEED_SECTION_OFFSET+1 ); + + // Create a state (table) "view": + state = new Int32Array( STATE.buffer, STATE.byteOffset+((TABLE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), TABLE_LENGTH ); + + // Create a seed "view": + seed = new Int32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), slen ); // Initialize the internal PRNG state: - state = new Int32Array( STATE_LENGTH ); - state[ PRNG_STATE ] = seed[ 0 ]; state = createTable( minstd, state, TABLE_LENGTH ); - state[ SHUFFLE_STATE ] = state[ 0 ]; + STATE[ SHUFFLE_STATE ] = state[ 0 ]; } else { throw new TypeError( 'invalid option. `seed` option must be either a positive integer less than the maximum signed 32-bit integer or an array-like object containing integer values less than the maximum signed 32-bit integer. Option: `' + seed + '`.' ); } @@ -147,64 +234,45 @@ function factory( options ) { seed = randint32()|0; // asm type annotation } if ( state === void 0 ) { - state = new Int32Array( STATE_LENGTH ); - state[ PRNG_STATE ] = seed; - state = createTable( minstd, state, TABLE_LENGTH ); - state[ SHUFFLE_STATE ] = state[ 0 ]; + STATE = new Int32Array( STATE_FIXED_LENGTH+1 ); - seed = new Int32Array( [ seed ] ); - slen = 1; + // Initialize sections: + STATE[ 0 ] = STATE_ARRAY_VERSION; + STATE[ 1 ] = NUM_STATE_SECTIONS; + STATE[ TABLE_SECTION_OFFSET ] = TABLE_LENGTH; + STATE[ STATE_SECTION_OFFSET ] = 2; + STATE[ PRNG_STATE ] = seed; + STATE[ SEED_SECTION_OFFSET ] = 1; + STATE[ SEED_SECTION_OFFSET+1 ] = seed; + + // Create a state (table) "view": + state = new Int32Array( STATE.buffer, STATE.byteOffset+((TABLE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), TABLE_LENGTH ); + + // Create a seed "view": + seed = new Int32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), 1 ); + + // Initialize the internal PRNG state: + state = createTable( minstd, state, TABLE_LENGTH ); + STATE[ SHUFFLE_STATE ] = state[ 0 ]; } setReadOnly( minstdShuffle, 'NAME', 'minstd-shuffle' ); - defineProperty( minstdShuffle, 'seed', { - 'configurable': false, - 'enumerable': true, - 'get': getSeed - }); - defineProperty( minstdShuffle, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - defineProperty( minstdShuffle, 'stateLength', { - 'configurable': false, - 'enumerable': true, - 'get': getStateLength - }); - defineProperty( minstdShuffle, 'byteLength', { - 'configurable': false, - 'enumerable': true, - 'get': getStateSize - }); + setReadOnlyAccessor( minstdShuffle, 'seed', getSeed ); + setReadOnlyAccessor( minstdShuffle, 'seedLength', getSeedLength ); + setReadWriteAccessor( minstdShuffle, 'state', getState, setState ); + setReadOnlyAccessor( minstdShuffle, 'stateLength', getStateLength ); + setReadOnlyAccessor( minstdShuffle, 'byteLength', getStateSize ); setReadOnly( minstdShuffle, 'MIN', 1 ); setReadOnly( minstdShuffle, 'MAX', INT32_MAX-1 ); setReadOnly( minstdShuffle, 'normalized', normalized ); setReadOnly( normalized, 'NAME', minstdShuffle.NAME ); - defineProperty( normalized, 'seed', { - 'configurable': false, - 'enumerable': true, - 'get': getSeed - }); - defineProperty( normalized, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - defineProperty( normalized, 'stateLength', { - 'configurable': false, - 'enumerable': true, - 'get': getStateLength - }); - defineProperty( normalized, 'byteLength', { - 'configurable': false, - 'enumerable': true, - 'get': getStateSize - }); - setReadOnly( normalized, 'MIN', (minstdShuffle.MIN-1) / NORMALIZATION_CONSTANT ); - setReadOnly( normalized, 'MAX', (minstdShuffle.MAX-1) / NORMALIZATION_CONSTANT ); + setReadOnlyAccessor( normalized, 'seed', getSeed ); + setReadOnlyAccessor( normalized, 'seedLength', getSeedLength ); + setReadWriteAccessor( normalized, 'state', getState, setState ); + setReadOnlyAccessor( normalized, 'stateLength', getStateLength ); + setReadOnlyAccessor( normalized, 'byteLength', getStateSize ); + setReadOnly( normalized, 'MIN', (minstdShuffle.MIN-1.0) / NORMALIZATION_CONSTANT ); + setReadOnly( normalized, 'MAX', (minstdShuffle.MAX-1.0) / NORMALIZATION_CONSTANT ); return minstdShuffle; @@ -215,69 +283,107 @@ function factory( options ) { * @returns {Int32Array} seed */ function getSeed() { - return gcopy( slen, seed, 1, new Int32Array( slen ), 1 ); + var len = STATE[ SEED_SECTION_OFFSET ]; + return gcopy( len, seed, 1, new Int32Array( len ), 1 ); } /** - * Returns the current PRNG state length. + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return STATE[ SEED_SECTION_OFFSET ]; + } + + /** + * Returns the PRNG state length. * * @private * @returns {PositiveInteger} state length */ function getStateLength() { - return STATE_LENGTH + slen; + return STATE.length; } /** - * Returns the current PRNG state size (in bytes). + * Returns the PRNG state size (in bytes). * * @private * @returns {PositiveInteger} state size (in bytes) */ function getStateSize() { - return getStateLength() * 4; // 4 bytes per int32 + return STATE.byteLength; } /** * Returns the current PRNG state. * + * ## Notes + * + * - The PRNG state array is comprised of a preamble followed by `3` sections: + * + * 0. preamble (version + number of sections) + * 1. shuffle table + * 2. internal PRNG state + * 3. PRNG seed + * + * - The first element of the PRNG state array preamble is the state array schema version. + * + * - The second element of the PRNG state array preamble is the number of state array sections (i.e., `3`). + * + * - The first element of each section following the preamble specifies the section length. The remaining section elements comprise the section contents. + * * @private * @returns {Int32Array} current state */ function getState() { - var out = new Int32Array( getStateLength() ); - - // Copy the internal state: - out = gcopy( STATE_LENGTH, state, 1, out, 1 ); - - // Copy the seed: - out = gcopy.ndarray( slen, seed, 1, 0, out, 1, STATE_LENGTH ); - - return out; + var len = STATE.length; + return gcopy( len, STATE, 1, new Int32Array( len ), 1 ); } /** * Sets the PRNG state. * + * ## Notes + * + * - If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. + * - If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + * * @private * @param {Int32Array} s - generator state * @throws {TypeError} must provide an `Int32Array` - * @throws {RangeError} must provide an `Int32Array` having an expected length + * @throws {Error} must provide a valid state */ function setState( s ) { + var err; if ( !isInt32Array( s ) ) { throw new TypeError( 'invalid argument. Must provide an Int32Array. Value: `' + s + '`.' ); } - // Determine the seed length: - slen = s.length - STATE_LENGTH; - if ( slen <= 0 ) { - throw new RangeError( 'invalid argument. The provided array has insufficient length.' ); + err = verifyState( s, false ); + if ( err ) { + throw err; + } + if ( opts.copy === false ) { + if ( opts.state && s.length === STATE.length ) { + gcopy( s.length, s, 1, STATE, 1 ); // update current shared state + } else { + STATE = s; // point to new shared state + opts.state = true; // setting this flag allows updating a shared state even if a state array was not provided at PRNG creation + } + } else { + // Check if we can reuse allocated memory... + if ( s.length !== STATE.length ) { + STATE = new Int32Array( s.length ); // reallocate + } + gcopy( s.length, s, 1, STATE, 1 ); } - // Update the internal state: - gcopy( STATE_LENGTH, s, 1, state, 1 ); + // Create a new state (table) "view": + state = new Int32Array( STATE.buffer, STATE.byteOffset+((TABLE_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), TABLE_LENGTH ); - // Set the seed: - seed = gcopy.ndarray( slen, s, 1, STATE_LENGTH, new Int32Array( slen ), 1, 0 ); // eslint-disable-line max-len + // Create a new seed "view": + seed = new Int32Array( STATE.buffer, STATE.byteOffset+((SEED_SECTION_OFFSET+1)*STATE.BYTES_PER_ELEMENT), STATE[ SEED_SECTION_OFFSET ] ); } /** @@ -287,9 +393,9 @@ function factory( options ) { * @returns {integer32} pseudorandom integer */ function minstd() { - var s = state[ PRNG_STATE ]|0; // asm type annotation + var s = STATE[ PRNG_STATE ]|0; // asm type annotation s = ( (A*s)%INT32_MAX )|0; // asm type annotation - state[ PRNG_STATE ] = s; + STATE[ PRNG_STATE ] = s; return s|0; // asm type annotation } @@ -307,14 +413,14 @@ function factory( options ) { var s; var i; - s = state[ SHUFFLE_STATE ]; + s = STATE[ SHUFFLE_STATE ]; i = floor( TABLE_LENGTH * (s/INT32_MAX) ); // Pull a state from the table: s = state[ i ]; // Update the PRNG state: - state[ SHUFFLE_STATE ] = s; + STATE[ SHUFFLE_STATE ] = s; // Replace the pulled state: state[ i ] = minstd(); From 53d8706ca321871f9e6430f87eaeb19ce800c3a7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 02:14:05 -0700 Subject: [PATCH 0705/1062] Update test description --- .../random/base/minstd-shuffle/test/test.create_table.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.create_table.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.create_table.js index 263b2528c593..34748a65d09b 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.create_table.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.create_table.js @@ -35,7 +35,7 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns an Int32Array', function test( t ) { +tape( 'the function returns an `Int32Array`', function test( t ) { var arr; var out; From 54d4463afff294638548a2f985986a15bc65c04f Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 02:19:47 -0700 Subject: [PATCH 0706/1062] Update tests --- .../random/base/minstd-shuffle/test/test.js | 58 +++++++++++-------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js index fc0b3e1a8f64..e6f8874af6c6 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.js @@ -36,54 +36,59 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate normalized pseudorandom numbers', function test( t ) { - t.equal( typeof minstd.normalized, 'function', 'has `normalized` method' ); + t.equal( typeof minstd.normalized, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is a method to generate linear congruential pseudorandom number generator', function test( t ) { - t.equal( typeof minstd.factory, 'function', 'has factory method' ); + t.equal( typeof minstd.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( minstd.NAME, 'minstd-shuffle', 'has `NAME` property' ); + t.equal( minstd.NAME, 'minstd-shuffle', 'has property' ); t.end(); }); -tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isInt32Array( minstd.seed ), true, 'has `seed` property' ); +tape( 'attached to the main export is the minimum possible generated number', function test( t ) { + t.equal( minstd.MIN, 1, 'has property' ); t.end(); }); -tape( 'attached to the main export is the minimum possible generated number', function test( t ) { - t.equal( minstd.MIN, 1, 'has `MIN` property' ); +tape( 'attached to the main export is the maximum possible generated number', function test( t ) { + t.equal( minstd.MAX, INT32_MAX-1, 'has property' ); t.end(); }); -tape( 'attached to the main export is the maximum possible generated number', function test( t ) { - t.equal( minstd.MAX, INT32_MAX-1, 'has `MAX` property' ); +tape( 'attached to the main export is the generator seed', function test( t ) { + t.equal( isInt32Array( minstd.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof minstd.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isInt32Array( minstd.state ), true, 'has `state` property' ); + t.equal( isInt32Array( minstd.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof minstd.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof minstd.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof minstd.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof minstd.byteLength, 'number', 'has property' ); t.end(); }); tape( 'the function returns pseudorandom integers strictly between 0 and 2^31-1 (inclusive)', function test( t ) { var v; var i; - for ( i = 0; i < 1e4; i++ ) { + for ( i = 0; i < 1e3; i++ ) { v = minstd(); t.equal( typeof v, 'number', 'returns a number' ); t.equal( isPositiveInteger( v ), true, 'returns a positive integer' ); @@ -95,7 +100,7 @@ tape( 'the function returns pseudorandom integers strictly between 0 and 2^31-1 tape( 'the `normalized` method returns pseudorandom numbers strictly between 0 (inclusive) and 1 (exclusive)', function test( t ) { var v; var i; - for ( i = 0; i < 1e4; i++ ) { + for ( i = 0; i < 1e3; i++ ) { v = minstd.normalized(); t.equal( typeof v, 'number', 'returns a number' ); t.equal( v >= 0.0 && v < 1.0, true, 'returns a number between 0 (inclusive) and 1 (exclusive)' ); @@ -104,37 +109,42 @@ tape( 'the `normalized` method returns pseudorandom numbers strictly between 0 ( }); tape( 'attached to the `normalized` method is the generator name', function test( t ) { - t.equal( minstd.normalized.NAME, 'minstd-shuffle', 'has `NAME` property' ); + t.equal( minstd.normalized.NAME, 'minstd-shuffle', 'has property' ); t.end(); }); -tape( 'attached to the `normalized` method is the generator seed', function test( t ) { - t.equal( isInt32Array( minstd.normalized.seed ), true, 'has `seed` property' ); +tape( 'attached to the `normalized` method is the minimum possible generated number', function test( t ) { + t.equal( minstd.normalized.MIN, 0.0, 'has property' ); t.end(); }); -tape( 'attached to the `normalized` method is the minimum possible generated number', function test( t ) { - t.equal( minstd.normalized.MIN, 0.0, 'has `MIN` property' ); +tape( 'attached to the `normalized` method is the maximum possible generated number', function test( t ) { + t.equal( minstd.normalized.MAX, (INT32_MAX-2.0)/(INT32_MAX-1.0), 'has property' ); t.end(); }); -tape( 'attached to the `normalized` method is the maximum possible generated number', function test( t ) { - t.equal( minstd.normalized.MAX, (INT32_MAX-2.0)/(INT32_MAX-1.0), 'has `MAX` property' ); +tape( 'attached to the `normalized` method is the generator seed', function test( t ) { + t.equal( isInt32Array( minstd.normalized.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the `normalized` method is the generator seed length', function test( t ) { + t.equal( typeof minstd.normalized.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the `normalized` method is the generator state', function test( t ) { - t.equal( isInt32Array( minstd.normalized.state ), true, 'has `state` property' ); + t.equal( isInt32Array( minstd.normalized.state ), true, 'has property' ); t.end(); }); tape( 'attached to the `normalized` method is the generator state length', function test( t ) { - t.equal( typeof minstd.normalized.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof minstd.normalized.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the `normalized` method is the generator state size', function test( t ) { - t.equal( typeof minstd.normalized.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof minstd.normalized.byteLength, 'number', 'has property' ); t.end(); }); From 471086d643ea426f18621c3774b116cbf42bb2c9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 02:55:22 -0700 Subject: [PATCH 0707/1062] Fix index bug --- .../@stdlib/random/base/minstd-shuffle/lib/factory.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js index e3d23c1320b7..8faea74ca490 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/lib/factory.js @@ -67,8 +67,8 @@ var SEED_SECTION_OFFSET = TABLE_LENGTH + 6; // | version | num_sections | table_ var STATE_FIXED_LENGTH = TABLE_LENGTH + 7; // 1 (version) + 1 (num_sections) + 1 (table_length) + TABLE_LENGTH (table) + 1 (state_length) + 1 (shuffle_state) + 1 (prng_state) + 1 (seed_length) // Define the indices for the shuffle table and PRNG states: -var SHUFFLE_STATE = TABLE_SECTION_OFFSET + 1; -var PRNG_STATE = TABLE_SECTION_OFFSET + 2; +var SHUFFLE_STATE = STATE_SECTION_OFFSET + 1; +var PRNG_STATE = STATE_SECTION_OFFSET + 2; // FUNCTIONS // From dd926f971ab9cc78ad7642c9b89fe1f253b731ec Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 02:55:49 -0700 Subject: [PATCH 0708/1062] Update tests --- .../base/minstd-shuffle/test/test.factory.js | 1047 ++++++++++++++++- 1 file changed, 982 insertions(+), 65 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js index 932de46f6e48..debeb5a16b8e 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js @@ -1,3 +1,5 @@ +/* eslint-disable max-lines */ + /** * @license Apache-2.0 * @@ -28,6 +30,7 @@ var now = require( '@stdlib/time/now' ); var isInt32Array = require( '@stdlib/assert/is-int32array' ); var isPositiveInteger = require( '@stdlib/math/base/assert/is-positive-integer' ); var kstest = require( '@stdlib/stats/kstest' ); +var gcopy = require( '@stdlib/blas/base/gcopy' ); var factory = require( './../lib/factory.js' ); @@ -214,6 +217,210 @@ tape( 'if provided a `state` option having an insufficient length, the factory f } }); +tape( 'if provided a `state` option containing an unsupported version, the factory function throws an error', function test( t ) { + var values; + var v; + var i; + + values = []; + + v = new Int32Array( 40 ); // 32+8 + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 1; // seed length + values.push( v ); + + v = new Int32Array( 41 ); // >32+8 + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided a `state` option containing an unsupported number of sections, the factory function throws an error', function test( t ) { + var values; + var v; + var i; + + values = []; + + v = new Int32Array( 40 ); // 32+8 + v[ 0 ] = 1; // version + v[ 1 ] = 4; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 1; // seed length + values.push( v ); + + v = new Int32Array( 41 ); // >32+8 + v[ 0 ] = 1; // version + v[ 1 ] = 4; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided a `state` option containing an unsupported table length, the factory function throws an error', function test( t ) { + var values; + var v; + var i; + + values = []; + + v = new Int32Array( 41 ); + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 33; // table length + v[ 36 ] = 2; // state length + v[ 37 ] = 8; // shuffle state + v[ 38 ] = 9; // PRNG state + v[ 39 ] = 1; // seed length + values.push( v ); + + v = new Int32Array( 42 ); + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 34; // table length + v[ 37 ] = 2; // state length + v[ 38 ] = 8; // shuffle state + v[ 39 ] = 9; // PRNG state + v[ 40 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided a `state` option containing an unsupported state length, the factory function throws an error', function test( t ) { + var values; + var v; + var i; + + values = []; + + v = new Int32Array( 39 ); + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 1; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 1; // seed length + values.push( v ); + + v = new Int32Array( 41 ); // >32+8 + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 3; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 39 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided a `state` option containing an incompatible seed length, the factory function throws an error', function test( t ) { + var values; + var v; + var i; + + values = []; + + v = new Int32Array( 40 ); + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 9; // seed length + values.push( v ); + + v = new Int32Array( 41 ); + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 9; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + tape( 'the function returns a pseudorandom number generator (no options)', function test( t ) { var minstd; var v; @@ -298,7 +505,7 @@ tape( 'the function returns a seeded pseudorandom number generator (array seed)' t.end(); }); -tape( 'the returned function returns a known sequence of pseudograndom integers', function test( t ) { +tape( 'the returned function returns a known sequence of pseudorandom integers', function test( t ) { var expected; var actual; var minstd; @@ -328,7 +535,7 @@ tape( 'the returned function returns a known sequence of pseudograndom integers' for ( i = 0; i < expected.length; i++ ) { actual[ i ] = minstd(); } - t.deepEqual( actual, expected, 'returns expected numbers' ); + t.deepEqual( actual, expected, 'returns expected values' ); // Seed: 123456789 seed = 123456789; @@ -352,14 +559,26 @@ tape( 'the returned function returns a known sequence of pseudograndom integers' for ( i = 0; i < expected.length; i++ ) { actual[ i ] = minstd(); } - t.deepEqual( actual, expected, 'returns expected numbers' ); + t.deepEqual( actual, expected, 'returns expected values' ); t.end(); }); tape( 'attached to the returned function is the generator name', function test( t ) { var minstd = factory(); - t.equal( minstd.NAME, 'minstd-shuffle', 'has `NAME` property' ); + t.equal( minstd.NAME, 'minstd-shuffle', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the minimum possible generated number', function test( t ) { + var minstd = factory(); + t.equal( minstd.MIN, 1, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the maximum possible generated number', function test( t ) { + var minstd = factory(); + t.equal( minstd.MAX, INT32_MAX-1, 'has property' ); t.end(); }); @@ -372,7 +591,7 @@ tape( 'attached to the returned function is the generator seed (integer seed)', }); actual = minstd.seed; - t.equal( isInt32Array( actual ), true, 'has `seed` property' ); + t.equal( isInt32Array( actual ), true, 'has property' ); t.equal( actual.length, 1, 'has expected length' ); t.equal( actual[ 0 ], 12345, 'equal to provided seed' ); t.end(); @@ -391,40 +610,34 @@ tape( 'attached to the returned function is the generator seed (array seed)', fu }); actual = minstd.seed; - t.equal( isInt32Array( actual ), true, 'has `seed` property' ); + t.equal( isInt32Array( actual ), true, 'has property' ); for ( i = 0; i < seed.length; i++ ) { t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } t.end(); }); -tape( 'attached to the returned function is the minimum possible generated number', function test( t ) { - var minstd = factory(); - t.equal( minstd.MIN, 1, 'has `MIN` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the maximum possible generated number', function test( t ) { +tape( 'attached to the returned function is the generator seed length', function test( t ) { var minstd = factory(); - t.equal( minstd.MAX, INT32_MAX-1, 'has `MAX` property' ); + t.equal( typeof minstd.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the returned function is the generator state', function test( t ) { var minstd = factory(); - t.equal( isInt32Array( minstd.state ), true, 'has `state` property' ); + t.equal( isInt32Array( minstd.state ), true, 'has property' ); t.end(); }); tape( 'attached to the returned function is the generator state length', function test( t ) { var minstd = factory(); - t.equal( typeof minstd.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof minstd.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the returned function is the generator state size', function test( t ) { var minstd = factory(); - t.equal( typeof minstd.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof minstd.byteLength, 'number', 'has property' ); t.end(); }); @@ -483,13 +696,222 @@ tape( 'if the `state` property is set to an Int32Array having an unexpected leng } }); +tape( 'if the `state` property is set to an Int32Array containing an unsupported version, an error is thrown', function test( t ) { + var minstd; + var values; + var v; + var i; + + minstd = factory(); + + values = []; + + v = new Int32Array( 40 ); // 32+8 + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 1; // seed length + values.push( v ); + + v = new Int32Array( 41 ); // >32+8 + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + minstd.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Int32Array containing an unsupported number of sections, an error is thrown', function test( t ) { + var minstd; + var values; + var v; + var i; + + minstd = factory(); + + values = []; + + v = new Int32Array( 40 ); // 32+8 + v[ 0 ] = 1; // version + v[ 1 ] = 4; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 1; // seed length + values.push( v ); + + v = new Int32Array( 41 ); // >32+8 + v[ 0 ] = 1; // version + v[ 1 ] = 4; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + minstd.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Int32Array containing an unsupported table length, an error is thrown', function test( t ) { + var minstd; + var values; + var v; + var i; + + minstd = factory(); + + values = []; + + v = new Int32Array( 41 ); + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 33; // table length + v[ 36 ] = 2; // state length + v[ 37 ] = 8; // shuffle state + v[ 38 ] = 9; // PRNG state + v[ 39 ] = 1; // seed length + values.push( v ); + + v = new Int32Array( 42 ); + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 34; // table length + v[ 37 ] = 2; // state length + v[ 38 ] = 8; // shuffle state + v[ 39 ] = 9; // PRNG state + v[ 40 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + minstd.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Int32Array containing an unsupported state length, an error is thrown', function test( t ) { + var minstd; + var values; + var v; + var i; + + minstd = factory(); + + values = []; + + v = new Int32Array( 39 ); + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 1; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 1; // seed length + values.push( v ); + + v = new Int32Array( 41 ); // >32+8 + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 3; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 39 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + minstd.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Int32Array containing an incompatible seed length, an error is thrown', function test( t ) { + var minstd; + var values; + var v; + var i; + + minstd = factory(); + + values = []; + + v = new Int32Array( 40 ); + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 9; // seed length + values.push( v ); + + v = new Int32Array( 41 ); + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 9; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + minstd.state = value; + }; + } +}); + tape( 'attached to the returned function is a `normalized` method for generating pseudorandom numbers strictly between 0 (inclusive) and 1 (exclusive)', function test( t ) { var minstd; var v; var i; minstd = factory(); - for ( i = 0; i < 1e4; i++ ) { + for ( i = 0; i < 1e3; i++ ) { v = minstd.normalized(); t.equal( typeof v, 'number', 'returns a number' ); t.equal( v >= 0.0 && v < 1.0, true, 'returns a number between 0 (inclusive) and 1 (exclusive)' ); @@ -499,7 +921,19 @@ tape( 'attached to the returned function is a `normalized` method for generating tape( 'attached to the `normalized` method is the generator name', function test( t ) { var minstd = factory(); - t.equal( minstd.normalized.NAME, 'minstd-shuffle', 'has `NAME` property' ); + t.equal( minstd.normalized.NAME, 'minstd-shuffle', 'has property' ); + t.end(); +}); + +tape( 'attached to the `normalized` method is the minimum possible generated number', function test( t ) { + var minstd = factory(); + t.equal( minstd.normalized.MIN, 0.0, 'has property' ); + t.end(); +}); + +tape( 'attached to the `normalized` method is the maximum possible generated number', function test( t ) { + var minstd = factory(); + t.equal( minstd.normalized.MAX, (INT32_MAX-2.0)/(INT32_MAX-1.0), 'has property' ); t.end(); }); @@ -512,7 +946,7 @@ tape( 'attached to the `normalized` method is the generator seed (integer seed)' }); actual = minstd.normalized.seed; - t.equal( isInt32Array( actual ), true, 'has `seed` property' ); + t.equal( isInt32Array( actual ), true, 'has property' ); t.equal( actual.length, 1, 'has expected length' ); t.equal( actual[ 0 ], 12345, 'equal to provided seed' ); t.end(); @@ -530,40 +964,28 @@ tape( 'attached to the `normalized` method is the generator seed (array seed)', }); actual = minstd.normalized.seed; - t.equal( isInt32Array( actual ), true, 'has `seed` property' ); + t.equal( isInt32Array( actual ), true, 'has property' ); for ( i = 0; i < seed.length; i++ ) { t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } t.end(); }); -tape( 'attached to the `normalized` method is the minimum possible generated number', function test( t ) { - var minstd = factory(); - t.equal( minstd.normalized.MIN, 0.0, 'has `MIN` property' ); - t.end(); -}); - -tape( 'attached to the `normalized` method is the maximum possible generated number', function test( t ) { - var minstd = factory(); - t.equal( minstd.normalized.MAX, (INT32_MAX-2.0)/(INT32_MAX-1.0), 'has `MAX` property' ); - t.end(); -}); - tape( 'attached to the `normalized` method is the generator state', function test( t ) { var minstd = factory(); - t.equal( isInt32Array( minstd.normalized.state ), true, 'has `state` property' ); + t.equal( isInt32Array( minstd.normalized.state ), true, 'has property' ); t.end(); }); tape( 'attached to the `normalized` method is the generator state length', function test( t ) { var minstd = factory(); - t.equal( typeof minstd.normalized.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof minstd.normalized.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the `normalized` method is the generator state size', function test( t ) { var minstd = factory(); - t.equal( typeof minstd.normalized.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof minstd.normalized.byteLength, 'number', 'has property' ); t.end(); }); @@ -622,24 +1044,233 @@ tape( 'if the `state` property is set to an Int32Array having an unexpected leng } }); -tape( 'the `normalized` method returns pseudorandom numbers drawn from a uniform distribution', opts, function test( t ) { - var threshold; - var count; - var npass; - var N; - var x; - - threshold = 0.10; +tape( 'if the `state` property is set to an Int32Array containing an unsupported version, an error is thrown (normalized)', function test( t ) { + var minstd; + var values; + var v; + var i; - x = new Array( 1e3 ); - N = 500; + minstd = factory(); - count = -1; - npass = 0; + values = []; + + v = new Int32Array( 40 ); // 32+8 + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 1; // seed length + values.push( v ); + + v = new Int32Array( 41 ); // >32+8 + v[ 0 ] = 0; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 2; // seed length + values.push( v ); - gof(); + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); - function gof() { + function badValue( value ) { + return function badValue() { + minstd.normalized.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Int32Array containing an unsupported number of sections, an error is thrown (normalized)', function test( t ) { + var minstd; + var values; + var v; + var i; + + minstd = factory(); + + values = []; + + v = new Int32Array( 40 ); // 32+8 + v[ 0 ] = 1; // version + v[ 1 ] = 4; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 1; // seed length + values.push( v ); + + v = new Int32Array( 41 ); // >32+8 + v[ 0 ] = 1; // version + v[ 1 ] = 4; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + minstd.normalized.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Int32Array containing an unsupported table length, an error is thrown (normalized)', function test( t ) { + var minstd; + var values; + var v; + var i; + + minstd = factory(); + + values = []; + + v = new Int32Array( 41 ); + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 33; // table length + v[ 36 ] = 2; // state length + v[ 37 ] = 8; // shuffle state + v[ 38 ] = 9; // PRNG state + v[ 39 ] = 1; // seed length + values.push( v ); + + v = new Int32Array( 42 ); + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 34; // table length + v[ 37 ] = 2; // state length + v[ 38 ] = 8; // shuffle state + v[ 39 ] = 9; // PRNG state + v[ 40 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + minstd.normalized.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Int32Array containing an unsupported state length, an error is thrown (normalized)', function test( t ) { + var minstd; + var values; + var v; + var i; + + minstd = factory(); + + values = []; + + v = new Int32Array( 39 ); + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 1; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 1; // seed length + values.push( v ); + + v = new Int32Array( 41 ); // >32+8 + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 3; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 39 ] = 2; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + minstd.normalized.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Int32Array containing an incompatible seed length, an error is thrown (normalized)', function test( t ) { + var minstd; + var values; + var v; + var i; + + minstd = factory(); + + values = []; + + v = new Int32Array( 40 ); + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 9; // seed length + values.push( v ); + + v = new Int32Array( 41 ); + v[ 0 ] = 1; // version + v[ 1 ] = 3; // number of sections + v[ 2 ] = 32; // table length + v[ 35 ] = 2; // state length + v[ 36 ] = 8; // shuffle state + v[ 37 ] = 9; // PRNG state + v[ 38 ] = 9; // seed length + values.push( v ); + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + minstd.normalized.state = value; + }; + } +}); + +tape( 'the `normalized` method returns pseudorandom numbers drawn from a uniform distribution', opts, function test( t ) { + var threshold; + var count; + var npass; + var N; + var x; + + threshold = 0.10; + + x = new Array( 1e3 ); + N = 500; + + count = -1; + npass = 0; + + gof(); + + function gof() { var rejected; var pValue; var minstd; @@ -773,34 +1404,54 @@ tape( 'the function supports specifying a shared generator state', function test t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); j += 2; // stride } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var minstd; + var state; + var arr; + var i; + + minstd = factory(); // Move to a future state... for ( i = 0; i < 100; i++ ) { - v2 = rand2(); + minstd(); } + // Capture the current state: + state = minstd.state; - // Reset the (shared) state: - rand1.state = state; + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( minstd() ); + } + // Set the state: + minstd.state = state; // Replay previously generated values... - j = 0; - for ( i = 0; i < 50; i++ ) { - v1 = rand1(); - v2 = rand2(); - t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); - t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); - j += 2; // stride + for ( i = 0; i < 100; i++ ) { + t.equal( minstd(), arr[ i ], 'returns expected value. i: '+i+'.' ); } t.end(); }); -tape( 'the returned function supports setting the generator state', function test( t ) { +tape( 'the returned function supports setting the generator state to a state array having a different length', function test( t ) { var minstd; + var shared; var state; + var rand1; + var rand2; var arr; + var v1; + var v2; var i; - minstd = factory(); + // Seed length: 2 + minstd = factory({ + 'seed': [ 1234, 5678 ] + }); // Move to a future state... for ( i = 0; i < 100; i++ ) { @@ -814,12 +1465,34 @@ tape( 'the returned function supports setting the generator state', function tes for ( i = 0; i < 100; i++ ) { arr.push( minstd() ); } - // Set the state: - minstd.state = state; + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Int32Array( state ); + + // Create PRNGs having seed lengths equal to 1: + rand1 = factory({ + 'seed': [ 6789 ] + }); + rand2 = factory({ + 'seed': [ 4321 ] + }); + + // Move to future states... + for ( i = 0; i < 100; i++ ) { + v1 = rand1(); + v2 = rand2(); + } + + // Reset the PRNG states: + rand1.state = shared; + rand2.state = shared; // Replay previously generated values... for ( i = 0; i < 100; i++ ) { - t.equal( minstd(), arr[ i ], 'returns expected value. i: '+i+'.' ); + v1 = rand1(); + t.equal( v1, arr[ i ], 'returns expected value. i: '+i+'.' ); + v2 = rand2(); + t.equal( v2, arr[ i ], 'returns expected value. i: '+i+'.' ); } t.end(); }); @@ -883,3 +1556,247 @@ tape( 'the returned function supports setting the generator state (normalized)', } t.end(); }); + +tape( 'the returned function supports setting a shared generator state (same length)', function test( t ) { + var minstd; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + minstd = factory(); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + minstd(); + } + // Capture the current state: + state = minstd.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( minstd() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Int32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory({ + 'state': shared, + 'copy': false + }); + rand2 = factory({ + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = new Int32Array( state ); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting a shared generator state (different length)', function test( t ) { + var minstd; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var s; + var i; + var j; + + minstd = factory(); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + minstd(); + } + // Capture the current state: + state = minstd.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( minstd() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Int32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory({ + 'state': shared, + 'copy': false + }); + rand2 = factory({ + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (*previously* shared) state: + s = new Int32Array( state.length+1 ); + gcopy( state.length, state, 1, s, 1 ); + s[ s.length-3 ] = 2; + s[ s.length-1 ] = 1234; + rand1.state = s; + + // Attempt to replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + + // `rand1()` state is not affected by `rand2()`: + t.equal( v1, arr[ i ], 'returns expected value. i: '+i+'.' ); + + // `rand2()` state was never reset: + t.notEqual( v2, arr[ j+1 ], 'does not return expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Reset the (*previously* shared) state: + rand2.state = s; + + // Reset to a shared state: + shared = new Int32Array( state ); + rand1.state = shared; + rand2.state = shared; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting a shared generator state (no initial shared state)', function test( t ) { + var minstd; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + minstd = factory(); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + minstd(); + } + // Capture the current state: + state = minstd.state; + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Int32Array( state ); + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( minstd() ); + } + + // Create PRNGs using the captured state: + rand1 = factory({ + 'copy': false + }); + rand2 = factory({ + 'copy': false + }); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v1 = rand1(); + v2 = rand2(); + } + + // Reset to a shared state: + rand1.state = shared; + rand2.state = shared; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Int32Array( state ); + + // Reset the (shared) state: + rand1.state = shared; + rand2.state = shared; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 50; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); From 076967dc9edcf18221a20b59edc3bad4c294e717 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 03:01:33 -0700 Subject: [PATCH 0709/1062] Fix tests --- .../base/minstd-shuffle/test/test.factory.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js index debeb5a16b8e..a94c8445de9b 100644 --- a/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/minstd-shuffle/test/test.factory.js @@ -347,16 +347,16 @@ tape( 'if provided a `state` option containing an unsupported state length, the values = []; - v = new Int32Array( 39 ); + v = new Int32Array( 40 ); v[ 0 ] = 1; // version v[ 1 ] = 3; // number of sections v[ 2 ] = 32; // table length v[ 35 ] = 1; // state length v[ 36 ] = 8; // shuffle state - v[ 37 ] = 1; // seed length + v[ 37 ] = 2; // seed length values.push( v ); - v = new Int32Array( 41 ); // >32+8 + v = new Int32Array( 41 ); v[ 0 ] = 1; // version v[ 1 ] = 3; // number of sections v[ 2 ] = 32; // table length @@ -832,16 +832,16 @@ tape( 'if the `state` property is set to an Int32Array containing an unsupported values = []; - v = new Int32Array( 39 ); + v = new Int32Array( 40 ); v[ 0 ] = 1; // version v[ 1 ] = 3; // number of sections v[ 2 ] = 32; // table length v[ 35 ] = 1; // state length v[ 36 ] = 8; // shuffle state - v[ 37 ] = 1; // seed length + v[ 37 ] = 2; // seed length values.push( v ); - v = new Int32Array( 41 ); // >32+8 + v = new Int32Array( 41 ); v[ 0 ] = 1; // version v[ 1 ] = 3; // number of sections v[ 2 ] = 32; // table length @@ -1180,16 +1180,16 @@ tape( 'if the `state` property is set to an Int32Array containing an unsupported values = []; - v = new Int32Array( 39 ); + v = new Int32Array( 40 ); v[ 0 ] = 1; // version v[ 1 ] = 3; // number of sections v[ 2 ] = 32; // table length v[ 35 ] = 1; // state length v[ 36 ] = 8; // shuffle state - v[ 37 ] = 1; // seed length + v[ 37 ] = 2; // seed length values.push( v ); - v = new Int32Array( 41 ); // >32+8 + v = new Int32Array( 41 ); v[ 0 ] = 1; // version v[ 1 ] = 3; // number of sections v[ 2 ] = 32; // table length From 17b18afef538e45737228cb78924531744989cd5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 16:49:39 -0700 Subject: [PATCH 0710/1062] Document property --- .../@stdlib/random/base/improved-ziggurat/docs/repl.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt b/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt index 9fb428e4ef49..14d50952c0ce 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt @@ -80,6 +80,14 @@ > var seed = {{alias}}.seed; +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. From 86ffdc50c6a1e075841e6ff904631650bd2a9021 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 16:51:14 -0700 Subject: [PATCH 0711/1062] Add factory benchmarks --- .../benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/improved-ziggurat/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..c811fb5b0e73 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 042737ff4aad71ec237b8565e59a1fb988c1b7f3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 16:54:04 -0700 Subject: [PATCH 0712/1062] Fix example and dynamically resize array --- .../random/base/improved-ziggurat/lib/ratio_array.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/ratio_array.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/ratio_array.js index 6e018a7ed29d..c1e5ff7fba6a 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/ratio_array.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/ratio_array.js @@ -28,14 +28,16 @@ * @returns {NumberArray} ratio array * * @example -* var R = ratioArray( [ 1, 2, 5 ] ); -* // returns [ 0.5, 0.4 ] +* var R = ratioArray( [ 1.0, 2.0, 5.0 ] ); +* // returns [ 2.0, 2.5 ] */ function ratioArray( X ) { - var R = new Array( X.length-1 ); + var R; var i; - for ( i = 0; i < R.length; i++ ) { - R[ i ] = X[ i+1 ] / X[ i ]; + + R = []; + for ( i = 0; i < X.length-1; i++ ) { + R.push( X[ i+1 ] / X[ i ] ); } return R; } From 7966a41c5b52a87385b701319645696ba0a459a5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 16:54:58 -0700 Subject: [PATCH 0713/1062] Remove spaces in order to visually group related expressions --- .../@stdlib/random/base/improved-ziggurat/lib/sample_tail.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/sample_tail.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/sample_tail.js index fd9e39d503a0..2b54b99b989f 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/sample_tail.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/sample_tail.js @@ -45,7 +45,7 @@ function sampleTail( rand, rTail, isNegative ) { x = ln( rand() ) / rTail; y = ln( rand() ); } while ( -2.0*y < x*x ); - return ( isNegative ) ? x - rTail : rTail - x; + return ( isNegative ) ? x-rTail : rTail-x; } From b99473eb98eb0bf1d19f4de990ac698b6654ccea Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 16:59:21 -0700 Subject: [PATCH 0714/1062] Add TODO --- .../@stdlib/random/base/improved-ziggurat/lib/factory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js index b18876730ead..a29c177c2ad0 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js @@ -110,7 +110,7 @@ function factory( options ) { } randu = randi.normalized; } else { - randi = mt19937(); + randi = mt19937(); // FIXME: should we seed here by generating a randint via `randu`? seed = null; } } else { From a4ee1e98bceedabaf625adde4a8c85d35bb98d15 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 17:03:55 -0700 Subject: [PATCH 0715/1062] Update README --- .../random/base/improved-ziggurat/README.md | 24 ++++++++++++++++++- .../base/improved-ziggurat/lib/factory.js | 2 +- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md b/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md index de7fdde84d7b..ee1a74f1d44a 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md @@ -49,7 +49,7 @@ var rand = randn.factory(); The function accepts the following `options`: -- **prng**: pseudorandom number generator for generating uniformly distributed pseudorandom numbers on the interval `[0,1)`. If provided, the function ignores both the `state` and `seed` options. +- **prng**: pseudorandom number generator for generating uniformly distributed pseudorandom numbers on the interval `[0,1)`. If provided, the function **ignores** both the `state` and `seed` options. - **seed**: pseudorandom number generator seed. - **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. - **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. @@ -165,6 +165,28 @@ var seed = rand.seed; // returns null ``` +#### randn.seedLength + +Length of generator seed. + +```javascript +var len = randn.seedLength; +// returns +``` + +If provided a PRNG for uniformly distributed numbers, this value is `null`. + + + +```javascript +var rand = randn.factory({ + 'prng': Math.random +}); + +var len = rand.seedLength; +// returns null +``` + #### randn.state Writable property for getting and setting the generator state. diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js index a29c177c2ad0..407d32251821 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js @@ -110,7 +110,7 @@ function factory( options ) { } randu = randi.normalized; } else { - randi = mt19937(); // FIXME: should we seed here by generating a randint via `randu`? + randi = mt19937(); // FIXME: should we seed here by generating a randint via `randu`? If so, we should update README by saying that the PRNG can be seeded by seeding the provided PRNG (if possible) seed = null; } } else { From 0cb60e4b8352d35a3f2bf6bc23306101d8378570 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 21:15:53 -0700 Subject: [PATCH 0716/1062] Refactor to use project utils and seeding via an externally seeded PRNG --- .../random/base/improved-ziggurat/README.md | 2 +- .../base/improved-ziggurat/docs/repl.txt | 4 +- .../base/improved-ziggurat/lib/factory.js | 60 +++++++++---------- 3 files changed, 31 insertions(+), 35 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md b/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md index ee1a74f1d44a..14c6ec4aa6d2 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md @@ -49,7 +49,7 @@ var rand = randn.factory(); The function accepts the following `options`: -- **prng**: pseudorandom number generator for generating uniformly distributed pseudorandom numbers on the interval `[0,1)`. If provided, the function **ignores** both the `state` and `seed` options. +- **prng**: pseudorandom number generator for generating uniformly distributed pseudorandom numbers on the interval `[0,1)`. If provided, the function **ignores** both the `state` and `seed` options. In order to seed the returned pseudorandom number generator, one must seed the provided `prng` (assuming the provided `prng` is seedable). - **seed**: pseudorandom number generator seed. - **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. - **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt b/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt index 14d50952c0ce..28583d0fe8e0 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/docs/repl.txt @@ -24,7 +24,9 @@ options.prng: Function (optional) Pseudorandom number generator (PRNG) for generating uniformly distributed pseudorandom numbers on the interval `[0,1)`. If provided, - the `state` and `seed` options are ignored. + the `state` and `seed` options are ignored. In order to seed the + returned pseudorandom number generator, one must seed the provided + `prng` (assuming the provided `prng` is seedable). options.seed: integer|ArrayLikeObject (optional) Pseudorandom number generator seed. The seed may be either a positive diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js index 407d32251821..cc11435f3750 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js @@ -20,8 +20,9 @@ // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isFunction = require( '@stdlib/assert/is-function' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; @@ -30,6 +31,7 @@ var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var mt19937 = require( '@stdlib/random/base/mt19937' ).factory; var constantFunction = require( '@stdlib/utils/constant-function' ); var noop = require( '@stdlib/utils/noop' ); +var floor = require( '@stdlib/math/base/special/floor' ); var improvedZiggurat = require( './improved_ziggurat.js' ); @@ -110,7 +112,9 @@ function factory( options ) { } randu = randi.normalized; } else { - randi = mt19937(); // FIXME: should we seed here by generating a randint via `randu`? If so, we should update README by saying that the PRNG can be seeded by seeding the provided PRNG (if possible) + randi = mt19937({ + 'seed': floor( 1.0 + ( mt19937.MAX*randu() ) ) // allows seeding via an externally seeded PRNG + }); seed = null; } } else { @@ -125,40 +129,20 @@ function factory( options ) { setReadOnly( randn, 'NAME', 'improved-ziggurat' ); if ( seed === null ) { setReadOnly( randn, 'seed', null ); + setReadOnly( randn, 'seedLength', null ); } else { - defineProperty( randn, 'seed', { - 'configurable': false, - 'enumerable': true, - 'get': getSeed - }); + setReadOnlyAccessor( randn, 'seed', getSeed ); + setReadOnlyAccessor( randn, 'seedLength', getSeedLength ); } // If we are provided an "external" PRNG, we don't support getting or setting PRNG state, as we'd need to check for compatible state value types, etc, entailing considerable complexity. if ( options && options.prng ) { - defineProperty( randn, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': constantFunction( null ), - 'set': noop - }); + setReadWriteAccessor( randn, 'state', constantFunction( null ), noop ); setReadOnly( randn, 'stateLength', null ); setReadOnly( randn, 'byteLength', null ); } else { - defineProperty( randn, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - defineProperty( randn, 'stateLength', { - 'configurable': false, - 'enumerable': true, - 'get': getStateLength - }); - defineProperty( randn, 'byteLength', { - 'configurable': false, - 'enumerable': true, - 'get': getStateSize - }); + setReadWriteAccessor( randn, 'state', getState, setState ); + setReadOnlyAccessor( randn, 'stateLength', getStateLength ); + setReadOnlyAccessor( randn, 'byteLength', getStateSize ); } setReadOnly( randn, 'PRNG', randu ); @@ -168,14 +152,24 @@ function factory( options ) { * Returns the PRNG seed. * * @private - * @returns {*} seed + * @returns {Uint32Array} seed */ function getSeed() { return randu.seed; } /** - * Returns the current PRNG state length. + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return randu.seedLength; + } + + /** + * Returns the PRNG state length. * * @private * @returns {PositiveInteger} state length @@ -185,7 +179,7 @@ function factory( options ) { } /** - * Returns the current PRNG state size (in bytes). + * Returns the PRNG state size (in bytes). * * @private * @returns {PositiveInteger} state size (in bytes) @@ -210,7 +204,7 @@ function factory( options ) { * @private * @param {Uint32Array} s - generator state * @throws {TypeError} must provide a `Uint32Array` - * @throws {RangeError} must provide a `Uint32Array` having an expected length + * @throws {Error} must provide a valid state */ function setState( s ) { randu.state = s; From 15bd9b45207f2ffe2241c4747f6137d462cfb36b Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 21:20:34 -0700 Subject: [PATCH 0717/1062] Update tests --- .../base/improved-ziggurat/test/test.js | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js index aa0472813b0e..48463972f759 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.js @@ -34,44 +34,49 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof randn.factory, 'function', 'has `factory` method' ); + t.equal( typeof randn.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( randn.NAME, 'improved-ziggurat', 'has `NAME` property' ); + t.equal( randn.NAME, 'improved-ziggurat', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof randn.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof randn.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( randn.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( randn.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof randn.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( randn.state ), true, 'has `state` property' ); + t.equal( isUint32Array( randn.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof randn.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof randn.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof randn.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof randn.byteLength, 'number', 'has property' ); t.end(); }); tape( 'the function returns pseudorandom numbers', function test( t ) { var r; var i; - for ( i = 0; i < 1e4; i++ ) { + for ( i = 0; i < 1e3; i++ ) { r = randn(); t.equal( typeof r, 'number', 'returns a number' ); } From b43f7fa5fa3ed88f1cecba37812b257d4ac0f0ea Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 21:29:07 -0700 Subject: [PATCH 0718/1062] Update tests and fix seed generation bug --- .../base/improved-ziggurat/lib/factory.js | 3 +- .../improved-ziggurat/test/test.factory.js | 31 +++++++++++++------ 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js index cc11435f3750..6acbcd82a8fc 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js @@ -32,6 +32,7 @@ var mt19937 = require( '@stdlib/random/base/mt19937' ).factory; var constantFunction = require( '@stdlib/utils/constant-function' ); var noop = require( '@stdlib/utils/noop' ); var floor = require( '@stdlib/math/base/special/floor' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); var improvedZiggurat = require( './improved_ziggurat.js' ); @@ -113,7 +114,7 @@ function factory( options ) { randu = randi.normalized; } else { randi = mt19937({ - 'seed': floor( 1.0 + ( mt19937.MAX*randu() ) ) // allows seeding via an externally seeded PRNG + 'seed': floor( 1.0 + ( UINT32_MAX*randu() ) ) // allows seeding via an externally seeded PRNG }); seed = null; } diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js index dfa3e4ac7dde..26044cf32965 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js @@ -166,7 +166,7 @@ tape( 'if provided a `seed` which is not a positive integer or a non-empty array } }); -tape( 'the function throws a range error if provided an integer greater than the maximum unsigned 32-bit integer', function test( t ) { +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { var values; var i; @@ -221,7 +221,7 @@ tape( 'if provided a `state` option which is not a Uint32Array, the factory func } }); -tape( 'if provided a `state` option having an insufficient length, the factory function throws an error', function test( t ) { +tape( 'if provided an invalid `state` option, the factory function throws an error', function test( t ) { var values; var i; @@ -327,13 +327,13 @@ tape( 'the function returns a seeded pseudorandom number generator (array seed)' tape( 'attached to the returned function is the generator name', function test( t ) { var randn = factory(); - t.equal( randn.NAME, 'improved-ziggurat', 'has `NAME` property' ); + t.equal( randn.NAME, 'improved-ziggurat', 'has property' ); t.end(); }); tape( 'attached to the returned function is the underlying PRNG', function test( t ) { var randn = factory(); - t.equal( typeof randn.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof randn.PRNG, 'function', 'has property' ); t.end(); }); @@ -346,7 +346,7 @@ tape( 'attached to the returned function is the generator seed (integer seed)', }); actual = randn.seed; - t.equal( isUint32Array( actual ), true, 'has `seed` property' ); + t.equal( isUint32Array( actual ), true, 'has property' ); t.equal( actual[ 0 ], 12345, 'equal to provided seed' ); randn = factory({ @@ -369,16 +369,27 @@ tape( 'attached to the returned function is the generator seed (array seed)', fu }); actual = randn.seed; - t.equal( isUint32Array( actual ), true, 'has `seed` property' ); + t.equal( isUint32Array( actual ), true, 'has property' ); for ( i = 0; i < seed.length; i++ ) { t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } t.end(); }); +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var randn = factory(); + t.equal( typeof randn.seedLength, 'number', 'has property' ); + + randn = factory({ + 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math + }); + t.equal( randn.seedLength, null, 'equal to `null`' ); + t.end(); +}); + tape( 'attached to the returned function is the generator state', function test( t ) { var randn = factory(); - t.equal( isUint32Array( randn.state ), true, 'has `state` property' ); + t.equal( isUint32Array( randn.state ), true, 'has property' ); randn = factory({ 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math @@ -389,7 +400,7 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var randn = factory(); - t.equal( typeof randn.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof randn.stateLength, 'number', 'has property' ); randn = factory({ 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math @@ -400,7 +411,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var randn = factory(); - t.equal( typeof randn.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof randn.byteLength, 'number', 'has property' ); randn = factory({ 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math @@ -440,7 +451,7 @@ tape( 'if the `state` property is set to a value other than a Uint32Array, an er } }); -tape( 'if the `state` property is set to an Uint32Array having an unexpected length, an error is thrown', function test( t ) { +tape( 'if the `state` property is set to an invalid value, an error is thrown', function test( t ) { var values; var randn; var i; From dbf82530c27944080243efd301ac4539e515ab1b Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 5 Oct 2018 21:36:20 -0700 Subject: [PATCH 0719/1062] Add tests for providing a seeded underlying PRNG --- .../improved-ziggurat/test/test.factory.js | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js index 26044cf32965..8501e80bb930 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/test/test.factory.js @@ -491,6 +491,41 @@ tape( 'the function supports specifying the underlying PRNG', function test( t ) t.end(); }); +tape( 'the function supports providing a seeded underlying PRNG', function test( t ) { + var randn1; + var randn2; + var randu; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + randu = minstd.factory({ + 'seed': seed + }); + randn1 = factory({ + 'prng': randu.normalized + }); + + randu = minstd.factory({ + 'seed': seed + }); + randn2 = factory({ + 'prng': randu.normalized + }); + + t.notEqual( randn1, randn2, 'separate generators' ); + + for ( i = 0; i < 1e3; i++ ) { + r1 = randn1(); + r2 = randn2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + tape( 'the function returns pseudorandom numbers from a standard normal distribution', opts, function test( t ) { var threshold; var count; From ee68484a9b6426c73d011f1163339426f15a8747 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 6 Oct 2018 01:10:05 -0700 Subject: [PATCH 0720/1062] Add factory benchmarks --- .../box-muller/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/box-muller/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/box-muller/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/box-muller/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..c811fb5b0e73 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/box-muller/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From b0f43d0f67a8dc8a51ef5ffe95dcfd1c9548a2f5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 6 Oct 2018 01:11:38 -0700 Subject: [PATCH 0721/1062] Update REPL help --- .../random/base/box-muller/docs/repl.txt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt b/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt index 915d7768aa4f..66e488767015 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt @@ -25,8 +25,21 @@ Pseudorandom number generator (PRNG) for generating uniformly distributed pseudorandom numbers on the interval `[0,1)`. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -66,6 +79,14 @@ > var seed = {{alias}}.seed; +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. From 23b70591788ced4d80d790dc4e77c5db1cb72dda Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 6 Oct 2018 01:16:06 -0700 Subject: [PATCH 0722/1062] Update documentation --- .../@stdlib/random/base/box-muller/README.md | 105 +++++++++++++----- 1 file changed, 77 insertions(+), 28 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/box-muller/README.md b/lib/node_modules/@stdlib/random/base/box-muller/README.md index d123107df2ed..266574d2ccc6 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/README.md +++ b/lib/node_modules/@stdlib/random/base/box-muller/README.md @@ -51,6 +51,8 @@ The function accepts the following `options`: - **prng**: pseudorandom number generator for generating uniformly distributed pseudorandom numbers on the interval `[0,1)`. - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To use a custom PRNG as the underlying source of uniformly distributed pseudorandom numbers, set the `prng` option. @@ -86,6 +88,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = randn(); +} + +// Create a new PRNG initialized to the current state of `randn`: +rand = randn.factory({ + 'state': randn.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand() === randn() ); +// returns true +``` + #### randn.NAME The generator name. @@ -104,30 +129,38 @@ var prng = randn.PRNG; // returns ``` -#### randn.seed +#### randn.MIN -The value used to seed `randn()`. +Minimum possible value. ```javascript -var rand; -var r; -var i; +var min = randn.MIN; +// returns +``` -// Generate pseudorandom values... -for ( i = 0; i < 100; i++ ) { - r = randn(); -} +Note that this value is computed based on the minimum value of the underlying PRNG for uniformly distributed numbers. If the underlying PRNG does not have a `MIN` property, this value is `null`. -// Generate the same pseudorandom values... -rand = randn.factory({ - 'seed': randn.seed + + +```javascript +var rand = randn.factory({ + 'prng': Math.random }); -for ( i = 0; i < 100; i++ ) { - r = rand(); -} + +var min = rand.MIN; +// returns null ``` -If provided a PRNG for uniformly distributed numbers which does not have a `seed` property, this value is `null`. +#### randn.MAX + +Maximum possible value. + +```javascript +var max = randn.MAX; +// returns +``` + +Note that this value is computed based on the minimum value of the underlying PRNG for uniformly distributed numbers. If the underlying PRNG does not have a `MIN` property, this value is `null`. @@ -136,20 +169,34 @@ var rand = randn.factory({ 'prng': Math.random }); -var seed = rand.seed; +var max = rand.MAX; // returns null ``` -#### randn.MIN +#### randn.seed -Minimum possible value. +The value used to seed `randn()`. ```javascript -var min = randn.MIN; -// returns +var rand; +var r; +var i; + +// Generate pseudorandom values... +for ( i = 0; i < 100; i++ ) { + r = randn(); +} + +// Generate the same pseudorandom values... +rand = randn.factory({ + 'seed': randn.seed +}); +for ( i = 0; i < 100; i++ ) { + r = rand(); +} ``` -Note that this value is computed based on the minimum value of the underlying PRNG for uniformly distributed numbers. If the underlying PRNG does not have a `MIN` property, this value is `null`. +If provided a PRNG for uniformly distributed numbers, this value is `null`. @@ -158,20 +205,20 @@ var rand = randn.factory({ 'prng': Math.random }); -var min = rand.MIN; +var seed = rand.seed; // returns null ``` -#### randn.MAX +#### randn.seedLength -Maximum possible value. +Length of generator seed. ```javascript -var max = randn.MAX; +var len = randn.seedLength; // returns ``` -Note that this value is computed based on the minimum value of the underlying PRNG for uniformly distributed numbers. If the underlying PRNG does not have a `MIN` property, this value is `null`. +If provided a PRNG for uniformly distributed numbers, this value is `null`. @@ -180,7 +227,7 @@ var rand = randn.factory({ 'prng': Math.random }); -var max = rand.MAX; +var len = rand.seedLength; // returns null ``` @@ -361,6 +408,8 @@ for ( i = 0; i < 100; i++ ) { [@thomas:2007]: http://dx.doi.org/10.1145/1287620.1287622 +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib + From 825b585684035d08d69cae055103580ef19e149b Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 6 Oct 2018 01:18:26 -0700 Subject: [PATCH 0723/1062] Add notes --- .../@stdlib/random/base/improved-ziggurat/README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md b/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md index 14c6ec4aa6d2..7185e6f21f18 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/README.md @@ -284,6 +284,17 @@ var sz = rand.byteLength; +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples From 055714833a503db2e17ed0f6d376bc6819baeb18 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 6 Oct 2018 01:18:47 -0700 Subject: [PATCH 0724/1062] Add notes --- lib/node_modules/@stdlib/random/base/box-muller/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/box-muller/README.md b/lib/node_modules/@stdlib/random/base/box-muller/README.md index 266574d2ccc6..45fa675ca090 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/README.md +++ b/lib/node_modules/@stdlib/random/base/box-muller/README.md @@ -333,6 +333,8 @@ var sz = rand.byteLength; ## Notes - The minimum and maximum values are dependent on the number of bits used by the underlying PRNG. For instance, if a PRNG uses `32` bits, the smallest non-zero uniformly distributed pseudorandom number that can be generated is `2**-32`. Accordingly, the algorithm would be unable to produce random variates more than `6.66` standard deviations from the mean. This corresponds to a `2.74 x 10**-11` loss due to tail truncation. +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array).
From f2fb5869dd357f17db92187e29a91178f8077834 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 6 Oct 2018 01:21:00 -0700 Subject: [PATCH 0725/1062] Add comment --- lib/node_modules/@stdlib/random/base/box-muller/lib/min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/box-muller/lib/min.js b/lib/node_modules/@stdlib/random/base/box-muller/lib/min.js index 559eb8ddddd2..64cd49ed36cb 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/lib/min.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/lib/min.js @@ -28,7 +28,7 @@ var PI = require( '@stdlib/constants/math/float64-pi' ); // VARIABLES // -var COS_PI = cos( PI ); +var COS_PI = cos( PI ); // -1 // MAIN // From 0492cdbc256b8dc7700475bed747cdb2427c69af Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 6 Oct 2018 01:37:12 -0700 Subject: [PATCH 0726/1062] Fix throws annotation --- .../@stdlib/random/base/improved-ziggurat/lib/factory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js index 6acbcd82a8fc..339e92737049 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js @@ -48,7 +48,7 @@ var improvedZiggurat = require( './improved_ziggurat.js' ); * @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} must provide an object * @throws {TypeError} must provide valid options -* @throws {RangeError} insufficient state length +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example From 501547ec241584f1c8f108b502fd151bb931a227 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 6 Oct 2018 01:37:29 -0700 Subject: [PATCH 0727/1062] Refactor to support setting PRNG state --- .../random/base/box-muller/lib/factory.js | 157 ++++++++++++------ 1 file changed, 107 insertions(+), 50 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js b/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js index 55d31b16c03c..657aef9a872a 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js @@ -20,12 +20,15 @@ // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var isFunction = require( '@stdlib/assert/is-function' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; var hasOwnProp = require( '@stdlib/assert/has-own-property' ); -var randu = require( '@stdlib/random/base/mt19937' ).factory; +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var mt19937 = require( '@stdlib/random/base/mt19937' ).factory; var constantFunction = require( '@stdlib/utils/constant-function' ); var noop = require( '@stdlib/utils/noop' ); var randn0 = require( './randn.js' ); @@ -40,9 +43,12 @@ var getMax = require( './max.js' ); * * @param {Options} [options] - function options * @param {Function} [options.prng] - pseudorandom number generator which generates uniformly distributed pseudorandom numbers -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} must provide an object * @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -61,82 +67,131 @@ var getMax = require( './max.js' ); * // returns */ function factory( options ) { + var randu; var randn; - var rand; + var state; var seed; - var v; if ( arguments.length ) { if ( !isObject( options ) ) { throw new TypeError( 'invalid argument. Must provide an object. Value: `' + options + '`.' ); } + if ( hasOwnProp( options, 'copy' ) ) { + if ( !isBoolean( options.copy ) ) { + throw new TypeError( 'invalid option. `copy` option must be a boolean. Option: `' + options.copy + '`.' ); + } + } if ( hasOwnProp( options, 'prng' ) ) { if ( !isFunction( options.prng ) ) { throw new TypeError( 'invalid option. `prng` option must be a pseudorandom number generator function. Option: `' + options.prng + '`.' ); } - rand = options.prng; + randu = options.prng; } - if ( hasOwnProp( options, 'seed' ) ) { + // If provided a PRNG, ignore the `state` option, as we don't support getting or setting PRNG state. + else if ( hasOwnProp( options, 'state' ) ) { + state = options.state; + if ( !isUint32Array( state ) ) { + throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + state + '`.' ); + } + } + // If provided a PRNG, ignore the `seed` option, as a `seed`, by itself, is insufficient to guarantee reproducibility. If provided a state, ignore the `seed` option, as a PRNG state should contain seed information. + else if ( hasOwnProp( options, 'seed' ) ) { seed = options.seed; + if ( seed === void 0 ) { + throw new TypeError( 'invalid option. `seed` option must be either a positive integer less than or equal to the maximum unsigned 32-bit integer or an array-like object containing integer values less than or equal to the maximum unsigned 32-bit integer. Option: `' + seed + '`.' ); + } } } - if ( rand === void 0 ) { - if ( seed === void 0 ) { - rand = randu(); + if ( state === void 0 ) { + if ( randu === void 0 ) { + if ( seed === void 0 ) { + randu = mt19937(); + } else { + randu = mt19937({ + 'seed': seed + }); + } + randu = randu.normalized; } else { - rand = randu({ - 'seed': seed - }); + seed = null; } - rand = rand.normalized; + } else { + randu = mt19937({ + 'state': state, + 'copy': ( options.copy === void 0 ) ? true : options.copy + }); + randu = randu.normalized; } - randn = randn0( rand ); - setReadOnly( randn, 'NAME', 'box-muller' ); + randn = randn0( randu ); - if ( hasOwnProp( rand, 'seed' ) ) { - v = rand.seed; + setReadOnly( randn, 'NAME', 'box-muller' ); + if ( seed === null ) { + setReadOnly( randn, 'seed', null ); + setReadOnly( randn, 'seedLength', null ); } else { - v = null; + setReadOnlyAccessor( randn, 'seed', getSeed ); + setReadOnlyAccessor( randn, 'seedLength', getSeedLength ); } - setReadOnly( randn, 'seed', v ); - - // If we are provided an "external" PRNG, we don't support getting or setting PRNG state, as we'd need to check for compatible state value types, etc, entailing considerable complexity. Furthermore, if provided a PRNG, presumably the user can simply get and set the state independently of this PRNG. + // If we are provided an "external" PRNG, we don't support getting or setting PRNG state, as we'd need to check for compatible state value types, etc, entailing considerable complexity. if ( options && options.prng ) { - defineProperty( randn, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': constantFunction( null ), - 'set': noop - }); + setReadWriteAccessor( randn, 'state', constantFunction( null ), noop ); setReadOnly( randn, 'stateLength', null ); setReadOnly( randn, 'byteLength', null ); } else { - defineProperty( randn, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - setReadOnly( randn, 'stateLength', rand.stateLength ); - setReadOnly( randn, 'byteLength', rand.byteLength ); + setReadWriteAccessor( randn, 'state', getState, setState ); + setReadOnlyAccessor( randn, 'stateLength', getStateLength ); + setReadOnlyAccessor( randn, 'byteLength', getStateSize ); } + setReadOnly( randn, 'PRNG', randu ); - setReadOnly( randn, 'PRNG', rand ); - - if ( hasOwnProp( rand, 'MIN' ) ) { - v = getMin( rand.MIN ); + if ( hasOwnProp( randu, 'MIN' ) ) { + setReadOnly( randn, 'MIN', getMin( randu.MIN ) ); + setReadOnly( randn, 'MAX', getMax( randu.MIN ) ); } else { - v = null; + setReadOnly( randn, 'MIN', null ); + setReadOnly( randn, 'MAX', null ); } - setReadOnly( randn, 'MIN', v ); - if ( hasOwnProp( rand, 'MIN' ) ) { - v = getMax( rand.MIN ); - } else { - v = null; + return randn; + + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return randu.seed; } - setReadOnly( randn, 'MAX', v ); - return randn; + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return randu.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return randu.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return randu.byteLength; + } /** * Returns the current pseudorandom number generator state. @@ -145,7 +200,7 @@ function factory( options ) { * @returns {Uint32Array} current state */ function getState() { - return rand.state; + return randu.state; } /** @@ -153,9 +208,11 @@ function factory( options ) { * * @private * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state */ function setState( s ) { - rand.state = s; + randu.state = s; } } From fa070f0eb162d30c65945546327b5c5b8176b669 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 6 Oct 2018 01:52:06 -0700 Subject: [PATCH 0728/1062] Update tests --- .../random/base/box-muller/test/test.js | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/box-muller/test/test.js b/lib/node_modules/@stdlib/random/base/box-muller/test/test.js index c250e0378fc7..36ec1d01ee37 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/test/test.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/test/test.js @@ -34,56 +34,61 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof randn.factory, 'function', 'has `factory` method' ); + t.equal( typeof randn.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( randn.NAME, 'box-muller', 'has `NAME` property' ); + t.equal( randn.NAME, 'box-muller', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof randn.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( randn.seed ), true, 'has `seed` property' ); + t.equal( typeof randn.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the minimum possible generated number', function test( t ) { - t.equal( typeof randn.MIN, 'number', 'has `MIN` property' ); + t.equal( typeof randn.MIN, 'number', 'has property' ); t.equal( randn.MIN < 0.0, true, 'less than 0' ); t.end(); }); tape( 'attached to the main export is the maximum possible generated number', function test( t ) { - t.equal( typeof randn.MAX, 'number', 'has `MAX` property' ); + t.equal( typeof randn.MAX, 'number', 'has property' ); t.equal( randn.MAX > 0.0, true, 'greater than 0' ); t.end(); }); +tape( 'attached to the main export is the generator seed', function test( t ) { + t.equal( isUint32Array( randn.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof randn.seedLength, 'number', 'has property' ); + t.end(); +}); + tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( randn.state ), true, 'has `state` property' ); + t.equal( isUint32Array( randn.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof randn.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof randn.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof randn.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof randn.byteLength, 'number', 'has property' ); t.end(); }); tape( 'the function returns pseudorandom numbers', function test( t ) { var r; var i; - for ( i = 0; i < 1e4; i++ ) { + for ( i = 0; i < 1e3; i++ ) { r = randn(); t.equal( typeof r, 'number', 'returns a number' ); } From 1dcad269a8671334995fe7385da798b4379a32a3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 6 Oct 2018 11:24:36 -0700 Subject: [PATCH 0729/1062] Update tests --- .../base/box-muller/test/test.factory.js | 471 +++++++++++++++++- 1 file changed, 448 insertions(+), 23 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js b/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js index 07d8f7117aa5..026b34458ba0 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/test/test.factory.js @@ -25,6 +25,8 @@ var ENV = require( '@stdlib/process/env' ); var now = require( '@stdlib/time/now' ); var minstd = require( '@stdlib/random/base/minstd' ); var kstest = require( '@stdlib/stats/kstest' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var factory = require( './../lib/factory.js' ); @@ -102,20 +104,174 @@ tape( 'if provided a `prng` option which is not a function, the factory function } }); +tape( 'if provided a `copy` option which is not a boolean, the factory function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the factory function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the factory function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the factory function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { var randn; var r; var i; randn = factory(); - for ( i = 0; i < 1e4; i++ ) { + for ( i = 0; i < 1e3; i++ ) { + r = randn(); + t.equal( typeof r, 'number', 'returns a number' ); + } + t.end(); +}); + +tape( 'the function returns a pseudorandom number generator (options; no seed)', function test( t ) { + var randn; + var r; + var i; + + randn = factory( {} ); + for ( i = 0; i < 1e3; i++ ) { r = randn(); t.equal( typeof r, 'number', 'returns a number' ); } t.end(); }); -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { var randn1; var randn2; var seed; @@ -142,65 +298,127 @@ tape( 'the function returns a seeded pseudorandom number generator', function te t.end(); }); +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var randn1; + var randn2; + var seed; + var r1; + var r2; + var i; + + seed = [ minstd(), minstd(), minstd() ]; + + randn1 = factory({ + 'seed': seed + }); + randn2 = factory({ + 'seed': seed + }); + + t.notEqual( randn1, randn2, 'separate generators' ); + + for ( i = 0; i < 1e3; i++ ) { + r1 = randn1(); + r2 = randn2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + tape( 'attached to the returned function is the generator name', function test( t ) { var randn = factory(); - t.equal( randn.NAME, 'box-muller', 'has `NAME` property' ); + t.equal( randn.NAME, 'box-muller', 'has property' ); t.end(); }); tape( 'attached to the returned function is the underlying PRNG', function test( t ) { var randn = factory(); - t.equal( typeof randn.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof randn.PRNG, 'function', 'has property' ); t.end(); }); -tape( 'attached to the returned function is the generator seed', function test( t ) { - var randn = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( randn.seed ), true, 'has `seed` property' ); - t.equal( randn.seed[ 0 ], 12345, 'equal to provided seed' ); +tape( 'attached to the returned function is the minimum possible generated number', function test( t ) { + var randn = factory(); + + t.equal( typeof randn.MIN, 'number', 'has property' ); + t.equal( randn.MIN < 0.0, true, 'less than 0' ); randn = factory({ 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math }); - t.equal( randn.seed, null, 'equal to `null`' ); + t.equal( randn.MIN, null, 'equal to `null`' ); t.end(); }); -tape( 'attached to the returned function is the minimum possible generated number', function test( t ) { +tape( 'attached to the returned function is the maximum possible generated number', function test( t ) { var randn = factory(); - t.equal( typeof randn.MIN, 'number', 'has `MIN` property' ); - t.equal( randn.MIN < 0.0, true, 'less than 0' ); + t.equal( typeof randn.MAX, 'number', 'has property' ); + t.equal( randn.MAX > 0.0, true, 'greater than 0' ); randn = factory({ 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math }); - t.equal( randn.MIN, null, 'equal to `null`' ); + t.equal( randn.MAX, null, 'equal to `null`' ); t.end(); }); -tape( 'attached to the returned function is the maximum possible generated number', function test( t ) { - var randn = factory(); +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var actual; + var randn; - t.equal( typeof randn.MAX, 'number', 'has `MAX` property' ); - t.equal( randn.MAX > 0.0, true, 'greater than 0' ); + randn = factory({ + 'seed': 12345 + }); + actual = randn.seed; + + t.equal( isUint32Array( actual ), true, 'has property' ); + t.equal( actual[ 0 ], 12345, 'equal to provided seed' ); randn = factory({ 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math }); - t.equal( randn.MAX, null, 'equal to `null`' ); + t.equal( randn.seed, null, 'equal to `null`' ); + + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var randn; + var seed; + var i; + + seed = [ minstd(), minstd(), minstd(), minstd(), minstd() ]; + randn = factory({ + 'seed': seed + }); + + actual = randn.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var randn = factory(); + t.equal( typeof randn.seedLength, 'number', 'has property' ); + + randn = factory({ + 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math + }); + t.equal( randn.seedLength, null, 'equal to `null`' ); t.end(); }); tape( 'attached to the returned function is the generator state', function test( t ) { var randn = factory(); - t.equal( isUint32Array( randn.state ), true, 'has `state` property' ); + t.equal( isUint32Array( randn.state ), true, 'has property' ); randn = factory({ 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math @@ -213,7 +431,7 @@ tape( 'attached to the returned function is the generator state', function test( tape( 'attached to the returned function is the generator state length', function test( t ) { var randn = factory(); - t.equal( typeof randn.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof randn.stateLength, 'number', 'has property' ); randn = factory({ 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math @@ -226,7 +444,7 @@ tape( 'attached to the returned function is the generator state length', functio tape( 'attached to the returned function is the generator state size', function test( t ) { var randn = factory(); - t.equal( typeof randn.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof randn.byteLength, 'number', 'has property' ); randn = factory({ 'prng': Math.random // eslint-disable-line stdlib/no-builtin-math @@ -236,6 +454,61 @@ tape( 'attached to the returned function is the generator state size', function t.end(); }); +tape( 'if the `state` property is set to a value other than a Uint32Array, an error is thrown', function test( t ) { + var values; + var randn; + var i; + + randn = factory(); + + values = [ + '3', + 3, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when set to '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + randn.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an invalid value, an error is thrown', function test( t ) { + var values; + var randn; + var i; + + randn = factory(); + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 20 ) + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when set to '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + randn.state = value; + }; + } +}); + tape( 'the function supports specifying the underlying PRNG', function test( t ) { var randn; var r; @@ -252,6 +525,41 @@ tape( 'the function supports specifying the underlying PRNG', function test( t ) t.end(); }); +tape( 'the function supports providing a seeded underlying PRNG', function test( t ) { + var randn1; + var randn2; + var randu; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + randu = minstd.factory({ + 'seed': seed + }); + randn1 = factory({ + 'prng': randu.normalized + }); + + randu = minstd.factory({ + 'seed': seed + }); + randn2 = factory({ + 'prng': randu.normalized + }); + + t.notEqual( randn1, randn2, 'separate generators' ); + + for ( i = 0; i < 1e3; i++ ) { + r1 = randn1(); + r2 = randn2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + tape( 'the function returns pseudorandom numbers from a standard normal distribution', opts, function test( t ) { var threshold; var count; @@ -318,6 +626,123 @@ tape( 'the function returns pseudorandom numbers from a standard normal distribu } }); +tape( 'the function supports specifying the generator state', function test( t ) { + var randn; + var state; + var arr; + var i; + + randn = factory(); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + randn(); + } + // Capture the current state: + state = randn.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( randn() ); + } + + // Create another PRNG using the captured state: + randn = factory({ + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( randn(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var shared; + var randn; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + randn = factory(); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + randn(); + } + // Capture the current state: + state = randn.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( randn() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory({ + 'state': shared, + 'copy': false + }); + rand2 = factory({ + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + // NOTE: more complicated to test due to the generation of two pseudorandom variates at a time... + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+2 ], 'returns expected value. i: '+(j+2)+'.' ); + + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j+1 ], 'returns expected value. i: '+j+1+'.' ); + t.equal( v2, arr[ j+3 ], 'returns expected value. i: '+(j+3)+'.' ); + + j += 4; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + // NOTE: more complicated to test due to the generation of two pseudorandom variates at a time... + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+2 ], 'returns expected value. i: '+(j+2)+'.' ); + + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j+1 ], 'returns expected value. i: '+j+1+'.' ); + t.equal( v2, arr[ j+3 ], 'returns expected value. i: '+(j+3)+'.' ); + + j += 4; // stride + } + t.end(); +}); + tape( 'the returned function supports setting the generator state', function test( t ) { var randn; var state; From ce990c9debb951df5bbf92525b37d7a49cd0e220 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 6 Oct 2018 11:42:30 -0700 Subject: [PATCH 0730/1062] Update option description --- lib/node_modules/@stdlib/random/base/box-muller/README.md | 2 +- .../@stdlib/random/base/box-muller/docs/repl.txt | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/box-muller/README.md b/lib/node_modules/@stdlib/random/base/box-muller/README.md index 45fa675ca090..29546e5e5cd3 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/README.md +++ b/lib/node_modules/@stdlib/random/base/box-muller/README.md @@ -49,7 +49,7 @@ var rand = randn.factory(); The function accepts the following `options`: -- **prng**: pseudorandom number generator for generating uniformly distributed pseudorandom numbers on the interval `[0,1)`. +- **prng**: pseudorandom number generator for generating uniformly distributed pseudorandom numbers on the interval `[0,1)`. If provided, the function **ignores** both the `state` and `seed` options. In order to seed the returned pseudorandom number generator, one must seed the provided `prng` (assuming the provided `prng` is seedable). - **seed**: pseudorandom number generator seed. - **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. - **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. diff --git a/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt b/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt index 66e488767015..70905f98b002 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/box-muller/docs/repl.txt @@ -23,7 +23,10 @@ options.prng: Function (optional) Pseudorandom number generator (PRNG) for generating uniformly - distributed pseudorandom numbers on the interval `[0,1)`. + distributed pseudorandom numbers on the interval `[0,1)`. If provided, + the `state` and `seed` options are ignored. In order to seed the + returned pseudorandom number generator, one must seed the provided + `prng` (assuming the provided `prng` is seedable). options.seed: integer|ArrayLikeObject (optional) Pseudorandom number generator seed. The seed may be either a positive From ef0d18c4e6fd6e520fd7b3fc73bafdd49aa2e691 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 15:45:51 -0700 Subject: [PATCH 0731/1062] Move file to subfolder --- .../math/base/special/logaddexp/benchmark/benchmark.js | 4 ++-- .../math/base/special/logaddexp/benchmark/c/benchmark.c | 2 +- .../logaddexp/benchmark/python/{ => numpy}/benchmark.py | 0 3 files changed, 3 insertions(+), 3 deletions(-) rename lib/node_modules/@stdlib/math/base/special/logaddexp/benchmark/python/{ => numpy}/benchmark.py (100%) diff --git a/lib/node_modules/@stdlib/math/base/special/logaddexp/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/logaddexp/benchmark/benchmark.js index 5e0c50989138..8ff4fef33a61 100644 --- a/lib/node_modules/@stdlib/math/base/special/logaddexp/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/math/base/special/logaddexp/benchmark/benchmark.js @@ -37,8 +37,8 @@ bench( pkg, function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = ( randu() * 1000.0 ) - 500.0; - y = ( randu() * 1000.0 ) - 500.0; + x = ( randu()*1000.0 ) - 500.0; + y = ( randu()*1000.0 ) - 500.0; v = logaddexp( x, y ); if ( isnan( v ) ) { b.fail( 'should not return NaN' ); diff --git a/lib/node_modules/@stdlib/math/base/special/logaddexp/benchmark/c/benchmark.c b/lib/node_modules/@stdlib/math/base/special/logaddexp/benchmark/c/benchmark.c index 43521b38e34f..4025ebd902ca 100644 --- a/lib/node_modules/@stdlib/math/base/special/logaddexp/benchmark/c/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/logaddexp/benchmark/c/benchmark.c @@ -87,7 +87,7 @@ double rand_double() { } /** -* Calculates the natural logarithm of exp(x) + exp(y). +* Calculates the natural logarithm of `exp(x) + exp(y)`. * * @return calculated value */ diff --git a/lib/node_modules/@stdlib/math/base/special/logaddexp/benchmark/python/benchmark.py b/lib/node_modules/@stdlib/math/base/special/logaddexp/benchmark/python/numpy/benchmark.py similarity index 100% rename from lib/node_modules/@stdlib/math/base/special/logaddexp/benchmark/python/benchmark.py rename to lib/node_modules/@stdlib/math/base/special/logaddexp/benchmark/python/numpy/benchmark.py From 2d849ab29c162767ea6a6701bcb039b00ec2349f Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 15:47:17 -0700 Subject: [PATCH 0732/1062] Fix function signature and examples --- .../@stdlib/math/base/special/logaddexp/docs/repl.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/logaddexp/docs/repl.txt b/lib/node_modules/@stdlib/math/base/special/logaddexp/docs/repl.txt index 0ee21435c3b4..bdf24c84d6c9 100644 --- a/lib/node_modules/@stdlib/math/base/special/logaddexp/docs/repl.txt +++ b/lib/node_modules/@stdlib/math/base/special/logaddexp/docs/repl.txt @@ -1,5 +1,5 @@ -{{alias}}( x ) +{{alias}}( x, y ) Computes the natural logarithm of `exp(x) + exp(y)`. Parameters @@ -22,8 +22,8 @@ > v = {{alias}}( -20.0, 90.0 ) 90.0 > v = {{alias}}( 0.0, -100.0 ) - ~3.7201 - > v = {{alias}}( NaN ) + ~3.7201e-44 + > v = {{alias}}( NaN, NaN ) NaN See Also From a3e8be9564220bd26b5b465943a9167f606f38f8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 15:51:21 -0700 Subject: [PATCH 0733/1062] Update example --- .../@stdlib/math/base/special/logaddexp/examples/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/math/base/special/logaddexp/examples/index.js b/lib/node_modules/@stdlib/math/base/special/logaddexp/examples/index.js index 1163df4301a5..ce0e81de08b2 100644 --- a/lib/node_modules/@stdlib/math/base/special/logaddexp/examples/index.js +++ b/lib/node_modules/@stdlib/math/base/special/logaddexp/examples/index.js @@ -21,11 +21,12 @@ var incrspace = require( '@stdlib/math/utils/incrspace' ); var logaddexp = require( './../lib' ); -var x = incrspace( -100.0, 100.0, 1.0 ); +var x; var v; var i; var j; +x = incrspace( -100.0, 100.0, 1.0 ); for ( i = 0; i < x.length; i++ ) { for ( j = i; j < x.length; j++ ) { v = logaddexp( x[ i ], x[ j ] ); From 5471c0ca537e651ff5ea9da0eae820cc942e39a0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 15:51:46 -0700 Subject: [PATCH 0734/1062] Fix example return value --- .../@stdlib/math/base/special/logaddexp/lib/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/logaddexp/lib/index.js b/lib/node_modules/@stdlib/math/base/special/logaddexp/lib/index.js index c28a81114836..5411e05dbac2 100644 --- a/lib/node_modules/@stdlib/math/base/special/logaddexp/lib/index.js +++ b/lib/node_modules/@stdlib/math/base/special/logaddexp/lib/index.js @@ -32,8 +32,8 @@ * v = logaddexp( -20.0, 90.0 ); * // returns 90.0 * -* v = logaddexp( 0, -100 ); -* // returns ~3.7201 +* v = logaddexp( 0.0, -100 ); +* // returns ~3.7201e-44 */ // MODULES // From 543ccfd11e5b821b97a854a236fc793efe1fa3b4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 15:52:35 -0700 Subject: [PATCH 0735/1062] Add JSDoc examples --- .../math/base/special/logaddexp/lib/main.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/logaddexp/lib/main.js b/lib/node_modules/@stdlib/math/base/special/logaddexp/lib/main.js index 9592e5a3a5e4..ed7d8a63e44a 100644 --- a/lib/node_modules/@stdlib/math/base/special/logaddexp/lib/main.js +++ b/lib/node_modules/@stdlib/math/base/special/logaddexp/lib/main.js @@ -29,11 +29,21 @@ var LN2 = require( '@stdlib/constants/math/float64-ln-two' ); // MAIN // /** -* Computes the natural logarithm of exp(x) + exp(y). +* Computes the natural logarithm of \\( \exp(x) + \exp(y) \\). * * @param {number} x - input value * @param {number} y - input value -* @returns {number} natural logarithm of exp(x) + exp(y) +* @returns {number} natural logarithm of \\( \exp(x) + \exp(y) \\) +* +* @example +* var v = logaddexp( 90.0, 90.0 ); +* // returns ~90.6931 +* +* v = logaddexp( -20.0, 90.0 ); +* // returns 90.0 +* +* v = logaddexp( 0.0, -100 ); +* // returns ~3.7201e-44 */ function logaddexp( x, y ) { var diff; From c44509cee9c74f1da5a868024ca0f5c8c82b9129 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 15:53:15 -0700 Subject: [PATCH 0736/1062] Remove linebreaks --- .../math/base/special/logaddexp/lib/main.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/logaddexp/lib/main.js b/lib/node_modules/@stdlib/math/base/special/logaddexp/lib/main.js index ed7d8a63e44a..a265b4f424c7 100644 --- a/lib/node_modules/@stdlib/math/base/special/logaddexp/lib/main.js +++ b/lib/node_modules/@stdlib/math/base/special/logaddexp/lib/main.js @@ -46,21 +46,19 @@ var LN2 = require( '@stdlib/constants/math/float64-ln-two' ); * // returns ~3.7201e-44 */ function logaddexp( x, y ) { - var diff; - + var d; if ( isnan( x ) || isnan( y ) ) { return NaN; } if ( x === y ) { return x + LN2; } - - diff = x - y; - if ( diff > 0.0 ) { - return x + log1p( exp( -diff ) ); + d = x - y; + if ( d > 0.0 ) { + return x + log1p( exp( -d ) ); } - // Case: diff <= 0.0 - return y + log1p( exp( diff ) ); + // Case: d <= 0.0 + return y + log1p( exp( d ) ); } From 2b27c74e1fcf127438ac29be81ac1d459ce1487d Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 15:54:05 -0700 Subject: [PATCH 0737/1062] Add missing parentheses --- .../base/special/logaddexp/benchmark/python/numpy/benchmark.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/math/base/special/logaddexp/benchmark/python/numpy/benchmark.py b/lib/node_modules/@stdlib/math/base/special/logaddexp/benchmark/python/numpy/benchmark.py index 6754802165ee..c8cc536b3f89 100755 --- a/lib/node_modules/@stdlib/math/base/special/logaddexp/benchmark/python/numpy/benchmark.py +++ b/lib/node_modules/@stdlib/math/base/special/logaddexp/benchmark/python/numpy/benchmark.py @@ -73,7 +73,7 @@ def print_results(elapsed): def benchmark(): """Run the benchmark and print benchmark results.""" setup = "from numpy import logaddexp; from random import random;" - stmt = "logaddexp((1000.0 * random()) - 500.0, 1000.0 * random() - 500.0)" + stmt = "logaddexp((1000.0 * random()) - 500.0, (1000.0 * random()) - 500.0)" t = timeit.Timer(stmt, setup=setup) From 76f860c8e562315b942303597a3facab527ca355 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 16:07:46 -0700 Subject: [PATCH 0738/1062] Update tests --- .../math/base/special/logaddexp/lib/main.js | 1 - .../math/base/special/logaddexp/test/test.js | 54 ++++++++++++------- 2 files changed, 34 insertions(+), 21 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/logaddexp/lib/main.js b/lib/node_modules/@stdlib/math/base/special/logaddexp/lib/main.js index a265b4f424c7..8ec445a912dc 100644 --- a/lib/node_modules/@stdlib/math/base/special/logaddexp/lib/main.js +++ b/lib/node_modules/@stdlib/math/base/special/logaddexp/lib/main.js @@ -57,7 +57,6 @@ function logaddexp( x, y ) { if ( d > 0.0 ) { return x + log1p( exp( -d ) ); } - // Case: d <= 0.0 return y + log1p( exp( d ) ); } diff --git a/lib/node_modules/@stdlib/math/base/special/logaddexp/test/test.js b/lib/node_modules/@stdlib/math/base/special/logaddexp/test/test.js index 2bd08c207ae2..94d64f633e84 100644 --- a/lib/node_modules/@stdlib/math/base/special/logaddexp/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/logaddexp/test/test.js @@ -47,43 +47,57 @@ tape( 'the function returns `NaN` if provided `NaN`', function test( t ) { var v; v = logaddexp( NaN, 1 ); - t.equal( isnan( v ), true, 'returns NaN' ); + t.equal( isnan( v ), true, 'returns expected value' ); + v = logaddexp( 1, NaN ); - t.equal( isnan( v ), true, 'returns NaN' ); + t.equal( isnan( v ), true, 'returns expected value' ); + + v = logaddexp( NaN, NaN ); + t.equal( isnan( v ), true, 'returns expected value' ); + t.end(); }); -tape( 'the function returns `+infinity` if provided with `+infinity`', function test( t ) { - var iterations; +tape( 'the function returns `+infinity` if provided `+infinity`', function test( t ) { var x; var v; var i; - iterations = 1000; - for ( i = 0; i < iterations; i++ ) { - x = ( randu() * 1000.0 ) - 500.0; + for ( i = 0; i < 1e2; i++ ) { + x = ( randu()*1000.0 ) - 500.0; + v = logaddexp( PINF, x ); - t.strictEqual( v, PINF, 'returns +infinity when provided +infinity and '+x+'.' ); + t.strictEqual( v, PINF, 'returns expected value when provided +infinity and '+x ); + v = logaddexp( x, PINF ); - t.strictEqual( v, PINF, 'returns +infinity when provided +infinity and '+x+'.' ); + t.strictEqual( v, PINF, 'returns expected value when provided +infinity and '+x ); } t.end(); }); tape( 'the function returns `x` if provided `-infinity` and `x`', function test( t ) { - var iterations; var x; var v; var i; - iterations = 1000; - for ( i = 0; i < iterations; i++ ) { - x = ( randu() * 1000.0 ) - 500.0; + for ( i = 0; i < 1e2; i++ ) { + x = ( randu()*1000.0 ) - 500.0; + v = logaddexp( NINF, x ); - t.strictEqual( v, x, 'returns '+x+' when provided -infinity and '+x+'.' ); + t.strictEqual( v, x, 'returns expected value when provided -infinity and '+x ); + v = logaddexp( x, NINF ); - t.strictEqual( v, x, 'returns '+x+' when provided -infinity and '+x+'.' ); + t.strictEqual( v, x, 'returns expected value when provided '+x+' and -infinity' ); } + v = logaddexp( PINF, NINF ); + t.strictEqual( v, PINF, 'returns expected value when provided -infinity and +infinity' ); + + t.end(); +}); + +tape( 'the function returns `-infinity` if both arguments are `-infinity`', function test( t ) { + var v = logaddexp( NINF, NINF ); + t.strictEqual( v, NINF, 'returns expected value' ); t.end(); }); @@ -97,16 +111,16 @@ tape( 'the function accurately computes the natural logarithm of exp(x) + exp(y) var x; for ( i = 0; i < data.length; i++ ) { - x = data[i].input[0]; - y = data[i].input[1]; - ex = data[i].expected; + x = data[ i ].input[ 0 ]; + y = data[ i ].input[ 1 ]; + ex = data[ i ].expected; v = logaddexp( x, y ); if ( v === ex ) { - t.strictEqual( v, ex, 'returns '+v+' when provided '+x+' and '+y+'.' ); + t.strictEqual( v, ex, 'returns expected value when provided '+x+' and '+y ); } else { delta = abs( ex - v ); tol = EPS * abs( ex ); - t.ok( delta <= tol, 'within tolerance. returns '+v+' when provided '+x+' and '+y+'. expected: '+ex+', Δ: '+delta+'. tol: '+tol); + t.ok( delta <= tol, 'within tolerance. x: '+x+'. y: '+y+'. actual: '+v+'. expected: '+ex+'. Δ: '+delta+'. tol: '+tol+'.' ); } } t.end(); From 6fbc39baaee64d3abfa593ba310d8c14d3f68480 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 16:08:36 -0700 Subject: [PATCH 0739/1062] Fix function signature and example return value --- .../@stdlib/math/base/special/logaddexp/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/logaddexp/README.md b/lib/node_modules/@stdlib/math/base/special/logaddexp/README.md index 48eac20505f9..9c497ae34d71 100644 --- a/lib/node_modules/@stdlib/math/base/special/logaddexp/README.md +++ b/lib/node_modules/@stdlib/math/base/special/logaddexp/README.md @@ -30,21 +30,21 @@ limitations under the License. var logaddexp = require( '@stdlib/math/base/special/logaddexp' ); ``` -#### logaddexp( x ) +#### logaddexp( x, y ) Evaluates the [natural logarithm][@stdlib/math/base/special/ln] of `exp(x) + exp(y)`. ```javascript -var y = logaddexp( 90.0, 90.0 ); +var v = logaddexp( 90.0, 90.0 ); // returns ~90.6931 -y = logaddexp( -20.0, 90.0 ); +v = logaddexp( -20.0, 90.0 ); // returns 90.0 -y = logaddexp( 0.0, -100.0 ); -// returns ~3.7201 +v = logaddexp( 0.0, -100.0 ); +// returns ~3.7201e-44 -y = logaddexp( NaN, 1 ); +v = logaddexp( NaN, 1.0 ); // returns NaN ``` From c4afe415dc277ccc4e590a499a40eee8a6ff1e55 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 16:09:09 -0700 Subject: [PATCH 0740/1062] Update example --- lib/node_modules/@stdlib/math/base/special/logaddexp/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/math/base/special/logaddexp/README.md b/lib/node_modules/@stdlib/math/base/special/logaddexp/README.md index 9c497ae34d71..8b25b322eceb 100644 --- a/lib/node_modules/@stdlib/math/base/special/logaddexp/README.md +++ b/lib/node_modules/@stdlib/math/base/special/logaddexp/README.md @@ -62,11 +62,12 @@ v = logaddexp( NaN, 1.0 ); var incrspace = require( '@stdlib/math/utils/incrspace' ); var logaddexp = require( '@stdlib/math/base/special/logaddexp' ); -var x = incrspace( -100.0, 100.0, 1.0 ); +var x; var v; var i; var j; +x = incrspace( -100.0, 100.0, 1.0 ); for ( i = 0; i < x.length; i++ ) { for ( j = i; j < x.length; j++ ) { v = logaddexp( x[ i ], x[ j ] ); From 7de506ad6761f4aaa666da928dc07ff5dbc03541 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 16:14:28 -0700 Subject: [PATCH 0741/1062] Add intro --- .../@stdlib/math/base/special/logaddexp/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/node_modules/@stdlib/math/base/special/logaddexp/README.md b/lib/node_modules/@stdlib/math/base/special/logaddexp/README.md index 8b25b322eceb..904644b26627 100644 --- a/lib/node_modules/@stdlib/math/base/special/logaddexp/README.md +++ b/lib/node_modules/@stdlib/math/base/special/logaddexp/README.md @@ -22,6 +22,12 @@ limitations under the License. > Evaluates the [natural logarithm][@stdlib/math/base/special/ln] of `exp(x) + exp(y)`. +
+ +Log-domain computations are commonly used to increase accuracy and avoid underflow and overflow when very small or very large numbers are represented directly as limited-precision, floating-point numbers. For example, in statistics, evaluating `logaddexp()` is useful when probabilities are so small as to exceed the normal range of floating-point numbers. + +
+
## Usage From dda5d1a52cf1959e97297dc49cecbac3c0fe356a Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 16:25:59 -0700 Subject: [PATCH 0742/1062] Update fixtures and associated tests --- .../logaddexp/test/fixtures/python/data.json | 2 +- .../logaddexp/test/fixtures/python/runner.py | 22 +++++++++++---- .../math/base/special/logaddexp/test/test.js | 28 +++++++++---------- 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/logaddexp/test/fixtures/python/data.json b/lib/node_modules/@stdlib/math/base/special/logaddexp/test/fixtures/python/data.json index ea091a40f118..f433d3b43c42 100644 --- a/lib/node_modules/@stdlib/math/base/special/logaddexp/test/fixtures/python/data.json +++ b/lib/node_modules/@stdlib/math/base/special/logaddexp/test/fixtures/python/data.json @@ -1 +1 @@ -[{"input": [-100.0, -100.0], "expected": -99.30685281944005}, {"input": [-100.0, -99.5], "expected": -99.0259230158199}, {"input": [-100.0, -99.0], "expected": -98.68673831248178}, {"input": [-100.0, -98.5], "expected": -98.29858672201725}, {"input": [-100.0, -98.0], "expected": -97.87307198895702}, {"input": [-100.0, -97.5], "expected": -97.42111026570745}, {"input": [-100.0, -97.0], "expected": -96.95141264842626}, {"input": [-100.0, -96.5], "expected": -96.47024958172737}, {"input": [-100.0, -96.0], "expected": -95.9818500720822}, {"input": [-100.0, -95.5], "expected": -95.4889522551514}, {"input": [-100.0, -95.0], "expected": -94.99328465151088}, {"input": [-100.0, -94.5], "expected": -94.49592155672943}, {"input": [-100.0, -94.0], "expected": -93.99752431486228}, {"input": [-100.0, -93.5], "expected": -93.49849768984025}, {"input": [-100.0, -93.0], "expected": -92.99908853354623}, {"input": [-100.0, -92.5], "expected": -92.49944706852465}, {"input": [-100.0, -92.0], "expected": -91.9996645936271}, {"input": [-100.0, -91.5], "expected": -91.49979655232787}, {"input": [-100.0, -91.0], "expected": -90.99987659781027}, {"input": [-100.0, -90.5], "expected": -90.49992515097136}, {"input": [-100.0, -90.0], "expected": -89.99995460110078}, {"input": [-100.0, -89.5], "expected": -89.49997246392977}, {"input": [-100.0, -89.0], "expected": -88.99998329843868}, {"input": [-100.0, -88.5], "expected": -88.49998986995772}, {"input": [-100.0, -88.0], "expected": -87.99999385580652}, {"input": [-100.0, -87.5], "expected": -87.49999627335377}, {"input": [-100.0, -87.0], "expected": -86.99999773967315}, {"input": [-100.0, -86.5], "expected": -86.49999862904185}, {"input": [-100.0, -86.0], "expected": -85.99999916847163}, {"input": [-100.0, -85.5], "expected": -85.49999949565246}, {"input": [-100.0, -85.0], "expected": -84.99999969409772}, {"input": [-100.0, -84.5], "expected": -84.49999981446088}, {"input": [-100.0, -84.0], "expected": -83.99999988746484}, {"input": [-100.0, -83.5], "expected": -83.49999993174397}, {"input": [-100.0, -83.0], "expected": -82.99999995860063}, {"input": [-100.0, -82.5], "expected": -82.49999997489}, {"input": [-100.0, -82.0], "expected": -81.99999998477001}, {"input": [-100.0, -81.5], "expected": -81.49999999076255}, {"input": [-100.0, -81.0], "expected": -80.9999999943972}, {"input": [-100.0, -80.5], "expected": -80.49999999660173}, {"input": [-100.0, -80.0], "expected": -79.99999999793884}, {"input": [-100.0, -79.5], "expected": -79.49999999874984}, {"input": [-100.0, -79.0], "expected": -78.99999999924174}, {"input": [-100.0, -78.5], "expected": -78.4999999995401}, {"input": [-100.0, -78.0], "expected": -77.99999999972106}, {"input": [-100.0, -77.5], "expected": -77.4999999998308}, {"input": [-100.0, -77.0], "expected": -76.99999999989738}, {"input": [-100.0, -76.5], "expected": -76.49999999993776}, {"input": [-100.0, -76.0], "expected": -75.99999999996224}, {"input": [-100.0, -75.5], "expected": -75.4999999999771}, {"input": [-100.0, -75.0], "expected": -74.99999999998612}, {"input": [-100.0, -74.5], "expected": -74.49999999999157}, {"input": [-100.0, -74.0], "expected": -73.99999999999488}, {"input": [-100.0, -73.5], "expected": -73.4999999999969}, {"input": [-100.0, -73.0], "expected": -72.99999999999812}, {"input": [-100.0, -72.5], "expected": -72.49999999999886}, {"input": [-100.0, -72.0], "expected": -71.9999999999993}, {"input": [-100.0, -71.5], "expected": -71.49999999999957}, {"input": [-100.0, -71.0], "expected": -70.99999999999974}, {"input": [-100.0, -70.5], "expected": -70.49999999999984}, {"input": [-100.0, -70.0], "expected": -69.9999999999999}, {"input": [-100.0, -69.5], "expected": -69.49999999999994}, {"input": [-100.0, -69.0], "expected": -68.99999999999997}, {"input": [-100.0, -68.5], "expected": -68.49999999999999}, {"input": [-100.0, -68.0], "expected": -67.99999999999999}, {"input": [-100.0, -67.5], "expected": -67.49999999999999}, {"input": [-100.0, -67.0], "expected": -67.0}, {"input": [-100.0, -66.5], "expected": -66.5}, {"input": [-100.0, -66.0], "expected": -66.0}, {"input": [-100.0, -65.5], "expected": -65.5}, {"input": [-100.0, -65.0], "expected": -65.0}, {"input": [-100.0, -64.5], "expected": -64.5}, {"input": [-100.0, -64.0], "expected": -64.0}, {"input": [-100.0, -63.5], "expected": -63.5}, {"input": [-100.0, -63.0], "expected": -63.0}, {"input": [-100.0, -62.5], "expected": -62.5}, {"input": [-100.0, -62.0], "expected": -62.0}, {"input": [-100.0, -61.5], "expected": -61.5}, {"input": [-100.0, -61.0], "expected": -61.0}, {"input": [-100.0, -60.5], "expected": -60.5}, {"input": [-100.0, -60.0], "expected": -60.0}, {"input": [-100.0, -59.5], "expected": -59.5}, {"input": [-100.0, -59.0], "expected": -59.0}, {"input": [-100.0, -58.5], "expected": -58.5}, {"input": [-100.0, -58.0], "expected": -58.0}, {"input": [-100.0, -57.5], "expected": -57.5}, {"input": [-100.0, -57.0], "expected": -57.0}, {"input": [-100.0, -56.5], "expected": -56.5}, {"input": [-100.0, -56.0], "expected": -56.0}, {"input": [-100.0, -55.5], "expected": -55.5}, {"input": [-100.0, -55.0], "expected": -55.0}, {"input": [-100.0, -54.5], "expected": -54.5}, {"input": [-100.0, -54.0], "expected": -54.0}, {"input": [-100.0, -53.5], "expected": -53.5}, {"input": [-100.0, -53.0], "expected": -53.0}, {"input": [-100.0, -52.5], "expected": -52.5}, {"input": [-100.0, -52.0], "expected": -52.0}, {"input": [-100.0, -51.5], "expected": -51.5}, {"input": [-100.0, -51.0], "expected": -51.0}, {"input": [-100.0, -50.5], "expected": -50.5}, {"input": [-100.0, -50.0], "expected": -50.0}, {"input": [-100.0, -49.5], "expected": -49.5}, {"input": [-100.0, -49.0], "expected": -49.0}, {"input": [-100.0, -48.5], "expected": -48.5}, {"input": [-100.0, -48.0], "expected": -48.0}, {"input": [-100.0, -47.5], "expected": -47.5}, {"input": [-100.0, -47.0], "expected": -47.0}, {"input": [-100.0, -46.5], "expected": -46.5}, {"input": [-100.0, -46.0], "expected": -46.0}, {"input": [-100.0, -45.5], "expected": -45.5}, {"input": [-100.0, -45.0], "expected": -45.0}, {"input": [-100.0, -44.5], "expected": -44.5}, {"input": [-100.0, -44.0], "expected": -44.0}, {"input": [-100.0, -43.5], "expected": -43.5}, {"input": [-100.0, -43.0], "expected": -43.0}, {"input": [-100.0, -42.5], "expected": -42.5}, {"input": [-100.0, -42.0], "expected": -42.0}, {"input": [-100.0, -41.5], "expected": -41.5}, {"input": [-100.0, -41.0], "expected": -41.0}, {"input": [-100.0, -40.5], "expected": -40.5}, {"input": [-100.0, -40.0], "expected": -40.0}, {"input": [-100.0, -39.5], "expected": -39.5}, {"input": [-100.0, -39.0], "expected": -39.0}, {"input": [-100.0, -38.5], "expected": -38.5}, {"input": [-100.0, -38.0], "expected": -38.0}, {"input": [-100.0, -37.5], "expected": -37.5}, {"input": [-100.0, -37.0], "expected": -37.0}, {"input": [-100.0, -36.5], "expected": -36.5}, {"input": [-100.0, -36.0], "expected": -36.0}, {"input": [-100.0, -35.5], "expected": -35.5}, {"input": [-100.0, -35.0], "expected": -35.0}, {"input": [-100.0, -34.5], "expected": -34.5}, {"input": [-100.0, -34.0], "expected": -34.0}, {"input": [-100.0, -33.5], "expected": -33.5}, {"input": [-100.0, -33.0], "expected": -33.0}, {"input": [-100.0, -32.5], "expected": -32.5}, {"input": [-100.0, -32.0], "expected": -32.0}, {"input": [-100.0, -31.5], "expected": -31.5}, {"input": [-100.0, -31.0], "expected": -31.0}, {"input": [-100.0, -30.5], "expected": -30.5}, {"input": [-100.0, -30.0], "expected": -30.0}, {"input": [-100.0, -29.5], "expected": -29.5}, {"input": [-100.0, -29.0], "expected": -29.0}, {"input": [-100.0, -28.5], "expected": -28.5}, {"input": [-100.0, -28.0], "expected": -28.0}, {"input": [-100.0, -27.5], "expected": -27.5}, {"input": [-100.0, -27.0], "expected": -27.0}, {"input": [-100.0, -26.5], "expected": -26.5}, {"input": [-100.0, -26.0], "expected": -26.0}, {"input": [-100.0, -25.5], "expected": -25.5}, {"input": [-100.0, -25.0], "expected": -25.0}, {"input": [-100.0, -24.5], "expected": -24.5}, {"input": [-100.0, -24.0], "expected": -24.0}, {"input": [-100.0, -23.5], "expected": -23.5}, {"input": [-100.0, -23.0], "expected": -23.0}, {"input": [-100.0, -22.5], "expected": -22.5}, {"input": [-100.0, -22.0], "expected": -22.0}, {"input": [-100.0, -21.5], "expected": -21.5}, {"input": [-100.0, -21.0], "expected": -21.0}, {"input": [-100.0, -20.5], "expected": -20.5}, {"input": [-100.0, -20.0], "expected": -20.0}, {"input": [-100.0, -19.5], "expected": -19.5}, {"input": [-100.0, -19.0], "expected": -19.0}, {"input": [-100.0, -18.5], "expected": -18.5}, {"input": [-100.0, -18.0], "expected": -18.0}, {"input": [-100.0, -17.5], "expected": -17.5}, {"input": [-100.0, -17.0], "expected": -17.0}, {"input": [-100.0, -16.5], "expected": -16.5}, {"input": [-100.0, -16.0], "expected": -16.0}, {"input": [-100.0, -15.5], "expected": -15.5}, {"input": [-100.0, -15.0], "expected": -15.0}, {"input": [-100.0, -14.5], "expected": -14.5}, {"input": [-100.0, -14.0], "expected": -14.0}, {"input": [-100.0, -13.5], "expected": -13.5}, {"input": [-100.0, -13.0], "expected": -13.0}, {"input": [-100.0, -12.5], "expected": -12.5}, {"input": [-100.0, -12.0], "expected": -12.0}, {"input": [-100.0, -11.5], "expected": -11.5}, {"input": [-100.0, -11.0], "expected": -11.0}, {"input": [-100.0, -10.5], "expected": -10.5}, {"input": [-100.0, -10.0], "expected": -10.0}, {"input": [-100.0, -9.5], "expected": -9.5}, {"input": [-100.0, -9.0], "expected": -9.0}, {"input": [-100.0, -8.5], "expected": -8.5}, {"input": [-100.0, -8.0], "expected": -8.0}, {"input": [-100.0, -7.5], "expected": -7.5}, {"input": [-100.0, -7.0], "expected": -7.0}, {"input": [-100.0, -6.5], "expected": -6.5}, {"input": [-100.0, -6.0], "expected": -6.0}, {"input": [-100.0, -5.5], "expected": -5.5}, {"input": [-100.0, -5.0], "expected": -5.0}, {"input": [-100.0, -4.5], "expected": -4.5}, {"input": [-100.0, -4.0], "expected": -4.0}, {"input": [-100.0, -3.5], "expected": -3.5}, {"input": [-100.0, -3.0], "expected": -3.0}, {"input": [-100.0, -2.5], "expected": -2.5}, {"input": [-100.0, -2.0], "expected": -2.0}, {"input": [-100.0, -1.5], "expected": -1.5}, {"input": [-100.0, -1.0], "expected": -1.0}, {"input": [-100.0, -0.5], "expected": -0.5}, {"input": [-100.0, 0.0], "expected": 3.720075976020836e-44}, {"input": [-100.0, 0.5], "expected": 0.5}, {"input": [-100.0, 1.0], "expected": 1.0}, {"input": [-100.0, 1.5], "expected": 1.5}, {"input": [-100.0, 2.0], "expected": 2.0}, {"input": [-100.0, 2.5], "expected": 2.5}, {"input": [-100.0, 3.0], "expected": 3.0}, {"input": [-100.0, 3.5], "expected": 3.5}, {"input": [-100.0, 4.0], "expected": 4.0}, {"input": [-100.0, 4.5], "expected": 4.5}, {"input": [-100.0, 5.0], "expected": 5.0}, {"input": [-100.0, 5.5], "expected": 5.5}, {"input": [-100.0, 6.0], "expected": 6.0}, {"input": [-100.0, 6.5], "expected": 6.5}, {"input": [-100.0, 7.0], "expected": 7.0}, {"input": [-100.0, 7.5], "expected": 7.5}, {"input": [-100.0, 8.0], "expected": 8.0}, {"input": [-100.0, 8.5], "expected": 8.5}, {"input": [-100.0, 9.0], "expected": 9.0}, {"input": [-100.0, 9.5], "expected": 9.5}, {"input": [-100.0, 10.0], "expected": 10.0}, {"input": [-100.0, 10.5], "expected": 10.5}, {"input": [-100.0, 11.0], "expected": 11.0}, {"input": [-100.0, 11.5], "expected": 11.5}, {"input": [-100.0, 12.0], "expected": 12.0}, {"input": [-100.0, 12.5], "expected": 12.5}, {"input": [-100.0, 13.0], "expected": 13.0}, {"input": [-100.0, 13.5], "expected": 13.5}, {"input": [-100.0, 14.0], "expected": 14.0}, {"input": [-100.0, 14.5], "expected": 14.5}, {"input": [-100.0, 15.0], "expected": 15.0}, {"input": [-100.0, 15.5], "expected": 15.5}, {"input": [-100.0, 16.0], "expected": 16.0}, {"input": [-100.0, 16.5], "expected": 16.5}, {"input": [-100.0, 17.0], "expected": 17.0}, {"input": [-100.0, 17.5], "expected": 17.5}, {"input": [-100.0, 18.0], "expected": 18.0}, {"input": [-100.0, 18.5], "expected": 18.5}, {"input": [-100.0, 19.0], "expected": 19.0}, {"input": [-100.0, 19.5], "expected": 19.5}, {"input": [-100.0, 20.0], "expected": 20.0}, {"input": [-100.0, 20.5], "expected": 20.5}, {"input": [-100.0, 21.0], "expected": 21.0}, {"input": [-100.0, 21.5], "expected": 21.5}, {"input": [-100.0, 22.0], "expected": 22.0}, {"input": [-100.0, 22.5], "expected": 22.5}, {"input": [-100.0, 23.0], "expected": 23.0}, {"input": [-100.0, 23.5], "expected": 23.5}, {"input": [-100.0, 24.0], "expected": 24.0}, {"input": [-100.0, 24.5], "expected": 24.5}, {"input": [-100.0, 25.0], "expected": 25.0}, {"input": [-100.0, 25.5], "expected": 25.5}, {"input": [-100.0, 26.0], "expected": 26.0}, {"input": [-100.0, 26.5], "expected": 26.5}, {"input": [-100.0, 27.0], "expected": 27.0}, {"input": [-100.0, 27.5], "expected": 27.5}, {"input": [-100.0, 28.0], "expected": 28.0}, {"input": [-100.0, 28.5], "expected": 28.5}, {"input": [-100.0, 29.0], "expected": 29.0}, {"input": [-100.0, 29.5], "expected": 29.5}, {"input": [-100.0, 30.0], "expected": 30.0}, {"input": [-100.0, 30.5], "expected": 30.5}, {"input": [-100.0, 31.0], "expected": 31.0}, {"input": [-100.0, 31.5], "expected": 31.5}, {"input": [-100.0, 32.0], "expected": 32.0}, {"input": [-100.0, 32.5], "expected": 32.5}, {"input": [-100.0, 33.0], "expected": 33.0}, {"input": [-100.0, 33.5], "expected": 33.5}, {"input": [-100.0, 34.0], "expected": 34.0}, {"input": [-100.0, 34.5], "expected": 34.5}, {"input": [-100.0, 35.0], "expected": 35.0}, {"input": [-100.0, 35.5], "expected": 35.5}, {"input": [-100.0, 36.0], "expected": 36.0}, {"input": [-100.0, 36.5], "expected": 36.5}, {"input": [-100.0, 37.0], "expected": 37.0}, {"input": [-100.0, 37.5], "expected": 37.5}, {"input": [-100.0, 38.0], "expected": 38.0}, {"input": [-100.0, 38.5], "expected": 38.5}, {"input": [-100.0, 39.0], "expected": 39.0}, {"input": [-100.0, 39.5], "expected": 39.5}, {"input": [-100.0, 40.0], "expected": 40.0}, {"input": [-100.0, 40.5], "expected": 40.5}, {"input": [-100.0, 41.0], "expected": 41.0}, {"input": [-100.0, 41.5], "expected": 41.5}, {"input": [-100.0, 42.0], "expected": 42.0}, {"input": [-100.0, 42.5], "expected": 42.5}, {"input": [-100.0, 43.0], "expected": 43.0}, {"input": [-100.0, 43.5], "expected": 43.5}, {"input": [-100.0, 44.0], "expected": 44.0}, {"input": [-100.0, 44.5], "expected": 44.5}, {"input": [-100.0, 45.0], "expected": 45.0}, {"input": [-100.0, 45.5], "expected": 45.5}, {"input": [-100.0, 46.0], "expected": 46.0}, {"input": [-100.0, 46.5], "expected": 46.5}, {"input": [-100.0, 47.0], "expected": 47.0}, {"input": [-100.0, 47.5], "expected": 47.5}, {"input": [-100.0, 48.0], "expected": 48.0}, {"input": [-100.0, 48.5], "expected": 48.5}, {"input": [-100.0, 49.0], "expected": 49.0}, {"input": [-100.0, 49.5], "expected": 49.5}, {"input": [-100.0, 50.0], "expected": 50.0}, {"input": [-100.0, 50.5], "expected": 50.5}, {"input": [-100.0, 51.0], "expected": 51.0}, {"input": [-100.0, 51.5], "expected": 51.5}, {"input": [-100.0, 52.0], "expected": 52.0}, {"input": [-100.0, 52.5], "expected": 52.5}, {"input": [-100.0, 53.0], "expected": 53.0}, {"input": [-100.0, 53.5], "expected": 53.5}, {"input": [-100.0, 54.0], "expected": 54.0}, {"input": [-100.0, 54.5], "expected": 54.5}, {"input": [-100.0, 55.0], "expected": 55.0}, {"input": [-100.0, 55.5], "expected": 55.5}, {"input": [-100.0, 56.0], "expected": 56.0}, {"input": [-100.0, 56.5], "expected": 56.5}, {"input": [-100.0, 57.0], "expected": 57.0}, {"input": [-100.0, 57.5], "expected": 57.5}, {"input": [-100.0, 58.0], "expected": 58.0}, {"input": [-100.0, 58.5], "expected": 58.5}, {"input": [-100.0, 59.0], "expected": 59.0}, {"input": [-100.0, 59.5], "expected": 59.5}, {"input": [-100.0, 60.0], "expected": 60.0}, {"input": [-100.0, 60.5], "expected": 60.5}, {"input": [-100.0, 61.0], "expected": 61.0}, {"input": [-100.0, 61.5], "expected": 61.5}, {"input": [-100.0, 62.0], "expected": 62.0}, {"input": [-100.0, 62.5], "expected": 62.5}, {"input": [-100.0, 63.0], "expected": 63.0}, {"input": [-100.0, 63.5], "expected": 63.5}, {"input": [-100.0, 64.0], "expected": 64.0}, {"input": [-100.0, 64.5], "expected": 64.5}, {"input": [-100.0, 65.0], "expected": 65.0}, {"input": [-100.0, 65.5], "expected": 65.5}, {"input": [-100.0, 66.0], "expected": 66.0}, {"input": [-100.0, 66.5], "expected": 66.5}, {"input": [-100.0, 67.0], "expected": 67.0}, {"input": [-100.0, 67.5], "expected": 67.5}, {"input": [-100.0, 68.0], "expected": 68.0}, {"input": [-100.0, 68.5], "expected": 68.5}, {"input": [-100.0, 69.0], "expected": 69.0}, {"input": [-100.0, 69.5], "expected": 69.5}, {"input": [-100.0, 70.0], "expected": 70.0}, {"input": [-100.0, 70.5], "expected": 70.5}, {"input": [-100.0, 71.0], "expected": 71.0}, {"input": [-100.0, 71.5], "expected": 71.5}, {"input": [-100.0, 72.0], "expected": 72.0}, {"input": [-100.0, 72.5], "expected": 72.5}, {"input": [-100.0, 73.0], "expected": 73.0}, {"input": [-100.0, 73.5], "expected": 73.5}, {"input": [-100.0, 74.0], "expected": 74.0}, {"input": [-100.0, 74.5], "expected": 74.5}, {"input": [-100.0, 75.0], "expected": 75.0}, {"input": [-100.0, 75.5], "expected": 75.5}, {"input": [-100.0, 76.0], "expected": 76.0}, {"input": [-100.0, 76.5], "expected": 76.5}, {"input": [-100.0, 77.0], "expected": 77.0}, {"input": [-100.0, 77.5], "expected": 77.5}, {"input": [-100.0, 78.0], "expected": 78.0}, {"input": [-100.0, 78.5], "expected": 78.5}, {"input": [-100.0, 79.0], "expected": 79.0}, {"input": [-100.0, 79.5], "expected": 79.5}, {"input": [-100.0, 80.0], "expected": 80.0}, {"input": [-100.0, 80.5], "expected": 80.5}, {"input": [-100.0, 81.0], "expected": 81.0}, {"input": [-100.0, 81.5], "expected": 81.5}, {"input": [-100.0, 82.0], "expected": 82.0}, {"input": [-100.0, 82.5], "expected": 82.5}, {"input": [-100.0, 83.0], "expected": 83.0}, {"input": [-100.0, 83.5], "expected": 83.5}, {"input": [-100.0, 84.0], "expected": 84.0}, {"input": [-100.0, 84.5], "expected": 84.5}, {"input": [-100.0, 85.0], "expected": 85.0}, {"input": [-100.0, 85.5], "expected": 85.5}, {"input": [-100.0, 86.0], "expected": 86.0}, {"input": [-100.0, 86.5], "expected": 86.5}, {"input": [-100.0, 87.0], "expected": 87.0}, {"input": [-100.0, 87.5], "expected": 87.5}, {"input": [-100.0, 88.0], "expected": 88.0}, {"input": [-100.0, 88.5], "expected": 88.5}, {"input": [-100.0, 89.0], "expected": 89.0}, {"input": [-100.0, 89.5], "expected": 89.5}, {"input": [-100.0, 90.0], "expected": 90.0}, {"input": [-100.0, 90.5], "expected": 90.5}, {"input": [-100.0, 91.0], "expected": 91.0}, {"input": [-100.0, 91.5], "expected": 91.5}, {"input": [-100.0, 92.0], "expected": 92.0}, {"input": [-100.0, 92.5], "expected": 92.5}, {"input": [-100.0, 93.0], "expected": 93.0}, {"input": [-100.0, 93.5], "expected": 93.5}, {"input": [-100.0, 94.0], "expected": 94.0}, {"input": [-100.0, 94.5], "expected": 94.5}, {"input": [-100.0, 95.0], "expected": 95.0}, {"input": [-100.0, 95.5], "expected": 95.5}, {"input": [-100.0, 96.0], "expected": 96.0}, {"input": [-100.0, 96.5], "expected": 96.5}, {"input": [-100.0, 97.0], "expected": 97.0}, {"input": [-100.0, 97.5], "expected": 97.5}, {"input": [-100.0, 98.0], "expected": 98.0}, {"input": [-100.0, 98.5], "expected": 98.5}, {"input": [-100.0, 99.0], "expected": 99.0}, {"input": [-100.0, 99.5], "expected": 99.5}, {"input": [-99.5, -100.0], "expected": -99.0259230158199}, {"input": [-99.5, -99.5], "expected": -98.80685281944005}, {"input": [-99.5, -99.0], "expected": -98.5259230158199}, {"input": [-99.5, -98.5], "expected": -98.18673831248178}, {"input": [-99.5, -98.0], "expected": -97.79858672201725}, {"input": [-99.5, -97.5], "expected": -97.37307198895702}, {"input": [-99.5, -97.0], "expected": -96.92111026570745}, {"input": [-99.5, -96.5], "expected": -96.45141264842626}, {"input": [-99.5, -96.0], "expected": -95.97024958172737}, {"input": [-99.5, -95.5], "expected": -95.4818500720822}, {"input": [-99.5, -95.0], "expected": -94.9889522551514}, {"input": [-99.5, -94.5], "expected": -94.49328465151088}, {"input": [-99.5, -94.0], "expected": -93.99592155672943}, {"input": [-99.5, -93.5], "expected": -93.49752431486228}, {"input": [-99.5, -93.0], "expected": -92.99849768984025}, {"input": [-99.5, -92.5], "expected": -92.49908853354623}, {"input": [-99.5, -92.0], "expected": -91.99944706852465}, {"input": [-99.5, -91.5], "expected": -91.4996645936271}, {"input": [-99.5, -91.0], "expected": -90.99979655232787}, {"input": [-99.5, -90.5], "expected": -90.49987659781027}, {"input": [-99.5, -90.0], "expected": -89.99992515097136}, {"input": [-99.5, -89.5], "expected": -89.49995460110078}, {"input": [-99.5, -89.0], "expected": -88.99997246392977}, {"input": [-99.5, -88.5], "expected": -88.49998329843868}, {"input": [-99.5, -88.0], "expected": -87.99998986995772}, {"input": [-99.5, -87.5], "expected": -87.49999385580652}, {"input": [-99.5, -87.0], "expected": -86.99999627335377}, {"input": [-99.5, -86.5], "expected": -86.49999773967315}, {"input": [-99.5, -86.0], "expected": -85.99999862904185}, {"input": [-99.5, -85.5], "expected": -85.49999916847163}, {"input": [-99.5, -85.0], "expected": -84.99999949565246}, {"input": [-99.5, -84.5], "expected": -84.49999969409772}, {"input": [-99.5, -84.0], "expected": -83.99999981446088}, {"input": [-99.5, -83.5], "expected": -83.49999988746484}, {"input": [-99.5, -83.0], "expected": -82.99999993174397}, {"input": [-99.5, -82.5], "expected": -82.49999995860063}, {"input": [-99.5, -82.0], "expected": -81.99999997489}, {"input": [-99.5, -81.5], "expected": -81.49999998477001}, {"input": [-99.5, -81.0], "expected": -80.99999999076255}, {"input": [-99.5, -80.5], "expected": -80.4999999943972}, {"input": [-99.5, -80.0], "expected": -79.99999999660173}, {"input": [-99.5, -79.5], "expected": -79.49999999793884}, {"input": [-99.5, -79.0], "expected": -78.99999999874984}, {"input": [-99.5, -78.5], "expected": -78.49999999924174}, {"input": [-99.5, -78.0], "expected": -77.9999999995401}, {"input": [-99.5, -77.5], "expected": -77.49999999972106}, {"input": [-99.5, -77.0], "expected": -76.9999999998308}, {"input": [-99.5, -76.5], "expected": -76.49999999989738}, {"input": [-99.5, -76.0], "expected": -75.99999999993776}, {"input": [-99.5, -75.5], "expected": -75.49999999996224}, {"input": [-99.5, -75.0], "expected": -74.9999999999771}, {"input": [-99.5, -74.5], "expected": -74.49999999998612}, {"input": [-99.5, -74.0], "expected": -73.99999999999157}, {"input": [-99.5, -73.5], "expected": -73.49999999999488}, {"input": [-99.5, -73.0], "expected": -72.9999999999969}, {"input": [-99.5, -72.5], "expected": -72.49999999999812}, {"input": [-99.5, -72.0], "expected": -71.99999999999886}, {"input": [-99.5, -71.5], "expected": -71.4999999999993}, {"input": [-99.5, -71.0], "expected": -70.99999999999957}, {"input": [-99.5, -70.5], "expected": -70.49999999999974}, {"input": [-99.5, -70.0], "expected": -69.99999999999984}, {"input": [-99.5, -69.5], "expected": -69.4999999999999}, {"input": [-99.5, -69.0], "expected": -68.99999999999994}, {"input": [-99.5, -68.5], "expected": -68.49999999999997}, {"input": [-99.5, -68.0], "expected": -67.99999999999999}, {"input": [-99.5, -67.5], "expected": -67.49999999999999}, {"input": [-99.5, -67.0], "expected": -66.99999999999999}, {"input": [-99.5, -66.5], "expected": -66.5}, {"input": [-99.5, -66.0], "expected": -66.0}, {"input": [-99.5, -65.5], "expected": -65.5}, {"input": [-99.5, -65.0], "expected": -65.0}, {"input": [-99.5, -64.5], "expected": -64.5}, {"input": [-99.5, -64.0], "expected": -64.0}, {"input": [-99.5, -63.5], "expected": -63.5}, {"input": [-99.5, -63.0], "expected": -63.0}, {"input": [-99.5, -62.5], "expected": -62.5}, {"input": [-99.5, -62.0], "expected": -62.0}, {"input": [-99.5, -61.5], "expected": -61.5}, {"input": [-99.5, -61.0], "expected": -61.0}, {"input": [-99.5, -60.5], "expected": -60.5}, {"input": [-99.5, -60.0], "expected": -60.0}, {"input": [-99.5, -59.5], "expected": -59.5}, {"input": [-99.5, -59.0], "expected": -59.0}, {"input": [-99.5, -58.5], "expected": -58.5}, {"input": [-99.5, -58.0], "expected": -58.0}, {"input": [-99.5, -57.5], "expected": -57.5}, {"input": [-99.5, -57.0], "expected": -57.0}, {"input": [-99.5, -56.5], "expected": -56.5}, {"input": [-99.5, -56.0], "expected": -56.0}, {"input": [-99.5, -55.5], "expected": -55.5}, {"input": [-99.5, -55.0], "expected": -55.0}, {"input": [-99.5, -54.5], "expected": -54.5}, {"input": [-99.5, -54.0], "expected": -54.0}, {"input": [-99.5, -53.5], "expected": -53.5}, {"input": [-99.5, -53.0], "expected": -53.0}, {"input": [-99.5, -52.5], "expected": -52.5}, {"input": [-99.5, -52.0], "expected": -52.0}, {"input": [-99.5, -51.5], "expected": -51.5}, {"input": [-99.5, -51.0], "expected": -51.0}, {"input": [-99.5, -50.5], "expected": -50.5}, {"input": [-99.5, -50.0], "expected": -50.0}, {"input": [-99.5, -49.5], "expected": -49.5}, {"input": [-99.5, -49.0], "expected": -49.0}, {"input": [-99.5, -48.5], "expected": -48.5}, {"input": [-99.5, -48.0], "expected": -48.0}, {"input": [-99.5, -47.5], "expected": -47.5}, {"input": [-99.5, -47.0], "expected": -47.0}, {"input": [-99.5, -46.5], "expected": -46.5}, {"input": [-99.5, -46.0], "expected": -46.0}, {"input": [-99.5, -45.5], "expected": -45.5}, {"input": [-99.5, -45.0], "expected": -45.0}, {"input": [-99.5, -44.5], "expected": -44.5}, {"input": [-99.5, -44.0], "expected": -44.0}, {"input": [-99.5, -43.5], "expected": -43.5}, {"input": [-99.5, -43.0], "expected": -43.0}, {"input": [-99.5, -42.5], "expected": -42.5}, {"input": [-99.5, -42.0], "expected": -42.0}, {"input": [-99.5, -41.5], "expected": -41.5}, {"input": [-99.5, -41.0], "expected": -41.0}, {"input": [-99.5, -40.5], "expected": -40.5}, {"input": [-99.5, -40.0], "expected": -40.0}, {"input": [-99.5, -39.5], "expected": -39.5}, {"input": [-99.5, -39.0], "expected": -39.0}, {"input": [-99.5, -38.5], "expected": -38.5}, {"input": [-99.5, -38.0], "expected": -38.0}, {"input": [-99.5, -37.5], "expected": -37.5}, {"input": [-99.5, -37.0], "expected": -37.0}, {"input": [-99.5, -36.5], "expected": -36.5}, {"input": [-99.5, -36.0], "expected": -36.0}, {"input": [-99.5, -35.5], "expected": -35.5}, {"input": [-99.5, -35.0], "expected": -35.0}, {"input": [-99.5, -34.5], "expected": -34.5}, {"input": [-99.5, -34.0], "expected": -34.0}, {"input": [-99.5, -33.5], "expected": -33.5}, {"input": [-99.5, -33.0], "expected": -33.0}, {"input": [-99.5, -32.5], "expected": -32.5}, {"input": [-99.5, -32.0], "expected": -32.0}, {"input": [-99.5, -31.5], "expected": -31.5}, {"input": [-99.5, -31.0], "expected": -31.0}, {"input": [-99.5, -30.5], "expected": -30.5}, {"input": [-99.5, -30.0], "expected": -30.0}, {"input": [-99.5, -29.5], "expected": -29.5}, {"input": [-99.5, -29.0], "expected": -29.0}, {"input": [-99.5, -28.5], "expected": -28.5}, {"input": [-99.5, -28.0], "expected": -28.0}, {"input": [-99.5, -27.5], "expected": -27.5}, {"input": [-99.5, -27.0], "expected": -27.0}, {"input": [-99.5, -26.5], "expected": -26.5}, {"input": [-99.5, -26.0], "expected": -26.0}, {"input": [-99.5, -25.5], "expected": -25.5}, {"input": [-99.5, -25.0], "expected": -25.0}, {"input": [-99.5, -24.5], "expected": -24.5}, {"input": [-99.5, -24.0], "expected": -24.0}, {"input": [-99.5, -23.5], "expected": -23.5}, {"input": [-99.5, -23.0], "expected": -23.0}, {"input": [-99.5, -22.5], "expected": -22.5}, {"input": [-99.5, -22.0], "expected": -22.0}, {"input": [-99.5, -21.5], "expected": -21.5}, {"input": [-99.5, -21.0], "expected": -21.0}, {"input": [-99.5, -20.5], "expected": -20.5}, {"input": [-99.5, -20.0], "expected": -20.0}, {"input": [-99.5, -19.5], "expected": -19.5}, {"input": [-99.5, -19.0], "expected": -19.0}, {"input": [-99.5, -18.5], "expected": -18.5}, {"input": [-99.5, -18.0], "expected": -18.0}, {"input": [-99.5, -17.5], "expected": -17.5}, {"input": [-99.5, -17.0], "expected": -17.0}, {"input": [-99.5, -16.5], "expected": -16.5}, {"input": [-99.5, -16.0], "expected": -16.0}, {"input": [-99.5, -15.5], "expected": -15.5}, {"input": [-99.5, -15.0], "expected": -15.0}, {"input": [-99.5, -14.5], "expected": -14.5}, {"input": [-99.5, -14.0], "expected": -14.0}, {"input": [-99.5, -13.5], "expected": -13.5}, {"input": [-99.5, -13.0], "expected": -13.0}, {"input": [-99.5, -12.5], "expected": -12.5}, {"input": [-99.5, -12.0], "expected": -12.0}, {"input": [-99.5, -11.5], "expected": -11.5}, {"input": [-99.5, -11.0], "expected": -11.0}, {"input": [-99.5, -10.5], "expected": -10.5}, {"input": [-99.5, -10.0], "expected": -10.0}, {"input": [-99.5, -9.5], "expected": -9.5}, {"input": [-99.5, -9.0], "expected": -9.0}, {"input": [-99.5, -8.5], "expected": -8.5}, {"input": [-99.5, -8.0], "expected": -8.0}, {"input": [-99.5, -7.5], "expected": -7.5}, {"input": [-99.5, -7.0], "expected": -7.0}, {"input": [-99.5, -6.5], "expected": -6.5}, {"input": [-99.5, -6.0], "expected": -6.0}, {"input": [-99.5, -5.5], "expected": -5.5}, {"input": [-99.5, -5.0], "expected": -5.0}, {"input": [-99.5, -4.5], "expected": -4.5}, {"input": [-99.5, -4.0], "expected": -4.0}, {"input": [-99.5, -3.5], "expected": -3.5}, {"input": [-99.5, -3.0], "expected": -3.0}, {"input": [-99.5, -2.5], "expected": -2.5}, {"input": [-99.5, -2.0], "expected": -2.0}, {"input": [-99.5, -1.5], "expected": -1.5}, {"input": [-99.5, -1.0], "expected": -1.0}, {"input": [-99.5, -0.5], "expected": -0.5}, {"input": [-99.5, 0.0], "expected": 6.133368390286092e-44}, {"input": [-99.5, 0.5], "expected": 0.5}, {"input": [-99.5, 1.0], "expected": 1.0}, {"input": [-99.5, 1.5], "expected": 1.5}, {"input": [-99.5, 2.0], "expected": 2.0}, {"input": [-99.5, 2.5], "expected": 2.5}, {"input": [-99.5, 3.0], "expected": 3.0}, {"input": [-99.5, 3.5], "expected": 3.5}, {"input": [-99.5, 4.0], "expected": 4.0}, {"input": [-99.5, 4.5], "expected": 4.5}, {"input": [-99.5, 5.0], "expected": 5.0}, {"input": [-99.5, 5.5], "expected": 5.5}, {"input": [-99.5, 6.0], "expected": 6.0}, {"input": [-99.5, 6.5], "expected": 6.5}, {"input": [-99.5, 7.0], "expected": 7.0}, {"input": [-99.5, 7.5], "expected": 7.5}, {"input": [-99.5, 8.0], "expected": 8.0}, {"input": [-99.5, 8.5], "expected": 8.5}, {"input": [-99.5, 9.0], "expected": 9.0}, {"input": [-99.5, 9.5], "expected": 9.5}, {"input": [-99.5, 10.0], "expected": 10.0}, {"input": [-99.5, 10.5], "expected": 10.5}, {"input": [-99.5, 11.0], "expected": 11.0}, {"input": [-99.5, 11.5], "expected": 11.5}, {"input": [-99.5, 12.0], "expected": 12.0}, {"input": [-99.5, 12.5], "expected": 12.5}, {"input": [-99.5, 13.0], "expected": 13.0}, {"input": [-99.5, 13.5], "expected": 13.5}, {"input": [-99.5, 14.0], "expected": 14.0}, {"input": [-99.5, 14.5], "expected": 14.5}, {"input": [-99.5, 15.0], "expected": 15.0}, {"input": [-99.5, 15.5], "expected": 15.5}, {"input": [-99.5, 16.0], "expected": 16.0}, {"input": [-99.5, 16.5], "expected": 16.5}, {"input": [-99.5, 17.0], "expected": 17.0}, {"input": [-99.5, 17.5], "expected": 17.5}, {"input": [-99.5, 18.0], "expected": 18.0}, {"input": [-99.5, 18.5], "expected": 18.5}, {"input": [-99.5, 19.0], "expected": 19.0}, {"input": [-99.5, 19.5], "expected": 19.5}, {"input": [-99.5, 20.0], "expected": 20.0}, {"input": [-99.5, 20.5], "expected": 20.5}, {"input": [-99.5, 21.0], "expected": 21.0}, {"input": [-99.5, 21.5], "expected": 21.5}, {"input": [-99.5, 22.0], "expected": 22.0}, {"input": [-99.5, 22.5], "expected": 22.5}, {"input": [-99.5, 23.0], "expected": 23.0}, {"input": [-99.5, 23.5], "expected": 23.5}, {"input": [-99.5, 24.0], "expected": 24.0}, {"input": [-99.5, 24.5], "expected": 24.5}, {"input": [-99.5, 25.0], "expected": 25.0}, {"input": [-99.5, 25.5], "expected": 25.5}, {"input": [-99.5, 26.0], "expected": 26.0}, {"input": [-99.5, 26.5], "expected": 26.5}, {"input": [-99.5, 27.0], "expected": 27.0}, {"input": [-99.5, 27.5], "expected": 27.5}, {"input": [-99.5, 28.0], "expected": 28.0}, {"input": [-99.5, 28.5], "expected": 28.5}, {"input": [-99.5, 29.0], "expected": 29.0}, {"input": [-99.5, 29.5], "expected": 29.5}, {"input": [-99.5, 30.0], "expected": 30.0}, {"input": [-99.5, 30.5], "expected": 30.5}, {"input": [-99.5, 31.0], "expected": 31.0}, {"input": [-99.5, 31.5], "expected": 31.5}, {"input": [-99.5, 32.0], "expected": 32.0}, {"input": [-99.5, 32.5], "expected": 32.5}, {"input": [-99.5, 33.0], "expected": 33.0}, {"input": [-99.5, 33.5], "expected": 33.5}, {"input": [-99.5, 34.0], "expected": 34.0}, {"input": [-99.5, 34.5], "expected": 34.5}, {"input": [-99.5, 35.0], "expected": 35.0}, {"input": [-99.5, 35.5], "expected": 35.5}, {"input": [-99.5, 36.0], "expected": 36.0}, {"input": [-99.5, 36.5], "expected": 36.5}, {"input": [-99.5, 37.0], "expected": 37.0}, {"input": [-99.5, 37.5], "expected": 37.5}, {"input": [-99.5, 38.0], "expected": 38.0}, {"input": [-99.5, 38.5], "expected": 38.5}, {"input": [-99.5, 39.0], "expected": 39.0}, {"input": [-99.5, 39.5], "expected": 39.5}, {"input": [-99.5, 40.0], "expected": 40.0}, {"input": [-99.5, 40.5], "expected": 40.5}, {"input": [-99.5, 41.0], "expected": 41.0}, {"input": [-99.5, 41.5], "expected": 41.5}, {"input": [-99.5, 42.0], "expected": 42.0}, {"input": [-99.5, 42.5], "expected": 42.5}, {"input": [-99.5, 43.0], "expected": 43.0}, {"input": [-99.5, 43.5], "expected": 43.5}, {"input": [-99.5, 44.0], "expected": 44.0}, {"input": [-99.5, 44.5], "expected": 44.5}, {"input": [-99.5, 45.0], "expected": 45.0}, {"input": [-99.5, 45.5], "expected": 45.5}, {"input": [-99.5, 46.0], "expected": 46.0}, {"input": [-99.5, 46.5], "expected": 46.5}, {"input": [-99.5, 47.0], "expected": 47.0}, {"input": [-99.5, 47.5], "expected": 47.5}, {"input": [-99.5, 48.0], "expected": 48.0}, {"input": [-99.5, 48.5], "expected": 48.5}, {"input": [-99.5, 49.0], "expected": 49.0}, {"input": [-99.5, 49.5], "expected": 49.5}, {"input": [-99.5, 50.0], "expected": 50.0}, {"input": [-99.5, 50.5], "expected": 50.5}, {"input": [-99.5, 51.0], "expected": 51.0}, {"input": [-99.5, 51.5], "expected": 51.5}, {"input": [-99.5, 52.0], "expected": 52.0}, {"input": [-99.5, 52.5], "expected": 52.5}, {"input": [-99.5, 53.0], "expected": 53.0}, {"input": [-99.5, 53.5], "expected": 53.5}, {"input": [-99.5, 54.0], "expected": 54.0}, {"input": [-99.5, 54.5], "expected": 54.5}, {"input": [-99.5, 55.0], "expected": 55.0}, {"input": [-99.5, 55.5], "expected": 55.5}, {"input": [-99.5, 56.0], "expected": 56.0}, {"input": [-99.5, 56.5], "expected": 56.5}, {"input": [-99.5, 57.0], "expected": 57.0}, {"input": [-99.5, 57.5], "expected": 57.5}, {"input": [-99.5, 58.0], "expected": 58.0}, {"input": [-99.5, 58.5], "expected": 58.5}, {"input": [-99.5, 59.0], "expected": 59.0}, {"input": [-99.5, 59.5], "expected": 59.5}, {"input": [-99.5, 60.0], "expected": 60.0}, {"input": [-99.5, 60.5], "expected": 60.5}, {"input": [-99.5, 61.0], "expected": 61.0}, {"input": [-99.5, 61.5], "expected": 61.5}, {"input": [-99.5, 62.0], "expected": 62.0}, {"input": [-99.5, 62.5], "expected": 62.5}, {"input": [-99.5, 63.0], "expected": 63.0}, {"input": [-99.5, 63.5], "expected": 63.5}, {"input": [-99.5, 64.0], "expected": 64.0}, {"input": [-99.5, 64.5], "expected": 64.5}, {"input": [-99.5, 65.0], "expected": 65.0}, {"input": [-99.5, 65.5], "expected": 65.5}, {"input": [-99.5, 66.0], "expected": 66.0}, {"input": [-99.5, 66.5], "expected": 66.5}, {"input": [-99.5, 67.0], "expected": 67.0}, {"input": [-99.5, 67.5], "expected": 67.5}, {"input": [-99.5, 68.0], "expected": 68.0}, {"input": [-99.5, 68.5], "expected": 68.5}, {"input": [-99.5, 69.0], "expected": 69.0}, {"input": [-99.5, 69.5], "expected": 69.5}, {"input": [-99.5, 70.0], "expected": 70.0}, {"input": [-99.5, 70.5], "expected": 70.5}, {"input": [-99.5, 71.0], "expected": 71.0}, {"input": [-99.5, 71.5], "expected": 71.5}, {"input": [-99.5, 72.0], "expected": 72.0}, {"input": [-99.5, 72.5], "expected": 72.5}, {"input": [-99.5, 73.0], "expected": 73.0}, {"input": [-99.5, 73.5], "expected": 73.5}, {"input": [-99.5, 74.0], "expected": 74.0}, {"input": [-99.5, 74.5], "expected": 74.5}, {"input": [-99.5, 75.0], "expected": 75.0}, {"input": [-99.5, 75.5], "expected": 75.5}, {"input": [-99.5, 76.0], "expected": 76.0}, {"input": [-99.5, 76.5], "expected": 76.5}, {"input": [-99.5, 77.0], "expected": 77.0}, {"input": [-99.5, 77.5], "expected": 77.5}, {"input": [-99.5, 78.0], "expected": 78.0}, {"input": [-99.5, 78.5], "expected": 78.5}, {"input": [-99.5, 79.0], "expected": 79.0}, {"input": [-99.5, 79.5], "expected": 79.5}, {"input": [-99.5, 80.0], "expected": 80.0}, {"input": [-99.5, 80.5], "expected": 80.5}, {"input": [-99.5, 81.0], "expected": 81.0}, {"input": [-99.5, 81.5], "expected": 81.5}, {"input": [-99.5, 82.0], "expected": 82.0}, {"input": [-99.5, 82.5], "expected": 82.5}, {"input": [-99.5, 83.0], "expected": 83.0}, {"input": [-99.5, 83.5], "expected": 83.5}, {"input": [-99.5, 84.0], "expected": 84.0}, {"input": [-99.5, 84.5], "expected": 84.5}, {"input": [-99.5, 85.0], "expected": 85.0}, {"input": [-99.5, 85.5], "expected": 85.5}, {"input": [-99.5, 86.0], "expected": 86.0}, {"input": [-99.5, 86.5], "expected": 86.5}, {"input": [-99.5, 87.0], "expected": 87.0}, {"input": [-99.5, 87.5], "expected": 87.5}, {"input": [-99.5, 88.0], "expected": 88.0}, {"input": [-99.5, 88.5], "expected": 88.5}, {"input": [-99.5, 89.0], "expected": 89.0}, {"input": [-99.5, 89.5], "expected": 89.5}, {"input": [-99.5, 90.0], "expected": 90.0}, {"input": [-99.5, 90.5], "expected": 90.5}, {"input": [-99.5, 91.0], "expected": 91.0}, {"input": [-99.5, 91.5], "expected": 91.5}, {"input": [-99.5, 92.0], "expected": 92.0}, {"input": [-99.5, 92.5], "expected": 92.5}, {"input": [-99.5, 93.0], "expected": 93.0}, {"input": [-99.5, 93.5], "expected": 93.5}, {"input": [-99.5, 94.0], "expected": 94.0}, {"input": [-99.5, 94.5], "expected": 94.5}, {"input": [-99.5, 95.0], "expected": 95.0}, {"input": [-99.5, 95.5], "expected": 95.5}, {"input": [-99.5, 96.0], "expected": 96.0}, {"input": [-99.5, 96.5], "expected": 96.5}, {"input": [-99.5, 97.0], "expected": 97.0}, {"input": [-99.5, 97.5], "expected": 97.5}, {"input": [-99.5, 98.0], "expected": 98.0}, {"input": [-99.5, 98.5], "expected": 98.5}, {"input": [-99.5, 99.0], "expected": 99.0}, {"input": [-99.5, 99.5], "expected": 99.5}, {"input": [-99.0, -100.0], "expected": -98.68673831248178}, {"input": [-99.0, -99.5], "expected": -98.5259230158199}, {"input": [-99.0, -99.0], "expected": -98.30685281944005}, {"input": [-99.0, -98.5], "expected": -98.0259230158199}, {"input": [-99.0, -98.0], "expected": -97.68673831248178}, {"input": [-99.0, -97.5], "expected": -97.29858672201725}, {"input": [-99.0, -97.0], "expected": -96.87307198895702}, {"input": [-99.0, -96.5], "expected": -96.42111026570745}, {"input": [-99.0, -96.0], "expected": -95.95141264842626}, {"input": [-99.0, -95.5], "expected": -95.47024958172737}, {"input": [-99.0, -95.0], "expected": -94.9818500720822}, {"input": [-99.0, -94.5], "expected": -94.4889522551514}, {"input": [-99.0, -94.0], "expected": -93.99328465151088}, {"input": [-99.0, -93.5], "expected": -93.49592155672943}, {"input": [-99.0, -93.0], "expected": -92.99752431486228}, {"input": [-99.0, -92.5], "expected": -92.49849768984025}, {"input": [-99.0, -92.0], "expected": -91.99908853354623}, {"input": [-99.0, -91.5], "expected": -91.49944706852465}, {"input": [-99.0, -91.0], "expected": -90.9996645936271}, {"input": [-99.0, -90.5], "expected": -90.49979655232787}, {"input": [-99.0, -90.0], "expected": -89.99987659781027}, {"input": [-99.0, -89.5], "expected": -89.49992515097136}, {"input": [-99.0, -89.0], "expected": -88.99995460110078}, {"input": [-99.0, -88.5], "expected": -88.49997246392977}, {"input": [-99.0, -88.0], "expected": -87.99998329843868}, {"input": [-99.0, -87.5], "expected": -87.49998986995772}, {"input": [-99.0, -87.0], "expected": -86.99999385580652}, {"input": [-99.0, -86.5], "expected": -86.49999627335377}, {"input": [-99.0, -86.0], "expected": -85.99999773967315}, {"input": [-99.0, -85.5], "expected": -85.49999862904185}, {"input": [-99.0, -85.0], "expected": -84.99999916847163}, {"input": [-99.0, -84.5], "expected": -84.49999949565246}, {"input": [-99.0, -84.0], "expected": -83.99999969409772}, {"input": [-99.0, -83.5], "expected": -83.49999981446088}, {"input": [-99.0, -83.0], "expected": -82.99999988746484}, {"input": [-99.0, -82.5], "expected": -82.49999993174397}, {"input": [-99.0, -82.0], "expected": -81.99999995860063}, {"input": [-99.0, -81.5], "expected": -81.49999997489}, {"input": [-99.0, -81.0], "expected": -80.99999998477001}, {"input": [-99.0, -80.5], "expected": -80.49999999076255}, {"input": [-99.0, -80.0], "expected": -79.9999999943972}, {"input": [-99.0, -79.5], "expected": -79.49999999660173}, {"input": [-99.0, -79.0], "expected": -78.99999999793884}, {"input": [-99.0, -78.5], "expected": -78.49999999874984}, {"input": [-99.0, -78.0], "expected": -77.99999999924174}, {"input": [-99.0, -77.5], "expected": -77.4999999995401}, {"input": [-99.0, -77.0], "expected": -76.99999999972106}, {"input": [-99.0, -76.5], "expected": -76.4999999998308}, {"input": [-99.0, -76.0], "expected": -75.99999999989738}, {"input": [-99.0, -75.5], "expected": -75.49999999993776}, {"input": [-99.0, -75.0], "expected": -74.99999999996224}, {"input": [-99.0, -74.5], "expected": -74.4999999999771}, {"input": [-99.0, -74.0], "expected": -73.99999999998612}, {"input": [-99.0, -73.5], "expected": -73.49999999999157}, {"input": [-99.0, -73.0], "expected": -72.99999999999488}, {"input": [-99.0, -72.5], "expected": -72.4999999999969}, {"input": [-99.0, -72.0], "expected": -71.99999999999812}, {"input": [-99.0, -71.5], "expected": -71.49999999999886}, {"input": [-99.0, -71.0], "expected": -70.9999999999993}, {"input": [-99.0, -70.5], "expected": -70.49999999999957}, {"input": [-99.0, -70.0], "expected": -69.99999999999974}, {"input": [-99.0, -69.5], "expected": -69.49999999999984}, {"input": [-99.0, -69.0], "expected": -68.9999999999999}, {"input": [-99.0, -68.5], "expected": -68.49999999999994}, {"input": [-99.0, -68.0], "expected": -67.99999999999997}, {"input": [-99.0, -67.5], "expected": -67.49999999999999}, {"input": [-99.0, -67.0], "expected": -66.99999999999999}, {"input": [-99.0, -66.5], "expected": -66.49999999999999}, {"input": [-99.0, -66.0], "expected": -66.0}, {"input": [-99.0, -65.5], "expected": -65.5}, {"input": [-99.0, -65.0], "expected": -65.0}, {"input": [-99.0, -64.5], "expected": -64.5}, {"input": [-99.0, -64.0], "expected": -64.0}, {"input": [-99.0, -63.5], "expected": -63.5}, {"input": [-99.0, -63.0], "expected": -63.0}, {"input": [-99.0, -62.5], "expected": -62.5}, {"input": [-99.0, -62.0], "expected": -62.0}, {"input": [-99.0, -61.5], "expected": -61.5}, {"input": [-99.0, -61.0], "expected": -61.0}, {"input": [-99.0, -60.5], "expected": -60.5}, {"input": [-99.0, -60.0], "expected": -60.0}, {"input": [-99.0, -59.5], "expected": -59.5}, {"input": [-99.0, -59.0], "expected": -59.0}, {"input": [-99.0, -58.5], "expected": -58.5}, {"input": [-99.0, -58.0], "expected": -58.0}, {"input": [-99.0, -57.5], "expected": -57.5}, {"input": [-99.0, -57.0], "expected": -57.0}, {"input": [-99.0, -56.5], "expected": -56.5}, {"input": [-99.0, -56.0], "expected": -56.0}, {"input": [-99.0, -55.5], "expected": -55.5}, {"input": [-99.0, -55.0], "expected": -55.0}, {"input": [-99.0, -54.5], "expected": -54.5}, {"input": [-99.0, -54.0], "expected": -54.0}, {"input": [-99.0, -53.5], "expected": -53.5}, {"input": [-99.0, -53.0], "expected": -53.0}, {"input": [-99.0, -52.5], "expected": -52.5}, {"input": [-99.0, -52.0], "expected": -52.0}, {"input": [-99.0, -51.5], "expected": -51.5}, {"input": [-99.0, -51.0], "expected": -51.0}, {"input": [-99.0, -50.5], "expected": -50.5}, {"input": [-99.0, -50.0], "expected": -50.0}, {"input": [-99.0, -49.5], "expected": -49.5}, {"input": [-99.0, -49.0], "expected": -49.0}, {"input": [-99.0, -48.5], "expected": -48.5}, {"input": [-99.0, -48.0], "expected": -48.0}, {"input": [-99.0, -47.5], "expected": -47.5}, {"input": [-99.0, -47.0], "expected": -47.0}, {"input": [-99.0, -46.5], "expected": -46.5}, {"input": [-99.0, -46.0], "expected": -46.0}, {"input": [-99.0, -45.5], "expected": -45.5}, {"input": [-99.0, -45.0], "expected": -45.0}, {"input": [-99.0, -44.5], "expected": -44.5}, {"input": [-99.0, -44.0], "expected": -44.0}, {"input": [-99.0, -43.5], "expected": -43.5}, {"input": [-99.0, -43.0], "expected": -43.0}, {"input": [-99.0, -42.5], "expected": -42.5}, {"input": [-99.0, -42.0], "expected": -42.0}, {"input": [-99.0, -41.5], "expected": -41.5}, {"input": [-99.0, -41.0], "expected": -41.0}, {"input": [-99.0, -40.5], "expected": -40.5}, {"input": [-99.0, -40.0], "expected": -40.0}, {"input": [-99.0, -39.5], "expected": -39.5}, {"input": [-99.0, -39.0], "expected": -39.0}, {"input": [-99.0, -38.5], "expected": -38.5}, {"input": [-99.0, -38.0], "expected": -38.0}, {"input": [-99.0, -37.5], "expected": -37.5}, {"input": [-99.0, -37.0], "expected": -37.0}, {"input": [-99.0, -36.5], "expected": -36.5}, {"input": [-99.0, -36.0], "expected": -36.0}, {"input": [-99.0, -35.5], "expected": -35.5}, {"input": [-99.0, -35.0], "expected": -35.0}, {"input": [-99.0, -34.5], "expected": -34.5}, {"input": [-99.0, -34.0], "expected": -34.0}, {"input": [-99.0, -33.5], "expected": -33.5}, {"input": [-99.0, -33.0], "expected": -33.0}, {"input": [-99.0, -32.5], "expected": -32.5}, {"input": [-99.0, -32.0], "expected": -32.0}, {"input": [-99.0, -31.5], "expected": -31.5}, {"input": [-99.0, -31.0], "expected": -31.0}, {"input": [-99.0, -30.5], "expected": -30.5}, {"input": [-99.0, -30.0], "expected": -30.0}, {"input": [-99.0, -29.5], "expected": -29.5}, {"input": [-99.0, -29.0], "expected": -29.0}, {"input": [-99.0, -28.5], "expected": -28.5}, {"input": [-99.0, -28.0], "expected": -28.0}, {"input": [-99.0, -27.5], "expected": -27.5}, {"input": [-99.0, -27.0], "expected": -27.0}, {"input": [-99.0, -26.5], "expected": -26.5}, {"input": [-99.0, -26.0], "expected": -26.0}, {"input": [-99.0, -25.5], "expected": -25.5}, {"input": [-99.0, -25.0], "expected": -25.0}, {"input": [-99.0, -24.5], "expected": -24.5}, {"input": [-99.0, -24.0], "expected": -24.0}, {"input": [-99.0, -23.5], "expected": -23.5}, {"input": [-99.0, -23.0], "expected": -23.0}, {"input": [-99.0, -22.5], "expected": -22.5}, {"input": [-99.0, -22.0], "expected": -22.0}, {"input": [-99.0, -21.5], "expected": -21.5}, {"input": [-99.0, -21.0], "expected": -21.0}, {"input": [-99.0, -20.5], "expected": -20.5}, {"input": [-99.0, -20.0], "expected": -20.0}, {"input": [-99.0, -19.5], "expected": -19.5}, {"input": [-99.0, -19.0], "expected": -19.0}, {"input": [-99.0, -18.5], "expected": -18.5}, {"input": [-99.0, -18.0], "expected": -18.0}, {"input": [-99.0, -17.5], "expected": -17.5}, {"input": [-99.0, -17.0], "expected": -17.0}, {"input": [-99.0, -16.5], "expected": -16.5}, {"input": [-99.0, -16.0], "expected": -16.0}, {"input": [-99.0, -15.5], "expected": -15.5}, {"input": [-99.0, -15.0], "expected": -15.0}, {"input": [-99.0, -14.5], "expected": -14.5}, {"input": [-99.0, -14.0], "expected": -14.0}, {"input": [-99.0, -13.5], "expected": -13.5}, {"input": [-99.0, -13.0], "expected": -13.0}, {"input": [-99.0, -12.5], "expected": -12.5}, {"input": [-99.0, -12.0], "expected": -12.0}, {"input": [-99.0, -11.5], "expected": -11.5}, {"input": [-99.0, -11.0], "expected": -11.0}, {"input": [-99.0, -10.5], "expected": -10.5}, {"input": [-99.0, -10.0], "expected": -10.0}, {"input": [-99.0, -9.5], "expected": -9.5}, {"input": [-99.0, -9.0], "expected": -9.0}, {"input": [-99.0, -8.5], "expected": -8.5}, {"input": [-99.0, -8.0], "expected": -8.0}, {"input": [-99.0, -7.5], "expected": -7.5}, {"input": [-99.0, -7.0], "expected": -7.0}, {"input": [-99.0, -6.5], "expected": -6.5}, {"input": [-99.0, -6.0], "expected": -6.0}, {"input": [-99.0, -5.5], "expected": -5.5}, {"input": [-99.0, -5.0], "expected": -5.0}, {"input": [-99.0, -4.5], "expected": -4.5}, {"input": [-99.0, -4.0], "expected": -4.0}, {"input": [-99.0, -3.5], "expected": -3.5}, {"input": [-99.0, -3.0], "expected": -3.0}, {"input": [-99.0, -2.5], "expected": -2.5}, {"input": [-99.0, -2.0], "expected": -2.0}, {"input": [-99.0, -1.5], "expected": -1.5}, {"input": [-99.0, -1.0], "expected": -1.0}, {"input": [-99.0, -0.5], "expected": -0.5}, {"input": [-99.0, 0.0], "expected": 1.0112214926104486e-43}, {"input": [-99.0, 0.5], "expected": 0.5}, {"input": [-99.0, 1.0], "expected": 1.0}, {"input": [-99.0, 1.5], "expected": 1.5}, {"input": [-99.0, 2.0], "expected": 2.0}, {"input": [-99.0, 2.5], "expected": 2.5}, {"input": [-99.0, 3.0], "expected": 3.0}, {"input": [-99.0, 3.5], "expected": 3.5}, {"input": [-99.0, 4.0], "expected": 4.0}, {"input": [-99.0, 4.5], "expected": 4.5}, {"input": [-99.0, 5.0], "expected": 5.0}, {"input": [-99.0, 5.5], "expected": 5.5}, {"input": [-99.0, 6.0], "expected": 6.0}, {"input": [-99.0, 6.5], "expected": 6.5}, {"input": [-99.0, 7.0], "expected": 7.0}, {"input": [-99.0, 7.5], "expected": 7.5}, {"input": [-99.0, 8.0], "expected": 8.0}, {"input": [-99.0, 8.5], "expected": 8.5}, {"input": [-99.0, 9.0], "expected": 9.0}, {"input": [-99.0, 9.5], "expected": 9.5}, {"input": [-99.0, 10.0], "expected": 10.0}, {"input": [-99.0, 10.5], "expected": 10.5}, {"input": [-99.0, 11.0], "expected": 11.0}, {"input": [-99.0, 11.5], "expected": 11.5}, {"input": [-99.0, 12.0], "expected": 12.0}, {"input": [-99.0, 12.5], "expected": 12.5}, {"input": [-99.0, 13.0], "expected": 13.0}, {"input": [-99.0, 13.5], "expected": 13.5}, {"input": [-99.0, 14.0], "expected": 14.0}, {"input": [-99.0, 14.5], "expected": 14.5}, {"input": [-99.0, 15.0], "expected": 15.0}, {"input": [-99.0, 15.5], "expected": 15.5}, {"input": [-99.0, 16.0], "expected": 16.0}, {"input": [-99.0, 16.5], "expected": 16.5}, {"input": [-99.0, 17.0], "expected": 17.0}, {"input": [-99.0, 17.5], "expected": 17.5}, {"input": [-99.0, 18.0], "expected": 18.0}, {"input": [-99.0, 18.5], "expected": 18.5}, {"input": [-99.0, 19.0], "expected": 19.0}, {"input": [-99.0, 19.5], "expected": 19.5}, {"input": [-99.0, 20.0], "expected": 20.0}, {"input": [-99.0, 20.5], "expected": 20.5}, {"input": [-99.0, 21.0], "expected": 21.0}, {"input": [-99.0, 21.5], "expected": 21.5}, {"input": [-99.0, 22.0], "expected": 22.0}, {"input": [-99.0, 22.5], "expected": 22.5}, {"input": [-99.0, 23.0], "expected": 23.0}, {"input": [-99.0, 23.5], "expected": 23.5}, {"input": [-99.0, 24.0], "expected": 24.0}, {"input": [-99.0, 24.5], "expected": 24.5}, {"input": [-99.0, 25.0], "expected": 25.0}, {"input": [-99.0, 25.5], "expected": 25.5}, {"input": [-99.0, 26.0], "expected": 26.0}, {"input": [-99.0, 26.5], "expected": 26.5}, {"input": [-99.0, 27.0], "expected": 27.0}, {"input": [-99.0, 27.5], "expected": 27.5}, {"input": [-99.0, 28.0], "expected": 28.0}, {"input": [-99.0, 28.5], "expected": 28.5}, {"input": [-99.0, 29.0], "expected": 29.0}, {"input": [-99.0, 29.5], "expected": 29.5}, {"input": [-99.0, 30.0], "expected": 30.0}, {"input": [-99.0, 30.5], "expected": 30.5}, {"input": [-99.0, 31.0], "expected": 31.0}, {"input": [-99.0, 31.5], "expected": 31.5}, {"input": [-99.0, 32.0], "expected": 32.0}, {"input": [-99.0, 32.5], "expected": 32.5}, {"input": [-99.0, 33.0], "expected": 33.0}, {"input": [-99.0, 33.5], "expected": 33.5}, {"input": [-99.0, 34.0], "expected": 34.0}, {"input": [-99.0, 34.5], "expected": 34.5}, {"input": [-99.0, 35.0], "expected": 35.0}, {"input": [-99.0, 35.5], "expected": 35.5}, {"input": [-99.0, 36.0], "expected": 36.0}, {"input": [-99.0, 36.5], "expected": 36.5}, {"input": [-99.0, 37.0], "expected": 37.0}, {"input": [-99.0, 37.5], "expected": 37.5}, {"input": [-99.0, 38.0], "expected": 38.0}, {"input": [-99.0, 38.5], "expected": 38.5}, {"input": [-99.0, 39.0], "expected": 39.0}, {"input": [-99.0, 39.5], "expected": 39.5}, {"input": [-99.0, 40.0], "expected": 40.0}, {"input": [-99.0, 40.5], "expected": 40.5}, {"input": [-99.0, 41.0], "expected": 41.0}, {"input": [-99.0, 41.5], "expected": 41.5}, {"input": [-99.0, 42.0], "expected": 42.0}, {"input": [-99.0, 42.5], "expected": 42.5}, {"input": [-99.0, 43.0], "expected": 43.0}, {"input": [-99.0, 43.5], "expected": 43.5}, {"input": [-99.0, 44.0], "expected": 44.0}, {"input": [-99.0, 44.5], "expected": 44.5}, {"input": [-99.0, 45.0], "expected": 45.0}, {"input": [-99.0, 45.5], "expected": 45.5}, {"input": [-99.0, 46.0], "expected": 46.0}, {"input": [-99.0, 46.5], "expected": 46.5}, {"input": [-99.0, 47.0], "expected": 47.0}, {"input": [-99.0, 47.5], "expected": 47.5}, {"input": [-99.0, 48.0], "expected": 48.0}, {"input": [-99.0, 48.5], "expected": 48.5}, {"input": [-99.0, 49.0], "expected": 49.0}, {"input": [-99.0, 49.5], "expected": 49.5}, {"input": [-99.0, 50.0], "expected": 50.0}, {"input": [-99.0, 50.5], "expected": 50.5}, {"input": [-99.0, 51.0], "expected": 51.0}, {"input": [-99.0, 51.5], "expected": 51.5}, {"input": [-99.0, 52.0], "expected": 52.0}, {"input": [-99.0, 52.5], "expected": 52.5}, {"input": [-99.0, 53.0], "expected": 53.0}, {"input": [-99.0, 53.5], "expected": 53.5}, {"input": [-99.0, 54.0], "expected": 54.0}, {"input": [-99.0, 54.5], "expected": 54.5}, {"input": [-99.0, 55.0], "expected": 55.0}, {"input": [-99.0, 55.5], "expected": 55.5}, {"input": [-99.0, 56.0], "expected": 56.0}, {"input": [-99.0, 56.5], "expected": 56.5}, {"input": [-99.0, 57.0], "expected": 57.0}, {"input": [-99.0, 57.5], "expected": 57.5}, {"input": [-99.0, 58.0], "expected": 58.0}, {"input": [-99.0, 58.5], "expected": 58.5}, {"input": [-99.0, 59.0], "expected": 59.0}, {"input": [-99.0, 59.5], "expected": 59.5}, {"input": [-99.0, 60.0], "expected": 60.0}, {"input": [-99.0, 60.5], "expected": 60.5}, {"input": [-99.0, 61.0], "expected": 61.0}, {"input": [-99.0, 61.5], "expected": 61.5}, {"input": [-99.0, 62.0], "expected": 62.0}, {"input": [-99.0, 62.5], "expected": 62.5}, {"input": [-99.0, 63.0], "expected": 63.0}, {"input": [-99.0, 63.5], "expected": 63.5}, {"input": [-99.0, 64.0], "expected": 64.0}, {"input": [-99.0, 64.5], "expected": 64.5}, {"input": [-99.0, 65.0], "expected": 65.0}, {"input": [-99.0, 65.5], "expected": 65.5}, {"input": [-99.0, 66.0], "expected": 66.0}, {"input": [-99.0, 66.5], "expected": 66.5}, {"input": [-99.0, 67.0], "expected": 67.0}, {"input": [-99.0, 67.5], "expected": 67.5}, {"input": [-99.0, 68.0], "expected": 68.0}, {"input": [-99.0, 68.5], "expected": 68.5}, {"input": [-99.0, 69.0], "expected": 69.0}, {"input": [-99.0, 69.5], "expected": 69.5}, {"input": [-99.0, 70.0], "expected": 70.0}, {"input": [-99.0, 70.5], "expected": 70.5}, {"input": [-99.0, 71.0], "expected": 71.0}, {"input": [-99.0, 71.5], "expected": 71.5}, {"input": [-99.0, 72.0], "expected": 72.0}, {"input": [-99.0, 72.5], "expected": 72.5}, {"input": [-99.0, 73.0], "expected": 73.0}, {"input": [-99.0, 73.5], "expected": 73.5}, {"input": [-99.0, 74.0], "expected": 74.0}, {"input": [-99.0, 74.5], "expected": 74.5}, {"input": [-99.0, 75.0], "expected": 75.0}, {"input": [-99.0, 75.5], "expected": 75.5}, {"input": [-99.0, 76.0], "expected": 76.0}, {"input": [-99.0, 76.5], "expected": 76.5}, {"input": [-99.0, 77.0], "expected": 77.0}, {"input": [-99.0, 77.5], "expected": 77.5}, {"input": [-99.0, 78.0], "expected": 78.0}, {"input": [-99.0, 78.5], "expected": 78.5}, {"input": [-99.0, 79.0], "expected": 79.0}, {"input": [-99.0, 79.5], "expected": 79.5}, {"input": [-99.0, 80.0], "expected": 80.0}, {"input": [-99.0, 80.5], "expected": 80.5}, {"input": [-99.0, 81.0], "expected": 81.0}, {"input": [-99.0, 81.5], "expected": 81.5}, {"input": [-99.0, 82.0], "expected": 82.0}, {"input": [-99.0, 82.5], "expected": 82.5}, {"input": [-99.0, 83.0], "expected": 83.0}, {"input": [-99.0, 83.5], "expected": 83.5}, {"input": [-99.0, 84.0], "expected": 84.0}, {"input": [-99.0, 84.5], "expected": 84.5}, {"input": [-99.0, 85.0], "expected": 85.0}, {"input": [-99.0, 85.5], "expected": 85.5}, {"input": [-99.0, 86.0], "expected": 86.0}, {"input": [-99.0, 86.5], "expected": 86.5}, {"input": [-99.0, 87.0], "expected": 87.0}, {"input": [-99.0, 87.5], "expected": 87.5}, {"input": [-99.0, 88.0], "expected": 88.0}, {"input": [-99.0, 88.5], "expected": 88.5}, {"input": [-99.0, 89.0], "expected": 89.0}, {"input": [-99.0, 89.5], "expected": 89.5}, {"input": [-99.0, 90.0], "expected": 90.0}, {"input": [-99.0, 90.5], "expected": 90.5}, {"input": [-99.0, 91.0], "expected": 91.0}, {"input": [-99.0, 91.5], "expected": 91.5}, {"input": [-99.0, 92.0], "expected": 92.0}, {"input": [-99.0, 92.5], "expected": 92.5}, {"input": [-99.0, 93.0], "expected": 93.0}, {"input": [-99.0, 93.5], "expected": 93.5}, {"input": [-99.0, 94.0], "expected": 94.0}, {"input": [-99.0, 94.5], "expected": 94.5}, {"input": [-99.0, 95.0], "expected": 95.0}, {"input": [-99.0, 95.5], "expected": 95.5}, {"input": [-99.0, 96.0], "expected": 96.0}, {"input": [-99.0, 96.5], "expected": 96.5}, {"input": [-99.0, 97.0], "expected": 97.0}, {"input": [-99.0, 97.5], "expected": 97.5}, {"input": [-99.0, 98.0], "expected": 98.0}, {"input": [-99.0, 98.5], "expected": 98.5}, {"input": [-99.0, 99.0], "expected": 99.0}, {"input": [-99.0, 99.5], "expected": 99.5}, {"input": [-98.5, -100.0], "expected": -98.29858672201725}, {"input": [-98.5, -99.5], "expected": -98.18673831248178}, {"input": [-98.5, -99.0], "expected": -98.0259230158199}, {"input": [-98.5, -98.5], "expected": -97.80685281944005}, {"input": [-98.5, -98.0], "expected": -97.5259230158199}, {"input": [-98.5, -97.5], "expected": -97.18673831248178}, {"input": [-98.5, -97.0], "expected": -96.79858672201725}, {"input": [-98.5, -96.5], "expected": -96.37307198895702}, {"input": [-98.5, -96.0], "expected": -95.92111026570745}, {"input": [-98.5, -95.5], "expected": -95.45141264842626}, {"input": [-98.5, -95.0], "expected": -94.97024958172737}, {"input": [-98.5, -94.5], "expected": -94.4818500720822}, {"input": [-98.5, -94.0], "expected": -93.9889522551514}, {"input": [-98.5, -93.5], "expected": -93.49328465151088}, {"input": [-98.5, -93.0], "expected": -92.99592155672943}, {"input": [-98.5, -92.5], "expected": -92.49752431486228}, {"input": [-98.5, -92.0], "expected": -91.99849768984025}, {"input": [-98.5, -91.5], "expected": -91.49908853354623}, {"input": [-98.5, -91.0], "expected": -90.99944706852465}, {"input": [-98.5, -90.5], "expected": -90.4996645936271}, {"input": [-98.5, -90.0], "expected": -89.99979655232787}, {"input": [-98.5, -89.5], "expected": -89.49987659781027}, {"input": [-98.5, -89.0], "expected": -88.99992515097136}, {"input": [-98.5, -88.5], "expected": -88.49995460110078}, {"input": [-98.5, -88.0], "expected": -87.99997246392977}, {"input": [-98.5, -87.5], "expected": -87.49998329843868}, {"input": [-98.5, -87.0], "expected": -86.99998986995772}, {"input": [-98.5, -86.5], "expected": -86.49999385580652}, {"input": [-98.5, -86.0], "expected": -85.99999627335377}, {"input": [-98.5, -85.5], "expected": -85.49999773967315}, {"input": [-98.5, -85.0], "expected": -84.99999862904185}, {"input": [-98.5, -84.5], "expected": -84.49999916847163}, {"input": [-98.5, -84.0], "expected": -83.99999949565246}, {"input": [-98.5, -83.5], "expected": -83.49999969409772}, {"input": [-98.5, -83.0], "expected": -82.99999981446088}, {"input": [-98.5, -82.5], "expected": -82.49999988746484}, {"input": [-98.5, -82.0], "expected": -81.99999993174397}, {"input": [-98.5, -81.5], "expected": -81.49999995860063}, {"input": [-98.5, -81.0], "expected": -80.99999997489}, {"input": [-98.5, -80.5], "expected": -80.49999998477001}, {"input": [-98.5, -80.0], "expected": -79.99999999076255}, {"input": [-98.5, -79.5], "expected": -79.4999999943972}, {"input": [-98.5, -79.0], "expected": -78.99999999660173}, {"input": [-98.5, -78.5], "expected": -78.49999999793884}, {"input": [-98.5, -78.0], "expected": -77.99999999874984}, {"input": [-98.5, -77.5], "expected": -77.49999999924174}, {"input": [-98.5, -77.0], "expected": -76.9999999995401}, {"input": [-98.5, -76.5], "expected": -76.49999999972106}, {"input": [-98.5, -76.0], "expected": -75.9999999998308}, {"input": [-98.5, -75.5], "expected": -75.49999999989738}, {"input": [-98.5, -75.0], "expected": -74.99999999993776}, {"input": [-98.5, -74.5], "expected": -74.49999999996224}, {"input": [-98.5, -74.0], "expected": -73.9999999999771}, {"input": [-98.5, -73.5], "expected": -73.49999999998612}, {"input": [-98.5, -73.0], "expected": -72.99999999999157}, {"input": [-98.5, -72.5], "expected": -72.49999999999488}, {"input": [-98.5, -72.0], "expected": -71.9999999999969}, {"input": [-98.5, -71.5], "expected": -71.49999999999812}, {"input": [-98.5, -71.0], "expected": -70.99999999999886}, {"input": [-98.5, -70.5], "expected": -70.4999999999993}, {"input": [-98.5, -70.0], "expected": -69.99999999999957}, {"input": [-98.5, -69.5], "expected": -69.49999999999974}, {"input": [-98.5, -69.0], "expected": -68.99999999999984}, {"input": [-98.5, -68.5], "expected": -68.4999999999999}, {"input": [-98.5, -68.0], "expected": -67.99999999999994}, {"input": [-98.5, -67.5], "expected": -67.49999999999997}, {"input": [-98.5, -67.0], "expected": -66.99999999999999}, {"input": [-98.5, -66.5], "expected": -66.49999999999999}, {"input": [-98.5, -66.0], "expected": -65.99999999999999}, {"input": [-98.5, -65.5], "expected": -65.5}, {"input": [-98.5, -65.0], "expected": -65.0}, {"input": [-98.5, -64.5], "expected": -64.5}, {"input": [-98.5, -64.0], "expected": -64.0}, {"input": [-98.5, -63.5], "expected": -63.5}, {"input": [-98.5, -63.0], "expected": -63.0}, {"input": [-98.5, -62.5], "expected": -62.5}, {"input": [-98.5, -62.0], "expected": -62.0}, {"input": [-98.5, -61.5], "expected": -61.5}, {"input": [-98.5, -61.0], "expected": -61.0}, {"input": [-98.5, -60.5], "expected": -60.5}, {"input": [-98.5, -60.0], "expected": -60.0}, {"input": [-98.5, -59.5], "expected": -59.5}, {"input": [-98.5, -59.0], "expected": -59.0}, {"input": [-98.5, -58.5], "expected": -58.5}, {"input": [-98.5, -58.0], "expected": -58.0}, {"input": [-98.5, -57.5], "expected": -57.5}, {"input": [-98.5, -57.0], "expected": -57.0}, {"input": [-98.5, -56.5], "expected": -56.5}, {"input": [-98.5, -56.0], "expected": -56.0}, {"input": [-98.5, -55.5], "expected": -55.5}, {"input": [-98.5, -55.0], "expected": -55.0}, {"input": [-98.5, -54.5], "expected": -54.5}, {"input": [-98.5, -54.0], "expected": -54.0}, {"input": [-98.5, -53.5], "expected": -53.5}, {"input": [-98.5, -53.0], "expected": -53.0}, {"input": [-98.5, -52.5], "expected": -52.5}, {"input": [-98.5, -52.0], "expected": -52.0}, {"input": [-98.5, -51.5], "expected": -51.5}, {"input": [-98.5, -51.0], "expected": -51.0}, {"input": [-98.5, -50.5], "expected": -50.5}, {"input": [-98.5, -50.0], "expected": -50.0}, {"input": [-98.5, -49.5], "expected": -49.5}, {"input": [-98.5, -49.0], "expected": -49.0}, {"input": [-98.5, -48.5], "expected": -48.5}, {"input": [-98.5, -48.0], "expected": -48.0}, {"input": [-98.5, -47.5], "expected": -47.5}, {"input": [-98.5, -47.0], "expected": -47.0}, {"input": [-98.5, -46.5], "expected": -46.5}, {"input": [-98.5, -46.0], "expected": -46.0}, {"input": [-98.5, -45.5], "expected": -45.5}, {"input": [-98.5, -45.0], "expected": -45.0}, {"input": [-98.5, -44.5], "expected": -44.5}, {"input": [-98.5, -44.0], "expected": -44.0}, {"input": [-98.5, -43.5], "expected": -43.5}, {"input": [-98.5, -43.0], "expected": -43.0}, {"input": [-98.5, -42.5], "expected": -42.5}, {"input": [-98.5, -42.0], "expected": -42.0}, {"input": [-98.5, -41.5], "expected": -41.5}, {"input": [-98.5, -41.0], "expected": -41.0}, {"input": [-98.5, -40.5], "expected": -40.5}, {"input": [-98.5, -40.0], "expected": -40.0}, {"input": [-98.5, -39.5], "expected": -39.5}, {"input": [-98.5, -39.0], "expected": -39.0}, {"input": [-98.5, -38.5], "expected": -38.5}, {"input": [-98.5, -38.0], "expected": -38.0}, {"input": [-98.5, -37.5], "expected": -37.5}, {"input": [-98.5, -37.0], "expected": -37.0}, {"input": [-98.5, -36.5], "expected": -36.5}, {"input": [-98.5, -36.0], "expected": -36.0}, {"input": [-98.5, -35.5], "expected": -35.5}, {"input": [-98.5, -35.0], "expected": -35.0}, {"input": [-98.5, -34.5], "expected": -34.5}, {"input": [-98.5, -34.0], "expected": -34.0}, {"input": [-98.5, -33.5], "expected": -33.5}, {"input": [-98.5, -33.0], "expected": -33.0}, {"input": [-98.5, -32.5], "expected": -32.5}, {"input": [-98.5, -32.0], "expected": -32.0}, {"input": [-98.5, -31.5], "expected": -31.5}, {"input": [-98.5, -31.0], "expected": -31.0}, {"input": [-98.5, -30.5], "expected": -30.5}, {"input": [-98.5, -30.0], "expected": -30.0}, {"input": [-98.5, -29.5], "expected": -29.5}, {"input": [-98.5, -29.0], "expected": -29.0}, {"input": [-98.5, -28.5], "expected": -28.5}, {"input": [-98.5, -28.0], "expected": -28.0}, {"input": [-98.5, -27.5], "expected": -27.5}, {"input": [-98.5, -27.0], "expected": -27.0}, {"input": [-98.5, -26.5], "expected": -26.5}, {"input": [-98.5, -26.0], "expected": -26.0}, {"input": [-98.5, -25.5], "expected": -25.5}, {"input": [-98.5, -25.0], "expected": -25.0}, {"input": [-98.5, -24.5], "expected": -24.5}, {"input": [-98.5, -24.0], "expected": -24.0}, {"input": [-98.5, -23.5], "expected": -23.5}, {"input": [-98.5, -23.0], "expected": -23.0}, {"input": [-98.5, -22.5], "expected": -22.5}, {"input": [-98.5, -22.0], "expected": -22.0}, {"input": [-98.5, -21.5], "expected": -21.5}, {"input": [-98.5, -21.0], "expected": -21.0}, {"input": [-98.5, -20.5], "expected": -20.5}, {"input": [-98.5, -20.0], "expected": -20.0}, {"input": [-98.5, -19.5], "expected": -19.5}, {"input": [-98.5, -19.0], "expected": -19.0}, {"input": [-98.5, -18.5], "expected": -18.5}, {"input": [-98.5, -18.0], "expected": -18.0}, {"input": [-98.5, -17.5], "expected": -17.5}, {"input": [-98.5, -17.0], "expected": -17.0}, {"input": [-98.5, -16.5], "expected": -16.5}, {"input": [-98.5, -16.0], "expected": -16.0}, {"input": [-98.5, -15.5], "expected": -15.5}, {"input": [-98.5, -15.0], "expected": -15.0}, {"input": [-98.5, -14.5], "expected": -14.5}, {"input": [-98.5, -14.0], "expected": -14.0}, {"input": [-98.5, -13.5], "expected": -13.5}, {"input": [-98.5, -13.0], "expected": -13.0}, {"input": [-98.5, -12.5], "expected": -12.5}, {"input": [-98.5, -12.0], "expected": -12.0}, {"input": [-98.5, -11.5], "expected": -11.5}, {"input": [-98.5, -11.0], "expected": -11.0}, {"input": [-98.5, -10.5], "expected": -10.5}, {"input": [-98.5, -10.0], "expected": -10.0}, {"input": [-98.5, -9.5], "expected": -9.5}, {"input": [-98.5, -9.0], "expected": -9.0}, {"input": [-98.5, -8.5], "expected": -8.5}, {"input": [-98.5, -8.0], "expected": -8.0}, {"input": [-98.5, -7.5], "expected": -7.5}, {"input": [-98.5, -7.0], "expected": -7.0}, {"input": [-98.5, -6.5], "expected": -6.5}, {"input": [-98.5, -6.0], "expected": -6.0}, {"input": [-98.5, -5.5], "expected": -5.5}, {"input": [-98.5, -5.0], "expected": -5.0}, {"input": [-98.5, -4.5], "expected": -4.5}, {"input": [-98.5, -4.0], "expected": -4.0}, {"input": [-98.5, -3.5], "expected": -3.5}, {"input": [-98.5, -3.0], "expected": -3.0}, {"input": [-98.5, -2.5], "expected": -2.5}, {"input": [-98.5, -2.0], "expected": -2.0}, {"input": [-98.5, -1.5], "expected": -1.5}, {"input": [-98.5, -1.0], "expected": -1.0}, {"input": [-98.5, -0.5], "expected": -0.5}, {"input": [-98.5, 0.0], "expected": 1.667222384255979e-43}, {"input": [-98.5, 0.5], "expected": 0.5}, {"input": [-98.5, 1.0], "expected": 1.0}, {"input": [-98.5, 1.5], "expected": 1.5}, {"input": [-98.5, 2.0], "expected": 2.0}, {"input": [-98.5, 2.5], "expected": 2.5}, {"input": [-98.5, 3.0], "expected": 3.0}, {"input": [-98.5, 3.5], "expected": 3.5}, {"input": [-98.5, 4.0], "expected": 4.0}, {"input": [-98.5, 4.5], "expected": 4.5}, {"input": [-98.5, 5.0], "expected": 5.0}, {"input": [-98.5, 5.5], "expected": 5.5}, {"input": [-98.5, 6.0], "expected": 6.0}, {"input": [-98.5, 6.5], "expected": 6.5}, {"input": [-98.5, 7.0], "expected": 7.0}, {"input": [-98.5, 7.5], "expected": 7.5}, {"input": [-98.5, 8.0], "expected": 8.0}, {"input": [-98.5, 8.5], "expected": 8.5}, {"input": [-98.5, 9.0], "expected": 9.0}, {"input": [-98.5, 9.5], "expected": 9.5}, {"input": [-98.5, 10.0], "expected": 10.0}, {"input": [-98.5, 10.5], "expected": 10.5}, {"input": [-98.5, 11.0], "expected": 11.0}, {"input": [-98.5, 11.5], "expected": 11.5}, {"input": [-98.5, 12.0], "expected": 12.0}, {"input": [-98.5, 12.5], "expected": 12.5}, {"input": [-98.5, 13.0], "expected": 13.0}, {"input": [-98.5, 13.5], "expected": 13.5}, {"input": [-98.5, 14.0], "expected": 14.0}, {"input": [-98.5, 14.5], "expected": 14.5}, {"input": [-98.5, 15.0], "expected": 15.0}, {"input": [-98.5, 15.5], "expected": 15.5}, {"input": [-98.5, 16.0], "expected": 16.0}, {"input": [-98.5, 16.5], "expected": 16.5}, {"input": [-98.5, 17.0], "expected": 17.0}, {"input": [-98.5, 17.5], "expected": 17.5}, {"input": [-98.5, 18.0], "expected": 18.0}, {"input": [-98.5, 18.5], "expected": 18.5}, {"input": [-98.5, 19.0], "expected": 19.0}, {"input": [-98.5, 19.5], "expected": 19.5}, {"input": [-98.5, 20.0], "expected": 20.0}, {"input": [-98.5, 20.5], "expected": 20.5}, {"input": [-98.5, 21.0], "expected": 21.0}, {"input": [-98.5, 21.5], "expected": 21.5}, {"input": [-98.5, 22.0], "expected": 22.0}, {"input": [-98.5, 22.5], "expected": 22.5}, {"input": [-98.5, 23.0], "expected": 23.0}, {"input": [-98.5, 23.5], "expected": 23.5}, {"input": [-98.5, 24.0], "expected": 24.0}, {"input": [-98.5, 24.5], "expected": 24.5}, {"input": [-98.5, 25.0], "expected": 25.0}, {"input": [-98.5, 25.5], "expected": 25.5}, {"input": [-98.5, 26.0], "expected": 26.0}, {"input": [-98.5, 26.5], "expected": 26.5}, {"input": [-98.5, 27.0], "expected": 27.0}, {"input": [-98.5, 27.5], "expected": 27.5}, {"input": [-98.5, 28.0], "expected": 28.0}, {"input": [-98.5, 28.5], "expected": 28.5}, {"input": [-98.5, 29.0], "expected": 29.0}, {"input": [-98.5, 29.5], "expected": 29.5}, {"input": [-98.5, 30.0], "expected": 30.0}, {"input": [-98.5, 30.5], "expected": 30.5}, {"input": [-98.5, 31.0], "expected": 31.0}, {"input": [-98.5, 31.5], "expected": 31.5}, {"input": [-98.5, 32.0], "expected": 32.0}, {"input": [-98.5, 32.5], "expected": 32.5}, {"input": [-98.5, 33.0], "expected": 33.0}, {"input": [-98.5, 33.5], "expected": 33.5}, {"input": [-98.5, 34.0], "expected": 34.0}, {"input": [-98.5, 34.5], "expected": 34.5}, {"input": [-98.5, 35.0], "expected": 35.0}, {"input": [-98.5, 35.5], "expected": 35.5}, {"input": [-98.5, 36.0], "expected": 36.0}, {"input": [-98.5, 36.5], "expected": 36.5}, {"input": [-98.5, 37.0], "expected": 37.0}, {"input": [-98.5, 37.5], "expected": 37.5}, {"input": [-98.5, 38.0], "expected": 38.0}, {"input": [-98.5, 38.5], "expected": 38.5}, {"input": [-98.5, 39.0], "expected": 39.0}, {"input": [-98.5, 39.5], "expected": 39.5}, {"input": [-98.5, 40.0], "expected": 40.0}, {"input": [-98.5, 40.5], "expected": 40.5}, {"input": [-98.5, 41.0], "expected": 41.0}, {"input": [-98.5, 41.5], "expected": 41.5}, {"input": [-98.5, 42.0], "expected": 42.0}, {"input": [-98.5, 42.5], "expected": 42.5}, {"input": [-98.5, 43.0], "expected": 43.0}, {"input": [-98.5, 43.5], "expected": 43.5}, {"input": [-98.5, 44.0], "expected": 44.0}, {"input": [-98.5, 44.5], "expected": 44.5}, {"input": [-98.5, 45.0], "expected": 45.0}, {"input": [-98.5, 45.5], "expected": 45.5}, {"input": [-98.5, 46.0], "expected": 46.0}, {"input": [-98.5, 46.5], "expected": 46.5}, {"input": [-98.5, 47.0], "expected": 47.0}, {"input": [-98.5, 47.5], "expected": 47.5}, {"input": [-98.5, 48.0], "expected": 48.0}, {"input": [-98.5, 48.5], "expected": 48.5}, {"input": [-98.5, 49.0], "expected": 49.0}, {"input": [-98.5, 49.5], "expected": 49.5}, {"input": [-98.5, 50.0], "expected": 50.0}, {"input": [-98.5, 50.5], "expected": 50.5}, {"input": [-98.5, 51.0], "expected": 51.0}, {"input": [-98.5, 51.5], "expected": 51.5}, {"input": [-98.5, 52.0], "expected": 52.0}, {"input": [-98.5, 52.5], "expected": 52.5}, {"input": [-98.5, 53.0], "expected": 53.0}, {"input": [-98.5, 53.5], "expected": 53.5}, {"input": [-98.5, 54.0], "expected": 54.0}, {"input": [-98.5, 54.5], "expected": 54.5}, {"input": [-98.5, 55.0], "expected": 55.0}, {"input": [-98.5, 55.5], "expected": 55.5}, {"input": [-98.5, 56.0], "expected": 56.0}, {"input": [-98.5, 56.5], "expected": 56.5}, {"input": [-98.5, 57.0], "expected": 57.0}, {"input": [-98.5, 57.5], "expected": 57.5}, {"input": [-98.5, 58.0], "expected": 58.0}, {"input": [-98.5, 58.5], "expected": 58.5}, {"input": [-98.5, 59.0], "expected": 59.0}, {"input": [-98.5, 59.5], "expected": 59.5}, {"input": [-98.5, 60.0], "expected": 60.0}, {"input": [-98.5, 60.5], "expected": 60.5}, {"input": [-98.5, 61.0], "expected": 61.0}, {"input": [-98.5, 61.5], "expected": 61.5}, {"input": [-98.5, 62.0], "expected": 62.0}, {"input": [-98.5, 62.5], "expected": 62.5}, {"input": [-98.5, 63.0], "expected": 63.0}, {"input": [-98.5, 63.5], "expected": 63.5}, {"input": [-98.5, 64.0], "expected": 64.0}, {"input": [-98.5, 64.5], "expected": 64.5}, {"input": [-98.5, 65.0], "expected": 65.0}, {"input": [-98.5, 65.5], "expected": 65.5}, {"input": [-98.5, 66.0], "expected": 66.0}, {"input": [-98.5, 66.5], "expected": 66.5}, {"input": [-98.5, 67.0], "expected": 67.0}, {"input": [-98.5, 67.5], "expected": 67.5}, {"input": [-98.5, 68.0], "expected": 68.0}, {"input": [-98.5, 68.5], "expected": 68.5}, {"input": [-98.5, 69.0], "expected": 69.0}, {"input": [-98.5, 69.5], "expected": 69.5}, {"input": [-98.5, 70.0], "expected": 70.0}, {"input": [-98.5, 70.5], "expected": 70.5}, {"input": [-98.5, 71.0], "expected": 71.0}, {"input": [-98.5, 71.5], "expected": 71.5}, {"input": [-98.5, 72.0], "expected": 72.0}, {"input": [-98.5, 72.5], "expected": 72.5}, {"input": [-98.5, 73.0], "expected": 73.0}, {"input": [-98.5, 73.5], "expected": 73.5}, {"input": [-98.5, 74.0], "expected": 74.0}, {"input": [-98.5, 74.5], "expected": 74.5}, {"input": [-98.5, 75.0], "expected": 75.0}, {"input": [-98.5, 75.5], "expected": 75.5}, {"input": [-98.5, 76.0], "expected": 76.0}, {"input": [-98.5, 76.5], "expected": 76.5}, {"input": [-98.5, 77.0], "expected": 77.0}, {"input": [-98.5, 77.5], "expected": 77.5}, {"input": [-98.5, 78.0], "expected": 78.0}, {"input": [-98.5, 78.5], "expected": 78.5}, {"input": [-98.5, 79.0], "expected": 79.0}, {"input": [-98.5, 79.5], "expected": 79.5}, {"input": [-98.5, 80.0], "expected": 80.0}, {"input": [-98.5, 80.5], "expected": 80.5}, {"input": [-98.5, 81.0], "expected": 81.0}, {"input": [-98.5, 81.5], "expected": 81.5}, {"input": [-98.5, 82.0], "expected": 82.0}, {"input": [-98.5, 82.5], "expected": 82.5}, {"input": [-98.5, 83.0], "expected": 83.0}, {"input": [-98.5, 83.5], "expected": 83.5}, {"input": [-98.5, 84.0], "expected": 84.0}, {"input": [-98.5, 84.5], "expected": 84.5}, {"input": [-98.5, 85.0], "expected": 85.0}, {"input": [-98.5, 85.5], "expected": 85.5}, {"input": [-98.5, 86.0], "expected": 86.0}, {"input": [-98.5, 86.5], "expected": 86.5}, {"input": [-98.5, 87.0], "expected": 87.0}, {"input": [-98.5, 87.5], "expected": 87.5}, {"input": [-98.5, 88.0], "expected": 88.0}, {"input": [-98.5, 88.5], "expected": 88.5}, {"input": [-98.5, 89.0], "expected": 89.0}, {"input": [-98.5, 89.5], "expected": 89.5}, {"input": [-98.5, 90.0], "expected": 90.0}, {"input": [-98.5, 90.5], "expected": 90.5}, {"input": [-98.5, 91.0], "expected": 91.0}, {"input": [-98.5, 91.5], "expected": 91.5}, {"input": [-98.5, 92.0], "expected": 92.0}, {"input": [-98.5, 92.5], "expected": 92.5}, {"input": [-98.5, 93.0], "expected": 93.0}, {"input": [-98.5, 93.5], "expected": 93.5}, {"input": [-98.5, 94.0], "expected": 94.0}, {"input": [-98.5, 94.5], "expected": 94.5}, {"input": [-98.5, 95.0], "expected": 95.0}, {"input": [-98.5, 95.5], "expected": 95.5}, {"input": [-98.5, 96.0], "expected": 96.0}, {"input": [-98.5, 96.5], "expected": 96.5}, {"input": [-98.5, 97.0], "expected": 97.0}, {"input": [-98.5, 97.5], "expected": 97.5}, {"input": [-98.5, 98.0], "expected": 98.0}, {"input": [-98.5, 98.5], "expected": 98.5}, {"input": [-98.5, 99.0], "expected": 99.0}, {"input": [-98.5, 99.5], "expected": 99.5}, {"input": [-98.0, -100.0], "expected": -97.87307198895702}, {"input": [-98.0, -99.5], "expected": -97.79858672201725}, {"input": [-98.0, -99.0], "expected": -97.68673831248178}, {"input": [-98.0, -98.5], "expected": -97.5259230158199}, {"input": [-98.0, -98.0], "expected": -97.30685281944005}, {"input": [-98.0, -97.5], "expected": -97.0259230158199}, {"input": [-98.0, -97.0], "expected": -96.68673831248178}, {"input": [-98.0, -96.5], "expected": -96.29858672201725}, {"input": [-98.0, -96.0], "expected": -95.87307198895702}, {"input": [-98.0, -95.5], "expected": -95.42111026570745}, {"input": [-98.0, -95.0], "expected": -94.95141264842626}, {"input": [-98.0, -94.5], "expected": -94.47024958172737}, {"input": [-98.0, -94.0], "expected": -93.9818500720822}, {"input": [-98.0, -93.5], "expected": -93.4889522551514}, {"input": [-98.0, -93.0], "expected": -92.99328465151088}, {"input": [-98.0, -92.5], "expected": -92.49592155672943}, {"input": [-98.0, -92.0], "expected": -91.99752431486228}, {"input": [-98.0, -91.5], "expected": -91.49849768984025}, {"input": [-98.0, -91.0], "expected": -90.99908853354623}, {"input": [-98.0, -90.5], "expected": -90.49944706852465}, {"input": [-98.0, -90.0], "expected": -89.9996645936271}, {"input": [-98.0, -89.5], "expected": -89.49979655232787}, {"input": [-98.0, -89.0], "expected": -88.99987659781027}, {"input": [-98.0, -88.5], "expected": -88.49992515097136}, {"input": [-98.0, -88.0], "expected": -87.99995460110078}, {"input": [-98.0, -87.5], "expected": -87.49997246392977}, {"input": [-98.0, -87.0], "expected": -86.99998329843868}, {"input": [-98.0, -86.5], "expected": -86.49998986995772}, {"input": [-98.0, -86.0], "expected": -85.99999385580652}, {"input": [-98.0, -85.5], "expected": -85.49999627335377}, {"input": [-98.0, -85.0], "expected": -84.99999773967315}, {"input": [-98.0, -84.5], "expected": -84.49999862904185}, {"input": [-98.0, -84.0], "expected": -83.99999916847163}, {"input": [-98.0, -83.5], "expected": -83.49999949565246}, {"input": [-98.0, -83.0], "expected": -82.99999969409772}, {"input": [-98.0, -82.5], "expected": -82.49999981446088}, {"input": [-98.0, -82.0], "expected": -81.99999988746484}, {"input": [-98.0, -81.5], "expected": -81.49999993174397}, {"input": [-98.0, -81.0], "expected": -80.99999995860063}, {"input": [-98.0, -80.5], "expected": -80.49999997489}, {"input": [-98.0, -80.0], "expected": -79.99999998477001}, {"input": [-98.0, -79.5], "expected": -79.49999999076255}, {"input": [-98.0, -79.0], "expected": -78.9999999943972}, {"input": [-98.0, -78.5], "expected": -78.49999999660173}, {"input": [-98.0, -78.0], "expected": -77.99999999793884}, {"input": [-98.0, -77.5], "expected": -77.49999999874984}, {"input": [-98.0, -77.0], "expected": -76.99999999924174}, {"input": [-98.0, -76.5], "expected": -76.4999999995401}, {"input": [-98.0, -76.0], "expected": -75.99999999972106}, {"input": [-98.0, -75.5], "expected": -75.4999999998308}, {"input": [-98.0, -75.0], "expected": -74.99999999989738}, {"input": [-98.0, -74.5], "expected": -74.49999999993776}, {"input": [-98.0, -74.0], "expected": -73.99999999996224}, {"input": [-98.0, -73.5], "expected": -73.4999999999771}, {"input": [-98.0, -73.0], "expected": -72.99999999998612}, {"input": [-98.0, -72.5], "expected": -72.49999999999157}, {"input": [-98.0, -72.0], "expected": -71.99999999999488}, {"input": [-98.0, -71.5], "expected": -71.4999999999969}, {"input": [-98.0, -71.0], "expected": -70.99999999999812}, {"input": [-98.0, -70.5], "expected": -70.49999999999886}, {"input": [-98.0, -70.0], "expected": -69.9999999999993}, {"input": [-98.0, -69.5], "expected": -69.49999999999957}, {"input": [-98.0, -69.0], "expected": -68.99999999999974}, {"input": [-98.0, -68.5], "expected": -68.49999999999984}, {"input": [-98.0, -68.0], "expected": -67.9999999999999}, {"input": [-98.0, -67.5], "expected": -67.49999999999994}, {"input": [-98.0, -67.0], "expected": -66.99999999999997}, {"input": [-98.0, -66.5], "expected": -66.49999999999999}, {"input": [-98.0, -66.0], "expected": -65.99999999999999}, {"input": [-98.0, -65.5], "expected": -65.49999999999999}, {"input": [-98.0, -65.0], "expected": -65.0}, {"input": [-98.0, -64.5], "expected": -64.5}, {"input": [-98.0, -64.0], "expected": -64.0}, {"input": [-98.0, -63.5], "expected": -63.5}, {"input": [-98.0, -63.0], "expected": -63.0}, {"input": [-98.0, -62.5], "expected": -62.5}, {"input": [-98.0, -62.0], "expected": -62.0}, {"input": [-98.0, -61.5], "expected": -61.5}, {"input": [-98.0, -61.0], "expected": -61.0}, {"input": [-98.0, -60.5], "expected": -60.5}, {"input": [-98.0, -60.0], "expected": -60.0}, {"input": [-98.0, -59.5], "expected": -59.5}, {"input": [-98.0, -59.0], "expected": -59.0}, {"input": [-98.0, -58.5], "expected": -58.5}, {"input": [-98.0, -58.0], "expected": -58.0}, {"input": [-98.0, -57.5], "expected": -57.5}, {"input": [-98.0, -57.0], "expected": -57.0}, {"input": [-98.0, -56.5], "expected": -56.5}, {"input": [-98.0, -56.0], "expected": -56.0}, {"input": [-98.0, -55.5], "expected": -55.5}, {"input": [-98.0, -55.0], "expected": -55.0}, {"input": [-98.0, -54.5], "expected": -54.5}, {"input": [-98.0, -54.0], "expected": -54.0}, {"input": [-98.0, -53.5], "expected": -53.5}, {"input": [-98.0, -53.0], "expected": -53.0}, {"input": [-98.0, -52.5], "expected": -52.5}, {"input": [-98.0, -52.0], "expected": -52.0}, {"input": [-98.0, -51.5], "expected": -51.5}, {"input": [-98.0, -51.0], "expected": -51.0}, {"input": [-98.0, -50.5], "expected": -50.5}, {"input": [-98.0, -50.0], "expected": -50.0}, {"input": [-98.0, -49.5], "expected": -49.5}, {"input": [-98.0, -49.0], "expected": -49.0}, {"input": [-98.0, -48.5], "expected": -48.5}, {"input": [-98.0, -48.0], "expected": -48.0}, {"input": [-98.0, -47.5], "expected": -47.5}, {"input": [-98.0, -47.0], "expected": -47.0}, {"input": [-98.0, -46.5], "expected": -46.5}, {"input": [-98.0, -46.0], "expected": -46.0}, {"input": [-98.0, -45.5], "expected": -45.5}, {"input": [-98.0, -45.0], "expected": -45.0}, {"input": [-98.0, -44.5], "expected": -44.5}, {"input": [-98.0, -44.0], "expected": -44.0}, {"input": [-98.0, -43.5], "expected": -43.5}, {"input": [-98.0, -43.0], "expected": -43.0}, {"input": [-98.0, -42.5], "expected": -42.5}, {"input": [-98.0, -42.0], "expected": -42.0}, {"input": [-98.0, -41.5], "expected": -41.5}, {"input": [-98.0, -41.0], "expected": -41.0}, {"input": [-98.0, -40.5], "expected": -40.5}, {"input": [-98.0, -40.0], "expected": -40.0}, {"input": [-98.0, -39.5], "expected": -39.5}, {"input": [-98.0, -39.0], "expected": -39.0}, {"input": [-98.0, -38.5], "expected": -38.5}, {"input": [-98.0, -38.0], "expected": -38.0}, {"input": [-98.0, -37.5], "expected": -37.5}, {"input": [-98.0, -37.0], "expected": -37.0}, {"input": [-98.0, -36.5], "expected": -36.5}, {"input": [-98.0, -36.0], "expected": -36.0}, {"input": [-98.0, -35.5], "expected": -35.5}, {"input": [-98.0, -35.0], "expected": -35.0}, {"input": [-98.0, -34.5], "expected": -34.5}, {"input": [-98.0, -34.0], "expected": -34.0}, {"input": [-98.0, -33.5], "expected": -33.5}, {"input": [-98.0, -33.0], "expected": -33.0}, {"input": [-98.0, -32.5], "expected": -32.5}, {"input": [-98.0, -32.0], "expected": -32.0}, {"input": [-98.0, -31.5], "expected": -31.5}, {"input": [-98.0, -31.0], "expected": -31.0}, {"input": [-98.0, -30.5], "expected": -30.5}, {"input": [-98.0, -30.0], "expected": -30.0}, {"input": [-98.0, -29.5], "expected": -29.5}, {"input": [-98.0, -29.0], "expected": -29.0}, {"input": [-98.0, -28.5], "expected": -28.5}, {"input": [-98.0, -28.0], "expected": -28.0}, {"input": [-98.0, -27.5], "expected": -27.5}, {"input": [-98.0, -27.0], "expected": -27.0}, {"input": [-98.0, -26.5], "expected": -26.5}, {"input": [-98.0, -26.0], "expected": -26.0}, {"input": [-98.0, -25.5], "expected": -25.5}, {"input": [-98.0, -25.0], "expected": -25.0}, {"input": [-98.0, -24.5], "expected": -24.5}, {"input": [-98.0, -24.0], "expected": -24.0}, {"input": [-98.0, -23.5], "expected": -23.5}, {"input": [-98.0, -23.0], "expected": -23.0}, {"input": [-98.0, -22.5], "expected": -22.5}, {"input": [-98.0, -22.0], "expected": -22.0}, {"input": [-98.0, -21.5], "expected": -21.5}, {"input": [-98.0, -21.0], "expected": -21.0}, {"input": [-98.0, -20.5], "expected": -20.5}, {"input": [-98.0, -20.0], "expected": -20.0}, {"input": [-98.0, -19.5], "expected": -19.5}, {"input": [-98.0, -19.0], "expected": -19.0}, {"input": [-98.0, -18.5], "expected": -18.5}, {"input": [-98.0, -18.0], "expected": -18.0}, {"input": [-98.0, -17.5], "expected": -17.5}, {"input": [-98.0, -17.0], "expected": -17.0}, {"input": [-98.0, -16.5], "expected": -16.5}, {"input": [-98.0, -16.0], "expected": -16.0}, {"input": [-98.0, -15.5], "expected": -15.5}, {"input": [-98.0, -15.0], "expected": -15.0}, {"input": [-98.0, -14.5], "expected": -14.5}, {"input": [-98.0, -14.0], "expected": -14.0}, {"input": [-98.0, -13.5], "expected": -13.5}, {"input": [-98.0, -13.0], "expected": -13.0}, {"input": [-98.0, -12.5], "expected": -12.5}, {"input": [-98.0, -12.0], "expected": -12.0}, {"input": [-98.0, -11.5], "expected": -11.5}, {"input": [-98.0, -11.0], "expected": -11.0}, {"input": [-98.0, -10.5], "expected": -10.5}, {"input": [-98.0, -10.0], "expected": -10.0}, {"input": [-98.0, -9.5], "expected": -9.5}, {"input": [-98.0, -9.0], "expected": -9.0}, {"input": [-98.0, -8.5], "expected": -8.5}, {"input": [-98.0, -8.0], "expected": -8.0}, {"input": [-98.0, -7.5], "expected": -7.5}, {"input": [-98.0, -7.0], "expected": -7.0}, {"input": [-98.0, -6.5], "expected": -6.5}, {"input": [-98.0, -6.0], "expected": -6.0}, {"input": [-98.0, -5.5], "expected": -5.5}, {"input": [-98.0, -5.0], "expected": -5.0}, {"input": [-98.0, -4.5], "expected": -4.5}, {"input": [-98.0, -4.0], "expected": -4.0}, {"input": [-98.0, -3.5], "expected": -3.5}, {"input": [-98.0, -3.0], "expected": -3.0}, {"input": [-98.0, -2.5], "expected": -2.5}, {"input": [-98.0, -2.0], "expected": -2.0}, {"input": [-98.0, -1.5], "expected": -1.5}, {"input": [-98.0, -1.0], "expected": -1.0}, {"input": [-98.0, -0.5], "expected": -0.5}, {"input": [-98.0, 0.0], "expected": 2.7487850079102147e-43}, {"input": [-98.0, 0.5], "expected": 0.5}, {"input": [-98.0, 1.0], "expected": 1.0}, {"input": [-98.0, 1.5], "expected": 1.5}, {"input": [-98.0, 2.0], "expected": 2.0}, {"input": [-98.0, 2.5], "expected": 2.5}, {"input": [-98.0, 3.0], "expected": 3.0}, {"input": [-98.0, 3.5], "expected": 3.5}, {"input": [-98.0, 4.0], "expected": 4.0}, {"input": [-98.0, 4.5], "expected": 4.5}, {"input": [-98.0, 5.0], "expected": 5.0}, {"input": [-98.0, 5.5], "expected": 5.5}, {"input": [-98.0, 6.0], "expected": 6.0}, {"input": [-98.0, 6.5], "expected": 6.5}, {"input": [-98.0, 7.0], "expected": 7.0}, {"input": [-98.0, 7.5], "expected": 7.5}, {"input": [-98.0, 8.0], "expected": 8.0}, {"input": [-98.0, 8.5], "expected": 8.5}, {"input": [-98.0, 9.0], "expected": 9.0}, {"input": [-98.0, 9.5], "expected": 9.5}, {"input": [-98.0, 10.0], "expected": 10.0}, {"input": [-98.0, 10.5], "expected": 10.5}, {"input": [-98.0, 11.0], "expected": 11.0}, {"input": [-98.0, 11.5], "expected": 11.5}, {"input": [-98.0, 12.0], "expected": 12.0}, {"input": [-98.0, 12.5], "expected": 12.5}, {"input": [-98.0, 13.0], "expected": 13.0}, {"input": [-98.0, 13.5], "expected": 13.5}, {"input": [-98.0, 14.0], "expected": 14.0}, {"input": [-98.0, 14.5], "expected": 14.5}, {"input": [-98.0, 15.0], "expected": 15.0}, {"input": [-98.0, 15.5], "expected": 15.5}, {"input": [-98.0, 16.0], "expected": 16.0}, {"input": [-98.0, 16.5], "expected": 16.5}, {"input": [-98.0, 17.0], "expected": 17.0}, {"input": [-98.0, 17.5], "expected": 17.5}, {"input": [-98.0, 18.0], "expected": 18.0}, {"input": [-98.0, 18.5], "expected": 18.5}, {"input": [-98.0, 19.0], "expected": 19.0}, {"input": [-98.0, 19.5], "expected": 19.5}, {"input": [-98.0, 20.0], "expected": 20.0}, {"input": [-98.0, 20.5], "expected": 20.5}, {"input": [-98.0, 21.0], "expected": 21.0}, {"input": [-98.0, 21.5], "expected": 21.5}, {"input": [-98.0, 22.0], "expected": 22.0}, {"input": [-98.0, 22.5], "expected": 22.5}, {"input": [-98.0, 23.0], "expected": 23.0}, {"input": [-98.0, 23.5], "expected": 23.5}, {"input": [-98.0, 24.0], "expected": 24.0}, {"input": [-98.0, 24.5], "expected": 24.5}, {"input": [-98.0, 25.0], "expected": 25.0}, {"input": [-98.0, 25.5], "expected": 25.5}, {"input": [-98.0, 26.0], "expected": 26.0}, {"input": [-98.0, 26.5], "expected": 26.5}, {"input": [-98.0, 27.0], "expected": 27.0}, {"input": [-98.0, 27.5], "expected": 27.5}, {"input": [-98.0, 28.0], "expected": 28.0}, {"input": [-98.0, 28.5], "expected": 28.5}, {"input": [-98.0, 29.0], "expected": 29.0}, {"input": [-98.0, 29.5], "expected": 29.5}, {"input": [-98.0, 30.0], "expected": 30.0}, {"input": [-98.0, 30.5], "expected": 30.5}, {"input": [-98.0, 31.0], "expected": 31.0}, {"input": [-98.0, 31.5], "expected": 31.5}, {"input": [-98.0, 32.0], "expected": 32.0}, {"input": [-98.0, 32.5], "expected": 32.5}, {"input": [-98.0, 33.0], "expected": 33.0}, {"input": [-98.0, 33.5], "expected": 33.5}, {"input": [-98.0, 34.0], "expected": 34.0}, {"input": [-98.0, 34.5], "expected": 34.5}, {"input": [-98.0, 35.0], "expected": 35.0}, {"input": [-98.0, 35.5], "expected": 35.5}, {"input": [-98.0, 36.0], "expected": 36.0}, {"input": [-98.0, 36.5], "expected": 36.5}, {"input": [-98.0, 37.0], "expected": 37.0}, {"input": [-98.0, 37.5], "expected": 37.5}, {"input": [-98.0, 38.0], "expected": 38.0}, {"input": [-98.0, 38.5], "expected": 38.5}, {"input": [-98.0, 39.0], "expected": 39.0}, {"input": [-98.0, 39.5], "expected": 39.5}, {"input": [-98.0, 40.0], "expected": 40.0}, {"input": [-98.0, 40.5], "expected": 40.5}, {"input": [-98.0, 41.0], "expected": 41.0}, {"input": [-98.0, 41.5], "expected": 41.5}, {"input": [-98.0, 42.0], "expected": 42.0}, {"input": [-98.0, 42.5], "expected": 42.5}, {"input": [-98.0, 43.0], "expected": 43.0}, {"input": [-98.0, 43.5], "expected": 43.5}, {"input": [-98.0, 44.0], "expected": 44.0}, {"input": [-98.0, 44.5], "expected": 44.5}, {"input": [-98.0, 45.0], "expected": 45.0}, {"input": [-98.0, 45.5], "expected": 45.5}, {"input": [-98.0, 46.0], "expected": 46.0}, {"input": [-98.0, 46.5], "expected": 46.5}, {"input": [-98.0, 47.0], "expected": 47.0}, {"input": [-98.0, 47.5], "expected": 47.5}, {"input": [-98.0, 48.0], "expected": 48.0}, {"input": [-98.0, 48.5], "expected": 48.5}, {"input": [-98.0, 49.0], "expected": 49.0}, {"input": [-98.0, 49.5], "expected": 49.5}, {"input": [-98.0, 50.0], "expected": 50.0}, {"input": [-98.0, 50.5], "expected": 50.5}, {"input": [-98.0, 51.0], "expected": 51.0}, {"input": [-98.0, 51.5], "expected": 51.5}, {"input": [-98.0, 52.0], "expected": 52.0}, {"input": [-98.0, 52.5], "expected": 52.5}, {"input": [-98.0, 53.0], "expected": 53.0}, {"input": [-98.0, 53.5], "expected": 53.5}, {"input": [-98.0, 54.0], "expected": 54.0}, {"input": [-98.0, 54.5], "expected": 54.5}, {"input": [-98.0, 55.0], "expected": 55.0}, {"input": [-98.0, 55.5], "expected": 55.5}, {"input": [-98.0, 56.0], "expected": 56.0}, {"input": [-98.0, 56.5], "expected": 56.5}, {"input": [-98.0, 57.0], "expected": 57.0}, {"input": [-98.0, 57.5], "expected": 57.5}, {"input": [-98.0, 58.0], "expected": 58.0}, {"input": [-98.0, 58.5], "expected": 58.5}, {"input": [-98.0, 59.0], "expected": 59.0}, {"input": [-98.0, 59.5], "expected": 59.5}, {"input": [-98.0, 60.0], "expected": 60.0}, {"input": [-98.0, 60.5], "expected": 60.5}, {"input": [-98.0, 61.0], "expected": 61.0}, {"input": [-98.0, 61.5], "expected": 61.5}, {"input": [-98.0, 62.0], "expected": 62.0}, {"input": [-98.0, 62.5], "expected": 62.5}, {"input": [-98.0, 63.0], "expected": 63.0}, {"input": [-98.0, 63.5], "expected": 63.5}, {"input": [-98.0, 64.0], "expected": 64.0}, {"input": [-98.0, 64.5], "expected": 64.5}, {"input": [-98.0, 65.0], "expected": 65.0}, {"input": [-98.0, 65.5], "expected": 65.5}, {"input": [-98.0, 66.0], "expected": 66.0}, {"input": [-98.0, 66.5], "expected": 66.5}, {"input": [-98.0, 67.0], "expected": 67.0}, {"input": [-98.0, 67.5], "expected": 67.5}, {"input": [-98.0, 68.0], "expected": 68.0}, {"input": [-98.0, 68.5], "expected": 68.5}, {"input": [-98.0, 69.0], "expected": 69.0}, {"input": [-98.0, 69.5], "expected": 69.5}, {"input": [-98.0, 70.0], "expected": 70.0}, {"input": [-98.0, 70.5], "expected": 70.5}, {"input": [-98.0, 71.0], "expected": 71.0}, {"input": [-98.0, 71.5], "expected": 71.5}, {"input": [-98.0, 72.0], "expected": 72.0}, {"input": [-98.0, 72.5], "expected": 72.5}, {"input": [-98.0, 73.0], "expected": 73.0}, {"input": [-98.0, 73.5], "expected": 73.5}, {"input": [-98.0, 74.0], "expected": 74.0}, {"input": [-98.0, 74.5], "expected": 74.5}, {"input": [-98.0, 75.0], "expected": 75.0}, {"input": [-98.0, 75.5], "expected": 75.5}, {"input": [-98.0, 76.0], "expected": 76.0}, {"input": [-98.0, 76.5], "expected": 76.5}, {"input": [-98.0, 77.0], "expected": 77.0}, {"input": [-98.0, 77.5], "expected": 77.5}, {"input": [-98.0, 78.0], "expected": 78.0}, {"input": [-98.0, 78.5], "expected": 78.5}, {"input": [-98.0, 79.0], "expected": 79.0}, {"input": [-98.0, 79.5], "expected": 79.5}, {"input": [-98.0, 80.0], "expected": 80.0}, {"input": [-98.0, 80.5], "expected": 80.5}, {"input": [-98.0, 81.0], "expected": 81.0}, {"input": [-98.0, 81.5], "expected": 81.5}, {"input": [-98.0, 82.0], "expected": 82.0}, {"input": [-98.0, 82.5], "expected": 82.5}, {"input": [-98.0, 83.0], "expected": 83.0}, {"input": [-98.0, 83.5], "expected": 83.5}, {"input": [-98.0, 84.0], "expected": 84.0}, {"input": [-98.0, 84.5], "expected": 84.5}, {"input": [-98.0, 85.0], "expected": 85.0}, {"input": [-98.0, 85.5], "expected": 85.5}, {"input": [-98.0, 86.0], "expected": 86.0}, {"input": [-98.0, 86.5], "expected": 86.5}, {"input": [-98.0, 87.0], "expected": 87.0}, {"input": [-98.0, 87.5], "expected": 87.5}, {"input": [-98.0, 88.0], "expected": 88.0}, {"input": [-98.0, 88.5], "expected": 88.5}, {"input": [-98.0, 89.0], "expected": 89.0}, {"input": [-98.0, 89.5], "expected": 89.5}, {"input": [-98.0, 90.0], "expected": 90.0}, {"input": [-98.0, 90.5], "expected": 90.5}, {"input": [-98.0, 91.0], "expected": 91.0}, {"input": [-98.0, 91.5], "expected": 91.5}, {"input": [-98.0, 92.0], "expected": 92.0}, {"input": [-98.0, 92.5], "expected": 92.5}, {"input": [-98.0, 93.0], "expected": 93.0}, {"input": [-98.0, 93.5], "expected": 93.5}, {"input": [-98.0, 94.0], "expected": 94.0}, {"input": [-98.0, 94.5], "expected": 94.5}, {"input": [-98.0, 95.0], "expected": 95.0}, {"input": [-98.0, 95.5], "expected": 95.5}, {"input": [-98.0, 96.0], "expected": 96.0}, {"input": [-98.0, 96.5], "expected": 96.5}, {"input": [-98.0, 97.0], "expected": 97.0}, {"input": [-98.0, 97.5], "expected": 97.5}, {"input": [-98.0, 98.0], "expected": 98.0}, {"input": [-98.0, 98.5], "expected": 98.5}, {"input": [-98.0, 99.0], "expected": 99.0}, {"input": [-98.0, 99.5], "expected": 99.5}, {"input": [-97.5, -100.0], "expected": -97.42111026570745}, {"input": [-97.5, -99.5], "expected": -97.37307198895702}, {"input": [-97.5, -99.0], "expected": -97.29858672201725}, {"input": [-97.5, -98.5], "expected": -97.18673831248178}, {"input": [-97.5, -98.0], "expected": -97.0259230158199}, {"input": [-97.5, -97.5], "expected": -96.80685281944005}, {"input": [-97.5, -97.0], "expected": -96.5259230158199}, {"input": [-97.5, -96.5], "expected": -96.18673831248178}, {"input": [-97.5, -96.0], "expected": -95.79858672201725}, {"input": [-97.5, -95.5], "expected": -95.37307198895702}, {"input": [-97.5, -95.0], "expected": -94.92111026570745}, {"input": [-97.5, -94.5], "expected": -94.45141264842626}, {"input": [-97.5, -94.0], "expected": -93.97024958172737}, {"input": [-97.5, -93.5], "expected": -93.4818500720822}, {"input": [-97.5, -93.0], "expected": -92.9889522551514}, {"input": [-97.5, -92.5], "expected": -92.49328465151088}, {"input": [-97.5, -92.0], "expected": -91.99592155672943}, {"input": [-97.5, -91.5], "expected": -91.49752431486228}, {"input": [-97.5, -91.0], "expected": -90.99849768984025}, {"input": [-97.5, -90.5], "expected": -90.49908853354623}, {"input": [-97.5, -90.0], "expected": -89.99944706852465}, {"input": [-97.5, -89.5], "expected": -89.4996645936271}, {"input": [-97.5, -89.0], "expected": -88.99979655232787}, {"input": [-97.5, -88.5], "expected": -88.49987659781027}, {"input": [-97.5, -88.0], "expected": -87.99992515097136}, {"input": [-97.5, -87.5], "expected": -87.49995460110078}, {"input": [-97.5, -87.0], "expected": -86.99997246392977}, {"input": [-97.5, -86.5], "expected": -86.49998329843868}, {"input": [-97.5, -86.0], "expected": -85.99998986995772}, {"input": [-97.5, -85.5], "expected": -85.49999385580652}, {"input": [-97.5, -85.0], "expected": -84.99999627335377}, {"input": [-97.5, -84.5], "expected": -84.49999773967315}, {"input": [-97.5, -84.0], "expected": -83.99999862904185}, {"input": [-97.5, -83.5], "expected": -83.49999916847163}, {"input": [-97.5, -83.0], "expected": -82.99999949565246}, {"input": [-97.5, -82.5], "expected": -82.49999969409772}, {"input": [-97.5, -82.0], "expected": -81.99999981446088}, {"input": [-97.5, -81.5], "expected": -81.49999988746484}, {"input": [-97.5, -81.0], "expected": -80.99999993174397}, {"input": [-97.5, -80.5], "expected": -80.49999995860063}, {"input": [-97.5, -80.0], "expected": -79.99999997489}, {"input": [-97.5, -79.5], "expected": -79.49999998477001}, {"input": [-97.5, -79.0], "expected": -78.99999999076255}, {"input": [-97.5, -78.5], "expected": -78.4999999943972}, {"input": [-97.5, -78.0], "expected": -77.99999999660173}, {"input": [-97.5, -77.5], "expected": -77.49999999793884}, {"input": [-97.5, -77.0], "expected": -76.99999999874984}, {"input": [-97.5, -76.5], "expected": -76.49999999924174}, {"input": [-97.5, -76.0], "expected": -75.9999999995401}, {"input": [-97.5, -75.5], "expected": -75.49999999972106}, {"input": [-97.5, -75.0], "expected": -74.9999999998308}, {"input": [-97.5, -74.5], "expected": -74.49999999989738}, {"input": [-97.5, -74.0], "expected": -73.99999999993776}, {"input": [-97.5, -73.5], "expected": -73.49999999996224}, {"input": [-97.5, -73.0], "expected": -72.9999999999771}, {"input": [-97.5, -72.5], "expected": -72.49999999998612}, {"input": [-97.5, -72.0], "expected": -71.99999999999157}, {"input": [-97.5, -71.5], "expected": -71.49999999999488}, {"input": [-97.5, -71.0], "expected": -70.9999999999969}, {"input": [-97.5, -70.5], "expected": -70.49999999999812}, {"input": [-97.5, -70.0], "expected": -69.99999999999886}, {"input": [-97.5, -69.5], "expected": -69.4999999999993}, {"input": [-97.5, -69.0], "expected": -68.99999999999957}, {"input": [-97.5, -68.5], "expected": -68.49999999999974}, {"input": [-97.5, -68.0], "expected": -67.99999999999984}, {"input": [-97.5, -67.5], "expected": -67.4999999999999}, {"input": [-97.5, -67.0], "expected": -66.99999999999994}, {"input": [-97.5, -66.5], "expected": -66.49999999999997}, {"input": [-97.5, -66.0], "expected": -65.99999999999999}, {"input": [-97.5, -65.5], "expected": -65.49999999999999}, {"input": [-97.5, -65.0], "expected": -64.99999999999999}, {"input": [-97.5, -64.5], "expected": -64.5}, {"input": [-97.5, -64.0], "expected": -64.0}, {"input": [-97.5, -63.5], "expected": -63.5}, {"input": [-97.5, -63.0], "expected": -63.0}, {"input": [-97.5, -62.5], "expected": -62.5}, {"input": [-97.5, -62.0], "expected": -62.0}, {"input": [-97.5, -61.5], "expected": -61.5}, {"input": [-97.5, -61.0], "expected": -61.0}, {"input": [-97.5, -60.5], "expected": -60.5}, {"input": [-97.5, -60.0], "expected": -60.0}, {"input": [-97.5, -59.5], "expected": -59.5}, {"input": [-97.5, -59.0], "expected": -59.0}, {"input": [-97.5, -58.5], "expected": -58.5}, {"input": [-97.5, -58.0], "expected": -58.0}, {"input": [-97.5, -57.5], "expected": -57.5}, {"input": [-97.5, -57.0], "expected": -57.0}, {"input": [-97.5, -56.5], "expected": -56.5}, {"input": [-97.5, -56.0], "expected": -56.0}, {"input": [-97.5, -55.5], "expected": -55.5}, {"input": [-97.5, -55.0], "expected": -55.0}, {"input": [-97.5, -54.5], "expected": -54.5}, {"input": [-97.5, -54.0], "expected": -54.0}, {"input": [-97.5, -53.5], "expected": -53.5}, {"input": [-97.5, -53.0], "expected": -53.0}, {"input": [-97.5, -52.5], "expected": -52.5}, {"input": [-97.5, -52.0], "expected": -52.0}, {"input": [-97.5, -51.5], "expected": -51.5}, {"input": [-97.5, -51.0], "expected": -51.0}, {"input": [-97.5, -50.5], "expected": -50.5}, {"input": [-97.5, -50.0], "expected": -50.0}, {"input": [-97.5, -49.5], "expected": -49.5}, {"input": [-97.5, -49.0], "expected": -49.0}, {"input": [-97.5, -48.5], "expected": -48.5}, {"input": [-97.5, -48.0], "expected": -48.0}, {"input": [-97.5, -47.5], "expected": -47.5}, {"input": [-97.5, -47.0], "expected": -47.0}, {"input": [-97.5, -46.5], "expected": -46.5}, {"input": [-97.5, -46.0], "expected": -46.0}, {"input": [-97.5, -45.5], "expected": -45.5}, {"input": [-97.5, -45.0], "expected": -45.0}, {"input": [-97.5, -44.5], "expected": -44.5}, {"input": [-97.5, -44.0], "expected": -44.0}, {"input": [-97.5, -43.5], "expected": -43.5}, {"input": [-97.5, -43.0], "expected": -43.0}, {"input": [-97.5, -42.5], "expected": -42.5}, {"input": [-97.5, -42.0], "expected": -42.0}, {"input": [-97.5, -41.5], "expected": -41.5}, {"input": [-97.5, -41.0], "expected": -41.0}, {"input": [-97.5, -40.5], "expected": -40.5}, {"input": [-97.5, -40.0], "expected": -40.0}, {"input": [-97.5, -39.5], "expected": -39.5}, {"input": [-97.5, -39.0], "expected": -39.0}, {"input": [-97.5, -38.5], "expected": -38.5}, {"input": [-97.5, -38.0], "expected": -38.0}, {"input": [-97.5, -37.5], "expected": -37.5}, {"input": [-97.5, -37.0], "expected": -37.0}, {"input": [-97.5, -36.5], "expected": -36.5}, {"input": [-97.5, -36.0], "expected": -36.0}, {"input": [-97.5, -35.5], "expected": -35.5}, {"input": [-97.5, -35.0], "expected": -35.0}, {"input": [-97.5, -34.5], "expected": -34.5}, {"input": [-97.5, -34.0], "expected": -34.0}, {"input": [-97.5, -33.5], "expected": -33.5}, {"input": [-97.5, -33.0], "expected": -33.0}, {"input": [-97.5, -32.5], "expected": -32.5}, {"input": [-97.5, -32.0], "expected": -32.0}, {"input": [-97.5, -31.5], "expected": -31.5}, {"input": [-97.5, -31.0], "expected": -31.0}, {"input": [-97.5, -30.5], "expected": -30.5}, {"input": [-97.5, -30.0], "expected": -30.0}, {"input": [-97.5, -29.5], "expected": -29.5}, {"input": [-97.5, -29.0], "expected": -29.0}, {"input": [-97.5, -28.5], "expected": -28.5}, {"input": [-97.5, -28.0], "expected": -28.0}, {"input": [-97.5, -27.5], "expected": -27.5}, {"input": [-97.5, -27.0], "expected": -27.0}, {"input": [-97.5, -26.5], "expected": -26.5}, {"input": [-97.5, -26.0], "expected": -26.0}, {"input": [-97.5, -25.5], "expected": -25.5}, {"input": [-97.5, -25.0], "expected": -25.0}, {"input": [-97.5, -24.5], "expected": -24.5}, {"input": [-97.5, -24.0], "expected": -24.0}, {"input": [-97.5, -23.5], "expected": -23.5}, {"input": [-97.5, -23.0], "expected": -23.0}, {"input": [-97.5, -22.5], "expected": -22.5}, {"input": [-97.5, -22.0], "expected": -22.0}, {"input": [-97.5, -21.5], "expected": -21.5}, {"input": [-97.5, -21.0], "expected": -21.0}, {"input": [-97.5, -20.5], "expected": -20.5}, {"input": [-97.5, -20.0], "expected": -20.0}, {"input": [-97.5, -19.5], "expected": -19.5}, {"input": [-97.5, -19.0], "expected": -19.0}, {"input": [-97.5, -18.5], "expected": -18.5}, {"input": [-97.5, -18.0], "expected": -18.0}, {"input": [-97.5, -17.5], "expected": -17.5}, {"input": [-97.5, -17.0], "expected": -17.0}, {"input": [-97.5, -16.5], "expected": -16.5}, {"input": [-97.5, -16.0], "expected": -16.0}, {"input": [-97.5, -15.5], "expected": -15.5}, {"input": [-97.5, -15.0], "expected": -15.0}, {"input": [-97.5, -14.5], "expected": -14.5}, {"input": [-97.5, -14.0], "expected": -14.0}, {"input": [-97.5, -13.5], "expected": -13.5}, {"input": [-97.5, -13.0], "expected": -13.0}, {"input": [-97.5, -12.5], "expected": -12.5}, {"input": [-97.5, -12.0], "expected": -12.0}, {"input": [-97.5, -11.5], "expected": -11.5}, {"input": [-97.5, -11.0], "expected": -11.0}, {"input": [-97.5, -10.5], "expected": -10.5}, {"input": [-97.5, -10.0], "expected": -10.0}, {"input": [-97.5, -9.5], "expected": -9.5}, {"input": [-97.5, -9.0], "expected": -9.0}, {"input": [-97.5, -8.5], "expected": -8.5}, {"input": [-97.5, -8.0], "expected": -8.0}, {"input": [-97.5, -7.5], "expected": -7.5}, {"input": [-97.5, -7.0], "expected": -7.0}, {"input": [-97.5, -6.5], "expected": -6.5}, {"input": [-97.5, -6.0], "expected": -6.0}, {"input": [-97.5, -5.5], "expected": -5.5}, {"input": [-97.5, -5.0], "expected": -5.0}, {"input": [-97.5, -4.5], "expected": -4.5}, {"input": [-97.5, -4.0], "expected": -4.0}, {"input": [-97.5, -3.5], "expected": -3.5}, {"input": [-97.5, -3.0], "expected": -3.0}, {"input": [-97.5, -2.5], "expected": -2.5}, {"input": [-97.5, -2.0], "expected": -2.0}, {"input": [-97.5, -1.5], "expected": -1.5}, {"input": [-97.5, -1.0], "expected": -1.0}, {"input": [-97.5, -0.5], "expected": -0.5}, {"input": [-97.5, 0.0], "expected": 4.5319803111231915e-43}, {"input": [-97.5, 0.5], "expected": 0.5}, {"input": [-97.5, 1.0], "expected": 1.0}, {"input": [-97.5, 1.5], "expected": 1.5}, {"input": [-97.5, 2.0], "expected": 2.0}, {"input": [-97.5, 2.5], "expected": 2.5}, {"input": [-97.5, 3.0], "expected": 3.0}, {"input": [-97.5, 3.5], "expected": 3.5}, {"input": [-97.5, 4.0], "expected": 4.0}, {"input": [-97.5, 4.5], "expected": 4.5}, {"input": [-97.5, 5.0], "expected": 5.0}, {"input": [-97.5, 5.5], "expected": 5.5}, {"input": [-97.5, 6.0], "expected": 6.0}, {"input": [-97.5, 6.5], "expected": 6.5}, {"input": [-97.5, 7.0], "expected": 7.0}, {"input": [-97.5, 7.5], "expected": 7.5}, {"input": [-97.5, 8.0], "expected": 8.0}, {"input": [-97.5, 8.5], "expected": 8.5}, {"input": [-97.5, 9.0], "expected": 9.0}, {"input": [-97.5, 9.5], "expected": 9.5}, {"input": [-97.5, 10.0], "expected": 10.0}, {"input": [-97.5, 10.5], "expected": 10.5}, {"input": [-97.5, 11.0], "expected": 11.0}, {"input": [-97.5, 11.5], "expected": 11.5}, {"input": [-97.5, 12.0], "expected": 12.0}, {"input": [-97.5, 12.5], "expected": 12.5}, {"input": [-97.5, 13.0], "expected": 13.0}, {"input": [-97.5, 13.5], "expected": 13.5}, {"input": [-97.5, 14.0], "expected": 14.0}, {"input": [-97.5, 14.5], "expected": 14.5}, {"input": [-97.5, 15.0], "expected": 15.0}, {"input": [-97.5, 15.5], "expected": 15.5}, {"input": [-97.5, 16.0], "expected": 16.0}, {"input": [-97.5, 16.5], "expected": 16.5}, {"input": [-97.5, 17.0], "expected": 17.0}, {"input": [-97.5, 17.5], "expected": 17.5}, {"input": [-97.5, 18.0], "expected": 18.0}, {"input": [-97.5, 18.5], "expected": 18.5}, {"input": [-97.5, 19.0], "expected": 19.0}, {"input": [-97.5, 19.5], "expected": 19.5}, {"input": [-97.5, 20.0], "expected": 20.0}, {"input": [-97.5, 20.5], "expected": 20.5}, {"input": [-97.5, 21.0], "expected": 21.0}, {"input": [-97.5, 21.5], "expected": 21.5}, {"input": [-97.5, 22.0], "expected": 22.0}, {"input": [-97.5, 22.5], "expected": 22.5}, {"input": [-97.5, 23.0], "expected": 23.0}, {"input": [-97.5, 23.5], "expected": 23.5}, {"input": [-97.5, 24.0], "expected": 24.0}, {"input": [-97.5, 24.5], "expected": 24.5}, {"input": [-97.5, 25.0], "expected": 25.0}, {"input": [-97.5, 25.5], "expected": 25.5}, {"input": [-97.5, 26.0], "expected": 26.0}, {"input": [-97.5, 26.5], "expected": 26.5}, {"input": [-97.5, 27.0], "expected": 27.0}, {"input": [-97.5, 27.5], "expected": 27.5}, {"input": [-97.5, 28.0], "expected": 28.0}, {"input": [-97.5, 28.5], "expected": 28.5}, {"input": [-97.5, 29.0], "expected": 29.0}, {"input": [-97.5, 29.5], "expected": 29.5}, {"input": [-97.5, 30.0], "expected": 30.0}, {"input": [-97.5, 30.5], "expected": 30.5}, {"input": [-97.5, 31.0], "expected": 31.0}, {"input": [-97.5, 31.5], "expected": 31.5}, {"input": [-97.5, 32.0], "expected": 32.0}, {"input": [-97.5, 32.5], "expected": 32.5}, {"input": [-97.5, 33.0], "expected": 33.0}, {"input": [-97.5, 33.5], "expected": 33.5}, {"input": [-97.5, 34.0], "expected": 34.0}, {"input": [-97.5, 34.5], "expected": 34.5}, {"input": [-97.5, 35.0], "expected": 35.0}, {"input": [-97.5, 35.5], "expected": 35.5}, {"input": [-97.5, 36.0], "expected": 36.0}, {"input": [-97.5, 36.5], "expected": 36.5}, {"input": [-97.5, 37.0], "expected": 37.0}, {"input": [-97.5, 37.5], "expected": 37.5}, {"input": [-97.5, 38.0], "expected": 38.0}, {"input": [-97.5, 38.5], "expected": 38.5}, {"input": [-97.5, 39.0], "expected": 39.0}, {"input": [-97.5, 39.5], "expected": 39.5}, {"input": [-97.5, 40.0], "expected": 40.0}, {"input": [-97.5, 40.5], "expected": 40.5}, {"input": [-97.5, 41.0], "expected": 41.0}, {"input": [-97.5, 41.5], "expected": 41.5}, {"input": [-97.5, 42.0], "expected": 42.0}, {"input": [-97.5, 42.5], "expected": 42.5}, {"input": [-97.5, 43.0], "expected": 43.0}, {"input": [-97.5, 43.5], "expected": 43.5}, {"input": [-97.5, 44.0], "expected": 44.0}, {"input": [-97.5, 44.5], "expected": 44.5}, {"input": [-97.5, 45.0], "expected": 45.0}, {"input": [-97.5, 45.5], "expected": 45.5}, {"input": [-97.5, 46.0], "expected": 46.0}, {"input": [-97.5, 46.5], "expected": 46.5}, {"input": [-97.5, 47.0], "expected": 47.0}, {"input": [-97.5, 47.5], "expected": 47.5}, {"input": [-97.5, 48.0], "expected": 48.0}, {"input": [-97.5, 48.5], "expected": 48.5}, {"input": [-97.5, 49.0], "expected": 49.0}, {"input": [-97.5, 49.5], "expected": 49.5}, {"input": [-97.5, 50.0], "expected": 50.0}, {"input": [-97.5, 50.5], "expected": 50.5}, {"input": [-97.5, 51.0], "expected": 51.0}, {"input": [-97.5, 51.5], "expected": 51.5}, {"input": [-97.5, 52.0], "expected": 52.0}, {"input": [-97.5, 52.5], "expected": 52.5}, {"input": [-97.5, 53.0], "expected": 53.0}, {"input": [-97.5, 53.5], "expected": 53.5}, {"input": [-97.5, 54.0], "expected": 54.0}, {"input": [-97.5, 54.5], "expected": 54.5}, {"input": [-97.5, 55.0], "expected": 55.0}, {"input": [-97.5, 55.5], "expected": 55.5}, {"input": [-97.5, 56.0], "expected": 56.0}, {"input": [-97.5, 56.5], "expected": 56.5}, {"input": [-97.5, 57.0], "expected": 57.0}, {"input": [-97.5, 57.5], "expected": 57.5}, {"input": [-97.5, 58.0], "expected": 58.0}, {"input": [-97.5, 58.5], "expected": 58.5}, {"input": [-97.5, 59.0], "expected": 59.0}, {"input": [-97.5, 59.5], "expected": 59.5}, {"input": [-97.5, 60.0], "expected": 60.0}, {"input": [-97.5, 60.5], "expected": 60.5}, {"input": [-97.5, 61.0], "expected": 61.0}, {"input": [-97.5, 61.5], "expected": 61.5}, {"input": [-97.5, 62.0], "expected": 62.0}, {"input": [-97.5, 62.5], "expected": 62.5}, {"input": [-97.5, 63.0], "expected": 63.0}, {"input": [-97.5, 63.5], "expected": 63.5}, {"input": [-97.5, 64.0], "expected": 64.0}, {"input": [-97.5, 64.5], "expected": 64.5}, {"input": [-97.5, 65.0], "expected": 65.0}, {"input": [-97.5, 65.5], "expected": 65.5}, {"input": [-97.5, 66.0], "expected": 66.0}, {"input": [-97.5, 66.5], "expected": 66.5}, {"input": [-97.5, 67.0], "expected": 67.0}, {"input": [-97.5, 67.5], "expected": 67.5}, {"input": [-97.5, 68.0], "expected": 68.0}, {"input": [-97.5, 68.5], "expected": 68.5}, {"input": [-97.5, 69.0], "expected": 69.0}, {"input": [-97.5, 69.5], "expected": 69.5}, {"input": [-97.5, 70.0], "expected": 70.0}, {"input": [-97.5, 70.5], "expected": 70.5}, {"input": [-97.5, 71.0], "expected": 71.0}, {"input": [-97.5, 71.5], "expected": 71.5}, {"input": [-97.5, 72.0], "expected": 72.0}, {"input": [-97.5, 72.5], "expected": 72.5}, {"input": [-97.5, 73.0], "expected": 73.0}, {"input": [-97.5, 73.5], "expected": 73.5}, {"input": [-97.5, 74.0], "expected": 74.0}, {"input": [-97.5, 74.5], "expected": 74.5}, {"input": [-97.5, 75.0], "expected": 75.0}, {"input": [-97.5, 75.5], "expected": 75.5}, {"input": [-97.5, 76.0], "expected": 76.0}, {"input": [-97.5, 76.5], "expected": 76.5}, {"input": [-97.5, 77.0], "expected": 77.0}, {"input": [-97.5, 77.5], "expected": 77.5}, {"input": [-97.5, 78.0], "expected": 78.0}, {"input": [-97.5, 78.5], "expected": 78.5}, {"input": [-97.5, 79.0], "expected": 79.0}, {"input": [-97.5, 79.5], "expected": 79.5}, {"input": [-97.5, 80.0], "expected": 80.0}, {"input": [-97.5, 80.5], "expected": 80.5}, {"input": [-97.5, 81.0], "expected": 81.0}, {"input": [-97.5, 81.5], "expected": 81.5}, {"input": [-97.5, 82.0], "expected": 82.0}, {"input": [-97.5, 82.5], "expected": 82.5}, {"input": [-97.5, 83.0], "expected": 83.0}, {"input": [-97.5, 83.5], "expected": 83.5}, {"input": [-97.5, 84.0], "expected": 84.0}, {"input": [-97.5, 84.5], "expected": 84.5}, {"input": [-97.5, 85.0], "expected": 85.0}, {"input": [-97.5, 85.5], "expected": 85.5}, {"input": [-97.5, 86.0], "expected": 86.0}, {"input": [-97.5, 86.5], "expected": 86.5}, {"input": [-97.5, 87.0], "expected": 87.0}, {"input": [-97.5, 87.5], "expected": 87.5}, {"input": [-97.5, 88.0], "expected": 88.0}, {"input": [-97.5, 88.5], "expected": 88.5}, {"input": [-97.5, 89.0], "expected": 89.0}, {"input": [-97.5, 89.5], "expected": 89.5}, {"input": [-97.5, 90.0], "expected": 90.0}, {"input": [-97.5, 90.5], "expected": 90.5}, {"input": [-97.5, 91.0], "expected": 91.0}, {"input": [-97.5, 91.5], "expected": 91.5}, {"input": [-97.5, 92.0], "expected": 92.0}, {"input": [-97.5, 92.5], "expected": 92.5}, {"input": [-97.5, 93.0], "expected": 93.0}, {"input": [-97.5, 93.5], "expected": 93.5}, {"input": [-97.5, 94.0], "expected": 94.0}, {"input": [-97.5, 94.5], "expected": 94.5}, {"input": [-97.5, 95.0], "expected": 95.0}, {"input": [-97.5, 95.5], "expected": 95.5}, {"input": [-97.5, 96.0], "expected": 96.0}, {"input": [-97.5, 96.5], "expected": 96.5}, {"input": [-97.5, 97.0], "expected": 97.0}, {"input": [-97.5, 97.5], "expected": 97.5}, {"input": [-97.5, 98.0], "expected": 98.0}, {"input": [-97.5, 98.5], "expected": 98.5}, {"input": [-97.5, 99.0], "expected": 99.0}, {"input": [-97.5, 99.5], "expected": 99.5}, {"input": [-97.0, -100.0], "expected": -96.95141264842626}, {"input": [-97.0, -99.5], "expected": -96.92111026570745}, {"input": [-97.0, -99.0], "expected": -96.87307198895702}, {"input": [-97.0, -98.5], "expected": -96.79858672201725}, {"input": [-97.0, -98.0], "expected": -96.68673831248178}, {"input": [-97.0, -97.5], "expected": -96.5259230158199}, {"input": [-97.0, -97.0], "expected": -96.30685281944005}, {"input": [-97.0, -96.5], "expected": -96.0259230158199}, {"input": [-97.0, -96.0], "expected": -95.68673831248178}, {"input": [-97.0, -95.5], "expected": -95.29858672201725}, {"input": [-97.0, -95.0], "expected": -94.87307198895702}, {"input": [-97.0, -94.5], "expected": -94.42111026570745}, {"input": [-97.0, -94.0], "expected": -93.95141264842626}, {"input": [-97.0, -93.5], "expected": -93.47024958172737}, {"input": [-97.0, -93.0], "expected": -92.9818500720822}, {"input": [-97.0, -92.5], "expected": -92.4889522551514}, {"input": [-97.0, -92.0], "expected": -91.99328465151088}, {"input": [-97.0, -91.5], "expected": -91.49592155672943}, {"input": [-97.0, -91.0], "expected": -90.99752431486228}, {"input": [-97.0, -90.5], "expected": -90.49849768984025}, {"input": [-97.0, -90.0], "expected": -89.99908853354623}, {"input": [-97.0, -89.5], "expected": -89.49944706852465}, {"input": [-97.0, -89.0], "expected": -88.9996645936271}, {"input": [-97.0, -88.5], "expected": -88.49979655232787}, {"input": [-97.0, -88.0], "expected": -87.99987659781027}, {"input": [-97.0, -87.5], "expected": -87.49992515097136}, {"input": [-97.0, -87.0], "expected": -86.99995460110078}, {"input": [-97.0, -86.5], "expected": -86.49997246392977}, {"input": [-97.0, -86.0], "expected": -85.99998329843868}, {"input": [-97.0, -85.5], "expected": -85.49998986995772}, {"input": [-97.0, -85.0], "expected": -84.99999385580652}, {"input": [-97.0, -84.5], "expected": -84.49999627335377}, {"input": [-97.0, -84.0], "expected": -83.99999773967315}, {"input": [-97.0, -83.5], "expected": -83.49999862904185}, {"input": [-97.0, -83.0], "expected": -82.99999916847163}, {"input": [-97.0, -82.5], "expected": -82.49999949565246}, {"input": [-97.0, -82.0], "expected": -81.99999969409772}, {"input": [-97.0, -81.5], "expected": -81.49999981446088}, {"input": [-97.0, -81.0], "expected": -80.99999988746484}, {"input": [-97.0, -80.5], "expected": -80.49999993174397}, {"input": [-97.0, -80.0], "expected": -79.99999995860063}, {"input": [-97.0, -79.5], "expected": -79.49999997489}, {"input": [-97.0, -79.0], "expected": -78.99999998477001}, {"input": [-97.0, -78.5], "expected": -78.49999999076255}, {"input": [-97.0, -78.0], "expected": -77.9999999943972}, {"input": [-97.0, -77.5], "expected": -77.49999999660173}, {"input": [-97.0, -77.0], "expected": -76.99999999793884}, {"input": [-97.0, -76.5], "expected": -76.49999999874984}, {"input": [-97.0, -76.0], "expected": -75.99999999924174}, {"input": [-97.0, -75.5], "expected": -75.4999999995401}, {"input": [-97.0, -75.0], "expected": -74.99999999972106}, {"input": [-97.0, -74.5], "expected": -74.4999999998308}, {"input": [-97.0, -74.0], "expected": -73.99999999989738}, {"input": [-97.0, -73.5], "expected": -73.49999999993776}, {"input": [-97.0, -73.0], "expected": -72.99999999996224}, {"input": [-97.0, -72.5], "expected": -72.4999999999771}, {"input": [-97.0, -72.0], "expected": -71.99999999998612}, {"input": [-97.0, -71.5], "expected": -71.49999999999157}, {"input": [-97.0, -71.0], "expected": -70.99999999999488}, {"input": [-97.0, -70.5], "expected": -70.4999999999969}, {"input": [-97.0, -70.0], "expected": -69.99999999999812}, {"input": [-97.0, -69.5], "expected": -69.49999999999886}, {"input": [-97.0, -69.0], "expected": -68.9999999999993}, {"input": [-97.0, -68.5], "expected": -68.49999999999957}, {"input": [-97.0, -68.0], "expected": -67.99999999999974}, {"input": [-97.0, -67.5], "expected": -67.49999999999984}, {"input": [-97.0, -67.0], "expected": -66.9999999999999}, {"input": [-97.0, -66.5], "expected": -66.49999999999994}, {"input": [-97.0, -66.0], "expected": -65.99999999999997}, {"input": [-97.0, -65.5], "expected": -65.49999999999999}, {"input": [-97.0, -65.0], "expected": -64.99999999999999}, {"input": [-97.0, -64.5], "expected": -64.49999999999999}, {"input": [-97.0, -64.0], "expected": -63.99999999999999}, {"input": [-97.0, -63.5], "expected": -63.5}, {"input": [-97.0, -63.0], "expected": -63.0}, {"input": [-97.0, -62.5], "expected": -62.5}, {"input": [-97.0, -62.0], "expected": -62.0}, {"input": [-97.0, -61.5], "expected": -61.5}, {"input": [-97.0, -61.0], "expected": -61.0}, {"input": [-97.0, -60.5], "expected": -60.5}, {"input": [-97.0, -60.0], "expected": -60.0}, {"input": [-97.0, -59.5], "expected": -59.5}, {"input": [-97.0, -59.0], "expected": -59.0}, {"input": [-97.0, -58.5], "expected": -58.5}, {"input": [-97.0, -58.0], "expected": -58.0}, {"input": [-97.0, -57.5], "expected": -57.5}, {"input": [-97.0, -57.0], "expected": -57.0}, {"input": [-97.0, -56.5], "expected": -56.5}, {"input": [-97.0, -56.0], "expected": -56.0}, {"input": [-97.0, -55.5], "expected": -55.5}, {"input": [-97.0, -55.0], "expected": -55.0}, {"input": [-97.0, -54.5], "expected": -54.5}, {"input": [-97.0, -54.0], "expected": -54.0}, {"input": [-97.0, -53.5], "expected": -53.5}, {"input": [-97.0, -53.0], "expected": -53.0}, {"input": [-97.0, -52.5], "expected": -52.5}, {"input": [-97.0, -52.0], "expected": -52.0}, {"input": [-97.0, -51.5], "expected": -51.5}, {"input": [-97.0, -51.0], "expected": -51.0}, {"input": [-97.0, -50.5], "expected": -50.5}, {"input": [-97.0, -50.0], "expected": -50.0}, {"input": [-97.0, -49.5], "expected": -49.5}, {"input": [-97.0, -49.0], "expected": -49.0}, {"input": [-97.0, -48.5], "expected": -48.5}, {"input": [-97.0, -48.0], "expected": -48.0}, {"input": [-97.0, -47.5], "expected": -47.5}, {"input": [-97.0, -47.0], "expected": -47.0}, {"input": [-97.0, -46.5], "expected": -46.5}, {"input": [-97.0, -46.0], "expected": -46.0}, {"input": [-97.0, -45.5], "expected": -45.5}, {"input": [-97.0, -45.0], "expected": -45.0}, {"input": [-97.0, -44.5], "expected": -44.5}, {"input": [-97.0, -44.0], "expected": -44.0}, {"input": [-97.0, -43.5], "expected": -43.5}, {"input": [-97.0, -43.0], "expected": -43.0}, {"input": [-97.0, -42.5], "expected": -42.5}, {"input": [-97.0, -42.0], "expected": -42.0}, {"input": [-97.0, -41.5], "expected": -41.5}, {"input": [-97.0, -41.0], "expected": -41.0}, {"input": [-97.0, -40.5], "expected": -40.5}, {"input": [-97.0, -40.0], "expected": -40.0}, {"input": [-97.0, -39.5], "expected": -39.5}, {"input": [-97.0, -39.0], "expected": -39.0}, {"input": [-97.0, -38.5], "expected": -38.5}, {"input": [-97.0, -38.0], "expected": -38.0}, {"input": [-97.0, -37.5], "expected": -37.5}, {"input": [-97.0, -37.0], "expected": -37.0}, {"input": [-97.0, -36.5], "expected": -36.5}, {"input": [-97.0, -36.0], "expected": -36.0}, {"input": [-97.0, -35.5], "expected": -35.5}, {"input": [-97.0, -35.0], "expected": -35.0}, {"input": [-97.0, -34.5], "expected": -34.5}, {"input": [-97.0, -34.0], "expected": -34.0}, {"input": [-97.0, -33.5], "expected": -33.5}, {"input": [-97.0, -33.0], "expected": -33.0}, {"input": [-97.0, -32.5], "expected": -32.5}, {"input": [-97.0, -32.0], "expected": -32.0}, {"input": [-97.0, -31.5], "expected": -31.5}, {"input": [-97.0, -31.0], "expected": -31.0}, {"input": [-97.0, -30.5], "expected": -30.5}, {"input": [-97.0, -30.0], "expected": -30.0}, {"input": [-97.0, -29.5], "expected": -29.5}, {"input": [-97.0, -29.0], "expected": -29.0}, {"input": [-97.0, -28.5], "expected": -28.5}, {"input": [-97.0, -28.0], "expected": -28.0}, {"input": [-97.0, -27.5], "expected": -27.5}, {"input": [-97.0, -27.0], "expected": -27.0}, {"input": [-97.0, -26.5], "expected": -26.5}, {"input": [-97.0, -26.0], "expected": -26.0}, {"input": [-97.0, -25.5], "expected": -25.5}, {"input": [-97.0, -25.0], "expected": -25.0}, {"input": [-97.0, -24.5], "expected": -24.5}, {"input": [-97.0, -24.0], "expected": -24.0}, {"input": [-97.0, -23.5], "expected": -23.5}, {"input": [-97.0, -23.0], "expected": -23.0}, {"input": [-97.0, -22.5], "expected": -22.5}, {"input": [-97.0, -22.0], "expected": -22.0}, {"input": [-97.0, -21.5], "expected": -21.5}, {"input": [-97.0, -21.0], "expected": -21.0}, {"input": [-97.0, -20.5], "expected": -20.5}, {"input": [-97.0, -20.0], "expected": -20.0}, {"input": [-97.0, -19.5], "expected": -19.5}, {"input": [-97.0, -19.0], "expected": -19.0}, {"input": [-97.0, -18.5], "expected": -18.5}, {"input": [-97.0, -18.0], "expected": -18.0}, {"input": [-97.0, -17.5], "expected": -17.5}, {"input": [-97.0, -17.0], "expected": -17.0}, {"input": [-97.0, -16.5], "expected": -16.5}, {"input": [-97.0, -16.0], "expected": -16.0}, {"input": [-97.0, -15.5], "expected": -15.5}, {"input": [-97.0, -15.0], "expected": -15.0}, {"input": [-97.0, -14.5], "expected": -14.5}, {"input": [-97.0, -14.0], "expected": -14.0}, {"input": [-97.0, -13.5], "expected": -13.5}, {"input": [-97.0, -13.0], "expected": -13.0}, {"input": [-97.0, -12.5], "expected": -12.5}, {"input": [-97.0, -12.0], "expected": -12.0}, {"input": [-97.0, -11.5], "expected": -11.5}, {"input": [-97.0, -11.0], "expected": -11.0}, {"input": [-97.0, -10.5], "expected": -10.5}, {"input": [-97.0, -10.0], "expected": -10.0}, {"input": [-97.0, -9.5], "expected": -9.5}, {"input": [-97.0, -9.0], "expected": -9.0}, {"input": [-97.0, -8.5], "expected": -8.5}, {"input": [-97.0, -8.0], "expected": -8.0}, {"input": [-97.0, -7.5], "expected": -7.5}, {"input": [-97.0, -7.0], "expected": -7.0}, {"input": [-97.0, -6.5], "expected": -6.5}, {"input": [-97.0, -6.0], "expected": -6.0}, {"input": [-97.0, -5.5], "expected": -5.5}, {"input": [-97.0, -5.0], "expected": -5.0}, {"input": [-97.0, -4.5], "expected": -4.5}, {"input": [-97.0, -4.0], "expected": -4.0}, {"input": [-97.0, -3.5], "expected": -3.5}, {"input": [-97.0, -3.0], "expected": -3.0}, {"input": [-97.0, -2.5], "expected": -2.5}, {"input": [-97.0, -2.0], "expected": -2.0}, {"input": [-97.0, -1.5], "expected": -1.5}, {"input": [-97.0, -1.0], "expected": -1.0}, {"input": [-97.0, -0.5], "expected": -0.5}, {"input": [-97.0, 0.0], "expected": 7.47197233734299e-43}, {"input": [-97.0, 0.5], "expected": 0.5}, {"input": [-97.0, 1.0], "expected": 1.0}, {"input": [-97.0, 1.5], "expected": 1.5}, {"input": [-97.0, 2.0], "expected": 2.0}, {"input": [-97.0, 2.5], "expected": 2.5}, {"input": [-97.0, 3.0], "expected": 3.0}, {"input": [-97.0, 3.5], "expected": 3.5}, {"input": [-97.0, 4.0], "expected": 4.0}, {"input": [-97.0, 4.5], "expected": 4.5}, {"input": [-97.0, 5.0], "expected": 5.0}, {"input": [-97.0, 5.5], "expected": 5.5}, {"input": [-97.0, 6.0], "expected": 6.0}, {"input": [-97.0, 6.5], "expected": 6.5}, {"input": [-97.0, 7.0], "expected": 7.0}, {"input": [-97.0, 7.5], "expected": 7.5}, {"input": [-97.0, 8.0], "expected": 8.0}, {"input": [-97.0, 8.5], "expected": 8.5}, {"input": [-97.0, 9.0], "expected": 9.0}, {"input": [-97.0, 9.5], "expected": 9.5}, {"input": [-97.0, 10.0], "expected": 10.0}, {"input": [-97.0, 10.5], "expected": 10.5}, {"input": [-97.0, 11.0], "expected": 11.0}, {"input": [-97.0, 11.5], "expected": 11.5}, {"input": [-97.0, 12.0], "expected": 12.0}, {"input": [-97.0, 12.5], "expected": 12.5}, {"input": [-97.0, 13.0], "expected": 13.0}, {"input": [-97.0, 13.5], "expected": 13.5}, {"input": [-97.0, 14.0], "expected": 14.0}, {"input": [-97.0, 14.5], "expected": 14.5}, {"input": [-97.0, 15.0], "expected": 15.0}, {"input": [-97.0, 15.5], "expected": 15.5}, {"input": [-97.0, 16.0], "expected": 16.0}, {"input": [-97.0, 16.5], "expected": 16.5}, {"input": [-97.0, 17.0], "expected": 17.0}, {"input": [-97.0, 17.5], "expected": 17.5}, {"input": [-97.0, 18.0], "expected": 18.0}, {"input": [-97.0, 18.5], "expected": 18.5}, {"input": [-97.0, 19.0], "expected": 19.0}, {"input": [-97.0, 19.5], "expected": 19.5}, {"input": [-97.0, 20.0], "expected": 20.0}, {"input": [-97.0, 20.5], "expected": 20.5}, {"input": [-97.0, 21.0], "expected": 21.0}, {"input": [-97.0, 21.5], "expected": 21.5}, {"input": [-97.0, 22.0], "expected": 22.0}, {"input": [-97.0, 22.5], "expected": 22.5}, {"input": [-97.0, 23.0], "expected": 23.0}, {"input": [-97.0, 23.5], "expected": 23.5}, {"input": [-97.0, 24.0], "expected": 24.0}, {"input": [-97.0, 24.5], "expected": 24.5}, {"input": [-97.0, 25.0], "expected": 25.0}, {"input": [-97.0, 25.5], "expected": 25.5}, {"input": [-97.0, 26.0], "expected": 26.0}, {"input": [-97.0, 26.5], "expected": 26.5}, {"input": [-97.0, 27.0], "expected": 27.0}, {"input": [-97.0, 27.5], "expected": 27.5}, {"input": [-97.0, 28.0], "expected": 28.0}, {"input": [-97.0, 28.5], "expected": 28.5}, {"input": [-97.0, 29.0], "expected": 29.0}, {"input": [-97.0, 29.5], "expected": 29.5}, {"input": [-97.0, 30.0], "expected": 30.0}, {"input": [-97.0, 30.5], "expected": 30.5}, {"input": [-97.0, 31.0], "expected": 31.0}, {"input": [-97.0, 31.5], "expected": 31.5}, {"input": [-97.0, 32.0], "expected": 32.0}, {"input": [-97.0, 32.5], "expected": 32.5}, {"input": [-97.0, 33.0], "expected": 33.0}, {"input": [-97.0, 33.5], "expected": 33.5}, {"input": [-97.0, 34.0], "expected": 34.0}, {"input": [-97.0, 34.5], "expected": 34.5}, {"input": [-97.0, 35.0], "expected": 35.0}, {"input": [-97.0, 35.5], "expected": 35.5}, {"input": [-97.0, 36.0], "expected": 36.0}, {"input": [-97.0, 36.5], "expected": 36.5}, {"input": [-97.0, 37.0], "expected": 37.0}, {"input": [-97.0, 37.5], "expected": 37.5}, {"input": [-97.0, 38.0], "expected": 38.0}, {"input": [-97.0, 38.5], "expected": 38.5}, {"input": [-97.0, 39.0], "expected": 39.0}, {"input": [-97.0, 39.5], "expected": 39.5}, {"input": [-97.0, 40.0], "expected": 40.0}, {"input": [-97.0, 40.5], "expected": 40.5}, {"input": [-97.0, 41.0], "expected": 41.0}, {"input": [-97.0, 41.5], "expected": 41.5}, {"input": [-97.0, 42.0], "expected": 42.0}, {"input": [-97.0, 42.5], "expected": 42.5}, {"input": [-97.0, 43.0], "expected": 43.0}, {"input": [-97.0, 43.5], "expected": 43.5}, {"input": [-97.0, 44.0], "expected": 44.0}, {"input": [-97.0, 44.5], "expected": 44.5}, {"input": [-97.0, 45.0], "expected": 45.0}, {"input": [-97.0, 45.5], "expected": 45.5}, {"input": [-97.0, 46.0], "expected": 46.0}, {"input": [-97.0, 46.5], "expected": 46.5}, {"input": [-97.0, 47.0], "expected": 47.0}, {"input": [-97.0, 47.5], "expected": 47.5}, {"input": [-97.0, 48.0], "expected": 48.0}, {"input": [-97.0, 48.5], "expected": 48.5}, {"input": [-97.0, 49.0], "expected": 49.0}, {"input": [-97.0, 49.5], "expected": 49.5}, {"input": [-97.0, 50.0], "expected": 50.0}, {"input": [-97.0, 50.5], "expected": 50.5}, {"input": [-97.0, 51.0], "expected": 51.0}, {"input": [-97.0, 51.5], "expected": 51.5}, {"input": [-97.0, 52.0], "expected": 52.0}, {"input": [-97.0, 52.5], "expected": 52.5}, {"input": [-97.0, 53.0], "expected": 53.0}, {"input": [-97.0, 53.5], "expected": 53.5}, {"input": [-97.0, 54.0], "expected": 54.0}, {"input": [-97.0, 54.5], "expected": 54.5}, {"input": [-97.0, 55.0], "expected": 55.0}, {"input": [-97.0, 55.5], "expected": 55.5}, {"input": [-97.0, 56.0], "expected": 56.0}, {"input": [-97.0, 56.5], "expected": 56.5}, {"input": [-97.0, 57.0], "expected": 57.0}, {"input": [-97.0, 57.5], "expected": 57.5}, {"input": [-97.0, 58.0], "expected": 58.0}, {"input": [-97.0, 58.5], "expected": 58.5}, {"input": [-97.0, 59.0], "expected": 59.0}, {"input": [-97.0, 59.5], "expected": 59.5}, {"input": [-97.0, 60.0], "expected": 60.0}, {"input": [-97.0, 60.5], "expected": 60.5}, {"input": [-97.0, 61.0], "expected": 61.0}, {"input": [-97.0, 61.5], "expected": 61.5}, {"input": [-97.0, 62.0], "expected": 62.0}, {"input": [-97.0, 62.5], "expected": 62.5}, {"input": [-97.0, 63.0], "expected": 63.0}, {"input": [-97.0, 63.5], "expected": 63.5}, {"input": [-97.0, 64.0], "expected": 64.0}, {"input": [-97.0, 64.5], "expected": 64.5}, {"input": [-97.0, 65.0], "expected": 65.0}, {"input": [-97.0, 65.5], "expected": 65.5}, {"input": [-97.0, 66.0], "expected": 66.0}, {"input": [-97.0, 66.5], "expected": 66.5}, {"input": [-97.0, 67.0], "expected": 67.0}, {"input": [-97.0, 67.5], "expected": 67.5}, {"input": [-97.0, 68.0], "expected": 68.0}, {"input": [-97.0, 68.5], "expected": 68.5}, {"input": [-97.0, 69.0], "expected": 69.0}, {"input": [-97.0, 69.5], "expected": 69.5}, {"input": [-97.0, 70.0], "expected": 70.0}, {"input": [-97.0, 70.5], "expected": 70.5}, {"input": [-97.0, 71.0], "expected": 71.0}, {"input": [-97.0, 71.5], "expected": 71.5}, {"input": [-97.0, 72.0], "expected": 72.0}, {"input": [-97.0, 72.5], "expected": 72.5}, {"input": [-97.0, 73.0], "expected": 73.0}, {"input": [-97.0, 73.5], "expected": 73.5}, {"input": [-97.0, 74.0], "expected": 74.0}, {"input": [-97.0, 74.5], "expected": 74.5}, {"input": [-97.0, 75.0], "expected": 75.0}, {"input": [-97.0, 75.5], "expected": 75.5}, {"input": [-97.0, 76.0], "expected": 76.0}, {"input": [-97.0, 76.5], "expected": 76.5}, {"input": [-97.0, 77.0], "expected": 77.0}, {"input": [-97.0, 77.5], "expected": 77.5}, {"input": [-97.0, 78.0], "expected": 78.0}, {"input": [-97.0, 78.5], "expected": 78.5}, {"input": [-97.0, 79.0], "expected": 79.0}, {"input": [-97.0, 79.5], "expected": 79.5}, {"input": [-97.0, 80.0], "expected": 80.0}, {"input": [-97.0, 80.5], "expected": 80.5}, {"input": [-97.0, 81.0], "expected": 81.0}, {"input": [-97.0, 81.5], "expected": 81.5}, {"input": [-97.0, 82.0], "expected": 82.0}, {"input": [-97.0, 82.5], "expected": 82.5}, {"input": [-97.0, 83.0], "expected": 83.0}, {"input": [-97.0, 83.5], "expected": 83.5}, {"input": [-97.0, 84.0], "expected": 84.0}, {"input": [-97.0, 84.5], "expected": 84.5}, {"input": [-97.0, 85.0], "expected": 85.0}, {"input": [-97.0, 85.5], "expected": 85.5}, {"input": [-97.0, 86.0], "expected": 86.0}, {"input": [-97.0, 86.5], "expected": 86.5}, {"input": [-97.0, 87.0], "expected": 87.0}, {"input": [-97.0, 87.5], "expected": 87.5}, {"input": [-97.0, 88.0], "expected": 88.0}, {"input": [-97.0, 88.5], "expected": 88.5}, {"input": [-97.0, 89.0], "expected": 89.0}, {"input": [-97.0, 89.5], "expected": 89.5}, {"input": [-97.0, 90.0], "expected": 90.0}, {"input": [-97.0, 90.5], "expected": 90.5}, {"input": [-97.0, 91.0], "expected": 91.0}, {"input": [-97.0, 91.5], "expected": 91.5}, {"input": [-97.0, 92.0], "expected": 92.0}, {"input": [-97.0, 92.5], "expected": 92.5}, {"input": [-97.0, 93.0], "expected": 93.0}, {"input": [-97.0, 93.5], "expected": 93.5}, {"input": [-97.0, 94.0], "expected": 94.0}, {"input": [-97.0, 94.5], "expected": 94.5}, {"input": [-97.0, 95.0], "expected": 95.0}, {"input": [-97.0, 95.5], "expected": 95.5}, {"input": [-97.0, 96.0], "expected": 96.0}, {"input": [-97.0, 96.5], "expected": 96.5}, {"input": [-97.0, 97.0], "expected": 97.0}, {"input": [-97.0, 97.5], "expected": 97.5}, {"input": [-97.0, 98.0], "expected": 98.0}, {"input": [-97.0, 98.5], "expected": 98.5}, {"input": [-97.0, 99.0], "expected": 99.0}, {"input": [-97.0, 99.5], "expected": 99.5}, {"input": [-96.5, -100.0], "expected": -96.47024958172737}, {"input": [-96.5, -99.5], "expected": -96.45141264842626}, {"input": [-96.5, -99.0], "expected": -96.42111026570745}, {"input": [-96.5, -98.5], "expected": -96.37307198895702}, {"input": [-96.5, -98.0], "expected": -96.29858672201725}, {"input": [-96.5, -97.5], "expected": -96.18673831248178}, {"input": [-96.5, -97.0], "expected": -96.0259230158199}, {"input": [-96.5, -96.5], "expected": -95.80685281944005}, {"input": [-96.5, -96.0], "expected": -95.5259230158199}, {"input": [-96.5, -95.5], "expected": -95.18673831248178}, {"input": [-96.5, -95.0], "expected": -94.79858672201725}, {"input": [-96.5, -94.5], "expected": -94.37307198895702}, {"input": [-96.5, -94.0], "expected": -93.92111026570745}, {"input": [-96.5, -93.5], "expected": -93.45141264842626}, {"input": [-96.5, -93.0], "expected": -92.97024958172737}, {"input": [-96.5, -92.5], "expected": -92.4818500720822}, {"input": [-96.5, -92.0], "expected": -91.9889522551514}, {"input": [-96.5, -91.5], "expected": -91.49328465151088}, {"input": [-96.5, -91.0], "expected": -90.99592155672943}, {"input": [-96.5, -90.5], "expected": -90.49752431486228}, {"input": [-96.5, -90.0], "expected": -89.99849768984025}, {"input": [-96.5, -89.5], "expected": -89.49908853354623}, {"input": [-96.5, -89.0], "expected": -88.99944706852465}, {"input": [-96.5, -88.5], "expected": -88.4996645936271}, {"input": [-96.5, -88.0], "expected": -87.99979655232787}, {"input": [-96.5, -87.5], "expected": -87.49987659781027}, {"input": [-96.5, -87.0], "expected": -86.99992515097136}, {"input": [-96.5, -86.5], "expected": -86.49995460110078}, {"input": [-96.5, -86.0], "expected": -85.99997246392977}, {"input": [-96.5, -85.5], "expected": -85.49998329843868}, {"input": [-96.5, -85.0], "expected": -84.99998986995772}, {"input": [-96.5, -84.5], "expected": -84.49999385580652}, {"input": [-96.5, -84.0], "expected": -83.99999627335377}, {"input": [-96.5, -83.5], "expected": -83.49999773967315}, {"input": [-96.5, -83.0], "expected": -82.99999862904185}, {"input": [-96.5, -82.5], "expected": -82.49999916847163}, {"input": [-96.5, -82.0], "expected": -81.99999949565246}, {"input": [-96.5, -81.5], "expected": -81.49999969409772}, {"input": [-96.5, -81.0], "expected": -80.99999981446088}, {"input": [-96.5, -80.5], "expected": -80.49999988746484}, {"input": [-96.5, -80.0], "expected": -79.99999993174397}, {"input": [-96.5, -79.5], "expected": -79.49999995860063}, {"input": [-96.5, -79.0], "expected": -78.99999997489}, {"input": [-96.5, -78.5], "expected": -78.49999998477001}, {"input": [-96.5, -78.0], "expected": -77.99999999076255}, {"input": [-96.5, -77.5], "expected": -77.4999999943972}, {"input": [-96.5, -77.0], "expected": -76.99999999660173}, {"input": [-96.5, -76.5], "expected": -76.49999999793884}, {"input": [-96.5, -76.0], "expected": -75.99999999874984}, {"input": [-96.5, -75.5], "expected": -75.49999999924174}, {"input": [-96.5, -75.0], "expected": -74.9999999995401}, {"input": [-96.5, -74.5], "expected": -74.49999999972106}, {"input": [-96.5, -74.0], "expected": -73.9999999998308}, {"input": [-96.5, -73.5], "expected": -73.49999999989738}, {"input": [-96.5, -73.0], "expected": -72.99999999993776}, {"input": [-96.5, -72.5], "expected": -72.49999999996224}, {"input": [-96.5, -72.0], "expected": -71.9999999999771}, {"input": [-96.5, -71.5], "expected": -71.49999999998612}, {"input": [-96.5, -71.0], "expected": -70.99999999999157}, {"input": [-96.5, -70.5], "expected": -70.49999999999488}, {"input": [-96.5, -70.0], "expected": -69.9999999999969}, {"input": [-96.5, -69.5], "expected": -69.49999999999812}, {"input": [-96.5, -69.0], "expected": -68.99999999999886}, {"input": [-96.5, -68.5], "expected": -68.4999999999993}, {"input": [-96.5, -68.0], "expected": -67.99999999999957}, {"input": [-96.5, -67.5], "expected": -67.49999999999974}, {"input": [-96.5, -67.0], "expected": -66.99999999999984}, {"input": [-96.5, -66.5], "expected": -66.4999999999999}, {"input": [-96.5, -66.0], "expected": -65.99999999999994}, {"input": [-96.5, -65.5], "expected": -65.49999999999997}, {"input": [-96.5, -65.0], "expected": -64.99999999999999}, {"input": [-96.5, -64.5], "expected": -64.49999999999999}, {"input": [-96.5, -64.0], "expected": -63.99999999999999}, {"input": [-96.5, -63.5], "expected": -63.49999999999999}, {"input": [-96.5, -63.0], "expected": -63.0}, {"input": [-96.5, -62.5], "expected": -62.5}, {"input": [-96.5, -62.0], "expected": -62.0}, {"input": [-96.5, -61.5], "expected": -61.5}, {"input": [-96.5, -61.0], "expected": -61.0}, {"input": [-96.5, -60.5], "expected": -60.5}, {"input": [-96.5, -60.0], "expected": -60.0}, {"input": [-96.5, -59.5], "expected": -59.5}, {"input": [-96.5, -59.0], "expected": -59.0}, {"input": [-96.5, -58.5], "expected": -58.5}, {"input": [-96.5, -58.0], "expected": -58.0}, {"input": [-96.5, -57.5], "expected": -57.5}, {"input": [-96.5, -57.0], "expected": -57.0}, {"input": [-96.5, -56.5], "expected": -56.5}, {"input": [-96.5, -56.0], "expected": -56.0}, {"input": [-96.5, -55.5], "expected": -55.5}, {"input": [-96.5, -55.0], "expected": -55.0}, {"input": [-96.5, -54.5], "expected": -54.5}, {"input": [-96.5, -54.0], "expected": -54.0}, {"input": [-96.5, -53.5], "expected": -53.5}, {"input": [-96.5, -53.0], "expected": -53.0}, {"input": [-96.5, -52.5], "expected": -52.5}, {"input": [-96.5, -52.0], "expected": -52.0}, {"input": [-96.5, -51.5], "expected": -51.5}, {"input": [-96.5, -51.0], "expected": -51.0}, {"input": [-96.5, -50.5], "expected": -50.5}, {"input": [-96.5, -50.0], "expected": -50.0}, {"input": [-96.5, -49.5], "expected": -49.5}, {"input": [-96.5, -49.0], "expected": -49.0}, {"input": [-96.5, -48.5], "expected": -48.5}, {"input": [-96.5, -48.0], "expected": -48.0}, {"input": [-96.5, -47.5], "expected": -47.5}, {"input": [-96.5, -47.0], "expected": -47.0}, {"input": [-96.5, -46.5], "expected": -46.5}, {"input": [-96.5, -46.0], "expected": -46.0}, {"input": [-96.5, -45.5], "expected": -45.5}, {"input": [-96.5, -45.0], "expected": -45.0}, {"input": [-96.5, -44.5], "expected": -44.5}, {"input": [-96.5, -44.0], "expected": -44.0}, {"input": [-96.5, -43.5], "expected": -43.5}, {"input": [-96.5, -43.0], "expected": -43.0}, {"input": [-96.5, -42.5], "expected": -42.5}, {"input": [-96.5, -42.0], "expected": -42.0}, {"input": [-96.5, -41.5], "expected": -41.5}, {"input": [-96.5, -41.0], "expected": -41.0}, {"input": [-96.5, -40.5], "expected": -40.5}, {"input": [-96.5, -40.0], "expected": -40.0}, {"input": [-96.5, -39.5], "expected": -39.5}, {"input": [-96.5, -39.0], "expected": -39.0}, {"input": [-96.5, -38.5], "expected": -38.5}, {"input": [-96.5, -38.0], "expected": -38.0}, {"input": [-96.5, -37.5], "expected": -37.5}, {"input": [-96.5, -37.0], "expected": -37.0}, {"input": [-96.5, -36.5], "expected": -36.5}, {"input": [-96.5, -36.0], "expected": -36.0}, {"input": [-96.5, -35.5], "expected": -35.5}, {"input": [-96.5, -35.0], "expected": -35.0}, {"input": [-96.5, -34.5], "expected": -34.5}, {"input": [-96.5, -34.0], "expected": -34.0}, {"input": [-96.5, -33.5], "expected": -33.5}, {"input": [-96.5, -33.0], "expected": -33.0}, {"input": [-96.5, -32.5], "expected": -32.5}, {"input": [-96.5, -32.0], "expected": -32.0}, {"input": [-96.5, -31.5], "expected": -31.5}, {"input": [-96.5, -31.0], "expected": -31.0}, {"input": [-96.5, -30.5], "expected": -30.5}, {"input": [-96.5, -30.0], "expected": -30.0}, {"input": [-96.5, -29.5], "expected": -29.5}, {"input": [-96.5, -29.0], "expected": -29.0}, {"input": [-96.5, -28.5], "expected": -28.5}, {"input": [-96.5, -28.0], "expected": -28.0}, {"input": [-96.5, -27.5], "expected": -27.5}, {"input": [-96.5, -27.0], "expected": -27.0}, {"input": [-96.5, -26.5], "expected": -26.5}, {"input": [-96.5, -26.0], "expected": -26.0}, {"input": [-96.5, -25.5], "expected": -25.5}, {"input": [-96.5, -25.0], "expected": -25.0}, {"input": [-96.5, -24.5], "expected": -24.5}, {"input": [-96.5, -24.0], "expected": -24.0}, {"input": [-96.5, -23.5], "expected": -23.5}, {"input": [-96.5, -23.0], "expected": -23.0}, {"input": [-96.5, -22.5], "expected": -22.5}, {"input": [-96.5, -22.0], "expected": -22.0}, {"input": [-96.5, -21.5], "expected": -21.5}, {"input": [-96.5, -21.0], "expected": -21.0}, {"input": [-96.5, -20.5], "expected": -20.5}, {"input": [-96.5, -20.0], "expected": -20.0}, {"input": [-96.5, -19.5], "expected": -19.5}, {"input": [-96.5, -19.0], "expected": -19.0}, {"input": [-96.5, -18.5], "expected": -18.5}, {"input": [-96.5, -18.0], "expected": -18.0}, {"input": [-96.5, -17.5], "expected": -17.5}, {"input": [-96.5, -17.0], "expected": -17.0}, {"input": [-96.5, -16.5], "expected": -16.5}, {"input": [-96.5, -16.0], "expected": -16.0}, {"input": [-96.5, -15.5], "expected": -15.5}, {"input": [-96.5, -15.0], "expected": -15.0}, {"input": [-96.5, -14.5], "expected": -14.5}, {"input": [-96.5, -14.0], "expected": -14.0}, {"input": [-96.5, -13.5], "expected": -13.5}, {"input": [-96.5, -13.0], "expected": -13.0}, {"input": [-96.5, -12.5], "expected": -12.5}, {"input": [-96.5, -12.0], "expected": -12.0}, {"input": [-96.5, -11.5], "expected": -11.5}, {"input": [-96.5, -11.0], "expected": -11.0}, {"input": [-96.5, -10.5], "expected": -10.5}, {"input": [-96.5, -10.0], "expected": -10.0}, {"input": [-96.5, -9.5], "expected": -9.5}, {"input": [-96.5, -9.0], "expected": -9.0}, {"input": [-96.5, -8.5], "expected": -8.5}, {"input": [-96.5, -8.0], "expected": -8.0}, {"input": [-96.5, -7.5], "expected": -7.5}, {"input": [-96.5, -7.0], "expected": -7.0}, {"input": [-96.5, -6.5], "expected": -6.5}, {"input": [-96.5, -6.0], "expected": -6.0}, {"input": [-96.5, -5.5], "expected": -5.5}, {"input": [-96.5, -5.0], "expected": -5.0}, {"input": [-96.5, -4.5], "expected": -4.5}, {"input": [-96.5, -4.0], "expected": -4.0}, {"input": [-96.5, -3.5], "expected": -3.5}, {"input": [-96.5, -3.0], "expected": -3.0}, {"input": [-96.5, -2.5], "expected": -2.5}, {"input": [-96.5, -2.0], "expected": -2.0}, {"input": [-96.5, -1.5], "expected": -1.5}, {"input": [-96.5, -1.0], "expected": -1.0}, {"input": [-96.5, -0.5], "expected": -0.5}, {"input": [-96.5, 0.0], "expected": 1.2319199726660341e-42}, {"input": [-96.5, 0.5], "expected": 0.5}, {"input": [-96.5, 1.0], "expected": 1.0}, {"input": [-96.5, 1.5], "expected": 1.5}, {"input": [-96.5, 2.0], "expected": 2.0}, {"input": [-96.5, 2.5], "expected": 2.5}, {"input": [-96.5, 3.0], "expected": 3.0}, {"input": [-96.5, 3.5], "expected": 3.5}, {"input": [-96.5, 4.0], "expected": 4.0}, {"input": [-96.5, 4.5], "expected": 4.5}, {"input": [-96.5, 5.0], "expected": 5.0}, {"input": [-96.5, 5.5], "expected": 5.5}, {"input": [-96.5, 6.0], "expected": 6.0}, {"input": [-96.5, 6.5], "expected": 6.5}, {"input": [-96.5, 7.0], "expected": 7.0}, {"input": [-96.5, 7.5], "expected": 7.5}, {"input": [-96.5, 8.0], "expected": 8.0}, {"input": [-96.5, 8.5], "expected": 8.5}, {"input": [-96.5, 9.0], "expected": 9.0}, {"input": [-96.5, 9.5], "expected": 9.5}, {"input": [-96.5, 10.0], "expected": 10.0}, {"input": [-96.5, 10.5], "expected": 10.5}, {"input": [-96.5, 11.0], "expected": 11.0}, {"input": [-96.5, 11.5], "expected": 11.5}, {"input": [-96.5, 12.0], "expected": 12.0}, {"input": [-96.5, 12.5], "expected": 12.5}, {"input": [-96.5, 13.0], "expected": 13.0}, {"input": [-96.5, 13.5], "expected": 13.5}, {"input": [-96.5, 14.0], "expected": 14.0}, {"input": [-96.5, 14.5], "expected": 14.5}, {"input": [-96.5, 15.0], "expected": 15.0}, {"input": [-96.5, 15.5], "expected": 15.5}, {"input": [-96.5, 16.0], "expected": 16.0}, {"input": [-96.5, 16.5], "expected": 16.5}, {"input": [-96.5, 17.0], "expected": 17.0}, {"input": [-96.5, 17.5], "expected": 17.5}, {"input": [-96.5, 18.0], "expected": 18.0}, {"input": [-96.5, 18.5], "expected": 18.5}, {"input": [-96.5, 19.0], "expected": 19.0}, {"input": [-96.5, 19.5], "expected": 19.5}, {"input": [-96.5, 20.0], "expected": 20.0}, {"input": [-96.5, 20.5], "expected": 20.5}, {"input": [-96.5, 21.0], "expected": 21.0}, {"input": [-96.5, 21.5], "expected": 21.5}, {"input": [-96.5, 22.0], "expected": 22.0}, {"input": [-96.5, 22.5], "expected": 22.5}, {"input": [-96.5, 23.0], "expected": 23.0}, {"input": [-96.5, 23.5], "expected": 23.5}, {"input": [-96.5, 24.0], "expected": 24.0}, {"input": [-96.5, 24.5], "expected": 24.5}, {"input": [-96.5, 25.0], "expected": 25.0}, {"input": [-96.5, 25.5], "expected": 25.5}, {"input": [-96.5, 26.0], "expected": 26.0}, {"input": [-96.5, 26.5], "expected": 26.5}, {"input": [-96.5, 27.0], "expected": 27.0}, {"input": [-96.5, 27.5], "expected": 27.5}, {"input": [-96.5, 28.0], "expected": 28.0}, {"input": [-96.5, 28.5], "expected": 28.5}, {"input": [-96.5, 29.0], "expected": 29.0}, {"input": [-96.5, 29.5], "expected": 29.5}, {"input": [-96.5, 30.0], "expected": 30.0}, {"input": [-96.5, 30.5], "expected": 30.5}, {"input": [-96.5, 31.0], "expected": 31.0}, {"input": [-96.5, 31.5], "expected": 31.5}, {"input": [-96.5, 32.0], "expected": 32.0}, {"input": [-96.5, 32.5], "expected": 32.5}, {"input": [-96.5, 33.0], "expected": 33.0}, {"input": [-96.5, 33.5], "expected": 33.5}, {"input": [-96.5, 34.0], "expected": 34.0}, {"input": [-96.5, 34.5], "expected": 34.5}, {"input": [-96.5, 35.0], "expected": 35.0}, {"input": [-96.5, 35.5], "expected": 35.5}, {"input": [-96.5, 36.0], "expected": 36.0}, {"input": [-96.5, 36.5], "expected": 36.5}, {"input": [-96.5, 37.0], "expected": 37.0}, {"input": [-96.5, 37.5], "expected": 37.5}, {"input": [-96.5, 38.0], "expected": 38.0}, {"input": [-96.5, 38.5], "expected": 38.5}, {"input": [-96.5, 39.0], "expected": 39.0}, {"input": [-96.5, 39.5], "expected": 39.5}, {"input": [-96.5, 40.0], "expected": 40.0}, {"input": [-96.5, 40.5], "expected": 40.5}, {"input": [-96.5, 41.0], "expected": 41.0}, {"input": [-96.5, 41.5], "expected": 41.5}, {"input": [-96.5, 42.0], "expected": 42.0}, {"input": [-96.5, 42.5], "expected": 42.5}, {"input": [-96.5, 43.0], "expected": 43.0}, {"input": [-96.5, 43.5], "expected": 43.5}, {"input": [-96.5, 44.0], "expected": 44.0}, {"input": [-96.5, 44.5], "expected": 44.5}, {"input": [-96.5, 45.0], "expected": 45.0}, {"input": [-96.5, 45.5], "expected": 45.5}, {"input": [-96.5, 46.0], "expected": 46.0}, {"input": [-96.5, 46.5], "expected": 46.5}, {"input": [-96.5, 47.0], "expected": 47.0}, {"input": [-96.5, 47.5], "expected": 47.5}, {"input": [-96.5, 48.0], "expected": 48.0}, {"input": [-96.5, 48.5], "expected": 48.5}, {"input": [-96.5, 49.0], "expected": 49.0}, {"input": [-96.5, 49.5], "expected": 49.5}, {"input": [-96.5, 50.0], "expected": 50.0}, {"input": [-96.5, 50.5], "expected": 50.5}, {"input": [-96.5, 51.0], "expected": 51.0}, {"input": [-96.5, 51.5], "expected": 51.5}, {"input": [-96.5, 52.0], "expected": 52.0}, {"input": [-96.5, 52.5], "expected": 52.5}, {"input": [-96.5, 53.0], "expected": 53.0}, {"input": [-96.5, 53.5], "expected": 53.5}, {"input": [-96.5, 54.0], "expected": 54.0}, {"input": [-96.5, 54.5], "expected": 54.5}, {"input": [-96.5, 55.0], "expected": 55.0}, {"input": [-96.5, 55.5], "expected": 55.5}, {"input": [-96.5, 56.0], "expected": 56.0}, {"input": [-96.5, 56.5], "expected": 56.5}, {"input": [-96.5, 57.0], "expected": 57.0}, {"input": [-96.5, 57.5], "expected": 57.5}, {"input": [-96.5, 58.0], "expected": 58.0}, {"input": [-96.5, 58.5], "expected": 58.5}, {"input": [-96.5, 59.0], "expected": 59.0}, {"input": [-96.5, 59.5], "expected": 59.5}, {"input": [-96.5, 60.0], "expected": 60.0}, {"input": [-96.5, 60.5], "expected": 60.5}, {"input": [-96.5, 61.0], "expected": 61.0}, {"input": [-96.5, 61.5], "expected": 61.5}, {"input": [-96.5, 62.0], "expected": 62.0}, {"input": [-96.5, 62.5], "expected": 62.5}, {"input": [-96.5, 63.0], "expected": 63.0}, {"input": [-96.5, 63.5], "expected": 63.5}, {"input": [-96.5, 64.0], "expected": 64.0}, {"input": [-96.5, 64.5], "expected": 64.5}, {"input": [-96.5, 65.0], "expected": 65.0}, {"input": [-96.5, 65.5], "expected": 65.5}, {"input": [-96.5, 66.0], "expected": 66.0}, {"input": [-96.5, 66.5], "expected": 66.5}, {"input": [-96.5, 67.0], "expected": 67.0}, {"input": [-96.5, 67.5], "expected": 67.5}, {"input": [-96.5, 68.0], "expected": 68.0}, {"input": [-96.5, 68.5], "expected": 68.5}, {"input": [-96.5, 69.0], "expected": 69.0}, {"input": [-96.5, 69.5], "expected": 69.5}, {"input": [-96.5, 70.0], "expected": 70.0}, {"input": [-96.5, 70.5], "expected": 70.5}, {"input": [-96.5, 71.0], "expected": 71.0}, {"input": [-96.5, 71.5], "expected": 71.5}, {"input": [-96.5, 72.0], "expected": 72.0}, {"input": [-96.5, 72.5], "expected": 72.5}, {"input": [-96.5, 73.0], "expected": 73.0}, {"input": [-96.5, 73.5], "expected": 73.5}, {"input": [-96.5, 74.0], "expected": 74.0}, {"input": [-96.5, 74.5], "expected": 74.5}, {"input": [-96.5, 75.0], "expected": 75.0}, {"input": [-96.5, 75.5], "expected": 75.5}, {"input": [-96.5, 76.0], "expected": 76.0}, {"input": [-96.5, 76.5], "expected": 76.5}, {"input": [-96.5, 77.0], "expected": 77.0}, {"input": [-96.5, 77.5], "expected": 77.5}, {"input": [-96.5, 78.0], "expected": 78.0}, {"input": [-96.5, 78.5], "expected": 78.5}, {"input": [-96.5, 79.0], "expected": 79.0}, {"input": [-96.5, 79.5], "expected": 79.5}, {"input": [-96.5, 80.0], "expected": 80.0}, {"input": [-96.5, 80.5], "expected": 80.5}, {"input": [-96.5, 81.0], "expected": 81.0}, {"input": [-96.5, 81.5], "expected": 81.5}, {"input": [-96.5, 82.0], "expected": 82.0}, {"input": [-96.5, 82.5], "expected": 82.5}, {"input": [-96.5, 83.0], "expected": 83.0}, {"input": [-96.5, 83.5], "expected": 83.5}, {"input": [-96.5, 84.0], "expected": 84.0}, {"input": [-96.5, 84.5], "expected": 84.5}, {"input": [-96.5, 85.0], "expected": 85.0}, {"input": [-96.5, 85.5], "expected": 85.5}, {"input": [-96.5, 86.0], "expected": 86.0}, {"input": [-96.5, 86.5], "expected": 86.5}, {"input": [-96.5, 87.0], "expected": 87.0}, {"input": [-96.5, 87.5], "expected": 87.5}, {"input": [-96.5, 88.0], "expected": 88.0}, {"input": [-96.5, 88.5], "expected": 88.5}, {"input": [-96.5, 89.0], "expected": 89.0}, {"input": [-96.5, 89.5], "expected": 89.5}, {"input": [-96.5, 90.0], "expected": 90.0}, {"input": [-96.5, 90.5], "expected": 90.5}, {"input": [-96.5, 91.0], "expected": 91.0}, {"input": [-96.5, 91.5], "expected": 91.5}, {"input": [-96.5, 92.0], "expected": 92.0}, {"input": [-96.5, 92.5], "expected": 92.5}, {"input": [-96.5, 93.0], "expected": 93.0}, {"input": [-96.5, 93.5], "expected": 93.5}, {"input": [-96.5, 94.0], "expected": 94.0}, {"input": [-96.5, 94.5], "expected": 94.5}, {"input": [-96.5, 95.0], "expected": 95.0}, {"input": [-96.5, 95.5], "expected": 95.5}, {"input": [-96.5, 96.0], "expected": 96.0}, {"input": [-96.5, 96.5], "expected": 96.5}, {"input": [-96.5, 97.0], "expected": 97.0}, {"input": [-96.5, 97.5], "expected": 97.5}, {"input": [-96.5, 98.0], "expected": 98.0}, {"input": [-96.5, 98.5], "expected": 98.5}, {"input": [-96.5, 99.0], "expected": 99.0}, {"input": [-96.5, 99.5], "expected": 99.5}, {"input": [-96.0, -100.0], "expected": -95.9818500720822}, {"input": [-96.0, -99.5], "expected": -95.97024958172737}, {"input": [-96.0, -99.0], "expected": -95.95141264842626}, {"input": [-96.0, -98.5], "expected": -95.92111026570745}, {"input": [-96.0, -98.0], "expected": -95.87307198895702}, {"input": [-96.0, -97.5], "expected": -95.79858672201725}, {"input": [-96.0, -97.0], "expected": -95.68673831248178}, {"input": [-96.0, -96.5], "expected": -95.5259230158199}, {"input": [-96.0, -96.0], "expected": -95.30685281944005}, {"input": [-96.0, -95.5], "expected": -95.0259230158199}, {"input": [-96.0, -95.0], "expected": -94.68673831248178}, {"input": [-96.0, -94.5], "expected": -94.29858672201725}, {"input": [-96.0, -94.0], "expected": -93.87307198895702}, {"input": [-96.0, -93.5], "expected": -93.42111026570745}, {"input": [-96.0, -93.0], "expected": -92.95141264842626}, {"input": [-96.0, -92.5], "expected": -92.47024958172737}, {"input": [-96.0, -92.0], "expected": -91.9818500720822}, {"input": [-96.0, -91.5], "expected": -91.4889522551514}, {"input": [-96.0, -91.0], "expected": -90.99328465151088}, {"input": [-96.0, -90.5], "expected": -90.49592155672943}, {"input": [-96.0, -90.0], "expected": -89.99752431486228}, {"input": [-96.0, -89.5], "expected": -89.49849768984025}, {"input": [-96.0, -89.0], "expected": -88.99908853354623}, {"input": [-96.0, -88.5], "expected": -88.49944706852465}, {"input": [-96.0, -88.0], "expected": -87.9996645936271}, {"input": [-96.0, -87.5], "expected": -87.49979655232787}, {"input": [-96.0, -87.0], "expected": -86.99987659781027}, {"input": [-96.0, -86.5], "expected": -86.49992515097136}, {"input": [-96.0, -86.0], "expected": -85.99995460110078}, {"input": [-96.0, -85.5], "expected": -85.49997246392977}, {"input": [-96.0, -85.0], "expected": -84.99998329843868}, {"input": [-96.0, -84.5], "expected": -84.49998986995772}, {"input": [-96.0, -84.0], "expected": -83.99999385580652}, {"input": [-96.0, -83.5], "expected": -83.49999627335377}, {"input": [-96.0, -83.0], "expected": -82.99999773967315}, {"input": [-96.0, -82.5], "expected": -82.49999862904185}, {"input": [-96.0, -82.0], "expected": -81.99999916847163}, {"input": [-96.0, -81.5], "expected": -81.49999949565246}, {"input": [-96.0, -81.0], "expected": -80.99999969409772}, {"input": [-96.0, -80.5], "expected": -80.49999981446088}, {"input": [-96.0, -80.0], "expected": -79.99999988746484}, {"input": [-96.0, -79.5], "expected": -79.49999993174397}, {"input": [-96.0, -79.0], "expected": -78.99999995860063}, {"input": [-96.0, -78.5], "expected": -78.49999997489}, {"input": [-96.0, -78.0], "expected": -77.99999998477001}, {"input": [-96.0, -77.5], "expected": -77.49999999076255}, {"input": [-96.0, -77.0], "expected": -76.9999999943972}, {"input": [-96.0, -76.5], "expected": -76.49999999660173}, {"input": [-96.0, -76.0], "expected": -75.99999999793884}, {"input": [-96.0, -75.5], "expected": -75.49999999874984}, {"input": [-96.0, -75.0], "expected": -74.99999999924174}, {"input": [-96.0, -74.5], "expected": -74.4999999995401}, {"input": [-96.0, -74.0], "expected": -73.99999999972106}, {"input": [-96.0, -73.5], "expected": -73.4999999998308}, {"input": [-96.0, -73.0], "expected": -72.99999999989738}, {"input": [-96.0, -72.5], "expected": -72.49999999993776}, {"input": [-96.0, -72.0], "expected": -71.99999999996224}, {"input": [-96.0, -71.5], "expected": -71.4999999999771}, {"input": [-96.0, -71.0], "expected": -70.99999999998612}, {"input": [-96.0, -70.5], "expected": -70.49999999999157}, {"input": [-96.0, -70.0], "expected": -69.99999999999488}, {"input": [-96.0, -69.5], "expected": -69.4999999999969}, {"input": [-96.0, -69.0], "expected": -68.99999999999812}, {"input": [-96.0, -68.5], "expected": -68.49999999999886}, {"input": [-96.0, -68.0], "expected": -67.9999999999993}, {"input": [-96.0, -67.5], "expected": -67.49999999999957}, {"input": [-96.0, -67.0], "expected": -66.99999999999974}, {"input": [-96.0, -66.5], "expected": -66.49999999999984}, {"input": [-96.0, -66.0], "expected": -65.9999999999999}, {"input": [-96.0, -65.5], "expected": -65.49999999999994}, {"input": [-96.0, -65.0], "expected": -64.99999999999997}, {"input": [-96.0, -64.5], "expected": -64.49999999999999}, {"input": [-96.0, -64.0], "expected": -63.999999999999986}, {"input": [-96.0, -63.5], "expected": -63.49999999999999}, {"input": [-96.0, -63.0], "expected": -62.99999999999999}, {"input": [-96.0, -62.5], "expected": -62.5}, {"input": [-96.0, -62.0], "expected": -62.0}, {"input": [-96.0, -61.5], "expected": -61.5}, {"input": [-96.0, -61.0], "expected": -61.0}, {"input": [-96.0, -60.5], "expected": -60.5}, {"input": [-96.0, -60.0], "expected": -60.0}, {"input": [-96.0, -59.5], "expected": -59.5}, {"input": [-96.0, -59.0], "expected": -59.0}, {"input": [-96.0, -58.5], "expected": -58.5}, {"input": [-96.0, -58.0], "expected": -58.0}, {"input": [-96.0, -57.5], "expected": -57.5}, {"input": [-96.0, -57.0], "expected": -57.0}, {"input": [-96.0, -56.5], "expected": -56.5}, {"input": [-96.0, -56.0], "expected": -56.0}, {"input": [-96.0, -55.5], "expected": -55.5}, {"input": [-96.0, -55.0], "expected": -55.0}, {"input": [-96.0, -54.5], "expected": -54.5}, {"input": [-96.0, -54.0], "expected": -54.0}, {"input": [-96.0, -53.5], "expected": -53.5}, {"input": [-96.0, -53.0], "expected": -53.0}, {"input": [-96.0, -52.5], "expected": -52.5}, {"input": [-96.0, -52.0], "expected": -52.0}, {"input": [-96.0, -51.5], "expected": -51.5}, {"input": [-96.0, -51.0], "expected": -51.0}, {"input": [-96.0, -50.5], "expected": -50.5}, {"input": [-96.0, -50.0], "expected": -50.0}, {"input": [-96.0, -49.5], "expected": -49.5}, {"input": [-96.0, -49.0], "expected": -49.0}, {"input": [-96.0, -48.5], "expected": -48.5}, {"input": [-96.0, -48.0], "expected": -48.0}, {"input": [-96.0, -47.5], "expected": -47.5}, {"input": [-96.0, -47.0], "expected": -47.0}, {"input": [-96.0, -46.5], "expected": -46.5}, {"input": [-96.0, -46.0], "expected": -46.0}, {"input": [-96.0, -45.5], "expected": -45.5}, {"input": [-96.0, -45.0], "expected": -45.0}, {"input": [-96.0, -44.5], "expected": -44.5}, {"input": [-96.0, -44.0], "expected": -44.0}, {"input": [-96.0, -43.5], "expected": -43.5}, {"input": [-96.0, -43.0], "expected": -43.0}, {"input": [-96.0, -42.5], "expected": -42.5}, {"input": [-96.0, -42.0], "expected": -42.0}, {"input": [-96.0, -41.5], "expected": -41.5}, {"input": [-96.0, -41.0], "expected": -41.0}, {"input": [-96.0, -40.5], "expected": -40.5}, {"input": [-96.0, -40.0], "expected": -40.0}, {"input": [-96.0, -39.5], "expected": -39.5}, {"input": [-96.0, -39.0], "expected": -39.0}, {"input": [-96.0, -38.5], "expected": -38.5}, {"input": [-96.0, -38.0], "expected": -38.0}, {"input": [-96.0, -37.5], "expected": -37.5}, {"input": [-96.0, -37.0], "expected": -37.0}, {"input": [-96.0, -36.5], "expected": -36.5}, {"input": [-96.0, -36.0], "expected": -36.0}, {"input": [-96.0, -35.5], "expected": -35.5}, {"input": [-96.0, -35.0], "expected": -35.0}, {"input": [-96.0, -34.5], "expected": -34.5}, {"input": [-96.0, -34.0], "expected": -34.0}, {"input": [-96.0, -33.5], "expected": -33.5}, {"input": [-96.0, -33.0], "expected": -33.0}, {"input": [-96.0, -32.5], "expected": -32.5}, {"input": [-96.0, -32.0], "expected": -32.0}, {"input": [-96.0, -31.5], "expected": -31.5}, {"input": [-96.0, -31.0], "expected": -31.0}, {"input": [-96.0, -30.5], "expected": -30.5}, {"input": [-96.0, -30.0], "expected": -30.0}, {"input": [-96.0, -29.5], "expected": -29.5}, {"input": [-96.0, -29.0], "expected": -29.0}, {"input": [-96.0, -28.5], "expected": -28.5}, {"input": [-96.0, -28.0], "expected": -28.0}, {"input": [-96.0, -27.5], "expected": -27.5}, {"input": [-96.0, -27.0], "expected": -27.0}, {"input": [-96.0, -26.5], "expected": -26.5}, {"input": [-96.0, -26.0], "expected": -26.0}, {"input": [-96.0, -25.5], "expected": -25.5}, {"input": [-96.0, -25.0], "expected": -25.0}, {"input": [-96.0, -24.5], "expected": -24.5}, {"input": [-96.0, -24.0], "expected": -24.0}, {"input": [-96.0, -23.5], "expected": -23.5}, {"input": [-96.0, -23.0], "expected": -23.0}, {"input": [-96.0, -22.5], "expected": -22.5}, {"input": [-96.0, -22.0], "expected": -22.0}, {"input": [-96.0, -21.5], "expected": -21.5}, {"input": [-96.0, -21.0], "expected": -21.0}, {"input": [-96.0, -20.5], "expected": -20.5}, {"input": [-96.0, -20.0], "expected": -20.0}, {"input": [-96.0, -19.5], "expected": -19.5}, {"input": [-96.0, -19.0], "expected": -19.0}, {"input": [-96.0, -18.5], "expected": -18.5}, {"input": [-96.0, -18.0], "expected": -18.0}, {"input": [-96.0, -17.5], "expected": -17.5}, {"input": [-96.0, -17.0], "expected": -17.0}, {"input": [-96.0, -16.5], "expected": -16.5}, {"input": [-96.0, -16.0], "expected": -16.0}, {"input": [-96.0, -15.5], "expected": -15.5}, {"input": [-96.0, -15.0], "expected": -15.0}, {"input": [-96.0, -14.5], "expected": -14.5}, {"input": [-96.0, -14.0], "expected": -14.0}, {"input": [-96.0, -13.5], "expected": -13.5}, {"input": [-96.0, -13.0], "expected": -13.0}, {"input": [-96.0, -12.5], "expected": -12.5}, {"input": [-96.0, -12.0], "expected": -12.0}, {"input": [-96.0, -11.5], "expected": -11.5}, {"input": [-96.0, -11.0], "expected": -11.0}, {"input": [-96.0, -10.5], "expected": -10.5}, {"input": [-96.0, -10.0], "expected": -10.0}, {"input": [-96.0, -9.5], "expected": -9.5}, {"input": [-96.0, -9.0], "expected": -9.0}, {"input": [-96.0, -8.5], "expected": -8.5}, {"input": [-96.0, -8.0], "expected": -8.0}, {"input": [-96.0, -7.5], "expected": -7.5}, {"input": [-96.0, -7.0], "expected": -7.0}, {"input": [-96.0, -6.5], "expected": -6.5}, {"input": [-96.0, -6.0], "expected": -6.0}, {"input": [-96.0, -5.5], "expected": -5.5}, {"input": [-96.0, -5.0], "expected": -5.0}, {"input": [-96.0, -4.5], "expected": -4.5}, {"input": [-96.0, -4.0], "expected": -4.0}, {"input": [-96.0, -3.5], "expected": -3.5}, {"input": [-96.0, -3.0], "expected": -3.0}, {"input": [-96.0, -2.5], "expected": -2.5}, {"input": [-96.0, -2.0], "expected": -2.0}, {"input": [-96.0, -1.5], "expected": -1.5}, {"input": [-96.0, -1.0], "expected": -1.0}, {"input": [-96.0, -0.5], "expected": -0.5}, {"input": [-96.0, 0.0], "expected": 2.031092662734811e-42}, {"input": [-96.0, 0.5], "expected": 0.5}, {"input": [-96.0, 1.0], "expected": 1.0}, {"input": [-96.0, 1.5], "expected": 1.5}, {"input": [-96.0, 2.0], "expected": 2.0}, {"input": [-96.0, 2.5], "expected": 2.5}, {"input": [-96.0, 3.0], "expected": 3.0}, {"input": [-96.0, 3.5], "expected": 3.5}, {"input": [-96.0, 4.0], "expected": 4.0}, {"input": [-96.0, 4.5], "expected": 4.5}, {"input": [-96.0, 5.0], "expected": 5.0}, {"input": [-96.0, 5.5], "expected": 5.5}, {"input": [-96.0, 6.0], "expected": 6.0}, {"input": [-96.0, 6.5], "expected": 6.5}, {"input": [-96.0, 7.0], "expected": 7.0}, {"input": [-96.0, 7.5], "expected": 7.5}, {"input": [-96.0, 8.0], "expected": 8.0}, {"input": [-96.0, 8.5], "expected": 8.5}, {"input": [-96.0, 9.0], "expected": 9.0}, {"input": [-96.0, 9.5], "expected": 9.5}, {"input": [-96.0, 10.0], "expected": 10.0}, {"input": [-96.0, 10.5], "expected": 10.5}, {"input": [-96.0, 11.0], "expected": 11.0}, {"input": [-96.0, 11.5], "expected": 11.5}, {"input": [-96.0, 12.0], "expected": 12.0}, {"input": [-96.0, 12.5], "expected": 12.5}, {"input": [-96.0, 13.0], "expected": 13.0}, {"input": [-96.0, 13.5], "expected": 13.5}, {"input": [-96.0, 14.0], "expected": 14.0}, {"input": [-96.0, 14.5], "expected": 14.5}, {"input": [-96.0, 15.0], "expected": 15.0}, {"input": [-96.0, 15.5], "expected": 15.5}, {"input": [-96.0, 16.0], "expected": 16.0}, {"input": [-96.0, 16.5], "expected": 16.5}, {"input": [-96.0, 17.0], "expected": 17.0}, {"input": [-96.0, 17.5], "expected": 17.5}, {"input": [-96.0, 18.0], "expected": 18.0}, {"input": [-96.0, 18.5], "expected": 18.5}, {"input": [-96.0, 19.0], "expected": 19.0}, {"input": [-96.0, 19.5], "expected": 19.5}, {"input": [-96.0, 20.0], "expected": 20.0}, {"input": [-96.0, 20.5], "expected": 20.5}, {"input": [-96.0, 21.0], "expected": 21.0}, {"input": [-96.0, 21.5], "expected": 21.5}, {"input": [-96.0, 22.0], "expected": 22.0}, {"input": [-96.0, 22.5], "expected": 22.5}, {"input": [-96.0, 23.0], "expected": 23.0}, {"input": [-96.0, 23.5], "expected": 23.5}, {"input": [-96.0, 24.0], "expected": 24.0}, {"input": [-96.0, 24.5], "expected": 24.5}, {"input": [-96.0, 25.0], "expected": 25.0}, {"input": [-96.0, 25.5], "expected": 25.5}, {"input": [-96.0, 26.0], "expected": 26.0}, {"input": [-96.0, 26.5], "expected": 26.5}, {"input": [-96.0, 27.0], "expected": 27.0}, {"input": [-96.0, 27.5], "expected": 27.5}, {"input": [-96.0, 28.0], "expected": 28.0}, {"input": [-96.0, 28.5], "expected": 28.5}, {"input": [-96.0, 29.0], "expected": 29.0}, {"input": [-96.0, 29.5], "expected": 29.5}, {"input": [-96.0, 30.0], "expected": 30.0}, {"input": [-96.0, 30.5], "expected": 30.5}, {"input": [-96.0, 31.0], "expected": 31.0}, {"input": [-96.0, 31.5], "expected": 31.5}, {"input": [-96.0, 32.0], "expected": 32.0}, {"input": [-96.0, 32.5], "expected": 32.5}, {"input": [-96.0, 33.0], "expected": 33.0}, {"input": [-96.0, 33.5], "expected": 33.5}, {"input": [-96.0, 34.0], "expected": 34.0}, {"input": [-96.0, 34.5], "expected": 34.5}, {"input": [-96.0, 35.0], "expected": 35.0}, {"input": [-96.0, 35.5], "expected": 35.5}, {"input": [-96.0, 36.0], "expected": 36.0}, {"input": [-96.0, 36.5], "expected": 36.5}, {"input": [-96.0, 37.0], "expected": 37.0}, {"input": [-96.0, 37.5], "expected": 37.5}, {"input": [-96.0, 38.0], "expected": 38.0}, {"input": [-96.0, 38.5], "expected": 38.5}, {"input": [-96.0, 39.0], "expected": 39.0}, {"input": [-96.0, 39.5], "expected": 39.5}, {"input": [-96.0, 40.0], "expected": 40.0}, {"input": [-96.0, 40.5], "expected": 40.5}, {"input": [-96.0, 41.0], "expected": 41.0}, {"input": [-96.0, 41.5], "expected": 41.5}, {"input": [-96.0, 42.0], "expected": 42.0}, {"input": [-96.0, 42.5], "expected": 42.5}, {"input": [-96.0, 43.0], "expected": 43.0}, {"input": [-96.0, 43.5], "expected": 43.5}, {"input": [-96.0, 44.0], "expected": 44.0}, {"input": [-96.0, 44.5], "expected": 44.5}, {"input": [-96.0, 45.0], "expected": 45.0}, {"input": [-96.0, 45.5], "expected": 45.5}, {"input": [-96.0, 46.0], "expected": 46.0}, {"input": [-96.0, 46.5], "expected": 46.5}, {"input": [-96.0, 47.0], "expected": 47.0}, {"input": [-96.0, 47.5], "expected": 47.5}, {"input": [-96.0, 48.0], "expected": 48.0}, {"input": [-96.0, 48.5], "expected": 48.5}, {"input": [-96.0, 49.0], "expected": 49.0}, {"input": [-96.0, 49.5], "expected": 49.5}, {"input": [-96.0, 50.0], "expected": 50.0}, {"input": [-96.0, 50.5], "expected": 50.5}, {"input": [-96.0, 51.0], "expected": 51.0}, {"input": [-96.0, 51.5], "expected": 51.5}, {"input": [-96.0, 52.0], "expected": 52.0}, {"input": [-96.0, 52.5], "expected": 52.5}, {"input": [-96.0, 53.0], "expected": 53.0}, {"input": [-96.0, 53.5], "expected": 53.5}, {"input": [-96.0, 54.0], "expected": 54.0}, {"input": [-96.0, 54.5], "expected": 54.5}, {"input": [-96.0, 55.0], "expected": 55.0}, {"input": [-96.0, 55.5], "expected": 55.5}, {"input": [-96.0, 56.0], "expected": 56.0}, {"input": [-96.0, 56.5], "expected": 56.5}, {"input": [-96.0, 57.0], "expected": 57.0}, {"input": [-96.0, 57.5], "expected": 57.5}, {"input": [-96.0, 58.0], "expected": 58.0}, {"input": [-96.0, 58.5], "expected": 58.5}, {"input": [-96.0, 59.0], "expected": 59.0}, {"input": [-96.0, 59.5], "expected": 59.5}, {"input": [-96.0, 60.0], "expected": 60.0}, {"input": [-96.0, 60.5], "expected": 60.5}, {"input": [-96.0, 61.0], "expected": 61.0}, {"input": [-96.0, 61.5], "expected": 61.5}, {"input": [-96.0, 62.0], "expected": 62.0}, {"input": [-96.0, 62.5], "expected": 62.5}, {"input": [-96.0, 63.0], "expected": 63.0}, {"input": [-96.0, 63.5], "expected": 63.5}, {"input": [-96.0, 64.0], "expected": 64.0}, {"input": [-96.0, 64.5], "expected": 64.5}, {"input": [-96.0, 65.0], "expected": 65.0}, {"input": [-96.0, 65.5], "expected": 65.5}, {"input": [-96.0, 66.0], "expected": 66.0}, {"input": [-96.0, 66.5], "expected": 66.5}, {"input": [-96.0, 67.0], "expected": 67.0}, {"input": [-96.0, 67.5], "expected": 67.5}, {"input": [-96.0, 68.0], "expected": 68.0}, {"input": [-96.0, 68.5], "expected": 68.5}, {"input": [-96.0, 69.0], "expected": 69.0}, {"input": [-96.0, 69.5], "expected": 69.5}, {"input": [-96.0, 70.0], "expected": 70.0}, {"input": [-96.0, 70.5], "expected": 70.5}, {"input": [-96.0, 71.0], "expected": 71.0}, {"input": [-96.0, 71.5], "expected": 71.5}, {"input": [-96.0, 72.0], "expected": 72.0}, {"input": [-96.0, 72.5], "expected": 72.5}, {"input": [-96.0, 73.0], "expected": 73.0}, {"input": [-96.0, 73.5], "expected": 73.5}, {"input": [-96.0, 74.0], "expected": 74.0}, {"input": [-96.0, 74.5], "expected": 74.5}, {"input": [-96.0, 75.0], "expected": 75.0}, {"input": [-96.0, 75.5], "expected": 75.5}, {"input": [-96.0, 76.0], "expected": 76.0}, {"input": [-96.0, 76.5], "expected": 76.5}, {"input": [-96.0, 77.0], "expected": 77.0}, {"input": [-96.0, 77.5], "expected": 77.5}, {"input": [-96.0, 78.0], "expected": 78.0}, {"input": [-96.0, 78.5], "expected": 78.5}, {"input": [-96.0, 79.0], "expected": 79.0}, {"input": [-96.0, 79.5], "expected": 79.5}, {"input": [-96.0, 80.0], "expected": 80.0}, {"input": [-96.0, 80.5], "expected": 80.5}, {"input": [-96.0, 81.0], "expected": 81.0}, {"input": [-96.0, 81.5], "expected": 81.5}, {"input": [-96.0, 82.0], "expected": 82.0}, {"input": [-96.0, 82.5], "expected": 82.5}, {"input": [-96.0, 83.0], "expected": 83.0}, {"input": [-96.0, 83.5], "expected": 83.5}, {"input": [-96.0, 84.0], "expected": 84.0}, {"input": [-96.0, 84.5], "expected": 84.5}, {"input": [-96.0, 85.0], "expected": 85.0}, {"input": [-96.0, 85.5], "expected": 85.5}, {"input": [-96.0, 86.0], "expected": 86.0}, {"input": [-96.0, 86.5], "expected": 86.5}, {"input": [-96.0, 87.0], "expected": 87.0}, {"input": [-96.0, 87.5], "expected": 87.5}, {"input": [-96.0, 88.0], "expected": 88.0}, {"input": [-96.0, 88.5], "expected": 88.5}, {"input": [-96.0, 89.0], "expected": 89.0}, {"input": [-96.0, 89.5], "expected": 89.5}, {"input": [-96.0, 90.0], "expected": 90.0}, {"input": [-96.0, 90.5], "expected": 90.5}, {"input": [-96.0, 91.0], "expected": 91.0}, {"input": [-96.0, 91.5], "expected": 91.5}, {"input": [-96.0, 92.0], "expected": 92.0}, {"input": [-96.0, 92.5], "expected": 92.5}, {"input": [-96.0, 93.0], "expected": 93.0}, {"input": [-96.0, 93.5], "expected": 93.5}, {"input": [-96.0, 94.0], "expected": 94.0}, {"input": [-96.0, 94.5], "expected": 94.5}, {"input": [-96.0, 95.0], "expected": 95.0}, {"input": [-96.0, 95.5], "expected": 95.5}, {"input": [-96.0, 96.0], "expected": 96.0}, {"input": [-96.0, 96.5], "expected": 96.5}, {"input": [-96.0, 97.0], "expected": 97.0}, {"input": [-96.0, 97.5], "expected": 97.5}, {"input": [-96.0, 98.0], "expected": 98.0}, {"input": [-96.0, 98.5], "expected": 98.5}, {"input": [-96.0, 99.0], "expected": 99.0}, {"input": [-96.0, 99.5], "expected": 99.5}, {"input": [-95.5, -100.0], "expected": -95.4889522551514}, {"input": [-95.5, -99.5], "expected": -95.4818500720822}, {"input": [-95.5, -99.0], "expected": -95.47024958172737}, {"input": [-95.5, -98.5], "expected": -95.45141264842626}, {"input": [-95.5, -98.0], "expected": -95.42111026570745}, {"input": [-95.5, -97.5], "expected": -95.37307198895702}, {"input": [-95.5, -97.0], "expected": -95.29858672201725}, {"input": [-95.5, -96.5], "expected": -95.18673831248178}, {"input": [-95.5, -96.0], "expected": -95.0259230158199}, {"input": [-95.5, -95.5], "expected": -94.80685281944005}, {"input": [-95.5, -95.0], "expected": -94.5259230158199}, {"input": [-95.5, -94.5], "expected": -94.18673831248178}, {"input": [-95.5, -94.0], "expected": -93.79858672201725}, {"input": [-95.5, -93.5], "expected": -93.37307198895702}, {"input": [-95.5, -93.0], "expected": -92.92111026570745}, {"input": [-95.5, -92.5], "expected": -92.45141264842626}, {"input": [-95.5, -92.0], "expected": -91.97024958172737}, {"input": [-95.5, -91.5], "expected": -91.4818500720822}, {"input": [-95.5, -91.0], "expected": -90.9889522551514}, {"input": [-95.5, -90.5], "expected": -90.49328465151088}, {"input": [-95.5, -90.0], "expected": -89.99592155672943}, {"input": [-95.5, -89.5], "expected": -89.49752431486228}, {"input": [-95.5, -89.0], "expected": -88.99849768984025}, {"input": [-95.5, -88.5], "expected": -88.49908853354623}, {"input": [-95.5, -88.0], "expected": -87.99944706852465}, {"input": [-95.5, -87.5], "expected": -87.4996645936271}, {"input": [-95.5, -87.0], "expected": -86.99979655232787}, {"input": [-95.5, -86.5], "expected": -86.49987659781027}, {"input": [-95.5, -86.0], "expected": -85.99992515097136}, {"input": [-95.5, -85.5], "expected": -85.49995460110078}, {"input": [-95.5, -85.0], "expected": -84.99997246392977}, {"input": [-95.5, -84.5], "expected": -84.49998329843868}, {"input": [-95.5, -84.0], "expected": -83.99998986995772}, {"input": [-95.5, -83.5], "expected": -83.49999385580652}, {"input": [-95.5, -83.0], "expected": -82.99999627335377}, {"input": [-95.5, -82.5], "expected": -82.49999773967315}, {"input": [-95.5, -82.0], "expected": -81.99999862904185}, {"input": [-95.5, -81.5], "expected": -81.49999916847163}, {"input": [-95.5, -81.0], "expected": -80.99999949565246}, {"input": [-95.5, -80.5], "expected": -80.49999969409772}, {"input": [-95.5, -80.0], "expected": -79.99999981446088}, {"input": [-95.5, -79.5], "expected": -79.49999988746484}, {"input": [-95.5, -79.0], "expected": -78.99999993174397}, {"input": [-95.5, -78.5], "expected": -78.49999995860063}, {"input": [-95.5, -78.0], "expected": -77.99999997489}, {"input": [-95.5, -77.5], "expected": -77.49999998477001}, {"input": [-95.5, -77.0], "expected": -76.99999999076255}, {"input": [-95.5, -76.5], "expected": -76.4999999943972}, {"input": [-95.5, -76.0], "expected": -75.99999999660173}, {"input": [-95.5, -75.5], "expected": -75.49999999793884}, {"input": [-95.5, -75.0], "expected": -74.99999999874984}, {"input": [-95.5, -74.5], "expected": -74.49999999924174}, {"input": [-95.5, -74.0], "expected": -73.9999999995401}, {"input": [-95.5, -73.5], "expected": -73.49999999972106}, {"input": [-95.5, -73.0], "expected": -72.9999999998308}, {"input": [-95.5, -72.5], "expected": -72.49999999989738}, {"input": [-95.5, -72.0], "expected": -71.99999999993776}, {"input": [-95.5, -71.5], "expected": -71.49999999996224}, {"input": [-95.5, -71.0], "expected": -70.9999999999771}, {"input": [-95.5, -70.5], "expected": -70.49999999998612}, {"input": [-95.5, -70.0], "expected": -69.99999999999157}, {"input": [-95.5, -69.5], "expected": -69.49999999999488}, {"input": [-95.5, -69.0], "expected": -68.9999999999969}, {"input": [-95.5, -68.5], "expected": -68.49999999999812}, {"input": [-95.5, -68.0], "expected": -67.99999999999886}, {"input": [-95.5, -67.5], "expected": -67.4999999999993}, {"input": [-95.5, -67.0], "expected": -66.99999999999957}, {"input": [-95.5, -66.5], "expected": -66.49999999999974}, {"input": [-95.5, -66.0], "expected": -65.99999999999984}, {"input": [-95.5, -65.5], "expected": -65.4999999999999}, {"input": [-95.5, -65.0], "expected": -64.99999999999994}, {"input": [-95.5, -64.5], "expected": -64.49999999999997}, {"input": [-95.5, -64.0], "expected": -63.99999999999998}, {"input": [-95.5, -63.5], "expected": -63.499999999999986}, {"input": [-95.5, -63.0], "expected": -62.99999999999999}, {"input": [-95.5, -62.5], "expected": -62.49999999999999}, {"input": [-95.5, -62.0], "expected": -62.0}, {"input": [-95.5, -61.5], "expected": -61.5}, {"input": [-95.5, -61.0], "expected": -61.0}, {"input": [-95.5, -60.5], "expected": -60.5}, {"input": [-95.5, -60.0], "expected": -60.0}, {"input": [-95.5, -59.5], "expected": -59.5}, {"input": [-95.5, -59.0], "expected": -59.0}, {"input": [-95.5, -58.5], "expected": -58.5}, {"input": [-95.5, -58.0], "expected": -58.0}, {"input": [-95.5, -57.5], "expected": -57.5}, {"input": [-95.5, -57.0], "expected": -57.0}, {"input": [-95.5, -56.5], "expected": -56.5}, {"input": [-95.5, -56.0], "expected": -56.0}, {"input": [-95.5, -55.5], "expected": -55.5}, {"input": [-95.5, -55.0], "expected": -55.0}, {"input": [-95.5, -54.5], "expected": -54.5}, {"input": [-95.5, -54.0], "expected": -54.0}, {"input": [-95.5, -53.5], "expected": -53.5}, {"input": [-95.5, -53.0], "expected": -53.0}, {"input": [-95.5, -52.5], "expected": -52.5}, {"input": [-95.5, -52.0], "expected": -52.0}, {"input": [-95.5, -51.5], "expected": -51.5}, {"input": [-95.5, -51.0], "expected": -51.0}, {"input": [-95.5, -50.5], "expected": -50.5}, {"input": [-95.5, -50.0], "expected": -50.0}, {"input": [-95.5, -49.5], "expected": -49.5}, {"input": [-95.5, -49.0], "expected": -49.0}, {"input": [-95.5, -48.5], "expected": -48.5}, {"input": [-95.5, -48.0], "expected": -48.0}, {"input": [-95.5, -47.5], "expected": -47.5}, {"input": [-95.5, -47.0], "expected": -47.0}, {"input": [-95.5, -46.5], "expected": -46.5}, {"input": [-95.5, -46.0], "expected": -46.0}, {"input": [-95.5, -45.5], "expected": -45.5}, {"input": [-95.5, -45.0], "expected": -45.0}, {"input": [-95.5, -44.5], "expected": -44.5}, {"input": [-95.5, -44.0], "expected": -44.0}, {"input": [-95.5, -43.5], "expected": -43.5}, {"input": [-95.5, -43.0], "expected": -43.0}, {"input": [-95.5, -42.5], "expected": -42.5}, {"input": [-95.5, -42.0], "expected": -42.0}, {"input": [-95.5, -41.5], "expected": -41.5}, {"input": [-95.5, -41.0], "expected": -41.0}, {"input": [-95.5, -40.5], "expected": -40.5}, {"input": [-95.5, -40.0], "expected": -40.0}, {"input": [-95.5, -39.5], "expected": -39.5}, {"input": [-95.5, -39.0], "expected": -39.0}, {"input": [-95.5, -38.5], "expected": -38.5}, {"input": [-95.5, -38.0], "expected": -38.0}, {"input": [-95.5, -37.5], "expected": -37.5}, {"input": [-95.5, -37.0], "expected": -37.0}, {"input": [-95.5, -36.5], "expected": -36.5}, {"input": [-95.5, -36.0], "expected": -36.0}, {"input": [-95.5, -35.5], "expected": -35.5}, {"input": [-95.5, -35.0], "expected": -35.0}, {"input": [-95.5, -34.5], "expected": -34.5}, {"input": [-95.5, -34.0], "expected": -34.0}, {"input": [-95.5, -33.5], "expected": -33.5}, {"input": [-95.5, -33.0], "expected": -33.0}, {"input": [-95.5, -32.5], "expected": -32.5}, {"input": [-95.5, -32.0], "expected": -32.0}, {"input": [-95.5, -31.5], "expected": -31.5}, {"input": [-95.5, -31.0], "expected": -31.0}, {"input": [-95.5, -30.5], "expected": -30.5}, {"input": [-95.5, -30.0], "expected": -30.0}, {"input": [-95.5, -29.5], "expected": -29.5}, {"input": [-95.5, -29.0], "expected": -29.0}, {"input": [-95.5, -28.5], "expected": -28.5}, {"input": [-95.5, -28.0], "expected": -28.0}, {"input": [-95.5, -27.5], "expected": -27.5}, {"input": [-95.5, -27.0], "expected": -27.0}, {"input": [-95.5, -26.5], "expected": -26.5}, {"input": [-95.5, -26.0], "expected": -26.0}, {"input": [-95.5, -25.5], "expected": -25.5}, {"input": [-95.5, -25.0], "expected": -25.0}, {"input": [-95.5, -24.5], "expected": -24.5}, {"input": [-95.5, -24.0], "expected": -24.0}, {"input": [-95.5, -23.5], "expected": -23.5}, {"input": [-95.5, -23.0], "expected": -23.0}, {"input": [-95.5, -22.5], "expected": -22.5}, {"input": [-95.5, -22.0], "expected": -22.0}, {"input": [-95.5, -21.5], "expected": -21.5}, {"input": [-95.5, -21.0], "expected": -21.0}, {"input": [-95.5, -20.5], "expected": -20.5}, {"input": [-95.5, -20.0], "expected": -20.0}, {"input": [-95.5, -19.5], "expected": -19.5}, {"input": [-95.5, -19.0], "expected": -19.0}, {"input": [-95.5, -18.5], "expected": -18.5}, {"input": [-95.5, -18.0], "expected": -18.0}, {"input": [-95.5, -17.5], "expected": -17.5}, {"input": [-95.5, -17.0], "expected": -17.0}, {"input": [-95.5, -16.5], "expected": -16.5}, {"input": [-95.5, -16.0], "expected": -16.0}, {"input": [-95.5, -15.5], "expected": -15.5}, {"input": [-95.5, -15.0], "expected": -15.0}, {"input": [-95.5, -14.5], "expected": -14.5}, {"input": [-95.5, -14.0], "expected": -14.0}, {"input": [-95.5, -13.5], "expected": -13.5}, {"input": [-95.5, -13.0], "expected": -13.0}, {"input": [-95.5, -12.5], "expected": -12.5}, {"input": [-95.5, -12.0], "expected": -12.0}, {"input": [-95.5, -11.5], "expected": -11.5}, {"input": [-95.5, -11.0], "expected": -11.0}, {"input": [-95.5, -10.5], "expected": -10.5}, {"input": [-95.5, -10.0], "expected": -10.0}, {"input": [-95.5, -9.5], "expected": -9.5}, {"input": [-95.5, -9.0], "expected": -9.0}, {"input": [-95.5, -8.5], "expected": -8.5}, {"input": [-95.5, -8.0], "expected": -8.0}, {"input": [-95.5, -7.5], "expected": -7.5}, {"input": [-95.5, -7.0], "expected": -7.0}, {"input": [-95.5, -6.5], "expected": -6.5}, {"input": [-95.5, -6.0], "expected": -6.0}, {"input": [-95.5, -5.5], "expected": -5.5}, {"input": [-95.5, -5.0], "expected": -5.0}, {"input": [-95.5, -4.5], "expected": -4.5}, {"input": [-95.5, -4.0], "expected": -4.0}, {"input": [-95.5, -3.5], "expected": -3.5}, {"input": [-95.5, -3.0], "expected": -3.0}, {"input": [-95.5, -2.5], "expected": -2.5}, {"input": [-95.5, -2.0], "expected": -2.0}, {"input": [-95.5, -1.5], "expected": -1.5}, {"input": [-95.5, -1.0], "expected": -1.0}, {"input": [-95.5, -0.5], "expected": -0.5}, {"input": [-95.5, 0.0], "expected": 3.348705675813844e-42}, {"input": [-95.5, 0.5], "expected": 0.5}, {"input": [-95.5, 1.0], "expected": 1.0}, {"input": [-95.5, 1.5], "expected": 1.5}, {"input": [-95.5, 2.0], "expected": 2.0}, {"input": [-95.5, 2.5], "expected": 2.5}, {"input": [-95.5, 3.0], "expected": 3.0}, {"input": [-95.5, 3.5], "expected": 3.5}, {"input": [-95.5, 4.0], "expected": 4.0}, {"input": [-95.5, 4.5], "expected": 4.5}, {"input": [-95.5, 5.0], "expected": 5.0}, {"input": [-95.5, 5.5], "expected": 5.5}, {"input": [-95.5, 6.0], "expected": 6.0}, {"input": [-95.5, 6.5], "expected": 6.5}, {"input": [-95.5, 7.0], "expected": 7.0}, {"input": [-95.5, 7.5], "expected": 7.5}, {"input": [-95.5, 8.0], "expected": 8.0}, {"input": [-95.5, 8.5], "expected": 8.5}, {"input": [-95.5, 9.0], "expected": 9.0}, {"input": [-95.5, 9.5], "expected": 9.5}, {"input": [-95.5, 10.0], "expected": 10.0}, {"input": [-95.5, 10.5], "expected": 10.5}, {"input": [-95.5, 11.0], "expected": 11.0}, {"input": [-95.5, 11.5], "expected": 11.5}, {"input": [-95.5, 12.0], "expected": 12.0}, {"input": [-95.5, 12.5], "expected": 12.5}, {"input": [-95.5, 13.0], "expected": 13.0}, {"input": [-95.5, 13.5], "expected": 13.5}, {"input": [-95.5, 14.0], "expected": 14.0}, {"input": [-95.5, 14.5], "expected": 14.5}, {"input": [-95.5, 15.0], "expected": 15.0}, {"input": [-95.5, 15.5], "expected": 15.5}, {"input": [-95.5, 16.0], "expected": 16.0}, {"input": [-95.5, 16.5], "expected": 16.5}, {"input": [-95.5, 17.0], "expected": 17.0}, {"input": [-95.5, 17.5], "expected": 17.5}, {"input": [-95.5, 18.0], "expected": 18.0}, {"input": [-95.5, 18.5], "expected": 18.5}, {"input": [-95.5, 19.0], "expected": 19.0}, {"input": [-95.5, 19.5], "expected": 19.5}, {"input": [-95.5, 20.0], "expected": 20.0}, {"input": [-95.5, 20.5], "expected": 20.5}, {"input": [-95.5, 21.0], "expected": 21.0}, {"input": [-95.5, 21.5], "expected": 21.5}, {"input": [-95.5, 22.0], "expected": 22.0}, {"input": [-95.5, 22.5], "expected": 22.5}, {"input": [-95.5, 23.0], "expected": 23.0}, {"input": [-95.5, 23.5], "expected": 23.5}, {"input": [-95.5, 24.0], "expected": 24.0}, {"input": [-95.5, 24.5], "expected": 24.5}, {"input": [-95.5, 25.0], "expected": 25.0}, {"input": [-95.5, 25.5], "expected": 25.5}, {"input": [-95.5, 26.0], "expected": 26.0}, {"input": [-95.5, 26.5], "expected": 26.5}, {"input": [-95.5, 27.0], "expected": 27.0}, {"input": [-95.5, 27.5], "expected": 27.5}, {"input": [-95.5, 28.0], "expected": 28.0}, {"input": [-95.5, 28.5], "expected": 28.5}, {"input": [-95.5, 29.0], "expected": 29.0}, {"input": [-95.5, 29.5], "expected": 29.5}, {"input": [-95.5, 30.0], "expected": 30.0}, {"input": [-95.5, 30.5], "expected": 30.5}, {"input": [-95.5, 31.0], "expected": 31.0}, {"input": [-95.5, 31.5], "expected": 31.5}, {"input": [-95.5, 32.0], "expected": 32.0}, {"input": [-95.5, 32.5], "expected": 32.5}, {"input": [-95.5, 33.0], "expected": 33.0}, {"input": [-95.5, 33.5], "expected": 33.5}, {"input": [-95.5, 34.0], "expected": 34.0}, {"input": [-95.5, 34.5], "expected": 34.5}, {"input": [-95.5, 35.0], "expected": 35.0}, {"input": [-95.5, 35.5], "expected": 35.5}, {"input": [-95.5, 36.0], "expected": 36.0}, {"input": [-95.5, 36.5], "expected": 36.5}, {"input": [-95.5, 37.0], "expected": 37.0}, {"input": [-95.5, 37.5], "expected": 37.5}, {"input": [-95.5, 38.0], "expected": 38.0}, {"input": [-95.5, 38.5], "expected": 38.5}, {"input": [-95.5, 39.0], "expected": 39.0}, {"input": [-95.5, 39.5], "expected": 39.5}, {"input": [-95.5, 40.0], "expected": 40.0}, {"input": [-95.5, 40.5], "expected": 40.5}, {"input": [-95.5, 41.0], "expected": 41.0}, {"input": [-95.5, 41.5], "expected": 41.5}, {"input": [-95.5, 42.0], "expected": 42.0}, {"input": [-95.5, 42.5], "expected": 42.5}, {"input": [-95.5, 43.0], "expected": 43.0}, {"input": [-95.5, 43.5], "expected": 43.5}, {"input": [-95.5, 44.0], "expected": 44.0}, {"input": [-95.5, 44.5], "expected": 44.5}, {"input": [-95.5, 45.0], "expected": 45.0}, {"input": [-95.5, 45.5], "expected": 45.5}, {"input": [-95.5, 46.0], "expected": 46.0}, {"input": [-95.5, 46.5], "expected": 46.5}, {"input": [-95.5, 47.0], "expected": 47.0}, {"input": [-95.5, 47.5], "expected": 47.5}, {"input": [-95.5, 48.0], "expected": 48.0}, {"input": [-95.5, 48.5], "expected": 48.5}, {"input": [-95.5, 49.0], "expected": 49.0}, {"input": [-95.5, 49.5], "expected": 49.5}, {"input": [-95.5, 50.0], "expected": 50.0}, {"input": [-95.5, 50.5], "expected": 50.5}, {"input": [-95.5, 51.0], "expected": 51.0}, {"input": [-95.5, 51.5], "expected": 51.5}, {"input": [-95.5, 52.0], "expected": 52.0}, {"input": [-95.5, 52.5], "expected": 52.5}, {"input": [-95.5, 53.0], "expected": 53.0}, {"input": [-95.5, 53.5], "expected": 53.5}, {"input": [-95.5, 54.0], "expected": 54.0}, {"input": [-95.5, 54.5], "expected": 54.5}, {"input": [-95.5, 55.0], "expected": 55.0}, {"input": [-95.5, 55.5], "expected": 55.5}, {"input": [-95.5, 56.0], "expected": 56.0}, {"input": [-95.5, 56.5], "expected": 56.5}, {"input": [-95.5, 57.0], "expected": 57.0}, {"input": [-95.5, 57.5], "expected": 57.5}, {"input": [-95.5, 58.0], "expected": 58.0}, {"input": [-95.5, 58.5], "expected": 58.5}, {"input": [-95.5, 59.0], "expected": 59.0}, {"input": [-95.5, 59.5], "expected": 59.5}, {"input": [-95.5, 60.0], "expected": 60.0}, {"input": [-95.5, 60.5], "expected": 60.5}, {"input": [-95.5, 61.0], "expected": 61.0}, {"input": [-95.5, 61.5], "expected": 61.5}, {"input": [-95.5, 62.0], "expected": 62.0}, {"input": [-95.5, 62.5], "expected": 62.5}, {"input": [-95.5, 63.0], "expected": 63.0}, {"input": [-95.5, 63.5], "expected": 63.5}, {"input": [-95.5, 64.0], "expected": 64.0}, {"input": [-95.5, 64.5], "expected": 64.5}, {"input": [-95.5, 65.0], "expected": 65.0}, {"input": [-95.5, 65.5], "expected": 65.5}, {"input": [-95.5, 66.0], "expected": 66.0}, {"input": [-95.5, 66.5], "expected": 66.5}, {"input": [-95.5, 67.0], "expected": 67.0}, {"input": [-95.5, 67.5], "expected": 67.5}, {"input": [-95.5, 68.0], "expected": 68.0}, {"input": [-95.5, 68.5], "expected": 68.5}, {"input": [-95.5, 69.0], "expected": 69.0}, {"input": [-95.5, 69.5], "expected": 69.5}, {"input": [-95.5, 70.0], "expected": 70.0}, {"input": [-95.5, 70.5], "expected": 70.5}, {"input": [-95.5, 71.0], "expected": 71.0}, {"input": [-95.5, 71.5], "expected": 71.5}, {"input": [-95.5, 72.0], "expected": 72.0}, {"input": [-95.5, 72.5], "expected": 72.5}, {"input": [-95.5, 73.0], "expected": 73.0}, {"input": [-95.5, 73.5], "expected": 73.5}, {"input": [-95.5, 74.0], "expected": 74.0}, {"input": [-95.5, 74.5], "expected": 74.5}, {"input": [-95.5, 75.0], "expected": 75.0}, {"input": [-95.5, 75.5], "expected": 75.5}, {"input": [-95.5, 76.0], "expected": 76.0}, {"input": [-95.5, 76.5], "expected": 76.5}, {"input": [-95.5, 77.0], "expected": 77.0}, {"input": [-95.5, 77.5], "expected": 77.5}, {"input": [-95.5, 78.0], "expected": 78.0}, {"input": [-95.5, 78.5], "expected": 78.5}, {"input": [-95.5, 79.0], "expected": 79.0}, {"input": [-95.5, 79.5], "expected": 79.5}, {"input": [-95.5, 80.0], "expected": 80.0}, {"input": [-95.5, 80.5], "expected": 80.5}, {"input": [-95.5, 81.0], "expected": 81.0}, {"input": [-95.5, 81.5], "expected": 81.5}, {"input": [-95.5, 82.0], "expected": 82.0}, {"input": [-95.5, 82.5], "expected": 82.5}, {"input": [-95.5, 83.0], "expected": 83.0}, {"input": [-95.5, 83.5], "expected": 83.5}, {"input": [-95.5, 84.0], "expected": 84.0}, {"input": [-95.5, 84.5], "expected": 84.5}, {"input": [-95.5, 85.0], "expected": 85.0}, {"input": [-95.5, 85.5], "expected": 85.5}, {"input": [-95.5, 86.0], "expected": 86.0}, {"input": [-95.5, 86.5], "expected": 86.5}, {"input": [-95.5, 87.0], "expected": 87.0}, {"input": [-95.5, 87.5], "expected": 87.5}, {"input": [-95.5, 88.0], "expected": 88.0}, {"input": [-95.5, 88.5], "expected": 88.5}, {"input": [-95.5, 89.0], "expected": 89.0}, {"input": [-95.5, 89.5], "expected": 89.5}, {"input": [-95.5, 90.0], "expected": 90.0}, {"input": [-95.5, 90.5], "expected": 90.5}, {"input": [-95.5, 91.0], "expected": 91.0}, {"input": [-95.5, 91.5], "expected": 91.5}, {"input": [-95.5, 92.0], "expected": 92.0}, {"input": [-95.5, 92.5], "expected": 92.5}, {"input": [-95.5, 93.0], "expected": 93.0}, {"input": [-95.5, 93.5], "expected": 93.5}, {"input": [-95.5, 94.0], "expected": 94.0}, {"input": [-95.5, 94.5], "expected": 94.5}, {"input": [-95.5, 95.0], "expected": 95.0}, {"input": [-95.5, 95.5], "expected": 95.5}, {"input": [-95.5, 96.0], "expected": 96.0}, {"input": [-95.5, 96.5], "expected": 96.5}, {"input": [-95.5, 97.0], "expected": 97.0}, {"input": [-95.5, 97.5], "expected": 97.5}, {"input": [-95.5, 98.0], "expected": 98.0}, {"input": [-95.5, 98.5], "expected": 98.5}, {"input": [-95.5, 99.0], "expected": 99.0}, {"input": [-95.5, 99.5], "expected": 99.5}, {"input": [-95.0, -100.0], "expected": -94.99328465151088}, {"input": [-95.0, -99.5], "expected": -94.9889522551514}, {"input": [-95.0, -99.0], "expected": -94.9818500720822}, {"input": [-95.0, -98.5], "expected": -94.97024958172737}, {"input": [-95.0, -98.0], "expected": -94.95141264842626}, {"input": [-95.0, -97.5], "expected": -94.92111026570745}, {"input": [-95.0, -97.0], "expected": -94.87307198895702}, {"input": [-95.0, -96.5], "expected": -94.79858672201725}, {"input": [-95.0, -96.0], "expected": -94.68673831248178}, {"input": [-95.0, -95.5], "expected": -94.5259230158199}, {"input": [-95.0, -95.0], "expected": -94.30685281944005}, {"input": [-95.0, -94.5], "expected": -94.0259230158199}, {"input": [-95.0, -94.0], "expected": -93.68673831248178}, {"input": [-95.0, -93.5], "expected": -93.29858672201725}, {"input": [-95.0, -93.0], "expected": -92.87307198895702}, {"input": [-95.0, -92.5], "expected": -92.42111026570745}, {"input": [-95.0, -92.0], "expected": -91.95141264842626}, {"input": [-95.0, -91.5], "expected": -91.47024958172737}, {"input": [-95.0, -91.0], "expected": -90.9818500720822}, {"input": [-95.0, -90.5], "expected": -90.4889522551514}, {"input": [-95.0, -90.0], "expected": -89.99328465151088}, {"input": [-95.0, -89.5], "expected": -89.49592155672943}, {"input": [-95.0, -89.0], "expected": -88.99752431486228}, {"input": [-95.0, -88.5], "expected": -88.49849768984025}, {"input": [-95.0, -88.0], "expected": -87.99908853354623}, {"input": [-95.0, -87.5], "expected": -87.49944706852465}, {"input": [-95.0, -87.0], "expected": -86.9996645936271}, {"input": [-95.0, -86.5], "expected": -86.49979655232787}, {"input": [-95.0, -86.0], "expected": -85.99987659781027}, {"input": [-95.0, -85.5], "expected": -85.49992515097136}, {"input": [-95.0, -85.0], "expected": -84.99995460110078}, {"input": [-95.0, -84.5], "expected": -84.49997246392977}, {"input": [-95.0, -84.0], "expected": -83.99998329843868}, {"input": [-95.0, -83.5], "expected": -83.49998986995772}, {"input": [-95.0, -83.0], "expected": -82.99999385580652}, {"input": [-95.0, -82.5], "expected": -82.49999627335377}, {"input": [-95.0, -82.0], "expected": -81.99999773967315}, {"input": [-95.0, -81.5], "expected": -81.49999862904185}, {"input": [-95.0, -81.0], "expected": -80.99999916847163}, {"input": [-95.0, -80.5], "expected": -80.49999949565246}, {"input": [-95.0, -80.0], "expected": -79.99999969409772}, {"input": [-95.0, -79.5], "expected": -79.49999981446088}, {"input": [-95.0, -79.0], "expected": -78.99999988746484}, {"input": [-95.0, -78.5], "expected": -78.49999993174397}, {"input": [-95.0, -78.0], "expected": -77.99999995860063}, {"input": [-95.0, -77.5], "expected": -77.49999997489}, {"input": [-95.0, -77.0], "expected": -76.99999998477001}, {"input": [-95.0, -76.5], "expected": -76.49999999076255}, {"input": [-95.0, -76.0], "expected": -75.9999999943972}, {"input": [-95.0, -75.5], "expected": -75.49999999660173}, {"input": [-95.0, -75.0], "expected": -74.99999999793884}, {"input": [-95.0, -74.5], "expected": -74.49999999874984}, {"input": [-95.0, -74.0], "expected": -73.99999999924174}, {"input": [-95.0, -73.5], "expected": -73.4999999995401}, {"input": [-95.0, -73.0], "expected": -72.99999999972106}, {"input": [-95.0, -72.5], "expected": -72.4999999998308}, {"input": [-95.0, -72.0], "expected": -71.99999999989738}, {"input": [-95.0, -71.5], "expected": -71.49999999993776}, {"input": [-95.0, -71.0], "expected": -70.99999999996224}, {"input": [-95.0, -70.5], "expected": -70.4999999999771}, {"input": [-95.0, -70.0], "expected": -69.99999999998612}, {"input": [-95.0, -69.5], "expected": -69.49999999999157}, {"input": [-95.0, -69.0], "expected": -68.99999999999488}, {"input": [-95.0, -68.5], "expected": -68.4999999999969}, {"input": [-95.0, -68.0], "expected": -67.99999999999812}, {"input": [-95.0, -67.5], "expected": -67.49999999999886}, {"input": [-95.0, -67.0], "expected": -66.9999999999993}, {"input": [-95.0, -66.5], "expected": -66.49999999999957}, {"input": [-95.0, -66.0], "expected": -65.99999999999974}, {"input": [-95.0, -65.5], "expected": -65.49999999999984}, {"input": [-95.0, -65.0], "expected": -64.9999999999999}, {"input": [-95.0, -64.5], "expected": -64.49999999999994}, {"input": [-95.0, -64.0], "expected": -63.999999999999964}, {"input": [-95.0, -63.5], "expected": -63.49999999999998}, {"input": [-95.0, -63.0], "expected": -62.999999999999986}, {"input": [-95.0, -62.5], "expected": -62.49999999999999}, {"input": [-95.0, -62.0], "expected": -61.99999999999999}, {"input": [-95.0, -61.5], "expected": -61.5}, {"input": [-95.0, -61.0], "expected": -61.0}, {"input": [-95.0, -60.5], "expected": -60.5}, {"input": [-95.0, -60.0], "expected": -60.0}, {"input": [-95.0, -59.5], "expected": -59.5}, {"input": [-95.0, -59.0], "expected": -59.0}, {"input": [-95.0, -58.5], "expected": -58.5}, {"input": [-95.0, -58.0], "expected": -58.0}, {"input": [-95.0, -57.5], "expected": -57.5}, {"input": [-95.0, -57.0], "expected": -57.0}, {"input": [-95.0, -56.5], "expected": -56.5}, {"input": [-95.0, -56.0], "expected": -56.0}, {"input": [-95.0, -55.5], "expected": -55.5}, {"input": [-95.0, -55.0], "expected": -55.0}, {"input": [-95.0, -54.5], "expected": -54.5}, {"input": [-95.0, -54.0], "expected": -54.0}, {"input": [-95.0, -53.5], "expected": -53.5}, {"input": [-95.0, -53.0], "expected": -53.0}, {"input": [-95.0, -52.5], "expected": -52.5}, {"input": [-95.0, -52.0], "expected": -52.0}, {"input": [-95.0, -51.5], "expected": -51.5}, {"input": [-95.0, -51.0], "expected": -51.0}, {"input": [-95.0, -50.5], "expected": -50.5}, {"input": [-95.0, -50.0], "expected": -50.0}, {"input": [-95.0, -49.5], "expected": -49.5}, {"input": [-95.0, -49.0], "expected": -49.0}, {"input": [-95.0, -48.5], "expected": -48.5}, {"input": [-95.0, -48.0], "expected": -48.0}, {"input": [-95.0, -47.5], "expected": -47.5}, {"input": [-95.0, -47.0], "expected": -47.0}, {"input": [-95.0, -46.5], "expected": -46.5}, {"input": [-95.0, -46.0], "expected": -46.0}, {"input": [-95.0, -45.5], "expected": -45.5}, {"input": [-95.0, -45.0], "expected": -45.0}, {"input": [-95.0, -44.5], "expected": -44.5}, {"input": [-95.0, -44.0], "expected": -44.0}, {"input": [-95.0, -43.5], "expected": -43.5}, {"input": [-95.0, -43.0], "expected": -43.0}, {"input": [-95.0, -42.5], "expected": -42.5}, {"input": [-95.0, -42.0], "expected": -42.0}, {"input": [-95.0, -41.5], "expected": -41.5}, {"input": [-95.0, -41.0], "expected": -41.0}, {"input": [-95.0, -40.5], "expected": -40.5}, {"input": [-95.0, -40.0], "expected": -40.0}, {"input": [-95.0, -39.5], "expected": -39.5}, {"input": [-95.0, -39.0], "expected": -39.0}, {"input": [-95.0, -38.5], "expected": -38.5}, {"input": [-95.0, -38.0], "expected": -38.0}, {"input": [-95.0, -37.5], "expected": -37.5}, {"input": [-95.0, -37.0], "expected": -37.0}, {"input": [-95.0, -36.5], "expected": -36.5}, {"input": [-95.0, -36.0], "expected": -36.0}, {"input": [-95.0, -35.5], "expected": -35.5}, {"input": [-95.0, -35.0], "expected": -35.0}, {"input": [-95.0, -34.5], "expected": -34.5}, {"input": [-95.0, -34.0], "expected": -34.0}, {"input": [-95.0, -33.5], "expected": -33.5}, {"input": [-95.0, -33.0], "expected": -33.0}, {"input": [-95.0, -32.5], "expected": -32.5}, {"input": [-95.0, -32.0], "expected": -32.0}, {"input": [-95.0, -31.5], "expected": -31.5}, {"input": [-95.0, -31.0], "expected": -31.0}, {"input": [-95.0, -30.5], "expected": -30.5}, {"input": [-95.0, -30.0], "expected": -30.0}, {"input": [-95.0, -29.5], "expected": -29.5}, {"input": [-95.0, -29.0], "expected": -29.0}, {"input": [-95.0, -28.5], "expected": -28.5}, {"input": [-95.0, -28.0], "expected": -28.0}, {"input": [-95.0, -27.5], "expected": -27.5}, {"input": [-95.0, -27.0], "expected": -27.0}, {"input": [-95.0, -26.5], "expected": -26.5}, {"input": [-95.0, -26.0], "expected": -26.0}, {"input": [-95.0, -25.5], "expected": -25.5}, {"input": [-95.0, -25.0], "expected": -25.0}, {"input": [-95.0, -24.5], "expected": -24.5}, {"input": [-95.0, -24.0], "expected": -24.0}, {"input": [-95.0, -23.5], "expected": -23.5}, {"input": [-95.0, -23.0], "expected": -23.0}, {"input": [-95.0, -22.5], "expected": -22.5}, {"input": [-95.0, -22.0], "expected": -22.0}, {"input": [-95.0, -21.5], "expected": -21.5}, {"input": [-95.0, -21.0], "expected": -21.0}, {"input": [-95.0, -20.5], "expected": -20.5}, {"input": [-95.0, -20.0], "expected": -20.0}, {"input": [-95.0, -19.5], "expected": -19.5}, {"input": [-95.0, -19.0], "expected": -19.0}, {"input": [-95.0, -18.5], "expected": -18.5}, {"input": [-95.0, -18.0], "expected": -18.0}, {"input": [-95.0, -17.5], "expected": -17.5}, {"input": [-95.0, -17.0], "expected": -17.0}, {"input": [-95.0, -16.5], "expected": -16.5}, {"input": [-95.0, -16.0], "expected": -16.0}, {"input": [-95.0, -15.5], "expected": -15.5}, {"input": [-95.0, -15.0], "expected": -15.0}, {"input": [-95.0, -14.5], "expected": -14.5}, {"input": [-95.0, -14.0], "expected": -14.0}, {"input": [-95.0, -13.5], "expected": -13.5}, {"input": [-95.0, -13.0], "expected": -13.0}, {"input": [-95.0, -12.5], "expected": -12.5}, {"input": [-95.0, -12.0], "expected": -12.0}, {"input": [-95.0, -11.5], "expected": -11.5}, {"input": [-95.0, -11.0], "expected": -11.0}, {"input": [-95.0, -10.5], "expected": -10.5}, {"input": [-95.0, -10.0], "expected": -10.0}, {"input": [-95.0, -9.5], "expected": -9.5}, {"input": [-95.0, -9.0], "expected": -9.0}, {"input": [-95.0, -8.5], "expected": -8.5}, {"input": [-95.0, -8.0], "expected": -8.0}, {"input": [-95.0, -7.5], "expected": -7.5}, {"input": [-95.0, -7.0], "expected": -7.0}, {"input": [-95.0, -6.5], "expected": -6.5}, {"input": [-95.0, -6.0], "expected": -6.0}, {"input": [-95.0, -5.5], "expected": -5.5}, {"input": [-95.0, -5.0], "expected": -5.0}, {"input": [-95.0, -4.5], "expected": -4.5}, {"input": [-95.0, -4.0], "expected": -4.0}, {"input": [-95.0, -3.5], "expected": -3.5}, {"input": [-95.0, -3.0], "expected": -3.0}, {"input": [-95.0, -2.5], "expected": -2.5}, {"input": [-95.0, -2.0], "expected": -2.0}, {"input": [-95.0, -1.5], "expected": -1.5}, {"input": [-95.0, -1.0], "expected": -1.0}, {"input": [-95.0, -0.5], "expected": -0.5}, {"input": [-95.0, 0.0], "expected": 5.5210822770285325e-42}, {"input": [-95.0, 0.5], "expected": 0.5}, {"input": [-95.0, 1.0], "expected": 1.0}, {"input": [-95.0, 1.5], "expected": 1.5}, {"input": [-95.0, 2.0], "expected": 2.0}, {"input": [-95.0, 2.5], "expected": 2.5}, {"input": [-95.0, 3.0], "expected": 3.0}, {"input": [-95.0, 3.5], "expected": 3.5}, {"input": [-95.0, 4.0], "expected": 4.0}, {"input": [-95.0, 4.5], "expected": 4.5}, {"input": [-95.0, 5.0], "expected": 5.0}, {"input": [-95.0, 5.5], "expected": 5.5}, {"input": [-95.0, 6.0], "expected": 6.0}, {"input": [-95.0, 6.5], "expected": 6.5}, {"input": [-95.0, 7.0], "expected": 7.0}, {"input": [-95.0, 7.5], "expected": 7.5}, {"input": [-95.0, 8.0], "expected": 8.0}, {"input": [-95.0, 8.5], "expected": 8.5}, {"input": [-95.0, 9.0], "expected": 9.0}, {"input": [-95.0, 9.5], "expected": 9.5}, {"input": [-95.0, 10.0], "expected": 10.0}, {"input": [-95.0, 10.5], "expected": 10.5}, {"input": [-95.0, 11.0], "expected": 11.0}, {"input": [-95.0, 11.5], "expected": 11.5}, {"input": [-95.0, 12.0], "expected": 12.0}, {"input": [-95.0, 12.5], "expected": 12.5}, {"input": [-95.0, 13.0], "expected": 13.0}, {"input": [-95.0, 13.5], "expected": 13.5}, {"input": [-95.0, 14.0], "expected": 14.0}, {"input": [-95.0, 14.5], "expected": 14.5}, {"input": [-95.0, 15.0], "expected": 15.0}, {"input": [-95.0, 15.5], "expected": 15.5}, {"input": [-95.0, 16.0], "expected": 16.0}, {"input": [-95.0, 16.5], "expected": 16.5}, {"input": [-95.0, 17.0], "expected": 17.0}, {"input": [-95.0, 17.5], "expected": 17.5}, {"input": [-95.0, 18.0], "expected": 18.0}, {"input": [-95.0, 18.5], "expected": 18.5}, {"input": [-95.0, 19.0], "expected": 19.0}, {"input": [-95.0, 19.5], "expected": 19.5}, {"input": [-95.0, 20.0], "expected": 20.0}, {"input": [-95.0, 20.5], "expected": 20.5}, {"input": [-95.0, 21.0], "expected": 21.0}, {"input": [-95.0, 21.5], "expected": 21.5}, {"input": [-95.0, 22.0], "expected": 22.0}, {"input": [-95.0, 22.5], "expected": 22.5}, {"input": [-95.0, 23.0], "expected": 23.0}, {"input": [-95.0, 23.5], "expected": 23.5}, {"input": [-95.0, 24.0], "expected": 24.0}, {"input": [-95.0, 24.5], "expected": 24.5}, {"input": [-95.0, 25.0], "expected": 25.0}, {"input": [-95.0, 25.5], "expected": 25.5}, {"input": [-95.0, 26.0], "expected": 26.0}, {"input": [-95.0, 26.5], "expected": 26.5}, {"input": [-95.0, 27.0], "expected": 27.0}, {"input": [-95.0, 27.5], "expected": 27.5}, {"input": [-95.0, 28.0], "expected": 28.0}, {"input": [-95.0, 28.5], "expected": 28.5}, {"input": [-95.0, 29.0], "expected": 29.0}, {"input": [-95.0, 29.5], "expected": 29.5}, {"input": [-95.0, 30.0], "expected": 30.0}, {"input": [-95.0, 30.5], "expected": 30.5}, {"input": [-95.0, 31.0], "expected": 31.0}, {"input": [-95.0, 31.5], "expected": 31.5}, {"input": [-95.0, 32.0], "expected": 32.0}, {"input": [-95.0, 32.5], "expected": 32.5}, {"input": [-95.0, 33.0], "expected": 33.0}, {"input": [-95.0, 33.5], "expected": 33.5}, {"input": [-95.0, 34.0], "expected": 34.0}, {"input": [-95.0, 34.5], "expected": 34.5}, {"input": [-95.0, 35.0], "expected": 35.0}, {"input": [-95.0, 35.5], "expected": 35.5}, {"input": [-95.0, 36.0], "expected": 36.0}, {"input": [-95.0, 36.5], "expected": 36.5}, {"input": [-95.0, 37.0], "expected": 37.0}, {"input": [-95.0, 37.5], "expected": 37.5}, {"input": [-95.0, 38.0], "expected": 38.0}, {"input": [-95.0, 38.5], "expected": 38.5}, {"input": [-95.0, 39.0], "expected": 39.0}, {"input": [-95.0, 39.5], "expected": 39.5}, {"input": [-95.0, 40.0], "expected": 40.0}, {"input": [-95.0, 40.5], "expected": 40.5}, {"input": [-95.0, 41.0], "expected": 41.0}, {"input": [-95.0, 41.5], "expected": 41.5}, {"input": [-95.0, 42.0], "expected": 42.0}, {"input": [-95.0, 42.5], "expected": 42.5}, {"input": [-95.0, 43.0], "expected": 43.0}, {"input": [-95.0, 43.5], "expected": 43.5}, {"input": [-95.0, 44.0], "expected": 44.0}, {"input": [-95.0, 44.5], "expected": 44.5}, {"input": [-95.0, 45.0], "expected": 45.0}, {"input": [-95.0, 45.5], "expected": 45.5}, {"input": [-95.0, 46.0], "expected": 46.0}, {"input": [-95.0, 46.5], "expected": 46.5}, {"input": [-95.0, 47.0], "expected": 47.0}, {"input": [-95.0, 47.5], "expected": 47.5}, {"input": [-95.0, 48.0], "expected": 48.0}, {"input": [-95.0, 48.5], "expected": 48.5}, {"input": [-95.0, 49.0], "expected": 49.0}, {"input": [-95.0, 49.5], "expected": 49.5}, {"input": [-95.0, 50.0], "expected": 50.0}, {"input": [-95.0, 50.5], "expected": 50.5}, {"input": [-95.0, 51.0], "expected": 51.0}, {"input": [-95.0, 51.5], "expected": 51.5}, {"input": [-95.0, 52.0], "expected": 52.0}, {"input": [-95.0, 52.5], "expected": 52.5}, {"input": [-95.0, 53.0], "expected": 53.0}, {"input": [-95.0, 53.5], "expected": 53.5}, {"input": [-95.0, 54.0], "expected": 54.0}, {"input": [-95.0, 54.5], "expected": 54.5}, {"input": [-95.0, 55.0], "expected": 55.0}, {"input": [-95.0, 55.5], "expected": 55.5}, {"input": [-95.0, 56.0], "expected": 56.0}, {"input": [-95.0, 56.5], "expected": 56.5}, {"input": [-95.0, 57.0], "expected": 57.0}, {"input": [-95.0, 57.5], "expected": 57.5}, {"input": [-95.0, 58.0], "expected": 58.0}, {"input": [-95.0, 58.5], "expected": 58.5}, {"input": [-95.0, 59.0], "expected": 59.0}, {"input": [-95.0, 59.5], "expected": 59.5}, {"input": [-95.0, 60.0], "expected": 60.0}, {"input": [-95.0, 60.5], "expected": 60.5}, {"input": [-95.0, 61.0], "expected": 61.0}, {"input": [-95.0, 61.5], "expected": 61.5}, {"input": [-95.0, 62.0], "expected": 62.0}, {"input": [-95.0, 62.5], "expected": 62.5}, {"input": [-95.0, 63.0], "expected": 63.0}, {"input": [-95.0, 63.5], "expected": 63.5}, {"input": [-95.0, 64.0], "expected": 64.0}, {"input": [-95.0, 64.5], "expected": 64.5}, {"input": [-95.0, 65.0], "expected": 65.0}, {"input": [-95.0, 65.5], "expected": 65.5}, {"input": [-95.0, 66.0], "expected": 66.0}, {"input": [-95.0, 66.5], "expected": 66.5}, {"input": [-95.0, 67.0], "expected": 67.0}, {"input": [-95.0, 67.5], "expected": 67.5}, {"input": [-95.0, 68.0], "expected": 68.0}, {"input": [-95.0, 68.5], "expected": 68.5}, {"input": [-95.0, 69.0], "expected": 69.0}, {"input": [-95.0, 69.5], "expected": 69.5}, {"input": [-95.0, 70.0], "expected": 70.0}, {"input": [-95.0, 70.5], "expected": 70.5}, {"input": [-95.0, 71.0], "expected": 71.0}, {"input": [-95.0, 71.5], "expected": 71.5}, {"input": [-95.0, 72.0], "expected": 72.0}, {"input": [-95.0, 72.5], "expected": 72.5}, {"input": [-95.0, 73.0], "expected": 73.0}, {"input": [-95.0, 73.5], "expected": 73.5}, {"input": [-95.0, 74.0], "expected": 74.0}, {"input": [-95.0, 74.5], "expected": 74.5}, {"input": [-95.0, 75.0], "expected": 75.0}, {"input": [-95.0, 75.5], "expected": 75.5}, {"input": [-95.0, 76.0], "expected": 76.0}, {"input": [-95.0, 76.5], "expected": 76.5}, {"input": [-95.0, 77.0], "expected": 77.0}, {"input": [-95.0, 77.5], "expected": 77.5}, {"input": [-95.0, 78.0], "expected": 78.0}, {"input": [-95.0, 78.5], "expected": 78.5}, {"input": [-95.0, 79.0], "expected": 79.0}, {"input": [-95.0, 79.5], "expected": 79.5}, {"input": [-95.0, 80.0], "expected": 80.0}, {"input": [-95.0, 80.5], "expected": 80.5}, {"input": [-95.0, 81.0], "expected": 81.0}, {"input": [-95.0, 81.5], "expected": 81.5}, {"input": [-95.0, 82.0], "expected": 82.0}, {"input": [-95.0, 82.5], "expected": 82.5}, {"input": [-95.0, 83.0], "expected": 83.0}, {"input": [-95.0, 83.5], "expected": 83.5}, {"input": [-95.0, 84.0], "expected": 84.0}, {"input": [-95.0, 84.5], "expected": 84.5}, {"input": [-95.0, 85.0], "expected": 85.0}, {"input": [-95.0, 85.5], "expected": 85.5}, {"input": [-95.0, 86.0], "expected": 86.0}, {"input": [-95.0, 86.5], "expected": 86.5}, {"input": [-95.0, 87.0], "expected": 87.0}, {"input": [-95.0, 87.5], "expected": 87.5}, {"input": [-95.0, 88.0], "expected": 88.0}, {"input": [-95.0, 88.5], "expected": 88.5}, {"input": [-95.0, 89.0], "expected": 89.0}, {"input": [-95.0, 89.5], "expected": 89.5}, {"input": [-95.0, 90.0], "expected": 90.0}, {"input": [-95.0, 90.5], "expected": 90.5}, {"input": [-95.0, 91.0], "expected": 91.0}, {"input": [-95.0, 91.5], "expected": 91.5}, {"input": [-95.0, 92.0], "expected": 92.0}, {"input": [-95.0, 92.5], "expected": 92.5}, {"input": [-95.0, 93.0], "expected": 93.0}, {"input": [-95.0, 93.5], "expected": 93.5}, {"input": [-95.0, 94.0], "expected": 94.0}, {"input": [-95.0, 94.5], "expected": 94.5}, {"input": [-95.0, 95.0], "expected": 95.0}, {"input": [-95.0, 95.5], "expected": 95.5}, {"input": [-95.0, 96.0], "expected": 96.0}, {"input": [-95.0, 96.5], "expected": 96.5}, {"input": [-95.0, 97.0], "expected": 97.0}, {"input": [-95.0, 97.5], "expected": 97.5}, {"input": [-95.0, 98.0], "expected": 98.0}, {"input": [-95.0, 98.5], "expected": 98.5}, {"input": [-95.0, 99.0], "expected": 99.0}, {"input": [-95.0, 99.5], "expected": 99.5}, {"input": [-94.5, -100.0], "expected": -94.49592155672943}, {"input": [-94.5, -99.5], "expected": -94.49328465151088}, {"input": [-94.5, -99.0], "expected": -94.4889522551514}, {"input": [-94.5, -98.5], "expected": -94.4818500720822}, {"input": [-94.5, -98.0], "expected": -94.47024958172737}, {"input": [-94.5, -97.5], "expected": -94.45141264842626}, {"input": [-94.5, -97.0], "expected": -94.42111026570745}, {"input": [-94.5, -96.5], "expected": -94.37307198895702}, {"input": [-94.5, -96.0], "expected": -94.29858672201725}, {"input": [-94.5, -95.5], "expected": -94.18673831248178}, {"input": [-94.5, -95.0], "expected": -94.0259230158199}, {"input": [-94.5, -94.5], "expected": -93.80685281944005}, {"input": [-94.5, -94.0], "expected": -93.5259230158199}, {"input": [-94.5, -93.5], "expected": -93.18673831248178}, {"input": [-94.5, -93.0], "expected": -92.79858672201725}, {"input": [-94.5, -92.5], "expected": -92.37307198895702}, {"input": [-94.5, -92.0], "expected": -91.92111026570745}, {"input": [-94.5, -91.5], "expected": -91.45141264842626}, {"input": [-94.5, -91.0], "expected": -90.97024958172737}, {"input": [-94.5, -90.5], "expected": -90.4818500720822}, {"input": [-94.5, -90.0], "expected": -89.9889522551514}, {"input": [-94.5, -89.5], "expected": -89.49328465151088}, {"input": [-94.5, -89.0], "expected": -88.99592155672943}, {"input": [-94.5, -88.5], "expected": -88.49752431486228}, {"input": [-94.5, -88.0], "expected": -87.99849768984025}, {"input": [-94.5, -87.5], "expected": -87.49908853354623}, {"input": [-94.5, -87.0], "expected": -86.99944706852465}, {"input": [-94.5, -86.5], "expected": -86.4996645936271}, {"input": [-94.5, -86.0], "expected": -85.99979655232787}, {"input": [-94.5, -85.5], "expected": -85.49987659781027}, {"input": [-94.5, -85.0], "expected": -84.99992515097136}, {"input": [-94.5, -84.5], "expected": -84.49995460110078}, {"input": [-94.5, -84.0], "expected": -83.99997246392977}, {"input": [-94.5, -83.5], "expected": -83.49998329843868}, {"input": [-94.5, -83.0], "expected": -82.99998986995772}, {"input": [-94.5, -82.5], "expected": -82.49999385580652}, {"input": [-94.5, -82.0], "expected": -81.99999627335377}, {"input": [-94.5, -81.5], "expected": -81.49999773967315}, {"input": [-94.5, -81.0], "expected": -80.99999862904185}, {"input": [-94.5, -80.5], "expected": -80.49999916847163}, {"input": [-94.5, -80.0], "expected": -79.99999949565246}, {"input": [-94.5, -79.5], "expected": -79.49999969409772}, {"input": [-94.5, -79.0], "expected": -78.99999981446088}, {"input": [-94.5, -78.5], "expected": -78.49999988746484}, {"input": [-94.5, -78.0], "expected": -77.99999993174397}, {"input": [-94.5, -77.5], "expected": -77.49999995860063}, {"input": [-94.5, -77.0], "expected": -76.99999997489}, {"input": [-94.5, -76.5], "expected": -76.49999998477001}, {"input": [-94.5, -76.0], "expected": -75.99999999076255}, {"input": [-94.5, -75.5], "expected": -75.4999999943972}, {"input": [-94.5, -75.0], "expected": -74.99999999660173}, {"input": [-94.5, -74.5], "expected": -74.49999999793884}, {"input": [-94.5, -74.0], "expected": -73.99999999874984}, {"input": [-94.5, -73.5], "expected": -73.49999999924174}, {"input": [-94.5, -73.0], "expected": -72.9999999995401}, {"input": [-94.5, -72.5], "expected": -72.49999999972106}, {"input": [-94.5, -72.0], "expected": -71.9999999998308}, {"input": [-94.5, -71.5], "expected": -71.49999999989738}, {"input": [-94.5, -71.0], "expected": -70.99999999993776}, {"input": [-94.5, -70.5], "expected": -70.49999999996224}, {"input": [-94.5, -70.0], "expected": -69.9999999999771}, {"input": [-94.5, -69.5], "expected": -69.49999999998612}, {"input": [-94.5, -69.0], "expected": -68.99999999999157}, {"input": [-94.5, -68.5], "expected": -68.49999999999488}, {"input": [-94.5, -68.0], "expected": -67.9999999999969}, {"input": [-94.5, -67.5], "expected": -67.49999999999812}, {"input": [-94.5, -67.0], "expected": -66.99999999999886}, {"input": [-94.5, -66.5], "expected": -66.4999999999993}, {"input": [-94.5, -66.0], "expected": -65.99999999999957}, {"input": [-94.5, -65.5], "expected": -65.49999999999974}, {"input": [-94.5, -65.0], "expected": -64.99999999999984}, {"input": [-94.5, -64.5], "expected": -64.4999999999999}, {"input": [-94.5, -64.0], "expected": -63.99999999999994}, {"input": [-94.5, -63.5], "expected": -63.499999999999964}, {"input": [-94.5, -63.0], "expected": -62.99999999999998}, {"input": [-94.5, -62.5], "expected": -62.499999999999986}, {"input": [-94.5, -62.0], "expected": -61.99999999999999}, {"input": [-94.5, -61.5], "expected": -61.49999999999999}, {"input": [-94.5, -61.0], "expected": -61.0}, {"input": [-94.5, -60.5], "expected": -60.5}, {"input": [-94.5, -60.0], "expected": -60.0}, {"input": [-94.5, -59.5], "expected": -59.5}, {"input": [-94.5, -59.0], "expected": -59.0}, {"input": [-94.5, -58.5], "expected": -58.5}, {"input": [-94.5, -58.0], "expected": -58.0}, {"input": [-94.5, -57.5], "expected": -57.5}, {"input": [-94.5, -57.0], "expected": -57.0}, {"input": [-94.5, -56.5], "expected": -56.5}, {"input": [-94.5, -56.0], "expected": -56.0}, {"input": [-94.5, -55.5], "expected": -55.5}, {"input": [-94.5, -55.0], "expected": -55.0}, {"input": [-94.5, -54.5], "expected": -54.5}, {"input": [-94.5, -54.0], "expected": -54.0}, {"input": [-94.5, -53.5], "expected": -53.5}, {"input": [-94.5, -53.0], "expected": -53.0}, {"input": [-94.5, -52.5], "expected": -52.5}, {"input": [-94.5, -52.0], "expected": -52.0}, {"input": [-94.5, -51.5], "expected": -51.5}, {"input": [-94.5, -51.0], "expected": -51.0}, {"input": [-94.5, -50.5], "expected": -50.5}, {"input": [-94.5, -50.0], "expected": -50.0}, {"input": [-94.5, -49.5], "expected": -49.5}, {"input": [-94.5, -49.0], "expected": -49.0}, {"input": [-94.5, -48.5], "expected": -48.5}, {"input": [-94.5, -48.0], "expected": -48.0}, {"input": [-94.5, -47.5], "expected": -47.5}, {"input": [-94.5, -47.0], "expected": -47.0}, {"input": [-94.5, -46.5], "expected": -46.5}, {"input": [-94.5, -46.0], "expected": -46.0}, {"input": [-94.5, -45.5], "expected": -45.5}, {"input": [-94.5, -45.0], "expected": -45.0}, {"input": [-94.5, -44.5], "expected": -44.5}, {"input": [-94.5, -44.0], "expected": -44.0}, {"input": [-94.5, -43.5], "expected": -43.5}, {"input": [-94.5, -43.0], "expected": -43.0}, {"input": [-94.5, -42.5], "expected": -42.5}, {"input": [-94.5, -42.0], "expected": -42.0}, {"input": [-94.5, -41.5], "expected": -41.5}, {"input": [-94.5, -41.0], "expected": -41.0}, {"input": [-94.5, -40.5], "expected": -40.5}, {"input": [-94.5, -40.0], "expected": -40.0}, {"input": [-94.5, -39.5], "expected": -39.5}, {"input": [-94.5, -39.0], "expected": -39.0}, {"input": [-94.5, -38.5], "expected": -38.5}, {"input": [-94.5, -38.0], "expected": -38.0}, {"input": [-94.5, -37.5], "expected": -37.5}, {"input": [-94.5, -37.0], "expected": -37.0}, {"input": [-94.5, -36.5], "expected": -36.5}, {"input": [-94.5, -36.0], "expected": -36.0}, {"input": [-94.5, -35.5], "expected": -35.5}, {"input": [-94.5, -35.0], "expected": -35.0}, {"input": [-94.5, -34.5], "expected": -34.5}, {"input": [-94.5, -34.0], "expected": -34.0}, {"input": [-94.5, -33.5], "expected": -33.5}, {"input": [-94.5, -33.0], "expected": -33.0}, {"input": [-94.5, -32.5], "expected": -32.5}, {"input": [-94.5, -32.0], "expected": -32.0}, {"input": [-94.5, -31.5], "expected": -31.5}, {"input": [-94.5, -31.0], "expected": -31.0}, {"input": [-94.5, -30.5], "expected": -30.5}, {"input": [-94.5, -30.0], "expected": -30.0}, {"input": [-94.5, -29.5], "expected": -29.5}, {"input": [-94.5, -29.0], "expected": -29.0}, {"input": [-94.5, -28.5], "expected": -28.5}, {"input": [-94.5, -28.0], "expected": -28.0}, {"input": [-94.5, -27.5], "expected": -27.5}, {"input": [-94.5, -27.0], "expected": -27.0}, {"input": [-94.5, -26.5], "expected": -26.5}, {"input": [-94.5, -26.0], "expected": -26.0}, {"input": [-94.5, -25.5], "expected": -25.5}, {"input": [-94.5, -25.0], "expected": -25.0}, {"input": [-94.5, -24.5], "expected": -24.5}, {"input": [-94.5, -24.0], "expected": -24.0}, {"input": [-94.5, -23.5], "expected": -23.5}, {"input": [-94.5, -23.0], "expected": -23.0}, {"input": [-94.5, -22.5], "expected": -22.5}, {"input": [-94.5, -22.0], "expected": -22.0}, {"input": [-94.5, -21.5], "expected": -21.5}, {"input": [-94.5, -21.0], "expected": -21.0}, {"input": [-94.5, -20.5], "expected": -20.5}, {"input": [-94.5, -20.0], "expected": -20.0}, {"input": [-94.5, -19.5], "expected": -19.5}, {"input": [-94.5, -19.0], "expected": -19.0}, {"input": [-94.5, -18.5], "expected": -18.5}, {"input": [-94.5, -18.0], "expected": -18.0}, {"input": [-94.5, -17.5], "expected": -17.5}, {"input": [-94.5, -17.0], "expected": -17.0}, {"input": [-94.5, -16.5], "expected": -16.5}, {"input": [-94.5, -16.0], "expected": -16.0}, {"input": [-94.5, -15.5], "expected": -15.5}, {"input": [-94.5, -15.0], "expected": -15.0}, {"input": [-94.5, -14.5], "expected": -14.5}, {"input": [-94.5, -14.0], "expected": -14.0}, {"input": [-94.5, -13.5], "expected": -13.5}, {"input": [-94.5, -13.0], "expected": -13.0}, {"input": [-94.5, -12.5], "expected": -12.5}, {"input": [-94.5, -12.0], "expected": -12.0}, {"input": [-94.5, -11.5], "expected": -11.5}, {"input": [-94.5, -11.0], "expected": -11.0}, {"input": [-94.5, -10.5], "expected": -10.5}, {"input": [-94.5, -10.0], "expected": -10.0}, {"input": [-94.5, -9.5], "expected": -9.5}, {"input": [-94.5, -9.0], "expected": -9.0}, {"input": [-94.5, -8.5], "expected": -8.5}, {"input": [-94.5, -8.0], "expected": -8.0}, {"input": [-94.5, -7.5], "expected": -7.5}, {"input": [-94.5, -7.0], "expected": -7.0}, {"input": [-94.5, -6.5], "expected": -6.5}, {"input": [-94.5, -6.0], "expected": -6.0}, {"input": [-94.5, -5.5], "expected": -5.5}, {"input": [-94.5, -5.0], "expected": -5.0}, {"input": [-94.5, -4.5], "expected": -4.5}, {"input": [-94.5, -4.0], "expected": -4.0}, {"input": [-94.5, -3.5], "expected": -3.5}, {"input": [-94.5, -3.0], "expected": -3.0}, {"input": [-94.5, -2.5], "expected": -2.5}, {"input": [-94.5, -2.0], "expected": -2.0}, {"input": [-94.5, -1.5], "expected": -1.5}, {"input": [-94.5, -1.0], "expected": -1.0}, {"input": [-94.5, -0.5], "expected": -0.5}, {"input": [-94.5, 0.0], "expected": 9.10272578742244e-42}, {"input": [-94.5, 0.5], "expected": 0.5}, {"input": [-94.5, 1.0], "expected": 1.0}, {"input": [-94.5, 1.5], "expected": 1.5}, {"input": [-94.5, 2.0], "expected": 2.0}, {"input": [-94.5, 2.5], "expected": 2.5}, {"input": [-94.5, 3.0], "expected": 3.0}, {"input": [-94.5, 3.5], "expected": 3.5}, {"input": [-94.5, 4.0], "expected": 4.0}, {"input": [-94.5, 4.5], "expected": 4.5}, {"input": [-94.5, 5.0], "expected": 5.0}, {"input": [-94.5, 5.5], "expected": 5.5}, {"input": [-94.5, 6.0], "expected": 6.0}, {"input": [-94.5, 6.5], "expected": 6.5}, {"input": [-94.5, 7.0], "expected": 7.0}, {"input": [-94.5, 7.5], "expected": 7.5}, {"input": [-94.5, 8.0], "expected": 8.0}, {"input": [-94.5, 8.5], "expected": 8.5}, {"input": [-94.5, 9.0], "expected": 9.0}, {"input": [-94.5, 9.5], "expected": 9.5}, {"input": [-94.5, 10.0], "expected": 10.0}, {"input": [-94.5, 10.5], "expected": 10.5}, {"input": [-94.5, 11.0], "expected": 11.0}, {"input": [-94.5, 11.5], "expected": 11.5}, {"input": [-94.5, 12.0], "expected": 12.0}, {"input": [-94.5, 12.5], "expected": 12.5}, {"input": [-94.5, 13.0], "expected": 13.0}, {"input": [-94.5, 13.5], "expected": 13.5}, {"input": [-94.5, 14.0], "expected": 14.0}, {"input": [-94.5, 14.5], "expected": 14.5}, {"input": [-94.5, 15.0], "expected": 15.0}, {"input": [-94.5, 15.5], "expected": 15.5}, {"input": [-94.5, 16.0], "expected": 16.0}, {"input": [-94.5, 16.5], "expected": 16.5}, {"input": [-94.5, 17.0], "expected": 17.0}, {"input": [-94.5, 17.5], "expected": 17.5}, {"input": [-94.5, 18.0], "expected": 18.0}, {"input": [-94.5, 18.5], "expected": 18.5}, {"input": [-94.5, 19.0], "expected": 19.0}, {"input": [-94.5, 19.5], "expected": 19.5}, {"input": [-94.5, 20.0], "expected": 20.0}, {"input": [-94.5, 20.5], "expected": 20.5}, {"input": [-94.5, 21.0], "expected": 21.0}, {"input": [-94.5, 21.5], "expected": 21.5}, {"input": [-94.5, 22.0], "expected": 22.0}, {"input": [-94.5, 22.5], "expected": 22.5}, {"input": [-94.5, 23.0], "expected": 23.0}, {"input": [-94.5, 23.5], "expected": 23.5}, {"input": [-94.5, 24.0], "expected": 24.0}, {"input": [-94.5, 24.5], "expected": 24.5}, {"input": [-94.5, 25.0], "expected": 25.0}, {"input": [-94.5, 25.5], "expected": 25.5}, {"input": [-94.5, 26.0], "expected": 26.0}, {"input": [-94.5, 26.5], "expected": 26.5}, {"input": [-94.5, 27.0], "expected": 27.0}, {"input": [-94.5, 27.5], "expected": 27.5}, {"input": [-94.5, 28.0], "expected": 28.0}, {"input": [-94.5, 28.5], "expected": 28.5}, {"input": [-94.5, 29.0], "expected": 29.0}, {"input": [-94.5, 29.5], "expected": 29.5}, {"input": [-94.5, 30.0], "expected": 30.0}, {"input": [-94.5, 30.5], "expected": 30.5}, {"input": [-94.5, 31.0], "expected": 31.0}, {"input": [-94.5, 31.5], "expected": 31.5}, {"input": [-94.5, 32.0], "expected": 32.0}, {"input": [-94.5, 32.5], "expected": 32.5}, {"input": [-94.5, 33.0], "expected": 33.0}, {"input": [-94.5, 33.5], "expected": 33.5}, {"input": [-94.5, 34.0], "expected": 34.0}, {"input": [-94.5, 34.5], "expected": 34.5}, {"input": [-94.5, 35.0], "expected": 35.0}, {"input": [-94.5, 35.5], "expected": 35.5}, {"input": [-94.5, 36.0], "expected": 36.0}, {"input": [-94.5, 36.5], "expected": 36.5}, {"input": [-94.5, 37.0], "expected": 37.0}, {"input": [-94.5, 37.5], "expected": 37.5}, {"input": [-94.5, 38.0], "expected": 38.0}, {"input": [-94.5, 38.5], "expected": 38.5}, {"input": [-94.5, 39.0], "expected": 39.0}, {"input": [-94.5, 39.5], "expected": 39.5}, {"input": [-94.5, 40.0], "expected": 40.0}, {"input": [-94.5, 40.5], "expected": 40.5}, {"input": [-94.5, 41.0], "expected": 41.0}, {"input": [-94.5, 41.5], "expected": 41.5}, {"input": [-94.5, 42.0], "expected": 42.0}, {"input": [-94.5, 42.5], "expected": 42.5}, {"input": [-94.5, 43.0], "expected": 43.0}, {"input": [-94.5, 43.5], "expected": 43.5}, {"input": [-94.5, 44.0], "expected": 44.0}, {"input": [-94.5, 44.5], "expected": 44.5}, {"input": [-94.5, 45.0], "expected": 45.0}, {"input": [-94.5, 45.5], "expected": 45.5}, {"input": [-94.5, 46.0], "expected": 46.0}, {"input": [-94.5, 46.5], "expected": 46.5}, {"input": [-94.5, 47.0], "expected": 47.0}, {"input": [-94.5, 47.5], "expected": 47.5}, {"input": [-94.5, 48.0], "expected": 48.0}, {"input": [-94.5, 48.5], "expected": 48.5}, {"input": [-94.5, 49.0], "expected": 49.0}, {"input": [-94.5, 49.5], "expected": 49.5}, {"input": [-94.5, 50.0], "expected": 50.0}, {"input": [-94.5, 50.5], "expected": 50.5}, {"input": [-94.5, 51.0], "expected": 51.0}, {"input": [-94.5, 51.5], "expected": 51.5}, {"input": [-94.5, 52.0], "expected": 52.0}, {"input": [-94.5, 52.5], "expected": 52.5}, {"input": [-94.5, 53.0], "expected": 53.0}, {"input": [-94.5, 53.5], "expected": 53.5}, {"input": [-94.5, 54.0], "expected": 54.0}, {"input": [-94.5, 54.5], "expected": 54.5}, {"input": [-94.5, 55.0], "expected": 55.0}, {"input": [-94.5, 55.5], "expected": 55.5}, {"input": [-94.5, 56.0], "expected": 56.0}, {"input": [-94.5, 56.5], "expected": 56.5}, {"input": [-94.5, 57.0], "expected": 57.0}, {"input": [-94.5, 57.5], "expected": 57.5}, {"input": [-94.5, 58.0], "expected": 58.0}, {"input": [-94.5, 58.5], "expected": 58.5}, {"input": [-94.5, 59.0], "expected": 59.0}, {"input": [-94.5, 59.5], "expected": 59.5}, {"input": [-94.5, 60.0], "expected": 60.0}, {"input": [-94.5, 60.5], "expected": 60.5}, {"input": [-94.5, 61.0], "expected": 61.0}, {"input": [-94.5, 61.5], "expected": 61.5}, {"input": [-94.5, 62.0], "expected": 62.0}, {"input": [-94.5, 62.5], "expected": 62.5}, {"input": [-94.5, 63.0], "expected": 63.0}, {"input": [-94.5, 63.5], "expected": 63.5}, {"input": [-94.5, 64.0], "expected": 64.0}, {"input": [-94.5, 64.5], "expected": 64.5}, {"input": [-94.5, 65.0], "expected": 65.0}, {"input": [-94.5, 65.5], "expected": 65.5}, {"input": [-94.5, 66.0], "expected": 66.0}, {"input": [-94.5, 66.5], "expected": 66.5}, {"input": [-94.5, 67.0], "expected": 67.0}, {"input": [-94.5, 67.5], "expected": 67.5}, {"input": [-94.5, 68.0], "expected": 68.0}, {"input": [-94.5, 68.5], "expected": 68.5}, {"input": [-94.5, 69.0], "expected": 69.0}, {"input": [-94.5, 69.5], "expected": 69.5}, {"input": [-94.5, 70.0], "expected": 70.0}, {"input": [-94.5, 70.5], "expected": 70.5}, {"input": [-94.5, 71.0], "expected": 71.0}, {"input": [-94.5, 71.5], "expected": 71.5}, {"input": [-94.5, 72.0], "expected": 72.0}, {"input": [-94.5, 72.5], "expected": 72.5}, {"input": [-94.5, 73.0], "expected": 73.0}, {"input": [-94.5, 73.5], "expected": 73.5}, {"input": [-94.5, 74.0], "expected": 74.0}, {"input": [-94.5, 74.5], "expected": 74.5}, {"input": [-94.5, 75.0], "expected": 75.0}, {"input": [-94.5, 75.5], "expected": 75.5}, {"input": [-94.5, 76.0], "expected": 76.0}, {"input": [-94.5, 76.5], "expected": 76.5}, {"input": [-94.5, 77.0], "expected": 77.0}, {"input": [-94.5, 77.5], "expected": 77.5}, {"input": [-94.5, 78.0], "expected": 78.0}, {"input": [-94.5, 78.5], "expected": 78.5}, {"input": [-94.5, 79.0], "expected": 79.0}, {"input": [-94.5, 79.5], "expected": 79.5}, {"input": [-94.5, 80.0], "expected": 80.0}, {"input": [-94.5, 80.5], "expected": 80.5}, {"input": [-94.5, 81.0], "expected": 81.0}, {"input": [-94.5, 81.5], "expected": 81.5}, {"input": [-94.5, 82.0], "expected": 82.0}, {"input": [-94.5, 82.5], "expected": 82.5}, {"input": [-94.5, 83.0], "expected": 83.0}, {"input": [-94.5, 83.5], "expected": 83.5}, {"input": [-94.5, 84.0], "expected": 84.0}, {"input": [-94.5, 84.5], "expected": 84.5}, {"input": [-94.5, 85.0], "expected": 85.0}, {"input": [-94.5, 85.5], "expected": 85.5}, {"input": [-94.5, 86.0], "expected": 86.0}, {"input": [-94.5, 86.5], "expected": 86.5}, {"input": [-94.5, 87.0], "expected": 87.0}, {"input": [-94.5, 87.5], "expected": 87.5}, {"input": [-94.5, 88.0], "expected": 88.0}, {"input": [-94.5, 88.5], "expected": 88.5}, {"input": [-94.5, 89.0], "expected": 89.0}, {"input": [-94.5, 89.5], "expected": 89.5}, {"input": [-94.5, 90.0], "expected": 90.0}, {"input": [-94.5, 90.5], "expected": 90.5}, {"input": [-94.5, 91.0], "expected": 91.0}, {"input": [-94.5, 91.5], "expected": 91.5}, {"input": [-94.5, 92.0], "expected": 92.0}, {"input": [-94.5, 92.5], "expected": 92.5}, {"input": [-94.5, 93.0], "expected": 93.0}, {"input": [-94.5, 93.5], "expected": 93.5}, {"input": [-94.5, 94.0], "expected": 94.0}, {"input": [-94.5, 94.5], "expected": 94.5}, {"input": [-94.5, 95.0], "expected": 95.0}, {"input": [-94.5, 95.5], "expected": 95.5}, {"input": [-94.5, 96.0], "expected": 96.0}, {"input": [-94.5, 96.5], "expected": 96.5}, {"input": [-94.5, 97.0], "expected": 97.0}, {"input": [-94.5, 97.5], "expected": 97.5}, {"input": [-94.5, 98.0], "expected": 98.0}, {"input": [-94.5, 98.5], "expected": 98.5}, {"input": [-94.5, 99.0], "expected": 99.0}, {"input": [-94.5, 99.5], "expected": 99.5}, {"input": [-94.0, -100.0], "expected": -93.99752431486228}, {"input": [-94.0, -99.5], "expected": -93.99592155672943}, {"input": [-94.0, -99.0], "expected": -93.99328465151088}, {"input": [-94.0, -98.5], "expected": -93.9889522551514}, {"input": [-94.0, -98.0], "expected": -93.9818500720822}, {"input": [-94.0, -97.5], "expected": -93.97024958172737}, {"input": [-94.0, -97.0], "expected": -93.95141264842626}, {"input": [-94.0, -96.5], "expected": -93.92111026570745}, {"input": [-94.0, -96.0], "expected": -93.87307198895702}, {"input": [-94.0, -95.5], "expected": -93.79858672201725}, {"input": [-94.0, -95.0], "expected": -93.68673831248178}, {"input": [-94.0, -94.5], "expected": -93.5259230158199}, {"input": [-94.0, -94.0], "expected": -93.30685281944005}, {"input": [-94.0, -93.5], "expected": -93.0259230158199}, {"input": [-94.0, -93.0], "expected": -92.68673831248178}, {"input": [-94.0, -92.5], "expected": -92.29858672201725}, {"input": [-94.0, -92.0], "expected": -91.87307198895702}, {"input": [-94.0, -91.5], "expected": -91.42111026570745}, {"input": [-94.0, -91.0], "expected": -90.95141264842626}, {"input": [-94.0, -90.5], "expected": -90.47024958172737}, {"input": [-94.0, -90.0], "expected": -89.9818500720822}, {"input": [-94.0, -89.5], "expected": -89.4889522551514}, {"input": [-94.0, -89.0], "expected": -88.99328465151088}, {"input": [-94.0, -88.5], "expected": -88.49592155672943}, {"input": [-94.0, -88.0], "expected": -87.99752431486228}, {"input": [-94.0, -87.5], "expected": -87.49849768984025}, {"input": [-94.0, -87.0], "expected": -86.99908853354623}, {"input": [-94.0, -86.5], "expected": -86.49944706852465}, {"input": [-94.0, -86.0], "expected": -85.9996645936271}, {"input": [-94.0, -85.5], "expected": -85.49979655232787}, {"input": [-94.0, -85.0], "expected": -84.99987659781027}, {"input": [-94.0, -84.5], "expected": -84.49992515097136}, {"input": [-94.0, -84.0], "expected": -83.99995460110078}, {"input": [-94.0, -83.5], "expected": -83.49997246392977}, {"input": [-94.0, -83.0], "expected": -82.99998329843868}, {"input": [-94.0, -82.5], "expected": -82.49998986995772}, {"input": [-94.0, -82.0], "expected": -81.99999385580652}, {"input": [-94.0, -81.5], "expected": -81.49999627335377}, {"input": [-94.0, -81.0], "expected": -80.99999773967315}, {"input": [-94.0, -80.5], "expected": -80.49999862904185}, {"input": [-94.0, -80.0], "expected": -79.99999916847163}, {"input": [-94.0, -79.5], "expected": -79.49999949565246}, {"input": [-94.0, -79.0], "expected": -78.99999969409772}, {"input": [-94.0, -78.5], "expected": -78.49999981446088}, {"input": [-94.0, -78.0], "expected": -77.99999988746484}, {"input": [-94.0, -77.5], "expected": -77.49999993174397}, {"input": [-94.0, -77.0], "expected": -76.99999995860063}, {"input": [-94.0, -76.5], "expected": -76.49999997489}, {"input": [-94.0, -76.0], "expected": -75.99999998477001}, {"input": [-94.0, -75.5], "expected": -75.49999999076255}, {"input": [-94.0, -75.0], "expected": -74.9999999943972}, {"input": [-94.0, -74.5], "expected": -74.49999999660173}, {"input": [-94.0, -74.0], "expected": -73.99999999793884}, {"input": [-94.0, -73.5], "expected": -73.49999999874984}, {"input": [-94.0, -73.0], "expected": -72.99999999924174}, {"input": [-94.0, -72.5], "expected": -72.4999999995401}, {"input": [-94.0, -72.0], "expected": -71.99999999972106}, {"input": [-94.0, -71.5], "expected": -71.4999999998308}, {"input": [-94.0, -71.0], "expected": -70.99999999989738}, {"input": [-94.0, -70.5], "expected": -70.49999999993776}, {"input": [-94.0, -70.0], "expected": -69.99999999996224}, {"input": [-94.0, -69.5], "expected": -69.4999999999771}, {"input": [-94.0, -69.0], "expected": -68.99999999998612}, {"input": [-94.0, -68.5], "expected": -68.49999999999157}, {"input": [-94.0, -68.0], "expected": -67.99999999999488}, {"input": [-94.0, -67.5], "expected": -67.4999999999969}, {"input": [-94.0, -67.0], "expected": -66.99999999999812}, {"input": [-94.0, -66.5], "expected": -66.49999999999886}, {"input": [-94.0, -66.0], "expected": -65.9999999999993}, {"input": [-94.0, -65.5], "expected": -65.49999999999957}, {"input": [-94.0, -65.0], "expected": -64.99999999999974}, {"input": [-94.0, -64.5], "expected": -64.49999999999984}, {"input": [-94.0, -64.0], "expected": -63.99999999999991}, {"input": [-94.0, -63.5], "expected": -63.49999999999994}, {"input": [-94.0, -63.0], "expected": -62.999999999999964}, {"input": [-94.0, -62.5], "expected": -62.49999999999998}, {"input": [-94.0, -62.0], "expected": -61.999999999999986}, {"input": [-94.0, -61.5], "expected": -61.49999999999999}, {"input": [-94.0, -61.0], "expected": -60.99999999999999}, {"input": [-94.0, -60.5], "expected": -60.5}, {"input": [-94.0, -60.0], "expected": -60.0}, {"input": [-94.0, -59.5], "expected": -59.5}, {"input": [-94.0, -59.0], "expected": -59.0}, {"input": [-94.0, -58.5], "expected": -58.5}, {"input": [-94.0, -58.0], "expected": -58.0}, {"input": [-94.0, -57.5], "expected": -57.5}, {"input": [-94.0, -57.0], "expected": -57.0}, {"input": [-94.0, -56.5], "expected": -56.5}, {"input": [-94.0, -56.0], "expected": -56.0}, {"input": [-94.0, -55.5], "expected": -55.5}, {"input": [-94.0, -55.0], "expected": -55.0}, {"input": [-94.0, -54.5], "expected": -54.5}, {"input": [-94.0, -54.0], "expected": -54.0}, {"input": [-94.0, -53.5], "expected": -53.5}, {"input": [-94.0, -53.0], "expected": -53.0}, {"input": [-94.0, -52.5], "expected": -52.5}, {"input": [-94.0, -52.0], "expected": -52.0}, {"input": [-94.0, -51.5], "expected": -51.5}, {"input": [-94.0, -51.0], "expected": -51.0}, {"input": [-94.0, -50.5], "expected": -50.5}, {"input": [-94.0, -50.0], "expected": -50.0}, {"input": [-94.0, -49.5], "expected": -49.5}, {"input": [-94.0, -49.0], "expected": -49.0}, {"input": [-94.0, -48.5], "expected": -48.5}, {"input": [-94.0, -48.0], "expected": -48.0}, {"input": [-94.0, -47.5], "expected": -47.5}, {"input": [-94.0, -47.0], "expected": -47.0}, {"input": [-94.0, -46.5], "expected": -46.5}, {"input": [-94.0, -46.0], "expected": -46.0}, {"input": [-94.0, -45.5], "expected": -45.5}, {"input": [-94.0, -45.0], "expected": -45.0}, {"input": [-94.0, -44.5], "expected": -44.5}, {"input": [-94.0, -44.0], "expected": -44.0}, {"input": [-94.0, -43.5], "expected": -43.5}, {"input": [-94.0, -43.0], "expected": -43.0}, {"input": [-94.0, -42.5], "expected": -42.5}, {"input": [-94.0, -42.0], "expected": -42.0}, {"input": [-94.0, -41.5], "expected": -41.5}, {"input": [-94.0, -41.0], "expected": -41.0}, {"input": [-94.0, -40.5], "expected": -40.5}, {"input": [-94.0, -40.0], "expected": -40.0}, {"input": [-94.0, -39.5], "expected": -39.5}, {"input": [-94.0, -39.0], "expected": -39.0}, {"input": [-94.0, -38.5], "expected": -38.5}, {"input": [-94.0, -38.0], "expected": -38.0}, {"input": [-94.0, -37.5], "expected": -37.5}, {"input": [-94.0, -37.0], "expected": -37.0}, {"input": [-94.0, -36.5], "expected": -36.5}, {"input": [-94.0, -36.0], "expected": -36.0}, {"input": [-94.0, -35.5], "expected": -35.5}, {"input": [-94.0, -35.0], "expected": -35.0}, {"input": [-94.0, -34.5], "expected": -34.5}, {"input": [-94.0, -34.0], "expected": -34.0}, {"input": [-94.0, -33.5], "expected": -33.5}, {"input": [-94.0, -33.0], "expected": -33.0}, {"input": [-94.0, -32.5], "expected": -32.5}, {"input": [-94.0, -32.0], "expected": -32.0}, {"input": [-94.0, -31.5], "expected": -31.5}, {"input": [-94.0, -31.0], "expected": -31.0}, {"input": [-94.0, -30.5], "expected": -30.5}, {"input": [-94.0, -30.0], "expected": -30.0}, {"input": [-94.0, -29.5], "expected": -29.5}, {"input": [-94.0, -29.0], "expected": -29.0}, {"input": [-94.0, -28.5], "expected": -28.5}, {"input": [-94.0, -28.0], "expected": -28.0}, {"input": [-94.0, -27.5], "expected": -27.5}, {"input": [-94.0, -27.0], "expected": -27.0}, {"input": [-94.0, -26.5], "expected": -26.5}, {"input": [-94.0, -26.0], "expected": -26.0}, {"input": [-94.0, -25.5], "expected": -25.5}, {"input": [-94.0, -25.0], "expected": -25.0}, {"input": [-94.0, -24.5], "expected": -24.5}, {"input": [-94.0, -24.0], "expected": -24.0}, {"input": [-94.0, -23.5], "expected": -23.5}, {"input": [-94.0, -23.0], "expected": -23.0}, {"input": [-94.0, -22.5], "expected": -22.5}, {"input": [-94.0, -22.0], "expected": -22.0}, {"input": [-94.0, -21.5], "expected": -21.5}, {"input": [-94.0, -21.0], "expected": -21.0}, {"input": [-94.0, -20.5], "expected": -20.5}, {"input": [-94.0, -20.0], "expected": -20.0}, {"input": [-94.0, -19.5], "expected": -19.5}, {"input": [-94.0, -19.0], "expected": -19.0}, {"input": [-94.0, -18.5], "expected": -18.5}, {"input": [-94.0, -18.0], "expected": -18.0}, {"input": [-94.0, -17.5], "expected": -17.5}, {"input": [-94.0, -17.0], "expected": -17.0}, {"input": [-94.0, -16.5], "expected": -16.5}, {"input": [-94.0, -16.0], "expected": -16.0}, {"input": [-94.0, -15.5], "expected": -15.5}, {"input": [-94.0, -15.0], "expected": -15.0}, {"input": [-94.0, -14.5], "expected": -14.5}, {"input": [-94.0, -14.0], "expected": -14.0}, {"input": [-94.0, -13.5], "expected": -13.5}, {"input": [-94.0, -13.0], "expected": -13.0}, {"input": [-94.0, -12.5], "expected": -12.5}, {"input": [-94.0, -12.0], "expected": -12.0}, {"input": [-94.0, -11.5], "expected": -11.5}, {"input": [-94.0, -11.0], "expected": -11.0}, {"input": [-94.0, -10.5], "expected": -10.5}, {"input": [-94.0, -10.0], "expected": -10.0}, {"input": [-94.0, -9.5], "expected": -9.5}, {"input": [-94.0, -9.0], "expected": -9.0}, {"input": [-94.0, -8.5], "expected": -8.5}, {"input": [-94.0, -8.0], "expected": -8.0}, {"input": [-94.0, -7.5], "expected": -7.5}, {"input": [-94.0, -7.0], "expected": -7.0}, {"input": [-94.0, -6.5], "expected": -6.5}, {"input": [-94.0, -6.0], "expected": -6.0}, {"input": [-94.0, -5.5], "expected": -5.5}, {"input": [-94.0, -5.0], "expected": -5.0}, {"input": [-94.0, -4.5], "expected": -4.5}, {"input": [-94.0, -4.0], "expected": -4.0}, {"input": [-94.0, -3.5], "expected": -3.5}, {"input": [-94.0, -3.0], "expected": -3.0}, {"input": [-94.0, -2.5], "expected": -2.5}, {"input": [-94.0, -2.0], "expected": -2.0}, {"input": [-94.0, -1.5], "expected": -1.5}, {"input": [-94.0, -1.0], "expected": -1.0}, {"input": [-94.0, -0.5], "expected": -0.5}, {"input": [-94.0, 0.0], "expected": 1.5007857627073948e-41}, {"input": [-94.0, 0.5], "expected": 0.5}, {"input": [-94.0, 1.0], "expected": 1.0}, {"input": [-94.0, 1.5], "expected": 1.5}, {"input": [-94.0, 2.0], "expected": 2.0}, {"input": [-94.0, 2.5], "expected": 2.5}, {"input": [-94.0, 3.0], "expected": 3.0}, {"input": [-94.0, 3.5], "expected": 3.5}, {"input": [-94.0, 4.0], "expected": 4.0}, {"input": [-94.0, 4.5], "expected": 4.5}, {"input": [-94.0, 5.0], "expected": 5.0}, {"input": [-94.0, 5.5], "expected": 5.5}, {"input": [-94.0, 6.0], "expected": 6.0}, {"input": [-94.0, 6.5], "expected": 6.5}, {"input": [-94.0, 7.0], "expected": 7.0}, {"input": [-94.0, 7.5], "expected": 7.5}, {"input": [-94.0, 8.0], "expected": 8.0}, {"input": [-94.0, 8.5], "expected": 8.5}, {"input": [-94.0, 9.0], "expected": 9.0}, {"input": [-94.0, 9.5], "expected": 9.5}, {"input": [-94.0, 10.0], "expected": 10.0}, {"input": [-94.0, 10.5], "expected": 10.5}, {"input": [-94.0, 11.0], "expected": 11.0}, {"input": [-94.0, 11.5], "expected": 11.5}, {"input": [-94.0, 12.0], "expected": 12.0}, {"input": [-94.0, 12.5], "expected": 12.5}, {"input": [-94.0, 13.0], "expected": 13.0}, {"input": [-94.0, 13.5], "expected": 13.5}, {"input": [-94.0, 14.0], "expected": 14.0}, {"input": [-94.0, 14.5], "expected": 14.5}, {"input": [-94.0, 15.0], "expected": 15.0}, {"input": [-94.0, 15.5], "expected": 15.5}, {"input": [-94.0, 16.0], "expected": 16.0}, {"input": [-94.0, 16.5], "expected": 16.5}, {"input": [-94.0, 17.0], "expected": 17.0}, {"input": [-94.0, 17.5], "expected": 17.5}, {"input": [-94.0, 18.0], "expected": 18.0}, {"input": [-94.0, 18.5], "expected": 18.5}, {"input": [-94.0, 19.0], "expected": 19.0}, {"input": [-94.0, 19.5], "expected": 19.5}, {"input": [-94.0, 20.0], "expected": 20.0}, {"input": [-94.0, 20.5], "expected": 20.5}, {"input": [-94.0, 21.0], "expected": 21.0}, {"input": [-94.0, 21.5], "expected": 21.5}, {"input": [-94.0, 22.0], "expected": 22.0}, {"input": [-94.0, 22.5], "expected": 22.5}, {"input": [-94.0, 23.0], "expected": 23.0}, {"input": [-94.0, 23.5], "expected": 23.5}, {"input": [-94.0, 24.0], "expected": 24.0}, {"input": [-94.0, 24.5], "expected": 24.5}, {"input": [-94.0, 25.0], "expected": 25.0}, {"input": [-94.0, 25.5], "expected": 25.5}, {"input": [-94.0, 26.0], "expected": 26.0}, {"input": [-94.0, 26.5], "expected": 26.5}, {"input": [-94.0, 27.0], "expected": 27.0}, {"input": [-94.0, 27.5], "expected": 27.5}, {"input": [-94.0, 28.0], "expected": 28.0}, {"input": [-94.0, 28.5], "expected": 28.5}, {"input": [-94.0, 29.0], "expected": 29.0}, {"input": [-94.0, 29.5], "expected": 29.5}, {"input": [-94.0, 30.0], "expected": 30.0}, {"input": [-94.0, 30.5], "expected": 30.5}, {"input": [-94.0, 31.0], "expected": 31.0}, {"input": [-94.0, 31.5], "expected": 31.5}, {"input": [-94.0, 32.0], "expected": 32.0}, {"input": [-94.0, 32.5], "expected": 32.5}, {"input": [-94.0, 33.0], "expected": 33.0}, {"input": [-94.0, 33.5], "expected": 33.5}, {"input": [-94.0, 34.0], "expected": 34.0}, {"input": [-94.0, 34.5], "expected": 34.5}, {"input": [-94.0, 35.0], "expected": 35.0}, {"input": [-94.0, 35.5], "expected": 35.5}, {"input": [-94.0, 36.0], "expected": 36.0}, {"input": [-94.0, 36.5], "expected": 36.5}, {"input": [-94.0, 37.0], "expected": 37.0}, {"input": [-94.0, 37.5], "expected": 37.5}, {"input": [-94.0, 38.0], "expected": 38.0}, {"input": [-94.0, 38.5], "expected": 38.5}, {"input": [-94.0, 39.0], "expected": 39.0}, {"input": [-94.0, 39.5], "expected": 39.5}, {"input": [-94.0, 40.0], "expected": 40.0}, {"input": [-94.0, 40.5], "expected": 40.5}, {"input": [-94.0, 41.0], "expected": 41.0}, {"input": [-94.0, 41.5], "expected": 41.5}, {"input": [-94.0, 42.0], "expected": 42.0}, {"input": [-94.0, 42.5], "expected": 42.5}, {"input": [-94.0, 43.0], "expected": 43.0}, {"input": [-94.0, 43.5], "expected": 43.5}, {"input": [-94.0, 44.0], "expected": 44.0}, {"input": [-94.0, 44.5], "expected": 44.5}, {"input": [-94.0, 45.0], "expected": 45.0}, {"input": [-94.0, 45.5], "expected": 45.5}, {"input": [-94.0, 46.0], "expected": 46.0}, {"input": [-94.0, 46.5], "expected": 46.5}, {"input": [-94.0, 47.0], "expected": 47.0}, {"input": [-94.0, 47.5], "expected": 47.5}, {"input": [-94.0, 48.0], "expected": 48.0}, {"input": [-94.0, 48.5], "expected": 48.5}, {"input": [-94.0, 49.0], "expected": 49.0}, {"input": [-94.0, 49.5], "expected": 49.5}, {"input": [-94.0, 50.0], "expected": 50.0}, {"input": [-94.0, 50.5], "expected": 50.5}, {"input": [-94.0, 51.0], "expected": 51.0}, {"input": [-94.0, 51.5], "expected": 51.5}, {"input": [-94.0, 52.0], "expected": 52.0}, {"input": [-94.0, 52.5], "expected": 52.5}, {"input": [-94.0, 53.0], "expected": 53.0}, {"input": [-94.0, 53.5], "expected": 53.5}, {"input": [-94.0, 54.0], "expected": 54.0}, {"input": [-94.0, 54.5], "expected": 54.5}, {"input": [-94.0, 55.0], "expected": 55.0}, {"input": [-94.0, 55.5], "expected": 55.5}, {"input": [-94.0, 56.0], "expected": 56.0}, {"input": [-94.0, 56.5], "expected": 56.5}, {"input": [-94.0, 57.0], "expected": 57.0}, {"input": [-94.0, 57.5], "expected": 57.5}, {"input": [-94.0, 58.0], "expected": 58.0}, {"input": [-94.0, 58.5], "expected": 58.5}, {"input": [-94.0, 59.0], "expected": 59.0}, {"input": [-94.0, 59.5], "expected": 59.5}, {"input": [-94.0, 60.0], "expected": 60.0}, {"input": [-94.0, 60.5], "expected": 60.5}, {"input": [-94.0, 61.0], "expected": 61.0}, {"input": [-94.0, 61.5], "expected": 61.5}, {"input": [-94.0, 62.0], "expected": 62.0}, {"input": [-94.0, 62.5], "expected": 62.5}, {"input": [-94.0, 63.0], "expected": 63.0}, {"input": [-94.0, 63.5], "expected": 63.5}, {"input": [-94.0, 64.0], "expected": 64.0}, {"input": [-94.0, 64.5], "expected": 64.5}, {"input": [-94.0, 65.0], "expected": 65.0}, {"input": [-94.0, 65.5], "expected": 65.5}, {"input": [-94.0, 66.0], "expected": 66.0}, {"input": [-94.0, 66.5], "expected": 66.5}, {"input": [-94.0, 67.0], "expected": 67.0}, {"input": [-94.0, 67.5], "expected": 67.5}, {"input": [-94.0, 68.0], "expected": 68.0}, {"input": [-94.0, 68.5], "expected": 68.5}, {"input": [-94.0, 69.0], "expected": 69.0}, {"input": [-94.0, 69.5], "expected": 69.5}, {"input": [-94.0, 70.0], "expected": 70.0}, {"input": [-94.0, 70.5], "expected": 70.5}, {"input": [-94.0, 71.0], "expected": 71.0}, {"input": [-94.0, 71.5], "expected": 71.5}, {"input": [-94.0, 72.0], "expected": 72.0}, {"input": [-94.0, 72.5], "expected": 72.5}, {"input": [-94.0, 73.0], "expected": 73.0}, {"input": [-94.0, 73.5], "expected": 73.5}, {"input": [-94.0, 74.0], "expected": 74.0}, {"input": [-94.0, 74.5], "expected": 74.5}, {"input": [-94.0, 75.0], "expected": 75.0}, {"input": [-94.0, 75.5], "expected": 75.5}, {"input": [-94.0, 76.0], "expected": 76.0}, {"input": [-94.0, 76.5], "expected": 76.5}, {"input": [-94.0, 77.0], "expected": 77.0}, {"input": [-94.0, 77.5], "expected": 77.5}, {"input": [-94.0, 78.0], "expected": 78.0}, {"input": [-94.0, 78.5], "expected": 78.5}, {"input": [-94.0, 79.0], "expected": 79.0}, {"input": [-94.0, 79.5], "expected": 79.5}, {"input": [-94.0, 80.0], "expected": 80.0}, {"input": [-94.0, 80.5], "expected": 80.5}, {"input": [-94.0, 81.0], "expected": 81.0}, {"input": [-94.0, 81.5], "expected": 81.5}, {"input": [-94.0, 82.0], "expected": 82.0}, {"input": [-94.0, 82.5], "expected": 82.5}, {"input": [-94.0, 83.0], "expected": 83.0}, {"input": [-94.0, 83.5], "expected": 83.5}, {"input": [-94.0, 84.0], "expected": 84.0}, {"input": [-94.0, 84.5], "expected": 84.5}, {"input": [-94.0, 85.0], "expected": 85.0}, {"input": [-94.0, 85.5], "expected": 85.5}, {"input": [-94.0, 86.0], "expected": 86.0}, {"input": [-94.0, 86.5], "expected": 86.5}, {"input": [-94.0, 87.0], "expected": 87.0}, {"input": [-94.0, 87.5], "expected": 87.5}, {"input": [-94.0, 88.0], "expected": 88.0}, {"input": [-94.0, 88.5], "expected": 88.5}, {"input": [-94.0, 89.0], "expected": 89.0}, {"input": [-94.0, 89.5], "expected": 89.5}, {"input": [-94.0, 90.0], "expected": 90.0}, {"input": [-94.0, 90.5], "expected": 90.5}, {"input": [-94.0, 91.0], "expected": 91.0}, {"input": [-94.0, 91.5], "expected": 91.5}, {"input": [-94.0, 92.0], "expected": 92.0}, {"input": [-94.0, 92.5], "expected": 92.5}, {"input": [-94.0, 93.0], "expected": 93.0}, {"input": [-94.0, 93.5], "expected": 93.5}, {"input": [-94.0, 94.0], "expected": 94.0}, {"input": [-94.0, 94.5], "expected": 94.5}, {"input": [-94.0, 95.0], "expected": 95.0}, {"input": [-94.0, 95.5], "expected": 95.5}, {"input": [-94.0, 96.0], "expected": 96.0}, {"input": [-94.0, 96.5], "expected": 96.5}, {"input": [-94.0, 97.0], "expected": 97.0}, {"input": [-94.0, 97.5], "expected": 97.5}, {"input": [-94.0, 98.0], "expected": 98.0}, {"input": [-94.0, 98.5], "expected": 98.5}, {"input": [-94.0, 99.0], "expected": 99.0}, {"input": [-94.0, 99.5], "expected": 99.5}, {"input": [-93.5, -100.0], "expected": -93.49849768984025}, {"input": [-93.5, -99.5], "expected": -93.49752431486228}, {"input": [-93.5, -99.0], "expected": -93.49592155672943}, {"input": [-93.5, -98.5], "expected": -93.49328465151088}, {"input": [-93.5, -98.0], "expected": -93.4889522551514}, {"input": [-93.5, -97.5], "expected": -93.4818500720822}, {"input": [-93.5, -97.0], "expected": -93.47024958172737}, {"input": [-93.5, -96.5], "expected": -93.45141264842626}, {"input": [-93.5, -96.0], "expected": -93.42111026570745}, {"input": [-93.5, -95.5], "expected": -93.37307198895702}, {"input": [-93.5, -95.0], "expected": -93.29858672201725}, {"input": [-93.5, -94.5], "expected": -93.18673831248178}, {"input": [-93.5, -94.0], "expected": -93.0259230158199}, {"input": [-93.5, -93.5], "expected": -92.80685281944005}, {"input": [-93.5, -93.0], "expected": -92.5259230158199}, {"input": [-93.5, -92.5], "expected": -92.18673831248178}, {"input": [-93.5, -92.0], "expected": -91.79858672201725}, {"input": [-93.5, -91.5], "expected": -91.37307198895702}, {"input": [-93.5, -91.0], "expected": -90.92111026570745}, {"input": [-93.5, -90.5], "expected": -90.45141264842626}, {"input": [-93.5, -90.0], "expected": -89.97024958172737}, {"input": [-93.5, -89.5], "expected": -89.4818500720822}, {"input": [-93.5, -89.0], "expected": -88.9889522551514}, {"input": [-93.5, -88.5], "expected": -88.49328465151088}, {"input": [-93.5, -88.0], "expected": -87.99592155672943}, {"input": [-93.5, -87.5], "expected": -87.49752431486228}, {"input": [-93.5, -87.0], "expected": -86.99849768984025}, {"input": [-93.5, -86.5], "expected": -86.49908853354623}, {"input": [-93.5, -86.0], "expected": -85.99944706852465}, {"input": [-93.5, -85.5], "expected": -85.4996645936271}, {"input": [-93.5, -85.0], "expected": -84.99979655232787}, {"input": [-93.5, -84.5], "expected": -84.49987659781027}, {"input": [-93.5, -84.0], "expected": -83.99992515097136}, {"input": [-93.5, -83.5], "expected": -83.49995460110078}, {"input": [-93.5, -83.0], "expected": -82.99997246392977}, {"input": [-93.5, -82.5], "expected": -82.49998329843868}, {"input": [-93.5, -82.0], "expected": -81.99998986995772}, {"input": [-93.5, -81.5], "expected": -81.49999385580652}, {"input": [-93.5, -81.0], "expected": -80.99999627335377}, {"input": [-93.5, -80.5], "expected": -80.49999773967315}, {"input": [-93.5, -80.0], "expected": -79.99999862904185}, {"input": [-93.5, -79.5], "expected": -79.49999916847163}, {"input": [-93.5, -79.0], "expected": -78.99999949565246}, {"input": [-93.5, -78.5], "expected": -78.49999969409772}, {"input": [-93.5, -78.0], "expected": -77.99999981446088}, {"input": [-93.5, -77.5], "expected": -77.49999988746484}, {"input": [-93.5, -77.0], "expected": -76.99999993174397}, {"input": [-93.5, -76.5], "expected": -76.49999995860063}, {"input": [-93.5, -76.0], "expected": -75.99999997489}, {"input": [-93.5, -75.5], "expected": -75.49999998477001}, {"input": [-93.5, -75.0], "expected": -74.99999999076255}, {"input": [-93.5, -74.5], "expected": -74.4999999943972}, {"input": [-93.5, -74.0], "expected": -73.99999999660173}, {"input": [-93.5, -73.5], "expected": -73.49999999793884}, {"input": [-93.5, -73.0], "expected": -72.99999999874984}, {"input": [-93.5, -72.5], "expected": -72.49999999924174}, {"input": [-93.5, -72.0], "expected": -71.9999999995401}, {"input": [-93.5, -71.5], "expected": -71.49999999972106}, {"input": [-93.5, -71.0], "expected": -70.9999999998308}, {"input": [-93.5, -70.5], "expected": -70.49999999989738}, {"input": [-93.5, -70.0], "expected": -69.99999999993776}, {"input": [-93.5, -69.5], "expected": -69.49999999996224}, {"input": [-93.5, -69.0], "expected": -68.9999999999771}, {"input": [-93.5, -68.5], "expected": -68.49999999998612}, {"input": [-93.5, -68.0], "expected": -67.99999999999157}, {"input": [-93.5, -67.5], "expected": -67.49999999999488}, {"input": [-93.5, -67.0], "expected": -66.9999999999969}, {"input": [-93.5, -66.5], "expected": -66.49999999999812}, {"input": [-93.5, -66.0], "expected": -65.99999999999886}, {"input": [-93.5, -65.5], "expected": -65.4999999999993}, {"input": [-93.5, -65.0], "expected": -64.99999999999957}, {"input": [-93.5, -64.5], "expected": -64.49999999999974}, {"input": [-93.5, -64.0], "expected": -63.999999999999844}, {"input": [-93.5, -63.5], "expected": -63.49999999999991}, {"input": [-93.5, -63.0], "expected": -62.99999999999994}, {"input": [-93.5, -62.5], "expected": -62.499999999999964}, {"input": [-93.5, -62.0], "expected": -61.99999999999998}, {"input": [-93.5, -61.5], "expected": -61.499999999999986}, {"input": [-93.5, -61.0], "expected": -60.99999999999999}, {"input": [-93.5, -60.5], "expected": -60.49999999999999}, {"input": [-93.5, -60.0], "expected": -60.0}, {"input": [-93.5, -59.5], "expected": -59.5}, {"input": [-93.5, -59.0], "expected": -59.0}, {"input": [-93.5, -58.5], "expected": -58.5}, {"input": [-93.5, -58.0], "expected": -58.0}, {"input": [-93.5, -57.5], "expected": -57.5}, {"input": [-93.5, -57.0], "expected": -57.0}, {"input": [-93.5, -56.5], "expected": -56.5}, {"input": [-93.5, -56.0], "expected": -56.0}, {"input": [-93.5, -55.5], "expected": -55.5}, {"input": [-93.5, -55.0], "expected": -55.0}, {"input": [-93.5, -54.5], "expected": -54.5}, {"input": [-93.5, -54.0], "expected": -54.0}, {"input": [-93.5, -53.5], "expected": -53.5}, {"input": [-93.5, -53.0], "expected": -53.0}, {"input": [-93.5, -52.5], "expected": -52.5}, {"input": [-93.5, -52.0], "expected": -52.0}, {"input": [-93.5, -51.5], "expected": -51.5}, {"input": [-93.5, -51.0], "expected": -51.0}, {"input": [-93.5, -50.5], "expected": -50.5}, {"input": [-93.5, -50.0], "expected": -50.0}, {"input": [-93.5, -49.5], "expected": -49.5}, {"input": [-93.5, -49.0], "expected": -49.0}, {"input": [-93.5, -48.5], "expected": -48.5}, {"input": [-93.5, -48.0], "expected": -48.0}, {"input": [-93.5, -47.5], "expected": -47.5}, {"input": [-93.5, -47.0], "expected": -47.0}, {"input": [-93.5, -46.5], "expected": -46.5}, {"input": [-93.5, -46.0], "expected": -46.0}, {"input": [-93.5, -45.5], "expected": -45.5}, {"input": [-93.5, -45.0], "expected": -45.0}, {"input": [-93.5, -44.5], "expected": -44.5}, {"input": [-93.5, -44.0], "expected": -44.0}, {"input": [-93.5, -43.5], "expected": -43.5}, {"input": [-93.5, -43.0], "expected": -43.0}, {"input": [-93.5, -42.5], "expected": -42.5}, {"input": [-93.5, -42.0], "expected": -42.0}, {"input": [-93.5, -41.5], "expected": -41.5}, {"input": [-93.5, -41.0], "expected": -41.0}, {"input": [-93.5, -40.5], "expected": -40.5}, {"input": [-93.5, -40.0], "expected": -40.0}, {"input": [-93.5, -39.5], "expected": -39.5}, {"input": [-93.5, -39.0], "expected": -39.0}, {"input": [-93.5, -38.5], "expected": -38.5}, {"input": [-93.5, -38.0], "expected": -38.0}, {"input": [-93.5, -37.5], "expected": -37.5}, {"input": [-93.5, -37.0], "expected": -37.0}, {"input": [-93.5, -36.5], "expected": -36.5}, {"input": [-93.5, -36.0], "expected": -36.0}, {"input": [-93.5, -35.5], "expected": -35.5}, {"input": [-93.5, -35.0], "expected": -35.0}, {"input": [-93.5, -34.5], "expected": -34.5}, {"input": [-93.5, -34.0], "expected": -34.0}, {"input": [-93.5, -33.5], "expected": -33.5}, {"input": [-93.5, -33.0], "expected": -33.0}, {"input": [-93.5, -32.5], "expected": -32.5}, {"input": [-93.5, -32.0], "expected": -32.0}, {"input": [-93.5, -31.5], "expected": -31.5}, {"input": [-93.5, -31.0], "expected": -31.0}, {"input": [-93.5, -30.5], "expected": -30.5}, {"input": [-93.5, -30.0], "expected": -30.0}, {"input": [-93.5, -29.5], "expected": -29.5}, {"input": [-93.5, -29.0], "expected": -29.0}, {"input": [-93.5, -28.5], "expected": -28.5}, {"input": [-93.5, -28.0], "expected": -28.0}, {"input": [-93.5, -27.5], "expected": -27.5}, {"input": [-93.5, -27.0], "expected": -27.0}, {"input": [-93.5, -26.5], "expected": -26.5}, {"input": [-93.5, -26.0], "expected": -26.0}, {"input": [-93.5, -25.5], "expected": -25.5}, {"input": [-93.5, -25.0], "expected": -25.0}, {"input": [-93.5, -24.5], "expected": -24.5}, {"input": [-93.5, -24.0], "expected": -24.0}, {"input": [-93.5, -23.5], "expected": -23.5}, {"input": [-93.5, -23.0], "expected": -23.0}, {"input": [-93.5, -22.5], "expected": -22.5}, {"input": [-93.5, -22.0], "expected": -22.0}, {"input": [-93.5, -21.5], "expected": -21.5}, {"input": [-93.5, -21.0], "expected": -21.0}, {"input": [-93.5, -20.5], "expected": -20.5}, {"input": [-93.5, -20.0], "expected": -20.0}, {"input": [-93.5, -19.5], "expected": -19.5}, {"input": [-93.5, -19.0], "expected": -19.0}, {"input": [-93.5, -18.5], "expected": -18.5}, {"input": [-93.5, -18.0], "expected": -18.0}, {"input": [-93.5, -17.5], "expected": -17.5}, {"input": [-93.5, -17.0], "expected": -17.0}, {"input": [-93.5, -16.5], "expected": -16.5}, {"input": [-93.5, -16.0], "expected": -16.0}, {"input": [-93.5, -15.5], "expected": -15.5}, {"input": [-93.5, -15.0], "expected": -15.0}, {"input": [-93.5, -14.5], "expected": -14.5}, {"input": [-93.5, -14.0], "expected": -14.0}, {"input": [-93.5, -13.5], "expected": -13.5}, {"input": [-93.5, -13.0], "expected": -13.0}, {"input": [-93.5, -12.5], "expected": -12.5}, {"input": [-93.5, -12.0], "expected": -12.0}, {"input": [-93.5, -11.5], "expected": -11.5}, {"input": [-93.5, -11.0], "expected": -11.0}, {"input": [-93.5, -10.5], "expected": -10.5}, {"input": [-93.5, -10.0], "expected": -10.0}, {"input": [-93.5, -9.5], "expected": -9.5}, {"input": [-93.5, -9.0], "expected": -9.0}, {"input": [-93.5, -8.5], "expected": -8.5}, {"input": [-93.5, -8.0], "expected": -8.0}, {"input": [-93.5, -7.5], "expected": -7.5}, {"input": [-93.5, -7.0], "expected": -7.0}, {"input": [-93.5, -6.5], "expected": -6.5}, {"input": [-93.5, -6.0], "expected": -6.0}, {"input": [-93.5, -5.5], "expected": -5.5}, {"input": [-93.5, -5.0], "expected": -5.0}, {"input": [-93.5, -4.5], "expected": -4.5}, {"input": [-93.5, -4.0], "expected": -4.0}, {"input": [-93.5, -3.5], "expected": -3.5}, {"input": [-93.5, -3.0], "expected": -3.0}, {"input": [-93.5, -2.5], "expected": -2.5}, {"input": [-93.5, -2.0], "expected": -2.0}, {"input": [-93.5, -1.5], "expected": -1.5}, {"input": [-93.5, -1.0], "expected": -1.0}, {"input": [-93.5, -0.5], "expected": -0.5}, {"input": [-93.5, 0.0], "expected": 2.474377409739597e-41}, {"input": [-93.5, 0.5], "expected": 0.5}, {"input": [-93.5, 1.0], "expected": 1.0}, {"input": [-93.5, 1.5], "expected": 1.5}, {"input": [-93.5, 2.0], "expected": 2.0}, {"input": [-93.5, 2.5], "expected": 2.5}, {"input": [-93.5, 3.0], "expected": 3.0}, {"input": [-93.5, 3.5], "expected": 3.5}, {"input": [-93.5, 4.0], "expected": 4.0}, {"input": [-93.5, 4.5], "expected": 4.5}, {"input": [-93.5, 5.0], "expected": 5.0}, {"input": [-93.5, 5.5], "expected": 5.5}, {"input": [-93.5, 6.0], "expected": 6.0}, {"input": [-93.5, 6.5], "expected": 6.5}, {"input": [-93.5, 7.0], "expected": 7.0}, {"input": [-93.5, 7.5], "expected": 7.5}, {"input": [-93.5, 8.0], "expected": 8.0}, {"input": [-93.5, 8.5], "expected": 8.5}, {"input": [-93.5, 9.0], "expected": 9.0}, {"input": [-93.5, 9.5], "expected": 9.5}, {"input": [-93.5, 10.0], "expected": 10.0}, {"input": [-93.5, 10.5], "expected": 10.5}, {"input": [-93.5, 11.0], "expected": 11.0}, {"input": [-93.5, 11.5], "expected": 11.5}, {"input": [-93.5, 12.0], "expected": 12.0}, {"input": [-93.5, 12.5], "expected": 12.5}, {"input": [-93.5, 13.0], "expected": 13.0}, {"input": [-93.5, 13.5], "expected": 13.5}, {"input": [-93.5, 14.0], "expected": 14.0}, {"input": [-93.5, 14.5], "expected": 14.5}, {"input": [-93.5, 15.0], "expected": 15.0}, {"input": [-93.5, 15.5], "expected": 15.5}, {"input": [-93.5, 16.0], "expected": 16.0}, {"input": [-93.5, 16.5], "expected": 16.5}, {"input": [-93.5, 17.0], "expected": 17.0}, {"input": [-93.5, 17.5], "expected": 17.5}, {"input": [-93.5, 18.0], "expected": 18.0}, {"input": [-93.5, 18.5], "expected": 18.5}, {"input": [-93.5, 19.0], "expected": 19.0}, {"input": [-93.5, 19.5], "expected": 19.5}, {"input": [-93.5, 20.0], "expected": 20.0}, {"input": [-93.5, 20.5], "expected": 20.5}, {"input": [-93.5, 21.0], "expected": 21.0}, {"input": [-93.5, 21.5], "expected": 21.5}, {"input": [-93.5, 22.0], "expected": 22.0}, {"input": [-93.5, 22.5], "expected": 22.5}, {"input": [-93.5, 23.0], "expected": 23.0}, {"input": [-93.5, 23.5], "expected": 23.5}, {"input": [-93.5, 24.0], "expected": 24.0}, {"input": [-93.5, 24.5], "expected": 24.5}, {"input": [-93.5, 25.0], "expected": 25.0}, {"input": [-93.5, 25.5], "expected": 25.5}, {"input": [-93.5, 26.0], "expected": 26.0}, {"input": [-93.5, 26.5], "expected": 26.5}, {"input": [-93.5, 27.0], "expected": 27.0}, {"input": [-93.5, 27.5], "expected": 27.5}, {"input": [-93.5, 28.0], "expected": 28.0}, {"input": [-93.5, 28.5], "expected": 28.5}, {"input": [-93.5, 29.0], "expected": 29.0}, {"input": [-93.5, 29.5], "expected": 29.5}, {"input": [-93.5, 30.0], "expected": 30.0}, {"input": [-93.5, 30.5], "expected": 30.5}, {"input": [-93.5, 31.0], "expected": 31.0}, {"input": [-93.5, 31.5], "expected": 31.5}, {"input": [-93.5, 32.0], "expected": 32.0}, {"input": [-93.5, 32.5], "expected": 32.5}, {"input": [-93.5, 33.0], "expected": 33.0}, {"input": [-93.5, 33.5], "expected": 33.5}, {"input": [-93.5, 34.0], "expected": 34.0}, {"input": [-93.5, 34.5], "expected": 34.5}, {"input": [-93.5, 35.0], "expected": 35.0}, {"input": [-93.5, 35.5], "expected": 35.5}, {"input": [-93.5, 36.0], "expected": 36.0}, {"input": [-93.5, 36.5], "expected": 36.5}, {"input": [-93.5, 37.0], "expected": 37.0}, {"input": [-93.5, 37.5], "expected": 37.5}, {"input": [-93.5, 38.0], "expected": 38.0}, {"input": [-93.5, 38.5], "expected": 38.5}, {"input": [-93.5, 39.0], "expected": 39.0}, {"input": [-93.5, 39.5], "expected": 39.5}, {"input": [-93.5, 40.0], "expected": 40.0}, {"input": [-93.5, 40.5], "expected": 40.5}, {"input": [-93.5, 41.0], "expected": 41.0}, {"input": [-93.5, 41.5], "expected": 41.5}, {"input": [-93.5, 42.0], "expected": 42.0}, {"input": [-93.5, 42.5], "expected": 42.5}, {"input": [-93.5, 43.0], "expected": 43.0}, {"input": [-93.5, 43.5], "expected": 43.5}, {"input": [-93.5, 44.0], "expected": 44.0}, {"input": [-93.5, 44.5], "expected": 44.5}, {"input": [-93.5, 45.0], "expected": 45.0}, {"input": [-93.5, 45.5], "expected": 45.5}, {"input": [-93.5, 46.0], "expected": 46.0}, {"input": [-93.5, 46.5], "expected": 46.5}, {"input": [-93.5, 47.0], "expected": 47.0}, {"input": [-93.5, 47.5], "expected": 47.5}, {"input": [-93.5, 48.0], "expected": 48.0}, {"input": [-93.5, 48.5], "expected": 48.5}, {"input": [-93.5, 49.0], "expected": 49.0}, {"input": [-93.5, 49.5], "expected": 49.5}, {"input": [-93.5, 50.0], "expected": 50.0}, {"input": [-93.5, 50.5], "expected": 50.5}, {"input": [-93.5, 51.0], "expected": 51.0}, {"input": [-93.5, 51.5], "expected": 51.5}, {"input": [-93.5, 52.0], "expected": 52.0}, {"input": [-93.5, 52.5], "expected": 52.5}, {"input": [-93.5, 53.0], "expected": 53.0}, {"input": [-93.5, 53.5], "expected": 53.5}, {"input": [-93.5, 54.0], "expected": 54.0}, {"input": [-93.5, 54.5], "expected": 54.5}, {"input": [-93.5, 55.0], "expected": 55.0}, {"input": [-93.5, 55.5], "expected": 55.5}, {"input": [-93.5, 56.0], "expected": 56.0}, {"input": [-93.5, 56.5], "expected": 56.5}, {"input": [-93.5, 57.0], "expected": 57.0}, {"input": [-93.5, 57.5], "expected": 57.5}, {"input": [-93.5, 58.0], "expected": 58.0}, {"input": [-93.5, 58.5], "expected": 58.5}, {"input": [-93.5, 59.0], "expected": 59.0}, {"input": [-93.5, 59.5], "expected": 59.5}, {"input": [-93.5, 60.0], "expected": 60.0}, {"input": [-93.5, 60.5], "expected": 60.5}, {"input": [-93.5, 61.0], "expected": 61.0}, {"input": [-93.5, 61.5], "expected": 61.5}, {"input": [-93.5, 62.0], "expected": 62.0}, {"input": [-93.5, 62.5], "expected": 62.5}, {"input": [-93.5, 63.0], "expected": 63.0}, {"input": [-93.5, 63.5], "expected": 63.5}, {"input": [-93.5, 64.0], "expected": 64.0}, {"input": [-93.5, 64.5], "expected": 64.5}, {"input": [-93.5, 65.0], "expected": 65.0}, {"input": [-93.5, 65.5], "expected": 65.5}, {"input": [-93.5, 66.0], "expected": 66.0}, {"input": [-93.5, 66.5], "expected": 66.5}, {"input": [-93.5, 67.0], "expected": 67.0}, {"input": [-93.5, 67.5], "expected": 67.5}, {"input": [-93.5, 68.0], "expected": 68.0}, {"input": [-93.5, 68.5], "expected": 68.5}, {"input": [-93.5, 69.0], "expected": 69.0}, {"input": [-93.5, 69.5], "expected": 69.5}, {"input": [-93.5, 70.0], "expected": 70.0}, {"input": [-93.5, 70.5], "expected": 70.5}, {"input": [-93.5, 71.0], "expected": 71.0}, {"input": [-93.5, 71.5], "expected": 71.5}, {"input": [-93.5, 72.0], "expected": 72.0}, {"input": [-93.5, 72.5], "expected": 72.5}, {"input": [-93.5, 73.0], "expected": 73.0}, {"input": [-93.5, 73.5], "expected": 73.5}, {"input": [-93.5, 74.0], "expected": 74.0}, {"input": [-93.5, 74.5], "expected": 74.5}, {"input": [-93.5, 75.0], "expected": 75.0}, {"input": [-93.5, 75.5], "expected": 75.5}, {"input": [-93.5, 76.0], "expected": 76.0}, {"input": [-93.5, 76.5], "expected": 76.5}, {"input": [-93.5, 77.0], "expected": 77.0}, {"input": [-93.5, 77.5], "expected": 77.5}, {"input": [-93.5, 78.0], "expected": 78.0}, {"input": [-93.5, 78.5], "expected": 78.5}, {"input": [-93.5, 79.0], "expected": 79.0}, {"input": [-93.5, 79.5], "expected": 79.5}, {"input": [-93.5, 80.0], "expected": 80.0}, {"input": [-93.5, 80.5], "expected": 80.5}, {"input": [-93.5, 81.0], "expected": 81.0}, {"input": [-93.5, 81.5], "expected": 81.5}, {"input": [-93.5, 82.0], "expected": 82.0}, {"input": [-93.5, 82.5], "expected": 82.5}, {"input": [-93.5, 83.0], "expected": 83.0}, {"input": [-93.5, 83.5], "expected": 83.5}, {"input": [-93.5, 84.0], "expected": 84.0}, {"input": [-93.5, 84.5], "expected": 84.5}, {"input": [-93.5, 85.0], "expected": 85.0}, {"input": [-93.5, 85.5], "expected": 85.5}, {"input": [-93.5, 86.0], "expected": 86.0}, {"input": [-93.5, 86.5], "expected": 86.5}, {"input": [-93.5, 87.0], "expected": 87.0}, {"input": [-93.5, 87.5], "expected": 87.5}, {"input": [-93.5, 88.0], "expected": 88.0}, {"input": [-93.5, 88.5], "expected": 88.5}, {"input": [-93.5, 89.0], "expected": 89.0}, {"input": [-93.5, 89.5], "expected": 89.5}, {"input": [-93.5, 90.0], "expected": 90.0}, {"input": [-93.5, 90.5], "expected": 90.5}, {"input": [-93.5, 91.0], "expected": 91.0}, {"input": [-93.5, 91.5], "expected": 91.5}, {"input": [-93.5, 92.0], "expected": 92.0}, {"input": [-93.5, 92.5], "expected": 92.5}, {"input": [-93.5, 93.0], "expected": 93.0}, {"input": [-93.5, 93.5], "expected": 93.5}, {"input": [-93.5, 94.0], "expected": 94.0}, {"input": [-93.5, 94.5], "expected": 94.5}, {"input": [-93.5, 95.0], "expected": 95.0}, {"input": [-93.5, 95.5], "expected": 95.5}, {"input": [-93.5, 96.0], "expected": 96.0}, {"input": [-93.5, 96.5], "expected": 96.5}, {"input": [-93.5, 97.0], "expected": 97.0}, {"input": [-93.5, 97.5], "expected": 97.5}, {"input": [-93.5, 98.0], "expected": 98.0}, {"input": [-93.5, 98.5], "expected": 98.5}, {"input": [-93.5, 99.0], "expected": 99.0}, {"input": [-93.5, 99.5], "expected": 99.5}, {"input": [-93.0, -100.0], "expected": -92.99908853354623}, {"input": [-93.0, -99.5], "expected": -92.99849768984025}, {"input": [-93.0, -99.0], "expected": -92.99752431486228}, {"input": [-93.0, -98.5], "expected": -92.99592155672943}, {"input": [-93.0, -98.0], "expected": -92.99328465151088}, {"input": [-93.0, -97.5], "expected": -92.9889522551514}, {"input": [-93.0, -97.0], "expected": -92.9818500720822}, {"input": [-93.0, -96.5], "expected": -92.97024958172737}, {"input": [-93.0, -96.0], "expected": -92.95141264842626}, {"input": [-93.0, -95.5], "expected": -92.92111026570745}, {"input": [-93.0, -95.0], "expected": -92.87307198895702}, {"input": [-93.0, -94.5], "expected": -92.79858672201725}, {"input": [-93.0, -94.0], "expected": -92.68673831248178}, {"input": [-93.0, -93.5], "expected": -92.5259230158199}, {"input": [-93.0, -93.0], "expected": -92.30685281944005}, {"input": [-93.0, -92.5], "expected": -92.0259230158199}, {"input": [-93.0, -92.0], "expected": -91.68673831248178}, {"input": [-93.0, -91.5], "expected": -91.29858672201725}, {"input": [-93.0, -91.0], "expected": -90.87307198895702}, {"input": [-93.0, -90.5], "expected": -90.42111026570745}, {"input": [-93.0, -90.0], "expected": -89.95141264842626}, {"input": [-93.0, -89.5], "expected": -89.47024958172737}, {"input": [-93.0, -89.0], "expected": -88.9818500720822}, {"input": [-93.0, -88.5], "expected": -88.4889522551514}, {"input": [-93.0, -88.0], "expected": -87.99328465151088}, {"input": [-93.0, -87.5], "expected": -87.49592155672943}, {"input": [-93.0, -87.0], "expected": -86.99752431486228}, {"input": [-93.0, -86.5], "expected": -86.49849768984025}, {"input": [-93.0, -86.0], "expected": -85.99908853354623}, {"input": [-93.0, -85.5], "expected": -85.49944706852465}, {"input": [-93.0, -85.0], "expected": -84.9996645936271}, {"input": [-93.0, -84.5], "expected": -84.49979655232787}, {"input": [-93.0, -84.0], "expected": -83.99987659781027}, {"input": [-93.0, -83.5], "expected": -83.49992515097136}, {"input": [-93.0, -83.0], "expected": -82.99995460110078}, {"input": [-93.0, -82.5], "expected": -82.49997246392977}, {"input": [-93.0, -82.0], "expected": -81.99998329843868}, {"input": [-93.0, -81.5], "expected": -81.49998986995772}, {"input": [-93.0, -81.0], "expected": -80.99999385580652}, {"input": [-93.0, -80.5], "expected": -80.49999627335377}, {"input": [-93.0, -80.0], "expected": -79.99999773967315}, {"input": [-93.0, -79.5], "expected": -79.49999862904185}, {"input": [-93.0, -79.0], "expected": -78.99999916847163}, {"input": [-93.0, -78.5], "expected": -78.49999949565246}, {"input": [-93.0, -78.0], "expected": -77.99999969409772}, {"input": [-93.0, -77.5], "expected": -77.49999981446088}, {"input": [-93.0, -77.0], "expected": -76.99999988746484}, {"input": [-93.0, -76.5], "expected": -76.49999993174397}, {"input": [-93.0, -76.0], "expected": -75.99999995860063}, {"input": [-93.0, -75.5], "expected": -75.49999997489}, {"input": [-93.0, -75.0], "expected": -74.99999998477001}, {"input": [-93.0, -74.5], "expected": -74.49999999076255}, {"input": [-93.0, -74.0], "expected": -73.9999999943972}, {"input": [-93.0, -73.5], "expected": -73.49999999660173}, {"input": [-93.0, -73.0], "expected": -72.99999999793884}, {"input": [-93.0, -72.5], "expected": -72.49999999874984}, {"input": [-93.0, -72.0], "expected": -71.99999999924174}, {"input": [-93.0, -71.5], "expected": -71.4999999995401}, {"input": [-93.0, -71.0], "expected": -70.99999999972106}, {"input": [-93.0, -70.5], "expected": -70.4999999998308}, {"input": [-93.0, -70.0], "expected": -69.99999999989738}, {"input": [-93.0, -69.5], "expected": -69.49999999993776}, {"input": [-93.0, -69.0], "expected": -68.99999999996224}, {"input": [-93.0, -68.5], "expected": -68.4999999999771}, {"input": [-93.0, -68.0], "expected": -67.99999999998612}, {"input": [-93.0, -67.5], "expected": -67.49999999999157}, {"input": [-93.0, -67.0], "expected": -66.99999999999488}, {"input": [-93.0, -66.5], "expected": -66.4999999999969}, {"input": [-93.0, -66.0], "expected": -65.99999999999812}, {"input": [-93.0, -65.5], "expected": -65.49999999999886}, {"input": [-93.0, -65.0], "expected": -64.9999999999993}, {"input": [-93.0, -64.5], "expected": -64.49999999999957}, {"input": [-93.0, -64.0], "expected": -63.999999999999744}, {"input": [-93.0, -63.5], "expected": -63.499999999999844}, {"input": [-93.0, -63.0], "expected": -62.99999999999991}, {"input": [-93.0, -62.5], "expected": -62.49999999999994}, {"input": [-93.0, -62.0], "expected": -61.999999999999964}, {"input": [-93.0, -61.5], "expected": -61.49999999999998}, {"input": [-93.0, -61.0], "expected": -60.999999999999986}, {"input": [-93.0, -60.5], "expected": -60.49999999999999}, {"input": [-93.0, -60.0], "expected": -59.99999999999999}, {"input": [-93.0, -59.5], "expected": -59.5}, {"input": [-93.0, -59.0], "expected": -59.0}, {"input": [-93.0, -58.5], "expected": -58.5}, {"input": [-93.0, -58.0], "expected": -58.0}, {"input": [-93.0, -57.5], "expected": -57.5}, {"input": [-93.0, -57.0], "expected": -57.0}, {"input": [-93.0, -56.5], "expected": -56.5}, {"input": [-93.0, -56.0], "expected": -56.0}, {"input": [-93.0, -55.5], "expected": -55.5}, {"input": [-93.0, -55.0], "expected": -55.0}, {"input": [-93.0, -54.5], "expected": -54.5}, {"input": [-93.0, -54.0], "expected": -54.0}, {"input": [-93.0, -53.5], "expected": -53.5}, {"input": [-93.0, -53.0], "expected": -53.0}, {"input": [-93.0, -52.5], "expected": -52.5}, {"input": [-93.0, -52.0], "expected": -52.0}, {"input": [-93.0, -51.5], "expected": -51.5}, {"input": [-93.0, -51.0], "expected": -51.0}, {"input": [-93.0, -50.5], "expected": -50.5}, {"input": [-93.0, -50.0], "expected": -50.0}, {"input": [-93.0, -49.5], "expected": -49.5}, {"input": [-93.0, -49.0], "expected": -49.0}, {"input": [-93.0, -48.5], "expected": -48.5}, {"input": [-93.0, -48.0], "expected": -48.0}, {"input": [-93.0, -47.5], "expected": -47.5}, {"input": [-93.0, -47.0], "expected": -47.0}, {"input": [-93.0, -46.5], "expected": -46.5}, {"input": [-93.0, -46.0], "expected": -46.0}, {"input": [-93.0, -45.5], "expected": -45.5}, {"input": [-93.0, -45.0], "expected": -45.0}, {"input": [-93.0, -44.5], "expected": -44.5}, {"input": [-93.0, -44.0], "expected": -44.0}, {"input": [-93.0, -43.5], "expected": -43.5}, {"input": [-93.0, -43.0], "expected": -43.0}, {"input": [-93.0, -42.5], "expected": -42.5}, {"input": [-93.0, -42.0], "expected": -42.0}, {"input": [-93.0, -41.5], "expected": -41.5}, {"input": [-93.0, -41.0], "expected": -41.0}, {"input": [-93.0, -40.5], "expected": -40.5}, {"input": [-93.0, -40.0], "expected": -40.0}, {"input": [-93.0, -39.5], "expected": -39.5}, {"input": [-93.0, -39.0], "expected": -39.0}, {"input": [-93.0, -38.5], "expected": -38.5}, {"input": [-93.0, -38.0], "expected": -38.0}, {"input": [-93.0, -37.5], "expected": -37.5}, {"input": [-93.0, -37.0], "expected": -37.0}, {"input": [-93.0, -36.5], "expected": -36.5}, {"input": [-93.0, -36.0], "expected": -36.0}, {"input": [-93.0, -35.5], "expected": -35.5}, {"input": [-93.0, -35.0], "expected": -35.0}, {"input": [-93.0, -34.5], "expected": -34.5}, {"input": [-93.0, -34.0], "expected": -34.0}, {"input": [-93.0, -33.5], "expected": -33.5}, {"input": [-93.0, -33.0], "expected": -33.0}, {"input": [-93.0, -32.5], "expected": -32.5}, {"input": [-93.0, -32.0], "expected": -32.0}, {"input": [-93.0, -31.5], "expected": -31.5}, {"input": [-93.0, -31.0], "expected": -31.0}, {"input": [-93.0, -30.5], "expected": -30.5}, {"input": [-93.0, -30.0], "expected": -30.0}, {"input": [-93.0, -29.5], "expected": -29.5}, {"input": [-93.0, -29.0], "expected": -29.0}, {"input": [-93.0, -28.5], "expected": -28.5}, {"input": [-93.0, -28.0], "expected": -28.0}, {"input": [-93.0, -27.5], "expected": -27.5}, {"input": [-93.0, -27.0], "expected": -27.0}, {"input": [-93.0, -26.5], "expected": -26.5}, {"input": [-93.0, -26.0], "expected": -26.0}, {"input": [-93.0, -25.5], "expected": -25.5}, {"input": [-93.0, -25.0], "expected": -25.0}, {"input": [-93.0, -24.5], "expected": -24.5}, {"input": [-93.0, -24.0], "expected": -24.0}, {"input": [-93.0, -23.5], "expected": -23.5}, {"input": [-93.0, -23.0], "expected": -23.0}, {"input": [-93.0, -22.5], "expected": -22.5}, {"input": [-93.0, -22.0], "expected": -22.0}, {"input": [-93.0, -21.5], "expected": -21.5}, {"input": [-93.0, -21.0], "expected": -21.0}, {"input": [-93.0, -20.5], "expected": -20.5}, {"input": [-93.0, -20.0], "expected": -20.0}, {"input": [-93.0, -19.5], "expected": -19.5}, {"input": [-93.0, -19.0], "expected": -19.0}, {"input": [-93.0, -18.5], "expected": -18.5}, {"input": [-93.0, -18.0], "expected": -18.0}, {"input": [-93.0, -17.5], "expected": -17.5}, {"input": [-93.0, -17.0], "expected": -17.0}, {"input": [-93.0, -16.5], "expected": -16.5}, {"input": [-93.0, -16.0], "expected": -16.0}, {"input": [-93.0, -15.5], "expected": -15.5}, {"input": [-93.0, -15.0], "expected": -15.0}, {"input": [-93.0, -14.5], "expected": -14.5}, {"input": [-93.0, -14.0], "expected": -14.0}, {"input": [-93.0, -13.5], "expected": -13.5}, {"input": [-93.0, -13.0], "expected": -13.0}, {"input": [-93.0, -12.5], "expected": -12.5}, {"input": [-93.0, -12.0], "expected": -12.0}, {"input": [-93.0, -11.5], "expected": -11.5}, {"input": [-93.0, -11.0], "expected": -11.0}, {"input": [-93.0, -10.5], "expected": -10.5}, {"input": [-93.0, -10.0], "expected": -10.0}, {"input": [-93.0, -9.5], "expected": -9.5}, {"input": [-93.0, -9.0], "expected": -9.0}, {"input": [-93.0, -8.5], "expected": -8.5}, {"input": [-93.0, -8.0], "expected": -8.0}, {"input": [-93.0, -7.5], "expected": -7.5}, {"input": [-93.0, -7.0], "expected": -7.0}, {"input": [-93.0, -6.5], "expected": -6.5}, {"input": [-93.0, -6.0], "expected": -6.0}, {"input": [-93.0, -5.5], "expected": -5.5}, {"input": [-93.0, -5.0], "expected": -5.0}, {"input": [-93.0, -4.5], "expected": -4.5}, {"input": [-93.0, -4.0], "expected": -4.0}, {"input": [-93.0, -3.5], "expected": -3.5}, {"input": [-93.0, -3.0], "expected": -3.0}, {"input": [-93.0, -2.5], "expected": -2.5}, {"input": [-93.0, -2.0], "expected": -2.0}, {"input": [-93.0, -1.5], "expected": -1.5}, {"input": [-93.0, -1.0], "expected": -1.0}, {"input": [-93.0, -0.5], "expected": -0.5}, {"input": [-93.0, 0.0], "expected": 4.0795586671775603e-41}, {"input": [-93.0, 0.5], "expected": 0.5}, {"input": [-93.0, 1.0], "expected": 1.0}, {"input": [-93.0, 1.5], "expected": 1.5}, {"input": [-93.0, 2.0], "expected": 2.0}, {"input": [-93.0, 2.5], "expected": 2.5}, {"input": [-93.0, 3.0], "expected": 3.0}, {"input": [-93.0, 3.5], "expected": 3.5}, {"input": [-93.0, 4.0], "expected": 4.0}, {"input": [-93.0, 4.5], "expected": 4.5}, {"input": [-93.0, 5.0], "expected": 5.0}, {"input": [-93.0, 5.5], "expected": 5.5}, {"input": [-93.0, 6.0], "expected": 6.0}, {"input": [-93.0, 6.5], "expected": 6.5}, {"input": [-93.0, 7.0], "expected": 7.0}, {"input": [-93.0, 7.5], "expected": 7.5}, {"input": [-93.0, 8.0], "expected": 8.0}, {"input": [-93.0, 8.5], "expected": 8.5}, {"input": [-93.0, 9.0], "expected": 9.0}, {"input": [-93.0, 9.5], "expected": 9.5}, {"input": [-93.0, 10.0], "expected": 10.0}, {"input": [-93.0, 10.5], "expected": 10.5}, {"input": [-93.0, 11.0], "expected": 11.0}, {"input": [-93.0, 11.5], "expected": 11.5}, {"input": [-93.0, 12.0], "expected": 12.0}, {"input": [-93.0, 12.5], "expected": 12.5}, {"input": [-93.0, 13.0], "expected": 13.0}, {"input": [-93.0, 13.5], "expected": 13.5}, {"input": [-93.0, 14.0], "expected": 14.0}, {"input": [-93.0, 14.5], "expected": 14.5}, {"input": [-93.0, 15.0], "expected": 15.0}, {"input": [-93.0, 15.5], "expected": 15.5}, {"input": [-93.0, 16.0], "expected": 16.0}, {"input": [-93.0, 16.5], "expected": 16.5}, {"input": [-93.0, 17.0], "expected": 17.0}, {"input": [-93.0, 17.5], "expected": 17.5}, {"input": [-93.0, 18.0], "expected": 18.0}, {"input": [-93.0, 18.5], "expected": 18.5}, {"input": [-93.0, 19.0], "expected": 19.0}, {"input": [-93.0, 19.5], "expected": 19.5}, {"input": [-93.0, 20.0], "expected": 20.0}, {"input": [-93.0, 20.5], "expected": 20.5}, {"input": [-93.0, 21.0], "expected": 21.0}, {"input": [-93.0, 21.5], "expected": 21.5}, {"input": [-93.0, 22.0], "expected": 22.0}, {"input": [-93.0, 22.5], "expected": 22.5}, {"input": [-93.0, 23.0], "expected": 23.0}, {"input": [-93.0, 23.5], "expected": 23.5}, {"input": [-93.0, 24.0], "expected": 24.0}, {"input": [-93.0, 24.5], "expected": 24.5}, {"input": [-93.0, 25.0], "expected": 25.0}, {"input": [-93.0, 25.5], "expected": 25.5}, {"input": [-93.0, 26.0], "expected": 26.0}, {"input": [-93.0, 26.5], "expected": 26.5}, {"input": [-93.0, 27.0], "expected": 27.0}, {"input": [-93.0, 27.5], "expected": 27.5}, {"input": [-93.0, 28.0], "expected": 28.0}, {"input": [-93.0, 28.5], "expected": 28.5}, {"input": [-93.0, 29.0], "expected": 29.0}, {"input": [-93.0, 29.5], "expected": 29.5}, {"input": [-93.0, 30.0], "expected": 30.0}, {"input": [-93.0, 30.5], "expected": 30.5}, {"input": [-93.0, 31.0], "expected": 31.0}, {"input": [-93.0, 31.5], "expected": 31.5}, {"input": [-93.0, 32.0], "expected": 32.0}, {"input": [-93.0, 32.5], "expected": 32.5}, {"input": [-93.0, 33.0], "expected": 33.0}, {"input": [-93.0, 33.5], "expected": 33.5}, {"input": [-93.0, 34.0], "expected": 34.0}, {"input": [-93.0, 34.5], "expected": 34.5}, {"input": [-93.0, 35.0], "expected": 35.0}, {"input": [-93.0, 35.5], "expected": 35.5}, {"input": [-93.0, 36.0], "expected": 36.0}, {"input": [-93.0, 36.5], "expected": 36.5}, {"input": [-93.0, 37.0], "expected": 37.0}, {"input": [-93.0, 37.5], "expected": 37.5}, {"input": [-93.0, 38.0], "expected": 38.0}, {"input": [-93.0, 38.5], "expected": 38.5}, {"input": [-93.0, 39.0], "expected": 39.0}, {"input": [-93.0, 39.5], "expected": 39.5}, {"input": [-93.0, 40.0], "expected": 40.0}, {"input": [-93.0, 40.5], "expected": 40.5}, {"input": [-93.0, 41.0], "expected": 41.0}, {"input": [-93.0, 41.5], "expected": 41.5}, {"input": [-93.0, 42.0], "expected": 42.0}, {"input": [-93.0, 42.5], "expected": 42.5}, {"input": [-93.0, 43.0], "expected": 43.0}, {"input": [-93.0, 43.5], "expected": 43.5}, {"input": [-93.0, 44.0], "expected": 44.0}, {"input": [-93.0, 44.5], "expected": 44.5}, {"input": [-93.0, 45.0], "expected": 45.0}, {"input": [-93.0, 45.5], "expected": 45.5}, {"input": [-93.0, 46.0], "expected": 46.0}, {"input": [-93.0, 46.5], "expected": 46.5}, {"input": [-93.0, 47.0], "expected": 47.0}, {"input": [-93.0, 47.5], "expected": 47.5}, {"input": [-93.0, 48.0], "expected": 48.0}, {"input": [-93.0, 48.5], "expected": 48.5}, {"input": [-93.0, 49.0], "expected": 49.0}, {"input": [-93.0, 49.5], "expected": 49.5}, {"input": [-93.0, 50.0], "expected": 50.0}, {"input": [-93.0, 50.5], "expected": 50.5}, {"input": [-93.0, 51.0], "expected": 51.0}, {"input": [-93.0, 51.5], "expected": 51.5}, {"input": [-93.0, 52.0], "expected": 52.0}, {"input": [-93.0, 52.5], "expected": 52.5}, {"input": [-93.0, 53.0], "expected": 53.0}, {"input": [-93.0, 53.5], "expected": 53.5}, {"input": [-93.0, 54.0], "expected": 54.0}, {"input": [-93.0, 54.5], "expected": 54.5}, {"input": [-93.0, 55.0], "expected": 55.0}, {"input": [-93.0, 55.5], "expected": 55.5}, {"input": [-93.0, 56.0], "expected": 56.0}, {"input": [-93.0, 56.5], "expected": 56.5}, {"input": [-93.0, 57.0], "expected": 57.0}, {"input": [-93.0, 57.5], "expected": 57.5}, {"input": [-93.0, 58.0], "expected": 58.0}, {"input": [-93.0, 58.5], "expected": 58.5}, {"input": [-93.0, 59.0], "expected": 59.0}, {"input": [-93.0, 59.5], "expected": 59.5}, {"input": [-93.0, 60.0], "expected": 60.0}, {"input": [-93.0, 60.5], "expected": 60.5}, {"input": [-93.0, 61.0], "expected": 61.0}, {"input": [-93.0, 61.5], "expected": 61.5}, {"input": [-93.0, 62.0], "expected": 62.0}, {"input": [-93.0, 62.5], "expected": 62.5}, {"input": [-93.0, 63.0], "expected": 63.0}, {"input": [-93.0, 63.5], "expected": 63.5}, {"input": [-93.0, 64.0], "expected": 64.0}, {"input": [-93.0, 64.5], "expected": 64.5}, {"input": [-93.0, 65.0], "expected": 65.0}, {"input": [-93.0, 65.5], "expected": 65.5}, {"input": [-93.0, 66.0], "expected": 66.0}, {"input": [-93.0, 66.5], "expected": 66.5}, {"input": [-93.0, 67.0], "expected": 67.0}, {"input": [-93.0, 67.5], "expected": 67.5}, {"input": [-93.0, 68.0], "expected": 68.0}, {"input": [-93.0, 68.5], "expected": 68.5}, {"input": [-93.0, 69.0], "expected": 69.0}, {"input": [-93.0, 69.5], "expected": 69.5}, {"input": [-93.0, 70.0], "expected": 70.0}, {"input": [-93.0, 70.5], "expected": 70.5}, {"input": [-93.0, 71.0], "expected": 71.0}, {"input": [-93.0, 71.5], "expected": 71.5}, {"input": [-93.0, 72.0], "expected": 72.0}, {"input": [-93.0, 72.5], "expected": 72.5}, {"input": [-93.0, 73.0], "expected": 73.0}, {"input": [-93.0, 73.5], "expected": 73.5}, {"input": [-93.0, 74.0], "expected": 74.0}, {"input": [-93.0, 74.5], "expected": 74.5}, {"input": [-93.0, 75.0], "expected": 75.0}, {"input": [-93.0, 75.5], "expected": 75.5}, {"input": [-93.0, 76.0], "expected": 76.0}, {"input": [-93.0, 76.5], "expected": 76.5}, {"input": [-93.0, 77.0], "expected": 77.0}, {"input": [-93.0, 77.5], "expected": 77.5}, {"input": [-93.0, 78.0], "expected": 78.0}, {"input": [-93.0, 78.5], "expected": 78.5}, {"input": [-93.0, 79.0], "expected": 79.0}, {"input": [-93.0, 79.5], "expected": 79.5}, {"input": [-93.0, 80.0], "expected": 80.0}, {"input": [-93.0, 80.5], "expected": 80.5}, {"input": [-93.0, 81.0], "expected": 81.0}, {"input": [-93.0, 81.5], "expected": 81.5}, {"input": [-93.0, 82.0], "expected": 82.0}, {"input": [-93.0, 82.5], "expected": 82.5}, {"input": [-93.0, 83.0], "expected": 83.0}, {"input": [-93.0, 83.5], "expected": 83.5}, {"input": [-93.0, 84.0], "expected": 84.0}, {"input": [-93.0, 84.5], "expected": 84.5}, {"input": [-93.0, 85.0], "expected": 85.0}, {"input": [-93.0, 85.5], "expected": 85.5}, {"input": [-93.0, 86.0], "expected": 86.0}, {"input": [-93.0, 86.5], "expected": 86.5}, {"input": [-93.0, 87.0], "expected": 87.0}, {"input": [-93.0, 87.5], "expected": 87.5}, {"input": [-93.0, 88.0], "expected": 88.0}, {"input": [-93.0, 88.5], "expected": 88.5}, {"input": [-93.0, 89.0], "expected": 89.0}, {"input": [-93.0, 89.5], "expected": 89.5}, {"input": [-93.0, 90.0], "expected": 90.0}, {"input": [-93.0, 90.5], "expected": 90.5}, {"input": [-93.0, 91.0], "expected": 91.0}, {"input": [-93.0, 91.5], "expected": 91.5}, {"input": [-93.0, 92.0], "expected": 92.0}, {"input": [-93.0, 92.5], "expected": 92.5}, {"input": [-93.0, 93.0], "expected": 93.0}, {"input": [-93.0, 93.5], "expected": 93.5}, {"input": [-93.0, 94.0], "expected": 94.0}, {"input": [-93.0, 94.5], "expected": 94.5}, {"input": [-93.0, 95.0], "expected": 95.0}, {"input": [-93.0, 95.5], "expected": 95.5}, {"input": [-93.0, 96.0], "expected": 96.0}, {"input": [-93.0, 96.5], "expected": 96.5}, {"input": [-93.0, 97.0], "expected": 97.0}, {"input": [-93.0, 97.5], "expected": 97.5}, {"input": [-93.0, 98.0], "expected": 98.0}, {"input": [-93.0, 98.5], "expected": 98.5}, {"input": [-93.0, 99.0], "expected": 99.0}, {"input": [-93.0, 99.5], "expected": 99.5}, {"input": [-92.5, -100.0], "expected": -92.49944706852465}, {"input": [-92.5, -99.5], "expected": -92.49908853354623}, {"input": [-92.5, -99.0], "expected": -92.49849768984025}, {"input": [-92.5, -98.5], "expected": -92.49752431486228}, {"input": [-92.5, -98.0], "expected": -92.49592155672943}, {"input": [-92.5, -97.5], "expected": -92.49328465151088}, {"input": [-92.5, -97.0], "expected": -92.4889522551514}, {"input": [-92.5, -96.5], "expected": -92.4818500720822}, {"input": [-92.5, -96.0], "expected": -92.47024958172737}, {"input": [-92.5, -95.5], "expected": -92.45141264842626}, {"input": [-92.5, -95.0], "expected": -92.42111026570745}, {"input": [-92.5, -94.5], "expected": -92.37307198895702}, {"input": [-92.5, -94.0], "expected": -92.29858672201725}, {"input": [-92.5, -93.5], "expected": -92.18673831248178}, {"input": [-92.5, -93.0], "expected": -92.0259230158199}, {"input": [-92.5, -92.5], "expected": -91.80685281944005}, {"input": [-92.5, -92.0], "expected": -91.5259230158199}, {"input": [-92.5, -91.5], "expected": -91.18673831248178}, {"input": [-92.5, -91.0], "expected": -90.79858672201725}, {"input": [-92.5, -90.5], "expected": -90.37307198895702}, {"input": [-92.5, -90.0], "expected": -89.92111026570745}, {"input": [-92.5, -89.5], "expected": -89.45141264842626}, {"input": [-92.5, -89.0], "expected": -88.97024958172737}, {"input": [-92.5, -88.5], "expected": -88.4818500720822}, {"input": [-92.5, -88.0], "expected": -87.9889522551514}, {"input": [-92.5, -87.5], "expected": -87.49328465151088}, {"input": [-92.5, -87.0], "expected": -86.99592155672943}, {"input": [-92.5, -86.5], "expected": -86.49752431486228}, {"input": [-92.5, -86.0], "expected": -85.99849768984025}, {"input": [-92.5, -85.5], "expected": -85.49908853354623}, {"input": [-92.5, -85.0], "expected": -84.99944706852465}, {"input": [-92.5, -84.5], "expected": -84.4996645936271}, {"input": [-92.5, -84.0], "expected": -83.99979655232787}, {"input": [-92.5, -83.5], "expected": -83.49987659781027}, {"input": [-92.5, -83.0], "expected": -82.99992515097136}, {"input": [-92.5, -82.5], "expected": -82.49995460110078}, {"input": [-92.5, -82.0], "expected": -81.99997246392977}, {"input": [-92.5, -81.5], "expected": -81.49998329843868}, {"input": [-92.5, -81.0], "expected": -80.99998986995772}, {"input": [-92.5, -80.5], "expected": -80.49999385580652}, {"input": [-92.5, -80.0], "expected": -79.99999627335377}, {"input": [-92.5, -79.5], "expected": -79.49999773967315}, {"input": [-92.5, -79.0], "expected": -78.99999862904185}, {"input": [-92.5, -78.5], "expected": -78.49999916847163}, {"input": [-92.5, -78.0], "expected": -77.99999949565246}, {"input": [-92.5, -77.5], "expected": -77.49999969409772}, {"input": [-92.5, -77.0], "expected": -76.99999981446088}, {"input": [-92.5, -76.5], "expected": -76.49999988746484}, {"input": [-92.5, -76.0], "expected": -75.99999993174397}, {"input": [-92.5, -75.5], "expected": -75.49999995860063}, {"input": [-92.5, -75.0], "expected": -74.99999997489}, {"input": [-92.5, -74.5], "expected": -74.49999998477001}, {"input": [-92.5, -74.0], "expected": -73.99999999076255}, {"input": [-92.5, -73.5], "expected": -73.4999999943972}, {"input": [-92.5, -73.0], "expected": -72.99999999660173}, {"input": [-92.5, -72.5], "expected": -72.49999999793884}, {"input": [-92.5, -72.0], "expected": -71.99999999874984}, {"input": [-92.5, -71.5], "expected": -71.49999999924174}, {"input": [-92.5, -71.0], "expected": -70.9999999995401}, {"input": [-92.5, -70.5], "expected": -70.49999999972106}, {"input": [-92.5, -70.0], "expected": -69.9999999998308}, {"input": [-92.5, -69.5], "expected": -69.49999999989738}, {"input": [-92.5, -69.0], "expected": -68.99999999993776}, {"input": [-92.5, -68.5], "expected": -68.49999999996224}, {"input": [-92.5, -68.0], "expected": -67.9999999999771}, {"input": [-92.5, -67.5], "expected": -67.49999999998612}, {"input": [-92.5, -67.0], "expected": -66.99999999999157}, {"input": [-92.5, -66.5], "expected": -66.49999999999488}, {"input": [-92.5, -66.0], "expected": -65.9999999999969}, {"input": [-92.5, -65.5], "expected": -65.49999999999812}, {"input": [-92.5, -65.0], "expected": -64.99999999999886}, {"input": [-92.5, -64.5], "expected": -64.4999999999993}, {"input": [-92.5, -64.0], "expected": -63.99999999999958}, {"input": [-92.5, -63.5], "expected": -63.499999999999744}, {"input": [-92.5, -63.0], "expected": -62.999999999999844}, {"input": [-92.5, -62.5], "expected": -62.49999999999991}, {"input": [-92.5, -62.0], "expected": -61.99999999999994}, {"input": [-92.5, -61.5], "expected": -61.499999999999964}, {"input": [-92.5, -61.0], "expected": -60.99999999999998}, {"input": [-92.5, -60.5], "expected": -60.499999999999986}, {"input": [-92.5, -60.0], "expected": -59.99999999999999}, {"input": [-92.5, -59.5], "expected": -59.49999999999999}, {"input": [-92.5, -59.0], "expected": -59.0}, {"input": [-92.5, -58.5], "expected": -58.5}, {"input": [-92.5, -58.0], "expected": -58.0}, {"input": [-92.5, -57.5], "expected": -57.5}, {"input": [-92.5, -57.0], "expected": -57.0}, {"input": [-92.5, -56.5], "expected": -56.5}, {"input": [-92.5, -56.0], "expected": -56.0}, {"input": [-92.5, -55.5], "expected": -55.5}, {"input": [-92.5, -55.0], "expected": -55.0}, {"input": [-92.5, -54.5], "expected": -54.5}, {"input": [-92.5, -54.0], "expected": -54.0}, {"input": [-92.5, -53.5], "expected": -53.5}, {"input": [-92.5, -53.0], "expected": -53.0}, {"input": [-92.5, -52.5], "expected": -52.5}, {"input": [-92.5, -52.0], "expected": -52.0}, {"input": [-92.5, -51.5], "expected": -51.5}, {"input": [-92.5, -51.0], "expected": -51.0}, {"input": [-92.5, -50.5], "expected": -50.5}, {"input": [-92.5, -50.0], "expected": -50.0}, {"input": [-92.5, -49.5], "expected": -49.5}, {"input": [-92.5, -49.0], "expected": -49.0}, {"input": [-92.5, -48.5], "expected": -48.5}, {"input": [-92.5, -48.0], "expected": -48.0}, {"input": [-92.5, -47.5], "expected": -47.5}, {"input": [-92.5, -47.0], "expected": -47.0}, {"input": [-92.5, -46.5], "expected": -46.5}, {"input": [-92.5, -46.0], "expected": -46.0}, {"input": [-92.5, -45.5], "expected": -45.5}, {"input": [-92.5, -45.0], "expected": -45.0}, {"input": [-92.5, -44.5], "expected": -44.5}, {"input": [-92.5, -44.0], "expected": -44.0}, {"input": [-92.5, -43.5], "expected": -43.5}, {"input": [-92.5, -43.0], "expected": -43.0}, {"input": [-92.5, -42.5], "expected": -42.5}, {"input": [-92.5, -42.0], "expected": -42.0}, {"input": [-92.5, -41.5], "expected": -41.5}, {"input": [-92.5, -41.0], "expected": -41.0}, {"input": [-92.5, -40.5], "expected": -40.5}, {"input": [-92.5, -40.0], "expected": -40.0}, {"input": [-92.5, -39.5], "expected": -39.5}, {"input": [-92.5, -39.0], "expected": -39.0}, {"input": [-92.5, -38.5], "expected": -38.5}, {"input": [-92.5, -38.0], "expected": -38.0}, {"input": [-92.5, -37.5], "expected": -37.5}, {"input": [-92.5, -37.0], "expected": -37.0}, {"input": [-92.5, -36.5], "expected": -36.5}, {"input": [-92.5, -36.0], "expected": -36.0}, {"input": [-92.5, -35.5], "expected": -35.5}, {"input": [-92.5, -35.0], "expected": -35.0}, {"input": [-92.5, -34.5], "expected": -34.5}, {"input": [-92.5, -34.0], "expected": -34.0}, {"input": [-92.5, -33.5], "expected": -33.5}, {"input": [-92.5, -33.0], "expected": -33.0}, {"input": [-92.5, -32.5], "expected": -32.5}, {"input": [-92.5, -32.0], "expected": -32.0}, {"input": [-92.5, -31.5], "expected": -31.5}, {"input": [-92.5, -31.0], "expected": -31.0}, {"input": [-92.5, -30.5], "expected": -30.5}, {"input": [-92.5, -30.0], "expected": -30.0}, {"input": [-92.5, -29.5], "expected": -29.5}, {"input": [-92.5, -29.0], "expected": -29.0}, {"input": [-92.5, -28.5], "expected": -28.5}, {"input": [-92.5, -28.0], "expected": -28.0}, {"input": [-92.5, -27.5], "expected": -27.5}, {"input": [-92.5, -27.0], "expected": -27.0}, {"input": [-92.5, -26.5], "expected": -26.5}, {"input": [-92.5, -26.0], "expected": -26.0}, {"input": [-92.5, -25.5], "expected": -25.5}, {"input": [-92.5, -25.0], "expected": -25.0}, {"input": [-92.5, -24.5], "expected": -24.5}, {"input": [-92.5, -24.0], "expected": -24.0}, {"input": [-92.5, -23.5], "expected": -23.5}, {"input": [-92.5, -23.0], "expected": -23.0}, {"input": [-92.5, -22.5], "expected": -22.5}, {"input": [-92.5, -22.0], "expected": -22.0}, {"input": [-92.5, -21.5], "expected": -21.5}, {"input": [-92.5, -21.0], "expected": -21.0}, {"input": [-92.5, -20.5], "expected": -20.5}, {"input": [-92.5, -20.0], "expected": -20.0}, {"input": [-92.5, -19.5], "expected": -19.5}, {"input": [-92.5, -19.0], "expected": -19.0}, {"input": [-92.5, -18.5], "expected": -18.5}, {"input": [-92.5, -18.0], "expected": -18.0}, {"input": [-92.5, -17.5], "expected": -17.5}, {"input": [-92.5, -17.0], "expected": -17.0}, {"input": [-92.5, -16.5], "expected": -16.5}, {"input": [-92.5, -16.0], "expected": -16.0}, {"input": [-92.5, -15.5], "expected": -15.5}, {"input": [-92.5, -15.0], "expected": -15.0}, {"input": [-92.5, -14.5], "expected": -14.5}, {"input": [-92.5, -14.0], "expected": -14.0}, {"input": [-92.5, -13.5], "expected": -13.5}, {"input": [-92.5, -13.0], "expected": -13.0}, {"input": [-92.5, -12.5], "expected": -12.5}, {"input": [-92.5, -12.0], "expected": -12.0}, {"input": [-92.5, -11.5], "expected": -11.5}, {"input": [-92.5, -11.0], "expected": -11.0}, {"input": [-92.5, -10.5], "expected": -10.5}, {"input": [-92.5, -10.0], "expected": -10.0}, {"input": [-92.5, -9.5], "expected": -9.5}, {"input": [-92.5, -9.0], "expected": -9.0}, {"input": [-92.5, -8.5], "expected": -8.5}, {"input": [-92.5, -8.0], "expected": -8.0}, {"input": [-92.5, -7.5], "expected": -7.5}, {"input": [-92.5, -7.0], "expected": -7.0}, {"input": [-92.5, -6.5], "expected": -6.5}, {"input": [-92.5, -6.0], "expected": -6.0}, {"input": [-92.5, -5.5], "expected": -5.5}, {"input": [-92.5, -5.0], "expected": -5.0}, {"input": [-92.5, -4.5], "expected": -4.5}, {"input": [-92.5, -4.0], "expected": -4.0}, {"input": [-92.5, -3.5], "expected": -3.5}, {"input": [-92.5, -3.0], "expected": -3.0}, {"input": [-92.5, -2.5], "expected": -2.5}, {"input": [-92.5, -2.0], "expected": -2.0}, {"input": [-92.5, -1.5], "expected": -1.5}, {"input": [-92.5, -1.0], "expected": -1.0}, {"input": [-92.5, -0.5], "expected": -0.5}, {"input": [-92.5, 0.0], "expected": 6.726055149644708e-41}, {"input": [-92.5, 0.5], "expected": 0.5}, {"input": [-92.5, 1.0], "expected": 1.0}, {"input": [-92.5, 1.5], "expected": 1.5}, {"input": [-92.5, 2.0], "expected": 2.0}, {"input": [-92.5, 2.5], "expected": 2.5}, {"input": [-92.5, 3.0], "expected": 3.0}, {"input": [-92.5, 3.5], "expected": 3.5}, {"input": [-92.5, 4.0], "expected": 4.0}, {"input": [-92.5, 4.5], "expected": 4.5}, {"input": [-92.5, 5.0], "expected": 5.0}, {"input": [-92.5, 5.5], "expected": 5.5}, {"input": [-92.5, 6.0], "expected": 6.0}, {"input": [-92.5, 6.5], "expected": 6.5}, {"input": [-92.5, 7.0], "expected": 7.0}, {"input": [-92.5, 7.5], "expected": 7.5}, {"input": [-92.5, 8.0], "expected": 8.0}, {"input": [-92.5, 8.5], "expected": 8.5}, {"input": [-92.5, 9.0], "expected": 9.0}, {"input": [-92.5, 9.5], "expected": 9.5}, {"input": [-92.5, 10.0], "expected": 10.0}, {"input": [-92.5, 10.5], "expected": 10.5}, {"input": [-92.5, 11.0], "expected": 11.0}, {"input": [-92.5, 11.5], "expected": 11.5}, {"input": [-92.5, 12.0], "expected": 12.0}, {"input": [-92.5, 12.5], "expected": 12.5}, {"input": [-92.5, 13.0], "expected": 13.0}, {"input": [-92.5, 13.5], "expected": 13.5}, {"input": [-92.5, 14.0], "expected": 14.0}, {"input": [-92.5, 14.5], "expected": 14.5}, {"input": [-92.5, 15.0], "expected": 15.0}, {"input": [-92.5, 15.5], "expected": 15.5}, {"input": [-92.5, 16.0], "expected": 16.0}, {"input": [-92.5, 16.5], "expected": 16.5}, {"input": [-92.5, 17.0], "expected": 17.0}, {"input": [-92.5, 17.5], "expected": 17.5}, {"input": [-92.5, 18.0], "expected": 18.0}, {"input": [-92.5, 18.5], "expected": 18.5}, {"input": [-92.5, 19.0], "expected": 19.0}, {"input": [-92.5, 19.5], "expected": 19.5}, {"input": [-92.5, 20.0], "expected": 20.0}, {"input": [-92.5, 20.5], "expected": 20.5}, {"input": [-92.5, 21.0], "expected": 21.0}, {"input": [-92.5, 21.5], "expected": 21.5}, {"input": [-92.5, 22.0], "expected": 22.0}, {"input": [-92.5, 22.5], "expected": 22.5}, {"input": [-92.5, 23.0], "expected": 23.0}, {"input": [-92.5, 23.5], "expected": 23.5}, {"input": [-92.5, 24.0], "expected": 24.0}, {"input": [-92.5, 24.5], "expected": 24.5}, {"input": [-92.5, 25.0], "expected": 25.0}, {"input": [-92.5, 25.5], "expected": 25.5}, {"input": [-92.5, 26.0], "expected": 26.0}, {"input": [-92.5, 26.5], "expected": 26.5}, {"input": [-92.5, 27.0], "expected": 27.0}, {"input": [-92.5, 27.5], "expected": 27.5}, {"input": [-92.5, 28.0], "expected": 28.0}, {"input": [-92.5, 28.5], "expected": 28.5}, {"input": [-92.5, 29.0], "expected": 29.0}, {"input": [-92.5, 29.5], "expected": 29.5}, {"input": [-92.5, 30.0], "expected": 30.0}, {"input": [-92.5, 30.5], "expected": 30.5}, {"input": [-92.5, 31.0], "expected": 31.0}, {"input": [-92.5, 31.5], "expected": 31.5}, {"input": [-92.5, 32.0], "expected": 32.0}, {"input": [-92.5, 32.5], "expected": 32.5}, {"input": [-92.5, 33.0], "expected": 33.0}, {"input": [-92.5, 33.5], "expected": 33.5}, {"input": [-92.5, 34.0], "expected": 34.0}, {"input": [-92.5, 34.5], "expected": 34.5}, {"input": [-92.5, 35.0], "expected": 35.0}, {"input": [-92.5, 35.5], "expected": 35.5}, {"input": [-92.5, 36.0], "expected": 36.0}, {"input": [-92.5, 36.5], "expected": 36.5}, {"input": [-92.5, 37.0], "expected": 37.0}, {"input": [-92.5, 37.5], "expected": 37.5}, {"input": [-92.5, 38.0], "expected": 38.0}, {"input": [-92.5, 38.5], "expected": 38.5}, {"input": [-92.5, 39.0], "expected": 39.0}, {"input": [-92.5, 39.5], "expected": 39.5}, {"input": [-92.5, 40.0], "expected": 40.0}, {"input": [-92.5, 40.5], "expected": 40.5}, {"input": [-92.5, 41.0], "expected": 41.0}, {"input": [-92.5, 41.5], "expected": 41.5}, {"input": [-92.5, 42.0], "expected": 42.0}, {"input": [-92.5, 42.5], "expected": 42.5}, {"input": [-92.5, 43.0], "expected": 43.0}, {"input": [-92.5, 43.5], "expected": 43.5}, {"input": [-92.5, 44.0], "expected": 44.0}, {"input": [-92.5, 44.5], "expected": 44.5}, {"input": [-92.5, 45.0], "expected": 45.0}, {"input": [-92.5, 45.5], "expected": 45.5}, {"input": [-92.5, 46.0], "expected": 46.0}, {"input": [-92.5, 46.5], "expected": 46.5}, {"input": [-92.5, 47.0], "expected": 47.0}, {"input": [-92.5, 47.5], "expected": 47.5}, {"input": [-92.5, 48.0], "expected": 48.0}, {"input": [-92.5, 48.5], "expected": 48.5}, {"input": [-92.5, 49.0], "expected": 49.0}, {"input": [-92.5, 49.5], "expected": 49.5}, {"input": [-92.5, 50.0], "expected": 50.0}, {"input": [-92.5, 50.5], "expected": 50.5}, {"input": [-92.5, 51.0], "expected": 51.0}, {"input": [-92.5, 51.5], "expected": 51.5}, {"input": [-92.5, 52.0], "expected": 52.0}, {"input": [-92.5, 52.5], "expected": 52.5}, {"input": [-92.5, 53.0], "expected": 53.0}, {"input": [-92.5, 53.5], "expected": 53.5}, {"input": [-92.5, 54.0], "expected": 54.0}, {"input": [-92.5, 54.5], "expected": 54.5}, {"input": [-92.5, 55.0], "expected": 55.0}, {"input": [-92.5, 55.5], "expected": 55.5}, {"input": [-92.5, 56.0], "expected": 56.0}, {"input": [-92.5, 56.5], "expected": 56.5}, {"input": [-92.5, 57.0], "expected": 57.0}, {"input": [-92.5, 57.5], "expected": 57.5}, {"input": [-92.5, 58.0], "expected": 58.0}, {"input": [-92.5, 58.5], "expected": 58.5}, {"input": [-92.5, 59.0], "expected": 59.0}, {"input": [-92.5, 59.5], "expected": 59.5}, {"input": [-92.5, 60.0], "expected": 60.0}, {"input": [-92.5, 60.5], "expected": 60.5}, {"input": [-92.5, 61.0], "expected": 61.0}, {"input": [-92.5, 61.5], "expected": 61.5}, {"input": [-92.5, 62.0], "expected": 62.0}, {"input": [-92.5, 62.5], "expected": 62.5}, {"input": [-92.5, 63.0], "expected": 63.0}, {"input": [-92.5, 63.5], "expected": 63.5}, {"input": [-92.5, 64.0], "expected": 64.0}, {"input": [-92.5, 64.5], "expected": 64.5}, {"input": [-92.5, 65.0], "expected": 65.0}, {"input": [-92.5, 65.5], "expected": 65.5}, {"input": [-92.5, 66.0], "expected": 66.0}, {"input": [-92.5, 66.5], "expected": 66.5}, {"input": [-92.5, 67.0], "expected": 67.0}, {"input": [-92.5, 67.5], "expected": 67.5}, {"input": [-92.5, 68.0], "expected": 68.0}, {"input": [-92.5, 68.5], "expected": 68.5}, {"input": [-92.5, 69.0], "expected": 69.0}, {"input": [-92.5, 69.5], "expected": 69.5}, {"input": [-92.5, 70.0], "expected": 70.0}, {"input": [-92.5, 70.5], "expected": 70.5}, {"input": [-92.5, 71.0], "expected": 71.0}, {"input": [-92.5, 71.5], "expected": 71.5}, {"input": [-92.5, 72.0], "expected": 72.0}, {"input": [-92.5, 72.5], "expected": 72.5}, {"input": [-92.5, 73.0], "expected": 73.0}, {"input": [-92.5, 73.5], "expected": 73.5}, {"input": [-92.5, 74.0], "expected": 74.0}, {"input": [-92.5, 74.5], "expected": 74.5}, {"input": [-92.5, 75.0], "expected": 75.0}, {"input": [-92.5, 75.5], "expected": 75.5}, {"input": [-92.5, 76.0], "expected": 76.0}, {"input": [-92.5, 76.5], "expected": 76.5}, {"input": [-92.5, 77.0], "expected": 77.0}, {"input": [-92.5, 77.5], "expected": 77.5}, {"input": [-92.5, 78.0], "expected": 78.0}, {"input": [-92.5, 78.5], "expected": 78.5}, {"input": [-92.5, 79.0], "expected": 79.0}, {"input": [-92.5, 79.5], "expected": 79.5}, {"input": [-92.5, 80.0], "expected": 80.0}, {"input": [-92.5, 80.5], "expected": 80.5}, {"input": [-92.5, 81.0], "expected": 81.0}, {"input": [-92.5, 81.5], "expected": 81.5}, {"input": [-92.5, 82.0], "expected": 82.0}, {"input": [-92.5, 82.5], "expected": 82.5}, {"input": [-92.5, 83.0], "expected": 83.0}, {"input": [-92.5, 83.5], "expected": 83.5}, {"input": [-92.5, 84.0], "expected": 84.0}, {"input": [-92.5, 84.5], "expected": 84.5}, {"input": [-92.5, 85.0], "expected": 85.0}, {"input": [-92.5, 85.5], "expected": 85.5}, {"input": [-92.5, 86.0], "expected": 86.0}, {"input": [-92.5, 86.5], "expected": 86.5}, {"input": [-92.5, 87.0], "expected": 87.0}, {"input": [-92.5, 87.5], "expected": 87.5}, {"input": [-92.5, 88.0], "expected": 88.0}, {"input": [-92.5, 88.5], "expected": 88.5}, {"input": [-92.5, 89.0], "expected": 89.0}, {"input": [-92.5, 89.5], "expected": 89.5}, {"input": [-92.5, 90.0], "expected": 90.0}, {"input": [-92.5, 90.5], "expected": 90.5}, {"input": [-92.5, 91.0], "expected": 91.0}, {"input": [-92.5, 91.5], "expected": 91.5}, {"input": [-92.5, 92.0], "expected": 92.0}, {"input": [-92.5, 92.5], "expected": 92.5}, {"input": [-92.5, 93.0], "expected": 93.0}, {"input": [-92.5, 93.5], "expected": 93.5}, {"input": [-92.5, 94.0], "expected": 94.0}, {"input": [-92.5, 94.5], "expected": 94.5}, {"input": [-92.5, 95.0], "expected": 95.0}, {"input": [-92.5, 95.5], "expected": 95.5}, {"input": [-92.5, 96.0], "expected": 96.0}, {"input": [-92.5, 96.5], "expected": 96.5}, {"input": [-92.5, 97.0], "expected": 97.0}, {"input": [-92.5, 97.5], "expected": 97.5}, {"input": [-92.5, 98.0], "expected": 98.0}, {"input": [-92.5, 98.5], "expected": 98.5}, {"input": [-92.5, 99.0], "expected": 99.0}, {"input": [-92.5, 99.5], "expected": 99.5}, {"input": [-92.0, -100.0], "expected": -91.9996645936271}, {"input": [-92.0, -99.5], "expected": -91.99944706852465}, {"input": [-92.0, -99.0], "expected": -91.99908853354623}, {"input": [-92.0, -98.5], "expected": -91.99849768984025}, {"input": [-92.0, -98.0], "expected": -91.99752431486228}, {"input": [-92.0, -97.5], "expected": -91.99592155672943}, {"input": [-92.0, -97.0], "expected": -91.99328465151088}, {"input": [-92.0, -96.5], "expected": -91.9889522551514}, {"input": [-92.0, -96.0], "expected": -91.9818500720822}, {"input": [-92.0, -95.5], "expected": -91.97024958172737}, {"input": [-92.0, -95.0], "expected": -91.95141264842626}, {"input": [-92.0, -94.5], "expected": -91.92111026570745}, {"input": [-92.0, -94.0], "expected": -91.87307198895702}, {"input": [-92.0, -93.5], "expected": -91.79858672201725}, {"input": [-92.0, -93.0], "expected": -91.68673831248178}, {"input": [-92.0, -92.5], "expected": -91.5259230158199}, {"input": [-92.0, -92.0], "expected": -91.30685281944005}, {"input": [-92.0, -91.5], "expected": -91.0259230158199}, {"input": [-92.0, -91.0], "expected": -90.68673831248178}, {"input": [-92.0, -90.5], "expected": -90.29858672201725}, {"input": [-92.0, -90.0], "expected": -89.87307198895702}, {"input": [-92.0, -89.5], "expected": -89.42111026570745}, {"input": [-92.0, -89.0], "expected": -88.95141264842626}, {"input": [-92.0, -88.5], "expected": -88.47024958172737}, {"input": [-92.0, -88.0], "expected": -87.9818500720822}, {"input": [-92.0, -87.5], "expected": -87.4889522551514}, {"input": [-92.0, -87.0], "expected": -86.99328465151088}, {"input": [-92.0, -86.5], "expected": -86.49592155672943}, {"input": [-92.0, -86.0], "expected": -85.99752431486228}, {"input": [-92.0, -85.5], "expected": -85.49849768984025}, {"input": [-92.0, -85.0], "expected": -84.99908853354623}, {"input": [-92.0, -84.5], "expected": -84.49944706852465}, {"input": [-92.0, -84.0], "expected": -83.9996645936271}, {"input": [-92.0, -83.5], "expected": -83.49979655232787}, {"input": [-92.0, -83.0], "expected": -82.99987659781027}, {"input": [-92.0, -82.5], "expected": -82.49992515097136}, {"input": [-92.0, -82.0], "expected": -81.99995460110078}, {"input": [-92.0, -81.5], "expected": -81.49997246392977}, {"input": [-92.0, -81.0], "expected": -80.99998329843868}, {"input": [-92.0, -80.5], "expected": -80.49998986995772}, {"input": [-92.0, -80.0], "expected": -79.99999385580652}, {"input": [-92.0, -79.5], "expected": -79.49999627335377}, {"input": [-92.0, -79.0], "expected": -78.99999773967315}, {"input": [-92.0, -78.5], "expected": -78.49999862904185}, {"input": [-92.0, -78.0], "expected": -77.99999916847163}, {"input": [-92.0, -77.5], "expected": -77.49999949565246}, {"input": [-92.0, -77.0], "expected": -76.99999969409772}, {"input": [-92.0, -76.5], "expected": -76.49999981446088}, {"input": [-92.0, -76.0], "expected": -75.99999988746484}, {"input": [-92.0, -75.5], "expected": -75.49999993174397}, {"input": [-92.0, -75.0], "expected": -74.99999995860063}, {"input": [-92.0, -74.5], "expected": -74.49999997489}, {"input": [-92.0, -74.0], "expected": -73.99999998477001}, {"input": [-92.0, -73.5], "expected": -73.49999999076255}, {"input": [-92.0, -73.0], "expected": -72.9999999943972}, {"input": [-92.0, -72.5], "expected": -72.49999999660173}, {"input": [-92.0, -72.0], "expected": -71.99999999793884}, {"input": [-92.0, -71.5], "expected": -71.49999999874984}, {"input": [-92.0, -71.0], "expected": -70.99999999924174}, {"input": [-92.0, -70.5], "expected": -70.4999999995401}, {"input": [-92.0, -70.0], "expected": -69.99999999972106}, {"input": [-92.0, -69.5], "expected": -69.4999999998308}, {"input": [-92.0, -69.0], "expected": -68.99999999989738}, {"input": [-92.0, -68.5], "expected": -68.49999999993776}, {"input": [-92.0, -68.0], "expected": -67.99999999996224}, {"input": [-92.0, -67.5], "expected": -67.4999999999771}, {"input": [-92.0, -67.0], "expected": -66.99999999998612}, {"input": [-92.0, -66.5], "expected": -66.49999999999157}, {"input": [-92.0, -66.0], "expected": -65.99999999999488}, {"input": [-92.0, -65.5], "expected": -65.4999999999969}, {"input": [-92.0, -65.0], "expected": -64.99999999999812}, {"input": [-92.0, -64.5], "expected": -64.49999999999886}, {"input": [-92.0, -64.0], "expected": -63.99999999999931}, {"input": [-92.0, -63.5], "expected": -63.49999999999958}, {"input": [-92.0, -63.0], "expected": -62.999999999999744}, {"input": [-92.0, -62.5], "expected": -62.499999999999844}, {"input": [-92.0, -62.0], "expected": -61.99999999999991}, {"input": [-92.0, -61.5], "expected": -61.49999999999994}, {"input": [-92.0, -61.0], "expected": -60.999999999999964}, {"input": [-92.0, -60.5], "expected": -60.49999999999998}, {"input": [-92.0, -60.0], "expected": -59.999999999999986}, {"input": [-92.0, -59.5], "expected": -59.49999999999999}, {"input": [-92.0, -59.0], "expected": -58.99999999999999}, {"input": [-92.0, -58.5], "expected": -58.5}, {"input": [-92.0, -58.0], "expected": -58.0}, {"input": [-92.0, -57.5], "expected": -57.5}, {"input": [-92.0, -57.0], "expected": -57.0}, {"input": [-92.0, -56.5], "expected": -56.5}, {"input": [-92.0, -56.0], "expected": -56.0}, {"input": [-92.0, -55.5], "expected": -55.5}, {"input": [-92.0, -55.0], "expected": -55.0}, {"input": [-92.0, -54.5], "expected": -54.5}, {"input": [-92.0, -54.0], "expected": -54.0}, {"input": [-92.0, -53.5], "expected": -53.5}, {"input": [-92.0, -53.0], "expected": -53.0}, {"input": [-92.0, -52.5], "expected": -52.5}, {"input": [-92.0, -52.0], "expected": -52.0}, {"input": [-92.0, -51.5], "expected": -51.5}, {"input": [-92.0, -51.0], "expected": -51.0}, {"input": [-92.0, -50.5], "expected": -50.5}, {"input": [-92.0, -50.0], "expected": -50.0}, {"input": [-92.0, -49.5], "expected": -49.5}, {"input": [-92.0, -49.0], "expected": -49.0}, {"input": [-92.0, -48.5], "expected": -48.5}, {"input": [-92.0, -48.0], "expected": -48.0}, {"input": [-92.0, -47.5], "expected": -47.5}, {"input": [-92.0, -47.0], "expected": -47.0}, {"input": [-92.0, -46.5], "expected": -46.5}, {"input": [-92.0, -46.0], "expected": -46.0}, {"input": [-92.0, -45.5], "expected": -45.5}, {"input": [-92.0, -45.0], "expected": -45.0}, {"input": [-92.0, -44.5], "expected": -44.5}, {"input": [-92.0, -44.0], "expected": -44.0}, {"input": [-92.0, -43.5], "expected": -43.5}, {"input": [-92.0, -43.0], "expected": -43.0}, {"input": [-92.0, -42.5], "expected": -42.5}, {"input": [-92.0, -42.0], "expected": -42.0}, {"input": [-92.0, -41.5], "expected": -41.5}, {"input": [-92.0, -41.0], "expected": -41.0}, {"input": [-92.0, -40.5], "expected": -40.5}, {"input": [-92.0, -40.0], "expected": -40.0}, {"input": [-92.0, -39.5], "expected": -39.5}, {"input": [-92.0, -39.0], "expected": -39.0}, {"input": [-92.0, -38.5], "expected": -38.5}, {"input": [-92.0, -38.0], "expected": -38.0}, {"input": [-92.0, -37.5], "expected": -37.5}, {"input": [-92.0, -37.0], "expected": -37.0}, {"input": [-92.0, -36.5], "expected": -36.5}, {"input": [-92.0, -36.0], "expected": -36.0}, {"input": [-92.0, -35.5], "expected": -35.5}, {"input": [-92.0, -35.0], "expected": -35.0}, {"input": [-92.0, -34.5], "expected": -34.5}, {"input": [-92.0, -34.0], "expected": -34.0}, {"input": [-92.0, -33.5], "expected": -33.5}, {"input": [-92.0, -33.0], "expected": -33.0}, {"input": [-92.0, -32.5], "expected": -32.5}, {"input": [-92.0, -32.0], "expected": -32.0}, {"input": [-92.0, -31.5], "expected": -31.5}, {"input": [-92.0, -31.0], "expected": -31.0}, {"input": [-92.0, -30.5], "expected": -30.5}, {"input": [-92.0, -30.0], "expected": -30.0}, {"input": [-92.0, -29.5], "expected": -29.5}, {"input": [-92.0, -29.0], "expected": -29.0}, {"input": [-92.0, -28.5], "expected": -28.5}, {"input": [-92.0, -28.0], "expected": -28.0}, {"input": [-92.0, -27.5], "expected": -27.5}, {"input": [-92.0, -27.0], "expected": -27.0}, {"input": [-92.0, -26.5], "expected": -26.5}, {"input": [-92.0, -26.0], "expected": -26.0}, {"input": [-92.0, -25.5], "expected": -25.5}, {"input": [-92.0, -25.0], "expected": -25.0}, {"input": [-92.0, -24.5], "expected": -24.5}, {"input": [-92.0, -24.0], "expected": -24.0}, {"input": [-92.0, -23.5], "expected": -23.5}, {"input": [-92.0, -23.0], "expected": -23.0}, {"input": [-92.0, -22.5], "expected": -22.5}, {"input": [-92.0, -22.0], "expected": -22.0}, {"input": [-92.0, -21.5], "expected": -21.5}, {"input": [-92.0, -21.0], "expected": -21.0}, {"input": [-92.0, -20.5], "expected": -20.5}, {"input": [-92.0, -20.0], "expected": -20.0}, {"input": [-92.0, -19.5], "expected": -19.5}, {"input": [-92.0, -19.0], "expected": -19.0}, {"input": [-92.0, -18.5], "expected": -18.5}, {"input": [-92.0, -18.0], "expected": -18.0}, {"input": [-92.0, -17.5], "expected": -17.5}, {"input": [-92.0, -17.0], "expected": -17.0}, {"input": [-92.0, -16.5], "expected": -16.5}, {"input": [-92.0, -16.0], "expected": -16.0}, {"input": [-92.0, -15.5], "expected": -15.5}, {"input": [-92.0, -15.0], "expected": -15.0}, {"input": [-92.0, -14.5], "expected": -14.5}, {"input": [-92.0, -14.0], "expected": -14.0}, {"input": [-92.0, -13.5], "expected": -13.5}, {"input": [-92.0, -13.0], "expected": -13.0}, {"input": [-92.0, -12.5], "expected": -12.5}, {"input": [-92.0, -12.0], "expected": -12.0}, {"input": [-92.0, -11.5], "expected": -11.5}, {"input": [-92.0, -11.0], "expected": -11.0}, {"input": [-92.0, -10.5], "expected": -10.5}, {"input": [-92.0, -10.0], "expected": -10.0}, {"input": [-92.0, -9.5], "expected": -9.5}, {"input": [-92.0, -9.0], "expected": -9.0}, {"input": [-92.0, -8.5], "expected": -8.5}, {"input": [-92.0, -8.0], "expected": -8.0}, {"input": [-92.0, -7.5], "expected": -7.5}, {"input": [-92.0, -7.0], "expected": -7.0}, {"input": [-92.0, -6.5], "expected": -6.5}, {"input": [-92.0, -6.0], "expected": -6.0}, {"input": [-92.0, -5.5], "expected": -5.5}, {"input": [-92.0, -5.0], "expected": -5.0}, {"input": [-92.0, -4.5], "expected": -4.5}, {"input": [-92.0, -4.0], "expected": -4.0}, {"input": [-92.0, -3.5], "expected": -3.5}, {"input": [-92.0, -3.0], "expected": -3.0}, {"input": [-92.0, -2.5], "expected": -2.5}, {"input": [-92.0, -2.0], "expected": -2.0}, {"input": [-92.0, -1.5], "expected": -1.5}, {"input": [-92.0, -1.0], "expected": -1.0}, {"input": [-92.0, -0.5], "expected": -0.5}, {"input": [-92.0, 0.0], "expected": 1.1089390193121365e-40}, {"input": [-92.0, 0.5], "expected": 0.5}, {"input": [-92.0, 1.0], "expected": 1.0}, {"input": [-92.0, 1.5], "expected": 1.5}, {"input": [-92.0, 2.0], "expected": 2.0}, {"input": [-92.0, 2.5], "expected": 2.5}, {"input": [-92.0, 3.0], "expected": 3.0}, {"input": [-92.0, 3.5], "expected": 3.5}, {"input": [-92.0, 4.0], "expected": 4.0}, {"input": [-92.0, 4.5], "expected": 4.5}, {"input": [-92.0, 5.0], "expected": 5.0}, {"input": [-92.0, 5.5], "expected": 5.5}, {"input": [-92.0, 6.0], "expected": 6.0}, {"input": [-92.0, 6.5], "expected": 6.5}, {"input": [-92.0, 7.0], "expected": 7.0}, {"input": [-92.0, 7.5], "expected": 7.5}, {"input": [-92.0, 8.0], "expected": 8.0}, {"input": [-92.0, 8.5], "expected": 8.5}, {"input": [-92.0, 9.0], "expected": 9.0}, {"input": [-92.0, 9.5], "expected": 9.5}, {"input": [-92.0, 10.0], "expected": 10.0}, {"input": [-92.0, 10.5], "expected": 10.5}, {"input": [-92.0, 11.0], "expected": 11.0}, {"input": [-92.0, 11.5], "expected": 11.5}, {"input": [-92.0, 12.0], "expected": 12.0}, {"input": [-92.0, 12.5], "expected": 12.5}, {"input": [-92.0, 13.0], "expected": 13.0}, {"input": [-92.0, 13.5], "expected": 13.5}, {"input": [-92.0, 14.0], "expected": 14.0}, {"input": [-92.0, 14.5], "expected": 14.5}, {"input": [-92.0, 15.0], "expected": 15.0}, {"input": [-92.0, 15.5], "expected": 15.5}, {"input": [-92.0, 16.0], "expected": 16.0}, {"input": [-92.0, 16.5], "expected": 16.5}, {"input": [-92.0, 17.0], "expected": 17.0}, {"input": [-92.0, 17.5], "expected": 17.5}, {"input": [-92.0, 18.0], "expected": 18.0}, {"input": [-92.0, 18.5], "expected": 18.5}, {"input": [-92.0, 19.0], "expected": 19.0}, {"input": [-92.0, 19.5], "expected": 19.5}, {"input": [-92.0, 20.0], "expected": 20.0}, {"input": [-92.0, 20.5], "expected": 20.5}, {"input": [-92.0, 21.0], "expected": 21.0}, {"input": [-92.0, 21.5], "expected": 21.5}, {"input": [-92.0, 22.0], "expected": 22.0}, {"input": [-92.0, 22.5], "expected": 22.5}, {"input": [-92.0, 23.0], "expected": 23.0}, {"input": [-92.0, 23.5], "expected": 23.5}, {"input": [-92.0, 24.0], "expected": 24.0}, {"input": [-92.0, 24.5], "expected": 24.5}, {"input": [-92.0, 25.0], "expected": 25.0}, {"input": [-92.0, 25.5], "expected": 25.5}, {"input": [-92.0, 26.0], "expected": 26.0}, {"input": [-92.0, 26.5], "expected": 26.5}, {"input": [-92.0, 27.0], "expected": 27.0}, {"input": [-92.0, 27.5], "expected": 27.5}, {"input": [-92.0, 28.0], "expected": 28.0}, {"input": [-92.0, 28.5], "expected": 28.5}, {"input": [-92.0, 29.0], "expected": 29.0}, {"input": [-92.0, 29.5], "expected": 29.5}, {"input": [-92.0, 30.0], "expected": 30.0}, {"input": [-92.0, 30.5], "expected": 30.5}, {"input": [-92.0, 31.0], "expected": 31.0}, {"input": [-92.0, 31.5], "expected": 31.5}, {"input": [-92.0, 32.0], "expected": 32.0}, {"input": [-92.0, 32.5], "expected": 32.5}, {"input": [-92.0, 33.0], "expected": 33.0}, {"input": [-92.0, 33.5], "expected": 33.5}, {"input": [-92.0, 34.0], "expected": 34.0}, {"input": [-92.0, 34.5], "expected": 34.5}, {"input": [-92.0, 35.0], "expected": 35.0}, {"input": [-92.0, 35.5], "expected": 35.5}, {"input": [-92.0, 36.0], "expected": 36.0}, {"input": [-92.0, 36.5], "expected": 36.5}, {"input": [-92.0, 37.0], "expected": 37.0}, {"input": [-92.0, 37.5], "expected": 37.5}, {"input": [-92.0, 38.0], "expected": 38.0}, {"input": [-92.0, 38.5], "expected": 38.5}, {"input": [-92.0, 39.0], "expected": 39.0}, {"input": [-92.0, 39.5], "expected": 39.5}, {"input": [-92.0, 40.0], "expected": 40.0}, {"input": [-92.0, 40.5], "expected": 40.5}, {"input": [-92.0, 41.0], "expected": 41.0}, {"input": [-92.0, 41.5], "expected": 41.5}, {"input": [-92.0, 42.0], "expected": 42.0}, {"input": [-92.0, 42.5], "expected": 42.5}, {"input": [-92.0, 43.0], "expected": 43.0}, {"input": [-92.0, 43.5], "expected": 43.5}, {"input": [-92.0, 44.0], "expected": 44.0}, {"input": [-92.0, 44.5], "expected": 44.5}, {"input": [-92.0, 45.0], "expected": 45.0}, {"input": [-92.0, 45.5], "expected": 45.5}, {"input": [-92.0, 46.0], "expected": 46.0}, {"input": [-92.0, 46.5], "expected": 46.5}, {"input": [-92.0, 47.0], "expected": 47.0}, {"input": [-92.0, 47.5], "expected": 47.5}, {"input": [-92.0, 48.0], "expected": 48.0}, {"input": [-92.0, 48.5], "expected": 48.5}, {"input": [-92.0, 49.0], "expected": 49.0}, {"input": [-92.0, 49.5], "expected": 49.5}, {"input": [-92.0, 50.0], "expected": 50.0}, {"input": [-92.0, 50.5], "expected": 50.5}, {"input": [-92.0, 51.0], "expected": 51.0}, {"input": [-92.0, 51.5], "expected": 51.5}, {"input": [-92.0, 52.0], "expected": 52.0}, {"input": [-92.0, 52.5], "expected": 52.5}, {"input": [-92.0, 53.0], "expected": 53.0}, {"input": [-92.0, 53.5], "expected": 53.5}, {"input": [-92.0, 54.0], "expected": 54.0}, {"input": [-92.0, 54.5], "expected": 54.5}, {"input": [-92.0, 55.0], "expected": 55.0}, {"input": [-92.0, 55.5], "expected": 55.5}, {"input": [-92.0, 56.0], "expected": 56.0}, {"input": [-92.0, 56.5], "expected": 56.5}, {"input": [-92.0, 57.0], "expected": 57.0}, {"input": [-92.0, 57.5], "expected": 57.5}, {"input": [-92.0, 58.0], "expected": 58.0}, {"input": [-92.0, 58.5], "expected": 58.5}, {"input": [-92.0, 59.0], "expected": 59.0}, {"input": [-92.0, 59.5], "expected": 59.5}, {"input": [-92.0, 60.0], "expected": 60.0}, {"input": [-92.0, 60.5], "expected": 60.5}, {"input": [-92.0, 61.0], "expected": 61.0}, {"input": [-92.0, 61.5], "expected": 61.5}, {"input": [-92.0, 62.0], "expected": 62.0}, {"input": [-92.0, 62.5], "expected": 62.5}, {"input": [-92.0, 63.0], "expected": 63.0}, {"input": [-92.0, 63.5], "expected": 63.5}, {"input": [-92.0, 64.0], "expected": 64.0}, {"input": [-92.0, 64.5], "expected": 64.5}, {"input": [-92.0, 65.0], "expected": 65.0}, {"input": [-92.0, 65.5], "expected": 65.5}, {"input": [-92.0, 66.0], "expected": 66.0}, {"input": [-92.0, 66.5], "expected": 66.5}, {"input": [-92.0, 67.0], "expected": 67.0}, {"input": [-92.0, 67.5], "expected": 67.5}, {"input": [-92.0, 68.0], "expected": 68.0}, {"input": [-92.0, 68.5], "expected": 68.5}, {"input": [-92.0, 69.0], "expected": 69.0}, {"input": [-92.0, 69.5], "expected": 69.5}, {"input": [-92.0, 70.0], "expected": 70.0}, {"input": [-92.0, 70.5], "expected": 70.5}, {"input": [-92.0, 71.0], "expected": 71.0}, {"input": [-92.0, 71.5], "expected": 71.5}, {"input": [-92.0, 72.0], "expected": 72.0}, {"input": [-92.0, 72.5], "expected": 72.5}, {"input": [-92.0, 73.0], "expected": 73.0}, {"input": [-92.0, 73.5], "expected": 73.5}, {"input": [-92.0, 74.0], "expected": 74.0}, {"input": [-92.0, 74.5], "expected": 74.5}, {"input": [-92.0, 75.0], "expected": 75.0}, {"input": [-92.0, 75.5], "expected": 75.5}, {"input": [-92.0, 76.0], "expected": 76.0}, {"input": [-92.0, 76.5], "expected": 76.5}, {"input": [-92.0, 77.0], "expected": 77.0}, {"input": [-92.0, 77.5], "expected": 77.5}, {"input": [-92.0, 78.0], "expected": 78.0}, {"input": [-92.0, 78.5], "expected": 78.5}, {"input": [-92.0, 79.0], "expected": 79.0}, {"input": [-92.0, 79.5], "expected": 79.5}, {"input": [-92.0, 80.0], "expected": 80.0}, {"input": [-92.0, 80.5], "expected": 80.5}, {"input": [-92.0, 81.0], "expected": 81.0}, {"input": [-92.0, 81.5], "expected": 81.5}, {"input": [-92.0, 82.0], "expected": 82.0}, {"input": [-92.0, 82.5], "expected": 82.5}, {"input": [-92.0, 83.0], "expected": 83.0}, {"input": [-92.0, 83.5], "expected": 83.5}, {"input": [-92.0, 84.0], "expected": 84.0}, {"input": [-92.0, 84.5], "expected": 84.5}, {"input": [-92.0, 85.0], "expected": 85.0}, {"input": [-92.0, 85.5], "expected": 85.5}, {"input": [-92.0, 86.0], "expected": 86.0}, {"input": [-92.0, 86.5], "expected": 86.5}, {"input": [-92.0, 87.0], "expected": 87.0}, {"input": [-92.0, 87.5], "expected": 87.5}, {"input": [-92.0, 88.0], "expected": 88.0}, {"input": [-92.0, 88.5], "expected": 88.5}, {"input": [-92.0, 89.0], "expected": 89.0}, {"input": [-92.0, 89.5], "expected": 89.5}, {"input": [-92.0, 90.0], "expected": 90.0}, {"input": [-92.0, 90.5], "expected": 90.5}, {"input": [-92.0, 91.0], "expected": 91.0}, {"input": [-92.0, 91.5], "expected": 91.5}, {"input": [-92.0, 92.0], "expected": 92.0}, {"input": [-92.0, 92.5], "expected": 92.5}, {"input": [-92.0, 93.0], "expected": 93.0}, {"input": [-92.0, 93.5], "expected": 93.5}, {"input": [-92.0, 94.0], "expected": 94.0}, {"input": [-92.0, 94.5], "expected": 94.5}, {"input": [-92.0, 95.0], "expected": 95.0}, {"input": [-92.0, 95.5], "expected": 95.5}, {"input": [-92.0, 96.0], "expected": 96.0}, {"input": [-92.0, 96.5], "expected": 96.5}, {"input": [-92.0, 97.0], "expected": 97.0}, {"input": [-92.0, 97.5], "expected": 97.5}, {"input": [-92.0, 98.0], "expected": 98.0}, {"input": [-92.0, 98.5], "expected": 98.5}, {"input": [-92.0, 99.0], "expected": 99.0}, {"input": [-92.0, 99.5], "expected": 99.5}, {"input": [-91.5, -100.0], "expected": -91.49979655232787}, {"input": [-91.5, -99.5], "expected": -91.4996645936271}, {"input": [-91.5, -99.0], "expected": -91.49944706852465}, {"input": [-91.5, -98.5], "expected": -91.49908853354623}, {"input": [-91.5, -98.0], "expected": -91.49849768984025}, {"input": [-91.5, -97.5], "expected": -91.49752431486228}, {"input": [-91.5, -97.0], "expected": -91.49592155672943}, {"input": [-91.5, -96.5], "expected": -91.49328465151088}, {"input": [-91.5, -96.0], "expected": -91.4889522551514}, {"input": [-91.5, -95.5], "expected": -91.4818500720822}, {"input": [-91.5, -95.0], "expected": -91.47024958172737}, {"input": [-91.5, -94.5], "expected": -91.45141264842626}, {"input": [-91.5, -94.0], "expected": -91.42111026570745}, {"input": [-91.5, -93.5], "expected": -91.37307198895702}, {"input": [-91.5, -93.0], "expected": -91.29858672201725}, {"input": [-91.5, -92.5], "expected": -91.18673831248178}, {"input": [-91.5, -92.0], "expected": -91.0259230158199}, {"input": [-91.5, -91.5], "expected": -90.80685281944005}, {"input": [-91.5, -91.0], "expected": -90.5259230158199}, {"input": [-91.5, -90.5], "expected": -90.18673831248178}, {"input": [-91.5, -90.0], "expected": -89.79858672201725}, {"input": [-91.5, -89.5], "expected": -89.37307198895702}, {"input": [-91.5, -89.0], "expected": -88.92111026570745}, {"input": [-91.5, -88.5], "expected": -88.45141264842626}, {"input": [-91.5, -88.0], "expected": -87.97024958172737}, {"input": [-91.5, -87.5], "expected": -87.4818500720822}, {"input": [-91.5, -87.0], "expected": -86.9889522551514}, {"input": [-91.5, -86.5], "expected": -86.49328465151088}, {"input": [-91.5, -86.0], "expected": -85.99592155672943}, {"input": [-91.5, -85.5], "expected": -85.49752431486228}, {"input": [-91.5, -85.0], "expected": -84.99849768984025}, {"input": [-91.5, -84.5], "expected": -84.49908853354623}, {"input": [-91.5, -84.0], "expected": -83.99944706852465}, {"input": [-91.5, -83.5], "expected": -83.4996645936271}, {"input": [-91.5, -83.0], "expected": -82.99979655232787}, {"input": [-91.5, -82.5], "expected": -82.49987659781027}, {"input": [-91.5, -82.0], "expected": -81.99992515097136}, {"input": [-91.5, -81.5], "expected": -81.49995460110078}, {"input": [-91.5, -81.0], "expected": -80.99997246392977}, {"input": [-91.5, -80.5], "expected": -80.49998329843868}, {"input": [-91.5, -80.0], "expected": -79.99998986995772}, {"input": [-91.5, -79.5], "expected": -79.49999385580652}, {"input": [-91.5, -79.0], "expected": -78.99999627335377}, {"input": [-91.5, -78.5], "expected": -78.49999773967315}, {"input": [-91.5, -78.0], "expected": -77.99999862904185}, {"input": [-91.5, -77.5], "expected": -77.49999916847163}, {"input": [-91.5, -77.0], "expected": -76.99999949565246}, {"input": [-91.5, -76.5], "expected": -76.49999969409772}, {"input": [-91.5, -76.0], "expected": -75.99999981446088}, {"input": [-91.5, -75.5], "expected": -75.49999988746484}, {"input": [-91.5, -75.0], "expected": -74.99999993174397}, {"input": [-91.5, -74.5], "expected": -74.49999995860063}, {"input": [-91.5, -74.0], "expected": -73.99999997489}, {"input": [-91.5, -73.5], "expected": -73.49999998477001}, {"input": [-91.5, -73.0], "expected": -72.99999999076255}, {"input": [-91.5, -72.5], "expected": -72.4999999943972}, {"input": [-91.5, -72.0], "expected": -71.99999999660173}, {"input": [-91.5, -71.5], "expected": -71.49999999793884}, {"input": [-91.5, -71.0], "expected": -70.99999999874984}, {"input": [-91.5, -70.5], "expected": -70.49999999924174}, {"input": [-91.5, -70.0], "expected": -69.9999999995401}, {"input": [-91.5, -69.5], "expected": -69.49999999972106}, {"input": [-91.5, -69.0], "expected": -68.9999999998308}, {"input": [-91.5, -68.5], "expected": -68.49999999989738}, {"input": [-91.5, -68.0], "expected": -67.99999999993776}, {"input": [-91.5, -67.5], "expected": -67.49999999996224}, {"input": [-91.5, -67.0], "expected": -66.9999999999771}, {"input": [-91.5, -66.5], "expected": -66.49999999998612}, {"input": [-91.5, -66.0], "expected": -65.99999999999157}, {"input": [-91.5, -65.5], "expected": -65.49999999999488}, {"input": [-91.5, -65.0], "expected": -64.9999999999969}, {"input": [-91.5, -64.5], "expected": -64.49999999999812}, {"input": [-91.5, -64.0], "expected": -63.99999999999886}, {"input": [-91.5, -63.5], "expected": -63.49999999999931}, {"input": [-91.5, -63.0], "expected": -62.99999999999958}, {"input": [-91.5, -62.5], "expected": -62.499999999999744}, {"input": [-91.5, -62.0], "expected": -61.999999999999844}, {"input": [-91.5, -61.5], "expected": -61.49999999999991}, {"input": [-91.5, -61.0], "expected": -60.99999999999994}, {"input": [-91.5, -60.5], "expected": -60.499999999999964}, {"input": [-91.5, -60.0], "expected": -59.99999999999998}, {"input": [-91.5, -59.5], "expected": -59.499999999999986}, {"input": [-91.5, -59.0], "expected": -58.99999999999999}, {"input": [-91.5, -58.5], "expected": -58.49999999999999}, {"input": [-91.5, -58.0], "expected": -58.0}, {"input": [-91.5, -57.5], "expected": -57.5}, {"input": [-91.5, -57.0], "expected": -57.0}, {"input": [-91.5, -56.5], "expected": -56.5}, {"input": [-91.5, -56.0], "expected": -56.0}, {"input": [-91.5, -55.5], "expected": -55.5}, {"input": [-91.5, -55.0], "expected": -55.0}, {"input": [-91.5, -54.5], "expected": -54.5}, {"input": [-91.5, -54.0], "expected": -54.0}, {"input": [-91.5, -53.5], "expected": -53.5}, {"input": [-91.5, -53.0], "expected": -53.0}, {"input": [-91.5, -52.5], "expected": -52.5}, {"input": [-91.5, -52.0], "expected": -52.0}, {"input": [-91.5, -51.5], "expected": -51.5}, {"input": [-91.5, -51.0], "expected": -51.0}, {"input": [-91.5, -50.5], "expected": -50.5}, {"input": [-91.5, -50.0], "expected": -50.0}, {"input": [-91.5, -49.5], "expected": -49.5}, {"input": [-91.5, -49.0], "expected": -49.0}, {"input": [-91.5, -48.5], "expected": -48.5}, {"input": [-91.5, -48.0], "expected": -48.0}, {"input": [-91.5, -47.5], "expected": -47.5}, {"input": [-91.5, -47.0], "expected": -47.0}, {"input": [-91.5, -46.5], "expected": -46.5}, {"input": [-91.5, -46.0], "expected": -46.0}, {"input": [-91.5, -45.5], "expected": -45.5}, {"input": [-91.5, -45.0], "expected": -45.0}, {"input": [-91.5, -44.5], "expected": -44.5}, {"input": [-91.5, -44.0], "expected": -44.0}, {"input": [-91.5, -43.5], "expected": -43.5}, {"input": [-91.5, -43.0], "expected": -43.0}, {"input": [-91.5, -42.5], "expected": -42.5}, {"input": [-91.5, -42.0], "expected": -42.0}, {"input": [-91.5, -41.5], "expected": -41.5}, {"input": [-91.5, -41.0], "expected": -41.0}, {"input": [-91.5, -40.5], "expected": -40.5}, {"input": [-91.5, -40.0], "expected": -40.0}, {"input": [-91.5, -39.5], "expected": -39.5}, {"input": [-91.5, -39.0], "expected": -39.0}, {"input": [-91.5, -38.5], "expected": -38.5}, {"input": [-91.5, -38.0], "expected": -38.0}, {"input": [-91.5, -37.5], "expected": -37.5}, {"input": [-91.5, -37.0], "expected": -37.0}, {"input": [-91.5, -36.5], "expected": -36.5}, {"input": [-91.5, -36.0], "expected": -36.0}, {"input": [-91.5, -35.5], "expected": -35.5}, {"input": [-91.5, -35.0], "expected": -35.0}, {"input": [-91.5, -34.5], "expected": -34.5}, {"input": [-91.5, -34.0], "expected": -34.0}, {"input": [-91.5, -33.5], "expected": -33.5}, {"input": [-91.5, -33.0], "expected": -33.0}, {"input": [-91.5, -32.5], "expected": -32.5}, {"input": [-91.5, -32.0], "expected": -32.0}, {"input": [-91.5, -31.5], "expected": -31.5}, {"input": [-91.5, -31.0], "expected": -31.0}, {"input": [-91.5, -30.5], "expected": -30.5}, {"input": [-91.5, -30.0], "expected": -30.0}, {"input": [-91.5, -29.5], "expected": -29.5}, {"input": [-91.5, -29.0], "expected": -29.0}, {"input": [-91.5, -28.5], "expected": -28.5}, {"input": [-91.5, -28.0], "expected": -28.0}, {"input": [-91.5, -27.5], "expected": -27.5}, {"input": [-91.5, -27.0], "expected": -27.0}, {"input": [-91.5, -26.5], "expected": -26.5}, {"input": [-91.5, -26.0], "expected": -26.0}, {"input": [-91.5, -25.5], "expected": -25.5}, {"input": [-91.5, -25.0], "expected": -25.0}, {"input": [-91.5, -24.5], "expected": -24.5}, {"input": [-91.5, -24.0], "expected": -24.0}, {"input": [-91.5, -23.5], "expected": -23.5}, {"input": [-91.5, -23.0], "expected": -23.0}, {"input": [-91.5, -22.5], "expected": -22.5}, {"input": [-91.5, -22.0], "expected": -22.0}, {"input": [-91.5, -21.5], "expected": -21.5}, {"input": [-91.5, -21.0], "expected": -21.0}, {"input": [-91.5, -20.5], "expected": -20.5}, {"input": [-91.5, -20.0], "expected": -20.0}, {"input": [-91.5, -19.5], "expected": -19.5}, {"input": [-91.5, -19.0], "expected": -19.0}, {"input": [-91.5, -18.5], "expected": -18.5}, {"input": [-91.5, -18.0], "expected": -18.0}, {"input": [-91.5, -17.5], "expected": -17.5}, {"input": [-91.5, -17.0], "expected": -17.0}, {"input": [-91.5, -16.5], "expected": -16.5}, {"input": [-91.5, -16.0], "expected": -16.0}, {"input": [-91.5, -15.5], "expected": -15.5}, {"input": [-91.5, -15.0], "expected": -15.0}, {"input": [-91.5, -14.5], "expected": -14.5}, {"input": [-91.5, -14.0], "expected": -14.0}, {"input": [-91.5, -13.5], "expected": -13.5}, {"input": [-91.5, -13.0], "expected": -13.0}, {"input": [-91.5, -12.5], "expected": -12.5}, {"input": [-91.5, -12.0], "expected": -12.0}, {"input": [-91.5, -11.5], "expected": -11.5}, {"input": [-91.5, -11.0], "expected": -11.0}, {"input": [-91.5, -10.5], "expected": -10.5}, {"input": [-91.5, -10.0], "expected": -10.0}, {"input": [-91.5, -9.5], "expected": -9.5}, {"input": [-91.5, -9.0], "expected": -9.0}, {"input": [-91.5, -8.5], "expected": -8.5}, {"input": [-91.5, -8.0], "expected": -8.0}, {"input": [-91.5, -7.5], "expected": -7.5}, {"input": [-91.5, -7.0], "expected": -7.0}, {"input": [-91.5, -6.5], "expected": -6.5}, {"input": [-91.5, -6.0], "expected": -6.0}, {"input": [-91.5, -5.5], "expected": -5.5}, {"input": [-91.5, -5.0], "expected": -5.0}, {"input": [-91.5, -4.5], "expected": -4.5}, {"input": [-91.5, -4.0], "expected": -4.0}, {"input": [-91.5, -3.5], "expected": -3.5}, {"input": [-91.5, -3.0], "expected": -3.0}, {"input": [-91.5, -2.5], "expected": -2.5}, {"input": [-91.5, -2.0], "expected": -2.0}, {"input": [-91.5, -1.5], "expected": -1.5}, {"input": [-91.5, -1.0], "expected": -1.0}, {"input": [-91.5, -0.5], "expected": -0.5}, {"input": [-91.5, 0.0], "expected": 1.8283313490492594e-40}, {"input": [-91.5, 0.5], "expected": 0.5}, {"input": [-91.5, 1.0], "expected": 1.0}, {"input": [-91.5, 1.5], "expected": 1.5}, {"input": [-91.5, 2.0], "expected": 2.0}, {"input": [-91.5, 2.5], "expected": 2.5}, {"input": [-91.5, 3.0], "expected": 3.0}, {"input": [-91.5, 3.5], "expected": 3.5}, {"input": [-91.5, 4.0], "expected": 4.0}, {"input": [-91.5, 4.5], "expected": 4.5}, {"input": [-91.5, 5.0], "expected": 5.0}, {"input": [-91.5, 5.5], "expected": 5.5}, {"input": [-91.5, 6.0], "expected": 6.0}, {"input": [-91.5, 6.5], "expected": 6.5}, {"input": [-91.5, 7.0], "expected": 7.0}, {"input": [-91.5, 7.5], "expected": 7.5}, {"input": [-91.5, 8.0], "expected": 8.0}, {"input": [-91.5, 8.5], "expected": 8.5}, {"input": [-91.5, 9.0], "expected": 9.0}, {"input": [-91.5, 9.5], "expected": 9.5}, {"input": [-91.5, 10.0], "expected": 10.0}, {"input": [-91.5, 10.5], "expected": 10.5}, {"input": [-91.5, 11.0], "expected": 11.0}, {"input": [-91.5, 11.5], "expected": 11.5}, {"input": [-91.5, 12.0], "expected": 12.0}, {"input": [-91.5, 12.5], "expected": 12.5}, {"input": [-91.5, 13.0], "expected": 13.0}, {"input": [-91.5, 13.5], "expected": 13.5}, {"input": [-91.5, 14.0], "expected": 14.0}, {"input": [-91.5, 14.5], "expected": 14.5}, {"input": [-91.5, 15.0], "expected": 15.0}, {"input": [-91.5, 15.5], "expected": 15.5}, {"input": [-91.5, 16.0], "expected": 16.0}, {"input": [-91.5, 16.5], "expected": 16.5}, {"input": [-91.5, 17.0], "expected": 17.0}, {"input": [-91.5, 17.5], "expected": 17.5}, {"input": [-91.5, 18.0], "expected": 18.0}, {"input": [-91.5, 18.5], "expected": 18.5}, {"input": [-91.5, 19.0], "expected": 19.0}, {"input": [-91.5, 19.5], "expected": 19.5}, {"input": [-91.5, 20.0], "expected": 20.0}, {"input": [-91.5, 20.5], "expected": 20.5}, {"input": [-91.5, 21.0], "expected": 21.0}, {"input": [-91.5, 21.5], "expected": 21.5}, {"input": [-91.5, 22.0], "expected": 22.0}, {"input": [-91.5, 22.5], "expected": 22.5}, {"input": [-91.5, 23.0], "expected": 23.0}, {"input": [-91.5, 23.5], "expected": 23.5}, {"input": [-91.5, 24.0], "expected": 24.0}, {"input": [-91.5, 24.5], "expected": 24.5}, {"input": [-91.5, 25.0], "expected": 25.0}, {"input": [-91.5, 25.5], "expected": 25.5}, {"input": [-91.5, 26.0], "expected": 26.0}, {"input": [-91.5, 26.5], "expected": 26.5}, {"input": [-91.5, 27.0], "expected": 27.0}, {"input": [-91.5, 27.5], "expected": 27.5}, {"input": [-91.5, 28.0], "expected": 28.0}, {"input": [-91.5, 28.5], "expected": 28.5}, {"input": [-91.5, 29.0], "expected": 29.0}, {"input": [-91.5, 29.5], "expected": 29.5}, {"input": [-91.5, 30.0], "expected": 30.0}, {"input": [-91.5, 30.5], "expected": 30.5}, {"input": [-91.5, 31.0], "expected": 31.0}, {"input": [-91.5, 31.5], "expected": 31.5}, {"input": [-91.5, 32.0], "expected": 32.0}, {"input": [-91.5, 32.5], "expected": 32.5}, {"input": [-91.5, 33.0], "expected": 33.0}, {"input": [-91.5, 33.5], "expected": 33.5}, {"input": [-91.5, 34.0], "expected": 34.0}, {"input": [-91.5, 34.5], "expected": 34.5}, {"input": [-91.5, 35.0], "expected": 35.0}, {"input": [-91.5, 35.5], "expected": 35.5}, {"input": [-91.5, 36.0], "expected": 36.0}, {"input": [-91.5, 36.5], "expected": 36.5}, {"input": [-91.5, 37.0], "expected": 37.0}, {"input": [-91.5, 37.5], "expected": 37.5}, {"input": [-91.5, 38.0], "expected": 38.0}, {"input": [-91.5, 38.5], "expected": 38.5}, {"input": [-91.5, 39.0], "expected": 39.0}, {"input": [-91.5, 39.5], "expected": 39.5}, {"input": [-91.5, 40.0], "expected": 40.0}, {"input": [-91.5, 40.5], "expected": 40.5}, {"input": [-91.5, 41.0], "expected": 41.0}, {"input": [-91.5, 41.5], "expected": 41.5}, {"input": [-91.5, 42.0], "expected": 42.0}, {"input": [-91.5, 42.5], "expected": 42.5}, {"input": [-91.5, 43.0], "expected": 43.0}, {"input": [-91.5, 43.5], "expected": 43.5}, {"input": [-91.5, 44.0], "expected": 44.0}, {"input": [-91.5, 44.5], "expected": 44.5}, {"input": [-91.5, 45.0], "expected": 45.0}, {"input": [-91.5, 45.5], "expected": 45.5}, {"input": [-91.5, 46.0], "expected": 46.0}, {"input": [-91.5, 46.5], "expected": 46.5}, {"input": [-91.5, 47.0], "expected": 47.0}, {"input": [-91.5, 47.5], "expected": 47.5}, {"input": [-91.5, 48.0], "expected": 48.0}, {"input": [-91.5, 48.5], "expected": 48.5}, {"input": [-91.5, 49.0], "expected": 49.0}, {"input": [-91.5, 49.5], "expected": 49.5}, {"input": [-91.5, 50.0], "expected": 50.0}, {"input": [-91.5, 50.5], "expected": 50.5}, {"input": [-91.5, 51.0], "expected": 51.0}, {"input": [-91.5, 51.5], "expected": 51.5}, {"input": [-91.5, 52.0], "expected": 52.0}, {"input": [-91.5, 52.5], "expected": 52.5}, {"input": [-91.5, 53.0], "expected": 53.0}, {"input": [-91.5, 53.5], "expected": 53.5}, {"input": [-91.5, 54.0], "expected": 54.0}, {"input": [-91.5, 54.5], "expected": 54.5}, {"input": [-91.5, 55.0], "expected": 55.0}, {"input": [-91.5, 55.5], "expected": 55.5}, {"input": [-91.5, 56.0], "expected": 56.0}, {"input": [-91.5, 56.5], "expected": 56.5}, {"input": [-91.5, 57.0], "expected": 57.0}, {"input": [-91.5, 57.5], "expected": 57.5}, {"input": [-91.5, 58.0], "expected": 58.0}, {"input": [-91.5, 58.5], "expected": 58.5}, {"input": [-91.5, 59.0], "expected": 59.0}, {"input": [-91.5, 59.5], "expected": 59.5}, {"input": [-91.5, 60.0], "expected": 60.0}, {"input": [-91.5, 60.5], "expected": 60.5}, {"input": [-91.5, 61.0], "expected": 61.0}, {"input": [-91.5, 61.5], "expected": 61.5}, {"input": [-91.5, 62.0], "expected": 62.0}, {"input": [-91.5, 62.5], "expected": 62.5}, {"input": [-91.5, 63.0], "expected": 63.0}, {"input": [-91.5, 63.5], "expected": 63.5}, {"input": [-91.5, 64.0], "expected": 64.0}, {"input": [-91.5, 64.5], "expected": 64.5}, {"input": [-91.5, 65.0], "expected": 65.0}, {"input": [-91.5, 65.5], "expected": 65.5}, {"input": [-91.5, 66.0], "expected": 66.0}, {"input": [-91.5, 66.5], "expected": 66.5}, {"input": [-91.5, 67.0], "expected": 67.0}, {"input": [-91.5, 67.5], "expected": 67.5}, {"input": [-91.5, 68.0], "expected": 68.0}, {"input": [-91.5, 68.5], "expected": 68.5}, {"input": [-91.5, 69.0], "expected": 69.0}, {"input": [-91.5, 69.5], "expected": 69.5}, {"input": [-91.5, 70.0], "expected": 70.0}, {"input": [-91.5, 70.5], "expected": 70.5}, {"input": [-91.5, 71.0], "expected": 71.0}, {"input": [-91.5, 71.5], "expected": 71.5}, {"input": [-91.5, 72.0], "expected": 72.0}, {"input": [-91.5, 72.5], "expected": 72.5}, {"input": [-91.5, 73.0], "expected": 73.0}, {"input": [-91.5, 73.5], "expected": 73.5}, {"input": [-91.5, 74.0], "expected": 74.0}, {"input": [-91.5, 74.5], "expected": 74.5}, {"input": [-91.5, 75.0], "expected": 75.0}, {"input": [-91.5, 75.5], "expected": 75.5}, {"input": [-91.5, 76.0], "expected": 76.0}, {"input": [-91.5, 76.5], "expected": 76.5}, {"input": [-91.5, 77.0], "expected": 77.0}, {"input": [-91.5, 77.5], "expected": 77.5}, {"input": [-91.5, 78.0], "expected": 78.0}, {"input": [-91.5, 78.5], "expected": 78.5}, {"input": [-91.5, 79.0], "expected": 79.0}, {"input": [-91.5, 79.5], "expected": 79.5}, {"input": [-91.5, 80.0], "expected": 80.0}, {"input": [-91.5, 80.5], "expected": 80.5}, {"input": [-91.5, 81.0], "expected": 81.0}, {"input": [-91.5, 81.5], "expected": 81.5}, {"input": [-91.5, 82.0], "expected": 82.0}, {"input": [-91.5, 82.5], "expected": 82.5}, {"input": [-91.5, 83.0], "expected": 83.0}, {"input": [-91.5, 83.5], "expected": 83.5}, {"input": [-91.5, 84.0], "expected": 84.0}, {"input": [-91.5, 84.5], "expected": 84.5}, {"input": [-91.5, 85.0], "expected": 85.0}, {"input": [-91.5, 85.5], "expected": 85.5}, {"input": [-91.5, 86.0], "expected": 86.0}, {"input": [-91.5, 86.5], "expected": 86.5}, {"input": [-91.5, 87.0], "expected": 87.0}, {"input": [-91.5, 87.5], "expected": 87.5}, {"input": [-91.5, 88.0], "expected": 88.0}, {"input": [-91.5, 88.5], "expected": 88.5}, {"input": [-91.5, 89.0], "expected": 89.0}, {"input": [-91.5, 89.5], "expected": 89.5}, {"input": [-91.5, 90.0], "expected": 90.0}, {"input": [-91.5, 90.5], "expected": 90.5}, {"input": [-91.5, 91.0], "expected": 91.0}, {"input": [-91.5, 91.5], "expected": 91.5}, {"input": [-91.5, 92.0], "expected": 92.0}, {"input": [-91.5, 92.5], "expected": 92.5}, {"input": [-91.5, 93.0], "expected": 93.0}, {"input": [-91.5, 93.5], "expected": 93.5}, {"input": [-91.5, 94.0], "expected": 94.0}, {"input": [-91.5, 94.5], "expected": 94.5}, {"input": [-91.5, 95.0], "expected": 95.0}, {"input": [-91.5, 95.5], "expected": 95.5}, {"input": [-91.5, 96.0], "expected": 96.0}, {"input": [-91.5, 96.5], "expected": 96.5}, {"input": [-91.5, 97.0], "expected": 97.0}, {"input": [-91.5, 97.5], "expected": 97.5}, {"input": [-91.5, 98.0], "expected": 98.0}, {"input": [-91.5, 98.5], "expected": 98.5}, {"input": [-91.5, 99.0], "expected": 99.0}, {"input": [-91.5, 99.5], "expected": 99.5}, {"input": [-91.0, -100.0], "expected": -90.99987659781027}, {"input": [-91.0, -99.5], "expected": -90.99979655232787}, {"input": [-91.0, -99.0], "expected": -90.9996645936271}, {"input": [-91.0, -98.5], "expected": -90.99944706852465}, {"input": [-91.0, -98.0], "expected": -90.99908853354623}, {"input": [-91.0, -97.5], "expected": -90.99849768984025}, {"input": [-91.0, -97.0], "expected": -90.99752431486228}, {"input": [-91.0, -96.5], "expected": -90.99592155672943}, {"input": [-91.0, -96.0], "expected": -90.99328465151088}, {"input": [-91.0, -95.5], "expected": -90.9889522551514}, {"input": [-91.0, -95.0], "expected": -90.9818500720822}, {"input": [-91.0, -94.5], "expected": -90.97024958172737}, {"input": [-91.0, -94.0], "expected": -90.95141264842626}, {"input": [-91.0, -93.5], "expected": -90.92111026570745}, {"input": [-91.0, -93.0], "expected": -90.87307198895702}, {"input": [-91.0, -92.5], "expected": -90.79858672201725}, {"input": [-91.0, -92.0], "expected": -90.68673831248178}, {"input": [-91.0, -91.5], "expected": -90.5259230158199}, {"input": [-91.0, -91.0], "expected": -90.30685281944005}, {"input": [-91.0, -90.5], "expected": -90.0259230158199}, {"input": [-91.0, -90.0], "expected": -89.68673831248178}, {"input": [-91.0, -89.5], "expected": -89.29858672201725}, {"input": [-91.0, -89.0], "expected": -88.87307198895702}, {"input": [-91.0, -88.5], "expected": -88.42111026570745}, {"input": [-91.0, -88.0], "expected": -87.95141264842626}, {"input": [-91.0, -87.5], "expected": -87.47024958172737}, {"input": [-91.0, -87.0], "expected": -86.9818500720822}, {"input": [-91.0, -86.5], "expected": -86.4889522551514}, {"input": [-91.0, -86.0], "expected": -85.99328465151088}, {"input": [-91.0, -85.5], "expected": -85.49592155672943}, {"input": [-91.0, -85.0], "expected": -84.99752431486228}, {"input": [-91.0, -84.5], "expected": -84.49849768984025}, {"input": [-91.0, -84.0], "expected": -83.99908853354623}, {"input": [-91.0, -83.5], "expected": -83.49944706852465}, {"input": [-91.0, -83.0], "expected": -82.9996645936271}, {"input": [-91.0, -82.5], "expected": -82.49979655232787}, {"input": [-91.0, -82.0], "expected": -81.99987659781027}, {"input": [-91.0, -81.5], "expected": -81.49992515097136}, {"input": [-91.0, -81.0], "expected": -80.99995460110078}, {"input": [-91.0, -80.5], "expected": -80.49997246392977}, {"input": [-91.0, -80.0], "expected": -79.99998329843868}, {"input": [-91.0, -79.5], "expected": -79.49998986995772}, {"input": [-91.0, -79.0], "expected": -78.99999385580652}, {"input": [-91.0, -78.5], "expected": -78.49999627335377}, {"input": [-91.0, -78.0], "expected": -77.99999773967315}, {"input": [-91.0, -77.5], "expected": -77.49999862904185}, {"input": [-91.0, -77.0], "expected": -76.99999916847163}, {"input": [-91.0, -76.5], "expected": -76.49999949565246}, {"input": [-91.0, -76.0], "expected": -75.99999969409772}, {"input": [-91.0, -75.5], "expected": -75.49999981446088}, {"input": [-91.0, -75.0], "expected": -74.99999988746484}, {"input": [-91.0, -74.5], "expected": -74.49999993174397}, {"input": [-91.0, -74.0], "expected": -73.99999995860063}, {"input": [-91.0, -73.5], "expected": -73.49999997489}, {"input": [-91.0, -73.0], "expected": -72.99999998477001}, {"input": [-91.0, -72.5], "expected": -72.49999999076255}, {"input": [-91.0, -72.0], "expected": -71.9999999943972}, {"input": [-91.0, -71.5], "expected": -71.49999999660173}, {"input": [-91.0, -71.0], "expected": -70.99999999793884}, {"input": [-91.0, -70.5], "expected": -70.49999999874984}, {"input": [-91.0, -70.0], "expected": -69.99999999924174}, {"input": [-91.0, -69.5], "expected": -69.4999999995401}, {"input": [-91.0, -69.0], "expected": -68.99999999972106}, {"input": [-91.0, -68.5], "expected": -68.4999999998308}, {"input": [-91.0, -68.0], "expected": -67.99999999989738}, {"input": [-91.0, -67.5], "expected": -67.49999999993776}, {"input": [-91.0, -67.0], "expected": -66.99999999996224}, {"input": [-91.0, -66.5], "expected": -66.4999999999771}, {"input": [-91.0, -66.0], "expected": -65.99999999998612}, {"input": [-91.0, -65.5], "expected": -65.49999999999157}, {"input": [-91.0, -65.0], "expected": -64.99999999999488}, {"input": [-91.0, -64.5], "expected": -64.4999999999969}, {"input": [-91.0, -64.0], "expected": -63.99999999999812}, {"input": [-91.0, -63.5], "expected": -63.49999999999886}, {"input": [-91.0, -63.0], "expected": -62.99999999999931}, {"input": [-91.0, -62.5], "expected": -62.49999999999958}, {"input": [-91.0, -62.0], "expected": -61.999999999999744}, {"input": [-91.0, -61.5], "expected": -61.499999999999844}, {"input": [-91.0, -61.0], "expected": -60.99999999999991}, {"input": [-91.0, -60.5], "expected": -60.49999999999994}, {"input": [-91.0, -60.0], "expected": -59.999999999999964}, {"input": [-91.0, -59.5], "expected": -59.49999999999998}, {"input": [-91.0, -59.0], "expected": -58.999999999999986}, {"input": [-91.0, -58.5], "expected": -58.49999999999999}, {"input": [-91.0, -58.0], "expected": -57.99999999999999}, {"input": [-91.0, -57.5], "expected": -57.5}, {"input": [-91.0, -57.0], "expected": -57.0}, {"input": [-91.0, -56.5], "expected": -56.5}, {"input": [-91.0, -56.0], "expected": -56.0}, {"input": [-91.0, -55.5], "expected": -55.5}, {"input": [-91.0, -55.0], "expected": -55.0}, {"input": [-91.0, -54.5], "expected": -54.5}, {"input": [-91.0, -54.0], "expected": -54.0}, {"input": [-91.0, -53.5], "expected": -53.5}, {"input": [-91.0, -53.0], "expected": -53.0}, {"input": [-91.0, -52.5], "expected": -52.5}, {"input": [-91.0, -52.0], "expected": -52.0}, {"input": [-91.0, -51.5], "expected": -51.5}, {"input": [-91.0, -51.0], "expected": -51.0}, {"input": [-91.0, -50.5], "expected": -50.5}, {"input": [-91.0, -50.0], "expected": -50.0}, {"input": [-91.0, -49.5], "expected": -49.5}, {"input": [-91.0, -49.0], "expected": -49.0}, {"input": [-91.0, -48.5], "expected": -48.5}, {"input": [-91.0, -48.0], "expected": -48.0}, {"input": [-91.0, -47.5], "expected": -47.5}, {"input": [-91.0, -47.0], "expected": -47.0}, {"input": [-91.0, -46.5], "expected": -46.5}, {"input": [-91.0, -46.0], "expected": -46.0}, {"input": [-91.0, -45.5], "expected": -45.5}, {"input": [-91.0, -45.0], "expected": -45.0}, {"input": [-91.0, -44.5], "expected": -44.5}, {"input": [-91.0, -44.0], "expected": -44.0}, {"input": [-91.0, -43.5], "expected": -43.5}, {"input": [-91.0, -43.0], "expected": -43.0}, {"input": [-91.0, -42.5], "expected": -42.5}, {"input": [-91.0, -42.0], "expected": -42.0}, {"input": [-91.0, -41.5], "expected": -41.5}, {"input": [-91.0, -41.0], "expected": -41.0}, {"input": [-91.0, -40.5], "expected": -40.5}, {"input": [-91.0, -40.0], "expected": -40.0}, {"input": [-91.0, -39.5], "expected": -39.5}, {"input": [-91.0, -39.0], "expected": -39.0}, {"input": [-91.0, -38.5], "expected": -38.5}, {"input": [-91.0, -38.0], "expected": -38.0}, {"input": [-91.0, -37.5], "expected": -37.5}, {"input": [-91.0, -37.0], "expected": -37.0}, {"input": [-91.0, -36.5], "expected": -36.5}, {"input": [-91.0, -36.0], "expected": -36.0}, {"input": [-91.0, -35.5], "expected": -35.5}, {"input": [-91.0, -35.0], "expected": -35.0}, {"input": [-91.0, -34.5], "expected": -34.5}, {"input": [-91.0, -34.0], "expected": -34.0}, {"input": [-91.0, -33.5], "expected": -33.5}, {"input": [-91.0, -33.0], "expected": -33.0}, {"input": [-91.0, -32.5], "expected": -32.5}, {"input": [-91.0, -32.0], "expected": -32.0}, {"input": [-91.0, -31.5], "expected": -31.5}, {"input": [-91.0, -31.0], "expected": -31.0}, {"input": [-91.0, -30.5], "expected": -30.5}, {"input": [-91.0, -30.0], "expected": -30.0}, {"input": [-91.0, -29.5], "expected": -29.5}, {"input": [-91.0, -29.0], "expected": -29.0}, {"input": [-91.0, -28.5], "expected": -28.5}, {"input": [-91.0, -28.0], "expected": -28.0}, {"input": [-91.0, -27.5], "expected": -27.5}, {"input": [-91.0, -27.0], "expected": -27.0}, {"input": [-91.0, -26.5], "expected": -26.5}, {"input": [-91.0, -26.0], "expected": -26.0}, {"input": [-91.0, -25.5], "expected": -25.5}, {"input": [-91.0, -25.0], "expected": -25.0}, {"input": [-91.0, -24.5], "expected": -24.5}, {"input": [-91.0, -24.0], "expected": -24.0}, {"input": [-91.0, -23.5], "expected": -23.5}, {"input": [-91.0, -23.0], "expected": -23.0}, {"input": [-91.0, -22.5], "expected": -22.5}, {"input": [-91.0, -22.0], "expected": -22.0}, {"input": [-91.0, -21.5], "expected": -21.5}, {"input": [-91.0, -21.0], "expected": -21.0}, {"input": [-91.0, -20.5], "expected": -20.5}, {"input": [-91.0, -20.0], "expected": -20.0}, {"input": [-91.0, -19.5], "expected": -19.5}, {"input": [-91.0, -19.0], "expected": -19.0}, {"input": [-91.0, -18.5], "expected": -18.5}, {"input": [-91.0, -18.0], "expected": -18.0}, {"input": [-91.0, -17.5], "expected": -17.5}, {"input": [-91.0, -17.0], "expected": -17.0}, {"input": [-91.0, -16.5], "expected": -16.5}, {"input": [-91.0, -16.0], "expected": -16.0}, {"input": [-91.0, -15.5], "expected": -15.5}, {"input": [-91.0, -15.0], "expected": -15.0}, {"input": [-91.0, -14.5], "expected": -14.5}, {"input": [-91.0, -14.0], "expected": -14.0}, {"input": [-91.0, -13.5], "expected": -13.5}, {"input": [-91.0, -13.0], "expected": -13.0}, {"input": [-91.0, -12.5], "expected": -12.5}, {"input": [-91.0, -12.0], "expected": -12.0}, {"input": [-91.0, -11.5], "expected": -11.5}, {"input": [-91.0, -11.0], "expected": -11.0}, {"input": [-91.0, -10.5], "expected": -10.5}, {"input": [-91.0, -10.0], "expected": -10.0}, {"input": [-91.0, -9.5], "expected": -9.5}, {"input": [-91.0, -9.0], "expected": -9.0}, {"input": [-91.0, -8.5], "expected": -8.5}, {"input": [-91.0, -8.0], "expected": -8.0}, {"input": [-91.0, -7.5], "expected": -7.5}, {"input": [-91.0, -7.0], "expected": -7.0}, {"input": [-91.0, -6.5], "expected": -6.5}, {"input": [-91.0, -6.0], "expected": -6.0}, {"input": [-91.0, -5.5], "expected": -5.5}, {"input": [-91.0, -5.0], "expected": -5.0}, {"input": [-91.0, -4.5], "expected": -4.5}, {"input": [-91.0, -4.0], "expected": -4.0}, {"input": [-91.0, -3.5], "expected": -3.5}, {"input": [-91.0, -3.0], "expected": -3.0}, {"input": [-91.0, -2.5], "expected": -2.5}, {"input": [-91.0, -2.0], "expected": -2.0}, {"input": [-91.0, -1.5], "expected": -1.5}, {"input": [-91.0, -1.0], "expected": -1.0}, {"input": [-91.0, -0.5], "expected": -0.5}, {"input": [-91.0, 0.0], "expected": 3.0144087850653746e-40}, {"input": [-91.0, 0.5], "expected": 0.5}, {"input": [-91.0, 1.0], "expected": 1.0}, {"input": [-91.0, 1.5], "expected": 1.5}, {"input": [-91.0, 2.0], "expected": 2.0}, {"input": [-91.0, 2.5], "expected": 2.5}, {"input": [-91.0, 3.0], "expected": 3.0}, {"input": [-91.0, 3.5], "expected": 3.5}, {"input": [-91.0, 4.0], "expected": 4.0}, {"input": [-91.0, 4.5], "expected": 4.5}, {"input": [-91.0, 5.0], "expected": 5.0}, {"input": [-91.0, 5.5], "expected": 5.5}, {"input": [-91.0, 6.0], "expected": 6.0}, {"input": [-91.0, 6.5], "expected": 6.5}, {"input": [-91.0, 7.0], "expected": 7.0}, {"input": [-91.0, 7.5], "expected": 7.5}, {"input": [-91.0, 8.0], "expected": 8.0}, {"input": [-91.0, 8.5], "expected": 8.5}, {"input": [-91.0, 9.0], "expected": 9.0}, {"input": [-91.0, 9.5], "expected": 9.5}, {"input": [-91.0, 10.0], "expected": 10.0}, {"input": [-91.0, 10.5], "expected": 10.5}, {"input": [-91.0, 11.0], "expected": 11.0}, {"input": [-91.0, 11.5], "expected": 11.5}, {"input": [-91.0, 12.0], "expected": 12.0}, {"input": [-91.0, 12.5], "expected": 12.5}, {"input": [-91.0, 13.0], "expected": 13.0}, {"input": [-91.0, 13.5], "expected": 13.5}, {"input": [-91.0, 14.0], "expected": 14.0}, {"input": [-91.0, 14.5], "expected": 14.5}, {"input": [-91.0, 15.0], "expected": 15.0}, {"input": [-91.0, 15.5], "expected": 15.5}, {"input": [-91.0, 16.0], "expected": 16.0}, {"input": [-91.0, 16.5], "expected": 16.5}, {"input": [-91.0, 17.0], "expected": 17.0}, {"input": [-91.0, 17.5], "expected": 17.5}, {"input": [-91.0, 18.0], "expected": 18.0}, {"input": [-91.0, 18.5], "expected": 18.5}, {"input": [-91.0, 19.0], "expected": 19.0}, {"input": [-91.0, 19.5], "expected": 19.5}, {"input": [-91.0, 20.0], "expected": 20.0}, {"input": [-91.0, 20.5], "expected": 20.5}, {"input": [-91.0, 21.0], "expected": 21.0}, {"input": [-91.0, 21.5], "expected": 21.5}, {"input": [-91.0, 22.0], "expected": 22.0}, {"input": [-91.0, 22.5], "expected": 22.5}, {"input": [-91.0, 23.0], "expected": 23.0}, {"input": [-91.0, 23.5], "expected": 23.5}, {"input": [-91.0, 24.0], "expected": 24.0}, {"input": [-91.0, 24.5], "expected": 24.5}, {"input": [-91.0, 25.0], "expected": 25.0}, {"input": [-91.0, 25.5], "expected": 25.5}, {"input": [-91.0, 26.0], "expected": 26.0}, {"input": [-91.0, 26.5], "expected": 26.5}, {"input": [-91.0, 27.0], "expected": 27.0}, {"input": [-91.0, 27.5], "expected": 27.5}, {"input": [-91.0, 28.0], "expected": 28.0}, {"input": [-91.0, 28.5], "expected": 28.5}, {"input": [-91.0, 29.0], "expected": 29.0}, {"input": [-91.0, 29.5], "expected": 29.5}, {"input": [-91.0, 30.0], "expected": 30.0}, {"input": [-91.0, 30.5], "expected": 30.5}, {"input": [-91.0, 31.0], "expected": 31.0}, {"input": [-91.0, 31.5], "expected": 31.5}, {"input": [-91.0, 32.0], "expected": 32.0}, {"input": [-91.0, 32.5], "expected": 32.5}, {"input": [-91.0, 33.0], "expected": 33.0}, {"input": [-91.0, 33.5], "expected": 33.5}, {"input": [-91.0, 34.0], "expected": 34.0}, {"input": [-91.0, 34.5], "expected": 34.5}, {"input": [-91.0, 35.0], "expected": 35.0}, {"input": [-91.0, 35.5], "expected": 35.5}, {"input": [-91.0, 36.0], "expected": 36.0}, {"input": [-91.0, 36.5], "expected": 36.5}, {"input": [-91.0, 37.0], "expected": 37.0}, {"input": [-91.0, 37.5], "expected": 37.5}, {"input": [-91.0, 38.0], "expected": 38.0}, {"input": [-91.0, 38.5], "expected": 38.5}, {"input": [-91.0, 39.0], "expected": 39.0}, {"input": [-91.0, 39.5], "expected": 39.5}, {"input": [-91.0, 40.0], "expected": 40.0}, {"input": [-91.0, 40.5], "expected": 40.5}, {"input": [-91.0, 41.0], "expected": 41.0}, {"input": [-91.0, 41.5], "expected": 41.5}, {"input": [-91.0, 42.0], "expected": 42.0}, {"input": [-91.0, 42.5], "expected": 42.5}, {"input": [-91.0, 43.0], "expected": 43.0}, {"input": [-91.0, 43.5], "expected": 43.5}, {"input": [-91.0, 44.0], "expected": 44.0}, {"input": [-91.0, 44.5], "expected": 44.5}, {"input": [-91.0, 45.0], "expected": 45.0}, {"input": [-91.0, 45.5], "expected": 45.5}, {"input": [-91.0, 46.0], "expected": 46.0}, {"input": [-91.0, 46.5], "expected": 46.5}, {"input": [-91.0, 47.0], "expected": 47.0}, {"input": [-91.0, 47.5], "expected": 47.5}, {"input": [-91.0, 48.0], "expected": 48.0}, {"input": [-91.0, 48.5], "expected": 48.5}, {"input": [-91.0, 49.0], "expected": 49.0}, {"input": [-91.0, 49.5], "expected": 49.5}, {"input": [-91.0, 50.0], "expected": 50.0}, {"input": [-91.0, 50.5], "expected": 50.5}, {"input": [-91.0, 51.0], "expected": 51.0}, {"input": [-91.0, 51.5], "expected": 51.5}, {"input": [-91.0, 52.0], "expected": 52.0}, {"input": [-91.0, 52.5], "expected": 52.5}, {"input": [-91.0, 53.0], "expected": 53.0}, {"input": [-91.0, 53.5], "expected": 53.5}, {"input": [-91.0, 54.0], "expected": 54.0}, {"input": [-91.0, 54.5], "expected": 54.5}, {"input": [-91.0, 55.0], "expected": 55.0}, {"input": [-91.0, 55.5], "expected": 55.5}, {"input": [-91.0, 56.0], "expected": 56.0}, {"input": [-91.0, 56.5], "expected": 56.5}, {"input": [-91.0, 57.0], "expected": 57.0}, {"input": [-91.0, 57.5], "expected": 57.5}, {"input": [-91.0, 58.0], "expected": 58.0}, {"input": [-91.0, 58.5], "expected": 58.5}, {"input": [-91.0, 59.0], "expected": 59.0}, {"input": [-91.0, 59.5], "expected": 59.5}, {"input": [-91.0, 60.0], "expected": 60.0}, {"input": [-91.0, 60.5], "expected": 60.5}, {"input": [-91.0, 61.0], "expected": 61.0}, {"input": [-91.0, 61.5], "expected": 61.5}, {"input": [-91.0, 62.0], "expected": 62.0}, {"input": [-91.0, 62.5], "expected": 62.5}, {"input": [-91.0, 63.0], "expected": 63.0}, {"input": [-91.0, 63.5], "expected": 63.5}, {"input": [-91.0, 64.0], "expected": 64.0}, {"input": [-91.0, 64.5], "expected": 64.5}, {"input": [-91.0, 65.0], "expected": 65.0}, {"input": [-91.0, 65.5], "expected": 65.5}, {"input": [-91.0, 66.0], "expected": 66.0}, {"input": [-91.0, 66.5], "expected": 66.5}, {"input": [-91.0, 67.0], "expected": 67.0}, {"input": [-91.0, 67.5], "expected": 67.5}, {"input": [-91.0, 68.0], "expected": 68.0}, {"input": [-91.0, 68.5], "expected": 68.5}, {"input": [-91.0, 69.0], "expected": 69.0}, {"input": [-91.0, 69.5], "expected": 69.5}, {"input": [-91.0, 70.0], "expected": 70.0}, {"input": [-91.0, 70.5], "expected": 70.5}, {"input": [-91.0, 71.0], "expected": 71.0}, {"input": [-91.0, 71.5], "expected": 71.5}, {"input": [-91.0, 72.0], "expected": 72.0}, {"input": [-91.0, 72.5], "expected": 72.5}, {"input": [-91.0, 73.0], "expected": 73.0}, {"input": [-91.0, 73.5], "expected": 73.5}, {"input": [-91.0, 74.0], "expected": 74.0}, {"input": [-91.0, 74.5], "expected": 74.5}, {"input": [-91.0, 75.0], "expected": 75.0}, {"input": [-91.0, 75.5], "expected": 75.5}, {"input": [-91.0, 76.0], "expected": 76.0}, {"input": [-91.0, 76.5], "expected": 76.5}, {"input": [-91.0, 77.0], "expected": 77.0}, {"input": [-91.0, 77.5], "expected": 77.5}, {"input": [-91.0, 78.0], "expected": 78.0}, {"input": [-91.0, 78.5], "expected": 78.5}, {"input": [-91.0, 79.0], "expected": 79.0}, {"input": [-91.0, 79.5], "expected": 79.5}, {"input": [-91.0, 80.0], "expected": 80.0}, {"input": [-91.0, 80.5], "expected": 80.5}, {"input": [-91.0, 81.0], "expected": 81.0}, {"input": [-91.0, 81.5], "expected": 81.5}, {"input": [-91.0, 82.0], "expected": 82.0}, {"input": [-91.0, 82.5], "expected": 82.5}, {"input": [-91.0, 83.0], "expected": 83.0}, {"input": [-91.0, 83.5], "expected": 83.5}, {"input": [-91.0, 84.0], "expected": 84.0}, {"input": [-91.0, 84.5], "expected": 84.5}, {"input": [-91.0, 85.0], "expected": 85.0}, {"input": [-91.0, 85.5], "expected": 85.5}, {"input": [-91.0, 86.0], "expected": 86.0}, {"input": [-91.0, 86.5], "expected": 86.5}, {"input": [-91.0, 87.0], "expected": 87.0}, {"input": [-91.0, 87.5], "expected": 87.5}, {"input": [-91.0, 88.0], "expected": 88.0}, {"input": [-91.0, 88.5], "expected": 88.5}, {"input": [-91.0, 89.0], "expected": 89.0}, {"input": [-91.0, 89.5], "expected": 89.5}, {"input": [-91.0, 90.0], "expected": 90.0}, {"input": [-91.0, 90.5], "expected": 90.5}, {"input": [-91.0, 91.0], "expected": 91.0}, {"input": [-91.0, 91.5], "expected": 91.5}, {"input": [-91.0, 92.0], "expected": 92.0}, {"input": [-91.0, 92.5], "expected": 92.5}, {"input": [-91.0, 93.0], "expected": 93.0}, {"input": [-91.0, 93.5], "expected": 93.5}, {"input": [-91.0, 94.0], "expected": 94.0}, {"input": [-91.0, 94.5], "expected": 94.5}, {"input": [-91.0, 95.0], "expected": 95.0}, {"input": [-91.0, 95.5], "expected": 95.5}, {"input": [-91.0, 96.0], "expected": 96.0}, {"input": [-91.0, 96.5], "expected": 96.5}, {"input": [-91.0, 97.0], "expected": 97.0}, {"input": [-91.0, 97.5], "expected": 97.5}, {"input": [-91.0, 98.0], "expected": 98.0}, {"input": [-91.0, 98.5], "expected": 98.5}, {"input": [-91.0, 99.0], "expected": 99.0}, {"input": [-91.0, 99.5], "expected": 99.5}, {"input": [-90.5, -100.0], "expected": -90.49992515097136}, {"input": [-90.5, -99.5], "expected": -90.49987659781027}, {"input": [-90.5, -99.0], "expected": -90.49979655232787}, {"input": [-90.5, -98.5], "expected": -90.4996645936271}, {"input": [-90.5, -98.0], "expected": -90.49944706852465}, {"input": [-90.5, -97.5], "expected": -90.49908853354623}, {"input": [-90.5, -97.0], "expected": -90.49849768984025}, {"input": [-90.5, -96.5], "expected": -90.49752431486228}, {"input": [-90.5, -96.0], "expected": -90.49592155672943}, {"input": [-90.5, -95.5], "expected": -90.49328465151088}, {"input": [-90.5, -95.0], "expected": -90.4889522551514}, {"input": [-90.5, -94.5], "expected": -90.4818500720822}, {"input": [-90.5, -94.0], "expected": -90.47024958172737}, {"input": [-90.5, -93.5], "expected": -90.45141264842626}, {"input": [-90.5, -93.0], "expected": -90.42111026570745}, {"input": [-90.5, -92.5], "expected": -90.37307198895702}, {"input": [-90.5, -92.0], "expected": -90.29858672201725}, {"input": [-90.5, -91.5], "expected": -90.18673831248178}, {"input": [-90.5, -91.0], "expected": -90.0259230158199}, {"input": [-90.5, -90.5], "expected": -89.80685281944005}, {"input": [-90.5, -90.0], "expected": -89.5259230158199}, {"input": [-90.5, -89.5], "expected": -89.18673831248178}, {"input": [-90.5, -89.0], "expected": -88.79858672201725}, {"input": [-90.5, -88.5], "expected": -88.37307198895702}, {"input": [-90.5, -88.0], "expected": -87.92111026570745}, {"input": [-90.5, -87.5], "expected": -87.45141264842626}, {"input": [-90.5, -87.0], "expected": -86.97024958172737}, {"input": [-90.5, -86.5], "expected": -86.4818500720822}, {"input": [-90.5, -86.0], "expected": -85.9889522551514}, {"input": [-90.5, -85.5], "expected": -85.49328465151088}, {"input": [-90.5, -85.0], "expected": -84.99592155672943}, {"input": [-90.5, -84.5], "expected": -84.49752431486228}, {"input": [-90.5, -84.0], "expected": -83.99849768984025}, {"input": [-90.5, -83.5], "expected": -83.49908853354623}, {"input": [-90.5, -83.0], "expected": -82.99944706852465}, {"input": [-90.5, -82.5], "expected": -82.4996645936271}, {"input": [-90.5, -82.0], "expected": -81.99979655232787}, {"input": [-90.5, -81.5], "expected": -81.49987659781027}, {"input": [-90.5, -81.0], "expected": -80.99992515097136}, {"input": [-90.5, -80.5], "expected": -80.49995460110078}, {"input": [-90.5, -80.0], "expected": -79.99997246392977}, {"input": [-90.5, -79.5], "expected": -79.49998329843868}, {"input": [-90.5, -79.0], "expected": -78.99998986995772}, {"input": [-90.5, -78.5], "expected": -78.49999385580652}, {"input": [-90.5, -78.0], "expected": -77.99999627335377}, {"input": [-90.5, -77.5], "expected": -77.49999773967315}, {"input": [-90.5, -77.0], "expected": -76.99999862904185}, {"input": [-90.5, -76.5], "expected": -76.49999916847163}, {"input": [-90.5, -76.0], "expected": -75.99999949565246}, {"input": [-90.5, -75.5], "expected": -75.49999969409772}, {"input": [-90.5, -75.0], "expected": -74.99999981446088}, {"input": [-90.5, -74.5], "expected": -74.49999988746484}, {"input": [-90.5, -74.0], "expected": -73.99999993174397}, {"input": [-90.5, -73.5], "expected": -73.49999995860063}, {"input": [-90.5, -73.0], "expected": -72.99999997489}, {"input": [-90.5, -72.5], "expected": -72.49999998477001}, {"input": [-90.5, -72.0], "expected": -71.99999999076255}, {"input": [-90.5, -71.5], "expected": -71.4999999943972}, {"input": [-90.5, -71.0], "expected": -70.99999999660173}, {"input": [-90.5, -70.5], "expected": -70.49999999793884}, {"input": [-90.5, -70.0], "expected": -69.99999999874984}, {"input": [-90.5, -69.5], "expected": -69.49999999924174}, {"input": [-90.5, -69.0], "expected": -68.9999999995401}, {"input": [-90.5, -68.5], "expected": -68.49999999972106}, {"input": [-90.5, -68.0], "expected": -67.9999999998308}, {"input": [-90.5, -67.5], "expected": -67.49999999989738}, {"input": [-90.5, -67.0], "expected": -66.99999999993776}, {"input": [-90.5, -66.5], "expected": -66.49999999996224}, {"input": [-90.5, -66.0], "expected": -65.9999999999771}, {"input": [-90.5, -65.5], "expected": -65.49999999998612}, {"input": [-90.5, -65.0], "expected": -64.99999999999157}, {"input": [-90.5, -64.5], "expected": -64.49999999999488}, {"input": [-90.5, -64.0], "expected": -63.9999999999969}, {"input": [-90.5, -63.5], "expected": -63.49999999999812}, {"input": [-90.5, -63.0], "expected": -62.99999999999886}, {"input": [-90.5, -62.5], "expected": -62.49999999999931}, {"input": [-90.5, -62.0], "expected": -61.99999999999958}, {"input": [-90.5, -61.5], "expected": -61.499999999999744}, {"input": [-90.5, -61.0], "expected": -60.999999999999844}, {"input": [-90.5, -60.5], "expected": -60.49999999999991}, {"input": [-90.5, -60.0], "expected": -59.99999999999994}, {"input": [-90.5, -59.5], "expected": -59.499999999999964}, {"input": [-90.5, -59.0], "expected": -58.99999999999998}, {"input": [-90.5, -58.5], "expected": -58.499999999999986}, {"input": [-90.5, -58.0], "expected": -57.99999999999999}, {"input": [-90.5, -57.5], "expected": -57.49999999999999}, {"input": [-90.5, -57.0], "expected": -57.0}, {"input": [-90.5, -56.5], "expected": -56.5}, {"input": [-90.5, -56.0], "expected": -56.0}, {"input": [-90.5, -55.5], "expected": -55.5}, {"input": [-90.5, -55.0], "expected": -55.0}, {"input": [-90.5, -54.5], "expected": -54.5}, {"input": [-90.5, -54.0], "expected": -54.0}, {"input": [-90.5, -53.5], "expected": -53.5}, {"input": [-90.5, -53.0], "expected": -53.0}, {"input": [-90.5, -52.5], "expected": -52.5}, {"input": [-90.5, -52.0], "expected": -52.0}, {"input": [-90.5, -51.5], "expected": -51.5}, {"input": [-90.5, -51.0], "expected": -51.0}, {"input": [-90.5, -50.5], "expected": -50.5}, {"input": [-90.5, -50.0], "expected": -50.0}, {"input": [-90.5, -49.5], "expected": -49.5}, {"input": [-90.5, -49.0], "expected": -49.0}, {"input": [-90.5, -48.5], "expected": -48.5}, {"input": [-90.5, -48.0], "expected": -48.0}, {"input": [-90.5, -47.5], "expected": -47.5}, {"input": [-90.5, -47.0], "expected": -47.0}, {"input": [-90.5, -46.5], "expected": -46.5}, {"input": [-90.5, -46.0], "expected": -46.0}, {"input": [-90.5, -45.5], "expected": -45.5}, {"input": [-90.5, -45.0], "expected": -45.0}, {"input": [-90.5, -44.5], "expected": -44.5}, {"input": [-90.5, -44.0], "expected": -44.0}, {"input": [-90.5, -43.5], "expected": -43.5}, {"input": [-90.5, -43.0], "expected": -43.0}, {"input": [-90.5, -42.5], "expected": -42.5}, {"input": [-90.5, -42.0], "expected": -42.0}, {"input": [-90.5, -41.5], "expected": -41.5}, {"input": [-90.5, -41.0], "expected": -41.0}, {"input": [-90.5, -40.5], "expected": -40.5}, {"input": [-90.5, -40.0], "expected": -40.0}, {"input": [-90.5, -39.5], "expected": -39.5}, {"input": [-90.5, -39.0], "expected": -39.0}, {"input": [-90.5, -38.5], "expected": -38.5}, {"input": [-90.5, -38.0], "expected": -38.0}, {"input": [-90.5, -37.5], "expected": -37.5}, {"input": [-90.5, -37.0], "expected": -37.0}, {"input": [-90.5, -36.5], "expected": -36.5}, {"input": [-90.5, -36.0], "expected": -36.0}, {"input": [-90.5, -35.5], "expected": -35.5}, {"input": [-90.5, -35.0], "expected": -35.0}, {"input": [-90.5, -34.5], "expected": -34.5}, {"input": [-90.5, -34.0], "expected": -34.0}, {"input": [-90.5, -33.5], "expected": -33.5}, {"input": [-90.5, -33.0], "expected": -33.0}, {"input": [-90.5, -32.5], "expected": -32.5}, {"input": [-90.5, -32.0], "expected": -32.0}, {"input": [-90.5, -31.5], "expected": -31.5}, {"input": [-90.5, -31.0], "expected": -31.0}, {"input": [-90.5, -30.5], "expected": -30.5}, {"input": [-90.5, -30.0], "expected": -30.0}, {"input": [-90.5, -29.5], "expected": -29.5}, {"input": [-90.5, -29.0], "expected": -29.0}, {"input": [-90.5, -28.5], "expected": -28.5}, {"input": [-90.5, -28.0], "expected": -28.0}, {"input": [-90.5, -27.5], "expected": -27.5}, {"input": [-90.5, -27.0], "expected": -27.0}, {"input": [-90.5, -26.5], "expected": -26.5}, {"input": [-90.5, -26.0], "expected": -26.0}, {"input": [-90.5, -25.5], "expected": -25.5}, {"input": [-90.5, -25.0], "expected": -25.0}, {"input": [-90.5, -24.5], "expected": -24.5}, {"input": [-90.5, -24.0], "expected": -24.0}, {"input": [-90.5, -23.5], "expected": -23.5}, {"input": [-90.5, -23.0], "expected": -23.0}, {"input": [-90.5, -22.5], "expected": -22.5}, {"input": [-90.5, -22.0], "expected": -22.0}, {"input": [-90.5, -21.5], "expected": -21.5}, {"input": [-90.5, -21.0], "expected": -21.0}, {"input": [-90.5, -20.5], "expected": -20.5}, {"input": [-90.5, -20.0], "expected": -20.0}, {"input": [-90.5, -19.5], "expected": -19.5}, {"input": [-90.5, -19.0], "expected": -19.0}, {"input": [-90.5, -18.5], "expected": -18.5}, {"input": [-90.5, -18.0], "expected": -18.0}, {"input": [-90.5, -17.5], "expected": -17.5}, {"input": [-90.5, -17.0], "expected": -17.0}, {"input": [-90.5, -16.5], "expected": -16.5}, {"input": [-90.5, -16.0], "expected": -16.0}, {"input": [-90.5, -15.5], "expected": -15.5}, {"input": [-90.5, -15.0], "expected": -15.0}, {"input": [-90.5, -14.5], "expected": -14.5}, {"input": [-90.5, -14.0], "expected": -14.0}, {"input": [-90.5, -13.5], "expected": -13.5}, {"input": [-90.5, -13.0], "expected": -13.0}, {"input": [-90.5, -12.5], "expected": -12.5}, {"input": [-90.5, -12.0], "expected": -12.0}, {"input": [-90.5, -11.5], "expected": -11.5}, {"input": [-90.5, -11.0], "expected": -11.0}, {"input": [-90.5, -10.5], "expected": -10.5}, {"input": [-90.5, -10.0], "expected": -10.0}, {"input": [-90.5, -9.5], "expected": -9.5}, {"input": [-90.5, -9.0], "expected": -9.0}, {"input": [-90.5, -8.5], "expected": -8.5}, {"input": [-90.5, -8.0], "expected": -8.0}, {"input": [-90.5, -7.5], "expected": -7.5}, {"input": [-90.5, -7.0], "expected": -7.0}, {"input": [-90.5, -6.5], "expected": -6.5}, {"input": [-90.5, -6.0], "expected": -6.0}, {"input": [-90.5, -5.5], "expected": -5.5}, {"input": [-90.5, -5.0], "expected": -5.0}, {"input": [-90.5, -4.5], "expected": -4.5}, {"input": [-90.5, -4.0], "expected": -4.0}, {"input": [-90.5, -3.5], "expected": -3.5}, {"input": [-90.5, -3.0], "expected": -3.0}, {"input": [-90.5, -2.5], "expected": -2.5}, {"input": [-90.5, -2.0], "expected": -2.0}, {"input": [-90.5, -1.5], "expected": -1.5}, {"input": [-90.5, -1.0], "expected": -1.0}, {"input": [-90.5, -0.5], "expected": -0.5}, {"input": [-90.5, 0.0], "expected": 4.9699198825226136e-40}, {"input": [-90.5, 0.5], "expected": 0.5}, {"input": [-90.5, 1.0], "expected": 1.0}, {"input": [-90.5, 1.5], "expected": 1.5}, {"input": [-90.5, 2.0], "expected": 2.0}, {"input": [-90.5, 2.5], "expected": 2.5}, {"input": [-90.5, 3.0], "expected": 3.0}, {"input": [-90.5, 3.5], "expected": 3.5}, {"input": [-90.5, 4.0], "expected": 4.0}, {"input": [-90.5, 4.5], "expected": 4.5}, {"input": [-90.5, 5.0], "expected": 5.0}, {"input": [-90.5, 5.5], "expected": 5.5}, {"input": [-90.5, 6.0], "expected": 6.0}, {"input": [-90.5, 6.5], "expected": 6.5}, {"input": [-90.5, 7.0], "expected": 7.0}, {"input": [-90.5, 7.5], "expected": 7.5}, {"input": [-90.5, 8.0], "expected": 8.0}, {"input": [-90.5, 8.5], "expected": 8.5}, {"input": [-90.5, 9.0], "expected": 9.0}, {"input": [-90.5, 9.5], "expected": 9.5}, {"input": [-90.5, 10.0], "expected": 10.0}, {"input": [-90.5, 10.5], "expected": 10.5}, {"input": [-90.5, 11.0], "expected": 11.0}, {"input": [-90.5, 11.5], "expected": 11.5}, {"input": [-90.5, 12.0], "expected": 12.0}, {"input": [-90.5, 12.5], "expected": 12.5}, {"input": [-90.5, 13.0], "expected": 13.0}, {"input": [-90.5, 13.5], "expected": 13.5}, {"input": [-90.5, 14.0], "expected": 14.0}, {"input": [-90.5, 14.5], "expected": 14.5}, {"input": [-90.5, 15.0], "expected": 15.0}, {"input": [-90.5, 15.5], "expected": 15.5}, {"input": [-90.5, 16.0], "expected": 16.0}, {"input": [-90.5, 16.5], "expected": 16.5}, {"input": [-90.5, 17.0], "expected": 17.0}, {"input": [-90.5, 17.5], "expected": 17.5}, {"input": [-90.5, 18.0], "expected": 18.0}, {"input": [-90.5, 18.5], "expected": 18.5}, {"input": [-90.5, 19.0], "expected": 19.0}, {"input": [-90.5, 19.5], "expected": 19.5}, {"input": [-90.5, 20.0], "expected": 20.0}, {"input": [-90.5, 20.5], "expected": 20.5}, {"input": [-90.5, 21.0], "expected": 21.0}, {"input": [-90.5, 21.5], "expected": 21.5}, {"input": [-90.5, 22.0], "expected": 22.0}, {"input": [-90.5, 22.5], "expected": 22.5}, {"input": [-90.5, 23.0], "expected": 23.0}, {"input": [-90.5, 23.5], "expected": 23.5}, {"input": [-90.5, 24.0], "expected": 24.0}, {"input": [-90.5, 24.5], "expected": 24.5}, {"input": [-90.5, 25.0], "expected": 25.0}, {"input": [-90.5, 25.5], "expected": 25.5}, {"input": [-90.5, 26.0], "expected": 26.0}, {"input": [-90.5, 26.5], "expected": 26.5}, {"input": [-90.5, 27.0], "expected": 27.0}, {"input": [-90.5, 27.5], "expected": 27.5}, {"input": [-90.5, 28.0], "expected": 28.0}, {"input": [-90.5, 28.5], "expected": 28.5}, {"input": [-90.5, 29.0], "expected": 29.0}, {"input": [-90.5, 29.5], "expected": 29.5}, {"input": [-90.5, 30.0], "expected": 30.0}, {"input": [-90.5, 30.5], "expected": 30.5}, {"input": [-90.5, 31.0], "expected": 31.0}, {"input": [-90.5, 31.5], "expected": 31.5}, {"input": [-90.5, 32.0], "expected": 32.0}, {"input": [-90.5, 32.5], "expected": 32.5}, {"input": [-90.5, 33.0], "expected": 33.0}, {"input": [-90.5, 33.5], "expected": 33.5}, {"input": [-90.5, 34.0], "expected": 34.0}, {"input": [-90.5, 34.5], "expected": 34.5}, {"input": [-90.5, 35.0], "expected": 35.0}, {"input": [-90.5, 35.5], "expected": 35.5}, {"input": [-90.5, 36.0], "expected": 36.0}, {"input": [-90.5, 36.5], "expected": 36.5}, {"input": [-90.5, 37.0], "expected": 37.0}, {"input": [-90.5, 37.5], "expected": 37.5}, {"input": [-90.5, 38.0], "expected": 38.0}, {"input": [-90.5, 38.5], "expected": 38.5}, {"input": [-90.5, 39.0], "expected": 39.0}, {"input": [-90.5, 39.5], "expected": 39.5}, {"input": [-90.5, 40.0], "expected": 40.0}, {"input": [-90.5, 40.5], "expected": 40.5}, {"input": [-90.5, 41.0], "expected": 41.0}, {"input": [-90.5, 41.5], "expected": 41.5}, {"input": [-90.5, 42.0], "expected": 42.0}, {"input": [-90.5, 42.5], "expected": 42.5}, {"input": [-90.5, 43.0], "expected": 43.0}, {"input": [-90.5, 43.5], "expected": 43.5}, {"input": [-90.5, 44.0], "expected": 44.0}, {"input": [-90.5, 44.5], "expected": 44.5}, {"input": [-90.5, 45.0], "expected": 45.0}, {"input": [-90.5, 45.5], "expected": 45.5}, {"input": [-90.5, 46.0], "expected": 46.0}, {"input": [-90.5, 46.5], "expected": 46.5}, {"input": [-90.5, 47.0], "expected": 47.0}, {"input": [-90.5, 47.5], "expected": 47.5}, {"input": [-90.5, 48.0], "expected": 48.0}, {"input": [-90.5, 48.5], "expected": 48.5}, {"input": [-90.5, 49.0], "expected": 49.0}, {"input": [-90.5, 49.5], "expected": 49.5}, {"input": [-90.5, 50.0], "expected": 50.0}, {"input": [-90.5, 50.5], "expected": 50.5}, {"input": [-90.5, 51.0], "expected": 51.0}, {"input": [-90.5, 51.5], "expected": 51.5}, {"input": [-90.5, 52.0], "expected": 52.0}, {"input": [-90.5, 52.5], "expected": 52.5}, {"input": [-90.5, 53.0], "expected": 53.0}, {"input": [-90.5, 53.5], "expected": 53.5}, {"input": [-90.5, 54.0], "expected": 54.0}, {"input": [-90.5, 54.5], "expected": 54.5}, {"input": [-90.5, 55.0], "expected": 55.0}, {"input": [-90.5, 55.5], "expected": 55.5}, {"input": [-90.5, 56.0], "expected": 56.0}, {"input": [-90.5, 56.5], "expected": 56.5}, {"input": [-90.5, 57.0], "expected": 57.0}, {"input": [-90.5, 57.5], "expected": 57.5}, {"input": [-90.5, 58.0], "expected": 58.0}, {"input": [-90.5, 58.5], "expected": 58.5}, {"input": [-90.5, 59.0], "expected": 59.0}, {"input": [-90.5, 59.5], "expected": 59.5}, {"input": [-90.5, 60.0], "expected": 60.0}, {"input": [-90.5, 60.5], "expected": 60.5}, {"input": [-90.5, 61.0], "expected": 61.0}, {"input": [-90.5, 61.5], "expected": 61.5}, {"input": [-90.5, 62.0], "expected": 62.0}, {"input": [-90.5, 62.5], "expected": 62.5}, {"input": [-90.5, 63.0], "expected": 63.0}, {"input": [-90.5, 63.5], "expected": 63.5}, {"input": [-90.5, 64.0], "expected": 64.0}, {"input": [-90.5, 64.5], "expected": 64.5}, {"input": [-90.5, 65.0], "expected": 65.0}, {"input": [-90.5, 65.5], "expected": 65.5}, {"input": [-90.5, 66.0], "expected": 66.0}, {"input": [-90.5, 66.5], "expected": 66.5}, {"input": [-90.5, 67.0], "expected": 67.0}, {"input": [-90.5, 67.5], "expected": 67.5}, {"input": [-90.5, 68.0], "expected": 68.0}, {"input": [-90.5, 68.5], "expected": 68.5}, {"input": [-90.5, 69.0], "expected": 69.0}, {"input": [-90.5, 69.5], "expected": 69.5}, {"input": [-90.5, 70.0], "expected": 70.0}, {"input": [-90.5, 70.5], "expected": 70.5}, {"input": [-90.5, 71.0], "expected": 71.0}, {"input": [-90.5, 71.5], "expected": 71.5}, {"input": [-90.5, 72.0], "expected": 72.0}, {"input": [-90.5, 72.5], "expected": 72.5}, {"input": [-90.5, 73.0], "expected": 73.0}, {"input": [-90.5, 73.5], "expected": 73.5}, {"input": [-90.5, 74.0], "expected": 74.0}, {"input": [-90.5, 74.5], "expected": 74.5}, {"input": [-90.5, 75.0], "expected": 75.0}, {"input": [-90.5, 75.5], "expected": 75.5}, {"input": [-90.5, 76.0], "expected": 76.0}, {"input": [-90.5, 76.5], "expected": 76.5}, {"input": [-90.5, 77.0], "expected": 77.0}, {"input": [-90.5, 77.5], "expected": 77.5}, {"input": [-90.5, 78.0], "expected": 78.0}, {"input": [-90.5, 78.5], "expected": 78.5}, {"input": [-90.5, 79.0], "expected": 79.0}, {"input": [-90.5, 79.5], "expected": 79.5}, {"input": [-90.5, 80.0], "expected": 80.0}, {"input": [-90.5, 80.5], "expected": 80.5}, {"input": [-90.5, 81.0], "expected": 81.0}, {"input": [-90.5, 81.5], "expected": 81.5}, {"input": [-90.5, 82.0], "expected": 82.0}, {"input": [-90.5, 82.5], "expected": 82.5}, {"input": [-90.5, 83.0], "expected": 83.0}, {"input": [-90.5, 83.5], "expected": 83.5}, {"input": [-90.5, 84.0], "expected": 84.0}, {"input": [-90.5, 84.5], "expected": 84.5}, {"input": [-90.5, 85.0], "expected": 85.0}, {"input": [-90.5, 85.5], "expected": 85.5}, {"input": [-90.5, 86.0], "expected": 86.0}, {"input": [-90.5, 86.5], "expected": 86.5}, {"input": [-90.5, 87.0], "expected": 87.0}, {"input": [-90.5, 87.5], "expected": 87.5}, {"input": [-90.5, 88.0], "expected": 88.0}, {"input": [-90.5, 88.5], "expected": 88.5}, {"input": [-90.5, 89.0], "expected": 89.0}, {"input": [-90.5, 89.5], "expected": 89.5}, {"input": [-90.5, 90.0], "expected": 90.0}, {"input": [-90.5, 90.5], "expected": 90.5}, {"input": [-90.5, 91.0], "expected": 91.0}, {"input": [-90.5, 91.5], "expected": 91.5}, {"input": [-90.5, 92.0], "expected": 92.0}, {"input": [-90.5, 92.5], "expected": 92.5}, {"input": [-90.5, 93.0], "expected": 93.0}, {"input": [-90.5, 93.5], "expected": 93.5}, {"input": [-90.5, 94.0], "expected": 94.0}, {"input": [-90.5, 94.5], "expected": 94.5}, {"input": [-90.5, 95.0], "expected": 95.0}, {"input": [-90.5, 95.5], "expected": 95.5}, {"input": [-90.5, 96.0], "expected": 96.0}, {"input": [-90.5, 96.5], "expected": 96.5}, {"input": [-90.5, 97.0], "expected": 97.0}, {"input": [-90.5, 97.5], "expected": 97.5}, {"input": [-90.5, 98.0], "expected": 98.0}, {"input": [-90.5, 98.5], "expected": 98.5}, {"input": [-90.5, 99.0], "expected": 99.0}, {"input": [-90.5, 99.5], "expected": 99.5}, {"input": [-90.0, -100.0], "expected": -89.99995460110078}, {"input": [-90.0, -99.5], "expected": -89.99992515097136}, {"input": [-90.0, -99.0], "expected": -89.99987659781027}, {"input": [-90.0, -98.5], "expected": -89.99979655232787}, {"input": [-90.0, -98.0], "expected": -89.9996645936271}, {"input": [-90.0, -97.5], "expected": -89.99944706852465}, {"input": [-90.0, -97.0], "expected": -89.99908853354623}, {"input": [-90.0, -96.5], "expected": -89.99849768984025}, {"input": [-90.0, -96.0], "expected": -89.99752431486228}, {"input": [-90.0, -95.5], "expected": -89.99592155672943}, {"input": [-90.0, -95.0], "expected": -89.99328465151088}, {"input": [-90.0, -94.5], "expected": -89.9889522551514}, {"input": [-90.0, -94.0], "expected": -89.9818500720822}, {"input": [-90.0, -93.5], "expected": -89.97024958172737}, {"input": [-90.0, -93.0], "expected": -89.95141264842626}, {"input": [-90.0, -92.5], "expected": -89.92111026570745}, {"input": [-90.0, -92.0], "expected": -89.87307198895702}, {"input": [-90.0, -91.5], "expected": -89.79858672201725}, {"input": [-90.0, -91.0], "expected": -89.68673831248178}, {"input": [-90.0, -90.5], "expected": -89.5259230158199}, {"input": [-90.0, -90.0], "expected": -89.30685281944005}, {"input": [-90.0, -89.5], "expected": -89.0259230158199}, {"input": [-90.0, -89.0], "expected": -88.68673831248178}, {"input": [-90.0, -88.5], "expected": -88.29858672201725}, {"input": [-90.0, -88.0], "expected": -87.87307198895702}, {"input": [-90.0, -87.5], "expected": -87.42111026570745}, {"input": [-90.0, -87.0], "expected": -86.95141264842626}, {"input": [-90.0, -86.5], "expected": -86.47024958172737}, {"input": [-90.0, -86.0], "expected": -85.9818500720822}, {"input": [-90.0, -85.5], "expected": -85.4889522551514}, {"input": [-90.0, -85.0], "expected": -84.99328465151088}, {"input": [-90.0, -84.5], "expected": -84.49592155672943}, {"input": [-90.0, -84.0], "expected": -83.99752431486228}, {"input": [-90.0, -83.5], "expected": -83.49849768984025}, {"input": [-90.0, -83.0], "expected": -82.99908853354623}, {"input": [-90.0, -82.5], "expected": -82.49944706852465}, {"input": [-90.0, -82.0], "expected": -81.9996645936271}, {"input": [-90.0, -81.5], "expected": -81.49979655232787}, {"input": [-90.0, -81.0], "expected": -80.99987659781027}, {"input": [-90.0, -80.5], "expected": -80.49992515097136}, {"input": [-90.0, -80.0], "expected": -79.99995460110078}, {"input": [-90.0, -79.5], "expected": -79.49997246392977}, {"input": [-90.0, -79.0], "expected": -78.99998329843868}, {"input": [-90.0, -78.5], "expected": -78.49998986995772}, {"input": [-90.0, -78.0], "expected": -77.99999385580652}, {"input": [-90.0, -77.5], "expected": -77.49999627335377}, {"input": [-90.0, -77.0], "expected": -76.99999773967315}, {"input": [-90.0, -76.5], "expected": -76.49999862904185}, {"input": [-90.0, -76.0], "expected": -75.99999916847163}, {"input": [-90.0, -75.5], "expected": -75.49999949565246}, {"input": [-90.0, -75.0], "expected": -74.99999969409772}, {"input": [-90.0, -74.5], "expected": -74.49999981446088}, {"input": [-90.0, -74.0], "expected": -73.99999988746484}, {"input": [-90.0, -73.5], "expected": -73.49999993174397}, {"input": [-90.0, -73.0], "expected": -72.99999995860063}, {"input": [-90.0, -72.5], "expected": -72.49999997489}, {"input": [-90.0, -72.0], "expected": -71.99999998477001}, {"input": [-90.0, -71.5], "expected": -71.49999999076255}, {"input": [-90.0, -71.0], "expected": -70.9999999943972}, {"input": [-90.0, -70.5], "expected": -70.49999999660173}, {"input": [-90.0, -70.0], "expected": -69.99999999793884}, {"input": [-90.0, -69.5], "expected": -69.49999999874984}, {"input": [-90.0, -69.0], "expected": -68.99999999924174}, {"input": [-90.0, -68.5], "expected": -68.4999999995401}, {"input": [-90.0, -68.0], "expected": -67.99999999972106}, {"input": [-90.0, -67.5], "expected": -67.4999999998308}, {"input": [-90.0, -67.0], "expected": -66.99999999989738}, {"input": [-90.0, -66.5], "expected": -66.49999999993776}, {"input": [-90.0, -66.0], "expected": -65.99999999996224}, {"input": [-90.0, -65.5], "expected": -65.4999999999771}, {"input": [-90.0, -65.0], "expected": -64.99999999998612}, {"input": [-90.0, -64.5], "expected": -64.49999999999157}, {"input": [-90.0, -64.0], "expected": -63.99999999999489}, {"input": [-90.0, -63.5], "expected": -63.4999999999969}, {"input": [-90.0, -63.0], "expected": -62.99999999999812}, {"input": [-90.0, -62.5], "expected": -62.49999999999886}, {"input": [-90.0, -62.0], "expected": -61.99999999999931}, {"input": [-90.0, -61.5], "expected": -61.49999999999958}, {"input": [-90.0, -61.0], "expected": -60.999999999999744}, {"input": [-90.0, -60.5], "expected": -60.499999999999844}, {"input": [-90.0, -60.0], "expected": -59.99999999999991}, {"input": [-90.0, -59.5], "expected": -59.49999999999994}, {"input": [-90.0, -59.0], "expected": -58.999999999999964}, {"input": [-90.0, -58.5], "expected": -58.49999999999998}, {"input": [-90.0, -58.0], "expected": -57.999999999999986}, {"input": [-90.0, -57.5], "expected": -57.49999999999999}, {"input": [-90.0, -57.0], "expected": -56.99999999999999}, {"input": [-90.0, -56.5], "expected": -56.5}, {"input": [-90.0, -56.0], "expected": -56.0}, {"input": [-90.0, -55.5], "expected": -55.5}, {"input": [-90.0, -55.0], "expected": -55.0}, {"input": [-90.0, -54.5], "expected": -54.5}, {"input": [-90.0, -54.0], "expected": -54.0}, {"input": [-90.0, -53.5], "expected": -53.5}, {"input": [-90.0, -53.0], "expected": -53.0}, {"input": [-90.0, -52.5], "expected": -52.5}, {"input": [-90.0, -52.0], "expected": -52.0}, {"input": [-90.0, -51.5], "expected": -51.5}, {"input": [-90.0, -51.0], "expected": -51.0}, {"input": [-90.0, -50.5], "expected": -50.5}, {"input": [-90.0, -50.0], "expected": -50.0}, {"input": [-90.0, -49.5], "expected": -49.5}, {"input": [-90.0, -49.0], "expected": -49.0}, {"input": [-90.0, -48.5], "expected": -48.5}, {"input": [-90.0, -48.0], "expected": -48.0}, {"input": [-90.0, -47.5], "expected": -47.5}, {"input": [-90.0, -47.0], "expected": -47.0}, {"input": [-90.0, -46.5], "expected": -46.5}, {"input": [-90.0, -46.0], "expected": -46.0}, {"input": [-90.0, -45.5], "expected": -45.5}, {"input": [-90.0, -45.0], "expected": -45.0}, {"input": [-90.0, -44.5], "expected": -44.5}, {"input": [-90.0, -44.0], "expected": -44.0}, {"input": [-90.0, -43.5], "expected": -43.5}, {"input": [-90.0, -43.0], "expected": -43.0}, {"input": [-90.0, -42.5], "expected": -42.5}, {"input": [-90.0, -42.0], "expected": -42.0}, {"input": [-90.0, -41.5], "expected": -41.5}, {"input": [-90.0, -41.0], "expected": -41.0}, {"input": [-90.0, -40.5], "expected": -40.5}, {"input": [-90.0, -40.0], "expected": -40.0}, {"input": [-90.0, -39.5], "expected": -39.5}, {"input": [-90.0, -39.0], "expected": -39.0}, {"input": [-90.0, -38.5], "expected": -38.5}, {"input": [-90.0, -38.0], "expected": -38.0}, {"input": [-90.0, -37.5], "expected": -37.5}, {"input": [-90.0, -37.0], "expected": -37.0}, {"input": [-90.0, -36.5], "expected": -36.5}, {"input": [-90.0, -36.0], "expected": -36.0}, {"input": [-90.0, -35.5], "expected": -35.5}, {"input": [-90.0, -35.0], "expected": -35.0}, {"input": [-90.0, -34.5], "expected": -34.5}, {"input": [-90.0, -34.0], "expected": -34.0}, {"input": [-90.0, -33.5], "expected": -33.5}, {"input": [-90.0, -33.0], "expected": -33.0}, {"input": [-90.0, -32.5], "expected": -32.5}, {"input": [-90.0, -32.0], "expected": -32.0}, {"input": [-90.0, -31.5], "expected": -31.5}, {"input": [-90.0, -31.0], "expected": -31.0}, {"input": [-90.0, -30.5], "expected": -30.5}, {"input": [-90.0, -30.0], "expected": -30.0}, {"input": [-90.0, -29.5], "expected": -29.5}, {"input": [-90.0, -29.0], "expected": -29.0}, {"input": [-90.0, -28.5], "expected": -28.5}, {"input": [-90.0, -28.0], "expected": -28.0}, {"input": [-90.0, -27.5], "expected": -27.5}, {"input": [-90.0, -27.0], "expected": -27.0}, {"input": [-90.0, -26.5], "expected": -26.5}, {"input": [-90.0, -26.0], "expected": -26.0}, {"input": [-90.0, -25.5], "expected": -25.5}, {"input": [-90.0, -25.0], "expected": -25.0}, {"input": [-90.0, -24.5], "expected": -24.5}, {"input": [-90.0, -24.0], "expected": -24.0}, {"input": [-90.0, -23.5], "expected": -23.5}, {"input": [-90.0, -23.0], "expected": -23.0}, {"input": [-90.0, -22.5], "expected": -22.5}, {"input": [-90.0, -22.0], "expected": -22.0}, {"input": [-90.0, -21.5], "expected": -21.5}, {"input": [-90.0, -21.0], "expected": -21.0}, {"input": [-90.0, -20.5], "expected": -20.5}, {"input": [-90.0, -20.0], "expected": -20.0}, {"input": [-90.0, -19.5], "expected": -19.5}, {"input": [-90.0, -19.0], "expected": -19.0}, {"input": [-90.0, -18.5], "expected": -18.5}, {"input": [-90.0, -18.0], "expected": -18.0}, {"input": [-90.0, -17.5], "expected": -17.5}, {"input": [-90.0, -17.0], "expected": -17.0}, {"input": [-90.0, -16.5], "expected": -16.5}, {"input": [-90.0, -16.0], "expected": -16.0}, {"input": [-90.0, -15.5], "expected": -15.5}, {"input": [-90.0, -15.0], "expected": -15.0}, {"input": [-90.0, -14.5], "expected": -14.5}, {"input": [-90.0, -14.0], "expected": -14.0}, {"input": [-90.0, -13.5], "expected": -13.5}, {"input": [-90.0, -13.0], "expected": -13.0}, {"input": [-90.0, -12.5], "expected": -12.5}, {"input": [-90.0, -12.0], "expected": -12.0}, {"input": [-90.0, -11.5], "expected": -11.5}, {"input": [-90.0, -11.0], "expected": -11.0}, {"input": [-90.0, -10.5], "expected": -10.5}, {"input": [-90.0, -10.0], "expected": -10.0}, {"input": [-90.0, -9.5], "expected": -9.5}, {"input": [-90.0, -9.0], "expected": -9.0}, {"input": [-90.0, -8.5], "expected": -8.5}, {"input": [-90.0, -8.0], "expected": -8.0}, {"input": [-90.0, -7.5], "expected": -7.5}, {"input": [-90.0, -7.0], "expected": -7.0}, {"input": [-90.0, -6.5], "expected": -6.5}, {"input": [-90.0, -6.0], "expected": -6.0}, {"input": [-90.0, -5.5], "expected": -5.5}, {"input": [-90.0, -5.0], "expected": -5.0}, {"input": [-90.0, -4.5], "expected": -4.5}, {"input": [-90.0, -4.0], "expected": -4.0}, {"input": [-90.0, -3.5], "expected": -3.5}, {"input": [-90.0, -3.0], "expected": -3.0}, {"input": [-90.0, -2.5], "expected": -2.5}, {"input": [-90.0, -2.0], "expected": -2.0}, {"input": [-90.0, -1.5], "expected": -1.5}, {"input": [-90.0, -1.0], "expected": -1.0}, {"input": [-90.0, -0.5], "expected": -0.5}, {"input": [-90.0, 0.0], "expected": 8.194012623990515e-40}, {"input": [-90.0, 0.5], "expected": 0.5}, {"input": [-90.0, 1.0], "expected": 1.0}, {"input": [-90.0, 1.5], "expected": 1.5}, {"input": [-90.0, 2.0], "expected": 2.0}, {"input": [-90.0, 2.5], "expected": 2.5}, {"input": [-90.0, 3.0], "expected": 3.0}, {"input": [-90.0, 3.5], "expected": 3.5}, {"input": [-90.0, 4.0], "expected": 4.0}, {"input": [-90.0, 4.5], "expected": 4.5}, {"input": [-90.0, 5.0], "expected": 5.0}, {"input": [-90.0, 5.5], "expected": 5.5}, {"input": [-90.0, 6.0], "expected": 6.0}, {"input": [-90.0, 6.5], "expected": 6.5}, {"input": [-90.0, 7.0], "expected": 7.0}, {"input": [-90.0, 7.5], "expected": 7.5}, {"input": [-90.0, 8.0], "expected": 8.0}, {"input": [-90.0, 8.5], "expected": 8.5}, {"input": [-90.0, 9.0], "expected": 9.0}, {"input": [-90.0, 9.5], "expected": 9.5}, {"input": [-90.0, 10.0], "expected": 10.0}, {"input": [-90.0, 10.5], "expected": 10.5}, {"input": [-90.0, 11.0], "expected": 11.0}, {"input": [-90.0, 11.5], "expected": 11.5}, {"input": [-90.0, 12.0], "expected": 12.0}, {"input": [-90.0, 12.5], "expected": 12.5}, {"input": [-90.0, 13.0], "expected": 13.0}, {"input": [-90.0, 13.5], "expected": 13.5}, {"input": [-90.0, 14.0], "expected": 14.0}, {"input": [-90.0, 14.5], "expected": 14.5}, {"input": [-90.0, 15.0], "expected": 15.0}, {"input": [-90.0, 15.5], "expected": 15.5}, {"input": [-90.0, 16.0], "expected": 16.0}, {"input": [-90.0, 16.5], "expected": 16.5}, {"input": [-90.0, 17.0], "expected": 17.0}, {"input": [-90.0, 17.5], "expected": 17.5}, {"input": [-90.0, 18.0], "expected": 18.0}, {"input": [-90.0, 18.5], "expected": 18.5}, {"input": [-90.0, 19.0], "expected": 19.0}, {"input": [-90.0, 19.5], "expected": 19.5}, {"input": [-90.0, 20.0], "expected": 20.0}, {"input": [-90.0, 20.5], "expected": 20.5}, {"input": [-90.0, 21.0], "expected": 21.0}, {"input": [-90.0, 21.5], "expected": 21.5}, {"input": [-90.0, 22.0], "expected": 22.0}, {"input": [-90.0, 22.5], "expected": 22.5}, {"input": [-90.0, 23.0], "expected": 23.0}, {"input": [-90.0, 23.5], "expected": 23.5}, {"input": [-90.0, 24.0], "expected": 24.0}, {"input": [-90.0, 24.5], "expected": 24.5}, {"input": [-90.0, 25.0], "expected": 25.0}, {"input": [-90.0, 25.5], "expected": 25.5}, {"input": [-90.0, 26.0], "expected": 26.0}, {"input": [-90.0, 26.5], "expected": 26.5}, {"input": [-90.0, 27.0], "expected": 27.0}, {"input": [-90.0, 27.5], "expected": 27.5}, {"input": [-90.0, 28.0], "expected": 28.0}, {"input": [-90.0, 28.5], "expected": 28.5}, {"input": [-90.0, 29.0], "expected": 29.0}, {"input": [-90.0, 29.5], "expected": 29.5}, {"input": [-90.0, 30.0], "expected": 30.0}, {"input": [-90.0, 30.5], "expected": 30.5}, {"input": [-90.0, 31.0], "expected": 31.0}, {"input": [-90.0, 31.5], "expected": 31.5}, {"input": [-90.0, 32.0], "expected": 32.0}, {"input": [-90.0, 32.5], "expected": 32.5}, {"input": [-90.0, 33.0], "expected": 33.0}, {"input": [-90.0, 33.5], "expected": 33.5}, {"input": [-90.0, 34.0], "expected": 34.0}, {"input": [-90.0, 34.5], "expected": 34.5}, {"input": [-90.0, 35.0], "expected": 35.0}, {"input": [-90.0, 35.5], "expected": 35.5}, {"input": [-90.0, 36.0], "expected": 36.0}, {"input": [-90.0, 36.5], "expected": 36.5}, {"input": [-90.0, 37.0], "expected": 37.0}, {"input": [-90.0, 37.5], "expected": 37.5}, {"input": [-90.0, 38.0], "expected": 38.0}, {"input": [-90.0, 38.5], "expected": 38.5}, {"input": [-90.0, 39.0], "expected": 39.0}, {"input": [-90.0, 39.5], "expected": 39.5}, {"input": [-90.0, 40.0], "expected": 40.0}, {"input": [-90.0, 40.5], "expected": 40.5}, {"input": [-90.0, 41.0], "expected": 41.0}, {"input": [-90.0, 41.5], "expected": 41.5}, {"input": [-90.0, 42.0], "expected": 42.0}, {"input": [-90.0, 42.5], "expected": 42.5}, {"input": [-90.0, 43.0], "expected": 43.0}, {"input": [-90.0, 43.5], "expected": 43.5}, {"input": [-90.0, 44.0], "expected": 44.0}, {"input": [-90.0, 44.5], "expected": 44.5}, {"input": [-90.0, 45.0], "expected": 45.0}, {"input": [-90.0, 45.5], "expected": 45.5}, {"input": [-90.0, 46.0], "expected": 46.0}, {"input": [-90.0, 46.5], "expected": 46.5}, {"input": [-90.0, 47.0], "expected": 47.0}, {"input": [-90.0, 47.5], "expected": 47.5}, {"input": [-90.0, 48.0], "expected": 48.0}, {"input": [-90.0, 48.5], "expected": 48.5}, {"input": [-90.0, 49.0], "expected": 49.0}, {"input": [-90.0, 49.5], "expected": 49.5}, {"input": [-90.0, 50.0], "expected": 50.0}, {"input": [-90.0, 50.5], "expected": 50.5}, {"input": [-90.0, 51.0], "expected": 51.0}, {"input": [-90.0, 51.5], "expected": 51.5}, {"input": [-90.0, 52.0], "expected": 52.0}, {"input": [-90.0, 52.5], "expected": 52.5}, {"input": [-90.0, 53.0], "expected": 53.0}, {"input": [-90.0, 53.5], "expected": 53.5}, {"input": [-90.0, 54.0], "expected": 54.0}, {"input": [-90.0, 54.5], "expected": 54.5}, {"input": [-90.0, 55.0], "expected": 55.0}, {"input": [-90.0, 55.5], "expected": 55.5}, {"input": [-90.0, 56.0], "expected": 56.0}, {"input": [-90.0, 56.5], "expected": 56.5}, {"input": [-90.0, 57.0], "expected": 57.0}, {"input": [-90.0, 57.5], "expected": 57.5}, {"input": [-90.0, 58.0], "expected": 58.0}, {"input": [-90.0, 58.5], "expected": 58.5}, {"input": [-90.0, 59.0], "expected": 59.0}, {"input": [-90.0, 59.5], "expected": 59.5}, {"input": [-90.0, 60.0], "expected": 60.0}, {"input": [-90.0, 60.5], "expected": 60.5}, {"input": [-90.0, 61.0], "expected": 61.0}, {"input": [-90.0, 61.5], "expected": 61.5}, {"input": [-90.0, 62.0], "expected": 62.0}, {"input": [-90.0, 62.5], "expected": 62.5}, {"input": [-90.0, 63.0], "expected": 63.0}, {"input": [-90.0, 63.5], "expected": 63.5}, {"input": [-90.0, 64.0], "expected": 64.0}, {"input": [-90.0, 64.5], "expected": 64.5}, {"input": [-90.0, 65.0], "expected": 65.0}, {"input": [-90.0, 65.5], "expected": 65.5}, {"input": [-90.0, 66.0], "expected": 66.0}, {"input": [-90.0, 66.5], "expected": 66.5}, {"input": [-90.0, 67.0], "expected": 67.0}, {"input": [-90.0, 67.5], "expected": 67.5}, {"input": [-90.0, 68.0], "expected": 68.0}, {"input": [-90.0, 68.5], "expected": 68.5}, {"input": [-90.0, 69.0], "expected": 69.0}, {"input": [-90.0, 69.5], "expected": 69.5}, {"input": [-90.0, 70.0], "expected": 70.0}, {"input": [-90.0, 70.5], "expected": 70.5}, {"input": [-90.0, 71.0], "expected": 71.0}, {"input": [-90.0, 71.5], "expected": 71.5}, {"input": [-90.0, 72.0], "expected": 72.0}, {"input": [-90.0, 72.5], "expected": 72.5}, {"input": [-90.0, 73.0], "expected": 73.0}, {"input": [-90.0, 73.5], "expected": 73.5}, {"input": [-90.0, 74.0], "expected": 74.0}, {"input": [-90.0, 74.5], "expected": 74.5}, {"input": [-90.0, 75.0], "expected": 75.0}, {"input": [-90.0, 75.5], "expected": 75.5}, {"input": [-90.0, 76.0], "expected": 76.0}, {"input": [-90.0, 76.5], "expected": 76.5}, {"input": [-90.0, 77.0], "expected": 77.0}, {"input": [-90.0, 77.5], "expected": 77.5}, {"input": [-90.0, 78.0], "expected": 78.0}, {"input": [-90.0, 78.5], "expected": 78.5}, {"input": [-90.0, 79.0], "expected": 79.0}, {"input": [-90.0, 79.5], "expected": 79.5}, {"input": [-90.0, 80.0], "expected": 80.0}, {"input": [-90.0, 80.5], "expected": 80.5}, {"input": [-90.0, 81.0], "expected": 81.0}, {"input": [-90.0, 81.5], "expected": 81.5}, {"input": [-90.0, 82.0], "expected": 82.0}, {"input": [-90.0, 82.5], "expected": 82.5}, {"input": [-90.0, 83.0], "expected": 83.0}, {"input": [-90.0, 83.5], "expected": 83.5}, {"input": [-90.0, 84.0], "expected": 84.0}, {"input": [-90.0, 84.5], "expected": 84.5}, {"input": [-90.0, 85.0], "expected": 85.0}, {"input": [-90.0, 85.5], "expected": 85.5}, {"input": [-90.0, 86.0], "expected": 86.0}, {"input": [-90.0, 86.5], "expected": 86.5}, {"input": [-90.0, 87.0], "expected": 87.0}, {"input": [-90.0, 87.5], "expected": 87.5}, {"input": [-90.0, 88.0], "expected": 88.0}, {"input": [-90.0, 88.5], "expected": 88.5}, {"input": [-90.0, 89.0], "expected": 89.0}, {"input": [-90.0, 89.5], "expected": 89.5}, {"input": [-90.0, 90.0], "expected": 90.0}, {"input": [-90.0, 90.5], "expected": 90.5}, {"input": [-90.0, 91.0], "expected": 91.0}, {"input": [-90.0, 91.5], "expected": 91.5}, {"input": [-90.0, 92.0], "expected": 92.0}, {"input": [-90.0, 92.5], "expected": 92.5}, {"input": [-90.0, 93.0], "expected": 93.0}, {"input": [-90.0, 93.5], "expected": 93.5}, {"input": [-90.0, 94.0], "expected": 94.0}, {"input": [-90.0, 94.5], "expected": 94.5}, {"input": [-90.0, 95.0], "expected": 95.0}, {"input": [-90.0, 95.5], "expected": 95.5}, {"input": [-90.0, 96.0], "expected": 96.0}, {"input": [-90.0, 96.5], "expected": 96.5}, {"input": [-90.0, 97.0], "expected": 97.0}, {"input": [-90.0, 97.5], "expected": 97.5}, {"input": [-90.0, 98.0], "expected": 98.0}, {"input": [-90.0, 98.5], "expected": 98.5}, {"input": [-90.0, 99.0], "expected": 99.0}, {"input": [-90.0, 99.5], "expected": 99.5}, {"input": [-89.5, -100.0], "expected": -89.49997246392977}, {"input": [-89.5, -99.5], "expected": -89.49995460110078}, {"input": [-89.5, -99.0], "expected": -89.49992515097136}, {"input": [-89.5, -98.5], "expected": -89.49987659781027}, {"input": [-89.5, -98.0], "expected": -89.49979655232787}, {"input": [-89.5, -97.5], "expected": -89.4996645936271}, {"input": [-89.5, -97.0], "expected": -89.49944706852465}, {"input": [-89.5, -96.5], "expected": -89.49908853354623}, {"input": [-89.5, -96.0], "expected": -89.49849768984025}, {"input": [-89.5, -95.5], "expected": -89.49752431486228}, {"input": [-89.5, -95.0], "expected": -89.49592155672943}, {"input": [-89.5, -94.5], "expected": -89.49328465151088}, {"input": [-89.5, -94.0], "expected": -89.4889522551514}, {"input": [-89.5, -93.5], "expected": -89.4818500720822}, {"input": [-89.5, -93.0], "expected": -89.47024958172737}, {"input": [-89.5, -92.5], "expected": -89.45141264842626}, {"input": [-89.5, -92.0], "expected": -89.42111026570745}, {"input": [-89.5, -91.5], "expected": -89.37307198895702}, {"input": [-89.5, -91.0], "expected": -89.29858672201725}, {"input": [-89.5, -90.5], "expected": -89.18673831248178}, {"input": [-89.5, -90.0], "expected": -89.0259230158199}, {"input": [-89.5, -89.5], "expected": -88.80685281944005}, {"input": [-89.5, -89.0], "expected": -88.5259230158199}, {"input": [-89.5, -88.5], "expected": -88.18673831248178}, {"input": [-89.5, -88.0], "expected": -87.79858672201725}, {"input": [-89.5, -87.5], "expected": -87.37307198895702}, {"input": [-89.5, -87.0], "expected": -86.92111026570745}, {"input": [-89.5, -86.5], "expected": -86.45141264842626}, {"input": [-89.5, -86.0], "expected": -85.97024958172737}, {"input": [-89.5, -85.5], "expected": -85.4818500720822}, {"input": [-89.5, -85.0], "expected": -84.9889522551514}, {"input": [-89.5, -84.5], "expected": -84.49328465151088}, {"input": [-89.5, -84.0], "expected": -83.99592155672943}, {"input": [-89.5, -83.5], "expected": -83.49752431486228}, {"input": [-89.5, -83.0], "expected": -82.99849768984025}, {"input": [-89.5, -82.5], "expected": -82.49908853354623}, {"input": [-89.5, -82.0], "expected": -81.99944706852465}, {"input": [-89.5, -81.5], "expected": -81.4996645936271}, {"input": [-89.5, -81.0], "expected": -80.99979655232787}, {"input": [-89.5, -80.5], "expected": -80.49987659781027}, {"input": [-89.5, -80.0], "expected": -79.99992515097136}, {"input": [-89.5, -79.5], "expected": -79.49995460110078}, {"input": [-89.5, -79.0], "expected": -78.99997246392977}, {"input": [-89.5, -78.5], "expected": -78.49998329843868}, {"input": [-89.5, -78.0], "expected": -77.99998986995772}, {"input": [-89.5, -77.5], "expected": -77.49999385580652}, {"input": [-89.5, -77.0], "expected": -76.99999627335377}, {"input": [-89.5, -76.5], "expected": -76.49999773967315}, {"input": [-89.5, -76.0], "expected": -75.99999862904185}, {"input": [-89.5, -75.5], "expected": -75.49999916847163}, {"input": [-89.5, -75.0], "expected": -74.99999949565246}, {"input": [-89.5, -74.5], "expected": -74.49999969409772}, {"input": [-89.5, -74.0], "expected": -73.99999981446088}, {"input": [-89.5, -73.5], "expected": -73.49999988746484}, {"input": [-89.5, -73.0], "expected": -72.99999993174397}, {"input": [-89.5, -72.5], "expected": -72.49999995860063}, {"input": [-89.5, -72.0], "expected": -71.99999997489}, {"input": [-89.5, -71.5], "expected": -71.49999998477001}, {"input": [-89.5, -71.0], "expected": -70.99999999076255}, {"input": [-89.5, -70.5], "expected": -70.4999999943972}, {"input": [-89.5, -70.0], "expected": -69.99999999660173}, {"input": [-89.5, -69.5], "expected": -69.49999999793884}, {"input": [-89.5, -69.0], "expected": -68.99999999874984}, {"input": [-89.5, -68.5], "expected": -68.49999999924174}, {"input": [-89.5, -68.0], "expected": -67.9999999995401}, {"input": [-89.5, -67.5], "expected": -67.49999999972106}, {"input": [-89.5, -67.0], "expected": -66.9999999998308}, {"input": [-89.5, -66.5], "expected": -66.49999999989738}, {"input": [-89.5, -66.0], "expected": -65.99999999993776}, {"input": [-89.5, -65.5], "expected": -65.49999999996224}, {"input": [-89.5, -65.0], "expected": -64.9999999999771}, {"input": [-89.5, -64.5], "expected": -64.49999999998612}, {"input": [-89.5, -64.0], "expected": -63.99999999999158}, {"input": [-89.5, -63.5], "expected": -63.49999999999489}, {"input": [-89.5, -63.0], "expected": -62.9999999999969}, {"input": [-89.5, -62.5], "expected": -62.49999999999812}, {"input": [-89.5, -62.0], "expected": -61.99999999999886}, {"input": [-89.5, -61.5], "expected": -61.49999999999931}, {"input": [-89.5, -61.0], "expected": -60.99999999999958}, {"input": [-89.5, -60.5], "expected": -60.499999999999744}, {"input": [-89.5, -60.0], "expected": -59.999999999999844}, {"input": [-89.5, -59.5], "expected": -59.49999999999991}, {"input": [-89.5, -59.0], "expected": -58.99999999999994}, {"input": [-89.5, -58.5], "expected": -58.499999999999964}, {"input": [-89.5, -58.0], "expected": -57.99999999999998}, {"input": [-89.5, -57.5], "expected": -57.499999999999986}, {"input": [-89.5, -57.0], "expected": -56.99999999999999}, {"input": [-89.5, -56.5], "expected": -56.49999999999999}, {"input": [-89.5, -56.0], "expected": -56.0}, {"input": [-89.5, -55.5], "expected": -55.5}, {"input": [-89.5, -55.0], "expected": -55.0}, {"input": [-89.5, -54.5], "expected": -54.5}, {"input": [-89.5, -54.0], "expected": -54.0}, {"input": [-89.5, -53.5], "expected": -53.5}, {"input": [-89.5, -53.0], "expected": -53.0}, {"input": [-89.5, -52.5], "expected": -52.5}, {"input": [-89.5, -52.0], "expected": -52.0}, {"input": [-89.5, -51.5], "expected": -51.5}, {"input": [-89.5, -51.0], "expected": -51.0}, {"input": [-89.5, -50.5], "expected": -50.5}, {"input": [-89.5, -50.0], "expected": -50.0}, {"input": [-89.5, -49.5], "expected": -49.5}, {"input": [-89.5, -49.0], "expected": -49.0}, {"input": [-89.5, -48.5], "expected": -48.5}, {"input": [-89.5, -48.0], "expected": -48.0}, {"input": [-89.5, -47.5], "expected": -47.5}, {"input": [-89.5, -47.0], "expected": -47.0}, {"input": [-89.5, -46.5], "expected": -46.5}, {"input": [-89.5, -46.0], "expected": -46.0}, {"input": [-89.5, -45.5], "expected": -45.5}, {"input": [-89.5, -45.0], "expected": -45.0}, {"input": [-89.5, -44.5], "expected": -44.5}, {"input": [-89.5, -44.0], "expected": -44.0}, {"input": [-89.5, -43.5], "expected": -43.5}, {"input": [-89.5, -43.0], "expected": -43.0}, {"input": [-89.5, -42.5], "expected": -42.5}, {"input": [-89.5, -42.0], "expected": -42.0}, {"input": [-89.5, -41.5], "expected": -41.5}, {"input": [-89.5, -41.0], "expected": -41.0}, {"input": [-89.5, -40.5], "expected": -40.5}, {"input": [-89.5, -40.0], "expected": -40.0}, {"input": [-89.5, -39.5], "expected": -39.5}, {"input": [-89.5, -39.0], "expected": -39.0}, {"input": [-89.5, -38.5], "expected": -38.5}, {"input": [-89.5, -38.0], "expected": -38.0}, {"input": [-89.5, -37.5], "expected": -37.5}, {"input": [-89.5, -37.0], "expected": -37.0}, {"input": [-89.5, -36.5], "expected": -36.5}, {"input": [-89.5, -36.0], "expected": -36.0}, {"input": [-89.5, -35.5], "expected": -35.5}, {"input": [-89.5, -35.0], "expected": -35.0}, {"input": [-89.5, -34.5], "expected": -34.5}, {"input": [-89.5, -34.0], "expected": -34.0}, {"input": [-89.5, -33.5], "expected": -33.5}, {"input": [-89.5, -33.0], "expected": -33.0}, {"input": [-89.5, -32.5], "expected": -32.5}, {"input": [-89.5, -32.0], "expected": -32.0}, {"input": [-89.5, -31.5], "expected": -31.5}, {"input": [-89.5, -31.0], "expected": -31.0}, {"input": [-89.5, -30.5], "expected": -30.5}, {"input": [-89.5, -30.0], "expected": -30.0}, {"input": [-89.5, -29.5], "expected": -29.5}, {"input": [-89.5, -29.0], "expected": -29.0}, {"input": [-89.5, -28.5], "expected": -28.5}, {"input": [-89.5, -28.0], "expected": -28.0}, {"input": [-89.5, -27.5], "expected": -27.5}, {"input": [-89.5, -27.0], "expected": -27.0}, {"input": [-89.5, -26.5], "expected": -26.5}, {"input": [-89.5, -26.0], "expected": -26.0}, {"input": [-89.5, -25.5], "expected": -25.5}, {"input": [-89.5, -25.0], "expected": -25.0}, {"input": [-89.5, -24.5], "expected": -24.5}, {"input": [-89.5, -24.0], "expected": -24.0}, {"input": [-89.5, -23.5], "expected": -23.5}, {"input": [-89.5, -23.0], "expected": -23.0}, {"input": [-89.5, -22.5], "expected": -22.5}, {"input": [-89.5, -22.0], "expected": -22.0}, {"input": [-89.5, -21.5], "expected": -21.5}, {"input": [-89.5, -21.0], "expected": -21.0}, {"input": [-89.5, -20.5], "expected": -20.5}, {"input": [-89.5, -20.0], "expected": -20.0}, {"input": [-89.5, -19.5], "expected": -19.5}, {"input": [-89.5, -19.0], "expected": -19.0}, {"input": [-89.5, -18.5], "expected": -18.5}, {"input": [-89.5, -18.0], "expected": -18.0}, {"input": [-89.5, -17.5], "expected": -17.5}, {"input": [-89.5, -17.0], "expected": -17.0}, {"input": [-89.5, -16.5], "expected": -16.5}, {"input": [-89.5, -16.0], "expected": -16.0}, {"input": [-89.5, -15.5], "expected": -15.5}, {"input": [-89.5, -15.0], "expected": -15.0}, {"input": [-89.5, -14.5], "expected": -14.5}, {"input": [-89.5, -14.0], "expected": -14.0}, {"input": [-89.5, -13.5], "expected": -13.5}, {"input": [-89.5, -13.0], "expected": -13.0}, {"input": [-89.5, -12.5], "expected": -12.5}, {"input": [-89.5, -12.0], "expected": -12.0}, {"input": [-89.5, -11.5], "expected": -11.5}, {"input": [-89.5, -11.0], "expected": -11.0}, {"input": [-89.5, -10.5], "expected": -10.5}, {"input": [-89.5, -10.0], "expected": -10.0}, {"input": [-89.5, -9.5], "expected": -9.5}, {"input": [-89.5, -9.0], "expected": -9.0}, {"input": [-89.5, -8.5], "expected": -8.5}, {"input": [-89.5, -8.0], "expected": -8.0}, {"input": [-89.5, -7.5], "expected": -7.5}, {"input": [-89.5, -7.0], "expected": -7.0}, {"input": [-89.5, -6.5], "expected": -6.5}, {"input": [-89.5, -6.0], "expected": -6.0}, {"input": [-89.5, -5.5], "expected": -5.5}, {"input": [-89.5, -5.0], "expected": -5.0}, {"input": [-89.5, -4.5], "expected": -4.5}, {"input": [-89.5, -4.0], "expected": -4.0}, {"input": [-89.5, -3.5], "expected": -3.5}, {"input": [-89.5, -3.0], "expected": -3.0}, {"input": [-89.5, -2.5], "expected": -2.5}, {"input": [-89.5, -2.0], "expected": -2.0}, {"input": [-89.5, -1.5], "expected": -1.5}, {"input": [-89.5, -1.0], "expected": -1.0}, {"input": [-89.5, -0.5], "expected": -0.5}, {"input": [-89.5, 0.0], "expected": 1.3509642905558533e-39}, {"input": [-89.5, 0.5], "expected": 0.5}, {"input": [-89.5, 1.0], "expected": 1.0}, {"input": [-89.5, 1.5], "expected": 1.5}, {"input": [-89.5, 2.0], "expected": 2.0}, {"input": [-89.5, 2.5], "expected": 2.5}, {"input": [-89.5, 3.0], "expected": 3.0}, {"input": [-89.5, 3.5], "expected": 3.5}, {"input": [-89.5, 4.0], "expected": 4.0}, {"input": [-89.5, 4.5], "expected": 4.5}, {"input": [-89.5, 5.0], "expected": 5.0}, {"input": [-89.5, 5.5], "expected": 5.5}, {"input": [-89.5, 6.0], "expected": 6.0}, {"input": [-89.5, 6.5], "expected": 6.5}, {"input": [-89.5, 7.0], "expected": 7.0}, {"input": [-89.5, 7.5], "expected": 7.5}, {"input": [-89.5, 8.0], "expected": 8.0}, {"input": [-89.5, 8.5], "expected": 8.5}, {"input": [-89.5, 9.0], "expected": 9.0}, {"input": [-89.5, 9.5], "expected": 9.5}, {"input": [-89.5, 10.0], "expected": 10.0}, {"input": [-89.5, 10.5], "expected": 10.5}, {"input": [-89.5, 11.0], "expected": 11.0}, {"input": [-89.5, 11.5], "expected": 11.5}, {"input": [-89.5, 12.0], "expected": 12.0}, {"input": [-89.5, 12.5], "expected": 12.5}, {"input": [-89.5, 13.0], "expected": 13.0}, {"input": [-89.5, 13.5], "expected": 13.5}, {"input": [-89.5, 14.0], "expected": 14.0}, {"input": [-89.5, 14.5], "expected": 14.5}, {"input": [-89.5, 15.0], "expected": 15.0}, {"input": [-89.5, 15.5], "expected": 15.5}, {"input": [-89.5, 16.0], "expected": 16.0}, {"input": [-89.5, 16.5], "expected": 16.5}, {"input": [-89.5, 17.0], "expected": 17.0}, {"input": [-89.5, 17.5], "expected": 17.5}, {"input": [-89.5, 18.0], "expected": 18.0}, {"input": [-89.5, 18.5], "expected": 18.5}, {"input": [-89.5, 19.0], "expected": 19.0}, {"input": [-89.5, 19.5], "expected": 19.5}, {"input": [-89.5, 20.0], "expected": 20.0}, {"input": [-89.5, 20.5], "expected": 20.5}, {"input": [-89.5, 21.0], "expected": 21.0}, {"input": [-89.5, 21.5], "expected": 21.5}, {"input": [-89.5, 22.0], "expected": 22.0}, {"input": [-89.5, 22.5], "expected": 22.5}, {"input": [-89.5, 23.0], "expected": 23.0}, {"input": [-89.5, 23.5], "expected": 23.5}, {"input": [-89.5, 24.0], "expected": 24.0}, {"input": [-89.5, 24.5], "expected": 24.5}, {"input": [-89.5, 25.0], "expected": 25.0}, {"input": [-89.5, 25.5], "expected": 25.5}, {"input": [-89.5, 26.0], "expected": 26.0}, {"input": [-89.5, 26.5], "expected": 26.5}, {"input": [-89.5, 27.0], "expected": 27.0}, {"input": [-89.5, 27.5], "expected": 27.5}, {"input": [-89.5, 28.0], "expected": 28.0}, {"input": [-89.5, 28.5], "expected": 28.5}, {"input": [-89.5, 29.0], "expected": 29.0}, {"input": [-89.5, 29.5], "expected": 29.5}, {"input": [-89.5, 30.0], "expected": 30.0}, {"input": [-89.5, 30.5], "expected": 30.5}, {"input": [-89.5, 31.0], "expected": 31.0}, {"input": [-89.5, 31.5], "expected": 31.5}, {"input": [-89.5, 32.0], "expected": 32.0}, {"input": [-89.5, 32.5], "expected": 32.5}, {"input": [-89.5, 33.0], "expected": 33.0}, {"input": [-89.5, 33.5], "expected": 33.5}, {"input": [-89.5, 34.0], "expected": 34.0}, {"input": [-89.5, 34.5], "expected": 34.5}, {"input": [-89.5, 35.0], "expected": 35.0}, {"input": [-89.5, 35.5], "expected": 35.5}, {"input": [-89.5, 36.0], "expected": 36.0}, {"input": [-89.5, 36.5], "expected": 36.5}, {"input": [-89.5, 37.0], "expected": 37.0}, {"input": [-89.5, 37.5], "expected": 37.5}, {"input": [-89.5, 38.0], "expected": 38.0}, {"input": [-89.5, 38.5], "expected": 38.5}, {"input": [-89.5, 39.0], "expected": 39.0}, {"input": [-89.5, 39.5], "expected": 39.5}, {"input": [-89.5, 40.0], "expected": 40.0}, {"input": [-89.5, 40.5], "expected": 40.5}, {"input": [-89.5, 41.0], "expected": 41.0}, {"input": [-89.5, 41.5], "expected": 41.5}, {"input": [-89.5, 42.0], "expected": 42.0}, {"input": [-89.5, 42.5], "expected": 42.5}, {"input": [-89.5, 43.0], "expected": 43.0}, {"input": [-89.5, 43.5], "expected": 43.5}, {"input": [-89.5, 44.0], "expected": 44.0}, {"input": [-89.5, 44.5], "expected": 44.5}, {"input": [-89.5, 45.0], "expected": 45.0}, {"input": [-89.5, 45.5], "expected": 45.5}, {"input": [-89.5, 46.0], "expected": 46.0}, {"input": [-89.5, 46.5], "expected": 46.5}, {"input": [-89.5, 47.0], "expected": 47.0}, {"input": [-89.5, 47.5], "expected": 47.5}, {"input": [-89.5, 48.0], "expected": 48.0}, {"input": [-89.5, 48.5], "expected": 48.5}, {"input": [-89.5, 49.0], "expected": 49.0}, {"input": [-89.5, 49.5], "expected": 49.5}, {"input": [-89.5, 50.0], "expected": 50.0}, {"input": [-89.5, 50.5], "expected": 50.5}, {"input": [-89.5, 51.0], "expected": 51.0}, {"input": [-89.5, 51.5], "expected": 51.5}, {"input": [-89.5, 52.0], "expected": 52.0}, {"input": [-89.5, 52.5], "expected": 52.5}, {"input": [-89.5, 53.0], "expected": 53.0}, {"input": [-89.5, 53.5], "expected": 53.5}, {"input": [-89.5, 54.0], "expected": 54.0}, {"input": [-89.5, 54.5], "expected": 54.5}, {"input": [-89.5, 55.0], "expected": 55.0}, {"input": [-89.5, 55.5], "expected": 55.5}, {"input": [-89.5, 56.0], "expected": 56.0}, {"input": [-89.5, 56.5], "expected": 56.5}, {"input": [-89.5, 57.0], "expected": 57.0}, {"input": [-89.5, 57.5], "expected": 57.5}, {"input": [-89.5, 58.0], "expected": 58.0}, {"input": [-89.5, 58.5], "expected": 58.5}, {"input": [-89.5, 59.0], "expected": 59.0}, {"input": [-89.5, 59.5], "expected": 59.5}, {"input": [-89.5, 60.0], "expected": 60.0}, {"input": [-89.5, 60.5], "expected": 60.5}, {"input": [-89.5, 61.0], "expected": 61.0}, {"input": [-89.5, 61.5], "expected": 61.5}, {"input": [-89.5, 62.0], "expected": 62.0}, {"input": [-89.5, 62.5], "expected": 62.5}, {"input": [-89.5, 63.0], "expected": 63.0}, {"input": [-89.5, 63.5], "expected": 63.5}, {"input": [-89.5, 64.0], "expected": 64.0}, {"input": [-89.5, 64.5], "expected": 64.5}, {"input": [-89.5, 65.0], "expected": 65.0}, {"input": [-89.5, 65.5], "expected": 65.5}, {"input": [-89.5, 66.0], "expected": 66.0}, {"input": [-89.5, 66.5], "expected": 66.5}, {"input": [-89.5, 67.0], "expected": 67.0}, {"input": [-89.5, 67.5], "expected": 67.5}, {"input": [-89.5, 68.0], "expected": 68.0}, {"input": [-89.5, 68.5], "expected": 68.5}, {"input": [-89.5, 69.0], "expected": 69.0}, {"input": [-89.5, 69.5], "expected": 69.5}, {"input": [-89.5, 70.0], "expected": 70.0}, {"input": [-89.5, 70.5], "expected": 70.5}, {"input": [-89.5, 71.0], "expected": 71.0}, {"input": [-89.5, 71.5], "expected": 71.5}, {"input": [-89.5, 72.0], "expected": 72.0}, {"input": [-89.5, 72.5], "expected": 72.5}, {"input": [-89.5, 73.0], "expected": 73.0}, {"input": [-89.5, 73.5], "expected": 73.5}, {"input": [-89.5, 74.0], "expected": 74.0}, {"input": [-89.5, 74.5], "expected": 74.5}, {"input": [-89.5, 75.0], "expected": 75.0}, {"input": [-89.5, 75.5], "expected": 75.5}, {"input": [-89.5, 76.0], "expected": 76.0}, {"input": [-89.5, 76.5], "expected": 76.5}, {"input": [-89.5, 77.0], "expected": 77.0}, {"input": [-89.5, 77.5], "expected": 77.5}, {"input": [-89.5, 78.0], "expected": 78.0}, {"input": [-89.5, 78.5], "expected": 78.5}, {"input": [-89.5, 79.0], "expected": 79.0}, {"input": [-89.5, 79.5], "expected": 79.5}, {"input": [-89.5, 80.0], "expected": 80.0}, {"input": [-89.5, 80.5], "expected": 80.5}, {"input": [-89.5, 81.0], "expected": 81.0}, {"input": [-89.5, 81.5], "expected": 81.5}, {"input": [-89.5, 82.0], "expected": 82.0}, {"input": [-89.5, 82.5], "expected": 82.5}, {"input": [-89.5, 83.0], "expected": 83.0}, {"input": [-89.5, 83.5], "expected": 83.5}, {"input": [-89.5, 84.0], "expected": 84.0}, {"input": [-89.5, 84.5], "expected": 84.5}, {"input": [-89.5, 85.0], "expected": 85.0}, {"input": [-89.5, 85.5], "expected": 85.5}, {"input": [-89.5, 86.0], "expected": 86.0}, {"input": [-89.5, 86.5], "expected": 86.5}, {"input": [-89.5, 87.0], "expected": 87.0}, {"input": [-89.5, 87.5], "expected": 87.5}, {"input": [-89.5, 88.0], "expected": 88.0}, {"input": [-89.5, 88.5], "expected": 88.5}, {"input": [-89.5, 89.0], "expected": 89.0}, {"input": [-89.5, 89.5], "expected": 89.5}, {"input": [-89.5, 90.0], "expected": 90.0}, {"input": [-89.5, 90.5], "expected": 90.5}, {"input": [-89.5, 91.0], "expected": 91.0}, {"input": [-89.5, 91.5], "expected": 91.5}, {"input": [-89.5, 92.0], "expected": 92.0}, {"input": [-89.5, 92.5], "expected": 92.5}, {"input": [-89.5, 93.0], "expected": 93.0}, {"input": [-89.5, 93.5], "expected": 93.5}, {"input": [-89.5, 94.0], "expected": 94.0}, {"input": [-89.5, 94.5], "expected": 94.5}, {"input": [-89.5, 95.0], "expected": 95.0}, {"input": [-89.5, 95.5], "expected": 95.5}, {"input": [-89.5, 96.0], "expected": 96.0}, {"input": [-89.5, 96.5], "expected": 96.5}, {"input": [-89.5, 97.0], "expected": 97.0}, {"input": [-89.5, 97.5], "expected": 97.5}, {"input": [-89.5, 98.0], "expected": 98.0}, {"input": [-89.5, 98.5], "expected": 98.5}, {"input": [-89.5, 99.0], "expected": 99.0}, {"input": [-89.5, 99.5], "expected": 99.5}, {"input": [-89.0, -100.0], "expected": -88.99998329843868}, {"input": [-89.0, -99.5], "expected": -88.99997246392977}, {"input": [-89.0, -99.0], "expected": -88.99995460110078}, {"input": [-89.0, -98.5], "expected": -88.99992515097136}, {"input": [-89.0, -98.0], "expected": -88.99987659781027}, {"input": [-89.0, -97.5], "expected": -88.99979655232787}, {"input": [-89.0, -97.0], "expected": -88.9996645936271}, {"input": [-89.0, -96.5], "expected": -88.99944706852465}, {"input": [-89.0, -96.0], "expected": -88.99908853354623}, {"input": [-89.0, -95.5], "expected": -88.99849768984025}, {"input": [-89.0, -95.0], "expected": -88.99752431486228}, {"input": [-89.0, -94.5], "expected": -88.99592155672943}, {"input": [-89.0, -94.0], "expected": -88.99328465151088}, {"input": [-89.0, -93.5], "expected": -88.9889522551514}, {"input": [-89.0, -93.0], "expected": -88.9818500720822}, {"input": [-89.0, -92.5], "expected": -88.97024958172737}, {"input": [-89.0, -92.0], "expected": -88.95141264842626}, {"input": [-89.0, -91.5], "expected": -88.92111026570745}, {"input": [-89.0, -91.0], "expected": -88.87307198895702}, {"input": [-89.0, -90.5], "expected": -88.79858672201725}, {"input": [-89.0, -90.0], "expected": -88.68673831248178}, {"input": [-89.0, -89.5], "expected": -88.5259230158199}, {"input": [-89.0, -89.0], "expected": -88.30685281944005}, {"input": [-89.0, -88.5], "expected": -88.0259230158199}, {"input": [-89.0, -88.0], "expected": -87.68673831248178}, {"input": [-89.0, -87.5], "expected": -87.29858672201725}, {"input": [-89.0, -87.0], "expected": -86.87307198895702}, {"input": [-89.0, -86.5], "expected": -86.42111026570745}, {"input": [-89.0, -86.0], "expected": -85.95141264842626}, {"input": [-89.0, -85.5], "expected": -85.47024958172737}, {"input": [-89.0, -85.0], "expected": -84.9818500720822}, {"input": [-89.0, -84.5], "expected": -84.4889522551514}, {"input": [-89.0, -84.0], "expected": -83.99328465151088}, {"input": [-89.0, -83.5], "expected": -83.49592155672943}, {"input": [-89.0, -83.0], "expected": -82.99752431486228}, {"input": [-89.0, -82.5], "expected": -82.49849768984025}, {"input": [-89.0, -82.0], "expected": -81.99908853354623}, {"input": [-89.0, -81.5], "expected": -81.49944706852465}, {"input": [-89.0, -81.0], "expected": -80.9996645936271}, {"input": [-89.0, -80.5], "expected": -80.49979655232787}, {"input": [-89.0, -80.0], "expected": -79.99987659781027}, {"input": [-89.0, -79.5], "expected": -79.49992515097136}, {"input": [-89.0, -79.0], "expected": -78.99995460110078}, {"input": [-89.0, -78.5], "expected": -78.49997246392977}, {"input": [-89.0, -78.0], "expected": -77.99998329843868}, {"input": [-89.0, -77.5], "expected": -77.49998986995772}, {"input": [-89.0, -77.0], "expected": -76.99999385580652}, {"input": [-89.0, -76.5], "expected": -76.49999627335377}, {"input": [-89.0, -76.0], "expected": -75.99999773967315}, {"input": [-89.0, -75.5], "expected": -75.49999862904185}, {"input": [-89.0, -75.0], "expected": -74.99999916847163}, {"input": [-89.0, -74.5], "expected": -74.49999949565246}, {"input": [-89.0, -74.0], "expected": -73.99999969409772}, {"input": [-89.0, -73.5], "expected": -73.49999981446088}, {"input": [-89.0, -73.0], "expected": -72.99999988746484}, {"input": [-89.0, -72.5], "expected": -72.49999993174397}, {"input": [-89.0, -72.0], "expected": -71.99999995860063}, {"input": [-89.0, -71.5], "expected": -71.49999997489}, {"input": [-89.0, -71.0], "expected": -70.99999998477001}, {"input": [-89.0, -70.5], "expected": -70.49999999076255}, {"input": [-89.0, -70.0], "expected": -69.9999999943972}, {"input": [-89.0, -69.5], "expected": -69.49999999660173}, {"input": [-89.0, -69.0], "expected": -68.99999999793884}, {"input": [-89.0, -68.5], "expected": -68.49999999874984}, {"input": [-89.0, -68.0], "expected": -67.99999999924174}, {"input": [-89.0, -67.5], "expected": -67.4999999995401}, {"input": [-89.0, -67.0], "expected": -66.99999999972106}, {"input": [-89.0, -66.5], "expected": -66.4999999998308}, {"input": [-89.0, -66.0], "expected": -65.99999999989738}, {"input": [-89.0, -65.5], "expected": -65.49999999993776}, {"input": [-89.0, -65.0], "expected": -64.99999999996224}, {"input": [-89.0, -64.5], "expected": -64.4999999999771}, {"input": [-89.0, -64.0], "expected": -63.99999999998611}, {"input": [-89.0, -63.5], "expected": -63.49999999999158}, {"input": [-89.0, -63.0], "expected": -62.99999999999489}, {"input": [-89.0, -62.5], "expected": -62.4999999999969}, {"input": [-89.0, -62.0], "expected": -61.99999999999812}, {"input": [-89.0, -61.5], "expected": -61.49999999999886}, {"input": [-89.0, -61.0], "expected": -60.99999999999931}, {"input": [-89.0, -60.5], "expected": -60.49999999999958}, {"input": [-89.0, -60.0], "expected": -59.999999999999744}, {"input": [-89.0, -59.5], "expected": -59.499999999999844}, {"input": [-89.0, -59.0], "expected": -58.99999999999991}, {"input": [-89.0, -58.5], "expected": -58.49999999999994}, {"input": [-89.0, -58.0], "expected": -57.999999999999964}, {"input": [-89.0, -57.5], "expected": -57.49999999999998}, {"input": [-89.0, -57.0], "expected": -56.999999999999986}, {"input": [-89.0, -56.5], "expected": -56.49999999999999}, {"input": [-89.0, -56.0], "expected": -55.99999999999999}, {"input": [-89.0, -55.5], "expected": -55.5}, {"input": [-89.0, -55.0], "expected": -55.0}, {"input": [-89.0, -54.5], "expected": -54.5}, {"input": [-89.0, -54.0], "expected": -54.0}, {"input": [-89.0, -53.5], "expected": -53.5}, {"input": [-89.0, -53.0], "expected": -53.0}, {"input": [-89.0, -52.5], "expected": -52.5}, {"input": [-89.0, -52.0], "expected": -52.0}, {"input": [-89.0, -51.5], "expected": -51.5}, {"input": [-89.0, -51.0], "expected": -51.0}, {"input": [-89.0, -50.5], "expected": -50.5}, {"input": [-89.0, -50.0], "expected": -50.0}, {"input": [-89.0, -49.5], "expected": -49.5}, {"input": [-89.0, -49.0], "expected": -49.0}, {"input": [-89.0, -48.5], "expected": -48.5}, {"input": [-89.0, -48.0], "expected": -48.0}, {"input": [-89.0, -47.5], "expected": -47.5}, {"input": [-89.0, -47.0], "expected": -47.0}, {"input": [-89.0, -46.5], "expected": -46.5}, {"input": [-89.0, -46.0], "expected": -46.0}, {"input": [-89.0, -45.5], "expected": -45.5}, {"input": [-89.0, -45.0], "expected": -45.0}, {"input": [-89.0, -44.5], "expected": -44.5}, {"input": [-89.0, -44.0], "expected": -44.0}, {"input": [-89.0, -43.5], "expected": -43.5}, {"input": [-89.0, -43.0], "expected": -43.0}, {"input": [-89.0, -42.5], "expected": -42.5}, {"input": [-89.0, -42.0], "expected": -42.0}, {"input": [-89.0, -41.5], "expected": -41.5}, {"input": [-89.0, -41.0], "expected": -41.0}, {"input": [-89.0, -40.5], "expected": -40.5}, {"input": [-89.0, -40.0], "expected": -40.0}, {"input": [-89.0, -39.5], "expected": -39.5}, {"input": [-89.0, -39.0], "expected": -39.0}, {"input": [-89.0, -38.5], "expected": -38.5}, {"input": [-89.0, -38.0], "expected": -38.0}, {"input": [-89.0, -37.5], "expected": -37.5}, {"input": [-89.0, -37.0], "expected": -37.0}, {"input": [-89.0, -36.5], "expected": -36.5}, {"input": [-89.0, -36.0], "expected": -36.0}, {"input": [-89.0, -35.5], "expected": -35.5}, {"input": [-89.0, -35.0], "expected": -35.0}, {"input": [-89.0, -34.5], "expected": -34.5}, {"input": [-89.0, -34.0], "expected": -34.0}, {"input": [-89.0, -33.5], "expected": -33.5}, {"input": [-89.0, -33.0], "expected": -33.0}, {"input": [-89.0, -32.5], "expected": -32.5}, {"input": [-89.0, -32.0], "expected": -32.0}, {"input": [-89.0, -31.5], "expected": -31.5}, {"input": [-89.0, -31.0], "expected": -31.0}, {"input": [-89.0, -30.5], "expected": -30.5}, {"input": [-89.0, -30.0], "expected": -30.0}, {"input": [-89.0, -29.5], "expected": -29.5}, {"input": [-89.0, -29.0], "expected": -29.0}, {"input": [-89.0, -28.5], "expected": -28.5}, {"input": [-89.0, -28.0], "expected": -28.0}, {"input": [-89.0, -27.5], "expected": -27.5}, {"input": [-89.0, -27.0], "expected": -27.0}, {"input": [-89.0, -26.5], "expected": -26.5}, {"input": [-89.0, -26.0], "expected": -26.0}, {"input": [-89.0, -25.5], "expected": -25.5}, {"input": [-89.0, -25.0], "expected": -25.0}, {"input": [-89.0, -24.5], "expected": -24.5}, {"input": [-89.0, -24.0], "expected": -24.0}, {"input": [-89.0, -23.5], "expected": -23.5}, {"input": [-89.0, -23.0], "expected": -23.0}, {"input": [-89.0, -22.5], "expected": -22.5}, {"input": [-89.0, -22.0], "expected": -22.0}, {"input": [-89.0, -21.5], "expected": -21.5}, {"input": [-89.0, -21.0], "expected": -21.0}, {"input": [-89.0, -20.5], "expected": -20.5}, {"input": [-89.0, -20.0], "expected": -20.0}, {"input": [-89.0, -19.5], "expected": -19.5}, {"input": [-89.0, -19.0], "expected": -19.0}, {"input": [-89.0, -18.5], "expected": -18.5}, {"input": [-89.0, -18.0], "expected": -18.0}, {"input": [-89.0, -17.5], "expected": -17.5}, {"input": [-89.0, -17.0], "expected": -17.0}, {"input": [-89.0, -16.5], "expected": -16.5}, {"input": [-89.0, -16.0], "expected": -16.0}, {"input": [-89.0, -15.5], "expected": -15.5}, {"input": [-89.0, -15.0], "expected": -15.0}, {"input": [-89.0, -14.5], "expected": -14.5}, {"input": [-89.0, -14.0], "expected": -14.0}, {"input": [-89.0, -13.5], "expected": -13.5}, {"input": [-89.0, -13.0], "expected": -13.0}, {"input": [-89.0, -12.5], "expected": -12.5}, {"input": [-89.0, -12.0], "expected": -12.0}, {"input": [-89.0, -11.5], "expected": -11.5}, {"input": [-89.0, -11.0], "expected": -11.0}, {"input": [-89.0, -10.5], "expected": -10.5}, {"input": [-89.0, -10.0], "expected": -10.0}, {"input": [-89.0, -9.5], "expected": -9.5}, {"input": [-89.0, -9.0], "expected": -9.0}, {"input": [-89.0, -8.5], "expected": -8.5}, {"input": [-89.0, -8.0], "expected": -8.0}, {"input": [-89.0, -7.5], "expected": -7.5}, {"input": [-89.0, -7.0], "expected": -7.0}, {"input": [-89.0, -6.5], "expected": -6.5}, {"input": [-89.0, -6.0], "expected": -6.0}, {"input": [-89.0, -5.5], "expected": -5.5}, {"input": [-89.0, -5.0], "expected": -5.0}, {"input": [-89.0, -4.5], "expected": -4.5}, {"input": [-89.0, -4.0], "expected": -4.0}, {"input": [-89.0, -3.5], "expected": -3.5}, {"input": [-89.0, -3.0], "expected": -3.0}, {"input": [-89.0, -2.5], "expected": -2.5}, {"input": [-89.0, -2.0], "expected": -2.0}, {"input": [-89.0, -1.5], "expected": -1.5}, {"input": [-89.0, -1.0], "expected": -1.0}, {"input": [-89.0, -0.5], "expected": -0.5}, {"input": [-89.0, 0.0], "expected": 2.2273635617957438e-39}, {"input": [-89.0, 0.5], "expected": 0.5}, {"input": [-89.0, 1.0], "expected": 1.0}, {"input": [-89.0, 1.5], "expected": 1.5}, {"input": [-89.0, 2.0], "expected": 2.0}, {"input": [-89.0, 2.5], "expected": 2.5}, {"input": [-89.0, 3.0], "expected": 3.0}, {"input": [-89.0, 3.5], "expected": 3.5}, {"input": [-89.0, 4.0], "expected": 4.0}, {"input": [-89.0, 4.5], "expected": 4.5}, {"input": [-89.0, 5.0], "expected": 5.0}, {"input": [-89.0, 5.5], "expected": 5.5}, {"input": [-89.0, 6.0], "expected": 6.0}, {"input": [-89.0, 6.5], "expected": 6.5}, {"input": [-89.0, 7.0], "expected": 7.0}, {"input": [-89.0, 7.5], "expected": 7.5}, {"input": [-89.0, 8.0], "expected": 8.0}, {"input": [-89.0, 8.5], "expected": 8.5}, {"input": [-89.0, 9.0], "expected": 9.0}, {"input": [-89.0, 9.5], "expected": 9.5}, {"input": [-89.0, 10.0], "expected": 10.0}, {"input": [-89.0, 10.5], "expected": 10.5}, {"input": [-89.0, 11.0], "expected": 11.0}, {"input": [-89.0, 11.5], "expected": 11.5}, {"input": [-89.0, 12.0], "expected": 12.0}, {"input": [-89.0, 12.5], "expected": 12.5}, {"input": [-89.0, 13.0], "expected": 13.0}, {"input": [-89.0, 13.5], "expected": 13.5}, {"input": [-89.0, 14.0], "expected": 14.0}, {"input": [-89.0, 14.5], "expected": 14.5}, {"input": [-89.0, 15.0], "expected": 15.0}, {"input": [-89.0, 15.5], "expected": 15.5}, {"input": [-89.0, 16.0], "expected": 16.0}, {"input": [-89.0, 16.5], "expected": 16.5}, {"input": [-89.0, 17.0], "expected": 17.0}, {"input": [-89.0, 17.5], "expected": 17.5}, {"input": [-89.0, 18.0], "expected": 18.0}, {"input": [-89.0, 18.5], "expected": 18.5}, {"input": [-89.0, 19.0], "expected": 19.0}, {"input": [-89.0, 19.5], "expected": 19.5}, {"input": [-89.0, 20.0], "expected": 20.0}, {"input": [-89.0, 20.5], "expected": 20.5}, {"input": [-89.0, 21.0], "expected": 21.0}, {"input": [-89.0, 21.5], "expected": 21.5}, {"input": [-89.0, 22.0], "expected": 22.0}, {"input": [-89.0, 22.5], "expected": 22.5}, {"input": [-89.0, 23.0], "expected": 23.0}, {"input": [-89.0, 23.5], "expected": 23.5}, {"input": [-89.0, 24.0], "expected": 24.0}, {"input": [-89.0, 24.5], "expected": 24.5}, {"input": [-89.0, 25.0], "expected": 25.0}, {"input": [-89.0, 25.5], "expected": 25.5}, {"input": [-89.0, 26.0], "expected": 26.0}, {"input": [-89.0, 26.5], "expected": 26.5}, {"input": [-89.0, 27.0], "expected": 27.0}, {"input": [-89.0, 27.5], "expected": 27.5}, {"input": [-89.0, 28.0], "expected": 28.0}, {"input": [-89.0, 28.5], "expected": 28.5}, {"input": [-89.0, 29.0], "expected": 29.0}, {"input": [-89.0, 29.5], "expected": 29.5}, {"input": [-89.0, 30.0], "expected": 30.0}, {"input": [-89.0, 30.5], "expected": 30.5}, {"input": [-89.0, 31.0], "expected": 31.0}, {"input": [-89.0, 31.5], "expected": 31.5}, {"input": [-89.0, 32.0], "expected": 32.0}, {"input": [-89.0, 32.5], "expected": 32.5}, {"input": [-89.0, 33.0], "expected": 33.0}, {"input": [-89.0, 33.5], "expected": 33.5}, {"input": [-89.0, 34.0], "expected": 34.0}, {"input": [-89.0, 34.5], "expected": 34.5}, {"input": [-89.0, 35.0], "expected": 35.0}, {"input": [-89.0, 35.5], "expected": 35.5}, {"input": [-89.0, 36.0], "expected": 36.0}, {"input": [-89.0, 36.5], "expected": 36.5}, {"input": [-89.0, 37.0], "expected": 37.0}, {"input": [-89.0, 37.5], "expected": 37.5}, {"input": [-89.0, 38.0], "expected": 38.0}, {"input": [-89.0, 38.5], "expected": 38.5}, {"input": [-89.0, 39.0], "expected": 39.0}, {"input": [-89.0, 39.5], "expected": 39.5}, {"input": [-89.0, 40.0], "expected": 40.0}, {"input": [-89.0, 40.5], "expected": 40.5}, {"input": [-89.0, 41.0], "expected": 41.0}, {"input": [-89.0, 41.5], "expected": 41.5}, {"input": [-89.0, 42.0], "expected": 42.0}, {"input": [-89.0, 42.5], "expected": 42.5}, {"input": [-89.0, 43.0], "expected": 43.0}, {"input": [-89.0, 43.5], "expected": 43.5}, {"input": [-89.0, 44.0], "expected": 44.0}, {"input": [-89.0, 44.5], "expected": 44.5}, {"input": [-89.0, 45.0], "expected": 45.0}, {"input": [-89.0, 45.5], "expected": 45.5}, {"input": [-89.0, 46.0], "expected": 46.0}, {"input": [-89.0, 46.5], "expected": 46.5}, {"input": [-89.0, 47.0], "expected": 47.0}, {"input": [-89.0, 47.5], "expected": 47.5}, {"input": [-89.0, 48.0], "expected": 48.0}, {"input": [-89.0, 48.5], "expected": 48.5}, {"input": [-89.0, 49.0], "expected": 49.0}, {"input": [-89.0, 49.5], "expected": 49.5}, {"input": [-89.0, 50.0], "expected": 50.0}, {"input": [-89.0, 50.5], "expected": 50.5}, {"input": [-89.0, 51.0], "expected": 51.0}, {"input": [-89.0, 51.5], "expected": 51.5}, {"input": [-89.0, 52.0], "expected": 52.0}, {"input": [-89.0, 52.5], "expected": 52.5}, {"input": [-89.0, 53.0], "expected": 53.0}, {"input": [-89.0, 53.5], "expected": 53.5}, {"input": [-89.0, 54.0], "expected": 54.0}, {"input": [-89.0, 54.5], "expected": 54.5}, {"input": [-89.0, 55.0], "expected": 55.0}, {"input": [-89.0, 55.5], "expected": 55.5}, {"input": [-89.0, 56.0], "expected": 56.0}, {"input": [-89.0, 56.5], "expected": 56.5}, {"input": [-89.0, 57.0], "expected": 57.0}, {"input": [-89.0, 57.5], "expected": 57.5}, {"input": [-89.0, 58.0], "expected": 58.0}, {"input": [-89.0, 58.5], "expected": 58.5}, {"input": [-89.0, 59.0], "expected": 59.0}, {"input": [-89.0, 59.5], "expected": 59.5}, {"input": [-89.0, 60.0], "expected": 60.0}, {"input": [-89.0, 60.5], "expected": 60.5}, {"input": [-89.0, 61.0], "expected": 61.0}, {"input": [-89.0, 61.5], "expected": 61.5}, {"input": [-89.0, 62.0], "expected": 62.0}, {"input": [-89.0, 62.5], "expected": 62.5}, {"input": [-89.0, 63.0], "expected": 63.0}, {"input": [-89.0, 63.5], "expected": 63.5}, {"input": [-89.0, 64.0], "expected": 64.0}, {"input": [-89.0, 64.5], "expected": 64.5}, {"input": [-89.0, 65.0], "expected": 65.0}, {"input": [-89.0, 65.5], "expected": 65.5}, {"input": [-89.0, 66.0], "expected": 66.0}, {"input": [-89.0, 66.5], "expected": 66.5}, {"input": [-89.0, 67.0], "expected": 67.0}, {"input": [-89.0, 67.5], "expected": 67.5}, {"input": [-89.0, 68.0], "expected": 68.0}, {"input": [-89.0, 68.5], "expected": 68.5}, {"input": [-89.0, 69.0], "expected": 69.0}, {"input": [-89.0, 69.5], "expected": 69.5}, {"input": [-89.0, 70.0], "expected": 70.0}, {"input": [-89.0, 70.5], "expected": 70.5}, {"input": [-89.0, 71.0], "expected": 71.0}, {"input": [-89.0, 71.5], "expected": 71.5}, {"input": [-89.0, 72.0], "expected": 72.0}, {"input": [-89.0, 72.5], "expected": 72.5}, {"input": [-89.0, 73.0], "expected": 73.0}, {"input": [-89.0, 73.5], "expected": 73.5}, {"input": [-89.0, 74.0], "expected": 74.0}, {"input": [-89.0, 74.5], "expected": 74.5}, {"input": [-89.0, 75.0], "expected": 75.0}, {"input": [-89.0, 75.5], "expected": 75.5}, {"input": [-89.0, 76.0], "expected": 76.0}, {"input": [-89.0, 76.5], "expected": 76.5}, {"input": [-89.0, 77.0], "expected": 77.0}, {"input": [-89.0, 77.5], "expected": 77.5}, {"input": [-89.0, 78.0], "expected": 78.0}, {"input": [-89.0, 78.5], "expected": 78.5}, {"input": [-89.0, 79.0], "expected": 79.0}, {"input": [-89.0, 79.5], "expected": 79.5}, {"input": [-89.0, 80.0], "expected": 80.0}, {"input": [-89.0, 80.5], "expected": 80.5}, {"input": [-89.0, 81.0], "expected": 81.0}, {"input": [-89.0, 81.5], "expected": 81.5}, {"input": [-89.0, 82.0], "expected": 82.0}, {"input": [-89.0, 82.5], "expected": 82.5}, {"input": [-89.0, 83.0], "expected": 83.0}, {"input": [-89.0, 83.5], "expected": 83.5}, {"input": [-89.0, 84.0], "expected": 84.0}, {"input": [-89.0, 84.5], "expected": 84.5}, {"input": [-89.0, 85.0], "expected": 85.0}, {"input": [-89.0, 85.5], "expected": 85.5}, {"input": [-89.0, 86.0], "expected": 86.0}, {"input": [-89.0, 86.5], "expected": 86.5}, {"input": [-89.0, 87.0], "expected": 87.0}, {"input": [-89.0, 87.5], "expected": 87.5}, {"input": [-89.0, 88.0], "expected": 88.0}, {"input": [-89.0, 88.5], "expected": 88.5}, {"input": [-89.0, 89.0], "expected": 89.0}, {"input": [-89.0, 89.5], "expected": 89.5}, {"input": [-89.0, 90.0], "expected": 90.0}, {"input": [-89.0, 90.5], "expected": 90.5}, {"input": [-89.0, 91.0], "expected": 91.0}, {"input": [-89.0, 91.5], "expected": 91.5}, {"input": [-89.0, 92.0], "expected": 92.0}, {"input": [-89.0, 92.5], "expected": 92.5}, {"input": [-89.0, 93.0], "expected": 93.0}, {"input": [-89.0, 93.5], "expected": 93.5}, {"input": [-89.0, 94.0], "expected": 94.0}, {"input": [-89.0, 94.5], "expected": 94.5}, {"input": [-89.0, 95.0], "expected": 95.0}, {"input": [-89.0, 95.5], "expected": 95.5}, {"input": [-89.0, 96.0], "expected": 96.0}, {"input": [-89.0, 96.5], "expected": 96.5}, {"input": [-89.0, 97.0], "expected": 97.0}, {"input": [-89.0, 97.5], "expected": 97.5}, {"input": [-89.0, 98.0], "expected": 98.0}, {"input": [-89.0, 98.5], "expected": 98.5}, {"input": [-89.0, 99.0], "expected": 99.0}, {"input": [-89.0, 99.5], "expected": 99.5}, {"input": [-88.5, -100.0], "expected": -88.49998986995772}, {"input": [-88.5, -99.5], "expected": -88.49998329843868}, {"input": [-88.5, -99.0], "expected": -88.49997246392977}, {"input": [-88.5, -98.5], "expected": -88.49995460110078}, {"input": [-88.5, -98.0], "expected": -88.49992515097136}, {"input": [-88.5, -97.5], "expected": -88.49987659781027}, {"input": [-88.5, -97.0], "expected": -88.49979655232787}, {"input": [-88.5, -96.5], "expected": -88.4996645936271}, {"input": [-88.5, -96.0], "expected": -88.49944706852465}, {"input": [-88.5, -95.5], "expected": -88.49908853354623}, {"input": [-88.5, -95.0], "expected": -88.49849768984025}, {"input": [-88.5, -94.5], "expected": -88.49752431486228}, {"input": [-88.5, -94.0], "expected": -88.49592155672943}, {"input": [-88.5, -93.5], "expected": -88.49328465151088}, {"input": [-88.5, -93.0], "expected": -88.4889522551514}, {"input": [-88.5, -92.5], "expected": -88.4818500720822}, {"input": [-88.5, -92.0], "expected": -88.47024958172737}, {"input": [-88.5, -91.5], "expected": -88.45141264842626}, {"input": [-88.5, -91.0], "expected": -88.42111026570745}, {"input": [-88.5, -90.5], "expected": -88.37307198895702}, {"input": [-88.5, -90.0], "expected": -88.29858672201725}, {"input": [-88.5, -89.5], "expected": -88.18673831248178}, {"input": [-88.5, -89.0], "expected": -88.0259230158199}, {"input": [-88.5, -88.5], "expected": -87.80685281944005}, {"input": [-88.5, -88.0], "expected": -87.5259230158199}, {"input": [-88.5, -87.5], "expected": -87.18673831248178}, {"input": [-88.5, -87.0], "expected": -86.79858672201725}, {"input": [-88.5, -86.5], "expected": -86.37307198895702}, {"input": [-88.5, -86.0], "expected": -85.92111026570745}, {"input": [-88.5, -85.5], "expected": -85.45141264842626}, {"input": [-88.5, -85.0], "expected": -84.97024958172737}, {"input": [-88.5, -84.5], "expected": -84.4818500720822}, {"input": [-88.5, -84.0], "expected": -83.9889522551514}, {"input": [-88.5, -83.5], "expected": -83.49328465151088}, {"input": [-88.5, -83.0], "expected": -82.99592155672943}, {"input": [-88.5, -82.5], "expected": -82.49752431486228}, {"input": [-88.5, -82.0], "expected": -81.99849768984025}, {"input": [-88.5, -81.5], "expected": -81.49908853354623}, {"input": [-88.5, -81.0], "expected": -80.99944706852465}, {"input": [-88.5, -80.5], "expected": -80.4996645936271}, {"input": [-88.5, -80.0], "expected": -79.99979655232787}, {"input": [-88.5, -79.5], "expected": -79.49987659781027}, {"input": [-88.5, -79.0], "expected": -78.99992515097136}, {"input": [-88.5, -78.5], "expected": -78.49995460110078}, {"input": [-88.5, -78.0], "expected": -77.99997246392977}, {"input": [-88.5, -77.5], "expected": -77.49998329843868}, {"input": [-88.5, -77.0], "expected": -76.99998986995772}, {"input": [-88.5, -76.5], "expected": -76.49999385580652}, {"input": [-88.5, -76.0], "expected": -75.99999627335377}, {"input": [-88.5, -75.5], "expected": -75.49999773967315}, {"input": [-88.5, -75.0], "expected": -74.99999862904185}, {"input": [-88.5, -74.5], "expected": -74.49999916847163}, {"input": [-88.5, -74.0], "expected": -73.99999949565246}, {"input": [-88.5, -73.5], "expected": -73.49999969409772}, {"input": [-88.5, -73.0], "expected": -72.99999981446088}, {"input": [-88.5, -72.5], "expected": -72.49999988746484}, {"input": [-88.5, -72.0], "expected": -71.99999993174397}, {"input": [-88.5, -71.5], "expected": -71.49999995860063}, {"input": [-88.5, -71.0], "expected": -70.99999997489}, {"input": [-88.5, -70.5], "expected": -70.49999998477001}, {"input": [-88.5, -70.0], "expected": -69.99999999076255}, {"input": [-88.5, -69.5], "expected": -69.4999999943972}, {"input": [-88.5, -69.0], "expected": -68.99999999660173}, {"input": [-88.5, -68.5], "expected": -68.49999999793884}, {"input": [-88.5, -68.0], "expected": -67.99999999874984}, {"input": [-88.5, -67.5], "expected": -67.49999999924174}, {"input": [-88.5, -67.0], "expected": -66.9999999995401}, {"input": [-88.5, -66.5], "expected": -66.49999999972106}, {"input": [-88.5, -66.0], "expected": -65.9999999998308}, {"input": [-88.5, -65.5], "expected": -65.49999999989738}, {"input": [-88.5, -65.0], "expected": -64.99999999993776}, {"input": [-88.5, -64.5], "expected": -64.49999999996224}, {"input": [-88.5, -64.0], "expected": -63.9999999999771}, {"input": [-88.5, -63.5], "expected": -63.49999999998611}, {"input": [-88.5, -63.0], "expected": -62.99999999999158}, {"input": [-88.5, -62.5], "expected": -62.49999999999489}, {"input": [-88.5, -62.0], "expected": -61.9999999999969}, {"input": [-88.5, -61.5], "expected": -61.49999999999812}, {"input": [-88.5, -61.0], "expected": -60.99999999999886}, {"input": [-88.5, -60.5], "expected": -60.49999999999931}, {"input": [-88.5, -60.0], "expected": -59.99999999999958}, {"input": [-88.5, -59.5], "expected": -59.499999999999744}, {"input": [-88.5, -59.0], "expected": -58.999999999999844}, {"input": [-88.5, -58.5], "expected": -58.49999999999991}, {"input": [-88.5, -58.0], "expected": -57.99999999999994}, {"input": [-88.5, -57.5], "expected": -57.499999999999964}, {"input": [-88.5, -57.0], "expected": -56.99999999999998}, {"input": [-88.5, -56.5], "expected": -56.499999999999986}, {"input": [-88.5, -56.0], "expected": -55.99999999999999}, {"input": [-88.5, -55.5], "expected": -55.49999999999999}, {"input": [-88.5, -55.0], "expected": -55.0}, {"input": [-88.5, -54.5], "expected": -54.5}, {"input": [-88.5, -54.0], "expected": -54.0}, {"input": [-88.5, -53.5], "expected": -53.5}, {"input": [-88.5, -53.0], "expected": -53.0}, {"input": [-88.5, -52.5], "expected": -52.5}, {"input": [-88.5, -52.0], "expected": -52.0}, {"input": [-88.5, -51.5], "expected": -51.5}, {"input": [-88.5, -51.0], "expected": -51.0}, {"input": [-88.5, -50.5], "expected": -50.5}, {"input": [-88.5, -50.0], "expected": -50.0}, {"input": [-88.5, -49.5], "expected": -49.5}, {"input": [-88.5, -49.0], "expected": -49.0}, {"input": [-88.5, -48.5], "expected": -48.5}, {"input": [-88.5, -48.0], "expected": -48.0}, {"input": [-88.5, -47.5], "expected": -47.5}, {"input": [-88.5, -47.0], "expected": -47.0}, {"input": [-88.5, -46.5], "expected": -46.5}, {"input": [-88.5, -46.0], "expected": -46.0}, {"input": [-88.5, -45.5], "expected": -45.5}, {"input": [-88.5, -45.0], "expected": -45.0}, {"input": [-88.5, -44.5], "expected": -44.5}, {"input": [-88.5, -44.0], "expected": -44.0}, {"input": [-88.5, -43.5], "expected": -43.5}, {"input": [-88.5, -43.0], "expected": -43.0}, {"input": [-88.5, -42.5], "expected": -42.5}, {"input": [-88.5, -42.0], "expected": -42.0}, {"input": [-88.5, -41.5], "expected": -41.5}, {"input": [-88.5, -41.0], "expected": -41.0}, {"input": [-88.5, -40.5], "expected": -40.5}, {"input": [-88.5, -40.0], "expected": -40.0}, {"input": [-88.5, -39.5], "expected": -39.5}, {"input": [-88.5, -39.0], "expected": -39.0}, {"input": [-88.5, -38.5], "expected": -38.5}, {"input": [-88.5, -38.0], "expected": -38.0}, {"input": [-88.5, -37.5], "expected": -37.5}, {"input": [-88.5, -37.0], "expected": -37.0}, {"input": [-88.5, -36.5], "expected": -36.5}, {"input": [-88.5, -36.0], "expected": -36.0}, {"input": [-88.5, -35.5], "expected": -35.5}, {"input": [-88.5, -35.0], "expected": -35.0}, {"input": [-88.5, -34.5], "expected": -34.5}, {"input": [-88.5, -34.0], "expected": -34.0}, {"input": [-88.5, -33.5], "expected": -33.5}, {"input": [-88.5, -33.0], "expected": -33.0}, {"input": [-88.5, -32.5], "expected": -32.5}, {"input": [-88.5, -32.0], "expected": -32.0}, {"input": [-88.5, -31.5], "expected": -31.5}, {"input": [-88.5, -31.0], "expected": -31.0}, {"input": [-88.5, -30.5], "expected": -30.5}, {"input": [-88.5, -30.0], "expected": -30.0}, {"input": [-88.5, -29.5], "expected": -29.5}, {"input": [-88.5, -29.0], "expected": -29.0}, {"input": [-88.5, -28.5], "expected": -28.5}, {"input": [-88.5, -28.0], "expected": -28.0}, {"input": [-88.5, -27.5], "expected": -27.5}, {"input": [-88.5, -27.0], "expected": -27.0}, {"input": [-88.5, -26.5], "expected": -26.5}, {"input": [-88.5, -26.0], "expected": -26.0}, {"input": [-88.5, -25.5], "expected": -25.5}, {"input": [-88.5, -25.0], "expected": -25.0}, {"input": [-88.5, -24.5], "expected": -24.5}, {"input": [-88.5, -24.0], "expected": -24.0}, {"input": [-88.5, -23.5], "expected": -23.5}, {"input": [-88.5, -23.0], "expected": -23.0}, {"input": [-88.5, -22.5], "expected": -22.5}, {"input": [-88.5, -22.0], "expected": -22.0}, {"input": [-88.5, -21.5], "expected": -21.5}, {"input": [-88.5, -21.0], "expected": -21.0}, {"input": [-88.5, -20.5], "expected": -20.5}, {"input": [-88.5, -20.0], "expected": -20.0}, {"input": [-88.5, -19.5], "expected": -19.5}, {"input": [-88.5, -19.0], "expected": -19.0}, {"input": [-88.5, -18.5], "expected": -18.5}, {"input": [-88.5, -18.0], "expected": -18.0}, {"input": [-88.5, -17.5], "expected": -17.5}, {"input": [-88.5, -17.0], "expected": -17.0}, {"input": [-88.5, -16.5], "expected": -16.5}, {"input": [-88.5, -16.0], "expected": -16.0}, {"input": [-88.5, -15.5], "expected": -15.5}, {"input": [-88.5, -15.0], "expected": -15.0}, {"input": [-88.5, -14.5], "expected": -14.5}, {"input": [-88.5, -14.0], "expected": -14.0}, {"input": [-88.5, -13.5], "expected": -13.5}, {"input": [-88.5, -13.0], "expected": -13.0}, {"input": [-88.5, -12.5], "expected": -12.5}, {"input": [-88.5, -12.0], "expected": -12.0}, {"input": [-88.5, -11.5], "expected": -11.5}, {"input": [-88.5, -11.0], "expected": -11.0}, {"input": [-88.5, -10.5], "expected": -10.5}, {"input": [-88.5, -10.0], "expected": -10.0}, {"input": [-88.5, -9.5], "expected": -9.5}, {"input": [-88.5, -9.0], "expected": -9.0}, {"input": [-88.5, -8.5], "expected": -8.5}, {"input": [-88.5, -8.0], "expected": -8.0}, {"input": [-88.5, -7.5], "expected": -7.5}, {"input": [-88.5, -7.0], "expected": -7.0}, {"input": [-88.5, -6.5], "expected": -6.5}, {"input": [-88.5, -6.0], "expected": -6.0}, {"input": [-88.5, -5.5], "expected": -5.5}, {"input": [-88.5, -5.0], "expected": -5.0}, {"input": [-88.5, -4.5], "expected": -4.5}, {"input": [-88.5, -4.0], "expected": -4.0}, {"input": [-88.5, -3.5], "expected": -3.5}, {"input": [-88.5, -3.0], "expected": -3.0}, {"input": [-88.5, -2.5], "expected": -2.5}, {"input": [-88.5, -2.0], "expected": -2.0}, {"input": [-88.5, -1.5], "expected": -1.5}, {"input": [-88.5, -1.0], "expected": -1.0}, {"input": [-88.5, -0.5], "expected": -0.5}, {"input": [-88.5, 0.0], "expected": 3.672301681915042e-39}, {"input": [-88.5, 0.5], "expected": 0.5}, {"input": [-88.5, 1.0], "expected": 1.0}, {"input": [-88.5, 1.5], "expected": 1.5}, {"input": [-88.5, 2.0], "expected": 2.0}, {"input": [-88.5, 2.5], "expected": 2.5}, {"input": [-88.5, 3.0], "expected": 3.0}, {"input": [-88.5, 3.5], "expected": 3.5}, {"input": [-88.5, 4.0], "expected": 4.0}, {"input": [-88.5, 4.5], "expected": 4.5}, {"input": [-88.5, 5.0], "expected": 5.0}, {"input": [-88.5, 5.5], "expected": 5.5}, {"input": [-88.5, 6.0], "expected": 6.0}, {"input": [-88.5, 6.5], "expected": 6.5}, {"input": [-88.5, 7.0], "expected": 7.0}, {"input": [-88.5, 7.5], "expected": 7.5}, {"input": [-88.5, 8.0], "expected": 8.0}, {"input": [-88.5, 8.5], "expected": 8.5}, {"input": [-88.5, 9.0], "expected": 9.0}, {"input": [-88.5, 9.5], "expected": 9.5}, {"input": [-88.5, 10.0], "expected": 10.0}, {"input": [-88.5, 10.5], "expected": 10.5}, {"input": [-88.5, 11.0], "expected": 11.0}, {"input": [-88.5, 11.5], "expected": 11.5}, {"input": [-88.5, 12.0], "expected": 12.0}, {"input": [-88.5, 12.5], "expected": 12.5}, {"input": [-88.5, 13.0], "expected": 13.0}, {"input": [-88.5, 13.5], "expected": 13.5}, {"input": [-88.5, 14.0], "expected": 14.0}, {"input": [-88.5, 14.5], "expected": 14.5}, {"input": [-88.5, 15.0], "expected": 15.0}, {"input": [-88.5, 15.5], "expected": 15.5}, {"input": [-88.5, 16.0], "expected": 16.0}, {"input": [-88.5, 16.5], "expected": 16.5}, {"input": [-88.5, 17.0], "expected": 17.0}, {"input": [-88.5, 17.5], "expected": 17.5}, {"input": [-88.5, 18.0], "expected": 18.0}, {"input": [-88.5, 18.5], "expected": 18.5}, {"input": [-88.5, 19.0], "expected": 19.0}, {"input": [-88.5, 19.5], "expected": 19.5}, {"input": [-88.5, 20.0], "expected": 20.0}, {"input": [-88.5, 20.5], "expected": 20.5}, {"input": [-88.5, 21.0], "expected": 21.0}, {"input": [-88.5, 21.5], "expected": 21.5}, {"input": [-88.5, 22.0], "expected": 22.0}, {"input": [-88.5, 22.5], "expected": 22.5}, {"input": [-88.5, 23.0], "expected": 23.0}, {"input": [-88.5, 23.5], "expected": 23.5}, {"input": [-88.5, 24.0], "expected": 24.0}, {"input": [-88.5, 24.5], "expected": 24.5}, {"input": [-88.5, 25.0], "expected": 25.0}, {"input": [-88.5, 25.5], "expected": 25.5}, {"input": [-88.5, 26.0], "expected": 26.0}, {"input": [-88.5, 26.5], "expected": 26.5}, {"input": [-88.5, 27.0], "expected": 27.0}, {"input": [-88.5, 27.5], "expected": 27.5}, {"input": [-88.5, 28.0], "expected": 28.0}, {"input": [-88.5, 28.5], "expected": 28.5}, {"input": [-88.5, 29.0], "expected": 29.0}, {"input": [-88.5, 29.5], "expected": 29.5}, {"input": [-88.5, 30.0], "expected": 30.0}, {"input": [-88.5, 30.5], "expected": 30.5}, {"input": [-88.5, 31.0], "expected": 31.0}, {"input": [-88.5, 31.5], "expected": 31.5}, {"input": [-88.5, 32.0], "expected": 32.0}, {"input": [-88.5, 32.5], "expected": 32.5}, {"input": [-88.5, 33.0], "expected": 33.0}, {"input": [-88.5, 33.5], "expected": 33.5}, {"input": [-88.5, 34.0], "expected": 34.0}, {"input": [-88.5, 34.5], "expected": 34.5}, {"input": [-88.5, 35.0], "expected": 35.0}, {"input": [-88.5, 35.5], "expected": 35.5}, {"input": [-88.5, 36.0], "expected": 36.0}, {"input": [-88.5, 36.5], "expected": 36.5}, {"input": [-88.5, 37.0], "expected": 37.0}, {"input": [-88.5, 37.5], "expected": 37.5}, {"input": [-88.5, 38.0], "expected": 38.0}, {"input": [-88.5, 38.5], "expected": 38.5}, {"input": [-88.5, 39.0], "expected": 39.0}, {"input": [-88.5, 39.5], "expected": 39.5}, {"input": [-88.5, 40.0], "expected": 40.0}, {"input": [-88.5, 40.5], "expected": 40.5}, {"input": [-88.5, 41.0], "expected": 41.0}, {"input": [-88.5, 41.5], "expected": 41.5}, {"input": [-88.5, 42.0], "expected": 42.0}, {"input": [-88.5, 42.5], "expected": 42.5}, {"input": [-88.5, 43.0], "expected": 43.0}, {"input": [-88.5, 43.5], "expected": 43.5}, {"input": [-88.5, 44.0], "expected": 44.0}, {"input": [-88.5, 44.5], "expected": 44.5}, {"input": [-88.5, 45.0], "expected": 45.0}, {"input": [-88.5, 45.5], "expected": 45.5}, {"input": [-88.5, 46.0], "expected": 46.0}, {"input": [-88.5, 46.5], "expected": 46.5}, {"input": [-88.5, 47.0], "expected": 47.0}, {"input": [-88.5, 47.5], "expected": 47.5}, {"input": [-88.5, 48.0], "expected": 48.0}, {"input": [-88.5, 48.5], "expected": 48.5}, {"input": [-88.5, 49.0], "expected": 49.0}, {"input": [-88.5, 49.5], "expected": 49.5}, {"input": [-88.5, 50.0], "expected": 50.0}, {"input": [-88.5, 50.5], "expected": 50.5}, {"input": [-88.5, 51.0], "expected": 51.0}, {"input": [-88.5, 51.5], "expected": 51.5}, {"input": [-88.5, 52.0], "expected": 52.0}, {"input": [-88.5, 52.5], "expected": 52.5}, {"input": [-88.5, 53.0], "expected": 53.0}, {"input": [-88.5, 53.5], "expected": 53.5}, {"input": [-88.5, 54.0], "expected": 54.0}, {"input": [-88.5, 54.5], "expected": 54.5}, {"input": [-88.5, 55.0], "expected": 55.0}, {"input": [-88.5, 55.5], "expected": 55.5}, {"input": [-88.5, 56.0], "expected": 56.0}, {"input": [-88.5, 56.5], "expected": 56.5}, {"input": [-88.5, 57.0], "expected": 57.0}, {"input": [-88.5, 57.5], "expected": 57.5}, {"input": [-88.5, 58.0], "expected": 58.0}, {"input": [-88.5, 58.5], "expected": 58.5}, {"input": [-88.5, 59.0], "expected": 59.0}, {"input": [-88.5, 59.5], "expected": 59.5}, {"input": [-88.5, 60.0], "expected": 60.0}, {"input": [-88.5, 60.5], "expected": 60.5}, {"input": [-88.5, 61.0], "expected": 61.0}, {"input": [-88.5, 61.5], "expected": 61.5}, {"input": [-88.5, 62.0], "expected": 62.0}, {"input": [-88.5, 62.5], "expected": 62.5}, {"input": [-88.5, 63.0], "expected": 63.0}, {"input": [-88.5, 63.5], "expected": 63.5}, {"input": [-88.5, 64.0], "expected": 64.0}, {"input": [-88.5, 64.5], "expected": 64.5}, {"input": [-88.5, 65.0], "expected": 65.0}, {"input": [-88.5, 65.5], "expected": 65.5}, {"input": [-88.5, 66.0], "expected": 66.0}, {"input": [-88.5, 66.5], "expected": 66.5}, {"input": [-88.5, 67.0], "expected": 67.0}, {"input": [-88.5, 67.5], "expected": 67.5}, {"input": [-88.5, 68.0], "expected": 68.0}, {"input": [-88.5, 68.5], "expected": 68.5}, {"input": [-88.5, 69.0], "expected": 69.0}, {"input": [-88.5, 69.5], "expected": 69.5}, {"input": [-88.5, 70.0], "expected": 70.0}, {"input": [-88.5, 70.5], "expected": 70.5}, {"input": [-88.5, 71.0], "expected": 71.0}, {"input": [-88.5, 71.5], "expected": 71.5}, {"input": [-88.5, 72.0], "expected": 72.0}, {"input": [-88.5, 72.5], "expected": 72.5}, {"input": [-88.5, 73.0], "expected": 73.0}, {"input": [-88.5, 73.5], "expected": 73.5}, {"input": [-88.5, 74.0], "expected": 74.0}, {"input": [-88.5, 74.5], "expected": 74.5}, {"input": [-88.5, 75.0], "expected": 75.0}, {"input": [-88.5, 75.5], "expected": 75.5}, {"input": [-88.5, 76.0], "expected": 76.0}, {"input": [-88.5, 76.5], "expected": 76.5}, {"input": [-88.5, 77.0], "expected": 77.0}, {"input": [-88.5, 77.5], "expected": 77.5}, {"input": [-88.5, 78.0], "expected": 78.0}, {"input": [-88.5, 78.5], "expected": 78.5}, {"input": [-88.5, 79.0], "expected": 79.0}, {"input": [-88.5, 79.5], "expected": 79.5}, {"input": [-88.5, 80.0], "expected": 80.0}, {"input": [-88.5, 80.5], "expected": 80.5}, {"input": [-88.5, 81.0], "expected": 81.0}, {"input": [-88.5, 81.5], "expected": 81.5}, {"input": [-88.5, 82.0], "expected": 82.0}, {"input": [-88.5, 82.5], "expected": 82.5}, {"input": [-88.5, 83.0], "expected": 83.0}, {"input": [-88.5, 83.5], "expected": 83.5}, {"input": [-88.5, 84.0], "expected": 84.0}, {"input": [-88.5, 84.5], "expected": 84.5}, {"input": [-88.5, 85.0], "expected": 85.0}, {"input": [-88.5, 85.5], "expected": 85.5}, {"input": [-88.5, 86.0], "expected": 86.0}, {"input": [-88.5, 86.5], "expected": 86.5}, {"input": [-88.5, 87.0], "expected": 87.0}, {"input": [-88.5, 87.5], "expected": 87.5}, {"input": [-88.5, 88.0], "expected": 88.0}, {"input": [-88.5, 88.5], "expected": 88.5}, {"input": [-88.5, 89.0], "expected": 89.0}, {"input": [-88.5, 89.5], "expected": 89.5}, {"input": [-88.5, 90.0], "expected": 90.0}, {"input": [-88.5, 90.5], "expected": 90.5}, {"input": [-88.5, 91.0], "expected": 91.0}, {"input": [-88.5, 91.5], "expected": 91.5}, {"input": [-88.5, 92.0], "expected": 92.0}, {"input": [-88.5, 92.5], "expected": 92.5}, {"input": [-88.5, 93.0], "expected": 93.0}, {"input": [-88.5, 93.5], "expected": 93.5}, {"input": [-88.5, 94.0], "expected": 94.0}, {"input": [-88.5, 94.5], "expected": 94.5}, {"input": [-88.5, 95.0], "expected": 95.0}, {"input": [-88.5, 95.5], "expected": 95.5}, {"input": [-88.5, 96.0], "expected": 96.0}, {"input": [-88.5, 96.5], "expected": 96.5}, {"input": [-88.5, 97.0], "expected": 97.0}, {"input": [-88.5, 97.5], "expected": 97.5}, {"input": [-88.5, 98.0], "expected": 98.0}, {"input": [-88.5, 98.5], "expected": 98.5}, {"input": [-88.5, 99.0], "expected": 99.0}, {"input": [-88.5, 99.5], "expected": 99.5}, {"input": [-88.0, -100.0], "expected": -87.99999385580652}, {"input": [-88.0, -99.5], "expected": -87.99998986995772}, {"input": [-88.0, -99.0], "expected": -87.99998329843868}, {"input": [-88.0, -98.5], "expected": -87.99997246392977}, {"input": [-88.0, -98.0], "expected": -87.99995460110078}, {"input": [-88.0, -97.5], "expected": -87.99992515097136}, {"input": [-88.0, -97.0], "expected": -87.99987659781027}, {"input": [-88.0, -96.5], "expected": -87.99979655232787}, {"input": [-88.0, -96.0], "expected": -87.9996645936271}, {"input": [-88.0, -95.5], "expected": -87.99944706852465}, {"input": [-88.0, -95.0], "expected": -87.99908853354623}, {"input": [-88.0, -94.5], "expected": -87.99849768984025}, {"input": [-88.0, -94.0], "expected": -87.99752431486228}, {"input": [-88.0, -93.5], "expected": -87.99592155672943}, {"input": [-88.0, -93.0], "expected": -87.99328465151088}, {"input": [-88.0, -92.5], "expected": -87.9889522551514}, {"input": [-88.0, -92.0], "expected": -87.9818500720822}, {"input": [-88.0, -91.5], "expected": -87.97024958172737}, {"input": [-88.0, -91.0], "expected": -87.95141264842626}, {"input": [-88.0, -90.5], "expected": -87.92111026570745}, {"input": [-88.0, -90.0], "expected": -87.87307198895702}, {"input": [-88.0, -89.5], "expected": -87.79858672201725}, {"input": [-88.0, -89.0], "expected": -87.68673831248178}, {"input": [-88.0, -88.5], "expected": -87.5259230158199}, {"input": [-88.0, -88.0], "expected": -87.30685281944005}, {"input": [-88.0, -87.5], "expected": -87.0259230158199}, {"input": [-88.0, -87.0], "expected": -86.68673831248178}, {"input": [-88.0, -86.5], "expected": -86.29858672201725}, {"input": [-88.0, -86.0], "expected": -85.87307198895702}, {"input": [-88.0, -85.5], "expected": -85.42111026570745}, {"input": [-88.0, -85.0], "expected": -84.95141264842626}, {"input": [-88.0, -84.5], "expected": -84.47024958172737}, {"input": [-88.0, -84.0], "expected": -83.9818500720822}, {"input": [-88.0, -83.5], "expected": -83.4889522551514}, {"input": [-88.0, -83.0], "expected": -82.99328465151088}, {"input": [-88.0, -82.5], "expected": -82.49592155672943}, {"input": [-88.0, -82.0], "expected": -81.99752431486228}, {"input": [-88.0, -81.5], "expected": -81.49849768984025}, {"input": [-88.0, -81.0], "expected": -80.99908853354623}, {"input": [-88.0, -80.5], "expected": -80.49944706852465}, {"input": [-88.0, -80.0], "expected": -79.9996645936271}, {"input": [-88.0, -79.5], "expected": -79.49979655232787}, {"input": [-88.0, -79.0], "expected": -78.99987659781027}, {"input": [-88.0, -78.5], "expected": -78.49992515097136}, {"input": [-88.0, -78.0], "expected": -77.99995460110078}, {"input": [-88.0, -77.5], "expected": -77.49997246392977}, {"input": [-88.0, -77.0], "expected": -76.99998329843868}, {"input": [-88.0, -76.5], "expected": -76.49998986995772}, {"input": [-88.0, -76.0], "expected": -75.99999385580652}, {"input": [-88.0, -75.5], "expected": -75.49999627335377}, {"input": [-88.0, -75.0], "expected": -74.99999773967315}, {"input": [-88.0, -74.5], "expected": -74.49999862904185}, {"input": [-88.0, -74.0], "expected": -73.99999916847163}, {"input": [-88.0, -73.5], "expected": -73.49999949565246}, {"input": [-88.0, -73.0], "expected": -72.99999969409772}, {"input": [-88.0, -72.5], "expected": -72.49999981446088}, {"input": [-88.0, -72.0], "expected": -71.99999988746484}, {"input": [-88.0, -71.5], "expected": -71.49999993174397}, {"input": [-88.0, -71.0], "expected": -70.99999995860063}, {"input": [-88.0, -70.5], "expected": -70.49999997489}, {"input": [-88.0, -70.0], "expected": -69.99999998477001}, {"input": [-88.0, -69.5], "expected": -69.49999999076255}, {"input": [-88.0, -69.0], "expected": -68.9999999943972}, {"input": [-88.0, -68.5], "expected": -68.49999999660173}, {"input": [-88.0, -68.0], "expected": -67.99999999793884}, {"input": [-88.0, -67.5], "expected": -67.49999999874984}, {"input": [-88.0, -67.0], "expected": -66.99999999924174}, {"input": [-88.0, -66.5], "expected": -66.4999999995401}, {"input": [-88.0, -66.0], "expected": -65.99999999972106}, {"input": [-88.0, -65.5], "expected": -65.4999999998308}, {"input": [-88.0, -65.0], "expected": -64.99999999989738}, {"input": [-88.0, -64.5], "expected": -64.49999999993776}, {"input": [-88.0, -64.0], "expected": -63.99999999996225}, {"input": [-88.0, -63.5], "expected": -63.4999999999771}, {"input": [-88.0, -63.0], "expected": -62.99999999998611}, {"input": [-88.0, -62.5], "expected": -62.49999999999158}, {"input": [-88.0, -62.0], "expected": -61.99999999999489}, {"input": [-88.0, -61.5], "expected": -61.4999999999969}, {"input": [-88.0, -61.0], "expected": -60.99999999999812}, {"input": [-88.0, -60.5], "expected": -60.49999999999886}, {"input": [-88.0, -60.0], "expected": -59.99999999999931}, {"input": [-88.0, -59.5], "expected": -59.49999999999958}, {"input": [-88.0, -59.0], "expected": -58.999999999999744}, {"input": [-88.0, -58.5], "expected": -58.499999999999844}, {"input": [-88.0, -58.0], "expected": -57.99999999999991}, {"input": [-88.0, -57.5], "expected": -57.49999999999994}, {"input": [-88.0, -57.0], "expected": -56.999999999999964}, {"input": [-88.0, -56.5], "expected": -56.49999999999998}, {"input": [-88.0, -56.0], "expected": -55.999999999999986}, {"input": [-88.0, -55.5], "expected": -55.49999999999999}, {"input": [-88.0, -55.0], "expected": -54.99999999999999}, {"input": [-88.0, -54.5], "expected": -54.5}, {"input": [-88.0, -54.0], "expected": -54.0}, {"input": [-88.0, -53.5], "expected": -53.5}, {"input": [-88.0, -53.0], "expected": -53.0}, {"input": [-88.0, -52.5], "expected": -52.5}, {"input": [-88.0, -52.0], "expected": -52.0}, {"input": [-88.0, -51.5], "expected": -51.5}, {"input": [-88.0, -51.0], "expected": -51.0}, {"input": [-88.0, -50.5], "expected": -50.5}, {"input": [-88.0, -50.0], "expected": -50.0}, {"input": [-88.0, -49.5], "expected": -49.5}, {"input": [-88.0, -49.0], "expected": -49.0}, {"input": [-88.0, -48.5], "expected": -48.5}, {"input": [-88.0, -48.0], "expected": -48.0}, {"input": [-88.0, -47.5], "expected": -47.5}, {"input": [-88.0, -47.0], "expected": -47.0}, {"input": [-88.0, -46.5], "expected": -46.5}, {"input": [-88.0, -46.0], "expected": -46.0}, {"input": [-88.0, -45.5], "expected": -45.5}, {"input": [-88.0, -45.0], "expected": -45.0}, {"input": [-88.0, -44.5], "expected": -44.5}, {"input": [-88.0, -44.0], "expected": -44.0}, {"input": [-88.0, -43.5], "expected": -43.5}, {"input": [-88.0, -43.0], "expected": -43.0}, {"input": [-88.0, -42.5], "expected": -42.5}, {"input": [-88.0, -42.0], "expected": -42.0}, {"input": [-88.0, -41.5], "expected": -41.5}, {"input": [-88.0, -41.0], "expected": -41.0}, {"input": [-88.0, -40.5], "expected": -40.5}, {"input": [-88.0, -40.0], "expected": -40.0}, {"input": [-88.0, -39.5], "expected": -39.5}, {"input": [-88.0, -39.0], "expected": -39.0}, {"input": [-88.0, -38.5], "expected": -38.5}, {"input": [-88.0, -38.0], "expected": -38.0}, {"input": [-88.0, -37.5], "expected": -37.5}, {"input": [-88.0, -37.0], "expected": -37.0}, {"input": [-88.0, -36.5], "expected": -36.5}, {"input": [-88.0, -36.0], "expected": -36.0}, {"input": [-88.0, -35.5], "expected": -35.5}, {"input": [-88.0, -35.0], "expected": -35.0}, {"input": [-88.0, -34.5], "expected": -34.5}, {"input": [-88.0, -34.0], "expected": -34.0}, {"input": [-88.0, -33.5], "expected": -33.5}, {"input": [-88.0, -33.0], "expected": -33.0}, {"input": [-88.0, -32.5], "expected": -32.5}, {"input": [-88.0, -32.0], "expected": -32.0}, {"input": [-88.0, -31.5], "expected": -31.5}, {"input": [-88.0, -31.0], "expected": -31.0}, {"input": [-88.0, -30.5], "expected": -30.5}, {"input": [-88.0, -30.0], "expected": -30.0}, {"input": [-88.0, -29.5], "expected": -29.5}, {"input": [-88.0, -29.0], "expected": -29.0}, {"input": [-88.0, -28.5], "expected": -28.5}, {"input": [-88.0, -28.0], "expected": -28.0}, {"input": [-88.0, -27.5], "expected": -27.5}, {"input": [-88.0, -27.0], "expected": -27.0}, {"input": [-88.0, -26.5], "expected": -26.5}, {"input": [-88.0, -26.0], "expected": -26.0}, {"input": [-88.0, -25.5], "expected": -25.5}, {"input": [-88.0, -25.0], "expected": -25.0}, {"input": [-88.0, -24.5], "expected": -24.5}, {"input": [-88.0, -24.0], "expected": -24.0}, {"input": [-88.0, -23.5], "expected": -23.5}, {"input": [-88.0, -23.0], "expected": -23.0}, {"input": [-88.0, -22.5], "expected": -22.5}, {"input": [-88.0, -22.0], "expected": -22.0}, {"input": [-88.0, -21.5], "expected": -21.5}, {"input": [-88.0, -21.0], "expected": -21.0}, {"input": [-88.0, -20.5], "expected": -20.5}, {"input": [-88.0, -20.0], "expected": -20.0}, {"input": [-88.0, -19.5], "expected": -19.5}, {"input": [-88.0, -19.0], "expected": -19.0}, {"input": [-88.0, -18.5], "expected": -18.5}, {"input": [-88.0, -18.0], "expected": -18.0}, {"input": [-88.0, -17.5], "expected": -17.5}, {"input": [-88.0, -17.0], "expected": -17.0}, {"input": [-88.0, -16.5], "expected": -16.5}, {"input": [-88.0, -16.0], "expected": -16.0}, {"input": [-88.0, -15.5], "expected": -15.5}, {"input": [-88.0, -15.0], "expected": -15.0}, {"input": [-88.0, -14.5], "expected": -14.5}, {"input": [-88.0, -14.0], "expected": -14.0}, {"input": [-88.0, -13.5], "expected": -13.5}, {"input": [-88.0, -13.0], "expected": -13.0}, {"input": [-88.0, -12.5], "expected": -12.5}, {"input": [-88.0, -12.0], "expected": -12.0}, {"input": [-88.0, -11.5], "expected": -11.5}, {"input": [-88.0, -11.0], "expected": -11.0}, {"input": [-88.0, -10.5], "expected": -10.5}, {"input": [-88.0, -10.0], "expected": -10.0}, {"input": [-88.0, -9.5], "expected": -9.5}, {"input": [-88.0, -9.0], "expected": -9.0}, {"input": [-88.0, -8.5], "expected": -8.5}, {"input": [-88.0, -8.0], "expected": -8.0}, {"input": [-88.0, -7.5], "expected": -7.5}, {"input": [-88.0, -7.0], "expected": -7.0}, {"input": [-88.0, -6.5], "expected": -6.5}, {"input": [-88.0, -6.0], "expected": -6.0}, {"input": [-88.0, -5.5], "expected": -5.5}, {"input": [-88.0, -5.0], "expected": -5.0}, {"input": [-88.0, -4.5], "expected": -4.5}, {"input": [-88.0, -4.0], "expected": -4.0}, {"input": [-88.0, -3.5], "expected": -3.5}, {"input": [-88.0, -3.0], "expected": -3.0}, {"input": [-88.0, -2.5], "expected": -2.5}, {"input": [-88.0, -2.0], "expected": -2.0}, {"input": [-88.0, -1.5], "expected": -1.5}, {"input": [-88.0, -1.0], "expected": -1.0}, {"input": [-88.0, -0.5], "expected": -0.5}, {"input": [-88.0, 0.0], "expected": 6.054601895401186e-39}, {"input": [-88.0, 0.5], "expected": 0.5}, {"input": [-88.0, 1.0], "expected": 1.0}, {"input": [-88.0, 1.5], "expected": 1.5}, {"input": [-88.0, 2.0], "expected": 2.0}, {"input": [-88.0, 2.5], "expected": 2.5}, {"input": [-88.0, 3.0], "expected": 3.0}, {"input": [-88.0, 3.5], "expected": 3.5}, {"input": [-88.0, 4.0], "expected": 4.0}, {"input": [-88.0, 4.5], "expected": 4.5}, {"input": [-88.0, 5.0], "expected": 5.0}, {"input": [-88.0, 5.5], "expected": 5.5}, {"input": [-88.0, 6.0], "expected": 6.0}, {"input": [-88.0, 6.5], "expected": 6.5}, {"input": [-88.0, 7.0], "expected": 7.0}, {"input": [-88.0, 7.5], "expected": 7.5}, {"input": [-88.0, 8.0], "expected": 8.0}, {"input": [-88.0, 8.5], "expected": 8.5}, {"input": [-88.0, 9.0], "expected": 9.0}, {"input": [-88.0, 9.5], "expected": 9.5}, {"input": [-88.0, 10.0], "expected": 10.0}, {"input": [-88.0, 10.5], "expected": 10.5}, {"input": [-88.0, 11.0], "expected": 11.0}, {"input": [-88.0, 11.5], "expected": 11.5}, {"input": [-88.0, 12.0], "expected": 12.0}, {"input": [-88.0, 12.5], "expected": 12.5}, {"input": [-88.0, 13.0], "expected": 13.0}, {"input": [-88.0, 13.5], "expected": 13.5}, {"input": [-88.0, 14.0], "expected": 14.0}, {"input": [-88.0, 14.5], "expected": 14.5}, {"input": [-88.0, 15.0], "expected": 15.0}, {"input": [-88.0, 15.5], "expected": 15.5}, {"input": [-88.0, 16.0], "expected": 16.0}, {"input": [-88.0, 16.5], "expected": 16.5}, {"input": [-88.0, 17.0], "expected": 17.0}, {"input": [-88.0, 17.5], "expected": 17.5}, {"input": [-88.0, 18.0], "expected": 18.0}, {"input": [-88.0, 18.5], "expected": 18.5}, {"input": [-88.0, 19.0], "expected": 19.0}, {"input": [-88.0, 19.5], "expected": 19.5}, {"input": [-88.0, 20.0], "expected": 20.0}, {"input": [-88.0, 20.5], "expected": 20.5}, {"input": [-88.0, 21.0], "expected": 21.0}, {"input": [-88.0, 21.5], "expected": 21.5}, {"input": [-88.0, 22.0], "expected": 22.0}, {"input": [-88.0, 22.5], "expected": 22.5}, {"input": [-88.0, 23.0], "expected": 23.0}, {"input": [-88.0, 23.5], "expected": 23.5}, {"input": [-88.0, 24.0], "expected": 24.0}, {"input": [-88.0, 24.5], "expected": 24.5}, {"input": [-88.0, 25.0], "expected": 25.0}, {"input": [-88.0, 25.5], "expected": 25.5}, {"input": [-88.0, 26.0], "expected": 26.0}, {"input": [-88.0, 26.5], "expected": 26.5}, {"input": [-88.0, 27.0], "expected": 27.0}, {"input": [-88.0, 27.5], "expected": 27.5}, {"input": [-88.0, 28.0], "expected": 28.0}, {"input": [-88.0, 28.5], "expected": 28.5}, {"input": [-88.0, 29.0], "expected": 29.0}, {"input": [-88.0, 29.5], "expected": 29.5}, {"input": [-88.0, 30.0], "expected": 30.0}, {"input": [-88.0, 30.5], "expected": 30.5}, {"input": [-88.0, 31.0], "expected": 31.0}, {"input": [-88.0, 31.5], "expected": 31.5}, {"input": [-88.0, 32.0], "expected": 32.0}, {"input": [-88.0, 32.5], "expected": 32.5}, {"input": [-88.0, 33.0], "expected": 33.0}, {"input": [-88.0, 33.5], "expected": 33.5}, {"input": [-88.0, 34.0], "expected": 34.0}, {"input": [-88.0, 34.5], "expected": 34.5}, {"input": [-88.0, 35.0], "expected": 35.0}, {"input": [-88.0, 35.5], "expected": 35.5}, {"input": [-88.0, 36.0], "expected": 36.0}, {"input": [-88.0, 36.5], "expected": 36.5}, {"input": [-88.0, 37.0], "expected": 37.0}, {"input": [-88.0, 37.5], "expected": 37.5}, {"input": [-88.0, 38.0], "expected": 38.0}, {"input": [-88.0, 38.5], "expected": 38.5}, {"input": [-88.0, 39.0], "expected": 39.0}, {"input": [-88.0, 39.5], "expected": 39.5}, {"input": [-88.0, 40.0], "expected": 40.0}, {"input": [-88.0, 40.5], "expected": 40.5}, {"input": [-88.0, 41.0], "expected": 41.0}, {"input": [-88.0, 41.5], "expected": 41.5}, {"input": [-88.0, 42.0], "expected": 42.0}, {"input": [-88.0, 42.5], "expected": 42.5}, {"input": [-88.0, 43.0], "expected": 43.0}, {"input": [-88.0, 43.5], "expected": 43.5}, {"input": [-88.0, 44.0], "expected": 44.0}, {"input": [-88.0, 44.5], "expected": 44.5}, {"input": [-88.0, 45.0], "expected": 45.0}, {"input": [-88.0, 45.5], "expected": 45.5}, {"input": [-88.0, 46.0], "expected": 46.0}, {"input": [-88.0, 46.5], "expected": 46.5}, {"input": [-88.0, 47.0], "expected": 47.0}, {"input": [-88.0, 47.5], "expected": 47.5}, {"input": [-88.0, 48.0], "expected": 48.0}, {"input": [-88.0, 48.5], "expected": 48.5}, {"input": [-88.0, 49.0], "expected": 49.0}, {"input": [-88.0, 49.5], "expected": 49.5}, {"input": [-88.0, 50.0], "expected": 50.0}, {"input": [-88.0, 50.5], "expected": 50.5}, {"input": [-88.0, 51.0], "expected": 51.0}, {"input": [-88.0, 51.5], "expected": 51.5}, {"input": [-88.0, 52.0], "expected": 52.0}, {"input": [-88.0, 52.5], "expected": 52.5}, {"input": [-88.0, 53.0], "expected": 53.0}, {"input": [-88.0, 53.5], "expected": 53.5}, {"input": [-88.0, 54.0], "expected": 54.0}, {"input": [-88.0, 54.5], "expected": 54.5}, {"input": [-88.0, 55.0], "expected": 55.0}, {"input": [-88.0, 55.5], "expected": 55.5}, {"input": [-88.0, 56.0], "expected": 56.0}, {"input": [-88.0, 56.5], "expected": 56.5}, {"input": [-88.0, 57.0], "expected": 57.0}, {"input": [-88.0, 57.5], "expected": 57.5}, {"input": [-88.0, 58.0], "expected": 58.0}, {"input": [-88.0, 58.5], "expected": 58.5}, {"input": [-88.0, 59.0], "expected": 59.0}, {"input": [-88.0, 59.5], "expected": 59.5}, {"input": [-88.0, 60.0], "expected": 60.0}, {"input": [-88.0, 60.5], "expected": 60.5}, {"input": [-88.0, 61.0], "expected": 61.0}, {"input": [-88.0, 61.5], "expected": 61.5}, {"input": [-88.0, 62.0], "expected": 62.0}, {"input": [-88.0, 62.5], "expected": 62.5}, {"input": [-88.0, 63.0], "expected": 63.0}, {"input": [-88.0, 63.5], "expected": 63.5}, {"input": [-88.0, 64.0], "expected": 64.0}, {"input": [-88.0, 64.5], "expected": 64.5}, {"input": [-88.0, 65.0], "expected": 65.0}, {"input": [-88.0, 65.5], "expected": 65.5}, {"input": [-88.0, 66.0], "expected": 66.0}, {"input": [-88.0, 66.5], "expected": 66.5}, {"input": [-88.0, 67.0], "expected": 67.0}, {"input": [-88.0, 67.5], "expected": 67.5}, {"input": [-88.0, 68.0], "expected": 68.0}, {"input": [-88.0, 68.5], "expected": 68.5}, {"input": [-88.0, 69.0], "expected": 69.0}, {"input": [-88.0, 69.5], "expected": 69.5}, {"input": [-88.0, 70.0], "expected": 70.0}, {"input": [-88.0, 70.5], "expected": 70.5}, {"input": [-88.0, 71.0], "expected": 71.0}, {"input": [-88.0, 71.5], "expected": 71.5}, {"input": [-88.0, 72.0], "expected": 72.0}, {"input": [-88.0, 72.5], "expected": 72.5}, {"input": [-88.0, 73.0], "expected": 73.0}, {"input": [-88.0, 73.5], "expected": 73.5}, {"input": [-88.0, 74.0], "expected": 74.0}, {"input": [-88.0, 74.5], "expected": 74.5}, {"input": [-88.0, 75.0], "expected": 75.0}, {"input": [-88.0, 75.5], "expected": 75.5}, {"input": [-88.0, 76.0], "expected": 76.0}, {"input": [-88.0, 76.5], "expected": 76.5}, {"input": [-88.0, 77.0], "expected": 77.0}, {"input": [-88.0, 77.5], "expected": 77.5}, {"input": [-88.0, 78.0], "expected": 78.0}, {"input": [-88.0, 78.5], "expected": 78.5}, {"input": [-88.0, 79.0], "expected": 79.0}, {"input": [-88.0, 79.5], "expected": 79.5}, {"input": [-88.0, 80.0], "expected": 80.0}, {"input": [-88.0, 80.5], "expected": 80.5}, {"input": [-88.0, 81.0], "expected": 81.0}, {"input": [-88.0, 81.5], "expected": 81.5}, {"input": [-88.0, 82.0], "expected": 82.0}, {"input": [-88.0, 82.5], "expected": 82.5}, {"input": [-88.0, 83.0], "expected": 83.0}, {"input": [-88.0, 83.5], "expected": 83.5}, {"input": [-88.0, 84.0], "expected": 84.0}, {"input": [-88.0, 84.5], "expected": 84.5}, {"input": [-88.0, 85.0], "expected": 85.0}, {"input": [-88.0, 85.5], "expected": 85.5}, {"input": [-88.0, 86.0], "expected": 86.0}, {"input": [-88.0, 86.5], "expected": 86.5}, {"input": [-88.0, 87.0], "expected": 87.0}, {"input": [-88.0, 87.5], "expected": 87.5}, {"input": [-88.0, 88.0], "expected": 88.0}, {"input": [-88.0, 88.5], "expected": 88.5}, {"input": [-88.0, 89.0], "expected": 89.0}, {"input": [-88.0, 89.5], "expected": 89.5}, {"input": [-88.0, 90.0], "expected": 90.0}, {"input": [-88.0, 90.5], "expected": 90.5}, {"input": [-88.0, 91.0], "expected": 91.0}, {"input": [-88.0, 91.5], "expected": 91.5}, {"input": [-88.0, 92.0], "expected": 92.0}, {"input": [-88.0, 92.5], "expected": 92.5}, {"input": [-88.0, 93.0], "expected": 93.0}, {"input": [-88.0, 93.5], "expected": 93.5}, {"input": [-88.0, 94.0], "expected": 94.0}, {"input": [-88.0, 94.5], "expected": 94.5}, {"input": [-88.0, 95.0], "expected": 95.0}, {"input": [-88.0, 95.5], "expected": 95.5}, {"input": [-88.0, 96.0], "expected": 96.0}, {"input": [-88.0, 96.5], "expected": 96.5}, {"input": [-88.0, 97.0], "expected": 97.0}, {"input": [-88.0, 97.5], "expected": 97.5}, {"input": [-88.0, 98.0], "expected": 98.0}, {"input": [-88.0, 98.5], "expected": 98.5}, {"input": [-88.0, 99.0], "expected": 99.0}, {"input": [-88.0, 99.5], "expected": 99.5}, {"input": [-87.5, -100.0], "expected": -87.49999627335377}, {"input": [-87.5, -99.5], "expected": -87.49999385580652}, {"input": [-87.5, -99.0], "expected": -87.49998986995772}, {"input": [-87.5, -98.5], "expected": -87.49998329843868}, {"input": [-87.5, -98.0], "expected": -87.49997246392977}, {"input": [-87.5, -97.5], "expected": -87.49995460110078}, {"input": [-87.5, -97.0], "expected": -87.49992515097136}, {"input": [-87.5, -96.5], "expected": -87.49987659781027}, {"input": [-87.5, -96.0], "expected": -87.49979655232787}, {"input": [-87.5, -95.5], "expected": -87.4996645936271}, {"input": [-87.5, -95.0], "expected": -87.49944706852465}, {"input": [-87.5, -94.5], "expected": -87.49908853354623}, {"input": [-87.5, -94.0], "expected": -87.49849768984025}, {"input": [-87.5, -93.5], "expected": -87.49752431486228}, {"input": [-87.5, -93.0], "expected": -87.49592155672943}, {"input": [-87.5, -92.5], "expected": -87.49328465151088}, {"input": [-87.5, -92.0], "expected": -87.4889522551514}, {"input": [-87.5, -91.5], "expected": -87.4818500720822}, {"input": [-87.5, -91.0], "expected": -87.47024958172737}, {"input": [-87.5, -90.5], "expected": -87.45141264842626}, {"input": [-87.5, -90.0], "expected": -87.42111026570745}, {"input": [-87.5, -89.5], "expected": -87.37307198895702}, {"input": [-87.5, -89.0], "expected": -87.29858672201725}, {"input": [-87.5, -88.5], "expected": -87.18673831248178}, {"input": [-87.5, -88.0], "expected": -87.0259230158199}, {"input": [-87.5, -87.5], "expected": -86.80685281944005}, {"input": [-87.5, -87.0], "expected": -86.5259230158199}, {"input": [-87.5, -86.5], "expected": -86.18673831248178}, {"input": [-87.5, -86.0], "expected": -85.79858672201725}, {"input": [-87.5, -85.5], "expected": -85.37307198895702}, {"input": [-87.5, -85.0], "expected": -84.92111026570745}, {"input": [-87.5, -84.5], "expected": -84.45141264842626}, {"input": [-87.5, -84.0], "expected": -83.97024958172737}, {"input": [-87.5, -83.5], "expected": -83.4818500720822}, {"input": [-87.5, -83.0], "expected": -82.9889522551514}, {"input": [-87.5, -82.5], "expected": -82.49328465151088}, {"input": [-87.5, -82.0], "expected": -81.99592155672943}, {"input": [-87.5, -81.5], "expected": -81.49752431486228}, {"input": [-87.5, -81.0], "expected": -80.99849768984025}, {"input": [-87.5, -80.5], "expected": -80.49908853354623}, {"input": [-87.5, -80.0], "expected": -79.99944706852465}, {"input": [-87.5, -79.5], "expected": -79.4996645936271}, {"input": [-87.5, -79.0], "expected": -78.99979655232787}, {"input": [-87.5, -78.5], "expected": -78.49987659781027}, {"input": [-87.5, -78.0], "expected": -77.99992515097136}, {"input": [-87.5, -77.5], "expected": -77.49995460110078}, {"input": [-87.5, -77.0], "expected": -76.99997246392977}, {"input": [-87.5, -76.5], "expected": -76.49998329843868}, {"input": [-87.5, -76.0], "expected": -75.99998986995772}, {"input": [-87.5, -75.5], "expected": -75.49999385580652}, {"input": [-87.5, -75.0], "expected": -74.99999627335377}, {"input": [-87.5, -74.5], "expected": -74.49999773967315}, {"input": [-87.5, -74.0], "expected": -73.99999862904185}, {"input": [-87.5, -73.5], "expected": -73.49999916847163}, {"input": [-87.5, -73.0], "expected": -72.99999949565246}, {"input": [-87.5, -72.5], "expected": -72.49999969409772}, {"input": [-87.5, -72.0], "expected": -71.99999981446088}, {"input": [-87.5, -71.5], "expected": -71.49999988746484}, {"input": [-87.5, -71.0], "expected": -70.99999993174397}, {"input": [-87.5, -70.5], "expected": -70.49999995860063}, {"input": [-87.5, -70.0], "expected": -69.99999997489}, {"input": [-87.5, -69.5], "expected": -69.49999998477001}, {"input": [-87.5, -69.0], "expected": -68.99999999076255}, {"input": [-87.5, -68.5], "expected": -68.4999999943972}, {"input": [-87.5, -68.0], "expected": -67.99999999660173}, {"input": [-87.5, -67.5], "expected": -67.49999999793884}, {"input": [-87.5, -67.0], "expected": -66.99999999874984}, {"input": [-87.5, -66.5], "expected": -66.49999999924174}, {"input": [-87.5, -66.0], "expected": -65.9999999995401}, {"input": [-87.5, -65.5], "expected": -65.49999999972106}, {"input": [-87.5, -65.0], "expected": -64.9999999998308}, {"input": [-87.5, -64.5], "expected": -64.49999999989738}, {"input": [-87.5, -64.0], "expected": -63.99999999993776}, {"input": [-87.5, -63.5], "expected": -63.49999999996225}, {"input": [-87.5, -63.0], "expected": -62.9999999999771}, {"input": [-87.5, -62.5], "expected": -62.49999999998611}, {"input": [-87.5, -62.0], "expected": -61.99999999999158}, {"input": [-87.5, -61.5], "expected": -61.49999999999489}, {"input": [-87.5, -61.0], "expected": -60.9999999999969}, {"input": [-87.5, -60.5], "expected": -60.49999999999812}, {"input": [-87.5, -60.0], "expected": -59.99999999999886}, {"input": [-87.5, -59.5], "expected": -59.49999999999931}, {"input": [-87.5, -59.0], "expected": -58.99999999999958}, {"input": [-87.5, -58.5], "expected": -58.499999999999744}, {"input": [-87.5, -58.0], "expected": -57.999999999999844}, {"input": [-87.5, -57.5], "expected": -57.49999999999991}, {"input": [-87.5, -57.0], "expected": -56.99999999999994}, {"input": [-87.5, -56.5], "expected": -56.499999999999964}, {"input": [-87.5, -56.0], "expected": -55.99999999999998}, {"input": [-87.5, -55.5], "expected": -55.499999999999986}, {"input": [-87.5, -55.0], "expected": -54.99999999999999}, {"input": [-87.5, -54.5], "expected": -54.49999999999999}, {"input": [-87.5, -54.0], "expected": -54.0}, {"input": [-87.5, -53.5], "expected": -53.5}, {"input": [-87.5, -53.0], "expected": -53.0}, {"input": [-87.5, -52.5], "expected": -52.5}, {"input": [-87.5, -52.0], "expected": -52.0}, {"input": [-87.5, -51.5], "expected": -51.5}, {"input": [-87.5, -51.0], "expected": -51.0}, {"input": [-87.5, -50.5], "expected": -50.5}, {"input": [-87.5, -50.0], "expected": -50.0}, {"input": [-87.5, -49.5], "expected": -49.5}, {"input": [-87.5, -49.0], "expected": -49.0}, {"input": [-87.5, -48.5], "expected": -48.5}, {"input": [-87.5, -48.0], "expected": -48.0}, {"input": [-87.5, -47.5], "expected": -47.5}, {"input": [-87.5, -47.0], "expected": -47.0}, {"input": [-87.5, -46.5], "expected": -46.5}, {"input": [-87.5, -46.0], "expected": -46.0}, {"input": [-87.5, -45.5], "expected": -45.5}, {"input": [-87.5, -45.0], "expected": -45.0}, {"input": [-87.5, -44.5], "expected": -44.5}, {"input": [-87.5, -44.0], "expected": -44.0}, {"input": [-87.5, -43.5], "expected": -43.5}, {"input": [-87.5, -43.0], "expected": -43.0}, {"input": [-87.5, -42.5], "expected": -42.5}, {"input": [-87.5, -42.0], "expected": -42.0}, {"input": [-87.5, -41.5], "expected": -41.5}, {"input": [-87.5, -41.0], "expected": -41.0}, {"input": [-87.5, -40.5], "expected": -40.5}, {"input": [-87.5, -40.0], "expected": -40.0}, {"input": [-87.5, -39.5], "expected": -39.5}, {"input": [-87.5, -39.0], "expected": -39.0}, {"input": [-87.5, -38.5], "expected": -38.5}, {"input": [-87.5, -38.0], "expected": -38.0}, {"input": [-87.5, -37.5], "expected": -37.5}, {"input": [-87.5, -37.0], "expected": -37.0}, {"input": [-87.5, -36.5], "expected": -36.5}, {"input": [-87.5, -36.0], "expected": -36.0}, {"input": [-87.5, -35.5], "expected": -35.5}, {"input": [-87.5, -35.0], "expected": -35.0}, {"input": [-87.5, -34.5], "expected": -34.5}, {"input": [-87.5, -34.0], "expected": -34.0}, {"input": [-87.5, -33.5], "expected": -33.5}, {"input": [-87.5, -33.0], "expected": -33.0}, {"input": [-87.5, -32.5], "expected": -32.5}, {"input": [-87.5, -32.0], "expected": -32.0}, {"input": [-87.5, -31.5], "expected": -31.5}, {"input": [-87.5, -31.0], "expected": -31.0}, {"input": [-87.5, -30.5], "expected": -30.5}, {"input": [-87.5, -30.0], "expected": -30.0}, {"input": [-87.5, -29.5], "expected": -29.5}, {"input": [-87.5, -29.0], "expected": -29.0}, {"input": [-87.5, -28.5], "expected": -28.5}, {"input": [-87.5, -28.0], "expected": -28.0}, {"input": [-87.5, -27.5], "expected": -27.5}, {"input": [-87.5, -27.0], "expected": -27.0}, {"input": [-87.5, -26.5], "expected": -26.5}, {"input": [-87.5, -26.0], "expected": -26.0}, {"input": [-87.5, -25.5], "expected": -25.5}, {"input": [-87.5, -25.0], "expected": -25.0}, {"input": [-87.5, -24.5], "expected": -24.5}, {"input": [-87.5, -24.0], "expected": -24.0}, {"input": [-87.5, -23.5], "expected": -23.5}, {"input": [-87.5, -23.0], "expected": -23.0}, {"input": [-87.5, -22.5], "expected": -22.5}, {"input": [-87.5, -22.0], "expected": -22.0}, {"input": [-87.5, -21.5], "expected": -21.5}, {"input": [-87.5, -21.0], "expected": -21.0}, {"input": [-87.5, -20.5], "expected": -20.5}, {"input": [-87.5, -20.0], "expected": -20.0}, {"input": [-87.5, -19.5], "expected": -19.5}, {"input": [-87.5, -19.0], "expected": -19.0}, {"input": [-87.5, -18.5], "expected": -18.5}, {"input": [-87.5, -18.0], "expected": -18.0}, {"input": [-87.5, -17.5], "expected": -17.5}, {"input": [-87.5, -17.0], "expected": -17.0}, {"input": [-87.5, -16.5], "expected": -16.5}, {"input": [-87.5, -16.0], "expected": -16.0}, {"input": [-87.5, -15.5], "expected": -15.5}, {"input": [-87.5, -15.0], "expected": -15.0}, {"input": [-87.5, -14.5], "expected": -14.5}, {"input": [-87.5, -14.0], "expected": -14.0}, {"input": [-87.5, -13.5], "expected": -13.5}, {"input": [-87.5, -13.0], "expected": -13.0}, {"input": [-87.5, -12.5], "expected": -12.5}, {"input": [-87.5, -12.0], "expected": -12.0}, {"input": [-87.5, -11.5], "expected": -11.5}, {"input": [-87.5, -11.0], "expected": -11.0}, {"input": [-87.5, -10.5], "expected": -10.5}, {"input": [-87.5, -10.0], "expected": -10.0}, {"input": [-87.5, -9.5], "expected": -9.5}, {"input": [-87.5, -9.0], "expected": -9.0}, {"input": [-87.5, -8.5], "expected": -8.5}, {"input": [-87.5, -8.0], "expected": -8.0}, {"input": [-87.5, -7.5], "expected": -7.5}, {"input": [-87.5, -7.0], "expected": -7.0}, {"input": [-87.5, -6.5], "expected": -6.5}, {"input": [-87.5, -6.0], "expected": -6.0}, {"input": [-87.5, -5.5], "expected": -5.5}, {"input": [-87.5, -5.0], "expected": -5.0}, {"input": [-87.5, -4.5], "expected": -4.5}, {"input": [-87.5, -4.0], "expected": -4.0}, {"input": [-87.5, -3.5], "expected": -3.5}, {"input": [-87.5, -3.0], "expected": -3.0}, {"input": [-87.5, -2.5], "expected": -2.5}, {"input": [-87.5, -2.0], "expected": -2.0}, {"input": [-87.5, -1.5], "expected": -1.5}, {"input": [-87.5, -1.0], "expected": -1.0}, {"input": [-87.5, -0.5], "expected": -0.5}, {"input": [-87.5, 0.0], "expected": 9.982350930569248e-39}, {"input": [-87.5, 0.5], "expected": 0.5}, {"input": [-87.5, 1.0], "expected": 1.0}, {"input": [-87.5, 1.5], "expected": 1.5}, {"input": [-87.5, 2.0], "expected": 2.0}, {"input": [-87.5, 2.5], "expected": 2.5}, {"input": [-87.5, 3.0], "expected": 3.0}, {"input": [-87.5, 3.5], "expected": 3.5}, {"input": [-87.5, 4.0], "expected": 4.0}, {"input": [-87.5, 4.5], "expected": 4.5}, {"input": [-87.5, 5.0], "expected": 5.0}, {"input": [-87.5, 5.5], "expected": 5.5}, {"input": [-87.5, 6.0], "expected": 6.0}, {"input": [-87.5, 6.5], "expected": 6.5}, {"input": [-87.5, 7.0], "expected": 7.0}, {"input": [-87.5, 7.5], "expected": 7.5}, {"input": [-87.5, 8.0], "expected": 8.0}, {"input": [-87.5, 8.5], "expected": 8.5}, {"input": [-87.5, 9.0], "expected": 9.0}, {"input": [-87.5, 9.5], "expected": 9.5}, {"input": [-87.5, 10.0], "expected": 10.0}, {"input": [-87.5, 10.5], "expected": 10.5}, {"input": [-87.5, 11.0], "expected": 11.0}, {"input": [-87.5, 11.5], "expected": 11.5}, {"input": [-87.5, 12.0], "expected": 12.0}, {"input": [-87.5, 12.5], "expected": 12.5}, {"input": [-87.5, 13.0], "expected": 13.0}, {"input": [-87.5, 13.5], "expected": 13.5}, {"input": [-87.5, 14.0], "expected": 14.0}, {"input": [-87.5, 14.5], "expected": 14.5}, {"input": [-87.5, 15.0], "expected": 15.0}, {"input": [-87.5, 15.5], "expected": 15.5}, {"input": [-87.5, 16.0], "expected": 16.0}, {"input": [-87.5, 16.5], "expected": 16.5}, {"input": [-87.5, 17.0], "expected": 17.0}, {"input": [-87.5, 17.5], "expected": 17.5}, {"input": [-87.5, 18.0], "expected": 18.0}, {"input": [-87.5, 18.5], "expected": 18.5}, {"input": [-87.5, 19.0], "expected": 19.0}, {"input": [-87.5, 19.5], "expected": 19.5}, {"input": [-87.5, 20.0], "expected": 20.0}, {"input": [-87.5, 20.5], "expected": 20.5}, {"input": [-87.5, 21.0], "expected": 21.0}, {"input": [-87.5, 21.5], "expected": 21.5}, {"input": [-87.5, 22.0], "expected": 22.0}, {"input": [-87.5, 22.5], "expected": 22.5}, {"input": [-87.5, 23.0], "expected": 23.0}, {"input": [-87.5, 23.5], "expected": 23.5}, {"input": [-87.5, 24.0], "expected": 24.0}, {"input": [-87.5, 24.5], "expected": 24.5}, {"input": [-87.5, 25.0], "expected": 25.0}, {"input": [-87.5, 25.5], "expected": 25.5}, {"input": [-87.5, 26.0], "expected": 26.0}, {"input": [-87.5, 26.5], "expected": 26.5}, {"input": [-87.5, 27.0], "expected": 27.0}, {"input": [-87.5, 27.5], "expected": 27.5}, {"input": [-87.5, 28.0], "expected": 28.0}, {"input": [-87.5, 28.5], "expected": 28.5}, {"input": [-87.5, 29.0], "expected": 29.0}, {"input": [-87.5, 29.5], "expected": 29.5}, {"input": [-87.5, 30.0], "expected": 30.0}, {"input": [-87.5, 30.5], "expected": 30.5}, {"input": [-87.5, 31.0], "expected": 31.0}, {"input": [-87.5, 31.5], "expected": 31.5}, {"input": [-87.5, 32.0], "expected": 32.0}, {"input": [-87.5, 32.5], "expected": 32.5}, {"input": [-87.5, 33.0], "expected": 33.0}, {"input": [-87.5, 33.5], "expected": 33.5}, {"input": [-87.5, 34.0], "expected": 34.0}, {"input": [-87.5, 34.5], "expected": 34.5}, {"input": [-87.5, 35.0], "expected": 35.0}, {"input": [-87.5, 35.5], "expected": 35.5}, {"input": [-87.5, 36.0], "expected": 36.0}, {"input": [-87.5, 36.5], "expected": 36.5}, {"input": [-87.5, 37.0], "expected": 37.0}, {"input": [-87.5, 37.5], "expected": 37.5}, {"input": [-87.5, 38.0], "expected": 38.0}, {"input": [-87.5, 38.5], "expected": 38.5}, {"input": [-87.5, 39.0], "expected": 39.0}, {"input": [-87.5, 39.5], "expected": 39.5}, {"input": [-87.5, 40.0], "expected": 40.0}, {"input": [-87.5, 40.5], "expected": 40.5}, {"input": [-87.5, 41.0], "expected": 41.0}, {"input": [-87.5, 41.5], "expected": 41.5}, {"input": [-87.5, 42.0], "expected": 42.0}, {"input": [-87.5, 42.5], "expected": 42.5}, {"input": [-87.5, 43.0], "expected": 43.0}, {"input": [-87.5, 43.5], "expected": 43.5}, {"input": [-87.5, 44.0], "expected": 44.0}, {"input": [-87.5, 44.5], "expected": 44.5}, {"input": [-87.5, 45.0], "expected": 45.0}, {"input": [-87.5, 45.5], "expected": 45.5}, {"input": [-87.5, 46.0], "expected": 46.0}, {"input": [-87.5, 46.5], "expected": 46.5}, {"input": [-87.5, 47.0], "expected": 47.0}, {"input": [-87.5, 47.5], "expected": 47.5}, {"input": [-87.5, 48.0], "expected": 48.0}, {"input": [-87.5, 48.5], "expected": 48.5}, {"input": [-87.5, 49.0], "expected": 49.0}, {"input": [-87.5, 49.5], "expected": 49.5}, {"input": [-87.5, 50.0], "expected": 50.0}, {"input": [-87.5, 50.5], "expected": 50.5}, {"input": [-87.5, 51.0], "expected": 51.0}, {"input": [-87.5, 51.5], "expected": 51.5}, {"input": [-87.5, 52.0], "expected": 52.0}, {"input": [-87.5, 52.5], "expected": 52.5}, {"input": [-87.5, 53.0], "expected": 53.0}, {"input": [-87.5, 53.5], "expected": 53.5}, {"input": [-87.5, 54.0], "expected": 54.0}, {"input": [-87.5, 54.5], "expected": 54.5}, {"input": [-87.5, 55.0], "expected": 55.0}, {"input": [-87.5, 55.5], "expected": 55.5}, {"input": [-87.5, 56.0], "expected": 56.0}, {"input": [-87.5, 56.5], "expected": 56.5}, {"input": [-87.5, 57.0], "expected": 57.0}, {"input": [-87.5, 57.5], "expected": 57.5}, {"input": [-87.5, 58.0], "expected": 58.0}, {"input": [-87.5, 58.5], "expected": 58.5}, {"input": [-87.5, 59.0], "expected": 59.0}, {"input": [-87.5, 59.5], "expected": 59.5}, {"input": [-87.5, 60.0], "expected": 60.0}, {"input": [-87.5, 60.5], "expected": 60.5}, {"input": [-87.5, 61.0], "expected": 61.0}, {"input": [-87.5, 61.5], "expected": 61.5}, {"input": [-87.5, 62.0], "expected": 62.0}, {"input": [-87.5, 62.5], "expected": 62.5}, {"input": [-87.5, 63.0], "expected": 63.0}, {"input": [-87.5, 63.5], "expected": 63.5}, {"input": [-87.5, 64.0], "expected": 64.0}, {"input": [-87.5, 64.5], "expected": 64.5}, {"input": [-87.5, 65.0], "expected": 65.0}, {"input": [-87.5, 65.5], "expected": 65.5}, {"input": [-87.5, 66.0], "expected": 66.0}, {"input": [-87.5, 66.5], "expected": 66.5}, {"input": [-87.5, 67.0], "expected": 67.0}, {"input": [-87.5, 67.5], "expected": 67.5}, {"input": [-87.5, 68.0], "expected": 68.0}, {"input": [-87.5, 68.5], "expected": 68.5}, {"input": [-87.5, 69.0], "expected": 69.0}, {"input": [-87.5, 69.5], "expected": 69.5}, {"input": [-87.5, 70.0], "expected": 70.0}, {"input": [-87.5, 70.5], "expected": 70.5}, {"input": [-87.5, 71.0], "expected": 71.0}, {"input": [-87.5, 71.5], "expected": 71.5}, {"input": [-87.5, 72.0], "expected": 72.0}, {"input": [-87.5, 72.5], "expected": 72.5}, {"input": [-87.5, 73.0], "expected": 73.0}, {"input": [-87.5, 73.5], "expected": 73.5}, {"input": [-87.5, 74.0], "expected": 74.0}, {"input": [-87.5, 74.5], "expected": 74.5}, {"input": [-87.5, 75.0], "expected": 75.0}, {"input": [-87.5, 75.5], "expected": 75.5}, {"input": [-87.5, 76.0], "expected": 76.0}, {"input": [-87.5, 76.5], "expected": 76.5}, {"input": [-87.5, 77.0], "expected": 77.0}, {"input": [-87.5, 77.5], "expected": 77.5}, {"input": [-87.5, 78.0], "expected": 78.0}, {"input": [-87.5, 78.5], "expected": 78.5}, {"input": [-87.5, 79.0], "expected": 79.0}, {"input": [-87.5, 79.5], "expected": 79.5}, {"input": [-87.5, 80.0], "expected": 80.0}, {"input": [-87.5, 80.5], "expected": 80.5}, {"input": [-87.5, 81.0], "expected": 81.0}, {"input": [-87.5, 81.5], "expected": 81.5}, {"input": [-87.5, 82.0], "expected": 82.0}, {"input": [-87.5, 82.5], "expected": 82.5}, {"input": [-87.5, 83.0], "expected": 83.0}, {"input": [-87.5, 83.5], "expected": 83.5}, {"input": [-87.5, 84.0], "expected": 84.0}, {"input": [-87.5, 84.5], "expected": 84.5}, {"input": [-87.5, 85.0], "expected": 85.0}, {"input": [-87.5, 85.5], "expected": 85.5}, {"input": [-87.5, 86.0], "expected": 86.0}, {"input": [-87.5, 86.5], "expected": 86.5}, {"input": [-87.5, 87.0], "expected": 87.0}, {"input": [-87.5, 87.5], "expected": 87.5}, {"input": [-87.5, 88.0], "expected": 88.0}, {"input": [-87.5, 88.5], "expected": 88.5}, {"input": [-87.5, 89.0], "expected": 89.0}, {"input": [-87.5, 89.5], "expected": 89.5}, {"input": [-87.5, 90.0], "expected": 90.0}, {"input": [-87.5, 90.5], "expected": 90.5}, {"input": [-87.5, 91.0], "expected": 91.0}, {"input": [-87.5, 91.5], "expected": 91.5}, {"input": [-87.5, 92.0], "expected": 92.0}, {"input": [-87.5, 92.5], "expected": 92.5}, {"input": [-87.5, 93.0], "expected": 93.0}, {"input": [-87.5, 93.5], "expected": 93.5}, {"input": [-87.5, 94.0], "expected": 94.0}, {"input": [-87.5, 94.5], "expected": 94.5}, {"input": [-87.5, 95.0], "expected": 95.0}, {"input": [-87.5, 95.5], "expected": 95.5}, {"input": [-87.5, 96.0], "expected": 96.0}, {"input": [-87.5, 96.5], "expected": 96.5}, {"input": [-87.5, 97.0], "expected": 97.0}, {"input": [-87.5, 97.5], "expected": 97.5}, {"input": [-87.5, 98.0], "expected": 98.0}, {"input": [-87.5, 98.5], "expected": 98.5}, {"input": [-87.5, 99.0], "expected": 99.0}, {"input": [-87.5, 99.5], "expected": 99.5}, {"input": [-87.0, -100.0], "expected": -86.99999773967315}, {"input": [-87.0, -99.5], "expected": -86.99999627335377}, {"input": [-87.0, -99.0], "expected": -86.99999385580652}, {"input": [-87.0, -98.5], "expected": -86.99998986995772}, {"input": [-87.0, -98.0], "expected": -86.99998329843868}, {"input": [-87.0, -97.5], "expected": -86.99997246392977}, {"input": [-87.0, -97.0], "expected": -86.99995460110078}, {"input": [-87.0, -96.5], "expected": -86.99992515097136}, {"input": [-87.0, -96.0], "expected": -86.99987659781027}, {"input": [-87.0, -95.5], "expected": -86.99979655232787}, {"input": [-87.0, -95.0], "expected": -86.9996645936271}, {"input": [-87.0, -94.5], "expected": -86.99944706852465}, {"input": [-87.0, -94.0], "expected": -86.99908853354623}, {"input": [-87.0, -93.5], "expected": -86.99849768984025}, {"input": [-87.0, -93.0], "expected": -86.99752431486228}, {"input": [-87.0, -92.5], "expected": -86.99592155672943}, {"input": [-87.0, -92.0], "expected": -86.99328465151088}, {"input": [-87.0, -91.5], "expected": -86.9889522551514}, {"input": [-87.0, -91.0], "expected": -86.9818500720822}, {"input": [-87.0, -90.5], "expected": -86.97024958172737}, {"input": [-87.0, -90.0], "expected": -86.95141264842626}, {"input": [-87.0, -89.5], "expected": -86.92111026570745}, {"input": [-87.0, -89.0], "expected": -86.87307198895702}, {"input": [-87.0, -88.5], "expected": -86.79858672201725}, {"input": [-87.0, -88.0], "expected": -86.68673831248178}, {"input": [-87.0, -87.5], "expected": -86.5259230158199}, {"input": [-87.0, -87.0], "expected": -86.30685281944005}, {"input": [-87.0, -86.5], "expected": -86.0259230158199}, {"input": [-87.0, -86.0], "expected": -85.68673831248178}, {"input": [-87.0, -85.5], "expected": -85.29858672201725}, {"input": [-87.0, -85.0], "expected": -84.87307198895702}, {"input": [-87.0, -84.5], "expected": -84.42111026570745}, {"input": [-87.0, -84.0], "expected": -83.95141264842626}, {"input": [-87.0, -83.5], "expected": -83.47024958172737}, {"input": [-87.0, -83.0], "expected": -82.9818500720822}, {"input": [-87.0, -82.5], "expected": -82.4889522551514}, {"input": [-87.0, -82.0], "expected": -81.99328465151088}, {"input": [-87.0, -81.5], "expected": -81.49592155672943}, {"input": [-87.0, -81.0], "expected": -80.99752431486228}, {"input": [-87.0, -80.5], "expected": -80.49849768984025}, {"input": [-87.0, -80.0], "expected": -79.99908853354623}, {"input": [-87.0, -79.5], "expected": -79.49944706852465}, {"input": [-87.0, -79.0], "expected": -78.9996645936271}, {"input": [-87.0, -78.5], "expected": -78.49979655232787}, {"input": [-87.0, -78.0], "expected": -77.99987659781027}, {"input": [-87.0, -77.5], "expected": -77.49992515097136}, {"input": [-87.0, -77.0], "expected": -76.99995460110078}, {"input": [-87.0, -76.5], "expected": -76.49997246392977}, {"input": [-87.0, -76.0], "expected": -75.99998329843868}, {"input": [-87.0, -75.5], "expected": -75.49998986995772}, {"input": [-87.0, -75.0], "expected": -74.99999385580652}, {"input": [-87.0, -74.5], "expected": -74.49999627335377}, {"input": [-87.0, -74.0], "expected": -73.99999773967315}, {"input": [-87.0, -73.5], "expected": -73.49999862904185}, {"input": [-87.0, -73.0], "expected": -72.99999916847163}, {"input": [-87.0, -72.5], "expected": -72.49999949565246}, {"input": [-87.0, -72.0], "expected": -71.99999969409772}, {"input": [-87.0, -71.5], "expected": -71.49999981446088}, {"input": [-87.0, -71.0], "expected": -70.99999988746484}, {"input": [-87.0, -70.5], "expected": -70.49999993174397}, {"input": [-87.0, -70.0], "expected": -69.99999995860063}, {"input": [-87.0, -69.5], "expected": -69.49999997489}, {"input": [-87.0, -69.0], "expected": -68.99999998477001}, {"input": [-87.0, -68.5], "expected": -68.49999999076255}, {"input": [-87.0, -68.0], "expected": -67.9999999943972}, {"input": [-87.0, -67.5], "expected": -67.49999999660173}, {"input": [-87.0, -67.0], "expected": -66.99999999793884}, {"input": [-87.0, -66.5], "expected": -66.49999999874984}, {"input": [-87.0, -66.0], "expected": -65.99999999924174}, {"input": [-87.0, -65.5], "expected": -65.4999999995401}, {"input": [-87.0, -65.0], "expected": -64.99999999972106}, {"input": [-87.0, -64.5], "expected": -64.4999999998308}, {"input": [-87.0, -64.0], "expected": -63.99999999989738}, {"input": [-87.0, -63.5], "expected": -63.49999999993776}, {"input": [-87.0, -63.0], "expected": -62.99999999996225}, {"input": [-87.0, -62.5], "expected": -62.4999999999771}, {"input": [-87.0, -62.0], "expected": -61.99999999998611}, {"input": [-87.0, -61.5], "expected": -61.49999999999158}, {"input": [-87.0, -61.0], "expected": -60.99999999999489}, {"input": [-87.0, -60.5], "expected": -60.4999999999969}, {"input": [-87.0, -60.0], "expected": -59.99999999999812}, {"input": [-87.0, -59.5], "expected": -59.49999999999886}, {"input": [-87.0, -59.0], "expected": -58.99999999999931}, {"input": [-87.0, -58.5], "expected": -58.49999999999958}, {"input": [-87.0, -58.0], "expected": -57.999999999999744}, {"input": [-87.0, -57.5], "expected": -57.499999999999844}, {"input": [-87.0, -57.0], "expected": -56.99999999999991}, {"input": [-87.0, -56.5], "expected": -56.49999999999994}, {"input": [-87.0, -56.0], "expected": -55.999999999999964}, {"input": [-87.0, -55.5], "expected": -55.49999999999998}, {"input": [-87.0, -55.0], "expected": -54.999999999999986}, {"input": [-87.0, -54.5], "expected": -54.49999999999999}, {"input": [-87.0, -54.0], "expected": -53.99999999999999}, {"input": [-87.0, -53.5], "expected": -53.5}, {"input": [-87.0, -53.0], "expected": -53.0}, {"input": [-87.0, -52.5], "expected": -52.5}, {"input": [-87.0, -52.0], "expected": -52.0}, {"input": [-87.0, -51.5], "expected": -51.5}, {"input": [-87.0, -51.0], "expected": -51.0}, {"input": [-87.0, -50.5], "expected": -50.5}, {"input": [-87.0, -50.0], "expected": -50.0}, {"input": [-87.0, -49.5], "expected": -49.5}, {"input": [-87.0, -49.0], "expected": -49.0}, {"input": [-87.0, -48.5], "expected": -48.5}, {"input": [-87.0, -48.0], "expected": -48.0}, {"input": [-87.0, -47.5], "expected": -47.5}, {"input": [-87.0, -47.0], "expected": -47.0}, {"input": [-87.0, -46.5], "expected": -46.5}, {"input": [-87.0, -46.0], "expected": -46.0}, {"input": [-87.0, -45.5], "expected": -45.5}, {"input": [-87.0, -45.0], "expected": -45.0}, {"input": [-87.0, -44.5], "expected": -44.5}, {"input": [-87.0, -44.0], "expected": -44.0}, {"input": [-87.0, -43.5], "expected": -43.5}, {"input": [-87.0, -43.0], "expected": -43.0}, {"input": [-87.0, -42.5], "expected": -42.5}, {"input": [-87.0, -42.0], "expected": -42.0}, {"input": [-87.0, -41.5], "expected": -41.5}, {"input": [-87.0, -41.0], "expected": -41.0}, {"input": [-87.0, -40.5], "expected": -40.5}, {"input": [-87.0, -40.0], "expected": -40.0}, {"input": [-87.0, -39.5], "expected": -39.5}, {"input": [-87.0, -39.0], "expected": -39.0}, {"input": [-87.0, -38.5], "expected": -38.5}, {"input": [-87.0, -38.0], "expected": -38.0}, {"input": [-87.0, -37.5], "expected": -37.5}, {"input": [-87.0, -37.0], "expected": -37.0}, {"input": [-87.0, -36.5], "expected": -36.5}, {"input": [-87.0, -36.0], "expected": -36.0}, {"input": [-87.0, -35.5], "expected": -35.5}, {"input": [-87.0, -35.0], "expected": -35.0}, {"input": [-87.0, -34.5], "expected": -34.5}, {"input": [-87.0, -34.0], "expected": -34.0}, {"input": [-87.0, -33.5], "expected": -33.5}, {"input": [-87.0, -33.0], "expected": -33.0}, {"input": [-87.0, -32.5], "expected": -32.5}, {"input": [-87.0, -32.0], "expected": -32.0}, {"input": [-87.0, -31.5], "expected": -31.5}, {"input": [-87.0, -31.0], "expected": -31.0}, {"input": [-87.0, -30.5], "expected": -30.5}, {"input": [-87.0, -30.0], "expected": -30.0}, {"input": [-87.0, -29.5], "expected": -29.5}, {"input": [-87.0, -29.0], "expected": -29.0}, {"input": [-87.0, -28.5], "expected": -28.5}, {"input": [-87.0, -28.0], "expected": -28.0}, {"input": [-87.0, -27.5], "expected": -27.5}, {"input": [-87.0, -27.0], "expected": -27.0}, {"input": [-87.0, -26.5], "expected": -26.5}, {"input": [-87.0, -26.0], "expected": -26.0}, {"input": [-87.0, -25.5], "expected": -25.5}, {"input": [-87.0, -25.0], "expected": -25.0}, {"input": [-87.0, -24.5], "expected": -24.5}, {"input": [-87.0, -24.0], "expected": -24.0}, {"input": [-87.0, -23.5], "expected": -23.5}, {"input": [-87.0, -23.0], "expected": -23.0}, {"input": [-87.0, -22.5], "expected": -22.5}, {"input": [-87.0, -22.0], "expected": -22.0}, {"input": [-87.0, -21.5], "expected": -21.5}, {"input": [-87.0, -21.0], "expected": -21.0}, {"input": [-87.0, -20.5], "expected": -20.5}, {"input": [-87.0, -20.0], "expected": -20.0}, {"input": [-87.0, -19.5], "expected": -19.5}, {"input": [-87.0, -19.0], "expected": -19.0}, {"input": [-87.0, -18.5], "expected": -18.5}, {"input": [-87.0, -18.0], "expected": -18.0}, {"input": [-87.0, -17.5], "expected": -17.5}, {"input": [-87.0, -17.0], "expected": -17.0}, {"input": [-87.0, -16.5], "expected": -16.5}, {"input": [-87.0, -16.0], "expected": -16.0}, {"input": [-87.0, -15.5], "expected": -15.5}, {"input": [-87.0, -15.0], "expected": -15.0}, {"input": [-87.0, -14.5], "expected": -14.5}, {"input": [-87.0, -14.0], "expected": -14.0}, {"input": [-87.0, -13.5], "expected": -13.5}, {"input": [-87.0, -13.0], "expected": -13.0}, {"input": [-87.0, -12.5], "expected": -12.5}, {"input": [-87.0, -12.0], "expected": -12.0}, {"input": [-87.0, -11.5], "expected": -11.5}, {"input": [-87.0, -11.0], "expected": -11.0}, {"input": [-87.0, -10.5], "expected": -10.5}, {"input": [-87.0, -10.0], "expected": -10.0}, {"input": [-87.0, -9.5], "expected": -9.5}, {"input": [-87.0, -9.0], "expected": -9.0}, {"input": [-87.0, -8.5], "expected": -8.5}, {"input": [-87.0, -8.0], "expected": -8.0}, {"input": [-87.0, -7.5], "expected": -7.5}, {"input": [-87.0, -7.0], "expected": -7.0}, {"input": [-87.0, -6.5], "expected": -6.5}, {"input": [-87.0, -6.0], "expected": -6.0}, {"input": [-87.0, -5.5], "expected": -5.5}, {"input": [-87.0, -5.0], "expected": -5.0}, {"input": [-87.0, -4.5], "expected": -4.5}, {"input": [-87.0, -4.0], "expected": -4.0}, {"input": [-87.0, -3.5], "expected": -3.5}, {"input": [-87.0, -3.0], "expected": -3.0}, {"input": [-87.0, -2.5], "expected": -2.5}, {"input": [-87.0, -2.0], "expected": -2.0}, {"input": [-87.0, -1.5], "expected": -1.5}, {"input": [-87.0, -1.0], "expected": -1.0}, {"input": [-87.0, -0.5], "expected": -0.5}, {"input": [-87.0, 0.0], "expected": 1.6458114310822737e-38}, {"input": [-87.0, 0.5], "expected": 0.5}, {"input": [-87.0, 1.0], "expected": 1.0}, {"input": [-87.0, 1.5], "expected": 1.5}, {"input": [-87.0, 2.0], "expected": 2.0}, {"input": [-87.0, 2.5], "expected": 2.5}, {"input": [-87.0, 3.0], "expected": 3.0}, {"input": [-87.0, 3.5], "expected": 3.5}, {"input": [-87.0, 4.0], "expected": 4.0}, {"input": [-87.0, 4.5], "expected": 4.5}, {"input": [-87.0, 5.0], "expected": 5.0}, {"input": [-87.0, 5.5], "expected": 5.5}, {"input": [-87.0, 6.0], "expected": 6.0}, {"input": [-87.0, 6.5], "expected": 6.5}, {"input": [-87.0, 7.0], "expected": 7.0}, {"input": [-87.0, 7.5], "expected": 7.5}, {"input": [-87.0, 8.0], "expected": 8.0}, {"input": [-87.0, 8.5], "expected": 8.5}, {"input": [-87.0, 9.0], "expected": 9.0}, {"input": [-87.0, 9.5], "expected": 9.5}, {"input": [-87.0, 10.0], "expected": 10.0}, {"input": [-87.0, 10.5], "expected": 10.5}, {"input": [-87.0, 11.0], "expected": 11.0}, {"input": [-87.0, 11.5], "expected": 11.5}, {"input": [-87.0, 12.0], "expected": 12.0}, {"input": [-87.0, 12.5], "expected": 12.5}, {"input": [-87.0, 13.0], "expected": 13.0}, {"input": [-87.0, 13.5], "expected": 13.5}, {"input": [-87.0, 14.0], "expected": 14.0}, {"input": [-87.0, 14.5], "expected": 14.5}, {"input": [-87.0, 15.0], "expected": 15.0}, {"input": [-87.0, 15.5], "expected": 15.5}, {"input": [-87.0, 16.0], "expected": 16.0}, {"input": [-87.0, 16.5], "expected": 16.5}, {"input": [-87.0, 17.0], "expected": 17.0}, {"input": [-87.0, 17.5], "expected": 17.5}, {"input": [-87.0, 18.0], "expected": 18.0}, {"input": [-87.0, 18.5], "expected": 18.5}, {"input": [-87.0, 19.0], "expected": 19.0}, {"input": [-87.0, 19.5], "expected": 19.5}, {"input": [-87.0, 20.0], "expected": 20.0}, {"input": [-87.0, 20.5], "expected": 20.5}, {"input": [-87.0, 21.0], "expected": 21.0}, {"input": [-87.0, 21.5], "expected": 21.5}, {"input": [-87.0, 22.0], "expected": 22.0}, {"input": [-87.0, 22.5], "expected": 22.5}, {"input": [-87.0, 23.0], "expected": 23.0}, {"input": [-87.0, 23.5], "expected": 23.5}, {"input": [-87.0, 24.0], "expected": 24.0}, {"input": [-87.0, 24.5], "expected": 24.5}, {"input": [-87.0, 25.0], "expected": 25.0}, {"input": [-87.0, 25.5], "expected": 25.5}, {"input": [-87.0, 26.0], "expected": 26.0}, {"input": [-87.0, 26.5], "expected": 26.5}, {"input": [-87.0, 27.0], "expected": 27.0}, {"input": [-87.0, 27.5], "expected": 27.5}, {"input": [-87.0, 28.0], "expected": 28.0}, {"input": [-87.0, 28.5], "expected": 28.5}, {"input": [-87.0, 29.0], "expected": 29.0}, {"input": [-87.0, 29.5], "expected": 29.5}, {"input": [-87.0, 30.0], "expected": 30.0}, {"input": [-87.0, 30.5], "expected": 30.5}, {"input": [-87.0, 31.0], "expected": 31.0}, {"input": [-87.0, 31.5], "expected": 31.5}, {"input": [-87.0, 32.0], "expected": 32.0}, {"input": [-87.0, 32.5], "expected": 32.5}, {"input": [-87.0, 33.0], "expected": 33.0}, {"input": [-87.0, 33.5], "expected": 33.5}, {"input": [-87.0, 34.0], "expected": 34.0}, {"input": [-87.0, 34.5], "expected": 34.5}, {"input": [-87.0, 35.0], "expected": 35.0}, {"input": [-87.0, 35.5], "expected": 35.5}, {"input": [-87.0, 36.0], "expected": 36.0}, {"input": [-87.0, 36.5], "expected": 36.5}, {"input": [-87.0, 37.0], "expected": 37.0}, {"input": [-87.0, 37.5], "expected": 37.5}, {"input": [-87.0, 38.0], "expected": 38.0}, {"input": [-87.0, 38.5], "expected": 38.5}, {"input": [-87.0, 39.0], "expected": 39.0}, {"input": [-87.0, 39.5], "expected": 39.5}, {"input": [-87.0, 40.0], "expected": 40.0}, {"input": [-87.0, 40.5], "expected": 40.5}, {"input": [-87.0, 41.0], "expected": 41.0}, {"input": [-87.0, 41.5], "expected": 41.5}, {"input": [-87.0, 42.0], "expected": 42.0}, {"input": [-87.0, 42.5], "expected": 42.5}, {"input": [-87.0, 43.0], "expected": 43.0}, {"input": [-87.0, 43.5], "expected": 43.5}, {"input": [-87.0, 44.0], "expected": 44.0}, {"input": [-87.0, 44.5], "expected": 44.5}, {"input": [-87.0, 45.0], "expected": 45.0}, {"input": [-87.0, 45.5], "expected": 45.5}, {"input": [-87.0, 46.0], "expected": 46.0}, {"input": [-87.0, 46.5], "expected": 46.5}, {"input": [-87.0, 47.0], "expected": 47.0}, {"input": [-87.0, 47.5], "expected": 47.5}, {"input": [-87.0, 48.0], "expected": 48.0}, {"input": [-87.0, 48.5], "expected": 48.5}, {"input": [-87.0, 49.0], "expected": 49.0}, {"input": [-87.0, 49.5], "expected": 49.5}, {"input": [-87.0, 50.0], "expected": 50.0}, {"input": [-87.0, 50.5], "expected": 50.5}, {"input": [-87.0, 51.0], "expected": 51.0}, {"input": [-87.0, 51.5], "expected": 51.5}, {"input": [-87.0, 52.0], "expected": 52.0}, {"input": [-87.0, 52.5], "expected": 52.5}, {"input": [-87.0, 53.0], "expected": 53.0}, {"input": [-87.0, 53.5], "expected": 53.5}, {"input": [-87.0, 54.0], "expected": 54.0}, {"input": [-87.0, 54.5], "expected": 54.5}, {"input": [-87.0, 55.0], "expected": 55.0}, {"input": [-87.0, 55.5], "expected": 55.5}, {"input": [-87.0, 56.0], "expected": 56.0}, {"input": [-87.0, 56.5], "expected": 56.5}, {"input": [-87.0, 57.0], "expected": 57.0}, {"input": [-87.0, 57.5], "expected": 57.5}, {"input": [-87.0, 58.0], "expected": 58.0}, {"input": [-87.0, 58.5], "expected": 58.5}, {"input": [-87.0, 59.0], "expected": 59.0}, {"input": [-87.0, 59.5], "expected": 59.5}, {"input": [-87.0, 60.0], "expected": 60.0}, {"input": [-87.0, 60.5], "expected": 60.5}, {"input": [-87.0, 61.0], "expected": 61.0}, {"input": [-87.0, 61.5], "expected": 61.5}, {"input": [-87.0, 62.0], "expected": 62.0}, {"input": [-87.0, 62.5], "expected": 62.5}, {"input": [-87.0, 63.0], "expected": 63.0}, {"input": [-87.0, 63.5], "expected": 63.5}, {"input": [-87.0, 64.0], "expected": 64.0}, {"input": [-87.0, 64.5], "expected": 64.5}, {"input": [-87.0, 65.0], "expected": 65.0}, {"input": [-87.0, 65.5], "expected": 65.5}, {"input": [-87.0, 66.0], "expected": 66.0}, {"input": [-87.0, 66.5], "expected": 66.5}, {"input": [-87.0, 67.0], "expected": 67.0}, {"input": [-87.0, 67.5], "expected": 67.5}, {"input": [-87.0, 68.0], "expected": 68.0}, {"input": [-87.0, 68.5], "expected": 68.5}, {"input": [-87.0, 69.0], "expected": 69.0}, {"input": [-87.0, 69.5], "expected": 69.5}, {"input": [-87.0, 70.0], "expected": 70.0}, {"input": [-87.0, 70.5], "expected": 70.5}, {"input": [-87.0, 71.0], "expected": 71.0}, {"input": [-87.0, 71.5], "expected": 71.5}, {"input": [-87.0, 72.0], "expected": 72.0}, {"input": [-87.0, 72.5], "expected": 72.5}, {"input": [-87.0, 73.0], "expected": 73.0}, {"input": [-87.0, 73.5], "expected": 73.5}, {"input": [-87.0, 74.0], "expected": 74.0}, {"input": [-87.0, 74.5], "expected": 74.5}, {"input": [-87.0, 75.0], "expected": 75.0}, {"input": [-87.0, 75.5], "expected": 75.5}, {"input": [-87.0, 76.0], "expected": 76.0}, {"input": [-87.0, 76.5], "expected": 76.5}, {"input": [-87.0, 77.0], "expected": 77.0}, {"input": [-87.0, 77.5], "expected": 77.5}, {"input": [-87.0, 78.0], "expected": 78.0}, {"input": [-87.0, 78.5], "expected": 78.5}, {"input": [-87.0, 79.0], "expected": 79.0}, {"input": [-87.0, 79.5], "expected": 79.5}, {"input": [-87.0, 80.0], "expected": 80.0}, {"input": [-87.0, 80.5], "expected": 80.5}, {"input": [-87.0, 81.0], "expected": 81.0}, {"input": [-87.0, 81.5], "expected": 81.5}, {"input": [-87.0, 82.0], "expected": 82.0}, {"input": [-87.0, 82.5], "expected": 82.5}, {"input": [-87.0, 83.0], "expected": 83.0}, {"input": [-87.0, 83.5], "expected": 83.5}, {"input": [-87.0, 84.0], "expected": 84.0}, {"input": [-87.0, 84.5], "expected": 84.5}, {"input": [-87.0, 85.0], "expected": 85.0}, {"input": [-87.0, 85.5], "expected": 85.5}, {"input": [-87.0, 86.0], "expected": 86.0}, {"input": [-87.0, 86.5], "expected": 86.5}, {"input": [-87.0, 87.0], "expected": 87.0}, {"input": [-87.0, 87.5], "expected": 87.5}, {"input": [-87.0, 88.0], "expected": 88.0}, {"input": [-87.0, 88.5], "expected": 88.5}, {"input": [-87.0, 89.0], "expected": 89.0}, {"input": [-87.0, 89.5], "expected": 89.5}, {"input": [-87.0, 90.0], "expected": 90.0}, {"input": [-87.0, 90.5], "expected": 90.5}, {"input": [-87.0, 91.0], "expected": 91.0}, {"input": [-87.0, 91.5], "expected": 91.5}, {"input": [-87.0, 92.0], "expected": 92.0}, {"input": [-87.0, 92.5], "expected": 92.5}, {"input": [-87.0, 93.0], "expected": 93.0}, {"input": [-87.0, 93.5], "expected": 93.5}, {"input": [-87.0, 94.0], "expected": 94.0}, {"input": [-87.0, 94.5], "expected": 94.5}, {"input": [-87.0, 95.0], "expected": 95.0}, {"input": [-87.0, 95.5], "expected": 95.5}, {"input": [-87.0, 96.0], "expected": 96.0}, {"input": [-87.0, 96.5], "expected": 96.5}, {"input": [-87.0, 97.0], "expected": 97.0}, {"input": [-87.0, 97.5], "expected": 97.5}, {"input": [-87.0, 98.0], "expected": 98.0}, {"input": [-87.0, 98.5], "expected": 98.5}, {"input": [-87.0, 99.0], "expected": 99.0}, {"input": [-87.0, 99.5], "expected": 99.5}, {"input": [-86.5, -100.0], "expected": -86.49999862904185}, {"input": [-86.5, -99.5], "expected": -86.49999773967315}, {"input": [-86.5, -99.0], "expected": -86.49999627335377}, {"input": [-86.5, -98.5], "expected": -86.49999385580652}, {"input": [-86.5, -98.0], "expected": -86.49998986995772}, {"input": [-86.5, -97.5], "expected": -86.49998329843868}, {"input": [-86.5, -97.0], "expected": -86.49997246392977}, {"input": [-86.5, -96.5], "expected": -86.49995460110078}, {"input": [-86.5, -96.0], "expected": -86.49992515097136}, {"input": [-86.5, -95.5], "expected": -86.49987659781027}, {"input": [-86.5, -95.0], "expected": -86.49979655232787}, {"input": [-86.5, -94.5], "expected": -86.4996645936271}, {"input": [-86.5, -94.0], "expected": -86.49944706852465}, {"input": [-86.5, -93.5], "expected": -86.49908853354623}, {"input": [-86.5, -93.0], "expected": -86.49849768984025}, {"input": [-86.5, -92.5], "expected": -86.49752431486228}, {"input": [-86.5, -92.0], "expected": -86.49592155672943}, {"input": [-86.5, -91.5], "expected": -86.49328465151088}, {"input": [-86.5, -91.0], "expected": -86.4889522551514}, {"input": [-86.5, -90.5], "expected": -86.4818500720822}, {"input": [-86.5, -90.0], "expected": -86.47024958172737}, {"input": [-86.5, -89.5], "expected": -86.45141264842626}, {"input": [-86.5, -89.0], "expected": -86.42111026570745}, {"input": [-86.5, -88.5], "expected": -86.37307198895702}, {"input": [-86.5, -88.0], "expected": -86.29858672201725}, {"input": [-86.5, -87.5], "expected": -86.18673831248178}, {"input": [-86.5, -87.0], "expected": -86.0259230158199}, {"input": [-86.5, -86.5], "expected": -85.80685281944005}, {"input": [-86.5, -86.0], "expected": -85.5259230158199}, {"input": [-86.5, -85.5], "expected": -85.18673831248178}, {"input": [-86.5, -85.0], "expected": -84.79858672201725}, {"input": [-86.5, -84.5], "expected": -84.37307198895702}, {"input": [-86.5, -84.0], "expected": -83.92111026570745}, {"input": [-86.5, -83.5], "expected": -83.45141264842626}, {"input": [-86.5, -83.0], "expected": -82.97024958172737}, {"input": [-86.5, -82.5], "expected": -82.4818500720822}, {"input": [-86.5, -82.0], "expected": -81.9889522551514}, {"input": [-86.5, -81.5], "expected": -81.49328465151088}, {"input": [-86.5, -81.0], "expected": -80.99592155672943}, {"input": [-86.5, -80.5], "expected": -80.49752431486228}, {"input": [-86.5, -80.0], "expected": -79.99849768984025}, {"input": [-86.5, -79.5], "expected": -79.49908853354623}, {"input": [-86.5, -79.0], "expected": -78.99944706852465}, {"input": [-86.5, -78.5], "expected": -78.4996645936271}, {"input": [-86.5, -78.0], "expected": -77.99979655232787}, {"input": [-86.5, -77.5], "expected": -77.49987659781027}, {"input": [-86.5, -77.0], "expected": -76.99992515097136}, {"input": [-86.5, -76.5], "expected": -76.49995460110078}, {"input": [-86.5, -76.0], "expected": -75.99997246392977}, {"input": [-86.5, -75.5], "expected": -75.49998329843868}, {"input": [-86.5, -75.0], "expected": -74.99998986995772}, {"input": [-86.5, -74.5], "expected": -74.49999385580652}, {"input": [-86.5, -74.0], "expected": -73.99999627335377}, {"input": [-86.5, -73.5], "expected": -73.49999773967315}, {"input": [-86.5, -73.0], "expected": -72.99999862904185}, {"input": [-86.5, -72.5], "expected": -72.49999916847163}, {"input": [-86.5, -72.0], "expected": -71.99999949565246}, {"input": [-86.5, -71.5], "expected": -71.49999969409772}, {"input": [-86.5, -71.0], "expected": -70.99999981446088}, {"input": [-86.5, -70.5], "expected": -70.49999988746484}, {"input": [-86.5, -70.0], "expected": -69.99999993174397}, {"input": [-86.5, -69.5], "expected": -69.49999995860063}, {"input": [-86.5, -69.0], "expected": -68.99999997489}, {"input": [-86.5, -68.5], "expected": -68.49999998477001}, {"input": [-86.5, -68.0], "expected": -67.99999999076255}, {"input": [-86.5, -67.5], "expected": -67.4999999943972}, {"input": [-86.5, -67.0], "expected": -66.99999999660173}, {"input": [-86.5, -66.5], "expected": -66.49999999793884}, {"input": [-86.5, -66.0], "expected": -65.99999999874984}, {"input": [-86.5, -65.5], "expected": -65.49999999924174}, {"input": [-86.5, -65.0], "expected": -64.9999999995401}, {"input": [-86.5, -64.5], "expected": -64.49999999972106}, {"input": [-86.5, -64.0], "expected": -63.99999999983081}, {"input": [-86.5, -63.5], "expected": -63.49999999989738}, {"input": [-86.5, -63.0], "expected": -62.99999999993776}, {"input": [-86.5, -62.5], "expected": -62.49999999996225}, {"input": [-86.5, -62.0], "expected": -61.9999999999771}, {"input": [-86.5, -61.5], "expected": -61.49999999998611}, {"input": [-86.5, -61.0], "expected": -60.99999999999158}, {"input": [-86.5, -60.5], "expected": -60.49999999999489}, {"input": [-86.5, -60.0], "expected": -59.9999999999969}, {"input": [-86.5, -59.5], "expected": -59.49999999999812}, {"input": [-86.5, -59.0], "expected": -58.99999999999886}, {"input": [-86.5, -58.5], "expected": -58.49999999999931}, {"input": [-86.5, -58.0], "expected": -57.99999999999958}, {"input": [-86.5, -57.5], "expected": -57.499999999999744}, {"input": [-86.5, -57.0], "expected": -56.999999999999844}, {"input": [-86.5, -56.5], "expected": -56.49999999999991}, {"input": [-86.5, -56.0], "expected": -55.99999999999994}, {"input": [-86.5, -55.5], "expected": -55.499999999999964}, {"input": [-86.5, -55.0], "expected": -54.99999999999998}, {"input": [-86.5, -54.5], "expected": -54.499999999999986}, {"input": [-86.5, -54.0], "expected": -53.99999999999999}, {"input": [-86.5, -53.5], "expected": -53.49999999999999}, {"input": [-86.5, -53.0], "expected": -53.0}, {"input": [-86.5, -52.5], "expected": -52.5}, {"input": [-86.5, -52.0], "expected": -52.0}, {"input": [-86.5, -51.5], "expected": -51.5}, {"input": [-86.5, -51.0], "expected": -51.0}, {"input": [-86.5, -50.5], "expected": -50.5}, {"input": [-86.5, -50.0], "expected": -50.0}, {"input": [-86.5, -49.5], "expected": -49.5}, {"input": [-86.5, -49.0], "expected": -49.0}, {"input": [-86.5, -48.5], "expected": -48.5}, {"input": [-86.5, -48.0], "expected": -48.0}, {"input": [-86.5, -47.5], "expected": -47.5}, {"input": [-86.5, -47.0], "expected": -47.0}, {"input": [-86.5, -46.5], "expected": -46.5}, {"input": [-86.5, -46.0], "expected": -46.0}, {"input": [-86.5, -45.5], "expected": -45.5}, {"input": [-86.5, -45.0], "expected": -45.0}, {"input": [-86.5, -44.5], "expected": -44.5}, {"input": [-86.5, -44.0], "expected": -44.0}, {"input": [-86.5, -43.5], "expected": -43.5}, {"input": [-86.5, -43.0], "expected": -43.0}, {"input": [-86.5, -42.5], "expected": -42.5}, {"input": [-86.5, -42.0], "expected": -42.0}, {"input": [-86.5, -41.5], "expected": -41.5}, {"input": [-86.5, -41.0], "expected": -41.0}, {"input": [-86.5, -40.5], "expected": -40.5}, {"input": [-86.5, -40.0], "expected": -40.0}, {"input": [-86.5, -39.5], "expected": -39.5}, {"input": [-86.5, -39.0], "expected": -39.0}, {"input": [-86.5, -38.5], "expected": -38.5}, {"input": [-86.5, -38.0], "expected": -38.0}, {"input": [-86.5, -37.5], "expected": -37.5}, {"input": [-86.5, -37.0], "expected": -37.0}, {"input": [-86.5, -36.5], "expected": -36.5}, {"input": [-86.5, -36.0], "expected": -36.0}, {"input": [-86.5, -35.5], "expected": -35.5}, {"input": [-86.5, -35.0], "expected": -35.0}, {"input": [-86.5, -34.5], "expected": -34.5}, {"input": [-86.5, -34.0], "expected": -34.0}, {"input": [-86.5, -33.5], "expected": -33.5}, {"input": [-86.5, -33.0], "expected": -33.0}, {"input": [-86.5, -32.5], "expected": -32.5}, {"input": [-86.5, -32.0], "expected": -32.0}, {"input": [-86.5, -31.5], "expected": -31.5}, {"input": [-86.5, -31.0], "expected": -31.0}, {"input": [-86.5, -30.5], "expected": -30.5}, {"input": [-86.5, -30.0], "expected": -30.0}, {"input": [-86.5, -29.5], "expected": -29.5}, {"input": [-86.5, -29.0], "expected": -29.0}, {"input": [-86.5, -28.5], "expected": -28.5}, {"input": [-86.5, -28.0], "expected": -28.0}, {"input": [-86.5, -27.5], "expected": -27.5}, {"input": [-86.5, -27.0], "expected": -27.0}, {"input": [-86.5, -26.5], "expected": -26.5}, {"input": [-86.5, -26.0], "expected": -26.0}, {"input": [-86.5, -25.5], "expected": -25.5}, {"input": [-86.5, -25.0], "expected": -25.0}, {"input": [-86.5, -24.5], "expected": -24.5}, {"input": [-86.5, -24.0], "expected": -24.0}, {"input": [-86.5, -23.5], "expected": -23.5}, {"input": [-86.5, -23.0], "expected": -23.0}, {"input": [-86.5, -22.5], "expected": -22.5}, {"input": [-86.5, -22.0], "expected": -22.0}, {"input": [-86.5, -21.5], "expected": -21.5}, {"input": [-86.5, -21.0], "expected": -21.0}, {"input": [-86.5, -20.5], "expected": -20.5}, {"input": [-86.5, -20.0], "expected": -20.0}, {"input": [-86.5, -19.5], "expected": -19.5}, {"input": [-86.5, -19.0], "expected": -19.0}, {"input": [-86.5, -18.5], "expected": -18.5}, {"input": [-86.5, -18.0], "expected": -18.0}, {"input": [-86.5, -17.5], "expected": -17.5}, {"input": [-86.5, -17.0], "expected": -17.0}, {"input": [-86.5, -16.5], "expected": -16.5}, {"input": [-86.5, -16.0], "expected": -16.0}, {"input": [-86.5, -15.5], "expected": -15.5}, {"input": [-86.5, -15.0], "expected": -15.0}, {"input": [-86.5, -14.5], "expected": -14.5}, {"input": [-86.5, -14.0], "expected": -14.0}, {"input": [-86.5, -13.5], "expected": -13.5}, {"input": [-86.5, -13.0], "expected": -13.0}, {"input": [-86.5, -12.5], "expected": -12.5}, {"input": [-86.5, -12.0], "expected": -12.0}, {"input": [-86.5, -11.5], "expected": -11.5}, {"input": [-86.5, -11.0], "expected": -11.0}, {"input": [-86.5, -10.5], "expected": -10.5}, {"input": [-86.5, -10.0], "expected": -10.0}, {"input": [-86.5, -9.5], "expected": -9.5}, {"input": [-86.5, -9.0], "expected": -9.0}, {"input": [-86.5, -8.5], "expected": -8.5}, {"input": [-86.5, -8.0], "expected": -8.0}, {"input": [-86.5, -7.5], "expected": -7.5}, {"input": [-86.5, -7.0], "expected": -7.0}, {"input": [-86.5, -6.5], "expected": -6.5}, {"input": [-86.5, -6.0], "expected": -6.0}, {"input": [-86.5, -5.5], "expected": -5.5}, {"input": [-86.5, -5.0], "expected": -5.0}, {"input": [-86.5, -4.5], "expected": -4.5}, {"input": [-86.5, -4.0], "expected": -4.0}, {"input": [-86.5, -3.5], "expected": -3.5}, {"input": [-86.5, -3.0], "expected": -3.0}, {"input": [-86.5, -2.5], "expected": -2.5}, {"input": [-86.5, -2.0], "expected": -2.0}, {"input": [-86.5, -1.5], "expected": -1.5}, {"input": [-86.5, -1.0], "expected": -1.0}, {"input": [-86.5, -0.5], "expected": -0.5}, {"input": [-86.5, 0.0], "expected": 2.7134843139867624e-38}, {"input": [-86.5, 0.5], "expected": 0.5}, {"input": [-86.5, 1.0], "expected": 1.0}, {"input": [-86.5, 1.5], "expected": 1.5}, {"input": [-86.5, 2.0], "expected": 2.0}, {"input": [-86.5, 2.5], "expected": 2.5}, {"input": [-86.5, 3.0], "expected": 3.0}, {"input": [-86.5, 3.5], "expected": 3.5}, {"input": [-86.5, 4.0], "expected": 4.0}, {"input": [-86.5, 4.5], "expected": 4.5}, {"input": [-86.5, 5.0], "expected": 5.0}, {"input": [-86.5, 5.5], "expected": 5.5}, {"input": [-86.5, 6.0], "expected": 6.0}, {"input": [-86.5, 6.5], "expected": 6.5}, {"input": [-86.5, 7.0], "expected": 7.0}, {"input": [-86.5, 7.5], "expected": 7.5}, {"input": [-86.5, 8.0], "expected": 8.0}, {"input": [-86.5, 8.5], "expected": 8.5}, {"input": [-86.5, 9.0], "expected": 9.0}, {"input": [-86.5, 9.5], "expected": 9.5}, {"input": [-86.5, 10.0], "expected": 10.0}, {"input": [-86.5, 10.5], "expected": 10.5}, {"input": [-86.5, 11.0], "expected": 11.0}, {"input": [-86.5, 11.5], "expected": 11.5}, {"input": [-86.5, 12.0], "expected": 12.0}, {"input": [-86.5, 12.5], "expected": 12.5}, {"input": [-86.5, 13.0], "expected": 13.0}, {"input": [-86.5, 13.5], "expected": 13.5}, {"input": [-86.5, 14.0], "expected": 14.0}, {"input": [-86.5, 14.5], "expected": 14.5}, {"input": [-86.5, 15.0], "expected": 15.0}, {"input": [-86.5, 15.5], "expected": 15.5}, {"input": [-86.5, 16.0], "expected": 16.0}, {"input": [-86.5, 16.5], "expected": 16.5}, {"input": [-86.5, 17.0], "expected": 17.0}, {"input": [-86.5, 17.5], "expected": 17.5}, {"input": [-86.5, 18.0], "expected": 18.0}, {"input": [-86.5, 18.5], "expected": 18.5}, {"input": [-86.5, 19.0], "expected": 19.0}, {"input": [-86.5, 19.5], "expected": 19.5}, {"input": [-86.5, 20.0], "expected": 20.0}, {"input": [-86.5, 20.5], "expected": 20.5}, {"input": [-86.5, 21.0], "expected": 21.0}, {"input": [-86.5, 21.5], "expected": 21.5}, {"input": [-86.5, 22.0], "expected": 22.0}, {"input": [-86.5, 22.5], "expected": 22.5}, {"input": [-86.5, 23.0], "expected": 23.0}, {"input": [-86.5, 23.5], "expected": 23.5}, {"input": [-86.5, 24.0], "expected": 24.0}, {"input": [-86.5, 24.5], "expected": 24.5}, {"input": [-86.5, 25.0], "expected": 25.0}, {"input": [-86.5, 25.5], "expected": 25.5}, {"input": [-86.5, 26.0], "expected": 26.0}, {"input": [-86.5, 26.5], "expected": 26.5}, {"input": [-86.5, 27.0], "expected": 27.0}, {"input": [-86.5, 27.5], "expected": 27.5}, {"input": [-86.5, 28.0], "expected": 28.0}, {"input": [-86.5, 28.5], "expected": 28.5}, {"input": [-86.5, 29.0], "expected": 29.0}, {"input": [-86.5, 29.5], "expected": 29.5}, {"input": [-86.5, 30.0], "expected": 30.0}, {"input": [-86.5, 30.5], "expected": 30.5}, {"input": [-86.5, 31.0], "expected": 31.0}, {"input": [-86.5, 31.5], "expected": 31.5}, {"input": [-86.5, 32.0], "expected": 32.0}, {"input": [-86.5, 32.5], "expected": 32.5}, {"input": [-86.5, 33.0], "expected": 33.0}, {"input": [-86.5, 33.5], "expected": 33.5}, {"input": [-86.5, 34.0], "expected": 34.0}, {"input": [-86.5, 34.5], "expected": 34.5}, {"input": [-86.5, 35.0], "expected": 35.0}, {"input": [-86.5, 35.5], "expected": 35.5}, {"input": [-86.5, 36.0], "expected": 36.0}, {"input": [-86.5, 36.5], "expected": 36.5}, {"input": [-86.5, 37.0], "expected": 37.0}, {"input": [-86.5, 37.5], "expected": 37.5}, {"input": [-86.5, 38.0], "expected": 38.0}, {"input": [-86.5, 38.5], "expected": 38.5}, {"input": [-86.5, 39.0], "expected": 39.0}, {"input": [-86.5, 39.5], "expected": 39.5}, {"input": [-86.5, 40.0], "expected": 40.0}, {"input": [-86.5, 40.5], "expected": 40.5}, {"input": [-86.5, 41.0], "expected": 41.0}, {"input": [-86.5, 41.5], "expected": 41.5}, {"input": [-86.5, 42.0], "expected": 42.0}, {"input": [-86.5, 42.5], "expected": 42.5}, {"input": [-86.5, 43.0], "expected": 43.0}, {"input": [-86.5, 43.5], "expected": 43.5}, {"input": [-86.5, 44.0], "expected": 44.0}, {"input": [-86.5, 44.5], "expected": 44.5}, {"input": [-86.5, 45.0], "expected": 45.0}, {"input": [-86.5, 45.5], "expected": 45.5}, {"input": [-86.5, 46.0], "expected": 46.0}, {"input": [-86.5, 46.5], "expected": 46.5}, {"input": [-86.5, 47.0], "expected": 47.0}, {"input": [-86.5, 47.5], "expected": 47.5}, {"input": [-86.5, 48.0], "expected": 48.0}, {"input": [-86.5, 48.5], "expected": 48.5}, {"input": [-86.5, 49.0], "expected": 49.0}, {"input": [-86.5, 49.5], "expected": 49.5}, {"input": [-86.5, 50.0], "expected": 50.0}, {"input": [-86.5, 50.5], "expected": 50.5}, {"input": [-86.5, 51.0], "expected": 51.0}, {"input": [-86.5, 51.5], "expected": 51.5}, {"input": [-86.5, 52.0], "expected": 52.0}, {"input": [-86.5, 52.5], "expected": 52.5}, {"input": [-86.5, 53.0], "expected": 53.0}, {"input": [-86.5, 53.5], "expected": 53.5}, {"input": [-86.5, 54.0], "expected": 54.0}, {"input": [-86.5, 54.5], "expected": 54.5}, {"input": [-86.5, 55.0], "expected": 55.0}, {"input": [-86.5, 55.5], "expected": 55.5}, {"input": [-86.5, 56.0], "expected": 56.0}, {"input": [-86.5, 56.5], "expected": 56.5}, {"input": [-86.5, 57.0], "expected": 57.0}, {"input": [-86.5, 57.5], "expected": 57.5}, {"input": [-86.5, 58.0], "expected": 58.0}, {"input": [-86.5, 58.5], "expected": 58.5}, {"input": [-86.5, 59.0], "expected": 59.0}, {"input": [-86.5, 59.5], "expected": 59.5}, {"input": [-86.5, 60.0], "expected": 60.0}, {"input": [-86.5, 60.5], "expected": 60.5}, {"input": [-86.5, 61.0], "expected": 61.0}, {"input": [-86.5, 61.5], "expected": 61.5}, {"input": [-86.5, 62.0], "expected": 62.0}, {"input": [-86.5, 62.5], "expected": 62.5}, {"input": [-86.5, 63.0], "expected": 63.0}, {"input": [-86.5, 63.5], "expected": 63.5}, {"input": [-86.5, 64.0], "expected": 64.0}, {"input": [-86.5, 64.5], "expected": 64.5}, {"input": [-86.5, 65.0], "expected": 65.0}, {"input": [-86.5, 65.5], "expected": 65.5}, {"input": [-86.5, 66.0], "expected": 66.0}, {"input": [-86.5, 66.5], "expected": 66.5}, {"input": [-86.5, 67.0], "expected": 67.0}, {"input": [-86.5, 67.5], "expected": 67.5}, {"input": [-86.5, 68.0], "expected": 68.0}, {"input": [-86.5, 68.5], "expected": 68.5}, {"input": [-86.5, 69.0], "expected": 69.0}, {"input": [-86.5, 69.5], "expected": 69.5}, {"input": [-86.5, 70.0], "expected": 70.0}, {"input": [-86.5, 70.5], "expected": 70.5}, {"input": [-86.5, 71.0], "expected": 71.0}, {"input": [-86.5, 71.5], "expected": 71.5}, {"input": [-86.5, 72.0], "expected": 72.0}, {"input": [-86.5, 72.5], "expected": 72.5}, {"input": [-86.5, 73.0], "expected": 73.0}, {"input": [-86.5, 73.5], "expected": 73.5}, {"input": [-86.5, 74.0], "expected": 74.0}, {"input": [-86.5, 74.5], "expected": 74.5}, {"input": [-86.5, 75.0], "expected": 75.0}, {"input": [-86.5, 75.5], "expected": 75.5}, {"input": [-86.5, 76.0], "expected": 76.0}, {"input": [-86.5, 76.5], "expected": 76.5}, {"input": [-86.5, 77.0], "expected": 77.0}, {"input": [-86.5, 77.5], "expected": 77.5}, {"input": [-86.5, 78.0], "expected": 78.0}, {"input": [-86.5, 78.5], "expected": 78.5}, {"input": [-86.5, 79.0], "expected": 79.0}, {"input": [-86.5, 79.5], "expected": 79.5}, {"input": [-86.5, 80.0], "expected": 80.0}, {"input": [-86.5, 80.5], "expected": 80.5}, {"input": [-86.5, 81.0], "expected": 81.0}, {"input": [-86.5, 81.5], "expected": 81.5}, {"input": [-86.5, 82.0], "expected": 82.0}, {"input": [-86.5, 82.5], "expected": 82.5}, {"input": [-86.5, 83.0], "expected": 83.0}, {"input": [-86.5, 83.5], "expected": 83.5}, {"input": [-86.5, 84.0], "expected": 84.0}, {"input": [-86.5, 84.5], "expected": 84.5}, {"input": [-86.5, 85.0], "expected": 85.0}, {"input": [-86.5, 85.5], "expected": 85.5}, {"input": [-86.5, 86.0], "expected": 86.0}, {"input": [-86.5, 86.5], "expected": 86.5}, {"input": [-86.5, 87.0], "expected": 87.0}, {"input": [-86.5, 87.5], "expected": 87.5}, {"input": [-86.5, 88.0], "expected": 88.0}, {"input": [-86.5, 88.5], "expected": 88.5}, {"input": [-86.5, 89.0], "expected": 89.0}, {"input": [-86.5, 89.5], "expected": 89.5}, {"input": [-86.5, 90.0], "expected": 90.0}, {"input": [-86.5, 90.5], "expected": 90.5}, {"input": [-86.5, 91.0], "expected": 91.0}, {"input": [-86.5, 91.5], "expected": 91.5}, {"input": [-86.5, 92.0], "expected": 92.0}, {"input": [-86.5, 92.5], "expected": 92.5}, {"input": [-86.5, 93.0], "expected": 93.0}, {"input": [-86.5, 93.5], "expected": 93.5}, {"input": [-86.5, 94.0], "expected": 94.0}, {"input": [-86.5, 94.5], "expected": 94.5}, {"input": [-86.5, 95.0], "expected": 95.0}, {"input": [-86.5, 95.5], "expected": 95.5}, {"input": [-86.5, 96.0], "expected": 96.0}, {"input": [-86.5, 96.5], "expected": 96.5}, {"input": [-86.5, 97.0], "expected": 97.0}, {"input": [-86.5, 97.5], "expected": 97.5}, {"input": [-86.5, 98.0], "expected": 98.0}, {"input": [-86.5, 98.5], "expected": 98.5}, {"input": [-86.5, 99.0], "expected": 99.0}, {"input": [-86.5, 99.5], "expected": 99.5}, {"input": [-86.0, -100.0], "expected": -85.99999916847163}, {"input": [-86.0, -99.5], "expected": -85.99999862904185}, {"input": [-86.0, -99.0], "expected": -85.99999773967315}, {"input": [-86.0, -98.5], "expected": -85.99999627335377}, {"input": [-86.0, -98.0], "expected": -85.99999385580652}, {"input": [-86.0, -97.5], "expected": -85.99998986995772}, {"input": [-86.0, -97.0], "expected": -85.99998329843868}, {"input": [-86.0, -96.5], "expected": -85.99997246392977}, {"input": [-86.0, -96.0], "expected": -85.99995460110078}, {"input": [-86.0, -95.5], "expected": -85.99992515097136}, {"input": [-86.0, -95.0], "expected": -85.99987659781027}, {"input": [-86.0, -94.5], "expected": -85.99979655232787}, {"input": [-86.0, -94.0], "expected": -85.9996645936271}, {"input": [-86.0, -93.5], "expected": -85.99944706852465}, {"input": [-86.0, -93.0], "expected": -85.99908853354623}, {"input": [-86.0, -92.5], "expected": -85.99849768984025}, {"input": [-86.0, -92.0], "expected": -85.99752431486228}, {"input": [-86.0, -91.5], "expected": -85.99592155672943}, {"input": [-86.0, -91.0], "expected": -85.99328465151088}, {"input": [-86.0, -90.5], "expected": -85.9889522551514}, {"input": [-86.0, -90.0], "expected": -85.9818500720822}, {"input": [-86.0, -89.5], "expected": -85.97024958172737}, {"input": [-86.0, -89.0], "expected": -85.95141264842626}, {"input": [-86.0, -88.5], "expected": -85.92111026570745}, {"input": [-86.0, -88.0], "expected": -85.87307198895702}, {"input": [-86.0, -87.5], "expected": -85.79858672201725}, {"input": [-86.0, -87.0], "expected": -85.68673831248178}, {"input": [-86.0, -86.5], "expected": -85.5259230158199}, {"input": [-86.0, -86.0], "expected": -85.30685281944005}, {"input": [-86.0, -85.5], "expected": -85.0259230158199}, {"input": [-86.0, -85.0], "expected": -84.68673831248178}, {"input": [-86.0, -84.5], "expected": -84.29858672201725}, {"input": [-86.0, -84.0], "expected": -83.87307198895702}, {"input": [-86.0, -83.5], "expected": -83.42111026570745}, {"input": [-86.0, -83.0], "expected": -82.95141264842626}, {"input": [-86.0, -82.5], "expected": -82.47024958172737}, {"input": [-86.0, -82.0], "expected": -81.9818500720822}, {"input": [-86.0, -81.5], "expected": -81.4889522551514}, {"input": [-86.0, -81.0], "expected": -80.99328465151088}, {"input": [-86.0, -80.5], "expected": -80.49592155672943}, {"input": [-86.0, -80.0], "expected": -79.99752431486228}, {"input": [-86.0, -79.5], "expected": -79.49849768984025}, {"input": [-86.0, -79.0], "expected": -78.99908853354623}, {"input": [-86.0, -78.5], "expected": -78.49944706852465}, {"input": [-86.0, -78.0], "expected": -77.9996645936271}, {"input": [-86.0, -77.5], "expected": -77.49979655232787}, {"input": [-86.0, -77.0], "expected": -76.99987659781027}, {"input": [-86.0, -76.5], "expected": -76.49992515097136}, {"input": [-86.0, -76.0], "expected": -75.99995460110078}, {"input": [-86.0, -75.5], "expected": -75.49997246392977}, {"input": [-86.0, -75.0], "expected": -74.99998329843868}, {"input": [-86.0, -74.5], "expected": -74.49998986995772}, {"input": [-86.0, -74.0], "expected": -73.99999385580652}, {"input": [-86.0, -73.5], "expected": -73.49999627335377}, {"input": [-86.0, -73.0], "expected": -72.99999773967315}, {"input": [-86.0, -72.5], "expected": -72.49999862904185}, {"input": [-86.0, -72.0], "expected": -71.99999916847163}, {"input": [-86.0, -71.5], "expected": -71.49999949565246}, {"input": [-86.0, -71.0], "expected": -70.99999969409772}, {"input": [-86.0, -70.5], "expected": -70.49999981446088}, {"input": [-86.0, -70.0], "expected": -69.99999988746484}, {"input": [-86.0, -69.5], "expected": -69.49999993174397}, {"input": [-86.0, -69.0], "expected": -68.99999995860063}, {"input": [-86.0, -68.5], "expected": -68.49999997489}, {"input": [-86.0, -68.0], "expected": -67.99999998477001}, {"input": [-86.0, -67.5], "expected": -67.49999999076255}, {"input": [-86.0, -67.0], "expected": -66.9999999943972}, {"input": [-86.0, -66.5], "expected": -66.49999999660173}, {"input": [-86.0, -66.0], "expected": -65.99999999793884}, {"input": [-86.0, -65.5], "expected": -65.49999999874984}, {"input": [-86.0, -65.0], "expected": -64.99999999924174}, {"input": [-86.0, -64.5], "expected": -64.4999999995401}, {"input": [-86.0, -64.0], "expected": -63.999999999721055}, {"input": [-86.0, -63.5], "expected": -63.49999999983081}, {"input": [-86.0, -63.0], "expected": -62.99999999989738}, {"input": [-86.0, -62.5], "expected": -62.49999999993776}, {"input": [-86.0, -62.0], "expected": -61.99999999996225}, {"input": [-86.0, -61.5], "expected": -61.4999999999771}, {"input": [-86.0, -61.0], "expected": -60.99999999998611}, {"input": [-86.0, -60.5], "expected": -60.49999999999158}, {"input": [-86.0, -60.0], "expected": -59.99999999999489}, {"input": [-86.0, -59.5], "expected": -59.4999999999969}, {"input": [-86.0, -59.0], "expected": -58.99999999999812}, {"input": [-86.0, -58.5], "expected": -58.49999999999886}, {"input": [-86.0, -58.0], "expected": -57.99999999999931}, {"input": [-86.0, -57.5], "expected": -57.49999999999958}, {"input": [-86.0, -57.0], "expected": -56.999999999999744}, {"input": [-86.0, -56.5], "expected": -56.499999999999844}, {"input": [-86.0, -56.0], "expected": -55.99999999999991}, {"input": [-86.0, -55.5], "expected": -55.49999999999994}, {"input": [-86.0, -55.0], "expected": -54.999999999999964}, {"input": [-86.0, -54.5], "expected": -54.49999999999998}, {"input": [-86.0, -54.0], "expected": -53.999999999999986}, {"input": [-86.0, -53.5], "expected": -53.49999999999999}, {"input": [-86.0, -53.0], "expected": -52.99999999999999}, {"input": [-86.0, -52.5], "expected": -52.5}, {"input": [-86.0, -52.0], "expected": -52.0}, {"input": [-86.0, -51.5], "expected": -51.5}, {"input": [-86.0, -51.0], "expected": -51.0}, {"input": [-86.0, -50.5], "expected": -50.5}, {"input": [-86.0, -50.0], "expected": -50.0}, {"input": [-86.0, -49.5], "expected": -49.5}, {"input": [-86.0, -49.0], "expected": -49.0}, {"input": [-86.0, -48.5], "expected": -48.5}, {"input": [-86.0, -48.0], "expected": -48.0}, {"input": [-86.0, -47.5], "expected": -47.5}, {"input": [-86.0, -47.0], "expected": -47.0}, {"input": [-86.0, -46.5], "expected": -46.5}, {"input": [-86.0, -46.0], "expected": -46.0}, {"input": [-86.0, -45.5], "expected": -45.5}, {"input": [-86.0, -45.0], "expected": -45.0}, {"input": [-86.0, -44.5], "expected": -44.5}, {"input": [-86.0, -44.0], "expected": -44.0}, {"input": [-86.0, -43.5], "expected": -43.5}, {"input": [-86.0, -43.0], "expected": -43.0}, {"input": [-86.0, -42.5], "expected": -42.5}, {"input": [-86.0, -42.0], "expected": -42.0}, {"input": [-86.0, -41.5], "expected": -41.5}, {"input": [-86.0, -41.0], "expected": -41.0}, {"input": [-86.0, -40.5], "expected": -40.5}, {"input": [-86.0, -40.0], "expected": -40.0}, {"input": [-86.0, -39.5], "expected": -39.5}, {"input": [-86.0, -39.0], "expected": -39.0}, {"input": [-86.0, -38.5], "expected": -38.5}, {"input": [-86.0, -38.0], "expected": -38.0}, {"input": [-86.0, -37.5], "expected": -37.5}, {"input": [-86.0, -37.0], "expected": -37.0}, {"input": [-86.0, -36.5], "expected": -36.5}, {"input": [-86.0, -36.0], "expected": -36.0}, {"input": [-86.0, -35.5], "expected": -35.5}, {"input": [-86.0, -35.0], "expected": -35.0}, {"input": [-86.0, -34.5], "expected": -34.5}, {"input": [-86.0, -34.0], "expected": -34.0}, {"input": [-86.0, -33.5], "expected": -33.5}, {"input": [-86.0, -33.0], "expected": -33.0}, {"input": [-86.0, -32.5], "expected": -32.5}, {"input": [-86.0, -32.0], "expected": -32.0}, {"input": [-86.0, -31.5], "expected": -31.5}, {"input": [-86.0, -31.0], "expected": -31.0}, {"input": [-86.0, -30.5], "expected": -30.5}, {"input": [-86.0, -30.0], "expected": -30.0}, {"input": [-86.0, -29.5], "expected": -29.5}, {"input": [-86.0, -29.0], "expected": -29.0}, {"input": [-86.0, -28.5], "expected": -28.5}, {"input": [-86.0, -28.0], "expected": -28.0}, {"input": [-86.0, -27.5], "expected": -27.5}, {"input": [-86.0, -27.0], "expected": -27.0}, {"input": [-86.0, -26.5], "expected": -26.5}, {"input": [-86.0, -26.0], "expected": -26.0}, {"input": [-86.0, -25.5], "expected": -25.5}, {"input": [-86.0, -25.0], "expected": -25.0}, {"input": [-86.0, -24.5], "expected": -24.5}, {"input": [-86.0, -24.0], "expected": -24.0}, {"input": [-86.0, -23.5], "expected": -23.5}, {"input": [-86.0, -23.0], "expected": -23.0}, {"input": [-86.0, -22.5], "expected": -22.5}, {"input": [-86.0, -22.0], "expected": -22.0}, {"input": [-86.0, -21.5], "expected": -21.5}, {"input": [-86.0, -21.0], "expected": -21.0}, {"input": [-86.0, -20.5], "expected": -20.5}, {"input": [-86.0, -20.0], "expected": -20.0}, {"input": [-86.0, -19.5], "expected": -19.5}, {"input": [-86.0, -19.0], "expected": -19.0}, {"input": [-86.0, -18.5], "expected": -18.5}, {"input": [-86.0, -18.0], "expected": -18.0}, {"input": [-86.0, -17.5], "expected": -17.5}, {"input": [-86.0, -17.0], "expected": -17.0}, {"input": [-86.0, -16.5], "expected": -16.5}, {"input": [-86.0, -16.0], "expected": -16.0}, {"input": [-86.0, -15.5], "expected": -15.5}, {"input": [-86.0, -15.0], "expected": -15.0}, {"input": [-86.0, -14.5], "expected": -14.5}, {"input": [-86.0, -14.0], "expected": -14.0}, {"input": [-86.0, -13.5], "expected": -13.5}, {"input": [-86.0, -13.0], "expected": -13.0}, {"input": [-86.0, -12.5], "expected": -12.5}, {"input": [-86.0, -12.0], "expected": -12.0}, {"input": [-86.0, -11.5], "expected": -11.5}, {"input": [-86.0, -11.0], "expected": -11.0}, {"input": [-86.0, -10.5], "expected": -10.5}, {"input": [-86.0, -10.0], "expected": -10.0}, {"input": [-86.0, -9.5], "expected": -9.5}, {"input": [-86.0, -9.0], "expected": -9.0}, {"input": [-86.0, -8.5], "expected": -8.5}, {"input": [-86.0, -8.0], "expected": -8.0}, {"input": [-86.0, -7.5], "expected": -7.5}, {"input": [-86.0, -7.0], "expected": -7.0}, {"input": [-86.0, -6.5], "expected": -6.5}, {"input": [-86.0, -6.0], "expected": -6.0}, {"input": [-86.0, -5.5], "expected": -5.5}, {"input": [-86.0, -5.0], "expected": -5.0}, {"input": [-86.0, -4.5], "expected": -4.5}, {"input": [-86.0, -4.0], "expected": -4.0}, {"input": [-86.0, -3.5], "expected": -3.5}, {"input": [-86.0, -3.0], "expected": -3.0}, {"input": [-86.0, -2.5], "expected": -2.5}, {"input": [-86.0, -2.0], "expected": -2.0}, {"input": [-86.0, -1.5], "expected": -1.5}, {"input": [-86.0, -1.0], "expected": -1.0}, {"input": [-86.0, -0.5], "expected": -0.5}, {"input": [-86.0, 0.0], "expected": 4.4737793061811207e-38}, {"input": [-86.0, 0.5], "expected": 0.5}, {"input": [-86.0, 1.0], "expected": 1.0}, {"input": [-86.0, 1.5], "expected": 1.5}, {"input": [-86.0, 2.0], "expected": 2.0}, {"input": [-86.0, 2.5], "expected": 2.5}, {"input": [-86.0, 3.0], "expected": 3.0}, {"input": [-86.0, 3.5], "expected": 3.5}, {"input": [-86.0, 4.0], "expected": 4.0}, {"input": [-86.0, 4.5], "expected": 4.5}, {"input": [-86.0, 5.0], "expected": 5.0}, {"input": [-86.0, 5.5], "expected": 5.5}, {"input": [-86.0, 6.0], "expected": 6.0}, {"input": [-86.0, 6.5], "expected": 6.5}, {"input": [-86.0, 7.0], "expected": 7.0}, {"input": [-86.0, 7.5], "expected": 7.5}, {"input": [-86.0, 8.0], "expected": 8.0}, {"input": [-86.0, 8.5], "expected": 8.5}, {"input": [-86.0, 9.0], "expected": 9.0}, {"input": [-86.0, 9.5], "expected": 9.5}, {"input": [-86.0, 10.0], "expected": 10.0}, {"input": [-86.0, 10.5], "expected": 10.5}, {"input": [-86.0, 11.0], "expected": 11.0}, {"input": [-86.0, 11.5], "expected": 11.5}, {"input": [-86.0, 12.0], "expected": 12.0}, {"input": [-86.0, 12.5], "expected": 12.5}, {"input": [-86.0, 13.0], "expected": 13.0}, {"input": [-86.0, 13.5], "expected": 13.5}, {"input": [-86.0, 14.0], "expected": 14.0}, {"input": [-86.0, 14.5], "expected": 14.5}, {"input": [-86.0, 15.0], "expected": 15.0}, {"input": [-86.0, 15.5], "expected": 15.5}, {"input": [-86.0, 16.0], "expected": 16.0}, {"input": [-86.0, 16.5], "expected": 16.5}, {"input": [-86.0, 17.0], "expected": 17.0}, {"input": [-86.0, 17.5], "expected": 17.5}, {"input": [-86.0, 18.0], "expected": 18.0}, {"input": [-86.0, 18.5], "expected": 18.5}, {"input": [-86.0, 19.0], "expected": 19.0}, {"input": [-86.0, 19.5], "expected": 19.5}, {"input": [-86.0, 20.0], "expected": 20.0}, {"input": [-86.0, 20.5], "expected": 20.5}, {"input": [-86.0, 21.0], "expected": 21.0}, {"input": [-86.0, 21.5], "expected": 21.5}, {"input": [-86.0, 22.0], "expected": 22.0}, {"input": [-86.0, 22.5], "expected": 22.5}, {"input": [-86.0, 23.0], "expected": 23.0}, {"input": [-86.0, 23.5], "expected": 23.5}, {"input": [-86.0, 24.0], "expected": 24.0}, {"input": [-86.0, 24.5], "expected": 24.5}, {"input": [-86.0, 25.0], "expected": 25.0}, {"input": [-86.0, 25.5], "expected": 25.5}, {"input": [-86.0, 26.0], "expected": 26.0}, {"input": [-86.0, 26.5], "expected": 26.5}, {"input": [-86.0, 27.0], "expected": 27.0}, {"input": [-86.0, 27.5], "expected": 27.5}, {"input": [-86.0, 28.0], "expected": 28.0}, {"input": [-86.0, 28.5], "expected": 28.5}, {"input": [-86.0, 29.0], "expected": 29.0}, {"input": [-86.0, 29.5], "expected": 29.5}, {"input": [-86.0, 30.0], "expected": 30.0}, {"input": [-86.0, 30.5], "expected": 30.5}, {"input": [-86.0, 31.0], "expected": 31.0}, {"input": [-86.0, 31.5], "expected": 31.5}, {"input": [-86.0, 32.0], "expected": 32.0}, {"input": [-86.0, 32.5], "expected": 32.5}, {"input": [-86.0, 33.0], "expected": 33.0}, {"input": [-86.0, 33.5], "expected": 33.5}, {"input": [-86.0, 34.0], "expected": 34.0}, {"input": [-86.0, 34.5], "expected": 34.5}, {"input": [-86.0, 35.0], "expected": 35.0}, {"input": [-86.0, 35.5], "expected": 35.5}, {"input": [-86.0, 36.0], "expected": 36.0}, {"input": [-86.0, 36.5], "expected": 36.5}, {"input": [-86.0, 37.0], "expected": 37.0}, {"input": [-86.0, 37.5], "expected": 37.5}, {"input": [-86.0, 38.0], "expected": 38.0}, {"input": [-86.0, 38.5], "expected": 38.5}, {"input": [-86.0, 39.0], "expected": 39.0}, {"input": [-86.0, 39.5], "expected": 39.5}, {"input": [-86.0, 40.0], "expected": 40.0}, {"input": [-86.0, 40.5], "expected": 40.5}, {"input": [-86.0, 41.0], "expected": 41.0}, {"input": [-86.0, 41.5], "expected": 41.5}, {"input": [-86.0, 42.0], "expected": 42.0}, {"input": [-86.0, 42.5], "expected": 42.5}, {"input": [-86.0, 43.0], "expected": 43.0}, {"input": [-86.0, 43.5], "expected": 43.5}, {"input": [-86.0, 44.0], "expected": 44.0}, {"input": [-86.0, 44.5], "expected": 44.5}, {"input": [-86.0, 45.0], "expected": 45.0}, {"input": [-86.0, 45.5], "expected": 45.5}, {"input": [-86.0, 46.0], "expected": 46.0}, {"input": [-86.0, 46.5], "expected": 46.5}, {"input": [-86.0, 47.0], "expected": 47.0}, {"input": [-86.0, 47.5], "expected": 47.5}, {"input": [-86.0, 48.0], "expected": 48.0}, {"input": [-86.0, 48.5], "expected": 48.5}, {"input": [-86.0, 49.0], "expected": 49.0}, {"input": [-86.0, 49.5], "expected": 49.5}, {"input": [-86.0, 50.0], "expected": 50.0}, {"input": [-86.0, 50.5], "expected": 50.5}, {"input": [-86.0, 51.0], "expected": 51.0}, {"input": [-86.0, 51.5], "expected": 51.5}, {"input": [-86.0, 52.0], "expected": 52.0}, {"input": [-86.0, 52.5], "expected": 52.5}, {"input": [-86.0, 53.0], "expected": 53.0}, {"input": [-86.0, 53.5], "expected": 53.5}, {"input": [-86.0, 54.0], "expected": 54.0}, {"input": [-86.0, 54.5], "expected": 54.5}, {"input": [-86.0, 55.0], "expected": 55.0}, {"input": [-86.0, 55.5], "expected": 55.5}, {"input": [-86.0, 56.0], "expected": 56.0}, {"input": [-86.0, 56.5], "expected": 56.5}, {"input": [-86.0, 57.0], "expected": 57.0}, {"input": [-86.0, 57.5], "expected": 57.5}, {"input": [-86.0, 58.0], "expected": 58.0}, {"input": [-86.0, 58.5], "expected": 58.5}, {"input": [-86.0, 59.0], "expected": 59.0}, {"input": [-86.0, 59.5], "expected": 59.5}, {"input": [-86.0, 60.0], "expected": 60.0}, {"input": [-86.0, 60.5], "expected": 60.5}, {"input": [-86.0, 61.0], "expected": 61.0}, {"input": [-86.0, 61.5], "expected": 61.5}, {"input": [-86.0, 62.0], "expected": 62.0}, {"input": [-86.0, 62.5], "expected": 62.5}, {"input": [-86.0, 63.0], "expected": 63.0}, {"input": [-86.0, 63.5], "expected": 63.5}, {"input": [-86.0, 64.0], "expected": 64.0}, {"input": [-86.0, 64.5], "expected": 64.5}, {"input": [-86.0, 65.0], "expected": 65.0}, {"input": [-86.0, 65.5], "expected": 65.5}, {"input": [-86.0, 66.0], "expected": 66.0}, {"input": [-86.0, 66.5], "expected": 66.5}, {"input": [-86.0, 67.0], "expected": 67.0}, {"input": [-86.0, 67.5], "expected": 67.5}, {"input": [-86.0, 68.0], "expected": 68.0}, {"input": [-86.0, 68.5], "expected": 68.5}, {"input": [-86.0, 69.0], "expected": 69.0}, {"input": [-86.0, 69.5], "expected": 69.5}, {"input": [-86.0, 70.0], "expected": 70.0}, {"input": [-86.0, 70.5], "expected": 70.5}, {"input": [-86.0, 71.0], "expected": 71.0}, {"input": [-86.0, 71.5], "expected": 71.5}, {"input": [-86.0, 72.0], "expected": 72.0}, {"input": [-86.0, 72.5], "expected": 72.5}, {"input": [-86.0, 73.0], "expected": 73.0}, {"input": [-86.0, 73.5], "expected": 73.5}, {"input": [-86.0, 74.0], "expected": 74.0}, {"input": [-86.0, 74.5], "expected": 74.5}, {"input": [-86.0, 75.0], "expected": 75.0}, {"input": [-86.0, 75.5], "expected": 75.5}, {"input": [-86.0, 76.0], "expected": 76.0}, {"input": [-86.0, 76.5], "expected": 76.5}, {"input": [-86.0, 77.0], "expected": 77.0}, {"input": [-86.0, 77.5], "expected": 77.5}, {"input": [-86.0, 78.0], "expected": 78.0}, {"input": [-86.0, 78.5], "expected": 78.5}, {"input": [-86.0, 79.0], "expected": 79.0}, {"input": [-86.0, 79.5], "expected": 79.5}, {"input": [-86.0, 80.0], "expected": 80.0}, {"input": [-86.0, 80.5], "expected": 80.5}, {"input": [-86.0, 81.0], "expected": 81.0}, {"input": [-86.0, 81.5], "expected": 81.5}, {"input": [-86.0, 82.0], "expected": 82.0}, {"input": [-86.0, 82.5], "expected": 82.5}, {"input": [-86.0, 83.0], "expected": 83.0}, {"input": [-86.0, 83.5], "expected": 83.5}, {"input": [-86.0, 84.0], "expected": 84.0}, {"input": [-86.0, 84.5], "expected": 84.5}, {"input": [-86.0, 85.0], "expected": 85.0}, {"input": [-86.0, 85.5], "expected": 85.5}, {"input": [-86.0, 86.0], "expected": 86.0}, {"input": [-86.0, 86.5], "expected": 86.5}, {"input": [-86.0, 87.0], "expected": 87.0}, {"input": [-86.0, 87.5], "expected": 87.5}, {"input": [-86.0, 88.0], "expected": 88.0}, {"input": [-86.0, 88.5], "expected": 88.5}, {"input": [-86.0, 89.0], "expected": 89.0}, {"input": [-86.0, 89.5], "expected": 89.5}, {"input": [-86.0, 90.0], "expected": 90.0}, {"input": [-86.0, 90.5], "expected": 90.5}, {"input": [-86.0, 91.0], "expected": 91.0}, {"input": [-86.0, 91.5], "expected": 91.5}, {"input": [-86.0, 92.0], "expected": 92.0}, {"input": [-86.0, 92.5], "expected": 92.5}, {"input": [-86.0, 93.0], "expected": 93.0}, {"input": [-86.0, 93.5], "expected": 93.5}, {"input": [-86.0, 94.0], "expected": 94.0}, {"input": [-86.0, 94.5], "expected": 94.5}, {"input": [-86.0, 95.0], "expected": 95.0}, {"input": [-86.0, 95.5], "expected": 95.5}, {"input": [-86.0, 96.0], "expected": 96.0}, {"input": [-86.0, 96.5], "expected": 96.5}, {"input": [-86.0, 97.0], "expected": 97.0}, {"input": [-86.0, 97.5], "expected": 97.5}, {"input": [-86.0, 98.0], "expected": 98.0}, {"input": [-86.0, 98.5], "expected": 98.5}, {"input": [-86.0, 99.0], "expected": 99.0}, {"input": [-86.0, 99.5], "expected": 99.5}, {"input": [-85.5, -100.0], "expected": -85.49999949565246}, {"input": [-85.5, -99.5], "expected": -85.49999916847163}, {"input": [-85.5, -99.0], "expected": -85.49999862904185}, {"input": [-85.5, -98.5], "expected": -85.49999773967315}, {"input": [-85.5, -98.0], "expected": -85.49999627335377}, {"input": [-85.5, -97.5], "expected": -85.49999385580652}, {"input": [-85.5, -97.0], "expected": -85.49998986995772}, {"input": [-85.5, -96.5], "expected": -85.49998329843868}, {"input": [-85.5, -96.0], "expected": -85.49997246392977}, {"input": [-85.5, -95.5], "expected": -85.49995460110078}, {"input": [-85.5, -95.0], "expected": -85.49992515097136}, {"input": [-85.5, -94.5], "expected": -85.49987659781027}, {"input": [-85.5, -94.0], "expected": -85.49979655232787}, {"input": [-85.5, -93.5], "expected": -85.4996645936271}, {"input": [-85.5, -93.0], "expected": -85.49944706852465}, {"input": [-85.5, -92.5], "expected": -85.49908853354623}, {"input": [-85.5, -92.0], "expected": -85.49849768984025}, {"input": [-85.5, -91.5], "expected": -85.49752431486228}, {"input": [-85.5, -91.0], "expected": -85.49592155672943}, {"input": [-85.5, -90.5], "expected": -85.49328465151088}, {"input": [-85.5, -90.0], "expected": -85.4889522551514}, {"input": [-85.5, -89.5], "expected": -85.4818500720822}, {"input": [-85.5, -89.0], "expected": -85.47024958172737}, {"input": [-85.5, -88.5], "expected": -85.45141264842626}, {"input": [-85.5, -88.0], "expected": -85.42111026570745}, {"input": [-85.5, -87.5], "expected": -85.37307198895702}, {"input": [-85.5, -87.0], "expected": -85.29858672201725}, {"input": [-85.5, -86.5], "expected": -85.18673831248178}, {"input": [-85.5, -86.0], "expected": -85.0259230158199}, {"input": [-85.5, -85.5], "expected": -84.80685281944005}, {"input": [-85.5, -85.0], "expected": -84.5259230158199}, {"input": [-85.5, -84.5], "expected": -84.18673831248178}, {"input": [-85.5, -84.0], "expected": -83.79858672201725}, {"input": [-85.5, -83.5], "expected": -83.37307198895702}, {"input": [-85.5, -83.0], "expected": -82.92111026570745}, {"input": [-85.5, -82.5], "expected": -82.45141264842626}, {"input": [-85.5, -82.0], "expected": -81.97024958172737}, {"input": [-85.5, -81.5], "expected": -81.4818500720822}, {"input": [-85.5, -81.0], "expected": -80.9889522551514}, {"input": [-85.5, -80.5], "expected": -80.49328465151088}, {"input": [-85.5, -80.0], "expected": -79.99592155672943}, {"input": [-85.5, -79.5], "expected": -79.49752431486228}, {"input": [-85.5, -79.0], "expected": -78.99849768984025}, {"input": [-85.5, -78.5], "expected": -78.49908853354623}, {"input": [-85.5, -78.0], "expected": -77.99944706852465}, {"input": [-85.5, -77.5], "expected": -77.4996645936271}, {"input": [-85.5, -77.0], "expected": -76.99979655232787}, {"input": [-85.5, -76.5], "expected": -76.49987659781027}, {"input": [-85.5, -76.0], "expected": -75.99992515097136}, {"input": [-85.5, -75.5], "expected": -75.49995460110078}, {"input": [-85.5, -75.0], "expected": -74.99997246392977}, {"input": [-85.5, -74.5], "expected": -74.49998329843868}, {"input": [-85.5, -74.0], "expected": -73.99998986995772}, {"input": [-85.5, -73.5], "expected": -73.49999385580652}, {"input": [-85.5, -73.0], "expected": -72.99999627335377}, {"input": [-85.5, -72.5], "expected": -72.49999773967315}, {"input": [-85.5, -72.0], "expected": -71.99999862904185}, {"input": [-85.5, -71.5], "expected": -71.49999916847163}, {"input": [-85.5, -71.0], "expected": -70.99999949565246}, {"input": [-85.5, -70.5], "expected": -70.49999969409772}, {"input": [-85.5, -70.0], "expected": -69.99999981446088}, {"input": [-85.5, -69.5], "expected": -69.49999988746484}, {"input": [-85.5, -69.0], "expected": -68.99999993174397}, {"input": [-85.5, -68.5], "expected": -68.49999995860063}, {"input": [-85.5, -68.0], "expected": -67.99999997489}, {"input": [-85.5, -67.5], "expected": -67.49999998477001}, {"input": [-85.5, -67.0], "expected": -66.99999999076255}, {"input": [-85.5, -66.5], "expected": -66.4999999943972}, {"input": [-85.5, -66.0], "expected": -65.99999999660173}, {"input": [-85.5, -65.5], "expected": -65.49999999793884}, {"input": [-85.5, -65.0], "expected": -64.99999999874984}, {"input": [-85.5, -64.5], "expected": -64.49999999924174}, {"input": [-85.5, -64.0], "expected": -63.999999999540094}, {"input": [-85.5, -63.5], "expected": -63.499999999721055}, {"input": [-85.5, -63.0], "expected": -62.99999999983081}, {"input": [-85.5, -62.5], "expected": -62.49999999989738}, {"input": [-85.5, -62.0], "expected": -61.99999999993776}, {"input": [-85.5, -61.5], "expected": -61.49999999996225}, {"input": [-85.5, -61.0], "expected": -60.9999999999771}, {"input": [-85.5, -60.5], "expected": -60.49999999998611}, {"input": [-85.5, -60.0], "expected": -59.99999999999158}, {"input": [-85.5, -59.5], "expected": -59.49999999999489}, {"input": [-85.5, -59.0], "expected": -58.9999999999969}, {"input": [-85.5, -58.5], "expected": -58.49999999999812}, {"input": [-85.5, -58.0], "expected": -57.99999999999886}, {"input": [-85.5, -57.5], "expected": -57.49999999999931}, {"input": [-85.5, -57.0], "expected": -56.99999999999958}, {"input": [-85.5, -56.5], "expected": -56.499999999999744}, {"input": [-85.5, -56.0], "expected": -55.999999999999844}, {"input": [-85.5, -55.5], "expected": -55.49999999999991}, {"input": [-85.5, -55.0], "expected": -54.99999999999994}, {"input": [-85.5, -54.5], "expected": -54.499999999999964}, {"input": [-85.5, -54.0], "expected": -53.99999999999998}, {"input": [-85.5, -53.5], "expected": -53.499999999999986}, {"input": [-85.5, -53.0], "expected": -52.99999999999999}, {"input": [-85.5, -52.5], "expected": -52.49999999999999}, {"input": [-85.5, -52.0], "expected": -52.0}, {"input": [-85.5, -51.5], "expected": -51.5}, {"input": [-85.5, -51.0], "expected": -51.0}, {"input": [-85.5, -50.5], "expected": -50.5}, {"input": [-85.5, -50.0], "expected": -50.0}, {"input": [-85.5, -49.5], "expected": -49.5}, {"input": [-85.5, -49.0], "expected": -49.0}, {"input": [-85.5, -48.5], "expected": -48.5}, {"input": [-85.5, -48.0], "expected": -48.0}, {"input": [-85.5, -47.5], "expected": -47.5}, {"input": [-85.5, -47.0], "expected": -47.0}, {"input": [-85.5, -46.5], "expected": -46.5}, {"input": [-85.5, -46.0], "expected": -46.0}, {"input": [-85.5, -45.5], "expected": -45.5}, {"input": [-85.5, -45.0], "expected": -45.0}, {"input": [-85.5, -44.5], "expected": -44.5}, {"input": [-85.5, -44.0], "expected": -44.0}, {"input": [-85.5, -43.5], "expected": -43.5}, {"input": [-85.5, -43.0], "expected": -43.0}, {"input": [-85.5, -42.5], "expected": -42.5}, {"input": [-85.5, -42.0], "expected": -42.0}, {"input": [-85.5, -41.5], "expected": -41.5}, {"input": [-85.5, -41.0], "expected": -41.0}, {"input": [-85.5, -40.5], "expected": -40.5}, {"input": [-85.5, -40.0], "expected": -40.0}, {"input": [-85.5, -39.5], "expected": -39.5}, {"input": [-85.5, -39.0], "expected": -39.0}, {"input": [-85.5, -38.5], "expected": -38.5}, {"input": [-85.5, -38.0], "expected": -38.0}, {"input": [-85.5, -37.5], "expected": -37.5}, {"input": [-85.5, -37.0], "expected": -37.0}, {"input": [-85.5, -36.5], "expected": -36.5}, {"input": [-85.5, -36.0], "expected": -36.0}, {"input": [-85.5, -35.5], "expected": -35.5}, {"input": [-85.5, -35.0], "expected": -35.0}, {"input": [-85.5, -34.5], "expected": -34.5}, {"input": [-85.5, -34.0], "expected": -34.0}, {"input": [-85.5, -33.5], "expected": -33.5}, {"input": [-85.5, -33.0], "expected": -33.0}, {"input": [-85.5, -32.5], "expected": -32.5}, {"input": [-85.5, -32.0], "expected": -32.0}, {"input": [-85.5, -31.5], "expected": -31.5}, {"input": [-85.5, -31.0], "expected": -31.0}, {"input": [-85.5, -30.5], "expected": -30.5}, {"input": [-85.5, -30.0], "expected": -30.0}, {"input": [-85.5, -29.5], "expected": -29.5}, {"input": [-85.5, -29.0], "expected": -29.0}, {"input": [-85.5, -28.5], "expected": -28.5}, {"input": [-85.5, -28.0], "expected": -28.0}, {"input": [-85.5, -27.5], "expected": -27.5}, {"input": [-85.5, -27.0], "expected": -27.0}, {"input": [-85.5, -26.5], "expected": -26.5}, {"input": [-85.5, -26.0], "expected": -26.0}, {"input": [-85.5, -25.5], "expected": -25.5}, {"input": [-85.5, -25.0], "expected": -25.0}, {"input": [-85.5, -24.5], "expected": -24.5}, {"input": [-85.5, -24.0], "expected": -24.0}, {"input": [-85.5, -23.5], "expected": -23.5}, {"input": [-85.5, -23.0], "expected": -23.0}, {"input": [-85.5, -22.5], "expected": -22.5}, {"input": [-85.5, -22.0], "expected": -22.0}, {"input": [-85.5, -21.5], "expected": -21.5}, {"input": [-85.5, -21.0], "expected": -21.0}, {"input": [-85.5, -20.5], "expected": -20.5}, {"input": [-85.5, -20.0], "expected": -20.0}, {"input": [-85.5, -19.5], "expected": -19.5}, {"input": [-85.5, -19.0], "expected": -19.0}, {"input": [-85.5, -18.5], "expected": -18.5}, {"input": [-85.5, -18.0], "expected": -18.0}, {"input": [-85.5, -17.5], "expected": -17.5}, {"input": [-85.5, -17.0], "expected": -17.0}, {"input": [-85.5, -16.5], "expected": -16.5}, {"input": [-85.5, -16.0], "expected": -16.0}, {"input": [-85.5, -15.5], "expected": -15.5}, {"input": [-85.5, -15.0], "expected": -15.0}, {"input": [-85.5, -14.5], "expected": -14.5}, {"input": [-85.5, -14.0], "expected": -14.0}, {"input": [-85.5, -13.5], "expected": -13.5}, {"input": [-85.5, -13.0], "expected": -13.0}, {"input": [-85.5, -12.5], "expected": -12.5}, {"input": [-85.5, -12.0], "expected": -12.0}, {"input": [-85.5, -11.5], "expected": -11.5}, {"input": [-85.5, -11.0], "expected": -11.0}, {"input": [-85.5, -10.5], "expected": -10.5}, {"input": [-85.5, -10.0], "expected": -10.0}, {"input": [-85.5, -9.5], "expected": -9.5}, {"input": [-85.5, -9.0], "expected": -9.0}, {"input": [-85.5, -8.5], "expected": -8.5}, {"input": [-85.5, -8.0], "expected": -8.0}, {"input": [-85.5, -7.5], "expected": -7.5}, {"input": [-85.5, -7.0], "expected": -7.0}, {"input": [-85.5, -6.5], "expected": -6.5}, {"input": [-85.5, -6.0], "expected": -6.0}, {"input": [-85.5, -5.5], "expected": -5.5}, {"input": [-85.5, -5.0], "expected": -5.0}, {"input": [-85.5, -4.5], "expected": -4.5}, {"input": [-85.5, -4.0], "expected": -4.0}, {"input": [-85.5, -3.5], "expected": -3.5}, {"input": [-85.5, -3.0], "expected": -3.0}, {"input": [-85.5, -2.5], "expected": -2.5}, {"input": [-85.5, -2.0], "expected": -2.0}, {"input": [-85.5, -1.5], "expected": -1.5}, {"input": [-85.5, -1.0], "expected": -1.0}, {"input": [-85.5, -0.5], "expected": -0.5}, {"input": [-85.5, 0.0], "expected": 7.376015102518876e-38}, {"input": [-85.5, 0.5], "expected": 0.5}, {"input": [-85.5, 1.0], "expected": 1.0}, {"input": [-85.5, 1.5], "expected": 1.5}, {"input": [-85.5, 2.0], "expected": 2.0}, {"input": [-85.5, 2.5], "expected": 2.5}, {"input": [-85.5, 3.0], "expected": 3.0}, {"input": [-85.5, 3.5], "expected": 3.5}, {"input": [-85.5, 4.0], "expected": 4.0}, {"input": [-85.5, 4.5], "expected": 4.5}, {"input": [-85.5, 5.0], "expected": 5.0}, {"input": [-85.5, 5.5], "expected": 5.5}, {"input": [-85.5, 6.0], "expected": 6.0}, {"input": [-85.5, 6.5], "expected": 6.5}, {"input": [-85.5, 7.0], "expected": 7.0}, {"input": [-85.5, 7.5], "expected": 7.5}, {"input": [-85.5, 8.0], "expected": 8.0}, {"input": [-85.5, 8.5], "expected": 8.5}, {"input": [-85.5, 9.0], "expected": 9.0}, {"input": [-85.5, 9.5], "expected": 9.5}, {"input": [-85.5, 10.0], "expected": 10.0}, {"input": [-85.5, 10.5], "expected": 10.5}, {"input": [-85.5, 11.0], "expected": 11.0}, {"input": [-85.5, 11.5], "expected": 11.5}, {"input": [-85.5, 12.0], "expected": 12.0}, {"input": [-85.5, 12.5], "expected": 12.5}, {"input": [-85.5, 13.0], "expected": 13.0}, {"input": [-85.5, 13.5], "expected": 13.5}, {"input": [-85.5, 14.0], "expected": 14.0}, {"input": [-85.5, 14.5], "expected": 14.5}, {"input": [-85.5, 15.0], "expected": 15.0}, {"input": [-85.5, 15.5], "expected": 15.5}, {"input": [-85.5, 16.0], "expected": 16.0}, {"input": [-85.5, 16.5], "expected": 16.5}, {"input": [-85.5, 17.0], "expected": 17.0}, {"input": [-85.5, 17.5], "expected": 17.5}, {"input": [-85.5, 18.0], "expected": 18.0}, {"input": [-85.5, 18.5], "expected": 18.5}, {"input": [-85.5, 19.0], "expected": 19.0}, {"input": [-85.5, 19.5], "expected": 19.5}, {"input": [-85.5, 20.0], "expected": 20.0}, {"input": [-85.5, 20.5], "expected": 20.5}, {"input": [-85.5, 21.0], "expected": 21.0}, {"input": [-85.5, 21.5], "expected": 21.5}, {"input": [-85.5, 22.0], "expected": 22.0}, {"input": [-85.5, 22.5], "expected": 22.5}, {"input": [-85.5, 23.0], "expected": 23.0}, {"input": [-85.5, 23.5], "expected": 23.5}, {"input": [-85.5, 24.0], "expected": 24.0}, {"input": [-85.5, 24.5], "expected": 24.5}, {"input": [-85.5, 25.0], "expected": 25.0}, {"input": [-85.5, 25.5], "expected": 25.5}, {"input": [-85.5, 26.0], "expected": 26.0}, {"input": [-85.5, 26.5], "expected": 26.5}, {"input": [-85.5, 27.0], "expected": 27.0}, {"input": [-85.5, 27.5], "expected": 27.5}, {"input": [-85.5, 28.0], "expected": 28.0}, {"input": [-85.5, 28.5], "expected": 28.5}, {"input": [-85.5, 29.0], "expected": 29.0}, {"input": [-85.5, 29.5], "expected": 29.5}, {"input": [-85.5, 30.0], "expected": 30.0}, {"input": [-85.5, 30.5], "expected": 30.5}, {"input": [-85.5, 31.0], "expected": 31.0}, {"input": [-85.5, 31.5], "expected": 31.5}, {"input": [-85.5, 32.0], "expected": 32.0}, {"input": [-85.5, 32.5], "expected": 32.5}, {"input": [-85.5, 33.0], "expected": 33.0}, {"input": [-85.5, 33.5], "expected": 33.5}, {"input": [-85.5, 34.0], "expected": 34.0}, {"input": [-85.5, 34.5], "expected": 34.5}, {"input": [-85.5, 35.0], "expected": 35.0}, {"input": [-85.5, 35.5], "expected": 35.5}, {"input": [-85.5, 36.0], "expected": 36.0}, {"input": [-85.5, 36.5], "expected": 36.5}, {"input": [-85.5, 37.0], "expected": 37.0}, {"input": [-85.5, 37.5], "expected": 37.5}, {"input": [-85.5, 38.0], "expected": 38.0}, {"input": [-85.5, 38.5], "expected": 38.5}, {"input": [-85.5, 39.0], "expected": 39.0}, {"input": [-85.5, 39.5], "expected": 39.5}, {"input": [-85.5, 40.0], "expected": 40.0}, {"input": [-85.5, 40.5], "expected": 40.5}, {"input": [-85.5, 41.0], "expected": 41.0}, {"input": [-85.5, 41.5], "expected": 41.5}, {"input": [-85.5, 42.0], "expected": 42.0}, {"input": [-85.5, 42.5], "expected": 42.5}, {"input": [-85.5, 43.0], "expected": 43.0}, {"input": [-85.5, 43.5], "expected": 43.5}, {"input": [-85.5, 44.0], "expected": 44.0}, {"input": [-85.5, 44.5], "expected": 44.5}, {"input": [-85.5, 45.0], "expected": 45.0}, {"input": [-85.5, 45.5], "expected": 45.5}, {"input": [-85.5, 46.0], "expected": 46.0}, {"input": [-85.5, 46.5], "expected": 46.5}, {"input": [-85.5, 47.0], "expected": 47.0}, {"input": [-85.5, 47.5], "expected": 47.5}, {"input": [-85.5, 48.0], "expected": 48.0}, {"input": [-85.5, 48.5], "expected": 48.5}, {"input": [-85.5, 49.0], "expected": 49.0}, {"input": [-85.5, 49.5], "expected": 49.5}, {"input": [-85.5, 50.0], "expected": 50.0}, {"input": [-85.5, 50.5], "expected": 50.5}, {"input": [-85.5, 51.0], "expected": 51.0}, {"input": [-85.5, 51.5], "expected": 51.5}, {"input": [-85.5, 52.0], "expected": 52.0}, {"input": [-85.5, 52.5], "expected": 52.5}, {"input": [-85.5, 53.0], "expected": 53.0}, {"input": [-85.5, 53.5], "expected": 53.5}, {"input": [-85.5, 54.0], "expected": 54.0}, {"input": [-85.5, 54.5], "expected": 54.5}, {"input": [-85.5, 55.0], "expected": 55.0}, {"input": [-85.5, 55.5], "expected": 55.5}, {"input": [-85.5, 56.0], "expected": 56.0}, {"input": [-85.5, 56.5], "expected": 56.5}, {"input": [-85.5, 57.0], "expected": 57.0}, {"input": [-85.5, 57.5], "expected": 57.5}, {"input": [-85.5, 58.0], "expected": 58.0}, {"input": [-85.5, 58.5], "expected": 58.5}, {"input": [-85.5, 59.0], "expected": 59.0}, {"input": [-85.5, 59.5], "expected": 59.5}, {"input": [-85.5, 60.0], "expected": 60.0}, {"input": [-85.5, 60.5], "expected": 60.5}, {"input": [-85.5, 61.0], "expected": 61.0}, {"input": [-85.5, 61.5], "expected": 61.5}, {"input": [-85.5, 62.0], "expected": 62.0}, {"input": [-85.5, 62.5], "expected": 62.5}, {"input": [-85.5, 63.0], "expected": 63.0}, {"input": [-85.5, 63.5], "expected": 63.5}, {"input": [-85.5, 64.0], "expected": 64.0}, {"input": [-85.5, 64.5], "expected": 64.5}, {"input": [-85.5, 65.0], "expected": 65.0}, {"input": [-85.5, 65.5], "expected": 65.5}, {"input": [-85.5, 66.0], "expected": 66.0}, {"input": [-85.5, 66.5], "expected": 66.5}, {"input": [-85.5, 67.0], "expected": 67.0}, {"input": [-85.5, 67.5], "expected": 67.5}, {"input": [-85.5, 68.0], "expected": 68.0}, {"input": [-85.5, 68.5], "expected": 68.5}, {"input": [-85.5, 69.0], "expected": 69.0}, {"input": [-85.5, 69.5], "expected": 69.5}, {"input": [-85.5, 70.0], "expected": 70.0}, {"input": [-85.5, 70.5], "expected": 70.5}, {"input": [-85.5, 71.0], "expected": 71.0}, {"input": [-85.5, 71.5], "expected": 71.5}, {"input": [-85.5, 72.0], "expected": 72.0}, {"input": [-85.5, 72.5], "expected": 72.5}, {"input": [-85.5, 73.0], "expected": 73.0}, {"input": [-85.5, 73.5], "expected": 73.5}, {"input": [-85.5, 74.0], "expected": 74.0}, {"input": [-85.5, 74.5], "expected": 74.5}, {"input": [-85.5, 75.0], "expected": 75.0}, {"input": [-85.5, 75.5], "expected": 75.5}, {"input": [-85.5, 76.0], "expected": 76.0}, {"input": [-85.5, 76.5], "expected": 76.5}, {"input": [-85.5, 77.0], "expected": 77.0}, {"input": [-85.5, 77.5], "expected": 77.5}, {"input": [-85.5, 78.0], "expected": 78.0}, {"input": [-85.5, 78.5], "expected": 78.5}, {"input": [-85.5, 79.0], "expected": 79.0}, {"input": [-85.5, 79.5], "expected": 79.5}, {"input": [-85.5, 80.0], "expected": 80.0}, {"input": [-85.5, 80.5], "expected": 80.5}, {"input": [-85.5, 81.0], "expected": 81.0}, {"input": [-85.5, 81.5], "expected": 81.5}, {"input": [-85.5, 82.0], "expected": 82.0}, {"input": [-85.5, 82.5], "expected": 82.5}, {"input": [-85.5, 83.0], "expected": 83.0}, {"input": [-85.5, 83.5], "expected": 83.5}, {"input": [-85.5, 84.0], "expected": 84.0}, {"input": [-85.5, 84.5], "expected": 84.5}, {"input": [-85.5, 85.0], "expected": 85.0}, {"input": [-85.5, 85.5], "expected": 85.5}, {"input": [-85.5, 86.0], "expected": 86.0}, {"input": [-85.5, 86.5], "expected": 86.5}, {"input": [-85.5, 87.0], "expected": 87.0}, {"input": [-85.5, 87.5], "expected": 87.5}, {"input": [-85.5, 88.0], "expected": 88.0}, {"input": [-85.5, 88.5], "expected": 88.5}, {"input": [-85.5, 89.0], "expected": 89.0}, {"input": [-85.5, 89.5], "expected": 89.5}, {"input": [-85.5, 90.0], "expected": 90.0}, {"input": [-85.5, 90.5], "expected": 90.5}, {"input": [-85.5, 91.0], "expected": 91.0}, {"input": [-85.5, 91.5], "expected": 91.5}, {"input": [-85.5, 92.0], "expected": 92.0}, {"input": [-85.5, 92.5], "expected": 92.5}, {"input": [-85.5, 93.0], "expected": 93.0}, {"input": [-85.5, 93.5], "expected": 93.5}, {"input": [-85.5, 94.0], "expected": 94.0}, {"input": [-85.5, 94.5], "expected": 94.5}, {"input": [-85.5, 95.0], "expected": 95.0}, {"input": [-85.5, 95.5], "expected": 95.5}, {"input": [-85.5, 96.0], "expected": 96.0}, {"input": [-85.5, 96.5], "expected": 96.5}, {"input": [-85.5, 97.0], "expected": 97.0}, {"input": [-85.5, 97.5], "expected": 97.5}, {"input": [-85.5, 98.0], "expected": 98.0}, {"input": [-85.5, 98.5], "expected": 98.5}, {"input": [-85.5, 99.0], "expected": 99.0}, {"input": [-85.5, 99.5], "expected": 99.5}, {"input": [-85.0, -100.0], "expected": -84.99999969409772}, {"input": [-85.0, -99.5], "expected": -84.99999949565246}, {"input": [-85.0, -99.0], "expected": -84.99999916847163}, {"input": [-85.0, -98.5], "expected": -84.99999862904185}, {"input": [-85.0, -98.0], "expected": -84.99999773967315}, {"input": [-85.0, -97.5], "expected": -84.99999627335377}, {"input": [-85.0, -97.0], "expected": -84.99999385580652}, {"input": [-85.0, -96.5], "expected": -84.99998986995772}, {"input": [-85.0, -96.0], "expected": -84.99998329843868}, {"input": [-85.0, -95.5], "expected": -84.99997246392977}, {"input": [-85.0, -95.0], "expected": -84.99995460110078}, {"input": [-85.0, -94.5], "expected": -84.99992515097136}, {"input": [-85.0, -94.0], "expected": -84.99987659781027}, {"input": [-85.0, -93.5], "expected": -84.99979655232787}, {"input": [-85.0, -93.0], "expected": -84.9996645936271}, {"input": [-85.0, -92.5], "expected": -84.99944706852465}, {"input": [-85.0, -92.0], "expected": -84.99908853354623}, {"input": [-85.0, -91.5], "expected": -84.99849768984025}, {"input": [-85.0, -91.0], "expected": -84.99752431486228}, {"input": [-85.0, -90.5], "expected": -84.99592155672943}, {"input": [-85.0, -90.0], "expected": -84.99328465151088}, {"input": [-85.0, -89.5], "expected": -84.9889522551514}, {"input": [-85.0, -89.0], "expected": -84.9818500720822}, {"input": [-85.0, -88.5], "expected": -84.97024958172737}, {"input": [-85.0, -88.0], "expected": -84.95141264842626}, {"input": [-85.0, -87.5], "expected": -84.92111026570745}, {"input": [-85.0, -87.0], "expected": -84.87307198895702}, {"input": [-85.0, -86.5], "expected": -84.79858672201725}, {"input": [-85.0, -86.0], "expected": -84.68673831248178}, {"input": [-85.0, -85.5], "expected": -84.5259230158199}, {"input": [-85.0, -85.0], "expected": -84.30685281944005}, {"input": [-85.0, -84.5], "expected": -84.0259230158199}, {"input": [-85.0, -84.0], "expected": -83.68673831248178}, {"input": [-85.0, -83.5], "expected": -83.29858672201725}, {"input": [-85.0, -83.0], "expected": -82.87307198895702}, {"input": [-85.0, -82.5], "expected": -82.42111026570745}, {"input": [-85.0, -82.0], "expected": -81.95141264842626}, {"input": [-85.0, -81.5], "expected": -81.47024958172737}, {"input": [-85.0, -81.0], "expected": -80.9818500720822}, {"input": [-85.0, -80.5], "expected": -80.4889522551514}, {"input": [-85.0, -80.0], "expected": -79.99328465151088}, {"input": [-85.0, -79.5], "expected": -79.49592155672943}, {"input": [-85.0, -79.0], "expected": -78.99752431486228}, {"input": [-85.0, -78.5], "expected": -78.49849768984025}, {"input": [-85.0, -78.0], "expected": -77.99908853354623}, {"input": [-85.0, -77.5], "expected": -77.49944706852465}, {"input": [-85.0, -77.0], "expected": -76.9996645936271}, {"input": [-85.0, -76.5], "expected": -76.49979655232787}, {"input": [-85.0, -76.0], "expected": -75.99987659781027}, {"input": [-85.0, -75.5], "expected": -75.49992515097136}, {"input": [-85.0, -75.0], "expected": -74.99995460110078}, {"input": [-85.0, -74.5], "expected": -74.49997246392977}, {"input": [-85.0, -74.0], "expected": -73.99998329843868}, {"input": [-85.0, -73.5], "expected": -73.49998986995772}, {"input": [-85.0, -73.0], "expected": -72.99999385580652}, {"input": [-85.0, -72.5], "expected": -72.49999627335377}, {"input": [-85.0, -72.0], "expected": -71.99999773967315}, {"input": [-85.0, -71.5], "expected": -71.49999862904185}, {"input": [-85.0, -71.0], "expected": -70.99999916847163}, {"input": [-85.0, -70.5], "expected": -70.49999949565246}, {"input": [-85.0, -70.0], "expected": -69.99999969409772}, {"input": [-85.0, -69.5], "expected": -69.49999981446088}, {"input": [-85.0, -69.0], "expected": -68.99999988746484}, {"input": [-85.0, -68.5], "expected": -68.49999993174397}, {"input": [-85.0, -68.0], "expected": -67.99999995860063}, {"input": [-85.0, -67.5], "expected": -67.49999997489}, {"input": [-85.0, -67.0], "expected": -66.99999998477001}, {"input": [-85.0, -66.5], "expected": -66.49999999076255}, {"input": [-85.0, -66.0], "expected": -65.9999999943972}, {"input": [-85.0, -65.5], "expected": -65.49999999660173}, {"input": [-85.0, -65.0], "expected": -64.99999999793884}, {"input": [-85.0, -64.5], "expected": -64.49999999874984}, {"input": [-85.0, -64.0], "expected": -63.999999999241744}, {"input": [-85.0, -63.5], "expected": -63.499999999540094}, {"input": [-85.0, -63.0], "expected": -62.999999999721055}, {"input": [-85.0, -62.5], "expected": -62.49999999983081}, {"input": [-85.0, -62.0], "expected": -61.99999999989738}, {"input": [-85.0, -61.5], "expected": -61.49999999993776}, {"input": [-85.0, -61.0], "expected": -60.99999999996225}, {"input": [-85.0, -60.5], "expected": -60.4999999999771}, {"input": [-85.0, -60.0], "expected": -59.99999999998611}, {"input": [-85.0, -59.5], "expected": -59.49999999999158}, {"input": [-85.0, -59.0], "expected": -58.99999999999489}, {"input": [-85.0, -58.5], "expected": -58.4999999999969}, {"input": [-85.0, -58.0], "expected": -57.99999999999812}, {"input": [-85.0, -57.5], "expected": -57.49999999999886}, {"input": [-85.0, -57.0], "expected": -56.99999999999931}, {"input": [-85.0, -56.5], "expected": -56.49999999999958}, {"input": [-85.0, -56.0], "expected": -55.999999999999744}, {"input": [-85.0, -55.5], "expected": -55.499999999999844}, {"input": [-85.0, -55.0], "expected": -54.99999999999991}, {"input": [-85.0, -54.5], "expected": -54.49999999999994}, {"input": [-85.0, -54.0], "expected": -53.999999999999964}, {"input": [-85.0, -53.5], "expected": -53.49999999999998}, {"input": [-85.0, -53.0], "expected": -52.999999999999986}, {"input": [-85.0, -52.5], "expected": -52.49999999999999}, {"input": [-85.0, -52.0], "expected": -51.99999999999999}, {"input": [-85.0, -51.5], "expected": -51.5}, {"input": [-85.0, -51.0], "expected": -51.0}, {"input": [-85.0, -50.5], "expected": -50.5}, {"input": [-85.0, -50.0], "expected": -50.0}, {"input": [-85.0, -49.5], "expected": -49.5}, {"input": [-85.0, -49.0], "expected": -49.0}, {"input": [-85.0, -48.5], "expected": -48.5}, {"input": [-85.0, -48.0], "expected": -48.0}, {"input": [-85.0, -47.5], "expected": -47.5}, {"input": [-85.0, -47.0], "expected": -47.0}, {"input": [-85.0, -46.5], "expected": -46.5}, {"input": [-85.0, -46.0], "expected": -46.0}, {"input": [-85.0, -45.5], "expected": -45.5}, {"input": [-85.0, -45.0], "expected": -45.0}, {"input": [-85.0, -44.5], "expected": -44.5}, {"input": [-85.0, -44.0], "expected": -44.0}, {"input": [-85.0, -43.5], "expected": -43.5}, {"input": [-85.0, -43.0], "expected": -43.0}, {"input": [-85.0, -42.5], "expected": -42.5}, {"input": [-85.0, -42.0], "expected": -42.0}, {"input": [-85.0, -41.5], "expected": -41.5}, {"input": [-85.0, -41.0], "expected": -41.0}, {"input": [-85.0, -40.5], "expected": -40.5}, {"input": [-85.0, -40.0], "expected": -40.0}, {"input": [-85.0, -39.5], "expected": -39.5}, {"input": [-85.0, -39.0], "expected": -39.0}, {"input": [-85.0, -38.5], "expected": -38.5}, {"input": [-85.0, -38.0], "expected": -38.0}, {"input": [-85.0, -37.5], "expected": -37.5}, {"input": [-85.0, -37.0], "expected": -37.0}, {"input": [-85.0, -36.5], "expected": -36.5}, {"input": [-85.0, -36.0], "expected": -36.0}, {"input": [-85.0, -35.5], "expected": -35.5}, {"input": [-85.0, -35.0], "expected": -35.0}, {"input": [-85.0, -34.5], "expected": -34.5}, {"input": [-85.0, -34.0], "expected": -34.0}, {"input": [-85.0, -33.5], "expected": -33.5}, {"input": [-85.0, -33.0], "expected": -33.0}, {"input": [-85.0, -32.5], "expected": -32.5}, {"input": [-85.0, -32.0], "expected": -32.0}, {"input": [-85.0, -31.5], "expected": -31.5}, {"input": [-85.0, -31.0], "expected": -31.0}, {"input": [-85.0, -30.5], "expected": -30.5}, {"input": [-85.0, -30.0], "expected": -30.0}, {"input": [-85.0, -29.5], "expected": -29.5}, {"input": [-85.0, -29.0], "expected": -29.0}, {"input": [-85.0, -28.5], "expected": -28.5}, {"input": [-85.0, -28.0], "expected": -28.0}, {"input": [-85.0, -27.5], "expected": -27.5}, {"input": [-85.0, -27.0], "expected": -27.0}, {"input": [-85.0, -26.5], "expected": -26.5}, {"input": [-85.0, -26.0], "expected": -26.0}, {"input": [-85.0, -25.5], "expected": -25.5}, {"input": [-85.0, -25.0], "expected": -25.0}, {"input": [-85.0, -24.5], "expected": -24.5}, {"input": [-85.0, -24.0], "expected": -24.0}, {"input": [-85.0, -23.5], "expected": -23.5}, {"input": [-85.0, -23.0], "expected": -23.0}, {"input": [-85.0, -22.5], "expected": -22.5}, {"input": [-85.0, -22.0], "expected": -22.0}, {"input": [-85.0, -21.5], "expected": -21.5}, {"input": [-85.0, -21.0], "expected": -21.0}, {"input": [-85.0, -20.5], "expected": -20.5}, {"input": [-85.0, -20.0], "expected": -20.0}, {"input": [-85.0, -19.5], "expected": -19.5}, {"input": [-85.0, -19.0], "expected": -19.0}, {"input": [-85.0, -18.5], "expected": -18.5}, {"input": [-85.0, -18.0], "expected": -18.0}, {"input": [-85.0, -17.5], "expected": -17.5}, {"input": [-85.0, -17.0], "expected": -17.0}, {"input": [-85.0, -16.5], "expected": -16.5}, {"input": [-85.0, -16.0], "expected": -16.0}, {"input": [-85.0, -15.5], "expected": -15.5}, {"input": [-85.0, -15.0], "expected": -15.0}, {"input": [-85.0, -14.5], "expected": -14.5}, {"input": [-85.0, -14.0], "expected": -14.0}, {"input": [-85.0, -13.5], "expected": -13.5}, {"input": [-85.0, -13.0], "expected": -13.0}, {"input": [-85.0, -12.5], "expected": -12.5}, {"input": [-85.0, -12.0], "expected": -12.0}, {"input": [-85.0, -11.5], "expected": -11.5}, {"input": [-85.0, -11.0], "expected": -11.0}, {"input": [-85.0, -10.5], "expected": -10.5}, {"input": [-85.0, -10.0], "expected": -10.0}, {"input": [-85.0, -9.5], "expected": -9.5}, {"input": [-85.0, -9.0], "expected": -9.0}, {"input": [-85.0, -8.5], "expected": -8.5}, {"input": [-85.0, -8.0], "expected": -8.0}, {"input": [-85.0, -7.5], "expected": -7.5}, {"input": [-85.0, -7.0], "expected": -7.0}, {"input": [-85.0, -6.5], "expected": -6.5}, {"input": [-85.0, -6.0], "expected": -6.0}, {"input": [-85.0, -5.5], "expected": -5.5}, {"input": [-85.0, -5.0], "expected": -5.0}, {"input": [-85.0, -4.5], "expected": -4.5}, {"input": [-85.0, -4.0], "expected": -4.0}, {"input": [-85.0, -3.5], "expected": -3.5}, {"input": [-85.0, -3.0], "expected": -3.0}, {"input": [-85.0, -2.5], "expected": -2.5}, {"input": [-85.0, -2.0], "expected": -2.0}, {"input": [-85.0, -1.5], "expected": -1.5}, {"input": [-85.0, -1.0], "expected": -1.0}, {"input": [-85.0, -0.5], "expected": -0.5}, {"input": [-85.0, 0.0], "expected": 1.2160992992528256e-37}, {"input": [-85.0, 0.5], "expected": 0.5}, {"input": [-85.0, 1.0], "expected": 1.0}, {"input": [-85.0, 1.5], "expected": 1.5}, {"input": [-85.0, 2.0], "expected": 2.0}, {"input": [-85.0, 2.5], "expected": 2.5}, {"input": [-85.0, 3.0], "expected": 3.0}, {"input": [-85.0, 3.5], "expected": 3.5}, {"input": [-85.0, 4.0], "expected": 4.0}, {"input": [-85.0, 4.5], "expected": 4.5}, {"input": [-85.0, 5.0], "expected": 5.0}, {"input": [-85.0, 5.5], "expected": 5.5}, {"input": [-85.0, 6.0], "expected": 6.0}, {"input": [-85.0, 6.5], "expected": 6.5}, {"input": [-85.0, 7.0], "expected": 7.0}, {"input": [-85.0, 7.5], "expected": 7.5}, {"input": [-85.0, 8.0], "expected": 8.0}, {"input": [-85.0, 8.5], "expected": 8.5}, {"input": [-85.0, 9.0], "expected": 9.0}, {"input": [-85.0, 9.5], "expected": 9.5}, {"input": [-85.0, 10.0], "expected": 10.0}, {"input": [-85.0, 10.5], "expected": 10.5}, {"input": [-85.0, 11.0], "expected": 11.0}, {"input": [-85.0, 11.5], "expected": 11.5}, {"input": [-85.0, 12.0], "expected": 12.0}, {"input": [-85.0, 12.5], "expected": 12.5}, {"input": [-85.0, 13.0], "expected": 13.0}, {"input": [-85.0, 13.5], "expected": 13.5}, {"input": [-85.0, 14.0], "expected": 14.0}, {"input": [-85.0, 14.5], "expected": 14.5}, {"input": [-85.0, 15.0], "expected": 15.0}, {"input": [-85.0, 15.5], "expected": 15.5}, {"input": [-85.0, 16.0], "expected": 16.0}, {"input": [-85.0, 16.5], "expected": 16.5}, {"input": [-85.0, 17.0], "expected": 17.0}, {"input": [-85.0, 17.5], "expected": 17.5}, {"input": [-85.0, 18.0], "expected": 18.0}, {"input": [-85.0, 18.5], "expected": 18.5}, {"input": [-85.0, 19.0], "expected": 19.0}, {"input": [-85.0, 19.5], "expected": 19.5}, {"input": [-85.0, 20.0], "expected": 20.0}, {"input": [-85.0, 20.5], "expected": 20.5}, {"input": [-85.0, 21.0], "expected": 21.0}, {"input": [-85.0, 21.5], "expected": 21.5}, {"input": [-85.0, 22.0], "expected": 22.0}, {"input": [-85.0, 22.5], "expected": 22.5}, {"input": [-85.0, 23.0], "expected": 23.0}, {"input": [-85.0, 23.5], "expected": 23.5}, {"input": [-85.0, 24.0], "expected": 24.0}, {"input": [-85.0, 24.5], "expected": 24.5}, {"input": [-85.0, 25.0], "expected": 25.0}, {"input": [-85.0, 25.5], "expected": 25.5}, {"input": [-85.0, 26.0], "expected": 26.0}, {"input": [-85.0, 26.5], "expected": 26.5}, {"input": [-85.0, 27.0], "expected": 27.0}, {"input": [-85.0, 27.5], "expected": 27.5}, {"input": [-85.0, 28.0], "expected": 28.0}, {"input": [-85.0, 28.5], "expected": 28.5}, {"input": [-85.0, 29.0], "expected": 29.0}, {"input": [-85.0, 29.5], "expected": 29.5}, {"input": [-85.0, 30.0], "expected": 30.0}, {"input": [-85.0, 30.5], "expected": 30.5}, {"input": [-85.0, 31.0], "expected": 31.0}, {"input": [-85.0, 31.5], "expected": 31.5}, {"input": [-85.0, 32.0], "expected": 32.0}, {"input": [-85.0, 32.5], "expected": 32.5}, {"input": [-85.0, 33.0], "expected": 33.0}, {"input": [-85.0, 33.5], "expected": 33.5}, {"input": [-85.0, 34.0], "expected": 34.0}, {"input": [-85.0, 34.5], "expected": 34.5}, {"input": [-85.0, 35.0], "expected": 35.0}, {"input": [-85.0, 35.5], "expected": 35.5}, {"input": [-85.0, 36.0], "expected": 36.0}, {"input": [-85.0, 36.5], "expected": 36.5}, {"input": [-85.0, 37.0], "expected": 37.0}, {"input": [-85.0, 37.5], "expected": 37.5}, {"input": [-85.0, 38.0], "expected": 38.0}, {"input": [-85.0, 38.5], "expected": 38.5}, {"input": [-85.0, 39.0], "expected": 39.0}, {"input": [-85.0, 39.5], "expected": 39.5}, {"input": [-85.0, 40.0], "expected": 40.0}, {"input": [-85.0, 40.5], "expected": 40.5}, {"input": [-85.0, 41.0], "expected": 41.0}, {"input": [-85.0, 41.5], "expected": 41.5}, {"input": [-85.0, 42.0], "expected": 42.0}, {"input": [-85.0, 42.5], "expected": 42.5}, {"input": [-85.0, 43.0], "expected": 43.0}, {"input": [-85.0, 43.5], "expected": 43.5}, {"input": [-85.0, 44.0], "expected": 44.0}, {"input": [-85.0, 44.5], "expected": 44.5}, {"input": [-85.0, 45.0], "expected": 45.0}, {"input": [-85.0, 45.5], "expected": 45.5}, {"input": [-85.0, 46.0], "expected": 46.0}, {"input": [-85.0, 46.5], "expected": 46.5}, {"input": [-85.0, 47.0], "expected": 47.0}, {"input": [-85.0, 47.5], "expected": 47.5}, {"input": [-85.0, 48.0], "expected": 48.0}, {"input": [-85.0, 48.5], "expected": 48.5}, {"input": [-85.0, 49.0], "expected": 49.0}, {"input": [-85.0, 49.5], "expected": 49.5}, {"input": [-85.0, 50.0], "expected": 50.0}, {"input": [-85.0, 50.5], "expected": 50.5}, {"input": [-85.0, 51.0], "expected": 51.0}, {"input": [-85.0, 51.5], "expected": 51.5}, {"input": [-85.0, 52.0], "expected": 52.0}, {"input": [-85.0, 52.5], "expected": 52.5}, {"input": [-85.0, 53.0], "expected": 53.0}, {"input": [-85.0, 53.5], "expected": 53.5}, {"input": [-85.0, 54.0], "expected": 54.0}, {"input": [-85.0, 54.5], "expected": 54.5}, {"input": [-85.0, 55.0], "expected": 55.0}, {"input": [-85.0, 55.5], "expected": 55.5}, {"input": [-85.0, 56.0], "expected": 56.0}, {"input": [-85.0, 56.5], "expected": 56.5}, {"input": [-85.0, 57.0], "expected": 57.0}, {"input": [-85.0, 57.5], "expected": 57.5}, {"input": [-85.0, 58.0], "expected": 58.0}, {"input": [-85.0, 58.5], "expected": 58.5}, {"input": [-85.0, 59.0], "expected": 59.0}, {"input": [-85.0, 59.5], "expected": 59.5}, {"input": [-85.0, 60.0], "expected": 60.0}, {"input": [-85.0, 60.5], "expected": 60.5}, {"input": [-85.0, 61.0], "expected": 61.0}, {"input": [-85.0, 61.5], "expected": 61.5}, {"input": [-85.0, 62.0], "expected": 62.0}, {"input": [-85.0, 62.5], "expected": 62.5}, {"input": [-85.0, 63.0], "expected": 63.0}, {"input": [-85.0, 63.5], "expected": 63.5}, {"input": [-85.0, 64.0], "expected": 64.0}, {"input": [-85.0, 64.5], "expected": 64.5}, {"input": [-85.0, 65.0], "expected": 65.0}, {"input": [-85.0, 65.5], "expected": 65.5}, {"input": [-85.0, 66.0], "expected": 66.0}, {"input": [-85.0, 66.5], "expected": 66.5}, {"input": [-85.0, 67.0], "expected": 67.0}, {"input": [-85.0, 67.5], "expected": 67.5}, {"input": [-85.0, 68.0], "expected": 68.0}, {"input": [-85.0, 68.5], "expected": 68.5}, {"input": [-85.0, 69.0], "expected": 69.0}, {"input": [-85.0, 69.5], "expected": 69.5}, {"input": [-85.0, 70.0], "expected": 70.0}, {"input": [-85.0, 70.5], "expected": 70.5}, {"input": [-85.0, 71.0], "expected": 71.0}, {"input": [-85.0, 71.5], "expected": 71.5}, {"input": [-85.0, 72.0], "expected": 72.0}, {"input": [-85.0, 72.5], "expected": 72.5}, {"input": [-85.0, 73.0], "expected": 73.0}, {"input": [-85.0, 73.5], "expected": 73.5}, {"input": [-85.0, 74.0], "expected": 74.0}, {"input": [-85.0, 74.5], "expected": 74.5}, {"input": [-85.0, 75.0], "expected": 75.0}, {"input": [-85.0, 75.5], "expected": 75.5}, {"input": [-85.0, 76.0], "expected": 76.0}, {"input": [-85.0, 76.5], "expected": 76.5}, {"input": [-85.0, 77.0], "expected": 77.0}, {"input": [-85.0, 77.5], "expected": 77.5}, {"input": [-85.0, 78.0], "expected": 78.0}, {"input": [-85.0, 78.5], "expected": 78.5}, {"input": [-85.0, 79.0], "expected": 79.0}, {"input": [-85.0, 79.5], "expected": 79.5}, {"input": [-85.0, 80.0], "expected": 80.0}, {"input": [-85.0, 80.5], "expected": 80.5}, {"input": [-85.0, 81.0], "expected": 81.0}, {"input": [-85.0, 81.5], "expected": 81.5}, {"input": [-85.0, 82.0], "expected": 82.0}, {"input": [-85.0, 82.5], "expected": 82.5}, {"input": [-85.0, 83.0], "expected": 83.0}, {"input": [-85.0, 83.5], "expected": 83.5}, {"input": [-85.0, 84.0], "expected": 84.0}, {"input": [-85.0, 84.5], "expected": 84.5}, {"input": [-85.0, 85.0], "expected": 85.0}, {"input": [-85.0, 85.5], "expected": 85.5}, {"input": [-85.0, 86.0], "expected": 86.0}, {"input": [-85.0, 86.5], "expected": 86.5}, {"input": [-85.0, 87.0], "expected": 87.0}, {"input": [-85.0, 87.5], "expected": 87.5}, {"input": [-85.0, 88.0], "expected": 88.0}, {"input": [-85.0, 88.5], "expected": 88.5}, {"input": [-85.0, 89.0], "expected": 89.0}, {"input": [-85.0, 89.5], "expected": 89.5}, {"input": [-85.0, 90.0], "expected": 90.0}, {"input": [-85.0, 90.5], "expected": 90.5}, {"input": [-85.0, 91.0], "expected": 91.0}, {"input": [-85.0, 91.5], "expected": 91.5}, {"input": [-85.0, 92.0], "expected": 92.0}, {"input": [-85.0, 92.5], "expected": 92.5}, {"input": [-85.0, 93.0], "expected": 93.0}, {"input": [-85.0, 93.5], "expected": 93.5}, {"input": [-85.0, 94.0], "expected": 94.0}, {"input": [-85.0, 94.5], "expected": 94.5}, {"input": [-85.0, 95.0], "expected": 95.0}, {"input": [-85.0, 95.5], "expected": 95.5}, {"input": [-85.0, 96.0], "expected": 96.0}, {"input": [-85.0, 96.5], "expected": 96.5}, {"input": [-85.0, 97.0], "expected": 97.0}, {"input": [-85.0, 97.5], "expected": 97.5}, {"input": [-85.0, 98.0], "expected": 98.0}, {"input": [-85.0, 98.5], "expected": 98.5}, {"input": [-85.0, 99.0], "expected": 99.0}, {"input": [-85.0, 99.5], "expected": 99.5}, {"input": [-84.5, -100.0], "expected": -84.49999981446088}, {"input": [-84.5, -99.5], "expected": -84.49999969409772}, {"input": [-84.5, -99.0], "expected": -84.49999949565246}, {"input": [-84.5, -98.5], "expected": -84.49999916847163}, {"input": [-84.5, -98.0], "expected": -84.49999862904185}, {"input": [-84.5, -97.5], "expected": -84.49999773967315}, {"input": [-84.5, -97.0], "expected": -84.49999627335377}, {"input": [-84.5, -96.5], "expected": -84.49999385580652}, {"input": [-84.5, -96.0], "expected": -84.49998986995772}, {"input": [-84.5, -95.5], "expected": -84.49998329843868}, {"input": [-84.5, -95.0], "expected": -84.49997246392977}, {"input": [-84.5, -94.5], "expected": -84.49995460110078}, {"input": [-84.5, -94.0], "expected": -84.49992515097136}, {"input": [-84.5, -93.5], "expected": -84.49987659781027}, {"input": [-84.5, -93.0], "expected": -84.49979655232787}, {"input": [-84.5, -92.5], "expected": -84.4996645936271}, {"input": [-84.5, -92.0], "expected": -84.49944706852465}, {"input": [-84.5, -91.5], "expected": -84.49908853354623}, {"input": [-84.5, -91.0], "expected": -84.49849768984025}, {"input": [-84.5, -90.5], "expected": -84.49752431486228}, {"input": [-84.5, -90.0], "expected": -84.49592155672943}, {"input": [-84.5, -89.5], "expected": -84.49328465151088}, {"input": [-84.5, -89.0], "expected": -84.4889522551514}, {"input": [-84.5, -88.5], "expected": -84.4818500720822}, {"input": [-84.5, -88.0], "expected": -84.47024958172737}, {"input": [-84.5, -87.5], "expected": -84.45141264842626}, {"input": [-84.5, -87.0], "expected": -84.42111026570745}, {"input": [-84.5, -86.5], "expected": -84.37307198895702}, {"input": [-84.5, -86.0], "expected": -84.29858672201725}, {"input": [-84.5, -85.5], "expected": -84.18673831248178}, {"input": [-84.5, -85.0], "expected": -84.0259230158199}, {"input": [-84.5, -84.5], "expected": -83.80685281944005}, {"input": [-84.5, -84.0], "expected": -83.5259230158199}, {"input": [-84.5, -83.5], "expected": -83.18673831248178}, {"input": [-84.5, -83.0], "expected": -82.79858672201725}, {"input": [-84.5, -82.5], "expected": -82.37307198895702}, {"input": [-84.5, -82.0], "expected": -81.92111026570745}, {"input": [-84.5, -81.5], "expected": -81.45141264842626}, {"input": [-84.5, -81.0], "expected": -80.97024958172737}, {"input": [-84.5, -80.5], "expected": -80.4818500720822}, {"input": [-84.5, -80.0], "expected": -79.9889522551514}, {"input": [-84.5, -79.5], "expected": -79.49328465151088}, {"input": [-84.5, -79.0], "expected": -78.99592155672943}, {"input": [-84.5, -78.5], "expected": -78.49752431486228}, {"input": [-84.5, -78.0], "expected": -77.99849768984025}, {"input": [-84.5, -77.5], "expected": -77.49908853354623}, {"input": [-84.5, -77.0], "expected": -76.99944706852465}, {"input": [-84.5, -76.5], "expected": -76.4996645936271}, {"input": [-84.5, -76.0], "expected": -75.99979655232787}, {"input": [-84.5, -75.5], "expected": -75.49987659781027}, {"input": [-84.5, -75.0], "expected": -74.99992515097136}, {"input": [-84.5, -74.5], "expected": -74.49995460110078}, {"input": [-84.5, -74.0], "expected": -73.99997246392977}, {"input": [-84.5, -73.5], "expected": -73.49998329843868}, {"input": [-84.5, -73.0], "expected": -72.99998986995772}, {"input": [-84.5, -72.5], "expected": -72.49999385580652}, {"input": [-84.5, -72.0], "expected": -71.99999627335377}, {"input": [-84.5, -71.5], "expected": -71.49999773967315}, {"input": [-84.5, -71.0], "expected": -70.99999862904185}, {"input": [-84.5, -70.5], "expected": -70.49999916847163}, {"input": [-84.5, -70.0], "expected": -69.99999949565246}, {"input": [-84.5, -69.5], "expected": -69.49999969409772}, {"input": [-84.5, -69.0], "expected": -68.99999981446088}, {"input": [-84.5, -68.5], "expected": -68.49999988746484}, {"input": [-84.5, -68.0], "expected": -67.99999993174397}, {"input": [-84.5, -67.5], "expected": -67.49999995860063}, {"input": [-84.5, -67.0], "expected": -66.99999997489}, {"input": [-84.5, -66.5], "expected": -66.49999998477001}, {"input": [-84.5, -66.0], "expected": -65.99999999076255}, {"input": [-84.5, -65.5], "expected": -65.4999999943972}, {"input": [-84.5, -65.0], "expected": -64.99999999660173}, {"input": [-84.5, -64.5], "expected": -64.49999999793884}, {"input": [-84.5, -64.0], "expected": -63.99999999874985}, {"input": [-84.5, -63.5], "expected": -63.499999999241744}, {"input": [-84.5, -63.0], "expected": -62.999999999540094}, {"input": [-84.5, -62.5], "expected": -62.499999999721055}, {"input": [-84.5, -62.0], "expected": -61.99999999983081}, {"input": [-84.5, -61.5], "expected": -61.49999999989738}, {"input": [-84.5, -61.0], "expected": -60.99999999993776}, {"input": [-84.5, -60.5], "expected": -60.49999999996225}, {"input": [-84.5, -60.0], "expected": -59.9999999999771}, {"input": [-84.5, -59.5], "expected": -59.49999999998611}, {"input": [-84.5, -59.0], "expected": -58.99999999999158}, {"input": [-84.5, -58.5], "expected": -58.49999999999489}, {"input": [-84.5, -58.0], "expected": -57.9999999999969}, {"input": [-84.5, -57.5], "expected": -57.49999999999812}, {"input": [-84.5, -57.0], "expected": -56.99999999999886}, {"input": [-84.5, -56.5], "expected": -56.49999999999931}, {"input": [-84.5, -56.0], "expected": -55.99999999999958}, {"input": [-84.5, -55.5], "expected": -55.499999999999744}, {"input": [-84.5, -55.0], "expected": -54.999999999999844}, {"input": [-84.5, -54.5], "expected": -54.49999999999991}, {"input": [-84.5, -54.0], "expected": -53.99999999999994}, {"input": [-84.5, -53.5], "expected": -53.499999999999964}, {"input": [-84.5, -53.0], "expected": -52.99999999999998}, {"input": [-84.5, -52.5], "expected": -52.499999999999986}, {"input": [-84.5, -52.0], "expected": -51.99999999999999}, {"input": [-84.5, -51.5], "expected": -51.49999999999999}, {"input": [-84.5, -51.0], "expected": -51.0}, {"input": [-84.5, -50.5], "expected": -50.5}, {"input": [-84.5, -50.0], "expected": -50.0}, {"input": [-84.5, -49.5], "expected": -49.5}, {"input": [-84.5, -49.0], "expected": -49.0}, {"input": [-84.5, -48.5], "expected": -48.5}, {"input": [-84.5, -48.0], "expected": -48.0}, {"input": [-84.5, -47.5], "expected": -47.5}, {"input": [-84.5, -47.0], "expected": -47.0}, {"input": [-84.5, -46.5], "expected": -46.5}, {"input": [-84.5, -46.0], "expected": -46.0}, {"input": [-84.5, -45.5], "expected": -45.5}, {"input": [-84.5, -45.0], "expected": -45.0}, {"input": [-84.5, -44.5], "expected": -44.5}, {"input": [-84.5, -44.0], "expected": -44.0}, {"input": [-84.5, -43.5], "expected": -43.5}, {"input": [-84.5, -43.0], "expected": -43.0}, {"input": [-84.5, -42.5], "expected": -42.5}, {"input": [-84.5, -42.0], "expected": -42.0}, {"input": [-84.5, -41.5], "expected": -41.5}, {"input": [-84.5, -41.0], "expected": -41.0}, {"input": [-84.5, -40.5], "expected": -40.5}, {"input": [-84.5, -40.0], "expected": -40.0}, {"input": [-84.5, -39.5], "expected": -39.5}, {"input": [-84.5, -39.0], "expected": -39.0}, {"input": [-84.5, -38.5], "expected": -38.5}, {"input": [-84.5, -38.0], "expected": -38.0}, {"input": [-84.5, -37.5], "expected": -37.5}, {"input": [-84.5, -37.0], "expected": -37.0}, {"input": [-84.5, -36.5], "expected": -36.5}, {"input": [-84.5, -36.0], "expected": -36.0}, {"input": [-84.5, -35.5], "expected": -35.5}, {"input": [-84.5, -35.0], "expected": -35.0}, {"input": [-84.5, -34.5], "expected": -34.5}, {"input": [-84.5, -34.0], "expected": -34.0}, {"input": [-84.5, -33.5], "expected": -33.5}, {"input": [-84.5, -33.0], "expected": -33.0}, {"input": [-84.5, -32.5], "expected": -32.5}, {"input": [-84.5, -32.0], "expected": -32.0}, {"input": [-84.5, -31.5], "expected": -31.5}, {"input": [-84.5, -31.0], "expected": -31.0}, {"input": [-84.5, -30.5], "expected": -30.5}, {"input": [-84.5, -30.0], "expected": -30.0}, {"input": [-84.5, -29.5], "expected": -29.5}, {"input": [-84.5, -29.0], "expected": -29.0}, {"input": [-84.5, -28.5], "expected": -28.5}, {"input": [-84.5, -28.0], "expected": -28.0}, {"input": [-84.5, -27.5], "expected": -27.5}, {"input": [-84.5, -27.0], "expected": -27.0}, {"input": [-84.5, -26.5], "expected": -26.5}, {"input": [-84.5, -26.0], "expected": -26.0}, {"input": [-84.5, -25.5], "expected": -25.5}, {"input": [-84.5, -25.0], "expected": -25.0}, {"input": [-84.5, -24.5], "expected": -24.5}, {"input": [-84.5, -24.0], "expected": -24.0}, {"input": [-84.5, -23.5], "expected": -23.5}, {"input": [-84.5, -23.0], "expected": -23.0}, {"input": [-84.5, -22.5], "expected": -22.5}, {"input": [-84.5, -22.0], "expected": -22.0}, {"input": [-84.5, -21.5], "expected": -21.5}, {"input": [-84.5, -21.0], "expected": -21.0}, {"input": [-84.5, -20.5], "expected": -20.5}, {"input": [-84.5, -20.0], "expected": -20.0}, {"input": [-84.5, -19.5], "expected": -19.5}, {"input": [-84.5, -19.0], "expected": -19.0}, {"input": [-84.5, -18.5], "expected": -18.5}, {"input": [-84.5, -18.0], "expected": -18.0}, {"input": [-84.5, -17.5], "expected": -17.5}, {"input": [-84.5, -17.0], "expected": -17.0}, {"input": [-84.5, -16.5], "expected": -16.5}, {"input": [-84.5, -16.0], "expected": -16.0}, {"input": [-84.5, -15.5], "expected": -15.5}, {"input": [-84.5, -15.0], "expected": -15.0}, {"input": [-84.5, -14.5], "expected": -14.5}, {"input": [-84.5, -14.0], "expected": -14.0}, {"input": [-84.5, -13.5], "expected": -13.5}, {"input": [-84.5, -13.0], "expected": -13.0}, {"input": [-84.5, -12.5], "expected": -12.5}, {"input": [-84.5, -12.0], "expected": -12.0}, {"input": [-84.5, -11.5], "expected": -11.5}, {"input": [-84.5, -11.0], "expected": -11.0}, {"input": [-84.5, -10.5], "expected": -10.5}, {"input": [-84.5, -10.0], "expected": -10.0}, {"input": [-84.5, -9.5], "expected": -9.5}, {"input": [-84.5, -9.0], "expected": -9.0}, {"input": [-84.5, -8.5], "expected": -8.5}, {"input": [-84.5, -8.0], "expected": -8.0}, {"input": [-84.5, -7.5], "expected": -7.5}, {"input": [-84.5, -7.0], "expected": -7.0}, {"input": [-84.5, -6.5], "expected": -6.5}, {"input": [-84.5, -6.0], "expected": -6.0}, {"input": [-84.5, -5.5], "expected": -5.5}, {"input": [-84.5, -5.0], "expected": -5.0}, {"input": [-84.5, -4.5], "expected": -4.5}, {"input": [-84.5, -4.0], "expected": -4.0}, {"input": [-84.5, -3.5], "expected": -3.5}, {"input": [-84.5, -3.0], "expected": -3.0}, {"input": [-84.5, -2.5], "expected": -2.5}, {"input": [-84.5, -2.0], "expected": -2.0}, {"input": [-84.5, -1.5], "expected": -1.5}, {"input": [-84.5, -1.0], "expected": -1.0}, {"input": [-84.5, -0.5], "expected": -0.5}, {"input": [-84.5, 0.0], "expected": 2.005008781961654e-37}, {"input": [-84.5, 0.5], "expected": 0.5}, {"input": [-84.5, 1.0], "expected": 1.0}, {"input": [-84.5, 1.5], "expected": 1.5}, {"input": [-84.5, 2.0], "expected": 2.0}, {"input": [-84.5, 2.5], "expected": 2.5}, {"input": [-84.5, 3.0], "expected": 3.0}, {"input": [-84.5, 3.5], "expected": 3.5}, {"input": [-84.5, 4.0], "expected": 4.0}, {"input": [-84.5, 4.5], "expected": 4.5}, {"input": [-84.5, 5.0], "expected": 5.0}, {"input": [-84.5, 5.5], "expected": 5.5}, {"input": [-84.5, 6.0], "expected": 6.0}, {"input": [-84.5, 6.5], "expected": 6.5}, {"input": [-84.5, 7.0], "expected": 7.0}, {"input": [-84.5, 7.5], "expected": 7.5}, {"input": [-84.5, 8.0], "expected": 8.0}, {"input": [-84.5, 8.5], "expected": 8.5}, {"input": [-84.5, 9.0], "expected": 9.0}, {"input": [-84.5, 9.5], "expected": 9.5}, {"input": [-84.5, 10.0], "expected": 10.0}, {"input": [-84.5, 10.5], "expected": 10.5}, {"input": [-84.5, 11.0], "expected": 11.0}, {"input": [-84.5, 11.5], "expected": 11.5}, {"input": [-84.5, 12.0], "expected": 12.0}, {"input": [-84.5, 12.5], "expected": 12.5}, {"input": [-84.5, 13.0], "expected": 13.0}, {"input": [-84.5, 13.5], "expected": 13.5}, {"input": [-84.5, 14.0], "expected": 14.0}, {"input": [-84.5, 14.5], "expected": 14.5}, {"input": [-84.5, 15.0], "expected": 15.0}, {"input": [-84.5, 15.5], "expected": 15.5}, {"input": [-84.5, 16.0], "expected": 16.0}, {"input": [-84.5, 16.5], "expected": 16.5}, {"input": [-84.5, 17.0], "expected": 17.0}, {"input": [-84.5, 17.5], "expected": 17.5}, {"input": [-84.5, 18.0], "expected": 18.0}, {"input": [-84.5, 18.5], "expected": 18.5}, {"input": [-84.5, 19.0], "expected": 19.0}, {"input": [-84.5, 19.5], "expected": 19.5}, {"input": [-84.5, 20.0], "expected": 20.0}, {"input": [-84.5, 20.5], "expected": 20.5}, {"input": [-84.5, 21.0], "expected": 21.0}, {"input": [-84.5, 21.5], "expected": 21.5}, {"input": [-84.5, 22.0], "expected": 22.0}, {"input": [-84.5, 22.5], "expected": 22.5}, {"input": [-84.5, 23.0], "expected": 23.0}, {"input": [-84.5, 23.5], "expected": 23.5}, {"input": [-84.5, 24.0], "expected": 24.0}, {"input": [-84.5, 24.5], "expected": 24.5}, {"input": [-84.5, 25.0], "expected": 25.0}, {"input": [-84.5, 25.5], "expected": 25.5}, {"input": [-84.5, 26.0], "expected": 26.0}, {"input": [-84.5, 26.5], "expected": 26.5}, {"input": [-84.5, 27.0], "expected": 27.0}, {"input": [-84.5, 27.5], "expected": 27.5}, {"input": [-84.5, 28.0], "expected": 28.0}, {"input": [-84.5, 28.5], "expected": 28.5}, {"input": [-84.5, 29.0], "expected": 29.0}, {"input": [-84.5, 29.5], "expected": 29.5}, {"input": [-84.5, 30.0], "expected": 30.0}, {"input": [-84.5, 30.5], "expected": 30.5}, {"input": [-84.5, 31.0], "expected": 31.0}, {"input": [-84.5, 31.5], "expected": 31.5}, {"input": [-84.5, 32.0], "expected": 32.0}, {"input": [-84.5, 32.5], "expected": 32.5}, {"input": [-84.5, 33.0], "expected": 33.0}, {"input": [-84.5, 33.5], "expected": 33.5}, {"input": [-84.5, 34.0], "expected": 34.0}, {"input": [-84.5, 34.5], "expected": 34.5}, {"input": [-84.5, 35.0], "expected": 35.0}, {"input": [-84.5, 35.5], "expected": 35.5}, {"input": [-84.5, 36.0], "expected": 36.0}, {"input": [-84.5, 36.5], "expected": 36.5}, {"input": [-84.5, 37.0], "expected": 37.0}, {"input": [-84.5, 37.5], "expected": 37.5}, {"input": [-84.5, 38.0], "expected": 38.0}, {"input": [-84.5, 38.5], "expected": 38.5}, {"input": [-84.5, 39.0], "expected": 39.0}, {"input": [-84.5, 39.5], "expected": 39.5}, {"input": [-84.5, 40.0], "expected": 40.0}, {"input": [-84.5, 40.5], "expected": 40.5}, {"input": [-84.5, 41.0], "expected": 41.0}, {"input": [-84.5, 41.5], "expected": 41.5}, {"input": [-84.5, 42.0], "expected": 42.0}, {"input": [-84.5, 42.5], "expected": 42.5}, {"input": [-84.5, 43.0], "expected": 43.0}, {"input": [-84.5, 43.5], "expected": 43.5}, {"input": [-84.5, 44.0], "expected": 44.0}, {"input": [-84.5, 44.5], "expected": 44.5}, {"input": [-84.5, 45.0], "expected": 45.0}, {"input": [-84.5, 45.5], "expected": 45.5}, {"input": [-84.5, 46.0], "expected": 46.0}, {"input": [-84.5, 46.5], "expected": 46.5}, {"input": [-84.5, 47.0], "expected": 47.0}, {"input": [-84.5, 47.5], "expected": 47.5}, {"input": [-84.5, 48.0], "expected": 48.0}, {"input": [-84.5, 48.5], "expected": 48.5}, {"input": [-84.5, 49.0], "expected": 49.0}, {"input": [-84.5, 49.5], "expected": 49.5}, {"input": [-84.5, 50.0], "expected": 50.0}, {"input": [-84.5, 50.5], "expected": 50.5}, {"input": [-84.5, 51.0], "expected": 51.0}, {"input": [-84.5, 51.5], "expected": 51.5}, {"input": [-84.5, 52.0], "expected": 52.0}, {"input": [-84.5, 52.5], "expected": 52.5}, {"input": [-84.5, 53.0], "expected": 53.0}, {"input": [-84.5, 53.5], "expected": 53.5}, {"input": [-84.5, 54.0], "expected": 54.0}, {"input": [-84.5, 54.5], "expected": 54.5}, {"input": [-84.5, 55.0], "expected": 55.0}, {"input": [-84.5, 55.5], "expected": 55.5}, {"input": [-84.5, 56.0], "expected": 56.0}, {"input": [-84.5, 56.5], "expected": 56.5}, {"input": [-84.5, 57.0], "expected": 57.0}, {"input": [-84.5, 57.5], "expected": 57.5}, {"input": [-84.5, 58.0], "expected": 58.0}, {"input": [-84.5, 58.5], "expected": 58.5}, {"input": [-84.5, 59.0], "expected": 59.0}, {"input": [-84.5, 59.5], "expected": 59.5}, {"input": [-84.5, 60.0], "expected": 60.0}, {"input": [-84.5, 60.5], "expected": 60.5}, {"input": [-84.5, 61.0], "expected": 61.0}, {"input": [-84.5, 61.5], "expected": 61.5}, {"input": [-84.5, 62.0], "expected": 62.0}, {"input": [-84.5, 62.5], "expected": 62.5}, {"input": [-84.5, 63.0], "expected": 63.0}, {"input": [-84.5, 63.5], "expected": 63.5}, {"input": [-84.5, 64.0], "expected": 64.0}, {"input": [-84.5, 64.5], "expected": 64.5}, {"input": [-84.5, 65.0], "expected": 65.0}, {"input": [-84.5, 65.5], "expected": 65.5}, {"input": [-84.5, 66.0], "expected": 66.0}, {"input": [-84.5, 66.5], "expected": 66.5}, {"input": [-84.5, 67.0], "expected": 67.0}, {"input": [-84.5, 67.5], "expected": 67.5}, {"input": [-84.5, 68.0], "expected": 68.0}, {"input": [-84.5, 68.5], "expected": 68.5}, {"input": [-84.5, 69.0], "expected": 69.0}, {"input": [-84.5, 69.5], "expected": 69.5}, {"input": [-84.5, 70.0], "expected": 70.0}, {"input": [-84.5, 70.5], "expected": 70.5}, {"input": [-84.5, 71.0], "expected": 71.0}, {"input": [-84.5, 71.5], "expected": 71.5}, {"input": [-84.5, 72.0], "expected": 72.0}, {"input": [-84.5, 72.5], "expected": 72.5}, {"input": [-84.5, 73.0], "expected": 73.0}, {"input": [-84.5, 73.5], "expected": 73.5}, {"input": [-84.5, 74.0], "expected": 74.0}, {"input": [-84.5, 74.5], "expected": 74.5}, {"input": [-84.5, 75.0], "expected": 75.0}, {"input": [-84.5, 75.5], "expected": 75.5}, {"input": [-84.5, 76.0], "expected": 76.0}, {"input": [-84.5, 76.5], "expected": 76.5}, {"input": [-84.5, 77.0], "expected": 77.0}, {"input": [-84.5, 77.5], "expected": 77.5}, {"input": [-84.5, 78.0], "expected": 78.0}, {"input": [-84.5, 78.5], "expected": 78.5}, {"input": [-84.5, 79.0], "expected": 79.0}, {"input": [-84.5, 79.5], "expected": 79.5}, {"input": [-84.5, 80.0], "expected": 80.0}, {"input": [-84.5, 80.5], "expected": 80.5}, {"input": [-84.5, 81.0], "expected": 81.0}, {"input": [-84.5, 81.5], "expected": 81.5}, {"input": [-84.5, 82.0], "expected": 82.0}, {"input": [-84.5, 82.5], "expected": 82.5}, {"input": [-84.5, 83.0], "expected": 83.0}, {"input": [-84.5, 83.5], "expected": 83.5}, {"input": [-84.5, 84.0], "expected": 84.0}, {"input": [-84.5, 84.5], "expected": 84.5}, {"input": [-84.5, 85.0], "expected": 85.0}, {"input": [-84.5, 85.5], "expected": 85.5}, {"input": [-84.5, 86.0], "expected": 86.0}, {"input": [-84.5, 86.5], "expected": 86.5}, {"input": [-84.5, 87.0], "expected": 87.0}, {"input": [-84.5, 87.5], "expected": 87.5}, {"input": [-84.5, 88.0], "expected": 88.0}, {"input": [-84.5, 88.5], "expected": 88.5}, {"input": [-84.5, 89.0], "expected": 89.0}, {"input": [-84.5, 89.5], "expected": 89.5}, {"input": [-84.5, 90.0], "expected": 90.0}, {"input": [-84.5, 90.5], "expected": 90.5}, {"input": [-84.5, 91.0], "expected": 91.0}, {"input": [-84.5, 91.5], "expected": 91.5}, {"input": [-84.5, 92.0], "expected": 92.0}, {"input": [-84.5, 92.5], "expected": 92.5}, {"input": [-84.5, 93.0], "expected": 93.0}, {"input": [-84.5, 93.5], "expected": 93.5}, {"input": [-84.5, 94.0], "expected": 94.0}, {"input": [-84.5, 94.5], "expected": 94.5}, {"input": [-84.5, 95.0], "expected": 95.0}, {"input": [-84.5, 95.5], "expected": 95.5}, {"input": [-84.5, 96.0], "expected": 96.0}, {"input": [-84.5, 96.5], "expected": 96.5}, {"input": [-84.5, 97.0], "expected": 97.0}, {"input": [-84.5, 97.5], "expected": 97.5}, {"input": [-84.5, 98.0], "expected": 98.0}, {"input": [-84.5, 98.5], "expected": 98.5}, {"input": [-84.5, 99.0], "expected": 99.0}, {"input": [-84.5, 99.5], "expected": 99.5}, {"input": [-84.0, -100.0], "expected": -83.99999988746484}, {"input": [-84.0, -99.5], "expected": -83.99999981446088}, {"input": [-84.0, -99.0], "expected": -83.99999969409772}, {"input": [-84.0, -98.5], "expected": -83.99999949565246}, {"input": [-84.0, -98.0], "expected": -83.99999916847163}, {"input": [-84.0, -97.5], "expected": -83.99999862904185}, {"input": [-84.0, -97.0], "expected": -83.99999773967315}, {"input": [-84.0, -96.5], "expected": -83.99999627335377}, {"input": [-84.0, -96.0], "expected": -83.99999385580652}, {"input": [-84.0, -95.5], "expected": -83.99998986995772}, {"input": [-84.0, -95.0], "expected": -83.99998329843868}, {"input": [-84.0, -94.5], "expected": -83.99997246392977}, {"input": [-84.0, -94.0], "expected": -83.99995460110078}, {"input": [-84.0, -93.5], "expected": -83.99992515097136}, {"input": [-84.0, -93.0], "expected": -83.99987659781027}, {"input": [-84.0, -92.5], "expected": -83.99979655232787}, {"input": [-84.0, -92.0], "expected": -83.9996645936271}, {"input": [-84.0, -91.5], "expected": -83.99944706852465}, {"input": [-84.0, -91.0], "expected": -83.99908853354623}, {"input": [-84.0, -90.5], "expected": -83.99849768984025}, {"input": [-84.0, -90.0], "expected": -83.99752431486228}, {"input": [-84.0, -89.5], "expected": -83.99592155672943}, {"input": [-84.0, -89.0], "expected": -83.99328465151088}, {"input": [-84.0, -88.5], "expected": -83.9889522551514}, {"input": [-84.0, -88.0], "expected": -83.9818500720822}, {"input": [-84.0, -87.5], "expected": -83.97024958172737}, {"input": [-84.0, -87.0], "expected": -83.95141264842626}, {"input": [-84.0, -86.5], "expected": -83.92111026570745}, {"input": [-84.0, -86.0], "expected": -83.87307198895702}, {"input": [-84.0, -85.5], "expected": -83.79858672201725}, {"input": [-84.0, -85.0], "expected": -83.68673831248178}, {"input": [-84.0, -84.5], "expected": -83.5259230158199}, {"input": [-84.0, -84.0], "expected": -83.30685281944005}, {"input": [-84.0, -83.5], "expected": -83.0259230158199}, {"input": [-84.0, -83.0], "expected": -82.68673831248178}, {"input": [-84.0, -82.5], "expected": -82.29858672201725}, {"input": [-84.0, -82.0], "expected": -81.87307198895702}, {"input": [-84.0, -81.5], "expected": -81.42111026570745}, {"input": [-84.0, -81.0], "expected": -80.95141264842626}, {"input": [-84.0, -80.5], "expected": -80.47024958172737}, {"input": [-84.0, -80.0], "expected": -79.9818500720822}, {"input": [-84.0, -79.5], "expected": -79.4889522551514}, {"input": [-84.0, -79.0], "expected": -78.99328465151088}, {"input": [-84.0, -78.5], "expected": -78.49592155672943}, {"input": [-84.0, -78.0], "expected": -77.99752431486228}, {"input": [-84.0, -77.5], "expected": -77.49849768984025}, {"input": [-84.0, -77.0], "expected": -76.99908853354623}, {"input": [-84.0, -76.5], "expected": -76.49944706852465}, {"input": [-84.0, -76.0], "expected": -75.9996645936271}, {"input": [-84.0, -75.5], "expected": -75.49979655232787}, {"input": [-84.0, -75.0], "expected": -74.99987659781027}, {"input": [-84.0, -74.5], "expected": -74.49992515097136}, {"input": [-84.0, -74.0], "expected": -73.99995460110078}, {"input": [-84.0, -73.5], "expected": -73.49997246392977}, {"input": [-84.0, -73.0], "expected": -72.99998329843868}, {"input": [-84.0, -72.5], "expected": -72.49998986995772}, {"input": [-84.0, -72.0], "expected": -71.99999385580652}, {"input": [-84.0, -71.5], "expected": -71.49999627335377}, {"input": [-84.0, -71.0], "expected": -70.99999773967315}, {"input": [-84.0, -70.5], "expected": -70.49999862904185}, {"input": [-84.0, -70.0], "expected": -69.99999916847163}, {"input": [-84.0, -69.5], "expected": -69.49999949565246}, {"input": [-84.0, -69.0], "expected": -68.99999969409772}, {"input": [-84.0, -68.5], "expected": -68.49999981446088}, {"input": [-84.0, -68.0], "expected": -67.99999988746484}, {"input": [-84.0, -67.5], "expected": -67.49999993174397}, {"input": [-84.0, -67.0], "expected": -66.99999995860063}, {"input": [-84.0, -66.5], "expected": -66.49999997489}, {"input": [-84.0, -66.0], "expected": -65.99999998477001}, {"input": [-84.0, -65.5], "expected": -65.49999999076255}, {"input": [-84.0, -65.0], "expected": -64.9999999943972}, {"input": [-84.0, -64.5], "expected": -64.49999999660173}, {"input": [-84.0, -64.0], "expected": -63.99999999793884}, {"input": [-84.0, -63.5], "expected": -63.49999999874985}, {"input": [-84.0, -63.0], "expected": -62.999999999241744}, {"input": [-84.0, -62.5], "expected": -62.499999999540094}, {"input": [-84.0, -62.0], "expected": -61.999999999721055}, {"input": [-84.0, -61.5], "expected": -61.49999999983081}, {"input": [-84.0, -61.0], "expected": -60.99999999989738}, {"input": [-84.0, -60.5], "expected": -60.49999999993776}, {"input": [-84.0, -60.0], "expected": -59.99999999996225}, {"input": [-84.0, -59.5], "expected": -59.4999999999771}, {"input": [-84.0, -59.0], "expected": -58.99999999998611}, {"input": [-84.0, -58.5], "expected": -58.49999999999158}, {"input": [-84.0, -58.0], "expected": -57.99999999999489}, {"input": [-84.0, -57.5], "expected": -57.4999999999969}, {"input": [-84.0, -57.0], "expected": -56.99999999999812}, {"input": [-84.0, -56.5], "expected": -56.49999999999886}, {"input": [-84.0, -56.0], "expected": -55.99999999999931}, {"input": [-84.0, -55.5], "expected": -55.49999999999958}, {"input": [-84.0, -55.0], "expected": -54.999999999999744}, {"input": [-84.0, -54.5], "expected": -54.499999999999844}, {"input": [-84.0, -54.0], "expected": -53.99999999999991}, {"input": [-84.0, -53.5], "expected": -53.49999999999994}, {"input": [-84.0, -53.0], "expected": -52.999999999999964}, {"input": [-84.0, -52.5], "expected": -52.49999999999998}, {"input": [-84.0, -52.0], "expected": -51.999999999999986}, {"input": [-84.0, -51.5], "expected": -51.49999999999999}, {"input": [-84.0, -51.0], "expected": -50.99999999999999}, {"input": [-84.0, -50.5], "expected": -50.5}, {"input": [-84.0, -50.0], "expected": -50.0}, {"input": [-84.0, -49.5], "expected": -49.5}, {"input": [-84.0, -49.0], "expected": -49.0}, {"input": [-84.0, -48.5], "expected": -48.5}, {"input": [-84.0, -48.0], "expected": -48.0}, {"input": [-84.0, -47.5], "expected": -47.5}, {"input": [-84.0, -47.0], "expected": -47.0}, {"input": [-84.0, -46.5], "expected": -46.5}, {"input": [-84.0, -46.0], "expected": -46.0}, {"input": [-84.0, -45.5], "expected": -45.5}, {"input": [-84.0, -45.0], "expected": -45.0}, {"input": [-84.0, -44.5], "expected": -44.5}, {"input": [-84.0, -44.0], "expected": -44.0}, {"input": [-84.0, -43.5], "expected": -43.5}, {"input": [-84.0, -43.0], "expected": -43.0}, {"input": [-84.0, -42.5], "expected": -42.5}, {"input": [-84.0, -42.0], "expected": -42.0}, {"input": [-84.0, -41.5], "expected": -41.5}, {"input": [-84.0, -41.0], "expected": -41.0}, {"input": [-84.0, -40.5], "expected": -40.5}, {"input": [-84.0, -40.0], "expected": -40.0}, {"input": [-84.0, -39.5], "expected": -39.5}, {"input": [-84.0, -39.0], "expected": -39.0}, {"input": [-84.0, -38.5], "expected": -38.5}, {"input": [-84.0, -38.0], "expected": -38.0}, {"input": [-84.0, -37.5], "expected": -37.5}, {"input": [-84.0, -37.0], "expected": -37.0}, {"input": [-84.0, -36.5], "expected": -36.5}, {"input": [-84.0, -36.0], "expected": -36.0}, {"input": [-84.0, -35.5], "expected": -35.5}, {"input": [-84.0, -35.0], "expected": -35.0}, {"input": [-84.0, -34.5], "expected": -34.5}, {"input": [-84.0, -34.0], "expected": -34.0}, {"input": [-84.0, -33.5], "expected": -33.5}, {"input": [-84.0, -33.0], "expected": -33.0}, {"input": [-84.0, -32.5], "expected": -32.5}, {"input": [-84.0, -32.0], "expected": -32.0}, {"input": [-84.0, -31.5], "expected": -31.5}, {"input": [-84.0, -31.0], "expected": -31.0}, {"input": [-84.0, -30.5], "expected": -30.5}, {"input": [-84.0, -30.0], "expected": -30.0}, {"input": [-84.0, -29.5], "expected": -29.5}, {"input": [-84.0, -29.0], "expected": -29.0}, {"input": [-84.0, -28.5], "expected": -28.5}, {"input": [-84.0, -28.0], "expected": -28.0}, {"input": [-84.0, -27.5], "expected": -27.5}, {"input": [-84.0, -27.0], "expected": -27.0}, {"input": [-84.0, -26.5], "expected": -26.5}, {"input": [-84.0, -26.0], "expected": -26.0}, {"input": [-84.0, -25.5], "expected": -25.5}, {"input": [-84.0, -25.0], "expected": -25.0}, {"input": [-84.0, -24.5], "expected": -24.5}, {"input": [-84.0, -24.0], "expected": -24.0}, {"input": [-84.0, -23.5], "expected": -23.5}, {"input": [-84.0, -23.0], "expected": -23.0}, {"input": [-84.0, -22.5], "expected": -22.5}, {"input": [-84.0, -22.0], "expected": -22.0}, {"input": [-84.0, -21.5], "expected": -21.5}, {"input": [-84.0, -21.0], "expected": -21.0}, {"input": [-84.0, -20.5], "expected": -20.5}, {"input": [-84.0, -20.0], "expected": -20.0}, {"input": [-84.0, -19.5], "expected": -19.5}, {"input": [-84.0, -19.0], "expected": -19.0}, {"input": [-84.0, -18.5], "expected": -18.5}, {"input": [-84.0, -18.0], "expected": -18.0}, {"input": [-84.0, -17.5], "expected": -17.5}, {"input": [-84.0, -17.0], "expected": -17.0}, {"input": [-84.0, -16.5], "expected": -16.5}, {"input": [-84.0, -16.0], "expected": -16.0}, {"input": [-84.0, -15.5], "expected": -15.5}, {"input": [-84.0, -15.0], "expected": -15.0}, {"input": [-84.0, -14.5], "expected": -14.5}, {"input": [-84.0, -14.0], "expected": -14.0}, {"input": [-84.0, -13.5], "expected": -13.5}, {"input": [-84.0, -13.0], "expected": -13.0}, {"input": [-84.0, -12.5], "expected": -12.5}, {"input": [-84.0, -12.0], "expected": -12.0}, {"input": [-84.0, -11.5], "expected": -11.5}, {"input": [-84.0, -11.0], "expected": -11.0}, {"input": [-84.0, -10.5], "expected": -10.5}, {"input": [-84.0, -10.0], "expected": -10.0}, {"input": [-84.0, -9.5], "expected": -9.5}, {"input": [-84.0, -9.0], "expected": -9.0}, {"input": [-84.0, -8.5], "expected": -8.5}, {"input": [-84.0, -8.0], "expected": -8.0}, {"input": [-84.0, -7.5], "expected": -7.5}, {"input": [-84.0, -7.0], "expected": -7.0}, {"input": [-84.0, -6.5], "expected": -6.5}, {"input": [-84.0, -6.0], "expected": -6.0}, {"input": [-84.0, -5.5], "expected": -5.5}, {"input": [-84.0, -5.0], "expected": -5.0}, {"input": [-84.0, -4.5], "expected": -4.5}, {"input": [-84.0, -4.0], "expected": -4.0}, {"input": [-84.0, -3.5], "expected": -3.5}, {"input": [-84.0, -3.0], "expected": -3.0}, {"input": [-84.0, -2.5], "expected": -2.5}, {"input": [-84.0, -2.0], "expected": -2.0}, {"input": [-84.0, -1.5], "expected": -1.5}, {"input": [-84.0, -1.0], "expected": -1.0}, {"input": [-84.0, -0.5], "expected": -0.5}, {"input": [-84.0, 0.0], "expected": 3.3057006267607343e-37}, {"input": [-84.0, 0.5], "expected": 0.5}, {"input": [-84.0, 1.0], "expected": 1.0}, {"input": [-84.0, 1.5], "expected": 1.5}, {"input": [-84.0, 2.0], "expected": 2.0}, {"input": [-84.0, 2.5], "expected": 2.5}, {"input": [-84.0, 3.0], "expected": 3.0}, {"input": [-84.0, 3.5], "expected": 3.5}, {"input": [-84.0, 4.0], "expected": 4.0}, {"input": [-84.0, 4.5], "expected": 4.5}, {"input": [-84.0, 5.0], "expected": 5.0}, {"input": [-84.0, 5.5], "expected": 5.5}, {"input": [-84.0, 6.0], "expected": 6.0}, {"input": [-84.0, 6.5], "expected": 6.5}, {"input": [-84.0, 7.0], "expected": 7.0}, {"input": [-84.0, 7.5], "expected": 7.5}, {"input": [-84.0, 8.0], "expected": 8.0}, {"input": [-84.0, 8.5], "expected": 8.5}, {"input": [-84.0, 9.0], "expected": 9.0}, {"input": [-84.0, 9.5], "expected": 9.5}, {"input": [-84.0, 10.0], "expected": 10.0}, {"input": [-84.0, 10.5], "expected": 10.5}, {"input": [-84.0, 11.0], "expected": 11.0}, {"input": [-84.0, 11.5], "expected": 11.5}, {"input": [-84.0, 12.0], "expected": 12.0}, {"input": [-84.0, 12.5], "expected": 12.5}, {"input": [-84.0, 13.0], "expected": 13.0}, {"input": [-84.0, 13.5], "expected": 13.5}, {"input": [-84.0, 14.0], "expected": 14.0}, {"input": [-84.0, 14.5], "expected": 14.5}, {"input": [-84.0, 15.0], "expected": 15.0}, {"input": [-84.0, 15.5], "expected": 15.5}, {"input": [-84.0, 16.0], "expected": 16.0}, {"input": [-84.0, 16.5], "expected": 16.5}, {"input": [-84.0, 17.0], "expected": 17.0}, {"input": [-84.0, 17.5], "expected": 17.5}, {"input": [-84.0, 18.0], "expected": 18.0}, {"input": [-84.0, 18.5], "expected": 18.5}, {"input": [-84.0, 19.0], "expected": 19.0}, {"input": [-84.0, 19.5], "expected": 19.5}, {"input": [-84.0, 20.0], "expected": 20.0}, {"input": [-84.0, 20.5], "expected": 20.5}, {"input": [-84.0, 21.0], "expected": 21.0}, {"input": [-84.0, 21.5], "expected": 21.5}, {"input": [-84.0, 22.0], "expected": 22.0}, {"input": [-84.0, 22.5], "expected": 22.5}, {"input": [-84.0, 23.0], "expected": 23.0}, {"input": [-84.0, 23.5], "expected": 23.5}, {"input": [-84.0, 24.0], "expected": 24.0}, {"input": [-84.0, 24.5], "expected": 24.5}, {"input": [-84.0, 25.0], "expected": 25.0}, {"input": [-84.0, 25.5], "expected": 25.5}, {"input": [-84.0, 26.0], "expected": 26.0}, {"input": [-84.0, 26.5], "expected": 26.5}, {"input": [-84.0, 27.0], "expected": 27.0}, {"input": [-84.0, 27.5], "expected": 27.5}, {"input": [-84.0, 28.0], "expected": 28.0}, {"input": [-84.0, 28.5], "expected": 28.5}, {"input": [-84.0, 29.0], "expected": 29.0}, {"input": [-84.0, 29.5], "expected": 29.5}, {"input": [-84.0, 30.0], "expected": 30.0}, {"input": [-84.0, 30.5], "expected": 30.5}, {"input": [-84.0, 31.0], "expected": 31.0}, {"input": [-84.0, 31.5], "expected": 31.5}, {"input": [-84.0, 32.0], "expected": 32.0}, {"input": [-84.0, 32.5], "expected": 32.5}, {"input": [-84.0, 33.0], "expected": 33.0}, {"input": [-84.0, 33.5], "expected": 33.5}, {"input": [-84.0, 34.0], "expected": 34.0}, {"input": [-84.0, 34.5], "expected": 34.5}, {"input": [-84.0, 35.0], "expected": 35.0}, {"input": [-84.0, 35.5], "expected": 35.5}, {"input": [-84.0, 36.0], "expected": 36.0}, {"input": [-84.0, 36.5], "expected": 36.5}, {"input": [-84.0, 37.0], "expected": 37.0}, {"input": [-84.0, 37.5], "expected": 37.5}, {"input": [-84.0, 38.0], "expected": 38.0}, {"input": [-84.0, 38.5], "expected": 38.5}, {"input": [-84.0, 39.0], "expected": 39.0}, {"input": [-84.0, 39.5], "expected": 39.5}, {"input": [-84.0, 40.0], "expected": 40.0}, {"input": [-84.0, 40.5], "expected": 40.5}, {"input": [-84.0, 41.0], "expected": 41.0}, {"input": [-84.0, 41.5], "expected": 41.5}, {"input": [-84.0, 42.0], "expected": 42.0}, {"input": [-84.0, 42.5], "expected": 42.5}, {"input": [-84.0, 43.0], "expected": 43.0}, {"input": [-84.0, 43.5], "expected": 43.5}, {"input": [-84.0, 44.0], "expected": 44.0}, {"input": [-84.0, 44.5], "expected": 44.5}, {"input": [-84.0, 45.0], "expected": 45.0}, {"input": [-84.0, 45.5], "expected": 45.5}, {"input": [-84.0, 46.0], "expected": 46.0}, {"input": [-84.0, 46.5], "expected": 46.5}, {"input": [-84.0, 47.0], "expected": 47.0}, {"input": [-84.0, 47.5], "expected": 47.5}, {"input": [-84.0, 48.0], "expected": 48.0}, {"input": [-84.0, 48.5], "expected": 48.5}, {"input": [-84.0, 49.0], "expected": 49.0}, {"input": [-84.0, 49.5], "expected": 49.5}, {"input": [-84.0, 50.0], "expected": 50.0}, {"input": [-84.0, 50.5], "expected": 50.5}, {"input": [-84.0, 51.0], "expected": 51.0}, {"input": [-84.0, 51.5], "expected": 51.5}, {"input": [-84.0, 52.0], "expected": 52.0}, {"input": [-84.0, 52.5], "expected": 52.5}, {"input": [-84.0, 53.0], "expected": 53.0}, {"input": [-84.0, 53.5], "expected": 53.5}, {"input": [-84.0, 54.0], "expected": 54.0}, {"input": [-84.0, 54.5], "expected": 54.5}, {"input": [-84.0, 55.0], "expected": 55.0}, {"input": [-84.0, 55.5], "expected": 55.5}, {"input": [-84.0, 56.0], "expected": 56.0}, {"input": [-84.0, 56.5], "expected": 56.5}, {"input": [-84.0, 57.0], "expected": 57.0}, {"input": [-84.0, 57.5], "expected": 57.5}, {"input": [-84.0, 58.0], "expected": 58.0}, {"input": [-84.0, 58.5], "expected": 58.5}, {"input": [-84.0, 59.0], "expected": 59.0}, {"input": [-84.0, 59.5], "expected": 59.5}, {"input": [-84.0, 60.0], "expected": 60.0}, {"input": [-84.0, 60.5], "expected": 60.5}, {"input": [-84.0, 61.0], "expected": 61.0}, {"input": [-84.0, 61.5], "expected": 61.5}, {"input": [-84.0, 62.0], "expected": 62.0}, {"input": [-84.0, 62.5], "expected": 62.5}, {"input": [-84.0, 63.0], "expected": 63.0}, {"input": [-84.0, 63.5], "expected": 63.5}, {"input": [-84.0, 64.0], "expected": 64.0}, {"input": [-84.0, 64.5], "expected": 64.5}, {"input": [-84.0, 65.0], "expected": 65.0}, {"input": [-84.0, 65.5], "expected": 65.5}, {"input": [-84.0, 66.0], "expected": 66.0}, {"input": [-84.0, 66.5], "expected": 66.5}, {"input": [-84.0, 67.0], "expected": 67.0}, {"input": [-84.0, 67.5], "expected": 67.5}, {"input": [-84.0, 68.0], "expected": 68.0}, {"input": [-84.0, 68.5], "expected": 68.5}, {"input": [-84.0, 69.0], "expected": 69.0}, {"input": [-84.0, 69.5], "expected": 69.5}, {"input": [-84.0, 70.0], "expected": 70.0}, {"input": [-84.0, 70.5], "expected": 70.5}, {"input": [-84.0, 71.0], "expected": 71.0}, {"input": [-84.0, 71.5], "expected": 71.5}, {"input": [-84.0, 72.0], "expected": 72.0}, {"input": [-84.0, 72.5], "expected": 72.5}, {"input": [-84.0, 73.0], "expected": 73.0}, {"input": [-84.0, 73.5], "expected": 73.5}, {"input": [-84.0, 74.0], "expected": 74.0}, {"input": [-84.0, 74.5], "expected": 74.5}, {"input": [-84.0, 75.0], "expected": 75.0}, {"input": [-84.0, 75.5], "expected": 75.5}, {"input": [-84.0, 76.0], "expected": 76.0}, {"input": [-84.0, 76.5], "expected": 76.5}, {"input": [-84.0, 77.0], "expected": 77.0}, {"input": [-84.0, 77.5], "expected": 77.5}, {"input": [-84.0, 78.0], "expected": 78.0}, {"input": [-84.0, 78.5], "expected": 78.5}, {"input": [-84.0, 79.0], "expected": 79.0}, {"input": [-84.0, 79.5], "expected": 79.5}, {"input": [-84.0, 80.0], "expected": 80.0}, {"input": [-84.0, 80.5], "expected": 80.5}, {"input": [-84.0, 81.0], "expected": 81.0}, {"input": [-84.0, 81.5], "expected": 81.5}, {"input": [-84.0, 82.0], "expected": 82.0}, {"input": [-84.0, 82.5], "expected": 82.5}, {"input": [-84.0, 83.0], "expected": 83.0}, {"input": [-84.0, 83.5], "expected": 83.5}, {"input": [-84.0, 84.0], "expected": 84.0}, {"input": [-84.0, 84.5], "expected": 84.5}, {"input": [-84.0, 85.0], "expected": 85.0}, {"input": [-84.0, 85.5], "expected": 85.5}, {"input": [-84.0, 86.0], "expected": 86.0}, {"input": [-84.0, 86.5], "expected": 86.5}, {"input": [-84.0, 87.0], "expected": 87.0}, {"input": [-84.0, 87.5], "expected": 87.5}, {"input": [-84.0, 88.0], "expected": 88.0}, {"input": [-84.0, 88.5], "expected": 88.5}, {"input": [-84.0, 89.0], "expected": 89.0}, {"input": [-84.0, 89.5], "expected": 89.5}, {"input": [-84.0, 90.0], "expected": 90.0}, {"input": [-84.0, 90.5], "expected": 90.5}, {"input": [-84.0, 91.0], "expected": 91.0}, {"input": [-84.0, 91.5], "expected": 91.5}, {"input": [-84.0, 92.0], "expected": 92.0}, {"input": [-84.0, 92.5], "expected": 92.5}, {"input": [-84.0, 93.0], "expected": 93.0}, {"input": [-84.0, 93.5], "expected": 93.5}, {"input": [-84.0, 94.0], "expected": 94.0}, {"input": [-84.0, 94.5], "expected": 94.5}, {"input": [-84.0, 95.0], "expected": 95.0}, {"input": [-84.0, 95.5], "expected": 95.5}, {"input": [-84.0, 96.0], "expected": 96.0}, {"input": [-84.0, 96.5], "expected": 96.5}, {"input": [-84.0, 97.0], "expected": 97.0}, {"input": [-84.0, 97.5], "expected": 97.5}, {"input": [-84.0, 98.0], "expected": 98.0}, {"input": [-84.0, 98.5], "expected": 98.5}, {"input": [-84.0, 99.0], "expected": 99.0}, {"input": [-84.0, 99.5], "expected": 99.5}, {"input": [-83.5, -100.0], "expected": -83.49999993174397}, {"input": [-83.5, -99.5], "expected": -83.49999988746484}, {"input": [-83.5, -99.0], "expected": -83.49999981446088}, {"input": [-83.5, -98.5], "expected": -83.49999969409772}, {"input": [-83.5, -98.0], "expected": -83.49999949565246}, {"input": [-83.5, -97.5], "expected": -83.49999916847163}, {"input": [-83.5, -97.0], "expected": -83.49999862904185}, {"input": [-83.5, -96.5], "expected": -83.49999773967315}, {"input": [-83.5, -96.0], "expected": -83.49999627335377}, {"input": [-83.5, -95.5], "expected": -83.49999385580652}, {"input": [-83.5, -95.0], "expected": -83.49998986995772}, {"input": [-83.5, -94.5], "expected": -83.49998329843868}, {"input": [-83.5, -94.0], "expected": -83.49997246392977}, {"input": [-83.5, -93.5], "expected": -83.49995460110078}, {"input": [-83.5, -93.0], "expected": -83.49992515097136}, {"input": [-83.5, -92.5], "expected": -83.49987659781027}, {"input": [-83.5, -92.0], "expected": -83.49979655232787}, {"input": [-83.5, -91.5], "expected": -83.4996645936271}, {"input": [-83.5, -91.0], "expected": -83.49944706852465}, {"input": [-83.5, -90.5], "expected": -83.49908853354623}, {"input": [-83.5, -90.0], "expected": -83.49849768984025}, {"input": [-83.5, -89.5], "expected": -83.49752431486228}, {"input": [-83.5, -89.0], "expected": -83.49592155672943}, {"input": [-83.5, -88.5], "expected": -83.49328465151088}, {"input": [-83.5, -88.0], "expected": -83.4889522551514}, {"input": [-83.5, -87.5], "expected": -83.4818500720822}, {"input": [-83.5, -87.0], "expected": -83.47024958172737}, {"input": [-83.5, -86.5], "expected": -83.45141264842626}, {"input": [-83.5, -86.0], "expected": -83.42111026570745}, {"input": [-83.5, -85.5], "expected": -83.37307198895702}, {"input": [-83.5, -85.0], "expected": -83.29858672201725}, {"input": [-83.5, -84.5], "expected": -83.18673831248178}, {"input": [-83.5, -84.0], "expected": -83.0259230158199}, {"input": [-83.5, -83.5], "expected": -82.80685281944005}, {"input": [-83.5, -83.0], "expected": -82.5259230158199}, {"input": [-83.5, -82.5], "expected": -82.18673831248178}, {"input": [-83.5, -82.0], "expected": -81.79858672201725}, {"input": [-83.5, -81.5], "expected": -81.37307198895702}, {"input": [-83.5, -81.0], "expected": -80.92111026570745}, {"input": [-83.5, -80.5], "expected": -80.45141264842626}, {"input": [-83.5, -80.0], "expected": -79.97024958172737}, {"input": [-83.5, -79.5], "expected": -79.4818500720822}, {"input": [-83.5, -79.0], "expected": -78.9889522551514}, {"input": [-83.5, -78.5], "expected": -78.49328465151088}, {"input": [-83.5, -78.0], "expected": -77.99592155672943}, {"input": [-83.5, -77.5], "expected": -77.49752431486228}, {"input": [-83.5, -77.0], "expected": -76.99849768984025}, {"input": [-83.5, -76.5], "expected": -76.49908853354623}, {"input": [-83.5, -76.0], "expected": -75.99944706852465}, {"input": [-83.5, -75.5], "expected": -75.4996645936271}, {"input": [-83.5, -75.0], "expected": -74.99979655232787}, {"input": [-83.5, -74.5], "expected": -74.49987659781027}, {"input": [-83.5, -74.0], "expected": -73.99992515097136}, {"input": [-83.5, -73.5], "expected": -73.49995460110078}, {"input": [-83.5, -73.0], "expected": -72.99997246392977}, {"input": [-83.5, -72.5], "expected": -72.49998329843868}, {"input": [-83.5, -72.0], "expected": -71.99998986995772}, {"input": [-83.5, -71.5], "expected": -71.49999385580652}, {"input": [-83.5, -71.0], "expected": -70.99999627335377}, {"input": [-83.5, -70.5], "expected": -70.49999773967315}, {"input": [-83.5, -70.0], "expected": -69.99999862904185}, {"input": [-83.5, -69.5], "expected": -69.49999916847163}, {"input": [-83.5, -69.0], "expected": -68.99999949565246}, {"input": [-83.5, -68.5], "expected": -68.49999969409772}, {"input": [-83.5, -68.0], "expected": -67.99999981446088}, {"input": [-83.5, -67.5], "expected": -67.49999988746484}, {"input": [-83.5, -67.0], "expected": -66.99999993174397}, {"input": [-83.5, -66.5], "expected": -66.49999995860063}, {"input": [-83.5, -66.0], "expected": -65.99999997489}, {"input": [-83.5, -65.5], "expected": -65.49999998477001}, {"input": [-83.5, -65.0], "expected": -64.99999999076255}, {"input": [-83.5, -64.5], "expected": -64.4999999943972}, {"input": [-83.5, -64.0], "expected": -63.99999999660173}, {"input": [-83.5, -63.5], "expected": -63.49999999793884}, {"input": [-83.5, -63.0], "expected": -62.99999999874985}, {"input": [-83.5, -62.5], "expected": -62.499999999241744}, {"input": [-83.5, -62.0], "expected": -61.999999999540094}, {"input": [-83.5, -61.5], "expected": -61.499999999721055}, {"input": [-83.5, -61.0], "expected": -60.99999999983081}, {"input": [-83.5, -60.5], "expected": -60.49999999989738}, {"input": [-83.5, -60.0], "expected": -59.99999999993776}, {"input": [-83.5, -59.5], "expected": -59.49999999996225}, {"input": [-83.5, -59.0], "expected": -58.9999999999771}, {"input": [-83.5, -58.5], "expected": -58.49999999998611}, {"input": [-83.5, -58.0], "expected": -57.99999999999158}, {"input": [-83.5, -57.5], "expected": -57.49999999999489}, {"input": [-83.5, -57.0], "expected": -56.9999999999969}, {"input": [-83.5, -56.5], "expected": -56.49999999999812}, {"input": [-83.5, -56.0], "expected": -55.99999999999886}, {"input": [-83.5, -55.5], "expected": -55.49999999999931}, {"input": [-83.5, -55.0], "expected": -54.99999999999958}, {"input": [-83.5, -54.5], "expected": -54.499999999999744}, {"input": [-83.5, -54.0], "expected": -53.999999999999844}, {"input": [-83.5, -53.5], "expected": -53.49999999999991}, {"input": [-83.5, -53.0], "expected": -52.99999999999994}, {"input": [-83.5, -52.5], "expected": -52.499999999999964}, {"input": [-83.5, -52.0], "expected": -51.99999999999998}, {"input": [-83.5, -51.5], "expected": -51.499999999999986}, {"input": [-83.5, -51.0], "expected": -50.99999999999999}, {"input": [-83.5, -50.5], "expected": -50.49999999999999}, {"input": [-83.5, -50.0], "expected": -50.0}, {"input": [-83.5, -49.5], "expected": -49.5}, {"input": [-83.5, -49.0], "expected": -49.0}, {"input": [-83.5, -48.5], "expected": -48.5}, {"input": [-83.5, -48.0], "expected": -48.0}, {"input": [-83.5, -47.5], "expected": -47.5}, {"input": [-83.5, -47.0], "expected": -47.0}, {"input": [-83.5, -46.5], "expected": -46.5}, {"input": [-83.5, -46.0], "expected": -46.0}, {"input": [-83.5, -45.5], "expected": -45.5}, {"input": [-83.5, -45.0], "expected": -45.0}, {"input": [-83.5, -44.5], "expected": -44.5}, {"input": [-83.5, -44.0], "expected": -44.0}, {"input": [-83.5, -43.5], "expected": -43.5}, {"input": [-83.5, -43.0], "expected": -43.0}, {"input": [-83.5, -42.5], "expected": -42.5}, {"input": [-83.5, -42.0], "expected": -42.0}, {"input": [-83.5, -41.5], "expected": -41.5}, {"input": [-83.5, -41.0], "expected": -41.0}, {"input": [-83.5, -40.5], "expected": -40.5}, {"input": [-83.5, -40.0], "expected": -40.0}, {"input": [-83.5, -39.5], "expected": -39.5}, {"input": [-83.5, -39.0], "expected": -39.0}, {"input": [-83.5, -38.5], "expected": -38.5}, {"input": [-83.5, -38.0], "expected": -38.0}, {"input": [-83.5, -37.5], "expected": -37.5}, {"input": [-83.5, -37.0], "expected": -37.0}, {"input": [-83.5, -36.5], "expected": -36.5}, {"input": [-83.5, -36.0], "expected": -36.0}, {"input": [-83.5, -35.5], "expected": -35.5}, {"input": [-83.5, -35.0], "expected": -35.0}, {"input": [-83.5, -34.5], "expected": -34.5}, {"input": [-83.5, -34.0], "expected": -34.0}, {"input": [-83.5, -33.5], "expected": -33.5}, {"input": [-83.5, -33.0], "expected": -33.0}, {"input": [-83.5, -32.5], "expected": -32.5}, {"input": [-83.5, -32.0], "expected": -32.0}, {"input": [-83.5, -31.5], "expected": -31.5}, {"input": [-83.5, -31.0], "expected": -31.0}, {"input": [-83.5, -30.5], "expected": -30.5}, {"input": [-83.5, -30.0], "expected": -30.0}, {"input": [-83.5, -29.5], "expected": -29.5}, {"input": [-83.5, -29.0], "expected": -29.0}, {"input": [-83.5, -28.5], "expected": -28.5}, {"input": [-83.5, -28.0], "expected": -28.0}, {"input": [-83.5, -27.5], "expected": -27.5}, {"input": [-83.5, -27.0], "expected": -27.0}, {"input": [-83.5, -26.5], "expected": -26.5}, {"input": [-83.5, -26.0], "expected": -26.0}, {"input": [-83.5, -25.5], "expected": -25.5}, {"input": [-83.5, -25.0], "expected": -25.0}, {"input": [-83.5, -24.5], "expected": -24.5}, {"input": [-83.5, -24.0], "expected": -24.0}, {"input": [-83.5, -23.5], "expected": -23.5}, {"input": [-83.5, -23.0], "expected": -23.0}, {"input": [-83.5, -22.5], "expected": -22.5}, {"input": [-83.5, -22.0], "expected": -22.0}, {"input": [-83.5, -21.5], "expected": -21.5}, {"input": [-83.5, -21.0], "expected": -21.0}, {"input": [-83.5, -20.5], "expected": -20.5}, {"input": [-83.5, -20.0], "expected": -20.0}, {"input": [-83.5, -19.5], "expected": -19.5}, {"input": [-83.5, -19.0], "expected": -19.0}, {"input": [-83.5, -18.5], "expected": -18.5}, {"input": [-83.5, -18.0], "expected": -18.0}, {"input": [-83.5, -17.5], "expected": -17.5}, {"input": [-83.5, -17.0], "expected": -17.0}, {"input": [-83.5, -16.5], "expected": -16.5}, {"input": [-83.5, -16.0], "expected": -16.0}, {"input": [-83.5, -15.5], "expected": -15.5}, {"input": [-83.5, -15.0], "expected": -15.0}, {"input": [-83.5, -14.5], "expected": -14.5}, {"input": [-83.5, -14.0], "expected": -14.0}, {"input": [-83.5, -13.5], "expected": -13.5}, {"input": [-83.5, -13.0], "expected": -13.0}, {"input": [-83.5, -12.5], "expected": -12.5}, {"input": [-83.5, -12.0], "expected": -12.0}, {"input": [-83.5, -11.5], "expected": -11.5}, {"input": [-83.5, -11.0], "expected": -11.0}, {"input": [-83.5, -10.5], "expected": -10.5}, {"input": [-83.5, -10.0], "expected": -10.0}, {"input": [-83.5, -9.5], "expected": -9.5}, {"input": [-83.5, -9.0], "expected": -9.0}, {"input": [-83.5, -8.5], "expected": -8.5}, {"input": [-83.5, -8.0], "expected": -8.0}, {"input": [-83.5, -7.5], "expected": -7.5}, {"input": [-83.5, -7.0], "expected": -7.0}, {"input": [-83.5, -6.5], "expected": -6.5}, {"input": [-83.5, -6.0], "expected": -6.0}, {"input": [-83.5, -5.5], "expected": -5.5}, {"input": [-83.5, -5.0], "expected": -5.0}, {"input": [-83.5, -4.5], "expected": -4.5}, {"input": [-83.5, -4.0], "expected": -4.0}, {"input": [-83.5, -3.5], "expected": -3.5}, {"input": [-83.5, -3.0], "expected": -3.0}, {"input": [-83.5, -2.5], "expected": -2.5}, {"input": [-83.5, -2.0], "expected": -2.0}, {"input": [-83.5, -1.5], "expected": -1.5}, {"input": [-83.5, -1.0], "expected": -1.0}, {"input": [-83.5, -0.5], "expected": -0.5}, {"input": [-83.5, 0.0], "expected": 5.450178937907168e-37}, {"input": [-83.5, 0.5], "expected": 0.5}, {"input": [-83.5, 1.0], "expected": 1.0}, {"input": [-83.5, 1.5], "expected": 1.5}, {"input": [-83.5, 2.0], "expected": 2.0}, {"input": [-83.5, 2.5], "expected": 2.5}, {"input": [-83.5, 3.0], "expected": 3.0}, {"input": [-83.5, 3.5], "expected": 3.5}, {"input": [-83.5, 4.0], "expected": 4.0}, {"input": [-83.5, 4.5], "expected": 4.5}, {"input": [-83.5, 5.0], "expected": 5.0}, {"input": [-83.5, 5.5], "expected": 5.5}, {"input": [-83.5, 6.0], "expected": 6.0}, {"input": [-83.5, 6.5], "expected": 6.5}, {"input": [-83.5, 7.0], "expected": 7.0}, {"input": [-83.5, 7.5], "expected": 7.5}, {"input": [-83.5, 8.0], "expected": 8.0}, {"input": [-83.5, 8.5], "expected": 8.5}, {"input": [-83.5, 9.0], "expected": 9.0}, {"input": [-83.5, 9.5], "expected": 9.5}, {"input": [-83.5, 10.0], "expected": 10.0}, {"input": [-83.5, 10.5], "expected": 10.5}, {"input": [-83.5, 11.0], "expected": 11.0}, {"input": [-83.5, 11.5], "expected": 11.5}, {"input": [-83.5, 12.0], "expected": 12.0}, {"input": [-83.5, 12.5], "expected": 12.5}, {"input": [-83.5, 13.0], "expected": 13.0}, {"input": [-83.5, 13.5], "expected": 13.5}, {"input": [-83.5, 14.0], "expected": 14.0}, {"input": [-83.5, 14.5], "expected": 14.5}, {"input": [-83.5, 15.0], "expected": 15.0}, {"input": [-83.5, 15.5], "expected": 15.5}, {"input": [-83.5, 16.0], "expected": 16.0}, {"input": [-83.5, 16.5], "expected": 16.5}, {"input": [-83.5, 17.0], "expected": 17.0}, {"input": [-83.5, 17.5], "expected": 17.5}, {"input": [-83.5, 18.0], "expected": 18.0}, {"input": [-83.5, 18.5], "expected": 18.5}, {"input": [-83.5, 19.0], "expected": 19.0}, {"input": [-83.5, 19.5], "expected": 19.5}, {"input": [-83.5, 20.0], "expected": 20.0}, {"input": [-83.5, 20.5], "expected": 20.5}, {"input": [-83.5, 21.0], "expected": 21.0}, {"input": [-83.5, 21.5], "expected": 21.5}, {"input": [-83.5, 22.0], "expected": 22.0}, {"input": [-83.5, 22.5], "expected": 22.5}, {"input": [-83.5, 23.0], "expected": 23.0}, {"input": [-83.5, 23.5], "expected": 23.5}, {"input": [-83.5, 24.0], "expected": 24.0}, {"input": [-83.5, 24.5], "expected": 24.5}, {"input": [-83.5, 25.0], "expected": 25.0}, {"input": [-83.5, 25.5], "expected": 25.5}, {"input": [-83.5, 26.0], "expected": 26.0}, {"input": [-83.5, 26.5], "expected": 26.5}, {"input": [-83.5, 27.0], "expected": 27.0}, {"input": [-83.5, 27.5], "expected": 27.5}, {"input": [-83.5, 28.0], "expected": 28.0}, {"input": [-83.5, 28.5], "expected": 28.5}, {"input": [-83.5, 29.0], "expected": 29.0}, {"input": [-83.5, 29.5], "expected": 29.5}, {"input": [-83.5, 30.0], "expected": 30.0}, {"input": [-83.5, 30.5], "expected": 30.5}, {"input": [-83.5, 31.0], "expected": 31.0}, {"input": [-83.5, 31.5], "expected": 31.5}, {"input": [-83.5, 32.0], "expected": 32.0}, {"input": [-83.5, 32.5], "expected": 32.5}, {"input": [-83.5, 33.0], "expected": 33.0}, {"input": [-83.5, 33.5], "expected": 33.5}, {"input": [-83.5, 34.0], "expected": 34.0}, {"input": [-83.5, 34.5], "expected": 34.5}, {"input": [-83.5, 35.0], "expected": 35.0}, {"input": [-83.5, 35.5], "expected": 35.5}, {"input": [-83.5, 36.0], "expected": 36.0}, {"input": [-83.5, 36.5], "expected": 36.5}, {"input": [-83.5, 37.0], "expected": 37.0}, {"input": [-83.5, 37.5], "expected": 37.5}, {"input": [-83.5, 38.0], "expected": 38.0}, {"input": [-83.5, 38.5], "expected": 38.5}, {"input": [-83.5, 39.0], "expected": 39.0}, {"input": [-83.5, 39.5], "expected": 39.5}, {"input": [-83.5, 40.0], "expected": 40.0}, {"input": [-83.5, 40.5], "expected": 40.5}, {"input": [-83.5, 41.0], "expected": 41.0}, {"input": [-83.5, 41.5], "expected": 41.5}, {"input": [-83.5, 42.0], "expected": 42.0}, {"input": [-83.5, 42.5], "expected": 42.5}, {"input": [-83.5, 43.0], "expected": 43.0}, {"input": [-83.5, 43.5], "expected": 43.5}, {"input": [-83.5, 44.0], "expected": 44.0}, {"input": [-83.5, 44.5], "expected": 44.5}, {"input": [-83.5, 45.0], "expected": 45.0}, {"input": [-83.5, 45.5], "expected": 45.5}, {"input": [-83.5, 46.0], "expected": 46.0}, {"input": [-83.5, 46.5], "expected": 46.5}, {"input": [-83.5, 47.0], "expected": 47.0}, {"input": [-83.5, 47.5], "expected": 47.5}, {"input": [-83.5, 48.0], "expected": 48.0}, {"input": [-83.5, 48.5], "expected": 48.5}, {"input": [-83.5, 49.0], "expected": 49.0}, {"input": [-83.5, 49.5], "expected": 49.5}, {"input": [-83.5, 50.0], "expected": 50.0}, {"input": [-83.5, 50.5], "expected": 50.5}, {"input": [-83.5, 51.0], "expected": 51.0}, {"input": [-83.5, 51.5], "expected": 51.5}, {"input": [-83.5, 52.0], "expected": 52.0}, {"input": [-83.5, 52.5], "expected": 52.5}, {"input": [-83.5, 53.0], "expected": 53.0}, {"input": [-83.5, 53.5], "expected": 53.5}, {"input": [-83.5, 54.0], "expected": 54.0}, {"input": [-83.5, 54.5], "expected": 54.5}, {"input": [-83.5, 55.0], "expected": 55.0}, {"input": [-83.5, 55.5], "expected": 55.5}, {"input": [-83.5, 56.0], "expected": 56.0}, {"input": [-83.5, 56.5], "expected": 56.5}, {"input": [-83.5, 57.0], "expected": 57.0}, {"input": [-83.5, 57.5], "expected": 57.5}, {"input": [-83.5, 58.0], "expected": 58.0}, {"input": [-83.5, 58.5], "expected": 58.5}, {"input": [-83.5, 59.0], "expected": 59.0}, {"input": [-83.5, 59.5], "expected": 59.5}, {"input": [-83.5, 60.0], "expected": 60.0}, {"input": [-83.5, 60.5], "expected": 60.5}, {"input": [-83.5, 61.0], "expected": 61.0}, {"input": [-83.5, 61.5], "expected": 61.5}, {"input": [-83.5, 62.0], "expected": 62.0}, {"input": [-83.5, 62.5], "expected": 62.5}, {"input": [-83.5, 63.0], "expected": 63.0}, {"input": [-83.5, 63.5], "expected": 63.5}, {"input": [-83.5, 64.0], "expected": 64.0}, {"input": [-83.5, 64.5], "expected": 64.5}, {"input": [-83.5, 65.0], "expected": 65.0}, {"input": [-83.5, 65.5], "expected": 65.5}, {"input": [-83.5, 66.0], "expected": 66.0}, {"input": [-83.5, 66.5], "expected": 66.5}, {"input": [-83.5, 67.0], "expected": 67.0}, {"input": [-83.5, 67.5], "expected": 67.5}, {"input": [-83.5, 68.0], "expected": 68.0}, {"input": [-83.5, 68.5], "expected": 68.5}, {"input": [-83.5, 69.0], "expected": 69.0}, {"input": [-83.5, 69.5], "expected": 69.5}, {"input": [-83.5, 70.0], "expected": 70.0}, {"input": [-83.5, 70.5], "expected": 70.5}, {"input": [-83.5, 71.0], "expected": 71.0}, {"input": [-83.5, 71.5], "expected": 71.5}, {"input": [-83.5, 72.0], "expected": 72.0}, {"input": [-83.5, 72.5], "expected": 72.5}, {"input": [-83.5, 73.0], "expected": 73.0}, {"input": [-83.5, 73.5], "expected": 73.5}, {"input": [-83.5, 74.0], "expected": 74.0}, {"input": [-83.5, 74.5], "expected": 74.5}, {"input": [-83.5, 75.0], "expected": 75.0}, {"input": [-83.5, 75.5], "expected": 75.5}, {"input": [-83.5, 76.0], "expected": 76.0}, {"input": [-83.5, 76.5], "expected": 76.5}, {"input": [-83.5, 77.0], "expected": 77.0}, {"input": [-83.5, 77.5], "expected": 77.5}, {"input": [-83.5, 78.0], "expected": 78.0}, {"input": [-83.5, 78.5], "expected": 78.5}, {"input": [-83.5, 79.0], "expected": 79.0}, {"input": [-83.5, 79.5], "expected": 79.5}, {"input": [-83.5, 80.0], "expected": 80.0}, {"input": [-83.5, 80.5], "expected": 80.5}, {"input": [-83.5, 81.0], "expected": 81.0}, {"input": [-83.5, 81.5], "expected": 81.5}, {"input": [-83.5, 82.0], "expected": 82.0}, {"input": [-83.5, 82.5], "expected": 82.5}, {"input": [-83.5, 83.0], "expected": 83.0}, {"input": [-83.5, 83.5], "expected": 83.5}, {"input": [-83.5, 84.0], "expected": 84.0}, {"input": [-83.5, 84.5], "expected": 84.5}, {"input": [-83.5, 85.0], "expected": 85.0}, {"input": [-83.5, 85.5], "expected": 85.5}, {"input": [-83.5, 86.0], "expected": 86.0}, {"input": [-83.5, 86.5], "expected": 86.5}, {"input": [-83.5, 87.0], "expected": 87.0}, {"input": [-83.5, 87.5], "expected": 87.5}, {"input": [-83.5, 88.0], "expected": 88.0}, {"input": [-83.5, 88.5], "expected": 88.5}, {"input": [-83.5, 89.0], "expected": 89.0}, {"input": [-83.5, 89.5], "expected": 89.5}, {"input": [-83.5, 90.0], "expected": 90.0}, {"input": [-83.5, 90.5], "expected": 90.5}, {"input": [-83.5, 91.0], "expected": 91.0}, {"input": [-83.5, 91.5], "expected": 91.5}, {"input": [-83.5, 92.0], "expected": 92.0}, {"input": [-83.5, 92.5], "expected": 92.5}, {"input": [-83.5, 93.0], "expected": 93.0}, {"input": [-83.5, 93.5], "expected": 93.5}, {"input": [-83.5, 94.0], "expected": 94.0}, {"input": [-83.5, 94.5], "expected": 94.5}, {"input": [-83.5, 95.0], "expected": 95.0}, {"input": [-83.5, 95.5], "expected": 95.5}, {"input": [-83.5, 96.0], "expected": 96.0}, {"input": [-83.5, 96.5], "expected": 96.5}, {"input": [-83.5, 97.0], "expected": 97.0}, {"input": [-83.5, 97.5], "expected": 97.5}, {"input": [-83.5, 98.0], "expected": 98.0}, {"input": [-83.5, 98.5], "expected": 98.5}, {"input": [-83.5, 99.0], "expected": 99.0}, {"input": [-83.5, 99.5], "expected": 99.5}, {"input": [-83.0, -100.0], "expected": -82.99999995860063}, {"input": [-83.0, -99.5], "expected": -82.99999993174397}, {"input": [-83.0, -99.0], "expected": -82.99999988746484}, {"input": [-83.0, -98.5], "expected": -82.99999981446088}, {"input": [-83.0, -98.0], "expected": -82.99999969409772}, {"input": [-83.0, -97.5], "expected": -82.99999949565246}, {"input": [-83.0, -97.0], "expected": -82.99999916847163}, {"input": [-83.0, -96.5], "expected": -82.99999862904185}, {"input": [-83.0, -96.0], "expected": -82.99999773967315}, {"input": [-83.0, -95.5], "expected": -82.99999627335377}, {"input": [-83.0, -95.0], "expected": -82.99999385580652}, {"input": [-83.0, -94.5], "expected": -82.99998986995772}, {"input": [-83.0, -94.0], "expected": -82.99998329843868}, {"input": [-83.0, -93.5], "expected": -82.99997246392977}, {"input": [-83.0, -93.0], "expected": -82.99995460110078}, {"input": [-83.0, -92.5], "expected": -82.99992515097136}, {"input": [-83.0, -92.0], "expected": -82.99987659781027}, {"input": [-83.0, -91.5], "expected": -82.99979655232787}, {"input": [-83.0, -91.0], "expected": -82.9996645936271}, {"input": [-83.0, -90.5], "expected": -82.99944706852465}, {"input": [-83.0, -90.0], "expected": -82.99908853354623}, {"input": [-83.0, -89.5], "expected": -82.99849768984025}, {"input": [-83.0, -89.0], "expected": -82.99752431486228}, {"input": [-83.0, -88.5], "expected": -82.99592155672943}, {"input": [-83.0, -88.0], "expected": -82.99328465151088}, {"input": [-83.0, -87.5], "expected": -82.9889522551514}, {"input": [-83.0, -87.0], "expected": -82.9818500720822}, {"input": [-83.0, -86.5], "expected": -82.97024958172737}, {"input": [-83.0, -86.0], "expected": -82.95141264842626}, {"input": [-83.0, -85.5], "expected": -82.92111026570745}, {"input": [-83.0, -85.0], "expected": -82.87307198895702}, {"input": [-83.0, -84.5], "expected": -82.79858672201725}, {"input": [-83.0, -84.0], "expected": -82.68673831248178}, {"input": [-83.0, -83.5], "expected": -82.5259230158199}, {"input": [-83.0, -83.0], "expected": -82.30685281944005}, {"input": [-83.0, -82.5], "expected": -82.0259230158199}, {"input": [-83.0, -82.0], "expected": -81.68673831248178}, {"input": [-83.0, -81.5], "expected": -81.29858672201725}, {"input": [-83.0, -81.0], "expected": -80.87307198895702}, {"input": [-83.0, -80.5], "expected": -80.42111026570745}, {"input": [-83.0, -80.0], "expected": -79.95141264842626}, {"input": [-83.0, -79.5], "expected": -79.47024958172737}, {"input": [-83.0, -79.0], "expected": -78.9818500720822}, {"input": [-83.0, -78.5], "expected": -78.4889522551514}, {"input": [-83.0, -78.0], "expected": -77.99328465151088}, {"input": [-83.0, -77.5], "expected": -77.49592155672943}, {"input": [-83.0, -77.0], "expected": -76.99752431486228}, {"input": [-83.0, -76.5], "expected": -76.49849768984025}, {"input": [-83.0, -76.0], "expected": -75.99908853354623}, {"input": [-83.0, -75.5], "expected": -75.49944706852465}, {"input": [-83.0, -75.0], "expected": -74.9996645936271}, {"input": [-83.0, -74.5], "expected": -74.49979655232787}, {"input": [-83.0, -74.0], "expected": -73.99987659781027}, {"input": [-83.0, -73.5], "expected": -73.49992515097136}, {"input": [-83.0, -73.0], "expected": -72.99995460110078}, {"input": [-83.0, -72.5], "expected": -72.49997246392977}, {"input": [-83.0, -72.0], "expected": -71.99998329843868}, {"input": [-83.0, -71.5], "expected": -71.49998986995772}, {"input": [-83.0, -71.0], "expected": -70.99999385580652}, {"input": [-83.0, -70.5], "expected": -70.49999627335377}, {"input": [-83.0, -70.0], "expected": -69.99999773967315}, {"input": [-83.0, -69.5], "expected": -69.49999862904185}, {"input": [-83.0, -69.0], "expected": -68.99999916847163}, {"input": [-83.0, -68.5], "expected": -68.49999949565246}, {"input": [-83.0, -68.0], "expected": -67.99999969409772}, {"input": [-83.0, -67.5], "expected": -67.49999981446088}, {"input": [-83.0, -67.0], "expected": -66.99999988746484}, {"input": [-83.0, -66.5], "expected": -66.49999993174397}, {"input": [-83.0, -66.0], "expected": -65.99999995860063}, {"input": [-83.0, -65.5], "expected": -65.49999997489}, {"input": [-83.0, -65.0], "expected": -64.99999998477001}, {"input": [-83.0, -64.5], "expected": -64.49999999076255}, {"input": [-83.0, -64.0], "expected": -63.99999999439721}, {"input": [-83.0, -63.5], "expected": -63.49999999660173}, {"input": [-83.0, -63.0], "expected": -62.99999999793884}, {"input": [-83.0, -62.5], "expected": -62.49999999874985}, {"input": [-83.0, -62.0], "expected": -61.999999999241744}, {"input": [-83.0, -61.5], "expected": -61.499999999540094}, {"input": [-83.0, -61.0], "expected": -60.999999999721055}, {"input": [-83.0, -60.5], "expected": -60.49999999983081}, {"input": [-83.0, -60.0], "expected": -59.99999999989738}, {"input": [-83.0, -59.5], "expected": -59.49999999993776}, {"input": [-83.0, -59.0], "expected": -58.99999999996225}, {"input": [-83.0, -58.5], "expected": -58.4999999999771}, {"input": [-83.0, -58.0], "expected": -57.99999999998611}, {"input": [-83.0, -57.5], "expected": -57.49999999999158}, {"input": [-83.0, -57.0], "expected": -56.99999999999489}, {"input": [-83.0, -56.5], "expected": -56.4999999999969}, {"input": [-83.0, -56.0], "expected": -55.99999999999812}, {"input": [-83.0, -55.5], "expected": -55.49999999999886}, {"input": [-83.0, -55.0], "expected": -54.99999999999931}, {"input": [-83.0, -54.5], "expected": -54.49999999999958}, {"input": [-83.0, -54.0], "expected": -53.999999999999744}, {"input": [-83.0, -53.5], "expected": -53.499999999999844}, {"input": [-83.0, -53.0], "expected": -52.99999999999991}, {"input": [-83.0, -52.5], "expected": -52.49999999999994}, {"input": [-83.0, -52.0], "expected": -51.999999999999964}, {"input": [-83.0, -51.5], "expected": -51.49999999999998}, {"input": [-83.0, -51.0], "expected": -50.999999999999986}, {"input": [-83.0, -50.5], "expected": -50.49999999999999}, {"input": [-83.0, -50.0], "expected": -49.99999999999999}, {"input": [-83.0, -49.5], "expected": -49.5}, {"input": [-83.0, -49.0], "expected": -49.0}, {"input": [-83.0, -48.5], "expected": -48.5}, {"input": [-83.0, -48.0], "expected": -48.0}, {"input": [-83.0, -47.5], "expected": -47.5}, {"input": [-83.0, -47.0], "expected": -47.0}, {"input": [-83.0, -46.5], "expected": -46.5}, {"input": [-83.0, -46.0], "expected": -46.0}, {"input": [-83.0, -45.5], "expected": -45.5}, {"input": [-83.0, -45.0], "expected": -45.0}, {"input": [-83.0, -44.5], "expected": -44.5}, {"input": [-83.0, -44.0], "expected": -44.0}, {"input": [-83.0, -43.5], "expected": -43.5}, {"input": [-83.0, -43.0], "expected": -43.0}, {"input": [-83.0, -42.5], "expected": -42.5}, {"input": [-83.0, -42.0], "expected": -42.0}, {"input": [-83.0, -41.5], "expected": -41.5}, {"input": [-83.0, -41.0], "expected": -41.0}, {"input": [-83.0, -40.5], "expected": -40.5}, {"input": [-83.0, -40.0], "expected": -40.0}, {"input": [-83.0, -39.5], "expected": -39.5}, {"input": [-83.0, -39.0], "expected": -39.0}, {"input": [-83.0, -38.5], "expected": -38.5}, {"input": [-83.0, -38.0], "expected": -38.0}, {"input": [-83.0, -37.5], "expected": -37.5}, {"input": [-83.0, -37.0], "expected": -37.0}, {"input": [-83.0, -36.5], "expected": -36.5}, {"input": [-83.0, -36.0], "expected": -36.0}, {"input": [-83.0, -35.5], "expected": -35.5}, {"input": [-83.0, -35.0], "expected": -35.0}, {"input": [-83.0, -34.5], "expected": -34.5}, {"input": [-83.0, -34.0], "expected": -34.0}, {"input": [-83.0, -33.5], "expected": -33.5}, {"input": [-83.0, -33.0], "expected": -33.0}, {"input": [-83.0, -32.5], "expected": -32.5}, {"input": [-83.0, -32.0], "expected": -32.0}, {"input": [-83.0, -31.5], "expected": -31.5}, {"input": [-83.0, -31.0], "expected": -31.0}, {"input": [-83.0, -30.5], "expected": -30.5}, {"input": [-83.0, -30.0], "expected": -30.0}, {"input": [-83.0, -29.5], "expected": -29.5}, {"input": [-83.0, -29.0], "expected": -29.0}, {"input": [-83.0, -28.5], "expected": -28.5}, {"input": [-83.0, -28.0], "expected": -28.0}, {"input": [-83.0, -27.5], "expected": -27.5}, {"input": [-83.0, -27.0], "expected": -27.0}, {"input": [-83.0, -26.5], "expected": -26.5}, {"input": [-83.0, -26.0], "expected": -26.0}, {"input": [-83.0, -25.5], "expected": -25.5}, {"input": [-83.0, -25.0], "expected": -25.0}, {"input": [-83.0, -24.5], "expected": -24.5}, {"input": [-83.0, -24.0], "expected": -24.0}, {"input": [-83.0, -23.5], "expected": -23.5}, {"input": [-83.0, -23.0], "expected": -23.0}, {"input": [-83.0, -22.5], "expected": -22.5}, {"input": [-83.0, -22.0], "expected": -22.0}, {"input": [-83.0, -21.5], "expected": -21.5}, {"input": [-83.0, -21.0], "expected": -21.0}, {"input": [-83.0, -20.5], "expected": -20.5}, {"input": [-83.0, -20.0], "expected": -20.0}, {"input": [-83.0, -19.5], "expected": -19.5}, {"input": [-83.0, -19.0], "expected": -19.0}, {"input": [-83.0, -18.5], "expected": -18.5}, {"input": [-83.0, -18.0], "expected": -18.0}, {"input": [-83.0, -17.5], "expected": -17.5}, {"input": [-83.0, -17.0], "expected": -17.0}, {"input": [-83.0, -16.5], "expected": -16.5}, {"input": [-83.0, -16.0], "expected": -16.0}, {"input": [-83.0, -15.5], "expected": -15.5}, {"input": [-83.0, -15.0], "expected": -15.0}, {"input": [-83.0, -14.5], "expected": -14.5}, {"input": [-83.0, -14.0], "expected": -14.0}, {"input": [-83.0, -13.5], "expected": -13.5}, {"input": [-83.0, -13.0], "expected": -13.0}, {"input": [-83.0, -12.5], "expected": -12.5}, {"input": [-83.0, -12.0], "expected": -12.0}, {"input": [-83.0, -11.5], "expected": -11.5}, {"input": [-83.0, -11.0], "expected": -11.0}, {"input": [-83.0, -10.5], "expected": -10.5}, {"input": [-83.0, -10.0], "expected": -10.0}, {"input": [-83.0, -9.5], "expected": -9.5}, {"input": [-83.0, -9.0], "expected": -9.0}, {"input": [-83.0, -8.5], "expected": -8.5}, {"input": [-83.0, -8.0], "expected": -8.0}, {"input": [-83.0, -7.5], "expected": -7.5}, {"input": [-83.0, -7.0], "expected": -7.0}, {"input": [-83.0, -6.5], "expected": -6.5}, {"input": [-83.0, -6.0], "expected": -6.0}, {"input": [-83.0, -5.5], "expected": -5.5}, {"input": [-83.0, -5.0], "expected": -5.0}, {"input": [-83.0, -4.5], "expected": -4.5}, {"input": [-83.0, -4.0], "expected": -4.0}, {"input": [-83.0, -3.5], "expected": -3.5}, {"input": [-83.0, -3.0], "expected": -3.0}, {"input": [-83.0, -2.5], "expected": -2.5}, {"input": [-83.0, -2.0], "expected": -2.0}, {"input": [-83.0, -1.5], "expected": -1.5}, {"input": [-83.0, -1.0], "expected": -1.0}, {"input": [-83.0, -0.5], "expected": -0.5}, {"input": [-83.0, 0.0], "expected": 8.985825944049381e-37}, {"input": [-83.0, 0.5], "expected": 0.5}, {"input": [-83.0, 1.0], "expected": 1.0}, {"input": [-83.0, 1.5], "expected": 1.5}, {"input": [-83.0, 2.0], "expected": 2.0}, {"input": [-83.0, 2.5], "expected": 2.5}, {"input": [-83.0, 3.0], "expected": 3.0}, {"input": [-83.0, 3.5], "expected": 3.5}, {"input": [-83.0, 4.0], "expected": 4.0}, {"input": [-83.0, 4.5], "expected": 4.5}, {"input": [-83.0, 5.0], "expected": 5.0}, {"input": [-83.0, 5.5], "expected": 5.5}, {"input": [-83.0, 6.0], "expected": 6.0}, {"input": [-83.0, 6.5], "expected": 6.5}, {"input": [-83.0, 7.0], "expected": 7.0}, {"input": [-83.0, 7.5], "expected": 7.5}, {"input": [-83.0, 8.0], "expected": 8.0}, {"input": [-83.0, 8.5], "expected": 8.5}, {"input": [-83.0, 9.0], "expected": 9.0}, {"input": [-83.0, 9.5], "expected": 9.5}, {"input": [-83.0, 10.0], "expected": 10.0}, {"input": [-83.0, 10.5], "expected": 10.5}, {"input": [-83.0, 11.0], "expected": 11.0}, {"input": [-83.0, 11.5], "expected": 11.5}, {"input": [-83.0, 12.0], "expected": 12.0}, {"input": [-83.0, 12.5], "expected": 12.5}, {"input": [-83.0, 13.0], "expected": 13.0}, {"input": [-83.0, 13.5], "expected": 13.5}, {"input": [-83.0, 14.0], "expected": 14.0}, {"input": [-83.0, 14.5], "expected": 14.5}, {"input": [-83.0, 15.0], "expected": 15.0}, {"input": [-83.0, 15.5], "expected": 15.5}, {"input": [-83.0, 16.0], "expected": 16.0}, {"input": [-83.0, 16.5], "expected": 16.5}, {"input": [-83.0, 17.0], "expected": 17.0}, {"input": [-83.0, 17.5], "expected": 17.5}, {"input": [-83.0, 18.0], "expected": 18.0}, {"input": [-83.0, 18.5], "expected": 18.5}, {"input": [-83.0, 19.0], "expected": 19.0}, {"input": [-83.0, 19.5], "expected": 19.5}, {"input": [-83.0, 20.0], "expected": 20.0}, {"input": [-83.0, 20.5], "expected": 20.5}, {"input": [-83.0, 21.0], "expected": 21.0}, {"input": [-83.0, 21.5], "expected": 21.5}, {"input": [-83.0, 22.0], "expected": 22.0}, {"input": [-83.0, 22.5], "expected": 22.5}, {"input": [-83.0, 23.0], "expected": 23.0}, {"input": [-83.0, 23.5], "expected": 23.5}, {"input": [-83.0, 24.0], "expected": 24.0}, {"input": [-83.0, 24.5], "expected": 24.5}, {"input": [-83.0, 25.0], "expected": 25.0}, {"input": [-83.0, 25.5], "expected": 25.5}, {"input": [-83.0, 26.0], "expected": 26.0}, {"input": [-83.0, 26.5], "expected": 26.5}, {"input": [-83.0, 27.0], "expected": 27.0}, {"input": [-83.0, 27.5], "expected": 27.5}, {"input": [-83.0, 28.0], "expected": 28.0}, {"input": [-83.0, 28.5], "expected": 28.5}, {"input": [-83.0, 29.0], "expected": 29.0}, {"input": [-83.0, 29.5], "expected": 29.5}, {"input": [-83.0, 30.0], "expected": 30.0}, {"input": [-83.0, 30.5], "expected": 30.5}, {"input": [-83.0, 31.0], "expected": 31.0}, {"input": [-83.0, 31.5], "expected": 31.5}, {"input": [-83.0, 32.0], "expected": 32.0}, {"input": [-83.0, 32.5], "expected": 32.5}, {"input": [-83.0, 33.0], "expected": 33.0}, {"input": [-83.0, 33.5], "expected": 33.5}, {"input": [-83.0, 34.0], "expected": 34.0}, {"input": [-83.0, 34.5], "expected": 34.5}, {"input": [-83.0, 35.0], "expected": 35.0}, {"input": [-83.0, 35.5], "expected": 35.5}, {"input": [-83.0, 36.0], "expected": 36.0}, {"input": [-83.0, 36.5], "expected": 36.5}, {"input": [-83.0, 37.0], "expected": 37.0}, {"input": [-83.0, 37.5], "expected": 37.5}, {"input": [-83.0, 38.0], "expected": 38.0}, {"input": [-83.0, 38.5], "expected": 38.5}, {"input": [-83.0, 39.0], "expected": 39.0}, {"input": [-83.0, 39.5], "expected": 39.5}, {"input": [-83.0, 40.0], "expected": 40.0}, {"input": [-83.0, 40.5], "expected": 40.5}, {"input": [-83.0, 41.0], "expected": 41.0}, {"input": [-83.0, 41.5], "expected": 41.5}, {"input": [-83.0, 42.0], "expected": 42.0}, {"input": [-83.0, 42.5], "expected": 42.5}, {"input": [-83.0, 43.0], "expected": 43.0}, {"input": [-83.0, 43.5], "expected": 43.5}, {"input": [-83.0, 44.0], "expected": 44.0}, {"input": [-83.0, 44.5], "expected": 44.5}, {"input": [-83.0, 45.0], "expected": 45.0}, {"input": [-83.0, 45.5], "expected": 45.5}, {"input": [-83.0, 46.0], "expected": 46.0}, {"input": [-83.0, 46.5], "expected": 46.5}, {"input": [-83.0, 47.0], "expected": 47.0}, {"input": [-83.0, 47.5], "expected": 47.5}, {"input": [-83.0, 48.0], "expected": 48.0}, {"input": [-83.0, 48.5], "expected": 48.5}, {"input": [-83.0, 49.0], "expected": 49.0}, {"input": [-83.0, 49.5], "expected": 49.5}, {"input": [-83.0, 50.0], "expected": 50.0}, {"input": [-83.0, 50.5], "expected": 50.5}, {"input": [-83.0, 51.0], "expected": 51.0}, {"input": [-83.0, 51.5], "expected": 51.5}, {"input": [-83.0, 52.0], "expected": 52.0}, {"input": [-83.0, 52.5], "expected": 52.5}, {"input": [-83.0, 53.0], "expected": 53.0}, {"input": [-83.0, 53.5], "expected": 53.5}, {"input": [-83.0, 54.0], "expected": 54.0}, {"input": [-83.0, 54.5], "expected": 54.5}, {"input": [-83.0, 55.0], "expected": 55.0}, {"input": [-83.0, 55.5], "expected": 55.5}, {"input": [-83.0, 56.0], "expected": 56.0}, {"input": [-83.0, 56.5], "expected": 56.5}, {"input": [-83.0, 57.0], "expected": 57.0}, {"input": [-83.0, 57.5], "expected": 57.5}, {"input": [-83.0, 58.0], "expected": 58.0}, {"input": [-83.0, 58.5], "expected": 58.5}, {"input": [-83.0, 59.0], "expected": 59.0}, {"input": [-83.0, 59.5], "expected": 59.5}, {"input": [-83.0, 60.0], "expected": 60.0}, {"input": [-83.0, 60.5], "expected": 60.5}, {"input": [-83.0, 61.0], "expected": 61.0}, {"input": [-83.0, 61.5], "expected": 61.5}, {"input": [-83.0, 62.0], "expected": 62.0}, {"input": [-83.0, 62.5], "expected": 62.5}, {"input": [-83.0, 63.0], "expected": 63.0}, {"input": [-83.0, 63.5], "expected": 63.5}, {"input": [-83.0, 64.0], "expected": 64.0}, {"input": [-83.0, 64.5], "expected": 64.5}, {"input": [-83.0, 65.0], "expected": 65.0}, {"input": [-83.0, 65.5], "expected": 65.5}, {"input": [-83.0, 66.0], "expected": 66.0}, {"input": [-83.0, 66.5], "expected": 66.5}, {"input": [-83.0, 67.0], "expected": 67.0}, {"input": [-83.0, 67.5], "expected": 67.5}, {"input": [-83.0, 68.0], "expected": 68.0}, {"input": [-83.0, 68.5], "expected": 68.5}, {"input": [-83.0, 69.0], "expected": 69.0}, {"input": [-83.0, 69.5], "expected": 69.5}, {"input": [-83.0, 70.0], "expected": 70.0}, {"input": [-83.0, 70.5], "expected": 70.5}, {"input": [-83.0, 71.0], "expected": 71.0}, {"input": [-83.0, 71.5], "expected": 71.5}, {"input": [-83.0, 72.0], "expected": 72.0}, {"input": [-83.0, 72.5], "expected": 72.5}, {"input": [-83.0, 73.0], "expected": 73.0}, {"input": [-83.0, 73.5], "expected": 73.5}, {"input": [-83.0, 74.0], "expected": 74.0}, {"input": [-83.0, 74.5], "expected": 74.5}, {"input": [-83.0, 75.0], "expected": 75.0}, {"input": [-83.0, 75.5], "expected": 75.5}, {"input": [-83.0, 76.0], "expected": 76.0}, {"input": [-83.0, 76.5], "expected": 76.5}, {"input": [-83.0, 77.0], "expected": 77.0}, {"input": [-83.0, 77.5], "expected": 77.5}, {"input": [-83.0, 78.0], "expected": 78.0}, {"input": [-83.0, 78.5], "expected": 78.5}, {"input": [-83.0, 79.0], "expected": 79.0}, {"input": [-83.0, 79.5], "expected": 79.5}, {"input": [-83.0, 80.0], "expected": 80.0}, {"input": [-83.0, 80.5], "expected": 80.5}, {"input": [-83.0, 81.0], "expected": 81.0}, {"input": [-83.0, 81.5], "expected": 81.5}, {"input": [-83.0, 82.0], "expected": 82.0}, {"input": [-83.0, 82.5], "expected": 82.5}, {"input": [-83.0, 83.0], "expected": 83.0}, {"input": [-83.0, 83.5], "expected": 83.5}, {"input": [-83.0, 84.0], "expected": 84.0}, {"input": [-83.0, 84.5], "expected": 84.5}, {"input": [-83.0, 85.0], "expected": 85.0}, {"input": [-83.0, 85.5], "expected": 85.5}, {"input": [-83.0, 86.0], "expected": 86.0}, {"input": [-83.0, 86.5], "expected": 86.5}, {"input": [-83.0, 87.0], "expected": 87.0}, {"input": [-83.0, 87.5], "expected": 87.5}, {"input": [-83.0, 88.0], "expected": 88.0}, {"input": [-83.0, 88.5], "expected": 88.5}, {"input": [-83.0, 89.0], "expected": 89.0}, {"input": [-83.0, 89.5], "expected": 89.5}, {"input": [-83.0, 90.0], "expected": 90.0}, {"input": [-83.0, 90.5], "expected": 90.5}, {"input": [-83.0, 91.0], "expected": 91.0}, {"input": [-83.0, 91.5], "expected": 91.5}, {"input": [-83.0, 92.0], "expected": 92.0}, {"input": [-83.0, 92.5], "expected": 92.5}, {"input": [-83.0, 93.0], "expected": 93.0}, {"input": [-83.0, 93.5], "expected": 93.5}, {"input": [-83.0, 94.0], "expected": 94.0}, {"input": [-83.0, 94.5], "expected": 94.5}, {"input": [-83.0, 95.0], "expected": 95.0}, {"input": [-83.0, 95.5], "expected": 95.5}, {"input": [-83.0, 96.0], "expected": 96.0}, {"input": [-83.0, 96.5], "expected": 96.5}, {"input": [-83.0, 97.0], "expected": 97.0}, {"input": [-83.0, 97.5], "expected": 97.5}, {"input": [-83.0, 98.0], "expected": 98.0}, {"input": [-83.0, 98.5], "expected": 98.5}, {"input": [-83.0, 99.0], "expected": 99.0}, {"input": [-83.0, 99.5], "expected": 99.5}, {"input": [-82.5, -100.0], "expected": -82.49999997489}, {"input": [-82.5, -99.5], "expected": -82.49999995860063}, {"input": [-82.5, -99.0], "expected": -82.49999993174397}, {"input": [-82.5, -98.5], "expected": -82.49999988746484}, {"input": [-82.5, -98.0], "expected": -82.49999981446088}, {"input": [-82.5, -97.5], "expected": -82.49999969409772}, {"input": [-82.5, -97.0], "expected": -82.49999949565246}, {"input": [-82.5, -96.5], "expected": -82.49999916847163}, {"input": [-82.5, -96.0], "expected": -82.49999862904185}, {"input": [-82.5, -95.5], "expected": -82.49999773967315}, {"input": [-82.5, -95.0], "expected": -82.49999627335377}, {"input": [-82.5, -94.5], "expected": -82.49999385580652}, {"input": [-82.5, -94.0], "expected": -82.49998986995772}, {"input": [-82.5, -93.5], "expected": -82.49998329843868}, {"input": [-82.5, -93.0], "expected": -82.49997246392977}, {"input": [-82.5, -92.5], "expected": -82.49995460110078}, {"input": [-82.5, -92.0], "expected": -82.49992515097136}, {"input": [-82.5, -91.5], "expected": -82.49987659781027}, {"input": [-82.5, -91.0], "expected": -82.49979655232787}, {"input": [-82.5, -90.5], "expected": -82.4996645936271}, {"input": [-82.5, -90.0], "expected": -82.49944706852465}, {"input": [-82.5, -89.5], "expected": -82.49908853354623}, {"input": [-82.5, -89.0], "expected": -82.49849768984025}, {"input": [-82.5, -88.5], "expected": -82.49752431486228}, {"input": [-82.5, -88.0], "expected": -82.49592155672943}, {"input": [-82.5, -87.5], "expected": -82.49328465151088}, {"input": [-82.5, -87.0], "expected": -82.4889522551514}, {"input": [-82.5, -86.5], "expected": -82.4818500720822}, {"input": [-82.5, -86.0], "expected": -82.47024958172737}, {"input": [-82.5, -85.5], "expected": -82.45141264842626}, {"input": [-82.5, -85.0], "expected": -82.42111026570745}, {"input": [-82.5, -84.5], "expected": -82.37307198895702}, {"input": [-82.5, -84.0], "expected": -82.29858672201725}, {"input": [-82.5, -83.5], "expected": -82.18673831248178}, {"input": [-82.5, -83.0], "expected": -82.0259230158199}, {"input": [-82.5, -82.5], "expected": -81.80685281944005}, {"input": [-82.5, -82.0], "expected": -81.5259230158199}, {"input": [-82.5, -81.5], "expected": -81.18673831248178}, {"input": [-82.5, -81.0], "expected": -80.79858672201725}, {"input": [-82.5, -80.5], "expected": -80.37307198895702}, {"input": [-82.5, -80.0], "expected": -79.92111026570745}, {"input": [-82.5, -79.5], "expected": -79.45141264842626}, {"input": [-82.5, -79.0], "expected": -78.97024958172737}, {"input": [-82.5, -78.5], "expected": -78.4818500720822}, {"input": [-82.5, -78.0], "expected": -77.9889522551514}, {"input": [-82.5, -77.5], "expected": -77.49328465151088}, {"input": [-82.5, -77.0], "expected": -76.99592155672943}, {"input": [-82.5, -76.5], "expected": -76.49752431486228}, {"input": [-82.5, -76.0], "expected": -75.99849768984025}, {"input": [-82.5, -75.5], "expected": -75.49908853354623}, {"input": [-82.5, -75.0], "expected": -74.99944706852465}, {"input": [-82.5, -74.5], "expected": -74.4996645936271}, {"input": [-82.5, -74.0], "expected": -73.99979655232787}, {"input": [-82.5, -73.5], "expected": -73.49987659781027}, {"input": [-82.5, -73.0], "expected": -72.99992515097136}, {"input": [-82.5, -72.5], "expected": -72.49995460110078}, {"input": [-82.5, -72.0], "expected": -71.99997246392977}, {"input": [-82.5, -71.5], "expected": -71.49998329843868}, {"input": [-82.5, -71.0], "expected": -70.99998986995772}, {"input": [-82.5, -70.5], "expected": -70.49999385580652}, {"input": [-82.5, -70.0], "expected": -69.99999627335377}, {"input": [-82.5, -69.5], "expected": -69.49999773967315}, {"input": [-82.5, -69.0], "expected": -68.99999862904185}, {"input": [-82.5, -68.5], "expected": -68.49999916847163}, {"input": [-82.5, -68.0], "expected": -67.99999949565246}, {"input": [-82.5, -67.5], "expected": -67.49999969409772}, {"input": [-82.5, -67.0], "expected": -66.99999981446088}, {"input": [-82.5, -66.5], "expected": -66.49999988746484}, {"input": [-82.5, -66.0], "expected": -65.99999993174397}, {"input": [-82.5, -65.5], "expected": -65.49999995860063}, {"input": [-82.5, -65.0], "expected": -64.99999997489}, {"input": [-82.5, -64.5], "expected": -64.49999998477001}, {"input": [-82.5, -64.0], "expected": -63.999999990762554}, {"input": [-82.5, -63.5], "expected": -63.49999999439721}, {"input": [-82.5, -63.0], "expected": -62.99999999660173}, {"input": [-82.5, -62.5], "expected": -62.49999999793884}, {"input": [-82.5, -62.0], "expected": -61.99999999874985}, {"input": [-82.5, -61.5], "expected": -61.499999999241744}, {"input": [-82.5, -61.0], "expected": -60.999999999540094}, {"input": [-82.5, -60.5], "expected": -60.499999999721055}, {"input": [-82.5, -60.0], "expected": -59.99999999983081}, {"input": [-82.5, -59.5], "expected": -59.49999999989738}, {"input": [-82.5, -59.0], "expected": -58.99999999993776}, {"input": [-82.5, -58.5], "expected": -58.49999999996225}, {"input": [-82.5, -58.0], "expected": -57.9999999999771}, {"input": [-82.5, -57.5], "expected": -57.49999999998611}, {"input": [-82.5, -57.0], "expected": -56.99999999999158}, {"input": [-82.5, -56.5], "expected": -56.49999999999489}, {"input": [-82.5, -56.0], "expected": -55.9999999999969}, {"input": [-82.5, -55.5], "expected": -55.49999999999812}, {"input": [-82.5, -55.0], "expected": -54.99999999999886}, {"input": [-82.5, -54.5], "expected": -54.49999999999931}, {"input": [-82.5, -54.0], "expected": -53.99999999999958}, {"input": [-82.5, -53.5], "expected": -53.499999999999744}, {"input": [-82.5, -53.0], "expected": -52.999999999999844}, {"input": [-82.5, -52.5], "expected": -52.49999999999991}, {"input": [-82.5, -52.0], "expected": -51.99999999999994}, {"input": [-82.5, -51.5], "expected": -51.499999999999964}, {"input": [-82.5, -51.0], "expected": -50.99999999999998}, {"input": [-82.5, -50.5], "expected": -50.499999999999986}, {"input": [-82.5, -50.0], "expected": -49.99999999999999}, {"input": [-82.5, -49.5], "expected": -49.49999999999999}, {"input": [-82.5, -49.0], "expected": -49.0}, {"input": [-82.5, -48.5], "expected": -48.5}, {"input": [-82.5, -48.0], "expected": -48.0}, {"input": [-82.5, -47.5], "expected": -47.5}, {"input": [-82.5, -47.0], "expected": -47.0}, {"input": [-82.5, -46.5], "expected": -46.5}, {"input": [-82.5, -46.0], "expected": -46.0}, {"input": [-82.5, -45.5], "expected": -45.5}, {"input": [-82.5, -45.0], "expected": -45.0}, {"input": [-82.5, -44.5], "expected": -44.5}, {"input": [-82.5, -44.0], "expected": -44.0}, {"input": [-82.5, -43.5], "expected": -43.5}, {"input": [-82.5, -43.0], "expected": -43.0}, {"input": [-82.5, -42.5], "expected": -42.5}, {"input": [-82.5, -42.0], "expected": -42.0}, {"input": [-82.5, -41.5], "expected": -41.5}, {"input": [-82.5, -41.0], "expected": -41.0}, {"input": [-82.5, -40.5], "expected": -40.5}, {"input": [-82.5, -40.0], "expected": -40.0}, {"input": [-82.5, -39.5], "expected": -39.5}, {"input": [-82.5, -39.0], "expected": -39.0}, {"input": [-82.5, -38.5], "expected": -38.5}, {"input": [-82.5, -38.0], "expected": -38.0}, {"input": [-82.5, -37.5], "expected": -37.5}, {"input": [-82.5, -37.0], "expected": -37.0}, {"input": [-82.5, -36.5], "expected": -36.5}, {"input": [-82.5, -36.0], "expected": -36.0}, {"input": [-82.5, -35.5], "expected": -35.5}, {"input": [-82.5, -35.0], "expected": -35.0}, {"input": [-82.5, -34.5], "expected": -34.5}, {"input": [-82.5, -34.0], "expected": -34.0}, {"input": [-82.5, -33.5], "expected": -33.5}, {"input": [-82.5, -33.0], "expected": -33.0}, {"input": [-82.5, -32.5], "expected": -32.5}, {"input": [-82.5, -32.0], "expected": -32.0}, {"input": [-82.5, -31.5], "expected": -31.5}, {"input": [-82.5, -31.0], "expected": -31.0}, {"input": [-82.5, -30.5], "expected": -30.5}, {"input": [-82.5, -30.0], "expected": -30.0}, {"input": [-82.5, -29.5], "expected": -29.5}, {"input": [-82.5, -29.0], "expected": -29.0}, {"input": [-82.5, -28.5], "expected": -28.5}, {"input": [-82.5, -28.0], "expected": -28.0}, {"input": [-82.5, -27.5], "expected": -27.5}, {"input": [-82.5, -27.0], "expected": -27.0}, {"input": [-82.5, -26.5], "expected": -26.5}, {"input": [-82.5, -26.0], "expected": -26.0}, {"input": [-82.5, -25.5], "expected": -25.5}, {"input": [-82.5, -25.0], "expected": -25.0}, {"input": [-82.5, -24.5], "expected": -24.5}, {"input": [-82.5, -24.0], "expected": -24.0}, {"input": [-82.5, -23.5], "expected": -23.5}, {"input": [-82.5, -23.0], "expected": -23.0}, {"input": [-82.5, -22.5], "expected": -22.5}, {"input": [-82.5, -22.0], "expected": -22.0}, {"input": [-82.5, -21.5], "expected": -21.5}, {"input": [-82.5, -21.0], "expected": -21.0}, {"input": [-82.5, -20.5], "expected": -20.5}, {"input": [-82.5, -20.0], "expected": -20.0}, {"input": [-82.5, -19.5], "expected": -19.5}, {"input": [-82.5, -19.0], "expected": -19.0}, {"input": [-82.5, -18.5], "expected": -18.5}, {"input": [-82.5, -18.0], "expected": -18.0}, {"input": [-82.5, -17.5], "expected": -17.5}, {"input": [-82.5, -17.0], "expected": -17.0}, {"input": [-82.5, -16.5], "expected": -16.5}, {"input": [-82.5, -16.0], "expected": -16.0}, {"input": [-82.5, -15.5], "expected": -15.5}, {"input": [-82.5, -15.0], "expected": -15.0}, {"input": [-82.5, -14.5], "expected": -14.5}, {"input": [-82.5, -14.0], "expected": -14.0}, {"input": [-82.5, -13.5], "expected": -13.5}, {"input": [-82.5, -13.0], "expected": -13.0}, {"input": [-82.5, -12.5], "expected": -12.5}, {"input": [-82.5, -12.0], "expected": -12.0}, {"input": [-82.5, -11.5], "expected": -11.5}, {"input": [-82.5, -11.0], "expected": -11.0}, {"input": [-82.5, -10.5], "expected": -10.5}, {"input": [-82.5, -10.0], "expected": -10.0}, {"input": [-82.5, -9.5], "expected": -9.5}, {"input": [-82.5, -9.0], "expected": -9.0}, {"input": [-82.5, -8.5], "expected": -8.5}, {"input": [-82.5, -8.0], "expected": -8.0}, {"input": [-82.5, -7.5], "expected": -7.5}, {"input": [-82.5, -7.0], "expected": -7.0}, {"input": [-82.5, -6.5], "expected": -6.5}, {"input": [-82.5, -6.0], "expected": -6.0}, {"input": [-82.5, -5.5], "expected": -5.5}, {"input": [-82.5, -5.0], "expected": -5.0}, {"input": [-82.5, -4.5], "expected": -4.5}, {"input": [-82.5, -4.0], "expected": -4.0}, {"input": [-82.5, -3.5], "expected": -3.5}, {"input": [-82.5, -3.0], "expected": -3.0}, {"input": [-82.5, -2.5], "expected": -2.5}, {"input": [-82.5, -2.0], "expected": -2.0}, {"input": [-82.5, -1.5], "expected": -1.5}, {"input": [-82.5, -1.0], "expected": -1.0}, {"input": [-82.5, -0.5], "expected": -0.5}, {"input": [-82.5, 0.0], "expected": 1.4815122368763274e-36}, {"input": [-82.5, 0.5], "expected": 0.5}, {"input": [-82.5, 1.0], "expected": 1.0}, {"input": [-82.5, 1.5], "expected": 1.5}, {"input": [-82.5, 2.0], "expected": 2.0}, {"input": [-82.5, 2.5], "expected": 2.5}, {"input": [-82.5, 3.0], "expected": 3.0}, {"input": [-82.5, 3.5], "expected": 3.5}, {"input": [-82.5, 4.0], "expected": 4.0}, {"input": [-82.5, 4.5], "expected": 4.5}, {"input": [-82.5, 5.0], "expected": 5.0}, {"input": [-82.5, 5.5], "expected": 5.5}, {"input": [-82.5, 6.0], "expected": 6.0}, {"input": [-82.5, 6.5], "expected": 6.5}, {"input": [-82.5, 7.0], "expected": 7.0}, {"input": [-82.5, 7.5], "expected": 7.5}, {"input": [-82.5, 8.0], "expected": 8.0}, {"input": [-82.5, 8.5], "expected": 8.5}, {"input": [-82.5, 9.0], "expected": 9.0}, {"input": [-82.5, 9.5], "expected": 9.5}, {"input": [-82.5, 10.0], "expected": 10.0}, {"input": [-82.5, 10.5], "expected": 10.5}, {"input": [-82.5, 11.0], "expected": 11.0}, {"input": [-82.5, 11.5], "expected": 11.5}, {"input": [-82.5, 12.0], "expected": 12.0}, {"input": [-82.5, 12.5], "expected": 12.5}, {"input": [-82.5, 13.0], "expected": 13.0}, {"input": [-82.5, 13.5], "expected": 13.5}, {"input": [-82.5, 14.0], "expected": 14.0}, {"input": [-82.5, 14.5], "expected": 14.5}, {"input": [-82.5, 15.0], "expected": 15.0}, {"input": [-82.5, 15.5], "expected": 15.5}, {"input": [-82.5, 16.0], "expected": 16.0}, {"input": [-82.5, 16.5], "expected": 16.5}, {"input": [-82.5, 17.0], "expected": 17.0}, {"input": [-82.5, 17.5], "expected": 17.5}, {"input": [-82.5, 18.0], "expected": 18.0}, {"input": [-82.5, 18.5], "expected": 18.5}, {"input": [-82.5, 19.0], "expected": 19.0}, {"input": [-82.5, 19.5], "expected": 19.5}, {"input": [-82.5, 20.0], "expected": 20.0}, {"input": [-82.5, 20.5], "expected": 20.5}, {"input": [-82.5, 21.0], "expected": 21.0}, {"input": [-82.5, 21.5], "expected": 21.5}, {"input": [-82.5, 22.0], "expected": 22.0}, {"input": [-82.5, 22.5], "expected": 22.5}, {"input": [-82.5, 23.0], "expected": 23.0}, {"input": [-82.5, 23.5], "expected": 23.5}, {"input": [-82.5, 24.0], "expected": 24.0}, {"input": [-82.5, 24.5], "expected": 24.5}, {"input": [-82.5, 25.0], "expected": 25.0}, {"input": [-82.5, 25.5], "expected": 25.5}, {"input": [-82.5, 26.0], "expected": 26.0}, {"input": [-82.5, 26.5], "expected": 26.5}, {"input": [-82.5, 27.0], "expected": 27.0}, {"input": [-82.5, 27.5], "expected": 27.5}, {"input": [-82.5, 28.0], "expected": 28.0}, {"input": [-82.5, 28.5], "expected": 28.5}, {"input": [-82.5, 29.0], "expected": 29.0}, {"input": [-82.5, 29.5], "expected": 29.5}, {"input": [-82.5, 30.0], "expected": 30.0}, {"input": [-82.5, 30.5], "expected": 30.5}, {"input": [-82.5, 31.0], "expected": 31.0}, {"input": [-82.5, 31.5], "expected": 31.5}, {"input": [-82.5, 32.0], "expected": 32.0}, {"input": [-82.5, 32.5], "expected": 32.5}, {"input": [-82.5, 33.0], "expected": 33.0}, {"input": [-82.5, 33.5], "expected": 33.5}, {"input": [-82.5, 34.0], "expected": 34.0}, {"input": [-82.5, 34.5], "expected": 34.5}, {"input": [-82.5, 35.0], "expected": 35.0}, {"input": [-82.5, 35.5], "expected": 35.5}, {"input": [-82.5, 36.0], "expected": 36.0}, {"input": [-82.5, 36.5], "expected": 36.5}, {"input": [-82.5, 37.0], "expected": 37.0}, {"input": [-82.5, 37.5], "expected": 37.5}, {"input": [-82.5, 38.0], "expected": 38.0}, {"input": [-82.5, 38.5], "expected": 38.5}, {"input": [-82.5, 39.0], "expected": 39.0}, {"input": [-82.5, 39.5], "expected": 39.5}, {"input": [-82.5, 40.0], "expected": 40.0}, {"input": [-82.5, 40.5], "expected": 40.5}, {"input": [-82.5, 41.0], "expected": 41.0}, {"input": [-82.5, 41.5], "expected": 41.5}, {"input": [-82.5, 42.0], "expected": 42.0}, {"input": [-82.5, 42.5], "expected": 42.5}, {"input": [-82.5, 43.0], "expected": 43.0}, {"input": [-82.5, 43.5], "expected": 43.5}, {"input": [-82.5, 44.0], "expected": 44.0}, {"input": [-82.5, 44.5], "expected": 44.5}, {"input": [-82.5, 45.0], "expected": 45.0}, {"input": [-82.5, 45.5], "expected": 45.5}, {"input": [-82.5, 46.0], "expected": 46.0}, {"input": [-82.5, 46.5], "expected": 46.5}, {"input": [-82.5, 47.0], "expected": 47.0}, {"input": [-82.5, 47.5], "expected": 47.5}, {"input": [-82.5, 48.0], "expected": 48.0}, {"input": [-82.5, 48.5], "expected": 48.5}, {"input": [-82.5, 49.0], "expected": 49.0}, {"input": [-82.5, 49.5], "expected": 49.5}, {"input": [-82.5, 50.0], "expected": 50.0}, {"input": [-82.5, 50.5], "expected": 50.5}, {"input": [-82.5, 51.0], "expected": 51.0}, {"input": [-82.5, 51.5], "expected": 51.5}, {"input": [-82.5, 52.0], "expected": 52.0}, {"input": [-82.5, 52.5], "expected": 52.5}, {"input": [-82.5, 53.0], "expected": 53.0}, {"input": [-82.5, 53.5], "expected": 53.5}, {"input": [-82.5, 54.0], "expected": 54.0}, {"input": [-82.5, 54.5], "expected": 54.5}, {"input": [-82.5, 55.0], "expected": 55.0}, {"input": [-82.5, 55.5], "expected": 55.5}, {"input": [-82.5, 56.0], "expected": 56.0}, {"input": [-82.5, 56.5], "expected": 56.5}, {"input": [-82.5, 57.0], "expected": 57.0}, {"input": [-82.5, 57.5], "expected": 57.5}, {"input": [-82.5, 58.0], "expected": 58.0}, {"input": [-82.5, 58.5], "expected": 58.5}, {"input": [-82.5, 59.0], "expected": 59.0}, {"input": [-82.5, 59.5], "expected": 59.5}, {"input": [-82.5, 60.0], "expected": 60.0}, {"input": [-82.5, 60.5], "expected": 60.5}, {"input": [-82.5, 61.0], "expected": 61.0}, {"input": [-82.5, 61.5], "expected": 61.5}, {"input": [-82.5, 62.0], "expected": 62.0}, {"input": [-82.5, 62.5], "expected": 62.5}, {"input": [-82.5, 63.0], "expected": 63.0}, {"input": [-82.5, 63.5], "expected": 63.5}, {"input": [-82.5, 64.0], "expected": 64.0}, {"input": [-82.5, 64.5], "expected": 64.5}, {"input": [-82.5, 65.0], "expected": 65.0}, {"input": [-82.5, 65.5], "expected": 65.5}, {"input": [-82.5, 66.0], "expected": 66.0}, {"input": [-82.5, 66.5], "expected": 66.5}, {"input": [-82.5, 67.0], "expected": 67.0}, {"input": [-82.5, 67.5], "expected": 67.5}, {"input": [-82.5, 68.0], "expected": 68.0}, {"input": [-82.5, 68.5], "expected": 68.5}, {"input": [-82.5, 69.0], "expected": 69.0}, {"input": [-82.5, 69.5], "expected": 69.5}, {"input": [-82.5, 70.0], "expected": 70.0}, {"input": [-82.5, 70.5], "expected": 70.5}, {"input": [-82.5, 71.0], "expected": 71.0}, {"input": [-82.5, 71.5], "expected": 71.5}, {"input": [-82.5, 72.0], "expected": 72.0}, {"input": [-82.5, 72.5], "expected": 72.5}, {"input": [-82.5, 73.0], "expected": 73.0}, {"input": [-82.5, 73.5], "expected": 73.5}, {"input": [-82.5, 74.0], "expected": 74.0}, {"input": [-82.5, 74.5], "expected": 74.5}, {"input": [-82.5, 75.0], "expected": 75.0}, {"input": [-82.5, 75.5], "expected": 75.5}, {"input": [-82.5, 76.0], "expected": 76.0}, {"input": [-82.5, 76.5], "expected": 76.5}, {"input": [-82.5, 77.0], "expected": 77.0}, {"input": [-82.5, 77.5], "expected": 77.5}, {"input": [-82.5, 78.0], "expected": 78.0}, {"input": [-82.5, 78.5], "expected": 78.5}, {"input": [-82.5, 79.0], "expected": 79.0}, {"input": [-82.5, 79.5], "expected": 79.5}, {"input": [-82.5, 80.0], "expected": 80.0}, {"input": [-82.5, 80.5], "expected": 80.5}, {"input": [-82.5, 81.0], "expected": 81.0}, {"input": [-82.5, 81.5], "expected": 81.5}, {"input": [-82.5, 82.0], "expected": 82.0}, {"input": [-82.5, 82.5], "expected": 82.5}, {"input": [-82.5, 83.0], "expected": 83.0}, {"input": [-82.5, 83.5], "expected": 83.5}, {"input": [-82.5, 84.0], "expected": 84.0}, {"input": [-82.5, 84.5], "expected": 84.5}, {"input": [-82.5, 85.0], "expected": 85.0}, {"input": [-82.5, 85.5], "expected": 85.5}, {"input": [-82.5, 86.0], "expected": 86.0}, {"input": [-82.5, 86.5], "expected": 86.5}, {"input": [-82.5, 87.0], "expected": 87.0}, {"input": [-82.5, 87.5], "expected": 87.5}, {"input": [-82.5, 88.0], "expected": 88.0}, {"input": [-82.5, 88.5], "expected": 88.5}, {"input": [-82.5, 89.0], "expected": 89.0}, {"input": [-82.5, 89.5], "expected": 89.5}, {"input": [-82.5, 90.0], "expected": 90.0}, {"input": [-82.5, 90.5], "expected": 90.5}, {"input": [-82.5, 91.0], "expected": 91.0}, {"input": [-82.5, 91.5], "expected": 91.5}, {"input": [-82.5, 92.0], "expected": 92.0}, {"input": [-82.5, 92.5], "expected": 92.5}, {"input": [-82.5, 93.0], "expected": 93.0}, {"input": [-82.5, 93.5], "expected": 93.5}, {"input": [-82.5, 94.0], "expected": 94.0}, {"input": [-82.5, 94.5], "expected": 94.5}, {"input": [-82.5, 95.0], "expected": 95.0}, {"input": [-82.5, 95.5], "expected": 95.5}, {"input": [-82.5, 96.0], "expected": 96.0}, {"input": [-82.5, 96.5], "expected": 96.5}, {"input": [-82.5, 97.0], "expected": 97.0}, {"input": [-82.5, 97.5], "expected": 97.5}, {"input": [-82.5, 98.0], "expected": 98.0}, {"input": [-82.5, 98.5], "expected": 98.5}, {"input": [-82.5, 99.0], "expected": 99.0}, {"input": [-82.5, 99.5], "expected": 99.5}, {"input": [-82.0, -100.0], "expected": -81.99999998477001}, {"input": [-82.0, -99.5], "expected": -81.99999997489}, {"input": [-82.0, -99.0], "expected": -81.99999995860063}, {"input": [-82.0, -98.5], "expected": -81.99999993174397}, {"input": [-82.0, -98.0], "expected": -81.99999988746484}, {"input": [-82.0, -97.5], "expected": -81.99999981446088}, {"input": [-82.0, -97.0], "expected": -81.99999969409772}, {"input": [-82.0, -96.5], "expected": -81.99999949565246}, {"input": [-82.0, -96.0], "expected": -81.99999916847163}, {"input": [-82.0, -95.5], "expected": -81.99999862904185}, {"input": [-82.0, -95.0], "expected": -81.99999773967315}, {"input": [-82.0, -94.5], "expected": -81.99999627335377}, {"input": [-82.0, -94.0], "expected": -81.99999385580652}, {"input": [-82.0, -93.5], "expected": -81.99998986995772}, {"input": [-82.0, -93.0], "expected": -81.99998329843868}, {"input": [-82.0, -92.5], "expected": -81.99997246392977}, {"input": [-82.0, -92.0], "expected": -81.99995460110078}, {"input": [-82.0, -91.5], "expected": -81.99992515097136}, {"input": [-82.0, -91.0], "expected": -81.99987659781027}, {"input": [-82.0, -90.5], "expected": -81.99979655232787}, {"input": [-82.0, -90.0], "expected": -81.9996645936271}, {"input": [-82.0, -89.5], "expected": -81.99944706852465}, {"input": [-82.0, -89.0], "expected": -81.99908853354623}, {"input": [-82.0, -88.5], "expected": -81.99849768984025}, {"input": [-82.0, -88.0], "expected": -81.99752431486228}, {"input": [-82.0, -87.5], "expected": -81.99592155672943}, {"input": [-82.0, -87.0], "expected": -81.99328465151088}, {"input": [-82.0, -86.5], "expected": -81.9889522551514}, {"input": [-82.0, -86.0], "expected": -81.9818500720822}, {"input": [-82.0, -85.5], "expected": -81.97024958172737}, {"input": [-82.0, -85.0], "expected": -81.95141264842626}, {"input": [-82.0, -84.5], "expected": -81.92111026570745}, {"input": [-82.0, -84.0], "expected": -81.87307198895702}, {"input": [-82.0, -83.5], "expected": -81.79858672201725}, {"input": [-82.0, -83.0], "expected": -81.68673831248178}, {"input": [-82.0, -82.5], "expected": -81.5259230158199}, {"input": [-82.0, -82.0], "expected": -81.30685281944005}, {"input": [-82.0, -81.5], "expected": -81.0259230158199}, {"input": [-82.0, -81.0], "expected": -80.68673831248178}, {"input": [-82.0, -80.5], "expected": -80.29858672201725}, {"input": [-82.0, -80.0], "expected": -79.87307198895702}, {"input": [-82.0, -79.5], "expected": -79.42111026570745}, {"input": [-82.0, -79.0], "expected": -78.95141264842626}, {"input": [-82.0, -78.5], "expected": -78.47024958172737}, {"input": [-82.0, -78.0], "expected": -77.9818500720822}, {"input": [-82.0, -77.5], "expected": -77.4889522551514}, {"input": [-82.0, -77.0], "expected": -76.99328465151088}, {"input": [-82.0, -76.5], "expected": -76.49592155672943}, {"input": [-82.0, -76.0], "expected": -75.99752431486228}, {"input": [-82.0, -75.5], "expected": -75.49849768984025}, {"input": [-82.0, -75.0], "expected": -74.99908853354623}, {"input": [-82.0, -74.5], "expected": -74.49944706852465}, {"input": [-82.0, -74.0], "expected": -73.9996645936271}, {"input": [-82.0, -73.5], "expected": -73.49979655232787}, {"input": [-82.0, -73.0], "expected": -72.99987659781027}, {"input": [-82.0, -72.5], "expected": -72.49992515097136}, {"input": [-82.0, -72.0], "expected": -71.99995460110078}, {"input": [-82.0, -71.5], "expected": -71.49997246392977}, {"input": [-82.0, -71.0], "expected": -70.99998329843868}, {"input": [-82.0, -70.5], "expected": -70.49998986995772}, {"input": [-82.0, -70.0], "expected": -69.99999385580652}, {"input": [-82.0, -69.5], "expected": -69.49999627335377}, {"input": [-82.0, -69.0], "expected": -68.99999773967315}, {"input": [-82.0, -68.5], "expected": -68.49999862904185}, {"input": [-82.0, -68.0], "expected": -67.99999916847163}, {"input": [-82.0, -67.5], "expected": -67.49999949565246}, {"input": [-82.0, -67.0], "expected": -66.99999969409772}, {"input": [-82.0, -66.5], "expected": -66.49999981446088}, {"input": [-82.0, -66.0], "expected": -65.99999988746484}, {"input": [-82.0, -65.5], "expected": -65.49999993174397}, {"input": [-82.0, -65.0], "expected": -64.99999995860063}, {"input": [-82.0, -64.5], "expected": -64.49999997489}, {"input": [-82.0, -64.0], "expected": -63.99999998477002}, {"input": [-82.0, -63.5], "expected": -63.499999990762554}, {"input": [-82.0, -63.0], "expected": -62.99999999439721}, {"input": [-82.0, -62.5], "expected": -62.49999999660173}, {"input": [-82.0, -62.0], "expected": -61.99999999793884}, {"input": [-82.0, -61.5], "expected": -61.49999999874985}, {"input": [-82.0, -61.0], "expected": -60.999999999241744}, {"input": [-82.0, -60.5], "expected": -60.499999999540094}, {"input": [-82.0, -60.0], "expected": -59.999999999721055}, {"input": [-82.0, -59.5], "expected": -59.49999999983081}, {"input": [-82.0, -59.0], "expected": -58.99999999989738}, {"input": [-82.0, -58.5], "expected": -58.49999999993776}, {"input": [-82.0, -58.0], "expected": -57.99999999996225}, {"input": [-82.0, -57.5], "expected": -57.4999999999771}, {"input": [-82.0, -57.0], "expected": -56.99999999998611}, {"input": [-82.0, -56.5], "expected": -56.49999999999158}, {"input": [-82.0, -56.0], "expected": -55.99999999999489}, {"input": [-82.0, -55.5], "expected": -55.4999999999969}, {"input": [-82.0, -55.0], "expected": -54.99999999999812}, {"input": [-82.0, -54.5], "expected": -54.49999999999886}, {"input": [-82.0, -54.0], "expected": -53.99999999999931}, {"input": [-82.0, -53.5], "expected": -53.49999999999958}, {"input": [-82.0, -53.0], "expected": -52.999999999999744}, {"input": [-82.0, -52.5], "expected": -52.499999999999844}, {"input": [-82.0, -52.0], "expected": -51.99999999999991}, {"input": [-82.0, -51.5], "expected": -51.49999999999994}, {"input": [-82.0, -51.0], "expected": -50.999999999999964}, {"input": [-82.0, -50.5], "expected": -50.49999999999998}, {"input": [-82.0, -50.0], "expected": -49.999999999999986}, {"input": [-82.0, -49.5], "expected": -49.49999999999999}, {"input": [-82.0, -49.0], "expected": -48.99999999999999}, {"input": [-82.0, -48.5], "expected": -48.5}, {"input": [-82.0, -48.0], "expected": -48.0}, {"input": [-82.0, -47.5], "expected": -47.5}, {"input": [-82.0, -47.0], "expected": -47.0}, {"input": [-82.0, -46.5], "expected": -46.5}, {"input": [-82.0, -46.0], "expected": -46.0}, {"input": [-82.0, -45.5], "expected": -45.5}, {"input": [-82.0, -45.0], "expected": -45.0}, {"input": [-82.0, -44.5], "expected": -44.5}, {"input": [-82.0, -44.0], "expected": -44.0}, {"input": [-82.0, -43.5], "expected": -43.5}, {"input": [-82.0, -43.0], "expected": -43.0}, {"input": [-82.0, -42.5], "expected": -42.5}, {"input": [-82.0, -42.0], "expected": -42.0}, {"input": [-82.0, -41.5], "expected": -41.5}, {"input": [-82.0, -41.0], "expected": -41.0}, {"input": [-82.0, -40.5], "expected": -40.5}, {"input": [-82.0, -40.0], "expected": -40.0}, {"input": [-82.0, -39.5], "expected": -39.5}, {"input": [-82.0, -39.0], "expected": -39.0}, {"input": [-82.0, -38.5], "expected": -38.5}, {"input": [-82.0, -38.0], "expected": -38.0}, {"input": [-82.0, -37.5], "expected": -37.5}, {"input": [-82.0, -37.0], "expected": -37.0}, {"input": [-82.0, -36.5], "expected": -36.5}, {"input": [-82.0, -36.0], "expected": -36.0}, {"input": [-82.0, -35.5], "expected": -35.5}, {"input": [-82.0, -35.0], "expected": -35.0}, {"input": [-82.0, -34.5], "expected": -34.5}, {"input": [-82.0, -34.0], "expected": -34.0}, {"input": [-82.0, -33.5], "expected": -33.5}, {"input": [-82.0, -33.0], "expected": -33.0}, {"input": [-82.0, -32.5], "expected": -32.5}, {"input": [-82.0, -32.0], "expected": -32.0}, {"input": [-82.0, -31.5], "expected": -31.5}, {"input": [-82.0, -31.0], "expected": -31.0}, {"input": [-82.0, -30.5], "expected": -30.5}, {"input": [-82.0, -30.0], "expected": -30.0}, {"input": [-82.0, -29.5], "expected": -29.5}, {"input": [-82.0, -29.0], "expected": -29.0}, {"input": [-82.0, -28.5], "expected": -28.5}, {"input": [-82.0, -28.0], "expected": -28.0}, {"input": [-82.0, -27.5], "expected": -27.5}, {"input": [-82.0, -27.0], "expected": -27.0}, {"input": [-82.0, -26.5], "expected": -26.5}, {"input": [-82.0, -26.0], "expected": -26.0}, {"input": [-82.0, -25.5], "expected": -25.5}, {"input": [-82.0, -25.0], "expected": -25.0}, {"input": [-82.0, -24.5], "expected": -24.5}, {"input": [-82.0, -24.0], "expected": -24.0}, {"input": [-82.0, -23.5], "expected": -23.5}, {"input": [-82.0, -23.0], "expected": -23.0}, {"input": [-82.0, -22.5], "expected": -22.5}, {"input": [-82.0, -22.0], "expected": -22.0}, {"input": [-82.0, -21.5], "expected": -21.5}, {"input": [-82.0, -21.0], "expected": -21.0}, {"input": [-82.0, -20.5], "expected": -20.5}, {"input": [-82.0, -20.0], "expected": -20.0}, {"input": [-82.0, -19.5], "expected": -19.5}, {"input": [-82.0, -19.0], "expected": -19.0}, {"input": [-82.0, -18.5], "expected": -18.5}, {"input": [-82.0, -18.0], "expected": -18.0}, {"input": [-82.0, -17.5], "expected": -17.5}, {"input": [-82.0, -17.0], "expected": -17.0}, {"input": [-82.0, -16.5], "expected": -16.5}, {"input": [-82.0, -16.0], "expected": -16.0}, {"input": [-82.0, -15.5], "expected": -15.5}, {"input": [-82.0, -15.0], "expected": -15.0}, {"input": [-82.0, -14.5], "expected": -14.5}, {"input": [-82.0, -14.0], "expected": -14.0}, {"input": [-82.0, -13.5], "expected": -13.5}, {"input": [-82.0, -13.0], "expected": -13.0}, {"input": [-82.0, -12.5], "expected": -12.5}, {"input": [-82.0, -12.0], "expected": -12.0}, {"input": [-82.0, -11.5], "expected": -11.5}, {"input": [-82.0, -11.0], "expected": -11.0}, {"input": [-82.0, -10.5], "expected": -10.5}, {"input": [-82.0, -10.0], "expected": -10.0}, {"input": [-82.0, -9.5], "expected": -9.5}, {"input": [-82.0, -9.0], "expected": -9.0}, {"input": [-82.0, -8.5], "expected": -8.5}, {"input": [-82.0, -8.0], "expected": -8.0}, {"input": [-82.0, -7.5], "expected": -7.5}, {"input": [-82.0, -7.0], "expected": -7.0}, {"input": [-82.0, -6.5], "expected": -6.5}, {"input": [-82.0, -6.0], "expected": -6.0}, {"input": [-82.0, -5.5], "expected": -5.5}, {"input": [-82.0, -5.0], "expected": -5.0}, {"input": [-82.0, -4.5], "expected": -4.5}, {"input": [-82.0, -4.0], "expected": -4.0}, {"input": [-82.0, -3.5], "expected": -3.5}, {"input": [-82.0, -3.0], "expected": -3.0}, {"input": [-82.0, -2.5], "expected": -2.5}, {"input": [-82.0, -2.0], "expected": -2.0}, {"input": [-82.0, -1.5], "expected": -1.5}, {"input": [-82.0, -1.0], "expected": -1.0}, {"input": [-82.0, -0.5], "expected": -0.5}, {"input": [-82.0, 0.0], "expected": 2.4426007377405277e-36}, {"input": [-82.0, 0.5], "expected": 0.5}, {"input": [-82.0, 1.0], "expected": 1.0}, {"input": [-82.0, 1.5], "expected": 1.5}, {"input": [-82.0, 2.0], "expected": 2.0}, {"input": [-82.0, 2.5], "expected": 2.5}, {"input": [-82.0, 3.0], "expected": 3.0}, {"input": [-82.0, 3.5], "expected": 3.5}, {"input": [-82.0, 4.0], "expected": 4.0}, {"input": [-82.0, 4.5], "expected": 4.5}, {"input": [-82.0, 5.0], "expected": 5.0}, {"input": [-82.0, 5.5], "expected": 5.5}, {"input": [-82.0, 6.0], "expected": 6.0}, {"input": [-82.0, 6.5], "expected": 6.5}, {"input": [-82.0, 7.0], "expected": 7.0}, {"input": [-82.0, 7.5], "expected": 7.5}, {"input": [-82.0, 8.0], "expected": 8.0}, {"input": [-82.0, 8.5], "expected": 8.5}, {"input": [-82.0, 9.0], "expected": 9.0}, {"input": [-82.0, 9.5], "expected": 9.5}, {"input": [-82.0, 10.0], "expected": 10.0}, {"input": [-82.0, 10.5], "expected": 10.5}, {"input": [-82.0, 11.0], "expected": 11.0}, {"input": [-82.0, 11.5], "expected": 11.5}, {"input": [-82.0, 12.0], "expected": 12.0}, {"input": [-82.0, 12.5], "expected": 12.5}, {"input": [-82.0, 13.0], "expected": 13.0}, {"input": [-82.0, 13.5], "expected": 13.5}, {"input": [-82.0, 14.0], "expected": 14.0}, {"input": [-82.0, 14.5], "expected": 14.5}, {"input": [-82.0, 15.0], "expected": 15.0}, {"input": [-82.0, 15.5], "expected": 15.5}, {"input": [-82.0, 16.0], "expected": 16.0}, {"input": [-82.0, 16.5], "expected": 16.5}, {"input": [-82.0, 17.0], "expected": 17.0}, {"input": [-82.0, 17.5], "expected": 17.5}, {"input": [-82.0, 18.0], "expected": 18.0}, {"input": [-82.0, 18.5], "expected": 18.5}, {"input": [-82.0, 19.0], "expected": 19.0}, {"input": [-82.0, 19.5], "expected": 19.5}, {"input": [-82.0, 20.0], "expected": 20.0}, {"input": [-82.0, 20.5], "expected": 20.5}, {"input": [-82.0, 21.0], "expected": 21.0}, {"input": [-82.0, 21.5], "expected": 21.5}, {"input": [-82.0, 22.0], "expected": 22.0}, {"input": [-82.0, 22.5], "expected": 22.5}, {"input": [-82.0, 23.0], "expected": 23.0}, {"input": [-82.0, 23.5], "expected": 23.5}, {"input": [-82.0, 24.0], "expected": 24.0}, {"input": [-82.0, 24.5], "expected": 24.5}, {"input": [-82.0, 25.0], "expected": 25.0}, {"input": [-82.0, 25.5], "expected": 25.5}, {"input": [-82.0, 26.0], "expected": 26.0}, {"input": [-82.0, 26.5], "expected": 26.5}, {"input": [-82.0, 27.0], "expected": 27.0}, {"input": [-82.0, 27.5], "expected": 27.5}, {"input": [-82.0, 28.0], "expected": 28.0}, {"input": [-82.0, 28.5], "expected": 28.5}, {"input": [-82.0, 29.0], "expected": 29.0}, {"input": [-82.0, 29.5], "expected": 29.5}, {"input": [-82.0, 30.0], "expected": 30.0}, {"input": [-82.0, 30.5], "expected": 30.5}, {"input": [-82.0, 31.0], "expected": 31.0}, {"input": [-82.0, 31.5], "expected": 31.5}, {"input": [-82.0, 32.0], "expected": 32.0}, {"input": [-82.0, 32.5], "expected": 32.5}, {"input": [-82.0, 33.0], "expected": 33.0}, {"input": [-82.0, 33.5], "expected": 33.5}, {"input": [-82.0, 34.0], "expected": 34.0}, {"input": [-82.0, 34.5], "expected": 34.5}, {"input": [-82.0, 35.0], "expected": 35.0}, {"input": [-82.0, 35.5], "expected": 35.5}, {"input": [-82.0, 36.0], "expected": 36.0}, {"input": [-82.0, 36.5], "expected": 36.5}, {"input": [-82.0, 37.0], "expected": 37.0}, {"input": [-82.0, 37.5], "expected": 37.5}, {"input": [-82.0, 38.0], "expected": 38.0}, {"input": [-82.0, 38.5], "expected": 38.5}, {"input": [-82.0, 39.0], "expected": 39.0}, {"input": [-82.0, 39.5], "expected": 39.5}, {"input": [-82.0, 40.0], "expected": 40.0}, {"input": [-82.0, 40.5], "expected": 40.5}, {"input": [-82.0, 41.0], "expected": 41.0}, {"input": [-82.0, 41.5], "expected": 41.5}, {"input": [-82.0, 42.0], "expected": 42.0}, {"input": [-82.0, 42.5], "expected": 42.5}, {"input": [-82.0, 43.0], "expected": 43.0}, {"input": [-82.0, 43.5], "expected": 43.5}, {"input": [-82.0, 44.0], "expected": 44.0}, {"input": [-82.0, 44.5], "expected": 44.5}, {"input": [-82.0, 45.0], "expected": 45.0}, {"input": [-82.0, 45.5], "expected": 45.5}, {"input": [-82.0, 46.0], "expected": 46.0}, {"input": [-82.0, 46.5], "expected": 46.5}, {"input": [-82.0, 47.0], "expected": 47.0}, {"input": [-82.0, 47.5], "expected": 47.5}, {"input": [-82.0, 48.0], "expected": 48.0}, {"input": [-82.0, 48.5], "expected": 48.5}, {"input": [-82.0, 49.0], "expected": 49.0}, {"input": [-82.0, 49.5], "expected": 49.5}, {"input": [-82.0, 50.0], "expected": 50.0}, {"input": [-82.0, 50.5], "expected": 50.5}, {"input": [-82.0, 51.0], "expected": 51.0}, {"input": [-82.0, 51.5], "expected": 51.5}, {"input": [-82.0, 52.0], "expected": 52.0}, {"input": [-82.0, 52.5], "expected": 52.5}, {"input": [-82.0, 53.0], "expected": 53.0}, {"input": [-82.0, 53.5], "expected": 53.5}, {"input": [-82.0, 54.0], "expected": 54.0}, {"input": [-82.0, 54.5], "expected": 54.5}, {"input": [-82.0, 55.0], "expected": 55.0}, {"input": [-82.0, 55.5], "expected": 55.5}, {"input": [-82.0, 56.0], "expected": 56.0}, {"input": [-82.0, 56.5], "expected": 56.5}, {"input": [-82.0, 57.0], "expected": 57.0}, {"input": [-82.0, 57.5], "expected": 57.5}, {"input": [-82.0, 58.0], "expected": 58.0}, {"input": [-82.0, 58.5], "expected": 58.5}, {"input": [-82.0, 59.0], "expected": 59.0}, {"input": [-82.0, 59.5], "expected": 59.5}, {"input": [-82.0, 60.0], "expected": 60.0}, {"input": [-82.0, 60.5], "expected": 60.5}, {"input": [-82.0, 61.0], "expected": 61.0}, {"input": [-82.0, 61.5], "expected": 61.5}, {"input": [-82.0, 62.0], "expected": 62.0}, {"input": [-82.0, 62.5], "expected": 62.5}, {"input": [-82.0, 63.0], "expected": 63.0}, {"input": [-82.0, 63.5], "expected": 63.5}, {"input": [-82.0, 64.0], "expected": 64.0}, {"input": [-82.0, 64.5], "expected": 64.5}, {"input": [-82.0, 65.0], "expected": 65.0}, {"input": [-82.0, 65.5], "expected": 65.5}, {"input": [-82.0, 66.0], "expected": 66.0}, {"input": [-82.0, 66.5], "expected": 66.5}, {"input": [-82.0, 67.0], "expected": 67.0}, {"input": [-82.0, 67.5], "expected": 67.5}, {"input": [-82.0, 68.0], "expected": 68.0}, {"input": [-82.0, 68.5], "expected": 68.5}, {"input": [-82.0, 69.0], "expected": 69.0}, {"input": [-82.0, 69.5], "expected": 69.5}, {"input": [-82.0, 70.0], "expected": 70.0}, {"input": [-82.0, 70.5], "expected": 70.5}, {"input": [-82.0, 71.0], "expected": 71.0}, {"input": [-82.0, 71.5], "expected": 71.5}, {"input": [-82.0, 72.0], "expected": 72.0}, {"input": [-82.0, 72.5], "expected": 72.5}, {"input": [-82.0, 73.0], "expected": 73.0}, {"input": [-82.0, 73.5], "expected": 73.5}, {"input": [-82.0, 74.0], "expected": 74.0}, {"input": [-82.0, 74.5], "expected": 74.5}, {"input": [-82.0, 75.0], "expected": 75.0}, {"input": [-82.0, 75.5], "expected": 75.5}, {"input": [-82.0, 76.0], "expected": 76.0}, {"input": [-82.0, 76.5], "expected": 76.5}, {"input": [-82.0, 77.0], "expected": 77.0}, {"input": [-82.0, 77.5], "expected": 77.5}, {"input": [-82.0, 78.0], "expected": 78.0}, {"input": [-82.0, 78.5], "expected": 78.5}, {"input": [-82.0, 79.0], "expected": 79.0}, {"input": [-82.0, 79.5], "expected": 79.5}, {"input": [-82.0, 80.0], "expected": 80.0}, {"input": [-82.0, 80.5], "expected": 80.5}, {"input": [-82.0, 81.0], "expected": 81.0}, {"input": [-82.0, 81.5], "expected": 81.5}, {"input": [-82.0, 82.0], "expected": 82.0}, {"input": [-82.0, 82.5], "expected": 82.5}, {"input": [-82.0, 83.0], "expected": 83.0}, {"input": [-82.0, 83.5], "expected": 83.5}, {"input": [-82.0, 84.0], "expected": 84.0}, {"input": [-82.0, 84.5], "expected": 84.5}, {"input": [-82.0, 85.0], "expected": 85.0}, {"input": [-82.0, 85.5], "expected": 85.5}, {"input": [-82.0, 86.0], "expected": 86.0}, {"input": [-82.0, 86.5], "expected": 86.5}, {"input": [-82.0, 87.0], "expected": 87.0}, {"input": [-82.0, 87.5], "expected": 87.5}, {"input": [-82.0, 88.0], "expected": 88.0}, {"input": [-82.0, 88.5], "expected": 88.5}, {"input": [-82.0, 89.0], "expected": 89.0}, {"input": [-82.0, 89.5], "expected": 89.5}, {"input": [-82.0, 90.0], "expected": 90.0}, {"input": [-82.0, 90.5], "expected": 90.5}, {"input": [-82.0, 91.0], "expected": 91.0}, {"input": [-82.0, 91.5], "expected": 91.5}, {"input": [-82.0, 92.0], "expected": 92.0}, {"input": [-82.0, 92.5], "expected": 92.5}, {"input": [-82.0, 93.0], "expected": 93.0}, {"input": [-82.0, 93.5], "expected": 93.5}, {"input": [-82.0, 94.0], "expected": 94.0}, {"input": [-82.0, 94.5], "expected": 94.5}, {"input": [-82.0, 95.0], "expected": 95.0}, {"input": [-82.0, 95.5], "expected": 95.5}, {"input": [-82.0, 96.0], "expected": 96.0}, {"input": [-82.0, 96.5], "expected": 96.5}, {"input": [-82.0, 97.0], "expected": 97.0}, {"input": [-82.0, 97.5], "expected": 97.5}, {"input": [-82.0, 98.0], "expected": 98.0}, {"input": [-82.0, 98.5], "expected": 98.5}, {"input": [-82.0, 99.0], "expected": 99.0}, {"input": [-82.0, 99.5], "expected": 99.5}, {"input": [-81.5, -100.0], "expected": -81.49999999076255}, {"input": [-81.5, -99.5], "expected": -81.49999998477001}, {"input": [-81.5, -99.0], "expected": -81.49999997489}, {"input": [-81.5, -98.5], "expected": -81.49999995860063}, {"input": [-81.5, -98.0], "expected": -81.49999993174397}, {"input": [-81.5, -97.5], "expected": -81.49999988746484}, {"input": [-81.5, -97.0], "expected": -81.49999981446088}, {"input": [-81.5, -96.5], "expected": -81.49999969409772}, {"input": [-81.5, -96.0], "expected": -81.49999949565246}, {"input": [-81.5, -95.5], "expected": -81.49999916847163}, {"input": [-81.5, -95.0], "expected": -81.49999862904185}, {"input": [-81.5, -94.5], "expected": -81.49999773967315}, {"input": [-81.5, -94.0], "expected": -81.49999627335377}, {"input": [-81.5, -93.5], "expected": -81.49999385580652}, {"input": [-81.5, -93.0], "expected": -81.49998986995772}, {"input": [-81.5, -92.5], "expected": -81.49998329843868}, {"input": [-81.5, -92.0], "expected": -81.49997246392977}, {"input": [-81.5, -91.5], "expected": -81.49995460110078}, {"input": [-81.5, -91.0], "expected": -81.49992515097136}, {"input": [-81.5, -90.5], "expected": -81.49987659781027}, {"input": [-81.5, -90.0], "expected": -81.49979655232787}, {"input": [-81.5, -89.5], "expected": -81.4996645936271}, {"input": [-81.5, -89.0], "expected": -81.49944706852465}, {"input": [-81.5, -88.5], "expected": -81.49908853354623}, {"input": [-81.5, -88.0], "expected": -81.49849768984025}, {"input": [-81.5, -87.5], "expected": -81.49752431486228}, {"input": [-81.5, -87.0], "expected": -81.49592155672943}, {"input": [-81.5, -86.5], "expected": -81.49328465151088}, {"input": [-81.5, -86.0], "expected": -81.4889522551514}, {"input": [-81.5, -85.5], "expected": -81.4818500720822}, {"input": [-81.5, -85.0], "expected": -81.47024958172737}, {"input": [-81.5, -84.5], "expected": -81.45141264842626}, {"input": [-81.5, -84.0], "expected": -81.42111026570745}, {"input": [-81.5, -83.5], "expected": -81.37307198895702}, {"input": [-81.5, -83.0], "expected": -81.29858672201725}, {"input": [-81.5, -82.5], "expected": -81.18673831248178}, {"input": [-81.5, -82.0], "expected": -81.0259230158199}, {"input": [-81.5, -81.5], "expected": -80.80685281944005}, {"input": [-81.5, -81.0], "expected": -80.5259230158199}, {"input": [-81.5, -80.5], "expected": -80.18673831248178}, {"input": [-81.5, -80.0], "expected": -79.79858672201725}, {"input": [-81.5, -79.5], "expected": -79.37307198895702}, {"input": [-81.5, -79.0], "expected": -78.92111026570745}, {"input": [-81.5, -78.5], "expected": -78.45141264842626}, {"input": [-81.5, -78.0], "expected": -77.97024958172737}, {"input": [-81.5, -77.5], "expected": -77.4818500720822}, {"input": [-81.5, -77.0], "expected": -76.9889522551514}, {"input": [-81.5, -76.5], "expected": -76.49328465151088}, {"input": [-81.5, -76.0], "expected": -75.99592155672943}, {"input": [-81.5, -75.5], "expected": -75.49752431486228}, {"input": [-81.5, -75.0], "expected": -74.99849768984025}, {"input": [-81.5, -74.5], "expected": -74.49908853354623}, {"input": [-81.5, -74.0], "expected": -73.99944706852465}, {"input": [-81.5, -73.5], "expected": -73.4996645936271}, {"input": [-81.5, -73.0], "expected": -72.99979655232787}, {"input": [-81.5, -72.5], "expected": -72.49987659781027}, {"input": [-81.5, -72.0], "expected": -71.99992515097136}, {"input": [-81.5, -71.5], "expected": -71.49995460110078}, {"input": [-81.5, -71.0], "expected": -70.99997246392977}, {"input": [-81.5, -70.5], "expected": -70.49998329843868}, {"input": [-81.5, -70.0], "expected": -69.99998986995772}, {"input": [-81.5, -69.5], "expected": -69.49999385580652}, {"input": [-81.5, -69.0], "expected": -68.99999627335377}, {"input": [-81.5, -68.5], "expected": -68.49999773967315}, {"input": [-81.5, -68.0], "expected": -67.99999862904185}, {"input": [-81.5, -67.5], "expected": -67.49999916847163}, {"input": [-81.5, -67.0], "expected": -66.99999949565246}, {"input": [-81.5, -66.5], "expected": -66.49999969409772}, {"input": [-81.5, -66.0], "expected": -65.99999981446088}, {"input": [-81.5, -65.5], "expected": -65.49999988746484}, {"input": [-81.5, -65.0], "expected": -64.99999993174397}, {"input": [-81.5, -64.5], "expected": -64.49999995860063}, {"input": [-81.5, -64.0], "expected": -63.99999997489001}, {"input": [-81.5, -63.5], "expected": -63.49999998477002}, {"input": [-81.5, -63.0], "expected": -62.999999990762554}, {"input": [-81.5, -62.5], "expected": -62.49999999439721}, {"input": [-81.5, -62.0], "expected": -61.99999999660173}, {"input": [-81.5, -61.5], "expected": -61.49999999793884}, {"input": [-81.5, -61.0], "expected": -60.99999999874985}, {"input": [-81.5, -60.5], "expected": -60.499999999241744}, {"input": [-81.5, -60.0], "expected": -59.999999999540094}, {"input": [-81.5, -59.5], "expected": -59.499999999721055}, {"input": [-81.5, -59.0], "expected": -58.99999999983081}, {"input": [-81.5, -58.5], "expected": -58.49999999989738}, {"input": [-81.5, -58.0], "expected": -57.99999999993776}, {"input": [-81.5, -57.5], "expected": -57.49999999996225}, {"input": [-81.5, -57.0], "expected": -56.9999999999771}, {"input": [-81.5, -56.5], "expected": -56.49999999998611}, {"input": [-81.5, -56.0], "expected": -55.99999999999158}, {"input": [-81.5, -55.5], "expected": -55.49999999999489}, {"input": [-81.5, -55.0], "expected": -54.9999999999969}, {"input": [-81.5, -54.5], "expected": -54.49999999999812}, {"input": [-81.5, -54.0], "expected": -53.99999999999886}, {"input": [-81.5, -53.5], "expected": -53.49999999999931}, {"input": [-81.5, -53.0], "expected": -52.99999999999958}, {"input": [-81.5, -52.5], "expected": -52.499999999999744}, {"input": [-81.5, -52.0], "expected": -51.999999999999844}, {"input": [-81.5, -51.5], "expected": -51.49999999999991}, {"input": [-81.5, -51.0], "expected": -50.99999999999994}, {"input": [-81.5, -50.5], "expected": -50.499999999999964}, {"input": [-81.5, -50.0], "expected": -49.99999999999998}, {"input": [-81.5, -49.5], "expected": -49.499999999999986}, {"input": [-81.5, -49.0], "expected": -48.99999999999999}, {"input": [-81.5, -48.5], "expected": -48.49999999999999}, {"input": [-81.5, -48.0], "expected": -48.0}, {"input": [-81.5, -47.5], "expected": -47.5}, {"input": [-81.5, -47.0], "expected": -47.0}, {"input": [-81.5, -46.5], "expected": -46.5}, {"input": [-81.5, -46.0], "expected": -46.0}, {"input": [-81.5, -45.5], "expected": -45.5}, {"input": [-81.5, -45.0], "expected": -45.0}, {"input": [-81.5, -44.5], "expected": -44.5}, {"input": [-81.5, -44.0], "expected": -44.0}, {"input": [-81.5, -43.5], "expected": -43.5}, {"input": [-81.5, -43.0], "expected": -43.0}, {"input": [-81.5, -42.5], "expected": -42.5}, {"input": [-81.5, -42.0], "expected": -42.0}, {"input": [-81.5, -41.5], "expected": -41.5}, {"input": [-81.5, -41.0], "expected": -41.0}, {"input": [-81.5, -40.5], "expected": -40.5}, {"input": [-81.5, -40.0], "expected": -40.0}, {"input": [-81.5, -39.5], "expected": -39.5}, {"input": [-81.5, -39.0], "expected": -39.0}, {"input": [-81.5, -38.5], "expected": -38.5}, {"input": [-81.5, -38.0], "expected": -38.0}, {"input": [-81.5, -37.5], "expected": -37.5}, {"input": [-81.5, -37.0], "expected": -37.0}, {"input": [-81.5, -36.5], "expected": -36.5}, {"input": [-81.5, -36.0], "expected": -36.0}, {"input": [-81.5, -35.5], "expected": -35.5}, {"input": [-81.5, -35.0], "expected": -35.0}, {"input": [-81.5, -34.5], "expected": -34.5}, {"input": [-81.5, -34.0], "expected": -34.0}, {"input": [-81.5, -33.5], "expected": -33.5}, {"input": [-81.5, -33.0], "expected": -33.0}, {"input": [-81.5, -32.5], "expected": -32.5}, {"input": [-81.5, -32.0], "expected": -32.0}, {"input": [-81.5, -31.5], "expected": -31.5}, {"input": [-81.5, -31.0], "expected": -31.0}, {"input": [-81.5, -30.5], "expected": -30.5}, {"input": [-81.5, -30.0], "expected": -30.0}, {"input": [-81.5, -29.5], "expected": -29.5}, {"input": [-81.5, -29.0], "expected": -29.0}, {"input": [-81.5, -28.5], "expected": -28.5}, {"input": [-81.5, -28.0], "expected": -28.0}, {"input": [-81.5, -27.5], "expected": -27.5}, {"input": [-81.5, -27.0], "expected": -27.0}, {"input": [-81.5, -26.5], "expected": -26.5}, {"input": [-81.5, -26.0], "expected": -26.0}, {"input": [-81.5, -25.5], "expected": -25.5}, {"input": [-81.5, -25.0], "expected": -25.0}, {"input": [-81.5, -24.5], "expected": -24.5}, {"input": [-81.5, -24.0], "expected": -24.0}, {"input": [-81.5, -23.5], "expected": -23.5}, {"input": [-81.5, -23.0], "expected": -23.0}, {"input": [-81.5, -22.5], "expected": -22.5}, {"input": [-81.5, -22.0], "expected": -22.0}, {"input": [-81.5, -21.5], "expected": -21.5}, {"input": [-81.5, -21.0], "expected": -21.0}, {"input": [-81.5, -20.5], "expected": -20.5}, {"input": [-81.5, -20.0], "expected": -20.0}, {"input": [-81.5, -19.5], "expected": -19.5}, {"input": [-81.5, -19.0], "expected": -19.0}, {"input": [-81.5, -18.5], "expected": -18.5}, {"input": [-81.5, -18.0], "expected": -18.0}, {"input": [-81.5, -17.5], "expected": -17.5}, {"input": [-81.5, -17.0], "expected": -17.0}, {"input": [-81.5, -16.5], "expected": -16.5}, {"input": [-81.5, -16.0], "expected": -16.0}, {"input": [-81.5, -15.5], "expected": -15.5}, {"input": [-81.5, -15.0], "expected": -15.0}, {"input": [-81.5, -14.5], "expected": -14.5}, {"input": [-81.5, -14.0], "expected": -14.0}, {"input": [-81.5, -13.5], "expected": -13.5}, {"input": [-81.5, -13.0], "expected": -13.0}, {"input": [-81.5, -12.5], "expected": -12.5}, {"input": [-81.5, -12.0], "expected": -12.0}, {"input": [-81.5, -11.5], "expected": -11.5}, {"input": [-81.5, -11.0], "expected": -11.0}, {"input": [-81.5, -10.5], "expected": -10.5}, {"input": [-81.5, -10.0], "expected": -10.0}, {"input": [-81.5, -9.5], "expected": -9.5}, {"input": [-81.5, -9.0], "expected": -9.0}, {"input": [-81.5, -8.5], "expected": -8.5}, {"input": [-81.5, -8.0], "expected": -8.0}, {"input": [-81.5, -7.5], "expected": -7.5}, {"input": [-81.5, -7.0], "expected": -7.0}, {"input": [-81.5, -6.5], "expected": -6.5}, {"input": [-81.5, -6.0], "expected": -6.0}, {"input": [-81.5, -5.5], "expected": -5.5}, {"input": [-81.5, -5.0], "expected": -5.0}, {"input": [-81.5, -4.5], "expected": -4.5}, {"input": [-81.5, -4.0], "expected": -4.0}, {"input": [-81.5, -3.5], "expected": -3.5}, {"input": [-81.5, -3.0], "expected": -3.0}, {"input": [-81.5, -2.5], "expected": -2.5}, {"input": [-81.5, -2.0], "expected": -2.0}, {"input": [-81.5, -1.5], "expected": -1.5}, {"input": [-81.5, -1.0], "expected": -1.0}, {"input": [-81.5, -0.5], "expected": -0.5}, {"input": [-81.5, 0.0], "expected": 4.027167792140633e-36}, {"input": [-81.5, 0.5], "expected": 0.5}, {"input": [-81.5, 1.0], "expected": 1.0}, {"input": [-81.5, 1.5], "expected": 1.5}, {"input": [-81.5, 2.0], "expected": 2.0}, {"input": [-81.5, 2.5], "expected": 2.5}, {"input": [-81.5, 3.0], "expected": 3.0}, {"input": [-81.5, 3.5], "expected": 3.5}, {"input": [-81.5, 4.0], "expected": 4.0}, {"input": [-81.5, 4.5], "expected": 4.5}, {"input": [-81.5, 5.0], "expected": 5.0}, {"input": [-81.5, 5.5], "expected": 5.5}, {"input": [-81.5, 6.0], "expected": 6.0}, {"input": [-81.5, 6.5], "expected": 6.5}, {"input": [-81.5, 7.0], "expected": 7.0}, {"input": [-81.5, 7.5], "expected": 7.5}, {"input": [-81.5, 8.0], "expected": 8.0}, {"input": [-81.5, 8.5], "expected": 8.5}, {"input": [-81.5, 9.0], "expected": 9.0}, {"input": [-81.5, 9.5], "expected": 9.5}, {"input": [-81.5, 10.0], "expected": 10.0}, {"input": [-81.5, 10.5], "expected": 10.5}, {"input": [-81.5, 11.0], "expected": 11.0}, {"input": [-81.5, 11.5], "expected": 11.5}, {"input": [-81.5, 12.0], "expected": 12.0}, {"input": [-81.5, 12.5], "expected": 12.5}, {"input": [-81.5, 13.0], "expected": 13.0}, {"input": [-81.5, 13.5], "expected": 13.5}, {"input": [-81.5, 14.0], "expected": 14.0}, {"input": [-81.5, 14.5], "expected": 14.5}, {"input": [-81.5, 15.0], "expected": 15.0}, {"input": [-81.5, 15.5], "expected": 15.5}, {"input": [-81.5, 16.0], "expected": 16.0}, {"input": [-81.5, 16.5], "expected": 16.5}, {"input": [-81.5, 17.0], "expected": 17.0}, {"input": [-81.5, 17.5], "expected": 17.5}, {"input": [-81.5, 18.0], "expected": 18.0}, {"input": [-81.5, 18.5], "expected": 18.5}, {"input": [-81.5, 19.0], "expected": 19.0}, {"input": [-81.5, 19.5], "expected": 19.5}, {"input": [-81.5, 20.0], "expected": 20.0}, {"input": [-81.5, 20.5], "expected": 20.5}, {"input": [-81.5, 21.0], "expected": 21.0}, {"input": [-81.5, 21.5], "expected": 21.5}, {"input": [-81.5, 22.0], "expected": 22.0}, {"input": [-81.5, 22.5], "expected": 22.5}, {"input": [-81.5, 23.0], "expected": 23.0}, {"input": [-81.5, 23.5], "expected": 23.5}, {"input": [-81.5, 24.0], "expected": 24.0}, {"input": [-81.5, 24.5], "expected": 24.5}, {"input": [-81.5, 25.0], "expected": 25.0}, {"input": [-81.5, 25.5], "expected": 25.5}, {"input": [-81.5, 26.0], "expected": 26.0}, {"input": [-81.5, 26.5], "expected": 26.5}, {"input": [-81.5, 27.0], "expected": 27.0}, {"input": [-81.5, 27.5], "expected": 27.5}, {"input": [-81.5, 28.0], "expected": 28.0}, {"input": [-81.5, 28.5], "expected": 28.5}, {"input": [-81.5, 29.0], "expected": 29.0}, {"input": [-81.5, 29.5], "expected": 29.5}, {"input": [-81.5, 30.0], "expected": 30.0}, {"input": [-81.5, 30.5], "expected": 30.5}, {"input": [-81.5, 31.0], "expected": 31.0}, {"input": [-81.5, 31.5], "expected": 31.5}, {"input": [-81.5, 32.0], "expected": 32.0}, {"input": [-81.5, 32.5], "expected": 32.5}, {"input": [-81.5, 33.0], "expected": 33.0}, {"input": [-81.5, 33.5], "expected": 33.5}, {"input": [-81.5, 34.0], "expected": 34.0}, {"input": [-81.5, 34.5], "expected": 34.5}, {"input": [-81.5, 35.0], "expected": 35.0}, {"input": [-81.5, 35.5], "expected": 35.5}, {"input": [-81.5, 36.0], "expected": 36.0}, {"input": [-81.5, 36.5], "expected": 36.5}, {"input": [-81.5, 37.0], "expected": 37.0}, {"input": [-81.5, 37.5], "expected": 37.5}, {"input": [-81.5, 38.0], "expected": 38.0}, {"input": [-81.5, 38.5], "expected": 38.5}, {"input": [-81.5, 39.0], "expected": 39.0}, {"input": [-81.5, 39.5], "expected": 39.5}, {"input": [-81.5, 40.0], "expected": 40.0}, {"input": [-81.5, 40.5], "expected": 40.5}, {"input": [-81.5, 41.0], "expected": 41.0}, {"input": [-81.5, 41.5], "expected": 41.5}, {"input": [-81.5, 42.0], "expected": 42.0}, {"input": [-81.5, 42.5], "expected": 42.5}, {"input": [-81.5, 43.0], "expected": 43.0}, {"input": [-81.5, 43.5], "expected": 43.5}, {"input": [-81.5, 44.0], "expected": 44.0}, {"input": [-81.5, 44.5], "expected": 44.5}, {"input": [-81.5, 45.0], "expected": 45.0}, {"input": [-81.5, 45.5], "expected": 45.5}, {"input": [-81.5, 46.0], "expected": 46.0}, {"input": [-81.5, 46.5], "expected": 46.5}, {"input": [-81.5, 47.0], "expected": 47.0}, {"input": [-81.5, 47.5], "expected": 47.5}, {"input": [-81.5, 48.0], "expected": 48.0}, {"input": [-81.5, 48.5], "expected": 48.5}, {"input": [-81.5, 49.0], "expected": 49.0}, {"input": [-81.5, 49.5], "expected": 49.5}, {"input": [-81.5, 50.0], "expected": 50.0}, {"input": [-81.5, 50.5], "expected": 50.5}, {"input": [-81.5, 51.0], "expected": 51.0}, {"input": [-81.5, 51.5], "expected": 51.5}, {"input": [-81.5, 52.0], "expected": 52.0}, {"input": [-81.5, 52.5], "expected": 52.5}, {"input": [-81.5, 53.0], "expected": 53.0}, {"input": [-81.5, 53.5], "expected": 53.5}, {"input": [-81.5, 54.0], "expected": 54.0}, {"input": [-81.5, 54.5], "expected": 54.5}, {"input": [-81.5, 55.0], "expected": 55.0}, {"input": [-81.5, 55.5], "expected": 55.5}, {"input": [-81.5, 56.0], "expected": 56.0}, {"input": [-81.5, 56.5], "expected": 56.5}, {"input": [-81.5, 57.0], "expected": 57.0}, {"input": [-81.5, 57.5], "expected": 57.5}, {"input": [-81.5, 58.0], "expected": 58.0}, {"input": [-81.5, 58.5], "expected": 58.5}, {"input": [-81.5, 59.0], "expected": 59.0}, {"input": [-81.5, 59.5], "expected": 59.5}, {"input": [-81.5, 60.0], "expected": 60.0}, {"input": [-81.5, 60.5], "expected": 60.5}, {"input": [-81.5, 61.0], "expected": 61.0}, {"input": [-81.5, 61.5], "expected": 61.5}, {"input": [-81.5, 62.0], "expected": 62.0}, {"input": [-81.5, 62.5], "expected": 62.5}, {"input": [-81.5, 63.0], "expected": 63.0}, {"input": [-81.5, 63.5], "expected": 63.5}, {"input": [-81.5, 64.0], "expected": 64.0}, {"input": [-81.5, 64.5], "expected": 64.5}, {"input": [-81.5, 65.0], "expected": 65.0}, {"input": [-81.5, 65.5], "expected": 65.5}, {"input": [-81.5, 66.0], "expected": 66.0}, {"input": [-81.5, 66.5], "expected": 66.5}, {"input": [-81.5, 67.0], "expected": 67.0}, {"input": [-81.5, 67.5], "expected": 67.5}, {"input": [-81.5, 68.0], "expected": 68.0}, {"input": [-81.5, 68.5], "expected": 68.5}, {"input": [-81.5, 69.0], "expected": 69.0}, {"input": [-81.5, 69.5], "expected": 69.5}, {"input": [-81.5, 70.0], "expected": 70.0}, {"input": [-81.5, 70.5], "expected": 70.5}, {"input": [-81.5, 71.0], "expected": 71.0}, {"input": [-81.5, 71.5], "expected": 71.5}, {"input": [-81.5, 72.0], "expected": 72.0}, {"input": [-81.5, 72.5], "expected": 72.5}, {"input": [-81.5, 73.0], "expected": 73.0}, {"input": [-81.5, 73.5], "expected": 73.5}, {"input": [-81.5, 74.0], "expected": 74.0}, {"input": [-81.5, 74.5], "expected": 74.5}, {"input": [-81.5, 75.0], "expected": 75.0}, {"input": [-81.5, 75.5], "expected": 75.5}, {"input": [-81.5, 76.0], "expected": 76.0}, {"input": [-81.5, 76.5], "expected": 76.5}, {"input": [-81.5, 77.0], "expected": 77.0}, {"input": [-81.5, 77.5], "expected": 77.5}, {"input": [-81.5, 78.0], "expected": 78.0}, {"input": [-81.5, 78.5], "expected": 78.5}, {"input": [-81.5, 79.0], "expected": 79.0}, {"input": [-81.5, 79.5], "expected": 79.5}, {"input": [-81.5, 80.0], "expected": 80.0}, {"input": [-81.5, 80.5], "expected": 80.5}, {"input": [-81.5, 81.0], "expected": 81.0}, {"input": [-81.5, 81.5], "expected": 81.5}, {"input": [-81.5, 82.0], "expected": 82.0}, {"input": [-81.5, 82.5], "expected": 82.5}, {"input": [-81.5, 83.0], "expected": 83.0}, {"input": [-81.5, 83.5], "expected": 83.5}, {"input": [-81.5, 84.0], "expected": 84.0}, {"input": [-81.5, 84.5], "expected": 84.5}, {"input": [-81.5, 85.0], "expected": 85.0}, {"input": [-81.5, 85.5], "expected": 85.5}, {"input": [-81.5, 86.0], "expected": 86.0}, {"input": [-81.5, 86.5], "expected": 86.5}, {"input": [-81.5, 87.0], "expected": 87.0}, {"input": [-81.5, 87.5], "expected": 87.5}, {"input": [-81.5, 88.0], "expected": 88.0}, {"input": [-81.5, 88.5], "expected": 88.5}, {"input": [-81.5, 89.0], "expected": 89.0}, {"input": [-81.5, 89.5], "expected": 89.5}, {"input": [-81.5, 90.0], "expected": 90.0}, {"input": [-81.5, 90.5], "expected": 90.5}, {"input": [-81.5, 91.0], "expected": 91.0}, {"input": [-81.5, 91.5], "expected": 91.5}, {"input": [-81.5, 92.0], "expected": 92.0}, {"input": [-81.5, 92.5], "expected": 92.5}, {"input": [-81.5, 93.0], "expected": 93.0}, {"input": [-81.5, 93.5], "expected": 93.5}, {"input": [-81.5, 94.0], "expected": 94.0}, {"input": [-81.5, 94.5], "expected": 94.5}, {"input": [-81.5, 95.0], "expected": 95.0}, {"input": [-81.5, 95.5], "expected": 95.5}, {"input": [-81.5, 96.0], "expected": 96.0}, {"input": [-81.5, 96.5], "expected": 96.5}, {"input": [-81.5, 97.0], "expected": 97.0}, {"input": [-81.5, 97.5], "expected": 97.5}, {"input": [-81.5, 98.0], "expected": 98.0}, {"input": [-81.5, 98.5], "expected": 98.5}, {"input": [-81.5, 99.0], "expected": 99.0}, {"input": [-81.5, 99.5], "expected": 99.5}, {"input": [-81.0, -100.0], "expected": -80.9999999943972}, {"input": [-81.0, -99.5], "expected": -80.99999999076255}, {"input": [-81.0, -99.0], "expected": -80.99999998477001}, {"input": [-81.0, -98.5], "expected": -80.99999997489}, {"input": [-81.0, -98.0], "expected": -80.99999995860063}, {"input": [-81.0, -97.5], "expected": -80.99999993174397}, {"input": [-81.0, -97.0], "expected": -80.99999988746484}, {"input": [-81.0, -96.5], "expected": -80.99999981446088}, {"input": [-81.0, -96.0], "expected": -80.99999969409772}, {"input": [-81.0, -95.5], "expected": -80.99999949565246}, {"input": [-81.0, -95.0], "expected": -80.99999916847163}, {"input": [-81.0, -94.5], "expected": -80.99999862904185}, {"input": [-81.0, -94.0], "expected": -80.99999773967315}, {"input": [-81.0, -93.5], "expected": -80.99999627335377}, {"input": [-81.0, -93.0], "expected": -80.99999385580652}, {"input": [-81.0, -92.5], "expected": -80.99998986995772}, {"input": [-81.0, -92.0], "expected": -80.99998329843868}, {"input": [-81.0, -91.5], "expected": -80.99997246392977}, {"input": [-81.0, -91.0], "expected": -80.99995460110078}, {"input": [-81.0, -90.5], "expected": -80.99992515097136}, {"input": [-81.0, -90.0], "expected": -80.99987659781027}, {"input": [-81.0, -89.5], "expected": -80.99979655232787}, {"input": [-81.0, -89.0], "expected": -80.9996645936271}, {"input": [-81.0, -88.5], "expected": -80.99944706852465}, {"input": [-81.0, -88.0], "expected": -80.99908853354623}, {"input": [-81.0, -87.5], "expected": -80.99849768984025}, {"input": [-81.0, -87.0], "expected": -80.99752431486228}, {"input": [-81.0, -86.5], "expected": -80.99592155672943}, {"input": [-81.0, -86.0], "expected": -80.99328465151088}, {"input": [-81.0, -85.5], "expected": -80.9889522551514}, {"input": [-81.0, -85.0], "expected": -80.9818500720822}, {"input": [-81.0, -84.5], "expected": -80.97024958172737}, {"input": [-81.0, -84.0], "expected": -80.95141264842626}, {"input": [-81.0, -83.5], "expected": -80.92111026570745}, {"input": [-81.0, -83.0], "expected": -80.87307198895702}, {"input": [-81.0, -82.5], "expected": -80.79858672201725}, {"input": [-81.0, -82.0], "expected": -80.68673831248178}, {"input": [-81.0, -81.5], "expected": -80.5259230158199}, {"input": [-81.0, -81.0], "expected": -80.30685281944005}, {"input": [-81.0, -80.5], "expected": -80.0259230158199}, {"input": [-81.0, -80.0], "expected": -79.68673831248178}, {"input": [-81.0, -79.5], "expected": -79.29858672201725}, {"input": [-81.0, -79.0], "expected": -78.87307198895702}, {"input": [-81.0, -78.5], "expected": -78.42111026570745}, {"input": [-81.0, -78.0], "expected": -77.95141264842626}, {"input": [-81.0, -77.5], "expected": -77.47024958172737}, {"input": [-81.0, -77.0], "expected": -76.9818500720822}, {"input": [-81.0, -76.5], "expected": -76.4889522551514}, {"input": [-81.0, -76.0], "expected": -75.99328465151088}, {"input": [-81.0, -75.5], "expected": -75.49592155672943}, {"input": [-81.0, -75.0], "expected": -74.99752431486228}, {"input": [-81.0, -74.5], "expected": -74.49849768984025}, {"input": [-81.0, -74.0], "expected": -73.99908853354623}, {"input": [-81.0, -73.5], "expected": -73.49944706852465}, {"input": [-81.0, -73.0], "expected": -72.9996645936271}, {"input": [-81.0, -72.5], "expected": -72.49979655232787}, {"input": [-81.0, -72.0], "expected": -71.99987659781027}, {"input": [-81.0, -71.5], "expected": -71.49992515097136}, {"input": [-81.0, -71.0], "expected": -70.99995460110078}, {"input": [-81.0, -70.5], "expected": -70.49997246392977}, {"input": [-81.0, -70.0], "expected": -69.99998329843868}, {"input": [-81.0, -69.5], "expected": -69.49998986995772}, {"input": [-81.0, -69.0], "expected": -68.99999385580652}, {"input": [-81.0, -68.5], "expected": -68.49999627335377}, {"input": [-81.0, -68.0], "expected": -67.99999773967315}, {"input": [-81.0, -67.5], "expected": -67.49999862904185}, {"input": [-81.0, -67.0], "expected": -66.99999916847163}, {"input": [-81.0, -66.5], "expected": -66.49999949565246}, {"input": [-81.0, -66.0], "expected": -65.99999969409772}, {"input": [-81.0, -65.5], "expected": -65.49999981446088}, {"input": [-81.0, -65.0], "expected": -64.99999988746484}, {"input": [-81.0, -64.5], "expected": -64.49999993174397}, {"input": [-81.0, -64.0], "expected": -63.999999958600625}, {"input": [-81.0, -63.5], "expected": -63.49999997489001}, {"input": [-81.0, -63.0], "expected": -62.99999998477002}, {"input": [-81.0, -62.5], "expected": -62.499999990762554}, {"input": [-81.0, -62.0], "expected": -61.99999999439721}, {"input": [-81.0, -61.5], "expected": -61.49999999660173}, {"input": [-81.0, -61.0], "expected": -60.99999999793884}, {"input": [-81.0, -60.5], "expected": -60.49999999874985}, {"input": [-81.0, -60.0], "expected": -59.999999999241744}, {"input": [-81.0, -59.5], "expected": -59.499999999540094}, {"input": [-81.0, -59.0], "expected": -58.999999999721055}, {"input": [-81.0, -58.5], "expected": -58.49999999983081}, {"input": [-81.0, -58.0], "expected": -57.99999999989738}, {"input": [-81.0, -57.5], "expected": -57.49999999993776}, {"input": [-81.0, -57.0], "expected": -56.99999999996225}, {"input": [-81.0, -56.5], "expected": -56.4999999999771}, {"input": [-81.0, -56.0], "expected": -55.99999999998611}, {"input": [-81.0, -55.5], "expected": -55.49999999999158}, {"input": [-81.0, -55.0], "expected": -54.99999999999489}, {"input": [-81.0, -54.5], "expected": -54.4999999999969}, {"input": [-81.0, -54.0], "expected": -53.99999999999812}, {"input": [-81.0, -53.5], "expected": -53.49999999999886}, {"input": [-81.0, -53.0], "expected": -52.99999999999931}, {"input": [-81.0, -52.5], "expected": -52.49999999999958}, {"input": [-81.0, -52.0], "expected": -51.999999999999744}, {"input": [-81.0, -51.5], "expected": -51.499999999999844}, {"input": [-81.0, -51.0], "expected": -50.99999999999991}, {"input": [-81.0, -50.5], "expected": -50.49999999999994}, {"input": [-81.0, -50.0], "expected": -49.999999999999964}, {"input": [-81.0, -49.5], "expected": -49.49999999999998}, {"input": [-81.0, -49.0], "expected": -48.999999999999986}, {"input": [-81.0, -48.5], "expected": -48.49999999999999}, {"input": [-81.0, -48.0], "expected": -47.99999999999999}, {"input": [-81.0, -47.5], "expected": -47.5}, {"input": [-81.0, -47.0], "expected": -47.0}, {"input": [-81.0, -46.5], "expected": -46.5}, {"input": [-81.0, -46.0], "expected": -46.0}, {"input": [-81.0, -45.5], "expected": -45.5}, {"input": [-81.0, -45.0], "expected": -45.0}, {"input": [-81.0, -44.5], "expected": -44.5}, {"input": [-81.0, -44.0], "expected": -44.0}, {"input": [-81.0, -43.5], "expected": -43.5}, {"input": [-81.0, -43.0], "expected": -43.0}, {"input": [-81.0, -42.5], "expected": -42.5}, {"input": [-81.0, -42.0], "expected": -42.0}, {"input": [-81.0, -41.5], "expected": -41.5}, {"input": [-81.0, -41.0], "expected": -41.0}, {"input": [-81.0, -40.5], "expected": -40.5}, {"input": [-81.0, -40.0], "expected": -40.0}, {"input": [-81.0, -39.5], "expected": -39.5}, {"input": [-81.0, -39.0], "expected": -39.0}, {"input": [-81.0, -38.5], "expected": -38.5}, {"input": [-81.0, -38.0], "expected": -38.0}, {"input": [-81.0, -37.5], "expected": -37.5}, {"input": [-81.0, -37.0], "expected": -37.0}, {"input": [-81.0, -36.5], "expected": -36.5}, {"input": [-81.0, -36.0], "expected": -36.0}, {"input": [-81.0, -35.5], "expected": -35.5}, {"input": [-81.0, -35.0], "expected": -35.0}, {"input": [-81.0, -34.5], "expected": -34.5}, {"input": [-81.0, -34.0], "expected": -34.0}, {"input": [-81.0, -33.5], "expected": -33.5}, {"input": [-81.0, -33.0], "expected": -33.0}, {"input": [-81.0, -32.5], "expected": -32.5}, {"input": [-81.0, -32.0], "expected": -32.0}, {"input": [-81.0, -31.5], "expected": -31.5}, {"input": [-81.0, -31.0], "expected": -31.0}, {"input": [-81.0, -30.5], "expected": -30.5}, {"input": [-81.0, -30.0], "expected": -30.0}, {"input": [-81.0, -29.5], "expected": -29.5}, {"input": [-81.0, -29.0], "expected": -29.0}, {"input": [-81.0, -28.5], "expected": -28.5}, {"input": [-81.0, -28.0], "expected": -28.0}, {"input": [-81.0, -27.5], "expected": -27.5}, {"input": [-81.0, -27.0], "expected": -27.0}, {"input": [-81.0, -26.5], "expected": -26.5}, {"input": [-81.0, -26.0], "expected": -26.0}, {"input": [-81.0, -25.5], "expected": -25.5}, {"input": [-81.0, -25.0], "expected": -25.0}, {"input": [-81.0, -24.5], "expected": -24.5}, {"input": [-81.0, -24.0], "expected": -24.0}, {"input": [-81.0, -23.5], "expected": -23.5}, {"input": [-81.0, -23.0], "expected": -23.0}, {"input": [-81.0, -22.5], "expected": -22.5}, {"input": [-81.0, -22.0], "expected": -22.0}, {"input": [-81.0, -21.5], "expected": -21.5}, {"input": [-81.0, -21.0], "expected": -21.0}, {"input": [-81.0, -20.5], "expected": -20.5}, {"input": [-81.0, -20.0], "expected": -20.0}, {"input": [-81.0, -19.5], "expected": -19.5}, {"input": [-81.0, -19.0], "expected": -19.0}, {"input": [-81.0, -18.5], "expected": -18.5}, {"input": [-81.0, -18.0], "expected": -18.0}, {"input": [-81.0, -17.5], "expected": -17.5}, {"input": [-81.0, -17.0], "expected": -17.0}, {"input": [-81.0, -16.5], "expected": -16.5}, {"input": [-81.0, -16.0], "expected": -16.0}, {"input": [-81.0, -15.5], "expected": -15.5}, {"input": [-81.0, -15.0], "expected": -15.0}, {"input": [-81.0, -14.5], "expected": -14.5}, {"input": [-81.0, -14.0], "expected": -14.0}, {"input": [-81.0, -13.5], "expected": -13.5}, {"input": [-81.0, -13.0], "expected": -13.0}, {"input": [-81.0, -12.5], "expected": -12.5}, {"input": [-81.0, -12.0], "expected": -12.0}, {"input": [-81.0, -11.5], "expected": -11.5}, {"input": [-81.0, -11.0], "expected": -11.0}, {"input": [-81.0, -10.5], "expected": -10.5}, {"input": [-81.0, -10.0], "expected": -10.0}, {"input": [-81.0, -9.5], "expected": -9.5}, {"input": [-81.0, -9.0], "expected": -9.0}, {"input": [-81.0, -8.5], "expected": -8.5}, {"input": [-81.0, -8.0], "expected": -8.0}, {"input": [-81.0, -7.5], "expected": -7.5}, {"input": [-81.0, -7.0], "expected": -7.0}, {"input": [-81.0, -6.5], "expected": -6.5}, {"input": [-81.0, -6.0], "expected": -6.0}, {"input": [-81.0, -5.5], "expected": -5.5}, {"input": [-81.0, -5.0], "expected": -5.0}, {"input": [-81.0, -4.5], "expected": -4.5}, {"input": [-81.0, -4.0], "expected": -4.0}, {"input": [-81.0, -3.5], "expected": -3.5}, {"input": [-81.0, -3.0], "expected": -3.0}, {"input": [-81.0, -2.5], "expected": -2.5}, {"input": [-81.0, -2.0], "expected": -2.0}, {"input": [-81.0, -1.5], "expected": -1.5}, {"input": [-81.0, -1.0], "expected": -1.0}, {"input": [-81.0, -0.5], "expected": -0.5}, {"input": [-81.0, 0.0], "expected": 6.639677199580735e-36}, {"input": [-81.0, 0.5], "expected": 0.5}, {"input": [-81.0, 1.0], "expected": 1.0}, {"input": [-81.0, 1.5], "expected": 1.5}, {"input": [-81.0, 2.0], "expected": 2.0}, {"input": [-81.0, 2.5], "expected": 2.5}, {"input": [-81.0, 3.0], "expected": 3.0}, {"input": [-81.0, 3.5], "expected": 3.5}, {"input": [-81.0, 4.0], "expected": 4.0}, {"input": [-81.0, 4.5], "expected": 4.5}, {"input": [-81.0, 5.0], "expected": 5.0}, {"input": [-81.0, 5.5], "expected": 5.5}, {"input": [-81.0, 6.0], "expected": 6.0}, {"input": [-81.0, 6.5], "expected": 6.5}, {"input": [-81.0, 7.0], "expected": 7.0}, {"input": [-81.0, 7.5], "expected": 7.5}, {"input": [-81.0, 8.0], "expected": 8.0}, {"input": [-81.0, 8.5], "expected": 8.5}, {"input": [-81.0, 9.0], "expected": 9.0}, {"input": [-81.0, 9.5], "expected": 9.5}, {"input": [-81.0, 10.0], "expected": 10.0}, {"input": [-81.0, 10.5], "expected": 10.5}, {"input": [-81.0, 11.0], "expected": 11.0}, {"input": [-81.0, 11.5], "expected": 11.5}, {"input": [-81.0, 12.0], "expected": 12.0}, {"input": [-81.0, 12.5], "expected": 12.5}, {"input": [-81.0, 13.0], "expected": 13.0}, {"input": [-81.0, 13.5], "expected": 13.5}, {"input": [-81.0, 14.0], "expected": 14.0}, {"input": [-81.0, 14.5], "expected": 14.5}, {"input": [-81.0, 15.0], "expected": 15.0}, {"input": [-81.0, 15.5], "expected": 15.5}, {"input": [-81.0, 16.0], "expected": 16.0}, {"input": [-81.0, 16.5], "expected": 16.5}, {"input": [-81.0, 17.0], "expected": 17.0}, {"input": [-81.0, 17.5], "expected": 17.5}, {"input": [-81.0, 18.0], "expected": 18.0}, {"input": [-81.0, 18.5], "expected": 18.5}, {"input": [-81.0, 19.0], "expected": 19.0}, {"input": [-81.0, 19.5], "expected": 19.5}, {"input": [-81.0, 20.0], "expected": 20.0}, {"input": [-81.0, 20.5], "expected": 20.5}, {"input": [-81.0, 21.0], "expected": 21.0}, {"input": [-81.0, 21.5], "expected": 21.5}, {"input": [-81.0, 22.0], "expected": 22.0}, {"input": [-81.0, 22.5], "expected": 22.5}, {"input": [-81.0, 23.0], "expected": 23.0}, {"input": [-81.0, 23.5], "expected": 23.5}, {"input": [-81.0, 24.0], "expected": 24.0}, {"input": [-81.0, 24.5], "expected": 24.5}, {"input": [-81.0, 25.0], "expected": 25.0}, {"input": [-81.0, 25.5], "expected": 25.5}, {"input": [-81.0, 26.0], "expected": 26.0}, {"input": [-81.0, 26.5], "expected": 26.5}, {"input": [-81.0, 27.0], "expected": 27.0}, {"input": [-81.0, 27.5], "expected": 27.5}, {"input": [-81.0, 28.0], "expected": 28.0}, {"input": [-81.0, 28.5], "expected": 28.5}, {"input": [-81.0, 29.0], "expected": 29.0}, {"input": [-81.0, 29.5], "expected": 29.5}, {"input": [-81.0, 30.0], "expected": 30.0}, {"input": [-81.0, 30.5], "expected": 30.5}, {"input": [-81.0, 31.0], "expected": 31.0}, {"input": [-81.0, 31.5], "expected": 31.5}, {"input": [-81.0, 32.0], "expected": 32.0}, {"input": [-81.0, 32.5], "expected": 32.5}, {"input": [-81.0, 33.0], "expected": 33.0}, {"input": [-81.0, 33.5], "expected": 33.5}, {"input": [-81.0, 34.0], "expected": 34.0}, {"input": [-81.0, 34.5], "expected": 34.5}, {"input": [-81.0, 35.0], "expected": 35.0}, {"input": [-81.0, 35.5], "expected": 35.5}, {"input": [-81.0, 36.0], "expected": 36.0}, {"input": [-81.0, 36.5], "expected": 36.5}, {"input": [-81.0, 37.0], "expected": 37.0}, {"input": [-81.0, 37.5], "expected": 37.5}, {"input": [-81.0, 38.0], "expected": 38.0}, {"input": [-81.0, 38.5], "expected": 38.5}, {"input": [-81.0, 39.0], "expected": 39.0}, {"input": [-81.0, 39.5], "expected": 39.5}, {"input": [-81.0, 40.0], "expected": 40.0}, {"input": [-81.0, 40.5], "expected": 40.5}, {"input": [-81.0, 41.0], "expected": 41.0}, {"input": [-81.0, 41.5], "expected": 41.5}, {"input": [-81.0, 42.0], "expected": 42.0}, {"input": [-81.0, 42.5], "expected": 42.5}, {"input": [-81.0, 43.0], "expected": 43.0}, {"input": [-81.0, 43.5], "expected": 43.5}, {"input": [-81.0, 44.0], "expected": 44.0}, {"input": [-81.0, 44.5], "expected": 44.5}, {"input": [-81.0, 45.0], "expected": 45.0}, {"input": [-81.0, 45.5], "expected": 45.5}, {"input": [-81.0, 46.0], "expected": 46.0}, {"input": [-81.0, 46.5], "expected": 46.5}, {"input": [-81.0, 47.0], "expected": 47.0}, {"input": [-81.0, 47.5], "expected": 47.5}, {"input": [-81.0, 48.0], "expected": 48.0}, {"input": [-81.0, 48.5], "expected": 48.5}, {"input": [-81.0, 49.0], "expected": 49.0}, {"input": [-81.0, 49.5], "expected": 49.5}, {"input": [-81.0, 50.0], "expected": 50.0}, {"input": [-81.0, 50.5], "expected": 50.5}, {"input": [-81.0, 51.0], "expected": 51.0}, {"input": [-81.0, 51.5], "expected": 51.5}, {"input": [-81.0, 52.0], "expected": 52.0}, {"input": [-81.0, 52.5], "expected": 52.5}, {"input": [-81.0, 53.0], "expected": 53.0}, {"input": [-81.0, 53.5], "expected": 53.5}, {"input": [-81.0, 54.0], "expected": 54.0}, {"input": [-81.0, 54.5], "expected": 54.5}, {"input": [-81.0, 55.0], "expected": 55.0}, {"input": [-81.0, 55.5], "expected": 55.5}, {"input": [-81.0, 56.0], "expected": 56.0}, {"input": [-81.0, 56.5], "expected": 56.5}, {"input": [-81.0, 57.0], "expected": 57.0}, {"input": [-81.0, 57.5], "expected": 57.5}, {"input": [-81.0, 58.0], "expected": 58.0}, {"input": [-81.0, 58.5], "expected": 58.5}, {"input": [-81.0, 59.0], "expected": 59.0}, {"input": [-81.0, 59.5], "expected": 59.5}, {"input": [-81.0, 60.0], "expected": 60.0}, {"input": [-81.0, 60.5], "expected": 60.5}, {"input": [-81.0, 61.0], "expected": 61.0}, {"input": [-81.0, 61.5], "expected": 61.5}, {"input": [-81.0, 62.0], "expected": 62.0}, {"input": [-81.0, 62.5], "expected": 62.5}, {"input": [-81.0, 63.0], "expected": 63.0}, {"input": [-81.0, 63.5], "expected": 63.5}, {"input": [-81.0, 64.0], "expected": 64.0}, {"input": [-81.0, 64.5], "expected": 64.5}, {"input": [-81.0, 65.0], "expected": 65.0}, {"input": [-81.0, 65.5], "expected": 65.5}, {"input": [-81.0, 66.0], "expected": 66.0}, {"input": [-81.0, 66.5], "expected": 66.5}, {"input": [-81.0, 67.0], "expected": 67.0}, {"input": [-81.0, 67.5], "expected": 67.5}, {"input": [-81.0, 68.0], "expected": 68.0}, {"input": [-81.0, 68.5], "expected": 68.5}, {"input": [-81.0, 69.0], "expected": 69.0}, {"input": [-81.0, 69.5], "expected": 69.5}, {"input": [-81.0, 70.0], "expected": 70.0}, {"input": [-81.0, 70.5], "expected": 70.5}, {"input": [-81.0, 71.0], "expected": 71.0}, {"input": [-81.0, 71.5], "expected": 71.5}, {"input": [-81.0, 72.0], "expected": 72.0}, {"input": [-81.0, 72.5], "expected": 72.5}, {"input": [-81.0, 73.0], "expected": 73.0}, {"input": [-81.0, 73.5], "expected": 73.5}, {"input": [-81.0, 74.0], "expected": 74.0}, {"input": [-81.0, 74.5], "expected": 74.5}, {"input": [-81.0, 75.0], "expected": 75.0}, {"input": [-81.0, 75.5], "expected": 75.5}, {"input": [-81.0, 76.0], "expected": 76.0}, {"input": [-81.0, 76.5], "expected": 76.5}, {"input": [-81.0, 77.0], "expected": 77.0}, {"input": [-81.0, 77.5], "expected": 77.5}, {"input": [-81.0, 78.0], "expected": 78.0}, {"input": [-81.0, 78.5], "expected": 78.5}, {"input": [-81.0, 79.0], "expected": 79.0}, {"input": [-81.0, 79.5], "expected": 79.5}, {"input": [-81.0, 80.0], "expected": 80.0}, {"input": [-81.0, 80.5], "expected": 80.5}, {"input": [-81.0, 81.0], "expected": 81.0}, {"input": [-81.0, 81.5], "expected": 81.5}, {"input": [-81.0, 82.0], "expected": 82.0}, {"input": [-81.0, 82.5], "expected": 82.5}, {"input": [-81.0, 83.0], "expected": 83.0}, {"input": [-81.0, 83.5], "expected": 83.5}, {"input": [-81.0, 84.0], "expected": 84.0}, {"input": [-81.0, 84.5], "expected": 84.5}, {"input": [-81.0, 85.0], "expected": 85.0}, {"input": [-81.0, 85.5], "expected": 85.5}, {"input": [-81.0, 86.0], "expected": 86.0}, {"input": [-81.0, 86.5], "expected": 86.5}, {"input": [-81.0, 87.0], "expected": 87.0}, {"input": [-81.0, 87.5], "expected": 87.5}, {"input": [-81.0, 88.0], "expected": 88.0}, {"input": [-81.0, 88.5], "expected": 88.5}, {"input": [-81.0, 89.0], "expected": 89.0}, {"input": [-81.0, 89.5], "expected": 89.5}, {"input": [-81.0, 90.0], "expected": 90.0}, {"input": [-81.0, 90.5], "expected": 90.5}, {"input": [-81.0, 91.0], "expected": 91.0}, {"input": [-81.0, 91.5], "expected": 91.5}, {"input": [-81.0, 92.0], "expected": 92.0}, {"input": [-81.0, 92.5], "expected": 92.5}, {"input": [-81.0, 93.0], "expected": 93.0}, {"input": [-81.0, 93.5], "expected": 93.5}, {"input": [-81.0, 94.0], "expected": 94.0}, {"input": [-81.0, 94.5], "expected": 94.5}, {"input": [-81.0, 95.0], "expected": 95.0}, {"input": [-81.0, 95.5], "expected": 95.5}, {"input": [-81.0, 96.0], "expected": 96.0}, {"input": [-81.0, 96.5], "expected": 96.5}, {"input": [-81.0, 97.0], "expected": 97.0}, {"input": [-81.0, 97.5], "expected": 97.5}, {"input": [-81.0, 98.0], "expected": 98.0}, {"input": [-81.0, 98.5], "expected": 98.5}, {"input": [-81.0, 99.0], "expected": 99.0}, {"input": [-81.0, 99.5], "expected": 99.5}, {"input": [-80.5, -100.0], "expected": -80.49999999660173}, {"input": [-80.5, -99.5], "expected": -80.4999999943972}, {"input": [-80.5, -99.0], "expected": -80.49999999076255}, {"input": [-80.5, -98.5], "expected": -80.49999998477001}, {"input": [-80.5, -98.0], "expected": -80.49999997489}, {"input": [-80.5, -97.5], "expected": -80.49999995860063}, {"input": [-80.5, -97.0], "expected": -80.49999993174397}, {"input": [-80.5, -96.5], "expected": -80.49999988746484}, {"input": [-80.5, -96.0], "expected": -80.49999981446088}, {"input": [-80.5, -95.5], "expected": -80.49999969409772}, {"input": [-80.5, -95.0], "expected": -80.49999949565246}, {"input": [-80.5, -94.5], "expected": -80.49999916847163}, {"input": [-80.5, -94.0], "expected": -80.49999862904185}, {"input": [-80.5, -93.5], "expected": -80.49999773967315}, {"input": [-80.5, -93.0], "expected": -80.49999627335377}, {"input": [-80.5, -92.5], "expected": -80.49999385580652}, {"input": [-80.5, -92.0], "expected": -80.49998986995772}, {"input": [-80.5, -91.5], "expected": -80.49998329843868}, {"input": [-80.5, -91.0], "expected": -80.49997246392977}, {"input": [-80.5, -90.5], "expected": -80.49995460110078}, {"input": [-80.5, -90.0], "expected": -80.49992515097136}, {"input": [-80.5, -89.5], "expected": -80.49987659781027}, {"input": [-80.5, -89.0], "expected": -80.49979655232787}, {"input": [-80.5, -88.5], "expected": -80.4996645936271}, {"input": [-80.5, -88.0], "expected": -80.49944706852465}, {"input": [-80.5, -87.5], "expected": -80.49908853354623}, {"input": [-80.5, -87.0], "expected": -80.49849768984025}, {"input": [-80.5, -86.5], "expected": -80.49752431486228}, {"input": [-80.5, -86.0], "expected": -80.49592155672943}, {"input": [-80.5, -85.5], "expected": -80.49328465151088}, {"input": [-80.5, -85.0], "expected": -80.4889522551514}, {"input": [-80.5, -84.5], "expected": -80.4818500720822}, {"input": [-80.5, -84.0], "expected": -80.47024958172737}, {"input": [-80.5, -83.5], "expected": -80.45141264842626}, {"input": [-80.5, -83.0], "expected": -80.42111026570745}, {"input": [-80.5, -82.5], "expected": -80.37307198895702}, {"input": [-80.5, -82.0], "expected": -80.29858672201725}, {"input": [-80.5, -81.5], "expected": -80.18673831248178}, {"input": [-80.5, -81.0], "expected": -80.0259230158199}, {"input": [-80.5, -80.5], "expected": -79.80685281944005}, {"input": [-80.5, -80.0], "expected": -79.5259230158199}, {"input": [-80.5, -79.5], "expected": -79.18673831248178}, {"input": [-80.5, -79.0], "expected": -78.79858672201725}, {"input": [-80.5, -78.5], "expected": -78.37307198895702}, {"input": [-80.5, -78.0], "expected": -77.92111026570745}, {"input": [-80.5, -77.5], "expected": -77.45141264842626}, {"input": [-80.5, -77.0], "expected": -76.97024958172737}, {"input": [-80.5, -76.5], "expected": -76.4818500720822}, {"input": [-80.5, -76.0], "expected": -75.9889522551514}, {"input": [-80.5, -75.5], "expected": -75.49328465151088}, {"input": [-80.5, -75.0], "expected": -74.99592155672943}, {"input": [-80.5, -74.5], "expected": -74.49752431486228}, {"input": [-80.5, -74.0], "expected": -73.99849768984025}, {"input": [-80.5, -73.5], "expected": -73.49908853354623}, {"input": [-80.5, -73.0], "expected": -72.99944706852465}, {"input": [-80.5, -72.5], "expected": -72.4996645936271}, {"input": [-80.5, -72.0], "expected": -71.99979655232787}, {"input": [-80.5, -71.5], "expected": -71.49987659781027}, {"input": [-80.5, -71.0], "expected": -70.99992515097136}, {"input": [-80.5, -70.5], "expected": -70.49995460110078}, {"input": [-80.5, -70.0], "expected": -69.99997246392977}, {"input": [-80.5, -69.5], "expected": -69.49998329843868}, {"input": [-80.5, -69.0], "expected": -68.99998986995772}, {"input": [-80.5, -68.5], "expected": -68.49999385580652}, {"input": [-80.5, -68.0], "expected": -67.99999627335377}, {"input": [-80.5, -67.5], "expected": -67.49999773967315}, {"input": [-80.5, -67.0], "expected": -66.99999862904185}, {"input": [-80.5, -66.5], "expected": -66.49999916847163}, {"input": [-80.5, -66.0], "expected": -65.99999949565246}, {"input": [-80.5, -65.5], "expected": -65.49999969409772}, {"input": [-80.5, -65.0], "expected": -64.99999981446088}, {"input": [-80.5, -64.5], "expected": -64.49999988746484}, {"input": [-80.5, -64.0], "expected": -63.99999993174397}, {"input": [-80.5, -63.5], "expected": -63.499999958600625}, {"input": [-80.5, -63.0], "expected": -62.99999997489001}, {"input": [-80.5, -62.5], "expected": -62.49999998477002}, {"input": [-80.5, -62.0], "expected": -61.999999990762554}, {"input": [-80.5, -61.5], "expected": -61.49999999439721}, {"input": [-80.5, -61.0], "expected": -60.99999999660173}, {"input": [-80.5, -60.5], "expected": -60.49999999793884}, {"input": [-80.5, -60.0], "expected": -59.99999999874985}, {"input": [-80.5, -59.5], "expected": -59.499999999241744}, {"input": [-80.5, -59.0], "expected": -58.999999999540094}, {"input": [-80.5, -58.5], "expected": -58.499999999721055}, {"input": [-80.5, -58.0], "expected": -57.99999999983081}, {"input": [-80.5, -57.5], "expected": -57.49999999989738}, {"input": [-80.5, -57.0], "expected": -56.99999999993776}, {"input": [-80.5, -56.5], "expected": -56.49999999996225}, {"input": [-80.5, -56.0], "expected": -55.9999999999771}, {"input": [-80.5, -55.5], "expected": -55.49999999998611}, {"input": [-80.5, -55.0], "expected": -54.99999999999158}, {"input": [-80.5, -54.5], "expected": -54.49999999999489}, {"input": [-80.5, -54.0], "expected": -53.9999999999969}, {"input": [-80.5, -53.5], "expected": -53.49999999999812}, {"input": [-80.5, -53.0], "expected": -52.99999999999886}, {"input": [-80.5, -52.5], "expected": -52.49999999999931}, {"input": [-80.5, -52.0], "expected": -51.99999999999958}, {"input": [-80.5, -51.5], "expected": -51.499999999999744}, {"input": [-80.5, -51.0], "expected": -50.999999999999844}, {"input": [-80.5, -50.5], "expected": -50.49999999999991}, {"input": [-80.5, -50.0], "expected": -49.99999999999994}, {"input": [-80.5, -49.5], "expected": -49.499999999999964}, {"input": [-80.5, -49.0], "expected": -48.99999999999998}, {"input": [-80.5, -48.5], "expected": -48.499999999999986}, {"input": [-80.5, -48.0], "expected": -47.99999999999999}, {"input": [-80.5, -47.5], "expected": -47.49999999999999}, {"input": [-80.5, -47.0], "expected": -47.0}, {"input": [-80.5, -46.5], "expected": -46.5}, {"input": [-80.5, -46.0], "expected": -46.0}, {"input": [-80.5, -45.5], "expected": -45.5}, {"input": [-80.5, -45.0], "expected": -45.0}, {"input": [-80.5, -44.5], "expected": -44.5}, {"input": [-80.5, -44.0], "expected": -44.0}, {"input": [-80.5, -43.5], "expected": -43.5}, {"input": [-80.5, -43.0], "expected": -43.0}, {"input": [-80.5, -42.5], "expected": -42.5}, {"input": [-80.5, -42.0], "expected": -42.0}, {"input": [-80.5, -41.5], "expected": -41.5}, {"input": [-80.5, -41.0], "expected": -41.0}, {"input": [-80.5, -40.5], "expected": -40.5}, {"input": [-80.5, -40.0], "expected": -40.0}, {"input": [-80.5, -39.5], "expected": -39.5}, {"input": [-80.5, -39.0], "expected": -39.0}, {"input": [-80.5, -38.5], "expected": -38.5}, {"input": [-80.5, -38.0], "expected": -38.0}, {"input": [-80.5, -37.5], "expected": -37.5}, {"input": [-80.5, -37.0], "expected": -37.0}, {"input": [-80.5, -36.5], "expected": -36.5}, {"input": [-80.5, -36.0], "expected": -36.0}, {"input": [-80.5, -35.5], "expected": -35.5}, {"input": [-80.5, -35.0], "expected": -35.0}, {"input": [-80.5, -34.5], "expected": -34.5}, {"input": [-80.5, -34.0], "expected": -34.0}, {"input": [-80.5, -33.5], "expected": -33.5}, {"input": [-80.5, -33.0], "expected": -33.0}, {"input": [-80.5, -32.5], "expected": -32.5}, {"input": [-80.5, -32.0], "expected": -32.0}, {"input": [-80.5, -31.5], "expected": -31.5}, {"input": [-80.5, -31.0], "expected": -31.0}, {"input": [-80.5, -30.5], "expected": -30.5}, {"input": [-80.5, -30.0], "expected": -30.0}, {"input": [-80.5, -29.5], "expected": -29.5}, {"input": [-80.5, -29.0], "expected": -29.0}, {"input": [-80.5, -28.5], "expected": -28.5}, {"input": [-80.5, -28.0], "expected": -28.0}, {"input": [-80.5, -27.5], "expected": -27.5}, {"input": [-80.5, -27.0], "expected": -27.0}, {"input": [-80.5, -26.5], "expected": -26.5}, {"input": [-80.5, -26.0], "expected": -26.0}, {"input": [-80.5, -25.5], "expected": -25.5}, {"input": [-80.5, -25.0], "expected": -25.0}, {"input": [-80.5, -24.5], "expected": -24.5}, {"input": [-80.5, -24.0], "expected": -24.0}, {"input": [-80.5, -23.5], "expected": -23.5}, {"input": [-80.5, -23.0], "expected": -23.0}, {"input": [-80.5, -22.5], "expected": -22.5}, {"input": [-80.5, -22.0], "expected": -22.0}, {"input": [-80.5, -21.5], "expected": -21.5}, {"input": [-80.5, -21.0], "expected": -21.0}, {"input": [-80.5, -20.5], "expected": -20.5}, {"input": [-80.5, -20.0], "expected": -20.0}, {"input": [-80.5, -19.5], "expected": -19.5}, {"input": [-80.5, -19.0], "expected": -19.0}, {"input": [-80.5, -18.5], "expected": -18.5}, {"input": [-80.5, -18.0], "expected": -18.0}, {"input": [-80.5, -17.5], "expected": -17.5}, {"input": [-80.5, -17.0], "expected": -17.0}, {"input": [-80.5, -16.5], "expected": -16.5}, {"input": [-80.5, -16.0], "expected": -16.0}, {"input": [-80.5, -15.5], "expected": -15.5}, {"input": [-80.5, -15.0], "expected": -15.0}, {"input": [-80.5, -14.5], "expected": -14.5}, {"input": [-80.5, -14.0], "expected": -14.0}, {"input": [-80.5, -13.5], "expected": -13.5}, {"input": [-80.5, -13.0], "expected": -13.0}, {"input": [-80.5, -12.5], "expected": -12.5}, {"input": [-80.5, -12.0], "expected": -12.0}, {"input": [-80.5, -11.5], "expected": -11.5}, {"input": [-80.5, -11.0], "expected": -11.0}, {"input": [-80.5, -10.5], "expected": -10.5}, {"input": [-80.5, -10.0], "expected": -10.0}, {"input": [-80.5, -9.5], "expected": -9.5}, {"input": [-80.5, -9.0], "expected": -9.0}, {"input": [-80.5, -8.5], "expected": -8.5}, {"input": [-80.5, -8.0], "expected": -8.0}, {"input": [-80.5, -7.5], "expected": -7.5}, {"input": [-80.5, -7.0], "expected": -7.0}, {"input": [-80.5, -6.5], "expected": -6.5}, {"input": [-80.5, -6.0], "expected": -6.0}, {"input": [-80.5, -5.5], "expected": -5.5}, {"input": [-80.5, -5.0], "expected": -5.0}, {"input": [-80.5, -4.5], "expected": -4.5}, {"input": [-80.5, -4.0], "expected": -4.0}, {"input": [-80.5, -3.5], "expected": -3.5}, {"input": [-80.5, -3.0], "expected": -3.0}, {"input": [-80.5, -2.5], "expected": -2.5}, {"input": [-80.5, -2.0], "expected": -2.0}, {"input": [-80.5, -1.5], "expected": -1.5}, {"input": [-80.5, -1.0], "expected": -1.0}, {"input": [-80.5, -0.5], "expected": -0.5}, {"input": [-80.5, 0.0], "expected": 1.0946977029531417e-35}, {"input": [-80.5, 0.5], "expected": 0.5}, {"input": [-80.5, 1.0], "expected": 1.0}, {"input": [-80.5, 1.5], "expected": 1.5}, {"input": [-80.5, 2.0], "expected": 2.0}, {"input": [-80.5, 2.5], "expected": 2.5}, {"input": [-80.5, 3.0], "expected": 3.0}, {"input": [-80.5, 3.5], "expected": 3.5}, {"input": [-80.5, 4.0], "expected": 4.0}, {"input": [-80.5, 4.5], "expected": 4.5}, {"input": [-80.5, 5.0], "expected": 5.0}, {"input": [-80.5, 5.5], "expected": 5.5}, {"input": [-80.5, 6.0], "expected": 6.0}, {"input": [-80.5, 6.5], "expected": 6.5}, {"input": [-80.5, 7.0], "expected": 7.0}, {"input": [-80.5, 7.5], "expected": 7.5}, {"input": [-80.5, 8.0], "expected": 8.0}, {"input": [-80.5, 8.5], "expected": 8.5}, {"input": [-80.5, 9.0], "expected": 9.0}, {"input": [-80.5, 9.5], "expected": 9.5}, {"input": [-80.5, 10.0], "expected": 10.0}, {"input": [-80.5, 10.5], "expected": 10.5}, {"input": [-80.5, 11.0], "expected": 11.0}, {"input": [-80.5, 11.5], "expected": 11.5}, {"input": [-80.5, 12.0], "expected": 12.0}, {"input": [-80.5, 12.5], "expected": 12.5}, {"input": [-80.5, 13.0], "expected": 13.0}, {"input": [-80.5, 13.5], "expected": 13.5}, {"input": [-80.5, 14.0], "expected": 14.0}, {"input": [-80.5, 14.5], "expected": 14.5}, {"input": [-80.5, 15.0], "expected": 15.0}, {"input": [-80.5, 15.5], "expected": 15.5}, {"input": [-80.5, 16.0], "expected": 16.0}, {"input": [-80.5, 16.5], "expected": 16.5}, {"input": [-80.5, 17.0], "expected": 17.0}, {"input": [-80.5, 17.5], "expected": 17.5}, {"input": [-80.5, 18.0], "expected": 18.0}, {"input": [-80.5, 18.5], "expected": 18.5}, {"input": [-80.5, 19.0], "expected": 19.0}, {"input": [-80.5, 19.5], "expected": 19.5}, {"input": [-80.5, 20.0], "expected": 20.0}, {"input": [-80.5, 20.5], "expected": 20.5}, {"input": [-80.5, 21.0], "expected": 21.0}, {"input": [-80.5, 21.5], "expected": 21.5}, {"input": [-80.5, 22.0], "expected": 22.0}, {"input": [-80.5, 22.5], "expected": 22.5}, {"input": [-80.5, 23.0], "expected": 23.0}, {"input": [-80.5, 23.5], "expected": 23.5}, {"input": [-80.5, 24.0], "expected": 24.0}, {"input": [-80.5, 24.5], "expected": 24.5}, {"input": [-80.5, 25.0], "expected": 25.0}, {"input": [-80.5, 25.5], "expected": 25.5}, {"input": [-80.5, 26.0], "expected": 26.0}, {"input": [-80.5, 26.5], "expected": 26.5}, {"input": [-80.5, 27.0], "expected": 27.0}, {"input": [-80.5, 27.5], "expected": 27.5}, {"input": [-80.5, 28.0], "expected": 28.0}, {"input": [-80.5, 28.5], "expected": 28.5}, {"input": [-80.5, 29.0], "expected": 29.0}, {"input": [-80.5, 29.5], "expected": 29.5}, {"input": [-80.5, 30.0], "expected": 30.0}, {"input": [-80.5, 30.5], "expected": 30.5}, {"input": [-80.5, 31.0], "expected": 31.0}, {"input": [-80.5, 31.5], "expected": 31.5}, {"input": [-80.5, 32.0], "expected": 32.0}, {"input": [-80.5, 32.5], "expected": 32.5}, {"input": [-80.5, 33.0], "expected": 33.0}, {"input": [-80.5, 33.5], "expected": 33.5}, {"input": [-80.5, 34.0], "expected": 34.0}, {"input": [-80.5, 34.5], "expected": 34.5}, {"input": [-80.5, 35.0], "expected": 35.0}, {"input": [-80.5, 35.5], "expected": 35.5}, {"input": [-80.5, 36.0], "expected": 36.0}, {"input": [-80.5, 36.5], "expected": 36.5}, {"input": [-80.5, 37.0], "expected": 37.0}, {"input": [-80.5, 37.5], "expected": 37.5}, {"input": [-80.5, 38.0], "expected": 38.0}, {"input": [-80.5, 38.5], "expected": 38.5}, {"input": [-80.5, 39.0], "expected": 39.0}, {"input": [-80.5, 39.5], "expected": 39.5}, {"input": [-80.5, 40.0], "expected": 40.0}, {"input": [-80.5, 40.5], "expected": 40.5}, {"input": [-80.5, 41.0], "expected": 41.0}, {"input": [-80.5, 41.5], "expected": 41.5}, {"input": [-80.5, 42.0], "expected": 42.0}, {"input": [-80.5, 42.5], "expected": 42.5}, {"input": [-80.5, 43.0], "expected": 43.0}, {"input": [-80.5, 43.5], "expected": 43.5}, {"input": [-80.5, 44.0], "expected": 44.0}, {"input": [-80.5, 44.5], "expected": 44.5}, {"input": [-80.5, 45.0], "expected": 45.0}, {"input": [-80.5, 45.5], "expected": 45.5}, {"input": [-80.5, 46.0], "expected": 46.0}, {"input": [-80.5, 46.5], "expected": 46.5}, {"input": [-80.5, 47.0], "expected": 47.0}, {"input": [-80.5, 47.5], "expected": 47.5}, {"input": [-80.5, 48.0], "expected": 48.0}, {"input": [-80.5, 48.5], "expected": 48.5}, {"input": [-80.5, 49.0], "expected": 49.0}, {"input": [-80.5, 49.5], "expected": 49.5}, {"input": [-80.5, 50.0], "expected": 50.0}, {"input": [-80.5, 50.5], "expected": 50.5}, {"input": [-80.5, 51.0], "expected": 51.0}, {"input": [-80.5, 51.5], "expected": 51.5}, {"input": [-80.5, 52.0], "expected": 52.0}, {"input": [-80.5, 52.5], "expected": 52.5}, {"input": [-80.5, 53.0], "expected": 53.0}, {"input": [-80.5, 53.5], "expected": 53.5}, {"input": [-80.5, 54.0], "expected": 54.0}, {"input": [-80.5, 54.5], "expected": 54.5}, {"input": [-80.5, 55.0], "expected": 55.0}, {"input": [-80.5, 55.5], "expected": 55.5}, {"input": [-80.5, 56.0], "expected": 56.0}, {"input": [-80.5, 56.5], "expected": 56.5}, {"input": [-80.5, 57.0], "expected": 57.0}, {"input": [-80.5, 57.5], "expected": 57.5}, {"input": [-80.5, 58.0], "expected": 58.0}, {"input": [-80.5, 58.5], "expected": 58.5}, {"input": [-80.5, 59.0], "expected": 59.0}, {"input": [-80.5, 59.5], "expected": 59.5}, {"input": [-80.5, 60.0], "expected": 60.0}, {"input": [-80.5, 60.5], "expected": 60.5}, {"input": [-80.5, 61.0], "expected": 61.0}, {"input": [-80.5, 61.5], "expected": 61.5}, {"input": [-80.5, 62.0], "expected": 62.0}, {"input": [-80.5, 62.5], "expected": 62.5}, {"input": [-80.5, 63.0], "expected": 63.0}, {"input": [-80.5, 63.5], "expected": 63.5}, {"input": [-80.5, 64.0], "expected": 64.0}, {"input": [-80.5, 64.5], "expected": 64.5}, {"input": [-80.5, 65.0], "expected": 65.0}, {"input": [-80.5, 65.5], "expected": 65.5}, {"input": [-80.5, 66.0], "expected": 66.0}, {"input": [-80.5, 66.5], "expected": 66.5}, {"input": [-80.5, 67.0], "expected": 67.0}, {"input": [-80.5, 67.5], "expected": 67.5}, {"input": [-80.5, 68.0], "expected": 68.0}, {"input": [-80.5, 68.5], "expected": 68.5}, {"input": [-80.5, 69.0], "expected": 69.0}, {"input": [-80.5, 69.5], "expected": 69.5}, {"input": [-80.5, 70.0], "expected": 70.0}, {"input": [-80.5, 70.5], "expected": 70.5}, {"input": [-80.5, 71.0], "expected": 71.0}, {"input": [-80.5, 71.5], "expected": 71.5}, {"input": [-80.5, 72.0], "expected": 72.0}, {"input": [-80.5, 72.5], "expected": 72.5}, {"input": [-80.5, 73.0], "expected": 73.0}, {"input": [-80.5, 73.5], "expected": 73.5}, {"input": [-80.5, 74.0], "expected": 74.0}, {"input": [-80.5, 74.5], "expected": 74.5}, {"input": [-80.5, 75.0], "expected": 75.0}, {"input": [-80.5, 75.5], "expected": 75.5}, {"input": [-80.5, 76.0], "expected": 76.0}, {"input": [-80.5, 76.5], "expected": 76.5}, {"input": [-80.5, 77.0], "expected": 77.0}, {"input": [-80.5, 77.5], "expected": 77.5}, {"input": [-80.5, 78.0], "expected": 78.0}, {"input": [-80.5, 78.5], "expected": 78.5}, {"input": [-80.5, 79.0], "expected": 79.0}, {"input": [-80.5, 79.5], "expected": 79.5}, {"input": [-80.5, 80.0], "expected": 80.0}, {"input": [-80.5, 80.5], "expected": 80.5}, {"input": [-80.5, 81.0], "expected": 81.0}, {"input": [-80.5, 81.5], "expected": 81.5}, {"input": [-80.5, 82.0], "expected": 82.0}, {"input": [-80.5, 82.5], "expected": 82.5}, {"input": [-80.5, 83.0], "expected": 83.0}, {"input": [-80.5, 83.5], "expected": 83.5}, {"input": [-80.5, 84.0], "expected": 84.0}, {"input": [-80.5, 84.5], "expected": 84.5}, {"input": [-80.5, 85.0], "expected": 85.0}, {"input": [-80.5, 85.5], "expected": 85.5}, {"input": [-80.5, 86.0], "expected": 86.0}, {"input": [-80.5, 86.5], "expected": 86.5}, {"input": [-80.5, 87.0], "expected": 87.0}, {"input": [-80.5, 87.5], "expected": 87.5}, {"input": [-80.5, 88.0], "expected": 88.0}, {"input": [-80.5, 88.5], "expected": 88.5}, {"input": [-80.5, 89.0], "expected": 89.0}, {"input": [-80.5, 89.5], "expected": 89.5}, {"input": [-80.5, 90.0], "expected": 90.0}, {"input": [-80.5, 90.5], "expected": 90.5}, {"input": [-80.5, 91.0], "expected": 91.0}, {"input": [-80.5, 91.5], "expected": 91.5}, {"input": [-80.5, 92.0], "expected": 92.0}, {"input": [-80.5, 92.5], "expected": 92.5}, {"input": [-80.5, 93.0], "expected": 93.0}, {"input": [-80.5, 93.5], "expected": 93.5}, {"input": [-80.5, 94.0], "expected": 94.0}, {"input": [-80.5, 94.5], "expected": 94.5}, {"input": [-80.5, 95.0], "expected": 95.0}, {"input": [-80.5, 95.5], "expected": 95.5}, {"input": [-80.5, 96.0], "expected": 96.0}, {"input": [-80.5, 96.5], "expected": 96.5}, {"input": [-80.5, 97.0], "expected": 97.0}, {"input": [-80.5, 97.5], "expected": 97.5}, {"input": [-80.5, 98.0], "expected": 98.0}, {"input": [-80.5, 98.5], "expected": 98.5}, {"input": [-80.5, 99.0], "expected": 99.0}, {"input": [-80.5, 99.5], "expected": 99.5}, {"input": [-80.0, -100.0], "expected": -79.99999999793884}, {"input": [-80.0, -99.5], "expected": -79.99999999660173}, {"input": [-80.0, -99.0], "expected": -79.9999999943972}, {"input": [-80.0, -98.5], "expected": -79.99999999076255}, {"input": [-80.0, -98.0], "expected": -79.99999998477001}, {"input": [-80.0, -97.5], "expected": -79.99999997489}, {"input": [-80.0, -97.0], "expected": -79.99999995860063}, {"input": [-80.0, -96.5], "expected": -79.99999993174397}, {"input": [-80.0, -96.0], "expected": -79.99999988746484}, {"input": [-80.0, -95.5], "expected": -79.99999981446088}, {"input": [-80.0, -95.0], "expected": -79.99999969409772}, {"input": [-80.0, -94.5], "expected": -79.99999949565246}, {"input": [-80.0, -94.0], "expected": -79.99999916847163}, {"input": [-80.0, -93.5], "expected": -79.99999862904185}, {"input": [-80.0, -93.0], "expected": -79.99999773967315}, {"input": [-80.0, -92.5], "expected": -79.99999627335377}, {"input": [-80.0, -92.0], "expected": -79.99999385580652}, {"input": [-80.0, -91.5], "expected": -79.99998986995772}, {"input": [-80.0, -91.0], "expected": -79.99998329843868}, {"input": [-80.0, -90.5], "expected": -79.99997246392977}, {"input": [-80.0, -90.0], "expected": -79.99995460110078}, {"input": [-80.0, -89.5], "expected": -79.99992515097136}, {"input": [-80.0, -89.0], "expected": -79.99987659781027}, {"input": [-80.0, -88.5], "expected": -79.99979655232787}, {"input": [-80.0, -88.0], "expected": -79.9996645936271}, {"input": [-80.0, -87.5], "expected": -79.99944706852465}, {"input": [-80.0, -87.0], "expected": -79.99908853354623}, {"input": [-80.0, -86.5], "expected": -79.99849768984025}, {"input": [-80.0, -86.0], "expected": -79.99752431486228}, {"input": [-80.0, -85.5], "expected": -79.99592155672943}, {"input": [-80.0, -85.0], "expected": -79.99328465151088}, {"input": [-80.0, -84.5], "expected": -79.9889522551514}, {"input": [-80.0, -84.0], "expected": -79.9818500720822}, {"input": [-80.0, -83.5], "expected": -79.97024958172737}, {"input": [-80.0, -83.0], "expected": -79.95141264842626}, {"input": [-80.0, -82.5], "expected": -79.92111026570745}, {"input": [-80.0, -82.0], "expected": -79.87307198895702}, {"input": [-80.0, -81.5], "expected": -79.79858672201725}, {"input": [-80.0, -81.0], "expected": -79.68673831248178}, {"input": [-80.0, -80.5], "expected": -79.5259230158199}, {"input": [-80.0, -80.0], "expected": -79.30685281944005}, {"input": [-80.0, -79.5], "expected": -79.0259230158199}, {"input": [-80.0, -79.0], "expected": -78.68673831248178}, {"input": [-80.0, -78.5], "expected": -78.29858672201725}, {"input": [-80.0, -78.0], "expected": -77.87307198895702}, {"input": [-80.0, -77.5], "expected": -77.42111026570745}, {"input": [-80.0, -77.0], "expected": -76.95141264842626}, {"input": [-80.0, -76.5], "expected": -76.47024958172737}, {"input": [-80.0, -76.0], "expected": -75.9818500720822}, {"input": [-80.0, -75.5], "expected": -75.4889522551514}, {"input": [-80.0, -75.0], "expected": -74.99328465151088}, {"input": [-80.0, -74.5], "expected": -74.49592155672943}, {"input": [-80.0, -74.0], "expected": -73.99752431486228}, {"input": [-80.0, -73.5], "expected": -73.49849768984025}, {"input": [-80.0, -73.0], "expected": -72.99908853354623}, {"input": [-80.0, -72.5], "expected": -72.49944706852465}, {"input": [-80.0, -72.0], "expected": -71.9996645936271}, {"input": [-80.0, -71.5], "expected": -71.49979655232787}, {"input": [-80.0, -71.0], "expected": -70.99987659781027}, {"input": [-80.0, -70.5], "expected": -70.49992515097136}, {"input": [-80.0, -70.0], "expected": -69.99995460110078}, {"input": [-80.0, -69.5], "expected": -69.49997246392977}, {"input": [-80.0, -69.0], "expected": -68.99998329843868}, {"input": [-80.0, -68.5], "expected": -68.49998986995772}, {"input": [-80.0, -68.0], "expected": -67.99999385580652}, {"input": [-80.0, -67.5], "expected": -67.49999627335377}, {"input": [-80.0, -67.0], "expected": -66.99999773967315}, {"input": [-80.0, -66.5], "expected": -66.49999862904185}, {"input": [-80.0, -66.0], "expected": -65.99999916847163}, {"input": [-80.0, -65.5], "expected": -65.49999949565246}, {"input": [-80.0, -65.0], "expected": -64.99999969409772}, {"input": [-80.0, -64.5], "expected": -64.49999981446088}, {"input": [-80.0, -64.0], "expected": -63.99999988746483}, {"input": [-80.0, -63.5], "expected": -63.49999993174397}, {"input": [-80.0, -63.0], "expected": -62.999999958600625}, {"input": [-80.0, -62.5], "expected": -62.49999997489001}, {"input": [-80.0, -62.0], "expected": -61.99999998477002}, {"input": [-80.0, -61.5], "expected": -61.499999990762554}, {"input": [-80.0, -61.0], "expected": -60.99999999439721}, {"input": [-80.0, -60.5], "expected": -60.49999999660173}, {"input": [-80.0, -60.0], "expected": -59.99999999793884}, {"input": [-80.0, -59.5], "expected": -59.49999999874985}, {"input": [-80.0, -59.0], "expected": -58.999999999241744}, {"input": [-80.0, -58.5], "expected": -58.499999999540094}, {"input": [-80.0, -58.0], "expected": -57.999999999721055}, {"input": [-80.0, -57.5], "expected": -57.49999999983081}, {"input": [-80.0, -57.0], "expected": -56.99999999989738}, {"input": [-80.0, -56.5], "expected": -56.49999999993776}, {"input": [-80.0, -56.0], "expected": -55.99999999996225}, {"input": [-80.0, -55.5], "expected": -55.4999999999771}, {"input": [-80.0, -55.0], "expected": -54.99999999998611}, {"input": [-80.0, -54.5], "expected": -54.49999999999158}, {"input": [-80.0, -54.0], "expected": -53.99999999999489}, {"input": [-80.0, -53.5], "expected": -53.4999999999969}, {"input": [-80.0, -53.0], "expected": -52.99999999999812}, {"input": [-80.0, -52.5], "expected": -52.49999999999886}, {"input": [-80.0, -52.0], "expected": -51.99999999999931}, {"input": [-80.0, -51.5], "expected": -51.49999999999958}, {"input": [-80.0, -51.0], "expected": -50.999999999999744}, {"input": [-80.0, -50.5], "expected": -50.499999999999844}, {"input": [-80.0, -50.0], "expected": -49.99999999999991}, {"input": [-80.0, -49.5], "expected": -49.49999999999994}, {"input": [-80.0, -49.0], "expected": -48.999999999999964}, {"input": [-80.0, -48.5], "expected": -48.49999999999998}, {"input": [-80.0, -48.0], "expected": -47.999999999999986}, {"input": [-80.0, -47.5], "expected": -47.49999999999999}, {"input": [-80.0, -47.0], "expected": -46.99999999999999}, {"input": [-80.0, -46.5], "expected": -46.5}, {"input": [-80.0, -46.0], "expected": -46.0}, {"input": [-80.0, -45.5], "expected": -45.5}, {"input": [-80.0, -45.0], "expected": -45.0}, {"input": [-80.0, -44.5], "expected": -44.5}, {"input": [-80.0, -44.0], "expected": -44.0}, {"input": [-80.0, -43.5], "expected": -43.5}, {"input": [-80.0, -43.0], "expected": -43.0}, {"input": [-80.0, -42.5], "expected": -42.5}, {"input": [-80.0, -42.0], "expected": -42.0}, {"input": [-80.0, -41.5], "expected": -41.5}, {"input": [-80.0, -41.0], "expected": -41.0}, {"input": [-80.0, -40.5], "expected": -40.5}, {"input": [-80.0, -40.0], "expected": -40.0}, {"input": [-80.0, -39.5], "expected": -39.5}, {"input": [-80.0, -39.0], "expected": -39.0}, {"input": [-80.0, -38.5], "expected": -38.5}, {"input": [-80.0, -38.0], "expected": -38.0}, {"input": [-80.0, -37.5], "expected": -37.5}, {"input": [-80.0, -37.0], "expected": -37.0}, {"input": [-80.0, -36.5], "expected": -36.5}, {"input": [-80.0, -36.0], "expected": -36.0}, {"input": [-80.0, -35.5], "expected": -35.5}, {"input": [-80.0, -35.0], "expected": -35.0}, {"input": [-80.0, -34.5], "expected": -34.5}, {"input": [-80.0, -34.0], "expected": -34.0}, {"input": [-80.0, -33.5], "expected": -33.5}, {"input": [-80.0, -33.0], "expected": -33.0}, {"input": [-80.0, -32.5], "expected": -32.5}, {"input": [-80.0, -32.0], "expected": -32.0}, {"input": [-80.0, -31.5], "expected": -31.5}, {"input": [-80.0, -31.0], "expected": -31.0}, {"input": [-80.0, -30.5], "expected": -30.5}, {"input": [-80.0, -30.0], "expected": -30.0}, {"input": [-80.0, -29.5], "expected": -29.5}, {"input": [-80.0, -29.0], "expected": -29.0}, {"input": [-80.0, -28.5], "expected": -28.5}, {"input": [-80.0, -28.0], "expected": -28.0}, {"input": [-80.0, -27.5], "expected": -27.5}, {"input": [-80.0, -27.0], "expected": -27.0}, {"input": [-80.0, -26.5], "expected": -26.5}, {"input": [-80.0, -26.0], "expected": -26.0}, {"input": [-80.0, -25.5], "expected": -25.5}, {"input": [-80.0, -25.0], "expected": -25.0}, {"input": [-80.0, -24.5], "expected": -24.5}, {"input": [-80.0, -24.0], "expected": -24.0}, {"input": [-80.0, -23.5], "expected": -23.5}, {"input": [-80.0, -23.0], "expected": -23.0}, {"input": [-80.0, -22.5], "expected": -22.5}, {"input": [-80.0, -22.0], "expected": -22.0}, {"input": [-80.0, -21.5], "expected": -21.5}, {"input": [-80.0, -21.0], "expected": -21.0}, {"input": [-80.0, -20.5], "expected": -20.5}, {"input": [-80.0, -20.0], "expected": -20.0}, {"input": [-80.0, -19.5], "expected": -19.5}, {"input": [-80.0, -19.0], "expected": -19.0}, {"input": [-80.0, -18.5], "expected": -18.5}, {"input": [-80.0, -18.0], "expected": -18.0}, {"input": [-80.0, -17.5], "expected": -17.5}, {"input": [-80.0, -17.0], "expected": -17.0}, {"input": [-80.0, -16.5], "expected": -16.5}, {"input": [-80.0, -16.0], "expected": -16.0}, {"input": [-80.0, -15.5], "expected": -15.5}, {"input": [-80.0, -15.0], "expected": -15.0}, {"input": [-80.0, -14.5], "expected": -14.5}, {"input": [-80.0, -14.0], "expected": -14.0}, {"input": [-80.0, -13.5], "expected": -13.5}, {"input": [-80.0, -13.0], "expected": -13.0}, {"input": [-80.0, -12.5], "expected": -12.5}, {"input": [-80.0, -12.0], "expected": -12.0}, {"input": [-80.0, -11.5], "expected": -11.5}, {"input": [-80.0, -11.0], "expected": -11.0}, {"input": [-80.0, -10.5], "expected": -10.5}, {"input": [-80.0, -10.0], "expected": -10.0}, {"input": [-80.0, -9.5], "expected": -9.5}, {"input": [-80.0, -9.0], "expected": -9.0}, {"input": [-80.0, -8.5], "expected": -8.5}, {"input": [-80.0, -8.0], "expected": -8.0}, {"input": [-80.0, -7.5], "expected": -7.5}, {"input": [-80.0, -7.0], "expected": -7.0}, {"input": [-80.0, -6.5], "expected": -6.5}, {"input": [-80.0, -6.0], "expected": -6.0}, {"input": [-80.0, -5.5], "expected": -5.5}, {"input": [-80.0, -5.0], "expected": -5.0}, {"input": [-80.0, -4.5], "expected": -4.5}, {"input": [-80.0, -4.0], "expected": -4.0}, {"input": [-80.0, -3.5], "expected": -3.5}, {"input": [-80.0, -3.0], "expected": -3.0}, {"input": [-80.0, -2.5], "expected": -2.5}, {"input": [-80.0, -2.0], "expected": -2.0}, {"input": [-80.0, -1.5], "expected": -1.5}, {"input": [-80.0, -1.0], "expected": -1.0}, {"input": [-80.0, -0.5], "expected": -0.5}, {"input": [-80.0, 0.0], "expected": 1.8048513878454153e-35}, {"input": [-80.0, 0.5], "expected": 0.5}, {"input": [-80.0, 1.0], "expected": 1.0}, {"input": [-80.0, 1.5], "expected": 1.5}, {"input": [-80.0, 2.0], "expected": 2.0}, {"input": [-80.0, 2.5], "expected": 2.5}, {"input": [-80.0, 3.0], "expected": 3.0}, {"input": [-80.0, 3.5], "expected": 3.5}, {"input": [-80.0, 4.0], "expected": 4.0}, {"input": [-80.0, 4.5], "expected": 4.5}, {"input": [-80.0, 5.0], "expected": 5.0}, {"input": [-80.0, 5.5], "expected": 5.5}, {"input": [-80.0, 6.0], "expected": 6.0}, {"input": [-80.0, 6.5], "expected": 6.5}, {"input": [-80.0, 7.0], "expected": 7.0}, {"input": [-80.0, 7.5], "expected": 7.5}, {"input": [-80.0, 8.0], "expected": 8.0}, {"input": [-80.0, 8.5], "expected": 8.5}, {"input": [-80.0, 9.0], "expected": 9.0}, {"input": [-80.0, 9.5], "expected": 9.5}, {"input": [-80.0, 10.0], "expected": 10.0}, {"input": [-80.0, 10.5], "expected": 10.5}, {"input": [-80.0, 11.0], "expected": 11.0}, {"input": [-80.0, 11.5], "expected": 11.5}, {"input": [-80.0, 12.0], "expected": 12.0}, {"input": [-80.0, 12.5], "expected": 12.5}, {"input": [-80.0, 13.0], "expected": 13.0}, {"input": [-80.0, 13.5], "expected": 13.5}, {"input": [-80.0, 14.0], "expected": 14.0}, {"input": [-80.0, 14.5], "expected": 14.5}, {"input": [-80.0, 15.0], "expected": 15.0}, {"input": [-80.0, 15.5], "expected": 15.5}, {"input": [-80.0, 16.0], "expected": 16.0}, {"input": [-80.0, 16.5], "expected": 16.5}, {"input": [-80.0, 17.0], "expected": 17.0}, {"input": [-80.0, 17.5], "expected": 17.5}, {"input": [-80.0, 18.0], "expected": 18.0}, {"input": [-80.0, 18.5], "expected": 18.5}, {"input": [-80.0, 19.0], "expected": 19.0}, {"input": [-80.0, 19.5], "expected": 19.5}, {"input": [-80.0, 20.0], "expected": 20.0}, {"input": [-80.0, 20.5], "expected": 20.5}, {"input": [-80.0, 21.0], "expected": 21.0}, {"input": [-80.0, 21.5], "expected": 21.5}, {"input": [-80.0, 22.0], "expected": 22.0}, {"input": [-80.0, 22.5], "expected": 22.5}, {"input": [-80.0, 23.0], "expected": 23.0}, {"input": [-80.0, 23.5], "expected": 23.5}, {"input": [-80.0, 24.0], "expected": 24.0}, {"input": [-80.0, 24.5], "expected": 24.5}, {"input": [-80.0, 25.0], "expected": 25.0}, {"input": [-80.0, 25.5], "expected": 25.5}, {"input": [-80.0, 26.0], "expected": 26.0}, {"input": [-80.0, 26.5], "expected": 26.5}, {"input": [-80.0, 27.0], "expected": 27.0}, {"input": [-80.0, 27.5], "expected": 27.5}, {"input": [-80.0, 28.0], "expected": 28.0}, {"input": [-80.0, 28.5], "expected": 28.5}, {"input": [-80.0, 29.0], "expected": 29.0}, {"input": [-80.0, 29.5], "expected": 29.5}, {"input": [-80.0, 30.0], "expected": 30.0}, {"input": [-80.0, 30.5], "expected": 30.5}, {"input": [-80.0, 31.0], "expected": 31.0}, {"input": [-80.0, 31.5], "expected": 31.5}, {"input": [-80.0, 32.0], "expected": 32.0}, {"input": [-80.0, 32.5], "expected": 32.5}, {"input": [-80.0, 33.0], "expected": 33.0}, {"input": [-80.0, 33.5], "expected": 33.5}, {"input": [-80.0, 34.0], "expected": 34.0}, {"input": [-80.0, 34.5], "expected": 34.5}, {"input": [-80.0, 35.0], "expected": 35.0}, {"input": [-80.0, 35.5], "expected": 35.5}, {"input": [-80.0, 36.0], "expected": 36.0}, {"input": [-80.0, 36.5], "expected": 36.5}, {"input": [-80.0, 37.0], "expected": 37.0}, {"input": [-80.0, 37.5], "expected": 37.5}, {"input": [-80.0, 38.0], "expected": 38.0}, {"input": [-80.0, 38.5], "expected": 38.5}, {"input": [-80.0, 39.0], "expected": 39.0}, {"input": [-80.0, 39.5], "expected": 39.5}, {"input": [-80.0, 40.0], "expected": 40.0}, {"input": [-80.0, 40.5], "expected": 40.5}, {"input": [-80.0, 41.0], "expected": 41.0}, {"input": [-80.0, 41.5], "expected": 41.5}, {"input": [-80.0, 42.0], "expected": 42.0}, {"input": [-80.0, 42.5], "expected": 42.5}, {"input": [-80.0, 43.0], "expected": 43.0}, {"input": [-80.0, 43.5], "expected": 43.5}, {"input": [-80.0, 44.0], "expected": 44.0}, {"input": [-80.0, 44.5], "expected": 44.5}, {"input": [-80.0, 45.0], "expected": 45.0}, {"input": [-80.0, 45.5], "expected": 45.5}, {"input": [-80.0, 46.0], "expected": 46.0}, {"input": [-80.0, 46.5], "expected": 46.5}, {"input": [-80.0, 47.0], "expected": 47.0}, {"input": [-80.0, 47.5], "expected": 47.5}, {"input": [-80.0, 48.0], "expected": 48.0}, {"input": [-80.0, 48.5], "expected": 48.5}, {"input": [-80.0, 49.0], "expected": 49.0}, {"input": [-80.0, 49.5], "expected": 49.5}, {"input": [-80.0, 50.0], "expected": 50.0}, {"input": [-80.0, 50.5], "expected": 50.5}, {"input": [-80.0, 51.0], "expected": 51.0}, {"input": [-80.0, 51.5], "expected": 51.5}, {"input": [-80.0, 52.0], "expected": 52.0}, {"input": [-80.0, 52.5], "expected": 52.5}, {"input": [-80.0, 53.0], "expected": 53.0}, {"input": [-80.0, 53.5], "expected": 53.5}, {"input": [-80.0, 54.0], "expected": 54.0}, {"input": [-80.0, 54.5], "expected": 54.5}, {"input": [-80.0, 55.0], "expected": 55.0}, {"input": [-80.0, 55.5], "expected": 55.5}, {"input": [-80.0, 56.0], "expected": 56.0}, {"input": [-80.0, 56.5], "expected": 56.5}, {"input": [-80.0, 57.0], "expected": 57.0}, {"input": [-80.0, 57.5], "expected": 57.5}, {"input": [-80.0, 58.0], "expected": 58.0}, {"input": [-80.0, 58.5], "expected": 58.5}, {"input": [-80.0, 59.0], "expected": 59.0}, {"input": [-80.0, 59.5], "expected": 59.5}, {"input": [-80.0, 60.0], "expected": 60.0}, {"input": [-80.0, 60.5], "expected": 60.5}, {"input": [-80.0, 61.0], "expected": 61.0}, {"input": [-80.0, 61.5], "expected": 61.5}, {"input": [-80.0, 62.0], "expected": 62.0}, {"input": [-80.0, 62.5], "expected": 62.5}, {"input": [-80.0, 63.0], "expected": 63.0}, {"input": [-80.0, 63.5], "expected": 63.5}, {"input": [-80.0, 64.0], "expected": 64.0}, {"input": [-80.0, 64.5], "expected": 64.5}, {"input": [-80.0, 65.0], "expected": 65.0}, {"input": [-80.0, 65.5], "expected": 65.5}, {"input": [-80.0, 66.0], "expected": 66.0}, {"input": [-80.0, 66.5], "expected": 66.5}, {"input": [-80.0, 67.0], "expected": 67.0}, {"input": [-80.0, 67.5], "expected": 67.5}, {"input": [-80.0, 68.0], "expected": 68.0}, {"input": [-80.0, 68.5], "expected": 68.5}, {"input": [-80.0, 69.0], "expected": 69.0}, {"input": [-80.0, 69.5], "expected": 69.5}, {"input": [-80.0, 70.0], "expected": 70.0}, {"input": [-80.0, 70.5], "expected": 70.5}, {"input": [-80.0, 71.0], "expected": 71.0}, {"input": [-80.0, 71.5], "expected": 71.5}, {"input": [-80.0, 72.0], "expected": 72.0}, {"input": [-80.0, 72.5], "expected": 72.5}, {"input": [-80.0, 73.0], "expected": 73.0}, {"input": [-80.0, 73.5], "expected": 73.5}, {"input": [-80.0, 74.0], "expected": 74.0}, {"input": [-80.0, 74.5], "expected": 74.5}, {"input": [-80.0, 75.0], "expected": 75.0}, {"input": [-80.0, 75.5], "expected": 75.5}, {"input": [-80.0, 76.0], "expected": 76.0}, {"input": [-80.0, 76.5], "expected": 76.5}, {"input": [-80.0, 77.0], "expected": 77.0}, {"input": [-80.0, 77.5], "expected": 77.5}, {"input": [-80.0, 78.0], "expected": 78.0}, {"input": [-80.0, 78.5], "expected": 78.5}, {"input": [-80.0, 79.0], "expected": 79.0}, {"input": [-80.0, 79.5], "expected": 79.5}, {"input": [-80.0, 80.0], "expected": 80.0}, {"input": [-80.0, 80.5], "expected": 80.5}, {"input": [-80.0, 81.0], "expected": 81.0}, {"input": [-80.0, 81.5], "expected": 81.5}, {"input": [-80.0, 82.0], "expected": 82.0}, {"input": [-80.0, 82.5], "expected": 82.5}, {"input": [-80.0, 83.0], "expected": 83.0}, {"input": [-80.0, 83.5], "expected": 83.5}, {"input": [-80.0, 84.0], "expected": 84.0}, {"input": [-80.0, 84.5], "expected": 84.5}, {"input": [-80.0, 85.0], "expected": 85.0}, {"input": [-80.0, 85.5], "expected": 85.5}, {"input": [-80.0, 86.0], "expected": 86.0}, {"input": [-80.0, 86.5], "expected": 86.5}, {"input": [-80.0, 87.0], "expected": 87.0}, {"input": [-80.0, 87.5], "expected": 87.5}, {"input": [-80.0, 88.0], "expected": 88.0}, {"input": [-80.0, 88.5], "expected": 88.5}, {"input": [-80.0, 89.0], "expected": 89.0}, {"input": [-80.0, 89.5], "expected": 89.5}, {"input": [-80.0, 90.0], "expected": 90.0}, {"input": [-80.0, 90.5], "expected": 90.5}, {"input": [-80.0, 91.0], "expected": 91.0}, {"input": [-80.0, 91.5], "expected": 91.5}, {"input": [-80.0, 92.0], "expected": 92.0}, {"input": [-80.0, 92.5], "expected": 92.5}, {"input": [-80.0, 93.0], "expected": 93.0}, {"input": [-80.0, 93.5], "expected": 93.5}, {"input": [-80.0, 94.0], "expected": 94.0}, {"input": [-80.0, 94.5], "expected": 94.5}, {"input": [-80.0, 95.0], "expected": 95.0}, {"input": [-80.0, 95.5], "expected": 95.5}, {"input": [-80.0, 96.0], "expected": 96.0}, {"input": [-80.0, 96.5], "expected": 96.5}, {"input": [-80.0, 97.0], "expected": 97.0}, {"input": [-80.0, 97.5], "expected": 97.5}, {"input": [-80.0, 98.0], "expected": 98.0}, {"input": [-80.0, 98.5], "expected": 98.5}, {"input": [-80.0, 99.0], "expected": 99.0}, {"input": [-80.0, 99.5], "expected": 99.5}, {"input": [-79.5, -100.0], "expected": -79.49999999874984}, {"input": [-79.5, -99.5], "expected": -79.49999999793884}, {"input": [-79.5, -99.0], "expected": -79.49999999660173}, {"input": [-79.5, -98.5], "expected": -79.4999999943972}, {"input": [-79.5, -98.0], "expected": -79.49999999076255}, {"input": [-79.5, -97.5], "expected": -79.49999998477001}, {"input": [-79.5, -97.0], "expected": -79.49999997489}, {"input": [-79.5, -96.5], "expected": -79.49999995860063}, {"input": [-79.5, -96.0], "expected": -79.49999993174397}, {"input": [-79.5, -95.5], "expected": -79.49999988746484}, {"input": [-79.5, -95.0], "expected": -79.49999981446088}, {"input": [-79.5, -94.5], "expected": -79.49999969409772}, {"input": [-79.5, -94.0], "expected": -79.49999949565246}, {"input": [-79.5, -93.5], "expected": -79.49999916847163}, {"input": [-79.5, -93.0], "expected": -79.49999862904185}, {"input": [-79.5, -92.5], "expected": -79.49999773967315}, {"input": [-79.5, -92.0], "expected": -79.49999627335377}, {"input": [-79.5, -91.5], "expected": -79.49999385580652}, {"input": [-79.5, -91.0], "expected": -79.49998986995772}, {"input": [-79.5, -90.5], "expected": -79.49998329843868}, {"input": [-79.5, -90.0], "expected": -79.49997246392977}, {"input": [-79.5, -89.5], "expected": -79.49995460110078}, {"input": [-79.5, -89.0], "expected": -79.49992515097136}, {"input": [-79.5, -88.5], "expected": -79.49987659781027}, {"input": [-79.5, -88.0], "expected": -79.49979655232787}, {"input": [-79.5, -87.5], "expected": -79.4996645936271}, {"input": [-79.5, -87.0], "expected": -79.49944706852465}, {"input": [-79.5, -86.5], "expected": -79.49908853354623}, {"input": [-79.5, -86.0], "expected": -79.49849768984025}, {"input": [-79.5, -85.5], "expected": -79.49752431486228}, {"input": [-79.5, -85.0], "expected": -79.49592155672943}, {"input": [-79.5, -84.5], "expected": -79.49328465151088}, {"input": [-79.5, -84.0], "expected": -79.4889522551514}, {"input": [-79.5, -83.5], "expected": -79.4818500720822}, {"input": [-79.5, -83.0], "expected": -79.47024958172737}, {"input": [-79.5, -82.5], "expected": -79.45141264842626}, {"input": [-79.5, -82.0], "expected": -79.42111026570745}, {"input": [-79.5, -81.5], "expected": -79.37307198895702}, {"input": [-79.5, -81.0], "expected": -79.29858672201725}, {"input": [-79.5, -80.5], "expected": -79.18673831248178}, {"input": [-79.5, -80.0], "expected": -79.0259230158199}, {"input": [-79.5, -79.5], "expected": -78.80685281944005}, {"input": [-79.5, -79.0], "expected": -78.5259230158199}, {"input": [-79.5, -78.5], "expected": -78.18673831248178}, {"input": [-79.5, -78.0], "expected": -77.79858672201725}, {"input": [-79.5, -77.5], "expected": -77.37307198895702}, {"input": [-79.5, -77.0], "expected": -76.92111026570745}, {"input": [-79.5, -76.5], "expected": -76.45141264842626}, {"input": [-79.5, -76.0], "expected": -75.97024958172737}, {"input": [-79.5, -75.5], "expected": -75.4818500720822}, {"input": [-79.5, -75.0], "expected": -74.9889522551514}, {"input": [-79.5, -74.5], "expected": -74.49328465151088}, {"input": [-79.5, -74.0], "expected": -73.99592155672943}, {"input": [-79.5, -73.5], "expected": -73.49752431486228}, {"input": [-79.5, -73.0], "expected": -72.99849768984025}, {"input": [-79.5, -72.5], "expected": -72.49908853354623}, {"input": [-79.5, -72.0], "expected": -71.99944706852465}, {"input": [-79.5, -71.5], "expected": -71.4996645936271}, {"input": [-79.5, -71.0], "expected": -70.99979655232787}, {"input": [-79.5, -70.5], "expected": -70.49987659781027}, {"input": [-79.5, -70.0], "expected": -69.99992515097136}, {"input": [-79.5, -69.5], "expected": -69.49995460110078}, {"input": [-79.5, -69.0], "expected": -68.99997246392977}, {"input": [-79.5, -68.5], "expected": -68.49998329843868}, {"input": [-79.5, -68.0], "expected": -67.99998986995772}, {"input": [-79.5, -67.5], "expected": -67.49999385580652}, {"input": [-79.5, -67.0], "expected": -66.99999627335377}, {"input": [-79.5, -66.5], "expected": -66.49999773967315}, {"input": [-79.5, -66.0], "expected": -65.99999862904185}, {"input": [-79.5, -65.5], "expected": -65.49999916847163}, {"input": [-79.5, -65.0], "expected": -64.99999949565246}, {"input": [-79.5, -64.5], "expected": -64.49999969409772}, {"input": [-79.5, -64.0], "expected": -63.99999981446088}, {"input": [-79.5, -63.5], "expected": -63.49999988746483}, {"input": [-79.5, -63.0], "expected": -62.99999993174397}, {"input": [-79.5, -62.5], "expected": -62.499999958600625}, {"input": [-79.5, -62.0], "expected": -61.99999997489001}, {"input": [-79.5, -61.5], "expected": -61.49999998477002}, {"input": [-79.5, -61.0], "expected": -60.999999990762554}, {"input": [-79.5, -60.5], "expected": -60.49999999439721}, {"input": [-79.5, -60.0], "expected": -59.99999999660173}, {"input": [-79.5, -59.5], "expected": -59.49999999793884}, {"input": [-79.5, -59.0], "expected": -58.99999999874985}, {"input": [-79.5, -58.5], "expected": -58.499999999241744}, {"input": [-79.5, -58.0], "expected": -57.999999999540094}, {"input": [-79.5, -57.5], "expected": -57.499999999721055}, {"input": [-79.5, -57.0], "expected": -56.99999999983081}, {"input": [-79.5, -56.5], "expected": -56.49999999989738}, {"input": [-79.5, -56.0], "expected": -55.99999999993776}, {"input": [-79.5, -55.5], "expected": -55.49999999996225}, {"input": [-79.5, -55.0], "expected": -54.9999999999771}, {"input": [-79.5, -54.5], "expected": -54.49999999998611}, {"input": [-79.5, -54.0], "expected": -53.99999999999158}, {"input": [-79.5, -53.5], "expected": -53.49999999999489}, {"input": [-79.5, -53.0], "expected": -52.9999999999969}, {"input": [-79.5, -52.5], "expected": -52.49999999999812}, {"input": [-79.5, -52.0], "expected": -51.99999999999886}, {"input": [-79.5, -51.5], "expected": -51.49999999999931}, {"input": [-79.5, -51.0], "expected": -50.99999999999958}, {"input": [-79.5, -50.5], "expected": -50.499999999999744}, {"input": [-79.5, -50.0], "expected": -49.999999999999844}, {"input": [-79.5, -49.5], "expected": -49.49999999999991}, {"input": [-79.5, -49.0], "expected": -48.99999999999994}, {"input": [-79.5, -48.5], "expected": -48.499999999999964}, {"input": [-79.5, -48.0], "expected": -47.99999999999998}, {"input": [-79.5, -47.5], "expected": -47.499999999999986}, {"input": [-79.5, -47.0], "expected": -46.99999999999999}, {"input": [-79.5, -46.5], "expected": -46.49999999999999}, {"input": [-79.5, -46.0], "expected": -46.0}, {"input": [-79.5, -45.5], "expected": -45.5}, {"input": [-79.5, -45.0], "expected": -45.0}, {"input": [-79.5, -44.5], "expected": -44.5}, {"input": [-79.5, -44.0], "expected": -44.0}, {"input": [-79.5, -43.5], "expected": -43.5}, {"input": [-79.5, -43.0], "expected": -43.0}, {"input": [-79.5, -42.5], "expected": -42.5}, {"input": [-79.5, -42.0], "expected": -42.0}, {"input": [-79.5, -41.5], "expected": -41.5}, {"input": [-79.5, -41.0], "expected": -41.0}, {"input": [-79.5, -40.5], "expected": -40.5}, {"input": [-79.5, -40.0], "expected": -40.0}, {"input": [-79.5, -39.5], "expected": -39.5}, {"input": [-79.5, -39.0], "expected": -39.0}, {"input": [-79.5, -38.5], "expected": -38.5}, {"input": [-79.5, -38.0], "expected": -38.0}, {"input": [-79.5, -37.5], "expected": -37.5}, {"input": [-79.5, -37.0], "expected": -37.0}, {"input": [-79.5, -36.5], "expected": -36.5}, {"input": [-79.5, -36.0], "expected": -36.0}, {"input": [-79.5, -35.5], "expected": -35.5}, {"input": [-79.5, -35.0], "expected": -35.0}, {"input": [-79.5, -34.5], "expected": -34.5}, {"input": [-79.5, -34.0], "expected": -34.0}, {"input": [-79.5, -33.5], "expected": -33.5}, {"input": [-79.5, -33.0], "expected": -33.0}, {"input": [-79.5, -32.5], "expected": -32.5}, {"input": [-79.5, -32.0], "expected": -32.0}, {"input": [-79.5, -31.5], "expected": -31.5}, {"input": [-79.5, -31.0], "expected": -31.0}, {"input": [-79.5, -30.5], "expected": -30.5}, {"input": [-79.5, -30.0], "expected": -30.0}, {"input": [-79.5, -29.5], "expected": -29.5}, {"input": [-79.5, -29.0], "expected": -29.0}, {"input": [-79.5, -28.5], "expected": -28.5}, {"input": [-79.5, -28.0], "expected": -28.0}, {"input": [-79.5, -27.5], "expected": -27.5}, {"input": [-79.5, -27.0], "expected": -27.0}, {"input": [-79.5, -26.5], "expected": -26.5}, {"input": [-79.5, -26.0], "expected": -26.0}, {"input": [-79.5, -25.5], "expected": -25.5}, {"input": [-79.5, -25.0], "expected": -25.0}, {"input": [-79.5, -24.5], "expected": -24.5}, {"input": [-79.5, -24.0], "expected": -24.0}, {"input": [-79.5, -23.5], "expected": -23.5}, {"input": [-79.5, -23.0], "expected": -23.0}, {"input": [-79.5, -22.5], "expected": -22.5}, {"input": [-79.5, -22.0], "expected": -22.0}, {"input": [-79.5, -21.5], "expected": -21.5}, {"input": [-79.5, -21.0], "expected": -21.0}, {"input": [-79.5, -20.5], "expected": -20.5}, {"input": [-79.5, -20.0], "expected": -20.0}, {"input": [-79.5, -19.5], "expected": -19.5}, {"input": [-79.5, -19.0], "expected": -19.0}, {"input": [-79.5, -18.5], "expected": -18.5}, {"input": [-79.5, -18.0], "expected": -18.0}, {"input": [-79.5, -17.5], "expected": -17.5}, {"input": [-79.5, -17.0], "expected": -17.0}, {"input": [-79.5, -16.5], "expected": -16.5}, {"input": [-79.5, -16.0], "expected": -16.0}, {"input": [-79.5, -15.5], "expected": -15.5}, {"input": [-79.5, -15.0], "expected": -15.0}, {"input": [-79.5, -14.5], "expected": -14.5}, {"input": [-79.5, -14.0], "expected": -14.0}, {"input": [-79.5, -13.5], "expected": -13.5}, {"input": [-79.5, -13.0], "expected": -13.0}, {"input": [-79.5, -12.5], "expected": -12.5}, {"input": [-79.5, -12.0], "expected": -12.0}, {"input": [-79.5, -11.5], "expected": -11.5}, {"input": [-79.5, -11.0], "expected": -11.0}, {"input": [-79.5, -10.5], "expected": -10.5}, {"input": [-79.5, -10.0], "expected": -10.0}, {"input": [-79.5, -9.5], "expected": -9.5}, {"input": [-79.5, -9.0], "expected": -9.0}, {"input": [-79.5, -8.5], "expected": -8.5}, {"input": [-79.5, -8.0], "expected": -8.0}, {"input": [-79.5, -7.5], "expected": -7.5}, {"input": [-79.5, -7.0], "expected": -7.0}, {"input": [-79.5, -6.5], "expected": -6.5}, {"input": [-79.5, -6.0], "expected": -6.0}, {"input": [-79.5, -5.5], "expected": -5.5}, {"input": [-79.5, -5.0], "expected": -5.0}, {"input": [-79.5, -4.5], "expected": -4.5}, {"input": [-79.5, -4.0], "expected": -4.0}, {"input": [-79.5, -3.5], "expected": -3.5}, {"input": [-79.5, -3.0], "expected": -3.0}, {"input": [-79.5, -2.5], "expected": -2.5}, {"input": [-79.5, -2.0], "expected": -2.0}, {"input": [-79.5, -1.5], "expected": -1.5}, {"input": [-79.5, -1.0], "expected": -1.0}, {"input": [-79.5, -0.5], "expected": -0.5}, {"input": [-79.5, 0.0], "expected": 2.9756968735933825e-35}, {"input": [-79.5, 0.5], "expected": 0.5}, {"input": [-79.5, 1.0], "expected": 1.0}, {"input": [-79.5, 1.5], "expected": 1.5}, {"input": [-79.5, 2.0], "expected": 2.0}, {"input": [-79.5, 2.5], "expected": 2.5}, {"input": [-79.5, 3.0], "expected": 3.0}, {"input": [-79.5, 3.5], "expected": 3.5}, {"input": [-79.5, 4.0], "expected": 4.0}, {"input": [-79.5, 4.5], "expected": 4.5}, {"input": [-79.5, 5.0], "expected": 5.0}, {"input": [-79.5, 5.5], "expected": 5.5}, {"input": [-79.5, 6.0], "expected": 6.0}, {"input": [-79.5, 6.5], "expected": 6.5}, {"input": [-79.5, 7.0], "expected": 7.0}, {"input": [-79.5, 7.5], "expected": 7.5}, {"input": [-79.5, 8.0], "expected": 8.0}, {"input": [-79.5, 8.5], "expected": 8.5}, {"input": [-79.5, 9.0], "expected": 9.0}, {"input": [-79.5, 9.5], "expected": 9.5}, {"input": [-79.5, 10.0], "expected": 10.0}, {"input": [-79.5, 10.5], "expected": 10.5}, {"input": [-79.5, 11.0], "expected": 11.0}, {"input": [-79.5, 11.5], "expected": 11.5}, {"input": [-79.5, 12.0], "expected": 12.0}, {"input": [-79.5, 12.5], "expected": 12.5}, {"input": [-79.5, 13.0], "expected": 13.0}, {"input": [-79.5, 13.5], "expected": 13.5}, {"input": [-79.5, 14.0], "expected": 14.0}, {"input": [-79.5, 14.5], "expected": 14.5}, {"input": [-79.5, 15.0], "expected": 15.0}, {"input": [-79.5, 15.5], "expected": 15.5}, {"input": [-79.5, 16.0], "expected": 16.0}, {"input": [-79.5, 16.5], "expected": 16.5}, {"input": [-79.5, 17.0], "expected": 17.0}, {"input": [-79.5, 17.5], "expected": 17.5}, {"input": [-79.5, 18.0], "expected": 18.0}, {"input": [-79.5, 18.5], "expected": 18.5}, {"input": [-79.5, 19.0], "expected": 19.0}, {"input": [-79.5, 19.5], "expected": 19.5}, {"input": [-79.5, 20.0], "expected": 20.0}, {"input": [-79.5, 20.5], "expected": 20.5}, {"input": [-79.5, 21.0], "expected": 21.0}, {"input": [-79.5, 21.5], "expected": 21.5}, {"input": [-79.5, 22.0], "expected": 22.0}, {"input": [-79.5, 22.5], "expected": 22.5}, {"input": [-79.5, 23.0], "expected": 23.0}, {"input": [-79.5, 23.5], "expected": 23.5}, {"input": [-79.5, 24.0], "expected": 24.0}, {"input": [-79.5, 24.5], "expected": 24.5}, {"input": [-79.5, 25.0], "expected": 25.0}, {"input": [-79.5, 25.5], "expected": 25.5}, {"input": [-79.5, 26.0], "expected": 26.0}, {"input": [-79.5, 26.5], "expected": 26.5}, {"input": [-79.5, 27.0], "expected": 27.0}, {"input": [-79.5, 27.5], "expected": 27.5}, {"input": [-79.5, 28.0], "expected": 28.0}, {"input": [-79.5, 28.5], "expected": 28.5}, {"input": [-79.5, 29.0], "expected": 29.0}, {"input": [-79.5, 29.5], "expected": 29.5}, {"input": [-79.5, 30.0], "expected": 30.0}, {"input": [-79.5, 30.5], "expected": 30.5}, {"input": [-79.5, 31.0], "expected": 31.0}, {"input": [-79.5, 31.5], "expected": 31.5}, {"input": [-79.5, 32.0], "expected": 32.0}, {"input": [-79.5, 32.5], "expected": 32.5}, {"input": [-79.5, 33.0], "expected": 33.0}, {"input": [-79.5, 33.5], "expected": 33.5}, {"input": [-79.5, 34.0], "expected": 34.0}, {"input": [-79.5, 34.5], "expected": 34.5}, {"input": [-79.5, 35.0], "expected": 35.0}, {"input": [-79.5, 35.5], "expected": 35.5}, {"input": [-79.5, 36.0], "expected": 36.0}, {"input": [-79.5, 36.5], "expected": 36.5}, {"input": [-79.5, 37.0], "expected": 37.0}, {"input": [-79.5, 37.5], "expected": 37.5}, {"input": [-79.5, 38.0], "expected": 38.0}, {"input": [-79.5, 38.5], "expected": 38.5}, {"input": [-79.5, 39.0], "expected": 39.0}, {"input": [-79.5, 39.5], "expected": 39.5}, {"input": [-79.5, 40.0], "expected": 40.0}, {"input": [-79.5, 40.5], "expected": 40.5}, {"input": [-79.5, 41.0], "expected": 41.0}, {"input": [-79.5, 41.5], "expected": 41.5}, {"input": [-79.5, 42.0], "expected": 42.0}, {"input": [-79.5, 42.5], "expected": 42.5}, {"input": [-79.5, 43.0], "expected": 43.0}, {"input": [-79.5, 43.5], "expected": 43.5}, {"input": [-79.5, 44.0], "expected": 44.0}, {"input": [-79.5, 44.5], "expected": 44.5}, {"input": [-79.5, 45.0], "expected": 45.0}, {"input": [-79.5, 45.5], "expected": 45.5}, {"input": [-79.5, 46.0], "expected": 46.0}, {"input": [-79.5, 46.5], "expected": 46.5}, {"input": [-79.5, 47.0], "expected": 47.0}, {"input": [-79.5, 47.5], "expected": 47.5}, {"input": [-79.5, 48.0], "expected": 48.0}, {"input": [-79.5, 48.5], "expected": 48.5}, {"input": [-79.5, 49.0], "expected": 49.0}, {"input": [-79.5, 49.5], "expected": 49.5}, {"input": [-79.5, 50.0], "expected": 50.0}, {"input": [-79.5, 50.5], "expected": 50.5}, {"input": [-79.5, 51.0], "expected": 51.0}, {"input": [-79.5, 51.5], "expected": 51.5}, {"input": [-79.5, 52.0], "expected": 52.0}, {"input": [-79.5, 52.5], "expected": 52.5}, {"input": [-79.5, 53.0], "expected": 53.0}, {"input": [-79.5, 53.5], "expected": 53.5}, {"input": [-79.5, 54.0], "expected": 54.0}, {"input": [-79.5, 54.5], "expected": 54.5}, {"input": [-79.5, 55.0], "expected": 55.0}, {"input": [-79.5, 55.5], "expected": 55.5}, {"input": [-79.5, 56.0], "expected": 56.0}, {"input": [-79.5, 56.5], "expected": 56.5}, {"input": [-79.5, 57.0], "expected": 57.0}, {"input": [-79.5, 57.5], "expected": 57.5}, {"input": [-79.5, 58.0], "expected": 58.0}, {"input": [-79.5, 58.5], "expected": 58.5}, {"input": [-79.5, 59.0], "expected": 59.0}, {"input": [-79.5, 59.5], "expected": 59.5}, {"input": [-79.5, 60.0], "expected": 60.0}, {"input": [-79.5, 60.5], "expected": 60.5}, {"input": [-79.5, 61.0], "expected": 61.0}, {"input": [-79.5, 61.5], "expected": 61.5}, {"input": [-79.5, 62.0], "expected": 62.0}, {"input": [-79.5, 62.5], "expected": 62.5}, {"input": [-79.5, 63.0], "expected": 63.0}, {"input": [-79.5, 63.5], "expected": 63.5}, {"input": [-79.5, 64.0], "expected": 64.0}, {"input": [-79.5, 64.5], "expected": 64.5}, {"input": [-79.5, 65.0], "expected": 65.0}, {"input": [-79.5, 65.5], "expected": 65.5}, {"input": [-79.5, 66.0], "expected": 66.0}, {"input": [-79.5, 66.5], "expected": 66.5}, {"input": [-79.5, 67.0], "expected": 67.0}, {"input": [-79.5, 67.5], "expected": 67.5}, {"input": [-79.5, 68.0], "expected": 68.0}, {"input": [-79.5, 68.5], "expected": 68.5}, {"input": [-79.5, 69.0], "expected": 69.0}, {"input": [-79.5, 69.5], "expected": 69.5}, {"input": [-79.5, 70.0], "expected": 70.0}, {"input": [-79.5, 70.5], "expected": 70.5}, {"input": [-79.5, 71.0], "expected": 71.0}, {"input": [-79.5, 71.5], "expected": 71.5}, {"input": [-79.5, 72.0], "expected": 72.0}, {"input": [-79.5, 72.5], "expected": 72.5}, {"input": [-79.5, 73.0], "expected": 73.0}, {"input": [-79.5, 73.5], "expected": 73.5}, {"input": [-79.5, 74.0], "expected": 74.0}, {"input": [-79.5, 74.5], "expected": 74.5}, {"input": [-79.5, 75.0], "expected": 75.0}, {"input": [-79.5, 75.5], "expected": 75.5}, {"input": [-79.5, 76.0], "expected": 76.0}, {"input": [-79.5, 76.5], "expected": 76.5}, {"input": [-79.5, 77.0], "expected": 77.0}, {"input": [-79.5, 77.5], "expected": 77.5}, {"input": [-79.5, 78.0], "expected": 78.0}, {"input": [-79.5, 78.5], "expected": 78.5}, {"input": [-79.5, 79.0], "expected": 79.0}, {"input": [-79.5, 79.5], "expected": 79.5}, {"input": [-79.5, 80.0], "expected": 80.0}, {"input": [-79.5, 80.5], "expected": 80.5}, {"input": [-79.5, 81.0], "expected": 81.0}, {"input": [-79.5, 81.5], "expected": 81.5}, {"input": [-79.5, 82.0], "expected": 82.0}, {"input": [-79.5, 82.5], "expected": 82.5}, {"input": [-79.5, 83.0], "expected": 83.0}, {"input": [-79.5, 83.5], "expected": 83.5}, {"input": [-79.5, 84.0], "expected": 84.0}, {"input": [-79.5, 84.5], "expected": 84.5}, {"input": [-79.5, 85.0], "expected": 85.0}, {"input": [-79.5, 85.5], "expected": 85.5}, {"input": [-79.5, 86.0], "expected": 86.0}, {"input": [-79.5, 86.5], "expected": 86.5}, {"input": [-79.5, 87.0], "expected": 87.0}, {"input": [-79.5, 87.5], "expected": 87.5}, {"input": [-79.5, 88.0], "expected": 88.0}, {"input": [-79.5, 88.5], "expected": 88.5}, {"input": [-79.5, 89.0], "expected": 89.0}, {"input": [-79.5, 89.5], "expected": 89.5}, {"input": [-79.5, 90.0], "expected": 90.0}, {"input": [-79.5, 90.5], "expected": 90.5}, {"input": [-79.5, 91.0], "expected": 91.0}, {"input": [-79.5, 91.5], "expected": 91.5}, {"input": [-79.5, 92.0], "expected": 92.0}, {"input": [-79.5, 92.5], "expected": 92.5}, {"input": [-79.5, 93.0], "expected": 93.0}, {"input": [-79.5, 93.5], "expected": 93.5}, {"input": [-79.5, 94.0], "expected": 94.0}, {"input": [-79.5, 94.5], "expected": 94.5}, {"input": [-79.5, 95.0], "expected": 95.0}, {"input": [-79.5, 95.5], "expected": 95.5}, {"input": [-79.5, 96.0], "expected": 96.0}, {"input": [-79.5, 96.5], "expected": 96.5}, {"input": [-79.5, 97.0], "expected": 97.0}, {"input": [-79.5, 97.5], "expected": 97.5}, {"input": [-79.5, 98.0], "expected": 98.0}, {"input": [-79.5, 98.5], "expected": 98.5}, {"input": [-79.5, 99.0], "expected": 99.0}, {"input": [-79.5, 99.5], "expected": 99.5}, {"input": [-79.0, -100.0], "expected": -78.99999999924174}, {"input": [-79.0, -99.5], "expected": -78.99999999874984}, {"input": [-79.0, -99.0], "expected": -78.99999999793884}, {"input": [-79.0, -98.5], "expected": -78.99999999660173}, {"input": [-79.0, -98.0], "expected": -78.9999999943972}, {"input": [-79.0, -97.5], "expected": -78.99999999076255}, {"input": [-79.0, -97.0], "expected": -78.99999998477001}, {"input": [-79.0, -96.5], "expected": -78.99999997489}, {"input": [-79.0, -96.0], "expected": -78.99999995860063}, {"input": [-79.0, -95.5], "expected": -78.99999993174397}, {"input": [-79.0, -95.0], "expected": -78.99999988746484}, {"input": [-79.0, -94.5], "expected": -78.99999981446088}, {"input": [-79.0, -94.0], "expected": -78.99999969409772}, {"input": [-79.0, -93.5], "expected": -78.99999949565246}, {"input": [-79.0, -93.0], "expected": -78.99999916847163}, {"input": [-79.0, -92.5], "expected": -78.99999862904185}, {"input": [-79.0, -92.0], "expected": -78.99999773967315}, {"input": [-79.0, -91.5], "expected": -78.99999627335377}, {"input": [-79.0, -91.0], "expected": -78.99999385580652}, {"input": [-79.0, -90.5], "expected": -78.99998986995772}, {"input": [-79.0, -90.0], "expected": -78.99998329843868}, {"input": [-79.0, -89.5], "expected": -78.99997246392977}, {"input": [-79.0, -89.0], "expected": -78.99995460110078}, {"input": [-79.0, -88.5], "expected": -78.99992515097136}, {"input": [-79.0, -88.0], "expected": -78.99987659781027}, {"input": [-79.0, -87.5], "expected": -78.99979655232787}, {"input": [-79.0, -87.0], "expected": -78.9996645936271}, {"input": [-79.0, -86.5], "expected": -78.99944706852465}, {"input": [-79.0, -86.0], "expected": -78.99908853354623}, {"input": [-79.0, -85.5], "expected": -78.99849768984025}, {"input": [-79.0, -85.0], "expected": -78.99752431486228}, {"input": [-79.0, -84.5], "expected": -78.99592155672943}, {"input": [-79.0, -84.0], "expected": -78.99328465151088}, {"input": [-79.0, -83.5], "expected": -78.9889522551514}, {"input": [-79.0, -83.0], "expected": -78.9818500720822}, {"input": [-79.0, -82.5], "expected": -78.97024958172737}, {"input": [-79.0, -82.0], "expected": -78.95141264842626}, {"input": [-79.0, -81.5], "expected": -78.92111026570745}, {"input": [-79.0, -81.0], "expected": -78.87307198895702}, {"input": [-79.0, -80.5], "expected": -78.79858672201725}, {"input": [-79.0, -80.0], "expected": -78.68673831248178}, {"input": [-79.0, -79.5], "expected": -78.5259230158199}, {"input": [-79.0, -79.0], "expected": -78.30685281944005}, {"input": [-79.0, -78.5], "expected": -78.0259230158199}, {"input": [-79.0, -78.0], "expected": -77.68673831248178}, {"input": [-79.0, -77.5], "expected": -77.29858672201725}, {"input": [-79.0, -77.0], "expected": -76.87307198895702}, {"input": [-79.0, -76.5], "expected": -76.42111026570745}, {"input": [-79.0, -76.0], "expected": -75.95141264842626}, {"input": [-79.0, -75.5], "expected": -75.47024958172737}, {"input": [-79.0, -75.0], "expected": -74.9818500720822}, {"input": [-79.0, -74.5], "expected": -74.4889522551514}, {"input": [-79.0, -74.0], "expected": -73.99328465151088}, {"input": [-79.0, -73.5], "expected": -73.49592155672943}, {"input": [-79.0, -73.0], "expected": -72.99752431486228}, {"input": [-79.0, -72.5], "expected": -72.49849768984025}, {"input": [-79.0, -72.0], "expected": -71.99908853354623}, {"input": [-79.0, -71.5], "expected": -71.49944706852465}, {"input": [-79.0, -71.0], "expected": -70.9996645936271}, {"input": [-79.0, -70.5], "expected": -70.49979655232787}, {"input": [-79.0, -70.0], "expected": -69.99987659781027}, {"input": [-79.0, -69.5], "expected": -69.49992515097136}, {"input": [-79.0, -69.0], "expected": -68.99995460110078}, {"input": [-79.0, -68.5], "expected": -68.49997246392977}, {"input": [-79.0, -68.0], "expected": -67.99998329843868}, {"input": [-79.0, -67.5], "expected": -67.49998986995772}, {"input": [-79.0, -67.0], "expected": -66.99999385580652}, {"input": [-79.0, -66.5], "expected": -66.49999627335377}, {"input": [-79.0, -66.0], "expected": -65.99999773967315}, {"input": [-79.0, -65.5], "expected": -65.49999862904185}, {"input": [-79.0, -65.0], "expected": -64.99999916847163}, {"input": [-79.0, -64.5], "expected": -64.49999949565246}, {"input": [-79.0, -64.0], "expected": -63.999999694097724}, {"input": [-79.0, -63.5], "expected": -63.49999981446088}, {"input": [-79.0, -63.0], "expected": -62.99999988746483}, {"input": [-79.0, -62.5], "expected": -62.49999993174397}, {"input": [-79.0, -62.0], "expected": -61.999999958600625}, {"input": [-79.0, -61.5], "expected": -61.49999997489001}, {"input": [-79.0, -61.0], "expected": -60.99999998477002}, {"input": [-79.0, -60.5], "expected": -60.499999990762554}, {"input": [-79.0, -60.0], "expected": -59.99999999439721}, {"input": [-79.0, -59.5], "expected": -59.49999999660173}, {"input": [-79.0, -59.0], "expected": -58.99999999793884}, {"input": [-79.0, -58.5], "expected": -58.49999999874985}, {"input": [-79.0, -58.0], "expected": -57.999999999241744}, {"input": [-79.0, -57.5], "expected": -57.499999999540094}, {"input": [-79.0, -57.0], "expected": -56.999999999721055}, {"input": [-79.0, -56.5], "expected": -56.49999999983081}, {"input": [-79.0, -56.0], "expected": -55.99999999989738}, {"input": [-79.0, -55.5], "expected": -55.49999999993776}, {"input": [-79.0, -55.0], "expected": -54.99999999996225}, {"input": [-79.0, -54.5], "expected": -54.4999999999771}, {"input": [-79.0, -54.0], "expected": -53.99999999998611}, {"input": [-79.0, -53.5], "expected": -53.49999999999158}, {"input": [-79.0, -53.0], "expected": -52.99999999999489}, {"input": [-79.0, -52.5], "expected": -52.4999999999969}, {"input": [-79.0, -52.0], "expected": -51.99999999999812}, {"input": [-79.0, -51.5], "expected": -51.49999999999886}, {"input": [-79.0, -51.0], "expected": -50.99999999999931}, {"input": [-79.0, -50.5], "expected": -50.49999999999958}, {"input": [-79.0, -50.0], "expected": -49.999999999999744}, {"input": [-79.0, -49.5], "expected": -49.499999999999844}, {"input": [-79.0, -49.0], "expected": -48.99999999999991}, {"input": [-79.0, -48.5], "expected": -48.49999999999994}, {"input": [-79.0, -48.0], "expected": -47.999999999999964}, {"input": [-79.0, -47.5], "expected": -47.49999999999998}, {"input": [-79.0, -47.0], "expected": -46.999999999999986}, {"input": [-79.0, -46.5], "expected": -46.49999999999999}, {"input": [-79.0, -46.0], "expected": -45.99999999999999}, {"input": [-79.0, -45.5], "expected": -45.5}, {"input": [-79.0, -45.0], "expected": -45.0}, {"input": [-79.0, -44.5], "expected": -44.5}, {"input": [-79.0, -44.0], "expected": -44.0}, {"input": [-79.0, -43.5], "expected": -43.5}, {"input": [-79.0, -43.0], "expected": -43.0}, {"input": [-79.0, -42.5], "expected": -42.5}, {"input": [-79.0, -42.0], "expected": -42.0}, {"input": [-79.0, -41.5], "expected": -41.5}, {"input": [-79.0, -41.0], "expected": -41.0}, {"input": [-79.0, -40.5], "expected": -40.5}, {"input": [-79.0, -40.0], "expected": -40.0}, {"input": [-79.0, -39.5], "expected": -39.5}, {"input": [-79.0, -39.0], "expected": -39.0}, {"input": [-79.0, -38.5], "expected": -38.5}, {"input": [-79.0, -38.0], "expected": -38.0}, {"input": [-79.0, -37.5], "expected": -37.5}, {"input": [-79.0, -37.0], "expected": -37.0}, {"input": [-79.0, -36.5], "expected": -36.5}, {"input": [-79.0, -36.0], "expected": -36.0}, {"input": [-79.0, -35.5], "expected": -35.5}, {"input": [-79.0, -35.0], "expected": -35.0}, {"input": [-79.0, -34.5], "expected": -34.5}, {"input": [-79.0, -34.0], "expected": -34.0}, {"input": [-79.0, -33.5], "expected": -33.5}, {"input": [-79.0, -33.0], "expected": -33.0}, {"input": [-79.0, -32.5], "expected": -32.5}, {"input": [-79.0, -32.0], "expected": -32.0}, {"input": [-79.0, -31.5], "expected": -31.5}, {"input": [-79.0, -31.0], "expected": -31.0}, {"input": [-79.0, -30.5], "expected": -30.5}, {"input": [-79.0, -30.0], "expected": -30.0}, {"input": [-79.0, -29.5], "expected": -29.5}, {"input": [-79.0, -29.0], "expected": -29.0}, {"input": [-79.0, -28.5], "expected": -28.5}, {"input": [-79.0, -28.0], "expected": -28.0}, {"input": [-79.0, -27.5], "expected": -27.5}, {"input": [-79.0, -27.0], "expected": -27.0}, {"input": [-79.0, -26.5], "expected": -26.5}, {"input": [-79.0, -26.0], "expected": -26.0}, {"input": [-79.0, -25.5], "expected": -25.5}, {"input": [-79.0, -25.0], "expected": -25.0}, {"input": [-79.0, -24.5], "expected": -24.5}, {"input": [-79.0, -24.0], "expected": -24.0}, {"input": [-79.0, -23.5], "expected": -23.5}, {"input": [-79.0, -23.0], "expected": -23.0}, {"input": [-79.0, -22.5], "expected": -22.5}, {"input": [-79.0, -22.0], "expected": -22.0}, {"input": [-79.0, -21.5], "expected": -21.5}, {"input": [-79.0, -21.0], "expected": -21.0}, {"input": [-79.0, -20.5], "expected": -20.5}, {"input": [-79.0, -20.0], "expected": -20.0}, {"input": [-79.0, -19.5], "expected": -19.5}, {"input": [-79.0, -19.0], "expected": -19.0}, {"input": [-79.0, -18.5], "expected": -18.5}, {"input": [-79.0, -18.0], "expected": -18.0}, {"input": [-79.0, -17.5], "expected": -17.5}, {"input": [-79.0, -17.0], "expected": -17.0}, {"input": [-79.0, -16.5], "expected": -16.5}, {"input": [-79.0, -16.0], "expected": -16.0}, {"input": [-79.0, -15.5], "expected": -15.5}, {"input": [-79.0, -15.0], "expected": -15.0}, {"input": [-79.0, -14.5], "expected": -14.5}, {"input": [-79.0, -14.0], "expected": -14.0}, {"input": [-79.0, -13.5], "expected": -13.5}, {"input": [-79.0, -13.0], "expected": -13.0}, {"input": [-79.0, -12.5], "expected": -12.5}, {"input": [-79.0, -12.0], "expected": -12.0}, {"input": [-79.0, -11.5], "expected": -11.5}, {"input": [-79.0, -11.0], "expected": -11.0}, {"input": [-79.0, -10.5], "expected": -10.5}, {"input": [-79.0, -10.0], "expected": -10.0}, {"input": [-79.0, -9.5], "expected": -9.5}, {"input": [-79.0, -9.0], "expected": -9.0}, {"input": [-79.0, -8.5], "expected": -8.5}, {"input": [-79.0, -8.0], "expected": -8.0}, {"input": [-79.0, -7.5], "expected": -7.5}, {"input": [-79.0, -7.0], "expected": -7.0}, {"input": [-79.0, -6.5], "expected": -6.5}, {"input": [-79.0, -6.0], "expected": -6.0}, {"input": [-79.0, -5.5], "expected": -5.5}, {"input": [-79.0, -5.0], "expected": -5.0}, {"input": [-79.0, -4.5], "expected": -4.5}, {"input": [-79.0, -4.0], "expected": -4.0}, {"input": [-79.0, -3.5], "expected": -3.5}, {"input": [-79.0, -3.0], "expected": -3.0}, {"input": [-79.0, -2.5], "expected": -2.5}, {"input": [-79.0, -2.0], "expected": -2.0}, {"input": [-79.0, -1.5], "expected": -1.5}, {"input": [-79.0, -1.0], "expected": -1.0}, {"input": [-79.0, -0.5], "expected": -0.5}, {"input": [-79.0, 0.0], "expected": 4.906094730649281e-35}, {"input": [-79.0, 0.5], "expected": 0.5}, {"input": [-79.0, 1.0], "expected": 1.0}, {"input": [-79.0, 1.5], "expected": 1.5}, {"input": [-79.0, 2.0], "expected": 2.0}, {"input": [-79.0, 2.5], "expected": 2.5}, {"input": [-79.0, 3.0], "expected": 3.0}, {"input": [-79.0, 3.5], "expected": 3.5}, {"input": [-79.0, 4.0], "expected": 4.0}, {"input": [-79.0, 4.5], "expected": 4.5}, {"input": [-79.0, 5.0], "expected": 5.0}, {"input": [-79.0, 5.5], "expected": 5.5}, {"input": [-79.0, 6.0], "expected": 6.0}, {"input": [-79.0, 6.5], "expected": 6.5}, {"input": [-79.0, 7.0], "expected": 7.0}, {"input": [-79.0, 7.5], "expected": 7.5}, {"input": [-79.0, 8.0], "expected": 8.0}, {"input": [-79.0, 8.5], "expected": 8.5}, {"input": [-79.0, 9.0], "expected": 9.0}, {"input": [-79.0, 9.5], "expected": 9.5}, {"input": [-79.0, 10.0], "expected": 10.0}, {"input": [-79.0, 10.5], "expected": 10.5}, {"input": [-79.0, 11.0], "expected": 11.0}, {"input": [-79.0, 11.5], "expected": 11.5}, {"input": [-79.0, 12.0], "expected": 12.0}, {"input": [-79.0, 12.5], "expected": 12.5}, {"input": [-79.0, 13.0], "expected": 13.0}, {"input": [-79.0, 13.5], "expected": 13.5}, {"input": [-79.0, 14.0], "expected": 14.0}, {"input": [-79.0, 14.5], "expected": 14.5}, {"input": [-79.0, 15.0], "expected": 15.0}, {"input": [-79.0, 15.5], "expected": 15.5}, {"input": [-79.0, 16.0], "expected": 16.0}, {"input": [-79.0, 16.5], "expected": 16.5}, {"input": [-79.0, 17.0], "expected": 17.0}, {"input": [-79.0, 17.5], "expected": 17.5}, {"input": [-79.0, 18.0], "expected": 18.0}, {"input": [-79.0, 18.5], "expected": 18.5}, {"input": [-79.0, 19.0], "expected": 19.0}, {"input": [-79.0, 19.5], "expected": 19.5}, {"input": [-79.0, 20.0], "expected": 20.0}, {"input": [-79.0, 20.5], "expected": 20.5}, {"input": [-79.0, 21.0], "expected": 21.0}, {"input": [-79.0, 21.5], "expected": 21.5}, {"input": [-79.0, 22.0], "expected": 22.0}, {"input": [-79.0, 22.5], "expected": 22.5}, {"input": [-79.0, 23.0], "expected": 23.0}, {"input": [-79.0, 23.5], "expected": 23.5}, {"input": [-79.0, 24.0], "expected": 24.0}, {"input": [-79.0, 24.5], "expected": 24.5}, {"input": [-79.0, 25.0], "expected": 25.0}, {"input": [-79.0, 25.5], "expected": 25.5}, {"input": [-79.0, 26.0], "expected": 26.0}, {"input": [-79.0, 26.5], "expected": 26.5}, {"input": [-79.0, 27.0], "expected": 27.0}, {"input": [-79.0, 27.5], "expected": 27.5}, {"input": [-79.0, 28.0], "expected": 28.0}, {"input": [-79.0, 28.5], "expected": 28.5}, {"input": [-79.0, 29.0], "expected": 29.0}, {"input": [-79.0, 29.5], "expected": 29.5}, {"input": [-79.0, 30.0], "expected": 30.0}, {"input": [-79.0, 30.5], "expected": 30.5}, {"input": [-79.0, 31.0], "expected": 31.0}, {"input": [-79.0, 31.5], "expected": 31.5}, {"input": [-79.0, 32.0], "expected": 32.0}, {"input": [-79.0, 32.5], "expected": 32.5}, {"input": [-79.0, 33.0], "expected": 33.0}, {"input": [-79.0, 33.5], "expected": 33.5}, {"input": [-79.0, 34.0], "expected": 34.0}, {"input": [-79.0, 34.5], "expected": 34.5}, {"input": [-79.0, 35.0], "expected": 35.0}, {"input": [-79.0, 35.5], "expected": 35.5}, {"input": [-79.0, 36.0], "expected": 36.0}, {"input": [-79.0, 36.5], "expected": 36.5}, {"input": [-79.0, 37.0], "expected": 37.0}, {"input": [-79.0, 37.5], "expected": 37.5}, {"input": [-79.0, 38.0], "expected": 38.0}, {"input": [-79.0, 38.5], "expected": 38.5}, {"input": [-79.0, 39.0], "expected": 39.0}, {"input": [-79.0, 39.5], "expected": 39.5}, {"input": [-79.0, 40.0], "expected": 40.0}, {"input": [-79.0, 40.5], "expected": 40.5}, {"input": [-79.0, 41.0], "expected": 41.0}, {"input": [-79.0, 41.5], "expected": 41.5}, {"input": [-79.0, 42.0], "expected": 42.0}, {"input": [-79.0, 42.5], "expected": 42.5}, {"input": [-79.0, 43.0], "expected": 43.0}, {"input": [-79.0, 43.5], "expected": 43.5}, {"input": [-79.0, 44.0], "expected": 44.0}, {"input": [-79.0, 44.5], "expected": 44.5}, {"input": [-79.0, 45.0], "expected": 45.0}, {"input": [-79.0, 45.5], "expected": 45.5}, {"input": [-79.0, 46.0], "expected": 46.0}, {"input": [-79.0, 46.5], "expected": 46.5}, {"input": [-79.0, 47.0], "expected": 47.0}, {"input": [-79.0, 47.5], "expected": 47.5}, {"input": [-79.0, 48.0], "expected": 48.0}, {"input": [-79.0, 48.5], "expected": 48.5}, {"input": [-79.0, 49.0], "expected": 49.0}, {"input": [-79.0, 49.5], "expected": 49.5}, {"input": [-79.0, 50.0], "expected": 50.0}, {"input": [-79.0, 50.5], "expected": 50.5}, {"input": [-79.0, 51.0], "expected": 51.0}, {"input": [-79.0, 51.5], "expected": 51.5}, {"input": [-79.0, 52.0], "expected": 52.0}, {"input": [-79.0, 52.5], "expected": 52.5}, {"input": [-79.0, 53.0], "expected": 53.0}, {"input": [-79.0, 53.5], "expected": 53.5}, {"input": [-79.0, 54.0], "expected": 54.0}, {"input": [-79.0, 54.5], "expected": 54.5}, {"input": [-79.0, 55.0], "expected": 55.0}, {"input": [-79.0, 55.5], "expected": 55.5}, {"input": [-79.0, 56.0], "expected": 56.0}, {"input": [-79.0, 56.5], "expected": 56.5}, {"input": [-79.0, 57.0], "expected": 57.0}, {"input": [-79.0, 57.5], "expected": 57.5}, {"input": [-79.0, 58.0], "expected": 58.0}, {"input": [-79.0, 58.5], "expected": 58.5}, {"input": [-79.0, 59.0], "expected": 59.0}, {"input": [-79.0, 59.5], "expected": 59.5}, {"input": [-79.0, 60.0], "expected": 60.0}, {"input": [-79.0, 60.5], "expected": 60.5}, {"input": [-79.0, 61.0], "expected": 61.0}, {"input": [-79.0, 61.5], "expected": 61.5}, {"input": [-79.0, 62.0], "expected": 62.0}, {"input": [-79.0, 62.5], "expected": 62.5}, {"input": [-79.0, 63.0], "expected": 63.0}, {"input": [-79.0, 63.5], "expected": 63.5}, {"input": [-79.0, 64.0], "expected": 64.0}, {"input": [-79.0, 64.5], "expected": 64.5}, {"input": [-79.0, 65.0], "expected": 65.0}, {"input": [-79.0, 65.5], "expected": 65.5}, {"input": [-79.0, 66.0], "expected": 66.0}, {"input": [-79.0, 66.5], "expected": 66.5}, {"input": [-79.0, 67.0], "expected": 67.0}, {"input": [-79.0, 67.5], "expected": 67.5}, {"input": [-79.0, 68.0], "expected": 68.0}, {"input": [-79.0, 68.5], "expected": 68.5}, {"input": [-79.0, 69.0], "expected": 69.0}, {"input": [-79.0, 69.5], "expected": 69.5}, {"input": [-79.0, 70.0], "expected": 70.0}, {"input": [-79.0, 70.5], "expected": 70.5}, {"input": [-79.0, 71.0], "expected": 71.0}, {"input": [-79.0, 71.5], "expected": 71.5}, {"input": [-79.0, 72.0], "expected": 72.0}, {"input": [-79.0, 72.5], "expected": 72.5}, {"input": [-79.0, 73.0], "expected": 73.0}, {"input": [-79.0, 73.5], "expected": 73.5}, {"input": [-79.0, 74.0], "expected": 74.0}, {"input": [-79.0, 74.5], "expected": 74.5}, {"input": [-79.0, 75.0], "expected": 75.0}, {"input": [-79.0, 75.5], "expected": 75.5}, {"input": [-79.0, 76.0], "expected": 76.0}, {"input": [-79.0, 76.5], "expected": 76.5}, {"input": [-79.0, 77.0], "expected": 77.0}, {"input": [-79.0, 77.5], "expected": 77.5}, {"input": [-79.0, 78.0], "expected": 78.0}, {"input": [-79.0, 78.5], "expected": 78.5}, {"input": [-79.0, 79.0], "expected": 79.0}, {"input": [-79.0, 79.5], "expected": 79.5}, {"input": [-79.0, 80.0], "expected": 80.0}, {"input": [-79.0, 80.5], "expected": 80.5}, {"input": [-79.0, 81.0], "expected": 81.0}, {"input": [-79.0, 81.5], "expected": 81.5}, {"input": [-79.0, 82.0], "expected": 82.0}, {"input": [-79.0, 82.5], "expected": 82.5}, {"input": [-79.0, 83.0], "expected": 83.0}, {"input": [-79.0, 83.5], "expected": 83.5}, {"input": [-79.0, 84.0], "expected": 84.0}, {"input": [-79.0, 84.5], "expected": 84.5}, {"input": [-79.0, 85.0], "expected": 85.0}, {"input": [-79.0, 85.5], "expected": 85.5}, {"input": [-79.0, 86.0], "expected": 86.0}, {"input": [-79.0, 86.5], "expected": 86.5}, {"input": [-79.0, 87.0], "expected": 87.0}, {"input": [-79.0, 87.5], "expected": 87.5}, {"input": [-79.0, 88.0], "expected": 88.0}, {"input": [-79.0, 88.5], "expected": 88.5}, {"input": [-79.0, 89.0], "expected": 89.0}, {"input": [-79.0, 89.5], "expected": 89.5}, {"input": [-79.0, 90.0], "expected": 90.0}, {"input": [-79.0, 90.5], "expected": 90.5}, {"input": [-79.0, 91.0], "expected": 91.0}, {"input": [-79.0, 91.5], "expected": 91.5}, {"input": [-79.0, 92.0], "expected": 92.0}, {"input": [-79.0, 92.5], "expected": 92.5}, {"input": [-79.0, 93.0], "expected": 93.0}, {"input": [-79.0, 93.5], "expected": 93.5}, {"input": [-79.0, 94.0], "expected": 94.0}, {"input": [-79.0, 94.5], "expected": 94.5}, {"input": [-79.0, 95.0], "expected": 95.0}, {"input": [-79.0, 95.5], "expected": 95.5}, {"input": [-79.0, 96.0], "expected": 96.0}, {"input": [-79.0, 96.5], "expected": 96.5}, {"input": [-79.0, 97.0], "expected": 97.0}, {"input": [-79.0, 97.5], "expected": 97.5}, {"input": [-79.0, 98.0], "expected": 98.0}, {"input": [-79.0, 98.5], "expected": 98.5}, {"input": [-79.0, 99.0], "expected": 99.0}, {"input": [-79.0, 99.5], "expected": 99.5}, {"input": [-78.5, -100.0], "expected": -78.4999999995401}, {"input": [-78.5, -99.5], "expected": -78.49999999924174}, {"input": [-78.5, -99.0], "expected": -78.49999999874984}, {"input": [-78.5, -98.5], "expected": -78.49999999793884}, {"input": [-78.5, -98.0], "expected": -78.49999999660173}, {"input": [-78.5, -97.5], "expected": -78.4999999943972}, {"input": [-78.5, -97.0], "expected": -78.49999999076255}, {"input": [-78.5, -96.5], "expected": -78.49999998477001}, {"input": [-78.5, -96.0], "expected": -78.49999997489}, {"input": [-78.5, -95.5], "expected": -78.49999995860063}, {"input": [-78.5, -95.0], "expected": -78.49999993174397}, {"input": [-78.5, -94.5], "expected": -78.49999988746484}, {"input": [-78.5, -94.0], "expected": -78.49999981446088}, {"input": [-78.5, -93.5], "expected": -78.49999969409772}, {"input": [-78.5, -93.0], "expected": -78.49999949565246}, {"input": [-78.5, -92.5], "expected": -78.49999916847163}, {"input": [-78.5, -92.0], "expected": -78.49999862904185}, {"input": [-78.5, -91.5], "expected": -78.49999773967315}, {"input": [-78.5, -91.0], "expected": -78.49999627335377}, {"input": [-78.5, -90.5], "expected": -78.49999385580652}, {"input": [-78.5, -90.0], "expected": -78.49998986995772}, {"input": [-78.5, -89.5], "expected": -78.49998329843868}, {"input": [-78.5, -89.0], "expected": -78.49997246392977}, {"input": [-78.5, -88.5], "expected": -78.49995460110078}, {"input": [-78.5, -88.0], "expected": -78.49992515097136}, {"input": [-78.5, -87.5], "expected": -78.49987659781027}, {"input": [-78.5, -87.0], "expected": -78.49979655232787}, {"input": [-78.5, -86.5], "expected": -78.4996645936271}, {"input": [-78.5, -86.0], "expected": -78.49944706852465}, {"input": [-78.5, -85.5], "expected": -78.49908853354623}, {"input": [-78.5, -85.0], "expected": -78.49849768984025}, {"input": [-78.5, -84.5], "expected": -78.49752431486228}, {"input": [-78.5, -84.0], "expected": -78.49592155672943}, {"input": [-78.5, -83.5], "expected": -78.49328465151088}, {"input": [-78.5, -83.0], "expected": -78.4889522551514}, {"input": [-78.5, -82.5], "expected": -78.4818500720822}, {"input": [-78.5, -82.0], "expected": -78.47024958172737}, {"input": [-78.5, -81.5], "expected": -78.45141264842626}, {"input": [-78.5, -81.0], "expected": -78.42111026570745}, {"input": [-78.5, -80.5], "expected": -78.37307198895702}, {"input": [-78.5, -80.0], "expected": -78.29858672201725}, {"input": [-78.5, -79.5], "expected": -78.18673831248178}, {"input": [-78.5, -79.0], "expected": -78.0259230158199}, {"input": [-78.5, -78.5], "expected": -77.80685281944005}, {"input": [-78.5, -78.0], "expected": -77.5259230158199}, {"input": [-78.5, -77.5], "expected": -77.18673831248178}, {"input": [-78.5, -77.0], "expected": -76.79858672201725}, {"input": [-78.5, -76.5], "expected": -76.37307198895702}, {"input": [-78.5, -76.0], "expected": -75.92111026570745}, {"input": [-78.5, -75.5], "expected": -75.45141264842626}, {"input": [-78.5, -75.0], "expected": -74.97024958172737}, {"input": [-78.5, -74.5], "expected": -74.4818500720822}, {"input": [-78.5, -74.0], "expected": -73.9889522551514}, {"input": [-78.5, -73.5], "expected": -73.49328465151088}, {"input": [-78.5, -73.0], "expected": -72.99592155672943}, {"input": [-78.5, -72.5], "expected": -72.49752431486228}, {"input": [-78.5, -72.0], "expected": -71.99849768984025}, {"input": [-78.5, -71.5], "expected": -71.49908853354623}, {"input": [-78.5, -71.0], "expected": -70.99944706852465}, {"input": [-78.5, -70.5], "expected": -70.4996645936271}, {"input": [-78.5, -70.0], "expected": -69.99979655232787}, {"input": [-78.5, -69.5], "expected": -69.49987659781027}, {"input": [-78.5, -69.0], "expected": -68.99992515097136}, {"input": [-78.5, -68.5], "expected": -68.49995460110078}, {"input": [-78.5, -68.0], "expected": -67.99997246392977}, {"input": [-78.5, -67.5], "expected": -67.49998329843868}, {"input": [-78.5, -67.0], "expected": -66.99998986995772}, {"input": [-78.5, -66.5], "expected": -66.49999385580652}, {"input": [-78.5, -66.0], "expected": -65.99999627335377}, {"input": [-78.5, -65.5], "expected": -65.49999773967315}, {"input": [-78.5, -65.0], "expected": -64.99999862904185}, {"input": [-78.5, -64.5], "expected": -64.49999916847163}, {"input": [-78.5, -64.0], "expected": -63.99999949565247}, {"input": [-78.5, -63.5], "expected": -63.499999694097724}, {"input": [-78.5, -63.0], "expected": -62.99999981446088}, {"input": [-78.5, -62.5], "expected": -62.49999988746483}, {"input": [-78.5, -62.0], "expected": -61.99999993174397}, {"input": [-78.5, -61.5], "expected": -61.499999958600625}, {"input": [-78.5, -61.0], "expected": -60.99999997489001}, {"input": [-78.5, -60.5], "expected": -60.49999998477002}, {"input": [-78.5, -60.0], "expected": -59.999999990762554}, {"input": [-78.5, -59.5], "expected": -59.49999999439721}, {"input": [-78.5, -59.0], "expected": -58.99999999660173}, {"input": [-78.5, -58.5], "expected": -58.49999999793884}, {"input": [-78.5, -58.0], "expected": -57.99999999874985}, {"input": [-78.5, -57.5], "expected": -57.499999999241744}, {"input": [-78.5, -57.0], "expected": -56.999999999540094}, {"input": [-78.5, -56.5], "expected": -56.499999999721055}, {"input": [-78.5, -56.0], "expected": -55.99999999983081}, {"input": [-78.5, -55.5], "expected": -55.49999999989738}, {"input": [-78.5, -55.0], "expected": -54.99999999993776}, {"input": [-78.5, -54.5], "expected": -54.49999999996225}, {"input": [-78.5, -54.0], "expected": -53.9999999999771}, {"input": [-78.5, -53.5], "expected": -53.49999999998611}, {"input": [-78.5, -53.0], "expected": -52.99999999999158}, {"input": [-78.5, -52.5], "expected": -52.49999999999489}, {"input": [-78.5, -52.0], "expected": -51.9999999999969}, {"input": [-78.5, -51.5], "expected": -51.49999999999812}, {"input": [-78.5, -51.0], "expected": -50.99999999999886}, {"input": [-78.5, -50.5], "expected": -50.49999999999931}, {"input": [-78.5, -50.0], "expected": -49.99999999999958}, {"input": [-78.5, -49.5], "expected": -49.499999999999744}, {"input": [-78.5, -49.0], "expected": -48.999999999999844}, {"input": [-78.5, -48.5], "expected": -48.49999999999991}, {"input": [-78.5, -48.0], "expected": -47.99999999999994}, {"input": [-78.5, -47.5], "expected": -47.499999999999964}, {"input": [-78.5, -47.0], "expected": -46.99999999999998}, {"input": [-78.5, -46.5], "expected": -46.499999999999986}, {"input": [-78.5, -46.0], "expected": -45.99999999999999}, {"input": [-78.5, -45.5], "expected": -45.49999999999999}, {"input": [-78.5, -45.0], "expected": -45.0}, {"input": [-78.5, -44.5], "expected": -44.5}, {"input": [-78.5, -44.0], "expected": -44.0}, {"input": [-78.5, -43.5], "expected": -43.5}, {"input": [-78.5, -43.0], "expected": -43.0}, {"input": [-78.5, -42.5], "expected": -42.5}, {"input": [-78.5, -42.0], "expected": -42.0}, {"input": [-78.5, -41.5], "expected": -41.5}, {"input": [-78.5, -41.0], "expected": -41.0}, {"input": [-78.5, -40.5], "expected": -40.5}, {"input": [-78.5, -40.0], "expected": -40.0}, {"input": [-78.5, -39.5], "expected": -39.5}, {"input": [-78.5, -39.0], "expected": -39.0}, {"input": [-78.5, -38.5], "expected": -38.5}, {"input": [-78.5, -38.0], "expected": -38.0}, {"input": [-78.5, -37.5], "expected": -37.5}, {"input": [-78.5, -37.0], "expected": -37.0}, {"input": [-78.5, -36.5], "expected": -36.5}, {"input": [-78.5, -36.0], "expected": -36.0}, {"input": [-78.5, -35.5], "expected": -35.5}, {"input": [-78.5, -35.0], "expected": -35.0}, {"input": [-78.5, -34.5], "expected": -34.5}, {"input": [-78.5, -34.0], "expected": -34.0}, {"input": [-78.5, -33.5], "expected": -33.5}, {"input": [-78.5, -33.0], "expected": -33.0}, {"input": [-78.5, -32.5], "expected": -32.5}, {"input": [-78.5, -32.0], "expected": -32.0}, {"input": [-78.5, -31.5], "expected": -31.5}, {"input": [-78.5, -31.0], "expected": -31.0}, {"input": [-78.5, -30.5], "expected": -30.5}, {"input": [-78.5, -30.0], "expected": -30.0}, {"input": [-78.5, -29.5], "expected": -29.5}, {"input": [-78.5, -29.0], "expected": -29.0}, {"input": [-78.5, -28.5], "expected": -28.5}, {"input": [-78.5, -28.0], "expected": -28.0}, {"input": [-78.5, -27.5], "expected": -27.5}, {"input": [-78.5, -27.0], "expected": -27.0}, {"input": [-78.5, -26.5], "expected": -26.5}, {"input": [-78.5, -26.0], "expected": -26.0}, {"input": [-78.5, -25.5], "expected": -25.5}, {"input": [-78.5, -25.0], "expected": -25.0}, {"input": [-78.5, -24.5], "expected": -24.5}, {"input": [-78.5, -24.0], "expected": -24.0}, {"input": [-78.5, -23.5], "expected": -23.5}, {"input": [-78.5, -23.0], "expected": -23.0}, {"input": [-78.5, -22.5], "expected": -22.5}, {"input": [-78.5, -22.0], "expected": -22.0}, {"input": [-78.5, -21.5], "expected": -21.5}, {"input": [-78.5, -21.0], "expected": -21.0}, {"input": [-78.5, -20.5], "expected": -20.5}, {"input": [-78.5, -20.0], "expected": -20.0}, {"input": [-78.5, -19.5], "expected": -19.5}, {"input": [-78.5, -19.0], "expected": -19.0}, {"input": [-78.5, -18.5], "expected": -18.5}, {"input": [-78.5, -18.0], "expected": -18.0}, {"input": [-78.5, -17.5], "expected": -17.5}, {"input": [-78.5, -17.0], "expected": -17.0}, {"input": [-78.5, -16.5], "expected": -16.5}, {"input": [-78.5, -16.0], "expected": -16.0}, {"input": [-78.5, -15.5], "expected": -15.5}, {"input": [-78.5, -15.0], "expected": -15.0}, {"input": [-78.5, -14.5], "expected": -14.5}, {"input": [-78.5, -14.0], "expected": -14.0}, {"input": [-78.5, -13.5], "expected": -13.5}, {"input": [-78.5, -13.0], "expected": -13.0}, {"input": [-78.5, -12.5], "expected": -12.5}, {"input": [-78.5, -12.0], "expected": -12.0}, {"input": [-78.5, -11.5], "expected": -11.5}, {"input": [-78.5, -11.0], "expected": -11.0}, {"input": [-78.5, -10.5], "expected": -10.5}, {"input": [-78.5, -10.0], "expected": -10.0}, {"input": [-78.5, -9.5], "expected": -9.5}, {"input": [-78.5, -9.0], "expected": -9.0}, {"input": [-78.5, -8.5], "expected": -8.5}, {"input": [-78.5, -8.0], "expected": -8.0}, {"input": [-78.5, -7.5], "expected": -7.5}, {"input": [-78.5, -7.0], "expected": -7.0}, {"input": [-78.5, -6.5], "expected": -6.5}, {"input": [-78.5, -6.0], "expected": -6.0}, {"input": [-78.5, -5.5], "expected": -5.5}, {"input": [-78.5, -5.0], "expected": -5.0}, {"input": [-78.5, -4.5], "expected": -4.5}, {"input": [-78.5, -4.0], "expected": -4.0}, {"input": [-78.5, -3.5], "expected": -3.5}, {"input": [-78.5, -3.0], "expected": -3.0}, {"input": [-78.5, -2.5], "expected": -2.5}, {"input": [-78.5, -2.0], "expected": -2.0}, {"input": [-78.5, -1.5], "expected": -1.5}, {"input": [-78.5, -1.0], "expected": -1.0}, {"input": [-78.5, -0.5], "expected": -0.5}, {"input": [-78.5, 0.0], "expected": 8.088782738491285e-35}, {"input": [-78.5, 0.5], "expected": 0.5}, {"input": [-78.5, 1.0], "expected": 1.0}, {"input": [-78.5, 1.5], "expected": 1.5}, {"input": [-78.5, 2.0], "expected": 2.0}, {"input": [-78.5, 2.5], "expected": 2.5}, {"input": [-78.5, 3.0], "expected": 3.0}, {"input": [-78.5, 3.5], "expected": 3.5}, {"input": [-78.5, 4.0], "expected": 4.0}, {"input": [-78.5, 4.5], "expected": 4.5}, {"input": [-78.5, 5.0], "expected": 5.0}, {"input": [-78.5, 5.5], "expected": 5.5}, {"input": [-78.5, 6.0], "expected": 6.0}, {"input": [-78.5, 6.5], "expected": 6.5}, {"input": [-78.5, 7.0], "expected": 7.0}, {"input": [-78.5, 7.5], "expected": 7.5}, {"input": [-78.5, 8.0], "expected": 8.0}, {"input": [-78.5, 8.5], "expected": 8.5}, {"input": [-78.5, 9.0], "expected": 9.0}, {"input": [-78.5, 9.5], "expected": 9.5}, {"input": [-78.5, 10.0], "expected": 10.0}, {"input": [-78.5, 10.5], "expected": 10.5}, {"input": [-78.5, 11.0], "expected": 11.0}, {"input": [-78.5, 11.5], "expected": 11.5}, {"input": [-78.5, 12.0], "expected": 12.0}, {"input": [-78.5, 12.5], "expected": 12.5}, {"input": [-78.5, 13.0], "expected": 13.0}, {"input": [-78.5, 13.5], "expected": 13.5}, {"input": [-78.5, 14.0], "expected": 14.0}, {"input": [-78.5, 14.5], "expected": 14.5}, {"input": [-78.5, 15.0], "expected": 15.0}, {"input": [-78.5, 15.5], "expected": 15.5}, {"input": [-78.5, 16.0], "expected": 16.0}, {"input": [-78.5, 16.5], "expected": 16.5}, {"input": [-78.5, 17.0], "expected": 17.0}, {"input": [-78.5, 17.5], "expected": 17.5}, {"input": [-78.5, 18.0], "expected": 18.0}, {"input": [-78.5, 18.5], "expected": 18.5}, {"input": [-78.5, 19.0], "expected": 19.0}, {"input": [-78.5, 19.5], "expected": 19.5}, {"input": [-78.5, 20.0], "expected": 20.0}, {"input": [-78.5, 20.5], "expected": 20.5}, {"input": [-78.5, 21.0], "expected": 21.0}, {"input": [-78.5, 21.5], "expected": 21.5}, {"input": [-78.5, 22.0], "expected": 22.0}, {"input": [-78.5, 22.5], "expected": 22.5}, {"input": [-78.5, 23.0], "expected": 23.0}, {"input": [-78.5, 23.5], "expected": 23.5}, {"input": [-78.5, 24.0], "expected": 24.0}, {"input": [-78.5, 24.5], "expected": 24.5}, {"input": [-78.5, 25.0], "expected": 25.0}, {"input": [-78.5, 25.5], "expected": 25.5}, {"input": [-78.5, 26.0], "expected": 26.0}, {"input": [-78.5, 26.5], "expected": 26.5}, {"input": [-78.5, 27.0], "expected": 27.0}, {"input": [-78.5, 27.5], "expected": 27.5}, {"input": [-78.5, 28.0], "expected": 28.0}, {"input": [-78.5, 28.5], "expected": 28.5}, {"input": [-78.5, 29.0], "expected": 29.0}, {"input": [-78.5, 29.5], "expected": 29.5}, {"input": [-78.5, 30.0], "expected": 30.0}, {"input": [-78.5, 30.5], "expected": 30.5}, {"input": [-78.5, 31.0], "expected": 31.0}, {"input": [-78.5, 31.5], "expected": 31.5}, {"input": [-78.5, 32.0], "expected": 32.0}, {"input": [-78.5, 32.5], "expected": 32.5}, {"input": [-78.5, 33.0], "expected": 33.0}, {"input": [-78.5, 33.5], "expected": 33.5}, {"input": [-78.5, 34.0], "expected": 34.0}, {"input": [-78.5, 34.5], "expected": 34.5}, {"input": [-78.5, 35.0], "expected": 35.0}, {"input": [-78.5, 35.5], "expected": 35.5}, {"input": [-78.5, 36.0], "expected": 36.0}, {"input": [-78.5, 36.5], "expected": 36.5}, {"input": [-78.5, 37.0], "expected": 37.0}, {"input": [-78.5, 37.5], "expected": 37.5}, {"input": [-78.5, 38.0], "expected": 38.0}, {"input": [-78.5, 38.5], "expected": 38.5}, {"input": [-78.5, 39.0], "expected": 39.0}, {"input": [-78.5, 39.5], "expected": 39.5}, {"input": [-78.5, 40.0], "expected": 40.0}, {"input": [-78.5, 40.5], "expected": 40.5}, {"input": [-78.5, 41.0], "expected": 41.0}, {"input": [-78.5, 41.5], "expected": 41.5}, {"input": [-78.5, 42.0], "expected": 42.0}, {"input": [-78.5, 42.5], "expected": 42.5}, {"input": [-78.5, 43.0], "expected": 43.0}, {"input": [-78.5, 43.5], "expected": 43.5}, {"input": [-78.5, 44.0], "expected": 44.0}, {"input": [-78.5, 44.5], "expected": 44.5}, {"input": [-78.5, 45.0], "expected": 45.0}, {"input": [-78.5, 45.5], "expected": 45.5}, {"input": [-78.5, 46.0], "expected": 46.0}, {"input": [-78.5, 46.5], "expected": 46.5}, {"input": [-78.5, 47.0], "expected": 47.0}, {"input": [-78.5, 47.5], "expected": 47.5}, {"input": [-78.5, 48.0], "expected": 48.0}, {"input": [-78.5, 48.5], "expected": 48.5}, {"input": [-78.5, 49.0], "expected": 49.0}, {"input": [-78.5, 49.5], "expected": 49.5}, {"input": [-78.5, 50.0], "expected": 50.0}, {"input": [-78.5, 50.5], "expected": 50.5}, {"input": [-78.5, 51.0], "expected": 51.0}, {"input": [-78.5, 51.5], "expected": 51.5}, {"input": [-78.5, 52.0], "expected": 52.0}, {"input": [-78.5, 52.5], "expected": 52.5}, {"input": [-78.5, 53.0], "expected": 53.0}, {"input": [-78.5, 53.5], "expected": 53.5}, {"input": [-78.5, 54.0], "expected": 54.0}, {"input": [-78.5, 54.5], "expected": 54.5}, {"input": [-78.5, 55.0], "expected": 55.0}, {"input": [-78.5, 55.5], "expected": 55.5}, {"input": [-78.5, 56.0], "expected": 56.0}, {"input": [-78.5, 56.5], "expected": 56.5}, {"input": [-78.5, 57.0], "expected": 57.0}, {"input": [-78.5, 57.5], "expected": 57.5}, {"input": [-78.5, 58.0], "expected": 58.0}, {"input": [-78.5, 58.5], "expected": 58.5}, {"input": [-78.5, 59.0], "expected": 59.0}, {"input": [-78.5, 59.5], "expected": 59.5}, {"input": [-78.5, 60.0], "expected": 60.0}, {"input": [-78.5, 60.5], "expected": 60.5}, {"input": [-78.5, 61.0], "expected": 61.0}, {"input": [-78.5, 61.5], "expected": 61.5}, {"input": [-78.5, 62.0], "expected": 62.0}, {"input": [-78.5, 62.5], "expected": 62.5}, {"input": [-78.5, 63.0], "expected": 63.0}, {"input": [-78.5, 63.5], "expected": 63.5}, {"input": [-78.5, 64.0], "expected": 64.0}, {"input": [-78.5, 64.5], "expected": 64.5}, {"input": [-78.5, 65.0], "expected": 65.0}, {"input": [-78.5, 65.5], "expected": 65.5}, {"input": [-78.5, 66.0], "expected": 66.0}, {"input": [-78.5, 66.5], "expected": 66.5}, {"input": [-78.5, 67.0], "expected": 67.0}, {"input": [-78.5, 67.5], "expected": 67.5}, {"input": [-78.5, 68.0], "expected": 68.0}, {"input": [-78.5, 68.5], "expected": 68.5}, {"input": [-78.5, 69.0], "expected": 69.0}, {"input": [-78.5, 69.5], "expected": 69.5}, {"input": [-78.5, 70.0], "expected": 70.0}, {"input": [-78.5, 70.5], "expected": 70.5}, {"input": [-78.5, 71.0], "expected": 71.0}, {"input": [-78.5, 71.5], "expected": 71.5}, {"input": [-78.5, 72.0], "expected": 72.0}, {"input": [-78.5, 72.5], "expected": 72.5}, {"input": [-78.5, 73.0], "expected": 73.0}, {"input": [-78.5, 73.5], "expected": 73.5}, {"input": [-78.5, 74.0], "expected": 74.0}, {"input": [-78.5, 74.5], "expected": 74.5}, {"input": [-78.5, 75.0], "expected": 75.0}, {"input": [-78.5, 75.5], "expected": 75.5}, {"input": [-78.5, 76.0], "expected": 76.0}, {"input": [-78.5, 76.5], "expected": 76.5}, {"input": [-78.5, 77.0], "expected": 77.0}, {"input": [-78.5, 77.5], "expected": 77.5}, {"input": [-78.5, 78.0], "expected": 78.0}, {"input": [-78.5, 78.5], "expected": 78.5}, {"input": [-78.5, 79.0], "expected": 79.0}, {"input": [-78.5, 79.5], "expected": 79.5}, {"input": [-78.5, 80.0], "expected": 80.0}, {"input": [-78.5, 80.5], "expected": 80.5}, {"input": [-78.5, 81.0], "expected": 81.0}, {"input": [-78.5, 81.5], "expected": 81.5}, {"input": [-78.5, 82.0], "expected": 82.0}, {"input": [-78.5, 82.5], "expected": 82.5}, {"input": [-78.5, 83.0], "expected": 83.0}, {"input": [-78.5, 83.5], "expected": 83.5}, {"input": [-78.5, 84.0], "expected": 84.0}, {"input": [-78.5, 84.5], "expected": 84.5}, {"input": [-78.5, 85.0], "expected": 85.0}, {"input": [-78.5, 85.5], "expected": 85.5}, {"input": [-78.5, 86.0], "expected": 86.0}, {"input": [-78.5, 86.5], "expected": 86.5}, {"input": [-78.5, 87.0], "expected": 87.0}, {"input": [-78.5, 87.5], "expected": 87.5}, {"input": [-78.5, 88.0], "expected": 88.0}, {"input": [-78.5, 88.5], "expected": 88.5}, {"input": [-78.5, 89.0], "expected": 89.0}, {"input": [-78.5, 89.5], "expected": 89.5}, {"input": [-78.5, 90.0], "expected": 90.0}, {"input": [-78.5, 90.5], "expected": 90.5}, {"input": [-78.5, 91.0], "expected": 91.0}, {"input": [-78.5, 91.5], "expected": 91.5}, {"input": [-78.5, 92.0], "expected": 92.0}, {"input": [-78.5, 92.5], "expected": 92.5}, {"input": [-78.5, 93.0], "expected": 93.0}, {"input": [-78.5, 93.5], "expected": 93.5}, {"input": [-78.5, 94.0], "expected": 94.0}, {"input": [-78.5, 94.5], "expected": 94.5}, {"input": [-78.5, 95.0], "expected": 95.0}, {"input": [-78.5, 95.5], "expected": 95.5}, {"input": [-78.5, 96.0], "expected": 96.0}, {"input": [-78.5, 96.5], "expected": 96.5}, {"input": [-78.5, 97.0], "expected": 97.0}, {"input": [-78.5, 97.5], "expected": 97.5}, {"input": [-78.5, 98.0], "expected": 98.0}, {"input": [-78.5, 98.5], "expected": 98.5}, {"input": [-78.5, 99.0], "expected": 99.0}, {"input": [-78.5, 99.5], "expected": 99.5}, {"input": [-78.0, -100.0], "expected": -77.99999999972106}, {"input": [-78.0, -99.5], "expected": -77.9999999995401}, {"input": [-78.0, -99.0], "expected": -77.99999999924174}, {"input": [-78.0, -98.5], "expected": -77.99999999874984}, {"input": [-78.0, -98.0], "expected": -77.99999999793884}, {"input": [-78.0, -97.5], "expected": -77.99999999660173}, {"input": [-78.0, -97.0], "expected": -77.9999999943972}, {"input": [-78.0, -96.5], "expected": -77.99999999076255}, {"input": [-78.0, -96.0], "expected": -77.99999998477001}, {"input": [-78.0, -95.5], "expected": -77.99999997489}, {"input": [-78.0, -95.0], "expected": -77.99999995860063}, {"input": [-78.0, -94.5], "expected": -77.99999993174397}, {"input": [-78.0, -94.0], "expected": -77.99999988746484}, {"input": [-78.0, -93.5], "expected": -77.99999981446088}, {"input": [-78.0, -93.0], "expected": -77.99999969409772}, {"input": [-78.0, -92.5], "expected": -77.99999949565246}, {"input": [-78.0, -92.0], "expected": -77.99999916847163}, {"input": [-78.0, -91.5], "expected": -77.99999862904185}, {"input": [-78.0, -91.0], "expected": -77.99999773967315}, {"input": [-78.0, -90.5], "expected": -77.99999627335377}, {"input": [-78.0, -90.0], "expected": -77.99999385580652}, {"input": [-78.0, -89.5], "expected": -77.99998986995772}, {"input": [-78.0, -89.0], "expected": -77.99998329843868}, {"input": [-78.0, -88.5], "expected": -77.99997246392977}, {"input": [-78.0, -88.0], "expected": -77.99995460110078}, {"input": [-78.0, -87.5], "expected": -77.99992515097136}, {"input": [-78.0, -87.0], "expected": -77.99987659781027}, {"input": [-78.0, -86.5], "expected": -77.99979655232787}, {"input": [-78.0, -86.0], "expected": -77.9996645936271}, {"input": [-78.0, -85.5], "expected": -77.99944706852465}, {"input": [-78.0, -85.0], "expected": -77.99908853354623}, {"input": [-78.0, -84.5], "expected": -77.99849768984025}, {"input": [-78.0, -84.0], "expected": -77.99752431486228}, {"input": [-78.0, -83.5], "expected": -77.99592155672943}, {"input": [-78.0, -83.0], "expected": -77.99328465151088}, {"input": [-78.0, -82.5], "expected": -77.9889522551514}, {"input": [-78.0, -82.0], "expected": -77.9818500720822}, {"input": [-78.0, -81.5], "expected": -77.97024958172737}, {"input": [-78.0, -81.0], "expected": -77.95141264842626}, {"input": [-78.0, -80.5], "expected": -77.92111026570745}, {"input": [-78.0, -80.0], "expected": -77.87307198895702}, {"input": [-78.0, -79.5], "expected": -77.79858672201725}, {"input": [-78.0, -79.0], "expected": -77.68673831248178}, {"input": [-78.0, -78.5], "expected": -77.5259230158199}, {"input": [-78.0, -78.0], "expected": -77.30685281944005}, {"input": [-78.0, -77.5], "expected": -77.0259230158199}, {"input": [-78.0, -77.0], "expected": -76.68673831248178}, {"input": [-78.0, -76.5], "expected": -76.29858672201725}, {"input": [-78.0, -76.0], "expected": -75.87307198895702}, {"input": [-78.0, -75.5], "expected": -75.42111026570745}, {"input": [-78.0, -75.0], "expected": -74.95141264842626}, {"input": [-78.0, -74.5], "expected": -74.47024958172737}, {"input": [-78.0, -74.0], "expected": -73.9818500720822}, {"input": [-78.0, -73.5], "expected": -73.4889522551514}, {"input": [-78.0, -73.0], "expected": -72.99328465151088}, {"input": [-78.0, -72.5], "expected": -72.49592155672943}, {"input": [-78.0, -72.0], "expected": -71.99752431486228}, {"input": [-78.0, -71.5], "expected": -71.49849768984025}, {"input": [-78.0, -71.0], "expected": -70.99908853354623}, {"input": [-78.0, -70.5], "expected": -70.49944706852465}, {"input": [-78.0, -70.0], "expected": -69.9996645936271}, {"input": [-78.0, -69.5], "expected": -69.49979655232787}, {"input": [-78.0, -69.0], "expected": -68.99987659781027}, {"input": [-78.0, -68.5], "expected": -68.49992515097136}, {"input": [-78.0, -68.0], "expected": -67.99995460110078}, {"input": [-78.0, -67.5], "expected": -67.49997246392977}, {"input": [-78.0, -67.0], "expected": -66.99998329843868}, {"input": [-78.0, -66.5], "expected": -66.49998986995772}, {"input": [-78.0, -66.0], "expected": -65.99999385580652}, {"input": [-78.0, -65.5], "expected": -65.49999627335377}, {"input": [-78.0, -65.0], "expected": -64.99999773967315}, {"input": [-78.0, -64.5], "expected": -64.49999862904185}, {"input": [-78.0, -64.0], "expected": -63.999999168471625}, {"input": [-78.0, -63.5], "expected": -63.49999949565247}, {"input": [-78.0, -63.0], "expected": -62.999999694097724}, {"input": [-78.0, -62.5], "expected": -62.49999981446088}, {"input": [-78.0, -62.0], "expected": -61.99999988746483}, {"input": [-78.0, -61.5], "expected": -61.49999993174397}, {"input": [-78.0, -61.0], "expected": -60.999999958600625}, {"input": [-78.0, -60.5], "expected": -60.49999997489001}, {"input": [-78.0, -60.0], "expected": -59.99999998477002}, {"input": [-78.0, -59.5], "expected": -59.499999990762554}, {"input": [-78.0, -59.0], "expected": -58.99999999439721}, {"input": [-78.0, -58.5], "expected": -58.49999999660173}, {"input": [-78.0, -58.0], "expected": -57.99999999793884}, {"input": [-78.0, -57.5], "expected": -57.49999999874985}, {"input": [-78.0, -57.0], "expected": -56.999999999241744}, {"input": [-78.0, -56.5], "expected": -56.499999999540094}, {"input": [-78.0, -56.0], "expected": -55.999999999721055}, {"input": [-78.0, -55.5], "expected": -55.49999999983081}, {"input": [-78.0, -55.0], "expected": -54.99999999989738}, {"input": [-78.0, -54.5], "expected": -54.49999999993776}, {"input": [-78.0, -54.0], "expected": -53.99999999996225}, {"input": [-78.0, -53.5], "expected": -53.4999999999771}, {"input": [-78.0, -53.0], "expected": -52.99999999998611}, {"input": [-78.0, -52.5], "expected": -52.49999999999158}, {"input": [-78.0, -52.0], "expected": -51.99999999999489}, {"input": [-78.0, -51.5], "expected": -51.4999999999969}, {"input": [-78.0, -51.0], "expected": -50.99999999999812}, {"input": [-78.0, -50.5], "expected": -50.49999999999886}, {"input": [-78.0, -50.0], "expected": -49.99999999999931}, {"input": [-78.0, -49.5], "expected": -49.49999999999958}, {"input": [-78.0, -49.0], "expected": -48.999999999999744}, {"input": [-78.0, -48.5], "expected": -48.499999999999844}, {"input": [-78.0, -48.0], "expected": -47.99999999999991}, {"input": [-78.0, -47.5], "expected": -47.49999999999994}, {"input": [-78.0, -47.0], "expected": -46.999999999999964}, {"input": [-78.0, -46.5], "expected": -46.49999999999998}, {"input": [-78.0, -46.0], "expected": -45.999999999999986}, {"input": [-78.0, -45.5], "expected": -45.49999999999999}, {"input": [-78.0, -45.0], "expected": -44.99999999999999}, {"input": [-78.0, -44.5], "expected": -44.5}, {"input": [-78.0, -44.0], "expected": -44.0}, {"input": [-78.0, -43.5], "expected": -43.5}, {"input": [-78.0, -43.0], "expected": -43.0}, {"input": [-78.0, -42.5], "expected": -42.5}, {"input": [-78.0, -42.0], "expected": -42.0}, {"input": [-78.0, -41.5], "expected": -41.5}, {"input": [-78.0, -41.0], "expected": -41.0}, {"input": [-78.0, -40.5], "expected": -40.5}, {"input": [-78.0, -40.0], "expected": -40.0}, {"input": [-78.0, -39.5], "expected": -39.5}, {"input": [-78.0, -39.0], "expected": -39.0}, {"input": [-78.0, -38.5], "expected": -38.5}, {"input": [-78.0, -38.0], "expected": -38.0}, {"input": [-78.0, -37.5], "expected": -37.5}, {"input": [-78.0, -37.0], "expected": -37.0}, {"input": [-78.0, -36.5], "expected": -36.5}, {"input": [-78.0, -36.0], "expected": -36.0}, {"input": [-78.0, -35.5], "expected": -35.5}, {"input": [-78.0, -35.0], "expected": -35.0}, {"input": [-78.0, -34.5], "expected": -34.5}, {"input": [-78.0, -34.0], "expected": -34.0}, {"input": [-78.0, -33.5], "expected": -33.5}, {"input": [-78.0, -33.0], "expected": -33.0}, {"input": [-78.0, -32.5], "expected": -32.5}, {"input": [-78.0, -32.0], "expected": -32.0}, {"input": [-78.0, -31.5], "expected": -31.5}, {"input": [-78.0, -31.0], "expected": -31.0}, {"input": [-78.0, -30.5], "expected": -30.5}, {"input": [-78.0, -30.0], "expected": -30.0}, {"input": [-78.0, -29.5], "expected": -29.5}, {"input": [-78.0, -29.0], "expected": -29.0}, {"input": [-78.0, -28.5], "expected": -28.5}, {"input": [-78.0, -28.0], "expected": -28.0}, {"input": [-78.0, -27.5], "expected": -27.5}, {"input": [-78.0, -27.0], "expected": -27.0}, {"input": [-78.0, -26.5], "expected": -26.5}, {"input": [-78.0, -26.0], "expected": -26.0}, {"input": [-78.0, -25.5], "expected": -25.5}, {"input": [-78.0, -25.0], "expected": -25.0}, {"input": [-78.0, -24.5], "expected": -24.5}, {"input": [-78.0, -24.0], "expected": -24.0}, {"input": [-78.0, -23.5], "expected": -23.5}, {"input": [-78.0, -23.0], "expected": -23.0}, {"input": [-78.0, -22.5], "expected": -22.5}, {"input": [-78.0, -22.0], "expected": -22.0}, {"input": [-78.0, -21.5], "expected": -21.5}, {"input": [-78.0, -21.0], "expected": -21.0}, {"input": [-78.0, -20.5], "expected": -20.5}, {"input": [-78.0, -20.0], "expected": -20.0}, {"input": [-78.0, -19.5], "expected": -19.5}, {"input": [-78.0, -19.0], "expected": -19.0}, {"input": [-78.0, -18.5], "expected": -18.5}, {"input": [-78.0, -18.0], "expected": -18.0}, {"input": [-78.0, -17.5], "expected": -17.5}, {"input": [-78.0, -17.0], "expected": -17.0}, {"input": [-78.0, -16.5], "expected": -16.5}, {"input": [-78.0, -16.0], "expected": -16.0}, {"input": [-78.0, -15.5], "expected": -15.5}, {"input": [-78.0, -15.0], "expected": -15.0}, {"input": [-78.0, -14.5], "expected": -14.5}, {"input": [-78.0, -14.0], "expected": -14.0}, {"input": [-78.0, -13.5], "expected": -13.5}, {"input": [-78.0, -13.0], "expected": -13.0}, {"input": [-78.0, -12.5], "expected": -12.5}, {"input": [-78.0, -12.0], "expected": -12.0}, {"input": [-78.0, -11.5], "expected": -11.5}, {"input": [-78.0, -11.0], "expected": -11.0}, {"input": [-78.0, -10.5], "expected": -10.5}, {"input": [-78.0, -10.0], "expected": -10.0}, {"input": [-78.0, -9.5], "expected": -9.5}, {"input": [-78.0, -9.0], "expected": -9.0}, {"input": [-78.0, -8.5], "expected": -8.5}, {"input": [-78.0, -8.0], "expected": -8.0}, {"input": [-78.0, -7.5], "expected": -7.5}, {"input": [-78.0, -7.0], "expected": -7.0}, {"input": [-78.0, -6.5], "expected": -6.5}, {"input": [-78.0, -6.0], "expected": -6.0}, {"input": [-78.0, -5.5], "expected": -5.5}, {"input": [-78.0, -5.0], "expected": -5.0}, {"input": [-78.0, -4.5], "expected": -4.5}, {"input": [-78.0, -4.0], "expected": -4.0}, {"input": [-78.0, -3.5], "expected": -3.5}, {"input": [-78.0, -3.0], "expected": -3.0}, {"input": [-78.0, -2.5], "expected": -2.5}, {"input": [-78.0, -2.0], "expected": -2.0}, {"input": [-78.0, -1.5], "expected": -1.5}, {"input": [-78.0, -1.0], "expected": -1.0}, {"input": [-78.0, -0.5], "expected": -0.5}, {"input": [-78.0, 0.0], "expected": 1.3336148155022614e-34}, {"input": [-78.0, 0.5], "expected": 0.5}, {"input": [-78.0, 1.0], "expected": 1.0}, {"input": [-78.0, 1.5], "expected": 1.5}, {"input": [-78.0, 2.0], "expected": 2.0}, {"input": [-78.0, 2.5], "expected": 2.5}, {"input": [-78.0, 3.0], "expected": 3.0}, {"input": [-78.0, 3.5], "expected": 3.5}, {"input": [-78.0, 4.0], "expected": 4.0}, {"input": [-78.0, 4.5], "expected": 4.5}, {"input": [-78.0, 5.0], "expected": 5.0}, {"input": [-78.0, 5.5], "expected": 5.5}, {"input": [-78.0, 6.0], "expected": 6.0}, {"input": [-78.0, 6.5], "expected": 6.5}, {"input": [-78.0, 7.0], "expected": 7.0}, {"input": [-78.0, 7.5], "expected": 7.5}, {"input": [-78.0, 8.0], "expected": 8.0}, {"input": [-78.0, 8.5], "expected": 8.5}, {"input": [-78.0, 9.0], "expected": 9.0}, {"input": [-78.0, 9.5], "expected": 9.5}, {"input": [-78.0, 10.0], "expected": 10.0}, {"input": [-78.0, 10.5], "expected": 10.5}, {"input": [-78.0, 11.0], "expected": 11.0}, {"input": [-78.0, 11.5], "expected": 11.5}, {"input": [-78.0, 12.0], "expected": 12.0}, {"input": [-78.0, 12.5], "expected": 12.5}, {"input": [-78.0, 13.0], "expected": 13.0}, {"input": [-78.0, 13.5], "expected": 13.5}, {"input": [-78.0, 14.0], "expected": 14.0}, {"input": [-78.0, 14.5], "expected": 14.5}, {"input": [-78.0, 15.0], "expected": 15.0}, {"input": [-78.0, 15.5], "expected": 15.5}, {"input": [-78.0, 16.0], "expected": 16.0}, {"input": [-78.0, 16.5], "expected": 16.5}, {"input": [-78.0, 17.0], "expected": 17.0}, {"input": [-78.0, 17.5], "expected": 17.5}, {"input": [-78.0, 18.0], "expected": 18.0}, {"input": [-78.0, 18.5], "expected": 18.5}, {"input": [-78.0, 19.0], "expected": 19.0}, {"input": [-78.0, 19.5], "expected": 19.5}, {"input": [-78.0, 20.0], "expected": 20.0}, {"input": [-78.0, 20.5], "expected": 20.5}, {"input": [-78.0, 21.0], "expected": 21.0}, {"input": [-78.0, 21.5], "expected": 21.5}, {"input": [-78.0, 22.0], "expected": 22.0}, {"input": [-78.0, 22.5], "expected": 22.5}, {"input": [-78.0, 23.0], "expected": 23.0}, {"input": [-78.0, 23.5], "expected": 23.5}, {"input": [-78.0, 24.0], "expected": 24.0}, {"input": [-78.0, 24.5], "expected": 24.5}, {"input": [-78.0, 25.0], "expected": 25.0}, {"input": [-78.0, 25.5], "expected": 25.5}, {"input": [-78.0, 26.0], "expected": 26.0}, {"input": [-78.0, 26.5], "expected": 26.5}, {"input": [-78.0, 27.0], "expected": 27.0}, {"input": [-78.0, 27.5], "expected": 27.5}, {"input": [-78.0, 28.0], "expected": 28.0}, {"input": [-78.0, 28.5], "expected": 28.5}, {"input": [-78.0, 29.0], "expected": 29.0}, {"input": [-78.0, 29.5], "expected": 29.5}, {"input": [-78.0, 30.0], "expected": 30.0}, {"input": [-78.0, 30.5], "expected": 30.5}, {"input": [-78.0, 31.0], "expected": 31.0}, {"input": [-78.0, 31.5], "expected": 31.5}, {"input": [-78.0, 32.0], "expected": 32.0}, {"input": [-78.0, 32.5], "expected": 32.5}, {"input": [-78.0, 33.0], "expected": 33.0}, {"input": [-78.0, 33.5], "expected": 33.5}, {"input": [-78.0, 34.0], "expected": 34.0}, {"input": [-78.0, 34.5], "expected": 34.5}, {"input": [-78.0, 35.0], "expected": 35.0}, {"input": [-78.0, 35.5], "expected": 35.5}, {"input": [-78.0, 36.0], "expected": 36.0}, {"input": [-78.0, 36.5], "expected": 36.5}, {"input": [-78.0, 37.0], "expected": 37.0}, {"input": [-78.0, 37.5], "expected": 37.5}, {"input": [-78.0, 38.0], "expected": 38.0}, {"input": [-78.0, 38.5], "expected": 38.5}, {"input": [-78.0, 39.0], "expected": 39.0}, {"input": [-78.0, 39.5], "expected": 39.5}, {"input": [-78.0, 40.0], "expected": 40.0}, {"input": [-78.0, 40.5], "expected": 40.5}, {"input": [-78.0, 41.0], "expected": 41.0}, {"input": [-78.0, 41.5], "expected": 41.5}, {"input": [-78.0, 42.0], "expected": 42.0}, {"input": [-78.0, 42.5], "expected": 42.5}, {"input": [-78.0, 43.0], "expected": 43.0}, {"input": [-78.0, 43.5], "expected": 43.5}, {"input": [-78.0, 44.0], "expected": 44.0}, {"input": [-78.0, 44.5], "expected": 44.5}, {"input": [-78.0, 45.0], "expected": 45.0}, {"input": [-78.0, 45.5], "expected": 45.5}, {"input": [-78.0, 46.0], "expected": 46.0}, {"input": [-78.0, 46.5], "expected": 46.5}, {"input": [-78.0, 47.0], "expected": 47.0}, {"input": [-78.0, 47.5], "expected": 47.5}, {"input": [-78.0, 48.0], "expected": 48.0}, {"input": [-78.0, 48.5], "expected": 48.5}, {"input": [-78.0, 49.0], "expected": 49.0}, {"input": [-78.0, 49.5], "expected": 49.5}, {"input": [-78.0, 50.0], "expected": 50.0}, {"input": [-78.0, 50.5], "expected": 50.5}, {"input": [-78.0, 51.0], "expected": 51.0}, {"input": [-78.0, 51.5], "expected": 51.5}, {"input": [-78.0, 52.0], "expected": 52.0}, {"input": [-78.0, 52.5], "expected": 52.5}, {"input": [-78.0, 53.0], "expected": 53.0}, {"input": [-78.0, 53.5], "expected": 53.5}, {"input": [-78.0, 54.0], "expected": 54.0}, {"input": [-78.0, 54.5], "expected": 54.5}, {"input": [-78.0, 55.0], "expected": 55.0}, {"input": [-78.0, 55.5], "expected": 55.5}, {"input": [-78.0, 56.0], "expected": 56.0}, {"input": [-78.0, 56.5], "expected": 56.5}, {"input": [-78.0, 57.0], "expected": 57.0}, {"input": [-78.0, 57.5], "expected": 57.5}, {"input": [-78.0, 58.0], "expected": 58.0}, {"input": [-78.0, 58.5], "expected": 58.5}, {"input": [-78.0, 59.0], "expected": 59.0}, {"input": [-78.0, 59.5], "expected": 59.5}, {"input": [-78.0, 60.0], "expected": 60.0}, {"input": [-78.0, 60.5], "expected": 60.5}, {"input": [-78.0, 61.0], "expected": 61.0}, {"input": [-78.0, 61.5], "expected": 61.5}, {"input": [-78.0, 62.0], "expected": 62.0}, {"input": [-78.0, 62.5], "expected": 62.5}, {"input": [-78.0, 63.0], "expected": 63.0}, {"input": [-78.0, 63.5], "expected": 63.5}, {"input": [-78.0, 64.0], "expected": 64.0}, {"input": [-78.0, 64.5], "expected": 64.5}, {"input": [-78.0, 65.0], "expected": 65.0}, {"input": [-78.0, 65.5], "expected": 65.5}, {"input": [-78.0, 66.0], "expected": 66.0}, {"input": [-78.0, 66.5], "expected": 66.5}, {"input": [-78.0, 67.0], "expected": 67.0}, {"input": [-78.0, 67.5], "expected": 67.5}, {"input": [-78.0, 68.0], "expected": 68.0}, {"input": [-78.0, 68.5], "expected": 68.5}, {"input": [-78.0, 69.0], "expected": 69.0}, {"input": [-78.0, 69.5], "expected": 69.5}, {"input": [-78.0, 70.0], "expected": 70.0}, {"input": [-78.0, 70.5], "expected": 70.5}, {"input": [-78.0, 71.0], "expected": 71.0}, {"input": [-78.0, 71.5], "expected": 71.5}, {"input": [-78.0, 72.0], "expected": 72.0}, {"input": [-78.0, 72.5], "expected": 72.5}, {"input": [-78.0, 73.0], "expected": 73.0}, {"input": [-78.0, 73.5], "expected": 73.5}, {"input": [-78.0, 74.0], "expected": 74.0}, {"input": [-78.0, 74.5], "expected": 74.5}, {"input": [-78.0, 75.0], "expected": 75.0}, {"input": [-78.0, 75.5], "expected": 75.5}, {"input": [-78.0, 76.0], "expected": 76.0}, {"input": [-78.0, 76.5], "expected": 76.5}, {"input": [-78.0, 77.0], "expected": 77.0}, {"input": [-78.0, 77.5], "expected": 77.5}, {"input": [-78.0, 78.0], "expected": 78.0}, {"input": [-78.0, 78.5], "expected": 78.5}, {"input": [-78.0, 79.0], "expected": 79.0}, {"input": [-78.0, 79.5], "expected": 79.5}, {"input": [-78.0, 80.0], "expected": 80.0}, {"input": [-78.0, 80.5], "expected": 80.5}, {"input": [-78.0, 81.0], "expected": 81.0}, {"input": [-78.0, 81.5], "expected": 81.5}, {"input": [-78.0, 82.0], "expected": 82.0}, {"input": [-78.0, 82.5], "expected": 82.5}, {"input": [-78.0, 83.0], "expected": 83.0}, {"input": [-78.0, 83.5], "expected": 83.5}, {"input": [-78.0, 84.0], "expected": 84.0}, {"input": [-78.0, 84.5], "expected": 84.5}, {"input": [-78.0, 85.0], "expected": 85.0}, {"input": [-78.0, 85.5], "expected": 85.5}, {"input": [-78.0, 86.0], "expected": 86.0}, {"input": [-78.0, 86.5], "expected": 86.5}, {"input": [-78.0, 87.0], "expected": 87.0}, {"input": [-78.0, 87.5], "expected": 87.5}, {"input": [-78.0, 88.0], "expected": 88.0}, {"input": [-78.0, 88.5], "expected": 88.5}, {"input": [-78.0, 89.0], "expected": 89.0}, {"input": [-78.0, 89.5], "expected": 89.5}, {"input": [-78.0, 90.0], "expected": 90.0}, {"input": [-78.0, 90.5], "expected": 90.5}, {"input": [-78.0, 91.0], "expected": 91.0}, {"input": [-78.0, 91.5], "expected": 91.5}, {"input": [-78.0, 92.0], "expected": 92.0}, {"input": [-78.0, 92.5], "expected": 92.5}, {"input": [-78.0, 93.0], "expected": 93.0}, {"input": [-78.0, 93.5], "expected": 93.5}, {"input": [-78.0, 94.0], "expected": 94.0}, {"input": [-78.0, 94.5], "expected": 94.5}, {"input": [-78.0, 95.0], "expected": 95.0}, {"input": [-78.0, 95.5], "expected": 95.5}, {"input": [-78.0, 96.0], "expected": 96.0}, {"input": [-78.0, 96.5], "expected": 96.5}, {"input": [-78.0, 97.0], "expected": 97.0}, {"input": [-78.0, 97.5], "expected": 97.5}, {"input": [-78.0, 98.0], "expected": 98.0}, {"input": [-78.0, 98.5], "expected": 98.5}, {"input": [-78.0, 99.0], "expected": 99.0}, {"input": [-78.0, 99.5], "expected": 99.5}, {"input": [-77.5, -100.0], "expected": -77.4999999998308}, {"input": [-77.5, -99.5], "expected": -77.49999999972106}, {"input": [-77.5, -99.0], "expected": -77.4999999995401}, {"input": [-77.5, -98.5], "expected": -77.49999999924174}, {"input": [-77.5, -98.0], "expected": -77.49999999874984}, {"input": [-77.5, -97.5], "expected": -77.49999999793884}, {"input": [-77.5, -97.0], "expected": -77.49999999660173}, {"input": [-77.5, -96.5], "expected": -77.4999999943972}, {"input": [-77.5, -96.0], "expected": -77.49999999076255}, {"input": [-77.5, -95.5], "expected": -77.49999998477001}, {"input": [-77.5, -95.0], "expected": -77.49999997489}, {"input": [-77.5, -94.5], "expected": -77.49999995860063}, {"input": [-77.5, -94.0], "expected": -77.49999993174397}, {"input": [-77.5, -93.5], "expected": -77.49999988746484}, {"input": [-77.5, -93.0], "expected": -77.49999981446088}, {"input": [-77.5, -92.5], "expected": -77.49999969409772}, {"input": [-77.5, -92.0], "expected": -77.49999949565246}, {"input": [-77.5, -91.5], "expected": -77.49999916847163}, {"input": [-77.5, -91.0], "expected": -77.49999862904185}, {"input": [-77.5, -90.5], "expected": -77.49999773967315}, {"input": [-77.5, -90.0], "expected": -77.49999627335377}, {"input": [-77.5, -89.5], "expected": -77.49999385580652}, {"input": [-77.5, -89.0], "expected": -77.49998986995772}, {"input": [-77.5, -88.5], "expected": -77.49998329843868}, {"input": [-77.5, -88.0], "expected": -77.49997246392977}, {"input": [-77.5, -87.5], "expected": -77.49995460110078}, {"input": [-77.5, -87.0], "expected": -77.49992515097136}, {"input": [-77.5, -86.5], "expected": -77.49987659781027}, {"input": [-77.5, -86.0], "expected": -77.49979655232787}, {"input": [-77.5, -85.5], "expected": -77.4996645936271}, {"input": [-77.5, -85.0], "expected": -77.49944706852465}, {"input": [-77.5, -84.5], "expected": -77.49908853354623}, {"input": [-77.5, -84.0], "expected": -77.49849768984025}, {"input": [-77.5, -83.5], "expected": -77.49752431486228}, {"input": [-77.5, -83.0], "expected": -77.49592155672943}, {"input": [-77.5, -82.5], "expected": -77.49328465151088}, {"input": [-77.5, -82.0], "expected": -77.4889522551514}, {"input": [-77.5, -81.5], "expected": -77.4818500720822}, {"input": [-77.5, -81.0], "expected": -77.47024958172737}, {"input": [-77.5, -80.5], "expected": -77.45141264842626}, {"input": [-77.5, -80.0], "expected": -77.42111026570745}, {"input": [-77.5, -79.5], "expected": -77.37307198895702}, {"input": [-77.5, -79.0], "expected": -77.29858672201725}, {"input": [-77.5, -78.5], "expected": -77.18673831248178}, {"input": [-77.5, -78.0], "expected": -77.0259230158199}, {"input": [-77.5, -77.5], "expected": -76.80685281944005}, {"input": [-77.5, -77.0], "expected": -76.5259230158199}, {"input": [-77.5, -76.5], "expected": -76.18673831248178}, {"input": [-77.5, -76.0], "expected": -75.79858672201725}, {"input": [-77.5, -75.5], "expected": -75.37307198895702}, {"input": [-77.5, -75.0], "expected": -74.92111026570745}, {"input": [-77.5, -74.5], "expected": -74.45141264842626}, {"input": [-77.5, -74.0], "expected": -73.97024958172737}, {"input": [-77.5, -73.5], "expected": -73.4818500720822}, {"input": [-77.5, -73.0], "expected": -72.9889522551514}, {"input": [-77.5, -72.5], "expected": -72.49328465151088}, {"input": [-77.5, -72.0], "expected": -71.99592155672943}, {"input": [-77.5, -71.5], "expected": -71.49752431486228}, {"input": [-77.5, -71.0], "expected": -70.99849768984025}, {"input": [-77.5, -70.5], "expected": -70.49908853354623}, {"input": [-77.5, -70.0], "expected": -69.99944706852465}, {"input": [-77.5, -69.5], "expected": -69.4996645936271}, {"input": [-77.5, -69.0], "expected": -68.99979655232787}, {"input": [-77.5, -68.5], "expected": -68.49987659781027}, {"input": [-77.5, -68.0], "expected": -67.99992515097136}, {"input": [-77.5, -67.5], "expected": -67.49995460110078}, {"input": [-77.5, -67.0], "expected": -66.99997246392977}, {"input": [-77.5, -66.5], "expected": -66.49998329843868}, {"input": [-77.5, -66.0], "expected": -65.99998986995772}, {"input": [-77.5, -65.5], "expected": -65.49999385580652}, {"input": [-77.5, -65.0], "expected": -64.99999627335377}, {"input": [-77.5, -64.5], "expected": -64.49999773967315}, {"input": [-77.5, -64.0], "expected": -63.999998629041855}, {"input": [-77.5, -63.5], "expected": -63.499999168471625}, {"input": [-77.5, -63.0], "expected": -62.99999949565247}, {"input": [-77.5, -62.5], "expected": -62.499999694097724}, {"input": [-77.5, -62.0], "expected": -61.99999981446088}, {"input": [-77.5, -61.5], "expected": -61.49999988746483}, {"input": [-77.5, -61.0], "expected": -60.99999993174397}, {"input": [-77.5, -60.5], "expected": -60.499999958600625}, {"input": [-77.5, -60.0], "expected": -59.99999997489001}, {"input": [-77.5, -59.5], "expected": -59.49999998477002}, {"input": [-77.5, -59.0], "expected": -58.999999990762554}, {"input": [-77.5, -58.5], "expected": -58.49999999439721}, {"input": [-77.5, -58.0], "expected": -57.99999999660173}, {"input": [-77.5, -57.5], "expected": -57.49999999793884}, {"input": [-77.5, -57.0], "expected": -56.99999999874985}, {"input": [-77.5, -56.5], "expected": -56.499999999241744}, {"input": [-77.5, -56.0], "expected": -55.999999999540094}, {"input": [-77.5, -55.5], "expected": -55.499999999721055}, {"input": [-77.5, -55.0], "expected": -54.99999999983081}, {"input": [-77.5, -54.5], "expected": -54.49999999989738}, {"input": [-77.5, -54.0], "expected": -53.99999999993776}, {"input": [-77.5, -53.5], "expected": -53.49999999996225}, {"input": [-77.5, -53.0], "expected": -52.9999999999771}, {"input": [-77.5, -52.5], "expected": -52.49999999998611}, {"input": [-77.5, -52.0], "expected": -51.99999999999158}, {"input": [-77.5, -51.5], "expected": -51.49999999999489}, {"input": [-77.5, -51.0], "expected": -50.9999999999969}, {"input": [-77.5, -50.5], "expected": -50.49999999999812}, {"input": [-77.5, -50.0], "expected": -49.99999999999886}, {"input": [-77.5, -49.5], "expected": -49.49999999999931}, {"input": [-77.5, -49.0], "expected": -48.99999999999958}, {"input": [-77.5, -48.5], "expected": -48.499999999999744}, {"input": [-77.5, -48.0], "expected": -47.999999999999844}, {"input": [-77.5, -47.5], "expected": -47.49999999999991}, {"input": [-77.5, -47.0], "expected": -46.99999999999994}, {"input": [-77.5, -46.5], "expected": -46.499999999999964}, {"input": [-77.5, -46.0], "expected": -45.99999999999998}, {"input": [-77.5, -45.5], "expected": -45.499999999999986}, {"input": [-77.5, -45.0], "expected": -44.99999999999999}, {"input": [-77.5, -44.5], "expected": -44.49999999999999}, {"input": [-77.5, -44.0], "expected": -44.0}, {"input": [-77.5, -43.5], "expected": -43.5}, {"input": [-77.5, -43.0], "expected": -43.0}, {"input": [-77.5, -42.5], "expected": -42.5}, {"input": [-77.5, -42.0], "expected": -42.0}, {"input": [-77.5, -41.5], "expected": -41.5}, {"input": [-77.5, -41.0], "expected": -41.0}, {"input": [-77.5, -40.5], "expected": -40.5}, {"input": [-77.5, -40.0], "expected": -40.0}, {"input": [-77.5, -39.5], "expected": -39.5}, {"input": [-77.5, -39.0], "expected": -39.0}, {"input": [-77.5, -38.5], "expected": -38.5}, {"input": [-77.5, -38.0], "expected": -38.0}, {"input": [-77.5, -37.5], "expected": -37.5}, {"input": [-77.5, -37.0], "expected": -37.0}, {"input": [-77.5, -36.5], "expected": -36.5}, {"input": [-77.5, -36.0], "expected": -36.0}, {"input": [-77.5, -35.5], "expected": -35.5}, {"input": [-77.5, -35.0], "expected": -35.0}, {"input": [-77.5, -34.5], "expected": -34.5}, {"input": [-77.5, -34.0], "expected": -34.0}, {"input": [-77.5, -33.5], "expected": -33.5}, {"input": [-77.5, -33.0], "expected": -33.0}, {"input": [-77.5, -32.5], "expected": -32.5}, {"input": [-77.5, -32.0], "expected": -32.0}, {"input": [-77.5, -31.5], "expected": -31.5}, {"input": [-77.5, -31.0], "expected": -31.0}, {"input": [-77.5, -30.5], "expected": -30.5}, {"input": [-77.5, -30.0], "expected": -30.0}, {"input": [-77.5, -29.5], "expected": -29.5}, {"input": [-77.5, -29.0], "expected": -29.0}, {"input": [-77.5, -28.5], "expected": -28.5}, {"input": [-77.5, -28.0], "expected": -28.0}, {"input": [-77.5, -27.5], "expected": -27.5}, {"input": [-77.5, -27.0], "expected": -27.0}, {"input": [-77.5, -26.5], "expected": -26.5}, {"input": [-77.5, -26.0], "expected": -26.0}, {"input": [-77.5, -25.5], "expected": -25.5}, {"input": [-77.5, -25.0], "expected": -25.0}, {"input": [-77.5, -24.5], "expected": -24.5}, {"input": [-77.5, -24.0], "expected": -24.0}, {"input": [-77.5, -23.5], "expected": -23.5}, {"input": [-77.5, -23.0], "expected": -23.0}, {"input": [-77.5, -22.5], "expected": -22.5}, {"input": [-77.5, -22.0], "expected": -22.0}, {"input": [-77.5, -21.5], "expected": -21.5}, {"input": [-77.5, -21.0], "expected": -21.0}, {"input": [-77.5, -20.5], "expected": -20.5}, {"input": [-77.5, -20.0], "expected": -20.0}, {"input": [-77.5, -19.5], "expected": -19.5}, {"input": [-77.5, -19.0], "expected": -19.0}, {"input": [-77.5, -18.5], "expected": -18.5}, {"input": [-77.5, -18.0], "expected": -18.0}, {"input": [-77.5, -17.5], "expected": -17.5}, {"input": [-77.5, -17.0], "expected": -17.0}, {"input": [-77.5, -16.5], "expected": -16.5}, {"input": [-77.5, -16.0], "expected": -16.0}, {"input": [-77.5, -15.5], "expected": -15.5}, {"input": [-77.5, -15.0], "expected": -15.0}, {"input": [-77.5, -14.5], "expected": -14.5}, {"input": [-77.5, -14.0], "expected": -14.0}, {"input": [-77.5, -13.5], "expected": -13.5}, {"input": [-77.5, -13.0], "expected": -13.0}, {"input": [-77.5, -12.5], "expected": -12.5}, {"input": [-77.5, -12.0], "expected": -12.0}, {"input": [-77.5, -11.5], "expected": -11.5}, {"input": [-77.5, -11.0], "expected": -11.0}, {"input": [-77.5, -10.5], "expected": -10.5}, {"input": [-77.5, -10.0], "expected": -10.0}, {"input": [-77.5, -9.5], "expected": -9.5}, {"input": [-77.5, -9.0], "expected": -9.0}, {"input": [-77.5, -8.5], "expected": -8.5}, {"input": [-77.5, -8.0], "expected": -8.0}, {"input": [-77.5, -7.5], "expected": -7.5}, {"input": [-77.5, -7.0], "expected": -7.0}, {"input": [-77.5, -6.5], "expected": -6.5}, {"input": [-77.5, -6.0], "expected": -6.0}, {"input": [-77.5, -5.5], "expected": -5.5}, {"input": [-77.5, -5.0], "expected": -5.0}, {"input": [-77.5, -4.5], "expected": -4.5}, {"input": [-77.5, -4.0], "expected": -4.0}, {"input": [-77.5, -3.5], "expected": -3.5}, {"input": [-77.5, -3.0], "expected": -3.0}, {"input": [-77.5, -2.5], "expected": -2.5}, {"input": [-77.5, -2.0], "expected": -2.0}, {"input": [-77.5, -1.5], "expected": -1.5}, {"input": [-77.5, -1.0], "expected": -1.0}, {"input": [-77.5, -0.5], "expected": -0.5}, {"input": [-77.5, 0.0], "expected": 2.1987591132394053e-34}, {"input": [-77.5, 0.5], "expected": 0.5}, {"input": [-77.5, 1.0], "expected": 1.0}, {"input": [-77.5, 1.5], "expected": 1.5}, {"input": [-77.5, 2.0], "expected": 2.0}, {"input": [-77.5, 2.5], "expected": 2.5}, {"input": [-77.5, 3.0], "expected": 3.0}, {"input": [-77.5, 3.5], "expected": 3.5}, {"input": [-77.5, 4.0], "expected": 4.0}, {"input": [-77.5, 4.5], "expected": 4.5}, {"input": [-77.5, 5.0], "expected": 5.0}, {"input": [-77.5, 5.5], "expected": 5.5}, {"input": [-77.5, 6.0], "expected": 6.0}, {"input": [-77.5, 6.5], "expected": 6.5}, {"input": [-77.5, 7.0], "expected": 7.0}, {"input": [-77.5, 7.5], "expected": 7.5}, {"input": [-77.5, 8.0], "expected": 8.0}, {"input": [-77.5, 8.5], "expected": 8.5}, {"input": [-77.5, 9.0], "expected": 9.0}, {"input": [-77.5, 9.5], "expected": 9.5}, {"input": [-77.5, 10.0], "expected": 10.0}, {"input": [-77.5, 10.5], "expected": 10.5}, {"input": [-77.5, 11.0], "expected": 11.0}, {"input": [-77.5, 11.5], "expected": 11.5}, {"input": [-77.5, 12.0], "expected": 12.0}, {"input": [-77.5, 12.5], "expected": 12.5}, {"input": [-77.5, 13.0], "expected": 13.0}, {"input": [-77.5, 13.5], "expected": 13.5}, {"input": [-77.5, 14.0], "expected": 14.0}, {"input": [-77.5, 14.5], "expected": 14.5}, {"input": [-77.5, 15.0], "expected": 15.0}, {"input": [-77.5, 15.5], "expected": 15.5}, {"input": [-77.5, 16.0], "expected": 16.0}, {"input": [-77.5, 16.5], "expected": 16.5}, {"input": [-77.5, 17.0], "expected": 17.0}, {"input": [-77.5, 17.5], "expected": 17.5}, {"input": [-77.5, 18.0], "expected": 18.0}, {"input": [-77.5, 18.5], "expected": 18.5}, {"input": [-77.5, 19.0], "expected": 19.0}, {"input": [-77.5, 19.5], "expected": 19.5}, {"input": [-77.5, 20.0], "expected": 20.0}, {"input": [-77.5, 20.5], "expected": 20.5}, {"input": [-77.5, 21.0], "expected": 21.0}, {"input": [-77.5, 21.5], "expected": 21.5}, {"input": [-77.5, 22.0], "expected": 22.0}, {"input": [-77.5, 22.5], "expected": 22.5}, {"input": [-77.5, 23.0], "expected": 23.0}, {"input": [-77.5, 23.5], "expected": 23.5}, {"input": [-77.5, 24.0], "expected": 24.0}, {"input": [-77.5, 24.5], "expected": 24.5}, {"input": [-77.5, 25.0], "expected": 25.0}, {"input": [-77.5, 25.5], "expected": 25.5}, {"input": [-77.5, 26.0], "expected": 26.0}, {"input": [-77.5, 26.5], "expected": 26.5}, {"input": [-77.5, 27.0], "expected": 27.0}, {"input": [-77.5, 27.5], "expected": 27.5}, {"input": [-77.5, 28.0], "expected": 28.0}, {"input": [-77.5, 28.5], "expected": 28.5}, {"input": [-77.5, 29.0], "expected": 29.0}, {"input": [-77.5, 29.5], "expected": 29.5}, {"input": [-77.5, 30.0], "expected": 30.0}, {"input": [-77.5, 30.5], "expected": 30.5}, {"input": [-77.5, 31.0], "expected": 31.0}, {"input": [-77.5, 31.5], "expected": 31.5}, {"input": [-77.5, 32.0], "expected": 32.0}, {"input": [-77.5, 32.5], "expected": 32.5}, {"input": [-77.5, 33.0], "expected": 33.0}, {"input": [-77.5, 33.5], "expected": 33.5}, {"input": [-77.5, 34.0], "expected": 34.0}, {"input": [-77.5, 34.5], "expected": 34.5}, {"input": [-77.5, 35.0], "expected": 35.0}, {"input": [-77.5, 35.5], "expected": 35.5}, {"input": [-77.5, 36.0], "expected": 36.0}, {"input": [-77.5, 36.5], "expected": 36.5}, {"input": [-77.5, 37.0], "expected": 37.0}, {"input": [-77.5, 37.5], "expected": 37.5}, {"input": [-77.5, 38.0], "expected": 38.0}, {"input": [-77.5, 38.5], "expected": 38.5}, {"input": [-77.5, 39.0], "expected": 39.0}, {"input": [-77.5, 39.5], "expected": 39.5}, {"input": [-77.5, 40.0], "expected": 40.0}, {"input": [-77.5, 40.5], "expected": 40.5}, {"input": [-77.5, 41.0], "expected": 41.0}, {"input": [-77.5, 41.5], "expected": 41.5}, {"input": [-77.5, 42.0], "expected": 42.0}, {"input": [-77.5, 42.5], "expected": 42.5}, {"input": [-77.5, 43.0], "expected": 43.0}, {"input": [-77.5, 43.5], "expected": 43.5}, {"input": [-77.5, 44.0], "expected": 44.0}, {"input": [-77.5, 44.5], "expected": 44.5}, {"input": [-77.5, 45.0], "expected": 45.0}, {"input": [-77.5, 45.5], "expected": 45.5}, {"input": [-77.5, 46.0], "expected": 46.0}, {"input": [-77.5, 46.5], "expected": 46.5}, {"input": [-77.5, 47.0], "expected": 47.0}, {"input": [-77.5, 47.5], "expected": 47.5}, {"input": [-77.5, 48.0], "expected": 48.0}, {"input": [-77.5, 48.5], "expected": 48.5}, {"input": [-77.5, 49.0], "expected": 49.0}, {"input": [-77.5, 49.5], "expected": 49.5}, {"input": [-77.5, 50.0], "expected": 50.0}, {"input": [-77.5, 50.5], "expected": 50.5}, {"input": [-77.5, 51.0], "expected": 51.0}, {"input": [-77.5, 51.5], "expected": 51.5}, {"input": [-77.5, 52.0], "expected": 52.0}, {"input": [-77.5, 52.5], "expected": 52.5}, {"input": [-77.5, 53.0], "expected": 53.0}, {"input": [-77.5, 53.5], "expected": 53.5}, {"input": [-77.5, 54.0], "expected": 54.0}, {"input": [-77.5, 54.5], "expected": 54.5}, {"input": [-77.5, 55.0], "expected": 55.0}, {"input": [-77.5, 55.5], "expected": 55.5}, {"input": [-77.5, 56.0], "expected": 56.0}, {"input": [-77.5, 56.5], "expected": 56.5}, {"input": [-77.5, 57.0], "expected": 57.0}, {"input": [-77.5, 57.5], "expected": 57.5}, {"input": [-77.5, 58.0], "expected": 58.0}, {"input": [-77.5, 58.5], "expected": 58.5}, {"input": [-77.5, 59.0], "expected": 59.0}, {"input": [-77.5, 59.5], "expected": 59.5}, {"input": [-77.5, 60.0], "expected": 60.0}, {"input": [-77.5, 60.5], "expected": 60.5}, {"input": [-77.5, 61.0], "expected": 61.0}, {"input": [-77.5, 61.5], "expected": 61.5}, {"input": [-77.5, 62.0], "expected": 62.0}, {"input": [-77.5, 62.5], "expected": 62.5}, {"input": [-77.5, 63.0], "expected": 63.0}, {"input": [-77.5, 63.5], "expected": 63.5}, {"input": [-77.5, 64.0], "expected": 64.0}, {"input": [-77.5, 64.5], "expected": 64.5}, {"input": [-77.5, 65.0], "expected": 65.0}, {"input": [-77.5, 65.5], "expected": 65.5}, {"input": [-77.5, 66.0], "expected": 66.0}, {"input": [-77.5, 66.5], "expected": 66.5}, {"input": [-77.5, 67.0], "expected": 67.0}, {"input": [-77.5, 67.5], "expected": 67.5}, {"input": [-77.5, 68.0], "expected": 68.0}, {"input": [-77.5, 68.5], "expected": 68.5}, {"input": [-77.5, 69.0], "expected": 69.0}, {"input": [-77.5, 69.5], "expected": 69.5}, {"input": [-77.5, 70.0], "expected": 70.0}, {"input": [-77.5, 70.5], "expected": 70.5}, {"input": [-77.5, 71.0], "expected": 71.0}, {"input": [-77.5, 71.5], "expected": 71.5}, {"input": [-77.5, 72.0], "expected": 72.0}, {"input": [-77.5, 72.5], "expected": 72.5}, {"input": [-77.5, 73.0], "expected": 73.0}, {"input": [-77.5, 73.5], "expected": 73.5}, {"input": [-77.5, 74.0], "expected": 74.0}, {"input": [-77.5, 74.5], "expected": 74.5}, {"input": [-77.5, 75.0], "expected": 75.0}, {"input": [-77.5, 75.5], "expected": 75.5}, {"input": [-77.5, 76.0], "expected": 76.0}, {"input": [-77.5, 76.5], "expected": 76.5}, {"input": [-77.5, 77.0], "expected": 77.0}, {"input": [-77.5, 77.5], "expected": 77.5}, {"input": [-77.5, 78.0], "expected": 78.0}, {"input": [-77.5, 78.5], "expected": 78.5}, {"input": [-77.5, 79.0], "expected": 79.0}, {"input": [-77.5, 79.5], "expected": 79.5}, {"input": [-77.5, 80.0], "expected": 80.0}, {"input": [-77.5, 80.5], "expected": 80.5}, {"input": [-77.5, 81.0], "expected": 81.0}, {"input": [-77.5, 81.5], "expected": 81.5}, {"input": [-77.5, 82.0], "expected": 82.0}, {"input": [-77.5, 82.5], "expected": 82.5}, {"input": [-77.5, 83.0], "expected": 83.0}, {"input": [-77.5, 83.5], "expected": 83.5}, {"input": [-77.5, 84.0], "expected": 84.0}, {"input": [-77.5, 84.5], "expected": 84.5}, {"input": [-77.5, 85.0], "expected": 85.0}, {"input": [-77.5, 85.5], "expected": 85.5}, {"input": [-77.5, 86.0], "expected": 86.0}, {"input": [-77.5, 86.5], "expected": 86.5}, {"input": [-77.5, 87.0], "expected": 87.0}, {"input": [-77.5, 87.5], "expected": 87.5}, {"input": [-77.5, 88.0], "expected": 88.0}, {"input": [-77.5, 88.5], "expected": 88.5}, {"input": [-77.5, 89.0], "expected": 89.0}, {"input": [-77.5, 89.5], "expected": 89.5}, {"input": [-77.5, 90.0], "expected": 90.0}, {"input": [-77.5, 90.5], "expected": 90.5}, {"input": [-77.5, 91.0], "expected": 91.0}, {"input": [-77.5, 91.5], "expected": 91.5}, {"input": [-77.5, 92.0], "expected": 92.0}, {"input": [-77.5, 92.5], "expected": 92.5}, {"input": [-77.5, 93.0], "expected": 93.0}, {"input": [-77.5, 93.5], "expected": 93.5}, {"input": [-77.5, 94.0], "expected": 94.0}, {"input": [-77.5, 94.5], "expected": 94.5}, {"input": [-77.5, 95.0], "expected": 95.0}, {"input": [-77.5, 95.5], "expected": 95.5}, {"input": [-77.5, 96.0], "expected": 96.0}, {"input": [-77.5, 96.5], "expected": 96.5}, {"input": [-77.5, 97.0], "expected": 97.0}, {"input": [-77.5, 97.5], "expected": 97.5}, {"input": [-77.5, 98.0], "expected": 98.0}, {"input": [-77.5, 98.5], "expected": 98.5}, {"input": [-77.5, 99.0], "expected": 99.0}, {"input": [-77.5, 99.5], "expected": 99.5}, {"input": [-77.0, -100.0], "expected": -76.99999999989738}, {"input": [-77.0, -99.5], "expected": -76.9999999998308}, {"input": [-77.0, -99.0], "expected": -76.99999999972106}, {"input": [-77.0, -98.5], "expected": -76.9999999995401}, {"input": [-77.0, -98.0], "expected": -76.99999999924174}, {"input": [-77.0, -97.5], "expected": -76.99999999874984}, {"input": [-77.0, -97.0], "expected": -76.99999999793884}, {"input": [-77.0, -96.5], "expected": -76.99999999660173}, {"input": [-77.0, -96.0], "expected": -76.9999999943972}, {"input": [-77.0, -95.5], "expected": -76.99999999076255}, {"input": [-77.0, -95.0], "expected": -76.99999998477001}, {"input": [-77.0, -94.5], "expected": -76.99999997489}, {"input": [-77.0, -94.0], "expected": -76.99999995860063}, {"input": [-77.0, -93.5], "expected": -76.99999993174397}, {"input": [-77.0, -93.0], "expected": -76.99999988746484}, {"input": [-77.0, -92.5], "expected": -76.99999981446088}, {"input": [-77.0, -92.0], "expected": -76.99999969409772}, {"input": [-77.0, -91.5], "expected": -76.99999949565246}, {"input": [-77.0, -91.0], "expected": -76.99999916847163}, {"input": [-77.0, -90.5], "expected": -76.99999862904185}, {"input": [-77.0, -90.0], "expected": -76.99999773967315}, {"input": [-77.0, -89.5], "expected": -76.99999627335377}, {"input": [-77.0, -89.0], "expected": -76.99999385580652}, {"input": [-77.0, -88.5], "expected": -76.99998986995772}, {"input": [-77.0, -88.0], "expected": -76.99998329843868}, {"input": [-77.0, -87.5], "expected": -76.99997246392977}, {"input": [-77.0, -87.0], "expected": -76.99995460110078}, {"input": [-77.0, -86.5], "expected": -76.99992515097136}, {"input": [-77.0, -86.0], "expected": -76.99987659781027}, {"input": [-77.0, -85.5], "expected": -76.99979655232787}, {"input": [-77.0, -85.0], "expected": -76.9996645936271}, {"input": [-77.0, -84.5], "expected": -76.99944706852465}, {"input": [-77.0, -84.0], "expected": -76.99908853354623}, {"input": [-77.0, -83.5], "expected": -76.99849768984025}, {"input": [-77.0, -83.0], "expected": -76.99752431486228}, {"input": [-77.0, -82.5], "expected": -76.99592155672943}, {"input": [-77.0, -82.0], "expected": -76.99328465151088}, {"input": [-77.0, -81.5], "expected": -76.9889522551514}, {"input": [-77.0, -81.0], "expected": -76.9818500720822}, {"input": [-77.0, -80.5], "expected": -76.97024958172737}, {"input": [-77.0, -80.0], "expected": -76.95141264842626}, {"input": [-77.0, -79.5], "expected": -76.92111026570745}, {"input": [-77.0, -79.0], "expected": -76.87307198895702}, {"input": [-77.0, -78.5], "expected": -76.79858672201725}, {"input": [-77.0, -78.0], "expected": -76.68673831248178}, {"input": [-77.0, -77.5], "expected": -76.5259230158199}, {"input": [-77.0, -77.0], "expected": -76.30685281944005}, {"input": [-77.0, -76.5], "expected": -76.0259230158199}, {"input": [-77.0, -76.0], "expected": -75.68673831248178}, {"input": [-77.0, -75.5], "expected": -75.29858672201725}, {"input": [-77.0, -75.0], "expected": -74.87307198895702}, {"input": [-77.0, -74.5], "expected": -74.42111026570745}, {"input": [-77.0, -74.0], "expected": -73.95141264842626}, {"input": [-77.0, -73.5], "expected": -73.47024958172737}, {"input": [-77.0, -73.0], "expected": -72.9818500720822}, {"input": [-77.0, -72.5], "expected": -72.4889522551514}, {"input": [-77.0, -72.0], "expected": -71.99328465151088}, {"input": [-77.0, -71.5], "expected": -71.49592155672943}, {"input": [-77.0, -71.0], "expected": -70.99752431486228}, {"input": [-77.0, -70.5], "expected": -70.49849768984025}, {"input": [-77.0, -70.0], "expected": -69.99908853354623}, {"input": [-77.0, -69.5], "expected": -69.49944706852465}, {"input": [-77.0, -69.0], "expected": -68.9996645936271}, {"input": [-77.0, -68.5], "expected": -68.49979655232787}, {"input": [-77.0, -68.0], "expected": -67.99987659781027}, {"input": [-77.0, -67.5], "expected": -67.49992515097136}, {"input": [-77.0, -67.0], "expected": -66.99995460110078}, {"input": [-77.0, -66.5], "expected": -66.49997246392977}, {"input": [-77.0, -66.0], "expected": -65.99998329843868}, {"input": [-77.0, -65.5], "expected": -65.49998986995772}, {"input": [-77.0, -65.0], "expected": -64.99999385580652}, {"input": [-77.0, -64.5], "expected": -64.49999627335377}, {"input": [-77.0, -64.0], "expected": -63.99999773967315}, {"input": [-77.0, -63.5], "expected": -63.499998629041855}, {"input": [-77.0, -63.0], "expected": -62.999999168471625}, {"input": [-77.0, -62.5], "expected": -62.49999949565247}, {"input": [-77.0, -62.0], "expected": -61.999999694097724}, {"input": [-77.0, -61.5], "expected": -61.49999981446088}, {"input": [-77.0, -61.0], "expected": -60.99999988746483}, {"input": [-77.0, -60.5], "expected": -60.49999993174397}, {"input": [-77.0, -60.0], "expected": -59.999999958600625}, {"input": [-77.0, -59.5], "expected": -59.49999997489001}, {"input": [-77.0, -59.0], "expected": -58.99999998477002}, {"input": [-77.0, -58.5], "expected": -58.499999990762554}, {"input": [-77.0, -58.0], "expected": -57.99999999439721}, {"input": [-77.0, -57.5], "expected": -57.49999999660173}, {"input": [-77.0, -57.0], "expected": -56.99999999793884}, {"input": [-77.0, -56.5], "expected": -56.49999999874985}, {"input": [-77.0, -56.0], "expected": -55.999999999241744}, {"input": [-77.0, -55.5], "expected": -55.499999999540094}, {"input": [-77.0, -55.0], "expected": -54.999999999721055}, {"input": [-77.0, -54.5], "expected": -54.49999999983081}, {"input": [-77.0, -54.0], "expected": -53.99999999989738}, {"input": [-77.0, -53.5], "expected": -53.49999999993776}, {"input": [-77.0, -53.0], "expected": -52.99999999996225}, {"input": [-77.0, -52.5], "expected": -52.4999999999771}, {"input": [-77.0, -52.0], "expected": -51.99999999998611}, {"input": [-77.0, -51.5], "expected": -51.49999999999158}, {"input": [-77.0, -51.0], "expected": -50.99999999999489}, {"input": [-77.0, -50.5], "expected": -50.4999999999969}, {"input": [-77.0, -50.0], "expected": -49.99999999999812}, {"input": [-77.0, -49.5], "expected": -49.49999999999886}, {"input": [-77.0, -49.0], "expected": -48.99999999999931}, {"input": [-77.0, -48.5], "expected": -48.49999999999958}, {"input": [-77.0, -48.0], "expected": -47.999999999999744}, {"input": [-77.0, -47.5], "expected": -47.499999999999844}, {"input": [-77.0, -47.0], "expected": -46.99999999999991}, {"input": [-77.0, -46.5], "expected": -46.49999999999994}, {"input": [-77.0, -46.0], "expected": -45.999999999999964}, {"input": [-77.0, -45.5], "expected": -45.49999999999998}, {"input": [-77.0, -45.0], "expected": -44.999999999999986}, {"input": [-77.0, -44.5], "expected": -44.49999999999999}, {"input": [-77.0, -44.0], "expected": -43.99999999999999}, {"input": [-77.0, -43.5], "expected": -43.5}, {"input": [-77.0, -43.0], "expected": -43.0}, {"input": [-77.0, -42.5], "expected": -42.5}, {"input": [-77.0, -42.0], "expected": -42.0}, {"input": [-77.0, -41.5], "expected": -41.5}, {"input": [-77.0, -41.0], "expected": -41.0}, {"input": [-77.0, -40.5], "expected": -40.5}, {"input": [-77.0, -40.0], "expected": -40.0}, {"input": [-77.0, -39.5], "expected": -39.5}, {"input": [-77.0, -39.0], "expected": -39.0}, {"input": [-77.0, -38.5], "expected": -38.5}, {"input": [-77.0, -38.0], "expected": -38.0}, {"input": [-77.0, -37.5], "expected": -37.5}, {"input": [-77.0, -37.0], "expected": -37.0}, {"input": [-77.0, -36.5], "expected": -36.5}, {"input": [-77.0, -36.0], "expected": -36.0}, {"input": [-77.0, -35.5], "expected": -35.5}, {"input": [-77.0, -35.0], "expected": -35.0}, {"input": [-77.0, -34.5], "expected": -34.5}, {"input": [-77.0, -34.0], "expected": -34.0}, {"input": [-77.0, -33.5], "expected": -33.5}, {"input": [-77.0, -33.0], "expected": -33.0}, {"input": [-77.0, -32.5], "expected": -32.5}, {"input": [-77.0, -32.0], "expected": -32.0}, {"input": [-77.0, -31.5], "expected": -31.5}, {"input": [-77.0, -31.0], "expected": -31.0}, {"input": [-77.0, -30.5], "expected": -30.5}, {"input": [-77.0, -30.0], "expected": -30.0}, {"input": [-77.0, -29.5], "expected": -29.5}, {"input": [-77.0, -29.0], "expected": -29.0}, {"input": [-77.0, -28.5], "expected": -28.5}, {"input": [-77.0, -28.0], "expected": -28.0}, {"input": [-77.0, -27.5], "expected": -27.5}, {"input": [-77.0, -27.0], "expected": -27.0}, {"input": [-77.0, -26.5], "expected": -26.5}, {"input": [-77.0, -26.0], "expected": -26.0}, {"input": [-77.0, -25.5], "expected": -25.5}, {"input": [-77.0, -25.0], "expected": -25.0}, {"input": [-77.0, -24.5], "expected": -24.5}, {"input": [-77.0, -24.0], "expected": -24.0}, {"input": [-77.0, -23.5], "expected": -23.5}, {"input": [-77.0, -23.0], "expected": -23.0}, {"input": [-77.0, -22.5], "expected": -22.5}, {"input": [-77.0, -22.0], "expected": -22.0}, {"input": [-77.0, -21.5], "expected": -21.5}, {"input": [-77.0, -21.0], "expected": -21.0}, {"input": [-77.0, -20.5], "expected": -20.5}, {"input": [-77.0, -20.0], "expected": -20.0}, {"input": [-77.0, -19.5], "expected": -19.5}, {"input": [-77.0, -19.0], "expected": -19.0}, {"input": [-77.0, -18.5], "expected": -18.5}, {"input": [-77.0, -18.0], "expected": -18.0}, {"input": [-77.0, -17.5], "expected": -17.5}, {"input": [-77.0, -17.0], "expected": -17.0}, {"input": [-77.0, -16.5], "expected": -16.5}, {"input": [-77.0, -16.0], "expected": -16.0}, {"input": [-77.0, -15.5], "expected": -15.5}, {"input": [-77.0, -15.0], "expected": -15.0}, {"input": [-77.0, -14.5], "expected": -14.5}, {"input": [-77.0, -14.0], "expected": -14.0}, {"input": [-77.0, -13.5], "expected": -13.5}, {"input": [-77.0, -13.0], "expected": -13.0}, {"input": [-77.0, -12.5], "expected": -12.5}, {"input": [-77.0, -12.0], "expected": -12.0}, {"input": [-77.0, -11.5], "expected": -11.5}, {"input": [-77.0, -11.0], "expected": -11.0}, {"input": [-77.0, -10.5], "expected": -10.5}, {"input": [-77.0, -10.0], "expected": -10.0}, {"input": [-77.0, -9.5], "expected": -9.5}, {"input": [-77.0, -9.0], "expected": -9.0}, {"input": [-77.0, -8.5], "expected": -8.5}, {"input": [-77.0, -8.0], "expected": -8.0}, {"input": [-77.0, -7.5], "expected": -7.5}, {"input": [-77.0, -7.0], "expected": -7.0}, {"input": [-77.0, -6.5], "expected": -6.5}, {"input": [-77.0, -6.0], "expected": -6.0}, {"input": [-77.0, -5.5], "expected": -5.5}, {"input": [-77.0, -5.0], "expected": -5.0}, {"input": [-77.0, -4.5], "expected": -4.5}, {"input": [-77.0, -4.0], "expected": -4.0}, {"input": [-77.0, -3.5], "expected": -3.5}, {"input": [-77.0, -3.0], "expected": -3.0}, {"input": [-77.0, -2.5], "expected": -2.5}, {"input": [-77.0, -2.0], "expected": -2.0}, {"input": [-77.0, -1.5], "expected": -1.5}, {"input": [-77.0, -1.0], "expected": -1.0}, {"input": [-77.0, -0.5], "expected": -0.5}, {"input": [-77.0, 0.0], "expected": 3.6251409191435593e-34}, {"input": [-77.0, 0.5], "expected": 0.5}, {"input": [-77.0, 1.0], "expected": 1.0}, {"input": [-77.0, 1.5], "expected": 1.5}, {"input": [-77.0, 2.0], "expected": 2.0}, {"input": [-77.0, 2.5], "expected": 2.5}, {"input": [-77.0, 3.0], "expected": 3.0}, {"input": [-77.0, 3.5], "expected": 3.5}, {"input": [-77.0, 4.0], "expected": 4.0}, {"input": [-77.0, 4.5], "expected": 4.5}, {"input": [-77.0, 5.0], "expected": 5.0}, {"input": [-77.0, 5.5], "expected": 5.5}, {"input": [-77.0, 6.0], "expected": 6.0}, {"input": [-77.0, 6.5], "expected": 6.5}, {"input": [-77.0, 7.0], "expected": 7.0}, {"input": [-77.0, 7.5], "expected": 7.5}, {"input": [-77.0, 8.0], "expected": 8.0}, {"input": [-77.0, 8.5], "expected": 8.5}, {"input": [-77.0, 9.0], "expected": 9.0}, {"input": [-77.0, 9.5], "expected": 9.5}, {"input": [-77.0, 10.0], "expected": 10.0}, {"input": [-77.0, 10.5], "expected": 10.5}, {"input": [-77.0, 11.0], "expected": 11.0}, {"input": [-77.0, 11.5], "expected": 11.5}, {"input": [-77.0, 12.0], "expected": 12.0}, {"input": [-77.0, 12.5], "expected": 12.5}, {"input": [-77.0, 13.0], "expected": 13.0}, {"input": [-77.0, 13.5], "expected": 13.5}, {"input": [-77.0, 14.0], "expected": 14.0}, {"input": [-77.0, 14.5], "expected": 14.5}, {"input": [-77.0, 15.0], "expected": 15.0}, {"input": [-77.0, 15.5], "expected": 15.5}, {"input": [-77.0, 16.0], "expected": 16.0}, {"input": [-77.0, 16.5], "expected": 16.5}, {"input": [-77.0, 17.0], "expected": 17.0}, {"input": [-77.0, 17.5], "expected": 17.5}, {"input": [-77.0, 18.0], "expected": 18.0}, {"input": [-77.0, 18.5], "expected": 18.5}, {"input": [-77.0, 19.0], "expected": 19.0}, {"input": [-77.0, 19.5], "expected": 19.5}, {"input": [-77.0, 20.0], "expected": 20.0}, {"input": [-77.0, 20.5], "expected": 20.5}, {"input": [-77.0, 21.0], "expected": 21.0}, {"input": [-77.0, 21.5], "expected": 21.5}, {"input": [-77.0, 22.0], "expected": 22.0}, {"input": [-77.0, 22.5], "expected": 22.5}, {"input": [-77.0, 23.0], "expected": 23.0}, {"input": [-77.0, 23.5], "expected": 23.5}, {"input": [-77.0, 24.0], "expected": 24.0}, {"input": [-77.0, 24.5], "expected": 24.5}, {"input": [-77.0, 25.0], "expected": 25.0}, {"input": [-77.0, 25.5], "expected": 25.5}, {"input": [-77.0, 26.0], "expected": 26.0}, {"input": [-77.0, 26.5], "expected": 26.5}, {"input": [-77.0, 27.0], "expected": 27.0}, {"input": [-77.0, 27.5], "expected": 27.5}, {"input": [-77.0, 28.0], "expected": 28.0}, {"input": [-77.0, 28.5], "expected": 28.5}, {"input": [-77.0, 29.0], "expected": 29.0}, {"input": [-77.0, 29.5], "expected": 29.5}, {"input": [-77.0, 30.0], "expected": 30.0}, {"input": [-77.0, 30.5], "expected": 30.5}, {"input": [-77.0, 31.0], "expected": 31.0}, {"input": [-77.0, 31.5], "expected": 31.5}, {"input": [-77.0, 32.0], "expected": 32.0}, {"input": [-77.0, 32.5], "expected": 32.5}, {"input": [-77.0, 33.0], "expected": 33.0}, {"input": [-77.0, 33.5], "expected": 33.5}, {"input": [-77.0, 34.0], "expected": 34.0}, {"input": [-77.0, 34.5], "expected": 34.5}, {"input": [-77.0, 35.0], "expected": 35.0}, {"input": [-77.0, 35.5], "expected": 35.5}, {"input": [-77.0, 36.0], "expected": 36.0}, {"input": [-77.0, 36.5], "expected": 36.5}, {"input": [-77.0, 37.0], "expected": 37.0}, {"input": [-77.0, 37.5], "expected": 37.5}, {"input": [-77.0, 38.0], "expected": 38.0}, {"input": [-77.0, 38.5], "expected": 38.5}, {"input": [-77.0, 39.0], "expected": 39.0}, {"input": [-77.0, 39.5], "expected": 39.5}, {"input": [-77.0, 40.0], "expected": 40.0}, {"input": [-77.0, 40.5], "expected": 40.5}, {"input": [-77.0, 41.0], "expected": 41.0}, {"input": [-77.0, 41.5], "expected": 41.5}, {"input": [-77.0, 42.0], "expected": 42.0}, {"input": [-77.0, 42.5], "expected": 42.5}, {"input": [-77.0, 43.0], "expected": 43.0}, {"input": [-77.0, 43.5], "expected": 43.5}, {"input": [-77.0, 44.0], "expected": 44.0}, {"input": [-77.0, 44.5], "expected": 44.5}, {"input": [-77.0, 45.0], "expected": 45.0}, {"input": [-77.0, 45.5], "expected": 45.5}, {"input": [-77.0, 46.0], "expected": 46.0}, {"input": [-77.0, 46.5], "expected": 46.5}, {"input": [-77.0, 47.0], "expected": 47.0}, {"input": [-77.0, 47.5], "expected": 47.5}, {"input": [-77.0, 48.0], "expected": 48.0}, {"input": [-77.0, 48.5], "expected": 48.5}, {"input": [-77.0, 49.0], "expected": 49.0}, {"input": [-77.0, 49.5], "expected": 49.5}, {"input": [-77.0, 50.0], "expected": 50.0}, {"input": [-77.0, 50.5], "expected": 50.5}, {"input": [-77.0, 51.0], "expected": 51.0}, {"input": [-77.0, 51.5], "expected": 51.5}, {"input": [-77.0, 52.0], "expected": 52.0}, {"input": [-77.0, 52.5], "expected": 52.5}, {"input": [-77.0, 53.0], "expected": 53.0}, {"input": [-77.0, 53.5], "expected": 53.5}, {"input": [-77.0, 54.0], "expected": 54.0}, {"input": [-77.0, 54.5], "expected": 54.5}, {"input": [-77.0, 55.0], "expected": 55.0}, {"input": [-77.0, 55.5], "expected": 55.5}, {"input": [-77.0, 56.0], "expected": 56.0}, {"input": [-77.0, 56.5], "expected": 56.5}, {"input": [-77.0, 57.0], "expected": 57.0}, {"input": [-77.0, 57.5], "expected": 57.5}, {"input": [-77.0, 58.0], "expected": 58.0}, {"input": [-77.0, 58.5], "expected": 58.5}, {"input": [-77.0, 59.0], "expected": 59.0}, {"input": [-77.0, 59.5], "expected": 59.5}, {"input": [-77.0, 60.0], "expected": 60.0}, {"input": [-77.0, 60.5], "expected": 60.5}, {"input": [-77.0, 61.0], "expected": 61.0}, {"input": [-77.0, 61.5], "expected": 61.5}, {"input": [-77.0, 62.0], "expected": 62.0}, {"input": [-77.0, 62.5], "expected": 62.5}, {"input": [-77.0, 63.0], "expected": 63.0}, {"input": [-77.0, 63.5], "expected": 63.5}, {"input": [-77.0, 64.0], "expected": 64.0}, {"input": [-77.0, 64.5], "expected": 64.5}, {"input": [-77.0, 65.0], "expected": 65.0}, {"input": [-77.0, 65.5], "expected": 65.5}, {"input": [-77.0, 66.0], "expected": 66.0}, {"input": [-77.0, 66.5], "expected": 66.5}, {"input": [-77.0, 67.0], "expected": 67.0}, {"input": [-77.0, 67.5], "expected": 67.5}, {"input": [-77.0, 68.0], "expected": 68.0}, {"input": [-77.0, 68.5], "expected": 68.5}, {"input": [-77.0, 69.0], "expected": 69.0}, {"input": [-77.0, 69.5], "expected": 69.5}, {"input": [-77.0, 70.0], "expected": 70.0}, {"input": [-77.0, 70.5], "expected": 70.5}, {"input": [-77.0, 71.0], "expected": 71.0}, {"input": [-77.0, 71.5], "expected": 71.5}, {"input": [-77.0, 72.0], "expected": 72.0}, {"input": [-77.0, 72.5], "expected": 72.5}, {"input": [-77.0, 73.0], "expected": 73.0}, {"input": [-77.0, 73.5], "expected": 73.5}, {"input": [-77.0, 74.0], "expected": 74.0}, {"input": [-77.0, 74.5], "expected": 74.5}, {"input": [-77.0, 75.0], "expected": 75.0}, {"input": [-77.0, 75.5], "expected": 75.5}, {"input": [-77.0, 76.0], "expected": 76.0}, {"input": [-77.0, 76.5], "expected": 76.5}, {"input": [-77.0, 77.0], "expected": 77.0}, {"input": [-77.0, 77.5], "expected": 77.5}, {"input": [-77.0, 78.0], "expected": 78.0}, {"input": [-77.0, 78.5], "expected": 78.5}, {"input": [-77.0, 79.0], "expected": 79.0}, {"input": [-77.0, 79.5], "expected": 79.5}, {"input": [-77.0, 80.0], "expected": 80.0}, {"input": [-77.0, 80.5], "expected": 80.5}, {"input": [-77.0, 81.0], "expected": 81.0}, {"input": [-77.0, 81.5], "expected": 81.5}, {"input": [-77.0, 82.0], "expected": 82.0}, {"input": [-77.0, 82.5], "expected": 82.5}, {"input": [-77.0, 83.0], "expected": 83.0}, {"input": [-77.0, 83.5], "expected": 83.5}, {"input": [-77.0, 84.0], "expected": 84.0}, {"input": [-77.0, 84.5], "expected": 84.5}, {"input": [-77.0, 85.0], "expected": 85.0}, {"input": [-77.0, 85.5], "expected": 85.5}, {"input": [-77.0, 86.0], "expected": 86.0}, {"input": [-77.0, 86.5], "expected": 86.5}, {"input": [-77.0, 87.0], "expected": 87.0}, {"input": [-77.0, 87.5], "expected": 87.5}, {"input": [-77.0, 88.0], "expected": 88.0}, {"input": [-77.0, 88.5], "expected": 88.5}, {"input": [-77.0, 89.0], "expected": 89.0}, {"input": [-77.0, 89.5], "expected": 89.5}, {"input": [-77.0, 90.0], "expected": 90.0}, {"input": [-77.0, 90.5], "expected": 90.5}, {"input": [-77.0, 91.0], "expected": 91.0}, {"input": [-77.0, 91.5], "expected": 91.5}, {"input": [-77.0, 92.0], "expected": 92.0}, {"input": [-77.0, 92.5], "expected": 92.5}, {"input": [-77.0, 93.0], "expected": 93.0}, {"input": [-77.0, 93.5], "expected": 93.5}, {"input": [-77.0, 94.0], "expected": 94.0}, {"input": [-77.0, 94.5], "expected": 94.5}, {"input": [-77.0, 95.0], "expected": 95.0}, {"input": [-77.0, 95.5], "expected": 95.5}, {"input": [-77.0, 96.0], "expected": 96.0}, {"input": [-77.0, 96.5], "expected": 96.5}, {"input": [-77.0, 97.0], "expected": 97.0}, {"input": [-77.0, 97.5], "expected": 97.5}, {"input": [-77.0, 98.0], "expected": 98.0}, {"input": [-77.0, 98.5], "expected": 98.5}, {"input": [-77.0, 99.0], "expected": 99.0}, {"input": [-77.0, 99.5], "expected": 99.5}, {"input": [-76.5, -100.0], "expected": -76.49999999993776}, {"input": [-76.5, -99.5], "expected": -76.49999999989738}, {"input": [-76.5, -99.0], "expected": -76.4999999998308}, {"input": [-76.5, -98.5], "expected": -76.49999999972106}, {"input": [-76.5, -98.0], "expected": -76.4999999995401}, {"input": [-76.5, -97.5], "expected": -76.49999999924174}, {"input": [-76.5, -97.0], "expected": -76.49999999874984}, {"input": [-76.5, -96.5], "expected": -76.49999999793884}, {"input": [-76.5, -96.0], "expected": -76.49999999660173}, {"input": [-76.5, -95.5], "expected": -76.4999999943972}, {"input": [-76.5, -95.0], "expected": -76.49999999076255}, {"input": [-76.5, -94.5], "expected": -76.49999998477001}, {"input": [-76.5, -94.0], "expected": -76.49999997489}, {"input": [-76.5, -93.5], "expected": -76.49999995860063}, {"input": [-76.5, -93.0], "expected": -76.49999993174397}, {"input": [-76.5, -92.5], "expected": -76.49999988746484}, {"input": [-76.5, -92.0], "expected": -76.49999981446088}, {"input": [-76.5, -91.5], "expected": -76.49999969409772}, {"input": [-76.5, -91.0], "expected": -76.49999949565246}, {"input": [-76.5, -90.5], "expected": -76.49999916847163}, {"input": [-76.5, -90.0], "expected": -76.49999862904185}, {"input": [-76.5, -89.5], "expected": -76.49999773967315}, {"input": [-76.5, -89.0], "expected": -76.49999627335377}, {"input": [-76.5, -88.5], "expected": -76.49999385580652}, {"input": [-76.5, -88.0], "expected": -76.49998986995772}, {"input": [-76.5, -87.5], "expected": -76.49998329843868}, {"input": [-76.5, -87.0], "expected": -76.49997246392977}, {"input": [-76.5, -86.5], "expected": -76.49995460110078}, {"input": [-76.5, -86.0], "expected": -76.49992515097136}, {"input": [-76.5, -85.5], "expected": -76.49987659781027}, {"input": [-76.5, -85.0], "expected": -76.49979655232787}, {"input": [-76.5, -84.5], "expected": -76.4996645936271}, {"input": [-76.5, -84.0], "expected": -76.49944706852465}, {"input": [-76.5, -83.5], "expected": -76.49908853354623}, {"input": [-76.5, -83.0], "expected": -76.49849768984025}, {"input": [-76.5, -82.5], "expected": -76.49752431486228}, {"input": [-76.5, -82.0], "expected": -76.49592155672943}, {"input": [-76.5, -81.5], "expected": -76.49328465151088}, {"input": [-76.5, -81.0], "expected": -76.4889522551514}, {"input": [-76.5, -80.5], "expected": -76.4818500720822}, {"input": [-76.5, -80.0], "expected": -76.47024958172737}, {"input": [-76.5, -79.5], "expected": -76.45141264842626}, {"input": [-76.5, -79.0], "expected": -76.42111026570745}, {"input": [-76.5, -78.5], "expected": -76.37307198895702}, {"input": [-76.5, -78.0], "expected": -76.29858672201725}, {"input": [-76.5, -77.5], "expected": -76.18673831248178}, {"input": [-76.5, -77.0], "expected": -76.0259230158199}, {"input": [-76.5, -76.5], "expected": -75.80685281944005}, {"input": [-76.5, -76.0], "expected": -75.5259230158199}, {"input": [-76.5, -75.5], "expected": -75.18673831248178}, {"input": [-76.5, -75.0], "expected": -74.79858672201725}, {"input": [-76.5, -74.5], "expected": -74.37307198895702}, {"input": [-76.5, -74.0], "expected": -73.92111026570745}, {"input": [-76.5, -73.5], "expected": -73.45141264842626}, {"input": [-76.5, -73.0], "expected": -72.97024958172737}, {"input": [-76.5, -72.5], "expected": -72.4818500720822}, {"input": [-76.5, -72.0], "expected": -71.9889522551514}, {"input": [-76.5, -71.5], "expected": -71.49328465151088}, {"input": [-76.5, -71.0], "expected": -70.99592155672943}, {"input": [-76.5, -70.5], "expected": -70.49752431486228}, {"input": [-76.5, -70.0], "expected": -69.99849768984025}, {"input": [-76.5, -69.5], "expected": -69.49908853354623}, {"input": [-76.5, -69.0], "expected": -68.99944706852465}, {"input": [-76.5, -68.5], "expected": -68.4996645936271}, {"input": [-76.5, -68.0], "expected": -67.99979655232787}, {"input": [-76.5, -67.5], "expected": -67.49987659781027}, {"input": [-76.5, -67.0], "expected": -66.99992515097136}, {"input": [-76.5, -66.5], "expected": -66.49995460110078}, {"input": [-76.5, -66.0], "expected": -65.99997246392977}, {"input": [-76.5, -65.5], "expected": -65.49998329843868}, {"input": [-76.5, -65.0], "expected": -64.99998986995772}, {"input": [-76.5, -64.5], "expected": -64.49999385580652}, {"input": [-76.5, -64.0], "expected": -63.99999627335377}, {"input": [-76.5, -63.5], "expected": -63.49999773967315}, {"input": [-76.5, -63.0], "expected": -62.999998629041855}, {"input": [-76.5, -62.5], "expected": -62.499999168471625}, {"input": [-76.5, -62.0], "expected": -61.99999949565247}, {"input": [-76.5, -61.5], "expected": -61.499999694097724}, {"input": [-76.5, -61.0], "expected": -60.99999981446088}, {"input": [-76.5, -60.5], "expected": -60.49999988746483}, {"input": [-76.5, -60.0], "expected": -59.99999993174397}, {"input": [-76.5, -59.5], "expected": -59.499999958600625}, {"input": [-76.5, -59.0], "expected": -58.99999997489001}, {"input": [-76.5, -58.5], "expected": -58.49999998477002}, {"input": [-76.5, -58.0], "expected": -57.999999990762554}, {"input": [-76.5, -57.5], "expected": -57.49999999439721}, {"input": [-76.5, -57.0], "expected": -56.99999999660173}, {"input": [-76.5, -56.5], "expected": -56.49999999793884}, {"input": [-76.5, -56.0], "expected": -55.99999999874985}, {"input": [-76.5, -55.5], "expected": -55.499999999241744}, {"input": [-76.5, -55.0], "expected": -54.999999999540094}, {"input": [-76.5, -54.5], "expected": -54.499999999721055}, {"input": [-76.5, -54.0], "expected": -53.99999999983081}, {"input": [-76.5, -53.5], "expected": -53.49999999989738}, {"input": [-76.5, -53.0], "expected": -52.99999999993776}, {"input": [-76.5, -52.5], "expected": -52.49999999996225}, {"input": [-76.5, -52.0], "expected": -51.9999999999771}, {"input": [-76.5, -51.5], "expected": -51.49999999998611}, {"input": [-76.5, -51.0], "expected": -50.99999999999158}, {"input": [-76.5, -50.5], "expected": -50.49999999999489}, {"input": [-76.5, -50.0], "expected": -49.9999999999969}, {"input": [-76.5, -49.5], "expected": -49.49999999999812}, {"input": [-76.5, -49.0], "expected": -48.99999999999886}, {"input": [-76.5, -48.5], "expected": -48.49999999999931}, {"input": [-76.5, -48.0], "expected": -47.99999999999958}, {"input": [-76.5, -47.5], "expected": -47.499999999999744}, {"input": [-76.5, -47.0], "expected": -46.999999999999844}, {"input": [-76.5, -46.5], "expected": -46.49999999999991}, {"input": [-76.5, -46.0], "expected": -45.99999999999994}, {"input": [-76.5, -45.5], "expected": -45.499999999999964}, {"input": [-76.5, -45.0], "expected": -44.99999999999998}, {"input": [-76.5, -44.5], "expected": -44.499999999999986}, {"input": [-76.5, -44.0], "expected": -43.99999999999999}, {"input": [-76.5, -43.5], "expected": -43.49999999999999}, {"input": [-76.5, -43.0], "expected": -43.0}, {"input": [-76.5, -42.5], "expected": -42.5}, {"input": [-76.5, -42.0], "expected": -42.0}, {"input": [-76.5, -41.5], "expected": -41.5}, {"input": [-76.5, -41.0], "expected": -41.0}, {"input": [-76.5, -40.5], "expected": -40.5}, {"input": [-76.5, -40.0], "expected": -40.0}, {"input": [-76.5, -39.5], "expected": -39.5}, {"input": [-76.5, -39.0], "expected": -39.0}, {"input": [-76.5, -38.5], "expected": -38.5}, {"input": [-76.5, -38.0], "expected": -38.0}, {"input": [-76.5, -37.5], "expected": -37.5}, {"input": [-76.5, -37.0], "expected": -37.0}, {"input": [-76.5, -36.5], "expected": -36.5}, {"input": [-76.5, -36.0], "expected": -36.0}, {"input": [-76.5, -35.5], "expected": -35.5}, {"input": [-76.5, -35.0], "expected": -35.0}, {"input": [-76.5, -34.5], "expected": -34.5}, {"input": [-76.5, -34.0], "expected": -34.0}, {"input": [-76.5, -33.5], "expected": -33.5}, {"input": [-76.5, -33.0], "expected": -33.0}, {"input": [-76.5, -32.5], "expected": -32.5}, {"input": [-76.5, -32.0], "expected": -32.0}, {"input": [-76.5, -31.5], "expected": -31.5}, {"input": [-76.5, -31.0], "expected": -31.0}, {"input": [-76.5, -30.5], "expected": -30.5}, {"input": [-76.5, -30.0], "expected": -30.0}, {"input": [-76.5, -29.5], "expected": -29.5}, {"input": [-76.5, -29.0], "expected": -29.0}, {"input": [-76.5, -28.5], "expected": -28.5}, {"input": [-76.5, -28.0], "expected": -28.0}, {"input": [-76.5, -27.5], "expected": -27.5}, {"input": [-76.5, -27.0], "expected": -27.0}, {"input": [-76.5, -26.5], "expected": -26.5}, {"input": [-76.5, -26.0], "expected": -26.0}, {"input": [-76.5, -25.5], "expected": -25.5}, {"input": [-76.5, -25.0], "expected": -25.0}, {"input": [-76.5, -24.5], "expected": -24.5}, {"input": [-76.5, -24.0], "expected": -24.0}, {"input": [-76.5, -23.5], "expected": -23.5}, {"input": [-76.5, -23.0], "expected": -23.0}, {"input": [-76.5, -22.5], "expected": -22.5}, {"input": [-76.5, -22.0], "expected": -22.0}, {"input": [-76.5, -21.5], "expected": -21.5}, {"input": [-76.5, -21.0], "expected": -21.0}, {"input": [-76.5, -20.5], "expected": -20.5}, {"input": [-76.5, -20.0], "expected": -20.0}, {"input": [-76.5, -19.5], "expected": -19.5}, {"input": [-76.5, -19.0], "expected": -19.0}, {"input": [-76.5, -18.5], "expected": -18.5}, {"input": [-76.5, -18.0], "expected": -18.0}, {"input": [-76.5, -17.5], "expected": -17.5}, {"input": [-76.5, -17.0], "expected": -17.0}, {"input": [-76.5, -16.5], "expected": -16.5}, {"input": [-76.5, -16.0], "expected": -16.0}, {"input": [-76.5, -15.5], "expected": -15.5}, {"input": [-76.5, -15.0], "expected": -15.0}, {"input": [-76.5, -14.5], "expected": -14.5}, {"input": [-76.5, -14.0], "expected": -14.0}, {"input": [-76.5, -13.5], "expected": -13.5}, {"input": [-76.5, -13.0], "expected": -13.0}, {"input": [-76.5, -12.5], "expected": -12.5}, {"input": [-76.5, -12.0], "expected": -12.0}, {"input": [-76.5, -11.5], "expected": -11.5}, {"input": [-76.5, -11.0], "expected": -11.0}, {"input": [-76.5, -10.5], "expected": -10.5}, {"input": [-76.5, -10.0], "expected": -10.0}, {"input": [-76.5, -9.5], "expected": -9.5}, {"input": [-76.5, -9.0], "expected": -9.0}, {"input": [-76.5, -8.5], "expected": -8.5}, {"input": [-76.5, -8.0], "expected": -8.0}, {"input": [-76.5, -7.5], "expected": -7.5}, {"input": [-76.5, -7.0], "expected": -7.0}, {"input": [-76.5, -6.5], "expected": -6.5}, {"input": [-76.5, -6.0], "expected": -6.0}, {"input": [-76.5, -5.5], "expected": -5.5}, {"input": [-76.5, -5.0], "expected": -5.0}, {"input": [-76.5, -4.5], "expected": -4.5}, {"input": [-76.5, -4.0], "expected": -4.0}, {"input": [-76.5, -3.5], "expected": -3.5}, {"input": [-76.5, -3.0], "expected": -3.0}, {"input": [-76.5, -2.5], "expected": -2.5}, {"input": [-76.5, -2.0], "expected": -2.0}, {"input": [-76.5, -1.5], "expected": -1.5}, {"input": [-76.5, -1.0], "expected": -1.0}, {"input": [-76.5, -0.5], "expected": -0.5}, {"input": [-76.5, 0.0], "expected": 5.976846942677399e-34}, {"input": [-76.5, 0.5], "expected": 0.5}, {"input": [-76.5, 1.0], "expected": 1.0}, {"input": [-76.5, 1.5], "expected": 1.5}, {"input": [-76.5, 2.0], "expected": 2.0}, {"input": [-76.5, 2.5], "expected": 2.5}, {"input": [-76.5, 3.0], "expected": 3.0}, {"input": [-76.5, 3.5], "expected": 3.5}, {"input": [-76.5, 4.0], "expected": 4.0}, {"input": [-76.5, 4.5], "expected": 4.5}, {"input": [-76.5, 5.0], "expected": 5.0}, {"input": [-76.5, 5.5], "expected": 5.5}, {"input": [-76.5, 6.0], "expected": 6.0}, {"input": [-76.5, 6.5], "expected": 6.5}, {"input": [-76.5, 7.0], "expected": 7.0}, {"input": [-76.5, 7.5], "expected": 7.5}, {"input": [-76.5, 8.0], "expected": 8.0}, {"input": [-76.5, 8.5], "expected": 8.5}, {"input": [-76.5, 9.0], "expected": 9.0}, {"input": [-76.5, 9.5], "expected": 9.5}, {"input": [-76.5, 10.0], "expected": 10.0}, {"input": [-76.5, 10.5], "expected": 10.5}, {"input": [-76.5, 11.0], "expected": 11.0}, {"input": [-76.5, 11.5], "expected": 11.5}, {"input": [-76.5, 12.0], "expected": 12.0}, {"input": [-76.5, 12.5], "expected": 12.5}, {"input": [-76.5, 13.0], "expected": 13.0}, {"input": [-76.5, 13.5], "expected": 13.5}, {"input": [-76.5, 14.0], "expected": 14.0}, {"input": [-76.5, 14.5], "expected": 14.5}, {"input": [-76.5, 15.0], "expected": 15.0}, {"input": [-76.5, 15.5], "expected": 15.5}, {"input": [-76.5, 16.0], "expected": 16.0}, {"input": [-76.5, 16.5], "expected": 16.5}, {"input": [-76.5, 17.0], "expected": 17.0}, {"input": [-76.5, 17.5], "expected": 17.5}, {"input": [-76.5, 18.0], "expected": 18.0}, {"input": [-76.5, 18.5], "expected": 18.5}, {"input": [-76.5, 19.0], "expected": 19.0}, {"input": [-76.5, 19.5], "expected": 19.5}, {"input": [-76.5, 20.0], "expected": 20.0}, {"input": [-76.5, 20.5], "expected": 20.5}, {"input": [-76.5, 21.0], "expected": 21.0}, {"input": [-76.5, 21.5], "expected": 21.5}, {"input": [-76.5, 22.0], "expected": 22.0}, {"input": [-76.5, 22.5], "expected": 22.5}, {"input": [-76.5, 23.0], "expected": 23.0}, {"input": [-76.5, 23.5], "expected": 23.5}, {"input": [-76.5, 24.0], "expected": 24.0}, {"input": [-76.5, 24.5], "expected": 24.5}, {"input": [-76.5, 25.0], "expected": 25.0}, {"input": [-76.5, 25.5], "expected": 25.5}, {"input": [-76.5, 26.0], "expected": 26.0}, {"input": [-76.5, 26.5], "expected": 26.5}, {"input": [-76.5, 27.0], "expected": 27.0}, {"input": [-76.5, 27.5], "expected": 27.5}, {"input": [-76.5, 28.0], "expected": 28.0}, {"input": [-76.5, 28.5], "expected": 28.5}, {"input": [-76.5, 29.0], "expected": 29.0}, {"input": [-76.5, 29.5], "expected": 29.5}, {"input": [-76.5, 30.0], "expected": 30.0}, {"input": [-76.5, 30.5], "expected": 30.5}, {"input": [-76.5, 31.0], "expected": 31.0}, {"input": [-76.5, 31.5], "expected": 31.5}, {"input": [-76.5, 32.0], "expected": 32.0}, {"input": [-76.5, 32.5], "expected": 32.5}, {"input": [-76.5, 33.0], "expected": 33.0}, {"input": [-76.5, 33.5], "expected": 33.5}, {"input": [-76.5, 34.0], "expected": 34.0}, {"input": [-76.5, 34.5], "expected": 34.5}, {"input": [-76.5, 35.0], "expected": 35.0}, {"input": [-76.5, 35.5], "expected": 35.5}, {"input": [-76.5, 36.0], "expected": 36.0}, {"input": [-76.5, 36.5], "expected": 36.5}, {"input": [-76.5, 37.0], "expected": 37.0}, {"input": [-76.5, 37.5], "expected": 37.5}, {"input": [-76.5, 38.0], "expected": 38.0}, {"input": [-76.5, 38.5], "expected": 38.5}, {"input": [-76.5, 39.0], "expected": 39.0}, {"input": [-76.5, 39.5], "expected": 39.5}, {"input": [-76.5, 40.0], "expected": 40.0}, {"input": [-76.5, 40.5], "expected": 40.5}, {"input": [-76.5, 41.0], "expected": 41.0}, {"input": [-76.5, 41.5], "expected": 41.5}, {"input": [-76.5, 42.0], "expected": 42.0}, {"input": [-76.5, 42.5], "expected": 42.5}, {"input": [-76.5, 43.0], "expected": 43.0}, {"input": [-76.5, 43.5], "expected": 43.5}, {"input": [-76.5, 44.0], "expected": 44.0}, {"input": [-76.5, 44.5], "expected": 44.5}, {"input": [-76.5, 45.0], "expected": 45.0}, {"input": [-76.5, 45.5], "expected": 45.5}, {"input": [-76.5, 46.0], "expected": 46.0}, {"input": [-76.5, 46.5], "expected": 46.5}, {"input": [-76.5, 47.0], "expected": 47.0}, {"input": [-76.5, 47.5], "expected": 47.5}, {"input": [-76.5, 48.0], "expected": 48.0}, {"input": [-76.5, 48.5], "expected": 48.5}, {"input": [-76.5, 49.0], "expected": 49.0}, {"input": [-76.5, 49.5], "expected": 49.5}, {"input": [-76.5, 50.0], "expected": 50.0}, {"input": [-76.5, 50.5], "expected": 50.5}, {"input": [-76.5, 51.0], "expected": 51.0}, {"input": [-76.5, 51.5], "expected": 51.5}, {"input": [-76.5, 52.0], "expected": 52.0}, {"input": [-76.5, 52.5], "expected": 52.5}, {"input": [-76.5, 53.0], "expected": 53.0}, {"input": [-76.5, 53.5], "expected": 53.5}, {"input": [-76.5, 54.0], "expected": 54.0}, {"input": [-76.5, 54.5], "expected": 54.5}, {"input": [-76.5, 55.0], "expected": 55.0}, {"input": [-76.5, 55.5], "expected": 55.5}, {"input": [-76.5, 56.0], "expected": 56.0}, {"input": [-76.5, 56.5], "expected": 56.5}, {"input": [-76.5, 57.0], "expected": 57.0}, {"input": [-76.5, 57.5], "expected": 57.5}, {"input": [-76.5, 58.0], "expected": 58.0}, {"input": [-76.5, 58.5], "expected": 58.5}, {"input": [-76.5, 59.0], "expected": 59.0}, {"input": [-76.5, 59.5], "expected": 59.5}, {"input": [-76.5, 60.0], "expected": 60.0}, {"input": [-76.5, 60.5], "expected": 60.5}, {"input": [-76.5, 61.0], "expected": 61.0}, {"input": [-76.5, 61.5], "expected": 61.5}, {"input": [-76.5, 62.0], "expected": 62.0}, {"input": [-76.5, 62.5], "expected": 62.5}, {"input": [-76.5, 63.0], "expected": 63.0}, {"input": [-76.5, 63.5], "expected": 63.5}, {"input": [-76.5, 64.0], "expected": 64.0}, {"input": [-76.5, 64.5], "expected": 64.5}, {"input": [-76.5, 65.0], "expected": 65.0}, {"input": [-76.5, 65.5], "expected": 65.5}, {"input": [-76.5, 66.0], "expected": 66.0}, {"input": [-76.5, 66.5], "expected": 66.5}, {"input": [-76.5, 67.0], "expected": 67.0}, {"input": [-76.5, 67.5], "expected": 67.5}, {"input": [-76.5, 68.0], "expected": 68.0}, {"input": [-76.5, 68.5], "expected": 68.5}, {"input": [-76.5, 69.0], "expected": 69.0}, {"input": [-76.5, 69.5], "expected": 69.5}, {"input": [-76.5, 70.0], "expected": 70.0}, {"input": [-76.5, 70.5], "expected": 70.5}, {"input": [-76.5, 71.0], "expected": 71.0}, {"input": [-76.5, 71.5], "expected": 71.5}, {"input": [-76.5, 72.0], "expected": 72.0}, {"input": [-76.5, 72.5], "expected": 72.5}, {"input": [-76.5, 73.0], "expected": 73.0}, {"input": [-76.5, 73.5], "expected": 73.5}, {"input": [-76.5, 74.0], "expected": 74.0}, {"input": [-76.5, 74.5], "expected": 74.5}, {"input": [-76.5, 75.0], "expected": 75.0}, {"input": [-76.5, 75.5], "expected": 75.5}, {"input": [-76.5, 76.0], "expected": 76.0}, {"input": [-76.5, 76.5], "expected": 76.5}, {"input": [-76.5, 77.0], "expected": 77.0}, {"input": [-76.5, 77.5], "expected": 77.5}, {"input": [-76.5, 78.0], "expected": 78.0}, {"input": [-76.5, 78.5], "expected": 78.5}, {"input": [-76.5, 79.0], "expected": 79.0}, {"input": [-76.5, 79.5], "expected": 79.5}, {"input": [-76.5, 80.0], "expected": 80.0}, {"input": [-76.5, 80.5], "expected": 80.5}, {"input": [-76.5, 81.0], "expected": 81.0}, {"input": [-76.5, 81.5], "expected": 81.5}, {"input": [-76.5, 82.0], "expected": 82.0}, {"input": [-76.5, 82.5], "expected": 82.5}, {"input": [-76.5, 83.0], "expected": 83.0}, {"input": [-76.5, 83.5], "expected": 83.5}, {"input": [-76.5, 84.0], "expected": 84.0}, {"input": [-76.5, 84.5], "expected": 84.5}, {"input": [-76.5, 85.0], "expected": 85.0}, {"input": [-76.5, 85.5], "expected": 85.5}, {"input": [-76.5, 86.0], "expected": 86.0}, {"input": [-76.5, 86.5], "expected": 86.5}, {"input": [-76.5, 87.0], "expected": 87.0}, {"input": [-76.5, 87.5], "expected": 87.5}, {"input": [-76.5, 88.0], "expected": 88.0}, {"input": [-76.5, 88.5], "expected": 88.5}, {"input": [-76.5, 89.0], "expected": 89.0}, {"input": [-76.5, 89.5], "expected": 89.5}, {"input": [-76.5, 90.0], "expected": 90.0}, {"input": [-76.5, 90.5], "expected": 90.5}, {"input": [-76.5, 91.0], "expected": 91.0}, {"input": [-76.5, 91.5], "expected": 91.5}, {"input": [-76.5, 92.0], "expected": 92.0}, {"input": [-76.5, 92.5], "expected": 92.5}, {"input": [-76.5, 93.0], "expected": 93.0}, {"input": [-76.5, 93.5], "expected": 93.5}, {"input": [-76.5, 94.0], "expected": 94.0}, {"input": [-76.5, 94.5], "expected": 94.5}, {"input": [-76.5, 95.0], "expected": 95.0}, {"input": [-76.5, 95.5], "expected": 95.5}, {"input": [-76.5, 96.0], "expected": 96.0}, {"input": [-76.5, 96.5], "expected": 96.5}, {"input": [-76.5, 97.0], "expected": 97.0}, {"input": [-76.5, 97.5], "expected": 97.5}, {"input": [-76.5, 98.0], "expected": 98.0}, {"input": [-76.5, 98.5], "expected": 98.5}, {"input": [-76.5, 99.0], "expected": 99.0}, {"input": [-76.5, 99.5], "expected": 99.5}, {"input": [-76.0, -100.0], "expected": -75.99999999996224}, {"input": [-76.0, -99.5], "expected": -75.99999999993776}, {"input": [-76.0, -99.0], "expected": -75.99999999989738}, {"input": [-76.0, -98.5], "expected": -75.9999999998308}, {"input": [-76.0, -98.0], "expected": -75.99999999972106}, {"input": [-76.0, -97.5], "expected": -75.9999999995401}, {"input": [-76.0, -97.0], "expected": -75.99999999924174}, {"input": [-76.0, -96.5], "expected": -75.99999999874984}, {"input": [-76.0, -96.0], "expected": -75.99999999793884}, {"input": [-76.0, -95.5], "expected": -75.99999999660173}, {"input": [-76.0, -95.0], "expected": -75.9999999943972}, {"input": [-76.0, -94.5], "expected": -75.99999999076255}, {"input": [-76.0, -94.0], "expected": -75.99999998477001}, {"input": [-76.0, -93.5], "expected": -75.99999997489}, {"input": [-76.0, -93.0], "expected": -75.99999995860063}, {"input": [-76.0, -92.5], "expected": -75.99999993174397}, {"input": [-76.0, -92.0], "expected": -75.99999988746484}, {"input": [-76.0, -91.5], "expected": -75.99999981446088}, {"input": [-76.0, -91.0], "expected": -75.99999969409772}, {"input": [-76.0, -90.5], "expected": -75.99999949565246}, {"input": [-76.0, -90.0], "expected": -75.99999916847163}, {"input": [-76.0, -89.5], "expected": -75.99999862904185}, {"input": [-76.0, -89.0], "expected": -75.99999773967315}, {"input": [-76.0, -88.5], "expected": -75.99999627335377}, {"input": [-76.0, -88.0], "expected": -75.99999385580652}, {"input": [-76.0, -87.5], "expected": -75.99998986995772}, {"input": [-76.0, -87.0], "expected": -75.99998329843868}, {"input": [-76.0, -86.5], "expected": -75.99997246392977}, {"input": [-76.0, -86.0], "expected": -75.99995460110078}, {"input": [-76.0, -85.5], "expected": -75.99992515097136}, {"input": [-76.0, -85.0], "expected": -75.99987659781027}, {"input": [-76.0, -84.5], "expected": -75.99979655232787}, {"input": [-76.0, -84.0], "expected": -75.9996645936271}, {"input": [-76.0, -83.5], "expected": -75.99944706852465}, {"input": [-76.0, -83.0], "expected": -75.99908853354623}, {"input": [-76.0, -82.5], "expected": -75.99849768984025}, {"input": [-76.0, -82.0], "expected": -75.99752431486228}, {"input": [-76.0, -81.5], "expected": -75.99592155672943}, {"input": [-76.0, -81.0], "expected": -75.99328465151088}, {"input": [-76.0, -80.5], "expected": -75.9889522551514}, {"input": [-76.0, -80.0], "expected": -75.9818500720822}, {"input": [-76.0, -79.5], "expected": -75.97024958172737}, {"input": [-76.0, -79.0], "expected": -75.95141264842626}, {"input": [-76.0, -78.5], "expected": -75.92111026570745}, {"input": [-76.0, -78.0], "expected": -75.87307198895702}, {"input": [-76.0, -77.5], "expected": -75.79858672201725}, {"input": [-76.0, -77.0], "expected": -75.68673831248178}, {"input": [-76.0, -76.5], "expected": -75.5259230158199}, {"input": [-76.0, -76.0], "expected": -75.30685281944005}, {"input": [-76.0, -75.5], "expected": -75.0259230158199}, {"input": [-76.0, -75.0], "expected": -74.68673831248178}, {"input": [-76.0, -74.5], "expected": -74.29858672201725}, {"input": [-76.0, -74.0], "expected": -73.87307198895702}, {"input": [-76.0, -73.5], "expected": -73.42111026570745}, {"input": [-76.0, -73.0], "expected": -72.95141264842626}, {"input": [-76.0, -72.5], "expected": -72.47024958172737}, {"input": [-76.0, -72.0], "expected": -71.9818500720822}, {"input": [-76.0, -71.5], "expected": -71.4889522551514}, {"input": [-76.0, -71.0], "expected": -70.99328465151088}, {"input": [-76.0, -70.5], "expected": -70.49592155672943}, {"input": [-76.0, -70.0], "expected": -69.99752431486228}, {"input": [-76.0, -69.5], "expected": -69.49849768984025}, {"input": [-76.0, -69.0], "expected": -68.99908853354623}, {"input": [-76.0, -68.5], "expected": -68.49944706852465}, {"input": [-76.0, -68.0], "expected": -67.9996645936271}, {"input": [-76.0, -67.5], "expected": -67.49979655232787}, {"input": [-76.0, -67.0], "expected": -66.99987659781027}, {"input": [-76.0, -66.5], "expected": -66.49992515097136}, {"input": [-76.0, -66.0], "expected": -65.99995460110078}, {"input": [-76.0, -65.5], "expected": -65.49997246392977}, {"input": [-76.0, -65.0], "expected": -64.99998329843868}, {"input": [-76.0, -64.5], "expected": -64.49998986995772}, {"input": [-76.0, -64.0], "expected": -63.99999385580652}, {"input": [-76.0, -63.5], "expected": -63.49999627335377}, {"input": [-76.0, -63.0], "expected": -62.99999773967315}, {"input": [-76.0, -62.5], "expected": -62.499998629041855}, {"input": [-76.0, -62.0], "expected": -61.999999168471625}, {"input": [-76.0, -61.5], "expected": -61.49999949565247}, {"input": [-76.0, -61.0], "expected": -60.999999694097724}, {"input": [-76.0, -60.5], "expected": -60.49999981446088}, {"input": [-76.0, -60.0], "expected": -59.99999988746483}, {"input": [-76.0, -59.5], "expected": -59.49999993174397}, {"input": [-76.0, -59.0], "expected": -58.999999958600625}, {"input": [-76.0, -58.5], "expected": -58.49999997489001}, {"input": [-76.0, -58.0], "expected": -57.99999998477002}, {"input": [-76.0, -57.5], "expected": -57.499999990762554}, {"input": [-76.0, -57.0], "expected": -56.99999999439721}, {"input": [-76.0, -56.5], "expected": -56.49999999660173}, {"input": [-76.0, -56.0], "expected": -55.99999999793884}, {"input": [-76.0, -55.5], "expected": -55.49999999874985}, {"input": [-76.0, -55.0], "expected": -54.999999999241744}, {"input": [-76.0, -54.5], "expected": -54.499999999540094}, {"input": [-76.0, -54.0], "expected": -53.999999999721055}, {"input": [-76.0, -53.5], "expected": -53.49999999983081}, {"input": [-76.0, -53.0], "expected": -52.99999999989738}, {"input": [-76.0, -52.5], "expected": -52.49999999993776}, {"input": [-76.0, -52.0], "expected": -51.99999999996225}, {"input": [-76.0, -51.5], "expected": -51.4999999999771}, {"input": [-76.0, -51.0], "expected": -50.99999999998611}, {"input": [-76.0, -50.5], "expected": -50.49999999999158}, {"input": [-76.0, -50.0], "expected": -49.99999999999489}, {"input": [-76.0, -49.5], "expected": -49.4999999999969}, {"input": [-76.0, -49.0], "expected": -48.99999999999812}, {"input": [-76.0, -48.5], "expected": -48.49999999999886}, {"input": [-76.0, -48.0], "expected": -47.99999999999931}, {"input": [-76.0, -47.5], "expected": -47.49999999999958}, {"input": [-76.0, -47.0], "expected": -46.999999999999744}, {"input": [-76.0, -46.5], "expected": -46.499999999999844}, {"input": [-76.0, -46.0], "expected": -45.99999999999991}, {"input": [-76.0, -45.5], "expected": -45.49999999999994}, {"input": [-76.0, -45.0], "expected": -44.999999999999964}, {"input": [-76.0, -44.5], "expected": -44.49999999999998}, {"input": [-76.0, -44.0], "expected": -43.999999999999986}, {"input": [-76.0, -43.5], "expected": -43.49999999999999}, {"input": [-76.0, -43.0], "expected": -42.99999999999999}, {"input": [-76.0, -42.5], "expected": -42.5}, {"input": [-76.0, -42.0], "expected": -42.0}, {"input": [-76.0, -41.5], "expected": -41.5}, {"input": [-76.0, -41.0], "expected": -41.0}, {"input": [-76.0, -40.5], "expected": -40.5}, {"input": [-76.0, -40.0], "expected": -40.0}, {"input": [-76.0, -39.5], "expected": -39.5}, {"input": [-76.0, -39.0], "expected": -39.0}, {"input": [-76.0, -38.5], "expected": -38.5}, {"input": [-76.0, -38.0], "expected": -38.0}, {"input": [-76.0, -37.5], "expected": -37.5}, {"input": [-76.0, -37.0], "expected": -37.0}, {"input": [-76.0, -36.5], "expected": -36.5}, {"input": [-76.0, -36.0], "expected": -36.0}, {"input": [-76.0, -35.5], "expected": -35.5}, {"input": [-76.0, -35.0], "expected": -35.0}, {"input": [-76.0, -34.5], "expected": -34.5}, {"input": [-76.0, -34.0], "expected": -34.0}, {"input": [-76.0, -33.5], "expected": -33.5}, {"input": [-76.0, -33.0], "expected": -33.0}, {"input": [-76.0, -32.5], "expected": -32.5}, {"input": [-76.0, -32.0], "expected": -32.0}, {"input": [-76.0, -31.5], "expected": -31.5}, {"input": [-76.0, -31.0], "expected": -31.0}, {"input": [-76.0, -30.5], "expected": -30.5}, {"input": [-76.0, -30.0], "expected": -30.0}, {"input": [-76.0, -29.5], "expected": -29.5}, {"input": [-76.0, -29.0], "expected": -29.0}, {"input": [-76.0, -28.5], "expected": -28.5}, {"input": [-76.0, -28.0], "expected": -28.0}, {"input": [-76.0, -27.5], "expected": -27.5}, {"input": [-76.0, -27.0], "expected": -27.0}, {"input": [-76.0, -26.5], "expected": -26.5}, {"input": [-76.0, -26.0], "expected": -26.0}, {"input": [-76.0, -25.5], "expected": -25.5}, {"input": [-76.0, -25.0], "expected": -25.0}, {"input": [-76.0, -24.5], "expected": -24.5}, {"input": [-76.0, -24.0], "expected": -24.0}, {"input": [-76.0, -23.5], "expected": -23.5}, {"input": [-76.0, -23.0], "expected": -23.0}, {"input": [-76.0, -22.5], "expected": -22.5}, {"input": [-76.0, -22.0], "expected": -22.0}, {"input": [-76.0, -21.5], "expected": -21.5}, {"input": [-76.0, -21.0], "expected": -21.0}, {"input": [-76.0, -20.5], "expected": -20.5}, {"input": [-76.0, -20.0], "expected": -20.0}, {"input": [-76.0, -19.5], "expected": -19.5}, {"input": [-76.0, -19.0], "expected": -19.0}, {"input": [-76.0, -18.5], "expected": -18.5}, {"input": [-76.0, -18.0], "expected": -18.0}, {"input": [-76.0, -17.5], "expected": -17.5}, {"input": [-76.0, -17.0], "expected": -17.0}, {"input": [-76.0, -16.5], "expected": -16.5}, {"input": [-76.0, -16.0], "expected": -16.0}, {"input": [-76.0, -15.5], "expected": -15.5}, {"input": [-76.0, -15.0], "expected": -15.0}, {"input": [-76.0, -14.5], "expected": -14.5}, {"input": [-76.0, -14.0], "expected": -14.0}, {"input": [-76.0, -13.5], "expected": -13.5}, {"input": [-76.0, -13.0], "expected": -13.0}, {"input": [-76.0, -12.5], "expected": -12.5}, {"input": [-76.0, -12.0], "expected": -12.0}, {"input": [-76.0, -11.5], "expected": -11.5}, {"input": [-76.0, -11.0], "expected": -11.0}, {"input": [-76.0, -10.5], "expected": -10.5}, {"input": [-76.0, -10.0], "expected": -10.0}, {"input": [-76.0, -9.5], "expected": -9.5}, {"input": [-76.0, -9.0], "expected": -9.0}, {"input": [-76.0, -8.5], "expected": -8.5}, {"input": [-76.0, -8.0], "expected": -8.0}, {"input": [-76.0, -7.5], "expected": -7.5}, {"input": [-76.0, -7.0], "expected": -7.0}, {"input": [-76.0, -6.5], "expected": -6.5}, {"input": [-76.0, -6.0], "expected": -6.0}, {"input": [-76.0, -5.5], "expected": -5.5}, {"input": [-76.0, -5.0], "expected": -5.0}, {"input": [-76.0, -4.5], "expected": -4.5}, {"input": [-76.0, -4.0], "expected": -4.0}, {"input": [-76.0, -3.5], "expected": -3.5}, {"input": [-76.0, -3.0], "expected": -3.0}, {"input": [-76.0, -2.5], "expected": -2.5}, {"input": [-76.0, -2.0], "expected": -2.0}, {"input": [-76.0, -1.5], "expected": -1.5}, {"input": [-76.0, -1.0], "expected": -1.0}, {"input": [-76.0, -0.5], "expected": -0.5}, {"input": [-76.0, 0.0], "expected": 9.854154686111257e-34}, {"input": [-76.0, 0.5], "expected": 0.5}, {"input": [-76.0, 1.0], "expected": 1.0}, {"input": [-76.0, 1.5], "expected": 1.5}, {"input": [-76.0, 2.0], "expected": 2.0}, {"input": [-76.0, 2.5], "expected": 2.5}, {"input": [-76.0, 3.0], "expected": 3.0}, {"input": [-76.0, 3.5], "expected": 3.5}, {"input": [-76.0, 4.0], "expected": 4.0}, {"input": [-76.0, 4.5], "expected": 4.5}, {"input": [-76.0, 5.0], "expected": 5.0}, {"input": [-76.0, 5.5], "expected": 5.5}, {"input": [-76.0, 6.0], "expected": 6.0}, {"input": [-76.0, 6.5], "expected": 6.5}, {"input": [-76.0, 7.0], "expected": 7.0}, {"input": [-76.0, 7.5], "expected": 7.5}, {"input": [-76.0, 8.0], "expected": 8.0}, {"input": [-76.0, 8.5], "expected": 8.5}, {"input": [-76.0, 9.0], "expected": 9.0}, {"input": [-76.0, 9.5], "expected": 9.5}, {"input": [-76.0, 10.0], "expected": 10.0}, {"input": [-76.0, 10.5], "expected": 10.5}, {"input": [-76.0, 11.0], "expected": 11.0}, {"input": [-76.0, 11.5], "expected": 11.5}, {"input": [-76.0, 12.0], "expected": 12.0}, {"input": [-76.0, 12.5], "expected": 12.5}, {"input": [-76.0, 13.0], "expected": 13.0}, {"input": [-76.0, 13.5], "expected": 13.5}, {"input": [-76.0, 14.0], "expected": 14.0}, {"input": [-76.0, 14.5], "expected": 14.5}, {"input": [-76.0, 15.0], "expected": 15.0}, {"input": [-76.0, 15.5], "expected": 15.5}, {"input": [-76.0, 16.0], "expected": 16.0}, {"input": [-76.0, 16.5], "expected": 16.5}, {"input": [-76.0, 17.0], "expected": 17.0}, {"input": [-76.0, 17.5], "expected": 17.5}, {"input": [-76.0, 18.0], "expected": 18.0}, {"input": [-76.0, 18.5], "expected": 18.5}, {"input": [-76.0, 19.0], "expected": 19.0}, {"input": [-76.0, 19.5], "expected": 19.5}, {"input": [-76.0, 20.0], "expected": 20.0}, {"input": [-76.0, 20.5], "expected": 20.5}, {"input": [-76.0, 21.0], "expected": 21.0}, {"input": [-76.0, 21.5], "expected": 21.5}, {"input": [-76.0, 22.0], "expected": 22.0}, {"input": [-76.0, 22.5], "expected": 22.5}, {"input": [-76.0, 23.0], "expected": 23.0}, {"input": [-76.0, 23.5], "expected": 23.5}, {"input": [-76.0, 24.0], "expected": 24.0}, {"input": [-76.0, 24.5], "expected": 24.5}, {"input": [-76.0, 25.0], "expected": 25.0}, {"input": [-76.0, 25.5], "expected": 25.5}, {"input": [-76.0, 26.0], "expected": 26.0}, {"input": [-76.0, 26.5], "expected": 26.5}, {"input": [-76.0, 27.0], "expected": 27.0}, {"input": [-76.0, 27.5], "expected": 27.5}, {"input": [-76.0, 28.0], "expected": 28.0}, {"input": [-76.0, 28.5], "expected": 28.5}, {"input": [-76.0, 29.0], "expected": 29.0}, {"input": [-76.0, 29.5], "expected": 29.5}, {"input": [-76.0, 30.0], "expected": 30.0}, {"input": [-76.0, 30.5], "expected": 30.5}, {"input": [-76.0, 31.0], "expected": 31.0}, {"input": [-76.0, 31.5], "expected": 31.5}, {"input": [-76.0, 32.0], "expected": 32.0}, {"input": [-76.0, 32.5], "expected": 32.5}, {"input": [-76.0, 33.0], "expected": 33.0}, {"input": [-76.0, 33.5], "expected": 33.5}, {"input": [-76.0, 34.0], "expected": 34.0}, {"input": [-76.0, 34.5], "expected": 34.5}, {"input": [-76.0, 35.0], "expected": 35.0}, {"input": [-76.0, 35.5], "expected": 35.5}, {"input": [-76.0, 36.0], "expected": 36.0}, {"input": [-76.0, 36.5], "expected": 36.5}, {"input": [-76.0, 37.0], "expected": 37.0}, {"input": [-76.0, 37.5], "expected": 37.5}, {"input": [-76.0, 38.0], "expected": 38.0}, {"input": [-76.0, 38.5], "expected": 38.5}, {"input": [-76.0, 39.0], "expected": 39.0}, {"input": [-76.0, 39.5], "expected": 39.5}, {"input": [-76.0, 40.0], "expected": 40.0}, {"input": [-76.0, 40.5], "expected": 40.5}, {"input": [-76.0, 41.0], "expected": 41.0}, {"input": [-76.0, 41.5], "expected": 41.5}, {"input": [-76.0, 42.0], "expected": 42.0}, {"input": [-76.0, 42.5], "expected": 42.5}, {"input": [-76.0, 43.0], "expected": 43.0}, {"input": [-76.0, 43.5], "expected": 43.5}, {"input": [-76.0, 44.0], "expected": 44.0}, {"input": [-76.0, 44.5], "expected": 44.5}, {"input": [-76.0, 45.0], "expected": 45.0}, {"input": [-76.0, 45.5], "expected": 45.5}, {"input": [-76.0, 46.0], "expected": 46.0}, {"input": [-76.0, 46.5], "expected": 46.5}, {"input": [-76.0, 47.0], "expected": 47.0}, {"input": [-76.0, 47.5], "expected": 47.5}, {"input": [-76.0, 48.0], "expected": 48.0}, {"input": [-76.0, 48.5], "expected": 48.5}, {"input": [-76.0, 49.0], "expected": 49.0}, {"input": [-76.0, 49.5], "expected": 49.5}, {"input": [-76.0, 50.0], "expected": 50.0}, {"input": [-76.0, 50.5], "expected": 50.5}, {"input": [-76.0, 51.0], "expected": 51.0}, {"input": [-76.0, 51.5], "expected": 51.5}, {"input": [-76.0, 52.0], "expected": 52.0}, {"input": [-76.0, 52.5], "expected": 52.5}, {"input": [-76.0, 53.0], "expected": 53.0}, {"input": [-76.0, 53.5], "expected": 53.5}, {"input": [-76.0, 54.0], "expected": 54.0}, {"input": [-76.0, 54.5], "expected": 54.5}, {"input": [-76.0, 55.0], "expected": 55.0}, {"input": [-76.0, 55.5], "expected": 55.5}, {"input": [-76.0, 56.0], "expected": 56.0}, {"input": [-76.0, 56.5], "expected": 56.5}, {"input": [-76.0, 57.0], "expected": 57.0}, {"input": [-76.0, 57.5], "expected": 57.5}, {"input": [-76.0, 58.0], "expected": 58.0}, {"input": [-76.0, 58.5], "expected": 58.5}, {"input": [-76.0, 59.0], "expected": 59.0}, {"input": [-76.0, 59.5], "expected": 59.5}, {"input": [-76.0, 60.0], "expected": 60.0}, {"input": [-76.0, 60.5], "expected": 60.5}, {"input": [-76.0, 61.0], "expected": 61.0}, {"input": [-76.0, 61.5], "expected": 61.5}, {"input": [-76.0, 62.0], "expected": 62.0}, {"input": [-76.0, 62.5], "expected": 62.5}, {"input": [-76.0, 63.0], "expected": 63.0}, {"input": [-76.0, 63.5], "expected": 63.5}, {"input": [-76.0, 64.0], "expected": 64.0}, {"input": [-76.0, 64.5], "expected": 64.5}, {"input": [-76.0, 65.0], "expected": 65.0}, {"input": [-76.0, 65.5], "expected": 65.5}, {"input": [-76.0, 66.0], "expected": 66.0}, {"input": [-76.0, 66.5], "expected": 66.5}, {"input": [-76.0, 67.0], "expected": 67.0}, {"input": [-76.0, 67.5], "expected": 67.5}, {"input": [-76.0, 68.0], "expected": 68.0}, {"input": [-76.0, 68.5], "expected": 68.5}, {"input": [-76.0, 69.0], "expected": 69.0}, {"input": [-76.0, 69.5], "expected": 69.5}, {"input": [-76.0, 70.0], "expected": 70.0}, {"input": [-76.0, 70.5], "expected": 70.5}, {"input": [-76.0, 71.0], "expected": 71.0}, {"input": [-76.0, 71.5], "expected": 71.5}, {"input": [-76.0, 72.0], "expected": 72.0}, {"input": [-76.0, 72.5], "expected": 72.5}, {"input": [-76.0, 73.0], "expected": 73.0}, {"input": [-76.0, 73.5], "expected": 73.5}, {"input": [-76.0, 74.0], "expected": 74.0}, {"input": [-76.0, 74.5], "expected": 74.5}, {"input": [-76.0, 75.0], "expected": 75.0}, {"input": [-76.0, 75.5], "expected": 75.5}, {"input": [-76.0, 76.0], "expected": 76.0}, {"input": [-76.0, 76.5], "expected": 76.5}, {"input": [-76.0, 77.0], "expected": 77.0}, {"input": [-76.0, 77.5], "expected": 77.5}, {"input": [-76.0, 78.0], "expected": 78.0}, {"input": [-76.0, 78.5], "expected": 78.5}, {"input": [-76.0, 79.0], "expected": 79.0}, {"input": [-76.0, 79.5], "expected": 79.5}, {"input": [-76.0, 80.0], "expected": 80.0}, {"input": [-76.0, 80.5], "expected": 80.5}, {"input": [-76.0, 81.0], "expected": 81.0}, {"input": [-76.0, 81.5], "expected": 81.5}, {"input": [-76.0, 82.0], "expected": 82.0}, {"input": [-76.0, 82.5], "expected": 82.5}, {"input": [-76.0, 83.0], "expected": 83.0}, {"input": [-76.0, 83.5], "expected": 83.5}, {"input": [-76.0, 84.0], "expected": 84.0}, {"input": [-76.0, 84.5], "expected": 84.5}, {"input": [-76.0, 85.0], "expected": 85.0}, {"input": [-76.0, 85.5], "expected": 85.5}, {"input": [-76.0, 86.0], "expected": 86.0}, {"input": [-76.0, 86.5], "expected": 86.5}, {"input": [-76.0, 87.0], "expected": 87.0}, {"input": [-76.0, 87.5], "expected": 87.5}, {"input": [-76.0, 88.0], "expected": 88.0}, {"input": [-76.0, 88.5], "expected": 88.5}, {"input": [-76.0, 89.0], "expected": 89.0}, {"input": [-76.0, 89.5], "expected": 89.5}, {"input": [-76.0, 90.0], "expected": 90.0}, {"input": [-76.0, 90.5], "expected": 90.5}, {"input": [-76.0, 91.0], "expected": 91.0}, {"input": [-76.0, 91.5], "expected": 91.5}, {"input": [-76.0, 92.0], "expected": 92.0}, {"input": [-76.0, 92.5], "expected": 92.5}, {"input": [-76.0, 93.0], "expected": 93.0}, {"input": [-76.0, 93.5], "expected": 93.5}, {"input": [-76.0, 94.0], "expected": 94.0}, {"input": [-76.0, 94.5], "expected": 94.5}, {"input": [-76.0, 95.0], "expected": 95.0}, {"input": [-76.0, 95.5], "expected": 95.5}, {"input": [-76.0, 96.0], "expected": 96.0}, {"input": [-76.0, 96.5], "expected": 96.5}, {"input": [-76.0, 97.0], "expected": 97.0}, {"input": [-76.0, 97.5], "expected": 97.5}, {"input": [-76.0, 98.0], "expected": 98.0}, {"input": [-76.0, 98.5], "expected": 98.5}, {"input": [-76.0, 99.0], "expected": 99.0}, {"input": [-76.0, 99.5], "expected": 99.5}, {"input": [-75.5, -100.0], "expected": -75.4999999999771}, {"input": [-75.5, -99.5], "expected": -75.49999999996224}, {"input": [-75.5, -99.0], "expected": -75.49999999993776}, {"input": [-75.5, -98.5], "expected": -75.49999999989738}, {"input": [-75.5, -98.0], "expected": -75.4999999998308}, {"input": [-75.5, -97.5], "expected": -75.49999999972106}, {"input": [-75.5, -97.0], "expected": -75.4999999995401}, {"input": [-75.5, -96.5], "expected": -75.49999999924174}, {"input": [-75.5, -96.0], "expected": -75.49999999874984}, {"input": [-75.5, -95.5], "expected": -75.49999999793884}, {"input": [-75.5, -95.0], "expected": -75.49999999660173}, {"input": [-75.5, -94.5], "expected": -75.4999999943972}, {"input": [-75.5, -94.0], "expected": -75.49999999076255}, {"input": [-75.5, -93.5], "expected": -75.49999998477001}, {"input": [-75.5, -93.0], "expected": -75.49999997489}, {"input": [-75.5, -92.5], "expected": -75.49999995860063}, {"input": [-75.5, -92.0], "expected": -75.49999993174397}, {"input": [-75.5, -91.5], "expected": -75.49999988746484}, {"input": [-75.5, -91.0], "expected": -75.49999981446088}, {"input": [-75.5, -90.5], "expected": -75.49999969409772}, {"input": [-75.5, -90.0], "expected": -75.49999949565246}, {"input": [-75.5, -89.5], "expected": -75.49999916847163}, {"input": [-75.5, -89.0], "expected": -75.49999862904185}, {"input": [-75.5, -88.5], "expected": -75.49999773967315}, {"input": [-75.5, -88.0], "expected": -75.49999627335377}, {"input": [-75.5, -87.5], "expected": -75.49999385580652}, {"input": [-75.5, -87.0], "expected": -75.49998986995772}, {"input": [-75.5, -86.5], "expected": -75.49998329843868}, {"input": [-75.5, -86.0], "expected": -75.49997246392977}, {"input": [-75.5, -85.5], "expected": -75.49995460110078}, {"input": [-75.5, -85.0], "expected": -75.49992515097136}, {"input": [-75.5, -84.5], "expected": -75.49987659781027}, {"input": [-75.5, -84.0], "expected": -75.49979655232787}, {"input": [-75.5, -83.5], "expected": -75.4996645936271}, {"input": [-75.5, -83.0], "expected": -75.49944706852465}, {"input": [-75.5, -82.5], "expected": -75.49908853354623}, {"input": [-75.5, -82.0], "expected": -75.49849768984025}, {"input": [-75.5, -81.5], "expected": -75.49752431486228}, {"input": [-75.5, -81.0], "expected": -75.49592155672943}, {"input": [-75.5, -80.5], "expected": -75.49328465151088}, {"input": [-75.5, -80.0], "expected": -75.4889522551514}, {"input": [-75.5, -79.5], "expected": -75.4818500720822}, {"input": [-75.5, -79.0], "expected": -75.47024958172737}, {"input": [-75.5, -78.5], "expected": -75.45141264842626}, {"input": [-75.5, -78.0], "expected": -75.42111026570745}, {"input": [-75.5, -77.5], "expected": -75.37307198895702}, {"input": [-75.5, -77.0], "expected": -75.29858672201725}, {"input": [-75.5, -76.5], "expected": -75.18673831248178}, {"input": [-75.5, -76.0], "expected": -75.0259230158199}, {"input": [-75.5, -75.5], "expected": -74.80685281944005}, {"input": [-75.5, -75.0], "expected": -74.5259230158199}, {"input": [-75.5, -74.5], "expected": -74.18673831248178}, {"input": [-75.5, -74.0], "expected": -73.79858672201725}, {"input": [-75.5, -73.5], "expected": -73.37307198895702}, {"input": [-75.5, -73.0], "expected": -72.92111026570745}, {"input": [-75.5, -72.5], "expected": -72.45141264842626}, {"input": [-75.5, -72.0], "expected": -71.97024958172737}, {"input": [-75.5, -71.5], "expected": -71.4818500720822}, {"input": [-75.5, -71.0], "expected": -70.9889522551514}, {"input": [-75.5, -70.5], "expected": -70.49328465151088}, {"input": [-75.5, -70.0], "expected": -69.99592155672943}, {"input": [-75.5, -69.5], "expected": -69.49752431486228}, {"input": [-75.5, -69.0], "expected": -68.99849768984025}, {"input": [-75.5, -68.5], "expected": -68.49908853354623}, {"input": [-75.5, -68.0], "expected": -67.99944706852465}, {"input": [-75.5, -67.5], "expected": -67.4996645936271}, {"input": [-75.5, -67.0], "expected": -66.99979655232787}, {"input": [-75.5, -66.5], "expected": -66.49987659781027}, {"input": [-75.5, -66.0], "expected": -65.99992515097136}, {"input": [-75.5, -65.5], "expected": -65.49995460110078}, {"input": [-75.5, -65.0], "expected": -64.99997246392977}, {"input": [-75.5, -64.5], "expected": -64.49998329843868}, {"input": [-75.5, -64.0], "expected": -63.99998986995771}, {"input": [-75.5, -63.5], "expected": -63.49999385580652}, {"input": [-75.5, -63.0], "expected": -62.99999627335377}, {"input": [-75.5, -62.5], "expected": -62.49999773967315}, {"input": [-75.5, -62.0], "expected": -61.999998629041855}, {"input": [-75.5, -61.5], "expected": -61.499999168471625}, {"input": [-75.5, -61.0], "expected": -60.99999949565247}, {"input": [-75.5, -60.5], "expected": -60.499999694097724}, {"input": [-75.5, -60.0], "expected": -59.99999981446088}, {"input": [-75.5, -59.5], "expected": -59.49999988746483}, {"input": [-75.5, -59.0], "expected": -58.99999993174397}, {"input": [-75.5, -58.5], "expected": -58.499999958600625}, {"input": [-75.5, -58.0], "expected": -57.99999997489001}, {"input": [-75.5, -57.5], "expected": -57.49999998477002}, {"input": [-75.5, -57.0], "expected": -56.999999990762554}, {"input": [-75.5, -56.5], "expected": -56.49999999439721}, {"input": [-75.5, -56.0], "expected": -55.99999999660173}, {"input": [-75.5, -55.5], "expected": -55.49999999793884}, {"input": [-75.5, -55.0], "expected": -54.99999999874985}, {"input": [-75.5, -54.5], "expected": -54.499999999241744}, {"input": [-75.5, -54.0], "expected": -53.999999999540094}, {"input": [-75.5, -53.5], "expected": -53.499999999721055}, {"input": [-75.5, -53.0], "expected": -52.99999999983081}, {"input": [-75.5, -52.5], "expected": -52.49999999989738}, {"input": [-75.5, -52.0], "expected": -51.99999999993776}, {"input": [-75.5, -51.5], "expected": -51.49999999996225}, {"input": [-75.5, -51.0], "expected": -50.9999999999771}, {"input": [-75.5, -50.5], "expected": -50.49999999998611}, {"input": [-75.5, -50.0], "expected": -49.99999999999158}, {"input": [-75.5, -49.5], "expected": -49.49999999999489}, {"input": [-75.5, -49.0], "expected": -48.9999999999969}, {"input": [-75.5, -48.5], "expected": -48.49999999999812}, {"input": [-75.5, -48.0], "expected": -47.99999999999886}, {"input": [-75.5, -47.5], "expected": -47.49999999999931}, {"input": [-75.5, -47.0], "expected": -46.99999999999958}, {"input": [-75.5, -46.5], "expected": -46.499999999999744}, {"input": [-75.5, -46.0], "expected": -45.999999999999844}, {"input": [-75.5, -45.5], "expected": -45.49999999999991}, {"input": [-75.5, -45.0], "expected": -44.99999999999994}, {"input": [-75.5, -44.5], "expected": -44.499999999999964}, {"input": [-75.5, -44.0], "expected": -43.99999999999998}, {"input": [-75.5, -43.5], "expected": -43.499999999999986}, {"input": [-75.5, -43.0], "expected": -42.99999999999999}, {"input": [-75.5, -42.5], "expected": -42.49999999999999}, {"input": [-75.5, -42.0], "expected": -42.0}, {"input": [-75.5, -41.5], "expected": -41.5}, {"input": [-75.5, -41.0], "expected": -41.0}, {"input": [-75.5, -40.5], "expected": -40.5}, {"input": [-75.5, -40.0], "expected": -40.0}, {"input": [-75.5, -39.5], "expected": -39.5}, {"input": [-75.5, -39.0], "expected": -39.0}, {"input": [-75.5, -38.5], "expected": -38.5}, {"input": [-75.5, -38.0], "expected": -38.0}, {"input": [-75.5, -37.5], "expected": -37.5}, {"input": [-75.5, -37.0], "expected": -37.0}, {"input": [-75.5, -36.5], "expected": -36.5}, {"input": [-75.5, -36.0], "expected": -36.0}, {"input": [-75.5, -35.5], "expected": -35.5}, {"input": [-75.5, -35.0], "expected": -35.0}, {"input": [-75.5, -34.5], "expected": -34.5}, {"input": [-75.5, -34.0], "expected": -34.0}, {"input": [-75.5, -33.5], "expected": -33.5}, {"input": [-75.5, -33.0], "expected": -33.0}, {"input": [-75.5, -32.5], "expected": -32.5}, {"input": [-75.5, -32.0], "expected": -32.0}, {"input": [-75.5, -31.5], "expected": -31.5}, {"input": [-75.5, -31.0], "expected": -31.0}, {"input": [-75.5, -30.5], "expected": -30.5}, {"input": [-75.5, -30.0], "expected": -30.0}, {"input": [-75.5, -29.5], "expected": -29.5}, {"input": [-75.5, -29.0], "expected": -29.0}, {"input": [-75.5, -28.5], "expected": -28.5}, {"input": [-75.5, -28.0], "expected": -28.0}, {"input": [-75.5, -27.5], "expected": -27.5}, {"input": [-75.5, -27.0], "expected": -27.0}, {"input": [-75.5, -26.5], "expected": -26.5}, {"input": [-75.5, -26.0], "expected": -26.0}, {"input": [-75.5, -25.5], "expected": -25.5}, {"input": [-75.5, -25.0], "expected": -25.0}, {"input": [-75.5, -24.5], "expected": -24.5}, {"input": [-75.5, -24.0], "expected": -24.0}, {"input": [-75.5, -23.5], "expected": -23.5}, {"input": [-75.5, -23.0], "expected": -23.0}, {"input": [-75.5, -22.5], "expected": -22.5}, {"input": [-75.5, -22.0], "expected": -22.0}, {"input": [-75.5, -21.5], "expected": -21.5}, {"input": [-75.5, -21.0], "expected": -21.0}, {"input": [-75.5, -20.5], "expected": -20.5}, {"input": [-75.5, -20.0], "expected": -20.0}, {"input": [-75.5, -19.5], "expected": -19.5}, {"input": [-75.5, -19.0], "expected": -19.0}, {"input": [-75.5, -18.5], "expected": -18.5}, {"input": [-75.5, -18.0], "expected": -18.0}, {"input": [-75.5, -17.5], "expected": -17.5}, {"input": [-75.5, -17.0], "expected": -17.0}, {"input": [-75.5, -16.5], "expected": -16.5}, {"input": [-75.5, -16.0], "expected": -16.0}, {"input": [-75.5, -15.5], "expected": -15.5}, {"input": [-75.5, -15.0], "expected": -15.0}, {"input": [-75.5, -14.5], "expected": -14.5}, {"input": [-75.5, -14.0], "expected": -14.0}, {"input": [-75.5, -13.5], "expected": -13.5}, {"input": [-75.5, -13.0], "expected": -13.0}, {"input": [-75.5, -12.5], "expected": -12.5}, {"input": [-75.5, -12.0], "expected": -12.0}, {"input": [-75.5, -11.5], "expected": -11.5}, {"input": [-75.5, -11.0], "expected": -11.0}, {"input": [-75.5, -10.5], "expected": -10.5}, {"input": [-75.5, -10.0], "expected": -10.0}, {"input": [-75.5, -9.5], "expected": -9.5}, {"input": [-75.5, -9.0], "expected": -9.0}, {"input": [-75.5, -8.5], "expected": -8.5}, {"input": [-75.5, -8.0], "expected": -8.0}, {"input": [-75.5, -7.5], "expected": -7.5}, {"input": [-75.5, -7.0], "expected": -7.0}, {"input": [-75.5, -6.5], "expected": -6.5}, {"input": [-75.5, -6.0], "expected": -6.0}, {"input": [-75.5, -5.5], "expected": -5.5}, {"input": [-75.5, -5.0], "expected": -5.0}, {"input": [-75.5, -4.5], "expected": -4.5}, {"input": [-75.5, -4.0], "expected": -4.0}, {"input": [-75.5, -3.5], "expected": -3.5}, {"input": [-75.5, -3.0], "expected": -3.0}, {"input": [-75.5, -2.5], "expected": -2.5}, {"input": [-75.5, -2.0], "expected": -2.0}, {"input": [-75.5, -1.5], "expected": -1.5}, {"input": [-75.5, -1.0], "expected": -1.0}, {"input": [-75.5, -0.5], "expected": -0.5}, {"input": [-75.5, 0.0], "expected": 1.6246754435760975e-33}, {"input": [-75.5, 0.5], "expected": 0.5}, {"input": [-75.5, 1.0], "expected": 1.0}, {"input": [-75.5, 1.5], "expected": 1.5}, {"input": [-75.5, 2.0], "expected": 2.0}, {"input": [-75.5, 2.5], "expected": 2.5}, {"input": [-75.5, 3.0], "expected": 3.0}, {"input": [-75.5, 3.5], "expected": 3.5}, {"input": [-75.5, 4.0], "expected": 4.0}, {"input": [-75.5, 4.5], "expected": 4.5}, {"input": [-75.5, 5.0], "expected": 5.0}, {"input": [-75.5, 5.5], "expected": 5.5}, {"input": [-75.5, 6.0], "expected": 6.0}, {"input": [-75.5, 6.5], "expected": 6.5}, {"input": [-75.5, 7.0], "expected": 7.0}, {"input": [-75.5, 7.5], "expected": 7.5}, {"input": [-75.5, 8.0], "expected": 8.0}, {"input": [-75.5, 8.5], "expected": 8.5}, {"input": [-75.5, 9.0], "expected": 9.0}, {"input": [-75.5, 9.5], "expected": 9.5}, {"input": [-75.5, 10.0], "expected": 10.0}, {"input": [-75.5, 10.5], "expected": 10.5}, {"input": [-75.5, 11.0], "expected": 11.0}, {"input": [-75.5, 11.5], "expected": 11.5}, {"input": [-75.5, 12.0], "expected": 12.0}, {"input": [-75.5, 12.5], "expected": 12.5}, {"input": [-75.5, 13.0], "expected": 13.0}, {"input": [-75.5, 13.5], "expected": 13.5}, {"input": [-75.5, 14.0], "expected": 14.0}, {"input": [-75.5, 14.5], "expected": 14.5}, {"input": [-75.5, 15.0], "expected": 15.0}, {"input": [-75.5, 15.5], "expected": 15.5}, {"input": [-75.5, 16.0], "expected": 16.0}, {"input": [-75.5, 16.5], "expected": 16.5}, {"input": [-75.5, 17.0], "expected": 17.0}, {"input": [-75.5, 17.5], "expected": 17.5}, {"input": [-75.5, 18.0], "expected": 18.0}, {"input": [-75.5, 18.5], "expected": 18.5}, {"input": [-75.5, 19.0], "expected": 19.0}, {"input": [-75.5, 19.5], "expected": 19.5}, {"input": [-75.5, 20.0], "expected": 20.0}, {"input": [-75.5, 20.5], "expected": 20.5}, {"input": [-75.5, 21.0], "expected": 21.0}, {"input": [-75.5, 21.5], "expected": 21.5}, {"input": [-75.5, 22.0], "expected": 22.0}, {"input": [-75.5, 22.5], "expected": 22.5}, {"input": [-75.5, 23.0], "expected": 23.0}, {"input": [-75.5, 23.5], "expected": 23.5}, {"input": [-75.5, 24.0], "expected": 24.0}, {"input": [-75.5, 24.5], "expected": 24.5}, {"input": [-75.5, 25.0], "expected": 25.0}, {"input": [-75.5, 25.5], "expected": 25.5}, {"input": [-75.5, 26.0], "expected": 26.0}, {"input": [-75.5, 26.5], "expected": 26.5}, {"input": [-75.5, 27.0], "expected": 27.0}, {"input": [-75.5, 27.5], "expected": 27.5}, {"input": [-75.5, 28.0], "expected": 28.0}, {"input": [-75.5, 28.5], "expected": 28.5}, {"input": [-75.5, 29.0], "expected": 29.0}, {"input": [-75.5, 29.5], "expected": 29.5}, {"input": [-75.5, 30.0], "expected": 30.0}, {"input": [-75.5, 30.5], "expected": 30.5}, {"input": [-75.5, 31.0], "expected": 31.0}, {"input": [-75.5, 31.5], "expected": 31.5}, {"input": [-75.5, 32.0], "expected": 32.0}, {"input": [-75.5, 32.5], "expected": 32.5}, {"input": [-75.5, 33.0], "expected": 33.0}, {"input": [-75.5, 33.5], "expected": 33.5}, {"input": [-75.5, 34.0], "expected": 34.0}, {"input": [-75.5, 34.5], "expected": 34.5}, {"input": [-75.5, 35.0], "expected": 35.0}, {"input": [-75.5, 35.5], "expected": 35.5}, {"input": [-75.5, 36.0], "expected": 36.0}, {"input": [-75.5, 36.5], "expected": 36.5}, {"input": [-75.5, 37.0], "expected": 37.0}, {"input": [-75.5, 37.5], "expected": 37.5}, {"input": [-75.5, 38.0], "expected": 38.0}, {"input": [-75.5, 38.5], "expected": 38.5}, {"input": [-75.5, 39.0], "expected": 39.0}, {"input": [-75.5, 39.5], "expected": 39.5}, {"input": [-75.5, 40.0], "expected": 40.0}, {"input": [-75.5, 40.5], "expected": 40.5}, {"input": [-75.5, 41.0], "expected": 41.0}, {"input": [-75.5, 41.5], "expected": 41.5}, {"input": [-75.5, 42.0], "expected": 42.0}, {"input": [-75.5, 42.5], "expected": 42.5}, {"input": [-75.5, 43.0], "expected": 43.0}, {"input": [-75.5, 43.5], "expected": 43.5}, {"input": [-75.5, 44.0], "expected": 44.0}, {"input": [-75.5, 44.5], "expected": 44.5}, {"input": [-75.5, 45.0], "expected": 45.0}, {"input": [-75.5, 45.5], "expected": 45.5}, {"input": [-75.5, 46.0], "expected": 46.0}, {"input": [-75.5, 46.5], "expected": 46.5}, {"input": [-75.5, 47.0], "expected": 47.0}, {"input": [-75.5, 47.5], "expected": 47.5}, {"input": [-75.5, 48.0], "expected": 48.0}, {"input": [-75.5, 48.5], "expected": 48.5}, {"input": [-75.5, 49.0], "expected": 49.0}, {"input": [-75.5, 49.5], "expected": 49.5}, {"input": [-75.5, 50.0], "expected": 50.0}, {"input": [-75.5, 50.5], "expected": 50.5}, {"input": [-75.5, 51.0], "expected": 51.0}, {"input": [-75.5, 51.5], "expected": 51.5}, {"input": [-75.5, 52.0], "expected": 52.0}, {"input": [-75.5, 52.5], "expected": 52.5}, {"input": [-75.5, 53.0], "expected": 53.0}, {"input": [-75.5, 53.5], "expected": 53.5}, {"input": [-75.5, 54.0], "expected": 54.0}, {"input": [-75.5, 54.5], "expected": 54.5}, {"input": [-75.5, 55.0], "expected": 55.0}, {"input": [-75.5, 55.5], "expected": 55.5}, {"input": [-75.5, 56.0], "expected": 56.0}, {"input": [-75.5, 56.5], "expected": 56.5}, {"input": [-75.5, 57.0], "expected": 57.0}, {"input": [-75.5, 57.5], "expected": 57.5}, {"input": [-75.5, 58.0], "expected": 58.0}, {"input": [-75.5, 58.5], "expected": 58.5}, {"input": [-75.5, 59.0], "expected": 59.0}, {"input": [-75.5, 59.5], "expected": 59.5}, {"input": [-75.5, 60.0], "expected": 60.0}, {"input": [-75.5, 60.5], "expected": 60.5}, {"input": [-75.5, 61.0], "expected": 61.0}, {"input": [-75.5, 61.5], "expected": 61.5}, {"input": [-75.5, 62.0], "expected": 62.0}, {"input": [-75.5, 62.5], "expected": 62.5}, {"input": [-75.5, 63.0], "expected": 63.0}, {"input": [-75.5, 63.5], "expected": 63.5}, {"input": [-75.5, 64.0], "expected": 64.0}, {"input": [-75.5, 64.5], "expected": 64.5}, {"input": [-75.5, 65.0], "expected": 65.0}, {"input": [-75.5, 65.5], "expected": 65.5}, {"input": [-75.5, 66.0], "expected": 66.0}, {"input": [-75.5, 66.5], "expected": 66.5}, {"input": [-75.5, 67.0], "expected": 67.0}, {"input": [-75.5, 67.5], "expected": 67.5}, {"input": [-75.5, 68.0], "expected": 68.0}, {"input": [-75.5, 68.5], "expected": 68.5}, {"input": [-75.5, 69.0], "expected": 69.0}, {"input": [-75.5, 69.5], "expected": 69.5}, {"input": [-75.5, 70.0], "expected": 70.0}, {"input": [-75.5, 70.5], "expected": 70.5}, {"input": [-75.5, 71.0], "expected": 71.0}, {"input": [-75.5, 71.5], "expected": 71.5}, {"input": [-75.5, 72.0], "expected": 72.0}, {"input": [-75.5, 72.5], "expected": 72.5}, {"input": [-75.5, 73.0], "expected": 73.0}, {"input": [-75.5, 73.5], "expected": 73.5}, {"input": [-75.5, 74.0], "expected": 74.0}, {"input": [-75.5, 74.5], "expected": 74.5}, {"input": [-75.5, 75.0], "expected": 75.0}, {"input": [-75.5, 75.5], "expected": 75.5}, {"input": [-75.5, 76.0], "expected": 76.0}, {"input": [-75.5, 76.5], "expected": 76.5}, {"input": [-75.5, 77.0], "expected": 77.0}, {"input": [-75.5, 77.5], "expected": 77.5}, {"input": [-75.5, 78.0], "expected": 78.0}, {"input": [-75.5, 78.5], "expected": 78.5}, {"input": [-75.5, 79.0], "expected": 79.0}, {"input": [-75.5, 79.5], "expected": 79.5}, {"input": [-75.5, 80.0], "expected": 80.0}, {"input": [-75.5, 80.5], "expected": 80.5}, {"input": [-75.5, 81.0], "expected": 81.0}, {"input": [-75.5, 81.5], "expected": 81.5}, {"input": [-75.5, 82.0], "expected": 82.0}, {"input": [-75.5, 82.5], "expected": 82.5}, {"input": [-75.5, 83.0], "expected": 83.0}, {"input": [-75.5, 83.5], "expected": 83.5}, {"input": [-75.5, 84.0], "expected": 84.0}, {"input": [-75.5, 84.5], "expected": 84.5}, {"input": [-75.5, 85.0], "expected": 85.0}, {"input": [-75.5, 85.5], "expected": 85.5}, {"input": [-75.5, 86.0], "expected": 86.0}, {"input": [-75.5, 86.5], "expected": 86.5}, {"input": [-75.5, 87.0], "expected": 87.0}, {"input": [-75.5, 87.5], "expected": 87.5}, {"input": [-75.5, 88.0], "expected": 88.0}, {"input": [-75.5, 88.5], "expected": 88.5}, {"input": [-75.5, 89.0], "expected": 89.0}, {"input": [-75.5, 89.5], "expected": 89.5}, {"input": [-75.5, 90.0], "expected": 90.0}, {"input": [-75.5, 90.5], "expected": 90.5}, {"input": [-75.5, 91.0], "expected": 91.0}, {"input": [-75.5, 91.5], "expected": 91.5}, {"input": [-75.5, 92.0], "expected": 92.0}, {"input": [-75.5, 92.5], "expected": 92.5}, {"input": [-75.5, 93.0], "expected": 93.0}, {"input": [-75.5, 93.5], "expected": 93.5}, {"input": [-75.5, 94.0], "expected": 94.0}, {"input": [-75.5, 94.5], "expected": 94.5}, {"input": [-75.5, 95.0], "expected": 95.0}, {"input": [-75.5, 95.5], "expected": 95.5}, {"input": [-75.5, 96.0], "expected": 96.0}, {"input": [-75.5, 96.5], "expected": 96.5}, {"input": [-75.5, 97.0], "expected": 97.0}, {"input": [-75.5, 97.5], "expected": 97.5}, {"input": [-75.5, 98.0], "expected": 98.0}, {"input": [-75.5, 98.5], "expected": 98.5}, {"input": [-75.5, 99.0], "expected": 99.0}, {"input": [-75.5, 99.5], "expected": 99.5}, {"input": [-75.0, -100.0], "expected": -74.99999999998612}, {"input": [-75.0, -99.5], "expected": -74.9999999999771}, {"input": [-75.0, -99.0], "expected": -74.99999999996224}, {"input": [-75.0, -98.5], "expected": -74.99999999993776}, {"input": [-75.0, -98.0], "expected": -74.99999999989738}, {"input": [-75.0, -97.5], "expected": -74.9999999998308}, {"input": [-75.0, -97.0], "expected": -74.99999999972106}, {"input": [-75.0, -96.5], "expected": -74.9999999995401}, {"input": [-75.0, -96.0], "expected": -74.99999999924174}, {"input": [-75.0, -95.5], "expected": -74.99999999874984}, {"input": [-75.0, -95.0], "expected": -74.99999999793884}, {"input": [-75.0, -94.5], "expected": -74.99999999660173}, {"input": [-75.0, -94.0], "expected": -74.9999999943972}, {"input": [-75.0, -93.5], "expected": -74.99999999076255}, {"input": [-75.0, -93.0], "expected": -74.99999998477001}, {"input": [-75.0, -92.5], "expected": -74.99999997489}, {"input": [-75.0, -92.0], "expected": -74.99999995860063}, {"input": [-75.0, -91.5], "expected": -74.99999993174397}, {"input": [-75.0, -91.0], "expected": -74.99999988746484}, {"input": [-75.0, -90.5], "expected": -74.99999981446088}, {"input": [-75.0, -90.0], "expected": -74.99999969409772}, {"input": [-75.0, -89.5], "expected": -74.99999949565246}, {"input": [-75.0, -89.0], "expected": -74.99999916847163}, {"input": [-75.0, -88.5], "expected": -74.99999862904185}, {"input": [-75.0, -88.0], "expected": -74.99999773967315}, {"input": [-75.0, -87.5], "expected": -74.99999627335377}, {"input": [-75.0, -87.0], "expected": -74.99999385580652}, {"input": [-75.0, -86.5], "expected": -74.99998986995772}, {"input": [-75.0, -86.0], "expected": -74.99998329843868}, {"input": [-75.0, -85.5], "expected": -74.99997246392977}, {"input": [-75.0, -85.0], "expected": -74.99995460110078}, {"input": [-75.0, -84.5], "expected": -74.99992515097136}, {"input": [-75.0, -84.0], "expected": -74.99987659781027}, {"input": [-75.0, -83.5], "expected": -74.99979655232787}, {"input": [-75.0, -83.0], "expected": -74.9996645936271}, {"input": [-75.0, -82.5], "expected": -74.99944706852465}, {"input": [-75.0, -82.0], "expected": -74.99908853354623}, {"input": [-75.0, -81.5], "expected": -74.99849768984025}, {"input": [-75.0, -81.0], "expected": -74.99752431486228}, {"input": [-75.0, -80.5], "expected": -74.99592155672943}, {"input": [-75.0, -80.0], "expected": -74.99328465151088}, {"input": [-75.0, -79.5], "expected": -74.9889522551514}, {"input": [-75.0, -79.0], "expected": -74.9818500720822}, {"input": [-75.0, -78.5], "expected": -74.97024958172737}, {"input": [-75.0, -78.0], "expected": -74.95141264842626}, {"input": [-75.0, -77.5], "expected": -74.92111026570745}, {"input": [-75.0, -77.0], "expected": -74.87307198895702}, {"input": [-75.0, -76.5], "expected": -74.79858672201725}, {"input": [-75.0, -76.0], "expected": -74.68673831248178}, {"input": [-75.0, -75.5], "expected": -74.5259230158199}, {"input": [-75.0, -75.0], "expected": -74.30685281944005}, {"input": [-75.0, -74.5], "expected": -74.0259230158199}, {"input": [-75.0, -74.0], "expected": -73.68673831248178}, {"input": [-75.0, -73.5], "expected": -73.29858672201725}, {"input": [-75.0, -73.0], "expected": -72.87307198895702}, {"input": [-75.0, -72.5], "expected": -72.42111026570745}, {"input": [-75.0, -72.0], "expected": -71.95141264842626}, {"input": [-75.0, -71.5], "expected": -71.47024958172737}, {"input": [-75.0, -71.0], "expected": -70.9818500720822}, {"input": [-75.0, -70.5], "expected": -70.4889522551514}, {"input": [-75.0, -70.0], "expected": -69.99328465151088}, {"input": [-75.0, -69.5], "expected": -69.49592155672943}, {"input": [-75.0, -69.0], "expected": -68.99752431486228}, {"input": [-75.0, -68.5], "expected": -68.49849768984025}, {"input": [-75.0, -68.0], "expected": -67.99908853354623}, {"input": [-75.0, -67.5], "expected": -67.49944706852465}, {"input": [-75.0, -67.0], "expected": -66.9996645936271}, {"input": [-75.0, -66.5], "expected": -66.49979655232787}, {"input": [-75.0, -66.0], "expected": -65.99987659781027}, {"input": [-75.0, -65.5], "expected": -65.49992515097136}, {"input": [-75.0, -65.0], "expected": -64.99995460110078}, {"input": [-75.0, -64.5], "expected": -64.49997246392977}, {"input": [-75.0, -64.0], "expected": -63.99998329843868}, {"input": [-75.0, -63.5], "expected": -63.49998986995771}, {"input": [-75.0, -63.0], "expected": -62.99999385580652}, {"input": [-75.0, -62.5], "expected": -62.49999627335377}, {"input": [-75.0, -62.0], "expected": -61.99999773967315}, {"input": [-75.0, -61.5], "expected": -61.499998629041855}, {"input": [-75.0, -61.0], "expected": -60.999999168471625}, {"input": [-75.0, -60.5], "expected": -60.49999949565247}, {"input": [-75.0, -60.0], "expected": -59.999999694097724}, {"input": [-75.0, -59.5], "expected": -59.49999981446088}, {"input": [-75.0, -59.0], "expected": -58.99999988746483}, {"input": [-75.0, -58.5], "expected": -58.49999993174397}, {"input": [-75.0, -58.0], "expected": -57.999999958600625}, {"input": [-75.0, -57.5], "expected": -57.49999997489001}, {"input": [-75.0, -57.0], "expected": -56.99999998477002}, {"input": [-75.0, -56.5], "expected": -56.499999990762554}, {"input": [-75.0, -56.0], "expected": -55.99999999439721}, {"input": [-75.0, -55.5], "expected": -55.49999999660173}, {"input": [-75.0, -55.0], "expected": -54.99999999793884}, {"input": [-75.0, -54.5], "expected": -54.49999999874985}, {"input": [-75.0, -54.0], "expected": -53.999999999241744}, {"input": [-75.0, -53.5], "expected": -53.499999999540094}, {"input": [-75.0, -53.0], "expected": -52.999999999721055}, {"input": [-75.0, -52.5], "expected": -52.49999999983081}, {"input": [-75.0, -52.0], "expected": -51.99999999989738}, {"input": [-75.0, -51.5], "expected": -51.49999999993776}, {"input": [-75.0, -51.0], "expected": -50.99999999996225}, {"input": [-75.0, -50.5], "expected": -50.4999999999771}, {"input": [-75.0, -50.0], "expected": -49.99999999998611}, {"input": [-75.0, -49.5], "expected": -49.49999999999158}, {"input": [-75.0, -49.0], "expected": -48.99999999999489}, {"input": [-75.0, -48.5], "expected": -48.4999999999969}, {"input": [-75.0, -48.0], "expected": -47.99999999999812}, {"input": [-75.0, -47.5], "expected": -47.49999999999886}, {"input": [-75.0, -47.0], "expected": -46.99999999999931}, {"input": [-75.0, -46.5], "expected": -46.49999999999958}, {"input": [-75.0, -46.0], "expected": -45.999999999999744}, {"input": [-75.0, -45.5], "expected": -45.499999999999844}, {"input": [-75.0, -45.0], "expected": -44.99999999999991}, {"input": [-75.0, -44.5], "expected": -44.49999999999994}, {"input": [-75.0, -44.0], "expected": -43.999999999999964}, {"input": [-75.0, -43.5], "expected": -43.49999999999998}, {"input": [-75.0, -43.0], "expected": -42.999999999999986}, {"input": [-75.0, -42.5], "expected": -42.49999999999999}, {"input": [-75.0, -42.0], "expected": -41.99999999999999}, {"input": [-75.0, -41.5], "expected": -41.5}, {"input": [-75.0, -41.0], "expected": -41.0}, {"input": [-75.0, -40.5], "expected": -40.5}, {"input": [-75.0, -40.0], "expected": -40.0}, {"input": [-75.0, -39.5], "expected": -39.5}, {"input": [-75.0, -39.0], "expected": -39.0}, {"input": [-75.0, -38.5], "expected": -38.5}, {"input": [-75.0, -38.0], "expected": -38.0}, {"input": [-75.0, -37.5], "expected": -37.5}, {"input": [-75.0, -37.0], "expected": -37.0}, {"input": [-75.0, -36.5], "expected": -36.5}, {"input": [-75.0, -36.0], "expected": -36.0}, {"input": [-75.0, -35.5], "expected": -35.5}, {"input": [-75.0, -35.0], "expected": -35.0}, {"input": [-75.0, -34.5], "expected": -34.5}, {"input": [-75.0, -34.0], "expected": -34.0}, {"input": [-75.0, -33.5], "expected": -33.5}, {"input": [-75.0, -33.0], "expected": -33.0}, {"input": [-75.0, -32.5], "expected": -32.5}, {"input": [-75.0, -32.0], "expected": -32.0}, {"input": [-75.0, -31.5], "expected": -31.5}, {"input": [-75.0, -31.0], "expected": -31.0}, {"input": [-75.0, -30.5], "expected": -30.5}, {"input": [-75.0, -30.0], "expected": -30.0}, {"input": [-75.0, -29.5], "expected": -29.5}, {"input": [-75.0, -29.0], "expected": -29.0}, {"input": [-75.0, -28.5], "expected": -28.5}, {"input": [-75.0, -28.0], "expected": -28.0}, {"input": [-75.0, -27.5], "expected": -27.5}, {"input": [-75.0, -27.0], "expected": -27.0}, {"input": [-75.0, -26.5], "expected": -26.5}, {"input": [-75.0, -26.0], "expected": -26.0}, {"input": [-75.0, -25.5], "expected": -25.5}, {"input": [-75.0, -25.0], "expected": -25.0}, {"input": [-75.0, -24.5], "expected": -24.5}, {"input": [-75.0, -24.0], "expected": -24.0}, {"input": [-75.0, -23.5], "expected": -23.5}, {"input": [-75.0, -23.0], "expected": -23.0}, {"input": [-75.0, -22.5], "expected": -22.5}, {"input": [-75.0, -22.0], "expected": -22.0}, {"input": [-75.0, -21.5], "expected": -21.5}, {"input": [-75.0, -21.0], "expected": -21.0}, {"input": [-75.0, -20.5], "expected": -20.5}, {"input": [-75.0, -20.0], "expected": -20.0}, {"input": [-75.0, -19.5], "expected": -19.5}, {"input": [-75.0, -19.0], "expected": -19.0}, {"input": [-75.0, -18.5], "expected": -18.5}, {"input": [-75.0, -18.0], "expected": -18.0}, {"input": [-75.0, -17.5], "expected": -17.5}, {"input": [-75.0, -17.0], "expected": -17.0}, {"input": [-75.0, -16.5], "expected": -16.5}, {"input": [-75.0, -16.0], "expected": -16.0}, {"input": [-75.0, -15.5], "expected": -15.5}, {"input": [-75.0, -15.0], "expected": -15.0}, {"input": [-75.0, -14.5], "expected": -14.5}, {"input": [-75.0, -14.0], "expected": -14.0}, {"input": [-75.0, -13.5], "expected": -13.5}, {"input": [-75.0, -13.0], "expected": -13.0}, {"input": [-75.0, -12.5], "expected": -12.5}, {"input": [-75.0, -12.0], "expected": -12.0}, {"input": [-75.0, -11.5], "expected": -11.5}, {"input": [-75.0, -11.0], "expected": -11.0}, {"input": [-75.0, -10.5], "expected": -10.5}, {"input": [-75.0, -10.0], "expected": -10.0}, {"input": [-75.0, -9.5], "expected": -9.5}, {"input": [-75.0, -9.0], "expected": -9.0}, {"input": [-75.0, -8.5], "expected": -8.5}, {"input": [-75.0, -8.0], "expected": -8.0}, {"input": [-75.0, -7.5], "expected": -7.5}, {"input": [-75.0, -7.0], "expected": -7.0}, {"input": [-75.0, -6.5], "expected": -6.5}, {"input": [-75.0, -6.0], "expected": -6.0}, {"input": [-75.0, -5.5], "expected": -5.5}, {"input": [-75.0, -5.0], "expected": -5.0}, {"input": [-75.0, -4.5], "expected": -4.5}, {"input": [-75.0, -4.0], "expected": -4.0}, {"input": [-75.0, -3.5], "expected": -3.5}, {"input": [-75.0, -3.0], "expected": -3.0}, {"input": [-75.0, -2.5], "expected": -2.5}, {"input": [-75.0, -2.0], "expected": -2.0}, {"input": [-75.0, -1.5], "expected": -1.5}, {"input": [-75.0, -1.0], "expected": -1.0}, {"input": [-75.0, -0.5], "expected": -0.5}, {"input": [-75.0, 0.0], "expected": 2.6786369618080778e-33}, {"input": [-75.0, 0.5], "expected": 0.5}, {"input": [-75.0, 1.0], "expected": 1.0}, {"input": [-75.0, 1.5], "expected": 1.5}, {"input": [-75.0, 2.0], "expected": 2.0}, {"input": [-75.0, 2.5], "expected": 2.5}, {"input": [-75.0, 3.0], "expected": 3.0}, {"input": [-75.0, 3.5], "expected": 3.5}, {"input": [-75.0, 4.0], "expected": 4.0}, {"input": [-75.0, 4.5], "expected": 4.5}, {"input": [-75.0, 5.0], "expected": 5.0}, {"input": [-75.0, 5.5], "expected": 5.5}, {"input": [-75.0, 6.0], "expected": 6.0}, {"input": [-75.0, 6.5], "expected": 6.5}, {"input": [-75.0, 7.0], "expected": 7.0}, {"input": [-75.0, 7.5], "expected": 7.5}, {"input": [-75.0, 8.0], "expected": 8.0}, {"input": [-75.0, 8.5], "expected": 8.5}, {"input": [-75.0, 9.0], "expected": 9.0}, {"input": [-75.0, 9.5], "expected": 9.5}, {"input": [-75.0, 10.0], "expected": 10.0}, {"input": [-75.0, 10.5], "expected": 10.5}, {"input": [-75.0, 11.0], "expected": 11.0}, {"input": [-75.0, 11.5], "expected": 11.5}, {"input": [-75.0, 12.0], "expected": 12.0}, {"input": [-75.0, 12.5], "expected": 12.5}, {"input": [-75.0, 13.0], "expected": 13.0}, {"input": [-75.0, 13.5], "expected": 13.5}, {"input": [-75.0, 14.0], "expected": 14.0}, {"input": [-75.0, 14.5], "expected": 14.5}, {"input": [-75.0, 15.0], "expected": 15.0}, {"input": [-75.0, 15.5], "expected": 15.5}, {"input": [-75.0, 16.0], "expected": 16.0}, {"input": [-75.0, 16.5], "expected": 16.5}, {"input": [-75.0, 17.0], "expected": 17.0}, {"input": [-75.0, 17.5], "expected": 17.5}, {"input": [-75.0, 18.0], "expected": 18.0}, {"input": [-75.0, 18.5], "expected": 18.5}, {"input": [-75.0, 19.0], "expected": 19.0}, {"input": [-75.0, 19.5], "expected": 19.5}, {"input": [-75.0, 20.0], "expected": 20.0}, {"input": [-75.0, 20.5], "expected": 20.5}, {"input": [-75.0, 21.0], "expected": 21.0}, {"input": [-75.0, 21.5], "expected": 21.5}, {"input": [-75.0, 22.0], "expected": 22.0}, {"input": [-75.0, 22.5], "expected": 22.5}, {"input": [-75.0, 23.0], "expected": 23.0}, {"input": [-75.0, 23.5], "expected": 23.5}, {"input": [-75.0, 24.0], "expected": 24.0}, {"input": [-75.0, 24.5], "expected": 24.5}, {"input": [-75.0, 25.0], "expected": 25.0}, {"input": [-75.0, 25.5], "expected": 25.5}, {"input": [-75.0, 26.0], "expected": 26.0}, {"input": [-75.0, 26.5], "expected": 26.5}, {"input": [-75.0, 27.0], "expected": 27.0}, {"input": [-75.0, 27.5], "expected": 27.5}, {"input": [-75.0, 28.0], "expected": 28.0}, {"input": [-75.0, 28.5], "expected": 28.5}, {"input": [-75.0, 29.0], "expected": 29.0}, {"input": [-75.0, 29.5], "expected": 29.5}, {"input": [-75.0, 30.0], "expected": 30.0}, {"input": [-75.0, 30.5], "expected": 30.5}, {"input": [-75.0, 31.0], "expected": 31.0}, {"input": [-75.0, 31.5], "expected": 31.5}, {"input": [-75.0, 32.0], "expected": 32.0}, {"input": [-75.0, 32.5], "expected": 32.5}, {"input": [-75.0, 33.0], "expected": 33.0}, {"input": [-75.0, 33.5], "expected": 33.5}, {"input": [-75.0, 34.0], "expected": 34.0}, {"input": [-75.0, 34.5], "expected": 34.5}, {"input": [-75.0, 35.0], "expected": 35.0}, {"input": [-75.0, 35.5], "expected": 35.5}, {"input": [-75.0, 36.0], "expected": 36.0}, {"input": [-75.0, 36.5], "expected": 36.5}, {"input": [-75.0, 37.0], "expected": 37.0}, {"input": [-75.0, 37.5], "expected": 37.5}, {"input": [-75.0, 38.0], "expected": 38.0}, {"input": [-75.0, 38.5], "expected": 38.5}, {"input": [-75.0, 39.0], "expected": 39.0}, {"input": [-75.0, 39.5], "expected": 39.5}, {"input": [-75.0, 40.0], "expected": 40.0}, {"input": [-75.0, 40.5], "expected": 40.5}, {"input": [-75.0, 41.0], "expected": 41.0}, {"input": [-75.0, 41.5], "expected": 41.5}, {"input": [-75.0, 42.0], "expected": 42.0}, {"input": [-75.0, 42.5], "expected": 42.5}, {"input": [-75.0, 43.0], "expected": 43.0}, {"input": [-75.0, 43.5], "expected": 43.5}, {"input": [-75.0, 44.0], "expected": 44.0}, {"input": [-75.0, 44.5], "expected": 44.5}, {"input": [-75.0, 45.0], "expected": 45.0}, {"input": [-75.0, 45.5], "expected": 45.5}, {"input": [-75.0, 46.0], "expected": 46.0}, {"input": [-75.0, 46.5], "expected": 46.5}, {"input": [-75.0, 47.0], "expected": 47.0}, {"input": [-75.0, 47.5], "expected": 47.5}, {"input": [-75.0, 48.0], "expected": 48.0}, {"input": [-75.0, 48.5], "expected": 48.5}, {"input": [-75.0, 49.0], "expected": 49.0}, {"input": [-75.0, 49.5], "expected": 49.5}, {"input": [-75.0, 50.0], "expected": 50.0}, {"input": [-75.0, 50.5], "expected": 50.5}, {"input": [-75.0, 51.0], "expected": 51.0}, {"input": [-75.0, 51.5], "expected": 51.5}, {"input": [-75.0, 52.0], "expected": 52.0}, {"input": [-75.0, 52.5], "expected": 52.5}, {"input": [-75.0, 53.0], "expected": 53.0}, {"input": [-75.0, 53.5], "expected": 53.5}, {"input": [-75.0, 54.0], "expected": 54.0}, {"input": [-75.0, 54.5], "expected": 54.5}, {"input": [-75.0, 55.0], "expected": 55.0}, {"input": [-75.0, 55.5], "expected": 55.5}, {"input": [-75.0, 56.0], "expected": 56.0}, {"input": [-75.0, 56.5], "expected": 56.5}, {"input": [-75.0, 57.0], "expected": 57.0}, {"input": [-75.0, 57.5], "expected": 57.5}, {"input": [-75.0, 58.0], "expected": 58.0}, {"input": [-75.0, 58.5], "expected": 58.5}, {"input": [-75.0, 59.0], "expected": 59.0}, {"input": [-75.0, 59.5], "expected": 59.5}, {"input": [-75.0, 60.0], "expected": 60.0}, {"input": [-75.0, 60.5], "expected": 60.5}, {"input": [-75.0, 61.0], "expected": 61.0}, {"input": [-75.0, 61.5], "expected": 61.5}, {"input": [-75.0, 62.0], "expected": 62.0}, {"input": [-75.0, 62.5], "expected": 62.5}, {"input": [-75.0, 63.0], "expected": 63.0}, {"input": [-75.0, 63.5], "expected": 63.5}, {"input": [-75.0, 64.0], "expected": 64.0}, {"input": [-75.0, 64.5], "expected": 64.5}, {"input": [-75.0, 65.0], "expected": 65.0}, {"input": [-75.0, 65.5], "expected": 65.5}, {"input": [-75.0, 66.0], "expected": 66.0}, {"input": [-75.0, 66.5], "expected": 66.5}, {"input": [-75.0, 67.0], "expected": 67.0}, {"input": [-75.0, 67.5], "expected": 67.5}, {"input": [-75.0, 68.0], "expected": 68.0}, {"input": [-75.0, 68.5], "expected": 68.5}, {"input": [-75.0, 69.0], "expected": 69.0}, {"input": [-75.0, 69.5], "expected": 69.5}, {"input": [-75.0, 70.0], "expected": 70.0}, {"input": [-75.0, 70.5], "expected": 70.5}, {"input": [-75.0, 71.0], "expected": 71.0}, {"input": [-75.0, 71.5], "expected": 71.5}, {"input": [-75.0, 72.0], "expected": 72.0}, {"input": [-75.0, 72.5], "expected": 72.5}, {"input": [-75.0, 73.0], "expected": 73.0}, {"input": [-75.0, 73.5], "expected": 73.5}, {"input": [-75.0, 74.0], "expected": 74.0}, {"input": [-75.0, 74.5], "expected": 74.5}, {"input": [-75.0, 75.0], "expected": 75.0}, {"input": [-75.0, 75.5], "expected": 75.5}, {"input": [-75.0, 76.0], "expected": 76.0}, {"input": [-75.0, 76.5], "expected": 76.5}, {"input": [-75.0, 77.0], "expected": 77.0}, {"input": [-75.0, 77.5], "expected": 77.5}, {"input": [-75.0, 78.0], "expected": 78.0}, {"input": [-75.0, 78.5], "expected": 78.5}, {"input": [-75.0, 79.0], "expected": 79.0}, {"input": [-75.0, 79.5], "expected": 79.5}, {"input": [-75.0, 80.0], "expected": 80.0}, {"input": [-75.0, 80.5], "expected": 80.5}, {"input": [-75.0, 81.0], "expected": 81.0}, {"input": [-75.0, 81.5], "expected": 81.5}, {"input": [-75.0, 82.0], "expected": 82.0}, {"input": [-75.0, 82.5], "expected": 82.5}, {"input": [-75.0, 83.0], "expected": 83.0}, {"input": [-75.0, 83.5], "expected": 83.5}, {"input": [-75.0, 84.0], "expected": 84.0}, {"input": [-75.0, 84.5], "expected": 84.5}, {"input": [-75.0, 85.0], "expected": 85.0}, {"input": [-75.0, 85.5], "expected": 85.5}, {"input": [-75.0, 86.0], "expected": 86.0}, {"input": [-75.0, 86.5], "expected": 86.5}, {"input": [-75.0, 87.0], "expected": 87.0}, {"input": [-75.0, 87.5], "expected": 87.5}, {"input": [-75.0, 88.0], "expected": 88.0}, {"input": [-75.0, 88.5], "expected": 88.5}, {"input": [-75.0, 89.0], "expected": 89.0}, {"input": [-75.0, 89.5], "expected": 89.5}, {"input": [-75.0, 90.0], "expected": 90.0}, {"input": [-75.0, 90.5], "expected": 90.5}, {"input": [-75.0, 91.0], "expected": 91.0}, {"input": [-75.0, 91.5], "expected": 91.5}, {"input": [-75.0, 92.0], "expected": 92.0}, {"input": [-75.0, 92.5], "expected": 92.5}, {"input": [-75.0, 93.0], "expected": 93.0}, {"input": [-75.0, 93.5], "expected": 93.5}, {"input": [-75.0, 94.0], "expected": 94.0}, {"input": [-75.0, 94.5], "expected": 94.5}, {"input": [-75.0, 95.0], "expected": 95.0}, {"input": [-75.0, 95.5], "expected": 95.5}, {"input": [-75.0, 96.0], "expected": 96.0}, {"input": [-75.0, 96.5], "expected": 96.5}, {"input": [-75.0, 97.0], "expected": 97.0}, {"input": [-75.0, 97.5], "expected": 97.5}, {"input": [-75.0, 98.0], "expected": 98.0}, {"input": [-75.0, 98.5], "expected": 98.5}, {"input": [-75.0, 99.0], "expected": 99.0}, {"input": [-75.0, 99.5], "expected": 99.5}, {"input": [-74.5, -100.0], "expected": -74.49999999999157}, {"input": [-74.5, -99.5], "expected": -74.49999999998612}, {"input": [-74.5, -99.0], "expected": -74.4999999999771}, {"input": [-74.5, -98.5], "expected": -74.49999999996224}, {"input": [-74.5, -98.0], "expected": -74.49999999993776}, {"input": [-74.5, -97.5], "expected": -74.49999999989738}, {"input": [-74.5, -97.0], "expected": -74.4999999998308}, {"input": [-74.5, -96.5], "expected": -74.49999999972106}, {"input": [-74.5, -96.0], "expected": -74.4999999995401}, {"input": [-74.5, -95.5], "expected": -74.49999999924174}, {"input": [-74.5, -95.0], "expected": -74.49999999874984}, {"input": [-74.5, -94.5], "expected": -74.49999999793884}, {"input": [-74.5, -94.0], "expected": -74.49999999660173}, {"input": [-74.5, -93.5], "expected": -74.4999999943972}, {"input": [-74.5, -93.0], "expected": -74.49999999076255}, {"input": [-74.5, -92.5], "expected": -74.49999998477001}, {"input": [-74.5, -92.0], "expected": -74.49999997489}, {"input": [-74.5, -91.5], "expected": -74.49999995860063}, {"input": [-74.5, -91.0], "expected": -74.49999993174397}, {"input": [-74.5, -90.5], "expected": -74.49999988746484}, {"input": [-74.5, -90.0], "expected": -74.49999981446088}, {"input": [-74.5, -89.5], "expected": -74.49999969409772}, {"input": [-74.5, -89.0], "expected": -74.49999949565246}, {"input": [-74.5, -88.5], "expected": -74.49999916847163}, {"input": [-74.5, -88.0], "expected": -74.49999862904185}, {"input": [-74.5, -87.5], "expected": -74.49999773967315}, {"input": [-74.5, -87.0], "expected": -74.49999627335377}, {"input": [-74.5, -86.5], "expected": -74.49999385580652}, {"input": [-74.5, -86.0], "expected": -74.49998986995772}, {"input": [-74.5, -85.5], "expected": -74.49998329843868}, {"input": [-74.5, -85.0], "expected": -74.49997246392977}, {"input": [-74.5, -84.5], "expected": -74.49995460110078}, {"input": [-74.5, -84.0], "expected": -74.49992515097136}, {"input": [-74.5, -83.5], "expected": -74.49987659781027}, {"input": [-74.5, -83.0], "expected": -74.49979655232787}, {"input": [-74.5, -82.5], "expected": -74.4996645936271}, {"input": [-74.5, -82.0], "expected": -74.49944706852465}, {"input": [-74.5, -81.5], "expected": -74.49908853354623}, {"input": [-74.5, -81.0], "expected": -74.49849768984025}, {"input": [-74.5, -80.5], "expected": -74.49752431486228}, {"input": [-74.5, -80.0], "expected": -74.49592155672943}, {"input": [-74.5, -79.5], "expected": -74.49328465151088}, {"input": [-74.5, -79.0], "expected": -74.4889522551514}, {"input": [-74.5, -78.5], "expected": -74.4818500720822}, {"input": [-74.5, -78.0], "expected": -74.47024958172737}, {"input": [-74.5, -77.5], "expected": -74.45141264842626}, {"input": [-74.5, -77.0], "expected": -74.42111026570745}, {"input": [-74.5, -76.5], "expected": -74.37307198895702}, {"input": [-74.5, -76.0], "expected": -74.29858672201725}, {"input": [-74.5, -75.5], "expected": -74.18673831248178}, {"input": [-74.5, -75.0], "expected": -74.0259230158199}, {"input": [-74.5, -74.5], "expected": -73.80685281944005}, {"input": [-74.5, -74.0], "expected": -73.5259230158199}, {"input": [-74.5, -73.5], "expected": -73.18673831248178}, {"input": [-74.5, -73.0], "expected": -72.79858672201725}, {"input": [-74.5, -72.5], "expected": -72.37307198895702}, {"input": [-74.5, -72.0], "expected": -71.92111026570745}, {"input": [-74.5, -71.5], "expected": -71.45141264842626}, {"input": [-74.5, -71.0], "expected": -70.97024958172737}, {"input": [-74.5, -70.5], "expected": -70.4818500720822}, {"input": [-74.5, -70.0], "expected": -69.9889522551514}, {"input": [-74.5, -69.5], "expected": -69.49328465151088}, {"input": [-74.5, -69.0], "expected": -68.99592155672943}, {"input": [-74.5, -68.5], "expected": -68.49752431486228}, {"input": [-74.5, -68.0], "expected": -67.99849768984025}, {"input": [-74.5, -67.5], "expected": -67.49908853354623}, {"input": [-74.5, -67.0], "expected": -66.99944706852465}, {"input": [-74.5, -66.5], "expected": -66.4996645936271}, {"input": [-74.5, -66.0], "expected": -65.99979655232787}, {"input": [-74.5, -65.5], "expected": -65.49987659781027}, {"input": [-74.5, -65.0], "expected": -64.99992515097136}, {"input": [-74.5, -64.5], "expected": -64.49995460110078}, {"input": [-74.5, -64.0], "expected": -63.99997246392977}, {"input": [-74.5, -63.5], "expected": -63.49998329843868}, {"input": [-74.5, -63.0], "expected": -62.99998986995771}, {"input": [-74.5, -62.5], "expected": -62.49999385580652}, {"input": [-74.5, -62.0], "expected": -61.99999627335377}, {"input": [-74.5, -61.5], "expected": -61.49999773967315}, {"input": [-74.5, -61.0], "expected": -60.999998629041855}, {"input": [-74.5, -60.5], "expected": -60.499999168471625}, {"input": [-74.5, -60.0], "expected": -59.99999949565247}, {"input": [-74.5, -59.5], "expected": -59.499999694097724}, {"input": [-74.5, -59.0], "expected": -58.99999981446088}, {"input": [-74.5, -58.5], "expected": -58.49999988746483}, {"input": [-74.5, -58.0], "expected": -57.99999993174397}, {"input": [-74.5, -57.5], "expected": -57.499999958600625}, {"input": [-74.5, -57.0], "expected": -56.99999997489001}, {"input": [-74.5, -56.5], "expected": -56.49999998477002}, {"input": [-74.5, -56.0], "expected": -55.999999990762554}, {"input": [-74.5, -55.5], "expected": -55.49999999439721}, {"input": [-74.5, -55.0], "expected": -54.99999999660173}, {"input": [-74.5, -54.5], "expected": -54.49999999793884}, {"input": [-74.5, -54.0], "expected": -53.99999999874985}, {"input": [-74.5, -53.5], "expected": -53.499999999241744}, {"input": [-74.5, -53.0], "expected": -52.999999999540094}, {"input": [-74.5, -52.5], "expected": -52.499999999721055}, {"input": [-74.5, -52.0], "expected": -51.99999999983081}, {"input": [-74.5, -51.5], "expected": -51.49999999989738}, {"input": [-74.5, -51.0], "expected": -50.99999999993776}, {"input": [-74.5, -50.5], "expected": -50.49999999996225}, {"input": [-74.5, -50.0], "expected": -49.9999999999771}, {"input": [-74.5, -49.5], "expected": -49.49999999998611}, {"input": [-74.5, -49.0], "expected": -48.99999999999158}, {"input": [-74.5, -48.5], "expected": -48.49999999999489}, {"input": [-74.5, -48.0], "expected": -47.9999999999969}, {"input": [-74.5, -47.5], "expected": -47.49999999999812}, {"input": [-74.5, -47.0], "expected": -46.99999999999886}, {"input": [-74.5, -46.5], "expected": -46.49999999999931}, {"input": [-74.5, -46.0], "expected": -45.99999999999958}, {"input": [-74.5, -45.5], "expected": -45.499999999999744}, {"input": [-74.5, -45.0], "expected": -44.999999999999844}, {"input": [-74.5, -44.5], "expected": -44.49999999999991}, {"input": [-74.5, -44.0], "expected": -43.99999999999994}, {"input": [-74.5, -43.5], "expected": -43.499999999999964}, {"input": [-74.5, -43.0], "expected": -42.99999999999998}, {"input": [-74.5, -42.5], "expected": -42.499999999999986}, {"input": [-74.5, -42.0], "expected": -41.99999999999999}, {"input": [-74.5, -41.5], "expected": -41.49999999999999}, {"input": [-74.5, -41.0], "expected": -41.0}, {"input": [-74.5, -40.5], "expected": -40.5}, {"input": [-74.5, -40.0], "expected": -40.0}, {"input": [-74.5, -39.5], "expected": -39.5}, {"input": [-74.5, -39.0], "expected": -39.0}, {"input": [-74.5, -38.5], "expected": -38.5}, {"input": [-74.5, -38.0], "expected": -38.0}, {"input": [-74.5, -37.5], "expected": -37.5}, {"input": [-74.5, -37.0], "expected": -37.0}, {"input": [-74.5, -36.5], "expected": -36.5}, {"input": [-74.5, -36.0], "expected": -36.0}, {"input": [-74.5, -35.5], "expected": -35.5}, {"input": [-74.5, -35.0], "expected": -35.0}, {"input": [-74.5, -34.5], "expected": -34.5}, {"input": [-74.5, -34.0], "expected": -34.0}, {"input": [-74.5, -33.5], "expected": -33.5}, {"input": [-74.5, -33.0], "expected": -33.0}, {"input": [-74.5, -32.5], "expected": -32.5}, {"input": [-74.5, -32.0], "expected": -32.0}, {"input": [-74.5, -31.5], "expected": -31.5}, {"input": [-74.5, -31.0], "expected": -31.0}, {"input": [-74.5, -30.5], "expected": -30.5}, {"input": [-74.5, -30.0], "expected": -30.0}, {"input": [-74.5, -29.5], "expected": -29.5}, {"input": [-74.5, -29.0], "expected": -29.0}, {"input": [-74.5, -28.5], "expected": -28.5}, {"input": [-74.5, -28.0], "expected": -28.0}, {"input": [-74.5, -27.5], "expected": -27.5}, {"input": [-74.5, -27.0], "expected": -27.0}, {"input": [-74.5, -26.5], "expected": -26.5}, {"input": [-74.5, -26.0], "expected": -26.0}, {"input": [-74.5, -25.5], "expected": -25.5}, {"input": [-74.5, -25.0], "expected": -25.0}, {"input": [-74.5, -24.5], "expected": -24.5}, {"input": [-74.5, -24.0], "expected": -24.0}, {"input": [-74.5, -23.5], "expected": -23.5}, {"input": [-74.5, -23.0], "expected": -23.0}, {"input": [-74.5, -22.5], "expected": -22.5}, {"input": [-74.5, -22.0], "expected": -22.0}, {"input": [-74.5, -21.5], "expected": -21.5}, {"input": [-74.5, -21.0], "expected": -21.0}, {"input": [-74.5, -20.5], "expected": -20.5}, {"input": [-74.5, -20.0], "expected": -20.0}, {"input": [-74.5, -19.5], "expected": -19.5}, {"input": [-74.5, -19.0], "expected": -19.0}, {"input": [-74.5, -18.5], "expected": -18.5}, {"input": [-74.5, -18.0], "expected": -18.0}, {"input": [-74.5, -17.5], "expected": -17.5}, {"input": [-74.5, -17.0], "expected": -17.0}, {"input": [-74.5, -16.5], "expected": -16.5}, {"input": [-74.5, -16.0], "expected": -16.0}, {"input": [-74.5, -15.5], "expected": -15.5}, {"input": [-74.5, -15.0], "expected": -15.0}, {"input": [-74.5, -14.5], "expected": -14.5}, {"input": [-74.5, -14.0], "expected": -14.0}, {"input": [-74.5, -13.5], "expected": -13.5}, {"input": [-74.5, -13.0], "expected": -13.0}, {"input": [-74.5, -12.5], "expected": -12.5}, {"input": [-74.5, -12.0], "expected": -12.0}, {"input": [-74.5, -11.5], "expected": -11.5}, {"input": [-74.5, -11.0], "expected": -11.0}, {"input": [-74.5, -10.5], "expected": -10.5}, {"input": [-74.5, -10.0], "expected": -10.0}, {"input": [-74.5, -9.5], "expected": -9.5}, {"input": [-74.5, -9.0], "expected": -9.0}, {"input": [-74.5, -8.5], "expected": -8.5}, {"input": [-74.5, -8.0], "expected": -8.0}, {"input": [-74.5, -7.5], "expected": -7.5}, {"input": [-74.5, -7.0], "expected": -7.0}, {"input": [-74.5, -6.5], "expected": -6.5}, {"input": [-74.5, -6.0], "expected": -6.0}, {"input": [-74.5, -5.5], "expected": -5.5}, {"input": [-74.5, -5.0], "expected": -5.0}, {"input": [-74.5, -4.5], "expected": -4.5}, {"input": [-74.5, -4.0], "expected": -4.0}, {"input": [-74.5, -3.5], "expected": -3.5}, {"input": [-74.5, -3.0], "expected": -3.0}, {"input": [-74.5, -2.5], "expected": -2.5}, {"input": [-74.5, -2.0], "expected": -2.0}, {"input": [-74.5, -1.5], "expected": -1.5}, {"input": [-74.5, -1.0], "expected": -1.0}, {"input": [-74.5, -0.5], "expected": -0.5}, {"input": [-74.5, 0.0], "expected": 4.416325735416545e-33}, {"input": [-74.5, 0.5], "expected": 0.5}, {"input": [-74.5, 1.0], "expected": 1.0}, {"input": [-74.5, 1.5], "expected": 1.5}, {"input": [-74.5, 2.0], "expected": 2.0}, {"input": [-74.5, 2.5], "expected": 2.5}, {"input": [-74.5, 3.0], "expected": 3.0}, {"input": [-74.5, 3.5], "expected": 3.5}, {"input": [-74.5, 4.0], "expected": 4.0}, {"input": [-74.5, 4.5], "expected": 4.5}, {"input": [-74.5, 5.0], "expected": 5.0}, {"input": [-74.5, 5.5], "expected": 5.5}, {"input": [-74.5, 6.0], "expected": 6.0}, {"input": [-74.5, 6.5], "expected": 6.5}, {"input": [-74.5, 7.0], "expected": 7.0}, {"input": [-74.5, 7.5], "expected": 7.5}, {"input": [-74.5, 8.0], "expected": 8.0}, {"input": [-74.5, 8.5], "expected": 8.5}, {"input": [-74.5, 9.0], "expected": 9.0}, {"input": [-74.5, 9.5], "expected": 9.5}, {"input": [-74.5, 10.0], "expected": 10.0}, {"input": [-74.5, 10.5], "expected": 10.5}, {"input": [-74.5, 11.0], "expected": 11.0}, {"input": [-74.5, 11.5], "expected": 11.5}, {"input": [-74.5, 12.0], "expected": 12.0}, {"input": [-74.5, 12.5], "expected": 12.5}, {"input": [-74.5, 13.0], "expected": 13.0}, {"input": [-74.5, 13.5], "expected": 13.5}, {"input": [-74.5, 14.0], "expected": 14.0}, {"input": [-74.5, 14.5], "expected": 14.5}, {"input": [-74.5, 15.0], "expected": 15.0}, {"input": [-74.5, 15.5], "expected": 15.5}, {"input": [-74.5, 16.0], "expected": 16.0}, {"input": [-74.5, 16.5], "expected": 16.5}, {"input": [-74.5, 17.0], "expected": 17.0}, {"input": [-74.5, 17.5], "expected": 17.5}, {"input": [-74.5, 18.0], "expected": 18.0}, {"input": [-74.5, 18.5], "expected": 18.5}, {"input": [-74.5, 19.0], "expected": 19.0}, {"input": [-74.5, 19.5], "expected": 19.5}, {"input": [-74.5, 20.0], "expected": 20.0}, {"input": [-74.5, 20.5], "expected": 20.5}, {"input": [-74.5, 21.0], "expected": 21.0}, {"input": [-74.5, 21.5], "expected": 21.5}, {"input": [-74.5, 22.0], "expected": 22.0}, {"input": [-74.5, 22.5], "expected": 22.5}, {"input": [-74.5, 23.0], "expected": 23.0}, {"input": [-74.5, 23.5], "expected": 23.5}, {"input": [-74.5, 24.0], "expected": 24.0}, {"input": [-74.5, 24.5], "expected": 24.5}, {"input": [-74.5, 25.0], "expected": 25.0}, {"input": [-74.5, 25.5], "expected": 25.5}, {"input": [-74.5, 26.0], "expected": 26.0}, {"input": [-74.5, 26.5], "expected": 26.5}, {"input": [-74.5, 27.0], "expected": 27.0}, {"input": [-74.5, 27.5], "expected": 27.5}, {"input": [-74.5, 28.0], "expected": 28.0}, {"input": [-74.5, 28.5], "expected": 28.5}, {"input": [-74.5, 29.0], "expected": 29.0}, {"input": [-74.5, 29.5], "expected": 29.5}, {"input": [-74.5, 30.0], "expected": 30.0}, {"input": [-74.5, 30.5], "expected": 30.5}, {"input": [-74.5, 31.0], "expected": 31.0}, {"input": [-74.5, 31.5], "expected": 31.5}, {"input": [-74.5, 32.0], "expected": 32.0}, {"input": [-74.5, 32.5], "expected": 32.5}, {"input": [-74.5, 33.0], "expected": 33.0}, {"input": [-74.5, 33.5], "expected": 33.5}, {"input": [-74.5, 34.0], "expected": 34.0}, {"input": [-74.5, 34.5], "expected": 34.5}, {"input": [-74.5, 35.0], "expected": 35.0}, {"input": [-74.5, 35.5], "expected": 35.5}, {"input": [-74.5, 36.0], "expected": 36.0}, {"input": [-74.5, 36.5], "expected": 36.5}, {"input": [-74.5, 37.0], "expected": 37.0}, {"input": [-74.5, 37.5], "expected": 37.5}, {"input": [-74.5, 38.0], "expected": 38.0}, {"input": [-74.5, 38.5], "expected": 38.5}, {"input": [-74.5, 39.0], "expected": 39.0}, {"input": [-74.5, 39.5], "expected": 39.5}, {"input": [-74.5, 40.0], "expected": 40.0}, {"input": [-74.5, 40.5], "expected": 40.5}, {"input": [-74.5, 41.0], "expected": 41.0}, {"input": [-74.5, 41.5], "expected": 41.5}, {"input": [-74.5, 42.0], "expected": 42.0}, {"input": [-74.5, 42.5], "expected": 42.5}, {"input": [-74.5, 43.0], "expected": 43.0}, {"input": [-74.5, 43.5], "expected": 43.5}, {"input": [-74.5, 44.0], "expected": 44.0}, {"input": [-74.5, 44.5], "expected": 44.5}, {"input": [-74.5, 45.0], "expected": 45.0}, {"input": [-74.5, 45.5], "expected": 45.5}, {"input": [-74.5, 46.0], "expected": 46.0}, {"input": [-74.5, 46.5], "expected": 46.5}, {"input": [-74.5, 47.0], "expected": 47.0}, {"input": [-74.5, 47.5], "expected": 47.5}, {"input": [-74.5, 48.0], "expected": 48.0}, {"input": [-74.5, 48.5], "expected": 48.5}, {"input": [-74.5, 49.0], "expected": 49.0}, {"input": [-74.5, 49.5], "expected": 49.5}, {"input": [-74.5, 50.0], "expected": 50.0}, {"input": [-74.5, 50.5], "expected": 50.5}, {"input": [-74.5, 51.0], "expected": 51.0}, {"input": [-74.5, 51.5], "expected": 51.5}, {"input": [-74.5, 52.0], "expected": 52.0}, {"input": [-74.5, 52.5], "expected": 52.5}, {"input": [-74.5, 53.0], "expected": 53.0}, {"input": [-74.5, 53.5], "expected": 53.5}, {"input": [-74.5, 54.0], "expected": 54.0}, {"input": [-74.5, 54.5], "expected": 54.5}, {"input": [-74.5, 55.0], "expected": 55.0}, {"input": [-74.5, 55.5], "expected": 55.5}, {"input": [-74.5, 56.0], "expected": 56.0}, {"input": [-74.5, 56.5], "expected": 56.5}, {"input": [-74.5, 57.0], "expected": 57.0}, {"input": [-74.5, 57.5], "expected": 57.5}, {"input": [-74.5, 58.0], "expected": 58.0}, {"input": [-74.5, 58.5], "expected": 58.5}, {"input": [-74.5, 59.0], "expected": 59.0}, {"input": [-74.5, 59.5], "expected": 59.5}, {"input": [-74.5, 60.0], "expected": 60.0}, {"input": [-74.5, 60.5], "expected": 60.5}, {"input": [-74.5, 61.0], "expected": 61.0}, {"input": [-74.5, 61.5], "expected": 61.5}, {"input": [-74.5, 62.0], "expected": 62.0}, {"input": [-74.5, 62.5], "expected": 62.5}, {"input": [-74.5, 63.0], "expected": 63.0}, {"input": [-74.5, 63.5], "expected": 63.5}, {"input": [-74.5, 64.0], "expected": 64.0}, {"input": [-74.5, 64.5], "expected": 64.5}, {"input": [-74.5, 65.0], "expected": 65.0}, {"input": [-74.5, 65.5], "expected": 65.5}, {"input": [-74.5, 66.0], "expected": 66.0}, {"input": [-74.5, 66.5], "expected": 66.5}, {"input": [-74.5, 67.0], "expected": 67.0}, {"input": [-74.5, 67.5], "expected": 67.5}, {"input": [-74.5, 68.0], "expected": 68.0}, {"input": [-74.5, 68.5], "expected": 68.5}, {"input": [-74.5, 69.0], "expected": 69.0}, {"input": [-74.5, 69.5], "expected": 69.5}, {"input": [-74.5, 70.0], "expected": 70.0}, {"input": [-74.5, 70.5], "expected": 70.5}, {"input": [-74.5, 71.0], "expected": 71.0}, {"input": [-74.5, 71.5], "expected": 71.5}, {"input": [-74.5, 72.0], "expected": 72.0}, {"input": [-74.5, 72.5], "expected": 72.5}, {"input": [-74.5, 73.0], "expected": 73.0}, {"input": [-74.5, 73.5], "expected": 73.5}, {"input": [-74.5, 74.0], "expected": 74.0}, {"input": [-74.5, 74.5], "expected": 74.5}, {"input": [-74.5, 75.0], "expected": 75.0}, {"input": [-74.5, 75.5], "expected": 75.5}, {"input": [-74.5, 76.0], "expected": 76.0}, {"input": [-74.5, 76.5], "expected": 76.5}, {"input": [-74.5, 77.0], "expected": 77.0}, {"input": [-74.5, 77.5], "expected": 77.5}, {"input": [-74.5, 78.0], "expected": 78.0}, {"input": [-74.5, 78.5], "expected": 78.5}, {"input": [-74.5, 79.0], "expected": 79.0}, {"input": [-74.5, 79.5], "expected": 79.5}, {"input": [-74.5, 80.0], "expected": 80.0}, {"input": [-74.5, 80.5], "expected": 80.5}, {"input": [-74.5, 81.0], "expected": 81.0}, {"input": [-74.5, 81.5], "expected": 81.5}, {"input": [-74.5, 82.0], "expected": 82.0}, {"input": [-74.5, 82.5], "expected": 82.5}, {"input": [-74.5, 83.0], "expected": 83.0}, {"input": [-74.5, 83.5], "expected": 83.5}, {"input": [-74.5, 84.0], "expected": 84.0}, {"input": [-74.5, 84.5], "expected": 84.5}, {"input": [-74.5, 85.0], "expected": 85.0}, {"input": [-74.5, 85.5], "expected": 85.5}, {"input": [-74.5, 86.0], "expected": 86.0}, {"input": [-74.5, 86.5], "expected": 86.5}, {"input": [-74.5, 87.0], "expected": 87.0}, {"input": [-74.5, 87.5], "expected": 87.5}, {"input": [-74.5, 88.0], "expected": 88.0}, {"input": [-74.5, 88.5], "expected": 88.5}, {"input": [-74.5, 89.0], "expected": 89.0}, {"input": [-74.5, 89.5], "expected": 89.5}, {"input": [-74.5, 90.0], "expected": 90.0}, {"input": [-74.5, 90.5], "expected": 90.5}, {"input": [-74.5, 91.0], "expected": 91.0}, {"input": [-74.5, 91.5], "expected": 91.5}, {"input": [-74.5, 92.0], "expected": 92.0}, {"input": [-74.5, 92.5], "expected": 92.5}, {"input": [-74.5, 93.0], "expected": 93.0}, {"input": [-74.5, 93.5], "expected": 93.5}, {"input": [-74.5, 94.0], "expected": 94.0}, {"input": [-74.5, 94.5], "expected": 94.5}, {"input": [-74.5, 95.0], "expected": 95.0}, {"input": [-74.5, 95.5], "expected": 95.5}, {"input": [-74.5, 96.0], "expected": 96.0}, {"input": [-74.5, 96.5], "expected": 96.5}, {"input": [-74.5, 97.0], "expected": 97.0}, {"input": [-74.5, 97.5], "expected": 97.5}, {"input": [-74.5, 98.0], "expected": 98.0}, {"input": [-74.5, 98.5], "expected": 98.5}, {"input": [-74.5, 99.0], "expected": 99.0}, {"input": [-74.5, 99.5], "expected": 99.5}, {"input": [-74.0, -100.0], "expected": -73.99999999999488}, {"input": [-74.0, -99.5], "expected": -73.99999999999157}, {"input": [-74.0, -99.0], "expected": -73.99999999998612}, {"input": [-74.0, -98.5], "expected": -73.9999999999771}, {"input": [-74.0, -98.0], "expected": -73.99999999996224}, {"input": [-74.0, -97.5], "expected": -73.99999999993776}, {"input": [-74.0, -97.0], "expected": -73.99999999989738}, {"input": [-74.0, -96.5], "expected": -73.9999999998308}, {"input": [-74.0, -96.0], "expected": -73.99999999972106}, {"input": [-74.0, -95.5], "expected": -73.9999999995401}, {"input": [-74.0, -95.0], "expected": -73.99999999924174}, {"input": [-74.0, -94.5], "expected": -73.99999999874984}, {"input": [-74.0, -94.0], "expected": -73.99999999793884}, {"input": [-74.0, -93.5], "expected": -73.99999999660173}, {"input": [-74.0, -93.0], "expected": -73.9999999943972}, {"input": [-74.0, -92.5], "expected": -73.99999999076255}, {"input": [-74.0, -92.0], "expected": -73.99999998477001}, {"input": [-74.0, -91.5], "expected": -73.99999997489}, {"input": [-74.0, -91.0], "expected": -73.99999995860063}, {"input": [-74.0, -90.5], "expected": -73.99999993174397}, {"input": [-74.0, -90.0], "expected": -73.99999988746484}, {"input": [-74.0, -89.5], "expected": -73.99999981446088}, {"input": [-74.0, -89.0], "expected": -73.99999969409772}, {"input": [-74.0, -88.5], "expected": -73.99999949565246}, {"input": [-74.0, -88.0], "expected": -73.99999916847163}, {"input": [-74.0, -87.5], "expected": -73.99999862904185}, {"input": [-74.0, -87.0], "expected": -73.99999773967315}, {"input": [-74.0, -86.5], "expected": -73.99999627335377}, {"input": [-74.0, -86.0], "expected": -73.99999385580652}, {"input": [-74.0, -85.5], "expected": -73.99998986995772}, {"input": [-74.0, -85.0], "expected": -73.99998329843868}, {"input": [-74.0, -84.5], "expected": -73.99997246392977}, {"input": [-74.0, -84.0], "expected": -73.99995460110078}, {"input": [-74.0, -83.5], "expected": -73.99992515097136}, {"input": [-74.0, -83.0], "expected": -73.99987659781027}, {"input": [-74.0, -82.5], "expected": -73.99979655232787}, {"input": [-74.0, -82.0], "expected": -73.9996645936271}, {"input": [-74.0, -81.5], "expected": -73.99944706852465}, {"input": [-74.0, -81.0], "expected": -73.99908853354623}, {"input": [-74.0, -80.5], "expected": -73.99849768984025}, {"input": [-74.0, -80.0], "expected": -73.99752431486228}, {"input": [-74.0, -79.5], "expected": -73.99592155672943}, {"input": [-74.0, -79.0], "expected": -73.99328465151088}, {"input": [-74.0, -78.5], "expected": -73.9889522551514}, {"input": [-74.0, -78.0], "expected": -73.9818500720822}, {"input": [-74.0, -77.5], "expected": -73.97024958172737}, {"input": [-74.0, -77.0], "expected": -73.95141264842626}, {"input": [-74.0, -76.5], "expected": -73.92111026570745}, {"input": [-74.0, -76.0], "expected": -73.87307198895702}, {"input": [-74.0, -75.5], "expected": -73.79858672201725}, {"input": [-74.0, -75.0], "expected": -73.68673831248178}, {"input": [-74.0, -74.5], "expected": -73.5259230158199}, {"input": [-74.0, -74.0], "expected": -73.30685281944005}, {"input": [-74.0, -73.5], "expected": -73.0259230158199}, {"input": [-74.0, -73.0], "expected": -72.68673831248178}, {"input": [-74.0, -72.5], "expected": -72.29858672201725}, {"input": [-74.0, -72.0], "expected": -71.87307198895702}, {"input": [-74.0, -71.5], "expected": -71.42111026570745}, {"input": [-74.0, -71.0], "expected": -70.95141264842626}, {"input": [-74.0, -70.5], "expected": -70.47024958172737}, {"input": [-74.0, -70.0], "expected": -69.9818500720822}, {"input": [-74.0, -69.5], "expected": -69.4889522551514}, {"input": [-74.0, -69.0], "expected": -68.99328465151088}, {"input": [-74.0, -68.5], "expected": -68.49592155672943}, {"input": [-74.0, -68.0], "expected": -67.99752431486228}, {"input": [-74.0, -67.5], "expected": -67.49849768984025}, {"input": [-74.0, -67.0], "expected": -66.99908853354623}, {"input": [-74.0, -66.5], "expected": -66.49944706852465}, {"input": [-74.0, -66.0], "expected": -65.9996645936271}, {"input": [-74.0, -65.5], "expected": -65.49979655232787}, {"input": [-74.0, -65.0], "expected": -64.99987659781027}, {"input": [-74.0, -64.5], "expected": -64.49992515097136}, {"input": [-74.0, -64.0], "expected": -63.99995460110078}, {"input": [-74.0, -63.5], "expected": -63.49997246392977}, {"input": [-74.0, -63.0], "expected": -62.99998329843868}, {"input": [-74.0, -62.5], "expected": -62.49998986995771}, {"input": [-74.0, -62.0], "expected": -61.99999385580652}, {"input": [-74.0, -61.5], "expected": -61.49999627335377}, {"input": [-74.0, -61.0], "expected": -60.99999773967315}, {"input": [-74.0, -60.5], "expected": -60.499998629041855}, {"input": [-74.0, -60.0], "expected": -59.999999168471625}, {"input": [-74.0, -59.5], "expected": -59.49999949565247}, {"input": [-74.0, -59.0], "expected": -58.999999694097724}, {"input": [-74.0, -58.5], "expected": -58.49999981446088}, {"input": [-74.0, -58.0], "expected": -57.99999988746483}, {"input": [-74.0, -57.5], "expected": -57.49999993174397}, {"input": [-74.0, -57.0], "expected": -56.999999958600625}, {"input": [-74.0, -56.5], "expected": -56.49999997489001}, {"input": [-74.0, -56.0], "expected": -55.99999998477002}, {"input": [-74.0, -55.5], "expected": -55.499999990762554}, {"input": [-74.0, -55.0], "expected": -54.99999999439721}, {"input": [-74.0, -54.5], "expected": -54.49999999660173}, {"input": [-74.0, -54.0], "expected": -53.99999999793884}, {"input": [-74.0, -53.5], "expected": -53.49999999874985}, {"input": [-74.0, -53.0], "expected": -52.999999999241744}, {"input": [-74.0, -52.5], "expected": -52.499999999540094}, {"input": [-74.0, -52.0], "expected": -51.999999999721055}, {"input": [-74.0, -51.5], "expected": -51.49999999983081}, {"input": [-74.0, -51.0], "expected": -50.99999999989738}, {"input": [-74.0, -50.5], "expected": -50.49999999993776}, {"input": [-74.0, -50.0], "expected": -49.99999999996225}, {"input": [-74.0, -49.5], "expected": -49.4999999999771}, {"input": [-74.0, -49.0], "expected": -48.99999999998611}, {"input": [-74.0, -48.5], "expected": -48.49999999999158}, {"input": [-74.0, -48.0], "expected": -47.99999999999489}, {"input": [-74.0, -47.5], "expected": -47.4999999999969}, {"input": [-74.0, -47.0], "expected": -46.99999999999812}, {"input": [-74.0, -46.5], "expected": -46.49999999999886}, {"input": [-74.0, -46.0], "expected": -45.99999999999931}, {"input": [-74.0, -45.5], "expected": -45.49999999999958}, {"input": [-74.0, -45.0], "expected": -44.999999999999744}, {"input": [-74.0, -44.5], "expected": -44.499999999999844}, {"input": [-74.0, -44.0], "expected": -43.99999999999991}, {"input": [-74.0, -43.5], "expected": -43.49999999999994}, {"input": [-74.0, -43.0], "expected": -42.999999999999964}, {"input": [-74.0, -42.5], "expected": -42.49999999999998}, {"input": [-74.0, -42.0], "expected": -41.999999999999986}, {"input": [-74.0, -41.5], "expected": -41.49999999999999}, {"input": [-74.0, -41.0], "expected": -40.99999999999999}, {"input": [-74.0, -40.5], "expected": -40.5}, {"input": [-74.0, -40.0], "expected": -40.0}, {"input": [-74.0, -39.5], "expected": -39.5}, {"input": [-74.0, -39.0], "expected": -39.0}, {"input": [-74.0, -38.5], "expected": -38.5}, {"input": [-74.0, -38.0], "expected": -38.0}, {"input": [-74.0, -37.5], "expected": -37.5}, {"input": [-74.0, -37.0], "expected": -37.0}, {"input": [-74.0, -36.5], "expected": -36.5}, {"input": [-74.0, -36.0], "expected": -36.0}, {"input": [-74.0, -35.5], "expected": -35.5}, {"input": [-74.0, -35.0], "expected": -35.0}, {"input": [-74.0, -34.5], "expected": -34.5}, {"input": [-74.0, -34.0], "expected": -34.0}, {"input": [-74.0, -33.5], "expected": -33.5}, {"input": [-74.0, -33.0], "expected": -33.0}, {"input": [-74.0, -32.5], "expected": -32.5}, {"input": [-74.0, -32.0], "expected": -32.0}, {"input": [-74.0, -31.5], "expected": -31.5}, {"input": [-74.0, -31.0], "expected": -31.0}, {"input": [-74.0, -30.5], "expected": -30.5}, {"input": [-74.0, -30.0], "expected": -30.0}, {"input": [-74.0, -29.5], "expected": -29.5}, {"input": [-74.0, -29.0], "expected": -29.0}, {"input": [-74.0, -28.5], "expected": -28.5}, {"input": [-74.0, -28.0], "expected": -28.0}, {"input": [-74.0, -27.5], "expected": -27.5}, {"input": [-74.0, -27.0], "expected": -27.0}, {"input": [-74.0, -26.5], "expected": -26.5}, {"input": [-74.0, -26.0], "expected": -26.0}, {"input": [-74.0, -25.5], "expected": -25.5}, {"input": [-74.0, -25.0], "expected": -25.0}, {"input": [-74.0, -24.5], "expected": -24.5}, {"input": [-74.0, -24.0], "expected": -24.0}, {"input": [-74.0, -23.5], "expected": -23.5}, {"input": [-74.0, -23.0], "expected": -23.0}, {"input": [-74.0, -22.5], "expected": -22.5}, {"input": [-74.0, -22.0], "expected": -22.0}, {"input": [-74.0, -21.5], "expected": -21.5}, {"input": [-74.0, -21.0], "expected": -21.0}, {"input": [-74.0, -20.5], "expected": -20.5}, {"input": [-74.0, -20.0], "expected": -20.0}, {"input": [-74.0, -19.5], "expected": -19.5}, {"input": [-74.0, -19.0], "expected": -19.0}, {"input": [-74.0, -18.5], "expected": -18.5}, {"input": [-74.0, -18.0], "expected": -18.0}, {"input": [-74.0, -17.5], "expected": -17.5}, {"input": [-74.0, -17.0], "expected": -17.0}, {"input": [-74.0, -16.5], "expected": -16.5}, {"input": [-74.0, -16.0], "expected": -16.0}, {"input": [-74.0, -15.5], "expected": -15.5}, {"input": [-74.0, -15.0], "expected": -15.0}, {"input": [-74.0, -14.5], "expected": -14.5}, {"input": [-74.0, -14.0], "expected": -14.0}, {"input": [-74.0, -13.5], "expected": -13.5}, {"input": [-74.0, -13.0], "expected": -13.0}, {"input": [-74.0, -12.5], "expected": -12.5}, {"input": [-74.0, -12.0], "expected": -12.0}, {"input": [-74.0, -11.5], "expected": -11.5}, {"input": [-74.0, -11.0], "expected": -11.0}, {"input": [-74.0, -10.5], "expected": -10.5}, {"input": [-74.0, -10.0], "expected": -10.0}, {"input": [-74.0, -9.5], "expected": -9.5}, {"input": [-74.0, -9.0], "expected": -9.0}, {"input": [-74.0, -8.5], "expected": -8.5}, {"input": [-74.0, -8.0], "expected": -8.0}, {"input": [-74.0, -7.5], "expected": -7.5}, {"input": [-74.0, -7.0], "expected": -7.0}, {"input": [-74.0, -6.5], "expected": -6.5}, {"input": [-74.0, -6.0], "expected": -6.0}, {"input": [-74.0, -5.5], "expected": -5.5}, {"input": [-74.0, -5.0], "expected": -5.0}, {"input": [-74.0, -4.5], "expected": -4.5}, {"input": [-74.0, -4.0], "expected": -4.0}, {"input": [-74.0, -3.5], "expected": -3.5}, {"input": [-74.0, -3.0], "expected": -3.0}, {"input": [-74.0, -2.5], "expected": -2.5}, {"input": [-74.0, -2.0], "expected": -2.0}, {"input": [-74.0, -1.5], "expected": -1.5}, {"input": [-74.0, -1.0], "expected": -1.0}, {"input": [-74.0, -0.5], "expected": -0.5}, {"input": [-74.0, 0.0], "expected": 7.281290178321643e-33}, {"input": [-74.0, 0.5], "expected": 0.5}, {"input": [-74.0, 1.0], "expected": 1.0}, {"input": [-74.0, 1.5], "expected": 1.5}, {"input": [-74.0, 2.0], "expected": 2.0}, {"input": [-74.0, 2.5], "expected": 2.5}, {"input": [-74.0, 3.0], "expected": 3.0}, {"input": [-74.0, 3.5], "expected": 3.5}, {"input": [-74.0, 4.0], "expected": 4.0}, {"input": [-74.0, 4.5], "expected": 4.5}, {"input": [-74.0, 5.0], "expected": 5.0}, {"input": [-74.0, 5.5], "expected": 5.5}, {"input": [-74.0, 6.0], "expected": 6.0}, {"input": [-74.0, 6.5], "expected": 6.5}, {"input": [-74.0, 7.0], "expected": 7.0}, {"input": [-74.0, 7.5], "expected": 7.5}, {"input": [-74.0, 8.0], "expected": 8.0}, {"input": [-74.0, 8.5], "expected": 8.5}, {"input": [-74.0, 9.0], "expected": 9.0}, {"input": [-74.0, 9.5], "expected": 9.5}, {"input": [-74.0, 10.0], "expected": 10.0}, {"input": [-74.0, 10.5], "expected": 10.5}, {"input": [-74.0, 11.0], "expected": 11.0}, {"input": [-74.0, 11.5], "expected": 11.5}, {"input": [-74.0, 12.0], "expected": 12.0}, {"input": [-74.0, 12.5], "expected": 12.5}, {"input": [-74.0, 13.0], "expected": 13.0}, {"input": [-74.0, 13.5], "expected": 13.5}, {"input": [-74.0, 14.0], "expected": 14.0}, {"input": [-74.0, 14.5], "expected": 14.5}, {"input": [-74.0, 15.0], "expected": 15.0}, {"input": [-74.0, 15.5], "expected": 15.5}, {"input": [-74.0, 16.0], "expected": 16.0}, {"input": [-74.0, 16.5], "expected": 16.5}, {"input": [-74.0, 17.0], "expected": 17.0}, {"input": [-74.0, 17.5], "expected": 17.5}, {"input": [-74.0, 18.0], "expected": 18.0}, {"input": [-74.0, 18.5], "expected": 18.5}, {"input": [-74.0, 19.0], "expected": 19.0}, {"input": [-74.0, 19.5], "expected": 19.5}, {"input": [-74.0, 20.0], "expected": 20.0}, {"input": [-74.0, 20.5], "expected": 20.5}, {"input": [-74.0, 21.0], "expected": 21.0}, {"input": [-74.0, 21.5], "expected": 21.5}, {"input": [-74.0, 22.0], "expected": 22.0}, {"input": [-74.0, 22.5], "expected": 22.5}, {"input": [-74.0, 23.0], "expected": 23.0}, {"input": [-74.0, 23.5], "expected": 23.5}, {"input": [-74.0, 24.0], "expected": 24.0}, {"input": [-74.0, 24.5], "expected": 24.5}, {"input": [-74.0, 25.0], "expected": 25.0}, {"input": [-74.0, 25.5], "expected": 25.5}, {"input": [-74.0, 26.0], "expected": 26.0}, {"input": [-74.0, 26.5], "expected": 26.5}, {"input": [-74.0, 27.0], "expected": 27.0}, {"input": [-74.0, 27.5], "expected": 27.5}, {"input": [-74.0, 28.0], "expected": 28.0}, {"input": [-74.0, 28.5], "expected": 28.5}, {"input": [-74.0, 29.0], "expected": 29.0}, {"input": [-74.0, 29.5], "expected": 29.5}, {"input": [-74.0, 30.0], "expected": 30.0}, {"input": [-74.0, 30.5], "expected": 30.5}, {"input": [-74.0, 31.0], "expected": 31.0}, {"input": [-74.0, 31.5], "expected": 31.5}, {"input": [-74.0, 32.0], "expected": 32.0}, {"input": [-74.0, 32.5], "expected": 32.5}, {"input": [-74.0, 33.0], "expected": 33.0}, {"input": [-74.0, 33.5], "expected": 33.5}, {"input": [-74.0, 34.0], "expected": 34.0}, {"input": [-74.0, 34.5], "expected": 34.5}, {"input": [-74.0, 35.0], "expected": 35.0}, {"input": [-74.0, 35.5], "expected": 35.5}, {"input": [-74.0, 36.0], "expected": 36.0}, {"input": [-74.0, 36.5], "expected": 36.5}, {"input": [-74.0, 37.0], "expected": 37.0}, {"input": [-74.0, 37.5], "expected": 37.5}, {"input": [-74.0, 38.0], "expected": 38.0}, {"input": [-74.0, 38.5], "expected": 38.5}, {"input": [-74.0, 39.0], "expected": 39.0}, {"input": [-74.0, 39.5], "expected": 39.5}, {"input": [-74.0, 40.0], "expected": 40.0}, {"input": [-74.0, 40.5], "expected": 40.5}, {"input": [-74.0, 41.0], "expected": 41.0}, {"input": [-74.0, 41.5], "expected": 41.5}, {"input": [-74.0, 42.0], "expected": 42.0}, {"input": [-74.0, 42.5], "expected": 42.5}, {"input": [-74.0, 43.0], "expected": 43.0}, {"input": [-74.0, 43.5], "expected": 43.5}, {"input": [-74.0, 44.0], "expected": 44.0}, {"input": [-74.0, 44.5], "expected": 44.5}, {"input": [-74.0, 45.0], "expected": 45.0}, {"input": [-74.0, 45.5], "expected": 45.5}, {"input": [-74.0, 46.0], "expected": 46.0}, {"input": [-74.0, 46.5], "expected": 46.5}, {"input": [-74.0, 47.0], "expected": 47.0}, {"input": [-74.0, 47.5], "expected": 47.5}, {"input": [-74.0, 48.0], "expected": 48.0}, {"input": [-74.0, 48.5], "expected": 48.5}, {"input": [-74.0, 49.0], "expected": 49.0}, {"input": [-74.0, 49.5], "expected": 49.5}, {"input": [-74.0, 50.0], "expected": 50.0}, {"input": [-74.0, 50.5], "expected": 50.5}, {"input": [-74.0, 51.0], "expected": 51.0}, {"input": [-74.0, 51.5], "expected": 51.5}, {"input": [-74.0, 52.0], "expected": 52.0}, {"input": [-74.0, 52.5], "expected": 52.5}, {"input": [-74.0, 53.0], "expected": 53.0}, {"input": [-74.0, 53.5], "expected": 53.5}, {"input": [-74.0, 54.0], "expected": 54.0}, {"input": [-74.0, 54.5], "expected": 54.5}, {"input": [-74.0, 55.0], "expected": 55.0}, {"input": [-74.0, 55.5], "expected": 55.5}, {"input": [-74.0, 56.0], "expected": 56.0}, {"input": [-74.0, 56.5], "expected": 56.5}, {"input": [-74.0, 57.0], "expected": 57.0}, {"input": [-74.0, 57.5], "expected": 57.5}, {"input": [-74.0, 58.0], "expected": 58.0}, {"input": [-74.0, 58.5], "expected": 58.5}, {"input": [-74.0, 59.0], "expected": 59.0}, {"input": [-74.0, 59.5], "expected": 59.5}, {"input": [-74.0, 60.0], "expected": 60.0}, {"input": [-74.0, 60.5], "expected": 60.5}, {"input": [-74.0, 61.0], "expected": 61.0}, {"input": [-74.0, 61.5], "expected": 61.5}, {"input": [-74.0, 62.0], "expected": 62.0}, {"input": [-74.0, 62.5], "expected": 62.5}, {"input": [-74.0, 63.0], "expected": 63.0}, {"input": [-74.0, 63.5], "expected": 63.5}, {"input": [-74.0, 64.0], "expected": 64.0}, {"input": [-74.0, 64.5], "expected": 64.5}, {"input": [-74.0, 65.0], "expected": 65.0}, {"input": [-74.0, 65.5], "expected": 65.5}, {"input": [-74.0, 66.0], "expected": 66.0}, {"input": [-74.0, 66.5], "expected": 66.5}, {"input": [-74.0, 67.0], "expected": 67.0}, {"input": [-74.0, 67.5], "expected": 67.5}, {"input": [-74.0, 68.0], "expected": 68.0}, {"input": [-74.0, 68.5], "expected": 68.5}, {"input": [-74.0, 69.0], "expected": 69.0}, {"input": [-74.0, 69.5], "expected": 69.5}, {"input": [-74.0, 70.0], "expected": 70.0}, {"input": [-74.0, 70.5], "expected": 70.5}, {"input": [-74.0, 71.0], "expected": 71.0}, {"input": [-74.0, 71.5], "expected": 71.5}, {"input": [-74.0, 72.0], "expected": 72.0}, {"input": [-74.0, 72.5], "expected": 72.5}, {"input": [-74.0, 73.0], "expected": 73.0}, {"input": [-74.0, 73.5], "expected": 73.5}, {"input": [-74.0, 74.0], "expected": 74.0}, {"input": [-74.0, 74.5], "expected": 74.5}, {"input": [-74.0, 75.0], "expected": 75.0}, {"input": [-74.0, 75.5], "expected": 75.5}, {"input": [-74.0, 76.0], "expected": 76.0}, {"input": [-74.0, 76.5], "expected": 76.5}, {"input": [-74.0, 77.0], "expected": 77.0}, {"input": [-74.0, 77.5], "expected": 77.5}, {"input": [-74.0, 78.0], "expected": 78.0}, {"input": [-74.0, 78.5], "expected": 78.5}, {"input": [-74.0, 79.0], "expected": 79.0}, {"input": [-74.0, 79.5], "expected": 79.5}, {"input": [-74.0, 80.0], "expected": 80.0}, {"input": [-74.0, 80.5], "expected": 80.5}, {"input": [-74.0, 81.0], "expected": 81.0}, {"input": [-74.0, 81.5], "expected": 81.5}, {"input": [-74.0, 82.0], "expected": 82.0}, {"input": [-74.0, 82.5], "expected": 82.5}, {"input": [-74.0, 83.0], "expected": 83.0}, {"input": [-74.0, 83.5], "expected": 83.5}, {"input": [-74.0, 84.0], "expected": 84.0}, {"input": [-74.0, 84.5], "expected": 84.5}, {"input": [-74.0, 85.0], "expected": 85.0}, {"input": [-74.0, 85.5], "expected": 85.5}, {"input": [-74.0, 86.0], "expected": 86.0}, {"input": [-74.0, 86.5], "expected": 86.5}, {"input": [-74.0, 87.0], "expected": 87.0}, {"input": [-74.0, 87.5], "expected": 87.5}, {"input": [-74.0, 88.0], "expected": 88.0}, {"input": [-74.0, 88.5], "expected": 88.5}, {"input": [-74.0, 89.0], "expected": 89.0}, {"input": [-74.0, 89.5], "expected": 89.5}, {"input": [-74.0, 90.0], "expected": 90.0}, {"input": [-74.0, 90.5], "expected": 90.5}, {"input": [-74.0, 91.0], "expected": 91.0}, {"input": [-74.0, 91.5], "expected": 91.5}, {"input": [-74.0, 92.0], "expected": 92.0}, {"input": [-74.0, 92.5], "expected": 92.5}, {"input": [-74.0, 93.0], "expected": 93.0}, {"input": [-74.0, 93.5], "expected": 93.5}, {"input": [-74.0, 94.0], "expected": 94.0}, {"input": [-74.0, 94.5], "expected": 94.5}, {"input": [-74.0, 95.0], "expected": 95.0}, {"input": [-74.0, 95.5], "expected": 95.5}, {"input": [-74.0, 96.0], "expected": 96.0}, {"input": [-74.0, 96.5], "expected": 96.5}, {"input": [-74.0, 97.0], "expected": 97.0}, {"input": [-74.0, 97.5], "expected": 97.5}, {"input": [-74.0, 98.0], "expected": 98.0}, {"input": [-74.0, 98.5], "expected": 98.5}, {"input": [-74.0, 99.0], "expected": 99.0}, {"input": [-74.0, 99.5], "expected": 99.5}, {"input": [-73.5, -100.0], "expected": -73.4999999999969}, {"input": [-73.5, -99.5], "expected": -73.49999999999488}, {"input": [-73.5, -99.0], "expected": -73.49999999999157}, {"input": [-73.5, -98.5], "expected": -73.49999999998612}, {"input": [-73.5, -98.0], "expected": -73.4999999999771}, {"input": [-73.5, -97.5], "expected": -73.49999999996224}, {"input": [-73.5, -97.0], "expected": -73.49999999993776}, {"input": [-73.5, -96.5], "expected": -73.49999999989738}, {"input": [-73.5, -96.0], "expected": -73.4999999998308}, {"input": [-73.5, -95.5], "expected": -73.49999999972106}, {"input": [-73.5, -95.0], "expected": -73.4999999995401}, {"input": [-73.5, -94.5], "expected": -73.49999999924174}, {"input": [-73.5, -94.0], "expected": -73.49999999874984}, {"input": [-73.5, -93.5], "expected": -73.49999999793884}, {"input": [-73.5, -93.0], "expected": -73.49999999660173}, {"input": [-73.5, -92.5], "expected": -73.4999999943972}, {"input": [-73.5, -92.0], "expected": -73.49999999076255}, {"input": [-73.5, -91.5], "expected": -73.49999998477001}, {"input": [-73.5, -91.0], "expected": -73.49999997489}, {"input": [-73.5, -90.5], "expected": -73.49999995860063}, {"input": [-73.5, -90.0], "expected": -73.49999993174397}, {"input": [-73.5, -89.5], "expected": -73.49999988746484}, {"input": [-73.5, -89.0], "expected": -73.49999981446088}, {"input": [-73.5, -88.5], "expected": -73.49999969409772}, {"input": [-73.5, -88.0], "expected": -73.49999949565246}, {"input": [-73.5, -87.5], "expected": -73.49999916847163}, {"input": [-73.5, -87.0], "expected": -73.49999862904185}, {"input": [-73.5, -86.5], "expected": -73.49999773967315}, {"input": [-73.5, -86.0], "expected": -73.49999627335377}, {"input": [-73.5, -85.5], "expected": -73.49999385580652}, {"input": [-73.5, -85.0], "expected": -73.49998986995772}, {"input": [-73.5, -84.5], "expected": -73.49998329843868}, {"input": [-73.5, -84.0], "expected": -73.49997246392977}, {"input": [-73.5, -83.5], "expected": -73.49995460110078}, {"input": [-73.5, -83.0], "expected": -73.49992515097136}, {"input": [-73.5, -82.5], "expected": -73.49987659781027}, {"input": [-73.5, -82.0], "expected": -73.49979655232787}, {"input": [-73.5, -81.5], "expected": -73.4996645936271}, {"input": [-73.5, -81.0], "expected": -73.49944706852465}, {"input": [-73.5, -80.5], "expected": -73.49908853354623}, {"input": [-73.5, -80.0], "expected": -73.49849768984025}, {"input": [-73.5, -79.5], "expected": -73.49752431486228}, {"input": [-73.5, -79.0], "expected": -73.49592155672943}, {"input": [-73.5, -78.5], "expected": -73.49328465151088}, {"input": [-73.5, -78.0], "expected": -73.4889522551514}, {"input": [-73.5, -77.5], "expected": -73.4818500720822}, {"input": [-73.5, -77.0], "expected": -73.47024958172737}, {"input": [-73.5, -76.5], "expected": -73.45141264842626}, {"input": [-73.5, -76.0], "expected": -73.42111026570745}, {"input": [-73.5, -75.5], "expected": -73.37307198895702}, {"input": [-73.5, -75.0], "expected": -73.29858672201725}, {"input": [-73.5, -74.5], "expected": -73.18673831248178}, {"input": [-73.5, -74.0], "expected": -73.0259230158199}, {"input": [-73.5, -73.5], "expected": -72.80685281944005}, {"input": [-73.5, -73.0], "expected": -72.5259230158199}, {"input": [-73.5, -72.5], "expected": -72.18673831248178}, {"input": [-73.5, -72.0], "expected": -71.79858672201725}, {"input": [-73.5, -71.5], "expected": -71.37307198895702}, {"input": [-73.5, -71.0], "expected": -70.92111026570745}, {"input": [-73.5, -70.5], "expected": -70.45141264842626}, {"input": [-73.5, -70.0], "expected": -69.97024958172737}, {"input": [-73.5, -69.5], "expected": -69.4818500720822}, {"input": [-73.5, -69.0], "expected": -68.9889522551514}, {"input": [-73.5, -68.5], "expected": -68.49328465151088}, {"input": [-73.5, -68.0], "expected": -67.99592155672943}, {"input": [-73.5, -67.5], "expected": -67.49752431486228}, {"input": [-73.5, -67.0], "expected": -66.99849768984025}, {"input": [-73.5, -66.5], "expected": -66.49908853354623}, {"input": [-73.5, -66.0], "expected": -65.99944706852465}, {"input": [-73.5, -65.5], "expected": -65.4996645936271}, {"input": [-73.5, -65.0], "expected": -64.99979655232787}, {"input": [-73.5, -64.5], "expected": -64.49987659781027}, {"input": [-73.5, -64.0], "expected": -63.99992515097137}, {"input": [-73.5, -63.5], "expected": -63.49995460110078}, {"input": [-73.5, -63.0], "expected": -62.99997246392977}, {"input": [-73.5, -62.5], "expected": -62.49998329843868}, {"input": [-73.5, -62.0], "expected": -61.99998986995771}, {"input": [-73.5, -61.5], "expected": -61.49999385580652}, {"input": [-73.5, -61.0], "expected": -60.99999627335377}, {"input": [-73.5, -60.5], "expected": -60.49999773967315}, {"input": [-73.5, -60.0], "expected": -59.999998629041855}, {"input": [-73.5, -59.5], "expected": -59.499999168471625}, {"input": [-73.5, -59.0], "expected": -58.99999949565247}, {"input": [-73.5, -58.5], "expected": -58.499999694097724}, {"input": [-73.5, -58.0], "expected": -57.99999981446088}, {"input": [-73.5, -57.5], "expected": -57.49999988746483}, {"input": [-73.5, -57.0], "expected": -56.99999993174397}, {"input": [-73.5, -56.5], "expected": -56.499999958600625}, {"input": [-73.5, -56.0], "expected": -55.99999997489001}, {"input": [-73.5, -55.5], "expected": -55.49999998477002}, {"input": [-73.5, -55.0], "expected": -54.999999990762554}, {"input": [-73.5, -54.5], "expected": -54.49999999439721}, {"input": [-73.5, -54.0], "expected": -53.99999999660173}, {"input": [-73.5, -53.5], "expected": -53.49999999793884}, {"input": [-73.5, -53.0], "expected": -52.99999999874985}, {"input": [-73.5, -52.5], "expected": -52.499999999241744}, {"input": [-73.5, -52.0], "expected": -51.999999999540094}, {"input": [-73.5, -51.5], "expected": -51.499999999721055}, {"input": [-73.5, -51.0], "expected": -50.99999999983081}, {"input": [-73.5, -50.5], "expected": -50.49999999989738}, {"input": [-73.5, -50.0], "expected": -49.99999999993776}, {"input": [-73.5, -49.5], "expected": -49.49999999996225}, {"input": [-73.5, -49.0], "expected": -48.9999999999771}, {"input": [-73.5, -48.5], "expected": -48.49999999998611}, {"input": [-73.5, -48.0], "expected": -47.99999999999158}, {"input": [-73.5, -47.5], "expected": -47.49999999999489}, {"input": [-73.5, -47.0], "expected": -46.9999999999969}, {"input": [-73.5, -46.5], "expected": -46.49999999999812}, {"input": [-73.5, -46.0], "expected": -45.99999999999886}, {"input": [-73.5, -45.5], "expected": -45.49999999999931}, {"input": [-73.5, -45.0], "expected": -44.99999999999958}, {"input": [-73.5, -44.5], "expected": -44.499999999999744}, {"input": [-73.5, -44.0], "expected": -43.999999999999844}, {"input": [-73.5, -43.5], "expected": -43.49999999999991}, {"input": [-73.5, -43.0], "expected": -42.99999999999994}, {"input": [-73.5, -42.5], "expected": -42.499999999999964}, {"input": [-73.5, -42.0], "expected": -41.99999999999998}, {"input": [-73.5, -41.5], "expected": -41.499999999999986}, {"input": [-73.5, -41.0], "expected": -40.99999999999999}, {"input": [-73.5, -40.5], "expected": -40.49999999999999}, {"input": [-73.5, -40.0], "expected": -40.0}, {"input": [-73.5, -39.5], "expected": -39.5}, {"input": [-73.5, -39.0], "expected": -39.0}, {"input": [-73.5, -38.5], "expected": -38.5}, {"input": [-73.5, -38.0], "expected": -38.0}, {"input": [-73.5, -37.5], "expected": -37.5}, {"input": [-73.5, -37.0], "expected": -37.0}, {"input": [-73.5, -36.5], "expected": -36.5}, {"input": [-73.5, -36.0], "expected": -36.0}, {"input": [-73.5, -35.5], "expected": -35.5}, {"input": [-73.5, -35.0], "expected": -35.0}, {"input": [-73.5, -34.5], "expected": -34.5}, {"input": [-73.5, -34.0], "expected": -34.0}, {"input": [-73.5, -33.5], "expected": -33.5}, {"input": [-73.5, -33.0], "expected": -33.0}, {"input": [-73.5, -32.5], "expected": -32.5}, {"input": [-73.5, -32.0], "expected": -32.0}, {"input": [-73.5, -31.5], "expected": -31.5}, {"input": [-73.5, -31.0], "expected": -31.0}, {"input": [-73.5, -30.5], "expected": -30.5}, {"input": [-73.5, -30.0], "expected": -30.0}, {"input": [-73.5, -29.5], "expected": -29.5}, {"input": [-73.5, -29.0], "expected": -29.0}, {"input": [-73.5, -28.5], "expected": -28.5}, {"input": [-73.5, -28.0], "expected": -28.0}, {"input": [-73.5, -27.5], "expected": -27.5}, {"input": [-73.5, -27.0], "expected": -27.0}, {"input": [-73.5, -26.5], "expected": -26.5}, {"input": [-73.5, -26.0], "expected": -26.0}, {"input": [-73.5, -25.5], "expected": -25.5}, {"input": [-73.5, -25.0], "expected": -25.0}, {"input": [-73.5, -24.5], "expected": -24.5}, {"input": [-73.5, -24.0], "expected": -24.0}, {"input": [-73.5, -23.5], "expected": -23.5}, {"input": [-73.5, -23.0], "expected": -23.0}, {"input": [-73.5, -22.5], "expected": -22.5}, {"input": [-73.5, -22.0], "expected": -22.0}, {"input": [-73.5, -21.5], "expected": -21.5}, {"input": [-73.5, -21.0], "expected": -21.0}, {"input": [-73.5, -20.5], "expected": -20.5}, {"input": [-73.5, -20.0], "expected": -20.0}, {"input": [-73.5, -19.5], "expected": -19.5}, {"input": [-73.5, -19.0], "expected": -19.0}, {"input": [-73.5, -18.5], "expected": -18.5}, {"input": [-73.5, -18.0], "expected": -18.0}, {"input": [-73.5, -17.5], "expected": -17.5}, {"input": [-73.5, -17.0], "expected": -17.0}, {"input": [-73.5, -16.5], "expected": -16.5}, {"input": [-73.5, -16.0], "expected": -16.0}, {"input": [-73.5, -15.5], "expected": -15.5}, {"input": [-73.5, -15.0], "expected": -15.0}, {"input": [-73.5, -14.5], "expected": -14.5}, {"input": [-73.5, -14.0], "expected": -14.0}, {"input": [-73.5, -13.5], "expected": -13.5}, {"input": [-73.5, -13.0], "expected": -13.0}, {"input": [-73.5, -12.5], "expected": -12.5}, {"input": [-73.5, -12.0], "expected": -12.0}, {"input": [-73.5, -11.5], "expected": -11.5}, {"input": [-73.5, -11.0], "expected": -11.0}, {"input": [-73.5, -10.5], "expected": -10.5}, {"input": [-73.5, -10.0], "expected": -10.0}, {"input": [-73.5, -9.5], "expected": -9.5}, {"input": [-73.5, -9.0], "expected": -9.0}, {"input": [-73.5, -8.5], "expected": -8.5}, {"input": [-73.5, -8.0], "expected": -8.0}, {"input": [-73.5, -7.5], "expected": -7.5}, {"input": [-73.5, -7.0], "expected": -7.0}, {"input": [-73.5, -6.5], "expected": -6.5}, {"input": [-73.5, -6.0], "expected": -6.0}, {"input": [-73.5, -5.5], "expected": -5.5}, {"input": [-73.5, -5.0], "expected": -5.0}, {"input": [-73.5, -4.5], "expected": -4.5}, {"input": [-73.5, -4.0], "expected": -4.0}, {"input": [-73.5, -3.5], "expected": -3.5}, {"input": [-73.5, -3.0], "expected": -3.0}, {"input": [-73.5, -2.5], "expected": -2.5}, {"input": [-73.5, -2.0], "expected": -2.0}, {"input": [-73.5, -1.5], "expected": -1.5}, {"input": [-73.5, -1.0], "expected": -1.0}, {"input": [-73.5, -0.5], "expected": -0.5}, {"input": [-73.5, 0.0], "expected": 1.2004817995138824e-32}, {"input": [-73.5, 0.5], "expected": 0.5}, {"input": [-73.5, 1.0], "expected": 1.0}, {"input": [-73.5, 1.5], "expected": 1.5}, {"input": [-73.5, 2.0], "expected": 2.0}, {"input": [-73.5, 2.5], "expected": 2.5}, {"input": [-73.5, 3.0], "expected": 3.0}, {"input": [-73.5, 3.5], "expected": 3.5}, {"input": [-73.5, 4.0], "expected": 4.0}, {"input": [-73.5, 4.5], "expected": 4.5}, {"input": [-73.5, 5.0], "expected": 5.0}, {"input": [-73.5, 5.5], "expected": 5.5}, {"input": [-73.5, 6.0], "expected": 6.0}, {"input": [-73.5, 6.5], "expected": 6.5}, {"input": [-73.5, 7.0], "expected": 7.0}, {"input": [-73.5, 7.5], "expected": 7.5}, {"input": [-73.5, 8.0], "expected": 8.0}, {"input": [-73.5, 8.5], "expected": 8.5}, {"input": [-73.5, 9.0], "expected": 9.0}, {"input": [-73.5, 9.5], "expected": 9.5}, {"input": [-73.5, 10.0], "expected": 10.0}, {"input": [-73.5, 10.5], "expected": 10.5}, {"input": [-73.5, 11.0], "expected": 11.0}, {"input": [-73.5, 11.5], "expected": 11.5}, {"input": [-73.5, 12.0], "expected": 12.0}, {"input": [-73.5, 12.5], "expected": 12.5}, {"input": [-73.5, 13.0], "expected": 13.0}, {"input": [-73.5, 13.5], "expected": 13.5}, {"input": [-73.5, 14.0], "expected": 14.0}, {"input": [-73.5, 14.5], "expected": 14.5}, {"input": [-73.5, 15.0], "expected": 15.0}, {"input": [-73.5, 15.5], "expected": 15.5}, {"input": [-73.5, 16.0], "expected": 16.0}, {"input": [-73.5, 16.5], "expected": 16.5}, {"input": [-73.5, 17.0], "expected": 17.0}, {"input": [-73.5, 17.5], "expected": 17.5}, {"input": [-73.5, 18.0], "expected": 18.0}, {"input": [-73.5, 18.5], "expected": 18.5}, {"input": [-73.5, 19.0], "expected": 19.0}, {"input": [-73.5, 19.5], "expected": 19.5}, {"input": [-73.5, 20.0], "expected": 20.0}, {"input": [-73.5, 20.5], "expected": 20.5}, {"input": [-73.5, 21.0], "expected": 21.0}, {"input": [-73.5, 21.5], "expected": 21.5}, {"input": [-73.5, 22.0], "expected": 22.0}, {"input": [-73.5, 22.5], "expected": 22.5}, {"input": [-73.5, 23.0], "expected": 23.0}, {"input": [-73.5, 23.5], "expected": 23.5}, {"input": [-73.5, 24.0], "expected": 24.0}, {"input": [-73.5, 24.5], "expected": 24.5}, {"input": [-73.5, 25.0], "expected": 25.0}, {"input": [-73.5, 25.5], "expected": 25.5}, {"input": [-73.5, 26.0], "expected": 26.0}, {"input": [-73.5, 26.5], "expected": 26.5}, {"input": [-73.5, 27.0], "expected": 27.0}, {"input": [-73.5, 27.5], "expected": 27.5}, {"input": [-73.5, 28.0], "expected": 28.0}, {"input": [-73.5, 28.5], "expected": 28.5}, {"input": [-73.5, 29.0], "expected": 29.0}, {"input": [-73.5, 29.5], "expected": 29.5}, {"input": [-73.5, 30.0], "expected": 30.0}, {"input": [-73.5, 30.5], "expected": 30.5}, {"input": [-73.5, 31.0], "expected": 31.0}, {"input": [-73.5, 31.5], "expected": 31.5}, {"input": [-73.5, 32.0], "expected": 32.0}, {"input": [-73.5, 32.5], "expected": 32.5}, {"input": [-73.5, 33.0], "expected": 33.0}, {"input": [-73.5, 33.5], "expected": 33.5}, {"input": [-73.5, 34.0], "expected": 34.0}, {"input": [-73.5, 34.5], "expected": 34.5}, {"input": [-73.5, 35.0], "expected": 35.0}, {"input": [-73.5, 35.5], "expected": 35.5}, {"input": [-73.5, 36.0], "expected": 36.0}, {"input": [-73.5, 36.5], "expected": 36.5}, {"input": [-73.5, 37.0], "expected": 37.0}, {"input": [-73.5, 37.5], "expected": 37.5}, {"input": [-73.5, 38.0], "expected": 38.0}, {"input": [-73.5, 38.5], "expected": 38.5}, {"input": [-73.5, 39.0], "expected": 39.0}, {"input": [-73.5, 39.5], "expected": 39.5}, {"input": [-73.5, 40.0], "expected": 40.0}, {"input": [-73.5, 40.5], "expected": 40.5}, {"input": [-73.5, 41.0], "expected": 41.0}, {"input": [-73.5, 41.5], "expected": 41.5}, {"input": [-73.5, 42.0], "expected": 42.0}, {"input": [-73.5, 42.5], "expected": 42.5}, {"input": [-73.5, 43.0], "expected": 43.0}, {"input": [-73.5, 43.5], "expected": 43.5}, {"input": [-73.5, 44.0], "expected": 44.0}, {"input": [-73.5, 44.5], "expected": 44.5}, {"input": [-73.5, 45.0], "expected": 45.0}, {"input": [-73.5, 45.5], "expected": 45.5}, {"input": [-73.5, 46.0], "expected": 46.0}, {"input": [-73.5, 46.5], "expected": 46.5}, {"input": [-73.5, 47.0], "expected": 47.0}, {"input": [-73.5, 47.5], "expected": 47.5}, {"input": [-73.5, 48.0], "expected": 48.0}, {"input": [-73.5, 48.5], "expected": 48.5}, {"input": [-73.5, 49.0], "expected": 49.0}, {"input": [-73.5, 49.5], "expected": 49.5}, {"input": [-73.5, 50.0], "expected": 50.0}, {"input": [-73.5, 50.5], "expected": 50.5}, {"input": [-73.5, 51.0], "expected": 51.0}, {"input": [-73.5, 51.5], "expected": 51.5}, {"input": [-73.5, 52.0], "expected": 52.0}, {"input": [-73.5, 52.5], "expected": 52.5}, {"input": [-73.5, 53.0], "expected": 53.0}, {"input": [-73.5, 53.5], "expected": 53.5}, {"input": [-73.5, 54.0], "expected": 54.0}, {"input": [-73.5, 54.5], "expected": 54.5}, {"input": [-73.5, 55.0], "expected": 55.0}, {"input": [-73.5, 55.5], "expected": 55.5}, {"input": [-73.5, 56.0], "expected": 56.0}, {"input": [-73.5, 56.5], "expected": 56.5}, {"input": [-73.5, 57.0], "expected": 57.0}, {"input": [-73.5, 57.5], "expected": 57.5}, {"input": [-73.5, 58.0], "expected": 58.0}, {"input": [-73.5, 58.5], "expected": 58.5}, {"input": [-73.5, 59.0], "expected": 59.0}, {"input": [-73.5, 59.5], "expected": 59.5}, {"input": [-73.5, 60.0], "expected": 60.0}, {"input": [-73.5, 60.5], "expected": 60.5}, {"input": [-73.5, 61.0], "expected": 61.0}, {"input": [-73.5, 61.5], "expected": 61.5}, {"input": [-73.5, 62.0], "expected": 62.0}, {"input": [-73.5, 62.5], "expected": 62.5}, {"input": [-73.5, 63.0], "expected": 63.0}, {"input": [-73.5, 63.5], "expected": 63.5}, {"input": [-73.5, 64.0], "expected": 64.0}, {"input": [-73.5, 64.5], "expected": 64.5}, {"input": [-73.5, 65.0], "expected": 65.0}, {"input": [-73.5, 65.5], "expected": 65.5}, {"input": [-73.5, 66.0], "expected": 66.0}, {"input": [-73.5, 66.5], "expected": 66.5}, {"input": [-73.5, 67.0], "expected": 67.0}, {"input": [-73.5, 67.5], "expected": 67.5}, {"input": [-73.5, 68.0], "expected": 68.0}, {"input": [-73.5, 68.5], "expected": 68.5}, {"input": [-73.5, 69.0], "expected": 69.0}, {"input": [-73.5, 69.5], "expected": 69.5}, {"input": [-73.5, 70.0], "expected": 70.0}, {"input": [-73.5, 70.5], "expected": 70.5}, {"input": [-73.5, 71.0], "expected": 71.0}, {"input": [-73.5, 71.5], "expected": 71.5}, {"input": [-73.5, 72.0], "expected": 72.0}, {"input": [-73.5, 72.5], "expected": 72.5}, {"input": [-73.5, 73.0], "expected": 73.0}, {"input": [-73.5, 73.5], "expected": 73.5}, {"input": [-73.5, 74.0], "expected": 74.0}, {"input": [-73.5, 74.5], "expected": 74.5}, {"input": [-73.5, 75.0], "expected": 75.0}, {"input": [-73.5, 75.5], "expected": 75.5}, {"input": [-73.5, 76.0], "expected": 76.0}, {"input": [-73.5, 76.5], "expected": 76.5}, {"input": [-73.5, 77.0], "expected": 77.0}, {"input": [-73.5, 77.5], "expected": 77.5}, {"input": [-73.5, 78.0], "expected": 78.0}, {"input": [-73.5, 78.5], "expected": 78.5}, {"input": [-73.5, 79.0], "expected": 79.0}, {"input": [-73.5, 79.5], "expected": 79.5}, {"input": [-73.5, 80.0], "expected": 80.0}, {"input": [-73.5, 80.5], "expected": 80.5}, {"input": [-73.5, 81.0], "expected": 81.0}, {"input": [-73.5, 81.5], "expected": 81.5}, {"input": [-73.5, 82.0], "expected": 82.0}, {"input": [-73.5, 82.5], "expected": 82.5}, {"input": [-73.5, 83.0], "expected": 83.0}, {"input": [-73.5, 83.5], "expected": 83.5}, {"input": [-73.5, 84.0], "expected": 84.0}, {"input": [-73.5, 84.5], "expected": 84.5}, {"input": [-73.5, 85.0], "expected": 85.0}, {"input": [-73.5, 85.5], "expected": 85.5}, {"input": [-73.5, 86.0], "expected": 86.0}, {"input": [-73.5, 86.5], "expected": 86.5}, {"input": [-73.5, 87.0], "expected": 87.0}, {"input": [-73.5, 87.5], "expected": 87.5}, {"input": [-73.5, 88.0], "expected": 88.0}, {"input": [-73.5, 88.5], "expected": 88.5}, {"input": [-73.5, 89.0], "expected": 89.0}, {"input": [-73.5, 89.5], "expected": 89.5}, {"input": [-73.5, 90.0], "expected": 90.0}, {"input": [-73.5, 90.5], "expected": 90.5}, {"input": [-73.5, 91.0], "expected": 91.0}, {"input": [-73.5, 91.5], "expected": 91.5}, {"input": [-73.5, 92.0], "expected": 92.0}, {"input": [-73.5, 92.5], "expected": 92.5}, {"input": [-73.5, 93.0], "expected": 93.0}, {"input": [-73.5, 93.5], "expected": 93.5}, {"input": [-73.5, 94.0], "expected": 94.0}, {"input": [-73.5, 94.5], "expected": 94.5}, {"input": [-73.5, 95.0], "expected": 95.0}, {"input": [-73.5, 95.5], "expected": 95.5}, {"input": [-73.5, 96.0], "expected": 96.0}, {"input": [-73.5, 96.5], "expected": 96.5}, {"input": [-73.5, 97.0], "expected": 97.0}, {"input": [-73.5, 97.5], "expected": 97.5}, {"input": [-73.5, 98.0], "expected": 98.0}, {"input": [-73.5, 98.5], "expected": 98.5}, {"input": [-73.5, 99.0], "expected": 99.0}, {"input": [-73.5, 99.5], "expected": 99.5}, {"input": [-73.0, -100.0], "expected": -72.99999999999812}, {"input": [-73.0, -99.5], "expected": -72.9999999999969}, {"input": [-73.0, -99.0], "expected": -72.99999999999488}, {"input": [-73.0, -98.5], "expected": -72.99999999999157}, {"input": [-73.0, -98.0], "expected": -72.99999999998612}, {"input": [-73.0, -97.5], "expected": -72.9999999999771}, {"input": [-73.0, -97.0], "expected": -72.99999999996224}, {"input": [-73.0, -96.5], "expected": -72.99999999993776}, {"input": [-73.0, -96.0], "expected": -72.99999999989738}, {"input": [-73.0, -95.5], "expected": -72.9999999998308}, {"input": [-73.0, -95.0], "expected": -72.99999999972106}, {"input": [-73.0, -94.5], "expected": -72.9999999995401}, {"input": [-73.0, -94.0], "expected": -72.99999999924174}, {"input": [-73.0, -93.5], "expected": -72.99999999874984}, {"input": [-73.0, -93.0], "expected": -72.99999999793884}, {"input": [-73.0, -92.5], "expected": -72.99999999660173}, {"input": [-73.0, -92.0], "expected": -72.9999999943972}, {"input": [-73.0, -91.5], "expected": -72.99999999076255}, {"input": [-73.0, -91.0], "expected": -72.99999998477001}, {"input": [-73.0, -90.5], "expected": -72.99999997489}, {"input": [-73.0, -90.0], "expected": -72.99999995860063}, {"input": [-73.0, -89.5], "expected": -72.99999993174397}, {"input": [-73.0, -89.0], "expected": -72.99999988746484}, {"input": [-73.0, -88.5], "expected": -72.99999981446088}, {"input": [-73.0, -88.0], "expected": -72.99999969409772}, {"input": [-73.0, -87.5], "expected": -72.99999949565246}, {"input": [-73.0, -87.0], "expected": -72.99999916847163}, {"input": [-73.0, -86.5], "expected": -72.99999862904185}, {"input": [-73.0, -86.0], "expected": -72.99999773967315}, {"input": [-73.0, -85.5], "expected": -72.99999627335377}, {"input": [-73.0, -85.0], "expected": -72.99999385580652}, {"input": [-73.0, -84.5], "expected": -72.99998986995772}, {"input": [-73.0, -84.0], "expected": -72.99998329843868}, {"input": [-73.0, -83.5], "expected": -72.99997246392977}, {"input": [-73.0, -83.0], "expected": -72.99995460110078}, {"input": [-73.0, -82.5], "expected": -72.99992515097136}, {"input": [-73.0, -82.0], "expected": -72.99987659781027}, {"input": [-73.0, -81.5], "expected": -72.99979655232787}, {"input": [-73.0, -81.0], "expected": -72.9996645936271}, {"input": [-73.0, -80.5], "expected": -72.99944706852465}, {"input": [-73.0, -80.0], "expected": -72.99908853354623}, {"input": [-73.0, -79.5], "expected": -72.99849768984025}, {"input": [-73.0, -79.0], "expected": -72.99752431486228}, {"input": [-73.0, -78.5], "expected": -72.99592155672943}, {"input": [-73.0, -78.0], "expected": -72.99328465151088}, {"input": [-73.0, -77.5], "expected": -72.9889522551514}, {"input": [-73.0, -77.0], "expected": -72.9818500720822}, {"input": [-73.0, -76.5], "expected": -72.97024958172737}, {"input": [-73.0, -76.0], "expected": -72.95141264842626}, {"input": [-73.0, -75.5], "expected": -72.92111026570745}, {"input": [-73.0, -75.0], "expected": -72.87307198895702}, {"input": [-73.0, -74.5], "expected": -72.79858672201725}, {"input": [-73.0, -74.0], "expected": -72.68673831248178}, {"input": [-73.0, -73.5], "expected": -72.5259230158199}, {"input": [-73.0, -73.0], "expected": -72.30685281944005}, {"input": [-73.0, -72.5], "expected": -72.0259230158199}, {"input": [-73.0, -72.0], "expected": -71.68673831248178}, {"input": [-73.0, -71.5], "expected": -71.29858672201725}, {"input": [-73.0, -71.0], "expected": -70.87307198895702}, {"input": [-73.0, -70.5], "expected": -70.42111026570745}, {"input": [-73.0, -70.0], "expected": -69.95141264842626}, {"input": [-73.0, -69.5], "expected": -69.47024958172737}, {"input": [-73.0, -69.0], "expected": -68.9818500720822}, {"input": [-73.0, -68.5], "expected": -68.4889522551514}, {"input": [-73.0, -68.0], "expected": -67.99328465151088}, {"input": [-73.0, -67.5], "expected": -67.49592155672943}, {"input": [-73.0, -67.0], "expected": -66.99752431486228}, {"input": [-73.0, -66.5], "expected": -66.49849768984025}, {"input": [-73.0, -66.0], "expected": -65.99908853354623}, {"input": [-73.0, -65.5], "expected": -65.49944706852465}, {"input": [-73.0, -65.0], "expected": -64.9996645936271}, {"input": [-73.0, -64.5], "expected": -64.49979655232787}, {"input": [-73.0, -64.0], "expected": -63.99987659781028}, {"input": [-73.0, -63.5], "expected": -63.49992515097137}, {"input": [-73.0, -63.0], "expected": -62.99995460110078}, {"input": [-73.0, -62.5], "expected": -62.49997246392977}, {"input": [-73.0, -62.0], "expected": -61.99998329843868}, {"input": [-73.0, -61.5], "expected": -61.49998986995771}, {"input": [-73.0, -61.0], "expected": -60.99999385580652}, {"input": [-73.0, -60.5], "expected": -60.49999627335377}, {"input": [-73.0, -60.0], "expected": -59.99999773967315}, {"input": [-73.0, -59.5], "expected": -59.499998629041855}, {"input": [-73.0, -59.0], "expected": -58.999999168471625}, {"input": [-73.0, -58.5], "expected": -58.49999949565247}, {"input": [-73.0, -58.0], "expected": -57.999999694097724}, {"input": [-73.0, -57.5], "expected": -57.49999981446088}, {"input": [-73.0, -57.0], "expected": -56.99999988746483}, {"input": [-73.0, -56.5], "expected": -56.49999993174397}, {"input": [-73.0, -56.0], "expected": -55.999999958600625}, {"input": [-73.0, -55.5], "expected": -55.49999997489001}, {"input": [-73.0, -55.0], "expected": -54.99999998477002}, {"input": [-73.0, -54.5], "expected": -54.499999990762554}, {"input": [-73.0, -54.0], "expected": -53.99999999439721}, {"input": [-73.0, -53.5], "expected": -53.49999999660173}, {"input": [-73.0, -53.0], "expected": -52.99999999793884}, {"input": [-73.0, -52.5], "expected": -52.49999999874985}, {"input": [-73.0, -52.0], "expected": -51.999999999241744}, {"input": [-73.0, -51.5], "expected": -51.499999999540094}, {"input": [-73.0, -51.0], "expected": -50.999999999721055}, {"input": [-73.0, -50.5], "expected": -50.49999999983081}, {"input": [-73.0, -50.0], "expected": -49.99999999989738}, {"input": [-73.0, -49.5], "expected": -49.49999999993776}, {"input": [-73.0, -49.0], "expected": -48.99999999996225}, {"input": [-73.0, -48.5], "expected": -48.4999999999771}, {"input": [-73.0, -48.0], "expected": -47.99999999998611}, {"input": [-73.0, -47.5], "expected": -47.49999999999158}, {"input": [-73.0, -47.0], "expected": -46.99999999999489}, {"input": [-73.0, -46.5], "expected": -46.4999999999969}, {"input": [-73.0, -46.0], "expected": -45.99999999999812}, {"input": [-73.0, -45.5], "expected": -45.49999999999886}, {"input": [-73.0, -45.0], "expected": -44.99999999999931}, {"input": [-73.0, -44.5], "expected": -44.49999999999958}, {"input": [-73.0, -44.0], "expected": -43.999999999999744}, {"input": [-73.0, -43.5], "expected": -43.499999999999844}, {"input": [-73.0, -43.0], "expected": -42.99999999999991}, {"input": [-73.0, -42.5], "expected": -42.49999999999994}, {"input": [-73.0, -42.0], "expected": -41.999999999999964}, {"input": [-73.0, -41.5], "expected": -41.49999999999998}, {"input": [-73.0, -41.0], "expected": -40.999999999999986}, {"input": [-73.0, -40.5], "expected": -40.49999999999999}, {"input": [-73.0, -40.0], "expected": -39.99999999999999}, {"input": [-73.0, -39.5], "expected": -39.5}, {"input": [-73.0, -39.0], "expected": -39.0}, {"input": [-73.0, -38.5], "expected": -38.5}, {"input": [-73.0, -38.0], "expected": -38.0}, {"input": [-73.0, -37.5], "expected": -37.5}, {"input": [-73.0, -37.0], "expected": -37.0}, {"input": [-73.0, -36.5], "expected": -36.5}, {"input": [-73.0, -36.0], "expected": -36.0}, {"input": [-73.0, -35.5], "expected": -35.5}, {"input": [-73.0, -35.0], "expected": -35.0}, {"input": [-73.0, -34.5], "expected": -34.5}, {"input": [-73.0, -34.0], "expected": -34.0}, {"input": [-73.0, -33.5], "expected": -33.5}, {"input": [-73.0, -33.0], "expected": -33.0}, {"input": [-73.0, -32.5], "expected": -32.5}, {"input": [-73.0, -32.0], "expected": -32.0}, {"input": [-73.0, -31.5], "expected": -31.5}, {"input": [-73.0, -31.0], "expected": -31.0}, {"input": [-73.0, -30.5], "expected": -30.5}, {"input": [-73.0, -30.0], "expected": -30.0}, {"input": [-73.0, -29.5], "expected": -29.5}, {"input": [-73.0, -29.0], "expected": -29.0}, {"input": [-73.0, -28.5], "expected": -28.5}, {"input": [-73.0, -28.0], "expected": -28.0}, {"input": [-73.0, -27.5], "expected": -27.5}, {"input": [-73.0, -27.0], "expected": -27.0}, {"input": [-73.0, -26.5], "expected": -26.5}, {"input": [-73.0, -26.0], "expected": -26.0}, {"input": [-73.0, -25.5], "expected": -25.5}, {"input": [-73.0, -25.0], "expected": -25.0}, {"input": [-73.0, -24.5], "expected": -24.5}, {"input": [-73.0, -24.0], "expected": -24.0}, {"input": [-73.0, -23.5], "expected": -23.5}, {"input": [-73.0, -23.0], "expected": -23.0}, {"input": [-73.0, -22.5], "expected": -22.5}, {"input": [-73.0, -22.0], "expected": -22.0}, {"input": [-73.0, -21.5], "expected": -21.5}, {"input": [-73.0, -21.0], "expected": -21.0}, {"input": [-73.0, -20.5], "expected": -20.5}, {"input": [-73.0, -20.0], "expected": -20.0}, {"input": [-73.0, -19.5], "expected": -19.5}, {"input": [-73.0, -19.0], "expected": -19.0}, {"input": [-73.0, -18.5], "expected": -18.5}, {"input": [-73.0, -18.0], "expected": -18.0}, {"input": [-73.0, -17.5], "expected": -17.5}, {"input": [-73.0, -17.0], "expected": -17.0}, {"input": [-73.0, -16.5], "expected": -16.5}, {"input": [-73.0, -16.0], "expected": -16.0}, {"input": [-73.0, -15.5], "expected": -15.5}, {"input": [-73.0, -15.0], "expected": -15.0}, {"input": [-73.0, -14.5], "expected": -14.5}, {"input": [-73.0, -14.0], "expected": -14.0}, {"input": [-73.0, -13.5], "expected": -13.5}, {"input": [-73.0, -13.0], "expected": -13.0}, {"input": [-73.0, -12.5], "expected": -12.5}, {"input": [-73.0, -12.0], "expected": -12.0}, {"input": [-73.0, -11.5], "expected": -11.5}, {"input": [-73.0, -11.0], "expected": -11.0}, {"input": [-73.0, -10.5], "expected": -10.5}, {"input": [-73.0, -10.0], "expected": -10.0}, {"input": [-73.0, -9.5], "expected": -9.5}, {"input": [-73.0, -9.0], "expected": -9.0}, {"input": [-73.0, -8.5], "expected": -8.5}, {"input": [-73.0, -8.0], "expected": -8.0}, {"input": [-73.0, -7.5], "expected": -7.5}, {"input": [-73.0, -7.0], "expected": -7.0}, {"input": [-73.0, -6.5], "expected": -6.5}, {"input": [-73.0, -6.0], "expected": -6.0}, {"input": [-73.0, -5.5], "expected": -5.5}, {"input": [-73.0, -5.0], "expected": -5.0}, {"input": [-73.0, -4.5], "expected": -4.5}, {"input": [-73.0, -4.0], "expected": -4.0}, {"input": [-73.0, -3.5], "expected": -3.5}, {"input": [-73.0, -3.0], "expected": -3.0}, {"input": [-73.0, -2.5], "expected": -2.5}, {"input": [-73.0, -2.0], "expected": -2.0}, {"input": [-73.0, -1.5], "expected": -1.5}, {"input": [-73.0, -1.0], "expected": -1.0}, {"input": [-73.0, -0.5], "expected": -0.5}, {"input": [-73.0, 0.0], "expected": 1.9792598779469045e-32}, {"input": [-73.0, 0.5], "expected": 0.5}, {"input": [-73.0, 1.0], "expected": 1.0}, {"input": [-73.0, 1.5], "expected": 1.5}, {"input": [-73.0, 2.0], "expected": 2.0}, {"input": [-73.0, 2.5], "expected": 2.5}, {"input": [-73.0, 3.0], "expected": 3.0}, {"input": [-73.0, 3.5], "expected": 3.5}, {"input": [-73.0, 4.0], "expected": 4.0}, {"input": [-73.0, 4.5], "expected": 4.5}, {"input": [-73.0, 5.0], "expected": 5.0}, {"input": [-73.0, 5.5], "expected": 5.5}, {"input": [-73.0, 6.0], "expected": 6.0}, {"input": [-73.0, 6.5], "expected": 6.5}, {"input": [-73.0, 7.0], "expected": 7.0}, {"input": [-73.0, 7.5], "expected": 7.5}, {"input": [-73.0, 8.0], "expected": 8.0}, {"input": [-73.0, 8.5], "expected": 8.5}, {"input": [-73.0, 9.0], "expected": 9.0}, {"input": [-73.0, 9.5], "expected": 9.5}, {"input": [-73.0, 10.0], "expected": 10.0}, {"input": [-73.0, 10.5], "expected": 10.5}, {"input": [-73.0, 11.0], "expected": 11.0}, {"input": [-73.0, 11.5], "expected": 11.5}, {"input": [-73.0, 12.0], "expected": 12.0}, {"input": [-73.0, 12.5], "expected": 12.5}, {"input": [-73.0, 13.0], "expected": 13.0}, {"input": [-73.0, 13.5], "expected": 13.5}, {"input": [-73.0, 14.0], "expected": 14.0}, {"input": [-73.0, 14.5], "expected": 14.5}, {"input": [-73.0, 15.0], "expected": 15.0}, {"input": [-73.0, 15.5], "expected": 15.5}, {"input": [-73.0, 16.0], "expected": 16.0}, {"input": [-73.0, 16.5], "expected": 16.5}, {"input": [-73.0, 17.0], "expected": 17.0}, {"input": [-73.0, 17.5], "expected": 17.5}, {"input": [-73.0, 18.0], "expected": 18.0}, {"input": [-73.0, 18.5], "expected": 18.5}, {"input": [-73.0, 19.0], "expected": 19.0}, {"input": [-73.0, 19.5], "expected": 19.5}, {"input": [-73.0, 20.0], "expected": 20.0}, {"input": [-73.0, 20.5], "expected": 20.5}, {"input": [-73.0, 21.0], "expected": 21.0}, {"input": [-73.0, 21.5], "expected": 21.5}, {"input": [-73.0, 22.0], "expected": 22.0}, {"input": [-73.0, 22.5], "expected": 22.5}, {"input": [-73.0, 23.0], "expected": 23.0}, {"input": [-73.0, 23.5], "expected": 23.5}, {"input": [-73.0, 24.0], "expected": 24.0}, {"input": [-73.0, 24.5], "expected": 24.5}, {"input": [-73.0, 25.0], "expected": 25.0}, {"input": [-73.0, 25.5], "expected": 25.5}, {"input": [-73.0, 26.0], "expected": 26.0}, {"input": [-73.0, 26.5], "expected": 26.5}, {"input": [-73.0, 27.0], "expected": 27.0}, {"input": [-73.0, 27.5], "expected": 27.5}, {"input": [-73.0, 28.0], "expected": 28.0}, {"input": [-73.0, 28.5], "expected": 28.5}, {"input": [-73.0, 29.0], "expected": 29.0}, {"input": [-73.0, 29.5], "expected": 29.5}, {"input": [-73.0, 30.0], "expected": 30.0}, {"input": [-73.0, 30.5], "expected": 30.5}, {"input": [-73.0, 31.0], "expected": 31.0}, {"input": [-73.0, 31.5], "expected": 31.5}, {"input": [-73.0, 32.0], "expected": 32.0}, {"input": [-73.0, 32.5], "expected": 32.5}, {"input": [-73.0, 33.0], "expected": 33.0}, {"input": [-73.0, 33.5], "expected": 33.5}, {"input": [-73.0, 34.0], "expected": 34.0}, {"input": [-73.0, 34.5], "expected": 34.5}, {"input": [-73.0, 35.0], "expected": 35.0}, {"input": [-73.0, 35.5], "expected": 35.5}, {"input": [-73.0, 36.0], "expected": 36.0}, {"input": [-73.0, 36.5], "expected": 36.5}, {"input": [-73.0, 37.0], "expected": 37.0}, {"input": [-73.0, 37.5], "expected": 37.5}, {"input": [-73.0, 38.0], "expected": 38.0}, {"input": [-73.0, 38.5], "expected": 38.5}, {"input": [-73.0, 39.0], "expected": 39.0}, {"input": [-73.0, 39.5], "expected": 39.5}, {"input": [-73.0, 40.0], "expected": 40.0}, {"input": [-73.0, 40.5], "expected": 40.5}, {"input": [-73.0, 41.0], "expected": 41.0}, {"input": [-73.0, 41.5], "expected": 41.5}, {"input": [-73.0, 42.0], "expected": 42.0}, {"input": [-73.0, 42.5], "expected": 42.5}, {"input": [-73.0, 43.0], "expected": 43.0}, {"input": [-73.0, 43.5], "expected": 43.5}, {"input": [-73.0, 44.0], "expected": 44.0}, {"input": [-73.0, 44.5], "expected": 44.5}, {"input": [-73.0, 45.0], "expected": 45.0}, {"input": [-73.0, 45.5], "expected": 45.5}, {"input": [-73.0, 46.0], "expected": 46.0}, {"input": [-73.0, 46.5], "expected": 46.5}, {"input": [-73.0, 47.0], "expected": 47.0}, {"input": [-73.0, 47.5], "expected": 47.5}, {"input": [-73.0, 48.0], "expected": 48.0}, {"input": [-73.0, 48.5], "expected": 48.5}, {"input": [-73.0, 49.0], "expected": 49.0}, {"input": [-73.0, 49.5], "expected": 49.5}, {"input": [-73.0, 50.0], "expected": 50.0}, {"input": [-73.0, 50.5], "expected": 50.5}, {"input": [-73.0, 51.0], "expected": 51.0}, {"input": [-73.0, 51.5], "expected": 51.5}, {"input": [-73.0, 52.0], "expected": 52.0}, {"input": [-73.0, 52.5], "expected": 52.5}, {"input": [-73.0, 53.0], "expected": 53.0}, {"input": [-73.0, 53.5], "expected": 53.5}, {"input": [-73.0, 54.0], "expected": 54.0}, {"input": [-73.0, 54.5], "expected": 54.5}, {"input": [-73.0, 55.0], "expected": 55.0}, {"input": [-73.0, 55.5], "expected": 55.5}, {"input": [-73.0, 56.0], "expected": 56.0}, {"input": [-73.0, 56.5], "expected": 56.5}, {"input": [-73.0, 57.0], "expected": 57.0}, {"input": [-73.0, 57.5], "expected": 57.5}, {"input": [-73.0, 58.0], "expected": 58.0}, {"input": [-73.0, 58.5], "expected": 58.5}, {"input": [-73.0, 59.0], "expected": 59.0}, {"input": [-73.0, 59.5], "expected": 59.5}, {"input": [-73.0, 60.0], "expected": 60.0}, {"input": [-73.0, 60.5], "expected": 60.5}, {"input": [-73.0, 61.0], "expected": 61.0}, {"input": [-73.0, 61.5], "expected": 61.5}, {"input": [-73.0, 62.0], "expected": 62.0}, {"input": [-73.0, 62.5], "expected": 62.5}, {"input": [-73.0, 63.0], "expected": 63.0}, {"input": [-73.0, 63.5], "expected": 63.5}, {"input": [-73.0, 64.0], "expected": 64.0}, {"input": [-73.0, 64.5], "expected": 64.5}, {"input": [-73.0, 65.0], "expected": 65.0}, {"input": [-73.0, 65.5], "expected": 65.5}, {"input": [-73.0, 66.0], "expected": 66.0}, {"input": [-73.0, 66.5], "expected": 66.5}, {"input": [-73.0, 67.0], "expected": 67.0}, {"input": [-73.0, 67.5], "expected": 67.5}, {"input": [-73.0, 68.0], "expected": 68.0}, {"input": [-73.0, 68.5], "expected": 68.5}, {"input": [-73.0, 69.0], "expected": 69.0}, {"input": [-73.0, 69.5], "expected": 69.5}, {"input": [-73.0, 70.0], "expected": 70.0}, {"input": [-73.0, 70.5], "expected": 70.5}, {"input": [-73.0, 71.0], "expected": 71.0}, {"input": [-73.0, 71.5], "expected": 71.5}, {"input": [-73.0, 72.0], "expected": 72.0}, {"input": [-73.0, 72.5], "expected": 72.5}, {"input": [-73.0, 73.0], "expected": 73.0}, {"input": [-73.0, 73.5], "expected": 73.5}, {"input": [-73.0, 74.0], "expected": 74.0}, {"input": [-73.0, 74.5], "expected": 74.5}, {"input": [-73.0, 75.0], "expected": 75.0}, {"input": [-73.0, 75.5], "expected": 75.5}, {"input": [-73.0, 76.0], "expected": 76.0}, {"input": [-73.0, 76.5], "expected": 76.5}, {"input": [-73.0, 77.0], "expected": 77.0}, {"input": [-73.0, 77.5], "expected": 77.5}, {"input": [-73.0, 78.0], "expected": 78.0}, {"input": [-73.0, 78.5], "expected": 78.5}, {"input": [-73.0, 79.0], "expected": 79.0}, {"input": [-73.0, 79.5], "expected": 79.5}, {"input": [-73.0, 80.0], "expected": 80.0}, {"input": [-73.0, 80.5], "expected": 80.5}, {"input": [-73.0, 81.0], "expected": 81.0}, {"input": [-73.0, 81.5], "expected": 81.5}, {"input": [-73.0, 82.0], "expected": 82.0}, {"input": [-73.0, 82.5], "expected": 82.5}, {"input": [-73.0, 83.0], "expected": 83.0}, {"input": [-73.0, 83.5], "expected": 83.5}, {"input": [-73.0, 84.0], "expected": 84.0}, {"input": [-73.0, 84.5], "expected": 84.5}, {"input": [-73.0, 85.0], "expected": 85.0}, {"input": [-73.0, 85.5], "expected": 85.5}, {"input": [-73.0, 86.0], "expected": 86.0}, {"input": [-73.0, 86.5], "expected": 86.5}, {"input": [-73.0, 87.0], "expected": 87.0}, {"input": [-73.0, 87.5], "expected": 87.5}, {"input": [-73.0, 88.0], "expected": 88.0}, {"input": [-73.0, 88.5], "expected": 88.5}, {"input": [-73.0, 89.0], "expected": 89.0}, {"input": [-73.0, 89.5], "expected": 89.5}, {"input": [-73.0, 90.0], "expected": 90.0}, {"input": [-73.0, 90.5], "expected": 90.5}, {"input": [-73.0, 91.0], "expected": 91.0}, {"input": [-73.0, 91.5], "expected": 91.5}, {"input": [-73.0, 92.0], "expected": 92.0}, {"input": [-73.0, 92.5], "expected": 92.5}, {"input": [-73.0, 93.0], "expected": 93.0}, {"input": [-73.0, 93.5], "expected": 93.5}, {"input": [-73.0, 94.0], "expected": 94.0}, {"input": [-73.0, 94.5], "expected": 94.5}, {"input": [-73.0, 95.0], "expected": 95.0}, {"input": [-73.0, 95.5], "expected": 95.5}, {"input": [-73.0, 96.0], "expected": 96.0}, {"input": [-73.0, 96.5], "expected": 96.5}, {"input": [-73.0, 97.0], "expected": 97.0}, {"input": [-73.0, 97.5], "expected": 97.5}, {"input": [-73.0, 98.0], "expected": 98.0}, {"input": [-73.0, 98.5], "expected": 98.5}, {"input": [-73.0, 99.0], "expected": 99.0}, {"input": [-73.0, 99.5], "expected": 99.5}, {"input": [-72.5, -100.0], "expected": -72.49999999999886}, {"input": [-72.5, -99.5], "expected": -72.49999999999812}, {"input": [-72.5, -99.0], "expected": -72.4999999999969}, {"input": [-72.5, -98.5], "expected": -72.49999999999488}, {"input": [-72.5, -98.0], "expected": -72.49999999999157}, {"input": [-72.5, -97.5], "expected": -72.49999999998612}, {"input": [-72.5, -97.0], "expected": -72.4999999999771}, {"input": [-72.5, -96.5], "expected": -72.49999999996224}, {"input": [-72.5, -96.0], "expected": -72.49999999993776}, {"input": [-72.5, -95.5], "expected": -72.49999999989738}, {"input": [-72.5, -95.0], "expected": -72.4999999998308}, {"input": [-72.5, -94.5], "expected": -72.49999999972106}, {"input": [-72.5, -94.0], "expected": -72.4999999995401}, {"input": [-72.5, -93.5], "expected": -72.49999999924174}, {"input": [-72.5, -93.0], "expected": -72.49999999874984}, {"input": [-72.5, -92.5], "expected": -72.49999999793884}, {"input": [-72.5, -92.0], "expected": -72.49999999660173}, {"input": [-72.5, -91.5], "expected": -72.4999999943972}, {"input": [-72.5, -91.0], "expected": -72.49999999076255}, {"input": [-72.5, -90.5], "expected": -72.49999998477001}, {"input": [-72.5, -90.0], "expected": -72.49999997489}, {"input": [-72.5, -89.5], "expected": -72.49999995860063}, {"input": [-72.5, -89.0], "expected": -72.49999993174397}, {"input": [-72.5, -88.5], "expected": -72.49999988746484}, {"input": [-72.5, -88.0], "expected": -72.49999981446088}, {"input": [-72.5, -87.5], "expected": -72.49999969409772}, {"input": [-72.5, -87.0], "expected": -72.49999949565246}, {"input": [-72.5, -86.5], "expected": -72.49999916847163}, {"input": [-72.5, -86.0], "expected": -72.49999862904185}, {"input": [-72.5, -85.5], "expected": -72.49999773967315}, {"input": [-72.5, -85.0], "expected": -72.49999627335377}, {"input": [-72.5, -84.5], "expected": -72.49999385580652}, {"input": [-72.5, -84.0], "expected": -72.49998986995772}, {"input": [-72.5, -83.5], "expected": -72.49998329843868}, {"input": [-72.5, -83.0], "expected": -72.49997246392977}, {"input": [-72.5, -82.5], "expected": -72.49995460110078}, {"input": [-72.5, -82.0], "expected": -72.49992515097136}, {"input": [-72.5, -81.5], "expected": -72.49987659781027}, {"input": [-72.5, -81.0], "expected": -72.49979655232787}, {"input": [-72.5, -80.5], "expected": -72.4996645936271}, {"input": [-72.5, -80.0], "expected": -72.49944706852465}, {"input": [-72.5, -79.5], "expected": -72.49908853354623}, {"input": [-72.5, -79.0], "expected": -72.49849768984025}, {"input": [-72.5, -78.5], "expected": -72.49752431486228}, {"input": [-72.5, -78.0], "expected": -72.49592155672943}, {"input": [-72.5, -77.5], "expected": -72.49328465151088}, {"input": [-72.5, -77.0], "expected": -72.4889522551514}, {"input": [-72.5, -76.5], "expected": -72.4818500720822}, {"input": [-72.5, -76.0], "expected": -72.47024958172737}, {"input": [-72.5, -75.5], "expected": -72.45141264842626}, {"input": [-72.5, -75.0], "expected": -72.42111026570745}, {"input": [-72.5, -74.5], "expected": -72.37307198895702}, {"input": [-72.5, -74.0], "expected": -72.29858672201725}, {"input": [-72.5, -73.5], "expected": -72.18673831248178}, {"input": [-72.5, -73.0], "expected": -72.0259230158199}, {"input": [-72.5, -72.5], "expected": -71.80685281944005}, {"input": [-72.5, -72.0], "expected": -71.5259230158199}, {"input": [-72.5, -71.5], "expected": -71.18673831248178}, {"input": [-72.5, -71.0], "expected": -70.79858672201725}, {"input": [-72.5, -70.5], "expected": -70.37307198895702}, {"input": [-72.5, -70.0], "expected": -69.92111026570745}, {"input": [-72.5, -69.5], "expected": -69.45141264842626}, {"input": [-72.5, -69.0], "expected": -68.97024958172737}, {"input": [-72.5, -68.5], "expected": -68.4818500720822}, {"input": [-72.5, -68.0], "expected": -67.9889522551514}, {"input": [-72.5, -67.5], "expected": -67.49328465151088}, {"input": [-72.5, -67.0], "expected": -66.99592155672943}, {"input": [-72.5, -66.5], "expected": -66.49752431486228}, {"input": [-72.5, -66.0], "expected": -65.99849768984025}, {"input": [-72.5, -65.5], "expected": -65.49908853354623}, {"input": [-72.5, -65.0], "expected": -64.99944706852465}, {"input": [-72.5, -64.5], "expected": -64.4996645936271}, {"input": [-72.5, -64.0], "expected": -63.99979655232787}, {"input": [-72.5, -63.5], "expected": -63.49987659781028}, {"input": [-72.5, -63.0], "expected": -62.99992515097137}, {"input": [-72.5, -62.5], "expected": -62.49995460110078}, {"input": [-72.5, -62.0], "expected": -61.99997246392977}, {"input": [-72.5, -61.5], "expected": -61.49998329843868}, {"input": [-72.5, -61.0], "expected": -60.99998986995771}, {"input": [-72.5, -60.5], "expected": -60.49999385580652}, {"input": [-72.5, -60.0], "expected": -59.99999627335377}, {"input": [-72.5, -59.5], "expected": -59.49999773967315}, {"input": [-72.5, -59.0], "expected": -58.999998629041855}, {"input": [-72.5, -58.5], "expected": -58.499999168471625}, {"input": [-72.5, -58.0], "expected": -57.99999949565247}, {"input": [-72.5, -57.5], "expected": -57.499999694097724}, {"input": [-72.5, -57.0], "expected": -56.99999981446088}, {"input": [-72.5, -56.5], "expected": -56.49999988746483}, {"input": [-72.5, -56.0], "expected": -55.99999993174397}, {"input": [-72.5, -55.5], "expected": -55.499999958600625}, {"input": [-72.5, -55.0], "expected": -54.99999997489001}, {"input": [-72.5, -54.5], "expected": -54.49999998477002}, {"input": [-72.5, -54.0], "expected": -53.999999990762554}, {"input": [-72.5, -53.5], "expected": -53.49999999439721}, {"input": [-72.5, -53.0], "expected": -52.99999999660173}, {"input": [-72.5, -52.5], "expected": -52.49999999793884}, {"input": [-72.5, -52.0], "expected": -51.99999999874985}, {"input": [-72.5, -51.5], "expected": -51.499999999241744}, {"input": [-72.5, -51.0], "expected": -50.999999999540094}, {"input": [-72.5, -50.5], "expected": -50.499999999721055}, {"input": [-72.5, -50.0], "expected": -49.99999999983081}, {"input": [-72.5, -49.5], "expected": -49.49999999989738}, {"input": [-72.5, -49.0], "expected": -48.99999999993776}, {"input": [-72.5, -48.5], "expected": -48.49999999996225}, {"input": [-72.5, -48.0], "expected": -47.9999999999771}, {"input": [-72.5, -47.5], "expected": -47.49999999998611}, {"input": [-72.5, -47.0], "expected": -46.99999999999158}, {"input": [-72.5, -46.5], "expected": -46.49999999999489}, {"input": [-72.5, -46.0], "expected": -45.9999999999969}, {"input": [-72.5, -45.5], "expected": -45.49999999999812}, {"input": [-72.5, -45.0], "expected": -44.99999999999886}, {"input": [-72.5, -44.5], "expected": -44.49999999999931}, {"input": [-72.5, -44.0], "expected": -43.99999999999958}, {"input": [-72.5, -43.5], "expected": -43.499999999999744}, {"input": [-72.5, -43.0], "expected": -42.999999999999844}, {"input": [-72.5, -42.5], "expected": -42.49999999999991}, {"input": [-72.5, -42.0], "expected": -41.99999999999994}, {"input": [-72.5, -41.5], "expected": -41.499999999999964}, {"input": [-72.5, -41.0], "expected": -40.99999999999998}, {"input": [-72.5, -40.5], "expected": -40.499999999999986}, {"input": [-72.5, -40.0], "expected": -39.99999999999999}, {"input": [-72.5, -39.5], "expected": -39.49999999999999}, {"input": [-72.5, -39.0], "expected": -39.0}, {"input": [-72.5, -38.5], "expected": -38.5}, {"input": [-72.5, -38.0], "expected": -38.0}, {"input": [-72.5, -37.5], "expected": -37.5}, {"input": [-72.5, -37.0], "expected": -37.0}, {"input": [-72.5, -36.5], "expected": -36.5}, {"input": [-72.5, -36.0], "expected": -36.0}, {"input": [-72.5, -35.5], "expected": -35.5}, {"input": [-72.5, -35.0], "expected": -35.0}, {"input": [-72.5, -34.5], "expected": -34.5}, {"input": [-72.5, -34.0], "expected": -34.0}, {"input": [-72.5, -33.5], "expected": -33.5}, {"input": [-72.5, -33.0], "expected": -33.0}, {"input": [-72.5, -32.5], "expected": -32.5}, {"input": [-72.5, -32.0], "expected": -32.0}, {"input": [-72.5, -31.5], "expected": -31.5}, {"input": [-72.5, -31.0], "expected": -31.0}, {"input": [-72.5, -30.5], "expected": -30.5}, {"input": [-72.5, -30.0], "expected": -30.0}, {"input": [-72.5, -29.5], "expected": -29.5}, {"input": [-72.5, -29.0], "expected": -29.0}, {"input": [-72.5, -28.5], "expected": -28.5}, {"input": [-72.5, -28.0], "expected": -28.0}, {"input": [-72.5, -27.5], "expected": -27.5}, {"input": [-72.5, -27.0], "expected": -27.0}, {"input": [-72.5, -26.5], "expected": -26.5}, {"input": [-72.5, -26.0], "expected": -26.0}, {"input": [-72.5, -25.5], "expected": -25.5}, {"input": [-72.5, -25.0], "expected": -25.0}, {"input": [-72.5, -24.5], "expected": -24.5}, {"input": [-72.5, -24.0], "expected": -24.0}, {"input": [-72.5, -23.5], "expected": -23.5}, {"input": [-72.5, -23.0], "expected": -23.0}, {"input": [-72.5, -22.5], "expected": -22.5}, {"input": [-72.5, -22.0], "expected": -22.0}, {"input": [-72.5, -21.5], "expected": -21.5}, {"input": [-72.5, -21.0], "expected": -21.0}, {"input": [-72.5, -20.5], "expected": -20.5}, {"input": [-72.5, -20.0], "expected": -20.0}, {"input": [-72.5, -19.5], "expected": -19.5}, {"input": [-72.5, -19.0], "expected": -19.0}, {"input": [-72.5, -18.5], "expected": -18.5}, {"input": [-72.5, -18.0], "expected": -18.0}, {"input": [-72.5, -17.5], "expected": -17.5}, {"input": [-72.5, -17.0], "expected": -17.0}, {"input": [-72.5, -16.5], "expected": -16.5}, {"input": [-72.5, -16.0], "expected": -16.0}, {"input": [-72.5, -15.5], "expected": -15.5}, {"input": [-72.5, -15.0], "expected": -15.0}, {"input": [-72.5, -14.5], "expected": -14.5}, {"input": [-72.5, -14.0], "expected": -14.0}, {"input": [-72.5, -13.5], "expected": -13.5}, {"input": [-72.5, -13.0], "expected": -13.0}, {"input": [-72.5, -12.5], "expected": -12.5}, {"input": [-72.5, -12.0], "expected": -12.0}, {"input": [-72.5, -11.5], "expected": -11.5}, {"input": [-72.5, -11.0], "expected": -11.0}, {"input": [-72.5, -10.5], "expected": -10.5}, {"input": [-72.5, -10.0], "expected": -10.0}, {"input": [-72.5, -9.5], "expected": -9.5}, {"input": [-72.5, -9.0], "expected": -9.0}, {"input": [-72.5, -8.5], "expected": -8.5}, {"input": [-72.5, -8.0], "expected": -8.0}, {"input": [-72.5, -7.5], "expected": -7.5}, {"input": [-72.5, -7.0], "expected": -7.0}, {"input": [-72.5, -6.5], "expected": -6.5}, {"input": [-72.5, -6.0], "expected": -6.0}, {"input": [-72.5, -5.5], "expected": -5.5}, {"input": [-72.5, -5.0], "expected": -5.0}, {"input": [-72.5, -4.5], "expected": -4.5}, {"input": [-72.5, -4.0], "expected": -4.0}, {"input": [-72.5, -3.5], "expected": -3.5}, {"input": [-72.5, -3.0], "expected": -3.0}, {"input": [-72.5, -2.5], "expected": -2.5}, {"input": [-72.5, -2.0], "expected": -2.0}, {"input": [-72.5, -1.5], "expected": -1.5}, {"input": [-72.5, -1.0], "expected": -1.0}, {"input": [-72.5, -0.5], "expected": -0.5}, {"input": [-72.5, 0.0], "expected": 3.263247861014401e-32}, {"input": [-72.5, 0.5], "expected": 0.5}, {"input": [-72.5, 1.0], "expected": 1.0}, {"input": [-72.5, 1.5], "expected": 1.5}, {"input": [-72.5, 2.0], "expected": 2.0}, {"input": [-72.5, 2.5], "expected": 2.5}, {"input": [-72.5, 3.0], "expected": 3.0}, {"input": [-72.5, 3.5], "expected": 3.5}, {"input": [-72.5, 4.0], "expected": 4.0}, {"input": [-72.5, 4.5], "expected": 4.5}, {"input": [-72.5, 5.0], "expected": 5.0}, {"input": [-72.5, 5.5], "expected": 5.5}, {"input": [-72.5, 6.0], "expected": 6.0}, {"input": [-72.5, 6.5], "expected": 6.5}, {"input": [-72.5, 7.0], "expected": 7.0}, {"input": [-72.5, 7.5], "expected": 7.5}, {"input": [-72.5, 8.0], "expected": 8.0}, {"input": [-72.5, 8.5], "expected": 8.5}, {"input": [-72.5, 9.0], "expected": 9.0}, {"input": [-72.5, 9.5], "expected": 9.5}, {"input": [-72.5, 10.0], "expected": 10.0}, {"input": [-72.5, 10.5], "expected": 10.5}, {"input": [-72.5, 11.0], "expected": 11.0}, {"input": [-72.5, 11.5], "expected": 11.5}, {"input": [-72.5, 12.0], "expected": 12.0}, {"input": [-72.5, 12.5], "expected": 12.5}, {"input": [-72.5, 13.0], "expected": 13.0}, {"input": [-72.5, 13.5], "expected": 13.5}, {"input": [-72.5, 14.0], "expected": 14.0}, {"input": [-72.5, 14.5], "expected": 14.5}, {"input": [-72.5, 15.0], "expected": 15.0}, {"input": [-72.5, 15.5], "expected": 15.5}, {"input": [-72.5, 16.0], "expected": 16.0}, {"input": [-72.5, 16.5], "expected": 16.5}, {"input": [-72.5, 17.0], "expected": 17.0}, {"input": [-72.5, 17.5], "expected": 17.5}, {"input": [-72.5, 18.0], "expected": 18.0}, {"input": [-72.5, 18.5], "expected": 18.5}, {"input": [-72.5, 19.0], "expected": 19.0}, {"input": [-72.5, 19.5], "expected": 19.5}, {"input": [-72.5, 20.0], "expected": 20.0}, {"input": [-72.5, 20.5], "expected": 20.5}, {"input": [-72.5, 21.0], "expected": 21.0}, {"input": [-72.5, 21.5], "expected": 21.5}, {"input": [-72.5, 22.0], "expected": 22.0}, {"input": [-72.5, 22.5], "expected": 22.5}, {"input": [-72.5, 23.0], "expected": 23.0}, {"input": [-72.5, 23.5], "expected": 23.5}, {"input": [-72.5, 24.0], "expected": 24.0}, {"input": [-72.5, 24.5], "expected": 24.5}, {"input": [-72.5, 25.0], "expected": 25.0}, {"input": [-72.5, 25.5], "expected": 25.5}, {"input": [-72.5, 26.0], "expected": 26.0}, {"input": [-72.5, 26.5], "expected": 26.5}, {"input": [-72.5, 27.0], "expected": 27.0}, {"input": [-72.5, 27.5], "expected": 27.5}, {"input": [-72.5, 28.0], "expected": 28.0}, {"input": [-72.5, 28.5], "expected": 28.5}, {"input": [-72.5, 29.0], "expected": 29.0}, {"input": [-72.5, 29.5], "expected": 29.5}, {"input": [-72.5, 30.0], "expected": 30.0}, {"input": [-72.5, 30.5], "expected": 30.5}, {"input": [-72.5, 31.0], "expected": 31.0}, {"input": [-72.5, 31.5], "expected": 31.5}, {"input": [-72.5, 32.0], "expected": 32.0}, {"input": [-72.5, 32.5], "expected": 32.5}, {"input": [-72.5, 33.0], "expected": 33.0}, {"input": [-72.5, 33.5], "expected": 33.5}, {"input": [-72.5, 34.0], "expected": 34.0}, {"input": [-72.5, 34.5], "expected": 34.5}, {"input": [-72.5, 35.0], "expected": 35.0}, {"input": [-72.5, 35.5], "expected": 35.5}, {"input": [-72.5, 36.0], "expected": 36.0}, {"input": [-72.5, 36.5], "expected": 36.5}, {"input": [-72.5, 37.0], "expected": 37.0}, {"input": [-72.5, 37.5], "expected": 37.5}, {"input": [-72.5, 38.0], "expected": 38.0}, {"input": [-72.5, 38.5], "expected": 38.5}, {"input": [-72.5, 39.0], "expected": 39.0}, {"input": [-72.5, 39.5], "expected": 39.5}, {"input": [-72.5, 40.0], "expected": 40.0}, {"input": [-72.5, 40.5], "expected": 40.5}, {"input": [-72.5, 41.0], "expected": 41.0}, {"input": [-72.5, 41.5], "expected": 41.5}, {"input": [-72.5, 42.0], "expected": 42.0}, {"input": [-72.5, 42.5], "expected": 42.5}, {"input": [-72.5, 43.0], "expected": 43.0}, {"input": [-72.5, 43.5], "expected": 43.5}, {"input": [-72.5, 44.0], "expected": 44.0}, {"input": [-72.5, 44.5], "expected": 44.5}, {"input": [-72.5, 45.0], "expected": 45.0}, {"input": [-72.5, 45.5], "expected": 45.5}, {"input": [-72.5, 46.0], "expected": 46.0}, {"input": [-72.5, 46.5], "expected": 46.5}, {"input": [-72.5, 47.0], "expected": 47.0}, {"input": [-72.5, 47.5], "expected": 47.5}, {"input": [-72.5, 48.0], "expected": 48.0}, {"input": [-72.5, 48.5], "expected": 48.5}, {"input": [-72.5, 49.0], "expected": 49.0}, {"input": [-72.5, 49.5], "expected": 49.5}, {"input": [-72.5, 50.0], "expected": 50.0}, {"input": [-72.5, 50.5], "expected": 50.5}, {"input": [-72.5, 51.0], "expected": 51.0}, {"input": [-72.5, 51.5], "expected": 51.5}, {"input": [-72.5, 52.0], "expected": 52.0}, {"input": [-72.5, 52.5], "expected": 52.5}, {"input": [-72.5, 53.0], "expected": 53.0}, {"input": [-72.5, 53.5], "expected": 53.5}, {"input": [-72.5, 54.0], "expected": 54.0}, {"input": [-72.5, 54.5], "expected": 54.5}, {"input": [-72.5, 55.0], "expected": 55.0}, {"input": [-72.5, 55.5], "expected": 55.5}, {"input": [-72.5, 56.0], "expected": 56.0}, {"input": [-72.5, 56.5], "expected": 56.5}, {"input": [-72.5, 57.0], "expected": 57.0}, {"input": [-72.5, 57.5], "expected": 57.5}, {"input": [-72.5, 58.0], "expected": 58.0}, {"input": [-72.5, 58.5], "expected": 58.5}, {"input": [-72.5, 59.0], "expected": 59.0}, {"input": [-72.5, 59.5], "expected": 59.5}, {"input": [-72.5, 60.0], "expected": 60.0}, {"input": [-72.5, 60.5], "expected": 60.5}, {"input": [-72.5, 61.0], "expected": 61.0}, {"input": [-72.5, 61.5], "expected": 61.5}, {"input": [-72.5, 62.0], "expected": 62.0}, {"input": [-72.5, 62.5], "expected": 62.5}, {"input": [-72.5, 63.0], "expected": 63.0}, {"input": [-72.5, 63.5], "expected": 63.5}, {"input": [-72.5, 64.0], "expected": 64.0}, {"input": [-72.5, 64.5], "expected": 64.5}, {"input": [-72.5, 65.0], "expected": 65.0}, {"input": [-72.5, 65.5], "expected": 65.5}, {"input": [-72.5, 66.0], "expected": 66.0}, {"input": [-72.5, 66.5], "expected": 66.5}, {"input": [-72.5, 67.0], "expected": 67.0}, {"input": [-72.5, 67.5], "expected": 67.5}, {"input": [-72.5, 68.0], "expected": 68.0}, {"input": [-72.5, 68.5], "expected": 68.5}, {"input": [-72.5, 69.0], "expected": 69.0}, {"input": [-72.5, 69.5], "expected": 69.5}, {"input": [-72.5, 70.0], "expected": 70.0}, {"input": [-72.5, 70.5], "expected": 70.5}, {"input": [-72.5, 71.0], "expected": 71.0}, {"input": [-72.5, 71.5], "expected": 71.5}, {"input": [-72.5, 72.0], "expected": 72.0}, {"input": [-72.5, 72.5], "expected": 72.5}, {"input": [-72.5, 73.0], "expected": 73.0}, {"input": [-72.5, 73.5], "expected": 73.5}, {"input": [-72.5, 74.0], "expected": 74.0}, {"input": [-72.5, 74.5], "expected": 74.5}, {"input": [-72.5, 75.0], "expected": 75.0}, {"input": [-72.5, 75.5], "expected": 75.5}, {"input": [-72.5, 76.0], "expected": 76.0}, {"input": [-72.5, 76.5], "expected": 76.5}, {"input": [-72.5, 77.0], "expected": 77.0}, {"input": [-72.5, 77.5], "expected": 77.5}, {"input": [-72.5, 78.0], "expected": 78.0}, {"input": [-72.5, 78.5], "expected": 78.5}, {"input": [-72.5, 79.0], "expected": 79.0}, {"input": [-72.5, 79.5], "expected": 79.5}, {"input": [-72.5, 80.0], "expected": 80.0}, {"input": [-72.5, 80.5], "expected": 80.5}, {"input": [-72.5, 81.0], "expected": 81.0}, {"input": [-72.5, 81.5], "expected": 81.5}, {"input": [-72.5, 82.0], "expected": 82.0}, {"input": [-72.5, 82.5], "expected": 82.5}, {"input": [-72.5, 83.0], "expected": 83.0}, {"input": [-72.5, 83.5], "expected": 83.5}, {"input": [-72.5, 84.0], "expected": 84.0}, {"input": [-72.5, 84.5], "expected": 84.5}, {"input": [-72.5, 85.0], "expected": 85.0}, {"input": [-72.5, 85.5], "expected": 85.5}, {"input": [-72.5, 86.0], "expected": 86.0}, {"input": [-72.5, 86.5], "expected": 86.5}, {"input": [-72.5, 87.0], "expected": 87.0}, {"input": [-72.5, 87.5], "expected": 87.5}, {"input": [-72.5, 88.0], "expected": 88.0}, {"input": [-72.5, 88.5], "expected": 88.5}, {"input": [-72.5, 89.0], "expected": 89.0}, {"input": [-72.5, 89.5], "expected": 89.5}, {"input": [-72.5, 90.0], "expected": 90.0}, {"input": [-72.5, 90.5], "expected": 90.5}, {"input": [-72.5, 91.0], "expected": 91.0}, {"input": [-72.5, 91.5], "expected": 91.5}, {"input": [-72.5, 92.0], "expected": 92.0}, {"input": [-72.5, 92.5], "expected": 92.5}, {"input": [-72.5, 93.0], "expected": 93.0}, {"input": [-72.5, 93.5], "expected": 93.5}, {"input": [-72.5, 94.0], "expected": 94.0}, {"input": [-72.5, 94.5], "expected": 94.5}, {"input": [-72.5, 95.0], "expected": 95.0}, {"input": [-72.5, 95.5], "expected": 95.5}, {"input": [-72.5, 96.0], "expected": 96.0}, {"input": [-72.5, 96.5], "expected": 96.5}, {"input": [-72.5, 97.0], "expected": 97.0}, {"input": [-72.5, 97.5], "expected": 97.5}, {"input": [-72.5, 98.0], "expected": 98.0}, {"input": [-72.5, 98.5], "expected": 98.5}, {"input": [-72.5, 99.0], "expected": 99.0}, {"input": [-72.5, 99.5], "expected": 99.5}, {"input": [-72.0, -100.0], "expected": -71.9999999999993}, {"input": [-72.0, -99.5], "expected": -71.99999999999886}, {"input": [-72.0, -99.0], "expected": -71.99999999999812}, {"input": [-72.0, -98.5], "expected": -71.9999999999969}, {"input": [-72.0, -98.0], "expected": -71.99999999999488}, {"input": [-72.0, -97.5], "expected": -71.99999999999157}, {"input": [-72.0, -97.0], "expected": -71.99999999998612}, {"input": [-72.0, -96.5], "expected": -71.9999999999771}, {"input": [-72.0, -96.0], "expected": -71.99999999996224}, {"input": [-72.0, -95.5], "expected": -71.99999999993776}, {"input": [-72.0, -95.0], "expected": -71.99999999989738}, {"input": [-72.0, -94.5], "expected": -71.9999999998308}, {"input": [-72.0, -94.0], "expected": -71.99999999972106}, {"input": [-72.0, -93.5], "expected": -71.9999999995401}, {"input": [-72.0, -93.0], "expected": -71.99999999924174}, {"input": [-72.0, -92.5], "expected": -71.99999999874984}, {"input": [-72.0, -92.0], "expected": -71.99999999793884}, {"input": [-72.0, -91.5], "expected": -71.99999999660173}, {"input": [-72.0, -91.0], "expected": -71.9999999943972}, {"input": [-72.0, -90.5], "expected": -71.99999999076255}, {"input": [-72.0, -90.0], "expected": -71.99999998477001}, {"input": [-72.0, -89.5], "expected": -71.99999997489}, {"input": [-72.0, -89.0], "expected": -71.99999995860063}, {"input": [-72.0, -88.5], "expected": -71.99999993174397}, {"input": [-72.0, -88.0], "expected": -71.99999988746484}, {"input": [-72.0, -87.5], "expected": -71.99999981446088}, {"input": [-72.0, -87.0], "expected": -71.99999969409772}, {"input": [-72.0, -86.5], "expected": -71.99999949565246}, {"input": [-72.0, -86.0], "expected": -71.99999916847163}, {"input": [-72.0, -85.5], "expected": -71.99999862904185}, {"input": [-72.0, -85.0], "expected": -71.99999773967315}, {"input": [-72.0, -84.5], "expected": -71.99999627335377}, {"input": [-72.0, -84.0], "expected": -71.99999385580652}, {"input": [-72.0, -83.5], "expected": -71.99998986995772}, {"input": [-72.0, -83.0], "expected": -71.99998329843868}, {"input": [-72.0, -82.5], "expected": -71.99997246392977}, {"input": [-72.0, -82.0], "expected": -71.99995460110078}, {"input": [-72.0, -81.5], "expected": -71.99992515097136}, {"input": [-72.0, -81.0], "expected": -71.99987659781027}, {"input": [-72.0, -80.5], "expected": -71.99979655232787}, {"input": [-72.0, -80.0], "expected": -71.9996645936271}, {"input": [-72.0, -79.5], "expected": -71.99944706852465}, {"input": [-72.0, -79.0], "expected": -71.99908853354623}, {"input": [-72.0, -78.5], "expected": -71.99849768984025}, {"input": [-72.0, -78.0], "expected": -71.99752431486228}, {"input": [-72.0, -77.5], "expected": -71.99592155672943}, {"input": [-72.0, -77.0], "expected": -71.99328465151088}, {"input": [-72.0, -76.5], "expected": -71.9889522551514}, {"input": [-72.0, -76.0], "expected": -71.9818500720822}, {"input": [-72.0, -75.5], "expected": -71.97024958172737}, {"input": [-72.0, -75.0], "expected": -71.95141264842626}, {"input": [-72.0, -74.5], "expected": -71.92111026570745}, {"input": [-72.0, -74.0], "expected": -71.87307198895702}, {"input": [-72.0, -73.5], "expected": -71.79858672201725}, {"input": [-72.0, -73.0], "expected": -71.68673831248178}, {"input": [-72.0, -72.5], "expected": -71.5259230158199}, {"input": [-72.0, -72.0], "expected": -71.30685281944005}, {"input": [-72.0, -71.5], "expected": -71.0259230158199}, {"input": [-72.0, -71.0], "expected": -70.68673831248178}, {"input": [-72.0, -70.5], "expected": -70.29858672201725}, {"input": [-72.0, -70.0], "expected": -69.87307198895702}, {"input": [-72.0, -69.5], "expected": -69.42111026570745}, {"input": [-72.0, -69.0], "expected": -68.95141264842626}, {"input": [-72.0, -68.5], "expected": -68.47024958172737}, {"input": [-72.0, -68.0], "expected": -67.9818500720822}, {"input": [-72.0, -67.5], "expected": -67.4889522551514}, {"input": [-72.0, -67.0], "expected": -66.99328465151088}, {"input": [-72.0, -66.5], "expected": -66.49592155672943}, {"input": [-72.0, -66.0], "expected": -65.99752431486228}, {"input": [-72.0, -65.5], "expected": -65.49849768984025}, {"input": [-72.0, -65.0], "expected": -64.99908853354623}, {"input": [-72.0, -64.5], "expected": -64.49944706852465}, {"input": [-72.0, -64.0], "expected": -63.9996645936271}, {"input": [-72.0, -63.5], "expected": -63.49979655232787}, {"input": [-72.0, -63.0], "expected": -62.99987659781028}, {"input": [-72.0, -62.5], "expected": -62.49992515097137}, {"input": [-72.0, -62.0], "expected": -61.99995460110078}, {"input": [-72.0, -61.5], "expected": -61.49997246392977}, {"input": [-72.0, -61.0], "expected": -60.99998329843868}, {"input": [-72.0, -60.5], "expected": -60.49998986995771}, {"input": [-72.0, -60.0], "expected": -59.99999385580652}, {"input": [-72.0, -59.5], "expected": -59.49999627335377}, {"input": [-72.0, -59.0], "expected": -58.99999773967315}, {"input": [-72.0, -58.5], "expected": -58.499998629041855}, {"input": [-72.0, -58.0], "expected": -57.999999168471625}, {"input": [-72.0, -57.5], "expected": -57.49999949565247}, {"input": [-72.0, -57.0], "expected": -56.999999694097724}, {"input": [-72.0, -56.5], "expected": -56.49999981446088}, {"input": [-72.0, -56.0], "expected": -55.99999988746483}, {"input": [-72.0, -55.5], "expected": -55.49999993174397}, {"input": [-72.0, -55.0], "expected": -54.999999958600625}, {"input": [-72.0, -54.5], "expected": -54.49999997489001}, {"input": [-72.0, -54.0], "expected": -53.99999998477002}, {"input": [-72.0, -53.5], "expected": -53.499999990762554}, {"input": [-72.0, -53.0], "expected": -52.99999999439721}, {"input": [-72.0, -52.5], "expected": -52.49999999660173}, {"input": [-72.0, -52.0], "expected": -51.99999999793884}, {"input": [-72.0, -51.5], "expected": -51.49999999874985}, {"input": [-72.0, -51.0], "expected": -50.999999999241744}, {"input": [-72.0, -50.5], "expected": -50.499999999540094}, {"input": [-72.0, -50.0], "expected": -49.999999999721055}, {"input": [-72.0, -49.5], "expected": -49.49999999983081}, {"input": [-72.0, -49.0], "expected": -48.99999999989738}, {"input": [-72.0, -48.5], "expected": -48.49999999993776}, {"input": [-72.0, -48.0], "expected": -47.99999999996225}, {"input": [-72.0, -47.5], "expected": -47.4999999999771}, {"input": [-72.0, -47.0], "expected": -46.99999999998611}, {"input": [-72.0, -46.5], "expected": -46.49999999999158}, {"input": [-72.0, -46.0], "expected": -45.99999999999489}, {"input": [-72.0, -45.5], "expected": -45.4999999999969}, {"input": [-72.0, -45.0], "expected": -44.99999999999812}, {"input": [-72.0, -44.5], "expected": -44.49999999999886}, {"input": [-72.0, -44.0], "expected": -43.99999999999931}, {"input": [-72.0, -43.5], "expected": -43.49999999999958}, {"input": [-72.0, -43.0], "expected": -42.999999999999744}, {"input": [-72.0, -42.5], "expected": -42.499999999999844}, {"input": [-72.0, -42.0], "expected": -41.99999999999991}, {"input": [-72.0, -41.5], "expected": -41.49999999999994}, {"input": [-72.0, -41.0], "expected": -40.999999999999964}, {"input": [-72.0, -40.5], "expected": -40.49999999999998}, {"input": [-72.0, -40.0], "expected": -39.999999999999986}, {"input": [-72.0, -39.5], "expected": -39.49999999999999}, {"input": [-72.0, -39.0], "expected": -38.99999999999999}, {"input": [-72.0, -38.5], "expected": -38.5}, {"input": [-72.0, -38.0], "expected": -38.0}, {"input": [-72.0, -37.5], "expected": -37.5}, {"input": [-72.0, -37.0], "expected": -37.0}, {"input": [-72.0, -36.5], "expected": -36.5}, {"input": [-72.0, -36.0], "expected": -36.0}, {"input": [-72.0, -35.5], "expected": -35.5}, {"input": [-72.0, -35.0], "expected": -35.0}, {"input": [-72.0, -34.5], "expected": -34.5}, {"input": [-72.0, -34.0], "expected": -34.0}, {"input": [-72.0, -33.5], "expected": -33.5}, {"input": [-72.0, -33.0], "expected": -33.0}, {"input": [-72.0, -32.5], "expected": -32.5}, {"input": [-72.0, -32.0], "expected": -32.0}, {"input": [-72.0, -31.5], "expected": -31.5}, {"input": [-72.0, -31.0], "expected": -31.0}, {"input": [-72.0, -30.5], "expected": -30.5}, {"input": [-72.0, -30.0], "expected": -30.0}, {"input": [-72.0, -29.5], "expected": -29.5}, {"input": [-72.0, -29.0], "expected": -29.0}, {"input": [-72.0, -28.5], "expected": -28.5}, {"input": [-72.0, -28.0], "expected": -28.0}, {"input": [-72.0, -27.5], "expected": -27.5}, {"input": [-72.0, -27.0], "expected": -27.0}, {"input": [-72.0, -26.5], "expected": -26.5}, {"input": [-72.0, -26.0], "expected": -26.0}, {"input": [-72.0, -25.5], "expected": -25.5}, {"input": [-72.0, -25.0], "expected": -25.0}, {"input": [-72.0, -24.5], "expected": -24.5}, {"input": [-72.0, -24.0], "expected": -24.0}, {"input": [-72.0, -23.5], "expected": -23.5}, {"input": [-72.0, -23.0], "expected": -23.0}, {"input": [-72.0, -22.5], "expected": -22.5}, {"input": [-72.0, -22.0], "expected": -22.0}, {"input": [-72.0, -21.5], "expected": -21.5}, {"input": [-72.0, -21.0], "expected": -21.0}, {"input": [-72.0, -20.5], "expected": -20.5}, {"input": [-72.0, -20.0], "expected": -20.0}, {"input": [-72.0, -19.5], "expected": -19.5}, {"input": [-72.0, -19.0], "expected": -19.0}, {"input": [-72.0, -18.5], "expected": -18.5}, {"input": [-72.0, -18.0], "expected": -18.0}, {"input": [-72.0, -17.5], "expected": -17.5}, {"input": [-72.0, -17.0], "expected": -17.0}, {"input": [-72.0, -16.5], "expected": -16.5}, {"input": [-72.0, -16.0], "expected": -16.0}, {"input": [-72.0, -15.5], "expected": -15.5}, {"input": [-72.0, -15.0], "expected": -15.0}, {"input": [-72.0, -14.5], "expected": -14.5}, {"input": [-72.0, -14.0], "expected": -14.0}, {"input": [-72.0, -13.5], "expected": -13.5}, {"input": [-72.0, -13.0], "expected": -13.0}, {"input": [-72.0, -12.5], "expected": -12.5}, {"input": [-72.0, -12.0], "expected": -12.0}, {"input": [-72.0, -11.5], "expected": -11.5}, {"input": [-72.0, -11.0], "expected": -11.0}, {"input": [-72.0, -10.5], "expected": -10.5}, {"input": [-72.0, -10.0], "expected": -10.0}, {"input": [-72.0, -9.5], "expected": -9.5}, {"input": [-72.0, -9.0], "expected": -9.0}, {"input": [-72.0, -8.5], "expected": -8.5}, {"input": [-72.0, -8.0], "expected": -8.0}, {"input": [-72.0, -7.5], "expected": -7.5}, {"input": [-72.0, -7.0], "expected": -7.0}, {"input": [-72.0, -6.5], "expected": -6.5}, {"input": [-72.0, -6.0], "expected": -6.0}, {"input": [-72.0, -5.5], "expected": -5.5}, {"input": [-72.0, -5.0], "expected": -5.0}, {"input": [-72.0, -4.5], "expected": -4.5}, {"input": [-72.0, -4.0], "expected": -4.0}, {"input": [-72.0, -3.5], "expected": -3.5}, {"input": [-72.0, -3.0], "expected": -3.0}, {"input": [-72.0, -2.5], "expected": -2.5}, {"input": [-72.0, -2.0], "expected": -2.0}, {"input": [-72.0, -1.5], "expected": -1.5}, {"input": [-72.0, -1.0], "expected": -1.0}, {"input": [-72.0, -0.5], "expected": -0.5}, {"input": [-72.0, 0.0], "expected": 5.380186160021138e-32}, {"input": [-72.0, 0.5], "expected": 0.5}, {"input": [-72.0, 1.0], "expected": 1.0}, {"input": [-72.0, 1.5], "expected": 1.5}, {"input": [-72.0, 2.0], "expected": 2.0}, {"input": [-72.0, 2.5], "expected": 2.5}, {"input": [-72.0, 3.0], "expected": 3.0}, {"input": [-72.0, 3.5], "expected": 3.5}, {"input": [-72.0, 4.0], "expected": 4.0}, {"input": [-72.0, 4.5], "expected": 4.5}, {"input": [-72.0, 5.0], "expected": 5.0}, {"input": [-72.0, 5.5], "expected": 5.5}, {"input": [-72.0, 6.0], "expected": 6.0}, {"input": [-72.0, 6.5], "expected": 6.5}, {"input": [-72.0, 7.0], "expected": 7.0}, {"input": [-72.0, 7.5], "expected": 7.5}, {"input": [-72.0, 8.0], "expected": 8.0}, {"input": [-72.0, 8.5], "expected": 8.5}, {"input": [-72.0, 9.0], "expected": 9.0}, {"input": [-72.0, 9.5], "expected": 9.5}, {"input": [-72.0, 10.0], "expected": 10.0}, {"input": [-72.0, 10.5], "expected": 10.5}, {"input": [-72.0, 11.0], "expected": 11.0}, {"input": [-72.0, 11.5], "expected": 11.5}, {"input": [-72.0, 12.0], "expected": 12.0}, {"input": [-72.0, 12.5], "expected": 12.5}, {"input": [-72.0, 13.0], "expected": 13.0}, {"input": [-72.0, 13.5], "expected": 13.5}, {"input": [-72.0, 14.0], "expected": 14.0}, {"input": [-72.0, 14.5], "expected": 14.5}, {"input": [-72.0, 15.0], "expected": 15.0}, {"input": [-72.0, 15.5], "expected": 15.5}, {"input": [-72.0, 16.0], "expected": 16.0}, {"input": [-72.0, 16.5], "expected": 16.5}, {"input": [-72.0, 17.0], "expected": 17.0}, {"input": [-72.0, 17.5], "expected": 17.5}, {"input": [-72.0, 18.0], "expected": 18.0}, {"input": [-72.0, 18.5], "expected": 18.5}, {"input": [-72.0, 19.0], "expected": 19.0}, {"input": [-72.0, 19.5], "expected": 19.5}, {"input": [-72.0, 20.0], "expected": 20.0}, {"input": [-72.0, 20.5], "expected": 20.5}, {"input": [-72.0, 21.0], "expected": 21.0}, {"input": [-72.0, 21.5], "expected": 21.5}, {"input": [-72.0, 22.0], "expected": 22.0}, {"input": [-72.0, 22.5], "expected": 22.5}, {"input": [-72.0, 23.0], "expected": 23.0}, {"input": [-72.0, 23.5], "expected": 23.5}, {"input": [-72.0, 24.0], "expected": 24.0}, {"input": [-72.0, 24.5], "expected": 24.5}, {"input": [-72.0, 25.0], "expected": 25.0}, {"input": [-72.0, 25.5], "expected": 25.5}, {"input": [-72.0, 26.0], "expected": 26.0}, {"input": [-72.0, 26.5], "expected": 26.5}, {"input": [-72.0, 27.0], "expected": 27.0}, {"input": [-72.0, 27.5], "expected": 27.5}, {"input": [-72.0, 28.0], "expected": 28.0}, {"input": [-72.0, 28.5], "expected": 28.5}, {"input": [-72.0, 29.0], "expected": 29.0}, {"input": [-72.0, 29.5], "expected": 29.5}, {"input": [-72.0, 30.0], "expected": 30.0}, {"input": [-72.0, 30.5], "expected": 30.5}, {"input": [-72.0, 31.0], "expected": 31.0}, {"input": [-72.0, 31.5], "expected": 31.5}, {"input": [-72.0, 32.0], "expected": 32.0}, {"input": [-72.0, 32.5], "expected": 32.5}, {"input": [-72.0, 33.0], "expected": 33.0}, {"input": [-72.0, 33.5], "expected": 33.5}, {"input": [-72.0, 34.0], "expected": 34.0}, {"input": [-72.0, 34.5], "expected": 34.5}, {"input": [-72.0, 35.0], "expected": 35.0}, {"input": [-72.0, 35.5], "expected": 35.5}, {"input": [-72.0, 36.0], "expected": 36.0}, {"input": [-72.0, 36.5], "expected": 36.5}, {"input": [-72.0, 37.0], "expected": 37.0}, {"input": [-72.0, 37.5], "expected": 37.5}, {"input": [-72.0, 38.0], "expected": 38.0}, {"input": [-72.0, 38.5], "expected": 38.5}, {"input": [-72.0, 39.0], "expected": 39.0}, {"input": [-72.0, 39.5], "expected": 39.5}, {"input": [-72.0, 40.0], "expected": 40.0}, {"input": [-72.0, 40.5], "expected": 40.5}, {"input": [-72.0, 41.0], "expected": 41.0}, {"input": [-72.0, 41.5], "expected": 41.5}, {"input": [-72.0, 42.0], "expected": 42.0}, {"input": [-72.0, 42.5], "expected": 42.5}, {"input": [-72.0, 43.0], "expected": 43.0}, {"input": [-72.0, 43.5], "expected": 43.5}, {"input": [-72.0, 44.0], "expected": 44.0}, {"input": [-72.0, 44.5], "expected": 44.5}, {"input": [-72.0, 45.0], "expected": 45.0}, {"input": [-72.0, 45.5], "expected": 45.5}, {"input": [-72.0, 46.0], "expected": 46.0}, {"input": [-72.0, 46.5], "expected": 46.5}, {"input": [-72.0, 47.0], "expected": 47.0}, {"input": [-72.0, 47.5], "expected": 47.5}, {"input": [-72.0, 48.0], "expected": 48.0}, {"input": [-72.0, 48.5], "expected": 48.5}, {"input": [-72.0, 49.0], "expected": 49.0}, {"input": [-72.0, 49.5], "expected": 49.5}, {"input": [-72.0, 50.0], "expected": 50.0}, {"input": [-72.0, 50.5], "expected": 50.5}, {"input": [-72.0, 51.0], "expected": 51.0}, {"input": [-72.0, 51.5], "expected": 51.5}, {"input": [-72.0, 52.0], "expected": 52.0}, {"input": [-72.0, 52.5], "expected": 52.5}, {"input": [-72.0, 53.0], "expected": 53.0}, {"input": [-72.0, 53.5], "expected": 53.5}, {"input": [-72.0, 54.0], "expected": 54.0}, {"input": [-72.0, 54.5], "expected": 54.5}, {"input": [-72.0, 55.0], "expected": 55.0}, {"input": [-72.0, 55.5], "expected": 55.5}, {"input": [-72.0, 56.0], "expected": 56.0}, {"input": [-72.0, 56.5], "expected": 56.5}, {"input": [-72.0, 57.0], "expected": 57.0}, {"input": [-72.0, 57.5], "expected": 57.5}, {"input": [-72.0, 58.0], "expected": 58.0}, {"input": [-72.0, 58.5], "expected": 58.5}, {"input": [-72.0, 59.0], "expected": 59.0}, {"input": [-72.0, 59.5], "expected": 59.5}, {"input": [-72.0, 60.0], "expected": 60.0}, {"input": [-72.0, 60.5], "expected": 60.5}, {"input": [-72.0, 61.0], "expected": 61.0}, {"input": [-72.0, 61.5], "expected": 61.5}, {"input": [-72.0, 62.0], "expected": 62.0}, {"input": [-72.0, 62.5], "expected": 62.5}, {"input": [-72.0, 63.0], "expected": 63.0}, {"input": [-72.0, 63.5], "expected": 63.5}, {"input": [-72.0, 64.0], "expected": 64.0}, {"input": [-72.0, 64.5], "expected": 64.5}, {"input": [-72.0, 65.0], "expected": 65.0}, {"input": [-72.0, 65.5], "expected": 65.5}, {"input": [-72.0, 66.0], "expected": 66.0}, {"input": [-72.0, 66.5], "expected": 66.5}, {"input": [-72.0, 67.0], "expected": 67.0}, {"input": [-72.0, 67.5], "expected": 67.5}, {"input": [-72.0, 68.0], "expected": 68.0}, {"input": [-72.0, 68.5], "expected": 68.5}, {"input": [-72.0, 69.0], "expected": 69.0}, {"input": [-72.0, 69.5], "expected": 69.5}, {"input": [-72.0, 70.0], "expected": 70.0}, {"input": [-72.0, 70.5], "expected": 70.5}, {"input": [-72.0, 71.0], "expected": 71.0}, {"input": [-72.0, 71.5], "expected": 71.5}, {"input": [-72.0, 72.0], "expected": 72.0}, {"input": [-72.0, 72.5], "expected": 72.5}, {"input": [-72.0, 73.0], "expected": 73.0}, {"input": [-72.0, 73.5], "expected": 73.5}, {"input": [-72.0, 74.0], "expected": 74.0}, {"input": [-72.0, 74.5], "expected": 74.5}, {"input": [-72.0, 75.0], "expected": 75.0}, {"input": [-72.0, 75.5], "expected": 75.5}, {"input": [-72.0, 76.0], "expected": 76.0}, {"input": [-72.0, 76.5], "expected": 76.5}, {"input": [-72.0, 77.0], "expected": 77.0}, {"input": [-72.0, 77.5], "expected": 77.5}, {"input": [-72.0, 78.0], "expected": 78.0}, {"input": [-72.0, 78.5], "expected": 78.5}, {"input": [-72.0, 79.0], "expected": 79.0}, {"input": [-72.0, 79.5], "expected": 79.5}, {"input": [-72.0, 80.0], "expected": 80.0}, {"input": [-72.0, 80.5], "expected": 80.5}, {"input": [-72.0, 81.0], "expected": 81.0}, {"input": [-72.0, 81.5], "expected": 81.5}, {"input": [-72.0, 82.0], "expected": 82.0}, {"input": [-72.0, 82.5], "expected": 82.5}, {"input": [-72.0, 83.0], "expected": 83.0}, {"input": [-72.0, 83.5], "expected": 83.5}, {"input": [-72.0, 84.0], "expected": 84.0}, {"input": [-72.0, 84.5], "expected": 84.5}, {"input": [-72.0, 85.0], "expected": 85.0}, {"input": [-72.0, 85.5], "expected": 85.5}, {"input": [-72.0, 86.0], "expected": 86.0}, {"input": [-72.0, 86.5], "expected": 86.5}, {"input": [-72.0, 87.0], "expected": 87.0}, {"input": [-72.0, 87.5], "expected": 87.5}, {"input": [-72.0, 88.0], "expected": 88.0}, {"input": [-72.0, 88.5], "expected": 88.5}, {"input": [-72.0, 89.0], "expected": 89.0}, {"input": [-72.0, 89.5], "expected": 89.5}, {"input": [-72.0, 90.0], "expected": 90.0}, {"input": [-72.0, 90.5], "expected": 90.5}, {"input": [-72.0, 91.0], "expected": 91.0}, {"input": [-72.0, 91.5], "expected": 91.5}, {"input": [-72.0, 92.0], "expected": 92.0}, {"input": [-72.0, 92.5], "expected": 92.5}, {"input": [-72.0, 93.0], "expected": 93.0}, {"input": [-72.0, 93.5], "expected": 93.5}, {"input": [-72.0, 94.0], "expected": 94.0}, {"input": [-72.0, 94.5], "expected": 94.5}, {"input": [-72.0, 95.0], "expected": 95.0}, {"input": [-72.0, 95.5], "expected": 95.5}, {"input": [-72.0, 96.0], "expected": 96.0}, {"input": [-72.0, 96.5], "expected": 96.5}, {"input": [-72.0, 97.0], "expected": 97.0}, {"input": [-72.0, 97.5], "expected": 97.5}, {"input": [-72.0, 98.0], "expected": 98.0}, {"input": [-72.0, 98.5], "expected": 98.5}, {"input": [-72.0, 99.0], "expected": 99.0}, {"input": [-72.0, 99.5], "expected": 99.5}, {"input": [-71.5, -100.0], "expected": -71.49999999999957}, {"input": [-71.5, -99.5], "expected": -71.4999999999993}, {"input": [-71.5, -99.0], "expected": -71.49999999999886}, {"input": [-71.5, -98.5], "expected": -71.49999999999812}, {"input": [-71.5, -98.0], "expected": -71.4999999999969}, {"input": [-71.5, -97.5], "expected": -71.49999999999488}, {"input": [-71.5, -97.0], "expected": -71.49999999999157}, {"input": [-71.5, -96.5], "expected": -71.49999999998612}, {"input": [-71.5, -96.0], "expected": -71.4999999999771}, {"input": [-71.5, -95.5], "expected": -71.49999999996224}, {"input": [-71.5, -95.0], "expected": -71.49999999993776}, {"input": [-71.5, -94.5], "expected": -71.49999999989738}, {"input": [-71.5, -94.0], "expected": -71.4999999998308}, {"input": [-71.5, -93.5], "expected": -71.49999999972106}, {"input": [-71.5, -93.0], "expected": -71.4999999995401}, {"input": [-71.5, -92.5], "expected": -71.49999999924174}, {"input": [-71.5, -92.0], "expected": -71.49999999874984}, {"input": [-71.5, -91.5], "expected": -71.49999999793884}, {"input": [-71.5, -91.0], "expected": -71.49999999660173}, {"input": [-71.5, -90.5], "expected": -71.4999999943972}, {"input": [-71.5, -90.0], "expected": -71.49999999076255}, {"input": [-71.5, -89.5], "expected": -71.49999998477001}, {"input": [-71.5, -89.0], "expected": -71.49999997489}, {"input": [-71.5, -88.5], "expected": -71.49999995860063}, {"input": [-71.5, -88.0], "expected": -71.49999993174397}, {"input": [-71.5, -87.5], "expected": -71.49999988746484}, {"input": [-71.5, -87.0], "expected": -71.49999981446088}, {"input": [-71.5, -86.5], "expected": -71.49999969409772}, {"input": [-71.5, -86.0], "expected": -71.49999949565246}, {"input": [-71.5, -85.5], "expected": -71.49999916847163}, {"input": [-71.5, -85.0], "expected": -71.49999862904185}, {"input": [-71.5, -84.5], "expected": -71.49999773967315}, {"input": [-71.5, -84.0], "expected": -71.49999627335377}, {"input": [-71.5, -83.5], "expected": -71.49999385580652}, {"input": [-71.5, -83.0], "expected": -71.49998986995772}, {"input": [-71.5, -82.5], "expected": -71.49998329843868}, {"input": [-71.5, -82.0], "expected": -71.49997246392977}, {"input": [-71.5, -81.5], "expected": -71.49995460110078}, {"input": [-71.5, -81.0], "expected": -71.49992515097136}, {"input": [-71.5, -80.5], "expected": -71.49987659781027}, {"input": [-71.5, -80.0], "expected": -71.49979655232787}, {"input": [-71.5, -79.5], "expected": -71.4996645936271}, {"input": [-71.5, -79.0], "expected": -71.49944706852465}, {"input": [-71.5, -78.5], "expected": -71.49908853354623}, {"input": [-71.5, -78.0], "expected": -71.49849768984025}, {"input": [-71.5, -77.5], "expected": -71.49752431486228}, {"input": [-71.5, -77.0], "expected": -71.49592155672943}, {"input": [-71.5, -76.5], "expected": -71.49328465151088}, {"input": [-71.5, -76.0], "expected": -71.4889522551514}, {"input": [-71.5, -75.5], "expected": -71.4818500720822}, {"input": [-71.5, -75.0], "expected": -71.47024958172737}, {"input": [-71.5, -74.5], "expected": -71.45141264842626}, {"input": [-71.5, -74.0], "expected": -71.42111026570745}, {"input": [-71.5, -73.5], "expected": -71.37307198895702}, {"input": [-71.5, -73.0], "expected": -71.29858672201725}, {"input": [-71.5, -72.5], "expected": -71.18673831248178}, {"input": [-71.5, -72.0], "expected": -71.0259230158199}, {"input": [-71.5, -71.5], "expected": -70.80685281944005}, {"input": [-71.5, -71.0], "expected": -70.5259230158199}, {"input": [-71.5, -70.5], "expected": -70.18673831248178}, {"input": [-71.5, -70.0], "expected": -69.79858672201725}, {"input": [-71.5, -69.5], "expected": -69.37307198895702}, {"input": [-71.5, -69.0], "expected": -68.92111026570745}, {"input": [-71.5, -68.5], "expected": -68.45141264842626}, {"input": [-71.5, -68.0], "expected": -67.97024958172737}, {"input": [-71.5, -67.5], "expected": -67.4818500720822}, {"input": [-71.5, -67.0], "expected": -66.9889522551514}, {"input": [-71.5, -66.5], "expected": -66.49328465151088}, {"input": [-71.5, -66.0], "expected": -65.99592155672943}, {"input": [-71.5, -65.5], "expected": -65.49752431486228}, {"input": [-71.5, -65.0], "expected": -64.99849768984025}, {"input": [-71.5, -64.5], "expected": -64.49908853354623}, {"input": [-71.5, -64.0], "expected": -63.99944706852464}, {"input": [-71.5, -63.5], "expected": -63.4996645936271}, {"input": [-71.5, -63.0], "expected": -62.99979655232787}, {"input": [-71.5, -62.5], "expected": -62.49987659781028}, {"input": [-71.5, -62.0], "expected": -61.99992515097137}, {"input": [-71.5, -61.5], "expected": -61.49995460110078}, {"input": [-71.5, -61.0], "expected": -60.99997246392977}, {"input": [-71.5, -60.5], "expected": -60.49998329843868}, {"input": [-71.5, -60.0], "expected": -59.99998986995771}, {"input": [-71.5, -59.5], "expected": -59.49999385580652}, {"input": [-71.5, -59.0], "expected": -58.99999627335377}, {"input": [-71.5, -58.5], "expected": -58.49999773967315}, {"input": [-71.5, -58.0], "expected": -57.999998629041855}, {"input": [-71.5, -57.5], "expected": -57.499999168471625}, {"input": [-71.5, -57.0], "expected": -56.99999949565247}, {"input": [-71.5, -56.5], "expected": -56.499999694097724}, {"input": [-71.5, -56.0], "expected": -55.99999981446088}, {"input": [-71.5, -55.5], "expected": -55.49999988746483}, {"input": [-71.5, -55.0], "expected": -54.99999993174397}, {"input": [-71.5, -54.5], "expected": -54.499999958600625}, {"input": [-71.5, -54.0], "expected": -53.99999997489001}, {"input": [-71.5, -53.5], "expected": -53.49999998477002}, {"input": [-71.5, -53.0], "expected": -52.999999990762554}, {"input": [-71.5, -52.5], "expected": -52.49999999439721}, {"input": [-71.5, -52.0], "expected": -51.99999999660173}, {"input": [-71.5, -51.5], "expected": -51.49999999793884}, {"input": [-71.5, -51.0], "expected": -50.99999999874985}, {"input": [-71.5, -50.5], "expected": -50.499999999241744}, {"input": [-71.5, -50.0], "expected": -49.999999999540094}, {"input": [-71.5, -49.5], "expected": -49.499999999721055}, {"input": [-71.5, -49.0], "expected": -48.99999999983081}, {"input": [-71.5, -48.5], "expected": -48.49999999989738}, {"input": [-71.5, -48.0], "expected": -47.99999999993776}, {"input": [-71.5, -47.5], "expected": -47.49999999996225}, {"input": [-71.5, -47.0], "expected": -46.9999999999771}, {"input": [-71.5, -46.5], "expected": -46.49999999998611}, {"input": [-71.5, -46.0], "expected": -45.99999999999158}, {"input": [-71.5, -45.5], "expected": -45.49999999999489}, {"input": [-71.5, -45.0], "expected": -44.9999999999969}, {"input": [-71.5, -44.5], "expected": -44.49999999999812}, {"input": [-71.5, -44.0], "expected": -43.99999999999886}, {"input": [-71.5, -43.5], "expected": -43.49999999999931}, {"input": [-71.5, -43.0], "expected": -42.99999999999958}, {"input": [-71.5, -42.5], "expected": -42.499999999999744}, {"input": [-71.5, -42.0], "expected": -41.999999999999844}, {"input": [-71.5, -41.5], "expected": -41.49999999999991}, {"input": [-71.5, -41.0], "expected": -40.99999999999994}, {"input": [-71.5, -40.5], "expected": -40.499999999999964}, {"input": [-71.5, -40.0], "expected": -39.99999999999998}, {"input": [-71.5, -39.5], "expected": -39.499999999999986}, {"input": [-71.5, -39.0], "expected": -38.99999999999999}, {"input": [-71.5, -38.5], "expected": -38.49999999999999}, {"input": [-71.5, -38.0], "expected": -38.0}, {"input": [-71.5, -37.5], "expected": -37.5}, {"input": [-71.5, -37.0], "expected": -37.0}, {"input": [-71.5, -36.5], "expected": -36.5}, {"input": [-71.5, -36.0], "expected": -36.0}, {"input": [-71.5, -35.5], "expected": -35.5}, {"input": [-71.5, -35.0], "expected": -35.0}, {"input": [-71.5, -34.5], "expected": -34.5}, {"input": [-71.5, -34.0], "expected": -34.0}, {"input": [-71.5, -33.5], "expected": -33.5}, {"input": [-71.5, -33.0], "expected": -33.0}, {"input": [-71.5, -32.5], "expected": -32.5}, {"input": [-71.5, -32.0], "expected": -32.0}, {"input": [-71.5, -31.5], "expected": -31.5}, {"input": [-71.5, -31.0], "expected": -31.0}, {"input": [-71.5, -30.5], "expected": -30.5}, {"input": [-71.5, -30.0], "expected": -30.0}, {"input": [-71.5, -29.5], "expected": -29.5}, {"input": [-71.5, -29.0], "expected": -29.0}, {"input": [-71.5, -28.5], "expected": -28.5}, {"input": [-71.5, -28.0], "expected": -28.0}, {"input": [-71.5, -27.5], "expected": -27.5}, {"input": [-71.5, -27.0], "expected": -27.0}, {"input": [-71.5, -26.5], "expected": -26.5}, {"input": [-71.5, -26.0], "expected": -26.0}, {"input": [-71.5, -25.5], "expected": -25.5}, {"input": [-71.5, -25.0], "expected": -25.0}, {"input": [-71.5, -24.5], "expected": -24.5}, {"input": [-71.5, -24.0], "expected": -24.0}, {"input": [-71.5, -23.5], "expected": -23.5}, {"input": [-71.5, -23.0], "expected": -23.0}, {"input": [-71.5, -22.5], "expected": -22.5}, {"input": [-71.5, -22.0], "expected": -22.0}, {"input": [-71.5, -21.5], "expected": -21.5}, {"input": [-71.5, -21.0], "expected": -21.0}, {"input": [-71.5, -20.5], "expected": -20.5}, {"input": [-71.5, -20.0], "expected": -20.0}, {"input": [-71.5, -19.5], "expected": -19.5}, {"input": [-71.5, -19.0], "expected": -19.0}, {"input": [-71.5, -18.5], "expected": -18.5}, {"input": [-71.5, -18.0], "expected": -18.0}, {"input": [-71.5, -17.5], "expected": -17.5}, {"input": [-71.5, -17.0], "expected": -17.0}, {"input": [-71.5, -16.5], "expected": -16.5}, {"input": [-71.5, -16.0], "expected": -16.0}, {"input": [-71.5, -15.5], "expected": -15.5}, {"input": [-71.5, -15.0], "expected": -15.0}, {"input": [-71.5, -14.5], "expected": -14.5}, {"input": [-71.5, -14.0], "expected": -14.0}, {"input": [-71.5, -13.5], "expected": -13.5}, {"input": [-71.5, -13.0], "expected": -13.0}, {"input": [-71.5, -12.5], "expected": -12.5}, {"input": [-71.5, -12.0], "expected": -12.0}, {"input": [-71.5, -11.5], "expected": -11.5}, {"input": [-71.5, -11.0], "expected": -11.0}, {"input": [-71.5, -10.5], "expected": -10.5}, {"input": [-71.5, -10.0], "expected": -10.0}, {"input": [-71.5, -9.5], "expected": -9.5}, {"input": [-71.5, -9.0], "expected": -9.0}, {"input": [-71.5, -8.5], "expected": -8.5}, {"input": [-71.5, -8.0], "expected": -8.0}, {"input": [-71.5, -7.5], "expected": -7.5}, {"input": [-71.5, -7.0], "expected": -7.0}, {"input": [-71.5, -6.5], "expected": -6.5}, {"input": [-71.5, -6.0], "expected": -6.0}, {"input": [-71.5, -5.5], "expected": -5.5}, {"input": [-71.5, -5.0], "expected": -5.0}, {"input": [-71.5, -4.5], "expected": -4.5}, {"input": [-71.5, -4.0], "expected": -4.0}, {"input": [-71.5, -3.5], "expected": -3.5}, {"input": [-71.5, -3.0], "expected": -3.0}, {"input": [-71.5, -2.5], "expected": -2.5}, {"input": [-71.5, -2.0], "expected": -2.0}, {"input": [-71.5, -1.5], "expected": -1.5}, {"input": [-71.5, -1.0], "expected": -1.0}, {"input": [-71.5, -0.5], "expected": -0.5}, {"input": [-71.5, 0.0], "expected": 8.870427362353295e-32}, {"input": [-71.5, 0.5], "expected": 0.5}, {"input": [-71.5, 1.0], "expected": 1.0}, {"input": [-71.5, 1.5], "expected": 1.5}, {"input": [-71.5, 2.0], "expected": 2.0}, {"input": [-71.5, 2.5], "expected": 2.5}, {"input": [-71.5, 3.0], "expected": 3.0}, {"input": [-71.5, 3.5], "expected": 3.5}, {"input": [-71.5, 4.0], "expected": 4.0}, {"input": [-71.5, 4.5], "expected": 4.5}, {"input": [-71.5, 5.0], "expected": 5.0}, {"input": [-71.5, 5.5], "expected": 5.5}, {"input": [-71.5, 6.0], "expected": 6.0}, {"input": [-71.5, 6.5], "expected": 6.5}, {"input": [-71.5, 7.0], "expected": 7.0}, {"input": [-71.5, 7.5], "expected": 7.5}, {"input": [-71.5, 8.0], "expected": 8.0}, {"input": [-71.5, 8.5], "expected": 8.5}, {"input": [-71.5, 9.0], "expected": 9.0}, {"input": [-71.5, 9.5], "expected": 9.5}, {"input": [-71.5, 10.0], "expected": 10.0}, {"input": [-71.5, 10.5], "expected": 10.5}, {"input": [-71.5, 11.0], "expected": 11.0}, {"input": [-71.5, 11.5], "expected": 11.5}, {"input": [-71.5, 12.0], "expected": 12.0}, {"input": [-71.5, 12.5], "expected": 12.5}, {"input": [-71.5, 13.0], "expected": 13.0}, {"input": [-71.5, 13.5], "expected": 13.5}, {"input": [-71.5, 14.0], "expected": 14.0}, {"input": [-71.5, 14.5], "expected": 14.5}, {"input": [-71.5, 15.0], "expected": 15.0}, {"input": [-71.5, 15.5], "expected": 15.5}, {"input": [-71.5, 16.0], "expected": 16.0}, {"input": [-71.5, 16.5], "expected": 16.5}, {"input": [-71.5, 17.0], "expected": 17.0}, {"input": [-71.5, 17.5], "expected": 17.5}, {"input": [-71.5, 18.0], "expected": 18.0}, {"input": [-71.5, 18.5], "expected": 18.5}, {"input": [-71.5, 19.0], "expected": 19.0}, {"input": [-71.5, 19.5], "expected": 19.5}, {"input": [-71.5, 20.0], "expected": 20.0}, {"input": [-71.5, 20.5], "expected": 20.5}, {"input": [-71.5, 21.0], "expected": 21.0}, {"input": [-71.5, 21.5], "expected": 21.5}, {"input": [-71.5, 22.0], "expected": 22.0}, {"input": [-71.5, 22.5], "expected": 22.5}, {"input": [-71.5, 23.0], "expected": 23.0}, {"input": [-71.5, 23.5], "expected": 23.5}, {"input": [-71.5, 24.0], "expected": 24.0}, {"input": [-71.5, 24.5], "expected": 24.5}, {"input": [-71.5, 25.0], "expected": 25.0}, {"input": [-71.5, 25.5], "expected": 25.5}, {"input": [-71.5, 26.0], "expected": 26.0}, {"input": [-71.5, 26.5], "expected": 26.5}, {"input": [-71.5, 27.0], "expected": 27.0}, {"input": [-71.5, 27.5], "expected": 27.5}, {"input": [-71.5, 28.0], "expected": 28.0}, {"input": [-71.5, 28.5], "expected": 28.5}, {"input": [-71.5, 29.0], "expected": 29.0}, {"input": [-71.5, 29.5], "expected": 29.5}, {"input": [-71.5, 30.0], "expected": 30.0}, {"input": [-71.5, 30.5], "expected": 30.5}, {"input": [-71.5, 31.0], "expected": 31.0}, {"input": [-71.5, 31.5], "expected": 31.5}, {"input": [-71.5, 32.0], "expected": 32.0}, {"input": [-71.5, 32.5], "expected": 32.5}, {"input": [-71.5, 33.0], "expected": 33.0}, {"input": [-71.5, 33.5], "expected": 33.5}, {"input": [-71.5, 34.0], "expected": 34.0}, {"input": [-71.5, 34.5], "expected": 34.5}, {"input": [-71.5, 35.0], "expected": 35.0}, {"input": [-71.5, 35.5], "expected": 35.5}, {"input": [-71.5, 36.0], "expected": 36.0}, {"input": [-71.5, 36.5], "expected": 36.5}, {"input": [-71.5, 37.0], "expected": 37.0}, {"input": [-71.5, 37.5], "expected": 37.5}, {"input": [-71.5, 38.0], "expected": 38.0}, {"input": [-71.5, 38.5], "expected": 38.5}, {"input": [-71.5, 39.0], "expected": 39.0}, {"input": [-71.5, 39.5], "expected": 39.5}, {"input": [-71.5, 40.0], "expected": 40.0}, {"input": [-71.5, 40.5], "expected": 40.5}, {"input": [-71.5, 41.0], "expected": 41.0}, {"input": [-71.5, 41.5], "expected": 41.5}, {"input": [-71.5, 42.0], "expected": 42.0}, {"input": [-71.5, 42.5], "expected": 42.5}, {"input": [-71.5, 43.0], "expected": 43.0}, {"input": [-71.5, 43.5], "expected": 43.5}, {"input": [-71.5, 44.0], "expected": 44.0}, {"input": [-71.5, 44.5], "expected": 44.5}, {"input": [-71.5, 45.0], "expected": 45.0}, {"input": [-71.5, 45.5], "expected": 45.5}, {"input": [-71.5, 46.0], "expected": 46.0}, {"input": [-71.5, 46.5], "expected": 46.5}, {"input": [-71.5, 47.0], "expected": 47.0}, {"input": [-71.5, 47.5], "expected": 47.5}, {"input": [-71.5, 48.0], "expected": 48.0}, {"input": [-71.5, 48.5], "expected": 48.5}, {"input": [-71.5, 49.0], "expected": 49.0}, {"input": [-71.5, 49.5], "expected": 49.5}, {"input": [-71.5, 50.0], "expected": 50.0}, {"input": [-71.5, 50.5], "expected": 50.5}, {"input": [-71.5, 51.0], "expected": 51.0}, {"input": [-71.5, 51.5], "expected": 51.5}, {"input": [-71.5, 52.0], "expected": 52.0}, {"input": [-71.5, 52.5], "expected": 52.5}, {"input": [-71.5, 53.0], "expected": 53.0}, {"input": [-71.5, 53.5], "expected": 53.5}, {"input": [-71.5, 54.0], "expected": 54.0}, {"input": [-71.5, 54.5], "expected": 54.5}, {"input": [-71.5, 55.0], "expected": 55.0}, {"input": [-71.5, 55.5], "expected": 55.5}, {"input": [-71.5, 56.0], "expected": 56.0}, {"input": [-71.5, 56.5], "expected": 56.5}, {"input": [-71.5, 57.0], "expected": 57.0}, {"input": [-71.5, 57.5], "expected": 57.5}, {"input": [-71.5, 58.0], "expected": 58.0}, {"input": [-71.5, 58.5], "expected": 58.5}, {"input": [-71.5, 59.0], "expected": 59.0}, {"input": [-71.5, 59.5], "expected": 59.5}, {"input": [-71.5, 60.0], "expected": 60.0}, {"input": [-71.5, 60.5], "expected": 60.5}, {"input": [-71.5, 61.0], "expected": 61.0}, {"input": [-71.5, 61.5], "expected": 61.5}, {"input": [-71.5, 62.0], "expected": 62.0}, {"input": [-71.5, 62.5], "expected": 62.5}, {"input": [-71.5, 63.0], "expected": 63.0}, {"input": [-71.5, 63.5], "expected": 63.5}, {"input": [-71.5, 64.0], "expected": 64.0}, {"input": [-71.5, 64.5], "expected": 64.5}, {"input": [-71.5, 65.0], "expected": 65.0}, {"input": [-71.5, 65.5], "expected": 65.5}, {"input": [-71.5, 66.0], "expected": 66.0}, {"input": [-71.5, 66.5], "expected": 66.5}, {"input": [-71.5, 67.0], "expected": 67.0}, {"input": [-71.5, 67.5], "expected": 67.5}, {"input": [-71.5, 68.0], "expected": 68.0}, {"input": [-71.5, 68.5], "expected": 68.5}, {"input": [-71.5, 69.0], "expected": 69.0}, {"input": [-71.5, 69.5], "expected": 69.5}, {"input": [-71.5, 70.0], "expected": 70.0}, {"input": [-71.5, 70.5], "expected": 70.5}, {"input": [-71.5, 71.0], "expected": 71.0}, {"input": [-71.5, 71.5], "expected": 71.5}, {"input": [-71.5, 72.0], "expected": 72.0}, {"input": [-71.5, 72.5], "expected": 72.5}, {"input": [-71.5, 73.0], "expected": 73.0}, {"input": [-71.5, 73.5], "expected": 73.5}, {"input": [-71.5, 74.0], "expected": 74.0}, {"input": [-71.5, 74.5], "expected": 74.5}, {"input": [-71.5, 75.0], "expected": 75.0}, {"input": [-71.5, 75.5], "expected": 75.5}, {"input": [-71.5, 76.0], "expected": 76.0}, {"input": [-71.5, 76.5], "expected": 76.5}, {"input": [-71.5, 77.0], "expected": 77.0}, {"input": [-71.5, 77.5], "expected": 77.5}, {"input": [-71.5, 78.0], "expected": 78.0}, {"input": [-71.5, 78.5], "expected": 78.5}, {"input": [-71.5, 79.0], "expected": 79.0}, {"input": [-71.5, 79.5], "expected": 79.5}, {"input": [-71.5, 80.0], "expected": 80.0}, {"input": [-71.5, 80.5], "expected": 80.5}, {"input": [-71.5, 81.0], "expected": 81.0}, {"input": [-71.5, 81.5], "expected": 81.5}, {"input": [-71.5, 82.0], "expected": 82.0}, {"input": [-71.5, 82.5], "expected": 82.5}, {"input": [-71.5, 83.0], "expected": 83.0}, {"input": [-71.5, 83.5], "expected": 83.5}, {"input": [-71.5, 84.0], "expected": 84.0}, {"input": [-71.5, 84.5], "expected": 84.5}, {"input": [-71.5, 85.0], "expected": 85.0}, {"input": [-71.5, 85.5], "expected": 85.5}, {"input": [-71.5, 86.0], "expected": 86.0}, {"input": [-71.5, 86.5], "expected": 86.5}, {"input": [-71.5, 87.0], "expected": 87.0}, {"input": [-71.5, 87.5], "expected": 87.5}, {"input": [-71.5, 88.0], "expected": 88.0}, {"input": [-71.5, 88.5], "expected": 88.5}, {"input": [-71.5, 89.0], "expected": 89.0}, {"input": [-71.5, 89.5], "expected": 89.5}, {"input": [-71.5, 90.0], "expected": 90.0}, {"input": [-71.5, 90.5], "expected": 90.5}, {"input": [-71.5, 91.0], "expected": 91.0}, {"input": [-71.5, 91.5], "expected": 91.5}, {"input": [-71.5, 92.0], "expected": 92.0}, {"input": [-71.5, 92.5], "expected": 92.5}, {"input": [-71.5, 93.0], "expected": 93.0}, {"input": [-71.5, 93.5], "expected": 93.5}, {"input": [-71.5, 94.0], "expected": 94.0}, {"input": [-71.5, 94.5], "expected": 94.5}, {"input": [-71.5, 95.0], "expected": 95.0}, {"input": [-71.5, 95.5], "expected": 95.5}, {"input": [-71.5, 96.0], "expected": 96.0}, {"input": [-71.5, 96.5], "expected": 96.5}, {"input": [-71.5, 97.0], "expected": 97.0}, {"input": [-71.5, 97.5], "expected": 97.5}, {"input": [-71.5, 98.0], "expected": 98.0}, {"input": [-71.5, 98.5], "expected": 98.5}, {"input": [-71.5, 99.0], "expected": 99.0}, {"input": [-71.5, 99.5], "expected": 99.5}, {"input": [-71.0, -100.0], "expected": -70.99999999999974}, {"input": [-71.0, -99.5], "expected": -70.99999999999957}, {"input": [-71.0, -99.0], "expected": -70.9999999999993}, {"input": [-71.0, -98.5], "expected": -70.99999999999886}, {"input": [-71.0, -98.0], "expected": -70.99999999999812}, {"input": [-71.0, -97.5], "expected": -70.9999999999969}, {"input": [-71.0, -97.0], "expected": -70.99999999999488}, {"input": [-71.0, -96.5], "expected": -70.99999999999157}, {"input": [-71.0, -96.0], "expected": -70.99999999998612}, {"input": [-71.0, -95.5], "expected": -70.9999999999771}, {"input": [-71.0, -95.0], "expected": -70.99999999996224}, {"input": [-71.0, -94.5], "expected": -70.99999999993776}, {"input": [-71.0, -94.0], "expected": -70.99999999989738}, {"input": [-71.0, -93.5], "expected": -70.9999999998308}, {"input": [-71.0, -93.0], "expected": -70.99999999972106}, {"input": [-71.0, -92.5], "expected": -70.9999999995401}, {"input": [-71.0, -92.0], "expected": -70.99999999924174}, {"input": [-71.0, -91.5], "expected": -70.99999999874984}, {"input": [-71.0, -91.0], "expected": -70.99999999793884}, {"input": [-71.0, -90.5], "expected": -70.99999999660173}, {"input": [-71.0, -90.0], "expected": -70.9999999943972}, {"input": [-71.0, -89.5], "expected": -70.99999999076255}, {"input": [-71.0, -89.0], "expected": -70.99999998477001}, {"input": [-71.0, -88.5], "expected": -70.99999997489}, {"input": [-71.0, -88.0], "expected": -70.99999995860063}, {"input": [-71.0, -87.5], "expected": -70.99999993174397}, {"input": [-71.0, -87.0], "expected": -70.99999988746484}, {"input": [-71.0, -86.5], "expected": -70.99999981446088}, {"input": [-71.0, -86.0], "expected": -70.99999969409772}, {"input": [-71.0, -85.5], "expected": -70.99999949565246}, {"input": [-71.0, -85.0], "expected": -70.99999916847163}, {"input": [-71.0, -84.5], "expected": -70.99999862904185}, {"input": [-71.0, -84.0], "expected": -70.99999773967315}, {"input": [-71.0, -83.5], "expected": -70.99999627335377}, {"input": [-71.0, -83.0], "expected": -70.99999385580652}, {"input": [-71.0, -82.5], "expected": -70.99998986995772}, {"input": [-71.0, -82.0], "expected": -70.99998329843868}, {"input": [-71.0, -81.5], "expected": -70.99997246392977}, {"input": [-71.0, -81.0], "expected": -70.99995460110078}, {"input": [-71.0, -80.5], "expected": -70.99992515097136}, {"input": [-71.0, -80.0], "expected": -70.99987659781027}, {"input": [-71.0, -79.5], "expected": -70.99979655232787}, {"input": [-71.0, -79.0], "expected": -70.9996645936271}, {"input": [-71.0, -78.5], "expected": -70.99944706852465}, {"input": [-71.0, -78.0], "expected": -70.99908853354623}, {"input": [-71.0, -77.5], "expected": -70.99849768984025}, {"input": [-71.0, -77.0], "expected": -70.99752431486228}, {"input": [-71.0, -76.5], "expected": -70.99592155672943}, {"input": [-71.0, -76.0], "expected": -70.99328465151088}, {"input": [-71.0, -75.5], "expected": -70.9889522551514}, {"input": [-71.0, -75.0], "expected": -70.9818500720822}, {"input": [-71.0, -74.5], "expected": -70.97024958172737}, {"input": [-71.0, -74.0], "expected": -70.95141264842626}, {"input": [-71.0, -73.5], "expected": -70.92111026570745}, {"input": [-71.0, -73.0], "expected": -70.87307198895702}, {"input": [-71.0, -72.5], "expected": -70.79858672201725}, {"input": [-71.0, -72.0], "expected": -70.68673831248178}, {"input": [-71.0, -71.5], "expected": -70.5259230158199}, {"input": [-71.0, -71.0], "expected": -70.30685281944005}, {"input": [-71.0, -70.5], "expected": -70.0259230158199}, {"input": [-71.0, -70.0], "expected": -69.68673831248178}, {"input": [-71.0, -69.5], "expected": -69.29858672201725}, {"input": [-71.0, -69.0], "expected": -68.87307198895702}, {"input": [-71.0, -68.5], "expected": -68.42111026570745}, {"input": [-71.0, -68.0], "expected": -67.95141264842626}, {"input": [-71.0, -67.5], "expected": -67.47024958172737}, {"input": [-71.0, -67.0], "expected": -66.9818500720822}, {"input": [-71.0, -66.5], "expected": -66.4889522551514}, {"input": [-71.0, -66.0], "expected": -65.99328465151088}, {"input": [-71.0, -65.5], "expected": -65.49592155672943}, {"input": [-71.0, -65.0], "expected": -64.99752431486228}, {"input": [-71.0, -64.5], "expected": -64.49849768984025}, {"input": [-71.0, -64.0], "expected": -63.99908853354623}, {"input": [-71.0, -63.5], "expected": -63.49944706852464}, {"input": [-71.0, -63.0], "expected": -62.9996645936271}, {"input": [-71.0, -62.5], "expected": -62.49979655232787}, {"input": [-71.0, -62.0], "expected": -61.99987659781028}, {"input": [-71.0, -61.5], "expected": -61.49992515097137}, {"input": [-71.0, -61.0], "expected": -60.99995460110078}, {"input": [-71.0, -60.5], "expected": -60.49997246392977}, {"input": [-71.0, -60.0], "expected": -59.99998329843868}, {"input": [-71.0, -59.5], "expected": -59.49998986995771}, {"input": [-71.0, -59.0], "expected": -58.99999385580652}, {"input": [-71.0, -58.5], "expected": -58.49999627335377}, {"input": [-71.0, -58.0], "expected": -57.99999773967315}, {"input": [-71.0, -57.5], "expected": -57.499998629041855}, {"input": [-71.0, -57.0], "expected": -56.999999168471625}, {"input": [-71.0, -56.5], "expected": -56.49999949565247}, {"input": [-71.0, -56.0], "expected": -55.999999694097724}, {"input": [-71.0, -55.5], "expected": -55.49999981446088}, {"input": [-71.0, -55.0], "expected": -54.99999988746483}, {"input": [-71.0, -54.5], "expected": -54.49999993174397}, {"input": [-71.0, -54.0], "expected": -53.999999958600625}, {"input": [-71.0, -53.5], "expected": -53.49999997489001}, {"input": [-71.0, -53.0], "expected": -52.99999998477002}, {"input": [-71.0, -52.5], "expected": -52.499999990762554}, {"input": [-71.0, -52.0], "expected": -51.99999999439721}, {"input": [-71.0, -51.5], "expected": -51.49999999660173}, {"input": [-71.0, -51.0], "expected": -50.99999999793884}, {"input": [-71.0, -50.5], "expected": -50.49999999874985}, {"input": [-71.0, -50.0], "expected": -49.999999999241744}, {"input": [-71.0, -49.5], "expected": -49.499999999540094}, {"input": [-71.0, -49.0], "expected": -48.999999999721055}, {"input": [-71.0, -48.5], "expected": -48.49999999983081}, {"input": [-71.0, -48.0], "expected": -47.99999999989738}, {"input": [-71.0, -47.5], "expected": -47.49999999993776}, {"input": [-71.0, -47.0], "expected": -46.99999999996225}, {"input": [-71.0, -46.5], "expected": -46.4999999999771}, {"input": [-71.0, -46.0], "expected": -45.99999999998611}, {"input": [-71.0, -45.5], "expected": -45.49999999999158}, {"input": [-71.0, -45.0], "expected": -44.99999999999489}, {"input": [-71.0, -44.5], "expected": -44.4999999999969}, {"input": [-71.0, -44.0], "expected": -43.99999999999812}, {"input": [-71.0, -43.5], "expected": -43.49999999999886}, {"input": [-71.0, -43.0], "expected": -42.99999999999931}, {"input": [-71.0, -42.5], "expected": -42.49999999999958}, {"input": [-71.0, -42.0], "expected": -41.999999999999744}, {"input": [-71.0, -41.5], "expected": -41.499999999999844}, {"input": [-71.0, -41.0], "expected": -40.99999999999991}, {"input": [-71.0, -40.5], "expected": -40.49999999999994}, {"input": [-71.0, -40.0], "expected": -39.999999999999964}, {"input": [-71.0, -39.5], "expected": -39.49999999999998}, {"input": [-71.0, -39.0], "expected": -38.999999999999986}, {"input": [-71.0, -38.5], "expected": -38.49999999999999}, {"input": [-71.0, -38.0], "expected": -37.99999999999999}, {"input": [-71.0, -37.5], "expected": -37.5}, {"input": [-71.0, -37.0], "expected": -37.0}, {"input": [-71.0, -36.5], "expected": -36.5}, {"input": [-71.0, -36.0], "expected": -36.0}, {"input": [-71.0, -35.5], "expected": -35.5}, {"input": [-71.0, -35.0], "expected": -35.0}, {"input": [-71.0, -34.5], "expected": -34.5}, {"input": [-71.0, -34.0], "expected": -34.0}, {"input": [-71.0, -33.5], "expected": -33.5}, {"input": [-71.0, -33.0], "expected": -33.0}, {"input": [-71.0, -32.5], "expected": -32.5}, {"input": [-71.0, -32.0], "expected": -32.0}, {"input": [-71.0, -31.5], "expected": -31.5}, {"input": [-71.0, -31.0], "expected": -31.0}, {"input": [-71.0, -30.5], "expected": -30.5}, {"input": [-71.0, -30.0], "expected": -30.0}, {"input": [-71.0, -29.5], "expected": -29.5}, {"input": [-71.0, -29.0], "expected": -29.0}, {"input": [-71.0, -28.5], "expected": -28.5}, {"input": [-71.0, -28.0], "expected": -28.0}, {"input": [-71.0, -27.5], "expected": -27.5}, {"input": [-71.0, -27.0], "expected": -27.0}, {"input": [-71.0, -26.5], "expected": -26.5}, {"input": [-71.0, -26.0], "expected": -26.0}, {"input": [-71.0, -25.5], "expected": -25.5}, {"input": [-71.0, -25.0], "expected": -25.0}, {"input": [-71.0, -24.5], "expected": -24.5}, {"input": [-71.0, -24.0], "expected": -24.0}, {"input": [-71.0, -23.5], "expected": -23.5}, {"input": [-71.0, -23.0], "expected": -23.0}, {"input": [-71.0, -22.5], "expected": -22.5}, {"input": [-71.0, -22.0], "expected": -22.0}, {"input": [-71.0, -21.5], "expected": -21.5}, {"input": [-71.0, -21.0], "expected": -21.0}, {"input": [-71.0, -20.5], "expected": -20.5}, {"input": [-71.0, -20.0], "expected": -20.0}, {"input": [-71.0, -19.5], "expected": -19.5}, {"input": [-71.0, -19.0], "expected": -19.0}, {"input": [-71.0, -18.5], "expected": -18.5}, {"input": [-71.0, -18.0], "expected": -18.0}, {"input": [-71.0, -17.5], "expected": -17.5}, {"input": [-71.0, -17.0], "expected": -17.0}, {"input": [-71.0, -16.5], "expected": -16.5}, {"input": [-71.0, -16.0], "expected": -16.0}, {"input": [-71.0, -15.5], "expected": -15.5}, {"input": [-71.0, -15.0], "expected": -15.0}, {"input": [-71.0, -14.5], "expected": -14.5}, {"input": [-71.0, -14.0], "expected": -14.0}, {"input": [-71.0, -13.5], "expected": -13.5}, {"input": [-71.0, -13.0], "expected": -13.0}, {"input": [-71.0, -12.5], "expected": -12.5}, {"input": [-71.0, -12.0], "expected": -12.0}, {"input": [-71.0, -11.5], "expected": -11.5}, {"input": [-71.0, -11.0], "expected": -11.0}, {"input": [-71.0, -10.5], "expected": -10.5}, {"input": [-71.0, -10.0], "expected": -10.0}, {"input": [-71.0, -9.5], "expected": -9.5}, {"input": [-71.0, -9.0], "expected": -9.0}, {"input": [-71.0, -8.5], "expected": -8.5}, {"input": [-71.0, -8.0], "expected": -8.0}, {"input": [-71.0, -7.5], "expected": -7.5}, {"input": [-71.0, -7.0], "expected": -7.0}, {"input": [-71.0, -6.5], "expected": -6.5}, {"input": [-71.0, -6.0], "expected": -6.0}, {"input": [-71.0, -5.5], "expected": -5.5}, {"input": [-71.0, -5.0], "expected": -5.0}, {"input": [-71.0, -4.5], "expected": -4.5}, {"input": [-71.0, -4.0], "expected": -4.0}, {"input": [-71.0, -3.5], "expected": -3.5}, {"input": [-71.0, -3.0], "expected": -3.0}, {"input": [-71.0, -2.5], "expected": -2.5}, {"input": [-71.0, -2.0], "expected": -2.0}, {"input": [-71.0, -1.5], "expected": -1.5}, {"input": [-71.0, -1.0], "expected": -1.0}, {"input": [-71.0, -0.5], "expected": -0.5}, {"input": [-71.0, 0.0], "expected": 1.462486227251231e-31}, {"input": [-71.0, 0.5], "expected": 0.5}, {"input": [-71.0, 1.0], "expected": 1.0}, {"input": [-71.0, 1.5], "expected": 1.5}, {"input": [-71.0, 2.0], "expected": 2.0}, {"input": [-71.0, 2.5], "expected": 2.5}, {"input": [-71.0, 3.0], "expected": 3.0}, {"input": [-71.0, 3.5], "expected": 3.5}, {"input": [-71.0, 4.0], "expected": 4.0}, {"input": [-71.0, 4.5], "expected": 4.5}, {"input": [-71.0, 5.0], "expected": 5.0}, {"input": [-71.0, 5.5], "expected": 5.5}, {"input": [-71.0, 6.0], "expected": 6.0}, {"input": [-71.0, 6.5], "expected": 6.5}, {"input": [-71.0, 7.0], "expected": 7.0}, {"input": [-71.0, 7.5], "expected": 7.5}, {"input": [-71.0, 8.0], "expected": 8.0}, {"input": [-71.0, 8.5], "expected": 8.5}, {"input": [-71.0, 9.0], "expected": 9.0}, {"input": [-71.0, 9.5], "expected": 9.5}, {"input": [-71.0, 10.0], "expected": 10.0}, {"input": [-71.0, 10.5], "expected": 10.5}, {"input": [-71.0, 11.0], "expected": 11.0}, {"input": [-71.0, 11.5], "expected": 11.5}, {"input": [-71.0, 12.0], "expected": 12.0}, {"input": [-71.0, 12.5], "expected": 12.5}, {"input": [-71.0, 13.0], "expected": 13.0}, {"input": [-71.0, 13.5], "expected": 13.5}, {"input": [-71.0, 14.0], "expected": 14.0}, {"input": [-71.0, 14.5], "expected": 14.5}, {"input": [-71.0, 15.0], "expected": 15.0}, {"input": [-71.0, 15.5], "expected": 15.5}, {"input": [-71.0, 16.0], "expected": 16.0}, {"input": [-71.0, 16.5], "expected": 16.5}, {"input": [-71.0, 17.0], "expected": 17.0}, {"input": [-71.0, 17.5], "expected": 17.5}, {"input": [-71.0, 18.0], "expected": 18.0}, {"input": [-71.0, 18.5], "expected": 18.5}, {"input": [-71.0, 19.0], "expected": 19.0}, {"input": [-71.0, 19.5], "expected": 19.5}, {"input": [-71.0, 20.0], "expected": 20.0}, {"input": [-71.0, 20.5], "expected": 20.5}, {"input": [-71.0, 21.0], "expected": 21.0}, {"input": [-71.0, 21.5], "expected": 21.5}, {"input": [-71.0, 22.0], "expected": 22.0}, {"input": [-71.0, 22.5], "expected": 22.5}, {"input": [-71.0, 23.0], "expected": 23.0}, {"input": [-71.0, 23.5], "expected": 23.5}, {"input": [-71.0, 24.0], "expected": 24.0}, {"input": [-71.0, 24.5], "expected": 24.5}, {"input": [-71.0, 25.0], "expected": 25.0}, {"input": [-71.0, 25.5], "expected": 25.5}, {"input": [-71.0, 26.0], "expected": 26.0}, {"input": [-71.0, 26.5], "expected": 26.5}, {"input": [-71.0, 27.0], "expected": 27.0}, {"input": [-71.0, 27.5], "expected": 27.5}, {"input": [-71.0, 28.0], "expected": 28.0}, {"input": [-71.0, 28.5], "expected": 28.5}, {"input": [-71.0, 29.0], "expected": 29.0}, {"input": [-71.0, 29.5], "expected": 29.5}, {"input": [-71.0, 30.0], "expected": 30.0}, {"input": [-71.0, 30.5], "expected": 30.5}, {"input": [-71.0, 31.0], "expected": 31.0}, {"input": [-71.0, 31.5], "expected": 31.5}, {"input": [-71.0, 32.0], "expected": 32.0}, {"input": [-71.0, 32.5], "expected": 32.5}, {"input": [-71.0, 33.0], "expected": 33.0}, {"input": [-71.0, 33.5], "expected": 33.5}, {"input": [-71.0, 34.0], "expected": 34.0}, {"input": [-71.0, 34.5], "expected": 34.5}, {"input": [-71.0, 35.0], "expected": 35.0}, {"input": [-71.0, 35.5], "expected": 35.5}, {"input": [-71.0, 36.0], "expected": 36.0}, {"input": [-71.0, 36.5], "expected": 36.5}, {"input": [-71.0, 37.0], "expected": 37.0}, {"input": [-71.0, 37.5], "expected": 37.5}, {"input": [-71.0, 38.0], "expected": 38.0}, {"input": [-71.0, 38.5], "expected": 38.5}, {"input": [-71.0, 39.0], "expected": 39.0}, {"input": [-71.0, 39.5], "expected": 39.5}, {"input": [-71.0, 40.0], "expected": 40.0}, {"input": [-71.0, 40.5], "expected": 40.5}, {"input": [-71.0, 41.0], "expected": 41.0}, {"input": [-71.0, 41.5], "expected": 41.5}, {"input": [-71.0, 42.0], "expected": 42.0}, {"input": [-71.0, 42.5], "expected": 42.5}, {"input": [-71.0, 43.0], "expected": 43.0}, {"input": [-71.0, 43.5], "expected": 43.5}, {"input": [-71.0, 44.0], "expected": 44.0}, {"input": [-71.0, 44.5], "expected": 44.5}, {"input": [-71.0, 45.0], "expected": 45.0}, {"input": [-71.0, 45.5], "expected": 45.5}, {"input": [-71.0, 46.0], "expected": 46.0}, {"input": [-71.0, 46.5], "expected": 46.5}, {"input": [-71.0, 47.0], "expected": 47.0}, {"input": [-71.0, 47.5], "expected": 47.5}, {"input": [-71.0, 48.0], "expected": 48.0}, {"input": [-71.0, 48.5], "expected": 48.5}, {"input": [-71.0, 49.0], "expected": 49.0}, {"input": [-71.0, 49.5], "expected": 49.5}, {"input": [-71.0, 50.0], "expected": 50.0}, {"input": [-71.0, 50.5], "expected": 50.5}, {"input": [-71.0, 51.0], "expected": 51.0}, {"input": [-71.0, 51.5], "expected": 51.5}, {"input": [-71.0, 52.0], "expected": 52.0}, {"input": [-71.0, 52.5], "expected": 52.5}, {"input": [-71.0, 53.0], "expected": 53.0}, {"input": [-71.0, 53.5], "expected": 53.5}, {"input": [-71.0, 54.0], "expected": 54.0}, {"input": [-71.0, 54.5], "expected": 54.5}, {"input": [-71.0, 55.0], "expected": 55.0}, {"input": [-71.0, 55.5], "expected": 55.5}, {"input": [-71.0, 56.0], "expected": 56.0}, {"input": [-71.0, 56.5], "expected": 56.5}, {"input": [-71.0, 57.0], "expected": 57.0}, {"input": [-71.0, 57.5], "expected": 57.5}, {"input": [-71.0, 58.0], "expected": 58.0}, {"input": [-71.0, 58.5], "expected": 58.5}, {"input": [-71.0, 59.0], "expected": 59.0}, {"input": [-71.0, 59.5], "expected": 59.5}, {"input": [-71.0, 60.0], "expected": 60.0}, {"input": [-71.0, 60.5], "expected": 60.5}, {"input": [-71.0, 61.0], "expected": 61.0}, {"input": [-71.0, 61.5], "expected": 61.5}, {"input": [-71.0, 62.0], "expected": 62.0}, {"input": [-71.0, 62.5], "expected": 62.5}, {"input": [-71.0, 63.0], "expected": 63.0}, {"input": [-71.0, 63.5], "expected": 63.5}, {"input": [-71.0, 64.0], "expected": 64.0}, {"input": [-71.0, 64.5], "expected": 64.5}, {"input": [-71.0, 65.0], "expected": 65.0}, {"input": [-71.0, 65.5], "expected": 65.5}, {"input": [-71.0, 66.0], "expected": 66.0}, {"input": [-71.0, 66.5], "expected": 66.5}, {"input": [-71.0, 67.0], "expected": 67.0}, {"input": [-71.0, 67.5], "expected": 67.5}, {"input": [-71.0, 68.0], "expected": 68.0}, {"input": [-71.0, 68.5], "expected": 68.5}, {"input": [-71.0, 69.0], "expected": 69.0}, {"input": [-71.0, 69.5], "expected": 69.5}, {"input": [-71.0, 70.0], "expected": 70.0}, {"input": [-71.0, 70.5], "expected": 70.5}, {"input": [-71.0, 71.0], "expected": 71.0}, {"input": [-71.0, 71.5], "expected": 71.5}, {"input": [-71.0, 72.0], "expected": 72.0}, {"input": [-71.0, 72.5], "expected": 72.5}, {"input": [-71.0, 73.0], "expected": 73.0}, {"input": [-71.0, 73.5], "expected": 73.5}, {"input": [-71.0, 74.0], "expected": 74.0}, {"input": [-71.0, 74.5], "expected": 74.5}, {"input": [-71.0, 75.0], "expected": 75.0}, {"input": [-71.0, 75.5], "expected": 75.5}, {"input": [-71.0, 76.0], "expected": 76.0}, {"input": [-71.0, 76.5], "expected": 76.5}, {"input": [-71.0, 77.0], "expected": 77.0}, {"input": [-71.0, 77.5], "expected": 77.5}, {"input": [-71.0, 78.0], "expected": 78.0}, {"input": [-71.0, 78.5], "expected": 78.5}, {"input": [-71.0, 79.0], "expected": 79.0}, {"input": [-71.0, 79.5], "expected": 79.5}, {"input": [-71.0, 80.0], "expected": 80.0}, {"input": [-71.0, 80.5], "expected": 80.5}, {"input": [-71.0, 81.0], "expected": 81.0}, {"input": [-71.0, 81.5], "expected": 81.5}, {"input": [-71.0, 82.0], "expected": 82.0}, {"input": [-71.0, 82.5], "expected": 82.5}, {"input": [-71.0, 83.0], "expected": 83.0}, {"input": [-71.0, 83.5], "expected": 83.5}, {"input": [-71.0, 84.0], "expected": 84.0}, {"input": [-71.0, 84.5], "expected": 84.5}, {"input": [-71.0, 85.0], "expected": 85.0}, {"input": [-71.0, 85.5], "expected": 85.5}, {"input": [-71.0, 86.0], "expected": 86.0}, {"input": [-71.0, 86.5], "expected": 86.5}, {"input": [-71.0, 87.0], "expected": 87.0}, {"input": [-71.0, 87.5], "expected": 87.5}, {"input": [-71.0, 88.0], "expected": 88.0}, {"input": [-71.0, 88.5], "expected": 88.5}, {"input": [-71.0, 89.0], "expected": 89.0}, {"input": [-71.0, 89.5], "expected": 89.5}, {"input": [-71.0, 90.0], "expected": 90.0}, {"input": [-71.0, 90.5], "expected": 90.5}, {"input": [-71.0, 91.0], "expected": 91.0}, {"input": [-71.0, 91.5], "expected": 91.5}, {"input": [-71.0, 92.0], "expected": 92.0}, {"input": [-71.0, 92.5], "expected": 92.5}, {"input": [-71.0, 93.0], "expected": 93.0}, {"input": [-71.0, 93.5], "expected": 93.5}, {"input": [-71.0, 94.0], "expected": 94.0}, {"input": [-71.0, 94.5], "expected": 94.5}, {"input": [-71.0, 95.0], "expected": 95.0}, {"input": [-71.0, 95.5], "expected": 95.5}, {"input": [-71.0, 96.0], "expected": 96.0}, {"input": [-71.0, 96.5], "expected": 96.5}, {"input": [-71.0, 97.0], "expected": 97.0}, {"input": [-71.0, 97.5], "expected": 97.5}, {"input": [-71.0, 98.0], "expected": 98.0}, {"input": [-71.0, 98.5], "expected": 98.5}, {"input": [-71.0, 99.0], "expected": 99.0}, {"input": [-71.0, 99.5], "expected": 99.5}, {"input": [-70.5, -100.0], "expected": -70.49999999999984}, {"input": [-70.5, -99.5], "expected": -70.49999999999974}, {"input": [-70.5, -99.0], "expected": -70.49999999999957}, {"input": [-70.5, -98.5], "expected": -70.4999999999993}, {"input": [-70.5, -98.0], "expected": -70.49999999999886}, {"input": [-70.5, -97.5], "expected": -70.49999999999812}, {"input": [-70.5, -97.0], "expected": -70.4999999999969}, {"input": [-70.5, -96.5], "expected": -70.49999999999488}, {"input": [-70.5, -96.0], "expected": -70.49999999999157}, {"input": [-70.5, -95.5], "expected": -70.49999999998612}, {"input": [-70.5, -95.0], "expected": -70.4999999999771}, {"input": [-70.5, -94.5], "expected": -70.49999999996224}, {"input": [-70.5, -94.0], "expected": -70.49999999993776}, {"input": [-70.5, -93.5], "expected": -70.49999999989738}, {"input": [-70.5, -93.0], "expected": -70.4999999998308}, {"input": [-70.5, -92.5], "expected": -70.49999999972106}, {"input": [-70.5, -92.0], "expected": -70.4999999995401}, {"input": [-70.5, -91.5], "expected": -70.49999999924174}, {"input": [-70.5, -91.0], "expected": -70.49999999874984}, {"input": [-70.5, -90.5], "expected": -70.49999999793884}, {"input": [-70.5, -90.0], "expected": -70.49999999660173}, {"input": [-70.5, -89.5], "expected": -70.4999999943972}, {"input": [-70.5, -89.0], "expected": -70.49999999076255}, {"input": [-70.5, -88.5], "expected": -70.49999998477001}, {"input": [-70.5, -88.0], "expected": -70.49999997489}, {"input": [-70.5, -87.5], "expected": -70.49999995860063}, {"input": [-70.5, -87.0], "expected": -70.49999993174397}, {"input": [-70.5, -86.5], "expected": -70.49999988746484}, {"input": [-70.5, -86.0], "expected": -70.49999981446088}, {"input": [-70.5, -85.5], "expected": -70.49999969409772}, {"input": [-70.5, -85.0], "expected": -70.49999949565246}, {"input": [-70.5, -84.5], "expected": -70.49999916847163}, {"input": [-70.5, -84.0], "expected": -70.49999862904185}, {"input": [-70.5, -83.5], "expected": -70.49999773967315}, {"input": [-70.5, -83.0], "expected": -70.49999627335377}, {"input": [-70.5, -82.5], "expected": -70.49999385580652}, {"input": [-70.5, -82.0], "expected": -70.49998986995772}, {"input": [-70.5, -81.5], "expected": -70.49998329843868}, {"input": [-70.5, -81.0], "expected": -70.49997246392977}, {"input": [-70.5, -80.5], "expected": -70.49995460110078}, {"input": [-70.5, -80.0], "expected": -70.49992515097136}, {"input": [-70.5, -79.5], "expected": -70.49987659781027}, {"input": [-70.5, -79.0], "expected": -70.49979655232787}, {"input": [-70.5, -78.5], "expected": -70.4996645936271}, {"input": [-70.5, -78.0], "expected": -70.49944706852465}, {"input": [-70.5, -77.5], "expected": -70.49908853354623}, {"input": [-70.5, -77.0], "expected": -70.49849768984025}, {"input": [-70.5, -76.5], "expected": -70.49752431486228}, {"input": [-70.5, -76.0], "expected": -70.49592155672943}, {"input": [-70.5, -75.5], "expected": -70.49328465151088}, {"input": [-70.5, -75.0], "expected": -70.4889522551514}, {"input": [-70.5, -74.5], "expected": -70.4818500720822}, {"input": [-70.5, -74.0], "expected": -70.47024958172737}, {"input": [-70.5, -73.5], "expected": -70.45141264842626}, {"input": [-70.5, -73.0], "expected": -70.42111026570745}, {"input": [-70.5, -72.5], "expected": -70.37307198895702}, {"input": [-70.5, -72.0], "expected": -70.29858672201725}, {"input": [-70.5, -71.5], "expected": -70.18673831248178}, {"input": [-70.5, -71.0], "expected": -70.0259230158199}, {"input": [-70.5, -70.5], "expected": -69.80685281944005}, {"input": [-70.5, -70.0], "expected": -69.5259230158199}, {"input": [-70.5, -69.5], "expected": -69.18673831248178}, {"input": [-70.5, -69.0], "expected": -68.79858672201725}, {"input": [-70.5, -68.5], "expected": -68.37307198895702}, {"input": [-70.5, -68.0], "expected": -67.92111026570745}, {"input": [-70.5, -67.5], "expected": -67.45141264842626}, {"input": [-70.5, -67.0], "expected": -66.97024958172737}, {"input": [-70.5, -66.5], "expected": -66.4818500720822}, {"input": [-70.5, -66.0], "expected": -65.9889522551514}, {"input": [-70.5, -65.5], "expected": -65.49328465151088}, {"input": [-70.5, -65.0], "expected": -64.99592155672943}, {"input": [-70.5, -64.5], "expected": -64.49752431486228}, {"input": [-70.5, -64.0], "expected": -63.99849768984024}, {"input": [-70.5, -63.5], "expected": -63.49908853354623}, {"input": [-70.5, -63.0], "expected": -62.99944706852464}, {"input": [-70.5, -62.5], "expected": -62.4996645936271}, {"input": [-70.5, -62.0], "expected": -61.99979655232787}, {"input": [-70.5, -61.5], "expected": -61.49987659781028}, {"input": [-70.5, -61.0], "expected": -60.99992515097137}, {"input": [-70.5, -60.5], "expected": -60.49995460110078}, {"input": [-70.5, -60.0], "expected": -59.99997246392977}, {"input": [-70.5, -59.5], "expected": -59.49998329843868}, {"input": [-70.5, -59.0], "expected": -58.99998986995771}, {"input": [-70.5, -58.5], "expected": -58.49999385580652}, {"input": [-70.5, -58.0], "expected": -57.99999627335377}, {"input": [-70.5, -57.5], "expected": -57.49999773967315}, {"input": [-70.5, -57.0], "expected": -56.999998629041855}, {"input": [-70.5, -56.5], "expected": -56.499999168471625}, {"input": [-70.5, -56.0], "expected": -55.99999949565247}, {"input": [-70.5, -55.5], "expected": -55.499999694097724}, {"input": [-70.5, -55.0], "expected": -54.99999981446088}, {"input": [-70.5, -54.5], "expected": -54.49999988746483}, {"input": [-70.5, -54.0], "expected": -53.99999993174397}, {"input": [-70.5, -53.5], "expected": -53.499999958600625}, {"input": [-70.5, -53.0], "expected": -52.99999997489001}, {"input": [-70.5, -52.5], "expected": -52.49999998477002}, {"input": [-70.5, -52.0], "expected": -51.999999990762554}, {"input": [-70.5, -51.5], "expected": -51.49999999439721}, {"input": [-70.5, -51.0], "expected": -50.99999999660173}, {"input": [-70.5, -50.5], "expected": -50.49999999793884}, {"input": [-70.5, -50.0], "expected": -49.99999999874985}, {"input": [-70.5, -49.5], "expected": -49.499999999241744}, {"input": [-70.5, -49.0], "expected": -48.999999999540094}, {"input": [-70.5, -48.5], "expected": -48.499999999721055}, {"input": [-70.5, -48.0], "expected": -47.99999999983081}, {"input": [-70.5, -47.5], "expected": -47.49999999989738}, {"input": [-70.5, -47.0], "expected": -46.99999999993776}, {"input": [-70.5, -46.5], "expected": -46.49999999996225}, {"input": [-70.5, -46.0], "expected": -45.9999999999771}, {"input": [-70.5, -45.5], "expected": -45.49999999998611}, {"input": [-70.5, -45.0], "expected": -44.99999999999158}, {"input": [-70.5, -44.5], "expected": -44.49999999999489}, {"input": [-70.5, -44.0], "expected": -43.9999999999969}, {"input": [-70.5, -43.5], "expected": -43.49999999999812}, {"input": [-70.5, -43.0], "expected": -42.99999999999886}, {"input": [-70.5, -42.5], "expected": -42.49999999999931}, {"input": [-70.5, -42.0], "expected": -41.99999999999958}, {"input": [-70.5, -41.5], "expected": -41.499999999999744}, {"input": [-70.5, -41.0], "expected": -40.999999999999844}, {"input": [-70.5, -40.5], "expected": -40.49999999999991}, {"input": [-70.5, -40.0], "expected": -39.99999999999994}, {"input": [-70.5, -39.5], "expected": -39.499999999999964}, {"input": [-70.5, -39.0], "expected": -38.99999999999998}, {"input": [-70.5, -38.5], "expected": -38.499999999999986}, {"input": [-70.5, -38.0], "expected": -37.99999999999999}, {"input": [-70.5, -37.5], "expected": -37.49999999999999}, {"input": [-70.5, -37.0], "expected": -37.0}, {"input": [-70.5, -36.5], "expected": -36.5}, {"input": [-70.5, -36.0], "expected": -36.0}, {"input": [-70.5, -35.5], "expected": -35.5}, {"input": [-70.5, -35.0], "expected": -35.0}, {"input": [-70.5, -34.5], "expected": -34.5}, {"input": [-70.5, -34.0], "expected": -34.0}, {"input": [-70.5, -33.5], "expected": -33.5}, {"input": [-70.5, -33.0], "expected": -33.0}, {"input": [-70.5, -32.5], "expected": -32.5}, {"input": [-70.5, -32.0], "expected": -32.0}, {"input": [-70.5, -31.5], "expected": -31.5}, {"input": [-70.5, -31.0], "expected": -31.0}, {"input": [-70.5, -30.5], "expected": -30.5}, {"input": [-70.5, -30.0], "expected": -30.0}, {"input": [-70.5, -29.5], "expected": -29.5}, {"input": [-70.5, -29.0], "expected": -29.0}, {"input": [-70.5, -28.5], "expected": -28.5}, {"input": [-70.5, -28.0], "expected": -28.0}, {"input": [-70.5, -27.5], "expected": -27.5}, {"input": [-70.5, -27.0], "expected": -27.0}, {"input": [-70.5, -26.5], "expected": -26.5}, {"input": [-70.5, -26.0], "expected": -26.0}, {"input": [-70.5, -25.5], "expected": -25.5}, {"input": [-70.5, -25.0], "expected": -25.0}, {"input": [-70.5, -24.5], "expected": -24.5}, {"input": [-70.5, -24.0], "expected": -24.0}, {"input": [-70.5, -23.5], "expected": -23.5}, {"input": [-70.5, -23.0], "expected": -23.0}, {"input": [-70.5, -22.5], "expected": -22.5}, {"input": [-70.5, -22.0], "expected": -22.0}, {"input": [-70.5, -21.5], "expected": -21.5}, {"input": [-70.5, -21.0], "expected": -21.0}, {"input": [-70.5, -20.5], "expected": -20.5}, {"input": [-70.5, -20.0], "expected": -20.0}, {"input": [-70.5, -19.5], "expected": -19.5}, {"input": [-70.5, -19.0], "expected": -19.0}, {"input": [-70.5, -18.5], "expected": -18.5}, {"input": [-70.5, -18.0], "expected": -18.0}, {"input": [-70.5, -17.5], "expected": -17.5}, {"input": [-70.5, -17.0], "expected": -17.0}, {"input": [-70.5, -16.5], "expected": -16.5}, {"input": [-70.5, -16.0], "expected": -16.0}, {"input": [-70.5, -15.5], "expected": -15.5}, {"input": [-70.5, -15.0], "expected": -15.0}, {"input": [-70.5, -14.5], "expected": -14.5}, {"input": [-70.5, -14.0], "expected": -14.0}, {"input": [-70.5, -13.5], "expected": -13.5}, {"input": [-70.5, -13.0], "expected": -13.0}, {"input": [-70.5, -12.5], "expected": -12.5}, {"input": [-70.5, -12.0], "expected": -12.0}, {"input": [-70.5, -11.5], "expected": -11.5}, {"input": [-70.5, -11.0], "expected": -11.0}, {"input": [-70.5, -10.5], "expected": -10.5}, {"input": [-70.5, -10.0], "expected": -10.0}, {"input": [-70.5, -9.5], "expected": -9.5}, {"input": [-70.5, -9.0], "expected": -9.0}, {"input": [-70.5, -8.5], "expected": -8.5}, {"input": [-70.5, -8.0], "expected": -8.0}, {"input": [-70.5, -7.5], "expected": -7.5}, {"input": [-70.5, -7.0], "expected": -7.0}, {"input": [-70.5, -6.5], "expected": -6.5}, {"input": [-70.5, -6.0], "expected": -6.0}, {"input": [-70.5, -5.5], "expected": -5.5}, {"input": [-70.5, -5.0], "expected": -5.0}, {"input": [-70.5, -4.5], "expected": -4.5}, {"input": [-70.5, -4.0], "expected": -4.0}, {"input": [-70.5, -3.5], "expected": -3.5}, {"input": [-70.5, -3.0], "expected": -3.0}, {"input": [-70.5, -2.5], "expected": -2.5}, {"input": [-70.5, -2.0], "expected": -2.0}, {"input": [-70.5, -1.5], "expected": -1.5}, {"input": [-70.5, -1.0], "expected": -1.0}, {"input": [-70.5, -0.5], "expected": -0.5}, {"input": [-70.5, 0.0], "expected": 2.411232150975086e-31}, {"input": [-70.5, 0.5], "expected": 0.5}, {"input": [-70.5, 1.0], "expected": 1.0}, {"input": [-70.5, 1.5], "expected": 1.5}, {"input": [-70.5, 2.0], "expected": 2.0}, {"input": [-70.5, 2.5], "expected": 2.5}, {"input": [-70.5, 3.0], "expected": 3.0}, {"input": [-70.5, 3.5], "expected": 3.5}, {"input": [-70.5, 4.0], "expected": 4.0}, {"input": [-70.5, 4.5], "expected": 4.5}, {"input": [-70.5, 5.0], "expected": 5.0}, {"input": [-70.5, 5.5], "expected": 5.5}, {"input": [-70.5, 6.0], "expected": 6.0}, {"input": [-70.5, 6.5], "expected": 6.5}, {"input": [-70.5, 7.0], "expected": 7.0}, {"input": [-70.5, 7.5], "expected": 7.5}, {"input": [-70.5, 8.0], "expected": 8.0}, {"input": [-70.5, 8.5], "expected": 8.5}, {"input": [-70.5, 9.0], "expected": 9.0}, {"input": [-70.5, 9.5], "expected": 9.5}, {"input": [-70.5, 10.0], "expected": 10.0}, {"input": [-70.5, 10.5], "expected": 10.5}, {"input": [-70.5, 11.0], "expected": 11.0}, {"input": [-70.5, 11.5], "expected": 11.5}, {"input": [-70.5, 12.0], "expected": 12.0}, {"input": [-70.5, 12.5], "expected": 12.5}, {"input": [-70.5, 13.0], "expected": 13.0}, {"input": [-70.5, 13.5], "expected": 13.5}, {"input": [-70.5, 14.0], "expected": 14.0}, {"input": [-70.5, 14.5], "expected": 14.5}, {"input": [-70.5, 15.0], "expected": 15.0}, {"input": [-70.5, 15.5], "expected": 15.5}, {"input": [-70.5, 16.0], "expected": 16.0}, {"input": [-70.5, 16.5], "expected": 16.5}, {"input": [-70.5, 17.0], "expected": 17.0}, {"input": [-70.5, 17.5], "expected": 17.5}, {"input": [-70.5, 18.0], "expected": 18.0}, {"input": [-70.5, 18.5], "expected": 18.5}, {"input": [-70.5, 19.0], "expected": 19.0}, {"input": [-70.5, 19.5], "expected": 19.5}, {"input": [-70.5, 20.0], "expected": 20.0}, {"input": [-70.5, 20.5], "expected": 20.5}, {"input": [-70.5, 21.0], "expected": 21.0}, {"input": [-70.5, 21.5], "expected": 21.5}, {"input": [-70.5, 22.0], "expected": 22.0}, {"input": [-70.5, 22.5], "expected": 22.5}, {"input": [-70.5, 23.0], "expected": 23.0}, {"input": [-70.5, 23.5], "expected": 23.5}, {"input": [-70.5, 24.0], "expected": 24.0}, {"input": [-70.5, 24.5], "expected": 24.5}, {"input": [-70.5, 25.0], "expected": 25.0}, {"input": [-70.5, 25.5], "expected": 25.5}, {"input": [-70.5, 26.0], "expected": 26.0}, {"input": [-70.5, 26.5], "expected": 26.5}, {"input": [-70.5, 27.0], "expected": 27.0}, {"input": [-70.5, 27.5], "expected": 27.5}, {"input": [-70.5, 28.0], "expected": 28.0}, {"input": [-70.5, 28.5], "expected": 28.5}, {"input": [-70.5, 29.0], "expected": 29.0}, {"input": [-70.5, 29.5], "expected": 29.5}, {"input": [-70.5, 30.0], "expected": 30.0}, {"input": [-70.5, 30.5], "expected": 30.5}, {"input": [-70.5, 31.0], "expected": 31.0}, {"input": [-70.5, 31.5], "expected": 31.5}, {"input": [-70.5, 32.0], "expected": 32.0}, {"input": [-70.5, 32.5], "expected": 32.5}, {"input": [-70.5, 33.0], "expected": 33.0}, {"input": [-70.5, 33.5], "expected": 33.5}, {"input": [-70.5, 34.0], "expected": 34.0}, {"input": [-70.5, 34.5], "expected": 34.5}, {"input": [-70.5, 35.0], "expected": 35.0}, {"input": [-70.5, 35.5], "expected": 35.5}, {"input": [-70.5, 36.0], "expected": 36.0}, {"input": [-70.5, 36.5], "expected": 36.5}, {"input": [-70.5, 37.0], "expected": 37.0}, {"input": [-70.5, 37.5], "expected": 37.5}, {"input": [-70.5, 38.0], "expected": 38.0}, {"input": [-70.5, 38.5], "expected": 38.5}, {"input": [-70.5, 39.0], "expected": 39.0}, {"input": [-70.5, 39.5], "expected": 39.5}, {"input": [-70.5, 40.0], "expected": 40.0}, {"input": [-70.5, 40.5], "expected": 40.5}, {"input": [-70.5, 41.0], "expected": 41.0}, {"input": [-70.5, 41.5], "expected": 41.5}, {"input": [-70.5, 42.0], "expected": 42.0}, {"input": [-70.5, 42.5], "expected": 42.5}, {"input": [-70.5, 43.0], "expected": 43.0}, {"input": [-70.5, 43.5], "expected": 43.5}, {"input": [-70.5, 44.0], "expected": 44.0}, {"input": [-70.5, 44.5], "expected": 44.5}, {"input": [-70.5, 45.0], "expected": 45.0}, {"input": [-70.5, 45.5], "expected": 45.5}, {"input": [-70.5, 46.0], "expected": 46.0}, {"input": [-70.5, 46.5], "expected": 46.5}, {"input": [-70.5, 47.0], "expected": 47.0}, {"input": [-70.5, 47.5], "expected": 47.5}, {"input": [-70.5, 48.0], "expected": 48.0}, {"input": [-70.5, 48.5], "expected": 48.5}, {"input": [-70.5, 49.0], "expected": 49.0}, {"input": [-70.5, 49.5], "expected": 49.5}, {"input": [-70.5, 50.0], "expected": 50.0}, {"input": [-70.5, 50.5], "expected": 50.5}, {"input": [-70.5, 51.0], "expected": 51.0}, {"input": [-70.5, 51.5], "expected": 51.5}, {"input": [-70.5, 52.0], "expected": 52.0}, {"input": [-70.5, 52.5], "expected": 52.5}, {"input": [-70.5, 53.0], "expected": 53.0}, {"input": [-70.5, 53.5], "expected": 53.5}, {"input": [-70.5, 54.0], "expected": 54.0}, {"input": [-70.5, 54.5], "expected": 54.5}, {"input": [-70.5, 55.0], "expected": 55.0}, {"input": [-70.5, 55.5], "expected": 55.5}, {"input": [-70.5, 56.0], "expected": 56.0}, {"input": [-70.5, 56.5], "expected": 56.5}, {"input": [-70.5, 57.0], "expected": 57.0}, {"input": [-70.5, 57.5], "expected": 57.5}, {"input": [-70.5, 58.0], "expected": 58.0}, {"input": [-70.5, 58.5], "expected": 58.5}, {"input": [-70.5, 59.0], "expected": 59.0}, {"input": [-70.5, 59.5], "expected": 59.5}, {"input": [-70.5, 60.0], "expected": 60.0}, {"input": [-70.5, 60.5], "expected": 60.5}, {"input": [-70.5, 61.0], "expected": 61.0}, {"input": [-70.5, 61.5], "expected": 61.5}, {"input": [-70.5, 62.0], "expected": 62.0}, {"input": [-70.5, 62.5], "expected": 62.5}, {"input": [-70.5, 63.0], "expected": 63.0}, {"input": [-70.5, 63.5], "expected": 63.5}, {"input": [-70.5, 64.0], "expected": 64.0}, {"input": [-70.5, 64.5], "expected": 64.5}, {"input": [-70.5, 65.0], "expected": 65.0}, {"input": [-70.5, 65.5], "expected": 65.5}, {"input": [-70.5, 66.0], "expected": 66.0}, {"input": [-70.5, 66.5], "expected": 66.5}, {"input": [-70.5, 67.0], "expected": 67.0}, {"input": [-70.5, 67.5], "expected": 67.5}, {"input": [-70.5, 68.0], "expected": 68.0}, {"input": [-70.5, 68.5], "expected": 68.5}, {"input": [-70.5, 69.0], "expected": 69.0}, {"input": [-70.5, 69.5], "expected": 69.5}, {"input": [-70.5, 70.0], "expected": 70.0}, {"input": [-70.5, 70.5], "expected": 70.5}, {"input": [-70.5, 71.0], "expected": 71.0}, {"input": [-70.5, 71.5], "expected": 71.5}, {"input": [-70.5, 72.0], "expected": 72.0}, {"input": [-70.5, 72.5], "expected": 72.5}, {"input": [-70.5, 73.0], "expected": 73.0}, {"input": [-70.5, 73.5], "expected": 73.5}, {"input": [-70.5, 74.0], "expected": 74.0}, {"input": [-70.5, 74.5], "expected": 74.5}, {"input": [-70.5, 75.0], "expected": 75.0}, {"input": [-70.5, 75.5], "expected": 75.5}, {"input": [-70.5, 76.0], "expected": 76.0}, {"input": [-70.5, 76.5], "expected": 76.5}, {"input": [-70.5, 77.0], "expected": 77.0}, {"input": [-70.5, 77.5], "expected": 77.5}, {"input": [-70.5, 78.0], "expected": 78.0}, {"input": [-70.5, 78.5], "expected": 78.5}, {"input": [-70.5, 79.0], "expected": 79.0}, {"input": [-70.5, 79.5], "expected": 79.5}, {"input": [-70.5, 80.0], "expected": 80.0}, {"input": [-70.5, 80.5], "expected": 80.5}, {"input": [-70.5, 81.0], "expected": 81.0}, {"input": [-70.5, 81.5], "expected": 81.5}, {"input": [-70.5, 82.0], "expected": 82.0}, {"input": [-70.5, 82.5], "expected": 82.5}, {"input": [-70.5, 83.0], "expected": 83.0}, {"input": [-70.5, 83.5], "expected": 83.5}, {"input": [-70.5, 84.0], "expected": 84.0}, {"input": [-70.5, 84.5], "expected": 84.5}, {"input": [-70.5, 85.0], "expected": 85.0}, {"input": [-70.5, 85.5], "expected": 85.5}, {"input": [-70.5, 86.0], "expected": 86.0}, {"input": [-70.5, 86.5], "expected": 86.5}, {"input": [-70.5, 87.0], "expected": 87.0}, {"input": [-70.5, 87.5], "expected": 87.5}, {"input": [-70.5, 88.0], "expected": 88.0}, {"input": [-70.5, 88.5], "expected": 88.5}, {"input": [-70.5, 89.0], "expected": 89.0}, {"input": [-70.5, 89.5], "expected": 89.5}, {"input": [-70.5, 90.0], "expected": 90.0}, {"input": [-70.5, 90.5], "expected": 90.5}, {"input": [-70.5, 91.0], "expected": 91.0}, {"input": [-70.5, 91.5], "expected": 91.5}, {"input": [-70.5, 92.0], "expected": 92.0}, {"input": [-70.5, 92.5], "expected": 92.5}, {"input": [-70.5, 93.0], "expected": 93.0}, {"input": [-70.5, 93.5], "expected": 93.5}, {"input": [-70.5, 94.0], "expected": 94.0}, {"input": [-70.5, 94.5], "expected": 94.5}, {"input": [-70.5, 95.0], "expected": 95.0}, {"input": [-70.5, 95.5], "expected": 95.5}, {"input": [-70.5, 96.0], "expected": 96.0}, {"input": [-70.5, 96.5], "expected": 96.5}, {"input": [-70.5, 97.0], "expected": 97.0}, {"input": [-70.5, 97.5], "expected": 97.5}, {"input": [-70.5, 98.0], "expected": 98.0}, {"input": [-70.5, 98.5], "expected": 98.5}, {"input": [-70.5, 99.0], "expected": 99.0}, {"input": [-70.5, 99.5], "expected": 99.5}, {"input": [-70.0, -100.0], "expected": -69.9999999999999}, {"input": [-70.0, -99.5], "expected": -69.99999999999984}, {"input": [-70.0, -99.0], "expected": -69.99999999999974}, {"input": [-70.0, -98.5], "expected": -69.99999999999957}, {"input": [-70.0, -98.0], "expected": -69.9999999999993}, {"input": [-70.0, -97.5], "expected": -69.99999999999886}, {"input": [-70.0, -97.0], "expected": -69.99999999999812}, {"input": [-70.0, -96.5], "expected": -69.9999999999969}, {"input": [-70.0, -96.0], "expected": -69.99999999999488}, {"input": [-70.0, -95.5], "expected": -69.99999999999157}, {"input": [-70.0, -95.0], "expected": -69.99999999998612}, {"input": [-70.0, -94.5], "expected": -69.9999999999771}, {"input": [-70.0, -94.0], "expected": -69.99999999996224}, {"input": [-70.0, -93.5], "expected": -69.99999999993776}, {"input": [-70.0, -93.0], "expected": -69.99999999989738}, {"input": [-70.0, -92.5], "expected": -69.9999999998308}, {"input": [-70.0, -92.0], "expected": -69.99999999972106}, {"input": [-70.0, -91.5], "expected": -69.9999999995401}, {"input": [-70.0, -91.0], "expected": -69.99999999924174}, {"input": [-70.0, -90.5], "expected": -69.99999999874984}, {"input": [-70.0, -90.0], "expected": -69.99999999793884}, {"input": [-70.0, -89.5], "expected": -69.99999999660173}, {"input": [-70.0, -89.0], "expected": -69.9999999943972}, {"input": [-70.0, -88.5], "expected": -69.99999999076255}, {"input": [-70.0, -88.0], "expected": -69.99999998477001}, {"input": [-70.0, -87.5], "expected": -69.99999997489}, {"input": [-70.0, -87.0], "expected": -69.99999995860063}, {"input": [-70.0, -86.5], "expected": -69.99999993174397}, {"input": [-70.0, -86.0], "expected": -69.99999988746484}, {"input": [-70.0, -85.5], "expected": -69.99999981446088}, {"input": [-70.0, -85.0], "expected": -69.99999969409772}, {"input": [-70.0, -84.5], "expected": -69.99999949565246}, {"input": [-70.0, -84.0], "expected": -69.99999916847163}, {"input": [-70.0, -83.5], "expected": -69.99999862904185}, {"input": [-70.0, -83.0], "expected": -69.99999773967315}, {"input": [-70.0, -82.5], "expected": -69.99999627335377}, {"input": [-70.0, -82.0], "expected": -69.99999385580652}, {"input": [-70.0, -81.5], "expected": -69.99998986995772}, {"input": [-70.0, -81.0], "expected": -69.99998329843868}, {"input": [-70.0, -80.5], "expected": -69.99997246392977}, {"input": [-70.0, -80.0], "expected": -69.99995460110078}, {"input": [-70.0, -79.5], "expected": -69.99992515097136}, {"input": [-70.0, -79.0], "expected": -69.99987659781027}, {"input": [-70.0, -78.5], "expected": -69.99979655232787}, {"input": [-70.0, -78.0], "expected": -69.9996645936271}, {"input": [-70.0, -77.5], "expected": -69.99944706852465}, {"input": [-70.0, -77.0], "expected": -69.99908853354623}, {"input": [-70.0, -76.5], "expected": -69.99849768984025}, {"input": [-70.0, -76.0], "expected": -69.99752431486228}, {"input": [-70.0, -75.5], "expected": -69.99592155672943}, {"input": [-70.0, -75.0], "expected": -69.99328465151088}, {"input": [-70.0, -74.5], "expected": -69.9889522551514}, {"input": [-70.0, -74.0], "expected": -69.9818500720822}, {"input": [-70.0, -73.5], "expected": -69.97024958172737}, {"input": [-70.0, -73.0], "expected": -69.95141264842626}, {"input": [-70.0, -72.5], "expected": -69.92111026570745}, {"input": [-70.0, -72.0], "expected": -69.87307198895702}, {"input": [-70.0, -71.5], "expected": -69.79858672201725}, {"input": [-70.0, -71.0], "expected": -69.68673831248178}, {"input": [-70.0, -70.5], "expected": -69.5259230158199}, {"input": [-70.0, -70.0], "expected": -69.30685281944005}, {"input": [-70.0, -69.5], "expected": -69.0259230158199}, {"input": [-70.0, -69.0], "expected": -68.68673831248178}, {"input": [-70.0, -68.5], "expected": -68.29858672201725}, {"input": [-70.0, -68.0], "expected": -67.87307198895702}, {"input": [-70.0, -67.5], "expected": -67.42111026570745}, {"input": [-70.0, -67.0], "expected": -66.95141264842626}, {"input": [-70.0, -66.5], "expected": -66.47024958172737}, {"input": [-70.0, -66.0], "expected": -65.9818500720822}, {"input": [-70.0, -65.5], "expected": -65.4889522551514}, {"input": [-70.0, -65.0], "expected": -64.99328465151088}, {"input": [-70.0, -64.5], "expected": -64.49592155672943}, {"input": [-70.0, -64.0], "expected": -63.99752431486227}, {"input": [-70.0, -63.5], "expected": -63.49849768984024}, {"input": [-70.0, -63.0], "expected": -62.99908853354623}, {"input": [-70.0, -62.5], "expected": -62.49944706852464}, {"input": [-70.0, -62.0], "expected": -61.9996645936271}, {"input": [-70.0, -61.5], "expected": -61.49979655232787}, {"input": [-70.0, -61.0], "expected": -60.99987659781028}, {"input": [-70.0, -60.5], "expected": -60.49992515097137}, {"input": [-70.0, -60.0], "expected": -59.99995460110078}, {"input": [-70.0, -59.5], "expected": -59.49997246392977}, {"input": [-70.0, -59.0], "expected": -58.99998329843868}, {"input": [-70.0, -58.5], "expected": -58.49998986995771}, {"input": [-70.0, -58.0], "expected": -57.99999385580652}, {"input": [-70.0, -57.5], "expected": -57.49999627335377}, {"input": [-70.0, -57.0], "expected": -56.99999773967315}, {"input": [-70.0, -56.5], "expected": -56.499998629041855}, {"input": [-70.0, -56.0], "expected": -55.999999168471625}, {"input": [-70.0, -55.5], "expected": -55.49999949565247}, {"input": [-70.0, -55.0], "expected": -54.999999694097724}, {"input": [-70.0, -54.5], "expected": -54.49999981446088}, {"input": [-70.0, -54.0], "expected": -53.99999988746483}, {"input": [-70.0, -53.5], "expected": -53.49999993174397}, {"input": [-70.0, -53.0], "expected": -52.999999958600625}, {"input": [-70.0, -52.5], "expected": -52.49999997489001}, {"input": [-70.0, -52.0], "expected": -51.99999998477002}, {"input": [-70.0, -51.5], "expected": -51.499999990762554}, {"input": [-70.0, -51.0], "expected": -50.99999999439721}, {"input": [-70.0, -50.5], "expected": -50.49999999660173}, {"input": [-70.0, -50.0], "expected": -49.99999999793884}, {"input": [-70.0, -49.5], "expected": -49.49999999874985}, {"input": [-70.0, -49.0], "expected": -48.999999999241744}, {"input": [-70.0, -48.5], "expected": -48.499999999540094}, {"input": [-70.0, -48.0], "expected": -47.999999999721055}, {"input": [-70.0, -47.5], "expected": -47.49999999983081}, {"input": [-70.0, -47.0], "expected": -46.99999999989738}, {"input": [-70.0, -46.5], "expected": -46.49999999993776}, {"input": [-70.0, -46.0], "expected": -45.99999999996225}, {"input": [-70.0, -45.5], "expected": -45.4999999999771}, {"input": [-70.0, -45.0], "expected": -44.99999999998611}, {"input": [-70.0, -44.5], "expected": -44.49999999999158}, {"input": [-70.0, -44.0], "expected": -43.99999999999489}, {"input": [-70.0, -43.5], "expected": -43.4999999999969}, {"input": [-70.0, -43.0], "expected": -42.99999999999812}, {"input": [-70.0, -42.5], "expected": -42.49999999999886}, {"input": [-70.0, -42.0], "expected": -41.99999999999931}, {"input": [-70.0, -41.5], "expected": -41.49999999999958}, {"input": [-70.0, -41.0], "expected": -40.999999999999744}, {"input": [-70.0, -40.5], "expected": -40.499999999999844}, {"input": [-70.0, -40.0], "expected": -39.99999999999991}, {"input": [-70.0, -39.5], "expected": -39.49999999999994}, {"input": [-70.0, -39.0], "expected": -38.999999999999964}, {"input": [-70.0, -38.5], "expected": -38.49999999999998}, {"input": [-70.0, -38.0], "expected": -37.999999999999986}, {"input": [-70.0, -37.5], "expected": -37.49999999999999}, {"input": [-70.0, -37.0], "expected": -36.99999999999999}, {"input": [-70.0, -36.5], "expected": -36.5}, {"input": [-70.0, -36.0], "expected": -36.0}, {"input": [-70.0, -35.5], "expected": -35.5}, {"input": [-70.0, -35.0], "expected": -35.0}, {"input": [-70.0, -34.5], "expected": -34.5}, {"input": [-70.0, -34.0], "expected": -34.0}, {"input": [-70.0, -33.5], "expected": -33.5}, {"input": [-70.0, -33.0], "expected": -33.0}, {"input": [-70.0, -32.5], "expected": -32.5}, {"input": [-70.0, -32.0], "expected": -32.0}, {"input": [-70.0, -31.5], "expected": -31.5}, {"input": [-70.0, -31.0], "expected": -31.0}, {"input": [-70.0, -30.5], "expected": -30.5}, {"input": [-70.0, -30.0], "expected": -30.0}, {"input": [-70.0, -29.5], "expected": -29.5}, {"input": [-70.0, -29.0], "expected": -29.0}, {"input": [-70.0, -28.5], "expected": -28.5}, {"input": [-70.0, -28.0], "expected": -28.0}, {"input": [-70.0, -27.5], "expected": -27.5}, {"input": [-70.0, -27.0], "expected": -27.0}, {"input": [-70.0, -26.5], "expected": -26.5}, {"input": [-70.0, -26.0], "expected": -26.0}, {"input": [-70.0, -25.5], "expected": -25.5}, {"input": [-70.0, -25.0], "expected": -25.0}, {"input": [-70.0, -24.5], "expected": -24.5}, {"input": [-70.0, -24.0], "expected": -24.0}, {"input": [-70.0, -23.5], "expected": -23.5}, {"input": [-70.0, -23.0], "expected": -23.0}, {"input": [-70.0, -22.5], "expected": -22.5}, {"input": [-70.0, -22.0], "expected": -22.0}, {"input": [-70.0, -21.5], "expected": -21.5}, {"input": [-70.0, -21.0], "expected": -21.0}, {"input": [-70.0, -20.5], "expected": -20.5}, {"input": [-70.0, -20.0], "expected": -20.0}, {"input": [-70.0, -19.5], "expected": -19.5}, {"input": [-70.0, -19.0], "expected": -19.0}, {"input": [-70.0, -18.5], "expected": -18.5}, {"input": [-70.0, -18.0], "expected": -18.0}, {"input": [-70.0, -17.5], "expected": -17.5}, {"input": [-70.0, -17.0], "expected": -17.0}, {"input": [-70.0, -16.5], "expected": -16.5}, {"input": [-70.0, -16.0], "expected": -16.0}, {"input": [-70.0, -15.5], "expected": -15.5}, {"input": [-70.0, -15.0], "expected": -15.0}, {"input": [-70.0, -14.5], "expected": -14.5}, {"input": [-70.0, -14.0], "expected": -14.0}, {"input": [-70.0, -13.5], "expected": -13.5}, {"input": [-70.0, -13.0], "expected": -13.0}, {"input": [-70.0, -12.5], "expected": -12.5}, {"input": [-70.0, -12.0], "expected": -12.0}, {"input": [-70.0, -11.5], "expected": -11.5}, {"input": [-70.0, -11.0], "expected": -11.0}, {"input": [-70.0, -10.5], "expected": -10.5}, {"input": [-70.0, -10.0], "expected": -10.0}, {"input": [-70.0, -9.5], "expected": -9.5}, {"input": [-70.0, -9.0], "expected": -9.0}, {"input": [-70.0, -8.5], "expected": -8.5}, {"input": [-70.0, -8.0], "expected": -8.0}, {"input": [-70.0, -7.5], "expected": -7.5}, {"input": [-70.0, -7.0], "expected": -7.0}, {"input": [-70.0, -6.5], "expected": -6.5}, {"input": [-70.0, -6.0], "expected": -6.0}, {"input": [-70.0, -5.5], "expected": -5.5}, {"input": [-70.0, -5.0], "expected": -5.0}, {"input": [-70.0, -4.5], "expected": -4.5}, {"input": [-70.0, -4.0], "expected": -4.0}, {"input": [-70.0, -3.5], "expected": -3.5}, {"input": [-70.0, -3.0], "expected": -3.0}, {"input": [-70.0, -2.5], "expected": -2.5}, {"input": [-70.0, -2.0], "expected": -2.0}, {"input": [-70.0, -1.5], "expected": -1.5}, {"input": [-70.0, -1.0], "expected": -1.0}, {"input": [-70.0, -0.5], "expected": -0.5}, {"input": [-70.0, 0.0], "expected": 3.975449735908647e-31}, {"input": [-70.0, 0.5], "expected": 0.5}, {"input": [-70.0, 1.0], "expected": 1.0}, {"input": [-70.0, 1.5], "expected": 1.5}, {"input": [-70.0, 2.0], "expected": 2.0}, {"input": [-70.0, 2.5], "expected": 2.5}, {"input": [-70.0, 3.0], "expected": 3.0}, {"input": [-70.0, 3.5], "expected": 3.5}, {"input": [-70.0, 4.0], "expected": 4.0}, {"input": [-70.0, 4.5], "expected": 4.5}, {"input": [-70.0, 5.0], "expected": 5.0}, {"input": [-70.0, 5.5], "expected": 5.5}, {"input": [-70.0, 6.0], "expected": 6.0}, {"input": [-70.0, 6.5], "expected": 6.5}, {"input": [-70.0, 7.0], "expected": 7.0}, {"input": [-70.0, 7.5], "expected": 7.5}, {"input": [-70.0, 8.0], "expected": 8.0}, {"input": [-70.0, 8.5], "expected": 8.5}, {"input": [-70.0, 9.0], "expected": 9.0}, {"input": [-70.0, 9.5], "expected": 9.5}, {"input": [-70.0, 10.0], "expected": 10.0}, {"input": [-70.0, 10.5], "expected": 10.5}, {"input": [-70.0, 11.0], "expected": 11.0}, {"input": [-70.0, 11.5], "expected": 11.5}, {"input": [-70.0, 12.0], "expected": 12.0}, {"input": [-70.0, 12.5], "expected": 12.5}, {"input": [-70.0, 13.0], "expected": 13.0}, {"input": [-70.0, 13.5], "expected": 13.5}, {"input": [-70.0, 14.0], "expected": 14.0}, {"input": [-70.0, 14.5], "expected": 14.5}, {"input": [-70.0, 15.0], "expected": 15.0}, {"input": [-70.0, 15.5], "expected": 15.5}, {"input": [-70.0, 16.0], "expected": 16.0}, {"input": [-70.0, 16.5], "expected": 16.5}, {"input": [-70.0, 17.0], "expected": 17.0}, {"input": [-70.0, 17.5], "expected": 17.5}, {"input": [-70.0, 18.0], "expected": 18.0}, {"input": [-70.0, 18.5], "expected": 18.5}, {"input": [-70.0, 19.0], "expected": 19.0}, {"input": [-70.0, 19.5], "expected": 19.5}, {"input": [-70.0, 20.0], "expected": 20.0}, {"input": [-70.0, 20.5], "expected": 20.5}, {"input": [-70.0, 21.0], "expected": 21.0}, {"input": [-70.0, 21.5], "expected": 21.5}, {"input": [-70.0, 22.0], "expected": 22.0}, {"input": [-70.0, 22.5], "expected": 22.5}, {"input": [-70.0, 23.0], "expected": 23.0}, {"input": [-70.0, 23.5], "expected": 23.5}, {"input": [-70.0, 24.0], "expected": 24.0}, {"input": [-70.0, 24.5], "expected": 24.5}, {"input": [-70.0, 25.0], "expected": 25.0}, {"input": [-70.0, 25.5], "expected": 25.5}, {"input": [-70.0, 26.0], "expected": 26.0}, {"input": [-70.0, 26.5], "expected": 26.5}, {"input": [-70.0, 27.0], "expected": 27.0}, {"input": [-70.0, 27.5], "expected": 27.5}, {"input": [-70.0, 28.0], "expected": 28.0}, {"input": [-70.0, 28.5], "expected": 28.5}, {"input": [-70.0, 29.0], "expected": 29.0}, {"input": [-70.0, 29.5], "expected": 29.5}, {"input": [-70.0, 30.0], "expected": 30.0}, {"input": [-70.0, 30.5], "expected": 30.5}, {"input": [-70.0, 31.0], "expected": 31.0}, {"input": [-70.0, 31.5], "expected": 31.5}, {"input": [-70.0, 32.0], "expected": 32.0}, {"input": [-70.0, 32.5], "expected": 32.5}, {"input": [-70.0, 33.0], "expected": 33.0}, {"input": [-70.0, 33.5], "expected": 33.5}, {"input": [-70.0, 34.0], "expected": 34.0}, {"input": [-70.0, 34.5], "expected": 34.5}, {"input": [-70.0, 35.0], "expected": 35.0}, {"input": [-70.0, 35.5], "expected": 35.5}, {"input": [-70.0, 36.0], "expected": 36.0}, {"input": [-70.0, 36.5], "expected": 36.5}, {"input": [-70.0, 37.0], "expected": 37.0}, {"input": [-70.0, 37.5], "expected": 37.5}, {"input": [-70.0, 38.0], "expected": 38.0}, {"input": [-70.0, 38.5], "expected": 38.5}, {"input": [-70.0, 39.0], "expected": 39.0}, {"input": [-70.0, 39.5], "expected": 39.5}, {"input": [-70.0, 40.0], "expected": 40.0}, {"input": [-70.0, 40.5], "expected": 40.5}, {"input": [-70.0, 41.0], "expected": 41.0}, {"input": [-70.0, 41.5], "expected": 41.5}, {"input": [-70.0, 42.0], "expected": 42.0}, {"input": [-70.0, 42.5], "expected": 42.5}, {"input": [-70.0, 43.0], "expected": 43.0}, {"input": [-70.0, 43.5], "expected": 43.5}, {"input": [-70.0, 44.0], "expected": 44.0}, {"input": [-70.0, 44.5], "expected": 44.5}, {"input": [-70.0, 45.0], "expected": 45.0}, {"input": [-70.0, 45.5], "expected": 45.5}, {"input": [-70.0, 46.0], "expected": 46.0}, {"input": [-70.0, 46.5], "expected": 46.5}, {"input": [-70.0, 47.0], "expected": 47.0}, {"input": [-70.0, 47.5], "expected": 47.5}, {"input": [-70.0, 48.0], "expected": 48.0}, {"input": [-70.0, 48.5], "expected": 48.5}, {"input": [-70.0, 49.0], "expected": 49.0}, {"input": [-70.0, 49.5], "expected": 49.5}, {"input": [-70.0, 50.0], "expected": 50.0}, {"input": [-70.0, 50.5], "expected": 50.5}, {"input": [-70.0, 51.0], "expected": 51.0}, {"input": [-70.0, 51.5], "expected": 51.5}, {"input": [-70.0, 52.0], "expected": 52.0}, {"input": [-70.0, 52.5], "expected": 52.5}, {"input": [-70.0, 53.0], "expected": 53.0}, {"input": [-70.0, 53.5], "expected": 53.5}, {"input": [-70.0, 54.0], "expected": 54.0}, {"input": [-70.0, 54.5], "expected": 54.5}, {"input": [-70.0, 55.0], "expected": 55.0}, {"input": [-70.0, 55.5], "expected": 55.5}, {"input": [-70.0, 56.0], "expected": 56.0}, {"input": [-70.0, 56.5], "expected": 56.5}, {"input": [-70.0, 57.0], "expected": 57.0}, {"input": [-70.0, 57.5], "expected": 57.5}, {"input": [-70.0, 58.0], "expected": 58.0}, {"input": [-70.0, 58.5], "expected": 58.5}, {"input": [-70.0, 59.0], "expected": 59.0}, {"input": [-70.0, 59.5], "expected": 59.5}, {"input": [-70.0, 60.0], "expected": 60.0}, {"input": [-70.0, 60.5], "expected": 60.5}, {"input": [-70.0, 61.0], "expected": 61.0}, {"input": [-70.0, 61.5], "expected": 61.5}, {"input": [-70.0, 62.0], "expected": 62.0}, {"input": [-70.0, 62.5], "expected": 62.5}, {"input": [-70.0, 63.0], "expected": 63.0}, {"input": [-70.0, 63.5], "expected": 63.5}, {"input": [-70.0, 64.0], "expected": 64.0}, {"input": [-70.0, 64.5], "expected": 64.5}, {"input": [-70.0, 65.0], "expected": 65.0}, {"input": [-70.0, 65.5], "expected": 65.5}, {"input": [-70.0, 66.0], "expected": 66.0}, {"input": [-70.0, 66.5], "expected": 66.5}, {"input": [-70.0, 67.0], "expected": 67.0}, {"input": [-70.0, 67.5], "expected": 67.5}, {"input": [-70.0, 68.0], "expected": 68.0}, {"input": [-70.0, 68.5], "expected": 68.5}, {"input": [-70.0, 69.0], "expected": 69.0}, {"input": [-70.0, 69.5], "expected": 69.5}, {"input": [-70.0, 70.0], "expected": 70.0}, {"input": [-70.0, 70.5], "expected": 70.5}, {"input": [-70.0, 71.0], "expected": 71.0}, {"input": [-70.0, 71.5], "expected": 71.5}, {"input": [-70.0, 72.0], "expected": 72.0}, {"input": [-70.0, 72.5], "expected": 72.5}, {"input": [-70.0, 73.0], "expected": 73.0}, {"input": [-70.0, 73.5], "expected": 73.5}, {"input": [-70.0, 74.0], "expected": 74.0}, {"input": [-70.0, 74.5], "expected": 74.5}, {"input": [-70.0, 75.0], "expected": 75.0}, {"input": [-70.0, 75.5], "expected": 75.5}, {"input": [-70.0, 76.0], "expected": 76.0}, {"input": [-70.0, 76.5], "expected": 76.5}, {"input": [-70.0, 77.0], "expected": 77.0}, {"input": [-70.0, 77.5], "expected": 77.5}, {"input": [-70.0, 78.0], "expected": 78.0}, {"input": [-70.0, 78.5], "expected": 78.5}, {"input": [-70.0, 79.0], "expected": 79.0}, {"input": [-70.0, 79.5], "expected": 79.5}, {"input": [-70.0, 80.0], "expected": 80.0}, {"input": [-70.0, 80.5], "expected": 80.5}, {"input": [-70.0, 81.0], "expected": 81.0}, {"input": [-70.0, 81.5], "expected": 81.5}, {"input": [-70.0, 82.0], "expected": 82.0}, {"input": [-70.0, 82.5], "expected": 82.5}, {"input": [-70.0, 83.0], "expected": 83.0}, {"input": [-70.0, 83.5], "expected": 83.5}, {"input": [-70.0, 84.0], "expected": 84.0}, {"input": [-70.0, 84.5], "expected": 84.5}, {"input": [-70.0, 85.0], "expected": 85.0}, {"input": [-70.0, 85.5], "expected": 85.5}, {"input": [-70.0, 86.0], "expected": 86.0}, {"input": [-70.0, 86.5], "expected": 86.5}, {"input": [-70.0, 87.0], "expected": 87.0}, {"input": [-70.0, 87.5], "expected": 87.5}, {"input": [-70.0, 88.0], "expected": 88.0}, {"input": [-70.0, 88.5], "expected": 88.5}, {"input": [-70.0, 89.0], "expected": 89.0}, {"input": [-70.0, 89.5], "expected": 89.5}, {"input": [-70.0, 90.0], "expected": 90.0}, {"input": [-70.0, 90.5], "expected": 90.5}, {"input": [-70.0, 91.0], "expected": 91.0}, {"input": [-70.0, 91.5], "expected": 91.5}, {"input": [-70.0, 92.0], "expected": 92.0}, {"input": [-70.0, 92.5], "expected": 92.5}, {"input": [-70.0, 93.0], "expected": 93.0}, {"input": [-70.0, 93.5], "expected": 93.5}, {"input": [-70.0, 94.0], "expected": 94.0}, {"input": [-70.0, 94.5], "expected": 94.5}, {"input": [-70.0, 95.0], "expected": 95.0}, {"input": [-70.0, 95.5], "expected": 95.5}, {"input": [-70.0, 96.0], "expected": 96.0}, {"input": [-70.0, 96.5], "expected": 96.5}, {"input": [-70.0, 97.0], "expected": 97.0}, {"input": [-70.0, 97.5], "expected": 97.5}, {"input": [-70.0, 98.0], "expected": 98.0}, {"input": [-70.0, 98.5], "expected": 98.5}, {"input": [-70.0, 99.0], "expected": 99.0}, {"input": [-70.0, 99.5], "expected": 99.5}, {"input": [-69.5, -100.0], "expected": -69.49999999999994}, {"input": [-69.5, -99.5], "expected": -69.4999999999999}, {"input": [-69.5, -99.0], "expected": -69.49999999999984}, {"input": [-69.5, -98.5], "expected": -69.49999999999974}, {"input": [-69.5, -98.0], "expected": -69.49999999999957}, {"input": [-69.5, -97.5], "expected": -69.4999999999993}, {"input": [-69.5, -97.0], "expected": -69.49999999999886}, {"input": [-69.5, -96.5], "expected": -69.49999999999812}, {"input": [-69.5, -96.0], "expected": -69.4999999999969}, {"input": [-69.5, -95.5], "expected": -69.49999999999488}, {"input": [-69.5, -95.0], "expected": -69.49999999999157}, {"input": [-69.5, -94.5], "expected": -69.49999999998612}, {"input": [-69.5, -94.0], "expected": -69.4999999999771}, {"input": [-69.5, -93.5], "expected": -69.49999999996224}, {"input": [-69.5, -93.0], "expected": -69.49999999993776}, {"input": [-69.5, -92.5], "expected": -69.49999999989738}, {"input": [-69.5, -92.0], "expected": -69.4999999998308}, {"input": [-69.5, -91.5], "expected": -69.49999999972106}, {"input": [-69.5, -91.0], "expected": -69.4999999995401}, {"input": [-69.5, -90.5], "expected": -69.49999999924174}, {"input": [-69.5, -90.0], "expected": -69.49999999874984}, {"input": [-69.5, -89.5], "expected": -69.49999999793884}, {"input": [-69.5, -89.0], "expected": -69.49999999660173}, {"input": [-69.5, -88.5], "expected": -69.4999999943972}, {"input": [-69.5, -88.0], "expected": -69.49999999076255}, {"input": [-69.5, -87.5], "expected": -69.49999998477001}, {"input": [-69.5, -87.0], "expected": -69.49999997489}, {"input": [-69.5, -86.5], "expected": -69.49999995860063}, {"input": [-69.5, -86.0], "expected": -69.49999993174397}, {"input": [-69.5, -85.5], "expected": -69.49999988746484}, {"input": [-69.5, -85.0], "expected": -69.49999981446088}, {"input": [-69.5, -84.5], "expected": -69.49999969409772}, {"input": [-69.5, -84.0], "expected": -69.49999949565246}, {"input": [-69.5, -83.5], "expected": -69.49999916847163}, {"input": [-69.5, -83.0], "expected": -69.49999862904185}, {"input": [-69.5, -82.5], "expected": -69.49999773967315}, {"input": [-69.5, -82.0], "expected": -69.49999627335377}, {"input": [-69.5, -81.5], "expected": -69.49999385580652}, {"input": [-69.5, -81.0], "expected": -69.49998986995772}, {"input": [-69.5, -80.5], "expected": -69.49998329843868}, {"input": [-69.5, -80.0], "expected": -69.49997246392977}, {"input": [-69.5, -79.5], "expected": -69.49995460110078}, {"input": [-69.5, -79.0], "expected": -69.49992515097136}, {"input": [-69.5, -78.5], "expected": -69.49987659781027}, {"input": [-69.5, -78.0], "expected": -69.49979655232787}, {"input": [-69.5, -77.5], "expected": -69.4996645936271}, {"input": [-69.5, -77.0], "expected": -69.49944706852465}, {"input": [-69.5, -76.5], "expected": -69.49908853354623}, {"input": [-69.5, -76.0], "expected": -69.49849768984025}, {"input": [-69.5, -75.5], "expected": -69.49752431486228}, {"input": [-69.5, -75.0], "expected": -69.49592155672943}, {"input": [-69.5, -74.5], "expected": -69.49328465151088}, {"input": [-69.5, -74.0], "expected": -69.4889522551514}, {"input": [-69.5, -73.5], "expected": -69.4818500720822}, {"input": [-69.5, -73.0], "expected": -69.47024958172737}, {"input": [-69.5, -72.5], "expected": -69.45141264842626}, {"input": [-69.5, -72.0], "expected": -69.42111026570745}, {"input": [-69.5, -71.5], "expected": -69.37307198895702}, {"input": [-69.5, -71.0], "expected": -69.29858672201725}, {"input": [-69.5, -70.5], "expected": -69.18673831248178}, {"input": [-69.5, -70.0], "expected": -69.0259230158199}, {"input": [-69.5, -69.5], "expected": -68.80685281944005}, {"input": [-69.5, -69.0], "expected": -68.5259230158199}, {"input": [-69.5, -68.5], "expected": -68.18673831248178}, {"input": [-69.5, -68.0], "expected": -67.79858672201725}, {"input": [-69.5, -67.5], "expected": -67.37307198895702}, {"input": [-69.5, -67.0], "expected": -66.92111026570745}, {"input": [-69.5, -66.5], "expected": -66.45141264842626}, {"input": [-69.5, -66.0], "expected": -65.97024958172737}, {"input": [-69.5, -65.5], "expected": -65.4818500720822}, {"input": [-69.5, -65.0], "expected": -64.9889522551514}, {"input": [-69.5, -64.5], "expected": -64.49328465151088}, {"input": [-69.5, -64.0], "expected": -63.99592155672943}, {"input": [-69.5, -63.5], "expected": -63.49752431486227}, {"input": [-69.5, -63.0], "expected": -62.99849768984024}, {"input": [-69.5, -62.5], "expected": -62.49908853354623}, {"input": [-69.5, -62.0], "expected": -61.99944706852464}, {"input": [-69.5, -61.5], "expected": -61.4996645936271}, {"input": [-69.5, -61.0], "expected": -60.99979655232787}, {"input": [-69.5, -60.5], "expected": -60.49987659781028}, {"input": [-69.5, -60.0], "expected": -59.99992515097137}, {"input": [-69.5, -59.5], "expected": -59.49995460110078}, {"input": [-69.5, -59.0], "expected": -58.99997246392977}, {"input": [-69.5, -58.5], "expected": -58.49998329843868}, {"input": [-69.5, -58.0], "expected": -57.99998986995771}, {"input": [-69.5, -57.5], "expected": -57.49999385580652}, {"input": [-69.5, -57.0], "expected": -56.99999627335377}, {"input": [-69.5, -56.5], "expected": -56.49999773967315}, {"input": [-69.5, -56.0], "expected": -55.999998629041855}, {"input": [-69.5, -55.5], "expected": -55.499999168471625}, {"input": [-69.5, -55.0], "expected": -54.99999949565247}, {"input": [-69.5, -54.5], "expected": -54.499999694097724}, {"input": [-69.5, -54.0], "expected": -53.99999981446088}, {"input": [-69.5, -53.5], "expected": -53.49999988746483}, {"input": [-69.5, -53.0], "expected": -52.99999993174397}, {"input": [-69.5, -52.5], "expected": -52.499999958600625}, {"input": [-69.5, -52.0], "expected": -51.99999997489001}, {"input": [-69.5, -51.5], "expected": -51.49999998477002}, {"input": [-69.5, -51.0], "expected": -50.999999990762554}, {"input": [-69.5, -50.5], "expected": -50.49999999439721}, {"input": [-69.5, -50.0], "expected": -49.99999999660173}, {"input": [-69.5, -49.5], "expected": -49.49999999793884}, {"input": [-69.5, -49.0], "expected": -48.99999999874985}, {"input": [-69.5, -48.5], "expected": -48.499999999241744}, {"input": [-69.5, -48.0], "expected": -47.999999999540094}, {"input": [-69.5, -47.5], "expected": -47.499999999721055}, {"input": [-69.5, -47.0], "expected": -46.99999999983081}, {"input": [-69.5, -46.5], "expected": -46.49999999989738}, {"input": [-69.5, -46.0], "expected": -45.99999999993776}, {"input": [-69.5, -45.5], "expected": -45.49999999996225}, {"input": [-69.5, -45.0], "expected": -44.9999999999771}, {"input": [-69.5, -44.5], "expected": -44.49999999998611}, {"input": [-69.5, -44.0], "expected": -43.99999999999158}, {"input": [-69.5, -43.5], "expected": -43.49999999999489}, {"input": [-69.5, -43.0], "expected": -42.9999999999969}, {"input": [-69.5, -42.5], "expected": -42.49999999999812}, {"input": [-69.5, -42.0], "expected": -41.99999999999886}, {"input": [-69.5, -41.5], "expected": -41.49999999999931}, {"input": [-69.5, -41.0], "expected": -40.99999999999958}, {"input": [-69.5, -40.5], "expected": -40.499999999999744}, {"input": [-69.5, -40.0], "expected": -39.999999999999844}, {"input": [-69.5, -39.5], "expected": -39.49999999999991}, {"input": [-69.5, -39.0], "expected": -38.99999999999994}, {"input": [-69.5, -38.5], "expected": -38.499999999999964}, {"input": [-69.5, -38.0], "expected": -37.99999999999998}, {"input": [-69.5, -37.5], "expected": -37.499999999999986}, {"input": [-69.5, -37.0], "expected": -36.99999999999999}, {"input": [-69.5, -36.5], "expected": -36.49999999999999}, {"input": [-69.5, -36.0], "expected": -36.0}, {"input": [-69.5, -35.5], "expected": -35.5}, {"input": [-69.5, -35.0], "expected": -35.0}, {"input": [-69.5, -34.5], "expected": -34.5}, {"input": [-69.5, -34.0], "expected": -34.0}, {"input": [-69.5, -33.5], "expected": -33.5}, {"input": [-69.5, -33.0], "expected": -33.0}, {"input": [-69.5, -32.5], "expected": -32.5}, {"input": [-69.5, -32.0], "expected": -32.0}, {"input": [-69.5, -31.5], "expected": -31.5}, {"input": [-69.5, -31.0], "expected": -31.0}, {"input": [-69.5, -30.5], "expected": -30.5}, {"input": [-69.5, -30.0], "expected": -30.0}, {"input": [-69.5, -29.5], "expected": -29.5}, {"input": [-69.5, -29.0], "expected": -29.0}, {"input": [-69.5, -28.5], "expected": -28.5}, {"input": [-69.5, -28.0], "expected": -28.0}, {"input": [-69.5, -27.5], "expected": -27.5}, {"input": [-69.5, -27.0], "expected": -27.0}, {"input": [-69.5, -26.5], "expected": -26.5}, {"input": [-69.5, -26.0], "expected": -26.0}, {"input": [-69.5, -25.5], "expected": -25.5}, {"input": [-69.5, -25.0], "expected": -25.0}, {"input": [-69.5, -24.5], "expected": -24.5}, {"input": [-69.5, -24.0], "expected": -24.0}, {"input": [-69.5, -23.5], "expected": -23.5}, {"input": [-69.5, -23.0], "expected": -23.0}, {"input": [-69.5, -22.5], "expected": -22.5}, {"input": [-69.5, -22.0], "expected": -22.0}, {"input": [-69.5, -21.5], "expected": -21.5}, {"input": [-69.5, -21.0], "expected": -21.0}, {"input": [-69.5, -20.5], "expected": -20.5}, {"input": [-69.5, -20.0], "expected": -20.0}, {"input": [-69.5, -19.5], "expected": -19.5}, {"input": [-69.5, -19.0], "expected": -19.0}, {"input": [-69.5, -18.5], "expected": -18.5}, {"input": [-69.5, -18.0], "expected": -18.0}, {"input": [-69.5, -17.5], "expected": -17.5}, {"input": [-69.5, -17.0], "expected": -17.0}, {"input": [-69.5, -16.5], "expected": -16.5}, {"input": [-69.5, -16.0], "expected": -16.0}, {"input": [-69.5, -15.5], "expected": -15.5}, {"input": [-69.5, -15.0], "expected": -15.0}, {"input": [-69.5, -14.5], "expected": -14.5}, {"input": [-69.5, -14.0], "expected": -14.0}, {"input": [-69.5, -13.5], "expected": -13.5}, {"input": [-69.5, -13.0], "expected": -13.0}, {"input": [-69.5, -12.5], "expected": -12.5}, {"input": [-69.5, -12.0], "expected": -12.0}, {"input": [-69.5, -11.5], "expected": -11.5}, {"input": [-69.5, -11.0], "expected": -11.0}, {"input": [-69.5, -10.5], "expected": -10.5}, {"input": [-69.5, -10.0], "expected": -10.0}, {"input": [-69.5, -9.5], "expected": -9.5}, {"input": [-69.5, -9.0], "expected": -9.0}, {"input": [-69.5, -8.5], "expected": -8.5}, {"input": [-69.5, -8.0], "expected": -8.0}, {"input": [-69.5, -7.5], "expected": -7.5}, {"input": [-69.5, -7.0], "expected": -7.0}, {"input": [-69.5, -6.5], "expected": -6.5}, {"input": [-69.5, -6.0], "expected": -6.0}, {"input": [-69.5, -5.5], "expected": -5.5}, {"input": [-69.5, -5.0], "expected": -5.0}, {"input": [-69.5, -4.5], "expected": -4.5}, {"input": [-69.5, -4.0], "expected": -4.0}, {"input": [-69.5, -3.5], "expected": -3.5}, {"input": [-69.5, -3.0], "expected": -3.0}, {"input": [-69.5, -2.5], "expected": -2.5}, {"input": [-69.5, -2.0], "expected": -2.0}, {"input": [-69.5, -1.5], "expected": -1.5}, {"input": [-69.5, -1.0], "expected": -1.0}, {"input": [-69.5, -0.5], "expected": -0.5}, {"input": [-69.5, 0.0], "expected": 6.554408540191793e-31}, {"input": [-69.5, 0.5], "expected": 0.5}, {"input": [-69.5, 1.0], "expected": 1.0}, {"input": [-69.5, 1.5], "expected": 1.5}, {"input": [-69.5, 2.0], "expected": 2.0}, {"input": [-69.5, 2.5], "expected": 2.5}, {"input": [-69.5, 3.0], "expected": 3.0}, {"input": [-69.5, 3.5], "expected": 3.5}, {"input": [-69.5, 4.0], "expected": 4.0}, {"input": [-69.5, 4.5], "expected": 4.5}, {"input": [-69.5, 5.0], "expected": 5.0}, {"input": [-69.5, 5.5], "expected": 5.5}, {"input": [-69.5, 6.0], "expected": 6.0}, {"input": [-69.5, 6.5], "expected": 6.5}, {"input": [-69.5, 7.0], "expected": 7.0}, {"input": [-69.5, 7.5], "expected": 7.5}, {"input": [-69.5, 8.0], "expected": 8.0}, {"input": [-69.5, 8.5], "expected": 8.5}, {"input": [-69.5, 9.0], "expected": 9.0}, {"input": [-69.5, 9.5], "expected": 9.5}, {"input": [-69.5, 10.0], "expected": 10.0}, {"input": [-69.5, 10.5], "expected": 10.5}, {"input": [-69.5, 11.0], "expected": 11.0}, {"input": [-69.5, 11.5], "expected": 11.5}, {"input": [-69.5, 12.0], "expected": 12.0}, {"input": [-69.5, 12.5], "expected": 12.5}, {"input": [-69.5, 13.0], "expected": 13.0}, {"input": [-69.5, 13.5], "expected": 13.5}, {"input": [-69.5, 14.0], "expected": 14.0}, {"input": [-69.5, 14.5], "expected": 14.5}, {"input": [-69.5, 15.0], "expected": 15.0}, {"input": [-69.5, 15.5], "expected": 15.5}, {"input": [-69.5, 16.0], "expected": 16.0}, {"input": [-69.5, 16.5], "expected": 16.5}, {"input": [-69.5, 17.0], "expected": 17.0}, {"input": [-69.5, 17.5], "expected": 17.5}, {"input": [-69.5, 18.0], "expected": 18.0}, {"input": [-69.5, 18.5], "expected": 18.5}, {"input": [-69.5, 19.0], "expected": 19.0}, {"input": [-69.5, 19.5], "expected": 19.5}, {"input": [-69.5, 20.0], "expected": 20.0}, {"input": [-69.5, 20.5], "expected": 20.5}, {"input": [-69.5, 21.0], "expected": 21.0}, {"input": [-69.5, 21.5], "expected": 21.5}, {"input": [-69.5, 22.0], "expected": 22.0}, {"input": [-69.5, 22.5], "expected": 22.5}, {"input": [-69.5, 23.0], "expected": 23.0}, {"input": [-69.5, 23.5], "expected": 23.5}, {"input": [-69.5, 24.0], "expected": 24.0}, {"input": [-69.5, 24.5], "expected": 24.5}, {"input": [-69.5, 25.0], "expected": 25.0}, {"input": [-69.5, 25.5], "expected": 25.5}, {"input": [-69.5, 26.0], "expected": 26.0}, {"input": [-69.5, 26.5], "expected": 26.5}, {"input": [-69.5, 27.0], "expected": 27.0}, {"input": [-69.5, 27.5], "expected": 27.5}, {"input": [-69.5, 28.0], "expected": 28.0}, {"input": [-69.5, 28.5], "expected": 28.5}, {"input": [-69.5, 29.0], "expected": 29.0}, {"input": [-69.5, 29.5], "expected": 29.5}, {"input": [-69.5, 30.0], "expected": 30.0}, {"input": [-69.5, 30.5], "expected": 30.5}, {"input": [-69.5, 31.0], "expected": 31.0}, {"input": [-69.5, 31.5], "expected": 31.5}, {"input": [-69.5, 32.0], "expected": 32.0}, {"input": [-69.5, 32.5], "expected": 32.5}, {"input": [-69.5, 33.0], "expected": 33.0}, {"input": [-69.5, 33.5], "expected": 33.5}, {"input": [-69.5, 34.0], "expected": 34.0}, {"input": [-69.5, 34.5], "expected": 34.5}, {"input": [-69.5, 35.0], "expected": 35.0}, {"input": [-69.5, 35.5], "expected": 35.5}, {"input": [-69.5, 36.0], "expected": 36.0}, {"input": [-69.5, 36.5], "expected": 36.5}, {"input": [-69.5, 37.0], "expected": 37.0}, {"input": [-69.5, 37.5], "expected": 37.5}, {"input": [-69.5, 38.0], "expected": 38.0}, {"input": [-69.5, 38.5], "expected": 38.5}, {"input": [-69.5, 39.0], "expected": 39.0}, {"input": [-69.5, 39.5], "expected": 39.5}, {"input": [-69.5, 40.0], "expected": 40.0}, {"input": [-69.5, 40.5], "expected": 40.5}, {"input": [-69.5, 41.0], "expected": 41.0}, {"input": [-69.5, 41.5], "expected": 41.5}, {"input": [-69.5, 42.0], "expected": 42.0}, {"input": [-69.5, 42.5], "expected": 42.5}, {"input": [-69.5, 43.0], "expected": 43.0}, {"input": [-69.5, 43.5], "expected": 43.5}, {"input": [-69.5, 44.0], "expected": 44.0}, {"input": [-69.5, 44.5], "expected": 44.5}, {"input": [-69.5, 45.0], "expected": 45.0}, {"input": [-69.5, 45.5], "expected": 45.5}, {"input": [-69.5, 46.0], "expected": 46.0}, {"input": [-69.5, 46.5], "expected": 46.5}, {"input": [-69.5, 47.0], "expected": 47.0}, {"input": [-69.5, 47.5], "expected": 47.5}, {"input": [-69.5, 48.0], "expected": 48.0}, {"input": [-69.5, 48.5], "expected": 48.5}, {"input": [-69.5, 49.0], "expected": 49.0}, {"input": [-69.5, 49.5], "expected": 49.5}, {"input": [-69.5, 50.0], "expected": 50.0}, {"input": [-69.5, 50.5], "expected": 50.5}, {"input": [-69.5, 51.0], "expected": 51.0}, {"input": [-69.5, 51.5], "expected": 51.5}, {"input": [-69.5, 52.0], "expected": 52.0}, {"input": [-69.5, 52.5], "expected": 52.5}, {"input": [-69.5, 53.0], "expected": 53.0}, {"input": [-69.5, 53.5], "expected": 53.5}, {"input": [-69.5, 54.0], "expected": 54.0}, {"input": [-69.5, 54.5], "expected": 54.5}, {"input": [-69.5, 55.0], "expected": 55.0}, {"input": [-69.5, 55.5], "expected": 55.5}, {"input": [-69.5, 56.0], "expected": 56.0}, {"input": [-69.5, 56.5], "expected": 56.5}, {"input": [-69.5, 57.0], "expected": 57.0}, {"input": [-69.5, 57.5], "expected": 57.5}, {"input": [-69.5, 58.0], "expected": 58.0}, {"input": [-69.5, 58.5], "expected": 58.5}, {"input": [-69.5, 59.0], "expected": 59.0}, {"input": [-69.5, 59.5], "expected": 59.5}, {"input": [-69.5, 60.0], "expected": 60.0}, {"input": [-69.5, 60.5], "expected": 60.5}, {"input": [-69.5, 61.0], "expected": 61.0}, {"input": [-69.5, 61.5], "expected": 61.5}, {"input": [-69.5, 62.0], "expected": 62.0}, {"input": [-69.5, 62.5], "expected": 62.5}, {"input": [-69.5, 63.0], "expected": 63.0}, {"input": [-69.5, 63.5], "expected": 63.5}, {"input": [-69.5, 64.0], "expected": 64.0}, {"input": [-69.5, 64.5], "expected": 64.5}, {"input": [-69.5, 65.0], "expected": 65.0}, {"input": [-69.5, 65.5], "expected": 65.5}, {"input": [-69.5, 66.0], "expected": 66.0}, {"input": [-69.5, 66.5], "expected": 66.5}, {"input": [-69.5, 67.0], "expected": 67.0}, {"input": [-69.5, 67.5], "expected": 67.5}, {"input": [-69.5, 68.0], "expected": 68.0}, {"input": [-69.5, 68.5], "expected": 68.5}, {"input": [-69.5, 69.0], "expected": 69.0}, {"input": [-69.5, 69.5], "expected": 69.5}, {"input": [-69.5, 70.0], "expected": 70.0}, {"input": [-69.5, 70.5], "expected": 70.5}, {"input": [-69.5, 71.0], "expected": 71.0}, {"input": [-69.5, 71.5], "expected": 71.5}, {"input": [-69.5, 72.0], "expected": 72.0}, {"input": [-69.5, 72.5], "expected": 72.5}, {"input": [-69.5, 73.0], "expected": 73.0}, {"input": [-69.5, 73.5], "expected": 73.5}, {"input": [-69.5, 74.0], "expected": 74.0}, {"input": [-69.5, 74.5], "expected": 74.5}, {"input": [-69.5, 75.0], "expected": 75.0}, {"input": [-69.5, 75.5], "expected": 75.5}, {"input": [-69.5, 76.0], "expected": 76.0}, {"input": [-69.5, 76.5], "expected": 76.5}, {"input": [-69.5, 77.0], "expected": 77.0}, {"input": [-69.5, 77.5], "expected": 77.5}, {"input": [-69.5, 78.0], "expected": 78.0}, {"input": [-69.5, 78.5], "expected": 78.5}, {"input": [-69.5, 79.0], "expected": 79.0}, {"input": [-69.5, 79.5], "expected": 79.5}, {"input": [-69.5, 80.0], "expected": 80.0}, {"input": [-69.5, 80.5], "expected": 80.5}, {"input": [-69.5, 81.0], "expected": 81.0}, {"input": [-69.5, 81.5], "expected": 81.5}, {"input": [-69.5, 82.0], "expected": 82.0}, {"input": [-69.5, 82.5], "expected": 82.5}, {"input": [-69.5, 83.0], "expected": 83.0}, {"input": [-69.5, 83.5], "expected": 83.5}, {"input": [-69.5, 84.0], "expected": 84.0}, {"input": [-69.5, 84.5], "expected": 84.5}, {"input": [-69.5, 85.0], "expected": 85.0}, {"input": [-69.5, 85.5], "expected": 85.5}, {"input": [-69.5, 86.0], "expected": 86.0}, {"input": [-69.5, 86.5], "expected": 86.5}, {"input": [-69.5, 87.0], "expected": 87.0}, {"input": [-69.5, 87.5], "expected": 87.5}, {"input": [-69.5, 88.0], "expected": 88.0}, {"input": [-69.5, 88.5], "expected": 88.5}, {"input": [-69.5, 89.0], "expected": 89.0}, {"input": [-69.5, 89.5], "expected": 89.5}, {"input": [-69.5, 90.0], "expected": 90.0}, {"input": [-69.5, 90.5], "expected": 90.5}, {"input": [-69.5, 91.0], "expected": 91.0}, {"input": [-69.5, 91.5], "expected": 91.5}, {"input": [-69.5, 92.0], "expected": 92.0}, {"input": [-69.5, 92.5], "expected": 92.5}, {"input": [-69.5, 93.0], "expected": 93.0}, {"input": [-69.5, 93.5], "expected": 93.5}, {"input": [-69.5, 94.0], "expected": 94.0}, {"input": [-69.5, 94.5], "expected": 94.5}, {"input": [-69.5, 95.0], "expected": 95.0}, {"input": [-69.5, 95.5], "expected": 95.5}, {"input": [-69.5, 96.0], "expected": 96.0}, {"input": [-69.5, 96.5], "expected": 96.5}, {"input": [-69.5, 97.0], "expected": 97.0}, {"input": [-69.5, 97.5], "expected": 97.5}, {"input": [-69.5, 98.0], "expected": 98.0}, {"input": [-69.5, 98.5], "expected": 98.5}, {"input": [-69.5, 99.0], "expected": 99.0}, {"input": [-69.5, 99.5], "expected": 99.5}, {"input": [-69.0, -100.0], "expected": -68.99999999999997}, {"input": [-69.0, -99.5], "expected": -68.99999999999994}, {"input": [-69.0, -99.0], "expected": -68.9999999999999}, {"input": [-69.0, -98.5], "expected": -68.99999999999984}, {"input": [-69.0, -98.0], "expected": -68.99999999999974}, {"input": [-69.0, -97.5], "expected": -68.99999999999957}, {"input": [-69.0, -97.0], "expected": -68.9999999999993}, {"input": [-69.0, -96.5], "expected": -68.99999999999886}, {"input": [-69.0, -96.0], "expected": -68.99999999999812}, {"input": [-69.0, -95.5], "expected": -68.9999999999969}, {"input": [-69.0, -95.0], "expected": -68.99999999999488}, {"input": [-69.0, -94.5], "expected": -68.99999999999157}, {"input": [-69.0, -94.0], "expected": -68.99999999998612}, {"input": [-69.0, -93.5], "expected": -68.9999999999771}, {"input": [-69.0, -93.0], "expected": -68.99999999996224}, {"input": [-69.0, -92.5], "expected": -68.99999999993776}, {"input": [-69.0, -92.0], "expected": -68.99999999989738}, {"input": [-69.0, -91.5], "expected": -68.9999999998308}, {"input": [-69.0, -91.0], "expected": -68.99999999972106}, {"input": [-69.0, -90.5], "expected": -68.9999999995401}, {"input": [-69.0, -90.0], "expected": -68.99999999924174}, {"input": [-69.0, -89.5], "expected": -68.99999999874984}, {"input": [-69.0, -89.0], "expected": -68.99999999793884}, {"input": [-69.0, -88.5], "expected": -68.99999999660173}, {"input": [-69.0, -88.0], "expected": -68.9999999943972}, {"input": [-69.0, -87.5], "expected": -68.99999999076255}, {"input": [-69.0, -87.0], "expected": -68.99999998477001}, {"input": [-69.0, -86.5], "expected": -68.99999997489}, {"input": [-69.0, -86.0], "expected": -68.99999995860063}, {"input": [-69.0, -85.5], "expected": -68.99999993174397}, {"input": [-69.0, -85.0], "expected": -68.99999988746484}, {"input": [-69.0, -84.5], "expected": -68.99999981446088}, {"input": [-69.0, -84.0], "expected": -68.99999969409772}, {"input": [-69.0, -83.5], "expected": -68.99999949565246}, {"input": [-69.0, -83.0], "expected": -68.99999916847163}, {"input": [-69.0, -82.5], "expected": -68.99999862904185}, {"input": [-69.0, -82.0], "expected": -68.99999773967315}, {"input": [-69.0, -81.5], "expected": -68.99999627335377}, {"input": [-69.0, -81.0], "expected": -68.99999385580652}, {"input": [-69.0, -80.5], "expected": -68.99998986995772}, {"input": [-69.0, -80.0], "expected": -68.99998329843868}, {"input": [-69.0, -79.5], "expected": -68.99997246392977}, {"input": [-69.0, -79.0], "expected": -68.99995460110078}, {"input": [-69.0, -78.5], "expected": -68.99992515097136}, {"input": [-69.0, -78.0], "expected": -68.99987659781027}, {"input": [-69.0, -77.5], "expected": -68.99979655232787}, {"input": [-69.0, -77.0], "expected": -68.9996645936271}, {"input": [-69.0, -76.5], "expected": -68.99944706852465}, {"input": [-69.0, -76.0], "expected": -68.99908853354623}, {"input": [-69.0, -75.5], "expected": -68.99849768984025}, {"input": [-69.0, -75.0], "expected": -68.99752431486228}, {"input": [-69.0, -74.5], "expected": -68.99592155672943}, {"input": [-69.0, -74.0], "expected": -68.99328465151088}, {"input": [-69.0, -73.5], "expected": -68.9889522551514}, {"input": [-69.0, -73.0], "expected": -68.9818500720822}, {"input": [-69.0, -72.5], "expected": -68.97024958172737}, {"input": [-69.0, -72.0], "expected": -68.95141264842626}, {"input": [-69.0, -71.5], "expected": -68.92111026570745}, {"input": [-69.0, -71.0], "expected": -68.87307198895702}, {"input": [-69.0, -70.5], "expected": -68.79858672201725}, {"input": [-69.0, -70.0], "expected": -68.68673831248178}, {"input": [-69.0, -69.5], "expected": -68.5259230158199}, {"input": [-69.0, -69.0], "expected": -68.30685281944005}, {"input": [-69.0, -68.5], "expected": -68.0259230158199}, {"input": [-69.0, -68.0], "expected": -67.68673831248178}, {"input": [-69.0, -67.5], "expected": -67.29858672201725}, {"input": [-69.0, -67.0], "expected": -66.87307198895702}, {"input": [-69.0, -66.5], "expected": -66.42111026570745}, {"input": [-69.0, -66.0], "expected": -65.95141264842626}, {"input": [-69.0, -65.5], "expected": -65.47024958172737}, {"input": [-69.0, -65.0], "expected": -64.9818500720822}, {"input": [-69.0, -64.5], "expected": -64.4889522551514}, {"input": [-69.0, -64.0], "expected": -63.99328465151088}, {"input": [-69.0, -63.5], "expected": -63.49592155672943}, {"input": [-69.0, -63.0], "expected": -62.99752431486227}, {"input": [-69.0, -62.5], "expected": -62.49849768984024}, {"input": [-69.0, -62.0], "expected": -61.99908853354623}, {"input": [-69.0, -61.5], "expected": -61.49944706852464}, {"input": [-69.0, -61.0], "expected": -60.9996645936271}, {"input": [-69.0, -60.5], "expected": -60.49979655232787}, {"input": [-69.0, -60.0], "expected": -59.99987659781028}, {"input": [-69.0, -59.5], "expected": -59.49992515097137}, {"input": [-69.0, -59.0], "expected": -58.99995460110078}, {"input": [-69.0, -58.5], "expected": -58.49997246392977}, {"input": [-69.0, -58.0], "expected": -57.99998329843868}, {"input": [-69.0, -57.5], "expected": -57.49998986995771}, {"input": [-69.0, -57.0], "expected": -56.99999385580652}, {"input": [-69.0, -56.5], "expected": -56.49999627335377}, {"input": [-69.0, -56.0], "expected": -55.99999773967315}, {"input": [-69.0, -55.5], "expected": -55.499998629041855}, {"input": [-69.0, -55.0], "expected": -54.999999168471625}, {"input": [-69.0, -54.5], "expected": -54.49999949565247}, {"input": [-69.0, -54.0], "expected": -53.999999694097724}, {"input": [-69.0, -53.5], "expected": -53.49999981446088}, {"input": [-69.0, -53.0], "expected": -52.99999988746483}, {"input": [-69.0, -52.5], "expected": -52.49999993174397}, {"input": [-69.0, -52.0], "expected": -51.999999958600625}, {"input": [-69.0, -51.5], "expected": -51.49999997489001}, {"input": [-69.0, -51.0], "expected": -50.99999998477002}, {"input": [-69.0, -50.5], "expected": -50.499999990762554}, {"input": [-69.0, -50.0], "expected": -49.99999999439721}, {"input": [-69.0, -49.5], "expected": -49.49999999660173}, {"input": [-69.0, -49.0], "expected": -48.99999999793884}, {"input": [-69.0, -48.5], "expected": -48.49999999874985}, {"input": [-69.0, -48.0], "expected": -47.999999999241744}, {"input": [-69.0, -47.5], "expected": -47.499999999540094}, {"input": [-69.0, -47.0], "expected": -46.999999999721055}, {"input": [-69.0, -46.5], "expected": -46.49999999983081}, {"input": [-69.0, -46.0], "expected": -45.99999999989738}, {"input": [-69.0, -45.5], "expected": -45.49999999993776}, {"input": [-69.0, -45.0], "expected": -44.99999999996225}, {"input": [-69.0, -44.5], "expected": -44.4999999999771}, {"input": [-69.0, -44.0], "expected": -43.99999999998611}, {"input": [-69.0, -43.5], "expected": -43.49999999999158}, {"input": [-69.0, -43.0], "expected": -42.99999999999489}, {"input": [-69.0, -42.5], "expected": -42.4999999999969}, {"input": [-69.0, -42.0], "expected": -41.99999999999812}, {"input": [-69.0, -41.5], "expected": -41.49999999999886}, {"input": [-69.0, -41.0], "expected": -40.99999999999931}, {"input": [-69.0, -40.5], "expected": -40.49999999999958}, {"input": [-69.0, -40.0], "expected": -39.999999999999744}, {"input": [-69.0, -39.5], "expected": -39.499999999999844}, {"input": [-69.0, -39.0], "expected": -38.99999999999991}, {"input": [-69.0, -38.5], "expected": -38.49999999999994}, {"input": [-69.0, -38.0], "expected": -37.999999999999964}, {"input": [-69.0, -37.5], "expected": -37.49999999999998}, {"input": [-69.0, -37.0], "expected": -36.999999999999986}, {"input": [-69.0, -36.5], "expected": -36.49999999999999}, {"input": [-69.0, -36.0], "expected": -35.99999999999999}, {"input": [-69.0, -35.5], "expected": -35.5}, {"input": [-69.0, -35.0], "expected": -35.0}, {"input": [-69.0, -34.5], "expected": -34.5}, {"input": [-69.0, -34.0], "expected": -34.0}, {"input": [-69.0, -33.5], "expected": -33.5}, {"input": [-69.0, -33.0], "expected": -33.0}, {"input": [-69.0, -32.5], "expected": -32.5}, {"input": [-69.0, -32.0], "expected": -32.0}, {"input": [-69.0, -31.5], "expected": -31.5}, {"input": [-69.0, -31.0], "expected": -31.0}, {"input": [-69.0, -30.5], "expected": -30.5}, {"input": [-69.0, -30.0], "expected": -30.0}, {"input": [-69.0, -29.5], "expected": -29.5}, {"input": [-69.0, -29.0], "expected": -29.0}, {"input": [-69.0, -28.5], "expected": -28.5}, {"input": [-69.0, -28.0], "expected": -28.0}, {"input": [-69.0, -27.5], "expected": -27.5}, {"input": [-69.0, -27.0], "expected": -27.0}, {"input": [-69.0, -26.5], "expected": -26.5}, {"input": [-69.0, -26.0], "expected": -26.0}, {"input": [-69.0, -25.5], "expected": -25.5}, {"input": [-69.0, -25.0], "expected": -25.0}, {"input": [-69.0, -24.5], "expected": -24.5}, {"input": [-69.0, -24.0], "expected": -24.0}, {"input": [-69.0, -23.5], "expected": -23.5}, {"input": [-69.0, -23.0], "expected": -23.0}, {"input": [-69.0, -22.5], "expected": -22.5}, {"input": [-69.0, -22.0], "expected": -22.0}, {"input": [-69.0, -21.5], "expected": -21.5}, {"input": [-69.0, -21.0], "expected": -21.0}, {"input": [-69.0, -20.5], "expected": -20.5}, {"input": [-69.0, -20.0], "expected": -20.0}, {"input": [-69.0, -19.5], "expected": -19.5}, {"input": [-69.0, -19.0], "expected": -19.0}, {"input": [-69.0, -18.5], "expected": -18.5}, {"input": [-69.0, -18.0], "expected": -18.0}, {"input": [-69.0, -17.5], "expected": -17.5}, {"input": [-69.0, -17.0], "expected": -17.0}, {"input": [-69.0, -16.5], "expected": -16.5}, {"input": [-69.0, -16.0], "expected": -16.0}, {"input": [-69.0, -15.5], "expected": -15.5}, {"input": [-69.0, -15.0], "expected": -15.0}, {"input": [-69.0, -14.5], "expected": -14.5}, {"input": [-69.0, -14.0], "expected": -14.0}, {"input": [-69.0, -13.5], "expected": -13.5}, {"input": [-69.0, -13.0], "expected": -13.0}, {"input": [-69.0, -12.5], "expected": -12.5}, {"input": [-69.0, -12.0], "expected": -12.0}, {"input": [-69.0, -11.5], "expected": -11.5}, {"input": [-69.0, -11.0], "expected": -11.0}, {"input": [-69.0, -10.5], "expected": -10.5}, {"input": [-69.0, -10.0], "expected": -10.0}, {"input": [-69.0, -9.5], "expected": -9.5}, {"input": [-69.0, -9.0], "expected": -9.0}, {"input": [-69.0, -8.5], "expected": -8.5}, {"input": [-69.0, -8.0], "expected": -8.0}, {"input": [-69.0, -7.5], "expected": -7.5}, {"input": [-69.0, -7.0], "expected": -7.0}, {"input": [-69.0, -6.5], "expected": -6.5}, {"input": [-69.0, -6.0], "expected": -6.0}, {"input": [-69.0, -5.5], "expected": -5.5}, {"input": [-69.0, -5.0], "expected": -5.0}, {"input": [-69.0, -4.5], "expected": -4.5}, {"input": [-69.0, -4.0], "expected": -4.0}, {"input": [-69.0, -3.5], "expected": -3.5}, {"input": [-69.0, -3.0], "expected": -3.0}, {"input": [-69.0, -2.5], "expected": -2.5}, {"input": [-69.0, -2.0], "expected": -2.0}, {"input": [-69.0, -1.5], "expected": -1.5}, {"input": [-69.0, -1.0], "expected": -1.0}, {"input": [-69.0, -0.5], "expected": -0.5}, {"input": [-69.0, 0.0], "expected": 1.0806392777072785e-30}, {"input": [-69.0, 0.5], "expected": 0.5}, {"input": [-69.0, 1.0], "expected": 1.0}, {"input": [-69.0, 1.5], "expected": 1.5}, {"input": [-69.0, 2.0], "expected": 2.0}, {"input": [-69.0, 2.5], "expected": 2.5}, {"input": [-69.0, 3.0], "expected": 3.0}, {"input": [-69.0, 3.5], "expected": 3.5}, {"input": [-69.0, 4.0], "expected": 4.0}, {"input": [-69.0, 4.5], "expected": 4.5}, {"input": [-69.0, 5.0], "expected": 5.0}, {"input": [-69.0, 5.5], "expected": 5.5}, {"input": [-69.0, 6.0], "expected": 6.0}, {"input": [-69.0, 6.5], "expected": 6.5}, {"input": [-69.0, 7.0], "expected": 7.0}, {"input": [-69.0, 7.5], "expected": 7.5}, {"input": [-69.0, 8.0], "expected": 8.0}, {"input": [-69.0, 8.5], "expected": 8.5}, {"input": [-69.0, 9.0], "expected": 9.0}, {"input": [-69.0, 9.5], "expected": 9.5}, {"input": [-69.0, 10.0], "expected": 10.0}, {"input": [-69.0, 10.5], "expected": 10.5}, {"input": [-69.0, 11.0], "expected": 11.0}, {"input": [-69.0, 11.5], "expected": 11.5}, {"input": [-69.0, 12.0], "expected": 12.0}, {"input": [-69.0, 12.5], "expected": 12.5}, {"input": [-69.0, 13.0], "expected": 13.0}, {"input": [-69.0, 13.5], "expected": 13.5}, {"input": [-69.0, 14.0], "expected": 14.0}, {"input": [-69.0, 14.5], "expected": 14.5}, {"input": [-69.0, 15.0], "expected": 15.0}, {"input": [-69.0, 15.5], "expected": 15.5}, {"input": [-69.0, 16.0], "expected": 16.0}, {"input": [-69.0, 16.5], "expected": 16.5}, {"input": [-69.0, 17.0], "expected": 17.0}, {"input": [-69.0, 17.5], "expected": 17.5}, {"input": [-69.0, 18.0], "expected": 18.0}, {"input": [-69.0, 18.5], "expected": 18.5}, {"input": [-69.0, 19.0], "expected": 19.0}, {"input": [-69.0, 19.5], "expected": 19.5}, {"input": [-69.0, 20.0], "expected": 20.0}, {"input": [-69.0, 20.5], "expected": 20.5}, {"input": [-69.0, 21.0], "expected": 21.0}, {"input": [-69.0, 21.5], "expected": 21.5}, {"input": [-69.0, 22.0], "expected": 22.0}, {"input": [-69.0, 22.5], "expected": 22.5}, {"input": [-69.0, 23.0], "expected": 23.0}, {"input": [-69.0, 23.5], "expected": 23.5}, {"input": [-69.0, 24.0], "expected": 24.0}, {"input": [-69.0, 24.5], "expected": 24.5}, {"input": [-69.0, 25.0], "expected": 25.0}, {"input": [-69.0, 25.5], "expected": 25.5}, {"input": [-69.0, 26.0], "expected": 26.0}, {"input": [-69.0, 26.5], "expected": 26.5}, {"input": [-69.0, 27.0], "expected": 27.0}, {"input": [-69.0, 27.5], "expected": 27.5}, {"input": [-69.0, 28.0], "expected": 28.0}, {"input": [-69.0, 28.5], "expected": 28.5}, {"input": [-69.0, 29.0], "expected": 29.0}, {"input": [-69.0, 29.5], "expected": 29.5}, {"input": [-69.0, 30.0], "expected": 30.0}, {"input": [-69.0, 30.5], "expected": 30.5}, {"input": [-69.0, 31.0], "expected": 31.0}, {"input": [-69.0, 31.5], "expected": 31.5}, {"input": [-69.0, 32.0], "expected": 32.0}, {"input": [-69.0, 32.5], "expected": 32.5}, {"input": [-69.0, 33.0], "expected": 33.0}, {"input": [-69.0, 33.5], "expected": 33.5}, {"input": [-69.0, 34.0], "expected": 34.0}, {"input": [-69.0, 34.5], "expected": 34.5}, {"input": [-69.0, 35.0], "expected": 35.0}, {"input": [-69.0, 35.5], "expected": 35.5}, {"input": [-69.0, 36.0], "expected": 36.0}, {"input": [-69.0, 36.5], "expected": 36.5}, {"input": [-69.0, 37.0], "expected": 37.0}, {"input": [-69.0, 37.5], "expected": 37.5}, {"input": [-69.0, 38.0], "expected": 38.0}, {"input": [-69.0, 38.5], "expected": 38.5}, {"input": [-69.0, 39.0], "expected": 39.0}, {"input": [-69.0, 39.5], "expected": 39.5}, {"input": [-69.0, 40.0], "expected": 40.0}, {"input": [-69.0, 40.5], "expected": 40.5}, {"input": [-69.0, 41.0], "expected": 41.0}, {"input": [-69.0, 41.5], "expected": 41.5}, {"input": [-69.0, 42.0], "expected": 42.0}, {"input": [-69.0, 42.5], "expected": 42.5}, {"input": [-69.0, 43.0], "expected": 43.0}, {"input": [-69.0, 43.5], "expected": 43.5}, {"input": [-69.0, 44.0], "expected": 44.0}, {"input": [-69.0, 44.5], "expected": 44.5}, {"input": [-69.0, 45.0], "expected": 45.0}, {"input": [-69.0, 45.5], "expected": 45.5}, {"input": [-69.0, 46.0], "expected": 46.0}, {"input": [-69.0, 46.5], "expected": 46.5}, {"input": [-69.0, 47.0], "expected": 47.0}, {"input": [-69.0, 47.5], "expected": 47.5}, {"input": [-69.0, 48.0], "expected": 48.0}, {"input": [-69.0, 48.5], "expected": 48.5}, {"input": [-69.0, 49.0], "expected": 49.0}, {"input": [-69.0, 49.5], "expected": 49.5}, {"input": [-69.0, 50.0], "expected": 50.0}, {"input": [-69.0, 50.5], "expected": 50.5}, {"input": [-69.0, 51.0], "expected": 51.0}, {"input": [-69.0, 51.5], "expected": 51.5}, {"input": [-69.0, 52.0], "expected": 52.0}, {"input": [-69.0, 52.5], "expected": 52.5}, {"input": [-69.0, 53.0], "expected": 53.0}, {"input": [-69.0, 53.5], "expected": 53.5}, {"input": [-69.0, 54.0], "expected": 54.0}, {"input": [-69.0, 54.5], "expected": 54.5}, {"input": [-69.0, 55.0], "expected": 55.0}, {"input": [-69.0, 55.5], "expected": 55.5}, {"input": [-69.0, 56.0], "expected": 56.0}, {"input": [-69.0, 56.5], "expected": 56.5}, {"input": [-69.0, 57.0], "expected": 57.0}, {"input": [-69.0, 57.5], "expected": 57.5}, {"input": [-69.0, 58.0], "expected": 58.0}, {"input": [-69.0, 58.5], "expected": 58.5}, {"input": [-69.0, 59.0], "expected": 59.0}, {"input": [-69.0, 59.5], "expected": 59.5}, {"input": [-69.0, 60.0], "expected": 60.0}, {"input": [-69.0, 60.5], "expected": 60.5}, {"input": [-69.0, 61.0], "expected": 61.0}, {"input": [-69.0, 61.5], "expected": 61.5}, {"input": [-69.0, 62.0], "expected": 62.0}, {"input": [-69.0, 62.5], "expected": 62.5}, {"input": [-69.0, 63.0], "expected": 63.0}, {"input": [-69.0, 63.5], "expected": 63.5}, {"input": [-69.0, 64.0], "expected": 64.0}, {"input": [-69.0, 64.5], "expected": 64.5}, {"input": [-69.0, 65.0], "expected": 65.0}, {"input": [-69.0, 65.5], "expected": 65.5}, {"input": [-69.0, 66.0], "expected": 66.0}, {"input": [-69.0, 66.5], "expected": 66.5}, {"input": [-69.0, 67.0], "expected": 67.0}, {"input": [-69.0, 67.5], "expected": 67.5}, {"input": [-69.0, 68.0], "expected": 68.0}, {"input": [-69.0, 68.5], "expected": 68.5}, {"input": [-69.0, 69.0], "expected": 69.0}, {"input": [-69.0, 69.5], "expected": 69.5}, {"input": [-69.0, 70.0], "expected": 70.0}, {"input": [-69.0, 70.5], "expected": 70.5}, {"input": [-69.0, 71.0], "expected": 71.0}, {"input": [-69.0, 71.5], "expected": 71.5}, {"input": [-69.0, 72.0], "expected": 72.0}, {"input": [-69.0, 72.5], "expected": 72.5}, {"input": [-69.0, 73.0], "expected": 73.0}, {"input": [-69.0, 73.5], "expected": 73.5}, {"input": [-69.0, 74.0], "expected": 74.0}, {"input": [-69.0, 74.5], "expected": 74.5}, {"input": [-69.0, 75.0], "expected": 75.0}, {"input": [-69.0, 75.5], "expected": 75.5}, {"input": [-69.0, 76.0], "expected": 76.0}, {"input": [-69.0, 76.5], "expected": 76.5}, {"input": [-69.0, 77.0], "expected": 77.0}, {"input": [-69.0, 77.5], "expected": 77.5}, {"input": [-69.0, 78.0], "expected": 78.0}, {"input": [-69.0, 78.5], "expected": 78.5}, {"input": [-69.0, 79.0], "expected": 79.0}, {"input": [-69.0, 79.5], "expected": 79.5}, {"input": [-69.0, 80.0], "expected": 80.0}, {"input": [-69.0, 80.5], "expected": 80.5}, {"input": [-69.0, 81.0], "expected": 81.0}, {"input": [-69.0, 81.5], "expected": 81.5}, {"input": [-69.0, 82.0], "expected": 82.0}, {"input": [-69.0, 82.5], "expected": 82.5}, {"input": [-69.0, 83.0], "expected": 83.0}, {"input": [-69.0, 83.5], "expected": 83.5}, {"input": [-69.0, 84.0], "expected": 84.0}, {"input": [-69.0, 84.5], "expected": 84.5}, {"input": [-69.0, 85.0], "expected": 85.0}, {"input": [-69.0, 85.5], "expected": 85.5}, {"input": [-69.0, 86.0], "expected": 86.0}, {"input": [-69.0, 86.5], "expected": 86.5}, {"input": [-69.0, 87.0], "expected": 87.0}, {"input": [-69.0, 87.5], "expected": 87.5}, {"input": [-69.0, 88.0], "expected": 88.0}, {"input": [-69.0, 88.5], "expected": 88.5}, {"input": [-69.0, 89.0], "expected": 89.0}, {"input": [-69.0, 89.5], "expected": 89.5}, {"input": [-69.0, 90.0], "expected": 90.0}, {"input": [-69.0, 90.5], "expected": 90.5}, {"input": [-69.0, 91.0], "expected": 91.0}, {"input": [-69.0, 91.5], "expected": 91.5}, {"input": [-69.0, 92.0], "expected": 92.0}, {"input": [-69.0, 92.5], "expected": 92.5}, {"input": [-69.0, 93.0], "expected": 93.0}, {"input": [-69.0, 93.5], "expected": 93.5}, {"input": [-69.0, 94.0], "expected": 94.0}, {"input": [-69.0, 94.5], "expected": 94.5}, {"input": [-69.0, 95.0], "expected": 95.0}, {"input": [-69.0, 95.5], "expected": 95.5}, {"input": [-69.0, 96.0], "expected": 96.0}, {"input": [-69.0, 96.5], "expected": 96.5}, {"input": [-69.0, 97.0], "expected": 97.0}, {"input": [-69.0, 97.5], "expected": 97.5}, {"input": [-69.0, 98.0], "expected": 98.0}, {"input": [-69.0, 98.5], "expected": 98.5}, {"input": [-69.0, 99.0], "expected": 99.0}, {"input": [-69.0, 99.5], "expected": 99.5}, {"input": [-68.5, -100.0], "expected": -68.49999999999999}, {"input": [-68.5, -99.5], "expected": -68.49999999999997}, {"input": [-68.5, -99.0], "expected": -68.49999999999994}, {"input": [-68.5, -98.5], "expected": -68.4999999999999}, {"input": [-68.5, -98.0], "expected": -68.49999999999984}, {"input": [-68.5, -97.5], "expected": -68.49999999999974}, {"input": [-68.5, -97.0], "expected": -68.49999999999957}, {"input": [-68.5, -96.5], "expected": -68.4999999999993}, {"input": [-68.5, -96.0], "expected": -68.49999999999886}, {"input": [-68.5, -95.5], "expected": -68.49999999999812}, {"input": [-68.5, -95.0], "expected": -68.4999999999969}, {"input": [-68.5, -94.5], "expected": -68.49999999999488}, {"input": [-68.5, -94.0], "expected": -68.49999999999157}, {"input": [-68.5, -93.5], "expected": -68.49999999998612}, {"input": [-68.5, -93.0], "expected": -68.4999999999771}, {"input": [-68.5, -92.5], "expected": -68.49999999996224}, {"input": [-68.5, -92.0], "expected": -68.49999999993776}, {"input": [-68.5, -91.5], "expected": -68.49999999989738}, {"input": [-68.5, -91.0], "expected": -68.4999999998308}, {"input": [-68.5, -90.5], "expected": -68.49999999972106}, {"input": [-68.5, -90.0], "expected": -68.4999999995401}, {"input": [-68.5, -89.5], "expected": -68.49999999924174}, {"input": [-68.5, -89.0], "expected": -68.49999999874984}, {"input": [-68.5, -88.5], "expected": -68.49999999793884}, {"input": [-68.5, -88.0], "expected": -68.49999999660173}, {"input": [-68.5, -87.5], "expected": -68.4999999943972}, {"input": [-68.5, -87.0], "expected": -68.49999999076255}, {"input": [-68.5, -86.5], "expected": -68.49999998477001}, {"input": [-68.5, -86.0], "expected": -68.49999997489}, {"input": [-68.5, -85.5], "expected": -68.49999995860063}, {"input": [-68.5, -85.0], "expected": -68.49999993174397}, {"input": [-68.5, -84.5], "expected": -68.49999988746484}, {"input": [-68.5, -84.0], "expected": -68.49999981446088}, {"input": [-68.5, -83.5], "expected": -68.49999969409772}, {"input": [-68.5, -83.0], "expected": -68.49999949565246}, {"input": [-68.5, -82.5], "expected": -68.49999916847163}, {"input": [-68.5, -82.0], "expected": -68.49999862904185}, {"input": [-68.5, -81.5], "expected": -68.49999773967315}, {"input": [-68.5, -81.0], "expected": -68.49999627335377}, {"input": [-68.5, -80.5], "expected": -68.49999385580652}, {"input": [-68.5, -80.0], "expected": -68.49998986995772}, {"input": [-68.5, -79.5], "expected": -68.49998329843868}, {"input": [-68.5, -79.0], "expected": -68.49997246392977}, {"input": [-68.5, -78.5], "expected": -68.49995460110078}, {"input": [-68.5, -78.0], "expected": -68.49992515097136}, {"input": [-68.5, -77.5], "expected": -68.49987659781027}, {"input": [-68.5, -77.0], "expected": -68.49979655232787}, {"input": [-68.5, -76.5], "expected": -68.4996645936271}, {"input": [-68.5, -76.0], "expected": -68.49944706852465}, {"input": [-68.5, -75.5], "expected": -68.49908853354623}, {"input": [-68.5, -75.0], "expected": -68.49849768984025}, {"input": [-68.5, -74.5], "expected": -68.49752431486228}, {"input": [-68.5, -74.0], "expected": -68.49592155672943}, {"input": [-68.5, -73.5], "expected": -68.49328465151088}, {"input": [-68.5, -73.0], "expected": -68.4889522551514}, {"input": [-68.5, -72.5], "expected": -68.4818500720822}, {"input": [-68.5, -72.0], "expected": -68.47024958172737}, {"input": [-68.5, -71.5], "expected": -68.45141264842626}, {"input": [-68.5, -71.0], "expected": -68.42111026570745}, {"input": [-68.5, -70.5], "expected": -68.37307198895702}, {"input": [-68.5, -70.0], "expected": -68.29858672201725}, {"input": [-68.5, -69.5], "expected": -68.18673831248178}, {"input": [-68.5, -69.0], "expected": -68.0259230158199}, {"input": [-68.5, -68.5], "expected": -67.80685281944005}, {"input": [-68.5, -68.0], "expected": -67.5259230158199}, {"input": [-68.5, -67.5], "expected": -67.18673831248178}, {"input": [-68.5, -67.0], "expected": -66.79858672201725}, {"input": [-68.5, -66.5], "expected": -66.37307198895702}, {"input": [-68.5, -66.0], "expected": -65.92111026570745}, {"input": [-68.5, -65.5], "expected": -65.45141264842626}, {"input": [-68.5, -65.0], "expected": -64.97024958172737}, {"input": [-68.5, -64.5], "expected": -64.4818500720822}, {"input": [-68.5, -64.0], "expected": -63.9889522551514}, {"input": [-68.5, -63.5], "expected": -63.49328465151088}, {"input": [-68.5, -63.0], "expected": -62.99592155672943}, {"input": [-68.5, -62.5], "expected": -62.49752431486227}, {"input": [-68.5, -62.0], "expected": -61.99849768984024}, {"input": [-68.5, -61.5], "expected": -61.49908853354623}, {"input": [-68.5, -61.0], "expected": -60.99944706852464}, {"input": [-68.5, -60.5], "expected": -60.4996645936271}, {"input": [-68.5, -60.0], "expected": -59.99979655232787}, {"input": [-68.5, -59.5], "expected": -59.49987659781028}, {"input": [-68.5, -59.0], "expected": -58.99992515097137}, {"input": [-68.5, -58.5], "expected": -58.49995460110078}, {"input": [-68.5, -58.0], "expected": -57.99997246392977}, {"input": [-68.5, -57.5], "expected": -57.49998329843868}, {"input": [-68.5, -57.0], "expected": -56.99998986995771}, {"input": [-68.5, -56.5], "expected": -56.49999385580652}, {"input": [-68.5, -56.0], "expected": -55.99999627335377}, {"input": [-68.5, -55.5], "expected": -55.49999773967315}, {"input": [-68.5, -55.0], "expected": -54.999998629041855}, {"input": [-68.5, -54.5], "expected": -54.499999168471625}, {"input": [-68.5, -54.0], "expected": -53.99999949565247}, {"input": [-68.5, -53.5], "expected": -53.499999694097724}, {"input": [-68.5, -53.0], "expected": -52.99999981446088}, {"input": [-68.5, -52.5], "expected": -52.49999988746483}, {"input": [-68.5, -52.0], "expected": -51.99999993174397}, {"input": [-68.5, -51.5], "expected": -51.499999958600625}, {"input": [-68.5, -51.0], "expected": -50.99999997489001}, {"input": [-68.5, -50.5], "expected": -50.49999998477002}, {"input": [-68.5, -50.0], "expected": -49.999999990762554}, {"input": [-68.5, -49.5], "expected": -49.49999999439721}, {"input": [-68.5, -49.0], "expected": -48.99999999660173}, {"input": [-68.5, -48.5], "expected": -48.49999999793884}, {"input": [-68.5, -48.0], "expected": -47.99999999874985}, {"input": [-68.5, -47.5], "expected": -47.499999999241744}, {"input": [-68.5, -47.0], "expected": -46.999999999540094}, {"input": [-68.5, -46.5], "expected": -46.499999999721055}, {"input": [-68.5, -46.0], "expected": -45.99999999983081}, {"input": [-68.5, -45.5], "expected": -45.49999999989738}, {"input": [-68.5, -45.0], "expected": -44.99999999993776}, {"input": [-68.5, -44.5], "expected": -44.49999999996225}, {"input": [-68.5, -44.0], "expected": -43.9999999999771}, {"input": [-68.5, -43.5], "expected": -43.49999999998611}, {"input": [-68.5, -43.0], "expected": -42.99999999999158}, {"input": [-68.5, -42.5], "expected": -42.49999999999489}, {"input": [-68.5, -42.0], "expected": -41.9999999999969}, {"input": [-68.5, -41.5], "expected": -41.49999999999812}, {"input": [-68.5, -41.0], "expected": -40.99999999999886}, {"input": [-68.5, -40.5], "expected": -40.49999999999931}, {"input": [-68.5, -40.0], "expected": -39.99999999999958}, {"input": [-68.5, -39.5], "expected": -39.499999999999744}, {"input": [-68.5, -39.0], "expected": -38.999999999999844}, {"input": [-68.5, -38.5], "expected": -38.49999999999991}, {"input": [-68.5, -38.0], "expected": -37.99999999999994}, {"input": [-68.5, -37.5], "expected": -37.499999999999964}, {"input": [-68.5, -37.0], "expected": -36.99999999999998}, {"input": [-68.5, -36.5], "expected": -36.499999999999986}, {"input": [-68.5, -36.0], "expected": -35.99999999999999}, {"input": [-68.5, -35.5], "expected": -35.49999999999999}, {"input": [-68.5, -35.0], "expected": -35.0}, {"input": [-68.5, -34.5], "expected": -34.5}, {"input": [-68.5, -34.0], "expected": -34.0}, {"input": [-68.5, -33.5], "expected": -33.5}, {"input": [-68.5, -33.0], "expected": -33.0}, {"input": [-68.5, -32.5], "expected": -32.5}, {"input": [-68.5, -32.0], "expected": -32.0}, {"input": [-68.5, -31.5], "expected": -31.5}, {"input": [-68.5, -31.0], "expected": -31.0}, {"input": [-68.5, -30.5], "expected": -30.5}, {"input": [-68.5, -30.0], "expected": -30.0}, {"input": [-68.5, -29.5], "expected": -29.5}, {"input": [-68.5, -29.0], "expected": -29.0}, {"input": [-68.5, -28.5], "expected": -28.5}, {"input": [-68.5, -28.0], "expected": -28.0}, {"input": [-68.5, -27.5], "expected": -27.5}, {"input": [-68.5, -27.0], "expected": -27.0}, {"input": [-68.5, -26.5], "expected": -26.5}, {"input": [-68.5, -26.0], "expected": -26.0}, {"input": [-68.5, -25.5], "expected": -25.5}, {"input": [-68.5, -25.0], "expected": -25.0}, {"input": [-68.5, -24.5], "expected": -24.5}, {"input": [-68.5, -24.0], "expected": -24.0}, {"input": [-68.5, -23.5], "expected": -23.5}, {"input": [-68.5, -23.0], "expected": -23.0}, {"input": [-68.5, -22.5], "expected": -22.5}, {"input": [-68.5, -22.0], "expected": -22.0}, {"input": [-68.5, -21.5], "expected": -21.5}, {"input": [-68.5, -21.0], "expected": -21.0}, {"input": [-68.5, -20.5], "expected": -20.5}, {"input": [-68.5, -20.0], "expected": -20.0}, {"input": [-68.5, -19.5], "expected": -19.5}, {"input": [-68.5, -19.0], "expected": -19.0}, {"input": [-68.5, -18.5], "expected": -18.5}, {"input": [-68.5, -18.0], "expected": -18.0}, {"input": [-68.5, -17.5], "expected": -17.5}, {"input": [-68.5, -17.0], "expected": -17.0}, {"input": [-68.5, -16.5], "expected": -16.5}, {"input": [-68.5, -16.0], "expected": -16.0}, {"input": [-68.5, -15.5], "expected": -15.5}, {"input": [-68.5, -15.0], "expected": -15.0}, {"input": [-68.5, -14.5], "expected": -14.5}, {"input": [-68.5, -14.0], "expected": -14.0}, {"input": [-68.5, -13.5], "expected": -13.5}, {"input": [-68.5, -13.0], "expected": -13.0}, {"input": [-68.5, -12.5], "expected": -12.5}, {"input": [-68.5, -12.0], "expected": -12.0}, {"input": [-68.5, -11.5], "expected": -11.5}, {"input": [-68.5, -11.0], "expected": -11.0}, {"input": [-68.5, -10.5], "expected": -10.5}, {"input": [-68.5, -10.0], "expected": -10.0}, {"input": [-68.5, -9.5], "expected": -9.5}, {"input": [-68.5, -9.0], "expected": -9.0}, {"input": [-68.5, -8.5], "expected": -8.5}, {"input": [-68.5, -8.0], "expected": -8.0}, {"input": [-68.5, -7.5], "expected": -7.5}, {"input": [-68.5, -7.0], "expected": -7.0}, {"input": [-68.5, -6.5], "expected": -6.5}, {"input": [-68.5, -6.0], "expected": -6.0}, {"input": [-68.5, -5.5], "expected": -5.5}, {"input": [-68.5, -5.0], "expected": -5.0}, {"input": [-68.5, -4.5], "expected": -4.5}, {"input": [-68.5, -4.0], "expected": -4.0}, {"input": [-68.5, -3.5], "expected": -3.5}, {"input": [-68.5, -3.0], "expected": -3.0}, {"input": [-68.5, -2.5], "expected": -2.5}, {"input": [-68.5, -2.0], "expected": -2.0}, {"input": [-68.5, -1.5], "expected": -1.5}, {"input": [-68.5, -1.0], "expected": -1.0}, {"input": [-68.5, -0.5], "expected": -0.5}, {"input": [-68.5, 0.0], "expected": 1.7816729631100128e-30}, {"input": [-68.5, 0.5], "expected": 0.5}, {"input": [-68.5, 1.0], "expected": 1.0}, {"input": [-68.5, 1.5], "expected": 1.5}, {"input": [-68.5, 2.0], "expected": 2.0}, {"input": [-68.5, 2.5], "expected": 2.5}, {"input": [-68.5, 3.0], "expected": 3.0}, {"input": [-68.5, 3.5], "expected": 3.5}, {"input": [-68.5, 4.0], "expected": 4.0}, {"input": [-68.5, 4.5], "expected": 4.5}, {"input": [-68.5, 5.0], "expected": 5.0}, {"input": [-68.5, 5.5], "expected": 5.5}, {"input": [-68.5, 6.0], "expected": 6.0}, {"input": [-68.5, 6.5], "expected": 6.5}, {"input": [-68.5, 7.0], "expected": 7.0}, {"input": [-68.5, 7.5], "expected": 7.5}, {"input": [-68.5, 8.0], "expected": 8.0}, {"input": [-68.5, 8.5], "expected": 8.5}, {"input": [-68.5, 9.0], "expected": 9.0}, {"input": [-68.5, 9.5], "expected": 9.5}, {"input": [-68.5, 10.0], "expected": 10.0}, {"input": [-68.5, 10.5], "expected": 10.5}, {"input": [-68.5, 11.0], "expected": 11.0}, {"input": [-68.5, 11.5], "expected": 11.5}, {"input": [-68.5, 12.0], "expected": 12.0}, {"input": [-68.5, 12.5], "expected": 12.5}, {"input": [-68.5, 13.0], "expected": 13.0}, {"input": [-68.5, 13.5], "expected": 13.5}, {"input": [-68.5, 14.0], "expected": 14.0}, {"input": [-68.5, 14.5], "expected": 14.5}, {"input": [-68.5, 15.0], "expected": 15.0}, {"input": [-68.5, 15.5], "expected": 15.5}, {"input": [-68.5, 16.0], "expected": 16.0}, {"input": [-68.5, 16.5], "expected": 16.5}, {"input": [-68.5, 17.0], "expected": 17.0}, {"input": [-68.5, 17.5], "expected": 17.5}, {"input": [-68.5, 18.0], "expected": 18.0}, {"input": [-68.5, 18.5], "expected": 18.5}, {"input": [-68.5, 19.0], "expected": 19.0}, {"input": [-68.5, 19.5], "expected": 19.5}, {"input": [-68.5, 20.0], "expected": 20.0}, {"input": [-68.5, 20.5], "expected": 20.5}, {"input": [-68.5, 21.0], "expected": 21.0}, {"input": [-68.5, 21.5], "expected": 21.5}, {"input": [-68.5, 22.0], "expected": 22.0}, {"input": [-68.5, 22.5], "expected": 22.5}, {"input": [-68.5, 23.0], "expected": 23.0}, {"input": [-68.5, 23.5], "expected": 23.5}, {"input": [-68.5, 24.0], "expected": 24.0}, {"input": [-68.5, 24.5], "expected": 24.5}, {"input": [-68.5, 25.0], "expected": 25.0}, {"input": [-68.5, 25.5], "expected": 25.5}, {"input": [-68.5, 26.0], "expected": 26.0}, {"input": [-68.5, 26.5], "expected": 26.5}, {"input": [-68.5, 27.0], "expected": 27.0}, {"input": [-68.5, 27.5], "expected": 27.5}, {"input": [-68.5, 28.0], "expected": 28.0}, {"input": [-68.5, 28.5], "expected": 28.5}, {"input": [-68.5, 29.0], "expected": 29.0}, {"input": [-68.5, 29.5], "expected": 29.5}, {"input": [-68.5, 30.0], "expected": 30.0}, {"input": [-68.5, 30.5], "expected": 30.5}, {"input": [-68.5, 31.0], "expected": 31.0}, {"input": [-68.5, 31.5], "expected": 31.5}, {"input": [-68.5, 32.0], "expected": 32.0}, {"input": [-68.5, 32.5], "expected": 32.5}, {"input": [-68.5, 33.0], "expected": 33.0}, {"input": [-68.5, 33.5], "expected": 33.5}, {"input": [-68.5, 34.0], "expected": 34.0}, {"input": [-68.5, 34.5], "expected": 34.5}, {"input": [-68.5, 35.0], "expected": 35.0}, {"input": [-68.5, 35.5], "expected": 35.5}, {"input": [-68.5, 36.0], "expected": 36.0}, {"input": [-68.5, 36.5], "expected": 36.5}, {"input": [-68.5, 37.0], "expected": 37.0}, {"input": [-68.5, 37.5], "expected": 37.5}, {"input": [-68.5, 38.0], "expected": 38.0}, {"input": [-68.5, 38.5], "expected": 38.5}, {"input": [-68.5, 39.0], "expected": 39.0}, {"input": [-68.5, 39.5], "expected": 39.5}, {"input": [-68.5, 40.0], "expected": 40.0}, {"input": [-68.5, 40.5], "expected": 40.5}, {"input": [-68.5, 41.0], "expected": 41.0}, {"input": [-68.5, 41.5], "expected": 41.5}, {"input": [-68.5, 42.0], "expected": 42.0}, {"input": [-68.5, 42.5], "expected": 42.5}, {"input": [-68.5, 43.0], "expected": 43.0}, {"input": [-68.5, 43.5], "expected": 43.5}, {"input": [-68.5, 44.0], "expected": 44.0}, {"input": [-68.5, 44.5], "expected": 44.5}, {"input": [-68.5, 45.0], "expected": 45.0}, {"input": [-68.5, 45.5], "expected": 45.5}, {"input": [-68.5, 46.0], "expected": 46.0}, {"input": [-68.5, 46.5], "expected": 46.5}, {"input": [-68.5, 47.0], "expected": 47.0}, {"input": [-68.5, 47.5], "expected": 47.5}, {"input": [-68.5, 48.0], "expected": 48.0}, {"input": [-68.5, 48.5], "expected": 48.5}, {"input": [-68.5, 49.0], "expected": 49.0}, {"input": [-68.5, 49.5], "expected": 49.5}, {"input": [-68.5, 50.0], "expected": 50.0}, {"input": [-68.5, 50.5], "expected": 50.5}, {"input": [-68.5, 51.0], "expected": 51.0}, {"input": [-68.5, 51.5], "expected": 51.5}, {"input": [-68.5, 52.0], "expected": 52.0}, {"input": [-68.5, 52.5], "expected": 52.5}, {"input": [-68.5, 53.0], "expected": 53.0}, {"input": [-68.5, 53.5], "expected": 53.5}, {"input": [-68.5, 54.0], "expected": 54.0}, {"input": [-68.5, 54.5], "expected": 54.5}, {"input": [-68.5, 55.0], "expected": 55.0}, {"input": [-68.5, 55.5], "expected": 55.5}, {"input": [-68.5, 56.0], "expected": 56.0}, {"input": [-68.5, 56.5], "expected": 56.5}, {"input": [-68.5, 57.0], "expected": 57.0}, {"input": [-68.5, 57.5], "expected": 57.5}, {"input": [-68.5, 58.0], "expected": 58.0}, {"input": [-68.5, 58.5], "expected": 58.5}, {"input": [-68.5, 59.0], "expected": 59.0}, {"input": [-68.5, 59.5], "expected": 59.5}, {"input": [-68.5, 60.0], "expected": 60.0}, {"input": [-68.5, 60.5], "expected": 60.5}, {"input": [-68.5, 61.0], "expected": 61.0}, {"input": [-68.5, 61.5], "expected": 61.5}, {"input": [-68.5, 62.0], "expected": 62.0}, {"input": [-68.5, 62.5], "expected": 62.5}, {"input": [-68.5, 63.0], "expected": 63.0}, {"input": [-68.5, 63.5], "expected": 63.5}, {"input": [-68.5, 64.0], "expected": 64.0}, {"input": [-68.5, 64.5], "expected": 64.5}, {"input": [-68.5, 65.0], "expected": 65.0}, {"input": [-68.5, 65.5], "expected": 65.5}, {"input": [-68.5, 66.0], "expected": 66.0}, {"input": [-68.5, 66.5], "expected": 66.5}, {"input": [-68.5, 67.0], "expected": 67.0}, {"input": [-68.5, 67.5], "expected": 67.5}, {"input": [-68.5, 68.0], "expected": 68.0}, {"input": [-68.5, 68.5], "expected": 68.5}, {"input": [-68.5, 69.0], "expected": 69.0}, {"input": [-68.5, 69.5], "expected": 69.5}, {"input": [-68.5, 70.0], "expected": 70.0}, {"input": [-68.5, 70.5], "expected": 70.5}, {"input": [-68.5, 71.0], "expected": 71.0}, {"input": [-68.5, 71.5], "expected": 71.5}, {"input": [-68.5, 72.0], "expected": 72.0}, {"input": [-68.5, 72.5], "expected": 72.5}, {"input": [-68.5, 73.0], "expected": 73.0}, {"input": [-68.5, 73.5], "expected": 73.5}, {"input": [-68.5, 74.0], "expected": 74.0}, {"input": [-68.5, 74.5], "expected": 74.5}, {"input": [-68.5, 75.0], "expected": 75.0}, {"input": [-68.5, 75.5], "expected": 75.5}, {"input": [-68.5, 76.0], "expected": 76.0}, {"input": [-68.5, 76.5], "expected": 76.5}, {"input": [-68.5, 77.0], "expected": 77.0}, {"input": [-68.5, 77.5], "expected": 77.5}, {"input": [-68.5, 78.0], "expected": 78.0}, {"input": [-68.5, 78.5], "expected": 78.5}, {"input": [-68.5, 79.0], "expected": 79.0}, {"input": [-68.5, 79.5], "expected": 79.5}, {"input": [-68.5, 80.0], "expected": 80.0}, {"input": [-68.5, 80.5], "expected": 80.5}, {"input": [-68.5, 81.0], "expected": 81.0}, {"input": [-68.5, 81.5], "expected": 81.5}, {"input": [-68.5, 82.0], "expected": 82.0}, {"input": [-68.5, 82.5], "expected": 82.5}, {"input": [-68.5, 83.0], "expected": 83.0}, {"input": [-68.5, 83.5], "expected": 83.5}, {"input": [-68.5, 84.0], "expected": 84.0}, {"input": [-68.5, 84.5], "expected": 84.5}, {"input": [-68.5, 85.0], "expected": 85.0}, {"input": [-68.5, 85.5], "expected": 85.5}, {"input": [-68.5, 86.0], "expected": 86.0}, {"input": [-68.5, 86.5], "expected": 86.5}, {"input": [-68.5, 87.0], "expected": 87.0}, {"input": [-68.5, 87.5], "expected": 87.5}, {"input": [-68.5, 88.0], "expected": 88.0}, {"input": [-68.5, 88.5], "expected": 88.5}, {"input": [-68.5, 89.0], "expected": 89.0}, {"input": [-68.5, 89.5], "expected": 89.5}, {"input": [-68.5, 90.0], "expected": 90.0}, {"input": [-68.5, 90.5], "expected": 90.5}, {"input": [-68.5, 91.0], "expected": 91.0}, {"input": [-68.5, 91.5], "expected": 91.5}, {"input": [-68.5, 92.0], "expected": 92.0}, {"input": [-68.5, 92.5], "expected": 92.5}, {"input": [-68.5, 93.0], "expected": 93.0}, {"input": [-68.5, 93.5], "expected": 93.5}, {"input": [-68.5, 94.0], "expected": 94.0}, {"input": [-68.5, 94.5], "expected": 94.5}, {"input": [-68.5, 95.0], "expected": 95.0}, {"input": [-68.5, 95.5], "expected": 95.5}, {"input": [-68.5, 96.0], "expected": 96.0}, {"input": [-68.5, 96.5], "expected": 96.5}, {"input": [-68.5, 97.0], "expected": 97.0}, {"input": [-68.5, 97.5], "expected": 97.5}, {"input": [-68.5, 98.0], "expected": 98.0}, {"input": [-68.5, 98.5], "expected": 98.5}, {"input": [-68.5, 99.0], "expected": 99.0}, {"input": [-68.5, 99.5], "expected": 99.5}, {"input": [-68.0, -100.0], "expected": -67.99999999999999}, {"input": [-68.0, -99.5], "expected": -67.99999999999999}, {"input": [-68.0, -99.0], "expected": -67.99999999999997}, {"input": [-68.0, -98.5], "expected": -67.99999999999994}, {"input": [-68.0, -98.0], "expected": -67.9999999999999}, {"input": [-68.0, -97.5], "expected": -67.99999999999984}, {"input": [-68.0, -97.0], "expected": -67.99999999999974}, {"input": [-68.0, -96.5], "expected": -67.99999999999957}, {"input": [-68.0, -96.0], "expected": -67.9999999999993}, {"input": [-68.0, -95.5], "expected": -67.99999999999886}, {"input": [-68.0, -95.0], "expected": -67.99999999999812}, {"input": [-68.0, -94.5], "expected": -67.9999999999969}, {"input": [-68.0, -94.0], "expected": -67.99999999999488}, {"input": [-68.0, -93.5], "expected": -67.99999999999157}, {"input": [-68.0, -93.0], "expected": -67.99999999998612}, {"input": [-68.0, -92.5], "expected": -67.9999999999771}, {"input": [-68.0, -92.0], "expected": -67.99999999996224}, {"input": [-68.0, -91.5], "expected": -67.99999999993776}, {"input": [-68.0, -91.0], "expected": -67.99999999989738}, {"input": [-68.0, -90.5], "expected": -67.9999999998308}, {"input": [-68.0, -90.0], "expected": -67.99999999972106}, {"input": [-68.0, -89.5], "expected": -67.9999999995401}, {"input": [-68.0, -89.0], "expected": -67.99999999924174}, {"input": [-68.0, -88.5], "expected": -67.99999999874984}, {"input": [-68.0, -88.0], "expected": -67.99999999793884}, {"input": [-68.0, -87.5], "expected": -67.99999999660173}, {"input": [-68.0, -87.0], "expected": -67.9999999943972}, {"input": [-68.0, -86.5], "expected": -67.99999999076255}, {"input": [-68.0, -86.0], "expected": -67.99999998477001}, {"input": [-68.0, -85.5], "expected": -67.99999997489}, {"input": [-68.0, -85.0], "expected": -67.99999995860063}, {"input": [-68.0, -84.5], "expected": -67.99999993174397}, {"input": [-68.0, -84.0], "expected": -67.99999988746484}, {"input": [-68.0, -83.5], "expected": -67.99999981446088}, {"input": [-68.0, -83.0], "expected": -67.99999969409772}, {"input": [-68.0, -82.5], "expected": -67.99999949565246}, {"input": [-68.0, -82.0], "expected": -67.99999916847163}, {"input": [-68.0, -81.5], "expected": -67.99999862904185}, {"input": [-68.0, -81.0], "expected": -67.99999773967315}, {"input": [-68.0, -80.5], "expected": -67.99999627335377}, {"input": [-68.0, -80.0], "expected": -67.99999385580652}, {"input": [-68.0, -79.5], "expected": -67.99998986995772}, {"input": [-68.0, -79.0], "expected": -67.99998329843868}, {"input": [-68.0, -78.5], "expected": -67.99997246392977}, {"input": [-68.0, -78.0], "expected": -67.99995460110078}, {"input": [-68.0, -77.5], "expected": -67.99992515097136}, {"input": [-68.0, -77.0], "expected": -67.99987659781027}, {"input": [-68.0, -76.5], "expected": -67.99979655232787}, {"input": [-68.0, -76.0], "expected": -67.9996645936271}, {"input": [-68.0, -75.5], "expected": -67.99944706852465}, {"input": [-68.0, -75.0], "expected": -67.99908853354623}, {"input": [-68.0, -74.5], "expected": -67.99849768984025}, {"input": [-68.0, -74.0], "expected": -67.99752431486228}, {"input": [-68.0, -73.5], "expected": -67.99592155672943}, {"input": [-68.0, -73.0], "expected": -67.99328465151088}, {"input": [-68.0, -72.5], "expected": -67.9889522551514}, {"input": [-68.0, -72.0], "expected": -67.9818500720822}, {"input": [-68.0, -71.5], "expected": -67.97024958172737}, {"input": [-68.0, -71.0], "expected": -67.95141264842626}, {"input": [-68.0, -70.5], "expected": -67.92111026570745}, {"input": [-68.0, -70.0], "expected": -67.87307198895702}, {"input": [-68.0, -69.5], "expected": -67.79858672201725}, {"input": [-68.0, -69.0], "expected": -67.68673831248178}, {"input": [-68.0, -68.5], "expected": -67.5259230158199}, {"input": [-68.0, -68.0], "expected": -67.30685281944005}, {"input": [-68.0, -67.5], "expected": -67.0259230158199}, {"input": [-68.0, -67.0], "expected": -66.68673831248178}, {"input": [-68.0, -66.5], "expected": -66.29858672201725}, {"input": [-68.0, -66.0], "expected": -65.87307198895702}, {"input": [-68.0, -65.5], "expected": -65.42111026570745}, {"input": [-68.0, -65.0], "expected": -64.95141264842626}, {"input": [-68.0, -64.5], "expected": -64.47024958172737}, {"input": [-68.0, -64.0], "expected": -63.98185007208219}, {"input": [-68.0, -63.5], "expected": -63.4889522551514}, {"input": [-68.0, -63.0], "expected": -62.99328465151088}, {"input": [-68.0, -62.5], "expected": -62.49592155672943}, {"input": [-68.0, -62.0], "expected": -61.99752431486227}, {"input": [-68.0, -61.5], "expected": -61.49849768984024}, {"input": [-68.0, -61.0], "expected": -60.99908853354623}, {"input": [-68.0, -60.5], "expected": -60.49944706852464}, {"input": [-68.0, -60.0], "expected": -59.9996645936271}, {"input": [-68.0, -59.5], "expected": -59.49979655232787}, {"input": [-68.0, -59.0], "expected": -58.99987659781028}, {"input": [-68.0, -58.5], "expected": -58.49992515097137}, {"input": [-68.0, -58.0], "expected": -57.99995460110078}, {"input": [-68.0, -57.5], "expected": -57.49997246392977}, {"input": [-68.0, -57.0], "expected": -56.99998329843868}, {"input": [-68.0, -56.5], "expected": -56.49998986995771}, {"input": [-68.0, -56.0], "expected": -55.99999385580652}, {"input": [-68.0, -55.5], "expected": -55.49999627335377}, {"input": [-68.0, -55.0], "expected": -54.99999773967315}, {"input": [-68.0, -54.5], "expected": -54.499998629041855}, {"input": [-68.0, -54.0], "expected": -53.999999168471625}, {"input": [-68.0, -53.5], "expected": -53.49999949565247}, {"input": [-68.0, -53.0], "expected": -52.999999694097724}, {"input": [-68.0, -52.5], "expected": -52.49999981446088}, {"input": [-68.0, -52.0], "expected": -51.99999988746483}, {"input": [-68.0, -51.5], "expected": -51.49999993174397}, {"input": [-68.0, -51.0], "expected": -50.999999958600625}, {"input": [-68.0, -50.5], "expected": -50.49999997489001}, {"input": [-68.0, -50.0], "expected": -49.99999998477002}, {"input": [-68.0, -49.5], "expected": -49.499999990762554}, {"input": [-68.0, -49.0], "expected": -48.99999999439721}, {"input": [-68.0, -48.5], "expected": -48.49999999660173}, {"input": [-68.0, -48.0], "expected": -47.99999999793884}, {"input": [-68.0, -47.5], "expected": -47.49999999874985}, {"input": [-68.0, -47.0], "expected": -46.999999999241744}, {"input": [-68.0, -46.5], "expected": -46.499999999540094}, {"input": [-68.0, -46.0], "expected": -45.999999999721055}, {"input": [-68.0, -45.5], "expected": -45.49999999983081}, {"input": [-68.0, -45.0], "expected": -44.99999999989738}, {"input": [-68.0, -44.5], "expected": -44.49999999993776}, {"input": [-68.0, -44.0], "expected": -43.99999999996225}, {"input": [-68.0, -43.5], "expected": -43.4999999999771}, {"input": [-68.0, -43.0], "expected": -42.99999999998611}, {"input": [-68.0, -42.5], "expected": -42.49999999999158}, {"input": [-68.0, -42.0], "expected": -41.99999999999489}, {"input": [-68.0, -41.5], "expected": -41.4999999999969}, {"input": [-68.0, -41.0], "expected": -40.99999999999812}, {"input": [-68.0, -40.5], "expected": -40.49999999999886}, {"input": [-68.0, -40.0], "expected": -39.99999999999931}, {"input": [-68.0, -39.5], "expected": -39.49999999999958}, {"input": [-68.0, -39.0], "expected": -38.999999999999744}, {"input": [-68.0, -38.5], "expected": -38.499999999999844}, {"input": [-68.0, -38.0], "expected": -37.99999999999991}, {"input": [-68.0, -37.5], "expected": -37.49999999999994}, {"input": [-68.0, -37.0], "expected": -36.999999999999964}, {"input": [-68.0, -36.5], "expected": -36.49999999999998}, {"input": [-68.0, -36.0], "expected": -35.999999999999986}, {"input": [-68.0, -35.5], "expected": -35.49999999999999}, {"input": [-68.0, -35.0], "expected": -34.99999999999999}, {"input": [-68.0, -34.5], "expected": -34.5}, {"input": [-68.0, -34.0], "expected": -34.0}, {"input": [-68.0, -33.5], "expected": -33.5}, {"input": [-68.0, -33.0], "expected": -33.0}, {"input": [-68.0, -32.5], "expected": -32.5}, {"input": [-68.0, -32.0], "expected": -32.0}, {"input": [-68.0, -31.5], "expected": -31.5}, {"input": [-68.0, -31.0], "expected": -31.0}, {"input": [-68.0, -30.5], "expected": -30.5}, {"input": [-68.0, -30.0], "expected": -30.0}, {"input": [-68.0, -29.5], "expected": -29.5}, {"input": [-68.0, -29.0], "expected": -29.0}, {"input": [-68.0, -28.5], "expected": -28.5}, {"input": [-68.0, -28.0], "expected": -28.0}, {"input": [-68.0, -27.5], "expected": -27.5}, {"input": [-68.0, -27.0], "expected": -27.0}, {"input": [-68.0, -26.5], "expected": -26.5}, {"input": [-68.0, -26.0], "expected": -26.0}, {"input": [-68.0, -25.5], "expected": -25.5}, {"input": [-68.0, -25.0], "expected": -25.0}, {"input": [-68.0, -24.5], "expected": -24.5}, {"input": [-68.0, -24.0], "expected": -24.0}, {"input": [-68.0, -23.5], "expected": -23.5}, {"input": [-68.0, -23.0], "expected": -23.0}, {"input": [-68.0, -22.5], "expected": -22.5}, {"input": [-68.0, -22.0], "expected": -22.0}, {"input": [-68.0, -21.5], "expected": -21.5}, {"input": [-68.0, -21.0], "expected": -21.0}, {"input": [-68.0, -20.5], "expected": -20.5}, {"input": [-68.0, -20.0], "expected": -20.0}, {"input": [-68.0, -19.5], "expected": -19.5}, {"input": [-68.0, -19.0], "expected": -19.0}, {"input": [-68.0, -18.5], "expected": -18.5}, {"input": [-68.0, -18.0], "expected": -18.0}, {"input": [-68.0, -17.5], "expected": -17.5}, {"input": [-68.0, -17.0], "expected": -17.0}, {"input": [-68.0, -16.5], "expected": -16.5}, {"input": [-68.0, -16.0], "expected": -16.0}, {"input": [-68.0, -15.5], "expected": -15.5}, {"input": [-68.0, -15.0], "expected": -15.0}, {"input": [-68.0, -14.5], "expected": -14.5}, {"input": [-68.0, -14.0], "expected": -14.0}, {"input": [-68.0, -13.5], "expected": -13.5}, {"input": [-68.0, -13.0], "expected": -13.0}, {"input": [-68.0, -12.5], "expected": -12.5}, {"input": [-68.0, -12.0], "expected": -12.0}, {"input": [-68.0, -11.5], "expected": -11.5}, {"input": [-68.0, -11.0], "expected": -11.0}, {"input": [-68.0, -10.5], "expected": -10.5}, {"input": [-68.0, -10.0], "expected": -10.0}, {"input": [-68.0, -9.5], "expected": -9.5}, {"input": [-68.0, -9.0], "expected": -9.0}, {"input": [-68.0, -8.5], "expected": -8.5}, {"input": [-68.0, -8.0], "expected": -8.0}, {"input": [-68.0, -7.5], "expected": -7.5}, {"input": [-68.0, -7.0], "expected": -7.0}, {"input": [-68.0, -6.5], "expected": -6.5}, {"input": [-68.0, -6.0], "expected": -6.0}, {"input": [-68.0, -5.5], "expected": -5.5}, {"input": [-68.0, -5.0], "expected": -5.0}, {"input": [-68.0, -4.5], "expected": -4.5}, {"input": [-68.0, -4.0], "expected": -4.0}, {"input": [-68.0, -3.5], "expected": -3.5}, {"input": [-68.0, -3.0], "expected": -3.0}, {"input": [-68.0, -2.5], "expected": -2.5}, {"input": [-68.0, -2.0], "expected": -2.0}, {"input": [-68.0, -1.5], "expected": -1.5}, {"input": [-68.0, -1.0], "expected": -1.0}, {"input": [-68.0, -0.5], "expected": -0.5}, {"input": [-68.0, 0.0], "expected": 2.9374821117108028e-30}, {"input": [-68.0, 0.5], "expected": 0.5}, {"input": [-68.0, 1.0], "expected": 1.0}, {"input": [-68.0, 1.5], "expected": 1.5}, {"input": [-68.0, 2.0], "expected": 2.0}, {"input": [-68.0, 2.5], "expected": 2.5}, {"input": [-68.0, 3.0], "expected": 3.0}, {"input": [-68.0, 3.5], "expected": 3.5}, {"input": [-68.0, 4.0], "expected": 4.0}, {"input": [-68.0, 4.5], "expected": 4.5}, {"input": [-68.0, 5.0], "expected": 5.0}, {"input": [-68.0, 5.5], "expected": 5.5}, {"input": [-68.0, 6.0], "expected": 6.0}, {"input": [-68.0, 6.5], "expected": 6.5}, {"input": [-68.0, 7.0], "expected": 7.0}, {"input": [-68.0, 7.5], "expected": 7.5}, {"input": [-68.0, 8.0], "expected": 8.0}, {"input": [-68.0, 8.5], "expected": 8.5}, {"input": [-68.0, 9.0], "expected": 9.0}, {"input": [-68.0, 9.5], "expected": 9.5}, {"input": [-68.0, 10.0], "expected": 10.0}, {"input": [-68.0, 10.5], "expected": 10.5}, {"input": [-68.0, 11.0], "expected": 11.0}, {"input": [-68.0, 11.5], "expected": 11.5}, {"input": [-68.0, 12.0], "expected": 12.0}, {"input": [-68.0, 12.5], "expected": 12.5}, {"input": [-68.0, 13.0], "expected": 13.0}, {"input": [-68.0, 13.5], "expected": 13.5}, {"input": [-68.0, 14.0], "expected": 14.0}, {"input": [-68.0, 14.5], "expected": 14.5}, {"input": [-68.0, 15.0], "expected": 15.0}, {"input": [-68.0, 15.5], "expected": 15.5}, {"input": [-68.0, 16.0], "expected": 16.0}, {"input": [-68.0, 16.5], "expected": 16.5}, {"input": [-68.0, 17.0], "expected": 17.0}, {"input": [-68.0, 17.5], "expected": 17.5}, {"input": [-68.0, 18.0], "expected": 18.0}, {"input": [-68.0, 18.5], "expected": 18.5}, {"input": [-68.0, 19.0], "expected": 19.0}, {"input": [-68.0, 19.5], "expected": 19.5}, {"input": [-68.0, 20.0], "expected": 20.0}, {"input": [-68.0, 20.5], "expected": 20.5}, {"input": [-68.0, 21.0], "expected": 21.0}, {"input": [-68.0, 21.5], "expected": 21.5}, {"input": [-68.0, 22.0], "expected": 22.0}, {"input": [-68.0, 22.5], "expected": 22.5}, {"input": [-68.0, 23.0], "expected": 23.0}, {"input": [-68.0, 23.5], "expected": 23.5}, {"input": [-68.0, 24.0], "expected": 24.0}, {"input": [-68.0, 24.5], "expected": 24.5}, {"input": [-68.0, 25.0], "expected": 25.0}, {"input": [-68.0, 25.5], "expected": 25.5}, {"input": [-68.0, 26.0], "expected": 26.0}, {"input": [-68.0, 26.5], "expected": 26.5}, {"input": [-68.0, 27.0], "expected": 27.0}, {"input": [-68.0, 27.5], "expected": 27.5}, {"input": [-68.0, 28.0], "expected": 28.0}, {"input": [-68.0, 28.5], "expected": 28.5}, {"input": [-68.0, 29.0], "expected": 29.0}, {"input": [-68.0, 29.5], "expected": 29.5}, {"input": [-68.0, 30.0], "expected": 30.0}, {"input": [-68.0, 30.5], "expected": 30.5}, {"input": [-68.0, 31.0], "expected": 31.0}, {"input": [-68.0, 31.5], "expected": 31.5}, {"input": [-68.0, 32.0], "expected": 32.0}, {"input": [-68.0, 32.5], "expected": 32.5}, {"input": [-68.0, 33.0], "expected": 33.0}, {"input": [-68.0, 33.5], "expected": 33.5}, {"input": [-68.0, 34.0], "expected": 34.0}, {"input": [-68.0, 34.5], "expected": 34.5}, {"input": [-68.0, 35.0], "expected": 35.0}, {"input": [-68.0, 35.5], "expected": 35.5}, {"input": [-68.0, 36.0], "expected": 36.0}, {"input": [-68.0, 36.5], "expected": 36.5}, {"input": [-68.0, 37.0], "expected": 37.0}, {"input": [-68.0, 37.5], "expected": 37.5}, {"input": [-68.0, 38.0], "expected": 38.0}, {"input": [-68.0, 38.5], "expected": 38.5}, {"input": [-68.0, 39.0], "expected": 39.0}, {"input": [-68.0, 39.5], "expected": 39.5}, {"input": [-68.0, 40.0], "expected": 40.0}, {"input": [-68.0, 40.5], "expected": 40.5}, {"input": [-68.0, 41.0], "expected": 41.0}, {"input": [-68.0, 41.5], "expected": 41.5}, {"input": [-68.0, 42.0], "expected": 42.0}, {"input": [-68.0, 42.5], "expected": 42.5}, {"input": [-68.0, 43.0], "expected": 43.0}, {"input": [-68.0, 43.5], "expected": 43.5}, {"input": [-68.0, 44.0], "expected": 44.0}, {"input": [-68.0, 44.5], "expected": 44.5}, {"input": [-68.0, 45.0], "expected": 45.0}, {"input": [-68.0, 45.5], "expected": 45.5}, {"input": [-68.0, 46.0], "expected": 46.0}, {"input": [-68.0, 46.5], "expected": 46.5}, {"input": [-68.0, 47.0], "expected": 47.0}, {"input": [-68.0, 47.5], "expected": 47.5}, {"input": [-68.0, 48.0], "expected": 48.0}, {"input": [-68.0, 48.5], "expected": 48.5}, {"input": [-68.0, 49.0], "expected": 49.0}, {"input": [-68.0, 49.5], "expected": 49.5}, {"input": [-68.0, 50.0], "expected": 50.0}, {"input": [-68.0, 50.5], "expected": 50.5}, {"input": [-68.0, 51.0], "expected": 51.0}, {"input": [-68.0, 51.5], "expected": 51.5}, {"input": [-68.0, 52.0], "expected": 52.0}, {"input": [-68.0, 52.5], "expected": 52.5}, {"input": [-68.0, 53.0], "expected": 53.0}, {"input": [-68.0, 53.5], "expected": 53.5}, {"input": [-68.0, 54.0], "expected": 54.0}, {"input": [-68.0, 54.5], "expected": 54.5}, {"input": [-68.0, 55.0], "expected": 55.0}, {"input": [-68.0, 55.5], "expected": 55.5}, {"input": [-68.0, 56.0], "expected": 56.0}, {"input": [-68.0, 56.5], "expected": 56.5}, {"input": [-68.0, 57.0], "expected": 57.0}, {"input": [-68.0, 57.5], "expected": 57.5}, {"input": [-68.0, 58.0], "expected": 58.0}, {"input": [-68.0, 58.5], "expected": 58.5}, {"input": [-68.0, 59.0], "expected": 59.0}, {"input": [-68.0, 59.5], "expected": 59.5}, {"input": [-68.0, 60.0], "expected": 60.0}, {"input": [-68.0, 60.5], "expected": 60.5}, {"input": [-68.0, 61.0], "expected": 61.0}, {"input": [-68.0, 61.5], "expected": 61.5}, {"input": [-68.0, 62.0], "expected": 62.0}, {"input": [-68.0, 62.5], "expected": 62.5}, {"input": [-68.0, 63.0], "expected": 63.0}, {"input": [-68.0, 63.5], "expected": 63.5}, {"input": [-68.0, 64.0], "expected": 64.0}, {"input": [-68.0, 64.5], "expected": 64.5}, {"input": [-68.0, 65.0], "expected": 65.0}, {"input": [-68.0, 65.5], "expected": 65.5}, {"input": [-68.0, 66.0], "expected": 66.0}, {"input": [-68.0, 66.5], "expected": 66.5}, {"input": [-68.0, 67.0], "expected": 67.0}, {"input": [-68.0, 67.5], "expected": 67.5}, {"input": [-68.0, 68.0], "expected": 68.0}, {"input": [-68.0, 68.5], "expected": 68.5}, {"input": [-68.0, 69.0], "expected": 69.0}, {"input": [-68.0, 69.5], "expected": 69.5}, {"input": [-68.0, 70.0], "expected": 70.0}, {"input": [-68.0, 70.5], "expected": 70.5}, {"input": [-68.0, 71.0], "expected": 71.0}, {"input": [-68.0, 71.5], "expected": 71.5}, {"input": [-68.0, 72.0], "expected": 72.0}, {"input": [-68.0, 72.5], "expected": 72.5}, {"input": [-68.0, 73.0], "expected": 73.0}, {"input": [-68.0, 73.5], "expected": 73.5}, {"input": [-68.0, 74.0], "expected": 74.0}, {"input": [-68.0, 74.5], "expected": 74.5}, {"input": [-68.0, 75.0], "expected": 75.0}, {"input": [-68.0, 75.5], "expected": 75.5}, {"input": [-68.0, 76.0], "expected": 76.0}, {"input": [-68.0, 76.5], "expected": 76.5}, {"input": [-68.0, 77.0], "expected": 77.0}, {"input": [-68.0, 77.5], "expected": 77.5}, {"input": [-68.0, 78.0], "expected": 78.0}, {"input": [-68.0, 78.5], "expected": 78.5}, {"input": [-68.0, 79.0], "expected": 79.0}, {"input": [-68.0, 79.5], "expected": 79.5}, {"input": [-68.0, 80.0], "expected": 80.0}, {"input": [-68.0, 80.5], "expected": 80.5}, {"input": [-68.0, 81.0], "expected": 81.0}, {"input": [-68.0, 81.5], "expected": 81.5}, {"input": [-68.0, 82.0], "expected": 82.0}, {"input": [-68.0, 82.5], "expected": 82.5}, {"input": [-68.0, 83.0], "expected": 83.0}, {"input": [-68.0, 83.5], "expected": 83.5}, {"input": [-68.0, 84.0], "expected": 84.0}, {"input": [-68.0, 84.5], "expected": 84.5}, {"input": [-68.0, 85.0], "expected": 85.0}, {"input": [-68.0, 85.5], "expected": 85.5}, {"input": [-68.0, 86.0], "expected": 86.0}, {"input": [-68.0, 86.5], "expected": 86.5}, {"input": [-68.0, 87.0], "expected": 87.0}, {"input": [-68.0, 87.5], "expected": 87.5}, {"input": [-68.0, 88.0], "expected": 88.0}, {"input": [-68.0, 88.5], "expected": 88.5}, {"input": [-68.0, 89.0], "expected": 89.0}, {"input": [-68.0, 89.5], "expected": 89.5}, {"input": [-68.0, 90.0], "expected": 90.0}, {"input": [-68.0, 90.5], "expected": 90.5}, {"input": [-68.0, 91.0], "expected": 91.0}, {"input": [-68.0, 91.5], "expected": 91.5}, {"input": [-68.0, 92.0], "expected": 92.0}, {"input": [-68.0, 92.5], "expected": 92.5}, {"input": [-68.0, 93.0], "expected": 93.0}, {"input": [-68.0, 93.5], "expected": 93.5}, {"input": [-68.0, 94.0], "expected": 94.0}, {"input": [-68.0, 94.5], "expected": 94.5}, {"input": [-68.0, 95.0], "expected": 95.0}, {"input": [-68.0, 95.5], "expected": 95.5}, {"input": [-68.0, 96.0], "expected": 96.0}, {"input": [-68.0, 96.5], "expected": 96.5}, {"input": [-68.0, 97.0], "expected": 97.0}, {"input": [-68.0, 97.5], "expected": 97.5}, {"input": [-68.0, 98.0], "expected": 98.0}, {"input": [-68.0, 98.5], "expected": 98.5}, {"input": [-68.0, 99.0], "expected": 99.0}, {"input": [-68.0, 99.5], "expected": 99.5}, {"input": [-67.5, -100.0], "expected": -67.49999999999999}, {"input": [-67.5, -99.5], "expected": -67.49999999999999}, {"input": [-67.5, -99.0], "expected": -67.49999999999999}, {"input": [-67.5, -98.5], "expected": -67.49999999999997}, {"input": [-67.5, -98.0], "expected": -67.49999999999994}, {"input": [-67.5, -97.5], "expected": -67.4999999999999}, {"input": [-67.5, -97.0], "expected": -67.49999999999984}, {"input": [-67.5, -96.5], "expected": -67.49999999999974}, {"input": [-67.5, -96.0], "expected": -67.49999999999957}, {"input": [-67.5, -95.5], "expected": -67.4999999999993}, {"input": [-67.5, -95.0], "expected": -67.49999999999886}, {"input": [-67.5, -94.5], "expected": -67.49999999999812}, {"input": [-67.5, -94.0], "expected": -67.4999999999969}, {"input": [-67.5, -93.5], "expected": -67.49999999999488}, {"input": [-67.5, -93.0], "expected": -67.49999999999157}, {"input": [-67.5, -92.5], "expected": -67.49999999998612}, {"input": [-67.5, -92.0], "expected": -67.4999999999771}, {"input": [-67.5, -91.5], "expected": -67.49999999996224}, {"input": [-67.5, -91.0], "expected": -67.49999999993776}, {"input": [-67.5, -90.5], "expected": -67.49999999989738}, {"input": [-67.5, -90.0], "expected": -67.4999999998308}, {"input": [-67.5, -89.5], "expected": -67.49999999972106}, {"input": [-67.5, -89.0], "expected": -67.4999999995401}, {"input": [-67.5, -88.5], "expected": -67.49999999924174}, {"input": [-67.5, -88.0], "expected": -67.49999999874984}, {"input": [-67.5, -87.5], "expected": -67.49999999793884}, {"input": [-67.5, -87.0], "expected": -67.49999999660173}, {"input": [-67.5, -86.5], "expected": -67.4999999943972}, {"input": [-67.5, -86.0], "expected": -67.49999999076255}, {"input": [-67.5, -85.5], "expected": -67.49999998477001}, {"input": [-67.5, -85.0], "expected": -67.49999997489}, {"input": [-67.5, -84.5], "expected": -67.49999995860063}, {"input": [-67.5, -84.0], "expected": -67.49999993174397}, {"input": [-67.5, -83.5], "expected": -67.49999988746484}, {"input": [-67.5, -83.0], "expected": -67.49999981446088}, {"input": [-67.5, -82.5], "expected": -67.49999969409772}, {"input": [-67.5, -82.0], "expected": -67.49999949565246}, {"input": [-67.5, -81.5], "expected": -67.49999916847163}, {"input": [-67.5, -81.0], "expected": -67.49999862904185}, {"input": [-67.5, -80.5], "expected": -67.49999773967315}, {"input": [-67.5, -80.0], "expected": -67.49999627335377}, {"input": [-67.5, -79.5], "expected": -67.49999385580652}, {"input": [-67.5, -79.0], "expected": -67.49998986995772}, {"input": [-67.5, -78.5], "expected": -67.49998329843868}, {"input": [-67.5, -78.0], "expected": -67.49997246392977}, {"input": [-67.5, -77.5], "expected": -67.49995460110078}, {"input": [-67.5, -77.0], "expected": -67.49992515097136}, {"input": [-67.5, -76.5], "expected": -67.49987659781027}, {"input": [-67.5, -76.0], "expected": -67.49979655232787}, {"input": [-67.5, -75.5], "expected": -67.4996645936271}, {"input": [-67.5, -75.0], "expected": -67.49944706852465}, {"input": [-67.5, -74.5], "expected": -67.49908853354623}, {"input": [-67.5, -74.0], "expected": -67.49849768984025}, {"input": [-67.5, -73.5], "expected": -67.49752431486228}, {"input": [-67.5, -73.0], "expected": -67.49592155672943}, {"input": [-67.5, -72.5], "expected": -67.49328465151088}, {"input": [-67.5, -72.0], "expected": -67.4889522551514}, {"input": [-67.5, -71.5], "expected": -67.4818500720822}, {"input": [-67.5, -71.0], "expected": -67.47024958172737}, {"input": [-67.5, -70.5], "expected": -67.45141264842626}, {"input": [-67.5, -70.0], "expected": -67.42111026570745}, {"input": [-67.5, -69.5], "expected": -67.37307198895702}, {"input": [-67.5, -69.0], "expected": -67.29858672201725}, {"input": [-67.5, -68.5], "expected": -67.18673831248178}, {"input": [-67.5, -68.0], "expected": -67.0259230158199}, {"input": [-67.5, -67.5], "expected": -66.80685281944005}, {"input": [-67.5, -67.0], "expected": -66.5259230158199}, {"input": [-67.5, -66.5], "expected": -66.18673831248178}, {"input": [-67.5, -66.0], "expected": -65.79858672201725}, {"input": [-67.5, -65.5], "expected": -65.37307198895702}, {"input": [-67.5, -65.0], "expected": -64.92111026570745}, {"input": [-67.5, -64.5], "expected": -64.45141264842626}, {"input": [-67.5, -64.0], "expected": -63.97024958172738}, {"input": [-67.5, -63.5], "expected": -63.48185007208219}, {"input": [-67.5, -63.0], "expected": -62.9889522551514}, {"input": [-67.5, -62.5], "expected": -62.49328465151088}, {"input": [-67.5, -62.0], "expected": -61.99592155672943}, {"input": [-67.5, -61.5], "expected": -61.49752431486227}, {"input": [-67.5, -61.0], "expected": -60.99849768984024}, {"input": [-67.5, -60.5], "expected": -60.49908853354623}, {"input": [-67.5, -60.0], "expected": -59.99944706852464}, {"input": [-67.5, -59.5], "expected": -59.4996645936271}, {"input": [-67.5, -59.0], "expected": -58.99979655232787}, {"input": [-67.5, -58.5], "expected": -58.49987659781028}, {"input": [-67.5, -58.0], "expected": -57.99992515097137}, {"input": [-67.5, -57.5], "expected": -57.49995460110078}, {"input": [-67.5, -57.0], "expected": -56.99997246392977}, {"input": [-67.5, -56.5], "expected": -56.49998329843868}, {"input": [-67.5, -56.0], "expected": -55.99998986995771}, {"input": [-67.5, -55.5], "expected": -55.49999385580652}, {"input": [-67.5, -55.0], "expected": -54.99999627335377}, {"input": [-67.5, -54.5], "expected": -54.49999773967315}, {"input": [-67.5, -54.0], "expected": -53.999998629041855}, {"input": [-67.5, -53.5], "expected": -53.499999168471625}, {"input": [-67.5, -53.0], "expected": -52.99999949565247}, {"input": [-67.5, -52.5], "expected": -52.499999694097724}, {"input": [-67.5, -52.0], "expected": -51.99999981446088}, {"input": [-67.5, -51.5], "expected": -51.49999988746483}, {"input": [-67.5, -51.0], "expected": -50.99999993174397}, {"input": [-67.5, -50.5], "expected": -50.499999958600625}, {"input": [-67.5, -50.0], "expected": -49.99999997489001}, {"input": [-67.5, -49.5], "expected": -49.49999998477002}, {"input": [-67.5, -49.0], "expected": -48.999999990762554}, {"input": [-67.5, -48.5], "expected": -48.49999999439721}, {"input": [-67.5, -48.0], "expected": -47.99999999660173}, {"input": [-67.5, -47.5], "expected": -47.49999999793884}, {"input": [-67.5, -47.0], "expected": -46.99999999874985}, {"input": [-67.5, -46.5], "expected": -46.499999999241744}, {"input": [-67.5, -46.0], "expected": -45.999999999540094}, {"input": [-67.5, -45.5], "expected": -45.499999999721055}, {"input": [-67.5, -45.0], "expected": -44.99999999983081}, {"input": [-67.5, -44.5], "expected": -44.49999999989738}, {"input": [-67.5, -44.0], "expected": -43.99999999993776}, {"input": [-67.5, -43.5], "expected": -43.49999999996225}, {"input": [-67.5, -43.0], "expected": -42.9999999999771}, {"input": [-67.5, -42.5], "expected": -42.49999999998611}, {"input": [-67.5, -42.0], "expected": -41.99999999999158}, {"input": [-67.5, -41.5], "expected": -41.49999999999489}, {"input": [-67.5, -41.0], "expected": -40.9999999999969}, {"input": [-67.5, -40.5], "expected": -40.49999999999812}, {"input": [-67.5, -40.0], "expected": -39.99999999999886}, {"input": [-67.5, -39.5], "expected": -39.49999999999931}, {"input": [-67.5, -39.0], "expected": -38.99999999999958}, {"input": [-67.5, -38.5], "expected": -38.499999999999744}, {"input": [-67.5, -38.0], "expected": -37.999999999999844}, {"input": [-67.5, -37.5], "expected": -37.49999999999991}, {"input": [-67.5, -37.0], "expected": -36.99999999999994}, {"input": [-67.5, -36.5], "expected": -36.499999999999964}, {"input": [-67.5, -36.0], "expected": -35.99999999999998}, {"input": [-67.5, -35.5], "expected": -35.499999999999986}, {"input": [-67.5, -35.0], "expected": -34.99999999999999}, {"input": [-67.5, -34.5], "expected": -34.49999999999999}, {"input": [-67.5, -34.0], "expected": -34.0}, {"input": [-67.5, -33.5], "expected": -33.5}, {"input": [-67.5, -33.0], "expected": -33.0}, {"input": [-67.5, -32.5], "expected": -32.5}, {"input": [-67.5, -32.0], "expected": -32.0}, {"input": [-67.5, -31.5], "expected": -31.5}, {"input": [-67.5, -31.0], "expected": -31.0}, {"input": [-67.5, -30.5], "expected": -30.5}, {"input": [-67.5, -30.0], "expected": -30.0}, {"input": [-67.5, -29.5], "expected": -29.5}, {"input": [-67.5, -29.0], "expected": -29.0}, {"input": [-67.5, -28.5], "expected": -28.5}, {"input": [-67.5, -28.0], "expected": -28.0}, {"input": [-67.5, -27.5], "expected": -27.5}, {"input": [-67.5, -27.0], "expected": -27.0}, {"input": [-67.5, -26.5], "expected": -26.5}, {"input": [-67.5, -26.0], "expected": -26.0}, {"input": [-67.5, -25.5], "expected": -25.5}, {"input": [-67.5, -25.0], "expected": -25.0}, {"input": [-67.5, -24.5], "expected": -24.5}, {"input": [-67.5, -24.0], "expected": -24.0}, {"input": [-67.5, -23.5], "expected": -23.5}, {"input": [-67.5, -23.0], "expected": -23.0}, {"input": [-67.5, -22.5], "expected": -22.5}, {"input": [-67.5, -22.0], "expected": -22.0}, {"input": [-67.5, -21.5], "expected": -21.5}, {"input": [-67.5, -21.0], "expected": -21.0}, {"input": [-67.5, -20.5], "expected": -20.5}, {"input": [-67.5, -20.0], "expected": -20.0}, {"input": [-67.5, -19.5], "expected": -19.5}, {"input": [-67.5, -19.0], "expected": -19.0}, {"input": [-67.5, -18.5], "expected": -18.5}, {"input": [-67.5, -18.0], "expected": -18.0}, {"input": [-67.5, -17.5], "expected": -17.5}, {"input": [-67.5, -17.0], "expected": -17.0}, {"input": [-67.5, -16.5], "expected": -16.5}, {"input": [-67.5, -16.0], "expected": -16.0}, {"input": [-67.5, -15.5], "expected": -15.5}, {"input": [-67.5, -15.0], "expected": -15.0}, {"input": [-67.5, -14.5], "expected": -14.5}, {"input": [-67.5, -14.0], "expected": -14.0}, {"input": [-67.5, -13.5], "expected": -13.5}, {"input": [-67.5, -13.0], "expected": -13.0}, {"input": [-67.5, -12.5], "expected": -12.5}, {"input": [-67.5, -12.0], "expected": -12.0}, {"input": [-67.5, -11.5], "expected": -11.5}, {"input": [-67.5, -11.0], "expected": -11.0}, {"input": [-67.5, -10.5], "expected": -10.5}, {"input": [-67.5, -10.0], "expected": -10.0}, {"input": [-67.5, -9.5], "expected": -9.5}, {"input": [-67.5, -9.0], "expected": -9.0}, {"input": [-67.5, -8.5], "expected": -8.5}, {"input": [-67.5, -8.0], "expected": -8.0}, {"input": [-67.5, -7.5], "expected": -7.5}, {"input": [-67.5, -7.0], "expected": -7.0}, {"input": [-67.5, -6.5], "expected": -6.5}, {"input": [-67.5, -6.0], "expected": -6.0}, {"input": [-67.5, -5.5], "expected": -5.5}, {"input": [-67.5, -5.0], "expected": -5.0}, {"input": [-67.5, -4.5], "expected": -4.5}, {"input": [-67.5, -4.0], "expected": -4.0}, {"input": [-67.5, -3.5], "expected": -3.5}, {"input": [-67.5, -3.0], "expected": -3.0}, {"input": [-67.5, -2.5], "expected": -2.5}, {"input": [-67.5, -2.0], "expected": -2.0}, {"input": [-67.5, -1.5], "expected": -1.5}, {"input": [-67.5, -1.0], "expected": -1.0}, {"input": [-67.5, -0.5], "expected": -0.5}, {"input": [-67.5, 0.0], "expected": 4.843089239878731e-30}, {"input": [-67.5, 0.5], "expected": 0.5}, {"input": [-67.5, 1.0], "expected": 1.0}, {"input": [-67.5, 1.5], "expected": 1.5}, {"input": [-67.5, 2.0], "expected": 2.0}, {"input": [-67.5, 2.5], "expected": 2.5}, {"input": [-67.5, 3.0], "expected": 3.0}, {"input": [-67.5, 3.5], "expected": 3.5}, {"input": [-67.5, 4.0], "expected": 4.0}, {"input": [-67.5, 4.5], "expected": 4.5}, {"input": [-67.5, 5.0], "expected": 5.0}, {"input": [-67.5, 5.5], "expected": 5.5}, {"input": [-67.5, 6.0], "expected": 6.0}, {"input": [-67.5, 6.5], "expected": 6.5}, {"input": [-67.5, 7.0], "expected": 7.0}, {"input": [-67.5, 7.5], "expected": 7.5}, {"input": [-67.5, 8.0], "expected": 8.0}, {"input": [-67.5, 8.5], "expected": 8.5}, {"input": [-67.5, 9.0], "expected": 9.0}, {"input": [-67.5, 9.5], "expected": 9.5}, {"input": [-67.5, 10.0], "expected": 10.0}, {"input": [-67.5, 10.5], "expected": 10.5}, {"input": [-67.5, 11.0], "expected": 11.0}, {"input": [-67.5, 11.5], "expected": 11.5}, {"input": [-67.5, 12.0], "expected": 12.0}, {"input": [-67.5, 12.5], "expected": 12.5}, {"input": [-67.5, 13.0], "expected": 13.0}, {"input": [-67.5, 13.5], "expected": 13.5}, {"input": [-67.5, 14.0], "expected": 14.0}, {"input": [-67.5, 14.5], "expected": 14.5}, {"input": [-67.5, 15.0], "expected": 15.0}, {"input": [-67.5, 15.5], "expected": 15.5}, {"input": [-67.5, 16.0], "expected": 16.0}, {"input": [-67.5, 16.5], "expected": 16.5}, {"input": [-67.5, 17.0], "expected": 17.0}, {"input": [-67.5, 17.5], "expected": 17.5}, {"input": [-67.5, 18.0], "expected": 18.0}, {"input": [-67.5, 18.5], "expected": 18.5}, {"input": [-67.5, 19.0], "expected": 19.0}, {"input": [-67.5, 19.5], "expected": 19.5}, {"input": [-67.5, 20.0], "expected": 20.0}, {"input": [-67.5, 20.5], "expected": 20.5}, {"input": [-67.5, 21.0], "expected": 21.0}, {"input": [-67.5, 21.5], "expected": 21.5}, {"input": [-67.5, 22.0], "expected": 22.0}, {"input": [-67.5, 22.5], "expected": 22.5}, {"input": [-67.5, 23.0], "expected": 23.0}, {"input": [-67.5, 23.5], "expected": 23.5}, {"input": [-67.5, 24.0], "expected": 24.0}, {"input": [-67.5, 24.5], "expected": 24.5}, {"input": [-67.5, 25.0], "expected": 25.0}, {"input": [-67.5, 25.5], "expected": 25.5}, {"input": [-67.5, 26.0], "expected": 26.0}, {"input": [-67.5, 26.5], "expected": 26.5}, {"input": [-67.5, 27.0], "expected": 27.0}, {"input": [-67.5, 27.5], "expected": 27.5}, {"input": [-67.5, 28.0], "expected": 28.0}, {"input": [-67.5, 28.5], "expected": 28.5}, {"input": [-67.5, 29.0], "expected": 29.0}, {"input": [-67.5, 29.5], "expected": 29.5}, {"input": [-67.5, 30.0], "expected": 30.0}, {"input": [-67.5, 30.5], "expected": 30.5}, {"input": [-67.5, 31.0], "expected": 31.0}, {"input": [-67.5, 31.5], "expected": 31.5}, {"input": [-67.5, 32.0], "expected": 32.0}, {"input": [-67.5, 32.5], "expected": 32.5}, {"input": [-67.5, 33.0], "expected": 33.0}, {"input": [-67.5, 33.5], "expected": 33.5}, {"input": [-67.5, 34.0], "expected": 34.0}, {"input": [-67.5, 34.5], "expected": 34.5}, {"input": [-67.5, 35.0], "expected": 35.0}, {"input": [-67.5, 35.5], "expected": 35.5}, {"input": [-67.5, 36.0], "expected": 36.0}, {"input": [-67.5, 36.5], "expected": 36.5}, {"input": [-67.5, 37.0], "expected": 37.0}, {"input": [-67.5, 37.5], "expected": 37.5}, {"input": [-67.5, 38.0], "expected": 38.0}, {"input": [-67.5, 38.5], "expected": 38.5}, {"input": [-67.5, 39.0], "expected": 39.0}, {"input": [-67.5, 39.5], "expected": 39.5}, {"input": [-67.5, 40.0], "expected": 40.0}, {"input": [-67.5, 40.5], "expected": 40.5}, {"input": [-67.5, 41.0], "expected": 41.0}, {"input": [-67.5, 41.5], "expected": 41.5}, {"input": [-67.5, 42.0], "expected": 42.0}, {"input": [-67.5, 42.5], "expected": 42.5}, {"input": [-67.5, 43.0], "expected": 43.0}, {"input": [-67.5, 43.5], "expected": 43.5}, {"input": [-67.5, 44.0], "expected": 44.0}, {"input": [-67.5, 44.5], "expected": 44.5}, {"input": [-67.5, 45.0], "expected": 45.0}, {"input": [-67.5, 45.5], "expected": 45.5}, {"input": [-67.5, 46.0], "expected": 46.0}, {"input": [-67.5, 46.5], "expected": 46.5}, {"input": [-67.5, 47.0], "expected": 47.0}, {"input": [-67.5, 47.5], "expected": 47.5}, {"input": [-67.5, 48.0], "expected": 48.0}, {"input": [-67.5, 48.5], "expected": 48.5}, {"input": [-67.5, 49.0], "expected": 49.0}, {"input": [-67.5, 49.5], "expected": 49.5}, {"input": [-67.5, 50.0], "expected": 50.0}, {"input": [-67.5, 50.5], "expected": 50.5}, {"input": [-67.5, 51.0], "expected": 51.0}, {"input": [-67.5, 51.5], "expected": 51.5}, {"input": [-67.5, 52.0], "expected": 52.0}, {"input": [-67.5, 52.5], "expected": 52.5}, {"input": [-67.5, 53.0], "expected": 53.0}, {"input": [-67.5, 53.5], "expected": 53.5}, {"input": [-67.5, 54.0], "expected": 54.0}, {"input": [-67.5, 54.5], "expected": 54.5}, {"input": [-67.5, 55.0], "expected": 55.0}, {"input": [-67.5, 55.5], "expected": 55.5}, {"input": [-67.5, 56.0], "expected": 56.0}, {"input": [-67.5, 56.5], "expected": 56.5}, {"input": [-67.5, 57.0], "expected": 57.0}, {"input": [-67.5, 57.5], "expected": 57.5}, {"input": [-67.5, 58.0], "expected": 58.0}, {"input": [-67.5, 58.5], "expected": 58.5}, {"input": [-67.5, 59.0], "expected": 59.0}, {"input": [-67.5, 59.5], "expected": 59.5}, {"input": [-67.5, 60.0], "expected": 60.0}, {"input": [-67.5, 60.5], "expected": 60.5}, {"input": [-67.5, 61.0], "expected": 61.0}, {"input": [-67.5, 61.5], "expected": 61.5}, {"input": [-67.5, 62.0], "expected": 62.0}, {"input": [-67.5, 62.5], "expected": 62.5}, {"input": [-67.5, 63.0], "expected": 63.0}, {"input": [-67.5, 63.5], "expected": 63.5}, {"input": [-67.5, 64.0], "expected": 64.0}, {"input": [-67.5, 64.5], "expected": 64.5}, {"input": [-67.5, 65.0], "expected": 65.0}, {"input": [-67.5, 65.5], "expected": 65.5}, {"input": [-67.5, 66.0], "expected": 66.0}, {"input": [-67.5, 66.5], "expected": 66.5}, {"input": [-67.5, 67.0], "expected": 67.0}, {"input": [-67.5, 67.5], "expected": 67.5}, {"input": [-67.5, 68.0], "expected": 68.0}, {"input": [-67.5, 68.5], "expected": 68.5}, {"input": [-67.5, 69.0], "expected": 69.0}, {"input": [-67.5, 69.5], "expected": 69.5}, {"input": [-67.5, 70.0], "expected": 70.0}, {"input": [-67.5, 70.5], "expected": 70.5}, {"input": [-67.5, 71.0], "expected": 71.0}, {"input": [-67.5, 71.5], "expected": 71.5}, {"input": [-67.5, 72.0], "expected": 72.0}, {"input": [-67.5, 72.5], "expected": 72.5}, {"input": [-67.5, 73.0], "expected": 73.0}, {"input": [-67.5, 73.5], "expected": 73.5}, {"input": [-67.5, 74.0], "expected": 74.0}, {"input": [-67.5, 74.5], "expected": 74.5}, {"input": [-67.5, 75.0], "expected": 75.0}, {"input": [-67.5, 75.5], "expected": 75.5}, {"input": [-67.5, 76.0], "expected": 76.0}, {"input": [-67.5, 76.5], "expected": 76.5}, {"input": [-67.5, 77.0], "expected": 77.0}, {"input": [-67.5, 77.5], "expected": 77.5}, {"input": [-67.5, 78.0], "expected": 78.0}, {"input": [-67.5, 78.5], "expected": 78.5}, {"input": [-67.5, 79.0], "expected": 79.0}, {"input": [-67.5, 79.5], "expected": 79.5}, {"input": [-67.5, 80.0], "expected": 80.0}, {"input": [-67.5, 80.5], "expected": 80.5}, {"input": [-67.5, 81.0], "expected": 81.0}, {"input": [-67.5, 81.5], "expected": 81.5}, {"input": [-67.5, 82.0], "expected": 82.0}, {"input": [-67.5, 82.5], "expected": 82.5}, {"input": [-67.5, 83.0], "expected": 83.0}, {"input": [-67.5, 83.5], "expected": 83.5}, {"input": [-67.5, 84.0], "expected": 84.0}, {"input": [-67.5, 84.5], "expected": 84.5}, {"input": [-67.5, 85.0], "expected": 85.0}, {"input": [-67.5, 85.5], "expected": 85.5}, {"input": [-67.5, 86.0], "expected": 86.0}, {"input": [-67.5, 86.5], "expected": 86.5}, {"input": [-67.5, 87.0], "expected": 87.0}, {"input": [-67.5, 87.5], "expected": 87.5}, {"input": [-67.5, 88.0], "expected": 88.0}, {"input": [-67.5, 88.5], "expected": 88.5}, {"input": [-67.5, 89.0], "expected": 89.0}, {"input": [-67.5, 89.5], "expected": 89.5}, {"input": [-67.5, 90.0], "expected": 90.0}, {"input": [-67.5, 90.5], "expected": 90.5}, {"input": [-67.5, 91.0], "expected": 91.0}, {"input": [-67.5, 91.5], "expected": 91.5}, {"input": [-67.5, 92.0], "expected": 92.0}, {"input": [-67.5, 92.5], "expected": 92.5}, {"input": [-67.5, 93.0], "expected": 93.0}, {"input": [-67.5, 93.5], "expected": 93.5}, {"input": [-67.5, 94.0], "expected": 94.0}, {"input": [-67.5, 94.5], "expected": 94.5}, {"input": [-67.5, 95.0], "expected": 95.0}, {"input": [-67.5, 95.5], "expected": 95.5}, {"input": [-67.5, 96.0], "expected": 96.0}, {"input": [-67.5, 96.5], "expected": 96.5}, {"input": [-67.5, 97.0], "expected": 97.0}, {"input": [-67.5, 97.5], "expected": 97.5}, {"input": [-67.5, 98.0], "expected": 98.0}, {"input": [-67.5, 98.5], "expected": 98.5}, {"input": [-67.5, 99.0], "expected": 99.0}, {"input": [-67.5, 99.5], "expected": 99.5}, {"input": [-67.0, -100.0], "expected": -67.0}, {"input": [-67.0, -99.5], "expected": -66.99999999999999}, {"input": [-67.0, -99.0], "expected": -66.99999999999999}, {"input": [-67.0, -98.5], "expected": -66.99999999999999}, {"input": [-67.0, -98.0], "expected": -66.99999999999997}, {"input": [-67.0, -97.5], "expected": -66.99999999999994}, {"input": [-67.0, -97.0], "expected": -66.9999999999999}, {"input": [-67.0, -96.5], "expected": -66.99999999999984}, {"input": [-67.0, -96.0], "expected": -66.99999999999974}, {"input": [-67.0, -95.5], "expected": -66.99999999999957}, {"input": [-67.0, -95.0], "expected": -66.9999999999993}, {"input": [-67.0, -94.5], "expected": -66.99999999999886}, {"input": [-67.0, -94.0], "expected": -66.99999999999812}, {"input": [-67.0, -93.5], "expected": -66.9999999999969}, {"input": [-67.0, -93.0], "expected": -66.99999999999488}, {"input": [-67.0, -92.5], "expected": -66.99999999999157}, {"input": [-67.0, -92.0], "expected": -66.99999999998612}, {"input": [-67.0, -91.5], "expected": -66.9999999999771}, {"input": [-67.0, -91.0], "expected": -66.99999999996224}, {"input": [-67.0, -90.5], "expected": -66.99999999993776}, {"input": [-67.0, -90.0], "expected": -66.99999999989738}, {"input": [-67.0, -89.5], "expected": -66.9999999998308}, {"input": [-67.0, -89.0], "expected": -66.99999999972106}, {"input": [-67.0, -88.5], "expected": -66.9999999995401}, {"input": [-67.0, -88.0], "expected": -66.99999999924174}, {"input": [-67.0, -87.5], "expected": -66.99999999874984}, {"input": [-67.0, -87.0], "expected": -66.99999999793884}, {"input": [-67.0, -86.5], "expected": -66.99999999660173}, {"input": [-67.0, -86.0], "expected": -66.9999999943972}, {"input": [-67.0, -85.5], "expected": -66.99999999076255}, {"input": [-67.0, -85.0], "expected": -66.99999998477001}, {"input": [-67.0, -84.5], "expected": -66.99999997489}, {"input": [-67.0, -84.0], "expected": -66.99999995860063}, {"input": [-67.0, -83.5], "expected": -66.99999993174397}, {"input": [-67.0, -83.0], "expected": -66.99999988746484}, {"input": [-67.0, -82.5], "expected": -66.99999981446088}, {"input": [-67.0, -82.0], "expected": -66.99999969409772}, {"input": [-67.0, -81.5], "expected": -66.99999949565246}, {"input": [-67.0, -81.0], "expected": -66.99999916847163}, {"input": [-67.0, -80.5], "expected": -66.99999862904185}, {"input": [-67.0, -80.0], "expected": -66.99999773967315}, {"input": [-67.0, -79.5], "expected": -66.99999627335377}, {"input": [-67.0, -79.0], "expected": -66.99999385580652}, {"input": [-67.0, -78.5], "expected": -66.99998986995772}, {"input": [-67.0, -78.0], "expected": -66.99998329843868}, {"input": [-67.0, -77.5], "expected": -66.99997246392977}, {"input": [-67.0, -77.0], "expected": -66.99995460110078}, {"input": [-67.0, -76.5], "expected": -66.99992515097136}, {"input": [-67.0, -76.0], "expected": -66.99987659781027}, {"input": [-67.0, -75.5], "expected": -66.99979655232787}, {"input": [-67.0, -75.0], "expected": -66.9996645936271}, {"input": [-67.0, -74.5], "expected": -66.99944706852465}, {"input": [-67.0, -74.0], "expected": -66.99908853354623}, {"input": [-67.0, -73.5], "expected": -66.99849768984025}, {"input": [-67.0, -73.0], "expected": -66.99752431486228}, {"input": [-67.0, -72.5], "expected": -66.99592155672943}, {"input": [-67.0, -72.0], "expected": -66.99328465151088}, {"input": [-67.0, -71.5], "expected": -66.9889522551514}, {"input": [-67.0, -71.0], "expected": -66.9818500720822}, {"input": [-67.0, -70.5], "expected": -66.97024958172737}, {"input": [-67.0, -70.0], "expected": -66.95141264842626}, {"input": [-67.0, -69.5], "expected": -66.92111026570745}, {"input": [-67.0, -69.0], "expected": -66.87307198895702}, {"input": [-67.0, -68.5], "expected": -66.79858672201725}, {"input": [-67.0, -68.0], "expected": -66.68673831248178}, {"input": [-67.0, -67.5], "expected": -66.5259230158199}, {"input": [-67.0, -67.0], "expected": -66.30685281944005}, {"input": [-67.0, -66.5], "expected": -66.0259230158199}, {"input": [-67.0, -66.0], "expected": -65.68673831248178}, {"input": [-67.0, -65.5], "expected": -65.29858672201725}, {"input": [-67.0, -65.0], "expected": -64.87307198895702}, {"input": [-67.0, -64.5], "expected": -64.42111026570745}, {"input": [-67.0, -64.0], "expected": -63.951412648426256}, {"input": [-67.0, -63.5], "expected": -63.47024958172738}, {"input": [-67.0, -63.0], "expected": -62.98185007208219}, {"input": [-67.0, -62.5], "expected": -62.4889522551514}, {"input": [-67.0, -62.0], "expected": -61.99328465151088}, {"input": [-67.0, -61.5], "expected": -61.49592155672943}, {"input": [-67.0, -61.0], "expected": -60.99752431486227}, {"input": [-67.0, -60.5], "expected": -60.49849768984024}, {"input": [-67.0, -60.0], "expected": -59.99908853354623}, {"input": [-67.0, -59.5], "expected": -59.49944706852464}, {"input": [-67.0, -59.0], "expected": -58.9996645936271}, {"input": [-67.0, -58.5], "expected": -58.49979655232787}, {"input": [-67.0, -58.0], "expected": -57.99987659781028}, {"input": [-67.0, -57.5], "expected": -57.49992515097137}, {"input": [-67.0, -57.0], "expected": -56.99995460110078}, {"input": [-67.0, -56.5], "expected": -56.49997246392977}, {"input": [-67.0, -56.0], "expected": -55.99998329843868}, {"input": [-67.0, -55.5], "expected": -55.49998986995771}, {"input": [-67.0, -55.0], "expected": -54.99999385580652}, {"input": [-67.0, -54.5], "expected": -54.49999627335377}, {"input": [-67.0, -54.0], "expected": -53.99999773967315}, {"input": [-67.0, -53.5], "expected": -53.499998629041855}, {"input": [-67.0, -53.0], "expected": -52.999999168471625}, {"input": [-67.0, -52.5], "expected": -52.49999949565247}, {"input": [-67.0, -52.0], "expected": -51.999999694097724}, {"input": [-67.0, -51.5], "expected": -51.49999981446088}, {"input": [-67.0, -51.0], "expected": -50.99999988746483}, {"input": [-67.0, -50.5], "expected": -50.49999993174397}, {"input": [-67.0, -50.0], "expected": -49.999999958600625}, {"input": [-67.0, -49.5], "expected": -49.49999997489001}, {"input": [-67.0, -49.0], "expected": -48.99999998477002}, {"input": [-67.0, -48.5], "expected": -48.499999990762554}, {"input": [-67.0, -48.0], "expected": -47.99999999439721}, {"input": [-67.0, -47.5], "expected": -47.49999999660173}, {"input": [-67.0, -47.0], "expected": -46.99999999793884}, {"input": [-67.0, -46.5], "expected": -46.49999999874985}, {"input": [-67.0, -46.0], "expected": -45.999999999241744}, {"input": [-67.0, -45.5], "expected": -45.499999999540094}, {"input": [-67.0, -45.0], "expected": -44.999999999721055}, {"input": [-67.0, -44.5], "expected": -44.49999999983081}, {"input": [-67.0, -44.0], "expected": -43.99999999989738}, {"input": [-67.0, -43.5], "expected": -43.49999999993776}, {"input": [-67.0, -43.0], "expected": -42.99999999996225}, {"input": [-67.0, -42.5], "expected": -42.4999999999771}, {"input": [-67.0, -42.0], "expected": -41.99999999998611}, {"input": [-67.0, -41.5], "expected": -41.49999999999158}, {"input": [-67.0, -41.0], "expected": -40.99999999999489}, {"input": [-67.0, -40.5], "expected": -40.4999999999969}, {"input": [-67.0, -40.0], "expected": -39.99999999999812}, {"input": [-67.0, -39.5], "expected": -39.49999999999886}, {"input": [-67.0, -39.0], "expected": -38.99999999999931}, {"input": [-67.0, -38.5], "expected": -38.49999999999958}, {"input": [-67.0, -38.0], "expected": -37.999999999999744}, {"input": [-67.0, -37.5], "expected": -37.499999999999844}, {"input": [-67.0, -37.0], "expected": -36.99999999999991}, {"input": [-67.0, -36.5], "expected": -36.49999999999994}, {"input": [-67.0, -36.0], "expected": -35.999999999999964}, {"input": [-67.0, -35.5], "expected": -35.49999999999998}, {"input": [-67.0, -35.0], "expected": -34.999999999999986}, {"input": [-67.0, -34.5], "expected": -34.49999999999999}, {"input": [-67.0, -34.0], "expected": -33.99999999999999}, {"input": [-67.0, -33.5], "expected": -33.5}, {"input": [-67.0, -33.0], "expected": -33.0}, {"input": [-67.0, -32.5], "expected": -32.5}, {"input": [-67.0, -32.0], "expected": -32.0}, {"input": [-67.0, -31.5], "expected": -31.5}, {"input": [-67.0, -31.0], "expected": -31.0}, {"input": [-67.0, -30.5], "expected": -30.5}, {"input": [-67.0, -30.0], "expected": -30.0}, {"input": [-67.0, -29.5], "expected": -29.5}, {"input": [-67.0, -29.0], "expected": -29.0}, {"input": [-67.0, -28.5], "expected": -28.5}, {"input": [-67.0, -28.0], "expected": -28.0}, {"input": [-67.0, -27.5], "expected": -27.5}, {"input": [-67.0, -27.0], "expected": -27.0}, {"input": [-67.0, -26.5], "expected": -26.5}, {"input": [-67.0, -26.0], "expected": -26.0}, {"input": [-67.0, -25.5], "expected": -25.5}, {"input": [-67.0, -25.0], "expected": -25.0}, {"input": [-67.0, -24.5], "expected": -24.5}, {"input": [-67.0, -24.0], "expected": -24.0}, {"input": [-67.0, -23.5], "expected": -23.5}, {"input": [-67.0, -23.0], "expected": -23.0}, {"input": [-67.0, -22.5], "expected": -22.5}, {"input": [-67.0, -22.0], "expected": -22.0}, {"input": [-67.0, -21.5], "expected": -21.5}, {"input": [-67.0, -21.0], "expected": -21.0}, {"input": [-67.0, -20.5], "expected": -20.5}, {"input": [-67.0, -20.0], "expected": -20.0}, {"input": [-67.0, -19.5], "expected": -19.5}, {"input": [-67.0, -19.0], "expected": -19.0}, {"input": [-67.0, -18.5], "expected": -18.5}, {"input": [-67.0, -18.0], "expected": -18.0}, {"input": [-67.0, -17.5], "expected": -17.5}, {"input": [-67.0, -17.0], "expected": -17.0}, {"input": [-67.0, -16.5], "expected": -16.5}, {"input": [-67.0, -16.0], "expected": -16.0}, {"input": [-67.0, -15.5], "expected": -15.5}, {"input": [-67.0, -15.0], "expected": -15.0}, {"input": [-67.0, -14.5], "expected": -14.5}, {"input": [-67.0, -14.0], "expected": -14.0}, {"input": [-67.0, -13.5], "expected": -13.5}, {"input": [-67.0, -13.0], "expected": -13.0}, {"input": [-67.0, -12.5], "expected": -12.5}, {"input": [-67.0, -12.0], "expected": -12.0}, {"input": [-67.0, -11.5], "expected": -11.5}, {"input": [-67.0, -11.0], "expected": -11.0}, {"input": [-67.0, -10.5], "expected": -10.5}, {"input": [-67.0, -10.0], "expected": -10.0}, {"input": [-67.0, -9.5], "expected": -9.5}, {"input": [-67.0, -9.0], "expected": -9.0}, {"input": [-67.0, -8.5], "expected": -8.5}, {"input": [-67.0, -8.0], "expected": -8.0}, {"input": [-67.0, -7.5], "expected": -7.5}, {"input": [-67.0, -7.0], "expected": -7.0}, {"input": [-67.0, -6.5], "expected": -6.5}, {"input": [-67.0, -6.0], "expected": -6.0}, {"input": [-67.0, -5.5], "expected": -5.5}, {"input": [-67.0, -5.0], "expected": -5.0}, {"input": [-67.0, -4.5], "expected": -4.5}, {"input": [-67.0, -4.0], "expected": -4.0}, {"input": [-67.0, -3.5], "expected": -3.5}, {"input": [-67.0, -3.0], "expected": -3.0}, {"input": [-67.0, -2.5], "expected": -2.5}, {"input": [-67.0, -2.0], "expected": -2.0}, {"input": [-67.0, -1.5], "expected": -1.5}, {"input": [-67.0, -1.0], "expected": -1.0}, {"input": [-67.0, -0.5], "expected": -0.5}, {"input": [-67.0, 0.0], "expected": 7.984904245686979e-30}, {"input": [-67.0, 0.5], "expected": 0.5}, {"input": [-67.0, 1.0], "expected": 1.0}, {"input": [-67.0, 1.5], "expected": 1.5}, {"input": [-67.0, 2.0], "expected": 2.0}, {"input": [-67.0, 2.5], "expected": 2.5}, {"input": [-67.0, 3.0], "expected": 3.0}, {"input": [-67.0, 3.5], "expected": 3.5}, {"input": [-67.0, 4.0], "expected": 4.0}, {"input": [-67.0, 4.5], "expected": 4.5}, {"input": [-67.0, 5.0], "expected": 5.0}, {"input": [-67.0, 5.5], "expected": 5.5}, {"input": [-67.0, 6.0], "expected": 6.0}, {"input": [-67.0, 6.5], "expected": 6.5}, {"input": [-67.0, 7.0], "expected": 7.0}, {"input": [-67.0, 7.5], "expected": 7.5}, {"input": [-67.0, 8.0], "expected": 8.0}, {"input": [-67.0, 8.5], "expected": 8.5}, {"input": [-67.0, 9.0], "expected": 9.0}, {"input": [-67.0, 9.5], "expected": 9.5}, {"input": [-67.0, 10.0], "expected": 10.0}, {"input": [-67.0, 10.5], "expected": 10.5}, {"input": [-67.0, 11.0], "expected": 11.0}, {"input": [-67.0, 11.5], "expected": 11.5}, {"input": [-67.0, 12.0], "expected": 12.0}, {"input": [-67.0, 12.5], "expected": 12.5}, {"input": [-67.0, 13.0], "expected": 13.0}, {"input": [-67.0, 13.5], "expected": 13.5}, {"input": [-67.0, 14.0], "expected": 14.0}, {"input": [-67.0, 14.5], "expected": 14.5}, {"input": [-67.0, 15.0], "expected": 15.0}, {"input": [-67.0, 15.5], "expected": 15.5}, {"input": [-67.0, 16.0], "expected": 16.0}, {"input": [-67.0, 16.5], "expected": 16.5}, {"input": [-67.0, 17.0], "expected": 17.0}, {"input": [-67.0, 17.5], "expected": 17.5}, {"input": [-67.0, 18.0], "expected": 18.0}, {"input": [-67.0, 18.5], "expected": 18.5}, {"input": [-67.0, 19.0], "expected": 19.0}, {"input": [-67.0, 19.5], "expected": 19.5}, {"input": [-67.0, 20.0], "expected": 20.0}, {"input": [-67.0, 20.5], "expected": 20.5}, {"input": [-67.0, 21.0], "expected": 21.0}, {"input": [-67.0, 21.5], "expected": 21.5}, {"input": [-67.0, 22.0], "expected": 22.0}, {"input": [-67.0, 22.5], "expected": 22.5}, {"input": [-67.0, 23.0], "expected": 23.0}, {"input": [-67.0, 23.5], "expected": 23.5}, {"input": [-67.0, 24.0], "expected": 24.0}, {"input": [-67.0, 24.5], "expected": 24.5}, {"input": [-67.0, 25.0], "expected": 25.0}, {"input": [-67.0, 25.5], "expected": 25.5}, {"input": [-67.0, 26.0], "expected": 26.0}, {"input": [-67.0, 26.5], "expected": 26.5}, {"input": [-67.0, 27.0], "expected": 27.0}, {"input": [-67.0, 27.5], "expected": 27.5}, {"input": [-67.0, 28.0], "expected": 28.0}, {"input": [-67.0, 28.5], "expected": 28.5}, {"input": [-67.0, 29.0], "expected": 29.0}, {"input": [-67.0, 29.5], "expected": 29.5}, {"input": [-67.0, 30.0], "expected": 30.0}, {"input": [-67.0, 30.5], "expected": 30.5}, {"input": [-67.0, 31.0], "expected": 31.0}, {"input": [-67.0, 31.5], "expected": 31.5}, {"input": [-67.0, 32.0], "expected": 32.0}, {"input": [-67.0, 32.5], "expected": 32.5}, {"input": [-67.0, 33.0], "expected": 33.0}, {"input": [-67.0, 33.5], "expected": 33.5}, {"input": [-67.0, 34.0], "expected": 34.0}, {"input": [-67.0, 34.5], "expected": 34.5}, {"input": [-67.0, 35.0], "expected": 35.0}, {"input": [-67.0, 35.5], "expected": 35.5}, {"input": [-67.0, 36.0], "expected": 36.0}, {"input": [-67.0, 36.5], "expected": 36.5}, {"input": [-67.0, 37.0], "expected": 37.0}, {"input": [-67.0, 37.5], "expected": 37.5}, {"input": [-67.0, 38.0], "expected": 38.0}, {"input": [-67.0, 38.5], "expected": 38.5}, {"input": [-67.0, 39.0], "expected": 39.0}, {"input": [-67.0, 39.5], "expected": 39.5}, {"input": [-67.0, 40.0], "expected": 40.0}, {"input": [-67.0, 40.5], "expected": 40.5}, {"input": [-67.0, 41.0], "expected": 41.0}, {"input": [-67.0, 41.5], "expected": 41.5}, {"input": [-67.0, 42.0], "expected": 42.0}, {"input": [-67.0, 42.5], "expected": 42.5}, {"input": [-67.0, 43.0], "expected": 43.0}, {"input": [-67.0, 43.5], "expected": 43.5}, {"input": [-67.0, 44.0], "expected": 44.0}, {"input": [-67.0, 44.5], "expected": 44.5}, {"input": [-67.0, 45.0], "expected": 45.0}, {"input": [-67.0, 45.5], "expected": 45.5}, {"input": [-67.0, 46.0], "expected": 46.0}, {"input": [-67.0, 46.5], "expected": 46.5}, {"input": [-67.0, 47.0], "expected": 47.0}, {"input": [-67.0, 47.5], "expected": 47.5}, {"input": [-67.0, 48.0], "expected": 48.0}, {"input": [-67.0, 48.5], "expected": 48.5}, {"input": [-67.0, 49.0], "expected": 49.0}, {"input": [-67.0, 49.5], "expected": 49.5}, {"input": [-67.0, 50.0], "expected": 50.0}, {"input": [-67.0, 50.5], "expected": 50.5}, {"input": [-67.0, 51.0], "expected": 51.0}, {"input": [-67.0, 51.5], "expected": 51.5}, {"input": [-67.0, 52.0], "expected": 52.0}, {"input": [-67.0, 52.5], "expected": 52.5}, {"input": [-67.0, 53.0], "expected": 53.0}, {"input": [-67.0, 53.5], "expected": 53.5}, {"input": [-67.0, 54.0], "expected": 54.0}, {"input": [-67.0, 54.5], "expected": 54.5}, {"input": [-67.0, 55.0], "expected": 55.0}, {"input": [-67.0, 55.5], "expected": 55.5}, {"input": [-67.0, 56.0], "expected": 56.0}, {"input": [-67.0, 56.5], "expected": 56.5}, {"input": [-67.0, 57.0], "expected": 57.0}, {"input": [-67.0, 57.5], "expected": 57.5}, {"input": [-67.0, 58.0], "expected": 58.0}, {"input": [-67.0, 58.5], "expected": 58.5}, {"input": [-67.0, 59.0], "expected": 59.0}, {"input": [-67.0, 59.5], "expected": 59.5}, {"input": [-67.0, 60.0], "expected": 60.0}, {"input": [-67.0, 60.5], "expected": 60.5}, {"input": [-67.0, 61.0], "expected": 61.0}, {"input": [-67.0, 61.5], "expected": 61.5}, {"input": [-67.0, 62.0], "expected": 62.0}, {"input": [-67.0, 62.5], "expected": 62.5}, {"input": [-67.0, 63.0], "expected": 63.0}, {"input": [-67.0, 63.5], "expected": 63.5}, {"input": [-67.0, 64.0], "expected": 64.0}, {"input": [-67.0, 64.5], "expected": 64.5}, {"input": [-67.0, 65.0], "expected": 65.0}, {"input": [-67.0, 65.5], "expected": 65.5}, {"input": [-67.0, 66.0], "expected": 66.0}, {"input": [-67.0, 66.5], "expected": 66.5}, {"input": [-67.0, 67.0], "expected": 67.0}, {"input": [-67.0, 67.5], "expected": 67.5}, {"input": [-67.0, 68.0], "expected": 68.0}, {"input": [-67.0, 68.5], "expected": 68.5}, {"input": [-67.0, 69.0], "expected": 69.0}, {"input": [-67.0, 69.5], "expected": 69.5}, {"input": [-67.0, 70.0], "expected": 70.0}, {"input": [-67.0, 70.5], "expected": 70.5}, {"input": [-67.0, 71.0], "expected": 71.0}, {"input": [-67.0, 71.5], "expected": 71.5}, {"input": [-67.0, 72.0], "expected": 72.0}, {"input": [-67.0, 72.5], "expected": 72.5}, {"input": [-67.0, 73.0], "expected": 73.0}, {"input": [-67.0, 73.5], "expected": 73.5}, {"input": [-67.0, 74.0], "expected": 74.0}, {"input": [-67.0, 74.5], "expected": 74.5}, {"input": [-67.0, 75.0], "expected": 75.0}, {"input": [-67.0, 75.5], "expected": 75.5}, {"input": [-67.0, 76.0], "expected": 76.0}, {"input": [-67.0, 76.5], "expected": 76.5}, {"input": [-67.0, 77.0], "expected": 77.0}, {"input": [-67.0, 77.5], "expected": 77.5}, {"input": [-67.0, 78.0], "expected": 78.0}, {"input": [-67.0, 78.5], "expected": 78.5}, {"input": [-67.0, 79.0], "expected": 79.0}, {"input": [-67.0, 79.5], "expected": 79.5}, {"input": [-67.0, 80.0], "expected": 80.0}, {"input": [-67.0, 80.5], "expected": 80.5}, {"input": [-67.0, 81.0], "expected": 81.0}, {"input": [-67.0, 81.5], "expected": 81.5}, {"input": [-67.0, 82.0], "expected": 82.0}, {"input": [-67.0, 82.5], "expected": 82.5}, {"input": [-67.0, 83.0], "expected": 83.0}, {"input": [-67.0, 83.5], "expected": 83.5}, {"input": [-67.0, 84.0], "expected": 84.0}, {"input": [-67.0, 84.5], "expected": 84.5}, {"input": [-67.0, 85.0], "expected": 85.0}, {"input": [-67.0, 85.5], "expected": 85.5}, {"input": [-67.0, 86.0], "expected": 86.0}, {"input": [-67.0, 86.5], "expected": 86.5}, {"input": [-67.0, 87.0], "expected": 87.0}, {"input": [-67.0, 87.5], "expected": 87.5}, {"input": [-67.0, 88.0], "expected": 88.0}, {"input": [-67.0, 88.5], "expected": 88.5}, {"input": [-67.0, 89.0], "expected": 89.0}, {"input": [-67.0, 89.5], "expected": 89.5}, {"input": [-67.0, 90.0], "expected": 90.0}, {"input": [-67.0, 90.5], "expected": 90.5}, {"input": [-67.0, 91.0], "expected": 91.0}, {"input": [-67.0, 91.5], "expected": 91.5}, {"input": [-67.0, 92.0], "expected": 92.0}, {"input": [-67.0, 92.5], "expected": 92.5}, {"input": [-67.0, 93.0], "expected": 93.0}, {"input": [-67.0, 93.5], "expected": 93.5}, {"input": [-67.0, 94.0], "expected": 94.0}, {"input": [-67.0, 94.5], "expected": 94.5}, {"input": [-67.0, 95.0], "expected": 95.0}, {"input": [-67.0, 95.5], "expected": 95.5}, {"input": [-67.0, 96.0], "expected": 96.0}, {"input": [-67.0, 96.5], "expected": 96.5}, {"input": [-67.0, 97.0], "expected": 97.0}, {"input": [-67.0, 97.5], "expected": 97.5}, {"input": [-67.0, 98.0], "expected": 98.0}, {"input": [-67.0, 98.5], "expected": 98.5}, {"input": [-67.0, 99.0], "expected": 99.0}, {"input": [-67.0, 99.5], "expected": 99.5}, {"input": [-66.5, -100.0], "expected": -66.5}, {"input": [-66.5, -99.5], "expected": -66.5}, {"input": [-66.5, -99.0], "expected": -66.49999999999999}, {"input": [-66.5, -98.5], "expected": -66.49999999999999}, {"input": [-66.5, -98.0], "expected": -66.49999999999999}, {"input": [-66.5, -97.5], "expected": -66.49999999999997}, {"input": [-66.5, -97.0], "expected": -66.49999999999994}, {"input": [-66.5, -96.5], "expected": -66.4999999999999}, {"input": [-66.5, -96.0], "expected": -66.49999999999984}, {"input": [-66.5, -95.5], "expected": -66.49999999999974}, {"input": [-66.5, -95.0], "expected": -66.49999999999957}, {"input": [-66.5, -94.5], "expected": -66.4999999999993}, {"input": [-66.5, -94.0], "expected": -66.49999999999886}, {"input": [-66.5, -93.5], "expected": -66.49999999999812}, {"input": [-66.5, -93.0], "expected": -66.4999999999969}, {"input": [-66.5, -92.5], "expected": -66.49999999999488}, {"input": [-66.5, -92.0], "expected": -66.49999999999157}, {"input": [-66.5, -91.5], "expected": -66.49999999998612}, {"input": [-66.5, -91.0], "expected": -66.4999999999771}, {"input": [-66.5, -90.5], "expected": -66.49999999996224}, {"input": [-66.5, -90.0], "expected": -66.49999999993776}, {"input": [-66.5, -89.5], "expected": -66.49999999989738}, {"input": [-66.5, -89.0], "expected": -66.4999999998308}, {"input": [-66.5, -88.5], "expected": -66.49999999972106}, {"input": [-66.5, -88.0], "expected": -66.4999999995401}, {"input": [-66.5, -87.5], "expected": -66.49999999924174}, {"input": [-66.5, -87.0], "expected": -66.49999999874984}, {"input": [-66.5, -86.5], "expected": -66.49999999793884}, {"input": [-66.5, -86.0], "expected": -66.49999999660173}, {"input": [-66.5, -85.5], "expected": -66.4999999943972}, {"input": [-66.5, -85.0], "expected": -66.49999999076255}, {"input": [-66.5, -84.5], "expected": -66.49999998477001}, {"input": [-66.5, -84.0], "expected": -66.49999997489}, {"input": [-66.5, -83.5], "expected": -66.49999995860063}, {"input": [-66.5, -83.0], "expected": -66.49999993174397}, {"input": [-66.5, -82.5], "expected": -66.49999988746484}, {"input": [-66.5, -82.0], "expected": -66.49999981446088}, {"input": [-66.5, -81.5], "expected": -66.49999969409772}, {"input": [-66.5, -81.0], "expected": -66.49999949565246}, {"input": [-66.5, -80.5], "expected": -66.49999916847163}, {"input": [-66.5, -80.0], "expected": -66.49999862904185}, {"input": [-66.5, -79.5], "expected": -66.49999773967315}, {"input": [-66.5, -79.0], "expected": -66.49999627335377}, {"input": [-66.5, -78.5], "expected": -66.49999385580652}, {"input": [-66.5, -78.0], "expected": -66.49998986995772}, {"input": [-66.5, -77.5], "expected": -66.49998329843868}, {"input": [-66.5, -77.0], "expected": -66.49997246392977}, {"input": [-66.5, -76.5], "expected": -66.49995460110078}, {"input": [-66.5, -76.0], "expected": -66.49992515097136}, {"input": [-66.5, -75.5], "expected": -66.49987659781027}, {"input": [-66.5, -75.0], "expected": -66.49979655232787}, {"input": [-66.5, -74.5], "expected": -66.4996645936271}, {"input": [-66.5, -74.0], "expected": -66.49944706852465}, {"input": [-66.5, -73.5], "expected": -66.49908853354623}, {"input": [-66.5, -73.0], "expected": -66.49849768984025}, {"input": [-66.5, -72.5], "expected": -66.49752431486228}, {"input": [-66.5, -72.0], "expected": -66.49592155672943}, {"input": [-66.5, -71.5], "expected": -66.49328465151088}, {"input": [-66.5, -71.0], "expected": -66.4889522551514}, {"input": [-66.5, -70.5], "expected": -66.4818500720822}, {"input": [-66.5, -70.0], "expected": -66.47024958172737}, {"input": [-66.5, -69.5], "expected": -66.45141264842626}, {"input": [-66.5, -69.0], "expected": -66.42111026570745}, {"input": [-66.5, -68.5], "expected": -66.37307198895702}, {"input": [-66.5, -68.0], "expected": -66.29858672201725}, {"input": [-66.5, -67.5], "expected": -66.18673831248178}, {"input": [-66.5, -67.0], "expected": -66.0259230158199}, {"input": [-66.5, -66.5], "expected": -65.80685281944005}, {"input": [-66.5, -66.0], "expected": -65.5259230158199}, {"input": [-66.5, -65.5], "expected": -65.18673831248178}, {"input": [-66.5, -65.0], "expected": -64.79858672201725}, {"input": [-66.5, -64.5], "expected": -64.37307198895702}, {"input": [-66.5, -64.0], "expected": -63.92111026570745}, {"input": [-66.5, -63.5], "expected": -63.451412648426256}, {"input": [-66.5, -63.0], "expected": -62.97024958172738}, {"input": [-66.5, -62.5], "expected": -62.48185007208219}, {"input": [-66.5, -62.0], "expected": -61.9889522551514}, {"input": [-66.5, -61.5], "expected": -61.49328465151088}, {"input": [-66.5, -61.0], "expected": -60.99592155672943}, {"input": [-66.5, -60.5], "expected": -60.49752431486227}, {"input": [-66.5, -60.0], "expected": -59.99849768984024}, {"input": [-66.5, -59.5], "expected": -59.49908853354623}, {"input": [-66.5, -59.0], "expected": -58.99944706852464}, {"input": [-66.5, -58.5], "expected": -58.4996645936271}, {"input": [-66.5, -58.0], "expected": -57.99979655232787}, {"input": [-66.5, -57.5], "expected": -57.49987659781028}, {"input": [-66.5, -57.0], "expected": -56.99992515097137}, {"input": [-66.5, -56.5], "expected": -56.49995460110078}, {"input": [-66.5, -56.0], "expected": -55.99997246392977}, {"input": [-66.5, -55.5], "expected": -55.49998329843868}, {"input": [-66.5, -55.0], "expected": -54.99998986995771}, {"input": [-66.5, -54.5], "expected": -54.49999385580652}, {"input": [-66.5, -54.0], "expected": -53.99999627335377}, {"input": [-66.5, -53.5], "expected": -53.49999773967315}, {"input": [-66.5, -53.0], "expected": -52.999998629041855}, {"input": [-66.5, -52.5], "expected": -52.499999168471625}, {"input": [-66.5, -52.0], "expected": -51.99999949565247}, {"input": [-66.5, -51.5], "expected": -51.499999694097724}, {"input": [-66.5, -51.0], "expected": -50.99999981446088}, {"input": [-66.5, -50.5], "expected": -50.49999988746483}, {"input": [-66.5, -50.0], "expected": -49.99999993174397}, {"input": [-66.5, -49.5], "expected": -49.499999958600625}, {"input": [-66.5, -49.0], "expected": -48.99999997489001}, {"input": [-66.5, -48.5], "expected": -48.49999998477002}, {"input": [-66.5, -48.0], "expected": -47.999999990762554}, {"input": [-66.5, -47.5], "expected": -47.49999999439721}, {"input": [-66.5, -47.0], "expected": -46.99999999660173}, {"input": [-66.5, -46.5], "expected": -46.49999999793884}, {"input": [-66.5, -46.0], "expected": -45.99999999874985}, {"input": [-66.5, -45.5], "expected": -45.499999999241744}, {"input": [-66.5, -45.0], "expected": -44.999999999540094}, {"input": [-66.5, -44.5], "expected": -44.499999999721055}, {"input": [-66.5, -44.0], "expected": -43.99999999983081}, {"input": [-66.5, -43.5], "expected": -43.49999999989738}, {"input": [-66.5, -43.0], "expected": -42.99999999993776}, {"input": [-66.5, -42.5], "expected": -42.49999999996225}, {"input": [-66.5, -42.0], "expected": -41.9999999999771}, {"input": [-66.5, -41.5], "expected": -41.49999999998611}, {"input": [-66.5, -41.0], "expected": -40.99999999999158}, {"input": [-66.5, -40.5], "expected": -40.49999999999489}, {"input": [-66.5, -40.0], "expected": -39.9999999999969}, {"input": [-66.5, -39.5], "expected": -39.49999999999812}, {"input": [-66.5, -39.0], "expected": -38.99999999999886}, {"input": [-66.5, -38.5], "expected": -38.49999999999931}, {"input": [-66.5, -38.0], "expected": -37.99999999999958}, {"input": [-66.5, -37.5], "expected": -37.499999999999744}, {"input": [-66.5, -37.0], "expected": -36.999999999999844}, {"input": [-66.5, -36.5], "expected": -36.49999999999991}, {"input": [-66.5, -36.0], "expected": -35.99999999999994}, {"input": [-66.5, -35.5], "expected": -35.499999999999964}, {"input": [-66.5, -35.0], "expected": -34.99999999999998}, {"input": [-66.5, -34.5], "expected": -34.499999999999986}, {"input": [-66.5, -34.0], "expected": -33.99999999999999}, {"input": [-66.5, -33.5], "expected": -33.49999999999999}, {"input": [-66.5, -33.0], "expected": -33.0}, {"input": [-66.5, -32.5], "expected": -32.5}, {"input": [-66.5, -32.0], "expected": -32.0}, {"input": [-66.5, -31.5], "expected": -31.5}, {"input": [-66.5, -31.0], "expected": -31.0}, {"input": [-66.5, -30.5], "expected": -30.5}, {"input": [-66.5, -30.0], "expected": -30.0}, {"input": [-66.5, -29.5], "expected": -29.5}, {"input": [-66.5, -29.0], "expected": -29.0}, {"input": [-66.5, -28.5], "expected": -28.5}, {"input": [-66.5, -28.0], "expected": -28.0}, {"input": [-66.5, -27.5], "expected": -27.5}, {"input": [-66.5, -27.0], "expected": -27.0}, {"input": [-66.5, -26.5], "expected": -26.5}, {"input": [-66.5, -26.0], "expected": -26.0}, {"input": [-66.5, -25.5], "expected": -25.5}, {"input": [-66.5, -25.0], "expected": -25.0}, {"input": [-66.5, -24.5], "expected": -24.5}, {"input": [-66.5, -24.0], "expected": -24.0}, {"input": [-66.5, -23.5], "expected": -23.5}, {"input": [-66.5, -23.0], "expected": -23.0}, {"input": [-66.5, -22.5], "expected": -22.5}, {"input": [-66.5, -22.0], "expected": -22.0}, {"input": [-66.5, -21.5], "expected": -21.5}, {"input": [-66.5, -21.0], "expected": -21.0}, {"input": [-66.5, -20.5], "expected": -20.5}, {"input": [-66.5, -20.0], "expected": -20.0}, {"input": [-66.5, -19.5], "expected": -19.5}, {"input": [-66.5, -19.0], "expected": -19.0}, {"input": [-66.5, -18.5], "expected": -18.5}, {"input": [-66.5, -18.0], "expected": -18.0}, {"input": [-66.5, -17.5], "expected": -17.5}, {"input": [-66.5, -17.0], "expected": -17.0}, {"input": [-66.5, -16.5], "expected": -16.5}, {"input": [-66.5, -16.0], "expected": -16.0}, {"input": [-66.5, -15.5], "expected": -15.5}, {"input": [-66.5, -15.0], "expected": -15.0}, {"input": [-66.5, -14.5], "expected": -14.5}, {"input": [-66.5, -14.0], "expected": -14.0}, {"input": [-66.5, -13.5], "expected": -13.5}, {"input": [-66.5, -13.0], "expected": -13.0}, {"input": [-66.5, -12.5], "expected": -12.5}, {"input": [-66.5, -12.0], "expected": -12.0}, {"input": [-66.5, -11.5], "expected": -11.5}, {"input": [-66.5, -11.0], "expected": -11.0}, {"input": [-66.5, -10.5], "expected": -10.5}, {"input": [-66.5, -10.0], "expected": -10.0}, {"input": [-66.5, -9.5], "expected": -9.5}, {"input": [-66.5, -9.0], "expected": -9.0}, {"input": [-66.5, -8.5], "expected": -8.5}, {"input": [-66.5, -8.0], "expected": -8.0}, {"input": [-66.5, -7.5], "expected": -7.5}, {"input": [-66.5, -7.0], "expected": -7.0}, {"input": [-66.5, -6.5], "expected": -6.5}, {"input": [-66.5, -6.0], "expected": -6.0}, {"input": [-66.5, -5.5], "expected": -5.5}, {"input": [-66.5, -5.0], "expected": -5.0}, {"input": [-66.5, -4.5], "expected": -4.5}, {"input": [-66.5, -4.0], "expected": -4.0}, {"input": [-66.5, -3.5], "expected": -3.5}, {"input": [-66.5, -3.0], "expected": -3.0}, {"input": [-66.5, -2.5], "expected": -2.5}, {"input": [-66.5, -2.0], "expected": -2.0}, {"input": [-66.5, -1.5], "expected": -1.5}, {"input": [-66.5, -1.0], "expected": -1.0}, {"input": [-66.5, -0.5], "expected": -0.5}, {"input": [-66.5, 0.0], "expected": 1.3164881474367883e-29}, {"input": [-66.5, 0.5], "expected": 0.5}, {"input": [-66.5, 1.0], "expected": 1.0}, {"input": [-66.5, 1.5], "expected": 1.5}, {"input": [-66.5, 2.0], "expected": 2.0}, {"input": [-66.5, 2.5], "expected": 2.5}, {"input": [-66.5, 3.0], "expected": 3.0}, {"input": [-66.5, 3.5], "expected": 3.5}, {"input": [-66.5, 4.0], "expected": 4.0}, {"input": [-66.5, 4.5], "expected": 4.5}, {"input": [-66.5, 5.0], "expected": 5.0}, {"input": [-66.5, 5.5], "expected": 5.5}, {"input": [-66.5, 6.0], "expected": 6.0}, {"input": [-66.5, 6.5], "expected": 6.5}, {"input": [-66.5, 7.0], "expected": 7.0}, {"input": [-66.5, 7.5], "expected": 7.5}, {"input": [-66.5, 8.0], "expected": 8.0}, {"input": [-66.5, 8.5], "expected": 8.5}, {"input": [-66.5, 9.0], "expected": 9.0}, {"input": [-66.5, 9.5], "expected": 9.5}, {"input": [-66.5, 10.0], "expected": 10.0}, {"input": [-66.5, 10.5], "expected": 10.5}, {"input": [-66.5, 11.0], "expected": 11.0}, {"input": [-66.5, 11.5], "expected": 11.5}, {"input": [-66.5, 12.0], "expected": 12.0}, {"input": [-66.5, 12.5], "expected": 12.5}, {"input": [-66.5, 13.0], "expected": 13.0}, {"input": [-66.5, 13.5], "expected": 13.5}, {"input": [-66.5, 14.0], "expected": 14.0}, {"input": [-66.5, 14.5], "expected": 14.5}, {"input": [-66.5, 15.0], "expected": 15.0}, {"input": [-66.5, 15.5], "expected": 15.5}, {"input": [-66.5, 16.0], "expected": 16.0}, {"input": [-66.5, 16.5], "expected": 16.5}, {"input": [-66.5, 17.0], "expected": 17.0}, {"input": [-66.5, 17.5], "expected": 17.5}, {"input": [-66.5, 18.0], "expected": 18.0}, {"input": [-66.5, 18.5], "expected": 18.5}, {"input": [-66.5, 19.0], "expected": 19.0}, {"input": [-66.5, 19.5], "expected": 19.5}, {"input": [-66.5, 20.0], "expected": 20.0}, {"input": [-66.5, 20.5], "expected": 20.5}, {"input": [-66.5, 21.0], "expected": 21.0}, {"input": [-66.5, 21.5], "expected": 21.5}, {"input": [-66.5, 22.0], "expected": 22.0}, {"input": [-66.5, 22.5], "expected": 22.5}, {"input": [-66.5, 23.0], "expected": 23.0}, {"input": [-66.5, 23.5], "expected": 23.5}, {"input": [-66.5, 24.0], "expected": 24.0}, {"input": [-66.5, 24.5], "expected": 24.5}, {"input": [-66.5, 25.0], "expected": 25.0}, {"input": [-66.5, 25.5], "expected": 25.5}, {"input": [-66.5, 26.0], "expected": 26.0}, {"input": [-66.5, 26.5], "expected": 26.5}, {"input": [-66.5, 27.0], "expected": 27.0}, {"input": [-66.5, 27.5], "expected": 27.5}, {"input": [-66.5, 28.0], "expected": 28.0}, {"input": [-66.5, 28.5], "expected": 28.5}, {"input": [-66.5, 29.0], "expected": 29.0}, {"input": [-66.5, 29.5], "expected": 29.5}, {"input": [-66.5, 30.0], "expected": 30.0}, {"input": [-66.5, 30.5], "expected": 30.5}, {"input": [-66.5, 31.0], "expected": 31.0}, {"input": [-66.5, 31.5], "expected": 31.5}, {"input": [-66.5, 32.0], "expected": 32.0}, {"input": [-66.5, 32.5], "expected": 32.5}, {"input": [-66.5, 33.0], "expected": 33.0}, {"input": [-66.5, 33.5], "expected": 33.5}, {"input": [-66.5, 34.0], "expected": 34.0}, {"input": [-66.5, 34.5], "expected": 34.5}, {"input": [-66.5, 35.0], "expected": 35.0}, {"input": [-66.5, 35.5], "expected": 35.5}, {"input": [-66.5, 36.0], "expected": 36.0}, {"input": [-66.5, 36.5], "expected": 36.5}, {"input": [-66.5, 37.0], "expected": 37.0}, {"input": [-66.5, 37.5], "expected": 37.5}, {"input": [-66.5, 38.0], "expected": 38.0}, {"input": [-66.5, 38.5], "expected": 38.5}, {"input": [-66.5, 39.0], "expected": 39.0}, {"input": [-66.5, 39.5], "expected": 39.5}, {"input": [-66.5, 40.0], "expected": 40.0}, {"input": [-66.5, 40.5], "expected": 40.5}, {"input": [-66.5, 41.0], "expected": 41.0}, {"input": [-66.5, 41.5], "expected": 41.5}, {"input": [-66.5, 42.0], "expected": 42.0}, {"input": [-66.5, 42.5], "expected": 42.5}, {"input": [-66.5, 43.0], "expected": 43.0}, {"input": [-66.5, 43.5], "expected": 43.5}, {"input": [-66.5, 44.0], "expected": 44.0}, {"input": [-66.5, 44.5], "expected": 44.5}, {"input": [-66.5, 45.0], "expected": 45.0}, {"input": [-66.5, 45.5], "expected": 45.5}, {"input": [-66.5, 46.0], "expected": 46.0}, {"input": [-66.5, 46.5], "expected": 46.5}, {"input": [-66.5, 47.0], "expected": 47.0}, {"input": [-66.5, 47.5], "expected": 47.5}, {"input": [-66.5, 48.0], "expected": 48.0}, {"input": [-66.5, 48.5], "expected": 48.5}, {"input": [-66.5, 49.0], "expected": 49.0}, {"input": [-66.5, 49.5], "expected": 49.5}, {"input": [-66.5, 50.0], "expected": 50.0}, {"input": [-66.5, 50.5], "expected": 50.5}, {"input": [-66.5, 51.0], "expected": 51.0}, {"input": [-66.5, 51.5], "expected": 51.5}, {"input": [-66.5, 52.0], "expected": 52.0}, {"input": [-66.5, 52.5], "expected": 52.5}, {"input": [-66.5, 53.0], "expected": 53.0}, {"input": [-66.5, 53.5], "expected": 53.5}, {"input": [-66.5, 54.0], "expected": 54.0}, {"input": [-66.5, 54.5], "expected": 54.5}, {"input": [-66.5, 55.0], "expected": 55.0}, {"input": [-66.5, 55.5], "expected": 55.5}, {"input": [-66.5, 56.0], "expected": 56.0}, {"input": [-66.5, 56.5], "expected": 56.5}, {"input": [-66.5, 57.0], "expected": 57.0}, {"input": [-66.5, 57.5], "expected": 57.5}, {"input": [-66.5, 58.0], "expected": 58.0}, {"input": [-66.5, 58.5], "expected": 58.5}, {"input": [-66.5, 59.0], "expected": 59.0}, {"input": [-66.5, 59.5], "expected": 59.5}, {"input": [-66.5, 60.0], "expected": 60.0}, {"input": [-66.5, 60.5], "expected": 60.5}, {"input": [-66.5, 61.0], "expected": 61.0}, {"input": [-66.5, 61.5], "expected": 61.5}, {"input": [-66.5, 62.0], "expected": 62.0}, {"input": [-66.5, 62.5], "expected": 62.5}, {"input": [-66.5, 63.0], "expected": 63.0}, {"input": [-66.5, 63.5], "expected": 63.5}, {"input": [-66.5, 64.0], "expected": 64.0}, {"input": [-66.5, 64.5], "expected": 64.5}, {"input": [-66.5, 65.0], "expected": 65.0}, {"input": [-66.5, 65.5], "expected": 65.5}, {"input": [-66.5, 66.0], "expected": 66.0}, {"input": [-66.5, 66.5], "expected": 66.5}, {"input": [-66.5, 67.0], "expected": 67.0}, {"input": [-66.5, 67.5], "expected": 67.5}, {"input": [-66.5, 68.0], "expected": 68.0}, {"input": [-66.5, 68.5], "expected": 68.5}, {"input": [-66.5, 69.0], "expected": 69.0}, {"input": [-66.5, 69.5], "expected": 69.5}, {"input": [-66.5, 70.0], "expected": 70.0}, {"input": [-66.5, 70.5], "expected": 70.5}, {"input": [-66.5, 71.0], "expected": 71.0}, {"input": [-66.5, 71.5], "expected": 71.5}, {"input": [-66.5, 72.0], "expected": 72.0}, {"input": [-66.5, 72.5], "expected": 72.5}, {"input": [-66.5, 73.0], "expected": 73.0}, {"input": [-66.5, 73.5], "expected": 73.5}, {"input": [-66.5, 74.0], "expected": 74.0}, {"input": [-66.5, 74.5], "expected": 74.5}, {"input": [-66.5, 75.0], "expected": 75.0}, {"input": [-66.5, 75.5], "expected": 75.5}, {"input": [-66.5, 76.0], "expected": 76.0}, {"input": [-66.5, 76.5], "expected": 76.5}, {"input": [-66.5, 77.0], "expected": 77.0}, {"input": [-66.5, 77.5], "expected": 77.5}, {"input": [-66.5, 78.0], "expected": 78.0}, {"input": [-66.5, 78.5], "expected": 78.5}, {"input": [-66.5, 79.0], "expected": 79.0}, {"input": [-66.5, 79.5], "expected": 79.5}, {"input": [-66.5, 80.0], "expected": 80.0}, {"input": [-66.5, 80.5], "expected": 80.5}, {"input": [-66.5, 81.0], "expected": 81.0}, {"input": [-66.5, 81.5], "expected": 81.5}, {"input": [-66.5, 82.0], "expected": 82.0}, {"input": [-66.5, 82.5], "expected": 82.5}, {"input": [-66.5, 83.0], "expected": 83.0}, {"input": [-66.5, 83.5], "expected": 83.5}, {"input": [-66.5, 84.0], "expected": 84.0}, {"input": [-66.5, 84.5], "expected": 84.5}, {"input": [-66.5, 85.0], "expected": 85.0}, {"input": [-66.5, 85.5], "expected": 85.5}, {"input": [-66.5, 86.0], "expected": 86.0}, {"input": [-66.5, 86.5], "expected": 86.5}, {"input": [-66.5, 87.0], "expected": 87.0}, {"input": [-66.5, 87.5], "expected": 87.5}, {"input": [-66.5, 88.0], "expected": 88.0}, {"input": [-66.5, 88.5], "expected": 88.5}, {"input": [-66.5, 89.0], "expected": 89.0}, {"input": [-66.5, 89.5], "expected": 89.5}, {"input": [-66.5, 90.0], "expected": 90.0}, {"input": [-66.5, 90.5], "expected": 90.5}, {"input": [-66.5, 91.0], "expected": 91.0}, {"input": [-66.5, 91.5], "expected": 91.5}, {"input": [-66.5, 92.0], "expected": 92.0}, {"input": [-66.5, 92.5], "expected": 92.5}, {"input": [-66.5, 93.0], "expected": 93.0}, {"input": [-66.5, 93.5], "expected": 93.5}, {"input": [-66.5, 94.0], "expected": 94.0}, {"input": [-66.5, 94.5], "expected": 94.5}, {"input": [-66.5, 95.0], "expected": 95.0}, {"input": [-66.5, 95.5], "expected": 95.5}, {"input": [-66.5, 96.0], "expected": 96.0}, {"input": [-66.5, 96.5], "expected": 96.5}, {"input": [-66.5, 97.0], "expected": 97.0}, {"input": [-66.5, 97.5], "expected": 97.5}, {"input": [-66.5, 98.0], "expected": 98.0}, {"input": [-66.5, 98.5], "expected": 98.5}, {"input": [-66.5, 99.0], "expected": 99.0}, {"input": [-66.5, 99.5], "expected": 99.5}, {"input": [-66.0, -100.0], "expected": -66.0}, {"input": [-66.0, -99.5], "expected": -66.0}, {"input": [-66.0, -99.0], "expected": -66.0}, {"input": [-66.0, -98.5], "expected": -65.99999999999999}, {"input": [-66.0, -98.0], "expected": -65.99999999999999}, {"input": [-66.0, -97.5], "expected": -65.99999999999999}, {"input": [-66.0, -97.0], "expected": -65.99999999999997}, {"input": [-66.0, -96.5], "expected": -65.99999999999994}, {"input": [-66.0, -96.0], "expected": -65.9999999999999}, {"input": [-66.0, -95.5], "expected": -65.99999999999984}, {"input": [-66.0, -95.0], "expected": -65.99999999999974}, {"input": [-66.0, -94.5], "expected": -65.99999999999957}, {"input": [-66.0, -94.0], "expected": -65.9999999999993}, {"input": [-66.0, -93.5], "expected": -65.99999999999886}, {"input": [-66.0, -93.0], "expected": -65.99999999999812}, {"input": [-66.0, -92.5], "expected": -65.9999999999969}, {"input": [-66.0, -92.0], "expected": -65.99999999999488}, {"input": [-66.0, -91.5], "expected": -65.99999999999157}, {"input": [-66.0, -91.0], "expected": -65.99999999998612}, {"input": [-66.0, -90.5], "expected": -65.9999999999771}, {"input": [-66.0, -90.0], "expected": -65.99999999996224}, {"input": [-66.0, -89.5], "expected": -65.99999999993776}, {"input": [-66.0, -89.0], "expected": -65.99999999989738}, {"input": [-66.0, -88.5], "expected": -65.9999999998308}, {"input": [-66.0, -88.0], "expected": -65.99999999972106}, {"input": [-66.0, -87.5], "expected": -65.9999999995401}, {"input": [-66.0, -87.0], "expected": -65.99999999924174}, {"input": [-66.0, -86.5], "expected": -65.99999999874984}, {"input": [-66.0, -86.0], "expected": -65.99999999793884}, {"input": [-66.0, -85.5], "expected": -65.99999999660173}, {"input": [-66.0, -85.0], "expected": -65.9999999943972}, {"input": [-66.0, -84.5], "expected": -65.99999999076255}, {"input": [-66.0, -84.0], "expected": -65.99999998477001}, {"input": [-66.0, -83.5], "expected": -65.99999997489}, {"input": [-66.0, -83.0], "expected": -65.99999995860063}, {"input": [-66.0, -82.5], "expected": -65.99999993174397}, {"input": [-66.0, -82.0], "expected": -65.99999988746484}, {"input": [-66.0, -81.5], "expected": -65.99999981446088}, {"input": [-66.0, -81.0], "expected": -65.99999969409772}, {"input": [-66.0, -80.5], "expected": -65.99999949565246}, {"input": [-66.0, -80.0], "expected": -65.99999916847163}, {"input": [-66.0, -79.5], "expected": -65.99999862904185}, {"input": [-66.0, -79.0], "expected": -65.99999773967315}, {"input": [-66.0, -78.5], "expected": -65.99999627335377}, {"input": [-66.0, -78.0], "expected": -65.99999385580652}, {"input": [-66.0, -77.5], "expected": -65.99998986995772}, {"input": [-66.0, -77.0], "expected": -65.99998329843868}, {"input": [-66.0, -76.5], "expected": -65.99997246392977}, {"input": [-66.0, -76.0], "expected": -65.99995460110078}, {"input": [-66.0, -75.5], "expected": -65.99992515097136}, {"input": [-66.0, -75.0], "expected": -65.99987659781027}, {"input": [-66.0, -74.5], "expected": -65.99979655232787}, {"input": [-66.0, -74.0], "expected": -65.9996645936271}, {"input": [-66.0, -73.5], "expected": -65.99944706852465}, {"input": [-66.0, -73.0], "expected": -65.99908853354623}, {"input": [-66.0, -72.5], "expected": -65.99849768984025}, {"input": [-66.0, -72.0], "expected": -65.99752431486228}, {"input": [-66.0, -71.5], "expected": -65.99592155672943}, {"input": [-66.0, -71.0], "expected": -65.99328465151088}, {"input": [-66.0, -70.5], "expected": -65.9889522551514}, {"input": [-66.0, -70.0], "expected": -65.9818500720822}, {"input": [-66.0, -69.5], "expected": -65.97024958172737}, {"input": [-66.0, -69.0], "expected": -65.95141264842626}, {"input": [-66.0, -68.5], "expected": -65.92111026570745}, {"input": [-66.0, -68.0], "expected": -65.87307198895702}, {"input": [-66.0, -67.5], "expected": -65.79858672201725}, {"input": [-66.0, -67.0], "expected": -65.68673831248178}, {"input": [-66.0, -66.5], "expected": -65.5259230158199}, {"input": [-66.0, -66.0], "expected": -65.30685281944005}, {"input": [-66.0, -65.5], "expected": -65.0259230158199}, {"input": [-66.0, -65.0], "expected": -64.68673831248178}, {"input": [-66.0, -64.5], "expected": -64.29858672201725}, {"input": [-66.0, -64.0], "expected": -63.87307198895703}, {"input": [-66.0, -63.5], "expected": -63.42111026570745}, {"input": [-66.0, -63.0], "expected": -62.951412648426256}, {"input": [-66.0, -62.5], "expected": -62.47024958172738}, {"input": [-66.0, -62.0], "expected": -61.98185007208219}, {"input": [-66.0, -61.5], "expected": -61.4889522551514}, {"input": [-66.0, -61.0], "expected": -60.99328465151088}, {"input": [-66.0, -60.5], "expected": -60.49592155672943}, {"input": [-66.0, -60.0], "expected": -59.99752431486227}, {"input": [-66.0, -59.5], "expected": -59.49849768984024}, {"input": [-66.0, -59.0], "expected": -58.99908853354623}, {"input": [-66.0, -58.5], "expected": -58.49944706852464}, {"input": [-66.0, -58.0], "expected": -57.9996645936271}, {"input": [-66.0, -57.5], "expected": -57.49979655232787}, {"input": [-66.0, -57.0], "expected": -56.99987659781028}, {"input": [-66.0, -56.5], "expected": -56.49992515097137}, {"input": [-66.0, -56.0], "expected": -55.99995460110078}, {"input": [-66.0, -55.5], "expected": -55.49997246392977}, {"input": [-66.0, -55.0], "expected": -54.99998329843868}, {"input": [-66.0, -54.5], "expected": -54.49998986995771}, {"input": [-66.0, -54.0], "expected": -53.99999385580652}, {"input": [-66.0, -53.5], "expected": -53.49999627335377}, {"input": [-66.0, -53.0], "expected": -52.99999773967315}, {"input": [-66.0, -52.5], "expected": -52.499998629041855}, {"input": [-66.0, -52.0], "expected": -51.999999168471625}, {"input": [-66.0, -51.5], "expected": -51.49999949565247}, {"input": [-66.0, -51.0], "expected": -50.999999694097724}, {"input": [-66.0, -50.5], "expected": -50.49999981446088}, {"input": [-66.0, -50.0], "expected": -49.99999988746483}, {"input": [-66.0, -49.5], "expected": -49.49999993174397}, {"input": [-66.0, -49.0], "expected": -48.999999958600625}, {"input": [-66.0, -48.5], "expected": -48.49999997489001}, {"input": [-66.0, -48.0], "expected": -47.99999998477002}, {"input": [-66.0, -47.5], "expected": -47.499999990762554}, {"input": [-66.0, -47.0], "expected": -46.99999999439721}, {"input": [-66.0, -46.5], "expected": -46.49999999660173}, {"input": [-66.0, -46.0], "expected": -45.99999999793884}, {"input": [-66.0, -45.5], "expected": -45.49999999874985}, {"input": [-66.0, -45.0], "expected": -44.999999999241744}, {"input": [-66.0, -44.5], "expected": -44.499999999540094}, {"input": [-66.0, -44.0], "expected": -43.999999999721055}, {"input": [-66.0, -43.5], "expected": -43.49999999983081}, {"input": [-66.0, -43.0], "expected": -42.99999999989738}, {"input": [-66.0, -42.5], "expected": -42.49999999993776}, {"input": [-66.0, -42.0], "expected": -41.99999999996225}, {"input": [-66.0, -41.5], "expected": -41.4999999999771}, {"input": [-66.0, -41.0], "expected": -40.99999999998611}, {"input": [-66.0, -40.5], "expected": -40.49999999999158}, {"input": [-66.0, -40.0], "expected": -39.99999999999489}, {"input": [-66.0, -39.5], "expected": -39.4999999999969}, {"input": [-66.0, -39.0], "expected": -38.99999999999812}, {"input": [-66.0, -38.5], "expected": -38.49999999999886}, {"input": [-66.0, -38.0], "expected": -37.99999999999931}, {"input": [-66.0, -37.5], "expected": -37.49999999999958}, {"input": [-66.0, -37.0], "expected": -36.999999999999744}, {"input": [-66.0, -36.5], "expected": -36.499999999999844}, {"input": [-66.0, -36.0], "expected": -35.99999999999991}, {"input": [-66.0, -35.5], "expected": -35.49999999999994}, {"input": [-66.0, -35.0], "expected": -34.999999999999964}, {"input": [-66.0, -34.5], "expected": -34.49999999999998}, {"input": [-66.0, -34.0], "expected": -33.999999999999986}, {"input": [-66.0, -33.5], "expected": -33.49999999999999}, {"input": [-66.0, -33.0], "expected": -32.99999999999999}, {"input": [-66.0, -32.5], "expected": -32.5}, {"input": [-66.0, -32.0], "expected": -32.0}, {"input": [-66.0, -31.5], "expected": -31.5}, {"input": [-66.0, -31.0], "expected": -31.0}, {"input": [-66.0, -30.5], "expected": -30.5}, {"input": [-66.0, -30.0], "expected": -30.0}, {"input": [-66.0, -29.5], "expected": -29.5}, {"input": [-66.0, -29.0], "expected": -29.0}, {"input": [-66.0, -28.5], "expected": -28.5}, {"input": [-66.0, -28.0], "expected": -28.0}, {"input": [-66.0, -27.5], "expected": -27.5}, {"input": [-66.0, -27.0], "expected": -27.0}, {"input": [-66.0, -26.5], "expected": -26.5}, {"input": [-66.0, -26.0], "expected": -26.0}, {"input": [-66.0, -25.5], "expected": -25.5}, {"input": [-66.0, -25.0], "expected": -25.0}, {"input": [-66.0, -24.5], "expected": -24.5}, {"input": [-66.0, -24.0], "expected": -24.0}, {"input": [-66.0, -23.5], "expected": -23.5}, {"input": [-66.0, -23.0], "expected": -23.0}, {"input": [-66.0, -22.5], "expected": -22.5}, {"input": [-66.0, -22.0], "expected": -22.0}, {"input": [-66.0, -21.5], "expected": -21.5}, {"input": [-66.0, -21.0], "expected": -21.0}, {"input": [-66.0, -20.5], "expected": -20.5}, {"input": [-66.0, -20.0], "expected": -20.0}, {"input": [-66.0, -19.5], "expected": -19.5}, {"input": [-66.0, -19.0], "expected": -19.0}, {"input": [-66.0, -18.5], "expected": -18.5}, {"input": [-66.0, -18.0], "expected": -18.0}, {"input": [-66.0, -17.5], "expected": -17.5}, {"input": [-66.0, -17.0], "expected": -17.0}, {"input": [-66.0, -16.5], "expected": -16.5}, {"input": [-66.0, -16.0], "expected": -16.0}, {"input": [-66.0, -15.5], "expected": -15.5}, {"input": [-66.0, -15.0], "expected": -15.0}, {"input": [-66.0, -14.5], "expected": -14.5}, {"input": [-66.0, -14.0], "expected": -14.0}, {"input": [-66.0, -13.5], "expected": -13.5}, {"input": [-66.0, -13.0], "expected": -13.0}, {"input": [-66.0, -12.5], "expected": -12.5}, {"input": [-66.0, -12.0], "expected": -12.0}, {"input": [-66.0, -11.5], "expected": -11.5}, {"input": [-66.0, -11.0], "expected": -11.0}, {"input": [-66.0, -10.5], "expected": -10.5}, {"input": [-66.0, -10.0], "expected": -10.0}, {"input": [-66.0, -9.5], "expected": -9.5}, {"input": [-66.0, -9.0], "expected": -9.0}, {"input": [-66.0, -8.5], "expected": -8.5}, {"input": [-66.0, -8.0], "expected": -8.0}, {"input": [-66.0, -7.5], "expected": -7.5}, {"input": [-66.0, -7.0], "expected": -7.0}, {"input": [-66.0, -6.5], "expected": -6.5}, {"input": [-66.0, -6.0], "expected": -6.0}, {"input": [-66.0, -5.5], "expected": -5.5}, {"input": [-66.0, -5.0], "expected": -5.0}, {"input": [-66.0, -4.5], "expected": -4.5}, {"input": [-66.0, -4.0], "expected": -4.0}, {"input": [-66.0, -3.5], "expected": -3.5}, {"input": [-66.0, -3.0], "expected": -3.0}, {"input": [-66.0, -2.5], "expected": -2.5}, {"input": [-66.0, -2.0], "expected": -2.0}, {"input": [-66.0, -1.5], "expected": -1.5}, {"input": [-66.0, -1.0], "expected": -1.0}, {"input": [-66.0, -0.5], "expected": -0.5}, {"input": [-66.0, 0.0], "expected": 2.1705220113036395e-29}, {"input": [-66.0, 0.5], "expected": 0.5}, {"input": [-66.0, 1.0], "expected": 1.0}, {"input": [-66.0, 1.5], "expected": 1.5}, {"input": [-66.0, 2.0], "expected": 2.0}, {"input": [-66.0, 2.5], "expected": 2.5}, {"input": [-66.0, 3.0], "expected": 3.0}, {"input": [-66.0, 3.5], "expected": 3.5}, {"input": [-66.0, 4.0], "expected": 4.0}, {"input": [-66.0, 4.5], "expected": 4.5}, {"input": [-66.0, 5.0], "expected": 5.0}, {"input": [-66.0, 5.5], "expected": 5.5}, {"input": [-66.0, 6.0], "expected": 6.0}, {"input": [-66.0, 6.5], "expected": 6.5}, {"input": [-66.0, 7.0], "expected": 7.0}, {"input": [-66.0, 7.5], "expected": 7.5}, {"input": [-66.0, 8.0], "expected": 8.0}, {"input": [-66.0, 8.5], "expected": 8.5}, {"input": [-66.0, 9.0], "expected": 9.0}, {"input": [-66.0, 9.5], "expected": 9.5}, {"input": [-66.0, 10.0], "expected": 10.0}, {"input": [-66.0, 10.5], "expected": 10.5}, {"input": [-66.0, 11.0], "expected": 11.0}, {"input": [-66.0, 11.5], "expected": 11.5}, {"input": [-66.0, 12.0], "expected": 12.0}, {"input": [-66.0, 12.5], "expected": 12.5}, {"input": [-66.0, 13.0], "expected": 13.0}, {"input": [-66.0, 13.5], "expected": 13.5}, {"input": [-66.0, 14.0], "expected": 14.0}, {"input": [-66.0, 14.5], "expected": 14.5}, {"input": [-66.0, 15.0], "expected": 15.0}, {"input": [-66.0, 15.5], "expected": 15.5}, {"input": [-66.0, 16.0], "expected": 16.0}, {"input": [-66.0, 16.5], "expected": 16.5}, {"input": [-66.0, 17.0], "expected": 17.0}, {"input": [-66.0, 17.5], "expected": 17.5}, {"input": [-66.0, 18.0], "expected": 18.0}, {"input": [-66.0, 18.5], "expected": 18.5}, {"input": [-66.0, 19.0], "expected": 19.0}, {"input": [-66.0, 19.5], "expected": 19.5}, {"input": [-66.0, 20.0], "expected": 20.0}, {"input": [-66.0, 20.5], "expected": 20.5}, {"input": [-66.0, 21.0], "expected": 21.0}, {"input": [-66.0, 21.5], "expected": 21.5}, {"input": [-66.0, 22.0], "expected": 22.0}, {"input": [-66.0, 22.5], "expected": 22.5}, {"input": [-66.0, 23.0], "expected": 23.0}, {"input": [-66.0, 23.5], "expected": 23.5}, {"input": [-66.0, 24.0], "expected": 24.0}, {"input": [-66.0, 24.5], "expected": 24.5}, {"input": [-66.0, 25.0], "expected": 25.0}, {"input": [-66.0, 25.5], "expected": 25.5}, {"input": [-66.0, 26.0], "expected": 26.0}, {"input": [-66.0, 26.5], "expected": 26.5}, {"input": [-66.0, 27.0], "expected": 27.0}, {"input": [-66.0, 27.5], "expected": 27.5}, {"input": [-66.0, 28.0], "expected": 28.0}, {"input": [-66.0, 28.5], "expected": 28.5}, {"input": [-66.0, 29.0], "expected": 29.0}, {"input": [-66.0, 29.5], "expected": 29.5}, {"input": [-66.0, 30.0], "expected": 30.0}, {"input": [-66.0, 30.5], "expected": 30.5}, {"input": [-66.0, 31.0], "expected": 31.0}, {"input": [-66.0, 31.5], "expected": 31.5}, {"input": [-66.0, 32.0], "expected": 32.0}, {"input": [-66.0, 32.5], "expected": 32.5}, {"input": [-66.0, 33.0], "expected": 33.0}, {"input": [-66.0, 33.5], "expected": 33.5}, {"input": [-66.0, 34.0], "expected": 34.0}, {"input": [-66.0, 34.5], "expected": 34.5}, {"input": [-66.0, 35.0], "expected": 35.0}, {"input": [-66.0, 35.5], "expected": 35.5}, {"input": [-66.0, 36.0], "expected": 36.0}, {"input": [-66.0, 36.5], "expected": 36.5}, {"input": [-66.0, 37.0], "expected": 37.0}, {"input": [-66.0, 37.5], "expected": 37.5}, {"input": [-66.0, 38.0], "expected": 38.0}, {"input": [-66.0, 38.5], "expected": 38.5}, {"input": [-66.0, 39.0], "expected": 39.0}, {"input": [-66.0, 39.5], "expected": 39.5}, {"input": [-66.0, 40.0], "expected": 40.0}, {"input": [-66.0, 40.5], "expected": 40.5}, {"input": [-66.0, 41.0], "expected": 41.0}, {"input": [-66.0, 41.5], "expected": 41.5}, {"input": [-66.0, 42.0], "expected": 42.0}, {"input": [-66.0, 42.5], "expected": 42.5}, {"input": [-66.0, 43.0], "expected": 43.0}, {"input": [-66.0, 43.5], "expected": 43.5}, {"input": [-66.0, 44.0], "expected": 44.0}, {"input": [-66.0, 44.5], "expected": 44.5}, {"input": [-66.0, 45.0], "expected": 45.0}, {"input": [-66.0, 45.5], "expected": 45.5}, {"input": [-66.0, 46.0], "expected": 46.0}, {"input": [-66.0, 46.5], "expected": 46.5}, {"input": [-66.0, 47.0], "expected": 47.0}, {"input": [-66.0, 47.5], "expected": 47.5}, {"input": [-66.0, 48.0], "expected": 48.0}, {"input": [-66.0, 48.5], "expected": 48.5}, {"input": [-66.0, 49.0], "expected": 49.0}, {"input": [-66.0, 49.5], "expected": 49.5}, {"input": [-66.0, 50.0], "expected": 50.0}, {"input": [-66.0, 50.5], "expected": 50.5}, {"input": [-66.0, 51.0], "expected": 51.0}, {"input": [-66.0, 51.5], "expected": 51.5}, {"input": [-66.0, 52.0], "expected": 52.0}, {"input": [-66.0, 52.5], "expected": 52.5}, {"input": [-66.0, 53.0], "expected": 53.0}, {"input": [-66.0, 53.5], "expected": 53.5}, {"input": [-66.0, 54.0], "expected": 54.0}, {"input": [-66.0, 54.5], "expected": 54.5}, {"input": [-66.0, 55.0], "expected": 55.0}, {"input": [-66.0, 55.5], "expected": 55.5}, {"input": [-66.0, 56.0], "expected": 56.0}, {"input": [-66.0, 56.5], "expected": 56.5}, {"input": [-66.0, 57.0], "expected": 57.0}, {"input": [-66.0, 57.5], "expected": 57.5}, {"input": [-66.0, 58.0], "expected": 58.0}, {"input": [-66.0, 58.5], "expected": 58.5}, {"input": [-66.0, 59.0], "expected": 59.0}, {"input": [-66.0, 59.5], "expected": 59.5}, {"input": [-66.0, 60.0], "expected": 60.0}, {"input": [-66.0, 60.5], "expected": 60.5}, {"input": [-66.0, 61.0], "expected": 61.0}, {"input": [-66.0, 61.5], "expected": 61.5}, {"input": [-66.0, 62.0], "expected": 62.0}, {"input": [-66.0, 62.5], "expected": 62.5}, {"input": [-66.0, 63.0], "expected": 63.0}, {"input": [-66.0, 63.5], "expected": 63.5}, {"input": [-66.0, 64.0], "expected": 64.0}, {"input": [-66.0, 64.5], "expected": 64.5}, {"input": [-66.0, 65.0], "expected": 65.0}, {"input": [-66.0, 65.5], "expected": 65.5}, {"input": [-66.0, 66.0], "expected": 66.0}, {"input": [-66.0, 66.5], "expected": 66.5}, {"input": [-66.0, 67.0], "expected": 67.0}, {"input": [-66.0, 67.5], "expected": 67.5}, {"input": [-66.0, 68.0], "expected": 68.0}, {"input": [-66.0, 68.5], "expected": 68.5}, {"input": [-66.0, 69.0], "expected": 69.0}, {"input": [-66.0, 69.5], "expected": 69.5}, {"input": [-66.0, 70.0], "expected": 70.0}, {"input": [-66.0, 70.5], "expected": 70.5}, {"input": [-66.0, 71.0], "expected": 71.0}, {"input": [-66.0, 71.5], "expected": 71.5}, {"input": [-66.0, 72.0], "expected": 72.0}, {"input": [-66.0, 72.5], "expected": 72.5}, {"input": [-66.0, 73.0], "expected": 73.0}, {"input": [-66.0, 73.5], "expected": 73.5}, {"input": [-66.0, 74.0], "expected": 74.0}, {"input": [-66.0, 74.5], "expected": 74.5}, {"input": [-66.0, 75.0], "expected": 75.0}, {"input": [-66.0, 75.5], "expected": 75.5}, {"input": [-66.0, 76.0], "expected": 76.0}, {"input": [-66.0, 76.5], "expected": 76.5}, {"input": [-66.0, 77.0], "expected": 77.0}, {"input": [-66.0, 77.5], "expected": 77.5}, {"input": [-66.0, 78.0], "expected": 78.0}, {"input": [-66.0, 78.5], "expected": 78.5}, {"input": [-66.0, 79.0], "expected": 79.0}, {"input": [-66.0, 79.5], "expected": 79.5}, {"input": [-66.0, 80.0], "expected": 80.0}, {"input": [-66.0, 80.5], "expected": 80.5}, {"input": [-66.0, 81.0], "expected": 81.0}, {"input": [-66.0, 81.5], "expected": 81.5}, {"input": [-66.0, 82.0], "expected": 82.0}, {"input": [-66.0, 82.5], "expected": 82.5}, {"input": [-66.0, 83.0], "expected": 83.0}, {"input": [-66.0, 83.5], "expected": 83.5}, {"input": [-66.0, 84.0], "expected": 84.0}, {"input": [-66.0, 84.5], "expected": 84.5}, {"input": [-66.0, 85.0], "expected": 85.0}, {"input": [-66.0, 85.5], "expected": 85.5}, {"input": [-66.0, 86.0], "expected": 86.0}, {"input": [-66.0, 86.5], "expected": 86.5}, {"input": [-66.0, 87.0], "expected": 87.0}, {"input": [-66.0, 87.5], "expected": 87.5}, {"input": [-66.0, 88.0], "expected": 88.0}, {"input": [-66.0, 88.5], "expected": 88.5}, {"input": [-66.0, 89.0], "expected": 89.0}, {"input": [-66.0, 89.5], "expected": 89.5}, {"input": [-66.0, 90.0], "expected": 90.0}, {"input": [-66.0, 90.5], "expected": 90.5}, {"input": [-66.0, 91.0], "expected": 91.0}, {"input": [-66.0, 91.5], "expected": 91.5}, {"input": [-66.0, 92.0], "expected": 92.0}, {"input": [-66.0, 92.5], "expected": 92.5}, {"input": [-66.0, 93.0], "expected": 93.0}, {"input": [-66.0, 93.5], "expected": 93.5}, {"input": [-66.0, 94.0], "expected": 94.0}, {"input": [-66.0, 94.5], "expected": 94.5}, {"input": [-66.0, 95.0], "expected": 95.0}, {"input": [-66.0, 95.5], "expected": 95.5}, {"input": [-66.0, 96.0], "expected": 96.0}, {"input": [-66.0, 96.5], "expected": 96.5}, {"input": [-66.0, 97.0], "expected": 97.0}, {"input": [-66.0, 97.5], "expected": 97.5}, {"input": [-66.0, 98.0], "expected": 98.0}, {"input": [-66.0, 98.5], "expected": 98.5}, {"input": [-66.0, 99.0], "expected": 99.0}, {"input": [-66.0, 99.5], "expected": 99.5}, {"input": [-65.5, -100.0], "expected": -65.5}, {"input": [-65.5, -99.5], "expected": -65.5}, {"input": [-65.5, -99.0], "expected": -65.5}, {"input": [-65.5, -98.5], "expected": -65.5}, {"input": [-65.5, -98.0], "expected": -65.49999999999999}, {"input": [-65.5, -97.5], "expected": -65.49999999999999}, {"input": [-65.5, -97.0], "expected": -65.49999999999999}, {"input": [-65.5, -96.5], "expected": -65.49999999999997}, {"input": [-65.5, -96.0], "expected": -65.49999999999994}, {"input": [-65.5, -95.5], "expected": -65.4999999999999}, {"input": [-65.5, -95.0], "expected": -65.49999999999984}, {"input": [-65.5, -94.5], "expected": -65.49999999999974}, {"input": [-65.5, -94.0], "expected": -65.49999999999957}, {"input": [-65.5, -93.5], "expected": -65.4999999999993}, {"input": [-65.5, -93.0], "expected": -65.49999999999886}, {"input": [-65.5, -92.5], "expected": -65.49999999999812}, {"input": [-65.5, -92.0], "expected": -65.4999999999969}, {"input": [-65.5, -91.5], "expected": -65.49999999999488}, {"input": [-65.5, -91.0], "expected": -65.49999999999157}, {"input": [-65.5, -90.5], "expected": -65.49999999998612}, {"input": [-65.5, -90.0], "expected": -65.4999999999771}, {"input": [-65.5, -89.5], "expected": -65.49999999996224}, {"input": [-65.5, -89.0], "expected": -65.49999999993776}, {"input": [-65.5, -88.5], "expected": -65.49999999989738}, {"input": [-65.5, -88.0], "expected": -65.4999999998308}, {"input": [-65.5, -87.5], "expected": -65.49999999972106}, {"input": [-65.5, -87.0], "expected": -65.4999999995401}, {"input": [-65.5, -86.5], "expected": -65.49999999924174}, {"input": [-65.5, -86.0], "expected": -65.49999999874984}, {"input": [-65.5, -85.5], "expected": -65.49999999793884}, {"input": [-65.5, -85.0], "expected": -65.49999999660173}, {"input": [-65.5, -84.5], "expected": -65.4999999943972}, {"input": [-65.5, -84.0], "expected": -65.49999999076255}, {"input": [-65.5, -83.5], "expected": -65.49999998477001}, {"input": [-65.5, -83.0], "expected": -65.49999997489}, {"input": [-65.5, -82.5], "expected": -65.49999995860063}, {"input": [-65.5, -82.0], "expected": -65.49999993174397}, {"input": [-65.5, -81.5], "expected": -65.49999988746484}, {"input": [-65.5, -81.0], "expected": -65.49999981446088}, {"input": [-65.5, -80.5], "expected": -65.49999969409772}, {"input": [-65.5, -80.0], "expected": -65.49999949565246}, {"input": [-65.5, -79.5], "expected": -65.49999916847163}, {"input": [-65.5, -79.0], "expected": -65.49999862904185}, {"input": [-65.5, -78.5], "expected": -65.49999773967315}, {"input": [-65.5, -78.0], "expected": -65.49999627335377}, {"input": [-65.5, -77.5], "expected": -65.49999385580652}, {"input": [-65.5, -77.0], "expected": -65.49998986995772}, {"input": [-65.5, -76.5], "expected": -65.49998329843868}, {"input": [-65.5, -76.0], "expected": -65.49997246392977}, {"input": [-65.5, -75.5], "expected": -65.49995460110078}, {"input": [-65.5, -75.0], "expected": -65.49992515097136}, {"input": [-65.5, -74.5], "expected": -65.49987659781027}, {"input": [-65.5, -74.0], "expected": -65.49979655232787}, {"input": [-65.5, -73.5], "expected": -65.4996645936271}, {"input": [-65.5, -73.0], "expected": -65.49944706852465}, {"input": [-65.5, -72.5], "expected": -65.49908853354623}, {"input": [-65.5, -72.0], "expected": -65.49849768984025}, {"input": [-65.5, -71.5], "expected": -65.49752431486228}, {"input": [-65.5, -71.0], "expected": -65.49592155672943}, {"input": [-65.5, -70.5], "expected": -65.49328465151088}, {"input": [-65.5, -70.0], "expected": -65.4889522551514}, {"input": [-65.5, -69.5], "expected": -65.4818500720822}, {"input": [-65.5, -69.0], "expected": -65.47024958172737}, {"input": [-65.5, -68.5], "expected": -65.45141264842626}, {"input": [-65.5, -68.0], "expected": -65.42111026570745}, {"input": [-65.5, -67.5], "expected": -65.37307198895702}, {"input": [-65.5, -67.0], "expected": -65.29858672201725}, {"input": [-65.5, -66.5], "expected": -65.18673831248178}, {"input": [-65.5, -66.0], "expected": -65.0259230158199}, {"input": [-65.5, -65.5], "expected": -64.80685281944005}, {"input": [-65.5, -65.0], "expected": -64.5259230158199}, {"input": [-65.5, -64.5], "expected": -64.18673831248178}, {"input": [-65.5, -64.0], "expected": -63.79858672201725}, {"input": [-65.5, -63.5], "expected": -63.37307198895703}, {"input": [-65.5, -63.0], "expected": -62.92111026570745}, {"input": [-65.5, -62.5], "expected": -62.451412648426256}, {"input": [-65.5, -62.0], "expected": -61.97024958172738}, {"input": [-65.5, -61.5], "expected": -61.48185007208219}, {"input": [-65.5, -61.0], "expected": -60.9889522551514}, {"input": [-65.5, -60.5], "expected": -60.49328465151088}, {"input": [-65.5, -60.0], "expected": -59.99592155672943}, {"input": [-65.5, -59.5], "expected": -59.49752431486227}, {"input": [-65.5, -59.0], "expected": -58.99849768984024}, {"input": [-65.5, -58.5], "expected": -58.49908853354623}, {"input": [-65.5, -58.0], "expected": -57.99944706852464}, {"input": [-65.5, -57.5], "expected": -57.4996645936271}, {"input": [-65.5, -57.0], "expected": -56.99979655232787}, {"input": [-65.5, -56.5], "expected": -56.49987659781028}, {"input": [-65.5, -56.0], "expected": -55.99992515097137}, {"input": [-65.5, -55.5], "expected": -55.49995460110078}, {"input": [-65.5, -55.0], "expected": -54.99997246392977}, {"input": [-65.5, -54.5], "expected": -54.49998329843868}, {"input": [-65.5, -54.0], "expected": -53.99998986995771}, {"input": [-65.5, -53.5], "expected": -53.49999385580652}, {"input": [-65.5, -53.0], "expected": -52.99999627335377}, {"input": [-65.5, -52.5], "expected": -52.49999773967315}, {"input": [-65.5, -52.0], "expected": -51.999998629041855}, {"input": [-65.5, -51.5], "expected": -51.499999168471625}, {"input": [-65.5, -51.0], "expected": -50.99999949565247}, {"input": [-65.5, -50.5], "expected": -50.499999694097724}, {"input": [-65.5, -50.0], "expected": -49.99999981446088}, {"input": [-65.5, -49.5], "expected": -49.49999988746483}, {"input": [-65.5, -49.0], "expected": -48.99999993174397}, {"input": [-65.5, -48.5], "expected": -48.499999958600625}, {"input": [-65.5, -48.0], "expected": -47.99999997489001}, {"input": [-65.5, -47.5], "expected": -47.49999998477002}, {"input": [-65.5, -47.0], "expected": -46.999999990762554}, {"input": [-65.5, -46.5], "expected": -46.49999999439721}, {"input": [-65.5, -46.0], "expected": -45.99999999660173}, {"input": [-65.5, -45.5], "expected": -45.49999999793884}, {"input": [-65.5, -45.0], "expected": -44.99999999874985}, {"input": [-65.5, -44.5], "expected": -44.499999999241744}, {"input": [-65.5, -44.0], "expected": -43.999999999540094}, {"input": [-65.5, -43.5], "expected": -43.499999999721055}, {"input": [-65.5, -43.0], "expected": -42.99999999983081}, {"input": [-65.5, -42.5], "expected": -42.49999999989738}, {"input": [-65.5, -42.0], "expected": -41.99999999993776}, {"input": [-65.5, -41.5], "expected": -41.49999999996225}, {"input": [-65.5, -41.0], "expected": -40.9999999999771}, {"input": [-65.5, -40.5], "expected": -40.49999999998611}, {"input": [-65.5, -40.0], "expected": -39.99999999999158}, {"input": [-65.5, -39.5], "expected": -39.49999999999489}, {"input": [-65.5, -39.0], "expected": -38.9999999999969}, {"input": [-65.5, -38.5], "expected": -38.49999999999812}, {"input": [-65.5, -38.0], "expected": -37.99999999999886}, {"input": [-65.5, -37.5], "expected": -37.49999999999931}, {"input": [-65.5, -37.0], "expected": -36.99999999999958}, {"input": [-65.5, -36.5], "expected": -36.499999999999744}, {"input": [-65.5, -36.0], "expected": -35.999999999999844}, {"input": [-65.5, -35.5], "expected": -35.49999999999991}, {"input": [-65.5, -35.0], "expected": -34.99999999999994}, {"input": [-65.5, -34.5], "expected": -34.499999999999964}, {"input": [-65.5, -34.0], "expected": -33.99999999999998}, {"input": [-65.5, -33.5], "expected": -33.499999999999986}, {"input": [-65.5, -33.0], "expected": -32.99999999999999}, {"input": [-65.5, -32.5], "expected": -32.49999999999999}, {"input": [-65.5, -32.0], "expected": -31.999999999999996}, {"input": [-65.5, -31.5], "expected": -31.5}, {"input": [-65.5, -31.0], "expected": -31.0}, {"input": [-65.5, -30.5], "expected": -30.5}, {"input": [-65.5, -30.0], "expected": -30.0}, {"input": [-65.5, -29.5], "expected": -29.5}, {"input": [-65.5, -29.0], "expected": -29.0}, {"input": [-65.5, -28.5], "expected": -28.5}, {"input": [-65.5, -28.0], "expected": -28.0}, {"input": [-65.5, -27.5], "expected": -27.5}, {"input": [-65.5, -27.0], "expected": -27.0}, {"input": [-65.5, -26.5], "expected": -26.5}, {"input": [-65.5, -26.0], "expected": -26.0}, {"input": [-65.5, -25.5], "expected": -25.5}, {"input": [-65.5, -25.0], "expected": -25.0}, {"input": [-65.5, -24.5], "expected": -24.5}, {"input": [-65.5, -24.0], "expected": -24.0}, {"input": [-65.5, -23.5], "expected": -23.5}, {"input": [-65.5, -23.0], "expected": -23.0}, {"input": [-65.5, -22.5], "expected": -22.5}, {"input": [-65.5, -22.0], "expected": -22.0}, {"input": [-65.5, -21.5], "expected": -21.5}, {"input": [-65.5, -21.0], "expected": -21.0}, {"input": [-65.5, -20.5], "expected": -20.5}, {"input": [-65.5, -20.0], "expected": -20.0}, {"input": [-65.5, -19.5], "expected": -19.5}, {"input": [-65.5, -19.0], "expected": -19.0}, {"input": [-65.5, -18.5], "expected": -18.5}, {"input": [-65.5, -18.0], "expected": -18.0}, {"input": [-65.5, -17.5], "expected": -17.5}, {"input": [-65.5, -17.0], "expected": -17.0}, {"input": [-65.5, -16.5], "expected": -16.5}, {"input": [-65.5, -16.0], "expected": -16.0}, {"input": [-65.5, -15.5], "expected": -15.5}, {"input": [-65.5, -15.0], "expected": -15.0}, {"input": [-65.5, -14.5], "expected": -14.5}, {"input": [-65.5, -14.0], "expected": -14.0}, {"input": [-65.5, -13.5], "expected": -13.5}, {"input": [-65.5, -13.0], "expected": -13.0}, {"input": [-65.5, -12.5], "expected": -12.5}, {"input": [-65.5, -12.0], "expected": -12.0}, {"input": [-65.5, -11.5], "expected": -11.5}, {"input": [-65.5, -11.0], "expected": -11.0}, {"input": [-65.5, -10.5], "expected": -10.5}, {"input": [-65.5, -10.0], "expected": -10.0}, {"input": [-65.5, -9.5], "expected": -9.5}, {"input": [-65.5, -9.0], "expected": -9.0}, {"input": [-65.5, -8.5], "expected": -8.5}, {"input": [-65.5, -8.0], "expected": -8.0}, {"input": [-65.5, -7.5], "expected": -7.5}, {"input": [-65.5, -7.0], "expected": -7.0}, {"input": [-65.5, -6.5], "expected": -6.5}, {"input": [-65.5, -6.0], "expected": -6.0}, {"input": [-65.5, -5.5], "expected": -5.5}, {"input": [-65.5, -5.0], "expected": -5.0}, {"input": [-65.5, -4.5], "expected": -4.5}, {"input": [-65.5, -4.0], "expected": -4.0}, {"input": [-65.5, -3.5], "expected": -3.5}, {"input": [-65.5, -3.0], "expected": -3.0}, {"input": [-65.5, -2.5], "expected": -2.5}, {"input": [-65.5, -2.0], "expected": -2.0}, {"input": [-65.5, -1.5], "expected": -1.5}, {"input": [-65.5, -1.0], "expected": -1.0}, {"input": [-65.5, -0.5], "expected": -0.5}, {"input": [-65.5, 0.0], "expected": 3.578585808559134e-29}, {"input": [-65.5, 0.5], "expected": 0.5}, {"input": [-65.5, 1.0], "expected": 1.0}, {"input": [-65.5, 1.5], "expected": 1.5}, {"input": [-65.5, 2.0], "expected": 2.0}, {"input": [-65.5, 2.5], "expected": 2.5}, {"input": [-65.5, 3.0], "expected": 3.0}, {"input": [-65.5, 3.5], "expected": 3.5}, {"input": [-65.5, 4.0], "expected": 4.0}, {"input": [-65.5, 4.5], "expected": 4.5}, {"input": [-65.5, 5.0], "expected": 5.0}, {"input": [-65.5, 5.5], "expected": 5.5}, {"input": [-65.5, 6.0], "expected": 6.0}, {"input": [-65.5, 6.5], "expected": 6.5}, {"input": [-65.5, 7.0], "expected": 7.0}, {"input": [-65.5, 7.5], "expected": 7.5}, {"input": [-65.5, 8.0], "expected": 8.0}, {"input": [-65.5, 8.5], "expected": 8.5}, {"input": [-65.5, 9.0], "expected": 9.0}, {"input": [-65.5, 9.5], "expected": 9.5}, {"input": [-65.5, 10.0], "expected": 10.0}, {"input": [-65.5, 10.5], "expected": 10.5}, {"input": [-65.5, 11.0], "expected": 11.0}, {"input": [-65.5, 11.5], "expected": 11.5}, {"input": [-65.5, 12.0], "expected": 12.0}, {"input": [-65.5, 12.5], "expected": 12.5}, {"input": [-65.5, 13.0], "expected": 13.0}, {"input": [-65.5, 13.5], "expected": 13.5}, {"input": [-65.5, 14.0], "expected": 14.0}, {"input": [-65.5, 14.5], "expected": 14.5}, {"input": [-65.5, 15.0], "expected": 15.0}, {"input": [-65.5, 15.5], "expected": 15.5}, {"input": [-65.5, 16.0], "expected": 16.0}, {"input": [-65.5, 16.5], "expected": 16.5}, {"input": [-65.5, 17.0], "expected": 17.0}, {"input": [-65.5, 17.5], "expected": 17.5}, {"input": [-65.5, 18.0], "expected": 18.0}, {"input": [-65.5, 18.5], "expected": 18.5}, {"input": [-65.5, 19.0], "expected": 19.0}, {"input": [-65.5, 19.5], "expected": 19.5}, {"input": [-65.5, 20.0], "expected": 20.0}, {"input": [-65.5, 20.5], "expected": 20.5}, {"input": [-65.5, 21.0], "expected": 21.0}, {"input": [-65.5, 21.5], "expected": 21.5}, {"input": [-65.5, 22.0], "expected": 22.0}, {"input": [-65.5, 22.5], "expected": 22.5}, {"input": [-65.5, 23.0], "expected": 23.0}, {"input": [-65.5, 23.5], "expected": 23.5}, {"input": [-65.5, 24.0], "expected": 24.0}, {"input": [-65.5, 24.5], "expected": 24.5}, {"input": [-65.5, 25.0], "expected": 25.0}, {"input": [-65.5, 25.5], "expected": 25.5}, {"input": [-65.5, 26.0], "expected": 26.0}, {"input": [-65.5, 26.5], "expected": 26.5}, {"input": [-65.5, 27.0], "expected": 27.0}, {"input": [-65.5, 27.5], "expected": 27.5}, {"input": [-65.5, 28.0], "expected": 28.0}, {"input": [-65.5, 28.5], "expected": 28.5}, {"input": [-65.5, 29.0], "expected": 29.0}, {"input": [-65.5, 29.5], "expected": 29.5}, {"input": [-65.5, 30.0], "expected": 30.0}, {"input": [-65.5, 30.5], "expected": 30.5}, {"input": [-65.5, 31.0], "expected": 31.0}, {"input": [-65.5, 31.5], "expected": 31.5}, {"input": [-65.5, 32.0], "expected": 32.0}, {"input": [-65.5, 32.5], "expected": 32.5}, {"input": [-65.5, 33.0], "expected": 33.0}, {"input": [-65.5, 33.5], "expected": 33.5}, {"input": [-65.5, 34.0], "expected": 34.0}, {"input": [-65.5, 34.5], "expected": 34.5}, {"input": [-65.5, 35.0], "expected": 35.0}, {"input": [-65.5, 35.5], "expected": 35.5}, {"input": [-65.5, 36.0], "expected": 36.0}, {"input": [-65.5, 36.5], "expected": 36.5}, {"input": [-65.5, 37.0], "expected": 37.0}, {"input": [-65.5, 37.5], "expected": 37.5}, {"input": [-65.5, 38.0], "expected": 38.0}, {"input": [-65.5, 38.5], "expected": 38.5}, {"input": [-65.5, 39.0], "expected": 39.0}, {"input": [-65.5, 39.5], "expected": 39.5}, {"input": [-65.5, 40.0], "expected": 40.0}, {"input": [-65.5, 40.5], "expected": 40.5}, {"input": [-65.5, 41.0], "expected": 41.0}, {"input": [-65.5, 41.5], "expected": 41.5}, {"input": [-65.5, 42.0], "expected": 42.0}, {"input": [-65.5, 42.5], "expected": 42.5}, {"input": [-65.5, 43.0], "expected": 43.0}, {"input": [-65.5, 43.5], "expected": 43.5}, {"input": [-65.5, 44.0], "expected": 44.0}, {"input": [-65.5, 44.5], "expected": 44.5}, {"input": [-65.5, 45.0], "expected": 45.0}, {"input": [-65.5, 45.5], "expected": 45.5}, {"input": [-65.5, 46.0], "expected": 46.0}, {"input": [-65.5, 46.5], "expected": 46.5}, {"input": [-65.5, 47.0], "expected": 47.0}, {"input": [-65.5, 47.5], "expected": 47.5}, {"input": [-65.5, 48.0], "expected": 48.0}, {"input": [-65.5, 48.5], "expected": 48.5}, {"input": [-65.5, 49.0], "expected": 49.0}, {"input": [-65.5, 49.5], "expected": 49.5}, {"input": [-65.5, 50.0], "expected": 50.0}, {"input": [-65.5, 50.5], "expected": 50.5}, {"input": [-65.5, 51.0], "expected": 51.0}, {"input": [-65.5, 51.5], "expected": 51.5}, {"input": [-65.5, 52.0], "expected": 52.0}, {"input": [-65.5, 52.5], "expected": 52.5}, {"input": [-65.5, 53.0], "expected": 53.0}, {"input": [-65.5, 53.5], "expected": 53.5}, {"input": [-65.5, 54.0], "expected": 54.0}, {"input": [-65.5, 54.5], "expected": 54.5}, {"input": [-65.5, 55.0], "expected": 55.0}, {"input": [-65.5, 55.5], "expected": 55.5}, {"input": [-65.5, 56.0], "expected": 56.0}, {"input": [-65.5, 56.5], "expected": 56.5}, {"input": [-65.5, 57.0], "expected": 57.0}, {"input": [-65.5, 57.5], "expected": 57.5}, {"input": [-65.5, 58.0], "expected": 58.0}, {"input": [-65.5, 58.5], "expected": 58.5}, {"input": [-65.5, 59.0], "expected": 59.0}, {"input": [-65.5, 59.5], "expected": 59.5}, {"input": [-65.5, 60.0], "expected": 60.0}, {"input": [-65.5, 60.5], "expected": 60.5}, {"input": [-65.5, 61.0], "expected": 61.0}, {"input": [-65.5, 61.5], "expected": 61.5}, {"input": [-65.5, 62.0], "expected": 62.0}, {"input": [-65.5, 62.5], "expected": 62.5}, {"input": [-65.5, 63.0], "expected": 63.0}, {"input": [-65.5, 63.5], "expected": 63.5}, {"input": [-65.5, 64.0], "expected": 64.0}, {"input": [-65.5, 64.5], "expected": 64.5}, {"input": [-65.5, 65.0], "expected": 65.0}, {"input": [-65.5, 65.5], "expected": 65.5}, {"input": [-65.5, 66.0], "expected": 66.0}, {"input": [-65.5, 66.5], "expected": 66.5}, {"input": [-65.5, 67.0], "expected": 67.0}, {"input": [-65.5, 67.5], "expected": 67.5}, {"input": [-65.5, 68.0], "expected": 68.0}, {"input": [-65.5, 68.5], "expected": 68.5}, {"input": [-65.5, 69.0], "expected": 69.0}, {"input": [-65.5, 69.5], "expected": 69.5}, {"input": [-65.5, 70.0], "expected": 70.0}, {"input": [-65.5, 70.5], "expected": 70.5}, {"input": [-65.5, 71.0], "expected": 71.0}, {"input": [-65.5, 71.5], "expected": 71.5}, {"input": [-65.5, 72.0], "expected": 72.0}, {"input": [-65.5, 72.5], "expected": 72.5}, {"input": [-65.5, 73.0], "expected": 73.0}, {"input": [-65.5, 73.5], "expected": 73.5}, {"input": [-65.5, 74.0], "expected": 74.0}, {"input": [-65.5, 74.5], "expected": 74.5}, {"input": [-65.5, 75.0], "expected": 75.0}, {"input": [-65.5, 75.5], "expected": 75.5}, {"input": [-65.5, 76.0], "expected": 76.0}, {"input": [-65.5, 76.5], "expected": 76.5}, {"input": [-65.5, 77.0], "expected": 77.0}, {"input": [-65.5, 77.5], "expected": 77.5}, {"input": [-65.5, 78.0], "expected": 78.0}, {"input": [-65.5, 78.5], "expected": 78.5}, {"input": [-65.5, 79.0], "expected": 79.0}, {"input": [-65.5, 79.5], "expected": 79.5}, {"input": [-65.5, 80.0], "expected": 80.0}, {"input": [-65.5, 80.5], "expected": 80.5}, {"input": [-65.5, 81.0], "expected": 81.0}, {"input": [-65.5, 81.5], "expected": 81.5}, {"input": [-65.5, 82.0], "expected": 82.0}, {"input": [-65.5, 82.5], "expected": 82.5}, {"input": [-65.5, 83.0], "expected": 83.0}, {"input": [-65.5, 83.5], "expected": 83.5}, {"input": [-65.5, 84.0], "expected": 84.0}, {"input": [-65.5, 84.5], "expected": 84.5}, {"input": [-65.5, 85.0], "expected": 85.0}, {"input": [-65.5, 85.5], "expected": 85.5}, {"input": [-65.5, 86.0], "expected": 86.0}, {"input": [-65.5, 86.5], "expected": 86.5}, {"input": [-65.5, 87.0], "expected": 87.0}, {"input": [-65.5, 87.5], "expected": 87.5}, {"input": [-65.5, 88.0], "expected": 88.0}, {"input": [-65.5, 88.5], "expected": 88.5}, {"input": [-65.5, 89.0], "expected": 89.0}, {"input": [-65.5, 89.5], "expected": 89.5}, {"input": [-65.5, 90.0], "expected": 90.0}, {"input": [-65.5, 90.5], "expected": 90.5}, {"input": [-65.5, 91.0], "expected": 91.0}, {"input": [-65.5, 91.5], "expected": 91.5}, {"input": [-65.5, 92.0], "expected": 92.0}, {"input": [-65.5, 92.5], "expected": 92.5}, {"input": [-65.5, 93.0], "expected": 93.0}, {"input": [-65.5, 93.5], "expected": 93.5}, {"input": [-65.5, 94.0], "expected": 94.0}, {"input": [-65.5, 94.5], "expected": 94.5}, {"input": [-65.5, 95.0], "expected": 95.0}, {"input": [-65.5, 95.5], "expected": 95.5}, {"input": [-65.5, 96.0], "expected": 96.0}, {"input": [-65.5, 96.5], "expected": 96.5}, {"input": [-65.5, 97.0], "expected": 97.0}, {"input": [-65.5, 97.5], "expected": 97.5}, {"input": [-65.5, 98.0], "expected": 98.0}, {"input": [-65.5, 98.5], "expected": 98.5}, {"input": [-65.5, 99.0], "expected": 99.0}, {"input": [-65.5, 99.5], "expected": 99.5}, {"input": [-65.0, -100.0], "expected": -65.0}, {"input": [-65.0, -99.5], "expected": -65.0}, {"input": [-65.0, -99.0], "expected": -65.0}, {"input": [-65.0, -98.5], "expected": -65.0}, {"input": [-65.0, -98.0], "expected": -65.0}, {"input": [-65.0, -97.5], "expected": -64.99999999999999}, {"input": [-65.0, -97.0], "expected": -64.99999999999999}, {"input": [-65.0, -96.5], "expected": -64.99999999999999}, {"input": [-65.0, -96.0], "expected": -64.99999999999997}, {"input": [-65.0, -95.5], "expected": -64.99999999999994}, {"input": [-65.0, -95.0], "expected": -64.9999999999999}, {"input": [-65.0, -94.5], "expected": -64.99999999999984}, {"input": [-65.0, -94.0], "expected": -64.99999999999974}, {"input": [-65.0, -93.5], "expected": -64.99999999999957}, {"input": [-65.0, -93.0], "expected": -64.9999999999993}, {"input": [-65.0, -92.5], "expected": -64.99999999999886}, {"input": [-65.0, -92.0], "expected": -64.99999999999812}, {"input": [-65.0, -91.5], "expected": -64.9999999999969}, {"input": [-65.0, -91.0], "expected": -64.99999999999488}, {"input": [-65.0, -90.5], "expected": -64.99999999999157}, {"input": [-65.0, -90.0], "expected": -64.99999999998612}, {"input": [-65.0, -89.5], "expected": -64.9999999999771}, {"input": [-65.0, -89.0], "expected": -64.99999999996224}, {"input": [-65.0, -88.5], "expected": -64.99999999993776}, {"input": [-65.0, -88.0], "expected": -64.99999999989738}, {"input": [-65.0, -87.5], "expected": -64.9999999998308}, {"input": [-65.0, -87.0], "expected": -64.99999999972106}, {"input": [-65.0, -86.5], "expected": -64.9999999995401}, {"input": [-65.0, -86.0], "expected": -64.99999999924174}, {"input": [-65.0, -85.5], "expected": -64.99999999874984}, {"input": [-65.0, -85.0], "expected": -64.99999999793884}, {"input": [-65.0, -84.5], "expected": -64.99999999660173}, {"input": [-65.0, -84.0], "expected": -64.9999999943972}, {"input": [-65.0, -83.5], "expected": -64.99999999076255}, {"input": [-65.0, -83.0], "expected": -64.99999998477001}, {"input": [-65.0, -82.5], "expected": -64.99999997489}, {"input": [-65.0, -82.0], "expected": -64.99999995860063}, {"input": [-65.0, -81.5], "expected": -64.99999993174397}, {"input": [-65.0, -81.0], "expected": -64.99999988746484}, {"input": [-65.0, -80.5], "expected": -64.99999981446088}, {"input": [-65.0, -80.0], "expected": -64.99999969409772}, {"input": [-65.0, -79.5], "expected": -64.99999949565246}, {"input": [-65.0, -79.0], "expected": -64.99999916847163}, {"input": [-65.0, -78.5], "expected": -64.99999862904185}, {"input": [-65.0, -78.0], "expected": -64.99999773967315}, {"input": [-65.0, -77.5], "expected": -64.99999627335377}, {"input": [-65.0, -77.0], "expected": -64.99999385580652}, {"input": [-65.0, -76.5], "expected": -64.99998986995772}, {"input": [-65.0, -76.0], "expected": -64.99998329843868}, {"input": [-65.0, -75.5], "expected": -64.99997246392977}, {"input": [-65.0, -75.0], "expected": -64.99995460110078}, {"input": [-65.0, -74.5], "expected": -64.99992515097136}, {"input": [-65.0, -74.0], "expected": -64.99987659781027}, {"input": [-65.0, -73.5], "expected": -64.99979655232787}, {"input": [-65.0, -73.0], "expected": -64.9996645936271}, {"input": [-65.0, -72.5], "expected": -64.99944706852465}, {"input": [-65.0, -72.0], "expected": -64.99908853354623}, {"input": [-65.0, -71.5], "expected": -64.99849768984025}, {"input": [-65.0, -71.0], "expected": -64.99752431486228}, {"input": [-65.0, -70.5], "expected": -64.99592155672943}, {"input": [-65.0, -70.0], "expected": -64.99328465151088}, {"input": [-65.0, -69.5], "expected": -64.9889522551514}, {"input": [-65.0, -69.0], "expected": -64.9818500720822}, {"input": [-65.0, -68.5], "expected": -64.97024958172737}, {"input": [-65.0, -68.0], "expected": -64.95141264842626}, {"input": [-65.0, -67.5], "expected": -64.92111026570745}, {"input": [-65.0, -67.0], "expected": -64.87307198895702}, {"input": [-65.0, -66.5], "expected": -64.79858672201725}, {"input": [-65.0, -66.0], "expected": -64.68673831248178}, {"input": [-65.0, -65.5], "expected": -64.5259230158199}, {"input": [-65.0, -65.0], "expected": -64.30685281944005}, {"input": [-65.0, -64.5], "expected": -64.0259230158199}, {"input": [-65.0, -64.0], "expected": -63.68673831248178}, {"input": [-65.0, -63.5], "expected": -63.29858672201725}, {"input": [-65.0, -63.0], "expected": -62.87307198895703}, {"input": [-65.0, -62.5], "expected": -62.42111026570745}, {"input": [-65.0, -62.0], "expected": -61.951412648426256}, {"input": [-65.0, -61.5], "expected": -61.47024958172738}, {"input": [-65.0, -61.0], "expected": -60.98185007208219}, {"input": [-65.0, -60.5], "expected": -60.4889522551514}, {"input": [-65.0, -60.0], "expected": -59.99328465151088}, {"input": [-65.0, -59.5], "expected": -59.49592155672943}, {"input": [-65.0, -59.0], "expected": -58.99752431486227}, {"input": [-65.0, -58.5], "expected": -58.49849768984024}, {"input": [-65.0, -58.0], "expected": -57.99908853354623}, {"input": [-65.0, -57.5], "expected": -57.49944706852464}, {"input": [-65.0, -57.0], "expected": -56.9996645936271}, {"input": [-65.0, -56.5], "expected": -56.49979655232787}, {"input": [-65.0, -56.0], "expected": -55.99987659781028}, {"input": [-65.0, -55.5], "expected": -55.49992515097137}, {"input": [-65.0, -55.0], "expected": -54.99995460110078}, {"input": [-65.0, -54.5], "expected": -54.49997246392977}, {"input": [-65.0, -54.0], "expected": -53.99998329843868}, {"input": [-65.0, -53.5], "expected": -53.49998986995771}, {"input": [-65.0, -53.0], "expected": -52.99999385580652}, {"input": [-65.0, -52.5], "expected": -52.49999627335377}, {"input": [-65.0, -52.0], "expected": -51.99999773967315}, {"input": [-65.0, -51.5], "expected": -51.499998629041855}, {"input": [-65.0, -51.0], "expected": -50.999999168471625}, {"input": [-65.0, -50.5], "expected": -50.49999949565247}, {"input": [-65.0, -50.0], "expected": -49.999999694097724}, {"input": [-65.0, -49.5], "expected": -49.49999981446088}, {"input": [-65.0, -49.0], "expected": -48.99999988746483}, {"input": [-65.0, -48.5], "expected": -48.49999993174397}, {"input": [-65.0, -48.0], "expected": -47.999999958600625}, {"input": [-65.0, -47.5], "expected": -47.49999997489001}, {"input": [-65.0, -47.0], "expected": -46.99999998477002}, {"input": [-65.0, -46.5], "expected": -46.499999990762554}, {"input": [-65.0, -46.0], "expected": -45.99999999439721}, {"input": [-65.0, -45.5], "expected": -45.49999999660173}, {"input": [-65.0, -45.0], "expected": -44.99999999793884}, {"input": [-65.0, -44.5], "expected": -44.49999999874985}, {"input": [-65.0, -44.0], "expected": -43.999999999241744}, {"input": [-65.0, -43.5], "expected": -43.499999999540094}, {"input": [-65.0, -43.0], "expected": -42.999999999721055}, {"input": [-65.0, -42.5], "expected": -42.49999999983081}, {"input": [-65.0, -42.0], "expected": -41.99999999989738}, {"input": [-65.0, -41.5], "expected": -41.49999999993776}, {"input": [-65.0, -41.0], "expected": -40.99999999996225}, {"input": [-65.0, -40.5], "expected": -40.4999999999771}, {"input": [-65.0, -40.0], "expected": -39.99999999998611}, {"input": [-65.0, -39.5], "expected": -39.49999999999158}, {"input": [-65.0, -39.0], "expected": -38.99999999999489}, {"input": [-65.0, -38.5], "expected": -38.4999999999969}, {"input": [-65.0, -38.0], "expected": -37.99999999999812}, {"input": [-65.0, -37.5], "expected": -37.49999999999886}, {"input": [-65.0, -37.0], "expected": -36.99999999999931}, {"input": [-65.0, -36.5], "expected": -36.49999999999958}, {"input": [-65.0, -36.0], "expected": -35.999999999999744}, {"input": [-65.0, -35.5], "expected": -35.499999999999844}, {"input": [-65.0, -35.0], "expected": -34.99999999999991}, {"input": [-65.0, -34.5], "expected": -34.49999999999994}, {"input": [-65.0, -34.0], "expected": -33.999999999999964}, {"input": [-65.0, -33.5], "expected": -33.49999999999998}, {"input": [-65.0, -33.0], "expected": -32.999999999999986}, {"input": [-65.0, -32.5], "expected": -32.49999999999999}, {"input": [-65.0, -32.0], "expected": -31.999999999999996}, {"input": [-65.0, -31.5], "expected": -31.499999999999996}, {"input": [-65.0, -31.0], "expected": -31.0}, {"input": [-65.0, -30.5], "expected": -30.5}, {"input": [-65.0, -30.0], "expected": -30.0}, {"input": [-65.0, -29.5], "expected": -29.5}, {"input": [-65.0, -29.0], "expected": -29.0}, {"input": [-65.0, -28.5], "expected": -28.5}, {"input": [-65.0, -28.0], "expected": -28.0}, {"input": [-65.0, -27.5], "expected": -27.5}, {"input": [-65.0, -27.0], "expected": -27.0}, {"input": [-65.0, -26.5], "expected": -26.5}, {"input": [-65.0, -26.0], "expected": -26.0}, {"input": [-65.0, -25.5], "expected": -25.5}, {"input": [-65.0, -25.0], "expected": -25.0}, {"input": [-65.0, -24.5], "expected": -24.5}, {"input": [-65.0, -24.0], "expected": -24.0}, {"input": [-65.0, -23.5], "expected": -23.5}, {"input": [-65.0, -23.0], "expected": -23.0}, {"input": [-65.0, -22.5], "expected": -22.5}, {"input": [-65.0, -22.0], "expected": -22.0}, {"input": [-65.0, -21.5], "expected": -21.5}, {"input": [-65.0, -21.0], "expected": -21.0}, {"input": [-65.0, -20.5], "expected": -20.5}, {"input": [-65.0, -20.0], "expected": -20.0}, {"input": [-65.0, -19.5], "expected": -19.5}, {"input": [-65.0, -19.0], "expected": -19.0}, {"input": [-65.0, -18.5], "expected": -18.5}, {"input": [-65.0, -18.0], "expected": -18.0}, {"input": [-65.0, -17.5], "expected": -17.5}, {"input": [-65.0, -17.0], "expected": -17.0}, {"input": [-65.0, -16.5], "expected": -16.5}, {"input": [-65.0, -16.0], "expected": -16.0}, {"input": [-65.0, -15.5], "expected": -15.5}, {"input": [-65.0, -15.0], "expected": -15.0}, {"input": [-65.0, -14.5], "expected": -14.5}, {"input": [-65.0, -14.0], "expected": -14.0}, {"input": [-65.0, -13.5], "expected": -13.5}, {"input": [-65.0, -13.0], "expected": -13.0}, {"input": [-65.0, -12.5], "expected": -12.5}, {"input": [-65.0, -12.0], "expected": -12.0}, {"input": [-65.0, -11.5], "expected": -11.5}, {"input": [-65.0, -11.0], "expected": -11.0}, {"input": [-65.0, -10.5], "expected": -10.5}, {"input": [-65.0, -10.0], "expected": -10.0}, {"input": [-65.0, -9.5], "expected": -9.5}, {"input": [-65.0, -9.0], "expected": -9.0}, {"input": [-65.0, -8.5], "expected": -8.5}, {"input": [-65.0, -8.0], "expected": -8.0}, {"input": [-65.0, -7.5], "expected": -7.5}, {"input": [-65.0, -7.0], "expected": -7.0}, {"input": [-65.0, -6.5], "expected": -6.5}, {"input": [-65.0, -6.0], "expected": -6.0}, {"input": [-65.0, -5.5], "expected": -5.5}, {"input": [-65.0, -5.0], "expected": -5.0}, {"input": [-65.0, -4.5], "expected": -4.5}, {"input": [-65.0, -4.0], "expected": -4.0}, {"input": [-65.0, -3.5], "expected": -3.5}, {"input": [-65.0, -3.0], "expected": -3.0}, {"input": [-65.0, -2.5], "expected": -2.5}, {"input": [-65.0, -2.0], "expected": -2.0}, {"input": [-65.0, -1.5], "expected": -1.5}, {"input": [-65.0, -1.0], "expected": -1.0}, {"input": [-65.0, -0.5], "expected": -0.5}, {"input": [-65.0, 0.0], "expected": 5.900090541597061e-29}, {"input": [-65.0, 0.5], "expected": 0.5}, {"input": [-65.0, 1.0], "expected": 1.0}, {"input": [-65.0, 1.5], "expected": 1.5}, {"input": [-65.0, 2.0], "expected": 2.0}, {"input": [-65.0, 2.5], "expected": 2.5}, {"input": [-65.0, 3.0], "expected": 3.0}, {"input": [-65.0, 3.5], "expected": 3.5}, {"input": [-65.0, 4.0], "expected": 4.0}, {"input": [-65.0, 4.5], "expected": 4.5}, {"input": [-65.0, 5.0], "expected": 5.0}, {"input": [-65.0, 5.5], "expected": 5.5}, {"input": [-65.0, 6.0], "expected": 6.0}, {"input": [-65.0, 6.5], "expected": 6.5}, {"input": [-65.0, 7.0], "expected": 7.0}, {"input": [-65.0, 7.5], "expected": 7.5}, {"input": [-65.0, 8.0], "expected": 8.0}, {"input": [-65.0, 8.5], "expected": 8.5}, {"input": [-65.0, 9.0], "expected": 9.0}, {"input": [-65.0, 9.5], "expected": 9.5}, {"input": [-65.0, 10.0], "expected": 10.0}, {"input": [-65.0, 10.5], "expected": 10.5}, {"input": [-65.0, 11.0], "expected": 11.0}, {"input": [-65.0, 11.5], "expected": 11.5}, {"input": [-65.0, 12.0], "expected": 12.0}, {"input": [-65.0, 12.5], "expected": 12.5}, {"input": [-65.0, 13.0], "expected": 13.0}, {"input": [-65.0, 13.5], "expected": 13.5}, {"input": [-65.0, 14.0], "expected": 14.0}, {"input": [-65.0, 14.5], "expected": 14.5}, {"input": [-65.0, 15.0], "expected": 15.0}, {"input": [-65.0, 15.5], "expected": 15.5}, {"input": [-65.0, 16.0], "expected": 16.0}, {"input": [-65.0, 16.5], "expected": 16.5}, {"input": [-65.0, 17.0], "expected": 17.0}, {"input": [-65.0, 17.5], "expected": 17.5}, {"input": [-65.0, 18.0], "expected": 18.0}, {"input": [-65.0, 18.5], "expected": 18.5}, {"input": [-65.0, 19.0], "expected": 19.0}, {"input": [-65.0, 19.5], "expected": 19.5}, {"input": [-65.0, 20.0], "expected": 20.0}, {"input": [-65.0, 20.5], "expected": 20.5}, {"input": [-65.0, 21.0], "expected": 21.0}, {"input": [-65.0, 21.5], "expected": 21.5}, {"input": [-65.0, 22.0], "expected": 22.0}, {"input": [-65.0, 22.5], "expected": 22.5}, {"input": [-65.0, 23.0], "expected": 23.0}, {"input": [-65.0, 23.5], "expected": 23.5}, {"input": [-65.0, 24.0], "expected": 24.0}, {"input": [-65.0, 24.5], "expected": 24.5}, {"input": [-65.0, 25.0], "expected": 25.0}, {"input": [-65.0, 25.5], "expected": 25.5}, {"input": [-65.0, 26.0], "expected": 26.0}, {"input": [-65.0, 26.5], "expected": 26.5}, {"input": [-65.0, 27.0], "expected": 27.0}, {"input": [-65.0, 27.5], "expected": 27.5}, {"input": [-65.0, 28.0], "expected": 28.0}, {"input": [-65.0, 28.5], "expected": 28.5}, {"input": [-65.0, 29.0], "expected": 29.0}, {"input": [-65.0, 29.5], "expected": 29.5}, {"input": [-65.0, 30.0], "expected": 30.0}, {"input": [-65.0, 30.5], "expected": 30.5}, {"input": [-65.0, 31.0], "expected": 31.0}, {"input": [-65.0, 31.5], "expected": 31.5}, {"input": [-65.0, 32.0], "expected": 32.0}, {"input": [-65.0, 32.5], "expected": 32.5}, {"input": [-65.0, 33.0], "expected": 33.0}, {"input": [-65.0, 33.5], "expected": 33.5}, {"input": [-65.0, 34.0], "expected": 34.0}, {"input": [-65.0, 34.5], "expected": 34.5}, {"input": [-65.0, 35.0], "expected": 35.0}, {"input": [-65.0, 35.5], "expected": 35.5}, {"input": [-65.0, 36.0], "expected": 36.0}, {"input": [-65.0, 36.5], "expected": 36.5}, {"input": [-65.0, 37.0], "expected": 37.0}, {"input": [-65.0, 37.5], "expected": 37.5}, {"input": [-65.0, 38.0], "expected": 38.0}, {"input": [-65.0, 38.5], "expected": 38.5}, {"input": [-65.0, 39.0], "expected": 39.0}, {"input": [-65.0, 39.5], "expected": 39.5}, {"input": [-65.0, 40.0], "expected": 40.0}, {"input": [-65.0, 40.5], "expected": 40.5}, {"input": [-65.0, 41.0], "expected": 41.0}, {"input": [-65.0, 41.5], "expected": 41.5}, {"input": [-65.0, 42.0], "expected": 42.0}, {"input": [-65.0, 42.5], "expected": 42.5}, {"input": [-65.0, 43.0], "expected": 43.0}, {"input": [-65.0, 43.5], "expected": 43.5}, {"input": [-65.0, 44.0], "expected": 44.0}, {"input": [-65.0, 44.5], "expected": 44.5}, {"input": [-65.0, 45.0], "expected": 45.0}, {"input": [-65.0, 45.5], "expected": 45.5}, {"input": [-65.0, 46.0], "expected": 46.0}, {"input": [-65.0, 46.5], "expected": 46.5}, {"input": [-65.0, 47.0], "expected": 47.0}, {"input": [-65.0, 47.5], "expected": 47.5}, {"input": [-65.0, 48.0], "expected": 48.0}, {"input": [-65.0, 48.5], "expected": 48.5}, {"input": [-65.0, 49.0], "expected": 49.0}, {"input": [-65.0, 49.5], "expected": 49.5}, {"input": [-65.0, 50.0], "expected": 50.0}, {"input": [-65.0, 50.5], "expected": 50.5}, {"input": [-65.0, 51.0], "expected": 51.0}, {"input": [-65.0, 51.5], "expected": 51.5}, {"input": [-65.0, 52.0], "expected": 52.0}, {"input": [-65.0, 52.5], "expected": 52.5}, {"input": [-65.0, 53.0], "expected": 53.0}, {"input": [-65.0, 53.5], "expected": 53.5}, {"input": [-65.0, 54.0], "expected": 54.0}, {"input": [-65.0, 54.5], "expected": 54.5}, {"input": [-65.0, 55.0], "expected": 55.0}, {"input": [-65.0, 55.5], "expected": 55.5}, {"input": [-65.0, 56.0], "expected": 56.0}, {"input": [-65.0, 56.5], "expected": 56.5}, {"input": [-65.0, 57.0], "expected": 57.0}, {"input": [-65.0, 57.5], "expected": 57.5}, {"input": [-65.0, 58.0], "expected": 58.0}, {"input": [-65.0, 58.5], "expected": 58.5}, {"input": [-65.0, 59.0], "expected": 59.0}, {"input": [-65.0, 59.5], "expected": 59.5}, {"input": [-65.0, 60.0], "expected": 60.0}, {"input": [-65.0, 60.5], "expected": 60.5}, {"input": [-65.0, 61.0], "expected": 61.0}, {"input": [-65.0, 61.5], "expected": 61.5}, {"input": [-65.0, 62.0], "expected": 62.0}, {"input": [-65.0, 62.5], "expected": 62.5}, {"input": [-65.0, 63.0], "expected": 63.0}, {"input": [-65.0, 63.5], "expected": 63.5}, {"input": [-65.0, 64.0], "expected": 64.0}, {"input": [-65.0, 64.5], "expected": 64.5}, {"input": [-65.0, 65.0], "expected": 65.0}, {"input": [-65.0, 65.5], "expected": 65.5}, {"input": [-65.0, 66.0], "expected": 66.0}, {"input": [-65.0, 66.5], "expected": 66.5}, {"input": [-65.0, 67.0], "expected": 67.0}, {"input": [-65.0, 67.5], "expected": 67.5}, {"input": [-65.0, 68.0], "expected": 68.0}, {"input": [-65.0, 68.5], "expected": 68.5}, {"input": [-65.0, 69.0], "expected": 69.0}, {"input": [-65.0, 69.5], "expected": 69.5}, {"input": [-65.0, 70.0], "expected": 70.0}, {"input": [-65.0, 70.5], "expected": 70.5}, {"input": [-65.0, 71.0], "expected": 71.0}, {"input": [-65.0, 71.5], "expected": 71.5}, {"input": [-65.0, 72.0], "expected": 72.0}, {"input": [-65.0, 72.5], "expected": 72.5}, {"input": [-65.0, 73.0], "expected": 73.0}, {"input": [-65.0, 73.5], "expected": 73.5}, {"input": [-65.0, 74.0], "expected": 74.0}, {"input": [-65.0, 74.5], "expected": 74.5}, {"input": [-65.0, 75.0], "expected": 75.0}, {"input": [-65.0, 75.5], "expected": 75.5}, {"input": [-65.0, 76.0], "expected": 76.0}, {"input": [-65.0, 76.5], "expected": 76.5}, {"input": [-65.0, 77.0], "expected": 77.0}, {"input": [-65.0, 77.5], "expected": 77.5}, {"input": [-65.0, 78.0], "expected": 78.0}, {"input": [-65.0, 78.5], "expected": 78.5}, {"input": [-65.0, 79.0], "expected": 79.0}, {"input": [-65.0, 79.5], "expected": 79.5}, {"input": [-65.0, 80.0], "expected": 80.0}, {"input": [-65.0, 80.5], "expected": 80.5}, {"input": [-65.0, 81.0], "expected": 81.0}, {"input": [-65.0, 81.5], "expected": 81.5}, {"input": [-65.0, 82.0], "expected": 82.0}, {"input": [-65.0, 82.5], "expected": 82.5}, {"input": [-65.0, 83.0], "expected": 83.0}, {"input": [-65.0, 83.5], "expected": 83.5}, {"input": [-65.0, 84.0], "expected": 84.0}, {"input": [-65.0, 84.5], "expected": 84.5}, {"input": [-65.0, 85.0], "expected": 85.0}, {"input": [-65.0, 85.5], "expected": 85.5}, {"input": [-65.0, 86.0], "expected": 86.0}, {"input": [-65.0, 86.5], "expected": 86.5}, {"input": [-65.0, 87.0], "expected": 87.0}, {"input": [-65.0, 87.5], "expected": 87.5}, {"input": [-65.0, 88.0], "expected": 88.0}, {"input": [-65.0, 88.5], "expected": 88.5}, {"input": [-65.0, 89.0], "expected": 89.0}, {"input": [-65.0, 89.5], "expected": 89.5}, {"input": [-65.0, 90.0], "expected": 90.0}, {"input": [-65.0, 90.5], "expected": 90.5}, {"input": [-65.0, 91.0], "expected": 91.0}, {"input": [-65.0, 91.5], "expected": 91.5}, {"input": [-65.0, 92.0], "expected": 92.0}, {"input": [-65.0, 92.5], "expected": 92.5}, {"input": [-65.0, 93.0], "expected": 93.0}, {"input": [-65.0, 93.5], "expected": 93.5}, {"input": [-65.0, 94.0], "expected": 94.0}, {"input": [-65.0, 94.5], "expected": 94.5}, {"input": [-65.0, 95.0], "expected": 95.0}, {"input": [-65.0, 95.5], "expected": 95.5}, {"input": [-65.0, 96.0], "expected": 96.0}, {"input": [-65.0, 96.5], "expected": 96.5}, {"input": [-65.0, 97.0], "expected": 97.0}, {"input": [-65.0, 97.5], "expected": 97.5}, {"input": [-65.0, 98.0], "expected": 98.0}, {"input": [-65.0, 98.5], "expected": 98.5}, {"input": [-65.0, 99.0], "expected": 99.0}, {"input": [-65.0, 99.5], "expected": 99.5}, {"input": [-64.5, -100.0], "expected": -64.5}, {"input": [-64.5, -99.5], "expected": -64.5}, {"input": [-64.5, -99.0], "expected": -64.5}, {"input": [-64.5, -98.5], "expected": -64.5}, {"input": [-64.5, -98.0], "expected": -64.5}, {"input": [-64.5, -97.5], "expected": -64.5}, {"input": [-64.5, -97.0], "expected": -64.49999999999999}, {"input": [-64.5, -96.5], "expected": -64.49999999999999}, {"input": [-64.5, -96.0], "expected": -64.49999999999999}, {"input": [-64.5, -95.5], "expected": -64.49999999999997}, {"input": [-64.5, -95.0], "expected": -64.49999999999994}, {"input": [-64.5, -94.5], "expected": -64.4999999999999}, {"input": [-64.5, -94.0], "expected": -64.49999999999984}, {"input": [-64.5, -93.5], "expected": -64.49999999999974}, {"input": [-64.5, -93.0], "expected": -64.49999999999957}, {"input": [-64.5, -92.5], "expected": -64.4999999999993}, {"input": [-64.5, -92.0], "expected": -64.49999999999886}, {"input": [-64.5, -91.5], "expected": -64.49999999999812}, {"input": [-64.5, -91.0], "expected": -64.4999999999969}, {"input": [-64.5, -90.5], "expected": -64.49999999999488}, {"input": [-64.5, -90.0], "expected": -64.49999999999157}, {"input": [-64.5, -89.5], "expected": -64.49999999998612}, {"input": [-64.5, -89.0], "expected": -64.4999999999771}, {"input": [-64.5, -88.5], "expected": -64.49999999996224}, {"input": [-64.5, -88.0], "expected": -64.49999999993776}, {"input": [-64.5, -87.5], "expected": -64.49999999989738}, {"input": [-64.5, -87.0], "expected": -64.4999999998308}, {"input": [-64.5, -86.5], "expected": -64.49999999972106}, {"input": [-64.5, -86.0], "expected": -64.4999999995401}, {"input": [-64.5, -85.5], "expected": -64.49999999924174}, {"input": [-64.5, -85.0], "expected": -64.49999999874984}, {"input": [-64.5, -84.5], "expected": -64.49999999793884}, {"input": [-64.5, -84.0], "expected": -64.49999999660173}, {"input": [-64.5, -83.5], "expected": -64.4999999943972}, {"input": [-64.5, -83.0], "expected": -64.49999999076255}, {"input": [-64.5, -82.5], "expected": -64.49999998477001}, {"input": [-64.5, -82.0], "expected": -64.49999997489}, {"input": [-64.5, -81.5], "expected": -64.49999995860063}, {"input": [-64.5, -81.0], "expected": -64.49999993174397}, {"input": [-64.5, -80.5], "expected": -64.49999988746484}, {"input": [-64.5, -80.0], "expected": -64.49999981446088}, {"input": [-64.5, -79.5], "expected": -64.49999969409772}, {"input": [-64.5, -79.0], "expected": -64.49999949565246}, {"input": [-64.5, -78.5], "expected": -64.49999916847163}, {"input": [-64.5, -78.0], "expected": -64.49999862904185}, {"input": [-64.5, -77.5], "expected": -64.49999773967315}, {"input": [-64.5, -77.0], "expected": -64.49999627335377}, {"input": [-64.5, -76.5], "expected": -64.49999385580652}, {"input": [-64.5, -76.0], "expected": -64.49998986995772}, {"input": [-64.5, -75.5], "expected": -64.49998329843868}, {"input": [-64.5, -75.0], "expected": -64.49997246392977}, {"input": [-64.5, -74.5], "expected": -64.49995460110078}, {"input": [-64.5, -74.0], "expected": -64.49992515097136}, {"input": [-64.5, -73.5], "expected": -64.49987659781027}, {"input": [-64.5, -73.0], "expected": -64.49979655232787}, {"input": [-64.5, -72.5], "expected": -64.4996645936271}, {"input": [-64.5, -72.0], "expected": -64.49944706852465}, {"input": [-64.5, -71.5], "expected": -64.49908853354623}, {"input": [-64.5, -71.0], "expected": -64.49849768984025}, {"input": [-64.5, -70.5], "expected": -64.49752431486228}, {"input": [-64.5, -70.0], "expected": -64.49592155672943}, {"input": [-64.5, -69.5], "expected": -64.49328465151088}, {"input": [-64.5, -69.0], "expected": -64.4889522551514}, {"input": [-64.5, -68.5], "expected": -64.4818500720822}, {"input": [-64.5, -68.0], "expected": -64.47024958172737}, {"input": [-64.5, -67.5], "expected": -64.45141264842626}, {"input": [-64.5, -67.0], "expected": -64.42111026570745}, {"input": [-64.5, -66.5], "expected": -64.37307198895702}, {"input": [-64.5, -66.0], "expected": -64.29858672201725}, {"input": [-64.5, -65.5], "expected": -64.18673831248178}, {"input": [-64.5, -65.0], "expected": -64.0259230158199}, {"input": [-64.5, -64.5], "expected": -63.80685281944005}, {"input": [-64.5, -64.0], "expected": -63.52592301581989}, {"input": [-64.5, -63.5], "expected": -63.18673831248178}, {"input": [-64.5, -63.0], "expected": -62.79858672201725}, {"input": [-64.5, -62.5], "expected": -62.37307198895703}, {"input": [-64.5, -62.0], "expected": -61.92111026570745}, {"input": [-64.5, -61.5], "expected": -61.451412648426256}, {"input": [-64.5, -61.0], "expected": -60.97024958172738}, {"input": [-64.5, -60.5], "expected": -60.48185007208219}, {"input": [-64.5, -60.0], "expected": -59.9889522551514}, {"input": [-64.5, -59.5], "expected": -59.49328465151088}, {"input": [-64.5, -59.0], "expected": -58.99592155672943}, {"input": [-64.5, -58.5], "expected": -58.49752431486227}, {"input": [-64.5, -58.0], "expected": -57.99849768984024}, {"input": [-64.5, -57.5], "expected": -57.49908853354623}, {"input": [-64.5, -57.0], "expected": -56.99944706852464}, {"input": [-64.5, -56.5], "expected": -56.4996645936271}, {"input": [-64.5, -56.0], "expected": -55.99979655232787}, {"input": [-64.5, -55.5], "expected": -55.49987659781028}, {"input": [-64.5, -55.0], "expected": -54.99992515097137}, {"input": [-64.5, -54.5], "expected": -54.49995460110078}, {"input": [-64.5, -54.0], "expected": -53.99997246392977}, {"input": [-64.5, -53.5], "expected": -53.49998329843868}, {"input": [-64.5, -53.0], "expected": -52.99998986995771}, {"input": [-64.5, -52.5], "expected": -52.49999385580652}, {"input": [-64.5, -52.0], "expected": -51.99999627335377}, {"input": [-64.5, -51.5], "expected": -51.49999773967315}, {"input": [-64.5, -51.0], "expected": -50.999998629041855}, {"input": [-64.5, -50.5], "expected": -50.499999168471625}, {"input": [-64.5, -50.0], "expected": -49.99999949565247}, {"input": [-64.5, -49.5], "expected": -49.499999694097724}, {"input": [-64.5, -49.0], "expected": -48.99999981446088}, {"input": [-64.5, -48.5], "expected": -48.49999988746483}, {"input": [-64.5, -48.0], "expected": -47.99999993174397}, {"input": [-64.5, -47.5], "expected": -47.499999958600625}, {"input": [-64.5, -47.0], "expected": -46.99999997489001}, {"input": [-64.5, -46.5], "expected": -46.49999998477002}, {"input": [-64.5, -46.0], "expected": -45.999999990762554}, {"input": [-64.5, -45.5], "expected": -45.49999999439721}, {"input": [-64.5, -45.0], "expected": -44.99999999660173}, {"input": [-64.5, -44.5], "expected": -44.49999999793884}, {"input": [-64.5, -44.0], "expected": -43.99999999874985}, {"input": [-64.5, -43.5], "expected": -43.499999999241744}, {"input": [-64.5, -43.0], "expected": -42.999999999540094}, {"input": [-64.5, -42.5], "expected": -42.499999999721055}, {"input": [-64.5, -42.0], "expected": -41.99999999983081}, {"input": [-64.5, -41.5], "expected": -41.49999999989738}, {"input": [-64.5, -41.0], "expected": -40.99999999993776}, {"input": [-64.5, -40.5], "expected": -40.49999999996225}, {"input": [-64.5, -40.0], "expected": -39.9999999999771}, {"input": [-64.5, -39.5], "expected": -39.49999999998611}, {"input": [-64.5, -39.0], "expected": -38.99999999999158}, {"input": [-64.5, -38.5], "expected": -38.49999999999489}, {"input": [-64.5, -38.0], "expected": -37.9999999999969}, {"input": [-64.5, -37.5], "expected": -37.49999999999812}, {"input": [-64.5, -37.0], "expected": -36.99999999999886}, {"input": [-64.5, -36.5], "expected": -36.49999999999931}, {"input": [-64.5, -36.0], "expected": -35.99999999999958}, {"input": [-64.5, -35.5], "expected": -35.499999999999744}, {"input": [-64.5, -35.0], "expected": -34.999999999999844}, {"input": [-64.5, -34.5], "expected": -34.49999999999991}, {"input": [-64.5, -34.0], "expected": -33.99999999999994}, {"input": [-64.5, -33.5], "expected": -33.499999999999964}, {"input": [-64.5, -33.0], "expected": -32.99999999999998}, {"input": [-64.5, -32.5], "expected": -32.499999999999986}, {"input": [-64.5, -32.0], "expected": -31.999999999999993}, {"input": [-64.5, -31.5], "expected": -31.499999999999996}, {"input": [-64.5, -31.0], "expected": -30.999999999999996}, {"input": [-64.5, -30.5], "expected": -30.5}, {"input": [-64.5, -30.0], "expected": -30.0}, {"input": [-64.5, -29.5], "expected": -29.5}, {"input": [-64.5, -29.0], "expected": -29.0}, {"input": [-64.5, -28.5], "expected": -28.5}, {"input": [-64.5, -28.0], "expected": -28.0}, {"input": [-64.5, -27.5], "expected": -27.5}, {"input": [-64.5, -27.0], "expected": -27.0}, {"input": [-64.5, -26.5], "expected": -26.5}, {"input": [-64.5, -26.0], "expected": -26.0}, {"input": [-64.5, -25.5], "expected": -25.5}, {"input": [-64.5, -25.0], "expected": -25.0}, {"input": [-64.5, -24.5], "expected": -24.5}, {"input": [-64.5, -24.0], "expected": -24.0}, {"input": [-64.5, -23.5], "expected": -23.5}, {"input": [-64.5, -23.0], "expected": -23.0}, {"input": [-64.5, -22.5], "expected": -22.5}, {"input": [-64.5, -22.0], "expected": -22.0}, {"input": [-64.5, -21.5], "expected": -21.5}, {"input": [-64.5, -21.0], "expected": -21.0}, {"input": [-64.5, -20.5], "expected": -20.5}, {"input": [-64.5, -20.0], "expected": -20.0}, {"input": [-64.5, -19.5], "expected": -19.5}, {"input": [-64.5, -19.0], "expected": -19.0}, {"input": [-64.5, -18.5], "expected": -18.5}, {"input": [-64.5, -18.0], "expected": -18.0}, {"input": [-64.5, -17.5], "expected": -17.5}, {"input": [-64.5, -17.0], "expected": -17.0}, {"input": [-64.5, -16.5], "expected": -16.5}, {"input": [-64.5, -16.0], "expected": -16.0}, {"input": [-64.5, -15.5], "expected": -15.5}, {"input": [-64.5, -15.0], "expected": -15.0}, {"input": [-64.5, -14.5], "expected": -14.5}, {"input": [-64.5, -14.0], "expected": -14.0}, {"input": [-64.5, -13.5], "expected": -13.5}, {"input": [-64.5, -13.0], "expected": -13.0}, {"input": [-64.5, -12.5], "expected": -12.5}, {"input": [-64.5, -12.0], "expected": -12.0}, {"input": [-64.5, -11.5], "expected": -11.5}, {"input": [-64.5, -11.0], "expected": -11.0}, {"input": [-64.5, -10.5], "expected": -10.5}, {"input": [-64.5, -10.0], "expected": -10.0}, {"input": [-64.5, -9.5], "expected": -9.5}, {"input": [-64.5, -9.0], "expected": -9.0}, {"input": [-64.5, -8.5], "expected": -8.5}, {"input": [-64.5, -8.0], "expected": -8.0}, {"input": [-64.5, -7.5], "expected": -7.5}, {"input": [-64.5, -7.0], "expected": -7.0}, {"input": [-64.5, -6.5], "expected": -6.5}, {"input": [-64.5, -6.0], "expected": -6.0}, {"input": [-64.5, -5.5], "expected": -5.5}, {"input": [-64.5, -5.0], "expected": -5.0}, {"input": [-64.5, -4.5], "expected": -4.5}, {"input": [-64.5, -4.0], "expected": -4.0}, {"input": [-64.5, -3.5], "expected": -3.5}, {"input": [-64.5, -3.0], "expected": -3.0}, {"input": [-64.5, -2.5], "expected": -2.5}, {"input": [-64.5, -2.0], "expected": -2.0}, {"input": [-64.5, -1.5], "expected": -1.5}, {"input": [-64.5, -1.0], "expected": -1.0}, {"input": [-64.5, -0.5], "expected": -0.5}, {"input": [-64.5, 0.0], "expected": 9.727604774987714e-29}, {"input": [-64.5, 0.5], "expected": 0.5}, {"input": [-64.5, 1.0], "expected": 1.0}, {"input": [-64.5, 1.5], "expected": 1.5}, {"input": [-64.5, 2.0], "expected": 2.0}, {"input": [-64.5, 2.5], "expected": 2.5}, {"input": [-64.5, 3.0], "expected": 3.0}, {"input": [-64.5, 3.5], "expected": 3.5}, {"input": [-64.5, 4.0], "expected": 4.0}, {"input": [-64.5, 4.5], "expected": 4.5}, {"input": [-64.5, 5.0], "expected": 5.0}, {"input": [-64.5, 5.5], "expected": 5.5}, {"input": [-64.5, 6.0], "expected": 6.0}, {"input": [-64.5, 6.5], "expected": 6.5}, {"input": [-64.5, 7.0], "expected": 7.0}, {"input": [-64.5, 7.5], "expected": 7.5}, {"input": [-64.5, 8.0], "expected": 8.0}, {"input": [-64.5, 8.5], "expected": 8.5}, {"input": [-64.5, 9.0], "expected": 9.0}, {"input": [-64.5, 9.5], "expected": 9.5}, {"input": [-64.5, 10.0], "expected": 10.0}, {"input": [-64.5, 10.5], "expected": 10.5}, {"input": [-64.5, 11.0], "expected": 11.0}, {"input": [-64.5, 11.5], "expected": 11.5}, {"input": [-64.5, 12.0], "expected": 12.0}, {"input": [-64.5, 12.5], "expected": 12.5}, {"input": [-64.5, 13.0], "expected": 13.0}, {"input": [-64.5, 13.5], "expected": 13.5}, {"input": [-64.5, 14.0], "expected": 14.0}, {"input": [-64.5, 14.5], "expected": 14.5}, {"input": [-64.5, 15.0], "expected": 15.0}, {"input": [-64.5, 15.5], "expected": 15.5}, {"input": [-64.5, 16.0], "expected": 16.0}, {"input": [-64.5, 16.5], "expected": 16.5}, {"input": [-64.5, 17.0], "expected": 17.0}, {"input": [-64.5, 17.5], "expected": 17.5}, {"input": [-64.5, 18.0], "expected": 18.0}, {"input": [-64.5, 18.5], "expected": 18.5}, {"input": [-64.5, 19.0], "expected": 19.0}, {"input": [-64.5, 19.5], "expected": 19.5}, {"input": [-64.5, 20.0], "expected": 20.0}, {"input": [-64.5, 20.5], "expected": 20.5}, {"input": [-64.5, 21.0], "expected": 21.0}, {"input": [-64.5, 21.5], "expected": 21.5}, {"input": [-64.5, 22.0], "expected": 22.0}, {"input": [-64.5, 22.5], "expected": 22.5}, {"input": [-64.5, 23.0], "expected": 23.0}, {"input": [-64.5, 23.5], "expected": 23.5}, {"input": [-64.5, 24.0], "expected": 24.0}, {"input": [-64.5, 24.5], "expected": 24.5}, {"input": [-64.5, 25.0], "expected": 25.0}, {"input": [-64.5, 25.5], "expected": 25.5}, {"input": [-64.5, 26.0], "expected": 26.0}, {"input": [-64.5, 26.5], "expected": 26.5}, {"input": [-64.5, 27.0], "expected": 27.0}, {"input": [-64.5, 27.5], "expected": 27.5}, {"input": [-64.5, 28.0], "expected": 28.0}, {"input": [-64.5, 28.5], "expected": 28.5}, {"input": [-64.5, 29.0], "expected": 29.0}, {"input": [-64.5, 29.5], "expected": 29.5}, {"input": [-64.5, 30.0], "expected": 30.0}, {"input": [-64.5, 30.5], "expected": 30.5}, {"input": [-64.5, 31.0], "expected": 31.0}, {"input": [-64.5, 31.5], "expected": 31.5}, {"input": [-64.5, 32.0], "expected": 32.0}, {"input": [-64.5, 32.5], "expected": 32.5}, {"input": [-64.5, 33.0], "expected": 33.0}, {"input": [-64.5, 33.5], "expected": 33.5}, {"input": [-64.5, 34.0], "expected": 34.0}, {"input": [-64.5, 34.5], "expected": 34.5}, {"input": [-64.5, 35.0], "expected": 35.0}, {"input": [-64.5, 35.5], "expected": 35.5}, {"input": [-64.5, 36.0], "expected": 36.0}, {"input": [-64.5, 36.5], "expected": 36.5}, {"input": [-64.5, 37.0], "expected": 37.0}, {"input": [-64.5, 37.5], "expected": 37.5}, {"input": [-64.5, 38.0], "expected": 38.0}, {"input": [-64.5, 38.5], "expected": 38.5}, {"input": [-64.5, 39.0], "expected": 39.0}, {"input": [-64.5, 39.5], "expected": 39.5}, {"input": [-64.5, 40.0], "expected": 40.0}, {"input": [-64.5, 40.5], "expected": 40.5}, {"input": [-64.5, 41.0], "expected": 41.0}, {"input": [-64.5, 41.5], "expected": 41.5}, {"input": [-64.5, 42.0], "expected": 42.0}, {"input": [-64.5, 42.5], "expected": 42.5}, {"input": [-64.5, 43.0], "expected": 43.0}, {"input": [-64.5, 43.5], "expected": 43.5}, {"input": [-64.5, 44.0], "expected": 44.0}, {"input": [-64.5, 44.5], "expected": 44.5}, {"input": [-64.5, 45.0], "expected": 45.0}, {"input": [-64.5, 45.5], "expected": 45.5}, {"input": [-64.5, 46.0], "expected": 46.0}, {"input": [-64.5, 46.5], "expected": 46.5}, {"input": [-64.5, 47.0], "expected": 47.0}, {"input": [-64.5, 47.5], "expected": 47.5}, {"input": [-64.5, 48.0], "expected": 48.0}, {"input": [-64.5, 48.5], "expected": 48.5}, {"input": [-64.5, 49.0], "expected": 49.0}, {"input": [-64.5, 49.5], "expected": 49.5}, {"input": [-64.5, 50.0], "expected": 50.0}, {"input": [-64.5, 50.5], "expected": 50.5}, {"input": [-64.5, 51.0], "expected": 51.0}, {"input": [-64.5, 51.5], "expected": 51.5}, {"input": [-64.5, 52.0], "expected": 52.0}, {"input": [-64.5, 52.5], "expected": 52.5}, {"input": [-64.5, 53.0], "expected": 53.0}, {"input": [-64.5, 53.5], "expected": 53.5}, {"input": [-64.5, 54.0], "expected": 54.0}, {"input": [-64.5, 54.5], "expected": 54.5}, {"input": [-64.5, 55.0], "expected": 55.0}, {"input": [-64.5, 55.5], "expected": 55.5}, {"input": [-64.5, 56.0], "expected": 56.0}, {"input": [-64.5, 56.5], "expected": 56.5}, {"input": [-64.5, 57.0], "expected": 57.0}, {"input": [-64.5, 57.5], "expected": 57.5}, {"input": [-64.5, 58.0], "expected": 58.0}, {"input": [-64.5, 58.5], "expected": 58.5}, {"input": [-64.5, 59.0], "expected": 59.0}, {"input": [-64.5, 59.5], "expected": 59.5}, {"input": [-64.5, 60.0], "expected": 60.0}, {"input": [-64.5, 60.5], "expected": 60.5}, {"input": [-64.5, 61.0], "expected": 61.0}, {"input": [-64.5, 61.5], "expected": 61.5}, {"input": [-64.5, 62.0], "expected": 62.0}, {"input": [-64.5, 62.5], "expected": 62.5}, {"input": [-64.5, 63.0], "expected": 63.0}, {"input": [-64.5, 63.5], "expected": 63.5}, {"input": [-64.5, 64.0], "expected": 64.0}, {"input": [-64.5, 64.5], "expected": 64.5}, {"input": [-64.5, 65.0], "expected": 65.0}, {"input": [-64.5, 65.5], "expected": 65.5}, {"input": [-64.5, 66.0], "expected": 66.0}, {"input": [-64.5, 66.5], "expected": 66.5}, {"input": [-64.5, 67.0], "expected": 67.0}, {"input": [-64.5, 67.5], "expected": 67.5}, {"input": [-64.5, 68.0], "expected": 68.0}, {"input": [-64.5, 68.5], "expected": 68.5}, {"input": [-64.5, 69.0], "expected": 69.0}, {"input": [-64.5, 69.5], "expected": 69.5}, {"input": [-64.5, 70.0], "expected": 70.0}, {"input": [-64.5, 70.5], "expected": 70.5}, {"input": [-64.5, 71.0], "expected": 71.0}, {"input": [-64.5, 71.5], "expected": 71.5}, {"input": [-64.5, 72.0], "expected": 72.0}, {"input": [-64.5, 72.5], "expected": 72.5}, {"input": [-64.5, 73.0], "expected": 73.0}, {"input": [-64.5, 73.5], "expected": 73.5}, {"input": [-64.5, 74.0], "expected": 74.0}, {"input": [-64.5, 74.5], "expected": 74.5}, {"input": [-64.5, 75.0], "expected": 75.0}, {"input": [-64.5, 75.5], "expected": 75.5}, {"input": [-64.5, 76.0], "expected": 76.0}, {"input": [-64.5, 76.5], "expected": 76.5}, {"input": [-64.5, 77.0], "expected": 77.0}, {"input": [-64.5, 77.5], "expected": 77.5}, {"input": [-64.5, 78.0], "expected": 78.0}, {"input": [-64.5, 78.5], "expected": 78.5}, {"input": [-64.5, 79.0], "expected": 79.0}, {"input": [-64.5, 79.5], "expected": 79.5}, {"input": [-64.5, 80.0], "expected": 80.0}, {"input": [-64.5, 80.5], "expected": 80.5}, {"input": [-64.5, 81.0], "expected": 81.0}, {"input": [-64.5, 81.5], "expected": 81.5}, {"input": [-64.5, 82.0], "expected": 82.0}, {"input": [-64.5, 82.5], "expected": 82.5}, {"input": [-64.5, 83.0], "expected": 83.0}, {"input": [-64.5, 83.5], "expected": 83.5}, {"input": [-64.5, 84.0], "expected": 84.0}, {"input": [-64.5, 84.5], "expected": 84.5}, {"input": [-64.5, 85.0], "expected": 85.0}, {"input": [-64.5, 85.5], "expected": 85.5}, {"input": [-64.5, 86.0], "expected": 86.0}, {"input": [-64.5, 86.5], "expected": 86.5}, {"input": [-64.5, 87.0], "expected": 87.0}, {"input": [-64.5, 87.5], "expected": 87.5}, {"input": [-64.5, 88.0], "expected": 88.0}, {"input": [-64.5, 88.5], "expected": 88.5}, {"input": [-64.5, 89.0], "expected": 89.0}, {"input": [-64.5, 89.5], "expected": 89.5}, {"input": [-64.5, 90.0], "expected": 90.0}, {"input": [-64.5, 90.5], "expected": 90.5}, {"input": [-64.5, 91.0], "expected": 91.0}, {"input": [-64.5, 91.5], "expected": 91.5}, {"input": [-64.5, 92.0], "expected": 92.0}, {"input": [-64.5, 92.5], "expected": 92.5}, {"input": [-64.5, 93.0], "expected": 93.0}, {"input": [-64.5, 93.5], "expected": 93.5}, {"input": [-64.5, 94.0], "expected": 94.0}, {"input": [-64.5, 94.5], "expected": 94.5}, {"input": [-64.5, 95.0], "expected": 95.0}, {"input": [-64.5, 95.5], "expected": 95.5}, {"input": [-64.5, 96.0], "expected": 96.0}, {"input": [-64.5, 96.5], "expected": 96.5}, {"input": [-64.5, 97.0], "expected": 97.0}, {"input": [-64.5, 97.5], "expected": 97.5}, {"input": [-64.5, 98.0], "expected": 98.0}, {"input": [-64.5, 98.5], "expected": 98.5}, {"input": [-64.5, 99.0], "expected": 99.0}, {"input": [-64.5, 99.5], "expected": 99.5}, {"input": [-64.0, -100.0], "expected": -64.0}, {"input": [-64.0, -99.5], "expected": -64.0}, {"input": [-64.0, -99.0], "expected": -64.0}, {"input": [-64.0, -98.5], "expected": -64.0}, {"input": [-64.0, -98.0], "expected": -64.0}, {"input": [-64.0, -97.5], "expected": -64.0}, {"input": [-64.0, -97.0], "expected": -63.99999999999999}, {"input": [-64.0, -96.5], "expected": -63.99999999999999}, {"input": [-64.0, -96.0], "expected": -63.999999999999986}, {"input": [-64.0, -95.5], "expected": -63.99999999999998}, {"input": [-64.0, -95.0], "expected": -63.999999999999964}, {"input": [-64.0, -94.5], "expected": -63.99999999999994}, {"input": [-64.0, -94.0], "expected": -63.99999999999991}, {"input": [-64.0, -93.5], "expected": -63.999999999999844}, {"input": [-64.0, -93.0], "expected": -63.999999999999744}, {"input": [-64.0, -92.5], "expected": -63.99999999999958}, {"input": [-64.0, -92.0], "expected": -63.99999999999931}, {"input": [-64.0, -91.5], "expected": -63.99999999999886}, {"input": [-64.0, -91.0], "expected": -63.99999999999812}, {"input": [-64.0, -90.5], "expected": -63.9999999999969}, {"input": [-64.0, -90.0], "expected": -63.99999999999489}, {"input": [-64.0, -89.5], "expected": -63.99999999999158}, {"input": [-64.0, -89.0], "expected": -63.99999999998611}, {"input": [-64.0, -88.5], "expected": -63.9999999999771}, {"input": [-64.0, -88.0], "expected": -63.99999999996225}, {"input": [-64.0, -87.5], "expected": -63.99999999993776}, {"input": [-64.0, -87.0], "expected": -63.99999999989738}, {"input": [-64.0, -86.5], "expected": -63.99999999983081}, {"input": [-64.0, -86.0], "expected": -63.999999999721055}, {"input": [-64.0, -85.5], "expected": -63.999999999540094}, {"input": [-64.0, -85.0], "expected": -63.999999999241744}, {"input": [-64.0, -84.5], "expected": -63.99999999874985}, {"input": [-64.0, -84.0], "expected": -63.99999999793884}, {"input": [-64.0, -83.5], "expected": -63.99999999660173}, {"input": [-64.0, -83.0], "expected": -63.99999999439721}, {"input": [-64.0, -82.5], "expected": -63.999999990762554}, {"input": [-64.0, -82.0], "expected": -63.99999998477002}, {"input": [-64.0, -81.5], "expected": -63.99999997489001}, {"input": [-64.0, -81.0], "expected": -63.999999958600625}, {"input": [-64.0, -80.5], "expected": -63.99999993174397}, {"input": [-64.0, -80.0], "expected": -63.99999988746483}, {"input": [-64.0, -79.5], "expected": -63.99999981446088}, {"input": [-64.0, -79.0], "expected": -63.999999694097724}, {"input": [-64.0, -78.5], "expected": -63.99999949565247}, {"input": [-64.0, -78.0], "expected": -63.999999168471625}, {"input": [-64.0, -77.5], "expected": -63.999998629041855}, {"input": [-64.0, -77.0], "expected": -63.99999773967315}, {"input": [-64.0, -76.5], "expected": -63.99999627335377}, {"input": [-64.0, -76.0], "expected": -63.99999385580652}, {"input": [-64.0, -75.5], "expected": -63.99998986995771}, {"input": [-64.0, -75.0], "expected": -63.99998329843868}, {"input": [-64.0, -74.5], "expected": -63.99997246392977}, {"input": [-64.0, -74.0], "expected": -63.99995460110078}, {"input": [-64.0, -73.5], "expected": -63.99992515097137}, {"input": [-64.0, -73.0], "expected": -63.99987659781028}, {"input": [-64.0, -72.5], "expected": -63.99979655232787}, {"input": [-64.0, -72.0], "expected": -63.9996645936271}, {"input": [-64.0, -71.5], "expected": -63.99944706852464}, {"input": [-64.0, -71.0], "expected": -63.99908853354623}, {"input": [-64.0, -70.5], "expected": -63.99849768984024}, {"input": [-64.0, -70.0], "expected": -63.99752431486227}, {"input": [-64.0, -69.5], "expected": -63.99592155672943}, {"input": [-64.0, -69.0], "expected": -63.99328465151088}, {"input": [-64.0, -68.5], "expected": -63.9889522551514}, {"input": [-64.0, -68.0], "expected": -63.98185007208219}, {"input": [-64.0, -67.5], "expected": -63.97024958172738}, {"input": [-64.0, -67.0], "expected": -63.951412648426256}, {"input": [-64.0, -66.5], "expected": -63.92111026570745}, {"input": [-64.0, -66.0], "expected": -63.87307198895703}, {"input": [-64.0, -65.5], "expected": -63.79858672201725}, {"input": [-64.0, -65.0], "expected": -63.68673831248178}, {"input": [-64.0, -64.5], "expected": -63.52592301581989}, {"input": [-64.0, -64.0], "expected": -63.30685281944005}, {"input": [-64.0, -63.5], "expected": -63.02592301581989}, {"input": [-64.0, -63.0], "expected": -62.68673831248178}, {"input": [-64.0, -62.5], "expected": -62.29858672201725}, {"input": [-64.0, -62.0], "expected": -61.87307198895703}, {"input": [-64.0, -61.5], "expected": -61.42111026570745}, {"input": [-64.0, -61.0], "expected": -60.951412648426256}, {"input": [-64.0, -60.5], "expected": -60.47024958172738}, {"input": [-64.0, -60.0], "expected": -59.98185007208219}, {"input": [-64.0, -59.5], "expected": -59.4889522551514}, {"input": [-64.0, -59.0], "expected": -58.99328465151088}, {"input": [-64.0, -58.5], "expected": -58.49592155672943}, {"input": [-64.0, -58.0], "expected": -57.99752431486227}, {"input": [-64.0, -57.5], "expected": -57.49849768984024}, {"input": [-64.0, -57.0], "expected": -56.99908853354623}, {"input": [-64.0, -56.5], "expected": -56.49944706852464}, {"input": [-64.0, -56.0], "expected": -55.9996645936271}, {"input": [-64.0, -55.5], "expected": -55.49979655232787}, {"input": [-64.0, -55.0], "expected": -54.99987659781028}, {"input": [-64.0, -54.5], "expected": -54.49992515097137}, {"input": [-64.0, -54.0], "expected": -53.99995460110078}, {"input": [-64.0, -53.5], "expected": -53.49997246392977}, {"input": [-64.0, -53.0], "expected": -52.99998329843868}, {"input": [-64.0, -52.5], "expected": -52.49998986995771}, {"input": [-64.0, -52.0], "expected": -51.99999385580652}, {"input": [-64.0, -51.5], "expected": -51.49999627335377}, {"input": [-64.0, -51.0], "expected": -50.99999773967315}, {"input": [-64.0, -50.5], "expected": -50.499998629041855}, {"input": [-64.0, -50.0], "expected": -49.999999168471625}, {"input": [-64.0, -49.5], "expected": -49.49999949565247}, {"input": [-64.0, -49.0], "expected": -48.999999694097724}, {"input": [-64.0, -48.5], "expected": -48.49999981446088}, {"input": [-64.0, -48.0], "expected": -47.99999988746483}, {"input": [-64.0, -47.5], "expected": -47.49999993174397}, {"input": [-64.0, -47.0], "expected": -46.999999958600625}, {"input": [-64.0, -46.5], "expected": -46.49999997489001}, {"input": [-64.0, -46.0], "expected": -45.99999998477002}, {"input": [-64.0, -45.5], "expected": -45.499999990762554}, {"input": [-64.0, -45.0], "expected": -44.99999999439721}, {"input": [-64.0, -44.5], "expected": -44.49999999660173}, {"input": [-64.0, -44.0], "expected": -43.99999999793884}, {"input": [-64.0, -43.5], "expected": -43.49999999874985}, {"input": [-64.0, -43.0], "expected": -42.999999999241744}, {"input": [-64.0, -42.5], "expected": -42.499999999540094}, {"input": [-64.0, -42.0], "expected": -41.999999999721055}, {"input": [-64.0, -41.5], "expected": -41.49999999983081}, {"input": [-64.0, -41.0], "expected": -40.99999999989738}, {"input": [-64.0, -40.5], "expected": -40.49999999993776}, {"input": [-64.0, -40.0], "expected": -39.99999999996225}, {"input": [-64.0, -39.5], "expected": -39.4999999999771}, {"input": [-64.0, -39.0], "expected": -38.99999999998611}, {"input": [-64.0, -38.5], "expected": -38.49999999999158}, {"input": [-64.0, -38.0], "expected": -37.99999999999489}, {"input": [-64.0, -37.5], "expected": -37.4999999999969}, {"input": [-64.0, -37.0], "expected": -36.99999999999812}, {"input": [-64.0, -36.5], "expected": -36.49999999999886}, {"input": [-64.0, -36.0], "expected": -35.99999999999931}, {"input": [-64.0, -35.5], "expected": -35.49999999999958}, {"input": [-64.0, -35.0], "expected": -34.999999999999744}, {"input": [-64.0, -34.5], "expected": -34.499999999999844}, {"input": [-64.0, -34.0], "expected": -33.99999999999991}, {"input": [-64.0, -33.5], "expected": -33.49999999999994}, {"input": [-64.0, -33.0], "expected": -32.999999999999964}, {"input": [-64.0, -32.5], "expected": -32.49999999999998}, {"input": [-64.0, -32.0], "expected": -31.999999999999986}, {"input": [-64.0, -31.5], "expected": -31.499999999999993}, {"input": [-64.0, -31.0], "expected": -30.999999999999996}, {"input": [-64.0, -30.5], "expected": -30.499999999999996}, {"input": [-64.0, -30.0], "expected": -30.0}, {"input": [-64.0, -29.5], "expected": -29.5}, {"input": [-64.0, -29.0], "expected": -29.0}, {"input": [-64.0, -28.5], "expected": -28.5}, {"input": [-64.0, -28.0], "expected": -28.0}, {"input": [-64.0, -27.5], "expected": -27.5}, {"input": [-64.0, -27.0], "expected": -27.0}, {"input": [-64.0, -26.5], "expected": -26.5}, {"input": [-64.0, -26.0], "expected": -26.0}, {"input": [-64.0, -25.5], "expected": -25.5}, {"input": [-64.0, -25.0], "expected": -25.0}, {"input": [-64.0, -24.5], "expected": -24.5}, {"input": [-64.0, -24.0], "expected": -24.0}, {"input": [-64.0, -23.5], "expected": -23.5}, {"input": [-64.0, -23.0], "expected": -23.0}, {"input": [-64.0, -22.5], "expected": -22.5}, {"input": [-64.0, -22.0], "expected": -22.0}, {"input": [-64.0, -21.5], "expected": -21.5}, {"input": [-64.0, -21.0], "expected": -21.0}, {"input": [-64.0, -20.5], "expected": -20.5}, {"input": [-64.0, -20.0], "expected": -20.0}, {"input": [-64.0, -19.5], "expected": -19.5}, {"input": [-64.0, -19.0], "expected": -19.0}, {"input": [-64.0, -18.5], "expected": -18.5}, {"input": [-64.0, -18.0], "expected": -18.0}, {"input": [-64.0, -17.5], "expected": -17.5}, {"input": [-64.0, -17.0], "expected": -17.0}, {"input": [-64.0, -16.5], "expected": -16.5}, {"input": [-64.0, -16.0], "expected": -16.0}, {"input": [-64.0, -15.5], "expected": -15.5}, {"input": [-64.0, -15.0], "expected": -15.0}, {"input": [-64.0, -14.5], "expected": -14.5}, {"input": [-64.0, -14.0], "expected": -14.0}, {"input": [-64.0, -13.5], "expected": -13.5}, {"input": [-64.0, -13.0], "expected": -13.0}, {"input": [-64.0, -12.5], "expected": -12.5}, {"input": [-64.0, -12.0], "expected": -12.0}, {"input": [-64.0, -11.5], "expected": -11.5}, {"input": [-64.0, -11.0], "expected": -11.0}, {"input": [-64.0, -10.5], "expected": -10.5}, {"input": [-64.0, -10.0], "expected": -10.0}, {"input": [-64.0, -9.5], "expected": -9.5}, {"input": [-64.0, -9.0], "expected": -9.0}, {"input": [-64.0, -8.5], "expected": -8.5}, {"input": [-64.0, -8.0], "expected": -8.0}, {"input": [-64.0, -7.5], "expected": -7.5}, {"input": [-64.0, -7.0], "expected": -7.0}, {"input": [-64.0, -6.5], "expected": -6.5}, {"input": [-64.0, -6.0], "expected": -6.0}, {"input": [-64.0, -5.5], "expected": -5.5}, {"input": [-64.0, -5.0], "expected": -5.0}, {"input": [-64.0, -4.5], "expected": -4.5}, {"input": [-64.0, -4.0], "expected": -4.0}, {"input": [-64.0, -3.5], "expected": -3.5}, {"input": [-64.0, -3.0], "expected": -3.0}, {"input": [-64.0, -2.5], "expected": -2.5}, {"input": [-64.0, -2.0], "expected": -2.0}, {"input": [-64.0, -1.5], "expected": -1.5}, {"input": [-64.0, -1.0], "expected": -1.0}, {"input": [-64.0, -0.5], "expected": -0.5}, {"input": [-64.0, 0.0], "expected": 1.603810890548638e-28}, {"input": [-64.0, 0.5], "expected": 0.5}, {"input": [-64.0, 1.0], "expected": 1.0}, {"input": [-64.0, 1.5], "expected": 1.5}, {"input": [-64.0, 2.0], "expected": 2.0}, {"input": [-64.0, 2.5], "expected": 2.5}, {"input": [-64.0, 3.0], "expected": 3.0}, {"input": [-64.0, 3.5], "expected": 3.5}, {"input": [-64.0, 4.0], "expected": 4.0}, {"input": [-64.0, 4.5], "expected": 4.5}, {"input": [-64.0, 5.0], "expected": 5.0}, {"input": [-64.0, 5.5], "expected": 5.5}, {"input": [-64.0, 6.0], "expected": 6.0}, {"input": [-64.0, 6.5], "expected": 6.5}, {"input": [-64.0, 7.0], "expected": 7.0}, {"input": [-64.0, 7.5], "expected": 7.5}, {"input": [-64.0, 8.0], "expected": 8.0}, {"input": [-64.0, 8.5], "expected": 8.5}, {"input": [-64.0, 9.0], "expected": 9.0}, {"input": [-64.0, 9.5], "expected": 9.5}, {"input": [-64.0, 10.0], "expected": 10.0}, {"input": [-64.0, 10.5], "expected": 10.5}, {"input": [-64.0, 11.0], "expected": 11.0}, {"input": [-64.0, 11.5], "expected": 11.5}, {"input": [-64.0, 12.0], "expected": 12.0}, {"input": [-64.0, 12.5], "expected": 12.5}, {"input": [-64.0, 13.0], "expected": 13.0}, {"input": [-64.0, 13.5], "expected": 13.5}, {"input": [-64.0, 14.0], "expected": 14.0}, {"input": [-64.0, 14.5], "expected": 14.5}, {"input": [-64.0, 15.0], "expected": 15.0}, {"input": [-64.0, 15.5], "expected": 15.5}, {"input": [-64.0, 16.0], "expected": 16.0}, {"input": [-64.0, 16.5], "expected": 16.5}, {"input": [-64.0, 17.0], "expected": 17.0}, {"input": [-64.0, 17.5], "expected": 17.5}, {"input": [-64.0, 18.0], "expected": 18.0}, {"input": [-64.0, 18.5], "expected": 18.5}, {"input": [-64.0, 19.0], "expected": 19.0}, {"input": [-64.0, 19.5], "expected": 19.5}, {"input": [-64.0, 20.0], "expected": 20.0}, {"input": [-64.0, 20.5], "expected": 20.5}, {"input": [-64.0, 21.0], "expected": 21.0}, {"input": [-64.0, 21.5], "expected": 21.5}, {"input": [-64.0, 22.0], "expected": 22.0}, {"input": [-64.0, 22.5], "expected": 22.5}, {"input": [-64.0, 23.0], "expected": 23.0}, {"input": [-64.0, 23.5], "expected": 23.5}, {"input": [-64.0, 24.0], "expected": 24.0}, {"input": [-64.0, 24.5], "expected": 24.5}, {"input": [-64.0, 25.0], "expected": 25.0}, {"input": [-64.0, 25.5], "expected": 25.5}, {"input": [-64.0, 26.0], "expected": 26.0}, {"input": [-64.0, 26.5], "expected": 26.5}, {"input": [-64.0, 27.0], "expected": 27.0}, {"input": [-64.0, 27.5], "expected": 27.5}, {"input": [-64.0, 28.0], "expected": 28.0}, {"input": [-64.0, 28.5], "expected": 28.5}, {"input": [-64.0, 29.0], "expected": 29.0}, {"input": [-64.0, 29.5], "expected": 29.5}, {"input": [-64.0, 30.0], "expected": 30.0}, {"input": [-64.0, 30.5], "expected": 30.5}, {"input": [-64.0, 31.0], "expected": 31.0}, {"input": [-64.0, 31.5], "expected": 31.5}, {"input": [-64.0, 32.0], "expected": 32.0}, {"input": [-64.0, 32.5], "expected": 32.5}, {"input": [-64.0, 33.0], "expected": 33.0}, {"input": [-64.0, 33.5], "expected": 33.5}, {"input": [-64.0, 34.0], "expected": 34.0}, {"input": [-64.0, 34.5], "expected": 34.5}, {"input": [-64.0, 35.0], "expected": 35.0}, {"input": [-64.0, 35.5], "expected": 35.5}, {"input": [-64.0, 36.0], "expected": 36.0}, {"input": [-64.0, 36.5], "expected": 36.5}, {"input": [-64.0, 37.0], "expected": 37.0}, {"input": [-64.0, 37.5], "expected": 37.5}, {"input": [-64.0, 38.0], "expected": 38.0}, {"input": [-64.0, 38.5], "expected": 38.5}, {"input": [-64.0, 39.0], "expected": 39.0}, {"input": [-64.0, 39.5], "expected": 39.5}, {"input": [-64.0, 40.0], "expected": 40.0}, {"input": [-64.0, 40.5], "expected": 40.5}, {"input": [-64.0, 41.0], "expected": 41.0}, {"input": [-64.0, 41.5], "expected": 41.5}, {"input": [-64.0, 42.0], "expected": 42.0}, {"input": [-64.0, 42.5], "expected": 42.5}, {"input": [-64.0, 43.0], "expected": 43.0}, {"input": [-64.0, 43.5], "expected": 43.5}, {"input": [-64.0, 44.0], "expected": 44.0}, {"input": [-64.0, 44.5], "expected": 44.5}, {"input": [-64.0, 45.0], "expected": 45.0}, {"input": [-64.0, 45.5], "expected": 45.5}, {"input": [-64.0, 46.0], "expected": 46.0}, {"input": [-64.0, 46.5], "expected": 46.5}, {"input": [-64.0, 47.0], "expected": 47.0}, {"input": [-64.0, 47.5], "expected": 47.5}, {"input": [-64.0, 48.0], "expected": 48.0}, {"input": [-64.0, 48.5], "expected": 48.5}, {"input": [-64.0, 49.0], "expected": 49.0}, {"input": [-64.0, 49.5], "expected": 49.5}, {"input": [-64.0, 50.0], "expected": 50.0}, {"input": [-64.0, 50.5], "expected": 50.5}, {"input": [-64.0, 51.0], "expected": 51.0}, {"input": [-64.0, 51.5], "expected": 51.5}, {"input": [-64.0, 52.0], "expected": 52.0}, {"input": [-64.0, 52.5], "expected": 52.5}, {"input": [-64.0, 53.0], "expected": 53.0}, {"input": [-64.0, 53.5], "expected": 53.5}, {"input": [-64.0, 54.0], "expected": 54.0}, {"input": [-64.0, 54.5], "expected": 54.5}, {"input": [-64.0, 55.0], "expected": 55.0}, {"input": [-64.0, 55.5], "expected": 55.5}, {"input": [-64.0, 56.0], "expected": 56.0}, {"input": [-64.0, 56.5], "expected": 56.5}, {"input": [-64.0, 57.0], "expected": 57.0}, {"input": [-64.0, 57.5], "expected": 57.5}, {"input": [-64.0, 58.0], "expected": 58.0}, {"input": [-64.0, 58.5], "expected": 58.5}, {"input": [-64.0, 59.0], "expected": 59.0}, {"input": [-64.0, 59.5], "expected": 59.5}, {"input": [-64.0, 60.0], "expected": 60.0}, {"input": [-64.0, 60.5], "expected": 60.5}, {"input": [-64.0, 61.0], "expected": 61.0}, {"input": [-64.0, 61.5], "expected": 61.5}, {"input": [-64.0, 62.0], "expected": 62.0}, {"input": [-64.0, 62.5], "expected": 62.5}, {"input": [-64.0, 63.0], "expected": 63.0}, {"input": [-64.0, 63.5], "expected": 63.5}, {"input": [-64.0, 64.0], "expected": 64.0}, {"input": [-64.0, 64.5], "expected": 64.5}, {"input": [-64.0, 65.0], "expected": 65.0}, {"input": [-64.0, 65.5], "expected": 65.5}, {"input": [-64.0, 66.0], "expected": 66.0}, {"input": [-64.0, 66.5], "expected": 66.5}, {"input": [-64.0, 67.0], "expected": 67.0}, {"input": [-64.0, 67.5], "expected": 67.5}, {"input": [-64.0, 68.0], "expected": 68.0}, {"input": [-64.0, 68.5], "expected": 68.5}, {"input": [-64.0, 69.0], "expected": 69.0}, {"input": [-64.0, 69.5], "expected": 69.5}, {"input": [-64.0, 70.0], "expected": 70.0}, {"input": [-64.0, 70.5], "expected": 70.5}, {"input": [-64.0, 71.0], "expected": 71.0}, {"input": [-64.0, 71.5], "expected": 71.5}, {"input": [-64.0, 72.0], "expected": 72.0}, {"input": [-64.0, 72.5], "expected": 72.5}, {"input": [-64.0, 73.0], "expected": 73.0}, {"input": [-64.0, 73.5], "expected": 73.5}, {"input": [-64.0, 74.0], "expected": 74.0}, {"input": [-64.0, 74.5], "expected": 74.5}, {"input": [-64.0, 75.0], "expected": 75.0}, {"input": [-64.0, 75.5], "expected": 75.5}, {"input": [-64.0, 76.0], "expected": 76.0}, {"input": [-64.0, 76.5], "expected": 76.5}, {"input": [-64.0, 77.0], "expected": 77.0}, {"input": [-64.0, 77.5], "expected": 77.5}, {"input": [-64.0, 78.0], "expected": 78.0}, {"input": [-64.0, 78.5], "expected": 78.5}, {"input": [-64.0, 79.0], "expected": 79.0}, {"input": [-64.0, 79.5], "expected": 79.5}, {"input": [-64.0, 80.0], "expected": 80.0}, {"input": [-64.0, 80.5], "expected": 80.5}, {"input": [-64.0, 81.0], "expected": 81.0}, {"input": [-64.0, 81.5], "expected": 81.5}, {"input": [-64.0, 82.0], "expected": 82.0}, {"input": [-64.0, 82.5], "expected": 82.5}, {"input": [-64.0, 83.0], "expected": 83.0}, {"input": [-64.0, 83.5], "expected": 83.5}, {"input": [-64.0, 84.0], "expected": 84.0}, {"input": [-64.0, 84.5], "expected": 84.5}, {"input": [-64.0, 85.0], "expected": 85.0}, {"input": [-64.0, 85.5], "expected": 85.5}, {"input": [-64.0, 86.0], "expected": 86.0}, {"input": [-64.0, 86.5], "expected": 86.5}, {"input": [-64.0, 87.0], "expected": 87.0}, {"input": [-64.0, 87.5], "expected": 87.5}, {"input": [-64.0, 88.0], "expected": 88.0}, {"input": [-64.0, 88.5], "expected": 88.5}, {"input": [-64.0, 89.0], "expected": 89.0}, {"input": [-64.0, 89.5], "expected": 89.5}, {"input": [-64.0, 90.0], "expected": 90.0}, {"input": [-64.0, 90.5], "expected": 90.5}, {"input": [-64.0, 91.0], "expected": 91.0}, {"input": [-64.0, 91.5], "expected": 91.5}, {"input": [-64.0, 92.0], "expected": 92.0}, {"input": [-64.0, 92.5], "expected": 92.5}, {"input": [-64.0, 93.0], "expected": 93.0}, {"input": [-64.0, 93.5], "expected": 93.5}, {"input": [-64.0, 94.0], "expected": 94.0}, {"input": [-64.0, 94.5], "expected": 94.5}, {"input": [-64.0, 95.0], "expected": 95.0}, {"input": [-64.0, 95.5], "expected": 95.5}, {"input": [-64.0, 96.0], "expected": 96.0}, {"input": [-64.0, 96.5], "expected": 96.5}, {"input": [-64.0, 97.0], "expected": 97.0}, {"input": [-64.0, 97.5], "expected": 97.5}, {"input": [-64.0, 98.0], "expected": 98.0}, {"input": [-64.0, 98.5], "expected": 98.5}, {"input": [-64.0, 99.0], "expected": 99.0}, {"input": [-64.0, 99.5], "expected": 99.5}, {"input": [-63.5, -100.0], "expected": -63.5}, {"input": [-63.5, -99.5], "expected": -63.5}, {"input": [-63.5, -99.0], "expected": -63.5}, {"input": [-63.5, -98.5], "expected": -63.5}, {"input": [-63.5, -98.0], "expected": -63.5}, {"input": [-63.5, -97.5], "expected": -63.5}, {"input": [-63.5, -97.0], "expected": -63.5}, {"input": [-63.5, -96.5], "expected": -63.49999999999999}, {"input": [-63.5, -96.0], "expected": -63.49999999999999}, {"input": [-63.5, -95.5], "expected": -63.499999999999986}, {"input": [-63.5, -95.0], "expected": -63.49999999999998}, {"input": [-63.5, -94.5], "expected": -63.499999999999964}, {"input": [-63.5, -94.0], "expected": -63.49999999999994}, {"input": [-63.5, -93.5], "expected": -63.49999999999991}, {"input": [-63.5, -93.0], "expected": -63.499999999999844}, {"input": [-63.5, -92.5], "expected": -63.499999999999744}, {"input": [-63.5, -92.0], "expected": -63.49999999999958}, {"input": [-63.5, -91.5], "expected": -63.49999999999931}, {"input": [-63.5, -91.0], "expected": -63.49999999999886}, {"input": [-63.5, -90.5], "expected": -63.49999999999812}, {"input": [-63.5, -90.0], "expected": -63.4999999999969}, {"input": [-63.5, -89.5], "expected": -63.49999999999489}, {"input": [-63.5, -89.0], "expected": -63.49999999999158}, {"input": [-63.5, -88.5], "expected": -63.49999999998611}, {"input": [-63.5, -88.0], "expected": -63.4999999999771}, {"input": [-63.5, -87.5], "expected": -63.49999999996225}, {"input": [-63.5, -87.0], "expected": -63.49999999993776}, {"input": [-63.5, -86.5], "expected": -63.49999999989738}, {"input": [-63.5, -86.0], "expected": -63.49999999983081}, {"input": [-63.5, -85.5], "expected": -63.499999999721055}, {"input": [-63.5, -85.0], "expected": -63.499999999540094}, {"input": [-63.5, -84.5], "expected": -63.499999999241744}, {"input": [-63.5, -84.0], "expected": -63.49999999874985}, {"input": [-63.5, -83.5], "expected": -63.49999999793884}, {"input": [-63.5, -83.0], "expected": -63.49999999660173}, {"input": [-63.5, -82.5], "expected": -63.49999999439721}, {"input": [-63.5, -82.0], "expected": -63.499999990762554}, {"input": [-63.5, -81.5], "expected": -63.49999998477002}, {"input": [-63.5, -81.0], "expected": -63.49999997489001}, {"input": [-63.5, -80.5], "expected": -63.499999958600625}, {"input": [-63.5, -80.0], "expected": -63.49999993174397}, {"input": [-63.5, -79.5], "expected": -63.49999988746483}, {"input": [-63.5, -79.0], "expected": -63.49999981446088}, {"input": [-63.5, -78.5], "expected": -63.499999694097724}, {"input": [-63.5, -78.0], "expected": -63.49999949565247}, {"input": [-63.5, -77.5], "expected": -63.499999168471625}, {"input": [-63.5, -77.0], "expected": -63.499998629041855}, {"input": [-63.5, -76.5], "expected": -63.49999773967315}, {"input": [-63.5, -76.0], "expected": -63.49999627335377}, {"input": [-63.5, -75.5], "expected": -63.49999385580652}, {"input": [-63.5, -75.0], "expected": -63.49998986995771}, {"input": [-63.5, -74.5], "expected": -63.49998329843868}, {"input": [-63.5, -74.0], "expected": -63.49997246392977}, {"input": [-63.5, -73.5], "expected": -63.49995460110078}, {"input": [-63.5, -73.0], "expected": -63.49992515097137}, {"input": [-63.5, -72.5], "expected": -63.49987659781028}, {"input": [-63.5, -72.0], "expected": -63.49979655232787}, {"input": [-63.5, -71.5], "expected": -63.4996645936271}, {"input": [-63.5, -71.0], "expected": -63.49944706852464}, {"input": [-63.5, -70.5], "expected": -63.49908853354623}, {"input": [-63.5, -70.0], "expected": -63.49849768984024}, {"input": [-63.5, -69.5], "expected": -63.49752431486227}, {"input": [-63.5, -69.0], "expected": -63.49592155672943}, {"input": [-63.5, -68.5], "expected": -63.49328465151088}, {"input": [-63.5, -68.0], "expected": -63.4889522551514}, {"input": [-63.5, -67.5], "expected": -63.48185007208219}, {"input": [-63.5, -67.0], "expected": -63.47024958172738}, {"input": [-63.5, -66.5], "expected": -63.451412648426256}, {"input": [-63.5, -66.0], "expected": -63.42111026570745}, {"input": [-63.5, -65.5], "expected": -63.37307198895703}, {"input": [-63.5, -65.0], "expected": -63.29858672201725}, {"input": [-63.5, -64.5], "expected": -63.18673831248178}, {"input": [-63.5, -64.0], "expected": -63.02592301581989}, {"input": [-63.5, -63.5], "expected": -62.80685281944005}, {"input": [-63.5, -63.0], "expected": -62.52592301581989}, {"input": [-63.5, -62.5], "expected": -62.18673831248178}, {"input": [-63.5, -62.0], "expected": -61.79858672201725}, {"input": [-63.5, -61.5], "expected": -61.37307198895703}, {"input": [-63.5, -61.0], "expected": -60.92111026570745}, {"input": [-63.5, -60.5], "expected": -60.451412648426256}, {"input": [-63.5, -60.0], "expected": -59.97024958172738}, {"input": [-63.5, -59.5], "expected": -59.48185007208219}, {"input": [-63.5, -59.0], "expected": -58.9889522551514}, {"input": [-63.5, -58.5], "expected": -58.49328465151088}, {"input": [-63.5, -58.0], "expected": -57.99592155672943}, {"input": [-63.5, -57.5], "expected": -57.49752431486227}, {"input": [-63.5, -57.0], "expected": -56.99849768984024}, {"input": [-63.5, -56.5], "expected": -56.49908853354623}, {"input": [-63.5, -56.0], "expected": -55.99944706852464}, {"input": [-63.5, -55.5], "expected": -55.4996645936271}, {"input": [-63.5, -55.0], "expected": -54.99979655232787}, {"input": [-63.5, -54.5], "expected": -54.49987659781028}, {"input": [-63.5, -54.0], "expected": -53.99992515097137}, {"input": [-63.5, -53.5], "expected": -53.49995460110078}, {"input": [-63.5, -53.0], "expected": -52.99997246392977}, {"input": [-63.5, -52.5], "expected": -52.49998329843868}, {"input": [-63.5, -52.0], "expected": -51.99998986995771}, {"input": [-63.5, -51.5], "expected": -51.49999385580652}, {"input": [-63.5, -51.0], "expected": -50.99999627335377}, {"input": [-63.5, -50.5], "expected": -50.49999773967315}, {"input": [-63.5, -50.0], "expected": -49.999998629041855}, {"input": [-63.5, -49.5], "expected": -49.499999168471625}, {"input": [-63.5, -49.0], "expected": -48.99999949565247}, {"input": [-63.5, -48.5], "expected": -48.499999694097724}, {"input": [-63.5, -48.0], "expected": -47.99999981446088}, {"input": [-63.5, -47.5], "expected": -47.49999988746483}, {"input": [-63.5, -47.0], "expected": -46.99999993174397}, {"input": [-63.5, -46.5], "expected": -46.499999958600625}, {"input": [-63.5, -46.0], "expected": -45.99999997489001}, {"input": [-63.5, -45.5], "expected": -45.49999998477002}, {"input": [-63.5, -45.0], "expected": -44.999999990762554}, {"input": [-63.5, -44.5], "expected": -44.49999999439721}, {"input": [-63.5, -44.0], "expected": -43.99999999660173}, {"input": [-63.5, -43.5], "expected": -43.49999999793884}, {"input": [-63.5, -43.0], "expected": -42.99999999874985}, {"input": [-63.5, -42.5], "expected": -42.499999999241744}, {"input": [-63.5, -42.0], "expected": -41.999999999540094}, {"input": [-63.5, -41.5], "expected": -41.499999999721055}, {"input": [-63.5, -41.0], "expected": -40.99999999983081}, {"input": [-63.5, -40.5], "expected": -40.49999999989738}, {"input": [-63.5, -40.0], "expected": -39.99999999993776}, {"input": [-63.5, -39.5], "expected": -39.49999999996225}, {"input": [-63.5, -39.0], "expected": -38.9999999999771}, {"input": [-63.5, -38.5], "expected": -38.49999999998611}, {"input": [-63.5, -38.0], "expected": -37.99999999999158}, {"input": [-63.5, -37.5], "expected": -37.49999999999489}, {"input": [-63.5, -37.0], "expected": -36.9999999999969}, {"input": [-63.5, -36.5], "expected": -36.49999999999812}, {"input": [-63.5, -36.0], "expected": -35.99999999999886}, {"input": [-63.5, -35.5], "expected": -35.49999999999931}, {"input": [-63.5, -35.0], "expected": -34.99999999999958}, {"input": [-63.5, -34.5], "expected": -34.499999999999744}, {"input": [-63.5, -34.0], "expected": -33.999999999999844}, {"input": [-63.5, -33.5], "expected": -33.49999999999991}, {"input": [-63.5, -33.0], "expected": -32.99999999999994}, {"input": [-63.5, -32.5], "expected": -32.499999999999964}, {"input": [-63.5, -32.0], "expected": -31.99999999999998}, {"input": [-63.5, -31.5], "expected": -31.499999999999986}, {"input": [-63.5, -31.0], "expected": -30.999999999999993}, {"input": [-63.5, -30.5], "expected": -30.499999999999996}, {"input": [-63.5, -30.0], "expected": -29.999999999999996}, {"input": [-63.5, -29.5], "expected": -29.5}, {"input": [-63.5, -29.0], "expected": -29.0}, {"input": [-63.5, -28.5], "expected": -28.5}, {"input": [-63.5, -28.0], "expected": -28.0}, {"input": [-63.5, -27.5], "expected": -27.5}, {"input": [-63.5, -27.0], "expected": -27.0}, {"input": [-63.5, -26.5], "expected": -26.5}, {"input": [-63.5, -26.0], "expected": -26.0}, {"input": [-63.5, -25.5], "expected": -25.5}, {"input": [-63.5, -25.0], "expected": -25.0}, {"input": [-63.5, -24.5], "expected": -24.5}, {"input": [-63.5, -24.0], "expected": -24.0}, {"input": [-63.5, -23.5], "expected": -23.5}, {"input": [-63.5, -23.0], "expected": -23.0}, {"input": [-63.5, -22.5], "expected": -22.5}, {"input": [-63.5, -22.0], "expected": -22.0}, {"input": [-63.5, -21.5], "expected": -21.5}, {"input": [-63.5, -21.0], "expected": -21.0}, {"input": [-63.5, -20.5], "expected": -20.5}, {"input": [-63.5, -20.0], "expected": -20.0}, {"input": [-63.5, -19.5], "expected": -19.5}, {"input": [-63.5, -19.0], "expected": -19.0}, {"input": [-63.5, -18.5], "expected": -18.5}, {"input": [-63.5, -18.0], "expected": -18.0}, {"input": [-63.5, -17.5], "expected": -17.5}, {"input": [-63.5, -17.0], "expected": -17.0}, {"input": [-63.5, -16.5], "expected": -16.5}, {"input": [-63.5, -16.0], "expected": -16.0}, {"input": [-63.5, -15.5], "expected": -15.5}, {"input": [-63.5, -15.0], "expected": -15.0}, {"input": [-63.5, -14.5], "expected": -14.5}, {"input": [-63.5, -14.0], "expected": -14.0}, {"input": [-63.5, -13.5], "expected": -13.5}, {"input": [-63.5, -13.0], "expected": -13.0}, {"input": [-63.5, -12.5], "expected": -12.5}, {"input": [-63.5, -12.0], "expected": -12.0}, {"input": [-63.5, -11.5], "expected": -11.5}, {"input": [-63.5, -11.0], "expected": -11.0}, {"input": [-63.5, -10.5], "expected": -10.5}, {"input": [-63.5, -10.0], "expected": -10.0}, {"input": [-63.5, -9.5], "expected": -9.5}, {"input": [-63.5, -9.0], "expected": -9.0}, {"input": [-63.5, -8.5], "expected": -8.5}, {"input": [-63.5, -8.0], "expected": -8.0}, {"input": [-63.5, -7.5], "expected": -7.5}, {"input": [-63.5, -7.0], "expected": -7.0}, {"input": [-63.5, -6.5], "expected": -6.5}, {"input": [-63.5, -6.0], "expected": -6.0}, {"input": [-63.5, -5.5], "expected": -5.5}, {"input": [-63.5, -5.0], "expected": -5.0}, {"input": [-63.5, -4.5], "expected": -4.5}, {"input": [-63.5, -4.0], "expected": -4.0}, {"input": [-63.5, -3.5], "expected": -3.5}, {"input": [-63.5, -3.0], "expected": -3.0}, {"input": [-63.5, -2.5], "expected": -2.5}, {"input": [-63.5, -2.0], "expected": -2.0}, {"input": [-63.5, -1.5], "expected": -1.5}, {"input": [-63.5, -1.0], "expected": -1.0}, {"input": [-63.5, -0.5], "expected": -0.5}, {"input": [-63.5, 0.0], "expected": 2.6442371294280543e-28}, {"input": [-63.5, 0.5], "expected": 0.5}, {"input": [-63.5, 1.0], "expected": 1.0}, {"input": [-63.5, 1.5], "expected": 1.5}, {"input": [-63.5, 2.0], "expected": 2.0}, {"input": [-63.5, 2.5], "expected": 2.5}, {"input": [-63.5, 3.0], "expected": 3.0}, {"input": [-63.5, 3.5], "expected": 3.5}, {"input": [-63.5, 4.0], "expected": 4.0}, {"input": [-63.5, 4.5], "expected": 4.5}, {"input": [-63.5, 5.0], "expected": 5.0}, {"input": [-63.5, 5.5], "expected": 5.5}, {"input": [-63.5, 6.0], "expected": 6.0}, {"input": [-63.5, 6.5], "expected": 6.5}, {"input": [-63.5, 7.0], "expected": 7.0}, {"input": [-63.5, 7.5], "expected": 7.5}, {"input": [-63.5, 8.0], "expected": 8.0}, {"input": [-63.5, 8.5], "expected": 8.5}, {"input": [-63.5, 9.0], "expected": 9.0}, {"input": [-63.5, 9.5], "expected": 9.5}, {"input": [-63.5, 10.0], "expected": 10.0}, {"input": [-63.5, 10.5], "expected": 10.5}, {"input": [-63.5, 11.0], "expected": 11.0}, {"input": [-63.5, 11.5], "expected": 11.5}, {"input": [-63.5, 12.0], "expected": 12.0}, {"input": [-63.5, 12.5], "expected": 12.5}, {"input": [-63.5, 13.0], "expected": 13.0}, {"input": [-63.5, 13.5], "expected": 13.5}, {"input": [-63.5, 14.0], "expected": 14.0}, {"input": [-63.5, 14.5], "expected": 14.5}, {"input": [-63.5, 15.0], "expected": 15.0}, {"input": [-63.5, 15.5], "expected": 15.5}, {"input": [-63.5, 16.0], "expected": 16.0}, {"input": [-63.5, 16.5], "expected": 16.5}, {"input": [-63.5, 17.0], "expected": 17.0}, {"input": [-63.5, 17.5], "expected": 17.5}, {"input": [-63.5, 18.0], "expected": 18.0}, {"input": [-63.5, 18.5], "expected": 18.5}, {"input": [-63.5, 19.0], "expected": 19.0}, {"input": [-63.5, 19.5], "expected": 19.5}, {"input": [-63.5, 20.0], "expected": 20.0}, {"input": [-63.5, 20.5], "expected": 20.5}, {"input": [-63.5, 21.0], "expected": 21.0}, {"input": [-63.5, 21.5], "expected": 21.5}, {"input": [-63.5, 22.0], "expected": 22.0}, {"input": [-63.5, 22.5], "expected": 22.5}, {"input": [-63.5, 23.0], "expected": 23.0}, {"input": [-63.5, 23.5], "expected": 23.5}, {"input": [-63.5, 24.0], "expected": 24.0}, {"input": [-63.5, 24.5], "expected": 24.5}, {"input": [-63.5, 25.0], "expected": 25.0}, {"input": [-63.5, 25.5], "expected": 25.5}, {"input": [-63.5, 26.0], "expected": 26.0}, {"input": [-63.5, 26.5], "expected": 26.5}, {"input": [-63.5, 27.0], "expected": 27.0}, {"input": [-63.5, 27.5], "expected": 27.5}, {"input": [-63.5, 28.0], "expected": 28.0}, {"input": [-63.5, 28.5], "expected": 28.5}, {"input": [-63.5, 29.0], "expected": 29.0}, {"input": [-63.5, 29.5], "expected": 29.5}, {"input": [-63.5, 30.0], "expected": 30.0}, {"input": [-63.5, 30.5], "expected": 30.5}, {"input": [-63.5, 31.0], "expected": 31.0}, {"input": [-63.5, 31.5], "expected": 31.5}, {"input": [-63.5, 32.0], "expected": 32.0}, {"input": [-63.5, 32.5], "expected": 32.5}, {"input": [-63.5, 33.0], "expected": 33.0}, {"input": [-63.5, 33.5], "expected": 33.5}, {"input": [-63.5, 34.0], "expected": 34.0}, {"input": [-63.5, 34.5], "expected": 34.5}, {"input": [-63.5, 35.0], "expected": 35.0}, {"input": [-63.5, 35.5], "expected": 35.5}, {"input": [-63.5, 36.0], "expected": 36.0}, {"input": [-63.5, 36.5], "expected": 36.5}, {"input": [-63.5, 37.0], "expected": 37.0}, {"input": [-63.5, 37.5], "expected": 37.5}, {"input": [-63.5, 38.0], "expected": 38.0}, {"input": [-63.5, 38.5], "expected": 38.5}, {"input": [-63.5, 39.0], "expected": 39.0}, {"input": [-63.5, 39.5], "expected": 39.5}, {"input": [-63.5, 40.0], "expected": 40.0}, {"input": [-63.5, 40.5], "expected": 40.5}, {"input": [-63.5, 41.0], "expected": 41.0}, {"input": [-63.5, 41.5], "expected": 41.5}, {"input": [-63.5, 42.0], "expected": 42.0}, {"input": [-63.5, 42.5], "expected": 42.5}, {"input": [-63.5, 43.0], "expected": 43.0}, {"input": [-63.5, 43.5], "expected": 43.5}, {"input": [-63.5, 44.0], "expected": 44.0}, {"input": [-63.5, 44.5], "expected": 44.5}, {"input": [-63.5, 45.0], "expected": 45.0}, {"input": [-63.5, 45.5], "expected": 45.5}, {"input": [-63.5, 46.0], "expected": 46.0}, {"input": [-63.5, 46.5], "expected": 46.5}, {"input": [-63.5, 47.0], "expected": 47.0}, {"input": [-63.5, 47.5], "expected": 47.5}, {"input": [-63.5, 48.0], "expected": 48.0}, {"input": [-63.5, 48.5], "expected": 48.5}, {"input": [-63.5, 49.0], "expected": 49.0}, {"input": [-63.5, 49.5], "expected": 49.5}, {"input": [-63.5, 50.0], "expected": 50.0}, {"input": [-63.5, 50.5], "expected": 50.5}, {"input": [-63.5, 51.0], "expected": 51.0}, {"input": [-63.5, 51.5], "expected": 51.5}, {"input": [-63.5, 52.0], "expected": 52.0}, {"input": [-63.5, 52.5], "expected": 52.5}, {"input": [-63.5, 53.0], "expected": 53.0}, {"input": [-63.5, 53.5], "expected": 53.5}, {"input": [-63.5, 54.0], "expected": 54.0}, {"input": [-63.5, 54.5], "expected": 54.5}, {"input": [-63.5, 55.0], "expected": 55.0}, {"input": [-63.5, 55.5], "expected": 55.5}, {"input": [-63.5, 56.0], "expected": 56.0}, {"input": [-63.5, 56.5], "expected": 56.5}, {"input": [-63.5, 57.0], "expected": 57.0}, {"input": [-63.5, 57.5], "expected": 57.5}, {"input": [-63.5, 58.0], "expected": 58.0}, {"input": [-63.5, 58.5], "expected": 58.5}, {"input": [-63.5, 59.0], "expected": 59.0}, {"input": [-63.5, 59.5], "expected": 59.5}, {"input": [-63.5, 60.0], "expected": 60.0}, {"input": [-63.5, 60.5], "expected": 60.5}, {"input": [-63.5, 61.0], "expected": 61.0}, {"input": [-63.5, 61.5], "expected": 61.5}, {"input": [-63.5, 62.0], "expected": 62.0}, {"input": [-63.5, 62.5], "expected": 62.5}, {"input": [-63.5, 63.0], "expected": 63.0}, {"input": [-63.5, 63.5], "expected": 63.5}, {"input": [-63.5, 64.0], "expected": 64.0}, {"input": [-63.5, 64.5], "expected": 64.5}, {"input": [-63.5, 65.0], "expected": 65.0}, {"input": [-63.5, 65.5], "expected": 65.5}, {"input": [-63.5, 66.0], "expected": 66.0}, {"input": [-63.5, 66.5], "expected": 66.5}, {"input": [-63.5, 67.0], "expected": 67.0}, {"input": [-63.5, 67.5], "expected": 67.5}, {"input": [-63.5, 68.0], "expected": 68.0}, {"input": [-63.5, 68.5], "expected": 68.5}, {"input": [-63.5, 69.0], "expected": 69.0}, {"input": [-63.5, 69.5], "expected": 69.5}, {"input": [-63.5, 70.0], "expected": 70.0}, {"input": [-63.5, 70.5], "expected": 70.5}, {"input": [-63.5, 71.0], "expected": 71.0}, {"input": [-63.5, 71.5], "expected": 71.5}, {"input": [-63.5, 72.0], "expected": 72.0}, {"input": [-63.5, 72.5], "expected": 72.5}, {"input": [-63.5, 73.0], "expected": 73.0}, {"input": [-63.5, 73.5], "expected": 73.5}, {"input": [-63.5, 74.0], "expected": 74.0}, {"input": [-63.5, 74.5], "expected": 74.5}, {"input": [-63.5, 75.0], "expected": 75.0}, {"input": [-63.5, 75.5], "expected": 75.5}, {"input": [-63.5, 76.0], "expected": 76.0}, {"input": [-63.5, 76.5], "expected": 76.5}, {"input": [-63.5, 77.0], "expected": 77.0}, {"input": [-63.5, 77.5], "expected": 77.5}, {"input": [-63.5, 78.0], "expected": 78.0}, {"input": [-63.5, 78.5], "expected": 78.5}, {"input": [-63.5, 79.0], "expected": 79.0}, {"input": [-63.5, 79.5], "expected": 79.5}, {"input": [-63.5, 80.0], "expected": 80.0}, {"input": [-63.5, 80.5], "expected": 80.5}, {"input": [-63.5, 81.0], "expected": 81.0}, {"input": [-63.5, 81.5], "expected": 81.5}, {"input": [-63.5, 82.0], "expected": 82.0}, {"input": [-63.5, 82.5], "expected": 82.5}, {"input": [-63.5, 83.0], "expected": 83.0}, {"input": [-63.5, 83.5], "expected": 83.5}, {"input": [-63.5, 84.0], "expected": 84.0}, {"input": [-63.5, 84.5], "expected": 84.5}, {"input": [-63.5, 85.0], "expected": 85.0}, {"input": [-63.5, 85.5], "expected": 85.5}, {"input": [-63.5, 86.0], "expected": 86.0}, {"input": [-63.5, 86.5], "expected": 86.5}, {"input": [-63.5, 87.0], "expected": 87.0}, {"input": [-63.5, 87.5], "expected": 87.5}, {"input": [-63.5, 88.0], "expected": 88.0}, {"input": [-63.5, 88.5], "expected": 88.5}, {"input": [-63.5, 89.0], "expected": 89.0}, {"input": [-63.5, 89.5], "expected": 89.5}, {"input": [-63.5, 90.0], "expected": 90.0}, {"input": [-63.5, 90.5], "expected": 90.5}, {"input": [-63.5, 91.0], "expected": 91.0}, {"input": [-63.5, 91.5], "expected": 91.5}, {"input": [-63.5, 92.0], "expected": 92.0}, {"input": [-63.5, 92.5], "expected": 92.5}, {"input": [-63.5, 93.0], "expected": 93.0}, {"input": [-63.5, 93.5], "expected": 93.5}, {"input": [-63.5, 94.0], "expected": 94.0}, {"input": [-63.5, 94.5], "expected": 94.5}, {"input": [-63.5, 95.0], "expected": 95.0}, {"input": [-63.5, 95.5], "expected": 95.5}, {"input": [-63.5, 96.0], "expected": 96.0}, {"input": [-63.5, 96.5], "expected": 96.5}, {"input": [-63.5, 97.0], "expected": 97.0}, {"input": [-63.5, 97.5], "expected": 97.5}, {"input": [-63.5, 98.0], "expected": 98.0}, {"input": [-63.5, 98.5], "expected": 98.5}, {"input": [-63.5, 99.0], "expected": 99.0}, {"input": [-63.5, 99.5], "expected": 99.5}, {"input": [-63.0, -100.0], "expected": -63.0}, {"input": [-63.0, -99.5], "expected": -63.0}, {"input": [-63.0, -99.0], "expected": -63.0}, {"input": [-63.0, -98.5], "expected": -63.0}, {"input": [-63.0, -98.0], "expected": -63.0}, {"input": [-63.0, -97.5], "expected": -63.0}, {"input": [-63.0, -97.0], "expected": -63.0}, {"input": [-63.0, -96.5], "expected": -63.0}, {"input": [-63.0, -96.0], "expected": -62.99999999999999}, {"input": [-63.0, -95.5], "expected": -62.99999999999999}, {"input": [-63.0, -95.0], "expected": -62.999999999999986}, {"input": [-63.0, -94.5], "expected": -62.99999999999998}, {"input": [-63.0, -94.0], "expected": -62.999999999999964}, {"input": [-63.0, -93.5], "expected": -62.99999999999994}, {"input": [-63.0, -93.0], "expected": -62.99999999999991}, {"input": [-63.0, -92.5], "expected": -62.999999999999844}, {"input": [-63.0, -92.0], "expected": -62.999999999999744}, {"input": [-63.0, -91.5], "expected": -62.99999999999958}, {"input": [-63.0, -91.0], "expected": -62.99999999999931}, {"input": [-63.0, -90.5], "expected": -62.99999999999886}, {"input": [-63.0, -90.0], "expected": -62.99999999999812}, {"input": [-63.0, -89.5], "expected": -62.9999999999969}, {"input": [-63.0, -89.0], "expected": -62.99999999999489}, {"input": [-63.0, -88.5], "expected": -62.99999999999158}, {"input": [-63.0, -88.0], "expected": -62.99999999998611}, {"input": [-63.0, -87.5], "expected": -62.9999999999771}, {"input": [-63.0, -87.0], "expected": -62.99999999996225}, {"input": [-63.0, -86.5], "expected": -62.99999999993776}, {"input": [-63.0, -86.0], "expected": -62.99999999989738}, {"input": [-63.0, -85.5], "expected": -62.99999999983081}, {"input": [-63.0, -85.0], "expected": -62.999999999721055}, {"input": [-63.0, -84.5], "expected": -62.999999999540094}, {"input": [-63.0, -84.0], "expected": -62.999999999241744}, {"input": [-63.0, -83.5], "expected": -62.99999999874985}, {"input": [-63.0, -83.0], "expected": -62.99999999793884}, {"input": [-63.0, -82.5], "expected": -62.99999999660173}, {"input": [-63.0, -82.0], "expected": -62.99999999439721}, {"input": [-63.0, -81.5], "expected": -62.999999990762554}, {"input": [-63.0, -81.0], "expected": -62.99999998477002}, {"input": [-63.0, -80.5], "expected": -62.99999997489001}, {"input": [-63.0, -80.0], "expected": -62.999999958600625}, {"input": [-63.0, -79.5], "expected": -62.99999993174397}, {"input": [-63.0, -79.0], "expected": -62.99999988746483}, {"input": [-63.0, -78.5], "expected": -62.99999981446088}, {"input": [-63.0, -78.0], "expected": -62.999999694097724}, {"input": [-63.0, -77.5], "expected": -62.99999949565247}, {"input": [-63.0, -77.0], "expected": -62.999999168471625}, {"input": [-63.0, -76.5], "expected": -62.999998629041855}, {"input": [-63.0, -76.0], "expected": -62.99999773967315}, {"input": [-63.0, -75.5], "expected": -62.99999627335377}, {"input": [-63.0, -75.0], "expected": -62.99999385580652}, {"input": [-63.0, -74.5], "expected": -62.99998986995771}, {"input": [-63.0, -74.0], "expected": -62.99998329843868}, {"input": [-63.0, -73.5], "expected": -62.99997246392977}, {"input": [-63.0, -73.0], "expected": -62.99995460110078}, {"input": [-63.0, -72.5], "expected": -62.99992515097137}, {"input": [-63.0, -72.0], "expected": -62.99987659781028}, {"input": [-63.0, -71.5], "expected": -62.99979655232787}, {"input": [-63.0, -71.0], "expected": -62.9996645936271}, {"input": [-63.0, -70.5], "expected": -62.99944706852464}, {"input": [-63.0, -70.0], "expected": -62.99908853354623}, {"input": [-63.0, -69.5], "expected": -62.99849768984024}, {"input": [-63.0, -69.0], "expected": -62.99752431486227}, {"input": [-63.0, -68.5], "expected": -62.99592155672943}, {"input": [-63.0, -68.0], "expected": -62.99328465151088}, {"input": [-63.0, -67.5], "expected": -62.9889522551514}, {"input": [-63.0, -67.0], "expected": -62.98185007208219}, {"input": [-63.0, -66.5], "expected": -62.97024958172738}, {"input": [-63.0, -66.0], "expected": -62.951412648426256}, {"input": [-63.0, -65.5], "expected": -62.92111026570745}, {"input": [-63.0, -65.0], "expected": -62.87307198895703}, {"input": [-63.0, -64.5], "expected": -62.79858672201725}, {"input": [-63.0, -64.0], "expected": -62.68673831248178}, {"input": [-63.0, -63.5], "expected": -62.52592301581989}, {"input": [-63.0, -63.0], "expected": -62.30685281944005}, {"input": [-63.0, -62.5], "expected": -62.02592301581989}, {"input": [-63.0, -62.0], "expected": -61.68673831248178}, {"input": [-63.0, -61.5], "expected": -61.29858672201725}, {"input": [-63.0, -61.0], "expected": -60.87307198895703}, {"input": [-63.0, -60.5], "expected": -60.42111026570745}, {"input": [-63.0, -60.0], "expected": -59.951412648426256}, {"input": [-63.0, -59.5], "expected": -59.47024958172738}, {"input": [-63.0, -59.0], "expected": -58.98185007208219}, {"input": [-63.0, -58.5], "expected": -58.4889522551514}, {"input": [-63.0, -58.0], "expected": -57.99328465151088}, {"input": [-63.0, -57.5], "expected": -57.49592155672943}, {"input": [-63.0, -57.0], "expected": -56.99752431486227}, {"input": [-63.0, -56.5], "expected": -56.49849768984024}, {"input": [-63.0, -56.0], "expected": -55.99908853354623}, {"input": [-63.0, -55.5], "expected": -55.49944706852464}, {"input": [-63.0, -55.0], "expected": -54.9996645936271}, {"input": [-63.0, -54.5], "expected": -54.49979655232787}, {"input": [-63.0, -54.0], "expected": -53.99987659781028}, {"input": [-63.0, -53.5], "expected": -53.49992515097137}, {"input": [-63.0, -53.0], "expected": -52.99995460110078}, {"input": [-63.0, -52.5], "expected": -52.49997246392977}, {"input": [-63.0, -52.0], "expected": -51.99998329843868}, {"input": [-63.0, -51.5], "expected": -51.49998986995771}, {"input": [-63.0, -51.0], "expected": -50.99999385580652}, {"input": [-63.0, -50.5], "expected": -50.49999627335377}, {"input": [-63.0, -50.0], "expected": -49.99999773967315}, {"input": [-63.0, -49.5], "expected": -49.499998629041855}, {"input": [-63.0, -49.0], "expected": -48.999999168471625}, {"input": [-63.0, -48.5], "expected": -48.49999949565247}, {"input": [-63.0, -48.0], "expected": -47.999999694097724}, {"input": [-63.0, -47.5], "expected": -47.49999981446088}, {"input": [-63.0, -47.0], "expected": -46.99999988746483}, {"input": [-63.0, -46.5], "expected": -46.49999993174397}, {"input": [-63.0, -46.0], "expected": -45.999999958600625}, {"input": [-63.0, -45.5], "expected": -45.49999997489001}, {"input": [-63.0, -45.0], "expected": -44.99999998477002}, {"input": [-63.0, -44.5], "expected": -44.499999990762554}, {"input": [-63.0, -44.0], "expected": -43.99999999439721}, {"input": [-63.0, -43.5], "expected": -43.49999999660173}, {"input": [-63.0, -43.0], "expected": -42.99999999793884}, {"input": [-63.0, -42.5], "expected": -42.49999999874985}, {"input": [-63.0, -42.0], "expected": -41.999999999241744}, {"input": [-63.0, -41.5], "expected": -41.499999999540094}, {"input": [-63.0, -41.0], "expected": -40.999999999721055}, {"input": [-63.0, -40.5], "expected": -40.49999999983081}, {"input": [-63.0, -40.0], "expected": -39.99999999989738}, {"input": [-63.0, -39.5], "expected": -39.49999999993776}, {"input": [-63.0, -39.0], "expected": -38.99999999996225}, {"input": [-63.0, -38.5], "expected": -38.4999999999771}, {"input": [-63.0, -38.0], "expected": -37.99999999998611}, {"input": [-63.0, -37.5], "expected": -37.49999999999158}, {"input": [-63.0, -37.0], "expected": -36.99999999999489}, {"input": [-63.0, -36.5], "expected": -36.4999999999969}, {"input": [-63.0, -36.0], "expected": -35.99999999999812}, {"input": [-63.0, -35.5], "expected": -35.49999999999886}, {"input": [-63.0, -35.0], "expected": -34.99999999999931}, {"input": [-63.0, -34.5], "expected": -34.49999999999958}, {"input": [-63.0, -34.0], "expected": -33.999999999999744}, {"input": [-63.0, -33.5], "expected": -33.499999999999844}, {"input": [-63.0, -33.0], "expected": -32.99999999999991}, {"input": [-63.0, -32.5], "expected": -32.49999999999994}, {"input": [-63.0, -32.0], "expected": -31.999999999999964}, {"input": [-63.0, -31.5], "expected": -31.49999999999998}, {"input": [-63.0, -31.0], "expected": -30.999999999999986}, {"input": [-63.0, -30.5], "expected": -30.499999999999993}, {"input": [-63.0, -30.0], "expected": -29.999999999999996}, {"input": [-63.0, -29.5], "expected": -29.499999999999996}, {"input": [-63.0, -29.0], "expected": -29.0}, {"input": [-63.0, -28.5], "expected": -28.5}, {"input": [-63.0, -28.0], "expected": -28.0}, {"input": [-63.0, -27.5], "expected": -27.5}, {"input": [-63.0, -27.0], "expected": -27.0}, {"input": [-63.0, -26.5], "expected": -26.5}, {"input": [-63.0, -26.0], "expected": -26.0}, {"input": [-63.0, -25.5], "expected": -25.5}, {"input": [-63.0, -25.0], "expected": -25.0}, {"input": [-63.0, -24.5], "expected": -24.5}, {"input": [-63.0, -24.0], "expected": -24.0}, {"input": [-63.0, -23.5], "expected": -23.5}, {"input": [-63.0, -23.0], "expected": -23.0}, {"input": [-63.0, -22.5], "expected": -22.5}, {"input": [-63.0, -22.0], "expected": -22.0}, {"input": [-63.0, -21.5], "expected": -21.5}, {"input": [-63.0, -21.0], "expected": -21.0}, {"input": [-63.0, -20.5], "expected": -20.5}, {"input": [-63.0, -20.0], "expected": -20.0}, {"input": [-63.0, -19.5], "expected": -19.5}, {"input": [-63.0, -19.0], "expected": -19.0}, {"input": [-63.0, -18.5], "expected": -18.5}, {"input": [-63.0, -18.0], "expected": -18.0}, {"input": [-63.0, -17.5], "expected": -17.5}, {"input": [-63.0, -17.0], "expected": -17.0}, {"input": [-63.0, -16.5], "expected": -16.5}, {"input": [-63.0, -16.0], "expected": -16.0}, {"input": [-63.0, -15.5], "expected": -15.5}, {"input": [-63.0, -15.0], "expected": -15.0}, {"input": [-63.0, -14.5], "expected": -14.5}, {"input": [-63.0, -14.0], "expected": -14.0}, {"input": [-63.0, -13.5], "expected": -13.5}, {"input": [-63.0, -13.0], "expected": -13.0}, {"input": [-63.0, -12.5], "expected": -12.5}, {"input": [-63.0, -12.0], "expected": -12.0}, {"input": [-63.0, -11.5], "expected": -11.5}, {"input": [-63.0, -11.0], "expected": -11.0}, {"input": [-63.0, -10.5], "expected": -10.5}, {"input": [-63.0, -10.0], "expected": -10.0}, {"input": [-63.0, -9.5], "expected": -9.5}, {"input": [-63.0, -9.0], "expected": -9.0}, {"input": [-63.0, -8.5], "expected": -8.5}, {"input": [-63.0, -8.0], "expected": -8.0}, {"input": [-63.0, -7.5], "expected": -7.5}, {"input": [-63.0, -7.0], "expected": -7.0}, {"input": [-63.0, -6.5], "expected": -6.5}, {"input": [-63.0, -6.0], "expected": -6.0}, {"input": [-63.0, -5.5], "expected": -5.5}, {"input": [-63.0, -5.0], "expected": -5.0}, {"input": [-63.0, -4.5], "expected": -4.5}, {"input": [-63.0, -4.0], "expected": -4.0}, {"input": [-63.0, -3.5], "expected": -3.5}, {"input": [-63.0, -3.0], "expected": -3.0}, {"input": [-63.0, -2.5], "expected": -2.5}, {"input": [-63.0, -2.0], "expected": -2.0}, {"input": [-63.0, -1.5], "expected": -1.5}, {"input": [-63.0, -1.0], "expected": -1.0}, {"input": [-63.0, -0.5], "expected": -0.5}, {"input": [-63.0, 0.0], "expected": 4.359610000063081e-28}, {"input": [-63.0, 0.5], "expected": 0.5}, {"input": [-63.0, 1.0], "expected": 1.0}, {"input": [-63.0, 1.5], "expected": 1.5}, {"input": [-63.0, 2.0], "expected": 2.0}, {"input": [-63.0, 2.5], "expected": 2.5}, {"input": [-63.0, 3.0], "expected": 3.0}, {"input": [-63.0, 3.5], "expected": 3.5}, {"input": [-63.0, 4.0], "expected": 4.0}, {"input": [-63.0, 4.5], "expected": 4.5}, {"input": [-63.0, 5.0], "expected": 5.0}, {"input": [-63.0, 5.5], "expected": 5.5}, {"input": [-63.0, 6.0], "expected": 6.0}, {"input": [-63.0, 6.5], "expected": 6.5}, {"input": [-63.0, 7.0], "expected": 7.0}, {"input": [-63.0, 7.5], "expected": 7.5}, {"input": [-63.0, 8.0], "expected": 8.0}, {"input": [-63.0, 8.5], "expected": 8.5}, {"input": [-63.0, 9.0], "expected": 9.0}, {"input": [-63.0, 9.5], "expected": 9.5}, {"input": [-63.0, 10.0], "expected": 10.0}, {"input": [-63.0, 10.5], "expected": 10.5}, {"input": [-63.0, 11.0], "expected": 11.0}, {"input": [-63.0, 11.5], "expected": 11.5}, {"input": [-63.0, 12.0], "expected": 12.0}, {"input": [-63.0, 12.5], "expected": 12.5}, {"input": [-63.0, 13.0], "expected": 13.0}, {"input": [-63.0, 13.5], "expected": 13.5}, {"input": [-63.0, 14.0], "expected": 14.0}, {"input": [-63.0, 14.5], "expected": 14.5}, {"input": [-63.0, 15.0], "expected": 15.0}, {"input": [-63.0, 15.5], "expected": 15.5}, {"input": [-63.0, 16.0], "expected": 16.0}, {"input": [-63.0, 16.5], "expected": 16.5}, {"input": [-63.0, 17.0], "expected": 17.0}, {"input": [-63.0, 17.5], "expected": 17.5}, {"input": [-63.0, 18.0], "expected": 18.0}, {"input": [-63.0, 18.5], "expected": 18.5}, {"input": [-63.0, 19.0], "expected": 19.0}, {"input": [-63.0, 19.5], "expected": 19.5}, {"input": [-63.0, 20.0], "expected": 20.0}, {"input": [-63.0, 20.5], "expected": 20.5}, {"input": [-63.0, 21.0], "expected": 21.0}, {"input": [-63.0, 21.5], "expected": 21.5}, {"input": [-63.0, 22.0], "expected": 22.0}, {"input": [-63.0, 22.5], "expected": 22.5}, {"input": [-63.0, 23.0], "expected": 23.0}, {"input": [-63.0, 23.5], "expected": 23.5}, {"input": [-63.0, 24.0], "expected": 24.0}, {"input": [-63.0, 24.5], "expected": 24.5}, {"input": [-63.0, 25.0], "expected": 25.0}, {"input": [-63.0, 25.5], "expected": 25.5}, {"input": [-63.0, 26.0], "expected": 26.0}, {"input": [-63.0, 26.5], "expected": 26.5}, {"input": [-63.0, 27.0], "expected": 27.0}, {"input": [-63.0, 27.5], "expected": 27.5}, {"input": [-63.0, 28.0], "expected": 28.0}, {"input": [-63.0, 28.5], "expected": 28.5}, {"input": [-63.0, 29.0], "expected": 29.0}, {"input": [-63.0, 29.5], "expected": 29.5}, {"input": [-63.0, 30.0], "expected": 30.0}, {"input": [-63.0, 30.5], "expected": 30.5}, {"input": [-63.0, 31.0], "expected": 31.0}, {"input": [-63.0, 31.5], "expected": 31.5}, {"input": [-63.0, 32.0], "expected": 32.0}, {"input": [-63.0, 32.5], "expected": 32.5}, {"input": [-63.0, 33.0], "expected": 33.0}, {"input": [-63.0, 33.5], "expected": 33.5}, {"input": [-63.0, 34.0], "expected": 34.0}, {"input": [-63.0, 34.5], "expected": 34.5}, {"input": [-63.0, 35.0], "expected": 35.0}, {"input": [-63.0, 35.5], "expected": 35.5}, {"input": [-63.0, 36.0], "expected": 36.0}, {"input": [-63.0, 36.5], "expected": 36.5}, {"input": [-63.0, 37.0], "expected": 37.0}, {"input": [-63.0, 37.5], "expected": 37.5}, {"input": [-63.0, 38.0], "expected": 38.0}, {"input": [-63.0, 38.5], "expected": 38.5}, {"input": [-63.0, 39.0], "expected": 39.0}, {"input": [-63.0, 39.5], "expected": 39.5}, {"input": [-63.0, 40.0], "expected": 40.0}, {"input": [-63.0, 40.5], "expected": 40.5}, {"input": [-63.0, 41.0], "expected": 41.0}, {"input": [-63.0, 41.5], "expected": 41.5}, {"input": [-63.0, 42.0], "expected": 42.0}, {"input": [-63.0, 42.5], "expected": 42.5}, {"input": [-63.0, 43.0], "expected": 43.0}, {"input": [-63.0, 43.5], "expected": 43.5}, {"input": [-63.0, 44.0], "expected": 44.0}, {"input": [-63.0, 44.5], "expected": 44.5}, {"input": [-63.0, 45.0], "expected": 45.0}, {"input": [-63.0, 45.5], "expected": 45.5}, {"input": [-63.0, 46.0], "expected": 46.0}, {"input": [-63.0, 46.5], "expected": 46.5}, {"input": [-63.0, 47.0], "expected": 47.0}, {"input": [-63.0, 47.5], "expected": 47.5}, {"input": [-63.0, 48.0], "expected": 48.0}, {"input": [-63.0, 48.5], "expected": 48.5}, {"input": [-63.0, 49.0], "expected": 49.0}, {"input": [-63.0, 49.5], "expected": 49.5}, {"input": [-63.0, 50.0], "expected": 50.0}, {"input": [-63.0, 50.5], "expected": 50.5}, {"input": [-63.0, 51.0], "expected": 51.0}, {"input": [-63.0, 51.5], "expected": 51.5}, {"input": [-63.0, 52.0], "expected": 52.0}, {"input": [-63.0, 52.5], "expected": 52.5}, {"input": [-63.0, 53.0], "expected": 53.0}, {"input": [-63.0, 53.5], "expected": 53.5}, {"input": [-63.0, 54.0], "expected": 54.0}, {"input": [-63.0, 54.5], "expected": 54.5}, {"input": [-63.0, 55.0], "expected": 55.0}, {"input": [-63.0, 55.5], "expected": 55.5}, {"input": [-63.0, 56.0], "expected": 56.0}, {"input": [-63.0, 56.5], "expected": 56.5}, {"input": [-63.0, 57.0], "expected": 57.0}, {"input": [-63.0, 57.5], "expected": 57.5}, {"input": [-63.0, 58.0], "expected": 58.0}, {"input": [-63.0, 58.5], "expected": 58.5}, {"input": [-63.0, 59.0], "expected": 59.0}, {"input": [-63.0, 59.5], "expected": 59.5}, {"input": [-63.0, 60.0], "expected": 60.0}, {"input": [-63.0, 60.5], "expected": 60.5}, {"input": [-63.0, 61.0], "expected": 61.0}, {"input": [-63.0, 61.5], "expected": 61.5}, {"input": [-63.0, 62.0], "expected": 62.0}, {"input": [-63.0, 62.5], "expected": 62.5}, {"input": [-63.0, 63.0], "expected": 63.0}, {"input": [-63.0, 63.5], "expected": 63.5}, {"input": [-63.0, 64.0], "expected": 64.0}, {"input": [-63.0, 64.5], "expected": 64.5}, {"input": [-63.0, 65.0], "expected": 65.0}, {"input": [-63.0, 65.5], "expected": 65.5}, {"input": [-63.0, 66.0], "expected": 66.0}, {"input": [-63.0, 66.5], "expected": 66.5}, {"input": [-63.0, 67.0], "expected": 67.0}, {"input": [-63.0, 67.5], "expected": 67.5}, {"input": [-63.0, 68.0], "expected": 68.0}, {"input": [-63.0, 68.5], "expected": 68.5}, {"input": [-63.0, 69.0], "expected": 69.0}, {"input": [-63.0, 69.5], "expected": 69.5}, {"input": [-63.0, 70.0], "expected": 70.0}, {"input": [-63.0, 70.5], "expected": 70.5}, {"input": [-63.0, 71.0], "expected": 71.0}, {"input": [-63.0, 71.5], "expected": 71.5}, {"input": [-63.0, 72.0], "expected": 72.0}, {"input": [-63.0, 72.5], "expected": 72.5}, {"input": [-63.0, 73.0], "expected": 73.0}, {"input": [-63.0, 73.5], "expected": 73.5}, {"input": [-63.0, 74.0], "expected": 74.0}, {"input": [-63.0, 74.5], "expected": 74.5}, {"input": [-63.0, 75.0], "expected": 75.0}, {"input": [-63.0, 75.5], "expected": 75.5}, {"input": [-63.0, 76.0], "expected": 76.0}, {"input": [-63.0, 76.5], "expected": 76.5}, {"input": [-63.0, 77.0], "expected": 77.0}, {"input": [-63.0, 77.5], "expected": 77.5}, {"input": [-63.0, 78.0], "expected": 78.0}, {"input": [-63.0, 78.5], "expected": 78.5}, {"input": [-63.0, 79.0], "expected": 79.0}, {"input": [-63.0, 79.5], "expected": 79.5}, {"input": [-63.0, 80.0], "expected": 80.0}, {"input": [-63.0, 80.5], "expected": 80.5}, {"input": [-63.0, 81.0], "expected": 81.0}, {"input": [-63.0, 81.5], "expected": 81.5}, {"input": [-63.0, 82.0], "expected": 82.0}, {"input": [-63.0, 82.5], "expected": 82.5}, {"input": [-63.0, 83.0], "expected": 83.0}, {"input": [-63.0, 83.5], "expected": 83.5}, {"input": [-63.0, 84.0], "expected": 84.0}, {"input": [-63.0, 84.5], "expected": 84.5}, {"input": [-63.0, 85.0], "expected": 85.0}, {"input": [-63.0, 85.5], "expected": 85.5}, {"input": [-63.0, 86.0], "expected": 86.0}, {"input": [-63.0, 86.5], "expected": 86.5}, {"input": [-63.0, 87.0], "expected": 87.0}, {"input": [-63.0, 87.5], "expected": 87.5}, {"input": [-63.0, 88.0], "expected": 88.0}, {"input": [-63.0, 88.5], "expected": 88.5}, {"input": [-63.0, 89.0], "expected": 89.0}, {"input": [-63.0, 89.5], "expected": 89.5}, {"input": [-63.0, 90.0], "expected": 90.0}, {"input": [-63.0, 90.5], "expected": 90.5}, {"input": [-63.0, 91.0], "expected": 91.0}, {"input": [-63.0, 91.5], "expected": 91.5}, {"input": [-63.0, 92.0], "expected": 92.0}, {"input": [-63.0, 92.5], "expected": 92.5}, {"input": [-63.0, 93.0], "expected": 93.0}, {"input": [-63.0, 93.5], "expected": 93.5}, {"input": [-63.0, 94.0], "expected": 94.0}, {"input": [-63.0, 94.5], "expected": 94.5}, {"input": [-63.0, 95.0], "expected": 95.0}, {"input": [-63.0, 95.5], "expected": 95.5}, {"input": [-63.0, 96.0], "expected": 96.0}, {"input": [-63.0, 96.5], "expected": 96.5}, {"input": [-63.0, 97.0], "expected": 97.0}, {"input": [-63.0, 97.5], "expected": 97.5}, {"input": [-63.0, 98.0], "expected": 98.0}, {"input": [-63.0, 98.5], "expected": 98.5}, {"input": [-63.0, 99.0], "expected": 99.0}, {"input": [-63.0, 99.5], "expected": 99.5}, {"input": [-62.5, -100.0], "expected": -62.5}, {"input": [-62.5, -99.5], "expected": -62.5}, {"input": [-62.5, -99.0], "expected": -62.5}, {"input": [-62.5, -98.5], "expected": -62.5}, {"input": [-62.5, -98.0], "expected": -62.5}, {"input": [-62.5, -97.5], "expected": -62.5}, {"input": [-62.5, -97.0], "expected": -62.5}, {"input": [-62.5, -96.5], "expected": -62.5}, {"input": [-62.5, -96.0], "expected": -62.5}, {"input": [-62.5, -95.5], "expected": -62.49999999999999}, {"input": [-62.5, -95.0], "expected": -62.49999999999999}, {"input": [-62.5, -94.5], "expected": -62.499999999999986}, {"input": [-62.5, -94.0], "expected": -62.49999999999998}, {"input": [-62.5, -93.5], "expected": -62.499999999999964}, {"input": [-62.5, -93.0], "expected": -62.49999999999994}, {"input": [-62.5, -92.5], "expected": -62.49999999999991}, {"input": [-62.5, -92.0], "expected": -62.499999999999844}, {"input": [-62.5, -91.5], "expected": -62.499999999999744}, {"input": [-62.5, -91.0], "expected": -62.49999999999958}, {"input": [-62.5, -90.5], "expected": -62.49999999999931}, {"input": [-62.5, -90.0], "expected": -62.49999999999886}, {"input": [-62.5, -89.5], "expected": -62.49999999999812}, {"input": [-62.5, -89.0], "expected": -62.4999999999969}, {"input": [-62.5, -88.5], "expected": -62.49999999999489}, {"input": [-62.5, -88.0], "expected": -62.49999999999158}, {"input": [-62.5, -87.5], "expected": -62.49999999998611}, {"input": [-62.5, -87.0], "expected": -62.4999999999771}, {"input": [-62.5, -86.5], "expected": -62.49999999996225}, {"input": [-62.5, -86.0], "expected": -62.49999999993776}, {"input": [-62.5, -85.5], "expected": -62.49999999989738}, {"input": [-62.5, -85.0], "expected": -62.49999999983081}, {"input": [-62.5, -84.5], "expected": -62.499999999721055}, {"input": [-62.5, -84.0], "expected": -62.499999999540094}, {"input": [-62.5, -83.5], "expected": -62.499999999241744}, {"input": [-62.5, -83.0], "expected": -62.49999999874985}, {"input": [-62.5, -82.5], "expected": -62.49999999793884}, {"input": [-62.5, -82.0], "expected": -62.49999999660173}, {"input": [-62.5, -81.5], "expected": -62.49999999439721}, {"input": [-62.5, -81.0], "expected": -62.499999990762554}, {"input": [-62.5, -80.5], "expected": -62.49999998477002}, {"input": [-62.5, -80.0], "expected": -62.49999997489001}, {"input": [-62.5, -79.5], "expected": -62.499999958600625}, {"input": [-62.5, -79.0], "expected": -62.49999993174397}, {"input": [-62.5, -78.5], "expected": -62.49999988746483}, {"input": [-62.5, -78.0], "expected": -62.49999981446088}, {"input": [-62.5, -77.5], "expected": -62.499999694097724}, {"input": [-62.5, -77.0], "expected": -62.49999949565247}, {"input": [-62.5, -76.5], "expected": -62.499999168471625}, {"input": [-62.5, -76.0], "expected": -62.499998629041855}, {"input": [-62.5, -75.5], "expected": -62.49999773967315}, {"input": [-62.5, -75.0], "expected": -62.49999627335377}, {"input": [-62.5, -74.5], "expected": -62.49999385580652}, {"input": [-62.5, -74.0], "expected": -62.49998986995771}, {"input": [-62.5, -73.5], "expected": -62.49998329843868}, {"input": [-62.5, -73.0], "expected": -62.49997246392977}, {"input": [-62.5, -72.5], "expected": -62.49995460110078}, {"input": [-62.5, -72.0], "expected": -62.49992515097137}, {"input": [-62.5, -71.5], "expected": -62.49987659781028}, {"input": [-62.5, -71.0], "expected": -62.49979655232787}, {"input": [-62.5, -70.5], "expected": -62.4996645936271}, {"input": [-62.5, -70.0], "expected": -62.49944706852464}, {"input": [-62.5, -69.5], "expected": -62.49908853354623}, {"input": [-62.5, -69.0], "expected": -62.49849768984024}, {"input": [-62.5, -68.5], "expected": -62.49752431486227}, {"input": [-62.5, -68.0], "expected": -62.49592155672943}, {"input": [-62.5, -67.5], "expected": -62.49328465151088}, {"input": [-62.5, -67.0], "expected": -62.4889522551514}, {"input": [-62.5, -66.5], "expected": -62.48185007208219}, {"input": [-62.5, -66.0], "expected": -62.47024958172738}, {"input": [-62.5, -65.5], "expected": -62.451412648426256}, {"input": [-62.5, -65.0], "expected": -62.42111026570745}, {"input": [-62.5, -64.5], "expected": -62.37307198895703}, {"input": [-62.5, -64.0], "expected": -62.29858672201725}, {"input": [-62.5, -63.5], "expected": -62.18673831248178}, {"input": [-62.5, -63.0], "expected": -62.02592301581989}, {"input": [-62.5, -62.5], "expected": -61.80685281944005}, {"input": [-62.5, -62.0], "expected": -61.52592301581989}, {"input": [-62.5, -61.5], "expected": -61.18673831248178}, {"input": [-62.5, -61.0], "expected": -60.79858672201725}, {"input": [-62.5, -60.5], "expected": -60.37307198895703}, {"input": [-62.5, -60.0], "expected": -59.92111026570745}, {"input": [-62.5, -59.5], "expected": -59.451412648426256}, {"input": [-62.5, -59.0], "expected": -58.97024958172738}, {"input": [-62.5, -58.5], "expected": -58.48185007208219}, {"input": [-62.5, -58.0], "expected": -57.9889522551514}, {"input": [-62.5, -57.5], "expected": -57.49328465151088}, {"input": [-62.5, -57.0], "expected": -56.99592155672943}, {"input": [-62.5, -56.5], "expected": -56.49752431486227}, {"input": [-62.5, -56.0], "expected": -55.99849768984024}, {"input": [-62.5, -55.5], "expected": -55.49908853354623}, {"input": [-62.5, -55.0], "expected": -54.99944706852464}, {"input": [-62.5, -54.5], "expected": -54.4996645936271}, {"input": [-62.5, -54.0], "expected": -53.99979655232787}, {"input": [-62.5, -53.5], "expected": -53.49987659781028}, {"input": [-62.5, -53.0], "expected": -52.99992515097137}, {"input": [-62.5, -52.5], "expected": -52.49995460110078}, {"input": [-62.5, -52.0], "expected": -51.99997246392977}, {"input": [-62.5, -51.5], "expected": -51.49998329843868}, {"input": [-62.5, -51.0], "expected": -50.99998986995771}, {"input": [-62.5, -50.5], "expected": -50.49999385580652}, {"input": [-62.5, -50.0], "expected": -49.99999627335377}, {"input": [-62.5, -49.5], "expected": -49.49999773967315}, {"input": [-62.5, -49.0], "expected": -48.999998629041855}, {"input": [-62.5, -48.5], "expected": -48.499999168471625}, {"input": [-62.5, -48.0], "expected": -47.99999949565247}, {"input": [-62.5, -47.5], "expected": -47.499999694097724}, {"input": [-62.5, -47.0], "expected": -46.99999981446088}, {"input": [-62.5, -46.5], "expected": -46.49999988746483}, {"input": [-62.5, -46.0], "expected": -45.99999993174397}, {"input": [-62.5, -45.5], "expected": -45.499999958600625}, {"input": [-62.5, -45.0], "expected": -44.99999997489001}, {"input": [-62.5, -44.5], "expected": -44.49999998477002}, {"input": [-62.5, -44.0], "expected": -43.999999990762554}, {"input": [-62.5, -43.5], "expected": -43.49999999439721}, {"input": [-62.5, -43.0], "expected": -42.99999999660173}, {"input": [-62.5, -42.5], "expected": -42.49999999793884}, {"input": [-62.5, -42.0], "expected": -41.99999999874985}, {"input": [-62.5, -41.5], "expected": -41.499999999241744}, {"input": [-62.5, -41.0], "expected": -40.999999999540094}, {"input": [-62.5, -40.5], "expected": -40.499999999721055}, {"input": [-62.5, -40.0], "expected": -39.99999999983081}, {"input": [-62.5, -39.5], "expected": -39.49999999989738}, {"input": [-62.5, -39.0], "expected": -38.99999999993776}, {"input": [-62.5, -38.5], "expected": -38.49999999996225}, {"input": [-62.5, -38.0], "expected": -37.9999999999771}, {"input": [-62.5, -37.5], "expected": -37.49999999998611}, {"input": [-62.5, -37.0], "expected": -36.99999999999158}, {"input": [-62.5, -36.5], "expected": -36.49999999999489}, {"input": [-62.5, -36.0], "expected": -35.9999999999969}, {"input": [-62.5, -35.5], "expected": -35.49999999999812}, {"input": [-62.5, -35.0], "expected": -34.99999999999886}, {"input": [-62.5, -34.5], "expected": -34.49999999999931}, {"input": [-62.5, -34.0], "expected": -33.99999999999958}, {"input": [-62.5, -33.5], "expected": -33.499999999999744}, {"input": [-62.5, -33.0], "expected": -32.999999999999844}, {"input": [-62.5, -32.5], "expected": -32.49999999999991}, {"input": [-62.5, -32.0], "expected": -31.999999999999943}, {"input": [-62.5, -31.5], "expected": -31.499999999999964}, {"input": [-62.5, -31.0], "expected": -30.99999999999998}, {"input": [-62.5, -30.5], "expected": -30.499999999999986}, {"input": [-62.5, -30.0], "expected": -29.999999999999993}, {"input": [-62.5, -29.5], "expected": -29.499999999999996}, {"input": [-62.5, -29.0], "expected": -28.999999999999996}, {"input": [-62.5, -28.5], "expected": -28.5}, {"input": [-62.5, -28.0], "expected": -28.0}, {"input": [-62.5, -27.5], "expected": -27.5}, {"input": [-62.5, -27.0], "expected": -27.0}, {"input": [-62.5, -26.5], "expected": -26.5}, {"input": [-62.5, -26.0], "expected": -26.0}, {"input": [-62.5, -25.5], "expected": -25.5}, {"input": [-62.5, -25.0], "expected": -25.0}, {"input": [-62.5, -24.5], "expected": -24.5}, {"input": [-62.5, -24.0], "expected": -24.0}, {"input": [-62.5, -23.5], "expected": -23.5}, {"input": [-62.5, -23.0], "expected": -23.0}, {"input": [-62.5, -22.5], "expected": -22.5}, {"input": [-62.5, -22.0], "expected": -22.0}, {"input": [-62.5, -21.5], "expected": -21.5}, {"input": [-62.5, -21.0], "expected": -21.0}, {"input": [-62.5, -20.5], "expected": -20.5}, {"input": [-62.5, -20.0], "expected": -20.0}, {"input": [-62.5, -19.5], "expected": -19.5}, {"input": [-62.5, -19.0], "expected": -19.0}, {"input": [-62.5, -18.5], "expected": -18.5}, {"input": [-62.5, -18.0], "expected": -18.0}, {"input": [-62.5, -17.5], "expected": -17.5}, {"input": [-62.5, -17.0], "expected": -17.0}, {"input": [-62.5, -16.5], "expected": -16.5}, {"input": [-62.5, -16.0], "expected": -16.0}, {"input": [-62.5, -15.5], "expected": -15.5}, {"input": [-62.5, -15.0], "expected": -15.0}, {"input": [-62.5, -14.5], "expected": -14.5}, {"input": [-62.5, -14.0], "expected": -14.0}, {"input": [-62.5, -13.5], "expected": -13.5}, {"input": [-62.5, -13.0], "expected": -13.0}, {"input": [-62.5, -12.5], "expected": -12.5}, {"input": [-62.5, -12.0], "expected": -12.0}, {"input": [-62.5, -11.5], "expected": -11.5}, {"input": [-62.5, -11.0], "expected": -11.0}, {"input": [-62.5, -10.5], "expected": -10.5}, {"input": [-62.5, -10.0], "expected": -10.0}, {"input": [-62.5, -9.5], "expected": -9.5}, {"input": [-62.5, -9.0], "expected": -9.0}, {"input": [-62.5, -8.5], "expected": -8.5}, {"input": [-62.5, -8.0], "expected": -8.0}, {"input": [-62.5, -7.5], "expected": -7.5}, {"input": [-62.5, -7.0], "expected": -7.0}, {"input": [-62.5, -6.5], "expected": -6.5}, {"input": [-62.5, -6.0], "expected": -6.0}, {"input": [-62.5, -5.5], "expected": -5.5}, {"input": [-62.5, -5.0], "expected": -5.0}, {"input": [-62.5, -4.5], "expected": -4.5}, {"input": [-62.5, -4.0], "expected": -4.0}, {"input": [-62.5, -3.5], "expected": -3.5}, {"input": [-62.5, -3.0], "expected": -3.0}, {"input": [-62.5, -2.5], "expected": -2.5}, {"input": [-62.5, -2.0], "expected": -2.0}, {"input": [-62.5, -1.5], "expected": -1.5}, {"input": [-62.5, -1.0], "expected": -1.0}, {"input": [-62.5, -0.5], "expected": -0.5}, {"input": [-62.5, 0.0], "expected": 7.187781739060989e-28}, {"input": [-62.5, 0.5], "expected": 0.5}, {"input": [-62.5, 1.0], "expected": 1.0}, {"input": [-62.5, 1.5], "expected": 1.5}, {"input": [-62.5, 2.0], "expected": 2.0}, {"input": [-62.5, 2.5], "expected": 2.5}, {"input": [-62.5, 3.0], "expected": 3.0}, {"input": [-62.5, 3.5], "expected": 3.5}, {"input": [-62.5, 4.0], "expected": 4.0}, {"input": [-62.5, 4.5], "expected": 4.5}, {"input": [-62.5, 5.0], "expected": 5.0}, {"input": [-62.5, 5.5], "expected": 5.5}, {"input": [-62.5, 6.0], "expected": 6.0}, {"input": [-62.5, 6.5], "expected": 6.5}, {"input": [-62.5, 7.0], "expected": 7.0}, {"input": [-62.5, 7.5], "expected": 7.5}, {"input": [-62.5, 8.0], "expected": 8.0}, {"input": [-62.5, 8.5], "expected": 8.5}, {"input": [-62.5, 9.0], "expected": 9.0}, {"input": [-62.5, 9.5], "expected": 9.5}, {"input": [-62.5, 10.0], "expected": 10.0}, {"input": [-62.5, 10.5], "expected": 10.5}, {"input": [-62.5, 11.0], "expected": 11.0}, {"input": [-62.5, 11.5], "expected": 11.5}, {"input": [-62.5, 12.0], "expected": 12.0}, {"input": [-62.5, 12.5], "expected": 12.5}, {"input": [-62.5, 13.0], "expected": 13.0}, {"input": [-62.5, 13.5], "expected": 13.5}, {"input": [-62.5, 14.0], "expected": 14.0}, {"input": [-62.5, 14.5], "expected": 14.5}, {"input": [-62.5, 15.0], "expected": 15.0}, {"input": [-62.5, 15.5], "expected": 15.5}, {"input": [-62.5, 16.0], "expected": 16.0}, {"input": [-62.5, 16.5], "expected": 16.5}, {"input": [-62.5, 17.0], "expected": 17.0}, {"input": [-62.5, 17.5], "expected": 17.5}, {"input": [-62.5, 18.0], "expected": 18.0}, {"input": [-62.5, 18.5], "expected": 18.5}, {"input": [-62.5, 19.0], "expected": 19.0}, {"input": [-62.5, 19.5], "expected": 19.5}, {"input": [-62.5, 20.0], "expected": 20.0}, {"input": [-62.5, 20.5], "expected": 20.5}, {"input": [-62.5, 21.0], "expected": 21.0}, {"input": [-62.5, 21.5], "expected": 21.5}, {"input": [-62.5, 22.0], "expected": 22.0}, {"input": [-62.5, 22.5], "expected": 22.5}, {"input": [-62.5, 23.0], "expected": 23.0}, {"input": [-62.5, 23.5], "expected": 23.5}, {"input": [-62.5, 24.0], "expected": 24.0}, {"input": [-62.5, 24.5], "expected": 24.5}, {"input": [-62.5, 25.0], "expected": 25.0}, {"input": [-62.5, 25.5], "expected": 25.5}, {"input": [-62.5, 26.0], "expected": 26.0}, {"input": [-62.5, 26.5], "expected": 26.5}, {"input": [-62.5, 27.0], "expected": 27.0}, {"input": [-62.5, 27.5], "expected": 27.5}, {"input": [-62.5, 28.0], "expected": 28.0}, {"input": [-62.5, 28.5], "expected": 28.5}, {"input": [-62.5, 29.0], "expected": 29.0}, {"input": [-62.5, 29.5], "expected": 29.5}, {"input": [-62.5, 30.0], "expected": 30.0}, {"input": [-62.5, 30.5], "expected": 30.5}, {"input": [-62.5, 31.0], "expected": 31.0}, {"input": [-62.5, 31.5], "expected": 31.5}, {"input": [-62.5, 32.0], "expected": 32.0}, {"input": [-62.5, 32.5], "expected": 32.5}, {"input": [-62.5, 33.0], "expected": 33.0}, {"input": [-62.5, 33.5], "expected": 33.5}, {"input": [-62.5, 34.0], "expected": 34.0}, {"input": [-62.5, 34.5], "expected": 34.5}, {"input": [-62.5, 35.0], "expected": 35.0}, {"input": [-62.5, 35.5], "expected": 35.5}, {"input": [-62.5, 36.0], "expected": 36.0}, {"input": [-62.5, 36.5], "expected": 36.5}, {"input": [-62.5, 37.0], "expected": 37.0}, {"input": [-62.5, 37.5], "expected": 37.5}, {"input": [-62.5, 38.0], "expected": 38.0}, {"input": [-62.5, 38.5], "expected": 38.5}, {"input": [-62.5, 39.0], "expected": 39.0}, {"input": [-62.5, 39.5], "expected": 39.5}, {"input": [-62.5, 40.0], "expected": 40.0}, {"input": [-62.5, 40.5], "expected": 40.5}, {"input": [-62.5, 41.0], "expected": 41.0}, {"input": [-62.5, 41.5], "expected": 41.5}, {"input": [-62.5, 42.0], "expected": 42.0}, {"input": [-62.5, 42.5], "expected": 42.5}, {"input": [-62.5, 43.0], "expected": 43.0}, {"input": [-62.5, 43.5], "expected": 43.5}, {"input": [-62.5, 44.0], "expected": 44.0}, {"input": [-62.5, 44.5], "expected": 44.5}, {"input": [-62.5, 45.0], "expected": 45.0}, {"input": [-62.5, 45.5], "expected": 45.5}, {"input": [-62.5, 46.0], "expected": 46.0}, {"input": [-62.5, 46.5], "expected": 46.5}, {"input": [-62.5, 47.0], "expected": 47.0}, {"input": [-62.5, 47.5], "expected": 47.5}, {"input": [-62.5, 48.0], "expected": 48.0}, {"input": [-62.5, 48.5], "expected": 48.5}, {"input": [-62.5, 49.0], "expected": 49.0}, {"input": [-62.5, 49.5], "expected": 49.5}, {"input": [-62.5, 50.0], "expected": 50.0}, {"input": [-62.5, 50.5], "expected": 50.5}, {"input": [-62.5, 51.0], "expected": 51.0}, {"input": [-62.5, 51.5], "expected": 51.5}, {"input": [-62.5, 52.0], "expected": 52.0}, {"input": [-62.5, 52.5], "expected": 52.5}, {"input": [-62.5, 53.0], "expected": 53.0}, {"input": [-62.5, 53.5], "expected": 53.5}, {"input": [-62.5, 54.0], "expected": 54.0}, {"input": [-62.5, 54.5], "expected": 54.5}, {"input": [-62.5, 55.0], "expected": 55.0}, {"input": [-62.5, 55.5], "expected": 55.5}, {"input": [-62.5, 56.0], "expected": 56.0}, {"input": [-62.5, 56.5], "expected": 56.5}, {"input": [-62.5, 57.0], "expected": 57.0}, {"input": [-62.5, 57.5], "expected": 57.5}, {"input": [-62.5, 58.0], "expected": 58.0}, {"input": [-62.5, 58.5], "expected": 58.5}, {"input": [-62.5, 59.0], "expected": 59.0}, {"input": [-62.5, 59.5], "expected": 59.5}, {"input": [-62.5, 60.0], "expected": 60.0}, {"input": [-62.5, 60.5], "expected": 60.5}, {"input": [-62.5, 61.0], "expected": 61.0}, {"input": [-62.5, 61.5], "expected": 61.5}, {"input": [-62.5, 62.0], "expected": 62.0}, {"input": [-62.5, 62.5], "expected": 62.5}, {"input": [-62.5, 63.0], "expected": 63.0}, {"input": [-62.5, 63.5], "expected": 63.5}, {"input": [-62.5, 64.0], "expected": 64.0}, {"input": [-62.5, 64.5], "expected": 64.5}, {"input": [-62.5, 65.0], "expected": 65.0}, {"input": [-62.5, 65.5], "expected": 65.5}, {"input": [-62.5, 66.0], "expected": 66.0}, {"input": [-62.5, 66.5], "expected": 66.5}, {"input": [-62.5, 67.0], "expected": 67.0}, {"input": [-62.5, 67.5], "expected": 67.5}, {"input": [-62.5, 68.0], "expected": 68.0}, {"input": [-62.5, 68.5], "expected": 68.5}, {"input": [-62.5, 69.0], "expected": 69.0}, {"input": [-62.5, 69.5], "expected": 69.5}, {"input": [-62.5, 70.0], "expected": 70.0}, {"input": [-62.5, 70.5], "expected": 70.5}, {"input": [-62.5, 71.0], "expected": 71.0}, {"input": [-62.5, 71.5], "expected": 71.5}, {"input": [-62.5, 72.0], "expected": 72.0}, {"input": [-62.5, 72.5], "expected": 72.5}, {"input": [-62.5, 73.0], "expected": 73.0}, {"input": [-62.5, 73.5], "expected": 73.5}, {"input": [-62.5, 74.0], "expected": 74.0}, {"input": [-62.5, 74.5], "expected": 74.5}, {"input": [-62.5, 75.0], "expected": 75.0}, {"input": [-62.5, 75.5], "expected": 75.5}, {"input": [-62.5, 76.0], "expected": 76.0}, {"input": [-62.5, 76.5], "expected": 76.5}, {"input": [-62.5, 77.0], "expected": 77.0}, {"input": [-62.5, 77.5], "expected": 77.5}, {"input": [-62.5, 78.0], "expected": 78.0}, {"input": [-62.5, 78.5], "expected": 78.5}, {"input": [-62.5, 79.0], "expected": 79.0}, {"input": [-62.5, 79.5], "expected": 79.5}, {"input": [-62.5, 80.0], "expected": 80.0}, {"input": [-62.5, 80.5], "expected": 80.5}, {"input": [-62.5, 81.0], "expected": 81.0}, {"input": [-62.5, 81.5], "expected": 81.5}, {"input": [-62.5, 82.0], "expected": 82.0}, {"input": [-62.5, 82.5], "expected": 82.5}, {"input": [-62.5, 83.0], "expected": 83.0}, {"input": [-62.5, 83.5], "expected": 83.5}, {"input": [-62.5, 84.0], "expected": 84.0}, {"input": [-62.5, 84.5], "expected": 84.5}, {"input": [-62.5, 85.0], "expected": 85.0}, {"input": [-62.5, 85.5], "expected": 85.5}, {"input": [-62.5, 86.0], "expected": 86.0}, {"input": [-62.5, 86.5], "expected": 86.5}, {"input": [-62.5, 87.0], "expected": 87.0}, {"input": [-62.5, 87.5], "expected": 87.5}, {"input": [-62.5, 88.0], "expected": 88.0}, {"input": [-62.5, 88.5], "expected": 88.5}, {"input": [-62.5, 89.0], "expected": 89.0}, {"input": [-62.5, 89.5], "expected": 89.5}, {"input": [-62.5, 90.0], "expected": 90.0}, {"input": [-62.5, 90.5], "expected": 90.5}, {"input": [-62.5, 91.0], "expected": 91.0}, {"input": [-62.5, 91.5], "expected": 91.5}, {"input": [-62.5, 92.0], "expected": 92.0}, {"input": [-62.5, 92.5], "expected": 92.5}, {"input": [-62.5, 93.0], "expected": 93.0}, {"input": [-62.5, 93.5], "expected": 93.5}, {"input": [-62.5, 94.0], "expected": 94.0}, {"input": [-62.5, 94.5], "expected": 94.5}, {"input": [-62.5, 95.0], "expected": 95.0}, {"input": [-62.5, 95.5], "expected": 95.5}, {"input": [-62.5, 96.0], "expected": 96.0}, {"input": [-62.5, 96.5], "expected": 96.5}, {"input": [-62.5, 97.0], "expected": 97.0}, {"input": [-62.5, 97.5], "expected": 97.5}, {"input": [-62.5, 98.0], "expected": 98.0}, {"input": [-62.5, 98.5], "expected": 98.5}, {"input": [-62.5, 99.0], "expected": 99.0}, {"input": [-62.5, 99.5], "expected": 99.5}, {"input": [-62.0, -100.0], "expected": -62.0}, {"input": [-62.0, -99.5], "expected": -62.0}, {"input": [-62.0, -99.0], "expected": -62.0}, {"input": [-62.0, -98.5], "expected": -62.0}, {"input": [-62.0, -98.0], "expected": -62.0}, {"input": [-62.0, -97.5], "expected": -62.0}, {"input": [-62.0, -97.0], "expected": -62.0}, {"input": [-62.0, -96.5], "expected": -62.0}, {"input": [-62.0, -96.0], "expected": -62.0}, {"input": [-62.0, -95.5], "expected": -62.0}, {"input": [-62.0, -95.0], "expected": -61.99999999999999}, {"input": [-62.0, -94.5], "expected": -61.99999999999999}, {"input": [-62.0, -94.0], "expected": -61.999999999999986}, {"input": [-62.0, -93.5], "expected": -61.99999999999998}, {"input": [-62.0, -93.0], "expected": -61.999999999999964}, {"input": [-62.0, -92.5], "expected": -61.99999999999994}, {"input": [-62.0, -92.0], "expected": -61.99999999999991}, {"input": [-62.0, -91.5], "expected": -61.999999999999844}, {"input": [-62.0, -91.0], "expected": -61.999999999999744}, {"input": [-62.0, -90.5], "expected": -61.99999999999958}, {"input": [-62.0, -90.0], "expected": -61.99999999999931}, {"input": [-62.0, -89.5], "expected": -61.99999999999886}, {"input": [-62.0, -89.0], "expected": -61.99999999999812}, {"input": [-62.0, -88.5], "expected": -61.9999999999969}, {"input": [-62.0, -88.0], "expected": -61.99999999999489}, {"input": [-62.0, -87.5], "expected": -61.99999999999158}, {"input": [-62.0, -87.0], "expected": -61.99999999998611}, {"input": [-62.0, -86.5], "expected": -61.9999999999771}, {"input": [-62.0, -86.0], "expected": -61.99999999996225}, {"input": [-62.0, -85.5], "expected": -61.99999999993776}, {"input": [-62.0, -85.0], "expected": -61.99999999989738}, {"input": [-62.0, -84.5], "expected": -61.99999999983081}, {"input": [-62.0, -84.0], "expected": -61.999999999721055}, {"input": [-62.0, -83.5], "expected": -61.999999999540094}, {"input": [-62.0, -83.0], "expected": -61.999999999241744}, {"input": [-62.0, -82.5], "expected": -61.99999999874985}, {"input": [-62.0, -82.0], "expected": -61.99999999793884}, {"input": [-62.0, -81.5], "expected": -61.99999999660173}, {"input": [-62.0, -81.0], "expected": -61.99999999439721}, {"input": [-62.0, -80.5], "expected": -61.999999990762554}, {"input": [-62.0, -80.0], "expected": -61.99999998477002}, {"input": [-62.0, -79.5], "expected": -61.99999997489001}, {"input": [-62.0, -79.0], "expected": -61.999999958600625}, {"input": [-62.0, -78.5], "expected": -61.99999993174397}, {"input": [-62.0, -78.0], "expected": -61.99999988746483}, {"input": [-62.0, -77.5], "expected": -61.99999981446088}, {"input": [-62.0, -77.0], "expected": -61.999999694097724}, {"input": [-62.0, -76.5], "expected": -61.99999949565247}, {"input": [-62.0, -76.0], "expected": -61.999999168471625}, {"input": [-62.0, -75.5], "expected": -61.999998629041855}, {"input": [-62.0, -75.0], "expected": -61.99999773967315}, {"input": [-62.0, -74.5], "expected": -61.99999627335377}, {"input": [-62.0, -74.0], "expected": -61.99999385580652}, {"input": [-62.0, -73.5], "expected": -61.99998986995771}, {"input": [-62.0, -73.0], "expected": -61.99998329843868}, {"input": [-62.0, -72.5], "expected": -61.99997246392977}, {"input": [-62.0, -72.0], "expected": -61.99995460110078}, {"input": [-62.0, -71.5], "expected": -61.99992515097137}, {"input": [-62.0, -71.0], "expected": -61.99987659781028}, {"input": [-62.0, -70.5], "expected": -61.99979655232787}, {"input": [-62.0, -70.0], "expected": -61.9996645936271}, {"input": [-62.0, -69.5], "expected": -61.99944706852464}, {"input": [-62.0, -69.0], "expected": -61.99908853354623}, {"input": [-62.0, -68.5], "expected": -61.99849768984024}, {"input": [-62.0, -68.0], "expected": -61.99752431486227}, {"input": [-62.0, -67.5], "expected": -61.99592155672943}, {"input": [-62.0, -67.0], "expected": -61.99328465151088}, {"input": [-62.0, -66.5], "expected": -61.9889522551514}, {"input": [-62.0, -66.0], "expected": -61.98185007208219}, {"input": [-62.0, -65.5], "expected": -61.97024958172738}, {"input": [-62.0, -65.0], "expected": -61.951412648426256}, {"input": [-62.0, -64.5], "expected": -61.92111026570745}, {"input": [-62.0, -64.0], "expected": -61.87307198895703}, {"input": [-62.0, -63.5], "expected": -61.79858672201725}, {"input": [-62.0, -63.0], "expected": -61.68673831248178}, {"input": [-62.0, -62.5], "expected": -61.52592301581989}, {"input": [-62.0, -62.0], "expected": -61.30685281944005}, {"input": [-62.0, -61.5], "expected": -61.02592301581989}, {"input": [-62.0, -61.0], "expected": -60.68673831248178}, {"input": [-62.0, -60.5], "expected": -60.29858672201725}, {"input": [-62.0, -60.0], "expected": -59.87307198895703}, {"input": [-62.0, -59.5], "expected": -59.42111026570745}, {"input": [-62.0, -59.0], "expected": -58.951412648426256}, {"input": [-62.0, -58.5], "expected": -58.47024958172738}, {"input": [-62.0, -58.0], "expected": -57.98185007208219}, {"input": [-62.0, -57.5], "expected": -57.4889522551514}, {"input": [-62.0, -57.0], "expected": -56.99328465151088}, {"input": [-62.0, -56.5], "expected": -56.49592155672943}, {"input": [-62.0, -56.0], "expected": -55.99752431486227}, {"input": [-62.0, -55.5], "expected": -55.49849768984024}, {"input": [-62.0, -55.0], "expected": -54.99908853354623}, {"input": [-62.0, -54.5], "expected": -54.49944706852464}, {"input": [-62.0, -54.0], "expected": -53.9996645936271}, {"input": [-62.0, -53.5], "expected": -53.49979655232787}, {"input": [-62.0, -53.0], "expected": -52.99987659781028}, {"input": [-62.0, -52.5], "expected": -52.49992515097137}, {"input": [-62.0, -52.0], "expected": -51.99995460110078}, {"input": [-62.0, -51.5], "expected": -51.49997246392977}, {"input": [-62.0, -51.0], "expected": -50.99998329843868}, {"input": [-62.0, -50.5], "expected": -50.49998986995771}, {"input": [-62.0, -50.0], "expected": -49.99999385580652}, {"input": [-62.0, -49.5], "expected": -49.49999627335377}, {"input": [-62.0, -49.0], "expected": -48.99999773967315}, {"input": [-62.0, -48.5], "expected": -48.499998629041855}, {"input": [-62.0, -48.0], "expected": -47.999999168471625}, {"input": [-62.0, -47.5], "expected": -47.49999949565247}, {"input": [-62.0, -47.0], "expected": -46.999999694097724}, {"input": [-62.0, -46.5], "expected": -46.49999981446088}, {"input": [-62.0, -46.0], "expected": -45.99999988746483}, {"input": [-62.0, -45.5], "expected": -45.49999993174397}, {"input": [-62.0, -45.0], "expected": -44.999999958600625}, {"input": [-62.0, -44.5], "expected": -44.49999997489001}, {"input": [-62.0, -44.0], "expected": -43.99999998477002}, {"input": [-62.0, -43.5], "expected": -43.499999990762554}, {"input": [-62.0, -43.0], "expected": -42.99999999439721}, {"input": [-62.0, -42.5], "expected": -42.49999999660173}, {"input": [-62.0, -42.0], "expected": -41.99999999793884}, {"input": [-62.0, -41.5], "expected": -41.49999999874985}, {"input": [-62.0, -41.0], "expected": -40.999999999241744}, {"input": [-62.0, -40.5], "expected": -40.499999999540094}, {"input": [-62.0, -40.0], "expected": -39.999999999721055}, {"input": [-62.0, -39.5], "expected": -39.49999999983081}, {"input": [-62.0, -39.0], "expected": -38.99999999989738}, {"input": [-62.0, -38.5], "expected": -38.49999999993776}, {"input": [-62.0, -38.0], "expected": -37.99999999996225}, {"input": [-62.0, -37.5], "expected": -37.4999999999771}, {"input": [-62.0, -37.0], "expected": -36.99999999998611}, {"input": [-62.0, -36.5], "expected": -36.49999999999158}, {"input": [-62.0, -36.0], "expected": -35.99999999999489}, {"input": [-62.0, -35.5], "expected": -35.4999999999969}, {"input": [-62.0, -35.0], "expected": -34.99999999999812}, {"input": [-62.0, -34.5], "expected": -34.49999999999886}, {"input": [-62.0, -34.0], "expected": -33.99999999999931}, {"input": [-62.0, -33.5], "expected": -33.49999999999958}, {"input": [-62.0, -33.0], "expected": -32.999999999999744}, {"input": [-62.0, -32.5], "expected": -32.499999999999844}, {"input": [-62.0, -32.0], "expected": -31.999999999999908}, {"input": [-62.0, -31.5], "expected": -31.499999999999943}, {"input": [-62.0, -31.0], "expected": -30.999999999999964}, {"input": [-62.0, -30.5], "expected": -30.49999999999998}, {"input": [-62.0, -30.0], "expected": -29.999999999999986}, {"input": [-62.0, -29.5], "expected": -29.499999999999993}, {"input": [-62.0, -29.0], "expected": -28.999999999999996}, {"input": [-62.0, -28.5], "expected": -28.499999999999996}, {"input": [-62.0, -28.0], "expected": -28.0}, {"input": [-62.0, -27.5], "expected": -27.5}, {"input": [-62.0, -27.0], "expected": -27.0}, {"input": [-62.0, -26.5], "expected": -26.5}, {"input": [-62.0, -26.0], "expected": -26.0}, {"input": [-62.0, -25.5], "expected": -25.5}, {"input": [-62.0, -25.0], "expected": -25.0}, {"input": [-62.0, -24.5], "expected": -24.5}, {"input": [-62.0, -24.0], "expected": -24.0}, {"input": [-62.0, -23.5], "expected": -23.5}, {"input": [-62.0, -23.0], "expected": -23.0}, {"input": [-62.0, -22.5], "expected": -22.5}, {"input": [-62.0, -22.0], "expected": -22.0}, {"input": [-62.0, -21.5], "expected": -21.5}, {"input": [-62.0, -21.0], "expected": -21.0}, {"input": [-62.0, -20.5], "expected": -20.5}, {"input": [-62.0, -20.0], "expected": -20.0}, {"input": [-62.0, -19.5], "expected": -19.5}, {"input": [-62.0, -19.0], "expected": -19.0}, {"input": [-62.0, -18.5], "expected": -18.5}, {"input": [-62.0, -18.0], "expected": -18.0}, {"input": [-62.0, -17.5], "expected": -17.5}, {"input": [-62.0, -17.0], "expected": -17.0}, {"input": [-62.0, -16.5], "expected": -16.5}, {"input": [-62.0, -16.0], "expected": -16.0}, {"input": [-62.0, -15.5], "expected": -15.5}, {"input": [-62.0, -15.0], "expected": -15.0}, {"input": [-62.0, -14.5], "expected": -14.5}, {"input": [-62.0, -14.0], "expected": -14.0}, {"input": [-62.0, -13.5], "expected": -13.5}, {"input": [-62.0, -13.0], "expected": -13.0}, {"input": [-62.0, -12.5], "expected": -12.5}, {"input": [-62.0, -12.0], "expected": -12.0}, {"input": [-62.0, -11.5], "expected": -11.5}, {"input": [-62.0, -11.0], "expected": -11.0}, {"input": [-62.0, -10.5], "expected": -10.5}, {"input": [-62.0, -10.0], "expected": -10.0}, {"input": [-62.0, -9.5], "expected": -9.5}, {"input": [-62.0, -9.0], "expected": -9.0}, {"input": [-62.0, -8.5], "expected": -8.5}, {"input": [-62.0, -8.0], "expected": -8.0}, {"input": [-62.0, -7.5], "expected": -7.5}, {"input": [-62.0, -7.0], "expected": -7.0}, {"input": [-62.0, -6.5], "expected": -6.5}, {"input": [-62.0, -6.0], "expected": -6.0}, {"input": [-62.0, -5.5], "expected": -5.5}, {"input": [-62.0, -5.0], "expected": -5.0}, {"input": [-62.0, -4.5], "expected": -4.5}, {"input": [-62.0, -4.0], "expected": -4.0}, {"input": [-62.0, -3.5], "expected": -3.5}, {"input": [-62.0, -3.0], "expected": -3.0}, {"input": [-62.0, -2.5], "expected": -2.5}, {"input": [-62.0, -2.0], "expected": -2.0}, {"input": [-62.0, -1.5], "expected": -1.5}, {"input": [-62.0, -1.0], "expected": -1.0}, {"input": [-62.0, -0.5], "expected": -0.5}, {"input": [-62.0, 0.0], "expected": 1.185064864233981e-27}, {"input": [-62.0, 0.5], "expected": 0.5}, {"input": [-62.0, 1.0], "expected": 1.0}, {"input": [-62.0, 1.5], "expected": 1.5}, {"input": [-62.0, 2.0], "expected": 2.0}, {"input": [-62.0, 2.5], "expected": 2.5}, {"input": [-62.0, 3.0], "expected": 3.0}, {"input": [-62.0, 3.5], "expected": 3.5}, {"input": [-62.0, 4.0], "expected": 4.0}, {"input": [-62.0, 4.5], "expected": 4.5}, {"input": [-62.0, 5.0], "expected": 5.0}, {"input": [-62.0, 5.5], "expected": 5.5}, {"input": [-62.0, 6.0], "expected": 6.0}, {"input": [-62.0, 6.5], "expected": 6.5}, {"input": [-62.0, 7.0], "expected": 7.0}, {"input": [-62.0, 7.5], "expected": 7.5}, {"input": [-62.0, 8.0], "expected": 8.0}, {"input": [-62.0, 8.5], "expected": 8.5}, {"input": [-62.0, 9.0], "expected": 9.0}, {"input": [-62.0, 9.5], "expected": 9.5}, {"input": [-62.0, 10.0], "expected": 10.0}, {"input": [-62.0, 10.5], "expected": 10.5}, {"input": [-62.0, 11.0], "expected": 11.0}, {"input": [-62.0, 11.5], "expected": 11.5}, {"input": [-62.0, 12.0], "expected": 12.0}, {"input": [-62.0, 12.5], "expected": 12.5}, {"input": [-62.0, 13.0], "expected": 13.0}, {"input": [-62.0, 13.5], "expected": 13.5}, {"input": [-62.0, 14.0], "expected": 14.0}, {"input": [-62.0, 14.5], "expected": 14.5}, {"input": [-62.0, 15.0], "expected": 15.0}, {"input": [-62.0, 15.5], "expected": 15.5}, {"input": [-62.0, 16.0], "expected": 16.0}, {"input": [-62.0, 16.5], "expected": 16.5}, {"input": [-62.0, 17.0], "expected": 17.0}, {"input": [-62.0, 17.5], "expected": 17.5}, {"input": [-62.0, 18.0], "expected": 18.0}, {"input": [-62.0, 18.5], "expected": 18.5}, {"input": [-62.0, 19.0], "expected": 19.0}, {"input": [-62.0, 19.5], "expected": 19.5}, {"input": [-62.0, 20.0], "expected": 20.0}, {"input": [-62.0, 20.5], "expected": 20.5}, {"input": [-62.0, 21.0], "expected": 21.0}, {"input": [-62.0, 21.5], "expected": 21.5}, {"input": [-62.0, 22.0], "expected": 22.0}, {"input": [-62.0, 22.5], "expected": 22.5}, {"input": [-62.0, 23.0], "expected": 23.0}, {"input": [-62.0, 23.5], "expected": 23.5}, {"input": [-62.0, 24.0], "expected": 24.0}, {"input": [-62.0, 24.5], "expected": 24.5}, {"input": [-62.0, 25.0], "expected": 25.0}, {"input": [-62.0, 25.5], "expected": 25.5}, {"input": [-62.0, 26.0], "expected": 26.0}, {"input": [-62.0, 26.5], "expected": 26.5}, {"input": [-62.0, 27.0], "expected": 27.0}, {"input": [-62.0, 27.5], "expected": 27.5}, {"input": [-62.0, 28.0], "expected": 28.0}, {"input": [-62.0, 28.5], "expected": 28.5}, {"input": [-62.0, 29.0], "expected": 29.0}, {"input": [-62.0, 29.5], "expected": 29.5}, {"input": [-62.0, 30.0], "expected": 30.0}, {"input": [-62.0, 30.5], "expected": 30.5}, {"input": [-62.0, 31.0], "expected": 31.0}, {"input": [-62.0, 31.5], "expected": 31.5}, {"input": [-62.0, 32.0], "expected": 32.0}, {"input": [-62.0, 32.5], "expected": 32.5}, {"input": [-62.0, 33.0], "expected": 33.0}, {"input": [-62.0, 33.5], "expected": 33.5}, {"input": [-62.0, 34.0], "expected": 34.0}, {"input": [-62.0, 34.5], "expected": 34.5}, {"input": [-62.0, 35.0], "expected": 35.0}, {"input": [-62.0, 35.5], "expected": 35.5}, {"input": [-62.0, 36.0], "expected": 36.0}, {"input": [-62.0, 36.5], "expected": 36.5}, {"input": [-62.0, 37.0], "expected": 37.0}, {"input": [-62.0, 37.5], "expected": 37.5}, {"input": [-62.0, 38.0], "expected": 38.0}, {"input": [-62.0, 38.5], "expected": 38.5}, {"input": [-62.0, 39.0], "expected": 39.0}, {"input": [-62.0, 39.5], "expected": 39.5}, {"input": [-62.0, 40.0], "expected": 40.0}, {"input": [-62.0, 40.5], "expected": 40.5}, {"input": [-62.0, 41.0], "expected": 41.0}, {"input": [-62.0, 41.5], "expected": 41.5}, {"input": [-62.0, 42.0], "expected": 42.0}, {"input": [-62.0, 42.5], "expected": 42.5}, {"input": [-62.0, 43.0], "expected": 43.0}, {"input": [-62.0, 43.5], "expected": 43.5}, {"input": [-62.0, 44.0], "expected": 44.0}, {"input": [-62.0, 44.5], "expected": 44.5}, {"input": [-62.0, 45.0], "expected": 45.0}, {"input": [-62.0, 45.5], "expected": 45.5}, {"input": [-62.0, 46.0], "expected": 46.0}, {"input": [-62.0, 46.5], "expected": 46.5}, {"input": [-62.0, 47.0], "expected": 47.0}, {"input": [-62.0, 47.5], "expected": 47.5}, {"input": [-62.0, 48.0], "expected": 48.0}, {"input": [-62.0, 48.5], "expected": 48.5}, {"input": [-62.0, 49.0], "expected": 49.0}, {"input": [-62.0, 49.5], "expected": 49.5}, {"input": [-62.0, 50.0], "expected": 50.0}, {"input": [-62.0, 50.5], "expected": 50.5}, {"input": [-62.0, 51.0], "expected": 51.0}, {"input": [-62.0, 51.5], "expected": 51.5}, {"input": [-62.0, 52.0], "expected": 52.0}, {"input": [-62.0, 52.5], "expected": 52.5}, {"input": [-62.0, 53.0], "expected": 53.0}, {"input": [-62.0, 53.5], "expected": 53.5}, {"input": [-62.0, 54.0], "expected": 54.0}, {"input": [-62.0, 54.5], "expected": 54.5}, {"input": [-62.0, 55.0], "expected": 55.0}, {"input": [-62.0, 55.5], "expected": 55.5}, {"input": [-62.0, 56.0], "expected": 56.0}, {"input": [-62.0, 56.5], "expected": 56.5}, {"input": [-62.0, 57.0], "expected": 57.0}, {"input": [-62.0, 57.5], "expected": 57.5}, {"input": [-62.0, 58.0], "expected": 58.0}, {"input": [-62.0, 58.5], "expected": 58.5}, {"input": [-62.0, 59.0], "expected": 59.0}, {"input": [-62.0, 59.5], "expected": 59.5}, {"input": [-62.0, 60.0], "expected": 60.0}, {"input": [-62.0, 60.5], "expected": 60.5}, {"input": [-62.0, 61.0], "expected": 61.0}, {"input": [-62.0, 61.5], "expected": 61.5}, {"input": [-62.0, 62.0], "expected": 62.0}, {"input": [-62.0, 62.5], "expected": 62.5}, {"input": [-62.0, 63.0], "expected": 63.0}, {"input": [-62.0, 63.5], "expected": 63.5}, {"input": [-62.0, 64.0], "expected": 64.0}, {"input": [-62.0, 64.5], "expected": 64.5}, {"input": [-62.0, 65.0], "expected": 65.0}, {"input": [-62.0, 65.5], "expected": 65.5}, {"input": [-62.0, 66.0], "expected": 66.0}, {"input": [-62.0, 66.5], "expected": 66.5}, {"input": [-62.0, 67.0], "expected": 67.0}, {"input": [-62.0, 67.5], "expected": 67.5}, {"input": [-62.0, 68.0], "expected": 68.0}, {"input": [-62.0, 68.5], "expected": 68.5}, {"input": [-62.0, 69.0], "expected": 69.0}, {"input": [-62.0, 69.5], "expected": 69.5}, {"input": [-62.0, 70.0], "expected": 70.0}, {"input": [-62.0, 70.5], "expected": 70.5}, {"input": [-62.0, 71.0], "expected": 71.0}, {"input": [-62.0, 71.5], "expected": 71.5}, {"input": [-62.0, 72.0], "expected": 72.0}, {"input": [-62.0, 72.5], "expected": 72.5}, {"input": [-62.0, 73.0], "expected": 73.0}, {"input": [-62.0, 73.5], "expected": 73.5}, {"input": [-62.0, 74.0], "expected": 74.0}, {"input": [-62.0, 74.5], "expected": 74.5}, {"input": [-62.0, 75.0], "expected": 75.0}, {"input": [-62.0, 75.5], "expected": 75.5}, {"input": [-62.0, 76.0], "expected": 76.0}, {"input": [-62.0, 76.5], "expected": 76.5}, {"input": [-62.0, 77.0], "expected": 77.0}, {"input": [-62.0, 77.5], "expected": 77.5}, {"input": [-62.0, 78.0], "expected": 78.0}, {"input": [-62.0, 78.5], "expected": 78.5}, {"input": [-62.0, 79.0], "expected": 79.0}, {"input": [-62.0, 79.5], "expected": 79.5}, {"input": [-62.0, 80.0], "expected": 80.0}, {"input": [-62.0, 80.5], "expected": 80.5}, {"input": [-62.0, 81.0], "expected": 81.0}, {"input": [-62.0, 81.5], "expected": 81.5}, {"input": [-62.0, 82.0], "expected": 82.0}, {"input": [-62.0, 82.5], "expected": 82.5}, {"input": [-62.0, 83.0], "expected": 83.0}, {"input": [-62.0, 83.5], "expected": 83.5}, {"input": [-62.0, 84.0], "expected": 84.0}, {"input": [-62.0, 84.5], "expected": 84.5}, {"input": [-62.0, 85.0], "expected": 85.0}, {"input": [-62.0, 85.5], "expected": 85.5}, {"input": [-62.0, 86.0], "expected": 86.0}, {"input": [-62.0, 86.5], "expected": 86.5}, {"input": [-62.0, 87.0], "expected": 87.0}, {"input": [-62.0, 87.5], "expected": 87.5}, {"input": [-62.0, 88.0], "expected": 88.0}, {"input": [-62.0, 88.5], "expected": 88.5}, {"input": [-62.0, 89.0], "expected": 89.0}, {"input": [-62.0, 89.5], "expected": 89.5}, {"input": [-62.0, 90.0], "expected": 90.0}, {"input": [-62.0, 90.5], "expected": 90.5}, {"input": [-62.0, 91.0], "expected": 91.0}, {"input": [-62.0, 91.5], "expected": 91.5}, {"input": [-62.0, 92.0], "expected": 92.0}, {"input": [-62.0, 92.5], "expected": 92.5}, {"input": [-62.0, 93.0], "expected": 93.0}, {"input": [-62.0, 93.5], "expected": 93.5}, {"input": [-62.0, 94.0], "expected": 94.0}, {"input": [-62.0, 94.5], "expected": 94.5}, {"input": [-62.0, 95.0], "expected": 95.0}, {"input": [-62.0, 95.5], "expected": 95.5}, {"input": [-62.0, 96.0], "expected": 96.0}, {"input": [-62.0, 96.5], "expected": 96.5}, {"input": [-62.0, 97.0], "expected": 97.0}, {"input": [-62.0, 97.5], "expected": 97.5}, {"input": [-62.0, 98.0], "expected": 98.0}, {"input": [-62.0, 98.5], "expected": 98.5}, {"input": [-62.0, 99.0], "expected": 99.0}, {"input": [-62.0, 99.5], "expected": 99.5}, {"input": [-61.5, -100.0], "expected": -61.5}, {"input": [-61.5, -99.5], "expected": -61.5}, {"input": [-61.5, -99.0], "expected": -61.5}, {"input": [-61.5, -98.5], "expected": -61.5}, {"input": [-61.5, -98.0], "expected": -61.5}, {"input": [-61.5, -97.5], "expected": -61.5}, {"input": [-61.5, -97.0], "expected": -61.5}, {"input": [-61.5, -96.5], "expected": -61.5}, {"input": [-61.5, -96.0], "expected": -61.5}, {"input": [-61.5, -95.5], "expected": -61.5}, {"input": [-61.5, -95.0], "expected": -61.5}, {"input": [-61.5, -94.5], "expected": -61.49999999999999}, {"input": [-61.5, -94.0], "expected": -61.49999999999999}, {"input": [-61.5, -93.5], "expected": -61.499999999999986}, {"input": [-61.5, -93.0], "expected": -61.49999999999998}, {"input": [-61.5, -92.5], "expected": -61.499999999999964}, {"input": [-61.5, -92.0], "expected": -61.49999999999994}, {"input": [-61.5, -91.5], "expected": -61.49999999999991}, {"input": [-61.5, -91.0], "expected": -61.499999999999844}, {"input": [-61.5, -90.5], "expected": -61.499999999999744}, {"input": [-61.5, -90.0], "expected": -61.49999999999958}, {"input": [-61.5, -89.5], "expected": -61.49999999999931}, {"input": [-61.5, -89.0], "expected": -61.49999999999886}, {"input": [-61.5, -88.5], "expected": -61.49999999999812}, {"input": [-61.5, -88.0], "expected": -61.4999999999969}, {"input": [-61.5, -87.5], "expected": -61.49999999999489}, {"input": [-61.5, -87.0], "expected": -61.49999999999158}, {"input": [-61.5, -86.5], "expected": -61.49999999998611}, {"input": [-61.5, -86.0], "expected": -61.4999999999771}, {"input": [-61.5, -85.5], "expected": -61.49999999996225}, {"input": [-61.5, -85.0], "expected": -61.49999999993776}, {"input": [-61.5, -84.5], "expected": -61.49999999989738}, {"input": [-61.5, -84.0], "expected": -61.49999999983081}, {"input": [-61.5, -83.5], "expected": -61.499999999721055}, {"input": [-61.5, -83.0], "expected": -61.499999999540094}, {"input": [-61.5, -82.5], "expected": -61.499999999241744}, {"input": [-61.5, -82.0], "expected": -61.49999999874985}, {"input": [-61.5, -81.5], "expected": -61.49999999793884}, {"input": [-61.5, -81.0], "expected": -61.49999999660173}, {"input": [-61.5, -80.5], "expected": -61.49999999439721}, {"input": [-61.5, -80.0], "expected": -61.499999990762554}, {"input": [-61.5, -79.5], "expected": -61.49999998477002}, {"input": [-61.5, -79.0], "expected": -61.49999997489001}, {"input": [-61.5, -78.5], "expected": -61.499999958600625}, {"input": [-61.5, -78.0], "expected": -61.49999993174397}, {"input": [-61.5, -77.5], "expected": -61.49999988746483}, {"input": [-61.5, -77.0], "expected": -61.49999981446088}, {"input": [-61.5, -76.5], "expected": -61.499999694097724}, {"input": [-61.5, -76.0], "expected": -61.49999949565247}, {"input": [-61.5, -75.5], "expected": -61.499999168471625}, {"input": [-61.5, -75.0], "expected": -61.499998629041855}, {"input": [-61.5, -74.5], "expected": -61.49999773967315}, {"input": [-61.5, -74.0], "expected": -61.49999627335377}, {"input": [-61.5, -73.5], "expected": -61.49999385580652}, {"input": [-61.5, -73.0], "expected": -61.49998986995771}, {"input": [-61.5, -72.5], "expected": -61.49998329843868}, {"input": [-61.5, -72.0], "expected": -61.49997246392977}, {"input": [-61.5, -71.5], "expected": -61.49995460110078}, {"input": [-61.5, -71.0], "expected": -61.49992515097137}, {"input": [-61.5, -70.5], "expected": -61.49987659781028}, {"input": [-61.5, -70.0], "expected": -61.49979655232787}, {"input": [-61.5, -69.5], "expected": -61.4996645936271}, {"input": [-61.5, -69.0], "expected": -61.49944706852464}, {"input": [-61.5, -68.5], "expected": -61.49908853354623}, {"input": [-61.5, -68.0], "expected": -61.49849768984024}, {"input": [-61.5, -67.5], "expected": -61.49752431486227}, {"input": [-61.5, -67.0], "expected": -61.49592155672943}, {"input": [-61.5, -66.5], "expected": -61.49328465151088}, {"input": [-61.5, -66.0], "expected": -61.4889522551514}, {"input": [-61.5, -65.5], "expected": -61.48185007208219}, {"input": [-61.5, -65.0], "expected": -61.47024958172738}, {"input": [-61.5, -64.5], "expected": -61.451412648426256}, {"input": [-61.5, -64.0], "expected": -61.42111026570745}, {"input": [-61.5, -63.5], "expected": -61.37307198895703}, {"input": [-61.5, -63.0], "expected": -61.29858672201725}, {"input": [-61.5, -62.5], "expected": -61.18673831248178}, {"input": [-61.5, -62.0], "expected": -61.02592301581989}, {"input": [-61.5, -61.5], "expected": -60.80685281944005}, {"input": [-61.5, -61.0], "expected": -60.52592301581989}, {"input": [-61.5, -60.5], "expected": -60.18673831248178}, {"input": [-61.5, -60.0], "expected": -59.79858672201725}, {"input": [-61.5, -59.5], "expected": -59.37307198895703}, {"input": [-61.5, -59.0], "expected": -58.92111026570745}, {"input": [-61.5, -58.5], "expected": -58.451412648426256}, {"input": [-61.5, -58.0], "expected": -57.97024958172738}, {"input": [-61.5, -57.5], "expected": -57.48185007208219}, {"input": [-61.5, -57.0], "expected": -56.9889522551514}, {"input": [-61.5, -56.5], "expected": -56.49328465151088}, {"input": [-61.5, -56.0], "expected": -55.99592155672943}, {"input": [-61.5, -55.5], "expected": -55.49752431486227}, {"input": [-61.5, -55.0], "expected": -54.99849768984024}, {"input": [-61.5, -54.5], "expected": -54.49908853354623}, {"input": [-61.5, -54.0], "expected": -53.99944706852464}, {"input": [-61.5, -53.5], "expected": -53.4996645936271}, {"input": [-61.5, -53.0], "expected": -52.99979655232787}, {"input": [-61.5, -52.5], "expected": -52.49987659781028}, {"input": [-61.5, -52.0], "expected": -51.99992515097137}, {"input": [-61.5, -51.5], "expected": -51.49995460110078}, {"input": [-61.5, -51.0], "expected": -50.99997246392977}, {"input": [-61.5, -50.5], "expected": -50.49998329843868}, {"input": [-61.5, -50.0], "expected": -49.99998986995771}, {"input": [-61.5, -49.5], "expected": -49.49999385580652}, {"input": [-61.5, -49.0], "expected": -48.99999627335377}, {"input": [-61.5, -48.5], "expected": -48.49999773967315}, {"input": [-61.5, -48.0], "expected": -47.999998629041855}, {"input": [-61.5, -47.5], "expected": -47.499999168471625}, {"input": [-61.5, -47.0], "expected": -46.99999949565247}, {"input": [-61.5, -46.5], "expected": -46.499999694097724}, {"input": [-61.5, -46.0], "expected": -45.99999981446088}, {"input": [-61.5, -45.5], "expected": -45.49999988746483}, {"input": [-61.5, -45.0], "expected": -44.99999993174397}, {"input": [-61.5, -44.5], "expected": -44.499999958600625}, {"input": [-61.5, -44.0], "expected": -43.99999997489001}, {"input": [-61.5, -43.5], "expected": -43.49999998477002}, {"input": [-61.5, -43.0], "expected": -42.999999990762554}, {"input": [-61.5, -42.5], "expected": -42.49999999439721}, {"input": [-61.5, -42.0], "expected": -41.99999999660173}, {"input": [-61.5, -41.5], "expected": -41.49999999793884}, {"input": [-61.5, -41.0], "expected": -40.99999999874985}, {"input": [-61.5, -40.5], "expected": -40.499999999241744}, {"input": [-61.5, -40.0], "expected": -39.999999999540094}, {"input": [-61.5, -39.5], "expected": -39.499999999721055}, {"input": [-61.5, -39.0], "expected": -38.99999999983081}, {"input": [-61.5, -38.5], "expected": -38.49999999989738}, {"input": [-61.5, -38.0], "expected": -37.99999999993776}, {"input": [-61.5, -37.5], "expected": -37.49999999996225}, {"input": [-61.5, -37.0], "expected": -36.9999999999771}, {"input": [-61.5, -36.5], "expected": -36.49999999998611}, {"input": [-61.5, -36.0], "expected": -35.99999999999158}, {"input": [-61.5, -35.5], "expected": -35.49999999999489}, {"input": [-61.5, -35.0], "expected": -34.9999999999969}, {"input": [-61.5, -34.5], "expected": -34.49999999999812}, {"input": [-61.5, -34.0], "expected": -33.99999999999886}, {"input": [-61.5, -33.5], "expected": -33.49999999999931}, {"input": [-61.5, -33.0], "expected": -32.99999999999958}, {"input": [-61.5, -32.5], "expected": -32.499999999999744}, {"input": [-61.5, -32.0], "expected": -31.999999999999847}, {"input": [-61.5, -31.5], "expected": -31.499999999999908}, {"input": [-61.5, -31.0], "expected": -30.999999999999943}, {"input": [-61.5, -30.5], "expected": -30.499999999999964}, {"input": [-61.5, -30.0], "expected": -29.99999999999998}, {"input": [-61.5, -29.5], "expected": -29.499999999999986}, {"input": [-61.5, -29.0], "expected": -28.999999999999993}, {"input": [-61.5, -28.5], "expected": -28.499999999999996}, {"input": [-61.5, -28.0], "expected": -27.999999999999996}, {"input": [-61.5, -27.5], "expected": -27.5}, {"input": [-61.5, -27.0], "expected": -27.0}, {"input": [-61.5, -26.5], "expected": -26.5}, {"input": [-61.5, -26.0], "expected": -26.0}, {"input": [-61.5, -25.5], "expected": -25.5}, {"input": [-61.5, -25.0], "expected": -25.0}, {"input": [-61.5, -24.5], "expected": -24.5}, {"input": [-61.5, -24.0], "expected": -24.0}, {"input": [-61.5, -23.5], "expected": -23.5}, {"input": [-61.5, -23.0], "expected": -23.0}, {"input": [-61.5, -22.5], "expected": -22.5}, {"input": [-61.5, -22.0], "expected": -22.0}, {"input": [-61.5, -21.5], "expected": -21.5}, {"input": [-61.5, -21.0], "expected": -21.0}, {"input": [-61.5, -20.5], "expected": -20.5}, {"input": [-61.5, -20.0], "expected": -20.0}, {"input": [-61.5, -19.5], "expected": -19.5}, {"input": [-61.5, -19.0], "expected": -19.0}, {"input": [-61.5, -18.5], "expected": -18.5}, {"input": [-61.5, -18.0], "expected": -18.0}, {"input": [-61.5, -17.5], "expected": -17.5}, {"input": [-61.5, -17.0], "expected": -17.0}, {"input": [-61.5, -16.5], "expected": -16.5}, {"input": [-61.5, -16.0], "expected": -16.0}, {"input": [-61.5, -15.5], "expected": -15.5}, {"input": [-61.5, -15.0], "expected": -15.0}, {"input": [-61.5, -14.5], "expected": -14.5}, {"input": [-61.5, -14.0], "expected": -14.0}, {"input": [-61.5, -13.5], "expected": -13.5}, {"input": [-61.5, -13.0], "expected": -13.0}, {"input": [-61.5, -12.5], "expected": -12.5}, {"input": [-61.5, -12.0], "expected": -12.0}, {"input": [-61.5, -11.5], "expected": -11.5}, {"input": [-61.5, -11.0], "expected": -11.0}, {"input": [-61.5, -10.5], "expected": -10.5}, {"input": [-61.5, -10.0], "expected": -10.0}, {"input": [-61.5, -9.5], "expected": -9.5}, {"input": [-61.5, -9.0], "expected": -9.0}, {"input": [-61.5, -8.5], "expected": -8.5}, {"input": [-61.5, -8.0], "expected": -8.0}, {"input": [-61.5, -7.5], "expected": -7.5}, {"input": [-61.5, -7.0], "expected": -7.0}, {"input": [-61.5, -6.5], "expected": -6.5}, {"input": [-61.5, -6.0], "expected": -6.0}, {"input": [-61.5, -5.5], "expected": -5.5}, {"input": [-61.5, -5.0], "expected": -5.0}, {"input": [-61.5, -4.5], "expected": -4.5}, {"input": [-61.5, -4.0], "expected": -4.0}, {"input": [-61.5, -3.5], "expected": -3.5}, {"input": [-61.5, -3.0], "expected": -3.0}, {"input": [-61.5, -2.5], "expected": -2.5}, {"input": [-61.5, -2.0], "expected": -2.0}, {"input": [-61.5, -1.5], "expected": -1.5}, {"input": [-61.5, -1.0], "expected": -1.0}, {"input": [-61.5, -0.5], "expected": -0.5}, {"input": [-61.5, 0.0], "expected": 1.953841648821924e-27}, {"input": [-61.5, 0.5], "expected": 0.5}, {"input": [-61.5, 1.0], "expected": 1.0}, {"input": [-61.5, 1.5], "expected": 1.5}, {"input": [-61.5, 2.0], "expected": 2.0}, {"input": [-61.5, 2.5], "expected": 2.5}, {"input": [-61.5, 3.0], "expected": 3.0}, {"input": [-61.5, 3.5], "expected": 3.5}, {"input": [-61.5, 4.0], "expected": 4.0}, {"input": [-61.5, 4.5], "expected": 4.5}, {"input": [-61.5, 5.0], "expected": 5.0}, {"input": [-61.5, 5.5], "expected": 5.5}, {"input": [-61.5, 6.0], "expected": 6.0}, {"input": [-61.5, 6.5], "expected": 6.5}, {"input": [-61.5, 7.0], "expected": 7.0}, {"input": [-61.5, 7.5], "expected": 7.5}, {"input": [-61.5, 8.0], "expected": 8.0}, {"input": [-61.5, 8.5], "expected": 8.5}, {"input": [-61.5, 9.0], "expected": 9.0}, {"input": [-61.5, 9.5], "expected": 9.5}, {"input": [-61.5, 10.0], "expected": 10.0}, {"input": [-61.5, 10.5], "expected": 10.5}, {"input": [-61.5, 11.0], "expected": 11.0}, {"input": [-61.5, 11.5], "expected": 11.5}, {"input": [-61.5, 12.0], "expected": 12.0}, {"input": [-61.5, 12.5], "expected": 12.5}, {"input": [-61.5, 13.0], "expected": 13.0}, {"input": [-61.5, 13.5], "expected": 13.5}, {"input": [-61.5, 14.0], "expected": 14.0}, {"input": [-61.5, 14.5], "expected": 14.5}, {"input": [-61.5, 15.0], "expected": 15.0}, {"input": [-61.5, 15.5], "expected": 15.5}, {"input": [-61.5, 16.0], "expected": 16.0}, {"input": [-61.5, 16.5], "expected": 16.5}, {"input": [-61.5, 17.0], "expected": 17.0}, {"input": [-61.5, 17.5], "expected": 17.5}, {"input": [-61.5, 18.0], "expected": 18.0}, {"input": [-61.5, 18.5], "expected": 18.5}, {"input": [-61.5, 19.0], "expected": 19.0}, {"input": [-61.5, 19.5], "expected": 19.5}, {"input": [-61.5, 20.0], "expected": 20.0}, {"input": [-61.5, 20.5], "expected": 20.5}, {"input": [-61.5, 21.0], "expected": 21.0}, {"input": [-61.5, 21.5], "expected": 21.5}, {"input": [-61.5, 22.0], "expected": 22.0}, {"input": [-61.5, 22.5], "expected": 22.5}, {"input": [-61.5, 23.0], "expected": 23.0}, {"input": [-61.5, 23.5], "expected": 23.5}, {"input": [-61.5, 24.0], "expected": 24.0}, {"input": [-61.5, 24.5], "expected": 24.5}, {"input": [-61.5, 25.0], "expected": 25.0}, {"input": [-61.5, 25.5], "expected": 25.5}, {"input": [-61.5, 26.0], "expected": 26.0}, {"input": [-61.5, 26.5], "expected": 26.5}, {"input": [-61.5, 27.0], "expected": 27.0}, {"input": [-61.5, 27.5], "expected": 27.5}, {"input": [-61.5, 28.0], "expected": 28.0}, {"input": [-61.5, 28.5], "expected": 28.5}, {"input": [-61.5, 29.0], "expected": 29.0}, {"input": [-61.5, 29.5], "expected": 29.5}, {"input": [-61.5, 30.0], "expected": 30.0}, {"input": [-61.5, 30.5], "expected": 30.5}, {"input": [-61.5, 31.0], "expected": 31.0}, {"input": [-61.5, 31.5], "expected": 31.5}, {"input": [-61.5, 32.0], "expected": 32.0}, {"input": [-61.5, 32.5], "expected": 32.5}, {"input": [-61.5, 33.0], "expected": 33.0}, {"input": [-61.5, 33.5], "expected": 33.5}, {"input": [-61.5, 34.0], "expected": 34.0}, {"input": [-61.5, 34.5], "expected": 34.5}, {"input": [-61.5, 35.0], "expected": 35.0}, {"input": [-61.5, 35.5], "expected": 35.5}, {"input": [-61.5, 36.0], "expected": 36.0}, {"input": [-61.5, 36.5], "expected": 36.5}, {"input": [-61.5, 37.0], "expected": 37.0}, {"input": [-61.5, 37.5], "expected": 37.5}, {"input": [-61.5, 38.0], "expected": 38.0}, {"input": [-61.5, 38.5], "expected": 38.5}, {"input": [-61.5, 39.0], "expected": 39.0}, {"input": [-61.5, 39.5], "expected": 39.5}, {"input": [-61.5, 40.0], "expected": 40.0}, {"input": [-61.5, 40.5], "expected": 40.5}, {"input": [-61.5, 41.0], "expected": 41.0}, {"input": [-61.5, 41.5], "expected": 41.5}, {"input": [-61.5, 42.0], "expected": 42.0}, {"input": [-61.5, 42.5], "expected": 42.5}, {"input": [-61.5, 43.0], "expected": 43.0}, {"input": [-61.5, 43.5], "expected": 43.5}, {"input": [-61.5, 44.0], "expected": 44.0}, {"input": [-61.5, 44.5], "expected": 44.5}, {"input": [-61.5, 45.0], "expected": 45.0}, {"input": [-61.5, 45.5], "expected": 45.5}, {"input": [-61.5, 46.0], "expected": 46.0}, {"input": [-61.5, 46.5], "expected": 46.5}, {"input": [-61.5, 47.0], "expected": 47.0}, {"input": [-61.5, 47.5], "expected": 47.5}, {"input": [-61.5, 48.0], "expected": 48.0}, {"input": [-61.5, 48.5], "expected": 48.5}, {"input": [-61.5, 49.0], "expected": 49.0}, {"input": [-61.5, 49.5], "expected": 49.5}, {"input": [-61.5, 50.0], "expected": 50.0}, {"input": [-61.5, 50.5], "expected": 50.5}, {"input": [-61.5, 51.0], "expected": 51.0}, {"input": [-61.5, 51.5], "expected": 51.5}, {"input": [-61.5, 52.0], "expected": 52.0}, {"input": [-61.5, 52.5], "expected": 52.5}, {"input": [-61.5, 53.0], "expected": 53.0}, {"input": [-61.5, 53.5], "expected": 53.5}, {"input": [-61.5, 54.0], "expected": 54.0}, {"input": [-61.5, 54.5], "expected": 54.5}, {"input": [-61.5, 55.0], "expected": 55.0}, {"input": [-61.5, 55.5], "expected": 55.5}, {"input": [-61.5, 56.0], "expected": 56.0}, {"input": [-61.5, 56.5], "expected": 56.5}, {"input": [-61.5, 57.0], "expected": 57.0}, {"input": [-61.5, 57.5], "expected": 57.5}, {"input": [-61.5, 58.0], "expected": 58.0}, {"input": [-61.5, 58.5], "expected": 58.5}, {"input": [-61.5, 59.0], "expected": 59.0}, {"input": [-61.5, 59.5], "expected": 59.5}, {"input": [-61.5, 60.0], "expected": 60.0}, {"input": [-61.5, 60.5], "expected": 60.5}, {"input": [-61.5, 61.0], "expected": 61.0}, {"input": [-61.5, 61.5], "expected": 61.5}, {"input": [-61.5, 62.0], "expected": 62.0}, {"input": [-61.5, 62.5], "expected": 62.5}, {"input": [-61.5, 63.0], "expected": 63.0}, {"input": [-61.5, 63.5], "expected": 63.5}, {"input": [-61.5, 64.0], "expected": 64.0}, {"input": [-61.5, 64.5], "expected": 64.5}, {"input": [-61.5, 65.0], "expected": 65.0}, {"input": [-61.5, 65.5], "expected": 65.5}, {"input": [-61.5, 66.0], "expected": 66.0}, {"input": [-61.5, 66.5], "expected": 66.5}, {"input": [-61.5, 67.0], "expected": 67.0}, {"input": [-61.5, 67.5], "expected": 67.5}, {"input": [-61.5, 68.0], "expected": 68.0}, {"input": [-61.5, 68.5], "expected": 68.5}, {"input": [-61.5, 69.0], "expected": 69.0}, {"input": [-61.5, 69.5], "expected": 69.5}, {"input": [-61.5, 70.0], "expected": 70.0}, {"input": [-61.5, 70.5], "expected": 70.5}, {"input": [-61.5, 71.0], "expected": 71.0}, {"input": [-61.5, 71.5], "expected": 71.5}, {"input": [-61.5, 72.0], "expected": 72.0}, {"input": [-61.5, 72.5], "expected": 72.5}, {"input": [-61.5, 73.0], "expected": 73.0}, {"input": [-61.5, 73.5], "expected": 73.5}, {"input": [-61.5, 74.0], "expected": 74.0}, {"input": [-61.5, 74.5], "expected": 74.5}, {"input": [-61.5, 75.0], "expected": 75.0}, {"input": [-61.5, 75.5], "expected": 75.5}, {"input": [-61.5, 76.0], "expected": 76.0}, {"input": [-61.5, 76.5], "expected": 76.5}, {"input": [-61.5, 77.0], "expected": 77.0}, {"input": [-61.5, 77.5], "expected": 77.5}, {"input": [-61.5, 78.0], "expected": 78.0}, {"input": [-61.5, 78.5], "expected": 78.5}, {"input": [-61.5, 79.0], "expected": 79.0}, {"input": [-61.5, 79.5], "expected": 79.5}, {"input": [-61.5, 80.0], "expected": 80.0}, {"input": [-61.5, 80.5], "expected": 80.5}, {"input": [-61.5, 81.0], "expected": 81.0}, {"input": [-61.5, 81.5], "expected": 81.5}, {"input": [-61.5, 82.0], "expected": 82.0}, {"input": [-61.5, 82.5], "expected": 82.5}, {"input": [-61.5, 83.0], "expected": 83.0}, {"input": [-61.5, 83.5], "expected": 83.5}, {"input": [-61.5, 84.0], "expected": 84.0}, {"input": [-61.5, 84.5], "expected": 84.5}, {"input": [-61.5, 85.0], "expected": 85.0}, {"input": [-61.5, 85.5], "expected": 85.5}, {"input": [-61.5, 86.0], "expected": 86.0}, {"input": [-61.5, 86.5], "expected": 86.5}, {"input": [-61.5, 87.0], "expected": 87.0}, {"input": [-61.5, 87.5], "expected": 87.5}, {"input": [-61.5, 88.0], "expected": 88.0}, {"input": [-61.5, 88.5], "expected": 88.5}, {"input": [-61.5, 89.0], "expected": 89.0}, {"input": [-61.5, 89.5], "expected": 89.5}, {"input": [-61.5, 90.0], "expected": 90.0}, {"input": [-61.5, 90.5], "expected": 90.5}, {"input": [-61.5, 91.0], "expected": 91.0}, {"input": [-61.5, 91.5], "expected": 91.5}, {"input": [-61.5, 92.0], "expected": 92.0}, {"input": [-61.5, 92.5], "expected": 92.5}, {"input": [-61.5, 93.0], "expected": 93.0}, {"input": [-61.5, 93.5], "expected": 93.5}, {"input": [-61.5, 94.0], "expected": 94.0}, {"input": [-61.5, 94.5], "expected": 94.5}, {"input": [-61.5, 95.0], "expected": 95.0}, {"input": [-61.5, 95.5], "expected": 95.5}, {"input": [-61.5, 96.0], "expected": 96.0}, {"input": [-61.5, 96.5], "expected": 96.5}, {"input": [-61.5, 97.0], "expected": 97.0}, {"input": [-61.5, 97.5], "expected": 97.5}, {"input": [-61.5, 98.0], "expected": 98.0}, {"input": [-61.5, 98.5], "expected": 98.5}, {"input": [-61.5, 99.0], "expected": 99.0}, {"input": [-61.5, 99.5], "expected": 99.5}, {"input": [-61.0, -100.0], "expected": -61.0}, {"input": [-61.0, -99.5], "expected": -61.0}, {"input": [-61.0, -99.0], "expected": -61.0}, {"input": [-61.0, -98.5], "expected": -61.0}, {"input": [-61.0, -98.0], "expected": -61.0}, {"input": [-61.0, -97.5], "expected": -61.0}, {"input": [-61.0, -97.0], "expected": -61.0}, {"input": [-61.0, -96.5], "expected": -61.0}, {"input": [-61.0, -96.0], "expected": -61.0}, {"input": [-61.0, -95.5], "expected": -61.0}, {"input": [-61.0, -95.0], "expected": -61.0}, {"input": [-61.0, -94.5], "expected": -61.0}, {"input": [-61.0, -94.0], "expected": -60.99999999999999}, {"input": [-61.0, -93.5], "expected": -60.99999999999999}, {"input": [-61.0, -93.0], "expected": -60.999999999999986}, {"input": [-61.0, -92.5], "expected": -60.99999999999998}, {"input": [-61.0, -92.0], "expected": -60.999999999999964}, {"input": [-61.0, -91.5], "expected": -60.99999999999994}, {"input": [-61.0, -91.0], "expected": -60.99999999999991}, {"input": [-61.0, -90.5], "expected": -60.999999999999844}, {"input": [-61.0, -90.0], "expected": -60.999999999999744}, {"input": [-61.0, -89.5], "expected": -60.99999999999958}, {"input": [-61.0, -89.0], "expected": -60.99999999999931}, {"input": [-61.0, -88.5], "expected": -60.99999999999886}, {"input": [-61.0, -88.0], "expected": -60.99999999999812}, {"input": [-61.0, -87.5], "expected": -60.9999999999969}, {"input": [-61.0, -87.0], "expected": -60.99999999999489}, {"input": [-61.0, -86.5], "expected": -60.99999999999158}, {"input": [-61.0, -86.0], "expected": -60.99999999998611}, {"input": [-61.0, -85.5], "expected": -60.9999999999771}, {"input": [-61.0, -85.0], "expected": -60.99999999996225}, {"input": [-61.0, -84.5], "expected": -60.99999999993776}, {"input": [-61.0, -84.0], "expected": -60.99999999989738}, {"input": [-61.0, -83.5], "expected": -60.99999999983081}, {"input": [-61.0, -83.0], "expected": -60.999999999721055}, {"input": [-61.0, -82.5], "expected": -60.999999999540094}, {"input": [-61.0, -82.0], "expected": -60.999999999241744}, {"input": [-61.0, -81.5], "expected": -60.99999999874985}, {"input": [-61.0, -81.0], "expected": -60.99999999793884}, {"input": [-61.0, -80.5], "expected": -60.99999999660173}, {"input": [-61.0, -80.0], "expected": -60.99999999439721}, {"input": [-61.0, -79.5], "expected": -60.999999990762554}, {"input": [-61.0, -79.0], "expected": -60.99999998477002}, {"input": [-61.0, -78.5], "expected": -60.99999997489001}, {"input": [-61.0, -78.0], "expected": -60.999999958600625}, {"input": [-61.0, -77.5], "expected": -60.99999993174397}, {"input": [-61.0, -77.0], "expected": -60.99999988746483}, {"input": [-61.0, -76.5], "expected": -60.99999981446088}, {"input": [-61.0, -76.0], "expected": -60.999999694097724}, {"input": [-61.0, -75.5], "expected": -60.99999949565247}, {"input": [-61.0, -75.0], "expected": -60.999999168471625}, {"input": [-61.0, -74.5], "expected": -60.999998629041855}, {"input": [-61.0, -74.0], "expected": -60.99999773967315}, {"input": [-61.0, -73.5], "expected": -60.99999627335377}, {"input": [-61.0, -73.0], "expected": -60.99999385580652}, {"input": [-61.0, -72.5], "expected": -60.99998986995771}, {"input": [-61.0, -72.0], "expected": -60.99998329843868}, {"input": [-61.0, -71.5], "expected": -60.99997246392977}, {"input": [-61.0, -71.0], "expected": -60.99995460110078}, {"input": [-61.0, -70.5], "expected": -60.99992515097137}, {"input": [-61.0, -70.0], "expected": -60.99987659781028}, {"input": [-61.0, -69.5], "expected": -60.99979655232787}, {"input": [-61.0, -69.0], "expected": -60.9996645936271}, {"input": [-61.0, -68.5], "expected": -60.99944706852464}, {"input": [-61.0, -68.0], "expected": -60.99908853354623}, {"input": [-61.0, -67.5], "expected": -60.99849768984024}, {"input": [-61.0, -67.0], "expected": -60.99752431486227}, {"input": [-61.0, -66.5], "expected": -60.99592155672943}, {"input": [-61.0, -66.0], "expected": -60.99328465151088}, {"input": [-61.0, -65.5], "expected": -60.9889522551514}, {"input": [-61.0, -65.0], "expected": -60.98185007208219}, {"input": [-61.0, -64.5], "expected": -60.97024958172738}, {"input": [-61.0, -64.0], "expected": -60.951412648426256}, {"input": [-61.0, -63.5], "expected": -60.92111026570745}, {"input": [-61.0, -63.0], "expected": -60.87307198895703}, {"input": [-61.0, -62.5], "expected": -60.79858672201725}, {"input": [-61.0, -62.0], "expected": -60.68673831248178}, {"input": [-61.0, -61.5], "expected": -60.52592301581989}, {"input": [-61.0, -61.0], "expected": -60.30685281944005}, {"input": [-61.0, -60.5], "expected": -60.02592301581989}, {"input": [-61.0, -60.0], "expected": -59.68673831248178}, {"input": [-61.0, -59.5], "expected": -59.29858672201725}, {"input": [-61.0, -59.0], "expected": -58.87307198895703}, {"input": [-61.0, -58.5], "expected": -58.42111026570745}, {"input": [-61.0, -58.0], "expected": -57.951412648426256}, {"input": [-61.0, -57.5], "expected": -57.47024958172738}, {"input": [-61.0, -57.0], "expected": -56.98185007208219}, {"input": [-61.0, -56.5], "expected": -56.4889522551514}, {"input": [-61.0, -56.0], "expected": -55.99328465151088}, {"input": [-61.0, -55.5], "expected": -55.49592155672943}, {"input": [-61.0, -55.0], "expected": -54.99752431486227}, {"input": [-61.0, -54.5], "expected": -54.49849768984024}, {"input": [-61.0, -54.0], "expected": -53.99908853354623}, {"input": [-61.0, -53.5], "expected": -53.49944706852464}, {"input": [-61.0, -53.0], "expected": -52.9996645936271}, {"input": [-61.0, -52.5], "expected": -52.49979655232787}, {"input": [-61.0, -52.0], "expected": -51.99987659781028}, {"input": [-61.0, -51.5], "expected": -51.49992515097137}, {"input": [-61.0, -51.0], "expected": -50.99995460110078}, {"input": [-61.0, -50.5], "expected": -50.49997246392977}, {"input": [-61.0, -50.0], "expected": -49.99998329843868}, {"input": [-61.0, -49.5], "expected": -49.49998986995771}, {"input": [-61.0, -49.0], "expected": -48.99999385580652}, {"input": [-61.0, -48.5], "expected": -48.49999627335377}, {"input": [-61.0, -48.0], "expected": -47.99999773967315}, {"input": [-61.0, -47.5], "expected": -47.499998629041855}, {"input": [-61.0, -47.0], "expected": -46.999999168471625}, {"input": [-61.0, -46.5], "expected": -46.49999949565247}, {"input": [-61.0, -46.0], "expected": -45.999999694097724}, {"input": [-61.0, -45.5], "expected": -45.49999981446088}, {"input": [-61.0, -45.0], "expected": -44.99999988746483}, {"input": [-61.0, -44.5], "expected": -44.49999993174397}, {"input": [-61.0, -44.0], "expected": -43.999999958600625}, {"input": [-61.0, -43.5], "expected": -43.49999997489001}, {"input": [-61.0, -43.0], "expected": -42.99999998477002}, {"input": [-61.0, -42.5], "expected": -42.499999990762554}, {"input": [-61.0, -42.0], "expected": -41.99999999439721}, {"input": [-61.0, -41.5], "expected": -41.49999999660173}, {"input": [-61.0, -41.0], "expected": -40.99999999793884}, {"input": [-61.0, -40.5], "expected": -40.49999999874985}, {"input": [-61.0, -40.0], "expected": -39.999999999241744}, {"input": [-61.0, -39.5], "expected": -39.499999999540094}, {"input": [-61.0, -39.0], "expected": -38.999999999721055}, {"input": [-61.0, -38.5], "expected": -38.49999999983081}, {"input": [-61.0, -38.0], "expected": -37.99999999989738}, {"input": [-61.0, -37.5], "expected": -37.49999999993776}, {"input": [-61.0, -37.0], "expected": -36.99999999996225}, {"input": [-61.0, -36.5], "expected": -36.4999999999771}, {"input": [-61.0, -36.0], "expected": -35.99999999998611}, {"input": [-61.0, -35.5], "expected": -35.49999999999158}, {"input": [-61.0, -35.0], "expected": -34.99999999999489}, {"input": [-61.0, -34.5], "expected": -34.4999999999969}, {"input": [-61.0, -34.0], "expected": -33.99999999999812}, {"input": [-61.0, -33.5], "expected": -33.49999999999886}, {"input": [-61.0, -33.0], "expected": -32.99999999999931}, {"input": [-61.0, -32.5], "expected": -32.49999999999958}, {"input": [-61.0, -32.0], "expected": -31.999999999999744}, {"input": [-61.0, -31.5], "expected": -31.499999999999847}, {"input": [-61.0, -31.0], "expected": -30.999999999999908}, {"input": [-61.0, -30.5], "expected": -30.499999999999943}, {"input": [-61.0, -30.0], "expected": -29.999999999999964}, {"input": [-61.0, -29.5], "expected": -29.49999999999998}, {"input": [-61.0, -29.0], "expected": -28.999999999999986}, {"input": [-61.0, -28.5], "expected": -28.499999999999993}, {"input": [-61.0, -28.0], "expected": -27.999999999999996}, {"input": [-61.0, -27.5], "expected": -27.499999999999996}, {"input": [-61.0, -27.0], "expected": -27.0}, {"input": [-61.0, -26.5], "expected": -26.5}, {"input": [-61.0, -26.0], "expected": -26.0}, {"input": [-61.0, -25.5], "expected": -25.5}, {"input": [-61.0, -25.0], "expected": -25.0}, {"input": [-61.0, -24.5], "expected": -24.5}, {"input": [-61.0, -24.0], "expected": -24.0}, {"input": [-61.0, -23.5], "expected": -23.5}, {"input": [-61.0, -23.0], "expected": -23.0}, {"input": [-61.0, -22.5], "expected": -22.5}, {"input": [-61.0, -22.0], "expected": -22.0}, {"input": [-61.0, -21.5], "expected": -21.5}, {"input": [-61.0, -21.0], "expected": -21.0}, {"input": [-61.0, -20.5], "expected": -20.5}, {"input": [-61.0, -20.0], "expected": -20.0}, {"input": [-61.0, -19.5], "expected": -19.5}, {"input": [-61.0, -19.0], "expected": -19.0}, {"input": [-61.0, -18.5], "expected": -18.5}, {"input": [-61.0, -18.0], "expected": -18.0}, {"input": [-61.0, -17.5], "expected": -17.5}, {"input": [-61.0, -17.0], "expected": -17.0}, {"input": [-61.0, -16.5], "expected": -16.5}, {"input": [-61.0, -16.0], "expected": -16.0}, {"input": [-61.0, -15.5], "expected": -15.5}, {"input": [-61.0, -15.0], "expected": -15.0}, {"input": [-61.0, -14.5], "expected": -14.5}, {"input": [-61.0, -14.0], "expected": -14.0}, {"input": [-61.0, -13.5], "expected": -13.5}, {"input": [-61.0, -13.0], "expected": -13.0}, {"input": [-61.0, -12.5], "expected": -12.5}, {"input": [-61.0, -12.0], "expected": -12.0}, {"input": [-61.0, -11.5], "expected": -11.5}, {"input": [-61.0, -11.0], "expected": -11.0}, {"input": [-61.0, -10.5], "expected": -10.5}, {"input": [-61.0, -10.0], "expected": -10.0}, {"input": [-61.0, -9.5], "expected": -9.5}, {"input": [-61.0, -9.0], "expected": -9.0}, {"input": [-61.0, -8.5], "expected": -8.5}, {"input": [-61.0, -8.0], "expected": -8.0}, {"input": [-61.0, -7.5], "expected": -7.5}, {"input": [-61.0, -7.0], "expected": -7.0}, {"input": [-61.0, -6.5], "expected": -6.5}, {"input": [-61.0, -6.0], "expected": -6.0}, {"input": [-61.0, -5.5], "expected": -5.5}, {"input": [-61.0, -5.0], "expected": -5.0}, {"input": [-61.0, -4.5], "expected": -4.5}, {"input": [-61.0, -4.0], "expected": -4.0}, {"input": [-61.0, -3.5], "expected": -3.5}, {"input": [-61.0, -3.0], "expected": -3.0}, {"input": [-61.0, -2.5], "expected": -2.5}, {"input": [-61.0, -2.0], "expected": -2.0}, {"input": [-61.0, -1.5], "expected": -1.5}, {"input": [-61.0, -1.0], "expected": -1.0}, {"input": [-61.0, -0.5], "expected": -0.5}, {"input": [-61.0, 0.0], "expected": 3.221340285992516e-27}, {"input": [-61.0, 0.5], "expected": 0.5}, {"input": [-61.0, 1.0], "expected": 1.0}, {"input": [-61.0, 1.5], "expected": 1.5}, {"input": [-61.0, 2.0], "expected": 2.0}, {"input": [-61.0, 2.5], "expected": 2.5}, {"input": [-61.0, 3.0], "expected": 3.0}, {"input": [-61.0, 3.5], "expected": 3.5}, {"input": [-61.0, 4.0], "expected": 4.0}, {"input": [-61.0, 4.5], "expected": 4.5}, {"input": [-61.0, 5.0], "expected": 5.0}, {"input": [-61.0, 5.5], "expected": 5.5}, {"input": [-61.0, 6.0], "expected": 6.0}, {"input": [-61.0, 6.5], "expected": 6.5}, {"input": [-61.0, 7.0], "expected": 7.0}, {"input": [-61.0, 7.5], "expected": 7.5}, {"input": [-61.0, 8.0], "expected": 8.0}, {"input": [-61.0, 8.5], "expected": 8.5}, {"input": [-61.0, 9.0], "expected": 9.0}, {"input": [-61.0, 9.5], "expected": 9.5}, {"input": [-61.0, 10.0], "expected": 10.0}, {"input": [-61.0, 10.5], "expected": 10.5}, {"input": [-61.0, 11.0], "expected": 11.0}, {"input": [-61.0, 11.5], "expected": 11.5}, {"input": [-61.0, 12.0], "expected": 12.0}, {"input": [-61.0, 12.5], "expected": 12.5}, {"input": [-61.0, 13.0], "expected": 13.0}, {"input": [-61.0, 13.5], "expected": 13.5}, {"input": [-61.0, 14.0], "expected": 14.0}, {"input": [-61.0, 14.5], "expected": 14.5}, {"input": [-61.0, 15.0], "expected": 15.0}, {"input": [-61.0, 15.5], "expected": 15.5}, {"input": [-61.0, 16.0], "expected": 16.0}, {"input": [-61.0, 16.5], "expected": 16.5}, {"input": [-61.0, 17.0], "expected": 17.0}, {"input": [-61.0, 17.5], "expected": 17.5}, {"input": [-61.0, 18.0], "expected": 18.0}, {"input": [-61.0, 18.5], "expected": 18.5}, {"input": [-61.0, 19.0], "expected": 19.0}, {"input": [-61.0, 19.5], "expected": 19.5}, {"input": [-61.0, 20.0], "expected": 20.0}, {"input": [-61.0, 20.5], "expected": 20.5}, {"input": [-61.0, 21.0], "expected": 21.0}, {"input": [-61.0, 21.5], "expected": 21.5}, {"input": [-61.0, 22.0], "expected": 22.0}, {"input": [-61.0, 22.5], "expected": 22.5}, {"input": [-61.0, 23.0], "expected": 23.0}, {"input": [-61.0, 23.5], "expected": 23.5}, {"input": [-61.0, 24.0], "expected": 24.0}, {"input": [-61.0, 24.5], "expected": 24.5}, {"input": [-61.0, 25.0], "expected": 25.0}, {"input": [-61.0, 25.5], "expected": 25.5}, {"input": [-61.0, 26.0], "expected": 26.0}, {"input": [-61.0, 26.5], "expected": 26.5}, {"input": [-61.0, 27.0], "expected": 27.0}, {"input": [-61.0, 27.5], "expected": 27.5}, {"input": [-61.0, 28.0], "expected": 28.0}, {"input": [-61.0, 28.5], "expected": 28.5}, {"input": [-61.0, 29.0], "expected": 29.0}, {"input": [-61.0, 29.5], "expected": 29.5}, {"input": [-61.0, 30.0], "expected": 30.0}, {"input": [-61.0, 30.5], "expected": 30.5}, {"input": [-61.0, 31.0], "expected": 31.0}, {"input": [-61.0, 31.5], "expected": 31.5}, {"input": [-61.0, 32.0], "expected": 32.0}, {"input": [-61.0, 32.5], "expected": 32.5}, {"input": [-61.0, 33.0], "expected": 33.0}, {"input": [-61.0, 33.5], "expected": 33.5}, {"input": [-61.0, 34.0], "expected": 34.0}, {"input": [-61.0, 34.5], "expected": 34.5}, {"input": [-61.0, 35.0], "expected": 35.0}, {"input": [-61.0, 35.5], "expected": 35.5}, {"input": [-61.0, 36.0], "expected": 36.0}, {"input": [-61.0, 36.5], "expected": 36.5}, {"input": [-61.0, 37.0], "expected": 37.0}, {"input": [-61.0, 37.5], "expected": 37.5}, {"input": [-61.0, 38.0], "expected": 38.0}, {"input": [-61.0, 38.5], "expected": 38.5}, {"input": [-61.0, 39.0], "expected": 39.0}, {"input": [-61.0, 39.5], "expected": 39.5}, {"input": [-61.0, 40.0], "expected": 40.0}, {"input": [-61.0, 40.5], "expected": 40.5}, {"input": [-61.0, 41.0], "expected": 41.0}, {"input": [-61.0, 41.5], "expected": 41.5}, {"input": [-61.0, 42.0], "expected": 42.0}, {"input": [-61.0, 42.5], "expected": 42.5}, {"input": [-61.0, 43.0], "expected": 43.0}, {"input": [-61.0, 43.5], "expected": 43.5}, {"input": [-61.0, 44.0], "expected": 44.0}, {"input": [-61.0, 44.5], "expected": 44.5}, {"input": [-61.0, 45.0], "expected": 45.0}, {"input": [-61.0, 45.5], "expected": 45.5}, {"input": [-61.0, 46.0], "expected": 46.0}, {"input": [-61.0, 46.5], "expected": 46.5}, {"input": [-61.0, 47.0], "expected": 47.0}, {"input": [-61.0, 47.5], "expected": 47.5}, {"input": [-61.0, 48.0], "expected": 48.0}, {"input": [-61.0, 48.5], "expected": 48.5}, {"input": [-61.0, 49.0], "expected": 49.0}, {"input": [-61.0, 49.5], "expected": 49.5}, {"input": [-61.0, 50.0], "expected": 50.0}, {"input": [-61.0, 50.5], "expected": 50.5}, {"input": [-61.0, 51.0], "expected": 51.0}, {"input": [-61.0, 51.5], "expected": 51.5}, {"input": [-61.0, 52.0], "expected": 52.0}, {"input": [-61.0, 52.5], "expected": 52.5}, {"input": [-61.0, 53.0], "expected": 53.0}, {"input": [-61.0, 53.5], "expected": 53.5}, {"input": [-61.0, 54.0], "expected": 54.0}, {"input": [-61.0, 54.5], "expected": 54.5}, {"input": [-61.0, 55.0], "expected": 55.0}, {"input": [-61.0, 55.5], "expected": 55.5}, {"input": [-61.0, 56.0], "expected": 56.0}, {"input": [-61.0, 56.5], "expected": 56.5}, {"input": [-61.0, 57.0], "expected": 57.0}, {"input": [-61.0, 57.5], "expected": 57.5}, {"input": [-61.0, 58.0], "expected": 58.0}, {"input": [-61.0, 58.5], "expected": 58.5}, {"input": [-61.0, 59.0], "expected": 59.0}, {"input": [-61.0, 59.5], "expected": 59.5}, {"input": [-61.0, 60.0], "expected": 60.0}, {"input": [-61.0, 60.5], "expected": 60.5}, {"input": [-61.0, 61.0], "expected": 61.0}, {"input": [-61.0, 61.5], "expected": 61.5}, {"input": [-61.0, 62.0], "expected": 62.0}, {"input": [-61.0, 62.5], "expected": 62.5}, {"input": [-61.0, 63.0], "expected": 63.0}, {"input": [-61.0, 63.5], "expected": 63.5}, {"input": [-61.0, 64.0], "expected": 64.0}, {"input": [-61.0, 64.5], "expected": 64.5}, {"input": [-61.0, 65.0], "expected": 65.0}, {"input": [-61.0, 65.5], "expected": 65.5}, {"input": [-61.0, 66.0], "expected": 66.0}, {"input": [-61.0, 66.5], "expected": 66.5}, {"input": [-61.0, 67.0], "expected": 67.0}, {"input": [-61.0, 67.5], "expected": 67.5}, {"input": [-61.0, 68.0], "expected": 68.0}, {"input": [-61.0, 68.5], "expected": 68.5}, {"input": [-61.0, 69.0], "expected": 69.0}, {"input": [-61.0, 69.5], "expected": 69.5}, {"input": [-61.0, 70.0], "expected": 70.0}, {"input": [-61.0, 70.5], "expected": 70.5}, {"input": [-61.0, 71.0], "expected": 71.0}, {"input": [-61.0, 71.5], "expected": 71.5}, {"input": [-61.0, 72.0], "expected": 72.0}, {"input": [-61.0, 72.5], "expected": 72.5}, {"input": [-61.0, 73.0], "expected": 73.0}, {"input": [-61.0, 73.5], "expected": 73.5}, {"input": [-61.0, 74.0], "expected": 74.0}, {"input": [-61.0, 74.5], "expected": 74.5}, {"input": [-61.0, 75.0], "expected": 75.0}, {"input": [-61.0, 75.5], "expected": 75.5}, {"input": [-61.0, 76.0], "expected": 76.0}, {"input": [-61.0, 76.5], "expected": 76.5}, {"input": [-61.0, 77.0], "expected": 77.0}, {"input": [-61.0, 77.5], "expected": 77.5}, {"input": [-61.0, 78.0], "expected": 78.0}, {"input": [-61.0, 78.5], "expected": 78.5}, {"input": [-61.0, 79.0], "expected": 79.0}, {"input": [-61.0, 79.5], "expected": 79.5}, {"input": [-61.0, 80.0], "expected": 80.0}, {"input": [-61.0, 80.5], "expected": 80.5}, {"input": [-61.0, 81.0], "expected": 81.0}, {"input": [-61.0, 81.5], "expected": 81.5}, {"input": [-61.0, 82.0], "expected": 82.0}, {"input": [-61.0, 82.5], "expected": 82.5}, {"input": [-61.0, 83.0], "expected": 83.0}, {"input": [-61.0, 83.5], "expected": 83.5}, {"input": [-61.0, 84.0], "expected": 84.0}, {"input": [-61.0, 84.5], "expected": 84.5}, {"input": [-61.0, 85.0], "expected": 85.0}, {"input": [-61.0, 85.5], "expected": 85.5}, {"input": [-61.0, 86.0], "expected": 86.0}, {"input": [-61.0, 86.5], "expected": 86.5}, {"input": [-61.0, 87.0], "expected": 87.0}, {"input": [-61.0, 87.5], "expected": 87.5}, {"input": [-61.0, 88.0], "expected": 88.0}, {"input": [-61.0, 88.5], "expected": 88.5}, {"input": [-61.0, 89.0], "expected": 89.0}, {"input": [-61.0, 89.5], "expected": 89.5}, {"input": [-61.0, 90.0], "expected": 90.0}, {"input": [-61.0, 90.5], "expected": 90.5}, {"input": [-61.0, 91.0], "expected": 91.0}, {"input": [-61.0, 91.5], "expected": 91.5}, {"input": [-61.0, 92.0], "expected": 92.0}, {"input": [-61.0, 92.5], "expected": 92.5}, {"input": [-61.0, 93.0], "expected": 93.0}, {"input": [-61.0, 93.5], "expected": 93.5}, {"input": [-61.0, 94.0], "expected": 94.0}, {"input": [-61.0, 94.5], "expected": 94.5}, {"input": [-61.0, 95.0], "expected": 95.0}, {"input": [-61.0, 95.5], "expected": 95.5}, {"input": [-61.0, 96.0], "expected": 96.0}, {"input": [-61.0, 96.5], "expected": 96.5}, {"input": [-61.0, 97.0], "expected": 97.0}, {"input": [-61.0, 97.5], "expected": 97.5}, {"input": [-61.0, 98.0], "expected": 98.0}, {"input": [-61.0, 98.5], "expected": 98.5}, {"input": [-61.0, 99.0], "expected": 99.0}, {"input": [-61.0, 99.5], "expected": 99.5}, {"input": [-60.5, -100.0], "expected": -60.5}, {"input": [-60.5, -99.5], "expected": -60.5}, {"input": [-60.5, -99.0], "expected": -60.5}, {"input": [-60.5, -98.5], "expected": -60.5}, {"input": [-60.5, -98.0], "expected": -60.5}, {"input": [-60.5, -97.5], "expected": -60.5}, {"input": [-60.5, -97.0], "expected": -60.5}, {"input": [-60.5, -96.5], "expected": -60.5}, {"input": [-60.5, -96.0], "expected": -60.5}, {"input": [-60.5, -95.5], "expected": -60.5}, {"input": [-60.5, -95.0], "expected": -60.5}, {"input": [-60.5, -94.5], "expected": -60.5}, {"input": [-60.5, -94.0], "expected": -60.5}, {"input": [-60.5, -93.5], "expected": -60.49999999999999}, {"input": [-60.5, -93.0], "expected": -60.49999999999999}, {"input": [-60.5, -92.5], "expected": -60.499999999999986}, {"input": [-60.5, -92.0], "expected": -60.49999999999998}, {"input": [-60.5, -91.5], "expected": -60.499999999999964}, {"input": [-60.5, -91.0], "expected": -60.49999999999994}, {"input": [-60.5, -90.5], "expected": -60.49999999999991}, {"input": [-60.5, -90.0], "expected": -60.499999999999844}, {"input": [-60.5, -89.5], "expected": -60.499999999999744}, {"input": [-60.5, -89.0], "expected": -60.49999999999958}, {"input": [-60.5, -88.5], "expected": -60.49999999999931}, {"input": [-60.5, -88.0], "expected": -60.49999999999886}, {"input": [-60.5, -87.5], "expected": -60.49999999999812}, {"input": [-60.5, -87.0], "expected": -60.4999999999969}, {"input": [-60.5, -86.5], "expected": -60.49999999999489}, {"input": [-60.5, -86.0], "expected": -60.49999999999158}, {"input": [-60.5, -85.5], "expected": -60.49999999998611}, {"input": [-60.5, -85.0], "expected": -60.4999999999771}, {"input": [-60.5, -84.5], "expected": -60.49999999996225}, {"input": [-60.5, -84.0], "expected": -60.49999999993776}, {"input": [-60.5, -83.5], "expected": -60.49999999989738}, {"input": [-60.5, -83.0], "expected": -60.49999999983081}, {"input": [-60.5, -82.5], "expected": -60.499999999721055}, {"input": [-60.5, -82.0], "expected": -60.499999999540094}, {"input": [-60.5, -81.5], "expected": -60.499999999241744}, {"input": [-60.5, -81.0], "expected": -60.49999999874985}, {"input": [-60.5, -80.5], "expected": -60.49999999793884}, {"input": [-60.5, -80.0], "expected": -60.49999999660173}, {"input": [-60.5, -79.5], "expected": -60.49999999439721}, {"input": [-60.5, -79.0], "expected": -60.499999990762554}, {"input": [-60.5, -78.5], "expected": -60.49999998477002}, {"input": [-60.5, -78.0], "expected": -60.49999997489001}, {"input": [-60.5, -77.5], "expected": -60.499999958600625}, {"input": [-60.5, -77.0], "expected": -60.49999993174397}, {"input": [-60.5, -76.5], "expected": -60.49999988746483}, {"input": [-60.5, -76.0], "expected": -60.49999981446088}, {"input": [-60.5, -75.5], "expected": -60.499999694097724}, {"input": [-60.5, -75.0], "expected": -60.49999949565247}, {"input": [-60.5, -74.5], "expected": -60.499999168471625}, {"input": [-60.5, -74.0], "expected": -60.499998629041855}, {"input": [-60.5, -73.5], "expected": -60.49999773967315}, {"input": [-60.5, -73.0], "expected": -60.49999627335377}, {"input": [-60.5, -72.5], "expected": -60.49999385580652}, {"input": [-60.5, -72.0], "expected": -60.49998986995771}, {"input": [-60.5, -71.5], "expected": -60.49998329843868}, {"input": [-60.5, -71.0], "expected": -60.49997246392977}, {"input": [-60.5, -70.5], "expected": -60.49995460110078}, {"input": [-60.5, -70.0], "expected": -60.49992515097137}, {"input": [-60.5, -69.5], "expected": -60.49987659781028}, {"input": [-60.5, -69.0], "expected": -60.49979655232787}, {"input": [-60.5, -68.5], "expected": -60.4996645936271}, {"input": [-60.5, -68.0], "expected": -60.49944706852464}, {"input": [-60.5, -67.5], "expected": -60.49908853354623}, {"input": [-60.5, -67.0], "expected": -60.49849768984024}, {"input": [-60.5, -66.5], "expected": -60.49752431486227}, {"input": [-60.5, -66.0], "expected": -60.49592155672943}, {"input": [-60.5, -65.5], "expected": -60.49328465151088}, {"input": [-60.5, -65.0], "expected": -60.4889522551514}, {"input": [-60.5, -64.5], "expected": -60.48185007208219}, {"input": [-60.5, -64.0], "expected": -60.47024958172738}, {"input": [-60.5, -63.5], "expected": -60.451412648426256}, {"input": [-60.5, -63.0], "expected": -60.42111026570745}, {"input": [-60.5, -62.5], "expected": -60.37307198895703}, {"input": [-60.5, -62.0], "expected": -60.29858672201725}, {"input": [-60.5, -61.5], "expected": -60.18673831248178}, {"input": [-60.5, -61.0], "expected": -60.02592301581989}, {"input": [-60.5, -60.5], "expected": -59.80685281944005}, {"input": [-60.5, -60.0], "expected": -59.52592301581989}, {"input": [-60.5, -59.5], "expected": -59.18673831248178}, {"input": [-60.5, -59.0], "expected": -58.79858672201725}, {"input": [-60.5, -58.5], "expected": -58.37307198895703}, {"input": [-60.5, -58.0], "expected": -57.92111026570745}, {"input": [-60.5, -57.5], "expected": -57.451412648426256}, {"input": [-60.5, -57.0], "expected": -56.97024958172738}, {"input": [-60.5, -56.5], "expected": -56.48185007208219}, {"input": [-60.5, -56.0], "expected": -55.9889522551514}, {"input": [-60.5, -55.5], "expected": -55.49328465151088}, {"input": [-60.5, -55.0], "expected": -54.99592155672943}, {"input": [-60.5, -54.5], "expected": -54.49752431486227}, {"input": [-60.5, -54.0], "expected": -53.99849768984024}, {"input": [-60.5, -53.5], "expected": -53.49908853354623}, {"input": [-60.5, -53.0], "expected": -52.99944706852464}, {"input": [-60.5, -52.5], "expected": -52.4996645936271}, {"input": [-60.5, -52.0], "expected": -51.99979655232787}, {"input": [-60.5, -51.5], "expected": -51.49987659781028}, {"input": [-60.5, -51.0], "expected": -50.99992515097137}, {"input": [-60.5, -50.5], "expected": -50.49995460110078}, {"input": [-60.5, -50.0], "expected": -49.99997246392977}, {"input": [-60.5, -49.5], "expected": -49.49998329843868}, {"input": [-60.5, -49.0], "expected": -48.99998986995771}, {"input": [-60.5, -48.5], "expected": -48.49999385580652}, {"input": [-60.5, -48.0], "expected": -47.99999627335377}, {"input": [-60.5, -47.5], "expected": -47.49999773967315}, {"input": [-60.5, -47.0], "expected": -46.999998629041855}, {"input": [-60.5, -46.5], "expected": -46.499999168471625}, {"input": [-60.5, -46.0], "expected": -45.99999949565247}, {"input": [-60.5, -45.5], "expected": -45.499999694097724}, {"input": [-60.5, -45.0], "expected": -44.99999981446088}, {"input": [-60.5, -44.5], "expected": -44.49999988746483}, {"input": [-60.5, -44.0], "expected": -43.99999993174397}, {"input": [-60.5, -43.5], "expected": -43.499999958600625}, {"input": [-60.5, -43.0], "expected": -42.99999997489001}, {"input": [-60.5, -42.5], "expected": -42.49999998477002}, {"input": [-60.5, -42.0], "expected": -41.999999990762554}, {"input": [-60.5, -41.5], "expected": -41.49999999439721}, {"input": [-60.5, -41.0], "expected": -40.99999999660173}, {"input": [-60.5, -40.5], "expected": -40.49999999793884}, {"input": [-60.5, -40.0], "expected": -39.99999999874985}, {"input": [-60.5, -39.5], "expected": -39.499999999241744}, {"input": [-60.5, -39.0], "expected": -38.999999999540094}, {"input": [-60.5, -38.5], "expected": -38.499999999721055}, {"input": [-60.5, -38.0], "expected": -37.99999999983081}, {"input": [-60.5, -37.5], "expected": -37.49999999989738}, {"input": [-60.5, -37.0], "expected": -36.99999999993776}, {"input": [-60.5, -36.5], "expected": -36.49999999996225}, {"input": [-60.5, -36.0], "expected": -35.9999999999771}, {"input": [-60.5, -35.5], "expected": -35.49999999998611}, {"input": [-60.5, -35.0], "expected": -34.99999999999158}, {"input": [-60.5, -34.5], "expected": -34.49999999999489}, {"input": [-60.5, -34.0], "expected": -33.9999999999969}, {"input": [-60.5, -33.5], "expected": -33.49999999999812}, {"input": [-60.5, -33.0], "expected": -32.99999999999886}, {"input": [-60.5, -32.5], "expected": -32.49999999999931}, {"input": [-60.5, -32.0], "expected": -31.99999999999958}, {"input": [-60.5, -31.5], "expected": -31.499999999999744}, {"input": [-60.5, -31.0], "expected": -30.999999999999847}, {"input": [-60.5, -30.5], "expected": -30.499999999999908}, {"input": [-60.5, -30.0], "expected": -29.999999999999943}, {"input": [-60.5, -29.5], "expected": -29.499999999999964}, {"input": [-60.5, -29.0], "expected": -28.99999999999998}, {"input": [-60.5, -28.5], "expected": -28.499999999999986}, {"input": [-60.5, -28.0], "expected": -27.999999999999993}, {"input": [-60.5, -27.5], "expected": -27.499999999999996}, {"input": [-60.5, -27.0], "expected": -26.999999999999996}, {"input": [-60.5, -26.5], "expected": -26.5}, {"input": [-60.5, -26.0], "expected": -26.0}, {"input": [-60.5, -25.5], "expected": -25.5}, {"input": [-60.5, -25.0], "expected": -25.0}, {"input": [-60.5, -24.5], "expected": -24.5}, {"input": [-60.5, -24.0], "expected": -24.0}, {"input": [-60.5, -23.5], "expected": -23.5}, {"input": [-60.5, -23.0], "expected": -23.0}, {"input": [-60.5, -22.5], "expected": -22.5}, {"input": [-60.5, -22.0], "expected": -22.0}, {"input": [-60.5, -21.5], "expected": -21.5}, {"input": [-60.5, -21.0], "expected": -21.0}, {"input": [-60.5, -20.5], "expected": -20.5}, {"input": [-60.5, -20.0], "expected": -20.0}, {"input": [-60.5, -19.5], "expected": -19.5}, {"input": [-60.5, -19.0], "expected": -19.0}, {"input": [-60.5, -18.5], "expected": -18.5}, {"input": [-60.5, -18.0], "expected": -18.0}, {"input": [-60.5, -17.5], "expected": -17.5}, {"input": [-60.5, -17.0], "expected": -17.0}, {"input": [-60.5, -16.5], "expected": -16.5}, {"input": [-60.5, -16.0], "expected": -16.0}, {"input": [-60.5, -15.5], "expected": -15.5}, {"input": [-60.5, -15.0], "expected": -15.0}, {"input": [-60.5, -14.5], "expected": -14.5}, {"input": [-60.5, -14.0], "expected": -14.0}, {"input": [-60.5, -13.5], "expected": -13.5}, {"input": [-60.5, -13.0], "expected": -13.0}, {"input": [-60.5, -12.5], "expected": -12.5}, {"input": [-60.5, -12.0], "expected": -12.0}, {"input": [-60.5, -11.5], "expected": -11.5}, {"input": [-60.5, -11.0], "expected": -11.0}, {"input": [-60.5, -10.5], "expected": -10.5}, {"input": [-60.5, -10.0], "expected": -10.0}, {"input": [-60.5, -9.5], "expected": -9.5}, {"input": [-60.5, -9.0], "expected": -9.0}, {"input": [-60.5, -8.5], "expected": -8.5}, {"input": [-60.5, -8.0], "expected": -8.0}, {"input": [-60.5, -7.5], "expected": -7.5}, {"input": [-60.5, -7.0], "expected": -7.0}, {"input": [-60.5, -6.5], "expected": -6.5}, {"input": [-60.5, -6.0], "expected": -6.0}, {"input": [-60.5, -5.5], "expected": -5.5}, {"input": [-60.5, -5.0], "expected": -5.0}, {"input": [-60.5, -4.5], "expected": -4.5}, {"input": [-60.5, -4.0], "expected": -4.0}, {"input": [-60.5, -3.5], "expected": -3.5}, {"input": [-60.5, -3.0], "expected": -3.0}, {"input": [-60.5, -2.5], "expected": -2.5}, {"input": [-60.5, -2.0], "expected": -2.0}, {"input": [-60.5, -1.5], "expected": -1.5}, {"input": [-60.5, -1.0], "expected": -1.0}, {"input": [-60.5, -0.5], "expected": -0.5}, {"input": [-60.5, 0.0], "expected": 5.311092249679095e-27}, {"input": [-60.5, 0.5], "expected": 0.5}, {"input": [-60.5, 1.0], "expected": 1.0}, {"input": [-60.5, 1.5], "expected": 1.5}, {"input": [-60.5, 2.0], "expected": 2.0}, {"input": [-60.5, 2.5], "expected": 2.5}, {"input": [-60.5, 3.0], "expected": 3.0}, {"input": [-60.5, 3.5], "expected": 3.5}, {"input": [-60.5, 4.0], "expected": 4.0}, {"input": [-60.5, 4.5], "expected": 4.5}, {"input": [-60.5, 5.0], "expected": 5.0}, {"input": [-60.5, 5.5], "expected": 5.5}, {"input": [-60.5, 6.0], "expected": 6.0}, {"input": [-60.5, 6.5], "expected": 6.5}, {"input": [-60.5, 7.0], "expected": 7.0}, {"input": [-60.5, 7.5], "expected": 7.5}, {"input": [-60.5, 8.0], "expected": 8.0}, {"input": [-60.5, 8.5], "expected": 8.5}, {"input": [-60.5, 9.0], "expected": 9.0}, {"input": [-60.5, 9.5], "expected": 9.5}, {"input": [-60.5, 10.0], "expected": 10.0}, {"input": [-60.5, 10.5], "expected": 10.5}, {"input": [-60.5, 11.0], "expected": 11.0}, {"input": [-60.5, 11.5], "expected": 11.5}, {"input": [-60.5, 12.0], "expected": 12.0}, {"input": [-60.5, 12.5], "expected": 12.5}, {"input": [-60.5, 13.0], "expected": 13.0}, {"input": [-60.5, 13.5], "expected": 13.5}, {"input": [-60.5, 14.0], "expected": 14.0}, {"input": [-60.5, 14.5], "expected": 14.5}, {"input": [-60.5, 15.0], "expected": 15.0}, {"input": [-60.5, 15.5], "expected": 15.5}, {"input": [-60.5, 16.0], "expected": 16.0}, {"input": [-60.5, 16.5], "expected": 16.5}, {"input": [-60.5, 17.0], "expected": 17.0}, {"input": [-60.5, 17.5], "expected": 17.5}, {"input": [-60.5, 18.0], "expected": 18.0}, {"input": [-60.5, 18.5], "expected": 18.5}, {"input": [-60.5, 19.0], "expected": 19.0}, {"input": [-60.5, 19.5], "expected": 19.5}, {"input": [-60.5, 20.0], "expected": 20.0}, {"input": [-60.5, 20.5], "expected": 20.5}, {"input": [-60.5, 21.0], "expected": 21.0}, {"input": [-60.5, 21.5], "expected": 21.5}, {"input": [-60.5, 22.0], "expected": 22.0}, {"input": [-60.5, 22.5], "expected": 22.5}, {"input": [-60.5, 23.0], "expected": 23.0}, {"input": [-60.5, 23.5], "expected": 23.5}, {"input": [-60.5, 24.0], "expected": 24.0}, {"input": [-60.5, 24.5], "expected": 24.5}, {"input": [-60.5, 25.0], "expected": 25.0}, {"input": [-60.5, 25.5], "expected": 25.5}, {"input": [-60.5, 26.0], "expected": 26.0}, {"input": [-60.5, 26.5], "expected": 26.5}, {"input": [-60.5, 27.0], "expected": 27.0}, {"input": [-60.5, 27.5], "expected": 27.5}, {"input": [-60.5, 28.0], "expected": 28.0}, {"input": [-60.5, 28.5], "expected": 28.5}, {"input": [-60.5, 29.0], "expected": 29.0}, {"input": [-60.5, 29.5], "expected": 29.5}, {"input": [-60.5, 30.0], "expected": 30.0}, {"input": [-60.5, 30.5], "expected": 30.5}, {"input": [-60.5, 31.0], "expected": 31.0}, {"input": [-60.5, 31.5], "expected": 31.5}, {"input": [-60.5, 32.0], "expected": 32.0}, {"input": [-60.5, 32.5], "expected": 32.5}, {"input": [-60.5, 33.0], "expected": 33.0}, {"input": [-60.5, 33.5], "expected": 33.5}, {"input": [-60.5, 34.0], "expected": 34.0}, {"input": [-60.5, 34.5], "expected": 34.5}, {"input": [-60.5, 35.0], "expected": 35.0}, {"input": [-60.5, 35.5], "expected": 35.5}, {"input": [-60.5, 36.0], "expected": 36.0}, {"input": [-60.5, 36.5], "expected": 36.5}, {"input": [-60.5, 37.0], "expected": 37.0}, {"input": [-60.5, 37.5], "expected": 37.5}, {"input": [-60.5, 38.0], "expected": 38.0}, {"input": [-60.5, 38.5], "expected": 38.5}, {"input": [-60.5, 39.0], "expected": 39.0}, {"input": [-60.5, 39.5], "expected": 39.5}, {"input": [-60.5, 40.0], "expected": 40.0}, {"input": [-60.5, 40.5], "expected": 40.5}, {"input": [-60.5, 41.0], "expected": 41.0}, {"input": [-60.5, 41.5], "expected": 41.5}, {"input": [-60.5, 42.0], "expected": 42.0}, {"input": [-60.5, 42.5], "expected": 42.5}, {"input": [-60.5, 43.0], "expected": 43.0}, {"input": [-60.5, 43.5], "expected": 43.5}, {"input": [-60.5, 44.0], "expected": 44.0}, {"input": [-60.5, 44.5], "expected": 44.5}, {"input": [-60.5, 45.0], "expected": 45.0}, {"input": [-60.5, 45.5], "expected": 45.5}, {"input": [-60.5, 46.0], "expected": 46.0}, {"input": [-60.5, 46.5], "expected": 46.5}, {"input": [-60.5, 47.0], "expected": 47.0}, {"input": [-60.5, 47.5], "expected": 47.5}, {"input": [-60.5, 48.0], "expected": 48.0}, {"input": [-60.5, 48.5], "expected": 48.5}, {"input": [-60.5, 49.0], "expected": 49.0}, {"input": [-60.5, 49.5], "expected": 49.5}, {"input": [-60.5, 50.0], "expected": 50.0}, {"input": [-60.5, 50.5], "expected": 50.5}, {"input": [-60.5, 51.0], "expected": 51.0}, {"input": [-60.5, 51.5], "expected": 51.5}, {"input": [-60.5, 52.0], "expected": 52.0}, {"input": [-60.5, 52.5], "expected": 52.5}, {"input": [-60.5, 53.0], "expected": 53.0}, {"input": [-60.5, 53.5], "expected": 53.5}, {"input": [-60.5, 54.0], "expected": 54.0}, {"input": [-60.5, 54.5], "expected": 54.5}, {"input": [-60.5, 55.0], "expected": 55.0}, {"input": [-60.5, 55.5], "expected": 55.5}, {"input": [-60.5, 56.0], "expected": 56.0}, {"input": [-60.5, 56.5], "expected": 56.5}, {"input": [-60.5, 57.0], "expected": 57.0}, {"input": [-60.5, 57.5], "expected": 57.5}, {"input": [-60.5, 58.0], "expected": 58.0}, {"input": [-60.5, 58.5], "expected": 58.5}, {"input": [-60.5, 59.0], "expected": 59.0}, {"input": [-60.5, 59.5], "expected": 59.5}, {"input": [-60.5, 60.0], "expected": 60.0}, {"input": [-60.5, 60.5], "expected": 60.5}, {"input": [-60.5, 61.0], "expected": 61.0}, {"input": [-60.5, 61.5], "expected": 61.5}, {"input": [-60.5, 62.0], "expected": 62.0}, {"input": [-60.5, 62.5], "expected": 62.5}, {"input": [-60.5, 63.0], "expected": 63.0}, {"input": [-60.5, 63.5], "expected": 63.5}, {"input": [-60.5, 64.0], "expected": 64.0}, {"input": [-60.5, 64.5], "expected": 64.5}, {"input": [-60.5, 65.0], "expected": 65.0}, {"input": [-60.5, 65.5], "expected": 65.5}, {"input": [-60.5, 66.0], "expected": 66.0}, {"input": [-60.5, 66.5], "expected": 66.5}, {"input": [-60.5, 67.0], "expected": 67.0}, {"input": [-60.5, 67.5], "expected": 67.5}, {"input": [-60.5, 68.0], "expected": 68.0}, {"input": [-60.5, 68.5], "expected": 68.5}, {"input": [-60.5, 69.0], "expected": 69.0}, {"input": [-60.5, 69.5], "expected": 69.5}, {"input": [-60.5, 70.0], "expected": 70.0}, {"input": [-60.5, 70.5], "expected": 70.5}, {"input": [-60.5, 71.0], "expected": 71.0}, {"input": [-60.5, 71.5], "expected": 71.5}, {"input": [-60.5, 72.0], "expected": 72.0}, {"input": [-60.5, 72.5], "expected": 72.5}, {"input": [-60.5, 73.0], "expected": 73.0}, {"input": [-60.5, 73.5], "expected": 73.5}, {"input": [-60.5, 74.0], "expected": 74.0}, {"input": [-60.5, 74.5], "expected": 74.5}, {"input": [-60.5, 75.0], "expected": 75.0}, {"input": [-60.5, 75.5], "expected": 75.5}, {"input": [-60.5, 76.0], "expected": 76.0}, {"input": [-60.5, 76.5], "expected": 76.5}, {"input": [-60.5, 77.0], "expected": 77.0}, {"input": [-60.5, 77.5], "expected": 77.5}, {"input": [-60.5, 78.0], "expected": 78.0}, {"input": [-60.5, 78.5], "expected": 78.5}, {"input": [-60.5, 79.0], "expected": 79.0}, {"input": [-60.5, 79.5], "expected": 79.5}, {"input": [-60.5, 80.0], "expected": 80.0}, {"input": [-60.5, 80.5], "expected": 80.5}, {"input": [-60.5, 81.0], "expected": 81.0}, {"input": [-60.5, 81.5], "expected": 81.5}, {"input": [-60.5, 82.0], "expected": 82.0}, {"input": [-60.5, 82.5], "expected": 82.5}, {"input": [-60.5, 83.0], "expected": 83.0}, {"input": [-60.5, 83.5], "expected": 83.5}, {"input": [-60.5, 84.0], "expected": 84.0}, {"input": [-60.5, 84.5], "expected": 84.5}, {"input": [-60.5, 85.0], "expected": 85.0}, {"input": [-60.5, 85.5], "expected": 85.5}, {"input": [-60.5, 86.0], "expected": 86.0}, {"input": [-60.5, 86.5], "expected": 86.5}, {"input": [-60.5, 87.0], "expected": 87.0}, {"input": [-60.5, 87.5], "expected": 87.5}, {"input": [-60.5, 88.0], "expected": 88.0}, {"input": [-60.5, 88.5], "expected": 88.5}, {"input": [-60.5, 89.0], "expected": 89.0}, {"input": [-60.5, 89.5], "expected": 89.5}, {"input": [-60.5, 90.0], "expected": 90.0}, {"input": [-60.5, 90.5], "expected": 90.5}, {"input": [-60.5, 91.0], "expected": 91.0}, {"input": [-60.5, 91.5], "expected": 91.5}, {"input": [-60.5, 92.0], "expected": 92.0}, {"input": [-60.5, 92.5], "expected": 92.5}, {"input": [-60.5, 93.0], "expected": 93.0}, {"input": [-60.5, 93.5], "expected": 93.5}, {"input": [-60.5, 94.0], "expected": 94.0}, {"input": [-60.5, 94.5], "expected": 94.5}, {"input": [-60.5, 95.0], "expected": 95.0}, {"input": [-60.5, 95.5], "expected": 95.5}, {"input": [-60.5, 96.0], "expected": 96.0}, {"input": [-60.5, 96.5], "expected": 96.5}, {"input": [-60.5, 97.0], "expected": 97.0}, {"input": [-60.5, 97.5], "expected": 97.5}, {"input": [-60.5, 98.0], "expected": 98.0}, {"input": [-60.5, 98.5], "expected": 98.5}, {"input": [-60.5, 99.0], "expected": 99.0}, {"input": [-60.5, 99.5], "expected": 99.5}, {"input": [-60.0, -100.0], "expected": -60.0}, {"input": [-60.0, -99.5], "expected": -60.0}, {"input": [-60.0, -99.0], "expected": -60.0}, {"input": [-60.0, -98.5], "expected": -60.0}, {"input": [-60.0, -98.0], "expected": -60.0}, {"input": [-60.0, -97.5], "expected": -60.0}, {"input": [-60.0, -97.0], "expected": -60.0}, {"input": [-60.0, -96.5], "expected": -60.0}, {"input": [-60.0, -96.0], "expected": -60.0}, {"input": [-60.0, -95.5], "expected": -60.0}, {"input": [-60.0, -95.0], "expected": -60.0}, {"input": [-60.0, -94.5], "expected": -60.0}, {"input": [-60.0, -94.0], "expected": -60.0}, {"input": [-60.0, -93.5], "expected": -60.0}, {"input": [-60.0, -93.0], "expected": -59.99999999999999}, {"input": [-60.0, -92.5], "expected": -59.99999999999999}, {"input": [-60.0, -92.0], "expected": -59.999999999999986}, {"input": [-60.0, -91.5], "expected": -59.99999999999998}, {"input": [-60.0, -91.0], "expected": -59.999999999999964}, {"input": [-60.0, -90.5], "expected": -59.99999999999994}, {"input": [-60.0, -90.0], "expected": -59.99999999999991}, {"input": [-60.0, -89.5], "expected": -59.999999999999844}, {"input": [-60.0, -89.0], "expected": -59.999999999999744}, {"input": [-60.0, -88.5], "expected": -59.99999999999958}, {"input": [-60.0, -88.0], "expected": -59.99999999999931}, {"input": [-60.0, -87.5], "expected": -59.99999999999886}, {"input": [-60.0, -87.0], "expected": -59.99999999999812}, {"input": [-60.0, -86.5], "expected": -59.9999999999969}, {"input": [-60.0, -86.0], "expected": -59.99999999999489}, {"input": [-60.0, -85.5], "expected": -59.99999999999158}, {"input": [-60.0, -85.0], "expected": -59.99999999998611}, {"input": [-60.0, -84.5], "expected": -59.9999999999771}, {"input": [-60.0, -84.0], "expected": -59.99999999996225}, {"input": [-60.0, -83.5], "expected": -59.99999999993776}, {"input": [-60.0, -83.0], "expected": -59.99999999989738}, {"input": [-60.0, -82.5], "expected": -59.99999999983081}, {"input": [-60.0, -82.0], "expected": -59.999999999721055}, {"input": [-60.0, -81.5], "expected": -59.999999999540094}, {"input": [-60.0, -81.0], "expected": -59.999999999241744}, {"input": [-60.0, -80.5], "expected": -59.99999999874985}, {"input": [-60.0, -80.0], "expected": -59.99999999793884}, {"input": [-60.0, -79.5], "expected": -59.99999999660173}, {"input": [-60.0, -79.0], "expected": -59.99999999439721}, {"input": [-60.0, -78.5], "expected": -59.999999990762554}, {"input": [-60.0, -78.0], "expected": -59.99999998477002}, {"input": [-60.0, -77.5], "expected": -59.99999997489001}, {"input": [-60.0, -77.0], "expected": -59.999999958600625}, {"input": [-60.0, -76.5], "expected": -59.99999993174397}, {"input": [-60.0, -76.0], "expected": -59.99999988746483}, {"input": [-60.0, -75.5], "expected": -59.99999981446088}, {"input": [-60.0, -75.0], "expected": -59.999999694097724}, {"input": [-60.0, -74.5], "expected": -59.99999949565247}, {"input": [-60.0, -74.0], "expected": -59.999999168471625}, {"input": [-60.0, -73.5], "expected": -59.999998629041855}, {"input": [-60.0, -73.0], "expected": -59.99999773967315}, {"input": [-60.0, -72.5], "expected": -59.99999627335377}, {"input": [-60.0, -72.0], "expected": -59.99999385580652}, {"input": [-60.0, -71.5], "expected": -59.99998986995771}, {"input": [-60.0, -71.0], "expected": -59.99998329843868}, {"input": [-60.0, -70.5], "expected": -59.99997246392977}, {"input": [-60.0, -70.0], "expected": -59.99995460110078}, {"input": [-60.0, -69.5], "expected": -59.99992515097137}, {"input": [-60.0, -69.0], "expected": -59.99987659781028}, {"input": [-60.0, -68.5], "expected": -59.99979655232787}, {"input": [-60.0, -68.0], "expected": -59.9996645936271}, {"input": [-60.0, -67.5], "expected": -59.99944706852464}, {"input": [-60.0, -67.0], "expected": -59.99908853354623}, {"input": [-60.0, -66.5], "expected": -59.99849768984024}, {"input": [-60.0, -66.0], "expected": -59.99752431486227}, {"input": [-60.0, -65.5], "expected": -59.99592155672943}, {"input": [-60.0, -65.0], "expected": -59.99328465151088}, {"input": [-60.0, -64.5], "expected": -59.9889522551514}, {"input": [-60.0, -64.0], "expected": -59.98185007208219}, {"input": [-60.0, -63.5], "expected": -59.97024958172738}, {"input": [-60.0, -63.0], "expected": -59.951412648426256}, {"input": [-60.0, -62.5], "expected": -59.92111026570745}, {"input": [-60.0, -62.0], "expected": -59.87307198895703}, {"input": [-60.0, -61.5], "expected": -59.79858672201725}, {"input": [-60.0, -61.0], "expected": -59.68673831248178}, {"input": [-60.0, -60.5], "expected": -59.52592301581989}, {"input": [-60.0, -60.0], "expected": -59.30685281944005}, {"input": [-60.0, -59.5], "expected": -59.02592301581989}, {"input": [-60.0, -59.0], "expected": -58.68673831248178}, {"input": [-60.0, -58.5], "expected": -58.29858672201725}, {"input": [-60.0, -58.0], "expected": -57.87307198895703}, {"input": [-60.0, -57.5], "expected": -57.42111026570745}, {"input": [-60.0, -57.0], "expected": -56.951412648426256}, {"input": [-60.0, -56.5], "expected": -56.47024958172738}, {"input": [-60.0, -56.0], "expected": -55.98185007208219}, {"input": [-60.0, -55.5], "expected": -55.4889522551514}, {"input": [-60.0, -55.0], "expected": -54.99328465151088}, {"input": [-60.0, -54.5], "expected": -54.49592155672943}, {"input": [-60.0, -54.0], "expected": -53.99752431486227}, {"input": [-60.0, -53.5], "expected": -53.49849768984024}, {"input": [-60.0, -53.0], "expected": -52.99908853354623}, {"input": [-60.0, -52.5], "expected": -52.49944706852464}, {"input": [-60.0, -52.0], "expected": -51.9996645936271}, {"input": [-60.0, -51.5], "expected": -51.49979655232787}, {"input": [-60.0, -51.0], "expected": -50.99987659781028}, {"input": [-60.0, -50.5], "expected": -50.49992515097137}, {"input": [-60.0, -50.0], "expected": -49.99995460110078}, {"input": [-60.0, -49.5], "expected": -49.49997246392977}, {"input": [-60.0, -49.0], "expected": -48.99998329843868}, {"input": [-60.0, -48.5], "expected": -48.49998986995771}, {"input": [-60.0, -48.0], "expected": -47.99999385580652}, {"input": [-60.0, -47.5], "expected": -47.49999627335377}, {"input": [-60.0, -47.0], "expected": -46.99999773967315}, {"input": [-60.0, -46.5], "expected": -46.499998629041855}, {"input": [-60.0, -46.0], "expected": -45.999999168471625}, {"input": [-60.0, -45.5], "expected": -45.49999949565247}, {"input": [-60.0, -45.0], "expected": -44.999999694097724}, {"input": [-60.0, -44.5], "expected": -44.49999981446088}, {"input": [-60.0, -44.0], "expected": -43.99999988746483}, {"input": [-60.0, -43.5], "expected": -43.49999993174397}, {"input": [-60.0, -43.0], "expected": -42.999999958600625}, {"input": [-60.0, -42.5], "expected": -42.49999997489001}, {"input": [-60.0, -42.0], "expected": -41.99999998477002}, {"input": [-60.0, -41.5], "expected": -41.499999990762554}, {"input": [-60.0, -41.0], "expected": -40.99999999439721}, {"input": [-60.0, -40.5], "expected": -40.49999999660173}, {"input": [-60.0, -40.0], "expected": -39.99999999793884}, {"input": [-60.0, -39.5], "expected": -39.49999999874985}, {"input": [-60.0, -39.0], "expected": -38.999999999241744}, {"input": [-60.0, -38.5], "expected": -38.499999999540094}, {"input": [-60.0, -38.0], "expected": -37.999999999721055}, {"input": [-60.0, -37.5], "expected": -37.49999999983081}, {"input": [-60.0, -37.0], "expected": -36.99999999989738}, {"input": [-60.0, -36.5], "expected": -36.49999999993776}, {"input": [-60.0, -36.0], "expected": -35.99999999996225}, {"input": [-60.0, -35.5], "expected": -35.4999999999771}, {"input": [-60.0, -35.0], "expected": -34.99999999998611}, {"input": [-60.0, -34.5], "expected": -34.49999999999158}, {"input": [-60.0, -34.0], "expected": -33.99999999999489}, {"input": [-60.0, -33.5], "expected": -33.4999999999969}, {"input": [-60.0, -33.0], "expected": -32.99999999999812}, {"input": [-60.0, -32.5], "expected": -32.49999999999886}, {"input": [-60.0, -32.0], "expected": -31.999999999999307}, {"input": [-60.0, -31.5], "expected": -31.49999999999958}, {"input": [-60.0, -31.0], "expected": -30.999999999999744}, {"input": [-60.0, -30.5], "expected": -30.499999999999847}, {"input": [-60.0, -30.0], "expected": -29.999999999999908}, {"input": [-60.0, -29.5], "expected": -29.499999999999943}, {"input": [-60.0, -29.0], "expected": -28.999999999999964}, {"input": [-60.0, -28.5], "expected": -28.49999999999998}, {"input": [-60.0, -28.0], "expected": -27.999999999999986}, {"input": [-60.0, -27.5], "expected": -27.499999999999993}, {"input": [-60.0, -27.0], "expected": -26.999999999999996}, {"input": [-60.0, -26.5], "expected": -26.499999999999996}, {"input": [-60.0, -26.0], "expected": -26.0}, {"input": [-60.0, -25.5], "expected": -25.5}, {"input": [-60.0, -25.0], "expected": -25.0}, {"input": [-60.0, -24.5], "expected": -24.5}, {"input": [-60.0, -24.0], "expected": -24.0}, {"input": [-60.0, -23.5], "expected": -23.5}, {"input": [-60.0, -23.0], "expected": -23.0}, {"input": [-60.0, -22.5], "expected": -22.5}, {"input": [-60.0, -22.0], "expected": -22.0}, {"input": [-60.0, -21.5], "expected": -21.5}, {"input": [-60.0, -21.0], "expected": -21.0}, {"input": [-60.0, -20.5], "expected": -20.5}, {"input": [-60.0, -20.0], "expected": -20.0}, {"input": [-60.0, -19.5], "expected": -19.5}, {"input": [-60.0, -19.0], "expected": -19.0}, {"input": [-60.0, -18.5], "expected": -18.5}, {"input": [-60.0, -18.0], "expected": -18.0}, {"input": [-60.0, -17.5], "expected": -17.5}, {"input": [-60.0, -17.0], "expected": -17.0}, {"input": [-60.0, -16.5], "expected": -16.5}, {"input": [-60.0, -16.0], "expected": -16.0}, {"input": [-60.0, -15.5], "expected": -15.5}, {"input": [-60.0, -15.0], "expected": -15.0}, {"input": [-60.0, -14.5], "expected": -14.5}, {"input": [-60.0, -14.0], "expected": -14.0}, {"input": [-60.0, -13.5], "expected": -13.5}, {"input": [-60.0, -13.0], "expected": -13.0}, {"input": [-60.0, -12.5], "expected": -12.5}, {"input": [-60.0, -12.0], "expected": -12.0}, {"input": [-60.0, -11.5], "expected": -11.5}, {"input": [-60.0, -11.0], "expected": -11.0}, {"input": [-60.0, -10.5], "expected": -10.5}, {"input": [-60.0, -10.0], "expected": -10.0}, {"input": [-60.0, -9.5], "expected": -9.5}, {"input": [-60.0, -9.0], "expected": -9.0}, {"input": [-60.0, -8.5], "expected": -8.5}, {"input": [-60.0, -8.0], "expected": -8.0}, {"input": [-60.0, -7.5], "expected": -7.5}, {"input": [-60.0, -7.0], "expected": -7.0}, {"input": [-60.0, -6.5], "expected": -6.5}, {"input": [-60.0, -6.0], "expected": -6.0}, {"input": [-60.0, -5.5], "expected": -5.5}, {"input": [-60.0, -5.0], "expected": -5.0}, {"input": [-60.0, -4.5], "expected": -4.5}, {"input": [-60.0, -4.0], "expected": -4.0}, {"input": [-60.0, -3.5], "expected": -3.5}, {"input": [-60.0, -3.0], "expected": -3.0}, {"input": [-60.0, -2.5], "expected": -2.5}, {"input": [-60.0, -2.0], "expected": -2.0}, {"input": [-60.0, -1.5], "expected": -1.5}, {"input": [-60.0, -1.0], "expected": -1.0}, {"input": [-60.0, -0.5], "expected": -0.5}, {"input": [-60.0, 0.0], "expected": 8.75651076269652e-27}, {"input": [-60.0, 0.5], "expected": 0.5}, {"input": [-60.0, 1.0], "expected": 1.0}, {"input": [-60.0, 1.5], "expected": 1.5}, {"input": [-60.0, 2.0], "expected": 2.0}, {"input": [-60.0, 2.5], "expected": 2.5}, {"input": [-60.0, 3.0], "expected": 3.0}, {"input": [-60.0, 3.5], "expected": 3.5}, {"input": [-60.0, 4.0], "expected": 4.0}, {"input": [-60.0, 4.5], "expected": 4.5}, {"input": [-60.0, 5.0], "expected": 5.0}, {"input": [-60.0, 5.5], "expected": 5.5}, {"input": [-60.0, 6.0], "expected": 6.0}, {"input": [-60.0, 6.5], "expected": 6.5}, {"input": [-60.0, 7.0], "expected": 7.0}, {"input": [-60.0, 7.5], "expected": 7.5}, {"input": [-60.0, 8.0], "expected": 8.0}, {"input": [-60.0, 8.5], "expected": 8.5}, {"input": [-60.0, 9.0], "expected": 9.0}, {"input": [-60.0, 9.5], "expected": 9.5}, {"input": [-60.0, 10.0], "expected": 10.0}, {"input": [-60.0, 10.5], "expected": 10.5}, {"input": [-60.0, 11.0], "expected": 11.0}, {"input": [-60.0, 11.5], "expected": 11.5}, {"input": [-60.0, 12.0], "expected": 12.0}, {"input": [-60.0, 12.5], "expected": 12.5}, {"input": [-60.0, 13.0], "expected": 13.0}, {"input": [-60.0, 13.5], "expected": 13.5}, {"input": [-60.0, 14.0], "expected": 14.0}, {"input": [-60.0, 14.5], "expected": 14.5}, {"input": [-60.0, 15.0], "expected": 15.0}, {"input": [-60.0, 15.5], "expected": 15.5}, {"input": [-60.0, 16.0], "expected": 16.0}, {"input": [-60.0, 16.5], "expected": 16.5}, {"input": [-60.0, 17.0], "expected": 17.0}, {"input": [-60.0, 17.5], "expected": 17.5}, {"input": [-60.0, 18.0], "expected": 18.0}, {"input": [-60.0, 18.5], "expected": 18.5}, {"input": [-60.0, 19.0], "expected": 19.0}, {"input": [-60.0, 19.5], "expected": 19.5}, {"input": [-60.0, 20.0], "expected": 20.0}, {"input": [-60.0, 20.5], "expected": 20.5}, {"input": [-60.0, 21.0], "expected": 21.0}, {"input": [-60.0, 21.5], "expected": 21.5}, {"input": [-60.0, 22.0], "expected": 22.0}, {"input": [-60.0, 22.5], "expected": 22.5}, {"input": [-60.0, 23.0], "expected": 23.0}, {"input": [-60.0, 23.5], "expected": 23.5}, {"input": [-60.0, 24.0], "expected": 24.0}, {"input": [-60.0, 24.5], "expected": 24.5}, {"input": [-60.0, 25.0], "expected": 25.0}, {"input": [-60.0, 25.5], "expected": 25.5}, {"input": [-60.0, 26.0], "expected": 26.0}, {"input": [-60.0, 26.5], "expected": 26.5}, {"input": [-60.0, 27.0], "expected": 27.0}, {"input": [-60.0, 27.5], "expected": 27.5}, {"input": [-60.0, 28.0], "expected": 28.0}, {"input": [-60.0, 28.5], "expected": 28.5}, {"input": [-60.0, 29.0], "expected": 29.0}, {"input": [-60.0, 29.5], "expected": 29.5}, {"input": [-60.0, 30.0], "expected": 30.0}, {"input": [-60.0, 30.5], "expected": 30.5}, {"input": [-60.0, 31.0], "expected": 31.0}, {"input": [-60.0, 31.5], "expected": 31.5}, {"input": [-60.0, 32.0], "expected": 32.0}, {"input": [-60.0, 32.5], "expected": 32.5}, {"input": [-60.0, 33.0], "expected": 33.0}, {"input": [-60.0, 33.5], "expected": 33.5}, {"input": [-60.0, 34.0], "expected": 34.0}, {"input": [-60.0, 34.5], "expected": 34.5}, {"input": [-60.0, 35.0], "expected": 35.0}, {"input": [-60.0, 35.5], "expected": 35.5}, {"input": [-60.0, 36.0], "expected": 36.0}, {"input": [-60.0, 36.5], "expected": 36.5}, {"input": [-60.0, 37.0], "expected": 37.0}, {"input": [-60.0, 37.5], "expected": 37.5}, {"input": [-60.0, 38.0], "expected": 38.0}, {"input": [-60.0, 38.5], "expected": 38.5}, {"input": [-60.0, 39.0], "expected": 39.0}, {"input": [-60.0, 39.5], "expected": 39.5}, {"input": [-60.0, 40.0], "expected": 40.0}, {"input": [-60.0, 40.5], "expected": 40.5}, {"input": [-60.0, 41.0], "expected": 41.0}, {"input": [-60.0, 41.5], "expected": 41.5}, {"input": [-60.0, 42.0], "expected": 42.0}, {"input": [-60.0, 42.5], "expected": 42.5}, {"input": [-60.0, 43.0], "expected": 43.0}, {"input": [-60.0, 43.5], "expected": 43.5}, {"input": [-60.0, 44.0], "expected": 44.0}, {"input": [-60.0, 44.5], "expected": 44.5}, {"input": [-60.0, 45.0], "expected": 45.0}, {"input": [-60.0, 45.5], "expected": 45.5}, {"input": [-60.0, 46.0], "expected": 46.0}, {"input": [-60.0, 46.5], "expected": 46.5}, {"input": [-60.0, 47.0], "expected": 47.0}, {"input": [-60.0, 47.5], "expected": 47.5}, {"input": [-60.0, 48.0], "expected": 48.0}, {"input": [-60.0, 48.5], "expected": 48.5}, {"input": [-60.0, 49.0], "expected": 49.0}, {"input": [-60.0, 49.5], "expected": 49.5}, {"input": [-60.0, 50.0], "expected": 50.0}, {"input": [-60.0, 50.5], "expected": 50.5}, {"input": [-60.0, 51.0], "expected": 51.0}, {"input": [-60.0, 51.5], "expected": 51.5}, {"input": [-60.0, 52.0], "expected": 52.0}, {"input": [-60.0, 52.5], "expected": 52.5}, {"input": [-60.0, 53.0], "expected": 53.0}, {"input": [-60.0, 53.5], "expected": 53.5}, {"input": [-60.0, 54.0], "expected": 54.0}, {"input": [-60.0, 54.5], "expected": 54.5}, {"input": [-60.0, 55.0], "expected": 55.0}, {"input": [-60.0, 55.5], "expected": 55.5}, {"input": [-60.0, 56.0], "expected": 56.0}, {"input": [-60.0, 56.5], "expected": 56.5}, {"input": [-60.0, 57.0], "expected": 57.0}, {"input": [-60.0, 57.5], "expected": 57.5}, {"input": [-60.0, 58.0], "expected": 58.0}, {"input": [-60.0, 58.5], "expected": 58.5}, {"input": [-60.0, 59.0], "expected": 59.0}, {"input": [-60.0, 59.5], "expected": 59.5}, {"input": [-60.0, 60.0], "expected": 60.0}, {"input": [-60.0, 60.5], "expected": 60.5}, {"input": [-60.0, 61.0], "expected": 61.0}, {"input": [-60.0, 61.5], "expected": 61.5}, {"input": [-60.0, 62.0], "expected": 62.0}, {"input": [-60.0, 62.5], "expected": 62.5}, {"input": [-60.0, 63.0], "expected": 63.0}, {"input": [-60.0, 63.5], "expected": 63.5}, {"input": [-60.0, 64.0], "expected": 64.0}, {"input": [-60.0, 64.5], "expected": 64.5}, {"input": [-60.0, 65.0], "expected": 65.0}, {"input": [-60.0, 65.5], "expected": 65.5}, {"input": [-60.0, 66.0], "expected": 66.0}, {"input": [-60.0, 66.5], "expected": 66.5}, {"input": [-60.0, 67.0], "expected": 67.0}, {"input": [-60.0, 67.5], "expected": 67.5}, {"input": [-60.0, 68.0], "expected": 68.0}, {"input": [-60.0, 68.5], "expected": 68.5}, {"input": [-60.0, 69.0], "expected": 69.0}, {"input": [-60.0, 69.5], "expected": 69.5}, {"input": [-60.0, 70.0], "expected": 70.0}, {"input": [-60.0, 70.5], "expected": 70.5}, {"input": [-60.0, 71.0], "expected": 71.0}, {"input": [-60.0, 71.5], "expected": 71.5}, {"input": [-60.0, 72.0], "expected": 72.0}, {"input": [-60.0, 72.5], "expected": 72.5}, {"input": [-60.0, 73.0], "expected": 73.0}, {"input": [-60.0, 73.5], "expected": 73.5}, {"input": [-60.0, 74.0], "expected": 74.0}, {"input": [-60.0, 74.5], "expected": 74.5}, {"input": [-60.0, 75.0], "expected": 75.0}, {"input": [-60.0, 75.5], "expected": 75.5}, {"input": [-60.0, 76.0], "expected": 76.0}, {"input": [-60.0, 76.5], "expected": 76.5}, {"input": [-60.0, 77.0], "expected": 77.0}, {"input": [-60.0, 77.5], "expected": 77.5}, {"input": [-60.0, 78.0], "expected": 78.0}, {"input": [-60.0, 78.5], "expected": 78.5}, {"input": [-60.0, 79.0], "expected": 79.0}, {"input": [-60.0, 79.5], "expected": 79.5}, {"input": [-60.0, 80.0], "expected": 80.0}, {"input": [-60.0, 80.5], "expected": 80.5}, {"input": [-60.0, 81.0], "expected": 81.0}, {"input": [-60.0, 81.5], "expected": 81.5}, {"input": [-60.0, 82.0], "expected": 82.0}, {"input": [-60.0, 82.5], "expected": 82.5}, {"input": [-60.0, 83.0], "expected": 83.0}, {"input": [-60.0, 83.5], "expected": 83.5}, {"input": [-60.0, 84.0], "expected": 84.0}, {"input": [-60.0, 84.5], "expected": 84.5}, {"input": [-60.0, 85.0], "expected": 85.0}, {"input": [-60.0, 85.5], "expected": 85.5}, {"input": [-60.0, 86.0], "expected": 86.0}, {"input": [-60.0, 86.5], "expected": 86.5}, {"input": [-60.0, 87.0], "expected": 87.0}, {"input": [-60.0, 87.5], "expected": 87.5}, {"input": [-60.0, 88.0], "expected": 88.0}, {"input": [-60.0, 88.5], "expected": 88.5}, {"input": [-60.0, 89.0], "expected": 89.0}, {"input": [-60.0, 89.5], "expected": 89.5}, {"input": [-60.0, 90.0], "expected": 90.0}, {"input": [-60.0, 90.5], "expected": 90.5}, {"input": [-60.0, 91.0], "expected": 91.0}, {"input": [-60.0, 91.5], "expected": 91.5}, {"input": [-60.0, 92.0], "expected": 92.0}, {"input": [-60.0, 92.5], "expected": 92.5}, {"input": [-60.0, 93.0], "expected": 93.0}, {"input": [-60.0, 93.5], "expected": 93.5}, {"input": [-60.0, 94.0], "expected": 94.0}, {"input": [-60.0, 94.5], "expected": 94.5}, {"input": [-60.0, 95.0], "expected": 95.0}, {"input": [-60.0, 95.5], "expected": 95.5}, {"input": [-60.0, 96.0], "expected": 96.0}, {"input": [-60.0, 96.5], "expected": 96.5}, {"input": [-60.0, 97.0], "expected": 97.0}, {"input": [-60.0, 97.5], "expected": 97.5}, {"input": [-60.0, 98.0], "expected": 98.0}, {"input": [-60.0, 98.5], "expected": 98.5}, {"input": [-60.0, 99.0], "expected": 99.0}, {"input": [-60.0, 99.5], "expected": 99.5}, {"input": [-59.5, -100.0], "expected": -59.5}, {"input": [-59.5, -99.5], "expected": -59.5}, {"input": [-59.5, -99.0], "expected": -59.5}, {"input": [-59.5, -98.5], "expected": -59.5}, {"input": [-59.5, -98.0], "expected": -59.5}, {"input": [-59.5, -97.5], "expected": -59.5}, {"input": [-59.5, -97.0], "expected": -59.5}, {"input": [-59.5, -96.5], "expected": -59.5}, {"input": [-59.5, -96.0], "expected": -59.5}, {"input": [-59.5, -95.5], "expected": -59.5}, {"input": [-59.5, -95.0], "expected": -59.5}, {"input": [-59.5, -94.5], "expected": -59.5}, {"input": [-59.5, -94.0], "expected": -59.5}, {"input": [-59.5, -93.5], "expected": -59.5}, {"input": [-59.5, -93.0], "expected": -59.5}, {"input": [-59.5, -92.5], "expected": -59.49999999999999}, {"input": [-59.5, -92.0], "expected": -59.49999999999999}, {"input": [-59.5, -91.5], "expected": -59.499999999999986}, {"input": [-59.5, -91.0], "expected": -59.49999999999998}, {"input": [-59.5, -90.5], "expected": -59.499999999999964}, {"input": [-59.5, -90.0], "expected": -59.49999999999994}, {"input": [-59.5, -89.5], "expected": -59.49999999999991}, {"input": [-59.5, -89.0], "expected": -59.499999999999844}, {"input": [-59.5, -88.5], "expected": -59.499999999999744}, {"input": [-59.5, -88.0], "expected": -59.49999999999958}, {"input": [-59.5, -87.5], "expected": -59.49999999999931}, {"input": [-59.5, -87.0], "expected": -59.49999999999886}, {"input": [-59.5, -86.5], "expected": -59.49999999999812}, {"input": [-59.5, -86.0], "expected": -59.4999999999969}, {"input": [-59.5, -85.5], "expected": -59.49999999999489}, {"input": [-59.5, -85.0], "expected": -59.49999999999158}, {"input": [-59.5, -84.5], "expected": -59.49999999998611}, {"input": [-59.5, -84.0], "expected": -59.4999999999771}, {"input": [-59.5, -83.5], "expected": -59.49999999996225}, {"input": [-59.5, -83.0], "expected": -59.49999999993776}, {"input": [-59.5, -82.5], "expected": -59.49999999989738}, {"input": [-59.5, -82.0], "expected": -59.49999999983081}, {"input": [-59.5, -81.5], "expected": -59.499999999721055}, {"input": [-59.5, -81.0], "expected": -59.499999999540094}, {"input": [-59.5, -80.5], "expected": -59.499999999241744}, {"input": [-59.5, -80.0], "expected": -59.49999999874985}, {"input": [-59.5, -79.5], "expected": -59.49999999793884}, {"input": [-59.5, -79.0], "expected": -59.49999999660173}, {"input": [-59.5, -78.5], "expected": -59.49999999439721}, {"input": [-59.5, -78.0], "expected": -59.499999990762554}, {"input": [-59.5, -77.5], "expected": -59.49999998477002}, {"input": [-59.5, -77.0], "expected": -59.49999997489001}, {"input": [-59.5, -76.5], "expected": -59.499999958600625}, {"input": [-59.5, -76.0], "expected": -59.49999993174397}, {"input": [-59.5, -75.5], "expected": -59.49999988746483}, {"input": [-59.5, -75.0], "expected": -59.49999981446088}, {"input": [-59.5, -74.5], "expected": -59.499999694097724}, {"input": [-59.5, -74.0], "expected": -59.49999949565247}, {"input": [-59.5, -73.5], "expected": -59.499999168471625}, {"input": [-59.5, -73.0], "expected": -59.499998629041855}, {"input": [-59.5, -72.5], "expected": -59.49999773967315}, {"input": [-59.5, -72.0], "expected": -59.49999627335377}, {"input": [-59.5, -71.5], "expected": -59.49999385580652}, {"input": [-59.5, -71.0], "expected": -59.49998986995771}, {"input": [-59.5, -70.5], "expected": -59.49998329843868}, {"input": [-59.5, -70.0], "expected": -59.49997246392977}, {"input": [-59.5, -69.5], "expected": -59.49995460110078}, {"input": [-59.5, -69.0], "expected": -59.49992515097137}, {"input": [-59.5, -68.5], "expected": -59.49987659781028}, {"input": [-59.5, -68.0], "expected": -59.49979655232787}, {"input": [-59.5, -67.5], "expected": -59.4996645936271}, {"input": [-59.5, -67.0], "expected": -59.49944706852464}, {"input": [-59.5, -66.5], "expected": -59.49908853354623}, {"input": [-59.5, -66.0], "expected": -59.49849768984024}, {"input": [-59.5, -65.5], "expected": -59.49752431486227}, {"input": [-59.5, -65.0], "expected": -59.49592155672943}, {"input": [-59.5, -64.5], "expected": -59.49328465151088}, {"input": [-59.5, -64.0], "expected": -59.4889522551514}, {"input": [-59.5, -63.5], "expected": -59.48185007208219}, {"input": [-59.5, -63.0], "expected": -59.47024958172738}, {"input": [-59.5, -62.5], "expected": -59.451412648426256}, {"input": [-59.5, -62.0], "expected": -59.42111026570745}, {"input": [-59.5, -61.5], "expected": -59.37307198895703}, {"input": [-59.5, -61.0], "expected": -59.29858672201725}, {"input": [-59.5, -60.5], "expected": -59.18673831248178}, {"input": [-59.5, -60.0], "expected": -59.02592301581989}, {"input": [-59.5, -59.5], "expected": -58.80685281944005}, {"input": [-59.5, -59.0], "expected": -58.52592301581989}, {"input": [-59.5, -58.5], "expected": -58.18673831248178}, {"input": [-59.5, -58.0], "expected": -57.79858672201725}, {"input": [-59.5, -57.5], "expected": -57.37307198895703}, {"input": [-59.5, -57.0], "expected": -56.92111026570745}, {"input": [-59.5, -56.5], "expected": -56.451412648426256}, {"input": [-59.5, -56.0], "expected": -55.97024958172738}, {"input": [-59.5, -55.5], "expected": -55.48185007208219}, {"input": [-59.5, -55.0], "expected": -54.9889522551514}, {"input": [-59.5, -54.5], "expected": -54.49328465151088}, {"input": [-59.5, -54.0], "expected": -53.99592155672943}, {"input": [-59.5, -53.5], "expected": -53.49752431486227}, {"input": [-59.5, -53.0], "expected": -52.99849768984024}, {"input": [-59.5, -52.5], "expected": -52.49908853354623}, {"input": [-59.5, -52.0], "expected": -51.99944706852464}, {"input": [-59.5, -51.5], "expected": -51.4996645936271}, {"input": [-59.5, -51.0], "expected": -50.99979655232787}, {"input": [-59.5, -50.5], "expected": -50.49987659781028}, {"input": [-59.5, -50.0], "expected": -49.99992515097137}, {"input": [-59.5, -49.5], "expected": -49.49995460110078}, {"input": [-59.5, -49.0], "expected": -48.99997246392977}, {"input": [-59.5, -48.5], "expected": -48.49998329843868}, {"input": [-59.5, -48.0], "expected": -47.99998986995771}, {"input": [-59.5, -47.5], "expected": -47.49999385580652}, {"input": [-59.5, -47.0], "expected": -46.99999627335377}, {"input": [-59.5, -46.5], "expected": -46.49999773967315}, {"input": [-59.5, -46.0], "expected": -45.999998629041855}, {"input": [-59.5, -45.5], "expected": -45.499999168471625}, {"input": [-59.5, -45.0], "expected": -44.99999949565247}, {"input": [-59.5, -44.5], "expected": -44.499999694097724}, {"input": [-59.5, -44.0], "expected": -43.99999981446088}, {"input": [-59.5, -43.5], "expected": -43.49999988746483}, {"input": [-59.5, -43.0], "expected": -42.99999993174397}, {"input": [-59.5, -42.5], "expected": -42.499999958600625}, {"input": [-59.5, -42.0], "expected": -41.99999997489001}, {"input": [-59.5, -41.5], "expected": -41.49999998477002}, {"input": [-59.5, -41.0], "expected": -40.999999990762554}, {"input": [-59.5, -40.5], "expected": -40.49999999439721}, {"input": [-59.5, -40.0], "expected": -39.99999999660173}, {"input": [-59.5, -39.5], "expected": -39.49999999793884}, {"input": [-59.5, -39.0], "expected": -38.99999999874985}, {"input": [-59.5, -38.5], "expected": -38.499999999241744}, {"input": [-59.5, -38.0], "expected": -37.999999999540094}, {"input": [-59.5, -37.5], "expected": -37.499999999721055}, {"input": [-59.5, -37.0], "expected": -36.99999999983081}, {"input": [-59.5, -36.5], "expected": -36.49999999989738}, {"input": [-59.5, -36.0], "expected": -35.99999999993776}, {"input": [-59.5, -35.5], "expected": -35.49999999996225}, {"input": [-59.5, -35.0], "expected": -34.9999999999771}, {"input": [-59.5, -34.5], "expected": -34.49999999998611}, {"input": [-59.5, -34.0], "expected": -33.99999999999158}, {"input": [-59.5, -33.5], "expected": -33.49999999999489}, {"input": [-59.5, -33.0], "expected": -32.9999999999969}, {"input": [-59.5, -32.5], "expected": -32.49999999999812}, {"input": [-59.5, -32.0], "expected": -31.99999999999886}, {"input": [-59.5, -31.5], "expected": -31.499999999999307}, {"input": [-59.5, -31.0], "expected": -30.99999999999958}, {"input": [-59.5, -30.5], "expected": -30.499999999999744}, {"input": [-59.5, -30.0], "expected": -29.999999999999847}, {"input": [-59.5, -29.5], "expected": -29.499999999999908}, {"input": [-59.5, -29.0], "expected": -28.999999999999943}, {"input": [-59.5, -28.5], "expected": -28.499999999999964}, {"input": [-59.5, -28.0], "expected": -27.99999999999998}, {"input": [-59.5, -27.5], "expected": -27.499999999999986}, {"input": [-59.5, -27.0], "expected": -26.999999999999993}, {"input": [-59.5, -26.5], "expected": -26.499999999999996}, {"input": [-59.5, -26.0], "expected": -25.999999999999996}, {"input": [-59.5, -25.5], "expected": -25.5}, {"input": [-59.5, -25.0], "expected": -25.0}, {"input": [-59.5, -24.5], "expected": -24.5}, {"input": [-59.5, -24.0], "expected": -24.0}, {"input": [-59.5, -23.5], "expected": -23.5}, {"input": [-59.5, -23.0], "expected": -23.0}, {"input": [-59.5, -22.5], "expected": -22.5}, {"input": [-59.5, -22.0], "expected": -22.0}, {"input": [-59.5, -21.5], "expected": -21.5}, {"input": [-59.5, -21.0], "expected": -21.0}, {"input": [-59.5, -20.5], "expected": -20.5}, {"input": [-59.5, -20.0], "expected": -20.0}, {"input": [-59.5, -19.5], "expected": -19.5}, {"input": [-59.5, -19.0], "expected": -19.0}, {"input": [-59.5, -18.5], "expected": -18.5}, {"input": [-59.5, -18.0], "expected": -18.0}, {"input": [-59.5, -17.5], "expected": -17.5}, {"input": [-59.5, -17.0], "expected": -17.0}, {"input": [-59.5, -16.5], "expected": -16.5}, {"input": [-59.5, -16.0], "expected": -16.0}, {"input": [-59.5, -15.5], "expected": -15.5}, {"input": [-59.5, -15.0], "expected": -15.0}, {"input": [-59.5, -14.5], "expected": -14.5}, {"input": [-59.5, -14.0], "expected": -14.0}, {"input": [-59.5, -13.5], "expected": -13.5}, {"input": [-59.5, -13.0], "expected": -13.0}, {"input": [-59.5, -12.5], "expected": -12.5}, {"input": [-59.5, -12.0], "expected": -12.0}, {"input": [-59.5, -11.5], "expected": -11.5}, {"input": [-59.5, -11.0], "expected": -11.0}, {"input": [-59.5, -10.5], "expected": -10.5}, {"input": [-59.5, -10.0], "expected": -10.0}, {"input": [-59.5, -9.5], "expected": -9.5}, {"input": [-59.5, -9.0], "expected": -9.0}, {"input": [-59.5, -8.5], "expected": -8.5}, {"input": [-59.5, -8.0], "expected": -8.0}, {"input": [-59.5, -7.5], "expected": -7.5}, {"input": [-59.5, -7.0], "expected": -7.0}, {"input": [-59.5, -6.5], "expected": -6.5}, {"input": [-59.5, -6.0], "expected": -6.0}, {"input": [-59.5, -5.5], "expected": -5.5}, {"input": [-59.5, -5.0], "expected": -5.0}, {"input": [-59.5, -4.5], "expected": -4.5}, {"input": [-59.5, -4.0], "expected": -4.0}, {"input": [-59.5, -3.5], "expected": -3.5}, {"input": [-59.5, -3.0], "expected": -3.0}, {"input": [-59.5, -2.5], "expected": -2.5}, {"input": [-59.5, -2.0], "expected": -2.0}, {"input": [-59.5, -1.5], "expected": -1.5}, {"input": [-59.5, -1.0], "expected": -1.0}, {"input": [-59.5, -0.5], "expected": -0.5}, {"input": [-59.5, 0.0], "expected": 1.4437045551572354e-26}, {"input": [-59.5, 0.5], "expected": 0.5}, {"input": [-59.5, 1.0], "expected": 1.0}, {"input": [-59.5, 1.5], "expected": 1.5}, {"input": [-59.5, 2.0], "expected": 2.0}, {"input": [-59.5, 2.5], "expected": 2.5}, {"input": [-59.5, 3.0], "expected": 3.0}, {"input": [-59.5, 3.5], "expected": 3.5}, {"input": [-59.5, 4.0], "expected": 4.0}, {"input": [-59.5, 4.5], "expected": 4.5}, {"input": [-59.5, 5.0], "expected": 5.0}, {"input": [-59.5, 5.5], "expected": 5.5}, {"input": [-59.5, 6.0], "expected": 6.0}, {"input": [-59.5, 6.5], "expected": 6.5}, {"input": [-59.5, 7.0], "expected": 7.0}, {"input": [-59.5, 7.5], "expected": 7.5}, {"input": [-59.5, 8.0], "expected": 8.0}, {"input": [-59.5, 8.5], "expected": 8.5}, {"input": [-59.5, 9.0], "expected": 9.0}, {"input": [-59.5, 9.5], "expected": 9.5}, {"input": [-59.5, 10.0], "expected": 10.0}, {"input": [-59.5, 10.5], "expected": 10.5}, {"input": [-59.5, 11.0], "expected": 11.0}, {"input": [-59.5, 11.5], "expected": 11.5}, {"input": [-59.5, 12.0], "expected": 12.0}, {"input": [-59.5, 12.5], "expected": 12.5}, {"input": [-59.5, 13.0], "expected": 13.0}, {"input": [-59.5, 13.5], "expected": 13.5}, {"input": [-59.5, 14.0], "expected": 14.0}, {"input": [-59.5, 14.5], "expected": 14.5}, {"input": [-59.5, 15.0], "expected": 15.0}, {"input": [-59.5, 15.5], "expected": 15.5}, {"input": [-59.5, 16.0], "expected": 16.0}, {"input": [-59.5, 16.5], "expected": 16.5}, {"input": [-59.5, 17.0], "expected": 17.0}, {"input": [-59.5, 17.5], "expected": 17.5}, {"input": [-59.5, 18.0], "expected": 18.0}, {"input": [-59.5, 18.5], "expected": 18.5}, {"input": [-59.5, 19.0], "expected": 19.0}, {"input": [-59.5, 19.5], "expected": 19.5}, {"input": [-59.5, 20.0], "expected": 20.0}, {"input": [-59.5, 20.5], "expected": 20.5}, {"input": [-59.5, 21.0], "expected": 21.0}, {"input": [-59.5, 21.5], "expected": 21.5}, {"input": [-59.5, 22.0], "expected": 22.0}, {"input": [-59.5, 22.5], "expected": 22.5}, {"input": [-59.5, 23.0], "expected": 23.0}, {"input": [-59.5, 23.5], "expected": 23.5}, {"input": [-59.5, 24.0], "expected": 24.0}, {"input": [-59.5, 24.5], "expected": 24.5}, {"input": [-59.5, 25.0], "expected": 25.0}, {"input": [-59.5, 25.5], "expected": 25.5}, {"input": [-59.5, 26.0], "expected": 26.0}, {"input": [-59.5, 26.5], "expected": 26.5}, {"input": [-59.5, 27.0], "expected": 27.0}, {"input": [-59.5, 27.5], "expected": 27.5}, {"input": [-59.5, 28.0], "expected": 28.0}, {"input": [-59.5, 28.5], "expected": 28.5}, {"input": [-59.5, 29.0], "expected": 29.0}, {"input": [-59.5, 29.5], "expected": 29.5}, {"input": [-59.5, 30.0], "expected": 30.0}, {"input": [-59.5, 30.5], "expected": 30.5}, {"input": [-59.5, 31.0], "expected": 31.0}, {"input": [-59.5, 31.5], "expected": 31.5}, {"input": [-59.5, 32.0], "expected": 32.0}, {"input": [-59.5, 32.5], "expected": 32.5}, {"input": [-59.5, 33.0], "expected": 33.0}, {"input": [-59.5, 33.5], "expected": 33.5}, {"input": [-59.5, 34.0], "expected": 34.0}, {"input": [-59.5, 34.5], "expected": 34.5}, {"input": [-59.5, 35.0], "expected": 35.0}, {"input": [-59.5, 35.5], "expected": 35.5}, {"input": [-59.5, 36.0], "expected": 36.0}, {"input": [-59.5, 36.5], "expected": 36.5}, {"input": [-59.5, 37.0], "expected": 37.0}, {"input": [-59.5, 37.5], "expected": 37.5}, {"input": [-59.5, 38.0], "expected": 38.0}, {"input": [-59.5, 38.5], "expected": 38.5}, {"input": [-59.5, 39.0], "expected": 39.0}, {"input": [-59.5, 39.5], "expected": 39.5}, {"input": [-59.5, 40.0], "expected": 40.0}, {"input": [-59.5, 40.5], "expected": 40.5}, {"input": [-59.5, 41.0], "expected": 41.0}, {"input": [-59.5, 41.5], "expected": 41.5}, {"input": [-59.5, 42.0], "expected": 42.0}, {"input": [-59.5, 42.5], "expected": 42.5}, {"input": [-59.5, 43.0], "expected": 43.0}, {"input": [-59.5, 43.5], "expected": 43.5}, {"input": [-59.5, 44.0], "expected": 44.0}, {"input": [-59.5, 44.5], "expected": 44.5}, {"input": [-59.5, 45.0], "expected": 45.0}, {"input": [-59.5, 45.5], "expected": 45.5}, {"input": [-59.5, 46.0], "expected": 46.0}, {"input": [-59.5, 46.5], "expected": 46.5}, {"input": [-59.5, 47.0], "expected": 47.0}, {"input": [-59.5, 47.5], "expected": 47.5}, {"input": [-59.5, 48.0], "expected": 48.0}, {"input": [-59.5, 48.5], "expected": 48.5}, {"input": [-59.5, 49.0], "expected": 49.0}, {"input": [-59.5, 49.5], "expected": 49.5}, {"input": [-59.5, 50.0], "expected": 50.0}, {"input": [-59.5, 50.5], "expected": 50.5}, {"input": [-59.5, 51.0], "expected": 51.0}, {"input": [-59.5, 51.5], "expected": 51.5}, {"input": [-59.5, 52.0], "expected": 52.0}, {"input": [-59.5, 52.5], "expected": 52.5}, {"input": [-59.5, 53.0], "expected": 53.0}, {"input": [-59.5, 53.5], "expected": 53.5}, {"input": [-59.5, 54.0], "expected": 54.0}, {"input": [-59.5, 54.5], "expected": 54.5}, {"input": [-59.5, 55.0], "expected": 55.0}, {"input": [-59.5, 55.5], "expected": 55.5}, {"input": [-59.5, 56.0], "expected": 56.0}, {"input": [-59.5, 56.5], "expected": 56.5}, {"input": [-59.5, 57.0], "expected": 57.0}, {"input": [-59.5, 57.5], "expected": 57.5}, {"input": [-59.5, 58.0], "expected": 58.0}, {"input": [-59.5, 58.5], "expected": 58.5}, {"input": [-59.5, 59.0], "expected": 59.0}, {"input": [-59.5, 59.5], "expected": 59.5}, {"input": [-59.5, 60.0], "expected": 60.0}, {"input": [-59.5, 60.5], "expected": 60.5}, {"input": [-59.5, 61.0], "expected": 61.0}, {"input": [-59.5, 61.5], "expected": 61.5}, {"input": [-59.5, 62.0], "expected": 62.0}, {"input": [-59.5, 62.5], "expected": 62.5}, {"input": [-59.5, 63.0], "expected": 63.0}, {"input": [-59.5, 63.5], "expected": 63.5}, {"input": [-59.5, 64.0], "expected": 64.0}, {"input": [-59.5, 64.5], "expected": 64.5}, {"input": [-59.5, 65.0], "expected": 65.0}, {"input": [-59.5, 65.5], "expected": 65.5}, {"input": [-59.5, 66.0], "expected": 66.0}, {"input": [-59.5, 66.5], "expected": 66.5}, {"input": [-59.5, 67.0], "expected": 67.0}, {"input": [-59.5, 67.5], "expected": 67.5}, {"input": [-59.5, 68.0], "expected": 68.0}, {"input": [-59.5, 68.5], "expected": 68.5}, {"input": [-59.5, 69.0], "expected": 69.0}, {"input": [-59.5, 69.5], "expected": 69.5}, {"input": [-59.5, 70.0], "expected": 70.0}, {"input": [-59.5, 70.5], "expected": 70.5}, {"input": [-59.5, 71.0], "expected": 71.0}, {"input": [-59.5, 71.5], "expected": 71.5}, {"input": [-59.5, 72.0], "expected": 72.0}, {"input": [-59.5, 72.5], "expected": 72.5}, {"input": [-59.5, 73.0], "expected": 73.0}, {"input": [-59.5, 73.5], "expected": 73.5}, {"input": [-59.5, 74.0], "expected": 74.0}, {"input": [-59.5, 74.5], "expected": 74.5}, {"input": [-59.5, 75.0], "expected": 75.0}, {"input": [-59.5, 75.5], "expected": 75.5}, {"input": [-59.5, 76.0], "expected": 76.0}, {"input": [-59.5, 76.5], "expected": 76.5}, {"input": [-59.5, 77.0], "expected": 77.0}, {"input": [-59.5, 77.5], "expected": 77.5}, {"input": [-59.5, 78.0], "expected": 78.0}, {"input": [-59.5, 78.5], "expected": 78.5}, {"input": [-59.5, 79.0], "expected": 79.0}, {"input": [-59.5, 79.5], "expected": 79.5}, {"input": [-59.5, 80.0], "expected": 80.0}, {"input": [-59.5, 80.5], "expected": 80.5}, {"input": [-59.5, 81.0], "expected": 81.0}, {"input": [-59.5, 81.5], "expected": 81.5}, {"input": [-59.5, 82.0], "expected": 82.0}, {"input": [-59.5, 82.5], "expected": 82.5}, {"input": [-59.5, 83.0], "expected": 83.0}, {"input": [-59.5, 83.5], "expected": 83.5}, {"input": [-59.5, 84.0], "expected": 84.0}, {"input": [-59.5, 84.5], "expected": 84.5}, {"input": [-59.5, 85.0], "expected": 85.0}, {"input": [-59.5, 85.5], "expected": 85.5}, {"input": [-59.5, 86.0], "expected": 86.0}, {"input": [-59.5, 86.5], "expected": 86.5}, {"input": [-59.5, 87.0], "expected": 87.0}, {"input": [-59.5, 87.5], "expected": 87.5}, {"input": [-59.5, 88.0], "expected": 88.0}, {"input": [-59.5, 88.5], "expected": 88.5}, {"input": [-59.5, 89.0], "expected": 89.0}, {"input": [-59.5, 89.5], "expected": 89.5}, {"input": [-59.5, 90.0], "expected": 90.0}, {"input": [-59.5, 90.5], "expected": 90.5}, {"input": [-59.5, 91.0], "expected": 91.0}, {"input": [-59.5, 91.5], "expected": 91.5}, {"input": [-59.5, 92.0], "expected": 92.0}, {"input": [-59.5, 92.5], "expected": 92.5}, {"input": [-59.5, 93.0], "expected": 93.0}, {"input": [-59.5, 93.5], "expected": 93.5}, {"input": [-59.5, 94.0], "expected": 94.0}, {"input": [-59.5, 94.5], "expected": 94.5}, {"input": [-59.5, 95.0], "expected": 95.0}, {"input": [-59.5, 95.5], "expected": 95.5}, {"input": [-59.5, 96.0], "expected": 96.0}, {"input": [-59.5, 96.5], "expected": 96.5}, {"input": [-59.5, 97.0], "expected": 97.0}, {"input": [-59.5, 97.5], "expected": 97.5}, {"input": [-59.5, 98.0], "expected": 98.0}, {"input": [-59.5, 98.5], "expected": 98.5}, {"input": [-59.5, 99.0], "expected": 99.0}, {"input": [-59.5, 99.5], "expected": 99.5}, {"input": [-59.0, -100.0], "expected": -59.0}, {"input": [-59.0, -99.5], "expected": -59.0}, {"input": [-59.0, -99.0], "expected": -59.0}, {"input": [-59.0, -98.5], "expected": -59.0}, {"input": [-59.0, -98.0], "expected": -59.0}, {"input": [-59.0, -97.5], "expected": -59.0}, {"input": [-59.0, -97.0], "expected": -59.0}, {"input": [-59.0, -96.5], "expected": -59.0}, {"input": [-59.0, -96.0], "expected": -59.0}, {"input": [-59.0, -95.5], "expected": -59.0}, {"input": [-59.0, -95.0], "expected": -59.0}, {"input": [-59.0, -94.5], "expected": -59.0}, {"input": [-59.0, -94.0], "expected": -59.0}, {"input": [-59.0, -93.5], "expected": -59.0}, {"input": [-59.0, -93.0], "expected": -59.0}, {"input": [-59.0, -92.5], "expected": -59.0}, {"input": [-59.0, -92.0], "expected": -58.99999999999999}, {"input": [-59.0, -91.5], "expected": -58.99999999999999}, {"input": [-59.0, -91.0], "expected": -58.999999999999986}, {"input": [-59.0, -90.5], "expected": -58.99999999999998}, {"input": [-59.0, -90.0], "expected": -58.999999999999964}, {"input": [-59.0, -89.5], "expected": -58.99999999999994}, {"input": [-59.0, -89.0], "expected": -58.99999999999991}, {"input": [-59.0, -88.5], "expected": -58.999999999999844}, {"input": [-59.0, -88.0], "expected": -58.999999999999744}, {"input": [-59.0, -87.5], "expected": -58.99999999999958}, {"input": [-59.0, -87.0], "expected": -58.99999999999931}, {"input": [-59.0, -86.5], "expected": -58.99999999999886}, {"input": [-59.0, -86.0], "expected": -58.99999999999812}, {"input": [-59.0, -85.5], "expected": -58.9999999999969}, {"input": [-59.0, -85.0], "expected": -58.99999999999489}, {"input": [-59.0, -84.5], "expected": -58.99999999999158}, {"input": [-59.0, -84.0], "expected": -58.99999999998611}, {"input": [-59.0, -83.5], "expected": -58.9999999999771}, {"input": [-59.0, -83.0], "expected": -58.99999999996225}, {"input": [-59.0, -82.5], "expected": -58.99999999993776}, {"input": [-59.0, -82.0], "expected": -58.99999999989738}, {"input": [-59.0, -81.5], "expected": -58.99999999983081}, {"input": [-59.0, -81.0], "expected": -58.999999999721055}, {"input": [-59.0, -80.5], "expected": -58.999999999540094}, {"input": [-59.0, -80.0], "expected": -58.999999999241744}, {"input": [-59.0, -79.5], "expected": -58.99999999874985}, {"input": [-59.0, -79.0], "expected": -58.99999999793884}, {"input": [-59.0, -78.5], "expected": -58.99999999660173}, {"input": [-59.0, -78.0], "expected": -58.99999999439721}, {"input": [-59.0, -77.5], "expected": -58.999999990762554}, {"input": [-59.0, -77.0], "expected": -58.99999998477002}, {"input": [-59.0, -76.5], "expected": -58.99999997489001}, {"input": [-59.0, -76.0], "expected": -58.999999958600625}, {"input": [-59.0, -75.5], "expected": -58.99999993174397}, {"input": [-59.0, -75.0], "expected": -58.99999988746483}, {"input": [-59.0, -74.5], "expected": -58.99999981446088}, {"input": [-59.0, -74.0], "expected": -58.999999694097724}, {"input": [-59.0, -73.5], "expected": -58.99999949565247}, {"input": [-59.0, -73.0], "expected": -58.999999168471625}, {"input": [-59.0, -72.5], "expected": -58.999998629041855}, {"input": [-59.0, -72.0], "expected": -58.99999773967315}, {"input": [-59.0, -71.5], "expected": -58.99999627335377}, {"input": [-59.0, -71.0], "expected": -58.99999385580652}, {"input": [-59.0, -70.5], "expected": -58.99998986995771}, {"input": [-59.0, -70.0], "expected": -58.99998329843868}, {"input": [-59.0, -69.5], "expected": -58.99997246392977}, {"input": [-59.0, -69.0], "expected": -58.99995460110078}, {"input": [-59.0, -68.5], "expected": -58.99992515097137}, {"input": [-59.0, -68.0], "expected": -58.99987659781028}, {"input": [-59.0, -67.5], "expected": -58.99979655232787}, {"input": [-59.0, -67.0], "expected": -58.9996645936271}, {"input": [-59.0, -66.5], "expected": -58.99944706852464}, {"input": [-59.0, -66.0], "expected": -58.99908853354623}, {"input": [-59.0, -65.5], "expected": -58.99849768984024}, {"input": [-59.0, -65.0], "expected": -58.99752431486227}, {"input": [-59.0, -64.5], "expected": -58.99592155672943}, {"input": [-59.0, -64.0], "expected": -58.99328465151088}, {"input": [-59.0, -63.5], "expected": -58.9889522551514}, {"input": [-59.0, -63.0], "expected": -58.98185007208219}, {"input": [-59.0, -62.5], "expected": -58.97024958172738}, {"input": [-59.0, -62.0], "expected": -58.951412648426256}, {"input": [-59.0, -61.5], "expected": -58.92111026570745}, {"input": [-59.0, -61.0], "expected": -58.87307198895703}, {"input": [-59.0, -60.5], "expected": -58.79858672201725}, {"input": [-59.0, -60.0], "expected": -58.68673831248178}, {"input": [-59.0, -59.5], "expected": -58.52592301581989}, {"input": [-59.0, -59.0], "expected": -58.30685281944005}, {"input": [-59.0, -58.5], "expected": -58.02592301581989}, {"input": [-59.0, -58.0], "expected": -57.68673831248178}, {"input": [-59.0, -57.5], "expected": -57.29858672201725}, {"input": [-59.0, -57.0], "expected": -56.87307198895703}, {"input": [-59.0, -56.5], "expected": -56.42111026570745}, {"input": [-59.0, -56.0], "expected": -55.951412648426256}, {"input": [-59.0, -55.5], "expected": -55.47024958172738}, {"input": [-59.0, -55.0], "expected": -54.98185007208219}, {"input": [-59.0, -54.5], "expected": -54.4889522551514}, {"input": [-59.0, -54.0], "expected": -53.99328465151088}, {"input": [-59.0, -53.5], "expected": -53.49592155672943}, {"input": [-59.0, -53.0], "expected": -52.99752431486227}, {"input": [-59.0, -52.5], "expected": -52.49849768984024}, {"input": [-59.0, -52.0], "expected": -51.99908853354623}, {"input": [-59.0, -51.5], "expected": -51.49944706852464}, {"input": [-59.0, -51.0], "expected": -50.9996645936271}, {"input": [-59.0, -50.5], "expected": -50.49979655232787}, {"input": [-59.0, -50.0], "expected": -49.99987659781028}, {"input": [-59.0, -49.5], "expected": -49.49992515097137}, {"input": [-59.0, -49.0], "expected": -48.99995460110078}, {"input": [-59.0, -48.5], "expected": -48.49997246392977}, {"input": [-59.0, -48.0], "expected": -47.99998329843868}, {"input": [-59.0, -47.5], "expected": -47.49998986995771}, {"input": [-59.0, -47.0], "expected": -46.99999385580652}, {"input": [-59.0, -46.5], "expected": -46.49999627335377}, {"input": [-59.0, -46.0], "expected": -45.99999773967315}, {"input": [-59.0, -45.5], "expected": -45.499998629041855}, {"input": [-59.0, -45.0], "expected": -44.999999168471625}, {"input": [-59.0, -44.5], "expected": -44.49999949565247}, {"input": [-59.0, -44.0], "expected": -43.999999694097724}, {"input": [-59.0, -43.5], "expected": -43.49999981446088}, {"input": [-59.0, -43.0], "expected": -42.99999988746483}, {"input": [-59.0, -42.5], "expected": -42.49999993174397}, {"input": [-59.0, -42.0], "expected": -41.999999958600625}, {"input": [-59.0, -41.5], "expected": -41.49999997489001}, {"input": [-59.0, -41.0], "expected": -40.99999998477002}, {"input": [-59.0, -40.5], "expected": -40.499999990762554}, {"input": [-59.0, -40.0], "expected": -39.99999999439721}, {"input": [-59.0, -39.5], "expected": -39.49999999660173}, {"input": [-59.0, -39.0], "expected": -38.99999999793884}, {"input": [-59.0, -38.5], "expected": -38.49999999874985}, {"input": [-59.0, -38.0], "expected": -37.999999999241744}, {"input": [-59.0, -37.5], "expected": -37.499999999540094}, {"input": [-59.0, -37.0], "expected": -36.999999999721055}, {"input": [-59.0, -36.5], "expected": -36.49999999983081}, {"input": [-59.0, -36.0], "expected": -35.99999999989738}, {"input": [-59.0, -35.5], "expected": -35.49999999993776}, {"input": [-59.0, -35.0], "expected": -34.99999999996225}, {"input": [-59.0, -34.5], "expected": -34.4999999999771}, {"input": [-59.0, -34.0], "expected": -33.99999999998611}, {"input": [-59.0, -33.5], "expected": -33.49999999999158}, {"input": [-59.0, -33.0], "expected": -32.99999999999489}, {"input": [-59.0, -32.5], "expected": -32.4999999999969}, {"input": [-59.0, -32.0], "expected": -31.99999999999812}, {"input": [-59.0, -31.5], "expected": -31.49999999999886}, {"input": [-59.0, -31.0], "expected": -30.999999999999307}, {"input": [-59.0, -30.5], "expected": -30.49999999999958}, {"input": [-59.0, -30.0], "expected": -29.999999999999744}, {"input": [-59.0, -29.5], "expected": -29.499999999999847}, {"input": [-59.0, -29.0], "expected": -28.999999999999908}, {"input": [-59.0, -28.5], "expected": -28.499999999999943}, {"input": [-59.0, -28.0], "expected": -27.999999999999964}, {"input": [-59.0, -27.5], "expected": -27.49999999999998}, {"input": [-59.0, -27.0], "expected": -26.999999999999986}, {"input": [-59.0, -26.5], "expected": -26.499999999999993}, {"input": [-59.0, -26.0], "expected": -25.999999999999996}, {"input": [-59.0, -25.5], "expected": -25.499999999999996}, {"input": [-59.0, -25.0], "expected": -25.0}, {"input": [-59.0, -24.5], "expected": -24.5}, {"input": [-59.0, -24.0], "expected": -24.0}, {"input": [-59.0, -23.5], "expected": -23.5}, {"input": [-59.0, -23.0], "expected": -23.0}, {"input": [-59.0, -22.5], "expected": -22.5}, {"input": [-59.0, -22.0], "expected": -22.0}, {"input": [-59.0, -21.5], "expected": -21.5}, {"input": [-59.0, -21.0], "expected": -21.0}, {"input": [-59.0, -20.5], "expected": -20.5}, {"input": [-59.0, -20.0], "expected": -20.0}, {"input": [-59.0, -19.5], "expected": -19.5}, {"input": [-59.0, -19.0], "expected": -19.0}, {"input": [-59.0, -18.5], "expected": -18.5}, {"input": [-59.0, -18.0], "expected": -18.0}, {"input": [-59.0, -17.5], "expected": -17.5}, {"input": [-59.0, -17.0], "expected": -17.0}, {"input": [-59.0, -16.5], "expected": -16.5}, {"input": [-59.0, -16.0], "expected": -16.0}, {"input": [-59.0, -15.5], "expected": -15.5}, {"input": [-59.0, -15.0], "expected": -15.0}, {"input": [-59.0, -14.5], "expected": -14.5}, {"input": [-59.0, -14.0], "expected": -14.0}, {"input": [-59.0, -13.5], "expected": -13.5}, {"input": [-59.0, -13.0], "expected": -13.0}, {"input": [-59.0, -12.5], "expected": -12.5}, {"input": [-59.0, -12.0], "expected": -12.0}, {"input": [-59.0, -11.5], "expected": -11.5}, {"input": [-59.0, -11.0], "expected": -11.0}, {"input": [-59.0, -10.5], "expected": -10.5}, {"input": [-59.0, -10.0], "expected": -10.0}, {"input": [-59.0, -9.5], "expected": -9.5}, {"input": [-59.0, -9.0], "expected": -9.0}, {"input": [-59.0, -8.5], "expected": -8.5}, {"input": [-59.0, -8.0], "expected": -8.0}, {"input": [-59.0, -7.5], "expected": -7.5}, {"input": [-59.0, -7.0], "expected": -7.0}, {"input": [-59.0, -6.5], "expected": -6.5}, {"input": [-59.0, -6.0], "expected": -6.0}, {"input": [-59.0, -5.5], "expected": -5.5}, {"input": [-59.0, -5.0], "expected": -5.0}, {"input": [-59.0, -4.5], "expected": -4.5}, {"input": [-59.0, -4.0], "expected": -4.0}, {"input": [-59.0, -3.5], "expected": -3.5}, {"input": [-59.0, -3.0], "expected": -3.0}, {"input": [-59.0, -2.5], "expected": -2.5}, {"input": [-59.0, -2.0], "expected": -2.0}, {"input": [-59.0, -1.5], "expected": -1.5}, {"input": [-59.0, -1.0], "expected": -1.0}, {"input": [-59.0, -0.5], "expected": -0.5}, {"input": [-59.0, 0.0], "expected": 2.3802664086944007e-26}, {"input": [-59.0, 0.5], "expected": 0.5}, {"input": [-59.0, 1.0], "expected": 1.0}, {"input": [-59.0, 1.5], "expected": 1.5}, {"input": [-59.0, 2.0], "expected": 2.0}, {"input": [-59.0, 2.5], "expected": 2.5}, {"input": [-59.0, 3.0], "expected": 3.0}, {"input": [-59.0, 3.5], "expected": 3.5}, {"input": [-59.0, 4.0], "expected": 4.0}, {"input": [-59.0, 4.5], "expected": 4.5}, {"input": [-59.0, 5.0], "expected": 5.0}, {"input": [-59.0, 5.5], "expected": 5.5}, {"input": [-59.0, 6.0], "expected": 6.0}, {"input": [-59.0, 6.5], "expected": 6.5}, {"input": [-59.0, 7.0], "expected": 7.0}, {"input": [-59.0, 7.5], "expected": 7.5}, {"input": [-59.0, 8.0], "expected": 8.0}, {"input": [-59.0, 8.5], "expected": 8.5}, {"input": [-59.0, 9.0], "expected": 9.0}, {"input": [-59.0, 9.5], "expected": 9.5}, {"input": [-59.0, 10.0], "expected": 10.0}, {"input": [-59.0, 10.5], "expected": 10.5}, {"input": [-59.0, 11.0], "expected": 11.0}, {"input": [-59.0, 11.5], "expected": 11.5}, {"input": [-59.0, 12.0], "expected": 12.0}, {"input": [-59.0, 12.5], "expected": 12.5}, {"input": [-59.0, 13.0], "expected": 13.0}, {"input": [-59.0, 13.5], "expected": 13.5}, {"input": [-59.0, 14.0], "expected": 14.0}, {"input": [-59.0, 14.5], "expected": 14.5}, {"input": [-59.0, 15.0], "expected": 15.0}, {"input": [-59.0, 15.5], "expected": 15.5}, {"input": [-59.0, 16.0], "expected": 16.0}, {"input": [-59.0, 16.5], "expected": 16.5}, {"input": [-59.0, 17.0], "expected": 17.0}, {"input": [-59.0, 17.5], "expected": 17.5}, {"input": [-59.0, 18.0], "expected": 18.0}, {"input": [-59.0, 18.5], "expected": 18.5}, {"input": [-59.0, 19.0], "expected": 19.0}, {"input": [-59.0, 19.5], "expected": 19.5}, {"input": [-59.0, 20.0], "expected": 20.0}, {"input": [-59.0, 20.5], "expected": 20.5}, {"input": [-59.0, 21.0], "expected": 21.0}, {"input": [-59.0, 21.5], "expected": 21.5}, {"input": [-59.0, 22.0], "expected": 22.0}, {"input": [-59.0, 22.5], "expected": 22.5}, {"input": [-59.0, 23.0], "expected": 23.0}, {"input": [-59.0, 23.5], "expected": 23.5}, {"input": [-59.0, 24.0], "expected": 24.0}, {"input": [-59.0, 24.5], "expected": 24.5}, {"input": [-59.0, 25.0], "expected": 25.0}, {"input": [-59.0, 25.5], "expected": 25.5}, {"input": [-59.0, 26.0], "expected": 26.0}, {"input": [-59.0, 26.5], "expected": 26.5}, {"input": [-59.0, 27.0], "expected": 27.0}, {"input": [-59.0, 27.5], "expected": 27.5}, {"input": [-59.0, 28.0], "expected": 28.0}, {"input": [-59.0, 28.5], "expected": 28.5}, {"input": [-59.0, 29.0], "expected": 29.0}, {"input": [-59.0, 29.5], "expected": 29.5}, {"input": [-59.0, 30.0], "expected": 30.0}, {"input": [-59.0, 30.5], "expected": 30.5}, {"input": [-59.0, 31.0], "expected": 31.0}, {"input": [-59.0, 31.5], "expected": 31.5}, {"input": [-59.0, 32.0], "expected": 32.0}, {"input": [-59.0, 32.5], "expected": 32.5}, {"input": [-59.0, 33.0], "expected": 33.0}, {"input": [-59.0, 33.5], "expected": 33.5}, {"input": [-59.0, 34.0], "expected": 34.0}, {"input": [-59.0, 34.5], "expected": 34.5}, {"input": [-59.0, 35.0], "expected": 35.0}, {"input": [-59.0, 35.5], "expected": 35.5}, {"input": [-59.0, 36.0], "expected": 36.0}, {"input": [-59.0, 36.5], "expected": 36.5}, {"input": [-59.0, 37.0], "expected": 37.0}, {"input": [-59.0, 37.5], "expected": 37.5}, {"input": [-59.0, 38.0], "expected": 38.0}, {"input": [-59.0, 38.5], "expected": 38.5}, {"input": [-59.0, 39.0], "expected": 39.0}, {"input": [-59.0, 39.5], "expected": 39.5}, {"input": [-59.0, 40.0], "expected": 40.0}, {"input": [-59.0, 40.5], "expected": 40.5}, {"input": [-59.0, 41.0], "expected": 41.0}, {"input": [-59.0, 41.5], "expected": 41.5}, {"input": [-59.0, 42.0], "expected": 42.0}, {"input": [-59.0, 42.5], "expected": 42.5}, {"input": [-59.0, 43.0], "expected": 43.0}, {"input": [-59.0, 43.5], "expected": 43.5}, {"input": [-59.0, 44.0], "expected": 44.0}, {"input": [-59.0, 44.5], "expected": 44.5}, {"input": [-59.0, 45.0], "expected": 45.0}, {"input": [-59.0, 45.5], "expected": 45.5}, {"input": [-59.0, 46.0], "expected": 46.0}, {"input": [-59.0, 46.5], "expected": 46.5}, {"input": [-59.0, 47.0], "expected": 47.0}, {"input": [-59.0, 47.5], "expected": 47.5}, {"input": [-59.0, 48.0], "expected": 48.0}, {"input": [-59.0, 48.5], "expected": 48.5}, {"input": [-59.0, 49.0], "expected": 49.0}, {"input": [-59.0, 49.5], "expected": 49.5}, {"input": [-59.0, 50.0], "expected": 50.0}, {"input": [-59.0, 50.5], "expected": 50.5}, {"input": [-59.0, 51.0], "expected": 51.0}, {"input": [-59.0, 51.5], "expected": 51.5}, {"input": [-59.0, 52.0], "expected": 52.0}, {"input": [-59.0, 52.5], "expected": 52.5}, {"input": [-59.0, 53.0], "expected": 53.0}, {"input": [-59.0, 53.5], "expected": 53.5}, {"input": [-59.0, 54.0], "expected": 54.0}, {"input": [-59.0, 54.5], "expected": 54.5}, {"input": [-59.0, 55.0], "expected": 55.0}, {"input": [-59.0, 55.5], "expected": 55.5}, {"input": [-59.0, 56.0], "expected": 56.0}, {"input": [-59.0, 56.5], "expected": 56.5}, {"input": [-59.0, 57.0], "expected": 57.0}, {"input": [-59.0, 57.5], "expected": 57.5}, {"input": [-59.0, 58.0], "expected": 58.0}, {"input": [-59.0, 58.5], "expected": 58.5}, {"input": [-59.0, 59.0], "expected": 59.0}, {"input": [-59.0, 59.5], "expected": 59.5}, {"input": [-59.0, 60.0], "expected": 60.0}, {"input": [-59.0, 60.5], "expected": 60.5}, {"input": [-59.0, 61.0], "expected": 61.0}, {"input": [-59.0, 61.5], "expected": 61.5}, {"input": [-59.0, 62.0], "expected": 62.0}, {"input": [-59.0, 62.5], "expected": 62.5}, {"input": [-59.0, 63.0], "expected": 63.0}, {"input": [-59.0, 63.5], "expected": 63.5}, {"input": [-59.0, 64.0], "expected": 64.0}, {"input": [-59.0, 64.5], "expected": 64.5}, {"input": [-59.0, 65.0], "expected": 65.0}, {"input": [-59.0, 65.5], "expected": 65.5}, {"input": [-59.0, 66.0], "expected": 66.0}, {"input": [-59.0, 66.5], "expected": 66.5}, {"input": [-59.0, 67.0], "expected": 67.0}, {"input": [-59.0, 67.5], "expected": 67.5}, {"input": [-59.0, 68.0], "expected": 68.0}, {"input": [-59.0, 68.5], "expected": 68.5}, {"input": [-59.0, 69.0], "expected": 69.0}, {"input": [-59.0, 69.5], "expected": 69.5}, {"input": [-59.0, 70.0], "expected": 70.0}, {"input": [-59.0, 70.5], "expected": 70.5}, {"input": [-59.0, 71.0], "expected": 71.0}, {"input": [-59.0, 71.5], "expected": 71.5}, {"input": [-59.0, 72.0], "expected": 72.0}, {"input": [-59.0, 72.5], "expected": 72.5}, {"input": [-59.0, 73.0], "expected": 73.0}, {"input": [-59.0, 73.5], "expected": 73.5}, {"input": [-59.0, 74.0], "expected": 74.0}, {"input": [-59.0, 74.5], "expected": 74.5}, {"input": [-59.0, 75.0], "expected": 75.0}, {"input": [-59.0, 75.5], "expected": 75.5}, {"input": [-59.0, 76.0], "expected": 76.0}, {"input": [-59.0, 76.5], "expected": 76.5}, {"input": [-59.0, 77.0], "expected": 77.0}, {"input": [-59.0, 77.5], "expected": 77.5}, {"input": [-59.0, 78.0], "expected": 78.0}, {"input": [-59.0, 78.5], "expected": 78.5}, {"input": [-59.0, 79.0], "expected": 79.0}, {"input": [-59.0, 79.5], "expected": 79.5}, {"input": [-59.0, 80.0], "expected": 80.0}, {"input": [-59.0, 80.5], "expected": 80.5}, {"input": [-59.0, 81.0], "expected": 81.0}, {"input": [-59.0, 81.5], "expected": 81.5}, {"input": [-59.0, 82.0], "expected": 82.0}, {"input": [-59.0, 82.5], "expected": 82.5}, {"input": [-59.0, 83.0], "expected": 83.0}, {"input": [-59.0, 83.5], "expected": 83.5}, {"input": [-59.0, 84.0], "expected": 84.0}, {"input": [-59.0, 84.5], "expected": 84.5}, {"input": [-59.0, 85.0], "expected": 85.0}, {"input": [-59.0, 85.5], "expected": 85.5}, {"input": [-59.0, 86.0], "expected": 86.0}, {"input": [-59.0, 86.5], "expected": 86.5}, {"input": [-59.0, 87.0], "expected": 87.0}, {"input": [-59.0, 87.5], "expected": 87.5}, {"input": [-59.0, 88.0], "expected": 88.0}, {"input": [-59.0, 88.5], "expected": 88.5}, {"input": [-59.0, 89.0], "expected": 89.0}, {"input": [-59.0, 89.5], "expected": 89.5}, {"input": [-59.0, 90.0], "expected": 90.0}, {"input": [-59.0, 90.5], "expected": 90.5}, {"input": [-59.0, 91.0], "expected": 91.0}, {"input": [-59.0, 91.5], "expected": 91.5}, {"input": [-59.0, 92.0], "expected": 92.0}, {"input": [-59.0, 92.5], "expected": 92.5}, {"input": [-59.0, 93.0], "expected": 93.0}, {"input": [-59.0, 93.5], "expected": 93.5}, {"input": [-59.0, 94.0], "expected": 94.0}, {"input": [-59.0, 94.5], "expected": 94.5}, {"input": [-59.0, 95.0], "expected": 95.0}, {"input": [-59.0, 95.5], "expected": 95.5}, {"input": [-59.0, 96.0], "expected": 96.0}, {"input": [-59.0, 96.5], "expected": 96.5}, {"input": [-59.0, 97.0], "expected": 97.0}, {"input": [-59.0, 97.5], "expected": 97.5}, {"input": [-59.0, 98.0], "expected": 98.0}, {"input": [-59.0, 98.5], "expected": 98.5}, {"input": [-59.0, 99.0], "expected": 99.0}, {"input": [-59.0, 99.5], "expected": 99.5}, {"input": [-58.5, -100.0], "expected": -58.5}, {"input": [-58.5, -99.5], "expected": -58.5}, {"input": [-58.5, -99.0], "expected": -58.5}, {"input": [-58.5, -98.5], "expected": -58.5}, {"input": [-58.5, -98.0], "expected": -58.5}, {"input": [-58.5, -97.5], "expected": -58.5}, {"input": [-58.5, -97.0], "expected": -58.5}, {"input": [-58.5, -96.5], "expected": -58.5}, {"input": [-58.5, -96.0], "expected": -58.5}, {"input": [-58.5, -95.5], "expected": -58.5}, {"input": [-58.5, -95.0], "expected": -58.5}, {"input": [-58.5, -94.5], "expected": -58.5}, {"input": [-58.5, -94.0], "expected": -58.5}, {"input": [-58.5, -93.5], "expected": -58.5}, {"input": [-58.5, -93.0], "expected": -58.5}, {"input": [-58.5, -92.5], "expected": -58.5}, {"input": [-58.5, -92.0], "expected": -58.5}, {"input": [-58.5, -91.5], "expected": -58.49999999999999}, {"input": [-58.5, -91.0], "expected": -58.49999999999999}, {"input": [-58.5, -90.5], "expected": -58.499999999999986}, {"input": [-58.5, -90.0], "expected": -58.49999999999998}, {"input": [-58.5, -89.5], "expected": -58.499999999999964}, {"input": [-58.5, -89.0], "expected": -58.49999999999994}, {"input": [-58.5, -88.5], "expected": -58.49999999999991}, {"input": [-58.5, -88.0], "expected": -58.499999999999844}, {"input": [-58.5, -87.5], "expected": -58.499999999999744}, {"input": [-58.5, -87.0], "expected": -58.49999999999958}, {"input": [-58.5, -86.5], "expected": -58.49999999999931}, {"input": [-58.5, -86.0], "expected": -58.49999999999886}, {"input": [-58.5, -85.5], "expected": -58.49999999999812}, {"input": [-58.5, -85.0], "expected": -58.4999999999969}, {"input": [-58.5, -84.5], "expected": -58.49999999999489}, {"input": [-58.5, -84.0], "expected": -58.49999999999158}, {"input": [-58.5, -83.5], "expected": -58.49999999998611}, {"input": [-58.5, -83.0], "expected": -58.4999999999771}, {"input": [-58.5, -82.5], "expected": -58.49999999996225}, {"input": [-58.5, -82.0], "expected": -58.49999999993776}, {"input": [-58.5, -81.5], "expected": -58.49999999989738}, {"input": [-58.5, -81.0], "expected": -58.49999999983081}, {"input": [-58.5, -80.5], "expected": -58.499999999721055}, {"input": [-58.5, -80.0], "expected": -58.499999999540094}, {"input": [-58.5, -79.5], "expected": -58.499999999241744}, {"input": [-58.5, -79.0], "expected": -58.49999999874985}, {"input": [-58.5, -78.5], "expected": -58.49999999793884}, {"input": [-58.5, -78.0], "expected": -58.49999999660173}, {"input": [-58.5, -77.5], "expected": -58.49999999439721}, {"input": [-58.5, -77.0], "expected": -58.499999990762554}, {"input": [-58.5, -76.5], "expected": -58.49999998477002}, {"input": [-58.5, -76.0], "expected": -58.49999997489001}, {"input": [-58.5, -75.5], "expected": -58.499999958600625}, {"input": [-58.5, -75.0], "expected": -58.49999993174397}, {"input": [-58.5, -74.5], "expected": -58.49999988746483}, {"input": [-58.5, -74.0], "expected": -58.49999981446088}, {"input": [-58.5, -73.5], "expected": -58.499999694097724}, {"input": [-58.5, -73.0], "expected": -58.49999949565247}, {"input": [-58.5, -72.5], "expected": -58.499999168471625}, {"input": [-58.5, -72.0], "expected": -58.499998629041855}, {"input": [-58.5, -71.5], "expected": -58.49999773967315}, {"input": [-58.5, -71.0], "expected": -58.49999627335377}, {"input": [-58.5, -70.5], "expected": -58.49999385580652}, {"input": [-58.5, -70.0], "expected": -58.49998986995771}, {"input": [-58.5, -69.5], "expected": -58.49998329843868}, {"input": [-58.5, -69.0], "expected": -58.49997246392977}, {"input": [-58.5, -68.5], "expected": -58.49995460110078}, {"input": [-58.5, -68.0], "expected": -58.49992515097137}, {"input": [-58.5, -67.5], "expected": -58.49987659781028}, {"input": [-58.5, -67.0], "expected": -58.49979655232787}, {"input": [-58.5, -66.5], "expected": -58.4996645936271}, {"input": [-58.5, -66.0], "expected": -58.49944706852464}, {"input": [-58.5, -65.5], "expected": -58.49908853354623}, {"input": [-58.5, -65.0], "expected": -58.49849768984024}, {"input": [-58.5, -64.5], "expected": -58.49752431486227}, {"input": [-58.5, -64.0], "expected": -58.49592155672943}, {"input": [-58.5, -63.5], "expected": -58.49328465151088}, {"input": [-58.5, -63.0], "expected": -58.4889522551514}, {"input": [-58.5, -62.5], "expected": -58.48185007208219}, {"input": [-58.5, -62.0], "expected": -58.47024958172738}, {"input": [-58.5, -61.5], "expected": -58.451412648426256}, {"input": [-58.5, -61.0], "expected": -58.42111026570745}, {"input": [-58.5, -60.5], "expected": -58.37307198895703}, {"input": [-58.5, -60.0], "expected": -58.29858672201725}, {"input": [-58.5, -59.5], "expected": -58.18673831248178}, {"input": [-58.5, -59.0], "expected": -58.02592301581989}, {"input": [-58.5, -58.5], "expected": -57.80685281944005}, {"input": [-58.5, -58.0], "expected": -57.52592301581989}, {"input": [-58.5, -57.5], "expected": -57.18673831248178}, {"input": [-58.5, -57.0], "expected": -56.79858672201725}, {"input": [-58.5, -56.5], "expected": -56.37307198895703}, {"input": [-58.5, -56.0], "expected": -55.92111026570745}, {"input": [-58.5, -55.5], "expected": -55.451412648426256}, {"input": [-58.5, -55.0], "expected": -54.97024958172738}, {"input": [-58.5, -54.5], "expected": -54.48185007208219}, {"input": [-58.5, -54.0], "expected": -53.9889522551514}, {"input": [-58.5, -53.5], "expected": -53.49328465151088}, {"input": [-58.5, -53.0], "expected": -52.99592155672943}, {"input": [-58.5, -52.5], "expected": -52.49752431486227}, {"input": [-58.5, -52.0], "expected": -51.99849768984024}, {"input": [-58.5, -51.5], "expected": -51.49908853354623}, {"input": [-58.5, -51.0], "expected": -50.99944706852464}, {"input": [-58.5, -50.5], "expected": -50.4996645936271}, {"input": [-58.5, -50.0], "expected": -49.99979655232787}, {"input": [-58.5, -49.5], "expected": -49.49987659781028}, {"input": [-58.5, -49.0], "expected": -48.99992515097137}, {"input": [-58.5, -48.5], "expected": -48.49995460110078}, {"input": [-58.5, -48.0], "expected": -47.99997246392977}, {"input": [-58.5, -47.5], "expected": -47.49998329843868}, {"input": [-58.5, -47.0], "expected": -46.99998986995771}, {"input": [-58.5, -46.5], "expected": -46.49999385580652}, {"input": [-58.5, -46.0], "expected": -45.99999627335377}, {"input": [-58.5, -45.5], "expected": -45.49999773967315}, {"input": [-58.5, -45.0], "expected": -44.999998629041855}, {"input": [-58.5, -44.5], "expected": -44.499999168471625}, {"input": [-58.5, -44.0], "expected": -43.99999949565247}, {"input": [-58.5, -43.5], "expected": -43.499999694097724}, {"input": [-58.5, -43.0], "expected": -42.99999981446088}, {"input": [-58.5, -42.5], "expected": -42.49999988746483}, {"input": [-58.5, -42.0], "expected": -41.99999993174397}, {"input": [-58.5, -41.5], "expected": -41.499999958600625}, {"input": [-58.5, -41.0], "expected": -40.99999997489001}, {"input": [-58.5, -40.5], "expected": -40.49999998477002}, {"input": [-58.5, -40.0], "expected": -39.999999990762554}, {"input": [-58.5, -39.5], "expected": -39.49999999439721}, {"input": [-58.5, -39.0], "expected": -38.99999999660173}, {"input": [-58.5, -38.5], "expected": -38.49999999793884}, {"input": [-58.5, -38.0], "expected": -37.99999999874985}, {"input": [-58.5, -37.5], "expected": -37.499999999241744}, {"input": [-58.5, -37.0], "expected": -36.999999999540094}, {"input": [-58.5, -36.5], "expected": -36.499999999721055}, {"input": [-58.5, -36.0], "expected": -35.99999999983081}, {"input": [-58.5, -35.5], "expected": -35.49999999989738}, {"input": [-58.5, -35.0], "expected": -34.99999999993776}, {"input": [-58.5, -34.5], "expected": -34.49999999996225}, {"input": [-58.5, -34.0], "expected": -33.9999999999771}, {"input": [-58.5, -33.5], "expected": -33.49999999998611}, {"input": [-58.5, -33.0], "expected": -32.99999999999158}, {"input": [-58.5, -32.5], "expected": -32.49999999999489}, {"input": [-58.5, -32.0], "expected": -31.999999999996902}, {"input": [-58.5, -31.5], "expected": -31.49999999999812}, {"input": [-58.5, -31.0], "expected": -30.99999999999886}, {"input": [-58.5, -30.5], "expected": -30.499999999999307}, {"input": [-58.5, -30.0], "expected": -29.99999999999958}, {"input": [-58.5, -29.5], "expected": -29.499999999999744}, {"input": [-58.5, -29.0], "expected": -28.999999999999847}, {"input": [-58.5, -28.5], "expected": -28.499999999999908}, {"input": [-58.5, -28.0], "expected": -27.999999999999943}, {"input": [-58.5, -27.5], "expected": -27.499999999999964}, {"input": [-58.5, -27.0], "expected": -26.99999999999998}, {"input": [-58.5, -26.5], "expected": -26.499999999999986}, {"input": [-58.5, -26.0], "expected": -25.999999999999993}, {"input": [-58.5, -25.5], "expected": -25.499999999999996}, {"input": [-58.5, -25.0], "expected": -24.999999999999996}, {"input": [-58.5, -24.5], "expected": -24.5}, {"input": [-58.5, -24.0], "expected": -24.0}, {"input": [-58.5, -23.5], "expected": -23.5}, {"input": [-58.5, -23.0], "expected": -23.0}, {"input": [-58.5, -22.5], "expected": -22.5}, {"input": [-58.5, -22.0], "expected": -22.0}, {"input": [-58.5, -21.5], "expected": -21.5}, {"input": [-58.5, -21.0], "expected": -21.0}, {"input": [-58.5, -20.5], "expected": -20.5}, {"input": [-58.5, -20.0], "expected": -20.0}, {"input": [-58.5, -19.5], "expected": -19.5}, {"input": [-58.5, -19.0], "expected": -19.0}, {"input": [-58.5, -18.5], "expected": -18.5}, {"input": [-58.5, -18.0], "expected": -18.0}, {"input": [-58.5, -17.5], "expected": -17.5}, {"input": [-58.5, -17.0], "expected": -17.0}, {"input": [-58.5, -16.5], "expected": -16.5}, {"input": [-58.5, -16.0], "expected": -16.0}, {"input": [-58.5, -15.5], "expected": -15.5}, {"input": [-58.5, -15.0], "expected": -15.0}, {"input": [-58.5, -14.5], "expected": -14.5}, {"input": [-58.5, -14.0], "expected": -14.0}, {"input": [-58.5, -13.5], "expected": -13.5}, {"input": [-58.5, -13.0], "expected": -13.0}, {"input": [-58.5, -12.5], "expected": -12.5}, {"input": [-58.5, -12.0], "expected": -12.0}, {"input": [-58.5, -11.5], "expected": -11.5}, {"input": [-58.5, -11.0], "expected": -11.0}, {"input": [-58.5, -10.5], "expected": -10.5}, {"input": [-58.5, -10.0], "expected": -10.0}, {"input": [-58.5, -9.5], "expected": -9.5}, {"input": [-58.5, -9.0], "expected": -9.0}, {"input": [-58.5, -8.5], "expected": -8.5}, {"input": [-58.5, -8.0], "expected": -8.0}, {"input": [-58.5, -7.5], "expected": -7.5}, {"input": [-58.5, -7.0], "expected": -7.0}, {"input": [-58.5, -6.5], "expected": -6.5}, {"input": [-58.5, -6.0], "expected": -6.0}, {"input": [-58.5, -5.5], "expected": -5.5}, {"input": [-58.5, -5.0], "expected": -5.0}, {"input": [-58.5, -4.5], "expected": -4.5}, {"input": [-58.5, -4.0], "expected": -4.0}, {"input": [-58.5, -3.5], "expected": -3.5}, {"input": [-58.5, -3.0], "expected": -3.0}, {"input": [-58.5, -2.5], "expected": -2.5}, {"input": [-58.5, -2.0], "expected": -2.0}, {"input": [-58.5, -1.5], "expected": -1.5}, {"input": [-58.5, -1.0], "expected": -1.0}, {"input": [-58.5, -0.5], "expected": -0.5}, {"input": [-58.5, 0.0], "expected": 3.924395857947463e-26}, {"input": [-58.5, 0.5], "expected": 0.5}, {"input": [-58.5, 1.0], "expected": 1.0}, {"input": [-58.5, 1.5], "expected": 1.5}, {"input": [-58.5, 2.0], "expected": 2.0}, {"input": [-58.5, 2.5], "expected": 2.5}, {"input": [-58.5, 3.0], "expected": 3.0}, {"input": [-58.5, 3.5], "expected": 3.5}, {"input": [-58.5, 4.0], "expected": 4.0}, {"input": [-58.5, 4.5], "expected": 4.5}, {"input": [-58.5, 5.0], "expected": 5.0}, {"input": [-58.5, 5.5], "expected": 5.5}, {"input": [-58.5, 6.0], "expected": 6.0}, {"input": [-58.5, 6.5], "expected": 6.5}, {"input": [-58.5, 7.0], "expected": 7.0}, {"input": [-58.5, 7.5], "expected": 7.5}, {"input": [-58.5, 8.0], "expected": 8.0}, {"input": [-58.5, 8.5], "expected": 8.5}, {"input": [-58.5, 9.0], "expected": 9.0}, {"input": [-58.5, 9.5], "expected": 9.5}, {"input": [-58.5, 10.0], "expected": 10.0}, {"input": [-58.5, 10.5], "expected": 10.5}, {"input": [-58.5, 11.0], "expected": 11.0}, {"input": [-58.5, 11.5], "expected": 11.5}, {"input": [-58.5, 12.0], "expected": 12.0}, {"input": [-58.5, 12.5], "expected": 12.5}, {"input": [-58.5, 13.0], "expected": 13.0}, {"input": [-58.5, 13.5], "expected": 13.5}, {"input": [-58.5, 14.0], "expected": 14.0}, {"input": [-58.5, 14.5], "expected": 14.5}, {"input": [-58.5, 15.0], "expected": 15.0}, {"input": [-58.5, 15.5], "expected": 15.5}, {"input": [-58.5, 16.0], "expected": 16.0}, {"input": [-58.5, 16.5], "expected": 16.5}, {"input": [-58.5, 17.0], "expected": 17.0}, {"input": [-58.5, 17.5], "expected": 17.5}, {"input": [-58.5, 18.0], "expected": 18.0}, {"input": [-58.5, 18.5], "expected": 18.5}, {"input": [-58.5, 19.0], "expected": 19.0}, {"input": [-58.5, 19.5], "expected": 19.5}, {"input": [-58.5, 20.0], "expected": 20.0}, {"input": [-58.5, 20.5], "expected": 20.5}, {"input": [-58.5, 21.0], "expected": 21.0}, {"input": [-58.5, 21.5], "expected": 21.5}, {"input": [-58.5, 22.0], "expected": 22.0}, {"input": [-58.5, 22.5], "expected": 22.5}, {"input": [-58.5, 23.0], "expected": 23.0}, {"input": [-58.5, 23.5], "expected": 23.5}, {"input": [-58.5, 24.0], "expected": 24.0}, {"input": [-58.5, 24.5], "expected": 24.5}, {"input": [-58.5, 25.0], "expected": 25.0}, {"input": [-58.5, 25.5], "expected": 25.5}, {"input": [-58.5, 26.0], "expected": 26.0}, {"input": [-58.5, 26.5], "expected": 26.5}, {"input": [-58.5, 27.0], "expected": 27.0}, {"input": [-58.5, 27.5], "expected": 27.5}, {"input": [-58.5, 28.0], "expected": 28.0}, {"input": [-58.5, 28.5], "expected": 28.5}, {"input": [-58.5, 29.0], "expected": 29.0}, {"input": [-58.5, 29.5], "expected": 29.5}, {"input": [-58.5, 30.0], "expected": 30.0}, {"input": [-58.5, 30.5], "expected": 30.5}, {"input": [-58.5, 31.0], "expected": 31.0}, {"input": [-58.5, 31.5], "expected": 31.5}, {"input": [-58.5, 32.0], "expected": 32.0}, {"input": [-58.5, 32.5], "expected": 32.5}, {"input": [-58.5, 33.0], "expected": 33.0}, {"input": [-58.5, 33.5], "expected": 33.5}, {"input": [-58.5, 34.0], "expected": 34.0}, {"input": [-58.5, 34.5], "expected": 34.5}, {"input": [-58.5, 35.0], "expected": 35.0}, {"input": [-58.5, 35.5], "expected": 35.5}, {"input": [-58.5, 36.0], "expected": 36.0}, {"input": [-58.5, 36.5], "expected": 36.5}, {"input": [-58.5, 37.0], "expected": 37.0}, {"input": [-58.5, 37.5], "expected": 37.5}, {"input": [-58.5, 38.0], "expected": 38.0}, {"input": [-58.5, 38.5], "expected": 38.5}, {"input": [-58.5, 39.0], "expected": 39.0}, {"input": [-58.5, 39.5], "expected": 39.5}, {"input": [-58.5, 40.0], "expected": 40.0}, {"input": [-58.5, 40.5], "expected": 40.5}, {"input": [-58.5, 41.0], "expected": 41.0}, {"input": [-58.5, 41.5], "expected": 41.5}, {"input": [-58.5, 42.0], "expected": 42.0}, {"input": [-58.5, 42.5], "expected": 42.5}, {"input": [-58.5, 43.0], "expected": 43.0}, {"input": [-58.5, 43.5], "expected": 43.5}, {"input": [-58.5, 44.0], "expected": 44.0}, {"input": [-58.5, 44.5], "expected": 44.5}, {"input": [-58.5, 45.0], "expected": 45.0}, {"input": [-58.5, 45.5], "expected": 45.5}, {"input": [-58.5, 46.0], "expected": 46.0}, {"input": [-58.5, 46.5], "expected": 46.5}, {"input": [-58.5, 47.0], "expected": 47.0}, {"input": [-58.5, 47.5], "expected": 47.5}, {"input": [-58.5, 48.0], "expected": 48.0}, {"input": [-58.5, 48.5], "expected": 48.5}, {"input": [-58.5, 49.0], "expected": 49.0}, {"input": [-58.5, 49.5], "expected": 49.5}, {"input": [-58.5, 50.0], "expected": 50.0}, {"input": [-58.5, 50.5], "expected": 50.5}, {"input": [-58.5, 51.0], "expected": 51.0}, {"input": [-58.5, 51.5], "expected": 51.5}, {"input": [-58.5, 52.0], "expected": 52.0}, {"input": [-58.5, 52.5], "expected": 52.5}, {"input": [-58.5, 53.0], "expected": 53.0}, {"input": [-58.5, 53.5], "expected": 53.5}, {"input": [-58.5, 54.0], "expected": 54.0}, {"input": [-58.5, 54.5], "expected": 54.5}, {"input": [-58.5, 55.0], "expected": 55.0}, {"input": [-58.5, 55.5], "expected": 55.5}, {"input": [-58.5, 56.0], "expected": 56.0}, {"input": [-58.5, 56.5], "expected": 56.5}, {"input": [-58.5, 57.0], "expected": 57.0}, {"input": [-58.5, 57.5], "expected": 57.5}, {"input": [-58.5, 58.0], "expected": 58.0}, {"input": [-58.5, 58.5], "expected": 58.5}, {"input": [-58.5, 59.0], "expected": 59.0}, {"input": [-58.5, 59.5], "expected": 59.5}, {"input": [-58.5, 60.0], "expected": 60.0}, {"input": [-58.5, 60.5], "expected": 60.5}, {"input": [-58.5, 61.0], "expected": 61.0}, {"input": [-58.5, 61.5], "expected": 61.5}, {"input": [-58.5, 62.0], "expected": 62.0}, {"input": [-58.5, 62.5], "expected": 62.5}, {"input": [-58.5, 63.0], "expected": 63.0}, {"input": [-58.5, 63.5], "expected": 63.5}, {"input": [-58.5, 64.0], "expected": 64.0}, {"input": [-58.5, 64.5], "expected": 64.5}, {"input": [-58.5, 65.0], "expected": 65.0}, {"input": [-58.5, 65.5], "expected": 65.5}, {"input": [-58.5, 66.0], "expected": 66.0}, {"input": [-58.5, 66.5], "expected": 66.5}, {"input": [-58.5, 67.0], "expected": 67.0}, {"input": [-58.5, 67.5], "expected": 67.5}, {"input": [-58.5, 68.0], "expected": 68.0}, {"input": [-58.5, 68.5], "expected": 68.5}, {"input": [-58.5, 69.0], "expected": 69.0}, {"input": [-58.5, 69.5], "expected": 69.5}, {"input": [-58.5, 70.0], "expected": 70.0}, {"input": [-58.5, 70.5], "expected": 70.5}, {"input": [-58.5, 71.0], "expected": 71.0}, {"input": [-58.5, 71.5], "expected": 71.5}, {"input": [-58.5, 72.0], "expected": 72.0}, {"input": [-58.5, 72.5], "expected": 72.5}, {"input": [-58.5, 73.0], "expected": 73.0}, {"input": [-58.5, 73.5], "expected": 73.5}, {"input": [-58.5, 74.0], "expected": 74.0}, {"input": [-58.5, 74.5], "expected": 74.5}, {"input": [-58.5, 75.0], "expected": 75.0}, {"input": [-58.5, 75.5], "expected": 75.5}, {"input": [-58.5, 76.0], "expected": 76.0}, {"input": [-58.5, 76.5], "expected": 76.5}, {"input": [-58.5, 77.0], "expected": 77.0}, {"input": [-58.5, 77.5], "expected": 77.5}, {"input": [-58.5, 78.0], "expected": 78.0}, {"input": [-58.5, 78.5], "expected": 78.5}, {"input": [-58.5, 79.0], "expected": 79.0}, {"input": [-58.5, 79.5], "expected": 79.5}, {"input": [-58.5, 80.0], "expected": 80.0}, {"input": [-58.5, 80.5], "expected": 80.5}, {"input": [-58.5, 81.0], "expected": 81.0}, {"input": [-58.5, 81.5], "expected": 81.5}, {"input": [-58.5, 82.0], "expected": 82.0}, {"input": [-58.5, 82.5], "expected": 82.5}, {"input": [-58.5, 83.0], "expected": 83.0}, {"input": [-58.5, 83.5], "expected": 83.5}, {"input": [-58.5, 84.0], "expected": 84.0}, {"input": [-58.5, 84.5], "expected": 84.5}, {"input": [-58.5, 85.0], "expected": 85.0}, {"input": [-58.5, 85.5], "expected": 85.5}, {"input": [-58.5, 86.0], "expected": 86.0}, {"input": [-58.5, 86.5], "expected": 86.5}, {"input": [-58.5, 87.0], "expected": 87.0}, {"input": [-58.5, 87.5], "expected": 87.5}, {"input": [-58.5, 88.0], "expected": 88.0}, {"input": [-58.5, 88.5], "expected": 88.5}, {"input": [-58.5, 89.0], "expected": 89.0}, {"input": [-58.5, 89.5], "expected": 89.5}, {"input": [-58.5, 90.0], "expected": 90.0}, {"input": [-58.5, 90.5], "expected": 90.5}, {"input": [-58.5, 91.0], "expected": 91.0}, {"input": [-58.5, 91.5], "expected": 91.5}, {"input": [-58.5, 92.0], "expected": 92.0}, {"input": [-58.5, 92.5], "expected": 92.5}, {"input": [-58.5, 93.0], "expected": 93.0}, {"input": [-58.5, 93.5], "expected": 93.5}, {"input": [-58.5, 94.0], "expected": 94.0}, {"input": [-58.5, 94.5], "expected": 94.5}, {"input": [-58.5, 95.0], "expected": 95.0}, {"input": [-58.5, 95.5], "expected": 95.5}, {"input": [-58.5, 96.0], "expected": 96.0}, {"input": [-58.5, 96.5], "expected": 96.5}, {"input": [-58.5, 97.0], "expected": 97.0}, {"input": [-58.5, 97.5], "expected": 97.5}, {"input": [-58.5, 98.0], "expected": 98.0}, {"input": [-58.5, 98.5], "expected": 98.5}, {"input": [-58.5, 99.0], "expected": 99.0}, {"input": [-58.5, 99.5], "expected": 99.5}, {"input": [-58.0, -100.0], "expected": -58.0}, {"input": [-58.0, -99.5], "expected": -58.0}, {"input": [-58.0, -99.0], "expected": -58.0}, {"input": [-58.0, -98.5], "expected": -58.0}, {"input": [-58.0, -98.0], "expected": -58.0}, {"input": [-58.0, -97.5], "expected": -58.0}, {"input": [-58.0, -97.0], "expected": -58.0}, {"input": [-58.0, -96.5], "expected": -58.0}, {"input": [-58.0, -96.0], "expected": -58.0}, {"input": [-58.0, -95.5], "expected": -58.0}, {"input": [-58.0, -95.0], "expected": -58.0}, {"input": [-58.0, -94.5], "expected": -58.0}, {"input": [-58.0, -94.0], "expected": -58.0}, {"input": [-58.0, -93.5], "expected": -58.0}, {"input": [-58.0, -93.0], "expected": -58.0}, {"input": [-58.0, -92.5], "expected": -58.0}, {"input": [-58.0, -92.0], "expected": -58.0}, {"input": [-58.0, -91.5], "expected": -58.0}, {"input": [-58.0, -91.0], "expected": -57.99999999999999}, {"input": [-58.0, -90.5], "expected": -57.99999999999999}, {"input": [-58.0, -90.0], "expected": -57.999999999999986}, {"input": [-58.0, -89.5], "expected": -57.99999999999998}, {"input": [-58.0, -89.0], "expected": -57.999999999999964}, {"input": [-58.0, -88.5], "expected": -57.99999999999994}, {"input": [-58.0, -88.0], "expected": -57.99999999999991}, {"input": [-58.0, -87.5], "expected": -57.999999999999844}, {"input": [-58.0, -87.0], "expected": -57.999999999999744}, {"input": [-58.0, -86.5], "expected": -57.99999999999958}, {"input": [-58.0, -86.0], "expected": -57.99999999999931}, {"input": [-58.0, -85.5], "expected": -57.99999999999886}, {"input": [-58.0, -85.0], "expected": -57.99999999999812}, {"input": [-58.0, -84.5], "expected": -57.9999999999969}, {"input": [-58.0, -84.0], "expected": -57.99999999999489}, {"input": [-58.0, -83.5], "expected": -57.99999999999158}, {"input": [-58.0, -83.0], "expected": -57.99999999998611}, {"input": [-58.0, -82.5], "expected": -57.9999999999771}, {"input": [-58.0, -82.0], "expected": -57.99999999996225}, {"input": [-58.0, -81.5], "expected": -57.99999999993776}, {"input": [-58.0, -81.0], "expected": -57.99999999989738}, {"input": [-58.0, -80.5], "expected": -57.99999999983081}, {"input": [-58.0, -80.0], "expected": -57.999999999721055}, {"input": [-58.0, -79.5], "expected": -57.999999999540094}, {"input": [-58.0, -79.0], "expected": -57.999999999241744}, {"input": [-58.0, -78.5], "expected": -57.99999999874985}, {"input": [-58.0, -78.0], "expected": -57.99999999793884}, {"input": [-58.0, -77.5], "expected": -57.99999999660173}, {"input": [-58.0, -77.0], "expected": -57.99999999439721}, {"input": [-58.0, -76.5], "expected": -57.999999990762554}, {"input": [-58.0, -76.0], "expected": -57.99999998477002}, {"input": [-58.0, -75.5], "expected": -57.99999997489001}, {"input": [-58.0, -75.0], "expected": -57.999999958600625}, {"input": [-58.0, -74.5], "expected": -57.99999993174397}, {"input": [-58.0, -74.0], "expected": -57.99999988746483}, {"input": [-58.0, -73.5], "expected": -57.99999981446088}, {"input": [-58.0, -73.0], "expected": -57.999999694097724}, {"input": [-58.0, -72.5], "expected": -57.99999949565247}, {"input": [-58.0, -72.0], "expected": -57.999999168471625}, {"input": [-58.0, -71.5], "expected": -57.999998629041855}, {"input": [-58.0, -71.0], "expected": -57.99999773967315}, {"input": [-58.0, -70.5], "expected": -57.99999627335377}, {"input": [-58.0, -70.0], "expected": -57.99999385580652}, {"input": [-58.0, -69.5], "expected": -57.99998986995771}, {"input": [-58.0, -69.0], "expected": -57.99998329843868}, {"input": [-58.0, -68.5], "expected": -57.99997246392977}, {"input": [-58.0, -68.0], "expected": -57.99995460110078}, {"input": [-58.0, -67.5], "expected": -57.99992515097137}, {"input": [-58.0, -67.0], "expected": -57.99987659781028}, {"input": [-58.0, -66.5], "expected": -57.99979655232787}, {"input": [-58.0, -66.0], "expected": -57.9996645936271}, {"input": [-58.0, -65.5], "expected": -57.99944706852464}, {"input": [-58.0, -65.0], "expected": -57.99908853354623}, {"input": [-58.0, -64.5], "expected": -57.99849768984024}, {"input": [-58.0, -64.0], "expected": -57.99752431486227}, {"input": [-58.0, -63.5], "expected": -57.99592155672943}, {"input": [-58.0, -63.0], "expected": -57.99328465151088}, {"input": [-58.0, -62.5], "expected": -57.9889522551514}, {"input": [-58.0, -62.0], "expected": -57.98185007208219}, {"input": [-58.0, -61.5], "expected": -57.97024958172738}, {"input": [-58.0, -61.0], "expected": -57.951412648426256}, {"input": [-58.0, -60.5], "expected": -57.92111026570745}, {"input": [-58.0, -60.0], "expected": -57.87307198895703}, {"input": [-58.0, -59.5], "expected": -57.79858672201725}, {"input": [-58.0, -59.0], "expected": -57.68673831248178}, {"input": [-58.0, -58.5], "expected": -57.52592301581989}, {"input": [-58.0, -58.0], "expected": -57.30685281944005}, {"input": [-58.0, -57.5], "expected": -57.02592301581989}, {"input": [-58.0, -57.0], "expected": -56.68673831248178}, {"input": [-58.0, -56.5], "expected": -56.29858672201725}, {"input": [-58.0, -56.0], "expected": -55.87307198895703}, {"input": [-58.0, -55.5], "expected": -55.42111026570745}, {"input": [-58.0, -55.0], "expected": -54.951412648426256}, {"input": [-58.0, -54.5], "expected": -54.47024958172738}, {"input": [-58.0, -54.0], "expected": -53.98185007208219}, {"input": [-58.0, -53.5], "expected": -53.4889522551514}, {"input": [-58.0, -53.0], "expected": -52.99328465151088}, {"input": [-58.0, -52.5], "expected": -52.49592155672943}, {"input": [-58.0, -52.0], "expected": -51.99752431486227}, {"input": [-58.0, -51.5], "expected": -51.49849768984024}, {"input": [-58.0, -51.0], "expected": -50.99908853354623}, {"input": [-58.0, -50.5], "expected": -50.49944706852464}, {"input": [-58.0, -50.0], "expected": -49.9996645936271}, {"input": [-58.0, -49.5], "expected": -49.49979655232787}, {"input": [-58.0, -49.0], "expected": -48.99987659781028}, {"input": [-58.0, -48.5], "expected": -48.49992515097137}, {"input": [-58.0, -48.0], "expected": -47.99995460110078}, {"input": [-58.0, -47.5], "expected": -47.49997246392977}, {"input": [-58.0, -47.0], "expected": -46.99998329843868}, {"input": [-58.0, -46.5], "expected": -46.49998986995771}, {"input": [-58.0, -46.0], "expected": -45.99999385580652}, {"input": [-58.0, -45.5], "expected": -45.49999627335377}, {"input": [-58.0, -45.0], "expected": -44.99999773967315}, {"input": [-58.0, -44.5], "expected": -44.499998629041855}, {"input": [-58.0, -44.0], "expected": -43.999999168471625}, {"input": [-58.0, -43.5], "expected": -43.49999949565247}, {"input": [-58.0, -43.0], "expected": -42.999999694097724}, {"input": [-58.0, -42.5], "expected": -42.49999981446088}, {"input": [-58.0, -42.0], "expected": -41.99999988746483}, {"input": [-58.0, -41.5], "expected": -41.49999993174397}, {"input": [-58.0, -41.0], "expected": -40.999999958600625}, {"input": [-58.0, -40.5], "expected": -40.49999997489001}, {"input": [-58.0, -40.0], "expected": -39.99999998477002}, {"input": [-58.0, -39.5], "expected": -39.499999990762554}, {"input": [-58.0, -39.0], "expected": -38.99999999439721}, {"input": [-58.0, -38.5], "expected": -38.49999999660173}, {"input": [-58.0, -38.0], "expected": -37.99999999793884}, {"input": [-58.0, -37.5], "expected": -37.49999999874985}, {"input": [-58.0, -37.0], "expected": -36.999999999241744}, {"input": [-58.0, -36.5], "expected": -36.499999999540094}, {"input": [-58.0, -36.0], "expected": -35.999999999721055}, {"input": [-58.0, -35.5], "expected": -35.49999999983081}, {"input": [-58.0, -35.0], "expected": -34.99999999989738}, {"input": [-58.0, -34.5], "expected": -34.49999999993776}, {"input": [-58.0, -34.0], "expected": -33.99999999996225}, {"input": [-58.0, -33.5], "expected": -33.4999999999771}, {"input": [-58.0, -33.0], "expected": -32.99999999998611}, {"input": [-58.0, -32.5], "expected": -32.49999999999158}, {"input": [-58.0, -32.0], "expected": -31.99999999999489}, {"input": [-58.0, -31.5], "expected": -31.499999999996902}, {"input": [-58.0, -31.0], "expected": -30.99999999999812}, {"input": [-58.0, -30.5], "expected": -30.49999999999886}, {"input": [-58.0, -30.0], "expected": -29.999999999999307}, {"input": [-58.0, -29.5], "expected": -29.49999999999958}, {"input": [-58.0, -29.0], "expected": -28.999999999999744}, {"input": [-58.0, -28.5], "expected": -28.499999999999847}, {"input": [-58.0, -28.0], "expected": -27.999999999999908}, {"input": [-58.0, -27.5], "expected": -27.499999999999943}, {"input": [-58.0, -27.0], "expected": -26.999999999999964}, {"input": [-58.0, -26.5], "expected": -26.49999999999998}, {"input": [-58.0, -26.0], "expected": -25.999999999999986}, {"input": [-58.0, -25.5], "expected": -25.499999999999993}, {"input": [-58.0, -25.0], "expected": -24.999999999999996}, {"input": [-58.0, -24.5], "expected": -24.499999999999996}, {"input": [-58.0, -24.0], "expected": -24.0}, {"input": [-58.0, -23.5], "expected": -23.5}, {"input": [-58.0, -23.0], "expected": -23.0}, {"input": [-58.0, -22.5], "expected": -22.5}, {"input": [-58.0, -22.0], "expected": -22.0}, {"input": [-58.0, -21.5], "expected": -21.5}, {"input": [-58.0, -21.0], "expected": -21.0}, {"input": [-58.0, -20.5], "expected": -20.5}, {"input": [-58.0, -20.0], "expected": -20.0}, {"input": [-58.0, -19.5], "expected": -19.5}, {"input": [-58.0, -19.0], "expected": -19.0}, {"input": [-58.0, -18.5], "expected": -18.5}, {"input": [-58.0, -18.0], "expected": -18.0}, {"input": [-58.0, -17.5], "expected": -17.5}, {"input": [-58.0, -17.0], "expected": -17.0}, {"input": [-58.0, -16.5], "expected": -16.5}, {"input": [-58.0, -16.0], "expected": -16.0}, {"input": [-58.0, -15.5], "expected": -15.5}, {"input": [-58.0, -15.0], "expected": -15.0}, {"input": [-58.0, -14.5], "expected": -14.5}, {"input": [-58.0, -14.0], "expected": -14.0}, {"input": [-58.0, -13.5], "expected": -13.5}, {"input": [-58.0, -13.0], "expected": -13.0}, {"input": [-58.0, -12.5], "expected": -12.5}, {"input": [-58.0, -12.0], "expected": -12.0}, {"input": [-58.0, -11.5], "expected": -11.5}, {"input": [-58.0, -11.0], "expected": -11.0}, {"input": [-58.0, -10.5], "expected": -10.5}, {"input": [-58.0, -10.0], "expected": -10.0}, {"input": [-58.0, -9.5], "expected": -9.5}, {"input": [-58.0, -9.0], "expected": -9.0}, {"input": [-58.0, -8.5], "expected": -8.5}, {"input": [-58.0, -8.0], "expected": -8.0}, {"input": [-58.0, -7.5], "expected": -7.5}, {"input": [-58.0, -7.0], "expected": -7.0}, {"input": [-58.0, -6.5], "expected": -6.5}, {"input": [-58.0, -6.0], "expected": -6.0}, {"input": [-58.0, -5.5], "expected": -5.5}, {"input": [-58.0, -5.0], "expected": -5.0}, {"input": [-58.0, -4.5], "expected": -4.5}, {"input": [-58.0, -4.0], "expected": -4.0}, {"input": [-58.0, -3.5], "expected": -3.5}, {"input": [-58.0, -3.0], "expected": -3.0}, {"input": [-58.0, -2.5], "expected": -2.5}, {"input": [-58.0, -2.0], "expected": -2.0}, {"input": [-58.0, -1.5], "expected": -1.5}, {"input": [-58.0, -1.0], "expected": -1.0}, {"input": [-58.0, -0.5], "expected": -0.5}, {"input": [-58.0, 0.0], "expected": 6.47023492564546e-26}, {"input": [-58.0, 0.5], "expected": 0.5}, {"input": [-58.0, 1.0], "expected": 1.0}, {"input": [-58.0, 1.5], "expected": 1.5}, {"input": [-58.0, 2.0], "expected": 2.0}, {"input": [-58.0, 2.5], "expected": 2.5}, {"input": [-58.0, 3.0], "expected": 3.0}, {"input": [-58.0, 3.5], "expected": 3.5}, {"input": [-58.0, 4.0], "expected": 4.0}, {"input": [-58.0, 4.5], "expected": 4.5}, {"input": [-58.0, 5.0], "expected": 5.0}, {"input": [-58.0, 5.5], "expected": 5.5}, {"input": [-58.0, 6.0], "expected": 6.0}, {"input": [-58.0, 6.5], "expected": 6.5}, {"input": [-58.0, 7.0], "expected": 7.0}, {"input": [-58.0, 7.5], "expected": 7.5}, {"input": [-58.0, 8.0], "expected": 8.0}, {"input": [-58.0, 8.5], "expected": 8.5}, {"input": [-58.0, 9.0], "expected": 9.0}, {"input": [-58.0, 9.5], "expected": 9.5}, {"input": [-58.0, 10.0], "expected": 10.0}, {"input": [-58.0, 10.5], "expected": 10.5}, {"input": [-58.0, 11.0], "expected": 11.0}, {"input": [-58.0, 11.5], "expected": 11.5}, {"input": [-58.0, 12.0], "expected": 12.0}, {"input": [-58.0, 12.5], "expected": 12.5}, {"input": [-58.0, 13.0], "expected": 13.0}, {"input": [-58.0, 13.5], "expected": 13.5}, {"input": [-58.0, 14.0], "expected": 14.0}, {"input": [-58.0, 14.5], "expected": 14.5}, {"input": [-58.0, 15.0], "expected": 15.0}, {"input": [-58.0, 15.5], "expected": 15.5}, {"input": [-58.0, 16.0], "expected": 16.0}, {"input": [-58.0, 16.5], "expected": 16.5}, {"input": [-58.0, 17.0], "expected": 17.0}, {"input": [-58.0, 17.5], "expected": 17.5}, {"input": [-58.0, 18.0], "expected": 18.0}, {"input": [-58.0, 18.5], "expected": 18.5}, {"input": [-58.0, 19.0], "expected": 19.0}, {"input": [-58.0, 19.5], "expected": 19.5}, {"input": [-58.0, 20.0], "expected": 20.0}, {"input": [-58.0, 20.5], "expected": 20.5}, {"input": [-58.0, 21.0], "expected": 21.0}, {"input": [-58.0, 21.5], "expected": 21.5}, {"input": [-58.0, 22.0], "expected": 22.0}, {"input": [-58.0, 22.5], "expected": 22.5}, {"input": [-58.0, 23.0], "expected": 23.0}, {"input": [-58.0, 23.5], "expected": 23.5}, {"input": [-58.0, 24.0], "expected": 24.0}, {"input": [-58.0, 24.5], "expected": 24.5}, {"input": [-58.0, 25.0], "expected": 25.0}, {"input": [-58.0, 25.5], "expected": 25.5}, {"input": [-58.0, 26.0], "expected": 26.0}, {"input": [-58.0, 26.5], "expected": 26.5}, {"input": [-58.0, 27.0], "expected": 27.0}, {"input": [-58.0, 27.5], "expected": 27.5}, {"input": [-58.0, 28.0], "expected": 28.0}, {"input": [-58.0, 28.5], "expected": 28.5}, {"input": [-58.0, 29.0], "expected": 29.0}, {"input": [-58.0, 29.5], "expected": 29.5}, {"input": [-58.0, 30.0], "expected": 30.0}, {"input": [-58.0, 30.5], "expected": 30.5}, {"input": [-58.0, 31.0], "expected": 31.0}, {"input": [-58.0, 31.5], "expected": 31.5}, {"input": [-58.0, 32.0], "expected": 32.0}, {"input": [-58.0, 32.5], "expected": 32.5}, {"input": [-58.0, 33.0], "expected": 33.0}, {"input": [-58.0, 33.5], "expected": 33.5}, {"input": [-58.0, 34.0], "expected": 34.0}, {"input": [-58.0, 34.5], "expected": 34.5}, {"input": [-58.0, 35.0], "expected": 35.0}, {"input": [-58.0, 35.5], "expected": 35.5}, {"input": [-58.0, 36.0], "expected": 36.0}, {"input": [-58.0, 36.5], "expected": 36.5}, {"input": [-58.0, 37.0], "expected": 37.0}, {"input": [-58.0, 37.5], "expected": 37.5}, {"input": [-58.0, 38.0], "expected": 38.0}, {"input": [-58.0, 38.5], "expected": 38.5}, {"input": [-58.0, 39.0], "expected": 39.0}, {"input": [-58.0, 39.5], "expected": 39.5}, {"input": [-58.0, 40.0], "expected": 40.0}, {"input": [-58.0, 40.5], "expected": 40.5}, {"input": [-58.0, 41.0], "expected": 41.0}, {"input": [-58.0, 41.5], "expected": 41.5}, {"input": [-58.0, 42.0], "expected": 42.0}, {"input": [-58.0, 42.5], "expected": 42.5}, {"input": [-58.0, 43.0], "expected": 43.0}, {"input": [-58.0, 43.5], "expected": 43.5}, {"input": [-58.0, 44.0], "expected": 44.0}, {"input": [-58.0, 44.5], "expected": 44.5}, {"input": [-58.0, 45.0], "expected": 45.0}, {"input": [-58.0, 45.5], "expected": 45.5}, {"input": [-58.0, 46.0], "expected": 46.0}, {"input": [-58.0, 46.5], "expected": 46.5}, {"input": [-58.0, 47.0], "expected": 47.0}, {"input": [-58.0, 47.5], "expected": 47.5}, {"input": [-58.0, 48.0], "expected": 48.0}, {"input": [-58.0, 48.5], "expected": 48.5}, {"input": [-58.0, 49.0], "expected": 49.0}, {"input": [-58.0, 49.5], "expected": 49.5}, {"input": [-58.0, 50.0], "expected": 50.0}, {"input": [-58.0, 50.5], "expected": 50.5}, {"input": [-58.0, 51.0], "expected": 51.0}, {"input": [-58.0, 51.5], "expected": 51.5}, {"input": [-58.0, 52.0], "expected": 52.0}, {"input": [-58.0, 52.5], "expected": 52.5}, {"input": [-58.0, 53.0], "expected": 53.0}, {"input": [-58.0, 53.5], "expected": 53.5}, {"input": [-58.0, 54.0], "expected": 54.0}, {"input": [-58.0, 54.5], "expected": 54.5}, {"input": [-58.0, 55.0], "expected": 55.0}, {"input": [-58.0, 55.5], "expected": 55.5}, {"input": [-58.0, 56.0], "expected": 56.0}, {"input": [-58.0, 56.5], "expected": 56.5}, {"input": [-58.0, 57.0], "expected": 57.0}, {"input": [-58.0, 57.5], "expected": 57.5}, {"input": [-58.0, 58.0], "expected": 58.0}, {"input": [-58.0, 58.5], "expected": 58.5}, {"input": [-58.0, 59.0], "expected": 59.0}, {"input": [-58.0, 59.5], "expected": 59.5}, {"input": [-58.0, 60.0], "expected": 60.0}, {"input": [-58.0, 60.5], "expected": 60.5}, {"input": [-58.0, 61.0], "expected": 61.0}, {"input": [-58.0, 61.5], "expected": 61.5}, {"input": [-58.0, 62.0], "expected": 62.0}, {"input": [-58.0, 62.5], "expected": 62.5}, {"input": [-58.0, 63.0], "expected": 63.0}, {"input": [-58.0, 63.5], "expected": 63.5}, {"input": [-58.0, 64.0], "expected": 64.0}, {"input": [-58.0, 64.5], "expected": 64.5}, {"input": [-58.0, 65.0], "expected": 65.0}, {"input": [-58.0, 65.5], "expected": 65.5}, {"input": [-58.0, 66.0], "expected": 66.0}, {"input": [-58.0, 66.5], "expected": 66.5}, {"input": [-58.0, 67.0], "expected": 67.0}, {"input": [-58.0, 67.5], "expected": 67.5}, {"input": [-58.0, 68.0], "expected": 68.0}, {"input": [-58.0, 68.5], "expected": 68.5}, {"input": [-58.0, 69.0], "expected": 69.0}, {"input": [-58.0, 69.5], "expected": 69.5}, {"input": [-58.0, 70.0], "expected": 70.0}, {"input": [-58.0, 70.5], "expected": 70.5}, {"input": [-58.0, 71.0], "expected": 71.0}, {"input": [-58.0, 71.5], "expected": 71.5}, {"input": [-58.0, 72.0], "expected": 72.0}, {"input": [-58.0, 72.5], "expected": 72.5}, {"input": [-58.0, 73.0], "expected": 73.0}, {"input": [-58.0, 73.5], "expected": 73.5}, {"input": [-58.0, 74.0], "expected": 74.0}, {"input": [-58.0, 74.5], "expected": 74.5}, {"input": [-58.0, 75.0], "expected": 75.0}, {"input": [-58.0, 75.5], "expected": 75.5}, {"input": [-58.0, 76.0], "expected": 76.0}, {"input": [-58.0, 76.5], "expected": 76.5}, {"input": [-58.0, 77.0], "expected": 77.0}, {"input": [-58.0, 77.5], "expected": 77.5}, {"input": [-58.0, 78.0], "expected": 78.0}, {"input": [-58.0, 78.5], "expected": 78.5}, {"input": [-58.0, 79.0], "expected": 79.0}, {"input": [-58.0, 79.5], "expected": 79.5}, {"input": [-58.0, 80.0], "expected": 80.0}, {"input": [-58.0, 80.5], "expected": 80.5}, {"input": [-58.0, 81.0], "expected": 81.0}, {"input": [-58.0, 81.5], "expected": 81.5}, {"input": [-58.0, 82.0], "expected": 82.0}, {"input": [-58.0, 82.5], "expected": 82.5}, {"input": [-58.0, 83.0], "expected": 83.0}, {"input": [-58.0, 83.5], "expected": 83.5}, {"input": [-58.0, 84.0], "expected": 84.0}, {"input": [-58.0, 84.5], "expected": 84.5}, {"input": [-58.0, 85.0], "expected": 85.0}, {"input": [-58.0, 85.5], "expected": 85.5}, {"input": [-58.0, 86.0], "expected": 86.0}, {"input": [-58.0, 86.5], "expected": 86.5}, {"input": [-58.0, 87.0], "expected": 87.0}, {"input": [-58.0, 87.5], "expected": 87.5}, {"input": [-58.0, 88.0], "expected": 88.0}, {"input": [-58.0, 88.5], "expected": 88.5}, {"input": [-58.0, 89.0], "expected": 89.0}, {"input": [-58.0, 89.5], "expected": 89.5}, {"input": [-58.0, 90.0], "expected": 90.0}, {"input": [-58.0, 90.5], "expected": 90.5}, {"input": [-58.0, 91.0], "expected": 91.0}, {"input": [-58.0, 91.5], "expected": 91.5}, {"input": [-58.0, 92.0], "expected": 92.0}, {"input": [-58.0, 92.5], "expected": 92.5}, {"input": [-58.0, 93.0], "expected": 93.0}, {"input": [-58.0, 93.5], "expected": 93.5}, {"input": [-58.0, 94.0], "expected": 94.0}, {"input": [-58.0, 94.5], "expected": 94.5}, {"input": [-58.0, 95.0], "expected": 95.0}, {"input": [-58.0, 95.5], "expected": 95.5}, {"input": [-58.0, 96.0], "expected": 96.0}, {"input": [-58.0, 96.5], "expected": 96.5}, {"input": [-58.0, 97.0], "expected": 97.0}, {"input": [-58.0, 97.5], "expected": 97.5}, {"input": [-58.0, 98.0], "expected": 98.0}, {"input": [-58.0, 98.5], "expected": 98.5}, {"input": [-58.0, 99.0], "expected": 99.0}, {"input": [-58.0, 99.5], "expected": 99.5}, {"input": [-57.5, -100.0], "expected": -57.5}, {"input": [-57.5, -99.5], "expected": -57.5}, {"input": [-57.5, -99.0], "expected": -57.5}, {"input": [-57.5, -98.5], "expected": -57.5}, {"input": [-57.5, -98.0], "expected": -57.5}, {"input": [-57.5, -97.5], "expected": -57.5}, {"input": [-57.5, -97.0], "expected": -57.5}, {"input": [-57.5, -96.5], "expected": -57.5}, {"input": [-57.5, -96.0], "expected": -57.5}, {"input": [-57.5, -95.5], "expected": -57.5}, {"input": [-57.5, -95.0], "expected": -57.5}, {"input": [-57.5, -94.5], "expected": -57.5}, {"input": [-57.5, -94.0], "expected": -57.5}, {"input": [-57.5, -93.5], "expected": -57.5}, {"input": [-57.5, -93.0], "expected": -57.5}, {"input": [-57.5, -92.5], "expected": -57.5}, {"input": [-57.5, -92.0], "expected": -57.5}, {"input": [-57.5, -91.5], "expected": -57.5}, {"input": [-57.5, -91.0], "expected": -57.5}, {"input": [-57.5, -90.5], "expected": -57.49999999999999}, {"input": [-57.5, -90.0], "expected": -57.49999999999999}, {"input": [-57.5, -89.5], "expected": -57.499999999999986}, {"input": [-57.5, -89.0], "expected": -57.49999999999998}, {"input": [-57.5, -88.5], "expected": -57.499999999999964}, {"input": [-57.5, -88.0], "expected": -57.49999999999994}, {"input": [-57.5, -87.5], "expected": -57.49999999999991}, {"input": [-57.5, -87.0], "expected": -57.499999999999844}, {"input": [-57.5, -86.5], "expected": -57.499999999999744}, {"input": [-57.5, -86.0], "expected": -57.49999999999958}, {"input": [-57.5, -85.5], "expected": -57.49999999999931}, {"input": [-57.5, -85.0], "expected": -57.49999999999886}, {"input": [-57.5, -84.5], "expected": -57.49999999999812}, {"input": [-57.5, -84.0], "expected": -57.4999999999969}, {"input": [-57.5, -83.5], "expected": -57.49999999999489}, {"input": [-57.5, -83.0], "expected": -57.49999999999158}, {"input": [-57.5, -82.5], "expected": -57.49999999998611}, {"input": [-57.5, -82.0], "expected": -57.4999999999771}, {"input": [-57.5, -81.5], "expected": -57.49999999996225}, {"input": [-57.5, -81.0], "expected": -57.49999999993776}, {"input": [-57.5, -80.5], "expected": -57.49999999989738}, {"input": [-57.5, -80.0], "expected": -57.49999999983081}, {"input": [-57.5, -79.5], "expected": -57.499999999721055}, {"input": [-57.5, -79.0], "expected": -57.499999999540094}, {"input": [-57.5, -78.5], "expected": -57.499999999241744}, {"input": [-57.5, -78.0], "expected": -57.49999999874985}, {"input": [-57.5, -77.5], "expected": -57.49999999793884}, {"input": [-57.5, -77.0], "expected": -57.49999999660173}, {"input": [-57.5, -76.5], "expected": -57.49999999439721}, {"input": [-57.5, -76.0], "expected": -57.499999990762554}, {"input": [-57.5, -75.5], "expected": -57.49999998477002}, {"input": [-57.5, -75.0], "expected": -57.49999997489001}, {"input": [-57.5, -74.5], "expected": -57.499999958600625}, {"input": [-57.5, -74.0], "expected": -57.49999993174397}, {"input": [-57.5, -73.5], "expected": -57.49999988746483}, {"input": [-57.5, -73.0], "expected": -57.49999981446088}, {"input": [-57.5, -72.5], "expected": -57.499999694097724}, {"input": [-57.5, -72.0], "expected": -57.49999949565247}, {"input": [-57.5, -71.5], "expected": -57.499999168471625}, {"input": [-57.5, -71.0], "expected": -57.499998629041855}, {"input": [-57.5, -70.5], "expected": -57.49999773967315}, {"input": [-57.5, -70.0], "expected": -57.49999627335377}, {"input": [-57.5, -69.5], "expected": -57.49999385580652}, {"input": [-57.5, -69.0], "expected": -57.49998986995771}, {"input": [-57.5, -68.5], "expected": -57.49998329843868}, {"input": [-57.5, -68.0], "expected": -57.49997246392977}, {"input": [-57.5, -67.5], "expected": -57.49995460110078}, {"input": [-57.5, -67.0], "expected": -57.49992515097137}, {"input": [-57.5, -66.5], "expected": -57.49987659781028}, {"input": [-57.5, -66.0], "expected": -57.49979655232787}, {"input": [-57.5, -65.5], "expected": -57.4996645936271}, {"input": [-57.5, -65.0], "expected": -57.49944706852464}, {"input": [-57.5, -64.5], "expected": -57.49908853354623}, {"input": [-57.5, -64.0], "expected": -57.49849768984024}, {"input": [-57.5, -63.5], "expected": -57.49752431486227}, {"input": [-57.5, -63.0], "expected": -57.49592155672943}, {"input": [-57.5, -62.5], "expected": -57.49328465151088}, {"input": [-57.5, -62.0], "expected": -57.4889522551514}, {"input": [-57.5, -61.5], "expected": -57.48185007208219}, {"input": [-57.5, -61.0], "expected": -57.47024958172738}, {"input": [-57.5, -60.5], "expected": -57.451412648426256}, {"input": [-57.5, -60.0], "expected": -57.42111026570745}, {"input": [-57.5, -59.5], "expected": -57.37307198895703}, {"input": [-57.5, -59.0], "expected": -57.29858672201725}, {"input": [-57.5, -58.5], "expected": -57.18673831248178}, {"input": [-57.5, -58.0], "expected": -57.02592301581989}, {"input": [-57.5, -57.5], "expected": -56.80685281944005}, {"input": [-57.5, -57.0], "expected": -56.52592301581989}, {"input": [-57.5, -56.5], "expected": -56.18673831248178}, {"input": [-57.5, -56.0], "expected": -55.79858672201725}, {"input": [-57.5, -55.5], "expected": -55.37307198895703}, {"input": [-57.5, -55.0], "expected": -54.92111026570745}, {"input": [-57.5, -54.5], "expected": -54.451412648426256}, {"input": [-57.5, -54.0], "expected": -53.97024958172738}, {"input": [-57.5, -53.5], "expected": -53.48185007208219}, {"input": [-57.5, -53.0], "expected": -52.9889522551514}, {"input": [-57.5, -52.5], "expected": -52.49328465151088}, {"input": [-57.5, -52.0], "expected": -51.99592155672943}, {"input": [-57.5, -51.5], "expected": -51.49752431486227}, {"input": [-57.5, -51.0], "expected": -50.99849768984024}, {"input": [-57.5, -50.5], "expected": -50.49908853354623}, {"input": [-57.5, -50.0], "expected": -49.99944706852464}, {"input": [-57.5, -49.5], "expected": -49.4996645936271}, {"input": [-57.5, -49.0], "expected": -48.99979655232787}, {"input": [-57.5, -48.5], "expected": -48.49987659781028}, {"input": [-57.5, -48.0], "expected": -47.99992515097137}, {"input": [-57.5, -47.5], "expected": -47.49995460110078}, {"input": [-57.5, -47.0], "expected": -46.99997246392977}, {"input": [-57.5, -46.5], "expected": -46.49998329843868}, {"input": [-57.5, -46.0], "expected": -45.99998986995771}, {"input": [-57.5, -45.5], "expected": -45.49999385580652}, {"input": [-57.5, -45.0], "expected": -44.99999627335377}, {"input": [-57.5, -44.5], "expected": -44.49999773967315}, {"input": [-57.5, -44.0], "expected": -43.999998629041855}, {"input": [-57.5, -43.5], "expected": -43.499999168471625}, {"input": [-57.5, -43.0], "expected": -42.99999949565247}, {"input": [-57.5, -42.5], "expected": -42.499999694097724}, {"input": [-57.5, -42.0], "expected": -41.99999981446088}, {"input": [-57.5, -41.5], "expected": -41.49999988746483}, {"input": [-57.5, -41.0], "expected": -40.99999993174397}, {"input": [-57.5, -40.5], "expected": -40.499999958600625}, {"input": [-57.5, -40.0], "expected": -39.99999997489001}, {"input": [-57.5, -39.5], "expected": -39.49999998477002}, {"input": [-57.5, -39.0], "expected": -38.999999990762554}, {"input": [-57.5, -38.5], "expected": -38.49999999439721}, {"input": [-57.5, -38.0], "expected": -37.99999999660173}, {"input": [-57.5, -37.5], "expected": -37.49999999793884}, {"input": [-57.5, -37.0], "expected": -36.99999999874985}, {"input": [-57.5, -36.5], "expected": -36.499999999241744}, {"input": [-57.5, -36.0], "expected": -35.999999999540094}, {"input": [-57.5, -35.5], "expected": -35.499999999721055}, {"input": [-57.5, -35.0], "expected": -34.99999999983081}, {"input": [-57.5, -34.5], "expected": -34.49999999989738}, {"input": [-57.5, -34.0], "expected": -33.99999999993776}, {"input": [-57.5, -33.5], "expected": -33.49999999996225}, {"input": [-57.5, -33.0], "expected": -32.9999999999771}, {"input": [-57.5, -32.5], "expected": -32.49999999998611}, {"input": [-57.5, -32.0], "expected": -31.999999999991577}, {"input": [-57.5, -31.5], "expected": -31.49999999999489}, {"input": [-57.5, -31.0], "expected": -30.999999999996902}, {"input": [-57.5, -30.5], "expected": -30.49999999999812}, {"input": [-57.5, -30.0], "expected": -29.99999999999886}, {"input": [-57.5, -29.5], "expected": -29.499999999999307}, {"input": [-57.5, -29.0], "expected": -28.99999999999958}, {"input": [-57.5, -28.5], "expected": -28.499999999999744}, {"input": [-57.5, -28.0], "expected": -27.999999999999847}, {"input": [-57.5, -27.5], "expected": -27.499999999999908}, {"input": [-57.5, -27.0], "expected": -26.999999999999943}, {"input": [-57.5, -26.5], "expected": -26.499999999999964}, {"input": [-57.5, -26.0], "expected": -25.99999999999998}, {"input": [-57.5, -25.5], "expected": -25.499999999999986}, {"input": [-57.5, -25.0], "expected": -24.999999999999993}, {"input": [-57.5, -24.5], "expected": -24.499999999999996}, {"input": [-57.5, -24.0], "expected": -23.999999999999996}, {"input": [-57.5, -23.5], "expected": -23.5}, {"input": [-57.5, -23.0], "expected": -23.0}, {"input": [-57.5, -22.5], "expected": -22.5}, {"input": [-57.5, -22.0], "expected": -22.0}, {"input": [-57.5, -21.5], "expected": -21.5}, {"input": [-57.5, -21.0], "expected": -21.0}, {"input": [-57.5, -20.5], "expected": -20.5}, {"input": [-57.5, -20.0], "expected": -20.0}, {"input": [-57.5, -19.5], "expected": -19.5}, {"input": [-57.5, -19.0], "expected": -19.0}, {"input": [-57.5, -18.5], "expected": -18.5}, {"input": [-57.5, -18.0], "expected": -18.0}, {"input": [-57.5, -17.5], "expected": -17.5}, {"input": [-57.5, -17.0], "expected": -17.0}, {"input": [-57.5, -16.5], "expected": -16.5}, {"input": [-57.5, -16.0], "expected": -16.0}, {"input": [-57.5, -15.5], "expected": -15.5}, {"input": [-57.5, -15.0], "expected": -15.0}, {"input": [-57.5, -14.5], "expected": -14.5}, {"input": [-57.5, -14.0], "expected": -14.0}, {"input": [-57.5, -13.5], "expected": -13.5}, {"input": [-57.5, -13.0], "expected": -13.0}, {"input": [-57.5, -12.5], "expected": -12.5}, {"input": [-57.5, -12.0], "expected": -12.0}, {"input": [-57.5, -11.5], "expected": -11.5}, {"input": [-57.5, -11.0], "expected": -11.0}, {"input": [-57.5, -10.5], "expected": -10.5}, {"input": [-57.5, -10.0], "expected": -10.0}, {"input": [-57.5, -9.5], "expected": -9.5}, {"input": [-57.5, -9.0], "expected": -9.0}, {"input": [-57.5, -8.5], "expected": -8.5}, {"input": [-57.5, -8.0], "expected": -8.0}, {"input": [-57.5, -7.5], "expected": -7.5}, {"input": [-57.5, -7.0], "expected": -7.0}, {"input": [-57.5, -6.5], "expected": -6.5}, {"input": [-57.5, -6.0], "expected": -6.0}, {"input": [-57.5, -5.5], "expected": -5.5}, {"input": [-57.5, -5.0], "expected": -5.0}, {"input": [-57.5, -4.5], "expected": -4.5}, {"input": [-57.5, -4.0], "expected": -4.0}, {"input": [-57.5, -3.5], "expected": -3.5}, {"input": [-57.5, -3.0], "expected": -3.0}, {"input": [-57.5, -2.5], "expected": -2.5}, {"input": [-57.5, -2.0], "expected": -2.0}, {"input": [-57.5, -1.5], "expected": -1.5}, {"input": [-57.5, -1.0], "expected": -1.0}, {"input": [-57.5, -0.5], "expected": -0.5}, {"input": [-57.5, 0.0], "expected": 1.0667613948338533e-25}, {"input": [-57.5, 0.5], "expected": 0.5}, {"input": [-57.5, 1.0], "expected": 1.0}, {"input": [-57.5, 1.5], "expected": 1.5}, {"input": [-57.5, 2.0], "expected": 2.0}, {"input": [-57.5, 2.5], "expected": 2.5}, {"input": [-57.5, 3.0], "expected": 3.0}, {"input": [-57.5, 3.5], "expected": 3.5}, {"input": [-57.5, 4.0], "expected": 4.0}, {"input": [-57.5, 4.5], "expected": 4.5}, {"input": [-57.5, 5.0], "expected": 5.0}, {"input": [-57.5, 5.5], "expected": 5.5}, {"input": [-57.5, 6.0], "expected": 6.0}, {"input": [-57.5, 6.5], "expected": 6.5}, {"input": [-57.5, 7.0], "expected": 7.0}, {"input": [-57.5, 7.5], "expected": 7.5}, {"input": [-57.5, 8.0], "expected": 8.0}, {"input": [-57.5, 8.5], "expected": 8.5}, {"input": [-57.5, 9.0], "expected": 9.0}, {"input": [-57.5, 9.5], "expected": 9.5}, {"input": [-57.5, 10.0], "expected": 10.0}, {"input": [-57.5, 10.5], "expected": 10.5}, {"input": [-57.5, 11.0], "expected": 11.0}, {"input": [-57.5, 11.5], "expected": 11.5}, {"input": [-57.5, 12.0], "expected": 12.0}, {"input": [-57.5, 12.5], "expected": 12.5}, {"input": [-57.5, 13.0], "expected": 13.0}, {"input": [-57.5, 13.5], "expected": 13.5}, {"input": [-57.5, 14.0], "expected": 14.0}, {"input": [-57.5, 14.5], "expected": 14.5}, {"input": [-57.5, 15.0], "expected": 15.0}, {"input": [-57.5, 15.5], "expected": 15.5}, {"input": [-57.5, 16.0], "expected": 16.0}, {"input": [-57.5, 16.5], "expected": 16.5}, {"input": [-57.5, 17.0], "expected": 17.0}, {"input": [-57.5, 17.5], "expected": 17.5}, {"input": [-57.5, 18.0], "expected": 18.0}, {"input": [-57.5, 18.5], "expected": 18.5}, {"input": [-57.5, 19.0], "expected": 19.0}, {"input": [-57.5, 19.5], "expected": 19.5}, {"input": [-57.5, 20.0], "expected": 20.0}, {"input": [-57.5, 20.5], "expected": 20.5}, {"input": [-57.5, 21.0], "expected": 21.0}, {"input": [-57.5, 21.5], "expected": 21.5}, {"input": [-57.5, 22.0], "expected": 22.0}, {"input": [-57.5, 22.5], "expected": 22.5}, {"input": [-57.5, 23.0], "expected": 23.0}, {"input": [-57.5, 23.5], "expected": 23.5}, {"input": [-57.5, 24.0], "expected": 24.0}, {"input": [-57.5, 24.5], "expected": 24.5}, {"input": [-57.5, 25.0], "expected": 25.0}, {"input": [-57.5, 25.5], "expected": 25.5}, {"input": [-57.5, 26.0], "expected": 26.0}, {"input": [-57.5, 26.5], "expected": 26.5}, {"input": [-57.5, 27.0], "expected": 27.0}, {"input": [-57.5, 27.5], "expected": 27.5}, {"input": [-57.5, 28.0], "expected": 28.0}, {"input": [-57.5, 28.5], "expected": 28.5}, {"input": [-57.5, 29.0], "expected": 29.0}, {"input": [-57.5, 29.5], "expected": 29.5}, {"input": [-57.5, 30.0], "expected": 30.0}, {"input": [-57.5, 30.5], "expected": 30.5}, {"input": [-57.5, 31.0], "expected": 31.0}, {"input": [-57.5, 31.5], "expected": 31.5}, {"input": [-57.5, 32.0], "expected": 32.0}, {"input": [-57.5, 32.5], "expected": 32.5}, {"input": [-57.5, 33.0], "expected": 33.0}, {"input": [-57.5, 33.5], "expected": 33.5}, {"input": [-57.5, 34.0], "expected": 34.0}, {"input": [-57.5, 34.5], "expected": 34.5}, {"input": [-57.5, 35.0], "expected": 35.0}, {"input": [-57.5, 35.5], "expected": 35.5}, {"input": [-57.5, 36.0], "expected": 36.0}, {"input": [-57.5, 36.5], "expected": 36.5}, {"input": [-57.5, 37.0], "expected": 37.0}, {"input": [-57.5, 37.5], "expected": 37.5}, {"input": [-57.5, 38.0], "expected": 38.0}, {"input": [-57.5, 38.5], "expected": 38.5}, {"input": [-57.5, 39.0], "expected": 39.0}, {"input": [-57.5, 39.5], "expected": 39.5}, {"input": [-57.5, 40.0], "expected": 40.0}, {"input": [-57.5, 40.5], "expected": 40.5}, {"input": [-57.5, 41.0], "expected": 41.0}, {"input": [-57.5, 41.5], "expected": 41.5}, {"input": [-57.5, 42.0], "expected": 42.0}, {"input": [-57.5, 42.5], "expected": 42.5}, {"input": [-57.5, 43.0], "expected": 43.0}, {"input": [-57.5, 43.5], "expected": 43.5}, {"input": [-57.5, 44.0], "expected": 44.0}, {"input": [-57.5, 44.5], "expected": 44.5}, {"input": [-57.5, 45.0], "expected": 45.0}, {"input": [-57.5, 45.5], "expected": 45.5}, {"input": [-57.5, 46.0], "expected": 46.0}, {"input": [-57.5, 46.5], "expected": 46.5}, {"input": [-57.5, 47.0], "expected": 47.0}, {"input": [-57.5, 47.5], "expected": 47.5}, {"input": [-57.5, 48.0], "expected": 48.0}, {"input": [-57.5, 48.5], "expected": 48.5}, {"input": [-57.5, 49.0], "expected": 49.0}, {"input": [-57.5, 49.5], "expected": 49.5}, {"input": [-57.5, 50.0], "expected": 50.0}, {"input": [-57.5, 50.5], "expected": 50.5}, {"input": [-57.5, 51.0], "expected": 51.0}, {"input": [-57.5, 51.5], "expected": 51.5}, {"input": [-57.5, 52.0], "expected": 52.0}, {"input": [-57.5, 52.5], "expected": 52.5}, {"input": [-57.5, 53.0], "expected": 53.0}, {"input": [-57.5, 53.5], "expected": 53.5}, {"input": [-57.5, 54.0], "expected": 54.0}, {"input": [-57.5, 54.5], "expected": 54.5}, {"input": [-57.5, 55.0], "expected": 55.0}, {"input": [-57.5, 55.5], "expected": 55.5}, {"input": [-57.5, 56.0], "expected": 56.0}, {"input": [-57.5, 56.5], "expected": 56.5}, {"input": [-57.5, 57.0], "expected": 57.0}, {"input": [-57.5, 57.5], "expected": 57.5}, {"input": [-57.5, 58.0], "expected": 58.0}, {"input": [-57.5, 58.5], "expected": 58.5}, {"input": [-57.5, 59.0], "expected": 59.0}, {"input": [-57.5, 59.5], "expected": 59.5}, {"input": [-57.5, 60.0], "expected": 60.0}, {"input": [-57.5, 60.5], "expected": 60.5}, {"input": [-57.5, 61.0], "expected": 61.0}, {"input": [-57.5, 61.5], "expected": 61.5}, {"input": [-57.5, 62.0], "expected": 62.0}, {"input": [-57.5, 62.5], "expected": 62.5}, {"input": [-57.5, 63.0], "expected": 63.0}, {"input": [-57.5, 63.5], "expected": 63.5}, {"input": [-57.5, 64.0], "expected": 64.0}, {"input": [-57.5, 64.5], "expected": 64.5}, {"input": [-57.5, 65.0], "expected": 65.0}, {"input": [-57.5, 65.5], "expected": 65.5}, {"input": [-57.5, 66.0], "expected": 66.0}, {"input": [-57.5, 66.5], "expected": 66.5}, {"input": [-57.5, 67.0], "expected": 67.0}, {"input": [-57.5, 67.5], "expected": 67.5}, {"input": [-57.5, 68.0], "expected": 68.0}, {"input": [-57.5, 68.5], "expected": 68.5}, {"input": [-57.5, 69.0], "expected": 69.0}, {"input": [-57.5, 69.5], "expected": 69.5}, {"input": [-57.5, 70.0], "expected": 70.0}, {"input": [-57.5, 70.5], "expected": 70.5}, {"input": [-57.5, 71.0], "expected": 71.0}, {"input": [-57.5, 71.5], "expected": 71.5}, {"input": [-57.5, 72.0], "expected": 72.0}, {"input": [-57.5, 72.5], "expected": 72.5}, {"input": [-57.5, 73.0], "expected": 73.0}, {"input": [-57.5, 73.5], "expected": 73.5}, {"input": [-57.5, 74.0], "expected": 74.0}, {"input": [-57.5, 74.5], "expected": 74.5}, {"input": [-57.5, 75.0], "expected": 75.0}, {"input": [-57.5, 75.5], "expected": 75.5}, {"input": [-57.5, 76.0], "expected": 76.0}, {"input": [-57.5, 76.5], "expected": 76.5}, {"input": [-57.5, 77.0], "expected": 77.0}, {"input": [-57.5, 77.5], "expected": 77.5}, {"input": [-57.5, 78.0], "expected": 78.0}, {"input": [-57.5, 78.5], "expected": 78.5}, {"input": [-57.5, 79.0], "expected": 79.0}, {"input": [-57.5, 79.5], "expected": 79.5}, {"input": [-57.5, 80.0], "expected": 80.0}, {"input": [-57.5, 80.5], "expected": 80.5}, {"input": [-57.5, 81.0], "expected": 81.0}, {"input": [-57.5, 81.5], "expected": 81.5}, {"input": [-57.5, 82.0], "expected": 82.0}, {"input": [-57.5, 82.5], "expected": 82.5}, {"input": [-57.5, 83.0], "expected": 83.0}, {"input": [-57.5, 83.5], "expected": 83.5}, {"input": [-57.5, 84.0], "expected": 84.0}, {"input": [-57.5, 84.5], "expected": 84.5}, {"input": [-57.5, 85.0], "expected": 85.0}, {"input": [-57.5, 85.5], "expected": 85.5}, {"input": [-57.5, 86.0], "expected": 86.0}, {"input": [-57.5, 86.5], "expected": 86.5}, {"input": [-57.5, 87.0], "expected": 87.0}, {"input": [-57.5, 87.5], "expected": 87.5}, {"input": [-57.5, 88.0], "expected": 88.0}, {"input": [-57.5, 88.5], "expected": 88.5}, {"input": [-57.5, 89.0], "expected": 89.0}, {"input": [-57.5, 89.5], "expected": 89.5}, {"input": [-57.5, 90.0], "expected": 90.0}, {"input": [-57.5, 90.5], "expected": 90.5}, {"input": [-57.5, 91.0], "expected": 91.0}, {"input": [-57.5, 91.5], "expected": 91.5}, {"input": [-57.5, 92.0], "expected": 92.0}, {"input": [-57.5, 92.5], "expected": 92.5}, {"input": [-57.5, 93.0], "expected": 93.0}, {"input": [-57.5, 93.5], "expected": 93.5}, {"input": [-57.5, 94.0], "expected": 94.0}, {"input": [-57.5, 94.5], "expected": 94.5}, {"input": [-57.5, 95.0], "expected": 95.0}, {"input": [-57.5, 95.5], "expected": 95.5}, {"input": [-57.5, 96.0], "expected": 96.0}, {"input": [-57.5, 96.5], "expected": 96.5}, {"input": [-57.5, 97.0], "expected": 97.0}, {"input": [-57.5, 97.5], "expected": 97.5}, {"input": [-57.5, 98.0], "expected": 98.0}, {"input": [-57.5, 98.5], "expected": 98.5}, {"input": [-57.5, 99.0], "expected": 99.0}, {"input": [-57.5, 99.5], "expected": 99.5}, {"input": [-57.0, -100.0], "expected": -57.0}, {"input": [-57.0, -99.5], "expected": -57.0}, {"input": [-57.0, -99.0], "expected": -57.0}, {"input": [-57.0, -98.5], "expected": -57.0}, {"input": [-57.0, -98.0], "expected": -57.0}, {"input": [-57.0, -97.5], "expected": -57.0}, {"input": [-57.0, -97.0], "expected": -57.0}, {"input": [-57.0, -96.5], "expected": -57.0}, {"input": [-57.0, -96.0], "expected": -57.0}, {"input": [-57.0, -95.5], "expected": -57.0}, {"input": [-57.0, -95.0], "expected": -57.0}, {"input": [-57.0, -94.5], "expected": -57.0}, {"input": [-57.0, -94.0], "expected": -57.0}, {"input": [-57.0, -93.5], "expected": -57.0}, {"input": [-57.0, -93.0], "expected": -57.0}, {"input": [-57.0, -92.5], "expected": -57.0}, {"input": [-57.0, -92.0], "expected": -57.0}, {"input": [-57.0, -91.5], "expected": -57.0}, {"input": [-57.0, -91.0], "expected": -57.0}, {"input": [-57.0, -90.5], "expected": -57.0}, {"input": [-57.0, -90.0], "expected": -56.99999999999999}, {"input": [-57.0, -89.5], "expected": -56.99999999999999}, {"input": [-57.0, -89.0], "expected": -56.999999999999986}, {"input": [-57.0, -88.5], "expected": -56.99999999999998}, {"input": [-57.0, -88.0], "expected": -56.999999999999964}, {"input": [-57.0, -87.5], "expected": -56.99999999999994}, {"input": [-57.0, -87.0], "expected": -56.99999999999991}, {"input": [-57.0, -86.5], "expected": -56.999999999999844}, {"input": [-57.0, -86.0], "expected": -56.999999999999744}, {"input": [-57.0, -85.5], "expected": -56.99999999999958}, {"input": [-57.0, -85.0], "expected": -56.99999999999931}, {"input": [-57.0, -84.5], "expected": -56.99999999999886}, {"input": [-57.0, -84.0], "expected": -56.99999999999812}, {"input": [-57.0, -83.5], "expected": -56.9999999999969}, {"input": [-57.0, -83.0], "expected": -56.99999999999489}, {"input": [-57.0, -82.5], "expected": -56.99999999999158}, {"input": [-57.0, -82.0], "expected": -56.99999999998611}, {"input": [-57.0, -81.5], "expected": -56.9999999999771}, {"input": [-57.0, -81.0], "expected": -56.99999999996225}, {"input": [-57.0, -80.5], "expected": -56.99999999993776}, {"input": [-57.0, -80.0], "expected": -56.99999999989738}, {"input": [-57.0, -79.5], "expected": -56.99999999983081}, {"input": [-57.0, -79.0], "expected": -56.999999999721055}, {"input": [-57.0, -78.5], "expected": -56.999999999540094}, {"input": [-57.0, -78.0], "expected": -56.999999999241744}, {"input": [-57.0, -77.5], "expected": -56.99999999874985}, {"input": [-57.0, -77.0], "expected": -56.99999999793884}, {"input": [-57.0, -76.5], "expected": -56.99999999660173}, {"input": [-57.0, -76.0], "expected": -56.99999999439721}, {"input": [-57.0, -75.5], "expected": -56.999999990762554}, {"input": [-57.0, -75.0], "expected": -56.99999998477002}, {"input": [-57.0, -74.5], "expected": -56.99999997489001}, {"input": [-57.0, -74.0], "expected": -56.999999958600625}, {"input": [-57.0, -73.5], "expected": -56.99999993174397}, {"input": [-57.0, -73.0], "expected": -56.99999988746483}, {"input": [-57.0, -72.5], "expected": -56.99999981446088}, {"input": [-57.0, -72.0], "expected": -56.999999694097724}, {"input": [-57.0, -71.5], "expected": -56.99999949565247}, {"input": [-57.0, -71.0], "expected": -56.999999168471625}, {"input": [-57.0, -70.5], "expected": -56.999998629041855}, {"input": [-57.0, -70.0], "expected": -56.99999773967315}, {"input": [-57.0, -69.5], "expected": -56.99999627335377}, {"input": [-57.0, -69.0], "expected": -56.99999385580652}, {"input": [-57.0, -68.5], "expected": -56.99998986995771}, {"input": [-57.0, -68.0], "expected": -56.99998329843868}, {"input": [-57.0, -67.5], "expected": -56.99997246392977}, {"input": [-57.0, -67.0], "expected": -56.99995460110078}, {"input": [-57.0, -66.5], "expected": -56.99992515097137}, {"input": [-57.0, -66.0], "expected": -56.99987659781028}, {"input": [-57.0, -65.5], "expected": -56.99979655232787}, {"input": [-57.0, -65.0], "expected": -56.9996645936271}, {"input": [-57.0, -64.5], "expected": -56.99944706852464}, {"input": [-57.0, -64.0], "expected": -56.99908853354623}, {"input": [-57.0, -63.5], "expected": -56.99849768984024}, {"input": [-57.0, -63.0], "expected": -56.99752431486227}, {"input": [-57.0, -62.5], "expected": -56.99592155672943}, {"input": [-57.0, -62.0], "expected": -56.99328465151088}, {"input": [-57.0, -61.5], "expected": -56.9889522551514}, {"input": [-57.0, -61.0], "expected": -56.98185007208219}, {"input": [-57.0, -60.5], "expected": -56.97024958172738}, {"input": [-57.0, -60.0], "expected": -56.951412648426256}, {"input": [-57.0, -59.5], "expected": -56.92111026570745}, {"input": [-57.0, -59.0], "expected": -56.87307198895703}, {"input": [-57.0, -58.5], "expected": -56.79858672201725}, {"input": [-57.0, -58.0], "expected": -56.68673831248178}, {"input": [-57.0, -57.5], "expected": -56.52592301581989}, {"input": [-57.0, -57.0], "expected": -56.30685281944005}, {"input": [-57.0, -56.5], "expected": -56.02592301581989}, {"input": [-57.0, -56.0], "expected": -55.68673831248178}, {"input": [-57.0, -55.5], "expected": -55.29858672201725}, {"input": [-57.0, -55.0], "expected": -54.87307198895703}, {"input": [-57.0, -54.5], "expected": -54.42111026570745}, {"input": [-57.0, -54.0], "expected": -53.951412648426256}, {"input": [-57.0, -53.5], "expected": -53.47024958172738}, {"input": [-57.0, -53.0], "expected": -52.98185007208219}, {"input": [-57.0, -52.5], "expected": -52.4889522551514}, {"input": [-57.0, -52.0], "expected": -51.99328465151088}, {"input": [-57.0, -51.5], "expected": -51.49592155672943}, {"input": [-57.0, -51.0], "expected": -50.99752431486227}, {"input": [-57.0, -50.5], "expected": -50.49849768984024}, {"input": [-57.0, -50.0], "expected": -49.99908853354623}, {"input": [-57.0, -49.5], "expected": -49.49944706852464}, {"input": [-57.0, -49.0], "expected": -48.9996645936271}, {"input": [-57.0, -48.5], "expected": -48.49979655232787}, {"input": [-57.0, -48.0], "expected": -47.99987659781028}, {"input": [-57.0, -47.5], "expected": -47.49992515097137}, {"input": [-57.0, -47.0], "expected": -46.99995460110078}, {"input": [-57.0, -46.5], "expected": -46.49997246392977}, {"input": [-57.0, -46.0], "expected": -45.99998329843868}, {"input": [-57.0, -45.5], "expected": -45.49998986995771}, {"input": [-57.0, -45.0], "expected": -44.99999385580652}, {"input": [-57.0, -44.5], "expected": -44.49999627335377}, {"input": [-57.0, -44.0], "expected": -43.99999773967315}, {"input": [-57.0, -43.5], "expected": -43.499998629041855}, {"input": [-57.0, -43.0], "expected": -42.999999168471625}, {"input": [-57.0, -42.5], "expected": -42.49999949565247}, {"input": [-57.0, -42.0], "expected": -41.999999694097724}, {"input": [-57.0, -41.5], "expected": -41.49999981446088}, {"input": [-57.0, -41.0], "expected": -40.99999988746483}, {"input": [-57.0, -40.5], "expected": -40.49999993174397}, {"input": [-57.0, -40.0], "expected": -39.999999958600625}, {"input": [-57.0, -39.5], "expected": -39.49999997489001}, {"input": [-57.0, -39.0], "expected": -38.99999998477002}, {"input": [-57.0, -38.5], "expected": -38.499999990762554}, {"input": [-57.0, -38.0], "expected": -37.99999999439721}, {"input": [-57.0, -37.5], "expected": -37.49999999660173}, {"input": [-57.0, -37.0], "expected": -36.99999999793884}, {"input": [-57.0, -36.5], "expected": -36.49999999874985}, {"input": [-57.0, -36.0], "expected": -35.999999999241744}, {"input": [-57.0, -35.5], "expected": -35.499999999540094}, {"input": [-57.0, -35.0], "expected": -34.999999999721055}, {"input": [-57.0, -34.5], "expected": -34.49999999983081}, {"input": [-57.0, -34.0], "expected": -33.99999999989738}, {"input": [-57.0, -33.5], "expected": -33.49999999993776}, {"input": [-57.0, -33.0], "expected": -32.99999999996225}, {"input": [-57.0, -32.5], "expected": -32.4999999999771}, {"input": [-57.0, -32.0], "expected": -31.999999999986112}, {"input": [-57.0, -31.5], "expected": -31.499999999991577}, {"input": [-57.0, -31.0], "expected": -30.99999999999489}, {"input": [-57.0, -30.5], "expected": -30.499999999996902}, {"input": [-57.0, -30.0], "expected": -29.99999999999812}, {"input": [-57.0, -29.5], "expected": -29.49999999999886}, {"input": [-57.0, -29.0], "expected": -28.999999999999307}, {"input": [-57.0, -28.5], "expected": -28.49999999999958}, {"input": [-57.0, -28.0], "expected": -27.999999999999744}, {"input": [-57.0, -27.5], "expected": -27.499999999999847}, {"input": [-57.0, -27.0], "expected": -26.999999999999908}, {"input": [-57.0, -26.5], "expected": -26.499999999999943}, {"input": [-57.0, -26.0], "expected": -25.999999999999964}, {"input": [-57.0, -25.5], "expected": -25.49999999999998}, {"input": [-57.0, -25.0], "expected": -24.999999999999986}, {"input": [-57.0, -24.5], "expected": -24.499999999999993}, {"input": [-57.0, -24.0], "expected": -23.999999999999996}, {"input": [-57.0, -23.5], "expected": -23.499999999999996}, {"input": [-57.0, -23.0], "expected": -23.0}, {"input": [-57.0, -22.5], "expected": -22.5}, {"input": [-57.0, -22.0], "expected": -22.0}, {"input": [-57.0, -21.5], "expected": -21.5}, {"input": [-57.0, -21.0], "expected": -21.0}, {"input": [-57.0, -20.5], "expected": -20.5}, {"input": [-57.0, -20.0], "expected": -20.0}, {"input": [-57.0, -19.5], "expected": -19.5}, {"input": [-57.0, -19.0], "expected": -19.0}, {"input": [-57.0, -18.5], "expected": -18.5}, {"input": [-57.0, -18.0], "expected": -18.0}, {"input": [-57.0, -17.5], "expected": -17.5}, {"input": [-57.0, -17.0], "expected": -17.0}, {"input": [-57.0, -16.5], "expected": -16.5}, {"input": [-57.0, -16.0], "expected": -16.0}, {"input": [-57.0, -15.5], "expected": -15.5}, {"input": [-57.0, -15.0], "expected": -15.0}, {"input": [-57.0, -14.5], "expected": -14.5}, {"input": [-57.0, -14.0], "expected": -14.0}, {"input": [-57.0, -13.5], "expected": -13.5}, {"input": [-57.0, -13.0], "expected": -13.0}, {"input": [-57.0, -12.5], "expected": -12.5}, {"input": [-57.0, -12.0], "expected": -12.0}, {"input": [-57.0, -11.5], "expected": -11.5}, {"input": [-57.0, -11.0], "expected": -11.0}, {"input": [-57.0, -10.5], "expected": -10.5}, {"input": [-57.0, -10.0], "expected": -10.0}, {"input": [-57.0, -9.5], "expected": -9.5}, {"input": [-57.0, -9.0], "expected": -9.0}, {"input": [-57.0, -8.5], "expected": -8.5}, {"input": [-57.0, -8.0], "expected": -8.0}, {"input": [-57.0, -7.5], "expected": -7.5}, {"input": [-57.0, -7.0], "expected": -7.0}, {"input": [-57.0, -6.5], "expected": -6.5}, {"input": [-57.0, -6.0], "expected": -6.0}, {"input": [-57.0, -5.5], "expected": -5.5}, {"input": [-57.0, -5.0], "expected": -5.0}, {"input": [-57.0, -4.5], "expected": -4.5}, {"input": [-57.0, -4.0], "expected": -4.0}, {"input": [-57.0, -3.5], "expected": -3.5}, {"input": [-57.0, -3.0], "expected": -3.0}, {"input": [-57.0, -2.5], "expected": -2.5}, {"input": [-57.0, -2.0], "expected": -2.0}, {"input": [-57.0, -1.5], "expected": -1.5}, {"input": [-57.0, -1.0], "expected": -1.0}, {"input": [-57.0, -0.5], "expected": -0.5}, {"input": [-57.0, 0.0], "expected": 1.7587922024243116e-25}, {"input": [-57.0, 0.5], "expected": 0.5}, {"input": [-57.0, 1.0], "expected": 1.0}, {"input": [-57.0, 1.5], "expected": 1.5}, {"input": [-57.0, 2.0], "expected": 2.0}, {"input": [-57.0, 2.5], "expected": 2.5}, {"input": [-57.0, 3.0], "expected": 3.0}, {"input": [-57.0, 3.5], "expected": 3.5}, {"input": [-57.0, 4.0], "expected": 4.0}, {"input": [-57.0, 4.5], "expected": 4.5}, {"input": [-57.0, 5.0], "expected": 5.0}, {"input": [-57.0, 5.5], "expected": 5.5}, {"input": [-57.0, 6.0], "expected": 6.0}, {"input": [-57.0, 6.5], "expected": 6.5}, {"input": [-57.0, 7.0], "expected": 7.0}, {"input": [-57.0, 7.5], "expected": 7.5}, {"input": [-57.0, 8.0], "expected": 8.0}, {"input": [-57.0, 8.5], "expected": 8.5}, {"input": [-57.0, 9.0], "expected": 9.0}, {"input": [-57.0, 9.5], "expected": 9.5}, {"input": [-57.0, 10.0], "expected": 10.0}, {"input": [-57.0, 10.5], "expected": 10.5}, {"input": [-57.0, 11.0], "expected": 11.0}, {"input": [-57.0, 11.5], "expected": 11.5}, {"input": [-57.0, 12.0], "expected": 12.0}, {"input": [-57.0, 12.5], "expected": 12.5}, {"input": [-57.0, 13.0], "expected": 13.0}, {"input": [-57.0, 13.5], "expected": 13.5}, {"input": [-57.0, 14.0], "expected": 14.0}, {"input": [-57.0, 14.5], "expected": 14.5}, {"input": [-57.0, 15.0], "expected": 15.0}, {"input": [-57.0, 15.5], "expected": 15.5}, {"input": [-57.0, 16.0], "expected": 16.0}, {"input": [-57.0, 16.5], "expected": 16.5}, {"input": [-57.0, 17.0], "expected": 17.0}, {"input": [-57.0, 17.5], "expected": 17.5}, {"input": [-57.0, 18.0], "expected": 18.0}, {"input": [-57.0, 18.5], "expected": 18.5}, {"input": [-57.0, 19.0], "expected": 19.0}, {"input": [-57.0, 19.5], "expected": 19.5}, {"input": [-57.0, 20.0], "expected": 20.0}, {"input": [-57.0, 20.5], "expected": 20.5}, {"input": [-57.0, 21.0], "expected": 21.0}, {"input": [-57.0, 21.5], "expected": 21.5}, {"input": [-57.0, 22.0], "expected": 22.0}, {"input": [-57.0, 22.5], "expected": 22.5}, {"input": [-57.0, 23.0], "expected": 23.0}, {"input": [-57.0, 23.5], "expected": 23.5}, {"input": [-57.0, 24.0], "expected": 24.0}, {"input": [-57.0, 24.5], "expected": 24.5}, {"input": [-57.0, 25.0], "expected": 25.0}, {"input": [-57.0, 25.5], "expected": 25.5}, {"input": [-57.0, 26.0], "expected": 26.0}, {"input": [-57.0, 26.5], "expected": 26.5}, {"input": [-57.0, 27.0], "expected": 27.0}, {"input": [-57.0, 27.5], "expected": 27.5}, {"input": [-57.0, 28.0], "expected": 28.0}, {"input": [-57.0, 28.5], "expected": 28.5}, {"input": [-57.0, 29.0], "expected": 29.0}, {"input": [-57.0, 29.5], "expected": 29.5}, {"input": [-57.0, 30.0], "expected": 30.0}, {"input": [-57.0, 30.5], "expected": 30.5}, {"input": [-57.0, 31.0], "expected": 31.0}, {"input": [-57.0, 31.5], "expected": 31.5}, {"input": [-57.0, 32.0], "expected": 32.0}, {"input": [-57.0, 32.5], "expected": 32.5}, {"input": [-57.0, 33.0], "expected": 33.0}, {"input": [-57.0, 33.5], "expected": 33.5}, {"input": [-57.0, 34.0], "expected": 34.0}, {"input": [-57.0, 34.5], "expected": 34.5}, {"input": [-57.0, 35.0], "expected": 35.0}, {"input": [-57.0, 35.5], "expected": 35.5}, {"input": [-57.0, 36.0], "expected": 36.0}, {"input": [-57.0, 36.5], "expected": 36.5}, {"input": [-57.0, 37.0], "expected": 37.0}, {"input": [-57.0, 37.5], "expected": 37.5}, {"input": [-57.0, 38.0], "expected": 38.0}, {"input": [-57.0, 38.5], "expected": 38.5}, {"input": [-57.0, 39.0], "expected": 39.0}, {"input": [-57.0, 39.5], "expected": 39.5}, {"input": [-57.0, 40.0], "expected": 40.0}, {"input": [-57.0, 40.5], "expected": 40.5}, {"input": [-57.0, 41.0], "expected": 41.0}, {"input": [-57.0, 41.5], "expected": 41.5}, {"input": [-57.0, 42.0], "expected": 42.0}, {"input": [-57.0, 42.5], "expected": 42.5}, {"input": [-57.0, 43.0], "expected": 43.0}, {"input": [-57.0, 43.5], "expected": 43.5}, {"input": [-57.0, 44.0], "expected": 44.0}, {"input": [-57.0, 44.5], "expected": 44.5}, {"input": [-57.0, 45.0], "expected": 45.0}, {"input": [-57.0, 45.5], "expected": 45.5}, {"input": [-57.0, 46.0], "expected": 46.0}, {"input": [-57.0, 46.5], "expected": 46.5}, {"input": [-57.0, 47.0], "expected": 47.0}, {"input": [-57.0, 47.5], "expected": 47.5}, {"input": [-57.0, 48.0], "expected": 48.0}, {"input": [-57.0, 48.5], "expected": 48.5}, {"input": [-57.0, 49.0], "expected": 49.0}, {"input": [-57.0, 49.5], "expected": 49.5}, {"input": [-57.0, 50.0], "expected": 50.0}, {"input": [-57.0, 50.5], "expected": 50.5}, {"input": [-57.0, 51.0], "expected": 51.0}, {"input": [-57.0, 51.5], "expected": 51.5}, {"input": [-57.0, 52.0], "expected": 52.0}, {"input": [-57.0, 52.5], "expected": 52.5}, {"input": [-57.0, 53.0], "expected": 53.0}, {"input": [-57.0, 53.5], "expected": 53.5}, {"input": [-57.0, 54.0], "expected": 54.0}, {"input": [-57.0, 54.5], "expected": 54.5}, {"input": [-57.0, 55.0], "expected": 55.0}, {"input": [-57.0, 55.5], "expected": 55.5}, {"input": [-57.0, 56.0], "expected": 56.0}, {"input": [-57.0, 56.5], "expected": 56.5}, {"input": [-57.0, 57.0], "expected": 57.0}, {"input": [-57.0, 57.5], "expected": 57.5}, {"input": [-57.0, 58.0], "expected": 58.0}, {"input": [-57.0, 58.5], "expected": 58.5}, {"input": [-57.0, 59.0], "expected": 59.0}, {"input": [-57.0, 59.5], "expected": 59.5}, {"input": [-57.0, 60.0], "expected": 60.0}, {"input": [-57.0, 60.5], "expected": 60.5}, {"input": [-57.0, 61.0], "expected": 61.0}, {"input": [-57.0, 61.5], "expected": 61.5}, {"input": [-57.0, 62.0], "expected": 62.0}, {"input": [-57.0, 62.5], "expected": 62.5}, {"input": [-57.0, 63.0], "expected": 63.0}, {"input": [-57.0, 63.5], "expected": 63.5}, {"input": [-57.0, 64.0], "expected": 64.0}, {"input": [-57.0, 64.5], "expected": 64.5}, {"input": [-57.0, 65.0], "expected": 65.0}, {"input": [-57.0, 65.5], "expected": 65.5}, {"input": [-57.0, 66.0], "expected": 66.0}, {"input": [-57.0, 66.5], "expected": 66.5}, {"input": [-57.0, 67.0], "expected": 67.0}, {"input": [-57.0, 67.5], "expected": 67.5}, {"input": [-57.0, 68.0], "expected": 68.0}, {"input": [-57.0, 68.5], "expected": 68.5}, {"input": [-57.0, 69.0], "expected": 69.0}, {"input": [-57.0, 69.5], "expected": 69.5}, {"input": [-57.0, 70.0], "expected": 70.0}, {"input": [-57.0, 70.5], "expected": 70.5}, {"input": [-57.0, 71.0], "expected": 71.0}, {"input": [-57.0, 71.5], "expected": 71.5}, {"input": [-57.0, 72.0], "expected": 72.0}, {"input": [-57.0, 72.5], "expected": 72.5}, {"input": [-57.0, 73.0], "expected": 73.0}, {"input": [-57.0, 73.5], "expected": 73.5}, {"input": [-57.0, 74.0], "expected": 74.0}, {"input": [-57.0, 74.5], "expected": 74.5}, {"input": [-57.0, 75.0], "expected": 75.0}, {"input": [-57.0, 75.5], "expected": 75.5}, {"input": [-57.0, 76.0], "expected": 76.0}, {"input": [-57.0, 76.5], "expected": 76.5}, {"input": [-57.0, 77.0], "expected": 77.0}, {"input": [-57.0, 77.5], "expected": 77.5}, {"input": [-57.0, 78.0], "expected": 78.0}, {"input": [-57.0, 78.5], "expected": 78.5}, {"input": [-57.0, 79.0], "expected": 79.0}, {"input": [-57.0, 79.5], "expected": 79.5}, {"input": [-57.0, 80.0], "expected": 80.0}, {"input": [-57.0, 80.5], "expected": 80.5}, {"input": [-57.0, 81.0], "expected": 81.0}, {"input": [-57.0, 81.5], "expected": 81.5}, {"input": [-57.0, 82.0], "expected": 82.0}, {"input": [-57.0, 82.5], "expected": 82.5}, {"input": [-57.0, 83.0], "expected": 83.0}, {"input": [-57.0, 83.5], "expected": 83.5}, {"input": [-57.0, 84.0], "expected": 84.0}, {"input": [-57.0, 84.5], "expected": 84.5}, {"input": [-57.0, 85.0], "expected": 85.0}, {"input": [-57.0, 85.5], "expected": 85.5}, {"input": [-57.0, 86.0], "expected": 86.0}, {"input": [-57.0, 86.5], "expected": 86.5}, {"input": [-57.0, 87.0], "expected": 87.0}, {"input": [-57.0, 87.5], "expected": 87.5}, {"input": [-57.0, 88.0], "expected": 88.0}, {"input": [-57.0, 88.5], "expected": 88.5}, {"input": [-57.0, 89.0], "expected": 89.0}, {"input": [-57.0, 89.5], "expected": 89.5}, {"input": [-57.0, 90.0], "expected": 90.0}, {"input": [-57.0, 90.5], "expected": 90.5}, {"input": [-57.0, 91.0], "expected": 91.0}, {"input": [-57.0, 91.5], "expected": 91.5}, {"input": [-57.0, 92.0], "expected": 92.0}, {"input": [-57.0, 92.5], "expected": 92.5}, {"input": [-57.0, 93.0], "expected": 93.0}, {"input": [-57.0, 93.5], "expected": 93.5}, {"input": [-57.0, 94.0], "expected": 94.0}, {"input": [-57.0, 94.5], "expected": 94.5}, {"input": [-57.0, 95.0], "expected": 95.0}, {"input": [-57.0, 95.5], "expected": 95.5}, {"input": [-57.0, 96.0], "expected": 96.0}, {"input": [-57.0, 96.5], "expected": 96.5}, {"input": [-57.0, 97.0], "expected": 97.0}, {"input": [-57.0, 97.5], "expected": 97.5}, {"input": [-57.0, 98.0], "expected": 98.0}, {"input": [-57.0, 98.5], "expected": 98.5}, {"input": [-57.0, 99.0], "expected": 99.0}, {"input": [-57.0, 99.5], "expected": 99.5}, {"input": [-56.5, -100.0], "expected": -56.5}, {"input": [-56.5, -99.5], "expected": -56.5}, {"input": [-56.5, -99.0], "expected": -56.5}, {"input": [-56.5, -98.5], "expected": -56.5}, {"input": [-56.5, -98.0], "expected": -56.5}, {"input": [-56.5, -97.5], "expected": -56.5}, {"input": [-56.5, -97.0], "expected": -56.5}, {"input": [-56.5, -96.5], "expected": -56.5}, {"input": [-56.5, -96.0], "expected": -56.5}, {"input": [-56.5, -95.5], "expected": -56.5}, {"input": [-56.5, -95.0], "expected": -56.5}, {"input": [-56.5, -94.5], "expected": -56.5}, {"input": [-56.5, -94.0], "expected": -56.5}, {"input": [-56.5, -93.5], "expected": -56.5}, {"input": [-56.5, -93.0], "expected": -56.5}, {"input": [-56.5, -92.5], "expected": -56.5}, {"input": [-56.5, -92.0], "expected": -56.5}, {"input": [-56.5, -91.5], "expected": -56.5}, {"input": [-56.5, -91.0], "expected": -56.5}, {"input": [-56.5, -90.5], "expected": -56.5}, {"input": [-56.5, -90.0], "expected": -56.5}, {"input": [-56.5, -89.5], "expected": -56.49999999999999}, {"input": [-56.5, -89.0], "expected": -56.49999999999999}, {"input": [-56.5, -88.5], "expected": -56.499999999999986}, {"input": [-56.5, -88.0], "expected": -56.49999999999998}, {"input": [-56.5, -87.5], "expected": -56.499999999999964}, {"input": [-56.5, -87.0], "expected": -56.49999999999994}, {"input": [-56.5, -86.5], "expected": -56.49999999999991}, {"input": [-56.5, -86.0], "expected": -56.499999999999844}, {"input": [-56.5, -85.5], "expected": -56.499999999999744}, {"input": [-56.5, -85.0], "expected": -56.49999999999958}, {"input": [-56.5, -84.5], "expected": -56.49999999999931}, {"input": [-56.5, -84.0], "expected": -56.49999999999886}, {"input": [-56.5, -83.5], "expected": -56.49999999999812}, {"input": [-56.5, -83.0], "expected": -56.4999999999969}, {"input": [-56.5, -82.5], "expected": -56.49999999999489}, {"input": [-56.5, -82.0], "expected": -56.49999999999158}, {"input": [-56.5, -81.5], "expected": -56.49999999998611}, {"input": [-56.5, -81.0], "expected": -56.4999999999771}, {"input": [-56.5, -80.5], "expected": -56.49999999996225}, {"input": [-56.5, -80.0], "expected": -56.49999999993776}, {"input": [-56.5, -79.5], "expected": -56.49999999989738}, {"input": [-56.5, -79.0], "expected": -56.49999999983081}, {"input": [-56.5, -78.5], "expected": -56.499999999721055}, {"input": [-56.5, -78.0], "expected": -56.499999999540094}, {"input": [-56.5, -77.5], "expected": -56.499999999241744}, {"input": [-56.5, -77.0], "expected": -56.49999999874985}, {"input": [-56.5, -76.5], "expected": -56.49999999793884}, {"input": [-56.5, -76.0], "expected": -56.49999999660173}, {"input": [-56.5, -75.5], "expected": -56.49999999439721}, {"input": [-56.5, -75.0], "expected": -56.499999990762554}, {"input": [-56.5, -74.5], "expected": -56.49999998477002}, {"input": [-56.5, -74.0], "expected": -56.49999997489001}, {"input": [-56.5, -73.5], "expected": -56.499999958600625}, {"input": [-56.5, -73.0], "expected": -56.49999993174397}, {"input": [-56.5, -72.5], "expected": -56.49999988746483}, {"input": [-56.5, -72.0], "expected": -56.49999981446088}, {"input": [-56.5, -71.5], "expected": -56.499999694097724}, {"input": [-56.5, -71.0], "expected": -56.49999949565247}, {"input": [-56.5, -70.5], "expected": -56.499999168471625}, {"input": [-56.5, -70.0], "expected": -56.499998629041855}, {"input": [-56.5, -69.5], "expected": -56.49999773967315}, {"input": [-56.5, -69.0], "expected": -56.49999627335377}, {"input": [-56.5, -68.5], "expected": -56.49999385580652}, {"input": [-56.5, -68.0], "expected": -56.49998986995771}, {"input": [-56.5, -67.5], "expected": -56.49998329843868}, {"input": [-56.5, -67.0], "expected": -56.49997246392977}, {"input": [-56.5, -66.5], "expected": -56.49995460110078}, {"input": [-56.5, -66.0], "expected": -56.49992515097137}, {"input": [-56.5, -65.5], "expected": -56.49987659781028}, {"input": [-56.5, -65.0], "expected": -56.49979655232787}, {"input": [-56.5, -64.5], "expected": -56.4996645936271}, {"input": [-56.5, -64.0], "expected": -56.49944706852464}, {"input": [-56.5, -63.5], "expected": -56.49908853354623}, {"input": [-56.5, -63.0], "expected": -56.49849768984024}, {"input": [-56.5, -62.5], "expected": -56.49752431486227}, {"input": [-56.5, -62.0], "expected": -56.49592155672943}, {"input": [-56.5, -61.5], "expected": -56.49328465151088}, {"input": [-56.5, -61.0], "expected": -56.4889522551514}, {"input": [-56.5, -60.5], "expected": -56.48185007208219}, {"input": [-56.5, -60.0], "expected": -56.47024958172738}, {"input": [-56.5, -59.5], "expected": -56.451412648426256}, {"input": [-56.5, -59.0], "expected": -56.42111026570745}, {"input": [-56.5, -58.5], "expected": -56.37307198895703}, {"input": [-56.5, -58.0], "expected": -56.29858672201725}, {"input": [-56.5, -57.5], "expected": -56.18673831248178}, {"input": [-56.5, -57.0], "expected": -56.02592301581989}, {"input": [-56.5, -56.5], "expected": -55.80685281944005}, {"input": [-56.5, -56.0], "expected": -55.52592301581989}, {"input": [-56.5, -55.5], "expected": -55.18673831248178}, {"input": [-56.5, -55.0], "expected": -54.79858672201725}, {"input": [-56.5, -54.5], "expected": -54.37307198895703}, {"input": [-56.5, -54.0], "expected": -53.92111026570745}, {"input": [-56.5, -53.5], "expected": -53.451412648426256}, {"input": [-56.5, -53.0], "expected": -52.97024958172738}, {"input": [-56.5, -52.5], "expected": -52.48185007208219}, {"input": [-56.5, -52.0], "expected": -51.9889522551514}, {"input": [-56.5, -51.5], "expected": -51.49328465151088}, {"input": [-56.5, -51.0], "expected": -50.99592155672943}, {"input": [-56.5, -50.5], "expected": -50.49752431486227}, {"input": [-56.5, -50.0], "expected": -49.99849768984024}, {"input": [-56.5, -49.5], "expected": -49.49908853354623}, {"input": [-56.5, -49.0], "expected": -48.99944706852464}, {"input": [-56.5, -48.5], "expected": -48.4996645936271}, {"input": [-56.5, -48.0], "expected": -47.99979655232787}, {"input": [-56.5, -47.5], "expected": -47.49987659781028}, {"input": [-56.5, -47.0], "expected": -46.99992515097137}, {"input": [-56.5, -46.5], "expected": -46.49995460110078}, {"input": [-56.5, -46.0], "expected": -45.99997246392977}, {"input": [-56.5, -45.5], "expected": -45.49998329843868}, {"input": [-56.5, -45.0], "expected": -44.99998986995771}, {"input": [-56.5, -44.5], "expected": -44.49999385580652}, {"input": [-56.5, -44.0], "expected": -43.99999627335377}, {"input": [-56.5, -43.5], "expected": -43.49999773967315}, {"input": [-56.5, -43.0], "expected": -42.999998629041855}, {"input": [-56.5, -42.5], "expected": -42.499999168471625}, {"input": [-56.5, -42.0], "expected": -41.99999949565247}, {"input": [-56.5, -41.5], "expected": -41.499999694097724}, {"input": [-56.5, -41.0], "expected": -40.99999981446088}, {"input": [-56.5, -40.5], "expected": -40.49999988746483}, {"input": [-56.5, -40.0], "expected": -39.99999993174397}, {"input": [-56.5, -39.5], "expected": -39.499999958600625}, {"input": [-56.5, -39.0], "expected": -38.99999997489001}, {"input": [-56.5, -38.5], "expected": -38.49999998477002}, {"input": [-56.5, -38.0], "expected": -37.999999990762554}, {"input": [-56.5, -37.5], "expected": -37.49999999439721}, {"input": [-56.5, -37.0], "expected": -36.99999999660173}, {"input": [-56.5, -36.5], "expected": -36.49999999793884}, {"input": [-56.5, -36.0], "expected": -35.99999999874985}, {"input": [-56.5, -35.5], "expected": -35.499999999241744}, {"input": [-56.5, -35.0], "expected": -34.999999999540094}, {"input": [-56.5, -34.5], "expected": -34.499999999721055}, {"input": [-56.5, -34.0], "expected": -33.99999999983081}, {"input": [-56.5, -33.5], "expected": -33.49999999989738}, {"input": [-56.5, -33.0], "expected": -32.99999999993776}, {"input": [-56.5, -32.5], "expected": -32.49999999996225}, {"input": [-56.5, -32.0], "expected": -31.999999999977103}, {"input": [-56.5, -31.5], "expected": -31.499999999986112}, {"input": [-56.5, -31.0], "expected": -30.999999999991577}, {"input": [-56.5, -30.5], "expected": -30.49999999999489}, {"input": [-56.5, -30.0], "expected": -29.999999999996902}, {"input": [-56.5, -29.5], "expected": -29.49999999999812}, {"input": [-56.5, -29.0], "expected": -28.99999999999886}, {"input": [-56.5, -28.5], "expected": -28.499999999999307}, {"input": [-56.5, -28.0], "expected": -27.99999999999958}, {"input": [-56.5, -27.5], "expected": -27.499999999999744}, {"input": [-56.5, -27.0], "expected": -26.999999999999847}, {"input": [-56.5, -26.5], "expected": -26.499999999999908}, {"input": [-56.5, -26.0], "expected": -25.999999999999943}, {"input": [-56.5, -25.5], "expected": -25.499999999999964}, {"input": [-56.5, -25.0], "expected": -24.99999999999998}, {"input": [-56.5, -24.5], "expected": -24.499999999999986}, {"input": [-56.5, -24.0], "expected": -23.999999999999993}, {"input": [-56.5, -23.5], "expected": -23.499999999999996}, {"input": [-56.5, -23.0], "expected": -22.999999999999996}, {"input": [-56.5, -22.5], "expected": -22.5}, {"input": [-56.5, -22.0], "expected": -22.0}, {"input": [-56.5, -21.5], "expected": -21.5}, {"input": [-56.5, -21.0], "expected": -21.0}, {"input": [-56.5, -20.5], "expected": -20.5}, {"input": [-56.5, -20.0], "expected": -20.0}, {"input": [-56.5, -19.5], "expected": -19.5}, {"input": [-56.5, -19.0], "expected": -19.0}, {"input": [-56.5, -18.5], "expected": -18.5}, {"input": [-56.5, -18.0], "expected": -18.0}, {"input": [-56.5, -17.5], "expected": -17.5}, {"input": [-56.5, -17.0], "expected": -17.0}, {"input": [-56.5, -16.5], "expected": -16.5}, {"input": [-56.5, -16.0], "expected": -16.0}, {"input": [-56.5, -15.5], "expected": -15.5}, {"input": [-56.5, -15.0], "expected": -15.0}, {"input": [-56.5, -14.5], "expected": -14.5}, {"input": [-56.5, -14.0], "expected": -14.0}, {"input": [-56.5, -13.5], "expected": -13.5}, {"input": [-56.5, -13.0], "expected": -13.0}, {"input": [-56.5, -12.5], "expected": -12.5}, {"input": [-56.5, -12.0], "expected": -12.0}, {"input": [-56.5, -11.5], "expected": -11.5}, {"input": [-56.5, -11.0], "expected": -11.0}, {"input": [-56.5, -10.5], "expected": -10.5}, {"input": [-56.5, -10.0], "expected": -10.0}, {"input": [-56.5, -9.5], "expected": -9.5}, {"input": [-56.5, -9.0], "expected": -9.0}, {"input": [-56.5, -8.5], "expected": -8.5}, {"input": [-56.5, -8.0], "expected": -8.0}, {"input": [-56.5, -7.5], "expected": -7.5}, {"input": [-56.5, -7.0], "expected": -7.0}, {"input": [-56.5, -6.5], "expected": -6.5}, {"input": [-56.5, -6.0], "expected": -6.0}, {"input": [-56.5, -5.5], "expected": -5.5}, {"input": [-56.5, -5.0], "expected": -5.0}, {"input": [-56.5, -4.5], "expected": -4.5}, {"input": [-56.5, -4.0], "expected": -4.0}, {"input": [-56.5, -3.5], "expected": -3.5}, {"input": [-56.5, -3.0], "expected": -3.0}, {"input": [-56.5, -2.5], "expected": -2.5}, {"input": [-56.5, -2.0], "expected": -2.0}, {"input": [-56.5, -1.5], "expected": -1.5}, {"input": [-56.5, -1.0], "expected": -1.0}, {"input": [-56.5, -0.5], "expected": -0.5}, {"input": [-56.5, 0.0], "expected": 2.899758114878488e-25}, {"input": [-56.5, 0.5], "expected": 0.5}, {"input": [-56.5, 1.0], "expected": 1.0}, {"input": [-56.5, 1.5], "expected": 1.5}, {"input": [-56.5, 2.0], "expected": 2.0}, {"input": [-56.5, 2.5], "expected": 2.5}, {"input": [-56.5, 3.0], "expected": 3.0}, {"input": [-56.5, 3.5], "expected": 3.5}, {"input": [-56.5, 4.0], "expected": 4.0}, {"input": [-56.5, 4.5], "expected": 4.5}, {"input": [-56.5, 5.0], "expected": 5.0}, {"input": [-56.5, 5.5], "expected": 5.5}, {"input": [-56.5, 6.0], "expected": 6.0}, {"input": [-56.5, 6.5], "expected": 6.5}, {"input": [-56.5, 7.0], "expected": 7.0}, {"input": [-56.5, 7.5], "expected": 7.5}, {"input": [-56.5, 8.0], "expected": 8.0}, {"input": [-56.5, 8.5], "expected": 8.5}, {"input": [-56.5, 9.0], "expected": 9.0}, {"input": [-56.5, 9.5], "expected": 9.5}, {"input": [-56.5, 10.0], "expected": 10.0}, {"input": [-56.5, 10.5], "expected": 10.5}, {"input": [-56.5, 11.0], "expected": 11.0}, {"input": [-56.5, 11.5], "expected": 11.5}, {"input": [-56.5, 12.0], "expected": 12.0}, {"input": [-56.5, 12.5], "expected": 12.5}, {"input": [-56.5, 13.0], "expected": 13.0}, {"input": [-56.5, 13.5], "expected": 13.5}, {"input": [-56.5, 14.0], "expected": 14.0}, {"input": [-56.5, 14.5], "expected": 14.5}, {"input": [-56.5, 15.0], "expected": 15.0}, {"input": [-56.5, 15.5], "expected": 15.5}, {"input": [-56.5, 16.0], "expected": 16.0}, {"input": [-56.5, 16.5], "expected": 16.5}, {"input": [-56.5, 17.0], "expected": 17.0}, {"input": [-56.5, 17.5], "expected": 17.5}, {"input": [-56.5, 18.0], "expected": 18.0}, {"input": [-56.5, 18.5], "expected": 18.5}, {"input": [-56.5, 19.0], "expected": 19.0}, {"input": [-56.5, 19.5], "expected": 19.5}, {"input": [-56.5, 20.0], "expected": 20.0}, {"input": [-56.5, 20.5], "expected": 20.5}, {"input": [-56.5, 21.0], "expected": 21.0}, {"input": [-56.5, 21.5], "expected": 21.5}, {"input": [-56.5, 22.0], "expected": 22.0}, {"input": [-56.5, 22.5], "expected": 22.5}, {"input": [-56.5, 23.0], "expected": 23.0}, {"input": [-56.5, 23.5], "expected": 23.5}, {"input": [-56.5, 24.0], "expected": 24.0}, {"input": [-56.5, 24.5], "expected": 24.5}, {"input": [-56.5, 25.0], "expected": 25.0}, {"input": [-56.5, 25.5], "expected": 25.5}, {"input": [-56.5, 26.0], "expected": 26.0}, {"input": [-56.5, 26.5], "expected": 26.5}, {"input": [-56.5, 27.0], "expected": 27.0}, {"input": [-56.5, 27.5], "expected": 27.5}, {"input": [-56.5, 28.0], "expected": 28.0}, {"input": [-56.5, 28.5], "expected": 28.5}, {"input": [-56.5, 29.0], "expected": 29.0}, {"input": [-56.5, 29.5], "expected": 29.5}, {"input": [-56.5, 30.0], "expected": 30.0}, {"input": [-56.5, 30.5], "expected": 30.5}, {"input": [-56.5, 31.0], "expected": 31.0}, {"input": [-56.5, 31.5], "expected": 31.5}, {"input": [-56.5, 32.0], "expected": 32.0}, {"input": [-56.5, 32.5], "expected": 32.5}, {"input": [-56.5, 33.0], "expected": 33.0}, {"input": [-56.5, 33.5], "expected": 33.5}, {"input": [-56.5, 34.0], "expected": 34.0}, {"input": [-56.5, 34.5], "expected": 34.5}, {"input": [-56.5, 35.0], "expected": 35.0}, {"input": [-56.5, 35.5], "expected": 35.5}, {"input": [-56.5, 36.0], "expected": 36.0}, {"input": [-56.5, 36.5], "expected": 36.5}, {"input": [-56.5, 37.0], "expected": 37.0}, {"input": [-56.5, 37.5], "expected": 37.5}, {"input": [-56.5, 38.0], "expected": 38.0}, {"input": [-56.5, 38.5], "expected": 38.5}, {"input": [-56.5, 39.0], "expected": 39.0}, {"input": [-56.5, 39.5], "expected": 39.5}, {"input": [-56.5, 40.0], "expected": 40.0}, {"input": [-56.5, 40.5], "expected": 40.5}, {"input": [-56.5, 41.0], "expected": 41.0}, {"input": [-56.5, 41.5], "expected": 41.5}, {"input": [-56.5, 42.0], "expected": 42.0}, {"input": [-56.5, 42.5], "expected": 42.5}, {"input": [-56.5, 43.0], "expected": 43.0}, {"input": [-56.5, 43.5], "expected": 43.5}, {"input": [-56.5, 44.0], "expected": 44.0}, {"input": [-56.5, 44.5], "expected": 44.5}, {"input": [-56.5, 45.0], "expected": 45.0}, {"input": [-56.5, 45.5], "expected": 45.5}, {"input": [-56.5, 46.0], "expected": 46.0}, {"input": [-56.5, 46.5], "expected": 46.5}, {"input": [-56.5, 47.0], "expected": 47.0}, {"input": [-56.5, 47.5], "expected": 47.5}, {"input": [-56.5, 48.0], "expected": 48.0}, {"input": [-56.5, 48.5], "expected": 48.5}, {"input": [-56.5, 49.0], "expected": 49.0}, {"input": [-56.5, 49.5], "expected": 49.5}, {"input": [-56.5, 50.0], "expected": 50.0}, {"input": [-56.5, 50.5], "expected": 50.5}, {"input": [-56.5, 51.0], "expected": 51.0}, {"input": [-56.5, 51.5], "expected": 51.5}, {"input": [-56.5, 52.0], "expected": 52.0}, {"input": [-56.5, 52.5], "expected": 52.5}, {"input": [-56.5, 53.0], "expected": 53.0}, {"input": [-56.5, 53.5], "expected": 53.5}, {"input": [-56.5, 54.0], "expected": 54.0}, {"input": [-56.5, 54.5], "expected": 54.5}, {"input": [-56.5, 55.0], "expected": 55.0}, {"input": [-56.5, 55.5], "expected": 55.5}, {"input": [-56.5, 56.0], "expected": 56.0}, {"input": [-56.5, 56.5], "expected": 56.5}, {"input": [-56.5, 57.0], "expected": 57.0}, {"input": [-56.5, 57.5], "expected": 57.5}, {"input": [-56.5, 58.0], "expected": 58.0}, {"input": [-56.5, 58.5], "expected": 58.5}, {"input": [-56.5, 59.0], "expected": 59.0}, {"input": [-56.5, 59.5], "expected": 59.5}, {"input": [-56.5, 60.0], "expected": 60.0}, {"input": [-56.5, 60.5], "expected": 60.5}, {"input": [-56.5, 61.0], "expected": 61.0}, {"input": [-56.5, 61.5], "expected": 61.5}, {"input": [-56.5, 62.0], "expected": 62.0}, {"input": [-56.5, 62.5], "expected": 62.5}, {"input": [-56.5, 63.0], "expected": 63.0}, {"input": [-56.5, 63.5], "expected": 63.5}, {"input": [-56.5, 64.0], "expected": 64.0}, {"input": [-56.5, 64.5], "expected": 64.5}, {"input": [-56.5, 65.0], "expected": 65.0}, {"input": [-56.5, 65.5], "expected": 65.5}, {"input": [-56.5, 66.0], "expected": 66.0}, {"input": [-56.5, 66.5], "expected": 66.5}, {"input": [-56.5, 67.0], "expected": 67.0}, {"input": [-56.5, 67.5], "expected": 67.5}, {"input": [-56.5, 68.0], "expected": 68.0}, {"input": [-56.5, 68.5], "expected": 68.5}, {"input": [-56.5, 69.0], "expected": 69.0}, {"input": [-56.5, 69.5], "expected": 69.5}, {"input": [-56.5, 70.0], "expected": 70.0}, {"input": [-56.5, 70.5], "expected": 70.5}, {"input": [-56.5, 71.0], "expected": 71.0}, {"input": [-56.5, 71.5], "expected": 71.5}, {"input": [-56.5, 72.0], "expected": 72.0}, {"input": [-56.5, 72.5], "expected": 72.5}, {"input": [-56.5, 73.0], "expected": 73.0}, {"input": [-56.5, 73.5], "expected": 73.5}, {"input": [-56.5, 74.0], "expected": 74.0}, {"input": [-56.5, 74.5], "expected": 74.5}, {"input": [-56.5, 75.0], "expected": 75.0}, {"input": [-56.5, 75.5], "expected": 75.5}, {"input": [-56.5, 76.0], "expected": 76.0}, {"input": [-56.5, 76.5], "expected": 76.5}, {"input": [-56.5, 77.0], "expected": 77.0}, {"input": [-56.5, 77.5], "expected": 77.5}, {"input": [-56.5, 78.0], "expected": 78.0}, {"input": [-56.5, 78.5], "expected": 78.5}, {"input": [-56.5, 79.0], "expected": 79.0}, {"input": [-56.5, 79.5], "expected": 79.5}, {"input": [-56.5, 80.0], "expected": 80.0}, {"input": [-56.5, 80.5], "expected": 80.5}, {"input": [-56.5, 81.0], "expected": 81.0}, {"input": [-56.5, 81.5], "expected": 81.5}, {"input": [-56.5, 82.0], "expected": 82.0}, {"input": [-56.5, 82.5], "expected": 82.5}, {"input": [-56.5, 83.0], "expected": 83.0}, {"input": [-56.5, 83.5], "expected": 83.5}, {"input": [-56.5, 84.0], "expected": 84.0}, {"input": [-56.5, 84.5], "expected": 84.5}, {"input": [-56.5, 85.0], "expected": 85.0}, {"input": [-56.5, 85.5], "expected": 85.5}, {"input": [-56.5, 86.0], "expected": 86.0}, {"input": [-56.5, 86.5], "expected": 86.5}, {"input": [-56.5, 87.0], "expected": 87.0}, {"input": [-56.5, 87.5], "expected": 87.5}, {"input": [-56.5, 88.0], "expected": 88.0}, {"input": [-56.5, 88.5], "expected": 88.5}, {"input": [-56.5, 89.0], "expected": 89.0}, {"input": [-56.5, 89.5], "expected": 89.5}, {"input": [-56.5, 90.0], "expected": 90.0}, {"input": [-56.5, 90.5], "expected": 90.5}, {"input": [-56.5, 91.0], "expected": 91.0}, {"input": [-56.5, 91.5], "expected": 91.5}, {"input": [-56.5, 92.0], "expected": 92.0}, {"input": [-56.5, 92.5], "expected": 92.5}, {"input": [-56.5, 93.0], "expected": 93.0}, {"input": [-56.5, 93.5], "expected": 93.5}, {"input": [-56.5, 94.0], "expected": 94.0}, {"input": [-56.5, 94.5], "expected": 94.5}, {"input": [-56.5, 95.0], "expected": 95.0}, {"input": [-56.5, 95.5], "expected": 95.5}, {"input": [-56.5, 96.0], "expected": 96.0}, {"input": [-56.5, 96.5], "expected": 96.5}, {"input": [-56.5, 97.0], "expected": 97.0}, {"input": [-56.5, 97.5], "expected": 97.5}, {"input": [-56.5, 98.0], "expected": 98.0}, {"input": [-56.5, 98.5], "expected": 98.5}, {"input": [-56.5, 99.0], "expected": 99.0}, {"input": [-56.5, 99.5], "expected": 99.5}, {"input": [-56.0, -100.0], "expected": -56.0}, {"input": [-56.0, -99.5], "expected": -56.0}, {"input": [-56.0, -99.0], "expected": -56.0}, {"input": [-56.0, -98.5], "expected": -56.0}, {"input": [-56.0, -98.0], "expected": -56.0}, {"input": [-56.0, -97.5], "expected": -56.0}, {"input": [-56.0, -97.0], "expected": -56.0}, {"input": [-56.0, -96.5], "expected": -56.0}, {"input": [-56.0, -96.0], "expected": -56.0}, {"input": [-56.0, -95.5], "expected": -56.0}, {"input": [-56.0, -95.0], "expected": -56.0}, {"input": [-56.0, -94.5], "expected": -56.0}, {"input": [-56.0, -94.0], "expected": -56.0}, {"input": [-56.0, -93.5], "expected": -56.0}, {"input": [-56.0, -93.0], "expected": -56.0}, {"input": [-56.0, -92.5], "expected": -56.0}, {"input": [-56.0, -92.0], "expected": -56.0}, {"input": [-56.0, -91.5], "expected": -56.0}, {"input": [-56.0, -91.0], "expected": -56.0}, {"input": [-56.0, -90.5], "expected": -56.0}, {"input": [-56.0, -90.0], "expected": -56.0}, {"input": [-56.0, -89.5], "expected": -56.0}, {"input": [-56.0, -89.0], "expected": -55.99999999999999}, {"input": [-56.0, -88.5], "expected": -55.99999999999999}, {"input": [-56.0, -88.0], "expected": -55.999999999999986}, {"input": [-56.0, -87.5], "expected": -55.99999999999998}, {"input": [-56.0, -87.0], "expected": -55.999999999999964}, {"input": [-56.0, -86.5], "expected": -55.99999999999994}, {"input": [-56.0, -86.0], "expected": -55.99999999999991}, {"input": [-56.0, -85.5], "expected": -55.999999999999844}, {"input": [-56.0, -85.0], "expected": -55.999999999999744}, {"input": [-56.0, -84.5], "expected": -55.99999999999958}, {"input": [-56.0, -84.0], "expected": -55.99999999999931}, {"input": [-56.0, -83.5], "expected": -55.99999999999886}, {"input": [-56.0, -83.0], "expected": -55.99999999999812}, {"input": [-56.0, -82.5], "expected": -55.9999999999969}, {"input": [-56.0, -82.0], "expected": -55.99999999999489}, {"input": [-56.0, -81.5], "expected": -55.99999999999158}, {"input": [-56.0, -81.0], "expected": -55.99999999998611}, {"input": [-56.0, -80.5], "expected": -55.9999999999771}, {"input": [-56.0, -80.0], "expected": -55.99999999996225}, {"input": [-56.0, -79.5], "expected": -55.99999999993776}, {"input": [-56.0, -79.0], "expected": -55.99999999989738}, {"input": [-56.0, -78.5], "expected": -55.99999999983081}, {"input": [-56.0, -78.0], "expected": -55.999999999721055}, {"input": [-56.0, -77.5], "expected": -55.999999999540094}, {"input": [-56.0, -77.0], "expected": -55.999999999241744}, {"input": [-56.0, -76.5], "expected": -55.99999999874985}, {"input": [-56.0, -76.0], "expected": -55.99999999793884}, {"input": [-56.0, -75.5], "expected": -55.99999999660173}, {"input": [-56.0, -75.0], "expected": -55.99999999439721}, {"input": [-56.0, -74.5], "expected": -55.999999990762554}, {"input": [-56.0, -74.0], "expected": -55.99999998477002}, {"input": [-56.0, -73.5], "expected": -55.99999997489001}, {"input": [-56.0, -73.0], "expected": -55.999999958600625}, {"input": [-56.0, -72.5], "expected": -55.99999993174397}, {"input": [-56.0, -72.0], "expected": -55.99999988746483}, {"input": [-56.0, -71.5], "expected": -55.99999981446088}, {"input": [-56.0, -71.0], "expected": -55.999999694097724}, {"input": [-56.0, -70.5], "expected": -55.99999949565247}, {"input": [-56.0, -70.0], "expected": -55.999999168471625}, {"input": [-56.0, -69.5], "expected": -55.999998629041855}, {"input": [-56.0, -69.0], "expected": -55.99999773967315}, {"input": [-56.0, -68.5], "expected": -55.99999627335377}, {"input": [-56.0, -68.0], "expected": -55.99999385580652}, {"input": [-56.0, -67.5], "expected": -55.99998986995771}, {"input": [-56.0, -67.0], "expected": -55.99998329843868}, {"input": [-56.0, -66.5], "expected": -55.99997246392977}, {"input": [-56.0, -66.0], "expected": -55.99995460110078}, {"input": [-56.0, -65.5], "expected": -55.99992515097137}, {"input": [-56.0, -65.0], "expected": -55.99987659781028}, {"input": [-56.0, -64.5], "expected": -55.99979655232787}, {"input": [-56.0, -64.0], "expected": -55.9996645936271}, {"input": [-56.0, -63.5], "expected": -55.99944706852464}, {"input": [-56.0, -63.0], "expected": -55.99908853354623}, {"input": [-56.0, -62.5], "expected": -55.99849768984024}, {"input": [-56.0, -62.0], "expected": -55.99752431486227}, {"input": [-56.0, -61.5], "expected": -55.99592155672943}, {"input": [-56.0, -61.0], "expected": -55.99328465151088}, {"input": [-56.0, -60.5], "expected": -55.9889522551514}, {"input": [-56.0, -60.0], "expected": -55.98185007208219}, {"input": [-56.0, -59.5], "expected": -55.97024958172738}, {"input": [-56.0, -59.0], "expected": -55.951412648426256}, {"input": [-56.0, -58.5], "expected": -55.92111026570745}, {"input": [-56.0, -58.0], "expected": -55.87307198895703}, {"input": [-56.0, -57.5], "expected": -55.79858672201725}, {"input": [-56.0, -57.0], "expected": -55.68673831248178}, {"input": [-56.0, -56.5], "expected": -55.52592301581989}, {"input": [-56.0, -56.0], "expected": -55.30685281944005}, {"input": [-56.0, -55.5], "expected": -55.02592301581989}, {"input": [-56.0, -55.0], "expected": -54.68673831248178}, {"input": [-56.0, -54.5], "expected": -54.29858672201725}, {"input": [-56.0, -54.0], "expected": -53.87307198895703}, {"input": [-56.0, -53.5], "expected": -53.42111026570745}, {"input": [-56.0, -53.0], "expected": -52.951412648426256}, {"input": [-56.0, -52.5], "expected": -52.47024958172738}, {"input": [-56.0, -52.0], "expected": -51.98185007208219}, {"input": [-56.0, -51.5], "expected": -51.4889522551514}, {"input": [-56.0, -51.0], "expected": -50.99328465151088}, {"input": [-56.0, -50.5], "expected": -50.49592155672943}, {"input": [-56.0, -50.0], "expected": -49.99752431486227}, {"input": [-56.0, -49.5], "expected": -49.49849768984024}, {"input": [-56.0, -49.0], "expected": -48.99908853354623}, {"input": [-56.0, -48.5], "expected": -48.49944706852464}, {"input": [-56.0, -48.0], "expected": -47.9996645936271}, {"input": [-56.0, -47.5], "expected": -47.49979655232787}, {"input": [-56.0, -47.0], "expected": -46.99987659781028}, {"input": [-56.0, -46.5], "expected": -46.49992515097137}, {"input": [-56.0, -46.0], "expected": -45.99995460110078}, {"input": [-56.0, -45.5], "expected": -45.49997246392977}, {"input": [-56.0, -45.0], "expected": -44.99998329843868}, {"input": [-56.0, -44.5], "expected": -44.49998986995771}, {"input": [-56.0, -44.0], "expected": -43.99999385580652}, {"input": [-56.0, -43.5], "expected": -43.49999627335377}, {"input": [-56.0, -43.0], "expected": -42.99999773967315}, {"input": [-56.0, -42.5], "expected": -42.499998629041855}, {"input": [-56.0, -42.0], "expected": -41.999999168471625}, {"input": [-56.0, -41.5], "expected": -41.49999949565247}, {"input": [-56.0, -41.0], "expected": -40.999999694097724}, {"input": [-56.0, -40.5], "expected": -40.49999981446088}, {"input": [-56.0, -40.0], "expected": -39.99999988746483}, {"input": [-56.0, -39.5], "expected": -39.49999993174397}, {"input": [-56.0, -39.0], "expected": -38.999999958600625}, {"input": [-56.0, -38.5], "expected": -38.49999997489001}, {"input": [-56.0, -38.0], "expected": -37.99999998477002}, {"input": [-56.0, -37.5], "expected": -37.499999990762554}, {"input": [-56.0, -37.0], "expected": -36.99999999439721}, {"input": [-56.0, -36.5], "expected": -36.49999999660173}, {"input": [-56.0, -36.0], "expected": -35.99999999793884}, {"input": [-56.0, -35.5], "expected": -35.49999999874985}, {"input": [-56.0, -35.0], "expected": -34.999999999241744}, {"input": [-56.0, -34.5], "expected": -34.499999999540094}, {"input": [-56.0, -34.0], "expected": -33.999999999721055}, {"input": [-56.0, -33.5], "expected": -33.49999999983081}, {"input": [-56.0, -33.0], "expected": -32.99999999989738}, {"input": [-56.0, -32.5], "expected": -32.49999999993776}, {"input": [-56.0, -32.0], "expected": -31.99999999996225}, {"input": [-56.0, -31.5], "expected": -31.499999999977103}, {"input": [-56.0, -31.0], "expected": -30.999999999986112}, {"input": [-56.0, -30.5], "expected": -30.499999999991577}, {"input": [-56.0, -30.0], "expected": -29.99999999999489}, {"input": [-56.0, -29.5], "expected": -29.499999999996902}, {"input": [-56.0, -29.0], "expected": -28.99999999999812}, {"input": [-56.0, -28.5], "expected": -28.49999999999886}, {"input": [-56.0, -28.0], "expected": -27.999999999999307}, {"input": [-56.0, -27.5], "expected": -27.49999999999958}, {"input": [-56.0, -27.0], "expected": -26.999999999999744}, {"input": [-56.0, -26.5], "expected": -26.499999999999847}, {"input": [-56.0, -26.0], "expected": -25.999999999999908}, {"input": [-56.0, -25.5], "expected": -25.499999999999943}, {"input": [-56.0, -25.0], "expected": -24.999999999999964}, {"input": [-56.0, -24.5], "expected": -24.49999999999998}, {"input": [-56.0, -24.0], "expected": -23.999999999999986}, {"input": [-56.0, -23.5], "expected": -23.499999999999993}, {"input": [-56.0, -23.0], "expected": -22.999999999999996}, {"input": [-56.0, -22.5], "expected": -22.499999999999996}, {"input": [-56.0, -22.0], "expected": -22.0}, {"input": [-56.0, -21.5], "expected": -21.5}, {"input": [-56.0, -21.0], "expected": -21.0}, {"input": [-56.0, -20.5], "expected": -20.5}, {"input": [-56.0, -20.0], "expected": -20.0}, {"input": [-56.0, -19.5], "expected": -19.5}, {"input": [-56.0, -19.0], "expected": -19.0}, {"input": [-56.0, -18.5], "expected": -18.5}, {"input": [-56.0, -18.0], "expected": -18.0}, {"input": [-56.0, -17.5], "expected": -17.5}, {"input": [-56.0, -17.0], "expected": -17.0}, {"input": [-56.0, -16.5], "expected": -16.5}, {"input": [-56.0, -16.0], "expected": -16.0}, {"input": [-56.0, -15.5], "expected": -15.5}, {"input": [-56.0, -15.0], "expected": -15.0}, {"input": [-56.0, -14.5], "expected": -14.5}, {"input": [-56.0, -14.0], "expected": -14.0}, {"input": [-56.0, -13.5], "expected": -13.5}, {"input": [-56.0, -13.0], "expected": -13.0}, {"input": [-56.0, -12.5], "expected": -12.5}, {"input": [-56.0, -12.0], "expected": -12.0}, {"input": [-56.0, -11.5], "expected": -11.5}, {"input": [-56.0, -11.0], "expected": -11.0}, {"input": [-56.0, -10.5], "expected": -10.5}, {"input": [-56.0, -10.0], "expected": -10.0}, {"input": [-56.0, -9.5], "expected": -9.5}, {"input": [-56.0, -9.0], "expected": -9.0}, {"input": [-56.0, -8.5], "expected": -8.5}, {"input": [-56.0, -8.0], "expected": -8.0}, {"input": [-56.0, -7.5], "expected": -7.5}, {"input": [-56.0, -7.0], "expected": -7.0}, {"input": [-56.0, -6.5], "expected": -6.5}, {"input": [-56.0, -6.0], "expected": -6.0}, {"input": [-56.0, -5.5], "expected": -5.5}, {"input": [-56.0, -5.0], "expected": -5.0}, {"input": [-56.0, -4.5], "expected": -4.5}, {"input": [-56.0, -4.0], "expected": -4.0}, {"input": [-56.0, -3.5], "expected": -3.5}, {"input": [-56.0, -3.0], "expected": -3.0}, {"input": [-56.0, -2.5], "expected": -2.5}, {"input": [-56.0, -2.0], "expected": -2.0}, {"input": [-56.0, -1.5], "expected": -1.5}, {"input": [-56.0, -1.0], "expected": -1.0}, {"input": [-56.0, -0.5], "expected": -0.5}, {"input": [-56.0, 0.0], "expected": 4.780892883885469e-25}, {"input": [-56.0, 0.5], "expected": 0.5}, {"input": [-56.0, 1.0], "expected": 1.0}, {"input": [-56.0, 1.5], "expected": 1.5}, {"input": [-56.0, 2.0], "expected": 2.0}, {"input": [-56.0, 2.5], "expected": 2.5}, {"input": [-56.0, 3.0], "expected": 3.0}, {"input": [-56.0, 3.5], "expected": 3.5}, {"input": [-56.0, 4.0], "expected": 4.0}, {"input": [-56.0, 4.5], "expected": 4.5}, {"input": [-56.0, 5.0], "expected": 5.0}, {"input": [-56.0, 5.5], "expected": 5.5}, {"input": [-56.0, 6.0], "expected": 6.0}, {"input": [-56.0, 6.5], "expected": 6.5}, {"input": [-56.0, 7.0], "expected": 7.0}, {"input": [-56.0, 7.5], "expected": 7.5}, {"input": [-56.0, 8.0], "expected": 8.0}, {"input": [-56.0, 8.5], "expected": 8.5}, {"input": [-56.0, 9.0], "expected": 9.0}, {"input": [-56.0, 9.5], "expected": 9.5}, {"input": [-56.0, 10.0], "expected": 10.0}, {"input": [-56.0, 10.5], "expected": 10.5}, {"input": [-56.0, 11.0], "expected": 11.0}, {"input": [-56.0, 11.5], "expected": 11.5}, {"input": [-56.0, 12.0], "expected": 12.0}, {"input": [-56.0, 12.5], "expected": 12.5}, {"input": [-56.0, 13.0], "expected": 13.0}, {"input": [-56.0, 13.5], "expected": 13.5}, {"input": [-56.0, 14.0], "expected": 14.0}, {"input": [-56.0, 14.5], "expected": 14.5}, {"input": [-56.0, 15.0], "expected": 15.0}, {"input": [-56.0, 15.5], "expected": 15.5}, {"input": [-56.0, 16.0], "expected": 16.0}, {"input": [-56.0, 16.5], "expected": 16.5}, {"input": [-56.0, 17.0], "expected": 17.0}, {"input": [-56.0, 17.5], "expected": 17.5}, {"input": [-56.0, 18.0], "expected": 18.0}, {"input": [-56.0, 18.5], "expected": 18.5}, {"input": [-56.0, 19.0], "expected": 19.0}, {"input": [-56.0, 19.5], "expected": 19.5}, {"input": [-56.0, 20.0], "expected": 20.0}, {"input": [-56.0, 20.5], "expected": 20.5}, {"input": [-56.0, 21.0], "expected": 21.0}, {"input": [-56.0, 21.5], "expected": 21.5}, {"input": [-56.0, 22.0], "expected": 22.0}, {"input": [-56.0, 22.5], "expected": 22.5}, {"input": [-56.0, 23.0], "expected": 23.0}, {"input": [-56.0, 23.5], "expected": 23.5}, {"input": [-56.0, 24.0], "expected": 24.0}, {"input": [-56.0, 24.5], "expected": 24.5}, {"input": [-56.0, 25.0], "expected": 25.0}, {"input": [-56.0, 25.5], "expected": 25.5}, {"input": [-56.0, 26.0], "expected": 26.0}, {"input": [-56.0, 26.5], "expected": 26.5}, {"input": [-56.0, 27.0], "expected": 27.0}, {"input": [-56.0, 27.5], "expected": 27.5}, {"input": [-56.0, 28.0], "expected": 28.0}, {"input": [-56.0, 28.5], "expected": 28.5}, {"input": [-56.0, 29.0], "expected": 29.0}, {"input": [-56.0, 29.5], "expected": 29.5}, {"input": [-56.0, 30.0], "expected": 30.0}, {"input": [-56.0, 30.5], "expected": 30.5}, {"input": [-56.0, 31.0], "expected": 31.0}, {"input": [-56.0, 31.5], "expected": 31.5}, {"input": [-56.0, 32.0], "expected": 32.0}, {"input": [-56.0, 32.5], "expected": 32.5}, {"input": [-56.0, 33.0], "expected": 33.0}, {"input": [-56.0, 33.5], "expected": 33.5}, {"input": [-56.0, 34.0], "expected": 34.0}, {"input": [-56.0, 34.5], "expected": 34.5}, {"input": [-56.0, 35.0], "expected": 35.0}, {"input": [-56.0, 35.5], "expected": 35.5}, {"input": [-56.0, 36.0], "expected": 36.0}, {"input": [-56.0, 36.5], "expected": 36.5}, {"input": [-56.0, 37.0], "expected": 37.0}, {"input": [-56.0, 37.5], "expected": 37.5}, {"input": [-56.0, 38.0], "expected": 38.0}, {"input": [-56.0, 38.5], "expected": 38.5}, {"input": [-56.0, 39.0], "expected": 39.0}, {"input": [-56.0, 39.5], "expected": 39.5}, {"input": [-56.0, 40.0], "expected": 40.0}, {"input": [-56.0, 40.5], "expected": 40.5}, {"input": [-56.0, 41.0], "expected": 41.0}, {"input": [-56.0, 41.5], "expected": 41.5}, {"input": [-56.0, 42.0], "expected": 42.0}, {"input": [-56.0, 42.5], "expected": 42.5}, {"input": [-56.0, 43.0], "expected": 43.0}, {"input": [-56.0, 43.5], "expected": 43.5}, {"input": [-56.0, 44.0], "expected": 44.0}, {"input": [-56.0, 44.5], "expected": 44.5}, {"input": [-56.0, 45.0], "expected": 45.0}, {"input": [-56.0, 45.5], "expected": 45.5}, {"input": [-56.0, 46.0], "expected": 46.0}, {"input": [-56.0, 46.5], "expected": 46.5}, {"input": [-56.0, 47.0], "expected": 47.0}, {"input": [-56.0, 47.5], "expected": 47.5}, {"input": [-56.0, 48.0], "expected": 48.0}, {"input": [-56.0, 48.5], "expected": 48.5}, {"input": [-56.0, 49.0], "expected": 49.0}, {"input": [-56.0, 49.5], "expected": 49.5}, {"input": [-56.0, 50.0], "expected": 50.0}, {"input": [-56.0, 50.5], "expected": 50.5}, {"input": [-56.0, 51.0], "expected": 51.0}, {"input": [-56.0, 51.5], "expected": 51.5}, {"input": [-56.0, 52.0], "expected": 52.0}, {"input": [-56.0, 52.5], "expected": 52.5}, {"input": [-56.0, 53.0], "expected": 53.0}, {"input": [-56.0, 53.5], "expected": 53.5}, {"input": [-56.0, 54.0], "expected": 54.0}, {"input": [-56.0, 54.5], "expected": 54.5}, {"input": [-56.0, 55.0], "expected": 55.0}, {"input": [-56.0, 55.5], "expected": 55.5}, {"input": [-56.0, 56.0], "expected": 56.0}, {"input": [-56.0, 56.5], "expected": 56.5}, {"input": [-56.0, 57.0], "expected": 57.0}, {"input": [-56.0, 57.5], "expected": 57.5}, {"input": [-56.0, 58.0], "expected": 58.0}, {"input": [-56.0, 58.5], "expected": 58.5}, {"input": [-56.0, 59.0], "expected": 59.0}, {"input": [-56.0, 59.5], "expected": 59.5}, {"input": [-56.0, 60.0], "expected": 60.0}, {"input": [-56.0, 60.5], "expected": 60.5}, {"input": [-56.0, 61.0], "expected": 61.0}, {"input": [-56.0, 61.5], "expected": 61.5}, {"input": [-56.0, 62.0], "expected": 62.0}, {"input": [-56.0, 62.5], "expected": 62.5}, {"input": [-56.0, 63.0], "expected": 63.0}, {"input": [-56.0, 63.5], "expected": 63.5}, {"input": [-56.0, 64.0], "expected": 64.0}, {"input": [-56.0, 64.5], "expected": 64.5}, {"input": [-56.0, 65.0], "expected": 65.0}, {"input": [-56.0, 65.5], "expected": 65.5}, {"input": [-56.0, 66.0], "expected": 66.0}, {"input": [-56.0, 66.5], "expected": 66.5}, {"input": [-56.0, 67.0], "expected": 67.0}, {"input": [-56.0, 67.5], "expected": 67.5}, {"input": [-56.0, 68.0], "expected": 68.0}, {"input": [-56.0, 68.5], "expected": 68.5}, {"input": [-56.0, 69.0], "expected": 69.0}, {"input": [-56.0, 69.5], "expected": 69.5}, {"input": [-56.0, 70.0], "expected": 70.0}, {"input": [-56.0, 70.5], "expected": 70.5}, {"input": [-56.0, 71.0], "expected": 71.0}, {"input": [-56.0, 71.5], "expected": 71.5}, {"input": [-56.0, 72.0], "expected": 72.0}, {"input": [-56.0, 72.5], "expected": 72.5}, {"input": [-56.0, 73.0], "expected": 73.0}, {"input": [-56.0, 73.5], "expected": 73.5}, {"input": [-56.0, 74.0], "expected": 74.0}, {"input": [-56.0, 74.5], "expected": 74.5}, {"input": [-56.0, 75.0], "expected": 75.0}, {"input": [-56.0, 75.5], "expected": 75.5}, {"input": [-56.0, 76.0], "expected": 76.0}, {"input": [-56.0, 76.5], "expected": 76.5}, {"input": [-56.0, 77.0], "expected": 77.0}, {"input": [-56.0, 77.5], "expected": 77.5}, {"input": [-56.0, 78.0], "expected": 78.0}, {"input": [-56.0, 78.5], "expected": 78.5}, {"input": [-56.0, 79.0], "expected": 79.0}, {"input": [-56.0, 79.5], "expected": 79.5}, {"input": [-56.0, 80.0], "expected": 80.0}, {"input": [-56.0, 80.5], "expected": 80.5}, {"input": [-56.0, 81.0], "expected": 81.0}, {"input": [-56.0, 81.5], "expected": 81.5}, {"input": [-56.0, 82.0], "expected": 82.0}, {"input": [-56.0, 82.5], "expected": 82.5}, {"input": [-56.0, 83.0], "expected": 83.0}, {"input": [-56.0, 83.5], "expected": 83.5}, {"input": [-56.0, 84.0], "expected": 84.0}, {"input": [-56.0, 84.5], "expected": 84.5}, {"input": [-56.0, 85.0], "expected": 85.0}, {"input": [-56.0, 85.5], "expected": 85.5}, {"input": [-56.0, 86.0], "expected": 86.0}, {"input": [-56.0, 86.5], "expected": 86.5}, {"input": [-56.0, 87.0], "expected": 87.0}, {"input": [-56.0, 87.5], "expected": 87.5}, {"input": [-56.0, 88.0], "expected": 88.0}, {"input": [-56.0, 88.5], "expected": 88.5}, {"input": [-56.0, 89.0], "expected": 89.0}, {"input": [-56.0, 89.5], "expected": 89.5}, {"input": [-56.0, 90.0], "expected": 90.0}, {"input": [-56.0, 90.5], "expected": 90.5}, {"input": [-56.0, 91.0], "expected": 91.0}, {"input": [-56.0, 91.5], "expected": 91.5}, {"input": [-56.0, 92.0], "expected": 92.0}, {"input": [-56.0, 92.5], "expected": 92.5}, {"input": [-56.0, 93.0], "expected": 93.0}, {"input": [-56.0, 93.5], "expected": 93.5}, {"input": [-56.0, 94.0], "expected": 94.0}, {"input": [-56.0, 94.5], "expected": 94.5}, {"input": [-56.0, 95.0], "expected": 95.0}, {"input": [-56.0, 95.5], "expected": 95.5}, {"input": [-56.0, 96.0], "expected": 96.0}, {"input": [-56.0, 96.5], "expected": 96.5}, {"input": [-56.0, 97.0], "expected": 97.0}, {"input": [-56.0, 97.5], "expected": 97.5}, {"input": [-56.0, 98.0], "expected": 98.0}, {"input": [-56.0, 98.5], "expected": 98.5}, {"input": [-56.0, 99.0], "expected": 99.0}, {"input": [-56.0, 99.5], "expected": 99.5}, {"input": [-55.5, -100.0], "expected": -55.5}, {"input": [-55.5, -99.5], "expected": -55.5}, {"input": [-55.5, -99.0], "expected": -55.5}, {"input": [-55.5, -98.5], "expected": -55.5}, {"input": [-55.5, -98.0], "expected": -55.5}, {"input": [-55.5, -97.5], "expected": -55.5}, {"input": [-55.5, -97.0], "expected": -55.5}, {"input": [-55.5, -96.5], "expected": -55.5}, {"input": [-55.5, -96.0], "expected": -55.5}, {"input": [-55.5, -95.5], "expected": -55.5}, {"input": [-55.5, -95.0], "expected": -55.5}, {"input": [-55.5, -94.5], "expected": -55.5}, {"input": [-55.5, -94.0], "expected": -55.5}, {"input": [-55.5, -93.5], "expected": -55.5}, {"input": [-55.5, -93.0], "expected": -55.5}, {"input": [-55.5, -92.5], "expected": -55.5}, {"input": [-55.5, -92.0], "expected": -55.5}, {"input": [-55.5, -91.5], "expected": -55.5}, {"input": [-55.5, -91.0], "expected": -55.5}, {"input": [-55.5, -90.5], "expected": -55.5}, {"input": [-55.5, -90.0], "expected": -55.5}, {"input": [-55.5, -89.5], "expected": -55.5}, {"input": [-55.5, -89.0], "expected": -55.5}, {"input": [-55.5, -88.5], "expected": -55.49999999999999}, {"input": [-55.5, -88.0], "expected": -55.49999999999999}, {"input": [-55.5, -87.5], "expected": -55.499999999999986}, {"input": [-55.5, -87.0], "expected": -55.49999999999998}, {"input": [-55.5, -86.5], "expected": -55.499999999999964}, {"input": [-55.5, -86.0], "expected": -55.49999999999994}, {"input": [-55.5, -85.5], "expected": -55.49999999999991}, {"input": [-55.5, -85.0], "expected": -55.499999999999844}, {"input": [-55.5, -84.5], "expected": -55.499999999999744}, {"input": [-55.5, -84.0], "expected": -55.49999999999958}, {"input": [-55.5, -83.5], "expected": -55.49999999999931}, {"input": [-55.5, -83.0], "expected": -55.49999999999886}, {"input": [-55.5, -82.5], "expected": -55.49999999999812}, {"input": [-55.5, -82.0], "expected": -55.4999999999969}, {"input": [-55.5, -81.5], "expected": -55.49999999999489}, {"input": [-55.5, -81.0], "expected": -55.49999999999158}, {"input": [-55.5, -80.5], "expected": -55.49999999998611}, {"input": [-55.5, -80.0], "expected": -55.4999999999771}, {"input": [-55.5, -79.5], "expected": -55.49999999996225}, {"input": [-55.5, -79.0], "expected": -55.49999999993776}, {"input": [-55.5, -78.5], "expected": -55.49999999989738}, {"input": [-55.5, -78.0], "expected": -55.49999999983081}, {"input": [-55.5, -77.5], "expected": -55.499999999721055}, {"input": [-55.5, -77.0], "expected": -55.499999999540094}, {"input": [-55.5, -76.5], "expected": -55.499999999241744}, {"input": [-55.5, -76.0], "expected": -55.49999999874985}, {"input": [-55.5, -75.5], "expected": -55.49999999793884}, {"input": [-55.5, -75.0], "expected": -55.49999999660173}, {"input": [-55.5, -74.5], "expected": -55.49999999439721}, {"input": [-55.5, -74.0], "expected": -55.499999990762554}, {"input": [-55.5, -73.5], "expected": -55.49999998477002}, {"input": [-55.5, -73.0], "expected": -55.49999997489001}, {"input": [-55.5, -72.5], "expected": -55.499999958600625}, {"input": [-55.5, -72.0], "expected": -55.49999993174397}, {"input": [-55.5, -71.5], "expected": -55.49999988746483}, {"input": [-55.5, -71.0], "expected": -55.49999981446088}, {"input": [-55.5, -70.5], "expected": -55.499999694097724}, {"input": [-55.5, -70.0], "expected": -55.49999949565247}, {"input": [-55.5, -69.5], "expected": -55.499999168471625}, {"input": [-55.5, -69.0], "expected": -55.499998629041855}, {"input": [-55.5, -68.5], "expected": -55.49999773967315}, {"input": [-55.5, -68.0], "expected": -55.49999627335377}, {"input": [-55.5, -67.5], "expected": -55.49999385580652}, {"input": [-55.5, -67.0], "expected": -55.49998986995771}, {"input": [-55.5, -66.5], "expected": -55.49998329843868}, {"input": [-55.5, -66.0], "expected": -55.49997246392977}, {"input": [-55.5, -65.5], "expected": -55.49995460110078}, {"input": [-55.5, -65.0], "expected": -55.49992515097137}, {"input": [-55.5, -64.5], "expected": -55.49987659781028}, {"input": [-55.5, -64.0], "expected": -55.49979655232787}, {"input": [-55.5, -63.5], "expected": -55.4996645936271}, {"input": [-55.5, -63.0], "expected": -55.49944706852464}, {"input": [-55.5, -62.5], "expected": -55.49908853354623}, {"input": [-55.5, -62.0], "expected": -55.49849768984024}, {"input": [-55.5, -61.5], "expected": -55.49752431486227}, {"input": [-55.5, -61.0], "expected": -55.49592155672943}, {"input": [-55.5, -60.5], "expected": -55.49328465151088}, {"input": [-55.5, -60.0], "expected": -55.4889522551514}, {"input": [-55.5, -59.5], "expected": -55.48185007208219}, {"input": [-55.5, -59.0], "expected": -55.47024958172738}, {"input": [-55.5, -58.5], "expected": -55.451412648426256}, {"input": [-55.5, -58.0], "expected": -55.42111026570745}, {"input": [-55.5, -57.5], "expected": -55.37307198895703}, {"input": [-55.5, -57.0], "expected": -55.29858672201725}, {"input": [-55.5, -56.5], "expected": -55.18673831248178}, {"input": [-55.5, -56.0], "expected": -55.02592301581989}, {"input": [-55.5, -55.5], "expected": -54.80685281944005}, {"input": [-55.5, -55.0], "expected": -54.52592301581989}, {"input": [-55.5, -54.5], "expected": -54.18673831248178}, {"input": [-55.5, -54.0], "expected": -53.79858672201725}, {"input": [-55.5, -53.5], "expected": -53.37307198895703}, {"input": [-55.5, -53.0], "expected": -52.92111026570745}, {"input": [-55.5, -52.5], "expected": -52.451412648426256}, {"input": [-55.5, -52.0], "expected": -51.97024958172738}, {"input": [-55.5, -51.5], "expected": -51.48185007208219}, {"input": [-55.5, -51.0], "expected": -50.9889522551514}, {"input": [-55.5, -50.5], "expected": -50.49328465151088}, {"input": [-55.5, -50.0], "expected": -49.99592155672943}, {"input": [-55.5, -49.5], "expected": -49.49752431486227}, {"input": [-55.5, -49.0], "expected": -48.99849768984024}, {"input": [-55.5, -48.5], "expected": -48.49908853354623}, {"input": [-55.5, -48.0], "expected": -47.99944706852464}, {"input": [-55.5, -47.5], "expected": -47.4996645936271}, {"input": [-55.5, -47.0], "expected": -46.99979655232787}, {"input": [-55.5, -46.5], "expected": -46.49987659781028}, {"input": [-55.5, -46.0], "expected": -45.99992515097137}, {"input": [-55.5, -45.5], "expected": -45.49995460110078}, {"input": [-55.5, -45.0], "expected": -44.99997246392977}, {"input": [-55.5, -44.5], "expected": -44.49998329843868}, {"input": [-55.5, -44.0], "expected": -43.99998986995771}, {"input": [-55.5, -43.5], "expected": -43.49999385580652}, {"input": [-55.5, -43.0], "expected": -42.99999627335377}, {"input": [-55.5, -42.5], "expected": -42.49999773967315}, {"input": [-55.5, -42.0], "expected": -41.999998629041855}, {"input": [-55.5, -41.5], "expected": -41.499999168471625}, {"input": [-55.5, -41.0], "expected": -40.99999949565247}, {"input": [-55.5, -40.5], "expected": -40.499999694097724}, {"input": [-55.5, -40.0], "expected": -39.99999981446088}, {"input": [-55.5, -39.5], "expected": -39.49999988746483}, {"input": [-55.5, -39.0], "expected": -38.99999993174397}, {"input": [-55.5, -38.5], "expected": -38.499999958600625}, {"input": [-55.5, -38.0], "expected": -37.99999997489001}, {"input": [-55.5, -37.5], "expected": -37.49999998477002}, {"input": [-55.5, -37.0], "expected": -36.999999990762554}, {"input": [-55.5, -36.5], "expected": -36.49999999439721}, {"input": [-55.5, -36.0], "expected": -35.99999999660173}, {"input": [-55.5, -35.5], "expected": -35.49999999793884}, {"input": [-55.5, -35.0], "expected": -34.99999999874985}, {"input": [-55.5, -34.5], "expected": -34.499999999241744}, {"input": [-55.5, -34.0], "expected": -33.999999999540094}, {"input": [-55.5, -33.5], "expected": -33.499999999721055}, {"input": [-55.5, -33.0], "expected": -32.99999999983081}, {"input": [-55.5, -32.5], "expected": -32.49999999989738}, {"input": [-55.5, -32.0], "expected": -31.99999999993776}, {"input": [-55.5, -31.5], "expected": -31.49999999996225}, {"input": [-55.5, -31.0], "expected": -30.999999999977103}, {"input": [-55.5, -30.5], "expected": -30.499999999986112}, {"input": [-55.5, -30.0], "expected": -29.999999999991577}, {"input": [-55.5, -29.5], "expected": -29.49999999999489}, {"input": [-55.5, -29.0], "expected": -28.999999999996902}, {"input": [-55.5, -28.5], "expected": -28.49999999999812}, {"input": [-55.5, -28.0], "expected": -27.99999999999886}, {"input": [-55.5, -27.5], "expected": -27.499999999999307}, {"input": [-55.5, -27.0], "expected": -26.99999999999958}, {"input": [-55.5, -26.5], "expected": -26.499999999999744}, {"input": [-55.5, -26.0], "expected": -25.999999999999847}, {"input": [-55.5, -25.5], "expected": -25.499999999999908}, {"input": [-55.5, -25.0], "expected": -24.999999999999943}, {"input": [-55.5, -24.5], "expected": -24.499999999999964}, {"input": [-55.5, -24.0], "expected": -23.99999999999998}, {"input": [-55.5, -23.5], "expected": -23.499999999999986}, {"input": [-55.5, -23.0], "expected": -22.999999999999993}, {"input": [-55.5, -22.5], "expected": -22.499999999999996}, {"input": [-55.5, -22.0], "expected": -21.999999999999996}, {"input": [-55.5, -21.5], "expected": -21.5}, {"input": [-55.5, -21.0], "expected": -21.0}, {"input": [-55.5, -20.5], "expected": -20.5}, {"input": [-55.5, -20.0], "expected": -20.0}, {"input": [-55.5, -19.5], "expected": -19.5}, {"input": [-55.5, -19.0], "expected": -19.0}, {"input": [-55.5, -18.5], "expected": -18.5}, {"input": [-55.5, -18.0], "expected": -18.0}, {"input": [-55.5, -17.5], "expected": -17.5}, {"input": [-55.5, -17.0], "expected": -17.0}, {"input": [-55.5, -16.5], "expected": -16.5}, {"input": [-55.5, -16.0], "expected": -16.0}, {"input": [-55.5, -15.5], "expected": -15.5}, {"input": [-55.5, -15.0], "expected": -15.0}, {"input": [-55.5, -14.5], "expected": -14.5}, {"input": [-55.5, -14.0], "expected": -14.0}, {"input": [-55.5, -13.5], "expected": -13.5}, {"input": [-55.5, -13.0], "expected": -13.0}, {"input": [-55.5, -12.5], "expected": -12.5}, {"input": [-55.5, -12.0], "expected": -12.0}, {"input": [-55.5, -11.5], "expected": -11.5}, {"input": [-55.5, -11.0], "expected": -11.0}, {"input": [-55.5, -10.5], "expected": -10.5}, {"input": [-55.5, -10.0], "expected": -10.0}, {"input": [-55.5, -9.5], "expected": -9.5}, {"input": [-55.5, -9.0], "expected": -9.0}, {"input": [-55.5, -8.5], "expected": -8.5}, {"input": [-55.5, -8.0], "expected": -8.0}, {"input": [-55.5, -7.5], "expected": -7.5}, {"input": [-55.5, -7.0], "expected": -7.0}, {"input": [-55.5, -6.5], "expected": -6.5}, {"input": [-55.5, -6.0], "expected": -6.0}, {"input": [-55.5, -5.5], "expected": -5.5}, {"input": [-55.5, -5.0], "expected": -5.0}, {"input": [-55.5, -4.5], "expected": -4.5}, {"input": [-55.5, -4.0], "expected": -4.0}, {"input": [-55.5, -3.5], "expected": -3.5}, {"input": [-55.5, -3.0], "expected": -3.0}, {"input": [-55.5, -2.5], "expected": -2.5}, {"input": [-55.5, -2.0], "expected": -2.0}, {"input": [-55.5, -1.5], "expected": -1.5}, {"input": [-55.5, -1.0], "expected": -1.0}, {"input": [-55.5, -0.5], "expected": -0.5}, {"input": [-55.5, 0.0], "expected": 7.882359790600851e-25}, {"input": [-55.5, 0.5], "expected": 0.5}, {"input": [-55.5, 1.0], "expected": 1.0}, {"input": [-55.5, 1.5], "expected": 1.5}, {"input": [-55.5, 2.0], "expected": 2.0}, {"input": [-55.5, 2.5], "expected": 2.5}, {"input": [-55.5, 3.0], "expected": 3.0}, {"input": [-55.5, 3.5], "expected": 3.5}, {"input": [-55.5, 4.0], "expected": 4.0}, {"input": [-55.5, 4.5], "expected": 4.5}, {"input": [-55.5, 5.0], "expected": 5.0}, {"input": [-55.5, 5.5], "expected": 5.5}, {"input": [-55.5, 6.0], "expected": 6.0}, {"input": [-55.5, 6.5], "expected": 6.5}, {"input": [-55.5, 7.0], "expected": 7.0}, {"input": [-55.5, 7.5], "expected": 7.5}, {"input": [-55.5, 8.0], "expected": 8.0}, {"input": [-55.5, 8.5], "expected": 8.5}, {"input": [-55.5, 9.0], "expected": 9.0}, {"input": [-55.5, 9.5], "expected": 9.5}, {"input": [-55.5, 10.0], "expected": 10.0}, {"input": [-55.5, 10.5], "expected": 10.5}, {"input": [-55.5, 11.0], "expected": 11.0}, {"input": [-55.5, 11.5], "expected": 11.5}, {"input": [-55.5, 12.0], "expected": 12.0}, {"input": [-55.5, 12.5], "expected": 12.5}, {"input": [-55.5, 13.0], "expected": 13.0}, {"input": [-55.5, 13.5], "expected": 13.5}, {"input": [-55.5, 14.0], "expected": 14.0}, {"input": [-55.5, 14.5], "expected": 14.5}, {"input": [-55.5, 15.0], "expected": 15.0}, {"input": [-55.5, 15.5], "expected": 15.5}, {"input": [-55.5, 16.0], "expected": 16.0}, {"input": [-55.5, 16.5], "expected": 16.5}, {"input": [-55.5, 17.0], "expected": 17.0}, {"input": [-55.5, 17.5], "expected": 17.5}, {"input": [-55.5, 18.0], "expected": 18.0}, {"input": [-55.5, 18.5], "expected": 18.5}, {"input": [-55.5, 19.0], "expected": 19.0}, {"input": [-55.5, 19.5], "expected": 19.5}, {"input": [-55.5, 20.0], "expected": 20.0}, {"input": [-55.5, 20.5], "expected": 20.5}, {"input": [-55.5, 21.0], "expected": 21.0}, {"input": [-55.5, 21.5], "expected": 21.5}, {"input": [-55.5, 22.0], "expected": 22.0}, {"input": [-55.5, 22.5], "expected": 22.5}, {"input": [-55.5, 23.0], "expected": 23.0}, {"input": [-55.5, 23.5], "expected": 23.5}, {"input": [-55.5, 24.0], "expected": 24.0}, {"input": [-55.5, 24.5], "expected": 24.5}, {"input": [-55.5, 25.0], "expected": 25.0}, {"input": [-55.5, 25.5], "expected": 25.5}, {"input": [-55.5, 26.0], "expected": 26.0}, {"input": [-55.5, 26.5], "expected": 26.5}, {"input": [-55.5, 27.0], "expected": 27.0}, {"input": [-55.5, 27.5], "expected": 27.5}, {"input": [-55.5, 28.0], "expected": 28.0}, {"input": [-55.5, 28.5], "expected": 28.5}, {"input": [-55.5, 29.0], "expected": 29.0}, {"input": [-55.5, 29.5], "expected": 29.5}, {"input": [-55.5, 30.0], "expected": 30.0}, {"input": [-55.5, 30.5], "expected": 30.5}, {"input": [-55.5, 31.0], "expected": 31.0}, {"input": [-55.5, 31.5], "expected": 31.5}, {"input": [-55.5, 32.0], "expected": 32.0}, {"input": [-55.5, 32.5], "expected": 32.5}, {"input": [-55.5, 33.0], "expected": 33.0}, {"input": [-55.5, 33.5], "expected": 33.5}, {"input": [-55.5, 34.0], "expected": 34.0}, {"input": [-55.5, 34.5], "expected": 34.5}, {"input": [-55.5, 35.0], "expected": 35.0}, {"input": [-55.5, 35.5], "expected": 35.5}, {"input": [-55.5, 36.0], "expected": 36.0}, {"input": [-55.5, 36.5], "expected": 36.5}, {"input": [-55.5, 37.0], "expected": 37.0}, {"input": [-55.5, 37.5], "expected": 37.5}, {"input": [-55.5, 38.0], "expected": 38.0}, {"input": [-55.5, 38.5], "expected": 38.5}, {"input": [-55.5, 39.0], "expected": 39.0}, {"input": [-55.5, 39.5], "expected": 39.5}, {"input": [-55.5, 40.0], "expected": 40.0}, {"input": [-55.5, 40.5], "expected": 40.5}, {"input": [-55.5, 41.0], "expected": 41.0}, {"input": [-55.5, 41.5], "expected": 41.5}, {"input": [-55.5, 42.0], "expected": 42.0}, {"input": [-55.5, 42.5], "expected": 42.5}, {"input": [-55.5, 43.0], "expected": 43.0}, {"input": [-55.5, 43.5], "expected": 43.5}, {"input": [-55.5, 44.0], "expected": 44.0}, {"input": [-55.5, 44.5], "expected": 44.5}, {"input": [-55.5, 45.0], "expected": 45.0}, {"input": [-55.5, 45.5], "expected": 45.5}, {"input": [-55.5, 46.0], "expected": 46.0}, {"input": [-55.5, 46.5], "expected": 46.5}, {"input": [-55.5, 47.0], "expected": 47.0}, {"input": [-55.5, 47.5], "expected": 47.5}, {"input": [-55.5, 48.0], "expected": 48.0}, {"input": [-55.5, 48.5], "expected": 48.5}, {"input": [-55.5, 49.0], "expected": 49.0}, {"input": [-55.5, 49.5], "expected": 49.5}, {"input": [-55.5, 50.0], "expected": 50.0}, {"input": [-55.5, 50.5], "expected": 50.5}, {"input": [-55.5, 51.0], "expected": 51.0}, {"input": [-55.5, 51.5], "expected": 51.5}, {"input": [-55.5, 52.0], "expected": 52.0}, {"input": [-55.5, 52.5], "expected": 52.5}, {"input": [-55.5, 53.0], "expected": 53.0}, {"input": [-55.5, 53.5], "expected": 53.5}, {"input": [-55.5, 54.0], "expected": 54.0}, {"input": [-55.5, 54.5], "expected": 54.5}, {"input": [-55.5, 55.0], "expected": 55.0}, {"input": [-55.5, 55.5], "expected": 55.5}, {"input": [-55.5, 56.0], "expected": 56.0}, {"input": [-55.5, 56.5], "expected": 56.5}, {"input": [-55.5, 57.0], "expected": 57.0}, {"input": [-55.5, 57.5], "expected": 57.5}, {"input": [-55.5, 58.0], "expected": 58.0}, {"input": [-55.5, 58.5], "expected": 58.5}, {"input": [-55.5, 59.0], "expected": 59.0}, {"input": [-55.5, 59.5], "expected": 59.5}, {"input": [-55.5, 60.0], "expected": 60.0}, {"input": [-55.5, 60.5], "expected": 60.5}, {"input": [-55.5, 61.0], "expected": 61.0}, {"input": [-55.5, 61.5], "expected": 61.5}, {"input": [-55.5, 62.0], "expected": 62.0}, {"input": [-55.5, 62.5], "expected": 62.5}, {"input": [-55.5, 63.0], "expected": 63.0}, {"input": [-55.5, 63.5], "expected": 63.5}, {"input": [-55.5, 64.0], "expected": 64.0}, {"input": [-55.5, 64.5], "expected": 64.5}, {"input": [-55.5, 65.0], "expected": 65.0}, {"input": [-55.5, 65.5], "expected": 65.5}, {"input": [-55.5, 66.0], "expected": 66.0}, {"input": [-55.5, 66.5], "expected": 66.5}, {"input": [-55.5, 67.0], "expected": 67.0}, {"input": [-55.5, 67.5], "expected": 67.5}, {"input": [-55.5, 68.0], "expected": 68.0}, {"input": [-55.5, 68.5], "expected": 68.5}, {"input": [-55.5, 69.0], "expected": 69.0}, {"input": [-55.5, 69.5], "expected": 69.5}, {"input": [-55.5, 70.0], "expected": 70.0}, {"input": [-55.5, 70.5], "expected": 70.5}, {"input": [-55.5, 71.0], "expected": 71.0}, {"input": [-55.5, 71.5], "expected": 71.5}, {"input": [-55.5, 72.0], "expected": 72.0}, {"input": [-55.5, 72.5], "expected": 72.5}, {"input": [-55.5, 73.0], "expected": 73.0}, {"input": [-55.5, 73.5], "expected": 73.5}, {"input": [-55.5, 74.0], "expected": 74.0}, {"input": [-55.5, 74.5], "expected": 74.5}, {"input": [-55.5, 75.0], "expected": 75.0}, {"input": [-55.5, 75.5], "expected": 75.5}, {"input": [-55.5, 76.0], "expected": 76.0}, {"input": [-55.5, 76.5], "expected": 76.5}, {"input": [-55.5, 77.0], "expected": 77.0}, {"input": [-55.5, 77.5], "expected": 77.5}, {"input": [-55.5, 78.0], "expected": 78.0}, {"input": [-55.5, 78.5], "expected": 78.5}, {"input": [-55.5, 79.0], "expected": 79.0}, {"input": [-55.5, 79.5], "expected": 79.5}, {"input": [-55.5, 80.0], "expected": 80.0}, {"input": [-55.5, 80.5], "expected": 80.5}, {"input": [-55.5, 81.0], "expected": 81.0}, {"input": [-55.5, 81.5], "expected": 81.5}, {"input": [-55.5, 82.0], "expected": 82.0}, {"input": [-55.5, 82.5], "expected": 82.5}, {"input": [-55.5, 83.0], "expected": 83.0}, {"input": [-55.5, 83.5], "expected": 83.5}, {"input": [-55.5, 84.0], "expected": 84.0}, {"input": [-55.5, 84.5], "expected": 84.5}, {"input": [-55.5, 85.0], "expected": 85.0}, {"input": [-55.5, 85.5], "expected": 85.5}, {"input": [-55.5, 86.0], "expected": 86.0}, {"input": [-55.5, 86.5], "expected": 86.5}, {"input": [-55.5, 87.0], "expected": 87.0}, {"input": [-55.5, 87.5], "expected": 87.5}, {"input": [-55.5, 88.0], "expected": 88.0}, {"input": [-55.5, 88.5], "expected": 88.5}, {"input": [-55.5, 89.0], "expected": 89.0}, {"input": [-55.5, 89.5], "expected": 89.5}, {"input": [-55.5, 90.0], "expected": 90.0}, {"input": [-55.5, 90.5], "expected": 90.5}, {"input": [-55.5, 91.0], "expected": 91.0}, {"input": [-55.5, 91.5], "expected": 91.5}, {"input": [-55.5, 92.0], "expected": 92.0}, {"input": [-55.5, 92.5], "expected": 92.5}, {"input": [-55.5, 93.0], "expected": 93.0}, {"input": [-55.5, 93.5], "expected": 93.5}, {"input": [-55.5, 94.0], "expected": 94.0}, {"input": [-55.5, 94.5], "expected": 94.5}, {"input": [-55.5, 95.0], "expected": 95.0}, {"input": [-55.5, 95.5], "expected": 95.5}, {"input": [-55.5, 96.0], "expected": 96.0}, {"input": [-55.5, 96.5], "expected": 96.5}, {"input": [-55.5, 97.0], "expected": 97.0}, {"input": [-55.5, 97.5], "expected": 97.5}, {"input": [-55.5, 98.0], "expected": 98.0}, {"input": [-55.5, 98.5], "expected": 98.5}, {"input": [-55.5, 99.0], "expected": 99.0}, {"input": [-55.5, 99.5], "expected": 99.5}, {"input": [-55.0, -100.0], "expected": -55.0}, {"input": [-55.0, -99.5], "expected": -55.0}, {"input": [-55.0, -99.0], "expected": -55.0}, {"input": [-55.0, -98.5], "expected": -55.0}, {"input": [-55.0, -98.0], "expected": -55.0}, {"input": [-55.0, -97.5], "expected": -55.0}, {"input": [-55.0, -97.0], "expected": -55.0}, {"input": [-55.0, -96.5], "expected": -55.0}, {"input": [-55.0, -96.0], "expected": -55.0}, {"input": [-55.0, -95.5], "expected": -55.0}, {"input": [-55.0, -95.0], "expected": -55.0}, {"input": [-55.0, -94.5], "expected": -55.0}, {"input": [-55.0, -94.0], "expected": -55.0}, {"input": [-55.0, -93.5], "expected": -55.0}, {"input": [-55.0, -93.0], "expected": -55.0}, {"input": [-55.0, -92.5], "expected": -55.0}, {"input": [-55.0, -92.0], "expected": -55.0}, {"input": [-55.0, -91.5], "expected": -55.0}, {"input": [-55.0, -91.0], "expected": -55.0}, {"input": [-55.0, -90.5], "expected": -55.0}, {"input": [-55.0, -90.0], "expected": -55.0}, {"input": [-55.0, -89.5], "expected": -55.0}, {"input": [-55.0, -89.0], "expected": -55.0}, {"input": [-55.0, -88.5], "expected": -55.0}, {"input": [-55.0, -88.0], "expected": -54.99999999999999}, {"input": [-55.0, -87.5], "expected": -54.99999999999999}, {"input": [-55.0, -87.0], "expected": -54.999999999999986}, {"input": [-55.0, -86.5], "expected": -54.99999999999998}, {"input": [-55.0, -86.0], "expected": -54.999999999999964}, {"input": [-55.0, -85.5], "expected": -54.99999999999994}, {"input": [-55.0, -85.0], "expected": -54.99999999999991}, {"input": [-55.0, -84.5], "expected": -54.999999999999844}, {"input": [-55.0, -84.0], "expected": -54.999999999999744}, {"input": [-55.0, -83.5], "expected": -54.99999999999958}, {"input": [-55.0, -83.0], "expected": -54.99999999999931}, {"input": [-55.0, -82.5], "expected": -54.99999999999886}, {"input": [-55.0, -82.0], "expected": -54.99999999999812}, {"input": [-55.0, -81.5], "expected": -54.9999999999969}, {"input": [-55.0, -81.0], "expected": -54.99999999999489}, {"input": [-55.0, -80.5], "expected": -54.99999999999158}, {"input": [-55.0, -80.0], "expected": -54.99999999998611}, {"input": [-55.0, -79.5], "expected": -54.9999999999771}, {"input": [-55.0, -79.0], "expected": -54.99999999996225}, {"input": [-55.0, -78.5], "expected": -54.99999999993776}, {"input": [-55.0, -78.0], "expected": -54.99999999989738}, {"input": [-55.0, -77.5], "expected": -54.99999999983081}, {"input": [-55.0, -77.0], "expected": -54.999999999721055}, {"input": [-55.0, -76.5], "expected": -54.999999999540094}, {"input": [-55.0, -76.0], "expected": -54.999999999241744}, {"input": [-55.0, -75.5], "expected": -54.99999999874985}, {"input": [-55.0, -75.0], "expected": -54.99999999793884}, {"input": [-55.0, -74.5], "expected": -54.99999999660173}, {"input": [-55.0, -74.0], "expected": -54.99999999439721}, {"input": [-55.0, -73.5], "expected": -54.999999990762554}, {"input": [-55.0, -73.0], "expected": -54.99999998477002}, {"input": [-55.0, -72.5], "expected": -54.99999997489001}, {"input": [-55.0, -72.0], "expected": -54.999999958600625}, {"input": [-55.0, -71.5], "expected": -54.99999993174397}, {"input": [-55.0, -71.0], "expected": -54.99999988746483}, {"input": [-55.0, -70.5], "expected": -54.99999981446088}, {"input": [-55.0, -70.0], "expected": -54.999999694097724}, {"input": [-55.0, -69.5], "expected": -54.99999949565247}, {"input": [-55.0, -69.0], "expected": -54.999999168471625}, {"input": [-55.0, -68.5], "expected": -54.999998629041855}, {"input": [-55.0, -68.0], "expected": -54.99999773967315}, {"input": [-55.0, -67.5], "expected": -54.99999627335377}, {"input": [-55.0, -67.0], "expected": -54.99999385580652}, {"input": [-55.0, -66.5], "expected": -54.99998986995771}, {"input": [-55.0, -66.0], "expected": -54.99998329843868}, {"input": [-55.0, -65.5], "expected": -54.99997246392977}, {"input": [-55.0, -65.0], "expected": -54.99995460110078}, {"input": [-55.0, -64.5], "expected": -54.99992515097137}, {"input": [-55.0, -64.0], "expected": -54.99987659781028}, {"input": [-55.0, -63.5], "expected": -54.99979655232787}, {"input": [-55.0, -63.0], "expected": -54.9996645936271}, {"input": [-55.0, -62.5], "expected": -54.99944706852464}, {"input": [-55.0, -62.0], "expected": -54.99908853354623}, {"input": [-55.0, -61.5], "expected": -54.99849768984024}, {"input": [-55.0, -61.0], "expected": -54.99752431486227}, {"input": [-55.0, -60.5], "expected": -54.99592155672943}, {"input": [-55.0, -60.0], "expected": -54.99328465151088}, {"input": [-55.0, -59.5], "expected": -54.9889522551514}, {"input": [-55.0, -59.0], "expected": -54.98185007208219}, {"input": [-55.0, -58.5], "expected": -54.97024958172738}, {"input": [-55.0, -58.0], "expected": -54.951412648426256}, {"input": [-55.0, -57.5], "expected": -54.92111026570745}, {"input": [-55.0, -57.0], "expected": -54.87307198895703}, {"input": [-55.0, -56.5], "expected": -54.79858672201725}, {"input": [-55.0, -56.0], "expected": -54.68673831248178}, {"input": [-55.0, -55.5], "expected": -54.52592301581989}, {"input": [-55.0, -55.0], "expected": -54.30685281944005}, {"input": [-55.0, -54.5], "expected": -54.02592301581989}, {"input": [-55.0, -54.0], "expected": -53.68673831248178}, {"input": [-55.0, -53.5], "expected": -53.29858672201725}, {"input": [-55.0, -53.0], "expected": -52.87307198895703}, {"input": [-55.0, -52.5], "expected": -52.42111026570745}, {"input": [-55.0, -52.0], "expected": -51.951412648426256}, {"input": [-55.0, -51.5], "expected": -51.47024958172738}, {"input": [-55.0, -51.0], "expected": -50.98185007208219}, {"input": [-55.0, -50.5], "expected": -50.4889522551514}, {"input": [-55.0, -50.0], "expected": -49.99328465151088}, {"input": [-55.0, -49.5], "expected": -49.49592155672943}, {"input": [-55.0, -49.0], "expected": -48.99752431486227}, {"input": [-55.0, -48.5], "expected": -48.49849768984024}, {"input": [-55.0, -48.0], "expected": -47.99908853354623}, {"input": [-55.0, -47.5], "expected": -47.49944706852464}, {"input": [-55.0, -47.0], "expected": -46.9996645936271}, {"input": [-55.0, -46.5], "expected": -46.49979655232787}, {"input": [-55.0, -46.0], "expected": -45.99987659781028}, {"input": [-55.0, -45.5], "expected": -45.49992515097137}, {"input": [-55.0, -45.0], "expected": -44.99995460110078}, {"input": [-55.0, -44.5], "expected": -44.49997246392977}, {"input": [-55.0, -44.0], "expected": -43.99998329843868}, {"input": [-55.0, -43.5], "expected": -43.49998986995771}, {"input": [-55.0, -43.0], "expected": -42.99999385580652}, {"input": [-55.0, -42.5], "expected": -42.49999627335377}, {"input": [-55.0, -42.0], "expected": -41.99999773967315}, {"input": [-55.0, -41.5], "expected": -41.499998629041855}, {"input": [-55.0, -41.0], "expected": -40.999999168471625}, {"input": [-55.0, -40.5], "expected": -40.49999949565247}, {"input": [-55.0, -40.0], "expected": -39.999999694097724}, {"input": [-55.0, -39.5], "expected": -39.49999981446088}, {"input": [-55.0, -39.0], "expected": -38.99999988746483}, {"input": [-55.0, -38.5], "expected": -38.49999993174397}, {"input": [-55.0, -38.0], "expected": -37.999999958600625}, {"input": [-55.0, -37.5], "expected": -37.49999997489001}, {"input": [-55.0, -37.0], "expected": -36.99999998477002}, {"input": [-55.0, -36.5], "expected": -36.499999990762554}, {"input": [-55.0, -36.0], "expected": -35.99999999439721}, {"input": [-55.0, -35.5], "expected": -35.49999999660173}, {"input": [-55.0, -35.0], "expected": -34.99999999793884}, {"input": [-55.0, -34.5], "expected": -34.49999999874985}, {"input": [-55.0, -34.0], "expected": -33.999999999241744}, {"input": [-55.0, -33.5], "expected": -33.499999999540094}, {"input": [-55.0, -33.0], "expected": -32.999999999721055}, {"input": [-55.0, -32.5], "expected": -32.49999999983081}, {"input": [-55.0, -32.0], "expected": -31.99999999989738}, {"input": [-55.0, -31.5], "expected": -31.49999999993776}, {"input": [-55.0, -31.0], "expected": -30.99999999996225}, {"input": [-55.0, -30.5], "expected": -30.499999999977103}, {"input": [-55.0, -30.0], "expected": -29.999999999986112}, {"input": [-55.0, -29.5], "expected": -29.499999999991577}, {"input": [-55.0, -29.0], "expected": -28.99999999999489}, {"input": [-55.0, -28.5], "expected": -28.499999999996902}, {"input": [-55.0, -28.0], "expected": -27.99999999999812}, {"input": [-55.0, -27.5], "expected": -27.49999999999886}, {"input": [-55.0, -27.0], "expected": -26.999999999999307}, {"input": [-55.0, -26.5], "expected": -26.49999999999958}, {"input": [-55.0, -26.0], "expected": -25.999999999999744}, {"input": [-55.0, -25.5], "expected": -25.499999999999847}, {"input": [-55.0, -25.0], "expected": -24.999999999999908}, {"input": [-55.0, -24.5], "expected": -24.499999999999943}, {"input": [-55.0, -24.0], "expected": -23.999999999999964}, {"input": [-55.0, -23.5], "expected": -23.49999999999998}, {"input": [-55.0, -23.0], "expected": -22.999999999999986}, {"input": [-55.0, -22.5], "expected": -22.499999999999993}, {"input": [-55.0, -22.0], "expected": -21.999999999999996}, {"input": [-55.0, -21.5], "expected": -21.499999999999996}, {"input": [-55.0, -21.0], "expected": -21.0}, {"input": [-55.0, -20.5], "expected": -20.5}, {"input": [-55.0, -20.0], "expected": -20.0}, {"input": [-55.0, -19.5], "expected": -19.5}, {"input": [-55.0, -19.0], "expected": -19.0}, {"input": [-55.0, -18.5], "expected": -18.5}, {"input": [-55.0, -18.0], "expected": -18.0}, {"input": [-55.0, -17.5], "expected": -17.5}, {"input": [-55.0, -17.0], "expected": -17.0}, {"input": [-55.0, -16.5], "expected": -16.5}, {"input": [-55.0, -16.0], "expected": -16.0}, {"input": [-55.0, -15.5], "expected": -15.5}, {"input": [-55.0, -15.0], "expected": -15.0}, {"input": [-55.0, -14.5], "expected": -14.5}, {"input": [-55.0, -14.0], "expected": -14.0}, {"input": [-55.0, -13.5], "expected": -13.5}, {"input": [-55.0, -13.0], "expected": -13.0}, {"input": [-55.0, -12.5], "expected": -12.5}, {"input": [-55.0, -12.0], "expected": -12.0}, {"input": [-55.0, -11.5], "expected": -11.5}, {"input": [-55.0, -11.0], "expected": -11.0}, {"input": [-55.0, -10.5], "expected": -10.5}, {"input": [-55.0, -10.0], "expected": -10.0}, {"input": [-55.0, -9.5], "expected": -9.5}, {"input": [-55.0, -9.0], "expected": -9.0}, {"input": [-55.0, -8.5], "expected": -8.5}, {"input": [-55.0, -8.0], "expected": -8.0}, {"input": [-55.0, -7.5], "expected": -7.5}, {"input": [-55.0, -7.0], "expected": -7.0}, {"input": [-55.0, -6.5], "expected": -6.5}, {"input": [-55.0, -6.0], "expected": -6.0}, {"input": [-55.0, -5.5], "expected": -5.5}, {"input": [-55.0, -5.0], "expected": -5.0}, {"input": [-55.0, -4.5], "expected": -4.5}, {"input": [-55.0, -4.0], "expected": -4.0}, {"input": [-55.0, -3.5], "expected": -3.5}, {"input": [-55.0, -3.0], "expected": -3.0}, {"input": [-55.0, -2.5], "expected": -2.5}, {"input": [-55.0, -2.0], "expected": -2.0}, {"input": [-55.0, -1.5], "expected": -1.5}, {"input": [-55.0, -1.0], "expected": -1.0}, {"input": [-55.0, -0.5], "expected": -0.5}, {"input": [-55.0, 0.0], "expected": 1.2995814250075031e-24}, {"input": [-55.0, 0.5], "expected": 0.5}, {"input": [-55.0, 1.0], "expected": 1.0}, {"input": [-55.0, 1.5], "expected": 1.5}, {"input": [-55.0, 2.0], "expected": 2.0}, {"input": [-55.0, 2.5], "expected": 2.5}, {"input": [-55.0, 3.0], "expected": 3.0}, {"input": [-55.0, 3.5], "expected": 3.5}, {"input": [-55.0, 4.0], "expected": 4.0}, {"input": [-55.0, 4.5], "expected": 4.5}, {"input": [-55.0, 5.0], "expected": 5.0}, {"input": [-55.0, 5.5], "expected": 5.5}, {"input": [-55.0, 6.0], "expected": 6.0}, {"input": [-55.0, 6.5], "expected": 6.5}, {"input": [-55.0, 7.0], "expected": 7.0}, {"input": [-55.0, 7.5], "expected": 7.5}, {"input": [-55.0, 8.0], "expected": 8.0}, {"input": [-55.0, 8.5], "expected": 8.5}, {"input": [-55.0, 9.0], "expected": 9.0}, {"input": [-55.0, 9.5], "expected": 9.5}, {"input": [-55.0, 10.0], "expected": 10.0}, {"input": [-55.0, 10.5], "expected": 10.5}, {"input": [-55.0, 11.0], "expected": 11.0}, {"input": [-55.0, 11.5], "expected": 11.5}, {"input": [-55.0, 12.0], "expected": 12.0}, {"input": [-55.0, 12.5], "expected": 12.5}, {"input": [-55.0, 13.0], "expected": 13.0}, {"input": [-55.0, 13.5], "expected": 13.5}, {"input": [-55.0, 14.0], "expected": 14.0}, {"input": [-55.0, 14.5], "expected": 14.5}, {"input": [-55.0, 15.0], "expected": 15.0}, {"input": [-55.0, 15.5], "expected": 15.5}, {"input": [-55.0, 16.0], "expected": 16.0}, {"input": [-55.0, 16.5], "expected": 16.5}, {"input": [-55.0, 17.0], "expected": 17.0}, {"input": [-55.0, 17.5], "expected": 17.5}, {"input": [-55.0, 18.0], "expected": 18.0}, {"input": [-55.0, 18.5], "expected": 18.5}, {"input": [-55.0, 19.0], "expected": 19.0}, {"input": [-55.0, 19.5], "expected": 19.5}, {"input": [-55.0, 20.0], "expected": 20.0}, {"input": [-55.0, 20.5], "expected": 20.5}, {"input": [-55.0, 21.0], "expected": 21.0}, {"input": [-55.0, 21.5], "expected": 21.5}, {"input": [-55.0, 22.0], "expected": 22.0}, {"input": [-55.0, 22.5], "expected": 22.5}, {"input": [-55.0, 23.0], "expected": 23.0}, {"input": [-55.0, 23.5], "expected": 23.5}, {"input": [-55.0, 24.0], "expected": 24.0}, {"input": [-55.0, 24.5], "expected": 24.5}, {"input": [-55.0, 25.0], "expected": 25.0}, {"input": [-55.0, 25.5], "expected": 25.5}, {"input": [-55.0, 26.0], "expected": 26.0}, {"input": [-55.0, 26.5], "expected": 26.5}, {"input": [-55.0, 27.0], "expected": 27.0}, {"input": [-55.0, 27.5], "expected": 27.5}, {"input": [-55.0, 28.0], "expected": 28.0}, {"input": [-55.0, 28.5], "expected": 28.5}, {"input": [-55.0, 29.0], "expected": 29.0}, {"input": [-55.0, 29.5], "expected": 29.5}, {"input": [-55.0, 30.0], "expected": 30.0}, {"input": [-55.0, 30.5], "expected": 30.5}, {"input": [-55.0, 31.0], "expected": 31.0}, {"input": [-55.0, 31.5], "expected": 31.5}, {"input": [-55.0, 32.0], "expected": 32.0}, {"input": [-55.0, 32.5], "expected": 32.5}, {"input": [-55.0, 33.0], "expected": 33.0}, {"input": [-55.0, 33.5], "expected": 33.5}, {"input": [-55.0, 34.0], "expected": 34.0}, {"input": [-55.0, 34.5], "expected": 34.5}, {"input": [-55.0, 35.0], "expected": 35.0}, {"input": [-55.0, 35.5], "expected": 35.5}, {"input": [-55.0, 36.0], "expected": 36.0}, {"input": [-55.0, 36.5], "expected": 36.5}, {"input": [-55.0, 37.0], "expected": 37.0}, {"input": [-55.0, 37.5], "expected": 37.5}, {"input": [-55.0, 38.0], "expected": 38.0}, {"input": [-55.0, 38.5], "expected": 38.5}, {"input": [-55.0, 39.0], "expected": 39.0}, {"input": [-55.0, 39.5], "expected": 39.5}, {"input": [-55.0, 40.0], "expected": 40.0}, {"input": [-55.0, 40.5], "expected": 40.5}, {"input": [-55.0, 41.0], "expected": 41.0}, {"input": [-55.0, 41.5], "expected": 41.5}, {"input": [-55.0, 42.0], "expected": 42.0}, {"input": [-55.0, 42.5], "expected": 42.5}, {"input": [-55.0, 43.0], "expected": 43.0}, {"input": [-55.0, 43.5], "expected": 43.5}, {"input": [-55.0, 44.0], "expected": 44.0}, {"input": [-55.0, 44.5], "expected": 44.5}, {"input": [-55.0, 45.0], "expected": 45.0}, {"input": [-55.0, 45.5], "expected": 45.5}, {"input": [-55.0, 46.0], "expected": 46.0}, {"input": [-55.0, 46.5], "expected": 46.5}, {"input": [-55.0, 47.0], "expected": 47.0}, {"input": [-55.0, 47.5], "expected": 47.5}, {"input": [-55.0, 48.0], "expected": 48.0}, {"input": [-55.0, 48.5], "expected": 48.5}, {"input": [-55.0, 49.0], "expected": 49.0}, {"input": [-55.0, 49.5], "expected": 49.5}, {"input": [-55.0, 50.0], "expected": 50.0}, {"input": [-55.0, 50.5], "expected": 50.5}, {"input": [-55.0, 51.0], "expected": 51.0}, {"input": [-55.0, 51.5], "expected": 51.5}, {"input": [-55.0, 52.0], "expected": 52.0}, {"input": [-55.0, 52.5], "expected": 52.5}, {"input": [-55.0, 53.0], "expected": 53.0}, {"input": [-55.0, 53.5], "expected": 53.5}, {"input": [-55.0, 54.0], "expected": 54.0}, {"input": [-55.0, 54.5], "expected": 54.5}, {"input": [-55.0, 55.0], "expected": 55.0}, {"input": [-55.0, 55.5], "expected": 55.5}, {"input": [-55.0, 56.0], "expected": 56.0}, {"input": [-55.0, 56.5], "expected": 56.5}, {"input": [-55.0, 57.0], "expected": 57.0}, {"input": [-55.0, 57.5], "expected": 57.5}, {"input": [-55.0, 58.0], "expected": 58.0}, {"input": [-55.0, 58.5], "expected": 58.5}, {"input": [-55.0, 59.0], "expected": 59.0}, {"input": [-55.0, 59.5], "expected": 59.5}, {"input": [-55.0, 60.0], "expected": 60.0}, {"input": [-55.0, 60.5], "expected": 60.5}, {"input": [-55.0, 61.0], "expected": 61.0}, {"input": [-55.0, 61.5], "expected": 61.5}, {"input": [-55.0, 62.0], "expected": 62.0}, {"input": [-55.0, 62.5], "expected": 62.5}, {"input": [-55.0, 63.0], "expected": 63.0}, {"input": [-55.0, 63.5], "expected": 63.5}, {"input": [-55.0, 64.0], "expected": 64.0}, {"input": [-55.0, 64.5], "expected": 64.5}, {"input": [-55.0, 65.0], "expected": 65.0}, {"input": [-55.0, 65.5], "expected": 65.5}, {"input": [-55.0, 66.0], "expected": 66.0}, {"input": [-55.0, 66.5], "expected": 66.5}, {"input": [-55.0, 67.0], "expected": 67.0}, {"input": [-55.0, 67.5], "expected": 67.5}, {"input": [-55.0, 68.0], "expected": 68.0}, {"input": [-55.0, 68.5], "expected": 68.5}, {"input": [-55.0, 69.0], "expected": 69.0}, {"input": [-55.0, 69.5], "expected": 69.5}, {"input": [-55.0, 70.0], "expected": 70.0}, {"input": [-55.0, 70.5], "expected": 70.5}, {"input": [-55.0, 71.0], "expected": 71.0}, {"input": [-55.0, 71.5], "expected": 71.5}, {"input": [-55.0, 72.0], "expected": 72.0}, {"input": [-55.0, 72.5], "expected": 72.5}, {"input": [-55.0, 73.0], "expected": 73.0}, {"input": [-55.0, 73.5], "expected": 73.5}, {"input": [-55.0, 74.0], "expected": 74.0}, {"input": [-55.0, 74.5], "expected": 74.5}, {"input": [-55.0, 75.0], "expected": 75.0}, {"input": [-55.0, 75.5], "expected": 75.5}, {"input": [-55.0, 76.0], "expected": 76.0}, {"input": [-55.0, 76.5], "expected": 76.5}, {"input": [-55.0, 77.0], "expected": 77.0}, {"input": [-55.0, 77.5], "expected": 77.5}, {"input": [-55.0, 78.0], "expected": 78.0}, {"input": [-55.0, 78.5], "expected": 78.5}, {"input": [-55.0, 79.0], "expected": 79.0}, {"input": [-55.0, 79.5], "expected": 79.5}, {"input": [-55.0, 80.0], "expected": 80.0}, {"input": [-55.0, 80.5], "expected": 80.5}, {"input": [-55.0, 81.0], "expected": 81.0}, {"input": [-55.0, 81.5], "expected": 81.5}, {"input": [-55.0, 82.0], "expected": 82.0}, {"input": [-55.0, 82.5], "expected": 82.5}, {"input": [-55.0, 83.0], "expected": 83.0}, {"input": [-55.0, 83.5], "expected": 83.5}, {"input": [-55.0, 84.0], "expected": 84.0}, {"input": [-55.0, 84.5], "expected": 84.5}, {"input": [-55.0, 85.0], "expected": 85.0}, {"input": [-55.0, 85.5], "expected": 85.5}, {"input": [-55.0, 86.0], "expected": 86.0}, {"input": [-55.0, 86.5], "expected": 86.5}, {"input": [-55.0, 87.0], "expected": 87.0}, {"input": [-55.0, 87.5], "expected": 87.5}, {"input": [-55.0, 88.0], "expected": 88.0}, {"input": [-55.0, 88.5], "expected": 88.5}, {"input": [-55.0, 89.0], "expected": 89.0}, {"input": [-55.0, 89.5], "expected": 89.5}, {"input": [-55.0, 90.0], "expected": 90.0}, {"input": [-55.0, 90.5], "expected": 90.5}, {"input": [-55.0, 91.0], "expected": 91.0}, {"input": [-55.0, 91.5], "expected": 91.5}, {"input": [-55.0, 92.0], "expected": 92.0}, {"input": [-55.0, 92.5], "expected": 92.5}, {"input": [-55.0, 93.0], "expected": 93.0}, {"input": [-55.0, 93.5], "expected": 93.5}, {"input": [-55.0, 94.0], "expected": 94.0}, {"input": [-55.0, 94.5], "expected": 94.5}, {"input": [-55.0, 95.0], "expected": 95.0}, {"input": [-55.0, 95.5], "expected": 95.5}, {"input": [-55.0, 96.0], "expected": 96.0}, {"input": [-55.0, 96.5], "expected": 96.5}, {"input": [-55.0, 97.0], "expected": 97.0}, {"input": [-55.0, 97.5], "expected": 97.5}, {"input": [-55.0, 98.0], "expected": 98.0}, {"input": [-55.0, 98.5], "expected": 98.5}, {"input": [-55.0, 99.0], "expected": 99.0}, {"input": [-55.0, 99.5], "expected": 99.5}, {"input": [-54.5, -100.0], "expected": -54.5}, {"input": [-54.5, -99.5], "expected": -54.5}, {"input": [-54.5, -99.0], "expected": -54.5}, {"input": [-54.5, -98.5], "expected": -54.5}, {"input": [-54.5, -98.0], "expected": -54.5}, {"input": [-54.5, -97.5], "expected": -54.5}, {"input": [-54.5, -97.0], "expected": -54.5}, {"input": [-54.5, -96.5], "expected": -54.5}, {"input": [-54.5, -96.0], "expected": -54.5}, {"input": [-54.5, -95.5], "expected": -54.5}, {"input": [-54.5, -95.0], "expected": -54.5}, {"input": [-54.5, -94.5], "expected": -54.5}, {"input": [-54.5, -94.0], "expected": -54.5}, {"input": [-54.5, -93.5], "expected": -54.5}, {"input": [-54.5, -93.0], "expected": -54.5}, {"input": [-54.5, -92.5], "expected": -54.5}, {"input": [-54.5, -92.0], "expected": -54.5}, {"input": [-54.5, -91.5], "expected": -54.5}, {"input": [-54.5, -91.0], "expected": -54.5}, {"input": [-54.5, -90.5], "expected": -54.5}, {"input": [-54.5, -90.0], "expected": -54.5}, {"input": [-54.5, -89.5], "expected": -54.5}, {"input": [-54.5, -89.0], "expected": -54.5}, {"input": [-54.5, -88.5], "expected": -54.5}, {"input": [-54.5, -88.0], "expected": -54.5}, {"input": [-54.5, -87.5], "expected": -54.49999999999999}, {"input": [-54.5, -87.0], "expected": -54.49999999999999}, {"input": [-54.5, -86.5], "expected": -54.499999999999986}, {"input": [-54.5, -86.0], "expected": -54.49999999999998}, {"input": [-54.5, -85.5], "expected": -54.499999999999964}, {"input": [-54.5, -85.0], "expected": -54.49999999999994}, {"input": [-54.5, -84.5], "expected": -54.49999999999991}, {"input": [-54.5, -84.0], "expected": -54.499999999999844}, {"input": [-54.5, -83.5], "expected": -54.499999999999744}, {"input": [-54.5, -83.0], "expected": -54.49999999999958}, {"input": [-54.5, -82.5], "expected": -54.49999999999931}, {"input": [-54.5, -82.0], "expected": -54.49999999999886}, {"input": [-54.5, -81.5], "expected": -54.49999999999812}, {"input": [-54.5, -81.0], "expected": -54.4999999999969}, {"input": [-54.5, -80.5], "expected": -54.49999999999489}, {"input": [-54.5, -80.0], "expected": -54.49999999999158}, {"input": [-54.5, -79.5], "expected": -54.49999999998611}, {"input": [-54.5, -79.0], "expected": -54.4999999999771}, {"input": [-54.5, -78.5], "expected": -54.49999999996225}, {"input": [-54.5, -78.0], "expected": -54.49999999993776}, {"input": [-54.5, -77.5], "expected": -54.49999999989738}, {"input": [-54.5, -77.0], "expected": -54.49999999983081}, {"input": [-54.5, -76.5], "expected": -54.499999999721055}, {"input": [-54.5, -76.0], "expected": -54.499999999540094}, {"input": [-54.5, -75.5], "expected": -54.499999999241744}, {"input": [-54.5, -75.0], "expected": -54.49999999874985}, {"input": [-54.5, -74.5], "expected": -54.49999999793884}, {"input": [-54.5, -74.0], "expected": -54.49999999660173}, {"input": [-54.5, -73.5], "expected": -54.49999999439721}, {"input": [-54.5, -73.0], "expected": -54.499999990762554}, {"input": [-54.5, -72.5], "expected": -54.49999998477002}, {"input": [-54.5, -72.0], "expected": -54.49999997489001}, {"input": [-54.5, -71.5], "expected": -54.499999958600625}, {"input": [-54.5, -71.0], "expected": -54.49999993174397}, {"input": [-54.5, -70.5], "expected": -54.49999988746483}, {"input": [-54.5, -70.0], "expected": -54.49999981446088}, {"input": [-54.5, -69.5], "expected": -54.499999694097724}, {"input": [-54.5, -69.0], "expected": -54.49999949565247}, {"input": [-54.5, -68.5], "expected": -54.499999168471625}, {"input": [-54.5, -68.0], "expected": -54.499998629041855}, {"input": [-54.5, -67.5], "expected": -54.49999773967315}, {"input": [-54.5, -67.0], "expected": -54.49999627335377}, {"input": [-54.5, -66.5], "expected": -54.49999385580652}, {"input": [-54.5, -66.0], "expected": -54.49998986995771}, {"input": [-54.5, -65.5], "expected": -54.49998329843868}, {"input": [-54.5, -65.0], "expected": -54.49997246392977}, {"input": [-54.5, -64.5], "expected": -54.49995460110078}, {"input": [-54.5, -64.0], "expected": -54.49992515097137}, {"input": [-54.5, -63.5], "expected": -54.49987659781028}, {"input": [-54.5, -63.0], "expected": -54.49979655232787}, {"input": [-54.5, -62.5], "expected": -54.4996645936271}, {"input": [-54.5, -62.0], "expected": -54.49944706852464}, {"input": [-54.5, -61.5], "expected": -54.49908853354623}, {"input": [-54.5, -61.0], "expected": -54.49849768984024}, {"input": [-54.5, -60.5], "expected": -54.49752431486227}, {"input": [-54.5, -60.0], "expected": -54.49592155672943}, {"input": [-54.5, -59.5], "expected": -54.49328465151088}, {"input": [-54.5, -59.0], "expected": -54.4889522551514}, {"input": [-54.5, -58.5], "expected": -54.48185007208219}, {"input": [-54.5, -58.0], "expected": -54.47024958172738}, {"input": [-54.5, -57.5], "expected": -54.451412648426256}, {"input": [-54.5, -57.0], "expected": -54.42111026570745}, {"input": [-54.5, -56.5], "expected": -54.37307198895703}, {"input": [-54.5, -56.0], "expected": -54.29858672201725}, {"input": [-54.5, -55.5], "expected": -54.18673831248178}, {"input": [-54.5, -55.0], "expected": -54.02592301581989}, {"input": [-54.5, -54.5], "expected": -53.80685281944005}, {"input": [-54.5, -54.0], "expected": -53.52592301581989}, {"input": [-54.5, -53.5], "expected": -53.18673831248178}, {"input": [-54.5, -53.0], "expected": -52.79858672201725}, {"input": [-54.5, -52.5], "expected": -52.37307198895703}, {"input": [-54.5, -52.0], "expected": -51.92111026570745}, {"input": [-54.5, -51.5], "expected": -51.451412648426256}, {"input": [-54.5, -51.0], "expected": -50.97024958172738}, {"input": [-54.5, -50.5], "expected": -50.48185007208219}, {"input": [-54.5, -50.0], "expected": -49.9889522551514}, {"input": [-54.5, -49.5], "expected": -49.49328465151088}, {"input": [-54.5, -49.0], "expected": -48.99592155672943}, {"input": [-54.5, -48.5], "expected": -48.49752431486227}, {"input": [-54.5, -48.0], "expected": -47.99849768984024}, {"input": [-54.5, -47.5], "expected": -47.49908853354623}, {"input": [-54.5, -47.0], "expected": -46.99944706852464}, {"input": [-54.5, -46.5], "expected": -46.4996645936271}, {"input": [-54.5, -46.0], "expected": -45.99979655232787}, {"input": [-54.5, -45.5], "expected": -45.49987659781028}, {"input": [-54.5, -45.0], "expected": -44.99992515097137}, {"input": [-54.5, -44.5], "expected": -44.49995460110078}, {"input": [-54.5, -44.0], "expected": -43.99997246392977}, {"input": [-54.5, -43.5], "expected": -43.49998329843868}, {"input": [-54.5, -43.0], "expected": -42.99998986995771}, {"input": [-54.5, -42.5], "expected": -42.49999385580652}, {"input": [-54.5, -42.0], "expected": -41.99999627335377}, {"input": [-54.5, -41.5], "expected": -41.49999773967315}, {"input": [-54.5, -41.0], "expected": -40.999998629041855}, {"input": [-54.5, -40.5], "expected": -40.499999168471625}, {"input": [-54.5, -40.0], "expected": -39.99999949565247}, {"input": [-54.5, -39.5], "expected": -39.499999694097724}, {"input": [-54.5, -39.0], "expected": -38.99999981446088}, {"input": [-54.5, -38.5], "expected": -38.49999988746483}, {"input": [-54.5, -38.0], "expected": -37.99999993174397}, {"input": [-54.5, -37.5], "expected": -37.499999958600625}, {"input": [-54.5, -37.0], "expected": -36.99999997489001}, {"input": [-54.5, -36.5], "expected": -36.49999998477002}, {"input": [-54.5, -36.0], "expected": -35.999999990762554}, {"input": [-54.5, -35.5], "expected": -35.49999999439721}, {"input": [-54.5, -35.0], "expected": -34.99999999660173}, {"input": [-54.5, -34.5], "expected": -34.49999999793884}, {"input": [-54.5, -34.0], "expected": -33.99999999874985}, {"input": [-54.5, -33.5], "expected": -33.499999999241744}, {"input": [-54.5, -33.0], "expected": -32.999999999540094}, {"input": [-54.5, -32.5], "expected": -32.499999999721055}, {"input": [-54.5, -32.0], "expected": -31.99999999983081}, {"input": [-54.5, -31.5], "expected": -31.49999999989738}, {"input": [-54.5, -31.0], "expected": -30.99999999993776}, {"input": [-54.5, -30.5], "expected": -30.49999999996225}, {"input": [-54.5, -30.0], "expected": -29.999999999977103}, {"input": [-54.5, -29.5], "expected": -29.499999999986112}, {"input": [-54.5, -29.0], "expected": -28.999999999991577}, {"input": [-54.5, -28.5], "expected": -28.49999999999489}, {"input": [-54.5, -28.0], "expected": -27.999999999996902}, {"input": [-54.5, -27.5], "expected": -27.49999999999812}, {"input": [-54.5, -27.0], "expected": -26.99999999999886}, {"input": [-54.5, -26.5], "expected": -26.499999999999307}, {"input": [-54.5, -26.0], "expected": -25.99999999999958}, {"input": [-54.5, -25.5], "expected": -25.499999999999744}, {"input": [-54.5, -25.0], "expected": -24.999999999999847}, {"input": [-54.5, -24.5], "expected": -24.499999999999908}, {"input": [-54.5, -24.0], "expected": -23.999999999999943}, {"input": [-54.5, -23.5], "expected": -23.499999999999964}, {"input": [-54.5, -23.0], "expected": -22.99999999999998}, {"input": [-54.5, -22.5], "expected": -22.499999999999986}, {"input": [-54.5, -22.0], "expected": -21.999999999999993}, {"input": [-54.5, -21.5], "expected": -21.499999999999996}, {"input": [-54.5, -21.0], "expected": -20.999999999999996}, {"input": [-54.5, -20.5], "expected": -20.5}, {"input": [-54.5, -20.0], "expected": -20.0}, {"input": [-54.5, -19.5], "expected": -19.5}, {"input": [-54.5, -19.0], "expected": -19.0}, {"input": [-54.5, -18.5], "expected": -18.5}, {"input": [-54.5, -18.0], "expected": -18.0}, {"input": [-54.5, -17.5], "expected": -17.5}, {"input": [-54.5, -17.0], "expected": -17.0}, {"input": [-54.5, -16.5], "expected": -16.5}, {"input": [-54.5, -16.0], "expected": -16.0}, {"input": [-54.5, -15.5], "expected": -15.5}, {"input": [-54.5, -15.0], "expected": -15.0}, {"input": [-54.5, -14.5], "expected": -14.5}, {"input": [-54.5, -14.0], "expected": -14.0}, {"input": [-54.5, -13.5], "expected": -13.5}, {"input": [-54.5, -13.0], "expected": -13.0}, {"input": [-54.5, -12.5], "expected": -12.5}, {"input": [-54.5, -12.0], "expected": -12.0}, {"input": [-54.5, -11.5], "expected": -11.5}, {"input": [-54.5, -11.0], "expected": -11.0}, {"input": [-54.5, -10.5], "expected": -10.5}, {"input": [-54.5, -10.0], "expected": -10.0}, {"input": [-54.5, -9.5], "expected": -9.5}, {"input": [-54.5, -9.0], "expected": -9.0}, {"input": [-54.5, -8.5], "expected": -8.5}, {"input": [-54.5, -8.0], "expected": -8.0}, {"input": [-54.5, -7.5], "expected": -7.5}, {"input": [-54.5, -7.0], "expected": -7.0}, {"input": [-54.5, -6.5], "expected": -6.5}, {"input": [-54.5, -6.0], "expected": -6.0}, {"input": [-54.5, -5.5], "expected": -5.5}, {"input": [-54.5, -5.0], "expected": -5.0}, {"input": [-54.5, -4.5], "expected": -4.5}, {"input": [-54.5, -4.0], "expected": -4.0}, {"input": [-54.5, -3.5], "expected": -3.5}, {"input": [-54.5, -3.0], "expected": -3.0}, {"input": [-54.5, -2.5], "expected": -2.5}, {"input": [-54.5, -2.0], "expected": -2.0}, {"input": [-54.5, -1.5], "expected": -1.5}, {"input": [-54.5, -1.0], "expected": -1.0}, {"input": [-54.5, -0.5], "expected": -0.5}, {"input": [-54.5, 0.0], "expected": 2.1426475384166538e-24}, {"input": [-54.5, 0.5], "expected": 0.5}, {"input": [-54.5, 1.0], "expected": 1.0}, {"input": [-54.5, 1.5], "expected": 1.5}, {"input": [-54.5, 2.0], "expected": 2.0}, {"input": [-54.5, 2.5], "expected": 2.5}, {"input": [-54.5, 3.0], "expected": 3.0}, {"input": [-54.5, 3.5], "expected": 3.5}, {"input": [-54.5, 4.0], "expected": 4.0}, {"input": [-54.5, 4.5], "expected": 4.5}, {"input": [-54.5, 5.0], "expected": 5.0}, {"input": [-54.5, 5.5], "expected": 5.5}, {"input": [-54.5, 6.0], "expected": 6.0}, {"input": [-54.5, 6.5], "expected": 6.5}, {"input": [-54.5, 7.0], "expected": 7.0}, {"input": [-54.5, 7.5], "expected": 7.5}, {"input": [-54.5, 8.0], "expected": 8.0}, {"input": [-54.5, 8.5], "expected": 8.5}, {"input": [-54.5, 9.0], "expected": 9.0}, {"input": [-54.5, 9.5], "expected": 9.5}, {"input": [-54.5, 10.0], "expected": 10.0}, {"input": [-54.5, 10.5], "expected": 10.5}, {"input": [-54.5, 11.0], "expected": 11.0}, {"input": [-54.5, 11.5], "expected": 11.5}, {"input": [-54.5, 12.0], "expected": 12.0}, {"input": [-54.5, 12.5], "expected": 12.5}, {"input": [-54.5, 13.0], "expected": 13.0}, {"input": [-54.5, 13.5], "expected": 13.5}, {"input": [-54.5, 14.0], "expected": 14.0}, {"input": [-54.5, 14.5], "expected": 14.5}, {"input": [-54.5, 15.0], "expected": 15.0}, {"input": [-54.5, 15.5], "expected": 15.5}, {"input": [-54.5, 16.0], "expected": 16.0}, {"input": [-54.5, 16.5], "expected": 16.5}, {"input": [-54.5, 17.0], "expected": 17.0}, {"input": [-54.5, 17.5], "expected": 17.5}, {"input": [-54.5, 18.0], "expected": 18.0}, {"input": [-54.5, 18.5], "expected": 18.5}, {"input": [-54.5, 19.0], "expected": 19.0}, {"input": [-54.5, 19.5], "expected": 19.5}, {"input": [-54.5, 20.0], "expected": 20.0}, {"input": [-54.5, 20.5], "expected": 20.5}, {"input": [-54.5, 21.0], "expected": 21.0}, {"input": [-54.5, 21.5], "expected": 21.5}, {"input": [-54.5, 22.0], "expected": 22.0}, {"input": [-54.5, 22.5], "expected": 22.5}, {"input": [-54.5, 23.0], "expected": 23.0}, {"input": [-54.5, 23.5], "expected": 23.5}, {"input": [-54.5, 24.0], "expected": 24.0}, {"input": [-54.5, 24.5], "expected": 24.5}, {"input": [-54.5, 25.0], "expected": 25.0}, {"input": [-54.5, 25.5], "expected": 25.5}, {"input": [-54.5, 26.0], "expected": 26.0}, {"input": [-54.5, 26.5], "expected": 26.5}, {"input": [-54.5, 27.0], "expected": 27.0}, {"input": [-54.5, 27.5], "expected": 27.5}, {"input": [-54.5, 28.0], "expected": 28.0}, {"input": [-54.5, 28.5], "expected": 28.5}, {"input": [-54.5, 29.0], "expected": 29.0}, {"input": [-54.5, 29.5], "expected": 29.5}, {"input": [-54.5, 30.0], "expected": 30.0}, {"input": [-54.5, 30.5], "expected": 30.5}, {"input": [-54.5, 31.0], "expected": 31.0}, {"input": [-54.5, 31.5], "expected": 31.5}, {"input": [-54.5, 32.0], "expected": 32.0}, {"input": [-54.5, 32.5], "expected": 32.5}, {"input": [-54.5, 33.0], "expected": 33.0}, {"input": [-54.5, 33.5], "expected": 33.5}, {"input": [-54.5, 34.0], "expected": 34.0}, {"input": [-54.5, 34.5], "expected": 34.5}, {"input": [-54.5, 35.0], "expected": 35.0}, {"input": [-54.5, 35.5], "expected": 35.5}, {"input": [-54.5, 36.0], "expected": 36.0}, {"input": [-54.5, 36.5], "expected": 36.5}, {"input": [-54.5, 37.0], "expected": 37.0}, {"input": [-54.5, 37.5], "expected": 37.5}, {"input": [-54.5, 38.0], "expected": 38.0}, {"input": [-54.5, 38.5], "expected": 38.5}, {"input": [-54.5, 39.0], "expected": 39.0}, {"input": [-54.5, 39.5], "expected": 39.5}, {"input": [-54.5, 40.0], "expected": 40.0}, {"input": [-54.5, 40.5], "expected": 40.5}, {"input": [-54.5, 41.0], "expected": 41.0}, {"input": [-54.5, 41.5], "expected": 41.5}, {"input": [-54.5, 42.0], "expected": 42.0}, {"input": [-54.5, 42.5], "expected": 42.5}, {"input": [-54.5, 43.0], "expected": 43.0}, {"input": [-54.5, 43.5], "expected": 43.5}, {"input": [-54.5, 44.0], "expected": 44.0}, {"input": [-54.5, 44.5], "expected": 44.5}, {"input": [-54.5, 45.0], "expected": 45.0}, {"input": [-54.5, 45.5], "expected": 45.5}, {"input": [-54.5, 46.0], "expected": 46.0}, {"input": [-54.5, 46.5], "expected": 46.5}, {"input": [-54.5, 47.0], "expected": 47.0}, {"input": [-54.5, 47.5], "expected": 47.5}, {"input": [-54.5, 48.0], "expected": 48.0}, {"input": [-54.5, 48.5], "expected": 48.5}, {"input": [-54.5, 49.0], "expected": 49.0}, {"input": [-54.5, 49.5], "expected": 49.5}, {"input": [-54.5, 50.0], "expected": 50.0}, {"input": [-54.5, 50.5], "expected": 50.5}, {"input": [-54.5, 51.0], "expected": 51.0}, {"input": [-54.5, 51.5], "expected": 51.5}, {"input": [-54.5, 52.0], "expected": 52.0}, {"input": [-54.5, 52.5], "expected": 52.5}, {"input": [-54.5, 53.0], "expected": 53.0}, {"input": [-54.5, 53.5], "expected": 53.5}, {"input": [-54.5, 54.0], "expected": 54.0}, {"input": [-54.5, 54.5], "expected": 54.5}, {"input": [-54.5, 55.0], "expected": 55.0}, {"input": [-54.5, 55.5], "expected": 55.5}, {"input": [-54.5, 56.0], "expected": 56.0}, {"input": [-54.5, 56.5], "expected": 56.5}, {"input": [-54.5, 57.0], "expected": 57.0}, {"input": [-54.5, 57.5], "expected": 57.5}, {"input": [-54.5, 58.0], "expected": 58.0}, {"input": [-54.5, 58.5], "expected": 58.5}, {"input": [-54.5, 59.0], "expected": 59.0}, {"input": [-54.5, 59.5], "expected": 59.5}, {"input": [-54.5, 60.0], "expected": 60.0}, {"input": [-54.5, 60.5], "expected": 60.5}, {"input": [-54.5, 61.0], "expected": 61.0}, {"input": [-54.5, 61.5], "expected": 61.5}, {"input": [-54.5, 62.0], "expected": 62.0}, {"input": [-54.5, 62.5], "expected": 62.5}, {"input": [-54.5, 63.0], "expected": 63.0}, {"input": [-54.5, 63.5], "expected": 63.5}, {"input": [-54.5, 64.0], "expected": 64.0}, {"input": [-54.5, 64.5], "expected": 64.5}, {"input": [-54.5, 65.0], "expected": 65.0}, {"input": [-54.5, 65.5], "expected": 65.5}, {"input": [-54.5, 66.0], "expected": 66.0}, {"input": [-54.5, 66.5], "expected": 66.5}, {"input": [-54.5, 67.0], "expected": 67.0}, {"input": [-54.5, 67.5], "expected": 67.5}, {"input": [-54.5, 68.0], "expected": 68.0}, {"input": [-54.5, 68.5], "expected": 68.5}, {"input": [-54.5, 69.0], "expected": 69.0}, {"input": [-54.5, 69.5], "expected": 69.5}, {"input": [-54.5, 70.0], "expected": 70.0}, {"input": [-54.5, 70.5], "expected": 70.5}, {"input": [-54.5, 71.0], "expected": 71.0}, {"input": [-54.5, 71.5], "expected": 71.5}, {"input": [-54.5, 72.0], "expected": 72.0}, {"input": [-54.5, 72.5], "expected": 72.5}, {"input": [-54.5, 73.0], "expected": 73.0}, {"input": [-54.5, 73.5], "expected": 73.5}, {"input": [-54.5, 74.0], "expected": 74.0}, {"input": [-54.5, 74.5], "expected": 74.5}, {"input": [-54.5, 75.0], "expected": 75.0}, {"input": [-54.5, 75.5], "expected": 75.5}, {"input": [-54.5, 76.0], "expected": 76.0}, {"input": [-54.5, 76.5], "expected": 76.5}, {"input": [-54.5, 77.0], "expected": 77.0}, {"input": [-54.5, 77.5], "expected": 77.5}, {"input": [-54.5, 78.0], "expected": 78.0}, {"input": [-54.5, 78.5], "expected": 78.5}, {"input": [-54.5, 79.0], "expected": 79.0}, {"input": [-54.5, 79.5], "expected": 79.5}, {"input": [-54.5, 80.0], "expected": 80.0}, {"input": [-54.5, 80.5], "expected": 80.5}, {"input": [-54.5, 81.0], "expected": 81.0}, {"input": [-54.5, 81.5], "expected": 81.5}, {"input": [-54.5, 82.0], "expected": 82.0}, {"input": [-54.5, 82.5], "expected": 82.5}, {"input": [-54.5, 83.0], "expected": 83.0}, {"input": [-54.5, 83.5], "expected": 83.5}, {"input": [-54.5, 84.0], "expected": 84.0}, {"input": [-54.5, 84.5], "expected": 84.5}, {"input": [-54.5, 85.0], "expected": 85.0}, {"input": [-54.5, 85.5], "expected": 85.5}, {"input": [-54.5, 86.0], "expected": 86.0}, {"input": [-54.5, 86.5], "expected": 86.5}, {"input": [-54.5, 87.0], "expected": 87.0}, {"input": [-54.5, 87.5], "expected": 87.5}, {"input": [-54.5, 88.0], "expected": 88.0}, {"input": [-54.5, 88.5], "expected": 88.5}, {"input": [-54.5, 89.0], "expected": 89.0}, {"input": [-54.5, 89.5], "expected": 89.5}, {"input": [-54.5, 90.0], "expected": 90.0}, {"input": [-54.5, 90.5], "expected": 90.5}, {"input": [-54.5, 91.0], "expected": 91.0}, {"input": [-54.5, 91.5], "expected": 91.5}, {"input": [-54.5, 92.0], "expected": 92.0}, {"input": [-54.5, 92.5], "expected": 92.5}, {"input": [-54.5, 93.0], "expected": 93.0}, {"input": [-54.5, 93.5], "expected": 93.5}, {"input": [-54.5, 94.0], "expected": 94.0}, {"input": [-54.5, 94.5], "expected": 94.5}, {"input": [-54.5, 95.0], "expected": 95.0}, {"input": [-54.5, 95.5], "expected": 95.5}, {"input": [-54.5, 96.0], "expected": 96.0}, {"input": [-54.5, 96.5], "expected": 96.5}, {"input": [-54.5, 97.0], "expected": 97.0}, {"input": [-54.5, 97.5], "expected": 97.5}, {"input": [-54.5, 98.0], "expected": 98.0}, {"input": [-54.5, 98.5], "expected": 98.5}, {"input": [-54.5, 99.0], "expected": 99.0}, {"input": [-54.5, 99.5], "expected": 99.5}, {"input": [-54.0, -100.0], "expected": -54.0}, {"input": [-54.0, -99.5], "expected": -54.0}, {"input": [-54.0, -99.0], "expected": -54.0}, {"input": [-54.0, -98.5], "expected": -54.0}, {"input": [-54.0, -98.0], "expected": -54.0}, {"input": [-54.0, -97.5], "expected": -54.0}, {"input": [-54.0, -97.0], "expected": -54.0}, {"input": [-54.0, -96.5], "expected": -54.0}, {"input": [-54.0, -96.0], "expected": -54.0}, {"input": [-54.0, -95.5], "expected": -54.0}, {"input": [-54.0, -95.0], "expected": -54.0}, {"input": [-54.0, -94.5], "expected": -54.0}, {"input": [-54.0, -94.0], "expected": -54.0}, {"input": [-54.0, -93.5], "expected": -54.0}, {"input": [-54.0, -93.0], "expected": -54.0}, {"input": [-54.0, -92.5], "expected": -54.0}, {"input": [-54.0, -92.0], "expected": -54.0}, {"input": [-54.0, -91.5], "expected": -54.0}, {"input": [-54.0, -91.0], "expected": -54.0}, {"input": [-54.0, -90.5], "expected": -54.0}, {"input": [-54.0, -90.0], "expected": -54.0}, {"input": [-54.0, -89.5], "expected": -54.0}, {"input": [-54.0, -89.0], "expected": -54.0}, {"input": [-54.0, -88.5], "expected": -54.0}, {"input": [-54.0, -88.0], "expected": -54.0}, {"input": [-54.0, -87.5], "expected": -54.0}, {"input": [-54.0, -87.0], "expected": -53.99999999999999}, {"input": [-54.0, -86.5], "expected": -53.99999999999999}, {"input": [-54.0, -86.0], "expected": -53.999999999999986}, {"input": [-54.0, -85.5], "expected": -53.99999999999998}, {"input": [-54.0, -85.0], "expected": -53.999999999999964}, {"input": [-54.0, -84.5], "expected": -53.99999999999994}, {"input": [-54.0, -84.0], "expected": -53.99999999999991}, {"input": [-54.0, -83.5], "expected": -53.999999999999844}, {"input": [-54.0, -83.0], "expected": -53.999999999999744}, {"input": [-54.0, -82.5], "expected": -53.99999999999958}, {"input": [-54.0, -82.0], "expected": -53.99999999999931}, {"input": [-54.0, -81.5], "expected": -53.99999999999886}, {"input": [-54.0, -81.0], "expected": -53.99999999999812}, {"input": [-54.0, -80.5], "expected": -53.9999999999969}, {"input": [-54.0, -80.0], "expected": -53.99999999999489}, {"input": [-54.0, -79.5], "expected": -53.99999999999158}, {"input": [-54.0, -79.0], "expected": -53.99999999998611}, {"input": [-54.0, -78.5], "expected": -53.9999999999771}, {"input": [-54.0, -78.0], "expected": -53.99999999996225}, {"input": [-54.0, -77.5], "expected": -53.99999999993776}, {"input": [-54.0, -77.0], "expected": -53.99999999989738}, {"input": [-54.0, -76.5], "expected": -53.99999999983081}, {"input": [-54.0, -76.0], "expected": -53.999999999721055}, {"input": [-54.0, -75.5], "expected": -53.999999999540094}, {"input": [-54.0, -75.0], "expected": -53.999999999241744}, {"input": [-54.0, -74.5], "expected": -53.99999999874985}, {"input": [-54.0, -74.0], "expected": -53.99999999793884}, {"input": [-54.0, -73.5], "expected": -53.99999999660173}, {"input": [-54.0, -73.0], "expected": -53.99999999439721}, {"input": [-54.0, -72.5], "expected": -53.999999990762554}, {"input": [-54.0, -72.0], "expected": -53.99999998477002}, {"input": [-54.0, -71.5], "expected": -53.99999997489001}, {"input": [-54.0, -71.0], "expected": -53.999999958600625}, {"input": [-54.0, -70.5], "expected": -53.99999993174397}, {"input": [-54.0, -70.0], "expected": -53.99999988746483}, {"input": [-54.0, -69.5], "expected": -53.99999981446088}, {"input": [-54.0, -69.0], "expected": -53.999999694097724}, {"input": [-54.0, -68.5], "expected": -53.99999949565247}, {"input": [-54.0, -68.0], "expected": -53.999999168471625}, {"input": [-54.0, -67.5], "expected": -53.999998629041855}, {"input": [-54.0, -67.0], "expected": -53.99999773967315}, {"input": [-54.0, -66.5], "expected": -53.99999627335377}, {"input": [-54.0, -66.0], "expected": -53.99999385580652}, {"input": [-54.0, -65.5], "expected": -53.99998986995771}, {"input": [-54.0, -65.0], "expected": -53.99998329843868}, {"input": [-54.0, -64.5], "expected": -53.99997246392977}, {"input": [-54.0, -64.0], "expected": -53.99995460110078}, {"input": [-54.0, -63.5], "expected": -53.99992515097137}, {"input": [-54.0, -63.0], "expected": -53.99987659781028}, {"input": [-54.0, -62.5], "expected": -53.99979655232787}, {"input": [-54.0, -62.0], "expected": -53.9996645936271}, {"input": [-54.0, -61.5], "expected": -53.99944706852464}, {"input": [-54.0, -61.0], "expected": -53.99908853354623}, {"input": [-54.0, -60.5], "expected": -53.99849768984024}, {"input": [-54.0, -60.0], "expected": -53.99752431486227}, {"input": [-54.0, -59.5], "expected": -53.99592155672943}, {"input": [-54.0, -59.0], "expected": -53.99328465151088}, {"input": [-54.0, -58.5], "expected": -53.9889522551514}, {"input": [-54.0, -58.0], "expected": -53.98185007208219}, {"input": [-54.0, -57.5], "expected": -53.97024958172738}, {"input": [-54.0, -57.0], "expected": -53.951412648426256}, {"input": [-54.0, -56.5], "expected": -53.92111026570745}, {"input": [-54.0, -56.0], "expected": -53.87307198895703}, {"input": [-54.0, -55.5], "expected": -53.79858672201725}, {"input": [-54.0, -55.0], "expected": -53.68673831248178}, {"input": [-54.0, -54.5], "expected": -53.52592301581989}, {"input": [-54.0, -54.0], "expected": -53.30685281944005}, {"input": [-54.0, -53.5], "expected": -53.02592301581989}, {"input": [-54.0, -53.0], "expected": -52.68673831248178}, {"input": [-54.0, -52.5], "expected": -52.29858672201725}, {"input": [-54.0, -52.0], "expected": -51.87307198895703}, {"input": [-54.0, -51.5], "expected": -51.42111026570745}, {"input": [-54.0, -51.0], "expected": -50.951412648426256}, {"input": [-54.0, -50.5], "expected": -50.47024958172738}, {"input": [-54.0, -50.0], "expected": -49.98185007208219}, {"input": [-54.0, -49.5], "expected": -49.4889522551514}, {"input": [-54.0, -49.0], "expected": -48.99328465151088}, {"input": [-54.0, -48.5], "expected": -48.49592155672943}, {"input": [-54.0, -48.0], "expected": -47.99752431486227}, {"input": [-54.0, -47.5], "expected": -47.49849768984024}, {"input": [-54.0, -47.0], "expected": -46.99908853354623}, {"input": [-54.0, -46.5], "expected": -46.49944706852464}, {"input": [-54.0, -46.0], "expected": -45.9996645936271}, {"input": [-54.0, -45.5], "expected": -45.49979655232787}, {"input": [-54.0, -45.0], "expected": -44.99987659781028}, {"input": [-54.0, -44.5], "expected": -44.49992515097137}, {"input": [-54.0, -44.0], "expected": -43.99995460110078}, {"input": [-54.0, -43.5], "expected": -43.49997246392977}, {"input": [-54.0, -43.0], "expected": -42.99998329843868}, {"input": [-54.0, -42.5], "expected": -42.49998986995771}, {"input": [-54.0, -42.0], "expected": -41.99999385580652}, {"input": [-54.0, -41.5], "expected": -41.49999627335377}, {"input": [-54.0, -41.0], "expected": -40.99999773967315}, {"input": [-54.0, -40.5], "expected": -40.499998629041855}, {"input": [-54.0, -40.0], "expected": -39.999999168471625}, {"input": [-54.0, -39.5], "expected": -39.49999949565247}, {"input": [-54.0, -39.0], "expected": -38.999999694097724}, {"input": [-54.0, -38.5], "expected": -38.49999981446088}, {"input": [-54.0, -38.0], "expected": -37.99999988746483}, {"input": [-54.0, -37.5], "expected": -37.49999993174397}, {"input": [-54.0, -37.0], "expected": -36.999999958600625}, {"input": [-54.0, -36.5], "expected": -36.49999997489001}, {"input": [-54.0, -36.0], "expected": -35.99999998477002}, {"input": [-54.0, -35.5], "expected": -35.499999990762554}, {"input": [-54.0, -35.0], "expected": -34.99999999439721}, {"input": [-54.0, -34.5], "expected": -34.49999999660173}, {"input": [-54.0, -34.0], "expected": -33.99999999793884}, {"input": [-54.0, -33.5], "expected": -33.49999999874985}, {"input": [-54.0, -33.0], "expected": -32.999999999241744}, {"input": [-54.0, -32.5], "expected": -32.499999999540094}, {"input": [-54.0, -32.0], "expected": -31.99999999972105}, {"input": [-54.0, -31.5], "expected": -31.49999999983081}, {"input": [-54.0, -31.0], "expected": -30.99999999989738}, {"input": [-54.0, -30.5], "expected": -30.49999999993776}, {"input": [-54.0, -30.0], "expected": -29.99999999996225}, {"input": [-54.0, -29.5], "expected": -29.499999999977103}, {"input": [-54.0, -29.0], "expected": -28.999999999986112}, {"input": [-54.0, -28.5], "expected": -28.499999999991577}, {"input": [-54.0, -28.0], "expected": -27.99999999999489}, {"input": [-54.0, -27.5], "expected": -27.499999999996902}, {"input": [-54.0, -27.0], "expected": -26.99999999999812}, {"input": [-54.0, -26.5], "expected": -26.49999999999886}, {"input": [-54.0, -26.0], "expected": -25.999999999999307}, {"input": [-54.0, -25.5], "expected": -25.49999999999958}, {"input": [-54.0, -25.0], "expected": -24.999999999999744}, {"input": [-54.0, -24.5], "expected": -24.499999999999847}, {"input": [-54.0, -24.0], "expected": -23.999999999999908}, {"input": [-54.0, -23.5], "expected": -23.499999999999943}, {"input": [-54.0, -23.0], "expected": -22.999999999999964}, {"input": [-54.0, -22.5], "expected": -22.49999999999998}, {"input": [-54.0, -22.0], "expected": -21.999999999999986}, {"input": [-54.0, -21.5], "expected": -21.499999999999993}, {"input": [-54.0, -21.0], "expected": -20.999999999999996}, {"input": [-54.0, -20.5], "expected": -20.499999999999996}, {"input": [-54.0, -20.0], "expected": -20.0}, {"input": [-54.0, -19.5], "expected": -19.5}, {"input": [-54.0, -19.0], "expected": -19.0}, {"input": [-54.0, -18.5], "expected": -18.5}, {"input": [-54.0, -18.0], "expected": -18.0}, {"input": [-54.0, -17.5], "expected": -17.5}, {"input": [-54.0, -17.0], "expected": -17.0}, {"input": [-54.0, -16.5], "expected": -16.5}, {"input": [-54.0, -16.0], "expected": -16.0}, {"input": [-54.0, -15.5], "expected": -15.5}, {"input": [-54.0, -15.0], "expected": -15.0}, {"input": [-54.0, -14.5], "expected": -14.5}, {"input": [-54.0, -14.0], "expected": -14.0}, {"input": [-54.0, -13.5], "expected": -13.5}, {"input": [-54.0, -13.0], "expected": -13.0}, {"input": [-54.0, -12.5], "expected": -12.5}, {"input": [-54.0, -12.0], "expected": -12.0}, {"input": [-54.0, -11.5], "expected": -11.5}, {"input": [-54.0, -11.0], "expected": -11.0}, {"input": [-54.0, -10.5], "expected": -10.5}, {"input": [-54.0, -10.0], "expected": -10.0}, {"input": [-54.0, -9.5], "expected": -9.5}, {"input": [-54.0, -9.0], "expected": -9.0}, {"input": [-54.0, -8.5], "expected": -8.5}, {"input": [-54.0, -8.0], "expected": -8.0}, {"input": [-54.0, -7.5], "expected": -7.5}, {"input": [-54.0, -7.0], "expected": -7.0}, {"input": [-54.0, -6.5], "expected": -6.5}, {"input": [-54.0, -6.0], "expected": -6.0}, {"input": [-54.0, -5.5], "expected": -5.5}, {"input": [-54.0, -5.0], "expected": -5.0}, {"input": [-54.0, -4.5], "expected": -4.5}, {"input": [-54.0, -4.0], "expected": -4.0}, {"input": [-54.0, -3.5], "expected": -3.5}, {"input": [-54.0, -3.0], "expected": -3.0}, {"input": [-54.0, -2.5], "expected": -2.5}, {"input": [-54.0, -2.0], "expected": -2.0}, {"input": [-54.0, -1.5], "expected": -1.5}, {"input": [-54.0, -1.0], "expected": -1.0}, {"input": [-54.0, -0.5], "expected": -0.5}, {"input": [-54.0, 0.0], "expected": 3.532628572200807e-24}, {"input": [-54.0, 0.5], "expected": 0.5}, {"input": [-54.0, 1.0], "expected": 1.0}, {"input": [-54.0, 1.5], "expected": 1.5}, {"input": [-54.0, 2.0], "expected": 2.0}, {"input": [-54.0, 2.5], "expected": 2.5}, {"input": [-54.0, 3.0], "expected": 3.0}, {"input": [-54.0, 3.5], "expected": 3.5}, {"input": [-54.0, 4.0], "expected": 4.0}, {"input": [-54.0, 4.5], "expected": 4.5}, {"input": [-54.0, 5.0], "expected": 5.0}, {"input": [-54.0, 5.5], "expected": 5.5}, {"input": [-54.0, 6.0], "expected": 6.0}, {"input": [-54.0, 6.5], "expected": 6.5}, {"input": [-54.0, 7.0], "expected": 7.0}, {"input": [-54.0, 7.5], "expected": 7.5}, {"input": [-54.0, 8.0], "expected": 8.0}, {"input": [-54.0, 8.5], "expected": 8.5}, {"input": [-54.0, 9.0], "expected": 9.0}, {"input": [-54.0, 9.5], "expected": 9.5}, {"input": [-54.0, 10.0], "expected": 10.0}, {"input": [-54.0, 10.5], "expected": 10.5}, {"input": [-54.0, 11.0], "expected": 11.0}, {"input": [-54.0, 11.5], "expected": 11.5}, {"input": [-54.0, 12.0], "expected": 12.0}, {"input": [-54.0, 12.5], "expected": 12.5}, {"input": [-54.0, 13.0], "expected": 13.0}, {"input": [-54.0, 13.5], "expected": 13.5}, {"input": [-54.0, 14.0], "expected": 14.0}, {"input": [-54.0, 14.5], "expected": 14.5}, {"input": [-54.0, 15.0], "expected": 15.0}, {"input": [-54.0, 15.5], "expected": 15.5}, {"input": [-54.0, 16.0], "expected": 16.0}, {"input": [-54.0, 16.5], "expected": 16.5}, {"input": [-54.0, 17.0], "expected": 17.0}, {"input": [-54.0, 17.5], "expected": 17.5}, {"input": [-54.0, 18.0], "expected": 18.0}, {"input": [-54.0, 18.5], "expected": 18.5}, {"input": [-54.0, 19.0], "expected": 19.0}, {"input": [-54.0, 19.5], "expected": 19.5}, {"input": [-54.0, 20.0], "expected": 20.0}, {"input": [-54.0, 20.5], "expected": 20.5}, {"input": [-54.0, 21.0], "expected": 21.0}, {"input": [-54.0, 21.5], "expected": 21.5}, {"input": [-54.0, 22.0], "expected": 22.0}, {"input": [-54.0, 22.5], "expected": 22.5}, {"input": [-54.0, 23.0], "expected": 23.0}, {"input": [-54.0, 23.5], "expected": 23.5}, {"input": [-54.0, 24.0], "expected": 24.0}, {"input": [-54.0, 24.5], "expected": 24.5}, {"input": [-54.0, 25.0], "expected": 25.0}, {"input": [-54.0, 25.5], "expected": 25.5}, {"input": [-54.0, 26.0], "expected": 26.0}, {"input": [-54.0, 26.5], "expected": 26.5}, {"input": [-54.0, 27.0], "expected": 27.0}, {"input": [-54.0, 27.5], "expected": 27.5}, {"input": [-54.0, 28.0], "expected": 28.0}, {"input": [-54.0, 28.5], "expected": 28.5}, {"input": [-54.0, 29.0], "expected": 29.0}, {"input": [-54.0, 29.5], "expected": 29.5}, {"input": [-54.0, 30.0], "expected": 30.0}, {"input": [-54.0, 30.5], "expected": 30.5}, {"input": [-54.0, 31.0], "expected": 31.0}, {"input": [-54.0, 31.5], "expected": 31.5}, {"input": [-54.0, 32.0], "expected": 32.0}, {"input": [-54.0, 32.5], "expected": 32.5}, {"input": [-54.0, 33.0], "expected": 33.0}, {"input": [-54.0, 33.5], "expected": 33.5}, {"input": [-54.0, 34.0], "expected": 34.0}, {"input": [-54.0, 34.5], "expected": 34.5}, {"input": [-54.0, 35.0], "expected": 35.0}, {"input": [-54.0, 35.5], "expected": 35.5}, {"input": [-54.0, 36.0], "expected": 36.0}, {"input": [-54.0, 36.5], "expected": 36.5}, {"input": [-54.0, 37.0], "expected": 37.0}, {"input": [-54.0, 37.5], "expected": 37.5}, {"input": [-54.0, 38.0], "expected": 38.0}, {"input": [-54.0, 38.5], "expected": 38.5}, {"input": [-54.0, 39.0], "expected": 39.0}, {"input": [-54.0, 39.5], "expected": 39.5}, {"input": [-54.0, 40.0], "expected": 40.0}, {"input": [-54.0, 40.5], "expected": 40.5}, {"input": [-54.0, 41.0], "expected": 41.0}, {"input": [-54.0, 41.5], "expected": 41.5}, {"input": [-54.0, 42.0], "expected": 42.0}, {"input": [-54.0, 42.5], "expected": 42.5}, {"input": [-54.0, 43.0], "expected": 43.0}, {"input": [-54.0, 43.5], "expected": 43.5}, {"input": [-54.0, 44.0], "expected": 44.0}, {"input": [-54.0, 44.5], "expected": 44.5}, {"input": [-54.0, 45.0], "expected": 45.0}, {"input": [-54.0, 45.5], "expected": 45.5}, {"input": [-54.0, 46.0], "expected": 46.0}, {"input": [-54.0, 46.5], "expected": 46.5}, {"input": [-54.0, 47.0], "expected": 47.0}, {"input": [-54.0, 47.5], "expected": 47.5}, {"input": [-54.0, 48.0], "expected": 48.0}, {"input": [-54.0, 48.5], "expected": 48.5}, {"input": [-54.0, 49.0], "expected": 49.0}, {"input": [-54.0, 49.5], "expected": 49.5}, {"input": [-54.0, 50.0], "expected": 50.0}, {"input": [-54.0, 50.5], "expected": 50.5}, {"input": [-54.0, 51.0], "expected": 51.0}, {"input": [-54.0, 51.5], "expected": 51.5}, {"input": [-54.0, 52.0], "expected": 52.0}, {"input": [-54.0, 52.5], "expected": 52.5}, {"input": [-54.0, 53.0], "expected": 53.0}, {"input": [-54.0, 53.5], "expected": 53.5}, {"input": [-54.0, 54.0], "expected": 54.0}, {"input": [-54.0, 54.5], "expected": 54.5}, {"input": [-54.0, 55.0], "expected": 55.0}, {"input": [-54.0, 55.5], "expected": 55.5}, {"input": [-54.0, 56.0], "expected": 56.0}, {"input": [-54.0, 56.5], "expected": 56.5}, {"input": [-54.0, 57.0], "expected": 57.0}, {"input": [-54.0, 57.5], "expected": 57.5}, {"input": [-54.0, 58.0], "expected": 58.0}, {"input": [-54.0, 58.5], "expected": 58.5}, {"input": [-54.0, 59.0], "expected": 59.0}, {"input": [-54.0, 59.5], "expected": 59.5}, {"input": [-54.0, 60.0], "expected": 60.0}, {"input": [-54.0, 60.5], "expected": 60.5}, {"input": [-54.0, 61.0], "expected": 61.0}, {"input": [-54.0, 61.5], "expected": 61.5}, {"input": [-54.0, 62.0], "expected": 62.0}, {"input": [-54.0, 62.5], "expected": 62.5}, {"input": [-54.0, 63.0], "expected": 63.0}, {"input": [-54.0, 63.5], "expected": 63.5}, {"input": [-54.0, 64.0], "expected": 64.0}, {"input": [-54.0, 64.5], "expected": 64.5}, {"input": [-54.0, 65.0], "expected": 65.0}, {"input": [-54.0, 65.5], "expected": 65.5}, {"input": [-54.0, 66.0], "expected": 66.0}, {"input": [-54.0, 66.5], "expected": 66.5}, {"input": [-54.0, 67.0], "expected": 67.0}, {"input": [-54.0, 67.5], "expected": 67.5}, {"input": [-54.0, 68.0], "expected": 68.0}, {"input": [-54.0, 68.5], "expected": 68.5}, {"input": [-54.0, 69.0], "expected": 69.0}, {"input": [-54.0, 69.5], "expected": 69.5}, {"input": [-54.0, 70.0], "expected": 70.0}, {"input": [-54.0, 70.5], "expected": 70.5}, {"input": [-54.0, 71.0], "expected": 71.0}, {"input": [-54.0, 71.5], "expected": 71.5}, {"input": [-54.0, 72.0], "expected": 72.0}, {"input": [-54.0, 72.5], "expected": 72.5}, {"input": [-54.0, 73.0], "expected": 73.0}, {"input": [-54.0, 73.5], "expected": 73.5}, {"input": [-54.0, 74.0], "expected": 74.0}, {"input": [-54.0, 74.5], "expected": 74.5}, {"input": [-54.0, 75.0], "expected": 75.0}, {"input": [-54.0, 75.5], "expected": 75.5}, {"input": [-54.0, 76.0], "expected": 76.0}, {"input": [-54.0, 76.5], "expected": 76.5}, {"input": [-54.0, 77.0], "expected": 77.0}, {"input": [-54.0, 77.5], "expected": 77.5}, {"input": [-54.0, 78.0], "expected": 78.0}, {"input": [-54.0, 78.5], "expected": 78.5}, {"input": [-54.0, 79.0], "expected": 79.0}, {"input": [-54.0, 79.5], "expected": 79.5}, {"input": [-54.0, 80.0], "expected": 80.0}, {"input": [-54.0, 80.5], "expected": 80.5}, {"input": [-54.0, 81.0], "expected": 81.0}, {"input": [-54.0, 81.5], "expected": 81.5}, {"input": [-54.0, 82.0], "expected": 82.0}, {"input": [-54.0, 82.5], "expected": 82.5}, {"input": [-54.0, 83.0], "expected": 83.0}, {"input": [-54.0, 83.5], "expected": 83.5}, {"input": [-54.0, 84.0], "expected": 84.0}, {"input": [-54.0, 84.5], "expected": 84.5}, {"input": [-54.0, 85.0], "expected": 85.0}, {"input": [-54.0, 85.5], "expected": 85.5}, {"input": [-54.0, 86.0], "expected": 86.0}, {"input": [-54.0, 86.5], "expected": 86.5}, {"input": [-54.0, 87.0], "expected": 87.0}, {"input": [-54.0, 87.5], "expected": 87.5}, {"input": [-54.0, 88.0], "expected": 88.0}, {"input": [-54.0, 88.5], "expected": 88.5}, {"input": [-54.0, 89.0], "expected": 89.0}, {"input": [-54.0, 89.5], "expected": 89.5}, {"input": [-54.0, 90.0], "expected": 90.0}, {"input": [-54.0, 90.5], "expected": 90.5}, {"input": [-54.0, 91.0], "expected": 91.0}, {"input": [-54.0, 91.5], "expected": 91.5}, {"input": [-54.0, 92.0], "expected": 92.0}, {"input": [-54.0, 92.5], "expected": 92.5}, {"input": [-54.0, 93.0], "expected": 93.0}, {"input": [-54.0, 93.5], "expected": 93.5}, {"input": [-54.0, 94.0], "expected": 94.0}, {"input": [-54.0, 94.5], "expected": 94.5}, {"input": [-54.0, 95.0], "expected": 95.0}, {"input": [-54.0, 95.5], "expected": 95.5}, {"input": [-54.0, 96.0], "expected": 96.0}, {"input": [-54.0, 96.5], "expected": 96.5}, {"input": [-54.0, 97.0], "expected": 97.0}, {"input": [-54.0, 97.5], "expected": 97.5}, {"input": [-54.0, 98.0], "expected": 98.0}, {"input": [-54.0, 98.5], "expected": 98.5}, {"input": [-54.0, 99.0], "expected": 99.0}, {"input": [-54.0, 99.5], "expected": 99.5}, {"input": [-53.5, -100.0], "expected": -53.5}, {"input": [-53.5, -99.5], "expected": -53.5}, {"input": [-53.5, -99.0], "expected": -53.5}, {"input": [-53.5, -98.5], "expected": -53.5}, {"input": [-53.5, -98.0], "expected": -53.5}, {"input": [-53.5, -97.5], "expected": -53.5}, {"input": [-53.5, -97.0], "expected": -53.5}, {"input": [-53.5, -96.5], "expected": -53.5}, {"input": [-53.5, -96.0], "expected": -53.5}, {"input": [-53.5, -95.5], "expected": -53.5}, {"input": [-53.5, -95.0], "expected": -53.5}, {"input": [-53.5, -94.5], "expected": -53.5}, {"input": [-53.5, -94.0], "expected": -53.5}, {"input": [-53.5, -93.5], "expected": -53.5}, {"input": [-53.5, -93.0], "expected": -53.5}, {"input": [-53.5, -92.5], "expected": -53.5}, {"input": [-53.5, -92.0], "expected": -53.5}, {"input": [-53.5, -91.5], "expected": -53.5}, {"input": [-53.5, -91.0], "expected": -53.5}, {"input": [-53.5, -90.5], "expected": -53.5}, {"input": [-53.5, -90.0], "expected": -53.5}, {"input": [-53.5, -89.5], "expected": -53.5}, {"input": [-53.5, -89.0], "expected": -53.5}, {"input": [-53.5, -88.5], "expected": -53.5}, {"input": [-53.5, -88.0], "expected": -53.5}, {"input": [-53.5, -87.5], "expected": -53.5}, {"input": [-53.5, -87.0], "expected": -53.5}, {"input": [-53.5, -86.5], "expected": -53.49999999999999}, {"input": [-53.5, -86.0], "expected": -53.49999999999999}, {"input": [-53.5, -85.5], "expected": -53.499999999999986}, {"input": [-53.5, -85.0], "expected": -53.49999999999998}, {"input": [-53.5, -84.5], "expected": -53.499999999999964}, {"input": [-53.5, -84.0], "expected": -53.49999999999994}, {"input": [-53.5, -83.5], "expected": -53.49999999999991}, {"input": [-53.5, -83.0], "expected": -53.499999999999844}, {"input": [-53.5, -82.5], "expected": -53.499999999999744}, {"input": [-53.5, -82.0], "expected": -53.49999999999958}, {"input": [-53.5, -81.5], "expected": -53.49999999999931}, {"input": [-53.5, -81.0], "expected": -53.49999999999886}, {"input": [-53.5, -80.5], "expected": -53.49999999999812}, {"input": [-53.5, -80.0], "expected": -53.4999999999969}, {"input": [-53.5, -79.5], "expected": -53.49999999999489}, {"input": [-53.5, -79.0], "expected": -53.49999999999158}, {"input": [-53.5, -78.5], "expected": -53.49999999998611}, {"input": [-53.5, -78.0], "expected": -53.4999999999771}, {"input": [-53.5, -77.5], "expected": -53.49999999996225}, {"input": [-53.5, -77.0], "expected": -53.49999999993776}, {"input": [-53.5, -76.5], "expected": -53.49999999989738}, {"input": [-53.5, -76.0], "expected": -53.49999999983081}, {"input": [-53.5, -75.5], "expected": -53.499999999721055}, {"input": [-53.5, -75.0], "expected": -53.499999999540094}, {"input": [-53.5, -74.5], "expected": -53.499999999241744}, {"input": [-53.5, -74.0], "expected": -53.49999999874985}, {"input": [-53.5, -73.5], "expected": -53.49999999793884}, {"input": [-53.5, -73.0], "expected": -53.49999999660173}, {"input": [-53.5, -72.5], "expected": -53.49999999439721}, {"input": [-53.5, -72.0], "expected": -53.499999990762554}, {"input": [-53.5, -71.5], "expected": -53.49999998477002}, {"input": [-53.5, -71.0], "expected": -53.49999997489001}, {"input": [-53.5, -70.5], "expected": -53.499999958600625}, {"input": [-53.5, -70.0], "expected": -53.49999993174397}, {"input": [-53.5, -69.5], "expected": -53.49999988746483}, {"input": [-53.5, -69.0], "expected": -53.49999981446088}, {"input": [-53.5, -68.5], "expected": -53.499999694097724}, {"input": [-53.5, -68.0], "expected": -53.49999949565247}, {"input": [-53.5, -67.5], "expected": -53.499999168471625}, {"input": [-53.5, -67.0], "expected": -53.499998629041855}, {"input": [-53.5, -66.5], "expected": -53.49999773967315}, {"input": [-53.5, -66.0], "expected": -53.49999627335377}, {"input": [-53.5, -65.5], "expected": -53.49999385580652}, {"input": [-53.5, -65.0], "expected": -53.49998986995771}, {"input": [-53.5, -64.5], "expected": -53.49998329843868}, {"input": [-53.5, -64.0], "expected": -53.49997246392977}, {"input": [-53.5, -63.5], "expected": -53.49995460110078}, {"input": [-53.5, -63.0], "expected": -53.49992515097137}, {"input": [-53.5, -62.5], "expected": -53.49987659781028}, {"input": [-53.5, -62.0], "expected": -53.49979655232787}, {"input": [-53.5, -61.5], "expected": -53.4996645936271}, {"input": [-53.5, -61.0], "expected": -53.49944706852464}, {"input": [-53.5, -60.5], "expected": -53.49908853354623}, {"input": [-53.5, -60.0], "expected": -53.49849768984024}, {"input": [-53.5, -59.5], "expected": -53.49752431486227}, {"input": [-53.5, -59.0], "expected": -53.49592155672943}, {"input": [-53.5, -58.5], "expected": -53.49328465151088}, {"input": [-53.5, -58.0], "expected": -53.4889522551514}, {"input": [-53.5, -57.5], "expected": -53.48185007208219}, {"input": [-53.5, -57.0], "expected": -53.47024958172738}, {"input": [-53.5, -56.5], "expected": -53.451412648426256}, {"input": [-53.5, -56.0], "expected": -53.42111026570745}, {"input": [-53.5, -55.5], "expected": -53.37307198895703}, {"input": [-53.5, -55.0], "expected": -53.29858672201725}, {"input": [-53.5, -54.5], "expected": -53.18673831248178}, {"input": [-53.5, -54.0], "expected": -53.02592301581989}, {"input": [-53.5, -53.5], "expected": -52.80685281944005}, {"input": [-53.5, -53.0], "expected": -52.52592301581989}, {"input": [-53.5, -52.5], "expected": -52.18673831248178}, {"input": [-53.5, -52.0], "expected": -51.79858672201725}, {"input": [-53.5, -51.5], "expected": -51.37307198895703}, {"input": [-53.5, -51.0], "expected": -50.92111026570745}, {"input": [-53.5, -50.5], "expected": -50.451412648426256}, {"input": [-53.5, -50.0], "expected": -49.97024958172738}, {"input": [-53.5, -49.5], "expected": -49.48185007208219}, {"input": [-53.5, -49.0], "expected": -48.9889522551514}, {"input": [-53.5, -48.5], "expected": -48.49328465151088}, {"input": [-53.5, -48.0], "expected": -47.99592155672943}, {"input": [-53.5, -47.5], "expected": -47.49752431486227}, {"input": [-53.5, -47.0], "expected": -46.99849768984024}, {"input": [-53.5, -46.5], "expected": -46.49908853354623}, {"input": [-53.5, -46.0], "expected": -45.99944706852464}, {"input": [-53.5, -45.5], "expected": -45.4996645936271}, {"input": [-53.5, -45.0], "expected": -44.99979655232787}, {"input": [-53.5, -44.5], "expected": -44.49987659781028}, {"input": [-53.5, -44.0], "expected": -43.99992515097137}, {"input": [-53.5, -43.5], "expected": -43.49995460110078}, {"input": [-53.5, -43.0], "expected": -42.99997246392977}, {"input": [-53.5, -42.5], "expected": -42.49998329843868}, {"input": [-53.5, -42.0], "expected": -41.99998986995771}, {"input": [-53.5, -41.5], "expected": -41.49999385580652}, {"input": [-53.5, -41.0], "expected": -40.99999627335377}, {"input": [-53.5, -40.5], "expected": -40.49999773967315}, {"input": [-53.5, -40.0], "expected": -39.999998629041855}, {"input": [-53.5, -39.5], "expected": -39.499999168471625}, {"input": [-53.5, -39.0], "expected": -38.99999949565247}, {"input": [-53.5, -38.5], "expected": -38.499999694097724}, {"input": [-53.5, -38.0], "expected": -37.99999981446088}, {"input": [-53.5, -37.5], "expected": -37.49999988746483}, {"input": [-53.5, -37.0], "expected": -36.99999993174397}, {"input": [-53.5, -36.5], "expected": -36.499999958600625}, {"input": [-53.5, -36.0], "expected": -35.99999997489001}, {"input": [-53.5, -35.5], "expected": -35.49999998477002}, {"input": [-53.5, -35.0], "expected": -34.999999990762554}, {"input": [-53.5, -34.5], "expected": -34.49999999439721}, {"input": [-53.5, -34.0], "expected": -33.99999999660173}, {"input": [-53.5, -33.5], "expected": -33.49999999793884}, {"input": [-53.5, -33.0], "expected": -32.99999999874985}, {"input": [-53.5, -32.5], "expected": -32.499999999241744}, {"input": [-53.5, -32.0], "expected": -31.999999999540094}, {"input": [-53.5, -31.5], "expected": -31.49999999972105}, {"input": [-53.5, -31.0], "expected": -30.99999999983081}, {"input": [-53.5, -30.5], "expected": -30.49999999989738}, {"input": [-53.5, -30.0], "expected": -29.99999999993776}, {"input": [-53.5, -29.5], "expected": -29.49999999996225}, {"input": [-53.5, -29.0], "expected": -28.999999999977103}, {"input": [-53.5, -28.5], "expected": -28.499999999986112}, {"input": [-53.5, -28.0], "expected": -27.999999999991577}, {"input": [-53.5, -27.5], "expected": -27.49999999999489}, {"input": [-53.5, -27.0], "expected": -26.999999999996902}, {"input": [-53.5, -26.5], "expected": -26.49999999999812}, {"input": [-53.5, -26.0], "expected": -25.99999999999886}, {"input": [-53.5, -25.5], "expected": -25.499999999999307}, {"input": [-53.5, -25.0], "expected": -24.99999999999958}, {"input": [-53.5, -24.5], "expected": -24.499999999999744}, {"input": [-53.5, -24.0], "expected": -23.999999999999847}, {"input": [-53.5, -23.5], "expected": -23.499999999999908}, {"input": [-53.5, -23.0], "expected": -22.999999999999943}, {"input": [-53.5, -22.5], "expected": -22.499999999999964}, {"input": [-53.5, -22.0], "expected": -21.99999999999998}, {"input": [-53.5, -21.5], "expected": -21.499999999999986}, {"input": [-53.5, -21.0], "expected": -20.999999999999993}, {"input": [-53.5, -20.5], "expected": -20.499999999999996}, {"input": [-53.5, -20.0], "expected": -19.999999999999996}, {"input": [-53.5, -19.5], "expected": -19.5}, {"input": [-53.5, -19.0], "expected": -19.0}, {"input": [-53.5, -18.5], "expected": -18.5}, {"input": [-53.5, -18.0], "expected": -18.0}, {"input": [-53.5, -17.5], "expected": -17.5}, {"input": [-53.5, -17.0], "expected": -17.0}, {"input": [-53.5, -16.5], "expected": -16.5}, {"input": [-53.5, -16.0], "expected": -16.0}, {"input": [-53.5, -15.5], "expected": -15.5}, {"input": [-53.5, -15.0], "expected": -15.0}, {"input": [-53.5, -14.5], "expected": -14.5}, {"input": [-53.5, -14.0], "expected": -14.0}, {"input": [-53.5, -13.5], "expected": -13.5}, {"input": [-53.5, -13.0], "expected": -13.0}, {"input": [-53.5, -12.5], "expected": -12.5}, {"input": [-53.5, -12.0], "expected": -12.0}, {"input": [-53.5, -11.5], "expected": -11.5}, {"input": [-53.5, -11.0], "expected": -11.0}, {"input": [-53.5, -10.5], "expected": -10.5}, {"input": [-53.5, -10.0], "expected": -10.0}, {"input": [-53.5, -9.5], "expected": -9.5}, {"input": [-53.5, -9.0], "expected": -9.0}, {"input": [-53.5, -8.5], "expected": -8.5}, {"input": [-53.5, -8.0], "expected": -8.0}, {"input": [-53.5, -7.5], "expected": -7.5}, {"input": [-53.5, -7.0], "expected": -7.0}, {"input": [-53.5, -6.5], "expected": -6.5}, {"input": [-53.5, -6.0], "expected": -6.0}, {"input": [-53.5, -5.5], "expected": -5.5}, {"input": [-53.5, -5.0], "expected": -5.0}, {"input": [-53.5, -4.5], "expected": -4.5}, {"input": [-53.5, -4.0], "expected": -4.0}, {"input": [-53.5, -3.5], "expected": -3.5}, {"input": [-53.5, -3.0], "expected": -3.0}, {"input": [-53.5, -2.5], "expected": -2.5}, {"input": [-53.5, -2.0], "expected": -2.0}, {"input": [-53.5, -1.5], "expected": -1.5}, {"input": [-53.5, -1.0], "expected": -1.0}, {"input": [-53.5, -0.5], "expected": -0.5}, {"input": [-53.5, 0.0], "expected": 5.824319868470494e-24}, {"input": [-53.5, 0.5], "expected": 0.5}, {"input": [-53.5, 1.0], "expected": 1.0}, {"input": [-53.5, 1.5], "expected": 1.5}, {"input": [-53.5, 2.0], "expected": 2.0}, {"input": [-53.5, 2.5], "expected": 2.5}, {"input": [-53.5, 3.0], "expected": 3.0}, {"input": [-53.5, 3.5], "expected": 3.5}, {"input": [-53.5, 4.0], "expected": 4.0}, {"input": [-53.5, 4.5], "expected": 4.5}, {"input": [-53.5, 5.0], "expected": 5.0}, {"input": [-53.5, 5.5], "expected": 5.5}, {"input": [-53.5, 6.0], "expected": 6.0}, {"input": [-53.5, 6.5], "expected": 6.5}, {"input": [-53.5, 7.0], "expected": 7.0}, {"input": [-53.5, 7.5], "expected": 7.5}, {"input": [-53.5, 8.0], "expected": 8.0}, {"input": [-53.5, 8.5], "expected": 8.5}, {"input": [-53.5, 9.0], "expected": 9.0}, {"input": [-53.5, 9.5], "expected": 9.5}, {"input": [-53.5, 10.0], "expected": 10.0}, {"input": [-53.5, 10.5], "expected": 10.5}, {"input": [-53.5, 11.0], "expected": 11.0}, {"input": [-53.5, 11.5], "expected": 11.5}, {"input": [-53.5, 12.0], "expected": 12.0}, {"input": [-53.5, 12.5], "expected": 12.5}, {"input": [-53.5, 13.0], "expected": 13.0}, {"input": [-53.5, 13.5], "expected": 13.5}, {"input": [-53.5, 14.0], "expected": 14.0}, {"input": [-53.5, 14.5], "expected": 14.5}, {"input": [-53.5, 15.0], "expected": 15.0}, {"input": [-53.5, 15.5], "expected": 15.5}, {"input": [-53.5, 16.0], "expected": 16.0}, {"input": [-53.5, 16.5], "expected": 16.5}, {"input": [-53.5, 17.0], "expected": 17.0}, {"input": [-53.5, 17.5], "expected": 17.5}, {"input": [-53.5, 18.0], "expected": 18.0}, {"input": [-53.5, 18.5], "expected": 18.5}, {"input": [-53.5, 19.0], "expected": 19.0}, {"input": [-53.5, 19.5], "expected": 19.5}, {"input": [-53.5, 20.0], "expected": 20.0}, {"input": [-53.5, 20.5], "expected": 20.5}, {"input": [-53.5, 21.0], "expected": 21.0}, {"input": [-53.5, 21.5], "expected": 21.5}, {"input": [-53.5, 22.0], "expected": 22.0}, {"input": [-53.5, 22.5], "expected": 22.5}, {"input": [-53.5, 23.0], "expected": 23.0}, {"input": [-53.5, 23.5], "expected": 23.5}, {"input": [-53.5, 24.0], "expected": 24.0}, {"input": [-53.5, 24.5], "expected": 24.5}, {"input": [-53.5, 25.0], "expected": 25.0}, {"input": [-53.5, 25.5], "expected": 25.5}, {"input": [-53.5, 26.0], "expected": 26.0}, {"input": [-53.5, 26.5], "expected": 26.5}, {"input": [-53.5, 27.0], "expected": 27.0}, {"input": [-53.5, 27.5], "expected": 27.5}, {"input": [-53.5, 28.0], "expected": 28.0}, {"input": [-53.5, 28.5], "expected": 28.5}, {"input": [-53.5, 29.0], "expected": 29.0}, {"input": [-53.5, 29.5], "expected": 29.5}, {"input": [-53.5, 30.0], "expected": 30.0}, {"input": [-53.5, 30.5], "expected": 30.5}, {"input": [-53.5, 31.0], "expected": 31.0}, {"input": [-53.5, 31.5], "expected": 31.5}, {"input": [-53.5, 32.0], "expected": 32.0}, {"input": [-53.5, 32.5], "expected": 32.5}, {"input": [-53.5, 33.0], "expected": 33.0}, {"input": [-53.5, 33.5], "expected": 33.5}, {"input": [-53.5, 34.0], "expected": 34.0}, {"input": [-53.5, 34.5], "expected": 34.5}, {"input": [-53.5, 35.0], "expected": 35.0}, {"input": [-53.5, 35.5], "expected": 35.5}, {"input": [-53.5, 36.0], "expected": 36.0}, {"input": [-53.5, 36.5], "expected": 36.5}, {"input": [-53.5, 37.0], "expected": 37.0}, {"input": [-53.5, 37.5], "expected": 37.5}, {"input": [-53.5, 38.0], "expected": 38.0}, {"input": [-53.5, 38.5], "expected": 38.5}, {"input": [-53.5, 39.0], "expected": 39.0}, {"input": [-53.5, 39.5], "expected": 39.5}, {"input": [-53.5, 40.0], "expected": 40.0}, {"input": [-53.5, 40.5], "expected": 40.5}, {"input": [-53.5, 41.0], "expected": 41.0}, {"input": [-53.5, 41.5], "expected": 41.5}, {"input": [-53.5, 42.0], "expected": 42.0}, {"input": [-53.5, 42.5], "expected": 42.5}, {"input": [-53.5, 43.0], "expected": 43.0}, {"input": [-53.5, 43.5], "expected": 43.5}, {"input": [-53.5, 44.0], "expected": 44.0}, {"input": [-53.5, 44.5], "expected": 44.5}, {"input": [-53.5, 45.0], "expected": 45.0}, {"input": [-53.5, 45.5], "expected": 45.5}, {"input": [-53.5, 46.0], "expected": 46.0}, {"input": [-53.5, 46.5], "expected": 46.5}, {"input": [-53.5, 47.0], "expected": 47.0}, {"input": [-53.5, 47.5], "expected": 47.5}, {"input": [-53.5, 48.0], "expected": 48.0}, {"input": [-53.5, 48.5], "expected": 48.5}, {"input": [-53.5, 49.0], "expected": 49.0}, {"input": [-53.5, 49.5], "expected": 49.5}, {"input": [-53.5, 50.0], "expected": 50.0}, {"input": [-53.5, 50.5], "expected": 50.5}, {"input": [-53.5, 51.0], "expected": 51.0}, {"input": [-53.5, 51.5], "expected": 51.5}, {"input": [-53.5, 52.0], "expected": 52.0}, {"input": [-53.5, 52.5], "expected": 52.5}, {"input": [-53.5, 53.0], "expected": 53.0}, {"input": [-53.5, 53.5], "expected": 53.5}, {"input": [-53.5, 54.0], "expected": 54.0}, {"input": [-53.5, 54.5], "expected": 54.5}, {"input": [-53.5, 55.0], "expected": 55.0}, {"input": [-53.5, 55.5], "expected": 55.5}, {"input": [-53.5, 56.0], "expected": 56.0}, {"input": [-53.5, 56.5], "expected": 56.5}, {"input": [-53.5, 57.0], "expected": 57.0}, {"input": [-53.5, 57.5], "expected": 57.5}, {"input": [-53.5, 58.0], "expected": 58.0}, {"input": [-53.5, 58.5], "expected": 58.5}, {"input": [-53.5, 59.0], "expected": 59.0}, {"input": [-53.5, 59.5], "expected": 59.5}, {"input": [-53.5, 60.0], "expected": 60.0}, {"input": [-53.5, 60.5], "expected": 60.5}, {"input": [-53.5, 61.0], "expected": 61.0}, {"input": [-53.5, 61.5], "expected": 61.5}, {"input": [-53.5, 62.0], "expected": 62.0}, {"input": [-53.5, 62.5], "expected": 62.5}, {"input": [-53.5, 63.0], "expected": 63.0}, {"input": [-53.5, 63.5], "expected": 63.5}, {"input": [-53.5, 64.0], "expected": 64.0}, {"input": [-53.5, 64.5], "expected": 64.5}, {"input": [-53.5, 65.0], "expected": 65.0}, {"input": [-53.5, 65.5], "expected": 65.5}, {"input": [-53.5, 66.0], "expected": 66.0}, {"input": [-53.5, 66.5], "expected": 66.5}, {"input": [-53.5, 67.0], "expected": 67.0}, {"input": [-53.5, 67.5], "expected": 67.5}, {"input": [-53.5, 68.0], "expected": 68.0}, {"input": [-53.5, 68.5], "expected": 68.5}, {"input": [-53.5, 69.0], "expected": 69.0}, {"input": [-53.5, 69.5], "expected": 69.5}, {"input": [-53.5, 70.0], "expected": 70.0}, {"input": [-53.5, 70.5], "expected": 70.5}, {"input": [-53.5, 71.0], "expected": 71.0}, {"input": [-53.5, 71.5], "expected": 71.5}, {"input": [-53.5, 72.0], "expected": 72.0}, {"input": [-53.5, 72.5], "expected": 72.5}, {"input": [-53.5, 73.0], "expected": 73.0}, {"input": [-53.5, 73.5], "expected": 73.5}, {"input": [-53.5, 74.0], "expected": 74.0}, {"input": [-53.5, 74.5], "expected": 74.5}, {"input": [-53.5, 75.0], "expected": 75.0}, {"input": [-53.5, 75.5], "expected": 75.5}, {"input": [-53.5, 76.0], "expected": 76.0}, {"input": [-53.5, 76.5], "expected": 76.5}, {"input": [-53.5, 77.0], "expected": 77.0}, {"input": [-53.5, 77.5], "expected": 77.5}, {"input": [-53.5, 78.0], "expected": 78.0}, {"input": [-53.5, 78.5], "expected": 78.5}, {"input": [-53.5, 79.0], "expected": 79.0}, {"input": [-53.5, 79.5], "expected": 79.5}, {"input": [-53.5, 80.0], "expected": 80.0}, {"input": [-53.5, 80.5], "expected": 80.5}, {"input": [-53.5, 81.0], "expected": 81.0}, {"input": [-53.5, 81.5], "expected": 81.5}, {"input": [-53.5, 82.0], "expected": 82.0}, {"input": [-53.5, 82.5], "expected": 82.5}, {"input": [-53.5, 83.0], "expected": 83.0}, {"input": [-53.5, 83.5], "expected": 83.5}, {"input": [-53.5, 84.0], "expected": 84.0}, {"input": [-53.5, 84.5], "expected": 84.5}, {"input": [-53.5, 85.0], "expected": 85.0}, {"input": [-53.5, 85.5], "expected": 85.5}, {"input": [-53.5, 86.0], "expected": 86.0}, {"input": [-53.5, 86.5], "expected": 86.5}, {"input": [-53.5, 87.0], "expected": 87.0}, {"input": [-53.5, 87.5], "expected": 87.5}, {"input": [-53.5, 88.0], "expected": 88.0}, {"input": [-53.5, 88.5], "expected": 88.5}, {"input": [-53.5, 89.0], "expected": 89.0}, {"input": [-53.5, 89.5], "expected": 89.5}, {"input": [-53.5, 90.0], "expected": 90.0}, {"input": [-53.5, 90.5], "expected": 90.5}, {"input": [-53.5, 91.0], "expected": 91.0}, {"input": [-53.5, 91.5], "expected": 91.5}, {"input": [-53.5, 92.0], "expected": 92.0}, {"input": [-53.5, 92.5], "expected": 92.5}, {"input": [-53.5, 93.0], "expected": 93.0}, {"input": [-53.5, 93.5], "expected": 93.5}, {"input": [-53.5, 94.0], "expected": 94.0}, {"input": [-53.5, 94.5], "expected": 94.5}, {"input": [-53.5, 95.0], "expected": 95.0}, {"input": [-53.5, 95.5], "expected": 95.5}, {"input": [-53.5, 96.0], "expected": 96.0}, {"input": [-53.5, 96.5], "expected": 96.5}, {"input": [-53.5, 97.0], "expected": 97.0}, {"input": [-53.5, 97.5], "expected": 97.5}, {"input": [-53.5, 98.0], "expected": 98.0}, {"input": [-53.5, 98.5], "expected": 98.5}, {"input": [-53.5, 99.0], "expected": 99.0}, {"input": [-53.5, 99.5], "expected": 99.5}, {"input": [-53.0, -100.0], "expected": -53.0}, {"input": [-53.0, -99.5], "expected": -53.0}, {"input": [-53.0, -99.0], "expected": -53.0}, {"input": [-53.0, -98.5], "expected": -53.0}, {"input": [-53.0, -98.0], "expected": -53.0}, {"input": [-53.0, -97.5], "expected": -53.0}, {"input": [-53.0, -97.0], "expected": -53.0}, {"input": [-53.0, -96.5], "expected": -53.0}, {"input": [-53.0, -96.0], "expected": -53.0}, {"input": [-53.0, -95.5], "expected": -53.0}, {"input": [-53.0, -95.0], "expected": -53.0}, {"input": [-53.0, -94.5], "expected": -53.0}, {"input": [-53.0, -94.0], "expected": -53.0}, {"input": [-53.0, -93.5], "expected": -53.0}, {"input": [-53.0, -93.0], "expected": -53.0}, {"input": [-53.0, -92.5], "expected": -53.0}, {"input": [-53.0, -92.0], "expected": -53.0}, {"input": [-53.0, -91.5], "expected": -53.0}, {"input": [-53.0, -91.0], "expected": -53.0}, {"input": [-53.0, -90.5], "expected": -53.0}, {"input": [-53.0, -90.0], "expected": -53.0}, {"input": [-53.0, -89.5], "expected": -53.0}, {"input": [-53.0, -89.0], "expected": -53.0}, {"input": [-53.0, -88.5], "expected": -53.0}, {"input": [-53.0, -88.0], "expected": -53.0}, {"input": [-53.0, -87.5], "expected": -53.0}, {"input": [-53.0, -87.0], "expected": -53.0}, {"input": [-53.0, -86.5], "expected": -53.0}, {"input": [-53.0, -86.0], "expected": -52.99999999999999}, {"input": [-53.0, -85.5], "expected": -52.99999999999999}, {"input": [-53.0, -85.0], "expected": -52.999999999999986}, {"input": [-53.0, -84.5], "expected": -52.99999999999998}, {"input": [-53.0, -84.0], "expected": -52.999999999999964}, {"input": [-53.0, -83.5], "expected": -52.99999999999994}, {"input": [-53.0, -83.0], "expected": -52.99999999999991}, {"input": [-53.0, -82.5], "expected": -52.999999999999844}, {"input": [-53.0, -82.0], "expected": -52.999999999999744}, {"input": [-53.0, -81.5], "expected": -52.99999999999958}, {"input": [-53.0, -81.0], "expected": -52.99999999999931}, {"input": [-53.0, -80.5], "expected": -52.99999999999886}, {"input": [-53.0, -80.0], "expected": -52.99999999999812}, {"input": [-53.0, -79.5], "expected": -52.9999999999969}, {"input": [-53.0, -79.0], "expected": -52.99999999999489}, {"input": [-53.0, -78.5], "expected": -52.99999999999158}, {"input": [-53.0, -78.0], "expected": -52.99999999998611}, {"input": [-53.0, -77.5], "expected": -52.9999999999771}, {"input": [-53.0, -77.0], "expected": -52.99999999996225}, {"input": [-53.0, -76.5], "expected": -52.99999999993776}, {"input": [-53.0, -76.0], "expected": -52.99999999989738}, {"input": [-53.0, -75.5], "expected": -52.99999999983081}, {"input": [-53.0, -75.0], "expected": -52.999999999721055}, {"input": [-53.0, -74.5], "expected": -52.999999999540094}, {"input": [-53.0, -74.0], "expected": -52.999999999241744}, {"input": [-53.0, -73.5], "expected": -52.99999999874985}, {"input": [-53.0, -73.0], "expected": -52.99999999793884}, {"input": [-53.0, -72.5], "expected": -52.99999999660173}, {"input": [-53.0, -72.0], "expected": -52.99999999439721}, {"input": [-53.0, -71.5], "expected": -52.999999990762554}, {"input": [-53.0, -71.0], "expected": -52.99999998477002}, {"input": [-53.0, -70.5], "expected": -52.99999997489001}, {"input": [-53.0, -70.0], "expected": -52.999999958600625}, {"input": [-53.0, -69.5], "expected": -52.99999993174397}, {"input": [-53.0, -69.0], "expected": -52.99999988746483}, {"input": [-53.0, -68.5], "expected": -52.99999981446088}, {"input": [-53.0, -68.0], "expected": -52.999999694097724}, {"input": [-53.0, -67.5], "expected": -52.99999949565247}, {"input": [-53.0, -67.0], "expected": -52.999999168471625}, {"input": [-53.0, -66.5], "expected": -52.999998629041855}, {"input": [-53.0, -66.0], "expected": -52.99999773967315}, {"input": [-53.0, -65.5], "expected": -52.99999627335377}, {"input": [-53.0, -65.0], "expected": -52.99999385580652}, {"input": [-53.0, -64.5], "expected": -52.99998986995771}, {"input": [-53.0, -64.0], "expected": -52.99998329843868}, {"input": [-53.0, -63.5], "expected": -52.99997246392977}, {"input": [-53.0, -63.0], "expected": -52.99995460110078}, {"input": [-53.0, -62.5], "expected": -52.99992515097137}, {"input": [-53.0, -62.0], "expected": -52.99987659781028}, {"input": [-53.0, -61.5], "expected": -52.99979655232787}, {"input": [-53.0, -61.0], "expected": -52.9996645936271}, {"input": [-53.0, -60.5], "expected": -52.99944706852464}, {"input": [-53.0, -60.0], "expected": -52.99908853354623}, {"input": [-53.0, -59.5], "expected": -52.99849768984024}, {"input": [-53.0, -59.0], "expected": -52.99752431486227}, {"input": [-53.0, -58.5], "expected": -52.99592155672943}, {"input": [-53.0, -58.0], "expected": -52.99328465151088}, {"input": [-53.0, -57.5], "expected": -52.9889522551514}, {"input": [-53.0, -57.0], "expected": -52.98185007208219}, {"input": [-53.0, -56.5], "expected": -52.97024958172738}, {"input": [-53.0, -56.0], "expected": -52.951412648426256}, {"input": [-53.0, -55.5], "expected": -52.92111026570745}, {"input": [-53.0, -55.0], "expected": -52.87307198895703}, {"input": [-53.0, -54.5], "expected": -52.79858672201725}, {"input": [-53.0, -54.0], "expected": -52.68673831248178}, {"input": [-53.0, -53.5], "expected": -52.52592301581989}, {"input": [-53.0, -53.0], "expected": -52.30685281944005}, {"input": [-53.0, -52.5], "expected": -52.02592301581989}, {"input": [-53.0, -52.0], "expected": -51.68673831248178}, {"input": [-53.0, -51.5], "expected": -51.29858672201725}, {"input": [-53.0, -51.0], "expected": -50.87307198895703}, {"input": [-53.0, -50.5], "expected": -50.42111026570745}, {"input": [-53.0, -50.0], "expected": -49.951412648426256}, {"input": [-53.0, -49.5], "expected": -49.47024958172738}, {"input": [-53.0, -49.0], "expected": -48.98185007208219}, {"input": [-53.0, -48.5], "expected": -48.4889522551514}, {"input": [-53.0, -48.0], "expected": -47.99328465151088}, {"input": [-53.0, -47.5], "expected": -47.49592155672943}, {"input": [-53.0, -47.0], "expected": -46.99752431486227}, {"input": [-53.0, -46.5], "expected": -46.49849768984024}, {"input": [-53.0, -46.0], "expected": -45.99908853354623}, {"input": [-53.0, -45.5], "expected": -45.49944706852464}, {"input": [-53.0, -45.0], "expected": -44.9996645936271}, {"input": [-53.0, -44.5], "expected": -44.49979655232787}, {"input": [-53.0, -44.0], "expected": -43.99987659781028}, {"input": [-53.0, -43.5], "expected": -43.49992515097137}, {"input": [-53.0, -43.0], "expected": -42.99995460110078}, {"input": [-53.0, -42.5], "expected": -42.49997246392977}, {"input": [-53.0, -42.0], "expected": -41.99998329843868}, {"input": [-53.0, -41.5], "expected": -41.49998986995771}, {"input": [-53.0, -41.0], "expected": -40.99999385580652}, {"input": [-53.0, -40.5], "expected": -40.49999627335377}, {"input": [-53.0, -40.0], "expected": -39.99999773967315}, {"input": [-53.0, -39.5], "expected": -39.499998629041855}, {"input": [-53.0, -39.0], "expected": -38.999999168471625}, {"input": [-53.0, -38.5], "expected": -38.49999949565247}, {"input": [-53.0, -38.0], "expected": -37.999999694097724}, {"input": [-53.0, -37.5], "expected": -37.49999981446088}, {"input": [-53.0, -37.0], "expected": -36.99999988746483}, {"input": [-53.0, -36.5], "expected": -36.49999993174397}, {"input": [-53.0, -36.0], "expected": -35.999999958600625}, {"input": [-53.0, -35.5], "expected": -35.49999997489001}, {"input": [-53.0, -35.0], "expected": -34.99999998477002}, {"input": [-53.0, -34.5], "expected": -34.499999990762554}, {"input": [-53.0, -34.0], "expected": -33.99999999439721}, {"input": [-53.0, -33.5], "expected": -33.49999999660173}, {"input": [-53.0, -33.0], "expected": -32.99999999793884}, {"input": [-53.0, -32.5], "expected": -32.49999999874985}, {"input": [-53.0, -32.0], "expected": -31.999999999241744}, {"input": [-53.0, -31.5], "expected": -31.499999999540094}, {"input": [-53.0, -31.0], "expected": -30.99999999972105}, {"input": [-53.0, -30.5], "expected": -30.49999999983081}, {"input": [-53.0, -30.0], "expected": -29.99999999989738}, {"input": [-53.0, -29.5], "expected": -29.49999999993776}, {"input": [-53.0, -29.0], "expected": -28.99999999996225}, {"input": [-53.0, -28.5], "expected": -28.499999999977103}, {"input": [-53.0, -28.0], "expected": -27.999999999986112}, {"input": [-53.0, -27.5], "expected": -27.499999999991577}, {"input": [-53.0, -27.0], "expected": -26.99999999999489}, {"input": [-53.0, -26.5], "expected": -26.499999999996902}, {"input": [-53.0, -26.0], "expected": -25.99999999999812}, {"input": [-53.0, -25.5], "expected": -25.49999999999886}, {"input": [-53.0, -25.0], "expected": -24.999999999999307}, {"input": [-53.0, -24.5], "expected": -24.49999999999958}, {"input": [-53.0, -24.0], "expected": -23.999999999999744}, {"input": [-53.0, -23.5], "expected": -23.499999999999847}, {"input": [-53.0, -23.0], "expected": -22.999999999999908}, {"input": [-53.0, -22.5], "expected": -22.499999999999943}, {"input": [-53.0, -22.0], "expected": -21.999999999999964}, {"input": [-53.0, -21.5], "expected": -21.49999999999998}, {"input": [-53.0, -21.0], "expected": -20.999999999999986}, {"input": [-53.0, -20.5], "expected": -20.499999999999993}, {"input": [-53.0, -20.0], "expected": -19.999999999999996}, {"input": [-53.0, -19.5], "expected": -19.499999999999996}, {"input": [-53.0, -19.0], "expected": -19.0}, {"input": [-53.0, -18.5], "expected": -18.5}, {"input": [-53.0, -18.0], "expected": -18.0}, {"input": [-53.0, -17.5], "expected": -17.5}, {"input": [-53.0, -17.0], "expected": -17.0}, {"input": [-53.0, -16.5], "expected": -16.5}, {"input": [-53.0, -16.0], "expected": -16.0}, {"input": [-53.0, -15.5], "expected": -15.5}, {"input": [-53.0, -15.0], "expected": -15.0}, {"input": [-53.0, -14.5], "expected": -14.5}, {"input": [-53.0, -14.0], "expected": -14.0}, {"input": [-53.0, -13.5], "expected": -13.5}, {"input": [-53.0, -13.0], "expected": -13.0}, {"input": [-53.0, -12.5], "expected": -12.5}, {"input": [-53.0, -12.0], "expected": -12.0}, {"input": [-53.0, -11.5], "expected": -11.5}, {"input": [-53.0, -11.0], "expected": -11.0}, {"input": [-53.0, -10.5], "expected": -10.5}, {"input": [-53.0, -10.0], "expected": -10.0}, {"input": [-53.0, -9.5], "expected": -9.5}, {"input": [-53.0, -9.0], "expected": -9.0}, {"input": [-53.0, -8.5], "expected": -8.5}, {"input": [-53.0, -8.0], "expected": -8.0}, {"input": [-53.0, -7.5], "expected": -7.5}, {"input": [-53.0, -7.0], "expected": -7.0}, {"input": [-53.0, -6.5], "expected": -6.5}, {"input": [-53.0, -6.0], "expected": -6.0}, {"input": [-53.0, -5.5], "expected": -5.5}, {"input": [-53.0, -5.0], "expected": -5.0}, {"input": [-53.0, -4.5], "expected": -4.5}, {"input": [-53.0, -4.0], "expected": -4.0}, {"input": [-53.0, -3.5], "expected": -3.5}, {"input": [-53.0, -3.0], "expected": -3.0}, {"input": [-53.0, -2.5], "expected": -2.5}, {"input": [-53.0, -2.0], "expected": -2.0}, {"input": [-53.0, -1.5], "expected": -1.5}, {"input": [-53.0, -1.0], "expected": -1.0}, {"input": [-53.0, -0.5], "expected": -0.5}, {"input": [-53.0, 0.0], "expected": 9.602680054508676e-24}, {"input": [-53.0, 0.5], "expected": 0.5}, {"input": [-53.0, 1.0], "expected": 1.0}, {"input": [-53.0, 1.5], "expected": 1.5}, {"input": [-53.0, 2.0], "expected": 2.0}, {"input": [-53.0, 2.5], "expected": 2.5}, {"input": [-53.0, 3.0], "expected": 3.0}, {"input": [-53.0, 3.5], "expected": 3.5}, {"input": [-53.0, 4.0], "expected": 4.0}, {"input": [-53.0, 4.5], "expected": 4.5}, {"input": [-53.0, 5.0], "expected": 5.0}, {"input": [-53.0, 5.5], "expected": 5.5}, {"input": [-53.0, 6.0], "expected": 6.0}, {"input": [-53.0, 6.5], "expected": 6.5}, {"input": [-53.0, 7.0], "expected": 7.0}, {"input": [-53.0, 7.5], "expected": 7.5}, {"input": [-53.0, 8.0], "expected": 8.0}, {"input": [-53.0, 8.5], "expected": 8.5}, {"input": [-53.0, 9.0], "expected": 9.0}, {"input": [-53.0, 9.5], "expected": 9.5}, {"input": [-53.0, 10.0], "expected": 10.0}, {"input": [-53.0, 10.5], "expected": 10.5}, {"input": [-53.0, 11.0], "expected": 11.0}, {"input": [-53.0, 11.5], "expected": 11.5}, {"input": [-53.0, 12.0], "expected": 12.0}, {"input": [-53.0, 12.5], "expected": 12.5}, {"input": [-53.0, 13.0], "expected": 13.0}, {"input": [-53.0, 13.5], "expected": 13.5}, {"input": [-53.0, 14.0], "expected": 14.0}, {"input": [-53.0, 14.5], "expected": 14.5}, {"input": [-53.0, 15.0], "expected": 15.0}, {"input": [-53.0, 15.5], "expected": 15.5}, {"input": [-53.0, 16.0], "expected": 16.0}, {"input": [-53.0, 16.5], "expected": 16.5}, {"input": [-53.0, 17.0], "expected": 17.0}, {"input": [-53.0, 17.5], "expected": 17.5}, {"input": [-53.0, 18.0], "expected": 18.0}, {"input": [-53.0, 18.5], "expected": 18.5}, {"input": [-53.0, 19.0], "expected": 19.0}, {"input": [-53.0, 19.5], "expected": 19.5}, {"input": [-53.0, 20.0], "expected": 20.0}, {"input": [-53.0, 20.5], "expected": 20.5}, {"input": [-53.0, 21.0], "expected": 21.0}, {"input": [-53.0, 21.5], "expected": 21.5}, {"input": [-53.0, 22.0], "expected": 22.0}, {"input": [-53.0, 22.5], "expected": 22.5}, {"input": [-53.0, 23.0], "expected": 23.0}, {"input": [-53.0, 23.5], "expected": 23.5}, {"input": [-53.0, 24.0], "expected": 24.0}, {"input": [-53.0, 24.5], "expected": 24.5}, {"input": [-53.0, 25.0], "expected": 25.0}, {"input": [-53.0, 25.5], "expected": 25.5}, {"input": [-53.0, 26.0], "expected": 26.0}, {"input": [-53.0, 26.5], "expected": 26.5}, {"input": [-53.0, 27.0], "expected": 27.0}, {"input": [-53.0, 27.5], "expected": 27.5}, {"input": [-53.0, 28.0], "expected": 28.0}, {"input": [-53.0, 28.5], "expected": 28.5}, {"input": [-53.0, 29.0], "expected": 29.0}, {"input": [-53.0, 29.5], "expected": 29.5}, {"input": [-53.0, 30.0], "expected": 30.0}, {"input": [-53.0, 30.5], "expected": 30.5}, {"input": [-53.0, 31.0], "expected": 31.0}, {"input": [-53.0, 31.5], "expected": 31.5}, {"input": [-53.0, 32.0], "expected": 32.0}, {"input": [-53.0, 32.5], "expected": 32.5}, {"input": [-53.0, 33.0], "expected": 33.0}, {"input": [-53.0, 33.5], "expected": 33.5}, {"input": [-53.0, 34.0], "expected": 34.0}, {"input": [-53.0, 34.5], "expected": 34.5}, {"input": [-53.0, 35.0], "expected": 35.0}, {"input": [-53.0, 35.5], "expected": 35.5}, {"input": [-53.0, 36.0], "expected": 36.0}, {"input": [-53.0, 36.5], "expected": 36.5}, {"input": [-53.0, 37.0], "expected": 37.0}, {"input": [-53.0, 37.5], "expected": 37.5}, {"input": [-53.0, 38.0], "expected": 38.0}, {"input": [-53.0, 38.5], "expected": 38.5}, {"input": [-53.0, 39.0], "expected": 39.0}, {"input": [-53.0, 39.5], "expected": 39.5}, {"input": [-53.0, 40.0], "expected": 40.0}, {"input": [-53.0, 40.5], "expected": 40.5}, {"input": [-53.0, 41.0], "expected": 41.0}, {"input": [-53.0, 41.5], "expected": 41.5}, {"input": [-53.0, 42.0], "expected": 42.0}, {"input": [-53.0, 42.5], "expected": 42.5}, {"input": [-53.0, 43.0], "expected": 43.0}, {"input": [-53.0, 43.5], "expected": 43.5}, {"input": [-53.0, 44.0], "expected": 44.0}, {"input": [-53.0, 44.5], "expected": 44.5}, {"input": [-53.0, 45.0], "expected": 45.0}, {"input": [-53.0, 45.5], "expected": 45.5}, {"input": [-53.0, 46.0], "expected": 46.0}, {"input": [-53.0, 46.5], "expected": 46.5}, {"input": [-53.0, 47.0], "expected": 47.0}, {"input": [-53.0, 47.5], "expected": 47.5}, {"input": [-53.0, 48.0], "expected": 48.0}, {"input": [-53.0, 48.5], "expected": 48.5}, {"input": [-53.0, 49.0], "expected": 49.0}, {"input": [-53.0, 49.5], "expected": 49.5}, {"input": [-53.0, 50.0], "expected": 50.0}, {"input": [-53.0, 50.5], "expected": 50.5}, {"input": [-53.0, 51.0], "expected": 51.0}, {"input": [-53.0, 51.5], "expected": 51.5}, {"input": [-53.0, 52.0], "expected": 52.0}, {"input": [-53.0, 52.5], "expected": 52.5}, {"input": [-53.0, 53.0], "expected": 53.0}, {"input": [-53.0, 53.5], "expected": 53.5}, {"input": [-53.0, 54.0], "expected": 54.0}, {"input": [-53.0, 54.5], "expected": 54.5}, {"input": [-53.0, 55.0], "expected": 55.0}, {"input": [-53.0, 55.5], "expected": 55.5}, {"input": [-53.0, 56.0], "expected": 56.0}, {"input": [-53.0, 56.5], "expected": 56.5}, {"input": [-53.0, 57.0], "expected": 57.0}, {"input": [-53.0, 57.5], "expected": 57.5}, {"input": [-53.0, 58.0], "expected": 58.0}, {"input": [-53.0, 58.5], "expected": 58.5}, {"input": [-53.0, 59.0], "expected": 59.0}, {"input": [-53.0, 59.5], "expected": 59.5}, {"input": [-53.0, 60.0], "expected": 60.0}, {"input": [-53.0, 60.5], "expected": 60.5}, {"input": [-53.0, 61.0], "expected": 61.0}, {"input": [-53.0, 61.5], "expected": 61.5}, {"input": [-53.0, 62.0], "expected": 62.0}, {"input": [-53.0, 62.5], "expected": 62.5}, {"input": [-53.0, 63.0], "expected": 63.0}, {"input": [-53.0, 63.5], "expected": 63.5}, {"input": [-53.0, 64.0], "expected": 64.0}, {"input": [-53.0, 64.5], "expected": 64.5}, {"input": [-53.0, 65.0], "expected": 65.0}, {"input": [-53.0, 65.5], "expected": 65.5}, {"input": [-53.0, 66.0], "expected": 66.0}, {"input": [-53.0, 66.5], "expected": 66.5}, {"input": [-53.0, 67.0], "expected": 67.0}, {"input": [-53.0, 67.5], "expected": 67.5}, {"input": [-53.0, 68.0], "expected": 68.0}, {"input": [-53.0, 68.5], "expected": 68.5}, {"input": [-53.0, 69.0], "expected": 69.0}, {"input": [-53.0, 69.5], "expected": 69.5}, {"input": [-53.0, 70.0], "expected": 70.0}, {"input": [-53.0, 70.5], "expected": 70.5}, {"input": [-53.0, 71.0], "expected": 71.0}, {"input": [-53.0, 71.5], "expected": 71.5}, {"input": [-53.0, 72.0], "expected": 72.0}, {"input": [-53.0, 72.5], "expected": 72.5}, {"input": [-53.0, 73.0], "expected": 73.0}, {"input": [-53.0, 73.5], "expected": 73.5}, {"input": [-53.0, 74.0], "expected": 74.0}, {"input": [-53.0, 74.5], "expected": 74.5}, {"input": [-53.0, 75.0], "expected": 75.0}, {"input": [-53.0, 75.5], "expected": 75.5}, {"input": [-53.0, 76.0], "expected": 76.0}, {"input": [-53.0, 76.5], "expected": 76.5}, {"input": [-53.0, 77.0], "expected": 77.0}, {"input": [-53.0, 77.5], "expected": 77.5}, {"input": [-53.0, 78.0], "expected": 78.0}, {"input": [-53.0, 78.5], "expected": 78.5}, {"input": [-53.0, 79.0], "expected": 79.0}, {"input": [-53.0, 79.5], "expected": 79.5}, {"input": [-53.0, 80.0], "expected": 80.0}, {"input": [-53.0, 80.5], "expected": 80.5}, {"input": [-53.0, 81.0], "expected": 81.0}, {"input": [-53.0, 81.5], "expected": 81.5}, {"input": [-53.0, 82.0], "expected": 82.0}, {"input": [-53.0, 82.5], "expected": 82.5}, {"input": [-53.0, 83.0], "expected": 83.0}, {"input": [-53.0, 83.5], "expected": 83.5}, {"input": [-53.0, 84.0], "expected": 84.0}, {"input": [-53.0, 84.5], "expected": 84.5}, {"input": [-53.0, 85.0], "expected": 85.0}, {"input": [-53.0, 85.5], "expected": 85.5}, {"input": [-53.0, 86.0], "expected": 86.0}, {"input": [-53.0, 86.5], "expected": 86.5}, {"input": [-53.0, 87.0], "expected": 87.0}, {"input": [-53.0, 87.5], "expected": 87.5}, {"input": [-53.0, 88.0], "expected": 88.0}, {"input": [-53.0, 88.5], "expected": 88.5}, {"input": [-53.0, 89.0], "expected": 89.0}, {"input": [-53.0, 89.5], "expected": 89.5}, {"input": [-53.0, 90.0], "expected": 90.0}, {"input": [-53.0, 90.5], "expected": 90.5}, {"input": [-53.0, 91.0], "expected": 91.0}, {"input": [-53.0, 91.5], "expected": 91.5}, {"input": [-53.0, 92.0], "expected": 92.0}, {"input": [-53.0, 92.5], "expected": 92.5}, {"input": [-53.0, 93.0], "expected": 93.0}, {"input": [-53.0, 93.5], "expected": 93.5}, {"input": [-53.0, 94.0], "expected": 94.0}, {"input": [-53.0, 94.5], "expected": 94.5}, {"input": [-53.0, 95.0], "expected": 95.0}, {"input": [-53.0, 95.5], "expected": 95.5}, {"input": [-53.0, 96.0], "expected": 96.0}, {"input": [-53.0, 96.5], "expected": 96.5}, {"input": [-53.0, 97.0], "expected": 97.0}, {"input": [-53.0, 97.5], "expected": 97.5}, {"input": [-53.0, 98.0], "expected": 98.0}, {"input": [-53.0, 98.5], "expected": 98.5}, {"input": [-53.0, 99.0], "expected": 99.0}, {"input": [-53.0, 99.5], "expected": 99.5}, {"input": [-52.5, -100.0], "expected": -52.5}, {"input": [-52.5, -99.5], "expected": -52.5}, {"input": [-52.5, -99.0], "expected": -52.5}, {"input": [-52.5, -98.5], "expected": -52.5}, {"input": [-52.5, -98.0], "expected": -52.5}, {"input": [-52.5, -97.5], "expected": -52.5}, {"input": [-52.5, -97.0], "expected": -52.5}, {"input": [-52.5, -96.5], "expected": -52.5}, {"input": [-52.5, -96.0], "expected": -52.5}, {"input": [-52.5, -95.5], "expected": -52.5}, {"input": [-52.5, -95.0], "expected": -52.5}, {"input": [-52.5, -94.5], "expected": -52.5}, {"input": [-52.5, -94.0], "expected": -52.5}, {"input": [-52.5, -93.5], "expected": -52.5}, {"input": [-52.5, -93.0], "expected": -52.5}, {"input": [-52.5, -92.5], "expected": -52.5}, {"input": [-52.5, -92.0], "expected": -52.5}, {"input": [-52.5, -91.5], "expected": -52.5}, {"input": [-52.5, -91.0], "expected": -52.5}, {"input": [-52.5, -90.5], "expected": -52.5}, {"input": [-52.5, -90.0], "expected": -52.5}, {"input": [-52.5, -89.5], "expected": -52.5}, {"input": [-52.5, -89.0], "expected": -52.5}, {"input": [-52.5, -88.5], "expected": -52.5}, {"input": [-52.5, -88.0], "expected": -52.5}, {"input": [-52.5, -87.5], "expected": -52.5}, {"input": [-52.5, -87.0], "expected": -52.5}, {"input": [-52.5, -86.5], "expected": -52.5}, {"input": [-52.5, -86.0], "expected": -52.5}, {"input": [-52.5, -85.5], "expected": -52.49999999999999}, {"input": [-52.5, -85.0], "expected": -52.49999999999999}, {"input": [-52.5, -84.5], "expected": -52.499999999999986}, {"input": [-52.5, -84.0], "expected": -52.49999999999998}, {"input": [-52.5, -83.5], "expected": -52.499999999999964}, {"input": [-52.5, -83.0], "expected": -52.49999999999994}, {"input": [-52.5, -82.5], "expected": -52.49999999999991}, {"input": [-52.5, -82.0], "expected": -52.499999999999844}, {"input": [-52.5, -81.5], "expected": -52.499999999999744}, {"input": [-52.5, -81.0], "expected": -52.49999999999958}, {"input": [-52.5, -80.5], "expected": -52.49999999999931}, {"input": [-52.5, -80.0], "expected": -52.49999999999886}, {"input": [-52.5, -79.5], "expected": -52.49999999999812}, {"input": [-52.5, -79.0], "expected": -52.4999999999969}, {"input": [-52.5, -78.5], "expected": -52.49999999999489}, {"input": [-52.5, -78.0], "expected": -52.49999999999158}, {"input": [-52.5, -77.5], "expected": -52.49999999998611}, {"input": [-52.5, -77.0], "expected": -52.4999999999771}, {"input": [-52.5, -76.5], "expected": -52.49999999996225}, {"input": [-52.5, -76.0], "expected": -52.49999999993776}, {"input": [-52.5, -75.5], "expected": -52.49999999989738}, {"input": [-52.5, -75.0], "expected": -52.49999999983081}, {"input": [-52.5, -74.5], "expected": -52.499999999721055}, {"input": [-52.5, -74.0], "expected": -52.499999999540094}, {"input": [-52.5, -73.5], "expected": -52.499999999241744}, {"input": [-52.5, -73.0], "expected": -52.49999999874985}, {"input": [-52.5, -72.5], "expected": -52.49999999793884}, {"input": [-52.5, -72.0], "expected": -52.49999999660173}, {"input": [-52.5, -71.5], "expected": -52.49999999439721}, {"input": [-52.5, -71.0], "expected": -52.499999990762554}, {"input": [-52.5, -70.5], "expected": -52.49999998477002}, {"input": [-52.5, -70.0], "expected": -52.49999997489001}, {"input": [-52.5, -69.5], "expected": -52.499999958600625}, {"input": [-52.5, -69.0], "expected": -52.49999993174397}, {"input": [-52.5, -68.5], "expected": -52.49999988746483}, {"input": [-52.5, -68.0], "expected": -52.49999981446088}, {"input": [-52.5, -67.5], "expected": -52.499999694097724}, {"input": [-52.5, -67.0], "expected": -52.49999949565247}, {"input": [-52.5, -66.5], "expected": -52.499999168471625}, {"input": [-52.5, -66.0], "expected": -52.499998629041855}, {"input": [-52.5, -65.5], "expected": -52.49999773967315}, {"input": [-52.5, -65.0], "expected": -52.49999627335377}, {"input": [-52.5, -64.5], "expected": -52.49999385580652}, {"input": [-52.5, -64.0], "expected": -52.49998986995771}, {"input": [-52.5, -63.5], "expected": -52.49998329843868}, {"input": [-52.5, -63.0], "expected": -52.49997246392977}, {"input": [-52.5, -62.5], "expected": -52.49995460110078}, {"input": [-52.5, -62.0], "expected": -52.49992515097137}, {"input": [-52.5, -61.5], "expected": -52.49987659781028}, {"input": [-52.5, -61.0], "expected": -52.49979655232787}, {"input": [-52.5, -60.5], "expected": -52.4996645936271}, {"input": [-52.5, -60.0], "expected": -52.49944706852464}, {"input": [-52.5, -59.5], "expected": -52.49908853354623}, {"input": [-52.5, -59.0], "expected": -52.49849768984024}, {"input": [-52.5, -58.5], "expected": -52.49752431486227}, {"input": [-52.5, -58.0], "expected": -52.49592155672943}, {"input": [-52.5, -57.5], "expected": -52.49328465151088}, {"input": [-52.5, -57.0], "expected": -52.4889522551514}, {"input": [-52.5, -56.5], "expected": -52.48185007208219}, {"input": [-52.5, -56.0], "expected": -52.47024958172738}, {"input": [-52.5, -55.5], "expected": -52.451412648426256}, {"input": [-52.5, -55.0], "expected": -52.42111026570745}, {"input": [-52.5, -54.5], "expected": -52.37307198895703}, {"input": [-52.5, -54.0], "expected": -52.29858672201725}, {"input": [-52.5, -53.5], "expected": -52.18673831248178}, {"input": [-52.5, -53.0], "expected": -52.02592301581989}, {"input": [-52.5, -52.5], "expected": -51.80685281944005}, {"input": [-52.5, -52.0], "expected": -51.52592301581989}, {"input": [-52.5, -51.5], "expected": -51.18673831248178}, {"input": [-52.5, -51.0], "expected": -50.79858672201725}, {"input": [-52.5, -50.5], "expected": -50.37307198895703}, {"input": [-52.5, -50.0], "expected": -49.92111026570745}, {"input": [-52.5, -49.5], "expected": -49.451412648426256}, {"input": [-52.5, -49.0], "expected": -48.97024958172738}, {"input": [-52.5, -48.5], "expected": -48.48185007208219}, {"input": [-52.5, -48.0], "expected": -47.9889522551514}, {"input": [-52.5, -47.5], "expected": -47.49328465151088}, {"input": [-52.5, -47.0], "expected": -46.99592155672943}, {"input": [-52.5, -46.5], "expected": -46.49752431486227}, {"input": [-52.5, -46.0], "expected": -45.99849768984024}, {"input": [-52.5, -45.5], "expected": -45.49908853354623}, {"input": [-52.5, -45.0], "expected": -44.99944706852464}, {"input": [-52.5, -44.5], "expected": -44.4996645936271}, {"input": [-52.5, -44.0], "expected": -43.99979655232787}, {"input": [-52.5, -43.5], "expected": -43.49987659781028}, {"input": [-52.5, -43.0], "expected": -42.99992515097137}, {"input": [-52.5, -42.5], "expected": -42.49995460110078}, {"input": [-52.5, -42.0], "expected": -41.99997246392977}, {"input": [-52.5, -41.5], "expected": -41.49998329843868}, {"input": [-52.5, -41.0], "expected": -40.99998986995771}, {"input": [-52.5, -40.5], "expected": -40.49999385580652}, {"input": [-52.5, -40.0], "expected": -39.99999627335377}, {"input": [-52.5, -39.5], "expected": -39.49999773967315}, {"input": [-52.5, -39.0], "expected": -38.999998629041855}, {"input": [-52.5, -38.5], "expected": -38.499999168471625}, {"input": [-52.5, -38.0], "expected": -37.99999949565247}, {"input": [-52.5, -37.5], "expected": -37.499999694097724}, {"input": [-52.5, -37.0], "expected": -36.99999981446088}, {"input": [-52.5, -36.5], "expected": -36.49999988746483}, {"input": [-52.5, -36.0], "expected": -35.99999993174397}, {"input": [-52.5, -35.5], "expected": -35.499999958600625}, {"input": [-52.5, -35.0], "expected": -34.99999997489001}, {"input": [-52.5, -34.5], "expected": -34.49999998477002}, {"input": [-52.5, -34.0], "expected": -33.999999990762554}, {"input": [-52.5, -33.5], "expected": -33.49999999439721}, {"input": [-52.5, -33.0], "expected": -32.99999999660173}, {"input": [-52.5, -32.5], "expected": -32.49999999793884}, {"input": [-52.5, -32.0], "expected": -31.999999998749846}, {"input": [-52.5, -31.5], "expected": -31.499999999241744}, {"input": [-52.5, -31.0], "expected": -30.999999999540094}, {"input": [-52.5, -30.5], "expected": -30.49999999972105}, {"input": [-52.5, -30.0], "expected": -29.99999999983081}, {"input": [-52.5, -29.5], "expected": -29.49999999989738}, {"input": [-52.5, -29.0], "expected": -28.99999999993776}, {"input": [-52.5, -28.5], "expected": -28.49999999996225}, {"input": [-52.5, -28.0], "expected": -27.999999999977103}, {"input": [-52.5, -27.5], "expected": -27.499999999986112}, {"input": [-52.5, -27.0], "expected": -26.999999999991577}, {"input": [-52.5, -26.5], "expected": -26.49999999999489}, {"input": [-52.5, -26.0], "expected": -25.999999999996902}, {"input": [-52.5, -25.5], "expected": -25.49999999999812}, {"input": [-52.5, -25.0], "expected": -24.99999999999886}, {"input": [-52.5, -24.5], "expected": -24.499999999999307}, {"input": [-52.5, -24.0], "expected": -23.99999999999958}, {"input": [-52.5, -23.5], "expected": -23.499999999999744}, {"input": [-52.5, -23.0], "expected": -22.999999999999847}, {"input": [-52.5, -22.5], "expected": -22.499999999999908}, {"input": [-52.5, -22.0], "expected": -21.999999999999943}, {"input": [-52.5, -21.5], "expected": -21.499999999999964}, {"input": [-52.5, -21.0], "expected": -20.99999999999998}, {"input": [-52.5, -20.5], "expected": -20.499999999999986}, {"input": [-52.5, -20.0], "expected": -19.999999999999993}, {"input": [-52.5, -19.5], "expected": -19.499999999999996}, {"input": [-52.5, -19.0], "expected": -18.999999999999996}, {"input": [-52.5, -18.5], "expected": -18.5}, {"input": [-52.5, -18.0], "expected": -18.0}, {"input": [-52.5, -17.5], "expected": -17.5}, {"input": [-52.5, -17.0], "expected": -17.0}, {"input": [-52.5, -16.5], "expected": -16.5}, {"input": [-52.5, -16.0], "expected": -16.0}, {"input": [-52.5, -15.5], "expected": -15.5}, {"input": [-52.5, -15.0], "expected": -15.0}, {"input": [-52.5, -14.5], "expected": -14.5}, {"input": [-52.5, -14.0], "expected": -14.0}, {"input": [-52.5, -13.5], "expected": -13.5}, {"input": [-52.5, -13.0], "expected": -13.0}, {"input": [-52.5, -12.5], "expected": -12.5}, {"input": [-52.5, -12.0], "expected": -12.0}, {"input": [-52.5, -11.5], "expected": -11.5}, {"input": [-52.5, -11.0], "expected": -11.0}, {"input": [-52.5, -10.5], "expected": -10.5}, {"input": [-52.5, -10.0], "expected": -10.0}, {"input": [-52.5, -9.5], "expected": -9.5}, {"input": [-52.5, -9.0], "expected": -9.0}, {"input": [-52.5, -8.5], "expected": -8.5}, {"input": [-52.5, -8.0], "expected": -8.0}, {"input": [-52.5, -7.5], "expected": -7.5}, {"input": [-52.5, -7.0], "expected": -7.0}, {"input": [-52.5, -6.5], "expected": -6.5}, {"input": [-52.5, -6.0], "expected": -6.0}, {"input": [-52.5, -5.5], "expected": -5.5}, {"input": [-52.5, -5.0], "expected": -5.0}, {"input": [-52.5, -4.5], "expected": -4.5}, {"input": [-52.5, -4.0], "expected": -4.0}, {"input": [-52.5, -3.5], "expected": -3.5}, {"input": [-52.5, -3.0], "expected": -3.0}, {"input": [-52.5, -2.5], "expected": -2.5}, {"input": [-52.5, -2.0], "expected": -2.0}, {"input": [-52.5, -1.5], "expected": -1.5}, {"input": [-52.5, -1.0], "expected": -1.0}, {"input": [-52.5, -0.5], "expected": -0.5}, {"input": [-52.5, 0.0], "expected": 1.583214286159632e-23}, {"input": [-52.5, 0.5], "expected": 0.5}, {"input": [-52.5, 1.0], "expected": 1.0}, {"input": [-52.5, 1.5], "expected": 1.5}, {"input": [-52.5, 2.0], "expected": 2.0}, {"input": [-52.5, 2.5], "expected": 2.5}, {"input": [-52.5, 3.0], "expected": 3.0}, {"input": [-52.5, 3.5], "expected": 3.5}, {"input": [-52.5, 4.0], "expected": 4.0}, {"input": [-52.5, 4.5], "expected": 4.5}, {"input": [-52.5, 5.0], "expected": 5.0}, {"input": [-52.5, 5.5], "expected": 5.5}, {"input": [-52.5, 6.0], "expected": 6.0}, {"input": [-52.5, 6.5], "expected": 6.5}, {"input": [-52.5, 7.0], "expected": 7.0}, {"input": [-52.5, 7.5], "expected": 7.5}, {"input": [-52.5, 8.0], "expected": 8.0}, {"input": [-52.5, 8.5], "expected": 8.5}, {"input": [-52.5, 9.0], "expected": 9.0}, {"input": [-52.5, 9.5], "expected": 9.5}, {"input": [-52.5, 10.0], "expected": 10.0}, {"input": [-52.5, 10.5], "expected": 10.5}, {"input": [-52.5, 11.0], "expected": 11.0}, {"input": [-52.5, 11.5], "expected": 11.5}, {"input": [-52.5, 12.0], "expected": 12.0}, {"input": [-52.5, 12.5], "expected": 12.5}, {"input": [-52.5, 13.0], "expected": 13.0}, {"input": [-52.5, 13.5], "expected": 13.5}, {"input": [-52.5, 14.0], "expected": 14.0}, {"input": [-52.5, 14.5], "expected": 14.5}, {"input": [-52.5, 15.0], "expected": 15.0}, {"input": [-52.5, 15.5], "expected": 15.5}, {"input": [-52.5, 16.0], "expected": 16.0}, {"input": [-52.5, 16.5], "expected": 16.5}, {"input": [-52.5, 17.0], "expected": 17.0}, {"input": [-52.5, 17.5], "expected": 17.5}, {"input": [-52.5, 18.0], "expected": 18.0}, {"input": [-52.5, 18.5], "expected": 18.5}, {"input": [-52.5, 19.0], "expected": 19.0}, {"input": [-52.5, 19.5], "expected": 19.5}, {"input": [-52.5, 20.0], "expected": 20.0}, {"input": [-52.5, 20.5], "expected": 20.5}, {"input": [-52.5, 21.0], "expected": 21.0}, {"input": [-52.5, 21.5], "expected": 21.5}, {"input": [-52.5, 22.0], "expected": 22.0}, {"input": [-52.5, 22.5], "expected": 22.5}, {"input": [-52.5, 23.0], "expected": 23.0}, {"input": [-52.5, 23.5], "expected": 23.5}, {"input": [-52.5, 24.0], "expected": 24.0}, {"input": [-52.5, 24.5], "expected": 24.5}, {"input": [-52.5, 25.0], "expected": 25.0}, {"input": [-52.5, 25.5], "expected": 25.5}, {"input": [-52.5, 26.0], "expected": 26.0}, {"input": [-52.5, 26.5], "expected": 26.5}, {"input": [-52.5, 27.0], "expected": 27.0}, {"input": [-52.5, 27.5], "expected": 27.5}, {"input": [-52.5, 28.0], "expected": 28.0}, {"input": [-52.5, 28.5], "expected": 28.5}, {"input": [-52.5, 29.0], "expected": 29.0}, {"input": [-52.5, 29.5], "expected": 29.5}, {"input": [-52.5, 30.0], "expected": 30.0}, {"input": [-52.5, 30.5], "expected": 30.5}, {"input": [-52.5, 31.0], "expected": 31.0}, {"input": [-52.5, 31.5], "expected": 31.5}, {"input": [-52.5, 32.0], "expected": 32.0}, {"input": [-52.5, 32.5], "expected": 32.5}, {"input": [-52.5, 33.0], "expected": 33.0}, {"input": [-52.5, 33.5], "expected": 33.5}, {"input": [-52.5, 34.0], "expected": 34.0}, {"input": [-52.5, 34.5], "expected": 34.5}, {"input": [-52.5, 35.0], "expected": 35.0}, {"input": [-52.5, 35.5], "expected": 35.5}, {"input": [-52.5, 36.0], "expected": 36.0}, {"input": [-52.5, 36.5], "expected": 36.5}, {"input": [-52.5, 37.0], "expected": 37.0}, {"input": [-52.5, 37.5], "expected": 37.5}, {"input": [-52.5, 38.0], "expected": 38.0}, {"input": [-52.5, 38.5], "expected": 38.5}, {"input": [-52.5, 39.0], "expected": 39.0}, {"input": [-52.5, 39.5], "expected": 39.5}, {"input": [-52.5, 40.0], "expected": 40.0}, {"input": [-52.5, 40.5], "expected": 40.5}, {"input": [-52.5, 41.0], "expected": 41.0}, {"input": [-52.5, 41.5], "expected": 41.5}, {"input": [-52.5, 42.0], "expected": 42.0}, {"input": [-52.5, 42.5], "expected": 42.5}, {"input": [-52.5, 43.0], "expected": 43.0}, {"input": [-52.5, 43.5], "expected": 43.5}, {"input": [-52.5, 44.0], "expected": 44.0}, {"input": [-52.5, 44.5], "expected": 44.5}, {"input": [-52.5, 45.0], "expected": 45.0}, {"input": [-52.5, 45.5], "expected": 45.5}, {"input": [-52.5, 46.0], "expected": 46.0}, {"input": [-52.5, 46.5], "expected": 46.5}, {"input": [-52.5, 47.0], "expected": 47.0}, {"input": [-52.5, 47.5], "expected": 47.5}, {"input": [-52.5, 48.0], "expected": 48.0}, {"input": [-52.5, 48.5], "expected": 48.5}, {"input": [-52.5, 49.0], "expected": 49.0}, {"input": [-52.5, 49.5], "expected": 49.5}, {"input": [-52.5, 50.0], "expected": 50.0}, {"input": [-52.5, 50.5], "expected": 50.5}, {"input": [-52.5, 51.0], "expected": 51.0}, {"input": [-52.5, 51.5], "expected": 51.5}, {"input": [-52.5, 52.0], "expected": 52.0}, {"input": [-52.5, 52.5], "expected": 52.5}, {"input": [-52.5, 53.0], "expected": 53.0}, {"input": [-52.5, 53.5], "expected": 53.5}, {"input": [-52.5, 54.0], "expected": 54.0}, {"input": [-52.5, 54.5], "expected": 54.5}, {"input": [-52.5, 55.0], "expected": 55.0}, {"input": [-52.5, 55.5], "expected": 55.5}, {"input": [-52.5, 56.0], "expected": 56.0}, {"input": [-52.5, 56.5], "expected": 56.5}, {"input": [-52.5, 57.0], "expected": 57.0}, {"input": [-52.5, 57.5], "expected": 57.5}, {"input": [-52.5, 58.0], "expected": 58.0}, {"input": [-52.5, 58.5], "expected": 58.5}, {"input": [-52.5, 59.0], "expected": 59.0}, {"input": [-52.5, 59.5], "expected": 59.5}, {"input": [-52.5, 60.0], "expected": 60.0}, {"input": [-52.5, 60.5], "expected": 60.5}, {"input": [-52.5, 61.0], "expected": 61.0}, {"input": [-52.5, 61.5], "expected": 61.5}, {"input": [-52.5, 62.0], "expected": 62.0}, {"input": [-52.5, 62.5], "expected": 62.5}, {"input": [-52.5, 63.0], "expected": 63.0}, {"input": [-52.5, 63.5], "expected": 63.5}, {"input": [-52.5, 64.0], "expected": 64.0}, {"input": [-52.5, 64.5], "expected": 64.5}, {"input": [-52.5, 65.0], "expected": 65.0}, {"input": [-52.5, 65.5], "expected": 65.5}, {"input": [-52.5, 66.0], "expected": 66.0}, {"input": [-52.5, 66.5], "expected": 66.5}, {"input": [-52.5, 67.0], "expected": 67.0}, {"input": [-52.5, 67.5], "expected": 67.5}, {"input": [-52.5, 68.0], "expected": 68.0}, {"input": [-52.5, 68.5], "expected": 68.5}, {"input": [-52.5, 69.0], "expected": 69.0}, {"input": [-52.5, 69.5], "expected": 69.5}, {"input": [-52.5, 70.0], "expected": 70.0}, {"input": [-52.5, 70.5], "expected": 70.5}, {"input": [-52.5, 71.0], "expected": 71.0}, {"input": [-52.5, 71.5], "expected": 71.5}, {"input": [-52.5, 72.0], "expected": 72.0}, {"input": [-52.5, 72.5], "expected": 72.5}, {"input": [-52.5, 73.0], "expected": 73.0}, {"input": [-52.5, 73.5], "expected": 73.5}, {"input": [-52.5, 74.0], "expected": 74.0}, {"input": [-52.5, 74.5], "expected": 74.5}, {"input": [-52.5, 75.0], "expected": 75.0}, {"input": [-52.5, 75.5], "expected": 75.5}, {"input": [-52.5, 76.0], "expected": 76.0}, {"input": [-52.5, 76.5], "expected": 76.5}, {"input": [-52.5, 77.0], "expected": 77.0}, {"input": [-52.5, 77.5], "expected": 77.5}, {"input": [-52.5, 78.0], "expected": 78.0}, {"input": [-52.5, 78.5], "expected": 78.5}, {"input": [-52.5, 79.0], "expected": 79.0}, {"input": [-52.5, 79.5], "expected": 79.5}, {"input": [-52.5, 80.0], "expected": 80.0}, {"input": [-52.5, 80.5], "expected": 80.5}, {"input": [-52.5, 81.0], "expected": 81.0}, {"input": [-52.5, 81.5], "expected": 81.5}, {"input": [-52.5, 82.0], "expected": 82.0}, {"input": [-52.5, 82.5], "expected": 82.5}, {"input": [-52.5, 83.0], "expected": 83.0}, {"input": [-52.5, 83.5], "expected": 83.5}, {"input": [-52.5, 84.0], "expected": 84.0}, {"input": [-52.5, 84.5], "expected": 84.5}, {"input": [-52.5, 85.0], "expected": 85.0}, {"input": [-52.5, 85.5], "expected": 85.5}, {"input": [-52.5, 86.0], "expected": 86.0}, {"input": [-52.5, 86.5], "expected": 86.5}, {"input": [-52.5, 87.0], "expected": 87.0}, {"input": [-52.5, 87.5], "expected": 87.5}, {"input": [-52.5, 88.0], "expected": 88.0}, {"input": [-52.5, 88.5], "expected": 88.5}, {"input": [-52.5, 89.0], "expected": 89.0}, {"input": [-52.5, 89.5], "expected": 89.5}, {"input": [-52.5, 90.0], "expected": 90.0}, {"input": [-52.5, 90.5], "expected": 90.5}, {"input": [-52.5, 91.0], "expected": 91.0}, {"input": [-52.5, 91.5], "expected": 91.5}, {"input": [-52.5, 92.0], "expected": 92.0}, {"input": [-52.5, 92.5], "expected": 92.5}, {"input": [-52.5, 93.0], "expected": 93.0}, {"input": [-52.5, 93.5], "expected": 93.5}, {"input": [-52.5, 94.0], "expected": 94.0}, {"input": [-52.5, 94.5], "expected": 94.5}, {"input": [-52.5, 95.0], "expected": 95.0}, {"input": [-52.5, 95.5], "expected": 95.5}, {"input": [-52.5, 96.0], "expected": 96.0}, {"input": [-52.5, 96.5], "expected": 96.5}, {"input": [-52.5, 97.0], "expected": 97.0}, {"input": [-52.5, 97.5], "expected": 97.5}, {"input": [-52.5, 98.0], "expected": 98.0}, {"input": [-52.5, 98.5], "expected": 98.5}, {"input": [-52.5, 99.0], "expected": 99.0}, {"input": [-52.5, 99.5], "expected": 99.5}, {"input": [-52.0, -100.0], "expected": -52.0}, {"input": [-52.0, -99.5], "expected": -52.0}, {"input": [-52.0, -99.0], "expected": -52.0}, {"input": [-52.0, -98.5], "expected": -52.0}, {"input": [-52.0, -98.0], "expected": -52.0}, {"input": [-52.0, -97.5], "expected": -52.0}, {"input": [-52.0, -97.0], "expected": -52.0}, {"input": [-52.0, -96.5], "expected": -52.0}, {"input": [-52.0, -96.0], "expected": -52.0}, {"input": [-52.0, -95.5], "expected": -52.0}, {"input": [-52.0, -95.0], "expected": -52.0}, {"input": [-52.0, -94.5], "expected": -52.0}, {"input": [-52.0, -94.0], "expected": -52.0}, {"input": [-52.0, -93.5], "expected": -52.0}, {"input": [-52.0, -93.0], "expected": -52.0}, {"input": [-52.0, -92.5], "expected": -52.0}, {"input": [-52.0, -92.0], "expected": -52.0}, {"input": [-52.0, -91.5], "expected": -52.0}, {"input": [-52.0, -91.0], "expected": -52.0}, {"input": [-52.0, -90.5], "expected": -52.0}, {"input": [-52.0, -90.0], "expected": -52.0}, {"input": [-52.0, -89.5], "expected": -52.0}, {"input": [-52.0, -89.0], "expected": -52.0}, {"input": [-52.0, -88.5], "expected": -52.0}, {"input": [-52.0, -88.0], "expected": -52.0}, {"input": [-52.0, -87.5], "expected": -52.0}, {"input": [-52.0, -87.0], "expected": -52.0}, {"input": [-52.0, -86.5], "expected": -52.0}, {"input": [-52.0, -86.0], "expected": -52.0}, {"input": [-52.0, -85.5], "expected": -52.0}, {"input": [-52.0, -85.0], "expected": -51.99999999999999}, {"input": [-52.0, -84.5], "expected": -51.99999999999999}, {"input": [-52.0, -84.0], "expected": -51.999999999999986}, {"input": [-52.0, -83.5], "expected": -51.99999999999998}, {"input": [-52.0, -83.0], "expected": -51.999999999999964}, {"input": [-52.0, -82.5], "expected": -51.99999999999994}, {"input": [-52.0, -82.0], "expected": -51.99999999999991}, {"input": [-52.0, -81.5], "expected": -51.999999999999844}, {"input": [-52.0, -81.0], "expected": -51.999999999999744}, {"input": [-52.0, -80.5], "expected": -51.99999999999958}, {"input": [-52.0, -80.0], "expected": -51.99999999999931}, {"input": [-52.0, -79.5], "expected": -51.99999999999886}, {"input": [-52.0, -79.0], "expected": -51.99999999999812}, {"input": [-52.0, -78.5], "expected": -51.9999999999969}, {"input": [-52.0, -78.0], "expected": -51.99999999999489}, {"input": [-52.0, -77.5], "expected": -51.99999999999158}, {"input": [-52.0, -77.0], "expected": -51.99999999998611}, {"input": [-52.0, -76.5], "expected": -51.9999999999771}, {"input": [-52.0, -76.0], "expected": -51.99999999996225}, {"input": [-52.0, -75.5], "expected": -51.99999999993776}, {"input": [-52.0, -75.0], "expected": -51.99999999989738}, {"input": [-52.0, -74.5], "expected": -51.99999999983081}, {"input": [-52.0, -74.0], "expected": -51.999999999721055}, {"input": [-52.0, -73.5], "expected": -51.999999999540094}, {"input": [-52.0, -73.0], "expected": -51.999999999241744}, {"input": [-52.0, -72.5], "expected": -51.99999999874985}, {"input": [-52.0, -72.0], "expected": -51.99999999793884}, {"input": [-52.0, -71.5], "expected": -51.99999999660173}, {"input": [-52.0, -71.0], "expected": -51.99999999439721}, {"input": [-52.0, -70.5], "expected": -51.999999990762554}, {"input": [-52.0, -70.0], "expected": -51.99999998477002}, {"input": [-52.0, -69.5], "expected": -51.99999997489001}, {"input": [-52.0, -69.0], "expected": -51.999999958600625}, {"input": [-52.0, -68.5], "expected": -51.99999993174397}, {"input": [-52.0, -68.0], "expected": -51.99999988746483}, {"input": [-52.0, -67.5], "expected": -51.99999981446088}, {"input": [-52.0, -67.0], "expected": -51.999999694097724}, {"input": [-52.0, -66.5], "expected": -51.99999949565247}, {"input": [-52.0, -66.0], "expected": -51.999999168471625}, {"input": [-52.0, -65.5], "expected": -51.999998629041855}, {"input": [-52.0, -65.0], "expected": -51.99999773967315}, {"input": [-52.0, -64.5], "expected": -51.99999627335377}, {"input": [-52.0, -64.0], "expected": -51.99999385580652}, {"input": [-52.0, -63.5], "expected": -51.99998986995771}, {"input": [-52.0, -63.0], "expected": -51.99998329843868}, {"input": [-52.0, -62.5], "expected": -51.99997246392977}, {"input": [-52.0, -62.0], "expected": -51.99995460110078}, {"input": [-52.0, -61.5], "expected": -51.99992515097137}, {"input": [-52.0, -61.0], "expected": -51.99987659781028}, {"input": [-52.0, -60.5], "expected": -51.99979655232787}, {"input": [-52.0, -60.0], "expected": -51.9996645936271}, {"input": [-52.0, -59.5], "expected": -51.99944706852464}, {"input": [-52.0, -59.0], "expected": -51.99908853354623}, {"input": [-52.0, -58.5], "expected": -51.99849768984024}, {"input": [-52.0, -58.0], "expected": -51.99752431486227}, {"input": [-52.0, -57.5], "expected": -51.99592155672943}, {"input": [-52.0, -57.0], "expected": -51.99328465151088}, {"input": [-52.0, -56.5], "expected": -51.9889522551514}, {"input": [-52.0, -56.0], "expected": -51.98185007208219}, {"input": [-52.0, -55.5], "expected": -51.97024958172738}, {"input": [-52.0, -55.0], "expected": -51.951412648426256}, {"input": [-52.0, -54.5], "expected": -51.92111026570745}, {"input": [-52.0, -54.0], "expected": -51.87307198895703}, {"input": [-52.0, -53.5], "expected": -51.79858672201725}, {"input": [-52.0, -53.0], "expected": -51.68673831248178}, {"input": [-52.0, -52.5], "expected": -51.52592301581989}, {"input": [-52.0, -52.0], "expected": -51.30685281944005}, {"input": [-52.0, -51.5], "expected": -51.02592301581989}, {"input": [-52.0, -51.0], "expected": -50.68673831248178}, {"input": [-52.0, -50.5], "expected": -50.29858672201725}, {"input": [-52.0, -50.0], "expected": -49.87307198895703}, {"input": [-52.0, -49.5], "expected": -49.42111026570745}, {"input": [-52.0, -49.0], "expected": -48.951412648426256}, {"input": [-52.0, -48.5], "expected": -48.47024958172738}, {"input": [-52.0, -48.0], "expected": -47.98185007208219}, {"input": [-52.0, -47.5], "expected": -47.4889522551514}, {"input": [-52.0, -47.0], "expected": -46.99328465151088}, {"input": [-52.0, -46.5], "expected": -46.49592155672943}, {"input": [-52.0, -46.0], "expected": -45.99752431486227}, {"input": [-52.0, -45.5], "expected": -45.49849768984024}, {"input": [-52.0, -45.0], "expected": -44.99908853354623}, {"input": [-52.0, -44.5], "expected": -44.49944706852464}, {"input": [-52.0, -44.0], "expected": -43.9996645936271}, {"input": [-52.0, -43.5], "expected": -43.49979655232787}, {"input": [-52.0, -43.0], "expected": -42.99987659781028}, {"input": [-52.0, -42.5], "expected": -42.49992515097137}, {"input": [-52.0, -42.0], "expected": -41.99995460110078}, {"input": [-52.0, -41.5], "expected": -41.49997246392977}, {"input": [-52.0, -41.0], "expected": -40.99998329843868}, {"input": [-52.0, -40.5], "expected": -40.49998986995771}, {"input": [-52.0, -40.0], "expected": -39.99999385580652}, {"input": [-52.0, -39.5], "expected": -39.49999627335377}, {"input": [-52.0, -39.0], "expected": -38.99999773967315}, {"input": [-52.0, -38.5], "expected": -38.499998629041855}, {"input": [-52.0, -38.0], "expected": -37.999999168471625}, {"input": [-52.0, -37.5], "expected": -37.49999949565247}, {"input": [-52.0, -37.0], "expected": -36.999999694097724}, {"input": [-52.0, -36.5], "expected": -36.49999981446088}, {"input": [-52.0, -36.0], "expected": -35.99999988746483}, {"input": [-52.0, -35.5], "expected": -35.49999993174397}, {"input": [-52.0, -35.0], "expected": -34.999999958600625}, {"input": [-52.0, -34.5], "expected": -34.49999997489001}, {"input": [-52.0, -34.0], "expected": -33.99999998477002}, {"input": [-52.0, -33.5], "expected": -33.499999990762554}, {"input": [-52.0, -33.0], "expected": -32.99999999439721}, {"input": [-52.0, -32.5], "expected": -32.49999999660173}, {"input": [-52.0, -32.0], "expected": -31.999999997938847}, {"input": [-52.0, -31.5], "expected": -31.499999998749846}, {"input": [-52.0, -31.0], "expected": -30.999999999241744}, {"input": [-52.0, -30.5], "expected": -30.499999999540094}, {"input": [-52.0, -30.0], "expected": -29.99999999972105}, {"input": [-52.0, -29.5], "expected": -29.49999999983081}, {"input": [-52.0, -29.0], "expected": -28.99999999989738}, {"input": [-52.0, -28.5], "expected": -28.49999999993776}, {"input": [-52.0, -28.0], "expected": -27.99999999996225}, {"input": [-52.0, -27.5], "expected": -27.499999999977103}, {"input": [-52.0, -27.0], "expected": -26.999999999986112}, {"input": [-52.0, -26.5], "expected": -26.499999999991577}, {"input": [-52.0, -26.0], "expected": -25.99999999999489}, {"input": [-52.0, -25.5], "expected": -25.499999999996902}, {"input": [-52.0, -25.0], "expected": -24.99999999999812}, {"input": [-52.0, -24.5], "expected": -24.49999999999886}, {"input": [-52.0, -24.0], "expected": -23.999999999999307}, {"input": [-52.0, -23.5], "expected": -23.49999999999958}, {"input": [-52.0, -23.0], "expected": -22.999999999999744}, {"input": [-52.0, -22.5], "expected": -22.499999999999847}, {"input": [-52.0, -22.0], "expected": -21.999999999999908}, {"input": [-52.0, -21.5], "expected": -21.499999999999943}, {"input": [-52.0, -21.0], "expected": -20.999999999999964}, {"input": [-52.0, -20.5], "expected": -20.49999999999998}, {"input": [-52.0, -20.0], "expected": -19.999999999999986}, {"input": [-52.0, -19.5], "expected": -19.499999999999993}, {"input": [-52.0, -19.0], "expected": -18.999999999999996}, {"input": [-52.0, -18.5], "expected": -18.499999999999996}, {"input": [-52.0, -18.0], "expected": -18.0}, {"input": [-52.0, -17.5], "expected": -17.5}, {"input": [-52.0, -17.0], "expected": -17.0}, {"input": [-52.0, -16.5], "expected": -16.5}, {"input": [-52.0, -16.0], "expected": -16.0}, {"input": [-52.0, -15.5], "expected": -15.5}, {"input": [-52.0, -15.0], "expected": -15.0}, {"input": [-52.0, -14.5], "expected": -14.5}, {"input": [-52.0, -14.0], "expected": -14.0}, {"input": [-52.0, -13.5], "expected": -13.5}, {"input": [-52.0, -13.0], "expected": -13.0}, {"input": [-52.0, -12.5], "expected": -12.5}, {"input": [-52.0, -12.0], "expected": -12.0}, {"input": [-52.0, -11.5], "expected": -11.5}, {"input": [-52.0, -11.0], "expected": -11.0}, {"input": [-52.0, -10.5], "expected": -10.5}, {"input": [-52.0, -10.0], "expected": -10.0}, {"input": [-52.0, -9.5], "expected": -9.5}, {"input": [-52.0, -9.0], "expected": -9.0}, {"input": [-52.0, -8.5], "expected": -8.5}, {"input": [-52.0, -8.0], "expected": -8.0}, {"input": [-52.0, -7.5], "expected": -7.5}, {"input": [-52.0, -7.0], "expected": -7.0}, {"input": [-52.0, -6.5], "expected": -6.5}, {"input": [-52.0, -6.0], "expected": -6.0}, {"input": [-52.0, -5.5], "expected": -5.5}, {"input": [-52.0, -5.0], "expected": -5.0}, {"input": [-52.0, -4.5], "expected": -4.5}, {"input": [-52.0, -4.0], "expected": -4.0}, {"input": [-52.0, -3.5], "expected": -3.5}, {"input": [-52.0, -3.0], "expected": -3.0}, {"input": [-52.0, -2.5], "expected": -2.5}, {"input": [-52.0, -2.0], "expected": -2.0}, {"input": [-52.0, -1.5], "expected": -1.5}, {"input": [-52.0, -1.0], "expected": -1.0}, {"input": [-52.0, -0.5], "expected": -0.5}, {"input": [-52.0, 0.0], "expected": 2.6102790696677047e-23}, {"input": [-52.0, 0.5], "expected": 0.5}, {"input": [-52.0, 1.0], "expected": 1.0}, {"input": [-52.0, 1.5], "expected": 1.5}, {"input": [-52.0, 2.0], "expected": 2.0}, {"input": [-52.0, 2.5], "expected": 2.5}, {"input": [-52.0, 3.0], "expected": 3.0}, {"input": [-52.0, 3.5], "expected": 3.5}, {"input": [-52.0, 4.0], "expected": 4.0}, {"input": [-52.0, 4.5], "expected": 4.5}, {"input": [-52.0, 5.0], "expected": 5.0}, {"input": [-52.0, 5.5], "expected": 5.5}, {"input": [-52.0, 6.0], "expected": 6.0}, {"input": [-52.0, 6.5], "expected": 6.5}, {"input": [-52.0, 7.0], "expected": 7.0}, {"input": [-52.0, 7.5], "expected": 7.5}, {"input": [-52.0, 8.0], "expected": 8.0}, {"input": [-52.0, 8.5], "expected": 8.5}, {"input": [-52.0, 9.0], "expected": 9.0}, {"input": [-52.0, 9.5], "expected": 9.5}, {"input": [-52.0, 10.0], "expected": 10.0}, {"input": [-52.0, 10.5], "expected": 10.5}, {"input": [-52.0, 11.0], "expected": 11.0}, {"input": [-52.0, 11.5], "expected": 11.5}, {"input": [-52.0, 12.0], "expected": 12.0}, {"input": [-52.0, 12.5], "expected": 12.5}, {"input": [-52.0, 13.0], "expected": 13.0}, {"input": [-52.0, 13.5], "expected": 13.5}, {"input": [-52.0, 14.0], "expected": 14.0}, {"input": [-52.0, 14.5], "expected": 14.5}, {"input": [-52.0, 15.0], "expected": 15.0}, {"input": [-52.0, 15.5], "expected": 15.5}, {"input": [-52.0, 16.0], "expected": 16.0}, {"input": [-52.0, 16.5], "expected": 16.5}, {"input": [-52.0, 17.0], "expected": 17.0}, {"input": [-52.0, 17.5], "expected": 17.5}, {"input": [-52.0, 18.0], "expected": 18.0}, {"input": [-52.0, 18.5], "expected": 18.5}, {"input": [-52.0, 19.0], "expected": 19.0}, {"input": [-52.0, 19.5], "expected": 19.5}, {"input": [-52.0, 20.0], "expected": 20.0}, {"input": [-52.0, 20.5], "expected": 20.5}, {"input": [-52.0, 21.0], "expected": 21.0}, {"input": [-52.0, 21.5], "expected": 21.5}, {"input": [-52.0, 22.0], "expected": 22.0}, {"input": [-52.0, 22.5], "expected": 22.5}, {"input": [-52.0, 23.0], "expected": 23.0}, {"input": [-52.0, 23.5], "expected": 23.5}, {"input": [-52.0, 24.0], "expected": 24.0}, {"input": [-52.0, 24.5], "expected": 24.5}, {"input": [-52.0, 25.0], "expected": 25.0}, {"input": [-52.0, 25.5], "expected": 25.5}, {"input": [-52.0, 26.0], "expected": 26.0}, {"input": [-52.0, 26.5], "expected": 26.5}, {"input": [-52.0, 27.0], "expected": 27.0}, {"input": [-52.0, 27.5], "expected": 27.5}, {"input": [-52.0, 28.0], "expected": 28.0}, {"input": [-52.0, 28.5], "expected": 28.5}, {"input": [-52.0, 29.0], "expected": 29.0}, {"input": [-52.0, 29.5], "expected": 29.5}, {"input": [-52.0, 30.0], "expected": 30.0}, {"input": [-52.0, 30.5], "expected": 30.5}, {"input": [-52.0, 31.0], "expected": 31.0}, {"input": [-52.0, 31.5], "expected": 31.5}, {"input": [-52.0, 32.0], "expected": 32.0}, {"input": [-52.0, 32.5], "expected": 32.5}, {"input": [-52.0, 33.0], "expected": 33.0}, {"input": [-52.0, 33.5], "expected": 33.5}, {"input": [-52.0, 34.0], "expected": 34.0}, {"input": [-52.0, 34.5], "expected": 34.5}, {"input": [-52.0, 35.0], "expected": 35.0}, {"input": [-52.0, 35.5], "expected": 35.5}, {"input": [-52.0, 36.0], "expected": 36.0}, {"input": [-52.0, 36.5], "expected": 36.5}, {"input": [-52.0, 37.0], "expected": 37.0}, {"input": [-52.0, 37.5], "expected": 37.5}, {"input": [-52.0, 38.0], "expected": 38.0}, {"input": [-52.0, 38.5], "expected": 38.5}, {"input": [-52.0, 39.0], "expected": 39.0}, {"input": [-52.0, 39.5], "expected": 39.5}, {"input": [-52.0, 40.0], "expected": 40.0}, {"input": [-52.0, 40.5], "expected": 40.5}, {"input": [-52.0, 41.0], "expected": 41.0}, {"input": [-52.0, 41.5], "expected": 41.5}, {"input": [-52.0, 42.0], "expected": 42.0}, {"input": [-52.0, 42.5], "expected": 42.5}, {"input": [-52.0, 43.0], "expected": 43.0}, {"input": [-52.0, 43.5], "expected": 43.5}, {"input": [-52.0, 44.0], "expected": 44.0}, {"input": [-52.0, 44.5], "expected": 44.5}, {"input": [-52.0, 45.0], "expected": 45.0}, {"input": [-52.0, 45.5], "expected": 45.5}, {"input": [-52.0, 46.0], "expected": 46.0}, {"input": [-52.0, 46.5], "expected": 46.5}, {"input": [-52.0, 47.0], "expected": 47.0}, {"input": [-52.0, 47.5], "expected": 47.5}, {"input": [-52.0, 48.0], "expected": 48.0}, {"input": [-52.0, 48.5], "expected": 48.5}, {"input": [-52.0, 49.0], "expected": 49.0}, {"input": [-52.0, 49.5], "expected": 49.5}, {"input": [-52.0, 50.0], "expected": 50.0}, {"input": [-52.0, 50.5], "expected": 50.5}, {"input": [-52.0, 51.0], "expected": 51.0}, {"input": [-52.0, 51.5], "expected": 51.5}, {"input": [-52.0, 52.0], "expected": 52.0}, {"input": [-52.0, 52.5], "expected": 52.5}, {"input": [-52.0, 53.0], "expected": 53.0}, {"input": [-52.0, 53.5], "expected": 53.5}, {"input": [-52.0, 54.0], "expected": 54.0}, {"input": [-52.0, 54.5], "expected": 54.5}, {"input": [-52.0, 55.0], "expected": 55.0}, {"input": [-52.0, 55.5], "expected": 55.5}, {"input": [-52.0, 56.0], "expected": 56.0}, {"input": [-52.0, 56.5], "expected": 56.5}, {"input": [-52.0, 57.0], "expected": 57.0}, {"input": [-52.0, 57.5], "expected": 57.5}, {"input": [-52.0, 58.0], "expected": 58.0}, {"input": [-52.0, 58.5], "expected": 58.5}, {"input": [-52.0, 59.0], "expected": 59.0}, {"input": [-52.0, 59.5], "expected": 59.5}, {"input": [-52.0, 60.0], "expected": 60.0}, {"input": [-52.0, 60.5], "expected": 60.5}, {"input": [-52.0, 61.0], "expected": 61.0}, {"input": [-52.0, 61.5], "expected": 61.5}, {"input": [-52.0, 62.0], "expected": 62.0}, {"input": [-52.0, 62.5], "expected": 62.5}, {"input": [-52.0, 63.0], "expected": 63.0}, {"input": [-52.0, 63.5], "expected": 63.5}, {"input": [-52.0, 64.0], "expected": 64.0}, {"input": [-52.0, 64.5], "expected": 64.5}, {"input": [-52.0, 65.0], "expected": 65.0}, {"input": [-52.0, 65.5], "expected": 65.5}, {"input": [-52.0, 66.0], "expected": 66.0}, {"input": [-52.0, 66.5], "expected": 66.5}, {"input": [-52.0, 67.0], "expected": 67.0}, {"input": [-52.0, 67.5], "expected": 67.5}, {"input": [-52.0, 68.0], "expected": 68.0}, {"input": [-52.0, 68.5], "expected": 68.5}, {"input": [-52.0, 69.0], "expected": 69.0}, {"input": [-52.0, 69.5], "expected": 69.5}, {"input": [-52.0, 70.0], "expected": 70.0}, {"input": [-52.0, 70.5], "expected": 70.5}, {"input": [-52.0, 71.0], "expected": 71.0}, {"input": [-52.0, 71.5], "expected": 71.5}, {"input": [-52.0, 72.0], "expected": 72.0}, {"input": [-52.0, 72.5], "expected": 72.5}, {"input": [-52.0, 73.0], "expected": 73.0}, {"input": [-52.0, 73.5], "expected": 73.5}, {"input": [-52.0, 74.0], "expected": 74.0}, {"input": [-52.0, 74.5], "expected": 74.5}, {"input": [-52.0, 75.0], "expected": 75.0}, {"input": [-52.0, 75.5], "expected": 75.5}, {"input": [-52.0, 76.0], "expected": 76.0}, {"input": [-52.0, 76.5], "expected": 76.5}, {"input": [-52.0, 77.0], "expected": 77.0}, {"input": [-52.0, 77.5], "expected": 77.5}, {"input": [-52.0, 78.0], "expected": 78.0}, {"input": [-52.0, 78.5], "expected": 78.5}, {"input": [-52.0, 79.0], "expected": 79.0}, {"input": [-52.0, 79.5], "expected": 79.5}, {"input": [-52.0, 80.0], "expected": 80.0}, {"input": [-52.0, 80.5], "expected": 80.5}, {"input": [-52.0, 81.0], "expected": 81.0}, {"input": [-52.0, 81.5], "expected": 81.5}, {"input": [-52.0, 82.0], "expected": 82.0}, {"input": [-52.0, 82.5], "expected": 82.5}, {"input": [-52.0, 83.0], "expected": 83.0}, {"input": [-52.0, 83.5], "expected": 83.5}, {"input": [-52.0, 84.0], "expected": 84.0}, {"input": [-52.0, 84.5], "expected": 84.5}, {"input": [-52.0, 85.0], "expected": 85.0}, {"input": [-52.0, 85.5], "expected": 85.5}, {"input": [-52.0, 86.0], "expected": 86.0}, {"input": [-52.0, 86.5], "expected": 86.5}, {"input": [-52.0, 87.0], "expected": 87.0}, {"input": [-52.0, 87.5], "expected": 87.5}, {"input": [-52.0, 88.0], "expected": 88.0}, {"input": [-52.0, 88.5], "expected": 88.5}, {"input": [-52.0, 89.0], "expected": 89.0}, {"input": [-52.0, 89.5], "expected": 89.5}, {"input": [-52.0, 90.0], "expected": 90.0}, {"input": [-52.0, 90.5], "expected": 90.5}, {"input": [-52.0, 91.0], "expected": 91.0}, {"input": [-52.0, 91.5], "expected": 91.5}, {"input": [-52.0, 92.0], "expected": 92.0}, {"input": [-52.0, 92.5], "expected": 92.5}, {"input": [-52.0, 93.0], "expected": 93.0}, {"input": [-52.0, 93.5], "expected": 93.5}, {"input": [-52.0, 94.0], "expected": 94.0}, {"input": [-52.0, 94.5], "expected": 94.5}, {"input": [-52.0, 95.0], "expected": 95.0}, {"input": [-52.0, 95.5], "expected": 95.5}, {"input": [-52.0, 96.0], "expected": 96.0}, {"input": [-52.0, 96.5], "expected": 96.5}, {"input": [-52.0, 97.0], "expected": 97.0}, {"input": [-52.0, 97.5], "expected": 97.5}, {"input": [-52.0, 98.0], "expected": 98.0}, {"input": [-52.0, 98.5], "expected": 98.5}, {"input": [-52.0, 99.0], "expected": 99.0}, {"input": [-52.0, 99.5], "expected": 99.5}, {"input": [-51.5, -100.0], "expected": -51.5}, {"input": [-51.5, -99.5], "expected": -51.5}, {"input": [-51.5, -99.0], "expected": -51.5}, {"input": [-51.5, -98.5], "expected": -51.5}, {"input": [-51.5, -98.0], "expected": -51.5}, {"input": [-51.5, -97.5], "expected": -51.5}, {"input": [-51.5, -97.0], "expected": -51.5}, {"input": [-51.5, -96.5], "expected": -51.5}, {"input": [-51.5, -96.0], "expected": -51.5}, {"input": [-51.5, -95.5], "expected": -51.5}, {"input": [-51.5, -95.0], "expected": -51.5}, {"input": [-51.5, -94.5], "expected": -51.5}, {"input": [-51.5, -94.0], "expected": -51.5}, {"input": [-51.5, -93.5], "expected": -51.5}, {"input": [-51.5, -93.0], "expected": -51.5}, {"input": [-51.5, -92.5], "expected": -51.5}, {"input": [-51.5, -92.0], "expected": -51.5}, {"input": [-51.5, -91.5], "expected": -51.5}, {"input": [-51.5, -91.0], "expected": -51.5}, {"input": [-51.5, -90.5], "expected": -51.5}, {"input": [-51.5, -90.0], "expected": -51.5}, {"input": [-51.5, -89.5], "expected": -51.5}, {"input": [-51.5, -89.0], "expected": -51.5}, {"input": [-51.5, -88.5], "expected": -51.5}, {"input": [-51.5, -88.0], "expected": -51.5}, {"input": [-51.5, -87.5], "expected": -51.5}, {"input": [-51.5, -87.0], "expected": -51.5}, {"input": [-51.5, -86.5], "expected": -51.5}, {"input": [-51.5, -86.0], "expected": -51.5}, {"input": [-51.5, -85.5], "expected": -51.5}, {"input": [-51.5, -85.0], "expected": -51.5}, {"input": [-51.5, -84.5], "expected": -51.49999999999999}, {"input": [-51.5, -84.0], "expected": -51.49999999999999}, {"input": [-51.5, -83.5], "expected": -51.499999999999986}, {"input": [-51.5, -83.0], "expected": -51.49999999999998}, {"input": [-51.5, -82.5], "expected": -51.499999999999964}, {"input": [-51.5, -82.0], "expected": -51.49999999999994}, {"input": [-51.5, -81.5], "expected": -51.49999999999991}, {"input": [-51.5, -81.0], "expected": -51.499999999999844}, {"input": [-51.5, -80.5], "expected": -51.499999999999744}, {"input": [-51.5, -80.0], "expected": -51.49999999999958}, {"input": [-51.5, -79.5], "expected": -51.49999999999931}, {"input": [-51.5, -79.0], "expected": -51.49999999999886}, {"input": [-51.5, -78.5], "expected": -51.49999999999812}, {"input": [-51.5, -78.0], "expected": -51.4999999999969}, {"input": [-51.5, -77.5], "expected": -51.49999999999489}, {"input": [-51.5, -77.0], "expected": -51.49999999999158}, {"input": [-51.5, -76.5], "expected": -51.49999999998611}, {"input": [-51.5, -76.0], "expected": -51.4999999999771}, {"input": [-51.5, -75.5], "expected": -51.49999999996225}, {"input": [-51.5, -75.0], "expected": -51.49999999993776}, {"input": [-51.5, -74.5], "expected": -51.49999999989738}, {"input": [-51.5, -74.0], "expected": -51.49999999983081}, {"input": [-51.5, -73.5], "expected": -51.499999999721055}, {"input": [-51.5, -73.0], "expected": -51.499999999540094}, {"input": [-51.5, -72.5], "expected": -51.499999999241744}, {"input": [-51.5, -72.0], "expected": -51.49999999874985}, {"input": [-51.5, -71.5], "expected": -51.49999999793884}, {"input": [-51.5, -71.0], "expected": -51.49999999660173}, {"input": [-51.5, -70.5], "expected": -51.49999999439721}, {"input": [-51.5, -70.0], "expected": -51.499999990762554}, {"input": [-51.5, -69.5], "expected": -51.49999998477002}, {"input": [-51.5, -69.0], "expected": -51.49999997489001}, {"input": [-51.5, -68.5], "expected": -51.499999958600625}, {"input": [-51.5, -68.0], "expected": -51.49999993174397}, {"input": [-51.5, -67.5], "expected": -51.49999988746483}, {"input": [-51.5, -67.0], "expected": -51.49999981446088}, {"input": [-51.5, -66.5], "expected": -51.499999694097724}, {"input": [-51.5, -66.0], "expected": -51.49999949565247}, {"input": [-51.5, -65.5], "expected": -51.499999168471625}, {"input": [-51.5, -65.0], "expected": -51.499998629041855}, {"input": [-51.5, -64.5], "expected": -51.49999773967315}, {"input": [-51.5, -64.0], "expected": -51.49999627335377}, {"input": [-51.5, -63.5], "expected": -51.49999385580652}, {"input": [-51.5, -63.0], "expected": -51.49998986995771}, {"input": [-51.5, -62.5], "expected": -51.49998329843868}, {"input": [-51.5, -62.0], "expected": -51.49997246392977}, {"input": [-51.5, -61.5], "expected": -51.49995460110078}, {"input": [-51.5, -61.0], "expected": -51.49992515097137}, {"input": [-51.5, -60.5], "expected": -51.49987659781028}, {"input": [-51.5, -60.0], "expected": -51.49979655232787}, {"input": [-51.5, -59.5], "expected": -51.4996645936271}, {"input": [-51.5, -59.0], "expected": -51.49944706852464}, {"input": [-51.5, -58.5], "expected": -51.49908853354623}, {"input": [-51.5, -58.0], "expected": -51.49849768984024}, {"input": [-51.5, -57.5], "expected": -51.49752431486227}, {"input": [-51.5, -57.0], "expected": -51.49592155672943}, {"input": [-51.5, -56.5], "expected": -51.49328465151088}, {"input": [-51.5, -56.0], "expected": -51.4889522551514}, {"input": [-51.5, -55.5], "expected": -51.48185007208219}, {"input": [-51.5, -55.0], "expected": -51.47024958172738}, {"input": [-51.5, -54.5], "expected": -51.451412648426256}, {"input": [-51.5, -54.0], "expected": -51.42111026570745}, {"input": [-51.5, -53.5], "expected": -51.37307198895703}, {"input": [-51.5, -53.0], "expected": -51.29858672201725}, {"input": [-51.5, -52.5], "expected": -51.18673831248178}, {"input": [-51.5, -52.0], "expected": -51.02592301581989}, {"input": [-51.5, -51.5], "expected": -50.80685281944005}, {"input": [-51.5, -51.0], "expected": -50.52592301581989}, {"input": [-51.5, -50.5], "expected": -50.18673831248178}, {"input": [-51.5, -50.0], "expected": -49.79858672201725}, {"input": [-51.5, -49.5], "expected": -49.37307198895703}, {"input": [-51.5, -49.0], "expected": -48.92111026570745}, {"input": [-51.5, -48.5], "expected": -48.451412648426256}, {"input": [-51.5, -48.0], "expected": -47.97024958172738}, {"input": [-51.5, -47.5], "expected": -47.48185007208219}, {"input": [-51.5, -47.0], "expected": -46.9889522551514}, {"input": [-51.5, -46.5], "expected": -46.49328465151088}, {"input": [-51.5, -46.0], "expected": -45.99592155672943}, {"input": [-51.5, -45.5], "expected": -45.49752431486227}, {"input": [-51.5, -45.0], "expected": -44.99849768984024}, {"input": [-51.5, -44.5], "expected": -44.49908853354623}, {"input": [-51.5, -44.0], "expected": -43.99944706852464}, {"input": [-51.5, -43.5], "expected": -43.4996645936271}, {"input": [-51.5, -43.0], "expected": -42.99979655232787}, {"input": [-51.5, -42.5], "expected": -42.49987659781028}, {"input": [-51.5, -42.0], "expected": -41.99992515097137}, {"input": [-51.5, -41.5], "expected": -41.49995460110078}, {"input": [-51.5, -41.0], "expected": -40.99997246392977}, {"input": [-51.5, -40.5], "expected": -40.49998329843868}, {"input": [-51.5, -40.0], "expected": -39.99998986995771}, {"input": [-51.5, -39.5], "expected": -39.49999385580652}, {"input": [-51.5, -39.0], "expected": -38.99999627335377}, {"input": [-51.5, -38.5], "expected": -38.49999773967315}, {"input": [-51.5, -38.0], "expected": -37.999998629041855}, {"input": [-51.5, -37.5], "expected": -37.499999168471625}, {"input": [-51.5, -37.0], "expected": -36.99999949565247}, {"input": [-51.5, -36.5], "expected": -36.499999694097724}, {"input": [-51.5, -36.0], "expected": -35.99999981446088}, {"input": [-51.5, -35.5], "expected": -35.49999988746483}, {"input": [-51.5, -35.0], "expected": -34.99999993174397}, {"input": [-51.5, -34.5], "expected": -34.499999958600625}, {"input": [-51.5, -34.0], "expected": -33.99999997489001}, {"input": [-51.5, -33.5], "expected": -33.49999998477002}, {"input": [-51.5, -33.0], "expected": -32.999999990762554}, {"input": [-51.5, -32.5], "expected": -32.49999999439721}, {"input": [-51.5, -32.0], "expected": -31.999999996601733}, {"input": [-51.5, -31.5], "expected": -31.499999997938847}, {"input": [-51.5, -31.0], "expected": -30.999999998749846}, {"input": [-51.5, -30.5], "expected": -30.499999999241744}, {"input": [-51.5, -30.0], "expected": -29.999999999540094}, {"input": [-51.5, -29.5], "expected": -29.49999999972105}, {"input": [-51.5, -29.0], "expected": -28.99999999983081}, {"input": [-51.5, -28.5], "expected": -28.49999999989738}, {"input": [-51.5, -28.0], "expected": -27.99999999993776}, {"input": [-51.5, -27.5], "expected": -27.49999999996225}, {"input": [-51.5, -27.0], "expected": -26.999999999977103}, {"input": [-51.5, -26.5], "expected": -26.499999999986112}, {"input": [-51.5, -26.0], "expected": -25.999999999991577}, {"input": [-51.5, -25.5], "expected": -25.49999999999489}, {"input": [-51.5, -25.0], "expected": -24.999999999996902}, {"input": [-51.5, -24.5], "expected": -24.49999999999812}, {"input": [-51.5, -24.0], "expected": -23.99999999999886}, {"input": [-51.5, -23.5], "expected": -23.499999999999307}, {"input": [-51.5, -23.0], "expected": -22.99999999999958}, {"input": [-51.5, -22.5], "expected": -22.499999999999744}, {"input": [-51.5, -22.0], "expected": -21.999999999999847}, {"input": [-51.5, -21.5], "expected": -21.499999999999908}, {"input": [-51.5, -21.0], "expected": -20.999999999999943}, {"input": [-51.5, -20.5], "expected": -20.499999999999964}, {"input": [-51.5, -20.0], "expected": -19.99999999999998}, {"input": [-51.5, -19.5], "expected": -19.499999999999986}, {"input": [-51.5, -19.0], "expected": -18.999999999999993}, {"input": [-51.5, -18.5], "expected": -18.499999999999996}, {"input": [-51.5, -18.0], "expected": -17.999999999999996}, {"input": [-51.5, -17.5], "expected": -17.5}, {"input": [-51.5, -17.0], "expected": -17.0}, {"input": [-51.5, -16.5], "expected": -16.5}, {"input": [-51.5, -16.0], "expected": -16.0}, {"input": [-51.5, -15.5], "expected": -15.5}, {"input": [-51.5, -15.0], "expected": -15.0}, {"input": [-51.5, -14.5], "expected": -14.5}, {"input": [-51.5, -14.0], "expected": -14.0}, {"input": [-51.5, -13.5], "expected": -13.5}, {"input": [-51.5, -13.0], "expected": -13.0}, {"input": [-51.5, -12.5], "expected": -12.5}, {"input": [-51.5, -12.0], "expected": -12.0}, {"input": [-51.5, -11.5], "expected": -11.5}, {"input": [-51.5, -11.0], "expected": -11.0}, {"input": [-51.5, -10.5], "expected": -10.5}, {"input": [-51.5, -10.0], "expected": -10.0}, {"input": [-51.5, -9.5], "expected": -9.5}, {"input": [-51.5, -9.0], "expected": -9.0}, {"input": [-51.5, -8.5], "expected": -8.5}, {"input": [-51.5, -8.0], "expected": -8.0}, {"input": [-51.5, -7.5], "expected": -7.5}, {"input": [-51.5, -7.0], "expected": -7.0}, {"input": [-51.5, -6.5], "expected": -6.5}, {"input": [-51.5, -6.0], "expected": -6.0}, {"input": [-51.5, -5.5], "expected": -5.5}, {"input": [-51.5, -5.0], "expected": -5.0}, {"input": [-51.5, -4.5], "expected": -4.5}, {"input": [-51.5, -4.0], "expected": -4.0}, {"input": [-51.5, -3.5], "expected": -3.5}, {"input": [-51.5, -3.0], "expected": -3.0}, {"input": [-51.5, -2.5], "expected": -2.5}, {"input": [-51.5, -2.0], "expected": -2.0}, {"input": [-51.5, -1.5], "expected": -1.5}, {"input": [-51.5, -1.0], "expected": -1.0}, {"input": [-51.5, -0.5], "expected": -0.5}, {"input": [-51.5, 0.0], "expected": 4.3036226246244867e-23}, {"input": [-51.5, 0.5], "expected": 0.5}, {"input": [-51.5, 1.0], "expected": 1.0}, {"input": [-51.5, 1.5], "expected": 1.5}, {"input": [-51.5, 2.0], "expected": 2.0}, {"input": [-51.5, 2.5], "expected": 2.5}, {"input": [-51.5, 3.0], "expected": 3.0}, {"input": [-51.5, 3.5], "expected": 3.5}, {"input": [-51.5, 4.0], "expected": 4.0}, {"input": [-51.5, 4.5], "expected": 4.5}, {"input": [-51.5, 5.0], "expected": 5.0}, {"input": [-51.5, 5.5], "expected": 5.5}, {"input": [-51.5, 6.0], "expected": 6.0}, {"input": [-51.5, 6.5], "expected": 6.5}, {"input": [-51.5, 7.0], "expected": 7.0}, {"input": [-51.5, 7.5], "expected": 7.5}, {"input": [-51.5, 8.0], "expected": 8.0}, {"input": [-51.5, 8.5], "expected": 8.5}, {"input": [-51.5, 9.0], "expected": 9.0}, {"input": [-51.5, 9.5], "expected": 9.5}, {"input": [-51.5, 10.0], "expected": 10.0}, {"input": [-51.5, 10.5], "expected": 10.5}, {"input": [-51.5, 11.0], "expected": 11.0}, {"input": [-51.5, 11.5], "expected": 11.5}, {"input": [-51.5, 12.0], "expected": 12.0}, {"input": [-51.5, 12.5], "expected": 12.5}, {"input": [-51.5, 13.0], "expected": 13.0}, {"input": [-51.5, 13.5], "expected": 13.5}, {"input": [-51.5, 14.0], "expected": 14.0}, {"input": [-51.5, 14.5], "expected": 14.5}, {"input": [-51.5, 15.0], "expected": 15.0}, {"input": [-51.5, 15.5], "expected": 15.5}, {"input": [-51.5, 16.0], "expected": 16.0}, {"input": [-51.5, 16.5], "expected": 16.5}, {"input": [-51.5, 17.0], "expected": 17.0}, {"input": [-51.5, 17.5], "expected": 17.5}, {"input": [-51.5, 18.0], "expected": 18.0}, {"input": [-51.5, 18.5], "expected": 18.5}, {"input": [-51.5, 19.0], "expected": 19.0}, {"input": [-51.5, 19.5], "expected": 19.5}, {"input": [-51.5, 20.0], "expected": 20.0}, {"input": [-51.5, 20.5], "expected": 20.5}, {"input": [-51.5, 21.0], "expected": 21.0}, {"input": [-51.5, 21.5], "expected": 21.5}, {"input": [-51.5, 22.0], "expected": 22.0}, {"input": [-51.5, 22.5], "expected": 22.5}, {"input": [-51.5, 23.0], "expected": 23.0}, {"input": [-51.5, 23.5], "expected": 23.5}, {"input": [-51.5, 24.0], "expected": 24.0}, {"input": [-51.5, 24.5], "expected": 24.5}, {"input": [-51.5, 25.0], "expected": 25.0}, {"input": [-51.5, 25.5], "expected": 25.5}, {"input": [-51.5, 26.0], "expected": 26.0}, {"input": [-51.5, 26.5], "expected": 26.5}, {"input": [-51.5, 27.0], "expected": 27.0}, {"input": [-51.5, 27.5], "expected": 27.5}, {"input": [-51.5, 28.0], "expected": 28.0}, {"input": [-51.5, 28.5], "expected": 28.5}, {"input": [-51.5, 29.0], "expected": 29.0}, {"input": [-51.5, 29.5], "expected": 29.5}, {"input": [-51.5, 30.0], "expected": 30.0}, {"input": [-51.5, 30.5], "expected": 30.5}, {"input": [-51.5, 31.0], "expected": 31.0}, {"input": [-51.5, 31.5], "expected": 31.5}, {"input": [-51.5, 32.0], "expected": 32.0}, {"input": [-51.5, 32.5], "expected": 32.5}, {"input": [-51.5, 33.0], "expected": 33.0}, {"input": [-51.5, 33.5], "expected": 33.5}, {"input": [-51.5, 34.0], "expected": 34.0}, {"input": [-51.5, 34.5], "expected": 34.5}, {"input": [-51.5, 35.0], "expected": 35.0}, {"input": [-51.5, 35.5], "expected": 35.5}, {"input": [-51.5, 36.0], "expected": 36.0}, {"input": [-51.5, 36.5], "expected": 36.5}, {"input": [-51.5, 37.0], "expected": 37.0}, {"input": [-51.5, 37.5], "expected": 37.5}, {"input": [-51.5, 38.0], "expected": 38.0}, {"input": [-51.5, 38.5], "expected": 38.5}, {"input": [-51.5, 39.0], "expected": 39.0}, {"input": [-51.5, 39.5], "expected": 39.5}, {"input": [-51.5, 40.0], "expected": 40.0}, {"input": [-51.5, 40.5], "expected": 40.5}, {"input": [-51.5, 41.0], "expected": 41.0}, {"input": [-51.5, 41.5], "expected": 41.5}, {"input": [-51.5, 42.0], "expected": 42.0}, {"input": [-51.5, 42.5], "expected": 42.5}, {"input": [-51.5, 43.0], "expected": 43.0}, {"input": [-51.5, 43.5], "expected": 43.5}, {"input": [-51.5, 44.0], "expected": 44.0}, {"input": [-51.5, 44.5], "expected": 44.5}, {"input": [-51.5, 45.0], "expected": 45.0}, {"input": [-51.5, 45.5], "expected": 45.5}, {"input": [-51.5, 46.0], "expected": 46.0}, {"input": [-51.5, 46.5], "expected": 46.5}, {"input": [-51.5, 47.0], "expected": 47.0}, {"input": [-51.5, 47.5], "expected": 47.5}, {"input": [-51.5, 48.0], "expected": 48.0}, {"input": [-51.5, 48.5], "expected": 48.5}, {"input": [-51.5, 49.0], "expected": 49.0}, {"input": [-51.5, 49.5], "expected": 49.5}, {"input": [-51.5, 50.0], "expected": 50.0}, {"input": [-51.5, 50.5], "expected": 50.5}, {"input": [-51.5, 51.0], "expected": 51.0}, {"input": [-51.5, 51.5], "expected": 51.5}, {"input": [-51.5, 52.0], "expected": 52.0}, {"input": [-51.5, 52.5], "expected": 52.5}, {"input": [-51.5, 53.0], "expected": 53.0}, {"input": [-51.5, 53.5], "expected": 53.5}, {"input": [-51.5, 54.0], "expected": 54.0}, {"input": [-51.5, 54.5], "expected": 54.5}, {"input": [-51.5, 55.0], "expected": 55.0}, {"input": [-51.5, 55.5], "expected": 55.5}, {"input": [-51.5, 56.0], "expected": 56.0}, {"input": [-51.5, 56.5], "expected": 56.5}, {"input": [-51.5, 57.0], "expected": 57.0}, {"input": [-51.5, 57.5], "expected": 57.5}, {"input": [-51.5, 58.0], "expected": 58.0}, {"input": [-51.5, 58.5], "expected": 58.5}, {"input": [-51.5, 59.0], "expected": 59.0}, {"input": [-51.5, 59.5], "expected": 59.5}, {"input": [-51.5, 60.0], "expected": 60.0}, {"input": [-51.5, 60.5], "expected": 60.5}, {"input": [-51.5, 61.0], "expected": 61.0}, {"input": [-51.5, 61.5], "expected": 61.5}, {"input": [-51.5, 62.0], "expected": 62.0}, {"input": [-51.5, 62.5], "expected": 62.5}, {"input": [-51.5, 63.0], "expected": 63.0}, {"input": [-51.5, 63.5], "expected": 63.5}, {"input": [-51.5, 64.0], "expected": 64.0}, {"input": [-51.5, 64.5], "expected": 64.5}, {"input": [-51.5, 65.0], "expected": 65.0}, {"input": [-51.5, 65.5], "expected": 65.5}, {"input": [-51.5, 66.0], "expected": 66.0}, {"input": [-51.5, 66.5], "expected": 66.5}, {"input": [-51.5, 67.0], "expected": 67.0}, {"input": [-51.5, 67.5], "expected": 67.5}, {"input": [-51.5, 68.0], "expected": 68.0}, {"input": [-51.5, 68.5], "expected": 68.5}, {"input": [-51.5, 69.0], "expected": 69.0}, {"input": [-51.5, 69.5], "expected": 69.5}, {"input": [-51.5, 70.0], "expected": 70.0}, {"input": [-51.5, 70.5], "expected": 70.5}, {"input": [-51.5, 71.0], "expected": 71.0}, {"input": [-51.5, 71.5], "expected": 71.5}, {"input": [-51.5, 72.0], "expected": 72.0}, {"input": [-51.5, 72.5], "expected": 72.5}, {"input": [-51.5, 73.0], "expected": 73.0}, {"input": [-51.5, 73.5], "expected": 73.5}, {"input": [-51.5, 74.0], "expected": 74.0}, {"input": [-51.5, 74.5], "expected": 74.5}, {"input": [-51.5, 75.0], "expected": 75.0}, {"input": [-51.5, 75.5], "expected": 75.5}, {"input": [-51.5, 76.0], "expected": 76.0}, {"input": [-51.5, 76.5], "expected": 76.5}, {"input": [-51.5, 77.0], "expected": 77.0}, {"input": [-51.5, 77.5], "expected": 77.5}, {"input": [-51.5, 78.0], "expected": 78.0}, {"input": [-51.5, 78.5], "expected": 78.5}, {"input": [-51.5, 79.0], "expected": 79.0}, {"input": [-51.5, 79.5], "expected": 79.5}, {"input": [-51.5, 80.0], "expected": 80.0}, {"input": [-51.5, 80.5], "expected": 80.5}, {"input": [-51.5, 81.0], "expected": 81.0}, {"input": [-51.5, 81.5], "expected": 81.5}, {"input": [-51.5, 82.0], "expected": 82.0}, {"input": [-51.5, 82.5], "expected": 82.5}, {"input": [-51.5, 83.0], "expected": 83.0}, {"input": [-51.5, 83.5], "expected": 83.5}, {"input": [-51.5, 84.0], "expected": 84.0}, {"input": [-51.5, 84.5], "expected": 84.5}, {"input": [-51.5, 85.0], "expected": 85.0}, {"input": [-51.5, 85.5], "expected": 85.5}, {"input": [-51.5, 86.0], "expected": 86.0}, {"input": [-51.5, 86.5], "expected": 86.5}, {"input": [-51.5, 87.0], "expected": 87.0}, {"input": [-51.5, 87.5], "expected": 87.5}, {"input": [-51.5, 88.0], "expected": 88.0}, {"input": [-51.5, 88.5], "expected": 88.5}, {"input": [-51.5, 89.0], "expected": 89.0}, {"input": [-51.5, 89.5], "expected": 89.5}, {"input": [-51.5, 90.0], "expected": 90.0}, {"input": [-51.5, 90.5], "expected": 90.5}, {"input": [-51.5, 91.0], "expected": 91.0}, {"input": [-51.5, 91.5], "expected": 91.5}, {"input": [-51.5, 92.0], "expected": 92.0}, {"input": [-51.5, 92.5], "expected": 92.5}, {"input": [-51.5, 93.0], "expected": 93.0}, {"input": [-51.5, 93.5], "expected": 93.5}, {"input": [-51.5, 94.0], "expected": 94.0}, {"input": [-51.5, 94.5], "expected": 94.5}, {"input": [-51.5, 95.0], "expected": 95.0}, {"input": [-51.5, 95.5], "expected": 95.5}, {"input": [-51.5, 96.0], "expected": 96.0}, {"input": [-51.5, 96.5], "expected": 96.5}, {"input": [-51.5, 97.0], "expected": 97.0}, {"input": [-51.5, 97.5], "expected": 97.5}, {"input": [-51.5, 98.0], "expected": 98.0}, {"input": [-51.5, 98.5], "expected": 98.5}, {"input": [-51.5, 99.0], "expected": 99.0}, {"input": [-51.5, 99.5], "expected": 99.5}, {"input": [-51.0, -100.0], "expected": -51.0}, {"input": [-51.0, -99.5], "expected": -51.0}, {"input": [-51.0, -99.0], "expected": -51.0}, {"input": [-51.0, -98.5], "expected": -51.0}, {"input": [-51.0, -98.0], "expected": -51.0}, {"input": [-51.0, -97.5], "expected": -51.0}, {"input": [-51.0, -97.0], "expected": -51.0}, {"input": [-51.0, -96.5], "expected": -51.0}, {"input": [-51.0, -96.0], "expected": -51.0}, {"input": [-51.0, -95.5], "expected": -51.0}, {"input": [-51.0, -95.0], "expected": -51.0}, {"input": [-51.0, -94.5], "expected": -51.0}, {"input": [-51.0, -94.0], "expected": -51.0}, {"input": [-51.0, -93.5], "expected": -51.0}, {"input": [-51.0, -93.0], "expected": -51.0}, {"input": [-51.0, -92.5], "expected": -51.0}, {"input": [-51.0, -92.0], "expected": -51.0}, {"input": [-51.0, -91.5], "expected": -51.0}, {"input": [-51.0, -91.0], "expected": -51.0}, {"input": [-51.0, -90.5], "expected": -51.0}, {"input": [-51.0, -90.0], "expected": -51.0}, {"input": [-51.0, -89.5], "expected": -51.0}, {"input": [-51.0, -89.0], "expected": -51.0}, {"input": [-51.0, -88.5], "expected": -51.0}, {"input": [-51.0, -88.0], "expected": -51.0}, {"input": [-51.0, -87.5], "expected": -51.0}, {"input": [-51.0, -87.0], "expected": -51.0}, {"input": [-51.0, -86.5], "expected": -51.0}, {"input": [-51.0, -86.0], "expected": -51.0}, {"input": [-51.0, -85.5], "expected": -51.0}, {"input": [-51.0, -85.0], "expected": -51.0}, {"input": [-51.0, -84.5], "expected": -51.0}, {"input": [-51.0, -84.0], "expected": -50.99999999999999}, {"input": [-51.0, -83.5], "expected": -50.99999999999999}, {"input": [-51.0, -83.0], "expected": -50.999999999999986}, {"input": [-51.0, -82.5], "expected": -50.99999999999998}, {"input": [-51.0, -82.0], "expected": -50.999999999999964}, {"input": [-51.0, -81.5], "expected": -50.99999999999994}, {"input": [-51.0, -81.0], "expected": -50.99999999999991}, {"input": [-51.0, -80.5], "expected": -50.999999999999844}, {"input": [-51.0, -80.0], "expected": -50.999999999999744}, {"input": [-51.0, -79.5], "expected": -50.99999999999958}, {"input": [-51.0, -79.0], "expected": -50.99999999999931}, {"input": [-51.0, -78.5], "expected": -50.99999999999886}, {"input": [-51.0, -78.0], "expected": -50.99999999999812}, {"input": [-51.0, -77.5], "expected": -50.9999999999969}, {"input": [-51.0, -77.0], "expected": -50.99999999999489}, {"input": [-51.0, -76.5], "expected": -50.99999999999158}, {"input": [-51.0, -76.0], "expected": -50.99999999998611}, {"input": [-51.0, -75.5], "expected": -50.9999999999771}, {"input": [-51.0, -75.0], "expected": -50.99999999996225}, {"input": [-51.0, -74.5], "expected": -50.99999999993776}, {"input": [-51.0, -74.0], "expected": -50.99999999989738}, {"input": [-51.0, -73.5], "expected": -50.99999999983081}, {"input": [-51.0, -73.0], "expected": -50.999999999721055}, {"input": [-51.0, -72.5], "expected": -50.999999999540094}, {"input": [-51.0, -72.0], "expected": -50.999999999241744}, {"input": [-51.0, -71.5], "expected": -50.99999999874985}, {"input": [-51.0, -71.0], "expected": -50.99999999793884}, {"input": [-51.0, -70.5], "expected": -50.99999999660173}, {"input": [-51.0, -70.0], "expected": -50.99999999439721}, {"input": [-51.0, -69.5], "expected": -50.999999990762554}, {"input": [-51.0, -69.0], "expected": -50.99999998477002}, {"input": [-51.0, -68.5], "expected": -50.99999997489001}, {"input": [-51.0, -68.0], "expected": -50.999999958600625}, {"input": [-51.0, -67.5], "expected": -50.99999993174397}, {"input": [-51.0, -67.0], "expected": -50.99999988746483}, {"input": [-51.0, -66.5], "expected": -50.99999981446088}, {"input": [-51.0, -66.0], "expected": -50.999999694097724}, {"input": [-51.0, -65.5], "expected": -50.99999949565247}, {"input": [-51.0, -65.0], "expected": -50.999999168471625}, {"input": [-51.0, -64.5], "expected": -50.999998629041855}, {"input": [-51.0, -64.0], "expected": -50.99999773967315}, {"input": [-51.0, -63.5], "expected": -50.99999627335377}, {"input": [-51.0, -63.0], "expected": -50.99999385580652}, {"input": [-51.0, -62.5], "expected": -50.99998986995771}, {"input": [-51.0, -62.0], "expected": -50.99998329843868}, {"input": [-51.0, -61.5], "expected": -50.99997246392977}, {"input": [-51.0, -61.0], "expected": -50.99995460110078}, {"input": [-51.0, -60.5], "expected": -50.99992515097137}, {"input": [-51.0, -60.0], "expected": -50.99987659781028}, {"input": [-51.0, -59.5], "expected": -50.99979655232787}, {"input": [-51.0, -59.0], "expected": -50.9996645936271}, {"input": [-51.0, -58.5], "expected": -50.99944706852464}, {"input": [-51.0, -58.0], "expected": -50.99908853354623}, {"input": [-51.0, -57.5], "expected": -50.99849768984024}, {"input": [-51.0, -57.0], "expected": -50.99752431486227}, {"input": [-51.0, -56.5], "expected": -50.99592155672943}, {"input": [-51.0, -56.0], "expected": -50.99328465151088}, {"input": [-51.0, -55.5], "expected": -50.9889522551514}, {"input": [-51.0, -55.0], "expected": -50.98185007208219}, {"input": [-51.0, -54.5], "expected": -50.97024958172738}, {"input": [-51.0, -54.0], "expected": -50.951412648426256}, {"input": [-51.0, -53.5], "expected": -50.92111026570745}, {"input": [-51.0, -53.0], "expected": -50.87307198895703}, {"input": [-51.0, -52.5], "expected": -50.79858672201725}, {"input": [-51.0, -52.0], "expected": -50.68673831248178}, {"input": [-51.0, -51.5], "expected": -50.52592301581989}, {"input": [-51.0, -51.0], "expected": -50.30685281944005}, {"input": [-51.0, -50.5], "expected": -50.02592301581989}, {"input": [-51.0, -50.0], "expected": -49.68673831248178}, {"input": [-51.0, -49.5], "expected": -49.29858672201725}, {"input": [-51.0, -49.0], "expected": -48.87307198895703}, {"input": [-51.0, -48.5], "expected": -48.42111026570745}, {"input": [-51.0, -48.0], "expected": -47.951412648426256}, {"input": [-51.0, -47.5], "expected": -47.47024958172738}, {"input": [-51.0, -47.0], "expected": -46.98185007208219}, {"input": [-51.0, -46.5], "expected": -46.4889522551514}, {"input": [-51.0, -46.0], "expected": -45.99328465151088}, {"input": [-51.0, -45.5], "expected": -45.49592155672943}, {"input": [-51.0, -45.0], "expected": -44.99752431486227}, {"input": [-51.0, -44.5], "expected": -44.49849768984024}, {"input": [-51.0, -44.0], "expected": -43.99908853354623}, {"input": [-51.0, -43.5], "expected": -43.49944706852464}, {"input": [-51.0, -43.0], "expected": -42.9996645936271}, {"input": [-51.0, -42.5], "expected": -42.49979655232787}, {"input": [-51.0, -42.0], "expected": -41.99987659781028}, {"input": [-51.0, -41.5], "expected": -41.49992515097137}, {"input": [-51.0, -41.0], "expected": -40.99995460110078}, {"input": [-51.0, -40.5], "expected": -40.49997246392977}, {"input": [-51.0, -40.0], "expected": -39.99998329843868}, {"input": [-51.0, -39.5], "expected": -39.49998986995771}, {"input": [-51.0, -39.0], "expected": -38.99999385580652}, {"input": [-51.0, -38.5], "expected": -38.49999627335377}, {"input": [-51.0, -38.0], "expected": -37.99999773967315}, {"input": [-51.0, -37.5], "expected": -37.499998629041855}, {"input": [-51.0, -37.0], "expected": -36.999999168471625}, {"input": [-51.0, -36.5], "expected": -36.49999949565247}, {"input": [-51.0, -36.0], "expected": -35.999999694097724}, {"input": [-51.0, -35.5], "expected": -35.49999981446088}, {"input": [-51.0, -35.0], "expected": -34.99999988746483}, {"input": [-51.0, -34.5], "expected": -34.49999993174397}, {"input": [-51.0, -34.0], "expected": -33.999999958600625}, {"input": [-51.0, -33.5], "expected": -33.49999997489001}, {"input": [-51.0, -33.0], "expected": -32.99999998477002}, {"input": [-51.0, -32.5], "expected": -32.499999990762554}, {"input": [-51.0, -32.0], "expected": -31.999999994397204}, {"input": [-51.0, -31.5], "expected": -31.499999996601733}, {"input": [-51.0, -31.0], "expected": -30.999999997938847}, {"input": [-51.0, -30.5], "expected": -30.499999998749846}, {"input": [-51.0, -30.0], "expected": -29.999999999241744}, {"input": [-51.0, -29.5], "expected": -29.499999999540094}, {"input": [-51.0, -29.0], "expected": -28.99999999972105}, {"input": [-51.0, -28.5], "expected": -28.49999999983081}, {"input": [-51.0, -28.0], "expected": -27.99999999989738}, {"input": [-51.0, -27.5], "expected": -27.49999999993776}, {"input": [-51.0, -27.0], "expected": -26.99999999996225}, {"input": [-51.0, -26.5], "expected": -26.499999999977103}, {"input": [-51.0, -26.0], "expected": -25.999999999986112}, {"input": [-51.0, -25.5], "expected": -25.499999999991577}, {"input": [-51.0, -25.0], "expected": -24.99999999999489}, {"input": [-51.0, -24.5], "expected": -24.499999999996902}, {"input": [-51.0, -24.0], "expected": -23.99999999999812}, {"input": [-51.0, -23.5], "expected": -23.49999999999886}, {"input": [-51.0, -23.0], "expected": -22.999999999999307}, {"input": [-51.0, -22.5], "expected": -22.49999999999958}, {"input": [-51.0, -22.0], "expected": -21.999999999999744}, {"input": [-51.0, -21.5], "expected": -21.499999999999847}, {"input": [-51.0, -21.0], "expected": -20.999999999999908}, {"input": [-51.0, -20.5], "expected": -20.499999999999943}, {"input": [-51.0, -20.0], "expected": -19.999999999999964}, {"input": [-51.0, -19.5], "expected": -19.49999999999998}, {"input": [-51.0, -19.0], "expected": -18.999999999999986}, {"input": [-51.0, -18.5], "expected": -18.499999999999993}, {"input": [-51.0, -18.0], "expected": -17.999999999999996}, {"input": [-51.0, -17.5], "expected": -17.499999999999996}, {"input": [-51.0, -17.0], "expected": -17.0}, {"input": [-51.0, -16.5], "expected": -16.5}, {"input": [-51.0, -16.0], "expected": -16.0}, {"input": [-51.0, -15.5], "expected": -15.5}, {"input": [-51.0, -15.0], "expected": -15.0}, {"input": [-51.0, -14.5], "expected": -14.5}, {"input": [-51.0, -14.0], "expected": -14.0}, {"input": [-51.0, -13.5], "expected": -13.5}, {"input": [-51.0, -13.0], "expected": -13.0}, {"input": [-51.0, -12.5], "expected": -12.5}, {"input": [-51.0, -12.0], "expected": -12.0}, {"input": [-51.0, -11.5], "expected": -11.5}, {"input": [-51.0, -11.0], "expected": -11.0}, {"input": [-51.0, -10.5], "expected": -10.5}, {"input": [-51.0, -10.0], "expected": -10.0}, {"input": [-51.0, -9.5], "expected": -9.5}, {"input": [-51.0, -9.0], "expected": -9.0}, {"input": [-51.0, -8.5], "expected": -8.5}, {"input": [-51.0, -8.0], "expected": -8.0}, {"input": [-51.0, -7.5], "expected": -7.5}, {"input": [-51.0, -7.0], "expected": -7.0}, {"input": [-51.0, -6.5], "expected": -6.5}, {"input": [-51.0, -6.0], "expected": -6.0}, {"input": [-51.0, -5.5], "expected": -5.5}, {"input": [-51.0, -5.0], "expected": -5.0}, {"input": [-51.0, -4.5], "expected": -4.5}, {"input": [-51.0, -4.0], "expected": -4.0}, {"input": [-51.0, -3.5], "expected": -3.5}, {"input": [-51.0, -3.0], "expected": -3.0}, {"input": [-51.0, -2.5], "expected": -2.5}, {"input": [-51.0, -2.0], "expected": -2.0}, {"input": [-51.0, -1.5], "expected": -1.5}, {"input": [-51.0, -1.0], "expected": -1.0}, {"input": [-51.0, -0.5], "expected": -0.5}, {"input": [-51.0, 0.0], "expected": 7.095474162284704e-23}, {"input": [-51.0, 0.5], "expected": 0.5}, {"input": [-51.0, 1.0], "expected": 1.0}, {"input": [-51.0, 1.5], "expected": 1.5}, {"input": [-51.0, 2.0], "expected": 2.0}, {"input": [-51.0, 2.5], "expected": 2.5}, {"input": [-51.0, 3.0], "expected": 3.0}, {"input": [-51.0, 3.5], "expected": 3.5}, {"input": [-51.0, 4.0], "expected": 4.0}, {"input": [-51.0, 4.5], "expected": 4.5}, {"input": [-51.0, 5.0], "expected": 5.0}, {"input": [-51.0, 5.5], "expected": 5.5}, {"input": [-51.0, 6.0], "expected": 6.0}, {"input": [-51.0, 6.5], "expected": 6.5}, {"input": [-51.0, 7.0], "expected": 7.0}, {"input": [-51.0, 7.5], "expected": 7.5}, {"input": [-51.0, 8.0], "expected": 8.0}, {"input": [-51.0, 8.5], "expected": 8.5}, {"input": [-51.0, 9.0], "expected": 9.0}, {"input": [-51.0, 9.5], "expected": 9.5}, {"input": [-51.0, 10.0], "expected": 10.0}, {"input": [-51.0, 10.5], "expected": 10.5}, {"input": [-51.0, 11.0], "expected": 11.0}, {"input": [-51.0, 11.5], "expected": 11.5}, {"input": [-51.0, 12.0], "expected": 12.0}, {"input": [-51.0, 12.5], "expected": 12.5}, {"input": [-51.0, 13.0], "expected": 13.0}, {"input": [-51.0, 13.5], "expected": 13.5}, {"input": [-51.0, 14.0], "expected": 14.0}, {"input": [-51.0, 14.5], "expected": 14.5}, {"input": [-51.0, 15.0], "expected": 15.0}, {"input": [-51.0, 15.5], "expected": 15.5}, {"input": [-51.0, 16.0], "expected": 16.0}, {"input": [-51.0, 16.5], "expected": 16.5}, {"input": [-51.0, 17.0], "expected": 17.0}, {"input": [-51.0, 17.5], "expected": 17.5}, {"input": [-51.0, 18.0], "expected": 18.0}, {"input": [-51.0, 18.5], "expected": 18.5}, {"input": [-51.0, 19.0], "expected": 19.0}, {"input": [-51.0, 19.5], "expected": 19.5}, {"input": [-51.0, 20.0], "expected": 20.0}, {"input": [-51.0, 20.5], "expected": 20.5}, {"input": [-51.0, 21.0], "expected": 21.0}, {"input": [-51.0, 21.5], "expected": 21.5}, {"input": [-51.0, 22.0], "expected": 22.0}, {"input": [-51.0, 22.5], "expected": 22.5}, {"input": [-51.0, 23.0], "expected": 23.0}, {"input": [-51.0, 23.5], "expected": 23.5}, {"input": [-51.0, 24.0], "expected": 24.0}, {"input": [-51.0, 24.5], "expected": 24.5}, {"input": [-51.0, 25.0], "expected": 25.0}, {"input": [-51.0, 25.5], "expected": 25.5}, {"input": [-51.0, 26.0], "expected": 26.0}, {"input": [-51.0, 26.5], "expected": 26.5}, {"input": [-51.0, 27.0], "expected": 27.0}, {"input": [-51.0, 27.5], "expected": 27.5}, {"input": [-51.0, 28.0], "expected": 28.0}, {"input": [-51.0, 28.5], "expected": 28.5}, {"input": [-51.0, 29.0], "expected": 29.0}, {"input": [-51.0, 29.5], "expected": 29.5}, {"input": [-51.0, 30.0], "expected": 30.0}, {"input": [-51.0, 30.5], "expected": 30.5}, {"input": [-51.0, 31.0], "expected": 31.0}, {"input": [-51.0, 31.5], "expected": 31.5}, {"input": [-51.0, 32.0], "expected": 32.0}, {"input": [-51.0, 32.5], "expected": 32.5}, {"input": [-51.0, 33.0], "expected": 33.0}, {"input": [-51.0, 33.5], "expected": 33.5}, {"input": [-51.0, 34.0], "expected": 34.0}, {"input": [-51.0, 34.5], "expected": 34.5}, {"input": [-51.0, 35.0], "expected": 35.0}, {"input": [-51.0, 35.5], "expected": 35.5}, {"input": [-51.0, 36.0], "expected": 36.0}, {"input": [-51.0, 36.5], "expected": 36.5}, {"input": [-51.0, 37.0], "expected": 37.0}, {"input": [-51.0, 37.5], "expected": 37.5}, {"input": [-51.0, 38.0], "expected": 38.0}, {"input": [-51.0, 38.5], "expected": 38.5}, {"input": [-51.0, 39.0], "expected": 39.0}, {"input": [-51.0, 39.5], "expected": 39.5}, {"input": [-51.0, 40.0], "expected": 40.0}, {"input": [-51.0, 40.5], "expected": 40.5}, {"input": [-51.0, 41.0], "expected": 41.0}, {"input": [-51.0, 41.5], "expected": 41.5}, {"input": [-51.0, 42.0], "expected": 42.0}, {"input": [-51.0, 42.5], "expected": 42.5}, {"input": [-51.0, 43.0], "expected": 43.0}, {"input": [-51.0, 43.5], "expected": 43.5}, {"input": [-51.0, 44.0], "expected": 44.0}, {"input": [-51.0, 44.5], "expected": 44.5}, {"input": [-51.0, 45.0], "expected": 45.0}, {"input": [-51.0, 45.5], "expected": 45.5}, {"input": [-51.0, 46.0], "expected": 46.0}, {"input": [-51.0, 46.5], "expected": 46.5}, {"input": [-51.0, 47.0], "expected": 47.0}, {"input": [-51.0, 47.5], "expected": 47.5}, {"input": [-51.0, 48.0], "expected": 48.0}, {"input": [-51.0, 48.5], "expected": 48.5}, {"input": [-51.0, 49.0], "expected": 49.0}, {"input": [-51.0, 49.5], "expected": 49.5}, {"input": [-51.0, 50.0], "expected": 50.0}, {"input": [-51.0, 50.5], "expected": 50.5}, {"input": [-51.0, 51.0], "expected": 51.0}, {"input": [-51.0, 51.5], "expected": 51.5}, {"input": [-51.0, 52.0], "expected": 52.0}, {"input": [-51.0, 52.5], "expected": 52.5}, {"input": [-51.0, 53.0], "expected": 53.0}, {"input": [-51.0, 53.5], "expected": 53.5}, {"input": [-51.0, 54.0], "expected": 54.0}, {"input": [-51.0, 54.5], "expected": 54.5}, {"input": [-51.0, 55.0], "expected": 55.0}, {"input": [-51.0, 55.5], "expected": 55.5}, {"input": [-51.0, 56.0], "expected": 56.0}, {"input": [-51.0, 56.5], "expected": 56.5}, {"input": [-51.0, 57.0], "expected": 57.0}, {"input": [-51.0, 57.5], "expected": 57.5}, {"input": [-51.0, 58.0], "expected": 58.0}, {"input": [-51.0, 58.5], "expected": 58.5}, {"input": [-51.0, 59.0], "expected": 59.0}, {"input": [-51.0, 59.5], "expected": 59.5}, {"input": [-51.0, 60.0], "expected": 60.0}, {"input": [-51.0, 60.5], "expected": 60.5}, {"input": [-51.0, 61.0], "expected": 61.0}, {"input": [-51.0, 61.5], "expected": 61.5}, {"input": [-51.0, 62.0], "expected": 62.0}, {"input": [-51.0, 62.5], "expected": 62.5}, {"input": [-51.0, 63.0], "expected": 63.0}, {"input": [-51.0, 63.5], "expected": 63.5}, {"input": [-51.0, 64.0], "expected": 64.0}, {"input": [-51.0, 64.5], "expected": 64.5}, {"input": [-51.0, 65.0], "expected": 65.0}, {"input": [-51.0, 65.5], "expected": 65.5}, {"input": [-51.0, 66.0], "expected": 66.0}, {"input": [-51.0, 66.5], "expected": 66.5}, {"input": [-51.0, 67.0], "expected": 67.0}, {"input": [-51.0, 67.5], "expected": 67.5}, {"input": [-51.0, 68.0], "expected": 68.0}, {"input": [-51.0, 68.5], "expected": 68.5}, {"input": [-51.0, 69.0], "expected": 69.0}, {"input": [-51.0, 69.5], "expected": 69.5}, {"input": [-51.0, 70.0], "expected": 70.0}, {"input": [-51.0, 70.5], "expected": 70.5}, {"input": [-51.0, 71.0], "expected": 71.0}, {"input": [-51.0, 71.5], "expected": 71.5}, {"input": [-51.0, 72.0], "expected": 72.0}, {"input": [-51.0, 72.5], "expected": 72.5}, {"input": [-51.0, 73.0], "expected": 73.0}, {"input": [-51.0, 73.5], "expected": 73.5}, {"input": [-51.0, 74.0], "expected": 74.0}, {"input": [-51.0, 74.5], "expected": 74.5}, {"input": [-51.0, 75.0], "expected": 75.0}, {"input": [-51.0, 75.5], "expected": 75.5}, {"input": [-51.0, 76.0], "expected": 76.0}, {"input": [-51.0, 76.5], "expected": 76.5}, {"input": [-51.0, 77.0], "expected": 77.0}, {"input": [-51.0, 77.5], "expected": 77.5}, {"input": [-51.0, 78.0], "expected": 78.0}, {"input": [-51.0, 78.5], "expected": 78.5}, {"input": [-51.0, 79.0], "expected": 79.0}, {"input": [-51.0, 79.5], "expected": 79.5}, {"input": [-51.0, 80.0], "expected": 80.0}, {"input": [-51.0, 80.5], "expected": 80.5}, {"input": [-51.0, 81.0], "expected": 81.0}, {"input": [-51.0, 81.5], "expected": 81.5}, {"input": [-51.0, 82.0], "expected": 82.0}, {"input": [-51.0, 82.5], "expected": 82.5}, {"input": [-51.0, 83.0], "expected": 83.0}, {"input": [-51.0, 83.5], "expected": 83.5}, {"input": [-51.0, 84.0], "expected": 84.0}, {"input": [-51.0, 84.5], "expected": 84.5}, {"input": [-51.0, 85.0], "expected": 85.0}, {"input": [-51.0, 85.5], "expected": 85.5}, {"input": [-51.0, 86.0], "expected": 86.0}, {"input": [-51.0, 86.5], "expected": 86.5}, {"input": [-51.0, 87.0], "expected": 87.0}, {"input": [-51.0, 87.5], "expected": 87.5}, {"input": [-51.0, 88.0], "expected": 88.0}, {"input": [-51.0, 88.5], "expected": 88.5}, {"input": [-51.0, 89.0], "expected": 89.0}, {"input": [-51.0, 89.5], "expected": 89.5}, {"input": [-51.0, 90.0], "expected": 90.0}, {"input": [-51.0, 90.5], "expected": 90.5}, {"input": [-51.0, 91.0], "expected": 91.0}, {"input": [-51.0, 91.5], "expected": 91.5}, {"input": [-51.0, 92.0], "expected": 92.0}, {"input": [-51.0, 92.5], "expected": 92.5}, {"input": [-51.0, 93.0], "expected": 93.0}, {"input": [-51.0, 93.5], "expected": 93.5}, {"input": [-51.0, 94.0], "expected": 94.0}, {"input": [-51.0, 94.5], "expected": 94.5}, {"input": [-51.0, 95.0], "expected": 95.0}, {"input": [-51.0, 95.5], "expected": 95.5}, {"input": [-51.0, 96.0], "expected": 96.0}, {"input": [-51.0, 96.5], "expected": 96.5}, {"input": [-51.0, 97.0], "expected": 97.0}, {"input": [-51.0, 97.5], "expected": 97.5}, {"input": [-51.0, 98.0], "expected": 98.0}, {"input": [-51.0, 98.5], "expected": 98.5}, {"input": [-51.0, 99.0], "expected": 99.0}, {"input": [-51.0, 99.5], "expected": 99.5}, {"input": [-50.5, -100.0], "expected": -50.5}, {"input": [-50.5, -99.5], "expected": -50.5}, {"input": [-50.5, -99.0], "expected": -50.5}, {"input": [-50.5, -98.5], "expected": -50.5}, {"input": [-50.5, -98.0], "expected": -50.5}, {"input": [-50.5, -97.5], "expected": -50.5}, {"input": [-50.5, -97.0], "expected": -50.5}, {"input": [-50.5, -96.5], "expected": -50.5}, {"input": [-50.5, -96.0], "expected": -50.5}, {"input": [-50.5, -95.5], "expected": -50.5}, {"input": [-50.5, -95.0], "expected": -50.5}, {"input": [-50.5, -94.5], "expected": -50.5}, {"input": [-50.5, -94.0], "expected": -50.5}, {"input": [-50.5, -93.5], "expected": -50.5}, {"input": [-50.5, -93.0], "expected": -50.5}, {"input": [-50.5, -92.5], "expected": -50.5}, {"input": [-50.5, -92.0], "expected": -50.5}, {"input": [-50.5, -91.5], "expected": -50.5}, {"input": [-50.5, -91.0], "expected": -50.5}, {"input": [-50.5, -90.5], "expected": -50.5}, {"input": [-50.5, -90.0], "expected": -50.5}, {"input": [-50.5, -89.5], "expected": -50.5}, {"input": [-50.5, -89.0], "expected": -50.5}, {"input": [-50.5, -88.5], "expected": -50.5}, {"input": [-50.5, -88.0], "expected": -50.5}, {"input": [-50.5, -87.5], "expected": -50.5}, {"input": [-50.5, -87.0], "expected": -50.5}, {"input": [-50.5, -86.5], "expected": -50.5}, {"input": [-50.5, -86.0], "expected": -50.5}, {"input": [-50.5, -85.5], "expected": -50.5}, {"input": [-50.5, -85.0], "expected": -50.5}, {"input": [-50.5, -84.5], "expected": -50.5}, {"input": [-50.5, -84.0], "expected": -50.5}, {"input": [-50.5, -83.5], "expected": -50.49999999999999}, {"input": [-50.5, -83.0], "expected": -50.49999999999999}, {"input": [-50.5, -82.5], "expected": -50.499999999999986}, {"input": [-50.5, -82.0], "expected": -50.49999999999998}, {"input": [-50.5, -81.5], "expected": -50.499999999999964}, {"input": [-50.5, -81.0], "expected": -50.49999999999994}, {"input": [-50.5, -80.5], "expected": -50.49999999999991}, {"input": [-50.5, -80.0], "expected": -50.499999999999844}, {"input": [-50.5, -79.5], "expected": -50.499999999999744}, {"input": [-50.5, -79.0], "expected": -50.49999999999958}, {"input": [-50.5, -78.5], "expected": -50.49999999999931}, {"input": [-50.5, -78.0], "expected": -50.49999999999886}, {"input": [-50.5, -77.5], "expected": -50.49999999999812}, {"input": [-50.5, -77.0], "expected": -50.4999999999969}, {"input": [-50.5, -76.5], "expected": -50.49999999999489}, {"input": [-50.5, -76.0], "expected": -50.49999999999158}, {"input": [-50.5, -75.5], "expected": -50.49999999998611}, {"input": [-50.5, -75.0], "expected": -50.4999999999771}, {"input": [-50.5, -74.5], "expected": -50.49999999996225}, {"input": [-50.5, -74.0], "expected": -50.49999999993776}, {"input": [-50.5, -73.5], "expected": -50.49999999989738}, {"input": [-50.5, -73.0], "expected": -50.49999999983081}, {"input": [-50.5, -72.5], "expected": -50.499999999721055}, {"input": [-50.5, -72.0], "expected": -50.499999999540094}, {"input": [-50.5, -71.5], "expected": -50.499999999241744}, {"input": [-50.5, -71.0], "expected": -50.49999999874985}, {"input": [-50.5, -70.5], "expected": -50.49999999793884}, {"input": [-50.5, -70.0], "expected": -50.49999999660173}, {"input": [-50.5, -69.5], "expected": -50.49999999439721}, {"input": [-50.5, -69.0], "expected": -50.499999990762554}, {"input": [-50.5, -68.5], "expected": -50.49999998477002}, {"input": [-50.5, -68.0], "expected": -50.49999997489001}, {"input": [-50.5, -67.5], "expected": -50.499999958600625}, {"input": [-50.5, -67.0], "expected": -50.49999993174397}, {"input": [-50.5, -66.5], "expected": -50.49999988746483}, {"input": [-50.5, -66.0], "expected": -50.49999981446088}, {"input": [-50.5, -65.5], "expected": -50.499999694097724}, {"input": [-50.5, -65.0], "expected": -50.49999949565247}, {"input": [-50.5, -64.5], "expected": -50.499999168471625}, {"input": [-50.5, -64.0], "expected": -50.499998629041855}, {"input": [-50.5, -63.5], "expected": -50.49999773967315}, {"input": [-50.5, -63.0], "expected": -50.49999627335377}, {"input": [-50.5, -62.5], "expected": -50.49999385580652}, {"input": [-50.5, -62.0], "expected": -50.49998986995771}, {"input": [-50.5, -61.5], "expected": -50.49998329843868}, {"input": [-50.5, -61.0], "expected": -50.49997246392977}, {"input": [-50.5, -60.5], "expected": -50.49995460110078}, {"input": [-50.5, -60.0], "expected": -50.49992515097137}, {"input": [-50.5, -59.5], "expected": -50.49987659781028}, {"input": [-50.5, -59.0], "expected": -50.49979655232787}, {"input": [-50.5, -58.5], "expected": -50.4996645936271}, {"input": [-50.5, -58.0], "expected": -50.49944706852464}, {"input": [-50.5, -57.5], "expected": -50.49908853354623}, {"input": [-50.5, -57.0], "expected": -50.49849768984024}, {"input": [-50.5, -56.5], "expected": -50.49752431486227}, {"input": [-50.5, -56.0], "expected": -50.49592155672943}, {"input": [-50.5, -55.5], "expected": -50.49328465151088}, {"input": [-50.5, -55.0], "expected": -50.4889522551514}, {"input": [-50.5, -54.5], "expected": -50.48185007208219}, {"input": [-50.5, -54.0], "expected": -50.47024958172738}, {"input": [-50.5, -53.5], "expected": -50.451412648426256}, {"input": [-50.5, -53.0], "expected": -50.42111026570745}, {"input": [-50.5, -52.5], "expected": -50.37307198895703}, {"input": [-50.5, -52.0], "expected": -50.29858672201725}, {"input": [-50.5, -51.5], "expected": -50.18673831248178}, {"input": [-50.5, -51.0], "expected": -50.02592301581989}, {"input": [-50.5, -50.5], "expected": -49.80685281944005}, {"input": [-50.5, -50.0], "expected": -49.52592301581989}, {"input": [-50.5, -49.5], "expected": -49.18673831248178}, {"input": [-50.5, -49.0], "expected": -48.79858672201725}, {"input": [-50.5, -48.5], "expected": -48.37307198895703}, {"input": [-50.5, -48.0], "expected": -47.92111026570745}, {"input": [-50.5, -47.5], "expected": -47.451412648426256}, {"input": [-50.5, -47.0], "expected": -46.97024958172738}, {"input": [-50.5, -46.5], "expected": -46.48185007208219}, {"input": [-50.5, -46.0], "expected": -45.9889522551514}, {"input": [-50.5, -45.5], "expected": -45.49328465151088}, {"input": [-50.5, -45.0], "expected": -44.99592155672943}, {"input": [-50.5, -44.5], "expected": -44.49752431486227}, {"input": [-50.5, -44.0], "expected": -43.99849768984024}, {"input": [-50.5, -43.5], "expected": -43.49908853354623}, {"input": [-50.5, -43.0], "expected": -42.99944706852464}, {"input": [-50.5, -42.5], "expected": -42.4996645936271}, {"input": [-50.5, -42.0], "expected": -41.99979655232787}, {"input": [-50.5, -41.5], "expected": -41.49987659781028}, {"input": [-50.5, -41.0], "expected": -40.99992515097137}, {"input": [-50.5, -40.5], "expected": -40.49995460110078}, {"input": [-50.5, -40.0], "expected": -39.99997246392977}, {"input": [-50.5, -39.5], "expected": -39.49998329843868}, {"input": [-50.5, -39.0], "expected": -38.99998986995771}, {"input": [-50.5, -38.5], "expected": -38.49999385580652}, {"input": [-50.5, -38.0], "expected": -37.99999627335377}, {"input": [-50.5, -37.5], "expected": -37.49999773967315}, {"input": [-50.5, -37.0], "expected": -36.999998629041855}, {"input": [-50.5, -36.5], "expected": -36.499999168471625}, {"input": [-50.5, -36.0], "expected": -35.99999949565247}, {"input": [-50.5, -35.5], "expected": -35.499999694097724}, {"input": [-50.5, -35.0], "expected": -34.99999981446088}, {"input": [-50.5, -34.5], "expected": -34.49999988746483}, {"input": [-50.5, -34.0], "expected": -33.99999993174397}, {"input": [-50.5, -33.5], "expected": -33.499999958600625}, {"input": [-50.5, -33.0], "expected": -32.99999997489001}, {"input": [-50.5, -32.5], "expected": -32.49999998477002}, {"input": [-50.5, -32.0], "expected": -31.99999999076255}, {"input": [-50.5, -31.5], "expected": -31.499999994397204}, {"input": [-50.5, -31.0], "expected": -30.999999996601733}, {"input": [-50.5, -30.5], "expected": -30.499999997938847}, {"input": [-50.5, -30.0], "expected": -29.999999998749846}, {"input": [-50.5, -29.5], "expected": -29.499999999241744}, {"input": [-50.5, -29.0], "expected": -28.999999999540094}, {"input": [-50.5, -28.5], "expected": -28.49999999972105}, {"input": [-50.5, -28.0], "expected": -27.99999999983081}, {"input": [-50.5, -27.5], "expected": -27.49999999989738}, {"input": [-50.5, -27.0], "expected": -26.99999999993776}, {"input": [-50.5, -26.5], "expected": -26.49999999996225}, {"input": [-50.5, -26.0], "expected": -25.999999999977103}, {"input": [-50.5, -25.5], "expected": -25.499999999986112}, {"input": [-50.5, -25.0], "expected": -24.999999999991577}, {"input": [-50.5, -24.5], "expected": -24.49999999999489}, {"input": [-50.5, -24.0], "expected": -23.999999999996902}, {"input": [-50.5, -23.5], "expected": -23.49999999999812}, {"input": [-50.5, -23.0], "expected": -22.99999999999886}, {"input": [-50.5, -22.5], "expected": -22.499999999999307}, {"input": [-50.5, -22.0], "expected": -21.99999999999958}, {"input": [-50.5, -21.5], "expected": -21.499999999999744}, {"input": [-50.5, -21.0], "expected": -20.999999999999847}, {"input": [-50.5, -20.5], "expected": -20.499999999999908}, {"input": [-50.5, -20.0], "expected": -19.999999999999943}, {"input": [-50.5, -19.5], "expected": -19.499999999999964}, {"input": [-50.5, -19.0], "expected": -18.99999999999998}, {"input": [-50.5, -18.5], "expected": -18.499999999999986}, {"input": [-50.5, -18.0], "expected": -17.999999999999993}, {"input": [-50.5, -17.5], "expected": -17.499999999999996}, {"input": [-50.5, -17.0], "expected": -16.999999999999996}, {"input": [-50.5, -16.5], "expected": -16.5}, {"input": [-50.5, -16.0], "expected": -15.999999999999998}, {"input": [-50.5, -15.5], "expected": -15.5}, {"input": [-50.5, -15.0], "expected": -15.0}, {"input": [-50.5, -14.5], "expected": -14.5}, {"input": [-50.5, -14.0], "expected": -14.0}, {"input": [-50.5, -13.5], "expected": -13.5}, {"input": [-50.5, -13.0], "expected": -13.0}, {"input": [-50.5, -12.5], "expected": -12.5}, {"input": [-50.5, -12.0], "expected": -12.0}, {"input": [-50.5, -11.5], "expected": -11.5}, {"input": [-50.5, -11.0], "expected": -11.0}, {"input": [-50.5, -10.5], "expected": -10.5}, {"input": [-50.5, -10.0], "expected": -10.0}, {"input": [-50.5, -9.5], "expected": -9.5}, {"input": [-50.5, -9.0], "expected": -9.0}, {"input": [-50.5, -8.5], "expected": -8.5}, {"input": [-50.5, -8.0], "expected": -8.0}, {"input": [-50.5, -7.5], "expected": -7.5}, {"input": [-50.5, -7.0], "expected": -7.0}, {"input": [-50.5, -6.5], "expected": -6.5}, {"input": [-50.5, -6.0], "expected": -6.0}, {"input": [-50.5, -5.5], "expected": -5.5}, {"input": [-50.5, -5.0], "expected": -5.0}, {"input": [-50.5, -4.5], "expected": -4.5}, {"input": [-50.5, -4.0], "expected": -4.0}, {"input": [-50.5, -3.5], "expected": -3.5}, {"input": [-50.5, -3.0], "expected": -3.0}, {"input": [-50.5, -2.5], "expected": -2.5}, {"input": [-50.5, -2.0], "expected": -2.0}, {"input": [-50.5, -1.5], "expected": -1.5}, {"input": [-50.5, -1.0], "expected": -1.0}, {"input": [-50.5, -0.5], "expected": -0.5}, {"input": [-50.5, 0.0], "expected": 1.1698459177061964e-22}, {"input": [-50.5, 0.5], "expected": 0.5}, {"input": [-50.5, 1.0], "expected": 1.0}, {"input": [-50.5, 1.5], "expected": 1.5}, {"input": [-50.5, 2.0], "expected": 2.0}, {"input": [-50.5, 2.5], "expected": 2.5}, {"input": [-50.5, 3.0], "expected": 3.0}, {"input": [-50.5, 3.5], "expected": 3.5}, {"input": [-50.5, 4.0], "expected": 4.0}, {"input": [-50.5, 4.5], "expected": 4.5}, {"input": [-50.5, 5.0], "expected": 5.0}, {"input": [-50.5, 5.5], "expected": 5.5}, {"input": [-50.5, 6.0], "expected": 6.0}, {"input": [-50.5, 6.5], "expected": 6.5}, {"input": [-50.5, 7.0], "expected": 7.0}, {"input": [-50.5, 7.5], "expected": 7.5}, {"input": [-50.5, 8.0], "expected": 8.0}, {"input": [-50.5, 8.5], "expected": 8.5}, {"input": [-50.5, 9.0], "expected": 9.0}, {"input": [-50.5, 9.5], "expected": 9.5}, {"input": [-50.5, 10.0], "expected": 10.0}, {"input": [-50.5, 10.5], "expected": 10.5}, {"input": [-50.5, 11.0], "expected": 11.0}, {"input": [-50.5, 11.5], "expected": 11.5}, {"input": [-50.5, 12.0], "expected": 12.0}, {"input": [-50.5, 12.5], "expected": 12.5}, {"input": [-50.5, 13.0], "expected": 13.0}, {"input": [-50.5, 13.5], "expected": 13.5}, {"input": [-50.5, 14.0], "expected": 14.0}, {"input": [-50.5, 14.5], "expected": 14.5}, {"input": [-50.5, 15.0], "expected": 15.0}, {"input": [-50.5, 15.5], "expected": 15.5}, {"input": [-50.5, 16.0], "expected": 16.0}, {"input": [-50.5, 16.5], "expected": 16.5}, {"input": [-50.5, 17.0], "expected": 17.0}, {"input": [-50.5, 17.5], "expected": 17.5}, {"input": [-50.5, 18.0], "expected": 18.0}, {"input": [-50.5, 18.5], "expected": 18.5}, {"input": [-50.5, 19.0], "expected": 19.0}, {"input": [-50.5, 19.5], "expected": 19.5}, {"input": [-50.5, 20.0], "expected": 20.0}, {"input": [-50.5, 20.5], "expected": 20.5}, {"input": [-50.5, 21.0], "expected": 21.0}, {"input": [-50.5, 21.5], "expected": 21.5}, {"input": [-50.5, 22.0], "expected": 22.0}, {"input": [-50.5, 22.5], "expected": 22.5}, {"input": [-50.5, 23.0], "expected": 23.0}, {"input": [-50.5, 23.5], "expected": 23.5}, {"input": [-50.5, 24.0], "expected": 24.0}, {"input": [-50.5, 24.5], "expected": 24.5}, {"input": [-50.5, 25.0], "expected": 25.0}, {"input": [-50.5, 25.5], "expected": 25.5}, {"input": [-50.5, 26.0], "expected": 26.0}, {"input": [-50.5, 26.5], "expected": 26.5}, {"input": [-50.5, 27.0], "expected": 27.0}, {"input": [-50.5, 27.5], "expected": 27.5}, {"input": [-50.5, 28.0], "expected": 28.0}, {"input": [-50.5, 28.5], "expected": 28.5}, {"input": [-50.5, 29.0], "expected": 29.0}, {"input": [-50.5, 29.5], "expected": 29.5}, {"input": [-50.5, 30.0], "expected": 30.0}, {"input": [-50.5, 30.5], "expected": 30.5}, {"input": [-50.5, 31.0], "expected": 31.0}, {"input": [-50.5, 31.5], "expected": 31.5}, {"input": [-50.5, 32.0], "expected": 32.0}, {"input": [-50.5, 32.5], "expected": 32.5}, {"input": [-50.5, 33.0], "expected": 33.0}, {"input": [-50.5, 33.5], "expected": 33.5}, {"input": [-50.5, 34.0], "expected": 34.0}, {"input": [-50.5, 34.5], "expected": 34.5}, {"input": [-50.5, 35.0], "expected": 35.0}, {"input": [-50.5, 35.5], "expected": 35.5}, {"input": [-50.5, 36.0], "expected": 36.0}, {"input": [-50.5, 36.5], "expected": 36.5}, {"input": [-50.5, 37.0], "expected": 37.0}, {"input": [-50.5, 37.5], "expected": 37.5}, {"input": [-50.5, 38.0], "expected": 38.0}, {"input": [-50.5, 38.5], "expected": 38.5}, {"input": [-50.5, 39.0], "expected": 39.0}, {"input": [-50.5, 39.5], "expected": 39.5}, {"input": [-50.5, 40.0], "expected": 40.0}, {"input": [-50.5, 40.5], "expected": 40.5}, {"input": [-50.5, 41.0], "expected": 41.0}, {"input": [-50.5, 41.5], "expected": 41.5}, {"input": [-50.5, 42.0], "expected": 42.0}, {"input": [-50.5, 42.5], "expected": 42.5}, {"input": [-50.5, 43.0], "expected": 43.0}, {"input": [-50.5, 43.5], "expected": 43.5}, {"input": [-50.5, 44.0], "expected": 44.0}, {"input": [-50.5, 44.5], "expected": 44.5}, {"input": [-50.5, 45.0], "expected": 45.0}, {"input": [-50.5, 45.5], "expected": 45.5}, {"input": [-50.5, 46.0], "expected": 46.0}, {"input": [-50.5, 46.5], "expected": 46.5}, {"input": [-50.5, 47.0], "expected": 47.0}, {"input": [-50.5, 47.5], "expected": 47.5}, {"input": [-50.5, 48.0], "expected": 48.0}, {"input": [-50.5, 48.5], "expected": 48.5}, {"input": [-50.5, 49.0], "expected": 49.0}, {"input": [-50.5, 49.5], "expected": 49.5}, {"input": [-50.5, 50.0], "expected": 50.0}, {"input": [-50.5, 50.5], "expected": 50.5}, {"input": [-50.5, 51.0], "expected": 51.0}, {"input": [-50.5, 51.5], "expected": 51.5}, {"input": [-50.5, 52.0], "expected": 52.0}, {"input": [-50.5, 52.5], "expected": 52.5}, {"input": [-50.5, 53.0], "expected": 53.0}, {"input": [-50.5, 53.5], "expected": 53.5}, {"input": [-50.5, 54.0], "expected": 54.0}, {"input": [-50.5, 54.5], "expected": 54.5}, {"input": [-50.5, 55.0], "expected": 55.0}, {"input": [-50.5, 55.5], "expected": 55.5}, {"input": [-50.5, 56.0], "expected": 56.0}, {"input": [-50.5, 56.5], "expected": 56.5}, {"input": [-50.5, 57.0], "expected": 57.0}, {"input": [-50.5, 57.5], "expected": 57.5}, {"input": [-50.5, 58.0], "expected": 58.0}, {"input": [-50.5, 58.5], "expected": 58.5}, {"input": [-50.5, 59.0], "expected": 59.0}, {"input": [-50.5, 59.5], "expected": 59.5}, {"input": [-50.5, 60.0], "expected": 60.0}, {"input": [-50.5, 60.5], "expected": 60.5}, {"input": [-50.5, 61.0], "expected": 61.0}, {"input": [-50.5, 61.5], "expected": 61.5}, {"input": [-50.5, 62.0], "expected": 62.0}, {"input": [-50.5, 62.5], "expected": 62.5}, {"input": [-50.5, 63.0], "expected": 63.0}, {"input": [-50.5, 63.5], "expected": 63.5}, {"input": [-50.5, 64.0], "expected": 64.0}, {"input": [-50.5, 64.5], "expected": 64.5}, {"input": [-50.5, 65.0], "expected": 65.0}, {"input": [-50.5, 65.5], "expected": 65.5}, {"input": [-50.5, 66.0], "expected": 66.0}, {"input": [-50.5, 66.5], "expected": 66.5}, {"input": [-50.5, 67.0], "expected": 67.0}, {"input": [-50.5, 67.5], "expected": 67.5}, {"input": [-50.5, 68.0], "expected": 68.0}, {"input": [-50.5, 68.5], "expected": 68.5}, {"input": [-50.5, 69.0], "expected": 69.0}, {"input": [-50.5, 69.5], "expected": 69.5}, {"input": [-50.5, 70.0], "expected": 70.0}, {"input": [-50.5, 70.5], "expected": 70.5}, {"input": [-50.5, 71.0], "expected": 71.0}, {"input": [-50.5, 71.5], "expected": 71.5}, {"input": [-50.5, 72.0], "expected": 72.0}, {"input": [-50.5, 72.5], "expected": 72.5}, {"input": [-50.5, 73.0], "expected": 73.0}, {"input": [-50.5, 73.5], "expected": 73.5}, {"input": [-50.5, 74.0], "expected": 74.0}, {"input": [-50.5, 74.5], "expected": 74.5}, {"input": [-50.5, 75.0], "expected": 75.0}, {"input": [-50.5, 75.5], "expected": 75.5}, {"input": [-50.5, 76.0], "expected": 76.0}, {"input": [-50.5, 76.5], "expected": 76.5}, {"input": [-50.5, 77.0], "expected": 77.0}, {"input": [-50.5, 77.5], "expected": 77.5}, {"input": [-50.5, 78.0], "expected": 78.0}, {"input": [-50.5, 78.5], "expected": 78.5}, {"input": [-50.5, 79.0], "expected": 79.0}, {"input": [-50.5, 79.5], "expected": 79.5}, {"input": [-50.5, 80.0], "expected": 80.0}, {"input": [-50.5, 80.5], "expected": 80.5}, {"input": [-50.5, 81.0], "expected": 81.0}, {"input": [-50.5, 81.5], "expected": 81.5}, {"input": [-50.5, 82.0], "expected": 82.0}, {"input": [-50.5, 82.5], "expected": 82.5}, {"input": [-50.5, 83.0], "expected": 83.0}, {"input": [-50.5, 83.5], "expected": 83.5}, {"input": [-50.5, 84.0], "expected": 84.0}, {"input": [-50.5, 84.5], "expected": 84.5}, {"input": [-50.5, 85.0], "expected": 85.0}, {"input": [-50.5, 85.5], "expected": 85.5}, {"input": [-50.5, 86.0], "expected": 86.0}, {"input": [-50.5, 86.5], "expected": 86.5}, {"input": [-50.5, 87.0], "expected": 87.0}, {"input": [-50.5, 87.5], "expected": 87.5}, {"input": [-50.5, 88.0], "expected": 88.0}, {"input": [-50.5, 88.5], "expected": 88.5}, {"input": [-50.5, 89.0], "expected": 89.0}, {"input": [-50.5, 89.5], "expected": 89.5}, {"input": [-50.5, 90.0], "expected": 90.0}, {"input": [-50.5, 90.5], "expected": 90.5}, {"input": [-50.5, 91.0], "expected": 91.0}, {"input": [-50.5, 91.5], "expected": 91.5}, {"input": [-50.5, 92.0], "expected": 92.0}, {"input": [-50.5, 92.5], "expected": 92.5}, {"input": [-50.5, 93.0], "expected": 93.0}, {"input": [-50.5, 93.5], "expected": 93.5}, {"input": [-50.5, 94.0], "expected": 94.0}, {"input": [-50.5, 94.5], "expected": 94.5}, {"input": [-50.5, 95.0], "expected": 95.0}, {"input": [-50.5, 95.5], "expected": 95.5}, {"input": [-50.5, 96.0], "expected": 96.0}, {"input": [-50.5, 96.5], "expected": 96.5}, {"input": [-50.5, 97.0], "expected": 97.0}, {"input": [-50.5, 97.5], "expected": 97.5}, {"input": [-50.5, 98.0], "expected": 98.0}, {"input": [-50.5, 98.5], "expected": 98.5}, {"input": [-50.5, 99.0], "expected": 99.0}, {"input": [-50.5, 99.5], "expected": 99.5}, {"input": [-50.0, -100.0], "expected": -50.0}, {"input": [-50.0, -99.5], "expected": -50.0}, {"input": [-50.0, -99.0], "expected": -50.0}, {"input": [-50.0, -98.5], "expected": -50.0}, {"input": [-50.0, -98.0], "expected": -50.0}, {"input": [-50.0, -97.5], "expected": -50.0}, {"input": [-50.0, -97.0], "expected": -50.0}, {"input": [-50.0, -96.5], "expected": -50.0}, {"input": [-50.0, -96.0], "expected": -50.0}, {"input": [-50.0, -95.5], "expected": -50.0}, {"input": [-50.0, -95.0], "expected": -50.0}, {"input": [-50.0, -94.5], "expected": -50.0}, {"input": [-50.0, -94.0], "expected": -50.0}, {"input": [-50.0, -93.5], "expected": -50.0}, {"input": [-50.0, -93.0], "expected": -50.0}, {"input": [-50.0, -92.5], "expected": -50.0}, {"input": [-50.0, -92.0], "expected": -50.0}, {"input": [-50.0, -91.5], "expected": -50.0}, {"input": [-50.0, -91.0], "expected": -50.0}, {"input": [-50.0, -90.5], "expected": -50.0}, {"input": [-50.0, -90.0], "expected": -50.0}, {"input": [-50.0, -89.5], "expected": -50.0}, {"input": [-50.0, -89.0], "expected": -50.0}, {"input": [-50.0, -88.5], "expected": -50.0}, {"input": [-50.0, -88.0], "expected": -50.0}, {"input": [-50.0, -87.5], "expected": -50.0}, {"input": [-50.0, -87.0], "expected": -50.0}, {"input": [-50.0, -86.5], "expected": -50.0}, {"input": [-50.0, -86.0], "expected": -50.0}, {"input": [-50.0, -85.5], "expected": -50.0}, {"input": [-50.0, -85.0], "expected": -50.0}, {"input": [-50.0, -84.5], "expected": -50.0}, {"input": [-50.0, -84.0], "expected": -50.0}, {"input": [-50.0, -83.5], "expected": -50.0}, {"input": [-50.0, -83.0], "expected": -49.99999999999999}, {"input": [-50.0, -82.5], "expected": -49.99999999999999}, {"input": [-50.0, -82.0], "expected": -49.999999999999986}, {"input": [-50.0, -81.5], "expected": -49.99999999999998}, {"input": [-50.0, -81.0], "expected": -49.999999999999964}, {"input": [-50.0, -80.5], "expected": -49.99999999999994}, {"input": [-50.0, -80.0], "expected": -49.99999999999991}, {"input": [-50.0, -79.5], "expected": -49.999999999999844}, {"input": [-50.0, -79.0], "expected": -49.999999999999744}, {"input": [-50.0, -78.5], "expected": -49.99999999999958}, {"input": [-50.0, -78.0], "expected": -49.99999999999931}, {"input": [-50.0, -77.5], "expected": -49.99999999999886}, {"input": [-50.0, -77.0], "expected": -49.99999999999812}, {"input": [-50.0, -76.5], "expected": -49.9999999999969}, {"input": [-50.0, -76.0], "expected": -49.99999999999489}, {"input": [-50.0, -75.5], "expected": -49.99999999999158}, {"input": [-50.0, -75.0], "expected": -49.99999999998611}, {"input": [-50.0, -74.5], "expected": -49.9999999999771}, {"input": [-50.0, -74.0], "expected": -49.99999999996225}, {"input": [-50.0, -73.5], "expected": -49.99999999993776}, {"input": [-50.0, -73.0], "expected": -49.99999999989738}, {"input": [-50.0, -72.5], "expected": -49.99999999983081}, {"input": [-50.0, -72.0], "expected": -49.999999999721055}, {"input": [-50.0, -71.5], "expected": -49.999999999540094}, {"input": [-50.0, -71.0], "expected": -49.999999999241744}, {"input": [-50.0, -70.5], "expected": -49.99999999874985}, {"input": [-50.0, -70.0], "expected": -49.99999999793884}, {"input": [-50.0, -69.5], "expected": -49.99999999660173}, {"input": [-50.0, -69.0], "expected": -49.99999999439721}, {"input": [-50.0, -68.5], "expected": -49.999999990762554}, {"input": [-50.0, -68.0], "expected": -49.99999998477002}, {"input": [-50.0, -67.5], "expected": -49.99999997489001}, {"input": [-50.0, -67.0], "expected": -49.999999958600625}, {"input": [-50.0, -66.5], "expected": -49.99999993174397}, {"input": [-50.0, -66.0], "expected": -49.99999988746483}, {"input": [-50.0, -65.5], "expected": -49.99999981446088}, {"input": [-50.0, -65.0], "expected": -49.999999694097724}, {"input": [-50.0, -64.5], "expected": -49.99999949565247}, {"input": [-50.0, -64.0], "expected": -49.999999168471625}, {"input": [-50.0, -63.5], "expected": -49.999998629041855}, {"input": [-50.0, -63.0], "expected": -49.99999773967315}, {"input": [-50.0, -62.5], "expected": -49.99999627335377}, {"input": [-50.0, -62.0], "expected": -49.99999385580652}, {"input": [-50.0, -61.5], "expected": -49.99998986995771}, {"input": [-50.0, -61.0], "expected": -49.99998329843868}, {"input": [-50.0, -60.5], "expected": -49.99997246392977}, {"input": [-50.0, -60.0], "expected": -49.99995460110078}, {"input": [-50.0, -59.5], "expected": -49.99992515097137}, {"input": [-50.0, -59.0], "expected": -49.99987659781028}, {"input": [-50.0, -58.5], "expected": -49.99979655232787}, {"input": [-50.0, -58.0], "expected": -49.9996645936271}, {"input": [-50.0, -57.5], "expected": -49.99944706852464}, {"input": [-50.0, -57.0], "expected": -49.99908853354623}, {"input": [-50.0, -56.5], "expected": -49.99849768984024}, {"input": [-50.0, -56.0], "expected": -49.99752431486227}, {"input": [-50.0, -55.5], "expected": -49.99592155672943}, {"input": [-50.0, -55.0], "expected": -49.99328465151088}, {"input": [-50.0, -54.5], "expected": -49.9889522551514}, {"input": [-50.0, -54.0], "expected": -49.98185007208219}, {"input": [-50.0, -53.5], "expected": -49.97024958172738}, {"input": [-50.0, -53.0], "expected": -49.951412648426256}, {"input": [-50.0, -52.5], "expected": -49.92111026570745}, {"input": [-50.0, -52.0], "expected": -49.87307198895703}, {"input": [-50.0, -51.5], "expected": -49.79858672201725}, {"input": [-50.0, -51.0], "expected": -49.68673831248178}, {"input": [-50.0, -50.5], "expected": -49.52592301581989}, {"input": [-50.0, -50.0], "expected": -49.30685281944005}, {"input": [-50.0, -49.5], "expected": -49.02592301581989}, {"input": [-50.0, -49.0], "expected": -48.68673831248178}, {"input": [-50.0, -48.5], "expected": -48.29858672201725}, {"input": [-50.0, -48.0], "expected": -47.87307198895703}, {"input": [-50.0, -47.5], "expected": -47.42111026570745}, {"input": [-50.0, -47.0], "expected": -46.951412648426256}, {"input": [-50.0, -46.5], "expected": -46.47024958172738}, {"input": [-50.0, -46.0], "expected": -45.98185007208219}, {"input": [-50.0, -45.5], "expected": -45.4889522551514}, {"input": [-50.0, -45.0], "expected": -44.99328465151088}, {"input": [-50.0, -44.5], "expected": -44.49592155672943}, {"input": [-50.0, -44.0], "expected": -43.99752431486227}, {"input": [-50.0, -43.5], "expected": -43.49849768984024}, {"input": [-50.0, -43.0], "expected": -42.99908853354623}, {"input": [-50.0, -42.5], "expected": -42.49944706852464}, {"input": [-50.0, -42.0], "expected": -41.9996645936271}, {"input": [-50.0, -41.5], "expected": -41.49979655232787}, {"input": [-50.0, -41.0], "expected": -40.99987659781028}, {"input": [-50.0, -40.5], "expected": -40.49992515097137}, {"input": [-50.0, -40.0], "expected": -39.99995460110078}, {"input": [-50.0, -39.5], "expected": -39.49997246392977}, {"input": [-50.0, -39.0], "expected": -38.99998329843868}, {"input": [-50.0, -38.5], "expected": -38.49998986995771}, {"input": [-50.0, -38.0], "expected": -37.99999385580652}, {"input": [-50.0, -37.5], "expected": -37.49999627335377}, {"input": [-50.0, -37.0], "expected": -36.99999773967315}, {"input": [-50.0, -36.5], "expected": -36.499998629041855}, {"input": [-50.0, -36.0], "expected": -35.999999168471625}, {"input": [-50.0, -35.5], "expected": -35.49999949565247}, {"input": [-50.0, -35.0], "expected": -34.999999694097724}, {"input": [-50.0, -34.5], "expected": -34.49999981446088}, {"input": [-50.0, -34.0], "expected": -33.99999988746483}, {"input": [-50.0, -33.5], "expected": -33.49999993174397}, {"input": [-50.0, -33.0], "expected": -32.999999958600625}, {"input": [-50.0, -32.5], "expected": -32.49999997489001}, {"input": [-50.0, -32.0], "expected": -31.99999998477002}, {"input": [-50.0, -31.5], "expected": -31.49999999076255}, {"input": [-50.0, -31.0], "expected": -30.999999994397204}, {"input": [-50.0, -30.5], "expected": -30.499999996601733}, {"input": [-50.0, -30.0], "expected": -29.999999997938847}, {"input": [-50.0, -29.5], "expected": -29.499999998749846}, {"input": [-50.0, -29.0], "expected": -28.999999999241744}, {"input": [-50.0, -28.5], "expected": -28.499999999540094}, {"input": [-50.0, -28.0], "expected": -27.99999999972105}, {"input": [-50.0, -27.5], "expected": -27.49999999983081}, {"input": [-50.0, -27.0], "expected": -26.99999999989738}, {"input": [-50.0, -26.5], "expected": -26.49999999993776}, {"input": [-50.0, -26.0], "expected": -25.99999999996225}, {"input": [-50.0, -25.5], "expected": -25.499999999977103}, {"input": [-50.0, -25.0], "expected": -24.999999999986112}, {"input": [-50.0, -24.5], "expected": -24.499999999991577}, {"input": [-50.0, -24.0], "expected": -23.99999999999489}, {"input": [-50.0, -23.5], "expected": -23.499999999996902}, {"input": [-50.0, -23.0], "expected": -22.99999999999812}, {"input": [-50.0, -22.5], "expected": -22.49999999999886}, {"input": [-50.0, -22.0], "expected": -21.999999999999307}, {"input": [-50.0, -21.5], "expected": -21.49999999999958}, {"input": [-50.0, -21.0], "expected": -20.999999999999744}, {"input": [-50.0, -20.5], "expected": -20.499999999999847}, {"input": [-50.0, -20.0], "expected": -19.999999999999908}, {"input": [-50.0, -19.5], "expected": -19.499999999999943}, {"input": [-50.0, -19.0], "expected": -18.999999999999964}, {"input": [-50.0, -18.5], "expected": -18.49999999999998}, {"input": [-50.0, -18.0], "expected": -17.999999999999986}, {"input": [-50.0, -17.5], "expected": -17.499999999999993}, {"input": [-50.0, -17.0], "expected": -16.999999999999996}, {"input": [-50.0, -16.5], "expected": -16.499999999999996}, {"input": [-50.0, -16.0], "expected": -15.999999999999998}, {"input": [-50.0, -15.5], "expected": -15.499999999999998}, {"input": [-50.0, -15.0], "expected": -15.0}, {"input": [-50.0, -14.5], "expected": -14.5}, {"input": [-50.0, -14.0], "expected": -14.0}, {"input": [-50.0, -13.5], "expected": -13.5}, {"input": [-50.0, -13.0], "expected": -13.0}, {"input": [-50.0, -12.5], "expected": -12.5}, {"input": [-50.0, -12.0], "expected": -12.0}, {"input": [-50.0, -11.5], "expected": -11.5}, {"input": [-50.0, -11.0], "expected": -11.0}, {"input": [-50.0, -10.5], "expected": -10.5}, {"input": [-50.0, -10.0], "expected": -10.0}, {"input": [-50.0, -9.5], "expected": -9.5}, {"input": [-50.0, -9.0], "expected": -9.0}, {"input": [-50.0, -8.5], "expected": -8.5}, {"input": [-50.0, -8.0], "expected": -8.0}, {"input": [-50.0, -7.5], "expected": -7.5}, {"input": [-50.0, -7.0], "expected": -7.0}, {"input": [-50.0, -6.5], "expected": -6.5}, {"input": [-50.0, -6.0], "expected": -6.0}, {"input": [-50.0, -5.5], "expected": -5.5}, {"input": [-50.0, -5.0], "expected": -5.0}, {"input": [-50.0, -4.5], "expected": -4.5}, {"input": [-50.0, -4.0], "expected": -4.0}, {"input": [-50.0, -3.5], "expected": -3.5}, {"input": [-50.0, -3.0], "expected": -3.0}, {"input": [-50.0, -2.5], "expected": -2.5}, {"input": [-50.0, -2.0], "expected": -2.0}, {"input": [-50.0, -1.5], "expected": -1.5}, {"input": [-50.0, -1.0], "expected": -1.0}, {"input": [-50.0, -0.5], "expected": -0.5}, {"input": [-50.0, 0.0], "expected": 1.9287498479639178e-22}, {"input": [-50.0, 0.5], "expected": 0.5}, {"input": [-50.0, 1.0], "expected": 1.0}, {"input": [-50.0, 1.5], "expected": 1.5}, {"input": [-50.0, 2.0], "expected": 2.0}, {"input": [-50.0, 2.5], "expected": 2.5}, {"input": [-50.0, 3.0], "expected": 3.0}, {"input": [-50.0, 3.5], "expected": 3.5}, {"input": [-50.0, 4.0], "expected": 4.0}, {"input": [-50.0, 4.5], "expected": 4.5}, {"input": [-50.0, 5.0], "expected": 5.0}, {"input": [-50.0, 5.5], "expected": 5.5}, {"input": [-50.0, 6.0], "expected": 6.0}, {"input": [-50.0, 6.5], "expected": 6.5}, {"input": [-50.0, 7.0], "expected": 7.0}, {"input": [-50.0, 7.5], "expected": 7.5}, {"input": [-50.0, 8.0], "expected": 8.0}, {"input": [-50.0, 8.5], "expected": 8.5}, {"input": [-50.0, 9.0], "expected": 9.0}, {"input": [-50.0, 9.5], "expected": 9.5}, {"input": [-50.0, 10.0], "expected": 10.0}, {"input": [-50.0, 10.5], "expected": 10.5}, {"input": [-50.0, 11.0], "expected": 11.0}, {"input": [-50.0, 11.5], "expected": 11.5}, {"input": [-50.0, 12.0], "expected": 12.0}, {"input": [-50.0, 12.5], "expected": 12.5}, {"input": [-50.0, 13.0], "expected": 13.0}, {"input": [-50.0, 13.5], "expected": 13.5}, {"input": [-50.0, 14.0], "expected": 14.0}, {"input": [-50.0, 14.5], "expected": 14.5}, {"input": [-50.0, 15.0], "expected": 15.0}, {"input": [-50.0, 15.5], "expected": 15.5}, {"input": [-50.0, 16.0], "expected": 16.0}, {"input": [-50.0, 16.5], "expected": 16.5}, {"input": [-50.0, 17.0], "expected": 17.0}, {"input": [-50.0, 17.5], "expected": 17.5}, {"input": [-50.0, 18.0], "expected": 18.0}, {"input": [-50.0, 18.5], "expected": 18.5}, {"input": [-50.0, 19.0], "expected": 19.0}, {"input": [-50.0, 19.5], "expected": 19.5}, {"input": [-50.0, 20.0], "expected": 20.0}, {"input": [-50.0, 20.5], "expected": 20.5}, {"input": [-50.0, 21.0], "expected": 21.0}, {"input": [-50.0, 21.5], "expected": 21.5}, {"input": [-50.0, 22.0], "expected": 22.0}, {"input": [-50.0, 22.5], "expected": 22.5}, {"input": [-50.0, 23.0], "expected": 23.0}, {"input": [-50.0, 23.5], "expected": 23.5}, {"input": [-50.0, 24.0], "expected": 24.0}, {"input": [-50.0, 24.5], "expected": 24.5}, {"input": [-50.0, 25.0], "expected": 25.0}, {"input": [-50.0, 25.5], "expected": 25.5}, {"input": [-50.0, 26.0], "expected": 26.0}, {"input": [-50.0, 26.5], "expected": 26.5}, {"input": [-50.0, 27.0], "expected": 27.0}, {"input": [-50.0, 27.5], "expected": 27.5}, {"input": [-50.0, 28.0], "expected": 28.0}, {"input": [-50.0, 28.5], "expected": 28.5}, {"input": [-50.0, 29.0], "expected": 29.0}, {"input": [-50.0, 29.5], "expected": 29.5}, {"input": [-50.0, 30.0], "expected": 30.0}, {"input": [-50.0, 30.5], "expected": 30.5}, {"input": [-50.0, 31.0], "expected": 31.0}, {"input": [-50.0, 31.5], "expected": 31.5}, {"input": [-50.0, 32.0], "expected": 32.0}, {"input": [-50.0, 32.5], "expected": 32.5}, {"input": [-50.0, 33.0], "expected": 33.0}, {"input": [-50.0, 33.5], "expected": 33.5}, {"input": [-50.0, 34.0], "expected": 34.0}, {"input": [-50.0, 34.5], "expected": 34.5}, {"input": [-50.0, 35.0], "expected": 35.0}, {"input": [-50.0, 35.5], "expected": 35.5}, {"input": [-50.0, 36.0], "expected": 36.0}, {"input": [-50.0, 36.5], "expected": 36.5}, {"input": [-50.0, 37.0], "expected": 37.0}, {"input": [-50.0, 37.5], "expected": 37.5}, {"input": [-50.0, 38.0], "expected": 38.0}, {"input": [-50.0, 38.5], "expected": 38.5}, {"input": [-50.0, 39.0], "expected": 39.0}, {"input": [-50.0, 39.5], "expected": 39.5}, {"input": [-50.0, 40.0], "expected": 40.0}, {"input": [-50.0, 40.5], "expected": 40.5}, {"input": [-50.0, 41.0], "expected": 41.0}, {"input": [-50.0, 41.5], "expected": 41.5}, {"input": [-50.0, 42.0], "expected": 42.0}, {"input": [-50.0, 42.5], "expected": 42.5}, {"input": [-50.0, 43.0], "expected": 43.0}, {"input": [-50.0, 43.5], "expected": 43.5}, {"input": [-50.0, 44.0], "expected": 44.0}, {"input": [-50.0, 44.5], "expected": 44.5}, {"input": [-50.0, 45.0], "expected": 45.0}, {"input": [-50.0, 45.5], "expected": 45.5}, {"input": [-50.0, 46.0], "expected": 46.0}, {"input": [-50.0, 46.5], "expected": 46.5}, {"input": [-50.0, 47.0], "expected": 47.0}, {"input": [-50.0, 47.5], "expected": 47.5}, {"input": [-50.0, 48.0], "expected": 48.0}, {"input": [-50.0, 48.5], "expected": 48.5}, {"input": [-50.0, 49.0], "expected": 49.0}, {"input": [-50.0, 49.5], "expected": 49.5}, {"input": [-50.0, 50.0], "expected": 50.0}, {"input": [-50.0, 50.5], "expected": 50.5}, {"input": [-50.0, 51.0], "expected": 51.0}, {"input": [-50.0, 51.5], "expected": 51.5}, {"input": [-50.0, 52.0], "expected": 52.0}, {"input": [-50.0, 52.5], "expected": 52.5}, {"input": [-50.0, 53.0], "expected": 53.0}, {"input": [-50.0, 53.5], "expected": 53.5}, {"input": [-50.0, 54.0], "expected": 54.0}, {"input": [-50.0, 54.5], "expected": 54.5}, {"input": [-50.0, 55.0], "expected": 55.0}, {"input": [-50.0, 55.5], "expected": 55.5}, {"input": [-50.0, 56.0], "expected": 56.0}, {"input": [-50.0, 56.5], "expected": 56.5}, {"input": [-50.0, 57.0], "expected": 57.0}, {"input": [-50.0, 57.5], "expected": 57.5}, {"input": [-50.0, 58.0], "expected": 58.0}, {"input": [-50.0, 58.5], "expected": 58.5}, {"input": [-50.0, 59.0], "expected": 59.0}, {"input": [-50.0, 59.5], "expected": 59.5}, {"input": [-50.0, 60.0], "expected": 60.0}, {"input": [-50.0, 60.5], "expected": 60.5}, {"input": [-50.0, 61.0], "expected": 61.0}, {"input": [-50.0, 61.5], "expected": 61.5}, {"input": [-50.0, 62.0], "expected": 62.0}, {"input": [-50.0, 62.5], "expected": 62.5}, {"input": [-50.0, 63.0], "expected": 63.0}, {"input": [-50.0, 63.5], "expected": 63.5}, {"input": [-50.0, 64.0], "expected": 64.0}, {"input": [-50.0, 64.5], "expected": 64.5}, {"input": [-50.0, 65.0], "expected": 65.0}, {"input": [-50.0, 65.5], "expected": 65.5}, {"input": [-50.0, 66.0], "expected": 66.0}, {"input": [-50.0, 66.5], "expected": 66.5}, {"input": [-50.0, 67.0], "expected": 67.0}, {"input": [-50.0, 67.5], "expected": 67.5}, {"input": [-50.0, 68.0], "expected": 68.0}, {"input": [-50.0, 68.5], "expected": 68.5}, {"input": [-50.0, 69.0], "expected": 69.0}, {"input": [-50.0, 69.5], "expected": 69.5}, {"input": [-50.0, 70.0], "expected": 70.0}, {"input": [-50.0, 70.5], "expected": 70.5}, {"input": [-50.0, 71.0], "expected": 71.0}, {"input": [-50.0, 71.5], "expected": 71.5}, {"input": [-50.0, 72.0], "expected": 72.0}, {"input": [-50.0, 72.5], "expected": 72.5}, {"input": [-50.0, 73.0], "expected": 73.0}, {"input": [-50.0, 73.5], "expected": 73.5}, {"input": [-50.0, 74.0], "expected": 74.0}, {"input": [-50.0, 74.5], "expected": 74.5}, {"input": [-50.0, 75.0], "expected": 75.0}, {"input": [-50.0, 75.5], "expected": 75.5}, {"input": [-50.0, 76.0], "expected": 76.0}, {"input": [-50.0, 76.5], "expected": 76.5}, {"input": [-50.0, 77.0], "expected": 77.0}, {"input": [-50.0, 77.5], "expected": 77.5}, {"input": [-50.0, 78.0], "expected": 78.0}, {"input": [-50.0, 78.5], "expected": 78.5}, {"input": [-50.0, 79.0], "expected": 79.0}, {"input": [-50.0, 79.5], "expected": 79.5}, {"input": [-50.0, 80.0], "expected": 80.0}, {"input": [-50.0, 80.5], "expected": 80.5}, {"input": [-50.0, 81.0], "expected": 81.0}, {"input": [-50.0, 81.5], "expected": 81.5}, {"input": [-50.0, 82.0], "expected": 82.0}, {"input": [-50.0, 82.5], "expected": 82.5}, {"input": [-50.0, 83.0], "expected": 83.0}, {"input": [-50.0, 83.5], "expected": 83.5}, {"input": [-50.0, 84.0], "expected": 84.0}, {"input": [-50.0, 84.5], "expected": 84.5}, {"input": [-50.0, 85.0], "expected": 85.0}, {"input": [-50.0, 85.5], "expected": 85.5}, {"input": [-50.0, 86.0], "expected": 86.0}, {"input": [-50.0, 86.5], "expected": 86.5}, {"input": [-50.0, 87.0], "expected": 87.0}, {"input": [-50.0, 87.5], "expected": 87.5}, {"input": [-50.0, 88.0], "expected": 88.0}, {"input": [-50.0, 88.5], "expected": 88.5}, {"input": [-50.0, 89.0], "expected": 89.0}, {"input": [-50.0, 89.5], "expected": 89.5}, {"input": [-50.0, 90.0], "expected": 90.0}, {"input": [-50.0, 90.5], "expected": 90.5}, {"input": [-50.0, 91.0], "expected": 91.0}, {"input": [-50.0, 91.5], "expected": 91.5}, {"input": [-50.0, 92.0], "expected": 92.0}, {"input": [-50.0, 92.5], "expected": 92.5}, {"input": [-50.0, 93.0], "expected": 93.0}, {"input": [-50.0, 93.5], "expected": 93.5}, {"input": [-50.0, 94.0], "expected": 94.0}, {"input": [-50.0, 94.5], "expected": 94.5}, {"input": [-50.0, 95.0], "expected": 95.0}, {"input": [-50.0, 95.5], "expected": 95.5}, {"input": [-50.0, 96.0], "expected": 96.0}, {"input": [-50.0, 96.5], "expected": 96.5}, {"input": [-50.0, 97.0], "expected": 97.0}, {"input": [-50.0, 97.5], "expected": 97.5}, {"input": [-50.0, 98.0], "expected": 98.0}, {"input": [-50.0, 98.5], "expected": 98.5}, {"input": [-50.0, 99.0], "expected": 99.0}, {"input": [-50.0, 99.5], "expected": 99.5}, {"input": [-49.5, -100.0], "expected": -49.5}, {"input": [-49.5, -99.5], "expected": -49.5}, {"input": [-49.5, -99.0], "expected": -49.5}, {"input": [-49.5, -98.5], "expected": -49.5}, {"input": [-49.5, -98.0], "expected": -49.5}, {"input": [-49.5, -97.5], "expected": -49.5}, {"input": [-49.5, -97.0], "expected": -49.5}, {"input": [-49.5, -96.5], "expected": -49.5}, {"input": [-49.5, -96.0], "expected": -49.5}, {"input": [-49.5, -95.5], "expected": -49.5}, {"input": [-49.5, -95.0], "expected": -49.5}, {"input": [-49.5, -94.5], "expected": -49.5}, {"input": [-49.5, -94.0], "expected": -49.5}, {"input": [-49.5, -93.5], "expected": -49.5}, {"input": [-49.5, -93.0], "expected": -49.5}, {"input": [-49.5, -92.5], "expected": -49.5}, {"input": [-49.5, -92.0], "expected": -49.5}, {"input": [-49.5, -91.5], "expected": -49.5}, {"input": [-49.5, -91.0], "expected": -49.5}, {"input": [-49.5, -90.5], "expected": -49.5}, {"input": [-49.5, -90.0], "expected": -49.5}, {"input": [-49.5, -89.5], "expected": -49.5}, {"input": [-49.5, -89.0], "expected": -49.5}, {"input": [-49.5, -88.5], "expected": -49.5}, {"input": [-49.5, -88.0], "expected": -49.5}, {"input": [-49.5, -87.5], "expected": -49.5}, {"input": [-49.5, -87.0], "expected": -49.5}, {"input": [-49.5, -86.5], "expected": -49.5}, {"input": [-49.5, -86.0], "expected": -49.5}, {"input": [-49.5, -85.5], "expected": -49.5}, {"input": [-49.5, -85.0], "expected": -49.5}, {"input": [-49.5, -84.5], "expected": -49.5}, {"input": [-49.5, -84.0], "expected": -49.5}, {"input": [-49.5, -83.5], "expected": -49.5}, {"input": [-49.5, -83.0], "expected": -49.5}, {"input": [-49.5, -82.5], "expected": -49.49999999999999}, {"input": [-49.5, -82.0], "expected": -49.49999999999999}, {"input": [-49.5, -81.5], "expected": -49.499999999999986}, {"input": [-49.5, -81.0], "expected": -49.49999999999998}, {"input": [-49.5, -80.5], "expected": -49.499999999999964}, {"input": [-49.5, -80.0], "expected": -49.49999999999994}, {"input": [-49.5, -79.5], "expected": -49.49999999999991}, {"input": [-49.5, -79.0], "expected": -49.499999999999844}, {"input": [-49.5, -78.5], "expected": -49.499999999999744}, {"input": [-49.5, -78.0], "expected": -49.49999999999958}, {"input": [-49.5, -77.5], "expected": -49.49999999999931}, {"input": [-49.5, -77.0], "expected": -49.49999999999886}, {"input": [-49.5, -76.5], "expected": -49.49999999999812}, {"input": [-49.5, -76.0], "expected": -49.4999999999969}, {"input": [-49.5, -75.5], "expected": -49.49999999999489}, {"input": [-49.5, -75.0], "expected": -49.49999999999158}, {"input": [-49.5, -74.5], "expected": -49.49999999998611}, {"input": [-49.5, -74.0], "expected": -49.4999999999771}, {"input": [-49.5, -73.5], "expected": -49.49999999996225}, {"input": [-49.5, -73.0], "expected": -49.49999999993776}, {"input": [-49.5, -72.5], "expected": -49.49999999989738}, {"input": [-49.5, -72.0], "expected": -49.49999999983081}, {"input": [-49.5, -71.5], "expected": -49.499999999721055}, {"input": [-49.5, -71.0], "expected": -49.499999999540094}, {"input": [-49.5, -70.5], "expected": -49.499999999241744}, {"input": [-49.5, -70.0], "expected": -49.49999999874985}, {"input": [-49.5, -69.5], "expected": -49.49999999793884}, {"input": [-49.5, -69.0], "expected": -49.49999999660173}, {"input": [-49.5, -68.5], "expected": -49.49999999439721}, {"input": [-49.5, -68.0], "expected": -49.499999990762554}, {"input": [-49.5, -67.5], "expected": -49.49999998477002}, {"input": [-49.5, -67.0], "expected": -49.49999997489001}, {"input": [-49.5, -66.5], "expected": -49.499999958600625}, {"input": [-49.5, -66.0], "expected": -49.49999993174397}, {"input": [-49.5, -65.5], "expected": -49.49999988746483}, {"input": [-49.5, -65.0], "expected": -49.49999981446088}, {"input": [-49.5, -64.5], "expected": -49.499999694097724}, {"input": [-49.5, -64.0], "expected": -49.49999949565247}, {"input": [-49.5, -63.5], "expected": -49.499999168471625}, {"input": [-49.5, -63.0], "expected": -49.499998629041855}, {"input": [-49.5, -62.5], "expected": -49.49999773967315}, {"input": [-49.5, -62.0], "expected": -49.49999627335377}, {"input": [-49.5, -61.5], "expected": -49.49999385580652}, {"input": [-49.5, -61.0], "expected": -49.49998986995771}, {"input": [-49.5, -60.5], "expected": -49.49998329843868}, {"input": [-49.5, -60.0], "expected": -49.49997246392977}, {"input": [-49.5, -59.5], "expected": -49.49995460110078}, {"input": [-49.5, -59.0], "expected": -49.49992515097137}, {"input": [-49.5, -58.5], "expected": -49.49987659781028}, {"input": [-49.5, -58.0], "expected": -49.49979655232787}, {"input": [-49.5, -57.5], "expected": -49.4996645936271}, {"input": [-49.5, -57.0], "expected": -49.49944706852464}, {"input": [-49.5, -56.5], "expected": -49.49908853354623}, {"input": [-49.5, -56.0], "expected": -49.49849768984024}, {"input": [-49.5, -55.5], "expected": -49.49752431486227}, {"input": [-49.5, -55.0], "expected": -49.49592155672943}, {"input": [-49.5, -54.5], "expected": -49.49328465151088}, {"input": [-49.5, -54.0], "expected": -49.4889522551514}, {"input": [-49.5, -53.5], "expected": -49.48185007208219}, {"input": [-49.5, -53.0], "expected": -49.47024958172738}, {"input": [-49.5, -52.5], "expected": -49.451412648426256}, {"input": [-49.5, -52.0], "expected": -49.42111026570745}, {"input": [-49.5, -51.5], "expected": -49.37307198895703}, {"input": [-49.5, -51.0], "expected": -49.29858672201725}, {"input": [-49.5, -50.5], "expected": -49.18673831248178}, {"input": [-49.5, -50.0], "expected": -49.02592301581989}, {"input": [-49.5, -49.5], "expected": -48.80685281944005}, {"input": [-49.5, -49.0], "expected": -48.52592301581989}, {"input": [-49.5, -48.5], "expected": -48.18673831248178}, {"input": [-49.5, -48.0], "expected": -47.79858672201725}, {"input": [-49.5, -47.5], "expected": -47.37307198895703}, {"input": [-49.5, -47.0], "expected": -46.92111026570745}, {"input": [-49.5, -46.5], "expected": -46.451412648426256}, {"input": [-49.5, -46.0], "expected": -45.97024958172738}, {"input": [-49.5, -45.5], "expected": -45.48185007208219}, {"input": [-49.5, -45.0], "expected": -44.9889522551514}, {"input": [-49.5, -44.5], "expected": -44.49328465151088}, {"input": [-49.5, -44.0], "expected": -43.99592155672943}, {"input": [-49.5, -43.5], "expected": -43.49752431486227}, {"input": [-49.5, -43.0], "expected": -42.99849768984024}, {"input": [-49.5, -42.5], "expected": -42.49908853354623}, {"input": [-49.5, -42.0], "expected": -41.99944706852464}, {"input": [-49.5, -41.5], "expected": -41.4996645936271}, {"input": [-49.5, -41.0], "expected": -40.99979655232787}, {"input": [-49.5, -40.5], "expected": -40.49987659781028}, {"input": [-49.5, -40.0], "expected": -39.99992515097137}, {"input": [-49.5, -39.5], "expected": -39.49995460110078}, {"input": [-49.5, -39.0], "expected": -38.99997246392977}, {"input": [-49.5, -38.5], "expected": -38.49998329843868}, {"input": [-49.5, -38.0], "expected": -37.99998986995771}, {"input": [-49.5, -37.5], "expected": -37.49999385580652}, {"input": [-49.5, -37.0], "expected": -36.99999627335377}, {"input": [-49.5, -36.5], "expected": -36.49999773967315}, {"input": [-49.5, -36.0], "expected": -35.999998629041855}, {"input": [-49.5, -35.5], "expected": -35.499999168471625}, {"input": [-49.5, -35.0], "expected": -34.99999949565247}, {"input": [-49.5, -34.5], "expected": -34.499999694097724}, {"input": [-49.5, -34.0], "expected": -33.99999981446088}, {"input": [-49.5, -33.5], "expected": -33.49999988746483}, {"input": [-49.5, -33.0], "expected": -32.99999993174397}, {"input": [-49.5, -32.5], "expected": -32.499999958600625}, {"input": [-49.5, -32.0], "expected": -31.99999997489001}, {"input": [-49.5, -31.5], "expected": -31.49999998477002}, {"input": [-49.5, -31.0], "expected": -30.99999999076255}, {"input": [-49.5, -30.5], "expected": -30.499999994397204}, {"input": [-49.5, -30.0], "expected": -29.999999996601733}, {"input": [-49.5, -29.5], "expected": -29.499999997938847}, {"input": [-49.5, -29.0], "expected": -28.999999998749846}, {"input": [-49.5, -28.5], "expected": -28.499999999241744}, {"input": [-49.5, -28.0], "expected": -27.999999999540094}, {"input": [-49.5, -27.5], "expected": -27.49999999972105}, {"input": [-49.5, -27.0], "expected": -26.99999999983081}, {"input": [-49.5, -26.5], "expected": -26.49999999989738}, {"input": [-49.5, -26.0], "expected": -25.99999999993776}, {"input": [-49.5, -25.5], "expected": -25.49999999996225}, {"input": [-49.5, -25.0], "expected": -24.999999999977103}, {"input": [-49.5, -24.5], "expected": -24.499999999986112}, {"input": [-49.5, -24.0], "expected": -23.999999999991577}, {"input": [-49.5, -23.5], "expected": -23.49999999999489}, {"input": [-49.5, -23.0], "expected": -22.999999999996902}, {"input": [-49.5, -22.5], "expected": -22.49999999999812}, {"input": [-49.5, -22.0], "expected": -21.99999999999886}, {"input": [-49.5, -21.5], "expected": -21.499999999999307}, {"input": [-49.5, -21.0], "expected": -20.99999999999958}, {"input": [-49.5, -20.5], "expected": -20.499999999999744}, {"input": [-49.5, -20.0], "expected": -19.999999999999847}, {"input": [-49.5, -19.5], "expected": -19.499999999999908}, {"input": [-49.5, -19.0], "expected": -18.999999999999943}, {"input": [-49.5, -18.5], "expected": -18.499999999999964}, {"input": [-49.5, -18.0], "expected": -17.99999999999998}, {"input": [-49.5, -17.5], "expected": -17.499999999999986}, {"input": [-49.5, -17.0], "expected": -16.999999999999993}, {"input": [-49.5, -16.5], "expected": -16.499999999999996}, {"input": [-49.5, -16.0], "expected": -15.999999999999996}, {"input": [-49.5, -15.5], "expected": -15.499999999999998}, {"input": [-49.5, -15.0], "expected": -14.999999999999998}, {"input": [-49.5, -14.5], "expected": -14.5}, {"input": [-49.5, -14.0], "expected": -14.0}, {"input": [-49.5, -13.5], "expected": -13.5}, {"input": [-49.5, -13.0], "expected": -13.0}, {"input": [-49.5, -12.5], "expected": -12.5}, {"input": [-49.5, -12.0], "expected": -12.0}, {"input": [-49.5, -11.5], "expected": -11.5}, {"input": [-49.5, -11.0], "expected": -11.0}, {"input": [-49.5, -10.5], "expected": -10.5}, {"input": [-49.5, -10.0], "expected": -10.0}, {"input": [-49.5, -9.5], "expected": -9.5}, {"input": [-49.5, -9.0], "expected": -9.0}, {"input": [-49.5, -8.5], "expected": -8.5}, {"input": [-49.5, -8.0], "expected": -8.0}, {"input": [-49.5, -7.5], "expected": -7.5}, {"input": [-49.5, -7.0], "expected": -7.0}, {"input": [-49.5, -6.5], "expected": -6.5}, {"input": [-49.5, -6.0], "expected": -6.0}, {"input": [-49.5, -5.5], "expected": -5.5}, {"input": [-49.5, -5.0], "expected": -5.0}, {"input": [-49.5, -4.5], "expected": -4.5}, {"input": [-49.5, -4.0], "expected": -4.0}, {"input": [-49.5, -3.5], "expected": -3.5}, {"input": [-49.5, -3.0], "expected": -3.0}, {"input": [-49.5, -2.5], "expected": -2.5}, {"input": [-49.5, -2.0], "expected": -2.0}, {"input": [-49.5, -1.5], "expected": -1.5}, {"input": [-49.5, -1.0], "expected": -1.0}, {"input": [-49.5, -0.5], "expected": -0.5}, {"input": [-49.5, 0.0], "expected": 3.1799709001977496e-22}, {"input": [-49.5, 0.5], "expected": 0.5}, {"input": [-49.5, 1.0], "expected": 1.0}, {"input": [-49.5, 1.5], "expected": 1.5}, {"input": [-49.5, 2.0], "expected": 2.0}, {"input": [-49.5, 2.5], "expected": 2.5}, {"input": [-49.5, 3.0], "expected": 3.0}, {"input": [-49.5, 3.5], "expected": 3.5}, {"input": [-49.5, 4.0], "expected": 4.0}, {"input": [-49.5, 4.5], "expected": 4.5}, {"input": [-49.5, 5.0], "expected": 5.0}, {"input": [-49.5, 5.5], "expected": 5.5}, {"input": [-49.5, 6.0], "expected": 6.0}, {"input": [-49.5, 6.5], "expected": 6.5}, {"input": [-49.5, 7.0], "expected": 7.0}, {"input": [-49.5, 7.5], "expected": 7.5}, {"input": [-49.5, 8.0], "expected": 8.0}, {"input": [-49.5, 8.5], "expected": 8.5}, {"input": [-49.5, 9.0], "expected": 9.0}, {"input": [-49.5, 9.5], "expected": 9.5}, {"input": [-49.5, 10.0], "expected": 10.0}, {"input": [-49.5, 10.5], "expected": 10.5}, {"input": [-49.5, 11.0], "expected": 11.0}, {"input": [-49.5, 11.5], "expected": 11.5}, {"input": [-49.5, 12.0], "expected": 12.0}, {"input": [-49.5, 12.5], "expected": 12.5}, {"input": [-49.5, 13.0], "expected": 13.0}, {"input": [-49.5, 13.5], "expected": 13.5}, {"input": [-49.5, 14.0], "expected": 14.0}, {"input": [-49.5, 14.5], "expected": 14.5}, {"input": [-49.5, 15.0], "expected": 15.0}, {"input": [-49.5, 15.5], "expected": 15.5}, {"input": [-49.5, 16.0], "expected": 16.0}, {"input": [-49.5, 16.5], "expected": 16.5}, {"input": [-49.5, 17.0], "expected": 17.0}, {"input": [-49.5, 17.5], "expected": 17.5}, {"input": [-49.5, 18.0], "expected": 18.0}, {"input": [-49.5, 18.5], "expected": 18.5}, {"input": [-49.5, 19.0], "expected": 19.0}, {"input": [-49.5, 19.5], "expected": 19.5}, {"input": [-49.5, 20.0], "expected": 20.0}, {"input": [-49.5, 20.5], "expected": 20.5}, {"input": [-49.5, 21.0], "expected": 21.0}, {"input": [-49.5, 21.5], "expected": 21.5}, {"input": [-49.5, 22.0], "expected": 22.0}, {"input": [-49.5, 22.5], "expected": 22.5}, {"input": [-49.5, 23.0], "expected": 23.0}, {"input": [-49.5, 23.5], "expected": 23.5}, {"input": [-49.5, 24.0], "expected": 24.0}, {"input": [-49.5, 24.5], "expected": 24.5}, {"input": [-49.5, 25.0], "expected": 25.0}, {"input": [-49.5, 25.5], "expected": 25.5}, {"input": [-49.5, 26.0], "expected": 26.0}, {"input": [-49.5, 26.5], "expected": 26.5}, {"input": [-49.5, 27.0], "expected": 27.0}, {"input": [-49.5, 27.5], "expected": 27.5}, {"input": [-49.5, 28.0], "expected": 28.0}, {"input": [-49.5, 28.5], "expected": 28.5}, {"input": [-49.5, 29.0], "expected": 29.0}, {"input": [-49.5, 29.5], "expected": 29.5}, {"input": [-49.5, 30.0], "expected": 30.0}, {"input": [-49.5, 30.5], "expected": 30.5}, {"input": [-49.5, 31.0], "expected": 31.0}, {"input": [-49.5, 31.5], "expected": 31.5}, {"input": [-49.5, 32.0], "expected": 32.0}, {"input": [-49.5, 32.5], "expected": 32.5}, {"input": [-49.5, 33.0], "expected": 33.0}, {"input": [-49.5, 33.5], "expected": 33.5}, {"input": [-49.5, 34.0], "expected": 34.0}, {"input": [-49.5, 34.5], "expected": 34.5}, {"input": [-49.5, 35.0], "expected": 35.0}, {"input": [-49.5, 35.5], "expected": 35.5}, {"input": [-49.5, 36.0], "expected": 36.0}, {"input": [-49.5, 36.5], "expected": 36.5}, {"input": [-49.5, 37.0], "expected": 37.0}, {"input": [-49.5, 37.5], "expected": 37.5}, {"input": [-49.5, 38.0], "expected": 38.0}, {"input": [-49.5, 38.5], "expected": 38.5}, {"input": [-49.5, 39.0], "expected": 39.0}, {"input": [-49.5, 39.5], "expected": 39.5}, {"input": [-49.5, 40.0], "expected": 40.0}, {"input": [-49.5, 40.5], "expected": 40.5}, {"input": [-49.5, 41.0], "expected": 41.0}, {"input": [-49.5, 41.5], "expected": 41.5}, {"input": [-49.5, 42.0], "expected": 42.0}, {"input": [-49.5, 42.5], "expected": 42.5}, {"input": [-49.5, 43.0], "expected": 43.0}, {"input": [-49.5, 43.5], "expected": 43.5}, {"input": [-49.5, 44.0], "expected": 44.0}, {"input": [-49.5, 44.5], "expected": 44.5}, {"input": [-49.5, 45.0], "expected": 45.0}, {"input": [-49.5, 45.5], "expected": 45.5}, {"input": [-49.5, 46.0], "expected": 46.0}, {"input": [-49.5, 46.5], "expected": 46.5}, {"input": [-49.5, 47.0], "expected": 47.0}, {"input": [-49.5, 47.5], "expected": 47.5}, {"input": [-49.5, 48.0], "expected": 48.0}, {"input": [-49.5, 48.5], "expected": 48.5}, {"input": [-49.5, 49.0], "expected": 49.0}, {"input": [-49.5, 49.5], "expected": 49.5}, {"input": [-49.5, 50.0], "expected": 50.0}, {"input": [-49.5, 50.5], "expected": 50.5}, {"input": [-49.5, 51.0], "expected": 51.0}, {"input": [-49.5, 51.5], "expected": 51.5}, {"input": [-49.5, 52.0], "expected": 52.0}, {"input": [-49.5, 52.5], "expected": 52.5}, {"input": [-49.5, 53.0], "expected": 53.0}, {"input": [-49.5, 53.5], "expected": 53.5}, {"input": [-49.5, 54.0], "expected": 54.0}, {"input": [-49.5, 54.5], "expected": 54.5}, {"input": [-49.5, 55.0], "expected": 55.0}, {"input": [-49.5, 55.5], "expected": 55.5}, {"input": [-49.5, 56.0], "expected": 56.0}, {"input": [-49.5, 56.5], "expected": 56.5}, {"input": [-49.5, 57.0], "expected": 57.0}, {"input": [-49.5, 57.5], "expected": 57.5}, {"input": [-49.5, 58.0], "expected": 58.0}, {"input": [-49.5, 58.5], "expected": 58.5}, {"input": [-49.5, 59.0], "expected": 59.0}, {"input": [-49.5, 59.5], "expected": 59.5}, {"input": [-49.5, 60.0], "expected": 60.0}, {"input": [-49.5, 60.5], "expected": 60.5}, {"input": [-49.5, 61.0], "expected": 61.0}, {"input": [-49.5, 61.5], "expected": 61.5}, {"input": [-49.5, 62.0], "expected": 62.0}, {"input": [-49.5, 62.5], "expected": 62.5}, {"input": [-49.5, 63.0], "expected": 63.0}, {"input": [-49.5, 63.5], "expected": 63.5}, {"input": [-49.5, 64.0], "expected": 64.0}, {"input": [-49.5, 64.5], "expected": 64.5}, {"input": [-49.5, 65.0], "expected": 65.0}, {"input": [-49.5, 65.5], "expected": 65.5}, {"input": [-49.5, 66.0], "expected": 66.0}, {"input": [-49.5, 66.5], "expected": 66.5}, {"input": [-49.5, 67.0], "expected": 67.0}, {"input": [-49.5, 67.5], "expected": 67.5}, {"input": [-49.5, 68.0], "expected": 68.0}, {"input": [-49.5, 68.5], "expected": 68.5}, {"input": [-49.5, 69.0], "expected": 69.0}, {"input": [-49.5, 69.5], "expected": 69.5}, {"input": [-49.5, 70.0], "expected": 70.0}, {"input": [-49.5, 70.5], "expected": 70.5}, {"input": [-49.5, 71.0], "expected": 71.0}, {"input": [-49.5, 71.5], "expected": 71.5}, {"input": [-49.5, 72.0], "expected": 72.0}, {"input": [-49.5, 72.5], "expected": 72.5}, {"input": [-49.5, 73.0], "expected": 73.0}, {"input": [-49.5, 73.5], "expected": 73.5}, {"input": [-49.5, 74.0], "expected": 74.0}, {"input": [-49.5, 74.5], "expected": 74.5}, {"input": [-49.5, 75.0], "expected": 75.0}, {"input": [-49.5, 75.5], "expected": 75.5}, {"input": [-49.5, 76.0], "expected": 76.0}, {"input": [-49.5, 76.5], "expected": 76.5}, {"input": [-49.5, 77.0], "expected": 77.0}, {"input": [-49.5, 77.5], "expected": 77.5}, {"input": [-49.5, 78.0], "expected": 78.0}, {"input": [-49.5, 78.5], "expected": 78.5}, {"input": [-49.5, 79.0], "expected": 79.0}, {"input": [-49.5, 79.5], "expected": 79.5}, {"input": [-49.5, 80.0], "expected": 80.0}, {"input": [-49.5, 80.5], "expected": 80.5}, {"input": [-49.5, 81.0], "expected": 81.0}, {"input": [-49.5, 81.5], "expected": 81.5}, {"input": [-49.5, 82.0], "expected": 82.0}, {"input": [-49.5, 82.5], "expected": 82.5}, {"input": [-49.5, 83.0], "expected": 83.0}, {"input": [-49.5, 83.5], "expected": 83.5}, {"input": [-49.5, 84.0], "expected": 84.0}, {"input": [-49.5, 84.5], "expected": 84.5}, {"input": [-49.5, 85.0], "expected": 85.0}, {"input": [-49.5, 85.5], "expected": 85.5}, {"input": [-49.5, 86.0], "expected": 86.0}, {"input": [-49.5, 86.5], "expected": 86.5}, {"input": [-49.5, 87.0], "expected": 87.0}, {"input": [-49.5, 87.5], "expected": 87.5}, {"input": [-49.5, 88.0], "expected": 88.0}, {"input": [-49.5, 88.5], "expected": 88.5}, {"input": [-49.5, 89.0], "expected": 89.0}, {"input": [-49.5, 89.5], "expected": 89.5}, {"input": [-49.5, 90.0], "expected": 90.0}, {"input": [-49.5, 90.5], "expected": 90.5}, {"input": [-49.5, 91.0], "expected": 91.0}, {"input": [-49.5, 91.5], "expected": 91.5}, {"input": [-49.5, 92.0], "expected": 92.0}, {"input": [-49.5, 92.5], "expected": 92.5}, {"input": [-49.5, 93.0], "expected": 93.0}, {"input": [-49.5, 93.5], "expected": 93.5}, {"input": [-49.5, 94.0], "expected": 94.0}, {"input": [-49.5, 94.5], "expected": 94.5}, {"input": [-49.5, 95.0], "expected": 95.0}, {"input": [-49.5, 95.5], "expected": 95.5}, {"input": [-49.5, 96.0], "expected": 96.0}, {"input": [-49.5, 96.5], "expected": 96.5}, {"input": [-49.5, 97.0], "expected": 97.0}, {"input": [-49.5, 97.5], "expected": 97.5}, {"input": [-49.5, 98.0], "expected": 98.0}, {"input": [-49.5, 98.5], "expected": 98.5}, {"input": [-49.5, 99.0], "expected": 99.0}, {"input": [-49.5, 99.5], "expected": 99.5}, {"input": [-49.0, -100.0], "expected": -49.0}, {"input": [-49.0, -99.5], "expected": -49.0}, {"input": [-49.0, -99.0], "expected": -49.0}, {"input": [-49.0, -98.5], "expected": -49.0}, {"input": [-49.0, -98.0], "expected": -49.0}, {"input": [-49.0, -97.5], "expected": -49.0}, {"input": [-49.0, -97.0], "expected": -49.0}, {"input": [-49.0, -96.5], "expected": -49.0}, {"input": [-49.0, -96.0], "expected": -49.0}, {"input": [-49.0, -95.5], "expected": -49.0}, {"input": [-49.0, -95.0], "expected": -49.0}, {"input": [-49.0, -94.5], "expected": -49.0}, {"input": [-49.0, -94.0], "expected": -49.0}, {"input": [-49.0, -93.5], "expected": -49.0}, {"input": [-49.0, -93.0], "expected": -49.0}, {"input": [-49.0, -92.5], "expected": -49.0}, {"input": [-49.0, -92.0], "expected": -49.0}, {"input": [-49.0, -91.5], "expected": -49.0}, {"input": [-49.0, -91.0], "expected": -49.0}, {"input": [-49.0, -90.5], "expected": -49.0}, {"input": [-49.0, -90.0], "expected": -49.0}, {"input": [-49.0, -89.5], "expected": -49.0}, {"input": [-49.0, -89.0], "expected": -49.0}, {"input": [-49.0, -88.5], "expected": -49.0}, {"input": [-49.0, -88.0], "expected": -49.0}, {"input": [-49.0, -87.5], "expected": -49.0}, {"input": [-49.0, -87.0], "expected": -49.0}, {"input": [-49.0, -86.5], "expected": -49.0}, {"input": [-49.0, -86.0], "expected": -49.0}, {"input": [-49.0, -85.5], "expected": -49.0}, {"input": [-49.0, -85.0], "expected": -49.0}, {"input": [-49.0, -84.5], "expected": -49.0}, {"input": [-49.0, -84.0], "expected": -49.0}, {"input": [-49.0, -83.5], "expected": -49.0}, {"input": [-49.0, -83.0], "expected": -49.0}, {"input": [-49.0, -82.5], "expected": -49.0}, {"input": [-49.0, -82.0], "expected": -48.99999999999999}, {"input": [-49.0, -81.5], "expected": -48.99999999999999}, {"input": [-49.0, -81.0], "expected": -48.999999999999986}, {"input": [-49.0, -80.5], "expected": -48.99999999999998}, {"input": [-49.0, -80.0], "expected": -48.999999999999964}, {"input": [-49.0, -79.5], "expected": -48.99999999999994}, {"input": [-49.0, -79.0], "expected": -48.99999999999991}, {"input": [-49.0, -78.5], "expected": -48.999999999999844}, {"input": [-49.0, -78.0], "expected": -48.999999999999744}, {"input": [-49.0, -77.5], "expected": -48.99999999999958}, {"input": [-49.0, -77.0], "expected": -48.99999999999931}, {"input": [-49.0, -76.5], "expected": -48.99999999999886}, {"input": [-49.0, -76.0], "expected": -48.99999999999812}, {"input": [-49.0, -75.5], "expected": -48.9999999999969}, {"input": [-49.0, -75.0], "expected": -48.99999999999489}, {"input": [-49.0, -74.5], "expected": -48.99999999999158}, {"input": [-49.0, -74.0], "expected": -48.99999999998611}, {"input": [-49.0, -73.5], "expected": -48.9999999999771}, {"input": [-49.0, -73.0], "expected": -48.99999999996225}, {"input": [-49.0, -72.5], "expected": -48.99999999993776}, {"input": [-49.0, -72.0], "expected": -48.99999999989738}, {"input": [-49.0, -71.5], "expected": -48.99999999983081}, {"input": [-49.0, -71.0], "expected": -48.999999999721055}, {"input": [-49.0, -70.5], "expected": -48.999999999540094}, {"input": [-49.0, -70.0], "expected": -48.999999999241744}, {"input": [-49.0, -69.5], "expected": -48.99999999874985}, {"input": [-49.0, -69.0], "expected": -48.99999999793884}, {"input": [-49.0, -68.5], "expected": -48.99999999660173}, {"input": [-49.0, -68.0], "expected": -48.99999999439721}, {"input": [-49.0, -67.5], "expected": -48.999999990762554}, {"input": [-49.0, -67.0], "expected": -48.99999998477002}, {"input": [-49.0, -66.5], "expected": -48.99999997489001}, {"input": [-49.0, -66.0], "expected": -48.999999958600625}, {"input": [-49.0, -65.5], "expected": -48.99999993174397}, {"input": [-49.0, -65.0], "expected": -48.99999988746483}, {"input": [-49.0, -64.5], "expected": -48.99999981446088}, {"input": [-49.0, -64.0], "expected": -48.999999694097724}, {"input": [-49.0, -63.5], "expected": -48.99999949565247}, {"input": [-49.0, -63.0], "expected": -48.999999168471625}, {"input": [-49.0, -62.5], "expected": -48.999998629041855}, {"input": [-49.0, -62.0], "expected": -48.99999773967315}, {"input": [-49.0, -61.5], "expected": -48.99999627335377}, {"input": [-49.0, -61.0], "expected": -48.99999385580652}, {"input": [-49.0, -60.5], "expected": -48.99998986995771}, {"input": [-49.0, -60.0], "expected": -48.99998329843868}, {"input": [-49.0, -59.5], "expected": -48.99997246392977}, {"input": [-49.0, -59.0], "expected": -48.99995460110078}, {"input": [-49.0, -58.5], "expected": -48.99992515097137}, {"input": [-49.0, -58.0], "expected": -48.99987659781028}, {"input": [-49.0, -57.5], "expected": -48.99979655232787}, {"input": [-49.0, -57.0], "expected": -48.9996645936271}, {"input": [-49.0, -56.5], "expected": -48.99944706852464}, {"input": [-49.0, -56.0], "expected": -48.99908853354623}, {"input": [-49.0, -55.5], "expected": -48.99849768984024}, {"input": [-49.0, -55.0], "expected": -48.99752431486227}, {"input": [-49.0, -54.5], "expected": -48.99592155672943}, {"input": [-49.0, -54.0], "expected": -48.99328465151088}, {"input": [-49.0, -53.5], "expected": -48.9889522551514}, {"input": [-49.0, -53.0], "expected": -48.98185007208219}, {"input": [-49.0, -52.5], "expected": -48.97024958172738}, {"input": [-49.0, -52.0], "expected": -48.951412648426256}, {"input": [-49.0, -51.5], "expected": -48.92111026570745}, {"input": [-49.0, -51.0], "expected": -48.87307198895703}, {"input": [-49.0, -50.5], "expected": -48.79858672201725}, {"input": [-49.0, -50.0], "expected": -48.68673831248178}, {"input": [-49.0, -49.5], "expected": -48.52592301581989}, {"input": [-49.0, -49.0], "expected": -48.30685281944005}, {"input": [-49.0, -48.5], "expected": -48.02592301581989}, {"input": [-49.0, -48.0], "expected": -47.68673831248178}, {"input": [-49.0, -47.5], "expected": -47.29858672201725}, {"input": [-49.0, -47.0], "expected": -46.87307198895703}, {"input": [-49.0, -46.5], "expected": -46.42111026570745}, {"input": [-49.0, -46.0], "expected": -45.951412648426256}, {"input": [-49.0, -45.5], "expected": -45.47024958172738}, {"input": [-49.0, -45.0], "expected": -44.98185007208219}, {"input": [-49.0, -44.5], "expected": -44.4889522551514}, {"input": [-49.0, -44.0], "expected": -43.99328465151088}, {"input": [-49.0, -43.5], "expected": -43.49592155672943}, {"input": [-49.0, -43.0], "expected": -42.99752431486227}, {"input": [-49.0, -42.5], "expected": -42.49849768984024}, {"input": [-49.0, -42.0], "expected": -41.99908853354623}, {"input": [-49.0, -41.5], "expected": -41.49944706852464}, {"input": [-49.0, -41.0], "expected": -40.9996645936271}, {"input": [-49.0, -40.5], "expected": -40.49979655232787}, {"input": [-49.0, -40.0], "expected": -39.99987659781028}, {"input": [-49.0, -39.5], "expected": -39.49992515097137}, {"input": [-49.0, -39.0], "expected": -38.99995460110078}, {"input": [-49.0, -38.5], "expected": -38.49997246392977}, {"input": [-49.0, -38.0], "expected": -37.99998329843868}, {"input": [-49.0, -37.5], "expected": -37.49998986995771}, {"input": [-49.0, -37.0], "expected": -36.99999385580652}, {"input": [-49.0, -36.5], "expected": -36.49999627335377}, {"input": [-49.0, -36.0], "expected": -35.99999773967315}, {"input": [-49.0, -35.5], "expected": -35.499998629041855}, {"input": [-49.0, -35.0], "expected": -34.999999168471625}, {"input": [-49.0, -34.5], "expected": -34.49999949565247}, {"input": [-49.0, -34.0], "expected": -33.999999694097724}, {"input": [-49.0, -33.5], "expected": -33.49999981446088}, {"input": [-49.0, -33.0], "expected": -32.99999988746483}, {"input": [-49.0, -32.5], "expected": -32.49999993174397}, {"input": [-49.0, -32.0], "expected": -31.999999958600625}, {"input": [-49.0, -31.5], "expected": -31.49999997489001}, {"input": [-49.0, -31.0], "expected": -30.99999998477002}, {"input": [-49.0, -30.5], "expected": -30.49999999076255}, {"input": [-49.0, -30.0], "expected": -29.999999994397204}, {"input": [-49.0, -29.5], "expected": -29.499999996601733}, {"input": [-49.0, -29.0], "expected": -28.999999997938847}, {"input": [-49.0, -28.5], "expected": -28.499999998749846}, {"input": [-49.0, -28.0], "expected": -27.999999999241744}, {"input": [-49.0, -27.5], "expected": -27.499999999540094}, {"input": [-49.0, -27.0], "expected": -26.99999999972105}, {"input": [-49.0, -26.5], "expected": -26.49999999983081}, {"input": [-49.0, -26.0], "expected": -25.99999999989738}, {"input": [-49.0, -25.5], "expected": -25.49999999993776}, {"input": [-49.0, -25.0], "expected": -24.99999999996225}, {"input": [-49.0, -24.5], "expected": -24.499999999977103}, {"input": [-49.0, -24.0], "expected": -23.999999999986112}, {"input": [-49.0, -23.5], "expected": -23.499999999991577}, {"input": [-49.0, -23.0], "expected": -22.99999999999489}, {"input": [-49.0, -22.5], "expected": -22.499999999996902}, {"input": [-49.0, -22.0], "expected": -21.99999999999812}, {"input": [-49.0, -21.5], "expected": -21.49999999999886}, {"input": [-49.0, -21.0], "expected": -20.999999999999307}, {"input": [-49.0, -20.5], "expected": -20.49999999999958}, {"input": [-49.0, -20.0], "expected": -19.999999999999744}, {"input": [-49.0, -19.5], "expected": -19.499999999999847}, {"input": [-49.0, -19.0], "expected": -18.999999999999908}, {"input": [-49.0, -18.5], "expected": -18.499999999999943}, {"input": [-49.0, -18.0], "expected": -17.999999999999964}, {"input": [-49.0, -17.5], "expected": -17.49999999999998}, {"input": [-49.0, -17.0], "expected": -16.999999999999986}, {"input": [-49.0, -16.5], "expected": -16.499999999999993}, {"input": [-49.0, -16.0], "expected": -15.999999999999995}, {"input": [-49.0, -15.5], "expected": -15.499999999999996}, {"input": [-49.0, -15.0], "expected": -14.999999999999998}, {"input": [-49.0, -14.5], "expected": -14.499999999999998}, {"input": [-49.0, -14.0], "expected": -14.0}, {"input": [-49.0, -13.5], "expected": -13.5}, {"input": [-49.0, -13.0], "expected": -13.0}, {"input": [-49.0, -12.5], "expected": -12.5}, {"input": [-49.0, -12.0], "expected": -12.0}, {"input": [-49.0, -11.5], "expected": -11.5}, {"input": [-49.0, -11.0], "expected": -11.0}, {"input": [-49.0, -10.5], "expected": -10.5}, {"input": [-49.0, -10.0], "expected": -10.0}, {"input": [-49.0, -9.5], "expected": -9.5}, {"input": [-49.0, -9.0], "expected": -9.0}, {"input": [-49.0, -8.5], "expected": -8.5}, {"input": [-49.0, -8.0], "expected": -8.0}, {"input": [-49.0, -7.5], "expected": -7.5}, {"input": [-49.0, -7.0], "expected": -7.0}, {"input": [-49.0, -6.5], "expected": -6.5}, {"input": [-49.0, -6.0], "expected": -6.0}, {"input": [-49.0, -5.5], "expected": -5.5}, {"input": [-49.0, -5.0], "expected": -5.0}, {"input": [-49.0, -4.5], "expected": -4.5}, {"input": [-49.0, -4.0], "expected": -4.0}, {"input": [-49.0, -3.5], "expected": -3.5}, {"input": [-49.0, -3.0], "expected": -3.0}, {"input": [-49.0, -2.5], "expected": -2.5}, {"input": [-49.0, -2.0], "expected": -2.0}, {"input": [-49.0, -1.5], "expected": -1.5}, {"input": [-49.0, -1.0], "expected": -1.0}, {"input": [-49.0, -0.5], "expected": -0.5}, {"input": [-49.0, 0.0], "expected": 5.242885663363464e-22}, {"input": [-49.0, 0.5], "expected": 0.5}, {"input": [-49.0, 1.0], "expected": 1.0}, {"input": [-49.0, 1.5], "expected": 1.5}, {"input": [-49.0, 2.0], "expected": 2.0}, {"input": [-49.0, 2.5], "expected": 2.5}, {"input": [-49.0, 3.0], "expected": 3.0}, {"input": [-49.0, 3.5], "expected": 3.5}, {"input": [-49.0, 4.0], "expected": 4.0}, {"input": [-49.0, 4.5], "expected": 4.5}, {"input": [-49.0, 5.0], "expected": 5.0}, {"input": [-49.0, 5.5], "expected": 5.5}, {"input": [-49.0, 6.0], "expected": 6.0}, {"input": [-49.0, 6.5], "expected": 6.5}, {"input": [-49.0, 7.0], "expected": 7.0}, {"input": [-49.0, 7.5], "expected": 7.5}, {"input": [-49.0, 8.0], "expected": 8.0}, {"input": [-49.0, 8.5], "expected": 8.5}, {"input": [-49.0, 9.0], "expected": 9.0}, {"input": [-49.0, 9.5], "expected": 9.5}, {"input": [-49.0, 10.0], "expected": 10.0}, {"input": [-49.0, 10.5], "expected": 10.5}, {"input": [-49.0, 11.0], "expected": 11.0}, {"input": [-49.0, 11.5], "expected": 11.5}, {"input": [-49.0, 12.0], "expected": 12.0}, {"input": [-49.0, 12.5], "expected": 12.5}, {"input": [-49.0, 13.0], "expected": 13.0}, {"input": [-49.0, 13.5], "expected": 13.5}, {"input": [-49.0, 14.0], "expected": 14.0}, {"input": [-49.0, 14.5], "expected": 14.5}, {"input": [-49.0, 15.0], "expected": 15.0}, {"input": [-49.0, 15.5], "expected": 15.5}, {"input": [-49.0, 16.0], "expected": 16.0}, {"input": [-49.0, 16.5], "expected": 16.5}, {"input": [-49.0, 17.0], "expected": 17.0}, {"input": [-49.0, 17.5], "expected": 17.5}, {"input": [-49.0, 18.0], "expected": 18.0}, {"input": [-49.0, 18.5], "expected": 18.5}, {"input": [-49.0, 19.0], "expected": 19.0}, {"input": [-49.0, 19.5], "expected": 19.5}, {"input": [-49.0, 20.0], "expected": 20.0}, {"input": [-49.0, 20.5], "expected": 20.5}, {"input": [-49.0, 21.0], "expected": 21.0}, {"input": [-49.0, 21.5], "expected": 21.5}, {"input": [-49.0, 22.0], "expected": 22.0}, {"input": [-49.0, 22.5], "expected": 22.5}, {"input": [-49.0, 23.0], "expected": 23.0}, {"input": [-49.0, 23.5], "expected": 23.5}, {"input": [-49.0, 24.0], "expected": 24.0}, {"input": [-49.0, 24.5], "expected": 24.5}, {"input": [-49.0, 25.0], "expected": 25.0}, {"input": [-49.0, 25.5], "expected": 25.5}, {"input": [-49.0, 26.0], "expected": 26.0}, {"input": [-49.0, 26.5], "expected": 26.5}, {"input": [-49.0, 27.0], "expected": 27.0}, {"input": [-49.0, 27.5], "expected": 27.5}, {"input": [-49.0, 28.0], "expected": 28.0}, {"input": [-49.0, 28.5], "expected": 28.5}, {"input": [-49.0, 29.0], "expected": 29.0}, {"input": [-49.0, 29.5], "expected": 29.5}, {"input": [-49.0, 30.0], "expected": 30.0}, {"input": [-49.0, 30.5], "expected": 30.5}, {"input": [-49.0, 31.0], "expected": 31.0}, {"input": [-49.0, 31.5], "expected": 31.5}, {"input": [-49.0, 32.0], "expected": 32.0}, {"input": [-49.0, 32.5], "expected": 32.5}, {"input": [-49.0, 33.0], "expected": 33.0}, {"input": [-49.0, 33.5], "expected": 33.5}, {"input": [-49.0, 34.0], "expected": 34.0}, {"input": [-49.0, 34.5], "expected": 34.5}, {"input": [-49.0, 35.0], "expected": 35.0}, {"input": [-49.0, 35.5], "expected": 35.5}, {"input": [-49.0, 36.0], "expected": 36.0}, {"input": [-49.0, 36.5], "expected": 36.5}, {"input": [-49.0, 37.0], "expected": 37.0}, {"input": [-49.0, 37.5], "expected": 37.5}, {"input": [-49.0, 38.0], "expected": 38.0}, {"input": [-49.0, 38.5], "expected": 38.5}, {"input": [-49.0, 39.0], "expected": 39.0}, {"input": [-49.0, 39.5], "expected": 39.5}, {"input": [-49.0, 40.0], "expected": 40.0}, {"input": [-49.0, 40.5], "expected": 40.5}, {"input": [-49.0, 41.0], "expected": 41.0}, {"input": [-49.0, 41.5], "expected": 41.5}, {"input": [-49.0, 42.0], "expected": 42.0}, {"input": [-49.0, 42.5], "expected": 42.5}, {"input": [-49.0, 43.0], "expected": 43.0}, {"input": [-49.0, 43.5], "expected": 43.5}, {"input": [-49.0, 44.0], "expected": 44.0}, {"input": [-49.0, 44.5], "expected": 44.5}, {"input": [-49.0, 45.0], "expected": 45.0}, {"input": [-49.0, 45.5], "expected": 45.5}, {"input": [-49.0, 46.0], "expected": 46.0}, {"input": [-49.0, 46.5], "expected": 46.5}, {"input": [-49.0, 47.0], "expected": 47.0}, {"input": [-49.0, 47.5], "expected": 47.5}, {"input": [-49.0, 48.0], "expected": 48.0}, {"input": [-49.0, 48.5], "expected": 48.5}, {"input": [-49.0, 49.0], "expected": 49.0}, {"input": [-49.0, 49.5], "expected": 49.5}, {"input": [-49.0, 50.0], "expected": 50.0}, {"input": [-49.0, 50.5], "expected": 50.5}, {"input": [-49.0, 51.0], "expected": 51.0}, {"input": [-49.0, 51.5], "expected": 51.5}, {"input": [-49.0, 52.0], "expected": 52.0}, {"input": [-49.0, 52.5], "expected": 52.5}, {"input": [-49.0, 53.0], "expected": 53.0}, {"input": [-49.0, 53.5], "expected": 53.5}, {"input": [-49.0, 54.0], "expected": 54.0}, {"input": [-49.0, 54.5], "expected": 54.5}, {"input": [-49.0, 55.0], "expected": 55.0}, {"input": [-49.0, 55.5], "expected": 55.5}, {"input": [-49.0, 56.0], "expected": 56.0}, {"input": [-49.0, 56.5], "expected": 56.5}, {"input": [-49.0, 57.0], "expected": 57.0}, {"input": [-49.0, 57.5], "expected": 57.5}, {"input": [-49.0, 58.0], "expected": 58.0}, {"input": [-49.0, 58.5], "expected": 58.5}, {"input": [-49.0, 59.0], "expected": 59.0}, {"input": [-49.0, 59.5], "expected": 59.5}, {"input": [-49.0, 60.0], "expected": 60.0}, {"input": [-49.0, 60.5], "expected": 60.5}, {"input": [-49.0, 61.0], "expected": 61.0}, {"input": [-49.0, 61.5], "expected": 61.5}, {"input": [-49.0, 62.0], "expected": 62.0}, {"input": [-49.0, 62.5], "expected": 62.5}, {"input": [-49.0, 63.0], "expected": 63.0}, {"input": [-49.0, 63.5], "expected": 63.5}, {"input": [-49.0, 64.0], "expected": 64.0}, {"input": [-49.0, 64.5], "expected": 64.5}, {"input": [-49.0, 65.0], "expected": 65.0}, {"input": [-49.0, 65.5], "expected": 65.5}, {"input": [-49.0, 66.0], "expected": 66.0}, {"input": [-49.0, 66.5], "expected": 66.5}, {"input": [-49.0, 67.0], "expected": 67.0}, {"input": [-49.0, 67.5], "expected": 67.5}, {"input": [-49.0, 68.0], "expected": 68.0}, {"input": [-49.0, 68.5], "expected": 68.5}, {"input": [-49.0, 69.0], "expected": 69.0}, {"input": [-49.0, 69.5], "expected": 69.5}, {"input": [-49.0, 70.0], "expected": 70.0}, {"input": [-49.0, 70.5], "expected": 70.5}, {"input": [-49.0, 71.0], "expected": 71.0}, {"input": [-49.0, 71.5], "expected": 71.5}, {"input": [-49.0, 72.0], "expected": 72.0}, {"input": [-49.0, 72.5], "expected": 72.5}, {"input": [-49.0, 73.0], "expected": 73.0}, {"input": [-49.0, 73.5], "expected": 73.5}, {"input": [-49.0, 74.0], "expected": 74.0}, {"input": [-49.0, 74.5], "expected": 74.5}, {"input": [-49.0, 75.0], "expected": 75.0}, {"input": [-49.0, 75.5], "expected": 75.5}, {"input": [-49.0, 76.0], "expected": 76.0}, {"input": [-49.0, 76.5], "expected": 76.5}, {"input": [-49.0, 77.0], "expected": 77.0}, {"input": [-49.0, 77.5], "expected": 77.5}, {"input": [-49.0, 78.0], "expected": 78.0}, {"input": [-49.0, 78.5], "expected": 78.5}, {"input": [-49.0, 79.0], "expected": 79.0}, {"input": [-49.0, 79.5], "expected": 79.5}, {"input": [-49.0, 80.0], "expected": 80.0}, {"input": [-49.0, 80.5], "expected": 80.5}, {"input": [-49.0, 81.0], "expected": 81.0}, {"input": [-49.0, 81.5], "expected": 81.5}, {"input": [-49.0, 82.0], "expected": 82.0}, {"input": [-49.0, 82.5], "expected": 82.5}, {"input": [-49.0, 83.0], "expected": 83.0}, {"input": [-49.0, 83.5], "expected": 83.5}, {"input": [-49.0, 84.0], "expected": 84.0}, {"input": [-49.0, 84.5], "expected": 84.5}, {"input": [-49.0, 85.0], "expected": 85.0}, {"input": [-49.0, 85.5], "expected": 85.5}, {"input": [-49.0, 86.0], "expected": 86.0}, {"input": [-49.0, 86.5], "expected": 86.5}, {"input": [-49.0, 87.0], "expected": 87.0}, {"input": [-49.0, 87.5], "expected": 87.5}, {"input": [-49.0, 88.0], "expected": 88.0}, {"input": [-49.0, 88.5], "expected": 88.5}, {"input": [-49.0, 89.0], "expected": 89.0}, {"input": [-49.0, 89.5], "expected": 89.5}, {"input": [-49.0, 90.0], "expected": 90.0}, {"input": [-49.0, 90.5], "expected": 90.5}, {"input": [-49.0, 91.0], "expected": 91.0}, {"input": [-49.0, 91.5], "expected": 91.5}, {"input": [-49.0, 92.0], "expected": 92.0}, {"input": [-49.0, 92.5], "expected": 92.5}, {"input": [-49.0, 93.0], "expected": 93.0}, {"input": [-49.0, 93.5], "expected": 93.5}, {"input": [-49.0, 94.0], "expected": 94.0}, {"input": [-49.0, 94.5], "expected": 94.5}, {"input": [-49.0, 95.0], "expected": 95.0}, {"input": [-49.0, 95.5], "expected": 95.5}, {"input": [-49.0, 96.0], "expected": 96.0}, {"input": [-49.0, 96.5], "expected": 96.5}, {"input": [-49.0, 97.0], "expected": 97.0}, {"input": [-49.0, 97.5], "expected": 97.5}, {"input": [-49.0, 98.0], "expected": 98.0}, {"input": [-49.0, 98.5], "expected": 98.5}, {"input": [-49.0, 99.0], "expected": 99.0}, {"input": [-49.0, 99.5], "expected": 99.5}, {"input": [-48.5, -100.0], "expected": -48.5}, {"input": [-48.5, -99.5], "expected": -48.5}, {"input": [-48.5, -99.0], "expected": -48.5}, {"input": [-48.5, -98.5], "expected": -48.5}, {"input": [-48.5, -98.0], "expected": -48.5}, {"input": [-48.5, -97.5], "expected": -48.5}, {"input": [-48.5, -97.0], "expected": -48.5}, {"input": [-48.5, -96.5], "expected": -48.5}, {"input": [-48.5, -96.0], "expected": -48.5}, {"input": [-48.5, -95.5], "expected": -48.5}, {"input": [-48.5, -95.0], "expected": -48.5}, {"input": [-48.5, -94.5], "expected": -48.5}, {"input": [-48.5, -94.0], "expected": -48.5}, {"input": [-48.5, -93.5], "expected": -48.5}, {"input": [-48.5, -93.0], "expected": -48.5}, {"input": [-48.5, -92.5], "expected": -48.5}, {"input": [-48.5, -92.0], "expected": -48.5}, {"input": [-48.5, -91.5], "expected": -48.5}, {"input": [-48.5, -91.0], "expected": -48.5}, {"input": [-48.5, -90.5], "expected": -48.5}, {"input": [-48.5, -90.0], "expected": -48.5}, {"input": [-48.5, -89.5], "expected": -48.5}, {"input": [-48.5, -89.0], "expected": -48.5}, {"input": [-48.5, -88.5], "expected": -48.5}, {"input": [-48.5, -88.0], "expected": -48.5}, {"input": [-48.5, -87.5], "expected": -48.5}, {"input": [-48.5, -87.0], "expected": -48.5}, {"input": [-48.5, -86.5], "expected": -48.5}, {"input": [-48.5, -86.0], "expected": -48.5}, {"input": [-48.5, -85.5], "expected": -48.5}, {"input": [-48.5, -85.0], "expected": -48.5}, {"input": [-48.5, -84.5], "expected": -48.5}, {"input": [-48.5, -84.0], "expected": -48.5}, {"input": [-48.5, -83.5], "expected": -48.5}, {"input": [-48.5, -83.0], "expected": -48.5}, {"input": [-48.5, -82.5], "expected": -48.5}, {"input": [-48.5, -82.0], "expected": -48.5}, {"input": [-48.5, -81.5], "expected": -48.49999999999999}, {"input": [-48.5, -81.0], "expected": -48.49999999999999}, {"input": [-48.5, -80.5], "expected": -48.499999999999986}, {"input": [-48.5, -80.0], "expected": -48.49999999999998}, {"input": [-48.5, -79.5], "expected": -48.499999999999964}, {"input": [-48.5, -79.0], "expected": -48.49999999999994}, {"input": [-48.5, -78.5], "expected": -48.49999999999991}, {"input": [-48.5, -78.0], "expected": -48.499999999999844}, {"input": [-48.5, -77.5], "expected": -48.499999999999744}, {"input": [-48.5, -77.0], "expected": -48.49999999999958}, {"input": [-48.5, -76.5], "expected": -48.49999999999931}, {"input": [-48.5, -76.0], "expected": -48.49999999999886}, {"input": [-48.5, -75.5], "expected": -48.49999999999812}, {"input": [-48.5, -75.0], "expected": -48.4999999999969}, {"input": [-48.5, -74.5], "expected": -48.49999999999489}, {"input": [-48.5, -74.0], "expected": -48.49999999999158}, {"input": [-48.5, -73.5], "expected": -48.49999999998611}, {"input": [-48.5, -73.0], "expected": -48.4999999999771}, {"input": [-48.5, -72.5], "expected": -48.49999999996225}, {"input": [-48.5, -72.0], "expected": -48.49999999993776}, {"input": [-48.5, -71.5], "expected": -48.49999999989738}, {"input": [-48.5, -71.0], "expected": -48.49999999983081}, {"input": [-48.5, -70.5], "expected": -48.499999999721055}, {"input": [-48.5, -70.0], "expected": -48.499999999540094}, {"input": [-48.5, -69.5], "expected": -48.499999999241744}, {"input": [-48.5, -69.0], "expected": -48.49999999874985}, {"input": [-48.5, -68.5], "expected": -48.49999999793884}, {"input": [-48.5, -68.0], "expected": -48.49999999660173}, {"input": [-48.5, -67.5], "expected": -48.49999999439721}, {"input": [-48.5, -67.0], "expected": -48.499999990762554}, {"input": [-48.5, -66.5], "expected": -48.49999998477002}, {"input": [-48.5, -66.0], "expected": -48.49999997489001}, {"input": [-48.5, -65.5], "expected": -48.499999958600625}, {"input": [-48.5, -65.0], "expected": -48.49999993174397}, {"input": [-48.5, -64.5], "expected": -48.49999988746483}, {"input": [-48.5, -64.0], "expected": -48.49999981446088}, {"input": [-48.5, -63.5], "expected": -48.499999694097724}, {"input": [-48.5, -63.0], "expected": -48.49999949565247}, {"input": [-48.5, -62.5], "expected": -48.499999168471625}, {"input": [-48.5, -62.0], "expected": -48.499998629041855}, {"input": [-48.5, -61.5], "expected": -48.49999773967315}, {"input": [-48.5, -61.0], "expected": -48.49999627335377}, {"input": [-48.5, -60.5], "expected": -48.49999385580652}, {"input": [-48.5, -60.0], "expected": -48.49998986995771}, {"input": [-48.5, -59.5], "expected": -48.49998329843868}, {"input": [-48.5, -59.0], "expected": -48.49997246392977}, {"input": [-48.5, -58.5], "expected": -48.49995460110078}, {"input": [-48.5, -58.0], "expected": -48.49992515097137}, {"input": [-48.5, -57.5], "expected": -48.49987659781028}, {"input": [-48.5, -57.0], "expected": -48.49979655232787}, {"input": [-48.5, -56.5], "expected": -48.4996645936271}, {"input": [-48.5, -56.0], "expected": -48.49944706852464}, {"input": [-48.5, -55.5], "expected": -48.49908853354623}, {"input": [-48.5, -55.0], "expected": -48.49849768984024}, {"input": [-48.5, -54.5], "expected": -48.49752431486227}, {"input": [-48.5, -54.0], "expected": -48.49592155672943}, {"input": [-48.5, -53.5], "expected": -48.49328465151088}, {"input": [-48.5, -53.0], "expected": -48.4889522551514}, {"input": [-48.5, -52.5], "expected": -48.48185007208219}, {"input": [-48.5, -52.0], "expected": -48.47024958172738}, {"input": [-48.5, -51.5], "expected": -48.451412648426256}, {"input": [-48.5, -51.0], "expected": -48.42111026570745}, {"input": [-48.5, -50.5], "expected": -48.37307198895703}, {"input": [-48.5, -50.0], "expected": -48.29858672201725}, {"input": [-48.5, -49.5], "expected": -48.18673831248178}, {"input": [-48.5, -49.0], "expected": -48.02592301581989}, {"input": [-48.5, -48.5], "expected": -47.80685281944005}, {"input": [-48.5, -48.0], "expected": -47.52592301581989}, {"input": [-48.5, -47.5], "expected": -47.18673831248178}, {"input": [-48.5, -47.0], "expected": -46.79858672201725}, {"input": [-48.5, -46.5], "expected": -46.37307198895703}, {"input": [-48.5, -46.0], "expected": -45.92111026570745}, {"input": [-48.5, -45.5], "expected": -45.451412648426256}, {"input": [-48.5, -45.0], "expected": -44.97024958172738}, {"input": [-48.5, -44.5], "expected": -44.48185007208219}, {"input": [-48.5, -44.0], "expected": -43.9889522551514}, {"input": [-48.5, -43.5], "expected": -43.49328465151088}, {"input": [-48.5, -43.0], "expected": -42.99592155672943}, {"input": [-48.5, -42.5], "expected": -42.49752431486227}, {"input": [-48.5, -42.0], "expected": -41.99849768984024}, {"input": [-48.5, -41.5], "expected": -41.49908853354623}, {"input": [-48.5, -41.0], "expected": -40.99944706852464}, {"input": [-48.5, -40.5], "expected": -40.4996645936271}, {"input": [-48.5, -40.0], "expected": -39.99979655232787}, {"input": [-48.5, -39.5], "expected": -39.49987659781028}, {"input": [-48.5, -39.0], "expected": -38.99992515097137}, {"input": [-48.5, -38.5], "expected": -38.49995460110078}, {"input": [-48.5, -38.0], "expected": -37.99997246392977}, {"input": [-48.5, -37.5], "expected": -37.49998329843868}, {"input": [-48.5, -37.0], "expected": -36.99998986995771}, {"input": [-48.5, -36.5], "expected": -36.49999385580652}, {"input": [-48.5, -36.0], "expected": -35.99999627335377}, {"input": [-48.5, -35.5], "expected": -35.49999773967315}, {"input": [-48.5, -35.0], "expected": -34.999998629041855}, {"input": [-48.5, -34.5], "expected": -34.499999168471625}, {"input": [-48.5, -34.0], "expected": -33.99999949565247}, {"input": [-48.5, -33.5], "expected": -33.499999694097724}, {"input": [-48.5, -33.0], "expected": -32.99999981446088}, {"input": [-48.5, -32.5], "expected": -32.49999988746483}, {"input": [-48.5, -32.0], "expected": -31.999999931743968}, {"input": [-48.5, -31.5], "expected": -31.499999958600625}, {"input": [-48.5, -31.0], "expected": -30.99999997489001}, {"input": [-48.5, -30.5], "expected": -30.49999998477002}, {"input": [-48.5, -30.0], "expected": -29.99999999076255}, {"input": [-48.5, -29.5], "expected": -29.499999994397204}, {"input": [-48.5, -29.0], "expected": -28.999999996601733}, {"input": [-48.5, -28.5], "expected": -28.499999997938847}, {"input": [-48.5, -28.0], "expected": -27.999999998749846}, {"input": [-48.5, -27.5], "expected": -27.499999999241744}, {"input": [-48.5, -27.0], "expected": -26.999999999540094}, {"input": [-48.5, -26.5], "expected": -26.49999999972105}, {"input": [-48.5, -26.0], "expected": -25.99999999983081}, {"input": [-48.5, -25.5], "expected": -25.49999999989738}, {"input": [-48.5, -25.0], "expected": -24.99999999993776}, {"input": [-48.5, -24.5], "expected": -24.49999999996225}, {"input": [-48.5, -24.0], "expected": -23.999999999977103}, {"input": [-48.5, -23.5], "expected": -23.499999999986112}, {"input": [-48.5, -23.0], "expected": -22.999999999991577}, {"input": [-48.5, -22.5], "expected": -22.49999999999489}, {"input": [-48.5, -22.0], "expected": -21.999999999996902}, {"input": [-48.5, -21.5], "expected": -21.49999999999812}, {"input": [-48.5, -21.0], "expected": -20.99999999999886}, {"input": [-48.5, -20.5], "expected": -20.499999999999307}, {"input": [-48.5, -20.0], "expected": -19.99999999999958}, {"input": [-48.5, -19.5], "expected": -19.499999999999744}, {"input": [-48.5, -19.0], "expected": -18.999999999999847}, {"input": [-48.5, -18.5], "expected": -18.499999999999908}, {"input": [-48.5, -18.0], "expected": -17.999999999999943}, {"input": [-48.5, -17.5], "expected": -17.499999999999964}, {"input": [-48.5, -17.0], "expected": -16.99999999999998}, {"input": [-48.5, -16.5], "expected": -16.499999999999986}, {"input": [-48.5, -16.0], "expected": -15.999999999999993}, {"input": [-48.5, -15.5], "expected": -15.499999999999995}, {"input": [-48.5, -15.0], "expected": -14.999999999999996}, {"input": [-48.5, -14.5], "expected": -14.499999999999998}, {"input": [-48.5, -14.0], "expected": -13.999999999999998}, {"input": [-48.5, -13.5], "expected": -13.5}, {"input": [-48.5, -13.0], "expected": -13.0}, {"input": [-48.5, -12.5], "expected": -12.5}, {"input": [-48.5, -12.0], "expected": -12.0}, {"input": [-48.5, -11.5], "expected": -11.5}, {"input": [-48.5, -11.0], "expected": -11.0}, {"input": [-48.5, -10.5], "expected": -10.5}, {"input": [-48.5, -10.0], "expected": -10.0}, {"input": [-48.5, -9.5], "expected": -9.5}, {"input": [-48.5, -9.0], "expected": -9.0}, {"input": [-48.5, -8.5], "expected": -8.5}, {"input": [-48.5, -8.0], "expected": -8.0}, {"input": [-48.5, -7.5], "expected": -7.5}, {"input": [-48.5, -7.0], "expected": -7.0}, {"input": [-48.5, -6.5], "expected": -6.5}, {"input": [-48.5, -6.0], "expected": -6.0}, {"input": [-48.5, -5.5], "expected": -5.5}, {"input": [-48.5, -5.0], "expected": -5.0}, {"input": [-48.5, -4.5], "expected": -4.5}, {"input": [-48.5, -4.0], "expected": -4.0}, {"input": [-48.5, -3.5], "expected": -3.5}, {"input": [-48.5, -3.0], "expected": -3.0}, {"input": [-48.5, -2.5], "expected": -2.5}, {"input": [-48.5, -2.0], "expected": -2.0}, {"input": [-48.5, -1.5], "expected": -1.5}, {"input": [-48.5, -1.0], "expected": -1.0}, {"input": [-48.5, -0.5], "expected": -0.5}, {"input": [-48.5, 0.0], "expected": 8.644057113036095e-22}, {"input": [-48.5, 0.5], "expected": 0.5}, {"input": [-48.5, 1.0], "expected": 1.0}, {"input": [-48.5, 1.5], "expected": 1.5}, {"input": [-48.5, 2.0], "expected": 2.0}, {"input": [-48.5, 2.5], "expected": 2.5}, {"input": [-48.5, 3.0], "expected": 3.0}, {"input": [-48.5, 3.5], "expected": 3.5}, {"input": [-48.5, 4.0], "expected": 4.0}, {"input": [-48.5, 4.5], "expected": 4.5}, {"input": [-48.5, 5.0], "expected": 5.0}, {"input": [-48.5, 5.5], "expected": 5.5}, {"input": [-48.5, 6.0], "expected": 6.0}, {"input": [-48.5, 6.5], "expected": 6.5}, {"input": [-48.5, 7.0], "expected": 7.0}, {"input": [-48.5, 7.5], "expected": 7.5}, {"input": [-48.5, 8.0], "expected": 8.0}, {"input": [-48.5, 8.5], "expected": 8.5}, {"input": [-48.5, 9.0], "expected": 9.0}, {"input": [-48.5, 9.5], "expected": 9.5}, {"input": [-48.5, 10.0], "expected": 10.0}, {"input": [-48.5, 10.5], "expected": 10.5}, {"input": [-48.5, 11.0], "expected": 11.0}, {"input": [-48.5, 11.5], "expected": 11.5}, {"input": [-48.5, 12.0], "expected": 12.0}, {"input": [-48.5, 12.5], "expected": 12.5}, {"input": [-48.5, 13.0], "expected": 13.0}, {"input": [-48.5, 13.5], "expected": 13.5}, {"input": [-48.5, 14.0], "expected": 14.0}, {"input": [-48.5, 14.5], "expected": 14.5}, {"input": [-48.5, 15.0], "expected": 15.0}, {"input": [-48.5, 15.5], "expected": 15.5}, {"input": [-48.5, 16.0], "expected": 16.0}, {"input": [-48.5, 16.5], "expected": 16.5}, {"input": [-48.5, 17.0], "expected": 17.0}, {"input": [-48.5, 17.5], "expected": 17.5}, {"input": [-48.5, 18.0], "expected": 18.0}, {"input": [-48.5, 18.5], "expected": 18.5}, {"input": [-48.5, 19.0], "expected": 19.0}, {"input": [-48.5, 19.5], "expected": 19.5}, {"input": [-48.5, 20.0], "expected": 20.0}, {"input": [-48.5, 20.5], "expected": 20.5}, {"input": [-48.5, 21.0], "expected": 21.0}, {"input": [-48.5, 21.5], "expected": 21.5}, {"input": [-48.5, 22.0], "expected": 22.0}, {"input": [-48.5, 22.5], "expected": 22.5}, {"input": [-48.5, 23.0], "expected": 23.0}, {"input": [-48.5, 23.5], "expected": 23.5}, {"input": [-48.5, 24.0], "expected": 24.0}, {"input": [-48.5, 24.5], "expected": 24.5}, {"input": [-48.5, 25.0], "expected": 25.0}, {"input": [-48.5, 25.5], "expected": 25.5}, {"input": [-48.5, 26.0], "expected": 26.0}, {"input": [-48.5, 26.5], "expected": 26.5}, {"input": [-48.5, 27.0], "expected": 27.0}, {"input": [-48.5, 27.5], "expected": 27.5}, {"input": [-48.5, 28.0], "expected": 28.0}, {"input": [-48.5, 28.5], "expected": 28.5}, {"input": [-48.5, 29.0], "expected": 29.0}, {"input": [-48.5, 29.5], "expected": 29.5}, {"input": [-48.5, 30.0], "expected": 30.0}, {"input": [-48.5, 30.5], "expected": 30.5}, {"input": [-48.5, 31.0], "expected": 31.0}, {"input": [-48.5, 31.5], "expected": 31.5}, {"input": [-48.5, 32.0], "expected": 32.0}, {"input": [-48.5, 32.5], "expected": 32.5}, {"input": [-48.5, 33.0], "expected": 33.0}, {"input": [-48.5, 33.5], "expected": 33.5}, {"input": [-48.5, 34.0], "expected": 34.0}, {"input": [-48.5, 34.5], "expected": 34.5}, {"input": [-48.5, 35.0], "expected": 35.0}, {"input": [-48.5, 35.5], "expected": 35.5}, {"input": [-48.5, 36.0], "expected": 36.0}, {"input": [-48.5, 36.5], "expected": 36.5}, {"input": [-48.5, 37.0], "expected": 37.0}, {"input": [-48.5, 37.5], "expected": 37.5}, {"input": [-48.5, 38.0], "expected": 38.0}, {"input": [-48.5, 38.5], "expected": 38.5}, {"input": [-48.5, 39.0], "expected": 39.0}, {"input": [-48.5, 39.5], "expected": 39.5}, {"input": [-48.5, 40.0], "expected": 40.0}, {"input": [-48.5, 40.5], "expected": 40.5}, {"input": [-48.5, 41.0], "expected": 41.0}, {"input": [-48.5, 41.5], "expected": 41.5}, {"input": [-48.5, 42.0], "expected": 42.0}, {"input": [-48.5, 42.5], "expected": 42.5}, {"input": [-48.5, 43.0], "expected": 43.0}, {"input": [-48.5, 43.5], "expected": 43.5}, {"input": [-48.5, 44.0], "expected": 44.0}, {"input": [-48.5, 44.5], "expected": 44.5}, {"input": [-48.5, 45.0], "expected": 45.0}, {"input": [-48.5, 45.5], "expected": 45.5}, {"input": [-48.5, 46.0], "expected": 46.0}, {"input": [-48.5, 46.5], "expected": 46.5}, {"input": [-48.5, 47.0], "expected": 47.0}, {"input": [-48.5, 47.5], "expected": 47.5}, {"input": [-48.5, 48.0], "expected": 48.0}, {"input": [-48.5, 48.5], "expected": 48.5}, {"input": [-48.5, 49.0], "expected": 49.0}, {"input": [-48.5, 49.5], "expected": 49.5}, {"input": [-48.5, 50.0], "expected": 50.0}, {"input": [-48.5, 50.5], "expected": 50.5}, {"input": [-48.5, 51.0], "expected": 51.0}, {"input": [-48.5, 51.5], "expected": 51.5}, {"input": [-48.5, 52.0], "expected": 52.0}, {"input": [-48.5, 52.5], "expected": 52.5}, {"input": [-48.5, 53.0], "expected": 53.0}, {"input": [-48.5, 53.5], "expected": 53.5}, {"input": [-48.5, 54.0], "expected": 54.0}, {"input": [-48.5, 54.5], "expected": 54.5}, {"input": [-48.5, 55.0], "expected": 55.0}, {"input": [-48.5, 55.5], "expected": 55.5}, {"input": [-48.5, 56.0], "expected": 56.0}, {"input": [-48.5, 56.5], "expected": 56.5}, {"input": [-48.5, 57.0], "expected": 57.0}, {"input": [-48.5, 57.5], "expected": 57.5}, {"input": [-48.5, 58.0], "expected": 58.0}, {"input": [-48.5, 58.5], "expected": 58.5}, {"input": [-48.5, 59.0], "expected": 59.0}, {"input": [-48.5, 59.5], "expected": 59.5}, {"input": [-48.5, 60.0], "expected": 60.0}, {"input": [-48.5, 60.5], "expected": 60.5}, {"input": [-48.5, 61.0], "expected": 61.0}, {"input": [-48.5, 61.5], "expected": 61.5}, {"input": [-48.5, 62.0], "expected": 62.0}, {"input": [-48.5, 62.5], "expected": 62.5}, {"input": [-48.5, 63.0], "expected": 63.0}, {"input": [-48.5, 63.5], "expected": 63.5}, {"input": [-48.5, 64.0], "expected": 64.0}, {"input": [-48.5, 64.5], "expected": 64.5}, {"input": [-48.5, 65.0], "expected": 65.0}, {"input": [-48.5, 65.5], "expected": 65.5}, {"input": [-48.5, 66.0], "expected": 66.0}, {"input": [-48.5, 66.5], "expected": 66.5}, {"input": [-48.5, 67.0], "expected": 67.0}, {"input": [-48.5, 67.5], "expected": 67.5}, {"input": [-48.5, 68.0], "expected": 68.0}, {"input": [-48.5, 68.5], "expected": 68.5}, {"input": [-48.5, 69.0], "expected": 69.0}, {"input": [-48.5, 69.5], "expected": 69.5}, {"input": [-48.5, 70.0], "expected": 70.0}, {"input": [-48.5, 70.5], "expected": 70.5}, {"input": [-48.5, 71.0], "expected": 71.0}, {"input": [-48.5, 71.5], "expected": 71.5}, {"input": [-48.5, 72.0], "expected": 72.0}, {"input": [-48.5, 72.5], "expected": 72.5}, {"input": [-48.5, 73.0], "expected": 73.0}, {"input": [-48.5, 73.5], "expected": 73.5}, {"input": [-48.5, 74.0], "expected": 74.0}, {"input": [-48.5, 74.5], "expected": 74.5}, {"input": [-48.5, 75.0], "expected": 75.0}, {"input": [-48.5, 75.5], "expected": 75.5}, {"input": [-48.5, 76.0], "expected": 76.0}, {"input": [-48.5, 76.5], "expected": 76.5}, {"input": [-48.5, 77.0], "expected": 77.0}, {"input": [-48.5, 77.5], "expected": 77.5}, {"input": [-48.5, 78.0], "expected": 78.0}, {"input": [-48.5, 78.5], "expected": 78.5}, {"input": [-48.5, 79.0], "expected": 79.0}, {"input": [-48.5, 79.5], "expected": 79.5}, {"input": [-48.5, 80.0], "expected": 80.0}, {"input": [-48.5, 80.5], "expected": 80.5}, {"input": [-48.5, 81.0], "expected": 81.0}, {"input": [-48.5, 81.5], "expected": 81.5}, {"input": [-48.5, 82.0], "expected": 82.0}, {"input": [-48.5, 82.5], "expected": 82.5}, {"input": [-48.5, 83.0], "expected": 83.0}, {"input": [-48.5, 83.5], "expected": 83.5}, {"input": [-48.5, 84.0], "expected": 84.0}, {"input": [-48.5, 84.5], "expected": 84.5}, {"input": [-48.5, 85.0], "expected": 85.0}, {"input": [-48.5, 85.5], "expected": 85.5}, {"input": [-48.5, 86.0], "expected": 86.0}, {"input": [-48.5, 86.5], "expected": 86.5}, {"input": [-48.5, 87.0], "expected": 87.0}, {"input": [-48.5, 87.5], "expected": 87.5}, {"input": [-48.5, 88.0], "expected": 88.0}, {"input": [-48.5, 88.5], "expected": 88.5}, {"input": [-48.5, 89.0], "expected": 89.0}, {"input": [-48.5, 89.5], "expected": 89.5}, {"input": [-48.5, 90.0], "expected": 90.0}, {"input": [-48.5, 90.5], "expected": 90.5}, {"input": [-48.5, 91.0], "expected": 91.0}, {"input": [-48.5, 91.5], "expected": 91.5}, {"input": [-48.5, 92.0], "expected": 92.0}, {"input": [-48.5, 92.5], "expected": 92.5}, {"input": [-48.5, 93.0], "expected": 93.0}, {"input": [-48.5, 93.5], "expected": 93.5}, {"input": [-48.5, 94.0], "expected": 94.0}, {"input": [-48.5, 94.5], "expected": 94.5}, {"input": [-48.5, 95.0], "expected": 95.0}, {"input": [-48.5, 95.5], "expected": 95.5}, {"input": [-48.5, 96.0], "expected": 96.0}, {"input": [-48.5, 96.5], "expected": 96.5}, {"input": [-48.5, 97.0], "expected": 97.0}, {"input": [-48.5, 97.5], "expected": 97.5}, {"input": [-48.5, 98.0], "expected": 98.0}, {"input": [-48.5, 98.5], "expected": 98.5}, {"input": [-48.5, 99.0], "expected": 99.0}, {"input": [-48.5, 99.5], "expected": 99.5}, {"input": [-48.0, -100.0], "expected": -48.0}, {"input": [-48.0, -99.5], "expected": -48.0}, {"input": [-48.0, -99.0], "expected": -48.0}, {"input": [-48.0, -98.5], "expected": -48.0}, {"input": [-48.0, -98.0], "expected": -48.0}, {"input": [-48.0, -97.5], "expected": -48.0}, {"input": [-48.0, -97.0], "expected": -48.0}, {"input": [-48.0, -96.5], "expected": -48.0}, {"input": [-48.0, -96.0], "expected": -48.0}, {"input": [-48.0, -95.5], "expected": -48.0}, {"input": [-48.0, -95.0], "expected": -48.0}, {"input": [-48.0, -94.5], "expected": -48.0}, {"input": [-48.0, -94.0], "expected": -48.0}, {"input": [-48.0, -93.5], "expected": -48.0}, {"input": [-48.0, -93.0], "expected": -48.0}, {"input": [-48.0, -92.5], "expected": -48.0}, {"input": [-48.0, -92.0], "expected": -48.0}, {"input": [-48.0, -91.5], "expected": -48.0}, {"input": [-48.0, -91.0], "expected": -48.0}, {"input": [-48.0, -90.5], "expected": -48.0}, {"input": [-48.0, -90.0], "expected": -48.0}, {"input": [-48.0, -89.5], "expected": -48.0}, {"input": [-48.0, -89.0], "expected": -48.0}, {"input": [-48.0, -88.5], "expected": -48.0}, {"input": [-48.0, -88.0], "expected": -48.0}, {"input": [-48.0, -87.5], "expected": -48.0}, {"input": [-48.0, -87.0], "expected": -48.0}, {"input": [-48.0, -86.5], "expected": -48.0}, {"input": [-48.0, -86.0], "expected": -48.0}, {"input": [-48.0, -85.5], "expected": -48.0}, {"input": [-48.0, -85.0], "expected": -48.0}, {"input": [-48.0, -84.5], "expected": -48.0}, {"input": [-48.0, -84.0], "expected": -48.0}, {"input": [-48.0, -83.5], "expected": -48.0}, {"input": [-48.0, -83.0], "expected": -48.0}, {"input": [-48.0, -82.5], "expected": -48.0}, {"input": [-48.0, -82.0], "expected": -48.0}, {"input": [-48.0, -81.5], "expected": -48.0}, {"input": [-48.0, -81.0], "expected": -47.99999999999999}, {"input": [-48.0, -80.5], "expected": -47.99999999999999}, {"input": [-48.0, -80.0], "expected": -47.999999999999986}, {"input": [-48.0, -79.5], "expected": -47.99999999999998}, {"input": [-48.0, -79.0], "expected": -47.999999999999964}, {"input": [-48.0, -78.5], "expected": -47.99999999999994}, {"input": [-48.0, -78.0], "expected": -47.99999999999991}, {"input": [-48.0, -77.5], "expected": -47.999999999999844}, {"input": [-48.0, -77.0], "expected": -47.999999999999744}, {"input": [-48.0, -76.5], "expected": -47.99999999999958}, {"input": [-48.0, -76.0], "expected": -47.99999999999931}, {"input": [-48.0, -75.5], "expected": -47.99999999999886}, {"input": [-48.0, -75.0], "expected": -47.99999999999812}, {"input": [-48.0, -74.5], "expected": -47.9999999999969}, {"input": [-48.0, -74.0], "expected": -47.99999999999489}, {"input": [-48.0, -73.5], "expected": -47.99999999999158}, {"input": [-48.0, -73.0], "expected": -47.99999999998611}, {"input": [-48.0, -72.5], "expected": -47.9999999999771}, {"input": [-48.0, -72.0], "expected": -47.99999999996225}, {"input": [-48.0, -71.5], "expected": -47.99999999993776}, {"input": [-48.0, -71.0], "expected": -47.99999999989738}, {"input": [-48.0, -70.5], "expected": -47.99999999983081}, {"input": [-48.0, -70.0], "expected": -47.999999999721055}, {"input": [-48.0, -69.5], "expected": -47.999999999540094}, {"input": [-48.0, -69.0], "expected": -47.999999999241744}, {"input": [-48.0, -68.5], "expected": -47.99999999874985}, {"input": [-48.0, -68.0], "expected": -47.99999999793884}, {"input": [-48.0, -67.5], "expected": -47.99999999660173}, {"input": [-48.0, -67.0], "expected": -47.99999999439721}, {"input": [-48.0, -66.5], "expected": -47.999999990762554}, {"input": [-48.0, -66.0], "expected": -47.99999998477002}, {"input": [-48.0, -65.5], "expected": -47.99999997489001}, {"input": [-48.0, -65.0], "expected": -47.999999958600625}, {"input": [-48.0, -64.5], "expected": -47.99999993174397}, {"input": [-48.0, -64.0], "expected": -47.99999988746483}, {"input": [-48.0, -63.5], "expected": -47.99999981446088}, {"input": [-48.0, -63.0], "expected": -47.999999694097724}, {"input": [-48.0, -62.5], "expected": -47.99999949565247}, {"input": [-48.0, -62.0], "expected": -47.999999168471625}, {"input": [-48.0, -61.5], "expected": -47.999998629041855}, {"input": [-48.0, -61.0], "expected": -47.99999773967315}, {"input": [-48.0, -60.5], "expected": -47.99999627335377}, {"input": [-48.0, -60.0], "expected": -47.99999385580652}, {"input": [-48.0, -59.5], "expected": -47.99998986995771}, {"input": [-48.0, -59.0], "expected": -47.99998329843868}, {"input": [-48.0, -58.5], "expected": -47.99997246392977}, {"input": [-48.0, -58.0], "expected": -47.99995460110078}, {"input": [-48.0, -57.5], "expected": -47.99992515097137}, {"input": [-48.0, -57.0], "expected": -47.99987659781028}, {"input": [-48.0, -56.5], "expected": -47.99979655232787}, {"input": [-48.0, -56.0], "expected": -47.9996645936271}, {"input": [-48.0, -55.5], "expected": -47.99944706852464}, {"input": [-48.0, -55.0], "expected": -47.99908853354623}, {"input": [-48.0, -54.5], "expected": -47.99849768984024}, {"input": [-48.0, -54.0], "expected": -47.99752431486227}, {"input": [-48.0, -53.5], "expected": -47.99592155672943}, {"input": [-48.0, -53.0], "expected": -47.99328465151088}, {"input": [-48.0, -52.5], "expected": -47.9889522551514}, {"input": [-48.0, -52.0], "expected": -47.98185007208219}, {"input": [-48.0, -51.5], "expected": -47.97024958172738}, {"input": [-48.0, -51.0], "expected": -47.951412648426256}, {"input": [-48.0, -50.5], "expected": -47.92111026570745}, {"input": [-48.0, -50.0], "expected": -47.87307198895703}, {"input": [-48.0, -49.5], "expected": -47.79858672201725}, {"input": [-48.0, -49.0], "expected": -47.68673831248178}, {"input": [-48.0, -48.5], "expected": -47.52592301581989}, {"input": [-48.0, -48.0], "expected": -47.30685281944005}, {"input": [-48.0, -47.5], "expected": -47.02592301581989}, {"input": [-48.0, -47.0], "expected": -46.68673831248178}, {"input": [-48.0, -46.5], "expected": -46.29858672201725}, {"input": [-48.0, -46.0], "expected": -45.87307198895703}, {"input": [-48.0, -45.5], "expected": -45.42111026570745}, {"input": [-48.0, -45.0], "expected": -44.951412648426256}, {"input": [-48.0, -44.5], "expected": -44.47024958172738}, {"input": [-48.0, -44.0], "expected": -43.98185007208219}, {"input": [-48.0, -43.5], "expected": -43.4889522551514}, {"input": [-48.0, -43.0], "expected": -42.99328465151088}, {"input": [-48.0, -42.5], "expected": -42.49592155672943}, {"input": [-48.0, -42.0], "expected": -41.99752431486227}, {"input": [-48.0, -41.5], "expected": -41.49849768984024}, {"input": [-48.0, -41.0], "expected": -40.99908853354623}, {"input": [-48.0, -40.5], "expected": -40.49944706852464}, {"input": [-48.0, -40.0], "expected": -39.9996645936271}, {"input": [-48.0, -39.5], "expected": -39.49979655232787}, {"input": [-48.0, -39.0], "expected": -38.99987659781028}, {"input": [-48.0, -38.5], "expected": -38.49992515097137}, {"input": [-48.0, -38.0], "expected": -37.99995460110078}, {"input": [-48.0, -37.5], "expected": -37.49997246392977}, {"input": [-48.0, -37.0], "expected": -36.99998329843868}, {"input": [-48.0, -36.5], "expected": -36.49998986995771}, {"input": [-48.0, -36.0], "expected": -35.99999385580652}, {"input": [-48.0, -35.5], "expected": -35.49999627335377}, {"input": [-48.0, -35.0], "expected": -34.99999773967315}, {"input": [-48.0, -34.5], "expected": -34.499998629041855}, {"input": [-48.0, -34.0], "expected": -33.999999168471625}, {"input": [-48.0, -33.5], "expected": -33.49999949565247}, {"input": [-48.0, -33.0], "expected": -32.999999694097724}, {"input": [-48.0, -32.5], "expected": -32.49999981446088}, {"input": [-48.0, -32.0], "expected": -31.99999988746483}, {"input": [-48.0, -31.5], "expected": -31.499999931743968}, {"input": [-48.0, -31.0], "expected": -30.999999958600625}, {"input": [-48.0, -30.5], "expected": -30.49999997489001}, {"input": [-48.0, -30.0], "expected": -29.99999998477002}, {"input": [-48.0, -29.5], "expected": -29.49999999076255}, {"input": [-48.0, -29.0], "expected": -28.999999994397204}, {"input": [-48.0, -28.5], "expected": -28.499999996601733}, {"input": [-48.0, -28.0], "expected": -27.999999997938847}, {"input": [-48.0, -27.5], "expected": -27.499999998749846}, {"input": [-48.0, -27.0], "expected": -26.999999999241744}, {"input": [-48.0, -26.5], "expected": -26.499999999540094}, {"input": [-48.0, -26.0], "expected": -25.99999999972105}, {"input": [-48.0, -25.5], "expected": -25.49999999983081}, {"input": [-48.0, -25.0], "expected": -24.99999999989738}, {"input": [-48.0, -24.5], "expected": -24.49999999993776}, {"input": [-48.0, -24.0], "expected": -23.99999999996225}, {"input": [-48.0, -23.5], "expected": -23.499999999977103}, {"input": [-48.0, -23.0], "expected": -22.999999999986112}, {"input": [-48.0, -22.5], "expected": -22.499999999991577}, {"input": [-48.0, -22.0], "expected": -21.99999999999489}, {"input": [-48.0, -21.5], "expected": -21.499999999996902}, {"input": [-48.0, -21.0], "expected": -20.99999999999812}, {"input": [-48.0, -20.5], "expected": -20.49999999999886}, {"input": [-48.0, -20.0], "expected": -19.999999999999307}, {"input": [-48.0, -19.5], "expected": -19.49999999999958}, {"input": [-48.0, -19.0], "expected": -18.999999999999744}, {"input": [-48.0, -18.5], "expected": -18.499999999999847}, {"input": [-48.0, -18.0], "expected": -17.999999999999908}, {"input": [-48.0, -17.5], "expected": -17.499999999999943}, {"input": [-48.0, -17.0], "expected": -16.999999999999964}, {"input": [-48.0, -16.5], "expected": -16.49999999999998}, {"input": [-48.0, -16.0], "expected": -15.999999999999988}, {"input": [-48.0, -15.5], "expected": -15.499999999999993}, {"input": [-48.0, -15.0], "expected": -14.999999999999995}, {"input": [-48.0, -14.5], "expected": -14.499999999999996}, {"input": [-48.0, -14.0], "expected": -13.999999999999998}, {"input": [-48.0, -13.5], "expected": -13.499999999999998}, {"input": [-48.0, -13.0], "expected": -13.0}, {"input": [-48.0, -12.5], "expected": -12.5}, {"input": [-48.0, -12.0], "expected": -12.0}, {"input": [-48.0, -11.5], "expected": -11.5}, {"input": [-48.0, -11.0], "expected": -11.0}, {"input": [-48.0, -10.5], "expected": -10.5}, {"input": [-48.0, -10.0], "expected": -10.0}, {"input": [-48.0, -9.5], "expected": -9.5}, {"input": [-48.0, -9.0], "expected": -9.0}, {"input": [-48.0, -8.5], "expected": -8.5}, {"input": [-48.0, -8.0], "expected": -8.0}, {"input": [-48.0, -7.5], "expected": -7.5}, {"input": [-48.0, -7.0], "expected": -7.0}, {"input": [-48.0, -6.5], "expected": -6.5}, {"input": [-48.0, -6.0], "expected": -6.0}, {"input": [-48.0, -5.5], "expected": -5.5}, {"input": [-48.0, -5.0], "expected": -5.0}, {"input": [-48.0, -4.5], "expected": -4.5}, {"input": [-48.0, -4.0], "expected": -4.0}, {"input": [-48.0, -3.5], "expected": -3.5}, {"input": [-48.0, -3.0], "expected": -3.0}, {"input": [-48.0, -2.5], "expected": -2.5}, {"input": [-48.0, -2.0], "expected": -2.0}, {"input": [-48.0, -1.5], "expected": -1.5}, {"input": [-48.0, -1.0], "expected": -1.0}, {"input": [-48.0, -0.5], "expected": -0.5}, {"input": [-48.0, 0.0], "expected": 1.4251640827409352e-21}, {"input": [-48.0, 0.5], "expected": 0.5}, {"input": [-48.0, 1.0], "expected": 1.0}, {"input": [-48.0, 1.5], "expected": 1.5}, {"input": [-48.0, 2.0], "expected": 2.0}, {"input": [-48.0, 2.5], "expected": 2.5}, {"input": [-48.0, 3.0], "expected": 3.0}, {"input": [-48.0, 3.5], "expected": 3.5}, {"input": [-48.0, 4.0], "expected": 4.0}, {"input": [-48.0, 4.5], "expected": 4.5}, {"input": [-48.0, 5.0], "expected": 5.0}, {"input": [-48.0, 5.5], "expected": 5.5}, {"input": [-48.0, 6.0], "expected": 6.0}, {"input": [-48.0, 6.5], "expected": 6.5}, {"input": [-48.0, 7.0], "expected": 7.0}, {"input": [-48.0, 7.5], "expected": 7.5}, {"input": [-48.0, 8.0], "expected": 8.0}, {"input": [-48.0, 8.5], "expected": 8.5}, {"input": [-48.0, 9.0], "expected": 9.0}, {"input": [-48.0, 9.5], "expected": 9.5}, {"input": [-48.0, 10.0], "expected": 10.0}, {"input": [-48.0, 10.5], "expected": 10.5}, {"input": [-48.0, 11.0], "expected": 11.0}, {"input": [-48.0, 11.5], "expected": 11.5}, {"input": [-48.0, 12.0], "expected": 12.0}, {"input": [-48.0, 12.5], "expected": 12.5}, {"input": [-48.0, 13.0], "expected": 13.0}, {"input": [-48.0, 13.5], "expected": 13.5}, {"input": [-48.0, 14.0], "expected": 14.0}, {"input": [-48.0, 14.5], "expected": 14.5}, {"input": [-48.0, 15.0], "expected": 15.0}, {"input": [-48.0, 15.5], "expected": 15.5}, {"input": [-48.0, 16.0], "expected": 16.0}, {"input": [-48.0, 16.5], "expected": 16.5}, {"input": [-48.0, 17.0], "expected": 17.0}, {"input": [-48.0, 17.5], "expected": 17.5}, {"input": [-48.0, 18.0], "expected": 18.0}, {"input": [-48.0, 18.5], "expected": 18.5}, {"input": [-48.0, 19.0], "expected": 19.0}, {"input": [-48.0, 19.5], "expected": 19.5}, {"input": [-48.0, 20.0], "expected": 20.0}, {"input": [-48.0, 20.5], "expected": 20.5}, {"input": [-48.0, 21.0], "expected": 21.0}, {"input": [-48.0, 21.5], "expected": 21.5}, {"input": [-48.0, 22.0], "expected": 22.0}, {"input": [-48.0, 22.5], "expected": 22.5}, {"input": [-48.0, 23.0], "expected": 23.0}, {"input": [-48.0, 23.5], "expected": 23.5}, {"input": [-48.0, 24.0], "expected": 24.0}, {"input": [-48.0, 24.5], "expected": 24.5}, {"input": [-48.0, 25.0], "expected": 25.0}, {"input": [-48.0, 25.5], "expected": 25.5}, {"input": [-48.0, 26.0], "expected": 26.0}, {"input": [-48.0, 26.5], "expected": 26.5}, {"input": [-48.0, 27.0], "expected": 27.0}, {"input": [-48.0, 27.5], "expected": 27.5}, {"input": [-48.0, 28.0], "expected": 28.0}, {"input": [-48.0, 28.5], "expected": 28.5}, {"input": [-48.0, 29.0], "expected": 29.0}, {"input": [-48.0, 29.5], "expected": 29.5}, {"input": [-48.0, 30.0], "expected": 30.0}, {"input": [-48.0, 30.5], "expected": 30.5}, {"input": [-48.0, 31.0], "expected": 31.0}, {"input": [-48.0, 31.5], "expected": 31.5}, {"input": [-48.0, 32.0], "expected": 32.0}, {"input": [-48.0, 32.5], "expected": 32.5}, {"input": [-48.0, 33.0], "expected": 33.0}, {"input": [-48.0, 33.5], "expected": 33.5}, {"input": [-48.0, 34.0], "expected": 34.0}, {"input": [-48.0, 34.5], "expected": 34.5}, {"input": [-48.0, 35.0], "expected": 35.0}, {"input": [-48.0, 35.5], "expected": 35.5}, {"input": [-48.0, 36.0], "expected": 36.0}, {"input": [-48.0, 36.5], "expected": 36.5}, {"input": [-48.0, 37.0], "expected": 37.0}, {"input": [-48.0, 37.5], "expected": 37.5}, {"input": [-48.0, 38.0], "expected": 38.0}, {"input": [-48.0, 38.5], "expected": 38.5}, {"input": [-48.0, 39.0], "expected": 39.0}, {"input": [-48.0, 39.5], "expected": 39.5}, {"input": [-48.0, 40.0], "expected": 40.0}, {"input": [-48.0, 40.5], "expected": 40.5}, {"input": [-48.0, 41.0], "expected": 41.0}, {"input": [-48.0, 41.5], "expected": 41.5}, {"input": [-48.0, 42.0], "expected": 42.0}, {"input": [-48.0, 42.5], "expected": 42.5}, {"input": [-48.0, 43.0], "expected": 43.0}, {"input": [-48.0, 43.5], "expected": 43.5}, {"input": [-48.0, 44.0], "expected": 44.0}, {"input": [-48.0, 44.5], "expected": 44.5}, {"input": [-48.0, 45.0], "expected": 45.0}, {"input": [-48.0, 45.5], "expected": 45.5}, {"input": [-48.0, 46.0], "expected": 46.0}, {"input": [-48.0, 46.5], "expected": 46.5}, {"input": [-48.0, 47.0], "expected": 47.0}, {"input": [-48.0, 47.5], "expected": 47.5}, {"input": [-48.0, 48.0], "expected": 48.0}, {"input": [-48.0, 48.5], "expected": 48.5}, {"input": [-48.0, 49.0], "expected": 49.0}, {"input": [-48.0, 49.5], "expected": 49.5}, {"input": [-48.0, 50.0], "expected": 50.0}, {"input": [-48.0, 50.5], "expected": 50.5}, {"input": [-48.0, 51.0], "expected": 51.0}, {"input": [-48.0, 51.5], "expected": 51.5}, {"input": [-48.0, 52.0], "expected": 52.0}, {"input": [-48.0, 52.5], "expected": 52.5}, {"input": [-48.0, 53.0], "expected": 53.0}, {"input": [-48.0, 53.5], "expected": 53.5}, {"input": [-48.0, 54.0], "expected": 54.0}, {"input": [-48.0, 54.5], "expected": 54.5}, {"input": [-48.0, 55.0], "expected": 55.0}, {"input": [-48.0, 55.5], "expected": 55.5}, {"input": [-48.0, 56.0], "expected": 56.0}, {"input": [-48.0, 56.5], "expected": 56.5}, {"input": [-48.0, 57.0], "expected": 57.0}, {"input": [-48.0, 57.5], "expected": 57.5}, {"input": [-48.0, 58.0], "expected": 58.0}, {"input": [-48.0, 58.5], "expected": 58.5}, {"input": [-48.0, 59.0], "expected": 59.0}, {"input": [-48.0, 59.5], "expected": 59.5}, {"input": [-48.0, 60.0], "expected": 60.0}, {"input": [-48.0, 60.5], "expected": 60.5}, {"input": [-48.0, 61.0], "expected": 61.0}, {"input": [-48.0, 61.5], "expected": 61.5}, {"input": [-48.0, 62.0], "expected": 62.0}, {"input": [-48.0, 62.5], "expected": 62.5}, {"input": [-48.0, 63.0], "expected": 63.0}, {"input": [-48.0, 63.5], "expected": 63.5}, {"input": [-48.0, 64.0], "expected": 64.0}, {"input": [-48.0, 64.5], "expected": 64.5}, {"input": [-48.0, 65.0], "expected": 65.0}, {"input": [-48.0, 65.5], "expected": 65.5}, {"input": [-48.0, 66.0], "expected": 66.0}, {"input": [-48.0, 66.5], "expected": 66.5}, {"input": [-48.0, 67.0], "expected": 67.0}, {"input": [-48.0, 67.5], "expected": 67.5}, {"input": [-48.0, 68.0], "expected": 68.0}, {"input": [-48.0, 68.5], "expected": 68.5}, {"input": [-48.0, 69.0], "expected": 69.0}, {"input": [-48.0, 69.5], "expected": 69.5}, {"input": [-48.0, 70.0], "expected": 70.0}, {"input": [-48.0, 70.5], "expected": 70.5}, {"input": [-48.0, 71.0], "expected": 71.0}, {"input": [-48.0, 71.5], "expected": 71.5}, {"input": [-48.0, 72.0], "expected": 72.0}, {"input": [-48.0, 72.5], "expected": 72.5}, {"input": [-48.0, 73.0], "expected": 73.0}, {"input": [-48.0, 73.5], "expected": 73.5}, {"input": [-48.0, 74.0], "expected": 74.0}, {"input": [-48.0, 74.5], "expected": 74.5}, {"input": [-48.0, 75.0], "expected": 75.0}, {"input": [-48.0, 75.5], "expected": 75.5}, {"input": [-48.0, 76.0], "expected": 76.0}, {"input": [-48.0, 76.5], "expected": 76.5}, {"input": [-48.0, 77.0], "expected": 77.0}, {"input": [-48.0, 77.5], "expected": 77.5}, {"input": [-48.0, 78.0], "expected": 78.0}, {"input": [-48.0, 78.5], "expected": 78.5}, {"input": [-48.0, 79.0], "expected": 79.0}, {"input": [-48.0, 79.5], "expected": 79.5}, {"input": [-48.0, 80.0], "expected": 80.0}, {"input": [-48.0, 80.5], "expected": 80.5}, {"input": [-48.0, 81.0], "expected": 81.0}, {"input": [-48.0, 81.5], "expected": 81.5}, {"input": [-48.0, 82.0], "expected": 82.0}, {"input": [-48.0, 82.5], "expected": 82.5}, {"input": [-48.0, 83.0], "expected": 83.0}, {"input": [-48.0, 83.5], "expected": 83.5}, {"input": [-48.0, 84.0], "expected": 84.0}, {"input": [-48.0, 84.5], "expected": 84.5}, {"input": [-48.0, 85.0], "expected": 85.0}, {"input": [-48.0, 85.5], "expected": 85.5}, {"input": [-48.0, 86.0], "expected": 86.0}, {"input": [-48.0, 86.5], "expected": 86.5}, {"input": [-48.0, 87.0], "expected": 87.0}, {"input": [-48.0, 87.5], "expected": 87.5}, {"input": [-48.0, 88.0], "expected": 88.0}, {"input": [-48.0, 88.5], "expected": 88.5}, {"input": [-48.0, 89.0], "expected": 89.0}, {"input": [-48.0, 89.5], "expected": 89.5}, {"input": [-48.0, 90.0], "expected": 90.0}, {"input": [-48.0, 90.5], "expected": 90.5}, {"input": [-48.0, 91.0], "expected": 91.0}, {"input": [-48.0, 91.5], "expected": 91.5}, {"input": [-48.0, 92.0], "expected": 92.0}, {"input": [-48.0, 92.5], "expected": 92.5}, {"input": [-48.0, 93.0], "expected": 93.0}, {"input": [-48.0, 93.5], "expected": 93.5}, {"input": [-48.0, 94.0], "expected": 94.0}, {"input": [-48.0, 94.5], "expected": 94.5}, {"input": [-48.0, 95.0], "expected": 95.0}, {"input": [-48.0, 95.5], "expected": 95.5}, {"input": [-48.0, 96.0], "expected": 96.0}, {"input": [-48.0, 96.5], "expected": 96.5}, {"input": [-48.0, 97.0], "expected": 97.0}, {"input": [-48.0, 97.5], "expected": 97.5}, {"input": [-48.0, 98.0], "expected": 98.0}, {"input": [-48.0, 98.5], "expected": 98.5}, {"input": [-48.0, 99.0], "expected": 99.0}, {"input": [-48.0, 99.5], "expected": 99.5}, {"input": [-47.5, -100.0], "expected": -47.5}, {"input": [-47.5, -99.5], "expected": -47.5}, {"input": [-47.5, -99.0], "expected": -47.5}, {"input": [-47.5, -98.5], "expected": -47.5}, {"input": [-47.5, -98.0], "expected": -47.5}, {"input": [-47.5, -97.5], "expected": -47.5}, {"input": [-47.5, -97.0], "expected": -47.5}, {"input": [-47.5, -96.5], "expected": -47.5}, {"input": [-47.5, -96.0], "expected": -47.5}, {"input": [-47.5, -95.5], "expected": -47.5}, {"input": [-47.5, -95.0], "expected": -47.5}, {"input": [-47.5, -94.5], "expected": -47.5}, {"input": [-47.5, -94.0], "expected": -47.5}, {"input": [-47.5, -93.5], "expected": -47.5}, {"input": [-47.5, -93.0], "expected": -47.5}, {"input": [-47.5, -92.5], "expected": -47.5}, {"input": [-47.5, -92.0], "expected": -47.5}, {"input": [-47.5, -91.5], "expected": -47.5}, {"input": [-47.5, -91.0], "expected": -47.5}, {"input": [-47.5, -90.5], "expected": -47.5}, {"input": [-47.5, -90.0], "expected": -47.5}, {"input": [-47.5, -89.5], "expected": -47.5}, {"input": [-47.5, -89.0], "expected": -47.5}, {"input": [-47.5, -88.5], "expected": -47.5}, {"input": [-47.5, -88.0], "expected": -47.5}, {"input": [-47.5, -87.5], "expected": -47.5}, {"input": [-47.5, -87.0], "expected": -47.5}, {"input": [-47.5, -86.5], "expected": -47.5}, {"input": [-47.5, -86.0], "expected": -47.5}, {"input": [-47.5, -85.5], "expected": -47.5}, {"input": [-47.5, -85.0], "expected": -47.5}, {"input": [-47.5, -84.5], "expected": -47.5}, {"input": [-47.5, -84.0], "expected": -47.5}, {"input": [-47.5, -83.5], "expected": -47.5}, {"input": [-47.5, -83.0], "expected": -47.5}, {"input": [-47.5, -82.5], "expected": -47.5}, {"input": [-47.5, -82.0], "expected": -47.5}, {"input": [-47.5, -81.5], "expected": -47.5}, {"input": [-47.5, -81.0], "expected": -47.5}, {"input": [-47.5, -80.5], "expected": -47.49999999999999}, {"input": [-47.5, -80.0], "expected": -47.49999999999999}, {"input": [-47.5, -79.5], "expected": -47.499999999999986}, {"input": [-47.5, -79.0], "expected": -47.49999999999998}, {"input": [-47.5, -78.5], "expected": -47.499999999999964}, {"input": [-47.5, -78.0], "expected": -47.49999999999994}, {"input": [-47.5, -77.5], "expected": -47.49999999999991}, {"input": [-47.5, -77.0], "expected": -47.499999999999844}, {"input": [-47.5, -76.5], "expected": -47.499999999999744}, {"input": [-47.5, -76.0], "expected": -47.49999999999958}, {"input": [-47.5, -75.5], "expected": -47.49999999999931}, {"input": [-47.5, -75.0], "expected": -47.49999999999886}, {"input": [-47.5, -74.5], "expected": -47.49999999999812}, {"input": [-47.5, -74.0], "expected": -47.4999999999969}, {"input": [-47.5, -73.5], "expected": -47.49999999999489}, {"input": [-47.5, -73.0], "expected": -47.49999999999158}, {"input": [-47.5, -72.5], "expected": -47.49999999998611}, {"input": [-47.5, -72.0], "expected": -47.4999999999771}, {"input": [-47.5, -71.5], "expected": -47.49999999996225}, {"input": [-47.5, -71.0], "expected": -47.49999999993776}, {"input": [-47.5, -70.5], "expected": -47.49999999989738}, {"input": [-47.5, -70.0], "expected": -47.49999999983081}, {"input": [-47.5, -69.5], "expected": -47.499999999721055}, {"input": [-47.5, -69.0], "expected": -47.499999999540094}, {"input": [-47.5, -68.5], "expected": -47.499999999241744}, {"input": [-47.5, -68.0], "expected": -47.49999999874985}, {"input": [-47.5, -67.5], "expected": -47.49999999793884}, {"input": [-47.5, -67.0], "expected": -47.49999999660173}, {"input": [-47.5, -66.5], "expected": -47.49999999439721}, {"input": [-47.5, -66.0], "expected": -47.499999990762554}, {"input": [-47.5, -65.5], "expected": -47.49999998477002}, {"input": [-47.5, -65.0], "expected": -47.49999997489001}, {"input": [-47.5, -64.5], "expected": -47.499999958600625}, {"input": [-47.5, -64.0], "expected": -47.49999993174397}, {"input": [-47.5, -63.5], "expected": -47.49999988746483}, {"input": [-47.5, -63.0], "expected": -47.49999981446088}, {"input": [-47.5, -62.5], "expected": -47.499999694097724}, {"input": [-47.5, -62.0], "expected": -47.49999949565247}, {"input": [-47.5, -61.5], "expected": -47.499999168471625}, {"input": [-47.5, -61.0], "expected": -47.499998629041855}, {"input": [-47.5, -60.5], "expected": -47.49999773967315}, {"input": [-47.5, -60.0], "expected": -47.49999627335377}, {"input": [-47.5, -59.5], "expected": -47.49999385580652}, {"input": [-47.5, -59.0], "expected": -47.49998986995771}, {"input": [-47.5, -58.5], "expected": -47.49998329843868}, {"input": [-47.5, -58.0], "expected": -47.49997246392977}, {"input": [-47.5, -57.5], "expected": -47.49995460110078}, {"input": [-47.5, -57.0], "expected": -47.49992515097137}, {"input": [-47.5, -56.5], "expected": -47.49987659781028}, {"input": [-47.5, -56.0], "expected": -47.49979655232787}, {"input": [-47.5, -55.5], "expected": -47.4996645936271}, {"input": [-47.5, -55.0], "expected": -47.49944706852464}, {"input": [-47.5, -54.5], "expected": -47.49908853354623}, {"input": [-47.5, -54.0], "expected": -47.49849768984024}, {"input": [-47.5, -53.5], "expected": -47.49752431486227}, {"input": [-47.5, -53.0], "expected": -47.49592155672943}, {"input": [-47.5, -52.5], "expected": -47.49328465151088}, {"input": [-47.5, -52.0], "expected": -47.4889522551514}, {"input": [-47.5, -51.5], "expected": -47.48185007208219}, {"input": [-47.5, -51.0], "expected": -47.47024958172738}, {"input": [-47.5, -50.5], "expected": -47.451412648426256}, {"input": [-47.5, -50.0], "expected": -47.42111026570745}, {"input": [-47.5, -49.5], "expected": -47.37307198895703}, {"input": [-47.5, -49.0], "expected": -47.29858672201725}, {"input": [-47.5, -48.5], "expected": -47.18673831248178}, {"input": [-47.5, -48.0], "expected": -47.02592301581989}, {"input": [-47.5, -47.5], "expected": -46.80685281944005}, {"input": [-47.5, -47.0], "expected": -46.52592301581989}, {"input": [-47.5, -46.5], "expected": -46.18673831248178}, {"input": [-47.5, -46.0], "expected": -45.79858672201725}, {"input": [-47.5, -45.5], "expected": -45.37307198895703}, {"input": [-47.5, -45.0], "expected": -44.92111026570745}, {"input": [-47.5, -44.5], "expected": -44.451412648426256}, {"input": [-47.5, -44.0], "expected": -43.97024958172738}, {"input": [-47.5, -43.5], "expected": -43.48185007208219}, {"input": [-47.5, -43.0], "expected": -42.9889522551514}, {"input": [-47.5, -42.5], "expected": -42.49328465151088}, {"input": [-47.5, -42.0], "expected": -41.99592155672943}, {"input": [-47.5, -41.5], "expected": -41.49752431486227}, {"input": [-47.5, -41.0], "expected": -40.99849768984024}, {"input": [-47.5, -40.5], "expected": -40.49908853354623}, {"input": [-47.5, -40.0], "expected": -39.99944706852464}, {"input": [-47.5, -39.5], "expected": -39.4996645936271}, {"input": [-47.5, -39.0], "expected": -38.99979655232787}, {"input": [-47.5, -38.5], "expected": -38.49987659781028}, {"input": [-47.5, -38.0], "expected": -37.99992515097137}, {"input": [-47.5, -37.5], "expected": -37.49995460110078}, {"input": [-47.5, -37.0], "expected": -36.99997246392977}, {"input": [-47.5, -36.5], "expected": -36.49998329843868}, {"input": [-47.5, -36.0], "expected": -35.99998986995771}, {"input": [-47.5, -35.5], "expected": -35.49999385580652}, {"input": [-47.5, -35.0], "expected": -34.99999627335377}, {"input": [-47.5, -34.5], "expected": -34.49999773967315}, {"input": [-47.5, -34.0], "expected": -33.999998629041855}, {"input": [-47.5, -33.5], "expected": -33.499999168471625}, {"input": [-47.5, -33.0], "expected": -32.99999949565247}, {"input": [-47.5, -32.5], "expected": -32.499999694097724}, {"input": [-47.5, -32.0], "expected": -31.99999981446088}, {"input": [-47.5, -31.5], "expected": -31.49999988746483}, {"input": [-47.5, -31.0], "expected": -30.999999931743968}, {"input": [-47.5, -30.5], "expected": -30.499999958600625}, {"input": [-47.5, -30.0], "expected": -29.99999997489001}, {"input": [-47.5, -29.5], "expected": -29.49999998477002}, {"input": [-47.5, -29.0], "expected": -28.99999999076255}, {"input": [-47.5, -28.5], "expected": -28.499999994397204}, {"input": [-47.5, -28.0], "expected": -27.999999996601733}, {"input": [-47.5, -27.5], "expected": -27.499999997938847}, {"input": [-47.5, -27.0], "expected": -26.999999998749846}, {"input": [-47.5, -26.5], "expected": -26.499999999241744}, {"input": [-47.5, -26.0], "expected": -25.999999999540094}, {"input": [-47.5, -25.5], "expected": -25.49999999972105}, {"input": [-47.5, -25.0], "expected": -24.99999999983081}, {"input": [-47.5, -24.5], "expected": -24.49999999989738}, {"input": [-47.5, -24.0], "expected": -23.99999999993776}, {"input": [-47.5, -23.5], "expected": -23.49999999996225}, {"input": [-47.5, -23.0], "expected": -22.999999999977103}, {"input": [-47.5, -22.5], "expected": -22.499999999986112}, {"input": [-47.5, -22.0], "expected": -21.999999999991577}, {"input": [-47.5, -21.5], "expected": -21.49999999999489}, {"input": [-47.5, -21.0], "expected": -20.999999999996902}, {"input": [-47.5, -20.5], "expected": -20.49999999999812}, {"input": [-47.5, -20.0], "expected": -19.99999999999886}, {"input": [-47.5, -19.5], "expected": -19.499999999999307}, {"input": [-47.5, -19.0], "expected": -18.99999999999958}, {"input": [-47.5, -18.5], "expected": -18.499999999999744}, {"input": [-47.5, -18.0], "expected": -17.999999999999847}, {"input": [-47.5, -17.5], "expected": -17.499999999999908}, {"input": [-47.5, -17.0], "expected": -16.999999999999943}, {"input": [-47.5, -16.5], "expected": -16.499999999999964}, {"input": [-47.5, -16.0], "expected": -15.999999999999979}, {"input": [-47.5, -15.5], "expected": -15.499999999999988}, {"input": [-47.5, -15.0], "expected": -14.999999999999993}, {"input": [-47.5, -14.5], "expected": -14.499999999999995}, {"input": [-47.5, -14.0], "expected": -13.999999999999996}, {"input": [-47.5, -13.5], "expected": -13.499999999999998}, {"input": [-47.5, -13.0], "expected": -12.999999999999998}, {"input": [-47.5, -12.5], "expected": -12.5}, {"input": [-47.5, -12.0], "expected": -12.0}, {"input": [-47.5, -11.5], "expected": -11.5}, {"input": [-47.5, -11.0], "expected": -11.0}, {"input": [-47.5, -10.5], "expected": -10.5}, {"input": [-47.5, -10.0], "expected": -10.0}, {"input": [-47.5, -9.5], "expected": -9.5}, {"input": [-47.5, -9.0], "expected": -9.0}, {"input": [-47.5, -8.5], "expected": -8.5}, {"input": [-47.5, -8.0], "expected": -8.0}, {"input": [-47.5, -7.5], "expected": -7.5}, {"input": [-47.5, -7.0], "expected": -7.0}, {"input": [-47.5, -6.5], "expected": -6.5}, {"input": [-47.5, -6.0], "expected": -6.0}, {"input": [-47.5, -5.5], "expected": -5.5}, {"input": [-47.5, -5.0], "expected": -5.0}, {"input": [-47.5, -4.5], "expected": -4.5}, {"input": [-47.5, -4.0], "expected": -4.0}, {"input": [-47.5, -3.5], "expected": -3.5}, {"input": [-47.5, -3.0], "expected": -3.0}, {"input": [-47.5, -2.5], "expected": -2.5}, {"input": [-47.5, -2.0], "expected": -2.0}, {"input": [-47.5, -1.5], "expected": -1.5}, {"input": [-47.5, -1.0], "expected": -1.0}, {"input": [-47.5, -0.5], "expected": -0.5}, {"input": [-47.5, 0.0], "expected": 2.349698337452817e-21}, {"input": [-47.5, 0.5], "expected": 0.5}, {"input": [-47.5, 1.0], "expected": 1.0}, {"input": [-47.5, 1.5], "expected": 1.5}, {"input": [-47.5, 2.0], "expected": 2.0}, {"input": [-47.5, 2.5], "expected": 2.5}, {"input": [-47.5, 3.0], "expected": 3.0}, {"input": [-47.5, 3.5], "expected": 3.5}, {"input": [-47.5, 4.0], "expected": 4.0}, {"input": [-47.5, 4.5], "expected": 4.5}, {"input": [-47.5, 5.0], "expected": 5.0}, {"input": [-47.5, 5.5], "expected": 5.5}, {"input": [-47.5, 6.0], "expected": 6.0}, {"input": [-47.5, 6.5], "expected": 6.5}, {"input": [-47.5, 7.0], "expected": 7.0}, {"input": [-47.5, 7.5], "expected": 7.5}, {"input": [-47.5, 8.0], "expected": 8.0}, {"input": [-47.5, 8.5], "expected": 8.5}, {"input": [-47.5, 9.0], "expected": 9.0}, {"input": [-47.5, 9.5], "expected": 9.5}, {"input": [-47.5, 10.0], "expected": 10.0}, {"input": [-47.5, 10.5], "expected": 10.5}, {"input": [-47.5, 11.0], "expected": 11.0}, {"input": [-47.5, 11.5], "expected": 11.5}, {"input": [-47.5, 12.0], "expected": 12.0}, {"input": [-47.5, 12.5], "expected": 12.5}, {"input": [-47.5, 13.0], "expected": 13.0}, {"input": [-47.5, 13.5], "expected": 13.5}, {"input": [-47.5, 14.0], "expected": 14.0}, {"input": [-47.5, 14.5], "expected": 14.5}, {"input": [-47.5, 15.0], "expected": 15.0}, {"input": [-47.5, 15.5], "expected": 15.5}, {"input": [-47.5, 16.0], "expected": 16.0}, {"input": [-47.5, 16.5], "expected": 16.5}, {"input": [-47.5, 17.0], "expected": 17.0}, {"input": [-47.5, 17.5], "expected": 17.5}, {"input": [-47.5, 18.0], "expected": 18.0}, {"input": [-47.5, 18.5], "expected": 18.5}, {"input": [-47.5, 19.0], "expected": 19.0}, {"input": [-47.5, 19.5], "expected": 19.5}, {"input": [-47.5, 20.0], "expected": 20.0}, {"input": [-47.5, 20.5], "expected": 20.5}, {"input": [-47.5, 21.0], "expected": 21.0}, {"input": [-47.5, 21.5], "expected": 21.5}, {"input": [-47.5, 22.0], "expected": 22.0}, {"input": [-47.5, 22.5], "expected": 22.5}, {"input": [-47.5, 23.0], "expected": 23.0}, {"input": [-47.5, 23.5], "expected": 23.5}, {"input": [-47.5, 24.0], "expected": 24.0}, {"input": [-47.5, 24.5], "expected": 24.5}, {"input": [-47.5, 25.0], "expected": 25.0}, {"input": [-47.5, 25.5], "expected": 25.5}, {"input": [-47.5, 26.0], "expected": 26.0}, {"input": [-47.5, 26.5], "expected": 26.5}, {"input": [-47.5, 27.0], "expected": 27.0}, {"input": [-47.5, 27.5], "expected": 27.5}, {"input": [-47.5, 28.0], "expected": 28.0}, {"input": [-47.5, 28.5], "expected": 28.5}, {"input": [-47.5, 29.0], "expected": 29.0}, {"input": [-47.5, 29.5], "expected": 29.5}, {"input": [-47.5, 30.0], "expected": 30.0}, {"input": [-47.5, 30.5], "expected": 30.5}, {"input": [-47.5, 31.0], "expected": 31.0}, {"input": [-47.5, 31.5], "expected": 31.5}, {"input": [-47.5, 32.0], "expected": 32.0}, {"input": [-47.5, 32.5], "expected": 32.5}, {"input": [-47.5, 33.0], "expected": 33.0}, {"input": [-47.5, 33.5], "expected": 33.5}, {"input": [-47.5, 34.0], "expected": 34.0}, {"input": [-47.5, 34.5], "expected": 34.5}, {"input": [-47.5, 35.0], "expected": 35.0}, {"input": [-47.5, 35.5], "expected": 35.5}, {"input": [-47.5, 36.0], "expected": 36.0}, {"input": [-47.5, 36.5], "expected": 36.5}, {"input": [-47.5, 37.0], "expected": 37.0}, {"input": [-47.5, 37.5], "expected": 37.5}, {"input": [-47.5, 38.0], "expected": 38.0}, {"input": [-47.5, 38.5], "expected": 38.5}, {"input": [-47.5, 39.0], "expected": 39.0}, {"input": [-47.5, 39.5], "expected": 39.5}, {"input": [-47.5, 40.0], "expected": 40.0}, {"input": [-47.5, 40.5], "expected": 40.5}, {"input": [-47.5, 41.0], "expected": 41.0}, {"input": [-47.5, 41.5], "expected": 41.5}, {"input": [-47.5, 42.0], "expected": 42.0}, {"input": [-47.5, 42.5], "expected": 42.5}, {"input": [-47.5, 43.0], "expected": 43.0}, {"input": [-47.5, 43.5], "expected": 43.5}, {"input": [-47.5, 44.0], "expected": 44.0}, {"input": [-47.5, 44.5], "expected": 44.5}, {"input": [-47.5, 45.0], "expected": 45.0}, {"input": [-47.5, 45.5], "expected": 45.5}, {"input": [-47.5, 46.0], "expected": 46.0}, {"input": [-47.5, 46.5], "expected": 46.5}, {"input": [-47.5, 47.0], "expected": 47.0}, {"input": [-47.5, 47.5], "expected": 47.5}, {"input": [-47.5, 48.0], "expected": 48.0}, {"input": [-47.5, 48.5], "expected": 48.5}, {"input": [-47.5, 49.0], "expected": 49.0}, {"input": [-47.5, 49.5], "expected": 49.5}, {"input": [-47.5, 50.0], "expected": 50.0}, {"input": [-47.5, 50.5], "expected": 50.5}, {"input": [-47.5, 51.0], "expected": 51.0}, {"input": [-47.5, 51.5], "expected": 51.5}, {"input": [-47.5, 52.0], "expected": 52.0}, {"input": [-47.5, 52.5], "expected": 52.5}, {"input": [-47.5, 53.0], "expected": 53.0}, {"input": [-47.5, 53.5], "expected": 53.5}, {"input": [-47.5, 54.0], "expected": 54.0}, {"input": [-47.5, 54.5], "expected": 54.5}, {"input": [-47.5, 55.0], "expected": 55.0}, {"input": [-47.5, 55.5], "expected": 55.5}, {"input": [-47.5, 56.0], "expected": 56.0}, {"input": [-47.5, 56.5], "expected": 56.5}, {"input": [-47.5, 57.0], "expected": 57.0}, {"input": [-47.5, 57.5], "expected": 57.5}, {"input": [-47.5, 58.0], "expected": 58.0}, {"input": [-47.5, 58.5], "expected": 58.5}, {"input": [-47.5, 59.0], "expected": 59.0}, {"input": [-47.5, 59.5], "expected": 59.5}, {"input": [-47.5, 60.0], "expected": 60.0}, {"input": [-47.5, 60.5], "expected": 60.5}, {"input": [-47.5, 61.0], "expected": 61.0}, {"input": [-47.5, 61.5], "expected": 61.5}, {"input": [-47.5, 62.0], "expected": 62.0}, {"input": [-47.5, 62.5], "expected": 62.5}, {"input": [-47.5, 63.0], "expected": 63.0}, {"input": [-47.5, 63.5], "expected": 63.5}, {"input": [-47.5, 64.0], "expected": 64.0}, {"input": [-47.5, 64.5], "expected": 64.5}, {"input": [-47.5, 65.0], "expected": 65.0}, {"input": [-47.5, 65.5], "expected": 65.5}, {"input": [-47.5, 66.0], "expected": 66.0}, {"input": [-47.5, 66.5], "expected": 66.5}, {"input": [-47.5, 67.0], "expected": 67.0}, {"input": [-47.5, 67.5], "expected": 67.5}, {"input": [-47.5, 68.0], "expected": 68.0}, {"input": [-47.5, 68.5], "expected": 68.5}, {"input": [-47.5, 69.0], "expected": 69.0}, {"input": [-47.5, 69.5], "expected": 69.5}, {"input": [-47.5, 70.0], "expected": 70.0}, {"input": [-47.5, 70.5], "expected": 70.5}, {"input": [-47.5, 71.0], "expected": 71.0}, {"input": [-47.5, 71.5], "expected": 71.5}, {"input": [-47.5, 72.0], "expected": 72.0}, {"input": [-47.5, 72.5], "expected": 72.5}, {"input": [-47.5, 73.0], "expected": 73.0}, {"input": [-47.5, 73.5], "expected": 73.5}, {"input": [-47.5, 74.0], "expected": 74.0}, {"input": [-47.5, 74.5], "expected": 74.5}, {"input": [-47.5, 75.0], "expected": 75.0}, {"input": [-47.5, 75.5], "expected": 75.5}, {"input": [-47.5, 76.0], "expected": 76.0}, {"input": [-47.5, 76.5], "expected": 76.5}, {"input": [-47.5, 77.0], "expected": 77.0}, {"input": [-47.5, 77.5], "expected": 77.5}, {"input": [-47.5, 78.0], "expected": 78.0}, {"input": [-47.5, 78.5], "expected": 78.5}, {"input": [-47.5, 79.0], "expected": 79.0}, {"input": [-47.5, 79.5], "expected": 79.5}, {"input": [-47.5, 80.0], "expected": 80.0}, {"input": [-47.5, 80.5], "expected": 80.5}, {"input": [-47.5, 81.0], "expected": 81.0}, {"input": [-47.5, 81.5], "expected": 81.5}, {"input": [-47.5, 82.0], "expected": 82.0}, {"input": [-47.5, 82.5], "expected": 82.5}, {"input": [-47.5, 83.0], "expected": 83.0}, {"input": [-47.5, 83.5], "expected": 83.5}, {"input": [-47.5, 84.0], "expected": 84.0}, {"input": [-47.5, 84.5], "expected": 84.5}, {"input": [-47.5, 85.0], "expected": 85.0}, {"input": [-47.5, 85.5], "expected": 85.5}, {"input": [-47.5, 86.0], "expected": 86.0}, {"input": [-47.5, 86.5], "expected": 86.5}, {"input": [-47.5, 87.0], "expected": 87.0}, {"input": [-47.5, 87.5], "expected": 87.5}, {"input": [-47.5, 88.0], "expected": 88.0}, {"input": [-47.5, 88.5], "expected": 88.5}, {"input": [-47.5, 89.0], "expected": 89.0}, {"input": [-47.5, 89.5], "expected": 89.5}, {"input": [-47.5, 90.0], "expected": 90.0}, {"input": [-47.5, 90.5], "expected": 90.5}, {"input": [-47.5, 91.0], "expected": 91.0}, {"input": [-47.5, 91.5], "expected": 91.5}, {"input": [-47.5, 92.0], "expected": 92.0}, {"input": [-47.5, 92.5], "expected": 92.5}, {"input": [-47.5, 93.0], "expected": 93.0}, {"input": [-47.5, 93.5], "expected": 93.5}, {"input": [-47.5, 94.0], "expected": 94.0}, {"input": [-47.5, 94.5], "expected": 94.5}, {"input": [-47.5, 95.0], "expected": 95.0}, {"input": [-47.5, 95.5], "expected": 95.5}, {"input": [-47.5, 96.0], "expected": 96.0}, {"input": [-47.5, 96.5], "expected": 96.5}, {"input": [-47.5, 97.0], "expected": 97.0}, {"input": [-47.5, 97.5], "expected": 97.5}, {"input": [-47.5, 98.0], "expected": 98.0}, {"input": [-47.5, 98.5], "expected": 98.5}, {"input": [-47.5, 99.0], "expected": 99.0}, {"input": [-47.5, 99.5], "expected": 99.5}, {"input": [-47.0, -100.0], "expected": -47.0}, {"input": [-47.0, -99.5], "expected": -47.0}, {"input": [-47.0, -99.0], "expected": -47.0}, {"input": [-47.0, -98.5], "expected": -47.0}, {"input": [-47.0, -98.0], "expected": -47.0}, {"input": [-47.0, -97.5], "expected": -47.0}, {"input": [-47.0, -97.0], "expected": -47.0}, {"input": [-47.0, -96.5], "expected": -47.0}, {"input": [-47.0, -96.0], "expected": -47.0}, {"input": [-47.0, -95.5], "expected": -47.0}, {"input": [-47.0, -95.0], "expected": -47.0}, {"input": [-47.0, -94.5], "expected": -47.0}, {"input": [-47.0, -94.0], "expected": -47.0}, {"input": [-47.0, -93.5], "expected": -47.0}, {"input": [-47.0, -93.0], "expected": -47.0}, {"input": [-47.0, -92.5], "expected": -47.0}, {"input": [-47.0, -92.0], "expected": -47.0}, {"input": [-47.0, -91.5], "expected": -47.0}, {"input": [-47.0, -91.0], "expected": -47.0}, {"input": [-47.0, -90.5], "expected": -47.0}, {"input": [-47.0, -90.0], "expected": -47.0}, {"input": [-47.0, -89.5], "expected": -47.0}, {"input": [-47.0, -89.0], "expected": -47.0}, {"input": [-47.0, -88.5], "expected": -47.0}, {"input": [-47.0, -88.0], "expected": -47.0}, {"input": [-47.0, -87.5], "expected": -47.0}, {"input": [-47.0, -87.0], "expected": -47.0}, {"input": [-47.0, -86.5], "expected": -47.0}, {"input": [-47.0, -86.0], "expected": -47.0}, {"input": [-47.0, -85.5], "expected": -47.0}, {"input": [-47.0, -85.0], "expected": -47.0}, {"input": [-47.0, -84.5], "expected": -47.0}, {"input": [-47.0, -84.0], "expected": -47.0}, {"input": [-47.0, -83.5], "expected": -47.0}, {"input": [-47.0, -83.0], "expected": -47.0}, {"input": [-47.0, -82.5], "expected": -47.0}, {"input": [-47.0, -82.0], "expected": -47.0}, {"input": [-47.0, -81.5], "expected": -47.0}, {"input": [-47.0, -81.0], "expected": -47.0}, {"input": [-47.0, -80.5], "expected": -47.0}, {"input": [-47.0, -80.0], "expected": -46.99999999999999}, {"input": [-47.0, -79.5], "expected": -46.99999999999999}, {"input": [-47.0, -79.0], "expected": -46.999999999999986}, {"input": [-47.0, -78.5], "expected": -46.99999999999998}, {"input": [-47.0, -78.0], "expected": -46.999999999999964}, {"input": [-47.0, -77.5], "expected": -46.99999999999994}, {"input": [-47.0, -77.0], "expected": -46.99999999999991}, {"input": [-47.0, -76.5], "expected": -46.999999999999844}, {"input": [-47.0, -76.0], "expected": -46.999999999999744}, {"input": [-47.0, -75.5], "expected": -46.99999999999958}, {"input": [-47.0, -75.0], "expected": -46.99999999999931}, {"input": [-47.0, -74.5], "expected": -46.99999999999886}, {"input": [-47.0, -74.0], "expected": -46.99999999999812}, {"input": [-47.0, -73.5], "expected": -46.9999999999969}, {"input": [-47.0, -73.0], "expected": -46.99999999999489}, {"input": [-47.0, -72.5], "expected": -46.99999999999158}, {"input": [-47.0, -72.0], "expected": -46.99999999998611}, {"input": [-47.0, -71.5], "expected": -46.9999999999771}, {"input": [-47.0, -71.0], "expected": -46.99999999996225}, {"input": [-47.0, -70.5], "expected": -46.99999999993776}, {"input": [-47.0, -70.0], "expected": -46.99999999989738}, {"input": [-47.0, -69.5], "expected": -46.99999999983081}, {"input": [-47.0, -69.0], "expected": -46.999999999721055}, {"input": [-47.0, -68.5], "expected": -46.999999999540094}, {"input": [-47.0, -68.0], "expected": -46.999999999241744}, {"input": [-47.0, -67.5], "expected": -46.99999999874985}, {"input": [-47.0, -67.0], "expected": -46.99999999793884}, {"input": [-47.0, -66.5], "expected": -46.99999999660173}, {"input": [-47.0, -66.0], "expected": -46.99999999439721}, {"input": [-47.0, -65.5], "expected": -46.999999990762554}, {"input": [-47.0, -65.0], "expected": -46.99999998477002}, {"input": [-47.0, -64.5], "expected": -46.99999997489001}, {"input": [-47.0, -64.0], "expected": -46.999999958600625}, {"input": [-47.0, -63.5], "expected": -46.99999993174397}, {"input": [-47.0, -63.0], "expected": -46.99999988746483}, {"input": [-47.0, -62.5], "expected": -46.99999981446088}, {"input": [-47.0, -62.0], "expected": -46.999999694097724}, {"input": [-47.0, -61.5], "expected": -46.99999949565247}, {"input": [-47.0, -61.0], "expected": -46.999999168471625}, {"input": [-47.0, -60.5], "expected": -46.999998629041855}, {"input": [-47.0, -60.0], "expected": -46.99999773967315}, {"input": [-47.0, -59.5], "expected": -46.99999627335377}, {"input": [-47.0, -59.0], "expected": -46.99999385580652}, {"input": [-47.0, -58.5], "expected": -46.99998986995771}, {"input": [-47.0, -58.0], "expected": -46.99998329843868}, {"input": [-47.0, -57.5], "expected": -46.99997246392977}, {"input": [-47.0, -57.0], "expected": -46.99995460110078}, {"input": [-47.0, -56.5], "expected": -46.99992515097137}, {"input": [-47.0, -56.0], "expected": -46.99987659781028}, {"input": [-47.0, -55.5], "expected": -46.99979655232787}, {"input": [-47.0, -55.0], "expected": -46.9996645936271}, {"input": [-47.0, -54.5], "expected": -46.99944706852464}, {"input": [-47.0, -54.0], "expected": -46.99908853354623}, {"input": [-47.0, -53.5], "expected": -46.99849768984024}, {"input": [-47.0, -53.0], "expected": -46.99752431486227}, {"input": [-47.0, -52.5], "expected": -46.99592155672943}, {"input": [-47.0, -52.0], "expected": -46.99328465151088}, {"input": [-47.0, -51.5], "expected": -46.9889522551514}, {"input": [-47.0, -51.0], "expected": -46.98185007208219}, {"input": [-47.0, -50.5], "expected": -46.97024958172738}, {"input": [-47.0, -50.0], "expected": -46.951412648426256}, {"input": [-47.0, -49.5], "expected": -46.92111026570745}, {"input": [-47.0, -49.0], "expected": -46.87307198895703}, {"input": [-47.0, -48.5], "expected": -46.79858672201725}, {"input": [-47.0, -48.0], "expected": -46.68673831248178}, {"input": [-47.0, -47.5], "expected": -46.52592301581989}, {"input": [-47.0, -47.0], "expected": -46.30685281944005}, {"input": [-47.0, -46.5], "expected": -46.02592301581989}, {"input": [-47.0, -46.0], "expected": -45.68673831248178}, {"input": [-47.0, -45.5], "expected": -45.29858672201725}, {"input": [-47.0, -45.0], "expected": -44.87307198895703}, {"input": [-47.0, -44.5], "expected": -44.42111026570745}, {"input": [-47.0, -44.0], "expected": -43.951412648426256}, {"input": [-47.0, -43.5], "expected": -43.47024958172738}, {"input": [-47.0, -43.0], "expected": -42.98185007208219}, {"input": [-47.0, -42.5], "expected": -42.4889522551514}, {"input": [-47.0, -42.0], "expected": -41.99328465151088}, {"input": [-47.0, -41.5], "expected": -41.49592155672943}, {"input": [-47.0, -41.0], "expected": -40.99752431486227}, {"input": [-47.0, -40.5], "expected": -40.49849768984024}, {"input": [-47.0, -40.0], "expected": -39.99908853354623}, {"input": [-47.0, -39.5], "expected": -39.49944706852464}, {"input": [-47.0, -39.0], "expected": -38.9996645936271}, {"input": [-47.0, -38.5], "expected": -38.49979655232787}, {"input": [-47.0, -38.0], "expected": -37.99987659781028}, {"input": [-47.0, -37.5], "expected": -37.49992515097137}, {"input": [-47.0, -37.0], "expected": -36.99995460110078}, {"input": [-47.0, -36.5], "expected": -36.49997246392977}, {"input": [-47.0, -36.0], "expected": -35.99998329843868}, {"input": [-47.0, -35.5], "expected": -35.49998986995771}, {"input": [-47.0, -35.0], "expected": -34.99999385580652}, {"input": [-47.0, -34.5], "expected": -34.49999627335377}, {"input": [-47.0, -34.0], "expected": -33.99999773967315}, {"input": [-47.0, -33.5], "expected": -33.499998629041855}, {"input": [-47.0, -33.0], "expected": -32.999999168471625}, {"input": [-47.0, -32.5], "expected": -32.49999949565247}, {"input": [-47.0, -32.0], "expected": -31.999999694097728}, {"input": [-47.0, -31.5], "expected": -31.49999981446088}, {"input": [-47.0, -31.0], "expected": -30.99999988746483}, {"input": [-47.0, -30.5], "expected": -30.499999931743968}, {"input": [-47.0, -30.0], "expected": -29.999999958600625}, {"input": [-47.0, -29.5], "expected": -29.49999997489001}, {"input": [-47.0, -29.0], "expected": -28.99999998477002}, {"input": [-47.0, -28.5], "expected": -28.49999999076255}, {"input": [-47.0, -28.0], "expected": -27.999999994397204}, {"input": [-47.0, -27.5], "expected": -27.499999996601733}, {"input": [-47.0, -27.0], "expected": -26.999999997938847}, {"input": [-47.0, -26.5], "expected": -26.499999998749846}, {"input": [-47.0, -26.0], "expected": -25.999999999241744}, {"input": [-47.0, -25.5], "expected": -25.499999999540094}, {"input": [-47.0, -25.0], "expected": -24.99999999972105}, {"input": [-47.0, -24.5], "expected": -24.49999999983081}, {"input": [-47.0, -24.0], "expected": -23.99999999989738}, {"input": [-47.0, -23.5], "expected": -23.49999999993776}, {"input": [-47.0, -23.0], "expected": -22.99999999996225}, {"input": [-47.0, -22.5], "expected": -22.499999999977103}, {"input": [-47.0, -22.0], "expected": -21.999999999986112}, {"input": [-47.0, -21.5], "expected": -21.499999999991577}, {"input": [-47.0, -21.0], "expected": -20.99999999999489}, {"input": [-47.0, -20.5], "expected": -20.499999999996902}, {"input": [-47.0, -20.0], "expected": -19.99999999999812}, {"input": [-47.0, -19.5], "expected": -19.49999999999886}, {"input": [-47.0, -19.0], "expected": -18.999999999999307}, {"input": [-47.0, -18.5], "expected": -18.49999999999958}, {"input": [-47.0, -18.0], "expected": -17.999999999999744}, {"input": [-47.0, -17.5], "expected": -17.499999999999847}, {"input": [-47.0, -17.0], "expected": -16.999999999999908}, {"input": [-47.0, -16.5], "expected": -16.499999999999943}, {"input": [-47.0, -16.0], "expected": -15.999999999999966}, {"input": [-47.0, -15.5], "expected": -15.499999999999979}, {"input": [-47.0, -15.0], "expected": -14.999999999999988}, {"input": [-47.0, -14.5], "expected": -14.499999999999993}, {"input": [-47.0, -14.0], "expected": -13.999999999999995}, {"input": [-47.0, -13.5], "expected": -13.499999999999996}, {"input": [-47.0, -13.0], "expected": -12.999999999999998}, {"input": [-47.0, -12.5], "expected": -12.499999999999998}, {"input": [-47.0, -12.0], "expected": -12.0}, {"input": [-47.0, -11.5], "expected": -11.5}, {"input": [-47.0, -11.0], "expected": -11.0}, {"input": [-47.0, -10.5], "expected": -10.5}, {"input": [-47.0, -10.0], "expected": -10.0}, {"input": [-47.0, -9.5], "expected": -9.5}, {"input": [-47.0, -9.0], "expected": -9.0}, {"input": [-47.0, -8.5], "expected": -8.5}, {"input": [-47.0, -8.0], "expected": -8.0}, {"input": [-47.0, -7.5], "expected": -7.5}, {"input": [-47.0, -7.0], "expected": -7.0}, {"input": [-47.0, -6.5], "expected": -6.5}, {"input": [-47.0, -6.0], "expected": -6.0}, {"input": [-47.0, -5.5], "expected": -5.5}, {"input": [-47.0, -5.0], "expected": -5.0}, {"input": [-47.0, -4.5], "expected": -4.5}, {"input": [-47.0, -4.0], "expected": -4.0}, {"input": [-47.0, -3.5], "expected": -3.5}, {"input": [-47.0, -3.0], "expected": -3.0}, {"input": [-47.0, -2.5], "expected": -2.5}, {"input": [-47.0, -2.0], "expected": -2.0}, {"input": [-47.0, -1.5], "expected": -1.5}, {"input": [-47.0, -1.0], "expected": -1.0}, {"input": [-47.0, -0.5], "expected": -0.5}, {"input": [-47.0, 0.0], "expected": 3.873997628687187e-21}, {"input": [-47.0, 0.5], "expected": 0.5}, {"input": [-47.0, 1.0], "expected": 1.0}, {"input": [-47.0, 1.5], "expected": 1.5}, {"input": [-47.0, 2.0], "expected": 2.0}, {"input": [-47.0, 2.5], "expected": 2.5}, {"input": [-47.0, 3.0], "expected": 3.0}, {"input": [-47.0, 3.5], "expected": 3.5}, {"input": [-47.0, 4.0], "expected": 4.0}, {"input": [-47.0, 4.5], "expected": 4.5}, {"input": [-47.0, 5.0], "expected": 5.0}, {"input": [-47.0, 5.5], "expected": 5.5}, {"input": [-47.0, 6.0], "expected": 6.0}, {"input": [-47.0, 6.5], "expected": 6.5}, {"input": [-47.0, 7.0], "expected": 7.0}, {"input": [-47.0, 7.5], "expected": 7.5}, {"input": [-47.0, 8.0], "expected": 8.0}, {"input": [-47.0, 8.5], "expected": 8.5}, {"input": [-47.0, 9.0], "expected": 9.0}, {"input": [-47.0, 9.5], "expected": 9.5}, {"input": [-47.0, 10.0], "expected": 10.0}, {"input": [-47.0, 10.5], "expected": 10.5}, {"input": [-47.0, 11.0], "expected": 11.0}, {"input": [-47.0, 11.5], "expected": 11.5}, {"input": [-47.0, 12.0], "expected": 12.0}, {"input": [-47.0, 12.5], "expected": 12.5}, {"input": [-47.0, 13.0], "expected": 13.0}, {"input": [-47.0, 13.5], "expected": 13.5}, {"input": [-47.0, 14.0], "expected": 14.0}, {"input": [-47.0, 14.5], "expected": 14.5}, {"input": [-47.0, 15.0], "expected": 15.0}, {"input": [-47.0, 15.5], "expected": 15.5}, {"input": [-47.0, 16.0], "expected": 16.0}, {"input": [-47.0, 16.5], "expected": 16.5}, {"input": [-47.0, 17.0], "expected": 17.0}, {"input": [-47.0, 17.5], "expected": 17.5}, {"input": [-47.0, 18.0], "expected": 18.0}, {"input": [-47.0, 18.5], "expected": 18.5}, {"input": [-47.0, 19.0], "expected": 19.0}, {"input": [-47.0, 19.5], "expected": 19.5}, {"input": [-47.0, 20.0], "expected": 20.0}, {"input": [-47.0, 20.5], "expected": 20.5}, {"input": [-47.0, 21.0], "expected": 21.0}, {"input": [-47.0, 21.5], "expected": 21.5}, {"input": [-47.0, 22.0], "expected": 22.0}, {"input": [-47.0, 22.5], "expected": 22.5}, {"input": [-47.0, 23.0], "expected": 23.0}, {"input": [-47.0, 23.5], "expected": 23.5}, {"input": [-47.0, 24.0], "expected": 24.0}, {"input": [-47.0, 24.5], "expected": 24.5}, {"input": [-47.0, 25.0], "expected": 25.0}, {"input": [-47.0, 25.5], "expected": 25.5}, {"input": [-47.0, 26.0], "expected": 26.0}, {"input": [-47.0, 26.5], "expected": 26.5}, {"input": [-47.0, 27.0], "expected": 27.0}, {"input": [-47.0, 27.5], "expected": 27.5}, {"input": [-47.0, 28.0], "expected": 28.0}, {"input": [-47.0, 28.5], "expected": 28.5}, {"input": [-47.0, 29.0], "expected": 29.0}, {"input": [-47.0, 29.5], "expected": 29.5}, {"input": [-47.0, 30.0], "expected": 30.0}, {"input": [-47.0, 30.5], "expected": 30.5}, {"input": [-47.0, 31.0], "expected": 31.0}, {"input": [-47.0, 31.5], "expected": 31.5}, {"input": [-47.0, 32.0], "expected": 32.0}, {"input": [-47.0, 32.5], "expected": 32.5}, {"input": [-47.0, 33.0], "expected": 33.0}, {"input": [-47.0, 33.5], "expected": 33.5}, {"input": [-47.0, 34.0], "expected": 34.0}, {"input": [-47.0, 34.5], "expected": 34.5}, {"input": [-47.0, 35.0], "expected": 35.0}, {"input": [-47.0, 35.5], "expected": 35.5}, {"input": [-47.0, 36.0], "expected": 36.0}, {"input": [-47.0, 36.5], "expected": 36.5}, {"input": [-47.0, 37.0], "expected": 37.0}, {"input": [-47.0, 37.5], "expected": 37.5}, {"input": [-47.0, 38.0], "expected": 38.0}, {"input": [-47.0, 38.5], "expected": 38.5}, {"input": [-47.0, 39.0], "expected": 39.0}, {"input": [-47.0, 39.5], "expected": 39.5}, {"input": [-47.0, 40.0], "expected": 40.0}, {"input": [-47.0, 40.5], "expected": 40.5}, {"input": [-47.0, 41.0], "expected": 41.0}, {"input": [-47.0, 41.5], "expected": 41.5}, {"input": [-47.0, 42.0], "expected": 42.0}, {"input": [-47.0, 42.5], "expected": 42.5}, {"input": [-47.0, 43.0], "expected": 43.0}, {"input": [-47.0, 43.5], "expected": 43.5}, {"input": [-47.0, 44.0], "expected": 44.0}, {"input": [-47.0, 44.5], "expected": 44.5}, {"input": [-47.0, 45.0], "expected": 45.0}, {"input": [-47.0, 45.5], "expected": 45.5}, {"input": [-47.0, 46.0], "expected": 46.0}, {"input": [-47.0, 46.5], "expected": 46.5}, {"input": [-47.0, 47.0], "expected": 47.0}, {"input": [-47.0, 47.5], "expected": 47.5}, {"input": [-47.0, 48.0], "expected": 48.0}, {"input": [-47.0, 48.5], "expected": 48.5}, {"input": [-47.0, 49.0], "expected": 49.0}, {"input": [-47.0, 49.5], "expected": 49.5}, {"input": [-47.0, 50.0], "expected": 50.0}, {"input": [-47.0, 50.5], "expected": 50.5}, {"input": [-47.0, 51.0], "expected": 51.0}, {"input": [-47.0, 51.5], "expected": 51.5}, {"input": [-47.0, 52.0], "expected": 52.0}, {"input": [-47.0, 52.5], "expected": 52.5}, {"input": [-47.0, 53.0], "expected": 53.0}, {"input": [-47.0, 53.5], "expected": 53.5}, {"input": [-47.0, 54.0], "expected": 54.0}, {"input": [-47.0, 54.5], "expected": 54.5}, {"input": [-47.0, 55.0], "expected": 55.0}, {"input": [-47.0, 55.5], "expected": 55.5}, {"input": [-47.0, 56.0], "expected": 56.0}, {"input": [-47.0, 56.5], "expected": 56.5}, {"input": [-47.0, 57.0], "expected": 57.0}, {"input": [-47.0, 57.5], "expected": 57.5}, {"input": [-47.0, 58.0], "expected": 58.0}, {"input": [-47.0, 58.5], "expected": 58.5}, {"input": [-47.0, 59.0], "expected": 59.0}, {"input": [-47.0, 59.5], "expected": 59.5}, {"input": [-47.0, 60.0], "expected": 60.0}, {"input": [-47.0, 60.5], "expected": 60.5}, {"input": [-47.0, 61.0], "expected": 61.0}, {"input": [-47.0, 61.5], "expected": 61.5}, {"input": [-47.0, 62.0], "expected": 62.0}, {"input": [-47.0, 62.5], "expected": 62.5}, {"input": [-47.0, 63.0], "expected": 63.0}, {"input": [-47.0, 63.5], "expected": 63.5}, {"input": [-47.0, 64.0], "expected": 64.0}, {"input": [-47.0, 64.5], "expected": 64.5}, {"input": [-47.0, 65.0], "expected": 65.0}, {"input": [-47.0, 65.5], "expected": 65.5}, {"input": [-47.0, 66.0], "expected": 66.0}, {"input": [-47.0, 66.5], "expected": 66.5}, {"input": [-47.0, 67.0], "expected": 67.0}, {"input": [-47.0, 67.5], "expected": 67.5}, {"input": [-47.0, 68.0], "expected": 68.0}, {"input": [-47.0, 68.5], "expected": 68.5}, {"input": [-47.0, 69.0], "expected": 69.0}, {"input": [-47.0, 69.5], "expected": 69.5}, {"input": [-47.0, 70.0], "expected": 70.0}, {"input": [-47.0, 70.5], "expected": 70.5}, {"input": [-47.0, 71.0], "expected": 71.0}, {"input": [-47.0, 71.5], "expected": 71.5}, {"input": [-47.0, 72.0], "expected": 72.0}, {"input": [-47.0, 72.5], "expected": 72.5}, {"input": [-47.0, 73.0], "expected": 73.0}, {"input": [-47.0, 73.5], "expected": 73.5}, {"input": [-47.0, 74.0], "expected": 74.0}, {"input": [-47.0, 74.5], "expected": 74.5}, {"input": [-47.0, 75.0], "expected": 75.0}, {"input": [-47.0, 75.5], "expected": 75.5}, {"input": [-47.0, 76.0], "expected": 76.0}, {"input": [-47.0, 76.5], "expected": 76.5}, {"input": [-47.0, 77.0], "expected": 77.0}, {"input": [-47.0, 77.5], "expected": 77.5}, {"input": [-47.0, 78.0], "expected": 78.0}, {"input": [-47.0, 78.5], "expected": 78.5}, {"input": [-47.0, 79.0], "expected": 79.0}, {"input": [-47.0, 79.5], "expected": 79.5}, {"input": [-47.0, 80.0], "expected": 80.0}, {"input": [-47.0, 80.5], "expected": 80.5}, {"input": [-47.0, 81.0], "expected": 81.0}, {"input": [-47.0, 81.5], "expected": 81.5}, {"input": [-47.0, 82.0], "expected": 82.0}, {"input": [-47.0, 82.5], "expected": 82.5}, {"input": [-47.0, 83.0], "expected": 83.0}, {"input": [-47.0, 83.5], "expected": 83.5}, {"input": [-47.0, 84.0], "expected": 84.0}, {"input": [-47.0, 84.5], "expected": 84.5}, {"input": [-47.0, 85.0], "expected": 85.0}, {"input": [-47.0, 85.5], "expected": 85.5}, {"input": [-47.0, 86.0], "expected": 86.0}, {"input": [-47.0, 86.5], "expected": 86.5}, {"input": [-47.0, 87.0], "expected": 87.0}, {"input": [-47.0, 87.5], "expected": 87.5}, {"input": [-47.0, 88.0], "expected": 88.0}, {"input": [-47.0, 88.5], "expected": 88.5}, {"input": [-47.0, 89.0], "expected": 89.0}, {"input": [-47.0, 89.5], "expected": 89.5}, {"input": [-47.0, 90.0], "expected": 90.0}, {"input": [-47.0, 90.5], "expected": 90.5}, {"input": [-47.0, 91.0], "expected": 91.0}, {"input": [-47.0, 91.5], "expected": 91.5}, {"input": [-47.0, 92.0], "expected": 92.0}, {"input": [-47.0, 92.5], "expected": 92.5}, {"input": [-47.0, 93.0], "expected": 93.0}, {"input": [-47.0, 93.5], "expected": 93.5}, {"input": [-47.0, 94.0], "expected": 94.0}, {"input": [-47.0, 94.5], "expected": 94.5}, {"input": [-47.0, 95.0], "expected": 95.0}, {"input": [-47.0, 95.5], "expected": 95.5}, {"input": [-47.0, 96.0], "expected": 96.0}, {"input": [-47.0, 96.5], "expected": 96.5}, {"input": [-47.0, 97.0], "expected": 97.0}, {"input": [-47.0, 97.5], "expected": 97.5}, {"input": [-47.0, 98.0], "expected": 98.0}, {"input": [-47.0, 98.5], "expected": 98.5}, {"input": [-47.0, 99.0], "expected": 99.0}, {"input": [-47.0, 99.5], "expected": 99.5}, {"input": [-46.5, -100.0], "expected": -46.5}, {"input": [-46.5, -99.5], "expected": -46.5}, {"input": [-46.5, -99.0], "expected": -46.5}, {"input": [-46.5, -98.5], "expected": -46.5}, {"input": [-46.5, -98.0], "expected": -46.5}, {"input": [-46.5, -97.5], "expected": -46.5}, {"input": [-46.5, -97.0], "expected": -46.5}, {"input": [-46.5, -96.5], "expected": -46.5}, {"input": [-46.5, -96.0], "expected": -46.5}, {"input": [-46.5, -95.5], "expected": -46.5}, {"input": [-46.5, -95.0], "expected": -46.5}, {"input": [-46.5, -94.5], "expected": -46.5}, {"input": [-46.5, -94.0], "expected": -46.5}, {"input": [-46.5, -93.5], "expected": -46.5}, {"input": [-46.5, -93.0], "expected": -46.5}, {"input": [-46.5, -92.5], "expected": -46.5}, {"input": [-46.5, -92.0], "expected": -46.5}, {"input": [-46.5, -91.5], "expected": -46.5}, {"input": [-46.5, -91.0], "expected": -46.5}, {"input": [-46.5, -90.5], "expected": -46.5}, {"input": [-46.5, -90.0], "expected": -46.5}, {"input": [-46.5, -89.5], "expected": -46.5}, {"input": [-46.5, -89.0], "expected": -46.5}, {"input": [-46.5, -88.5], "expected": -46.5}, {"input": [-46.5, -88.0], "expected": -46.5}, {"input": [-46.5, -87.5], "expected": -46.5}, {"input": [-46.5, -87.0], "expected": -46.5}, {"input": [-46.5, -86.5], "expected": -46.5}, {"input": [-46.5, -86.0], "expected": -46.5}, {"input": [-46.5, -85.5], "expected": -46.5}, {"input": [-46.5, -85.0], "expected": -46.5}, {"input": [-46.5, -84.5], "expected": -46.5}, {"input": [-46.5, -84.0], "expected": -46.5}, {"input": [-46.5, -83.5], "expected": -46.5}, {"input": [-46.5, -83.0], "expected": -46.5}, {"input": [-46.5, -82.5], "expected": -46.5}, {"input": [-46.5, -82.0], "expected": -46.5}, {"input": [-46.5, -81.5], "expected": -46.5}, {"input": [-46.5, -81.0], "expected": -46.5}, {"input": [-46.5, -80.5], "expected": -46.5}, {"input": [-46.5, -80.0], "expected": -46.5}, {"input": [-46.5, -79.5], "expected": -46.49999999999999}, {"input": [-46.5, -79.0], "expected": -46.49999999999999}, {"input": [-46.5, -78.5], "expected": -46.499999999999986}, {"input": [-46.5, -78.0], "expected": -46.49999999999998}, {"input": [-46.5, -77.5], "expected": -46.499999999999964}, {"input": [-46.5, -77.0], "expected": -46.49999999999994}, {"input": [-46.5, -76.5], "expected": -46.49999999999991}, {"input": [-46.5, -76.0], "expected": -46.499999999999844}, {"input": [-46.5, -75.5], "expected": -46.499999999999744}, {"input": [-46.5, -75.0], "expected": -46.49999999999958}, {"input": [-46.5, -74.5], "expected": -46.49999999999931}, {"input": [-46.5, -74.0], "expected": -46.49999999999886}, {"input": [-46.5, -73.5], "expected": -46.49999999999812}, {"input": [-46.5, -73.0], "expected": -46.4999999999969}, {"input": [-46.5, -72.5], "expected": -46.49999999999489}, {"input": [-46.5, -72.0], "expected": -46.49999999999158}, {"input": [-46.5, -71.5], "expected": -46.49999999998611}, {"input": [-46.5, -71.0], "expected": -46.4999999999771}, {"input": [-46.5, -70.5], "expected": -46.49999999996225}, {"input": [-46.5, -70.0], "expected": -46.49999999993776}, {"input": [-46.5, -69.5], "expected": -46.49999999989738}, {"input": [-46.5, -69.0], "expected": -46.49999999983081}, {"input": [-46.5, -68.5], "expected": -46.499999999721055}, {"input": [-46.5, -68.0], "expected": -46.499999999540094}, {"input": [-46.5, -67.5], "expected": -46.499999999241744}, {"input": [-46.5, -67.0], "expected": -46.49999999874985}, {"input": [-46.5, -66.5], "expected": -46.49999999793884}, {"input": [-46.5, -66.0], "expected": -46.49999999660173}, {"input": [-46.5, -65.5], "expected": -46.49999999439721}, {"input": [-46.5, -65.0], "expected": -46.499999990762554}, {"input": [-46.5, -64.5], "expected": -46.49999998477002}, {"input": [-46.5, -64.0], "expected": -46.49999997489001}, {"input": [-46.5, -63.5], "expected": -46.499999958600625}, {"input": [-46.5, -63.0], "expected": -46.49999993174397}, {"input": [-46.5, -62.5], "expected": -46.49999988746483}, {"input": [-46.5, -62.0], "expected": -46.49999981446088}, {"input": [-46.5, -61.5], "expected": -46.499999694097724}, {"input": [-46.5, -61.0], "expected": -46.49999949565247}, {"input": [-46.5, -60.5], "expected": -46.499999168471625}, {"input": [-46.5, -60.0], "expected": -46.499998629041855}, {"input": [-46.5, -59.5], "expected": -46.49999773967315}, {"input": [-46.5, -59.0], "expected": -46.49999627335377}, {"input": [-46.5, -58.5], "expected": -46.49999385580652}, {"input": [-46.5, -58.0], "expected": -46.49998986995771}, {"input": [-46.5, -57.5], "expected": -46.49998329843868}, {"input": [-46.5, -57.0], "expected": -46.49997246392977}, {"input": [-46.5, -56.5], "expected": -46.49995460110078}, {"input": [-46.5, -56.0], "expected": -46.49992515097137}, {"input": [-46.5, -55.5], "expected": -46.49987659781028}, {"input": [-46.5, -55.0], "expected": -46.49979655232787}, {"input": [-46.5, -54.5], "expected": -46.4996645936271}, {"input": [-46.5, -54.0], "expected": -46.49944706852464}, {"input": [-46.5, -53.5], "expected": -46.49908853354623}, {"input": [-46.5, -53.0], "expected": -46.49849768984024}, {"input": [-46.5, -52.5], "expected": -46.49752431486227}, {"input": [-46.5, -52.0], "expected": -46.49592155672943}, {"input": [-46.5, -51.5], "expected": -46.49328465151088}, {"input": [-46.5, -51.0], "expected": -46.4889522551514}, {"input": [-46.5, -50.5], "expected": -46.48185007208219}, {"input": [-46.5, -50.0], "expected": -46.47024958172738}, {"input": [-46.5, -49.5], "expected": -46.451412648426256}, {"input": [-46.5, -49.0], "expected": -46.42111026570745}, {"input": [-46.5, -48.5], "expected": -46.37307198895703}, {"input": [-46.5, -48.0], "expected": -46.29858672201725}, {"input": [-46.5, -47.5], "expected": -46.18673831248178}, {"input": [-46.5, -47.0], "expected": -46.02592301581989}, {"input": [-46.5, -46.5], "expected": -45.80685281944005}, {"input": [-46.5, -46.0], "expected": -45.52592301581989}, {"input": [-46.5, -45.5], "expected": -45.18673831248178}, {"input": [-46.5, -45.0], "expected": -44.79858672201725}, {"input": [-46.5, -44.5], "expected": -44.37307198895703}, {"input": [-46.5, -44.0], "expected": -43.92111026570745}, {"input": [-46.5, -43.5], "expected": -43.451412648426256}, {"input": [-46.5, -43.0], "expected": -42.97024958172738}, {"input": [-46.5, -42.5], "expected": -42.48185007208219}, {"input": [-46.5, -42.0], "expected": -41.9889522551514}, {"input": [-46.5, -41.5], "expected": -41.49328465151088}, {"input": [-46.5, -41.0], "expected": -40.99592155672943}, {"input": [-46.5, -40.5], "expected": -40.49752431486227}, {"input": [-46.5, -40.0], "expected": -39.99849768984024}, {"input": [-46.5, -39.5], "expected": -39.49908853354623}, {"input": [-46.5, -39.0], "expected": -38.99944706852464}, {"input": [-46.5, -38.5], "expected": -38.4996645936271}, {"input": [-46.5, -38.0], "expected": -37.99979655232787}, {"input": [-46.5, -37.5], "expected": -37.49987659781028}, {"input": [-46.5, -37.0], "expected": -36.99992515097137}, {"input": [-46.5, -36.5], "expected": -36.49995460110078}, {"input": [-46.5, -36.0], "expected": -35.99997246392977}, {"input": [-46.5, -35.5], "expected": -35.49998329843868}, {"input": [-46.5, -35.0], "expected": -34.99998986995771}, {"input": [-46.5, -34.5], "expected": -34.49999385580652}, {"input": [-46.5, -34.0], "expected": -33.99999627335377}, {"input": [-46.5, -33.5], "expected": -33.49999773967315}, {"input": [-46.5, -33.0], "expected": -32.999998629041855}, {"input": [-46.5, -32.5], "expected": -32.499999168471625}, {"input": [-46.5, -32.0], "expected": -31.999999495652464}, {"input": [-46.5, -31.5], "expected": -31.499999694097728}, {"input": [-46.5, -31.0], "expected": -30.99999981446088}, {"input": [-46.5, -30.5], "expected": -30.49999988746483}, {"input": [-46.5, -30.0], "expected": -29.999999931743968}, {"input": [-46.5, -29.5], "expected": -29.499999958600625}, {"input": [-46.5, -29.0], "expected": -28.99999997489001}, {"input": [-46.5, -28.5], "expected": -28.49999998477002}, {"input": [-46.5, -28.0], "expected": -27.99999999076255}, {"input": [-46.5, -27.5], "expected": -27.499999994397204}, {"input": [-46.5, -27.0], "expected": -26.999999996601733}, {"input": [-46.5, -26.5], "expected": -26.499999997938847}, {"input": [-46.5, -26.0], "expected": -25.999999998749846}, {"input": [-46.5, -25.5], "expected": -25.499999999241744}, {"input": [-46.5, -25.0], "expected": -24.999999999540094}, {"input": [-46.5, -24.5], "expected": -24.49999999972105}, {"input": [-46.5, -24.0], "expected": -23.99999999983081}, {"input": [-46.5, -23.5], "expected": -23.49999999989738}, {"input": [-46.5, -23.0], "expected": -22.99999999993776}, {"input": [-46.5, -22.5], "expected": -22.49999999996225}, {"input": [-46.5, -22.0], "expected": -21.999999999977103}, {"input": [-46.5, -21.5], "expected": -21.499999999986112}, {"input": [-46.5, -21.0], "expected": -20.999999999991577}, {"input": [-46.5, -20.5], "expected": -20.49999999999489}, {"input": [-46.5, -20.0], "expected": -19.999999999996902}, {"input": [-46.5, -19.5], "expected": -19.49999999999812}, {"input": [-46.5, -19.0], "expected": -18.99999999999886}, {"input": [-46.5, -18.5], "expected": -18.499999999999307}, {"input": [-46.5, -18.0], "expected": -17.99999999999958}, {"input": [-46.5, -17.5], "expected": -17.499999999999744}, {"input": [-46.5, -17.0], "expected": -16.999999999999847}, {"input": [-46.5, -16.5], "expected": -16.499999999999908}, {"input": [-46.5, -16.0], "expected": -15.999999999999943}, {"input": [-46.5, -15.5], "expected": -15.499999999999966}, {"input": [-46.5, -15.0], "expected": -14.999999999999979}, {"input": [-46.5, -14.5], "expected": -14.499999999999988}, {"input": [-46.5, -14.0], "expected": -13.999999999999993}, {"input": [-46.5, -13.5], "expected": -13.499999999999995}, {"input": [-46.5, -13.0], "expected": -12.999999999999996}, {"input": [-46.5, -12.5], "expected": -12.499999999999998}, {"input": [-46.5, -12.0], "expected": -11.999999999999998}, {"input": [-46.5, -11.5], "expected": -11.5}, {"input": [-46.5, -11.0], "expected": -11.0}, {"input": [-46.5, -10.5], "expected": -10.5}, {"input": [-46.5, -10.0], "expected": -10.0}, {"input": [-46.5, -9.5], "expected": -9.5}, {"input": [-46.5, -9.0], "expected": -9.0}, {"input": [-46.5, -8.5], "expected": -8.5}, {"input": [-46.5, -8.0], "expected": -8.0}, {"input": [-46.5, -7.5], "expected": -7.5}, {"input": [-46.5, -7.0], "expected": -7.0}, {"input": [-46.5, -6.5], "expected": -6.5}, {"input": [-46.5, -6.0], "expected": -6.0}, {"input": [-46.5, -5.5], "expected": -5.5}, {"input": [-46.5, -5.0], "expected": -5.0}, {"input": [-46.5, -4.5], "expected": -4.5}, {"input": [-46.5, -4.0], "expected": -4.0}, {"input": [-46.5, -3.5], "expected": -3.5}, {"input": [-46.5, -3.0], "expected": -3.0}, {"input": [-46.5, -2.5], "expected": -2.5}, {"input": [-46.5, -2.0], "expected": -2.0}, {"input": [-46.5, -1.5], "expected": -1.5}, {"input": [-46.5, -1.0], "expected": -1.0}, {"input": [-46.5, -0.5], "expected": -0.5}, {"input": [-46.5, 0.0], "expected": 6.387142293058423e-21}, {"input": [-46.5, 0.5], "expected": 0.5}, {"input": [-46.5, 1.0], "expected": 1.0}, {"input": [-46.5, 1.5], "expected": 1.5}, {"input": [-46.5, 2.0], "expected": 2.0}, {"input": [-46.5, 2.5], "expected": 2.5}, {"input": [-46.5, 3.0], "expected": 3.0}, {"input": [-46.5, 3.5], "expected": 3.5}, {"input": [-46.5, 4.0], "expected": 4.0}, {"input": [-46.5, 4.5], "expected": 4.5}, {"input": [-46.5, 5.0], "expected": 5.0}, {"input": [-46.5, 5.5], "expected": 5.5}, {"input": [-46.5, 6.0], "expected": 6.0}, {"input": [-46.5, 6.5], "expected": 6.5}, {"input": [-46.5, 7.0], "expected": 7.0}, {"input": [-46.5, 7.5], "expected": 7.5}, {"input": [-46.5, 8.0], "expected": 8.0}, {"input": [-46.5, 8.5], "expected": 8.5}, {"input": [-46.5, 9.0], "expected": 9.0}, {"input": [-46.5, 9.5], "expected": 9.5}, {"input": [-46.5, 10.0], "expected": 10.0}, {"input": [-46.5, 10.5], "expected": 10.5}, {"input": [-46.5, 11.0], "expected": 11.0}, {"input": [-46.5, 11.5], "expected": 11.5}, {"input": [-46.5, 12.0], "expected": 12.0}, {"input": [-46.5, 12.5], "expected": 12.5}, {"input": [-46.5, 13.0], "expected": 13.0}, {"input": [-46.5, 13.5], "expected": 13.5}, {"input": [-46.5, 14.0], "expected": 14.0}, {"input": [-46.5, 14.5], "expected": 14.5}, {"input": [-46.5, 15.0], "expected": 15.0}, {"input": [-46.5, 15.5], "expected": 15.5}, {"input": [-46.5, 16.0], "expected": 16.0}, {"input": [-46.5, 16.5], "expected": 16.5}, {"input": [-46.5, 17.0], "expected": 17.0}, {"input": [-46.5, 17.5], "expected": 17.5}, {"input": [-46.5, 18.0], "expected": 18.0}, {"input": [-46.5, 18.5], "expected": 18.5}, {"input": [-46.5, 19.0], "expected": 19.0}, {"input": [-46.5, 19.5], "expected": 19.5}, {"input": [-46.5, 20.0], "expected": 20.0}, {"input": [-46.5, 20.5], "expected": 20.5}, {"input": [-46.5, 21.0], "expected": 21.0}, {"input": [-46.5, 21.5], "expected": 21.5}, {"input": [-46.5, 22.0], "expected": 22.0}, {"input": [-46.5, 22.5], "expected": 22.5}, {"input": [-46.5, 23.0], "expected": 23.0}, {"input": [-46.5, 23.5], "expected": 23.5}, {"input": [-46.5, 24.0], "expected": 24.0}, {"input": [-46.5, 24.5], "expected": 24.5}, {"input": [-46.5, 25.0], "expected": 25.0}, {"input": [-46.5, 25.5], "expected": 25.5}, {"input": [-46.5, 26.0], "expected": 26.0}, {"input": [-46.5, 26.5], "expected": 26.5}, {"input": [-46.5, 27.0], "expected": 27.0}, {"input": [-46.5, 27.5], "expected": 27.5}, {"input": [-46.5, 28.0], "expected": 28.0}, {"input": [-46.5, 28.5], "expected": 28.5}, {"input": [-46.5, 29.0], "expected": 29.0}, {"input": [-46.5, 29.5], "expected": 29.5}, {"input": [-46.5, 30.0], "expected": 30.0}, {"input": [-46.5, 30.5], "expected": 30.5}, {"input": [-46.5, 31.0], "expected": 31.0}, {"input": [-46.5, 31.5], "expected": 31.5}, {"input": [-46.5, 32.0], "expected": 32.0}, {"input": [-46.5, 32.5], "expected": 32.5}, {"input": [-46.5, 33.0], "expected": 33.0}, {"input": [-46.5, 33.5], "expected": 33.5}, {"input": [-46.5, 34.0], "expected": 34.0}, {"input": [-46.5, 34.5], "expected": 34.5}, {"input": [-46.5, 35.0], "expected": 35.0}, {"input": [-46.5, 35.5], "expected": 35.5}, {"input": [-46.5, 36.0], "expected": 36.0}, {"input": [-46.5, 36.5], "expected": 36.5}, {"input": [-46.5, 37.0], "expected": 37.0}, {"input": [-46.5, 37.5], "expected": 37.5}, {"input": [-46.5, 38.0], "expected": 38.0}, {"input": [-46.5, 38.5], "expected": 38.5}, {"input": [-46.5, 39.0], "expected": 39.0}, {"input": [-46.5, 39.5], "expected": 39.5}, {"input": [-46.5, 40.0], "expected": 40.0}, {"input": [-46.5, 40.5], "expected": 40.5}, {"input": [-46.5, 41.0], "expected": 41.0}, {"input": [-46.5, 41.5], "expected": 41.5}, {"input": [-46.5, 42.0], "expected": 42.0}, {"input": [-46.5, 42.5], "expected": 42.5}, {"input": [-46.5, 43.0], "expected": 43.0}, {"input": [-46.5, 43.5], "expected": 43.5}, {"input": [-46.5, 44.0], "expected": 44.0}, {"input": [-46.5, 44.5], "expected": 44.5}, {"input": [-46.5, 45.0], "expected": 45.0}, {"input": [-46.5, 45.5], "expected": 45.5}, {"input": [-46.5, 46.0], "expected": 46.0}, {"input": [-46.5, 46.5], "expected": 46.5}, {"input": [-46.5, 47.0], "expected": 47.0}, {"input": [-46.5, 47.5], "expected": 47.5}, {"input": [-46.5, 48.0], "expected": 48.0}, {"input": [-46.5, 48.5], "expected": 48.5}, {"input": [-46.5, 49.0], "expected": 49.0}, {"input": [-46.5, 49.5], "expected": 49.5}, {"input": [-46.5, 50.0], "expected": 50.0}, {"input": [-46.5, 50.5], "expected": 50.5}, {"input": [-46.5, 51.0], "expected": 51.0}, {"input": [-46.5, 51.5], "expected": 51.5}, {"input": [-46.5, 52.0], "expected": 52.0}, {"input": [-46.5, 52.5], "expected": 52.5}, {"input": [-46.5, 53.0], "expected": 53.0}, {"input": [-46.5, 53.5], "expected": 53.5}, {"input": [-46.5, 54.0], "expected": 54.0}, {"input": [-46.5, 54.5], "expected": 54.5}, {"input": [-46.5, 55.0], "expected": 55.0}, {"input": [-46.5, 55.5], "expected": 55.5}, {"input": [-46.5, 56.0], "expected": 56.0}, {"input": [-46.5, 56.5], "expected": 56.5}, {"input": [-46.5, 57.0], "expected": 57.0}, {"input": [-46.5, 57.5], "expected": 57.5}, {"input": [-46.5, 58.0], "expected": 58.0}, {"input": [-46.5, 58.5], "expected": 58.5}, {"input": [-46.5, 59.0], "expected": 59.0}, {"input": [-46.5, 59.5], "expected": 59.5}, {"input": [-46.5, 60.0], "expected": 60.0}, {"input": [-46.5, 60.5], "expected": 60.5}, {"input": [-46.5, 61.0], "expected": 61.0}, {"input": [-46.5, 61.5], "expected": 61.5}, {"input": [-46.5, 62.0], "expected": 62.0}, {"input": [-46.5, 62.5], "expected": 62.5}, {"input": [-46.5, 63.0], "expected": 63.0}, {"input": [-46.5, 63.5], "expected": 63.5}, {"input": [-46.5, 64.0], "expected": 64.0}, {"input": [-46.5, 64.5], "expected": 64.5}, {"input": [-46.5, 65.0], "expected": 65.0}, {"input": [-46.5, 65.5], "expected": 65.5}, {"input": [-46.5, 66.0], "expected": 66.0}, {"input": [-46.5, 66.5], "expected": 66.5}, {"input": [-46.5, 67.0], "expected": 67.0}, {"input": [-46.5, 67.5], "expected": 67.5}, {"input": [-46.5, 68.0], "expected": 68.0}, {"input": [-46.5, 68.5], "expected": 68.5}, {"input": [-46.5, 69.0], "expected": 69.0}, {"input": [-46.5, 69.5], "expected": 69.5}, {"input": [-46.5, 70.0], "expected": 70.0}, {"input": [-46.5, 70.5], "expected": 70.5}, {"input": [-46.5, 71.0], "expected": 71.0}, {"input": [-46.5, 71.5], "expected": 71.5}, {"input": [-46.5, 72.0], "expected": 72.0}, {"input": [-46.5, 72.5], "expected": 72.5}, {"input": [-46.5, 73.0], "expected": 73.0}, {"input": [-46.5, 73.5], "expected": 73.5}, {"input": [-46.5, 74.0], "expected": 74.0}, {"input": [-46.5, 74.5], "expected": 74.5}, {"input": [-46.5, 75.0], "expected": 75.0}, {"input": [-46.5, 75.5], "expected": 75.5}, {"input": [-46.5, 76.0], "expected": 76.0}, {"input": [-46.5, 76.5], "expected": 76.5}, {"input": [-46.5, 77.0], "expected": 77.0}, {"input": [-46.5, 77.5], "expected": 77.5}, {"input": [-46.5, 78.0], "expected": 78.0}, {"input": [-46.5, 78.5], "expected": 78.5}, {"input": [-46.5, 79.0], "expected": 79.0}, {"input": [-46.5, 79.5], "expected": 79.5}, {"input": [-46.5, 80.0], "expected": 80.0}, {"input": [-46.5, 80.5], "expected": 80.5}, {"input": [-46.5, 81.0], "expected": 81.0}, {"input": [-46.5, 81.5], "expected": 81.5}, {"input": [-46.5, 82.0], "expected": 82.0}, {"input": [-46.5, 82.5], "expected": 82.5}, {"input": [-46.5, 83.0], "expected": 83.0}, {"input": [-46.5, 83.5], "expected": 83.5}, {"input": [-46.5, 84.0], "expected": 84.0}, {"input": [-46.5, 84.5], "expected": 84.5}, {"input": [-46.5, 85.0], "expected": 85.0}, {"input": [-46.5, 85.5], "expected": 85.5}, {"input": [-46.5, 86.0], "expected": 86.0}, {"input": [-46.5, 86.5], "expected": 86.5}, {"input": [-46.5, 87.0], "expected": 87.0}, {"input": [-46.5, 87.5], "expected": 87.5}, {"input": [-46.5, 88.0], "expected": 88.0}, {"input": [-46.5, 88.5], "expected": 88.5}, {"input": [-46.5, 89.0], "expected": 89.0}, {"input": [-46.5, 89.5], "expected": 89.5}, {"input": [-46.5, 90.0], "expected": 90.0}, {"input": [-46.5, 90.5], "expected": 90.5}, {"input": [-46.5, 91.0], "expected": 91.0}, {"input": [-46.5, 91.5], "expected": 91.5}, {"input": [-46.5, 92.0], "expected": 92.0}, {"input": [-46.5, 92.5], "expected": 92.5}, {"input": [-46.5, 93.0], "expected": 93.0}, {"input": [-46.5, 93.5], "expected": 93.5}, {"input": [-46.5, 94.0], "expected": 94.0}, {"input": [-46.5, 94.5], "expected": 94.5}, {"input": [-46.5, 95.0], "expected": 95.0}, {"input": [-46.5, 95.5], "expected": 95.5}, {"input": [-46.5, 96.0], "expected": 96.0}, {"input": [-46.5, 96.5], "expected": 96.5}, {"input": [-46.5, 97.0], "expected": 97.0}, {"input": [-46.5, 97.5], "expected": 97.5}, {"input": [-46.5, 98.0], "expected": 98.0}, {"input": [-46.5, 98.5], "expected": 98.5}, {"input": [-46.5, 99.0], "expected": 99.0}, {"input": [-46.5, 99.5], "expected": 99.5}, {"input": [-46.0, -100.0], "expected": -46.0}, {"input": [-46.0, -99.5], "expected": -46.0}, {"input": [-46.0, -99.0], "expected": -46.0}, {"input": [-46.0, -98.5], "expected": -46.0}, {"input": [-46.0, -98.0], "expected": -46.0}, {"input": [-46.0, -97.5], "expected": -46.0}, {"input": [-46.0, -97.0], "expected": -46.0}, {"input": [-46.0, -96.5], "expected": -46.0}, {"input": [-46.0, -96.0], "expected": -46.0}, {"input": [-46.0, -95.5], "expected": -46.0}, {"input": [-46.0, -95.0], "expected": -46.0}, {"input": [-46.0, -94.5], "expected": -46.0}, {"input": [-46.0, -94.0], "expected": -46.0}, {"input": [-46.0, -93.5], "expected": -46.0}, {"input": [-46.0, -93.0], "expected": -46.0}, {"input": [-46.0, -92.5], "expected": -46.0}, {"input": [-46.0, -92.0], "expected": -46.0}, {"input": [-46.0, -91.5], "expected": -46.0}, {"input": [-46.0, -91.0], "expected": -46.0}, {"input": [-46.0, -90.5], "expected": -46.0}, {"input": [-46.0, -90.0], "expected": -46.0}, {"input": [-46.0, -89.5], "expected": -46.0}, {"input": [-46.0, -89.0], "expected": -46.0}, {"input": [-46.0, -88.5], "expected": -46.0}, {"input": [-46.0, -88.0], "expected": -46.0}, {"input": [-46.0, -87.5], "expected": -46.0}, {"input": [-46.0, -87.0], "expected": -46.0}, {"input": [-46.0, -86.5], "expected": -46.0}, {"input": [-46.0, -86.0], "expected": -46.0}, {"input": [-46.0, -85.5], "expected": -46.0}, {"input": [-46.0, -85.0], "expected": -46.0}, {"input": [-46.0, -84.5], "expected": -46.0}, {"input": [-46.0, -84.0], "expected": -46.0}, {"input": [-46.0, -83.5], "expected": -46.0}, {"input": [-46.0, -83.0], "expected": -46.0}, {"input": [-46.0, -82.5], "expected": -46.0}, {"input": [-46.0, -82.0], "expected": -46.0}, {"input": [-46.0, -81.5], "expected": -46.0}, {"input": [-46.0, -81.0], "expected": -46.0}, {"input": [-46.0, -80.5], "expected": -46.0}, {"input": [-46.0, -80.0], "expected": -46.0}, {"input": [-46.0, -79.5], "expected": -46.0}, {"input": [-46.0, -79.0], "expected": -45.99999999999999}, {"input": [-46.0, -78.5], "expected": -45.99999999999999}, {"input": [-46.0, -78.0], "expected": -45.999999999999986}, {"input": [-46.0, -77.5], "expected": -45.99999999999998}, {"input": [-46.0, -77.0], "expected": -45.999999999999964}, {"input": [-46.0, -76.5], "expected": -45.99999999999994}, {"input": [-46.0, -76.0], "expected": -45.99999999999991}, {"input": [-46.0, -75.5], "expected": -45.999999999999844}, {"input": [-46.0, -75.0], "expected": -45.999999999999744}, {"input": [-46.0, -74.5], "expected": -45.99999999999958}, {"input": [-46.0, -74.0], "expected": -45.99999999999931}, {"input": [-46.0, -73.5], "expected": -45.99999999999886}, {"input": [-46.0, -73.0], "expected": -45.99999999999812}, {"input": [-46.0, -72.5], "expected": -45.9999999999969}, {"input": [-46.0, -72.0], "expected": -45.99999999999489}, {"input": [-46.0, -71.5], "expected": -45.99999999999158}, {"input": [-46.0, -71.0], "expected": -45.99999999998611}, {"input": [-46.0, -70.5], "expected": -45.9999999999771}, {"input": [-46.0, -70.0], "expected": -45.99999999996225}, {"input": [-46.0, -69.5], "expected": -45.99999999993776}, {"input": [-46.0, -69.0], "expected": -45.99999999989738}, {"input": [-46.0, -68.5], "expected": -45.99999999983081}, {"input": [-46.0, -68.0], "expected": -45.999999999721055}, {"input": [-46.0, -67.5], "expected": -45.999999999540094}, {"input": [-46.0, -67.0], "expected": -45.999999999241744}, {"input": [-46.0, -66.5], "expected": -45.99999999874985}, {"input": [-46.0, -66.0], "expected": -45.99999999793884}, {"input": [-46.0, -65.5], "expected": -45.99999999660173}, {"input": [-46.0, -65.0], "expected": -45.99999999439721}, {"input": [-46.0, -64.5], "expected": -45.999999990762554}, {"input": [-46.0, -64.0], "expected": -45.99999998477002}, {"input": [-46.0, -63.5], "expected": -45.99999997489001}, {"input": [-46.0, -63.0], "expected": -45.999999958600625}, {"input": [-46.0, -62.5], "expected": -45.99999993174397}, {"input": [-46.0, -62.0], "expected": -45.99999988746483}, {"input": [-46.0, -61.5], "expected": -45.99999981446088}, {"input": [-46.0, -61.0], "expected": -45.999999694097724}, {"input": [-46.0, -60.5], "expected": -45.99999949565247}, {"input": [-46.0, -60.0], "expected": -45.999999168471625}, {"input": [-46.0, -59.5], "expected": -45.999998629041855}, {"input": [-46.0, -59.0], "expected": -45.99999773967315}, {"input": [-46.0, -58.5], "expected": -45.99999627335377}, {"input": [-46.0, -58.0], "expected": -45.99999385580652}, {"input": [-46.0, -57.5], "expected": -45.99998986995771}, {"input": [-46.0, -57.0], "expected": -45.99998329843868}, {"input": [-46.0, -56.5], "expected": -45.99997246392977}, {"input": [-46.0, -56.0], "expected": -45.99995460110078}, {"input": [-46.0, -55.5], "expected": -45.99992515097137}, {"input": [-46.0, -55.0], "expected": -45.99987659781028}, {"input": [-46.0, -54.5], "expected": -45.99979655232787}, {"input": [-46.0, -54.0], "expected": -45.9996645936271}, {"input": [-46.0, -53.5], "expected": -45.99944706852464}, {"input": [-46.0, -53.0], "expected": -45.99908853354623}, {"input": [-46.0, -52.5], "expected": -45.99849768984024}, {"input": [-46.0, -52.0], "expected": -45.99752431486227}, {"input": [-46.0, -51.5], "expected": -45.99592155672943}, {"input": [-46.0, -51.0], "expected": -45.99328465151088}, {"input": [-46.0, -50.5], "expected": -45.9889522551514}, {"input": [-46.0, -50.0], "expected": -45.98185007208219}, {"input": [-46.0, -49.5], "expected": -45.97024958172738}, {"input": [-46.0, -49.0], "expected": -45.951412648426256}, {"input": [-46.0, -48.5], "expected": -45.92111026570745}, {"input": [-46.0, -48.0], "expected": -45.87307198895703}, {"input": [-46.0, -47.5], "expected": -45.79858672201725}, {"input": [-46.0, -47.0], "expected": -45.68673831248178}, {"input": [-46.0, -46.5], "expected": -45.52592301581989}, {"input": [-46.0, -46.0], "expected": -45.30685281944005}, {"input": [-46.0, -45.5], "expected": -45.02592301581989}, {"input": [-46.0, -45.0], "expected": -44.68673831248178}, {"input": [-46.0, -44.5], "expected": -44.29858672201725}, {"input": [-46.0, -44.0], "expected": -43.87307198895703}, {"input": [-46.0, -43.5], "expected": -43.42111026570745}, {"input": [-46.0, -43.0], "expected": -42.951412648426256}, {"input": [-46.0, -42.5], "expected": -42.47024958172738}, {"input": [-46.0, -42.0], "expected": -41.98185007208219}, {"input": [-46.0, -41.5], "expected": -41.4889522551514}, {"input": [-46.0, -41.0], "expected": -40.99328465151088}, {"input": [-46.0, -40.5], "expected": -40.49592155672943}, {"input": [-46.0, -40.0], "expected": -39.99752431486227}, {"input": [-46.0, -39.5], "expected": -39.49849768984024}, {"input": [-46.0, -39.0], "expected": -38.99908853354623}, {"input": [-46.0, -38.5], "expected": -38.49944706852464}, {"input": [-46.0, -38.0], "expected": -37.9996645936271}, {"input": [-46.0, -37.5], "expected": -37.49979655232787}, {"input": [-46.0, -37.0], "expected": -36.99987659781028}, {"input": [-46.0, -36.5], "expected": -36.49992515097137}, {"input": [-46.0, -36.0], "expected": -35.99995460110078}, {"input": [-46.0, -35.5], "expected": -35.49997246392977}, {"input": [-46.0, -35.0], "expected": -34.99998329843868}, {"input": [-46.0, -34.5], "expected": -34.49998986995771}, {"input": [-46.0, -34.0], "expected": -33.99999385580652}, {"input": [-46.0, -33.5], "expected": -33.49999627335377}, {"input": [-46.0, -33.0], "expected": -32.99999773967315}, {"input": [-46.0, -32.5], "expected": -32.499998629041855}, {"input": [-46.0, -32.0], "expected": -31.999999168471625}, {"input": [-46.0, -31.5], "expected": -31.499999495652464}, {"input": [-46.0, -31.0], "expected": -30.999999694097728}, {"input": [-46.0, -30.5], "expected": -30.49999981446088}, {"input": [-46.0, -30.0], "expected": -29.99999988746483}, {"input": [-46.0, -29.5], "expected": -29.499999931743968}, {"input": [-46.0, -29.0], "expected": -28.999999958600625}, {"input": [-46.0, -28.5], "expected": -28.49999997489001}, {"input": [-46.0, -28.0], "expected": -27.99999998477002}, {"input": [-46.0, -27.5], "expected": -27.49999999076255}, {"input": [-46.0, -27.0], "expected": -26.999999994397204}, {"input": [-46.0, -26.5], "expected": -26.499999996601733}, {"input": [-46.0, -26.0], "expected": -25.999999997938847}, {"input": [-46.0, -25.5], "expected": -25.499999998749846}, {"input": [-46.0, -25.0], "expected": -24.999999999241744}, {"input": [-46.0, -24.5], "expected": -24.499999999540094}, {"input": [-46.0, -24.0], "expected": -23.99999999972105}, {"input": [-46.0, -23.5], "expected": -23.49999999983081}, {"input": [-46.0, -23.0], "expected": -22.99999999989738}, {"input": [-46.0, -22.5], "expected": -22.49999999993776}, {"input": [-46.0, -22.0], "expected": -21.99999999996225}, {"input": [-46.0, -21.5], "expected": -21.499999999977103}, {"input": [-46.0, -21.0], "expected": -20.999999999986112}, {"input": [-46.0, -20.5], "expected": -20.499999999991577}, {"input": [-46.0, -20.0], "expected": -19.99999999999489}, {"input": [-46.0, -19.5], "expected": -19.499999999996902}, {"input": [-46.0, -19.0], "expected": -18.99999999999812}, {"input": [-46.0, -18.5], "expected": -18.49999999999886}, {"input": [-46.0, -18.0], "expected": -17.999999999999307}, {"input": [-46.0, -17.5], "expected": -17.49999999999958}, {"input": [-46.0, -17.0], "expected": -16.999999999999744}, {"input": [-46.0, -16.5], "expected": -16.499999999999847}, {"input": [-46.0, -16.0], "expected": -15.999999999999906}, {"input": [-46.0, -15.5], "expected": -15.499999999999943}, {"input": [-46.0, -15.0], "expected": -14.999999999999966}, {"input": [-46.0, -14.5], "expected": -14.499999999999979}, {"input": [-46.0, -14.0], "expected": -13.999999999999988}, {"input": [-46.0, -13.5], "expected": -13.499999999999993}, {"input": [-46.0, -13.0], "expected": -12.999999999999995}, {"input": [-46.0, -12.5], "expected": -12.499999999999996}, {"input": [-46.0, -12.0], "expected": -11.999999999999998}, {"input": [-46.0, -11.5], "expected": -11.499999999999998}, {"input": [-46.0, -11.0], "expected": -11.0}, {"input": [-46.0, -10.5], "expected": -10.5}, {"input": [-46.0, -10.0], "expected": -10.0}, {"input": [-46.0, -9.5], "expected": -9.5}, {"input": [-46.0, -9.0], "expected": -9.0}, {"input": [-46.0, -8.5], "expected": -8.5}, {"input": [-46.0, -8.0], "expected": -8.0}, {"input": [-46.0, -7.5], "expected": -7.5}, {"input": [-46.0, -7.0], "expected": -7.0}, {"input": [-46.0, -6.5], "expected": -6.5}, {"input": [-46.0, -6.0], "expected": -6.0}, {"input": [-46.0, -5.5], "expected": -5.5}, {"input": [-46.0, -5.0], "expected": -5.0}, {"input": [-46.0, -4.5], "expected": -4.5}, {"input": [-46.0, -4.0], "expected": -4.0}, {"input": [-46.0, -3.5], "expected": -3.5}, {"input": [-46.0, -3.0], "expected": -3.0}, {"input": [-46.0, -2.5], "expected": -2.5}, {"input": [-46.0, -2.0], "expected": -2.0}, {"input": [-46.0, -1.5], "expected": -1.5}, {"input": [-46.0, -1.0], "expected": -1.0}, {"input": [-46.0, -0.5], "expected": -0.5}, {"input": [-46.0, 0.0], "expected": 1.0530617357553812e-20}, {"input": [-46.0, 0.5], "expected": 0.5}, {"input": [-46.0, 1.0], "expected": 1.0}, {"input": [-46.0, 1.5], "expected": 1.5}, {"input": [-46.0, 2.0], "expected": 2.0}, {"input": [-46.0, 2.5], "expected": 2.5}, {"input": [-46.0, 3.0], "expected": 3.0}, {"input": [-46.0, 3.5], "expected": 3.5}, {"input": [-46.0, 4.0], "expected": 4.0}, {"input": [-46.0, 4.5], "expected": 4.5}, {"input": [-46.0, 5.0], "expected": 5.0}, {"input": [-46.0, 5.5], "expected": 5.5}, {"input": [-46.0, 6.0], "expected": 6.0}, {"input": [-46.0, 6.5], "expected": 6.5}, {"input": [-46.0, 7.0], "expected": 7.0}, {"input": [-46.0, 7.5], "expected": 7.5}, {"input": [-46.0, 8.0], "expected": 8.0}, {"input": [-46.0, 8.5], "expected": 8.5}, {"input": [-46.0, 9.0], "expected": 9.0}, {"input": [-46.0, 9.5], "expected": 9.5}, {"input": [-46.0, 10.0], "expected": 10.0}, {"input": [-46.0, 10.5], "expected": 10.5}, {"input": [-46.0, 11.0], "expected": 11.0}, {"input": [-46.0, 11.5], "expected": 11.5}, {"input": [-46.0, 12.0], "expected": 12.0}, {"input": [-46.0, 12.5], "expected": 12.5}, {"input": [-46.0, 13.0], "expected": 13.0}, {"input": [-46.0, 13.5], "expected": 13.5}, {"input": [-46.0, 14.0], "expected": 14.0}, {"input": [-46.0, 14.5], "expected": 14.5}, {"input": [-46.0, 15.0], "expected": 15.0}, {"input": [-46.0, 15.5], "expected": 15.5}, {"input": [-46.0, 16.0], "expected": 16.0}, {"input": [-46.0, 16.5], "expected": 16.5}, {"input": [-46.0, 17.0], "expected": 17.0}, {"input": [-46.0, 17.5], "expected": 17.5}, {"input": [-46.0, 18.0], "expected": 18.0}, {"input": [-46.0, 18.5], "expected": 18.5}, {"input": [-46.0, 19.0], "expected": 19.0}, {"input": [-46.0, 19.5], "expected": 19.5}, {"input": [-46.0, 20.0], "expected": 20.0}, {"input": [-46.0, 20.5], "expected": 20.5}, {"input": [-46.0, 21.0], "expected": 21.0}, {"input": [-46.0, 21.5], "expected": 21.5}, {"input": [-46.0, 22.0], "expected": 22.0}, {"input": [-46.0, 22.5], "expected": 22.5}, {"input": [-46.0, 23.0], "expected": 23.0}, {"input": [-46.0, 23.5], "expected": 23.5}, {"input": [-46.0, 24.0], "expected": 24.0}, {"input": [-46.0, 24.5], "expected": 24.5}, {"input": [-46.0, 25.0], "expected": 25.0}, {"input": [-46.0, 25.5], "expected": 25.5}, {"input": [-46.0, 26.0], "expected": 26.0}, {"input": [-46.0, 26.5], "expected": 26.5}, {"input": [-46.0, 27.0], "expected": 27.0}, {"input": [-46.0, 27.5], "expected": 27.5}, {"input": [-46.0, 28.0], "expected": 28.0}, {"input": [-46.0, 28.5], "expected": 28.5}, {"input": [-46.0, 29.0], "expected": 29.0}, {"input": [-46.0, 29.5], "expected": 29.5}, {"input": [-46.0, 30.0], "expected": 30.0}, {"input": [-46.0, 30.5], "expected": 30.5}, {"input": [-46.0, 31.0], "expected": 31.0}, {"input": [-46.0, 31.5], "expected": 31.5}, {"input": [-46.0, 32.0], "expected": 32.0}, {"input": [-46.0, 32.5], "expected": 32.5}, {"input": [-46.0, 33.0], "expected": 33.0}, {"input": [-46.0, 33.5], "expected": 33.5}, {"input": [-46.0, 34.0], "expected": 34.0}, {"input": [-46.0, 34.5], "expected": 34.5}, {"input": [-46.0, 35.0], "expected": 35.0}, {"input": [-46.0, 35.5], "expected": 35.5}, {"input": [-46.0, 36.0], "expected": 36.0}, {"input": [-46.0, 36.5], "expected": 36.5}, {"input": [-46.0, 37.0], "expected": 37.0}, {"input": [-46.0, 37.5], "expected": 37.5}, {"input": [-46.0, 38.0], "expected": 38.0}, {"input": [-46.0, 38.5], "expected": 38.5}, {"input": [-46.0, 39.0], "expected": 39.0}, {"input": [-46.0, 39.5], "expected": 39.5}, {"input": [-46.0, 40.0], "expected": 40.0}, {"input": [-46.0, 40.5], "expected": 40.5}, {"input": [-46.0, 41.0], "expected": 41.0}, {"input": [-46.0, 41.5], "expected": 41.5}, {"input": [-46.0, 42.0], "expected": 42.0}, {"input": [-46.0, 42.5], "expected": 42.5}, {"input": [-46.0, 43.0], "expected": 43.0}, {"input": [-46.0, 43.5], "expected": 43.5}, {"input": [-46.0, 44.0], "expected": 44.0}, {"input": [-46.0, 44.5], "expected": 44.5}, {"input": [-46.0, 45.0], "expected": 45.0}, {"input": [-46.0, 45.5], "expected": 45.5}, {"input": [-46.0, 46.0], "expected": 46.0}, {"input": [-46.0, 46.5], "expected": 46.5}, {"input": [-46.0, 47.0], "expected": 47.0}, {"input": [-46.0, 47.5], "expected": 47.5}, {"input": [-46.0, 48.0], "expected": 48.0}, {"input": [-46.0, 48.5], "expected": 48.5}, {"input": [-46.0, 49.0], "expected": 49.0}, {"input": [-46.0, 49.5], "expected": 49.5}, {"input": [-46.0, 50.0], "expected": 50.0}, {"input": [-46.0, 50.5], "expected": 50.5}, {"input": [-46.0, 51.0], "expected": 51.0}, {"input": [-46.0, 51.5], "expected": 51.5}, {"input": [-46.0, 52.0], "expected": 52.0}, {"input": [-46.0, 52.5], "expected": 52.5}, {"input": [-46.0, 53.0], "expected": 53.0}, {"input": [-46.0, 53.5], "expected": 53.5}, {"input": [-46.0, 54.0], "expected": 54.0}, {"input": [-46.0, 54.5], "expected": 54.5}, {"input": [-46.0, 55.0], "expected": 55.0}, {"input": [-46.0, 55.5], "expected": 55.5}, {"input": [-46.0, 56.0], "expected": 56.0}, {"input": [-46.0, 56.5], "expected": 56.5}, {"input": [-46.0, 57.0], "expected": 57.0}, {"input": [-46.0, 57.5], "expected": 57.5}, {"input": [-46.0, 58.0], "expected": 58.0}, {"input": [-46.0, 58.5], "expected": 58.5}, {"input": [-46.0, 59.0], "expected": 59.0}, {"input": [-46.0, 59.5], "expected": 59.5}, {"input": [-46.0, 60.0], "expected": 60.0}, {"input": [-46.0, 60.5], "expected": 60.5}, {"input": [-46.0, 61.0], "expected": 61.0}, {"input": [-46.0, 61.5], "expected": 61.5}, {"input": [-46.0, 62.0], "expected": 62.0}, {"input": [-46.0, 62.5], "expected": 62.5}, {"input": [-46.0, 63.0], "expected": 63.0}, {"input": [-46.0, 63.5], "expected": 63.5}, {"input": [-46.0, 64.0], "expected": 64.0}, {"input": [-46.0, 64.5], "expected": 64.5}, {"input": [-46.0, 65.0], "expected": 65.0}, {"input": [-46.0, 65.5], "expected": 65.5}, {"input": [-46.0, 66.0], "expected": 66.0}, {"input": [-46.0, 66.5], "expected": 66.5}, {"input": [-46.0, 67.0], "expected": 67.0}, {"input": [-46.0, 67.5], "expected": 67.5}, {"input": [-46.0, 68.0], "expected": 68.0}, {"input": [-46.0, 68.5], "expected": 68.5}, {"input": [-46.0, 69.0], "expected": 69.0}, {"input": [-46.0, 69.5], "expected": 69.5}, {"input": [-46.0, 70.0], "expected": 70.0}, {"input": [-46.0, 70.5], "expected": 70.5}, {"input": [-46.0, 71.0], "expected": 71.0}, {"input": [-46.0, 71.5], "expected": 71.5}, {"input": [-46.0, 72.0], "expected": 72.0}, {"input": [-46.0, 72.5], "expected": 72.5}, {"input": [-46.0, 73.0], "expected": 73.0}, {"input": [-46.0, 73.5], "expected": 73.5}, {"input": [-46.0, 74.0], "expected": 74.0}, {"input": [-46.0, 74.5], "expected": 74.5}, {"input": [-46.0, 75.0], "expected": 75.0}, {"input": [-46.0, 75.5], "expected": 75.5}, {"input": [-46.0, 76.0], "expected": 76.0}, {"input": [-46.0, 76.5], "expected": 76.5}, {"input": [-46.0, 77.0], "expected": 77.0}, {"input": [-46.0, 77.5], "expected": 77.5}, {"input": [-46.0, 78.0], "expected": 78.0}, {"input": [-46.0, 78.5], "expected": 78.5}, {"input": [-46.0, 79.0], "expected": 79.0}, {"input": [-46.0, 79.5], "expected": 79.5}, {"input": [-46.0, 80.0], "expected": 80.0}, {"input": [-46.0, 80.5], "expected": 80.5}, {"input": [-46.0, 81.0], "expected": 81.0}, {"input": [-46.0, 81.5], "expected": 81.5}, {"input": [-46.0, 82.0], "expected": 82.0}, {"input": [-46.0, 82.5], "expected": 82.5}, {"input": [-46.0, 83.0], "expected": 83.0}, {"input": [-46.0, 83.5], "expected": 83.5}, {"input": [-46.0, 84.0], "expected": 84.0}, {"input": [-46.0, 84.5], "expected": 84.5}, {"input": [-46.0, 85.0], "expected": 85.0}, {"input": [-46.0, 85.5], "expected": 85.5}, {"input": [-46.0, 86.0], "expected": 86.0}, {"input": [-46.0, 86.5], "expected": 86.5}, {"input": [-46.0, 87.0], "expected": 87.0}, {"input": [-46.0, 87.5], "expected": 87.5}, {"input": [-46.0, 88.0], "expected": 88.0}, {"input": [-46.0, 88.5], "expected": 88.5}, {"input": [-46.0, 89.0], "expected": 89.0}, {"input": [-46.0, 89.5], "expected": 89.5}, {"input": [-46.0, 90.0], "expected": 90.0}, {"input": [-46.0, 90.5], "expected": 90.5}, {"input": [-46.0, 91.0], "expected": 91.0}, {"input": [-46.0, 91.5], "expected": 91.5}, {"input": [-46.0, 92.0], "expected": 92.0}, {"input": [-46.0, 92.5], "expected": 92.5}, {"input": [-46.0, 93.0], "expected": 93.0}, {"input": [-46.0, 93.5], "expected": 93.5}, {"input": [-46.0, 94.0], "expected": 94.0}, {"input": [-46.0, 94.5], "expected": 94.5}, {"input": [-46.0, 95.0], "expected": 95.0}, {"input": [-46.0, 95.5], "expected": 95.5}, {"input": [-46.0, 96.0], "expected": 96.0}, {"input": [-46.0, 96.5], "expected": 96.5}, {"input": [-46.0, 97.0], "expected": 97.0}, {"input": [-46.0, 97.5], "expected": 97.5}, {"input": [-46.0, 98.0], "expected": 98.0}, {"input": [-46.0, 98.5], "expected": 98.5}, {"input": [-46.0, 99.0], "expected": 99.0}, {"input": [-46.0, 99.5], "expected": 99.5}, {"input": [-45.5, -100.0], "expected": -45.5}, {"input": [-45.5, -99.5], "expected": -45.5}, {"input": [-45.5, -99.0], "expected": -45.5}, {"input": [-45.5, -98.5], "expected": -45.5}, {"input": [-45.5, -98.0], "expected": -45.5}, {"input": [-45.5, -97.5], "expected": -45.5}, {"input": [-45.5, -97.0], "expected": -45.5}, {"input": [-45.5, -96.5], "expected": -45.5}, {"input": [-45.5, -96.0], "expected": -45.5}, {"input": [-45.5, -95.5], "expected": -45.5}, {"input": [-45.5, -95.0], "expected": -45.5}, {"input": [-45.5, -94.5], "expected": -45.5}, {"input": [-45.5, -94.0], "expected": -45.5}, {"input": [-45.5, -93.5], "expected": -45.5}, {"input": [-45.5, -93.0], "expected": -45.5}, {"input": [-45.5, -92.5], "expected": -45.5}, {"input": [-45.5, -92.0], "expected": -45.5}, {"input": [-45.5, -91.5], "expected": -45.5}, {"input": [-45.5, -91.0], "expected": -45.5}, {"input": [-45.5, -90.5], "expected": -45.5}, {"input": [-45.5, -90.0], "expected": -45.5}, {"input": [-45.5, -89.5], "expected": -45.5}, {"input": [-45.5, -89.0], "expected": -45.5}, {"input": [-45.5, -88.5], "expected": -45.5}, {"input": [-45.5, -88.0], "expected": -45.5}, {"input": [-45.5, -87.5], "expected": -45.5}, {"input": [-45.5, -87.0], "expected": -45.5}, {"input": [-45.5, -86.5], "expected": -45.5}, {"input": [-45.5, -86.0], "expected": -45.5}, {"input": [-45.5, -85.5], "expected": -45.5}, {"input": [-45.5, -85.0], "expected": -45.5}, {"input": [-45.5, -84.5], "expected": -45.5}, {"input": [-45.5, -84.0], "expected": -45.5}, {"input": [-45.5, -83.5], "expected": -45.5}, {"input": [-45.5, -83.0], "expected": -45.5}, {"input": [-45.5, -82.5], "expected": -45.5}, {"input": [-45.5, -82.0], "expected": -45.5}, {"input": [-45.5, -81.5], "expected": -45.5}, {"input": [-45.5, -81.0], "expected": -45.5}, {"input": [-45.5, -80.5], "expected": -45.5}, {"input": [-45.5, -80.0], "expected": -45.5}, {"input": [-45.5, -79.5], "expected": -45.5}, {"input": [-45.5, -79.0], "expected": -45.5}, {"input": [-45.5, -78.5], "expected": -45.49999999999999}, {"input": [-45.5, -78.0], "expected": -45.49999999999999}, {"input": [-45.5, -77.5], "expected": -45.499999999999986}, {"input": [-45.5, -77.0], "expected": -45.49999999999998}, {"input": [-45.5, -76.5], "expected": -45.499999999999964}, {"input": [-45.5, -76.0], "expected": -45.49999999999994}, {"input": [-45.5, -75.5], "expected": -45.49999999999991}, {"input": [-45.5, -75.0], "expected": -45.499999999999844}, {"input": [-45.5, -74.5], "expected": -45.499999999999744}, {"input": [-45.5, -74.0], "expected": -45.49999999999958}, {"input": [-45.5, -73.5], "expected": -45.49999999999931}, {"input": [-45.5, -73.0], "expected": -45.49999999999886}, {"input": [-45.5, -72.5], "expected": -45.49999999999812}, {"input": [-45.5, -72.0], "expected": -45.4999999999969}, {"input": [-45.5, -71.5], "expected": -45.49999999999489}, {"input": [-45.5, -71.0], "expected": -45.49999999999158}, {"input": [-45.5, -70.5], "expected": -45.49999999998611}, {"input": [-45.5, -70.0], "expected": -45.4999999999771}, {"input": [-45.5, -69.5], "expected": -45.49999999996225}, {"input": [-45.5, -69.0], "expected": -45.49999999993776}, {"input": [-45.5, -68.5], "expected": -45.49999999989738}, {"input": [-45.5, -68.0], "expected": -45.49999999983081}, {"input": [-45.5, -67.5], "expected": -45.499999999721055}, {"input": [-45.5, -67.0], "expected": -45.499999999540094}, {"input": [-45.5, -66.5], "expected": -45.499999999241744}, {"input": [-45.5, -66.0], "expected": -45.49999999874985}, {"input": [-45.5, -65.5], "expected": -45.49999999793884}, {"input": [-45.5, -65.0], "expected": -45.49999999660173}, {"input": [-45.5, -64.5], "expected": -45.49999999439721}, {"input": [-45.5, -64.0], "expected": -45.499999990762554}, {"input": [-45.5, -63.5], "expected": -45.49999998477002}, {"input": [-45.5, -63.0], "expected": -45.49999997489001}, {"input": [-45.5, -62.5], "expected": -45.499999958600625}, {"input": [-45.5, -62.0], "expected": -45.49999993174397}, {"input": [-45.5, -61.5], "expected": -45.49999988746483}, {"input": [-45.5, -61.0], "expected": -45.49999981446088}, {"input": [-45.5, -60.5], "expected": -45.499999694097724}, {"input": [-45.5, -60.0], "expected": -45.49999949565247}, {"input": [-45.5, -59.5], "expected": -45.499999168471625}, {"input": [-45.5, -59.0], "expected": -45.499998629041855}, {"input": [-45.5, -58.5], "expected": -45.49999773967315}, {"input": [-45.5, -58.0], "expected": -45.49999627335377}, {"input": [-45.5, -57.5], "expected": -45.49999385580652}, {"input": [-45.5, -57.0], "expected": -45.49998986995771}, {"input": [-45.5, -56.5], "expected": -45.49998329843868}, {"input": [-45.5, -56.0], "expected": -45.49997246392977}, {"input": [-45.5, -55.5], "expected": -45.49995460110078}, {"input": [-45.5, -55.0], "expected": -45.49992515097137}, {"input": [-45.5, -54.5], "expected": -45.49987659781028}, {"input": [-45.5, -54.0], "expected": -45.49979655232787}, {"input": [-45.5, -53.5], "expected": -45.4996645936271}, {"input": [-45.5, -53.0], "expected": -45.49944706852464}, {"input": [-45.5, -52.5], "expected": -45.49908853354623}, {"input": [-45.5, -52.0], "expected": -45.49849768984024}, {"input": [-45.5, -51.5], "expected": -45.49752431486227}, {"input": [-45.5, -51.0], "expected": -45.49592155672943}, {"input": [-45.5, -50.5], "expected": -45.49328465151088}, {"input": [-45.5, -50.0], "expected": -45.4889522551514}, {"input": [-45.5, -49.5], "expected": -45.48185007208219}, {"input": [-45.5, -49.0], "expected": -45.47024958172738}, {"input": [-45.5, -48.5], "expected": -45.451412648426256}, {"input": [-45.5, -48.0], "expected": -45.42111026570745}, {"input": [-45.5, -47.5], "expected": -45.37307198895703}, {"input": [-45.5, -47.0], "expected": -45.29858672201725}, {"input": [-45.5, -46.5], "expected": -45.18673831248178}, {"input": [-45.5, -46.0], "expected": -45.02592301581989}, {"input": [-45.5, -45.5], "expected": -44.80685281944005}, {"input": [-45.5, -45.0], "expected": -44.52592301581989}, {"input": [-45.5, -44.5], "expected": -44.18673831248178}, {"input": [-45.5, -44.0], "expected": -43.79858672201725}, {"input": [-45.5, -43.5], "expected": -43.37307198895703}, {"input": [-45.5, -43.0], "expected": -42.92111026570745}, {"input": [-45.5, -42.5], "expected": -42.451412648426256}, {"input": [-45.5, -42.0], "expected": -41.97024958172738}, {"input": [-45.5, -41.5], "expected": -41.48185007208219}, {"input": [-45.5, -41.0], "expected": -40.9889522551514}, {"input": [-45.5, -40.5], "expected": -40.49328465151088}, {"input": [-45.5, -40.0], "expected": -39.99592155672943}, {"input": [-45.5, -39.5], "expected": -39.49752431486227}, {"input": [-45.5, -39.0], "expected": -38.99849768984024}, {"input": [-45.5, -38.5], "expected": -38.49908853354623}, {"input": [-45.5, -38.0], "expected": -37.99944706852464}, {"input": [-45.5, -37.5], "expected": -37.4996645936271}, {"input": [-45.5, -37.0], "expected": -36.99979655232787}, {"input": [-45.5, -36.5], "expected": -36.49987659781028}, {"input": [-45.5, -36.0], "expected": -35.99992515097137}, {"input": [-45.5, -35.5], "expected": -35.49995460110078}, {"input": [-45.5, -35.0], "expected": -34.99997246392977}, {"input": [-45.5, -34.5], "expected": -34.49998329843868}, {"input": [-45.5, -34.0], "expected": -33.99998986995771}, {"input": [-45.5, -33.5], "expected": -33.49999385580652}, {"input": [-45.5, -33.0], "expected": -32.99999627335377}, {"input": [-45.5, -32.5], "expected": -32.49999773967315}, {"input": [-45.5, -32.0], "expected": -31.999998629041855}, {"input": [-45.5, -31.5], "expected": -31.499999168471625}, {"input": [-45.5, -31.0], "expected": -30.999999495652464}, {"input": [-45.5, -30.5], "expected": -30.499999694097728}, {"input": [-45.5, -30.0], "expected": -29.99999981446088}, {"input": [-45.5, -29.5], "expected": -29.49999988746483}, {"input": [-45.5, -29.0], "expected": -28.999999931743968}, {"input": [-45.5, -28.5], "expected": -28.499999958600625}, {"input": [-45.5, -28.0], "expected": -27.99999997489001}, {"input": [-45.5, -27.5], "expected": -27.49999998477002}, {"input": [-45.5, -27.0], "expected": -26.99999999076255}, {"input": [-45.5, -26.5], "expected": -26.499999994397204}, {"input": [-45.5, -26.0], "expected": -25.999999996601733}, {"input": [-45.5, -25.5], "expected": -25.499999997938847}, {"input": [-45.5, -25.0], "expected": -24.999999998749846}, {"input": [-45.5, -24.5], "expected": -24.499999999241744}, {"input": [-45.5, -24.0], "expected": -23.999999999540094}, {"input": [-45.5, -23.5], "expected": -23.49999999972105}, {"input": [-45.5, -23.0], "expected": -22.99999999983081}, {"input": [-45.5, -22.5], "expected": -22.49999999989738}, {"input": [-45.5, -22.0], "expected": -21.99999999993776}, {"input": [-45.5, -21.5], "expected": -21.49999999996225}, {"input": [-45.5, -21.0], "expected": -20.999999999977103}, {"input": [-45.5, -20.5], "expected": -20.499999999986112}, {"input": [-45.5, -20.0], "expected": -19.999999999991577}, {"input": [-45.5, -19.5], "expected": -19.49999999999489}, {"input": [-45.5, -19.0], "expected": -18.999999999996902}, {"input": [-45.5, -18.5], "expected": -18.49999999999812}, {"input": [-45.5, -18.0], "expected": -17.99999999999886}, {"input": [-45.5, -17.5], "expected": -17.499999999999307}, {"input": [-45.5, -17.0], "expected": -16.99999999999958}, {"input": [-45.5, -16.5], "expected": -16.499999999999744}, {"input": [-45.5, -16.0], "expected": -15.999999999999845}, {"input": [-45.5, -15.5], "expected": -15.499999999999906}, {"input": [-45.5, -15.0], "expected": -14.999999999999943}, {"input": [-45.5, -14.5], "expected": -14.499999999999966}, {"input": [-45.5, -14.0], "expected": -13.999999999999979}, {"input": [-45.5, -13.5], "expected": -13.499999999999988}, {"input": [-45.5, -13.0], "expected": -12.999999999999993}, {"input": [-45.5, -12.5], "expected": -12.499999999999995}, {"input": [-45.5, -12.0], "expected": -11.999999999999996}, {"input": [-45.5, -11.5], "expected": -11.499999999999998}, {"input": [-45.5, -11.0], "expected": -10.999999999999998}, {"input": [-45.5, -10.5], "expected": -10.5}, {"input": [-45.5, -10.0], "expected": -10.0}, {"input": [-45.5, -9.5], "expected": -9.5}, {"input": [-45.5, -9.0], "expected": -9.0}, {"input": [-45.5, -8.5], "expected": -8.5}, {"input": [-45.5, -8.0], "expected": -8.0}, {"input": [-45.5, -7.5], "expected": -7.5}, {"input": [-45.5, -7.0], "expected": -7.0}, {"input": [-45.5, -6.5], "expected": -6.5}, {"input": [-45.5, -6.0], "expected": -6.0}, {"input": [-45.5, -5.5], "expected": -5.5}, {"input": [-45.5, -5.0], "expected": -5.0}, {"input": [-45.5, -4.5], "expected": -4.5}, {"input": [-45.5, -4.0], "expected": -4.0}, {"input": [-45.5, -3.5], "expected": -3.5}, {"input": [-45.5, -3.0], "expected": -3.0}, {"input": [-45.5, -2.5], "expected": -2.5}, {"input": [-45.5, -2.0], "expected": -2.0}, {"input": [-45.5, -1.5], "expected": -1.5}, {"input": [-45.5, -1.0], "expected": -1.0}, {"input": [-45.5, -0.5], "expected": -0.5}, {"input": [-45.5, 0.0], "expected": 1.7362052831002947e-20}, {"input": [-45.5, 0.5], "expected": 0.5}, {"input": [-45.5, 1.0], "expected": 1.0}, {"input": [-45.5, 1.5], "expected": 1.5}, {"input": [-45.5, 2.0], "expected": 2.0}, {"input": [-45.5, 2.5], "expected": 2.5}, {"input": [-45.5, 3.0], "expected": 3.0}, {"input": [-45.5, 3.5], "expected": 3.5}, {"input": [-45.5, 4.0], "expected": 4.0}, {"input": [-45.5, 4.5], "expected": 4.5}, {"input": [-45.5, 5.0], "expected": 5.0}, {"input": [-45.5, 5.5], "expected": 5.5}, {"input": [-45.5, 6.0], "expected": 6.0}, {"input": [-45.5, 6.5], "expected": 6.5}, {"input": [-45.5, 7.0], "expected": 7.0}, {"input": [-45.5, 7.5], "expected": 7.5}, {"input": [-45.5, 8.0], "expected": 8.0}, {"input": [-45.5, 8.5], "expected": 8.5}, {"input": [-45.5, 9.0], "expected": 9.0}, {"input": [-45.5, 9.5], "expected": 9.5}, {"input": [-45.5, 10.0], "expected": 10.0}, {"input": [-45.5, 10.5], "expected": 10.5}, {"input": [-45.5, 11.0], "expected": 11.0}, {"input": [-45.5, 11.5], "expected": 11.5}, {"input": [-45.5, 12.0], "expected": 12.0}, {"input": [-45.5, 12.5], "expected": 12.5}, {"input": [-45.5, 13.0], "expected": 13.0}, {"input": [-45.5, 13.5], "expected": 13.5}, {"input": [-45.5, 14.0], "expected": 14.0}, {"input": [-45.5, 14.5], "expected": 14.5}, {"input": [-45.5, 15.0], "expected": 15.0}, {"input": [-45.5, 15.5], "expected": 15.5}, {"input": [-45.5, 16.0], "expected": 16.0}, {"input": [-45.5, 16.5], "expected": 16.5}, {"input": [-45.5, 17.0], "expected": 17.0}, {"input": [-45.5, 17.5], "expected": 17.5}, {"input": [-45.5, 18.0], "expected": 18.0}, {"input": [-45.5, 18.5], "expected": 18.5}, {"input": [-45.5, 19.0], "expected": 19.0}, {"input": [-45.5, 19.5], "expected": 19.5}, {"input": [-45.5, 20.0], "expected": 20.0}, {"input": [-45.5, 20.5], "expected": 20.5}, {"input": [-45.5, 21.0], "expected": 21.0}, {"input": [-45.5, 21.5], "expected": 21.5}, {"input": [-45.5, 22.0], "expected": 22.0}, {"input": [-45.5, 22.5], "expected": 22.5}, {"input": [-45.5, 23.0], "expected": 23.0}, {"input": [-45.5, 23.5], "expected": 23.5}, {"input": [-45.5, 24.0], "expected": 24.0}, {"input": [-45.5, 24.5], "expected": 24.5}, {"input": [-45.5, 25.0], "expected": 25.0}, {"input": [-45.5, 25.5], "expected": 25.5}, {"input": [-45.5, 26.0], "expected": 26.0}, {"input": [-45.5, 26.5], "expected": 26.5}, {"input": [-45.5, 27.0], "expected": 27.0}, {"input": [-45.5, 27.5], "expected": 27.5}, {"input": [-45.5, 28.0], "expected": 28.0}, {"input": [-45.5, 28.5], "expected": 28.5}, {"input": [-45.5, 29.0], "expected": 29.0}, {"input": [-45.5, 29.5], "expected": 29.5}, {"input": [-45.5, 30.0], "expected": 30.0}, {"input": [-45.5, 30.5], "expected": 30.5}, {"input": [-45.5, 31.0], "expected": 31.0}, {"input": [-45.5, 31.5], "expected": 31.5}, {"input": [-45.5, 32.0], "expected": 32.0}, {"input": [-45.5, 32.5], "expected": 32.5}, {"input": [-45.5, 33.0], "expected": 33.0}, {"input": [-45.5, 33.5], "expected": 33.5}, {"input": [-45.5, 34.0], "expected": 34.0}, {"input": [-45.5, 34.5], "expected": 34.5}, {"input": [-45.5, 35.0], "expected": 35.0}, {"input": [-45.5, 35.5], "expected": 35.5}, {"input": [-45.5, 36.0], "expected": 36.0}, {"input": [-45.5, 36.5], "expected": 36.5}, {"input": [-45.5, 37.0], "expected": 37.0}, {"input": [-45.5, 37.5], "expected": 37.5}, {"input": [-45.5, 38.0], "expected": 38.0}, {"input": [-45.5, 38.5], "expected": 38.5}, {"input": [-45.5, 39.0], "expected": 39.0}, {"input": [-45.5, 39.5], "expected": 39.5}, {"input": [-45.5, 40.0], "expected": 40.0}, {"input": [-45.5, 40.5], "expected": 40.5}, {"input": [-45.5, 41.0], "expected": 41.0}, {"input": [-45.5, 41.5], "expected": 41.5}, {"input": [-45.5, 42.0], "expected": 42.0}, {"input": [-45.5, 42.5], "expected": 42.5}, {"input": [-45.5, 43.0], "expected": 43.0}, {"input": [-45.5, 43.5], "expected": 43.5}, {"input": [-45.5, 44.0], "expected": 44.0}, {"input": [-45.5, 44.5], "expected": 44.5}, {"input": [-45.5, 45.0], "expected": 45.0}, {"input": [-45.5, 45.5], "expected": 45.5}, {"input": [-45.5, 46.0], "expected": 46.0}, {"input": [-45.5, 46.5], "expected": 46.5}, {"input": [-45.5, 47.0], "expected": 47.0}, {"input": [-45.5, 47.5], "expected": 47.5}, {"input": [-45.5, 48.0], "expected": 48.0}, {"input": [-45.5, 48.5], "expected": 48.5}, {"input": [-45.5, 49.0], "expected": 49.0}, {"input": [-45.5, 49.5], "expected": 49.5}, {"input": [-45.5, 50.0], "expected": 50.0}, {"input": [-45.5, 50.5], "expected": 50.5}, {"input": [-45.5, 51.0], "expected": 51.0}, {"input": [-45.5, 51.5], "expected": 51.5}, {"input": [-45.5, 52.0], "expected": 52.0}, {"input": [-45.5, 52.5], "expected": 52.5}, {"input": [-45.5, 53.0], "expected": 53.0}, {"input": [-45.5, 53.5], "expected": 53.5}, {"input": [-45.5, 54.0], "expected": 54.0}, {"input": [-45.5, 54.5], "expected": 54.5}, {"input": [-45.5, 55.0], "expected": 55.0}, {"input": [-45.5, 55.5], "expected": 55.5}, {"input": [-45.5, 56.0], "expected": 56.0}, {"input": [-45.5, 56.5], "expected": 56.5}, {"input": [-45.5, 57.0], "expected": 57.0}, {"input": [-45.5, 57.5], "expected": 57.5}, {"input": [-45.5, 58.0], "expected": 58.0}, {"input": [-45.5, 58.5], "expected": 58.5}, {"input": [-45.5, 59.0], "expected": 59.0}, {"input": [-45.5, 59.5], "expected": 59.5}, {"input": [-45.5, 60.0], "expected": 60.0}, {"input": [-45.5, 60.5], "expected": 60.5}, {"input": [-45.5, 61.0], "expected": 61.0}, {"input": [-45.5, 61.5], "expected": 61.5}, {"input": [-45.5, 62.0], "expected": 62.0}, {"input": [-45.5, 62.5], "expected": 62.5}, {"input": [-45.5, 63.0], "expected": 63.0}, {"input": [-45.5, 63.5], "expected": 63.5}, {"input": [-45.5, 64.0], "expected": 64.0}, {"input": [-45.5, 64.5], "expected": 64.5}, {"input": [-45.5, 65.0], "expected": 65.0}, {"input": [-45.5, 65.5], "expected": 65.5}, {"input": [-45.5, 66.0], "expected": 66.0}, {"input": [-45.5, 66.5], "expected": 66.5}, {"input": [-45.5, 67.0], "expected": 67.0}, {"input": [-45.5, 67.5], "expected": 67.5}, {"input": [-45.5, 68.0], "expected": 68.0}, {"input": [-45.5, 68.5], "expected": 68.5}, {"input": [-45.5, 69.0], "expected": 69.0}, {"input": [-45.5, 69.5], "expected": 69.5}, {"input": [-45.5, 70.0], "expected": 70.0}, {"input": [-45.5, 70.5], "expected": 70.5}, {"input": [-45.5, 71.0], "expected": 71.0}, {"input": [-45.5, 71.5], "expected": 71.5}, {"input": [-45.5, 72.0], "expected": 72.0}, {"input": [-45.5, 72.5], "expected": 72.5}, {"input": [-45.5, 73.0], "expected": 73.0}, {"input": [-45.5, 73.5], "expected": 73.5}, {"input": [-45.5, 74.0], "expected": 74.0}, {"input": [-45.5, 74.5], "expected": 74.5}, {"input": [-45.5, 75.0], "expected": 75.0}, {"input": [-45.5, 75.5], "expected": 75.5}, {"input": [-45.5, 76.0], "expected": 76.0}, {"input": [-45.5, 76.5], "expected": 76.5}, {"input": [-45.5, 77.0], "expected": 77.0}, {"input": [-45.5, 77.5], "expected": 77.5}, {"input": [-45.5, 78.0], "expected": 78.0}, {"input": [-45.5, 78.5], "expected": 78.5}, {"input": [-45.5, 79.0], "expected": 79.0}, {"input": [-45.5, 79.5], "expected": 79.5}, {"input": [-45.5, 80.0], "expected": 80.0}, {"input": [-45.5, 80.5], "expected": 80.5}, {"input": [-45.5, 81.0], "expected": 81.0}, {"input": [-45.5, 81.5], "expected": 81.5}, {"input": [-45.5, 82.0], "expected": 82.0}, {"input": [-45.5, 82.5], "expected": 82.5}, {"input": [-45.5, 83.0], "expected": 83.0}, {"input": [-45.5, 83.5], "expected": 83.5}, {"input": [-45.5, 84.0], "expected": 84.0}, {"input": [-45.5, 84.5], "expected": 84.5}, {"input": [-45.5, 85.0], "expected": 85.0}, {"input": [-45.5, 85.5], "expected": 85.5}, {"input": [-45.5, 86.0], "expected": 86.0}, {"input": [-45.5, 86.5], "expected": 86.5}, {"input": [-45.5, 87.0], "expected": 87.0}, {"input": [-45.5, 87.5], "expected": 87.5}, {"input": [-45.5, 88.0], "expected": 88.0}, {"input": [-45.5, 88.5], "expected": 88.5}, {"input": [-45.5, 89.0], "expected": 89.0}, {"input": [-45.5, 89.5], "expected": 89.5}, {"input": [-45.5, 90.0], "expected": 90.0}, {"input": [-45.5, 90.5], "expected": 90.5}, {"input": [-45.5, 91.0], "expected": 91.0}, {"input": [-45.5, 91.5], "expected": 91.5}, {"input": [-45.5, 92.0], "expected": 92.0}, {"input": [-45.5, 92.5], "expected": 92.5}, {"input": [-45.5, 93.0], "expected": 93.0}, {"input": [-45.5, 93.5], "expected": 93.5}, {"input": [-45.5, 94.0], "expected": 94.0}, {"input": [-45.5, 94.5], "expected": 94.5}, {"input": [-45.5, 95.0], "expected": 95.0}, {"input": [-45.5, 95.5], "expected": 95.5}, {"input": [-45.5, 96.0], "expected": 96.0}, {"input": [-45.5, 96.5], "expected": 96.5}, {"input": [-45.5, 97.0], "expected": 97.0}, {"input": [-45.5, 97.5], "expected": 97.5}, {"input": [-45.5, 98.0], "expected": 98.0}, {"input": [-45.5, 98.5], "expected": 98.5}, {"input": [-45.5, 99.0], "expected": 99.0}, {"input": [-45.5, 99.5], "expected": 99.5}, {"input": [-45.0, -100.0], "expected": -45.0}, {"input": [-45.0, -99.5], "expected": -45.0}, {"input": [-45.0, -99.0], "expected": -45.0}, {"input": [-45.0, -98.5], "expected": -45.0}, {"input": [-45.0, -98.0], "expected": -45.0}, {"input": [-45.0, -97.5], "expected": -45.0}, {"input": [-45.0, -97.0], "expected": -45.0}, {"input": [-45.0, -96.5], "expected": -45.0}, {"input": [-45.0, -96.0], "expected": -45.0}, {"input": [-45.0, -95.5], "expected": -45.0}, {"input": [-45.0, -95.0], "expected": -45.0}, {"input": [-45.0, -94.5], "expected": -45.0}, {"input": [-45.0, -94.0], "expected": -45.0}, {"input": [-45.0, -93.5], "expected": -45.0}, {"input": [-45.0, -93.0], "expected": -45.0}, {"input": [-45.0, -92.5], "expected": -45.0}, {"input": [-45.0, -92.0], "expected": -45.0}, {"input": [-45.0, -91.5], "expected": -45.0}, {"input": [-45.0, -91.0], "expected": -45.0}, {"input": [-45.0, -90.5], "expected": -45.0}, {"input": [-45.0, -90.0], "expected": -45.0}, {"input": [-45.0, -89.5], "expected": -45.0}, {"input": [-45.0, -89.0], "expected": -45.0}, {"input": [-45.0, -88.5], "expected": -45.0}, {"input": [-45.0, -88.0], "expected": -45.0}, {"input": [-45.0, -87.5], "expected": -45.0}, {"input": [-45.0, -87.0], "expected": -45.0}, {"input": [-45.0, -86.5], "expected": -45.0}, {"input": [-45.0, -86.0], "expected": -45.0}, {"input": [-45.0, -85.5], "expected": -45.0}, {"input": [-45.0, -85.0], "expected": -45.0}, {"input": [-45.0, -84.5], "expected": -45.0}, {"input": [-45.0, -84.0], "expected": -45.0}, {"input": [-45.0, -83.5], "expected": -45.0}, {"input": [-45.0, -83.0], "expected": -45.0}, {"input": [-45.0, -82.5], "expected": -45.0}, {"input": [-45.0, -82.0], "expected": -45.0}, {"input": [-45.0, -81.5], "expected": -45.0}, {"input": [-45.0, -81.0], "expected": -45.0}, {"input": [-45.0, -80.5], "expected": -45.0}, {"input": [-45.0, -80.0], "expected": -45.0}, {"input": [-45.0, -79.5], "expected": -45.0}, {"input": [-45.0, -79.0], "expected": -45.0}, {"input": [-45.0, -78.5], "expected": -45.0}, {"input": [-45.0, -78.0], "expected": -44.99999999999999}, {"input": [-45.0, -77.5], "expected": -44.99999999999999}, {"input": [-45.0, -77.0], "expected": -44.999999999999986}, {"input": [-45.0, -76.5], "expected": -44.99999999999998}, {"input": [-45.0, -76.0], "expected": -44.999999999999964}, {"input": [-45.0, -75.5], "expected": -44.99999999999994}, {"input": [-45.0, -75.0], "expected": -44.99999999999991}, {"input": [-45.0, -74.5], "expected": -44.999999999999844}, {"input": [-45.0, -74.0], "expected": -44.999999999999744}, {"input": [-45.0, -73.5], "expected": -44.99999999999958}, {"input": [-45.0, -73.0], "expected": -44.99999999999931}, {"input": [-45.0, -72.5], "expected": -44.99999999999886}, {"input": [-45.0, -72.0], "expected": -44.99999999999812}, {"input": [-45.0, -71.5], "expected": -44.9999999999969}, {"input": [-45.0, -71.0], "expected": -44.99999999999489}, {"input": [-45.0, -70.5], "expected": -44.99999999999158}, {"input": [-45.0, -70.0], "expected": -44.99999999998611}, {"input": [-45.0, -69.5], "expected": -44.9999999999771}, {"input": [-45.0, -69.0], "expected": -44.99999999996225}, {"input": [-45.0, -68.5], "expected": -44.99999999993776}, {"input": [-45.0, -68.0], "expected": -44.99999999989738}, {"input": [-45.0, -67.5], "expected": -44.99999999983081}, {"input": [-45.0, -67.0], "expected": -44.999999999721055}, {"input": [-45.0, -66.5], "expected": -44.999999999540094}, {"input": [-45.0, -66.0], "expected": -44.999999999241744}, {"input": [-45.0, -65.5], "expected": -44.99999999874985}, {"input": [-45.0, -65.0], "expected": -44.99999999793884}, {"input": [-45.0, -64.5], "expected": -44.99999999660173}, {"input": [-45.0, -64.0], "expected": -44.99999999439721}, {"input": [-45.0, -63.5], "expected": -44.999999990762554}, {"input": [-45.0, -63.0], "expected": -44.99999998477002}, {"input": [-45.0, -62.5], "expected": -44.99999997489001}, {"input": [-45.0, -62.0], "expected": -44.999999958600625}, {"input": [-45.0, -61.5], "expected": -44.99999993174397}, {"input": [-45.0, -61.0], "expected": -44.99999988746483}, {"input": [-45.0, -60.5], "expected": -44.99999981446088}, {"input": [-45.0, -60.0], "expected": -44.999999694097724}, {"input": [-45.0, -59.5], "expected": -44.99999949565247}, {"input": [-45.0, -59.0], "expected": -44.999999168471625}, {"input": [-45.0, -58.5], "expected": -44.999998629041855}, {"input": [-45.0, -58.0], "expected": -44.99999773967315}, {"input": [-45.0, -57.5], "expected": -44.99999627335377}, {"input": [-45.0, -57.0], "expected": -44.99999385580652}, {"input": [-45.0, -56.5], "expected": -44.99998986995771}, {"input": [-45.0, -56.0], "expected": -44.99998329843868}, {"input": [-45.0, -55.5], "expected": -44.99997246392977}, {"input": [-45.0, -55.0], "expected": -44.99995460110078}, {"input": [-45.0, -54.5], "expected": -44.99992515097137}, {"input": [-45.0, -54.0], "expected": -44.99987659781028}, {"input": [-45.0, -53.5], "expected": -44.99979655232787}, {"input": [-45.0, -53.0], "expected": -44.9996645936271}, {"input": [-45.0, -52.5], "expected": -44.99944706852464}, {"input": [-45.0, -52.0], "expected": -44.99908853354623}, {"input": [-45.0, -51.5], "expected": -44.99849768984024}, {"input": [-45.0, -51.0], "expected": -44.99752431486227}, {"input": [-45.0, -50.5], "expected": -44.99592155672943}, {"input": [-45.0, -50.0], "expected": -44.99328465151088}, {"input": [-45.0, -49.5], "expected": -44.9889522551514}, {"input": [-45.0, -49.0], "expected": -44.98185007208219}, {"input": [-45.0, -48.5], "expected": -44.97024958172738}, {"input": [-45.0, -48.0], "expected": -44.951412648426256}, {"input": [-45.0, -47.5], "expected": -44.92111026570745}, {"input": [-45.0, -47.0], "expected": -44.87307198895703}, {"input": [-45.0, -46.5], "expected": -44.79858672201725}, {"input": [-45.0, -46.0], "expected": -44.68673831248178}, {"input": [-45.0, -45.5], "expected": -44.52592301581989}, {"input": [-45.0, -45.0], "expected": -44.30685281944005}, {"input": [-45.0, -44.5], "expected": -44.02592301581989}, {"input": [-45.0, -44.0], "expected": -43.68673831248178}, {"input": [-45.0, -43.5], "expected": -43.29858672201725}, {"input": [-45.0, -43.0], "expected": -42.87307198895703}, {"input": [-45.0, -42.5], "expected": -42.42111026570745}, {"input": [-45.0, -42.0], "expected": -41.951412648426256}, {"input": [-45.0, -41.5], "expected": -41.47024958172738}, {"input": [-45.0, -41.0], "expected": -40.98185007208219}, {"input": [-45.0, -40.5], "expected": -40.4889522551514}, {"input": [-45.0, -40.0], "expected": -39.99328465151088}, {"input": [-45.0, -39.5], "expected": -39.49592155672943}, {"input": [-45.0, -39.0], "expected": -38.99752431486227}, {"input": [-45.0, -38.5], "expected": -38.49849768984024}, {"input": [-45.0, -38.0], "expected": -37.99908853354623}, {"input": [-45.0, -37.5], "expected": -37.49944706852464}, {"input": [-45.0, -37.0], "expected": -36.9996645936271}, {"input": [-45.0, -36.5], "expected": -36.49979655232787}, {"input": [-45.0, -36.0], "expected": -35.99987659781028}, {"input": [-45.0, -35.5], "expected": -35.49992515097137}, {"input": [-45.0, -35.0], "expected": -34.99995460110078}, {"input": [-45.0, -34.5], "expected": -34.49997246392977}, {"input": [-45.0, -34.0], "expected": -33.99998329843868}, {"input": [-45.0, -33.5], "expected": -33.49998986995771}, {"input": [-45.0, -33.0], "expected": -32.99999385580652}, {"input": [-45.0, -32.5], "expected": -32.49999627335377}, {"input": [-45.0, -32.0], "expected": -31.999997739673148}, {"input": [-45.0, -31.5], "expected": -31.499998629041855}, {"input": [-45.0, -31.0], "expected": -30.999999168471625}, {"input": [-45.0, -30.5], "expected": -30.499999495652464}, {"input": [-45.0, -30.0], "expected": -29.999999694097728}, {"input": [-45.0, -29.5], "expected": -29.49999981446088}, {"input": [-45.0, -29.0], "expected": -28.99999988746483}, {"input": [-45.0, -28.5], "expected": -28.499999931743968}, {"input": [-45.0, -28.0], "expected": -27.999999958600625}, {"input": [-45.0, -27.5], "expected": -27.49999997489001}, {"input": [-45.0, -27.0], "expected": -26.99999998477002}, {"input": [-45.0, -26.5], "expected": -26.49999999076255}, {"input": [-45.0, -26.0], "expected": -25.999999994397204}, {"input": [-45.0, -25.5], "expected": -25.499999996601733}, {"input": [-45.0, -25.0], "expected": -24.999999997938847}, {"input": [-45.0, -24.5], "expected": -24.499999998749846}, {"input": [-45.0, -24.0], "expected": -23.999999999241744}, {"input": [-45.0, -23.5], "expected": -23.499999999540094}, {"input": [-45.0, -23.0], "expected": -22.99999999972105}, {"input": [-45.0, -22.5], "expected": -22.49999999983081}, {"input": [-45.0, -22.0], "expected": -21.99999999989738}, {"input": [-45.0, -21.5], "expected": -21.49999999993776}, {"input": [-45.0, -21.0], "expected": -20.99999999996225}, {"input": [-45.0, -20.5], "expected": -20.499999999977103}, {"input": [-45.0, -20.0], "expected": -19.999999999986112}, {"input": [-45.0, -19.5], "expected": -19.499999999991577}, {"input": [-45.0, -19.0], "expected": -18.99999999999489}, {"input": [-45.0, -18.5], "expected": -18.499999999996902}, {"input": [-45.0, -18.0], "expected": -17.99999999999812}, {"input": [-45.0, -17.5], "expected": -17.49999999999886}, {"input": [-45.0, -17.0], "expected": -16.999999999999307}, {"input": [-45.0, -16.5], "expected": -16.49999999999958}, {"input": [-45.0, -16.0], "expected": -15.999999999999746}, {"input": [-45.0, -15.5], "expected": -15.499999999999845}, {"input": [-45.0, -15.0], "expected": -14.999999999999906}, {"input": [-45.0, -14.5], "expected": -14.499999999999943}, {"input": [-45.0, -14.0], "expected": -13.999999999999966}, {"input": [-45.0, -13.5], "expected": -13.499999999999979}, {"input": [-45.0, -13.0], "expected": -12.999999999999988}, {"input": [-45.0, -12.5], "expected": -12.499999999999993}, {"input": [-45.0, -12.0], "expected": -11.999999999999995}, {"input": [-45.0, -11.5], "expected": -11.499999999999996}, {"input": [-45.0, -11.0], "expected": -10.999999999999998}, {"input": [-45.0, -10.5], "expected": -10.499999999999998}, {"input": [-45.0, -10.0], "expected": -10.0}, {"input": [-45.0, -9.5], "expected": -9.5}, {"input": [-45.0, -9.0], "expected": -9.0}, {"input": [-45.0, -8.5], "expected": -8.5}, {"input": [-45.0, -8.0], "expected": -8.0}, {"input": [-45.0, -7.5], "expected": -7.5}, {"input": [-45.0, -7.0], "expected": -7.0}, {"input": [-45.0, -6.5], "expected": -6.5}, {"input": [-45.0, -6.0], "expected": -6.0}, {"input": [-45.0, -5.5], "expected": -5.5}, {"input": [-45.0, -5.0], "expected": -5.0}, {"input": [-45.0, -4.5], "expected": -4.5}, {"input": [-45.0, -4.0], "expected": -4.0}, {"input": [-45.0, -3.5], "expected": -3.5}, {"input": [-45.0, -3.0], "expected": -3.0}, {"input": [-45.0, -2.5], "expected": -2.5}, {"input": [-45.0, -2.0], "expected": -2.0}, {"input": [-45.0, -1.5], "expected": -1.5}, {"input": [-45.0, -1.0], "expected": -1.0}, {"input": [-45.0, -0.5], "expected": -0.5}, {"input": [-45.0, 0.0], "expected": 2.8625185805493937e-20}, {"input": [-45.0, 0.5], "expected": 0.5}, {"input": [-45.0, 1.0], "expected": 1.0}, {"input": [-45.0, 1.5], "expected": 1.5}, {"input": [-45.0, 2.0], "expected": 2.0}, {"input": [-45.0, 2.5], "expected": 2.5}, {"input": [-45.0, 3.0], "expected": 3.0}, {"input": [-45.0, 3.5], "expected": 3.5}, {"input": [-45.0, 4.0], "expected": 4.0}, {"input": [-45.0, 4.5], "expected": 4.5}, {"input": [-45.0, 5.0], "expected": 5.0}, {"input": [-45.0, 5.5], "expected": 5.5}, {"input": [-45.0, 6.0], "expected": 6.0}, {"input": [-45.0, 6.5], "expected": 6.5}, {"input": [-45.0, 7.0], "expected": 7.0}, {"input": [-45.0, 7.5], "expected": 7.5}, {"input": [-45.0, 8.0], "expected": 8.0}, {"input": [-45.0, 8.5], "expected": 8.5}, {"input": [-45.0, 9.0], "expected": 9.0}, {"input": [-45.0, 9.5], "expected": 9.5}, {"input": [-45.0, 10.0], "expected": 10.0}, {"input": [-45.0, 10.5], "expected": 10.5}, {"input": [-45.0, 11.0], "expected": 11.0}, {"input": [-45.0, 11.5], "expected": 11.5}, {"input": [-45.0, 12.0], "expected": 12.0}, {"input": [-45.0, 12.5], "expected": 12.5}, {"input": [-45.0, 13.0], "expected": 13.0}, {"input": [-45.0, 13.5], "expected": 13.5}, {"input": [-45.0, 14.0], "expected": 14.0}, {"input": [-45.0, 14.5], "expected": 14.5}, {"input": [-45.0, 15.0], "expected": 15.0}, {"input": [-45.0, 15.5], "expected": 15.5}, {"input": [-45.0, 16.0], "expected": 16.0}, {"input": [-45.0, 16.5], "expected": 16.5}, {"input": [-45.0, 17.0], "expected": 17.0}, {"input": [-45.0, 17.5], "expected": 17.5}, {"input": [-45.0, 18.0], "expected": 18.0}, {"input": [-45.0, 18.5], "expected": 18.5}, {"input": [-45.0, 19.0], "expected": 19.0}, {"input": [-45.0, 19.5], "expected": 19.5}, {"input": [-45.0, 20.0], "expected": 20.0}, {"input": [-45.0, 20.5], "expected": 20.5}, {"input": [-45.0, 21.0], "expected": 21.0}, {"input": [-45.0, 21.5], "expected": 21.5}, {"input": [-45.0, 22.0], "expected": 22.0}, {"input": [-45.0, 22.5], "expected": 22.5}, {"input": [-45.0, 23.0], "expected": 23.0}, {"input": [-45.0, 23.5], "expected": 23.5}, {"input": [-45.0, 24.0], "expected": 24.0}, {"input": [-45.0, 24.5], "expected": 24.5}, {"input": [-45.0, 25.0], "expected": 25.0}, {"input": [-45.0, 25.5], "expected": 25.5}, {"input": [-45.0, 26.0], "expected": 26.0}, {"input": [-45.0, 26.5], "expected": 26.5}, {"input": [-45.0, 27.0], "expected": 27.0}, {"input": [-45.0, 27.5], "expected": 27.5}, {"input": [-45.0, 28.0], "expected": 28.0}, {"input": [-45.0, 28.5], "expected": 28.5}, {"input": [-45.0, 29.0], "expected": 29.0}, {"input": [-45.0, 29.5], "expected": 29.5}, {"input": [-45.0, 30.0], "expected": 30.0}, {"input": [-45.0, 30.5], "expected": 30.5}, {"input": [-45.0, 31.0], "expected": 31.0}, {"input": [-45.0, 31.5], "expected": 31.5}, {"input": [-45.0, 32.0], "expected": 32.0}, {"input": [-45.0, 32.5], "expected": 32.5}, {"input": [-45.0, 33.0], "expected": 33.0}, {"input": [-45.0, 33.5], "expected": 33.5}, {"input": [-45.0, 34.0], "expected": 34.0}, {"input": [-45.0, 34.5], "expected": 34.5}, {"input": [-45.0, 35.0], "expected": 35.0}, {"input": [-45.0, 35.5], "expected": 35.5}, {"input": [-45.0, 36.0], "expected": 36.0}, {"input": [-45.0, 36.5], "expected": 36.5}, {"input": [-45.0, 37.0], "expected": 37.0}, {"input": [-45.0, 37.5], "expected": 37.5}, {"input": [-45.0, 38.0], "expected": 38.0}, {"input": [-45.0, 38.5], "expected": 38.5}, {"input": [-45.0, 39.0], "expected": 39.0}, {"input": [-45.0, 39.5], "expected": 39.5}, {"input": [-45.0, 40.0], "expected": 40.0}, {"input": [-45.0, 40.5], "expected": 40.5}, {"input": [-45.0, 41.0], "expected": 41.0}, {"input": [-45.0, 41.5], "expected": 41.5}, {"input": [-45.0, 42.0], "expected": 42.0}, {"input": [-45.0, 42.5], "expected": 42.5}, {"input": [-45.0, 43.0], "expected": 43.0}, {"input": [-45.0, 43.5], "expected": 43.5}, {"input": [-45.0, 44.0], "expected": 44.0}, {"input": [-45.0, 44.5], "expected": 44.5}, {"input": [-45.0, 45.0], "expected": 45.0}, {"input": [-45.0, 45.5], "expected": 45.5}, {"input": [-45.0, 46.0], "expected": 46.0}, {"input": [-45.0, 46.5], "expected": 46.5}, {"input": [-45.0, 47.0], "expected": 47.0}, {"input": [-45.0, 47.5], "expected": 47.5}, {"input": [-45.0, 48.0], "expected": 48.0}, {"input": [-45.0, 48.5], "expected": 48.5}, {"input": [-45.0, 49.0], "expected": 49.0}, {"input": [-45.0, 49.5], "expected": 49.5}, {"input": [-45.0, 50.0], "expected": 50.0}, {"input": [-45.0, 50.5], "expected": 50.5}, {"input": [-45.0, 51.0], "expected": 51.0}, {"input": [-45.0, 51.5], "expected": 51.5}, {"input": [-45.0, 52.0], "expected": 52.0}, {"input": [-45.0, 52.5], "expected": 52.5}, {"input": [-45.0, 53.0], "expected": 53.0}, {"input": [-45.0, 53.5], "expected": 53.5}, {"input": [-45.0, 54.0], "expected": 54.0}, {"input": [-45.0, 54.5], "expected": 54.5}, {"input": [-45.0, 55.0], "expected": 55.0}, {"input": [-45.0, 55.5], "expected": 55.5}, {"input": [-45.0, 56.0], "expected": 56.0}, {"input": [-45.0, 56.5], "expected": 56.5}, {"input": [-45.0, 57.0], "expected": 57.0}, {"input": [-45.0, 57.5], "expected": 57.5}, {"input": [-45.0, 58.0], "expected": 58.0}, {"input": [-45.0, 58.5], "expected": 58.5}, {"input": [-45.0, 59.0], "expected": 59.0}, {"input": [-45.0, 59.5], "expected": 59.5}, {"input": [-45.0, 60.0], "expected": 60.0}, {"input": [-45.0, 60.5], "expected": 60.5}, {"input": [-45.0, 61.0], "expected": 61.0}, {"input": [-45.0, 61.5], "expected": 61.5}, {"input": [-45.0, 62.0], "expected": 62.0}, {"input": [-45.0, 62.5], "expected": 62.5}, {"input": [-45.0, 63.0], "expected": 63.0}, {"input": [-45.0, 63.5], "expected": 63.5}, {"input": [-45.0, 64.0], "expected": 64.0}, {"input": [-45.0, 64.5], "expected": 64.5}, {"input": [-45.0, 65.0], "expected": 65.0}, {"input": [-45.0, 65.5], "expected": 65.5}, {"input": [-45.0, 66.0], "expected": 66.0}, {"input": [-45.0, 66.5], "expected": 66.5}, {"input": [-45.0, 67.0], "expected": 67.0}, {"input": [-45.0, 67.5], "expected": 67.5}, {"input": [-45.0, 68.0], "expected": 68.0}, {"input": [-45.0, 68.5], "expected": 68.5}, {"input": [-45.0, 69.0], "expected": 69.0}, {"input": [-45.0, 69.5], "expected": 69.5}, {"input": [-45.0, 70.0], "expected": 70.0}, {"input": [-45.0, 70.5], "expected": 70.5}, {"input": [-45.0, 71.0], "expected": 71.0}, {"input": [-45.0, 71.5], "expected": 71.5}, {"input": [-45.0, 72.0], "expected": 72.0}, {"input": [-45.0, 72.5], "expected": 72.5}, {"input": [-45.0, 73.0], "expected": 73.0}, {"input": [-45.0, 73.5], "expected": 73.5}, {"input": [-45.0, 74.0], "expected": 74.0}, {"input": [-45.0, 74.5], "expected": 74.5}, {"input": [-45.0, 75.0], "expected": 75.0}, {"input": [-45.0, 75.5], "expected": 75.5}, {"input": [-45.0, 76.0], "expected": 76.0}, {"input": [-45.0, 76.5], "expected": 76.5}, {"input": [-45.0, 77.0], "expected": 77.0}, {"input": [-45.0, 77.5], "expected": 77.5}, {"input": [-45.0, 78.0], "expected": 78.0}, {"input": [-45.0, 78.5], "expected": 78.5}, {"input": [-45.0, 79.0], "expected": 79.0}, {"input": [-45.0, 79.5], "expected": 79.5}, {"input": [-45.0, 80.0], "expected": 80.0}, {"input": [-45.0, 80.5], "expected": 80.5}, {"input": [-45.0, 81.0], "expected": 81.0}, {"input": [-45.0, 81.5], "expected": 81.5}, {"input": [-45.0, 82.0], "expected": 82.0}, {"input": [-45.0, 82.5], "expected": 82.5}, {"input": [-45.0, 83.0], "expected": 83.0}, {"input": [-45.0, 83.5], "expected": 83.5}, {"input": [-45.0, 84.0], "expected": 84.0}, {"input": [-45.0, 84.5], "expected": 84.5}, {"input": [-45.0, 85.0], "expected": 85.0}, {"input": [-45.0, 85.5], "expected": 85.5}, {"input": [-45.0, 86.0], "expected": 86.0}, {"input": [-45.0, 86.5], "expected": 86.5}, {"input": [-45.0, 87.0], "expected": 87.0}, {"input": [-45.0, 87.5], "expected": 87.5}, {"input": [-45.0, 88.0], "expected": 88.0}, {"input": [-45.0, 88.5], "expected": 88.5}, {"input": [-45.0, 89.0], "expected": 89.0}, {"input": [-45.0, 89.5], "expected": 89.5}, {"input": [-45.0, 90.0], "expected": 90.0}, {"input": [-45.0, 90.5], "expected": 90.5}, {"input": [-45.0, 91.0], "expected": 91.0}, {"input": [-45.0, 91.5], "expected": 91.5}, {"input": [-45.0, 92.0], "expected": 92.0}, {"input": [-45.0, 92.5], "expected": 92.5}, {"input": [-45.0, 93.0], "expected": 93.0}, {"input": [-45.0, 93.5], "expected": 93.5}, {"input": [-45.0, 94.0], "expected": 94.0}, {"input": [-45.0, 94.5], "expected": 94.5}, {"input": [-45.0, 95.0], "expected": 95.0}, {"input": [-45.0, 95.5], "expected": 95.5}, {"input": [-45.0, 96.0], "expected": 96.0}, {"input": [-45.0, 96.5], "expected": 96.5}, {"input": [-45.0, 97.0], "expected": 97.0}, {"input": [-45.0, 97.5], "expected": 97.5}, {"input": [-45.0, 98.0], "expected": 98.0}, {"input": [-45.0, 98.5], "expected": 98.5}, {"input": [-45.0, 99.0], "expected": 99.0}, {"input": [-45.0, 99.5], "expected": 99.5}, {"input": [-44.5, -100.0], "expected": -44.5}, {"input": [-44.5, -99.5], "expected": -44.5}, {"input": [-44.5, -99.0], "expected": -44.5}, {"input": [-44.5, -98.5], "expected": -44.5}, {"input": [-44.5, -98.0], "expected": -44.5}, {"input": [-44.5, -97.5], "expected": -44.5}, {"input": [-44.5, -97.0], "expected": -44.5}, {"input": [-44.5, -96.5], "expected": -44.5}, {"input": [-44.5, -96.0], "expected": -44.5}, {"input": [-44.5, -95.5], "expected": -44.5}, {"input": [-44.5, -95.0], "expected": -44.5}, {"input": [-44.5, -94.5], "expected": -44.5}, {"input": [-44.5, -94.0], "expected": -44.5}, {"input": [-44.5, -93.5], "expected": -44.5}, {"input": [-44.5, -93.0], "expected": -44.5}, {"input": [-44.5, -92.5], "expected": -44.5}, {"input": [-44.5, -92.0], "expected": -44.5}, {"input": [-44.5, -91.5], "expected": -44.5}, {"input": [-44.5, -91.0], "expected": -44.5}, {"input": [-44.5, -90.5], "expected": -44.5}, {"input": [-44.5, -90.0], "expected": -44.5}, {"input": [-44.5, -89.5], "expected": -44.5}, {"input": [-44.5, -89.0], "expected": -44.5}, {"input": [-44.5, -88.5], "expected": -44.5}, {"input": [-44.5, -88.0], "expected": -44.5}, {"input": [-44.5, -87.5], "expected": -44.5}, {"input": [-44.5, -87.0], "expected": -44.5}, {"input": [-44.5, -86.5], "expected": -44.5}, {"input": [-44.5, -86.0], "expected": -44.5}, {"input": [-44.5, -85.5], "expected": -44.5}, {"input": [-44.5, -85.0], "expected": -44.5}, {"input": [-44.5, -84.5], "expected": -44.5}, {"input": [-44.5, -84.0], "expected": -44.5}, {"input": [-44.5, -83.5], "expected": -44.5}, {"input": [-44.5, -83.0], "expected": -44.5}, {"input": [-44.5, -82.5], "expected": -44.5}, {"input": [-44.5, -82.0], "expected": -44.5}, {"input": [-44.5, -81.5], "expected": -44.5}, {"input": [-44.5, -81.0], "expected": -44.5}, {"input": [-44.5, -80.5], "expected": -44.5}, {"input": [-44.5, -80.0], "expected": -44.5}, {"input": [-44.5, -79.5], "expected": -44.5}, {"input": [-44.5, -79.0], "expected": -44.5}, {"input": [-44.5, -78.5], "expected": -44.5}, {"input": [-44.5, -78.0], "expected": -44.5}, {"input": [-44.5, -77.5], "expected": -44.49999999999999}, {"input": [-44.5, -77.0], "expected": -44.49999999999999}, {"input": [-44.5, -76.5], "expected": -44.499999999999986}, {"input": [-44.5, -76.0], "expected": -44.49999999999998}, {"input": [-44.5, -75.5], "expected": -44.499999999999964}, {"input": [-44.5, -75.0], "expected": -44.49999999999994}, {"input": [-44.5, -74.5], "expected": -44.49999999999991}, {"input": [-44.5, -74.0], "expected": -44.499999999999844}, {"input": [-44.5, -73.5], "expected": -44.499999999999744}, {"input": [-44.5, -73.0], "expected": -44.49999999999958}, {"input": [-44.5, -72.5], "expected": -44.49999999999931}, {"input": [-44.5, -72.0], "expected": -44.49999999999886}, {"input": [-44.5, -71.5], "expected": -44.49999999999812}, {"input": [-44.5, -71.0], "expected": -44.4999999999969}, {"input": [-44.5, -70.5], "expected": -44.49999999999489}, {"input": [-44.5, -70.0], "expected": -44.49999999999158}, {"input": [-44.5, -69.5], "expected": -44.49999999998611}, {"input": [-44.5, -69.0], "expected": -44.4999999999771}, {"input": [-44.5, -68.5], "expected": -44.49999999996225}, {"input": [-44.5, -68.0], "expected": -44.49999999993776}, {"input": [-44.5, -67.5], "expected": -44.49999999989738}, {"input": [-44.5, -67.0], "expected": -44.49999999983081}, {"input": [-44.5, -66.5], "expected": -44.499999999721055}, {"input": [-44.5, -66.0], "expected": -44.499999999540094}, {"input": [-44.5, -65.5], "expected": -44.499999999241744}, {"input": [-44.5, -65.0], "expected": -44.49999999874985}, {"input": [-44.5, -64.5], "expected": -44.49999999793884}, {"input": [-44.5, -64.0], "expected": -44.49999999660173}, {"input": [-44.5, -63.5], "expected": -44.49999999439721}, {"input": [-44.5, -63.0], "expected": -44.499999990762554}, {"input": [-44.5, -62.5], "expected": -44.49999998477002}, {"input": [-44.5, -62.0], "expected": -44.49999997489001}, {"input": [-44.5, -61.5], "expected": -44.499999958600625}, {"input": [-44.5, -61.0], "expected": -44.49999993174397}, {"input": [-44.5, -60.5], "expected": -44.49999988746483}, {"input": [-44.5, -60.0], "expected": -44.49999981446088}, {"input": [-44.5, -59.5], "expected": -44.499999694097724}, {"input": [-44.5, -59.0], "expected": -44.49999949565247}, {"input": [-44.5, -58.5], "expected": -44.499999168471625}, {"input": [-44.5, -58.0], "expected": -44.499998629041855}, {"input": [-44.5, -57.5], "expected": -44.49999773967315}, {"input": [-44.5, -57.0], "expected": -44.49999627335377}, {"input": [-44.5, -56.5], "expected": -44.49999385580652}, {"input": [-44.5, -56.0], "expected": -44.49998986995771}, {"input": [-44.5, -55.5], "expected": -44.49998329843868}, {"input": [-44.5, -55.0], "expected": -44.49997246392977}, {"input": [-44.5, -54.5], "expected": -44.49995460110078}, {"input": [-44.5, -54.0], "expected": -44.49992515097137}, {"input": [-44.5, -53.5], "expected": -44.49987659781028}, {"input": [-44.5, -53.0], "expected": -44.49979655232787}, {"input": [-44.5, -52.5], "expected": -44.4996645936271}, {"input": [-44.5, -52.0], "expected": -44.49944706852464}, {"input": [-44.5, -51.5], "expected": -44.49908853354623}, {"input": [-44.5, -51.0], "expected": -44.49849768984024}, {"input": [-44.5, -50.5], "expected": -44.49752431486227}, {"input": [-44.5, -50.0], "expected": -44.49592155672943}, {"input": [-44.5, -49.5], "expected": -44.49328465151088}, {"input": [-44.5, -49.0], "expected": -44.4889522551514}, {"input": [-44.5, -48.5], "expected": -44.48185007208219}, {"input": [-44.5, -48.0], "expected": -44.47024958172738}, {"input": [-44.5, -47.5], "expected": -44.451412648426256}, {"input": [-44.5, -47.0], "expected": -44.42111026570745}, {"input": [-44.5, -46.5], "expected": -44.37307198895703}, {"input": [-44.5, -46.0], "expected": -44.29858672201725}, {"input": [-44.5, -45.5], "expected": -44.18673831248178}, {"input": [-44.5, -45.0], "expected": -44.02592301581989}, {"input": [-44.5, -44.5], "expected": -43.80685281944005}, {"input": [-44.5, -44.0], "expected": -43.52592301581989}, {"input": [-44.5, -43.5], "expected": -43.18673831248178}, {"input": [-44.5, -43.0], "expected": -42.79858672201725}, {"input": [-44.5, -42.5], "expected": -42.37307198895703}, {"input": [-44.5, -42.0], "expected": -41.92111026570745}, {"input": [-44.5, -41.5], "expected": -41.451412648426256}, {"input": [-44.5, -41.0], "expected": -40.97024958172738}, {"input": [-44.5, -40.5], "expected": -40.48185007208219}, {"input": [-44.5, -40.0], "expected": -39.9889522551514}, {"input": [-44.5, -39.5], "expected": -39.49328465151088}, {"input": [-44.5, -39.0], "expected": -38.99592155672943}, {"input": [-44.5, -38.5], "expected": -38.49752431486227}, {"input": [-44.5, -38.0], "expected": -37.99849768984024}, {"input": [-44.5, -37.5], "expected": -37.49908853354623}, {"input": [-44.5, -37.0], "expected": -36.99944706852464}, {"input": [-44.5, -36.5], "expected": -36.4996645936271}, {"input": [-44.5, -36.0], "expected": -35.99979655232787}, {"input": [-44.5, -35.5], "expected": -35.49987659781028}, {"input": [-44.5, -35.0], "expected": -34.99992515097137}, {"input": [-44.5, -34.5], "expected": -34.49995460110078}, {"input": [-44.5, -34.0], "expected": -33.99997246392977}, {"input": [-44.5, -33.5], "expected": -33.49998329843868}, {"input": [-44.5, -33.0], "expected": -32.99998986995771}, {"input": [-44.5, -32.5], "expected": -32.49999385580652}, {"input": [-44.5, -32.0], "expected": -31.999996273353773}, {"input": [-44.5, -31.5], "expected": -31.499997739673148}, {"input": [-44.5, -31.0], "expected": -30.999998629041855}, {"input": [-44.5, -30.5], "expected": -30.499999168471625}, {"input": [-44.5, -30.0], "expected": -29.999999495652464}, {"input": [-44.5, -29.5], "expected": -29.499999694097728}, {"input": [-44.5, -29.0], "expected": -28.99999981446088}, {"input": [-44.5, -28.5], "expected": -28.49999988746483}, {"input": [-44.5, -28.0], "expected": -27.999999931743968}, {"input": [-44.5, -27.5], "expected": -27.499999958600625}, {"input": [-44.5, -27.0], "expected": -26.99999997489001}, {"input": [-44.5, -26.5], "expected": -26.49999998477002}, {"input": [-44.5, -26.0], "expected": -25.99999999076255}, {"input": [-44.5, -25.5], "expected": -25.499999994397204}, {"input": [-44.5, -25.0], "expected": -24.999999996601733}, {"input": [-44.5, -24.5], "expected": -24.499999997938847}, {"input": [-44.5, -24.0], "expected": -23.999999998749846}, {"input": [-44.5, -23.5], "expected": -23.499999999241744}, {"input": [-44.5, -23.0], "expected": -22.999999999540094}, {"input": [-44.5, -22.5], "expected": -22.49999999972105}, {"input": [-44.5, -22.0], "expected": -21.99999999983081}, {"input": [-44.5, -21.5], "expected": -21.49999999989738}, {"input": [-44.5, -21.0], "expected": -20.99999999993776}, {"input": [-44.5, -20.5], "expected": -20.49999999996225}, {"input": [-44.5, -20.0], "expected": -19.999999999977103}, {"input": [-44.5, -19.5], "expected": -19.499999999986112}, {"input": [-44.5, -19.0], "expected": -18.999999999991577}, {"input": [-44.5, -18.5], "expected": -18.49999999999489}, {"input": [-44.5, -18.0], "expected": -17.999999999996902}, {"input": [-44.5, -17.5], "expected": -17.49999999999812}, {"input": [-44.5, -17.0], "expected": -16.99999999999886}, {"input": [-44.5, -16.5], "expected": -16.499999999999307}, {"input": [-44.5, -16.0], "expected": -15.99999999999958}, {"input": [-44.5, -15.5], "expected": -15.499999999999746}, {"input": [-44.5, -15.0], "expected": -14.999999999999845}, {"input": [-44.5, -14.5], "expected": -14.499999999999906}, {"input": [-44.5, -14.0], "expected": -13.999999999999943}, {"input": [-44.5, -13.5], "expected": -13.499999999999966}, {"input": [-44.5, -13.0], "expected": -12.999999999999979}, {"input": [-44.5, -12.5], "expected": -12.499999999999988}, {"input": [-44.5, -12.0], "expected": -11.999999999999993}, {"input": [-44.5, -11.5], "expected": -11.499999999999995}, {"input": [-44.5, -11.0], "expected": -10.999999999999996}, {"input": [-44.5, -10.5], "expected": -10.499999999999998}, {"input": [-44.5, -10.0], "expected": -9.999999999999998}, {"input": [-44.5, -9.5], "expected": -9.5}, {"input": [-44.5, -9.0], "expected": -9.0}, {"input": [-44.5, -8.5], "expected": -8.5}, {"input": [-44.5, -8.0], "expected": -8.0}, {"input": [-44.5, -7.5], "expected": -7.5}, {"input": [-44.5, -7.0], "expected": -7.0}, {"input": [-44.5, -6.5], "expected": -6.5}, {"input": [-44.5, -6.0], "expected": -6.0}, {"input": [-44.5, -5.5], "expected": -5.5}, {"input": [-44.5, -5.0], "expected": -5.0}, {"input": [-44.5, -4.5], "expected": -4.5}, {"input": [-44.5, -4.0], "expected": -4.0}, {"input": [-44.5, -3.5], "expected": -3.5}, {"input": [-44.5, -3.0], "expected": -3.0}, {"input": [-44.5, -2.5], "expected": -2.5}, {"input": [-44.5, -2.0], "expected": -2.0}, {"input": [-44.5, -1.5], "expected": -1.5}, {"input": [-44.5, -1.0], "expected": -1.0}, {"input": [-44.5, -0.5], "expected": -0.5}, {"input": [-44.5, 0.0], "expected": 4.719495271526123e-20}, {"input": [-44.5, 0.5], "expected": 0.5}, {"input": [-44.5, 1.0], "expected": 1.0}, {"input": [-44.5, 1.5], "expected": 1.5}, {"input": [-44.5, 2.0], "expected": 2.0}, {"input": [-44.5, 2.5], "expected": 2.5}, {"input": [-44.5, 3.0], "expected": 3.0}, {"input": [-44.5, 3.5], "expected": 3.5}, {"input": [-44.5, 4.0], "expected": 4.0}, {"input": [-44.5, 4.5], "expected": 4.5}, {"input": [-44.5, 5.0], "expected": 5.0}, {"input": [-44.5, 5.5], "expected": 5.5}, {"input": [-44.5, 6.0], "expected": 6.0}, {"input": [-44.5, 6.5], "expected": 6.5}, {"input": [-44.5, 7.0], "expected": 7.0}, {"input": [-44.5, 7.5], "expected": 7.5}, {"input": [-44.5, 8.0], "expected": 8.0}, {"input": [-44.5, 8.5], "expected": 8.5}, {"input": [-44.5, 9.0], "expected": 9.0}, {"input": [-44.5, 9.5], "expected": 9.5}, {"input": [-44.5, 10.0], "expected": 10.0}, {"input": [-44.5, 10.5], "expected": 10.5}, {"input": [-44.5, 11.0], "expected": 11.0}, {"input": [-44.5, 11.5], "expected": 11.5}, {"input": [-44.5, 12.0], "expected": 12.0}, {"input": [-44.5, 12.5], "expected": 12.5}, {"input": [-44.5, 13.0], "expected": 13.0}, {"input": [-44.5, 13.5], "expected": 13.5}, {"input": [-44.5, 14.0], "expected": 14.0}, {"input": [-44.5, 14.5], "expected": 14.5}, {"input": [-44.5, 15.0], "expected": 15.0}, {"input": [-44.5, 15.5], "expected": 15.5}, {"input": [-44.5, 16.0], "expected": 16.0}, {"input": [-44.5, 16.5], "expected": 16.5}, {"input": [-44.5, 17.0], "expected": 17.0}, {"input": [-44.5, 17.5], "expected": 17.5}, {"input": [-44.5, 18.0], "expected": 18.0}, {"input": [-44.5, 18.5], "expected": 18.5}, {"input": [-44.5, 19.0], "expected": 19.0}, {"input": [-44.5, 19.5], "expected": 19.5}, {"input": [-44.5, 20.0], "expected": 20.0}, {"input": [-44.5, 20.5], "expected": 20.5}, {"input": [-44.5, 21.0], "expected": 21.0}, {"input": [-44.5, 21.5], "expected": 21.5}, {"input": [-44.5, 22.0], "expected": 22.0}, {"input": [-44.5, 22.5], "expected": 22.5}, {"input": [-44.5, 23.0], "expected": 23.0}, {"input": [-44.5, 23.5], "expected": 23.5}, {"input": [-44.5, 24.0], "expected": 24.0}, {"input": [-44.5, 24.5], "expected": 24.5}, {"input": [-44.5, 25.0], "expected": 25.0}, {"input": [-44.5, 25.5], "expected": 25.5}, {"input": [-44.5, 26.0], "expected": 26.0}, {"input": [-44.5, 26.5], "expected": 26.5}, {"input": [-44.5, 27.0], "expected": 27.0}, {"input": [-44.5, 27.5], "expected": 27.5}, {"input": [-44.5, 28.0], "expected": 28.0}, {"input": [-44.5, 28.5], "expected": 28.5}, {"input": [-44.5, 29.0], "expected": 29.0}, {"input": [-44.5, 29.5], "expected": 29.5}, {"input": [-44.5, 30.0], "expected": 30.0}, {"input": [-44.5, 30.5], "expected": 30.5}, {"input": [-44.5, 31.0], "expected": 31.0}, {"input": [-44.5, 31.5], "expected": 31.5}, {"input": [-44.5, 32.0], "expected": 32.0}, {"input": [-44.5, 32.5], "expected": 32.5}, {"input": [-44.5, 33.0], "expected": 33.0}, {"input": [-44.5, 33.5], "expected": 33.5}, {"input": [-44.5, 34.0], "expected": 34.0}, {"input": [-44.5, 34.5], "expected": 34.5}, {"input": [-44.5, 35.0], "expected": 35.0}, {"input": [-44.5, 35.5], "expected": 35.5}, {"input": [-44.5, 36.0], "expected": 36.0}, {"input": [-44.5, 36.5], "expected": 36.5}, {"input": [-44.5, 37.0], "expected": 37.0}, {"input": [-44.5, 37.5], "expected": 37.5}, {"input": [-44.5, 38.0], "expected": 38.0}, {"input": [-44.5, 38.5], "expected": 38.5}, {"input": [-44.5, 39.0], "expected": 39.0}, {"input": [-44.5, 39.5], "expected": 39.5}, {"input": [-44.5, 40.0], "expected": 40.0}, {"input": [-44.5, 40.5], "expected": 40.5}, {"input": [-44.5, 41.0], "expected": 41.0}, {"input": [-44.5, 41.5], "expected": 41.5}, {"input": [-44.5, 42.0], "expected": 42.0}, {"input": [-44.5, 42.5], "expected": 42.5}, {"input": [-44.5, 43.0], "expected": 43.0}, {"input": [-44.5, 43.5], "expected": 43.5}, {"input": [-44.5, 44.0], "expected": 44.0}, {"input": [-44.5, 44.5], "expected": 44.5}, {"input": [-44.5, 45.0], "expected": 45.0}, {"input": [-44.5, 45.5], "expected": 45.5}, {"input": [-44.5, 46.0], "expected": 46.0}, {"input": [-44.5, 46.5], "expected": 46.5}, {"input": [-44.5, 47.0], "expected": 47.0}, {"input": [-44.5, 47.5], "expected": 47.5}, {"input": [-44.5, 48.0], "expected": 48.0}, {"input": [-44.5, 48.5], "expected": 48.5}, {"input": [-44.5, 49.0], "expected": 49.0}, {"input": [-44.5, 49.5], "expected": 49.5}, {"input": [-44.5, 50.0], "expected": 50.0}, {"input": [-44.5, 50.5], "expected": 50.5}, {"input": [-44.5, 51.0], "expected": 51.0}, {"input": [-44.5, 51.5], "expected": 51.5}, {"input": [-44.5, 52.0], "expected": 52.0}, {"input": [-44.5, 52.5], "expected": 52.5}, {"input": [-44.5, 53.0], "expected": 53.0}, {"input": [-44.5, 53.5], "expected": 53.5}, {"input": [-44.5, 54.0], "expected": 54.0}, {"input": [-44.5, 54.5], "expected": 54.5}, {"input": [-44.5, 55.0], "expected": 55.0}, {"input": [-44.5, 55.5], "expected": 55.5}, {"input": [-44.5, 56.0], "expected": 56.0}, {"input": [-44.5, 56.5], "expected": 56.5}, {"input": [-44.5, 57.0], "expected": 57.0}, {"input": [-44.5, 57.5], "expected": 57.5}, {"input": [-44.5, 58.0], "expected": 58.0}, {"input": [-44.5, 58.5], "expected": 58.5}, {"input": [-44.5, 59.0], "expected": 59.0}, {"input": [-44.5, 59.5], "expected": 59.5}, {"input": [-44.5, 60.0], "expected": 60.0}, {"input": [-44.5, 60.5], "expected": 60.5}, {"input": [-44.5, 61.0], "expected": 61.0}, {"input": [-44.5, 61.5], "expected": 61.5}, {"input": [-44.5, 62.0], "expected": 62.0}, {"input": [-44.5, 62.5], "expected": 62.5}, {"input": [-44.5, 63.0], "expected": 63.0}, {"input": [-44.5, 63.5], "expected": 63.5}, {"input": [-44.5, 64.0], "expected": 64.0}, {"input": [-44.5, 64.5], "expected": 64.5}, {"input": [-44.5, 65.0], "expected": 65.0}, {"input": [-44.5, 65.5], "expected": 65.5}, {"input": [-44.5, 66.0], "expected": 66.0}, {"input": [-44.5, 66.5], "expected": 66.5}, {"input": [-44.5, 67.0], "expected": 67.0}, {"input": [-44.5, 67.5], "expected": 67.5}, {"input": [-44.5, 68.0], "expected": 68.0}, {"input": [-44.5, 68.5], "expected": 68.5}, {"input": [-44.5, 69.0], "expected": 69.0}, {"input": [-44.5, 69.5], "expected": 69.5}, {"input": [-44.5, 70.0], "expected": 70.0}, {"input": [-44.5, 70.5], "expected": 70.5}, {"input": [-44.5, 71.0], "expected": 71.0}, {"input": [-44.5, 71.5], "expected": 71.5}, {"input": [-44.5, 72.0], "expected": 72.0}, {"input": [-44.5, 72.5], "expected": 72.5}, {"input": [-44.5, 73.0], "expected": 73.0}, {"input": [-44.5, 73.5], "expected": 73.5}, {"input": [-44.5, 74.0], "expected": 74.0}, {"input": [-44.5, 74.5], "expected": 74.5}, {"input": [-44.5, 75.0], "expected": 75.0}, {"input": [-44.5, 75.5], "expected": 75.5}, {"input": [-44.5, 76.0], "expected": 76.0}, {"input": [-44.5, 76.5], "expected": 76.5}, {"input": [-44.5, 77.0], "expected": 77.0}, {"input": [-44.5, 77.5], "expected": 77.5}, {"input": [-44.5, 78.0], "expected": 78.0}, {"input": [-44.5, 78.5], "expected": 78.5}, {"input": [-44.5, 79.0], "expected": 79.0}, {"input": [-44.5, 79.5], "expected": 79.5}, {"input": [-44.5, 80.0], "expected": 80.0}, {"input": [-44.5, 80.5], "expected": 80.5}, {"input": [-44.5, 81.0], "expected": 81.0}, {"input": [-44.5, 81.5], "expected": 81.5}, {"input": [-44.5, 82.0], "expected": 82.0}, {"input": [-44.5, 82.5], "expected": 82.5}, {"input": [-44.5, 83.0], "expected": 83.0}, {"input": [-44.5, 83.5], "expected": 83.5}, {"input": [-44.5, 84.0], "expected": 84.0}, {"input": [-44.5, 84.5], "expected": 84.5}, {"input": [-44.5, 85.0], "expected": 85.0}, {"input": [-44.5, 85.5], "expected": 85.5}, {"input": [-44.5, 86.0], "expected": 86.0}, {"input": [-44.5, 86.5], "expected": 86.5}, {"input": [-44.5, 87.0], "expected": 87.0}, {"input": [-44.5, 87.5], "expected": 87.5}, {"input": [-44.5, 88.0], "expected": 88.0}, {"input": [-44.5, 88.5], "expected": 88.5}, {"input": [-44.5, 89.0], "expected": 89.0}, {"input": [-44.5, 89.5], "expected": 89.5}, {"input": [-44.5, 90.0], "expected": 90.0}, {"input": [-44.5, 90.5], "expected": 90.5}, {"input": [-44.5, 91.0], "expected": 91.0}, {"input": [-44.5, 91.5], "expected": 91.5}, {"input": [-44.5, 92.0], "expected": 92.0}, {"input": [-44.5, 92.5], "expected": 92.5}, {"input": [-44.5, 93.0], "expected": 93.0}, {"input": [-44.5, 93.5], "expected": 93.5}, {"input": [-44.5, 94.0], "expected": 94.0}, {"input": [-44.5, 94.5], "expected": 94.5}, {"input": [-44.5, 95.0], "expected": 95.0}, {"input": [-44.5, 95.5], "expected": 95.5}, {"input": [-44.5, 96.0], "expected": 96.0}, {"input": [-44.5, 96.5], "expected": 96.5}, {"input": [-44.5, 97.0], "expected": 97.0}, {"input": [-44.5, 97.5], "expected": 97.5}, {"input": [-44.5, 98.0], "expected": 98.0}, {"input": [-44.5, 98.5], "expected": 98.5}, {"input": [-44.5, 99.0], "expected": 99.0}, {"input": [-44.5, 99.5], "expected": 99.5}, {"input": [-44.0, -100.0], "expected": -44.0}, {"input": [-44.0, -99.5], "expected": -44.0}, {"input": [-44.0, -99.0], "expected": -44.0}, {"input": [-44.0, -98.5], "expected": -44.0}, {"input": [-44.0, -98.0], "expected": -44.0}, {"input": [-44.0, -97.5], "expected": -44.0}, {"input": [-44.0, -97.0], "expected": -44.0}, {"input": [-44.0, -96.5], "expected": -44.0}, {"input": [-44.0, -96.0], "expected": -44.0}, {"input": [-44.0, -95.5], "expected": -44.0}, {"input": [-44.0, -95.0], "expected": -44.0}, {"input": [-44.0, -94.5], "expected": -44.0}, {"input": [-44.0, -94.0], "expected": -44.0}, {"input": [-44.0, -93.5], "expected": -44.0}, {"input": [-44.0, -93.0], "expected": -44.0}, {"input": [-44.0, -92.5], "expected": -44.0}, {"input": [-44.0, -92.0], "expected": -44.0}, {"input": [-44.0, -91.5], "expected": -44.0}, {"input": [-44.0, -91.0], "expected": -44.0}, {"input": [-44.0, -90.5], "expected": -44.0}, {"input": [-44.0, -90.0], "expected": -44.0}, {"input": [-44.0, -89.5], "expected": -44.0}, {"input": [-44.0, -89.0], "expected": -44.0}, {"input": [-44.0, -88.5], "expected": -44.0}, {"input": [-44.0, -88.0], "expected": -44.0}, {"input": [-44.0, -87.5], "expected": -44.0}, {"input": [-44.0, -87.0], "expected": -44.0}, {"input": [-44.0, -86.5], "expected": -44.0}, {"input": [-44.0, -86.0], "expected": -44.0}, {"input": [-44.0, -85.5], "expected": -44.0}, {"input": [-44.0, -85.0], "expected": -44.0}, {"input": [-44.0, -84.5], "expected": -44.0}, {"input": [-44.0, -84.0], "expected": -44.0}, {"input": [-44.0, -83.5], "expected": -44.0}, {"input": [-44.0, -83.0], "expected": -44.0}, {"input": [-44.0, -82.5], "expected": -44.0}, {"input": [-44.0, -82.0], "expected": -44.0}, {"input": [-44.0, -81.5], "expected": -44.0}, {"input": [-44.0, -81.0], "expected": -44.0}, {"input": [-44.0, -80.5], "expected": -44.0}, {"input": [-44.0, -80.0], "expected": -44.0}, {"input": [-44.0, -79.5], "expected": -44.0}, {"input": [-44.0, -79.0], "expected": -44.0}, {"input": [-44.0, -78.5], "expected": -44.0}, {"input": [-44.0, -78.0], "expected": -44.0}, {"input": [-44.0, -77.5], "expected": -44.0}, {"input": [-44.0, -77.0], "expected": -43.99999999999999}, {"input": [-44.0, -76.5], "expected": -43.99999999999999}, {"input": [-44.0, -76.0], "expected": -43.999999999999986}, {"input": [-44.0, -75.5], "expected": -43.99999999999998}, {"input": [-44.0, -75.0], "expected": -43.999999999999964}, {"input": [-44.0, -74.5], "expected": -43.99999999999994}, {"input": [-44.0, -74.0], "expected": -43.99999999999991}, {"input": [-44.0, -73.5], "expected": -43.999999999999844}, {"input": [-44.0, -73.0], "expected": -43.999999999999744}, {"input": [-44.0, -72.5], "expected": -43.99999999999958}, {"input": [-44.0, -72.0], "expected": -43.99999999999931}, {"input": [-44.0, -71.5], "expected": -43.99999999999886}, {"input": [-44.0, -71.0], "expected": -43.99999999999812}, {"input": [-44.0, -70.5], "expected": -43.9999999999969}, {"input": [-44.0, -70.0], "expected": -43.99999999999489}, {"input": [-44.0, -69.5], "expected": -43.99999999999158}, {"input": [-44.0, -69.0], "expected": -43.99999999998611}, {"input": [-44.0, -68.5], "expected": -43.9999999999771}, {"input": [-44.0, -68.0], "expected": -43.99999999996225}, {"input": [-44.0, -67.5], "expected": -43.99999999993776}, {"input": [-44.0, -67.0], "expected": -43.99999999989738}, {"input": [-44.0, -66.5], "expected": -43.99999999983081}, {"input": [-44.0, -66.0], "expected": -43.999999999721055}, {"input": [-44.0, -65.5], "expected": -43.999999999540094}, {"input": [-44.0, -65.0], "expected": -43.999999999241744}, {"input": [-44.0, -64.5], "expected": -43.99999999874985}, {"input": [-44.0, -64.0], "expected": -43.99999999793884}, {"input": [-44.0, -63.5], "expected": -43.99999999660173}, {"input": [-44.0, -63.0], "expected": -43.99999999439721}, {"input": [-44.0, -62.5], "expected": -43.999999990762554}, {"input": [-44.0, -62.0], "expected": -43.99999998477002}, {"input": [-44.0, -61.5], "expected": -43.99999997489001}, {"input": [-44.0, -61.0], "expected": -43.999999958600625}, {"input": [-44.0, -60.5], "expected": -43.99999993174397}, {"input": [-44.0, -60.0], "expected": -43.99999988746483}, {"input": [-44.0, -59.5], "expected": -43.99999981446088}, {"input": [-44.0, -59.0], "expected": -43.999999694097724}, {"input": [-44.0, -58.5], "expected": -43.99999949565247}, {"input": [-44.0, -58.0], "expected": -43.999999168471625}, {"input": [-44.0, -57.5], "expected": -43.999998629041855}, {"input": [-44.0, -57.0], "expected": -43.99999773967315}, {"input": [-44.0, -56.5], "expected": -43.99999627335377}, {"input": [-44.0, -56.0], "expected": -43.99999385580652}, {"input": [-44.0, -55.5], "expected": -43.99998986995771}, {"input": [-44.0, -55.0], "expected": -43.99998329843868}, {"input": [-44.0, -54.5], "expected": -43.99997246392977}, {"input": [-44.0, -54.0], "expected": -43.99995460110078}, {"input": [-44.0, -53.5], "expected": -43.99992515097137}, {"input": [-44.0, -53.0], "expected": -43.99987659781028}, {"input": [-44.0, -52.5], "expected": -43.99979655232787}, {"input": [-44.0, -52.0], "expected": -43.9996645936271}, {"input": [-44.0, -51.5], "expected": -43.99944706852464}, {"input": [-44.0, -51.0], "expected": -43.99908853354623}, {"input": [-44.0, -50.5], "expected": -43.99849768984024}, {"input": [-44.0, -50.0], "expected": -43.99752431486227}, {"input": [-44.0, -49.5], "expected": -43.99592155672943}, {"input": [-44.0, -49.0], "expected": -43.99328465151088}, {"input": [-44.0, -48.5], "expected": -43.9889522551514}, {"input": [-44.0, -48.0], "expected": -43.98185007208219}, {"input": [-44.0, -47.5], "expected": -43.97024958172738}, {"input": [-44.0, -47.0], "expected": -43.951412648426256}, {"input": [-44.0, -46.5], "expected": -43.92111026570745}, {"input": [-44.0, -46.0], "expected": -43.87307198895703}, {"input": [-44.0, -45.5], "expected": -43.79858672201725}, {"input": [-44.0, -45.0], "expected": -43.68673831248178}, {"input": [-44.0, -44.5], "expected": -43.52592301581989}, {"input": [-44.0, -44.0], "expected": -43.30685281944005}, {"input": [-44.0, -43.5], "expected": -43.02592301581989}, {"input": [-44.0, -43.0], "expected": -42.68673831248178}, {"input": [-44.0, -42.5], "expected": -42.29858672201725}, {"input": [-44.0, -42.0], "expected": -41.87307198895703}, {"input": [-44.0, -41.5], "expected": -41.42111026570745}, {"input": [-44.0, -41.0], "expected": -40.951412648426256}, {"input": [-44.0, -40.5], "expected": -40.47024958172738}, {"input": [-44.0, -40.0], "expected": -39.98185007208219}, {"input": [-44.0, -39.5], "expected": -39.4889522551514}, {"input": [-44.0, -39.0], "expected": -38.99328465151088}, {"input": [-44.0, -38.5], "expected": -38.49592155672943}, {"input": [-44.0, -38.0], "expected": -37.99752431486227}, {"input": [-44.0, -37.5], "expected": -37.49849768984024}, {"input": [-44.0, -37.0], "expected": -36.99908853354623}, {"input": [-44.0, -36.5], "expected": -36.49944706852464}, {"input": [-44.0, -36.0], "expected": -35.9996645936271}, {"input": [-44.0, -35.5], "expected": -35.49979655232787}, {"input": [-44.0, -35.0], "expected": -34.99987659781028}, {"input": [-44.0, -34.5], "expected": -34.49992515097137}, {"input": [-44.0, -34.0], "expected": -33.99995460110078}, {"input": [-44.0, -33.5], "expected": -33.49997246392977}, {"input": [-44.0, -33.0], "expected": -32.99998329843868}, {"input": [-44.0, -32.5], "expected": -32.49998986995771}, {"input": [-44.0, -32.0], "expected": -31.999993855806522}, {"input": [-44.0, -31.5], "expected": -31.499996273353773}, {"input": [-44.0, -31.0], "expected": -30.999997739673148}, {"input": [-44.0, -30.5], "expected": -30.499998629041855}, {"input": [-44.0, -30.0], "expected": -29.999999168471625}, {"input": [-44.0, -29.5], "expected": -29.499999495652464}, {"input": [-44.0, -29.0], "expected": -28.999999694097728}, {"input": [-44.0, -28.5], "expected": -28.49999981446088}, {"input": [-44.0, -28.0], "expected": -27.99999988746483}, {"input": [-44.0, -27.5], "expected": -27.499999931743968}, {"input": [-44.0, -27.0], "expected": -26.999999958600625}, {"input": [-44.0, -26.5], "expected": -26.49999997489001}, {"input": [-44.0, -26.0], "expected": -25.99999998477002}, {"input": [-44.0, -25.5], "expected": -25.49999999076255}, {"input": [-44.0, -25.0], "expected": -24.999999994397204}, {"input": [-44.0, -24.5], "expected": -24.499999996601733}, {"input": [-44.0, -24.0], "expected": -23.999999997938847}, {"input": [-44.0, -23.5], "expected": -23.499999998749846}, {"input": [-44.0, -23.0], "expected": -22.999999999241744}, {"input": [-44.0, -22.5], "expected": -22.499999999540094}, {"input": [-44.0, -22.0], "expected": -21.99999999972105}, {"input": [-44.0, -21.5], "expected": -21.49999999983081}, {"input": [-44.0, -21.0], "expected": -20.99999999989738}, {"input": [-44.0, -20.5], "expected": -20.49999999993776}, {"input": [-44.0, -20.0], "expected": -19.99999999996225}, {"input": [-44.0, -19.5], "expected": -19.499999999977103}, {"input": [-44.0, -19.0], "expected": -18.999999999986112}, {"input": [-44.0, -18.5], "expected": -18.499999999991577}, {"input": [-44.0, -18.0], "expected": -17.99999999999489}, {"input": [-44.0, -17.5], "expected": -17.499999999996902}, {"input": [-44.0, -17.0], "expected": -16.99999999999812}, {"input": [-44.0, -16.5], "expected": -16.49999999999886}, {"input": [-44.0, -16.0], "expected": -15.999999999999309}, {"input": [-44.0, -15.5], "expected": -15.49999999999958}, {"input": [-44.0, -15.0], "expected": -14.999999999999746}, {"input": [-44.0, -14.5], "expected": -14.499999999999845}, {"input": [-44.0, -14.0], "expected": -13.999999999999906}, {"input": [-44.0, -13.5], "expected": -13.499999999999943}, {"input": [-44.0, -13.0], "expected": -12.999999999999966}, {"input": [-44.0, -12.5], "expected": -12.499999999999979}, {"input": [-44.0, -12.0], "expected": -11.999999999999988}, {"input": [-44.0, -11.5], "expected": -11.499999999999993}, {"input": [-44.0, -11.0], "expected": -10.999999999999995}, {"input": [-44.0, -10.5], "expected": -10.499999999999996}, {"input": [-44.0, -10.0], "expected": -9.999999999999998}, {"input": [-44.0, -9.5], "expected": -9.499999999999998}, {"input": [-44.0, -9.0], "expected": -9.0}, {"input": [-44.0, -8.5], "expected": -8.5}, {"input": [-44.0, -8.0], "expected": -8.0}, {"input": [-44.0, -7.5], "expected": -7.5}, {"input": [-44.0, -7.0], "expected": -7.0}, {"input": [-44.0, -6.5], "expected": -6.5}, {"input": [-44.0, -6.0], "expected": -6.0}, {"input": [-44.0, -5.5], "expected": -5.5}, {"input": [-44.0, -5.0], "expected": -5.0}, {"input": [-44.0, -4.5], "expected": -4.5}, {"input": [-44.0, -4.0], "expected": -4.0}, {"input": [-44.0, -3.5], "expected": -3.5}, {"input": [-44.0, -3.0], "expected": -3.0}, {"input": [-44.0, -2.5], "expected": -2.5}, {"input": [-44.0, -2.0], "expected": -2.0}, {"input": [-44.0, -1.5], "expected": -1.5}, {"input": [-44.0, -1.0], "expected": -1.0}, {"input": [-44.0, -0.5], "expected": -0.5}, {"input": [-44.0, 0.0], "expected": 7.781132241133797e-20}, {"input": [-44.0, 0.5], "expected": 0.5}, {"input": [-44.0, 1.0], "expected": 1.0}, {"input": [-44.0, 1.5], "expected": 1.5}, {"input": [-44.0, 2.0], "expected": 2.0}, {"input": [-44.0, 2.5], "expected": 2.5}, {"input": [-44.0, 3.0], "expected": 3.0}, {"input": [-44.0, 3.5], "expected": 3.5}, {"input": [-44.0, 4.0], "expected": 4.0}, {"input": [-44.0, 4.5], "expected": 4.5}, {"input": [-44.0, 5.0], "expected": 5.0}, {"input": [-44.0, 5.5], "expected": 5.5}, {"input": [-44.0, 6.0], "expected": 6.0}, {"input": [-44.0, 6.5], "expected": 6.5}, {"input": [-44.0, 7.0], "expected": 7.0}, {"input": [-44.0, 7.5], "expected": 7.5}, {"input": [-44.0, 8.0], "expected": 8.0}, {"input": [-44.0, 8.5], "expected": 8.5}, {"input": [-44.0, 9.0], "expected": 9.0}, {"input": [-44.0, 9.5], "expected": 9.5}, {"input": [-44.0, 10.0], "expected": 10.0}, {"input": [-44.0, 10.5], "expected": 10.5}, {"input": [-44.0, 11.0], "expected": 11.0}, {"input": [-44.0, 11.5], "expected": 11.5}, {"input": [-44.0, 12.0], "expected": 12.0}, {"input": [-44.0, 12.5], "expected": 12.5}, {"input": [-44.0, 13.0], "expected": 13.0}, {"input": [-44.0, 13.5], "expected": 13.5}, {"input": [-44.0, 14.0], "expected": 14.0}, {"input": [-44.0, 14.5], "expected": 14.5}, {"input": [-44.0, 15.0], "expected": 15.0}, {"input": [-44.0, 15.5], "expected": 15.5}, {"input": [-44.0, 16.0], "expected": 16.0}, {"input": [-44.0, 16.5], "expected": 16.5}, {"input": [-44.0, 17.0], "expected": 17.0}, {"input": [-44.0, 17.5], "expected": 17.5}, {"input": [-44.0, 18.0], "expected": 18.0}, {"input": [-44.0, 18.5], "expected": 18.5}, {"input": [-44.0, 19.0], "expected": 19.0}, {"input": [-44.0, 19.5], "expected": 19.5}, {"input": [-44.0, 20.0], "expected": 20.0}, {"input": [-44.0, 20.5], "expected": 20.5}, {"input": [-44.0, 21.0], "expected": 21.0}, {"input": [-44.0, 21.5], "expected": 21.5}, {"input": [-44.0, 22.0], "expected": 22.0}, {"input": [-44.0, 22.5], "expected": 22.5}, {"input": [-44.0, 23.0], "expected": 23.0}, {"input": [-44.0, 23.5], "expected": 23.5}, {"input": [-44.0, 24.0], "expected": 24.0}, {"input": [-44.0, 24.5], "expected": 24.5}, {"input": [-44.0, 25.0], "expected": 25.0}, {"input": [-44.0, 25.5], "expected": 25.5}, {"input": [-44.0, 26.0], "expected": 26.0}, {"input": [-44.0, 26.5], "expected": 26.5}, {"input": [-44.0, 27.0], "expected": 27.0}, {"input": [-44.0, 27.5], "expected": 27.5}, {"input": [-44.0, 28.0], "expected": 28.0}, {"input": [-44.0, 28.5], "expected": 28.5}, {"input": [-44.0, 29.0], "expected": 29.0}, {"input": [-44.0, 29.5], "expected": 29.5}, {"input": [-44.0, 30.0], "expected": 30.0}, {"input": [-44.0, 30.5], "expected": 30.5}, {"input": [-44.0, 31.0], "expected": 31.0}, {"input": [-44.0, 31.5], "expected": 31.5}, {"input": [-44.0, 32.0], "expected": 32.0}, {"input": [-44.0, 32.5], "expected": 32.5}, {"input": [-44.0, 33.0], "expected": 33.0}, {"input": [-44.0, 33.5], "expected": 33.5}, {"input": [-44.0, 34.0], "expected": 34.0}, {"input": [-44.0, 34.5], "expected": 34.5}, {"input": [-44.0, 35.0], "expected": 35.0}, {"input": [-44.0, 35.5], "expected": 35.5}, {"input": [-44.0, 36.0], "expected": 36.0}, {"input": [-44.0, 36.5], "expected": 36.5}, {"input": [-44.0, 37.0], "expected": 37.0}, {"input": [-44.0, 37.5], "expected": 37.5}, {"input": [-44.0, 38.0], "expected": 38.0}, {"input": [-44.0, 38.5], "expected": 38.5}, {"input": [-44.0, 39.0], "expected": 39.0}, {"input": [-44.0, 39.5], "expected": 39.5}, {"input": [-44.0, 40.0], "expected": 40.0}, {"input": [-44.0, 40.5], "expected": 40.5}, {"input": [-44.0, 41.0], "expected": 41.0}, {"input": [-44.0, 41.5], "expected": 41.5}, {"input": [-44.0, 42.0], "expected": 42.0}, {"input": [-44.0, 42.5], "expected": 42.5}, {"input": [-44.0, 43.0], "expected": 43.0}, {"input": [-44.0, 43.5], "expected": 43.5}, {"input": [-44.0, 44.0], "expected": 44.0}, {"input": [-44.0, 44.5], "expected": 44.5}, {"input": [-44.0, 45.0], "expected": 45.0}, {"input": [-44.0, 45.5], "expected": 45.5}, {"input": [-44.0, 46.0], "expected": 46.0}, {"input": [-44.0, 46.5], "expected": 46.5}, {"input": [-44.0, 47.0], "expected": 47.0}, {"input": [-44.0, 47.5], "expected": 47.5}, {"input": [-44.0, 48.0], "expected": 48.0}, {"input": [-44.0, 48.5], "expected": 48.5}, {"input": [-44.0, 49.0], "expected": 49.0}, {"input": [-44.0, 49.5], "expected": 49.5}, {"input": [-44.0, 50.0], "expected": 50.0}, {"input": [-44.0, 50.5], "expected": 50.5}, {"input": [-44.0, 51.0], "expected": 51.0}, {"input": [-44.0, 51.5], "expected": 51.5}, {"input": [-44.0, 52.0], "expected": 52.0}, {"input": [-44.0, 52.5], "expected": 52.5}, {"input": [-44.0, 53.0], "expected": 53.0}, {"input": [-44.0, 53.5], "expected": 53.5}, {"input": [-44.0, 54.0], "expected": 54.0}, {"input": [-44.0, 54.5], "expected": 54.5}, {"input": [-44.0, 55.0], "expected": 55.0}, {"input": [-44.0, 55.5], "expected": 55.5}, {"input": [-44.0, 56.0], "expected": 56.0}, {"input": [-44.0, 56.5], "expected": 56.5}, {"input": [-44.0, 57.0], "expected": 57.0}, {"input": [-44.0, 57.5], "expected": 57.5}, {"input": [-44.0, 58.0], "expected": 58.0}, {"input": [-44.0, 58.5], "expected": 58.5}, {"input": [-44.0, 59.0], "expected": 59.0}, {"input": [-44.0, 59.5], "expected": 59.5}, {"input": [-44.0, 60.0], "expected": 60.0}, {"input": [-44.0, 60.5], "expected": 60.5}, {"input": [-44.0, 61.0], "expected": 61.0}, {"input": [-44.0, 61.5], "expected": 61.5}, {"input": [-44.0, 62.0], "expected": 62.0}, {"input": [-44.0, 62.5], "expected": 62.5}, {"input": [-44.0, 63.0], "expected": 63.0}, {"input": [-44.0, 63.5], "expected": 63.5}, {"input": [-44.0, 64.0], "expected": 64.0}, {"input": [-44.0, 64.5], "expected": 64.5}, {"input": [-44.0, 65.0], "expected": 65.0}, {"input": [-44.0, 65.5], "expected": 65.5}, {"input": [-44.0, 66.0], "expected": 66.0}, {"input": [-44.0, 66.5], "expected": 66.5}, {"input": [-44.0, 67.0], "expected": 67.0}, {"input": [-44.0, 67.5], "expected": 67.5}, {"input": [-44.0, 68.0], "expected": 68.0}, {"input": [-44.0, 68.5], "expected": 68.5}, {"input": [-44.0, 69.0], "expected": 69.0}, {"input": [-44.0, 69.5], "expected": 69.5}, {"input": [-44.0, 70.0], "expected": 70.0}, {"input": [-44.0, 70.5], "expected": 70.5}, {"input": [-44.0, 71.0], "expected": 71.0}, {"input": [-44.0, 71.5], "expected": 71.5}, {"input": [-44.0, 72.0], "expected": 72.0}, {"input": [-44.0, 72.5], "expected": 72.5}, {"input": [-44.0, 73.0], "expected": 73.0}, {"input": [-44.0, 73.5], "expected": 73.5}, {"input": [-44.0, 74.0], "expected": 74.0}, {"input": [-44.0, 74.5], "expected": 74.5}, {"input": [-44.0, 75.0], "expected": 75.0}, {"input": [-44.0, 75.5], "expected": 75.5}, {"input": [-44.0, 76.0], "expected": 76.0}, {"input": [-44.0, 76.5], "expected": 76.5}, {"input": [-44.0, 77.0], "expected": 77.0}, {"input": [-44.0, 77.5], "expected": 77.5}, {"input": [-44.0, 78.0], "expected": 78.0}, {"input": [-44.0, 78.5], "expected": 78.5}, {"input": [-44.0, 79.0], "expected": 79.0}, {"input": [-44.0, 79.5], "expected": 79.5}, {"input": [-44.0, 80.0], "expected": 80.0}, {"input": [-44.0, 80.5], "expected": 80.5}, {"input": [-44.0, 81.0], "expected": 81.0}, {"input": [-44.0, 81.5], "expected": 81.5}, {"input": [-44.0, 82.0], "expected": 82.0}, {"input": [-44.0, 82.5], "expected": 82.5}, {"input": [-44.0, 83.0], "expected": 83.0}, {"input": [-44.0, 83.5], "expected": 83.5}, {"input": [-44.0, 84.0], "expected": 84.0}, {"input": [-44.0, 84.5], "expected": 84.5}, {"input": [-44.0, 85.0], "expected": 85.0}, {"input": [-44.0, 85.5], "expected": 85.5}, {"input": [-44.0, 86.0], "expected": 86.0}, {"input": [-44.0, 86.5], "expected": 86.5}, {"input": [-44.0, 87.0], "expected": 87.0}, {"input": [-44.0, 87.5], "expected": 87.5}, {"input": [-44.0, 88.0], "expected": 88.0}, {"input": [-44.0, 88.5], "expected": 88.5}, {"input": [-44.0, 89.0], "expected": 89.0}, {"input": [-44.0, 89.5], "expected": 89.5}, {"input": [-44.0, 90.0], "expected": 90.0}, {"input": [-44.0, 90.5], "expected": 90.5}, {"input": [-44.0, 91.0], "expected": 91.0}, {"input": [-44.0, 91.5], "expected": 91.5}, {"input": [-44.0, 92.0], "expected": 92.0}, {"input": [-44.0, 92.5], "expected": 92.5}, {"input": [-44.0, 93.0], "expected": 93.0}, {"input": [-44.0, 93.5], "expected": 93.5}, {"input": [-44.0, 94.0], "expected": 94.0}, {"input": [-44.0, 94.5], "expected": 94.5}, {"input": [-44.0, 95.0], "expected": 95.0}, {"input": [-44.0, 95.5], "expected": 95.5}, {"input": [-44.0, 96.0], "expected": 96.0}, {"input": [-44.0, 96.5], "expected": 96.5}, {"input": [-44.0, 97.0], "expected": 97.0}, {"input": [-44.0, 97.5], "expected": 97.5}, {"input": [-44.0, 98.0], "expected": 98.0}, {"input": [-44.0, 98.5], "expected": 98.5}, {"input": [-44.0, 99.0], "expected": 99.0}, {"input": [-44.0, 99.5], "expected": 99.5}, {"input": [-43.5, -100.0], "expected": -43.5}, {"input": [-43.5, -99.5], "expected": -43.5}, {"input": [-43.5, -99.0], "expected": -43.5}, {"input": [-43.5, -98.5], "expected": -43.5}, {"input": [-43.5, -98.0], "expected": -43.5}, {"input": [-43.5, -97.5], "expected": -43.5}, {"input": [-43.5, -97.0], "expected": -43.5}, {"input": [-43.5, -96.5], "expected": -43.5}, {"input": [-43.5, -96.0], "expected": -43.5}, {"input": [-43.5, -95.5], "expected": -43.5}, {"input": [-43.5, -95.0], "expected": -43.5}, {"input": [-43.5, -94.5], "expected": -43.5}, {"input": [-43.5, -94.0], "expected": -43.5}, {"input": [-43.5, -93.5], "expected": -43.5}, {"input": [-43.5, -93.0], "expected": -43.5}, {"input": [-43.5, -92.5], "expected": -43.5}, {"input": [-43.5, -92.0], "expected": -43.5}, {"input": [-43.5, -91.5], "expected": -43.5}, {"input": [-43.5, -91.0], "expected": -43.5}, {"input": [-43.5, -90.5], "expected": -43.5}, {"input": [-43.5, -90.0], "expected": -43.5}, {"input": [-43.5, -89.5], "expected": -43.5}, {"input": [-43.5, -89.0], "expected": -43.5}, {"input": [-43.5, -88.5], "expected": -43.5}, {"input": [-43.5, -88.0], "expected": -43.5}, {"input": [-43.5, -87.5], "expected": -43.5}, {"input": [-43.5, -87.0], "expected": -43.5}, {"input": [-43.5, -86.5], "expected": -43.5}, {"input": [-43.5, -86.0], "expected": -43.5}, {"input": [-43.5, -85.5], "expected": -43.5}, {"input": [-43.5, -85.0], "expected": -43.5}, {"input": [-43.5, -84.5], "expected": -43.5}, {"input": [-43.5, -84.0], "expected": -43.5}, {"input": [-43.5, -83.5], "expected": -43.5}, {"input": [-43.5, -83.0], "expected": -43.5}, {"input": [-43.5, -82.5], "expected": -43.5}, {"input": [-43.5, -82.0], "expected": -43.5}, {"input": [-43.5, -81.5], "expected": -43.5}, {"input": [-43.5, -81.0], "expected": -43.5}, {"input": [-43.5, -80.5], "expected": -43.5}, {"input": [-43.5, -80.0], "expected": -43.5}, {"input": [-43.5, -79.5], "expected": -43.5}, {"input": [-43.5, -79.0], "expected": -43.5}, {"input": [-43.5, -78.5], "expected": -43.5}, {"input": [-43.5, -78.0], "expected": -43.5}, {"input": [-43.5, -77.5], "expected": -43.5}, {"input": [-43.5, -77.0], "expected": -43.5}, {"input": [-43.5, -76.5], "expected": -43.49999999999999}, {"input": [-43.5, -76.0], "expected": -43.49999999999999}, {"input": [-43.5, -75.5], "expected": -43.499999999999986}, {"input": [-43.5, -75.0], "expected": -43.49999999999998}, {"input": [-43.5, -74.5], "expected": -43.499999999999964}, {"input": [-43.5, -74.0], "expected": -43.49999999999994}, {"input": [-43.5, -73.5], "expected": -43.49999999999991}, {"input": [-43.5, -73.0], "expected": -43.499999999999844}, {"input": [-43.5, -72.5], "expected": -43.499999999999744}, {"input": [-43.5, -72.0], "expected": -43.49999999999958}, {"input": [-43.5, -71.5], "expected": -43.49999999999931}, {"input": [-43.5, -71.0], "expected": -43.49999999999886}, {"input": [-43.5, -70.5], "expected": -43.49999999999812}, {"input": [-43.5, -70.0], "expected": -43.4999999999969}, {"input": [-43.5, -69.5], "expected": -43.49999999999489}, {"input": [-43.5, -69.0], "expected": -43.49999999999158}, {"input": [-43.5, -68.5], "expected": -43.49999999998611}, {"input": [-43.5, -68.0], "expected": -43.4999999999771}, {"input": [-43.5, -67.5], "expected": -43.49999999996225}, {"input": [-43.5, -67.0], "expected": -43.49999999993776}, {"input": [-43.5, -66.5], "expected": -43.49999999989738}, {"input": [-43.5, -66.0], "expected": -43.49999999983081}, {"input": [-43.5, -65.5], "expected": -43.499999999721055}, {"input": [-43.5, -65.0], "expected": -43.499999999540094}, {"input": [-43.5, -64.5], "expected": -43.499999999241744}, {"input": [-43.5, -64.0], "expected": -43.49999999874985}, {"input": [-43.5, -63.5], "expected": -43.49999999793884}, {"input": [-43.5, -63.0], "expected": -43.49999999660173}, {"input": [-43.5, -62.5], "expected": -43.49999999439721}, {"input": [-43.5, -62.0], "expected": -43.499999990762554}, {"input": [-43.5, -61.5], "expected": -43.49999998477002}, {"input": [-43.5, -61.0], "expected": -43.49999997489001}, {"input": [-43.5, -60.5], "expected": -43.499999958600625}, {"input": [-43.5, -60.0], "expected": -43.49999993174397}, {"input": [-43.5, -59.5], "expected": -43.49999988746483}, {"input": [-43.5, -59.0], "expected": -43.49999981446088}, {"input": [-43.5, -58.5], "expected": -43.499999694097724}, {"input": [-43.5, -58.0], "expected": -43.49999949565247}, {"input": [-43.5, -57.5], "expected": -43.499999168471625}, {"input": [-43.5, -57.0], "expected": -43.499998629041855}, {"input": [-43.5, -56.5], "expected": -43.49999773967315}, {"input": [-43.5, -56.0], "expected": -43.49999627335377}, {"input": [-43.5, -55.5], "expected": -43.49999385580652}, {"input": [-43.5, -55.0], "expected": -43.49998986995771}, {"input": [-43.5, -54.5], "expected": -43.49998329843868}, {"input": [-43.5, -54.0], "expected": -43.49997246392977}, {"input": [-43.5, -53.5], "expected": -43.49995460110078}, {"input": [-43.5, -53.0], "expected": -43.49992515097137}, {"input": [-43.5, -52.5], "expected": -43.49987659781028}, {"input": [-43.5, -52.0], "expected": -43.49979655232787}, {"input": [-43.5, -51.5], "expected": -43.4996645936271}, {"input": [-43.5, -51.0], "expected": -43.49944706852464}, {"input": [-43.5, -50.5], "expected": -43.49908853354623}, {"input": [-43.5, -50.0], "expected": -43.49849768984024}, {"input": [-43.5, -49.5], "expected": -43.49752431486227}, {"input": [-43.5, -49.0], "expected": -43.49592155672943}, {"input": [-43.5, -48.5], "expected": -43.49328465151088}, {"input": [-43.5, -48.0], "expected": -43.4889522551514}, {"input": [-43.5, -47.5], "expected": -43.48185007208219}, {"input": [-43.5, -47.0], "expected": -43.47024958172738}, {"input": [-43.5, -46.5], "expected": -43.451412648426256}, {"input": [-43.5, -46.0], "expected": -43.42111026570745}, {"input": [-43.5, -45.5], "expected": -43.37307198895703}, {"input": [-43.5, -45.0], "expected": -43.29858672201725}, {"input": [-43.5, -44.5], "expected": -43.18673831248178}, {"input": [-43.5, -44.0], "expected": -43.02592301581989}, {"input": [-43.5, -43.5], "expected": -42.80685281944005}, {"input": [-43.5, -43.0], "expected": -42.52592301581989}, {"input": [-43.5, -42.5], "expected": -42.18673831248178}, {"input": [-43.5, -42.0], "expected": -41.79858672201725}, {"input": [-43.5, -41.5], "expected": -41.37307198895703}, {"input": [-43.5, -41.0], "expected": -40.92111026570745}, {"input": [-43.5, -40.5], "expected": -40.451412648426256}, {"input": [-43.5, -40.0], "expected": -39.97024958172738}, {"input": [-43.5, -39.5], "expected": -39.48185007208219}, {"input": [-43.5, -39.0], "expected": -38.9889522551514}, {"input": [-43.5, -38.5], "expected": -38.49328465151088}, {"input": [-43.5, -38.0], "expected": -37.99592155672943}, {"input": [-43.5, -37.5], "expected": -37.49752431486227}, {"input": [-43.5, -37.0], "expected": -36.99849768984024}, {"input": [-43.5, -36.5], "expected": -36.49908853354623}, {"input": [-43.5, -36.0], "expected": -35.99944706852464}, {"input": [-43.5, -35.5], "expected": -35.4996645936271}, {"input": [-43.5, -35.0], "expected": -34.99979655232787}, {"input": [-43.5, -34.5], "expected": -34.49987659781028}, {"input": [-43.5, -34.0], "expected": -33.99992515097137}, {"input": [-43.5, -33.5], "expected": -33.49995460110078}, {"input": [-43.5, -33.0], "expected": -32.99997246392977}, {"input": [-43.5, -32.5], "expected": -32.49998329843868}, {"input": [-43.5, -32.0], "expected": -31.99998986995771}, {"input": [-43.5, -31.5], "expected": -31.499993855806522}, {"input": [-43.5, -31.0], "expected": -30.999996273353773}, {"input": [-43.5, -30.5], "expected": -30.499997739673148}, {"input": [-43.5, -30.0], "expected": -29.999998629041855}, {"input": [-43.5, -29.5], "expected": -29.499999168471625}, {"input": [-43.5, -29.0], "expected": -28.999999495652464}, {"input": [-43.5, -28.5], "expected": -28.499999694097728}, {"input": [-43.5, -28.0], "expected": -27.99999981446088}, {"input": [-43.5, -27.5], "expected": -27.49999988746483}, {"input": [-43.5, -27.0], "expected": -26.999999931743968}, {"input": [-43.5, -26.5], "expected": -26.499999958600625}, {"input": [-43.5, -26.0], "expected": -25.99999997489001}, {"input": [-43.5, -25.5], "expected": -25.49999998477002}, {"input": [-43.5, -25.0], "expected": -24.99999999076255}, {"input": [-43.5, -24.5], "expected": -24.499999994397204}, {"input": [-43.5, -24.0], "expected": -23.999999996601733}, {"input": [-43.5, -23.5], "expected": -23.499999997938847}, {"input": [-43.5, -23.0], "expected": -22.999999998749846}, {"input": [-43.5, -22.5], "expected": -22.499999999241744}, {"input": [-43.5, -22.0], "expected": -21.999999999540094}, {"input": [-43.5, -21.5], "expected": -21.49999999972105}, {"input": [-43.5, -21.0], "expected": -20.99999999983081}, {"input": [-43.5, -20.5], "expected": -20.49999999989738}, {"input": [-43.5, -20.0], "expected": -19.99999999993776}, {"input": [-43.5, -19.5], "expected": -19.49999999996225}, {"input": [-43.5, -19.0], "expected": -18.999999999977103}, {"input": [-43.5, -18.5], "expected": -18.499999999986112}, {"input": [-43.5, -18.0], "expected": -17.999999999991577}, {"input": [-43.5, -17.5], "expected": -17.49999999999489}, {"input": [-43.5, -17.0], "expected": -16.999999999996902}, {"input": [-43.5, -16.5], "expected": -16.49999999999812}, {"input": [-43.5, -16.0], "expected": -15.99999999999886}, {"input": [-43.5, -15.5], "expected": -15.499999999999309}, {"input": [-43.5, -15.0], "expected": -14.99999999999958}, {"input": [-43.5, -14.5], "expected": -14.499999999999746}, {"input": [-43.5, -14.0], "expected": -13.999999999999845}, {"input": [-43.5, -13.5], "expected": -13.499999999999906}, {"input": [-43.5, -13.0], "expected": -12.999999999999943}, {"input": [-43.5, -12.5], "expected": -12.499999999999966}, {"input": [-43.5, -12.0], "expected": -11.999999999999979}, {"input": [-43.5, -11.5], "expected": -11.499999999999988}, {"input": [-43.5, -11.0], "expected": -10.999999999999993}, {"input": [-43.5, -10.5], "expected": -10.499999999999995}, {"input": [-43.5, -10.0], "expected": -9.999999999999996}, {"input": [-43.5, -9.5], "expected": -9.499999999999998}, {"input": [-43.5, -9.0], "expected": -8.999999999999998}, {"input": [-43.5, -8.5], "expected": -8.5}, {"input": [-43.5, -8.0], "expected": -8.0}, {"input": [-43.5, -7.5], "expected": -7.5}, {"input": [-43.5, -7.0], "expected": -7.0}, {"input": [-43.5, -6.5], "expected": -6.5}, {"input": [-43.5, -6.0], "expected": -6.0}, {"input": [-43.5, -5.5], "expected": -5.5}, {"input": [-43.5, -5.0], "expected": -5.0}, {"input": [-43.5, -4.5], "expected": -4.5}, {"input": [-43.5, -4.0], "expected": -4.0}, {"input": [-43.5, -3.5], "expected": -3.5}, {"input": [-43.5, -3.0], "expected": -3.0}, {"input": [-43.5, -2.5], "expected": -2.5}, {"input": [-43.5, -2.0], "expected": -2.0}, {"input": [-43.5, -1.5], "expected": -1.5}, {"input": [-43.5, -1.0], "expected": -1.0}, {"input": [-43.5, -0.5], "expected": -0.5}, {"input": [-43.5, 0.0], "expected": 1.282891823608785e-19}, {"input": [-43.5, 0.5], "expected": 0.5}, {"input": [-43.5, 1.0], "expected": 1.0}, {"input": [-43.5, 1.5], "expected": 1.5}, {"input": [-43.5, 2.0], "expected": 2.0}, {"input": [-43.5, 2.5], "expected": 2.5}, {"input": [-43.5, 3.0], "expected": 3.0}, {"input": [-43.5, 3.5], "expected": 3.5}, {"input": [-43.5, 4.0], "expected": 4.0}, {"input": [-43.5, 4.5], "expected": 4.5}, {"input": [-43.5, 5.0], "expected": 5.0}, {"input": [-43.5, 5.5], "expected": 5.5}, {"input": [-43.5, 6.0], "expected": 6.0}, {"input": [-43.5, 6.5], "expected": 6.5}, {"input": [-43.5, 7.0], "expected": 7.0}, {"input": [-43.5, 7.5], "expected": 7.5}, {"input": [-43.5, 8.0], "expected": 8.0}, {"input": [-43.5, 8.5], "expected": 8.5}, {"input": [-43.5, 9.0], "expected": 9.0}, {"input": [-43.5, 9.5], "expected": 9.5}, {"input": [-43.5, 10.0], "expected": 10.0}, {"input": [-43.5, 10.5], "expected": 10.5}, {"input": [-43.5, 11.0], "expected": 11.0}, {"input": [-43.5, 11.5], "expected": 11.5}, {"input": [-43.5, 12.0], "expected": 12.0}, {"input": [-43.5, 12.5], "expected": 12.5}, {"input": [-43.5, 13.0], "expected": 13.0}, {"input": [-43.5, 13.5], "expected": 13.5}, {"input": [-43.5, 14.0], "expected": 14.0}, {"input": [-43.5, 14.5], "expected": 14.5}, {"input": [-43.5, 15.0], "expected": 15.0}, {"input": [-43.5, 15.5], "expected": 15.5}, {"input": [-43.5, 16.0], "expected": 16.0}, {"input": [-43.5, 16.5], "expected": 16.5}, {"input": [-43.5, 17.0], "expected": 17.0}, {"input": [-43.5, 17.5], "expected": 17.5}, {"input": [-43.5, 18.0], "expected": 18.0}, {"input": [-43.5, 18.5], "expected": 18.5}, {"input": [-43.5, 19.0], "expected": 19.0}, {"input": [-43.5, 19.5], "expected": 19.5}, {"input": [-43.5, 20.0], "expected": 20.0}, {"input": [-43.5, 20.5], "expected": 20.5}, {"input": [-43.5, 21.0], "expected": 21.0}, {"input": [-43.5, 21.5], "expected": 21.5}, {"input": [-43.5, 22.0], "expected": 22.0}, {"input": [-43.5, 22.5], "expected": 22.5}, {"input": [-43.5, 23.0], "expected": 23.0}, {"input": [-43.5, 23.5], "expected": 23.5}, {"input": [-43.5, 24.0], "expected": 24.0}, {"input": [-43.5, 24.5], "expected": 24.5}, {"input": [-43.5, 25.0], "expected": 25.0}, {"input": [-43.5, 25.5], "expected": 25.5}, {"input": [-43.5, 26.0], "expected": 26.0}, {"input": [-43.5, 26.5], "expected": 26.5}, {"input": [-43.5, 27.0], "expected": 27.0}, {"input": [-43.5, 27.5], "expected": 27.5}, {"input": [-43.5, 28.0], "expected": 28.0}, {"input": [-43.5, 28.5], "expected": 28.5}, {"input": [-43.5, 29.0], "expected": 29.0}, {"input": [-43.5, 29.5], "expected": 29.5}, {"input": [-43.5, 30.0], "expected": 30.0}, {"input": [-43.5, 30.5], "expected": 30.5}, {"input": [-43.5, 31.0], "expected": 31.0}, {"input": [-43.5, 31.5], "expected": 31.5}, {"input": [-43.5, 32.0], "expected": 32.0}, {"input": [-43.5, 32.5], "expected": 32.5}, {"input": [-43.5, 33.0], "expected": 33.0}, {"input": [-43.5, 33.5], "expected": 33.5}, {"input": [-43.5, 34.0], "expected": 34.0}, {"input": [-43.5, 34.5], "expected": 34.5}, {"input": [-43.5, 35.0], "expected": 35.0}, {"input": [-43.5, 35.5], "expected": 35.5}, {"input": [-43.5, 36.0], "expected": 36.0}, {"input": [-43.5, 36.5], "expected": 36.5}, {"input": [-43.5, 37.0], "expected": 37.0}, {"input": [-43.5, 37.5], "expected": 37.5}, {"input": [-43.5, 38.0], "expected": 38.0}, {"input": [-43.5, 38.5], "expected": 38.5}, {"input": [-43.5, 39.0], "expected": 39.0}, {"input": [-43.5, 39.5], "expected": 39.5}, {"input": [-43.5, 40.0], "expected": 40.0}, {"input": [-43.5, 40.5], "expected": 40.5}, {"input": [-43.5, 41.0], "expected": 41.0}, {"input": [-43.5, 41.5], "expected": 41.5}, {"input": [-43.5, 42.0], "expected": 42.0}, {"input": [-43.5, 42.5], "expected": 42.5}, {"input": [-43.5, 43.0], "expected": 43.0}, {"input": [-43.5, 43.5], "expected": 43.5}, {"input": [-43.5, 44.0], "expected": 44.0}, {"input": [-43.5, 44.5], "expected": 44.5}, {"input": [-43.5, 45.0], "expected": 45.0}, {"input": [-43.5, 45.5], "expected": 45.5}, {"input": [-43.5, 46.0], "expected": 46.0}, {"input": [-43.5, 46.5], "expected": 46.5}, {"input": [-43.5, 47.0], "expected": 47.0}, {"input": [-43.5, 47.5], "expected": 47.5}, {"input": [-43.5, 48.0], "expected": 48.0}, {"input": [-43.5, 48.5], "expected": 48.5}, {"input": [-43.5, 49.0], "expected": 49.0}, {"input": [-43.5, 49.5], "expected": 49.5}, {"input": [-43.5, 50.0], "expected": 50.0}, {"input": [-43.5, 50.5], "expected": 50.5}, {"input": [-43.5, 51.0], "expected": 51.0}, {"input": [-43.5, 51.5], "expected": 51.5}, {"input": [-43.5, 52.0], "expected": 52.0}, {"input": [-43.5, 52.5], "expected": 52.5}, {"input": [-43.5, 53.0], "expected": 53.0}, {"input": [-43.5, 53.5], "expected": 53.5}, {"input": [-43.5, 54.0], "expected": 54.0}, {"input": [-43.5, 54.5], "expected": 54.5}, {"input": [-43.5, 55.0], "expected": 55.0}, {"input": [-43.5, 55.5], "expected": 55.5}, {"input": [-43.5, 56.0], "expected": 56.0}, {"input": [-43.5, 56.5], "expected": 56.5}, {"input": [-43.5, 57.0], "expected": 57.0}, {"input": [-43.5, 57.5], "expected": 57.5}, {"input": [-43.5, 58.0], "expected": 58.0}, {"input": [-43.5, 58.5], "expected": 58.5}, {"input": [-43.5, 59.0], "expected": 59.0}, {"input": [-43.5, 59.5], "expected": 59.5}, {"input": [-43.5, 60.0], "expected": 60.0}, {"input": [-43.5, 60.5], "expected": 60.5}, {"input": [-43.5, 61.0], "expected": 61.0}, {"input": [-43.5, 61.5], "expected": 61.5}, {"input": [-43.5, 62.0], "expected": 62.0}, {"input": [-43.5, 62.5], "expected": 62.5}, {"input": [-43.5, 63.0], "expected": 63.0}, {"input": [-43.5, 63.5], "expected": 63.5}, {"input": [-43.5, 64.0], "expected": 64.0}, {"input": [-43.5, 64.5], "expected": 64.5}, {"input": [-43.5, 65.0], "expected": 65.0}, {"input": [-43.5, 65.5], "expected": 65.5}, {"input": [-43.5, 66.0], "expected": 66.0}, {"input": [-43.5, 66.5], "expected": 66.5}, {"input": [-43.5, 67.0], "expected": 67.0}, {"input": [-43.5, 67.5], "expected": 67.5}, {"input": [-43.5, 68.0], "expected": 68.0}, {"input": [-43.5, 68.5], "expected": 68.5}, {"input": [-43.5, 69.0], "expected": 69.0}, {"input": [-43.5, 69.5], "expected": 69.5}, {"input": [-43.5, 70.0], "expected": 70.0}, {"input": [-43.5, 70.5], "expected": 70.5}, {"input": [-43.5, 71.0], "expected": 71.0}, {"input": [-43.5, 71.5], "expected": 71.5}, {"input": [-43.5, 72.0], "expected": 72.0}, {"input": [-43.5, 72.5], "expected": 72.5}, {"input": [-43.5, 73.0], "expected": 73.0}, {"input": [-43.5, 73.5], "expected": 73.5}, {"input": [-43.5, 74.0], "expected": 74.0}, {"input": [-43.5, 74.5], "expected": 74.5}, {"input": [-43.5, 75.0], "expected": 75.0}, {"input": [-43.5, 75.5], "expected": 75.5}, {"input": [-43.5, 76.0], "expected": 76.0}, {"input": [-43.5, 76.5], "expected": 76.5}, {"input": [-43.5, 77.0], "expected": 77.0}, {"input": [-43.5, 77.5], "expected": 77.5}, {"input": [-43.5, 78.0], "expected": 78.0}, {"input": [-43.5, 78.5], "expected": 78.5}, {"input": [-43.5, 79.0], "expected": 79.0}, {"input": [-43.5, 79.5], "expected": 79.5}, {"input": [-43.5, 80.0], "expected": 80.0}, {"input": [-43.5, 80.5], "expected": 80.5}, {"input": [-43.5, 81.0], "expected": 81.0}, {"input": [-43.5, 81.5], "expected": 81.5}, {"input": [-43.5, 82.0], "expected": 82.0}, {"input": [-43.5, 82.5], "expected": 82.5}, {"input": [-43.5, 83.0], "expected": 83.0}, {"input": [-43.5, 83.5], "expected": 83.5}, {"input": [-43.5, 84.0], "expected": 84.0}, {"input": [-43.5, 84.5], "expected": 84.5}, {"input": [-43.5, 85.0], "expected": 85.0}, {"input": [-43.5, 85.5], "expected": 85.5}, {"input": [-43.5, 86.0], "expected": 86.0}, {"input": [-43.5, 86.5], "expected": 86.5}, {"input": [-43.5, 87.0], "expected": 87.0}, {"input": [-43.5, 87.5], "expected": 87.5}, {"input": [-43.5, 88.0], "expected": 88.0}, {"input": [-43.5, 88.5], "expected": 88.5}, {"input": [-43.5, 89.0], "expected": 89.0}, {"input": [-43.5, 89.5], "expected": 89.5}, {"input": [-43.5, 90.0], "expected": 90.0}, {"input": [-43.5, 90.5], "expected": 90.5}, {"input": [-43.5, 91.0], "expected": 91.0}, {"input": [-43.5, 91.5], "expected": 91.5}, {"input": [-43.5, 92.0], "expected": 92.0}, {"input": [-43.5, 92.5], "expected": 92.5}, {"input": [-43.5, 93.0], "expected": 93.0}, {"input": [-43.5, 93.5], "expected": 93.5}, {"input": [-43.5, 94.0], "expected": 94.0}, {"input": [-43.5, 94.5], "expected": 94.5}, {"input": [-43.5, 95.0], "expected": 95.0}, {"input": [-43.5, 95.5], "expected": 95.5}, {"input": [-43.5, 96.0], "expected": 96.0}, {"input": [-43.5, 96.5], "expected": 96.5}, {"input": [-43.5, 97.0], "expected": 97.0}, {"input": [-43.5, 97.5], "expected": 97.5}, {"input": [-43.5, 98.0], "expected": 98.0}, {"input": [-43.5, 98.5], "expected": 98.5}, {"input": [-43.5, 99.0], "expected": 99.0}, {"input": [-43.5, 99.5], "expected": 99.5}, {"input": [-43.0, -100.0], "expected": -43.0}, {"input": [-43.0, -99.5], "expected": -43.0}, {"input": [-43.0, -99.0], "expected": -43.0}, {"input": [-43.0, -98.5], "expected": -43.0}, {"input": [-43.0, -98.0], "expected": -43.0}, {"input": [-43.0, -97.5], "expected": -43.0}, {"input": [-43.0, -97.0], "expected": -43.0}, {"input": [-43.0, -96.5], "expected": -43.0}, {"input": [-43.0, -96.0], "expected": -43.0}, {"input": [-43.0, -95.5], "expected": -43.0}, {"input": [-43.0, -95.0], "expected": -43.0}, {"input": [-43.0, -94.5], "expected": -43.0}, {"input": [-43.0, -94.0], "expected": -43.0}, {"input": [-43.0, -93.5], "expected": -43.0}, {"input": [-43.0, -93.0], "expected": -43.0}, {"input": [-43.0, -92.5], "expected": -43.0}, {"input": [-43.0, -92.0], "expected": -43.0}, {"input": [-43.0, -91.5], "expected": -43.0}, {"input": [-43.0, -91.0], "expected": -43.0}, {"input": [-43.0, -90.5], "expected": -43.0}, {"input": [-43.0, -90.0], "expected": -43.0}, {"input": [-43.0, -89.5], "expected": -43.0}, {"input": [-43.0, -89.0], "expected": -43.0}, {"input": [-43.0, -88.5], "expected": -43.0}, {"input": [-43.0, -88.0], "expected": -43.0}, {"input": [-43.0, -87.5], "expected": -43.0}, {"input": [-43.0, -87.0], "expected": -43.0}, {"input": [-43.0, -86.5], "expected": -43.0}, {"input": [-43.0, -86.0], "expected": -43.0}, {"input": [-43.0, -85.5], "expected": -43.0}, {"input": [-43.0, -85.0], "expected": -43.0}, {"input": [-43.0, -84.5], "expected": -43.0}, {"input": [-43.0, -84.0], "expected": -43.0}, {"input": [-43.0, -83.5], "expected": -43.0}, {"input": [-43.0, -83.0], "expected": -43.0}, {"input": [-43.0, -82.5], "expected": -43.0}, {"input": [-43.0, -82.0], "expected": -43.0}, {"input": [-43.0, -81.5], "expected": -43.0}, {"input": [-43.0, -81.0], "expected": -43.0}, {"input": [-43.0, -80.5], "expected": -43.0}, {"input": [-43.0, -80.0], "expected": -43.0}, {"input": [-43.0, -79.5], "expected": -43.0}, {"input": [-43.0, -79.0], "expected": -43.0}, {"input": [-43.0, -78.5], "expected": -43.0}, {"input": [-43.0, -78.0], "expected": -43.0}, {"input": [-43.0, -77.5], "expected": -43.0}, {"input": [-43.0, -77.0], "expected": -43.0}, {"input": [-43.0, -76.5], "expected": -43.0}, {"input": [-43.0, -76.0], "expected": -42.99999999999999}, {"input": [-43.0, -75.5], "expected": -42.99999999999999}, {"input": [-43.0, -75.0], "expected": -42.999999999999986}, {"input": [-43.0, -74.5], "expected": -42.99999999999998}, {"input": [-43.0, -74.0], "expected": -42.999999999999964}, {"input": [-43.0, -73.5], "expected": -42.99999999999994}, {"input": [-43.0, -73.0], "expected": -42.99999999999991}, {"input": [-43.0, -72.5], "expected": -42.999999999999844}, {"input": [-43.0, -72.0], "expected": -42.999999999999744}, {"input": [-43.0, -71.5], "expected": -42.99999999999958}, {"input": [-43.0, -71.0], "expected": -42.99999999999931}, {"input": [-43.0, -70.5], "expected": -42.99999999999886}, {"input": [-43.0, -70.0], "expected": -42.99999999999812}, {"input": [-43.0, -69.5], "expected": -42.9999999999969}, {"input": [-43.0, -69.0], "expected": -42.99999999999489}, {"input": [-43.0, -68.5], "expected": -42.99999999999158}, {"input": [-43.0, -68.0], "expected": -42.99999999998611}, {"input": [-43.0, -67.5], "expected": -42.9999999999771}, {"input": [-43.0, -67.0], "expected": -42.99999999996225}, {"input": [-43.0, -66.5], "expected": -42.99999999993776}, {"input": [-43.0, -66.0], "expected": -42.99999999989738}, {"input": [-43.0, -65.5], "expected": -42.99999999983081}, {"input": [-43.0, -65.0], "expected": -42.999999999721055}, {"input": [-43.0, -64.5], "expected": -42.999999999540094}, {"input": [-43.0, -64.0], "expected": -42.999999999241744}, {"input": [-43.0, -63.5], "expected": -42.99999999874985}, {"input": [-43.0, -63.0], "expected": -42.99999999793884}, {"input": [-43.0, -62.5], "expected": -42.99999999660173}, {"input": [-43.0, -62.0], "expected": -42.99999999439721}, {"input": [-43.0, -61.5], "expected": -42.999999990762554}, {"input": [-43.0, -61.0], "expected": -42.99999998477002}, {"input": [-43.0, -60.5], "expected": -42.99999997489001}, {"input": [-43.0, -60.0], "expected": -42.999999958600625}, {"input": [-43.0, -59.5], "expected": -42.99999993174397}, {"input": [-43.0, -59.0], "expected": -42.99999988746483}, {"input": [-43.0, -58.5], "expected": -42.99999981446088}, {"input": [-43.0, -58.0], "expected": -42.999999694097724}, {"input": [-43.0, -57.5], "expected": -42.99999949565247}, {"input": [-43.0, -57.0], "expected": -42.999999168471625}, {"input": [-43.0, -56.5], "expected": -42.999998629041855}, {"input": [-43.0, -56.0], "expected": -42.99999773967315}, {"input": [-43.0, -55.5], "expected": -42.99999627335377}, {"input": [-43.0, -55.0], "expected": -42.99999385580652}, {"input": [-43.0, -54.5], "expected": -42.99998986995771}, {"input": [-43.0, -54.0], "expected": -42.99998329843868}, {"input": [-43.0, -53.5], "expected": -42.99997246392977}, {"input": [-43.0, -53.0], "expected": -42.99995460110078}, {"input": [-43.0, -52.5], "expected": -42.99992515097137}, {"input": [-43.0, -52.0], "expected": -42.99987659781028}, {"input": [-43.0, -51.5], "expected": -42.99979655232787}, {"input": [-43.0, -51.0], "expected": -42.9996645936271}, {"input": [-43.0, -50.5], "expected": -42.99944706852464}, {"input": [-43.0, -50.0], "expected": -42.99908853354623}, {"input": [-43.0, -49.5], "expected": -42.99849768984024}, {"input": [-43.0, -49.0], "expected": -42.99752431486227}, {"input": [-43.0, -48.5], "expected": -42.99592155672943}, {"input": [-43.0, -48.0], "expected": -42.99328465151088}, {"input": [-43.0, -47.5], "expected": -42.9889522551514}, {"input": [-43.0, -47.0], "expected": -42.98185007208219}, {"input": [-43.0, -46.5], "expected": -42.97024958172738}, {"input": [-43.0, -46.0], "expected": -42.951412648426256}, {"input": [-43.0, -45.5], "expected": -42.92111026570745}, {"input": [-43.0, -45.0], "expected": -42.87307198895703}, {"input": [-43.0, -44.5], "expected": -42.79858672201725}, {"input": [-43.0, -44.0], "expected": -42.68673831248178}, {"input": [-43.0, -43.5], "expected": -42.52592301581989}, {"input": [-43.0, -43.0], "expected": -42.30685281944005}, {"input": [-43.0, -42.5], "expected": -42.02592301581989}, {"input": [-43.0, -42.0], "expected": -41.68673831248178}, {"input": [-43.0, -41.5], "expected": -41.29858672201725}, {"input": [-43.0, -41.0], "expected": -40.87307198895703}, {"input": [-43.0, -40.5], "expected": -40.42111026570745}, {"input": [-43.0, -40.0], "expected": -39.951412648426256}, {"input": [-43.0, -39.5], "expected": -39.47024958172738}, {"input": [-43.0, -39.0], "expected": -38.98185007208219}, {"input": [-43.0, -38.5], "expected": -38.4889522551514}, {"input": [-43.0, -38.0], "expected": -37.99328465151088}, {"input": [-43.0, -37.5], "expected": -37.49592155672943}, {"input": [-43.0, -37.0], "expected": -36.99752431486227}, {"input": [-43.0, -36.5], "expected": -36.49849768984024}, {"input": [-43.0, -36.0], "expected": -35.99908853354623}, {"input": [-43.0, -35.5], "expected": -35.49944706852464}, {"input": [-43.0, -35.0], "expected": -34.9996645936271}, {"input": [-43.0, -34.5], "expected": -34.49979655232787}, {"input": [-43.0, -34.0], "expected": -33.99987659781028}, {"input": [-43.0, -33.5], "expected": -33.49992515097137}, {"input": [-43.0, -33.0], "expected": -32.99995460110078}, {"input": [-43.0, -32.5], "expected": -32.49997246392977}, {"input": [-43.0, -32.0], "expected": -31.999983298438682}, {"input": [-43.0, -31.5], "expected": -31.49998986995771}, {"input": [-43.0, -31.0], "expected": -30.999993855806522}, {"input": [-43.0, -30.5], "expected": -30.499996273353773}, {"input": [-43.0, -30.0], "expected": -29.999997739673148}, {"input": [-43.0, -29.5], "expected": -29.499998629041855}, {"input": [-43.0, -29.0], "expected": -28.999999168471625}, {"input": [-43.0, -28.5], "expected": -28.499999495652464}, {"input": [-43.0, -28.0], "expected": -27.999999694097728}, {"input": [-43.0, -27.5], "expected": -27.49999981446088}, {"input": [-43.0, -27.0], "expected": -26.99999988746483}, {"input": [-43.0, -26.5], "expected": -26.499999931743968}, {"input": [-43.0, -26.0], "expected": -25.999999958600625}, {"input": [-43.0, -25.5], "expected": -25.49999997489001}, {"input": [-43.0, -25.0], "expected": -24.99999998477002}, {"input": [-43.0, -24.5], "expected": -24.49999999076255}, {"input": [-43.0, -24.0], "expected": -23.999999994397204}, {"input": [-43.0, -23.5], "expected": -23.499999996601733}, {"input": [-43.0, -23.0], "expected": -22.999999997938847}, {"input": [-43.0, -22.5], "expected": -22.499999998749846}, {"input": [-43.0, -22.0], "expected": -21.999999999241744}, {"input": [-43.0, -21.5], "expected": -21.499999999540094}, {"input": [-43.0, -21.0], "expected": -20.99999999972105}, {"input": [-43.0, -20.5], "expected": -20.49999999983081}, {"input": [-43.0, -20.0], "expected": -19.99999999989738}, {"input": [-43.0, -19.5], "expected": -19.49999999993776}, {"input": [-43.0, -19.0], "expected": -18.99999999996225}, {"input": [-43.0, -18.5], "expected": -18.499999999977103}, {"input": [-43.0, -18.0], "expected": -17.999999999986112}, {"input": [-43.0, -17.5], "expected": -17.499999999991577}, {"input": [-43.0, -17.0], "expected": -16.99999999999489}, {"input": [-43.0, -16.5], "expected": -16.499999999996902}, {"input": [-43.0, -16.0], "expected": -15.99999999999812}, {"input": [-43.0, -15.5], "expected": -15.49999999999886}, {"input": [-43.0, -15.0], "expected": -14.999999999999309}, {"input": [-43.0, -14.5], "expected": -14.49999999999958}, {"input": [-43.0, -14.0], "expected": -13.999999999999746}, {"input": [-43.0, -13.5], "expected": -13.499999999999845}, {"input": [-43.0, -13.0], "expected": -12.999999999999906}, {"input": [-43.0, -12.5], "expected": -12.499999999999943}, {"input": [-43.0, -12.0], "expected": -11.999999999999966}, {"input": [-43.0, -11.5], "expected": -11.499999999999979}, {"input": [-43.0, -11.0], "expected": -10.999999999999988}, {"input": [-43.0, -10.5], "expected": -10.499999999999993}, {"input": [-43.0, -10.0], "expected": -9.999999999999995}, {"input": [-43.0, -9.5], "expected": -9.499999999999996}, {"input": [-43.0, -9.0], "expected": -8.999999999999998}, {"input": [-43.0, -8.5], "expected": -8.499999999999998}, {"input": [-43.0, -8.0], "expected": -7.999999999999999}, {"input": [-43.0, -7.5], "expected": -7.5}, {"input": [-43.0, -7.0], "expected": -7.0}, {"input": [-43.0, -6.5], "expected": -6.5}, {"input": [-43.0, -6.0], "expected": -6.0}, {"input": [-43.0, -5.5], "expected": -5.5}, {"input": [-43.0, -5.0], "expected": -5.0}, {"input": [-43.0, -4.5], "expected": -4.5}, {"input": [-43.0, -4.0], "expected": -4.0}, {"input": [-43.0, -3.5], "expected": -3.5}, {"input": [-43.0, -3.0], "expected": -3.0}, {"input": [-43.0, -2.5], "expected": -2.5}, {"input": [-43.0, -2.0], "expected": -2.0}, {"input": [-43.0, -1.5], "expected": -1.5}, {"input": [-43.0, -1.0], "expected": -1.0}, {"input": [-43.0, -0.5], "expected": -0.5}, {"input": [-43.0, 0.0], "expected": 2.1151310375910805e-19}, {"input": [-43.0, 0.5], "expected": 0.5}, {"input": [-43.0, 1.0], "expected": 1.0}, {"input": [-43.0, 1.5], "expected": 1.5}, {"input": [-43.0, 2.0], "expected": 2.0}, {"input": [-43.0, 2.5], "expected": 2.5}, {"input": [-43.0, 3.0], "expected": 3.0}, {"input": [-43.0, 3.5], "expected": 3.5}, {"input": [-43.0, 4.0], "expected": 4.0}, {"input": [-43.0, 4.5], "expected": 4.5}, {"input": [-43.0, 5.0], "expected": 5.0}, {"input": [-43.0, 5.5], "expected": 5.5}, {"input": [-43.0, 6.0], "expected": 6.0}, {"input": [-43.0, 6.5], "expected": 6.5}, {"input": [-43.0, 7.0], "expected": 7.0}, {"input": [-43.0, 7.5], "expected": 7.5}, {"input": [-43.0, 8.0], "expected": 8.0}, {"input": [-43.0, 8.5], "expected": 8.5}, {"input": [-43.0, 9.0], "expected": 9.0}, {"input": [-43.0, 9.5], "expected": 9.5}, {"input": [-43.0, 10.0], "expected": 10.0}, {"input": [-43.0, 10.5], "expected": 10.5}, {"input": [-43.0, 11.0], "expected": 11.0}, {"input": [-43.0, 11.5], "expected": 11.5}, {"input": [-43.0, 12.0], "expected": 12.0}, {"input": [-43.0, 12.5], "expected": 12.5}, {"input": [-43.0, 13.0], "expected": 13.0}, {"input": [-43.0, 13.5], "expected": 13.5}, {"input": [-43.0, 14.0], "expected": 14.0}, {"input": [-43.0, 14.5], "expected": 14.5}, {"input": [-43.0, 15.0], "expected": 15.0}, {"input": [-43.0, 15.5], "expected": 15.5}, {"input": [-43.0, 16.0], "expected": 16.0}, {"input": [-43.0, 16.5], "expected": 16.5}, {"input": [-43.0, 17.0], "expected": 17.0}, {"input": [-43.0, 17.5], "expected": 17.5}, {"input": [-43.0, 18.0], "expected": 18.0}, {"input": [-43.0, 18.5], "expected": 18.5}, {"input": [-43.0, 19.0], "expected": 19.0}, {"input": [-43.0, 19.5], "expected": 19.5}, {"input": [-43.0, 20.0], "expected": 20.0}, {"input": [-43.0, 20.5], "expected": 20.5}, {"input": [-43.0, 21.0], "expected": 21.0}, {"input": [-43.0, 21.5], "expected": 21.5}, {"input": [-43.0, 22.0], "expected": 22.0}, {"input": [-43.0, 22.5], "expected": 22.5}, {"input": [-43.0, 23.0], "expected": 23.0}, {"input": [-43.0, 23.5], "expected": 23.5}, {"input": [-43.0, 24.0], "expected": 24.0}, {"input": [-43.0, 24.5], "expected": 24.5}, {"input": [-43.0, 25.0], "expected": 25.0}, {"input": [-43.0, 25.5], "expected": 25.5}, {"input": [-43.0, 26.0], "expected": 26.0}, {"input": [-43.0, 26.5], "expected": 26.5}, {"input": [-43.0, 27.0], "expected": 27.0}, {"input": [-43.0, 27.5], "expected": 27.5}, {"input": [-43.0, 28.0], "expected": 28.0}, {"input": [-43.0, 28.5], "expected": 28.5}, {"input": [-43.0, 29.0], "expected": 29.0}, {"input": [-43.0, 29.5], "expected": 29.5}, {"input": [-43.0, 30.0], "expected": 30.0}, {"input": [-43.0, 30.5], "expected": 30.5}, {"input": [-43.0, 31.0], "expected": 31.0}, {"input": [-43.0, 31.5], "expected": 31.5}, {"input": [-43.0, 32.0], "expected": 32.0}, {"input": [-43.0, 32.5], "expected": 32.5}, {"input": [-43.0, 33.0], "expected": 33.0}, {"input": [-43.0, 33.5], "expected": 33.5}, {"input": [-43.0, 34.0], "expected": 34.0}, {"input": [-43.0, 34.5], "expected": 34.5}, {"input": [-43.0, 35.0], "expected": 35.0}, {"input": [-43.0, 35.5], "expected": 35.5}, {"input": [-43.0, 36.0], "expected": 36.0}, {"input": [-43.0, 36.5], "expected": 36.5}, {"input": [-43.0, 37.0], "expected": 37.0}, {"input": [-43.0, 37.5], "expected": 37.5}, {"input": [-43.0, 38.0], "expected": 38.0}, {"input": [-43.0, 38.5], "expected": 38.5}, {"input": [-43.0, 39.0], "expected": 39.0}, {"input": [-43.0, 39.5], "expected": 39.5}, {"input": [-43.0, 40.0], "expected": 40.0}, {"input": [-43.0, 40.5], "expected": 40.5}, {"input": [-43.0, 41.0], "expected": 41.0}, {"input": [-43.0, 41.5], "expected": 41.5}, {"input": [-43.0, 42.0], "expected": 42.0}, {"input": [-43.0, 42.5], "expected": 42.5}, {"input": [-43.0, 43.0], "expected": 43.0}, {"input": [-43.0, 43.5], "expected": 43.5}, {"input": [-43.0, 44.0], "expected": 44.0}, {"input": [-43.0, 44.5], "expected": 44.5}, {"input": [-43.0, 45.0], "expected": 45.0}, {"input": [-43.0, 45.5], "expected": 45.5}, {"input": [-43.0, 46.0], "expected": 46.0}, {"input": [-43.0, 46.5], "expected": 46.5}, {"input": [-43.0, 47.0], "expected": 47.0}, {"input": [-43.0, 47.5], "expected": 47.5}, {"input": [-43.0, 48.0], "expected": 48.0}, {"input": [-43.0, 48.5], "expected": 48.5}, {"input": [-43.0, 49.0], "expected": 49.0}, {"input": [-43.0, 49.5], "expected": 49.5}, {"input": [-43.0, 50.0], "expected": 50.0}, {"input": [-43.0, 50.5], "expected": 50.5}, {"input": [-43.0, 51.0], "expected": 51.0}, {"input": [-43.0, 51.5], "expected": 51.5}, {"input": [-43.0, 52.0], "expected": 52.0}, {"input": [-43.0, 52.5], "expected": 52.5}, {"input": [-43.0, 53.0], "expected": 53.0}, {"input": [-43.0, 53.5], "expected": 53.5}, {"input": [-43.0, 54.0], "expected": 54.0}, {"input": [-43.0, 54.5], "expected": 54.5}, {"input": [-43.0, 55.0], "expected": 55.0}, {"input": [-43.0, 55.5], "expected": 55.5}, {"input": [-43.0, 56.0], "expected": 56.0}, {"input": [-43.0, 56.5], "expected": 56.5}, {"input": [-43.0, 57.0], "expected": 57.0}, {"input": [-43.0, 57.5], "expected": 57.5}, {"input": [-43.0, 58.0], "expected": 58.0}, {"input": [-43.0, 58.5], "expected": 58.5}, {"input": [-43.0, 59.0], "expected": 59.0}, {"input": [-43.0, 59.5], "expected": 59.5}, {"input": [-43.0, 60.0], "expected": 60.0}, {"input": [-43.0, 60.5], "expected": 60.5}, {"input": [-43.0, 61.0], "expected": 61.0}, {"input": [-43.0, 61.5], "expected": 61.5}, {"input": [-43.0, 62.0], "expected": 62.0}, {"input": [-43.0, 62.5], "expected": 62.5}, {"input": [-43.0, 63.0], "expected": 63.0}, {"input": [-43.0, 63.5], "expected": 63.5}, {"input": [-43.0, 64.0], "expected": 64.0}, {"input": [-43.0, 64.5], "expected": 64.5}, {"input": [-43.0, 65.0], "expected": 65.0}, {"input": [-43.0, 65.5], "expected": 65.5}, {"input": [-43.0, 66.0], "expected": 66.0}, {"input": [-43.0, 66.5], "expected": 66.5}, {"input": [-43.0, 67.0], "expected": 67.0}, {"input": [-43.0, 67.5], "expected": 67.5}, {"input": [-43.0, 68.0], "expected": 68.0}, {"input": [-43.0, 68.5], "expected": 68.5}, {"input": [-43.0, 69.0], "expected": 69.0}, {"input": [-43.0, 69.5], "expected": 69.5}, {"input": [-43.0, 70.0], "expected": 70.0}, {"input": [-43.0, 70.5], "expected": 70.5}, {"input": [-43.0, 71.0], "expected": 71.0}, {"input": [-43.0, 71.5], "expected": 71.5}, {"input": [-43.0, 72.0], "expected": 72.0}, {"input": [-43.0, 72.5], "expected": 72.5}, {"input": [-43.0, 73.0], "expected": 73.0}, {"input": [-43.0, 73.5], "expected": 73.5}, {"input": [-43.0, 74.0], "expected": 74.0}, {"input": [-43.0, 74.5], "expected": 74.5}, {"input": [-43.0, 75.0], "expected": 75.0}, {"input": [-43.0, 75.5], "expected": 75.5}, {"input": [-43.0, 76.0], "expected": 76.0}, {"input": [-43.0, 76.5], "expected": 76.5}, {"input": [-43.0, 77.0], "expected": 77.0}, {"input": [-43.0, 77.5], "expected": 77.5}, {"input": [-43.0, 78.0], "expected": 78.0}, {"input": [-43.0, 78.5], "expected": 78.5}, {"input": [-43.0, 79.0], "expected": 79.0}, {"input": [-43.0, 79.5], "expected": 79.5}, {"input": [-43.0, 80.0], "expected": 80.0}, {"input": [-43.0, 80.5], "expected": 80.5}, {"input": [-43.0, 81.0], "expected": 81.0}, {"input": [-43.0, 81.5], "expected": 81.5}, {"input": [-43.0, 82.0], "expected": 82.0}, {"input": [-43.0, 82.5], "expected": 82.5}, {"input": [-43.0, 83.0], "expected": 83.0}, {"input": [-43.0, 83.5], "expected": 83.5}, {"input": [-43.0, 84.0], "expected": 84.0}, {"input": [-43.0, 84.5], "expected": 84.5}, {"input": [-43.0, 85.0], "expected": 85.0}, {"input": [-43.0, 85.5], "expected": 85.5}, {"input": [-43.0, 86.0], "expected": 86.0}, {"input": [-43.0, 86.5], "expected": 86.5}, {"input": [-43.0, 87.0], "expected": 87.0}, {"input": [-43.0, 87.5], "expected": 87.5}, {"input": [-43.0, 88.0], "expected": 88.0}, {"input": [-43.0, 88.5], "expected": 88.5}, {"input": [-43.0, 89.0], "expected": 89.0}, {"input": [-43.0, 89.5], "expected": 89.5}, {"input": [-43.0, 90.0], "expected": 90.0}, {"input": [-43.0, 90.5], "expected": 90.5}, {"input": [-43.0, 91.0], "expected": 91.0}, {"input": [-43.0, 91.5], "expected": 91.5}, {"input": [-43.0, 92.0], "expected": 92.0}, {"input": [-43.0, 92.5], "expected": 92.5}, {"input": [-43.0, 93.0], "expected": 93.0}, {"input": [-43.0, 93.5], "expected": 93.5}, {"input": [-43.0, 94.0], "expected": 94.0}, {"input": [-43.0, 94.5], "expected": 94.5}, {"input": [-43.0, 95.0], "expected": 95.0}, {"input": [-43.0, 95.5], "expected": 95.5}, {"input": [-43.0, 96.0], "expected": 96.0}, {"input": [-43.0, 96.5], "expected": 96.5}, {"input": [-43.0, 97.0], "expected": 97.0}, {"input": [-43.0, 97.5], "expected": 97.5}, {"input": [-43.0, 98.0], "expected": 98.0}, {"input": [-43.0, 98.5], "expected": 98.5}, {"input": [-43.0, 99.0], "expected": 99.0}, {"input": [-43.0, 99.5], "expected": 99.5}, {"input": [-42.5, -100.0], "expected": -42.5}, {"input": [-42.5, -99.5], "expected": -42.5}, {"input": [-42.5, -99.0], "expected": -42.5}, {"input": [-42.5, -98.5], "expected": -42.5}, {"input": [-42.5, -98.0], "expected": -42.5}, {"input": [-42.5, -97.5], "expected": -42.5}, {"input": [-42.5, -97.0], "expected": -42.5}, {"input": [-42.5, -96.5], "expected": -42.5}, {"input": [-42.5, -96.0], "expected": -42.5}, {"input": [-42.5, -95.5], "expected": -42.5}, {"input": [-42.5, -95.0], "expected": -42.5}, {"input": [-42.5, -94.5], "expected": -42.5}, {"input": [-42.5, -94.0], "expected": -42.5}, {"input": [-42.5, -93.5], "expected": -42.5}, {"input": [-42.5, -93.0], "expected": -42.5}, {"input": [-42.5, -92.5], "expected": -42.5}, {"input": [-42.5, -92.0], "expected": -42.5}, {"input": [-42.5, -91.5], "expected": -42.5}, {"input": [-42.5, -91.0], "expected": -42.5}, {"input": [-42.5, -90.5], "expected": -42.5}, {"input": [-42.5, -90.0], "expected": -42.5}, {"input": [-42.5, -89.5], "expected": -42.5}, {"input": [-42.5, -89.0], "expected": -42.5}, {"input": [-42.5, -88.5], "expected": -42.5}, {"input": [-42.5, -88.0], "expected": -42.5}, {"input": [-42.5, -87.5], "expected": -42.5}, {"input": [-42.5, -87.0], "expected": -42.5}, {"input": [-42.5, -86.5], "expected": -42.5}, {"input": [-42.5, -86.0], "expected": -42.5}, {"input": [-42.5, -85.5], "expected": -42.5}, {"input": [-42.5, -85.0], "expected": -42.5}, {"input": [-42.5, -84.5], "expected": -42.5}, {"input": [-42.5, -84.0], "expected": -42.5}, {"input": [-42.5, -83.5], "expected": -42.5}, {"input": [-42.5, -83.0], "expected": -42.5}, {"input": [-42.5, -82.5], "expected": -42.5}, {"input": [-42.5, -82.0], "expected": -42.5}, {"input": [-42.5, -81.5], "expected": -42.5}, {"input": [-42.5, -81.0], "expected": -42.5}, {"input": [-42.5, -80.5], "expected": -42.5}, {"input": [-42.5, -80.0], "expected": -42.5}, {"input": [-42.5, -79.5], "expected": -42.5}, {"input": [-42.5, -79.0], "expected": -42.5}, {"input": [-42.5, -78.5], "expected": -42.5}, {"input": [-42.5, -78.0], "expected": -42.5}, {"input": [-42.5, -77.5], "expected": -42.5}, {"input": [-42.5, -77.0], "expected": -42.5}, {"input": [-42.5, -76.5], "expected": -42.5}, {"input": [-42.5, -76.0], "expected": -42.5}, {"input": [-42.5, -75.5], "expected": -42.49999999999999}, {"input": [-42.5, -75.0], "expected": -42.49999999999999}, {"input": [-42.5, -74.5], "expected": -42.499999999999986}, {"input": [-42.5, -74.0], "expected": -42.49999999999998}, {"input": [-42.5, -73.5], "expected": -42.499999999999964}, {"input": [-42.5, -73.0], "expected": -42.49999999999994}, {"input": [-42.5, -72.5], "expected": -42.49999999999991}, {"input": [-42.5, -72.0], "expected": -42.499999999999844}, {"input": [-42.5, -71.5], "expected": -42.499999999999744}, {"input": [-42.5, -71.0], "expected": -42.49999999999958}, {"input": [-42.5, -70.5], "expected": -42.49999999999931}, {"input": [-42.5, -70.0], "expected": -42.49999999999886}, {"input": [-42.5, -69.5], "expected": -42.49999999999812}, {"input": [-42.5, -69.0], "expected": -42.4999999999969}, {"input": [-42.5, -68.5], "expected": -42.49999999999489}, {"input": [-42.5, -68.0], "expected": -42.49999999999158}, {"input": [-42.5, -67.5], "expected": -42.49999999998611}, {"input": [-42.5, -67.0], "expected": -42.4999999999771}, {"input": [-42.5, -66.5], "expected": -42.49999999996225}, {"input": [-42.5, -66.0], "expected": -42.49999999993776}, {"input": [-42.5, -65.5], "expected": -42.49999999989738}, {"input": [-42.5, -65.0], "expected": -42.49999999983081}, {"input": [-42.5, -64.5], "expected": -42.499999999721055}, {"input": [-42.5, -64.0], "expected": -42.499999999540094}, {"input": [-42.5, -63.5], "expected": -42.499999999241744}, {"input": [-42.5, -63.0], "expected": -42.49999999874985}, {"input": [-42.5, -62.5], "expected": -42.49999999793884}, {"input": [-42.5, -62.0], "expected": -42.49999999660173}, {"input": [-42.5, -61.5], "expected": -42.49999999439721}, {"input": [-42.5, -61.0], "expected": -42.499999990762554}, {"input": [-42.5, -60.5], "expected": -42.49999998477002}, {"input": [-42.5, -60.0], "expected": -42.49999997489001}, {"input": [-42.5, -59.5], "expected": -42.499999958600625}, {"input": [-42.5, -59.0], "expected": -42.49999993174397}, {"input": [-42.5, -58.5], "expected": -42.49999988746483}, {"input": [-42.5, -58.0], "expected": -42.49999981446088}, {"input": [-42.5, -57.5], "expected": -42.499999694097724}, {"input": [-42.5, -57.0], "expected": -42.49999949565247}, {"input": [-42.5, -56.5], "expected": -42.499999168471625}, {"input": [-42.5, -56.0], "expected": -42.499998629041855}, {"input": [-42.5, -55.5], "expected": -42.49999773967315}, {"input": [-42.5, -55.0], "expected": -42.49999627335377}, {"input": [-42.5, -54.5], "expected": -42.49999385580652}, {"input": [-42.5, -54.0], "expected": -42.49998986995771}, {"input": [-42.5, -53.5], "expected": -42.49998329843868}, {"input": [-42.5, -53.0], "expected": -42.49997246392977}, {"input": [-42.5, -52.5], "expected": -42.49995460110078}, {"input": [-42.5, -52.0], "expected": -42.49992515097137}, {"input": [-42.5, -51.5], "expected": -42.49987659781028}, {"input": [-42.5, -51.0], "expected": -42.49979655232787}, {"input": [-42.5, -50.5], "expected": -42.4996645936271}, {"input": [-42.5, -50.0], "expected": -42.49944706852464}, {"input": [-42.5, -49.5], "expected": -42.49908853354623}, {"input": [-42.5, -49.0], "expected": -42.49849768984024}, {"input": [-42.5, -48.5], "expected": -42.49752431486227}, {"input": [-42.5, -48.0], "expected": -42.49592155672943}, {"input": [-42.5, -47.5], "expected": -42.49328465151088}, {"input": [-42.5, -47.0], "expected": -42.4889522551514}, {"input": [-42.5, -46.5], "expected": -42.48185007208219}, {"input": [-42.5, -46.0], "expected": -42.47024958172738}, {"input": [-42.5, -45.5], "expected": -42.451412648426256}, {"input": [-42.5, -45.0], "expected": -42.42111026570745}, {"input": [-42.5, -44.5], "expected": -42.37307198895703}, {"input": [-42.5, -44.0], "expected": -42.29858672201725}, {"input": [-42.5, -43.5], "expected": -42.18673831248178}, {"input": [-42.5, -43.0], "expected": -42.02592301581989}, {"input": [-42.5, -42.5], "expected": -41.80685281944005}, {"input": [-42.5, -42.0], "expected": -41.52592301581989}, {"input": [-42.5, -41.5], "expected": -41.18673831248178}, {"input": [-42.5, -41.0], "expected": -40.79858672201725}, {"input": [-42.5, -40.5], "expected": -40.37307198895703}, {"input": [-42.5, -40.0], "expected": -39.92111026570745}, {"input": [-42.5, -39.5], "expected": -39.451412648426256}, {"input": [-42.5, -39.0], "expected": -38.97024958172738}, {"input": [-42.5, -38.5], "expected": -38.48185007208219}, {"input": [-42.5, -38.0], "expected": -37.9889522551514}, {"input": [-42.5, -37.5], "expected": -37.49328465151088}, {"input": [-42.5, -37.0], "expected": -36.99592155672943}, {"input": [-42.5, -36.5], "expected": -36.49752431486227}, {"input": [-42.5, -36.0], "expected": -35.99849768984024}, {"input": [-42.5, -35.5], "expected": -35.49908853354623}, {"input": [-42.5, -35.0], "expected": -34.99944706852464}, {"input": [-42.5, -34.5], "expected": -34.4996645936271}, {"input": [-42.5, -34.0], "expected": -33.99979655232787}, {"input": [-42.5, -33.5], "expected": -33.49987659781028}, {"input": [-42.5, -33.0], "expected": -32.99992515097137}, {"input": [-42.5, -32.5], "expected": -32.49995460110078}, {"input": [-42.5, -32.0], "expected": -31.999972463929772}, {"input": [-42.5, -31.5], "expected": -31.499983298438682}, {"input": [-42.5, -31.0], "expected": -30.99998986995771}, {"input": [-42.5, -30.5], "expected": -30.499993855806522}, {"input": [-42.5, -30.0], "expected": -29.999996273353773}, {"input": [-42.5, -29.5], "expected": -29.499997739673148}, {"input": [-42.5, -29.0], "expected": -28.999998629041855}, {"input": [-42.5, -28.5], "expected": -28.499999168471625}, {"input": [-42.5, -28.0], "expected": -27.999999495652464}, {"input": [-42.5, -27.5], "expected": -27.499999694097728}, {"input": [-42.5, -27.0], "expected": -26.99999981446088}, {"input": [-42.5, -26.5], "expected": -26.49999988746483}, {"input": [-42.5, -26.0], "expected": -25.999999931743968}, {"input": [-42.5, -25.5], "expected": -25.499999958600625}, {"input": [-42.5, -25.0], "expected": -24.99999997489001}, {"input": [-42.5, -24.5], "expected": -24.49999998477002}, {"input": [-42.5, -24.0], "expected": -23.99999999076255}, {"input": [-42.5, -23.5], "expected": -23.499999994397204}, {"input": [-42.5, -23.0], "expected": -22.999999996601733}, {"input": [-42.5, -22.5], "expected": -22.499999997938847}, {"input": [-42.5, -22.0], "expected": -21.999999998749846}, {"input": [-42.5, -21.5], "expected": -21.499999999241744}, {"input": [-42.5, -21.0], "expected": -20.999999999540094}, {"input": [-42.5, -20.5], "expected": -20.49999999972105}, {"input": [-42.5, -20.0], "expected": -19.99999999983081}, {"input": [-42.5, -19.5], "expected": -19.49999999989738}, {"input": [-42.5, -19.0], "expected": -18.99999999993776}, {"input": [-42.5, -18.5], "expected": -18.49999999996225}, {"input": [-42.5, -18.0], "expected": -17.999999999977103}, {"input": [-42.5, -17.5], "expected": -17.499999999986112}, {"input": [-42.5, -17.0], "expected": -16.999999999991577}, {"input": [-42.5, -16.5], "expected": -16.49999999999489}, {"input": [-42.5, -16.0], "expected": -15.999999999996902}, {"input": [-42.5, -15.5], "expected": -15.49999999999812}, {"input": [-42.5, -15.0], "expected": -14.99999999999886}, {"input": [-42.5, -14.5], "expected": -14.499999999999309}, {"input": [-42.5, -14.0], "expected": -13.99999999999958}, {"input": [-42.5, -13.5], "expected": -13.499999999999746}, {"input": [-42.5, -13.0], "expected": -12.999999999999845}, {"input": [-42.5, -12.5], "expected": -12.499999999999906}, {"input": [-42.5, -12.0], "expected": -11.999999999999943}, {"input": [-42.5, -11.5], "expected": -11.499999999999966}, {"input": [-42.5, -11.0], "expected": -10.999999999999979}, {"input": [-42.5, -10.5], "expected": -10.499999999999988}, {"input": [-42.5, -10.0], "expected": -9.999999999999993}, {"input": [-42.5, -9.5], "expected": -9.499999999999995}, {"input": [-42.5, -9.0], "expected": -8.999999999999996}, {"input": [-42.5, -8.5], "expected": -8.499999999999998}, {"input": [-42.5, -8.0], "expected": -7.999999999999999}, {"input": [-42.5, -7.5], "expected": -7.499999999999999}, {"input": [-42.5, -7.0], "expected": -7.0}, {"input": [-42.5, -6.5], "expected": -6.5}, {"input": [-42.5, -6.0], "expected": -6.0}, {"input": [-42.5, -5.5], "expected": -5.5}, {"input": [-42.5, -5.0], "expected": -5.0}, {"input": [-42.5, -4.5], "expected": -4.5}, {"input": [-42.5, -4.0], "expected": -4.0}, {"input": [-42.5, -3.5], "expected": -3.5}, {"input": [-42.5, -3.0], "expected": -3.0}, {"input": [-42.5, -2.5], "expected": -2.5}, {"input": [-42.5, -2.0], "expected": -2.0}, {"input": [-42.5, -1.5], "expected": -1.5}, {"input": [-42.5, -1.0], "expected": -1.0}, {"input": [-42.5, -0.5], "expected": -0.5}, {"input": [-42.5, 0.0], "expected": 3.4872615319944465e-19}, {"input": [-42.5, 0.5], "expected": 0.5}, {"input": [-42.5, 1.0], "expected": 1.0}, {"input": [-42.5, 1.5], "expected": 1.5}, {"input": [-42.5, 2.0], "expected": 2.0}, {"input": [-42.5, 2.5], "expected": 2.5}, {"input": [-42.5, 3.0], "expected": 3.0}, {"input": [-42.5, 3.5], "expected": 3.5}, {"input": [-42.5, 4.0], "expected": 4.0}, {"input": [-42.5, 4.5], "expected": 4.5}, {"input": [-42.5, 5.0], "expected": 5.0}, {"input": [-42.5, 5.5], "expected": 5.5}, {"input": [-42.5, 6.0], "expected": 6.0}, {"input": [-42.5, 6.5], "expected": 6.5}, {"input": [-42.5, 7.0], "expected": 7.0}, {"input": [-42.5, 7.5], "expected": 7.5}, {"input": [-42.5, 8.0], "expected": 8.0}, {"input": [-42.5, 8.5], "expected": 8.5}, {"input": [-42.5, 9.0], "expected": 9.0}, {"input": [-42.5, 9.5], "expected": 9.5}, {"input": [-42.5, 10.0], "expected": 10.0}, {"input": [-42.5, 10.5], "expected": 10.5}, {"input": [-42.5, 11.0], "expected": 11.0}, {"input": [-42.5, 11.5], "expected": 11.5}, {"input": [-42.5, 12.0], "expected": 12.0}, {"input": [-42.5, 12.5], "expected": 12.5}, {"input": [-42.5, 13.0], "expected": 13.0}, {"input": [-42.5, 13.5], "expected": 13.5}, {"input": [-42.5, 14.0], "expected": 14.0}, {"input": [-42.5, 14.5], "expected": 14.5}, {"input": [-42.5, 15.0], "expected": 15.0}, {"input": [-42.5, 15.5], "expected": 15.5}, {"input": [-42.5, 16.0], "expected": 16.0}, {"input": [-42.5, 16.5], "expected": 16.5}, {"input": [-42.5, 17.0], "expected": 17.0}, {"input": [-42.5, 17.5], "expected": 17.5}, {"input": [-42.5, 18.0], "expected": 18.0}, {"input": [-42.5, 18.5], "expected": 18.5}, {"input": [-42.5, 19.0], "expected": 19.0}, {"input": [-42.5, 19.5], "expected": 19.5}, {"input": [-42.5, 20.0], "expected": 20.0}, {"input": [-42.5, 20.5], "expected": 20.5}, {"input": [-42.5, 21.0], "expected": 21.0}, {"input": [-42.5, 21.5], "expected": 21.5}, {"input": [-42.5, 22.0], "expected": 22.0}, {"input": [-42.5, 22.5], "expected": 22.5}, {"input": [-42.5, 23.0], "expected": 23.0}, {"input": [-42.5, 23.5], "expected": 23.5}, {"input": [-42.5, 24.0], "expected": 24.0}, {"input": [-42.5, 24.5], "expected": 24.5}, {"input": [-42.5, 25.0], "expected": 25.0}, {"input": [-42.5, 25.5], "expected": 25.5}, {"input": [-42.5, 26.0], "expected": 26.0}, {"input": [-42.5, 26.5], "expected": 26.5}, {"input": [-42.5, 27.0], "expected": 27.0}, {"input": [-42.5, 27.5], "expected": 27.5}, {"input": [-42.5, 28.0], "expected": 28.0}, {"input": [-42.5, 28.5], "expected": 28.5}, {"input": [-42.5, 29.0], "expected": 29.0}, {"input": [-42.5, 29.5], "expected": 29.5}, {"input": [-42.5, 30.0], "expected": 30.0}, {"input": [-42.5, 30.5], "expected": 30.5}, {"input": [-42.5, 31.0], "expected": 31.0}, {"input": [-42.5, 31.5], "expected": 31.5}, {"input": [-42.5, 32.0], "expected": 32.0}, {"input": [-42.5, 32.5], "expected": 32.5}, {"input": [-42.5, 33.0], "expected": 33.0}, {"input": [-42.5, 33.5], "expected": 33.5}, {"input": [-42.5, 34.0], "expected": 34.0}, {"input": [-42.5, 34.5], "expected": 34.5}, {"input": [-42.5, 35.0], "expected": 35.0}, {"input": [-42.5, 35.5], "expected": 35.5}, {"input": [-42.5, 36.0], "expected": 36.0}, {"input": [-42.5, 36.5], "expected": 36.5}, {"input": [-42.5, 37.0], "expected": 37.0}, {"input": [-42.5, 37.5], "expected": 37.5}, {"input": [-42.5, 38.0], "expected": 38.0}, {"input": [-42.5, 38.5], "expected": 38.5}, {"input": [-42.5, 39.0], "expected": 39.0}, {"input": [-42.5, 39.5], "expected": 39.5}, {"input": [-42.5, 40.0], "expected": 40.0}, {"input": [-42.5, 40.5], "expected": 40.5}, {"input": [-42.5, 41.0], "expected": 41.0}, {"input": [-42.5, 41.5], "expected": 41.5}, {"input": [-42.5, 42.0], "expected": 42.0}, {"input": [-42.5, 42.5], "expected": 42.5}, {"input": [-42.5, 43.0], "expected": 43.0}, {"input": [-42.5, 43.5], "expected": 43.5}, {"input": [-42.5, 44.0], "expected": 44.0}, {"input": [-42.5, 44.5], "expected": 44.5}, {"input": [-42.5, 45.0], "expected": 45.0}, {"input": [-42.5, 45.5], "expected": 45.5}, {"input": [-42.5, 46.0], "expected": 46.0}, {"input": [-42.5, 46.5], "expected": 46.5}, {"input": [-42.5, 47.0], "expected": 47.0}, {"input": [-42.5, 47.5], "expected": 47.5}, {"input": [-42.5, 48.0], "expected": 48.0}, {"input": [-42.5, 48.5], "expected": 48.5}, {"input": [-42.5, 49.0], "expected": 49.0}, {"input": [-42.5, 49.5], "expected": 49.5}, {"input": [-42.5, 50.0], "expected": 50.0}, {"input": [-42.5, 50.5], "expected": 50.5}, {"input": [-42.5, 51.0], "expected": 51.0}, {"input": [-42.5, 51.5], "expected": 51.5}, {"input": [-42.5, 52.0], "expected": 52.0}, {"input": [-42.5, 52.5], "expected": 52.5}, {"input": [-42.5, 53.0], "expected": 53.0}, {"input": [-42.5, 53.5], "expected": 53.5}, {"input": [-42.5, 54.0], "expected": 54.0}, {"input": [-42.5, 54.5], "expected": 54.5}, {"input": [-42.5, 55.0], "expected": 55.0}, {"input": [-42.5, 55.5], "expected": 55.5}, {"input": [-42.5, 56.0], "expected": 56.0}, {"input": [-42.5, 56.5], "expected": 56.5}, {"input": [-42.5, 57.0], "expected": 57.0}, {"input": [-42.5, 57.5], "expected": 57.5}, {"input": [-42.5, 58.0], "expected": 58.0}, {"input": [-42.5, 58.5], "expected": 58.5}, {"input": [-42.5, 59.0], "expected": 59.0}, {"input": [-42.5, 59.5], "expected": 59.5}, {"input": [-42.5, 60.0], "expected": 60.0}, {"input": [-42.5, 60.5], "expected": 60.5}, {"input": [-42.5, 61.0], "expected": 61.0}, {"input": [-42.5, 61.5], "expected": 61.5}, {"input": [-42.5, 62.0], "expected": 62.0}, {"input": [-42.5, 62.5], "expected": 62.5}, {"input": [-42.5, 63.0], "expected": 63.0}, {"input": [-42.5, 63.5], "expected": 63.5}, {"input": [-42.5, 64.0], "expected": 64.0}, {"input": [-42.5, 64.5], "expected": 64.5}, {"input": [-42.5, 65.0], "expected": 65.0}, {"input": [-42.5, 65.5], "expected": 65.5}, {"input": [-42.5, 66.0], "expected": 66.0}, {"input": [-42.5, 66.5], "expected": 66.5}, {"input": [-42.5, 67.0], "expected": 67.0}, {"input": [-42.5, 67.5], "expected": 67.5}, {"input": [-42.5, 68.0], "expected": 68.0}, {"input": [-42.5, 68.5], "expected": 68.5}, {"input": [-42.5, 69.0], "expected": 69.0}, {"input": [-42.5, 69.5], "expected": 69.5}, {"input": [-42.5, 70.0], "expected": 70.0}, {"input": [-42.5, 70.5], "expected": 70.5}, {"input": [-42.5, 71.0], "expected": 71.0}, {"input": [-42.5, 71.5], "expected": 71.5}, {"input": [-42.5, 72.0], "expected": 72.0}, {"input": [-42.5, 72.5], "expected": 72.5}, {"input": [-42.5, 73.0], "expected": 73.0}, {"input": [-42.5, 73.5], "expected": 73.5}, {"input": [-42.5, 74.0], "expected": 74.0}, {"input": [-42.5, 74.5], "expected": 74.5}, {"input": [-42.5, 75.0], "expected": 75.0}, {"input": [-42.5, 75.5], "expected": 75.5}, {"input": [-42.5, 76.0], "expected": 76.0}, {"input": [-42.5, 76.5], "expected": 76.5}, {"input": [-42.5, 77.0], "expected": 77.0}, {"input": [-42.5, 77.5], "expected": 77.5}, {"input": [-42.5, 78.0], "expected": 78.0}, {"input": [-42.5, 78.5], "expected": 78.5}, {"input": [-42.5, 79.0], "expected": 79.0}, {"input": [-42.5, 79.5], "expected": 79.5}, {"input": [-42.5, 80.0], "expected": 80.0}, {"input": [-42.5, 80.5], "expected": 80.5}, {"input": [-42.5, 81.0], "expected": 81.0}, {"input": [-42.5, 81.5], "expected": 81.5}, {"input": [-42.5, 82.0], "expected": 82.0}, {"input": [-42.5, 82.5], "expected": 82.5}, {"input": [-42.5, 83.0], "expected": 83.0}, {"input": [-42.5, 83.5], "expected": 83.5}, {"input": [-42.5, 84.0], "expected": 84.0}, {"input": [-42.5, 84.5], "expected": 84.5}, {"input": [-42.5, 85.0], "expected": 85.0}, {"input": [-42.5, 85.5], "expected": 85.5}, {"input": [-42.5, 86.0], "expected": 86.0}, {"input": [-42.5, 86.5], "expected": 86.5}, {"input": [-42.5, 87.0], "expected": 87.0}, {"input": [-42.5, 87.5], "expected": 87.5}, {"input": [-42.5, 88.0], "expected": 88.0}, {"input": [-42.5, 88.5], "expected": 88.5}, {"input": [-42.5, 89.0], "expected": 89.0}, {"input": [-42.5, 89.5], "expected": 89.5}, {"input": [-42.5, 90.0], "expected": 90.0}, {"input": [-42.5, 90.5], "expected": 90.5}, {"input": [-42.5, 91.0], "expected": 91.0}, {"input": [-42.5, 91.5], "expected": 91.5}, {"input": [-42.5, 92.0], "expected": 92.0}, {"input": [-42.5, 92.5], "expected": 92.5}, {"input": [-42.5, 93.0], "expected": 93.0}, {"input": [-42.5, 93.5], "expected": 93.5}, {"input": [-42.5, 94.0], "expected": 94.0}, {"input": [-42.5, 94.5], "expected": 94.5}, {"input": [-42.5, 95.0], "expected": 95.0}, {"input": [-42.5, 95.5], "expected": 95.5}, {"input": [-42.5, 96.0], "expected": 96.0}, {"input": [-42.5, 96.5], "expected": 96.5}, {"input": [-42.5, 97.0], "expected": 97.0}, {"input": [-42.5, 97.5], "expected": 97.5}, {"input": [-42.5, 98.0], "expected": 98.0}, {"input": [-42.5, 98.5], "expected": 98.5}, {"input": [-42.5, 99.0], "expected": 99.0}, {"input": [-42.5, 99.5], "expected": 99.5}, {"input": [-42.0, -100.0], "expected": -42.0}, {"input": [-42.0, -99.5], "expected": -42.0}, {"input": [-42.0, -99.0], "expected": -42.0}, {"input": [-42.0, -98.5], "expected": -42.0}, {"input": [-42.0, -98.0], "expected": -42.0}, {"input": [-42.0, -97.5], "expected": -42.0}, {"input": [-42.0, -97.0], "expected": -42.0}, {"input": [-42.0, -96.5], "expected": -42.0}, {"input": [-42.0, -96.0], "expected": -42.0}, {"input": [-42.0, -95.5], "expected": -42.0}, {"input": [-42.0, -95.0], "expected": -42.0}, {"input": [-42.0, -94.5], "expected": -42.0}, {"input": [-42.0, -94.0], "expected": -42.0}, {"input": [-42.0, -93.5], "expected": -42.0}, {"input": [-42.0, -93.0], "expected": -42.0}, {"input": [-42.0, -92.5], "expected": -42.0}, {"input": [-42.0, -92.0], "expected": -42.0}, {"input": [-42.0, -91.5], "expected": -42.0}, {"input": [-42.0, -91.0], "expected": -42.0}, {"input": [-42.0, -90.5], "expected": -42.0}, {"input": [-42.0, -90.0], "expected": -42.0}, {"input": [-42.0, -89.5], "expected": -42.0}, {"input": [-42.0, -89.0], "expected": -42.0}, {"input": [-42.0, -88.5], "expected": -42.0}, {"input": [-42.0, -88.0], "expected": -42.0}, {"input": [-42.0, -87.5], "expected": -42.0}, {"input": [-42.0, -87.0], "expected": -42.0}, {"input": [-42.0, -86.5], "expected": -42.0}, {"input": [-42.0, -86.0], "expected": -42.0}, {"input": [-42.0, -85.5], "expected": -42.0}, {"input": [-42.0, -85.0], "expected": -42.0}, {"input": [-42.0, -84.5], "expected": -42.0}, {"input": [-42.0, -84.0], "expected": -42.0}, {"input": [-42.0, -83.5], "expected": -42.0}, {"input": [-42.0, -83.0], "expected": -42.0}, {"input": [-42.0, -82.5], "expected": -42.0}, {"input": [-42.0, -82.0], "expected": -42.0}, {"input": [-42.0, -81.5], "expected": -42.0}, {"input": [-42.0, -81.0], "expected": -42.0}, {"input": [-42.0, -80.5], "expected": -42.0}, {"input": [-42.0, -80.0], "expected": -42.0}, {"input": [-42.0, -79.5], "expected": -42.0}, {"input": [-42.0, -79.0], "expected": -42.0}, {"input": [-42.0, -78.5], "expected": -42.0}, {"input": [-42.0, -78.0], "expected": -42.0}, {"input": [-42.0, -77.5], "expected": -42.0}, {"input": [-42.0, -77.0], "expected": -42.0}, {"input": [-42.0, -76.5], "expected": -42.0}, {"input": [-42.0, -76.0], "expected": -42.0}, {"input": [-42.0, -75.5], "expected": -42.0}, {"input": [-42.0, -75.0], "expected": -41.99999999999999}, {"input": [-42.0, -74.5], "expected": -41.99999999999999}, {"input": [-42.0, -74.0], "expected": -41.999999999999986}, {"input": [-42.0, -73.5], "expected": -41.99999999999998}, {"input": [-42.0, -73.0], "expected": -41.999999999999964}, {"input": [-42.0, -72.5], "expected": -41.99999999999994}, {"input": [-42.0, -72.0], "expected": -41.99999999999991}, {"input": [-42.0, -71.5], "expected": -41.999999999999844}, {"input": [-42.0, -71.0], "expected": -41.999999999999744}, {"input": [-42.0, -70.5], "expected": -41.99999999999958}, {"input": [-42.0, -70.0], "expected": -41.99999999999931}, {"input": [-42.0, -69.5], "expected": -41.99999999999886}, {"input": [-42.0, -69.0], "expected": -41.99999999999812}, {"input": [-42.0, -68.5], "expected": -41.9999999999969}, {"input": [-42.0, -68.0], "expected": -41.99999999999489}, {"input": [-42.0, -67.5], "expected": -41.99999999999158}, {"input": [-42.0, -67.0], "expected": -41.99999999998611}, {"input": [-42.0, -66.5], "expected": -41.9999999999771}, {"input": [-42.0, -66.0], "expected": -41.99999999996225}, {"input": [-42.0, -65.5], "expected": -41.99999999993776}, {"input": [-42.0, -65.0], "expected": -41.99999999989738}, {"input": [-42.0, -64.5], "expected": -41.99999999983081}, {"input": [-42.0, -64.0], "expected": -41.999999999721055}, {"input": [-42.0, -63.5], "expected": -41.999999999540094}, {"input": [-42.0, -63.0], "expected": -41.999999999241744}, {"input": [-42.0, -62.5], "expected": -41.99999999874985}, {"input": [-42.0, -62.0], "expected": -41.99999999793884}, {"input": [-42.0, -61.5], "expected": -41.99999999660173}, {"input": [-42.0, -61.0], "expected": -41.99999999439721}, {"input": [-42.0, -60.5], "expected": -41.999999990762554}, {"input": [-42.0, -60.0], "expected": -41.99999998477002}, {"input": [-42.0, -59.5], "expected": -41.99999997489001}, {"input": [-42.0, -59.0], "expected": -41.999999958600625}, {"input": [-42.0, -58.5], "expected": -41.99999993174397}, {"input": [-42.0, -58.0], "expected": -41.99999988746483}, {"input": [-42.0, -57.5], "expected": -41.99999981446088}, {"input": [-42.0, -57.0], "expected": -41.999999694097724}, {"input": [-42.0, -56.5], "expected": -41.99999949565247}, {"input": [-42.0, -56.0], "expected": -41.999999168471625}, {"input": [-42.0, -55.5], "expected": -41.999998629041855}, {"input": [-42.0, -55.0], "expected": -41.99999773967315}, {"input": [-42.0, -54.5], "expected": -41.99999627335377}, {"input": [-42.0, -54.0], "expected": -41.99999385580652}, {"input": [-42.0, -53.5], "expected": -41.99998986995771}, {"input": [-42.0, -53.0], "expected": -41.99998329843868}, {"input": [-42.0, -52.5], "expected": -41.99997246392977}, {"input": [-42.0, -52.0], "expected": -41.99995460110078}, {"input": [-42.0, -51.5], "expected": -41.99992515097137}, {"input": [-42.0, -51.0], "expected": -41.99987659781028}, {"input": [-42.0, -50.5], "expected": -41.99979655232787}, {"input": [-42.0, -50.0], "expected": -41.9996645936271}, {"input": [-42.0, -49.5], "expected": -41.99944706852464}, {"input": [-42.0, -49.0], "expected": -41.99908853354623}, {"input": [-42.0, -48.5], "expected": -41.99849768984024}, {"input": [-42.0, -48.0], "expected": -41.99752431486227}, {"input": [-42.0, -47.5], "expected": -41.99592155672943}, {"input": [-42.0, -47.0], "expected": -41.99328465151088}, {"input": [-42.0, -46.5], "expected": -41.9889522551514}, {"input": [-42.0, -46.0], "expected": -41.98185007208219}, {"input": [-42.0, -45.5], "expected": -41.97024958172738}, {"input": [-42.0, -45.0], "expected": -41.951412648426256}, {"input": [-42.0, -44.5], "expected": -41.92111026570745}, {"input": [-42.0, -44.0], "expected": -41.87307198895703}, {"input": [-42.0, -43.5], "expected": -41.79858672201725}, {"input": [-42.0, -43.0], "expected": -41.68673831248178}, {"input": [-42.0, -42.5], "expected": -41.52592301581989}, {"input": [-42.0, -42.0], "expected": -41.30685281944005}, {"input": [-42.0, -41.5], "expected": -41.02592301581989}, {"input": [-42.0, -41.0], "expected": -40.68673831248178}, {"input": [-42.0, -40.5], "expected": -40.29858672201725}, {"input": [-42.0, -40.0], "expected": -39.87307198895703}, {"input": [-42.0, -39.5], "expected": -39.42111026570745}, {"input": [-42.0, -39.0], "expected": -38.951412648426256}, {"input": [-42.0, -38.5], "expected": -38.47024958172738}, {"input": [-42.0, -38.0], "expected": -37.98185007208219}, {"input": [-42.0, -37.5], "expected": -37.4889522551514}, {"input": [-42.0, -37.0], "expected": -36.99328465151088}, {"input": [-42.0, -36.5], "expected": -36.49592155672943}, {"input": [-42.0, -36.0], "expected": -35.99752431486227}, {"input": [-42.0, -35.5], "expected": -35.49849768984024}, {"input": [-42.0, -35.0], "expected": -34.99908853354623}, {"input": [-42.0, -34.5], "expected": -34.49944706852464}, {"input": [-42.0, -34.0], "expected": -33.9996645936271}, {"input": [-42.0, -33.5], "expected": -33.49979655232787}, {"input": [-42.0, -33.0], "expected": -32.99987659781028}, {"input": [-42.0, -32.5], "expected": -32.49992515097137}, {"input": [-42.0, -32.0], "expected": -31.999954601100782}, {"input": [-42.0, -31.5], "expected": -31.499972463929772}, {"input": [-42.0, -31.0], "expected": -30.999983298438682}, {"input": [-42.0, -30.5], "expected": -30.49998986995771}, {"input": [-42.0, -30.0], "expected": -29.999993855806522}, {"input": [-42.0, -29.5], "expected": -29.499996273353773}, {"input": [-42.0, -29.0], "expected": -28.999997739673148}, {"input": [-42.0, -28.5], "expected": -28.499998629041855}, {"input": [-42.0, -28.0], "expected": -27.999999168471625}, {"input": [-42.0, -27.5], "expected": -27.499999495652464}, {"input": [-42.0, -27.0], "expected": -26.999999694097728}, {"input": [-42.0, -26.5], "expected": -26.49999981446088}, {"input": [-42.0, -26.0], "expected": -25.99999988746483}, {"input": [-42.0, -25.5], "expected": -25.499999931743968}, {"input": [-42.0, -25.0], "expected": -24.999999958600625}, {"input": [-42.0, -24.5], "expected": -24.49999997489001}, {"input": [-42.0, -24.0], "expected": -23.99999998477002}, {"input": [-42.0, -23.5], "expected": -23.49999999076255}, {"input": [-42.0, -23.0], "expected": -22.999999994397204}, {"input": [-42.0, -22.5], "expected": -22.499999996601733}, {"input": [-42.0, -22.0], "expected": -21.999999997938847}, {"input": [-42.0, -21.5], "expected": -21.499999998749846}, {"input": [-42.0, -21.0], "expected": -20.999999999241744}, {"input": [-42.0, -20.5], "expected": -20.499999999540094}, {"input": [-42.0, -20.0], "expected": -19.99999999972105}, {"input": [-42.0, -19.5], "expected": -19.49999999983081}, {"input": [-42.0, -19.0], "expected": -18.99999999989738}, {"input": [-42.0, -18.5], "expected": -18.49999999993776}, {"input": [-42.0, -18.0], "expected": -17.99999999996225}, {"input": [-42.0, -17.5], "expected": -17.499999999977103}, {"input": [-42.0, -17.0], "expected": -16.999999999986112}, {"input": [-42.0, -16.5], "expected": -16.499999999991577}, {"input": [-42.0, -16.0], "expected": -15.999999999994891}, {"input": [-42.0, -15.5], "expected": -15.499999999996902}, {"input": [-42.0, -15.0], "expected": -14.99999999999812}, {"input": [-42.0, -14.5], "expected": -14.49999999999886}, {"input": [-42.0, -14.0], "expected": -13.999999999999309}, {"input": [-42.0, -13.5], "expected": -13.49999999999958}, {"input": [-42.0, -13.0], "expected": -12.999999999999746}, {"input": [-42.0, -12.5], "expected": -12.499999999999845}, {"input": [-42.0, -12.0], "expected": -11.999999999999906}, {"input": [-42.0, -11.5], "expected": -11.499999999999943}, {"input": [-42.0, -11.0], "expected": -10.999999999999966}, {"input": [-42.0, -10.5], "expected": -10.499999999999979}, {"input": [-42.0, -10.0], "expected": -9.999999999999988}, {"input": [-42.0, -9.5], "expected": -9.499999999999993}, {"input": [-42.0, -9.0], "expected": -8.999999999999995}, {"input": [-42.0, -8.5], "expected": -8.499999999999996}, {"input": [-42.0, -8.0], "expected": -7.999999999999998}, {"input": [-42.0, -7.5], "expected": -7.499999999999999}, {"input": [-42.0, -7.0], "expected": -6.999999999999999}, {"input": [-42.0, -6.5], "expected": -6.5}, {"input": [-42.0, -6.0], "expected": -6.0}, {"input": [-42.0, -5.5], "expected": -5.5}, {"input": [-42.0, -5.0], "expected": -5.0}, {"input": [-42.0, -4.5], "expected": -4.5}, {"input": [-42.0, -4.0], "expected": -4.0}, {"input": [-42.0, -3.5], "expected": -3.5}, {"input": [-42.0, -3.0], "expected": -3.0}, {"input": [-42.0, -2.5], "expected": -2.5}, {"input": [-42.0, -2.0], "expected": -2.0}, {"input": [-42.0, -1.5], "expected": -1.5}, {"input": [-42.0, -1.0], "expected": -1.0}, {"input": [-42.0, -0.5], "expected": -0.5}, {"input": [-42.0, 0.0], "expected": 5.74952226429356e-19}, {"input": [-42.0, 0.5], "expected": 0.5}, {"input": [-42.0, 1.0], "expected": 1.0}, {"input": [-42.0, 1.5], "expected": 1.5}, {"input": [-42.0, 2.0], "expected": 2.0}, {"input": [-42.0, 2.5], "expected": 2.5}, {"input": [-42.0, 3.0], "expected": 3.0}, {"input": [-42.0, 3.5], "expected": 3.5}, {"input": [-42.0, 4.0], "expected": 4.0}, {"input": [-42.0, 4.5], "expected": 4.5}, {"input": [-42.0, 5.0], "expected": 5.0}, {"input": [-42.0, 5.5], "expected": 5.5}, {"input": [-42.0, 6.0], "expected": 6.0}, {"input": [-42.0, 6.5], "expected": 6.5}, {"input": [-42.0, 7.0], "expected": 7.0}, {"input": [-42.0, 7.5], "expected": 7.5}, {"input": [-42.0, 8.0], "expected": 8.0}, {"input": [-42.0, 8.5], "expected": 8.5}, {"input": [-42.0, 9.0], "expected": 9.0}, {"input": [-42.0, 9.5], "expected": 9.5}, {"input": [-42.0, 10.0], "expected": 10.0}, {"input": [-42.0, 10.5], "expected": 10.5}, {"input": [-42.0, 11.0], "expected": 11.0}, {"input": [-42.0, 11.5], "expected": 11.5}, {"input": [-42.0, 12.0], "expected": 12.0}, {"input": [-42.0, 12.5], "expected": 12.5}, {"input": [-42.0, 13.0], "expected": 13.0}, {"input": [-42.0, 13.5], "expected": 13.5}, {"input": [-42.0, 14.0], "expected": 14.0}, {"input": [-42.0, 14.5], "expected": 14.5}, {"input": [-42.0, 15.0], "expected": 15.0}, {"input": [-42.0, 15.5], "expected": 15.5}, {"input": [-42.0, 16.0], "expected": 16.0}, {"input": [-42.0, 16.5], "expected": 16.5}, {"input": [-42.0, 17.0], "expected": 17.0}, {"input": [-42.0, 17.5], "expected": 17.5}, {"input": [-42.0, 18.0], "expected": 18.0}, {"input": [-42.0, 18.5], "expected": 18.5}, {"input": [-42.0, 19.0], "expected": 19.0}, {"input": [-42.0, 19.5], "expected": 19.5}, {"input": [-42.0, 20.0], "expected": 20.0}, {"input": [-42.0, 20.5], "expected": 20.5}, {"input": [-42.0, 21.0], "expected": 21.0}, {"input": [-42.0, 21.5], "expected": 21.5}, {"input": [-42.0, 22.0], "expected": 22.0}, {"input": [-42.0, 22.5], "expected": 22.5}, {"input": [-42.0, 23.0], "expected": 23.0}, {"input": [-42.0, 23.5], "expected": 23.5}, {"input": [-42.0, 24.0], "expected": 24.0}, {"input": [-42.0, 24.5], "expected": 24.5}, {"input": [-42.0, 25.0], "expected": 25.0}, {"input": [-42.0, 25.5], "expected": 25.5}, {"input": [-42.0, 26.0], "expected": 26.0}, {"input": [-42.0, 26.5], "expected": 26.5}, {"input": [-42.0, 27.0], "expected": 27.0}, {"input": [-42.0, 27.5], "expected": 27.5}, {"input": [-42.0, 28.0], "expected": 28.0}, {"input": [-42.0, 28.5], "expected": 28.5}, {"input": [-42.0, 29.0], "expected": 29.0}, {"input": [-42.0, 29.5], "expected": 29.5}, {"input": [-42.0, 30.0], "expected": 30.0}, {"input": [-42.0, 30.5], "expected": 30.5}, {"input": [-42.0, 31.0], "expected": 31.0}, {"input": [-42.0, 31.5], "expected": 31.5}, {"input": [-42.0, 32.0], "expected": 32.0}, {"input": [-42.0, 32.5], "expected": 32.5}, {"input": [-42.0, 33.0], "expected": 33.0}, {"input": [-42.0, 33.5], "expected": 33.5}, {"input": [-42.0, 34.0], "expected": 34.0}, {"input": [-42.0, 34.5], "expected": 34.5}, {"input": [-42.0, 35.0], "expected": 35.0}, {"input": [-42.0, 35.5], "expected": 35.5}, {"input": [-42.0, 36.0], "expected": 36.0}, {"input": [-42.0, 36.5], "expected": 36.5}, {"input": [-42.0, 37.0], "expected": 37.0}, {"input": [-42.0, 37.5], "expected": 37.5}, {"input": [-42.0, 38.0], "expected": 38.0}, {"input": [-42.0, 38.5], "expected": 38.5}, {"input": [-42.0, 39.0], "expected": 39.0}, {"input": [-42.0, 39.5], "expected": 39.5}, {"input": [-42.0, 40.0], "expected": 40.0}, {"input": [-42.0, 40.5], "expected": 40.5}, {"input": [-42.0, 41.0], "expected": 41.0}, {"input": [-42.0, 41.5], "expected": 41.5}, {"input": [-42.0, 42.0], "expected": 42.0}, {"input": [-42.0, 42.5], "expected": 42.5}, {"input": [-42.0, 43.0], "expected": 43.0}, {"input": [-42.0, 43.5], "expected": 43.5}, {"input": [-42.0, 44.0], "expected": 44.0}, {"input": [-42.0, 44.5], "expected": 44.5}, {"input": [-42.0, 45.0], "expected": 45.0}, {"input": [-42.0, 45.5], "expected": 45.5}, {"input": [-42.0, 46.0], "expected": 46.0}, {"input": [-42.0, 46.5], "expected": 46.5}, {"input": [-42.0, 47.0], "expected": 47.0}, {"input": [-42.0, 47.5], "expected": 47.5}, {"input": [-42.0, 48.0], "expected": 48.0}, {"input": [-42.0, 48.5], "expected": 48.5}, {"input": [-42.0, 49.0], "expected": 49.0}, {"input": [-42.0, 49.5], "expected": 49.5}, {"input": [-42.0, 50.0], "expected": 50.0}, {"input": [-42.0, 50.5], "expected": 50.5}, {"input": [-42.0, 51.0], "expected": 51.0}, {"input": [-42.0, 51.5], "expected": 51.5}, {"input": [-42.0, 52.0], "expected": 52.0}, {"input": [-42.0, 52.5], "expected": 52.5}, {"input": [-42.0, 53.0], "expected": 53.0}, {"input": [-42.0, 53.5], "expected": 53.5}, {"input": [-42.0, 54.0], "expected": 54.0}, {"input": [-42.0, 54.5], "expected": 54.5}, {"input": [-42.0, 55.0], "expected": 55.0}, {"input": [-42.0, 55.5], "expected": 55.5}, {"input": [-42.0, 56.0], "expected": 56.0}, {"input": [-42.0, 56.5], "expected": 56.5}, {"input": [-42.0, 57.0], "expected": 57.0}, {"input": [-42.0, 57.5], "expected": 57.5}, {"input": [-42.0, 58.0], "expected": 58.0}, {"input": [-42.0, 58.5], "expected": 58.5}, {"input": [-42.0, 59.0], "expected": 59.0}, {"input": [-42.0, 59.5], "expected": 59.5}, {"input": [-42.0, 60.0], "expected": 60.0}, {"input": [-42.0, 60.5], "expected": 60.5}, {"input": [-42.0, 61.0], "expected": 61.0}, {"input": [-42.0, 61.5], "expected": 61.5}, {"input": [-42.0, 62.0], "expected": 62.0}, {"input": [-42.0, 62.5], "expected": 62.5}, {"input": [-42.0, 63.0], "expected": 63.0}, {"input": [-42.0, 63.5], "expected": 63.5}, {"input": [-42.0, 64.0], "expected": 64.0}, {"input": [-42.0, 64.5], "expected": 64.5}, {"input": [-42.0, 65.0], "expected": 65.0}, {"input": [-42.0, 65.5], "expected": 65.5}, {"input": [-42.0, 66.0], "expected": 66.0}, {"input": [-42.0, 66.5], "expected": 66.5}, {"input": [-42.0, 67.0], "expected": 67.0}, {"input": [-42.0, 67.5], "expected": 67.5}, {"input": [-42.0, 68.0], "expected": 68.0}, {"input": [-42.0, 68.5], "expected": 68.5}, {"input": [-42.0, 69.0], "expected": 69.0}, {"input": [-42.0, 69.5], "expected": 69.5}, {"input": [-42.0, 70.0], "expected": 70.0}, {"input": [-42.0, 70.5], "expected": 70.5}, {"input": [-42.0, 71.0], "expected": 71.0}, {"input": [-42.0, 71.5], "expected": 71.5}, {"input": [-42.0, 72.0], "expected": 72.0}, {"input": [-42.0, 72.5], "expected": 72.5}, {"input": [-42.0, 73.0], "expected": 73.0}, {"input": [-42.0, 73.5], "expected": 73.5}, {"input": [-42.0, 74.0], "expected": 74.0}, {"input": [-42.0, 74.5], "expected": 74.5}, {"input": [-42.0, 75.0], "expected": 75.0}, {"input": [-42.0, 75.5], "expected": 75.5}, {"input": [-42.0, 76.0], "expected": 76.0}, {"input": [-42.0, 76.5], "expected": 76.5}, {"input": [-42.0, 77.0], "expected": 77.0}, {"input": [-42.0, 77.5], "expected": 77.5}, {"input": [-42.0, 78.0], "expected": 78.0}, {"input": [-42.0, 78.5], "expected": 78.5}, {"input": [-42.0, 79.0], "expected": 79.0}, {"input": [-42.0, 79.5], "expected": 79.5}, {"input": [-42.0, 80.0], "expected": 80.0}, {"input": [-42.0, 80.5], "expected": 80.5}, {"input": [-42.0, 81.0], "expected": 81.0}, {"input": [-42.0, 81.5], "expected": 81.5}, {"input": [-42.0, 82.0], "expected": 82.0}, {"input": [-42.0, 82.5], "expected": 82.5}, {"input": [-42.0, 83.0], "expected": 83.0}, {"input": [-42.0, 83.5], "expected": 83.5}, {"input": [-42.0, 84.0], "expected": 84.0}, {"input": [-42.0, 84.5], "expected": 84.5}, {"input": [-42.0, 85.0], "expected": 85.0}, {"input": [-42.0, 85.5], "expected": 85.5}, {"input": [-42.0, 86.0], "expected": 86.0}, {"input": [-42.0, 86.5], "expected": 86.5}, {"input": [-42.0, 87.0], "expected": 87.0}, {"input": [-42.0, 87.5], "expected": 87.5}, {"input": [-42.0, 88.0], "expected": 88.0}, {"input": [-42.0, 88.5], "expected": 88.5}, {"input": [-42.0, 89.0], "expected": 89.0}, {"input": [-42.0, 89.5], "expected": 89.5}, {"input": [-42.0, 90.0], "expected": 90.0}, {"input": [-42.0, 90.5], "expected": 90.5}, {"input": [-42.0, 91.0], "expected": 91.0}, {"input": [-42.0, 91.5], "expected": 91.5}, {"input": [-42.0, 92.0], "expected": 92.0}, {"input": [-42.0, 92.5], "expected": 92.5}, {"input": [-42.0, 93.0], "expected": 93.0}, {"input": [-42.0, 93.5], "expected": 93.5}, {"input": [-42.0, 94.0], "expected": 94.0}, {"input": [-42.0, 94.5], "expected": 94.5}, {"input": [-42.0, 95.0], "expected": 95.0}, {"input": [-42.0, 95.5], "expected": 95.5}, {"input": [-42.0, 96.0], "expected": 96.0}, {"input": [-42.0, 96.5], "expected": 96.5}, {"input": [-42.0, 97.0], "expected": 97.0}, {"input": [-42.0, 97.5], "expected": 97.5}, {"input": [-42.0, 98.0], "expected": 98.0}, {"input": [-42.0, 98.5], "expected": 98.5}, {"input": [-42.0, 99.0], "expected": 99.0}, {"input": [-42.0, 99.5], "expected": 99.5}, {"input": [-41.5, -100.0], "expected": -41.5}, {"input": [-41.5, -99.5], "expected": -41.5}, {"input": [-41.5, -99.0], "expected": -41.5}, {"input": [-41.5, -98.5], "expected": -41.5}, {"input": [-41.5, -98.0], "expected": -41.5}, {"input": [-41.5, -97.5], "expected": -41.5}, {"input": [-41.5, -97.0], "expected": -41.5}, {"input": [-41.5, -96.5], "expected": -41.5}, {"input": [-41.5, -96.0], "expected": -41.5}, {"input": [-41.5, -95.5], "expected": -41.5}, {"input": [-41.5, -95.0], "expected": -41.5}, {"input": [-41.5, -94.5], "expected": -41.5}, {"input": [-41.5, -94.0], "expected": -41.5}, {"input": [-41.5, -93.5], "expected": -41.5}, {"input": [-41.5, -93.0], "expected": -41.5}, {"input": [-41.5, -92.5], "expected": -41.5}, {"input": [-41.5, -92.0], "expected": -41.5}, {"input": [-41.5, -91.5], "expected": -41.5}, {"input": [-41.5, -91.0], "expected": -41.5}, {"input": [-41.5, -90.5], "expected": -41.5}, {"input": [-41.5, -90.0], "expected": -41.5}, {"input": [-41.5, -89.5], "expected": -41.5}, {"input": [-41.5, -89.0], "expected": -41.5}, {"input": [-41.5, -88.5], "expected": -41.5}, {"input": [-41.5, -88.0], "expected": -41.5}, {"input": [-41.5, -87.5], "expected": -41.5}, {"input": [-41.5, -87.0], "expected": -41.5}, {"input": [-41.5, -86.5], "expected": -41.5}, {"input": [-41.5, -86.0], "expected": -41.5}, {"input": [-41.5, -85.5], "expected": -41.5}, {"input": [-41.5, -85.0], "expected": -41.5}, {"input": [-41.5, -84.5], "expected": -41.5}, {"input": [-41.5, -84.0], "expected": -41.5}, {"input": [-41.5, -83.5], "expected": -41.5}, {"input": [-41.5, -83.0], "expected": -41.5}, {"input": [-41.5, -82.5], "expected": -41.5}, {"input": [-41.5, -82.0], "expected": -41.5}, {"input": [-41.5, -81.5], "expected": -41.5}, {"input": [-41.5, -81.0], "expected": -41.5}, {"input": [-41.5, -80.5], "expected": -41.5}, {"input": [-41.5, -80.0], "expected": -41.5}, {"input": [-41.5, -79.5], "expected": -41.5}, {"input": [-41.5, -79.0], "expected": -41.5}, {"input": [-41.5, -78.5], "expected": -41.5}, {"input": [-41.5, -78.0], "expected": -41.5}, {"input": [-41.5, -77.5], "expected": -41.5}, {"input": [-41.5, -77.0], "expected": -41.5}, {"input": [-41.5, -76.5], "expected": -41.5}, {"input": [-41.5, -76.0], "expected": -41.5}, {"input": [-41.5, -75.5], "expected": -41.5}, {"input": [-41.5, -75.0], "expected": -41.5}, {"input": [-41.5, -74.5], "expected": -41.49999999999999}, {"input": [-41.5, -74.0], "expected": -41.49999999999999}, {"input": [-41.5, -73.5], "expected": -41.499999999999986}, {"input": [-41.5, -73.0], "expected": -41.49999999999998}, {"input": [-41.5, -72.5], "expected": -41.499999999999964}, {"input": [-41.5, -72.0], "expected": -41.49999999999994}, {"input": [-41.5, -71.5], "expected": -41.49999999999991}, {"input": [-41.5, -71.0], "expected": -41.499999999999844}, {"input": [-41.5, -70.5], "expected": -41.499999999999744}, {"input": [-41.5, -70.0], "expected": -41.49999999999958}, {"input": [-41.5, -69.5], "expected": -41.49999999999931}, {"input": [-41.5, -69.0], "expected": -41.49999999999886}, {"input": [-41.5, -68.5], "expected": -41.49999999999812}, {"input": [-41.5, -68.0], "expected": -41.4999999999969}, {"input": [-41.5, -67.5], "expected": -41.49999999999489}, {"input": [-41.5, -67.0], "expected": -41.49999999999158}, {"input": [-41.5, -66.5], "expected": -41.49999999998611}, {"input": [-41.5, -66.0], "expected": -41.4999999999771}, {"input": [-41.5, -65.5], "expected": -41.49999999996225}, {"input": [-41.5, -65.0], "expected": -41.49999999993776}, {"input": [-41.5, -64.5], "expected": -41.49999999989738}, {"input": [-41.5, -64.0], "expected": -41.49999999983081}, {"input": [-41.5, -63.5], "expected": -41.499999999721055}, {"input": [-41.5, -63.0], "expected": -41.499999999540094}, {"input": [-41.5, -62.5], "expected": -41.499999999241744}, {"input": [-41.5, -62.0], "expected": -41.49999999874985}, {"input": [-41.5, -61.5], "expected": -41.49999999793884}, {"input": [-41.5, -61.0], "expected": -41.49999999660173}, {"input": [-41.5, -60.5], "expected": -41.49999999439721}, {"input": [-41.5, -60.0], "expected": -41.499999990762554}, {"input": [-41.5, -59.5], "expected": -41.49999998477002}, {"input": [-41.5, -59.0], "expected": -41.49999997489001}, {"input": [-41.5, -58.5], "expected": -41.499999958600625}, {"input": [-41.5, -58.0], "expected": -41.49999993174397}, {"input": [-41.5, -57.5], "expected": -41.49999988746483}, {"input": [-41.5, -57.0], "expected": -41.49999981446088}, {"input": [-41.5, -56.5], "expected": -41.499999694097724}, {"input": [-41.5, -56.0], "expected": -41.49999949565247}, {"input": [-41.5, -55.5], "expected": -41.499999168471625}, {"input": [-41.5, -55.0], "expected": -41.499998629041855}, {"input": [-41.5, -54.5], "expected": -41.49999773967315}, {"input": [-41.5, -54.0], "expected": -41.49999627335377}, {"input": [-41.5, -53.5], "expected": -41.49999385580652}, {"input": [-41.5, -53.0], "expected": -41.49998986995771}, {"input": [-41.5, -52.5], "expected": -41.49998329843868}, {"input": [-41.5, -52.0], "expected": -41.49997246392977}, {"input": [-41.5, -51.5], "expected": -41.49995460110078}, {"input": [-41.5, -51.0], "expected": -41.49992515097137}, {"input": [-41.5, -50.5], "expected": -41.49987659781028}, {"input": [-41.5, -50.0], "expected": -41.49979655232787}, {"input": [-41.5, -49.5], "expected": -41.4996645936271}, {"input": [-41.5, -49.0], "expected": -41.49944706852464}, {"input": [-41.5, -48.5], "expected": -41.49908853354623}, {"input": [-41.5, -48.0], "expected": -41.49849768984024}, {"input": [-41.5, -47.5], "expected": -41.49752431486227}, {"input": [-41.5, -47.0], "expected": -41.49592155672943}, {"input": [-41.5, -46.5], "expected": -41.49328465151088}, {"input": [-41.5, -46.0], "expected": -41.4889522551514}, {"input": [-41.5, -45.5], "expected": -41.48185007208219}, {"input": [-41.5, -45.0], "expected": -41.47024958172738}, {"input": [-41.5, -44.5], "expected": -41.451412648426256}, {"input": [-41.5, -44.0], "expected": -41.42111026570745}, {"input": [-41.5, -43.5], "expected": -41.37307198895703}, {"input": [-41.5, -43.0], "expected": -41.29858672201725}, {"input": [-41.5, -42.5], "expected": -41.18673831248178}, {"input": [-41.5, -42.0], "expected": -41.02592301581989}, {"input": [-41.5, -41.5], "expected": -40.80685281944005}, {"input": [-41.5, -41.0], "expected": -40.52592301581989}, {"input": [-41.5, -40.5], "expected": -40.18673831248178}, {"input": [-41.5, -40.0], "expected": -39.79858672201725}, {"input": [-41.5, -39.5], "expected": -39.37307198895703}, {"input": [-41.5, -39.0], "expected": -38.92111026570745}, {"input": [-41.5, -38.5], "expected": -38.451412648426256}, {"input": [-41.5, -38.0], "expected": -37.97024958172738}, {"input": [-41.5, -37.5], "expected": -37.48185007208219}, {"input": [-41.5, -37.0], "expected": -36.9889522551514}, {"input": [-41.5, -36.5], "expected": -36.49328465151088}, {"input": [-41.5, -36.0], "expected": -35.99592155672943}, {"input": [-41.5, -35.5], "expected": -35.49752431486227}, {"input": [-41.5, -35.0], "expected": -34.99849768984024}, {"input": [-41.5, -34.5], "expected": -34.49908853354623}, {"input": [-41.5, -34.0], "expected": -33.99944706852464}, {"input": [-41.5, -33.5], "expected": -33.4996645936271}, {"input": [-41.5, -33.0], "expected": -32.99979655232787}, {"input": [-41.5, -32.5], "expected": -32.49987659781028}, {"input": [-41.5, -32.0], "expected": -31.99992515097137}, {"input": [-41.5, -31.5], "expected": -31.499954601100782}, {"input": [-41.5, -31.0], "expected": -30.999972463929772}, {"input": [-41.5, -30.5], "expected": -30.499983298438682}, {"input": [-41.5, -30.0], "expected": -29.99998986995771}, {"input": [-41.5, -29.5], "expected": -29.499993855806522}, {"input": [-41.5, -29.0], "expected": -28.999996273353773}, {"input": [-41.5, -28.5], "expected": -28.499997739673148}, {"input": [-41.5, -28.0], "expected": -27.999998629041855}, {"input": [-41.5, -27.5], "expected": -27.499999168471625}, {"input": [-41.5, -27.0], "expected": -26.999999495652464}, {"input": [-41.5, -26.5], "expected": -26.499999694097728}, {"input": [-41.5, -26.0], "expected": -25.99999981446088}, {"input": [-41.5, -25.5], "expected": -25.49999988746483}, {"input": [-41.5, -25.0], "expected": -24.999999931743968}, {"input": [-41.5, -24.5], "expected": -24.499999958600625}, {"input": [-41.5, -24.0], "expected": -23.99999997489001}, {"input": [-41.5, -23.5], "expected": -23.49999998477002}, {"input": [-41.5, -23.0], "expected": -22.99999999076255}, {"input": [-41.5, -22.5], "expected": -22.499999994397204}, {"input": [-41.5, -22.0], "expected": -21.999999996601733}, {"input": [-41.5, -21.5], "expected": -21.499999997938847}, {"input": [-41.5, -21.0], "expected": -20.999999998749846}, {"input": [-41.5, -20.5], "expected": -20.499999999241744}, {"input": [-41.5, -20.0], "expected": -19.999999999540094}, {"input": [-41.5, -19.5], "expected": -19.49999999972105}, {"input": [-41.5, -19.0], "expected": -18.99999999983081}, {"input": [-41.5, -18.5], "expected": -18.49999999989738}, {"input": [-41.5, -18.0], "expected": -17.99999999993776}, {"input": [-41.5, -17.5], "expected": -17.49999999996225}, {"input": [-41.5, -17.0], "expected": -16.999999999977103}, {"input": [-41.5, -16.5], "expected": -16.499999999986112}, {"input": [-41.5, -16.0], "expected": -15.999999999991577}, {"input": [-41.5, -15.5], "expected": -15.499999999994891}, {"input": [-41.5, -15.0], "expected": -14.999999999996902}, {"input": [-41.5, -14.5], "expected": -14.49999999999812}, {"input": [-41.5, -14.0], "expected": -13.99999999999886}, {"input": [-41.5, -13.5], "expected": -13.499999999999309}, {"input": [-41.5, -13.0], "expected": -12.99999999999958}, {"input": [-41.5, -12.5], "expected": -12.499999999999746}, {"input": [-41.5, -12.0], "expected": -11.999999999999845}, {"input": [-41.5, -11.5], "expected": -11.499999999999906}, {"input": [-41.5, -11.0], "expected": -10.999999999999943}, {"input": [-41.5, -10.5], "expected": -10.499999999999966}, {"input": [-41.5, -10.0], "expected": -9.999999999999979}, {"input": [-41.5, -9.5], "expected": -9.499999999999988}, {"input": [-41.5, -9.0], "expected": -8.999999999999993}, {"input": [-41.5, -8.5], "expected": -8.499999999999995}, {"input": [-41.5, -8.0], "expected": -7.999999999999997}, {"input": [-41.5, -7.5], "expected": -7.499999999999998}, {"input": [-41.5, -7.0], "expected": -6.999999999999999}, {"input": [-41.5, -6.5], "expected": -6.499999999999999}, {"input": [-41.5, -6.0], "expected": -6.0}, {"input": [-41.5, -5.5], "expected": -5.5}, {"input": [-41.5, -5.0], "expected": -5.0}, {"input": [-41.5, -4.5], "expected": -4.5}, {"input": [-41.5, -4.0], "expected": -4.0}, {"input": [-41.5, -3.5], "expected": -3.5}, {"input": [-41.5, -3.0], "expected": -3.0}, {"input": [-41.5, -2.5], "expected": -2.5}, {"input": [-41.5, -2.0], "expected": -2.0}, {"input": [-41.5, -1.5], "expected": -1.5}, {"input": [-41.5, -1.0], "expected": -1.0}, {"input": [-41.5, -0.5], "expected": -0.5}, {"input": [-41.5, 0.0], "expected": 9.479359653504757e-19}, {"input": [-41.5, 0.5], "expected": 0.5}, {"input": [-41.5, 1.0], "expected": 1.0}, {"input": [-41.5, 1.5], "expected": 1.5}, {"input": [-41.5, 2.0], "expected": 2.0}, {"input": [-41.5, 2.5], "expected": 2.5}, {"input": [-41.5, 3.0], "expected": 3.0}, {"input": [-41.5, 3.5], "expected": 3.5}, {"input": [-41.5, 4.0], "expected": 4.0}, {"input": [-41.5, 4.5], "expected": 4.5}, {"input": [-41.5, 5.0], "expected": 5.0}, {"input": [-41.5, 5.5], "expected": 5.5}, {"input": [-41.5, 6.0], "expected": 6.0}, {"input": [-41.5, 6.5], "expected": 6.5}, {"input": [-41.5, 7.0], "expected": 7.0}, {"input": [-41.5, 7.5], "expected": 7.5}, {"input": [-41.5, 8.0], "expected": 8.0}, {"input": [-41.5, 8.5], "expected": 8.5}, {"input": [-41.5, 9.0], "expected": 9.0}, {"input": [-41.5, 9.5], "expected": 9.5}, {"input": [-41.5, 10.0], "expected": 10.0}, {"input": [-41.5, 10.5], "expected": 10.5}, {"input": [-41.5, 11.0], "expected": 11.0}, {"input": [-41.5, 11.5], "expected": 11.5}, {"input": [-41.5, 12.0], "expected": 12.0}, {"input": [-41.5, 12.5], "expected": 12.5}, {"input": [-41.5, 13.0], "expected": 13.0}, {"input": [-41.5, 13.5], "expected": 13.5}, {"input": [-41.5, 14.0], "expected": 14.0}, {"input": [-41.5, 14.5], "expected": 14.5}, {"input": [-41.5, 15.0], "expected": 15.0}, {"input": [-41.5, 15.5], "expected": 15.5}, {"input": [-41.5, 16.0], "expected": 16.0}, {"input": [-41.5, 16.5], "expected": 16.5}, {"input": [-41.5, 17.0], "expected": 17.0}, {"input": [-41.5, 17.5], "expected": 17.5}, {"input": [-41.5, 18.0], "expected": 18.0}, {"input": [-41.5, 18.5], "expected": 18.5}, {"input": [-41.5, 19.0], "expected": 19.0}, {"input": [-41.5, 19.5], "expected": 19.5}, {"input": [-41.5, 20.0], "expected": 20.0}, {"input": [-41.5, 20.5], "expected": 20.5}, {"input": [-41.5, 21.0], "expected": 21.0}, {"input": [-41.5, 21.5], "expected": 21.5}, {"input": [-41.5, 22.0], "expected": 22.0}, {"input": [-41.5, 22.5], "expected": 22.5}, {"input": [-41.5, 23.0], "expected": 23.0}, {"input": [-41.5, 23.5], "expected": 23.5}, {"input": [-41.5, 24.0], "expected": 24.0}, {"input": [-41.5, 24.5], "expected": 24.5}, {"input": [-41.5, 25.0], "expected": 25.0}, {"input": [-41.5, 25.5], "expected": 25.5}, {"input": [-41.5, 26.0], "expected": 26.0}, {"input": [-41.5, 26.5], "expected": 26.5}, {"input": [-41.5, 27.0], "expected": 27.0}, {"input": [-41.5, 27.5], "expected": 27.5}, {"input": [-41.5, 28.0], "expected": 28.0}, {"input": [-41.5, 28.5], "expected": 28.5}, {"input": [-41.5, 29.0], "expected": 29.0}, {"input": [-41.5, 29.5], "expected": 29.5}, {"input": [-41.5, 30.0], "expected": 30.0}, {"input": [-41.5, 30.5], "expected": 30.5}, {"input": [-41.5, 31.0], "expected": 31.0}, {"input": [-41.5, 31.5], "expected": 31.5}, {"input": [-41.5, 32.0], "expected": 32.0}, {"input": [-41.5, 32.5], "expected": 32.5}, {"input": [-41.5, 33.0], "expected": 33.0}, {"input": [-41.5, 33.5], "expected": 33.5}, {"input": [-41.5, 34.0], "expected": 34.0}, {"input": [-41.5, 34.5], "expected": 34.5}, {"input": [-41.5, 35.0], "expected": 35.0}, {"input": [-41.5, 35.5], "expected": 35.5}, {"input": [-41.5, 36.0], "expected": 36.0}, {"input": [-41.5, 36.5], "expected": 36.5}, {"input": [-41.5, 37.0], "expected": 37.0}, {"input": [-41.5, 37.5], "expected": 37.5}, {"input": [-41.5, 38.0], "expected": 38.0}, {"input": [-41.5, 38.5], "expected": 38.5}, {"input": [-41.5, 39.0], "expected": 39.0}, {"input": [-41.5, 39.5], "expected": 39.5}, {"input": [-41.5, 40.0], "expected": 40.0}, {"input": [-41.5, 40.5], "expected": 40.5}, {"input": [-41.5, 41.0], "expected": 41.0}, {"input": [-41.5, 41.5], "expected": 41.5}, {"input": [-41.5, 42.0], "expected": 42.0}, {"input": [-41.5, 42.5], "expected": 42.5}, {"input": [-41.5, 43.0], "expected": 43.0}, {"input": [-41.5, 43.5], "expected": 43.5}, {"input": [-41.5, 44.0], "expected": 44.0}, {"input": [-41.5, 44.5], "expected": 44.5}, {"input": [-41.5, 45.0], "expected": 45.0}, {"input": [-41.5, 45.5], "expected": 45.5}, {"input": [-41.5, 46.0], "expected": 46.0}, {"input": [-41.5, 46.5], "expected": 46.5}, {"input": [-41.5, 47.0], "expected": 47.0}, {"input": [-41.5, 47.5], "expected": 47.5}, {"input": [-41.5, 48.0], "expected": 48.0}, {"input": [-41.5, 48.5], "expected": 48.5}, {"input": [-41.5, 49.0], "expected": 49.0}, {"input": [-41.5, 49.5], "expected": 49.5}, {"input": [-41.5, 50.0], "expected": 50.0}, {"input": [-41.5, 50.5], "expected": 50.5}, {"input": [-41.5, 51.0], "expected": 51.0}, {"input": [-41.5, 51.5], "expected": 51.5}, {"input": [-41.5, 52.0], "expected": 52.0}, {"input": [-41.5, 52.5], "expected": 52.5}, {"input": [-41.5, 53.0], "expected": 53.0}, {"input": [-41.5, 53.5], "expected": 53.5}, {"input": [-41.5, 54.0], "expected": 54.0}, {"input": [-41.5, 54.5], "expected": 54.5}, {"input": [-41.5, 55.0], "expected": 55.0}, {"input": [-41.5, 55.5], "expected": 55.5}, {"input": [-41.5, 56.0], "expected": 56.0}, {"input": [-41.5, 56.5], "expected": 56.5}, {"input": [-41.5, 57.0], "expected": 57.0}, {"input": [-41.5, 57.5], "expected": 57.5}, {"input": [-41.5, 58.0], "expected": 58.0}, {"input": [-41.5, 58.5], "expected": 58.5}, {"input": [-41.5, 59.0], "expected": 59.0}, {"input": [-41.5, 59.5], "expected": 59.5}, {"input": [-41.5, 60.0], "expected": 60.0}, {"input": [-41.5, 60.5], "expected": 60.5}, {"input": [-41.5, 61.0], "expected": 61.0}, {"input": [-41.5, 61.5], "expected": 61.5}, {"input": [-41.5, 62.0], "expected": 62.0}, {"input": [-41.5, 62.5], "expected": 62.5}, {"input": [-41.5, 63.0], "expected": 63.0}, {"input": [-41.5, 63.5], "expected": 63.5}, {"input": [-41.5, 64.0], "expected": 64.0}, {"input": [-41.5, 64.5], "expected": 64.5}, {"input": [-41.5, 65.0], "expected": 65.0}, {"input": [-41.5, 65.5], "expected": 65.5}, {"input": [-41.5, 66.0], "expected": 66.0}, {"input": [-41.5, 66.5], "expected": 66.5}, {"input": [-41.5, 67.0], "expected": 67.0}, {"input": [-41.5, 67.5], "expected": 67.5}, {"input": [-41.5, 68.0], "expected": 68.0}, {"input": [-41.5, 68.5], "expected": 68.5}, {"input": [-41.5, 69.0], "expected": 69.0}, {"input": [-41.5, 69.5], "expected": 69.5}, {"input": [-41.5, 70.0], "expected": 70.0}, {"input": [-41.5, 70.5], "expected": 70.5}, {"input": [-41.5, 71.0], "expected": 71.0}, {"input": [-41.5, 71.5], "expected": 71.5}, {"input": [-41.5, 72.0], "expected": 72.0}, {"input": [-41.5, 72.5], "expected": 72.5}, {"input": [-41.5, 73.0], "expected": 73.0}, {"input": [-41.5, 73.5], "expected": 73.5}, {"input": [-41.5, 74.0], "expected": 74.0}, {"input": [-41.5, 74.5], "expected": 74.5}, {"input": [-41.5, 75.0], "expected": 75.0}, {"input": [-41.5, 75.5], "expected": 75.5}, {"input": [-41.5, 76.0], "expected": 76.0}, {"input": [-41.5, 76.5], "expected": 76.5}, {"input": [-41.5, 77.0], "expected": 77.0}, {"input": [-41.5, 77.5], "expected": 77.5}, {"input": [-41.5, 78.0], "expected": 78.0}, {"input": [-41.5, 78.5], "expected": 78.5}, {"input": [-41.5, 79.0], "expected": 79.0}, {"input": [-41.5, 79.5], "expected": 79.5}, {"input": [-41.5, 80.0], "expected": 80.0}, {"input": [-41.5, 80.5], "expected": 80.5}, {"input": [-41.5, 81.0], "expected": 81.0}, {"input": [-41.5, 81.5], "expected": 81.5}, {"input": [-41.5, 82.0], "expected": 82.0}, {"input": [-41.5, 82.5], "expected": 82.5}, {"input": [-41.5, 83.0], "expected": 83.0}, {"input": [-41.5, 83.5], "expected": 83.5}, {"input": [-41.5, 84.0], "expected": 84.0}, {"input": [-41.5, 84.5], "expected": 84.5}, {"input": [-41.5, 85.0], "expected": 85.0}, {"input": [-41.5, 85.5], "expected": 85.5}, {"input": [-41.5, 86.0], "expected": 86.0}, {"input": [-41.5, 86.5], "expected": 86.5}, {"input": [-41.5, 87.0], "expected": 87.0}, {"input": [-41.5, 87.5], "expected": 87.5}, {"input": [-41.5, 88.0], "expected": 88.0}, {"input": [-41.5, 88.5], "expected": 88.5}, {"input": [-41.5, 89.0], "expected": 89.0}, {"input": [-41.5, 89.5], "expected": 89.5}, {"input": [-41.5, 90.0], "expected": 90.0}, {"input": [-41.5, 90.5], "expected": 90.5}, {"input": [-41.5, 91.0], "expected": 91.0}, {"input": [-41.5, 91.5], "expected": 91.5}, {"input": [-41.5, 92.0], "expected": 92.0}, {"input": [-41.5, 92.5], "expected": 92.5}, {"input": [-41.5, 93.0], "expected": 93.0}, {"input": [-41.5, 93.5], "expected": 93.5}, {"input": [-41.5, 94.0], "expected": 94.0}, {"input": [-41.5, 94.5], "expected": 94.5}, {"input": [-41.5, 95.0], "expected": 95.0}, {"input": [-41.5, 95.5], "expected": 95.5}, {"input": [-41.5, 96.0], "expected": 96.0}, {"input": [-41.5, 96.5], "expected": 96.5}, {"input": [-41.5, 97.0], "expected": 97.0}, {"input": [-41.5, 97.5], "expected": 97.5}, {"input": [-41.5, 98.0], "expected": 98.0}, {"input": [-41.5, 98.5], "expected": 98.5}, {"input": [-41.5, 99.0], "expected": 99.0}, {"input": [-41.5, 99.5], "expected": 99.5}, {"input": [-41.0, -100.0], "expected": -41.0}, {"input": [-41.0, -99.5], "expected": -41.0}, {"input": [-41.0, -99.0], "expected": -41.0}, {"input": [-41.0, -98.5], "expected": -41.0}, {"input": [-41.0, -98.0], "expected": -41.0}, {"input": [-41.0, -97.5], "expected": -41.0}, {"input": [-41.0, -97.0], "expected": -41.0}, {"input": [-41.0, -96.5], "expected": -41.0}, {"input": [-41.0, -96.0], "expected": -41.0}, {"input": [-41.0, -95.5], "expected": -41.0}, {"input": [-41.0, -95.0], "expected": -41.0}, {"input": [-41.0, -94.5], "expected": -41.0}, {"input": [-41.0, -94.0], "expected": -41.0}, {"input": [-41.0, -93.5], "expected": -41.0}, {"input": [-41.0, -93.0], "expected": -41.0}, {"input": [-41.0, -92.5], "expected": -41.0}, {"input": [-41.0, -92.0], "expected": -41.0}, {"input": [-41.0, -91.5], "expected": -41.0}, {"input": [-41.0, -91.0], "expected": -41.0}, {"input": [-41.0, -90.5], "expected": -41.0}, {"input": [-41.0, -90.0], "expected": -41.0}, {"input": [-41.0, -89.5], "expected": -41.0}, {"input": [-41.0, -89.0], "expected": -41.0}, {"input": [-41.0, -88.5], "expected": -41.0}, {"input": [-41.0, -88.0], "expected": -41.0}, {"input": [-41.0, -87.5], "expected": -41.0}, {"input": [-41.0, -87.0], "expected": -41.0}, {"input": [-41.0, -86.5], "expected": -41.0}, {"input": [-41.0, -86.0], "expected": -41.0}, {"input": [-41.0, -85.5], "expected": -41.0}, {"input": [-41.0, -85.0], "expected": -41.0}, {"input": [-41.0, -84.5], "expected": -41.0}, {"input": [-41.0, -84.0], "expected": -41.0}, {"input": [-41.0, -83.5], "expected": -41.0}, {"input": [-41.0, -83.0], "expected": -41.0}, {"input": [-41.0, -82.5], "expected": -41.0}, {"input": [-41.0, -82.0], "expected": -41.0}, {"input": [-41.0, -81.5], "expected": -41.0}, {"input": [-41.0, -81.0], "expected": -41.0}, {"input": [-41.0, -80.5], "expected": -41.0}, {"input": [-41.0, -80.0], "expected": -41.0}, {"input": [-41.0, -79.5], "expected": -41.0}, {"input": [-41.0, -79.0], "expected": -41.0}, {"input": [-41.0, -78.5], "expected": -41.0}, {"input": [-41.0, -78.0], "expected": -41.0}, {"input": [-41.0, -77.5], "expected": -41.0}, {"input": [-41.0, -77.0], "expected": -41.0}, {"input": [-41.0, -76.5], "expected": -41.0}, {"input": [-41.0, -76.0], "expected": -41.0}, {"input": [-41.0, -75.5], "expected": -41.0}, {"input": [-41.0, -75.0], "expected": -41.0}, {"input": [-41.0, -74.5], "expected": -41.0}, {"input": [-41.0, -74.0], "expected": -40.99999999999999}, {"input": [-41.0, -73.5], "expected": -40.99999999999999}, {"input": [-41.0, -73.0], "expected": -40.999999999999986}, {"input": [-41.0, -72.5], "expected": -40.99999999999998}, {"input": [-41.0, -72.0], "expected": -40.999999999999964}, {"input": [-41.0, -71.5], "expected": -40.99999999999994}, {"input": [-41.0, -71.0], "expected": -40.99999999999991}, {"input": [-41.0, -70.5], "expected": -40.999999999999844}, {"input": [-41.0, -70.0], "expected": -40.999999999999744}, {"input": [-41.0, -69.5], "expected": -40.99999999999958}, {"input": [-41.0, -69.0], "expected": -40.99999999999931}, {"input": [-41.0, -68.5], "expected": -40.99999999999886}, {"input": [-41.0, -68.0], "expected": -40.99999999999812}, {"input": [-41.0, -67.5], "expected": -40.9999999999969}, {"input": [-41.0, -67.0], "expected": -40.99999999999489}, {"input": [-41.0, -66.5], "expected": -40.99999999999158}, {"input": [-41.0, -66.0], "expected": -40.99999999998611}, {"input": [-41.0, -65.5], "expected": -40.9999999999771}, {"input": [-41.0, -65.0], "expected": -40.99999999996225}, {"input": [-41.0, -64.5], "expected": -40.99999999993776}, {"input": [-41.0, -64.0], "expected": -40.99999999989738}, {"input": [-41.0, -63.5], "expected": -40.99999999983081}, {"input": [-41.0, -63.0], "expected": -40.999999999721055}, {"input": [-41.0, -62.5], "expected": -40.999999999540094}, {"input": [-41.0, -62.0], "expected": -40.999999999241744}, {"input": [-41.0, -61.5], "expected": -40.99999999874985}, {"input": [-41.0, -61.0], "expected": -40.99999999793884}, {"input": [-41.0, -60.5], "expected": -40.99999999660173}, {"input": [-41.0, -60.0], "expected": -40.99999999439721}, {"input": [-41.0, -59.5], "expected": -40.999999990762554}, {"input": [-41.0, -59.0], "expected": -40.99999998477002}, {"input": [-41.0, -58.5], "expected": -40.99999997489001}, {"input": [-41.0, -58.0], "expected": -40.999999958600625}, {"input": [-41.0, -57.5], "expected": -40.99999993174397}, {"input": [-41.0, -57.0], "expected": -40.99999988746483}, {"input": [-41.0, -56.5], "expected": -40.99999981446088}, {"input": [-41.0, -56.0], "expected": -40.999999694097724}, {"input": [-41.0, -55.5], "expected": -40.99999949565247}, {"input": [-41.0, -55.0], "expected": -40.999999168471625}, {"input": [-41.0, -54.5], "expected": -40.999998629041855}, {"input": [-41.0, -54.0], "expected": -40.99999773967315}, {"input": [-41.0, -53.5], "expected": -40.99999627335377}, {"input": [-41.0, -53.0], "expected": -40.99999385580652}, {"input": [-41.0, -52.5], "expected": -40.99998986995771}, {"input": [-41.0, -52.0], "expected": -40.99998329843868}, {"input": [-41.0, -51.5], "expected": -40.99997246392977}, {"input": [-41.0, -51.0], "expected": -40.99995460110078}, {"input": [-41.0, -50.5], "expected": -40.99992515097137}, {"input": [-41.0, -50.0], "expected": -40.99987659781028}, {"input": [-41.0, -49.5], "expected": -40.99979655232787}, {"input": [-41.0, -49.0], "expected": -40.9996645936271}, {"input": [-41.0, -48.5], "expected": -40.99944706852464}, {"input": [-41.0, -48.0], "expected": -40.99908853354623}, {"input": [-41.0, -47.5], "expected": -40.99849768984024}, {"input": [-41.0, -47.0], "expected": -40.99752431486227}, {"input": [-41.0, -46.5], "expected": -40.99592155672943}, {"input": [-41.0, -46.0], "expected": -40.99328465151088}, {"input": [-41.0, -45.5], "expected": -40.9889522551514}, {"input": [-41.0, -45.0], "expected": -40.98185007208219}, {"input": [-41.0, -44.5], "expected": -40.97024958172738}, {"input": [-41.0, -44.0], "expected": -40.951412648426256}, {"input": [-41.0, -43.5], "expected": -40.92111026570745}, {"input": [-41.0, -43.0], "expected": -40.87307198895703}, {"input": [-41.0, -42.5], "expected": -40.79858672201725}, {"input": [-41.0, -42.0], "expected": -40.68673831248178}, {"input": [-41.0, -41.5], "expected": -40.52592301581989}, {"input": [-41.0, -41.0], "expected": -40.30685281944005}, {"input": [-41.0, -40.5], "expected": -40.02592301581989}, {"input": [-41.0, -40.0], "expected": -39.68673831248178}, {"input": [-41.0, -39.5], "expected": -39.29858672201725}, {"input": [-41.0, -39.0], "expected": -38.87307198895703}, {"input": [-41.0, -38.5], "expected": -38.42111026570745}, {"input": [-41.0, -38.0], "expected": -37.951412648426256}, {"input": [-41.0, -37.5], "expected": -37.47024958172738}, {"input": [-41.0, -37.0], "expected": -36.98185007208219}, {"input": [-41.0, -36.5], "expected": -36.4889522551514}, {"input": [-41.0, -36.0], "expected": -35.99328465151088}, {"input": [-41.0, -35.5], "expected": -35.49592155672943}, {"input": [-41.0, -35.0], "expected": -34.99752431486227}, {"input": [-41.0, -34.5], "expected": -34.49849768984024}, {"input": [-41.0, -34.0], "expected": -33.99908853354623}, {"input": [-41.0, -33.5], "expected": -33.49944706852464}, {"input": [-41.0, -33.0], "expected": -32.9996645936271}, {"input": [-41.0, -32.5], "expected": -32.49979655232787}, {"input": [-41.0, -32.0], "expected": -31.999876597810278}, {"input": [-41.0, -31.5], "expected": -31.49992515097137}, {"input": [-41.0, -31.0], "expected": -30.999954601100782}, {"input": [-41.0, -30.5], "expected": -30.499972463929772}, {"input": [-41.0, -30.0], "expected": -29.999983298438682}, {"input": [-41.0, -29.5], "expected": -29.49998986995771}, {"input": [-41.0, -29.0], "expected": -28.999993855806522}, {"input": [-41.0, -28.5], "expected": -28.499996273353773}, {"input": [-41.0, -28.0], "expected": -27.999997739673148}, {"input": [-41.0, -27.5], "expected": -27.499998629041855}, {"input": [-41.0, -27.0], "expected": -26.999999168471625}, {"input": [-41.0, -26.5], "expected": -26.499999495652464}, {"input": [-41.0, -26.0], "expected": -25.999999694097728}, {"input": [-41.0, -25.5], "expected": -25.49999981446088}, {"input": [-41.0, -25.0], "expected": -24.99999988746483}, {"input": [-41.0, -24.5], "expected": -24.499999931743968}, {"input": [-41.0, -24.0], "expected": -23.999999958600625}, {"input": [-41.0, -23.5], "expected": -23.49999997489001}, {"input": [-41.0, -23.0], "expected": -22.99999998477002}, {"input": [-41.0, -22.5], "expected": -22.49999999076255}, {"input": [-41.0, -22.0], "expected": -21.999999994397204}, {"input": [-41.0, -21.5], "expected": -21.499999996601733}, {"input": [-41.0, -21.0], "expected": -20.999999997938847}, {"input": [-41.0, -20.5], "expected": -20.499999998749846}, {"input": [-41.0, -20.0], "expected": -19.999999999241744}, {"input": [-41.0, -19.5], "expected": -19.499999999540094}, {"input": [-41.0, -19.0], "expected": -18.99999999972105}, {"input": [-41.0, -18.5], "expected": -18.49999999983081}, {"input": [-41.0, -18.0], "expected": -17.99999999989738}, {"input": [-41.0, -17.5], "expected": -17.49999999993776}, {"input": [-41.0, -17.0], "expected": -16.99999999996225}, {"input": [-41.0, -16.5], "expected": -16.499999999977103}, {"input": [-41.0, -16.0], "expected": -15.999999999986112}, {"input": [-41.0, -15.5], "expected": -15.499999999991577}, {"input": [-41.0, -15.0], "expected": -14.999999999994891}, {"input": [-41.0, -14.5], "expected": -14.499999999996902}, {"input": [-41.0, -14.0], "expected": -13.99999999999812}, {"input": [-41.0, -13.5], "expected": -13.49999999999886}, {"input": [-41.0, -13.0], "expected": -12.999999999999309}, {"input": [-41.0, -12.5], "expected": -12.49999999999958}, {"input": [-41.0, -12.0], "expected": -11.999999999999746}, {"input": [-41.0, -11.5], "expected": -11.499999999999845}, {"input": [-41.0, -11.0], "expected": -10.999999999999906}, {"input": [-41.0, -10.5], "expected": -10.499999999999943}, {"input": [-41.0, -10.0], "expected": -9.999999999999966}, {"input": [-41.0, -9.5], "expected": -9.499999999999979}, {"input": [-41.0, -9.0], "expected": -8.999999999999988}, {"input": [-41.0, -8.5], "expected": -8.499999999999993}, {"input": [-41.0, -8.0], "expected": -7.999999999999996}, {"input": [-41.0, -7.5], "expected": -7.499999999999997}, {"input": [-41.0, -7.0], "expected": -6.999999999999998}, {"input": [-41.0, -6.5], "expected": -6.499999999999999}, {"input": [-41.0, -6.0], "expected": -5.999999999999999}, {"input": [-41.0, -5.5], "expected": -5.5}, {"input": [-41.0, -5.0], "expected": -5.0}, {"input": [-41.0, -4.5], "expected": -4.5}, {"input": [-41.0, -4.0], "expected": -4.0}, {"input": [-41.0, -3.5], "expected": -3.5}, {"input": [-41.0, -3.0], "expected": -3.0}, {"input": [-41.0, -2.5], "expected": -2.5}, {"input": [-41.0, -2.0], "expected": -2.0}, {"input": [-41.0, -1.5], "expected": -1.5}, {"input": [-41.0, -1.0], "expected": -1.0}, {"input": [-41.0, -0.5], "expected": -0.5}, {"input": [-41.0, 0.0], "expected": 1.5628821893349888e-18}, {"input": [-41.0, 0.5], "expected": 0.5}, {"input": [-41.0, 1.0], "expected": 1.0}, {"input": [-41.0, 1.5], "expected": 1.5}, {"input": [-41.0, 2.0], "expected": 2.0}, {"input": [-41.0, 2.5], "expected": 2.5}, {"input": [-41.0, 3.0], "expected": 3.0}, {"input": [-41.0, 3.5], "expected": 3.5}, {"input": [-41.0, 4.0], "expected": 4.0}, {"input": [-41.0, 4.5], "expected": 4.5}, {"input": [-41.0, 5.0], "expected": 5.0}, {"input": [-41.0, 5.5], "expected": 5.5}, {"input": [-41.0, 6.0], "expected": 6.0}, {"input": [-41.0, 6.5], "expected": 6.5}, {"input": [-41.0, 7.0], "expected": 7.0}, {"input": [-41.0, 7.5], "expected": 7.5}, {"input": [-41.0, 8.0], "expected": 8.0}, {"input": [-41.0, 8.5], "expected": 8.5}, {"input": [-41.0, 9.0], "expected": 9.0}, {"input": [-41.0, 9.5], "expected": 9.5}, {"input": [-41.0, 10.0], "expected": 10.0}, {"input": [-41.0, 10.5], "expected": 10.5}, {"input": [-41.0, 11.0], "expected": 11.0}, {"input": [-41.0, 11.5], "expected": 11.5}, {"input": [-41.0, 12.0], "expected": 12.0}, {"input": [-41.0, 12.5], "expected": 12.5}, {"input": [-41.0, 13.0], "expected": 13.0}, {"input": [-41.0, 13.5], "expected": 13.5}, {"input": [-41.0, 14.0], "expected": 14.0}, {"input": [-41.0, 14.5], "expected": 14.5}, {"input": [-41.0, 15.0], "expected": 15.0}, {"input": [-41.0, 15.5], "expected": 15.5}, {"input": [-41.0, 16.0], "expected": 16.0}, {"input": [-41.0, 16.5], "expected": 16.5}, {"input": [-41.0, 17.0], "expected": 17.0}, {"input": [-41.0, 17.5], "expected": 17.5}, {"input": [-41.0, 18.0], "expected": 18.0}, {"input": [-41.0, 18.5], "expected": 18.5}, {"input": [-41.0, 19.0], "expected": 19.0}, {"input": [-41.0, 19.5], "expected": 19.5}, {"input": [-41.0, 20.0], "expected": 20.0}, {"input": [-41.0, 20.5], "expected": 20.5}, {"input": [-41.0, 21.0], "expected": 21.0}, {"input": [-41.0, 21.5], "expected": 21.5}, {"input": [-41.0, 22.0], "expected": 22.0}, {"input": [-41.0, 22.5], "expected": 22.5}, {"input": [-41.0, 23.0], "expected": 23.0}, {"input": [-41.0, 23.5], "expected": 23.5}, {"input": [-41.0, 24.0], "expected": 24.0}, {"input": [-41.0, 24.5], "expected": 24.5}, {"input": [-41.0, 25.0], "expected": 25.0}, {"input": [-41.0, 25.5], "expected": 25.5}, {"input": [-41.0, 26.0], "expected": 26.0}, {"input": [-41.0, 26.5], "expected": 26.5}, {"input": [-41.0, 27.0], "expected": 27.0}, {"input": [-41.0, 27.5], "expected": 27.5}, {"input": [-41.0, 28.0], "expected": 28.0}, {"input": [-41.0, 28.5], "expected": 28.5}, {"input": [-41.0, 29.0], "expected": 29.0}, {"input": [-41.0, 29.5], "expected": 29.5}, {"input": [-41.0, 30.0], "expected": 30.0}, {"input": [-41.0, 30.5], "expected": 30.5}, {"input": [-41.0, 31.0], "expected": 31.0}, {"input": [-41.0, 31.5], "expected": 31.5}, {"input": [-41.0, 32.0], "expected": 32.0}, {"input": [-41.0, 32.5], "expected": 32.5}, {"input": [-41.0, 33.0], "expected": 33.0}, {"input": [-41.0, 33.5], "expected": 33.5}, {"input": [-41.0, 34.0], "expected": 34.0}, {"input": [-41.0, 34.5], "expected": 34.5}, {"input": [-41.0, 35.0], "expected": 35.0}, {"input": [-41.0, 35.5], "expected": 35.5}, {"input": [-41.0, 36.0], "expected": 36.0}, {"input": [-41.0, 36.5], "expected": 36.5}, {"input": [-41.0, 37.0], "expected": 37.0}, {"input": [-41.0, 37.5], "expected": 37.5}, {"input": [-41.0, 38.0], "expected": 38.0}, {"input": [-41.0, 38.5], "expected": 38.5}, {"input": [-41.0, 39.0], "expected": 39.0}, {"input": [-41.0, 39.5], "expected": 39.5}, {"input": [-41.0, 40.0], "expected": 40.0}, {"input": [-41.0, 40.5], "expected": 40.5}, {"input": [-41.0, 41.0], "expected": 41.0}, {"input": [-41.0, 41.5], "expected": 41.5}, {"input": [-41.0, 42.0], "expected": 42.0}, {"input": [-41.0, 42.5], "expected": 42.5}, {"input": [-41.0, 43.0], "expected": 43.0}, {"input": [-41.0, 43.5], "expected": 43.5}, {"input": [-41.0, 44.0], "expected": 44.0}, {"input": [-41.0, 44.5], "expected": 44.5}, {"input": [-41.0, 45.0], "expected": 45.0}, {"input": [-41.0, 45.5], "expected": 45.5}, {"input": [-41.0, 46.0], "expected": 46.0}, {"input": [-41.0, 46.5], "expected": 46.5}, {"input": [-41.0, 47.0], "expected": 47.0}, {"input": [-41.0, 47.5], "expected": 47.5}, {"input": [-41.0, 48.0], "expected": 48.0}, {"input": [-41.0, 48.5], "expected": 48.5}, {"input": [-41.0, 49.0], "expected": 49.0}, {"input": [-41.0, 49.5], "expected": 49.5}, {"input": [-41.0, 50.0], "expected": 50.0}, {"input": [-41.0, 50.5], "expected": 50.5}, {"input": [-41.0, 51.0], "expected": 51.0}, {"input": [-41.0, 51.5], "expected": 51.5}, {"input": [-41.0, 52.0], "expected": 52.0}, {"input": [-41.0, 52.5], "expected": 52.5}, {"input": [-41.0, 53.0], "expected": 53.0}, {"input": [-41.0, 53.5], "expected": 53.5}, {"input": [-41.0, 54.0], "expected": 54.0}, {"input": [-41.0, 54.5], "expected": 54.5}, {"input": [-41.0, 55.0], "expected": 55.0}, {"input": [-41.0, 55.5], "expected": 55.5}, {"input": [-41.0, 56.0], "expected": 56.0}, {"input": [-41.0, 56.5], "expected": 56.5}, {"input": [-41.0, 57.0], "expected": 57.0}, {"input": [-41.0, 57.5], "expected": 57.5}, {"input": [-41.0, 58.0], "expected": 58.0}, {"input": [-41.0, 58.5], "expected": 58.5}, {"input": [-41.0, 59.0], "expected": 59.0}, {"input": [-41.0, 59.5], "expected": 59.5}, {"input": [-41.0, 60.0], "expected": 60.0}, {"input": [-41.0, 60.5], "expected": 60.5}, {"input": [-41.0, 61.0], "expected": 61.0}, {"input": [-41.0, 61.5], "expected": 61.5}, {"input": [-41.0, 62.0], "expected": 62.0}, {"input": [-41.0, 62.5], "expected": 62.5}, {"input": [-41.0, 63.0], "expected": 63.0}, {"input": [-41.0, 63.5], "expected": 63.5}, {"input": [-41.0, 64.0], "expected": 64.0}, {"input": [-41.0, 64.5], "expected": 64.5}, {"input": [-41.0, 65.0], "expected": 65.0}, {"input": [-41.0, 65.5], "expected": 65.5}, {"input": [-41.0, 66.0], "expected": 66.0}, {"input": [-41.0, 66.5], "expected": 66.5}, {"input": [-41.0, 67.0], "expected": 67.0}, {"input": [-41.0, 67.5], "expected": 67.5}, {"input": [-41.0, 68.0], "expected": 68.0}, {"input": [-41.0, 68.5], "expected": 68.5}, {"input": [-41.0, 69.0], "expected": 69.0}, {"input": [-41.0, 69.5], "expected": 69.5}, {"input": [-41.0, 70.0], "expected": 70.0}, {"input": [-41.0, 70.5], "expected": 70.5}, {"input": [-41.0, 71.0], "expected": 71.0}, {"input": [-41.0, 71.5], "expected": 71.5}, {"input": [-41.0, 72.0], "expected": 72.0}, {"input": [-41.0, 72.5], "expected": 72.5}, {"input": [-41.0, 73.0], "expected": 73.0}, {"input": [-41.0, 73.5], "expected": 73.5}, {"input": [-41.0, 74.0], "expected": 74.0}, {"input": [-41.0, 74.5], "expected": 74.5}, {"input": [-41.0, 75.0], "expected": 75.0}, {"input": [-41.0, 75.5], "expected": 75.5}, {"input": [-41.0, 76.0], "expected": 76.0}, {"input": [-41.0, 76.5], "expected": 76.5}, {"input": [-41.0, 77.0], "expected": 77.0}, {"input": [-41.0, 77.5], "expected": 77.5}, {"input": [-41.0, 78.0], "expected": 78.0}, {"input": [-41.0, 78.5], "expected": 78.5}, {"input": [-41.0, 79.0], "expected": 79.0}, {"input": [-41.0, 79.5], "expected": 79.5}, {"input": [-41.0, 80.0], "expected": 80.0}, {"input": [-41.0, 80.5], "expected": 80.5}, {"input": [-41.0, 81.0], "expected": 81.0}, {"input": [-41.0, 81.5], "expected": 81.5}, {"input": [-41.0, 82.0], "expected": 82.0}, {"input": [-41.0, 82.5], "expected": 82.5}, {"input": [-41.0, 83.0], "expected": 83.0}, {"input": [-41.0, 83.5], "expected": 83.5}, {"input": [-41.0, 84.0], "expected": 84.0}, {"input": [-41.0, 84.5], "expected": 84.5}, {"input": [-41.0, 85.0], "expected": 85.0}, {"input": [-41.0, 85.5], "expected": 85.5}, {"input": [-41.0, 86.0], "expected": 86.0}, {"input": [-41.0, 86.5], "expected": 86.5}, {"input": [-41.0, 87.0], "expected": 87.0}, {"input": [-41.0, 87.5], "expected": 87.5}, {"input": [-41.0, 88.0], "expected": 88.0}, {"input": [-41.0, 88.5], "expected": 88.5}, {"input": [-41.0, 89.0], "expected": 89.0}, {"input": [-41.0, 89.5], "expected": 89.5}, {"input": [-41.0, 90.0], "expected": 90.0}, {"input": [-41.0, 90.5], "expected": 90.5}, {"input": [-41.0, 91.0], "expected": 91.0}, {"input": [-41.0, 91.5], "expected": 91.5}, {"input": [-41.0, 92.0], "expected": 92.0}, {"input": [-41.0, 92.5], "expected": 92.5}, {"input": [-41.0, 93.0], "expected": 93.0}, {"input": [-41.0, 93.5], "expected": 93.5}, {"input": [-41.0, 94.0], "expected": 94.0}, {"input": [-41.0, 94.5], "expected": 94.5}, {"input": [-41.0, 95.0], "expected": 95.0}, {"input": [-41.0, 95.5], "expected": 95.5}, {"input": [-41.0, 96.0], "expected": 96.0}, {"input": [-41.0, 96.5], "expected": 96.5}, {"input": [-41.0, 97.0], "expected": 97.0}, {"input": [-41.0, 97.5], "expected": 97.5}, {"input": [-41.0, 98.0], "expected": 98.0}, {"input": [-41.0, 98.5], "expected": 98.5}, {"input": [-41.0, 99.0], "expected": 99.0}, {"input": [-41.0, 99.5], "expected": 99.5}, {"input": [-40.5, -100.0], "expected": -40.5}, {"input": [-40.5, -99.5], "expected": -40.5}, {"input": [-40.5, -99.0], "expected": -40.5}, {"input": [-40.5, -98.5], "expected": -40.5}, {"input": [-40.5, -98.0], "expected": -40.5}, {"input": [-40.5, -97.5], "expected": -40.5}, {"input": [-40.5, -97.0], "expected": -40.5}, {"input": [-40.5, -96.5], "expected": -40.5}, {"input": [-40.5, -96.0], "expected": -40.5}, {"input": [-40.5, -95.5], "expected": -40.5}, {"input": [-40.5, -95.0], "expected": -40.5}, {"input": [-40.5, -94.5], "expected": -40.5}, {"input": [-40.5, -94.0], "expected": -40.5}, {"input": [-40.5, -93.5], "expected": -40.5}, {"input": [-40.5, -93.0], "expected": -40.5}, {"input": [-40.5, -92.5], "expected": -40.5}, {"input": [-40.5, -92.0], "expected": -40.5}, {"input": [-40.5, -91.5], "expected": -40.5}, {"input": [-40.5, -91.0], "expected": -40.5}, {"input": [-40.5, -90.5], "expected": -40.5}, {"input": [-40.5, -90.0], "expected": -40.5}, {"input": [-40.5, -89.5], "expected": -40.5}, {"input": [-40.5, -89.0], "expected": -40.5}, {"input": [-40.5, -88.5], "expected": -40.5}, {"input": [-40.5, -88.0], "expected": -40.5}, {"input": [-40.5, -87.5], "expected": -40.5}, {"input": [-40.5, -87.0], "expected": -40.5}, {"input": [-40.5, -86.5], "expected": -40.5}, {"input": [-40.5, -86.0], "expected": -40.5}, {"input": [-40.5, -85.5], "expected": -40.5}, {"input": [-40.5, -85.0], "expected": -40.5}, {"input": [-40.5, -84.5], "expected": -40.5}, {"input": [-40.5, -84.0], "expected": -40.5}, {"input": [-40.5, -83.5], "expected": -40.5}, {"input": [-40.5, -83.0], "expected": -40.5}, {"input": [-40.5, -82.5], "expected": -40.5}, {"input": [-40.5, -82.0], "expected": -40.5}, {"input": [-40.5, -81.5], "expected": -40.5}, {"input": [-40.5, -81.0], "expected": -40.5}, {"input": [-40.5, -80.5], "expected": -40.5}, {"input": [-40.5, -80.0], "expected": -40.5}, {"input": [-40.5, -79.5], "expected": -40.5}, {"input": [-40.5, -79.0], "expected": -40.5}, {"input": [-40.5, -78.5], "expected": -40.5}, {"input": [-40.5, -78.0], "expected": -40.5}, {"input": [-40.5, -77.5], "expected": -40.5}, {"input": [-40.5, -77.0], "expected": -40.5}, {"input": [-40.5, -76.5], "expected": -40.5}, {"input": [-40.5, -76.0], "expected": -40.5}, {"input": [-40.5, -75.5], "expected": -40.5}, {"input": [-40.5, -75.0], "expected": -40.5}, {"input": [-40.5, -74.5], "expected": -40.5}, {"input": [-40.5, -74.0], "expected": -40.5}, {"input": [-40.5, -73.5], "expected": -40.49999999999999}, {"input": [-40.5, -73.0], "expected": -40.49999999999999}, {"input": [-40.5, -72.5], "expected": -40.499999999999986}, {"input": [-40.5, -72.0], "expected": -40.49999999999998}, {"input": [-40.5, -71.5], "expected": -40.499999999999964}, {"input": [-40.5, -71.0], "expected": -40.49999999999994}, {"input": [-40.5, -70.5], "expected": -40.49999999999991}, {"input": [-40.5, -70.0], "expected": -40.499999999999844}, {"input": [-40.5, -69.5], "expected": -40.499999999999744}, {"input": [-40.5, -69.0], "expected": -40.49999999999958}, {"input": [-40.5, -68.5], "expected": -40.49999999999931}, {"input": [-40.5, -68.0], "expected": -40.49999999999886}, {"input": [-40.5, -67.5], "expected": -40.49999999999812}, {"input": [-40.5, -67.0], "expected": -40.4999999999969}, {"input": [-40.5, -66.5], "expected": -40.49999999999489}, {"input": [-40.5, -66.0], "expected": -40.49999999999158}, {"input": [-40.5, -65.5], "expected": -40.49999999998611}, {"input": [-40.5, -65.0], "expected": -40.4999999999771}, {"input": [-40.5, -64.5], "expected": -40.49999999996225}, {"input": [-40.5, -64.0], "expected": -40.49999999993776}, {"input": [-40.5, -63.5], "expected": -40.49999999989738}, {"input": [-40.5, -63.0], "expected": -40.49999999983081}, {"input": [-40.5, -62.5], "expected": -40.499999999721055}, {"input": [-40.5, -62.0], "expected": -40.499999999540094}, {"input": [-40.5, -61.5], "expected": -40.499999999241744}, {"input": [-40.5, -61.0], "expected": -40.49999999874985}, {"input": [-40.5, -60.5], "expected": -40.49999999793884}, {"input": [-40.5, -60.0], "expected": -40.49999999660173}, {"input": [-40.5, -59.5], "expected": -40.49999999439721}, {"input": [-40.5, -59.0], "expected": -40.499999990762554}, {"input": [-40.5, -58.5], "expected": -40.49999998477002}, {"input": [-40.5, -58.0], "expected": -40.49999997489001}, {"input": [-40.5, -57.5], "expected": -40.499999958600625}, {"input": [-40.5, -57.0], "expected": -40.49999993174397}, {"input": [-40.5, -56.5], "expected": -40.49999988746483}, {"input": [-40.5, -56.0], "expected": -40.49999981446088}, {"input": [-40.5, -55.5], "expected": -40.499999694097724}, {"input": [-40.5, -55.0], "expected": -40.49999949565247}, {"input": [-40.5, -54.5], "expected": -40.499999168471625}, {"input": [-40.5, -54.0], "expected": -40.499998629041855}, {"input": [-40.5, -53.5], "expected": -40.49999773967315}, {"input": [-40.5, -53.0], "expected": -40.49999627335377}, {"input": [-40.5, -52.5], "expected": -40.49999385580652}, {"input": [-40.5, -52.0], "expected": -40.49998986995771}, {"input": [-40.5, -51.5], "expected": -40.49998329843868}, {"input": [-40.5, -51.0], "expected": -40.49997246392977}, {"input": [-40.5, -50.5], "expected": -40.49995460110078}, {"input": [-40.5, -50.0], "expected": -40.49992515097137}, {"input": [-40.5, -49.5], "expected": -40.49987659781028}, {"input": [-40.5, -49.0], "expected": -40.49979655232787}, {"input": [-40.5, -48.5], "expected": -40.4996645936271}, {"input": [-40.5, -48.0], "expected": -40.49944706852464}, {"input": [-40.5, -47.5], "expected": -40.49908853354623}, {"input": [-40.5, -47.0], "expected": -40.49849768984024}, {"input": [-40.5, -46.5], "expected": -40.49752431486227}, {"input": [-40.5, -46.0], "expected": -40.49592155672943}, {"input": [-40.5, -45.5], "expected": -40.49328465151088}, {"input": [-40.5, -45.0], "expected": -40.4889522551514}, {"input": [-40.5, -44.5], "expected": -40.48185007208219}, {"input": [-40.5, -44.0], "expected": -40.47024958172738}, {"input": [-40.5, -43.5], "expected": -40.451412648426256}, {"input": [-40.5, -43.0], "expected": -40.42111026570745}, {"input": [-40.5, -42.5], "expected": -40.37307198895703}, {"input": [-40.5, -42.0], "expected": -40.29858672201725}, {"input": [-40.5, -41.5], "expected": -40.18673831248178}, {"input": [-40.5, -41.0], "expected": -40.02592301581989}, {"input": [-40.5, -40.5], "expected": -39.80685281944005}, {"input": [-40.5, -40.0], "expected": -39.52592301581989}, {"input": [-40.5, -39.5], "expected": -39.18673831248178}, {"input": [-40.5, -39.0], "expected": -38.79858672201725}, {"input": [-40.5, -38.5], "expected": -38.37307198895703}, {"input": [-40.5, -38.0], "expected": -37.92111026570745}, {"input": [-40.5, -37.5], "expected": -37.451412648426256}, {"input": [-40.5, -37.0], "expected": -36.97024958172738}, {"input": [-40.5, -36.5], "expected": -36.48185007208219}, {"input": [-40.5, -36.0], "expected": -35.9889522551514}, {"input": [-40.5, -35.5], "expected": -35.49328465151088}, {"input": [-40.5, -35.0], "expected": -34.99592155672943}, {"input": [-40.5, -34.5], "expected": -34.49752431486227}, {"input": [-40.5, -34.0], "expected": -33.99849768984024}, {"input": [-40.5, -33.5], "expected": -33.49908853354623}, {"input": [-40.5, -33.0], "expected": -32.99944706852464}, {"input": [-40.5, -32.5], "expected": -32.4996645936271}, {"input": [-40.5, -32.0], "expected": -31.999796552327872}, {"input": [-40.5, -31.5], "expected": -31.499876597810278}, {"input": [-40.5, -31.0], "expected": -30.99992515097137}, {"input": [-40.5, -30.5], "expected": -30.499954601100782}, {"input": [-40.5, -30.0], "expected": -29.999972463929772}, {"input": [-40.5, -29.5], "expected": -29.499983298438682}, {"input": [-40.5, -29.0], "expected": -28.99998986995771}, {"input": [-40.5, -28.5], "expected": -28.499993855806522}, {"input": [-40.5, -28.0], "expected": -27.999996273353773}, {"input": [-40.5, -27.5], "expected": -27.499997739673148}, {"input": [-40.5, -27.0], "expected": -26.999998629041855}, {"input": [-40.5, -26.5], "expected": -26.499999168471625}, {"input": [-40.5, -26.0], "expected": -25.999999495652464}, {"input": [-40.5, -25.5], "expected": -25.499999694097728}, {"input": [-40.5, -25.0], "expected": -24.99999981446088}, {"input": [-40.5, -24.5], "expected": -24.49999988746483}, {"input": [-40.5, -24.0], "expected": -23.999999931743968}, {"input": [-40.5, -23.5], "expected": -23.499999958600625}, {"input": [-40.5, -23.0], "expected": -22.99999997489001}, {"input": [-40.5, -22.5], "expected": -22.49999998477002}, {"input": [-40.5, -22.0], "expected": -21.99999999076255}, {"input": [-40.5, -21.5], "expected": -21.499999994397204}, {"input": [-40.5, -21.0], "expected": -20.999999996601733}, {"input": [-40.5, -20.5], "expected": -20.499999997938847}, {"input": [-40.5, -20.0], "expected": -19.999999998749846}, {"input": [-40.5, -19.5], "expected": -19.499999999241744}, {"input": [-40.5, -19.0], "expected": -18.999999999540094}, {"input": [-40.5, -18.5], "expected": -18.49999999972105}, {"input": [-40.5, -18.0], "expected": -17.99999999983081}, {"input": [-40.5, -17.5], "expected": -17.49999999989738}, {"input": [-40.5, -17.0], "expected": -16.99999999993776}, {"input": [-40.5, -16.5], "expected": -16.49999999996225}, {"input": [-40.5, -16.0], "expected": -15.999999999977103}, {"input": [-40.5, -15.5], "expected": -15.499999999986112}, {"input": [-40.5, -15.0], "expected": -14.999999999991577}, {"input": [-40.5, -14.5], "expected": -14.499999999994891}, {"input": [-40.5, -14.0], "expected": -13.999999999996902}, {"input": [-40.5, -13.5], "expected": -13.49999999999812}, {"input": [-40.5, -13.0], "expected": -12.99999999999886}, {"input": [-40.5, -12.5], "expected": -12.499999999999309}, {"input": [-40.5, -12.0], "expected": -11.99999999999958}, {"input": [-40.5, -11.5], "expected": -11.499999999999746}, {"input": [-40.5, -11.0], "expected": -10.999999999999845}, {"input": [-40.5, -10.5], "expected": -10.499999999999906}, {"input": [-40.5, -10.0], "expected": -9.999999999999943}, {"input": [-40.5, -9.5], "expected": -9.499999999999966}, {"input": [-40.5, -9.0], "expected": -8.999999999999979}, {"input": [-40.5, -8.5], "expected": -8.499999999999988}, {"input": [-40.5, -8.0], "expected": -7.999999999999992}, {"input": [-40.5, -7.5], "expected": -7.499999999999996}, {"input": [-40.5, -7.0], "expected": -6.999999999999997}, {"input": [-40.5, -6.5], "expected": -6.499999999999998}, {"input": [-40.5, -6.0], "expected": -5.999999999999999}, {"input": [-40.5, -5.5], "expected": -5.499999999999999}, {"input": [-40.5, -5.0], "expected": -5.0}, {"input": [-40.5, -4.5], "expected": -4.5}, {"input": [-40.5, -4.0], "expected": -4.0}, {"input": [-40.5, -3.5], "expected": -3.5}, {"input": [-40.5, -3.0], "expected": -3.0}, {"input": [-40.5, -2.5], "expected": -2.5}, {"input": [-40.5, -2.0], "expected": -2.0}, {"input": [-40.5, -1.5], "expected": -1.5}, {"input": [-40.5, -1.0], "expected": -1.0}, {"input": [-40.5, -0.5], "expected": -0.5}, {"input": [-40.5, 0.0], "expected": 2.576757109154981e-18}, {"input": [-40.5, 0.5], "expected": 0.5}, {"input": [-40.5, 1.0], "expected": 1.0}, {"input": [-40.5, 1.5], "expected": 1.5}, {"input": [-40.5, 2.0], "expected": 2.0}, {"input": [-40.5, 2.5], "expected": 2.5}, {"input": [-40.5, 3.0], "expected": 3.0}, {"input": [-40.5, 3.5], "expected": 3.5}, {"input": [-40.5, 4.0], "expected": 4.0}, {"input": [-40.5, 4.5], "expected": 4.5}, {"input": [-40.5, 5.0], "expected": 5.0}, {"input": [-40.5, 5.5], "expected": 5.5}, {"input": [-40.5, 6.0], "expected": 6.0}, {"input": [-40.5, 6.5], "expected": 6.5}, {"input": [-40.5, 7.0], "expected": 7.0}, {"input": [-40.5, 7.5], "expected": 7.5}, {"input": [-40.5, 8.0], "expected": 8.0}, {"input": [-40.5, 8.5], "expected": 8.5}, {"input": [-40.5, 9.0], "expected": 9.0}, {"input": [-40.5, 9.5], "expected": 9.5}, {"input": [-40.5, 10.0], "expected": 10.0}, {"input": [-40.5, 10.5], "expected": 10.5}, {"input": [-40.5, 11.0], "expected": 11.0}, {"input": [-40.5, 11.5], "expected": 11.5}, {"input": [-40.5, 12.0], "expected": 12.0}, {"input": [-40.5, 12.5], "expected": 12.5}, {"input": [-40.5, 13.0], "expected": 13.0}, {"input": [-40.5, 13.5], "expected": 13.5}, {"input": [-40.5, 14.0], "expected": 14.0}, {"input": [-40.5, 14.5], "expected": 14.5}, {"input": [-40.5, 15.0], "expected": 15.0}, {"input": [-40.5, 15.5], "expected": 15.5}, {"input": [-40.5, 16.0], "expected": 16.0}, {"input": [-40.5, 16.5], "expected": 16.5}, {"input": [-40.5, 17.0], "expected": 17.0}, {"input": [-40.5, 17.5], "expected": 17.5}, {"input": [-40.5, 18.0], "expected": 18.0}, {"input": [-40.5, 18.5], "expected": 18.5}, {"input": [-40.5, 19.0], "expected": 19.0}, {"input": [-40.5, 19.5], "expected": 19.5}, {"input": [-40.5, 20.0], "expected": 20.0}, {"input": [-40.5, 20.5], "expected": 20.5}, {"input": [-40.5, 21.0], "expected": 21.0}, {"input": [-40.5, 21.5], "expected": 21.5}, {"input": [-40.5, 22.0], "expected": 22.0}, {"input": [-40.5, 22.5], "expected": 22.5}, {"input": [-40.5, 23.0], "expected": 23.0}, {"input": [-40.5, 23.5], "expected": 23.5}, {"input": [-40.5, 24.0], "expected": 24.0}, {"input": [-40.5, 24.5], "expected": 24.5}, {"input": [-40.5, 25.0], "expected": 25.0}, {"input": [-40.5, 25.5], "expected": 25.5}, {"input": [-40.5, 26.0], "expected": 26.0}, {"input": [-40.5, 26.5], "expected": 26.5}, {"input": [-40.5, 27.0], "expected": 27.0}, {"input": [-40.5, 27.5], "expected": 27.5}, {"input": [-40.5, 28.0], "expected": 28.0}, {"input": [-40.5, 28.5], "expected": 28.5}, {"input": [-40.5, 29.0], "expected": 29.0}, {"input": [-40.5, 29.5], "expected": 29.5}, {"input": [-40.5, 30.0], "expected": 30.0}, {"input": [-40.5, 30.5], "expected": 30.5}, {"input": [-40.5, 31.0], "expected": 31.0}, {"input": [-40.5, 31.5], "expected": 31.5}, {"input": [-40.5, 32.0], "expected": 32.0}, {"input": [-40.5, 32.5], "expected": 32.5}, {"input": [-40.5, 33.0], "expected": 33.0}, {"input": [-40.5, 33.5], "expected": 33.5}, {"input": [-40.5, 34.0], "expected": 34.0}, {"input": [-40.5, 34.5], "expected": 34.5}, {"input": [-40.5, 35.0], "expected": 35.0}, {"input": [-40.5, 35.5], "expected": 35.5}, {"input": [-40.5, 36.0], "expected": 36.0}, {"input": [-40.5, 36.5], "expected": 36.5}, {"input": [-40.5, 37.0], "expected": 37.0}, {"input": [-40.5, 37.5], "expected": 37.5}, {"input": [-40.5, 38.0], "expected": 38.0}, {"input": [-40.5, 38.5], "expected": 38.5}, {"input": [-40.5, 39.0], "expected": 39.0}, {"input": [-40.5, 39.5], "expected": 39.5}, {"input": [-40.5, 40.0], "expected": 40.0}, {"input": [-40.5, 40.5], "expected": 40.5}, {"input": [-40.5, 41.0], "expected": 41.0}, {"input": [-40.5, 41.5], "expected": 41.5}, {"input": [-40.5, 42.0], "expected": 42.0}, {"input": [-40.5, 42.5], "expected": 42.5}, {"input": [-40.5, 43.0], "expected": 43.0}, {"input": [-40.5, 43.5], "expected": 43.5}, {"input": [-40.5, 44.0], "expected": 44.0}, {"input": [-40.5, 44.5], "expected": 44.5}, {"input": [-40.5, 45.0], "expected": 45.0}, {"input": [-40.5, 45.5], "expected": 45.5}, {"input": [-40.5, 46.0], "expected": 46.0}, {"input": [-40.5, 46.5], "expected": 46.5}, {"input": [-40.5, 47.0], "expected": 47.0}, {"input": [-40.5, 47.5], "expected": 47.5}, {"input": [-40.5, 48.0], "expected": 48.0}, {"input": [-40.5, 48.5], "expected": 48.5}, {"input": [-40.5, 49.0], "expected": 49.0}, {"input": [-40.5, 49.5], "expected": 49.5}, {"input": [-40.5, 50.0], "expected": 50.0}, {"input": [-40.5, 50.5], "expected": 50.5}, {"input": [-40.5, 51.0], "expected": 51.0}, {"input": [-40.5, 51.5], "expected": 51.5}, {"input": [-40.5, 52.0], "expected": 52.0}, {"input": [-40.5, 52.5], "expected": 52.5}, {"input": [-40.5, 53.0], "expected": 53.0}, {"input": [-40.5, 53.5], "expected": 53.5}, {"input": [-40.5, 54.0], "expected": 54.0}, {"input": [-40.5, 54.5], "expected": 54.5}, {"input": [-40.5, 55.0], "expected": 55.0}, {"input": [-40.5, 55.5], "expected": 55.5}, {"input": [-40.5, 56.0], "expected": 56.0}, {"input": [-40.5, 56.5], "expected": 56.5}, {"input": [-40.5, 57.0], "expected": 57.0}, {"input": [-40.5, 57.5], "expected": 57.5}, {"input": [-40.5, 58.0], "expected": 58.0}, {"input": [-40.5, 58.5], "expected": 58.5}, {"input": [-40.5, 59.0], "expected": 59.0}, {"input": [-40.5, 59.5], "expected": 59.5}, {"input": [-40.5, 60.0], "expected": 60.0}, {"input": [-40.5, 60.5], "expected": 60.5}, {"input": [-40.5, 61.0], "expected": 61.0}, {"input": [-40.5, 61.5], "expected": 61.5}, {"input": [-40.5, 62.0], "expected": 62.0}, {"input": [-40.5, 62.5], "expected": 62.5}, {"input": [-40.5, 63.0], "expected": 63.0}, {"input": [-40.5, 63.5], "expected": 63.5}, {"input": [-40.5, 64.0], "expected": 64.0}, {"input": [-40.5, 64.5], "expected": 64.5}, {"input": [-40.5, 65.0], "expected": 65.0}, {"input": [-40.5, 65.5], "expected": 65.5}, {"input": [-40.5, 66.0], "expected": 66.0}, {"input": [-40.5, 66.5], "expected": 66.5}, {"input": [-40.5, 67.0], "expected": 67.0}, {"input": [-40.5, 67.5], "expected": 67.5}, {"input": [-40.5, 68.0], "expected": 68.0}, {"input": [-40.5, 68.5], "expected": 68.5}, {"input": [-40.5, 69.0], "expected": 69.0}, {"input": [-40.5, 69.5], "expected": 69.5}, {"input": [-40.5, 70.0], "expected": 70.0}, {"input": [-40.5, 70.5], "expected": 70.5}, {"input": [-40.5, 71.0], "expected": 71.0}, {"input": [-40.5, 71.5], "expected": 71.5}, {"input": [-40.5, 72.0], "expected": 72.0}, {"input": [-40.5, 72.5], "expected": 72.5}, {"input": [-40.5, 73.0], "expected": 73.0}, {"input": [-40.5, 73.5], "expected": 73.5}, {"input": [-40.5, 74.0], "expected": 74.0}, {"input": [-40.5, 74.5], "expected": 74.5}, {"input": [-40.5, 75.0], "expected": 75.0}, {"input": [-40.5, 75.5], "expected": 75.5}, {"input": [-40.5, 76.0], "expected": 76.0}, {"input": [-40.5, 76.5], "expected": 76.5}, {"input": [-40.5, 77.0], "expected": 77.0}, {"input": [-40.5, 77.5], "expected": 77.5}, {"input": [-40.5, 78.0], "expected": 78.0}, {"input": [-40.5, 78.5], "expected": 78.5}, {"input": [-40.5, 79.0], "expected": 79.0}, {"input": [-40.5, 79.5], "expected": 79.5}, {"input": [-40.5, 80.0], "expected": 80.0}, {"input": [-40.5, 80.5], "expected": 80.5}, {"input": [-40.5, 81.0], "expected": 81.0}, {"input": [-40.5, 81.5], "expected": 81.5}, {"input": [-40.5, 82.0], "expected": 82.0}, {"input": [-40.5, 82.5], "expected": 82.5}, {"input": [-40.5, 83.0], "expected": 83.0}, {"input": [-40.5, 83.5], "expected": 83.5}, {"input": [-40.5, 84.0], "expected": 84.0}, {"input": [-40.5, 84.5], "expected": 84.5}, {"input": [-40.5, 85.0], "expected": 85.0}, {"input": [-40.5, 85.5], "expected": 85.5}, {"input": [-40.5, 86.0], "expected": 86.0}, {"input": [-40.5, 86.5], "expected": 86.5}, {"input": [-40.5, 87.0], "expected": 87.0}, {"input": [-40.5, 87.5], "expected": 87.5}, {"input": [-40.5, 88.0], "expected": 88.0}, {"input": [-40.5, 88.5], "expected": 88.5}, {"input": [-40.5, 89.0], "expected": 89.0}, {"input": [-40.5, 89.5], "expected": 89.5}, {"input": [-40.5, 90.0], "expected": 90.0}, {"input": [-40.5, 90.5], "expected": 90.5}, {"input": [-40.5, 91.0], "expected": 91.0}, {"input": [-40.5, 91.5], "expected": 91.5}, {"input": [-40.5, 92.0], "expected": 92.0}, {"input": [-40.5, 92.5], "expected": 92.5}, {"input": [-40.5, 93.0], "expected": 93.0}, {"input": [-40.5, 93.5], "expected": 93.5}, {"input": [-40.5, 94.0], "expected": 94.0}, {"input": [-40.5, 94.5], "expected": 94.5}, {"input": [-40.5, 95.0], "expected": 95.0}, {"input": [-40.5, 95.5], "expected": 95.5}, {"input": [-40.5, 96.0], "expected": 96.0}, {"input": [-40.5, 96.5], "expected": 96.5}, {"input": [-40.5, 97.0], "expected": 97.0}, {"input": [-40.5, 97.5], "expected": 97.5}, {"input": [-40.5, 98.0], "expected": 98.0}, {"input": [-40.5, 98.5], "expected": 98.5}, {"input": [-40.5, 99.0], "expected": 99.0}, {"input": [-40.5, 99.5], "expected": 99.5}, {"input": [-40.0, -100.0], "expected": -40.0}, {"input": [-40.0, -99.5], "expected": -40.0}, {"input": [-40.0, -99.0], "expected": -40.0}, {"input": [-40.0, -98.5], "expected": -40.0}, {"input": [-40.0, -98.0], "expected": -40.0}, {"input": [-40.0, -97.5], "expected": -40.0}, {"input": [-40.0, -97.0], "expected": -40.0}, {"input": [-40.0, -96.5], "expected": -40.0}, {"input": [-40.0, -96.0], "expected": -40.0}, {"input": [-40.0, -95.5], "expected": -40.0}, {"input": [-40.0, -95.0], "expected": -40.0}, {"input": [-40.0, -94.5], "expected": -40.0}, {"input": [-40.0, -94.0], "expected": -40.0}, {"input": [-40.0, -93.5], "expected": -40.0}, {"input": [-40.0, -93.0], "expected": -40.0}, {"input": [-40.0, -92.5], "expected": -40.0}, {"input": [-40.0, -92.0], "expected": -40.0}, {"input": [-40.0, -91.5], "expected": -40.0}, {"input": [-40.0, -91.0], "expected": -40.0}, {"input": [-40.0, -90.5], "expected": -40.0}, {"input": [-40.0, -90.0], "expected": -40.0}, {"input": [-40.0, -89.5], "expected": -40.0}, {"input": [-40.0, -89.0], "expected": -40.0}, {"input": [-40.0, -88.5], "expected": -40.0}, {"input": [-40.0, -88.0], "expected": -40.0}, {"input": [-40.0, -87.5], "expected": -40.0}, {"input": [-40.0, -87.0], "expected": -40.0}, {"input": [-40.0, -86.5], "expected": -40.0}, {"input": [-40.0, -86.0], "expected": -40.0}, {"input": [-40.0, -85.5], "expected": -40.0}, {"input": [-40.0, -85.0], "expected": -40.0}, {"input": [-40.0, -84.5], "expected": -40.0}, {"input": [-40.0, -84.0], "expected": -40.0}, {"input": [-40.0, -83.5], "expected": -40.0}, {"input": [-40.0, -83.0], "expected": -40.0}, {"input": [-40.0, -82.5], "expected": -40.0}, {"input": [-40.0, -82.0], "expected": -40.0}, {"input": [-40.0, -81.5], "expected": -40.0}, {"input": [-40.0, -81.0], "expected": -40.0}, {"input": [-40.0, -80.5], "expected": -40.0}, {"input": [-40.0, -80.0], "expected": -40.0}, {"input": [-40.0, -79.5], "expected": -40.0}, {"input": [-40.0, -79.0], "expected": -40.0}, {"input": [-40.0, -78.5], "expected": -40.0}, {"input": [-40.0, -78.0], "expected": -40.0}, {"input": [-40.0, -77.5], "expected": -40.0}, {"input": [-40.0, -77.0], "expected": -40.0}, {"input": [-40.0, -76.5], "expected": -40.0}, {"input": [-40.0, -76.0], "expected": -40.0}, {"input": [-40.0, -75.5], "expected": -40.0}, {"input": [-40.0, -75.0], "expected": -40.0}, {"input": [-40.0, -74.5], "expected": -40.0}, {"input": [-40.0, -74.0], "expected": -40.0}, {"input": [-40.0, -73.5], "expected": -40.0}, {"input": [-40.0, -73.0], "expected": -39.99999999999999}, {"input": [-40.0, -72.5], "expected": -39.99999999999999}, {"input": [-40.0, -72.0], "expected": -39.999999999999986}, {"input": [-40.0, -71.5], "expected": -39.99999999999998}, {"input": [-40.0, -71.0], "expected": -39.999999999999964}, {"input": [-40.0, -70.5], "expected": -39.99999999999994}, {"input": [-40.0, -70.0], "expected": -39.99999999999991}, {"input": [-40.0, -69.5], "expected": -39.999999999999844}, {"input": [-40.0, -69.0], "expected": -39.999999999999744}, {"input": [-40.0, -68.5], "expected": -39.99999999999958}, {"input": [-40.0, -68.0], "expected": -39.99999999999931}, {"input": [-40.0, -67.5], "expected": -39.99999999999886}, {"input": [-40.0, -67.0], "expected": -39.99999999999812}, {"input": [-40.0, -66.5], "expected": -39.9999999999969}, {"input": [-40.0, -66.0], "expected": -39.99999999999489}, {"input": [-40.0, -65.5], "expected": -39.99999999999158}, {"input": [-40.0, -65.0], "expected": -39.99999999998611}, {"input": [-40.0, -64.5], "expected": -39.9999999999771}, {"input": [-40.0, -64.0], "expected": -39.99999999996225}, {"input": [-40.0, -63.5], "expected": -39.99999999993776}, {"input": [-40.0, -63.0], "expected": -39.99999999989738}, {"input": [-40.0, -62.5], "expected": -39.99999999983081}, {"input": [-40.0, -62.0], "expected": -39.999999999721055}, {"input": [-40.0, -61.5], "expected": -39.999999999540094}, {"input": [-40.0, -61.0], "expected": -39.999999999241744}, {"input": [-40.0, -60.5], "expected": -39.99999999874985}, {"input": [-40.0, -60.0], "expected": -39.99999999793884}, {"input": [-40.0, -59.5], "expected": -39.99999999660173}, {"input": [-40.0, -59.0], "expected": -39.99999999439721}, {"input": [-40.0, -58.5], "expected": -39.999999990762554}, {"input": [-40.0, -58.0], "expected": -39.99999998477002}, {"input": [-40.0, -57.5], "expected": -39.99999997489001}, {"input": [-40.0, -57.0], "expected": -39.999999958600625}, {"input": [-40.0, -56.5], "expected": -39.99999993174397}, {"input": [-40.0, -56.0], "expected": -39.99999988746483}, {"input": [-40.0, -55.5], "expected": -39.99999981446088}, {"input": [-40.0, -55.0], "expected": -39.999999694097724}, {"input": [-40.0, -54.5], "expected": -39.99999949565247}, {"input": [-40.0, -54.0], "expected": -39.999999168471625}, {"input": [-40.0, -53.5], "expected": -39.999998629041855}, {"input": [-40.0, -53.0], "expected": -39.99999773967315}, {"input": [-40.0, -52.5], "expected": -39.99999627335377}, {"input": [-40.0, -52.0], "expected": -39.99999385580652}, {"input": [-40.0, -51.5], "expected": -39.99998986995771}, {"input": [-40.0, -51.0], "expected": -39.99998329843868}, {"input": [-40.0, -50.5], "expected": -39.99997246392977}, {"input": [-40.0, -50.0], "expected": -39.99995460110078}, {"input": [-40.0, -49.5], "expected": -39.99992515097137}, {"input": [-40.0, -49.0], "expected": -39.99987659781028}, {"input": [-40.0, -48.5], "expected": -39.99979655232787}, {"input": [-40.0, -48.0], "expected": -39.9996645936271}, {"input": [-40.0, -47.5], "expected": -39.99944706852464}, {"input": [-40.0, -47.0], "expected": -39.99908853354623}, {"input": [-40.0, -46.5], "expected": -39.99849768984024}, {"input": [-40.0, -46.0], "expected": -39.99752431486227}, {"input": [-40.0, -45.5], "expected": -39.99592155672943}, {"input": [-40.0, -45.0], "expected": -39.99328465151088}, {"input": [-40.0, -44.5], "expected": -39.9889522551514}, {"input": [-40.0, -44.0], "expected": -39.98185007208219}, {"input": [-40.0, -43.5], "expected": -39.97024958172738}, {"input": [-40.0, -43.0], "expected": -39.951412648426256}, {"input": [-40.0, -42.5], "expected": -39.92111026570745}, {"input": [-40.0, -42.0], "expected": -39.87307198895703}, {"input": [-40.0, -41.5], "expected": -39.79858672201725}, {"input": [-40.0, -41.0], "expected": -39.68673831248178}, {"input": [-40.0, -40.5], "expected": -39.52592301581989}, {"input": [-40.0, -40.0], "expected": -39.30685281944005}, {"input": [-40.0, -39.5], "expected": -39.02592301581989}, {"input": [-40.0, -39.0], "expected": -38.68673831248178}, {"input": [-40.0, -38.5], "expected": -38.29858672201725}, {"input": [-40.0, -38.0], "expected": -37.87307198895703}, {"input": [-40.0, -37.5], "expected": -37.42111026570745}, {"input": [-40.0, -37.0], "expected": -36.951412648426256}, {"input": [-40.0, -36.5], "expected": -36.47024958172738}, {"input": [-40.0, -36.0], "expected": -35.98185007208219}, {"input": [-40.0, -35.5], "expected": -35.4889522551514}, {"input": [-40.0, -35.0], "expected": -34.99328465151088}, {"input": [-40.0, -34.5], "expected": -34.49592155672943}, {"input": [-40.0, -34.0], "expected": -33.99752431486227}, {"input": [-40.0, -33.5], "expected": -33.49849768984024}, {"input": [-40.0, -33.0], "expected": -32.99908853354623}, {"input": [-40.0, -32.5], "expected": -32.49944706852464}, {"input": [-40.0, -32.0], "expected": -31.999664593627106}, {"input": [-40.0, -31.5], "expected": -31.499796552327872}, {"input": [-40.0, -31.0], "expected": -30.999876597810278}, {"input": [-40.0, -30.5], "expected": -30.49992515097137}, {"input": [-40.0, -30.0], "expected": -29.999954601100782}, {"input": [-40.0, -29.5], "expected": -29.499972463929772}, {"input": [-40.0, -29.0], "expected": -28.999983298438682}, {"input": [-40.0, -28.5], "expected": -28.49998986995771}, {"input": [-40.0, -28.0], "expected": -27.999993855806522}, {"input": [-40.0, -27.5], "expected": -27.499996273353773}, {"input": [-40.0, -27.0], "expected": -26.999997739673148}, {"input": [-40.0, -26.5], "expected": -26.499998629041855}, {"input": [-40.0, -26.0], "expected": -25.999999168471625}, {"input": [-40.0, -25.5], "expected": -25.499999495652464}, {"input": [-40.0, -25.0], "expected": -24.999999694097728}, {"input": [-40.0, -24.5], "expected": -24.49999981446088}, {"input": [-40.0, -24.0], "expected": -23.99999988746483}, {"input": [-40.0, -23.5], "expected": -23.499999931743968}, {"input": [-40.0, -23.0], "expected": -22.999999958600625}, {"input": [-40.0, -22.5], "expected": -22.49999997489001}, {"input": [-40.0, -22.0], "expected": -21.99999998477002}, {"input": [-40.0, -21.5], "expected": -21.49999999076255}, {"input": [-40.0, -21.0], "expected": -20.999999994397204}, {"input": [-40.0, -20.5], "expected": -20.499999996601733}, {"input": [-40.0, -20.0], "expected": -19.999999997938847}, {"input": [-40.0, -19.5], "expected": -19.499999998749846}, {"input": [-40.0, -19.0], "expected": -18.999999999241744}, {"input": [-40.0, -18.5], "expected": -18.499999999540094}, {"input": [-40.0, -18.0], "expected": -17.99999999972105}, {"input": [-40.0, -17.5], "expected": -17.49999999983081}, {"input": [-40.0, -17.0], "expected": -16.99999999989738}, {"input": [-40.0, -16.5], "expected": -16.49999999993776}, {"input": [-40.0, -16.0], "expected": -15.999999999962249}, {"input": [-40.0, -15.5], "expected": -15.499999999977103}, {"input": [-40.0, -15.0], "expected": -14.999999999986112}, {"input": [-40.0, -14.5], "expected": -14.499999999991577}, {"input": [-40.0, -14.0], "expected": -13.999999999994891}, {"input": [-40.0, -13.5], "expected": -13.499999999996902}, {"input": [-40.0, -13.0], "expected": -12.99999999999812}, {"input": [-40.0, -12.5], "expected": -12.49999999999886}, {"input": [-40.0, -12.0], "expected": -11.999999999999309}, {"input": [-40.0, -11.5], "expected": -11.49999999999958}, {"input": [-40.0, -11.0], "expected": -10.999999999999746}, {"input": [-40.0, -10.5], "expected": -10.499999999999845}, {"input": [-40.0, -10.0], "expected": -9.999999999999906}, {"input": [-40.0, -9.5], "expected": -9.499999999999943}, {"input": [-40.0, -9.0], "expected": -8.999999999999966}, {"input": [-40.0, -8.5], "expected": -8.499999999999979}, {"input": [-40.0, -8.0], "expected": -7.999999999999988}, {"input": [-40.0, -7.5], "expected": -7.499999999999992}, {"input": [-40.0, -7.0], "expected": -6.999999999999996}, {"input": [-40.0, -6.5], "expected": -6.499999999999997}, {"input": [-40.0, -6.0], "expected": -5.999999999999998}, {"input": [-40.0, -5.5], "expected": -5.499999999999999}, {"input": [-40.0, -5.0], "expected": -4.999999999999999}, {"input": [-40.0, -4.5], "expected": -4.5}, {"input": [-40.0, -4.0], "expected": -3.9999999999999996}, {"input": [-40.0, -3.5], "expected": -3.5}, {"input": [-40.0, -3.0], "expected": -3.0}, {"input": [-40.0, -2.5], "expected": -2.5}, {"input": [-40.0, -2.0], "expected": -2.0}, {"input": [-40.0, -1.5], "expected": -1.5}, {"input": [-40.0, -1.0], "expected": -1.0}, {"input": [-40.0, -0.5], "expected": -0.5}, {"input": [-40.0, 0.0], "expected": 4.248354255291589e-18}, {"input": [-40.0, 0.5], "expected": 0.5}, {"input": [-40.0, 1.0], "expected": 1.0}, {"input": [-40.0, 1.5], "expected": 1.5}, {"input": [-40.0, 2.0], "expected": 2.0}, {"input": [-40.0, 2.5], "expected": 2.5}, {"input": [-40.0, 3.0], "expected": 3.0}, {"input": [-40.0, 3.5], "expected": 3.5}, {"input": [-40.0, 4.0], "expected": 4.0}, {"input": [-40.0, 4.5], "expected": 4.5}, {"input": [-40.0, 5.0], "expected": 5.0}, {"input": [-40.0, 5.5], "expected": 5.5}, {"input": [-40.0, 6.0], "expected": 6.0}, {"input": [-40.0, 6.5], "expected": 6.5}, {"input": [-40.0, 7.0], "expected": 7.0}, {"input": [-40.0, 7.5], "expected": 7.5}, {"input": [-40.0, 8.0], "expected": 8.0}, {"input": [-40.0, 8.5], "expected": 8.5}, {"input": [-40.0, 9.0], "expected": 9.0}, {"input": [-40.0, 9.5], "expected": 9.5}, {"input": [-40.0, 10.0], "expected": 10.0}, {"input": [-40.0, 10.5], "expected": 10.5}, {"input": [-40.0, 11.0], "expected": 11.0}, {"input": [-40.0, 11.5], "expected": 11.5}, {"input": [-40.0, 12.0], "expected": 12.0}, {"input": [-40.0, 12.5], "expected": 12.5}, {"input": [-40.0, 13.0], "expected": 13.0}, {"input": [-40.0, 13.5], "expected": 13.5}, {"input": [-40.0, 14.0], "expected": 14.0}, {"input": [-40.0, 14.5], "expected": 14.5}, {"input": [-40.0, 15.0], "expected": 15.0}, {"input": [-40.0, 15.5], "expected": 15.5}, {"input": [-40.0, 16.0], "expected": 16.0}, {"input": [-40.0, 16.5], "expected": 16.5}, {"input": [-40.0, 17.0], "expected": 17.0}, {"input": [-40.0, 17.5], "expected": 17.5}, {"input": [-40.0, 18.0], "expected": 18.0}, {"input": [-40.0, 18.5], "expected": 18.5}, {"input": [-40.0, 19.0], "expected": 19.0}, {"input": [-40.0, 19.5], "expected": 19.5}, {"input": [-40.0, 20.0], "expected": 20.0}, {"input": [-40.0, 20.5], "expected": 20.5}, {"input": [-40.0, 21.0], "expected": 21.0}, {"input": [-40.0, 21.5], "expected": 21.5}, {"input": [-40.0, 22.0], "expected": 22.0}, {"input": [-40.0, 22.5], "expected": 22.5}, {"input": [-40.0, 23.0], "expected": 23.0}, {"input": [-40.0, 23.5], "expected": 23.5}, {"input": [-40.0, 24.0], "expected": 24.0}, {"input": [-40.0, 24.5], "expected": 24.5}, {"input": [-40.0, 25.0], "expected": 25.0}, {"input": [-40.0, 25.5], "expected": 25.5}, {"input": [-40.0, 26.0], "expected": 26.0}, {"input": [-40.0, 26.5], "expected": 26.5}, {"input": [-40.0, 27.0], "expected": 27.0}, {"input": [-40.0, 27.5], "expected": 27.5}, {"input": [-40.0, 28.0], "expected": 28.0}, {"input": [-40.0, 28.5], "expected": 28.5}, {"input": [-40.0, 29.0], "expected": 29.0}, {"input": [-40.0, 29.5], "expected": 29.5}, {"input": [-40.0, 30.0], "expected": 30.0}, {"input": [-40.0, 30.5], "expected": 30.5}, {"input": [-40.0, 31.0], "expected": 31.0}, {"input": [-40.0, 31.5], "expected": 31.5}, {"input": [-40.0, 32.0], "expected": 32.0}, {"input": [-40.0, 32.5], "expected": 32.5}, {"input": [-40.0, 33.0], "expected": 33.0}, {"input": [-40.0, 33.5], "expected": 33.5}, {"input": [-40.0, 34.0], "expected": 34.0}, {"input": [-40.0, 34.5], "expected": 34.5}, {"input": [-40.0, 35.0], "expected": 35.0}, {"input": [-40.0, 35.5], "expected": 35.5}, {"input": [-40.0, 36.0], "expected": 36.0}, {"input": [-40.0, 36.5], "expected": 36.5}, {"input": [-40.0, 37.0], "expected": 37.0}, {"input": [-40.0, 37.5], "expected": 37.5}, {"input": [-40.0, 38.0], "expected": 38.0}, {"input": [-40.0, 38.5], "expected": 38.5}, {"input": [-40.0, 39.0], "expected": 39.0}, {"input": [-40.0, 39.5], "expected": 39.5}, {"input": [-40.0, 40.0], "expected": 40.0}, {"input": [-40.0, 40.5], "expected": 40.5}, {"input": [-40.0, 41.0], "expected": 41.0}, {"input": [-40.0, 41.5], "expected": 41.5}, {"input": [-40.0, 42.0], "expected": 42.0}, {"input": [-40.0, 42.5], "expected": 42.5}, {"input": [-40.0, 43.0], "expected": 43.0}, {"input": [-40.0, 43.5], "expected": 43.5}, {"input": [-40.0, 44.0], "expected": 44.0}, {"input": [-40.0, 44.5], "expected": 44.5}, {"input": [-40.0, 45.0], "expected": 45.0}, {"input": [-40.0, 45.5], "expected": 45.5}, {"input": [-40.0, 46.0], "expected": 46.0}, {"input": [-40.0, 46.5], "expected": 46.5}, {"input": [-40.0, 47.0], "expected": 47.0}, {"input": [-40.0, 47.5], "expected": 47.5}, {"input": [-40.0, 48.0], "expected": 48.0}, {"input": [-40.0, 48.5], "expected": 48.5}, {"input": [-40.0, 49.0], "expected": 49.0}, {"input": [-40.0, 49.5], "expected": 49.5}, {"input": [-40.0, 50.0], "expected": 50.0}, {"input": [-40.0, 50.5], "expected": 50.5}, {"input": [-40.0, 51.0], "expected": 51.0}, {"input": [-40.0, 51.5], "expected": 51.5}, {"input": [-40.0, 52.0], "expected": 52.0}, {"input": [-40.0, 52.5], "expected": 52.5}, {"input": [-40.0, 53.0], "expected": 53.0}, {"input": [-40.0, 53.5], "expected": 53.5}, {"input": [-40.0, 54.0], "expected": 54.0}, {"input": [-40.0, 54.5], "expected": 54.5}, {"input": [-40.0, 55.0], "expected": 55.0}, {"input": [-40.0, 55.5], "expected": 55.5}, {"input": [-40.0, 56.0], "expected": 56.0}, {"input": [-40.0, 56.5], "expected": 56.5}, {"input": [-40.0, 57.0], "expected": 57.0}, {"input": [-40.0, 57.5], "expected": 57.5}, {"input": [-40.0, 58.0], "expected": 58.0}, {"input": [-40.0, 58.5], "expected": 58.5}, {"input": [-40.0, 59.0], "expected": 59.0}, {"input": [-40.0, 59.5], "expected": 59.5}, {"input": [-40.0, 60.0], "expected": 60.0}, {"input": [-40.0, 60.5], "expected": 60.5}, {"input": [-40.0, 61.0], "expected": 61.0}, {"input": [-40.0, 61.5], "expected": 61.5}, {"input": [-40.0, 62.0], "expected": 62.0}, {"input": [-40.0, 62.5], "expected": 62.5}, {"input": [-40.0, 63.0], "expected": 63.0}, {"input": [-40.0, 63.5], "expected": 63.5}, {"input": [-40.0, 64.0], "expected": 64.0}, {"input": [-40.0, 64.5], "expected": 64.5}, {"input": [-40.0, 65.0], "expected": 65.0}, {"input": [-40.0, 65.5], "expected": 65.5}, {"input": [-40.0, 66.0], "expected": 66.0}, {"input": [-40.0, 66.5], "expected": 66.5}, {"input": [-40.0, 67.0], "expected": 67.0}, {"input": [-40.0, 67.5], "expected": 67.5}, {"input": [-40.0, 68.0], "expected": 68.0}, {"input": [-40.0, 68.5], "expected": 68.5}, {"input": [-40.0, 69.0], "expected": 69.0}, {"input": [-40.0, 69.5], "expected": 69.5}, {"input": [-40.0, 70.0], "expected": 70.0}, {"input": [-40.0, 70.5], "expected": 70.5}, {"input": [-40.0, 71.0], "expected": 71.0}, {"input": [-40.0, 71.5], "expected": 71.5}, {"input": [-40.0, 72.0], "expected": 72.0}, {"input": [-40.0, 72.5], "expected": 72.5}, {"input": [-40.0, 73.0], "expected": 73.0}, {"input": [-40.0, 73.5], "expected": 73.5}, {"input": [-40.0, 74.0], "expected": 74.0}, {"input": [-40.0, 74.5], "expected": 74.5}, {"input": [-40.0, 75.0], "expected": 75.0}, {"input": [-40.0, 75.5], "expected": 75.5}, {"input": [-40.0, 76.0], "expected": 76.0}, {"input": [-40.0, 76.5], "expected": 76.5}, {"input": [-40.0, 77.0], "expected": 77.0}, {"input": [-40.0, 77.5], "expected": 77.5}, {"input": [-40.0, 78.0], "expected": 78.0}, {"input": [-40.0, 78.5], "expected": 78.5}, {"input": [-40.0, 79.0], "expected": 79.0}, {"input": [-40.0, 79.5], "expected": 79.5}, {"input": [-40.0, 80.0], "expected": 80.0}, {"input": [-40.0, 80.5], "expected": 80.5}, {"input": [-40.0, 81.0], "expected": 81.0}, {"input": [-40.0, 81.5], "expected": 81.5}, {"input": [-40.0, 82.0], "expected": 82.0}, {"input": [-40.0, 82.5], "expected": 82.5}, {"input": [-40.0, 83.0], "expected": 83.0}, {"input": [-40.0, 83.5], "expected": 83.5}, {"input": [-40.0, 84.0], "expected": 84.0}, {"input": [-40.0, 84.5], "expected": 84.5}, {"input": [-40.0, 85.0], "expected": 85.0}, {"input": [-40.0, 85.5], "expected": 85.5}, {"input": [-40.0, 86.0], "expected": 86.0}, {"input": [-40.0, 86.5], "expected": 86.5}, {"input": [-40.0, 87.0], "expected": 87.0}, {"input": [-40.0, 87.5], "expected": 87.5}, {"input": [-40.0, 88.0], "expected": 88.0}, {"input": [-40.0, 88.5], "expected": 88.5}, {"input": [-40.0, 89.0], "expected": 89.0}, {"input": [-40.0, 89.5], "expected": 89.5}, {"input": [-40.0, 90.0], "expected": 90.0}, {"input": [-40.0, 90.5], "expected": 90.5}, {"input": [-40.0, 91.0], "expected": 91.0}, {"input": [-40.0, 91.5], "expected": 91.5}, {"input": [-40.0, 92.0], "expected": 92.0}, {"input": [-40.0, 92.5], "expected": 92.5}, {"input": [-40.0, 93.0], "expected": 93.0}, {"input": [-40.0, 93.5], "expected": 93.5}, {"input": [-40.0, 94.0], "expected": 94.0}, {"input": [-40.0, 94.5], "expected": 94.5}, {"input": [-40.0, 95.0], "expected": 95.0}, {"input": [-40.0, 95.5], "expected": 95.5}, {"input": [-40.0, 96.0], "expected": 96.0}, {"input": [-40.0, 96.5], "expected": 96.5}, {"input": [-40.0, 97.0], "expected": 97.0}, {"input": [-40.0, 97.5], "expected": 97.5}, {"input": [-40.0, 98.0], "expected": 98.0}, {"input": [-40.0, 98.5], "expected": 98.5}, {"input": [-40.0, 99.0], "expected": 99.0}, {"input": [-40.0, 99.5], "expected": 99.5}, {"input": [-39.5, -100.0], "expected": -39.5}, {"input": [-39.5, -99.5], "expected": -39.5}, {"input": [-39.5, -99.0], "expected": -39.5}, {"input": [-39.5, -98.5], "expected": -39.5}, {"input": [-39.5, -98.0], "expected": -39.5}, {"input": [-39.5, -97.5], "expected": -39.5}, {"input": [-39.5, -97.0], "expected": -39.5}, {"input": [-39.5, -96.5], "expected": -39.5}, {"input": [-39.5, -96.0], "expected": -39.5}, {"input": [-39.5, -95.5], "expected": -39.5}, {"input": [-39.5, -95.0], "expected": -39.5}, {"input": [-39.5, -94.5], "expected": -39.5}, {"input": [-39.5, -94.0], "expected": -39.5}, {"input": [-39.5, -93.5], "expected": -39.5}, {"input": [-39.5, -93.0], "expected": -39.5}, {"input": [-39.5, -92.5], "expected": -39.5}, {"input": [-39.5, -92.0], "expected": -39.5}, {"input": [-39.5, -91.5], "expected": -39.5}, {"input": [-39.5, -91.0], "expected": -39.5}, {"input": [-39.5, -90.5], "expected": -39.5}, {"input": [-39.5, -90.0], "expected": -39.5}, {"input": [-39.5, -89.5], "expected": -39.5}, {"input": [-39.5, -89.0], "expected": -39.5}, {"input": [-39.5, -88.5], "expected": -39.5}, {"input": [-39.5, -88.0], "expected": -39.5}, {"input": [-39.5, -87.5], "expected": -39.5}, {"input": [-39.5, -87.0], "expected": -39.5}, {"input": [-39.5, -86.5], "expected": -39.5}, {"input": [-39.5, -86.0], "expected": -39.5}, {"input": [-39.5, -85.5], "expected": -39.5}, {"input": [-39.5, -85.0], "expected": -39.5}, {"input": [-39.5, -84.5], "expected": -39.5}, {"input": [-39.5, -84.0], "expected": -39.5}, {"input": [-39.5, -83.5], "expected": -39.5}, {"input": [-39.5, -83.0], "expected": -39.5}, {"input": [-39.5, -82.5], "expected": -39.5}, {"input": [-39.5, -82.0], "expected": -39.5}, {"input": [-39.5, -81.5], "expected": -39.5}, {"input": [-39.5, -81.0], "expected": -39.5}, {"input": [-39.5, -80.5], "expected": -39.5}, {"input": [-39.5, -80.0], "expected": -39.5}, {"input": [-39.5, -79.5], "expected": -39.5}, {"input": [-39.5, -79.0], "expected": -39.5}, {"input": [-39.5, -78.5], "expected": -39.5}, {"input": [-39.5, -78.0], "expected": -39.5}, {"input": [-39.5, -77.5], "expected": -39.5}, {"input": [-39.5, -77.0], "expected": -39.5}, {"input": [-39.5, -76.5], "expected": -39.5}, {"input": [-39.5, -76.0], "expected": -39.5}, {"input": [-39.5, -75.5], "expected": -39.5}, {"input": [-39.5, -75.0], "expected": -39.5}, {"input": [-39.5, -74.5], "expected": -39.5}, {"input": [-39.5, -74.0], "expected": -39.5}, {"input": [-39.5, -73.5], "expected": -39.5}, {"input": [-39.5, -73.0], "expected": -39.5}, {"input": [-39.5, -72.5], "expected": -39.49999999999999}, {"input": [-39.5, -72.0], "expected": -39.49999999999999}, {"input": [-39.5, -71.5], "expected": -39.499999999999986}, {"input": [-39.5, -71.0], "expected": -39.49999999999998}, {"input": [-39.5, -70.5], "expected": -39.499999999999964}, {"input": [-39.5, -70.0], "expected": -39.49999999999994}, {"input": [-39.5, -69.5], "expected": -39.49999999999991}, {"input": [-39.5, -69.0], "expected": -39.499999999999844}, {"input": [-39.5, -68.5], "expected": -39.499999999999744}, {"input": [-39.5, -68.0], "expected": -39.49999999999958}, {"input": [-39.5, -67.5], "expected": -39.49999999999931}, {"input": [-39.5, -67.0], "expected": -39.49999999999886}, {"input": [-39.5, -66.5], "expected": -39.49999999999812}, {"input": [-39.5, -66.0], "expected": -39.4999999999969}, {"input": [-39.5, -65.5], "expected": -39.49999999999489}, {"input": [-39.5, -65.0], "expected": -39.49999999999158}, {"input": [-39.5, -64.5], "expected": -39.49999999998611}, {"input": [-39.5, -64.0], "expected": -39.4999999999771}, {"input": [-39.5, -63.5], "expected": -39.49999999996225}, {"input": [-39.5, -63.0], "expected": -39.49999999993776}, {"input": [-39.5, -62.5], "expected": -39.49999999989738}, {"input": [-39.5, -62.0], "expected": -39.49999999983081}, {"input": [-39.5, -61.5], "expected": -39.499999999721055}, {"input": [-39.5, -61.0], "expected": -39.499999999540094}, {"input": [-39.5, -60.5], "expected": -39.499999999241744}, {"input": [-39.5, -60.0], "expected": -39.49999999874985}, {"input": [-39.5, -59.5], "expected": -39.49999999793884}, {"input": [-39.5, -59.0], "expected": -39.49999999660173}, {"input": [-39.5, -58.5], "expected": -39.49999999439721}, {"input": [-39.5, -58.0], "expected": -39.499999990762554}, {"input": [-39.5, -57.5], "expected": -39.49999998477002}, {"input": [-39.5, -57.0], "expected": -39.49999997489001}, {"input": [-39.5, -56.5], "expected": -39.499999958600625}, {"input": [-39.5, -56.0], "expected": -39.49999993174397}, {"input": [-39.5, -55.5], "expected": -39.49999988746483}, {"input": [-39.5, -55.0], "expected": -39.49999981446088}, {"input": [-39.5, -54.5], "expected": -39.499999694097724}, {"input": [-39.5, -54.0], "expected": -39.49999949565247}, {"input": [-39.5, -53.5], "expected": -39.499999168471625}, {"input": [-39.5, -53.0], "expected": -39.499998629041855}, {"input": [-39.5, -52.5], "expected": -39.49999773967315}, {"input": [-39.5, -52.0], "expected": -39.49999627335377}, {"input": [-39.5, -51.5], "expected": -39.49999385580652}, {"input": [-39.5, -51.0], "expected": -39.49998986995771}, {"input": [-39.5, -50.5], "expected": -39.49998329843868}, {"input": [-39.5, -50.0], "expected": -39.49997246392977}, {"input": [-39.5, -49.5], "expected": -39.49995460110078}, {"input": [-39.5, -49.0], "expected": -39.49992515097137}, {"input": [-39.5, -48.5], "expected": -39.49987659781028}, {"input": [-39.5, -48.0], "expected": -39.49979655232787}, {"input": [-39.5, -47.5], "expected": -39.4996645936271}, {"input": [-39.5, -47.0], "expected": -39.49944706852464}, {"input": [-39.5, -46.5], "expected": -39.49908853354623}, {"input": [-39.5, -46.0], "expected": -39.49849768984024}, {"input": [-39.5, -45.5], "expected": -39.49752431486227}, {"input": [-39.5, -45.0], "expected": -39.49592155672943}, {"input": [-39.5, -44.5], "expected": -39.49328465151088}, {"input": [-39.5, -44.0], "expected": -39.4889522551514}, {"input": [-39.5, -43.5], "expected": -39.48185007208219}, {"input": [-39.5, -43.0], "expected": -39.47024958172738}, {"input": [-39.5, -42.5], "expected": -39.451412648426256}, {"input": [-39.5, -42.0], "expected": -39.42111026570745}, {"input": [-39.5, -41.5], "expected": -39.37307198895703}, {"input": [-39.5, -41.0], "expected": -39.29858672201725}, {"input": [-39.5, -40.5], "expected": -39.18673831248178}, {"input": [-39.5, -40.0], "expected": -39.02592301581989}, {"input": [-39.5, -39.5], "expected": -38.80685281944005}, {"input": [-39.5, -39.0], "expected": -38.52592301581989}, {"input": [-39.5, -38.5], "expected": -38.18673831248178}, {"input": [-39.5, -38.0], "expected": -37.79858672201725}, {"input": [-39.5, -37.5], "expected": -37.37307198895703}, {"input": [-39.5, -37.0], "expected": -36.92111026570745}, {"input": [-39.5, -36.5], "expected": -36.451412648426256}, {"input": [-39.5, -36.0], "expected": -35.97024958172738}, {"input": [-39.5, -35.5], "expected": -35.48185007208219}, {"input": [-39.5, -35.0], "expected": -34.9889522551514}, {"input": [-39.5, -34.5], "expected": -34.49328465151088}, {"input": [-39.5, -34.0], "expected": -33.99592155672943}, {"input": [-39.5, -33.5], "expected": -33.49752431486227}, {"input": [-39.5, -33.0], "expected": -32.99849768984024}, {"input": [-39.5, -32.5], "expected": -32.49908853354623}, {"input": [-39.5, -32.0], "expected": -31.99944706852464}, {"input": [-39.5, -31.5], "expected": -31.499664593627106}, {"input": [-39.5, -31.0], "expected": -30.999796552327872}, {"input": [-39.5, -30.5], "expected": -30.499876597810278}, {"input": [-39.5, -30.0], "expected": -29.99992515097137}, {"input": [-39.5, -29.5], "expected": -29.499954601100782}, {"input": [-39.5, -29.0], "expected": -28.999972463929772}, {"input": [-39.5, -28.5], "expected": -28.499983298438682}, {"input": [-39.5, -28.0], "expected": -27.99998986995771}, {"input": [-39.5, -27.5], "expected": -27.499993855806522}, {"input": [-39.5, -27.0], "expected": -26.999996273353773}, {"input": [-39.5, -26.5], "expected": -26.499997739673148}, {"input": [-39.5, -26.0], "expected": -25.999998629041855}, {"input": [-39.5, -25.5], "expected": -25.499999168471625}, {"input": [-39.5, -25.0], "expected": -24.999999495652464}, {"input": [-39.5, -24.5], "expected": -24.499999694097728}, {"input": [-39.5, -24.0], "expected": -23.99999981446088}, {"input": [-39.5, -23.5], "expected": -23.49999988746483}, {"input": [-39.5, -23.0], "expected": -22.999999931743968}, {"input": [-39.5, -22.5], "expected": -22.499999958600625}, {"input": [-39.5, -22.0], "expected": -21.99999997489001}, {"input": [-39.5, -21.5], "expected": -21.49999998477002}, {"input": [-39.5, -21.0], "expected": -20.99999999076255}, {"input": [-39.5, -20.5], "expected": -20.499999994397204}, {"input": [-39.5, -20.0], "expected": -19.999999996601733}, {"input": [-39.5, -19.5], "expected": -19.499999997938847}, {"input": [-39.5, -19.0], "expected": -18.999999998749846}, {"input": [-39.5, -18.5], "expected": -18.499999999241744}, {"input": [-39.5, -18.0], "expected": -17.999999999540094}, {"input": [-39.5, -17.5], "expected": -17.49999999972105}, {"input": [-39.5, -17.0], "expected": -16.99999999983081}, {"input": [-39.5, -16.5], "expected": -16.49999999989738}, {"input": [-39.5, -16.0], "expected": -15.999999999937758}, {"input": [-39.5, -15.5], "expected": -15.499999999962249}, {"input": [-39.5, -15.0], "expected": -14.999999999977103}, {"input": [-39.5, -14.5], "expected": -14.499999999986112}, {"input": [-39.5, -14.0], "expected": -13.999999999991577}, {"input": [-39.5, -13.5], "expected": -13.499999999994891}, {"input": [-39.5, -13.0], "expected": -12.999999999996902}, {"input": [-39.5, -12.5], "expected": -12.49999999999812}, {"input": [-39.5, -12.0], "expected": -11.99999999999886}, {"input": [-39.5, -11.5], "expected": -11.499999999999309}, {"input": [-39.5, -11.0], "expected": -10.99999999999958}, {"input": [-39.5, -10.5], "expected": -10.499999999999746}, {"input": [-39.5, -10.0], "expected": -9.999999999999845}, {"input": [-39.5, -9.5], "expected": -9.499999999999906}, {"input": [-39.5, -9.0], "expected": -8.999999999999943}, {"input": [-39.5, -8.5], "expected": -8.499999999999966}, {"input": [-39.5, -8.0], "expected": -7.999999999999979}, {"input": [-39.5, -7.5], "expected": -7.499999999999988}, {"input": [-39.5, -7.0], "expected": -6.999999999999992}, {"input": [-39.5, -6.5], "expected": -6.499999999999996}, {"input": [-39.5, -6.0], "expected": -5.999999999999997}, {"input": [-39.5, -5.5], "expected": -5.499999999999998}, {"input": [-39.5, -5.0], "expected": -4.999999999999999}, {"input": [-39.5, -4.5], "expected": -4.499999999999999}, {"input": [-39.5, -4.0], "expected": -3.9999999999999996}, {"input": [-39.5, -3.5], "expected": -3.4999999999999996}, {"input": [-39.5, -3.0], "expected": -3.0}, {"input": [-39.5, -2.5], "expected": -2.5}, {"input": [-39.5, -2.0], "expected": -2.0}, {"input": [-39.5, -1.5], "expected": -1.5}, {"input": [-39.5, -1.0], "expected": -1.0}, {"input": [-39.5, -0.5], "expected": -0.5}, {"input": [-39.5, 0.0], "expected": 7.004352026168645e-18}, {"input": [-39.5, 0.5], "expected": 0.5}, {"input": [-39.5, 1.0], "expected": 1.0}, {"input": [-39.5, 1.5], "expected": 1.5}, {"input": [-39.5, 2.0], "expected": 2.0}, {"input": [-39.5, 2.5], "expected": 2.5}, {"input": [-39.5, 3.0], "expected": 3.0}, {"input": [-39.5, 3.5], "expected": 3.5}, {"input": [-39.5, 4.0], "expected": 4.0}, {"input": [-39.5, 4.5], "expected": 4.5}, {"input": [-39.5, 5.0], "expected": 5.0}, {"input": [-39.5, 5.5], "expected": 5.5}, {"input": [-39.5, 6.0], "expected": 6.0}, {"input": [-39.5, 6.5], "expected": 6.5}, {"input": [-39.5, 7.0], "expected": 7.0}, {"input": [-39.5, 7.5], "expected": 7.5}, {"input": [-39.5, 8.0], "expected": 8.0}, {"input": [-39.5, 8.5], "expected": 8.5}, {"input": [-39.5, 9.0], "expected": 9.0}, {"input": [-39.5, 9.5], "expected": 9.5}, {"input": [-39.5, 10.0], "expected": 10.0}, {"input": [-39.5, 10.5], "expected": 10.5}, {"input": [-39.5, 11.0], "expected": 11.0}, {"input": [-39.5, 11.5], "expected": 11.5}, {"input": [-39.5, 12.0], "expected": 12.0}, {"input": [-39.5, 12.5], "expected": 12.5}, {"input": [-39.5, 13.0], "expected": 13.0}, {"input": [-39.5, 13.5], "expected": 13.5}, {"input": [-39.5, 14.0], "expected": 14.0}, {"input": [-39.5, 14.5], "expected": 14.5}, {"input": [-39.5, 15.0], "expected": 15.0}, {"input": [-39.5, 15.5], "expected": 15.5}, {"input": [-39.5, 16.0], "expected": 16.0}, {"input": [-39.5, 16.5], "expected": 16.5}, {"input": [-39.5, 17.0], "expected": 17.0}, {"input": [-39.5, 17.5], "expected": 17.5}, {"input": [-39.5, 18.0], "expected": 18.0}, {"input": [-39.5, 18.5], "expected": 18.5}, {"input": [-39.5, 19.0], "expected": 19.0}, {"input": [-39.5, 19.5], "expected": 19.5}, {"input": [-39.5, 20.0], "expected": 20.0}, {"input": [-39.5, 20.5], "expected": 20.5}, {"input": [-39.5, 21.0], "expected": 21.0}, {"input": [-39.5, 21.5], "expected": 21.5}, {"input": [-39.5, 22.0], "expected": 22.0}, {"input": [-39.5, 22.5], "expected": 22.5}, {"input": [-39.5, 23.0], "expected": 23.0}, {"input": [-39.5, 23.5], "expected": 23.5}, {"input": [-39.5, 24.0], "expected": 24.0}, {"input": [-39.5, 24.5], "expected": 24.5}, {"input": [-39.5, 25.0], "expected": 25.0}, {"input": [-39.5, 25.5], "expected": 25.5}, {"input": [-39.5, 26.0], "expected": 26.0}, {"input": [-39.5, 26.5], "expected": 26.5}, {"input": [-39.5, 27.0], "expected": 27.0}, {"input": [-39.5, 27.5], "expected": 27.5}, {"input": [-39.5, 28.0], "expected": 28.0}, {"input": [-39.5, 28.5], "expected": 28.5}, {"input": [-39.5, 29.0], "expected": 29.0}, {"input": [-39.5, 29.5], "expected": 29.5}, {"input": [-39.5, 30.0], "expected": 30.0}, {"input": [-39.5, 30.5], "expected": 30.5}, {"input": [-39.5, 31.0], "expected": 31.0}, {"input": [-39.5, 31.5], "expected": 31.5}, {"input": [-39.5, 32.0], "expected": 32.0}, {"input": [-39.5, 32.5], "expected": 32.5}, {"input": [-39.5, 33.0], "expected": 33.0}, {"input": [-39.5, 33.5], "expected": 33.5}, {"input": [-39.5, 34.0], "expected": 34.0}, {"input": [-39.5, 34.5], "expected": 34.5}, {"input": [-39.5, 35.0], "expected": 35.0}, {"input": [-39.5, 35.5], "expected": 35.5}, {"input": [-39.5, 36.0], "expected": 36.0}, {"input": [-39.5, 36.5], "expected": 36.5}, {"input": [-39.5, 37.0], "expected": 37.0}, {"input": [-39.5, 37.5], "expected": 37.5}, {"input": [-39.5, 38.0], "expected": 38.0}, {"input": [-39.5, 38.5], "expected": 38.5}, {"input": [-39.5, 39.0], "expected": 39.0}, {"input": [-39.5, 39.5], "expected": 39.5}, {"input": [-39.5, 40.0], "expected": 40.0}, {"input": [-39.5, 40.5], "expected": 40.5}, {"input": [-39.5, 41.0], "expected": 41.0}, {"input": [-39.5, 41.5], "expected": 41.5}, {"input": [-39.5, 42.0], "expected": 42.0}, {"input": [-39.5, 42.5], "expected": 42.5}, {"input": [-39.5, 43.0], "expected": 43.0}, {"input": [-39.5, 43.5], "expected": 43.5}, {"input": [-39.5, 44.0], "expected": 44.0}, {"input": [-39.5, 44.5], "expected": 44.5}, {"input": [-39.5, 45.0], "expected": 45.0}, {"input": [-39.5, 45.5], "expected": 45.5}, {"input": [-39.5, 46.0], "expected": 46.0}, {"input": [-39.5, 46.5], "expected": 46.5}, {"input": [-39.5, 47.0], "expected": 47.0}, {"input": [-39.5, 47.5], "expected": 47.5}, {"input": [-39.5, 48.0], "expected": 48.0}, {"input": [-39.5, 48.5], "expected": 48.5}, {"input": [-39.5, 49.0], "expected": 49.0}, {"input": [-39.5, 49.5], "expected": 49.5}, {"input": [-39.5, 50.0], "expected": 50.0}, {"input": [-39.5, 50.5], "expected": 50.5}, {"input": [-39.5, 51.0], "expected": 51.0}, {"input": [-39.5, 51.5], "expected": 51.5}, {"input": [-39.5, 52.0], "expected": 52.0}, {"input": [-39.5, 52.5], "expected": 52.5}, {"input": [-39.5, 53.0], "expected": 53.0}, {"input": [-39.5, 53.5], "expected": 53.5}, {"input": [-39.5, 54.0], "expected": 54.0}, {"input": [-39.5, 54.5], "expected": 54.5}, {"input": [-39.5, 55.0], "expected": 55.0}, {"input": [-39.5, 55.5], "expected": 55.5}, {"input": [-39.5, 56.0], "expected": 56.0}, {"input": [-39.5, 56.5], "expected": 56.5}, {"input": [-39.5, 57.0], "expected": 57.0}, {"input": [-39.5, 57.5], "expected": 57.5}, {"input": [-39.5, 58.0], "expected": 58.0}, {"input": [-39.5, 58.5], "expected": 58.5}, {"input": [-39.5, 59.0], "expected": 59.0}, {"input": [-39.5, 59.5], "expected": 59.5}, {"input": [-39.5, 60.0], "expected": 60.0}, {"input": [-39.5, 60.5], "expected": 60.5}, {"input": [-39.5, 61.0], "expected": 61.0}, {"input": [-39.5, 61.5], "expected": 61.5}, {"input": [-39.5, 62.0], "expected": 62.0}, {"input": [-39.5, 62.5], "expected": 62.5}, {"input": [-39.5, 63.0], "expected": 63.0}, {"input": [-39.5, 63.5], "expected": 63.5}, {"input": [-39.5, 64.0], "expected": 64.0}, {"input": [-39.5, 64.5], "expected": 64.5}, {"input": [-39.5, 65.0], "expected": 65.0}, {"input": [-39.5, 65.5], "expected": 65.5}, {"input": [-39.5, 66.0], "expected": 66.0}, {"input": [-39.5, 66.5], "expected": 66.5}, {"input": [-39.5, 67.0], "expected": 67.0}, {"input": [-39.5, 67.5], "expected": 67.5}, {"input": [-39.5, 68.0], "expected": 68.0}, {"input": [-39.5, 68.5], "expected": 68.5}, {"input": [-39.5, 69.0], "expected": 69.0}, {"input": [-39.5, 69.5], "expected": 69.5}, {"input": [-39.5, 70.0], "expected": 70.0}, {"input": [-39.5, 70.5], "expected": 70.5}, {"input": [-39.5, 71.0], "expected": 71.0}, {"input": [-39.5, 71.5], "expected": 71.5}, {"input": [-39.5, 72.0], "expected": 72.0}, {"input": [-39.5, 72.5], "expected": 72.5}, {"input": [-39.5, 73.0], "expected": 73.0}, {"input": [-39.5, 73.5], "expected": 73.5}, {"input": [-39.5, 74.0], "expected": 74.0}, {"input": [-39.5, 74.5], "expected": 74.5}, {"input": [-39.5, 75.0], "expected": 75.0}, {"input": [-39.5, 75.5], "expected": 75.5}, {"input": [-39.5, 76.0], "expected": 76.0}, {"input": [-39.5, 76.5], "expected": 76.5}, {"input": [-39.5, 77.0], "expected": 77.0}, {"input": [-39.5, 77.5], "expected": 77.5}, {"input": [-39.5, 78.0], "expected": 78.0}, {"input": [-39.5, 78.5], "expected": 78.5}, {"input": [-39.5, 79.0], "expected": 79.0}, {"input": [-39.5, 79.5], "expected": 79.5}, {"input": [-39.5, 80.0], "expected": 80.0}, {"input": [-39.5, 80.5], "expected": 80.5}, {"input": [-39.5, 81.0], "expected": 81.0}, {"input": [-39.5, 81.5], "expected": 81.5}, {"input": [-39.5, 82.0], "expected": 82.0}, {"input": [-39.5, 82.5], "expected": 82.5}, {"input": [-39.5, 83.0], "expected": 83.0}, {"input": [-39.5, 83.5], "expected": 83.5}, {"input": [-39.5, 84.0], "expected": 84.0}, {"input": [-39.5, 84.5], "expected": 84.5}, {"input": [-39.5, 85.0], "expected": 85.0}, {"input": [-39.5, 85.5], "expected": 85.5}, {"input": [-39.5, 86.0], "expected": 86.0}, {"input": [-39.5, 86.5], "expected": 86.5}, {"input": [-39.5, 87.0], "expected": 87.0}, {"input": [-39.5, 87.5], "expected": 87.5}, {"input": [-39.5, 88.0], "expected": 88.0}, {"input": [-39.5, 88.5], "expected": 88.5}, {"input": [-39.5, 89.0], "expected": 89.0}, {"input": [-39.5, 89.5], "expected": 89.5}, {"input": [-39.5, 90.0], "expected": 90.0}, {"input": [-39.5, 90.5], "expected": 90.5}, {"input": [-39.5, 91.0], "expected": 91.0}, {"input": [-39.5, 91.5], "expected": 91.5}, {"input": [-39.5, 92.0], "expected": 92.0}, {"input": [-39.5, 92.5], "expected": 92.5}, {"input": [-39.5, 93.0], "expected": 93.0}, {"input": [-39.5, 93.5], "expected": 93.5}, {"input": [-39.5, 94.0], "expected": 94.0}, {"input": [-39.5, 94.5], "expected": 94.5}, {"input": [-39.5, 95.0], "expected": 95.0}, {"input": [-39.5, 95.5], "expected": 95.5}, {"input": [-39.5, 96.0], "expected": 96.0}, {"input": [-39.5, 96.5], "expected": 96.5}, {"input": [-39.5, 97.0], "expected": 97.0}, {"input": [-39.5, 97.5], "expected": 97.5}, {"input": [-39.5, 98.0], "expected": 98.0}, {"input": [-39.5, 98.5], "expected": 98.5}, {"input": [-39.5, 99.0], "expected": 99.0}, {"input": [-39.5, 99.5], "expected": 99.5}, {"input": [-39.0, -100.0], "expected": -39.0}, {"input": [-39.0, -99.5], "expected": -39.0}, {"input": [-39.0, -99.0], "expected": -39.0}, {"input": [-39.0, -98.5], "expected": -39.0}, {"input": [-39.0, -98.0], "expected": -39.0}, {"input": [-39.0, -97.5], "expected": -39.0}, {"input": [-39.0, -97.0], "expected": -39.0}, {"input": [-39.0, -96.5], "expected": -39.0}, {"input": [-39.0, -96.0], "expected": -39.0}, {"input": [-39.0, -95.5], "expected": -39.0}, {"input": [-39.0, -95.0], "expected": -39.0}, {"input": [-39.0, -94.5], "expected": -39.0}, {"input": [-39.0, -94.0], "expected": -39.0}, {"input": [-39.0, -93.5], "expected": -39.0}, {"input": [-39.0, -93.0], "expected": -39.0}, {"input": [-39.0, -92.5], "expected": -39.0}, {"input": [-39.0, -92.0], "expected": -39.0}, {"input": [-39.0, -91.5], "expected": -39.0}, {"input": [-39.0, -91.0], "expected": -39.0}, {"input": [-39.0, -90.5], "expected": -39.0}, {"input": [-39.0, -90.0], "expected": -39.0}, {"input": [-39.0, -89.5], "expected": -39.0}, {"input": [-39.0, -89.0], "expected": -39.0}, {"input": [-39.0, -88.5], "expected": -39.0}, {"input": [-39.0, -88.0], "expected": -39.0}, {"input": [-39.0, -87.5], "expected": -39.0}, {"input": [-39.0, -87.0], "expected": -39.0}, {"input": [-39.0, -86.5], "expected": -39.0}, {"input": [-39.0, -86.0], "expected": -39.0}, {"input": [-39.0, -85.5], "expected": -39.0}, {"input": [-39.0, -85.0], "expected": -39.0}, {"input": [-39.0, -84.5], "expected": -39.0}, {"input": [-39.0, -84.0], "expected": -39.0}, {"input": [-39.0, -83.5], "expected": -39.0}, {"input": [-39.0, -83.0], "expected": -39.0}, {"input": [-39.0, -82.5], "expected": -39.0}, {"input": [-39.0, -82.0], "expected": -39.0}, {"input": [-39.0, -81.5], "expected": -39.0}, {"input": [-39.0, -81.0], "expected": -39.0}, {"input": [-39.0, -80.5], "expected": -39.0}, {"input": [-39.0, -80.0], "expected": -39.0}, {"input": [-39.0, -79.5], "expected": -39.0}, {"input": [-39.0, -79.0], "expected": -39.0}, {"input": [-39.0, -78.5], "expected": -39.0}, {"input": [-39.0, -78.0], "expected": -39.0}, {"input": [-39.0, -77.5], "expected": -39.0}, {"input": [-39.0, -77.0], "expected": -39.0}, {"input": [-39.0, -76.5], "expected": -39.0}, {"input": [-39.0, -76.0], "expected": -39.0}, {"input": [-39.0, -75.5], "expected": -39.0}, {"input": [-39.0, -75.0], "expected": -39.0}, {"input": [-39.0, -74.5], "expected": -39.0}, {"input": [-39.0, -74.0], "expected": -39.0}, {"input": [-39.0, -73.5], "expected": -39.0}, {"input": [-39.0, -73.0], "expected": -39.0}, {"input": [-39.0, -72.5], "expected": -39.0}, {"input": [-39.0, -72.0], "expected": -38.99999999999999}, {"input": [-39.0, -71.5], "expected": -38.99999999999999}, {"input": [-39.0, -71.0], "expected": -38.999999999999986}, {"input": [-39.0, -70.5], "expected": -38.99999999999998}, {"input": [-39.0, -70.0], "expected": -38.999999999999964}, {"input": [-39.0, -69.5], "expected": -38.99999999999994}, {"input": [-39.0, -69.0], "expected": -38.99999999999991}, {"input": [-39.0, -68.5], "expected": -38.999999999999844}, {"input": [-39.0, -68.0], "expected": -38.999999999999744}, {"input": [-39.0, -67.5], "expected": -38.99999999999958}, {"input": [-39.0, -67.0], "expected": -38.99999999999931}, {"input": [-39.0, -66.5], "expected": -38.99999999999886}, {"input": [-39.0, -66.0], "expected": -38.99999999999812}, {"input": [-39.0, -65.5], "expected": -38.9999999999969}, {"input": [-39.0, -65.0], "expected": -38.99999999999489}, {"input": [-39.0, -64.5], "expected": -38.99999999999158}, {"input": [-39.0, -64.0], "expected": -38.99999999998611}, {"input": [-39.0, -63.5], "expected": -38.9999999999771}, {"input": [-39.0, -63.0], "expected": -38.99999999996225}, {"input": [-39.0, -62.5], "expected": -38.99999999993776}, {"input": [-39.0, -62.0], "expected": -38.99999999989738}, {"input": [-39.0, -61.5], "expected": -38.99999999983081}, {"input": [-39.0, -61.0], "expected": -38.999999999721055}, {"input": [-39.0, -60.5], "expected": -38.999999999540094}, {"input": [-39.0, -60.0], "expected": -38.999999999241744}, {"input": [-39.0, -59.5], "expected": -38.99999999874985}, {"input": [-39.0, -59.0], "expected": -38.99999999793884}, {"input": [-39.0, -58.5], "expected": -38.99999999660173}, {"input": [-39.0, -58.0], "expected": -38.99999999439721}, {"input": [-39.0, -57.5], "expected": -38.999999990762554}, {"input": [-39.0, -57.0], "expected": -38.99999998477002}, {"input": [-39.0, -56.5], "expected": -38.99999997489001}, {"input": [-39.0, -56.0], "expected": -38.999999958600625}, {"input": [-39.0, -55.5], "expected": -38.99999993174397}, {"input": [-39.0, -55.0], "expected": -38.99999988746483}, {"input": [-39.0, -54.5], "expected": -38.99999981446088}, {"input": [-39.0, -54.0], "expected": -38.999999694097724}, {"input": [-39.0, -53.5], "expected": -38.99999949565247}, {"input": [-39.0, -53.0], "expected": -38.999999168471625}, {"input": [-39.0, -52.5], "expected": -38.999998629041855}, {"input": [-39.0, -52.0], "expected": -38.99999773967315}, {"input": [-39.0, -51.5], "expected": -38.99999627335377}, {"input": [-39.0, -51.0], "expected": -38.99999385580652}, {"input": [-39.0, -50.5], "expected": -38.99998986995771}, {"input": [-39.0, -50.0], "expected": -38.99998329843868}, {"input": [-39.0, -49.5], "expected": -38.99997246392977}, {"input": [-39.0, -49.0], "expected": -38.99995460110078}, {"input": [-39.0, -48.5], "expected": -38.99992515097137}, {"input": [-39.0, -48.0], "expected": -38.99987659781028}, {"input": [-39.0, -47.5], "expected": -38.99979655232787}, {"input": [-39.0, -47.0], "expected": -38.9996645936271}, {"input": [-39.0, -46.5], "expected": -38.99944706852464}, {"input": [-39.0, -46.0], "expected": -38.99908853354623}, {"input": [-39.0, -45.5], "expected": -38.99849768984024}, {"input": [-39.0, -45.0], "expected": -38.99752431486227}, {"input": [-39.0, -44.5], "expected": -38.99592155672943}, {"input": [-39.0, -44.0], "expected": -38.99328465151088}, {"input": [-39.0, -43.5], "expected": -38.9889522551514}, {"input": [-39.0, -43.0], "expected": -38.98185007208219}, {"input": [-39.0, -42.5], "expected": -38.97024958172738}, {"input": [-39.0, -42.0], "expected": -38.951412648426256}, {"input": [-39.0, -41.5], "expected": -38.92111026570745}, {"input": [-39.0, -41.0], "expected": -38.87307198895703}, {"input": [-39.0, -40.5], "expected": -38.79858672201725}, {"input": [-39.0, -40.0], "expected": -38.68673831248178}, {"input": [-39.0, -39.5], "expected": -38.52592301581989}, {"input": [-39.0, -39.0], "expected": -38.30685281944005}, {"input": [-39.0, -38.5], "expected": -38.02592301581989}, {"input": [-39.0, -38.0], "expected": -37.68673831248178}, {"input": [-39.0, -37.5], "expected": -37.29858672201725}, {"input": [-39.0, -37.0], "expected": -36.87307198895703}, {"input": [-39.0, -36.5], "expected": -36.42111026570745}, {"input": [-39.0, -36.0], "expected": -35.951412648426256}, {"input": [-39.0, -35.5], "expected": -35.47024958172738}, {"input": [-39.0, -35.0], "expected": -34.98185007208219}, {"input": [-39.0, -34.5], "expected": -34.4889522551514}, {"input": [-39.0, -34.0], "expected": -33.99328465151088}, {"input": [-39.0, -33.5], "expected": -33.49592155672943}, {"input": [-39.0, -33.0], "expected": -32.99752431486227}, {"input": [-39.0, -32.5], "expected": -32.49849768984024}, {"input": [-39.0, -32.0], "expected": -31.999088533546225}, {"input": [-39.0, -31.5], "expected": -31.49944706852464}, {"input": [-39.0, -31.0], "expected": -30.999664593627106}, {"input": [-39.0, -30.5], "expected": -30.499796552327872}, {"input": [-39.0, -30.0], "expected": -29.999876597810278}, {"input": [-39.0, -29.5], "expected": -29.49992515097137}, {"input": [-39.0, -29.0], "expected": -28.999954601100782}, {"input": [-39.0, -28.5], "expected": -28.499972463929772}, {"input": [-39.0, -28.0], "expected": -27.999983298438682}, {"input": [-39.0, -27.5], "expected": -27.49998986995771}, {"input": [-39.0, -27.0], "expected": -26.999993855806522}, {"input": [-39.0, -26.5], "expected": -26.499996273353773}, {"input": [-39.0, -26.0], "expected": -25.999997739673148}, {"input": [-39.0, -25.5], "expected": -25.499998629041855}, {"input": [-39.0, -25.0], "expected": -24.999999168471625}, {"input": [-39.0, -24.5], "expected": -24.499999495652464}, {"input": [-39.0, -24.0], "expected": -23.999999694097728}, {"input": [-39.0, -23.5], "expected": -23.49999981446088}, {"input": [-39.0, -23.0], "expected": -22.99999988746483}, {"input": [-39.0, -22.5], "expected": -22.499999931743968}, {"input": [-39.0, -22.0], "expected": -21.999999958600625}, {"input": [-39.0, -21.5], "expected": -21.49999997489001}, {"input": [-39.0, -21.0], "expected": -20.99999998477002}, {"input": [-39.0, -20.5], "expected": -20.49999999076255}, {"input": [-39.0, -20.0], "expected": -19.999999994397204}, {"input": [-39.0, -19.5], "expected": -19.499999996601733}, {"input": [-39.0, -19.0], "expected": -18.999999997938847}, {"input": [-39.0, -18.5], "expected": -18.499999998749846}, {"input": [-39.0, -18.0], "expected": -17.999999999241744}, {"input": [-39.0, -17.5], "expected": -17.499999999540094}, {"input": [-39.0, -17.0], "expected": -16.99999999972105}, {"input": [-39.0, -16.5], "expected": -16.49999999983081}, {"input": [-39.0, -16.0], "expected": -15.999999999897382}, {"input": [-39.0, -15.5], "expected": -15.499999999937758}, {"input": [-39.0, -15.0], "expected": -14.999999999962249}, {"input": [-39.0, -14.5], "expected": -14.499999999977103}, {"input": [-39.0, -14.0], "expected": -13.999999999986112}, {"input": [-39.0, -13.5], "expected": -13.499999999991577}, {"input": [-39.0, -13.0], "expected": -12.999999999994891}, {"input": [-39.0, -12.5], "expected": -12.499999999996902}, {"input": [-39.0, -12.0], "expected": -11.99999999999812}, {"input": [-39.0, -11.5], "expected": -11.49999999999886}, {"input": [-39.0, -11.0], "expected": -10.999999999999309}, {"input": [-39.0, -10.5], "expected": -10.49999999999958}, {"input": [-39.0, -10.0], "expected": -9.999999999999746}, {"input": [-39.0, -9.5], "expected": -9.499999999999845}, {"input": [-39.0, -9.0], "expected": -8.999999999999906}, {"input": [-39.0, -8.5], "expected": -8.499999999999943}, {"input": [-39.0, -8.0], "expected": -7.999999999999965}, {"input": [-39.0, -7.5], "expected": -7.499999999999979}, {"input": [-39.0, -7.0], "expected": -6.999999999999988}, {"input": [-39.0, -6.5], "expected": -6.499999999999992}, {"input": [-39.0, -6.0], "expected": -5.999999999999996}, {"input": [-39.0, -5.5], "expected": -5.499999999999997}, {"input": [-39.0, -5.0], "expected": -4.999999999999998}, {"input": [-39.0, -4.5], "expected": -4.499999999999999}, {"input": [-39.0, -4.0], "expected": -3.9999999999999996}, {"input": [-39.0, -3.5], "expected": -3.4999999999999996}, {"input": [-39.0, -3.0], "expected": -2.9999999999999996}, {"input": [-39.0, -2.5], "expected": -2.5}, {"input": [-39.0, -2.0], "expected": -2.0}, {"input": [-39.0, -1.5], "expected": -1.5}, {"input": [-39.0, -1.0], "expected": -1.0}, {"input": [-39.0, -0.5], "expected": -0.5}, {"input": [-39.0, 0.0], "expected": 1.1548224173015786e-17}, {"input": [-39.0, 0.5], "expected": 0.5}, {"input": [-39.0, 1.0], "expected": 1.0}, {"input": [-39.0, 1.5], "expected": 1.5}, {"input": [-39.0, 2.0], "expected": 2.0}, {"input": [-39.0, 2.5], "expected": 2.5}, {"input": [-39.0, 3.0], "expected": 3.0}, {"input": [-39.0, 3.5], "expected": 3.5}, {"input": [-39.0, 4.0], "expected": 4.0}, {"input": [-39.0, 4.5], "expected": 4.5}, {"input": [-39.0, 5.0], "expected": 5.0}, {"input": [-39.0, 5.5], "expected": 5.5}, {"input": [-39.0, 6.0], "expected": 6.0}, {"input": [-39.0, 6.5], "expected": 6.5}, {"input": [-39.0, 7.0], "expected": 7.0}, {"input": [-39.0, 7.5], "expected": 7.5}, {"input": [-39.0, 8.0], "expected": 8.0}, {"input": [-39.0, 8.5], "expected": 8.5}, {"input": [-39.0, 9.0], "expected": 9.0}, {"input": [-39.0, 9.5], "expected": 9.5}, {"input": [-39.0, 10.0], "expected": 10.0}, {"input": [-39.0, 10.5], "expected": 10.5}, {"input": [-39.0, 11.0], "expected": 11.0}, {"input": [-39.0, 11.5], "expected": 11.5}, {"input": [-39.0, 12.0], "expected": 12.0}, {"input": [-39.0, 12.5], "expected": 12.5}, {"input": [-39.0, 13.0], "expected": 13.0}, {"input": [-39.0, 13.5], "expected": 13.5}, {"input": [-39.0, 14.0], "expected": 14.0}, {"input": [-39.0, 14.5], "expected": 14.5}, {"input": [-39.0, 15.0], "expected": 15.0}, {"input": [-39.0, 15.5], "expected": 15.5}, {"input": [-39.0, 16.0], "expected": 16.0}, {"input": [-39.0, 16.5], "expected": 16.5}, {"input": [-39.0, 17.0], "expected": 17.0}, {"input": [-39.0, 17.5], "expected": 17.5}, {"input": [-39.0, 18.0], "expected": 18.0}, {"input": [-39.0, 18.5], "expected": 18.5}, {"input": [-39.0, 19.0], "expected": 19.0}, {"input": [-39.0, 19.5], "expected": 19.5}, {"input": [-39.0, 20.0], "expected": 20.0}, {"input": [-39.0, 20.5], "expected": 20.5}, {"input": [-39.0, 21.0], "expected": 21.0}, {"input": [-39.0, 21.5], "expected": 21.5}, {"input": [-39.0, 22.0], "expected": 22.0}, {"input": [-39.0, 22.5], "expected": 22.5}, {"input": [-39.0, 23.0], "expected": 23.0}, {"input": [-39.0, 23.5], "expected": 23.5}, {"input": [-39.0, 24.0], "expected": 24.0}, {"input": [-39.0, 24.5], "expected": 24.5}, {"input": [-39.0, 25.0], "expected": 25.0}, {"input": [-39.0, 25.5], "expected": 25.5}, {"input": [-39.0, 26.0], "expected": 26.0}, {"input": [-39.0, 26.5], "expected": 26.5}, {"input": [-39.0, 27.0], "expected": 27.0}, {"input": [-39.0, 27.5], "expected": 27.5}, {"input": [-39.0, 28.0], "expected": 28.0}, {"input": [-39.0, 28.5], "expected": 28.5}, {"input": [-39.0, 29.0], "expected": 29.0}, {"input": [-39.0, 29.5], "expected": 29.5}, {"input": [-39.0, 30.0], "expected": 30.0}, {"input": [-39.0, 30.5], "expected": 30.5}, {"input": [-39.0, 31.0], "expected": 31.0}, {"input": [-39.0, 31.5], "expected": 31.5}, {"input": [-39.0, 32.0], "expected": 32.0}, {"input": [-39.0, 32.5], "expected": 32.5}, {"input": [-39.0, 33.0], "expected": 33.0}, {"input": [-39.0, 33.5], "expected": 33.5}, {"input": [-39.0, 34.0], "expected": 34.0}, {"input": [-39.0, 34.5], "expected": 34.5}, {"input": [-39.0, 35.0], "expected": 35.0}, {"input": [-39.0, 35.5], "expected": 35.5}, {"input": [-39.0, 36.0], "expected": 36.0}, {"input": [-39.0, 36.5], "expected": 36.5}, {"input": [-39.0, 37.0], "expected": 37.0}, {"input": [-39.0, 37.5], "expected": 37.5}, {"input": [-39.0, 38.0], "expected": 38.0}, {"input": [-39.0, 38.5], "expected": 38.5}, {"input": [-39.0, 39.0], "expected": 39.0}, {"input": [-39.0, 39.5], "expected": 39.5}, {"input": [-39.0, 40.0], "expected": 40.0}, {"input": [-39.0, 40.5], "expected": 40.5}, {"input": [-39.0, 41.0], "expected": 41.0}, {"input": [-39.0, 41.5], "expected": 41.5}, {"input": [-39.0, 42.0], "expected": 42.0}, {"input": [-39.0, 42.5], "expected": 42.5}, {"input": [-39.0, 43.0], "expected": 43.0}, {"input": [-39.0, 43.5], "expected": 43.5}, {"input": [-39.0, 44.0], "expected": 44.0}, {"input": [-39.0, 44.5], "expected": 44.5}, {"input": [-39.0, 45.0], "expected": 45.0}, {"input": [-39.0, 45.5], "expected": 45.5}, {"input": [-39.0, 46.0], "expected": 46.0}, {"input": [-39.0, 46.5], "expected": 46.5}, {"input": [-39.0, 47.0], "expected": 47.0}, {"input": [-39.0, 47.5], "expected": 47.5}, {"input": [-39.0, 48.0], "expected": 48.0}, {"input": [-39.0, 48.5], "expected": 48.5}, {"input": [-39.0, 49.0], "expected": 49.0}, {"input": [-39.0, 49.5], "expected": 49.5}, {"input": [-39.0, 50.0], "expected": 50.0}, {"input": [-39.0, 50.5], "expected": 50.5}, {"input": [-39.0, 51.0], "expected": 51.0}, {"input": [-39.0, 51.5], "expected": 51.5}, {"input": [-39.0, 52.0], "expected": 52.0}, {"input": [-39.0, 52.5], "expected": 52.5}, {"input": [-39.0, 53.0], "expected": 53.0}, {"input": [-39.0, 53.5], "expected": 53.5}, {"input": [-39.0, 54.0], "expected": 54.0}, {"input": [-39.0, 54.5], "expected": 54.5}, {"input": [-39.0, 55.0], "expected": 55.0}, {"input": [-39.0, 55.5], "expected": 55.5}, {"input": [-39.0, 56.0], "expected": 56.0}, {"input": [-39.0, 56.5], "expected": 56.5}, {"input": [-39.0, 57.0], "expected": 57.0}, {"input": [-39.0, 57.5], "expected": 57.5}, {"input": [-39.0, 58.0], "expected": 58.0}, {"input": [-39.0, 58.5], "expected": 58.5}, {"input": [-39.0, 59.0], "expected": 59.0}, {"input": [-39.0, 59.5], "expected": 59.5}, {"input": [-39.0, 60.0], "expected": 60.0}, {"input": [-39.0, 60.5], "expected": 60.5}, {"input": [-39.0, 61.0], "expected": 61.0}, {"input": [-39.0, 61.5], "expected": 61.5}, {"input": [-39.0, 62.0], "expected": 62.0}, {"input": [-39.0, 62.5], "expected": 62.5}, {"input": [-39.0, 63.0], "expected": 63.0}, {"input": [-39.0, 63.5], "expected": 63.5}, {"input": [-39.0, 64.0], "expected": 64.0}, {"input": [-39.0, 64.5], "expected": 64.5}, {"input": [-39.0, 65.0], "expected": 65.0}, {"input": [-39.0, 65.5], "expected": 65.5}, {"input": [-39.0, 66.0], "expected": 66.0}, {"input": [-39.0, 66.5], "expected": 66.5}, {"input": [-39.0, 67.0], "expected": 67.0}, {"input": [-39.0, 67.5], "expected": 67.5}, {"input": [-39.0, 68.0], "expected": 68.0}, {"input": [-39.0, 68.5], "expected": 68.5}, {"input": [-39.0, 69.0], "expected": 69.0}, {"input": [-39.0, 69.5], "expected": 69.5}, {"input": [-39.0, 70.0], "expected": 70.0}, {"input": [-39.0, 70.5], "expected": 70.5}, {"input": [-39.0, 71.0], "expected": 71.0}, {"input": [-39.0, 71.5], "expected": 71.5}, {"input": [-39.0, 72.0], "expected": 72.0}, {"input": [-39.0, 72.5], "expected": 72.5}, {"input": [-39.0, 73.0], "expected": 73.0}, {"input": [-39.0, 73.5], "expected": 73.5}, {"input": [-39.0, 74.0], "expected": 74.0}, {"input": [-39.0, 74.5], "expected": 74.5}, {"input": [-39.0, 75.0], "expected": 75.0}, {"input": [-39.0, 75.5], "expected": 75.5}, {"input": [-39.0, 76.0], "expected": 76.0}, {"input": [-39.0, 76.5], "expected": 76.5}, {"input": [-39.0, 77.0], "expected": 77.0}, {"input": [-39.0, 77.5], "expected": 77.5}, {"input": [-39.0, 78.0], "expected": 78.0}, {"input": [-39.0, 78.5], "expected": 78.5}, {"input": [-39.0, 79.0], "expected": 79.0}, {"input": [-39.0, 79.5], "expected": 79.5}, {"input": [-39.0, 80.0], "expected": 80.0}, {"input": [-39.0, 80.5], "expected": 80.5}, {"input": [-39.0, 81.0], "expected": 81.0}, {"input": [-39.0, 81.5], "expected": 81.5}, {"input": [-39.0, 82.0], "expected": 82.0}, {"input": [-39.0, 82.5], "expected": 82.5}, {"input": [-39.0, 83.0], "expected": 83.0}, {"input": [-39.0, 83.5], "expected": 83.5}, {"input": [-39.0, 84.0], "expected": 84.0}, {"input": [-39.0, 84.5], "expected": 84.5}, {"input": [-39.0, 85.0], "expected": 85.0}, {"input": [-39.0, 85.5], "expected": 85.5}, {"input": [-39.0, 86.0], "expected": 86.0}, {"input": [-39.0, 86.5], "expected": 86.5}, {"input": [-39.0, 87.0], "expected": 87.0}, {"input": [-39.0, 87.5], "expected": 87.5}, {"input": [-39.0, 88.0], "expected": 88.0}, {"input": [-39.0, 88.5], "expected": 88.5}, {"input": [-39.0, 89.0], "expected": 89.0}, {"input": [-39.0, 89.5], "expected": 89.5}, {"input": [-39.0, 90.0], "expected": 90.0}, {"input": [-39.0, 90.5], "expected": 90.5}, {"input": [-39.0, 91.0], "expected": 91.0}, {"input": [-39.0, 91.5], "expected": 91.5}, {"input": [-39.0, 92.0], "expected": 92.0}, {"input": [-39.0, 92.5], "expected": 92.5}, {"input": [-39.0, 93.0], "expected": 93.0}, {"input": [-39.0, 93.5], "expected": 93.5}, {"input": [-39.0, 94.0], "expected": 94.0}, {"input": [-39.0, 94.5], "expected": 94.5}, {"input": [-39.0, 95.0], "expected": 95.0}, {"input": [-39.0, 95.5], "expected": 95.5}, {"input": [-39.0, 96.0], "expected": 96.0}, {"input": [-39.0, 96.5], "expected": 96.5}, {"input": [-39.0, 97.0], "expected": 97.0}, {"input": [-39.0, 97.5], "expected": 97.5}, {"input": [-39.0, 98.0], "expected": 98.0}, {"input": [-39.0, 98.5], "expected": 98.5}, {"input": [-39.0, 99.0], "expected": 99.0}, {"input": [-39.0, 99.5], "expected": 99.5}, {"input": [-38.5, -100.0], "expected": -38.5}, {"input": [-38.5, -99.5], "expected": -38.5}, {"input": [-38.5, -99.0], "expected": -38.5}, {"input": [-38.5, -98.5], "expected": -38.5}, {"input": [-38.5, -98.0], "expected": -38.5}, {"input": [-38.5, -97.5], "expected": -38.5}, {"input": [-38.5, -97.0], "expected": -38.5}, {"input": [-38.5, -96.5], "expected": -38.5}, {"input": [-38.5, -96.0], "expected": -38.5}, {"input": [-38.5, -95.5], "expected": -38.5}, {"input": [-38.5, -95.0], "expected": -38.5}, {"input": [-38.5, -94.5], "expected": -38.5}, {"input": [-38.5, -94.0], "expected": -38.5}, {"input": [-38.5, -93.5], "expected": -38.5}, {"input": [-38.5, -93.0], "expected": -38.5}, {"input": [-38.5, -92.5], "expected": -38.5}, {"input": [-38.5, -92.0], "expected": -38.5}, {"input": [-38.5, -91.5], "expected": -38.5}, {"input": [-38.5, -91.0], "expected": -38.5}, {"input": [-38.5, -90.5], "expected": -38.5}, {"input": [-38.5, -90.0], "expected": -38.5}, {"input": [-38.5, -89.5], "expected": -38.5}, {"input": [-38.5, -89.0], "expected": -38.5}, {"input": [-38.5, -88.5], "expected": -38.5}, {"input": [-38.5, -88.0], "expected": -38.5}, {"input": [-38.5, -87.5], "expected": -38.5}, {"input": [-38.5, -87.0], "expected": -38.5}, {"input": [-38.5, -86.5], "expected": -38.5}, {"input": [-38.5, -86.0], "expected": -38.5}, {"input": [-38.5, -85.5], "expected": -38.5}, {"input": [-38.5, -85.0], "expected": -38.5}, {"input": [-38.5, -84.5], "expected": -38.5}, {"input": [-38.5, -84.0], "expected": -38.5}, {"input": [-38.5, -83.5], "expected": -38.5}, {"input": [-38.5, -83.0], "expected": -38.5}, {"input": [-38.5, -82.5], "expected": -38.5}, {"input": [-38.5, -82.0], "expected": -38.5}, {"input": [-38.5, -81.5], "expected": -38.5}, {"input": [-38.5, -81.0], "expected": -38.5}, {"input": [-38.5, -80.5], "expected": -38.5}, {"input": [-38.5, -80.0], "expected": -38.5}, {"input": [-38.5, -79.5], "expected": -38.5}, {"input": [-38.5, -79.0], "expected": -38.5}, {"input": [-38.5, -78.5], "expected": -38.5}, {"input": [-38.5, -78.0], "expected": -38.5}, {"input": [-38.5, -77.5], "expected": -38.5}, {"input": [-38.5, -77.0], "expected": -38.5}, {"input": [-38.5, -76.5], "expected": -38.5}, {"input": [-38.5, -76.0], "expected": -38.5}, {"input": [-38.5, -75.5], "expected": -38.5}, {"input": [-38.5, -75.0], "expected": -38.5}, {"input": [-38.5, -74.5], "expected": -38.5}, {"input": [-38.5, -74.0], "expected": -38.5}, {"input": [-38.5, -73.5], "expected": -38.5}, {"input": [-38.5, -73.0], "expected": -38.5}, {"input": [-38.5, -72.5], "expected": -38.5}, {"input": [-38.5, -72.0], "expected": -38.5}, {"input": [-38.5, -71.5], "expected": -38.49999999999999}, {"input": [-38.5, -71.0], "expected": -38.49999999999999}, {"input": [-38.5, -70.5], "expected": -38.499999999999986}, {"input": [-38.5, -70.0], "expected": -38.49999999999998}, {"input": [-38.5, -69.5], "expected": -38.499999999999964}, {"input": [-38.5, -69.0], "expected": -38.49999999999994}, {"input": [-38.5, -68.5], "expected": -38.49999999999991}, {"input": [-38.5, -68.0], "expected": -38.499999999999844}, {"input": [-38.5, -67.5], "expected": -38.499999999999744}, {"input": [-38.5, -67.0], "expected": -38.49999999999958}, {"input": [-38.5, -66.5], "expected": -38.49999999999931}, {"input": [-38.5, -66.0], "expected": -38.49999999999886}, {"input": [-38.5, -65.5], "expected": -38.49999999999812}, {"input": [-38.5, -65.0], "expected": -38.4999999999969}, {"input": [-38.5, -64.5], "expected": -38.49999999999489}, {"input": [-38.5, -64.0], "expected": -38.49999999999158}, {"input": [-38.5, -63.5], "expected": -38.49999999998611}, {"input": [-38.5, -63.0], "expected": -38.4999999999771}, {"input": [-38.5, -62.5], "expected": -38.49999999996225}, {"input": [-38.5, -62.0], "expected": -38.49999999993776}, {"input": [-38.5, -61.5], "expected": -38.49999999989738}, {"input": [-38.5, -61.0], "expected": -38.49999999983081}, {"input": [-38.5, -60.5], "expected": -38.499999999721055}, {"input": [-38.5, -60.0], "expected": -38.499999999540094}, {"input": [-38.5, -59.5], "expected": -38.499999999241744}, {"input": [-38.5, -59.0], "expected": -38.49999999874985}, {"input": [-38.5, -58.5], "expected": -38.49999999793884}, {"input": [-38.5, -58.0], "expected": -38.49999999660173}, {"input": [-38.5, -57.5], "expected": -38.49999999439721}, {"input": [-38.5, -57.0], "expected": -38.499999990762554}, {"input": [-38.5, -56.5], "expected": -38.49999998477002}, {"input": [-38.5, -56.0], "expected": -38.49999997489001}, {"input": [-38.5, -55.5], "expected": -38.499999958600625}, {"input": [-38.5, -55.0], "expected": -38.49999993174397}, {"input": [-38.5, -54.5], "expected": -38.49999988746483}, {"input": [-38.5, -54.0], "expected": -38.49999981446088}, {"input": [-38.5, -53.5], "expected": -38.499999694097724}, {"input": [-38.5, -53.0], "expected": -38.49999949565247}, {"input": [-38.5, -52.5], "expected": -38.499999168471625}, {"input": [-38.5, -52.0], "expected": -38.499998629041855}, {"input": [-38.5, -51.5], "expected": -38.49999773967315}, {"input": [-38.5, -51.0], "expected": -38.49999627335377}, {"input": [-38.5, -50.5], "expected": -38.49999385580652}, {"input": [-38.5, -50.0], "expected": -38.49998986995771}, {"input": [-38.5, -49.5], "expected": -38.49998329843868}, {"input": [-38.5, -49.0], "expected": -38.49997246392977}, {"input": [-38.5, -48.5], "expected": -38.49995460110078}, {"input": [-38.5, -48.0], "expected": -38.49992515097137}, {"input": [-38.5, -47.5], "expected": -38.49987659781028}, {"input": [-38.5, -47.0], "expected": -38.49979655232787}, {"input": [-38.5, -46.5], "expected": -38.4996645936271}, {"input": [-38.5, -46.0], "expected": -38.49944706852464}, {"input": [-38.5, -45.5], "expected": -38.49908853354623}, {"input": [-38.5, -45.0], "expected": -38.49849768984024}, {"input": [-38.5, -44.5], "expected": -38.49752431486227}, {"input": [-38.5, -44.0], "expected": -38.49592155672943}, {"input": [-38.5, -43.5], "expected": -38.49328465151088}, {"input": [-38.5, -43.0], "expected": -38.4889522551514}, {"input": [-38.5, -42.5], "expected": -38.48185007208219}, {"input": [-38.5, -42.0], "expected": -38.47024958172738}, {"input": [-38.5, -41.5], "expected": -38.451412648426256}, {"input": [-38.5, -41.0], "expected": -38.42111026570745}, {"input": [-38.5, -40.5], "expected": -38.37307198895703}, {"input": [-38.5, -40.0], "expected": -38.29858672201725}, {"input": [-38.5, -39.5], "expected": -38.18673831248178}, {"input": [-38.5, -39.0], "expected": -38.02592301581989}, {"input": [-38.5, -38.5], "expected": -37.80685281944005}, {"input": [-38.5, -38.0], "expected": -37.52592301581989}, {"input": [-38.5, -37.5], "expected": -37.18673831248178}, {"input": [-38.5, -37.0], "expected": -36.79858672201725}, {"input": [-38.5, -36.5], "expected": -36.37307198895703}, {"input": [-38.5, -36.0], "expected": -35.92111026570745}, {"input": [-38.5, -35.5], "expected": -35.451412648426256}, {"input": [-38.5, -35.0], "expected": -34.97024958172738}, {"input": [-38.5, -34.5], "expected": -34.48185007208219}, {"input": [-38.5, -34.0], "expected": -33.9889522551514}, {"input": [-38.5, -33.5], "expected": -33.49328465151088}, {"input": [-38.5, -33.0], "expected": -32.99592155672943}, {"input": [-38.5, -32.5], "expected": -32.49752431486227}, {"input": [-38.5, -32.0], "expected": -31.998497689840246}, {"input": [-38.5, -31.5], "expected": -31.499088533546225}, {"input": [-38.5, -31.0], "expected": -30.99944706852464}, {"input": [-38.5, -30.5], "expected": -30.499664593627106}, {"input": [-38.5, -30.0], "expected": -29.999796552327872}, {"input": [-38.5, -29.5], "expected": -29.499876597810278}, {"input": [-38.5, -29.0], "expected": -28.99992515097137}, {"input": [-38.5, -28.5], "expected": -28.499954601100782}, {"input": [-38.5, -28.0], "expected": -27.999972463929772}, {"input": [-38.5, -27.5], "expected": -27.499983298438682}, {"input": [-38.5, -27.0], "expected": -26.99998986995771}, {"input": [-38.5, -26.5], "expected": -26.499993855806522}, {"input": [-38.5, -26.0], "expected": -25.999996273353773}, {"input": [-38.5, -25.5], "expected": -25.499997739673148}, {"input": [-38.5, -25.0], "expected": -24.999998629041855}, {"input": [-38.5, -24.5], "expected": -24.499999168471625}, {"input": [-38.5, -24.0], "expected": -23.999999495652464}, {"input": [-38.5, -23.5], "expected": -23.499999694097728}, {"input": [-38.5, -23.0], "expected": -22.99999981446088}, {"input": [-38.5, -22.5], "expected": -22.49999988746483}, {"input": [-38.5, -22.0], "expected": -21.999999931743968}, {"input": [-38.5, -21.5], "expected": -21.499999958600625}, {"input": [-38.5, -21.0], "expected": -20.99999997489001}, {"input": [-38.5, -20.5], "expected": -20.49999998477002}, {"input": [-38.5, -20.0], "expected": -19.99999999076255}, {"input": [-38.5, -19.5], "expected": -19.499999994397204}, {"input": [-38.5, -19.0], "expected": -18.999999996601733}, {"input": [-38.5, -18.5], "expected": -18.499999997938847}, {"input": [-38.5, -18.0], "expected": -17.999999998749846}, {"input": [-38.5, -17.5], "expected": -17.499999999241744}, {"input": [-38.5, -17.0], "expected": -16.999999999540094}, {"input": [-38.5, -16.5], "expected": -16.49999999972105}, {"input": [-38.5, -16.0], "expected": -15.999999999830811}, {"input": [-38.5, -15.5], "expected": -15.499999999897382}, {"input": [-38.5, -15.0], "expected": -14.999999999937758}, {"input": [-38.5, -14.5], "expected": -14.499999999962249}, {"input": [-38.5, -14.0], "expected": -13.999999999977103}, {"input": [-38.5, -13.5], "expected": -13.499999999986112}, {"input": [-38.5, -13.0], "expected": -12.999999999991577}, {"input": [-38.5, -12.5], "expected": -12.499999999994891}, {"input": [-38.5, -12.0], "expected": -11.999999999996902}, {"input": [-38.5, -11.5], "expected": -11.49999999999812}, {"input": [-38.5, -11.0], "expected": -10.99999999999886}, {"input": [-38.5, -10.5], "expected": -10.499999999999309}, {"input": [-38.5, -10.0], "expected": -9.99999999999958}, {"input": [-38.5, -9.5], "expected": -9.499999999999746}, {"input": [-38.5, -9.0], "expected": -8.999999999999845}, {"input": [-38.5, -8.5], "expected": -8.499999999999906}, {"input": [-38.5, -8.0], "expected": -7.999999999999943}, {"input": [-38.5, -7.5], "expected": -7.499999999999965}, {"input": [-38.5, -7.0], "expected": -6.999999999999979}, {"input": [-38.5, -6.5], "expected": -6.499999999999988}, {"input": [-38.5, -6.0], "expected": -5.999999999999992}, {"input": [-38.5, -5.5], "expected": -5.499999999999996}, {"input": [-38.5, -5.0], "expected": -4.999999999999997}, {"input": [-38.5, -4.5], "expected": -4.499999999999998}, {"input": [-38.5, -4.0], "expected": -3.999999999999999}, {"input": [-38.5, -3.5], "expected": -3.4999999999999996}, {"input": [-38.5, -3.0], "expected": -2.9999999999999996}, {"input": [-38.5, -2.5], "expected": -2.4999999999999996}, {"input": [-38.5, -2.0], "expected": -1.9999999999999998}, {"input": [-38.5, -1.5], "expected": -1.5}, {"input": [-38.5, -1.0], "expected": -1.0}, {"input": [-38.5, -0.5], "expected": -0.49999999999999994}, {"input": [-38.5, 0.0], "expected": 1.9039802832864523e-17}, {"input": [-38.5, 0.5], "expected": 0.5}, {"input": [-38.5, 1.0], "expected": 1.0}, {"input": [-38.5, 1.5], "expected": 1.5}, {"input": [-38.5, 2.0], "expected": 2.0}, {"input": [-38.5, 2.5], "expected": 2.5}, {"input": [-38.5, 3.0], "expected": 3.0}, {"input": [-38.5, 3.5], "expected": 3.5}, {"input": [-38.5, 4.0], "expected": 4.0}, {"input": [-38.5, 4.5], "expected": 4.5}, {"input": [-38.5, 5.0], "expected": 5.0}, {"input": [-38.5, 5.5], "expected": 5.5}, {"input": [-38.5, 6.0], "expected": 6.0}, {"input": [-38.5, 6.5], "expected": 6.5}, {"input": [-38.5, 7.0], "expected": 7.0}, {"input": [-38.5, 7.5], "expected": 7.5}, {"input": [-38.5, 8.0], "expected": 8.0}, {"input": [-38.5, 8.5], "expected": 8.5}, {"input": [-38.5, 9.0], "expected": 9.0}, {"input": [-38.5, 9.5], "expected": 9.5}, {"input": [-38.5, 10.0], "expected": 10.0}, {"input": [-38.5, 10.5], "expected": 10.5}, {"input": [-38.5, 11.0], "expected": 11.0}, {"input": [-38.5, 11.5], "expected": 11.5}, {"input": [-38.5, 12.0], "expected": 12.0}, {"input": [-38.5, 12.5], "expected": 12.5}, {"input": [-38.5, 13.0], "expected": 13.0}, {"input": [-38.5, 13.5], "expected": 13.5}, {"input": [-38.5, 14.0], "expected": 14.0}, {"input": [-38.5, 14.5], "expected": 14.5}, {"input": [-38.5, 15.0], "expected": 15.0}, {"input": [-38.5, 15.5], "expected": 15.5}, {"input": [-38.5, 16.0], "expected": 16.0}, {"input": [-38.5, 16.5], "expected": 16.5}, {"input": [-38.5, 17.0], "expected": 17.0}, {"input": [-38.5, 17.5], "expected": 17.5}, {"input": [-38.5, 18.0], "expected": 18.0}, {"input": [-38.5, 18.5], "expected": 18.5}, {"input": [-38.5, 19.0], "expected": 19.0}, {"input": [-38.5, 19.5], "expected": 19.5}, {"input": [-38.5, 20.0], "expected": 20.0}, {"input": [-38.5, 20.5], "expected": 20.5}, {"input": [-38.5, 21.0], "expected": 21.0}, {"input": [-38.5, 21.5], "expected": 21.5}, {"input": [-38.5, 22.0], "expected": 22.0}, {"input": [-38.5, 22.5], "expected": 22.5}, {"input": [-38.5, 23.0], "expected": 23.0}, {"input": [-38.5, 23.5], "expected": 23.5}, {"input": [-38.5, 24.0], "expected": 24.0}, {"input": [-38.5, 24.5], "expected": 24.5}, {"input": [-38.5, 25.0], "expected": 25.0}, {"input": [-38.5, 25.5], "expected": 25.5}, {"input": [-38.5, 26.0], "expected": 26.0}, {"input": [-38.5, 26.5], "expected": 26.5}, {"input": [-38.5, 27.0], "expected": 27.0}, {"input": [-38.5, 27.5], "expected": 27.5}, {"input": [-38.5, 28.0], "expected": 28.0}, {"input": [-38.5, 28.5], "expected": 28.5}, {"input": [-38.5, 29.0], "expected": 29.0}, {"input": [-38.5, 29.5], "expected": 29.5}, {"input": [-38.5, 30.0], "expected": 30.0}, {"input": [-38.5, 30.5], "expected": 30.5}, {"input": [-38.5, 31.0], "expected": 31.0}, {"input": [-38.5, 31.5], "expected": 31.5}, {"input": [-38.5, 32.0], "expected": 32.0}, {"input": [-38.5, 32.5], "expected": 32.5}, {"input": [-38.5, 33.0], "expected": 33.0}, {"input": [-38.5, 33.5], "expected": 33.5}, {"input": [-38.5, 34.0], "expected": 34.0}, {"input": [-38.5, 34.5], "expected": 34.5}, {"input": [-38.5, 35.0], "expected": 35.0}, {"input": [-38.5, 35.5], "expected": 35.5}, {"input": [-38.5, 36.0], "expected": 36.0}, {"input": [-38.5, 36.5], "expected": 36.5}, {"input": [-38.5, 37.0], "expected": 37.0}, {"input": [-38.5, 37.5], "expected": 37.5}, {"input": [-38.5, 38.0], "expected": 38.0}, {"input": [-38.5, 38.5], "expected": 38.5}, {"input": [-38.5, 39.0], "expected": 39.0}, {"input": [-38.5, 39.5], "expected": 39.5}, {"input": [-38.5, 40.0], "expected": 40.0}, {"input": [-38.5, 40.5], "expected": 40.5}, {"input": [-38.5, 41.0], "expected": 41.0}, {"input": [-38.5, 41.5], "expected": 41.5}, {"input": [-38.5, 42.0], "expected": 42.0}, {"input": [-38.5, 42.5], "expected": 42.5}, {"input": [-38.5, 43.0], "expected": 43.0}, {"input": [-38.5, 43.5], "expected": 43.5}, {"input": [-38.5, 44.0], "expected": 44.0}, {"input": [-38.5, 44.5], "expected": 44.5}, {"input": [-38.5, 45.0], "expected": 45.0}, {"input": [-38.5, 45.5], "expected": 45.5}, {"input": [-38.5, 46.0], "expected": 46.0}, {"input": [-38.5, 46.5], "expected": 46.5}, {"input": [-38.5, 47.0], "expected": 47.0}, {"input": [-38.5, 47.5], "expected": 47.5}, {"input": [-38.5, 48.0], "expected": 48.0}, {"input": [-38.5, 48.5], "expected": 48.5}, {"input": [-38.5, 49.0], "expected": 49.0}, {"input": [-38.5, 49.5], "expected": 49.5}, {"input": [-38.5, 50.0], "expected": 50.0}, {"input": [-38.5, 50.5], "expected": 50.5}, {"input": [-38.5, 51.0], "expected": 51.0}, {"input": [-38.5, 51.5], "expected": 51.5}, {"input": [-38.5, 52.0], "expected": 52.0}, {"input": [-38.5, 52.5], "expected": 52.5}, {"input": [-38.5, 53.0], "expected": 53.0}, {"input": [-38.5, 53.5], "expected": 53.5}, {"input": [-38.5, 54.0], "expected": 54.0}, {"input": [-38.5, 54.5], "expected": 54.5}, {"input": [-38.5, 55.0], "expected": 55.0}, {"input": [-38.5, 55.5], "expected": 55.5}, {"input": [-38.5, 56.0], "expected": 56.0}, {"input": [-38.5, 56.5], "expected": 56.5}, {"input": [-38.5, 57.0], "expected": 57.0}, {"input": [-38.5, 57.5], "expected": 57.5}, {"input": [-38.5, 58.0], "expected": 58.0}, {"input": [-38.5, 58.5], "expected": 58.5}, {"input": [-38.5, 59.0], "expected": 59.0}, {"input": [-38.5, 59.5], "expected": 59.5}, {"input": [-38.5, 60.0], "expected": 60.0}, {"input": [-38.5, 60.5], "expected": 60.5}, {"input": [-38.5, 61.0], "expected": 61.0}, {"input": [-38.5, 61.5], "expected": 61.5}, {"input": [-38.5, 62.0], "expected": 62.0}, {"input": [-38.5, 62.5], "expected": 62.5}, {"input": [-38.5, 63.0], "expected": 63.0}, {"input": [-38.5, 63.5], "expected": 63.5}, {"input": [-38.5, 64.0], "expected": 64.0}, {"input": [-38.5, 64.5], "expected": 64.5}, {"input": [-38.5, 65.0], "expected": 65.0}, {"input": [-38.5, 65.5], "expected": 65.5}, {"input": [-38.5, 66.0], "expected": 66.0}, {"input": [-38.5, 66.5], "expected": 66.5}, {"input": [-38.5, 67.0], "expected": 67.0}, {"input": [-38.5, 67.5], "expected": 67.5}, {"input": [-38.5, 68.0], "expected": 68.0}, {"input": [-38.5, 68.5], "expected": 68.5}, {"input": [-38.5, 69.0], "expected": 69.0}, {"input": [-38.5, 69.5], "expected": 69.5}, {"input": [-38.5, 70.0], "expected": 70.0}, {"input": [-38.5, 70.5], "expected": 70.5}, {"input": [-38.5, 71.0], "expected": 71.0}, {"input": [-38.5, 71.5], "expected": 71.5}, {"input": [-38.5, 72.0], "expected": 72.0}, {"input": [-38.5, 72.5], "expected": 72.5}, {"input": [-38.5, 73.0], "expected": 73.0}, {"input": [-38.5, 73.5], "expected": 73.5}, {"input": [-38.5, 74.0], "expected": 74.0}, {"input": [-38.5, 74.5], "expected": 74.5}, {"input": [-38.5, 75.0], "expected": 75.0}, {"input": [-38.5, 75.5], "expected": 75.5}, {"input": [-38.5, 76.0], "expected": 76.0}, {"input": [-38.5, 76.5], "expected": 76.5}, {"input": [-38.5, 77.0], "expected": 77.0}, {"input": [-38.5, 77.5], "expected": 77.5}, {"input": [-38.5, 78.0], "expected": 78.0}, {"input": [-38.5, 78.5], "expected": 78.5}, {"input": [-38.5, 79.0], "expected": 79.0}, {"input": [-38.5, 79.5], "expected": 79.5}, {"input": [-38.5, 80.0], "expected": 80.0}, {"input": [-38.5, 80.5], "expected": 80.5}, {"input": [-38.5, 81.0], "expected": 81.0}, {"input": [-38.5, 81.5], "expected": 81.5}, {"input": [-38.5, 82.0], "expected": 82.0}, {"input": [-38.5, 82.5], "expected": 82.5}, {"input": [-38.5, 83.0], "expected": 83.0}, {"input": [-38.5, 83.5], "expected": 83.5}, {"input": [-38.5, 84.0], "expected": 84.0}, {"input": [-38.5, 84.5], "expected": 84.5}, {"input": [-38.5, 85.0], "expected": 85.0}, {"input": [-38.5, 85.5], "expected": 85.5}, {"input": [-38.5, 86.0], "expected": 86.0}, {"input": [-38.5, 86.5], "expected": 86.5}, {"input": [-38.5, 87.0], "expected": 87.0}, {"input": [-38.5, 87.5], "expected": 87.5}, {"input": [-38.5, 88.0], "expected": 88.0}, {"input": [-38.5, 88.5], "expected": 88.5}, {"input": [-38.5, 89.0], "expected": 89.0}, {"input": [-38.5, 89.5], "expected": 89.5}, {"input": [-38.5, 90.0], "expected": 90.0}, {"input": [-38.5, 90.5], "expected": 90.5}, {"input": [-38.5, 91.0], "expected": 91.0}, {"input": [-38.5, 91.5], "expected": 91.5}, {"input": [-38.5, 92.0], "expected": 92.0}, {"input": [-38.5, 92.5], "expected": 92.5}, {"input": [-38.5, 93.0], "expected": 93.0}, {"input": [-38.5, 93.5], "expected": 93.5}, {"input": [-38.5, 94.0], "expected": 94.0}, {"input": [-38.5, 94.5], "expected": 94.5}, {"input": [-38.5, 95.0], "expected": 95.0}, {"input": [-38.5, 95.5], "expected": 95.5}, {"input": [-38.5, 96.0], "expected": 96.0}, {"input": [-38.5, 96.5], "expected": 96.5}, {"input": [-38.5, 97.0], "expected": 97.0}, {"input": [-38.5, 97.5], "expected": 97.5}, {"input": [-38.5, 98.0], "expected": 98.0}, {"input": [-38.5, 98.5], "expected": 98.5}, {"input": [-38.5, 99.0], "expected": 99.0}, {"input": [-38.5, 99.5], "expected": 99.5}, {"input": [-38.0, -100.0], "expected": -38.0}, {"input": [-38.0, -99.5], "expected": -38.0}, {"input": [-38.0, -99.0], "expected": -38.0}, {"input": [-38.0, -98.5], "expected": -38.0}, {"input": [-38.0, -98.0], "expected": -38.0}, {"input": [-38.0, -97.5], "expected": -38.0}, {"input": [-38.0, -97.0], "expected": -38.0}, {"input": [-38.0, -96.5], "expected": -38.0}, {"input": [-38.0, -96.0], "expected": -38.0}, {"input": [-38.0, -95.5], "expected": -38.0}, {"input": [-38.0, -95.0], "expected": -38.0}, {"input": [-38.0, -94.5], "expected": -38.0}, {"input": [-38.0, -94.0], "expected": -38.0}, {"input": [-38.0, -93.5], "expected": -38.0}, {"input": [-38.0, -93.0], "expected": -38.0}, {"input": [-38.0, -92.5], "expected": -38.0}, {"input": [-38.0, -92.0], "expected": -38.0}, {"input": [-38.0, -91.5], "expected": -38.0}, {"input": [-38.0, -91.0], "expected": -38.0}, {"input": [-38.0, -90.5], "expected": -38.0}, {"input": [-38.0, -90.0], "expected": -38.0}, {"input": [-38.0, -89.5], "expected": -38.0}, {"input": [-38.0, -89.0], "expected": -38.0}, {"input": [-38.0, -88.5], "expected": -38.0}, {"input": [-38.0, -88.0], "expected": -38.0}, {"input": [-38.0, -87.5], "expected": -38.0}, {"input": [-38.0, -87.0], "expected": -38.0}, {"input": [-38.0, -86.5], "expected": -38.0}, {"input": [-38.0, -86.0], "expected": -38.0}, {"input": [-38.0, -85.5], "expected": -38.0}, {"input": [-38.0, -85.0], "expected": -38.0}, {"input": [-38.0, -84.5], "expected": -38.0}, {"input": [-38.0, -84.0], "expected": -38.0}, {"input": [-38.0, -83.5], "expected": -38.0}, {"input": [-38.0, -83.0], "expected": -38.0}, {"input": [-38.0, -82.5], "expected": -38.0}, {"input": [-38.0, -82.0], "expected": -38.0}, {"input": [-38.0, -81.5], "expected": -38.0}, {"input": [-38.0, -81.0], "expected": -38.0}, {"input": [-38.0, -80.5], "expected": -38.0}, {"input": [-38.0, -80.0], "expected": -38.0}, {"input": [-38.0, -79.5], "expected": -38.0}, {"input": [-38.0, -79.0], "expected": -38.0}, {"input": [-38.0, -78.5], "expected": -38.0}, {"input": [-38.0, -78.0], "expected": -38.0}, {"input": [-38.0, -77.5], "expected": -38.0}, {"input": [-38.0, -77.0], "expected": -38.0}, {"input": [-38.0, -76.5], "expected": -38.0}, {"input": [-38.0, -76.0], "expected": -38.0}, {"input": [-38.0, -75.5], "expected": -38.0}, {"input": [-38.0, -75.0], "expected": -38.0}, {"input": [-38.0, -74.5], "expected": -38.0}, {"input": [-38.0, -74.0], "expected": -38.0}, {"input": [-38.0, -73.5], "expected": -38.0}, {"input": [-38.0, -73.0], "expected": -38.0}, {"input": [-38.0, -72.5], "expected": -38.0}, {"input": [-38.0, -72.0], "expected": -38.0}, {"input": [-38.0, -71.5], "expected": -38.0}, {"input": [-38.0, -71.0], "expected": -37.99999999999999}, {"input": [-38.0, -70.5], "expected": -37.99999999999999}, {"input": [-38.0, -70.0], "expected": -37.999999999999986}, {"input": [-38.0, -69.5], "expected": -37.99999999999998}, {"input": [-38.0, -69.0], "expected": -37.999999999999964}, {"input": [-38.0, -68.5], "expected": -37.99999999999994}, {"input": [-38.0, -68.0], "expected": -37.99999999999991}, {"input": [-38.0, -67.5], "expected": -37.999999999999844}, {"input": [-38.0, -67.0], "expected": -37.999999999999744}, {"input": [-38.0, -66.5], "expected": -37.99999999999958}, {"input": [-38.0, -66.0], "expected": -37.99999999999931}, {"input": [-38.0, -65.5], "expected": -37.99999999999886}, {"input": [-38.0, -65.0], "expected": -37.99999999999812}, {"input": [-38.0, -64.5], "expected": -37.9999999999969}, {"input": [-38.0, -64.0], "expected": -37.99999999999489}, {"input": [-38.0, -63.5], "expected": -37.99999999999158}, {"input": [-38.0, -63.0], "expected": -37.99999999998611}, {"input": [-38.0, -62.5], "expected": -37.9999999999771}, {"input": [-38.0, -62.0], "expected": -37.99999999996225}, {"input": [-38.0, -61.5], "expected": -37.99999999993776}, {"input": [-38.0, -61.0], "expected": -37.99999999989738}, {"input": [-38.0, -60.5], "expected": -37.99999999983081}, {"input": [-38.0, -60.0], "expected": -37.999999999721055}, {"input": [-38.0, -59.5], "expected": -37.999999999540094}, {"input": [-38.0, -59.0], "expected": -37.999999999241744}, {"input": [-38.0, -58.5], "expected": -37.99999999874985}, {"input": [-38.0, -58.0], "expected": -37.99999999793884}, {"input": [-38.0, -57.5], "expected": -37.99999999660173}, {"input": [-38.0, -57.0], "expected": -37.99999999439721}, {"input": [-38.0, -56.5], "expected": -37.999999990762554}, {"input": [-38.0, -56.0], "expected": -37.99999998477002}, {"input": [-38.0, -55.5], "expected": -37.99999997489001}, {"input": [-38.0, -55.0], "expected": -37.999999958600625}, {"input": [-38.0, -54.5], "expected": -37.99999993174397}, {"input": [-38.0, -54.0], "expected": -37.99999988746483}, {"input": [-38.0, -53.5], "expected": -37.99999981446088}, {"input": [-38.0, -53.0], "expected": -37.999999694097724}, {"input": [-38.0, -52.5], "expected": -37.99999949565247}, {"input": [-38.0, -52.0], "expected": -37.999999168471625}, {"input": [-38.0, -51.5], "expected": -37.999998629041855}, {"input": [-38.0, -51.0], "expected": -37.99999773967315}, {"input": [-38.0, -50.5], "expected": -37.99999627335377}, {"input": [-38.0, -50.0], "expected": -37.99999385580652}, {"input": [-38.0, -49.5], "expected": -37.99998986995771}, {"input": [-38.0, -49.0], "expected": -37.99998329843868}, {"input": [-38.0, -48.5], "expected": -37.99997246392977}, {"input": [-38.0, -48.0], "expected": -37.99995460110078}, {"input": [-38.0, -47.5], "expected": -37.99992515097137}, {"input": [-38.0, -47.0], "expected": -37.99987659781028}, {"input": [-38.0, -46.5], "expected": -37.99979655232787}, {"input": [-38.0, -46.0], "expected": -37.9996645936271}, {"input": [-38.0, -45.5], "expected": -37.99944706852464}, {"input": [-38.0, -45.0], "expected": -37.99908853354623}, {"input": [-38.0, -44.5], "expected": -37.99849768984024}, {"input": [-38.0, -44.0], "expected": -37.99752431486227}, {"input": [-38.0, -43.5], "expected": -37.99592155672943}, {"input": [-38.0, -43.0], "expected": -37.99328465151088}, {"input": [-38.0, -42.5], "expected": -37.9889522551514}, {"input": [-38.0, -42.0], "expected": -37.98185007208219}, {"input": [-38.0, -41.5], "expected": -37.97024958172738}, {"input": [-38.0, -41.0], "expected": -37.951412648426256}, {"input": [-38.0, -40.5], "expected": -37.92111026570745}, {"input": [-38.0, -40.0], "expected": -37.87307198895703}, {"input": [-38.0, -39.5], "expected": -37.79858672201725}, {"input": [-38.0, -39.0], "expected": -37.68673831248178}, {"input": [-38.0, -38.5], "expected": -37.52592301581989}, {"input": [-38.0, -38.0], "expected": -37.30685281944005}, {"input": [-38.0, -37.5], "expected": -37.02592301581989}, {"input": [-38.0, -37.0], "expected": -36.68673831248178}, {"input": [-38.0, -36.5], "expected": -36.29858672201725}, {"input": [-38.0, -36.0], "expected": -35.87307198895703}, {"input": [-38.0, -35.5], "expected": -35.42111026570745}, {"input": [-38.0, -35.0], "expected": -34.951412648426256}, {"input": [-38.0, -34.5], "expected": -34.47024958172738}, {"input": [-38.0, -34.0], "expected": -33.98185007208219}, {"input": [-38.0, -33.5], "expected": -33.4889522551514}, {"input": [-38.0, -33.0], "expected": -32.99328465151088}, {"input": [-38.0, -32.5], "expected": -32.49592155672943}, {"input": [-38.0, -32.0], "expected": -31.997524314862268}, {"input": [-38.0, -31.5], "expected": -31.498497689840246}, {"input": [-38.0, -31.0], "expected": -30.999088533546225}, {"input": [-38.0, -30.5], "expected": -30.49944706852464}, {"input": [-38.0, -30.0], "expected": -29.999664593627106}, {"input": [-38.0, -29.5], "expected": -29.499796552327872}, {"input": [-38.0, -29.0], "expected": -28.999876597810278}, {"input": [-38.0, -28.5], "expected": -28.49992515097137}, {"input": [-38.0, -28.0], "expected": -27.999954601100782}, {"input": [-38.0, -27.5], "expected": -27.499972463929772}, {"input": [-38.0, -27.0], "expected": -26.999983298438682}, {"input": [-38.0, -26.5], "expected": -26.49998986995771}, {"input": [-38.0, -26.0], "expected": -25.999993855806522}, {"input": [-38.0, -25.5], "expected": -25.499996273353773}, {"input": [-38.0, -25.0], "expected": -24.999997739673148}, {"input": [-38.0, -24.5], "expected": -24.499998629041855}, {"input": [-38.0, -24.0], "expected": -23.999999168471625}, {"input": [-38.0, -23.5], "expected": -23.499999495652464}, {"input": [-38.0, -23.0], "expected": -22.999999694097728}, {"input": [-38.0, -22.5], "expected": -22.49999981446088}, {"input": [-38.0, -22.0], "expected": -21.99999988746483}, {"input": [-38.0, -21.5], "expected": -21.499999931743968}, {"input": [-38.0, -21.0], "expected": -20.999999958600625}, {"input": [-38.0, -20.5], "expected": -20.49999997489001}, {"input": [-38.0, -20.0], "expected": -19.99999998477002}, {"input": [-38.0, -19.5], "expected": -19.49999999076255}, {"input": [-38.0, -19.0], "expected": -18.999999994397204}, {"input": [-38.0, -18.5], "expected": -18.499999996601733}, {"input": [-38.0, -18.0], "expected": -17.999999997938847}, {"input": [-38.0, -17.5], "expected": -17.499999998749846}, {"input": [-38.0, -17.0], "expected": -16.999999999241744}, {"input": [-38.0, -16.5], "expected": -16.499999999540094}, {"input": [-38.0, -16.0], "expected": -15.999999999721053}, {"input": [-38.0, -15.5], "expected": -15.499999999830811}, {"input": [-38.0, -15.0], "expected": -14.999999999897382}, {"input": [-38.0, -14.5], "expected": -14.499999999937758}, {"input": [-38.0, -14.0], "expected": -13.999999999962249}, {"input": [-38.0, -13.5], "expected": -13.499999999977103}, {"input": [-38.0, -13.0], "expected": -12.999999999986112}, {"input": [-38.0, -12.5], "expected": -12.499999999991577}, {"input": [-38.0, -12.0], "expected": -11.999999999994891}, {"input": [-38.0, -11.5], "expected": -11.499999999996902}, {"input": [-38.0, -11.0], "expected": -10.99999999999812}, {"input": [-38.0, -10.5], "expected": -10.49999999999886}, {"input": [-38.0, -10.0], "expected": -9.999999999999309}, {"input": [-38.0, -9.5], "expected": -9.49999999999958}, {"input": [-38.0, -9.0], "expected": -8.999999999999746}, {"input": [-38.0, -8.5], "expected": -8.499999999999845}, {"input": [-38.0, -8.0], "expected": -7.999999999999907}, {"input": [-38.0, -7.5], "expected": -7.499999999999943}, {"input": [-38.0, -7.0], "expected": -6.999999999999965}, {"input": [-38.0, -6.5], "expected": -6.499999999999979}, {"input": [-38.0, -6.0], "expected": -5.999999999999988}, {"input": [-38.0, -5.5], "expected": -5.499999999999992}, {"input": [-38.0, -5.0], "expected": -4.999999999999996}, {"input": [-38.0, -4.5], "expected": -4.499999999999997}, {"input": [-38.0, -4.0], "expected": -3.9999999999999982}, {"input": [-38.0, -3.5], "expected": -3.499999999999999}, {"input": [-38.0, -3.0], "expected": -2.9999999999999996}, {"input": [-38.0, -2.5], "expected": -2.4999999999999996}, {"input": [-38.0, -2.0], "expected": -1.9999999999999998}, {"input": [-38.0, -1.5], "expected": -1.4999999999999998}, {"input": [-38.0, -1.0], "expected": -0.9999999999999999}, {"input": [-38.0, -0.5], "expected": -0.49999999999999994}, {"input": [-38.0, 0.0], "expected": 3.1391327920480296e-17}, {"input": [-38.0, 0.5], "expected": 0.5}, {"input": [-38.0, 1.0], "expected": 1.0}, {"input": [-38.0, 1.5], "expected": 1.5}, {"input": [-38.0, 2.0], "expected": 2.0}, {"input": [-38.0, 2.5], "expected": 2.5}, {"input": [-38.0, 3.0], "expected": 3.0}, {"input": [-38.0, 3.5], "expected": 3.5}, {"input": [-38.0, 4.0], "expected": 4.0}, {"input": [-38.0, 4.5], "expected": 4.5}, {"input": [-38.0, 5.0], "expected": 5.0}, {"input": [-38.0, 5.5], "expected": 5.5}, {"input": [-38.0, 6.0], "expected": 6.0}, {"input": [-38.0, 6.5], "expected": 6.5}, {"input": [-38.0, 7.0], "expected": 7.0}, {"input": [-38.0, 7.5], "expected": 7.5}, {"input": [-38.0, 8.0], "expected": 8.0}, {"input": [-38.0, 8.5], "expected": 8.5}, {"input": [-38.0, 9.0], "expected": 9.0}, {"input": [-38.0, 9.5], "expected": 9.5}, {"input": [-38.0, 10.0], "expected": 10.0}, {"input": [-38.0, 10.5], "expected": 10.5}, {"input": [-38.0, 11.0], "expected": 11.0}, {"input": [-38.0, 11.5], "expected": 11.5}, {"input": [-38.0, 12.0], "expected": 12.0}, {"input": [-38.0, 12.5], "expected": 12.5}, {"input": [-38.0, 13.0], "expected": 13.0}, {"input": [-38.0, 13.5], "expected": 13.5}, {"input": [-38.0, 14.0], "expected": 14.0}, {"input": [-38.0, 14.5], "expected": 14.5}, {"input": [-38.0, 15.0], "expected": 15.0}, {"input": [-38.0, 15.5], "expected": 15.5}, {"input": [-38.0, 16.0], "expected": 16.0}, {"input": [-38.0, 16.5], "expected": 16.5}, {"input": [-38.0, 17.0], "expected": 17.0}, {"input": [-38.0, 17.5], "expected": 17.5}, {"input": [-38.0, 18.0], "expected": 18.0}, {"input": [-38.0, 18.5], "expected": 18.5}, {"input": [-38.0, 19.0], "expected": 19.0}, {"input": [-38.0, 19.5], "expected": 19.5}, {"input": [-38.0, 20.0], "expected": 20.0}, {"input": [-38.0, 20.5], "expected": 20.5}, {"input": [-38.0, 21.0], "expected": 21.0}, {"input": [-38.0, 21.5], "expected": 21.5}, {"input": [-38.0, 22.0], "expected": 22.0}, {"input": [-38.0, 22.5], "expected": 22.5}, {"input": [-38.0, 23.0], "expected": 23.0}, {"input": [-38.0, 23.5], "expected": 23.5}, {"input": [-38.0, 24.0], "expected": 24.0}, {"input": [-38.0, 24.5], "expected": 24.5}, {"input": [-38.0, 25.0], "expected": 25.0}, {"input": [-38.0, 25.5], "expected": 25.5}, {"input": [-38.0, 26.0], "expected": 26.0}, {"input": [-38.0, 26.5], "expected": 26.5}, {"input": [-38.0, 27.0], "expected": 27.0}, {"input": [-38.0, 27.5], "expected": 27.5}, {"input": [-38.0, 28.0], "expected": 28.0}, {"input": [-38.0, 28.5], "expected": 28.5}, {"input": [-38.0, 29.0], "expected": 29.0}, {"input": [-38.0, 29.5], "expected": 29.5}, {"input": [-38.0, 30.0], "expected": 30.0}, {"input": [-38.0, 30.5], "expected": 30.5}, {"input": [-38.0, 31.0], "expected": 31.0}, {"input": [-38.0, 31.5], "expected": 31.5}, {"input": [-38.0, 32.0], "expected": 32.0}, {"input": [-38.0, 32.5], "expected": 32.5}, {"input": [-38.0, 33.0], "expected": 33.0}, {"input": [-38.0, 33.5], "expected": 33.5}, {"input": [-38.0, 34.0], "expected": 34.0}, {"input": [-38.0, 34.5], "expected": 34.5}, {"input": [-38.0, 35.0], "expected": 35.0}, {"input": [-38.0, 35.5], "expected": 35.5}, {"input": [-38.0, 36.0], "expected": 36.0}, {"input": [-38.0, 36.5], "expected": 36.5}, {"input": [-38.0, 37.0], "expected": 37.0}, {"input": [-38.0, 37.5], "expected": 37.5}, {"input": [-38.0, 38.0], "expected": 38.0}, {"input": [-38.0, 38.5], "expected": 38.5}, {"input": [-38.0, 39.0], "expected": 39.0}, {"input": [-38.0, 39.5], "expected": 39.5}, {"input": [-38.0, 40.0], "expected": 40.0}, {"input": [-38.0, 40.5], "expected": 40.5}, {"input": [-38.0, 41.0], "expected": 41.0}, {"input": [-38.0, 41.5], "expected": 41.5}, {"input": [-38.0, 42.0], "expected": 42.0}, {"input": [-38.0, 42.5], "expected": 42.5}, {"input": [-38.0, 43.0], "expected": 43.0}, {"input": [-38.0, 43.5], "expected": 43.5}, {"input": [-38.0, 44.0], "expected": 44.0}, {"input": [-38.0, 44.5], "expected": 44.5}, {"input": [-38.0, 45.0], "expected": 45.0}, {"input": [-38.0, 45.5], "expected": 45.5}, {"input": [-38.0, 46.0], "expected": 46.0}, {"input": [-38.0, 46.5], "expected": 46.5}, {"input": [-38.0, 47.0], "expected": 47.0}, {"input": [-38.0, 47.5], "expected": 47.5}, {"input": [-38.0, 48.0], "expected": 48.0}, {"input": [-38.0, 48.5], "expected": 48.5}, {"input": [-38.0, 49.0], "expected": 49.0}, {"input": [-38.0, 49.5], "expected": 49.5}, {"input": [-38.0, 50.0], "expected": 50.0}, {"input": [-38.0, 50.5], "expected": 50.5}, {"input": [-38.0, 51.0], "expected": 51.0}, {"input": [-38.0, 51.5], "expected": 51.5}, {"input": [-38.0, 52.0], "expected": 52.0}, {"input": [-38.0, 52.5], "expected": 52.5}, {"input": [-38.0, 53.0], "expected": 53.0}, {"input": [-38.0, 53.5], "expected": 53.5}, {"input": [-38.0, 54.0], "expected": 54.0}, {"input": [-38.0, 54.5], "expected": 54.5}, {"input": [-38.0, 55.0], "expected": 55.0}, {"input": [-38.0, 55.5], "expected": 55.5}, {"input": [-38.0, 56.0], "expected": 56.0}, {"input": [-38.0, 56.5], "expected": 56.5}, {"input": [-38.0, 57.0], "expected": 57.0}, {"input": [-38.0, 57.5], "expected": 57.5}, {"input": [-38.0, 58.0], "expected": 58.0}, {"input": [-38.0, 58.5], "expected": 58.5}, {"input": [-38.0, 59.0], "expected": 59.0}, {"input": [-38.0, 59.5], "expected": 59.5}, {"input": [-38.0, 60.0], "expected": 60.0}, {"input": [-38.0, 60.5], "expected": 60.5}, {"input": [-38.0, 61.0], "expected": 61.0}, {"input": [-38.0, 61.5], "expected": 61.5}, {"input": [-38.0, 62.0], "expected": 62.0}, {"input": [-38.0, 62.5], "expected": 62.5}, {"input": [-38.0, 63.0], "expected": 63.0}, {"input": [-38.0, 63.5], "expected": 63.5}, {"input": [-38.0, 64.0], "expected": 64.0}, {"input": [-38.0, 64.5], "expected": 64.5}, {"input": [-38.0, 65.0], "expected": 65.0}, {"input": [-38.0, 65.5], "expected": 65.5}, {"input": [-38.0, 66.0], "expected": 66.0}, {"input": [-38.0, 66.5], "expected": 66.5}, {"input": [-38.0, 67.0], "expected": 67.0}, {"input": [-38.0, 67.5], "expected": 67.5}, {"input": [-38.0, 68.0], "expected": 68.0}, {"input": [-38.0, 68.5], "expected": 68.5}, {"input": [-38.0, 69.0], "expected": 69.0}, {"input": [-38.0, 69.5], "expected": 69.5}, {"input": [-38.0, 70.0], "expected": 70.0}, {"input": [-38.0, 70.5], "expected": 70.5}, {"input": [-38.0, 71.0], "expected": 71.0}, {"input": [-38.0, 71.5], "expected": 71.5}, {"input": [-38.0, 72.0], "expected": 72.0}, {"input": [-38.0, 72.5], "expected": 72.5}, {"input": [-38.0, 73.0], "expected": 73.0}, {"input": [-38.0, 73.5], "expected": 73.5}, {"input": [-38.0, 74.0], "expected": 74.0}, {"input": [-38.0, 74.5], "expected": 74.5}, {"input": [-38.0, 75.0], "expected": 75.0}, {"input": [-38.0, 75.5], "expected": 75.5}, {"input": [-38.0, 76.0], "expected": 76.0}, {"input": [-38.0, 76.5], "expected": 76.5}, {"input": [-38.0, 77.0], "expected": 77.0}, {"input": [-38.0, 77.5], "expected": 77.5}, {"input": [-38.0, 78.0], "expected": 78.0}, {"input": [-38.0, 78.5], "expected": 78.5}, {"input": [-38.0, 79.0], "expected": 79.0}, {"input": [-38.0, 79.5], "expected": 79.5}, {"input": [-38.0, 80.0], "expected": 80.0}, {"input": [-38.0, 80.5], "expected": 80.5}, {"input": [-38.0, 81.0], "expected": 81.0}, {"input": [-38.0, 81.5], "expected": 81.5}, {"input": [-38.0, 82.0], "expected": 82.0}, {"input": [-38.0, 82.5], "expected": 82.5}, {"input": [-38.0, 83.0], "expected": 83.0}, {"input": [-38.0, 83.5], "expected": 83.5}, {"input": [-38.0, 84.0], "expected": 84.0}, {"input": [-38.0, 84.5], "expected": 84.5}, {"input": [-38.0, 85.0], "expected": 85.0}, {"input": [-38.0, 85.5], "expected": 85.5}, {"input": [-38.0, 86.0], "expected": 86.0}, {"input": [-38.0, 86.5], "expected": 86.5}, {"input": [-38.0, 87.0], "expected": 87.0}, {"input": [-38.0, 87.5], "expected": 87.5}, {"input": [-38.0, 88.0], "expected": 88.0}, {"input": [-38.0, 88.5], "expected": 88.5}, {"input": [-38.0, 89.0], "expected": 89.0}, {"input": [-38.0, 89.5], "expected": 89.5}, {"input": [-38.0, 90.0], "expected": 90.0}, {"input": [-38.0, 90.5], "expected": 90.5}, {"input": [-38.0, 91.0], "expected": 91.0}, {"input": [-38.0, 91.5], "expected": 91.5}, {"input": [-38.0, 92.0], "expected": 92.0}, {"input": [-38.0, 92.5], "expected": 92.5}, {"input": [-38.0, 93.0], "expected": 93.0}, {"input": [-38.0, 93.5], "expected": 93.5}, {"input": [-38.0, 94.0], "expected": 94.0}, {"input": [-38.0, 94.5], "expected": 94.5}, {"input": [-38.0, 95.0], "expected": 95.0}, {"input": [-38.0, 95.5], "expected": 95.5}, {"input": [-38.0, 96.0], "expected": 96.0}, {"input": [-38.0, 96.5], "expected": 96.5}, {"input": [-38.0, 97.0], "expected": 97.0}, {"input": [-38.0, 97.5], "expected": 97.5}, {"input": [-38.0, 98.0], "expected": 98.0}, {"input": [-38.0, 98.5], "expected": 98.5}, {"input": [-38.0, 99.0], "expected": 99.0}, {"input": [-38.0, 99.5], "expected": 99.5}, {"input": [-37.5, -100.0], "expected": -37.5}, {"input": [-37.5, -99.5], "expected": -37.5}, {"input": [-37.5, -99.0], "expected": -37.5}, {"input": [-37.5, -98.5], "expected": -37.5}, {"input": [-37.5, -98.0], "expected": -37.5}, {"input": [-37.5, -97.5], "expected": -37.5}, {"input": [-37.5, -97.0], "expected": -37.5}, {"input": [-37.5, -96.5], "expected": -37.5}, {"input": [-37.5, -96.0], "expected": -37.5}, {"input": [-37.5, -95.5], "expected": -37.5}, {"input": [-37.5, -95.0], "expected": -37.5}, {"input": [-37.5, -94.5], "expected": -37.5}, {"input": [-37.5, -94.0], "expected": -37.5}, {"input": [-37.5, -93.5], "expected": -37.5}, {"input": [-37.5, -93.0], "expected": -37.5}, {"input": [-37.5, -92.5], "expected": -37.5}, {"input": [-37.5, -92.0], "expected": -37.5}, {"input": [-37.5, -91.5], "expected": -37.5}, {"input": [-37.5, -91.0], "expected": -37.5}, {"input": [-37.5, -90.5], "expected": -37.5}, {"input": [-37.5, -90.0], "expected": -37.5}, {"input": [-37.5, -89.5], "expected": -37.5}, {"input": [-37.5, -89.0], "expected": -37.5}, {"input": [-37.5, -88.5], "expected": -37.5}, {"input": [-37.5, -88.0], "expected": -37.5}, {"input": [-37.5, -87.5], "expected": -37.5}, {"input": [-37.5, -87.0], "expected": -37.5}, {"input": [-37.5, -86.5], "expected": -37.5}, {"input": [-37.5, -86.0], "expected": -37.5}, {"input": [-37.5, -85.5], "expected": -37.5}, {"input": [-37.5, -85.0], "expected": -37.5}, {"input": [-37.5, -84.5], "expected": -37.5}, {"input": [-37.5, -84.0], "expected": -37.5}, {"input": [-37.5, -83.5], "expected": -37.5}, {"input": [-37.5, -83.0], "expected": -37.5}, {"input": [-37.5, -82.5], "expected": -37.5}, {"input": [-37.5, -82.0], "expected": -37.5}, {"input": [-37.5, -81.5], "expected": -37.5}, {"input": [-37.5, -81.0], "expected": -37.5}, {"input": [-37.5, -80.5], "expected": -37.5}, {"input": [-37.5, -80.0], "expected": -37.5}, {"input": [-37.5, -79.5], "expected": -37.5}, {"input": [-37.5, -79.0], "expected": -37.5}, {"input": [-37.5, -78.5], "expected": -37.5}, {"input": [-37.5, -78.0], "expected": -37.5}, {"input": [-37.5, -77.5], "expected": -37.5}, {"input": [-37.5, -77.0], "expected": -37.5}, {"input": [-37.5, -76.5], "expected": -37.5}, {"input": [-37.5, -76.0], "expected": -37.5}, {"input": [-37.5, -75.5], "expected": -37.5}, {"input": [-37.5, -75.0], "expected": -37.5}, {"input": [-37.5, -74.5], "expected": -37.5}, {"input": [-37.5, -74.0], "expected": -37.5}, {"input": [-37.5, -73.5], "expected": -37.5}, {"input": [-37.5, -73.0], "expected": -37.5}, {"input": [-37.5, -72.5], "expected": -37.5}, {"input": [-37.5, -72.0], "expected": -37.5}, {"input": [-37.5, -71.5], "expected": -37.5}, {"input": [-37.5, -71.0], "expected": -37.5}, {"input": [-37.5, -70.5], "expected": -37.49999999999999}, {"input": [-37.5, -70.0], "expected": -37.49999999999999}, {"input": [-37.5, -69.5], "expected": -37.499999999999986}, {"input": [-37.5, -69.0], "expected": -37.49999999999998}, {"input": [-37.5, -68.5], "expected": -37.499999999999964}, {"input": [-37.5, -68.0], "expected": -37.49999999999994}, {"input": [-37.5, -67.5], "expected": -37.49999999999991}, {"input": [-37.5, -67.0], "expected": -37.499999999999844}, {"input": [-37.5, -66.5], "expected": -37.499999999999744}, {"input": [-37.5, -66.0], "expected": -37.49999999999958}, {"input": [-37.5, -65.5], "expected": -37.49999999999931}, {"input": [-37.5, -65.0], "expected": -37.49999999999886}, {"input": [-37.5, -64.5], "expected": -37.49999999999812}, {"input": [-37.5, -64.0], "expected": -37.4999999999969}, {"input": [-37.5, -63.5], "expected": -37.49999999999489}, {"input": [-37.5, -63.0], "expected": -37.49999999999158}, {"input": [-37.5, -62.5], "expected": -37.49999999998611}, {"input": [-37.5, -62.0], "expected": -37.4999999999771}, {"input": [-37.5, -61.5], "expected": -37.49999999996225}, {"input": [-37.5, -61.0], "expected": -37.49999999993776}, {"input": [-37.5, -60.5], "expected": -37.49999999989738}, {"input": [-37.5, -60.0], "expected": -37.49999999983081}, {"input": [-37.5, -59.5], "expected": -37.499999999721055}, {"input": [-37.5, -59.0], "expected": -37.499999999540094}, {"input": [-37.5, -58.5], "expected": -37.499999999241744}, {"input": [-37.5, -58.0], "expected": -37.49999999874985}, {"input": [-37.5, -57.5], "expected": -37.49999999793884}, {"input": [-37.5, -57.0], "expected": -37.49999999660173}, {"input": [-37.5, -56.5], "expected": -37.49999999439721}, {"input": [-37.5, -56.0], "expected": -37.499999990762554}, {"input": [-37.5, -55.5], "expected": -37.49999998477002}, {"input": [-37.5, -55.0], "expected": -37.49999997489001}, {"input": [-37.5, -54.5], "expected": -37.499999958600625}, {"input": [-37.5, -54.0], "expected": -37.49999993174397}, {"input": [-37.5, -53.5], "expected": -37.49999988746483}, {"input": [-37.5, -53.0], "expected": -37.49999981446088}, {"input": [-37.5, -52.5], "expected": -37.499999694097724}, {"input": [-37.5, -52.0], "expected": -37.49999949565247}, {"input": [-37.5, -51.5], "expected": -37.499999168471625}, {"input": [-37.5, -51.0], "expected": -37.499998629041855}, {"input": [-37.5, -50.5], "expected": -37.49999773967315}, {"input": [-37.5, -50.0], "expected": -37.49999627335377}, {"input": [-37.5, -49.5], "expected": -37.49999385580652}, {"input": [-37.5, -49.0], "expected": -37.49998986995771}, {"input": [-37.5, -48.5], "expected": -37.49998329843868}, {"input": [-37.5, -48.0], "expected": -37.49997246392977}, {"input": [-37.5, -47.5], "expected": -37.49995460110078}, {"input": [-37.5, -47.0], "expected": -37.49992515097137}, {"input": [-37.5, -46.5], "expected": -37.49987659781028}, {"input": [-37.5, -46.0], "expected": -37.49979655232787}, {"input": [-37.5, -45.5], "expected": -37.4996645936271}, {"input": [-37.5, -45.0], "expected": -37.49944706852464}, {"input": [-37.5, -44.5], "expected": -37.49908853354623}, {"input": [-37.5, -44.0], "expected": -37.49849768984024}, {"input": [-37.5, -43.5], "expected": -37.49752431486227}, {"input": [-37.5, -43.0], "expected": -37.49592155672943}, {"input": [-37.5, -42.5], "expected": -37.49328465151088}, {"input": [-37.5, -42.0], "expected": -37.4889522551514}, {"input": [-37.5, -41.5], "expected": -37.48185007208219}, {"input": [-37.5, -41.0], "expected": -37.47024958172738}, {"input": [-37.5, -40.5], "expected": -37.451412648426256}, {"input": [-37.5, -40.0], "expected": -37.42111026570745}, {"input": [-37.5, -39.5], "expected": -37.37307198895703}, {"input": [-37.5, -39.0], "expected": -37.29858672201725}, {"input": [-37.5, -38.5], "expected": -37.18673831248178}, {"input": [-37.5, -38.0], "expected": -37.02592301581989}, {"input": [-37.5, -37.5], "expected": -36.80685281944005}, {"input": [-37.5, -37.0], "expected": -36.52592301581989}, {"input": [-37.5, -36.5], "expected": -36.18673831248178}, {"input": [-37.5, -36.0], "expected": -35.79858672201725}, {"input": [-37.5, -35.5], "expected": -35.37307198895703}, {"input": [-37.5, -35.0], "expected": -34.92111026570745}, {"input": [-37.5, -34.5], "expected": -34.451412648426256}, {"input": [-37.5, -34.0], "expected": -33.97024958172738}, {"input": [-37.5, -33.5], "expected": -33.48185007208219}, {"input": [-37.5, -33.0], "expected": -32.9889522551514}, {"input": [-37.5, -32.5], "expected": -32.49328465151088}, {"input": [-37.5, -32.0], "expected": -31.995921556729428}, {"input": [-37.5, -31.5], "expected": -31.497524314862268}, {"input": [-37.5, -31.0], "expected": -30.998497689840246}, {"input": [-37.5, -30.5], "expected": -30.499088533546225}, {"input": [-37.5, -30.0], "expected": -29.99944706852464}, {"input": [-37.5, -29.5], "expected": -29.499664593627106}, {"input": [-37.5, -29.0], "expected": -28.999796552327872}, {"input": [-37.5, -28.5], "expected": -28.499876597810278}, {"input": [-37.5, -28.0], "expected": -27.99992515097137}, {"input": [-37.5, -27.5], "expected": -27.499954601100782}, {"input": [-37.5, -27.0], "expected": -26.999972463929772}, {"input": [-37.5, -26.5], "expected": -26.499983298438682}, {"input": [-37.5, -26.0], "expected": -25.99998986995771}, {"input": [-37.5, -25.5], "expected": -25.499993855806522}, {"input": [-37.5, -25.0], "expected": -24.999996273353773}, {"input": [-37.5, -24.5], "expected": -24.499997739673148}, {"input": [-37.5, -24.0], "expected": -23.999998629041855}, {"input": [-37.5, -23.5], "expected": -23.499999168471625}, {"input": [-37.5, -23.0], "expected": -22.999999495652464}, {"input": [-37.5, -22.5], "expected": -22.499999694097728}, {"input": [-37.5, -22.0], "expected": -21.99999981446088}, {"input": [-37.5, -21.5], "expected": -21.49999988746483}, {"input": [-37.5, -21.0], "expected": -20.999999931743968}, {"input": [-37.5, -20.5], "expected": -20.499999958600625}, {"input": [-37.5, -20.0], "expected": -19.99999997489001}, {"input": [-37.5, -19.5], "expected": -19.49999998477002}, {"input": [-37.5, -19.0], "expected": -18.99999999076255}, {"input": [-37.5, -18.5], "expected": -18.499999994397204}, {"input": [-37.5, -18.0], "expected": -17.999999996601733}, {"input": [-37.5, -17.5], "expected": -17.499999997938847}, {"input": [-37.5, -17.0], "expected": -16.999999998749846}, {"input": [-37.5, -16.5], "expected": -16.499999999241744}, {"input": [-37.5, -16.0], "expected": -15.999999999540094}, {"input": [-37.5, -15.5], "expected": -15.499999999721053}, {"input": [-37.5, -15.0], "expected": -14.999999999830811}, {"input": [-37.5, -14.5], "expected": -14.499999999897382}, {"input": [-37.5, -14.0], "expected": -13.999999999937758}, {"input": [-37.5, -13.5], "expected": -13.499999999962249}, {"input": [-37.5, -13.0], "expected": -12.999999999977103}, {"input": [-37.5, -12.5], "expected": -12.499999999986112}, {"input": [-37.5, -12.0], "expected": -11.999999999991577}, {"input": [-37.5, -11.5], "expected": -11.499999999994891}, {"input": [-37.5, -11.0], "expected": -10.999999999996902}, {"input": [-37.5, -10.5], "expected": -10.49999999999812}, {"input": [-37.5, -10.0], "expected": -9.99999999999886}, {"input": [-37.5, -9.5], "expected": -9.499999999999309}, {"input": [-37.5, -9.0], "expected": -8.99999999999958}, {"input": [-37.5, -8.5], "expected": -8.499999999999746}, {"input": [-37.5, -8.0], "expected": -7.9999999999998455}, {"input": [-37.5, -7.5], "expected": -7.499999999999907}, {"input": [-37.5, -7.0], "expected": -6.999999999999943}, {"input": [-37.5, -6.5], "expected": -6.499999999999965}, {"input": [-37.5, -6.0], "expected": -5.999999999999979}, {"input": [-37.5, -5.5], "expected": -5.499999999999988}, {"input": [-37.5, -5.0], "expected": -4.999999999999992}, {"input": [-37.5, -4.5], "expected": -4.499999999999996}, {"input": [-37.5, -4.0], "expected": -3.9999999999999973}, {"input": [-37.5, -3.5], "expected": -3.4999999999999982}, {"input": [-37.5, -3.0], "expected": -2.999999999999999}, {"input": [-37.5, -2.5], "expected": -2.4999999999999996}, {"input": [-37.5, -2.0], "expected": -1.9999999999999996}, {"input": [-37.5, -1.5], "expected": -1.4999999999999998}, {"input": [-37.5, -1.0], "expected": -0.9999999999999999}, {"input": [-37.5, -0.5], "expected": -0.4999999999999999}, {"input": [-37.5, 0.0], "expected": 5.175555005801869e-17}, {"input": [-37.5, 0.5], "expected": 0.5}, {"input": [-37.5, 1.0], "expected": 1.0}, {"input": [-37.5, 1.5], "expected": 1.5}, {"input": [-37.5, 2.0], "expected": 2.0}, {"input": [-37.5, 2.5], "expected": 2.5}, {"input": [-37.5, 3.0], "expected": 3.0}, {"input": [-37.5, 3.5], "expected": 3.5}, {"input": [-37.5, 4.0], "expected": 4.0}, {"input": [-37.5, 4.5], "expected": 4.5}, {"input": [-37.5, 5.0], "expected": 5.0}, {"input": [-37.5, 5.5], "expected": 5.5}, {"input": [-37.5, 6.0], "expected": 6.0}, {"input": [-37.5, 6.5], "expected": 6.5}, {"input": [-37.5, 7.0], "expected": 7.0}, {"input": [-37.5, 7.5], "expected": 7.5}, {"input": [-37.5, 8.0], "expected": 8.0}, {"input": [-37.5, 8.5], "expected": 8.5}, {"input": [-37.5, 9.0], "expected": 9.0}, {"input": [-37.5, 9.5], "expected": 9.5}, {"input": [-37.5, 10.0], "expected": 10.0}, {"input": [-37.5, 10.5], "expected": 10.5}, {"input": [-37.5, 11.0], "expected": 11.0}, {"input": [-37.5, 11.5], "expected": 11.5}, {"input": [-37.5, 12.0], "expected": 12.0}, {"input": [-37.5, 12.5], "expected": 12.5}, {"input": [-37.5, 13.0], "expected": 13.0}, {"input": [-37.5, 13.5], "expected": 13.5}, {"input": [-37.5, 14.0], "expected": 14.0}, {"input": [-37.5, 14.5], "expected": 14.5}, {"input": [-37.5, 15.0], "expected": 15.0}, {"input": [-37.5, 15.5], "expected": 15.5}, {"input": [-37.5, 16.0], "expected": 16.0}, {"input": [-37.5, 16.5], "expected": 16.5}, {"input": [-37.5, 17.0], "expected": 17.0}, {"input": [-37.5, 17.5], "expected": 17.5}, {"input": [-37.5, 18.0], "expected": 18.0}, {"input": [-37.5, 18.5], "expected": 18.5}, {"input": [-37.5, 19.0], "expected": 19.0}, {"input": [-37.5, 19.5], "expected": 19.5}, {"input": [-37.5, 20.0], "expected": 20.0}, {"input": [-37.5, 20.5], "expected": 20.5}, {"input": [-37.5, 21.0], "expected": 21.0}, {"input": [-37.5, 21.5], "expected": 21.5}, {"input": [-37.5, 22.0], "expected": 22.0}, {"input": [-37.5, 22.5], "expected": 22.5}, {"input": [-37.5, 23.0], "expected": 23.0}, {"input": [-37.5, 23.5], "expected": 23.5}, {"input": [-37.5, 24.0], "expected": 24.0}, {"input": [-37.5, 24.5], "expected": 24.5}, {"input": [-37.5, 25.0], "expected": 25.0}, {"input": [-37.5, 25.5], "expected": 25.5}, {"input": [-37.5, 26.0], "expected": 26.0}, {"input": [-37.5, 26.5], "expected": 26.5}, {"input": [-37.5, 27.0], "expected": 27.0}, {"input": [-37.5, 27.5], "expected": 27.5}, {"input": [-37.5, 28.0], "expected": 28.0}, {"input": [-37.5, 28.5], "expected": 28.5}, {"input": [-37.5, 29.0], "expected": 29.0}, {"input": [-37.5, 29.5], "expected": 29.5}, {"input": [-37.5, 30.0], "expected": 30.0}, {"input": [-37.5, 30.5], "expected": 30.5}, {"input": [-37.5, 31.0], "expected": 31.0}, {"input": [-37.5, 31.5], "expected": 31.5}, {"input": [-37.5, 32.0], "expected": 32.0}, {"input": [-37.5, 32.5], "expected": 32.5}, {"input": [-37.5, 33.0], "expected": 33.0}, {"input": [-37.5, 33.5], "expected": 33.5}, {"input": [-37.5, 34.0], "expected": 34.0}, {"input": [-37.5, 34.5], "expected": 34.5}, {"input": [-37.5, 35.0], "expected": 35.0}, {"input": [-37.5, 35.5], "expected": 35.5}, {"input": [-37.5, 36.0], "expected": 36.0}, {"input": [-37.5, 36.5], "expected": 36.5}, {"input": [-37.5, 37.0], "expected": 37.0}, {"input": [-37.5, 37.5], "expected": 37.5}, {"input": [-37.5, 38.0], "expected": 38.0}, {"input": [-37.5, 38.5], "expected": 38.5}, {"input": [-37.5, 39.0], "expected": 39.0}, {"input": [-37.5, 39.5], "expected": 39.5}, {"input": [-37.5, 40.0], "expected": 40.0}, {"input": [-37.5, 40.5], "expected": 40.5}, {"input": [-37.5, 41.0], "expected": 41.0}, {"input": [-37.5, 41.5], "expected": 41.5}, {"input": [-37.5, 42.0], "expected": 42.0}, {"input": [-37.5, 42.5], "expected": 42.5}, {"input": [-37.5, 43.0], "expected": 43.0}, {"input": [-37.5, 43.5], "expected": 43.5}, {"input": [-37.5, 44.0], "expected": 44.0}, {"input": [-37.5, 44.5], "expected": 44.5}, {"input": [-37.5, 45.0], "expected": 45.0}, {"input": [-37.5, 45.5], "expected": 45.5}, {"input": [-37.5, 46.0], "expected": 46.0}, {"input": [-37.5, 46.5], "expected": 46.5}, {"input": [-37.5, 47.0], "expected": 47.0}, {"input": [-37.5, 47.5], "expected": 47.5}, {"input": [-37.5, 48.0], "expected": 48.0}, {"input": [-37.5, 48.5], "expected": 48.5}, {"input": [-37.5, 49.0], "expected": 49.0}, {"input": [-37.5, 49.5], "expected": 49.5}, {"input": [-37.5, 50.0], "expected": 50.0}, {"input": [-37.5, 50.5], "expected": 50.5}, {"input": [-37.5, 51.0], "expected": 51.0}, {"input": [-37.5, 51.5], "expected": 51.5}, {"input": [-37.5, 52.0], "expected": 52.0}, {"input": [-37.5, 52.5], "expected": 52.5}, {"input": [-37.5, 53.0], "expected": 53.0}, {"input": [-37.5, 53.5], "expected": 53.5}, {"input": [-37.5, 54.0], "expected": 54.0}, {"input": [-37.5, 54.5], "expected": 54.5}, {"input": [-37.5, 55.0], "expected": 55.0}, {"input": [-37.5, 55.5], "expected": 55.5}, {"input": [-37.5, 56.0], "expected": 56.0}, {"input": [-37.5, 56.5], "expected": 56.5}, {"input": [-37.5, 57.0], "expected": 57.0}, {"input": [-37.5, 57.5], "expected": 57.5}, {"input": [-37.5, 58.0], "expected": 58.0}, {"input": [-37.5, 58.5], "expected": 58.5}, {"input": [-37.5, 59.0], "expected": 59.0}, {"input": [-37.5, 59.5], "expected": 59.5}, {"input": [-37.5, 60.0], "expected": 60.0}, {"input": [-37.5, 60.5], "expected": 60.5}, {"input": [-37.5, 61.0], "expected": 61.0}, {"input": [-37.5, 61.5], "expected": 61.5}, {"input": [-37.5, 62.0], "expected": 62.0}, {"input": [-37.5, 62.5], "expected": 62.5}, {"input": [-37.5, 63.0], "expected": 63.0}, {"input": [-37.5, 63.5], "expected": 63.5}, {"input": [-37.5, 64.0], "expected": 64.0}, {"input": [-37.5, 64.5], "expected": 64.5}, {"input": [-37.5, 65.0], "expected": 65.0}, {"input": [-37.5, 65.5], "expected": 65.5}, {"input": [-37.5, 66.0], "expected": 66.0}, {"input": [-37.5, 66.5], "expected": 66.5}, {"input": [-37.5, 67.0], "expected": 67.0}, {"input": [-37.5, 67.5], "expected": 67.5}, {"input": [-37.5, 68.0], "expected": 68.0}, {"input": [-37.5, 68.5], "expected": 68.5}, {"input": [-37.5, 69.0], "expected": 69.0}, {"input": [-37.5, 69.5], "expected": 69.5}, {"input": [-37.5, 70.0], "expected": 70.0}, {"input": [-37.5, 70.5], "expected": 70.5}, {"input": [-37.5, 71.0], "expected": 71.0}, {"input": [-37.5, 71.5], "expected": 71.5}, {"input": [-37.5, 72.0], "expected": 72.0}, {"input": [-37.5, 72.5], "expected": 72.5}, {"input": [-37.5, 73.0], "expected": 73.0}, {"input": [-37.5, 73.5], "expected": 73.5}, {"input": [-37.5, 74.0], "expected": 74.0}, {"input": [-37.5, 74.5], "expected": 74.5}, {"input": [-37.5, 75.0], "expected": 75.0}, {"input": [-37.5, 75.5], "expected": 75.5}, {"input": [-37.5, 76.0], "expected": 76.0}, {"input": [-37.5, 76.5], "expected": 76.5}, {"input": [-37.5, 77.0], "expected": 77.0}, {"input": [-37.5, 77.5], "expected": 77.5}, {"input": [-37.5, 78.0], "expected": 78.0}, {"input": [-37.5, 78.5], "expected": 78.5}, {"input": [-37.5, 79.0], "expected": 79.0}, {"input": [-37.5, 79.5], "expected": 79.5}, {"input": [-37.5, 80.0], "expected": 80.0}, {"input": [-37.5, 80.5], "expected": 80.5}, {"input": [-37.5, 81.0], "expected": 81.0}, {"input": [-37.5, 81.5], "expected": 81.5}, {"input": [-37.5, 82.0], "expected": 82.0}, {"input": [-37.5, 82.5], "expected": 82.5}, {"input": [-37.5, 83.0], "expected": 83.0}, {"input": [-37.5, 83.5], "expected": 83.5}, {"input": [-37.5, 84.0], "expected": 84.0}, {"input": [-37.5, 84.5], "expected": 84.5}, {"input": [-37.5, 85.0], "expected": 85.0}, {"input": [-37.5, 85.5], "expected": 85.5}, {"input": [-37.5, 86.0], "expected": 86.0}, {"input": [-37.5, 86.5], "expected": 86.5}, {"input": [-37.5, 87.0], "expected": 87.0}, {"input": [-37.5, 87.5], "expected": 87.5}, {"input": [-37.5, 88.0], "expected": 88.0}, {"input": [-37.5, 88.5], "expected": 88.5}, {"input": [-37.5, 89.0], "expected": 89.0}, {"input": [-37.5, 89.5], "expected": 89.5}, {"input": [-37.5, 90.0], "expected": 90.0}, {"input": [-37.5, 90.5], "expected": 90.5}, {"input": [-37.5, 91.0], "expected": 91.0}, {"input": [-37.5, 91.5], "expected": 91.5}, {"input": [-37.5, 92.0], "expected": 92.0}, {"input": [-37.5, 92.5], "expected": 92.5}, {"input": [-37.5, 93.0], "expected": 93.0}, {"input": [-37.5, 93.5], "expected": 93.5}, {"input": [-37.5, 94.0], "expected": 94.0}, {"input": [-37.5, 94.5], "expected": 94.5}, {"input": [-37.5, 95.0], "expected": 95.0}, {"input": [-37.5, 95.5], "expected": 95.5}, {"input": [-37.5, 96.0], "expected": 96.0}, {"input": [-37.5, 96.5], "expected": 96.5}, {"input": [-37.5, 97.0], "expected": 97.0}, {"input": [-37.5, 97.5], "expected": 97.5}, {"input": [-37.5, 98.0], "expected": 98.0}, {"input": [-37.5, 98.5], "expected": 98.5}, {"input": [-37.5, 99.0], "expected": 99.0}, {"input": [-37.5, 99.5], "expected": 99.5}, {"input": [-37.0, -100.0], "expected": -37.0}, {"input": [-37.0, -99.5], "expected": -37.0}, {"input": [-37.0, -99.0], "expected": -37.0}, {"input": [-37.0, -98.5], "expected": -37.0}, {"input": [-37.0, -98.0], "expected": -37.0}, {"input": [-37.0, -97.5], "expected": -37.0}, {"input": [-37.0, -97.0], "expected": -37.0}, {"input": [-37.0, -96.5], "expected": -37.0}, {"input": [-37.0, -96.0], "expected": -37.0}, {"input": [-37.0, -95.5], "expected": -37.0}, {"input": [-37.0, -95.0], "expected": -37.0}, {"input": [-37.0, -94.5], "expected": -37.0}, {"input": [-37.0, -94.0], "expected": -37.0}, {"input": [-37.0, -93.5], "expected": -37.0}, {"input": [-37.0, -93.0], "expected": -37.0}, {"input": [-37.0, -92.5], "expected": -37.0}, {"input": [-37.0, -92.0], "expected": -37.0}, {"input": [-37.0, -91.5], "expected": -37.0}, {"input": [-37.0, -91.0], "expected": -37.0}, {"input": [-37.0, -90.5], "expected": -37.0}, {"input": [-37.0, -90.0], "expected": -37.0}, {"input": [-37.0, -89.5], "expected": -37.0}, {"input": [-37.0, -89.0], "expected": -37.0}, {"input": [-37.0, -88.5], "expected": -37.0}, {"input": [-37.0, -88.0], "expected": -37.0}, {"input": [-37.0, -87.5], "expected": -37.0}, {"input": [-37.0, -87.0], "expected": -37.0}, {"input": [-37.0, -86.5], "expected": -37.0}, {"input": [-37.0, -86.0], "expected": -37.0}, {"input": [-37.0, -85.5], "expected": -37.0}, {"input": [-37.0, -85.0], "expected": -37.0}, {"input": [-37.0, -84.5], "expected": -37.0}, {"input": [-37.0, -84.0], "expected": -37.0}, {"input": [-37.0, -83.5], "expected": -37.0}, {"input": [-37.0, -83.0], "expected": -37.0}, {"input": [-37.0, -82.5], "expected": -37.0}, {"input": [-37.0, -82.0], "expected": -37.0}, {"input": [-37.0, -81.5], "expected": -37.0}, {"input": [-37.0, -81.0], "expected": -37.0}, {"input": [-37.0, -80.5], "expected": -37.0}, {"input": [-37.0, -80.0], "expected": -37.0}, {"input": [-37.0, -79.5], "expected": -37.0}, {"input": [-37.0, -79.0], "expected": -37.0}, {"input": [-37.0, -78.5], "expected": -37.0}, {"input": [-37.0, -78.0], "expected": -37.0}, {"input": [-37.0, -77.5], "expected": -37.0}, {"input": [-37.0, -77.0], "expected": -37.0}, {"input": [-37.0, -76.5], "expected": -37.0}, {"input": [-37.0, -76.0], "expected": -37.0}, {"input": [-37.0, -75.5], "expected": -37.0}, {"input": [-37.0, -75.0], "expected": -37.0}, {"input": [-37.0, -74.5], "expected": -37.0}, {"input": [-37.0, -74.0], "expected": -37.0}, {"input": [-37.0, -73.5], "expected": -37.0}, {"input": [-37.0, -73.0], "expected": -37.0}, {"input": [-37.0, -72.5], "expected": -37.0}, {"input": [-37.0, -72.0], "expected": -37.0}, {"input": [-37.0, -71.5], "expected": -37.0}, {"input": [-37.0, -71.0], "expected": -37.0}, {"input": [-37.0, -70.5], "expected": -37.0}, {"input": [-37.0, -70.0], "expected": -36.99999999999999}, {"input": [-37.0, -69.5], "expected": -36.99999999999999}, {"input": [-37.0, -69.0], "expected": -36.999999999999986}, {"input": [-37.0, -68.5], "expected": -36.99999999999998}, {"input": [-37.0, -68.0], "expected": -36.999999999999964}, {"input": [-37.0, -67.5], "expected": -36.99999999999994}, {"input": [-37.0, -67.0], "expected": -36.99999999999991}, {"input": [-37.0, -66.5], "expected": -36.999999999999844}, {"input": [-37.0, -66.0], "expected": -36.999999999999744}, {"input": [-37.0, -65.5], "expected": -36.99999999999958}, {"input": [-37.0, -65.0], "expected": -36.99999999999931}, {"input": [-37.0, -64.5], "expected": -36.99999999999886}, {"input": [-37.0, -64.0], "expected": -36.99999999999812}, {"input": [-37.0, -63.5], "expected": -36.9999999999969}, {"input": [-37.0, -63.0], "expected": -36.99999999999489}, {"input": [-37.0, -62.5], "expected": -36.99999999999158}, {"input": [-37.0, -62.0], "expected": -36.99999999998611}, {"input": [-37.0, -61.5], "expected": -36.9999999999771}, {"input": [-37.0, -61.0], "expected": -36.99999999996225}, {"input": [-37.0, -60.5], "expected": -36.99999999993776}, {"input": [-37.0, -60.0], "expected": -36.99999999989738}, {"input": [-37.0, -59.5], "expected": -36.99999999983081}, {"input": [-37.0, -59.0], "expected": -36.999999999721055}, {"input": [-37.0, -58.5], "expected": -36.999999999540094}, {"input": [-37.0, -58.0], "expected": -36.999999999241744}, {"input": [-37.0, -57.5], "expected": -36.99999999874985}, {"input": [-37.0, -57.0], "expected": -36.99999999793884}, {"input": [-37.0, -56.5], "expected": -36.99999999660173}, {"input": [-37.0, -56.0], "expected": -36.99999999439721}, {"input": [-37.0, -55.5], "expected": -36.999999990762554}, {"input": [-37.0, -55.0], "expected": -36.99999998477002}, {"input": [-37.0, -54.5], "expected": -36.99999997489001}, {"input": [-37.0, -54.0], "expected": -36.999999958600625}, {"input": [-37.0, -53.5], "expected": -36.99999993174397}, {"input": [-37.0, -53.0], "expected": -36.99999988746483}, {"input": [-37.0, -52.5], "expected": -36.99999981446088}, {"input": [-37.0, -52.0], "expected": -36.999999694097724}, {"input": [-37.0, -51.5], "expected": -36.99999949565247}, {"input": [-37.0, -51.0], "expected": -36.999999168471625}, {"input": [-37.0, -50.5], "expected": -36.999998629041855}, {"input": [-37.0, -50.0], "expected": -36.99999773967315}, {"input": [-37.0, -49.5], "expected": -36.99999627335377}, {"input": [-37.0, -49.0], "expected": -36.99999385580652}, {"input": [-37.0, -48.5], "expected": -36.99998986995771}, {"input": [-37.0, -48.0], "expected": -36.99998329843868}, {"input": [-37.0, -47.5], "expected": -36.99997246392977}, {"input": [-37.0, -47.0], "expected": -36.99995460110078}, {"input": [-37.0, -46.5], "expected": -36.99992515097137}, {"input": [-37.0, -46.0], "expected": -36.99987659781028}, {"input": [-37.0, -45.5], "expected": -36.99979655232787}, {"input": [-37.0, -45.0], "expected": -36.9996645936271}, {"input": [-37.0, -44.5], "expected": -36.99944706852464}, {"input": [-37.0, -44.0], "expected": -36.99908853354623}, {"input": [-37.0, -43.5], "expected": -36.99849768984024}, {"input": [-37.0, -43.0], "expected": -36.99752431486227}, {"input": [-37.0, -42.5], "expected": -36.99592155672943}, {"input": [-37.0, -42.0], "expected": -36.99328465151088}, {"input": [-37.0, -41.5], "expected": -36.9889522551514}, {"input": [-37.0, -41.0], "expected": -36.98185007208219}, {"input": [-37.0, -40.5], "expected": -36.97024958172738}, {"input": [-37.0, -40.0], "expected": -36.951412648426256}, {"input": [-37.0, -39.5], "expected": -36.92111026570745}, {"input": [-37.0, -39.0], "expected": -36.87307198895703}, {"input": [-37.0, -38.5], "expected": -36.79858672201725}, {"input": [-37.0, -38.0], "expected": -36.68673831248178}, {"input": [-37.0, -37.5], "expected": -36.52592301581989}, {"input": [-37.0, -37.0], "expected": -36.30685281944005}, {"input": [-37.0, -36.5], "expected": -36.02592301581989}, {"input": [-37.0, -36.0], "expected": -35.68673831248178}, {"input": [-37.0, -35.5], "expected": -35.29858672201725}, {"input": [-37.0, -35.0], "expected": -34.87307198895703}, {"input": [-37.0, -34.5], "expected": -34.42111026570745}, {"input": [-37.0, -34.0], "expected": -33.951412648426256}, {"input": [-37.0, -33.5], "expected": -33.47024958172738}, {"input": [-37.0, -33.0], "expected": -32.98185007208219}, {"input": [-37.0, -32.5], "expected": -32.4889522551514}, {"input": [-37.0, -32.0], "expected": -31.993284651510884}, {"input": [-37.0, -31.5], "expected": -31.495921556729428}, {"input": [-37.0, -31.0], "expected": -30.997524314862268}, {"input": [-37.0, -30.5], "expected": -30.498497689840246}, {"input": [-37.0, -30.0], "expected": -29.999088533546225}, {"input": [-37.0, -29.5], "expected": -29.49944706852464}, {"input": [-37.0, -29.0], "expected": -28.999664593627106}, {"input": [-37.0, -28.5], "expected": -28.499796552327872}, {"input": [-37.0, -28.0], "expected": -27.999876597810278}, {"input": [-37.0, -27.5], "expected": -27.49992515097137}, {"input": [-37.0, -27.0], "expected": -26.999954601100782}, {"input": [-37.0, -26.5], "expected": -26.499972463929772}, {"input": [-37.0, -26.0], "expected": -25.999983298438682}, {"input": [-37.0, -25.5], "expected": -25.49998986995771}, {"input": [-37.0, -25.0], "expected": -24.999993855806522}, {"input": [-37.0, -24.5], "expected": -24.499996273353773}, {"input": [-37.0, -24.0], "expected": -23.999997739673148}, {"input": [-37.0, -23.5], "expected": -23.499998629041855}, {"input": [-37.0, -23.0], "expected": -22.999999168471625}, {"input": [-37.0, -22.5], "expected": -22.499999495652464}, {"input": [-37.0, -22.0], "expected": -21.999999694097728}, {"input": [-37.0, -21.5], "expected": -21.49999981446088}, {"input": [-37.0, -21.0], "expected": -20.99999988746483}, {"input": [-37.0, -20.5], "expected": -20.499999931743968}, {"input": [-37.0, -20.0], "expected": -19.999999958600625}, {"input": [-37.0, -19.5], "expected": -19.49999997489001}, {"input": [-37.0, -19.0], "expected": -18.99999998477002}, {"input": [-37.0, -18.5], "expected": -18.49999999076255}, {"input": [-37.0, -18.0], "expected": -17.999999994397204}, {"input": [-37.0, -17.5], "expected": -17.499999996601733}, {"input": [-37.0, -17.0], "expected": -16.999999997938847}, {"input": [-37.0, -16.5], "expected": -16.499999998749846}, {"input": [-37.0, -16.0], "expected": -15.999999999241744}, {"input": [-37.0, -15.5], "expected": -15.499999999540094}, {"input": [-37.0, -15.0], "expected": -14.999999999721053}, {"input": [-37.0, -14.5], "expected": -14.499999999830811}, {"input": [-37.0, -14.0], "expected": -13.999999999897382}, {"input": [-37.0, -13.5], "expected": -13.499999999937758}, {"input": [-37.0, -13.0], "expected": -12.999999999962249}, {"input": [-37.0, -12.5], "expected": -12.499999999977103}, {"input": [-37.0, -12.0], "expected": -11.999999999986112}, {"input": [-37.0, -11.5], "expected": -11.499999999991577}, {"input": [-37.0, -11.0], "expected": -10.999999999994891}, {"input": [-37.0, -10.5], "expected": -10.499999999996902}, {"input": [-37.0, -10.0], "expected": -9.99999999999812}, {"input": [-37.0, -9.5], "expected": -9.49999999999886}, {"input": [-37.0, -9.0], "expected": -8.999999999999309}, {"input": [-37.0, -8.5], "expected": -8.49999999999958}, {"input": [-37.0, -8.0], "expected": -7.999999999999746}, {"input": [-37.0, -7.5], "expected": -7.4999999999998455}, {"input": [-37.0, -7.0], "expected": -6.999999999999907}, {"input": [-37.0, -6.5], "expected": -6.499999999999943}, {"input": [-37.0, -6.0], "expected": -5.999999999999965}, {"input": [-37.0, -5.5], "expected": -5.499999999999979}, {"input": [-37.0, -5.0], "expected": -4.999999999999988}, {"input": [-37.0, -4.5], "expected": -4.499999999999992}, {"input": [-37.0, -4.0], "expected": -3.9999999999999956}, {"input": [-37.0, -3.5], "expected": -3.4999999999999973}, {"input": [-37.0, -3.0], "expected": -2.9999999999999982}, {"input": [-37.0, -2.5], "expected": -2.499999999999999}, {"input": [-37.0, -2.0], "expected": -1.9999999999999993}, {"input": [-37.0, -1.5], "expected": -1.4999999999999996}, {"input": [-37.0, -1.0], "expected": -0.9999999999999998}, {"input": [-37.0, -0.5], "expected": -0.49999999999999983}, {"input": [-37.0, 0.0], "expected": 8.533047625744066e-17}, {"input": [-37.0, 0.5], "expected": 0.5}, {"input": [-37.0, 1.0], "expected": 1.0}, {"input": [-37.0, 1.5], "expected": 1.5}, {"input": [-37.0, 2.0], "expected": 2.0}, {"input": [-37.0, 2.5], "expected": 2.5}, {"input": [-37.0, 3.0], "expected": 3.0}, {"input": [-37.0, 3.5], "expected": 3.5}, {"input": [-37.0, 4.0], "expected": 4.0}, {"input": [-37.0, 4.5], "expected": 4.5}, {"input": [-37.0, 5.0], "expected": 5.0}, {"input": [-37.0, 5.5], "expected": 5.5}, {"input": [-37.0, 6.0], "expected": 6.0}, {"input": [-37.0, 6.5], "expected": 6.5}, {"input": [-37.0, 7.0], "expected": 7.0}, {"input": [-37.0, 7.5], "expected": 7.5}, {"input": [-37.0, 8.0], "expected": 8.0}, {"input": [-37.0, 8.5], "expected": 8.5}, {"input": [-37.0, 9.0], "expected": 9.0}, {"input": [-37.0, 9.5], "expected": 9.5}, {"input": [-37.0, 10.0], "expected": 10.0}, {"input": [-37.0, 10.5], "expected": 10.5}, {"input": [-37.0, 11.0], "expected": 11.0}, {"input": [-37.0, 11.5], "expected": 11.5}, {"input": [-37.0, 12.0], "expected": 12.0}, {"input": [-37.0, 12.5], "expected": 12.5}, {"input": [-37.0, 13.0], "expected": 13.0}, {"input": [-37.0, 13.5], "expected": 13.5}, {"input": [-37.0, 14.0], "expected": 14.0}, {"input": [-37.0, 14.5], "expected": 14.5}, {"input": [-37.0, 15.0], "expected": 15.0}, {"input": [-37.0, 15.5], "expected": 15.5}, {"input": [-37.0, 16.0], "expected": 16.0}, {"input": [-37.0, 16.5], "expected": 16.5}, {"input": [-37.0, 17.0], "expected": 17.0}, {"input": [-37.0, 17.5], "expected": 17.5}, {"input": [-37.0, 18.0], "expected": 18.0}, {"input": [-37.0, 18.5], "expected": 18.5}, {"input": [-37.0, 19.0], "expected": 19.0}, {"input": [-37.0, 19.5], "expected": 19.5}, {"input": [-37.0, 20.0], "expected": 20.0}, {"input": [-37.0, 20.5], "expected": 20.5}, {"input": [-37.0, 21.0], "expected": 21.0}, {"input": [-37.0, 21.5], "expected": 21.5}, {"input": [-37.0, 22.0], "expected": 22.0}, {"input": [-37.0, 22.5], "expected": 22.5}, {"input": [-37.0, 23.0], "expected": 23.0}, {"input": [-37.0, 23.5], "expected": 23.5}, {"input": [-37.0, 24.0], "expected": 24.0}, {"input": [-37.0, 24.5], "expected": 24.5}, {"input": [-37.0, 25.0], "expected": 25.0}, {"input": [-37.0, 25.5], "expected": 25.5}, {"input": [-37.0, 26.0], "expected": 26.0}, {"input": [-37.0, 26.5], "expected": 26.5}, {"input": [-37.0, 27.0], "expected": 27.0}, {"input": [-37.0, 27.5], "expected": 27.5}, {"input": [-37.0, 28.0], "expected": 28.0}, {"input": [-37.0, 28.5], "expected": 28.5}, {"input": [-37.0, 29.0], "expected": 29.0}, {"input": [-37.0, 29.5], "expected": 29.5}, {"input": [-37.0, 30.0], "expected": 30.0}, {"input": [-37.0, 30.5], "expected": 30.5}, {"input": [-37.0, 31.0], "expected": 31.0}, {"input": [-37.0, 31.5], "expected": 31.5}, {"input": [-37.0, 32.0], "expected": 32.0}, {"input": [-37.0, 32.5], "expected": 32.5}, {"input": [-37.0, 33.0], "expected": 33.0}, {"input": [-37.0, 33.5], "expected": 33.5}, {"input": [-37.0, 34.0], "expected": 34.0}, {"input": [-37.0, 34.5], "expected": 34.5}, {"input": [-37.0, 35.0], "expected": 35.0}, {"input": [-37.0, 35.5], "expected": 35.5}, {"input": [-37.0, 36.0], "expected": 36.0}, {"input": [-37.0, 36.5], "expected": 36.5}, {"input": [-37.0, 37.0], "expected": 37.0}, {"input": [-37.0, 37.5], "expected": 37.5}, {"input": [-37.0, 38.0], "expected": 38.0}, {"input": [-37.0, 38.5], "expected": 38.5}, {"input": [-37.0, 39.0], "expected": 39.0}, {"input": [-37.0, 39.5], "expected": 39.5}, {"input": [-37.0, 40.0], "expected": 40.0}, {"input": [-37.0, 40.5], "expected": 40.5}, {"input": [-37.0, 41.0], "expected": 41.0}, {"input": [-37.0, 41.5], "expected": 41.5}, {"input": [-37.0, 42.0], "expected": 42.0}, {"input": [-37.0, 42.5], "expected": 42.5}, {"input": [-37.0, 43.0], "expected": 43.0}, {"input": [-37.0, 43.5], "expected": 43.5}, {"input": [-37.0, 44.0], "expected": 44.0}, {"input": [-37.0, 44.5], "expected": 44.5}, {"input": [-37.0, 45.0], "expected": 45.0}, {"input": [-37.0, 45.5], "expected": 45.5}, {"input": [-37.0, 46.0], "expected": 46.0}, {"input": [-37.0, 46.5], "expected": 46.5}, {"input": [-37.0, 47.0], "expected": 47.0}, {"input": [-37.0, 47.5], "expected": 47.5}, {"input": [-37.0, 48.0], "expected": 48.0}, {"input": [-37.0, 48.5], "expected": 48.5}, {"input": [-37.0, 49.0], "expected": 49.0}, {"input": [-37.0, 49.5], "expected": 49.5}, {"input": [-37.0, 50.0], "expected": 50.0}, {"input": [-37.0, 50.5], "expected": 50.5}, {"input": [-37.0, 51.0], "expected": 51.0}, {"input": [-37.0, 51.5], "expected": 51.5}, {"input": [-37.0, 52.0], "expected": 52.0}, {"input": [-37.0, 52.5], "expected": 52.5}, {"input": [-37.0, 53.0], "expected": 53.0}, {"input": [-37.0, 53.5], "expected": 53.5}, {"input": [-37.0, 54.0], "expected": 54.0}, {"input": [-37.0, 54.5], "expected": 54.5}, {"input": [-37.0, 55.0], "expected": 55.0}, {"input": [-37.0, 55.5], "expected": 55.5}, {"input": [-37.0, 56.0], "expected": 56.0}, {"input": [-37.0, 56.5], "expected": 56.5}, {"input": [-37.0, 57.0], "expected": 57.0}, {"input": [-37.0, 57.5], "expected": 57.5}, {"input": [-37.0, 58.0], "expected": 58.0}, {"input": [-37.0, 58.5], "expected": 58.5}, {"input": [-37.0, 59.0], "expected": 59.0}, {"input": [-37.0, 59.5], "expected": 59.5}, {"input": [-37.0, 60.0], "expected": 60.0}, {"input": [-37.0, 60.5], "expected": 60.5}, {"input": [-37.0, 61.0], "expected": 61.0}, {"input": [-37.0, 61.5], "expected": 61.5}, {"input": [-37.0, 62.0], "expected": 62.0}, {"input": [-37.0, 62.5], "expected": 62.5}, {"input": [-37.0, 63.0], "expected": 63.0}, {"input": [-37.0, 63.5], "expected": 63.5}, {"input": [-37.0, 64.0], "expected": 64.0}, {"input": [-37.0, 64.5], "expected": 64.5}, {"input": [-37.0, 65.0], "expected": 65.0}, {"input": [-37.0, 65.5], "expected": 65.5}, {"input": [-37.0, 66.0], "expected": 66.0}, {"input": [-37.0, 66.5], "expected": 66.5}, {"input": [-37.0, 67.0], "expected": 67.0}, {"input": [-37.0, 67.5], "expected": 67.5}, {"input": [-37.0, 68.0], "expected": 68.0}, {"input": [-37.0, 68.5], "expected": 68.5}, {"input": [-37.0, 69.0], "expected": 69.0}, {"input": [-37.0, 69.5], "expected": 69.5}, {"input": [-37.0, 70.0], "expected": 70.0}, {"input": [-37.0, 70.5], "expected": 70.5}, {"input": [-37.0, 71.0], "expected": 71.0}, {"input": [-37.0, 71.5], "expected": 71.5}, {"input": [-37.0, 72.0], "expected": 72.0}, {"input": [-37.0, 72.5], "expected": 72.5}, {"input": [-37.0, 73.0], "expected": 73.0}, {"input": [-37.0, 73.5], "expected": 73.5}, {"input": [-37.0, 74.0], "expected": 74.0}, {"input": [-37.0, 74.5], "expected": 74.5}, {"input": [-37.0, 75.0], "expected": 75.0}, {"input": [-37.0, 75.5], "expected": 75.5}, {"input": [-37.0, 76.0], "expected": 76.0}, {"input": [-37.0, 76.5], "expected": 76.5}, {"input": [-37.0, 77.0], "expected": 77.0}, {"input": [-37.0, 77.5], "expected": 77.5}, {"input": [-37.0, 78.0], "expected": 78.0}, {"input": [-37.0, 78.5], "expected": 78.5}, {"input": [-37.0, 79.0], "expected": 79.0}, {"input": [-37.0, 79.5], "expected": 79.5}, {"input": [-37.0, 80.0], "expected": 80.0}, {"input": [-37.0, 80.5], "expected": 80.5}, {"input": [-37.0, 81.0], "expected": 81.0}, {"input": [-37.0, 81.5], "expected": 81.5}, {"input": [-37.0, 82.0], "expected": 82.0}, {"input": [-37.0, 82.5], "expected": 82.5}, {"input": [-37.0, 83.0], "expected": 83.0}, {"input": [-37.0, 83.5], "expected": 83.5}, {"input": [-37.0, 84.0], "expected": 84.0}, {"input": [-37.0, 84.5], "expected": 84.5}, {"input": [-37.0, 85.0], "expected": 85.0}, {"input": [-37.0, 85.5], "expected": 85.5}, {"input": [-37.0, 86.0], "expected": 86.0}, {"input": [-37.0, 86.5], "expected": 86.5}, {"input": [-37.0, 87.0], "expected": 87.0}, {"input": [-37.0, 87.5], "expected": 87.5}, {"input": [-37.0, 88.0], "expected": 88.0}, {"input": [-37.0, 88.5], "expected": 88.5}, {"input": [-37.0, 89.0], "expected": 89.0}, {"input": [-37.0, 89.5], "expected": 89.5}, {"input": [-37.0, 90.0], "expected": 90.0}, {"input": [-37.0, 90.5], "expected": 90.5}, {"input": [-37.0, 91.0], "expected": 91.0}, {"input": [-37.0, 91.5], "expected": 91.5}, {"input": [-37.0, 92.0], "expected": 92.0}, {"input": [-37.0, 92.5], "expected": 92.5}, {"input": [-37.0, 93.0], "expected": 93.0}, {"input": [-37.0, 93.5], "expected": 93.5}, {"input": [-37.0, 94.0], "expected": 94.0}, {"input": [-37.0, 94.5], "expected": 94.5}, {"input": [-37.0, 95.0], "expected": 95.0}, {"input": [-37.0, 95.5], "expected": 95.5}, {"input": [-37.0, 96.0], "expected": 96.0}, {"input": [-37.0, 96.5], "expected": 96.5}, {"input": [-37.0, 97.0], "expected": 97.0}, {"input": [-37.0, 97.5], "expected": 97.5}, {"input": [-37.0, 98.0], "expected": 98.0}, {"input": [-37.0, 98.5], "expected": 98.5}, {"input": [-37.0, 99.0], "expected": 99.0}, {"input": [-37.0, 99.5], "expected": 99.5}, {"input": [-36.5, -100.0], "expected": -36.5}, {"input": [-36.5, -99.5], "expected": -36.5}, {"input": [-36.5, -99.0], "expected": -36.5}, {"input": [-36.5, -98.5], "expected": -36.5}, {"input": [-36.5, -98.0], "expected": -36.5}, {"input": [-36.5, -97.5], "expected": -36.5}, {"input": [-36.5, -97.0], "expected": -36.5}, {"input": [-36.5, -96.5], "expected": -36.5}, {"input": [-36.5, -96.0], "expected": -36.5}, {"input": [-36.5, -95.5], "expected": -36.5}, {"input": [-36.5, -95.0], "expected": -36.5}, {"input": [-36.5, -94.5], "expected": -36.5}, {"input": [-36.5, -94.0], "expected": -36.5}, {"input": [-36.5, -93.5], "expected": -36.5}, {"input": [-36.5, -93.0], "expected": -36.5}, {"input": [-36.5, -92.5], "expected": -36.5}, {"input": [-36.5, -92.0], "expected": -36.5}, {"input": [-36.5, -91.5], "expected": -36.5}, {"input": [-36.5, -91.0], "expected": -36.5}, {"input": [-36.5, -90.5], "expected": -36.5}, {"input": [-36.5, -90.0], "expected": -36.5}, {"input": [-36.5, -89.5], "expected": -36.5}, {"input": [-36.5, -89.0], "expected": -36.5}, {"input": [-36.5, -88.5], "expected": -36.5}, {"input": [-36.5, -88.0], "expected": -36.5}, {"input": [-36.5, -87.5], "expected": -36.5}, {"input": [-36.5, -87.0], "expected": -36.5}, {"input": [-36.5, -86.5], "expected": -36.5}, {"input": [-36.5, -86.0], "expected": -36.5}, {"input": [-36.5, -85.5], "expected": -36.5}, {"input": [-36.5, -85.0], "expected": -36.5}, {"input": [-36.5, -84.5], "expected": -36.5}, {"input": [-36.5, -84.0], "expected": -36.5}, {"input": [-36.5, -83.5], "expected": -36.5}, {"input": [-36.5, -83.0], "expected": -36.5}, {"input": [-36.5, -82.5], "expected": -36.5}, {"input": [-36.5, -82.0], "expected": -36.5}, {"input": [-36.5, -81.5], "expected": -36.5}, {"input": [-36.5, -81.0], "expected": -36.5}, {"input": [-36.5, -80.5], "expected": -36.5}, {"input": [-36.5, -80.0], "expected": -36.5}, {"input": [-36.5, -79.5], "expected": -36.5}, {"input": [-36.5, -79.0], "expected": -36.5}, {"input": [-36.5, -78.5], "expected": -36.5}, {"input": [-36.5, -78.0], "expected": -36.5}, {"input": [-36.5, -77.5], "expected": -36.5}, {"input": [-36.5, -77.0], "expected": -36.5}, {"input": [-36.5, -76.5], "expected": -36.5}, {"input": [-36.5, -76.0], "expected": -36.5}, {"input": [-36.5, -75.5], "expected": -36.5}, {"input": [-36.5, -75.0], "expected": -36.5}, {"input": [-36.5, -74.5], "expected": -36.5}, {"input": [-36.5, -74.0], "expected": -36.5}, {"input": [-36.5, -73.5], "expected": -36.5}, {"input": [-36.5, -73.0], "expected": -36.5}, {"input": [-36.5, -72.5], "expected": -36.5}, {"input": [-36.5, -72.0], "expected": -36.5}, {"input": [-36.5, -71.5], "expected": -36.5}, {"input": [-36.5, -71.0], "expected": -36.5}, {"input": [-36.5, -70.5], "expected": -36.5}, {"input": [-36.5, -70.0], "expected": -36.5}, {"input": [-36.5, -69.5], "expected": -36.49999999999999}, {"input": [-36.5, -69.0], "expected": -36.49999999999999}, {"input": [-36.5, -68.5], "expected": -36.499999999999986}, {"input": [-36.5, -68.0], "expected": -36.49999999999998}, {"input": [-36.5, -67.5], "expected": -36.499999999999964}, {"input": [-36.5, -67.0], "expected": -36.49999999999994}, {"input": [-36.5, -66.5], "expected": -36.49999999999991}, {"input": [-36.5, -66.0], "expected": -36.499999999999844}, {"input": [-36.5, -65.5], "expected": -36.499999999999744}, {"input": [-36.5, -65.0], "expected": -36.49999999999958}, {"input": [-36.5, -64.5], "expected": -36.49999999999931}, {"input": [-36.5, -64.0], "expected": -36.49999999999886}, {"input": [-36.5, -63.5], "expected": -36.49999999999812}, {"input": [-36.5, -63.0], "expected": -36.4999999999969}, {"input": [-36.5, -62.5], "expected": -36.49999999999489}, {"input": [-36.5, -62.0], "expected": -36.49999999999158}, {"input": [-36.5, -61.5], "expected": -36.49999999998611}, {"input": [-36.5, -61.0], "expected": -36.4999999999771}, {"input": [-36.5, -60.5], "expected": -36.49999999996225}, {"input": [-36.5, -60.0], "expected": -36.49999999993776}, {"input": [-36.5, -59.5], "expected": -36.49999999989738}, {"input": [-36.5, -59.0], "expected": -36.49999999983081}, {"input": [-36.5, -58.5], "expected": -36.499999999721055}, {"input": [-36.5, -58.0], "expected": -36.499999999540094}, {"input": [-36.5, -57.5], "expected": -36.499999999241744}, {"input": [-36.5, -57.0], "expected": -36.49999999874985}, {"input": [-36.5, -56.5], "expected": -36.49999999793884}, {"input": [-36.5, -56.0], "expected": -36.49999999660173}, {"input": [-36.5, -55.5], "expected": -36.49999999439721}, {"input": [-36.5, -55.0], "expected": -36.499999990762554}, {"input": [-36.5, -54.5], "expected": -36.49999998477002}, {"input": [-36.5, -54.0], "expected": -36.49999997489001}, {"input": [-36.5, -53.5], "expected": -36.499999958600625}, {"input": [-36.5, -53.0], "expected": -36.49999993174397}, {"input": [-36.5, -52.5], "expected": -36.49999988746483}, {"input": [-36.5, -52.0], "expected": -36.49999981446088}, {"input": [-36.5, -51.5], "expected": -36.499999694097724}, {"input": [-36.5, -51.0], "expected": -36.49999949565247}, {"input": [-36.5, -50.5], "expected": -36.499999168471625}, {"input": [-36.5, -50.0], "expected": -36.499998629041855}, {"input": [-36.5, -49.5], "expected": -36.49999773967315}, {"input": [-36.5, -49.0], "expected": -36.49999627335377}, {"input": [-36.5, -48.5], "expected": -36.49999385580652}, {"input": [-36.5, -48.0], "expected": -36.49998986995771}, {"input": [-36.5, -47.5], "expected": -36.49998329843868}, {"input": [-36.5, -47.0], "expected": -36.49997246392977}, {"input": [-36.5, -46.5], "expected": -36.49995460110078}, {"input": [-36.5, -46.0], "expected": -36.49992515097137}, {"input": [-36.5, -45.5], "expected": -36.49987659781028}, {"input": [-36.5, -45.0], "expected": -36.49979655232787}, {"input": [-36.5, -44.5], "expected": -36.4996645936271}, {"input": [-36.5, -44.0], "expected": -36.49944706852464}, {"input": [-36.5, -43.5], "expected": -36.49908853354623}, {"input": [-36.5, -43.0], "expected": -36.49849768984024}, {"input": [-36.5, -42.5], "expected": -36.49752431486227}, {"input": [-36.5, -42.0], "expected": -36.49592155672943}, {"input": [-36.5, -41.5], "expected": -36.49328465151088}, {"input": [-36.5, -41.0], "expected": -36.4889522551514}, {"input": [-36.5, -40.5], "expected": -36.48185007208219}, {"input": [-36.5, -40.0], "expected": -36.47024958172738}, {"input": [-36.5, -39.5], "expected": -36.451412648426256}, {"input": [-36.5, -39.0], "expected": -36.42111026570745}, {"input": [-36.5, -38.5], "expected": -36.37307198895703}, {"input": [-36.5, -38.0], "expected": -36.29858672201725}, {"input": [-36.5, -37.5], "expected": -36.18673831248178}, {"input": [-36.5, -37.0], "expected": -36.02592301581989}, {"input": [-36.5, -36.5], "expected": -35.80685281944005}, {"input": [-36.5, -36.0], "expected": -35.52592301581989}, {"input": [-36.5, -35.5], "expected": -35.18673831248178}, {"input": [-36.5, -35.0], "expected": -34.79858672201725}, {"input": [-36.5, -34.5], "expected": -34.37307198895703}, {"input": [-36.5, -34.0], "expected": -33.92111026570745}, {"input": [-36.5, -33.5], "expected": -33.451412648426256}, {"input": [-36.5, -33.0], "expected": -32.97024958172738}, {"input": [-36.5, -32.5], "expected": -32.48185007208219}, {"input": [-36.5, -32.0], "expected": -31.988952255151407}, {"input": [-36.5, -31.5], "expected": -31.493284651510884}, {"input": [-36.5, -31.0], "expected": -30.995921556729428}, {"input": [-36.5, -30.5], "expected": -30.497524314862268}, {"input": [-36.5, -30.0], "expected": -29.998497689840246}, {"input": [-36.5, -29.5], "expected": -29.499088533546225}, {"input": [-36.5, -29.0], "expected": -28.99944706852464}, {"input": [-36.5, -28.5], "expected": -28.499664593627106}, {"input": [-36.5, -28.0], "expected": -27.999796552327872}, {"input": [-36.5, -27.5], "expected": -27.499876597810278}, {"input": [-36.5, -27.0], "expected": -26.99992515097137}, {"input": [-36.5, -26.5], "expected": -26.499954601100782}, {"input": [-36.5, -26.0], "expected": -25.999972463929772}, {"input": [-36.5, -25.5], "expected": -25.499983298438682}, {"input": [-36.5, -25.0], "expected": -24.99998986995771}, {"input": [-36.5, -24.5], "expected": -24.499993855806522}, {"input": [-36.5, -24.0], "expected": -23.999996273353773}, {"input": [-36.5, -23.5], "expected": -23.499997739673148}, {"input": [-36.5, -23.0], "expected": -22.999998629041855}, {"input": [-36.5, -22.5], "expected": -22.499999168471625}, {"input": [-36.5, -22.0], "expected": -21.999999495652464}, {"input": [-36.5, -21.5], "expected": -21.499999694097728}, {"input": [-36.5, -21.0], "expected": -20.99999981446088}, {"input": [-36.5, -20.5], "expected": -20.49999988746483}, {"input": [-36.5, -20.0], "expected": -19.999999931743968}, {"input": [-36.5, -19.5], "expected": -19.499999958600625}, {"input": [-36.5, -19.0], "expected": -18.99999997489001}, {"input": [-36.5, -18.5], "expected": -18.49999998477002}, {"input": [-36.5, -18.0], "expected": -17.99999999076255}, {"input": [-36.5, -17.5], "expected": -17.499999994397204}, {"input": [-36.5, -17.0], "expected": -16.999999996601733}, {"input": [-36.5, -16.5], "expected": -16.499999997938847}, {"input": [-36.5, -16.0], "expected": -15.999999998749848}, {"input": [-36.5, -15.5], "expected": -15.499999999241744}, {"input": [-36.5, -15.0], "expected": -14.999999999540094}, {"input": [-36.5, -14.5], "expected": -14.499999999721053}, {"input": [-36.5, -14.0], "expected": -13.999999999830811}, {"input": [-36.5, -13.5], "expected": -13.499999999897382}, {"input": [-36.5, -13.0], "expected": -12.999999999937758}, {"input": [-36.5, -12.5], "expected": -12.499999999962249}, {"input": [-36.5, -12.0], "expected": -11.999999999977103}, {"input": [-36.5, -11.5], "expected": -11.499999999986112}, {"input": [-36.5, -11.0], "expected": -10.999999999991577}, {"input": [-36.5, -10.5], "expected": -10.499999999994891}, {"input": [-36.5, -10.0], "expected": -9.999999999996902}, {"input": [-36.5, -9.5], "expected": -9.49999999999812}, {"input": [-36.5, -9.0], "expected": -8.99999999999886}, {"input": [-36.5, -8.5], "expected": -8.499999999999309}, {"input": [-36.5, -8.0], "expected": -7.999999999999581}, {"input": [-36.5, -7.5], "expected": -7.499999999999746}, {"input": [-36.5, -7.0], "expected": -6.9999999999998455}, {"input": [-36.5, -6.5], "expected": -6.499999999999907}, {"input": [-36.5, -6.0], "expected": -5.999999999999943}, {"input": [-36.5, -5.5], "expected": -5.499999999999965}, {"input": [-36.5, -5.0], "expected": -4.999999999999979}, {"input": [-36.5, -4.5], "expected": -4.499999999999988}, {"input": [-36.5, -4.0], "expected": -3.9999999999999925}, {"input": [-36.5, -3.5], "expected": -3.4999999999999956}, {"input": [-36.5, -3.0], "expected": -2.9999999999999973}, {"input": [-36.5, -2.5], "expected": -2.4999999999999982}, {"input": [-36.5, -2.0], "expected": -1.999999999999999}, {"input": [-36.5, -1.5], "expected": -1.4999999999999993}, {"input": [-36.5, -1.0], "expected": -0.9999999999999997}, {"input": [-36.5, -0.5], "expected": -0.4999999999999998}, {"input": [-36.5, 0.0], "expected": 1.4068617124461467e-16}, {"input": [-36.5, 0.5], "expected": 0.5000000000000001}, {"input": [-36.5, 1.0], "expected": 1.0}, {"input": [-36.5, 1.5], "expected": 1.5}, {"input": [-36.5, 2.0], "expected": 2.0}, {"input": [-36.5, 2.5], "expected": 2.5}, {"input": [-36.5, 3.0], "expected": 3.0}, {"input": [-36.5, 3.5], "expected": 3.5}, {"input": [-36.5, 4.0], "expected": 4.0}, {"input": [-36.5, 4.5], "expected": 4.5}, {"input": [-36.5, 5.0], "expected": 5.0}, {"input": [-36.5, 5.5], "expected": 5.5}, {"input": [-36.5, 6.0], "expected": 6.0}, {"input": [-36.5, 6.5], "expected": 6.5}, {"input": [-36.5, 7.0], "expected": 7.0}, {"input": [-36.5, 7.5], "expected": 7.5}, {"input": [-36.5, 8.0], "expected": 8.0}, {"input": [-36.5, 8.5], "expected": 8.5}, {"input": [-36.5, 9.0], "expected": 9.0}, {"input": [-36.5, 9.5], "expected": 9.5}, {"input": [-36.5, 10.0], "expected": 10.0}, {"input": [-36.5, 10.5], "expected": 10.5}, {"input": [-36.5, 11.0], "expected": 11.0}, {"input": [-36.5, 11.5], "expected": 11.5}, {"input": [-36.5, 12.0], "expected": 12.0}, {"input": [-36.5, 12.5], "expected": 12.5}, {"input": [-36.5, 13.0], "expected": 13.0}, {"input": [-36.5, 13.5], "expected": 13.5}, {"input": [-36.5, 14.0], "expected": 14.0}, {"input": [-36.5, 14.5], "expected": 14.5}, {"input": [-36.5, 15.0], "expected": 15.0}, {"input": [-36.5, 15.5], "expected": 15.5}, {"input": [-36.5, 16.0], "expected": 16.0}, {"input": [-36.5, 16.5], "expected": 16.5}, {"input": [-36.5, 17.0], "expected": 17.0}, {"input": [-36.5, 17.5], "expected": 17.5}, {"input": [-36.5, 18.0], "expected": 18.0}, {"input": [-36.5, 18.5], "expected": 18.5}, {"input": [-36.5, 19.0], "expected": 19.0}, {"input": [-36.5, 19.5], "expected": 19.5}, {"input": [-36.5, 20.0], "expected": 20.0}, {"input": [-36.5, 20.5], "expected": 20.5}, {"input": [-36.5, 21.0], "expected": 21.0}, {"input": [-36.5, 21.5], "expected": 21.5}, {"input": [-36.5, 22.0], "expected": 22.0}, {"input": [-36.5, 22.5], "expected": 22.5}, {"input": [-36.5, 23.0], "expected": 23.0}, {"input": [-36.5, 23.5], "expected": 23.5}, {"input": [-36.5, 24.0], "expected": 24.0}, {"input": [-36.5, 24.5], "expected": 24.5}, {"input": [-36.5, 25.0], "expected": 25.0}, {"input": [-36.5, 25.5], "expected": 25.5}, {"input": [-36.5, 26.0], "expected": 26.0}, {"input": [-36.5, 26.5], "expected": 26.5}, {"input": [-36.5, 27.0], "expected": 27.0}, {"input": [-36.5, 27.5], "expected": 27.5}, {"input": [-36.5, 28.0], "expected": 28.0}, {"input": [-36.5, 28.5], "expected": 28.5}, {"input": [-36.5, 29.0], "expected": 29.0}, {"input": [-36.5, 29.5], "expected": 29.5}, {"input": [-36.5, 30.0], "expected": 30.0}, {"input": [-36.5, 30.5], "expected": 30.5}, {"input": [-36.5, 31.0], "expected": 31.0}, {"input": [-36.5, 31.5], "expected": 31.5}, {"input": [-36.5, 32.0], "expected": 32.0}, {"input": [-36.5, 32.5], "expected": 32.5}, {"input": [-36.5, 33.0], "expected": 33.0}, {"input": [-36.5, 33.5], "expected": 33.5}, {"input": [-36.5, 34.0], "expected": 34.0}, {"input": [-36.5, 34.5], "expected": 34.5}, {"input": [-36.5, 35.0], "expected": 35.0}, {"input": [-36.5, 35.5], "expected": 35.5}, {"input": [-36.5, 36.0], "expected": 36.0}, {"input": [-36.5, 36.5], "expected": 36.5}, {"input": [-36.5, 37.0], "expected": 37.0}, {"input": [-36.5, 37.5], "expected": 37.5}, {"input": [-36.5, 38.0], "expected": 38.0}, {"input": [-36.5, 38.5], "expected": 38.5}, {"input": [-36.5, 39.0], "expected": 39.0}, {"input": [-36.5, 39.5], "expected": 39.5}, {"input": [-36.5, 40.0], "expected": 40.0}, {"input": [-36.5, 40.5], "expected": 40.5}, {"input": [-36.5, 41.0], "expected": 41.0}, {"input": [-36.5, 41.5], "expected": 41.5}, {"input": [-36.5, 42.0], "expected": 42.0}, {"input": [-36.5, 42.5], "expected": 42.5}, {"input": [-36.5, 43.0], "expected": 43.0}, {"input": [-36.5, 43.5], "expected": 43.5}, {"input": [-36.5, 44.0], "expected": 44.0}, {"input": [-36.5, 44.5], "expected": 44.5}, {"input": [-36.5, 45.0], "expected": 45.0}, {"input": [-36.5, 45.5], "expected": 45.5}, {"input": [-36.5, 46.0], "expected": 46.0}, {"input": [-36.5, 46.5], "expected": 46.5}, {"input": [-36.5, 47.0], "expected": 47.0}, {"input": [-36.5, 47.5], "expected": 47.5}, {"input": [-36.5, 48.0], "expected": 48.0}, {"input": [-36.5, 48.5], "expected": 48.5}, {"input": [-36.5, 49.0], "expected": 49.0}, {"input": [-36.5, 49.5], "expected": 49.5}, {"input": [-36.5, 50.0], "expected": 50.0}, {"input": [-36.5, 50.5], "expected": 50.5}, {"input": [-36.5, 51.0], "expected": 51.0}, {"input": [-36.5, 51.5], "expected": 51.5}, {"input": [-36.5, 52.0], "expected": 52.0}, {"input": [-36.5, 52.5], "expected": 52.5}, {"input": [-36.5, 53.0], "expected": 53.0}, {"input": [-36.5, 53.5], "expected": 53.5}, {"input": [-36.5, 54.0], "expected": 54.0}, {"input": [-36.5, 54.5], "expected": 54.5}, {"input": [-36.5, 55.0], "expected": 55.0}, {"input": [-36.5, 55.5], "expected": 55.5}, {"input": [-36.5, 56.0], "expected": 56.0}, {"input": [-36.5, 56.5], "expected": 56.5}, {"input": [-36.5, 57.0], "expected": 57.0}, {"input": [-36.5, 57.5], "expected": 57.5}, {"input": [-36.5, 58.0], "expected": 58.0}, {"input": [-36.5, 58.5], "expected": 58.5}, {"input": [-36.5, 59.0], "expected": 59.0}, {"input": [-36.5, 59.5], "expected": 59.5}, {"input": [-36.5, 60.0], "expected": 60.0}, {"input": [-36.5, 60.5], "expected": 60.5}, {"input": [-36.5, 61.0], "expected": 61.0}, {"input": [-36.5, 61.5], "expected": 61.5}, {"input": [-36.5, 62.0], "expected": 62.0}, {"input": [-36.5, 62.5], "expected": 62.5}, {"input": [-36.5, 63.0], "expected": 63.0}, {"input": [-36.5, 63.5], "expected": 63.5}, {"input": [-36.5, 64.0], "expected": 64.0}, {"input": [-36.5, 64.5], "expected": 64.5}, {"input": [-36.5, 65.0], "expected": 65.0}, {"input": [-36.5, 65.5], "expected": 65.5}, {"input": [-36.5, 66.0], "expected": 66.0}, {"input": [-36.5, 66.5], "expected": 66.5}, {"input": [-36.5, 67.0], "expected": 67.0}, {"input": [-36.5, 67.5], "expected": 67.5}, {"input": [-36.5, 68.0], "expected": 68.0}, {"input": [-36.5, 68.5], "expected": 68.5}, {"input": [-36.5, 69.0], "expected": 69.0}, {"input": [-36.5, 69.5], "expected": 69.5}, {"input": [-36.5, 70.0], "expected": 70.0}, {"input": [-36.5, 70.5], "expected": 70.5}, {"input": [-36.5, 71.0], "expected": 71.0}, {"input": [-36.5, 71.5], "expected": 71.5}, {"input": [-36.5, 72.0], "expected": 72.0}, {"input": [-36.5, 72.5], "expected": 72.5}, {"input": [-36.5, 73.0], "expected": 73.0}, {"input": [-36.5, 73.5], "expected": 73.5}, {"input": [-36.5, 74.0], "expected": 74.0}, {"input": [-36.5, 74.5], "expected": 74.5}, {"input": [-36.5, 75.0], "expected": 75.0}, {"input": [-36.5, 75.5], "expected": 75.5}, {"input": [-36.5, 76.0], "expected": 76.0}, {"input": [-36.5, 76.5], "expected": 76.5}, {"input": [-36.5, 77.0], "expected": 77.0}, {"input": [-36.5, 77.5], "expected": 77.5}, {"input": [-36.5, 78.0], "expected": 78.0}, {"input": [-36.5, 78.5], "expected": 78.5}, {"input": [-36.5, 79.0], "expected": 79.0}, {"input": [-36.5, 79.5], "expected": 79.5}, {"input": [-36.5, 80.0], "expected": 80.0}, {"input": [-36.5, 80.5], "expected": 80.5}, {"input": [-36.5, 81.0], "expected": 81.0}, {"input": [-36.5, 81.5], "expected": 81.5}, {"input": [-36.5, 82.0], "expected": 82.0}, {"input": [-36.5, 82.5], "expected": 82.5}, {"input": [-36.5, 83.0], "expected": 83.0}, {"input": [-36.5, 83.5], "expected": 83.5}, {"input": [-36.5, 84.0], "expected": 84.0}, {"input": [-36.5, 84.5], "expected": 84.5}, {"input": [-36.5, 85.0], "expected": 85.0}, {"input": [-36.5, 85.5], "expected": 85.5}, {"input": [-36.5, 86.0], "expected": 86.0}, {"input": [-36.5, 86.5], "expected": 86.5}, {"input": [-36.5, 87.0], "expected": 87.0}, {"input": [-36.5, 87.5], "expected": 87.5}, {"input": [-36.5, 88.0], "expected": 88.0}, {"input": [-36.5, 88.5], "expected": 88.5}, {"input": [-36.5, 89.0], "expected": 89.0}, {"input": [-36.5, 89.5], "expected": 89.5}, {"input": [-36.5, 90.0], "expected": 90.0}, {"input": [-36.5, 90.5], "expected": 90.5}, {"input": [-36.5, 91.0], "expected": 91.0}, {"input": [-36.5, 91.5], "expected": 91.5}, {"input": [-36.5, 92.0], "expected": 92.0}, {"input": [-36.5, 92.5], "expected": 92.5}, {"input": [-36.5, 93.0], "expected": 93.0}, {"input": [-36.5, 93.5], "expected": 93.5}, {"input": [-36.5, 94.0], "expected": 94.0}, {"input": [-36.5, 94.5], "expected": 94.5}, {"input": [-36.5, 95.0], "expected": 95.0}, {"input": [-36.5, 95.5], "expected": 95.5}, {"input": [-36.5, 96.0], "expected": 96.0}, {"input": [-36.5, 96.5], "expected": 96.5}, {"input": [-36.5, 97.0], "expected": 97.0}, {"input": [-36.5, 97.5], "expected": 97.5}, {"input": [-36.5, 98.0], "expected": 98.0}, {"input": [-36.5, 98.5], "expected": 98.5}, {"input": [-36.5, 99.0], "expected": 99.0}, {"input": [-36.5, 99.5], "expected": 99.5}, {"input": [-36.0, -100.0], "expected": -36.0}, {"input": [-36.0, -99.5], "expected": -36.0}, {"input": [-36.0, -99.0], "expected": -36.0}, {"input": [-36.0, -98.5], "expected": -36.0}, {"input": [-36.0, -98.0], "expected": -36.0}, {"input": [-36.0, -97.5], "expected": -36.0}, {"input": [-36.0, -97.0], "expected": -36.0}, {"input": [-36.0, -96.5], "expected": -36.0}, {"input": [-36.0, -96.0], "expected": -36.0}, {"input": [-36.0, -95.5], "expected": -36.0}, {"input": [-36.0, -95.0], "expected": -36.0}, {"input": [-36.0, -94.5], "expected": -36.0}, {"input": [-36.0, -94.0], "expected": -36.0}, {"input": [-36.0, -93.5], "expected": -36.0}, {"input": [-36.0, -93.0], "expected": -36.0}, {"input": [-36.0, -92.5], "expected": -36.0}, {"input": [-36.0, -92.0], "expected": -36.0}, {"input": [-36.0, -91.5], "expected": -36.0}, {"input": [-36.0, -91.0], "expected": -36.0}, {"input": [-36.0, -90.5], "expected": -36.0}, {"input": [-36.0, -90.0], "expected": -36.0}, {"input": [-36.0, -89.5], "expected": -36.0}, {"input": [-36.0, -89.0], "expected": -36.0}, {"input": [-36.0, -88.5], "expected": -36.0}, {"input": [-36.0, -88.0], "expected": -36.0}, {"input": [-36.0, -87.5], "expected": -36.0}, {"input": [-36.0, -87.0], "expected": -36.0}, {"input": [-36.0, -86.5], "expected": -36.0}, {"input": [-36.0, -86.0], "expected": -36.0}, {"input": [-36.0, -85.5], "expected": -36.0}, {"input": [-36.0, -85.0], "expected": -36.0}, {"input": [-36.0, -84.5], "expected": -36.0}, {"input": [-36.0, -84.0], "expected": -36.0}, {"input": [-36.0, -83.5], "expected": -36.0}, {"input": [-36.0, -83.0], "expected": -36.0}, {"input": [-36.0, -82.5], "expected": -36.0}, {"input": [-36.0, -82.0], "expected": -36.0}, {"input": [-36.0, -81.5], "expected": -36.0}, {"input": [-36.0, -81.0], "expected": -36.0}, {"input": [-36.0, -80.5], "expected": -36.0}, {"input": [-36.0, -80.0], "expected": -36.0}, {"input": [-36.0, -79.5], "expected": -36.0}, {"input": [-36.0, -79.0], "expected": -36.0}, {"input": [-36.0, -78.5], "expected": -36.0}, {"input": [-36.0, -78.0], "expected": -36.0}, {"input": [-36.0, -77.5], "expected": -36.0}, {"input": [-36.0, -77.0], "expected": -36.0}, {"input": [-36.0, -76.5], "expected": -36.0}, {"input": [-36.0, -76.0], "expected": -36.0}, {"input": [-36.0, -75.5], "expected": -36.0}, {"input": [-36.0, -75.0], "expected": -36.0}, {"input": [-36.0, -74.5], "expected": -36.0}, {"input": [-36.0, -74.0], "expected": -36.0}, {"input": [-36.0, -73.5], "expected": -36.0}, {"input": [-36.0, -73.0], "expected": -36.0}, {"input": [-36.0, -72.5], "expected": -36.0}, {"input": [-36.0, -72.0], "expected": -36.0}, {"input": [-36.0, -71.5], "expected": -36.0}, {"input": [-36.0, -71.0], "expected": -36.0}, {"input": [-36.0, -70.5], "expected": -36.0}, {"input": [-36.0, -70.0], "expected": -36.0}, {"input": [-36.0, -69.5], "expected": -36.0}, {"input": [-36.0, -69.0], "expected": -35.99999999999999}, {"input": [-36.0, -68.5], "expected": -35.99999999999999}, {"input": [-36.0, -68.0], "expected": -35.999999999999986}, {"input": [-36.0, -67.5], "expected": -35.99999999999998}, {"input": [-36.0, -67.0], "expected": -35.999999999999964}, {"input": [-36.0, -66.5], "expected": -35.99999999999994}, {"input": [-36.0, -66.0], "expected": -35.99999999999991}, {"input": [-36.0, -65.5], "expected": -35.999999999999844}, {"input": [-36.0, -65.0], "expected": -35.999999999999744}, {"input": [-36.0, -64.5], "expected": -35.99999999999958}, {"input": [-36.0, -64.0], "expected": -35.99999999999931}, {"input": [-36.0, -63.5], "expected": -35.99999999999886}, {"input": [-36.0, -63.0], "expected": -35.99999999999812}, {"input": [-36.0, -62.5], "expected": -35.9999999999969}, {"input": [-36.0, -62.0], "expected": -35.99999999999489}, {"input": [-36.0, -61.5], "expected": -35.99999999999158}, {"input": [-36.0, -61.0], "expected": -35.99999999998611}, {"input": [-36.0, -60.5], "expected": -35.9999999999771}, {"input": [-36.0, -60.0], "expected": -35.99999999996225}, {"input": [-36.0, -59.5], "expected": -35.99999999993776}, {"input": [-36.0, -59.0], "expected": -35.99999999989738}, {"input": [-36.0, -58.5], "expected": -35.99999999983081}, {"input": [-36.0, -58.0], "expected": -35.999999999721055}, {"input": [-36.0, -57.5], "expected": -35.999999999540094}, {"input": [-36.0, -57.0], "expected": -35.999999999241744}, {"input": [-36.0, -56.5], "expected": -35.99999999874985}, {"input": [-36.0, -56.0], "expected": -35.99999999793884}, {"input": [-36.0, -55.5], "expected": -35.99999999660173}, {"input": [-36.0, -55.0], "expected": -35.99999999439721}, {"input": [-36.0, -54.5], "expected": -35.999999990762554}, {"input": [-36.0, -54.0], "expected": -35.99999998477002}, {"input": [-36.0, -53.5], "expected": -35.99999997489001}, {"input": [-36.0, -53.0], "expected": -35.999999958600625}, {"input": [-36.0, -52.5], "expected": -35.99999993174397}, {"input": [-36.0, -52.0], "expected": -35.99999988746483}, {"input": [-36.0, -51.5], "expected": -35.99999981446088}, {"input": [-36.0, -51.0], "expected": -35.999999694097724}, {"input": [-36.0, -50.5], "expected": -35.99999949565247}, {"input": [-36.0, -50.0], "expected": -35.999999168471625}, {"input": [-36.0, -49.5], "expected": -35.999998629041855}, {"input": [-36.0, -49.0], "expected": -35.99999773967315}, {"input": [-36.0, -48.5], "expected": -35.99999627335377}, {"input": [-36.0, -48.0], "expected": -35.99999385580652}, {"input": [-36.0, -47.5], "expected": -35.99998986995771}, {"input": [-36.0, -47.0], "expected": -35.99998329843868}, {"input": [-36.0, -46.5], "expected": -35.99997246392977}, {"input": [-36.0, -46.0], "expected": -35.99995460110078}, {"input": [-36.0, -45.5], "expected": -35.99992515097137}, {"input": [-36.0, -45.0], "expected": -35.99987659781028}, {"input": [-36.0, -44.5], "expected": -35.99979655232787}, {"input": [-36.0, -44.0], "expected": -35.9996645936271}, {"input": [-36.0, -43.5], "expected": -35.99944706852464}, {"input": [-36.0, -43.0], "expected": -35.99908853354623}, {"input": [-36.0, -42.5], "expected": -35.99849768984024}, {"input": [-36.0, -42.0], "expected": -35.99752431486227}, {"input": [-36.0, -41.5], "expected": -35.99592155672943}, {"input": [-36.0, -41.0], "expected": -35.99328465151088}, {"input": [-36.0, -40.5], "expected": -35.9889522551514}, {"input": [-36.0, -40.0], "expected": -35.98185007208219}, {"input": [-36.0, -39.5], "expected": -35.97024958172738}, {"input": [-36.0, -39.0], "expected": -35.951412648426256}, {"input": [-36.0, -38.5], "expected": -35.92111026570745}, {"input": [-36.0, -38.0], "expected": -35.87307198895703}, {"input": [-36.0, -37.5], "expected": -35.79858672201725}, {"input": [-36.0, -37.0], "expected": -35.68673831248178}, {"input": [-36.0, -36.5], "expected": -35.52592301581989}, {"input": [-36.0, -36.0], "expected": -35.30685281944005}, {"input": [-36.0, -35.5], "expected": -35.02592301581989}, {"input": [-36.0, -35.0], "expected": -34.68673831248178}, {"input": [-36.0, -34.5], "expected": -34.29858672201725}, {"input": [-36.0, -34.0], "expected": -33.87307198895703}, {"input": [-36.0, -33.5], "expected": -33.42111026570745}, {"input": [-36.0, -33.0], "expected": -32.951412648426256}, {"input": [-36.0, -32.5], "expected": -32.47024958172738}, {"input": [-36.0, -32.0], "expected": -31.98185007208219}, {"input": [-36.0, -31.5], "expected": -31.488952255151407}, {"input": [-36.0, -31.0], "expected": -30.993284651510884}, {"input": [-36.0, -30.5], "expected": -30.495921556729428}, {"input": [-36.0, -30.0], "expected": -29.997524314862268}, {"input": [-36.0, -29.5], "expected": -29.498497689840246}, {"input": [-36.0, -29.0], "expected": -28.999088533546225}, {"input": [-36.0, -28.5], "expected": -28.49944706852464}, {"input": [-36.0, -28.0], "expected": -27.999664593627106}, {"input": [-36.0, -27.5], "expected": -27.499796552327872}, {"input": [-36.0, -27.0], "expected": -26.999876597810278}, {"input": [-36.0, -26.5], "expected": -26.49992515097137}, {"input": [-36.0, -26.0], "expected": -25.999954601100782}, {"input": [-36.0, -25.5], "expected": -25.499972463929772}, {"input": [-36.0, -25.0], "expected": -24.999983298438682}, {"input": [-36.0, -24.5], "expected": -24.49998986995771}, {"input": [-36.0, -24.0], "expected": -23.999993855806522}, {"input": [-36.0, -23.5], "expected": -23.499996273353773}, {"input": [-36.0, -23.0], "expected": -22.999997739673148}, {"input": [-36.0, -22.5], "expected": -22.499998629041855}, {"input": [-36.0, -22.0], "expected": -21.999999168471625}, {"input": [-36.0, -21.5], "expected": -21.499999495652464}, {"input": [-36.0, -21.0], "expected": -20.999999694097728}, {"input": [-36.0, -20.5], "expected": -20.49999981446088}, {"input": [-36.0, -20.0], "expected": -19.99999988746483}, {"input": [-36.0, -19.5], "expected": -19.499999931743968}, {"input": [-36.0, -19.0], "expected": -18.999999958600625}, {"input": [-36.0, -18.5], "expected": -18.49999997489001}, {"input": [-36.0, -18.0], "expected": -17.99999998477002}, {"input": [-36.0, -17.5], "expected": -17.49999999076255}, {"input": [-36.0, -17.0], "expected": -16.999999994397204}, {"input": [-36.0, -16.5], "expected": -16.499999996601733}, {"input": [-36.0, -16.0], "expected": -15.999999997938847}, {"input": [-36.0, -15.5], "expected": -15.499999998749848}, {"input": [-36.0, -15.0], "expected": -14.999999999241744}, {"input": [-36.0, -14.5], "expected": -14.499999999540094}, {"input": [-36.0, -14.0], "expected": -13.999999999721053}, {"input": [-36.0, -13.5], "expected": -13.499999999830811}, {"input": [-36.0, -13.0], "expected": -12.999999999897382}, {"input": [-36.0, -12.5], "expected": -12.499999999937758}, {"input": [-36.0, -12.0], "expected": -11.999999999962249}, {"input": [-36.0, -11.5], "expected": -11.499999999977103}, {"input": [-36.0, -11.0], "expected": -10.999999999986112}, {"input": [-36.0, -10.5], "expected": -10.499999999991577}, {"input": [-36.0, -10.0], "expected": -9.999999999994891}, {"input": [-36.0, -9.5], "expected": -9.499999999996902}, {"input": [-36.0, -9.0], "expected": -8.99999999999812}, {"input": [-36.0, -8.5], "expected": -8.49999999999886}, {"input": [-36.0, -8.0], "expected": -7.999999999999309}, {"input": [-36.0, -7.5], "expected": -7.499999999999581}, {"input": [-36.0, -7.0], "expected": -6.999999999999746}, {"input": [-36.0, -6.5], "expected": -6.4999999999998455}, {"input": [-36.0, -6.0], "expected": -5.999999999999907}, {"input": [-36.0, -5.5], "expected": -5.499999999999943}, {"input": [-36.0, -5.0], "expected": -4.999999999999965}, {"input": [-36.0, -4.5], "expected": -4.499999999999979}, {"input": [-36.0, -4.0], "expected": -3.999999999999987}, {"input": [-36.0, -3.5], "expected": -3.4999999999999925}, {"input": [-36.0, -3.0], "expected": -2.9999999999999956}, {"input": [-36.0, -2.5], "expected": -2.4999999999999973}, {"input": [-36.0, -2.0], "expected": -1.9999999999999982}, {"input": [-36.0, -1.5], "expected": -1.499999999999999}, {"input": [-36.0, -1.0], "expected": -0.9999999999999993}, {"input": [-36.0, -0.5], "expected": -0.4999999999999996}, {"input": [-36.0, 0.0], "expected": 2.319522830243569e-16}, {"input": [-36.0, 0.5], "expected": 0.5000000000000001}, {"input": [-36.0, 1.0], "expected": 1.0}, {"input": [-36.0, 1.5], "expected": 1.5}, {"input": [-36.0, 2.0], "expected": 2.0}, {"input": [-36.0, 2.5], "expected": 2.5}, {"input": [-36.0, 3.0], "expected": 3.0}, {"input": [-36.0, 3.5], "expected": 3.5}, {"input": [-36.0, 4.0], "expected": 4.0}, {"input": [-36.0, 4.5], "expected": 4.5}, {"input": [-36.0, 5.0], "expected": 5.0}, {"input": [-36.0, 5.5], "expected": 5.5}, {"input": [-36.0, 6.0], "expected": 6.0}, {"input": [-36.0, 6.5], "expected": 6.5}, {"input": [-36.0, 7.0], "expected": 7.0}, {"input": [-36.0, 7.5], "expected": 7.5}, {"input": [-36.0, 8.0], "expected": 8.0}, {"input": [-36.0, 8.5], "expected": 8.5}, {"input": [-36.0, 9.0], "expected": 9.0}, {"input": [-36.0, 9.5], "expected": 9.5}, {"input": [-36.0, 10.0], "expected": 10.0}, {"input": [-36.0, 10.5], "expected": 10.5}, {"input": [-36.0, 11.0], "expected": 11.0}, {"input": [-36.0, 11.5], "expected": 11.5}, {"input": [-36.0, 12.0], "expected": 12.0}, {"input": [-36.0, 12.5], "expected": 12.5}, {"input": [-36.0, 13.0], "expected": 13.0}, {"input": [-36.0, 13.5], "expected": 13.5}, {"input": [-36.0, 14.0], "expected": 14.0}, {"input": [-36.0, 14.5], "expected": 14.5}, {"input": [-36.0, 15.0], "expected": 15.0}, {"input": [-36.0, 15.5], "expected": 15.5}, {"input": [-36.0, 16.0], "expected": 16.0}, {"input": [-36.0, 16.5], "expected": 16.5}, {"input": [-36.0, 17.0], "expected": 17.0}, {"input": [-36.0, 17.5], "expected": 17.5}, {"input": [-36.0, 18.0], "expected": 18.0}, {"input": [-36.0, 18.5], "expected": 18.5}, {"input": [-36.0, 19.0], "expected": 19.0}, {"input": [-36.0, 19.5], "expected": 19.5}, {"input": [-36.0, 20.0], "expected": 20.0}, {"input": [-36.0, 20.5], "expected": 20.5}, {"input": [-36.0, 21.0], "expected": 21.0}, {"input": [-36.0, 21.5], "expected": 21.5}, {"input": [-36.0, 22.0], "expected": 22.0}, {"input": [-36.0, 22.5], "expected": 22.5}, {"input": [-36.0, 23.0], "expected": 23.0}, {"input": [-36.0, 23.5], "expected": 23.5}, {"input": [-36.0, 24.0], "expected": 24.0}, {"input": [-36.0, 24.5], "expected": 24.5}, {"input": [-36.0, 25.0], "expected": 25.0}, {"input": [-36.0, 25.5], "expected": 25.5}, {"input": [-36.0, 26.0], "expected": 26.0}, {"input": [-36.0, 26.5], "expected": 26.5}, {"input": [-36.0, 27.0], "expected": 27.0}, {"input": [-36.0, 27.5], "expected": 27.5}, {"input": [-36.0, 28.0], "expected": 28.0}, {"input": [-36.0, 28.5], "expected": 28.5}, {"input": [-36.0, 29.0], "expected": 29.0}, {"input": [-36.0, 29.5], "expected": 29.5}, {"input": [-36.0, 30.0], "expected": 30.0}, {"input": [-36.0, 30.5], "expected": 30.5}, {"input": [-36.0, 31.0], "expected": 31.0}, {"input": [-36.0, 31.5], "expected": 31.5}, {"input": [-36.0, 32.0], "expected": 32.0}, {"input": [-36.0, 32.5], "expected": 32.5}, {"input": [-36.0, 33.0], "expected": 33.0}, {"input": [-36.0, 33.5], "expected": 33.5}, {"input": [-36.0, 34.0], "expected": 34.0}, {"input": [-36.0, 34.5], "expected": 34.5}, {"input": [-36.0, 35.0], "expected": 35.0}, {"input": [-36.0, 35.5], "expected": 35.5}, {"input": [-36.0, 36.0], "expected": 36.0}, {"input": [-36.0, 36.5], "expected": 36.5}, {"input": [-36.0, 37.0], "expected": 37.0}, {"input": [-36.0, 37.5], "expected": 37.5}, {"input": [-36.0, 38.0], "expected": 38.0}, {"input": [-36.0, 38.5], "expected": 38.5}, {"input": [-36.0, 39.0], "expected": 39.0}, {"input": [-36.0, 39.5], "expected": 39.5}, {"input": [-36.0, 40.0], "expected": 40.0}, {"input": [-36.0, 40.5], "expected": 40.5}, {"input": [-36.0, 41.0], "expected": 41.0}, {"input": [-36.0, 41.5], "expected": 41.5}, {"input": [-36.0, 42.0], "expected": 42.0}, {"input": [-36.0, 42.5], "expected": 42.5}, {"input": [-36.0, 43.0], "expected": 43.0}, {"input": [-36.0, 43.5], "expected": 43.5}, {"input": [-36.0, 44.0], "expected": 44.0}, {"input": [-36.0, 44.5], "expected": 44.5}, {"input": [-36.0, 45.0], "expected": 45.0}, {"input": [-36.0, 45.5], "expected": 45.5}, {"input": [-36.0, 46.0], "expected": 46.0}, {"input": [-36.0, 46.5], "expected": 46.5}, {"input": [-36.0, 47.0], "expected": 47.0}, {"input": [-36.0, 47.5], "expected": 47.5}, {"input": [-36.0, 48.0], "expected": 48.0}, {"input": [-36.0, 48.5], "expected": 48.5}, {"input": [-36.0, 49.0], "expected": 49.0}, {"input": [-36.0, 49.5], "expected": 49.5}, {"input": [-36.0, 50.0], "expected": 50.0}, {"input": [-36.0, 50.5], "expected": 50.5}, {"input": [-36.0, 51.0], "expected": 51.0}, {"input": [-36.0, 51.5], "expected": 51.5}, {"input": [-36.0, 52.0], "expected": 52.0}, {"input": [-36.0, 52.5], "expected": 52.5}, {"input": [-36.0, 53.0], "expected": 53.0}, {"input": [-36.0, 53.5], "expected": 53.5}, {"input": [-36.0, 54.0], "expected": 54.0}, {"input": [-36.0, 54.5], "expected": 54.5}, {"input": [-36.0, 55.0], "expected": 55.0}, {"input": [-36.0, 55.5], "expected": 55.5}, {"input": [-36.0, 56.0], "expected": 56.0}, {"input": [-36.0, 56.5], "expected": 56.5}, {"input": [-36.0, 57.0], "expected": 57.0}, {"input": [-36.0, 57.5], "expected": 57.5}, {"input": [-36.0, 58.0], "expected": 58.0}, {"input": [-36.0, 58.5], "expected": 58.5}, {"input": [-36.0, 59.0], "expected": 59.0}, {"input": [-36.0, 59.5], "expected": 59.5}, {"input": [-36.0, 60.0], "expected": 60.0}, {"input": [-36.0, 60.5], "expected": 60.5}, {"input": [-36.0, 61.0], "expected": 61.0}, {"input": [-36.0, 61.5], "expected": 61.5}, {"input": [-36.0, 62.0], "expected": 62.0}, {"input": [-36.0, 62.5], "expected": 62.5}, {"input": [-36.0, 63.0], "expected": 63.0}, {"input": [-36.0, 63.5], "expected": 63.5}, {"input": [-36.0, 64.0], "expected": 64.0}, {"input": [-36.0, 64.5], "expected": 64.5}, {"input": [-36.0, 65.0], "expected": 65.0}, {"input": [-36.0, 65.5], "expected": 65.5}, {"input": [-36.0, 66.0], "expected": 66.0}, {"input": [-36.0, 66.5], "expected": 66.5}, {"input": [-36.0, 67.0], "expected": 67.0}, {"input": [-36.0, 67.5], "expected": 67.5}, {"input": [-36.0, 68.0], "expected": 68.0}, {"input": [-36.0, 68.5], "expected": 68.5}, {"input": [-36.0, 69.0], "expected": 69.0}, {"input": [-36.0, 69.5], "expected": 69.5}, {"input": [-36.0, 70.0], "expected": 70.0}, {"input": [-36.0, 70.5], "expected": 70.5}, {"input": [-36.0, 71.0], "expected": 71.0}, {"input": [-36.0, 71.5], "expected": 71.5}, {"input": [-36.0, 72.0], "expected": 72.0}, {"input": [-36.0, 72.5], "expected": 72.5}, {"input": [-36.0, 73.0], "expected": 73.0}, {"input": [-36.0, 73.5], "expected": 73.5}, {"input": [-36.0, 74.0], "expected": 74.0}, {"input": [-36.0, 74.5], "expected": 74.5}, {"input": [-36.0, 75.0], "expected": 75.0}, {"input": [-36.0, 75.5], "expected": 75.5}, {"input": [-36.0, 76.0], "expected": 76.0}, {"input": [-36.0, 76.5], "expected": 76.5}, {"input": [-36.0, 77.0], "expected": 77.0}, {"input": [-36.0, 77.5], "expected": 77.5}, {"input": [-36.0, 78.0], "expected": 78.0}, {"input": [-36.0, 78.5], "expected": 78.5}, {"input": [-36.0, 79.0], "expected": 79.0}, {"input": [-36.0, 79.5], "expected": 79.5}, {"input": [-36.0, 80.0], "expected": 80.0}, {"input": [-36.0, 80.5], "expected": 80.5}, {"input": [-36.0, 81.0], "expected": 81.0}, {"input": [-36.0, 81.5], "expected": 81.5}, {"input": [-36.0, 82.0], "expected": 82.0}, {"input": [-36.0, 82.5], "expected": 82.5}, {"input": [-36.0, 83.0], "expected": 83.0}, {"input": [-36.0, 83.5], "expected": 83.5}, {"input": [-36.0, 84.0], "expected": 84.0}, {"input": [-36.0, 84.5], "expected": 84.5}, {"input": [-36.0, 85.0], "expected": 85.0}, {"input": [-36.0, 85.5], "expected": 85.5}, {"input": [-36.0, 86.0], "expected": 86.0}, {"input": [-36.0, 86.5], "expected": 86.5}, {"input": [-36.0, 87.0], "expected": 87.0}, {"input": [-36.0, 87.5], "expected": 87.5}, {"input": [-36.0, 88.0], "expected": 88.0}, {"input": [-36.0, 88.5], "expected": 88.5}, {"input": [-36.0, 89.0], "expected": 89.0}, {"input": [-36.0, 89.5], "expected": 89.5}, {"input": [-36.0, 90.0], "expected": 90.0}, {"input": [-36.0, 90.5], "expected": 90.5}, {"input": [-36.0, 91.0], "expected": 91.0}, {"input": [-36.0, 91.5], "expected": 91.5}, {"input": [-36.0, 92.0], "expected": 92.0}, {"input": [-36.0, 92.5], "expected": 92.5}, {"input": [-36.0, 93.0], "expected": 93.0}, {"input": [-36.0, 93.5], "expected": 93.5}, {"input": [-36.0, 94.0], "expected": 94.0}, {"input": [-36.0, 94.5], "expected": 94.5}, {"input": [-36.0, 95.0], "expected": 95.0}, {"input": [-36.0, 95.5], "expected": 95.5}, {"input": [-36.0, 96.0], "expected": 96.0}, {"input": [-36.0, 96.5], "expected": 96.5}, {"input": [-36.0, 97.0], "expected": 97.0}, {"input": [-36.0, 97.5], "expected": 97.5}, {"input": [-36.0, 98.0], "expected": 98.0}, {"input": [-36.0, 98.5], "expected": 98.5}, {"input": [-36.0, 99.0], "expected": 99.0}, {"input": [-36.0, 99.5], "expected": 99.5}, {"input": [-35.5, -100.0], "expected": -35.5}, {"input": [-35.5, -99.5], "expected": -35.5}, {"input": [-35.5, -99.0], "expected": -35.5}, {"input": [-35.5, -98.5], "expected": -35.5}, {"input": [-35.5, -98.0], "expected": -35.5}, {"input": [-35.5, -97.5], "expected": -35.5}, {"input": [-35.5, -97.0], "expected": -35.5}, {"input": [-35.5, -96.5], "expected": -35.5}, {"input": [-35.5, -96.0], "expected": -35.5}, {"input": [-35.5, -95.5], "expected": -35.5}, {"input": [-35.5, -95.0], "expected": -35.5}, {"input": [-35.5, -94.5], "expected": -35.5}, {"input": [-35.5, -94.0], "expected": -35.5}, {"input": [-35.5, -93.5], "expected": -35.5}, {"input": [-35.5, -93.0], "expected": -35.5}, {"input": [-35.5, -92.5], "expected": -35.5}, {"input": [-35.5, -92.0], "expected": -35.5}, {"input": [-35.5, -91.5], "expected": -35.5}, {"input": [-35.5, -91.0], "expected": -35.5}, {"input": [-35.5, -90.5], "expected": -35.5}, {"input": [-35.5, -90.0], "expected": -35.5}, {"input": [-35.5, -89.5], "expected": -35.5}, {"input": [-35.5, -89.0], "expected": -35.5}, {"input": [-35.5, -88.5], "expected": -35.5}, {"input": [-35.5, -88.0], "expected": -35.5}, {"input": [-35.5, -87.5], "expected": -35.5}, {"input": [-35.5, -87.0], "expected": -35.5}, {"input": [-35.5, -86.5], "expected": -35.5}, {"input": [-35.5, -86.0], "expected": -35.5}, {"input": [-35.5, -85.5], "expected": -35.5}, {"input": [-35.5, -85.0], "expected": -35.5}, {"input": [-35.5, -84.5], "expected": -35.5}, {"input": [-35.5, -84.0], "expected": -35.5}, {"input": [-35.5, -83.5], "expected": -35.5}, {"input": [-35.5, -83.0], "expected": -35.5}, {"input": [-35.5, -82.5], "expected": -35.5}, {"input": [-35.5, -82.0], "expected": -35.5}, {"input": [-35.5, -81.5], "expected": -35.5}, {"input": [-35.5, -81.0], "expected": -35.5}, {"input": [-35.5, -80.5], "expected": -35.5}, {"input": [-35.5, -80.0], "expected": -35.5}, {"input": [-35.5, -79.5], "expected": -35.5}, {"input": [-35.5, -79.0], "expected": -35.5}, {"input": [-35.5, -78.5], "expected": -35.5}, {"input": [-35.5, -78.0], "expected": -35.5}, {"input": [-35.5, -77.5], "expected": -35.5}, {"input": [-35.5, -77.0], "expected": -35.5}, {"input": [-35.5, -76.5], "expected": -35.5}, {"input": [-35.5, -76.0], "expected": -35.5}, {"input": [-35.5, -75.5], "expected": -35.5}, {"input": [-35.5, -75.0], "expected": -35.5}, {"input": [-35.5, -74.5], "expected": -35.5}, {"input": [-35.5, -74.0], "expected": -35.5}, {"input": [-35.5, -73.5], "expected": -35.5}, {"input": [-35.5, -73.0], "expected": -35.5}, {"input": [-35.5, -72.5], "expected": -35.5}, {"input": [-35.5, -72.0], "expected": -35.5}, {"input": [-35.5, -71.5], "expected": -35.5}, {"input": [-35.5, -71.0], "expected": -35.5}, {"input": [-35.5, -70.5], "expected": -35.5}, {"input": [-35.5, -70.0], "expected": -35.5}, {"input": [-35.5, -69.5], "expected": -35.5}, {"input": [-35.5, -69.0], "expected": -35.5}, {"input": [-35.5, -68.5], "expected": -35.49999999999999}, {"input": [-35.5, -68.0], "expected": -35.49999999999999}, {"input": [-35.5, -67.5], "expected": -35.499999999999986}, {"input": [-35.5, -67.0], "expected": -35.49999999999998}, {"input": [-35.5, -66.5], "expected": -35.499999999999964}, {"input": [-35.5, -66.0], "expected": -35.49999999999994}, {"input": [-35.5, -65.5], "expected": -35.49999999999991}, {"input": [-35.5, -65.0], "expected": -35.499999999999844}, {"input": [-35.5, -64.5], "expected": -35.499999999999744}, {"input": [-35.5, -64.0], "expected": -35.49999999999958}, {"input": [-35.5, -63.5], "expected": -35.49999999999931}, {"input": [-35.5, -63.0], "expected": -35.49999999999886}, {"input": [-35.5, -62.5], "expected": -35.49999999999812}, {"input": [-35.5, -62.0], "expected": -35.4999999999969}, {"input": [-35.5, -61.5], "expected": -35.49999999999489}, {"input": [-35.5, -61.0], "expected": -35.49999999999158}, {"input": [-35.5, -60.5], "expected": -35.49999999998611}, {"input": [-35.5, -60.0], "expected": -35.4999999999771}, {"input": [-35.5, -59.5], "expected": -35.49999999996225}, {"input": [-35.5, -59.0], "expected": -35.49999999993776}, {"input": [-35.5, -58.5], "expected": -35.49999999989738}, {"input": [-35.5, -58.0], "expected": -35.49999999983081}, {"input": [-35.5, -57.5], "expected": -35.499999999721055}, {"input": [-35.5, -57.0], "expected": -35.499999999540094}, {"input": [-35.5, -56.5], "expected": -35.499999999241744}, {"input": [-35.5, -56.0], "expected": -35.49999999874985}, {"input": [-35.5, -55.5], "expected": -35.49999999793884}, {"input": [-35.5, -55.0], "expected": -35.49999999660173}, {"input": [-35.5, -54.5], "expected": -35.49999999439721}, {"input": [-35.5, -54.0], "expected": -35.499999990762554}, {"input": [-35.5, -53.5], "expected": -35.49999998477002}, {"input": [-35.5, -53.0], "expected": -35.49999997489001}, {"input": [-35.5, -52.5], "expected": -35.499999958600625}, {"input": [-35.5, -52.0], "expected": -35.49999993174397}, {"input": [-35.5, -51.5], "expected": -35.49999988746483}, {"input": [-35.5, -51.0], "expected": -35.49999981446088}, {"input": [-35.5, -50.5], "expected": -35.499999694097724}, {"input": [-35.5, -50.0], "expected": -35.49999949565247}, {"input": [-35.5, -49.5], "expected": -35.499999168471625}, {"input": [-35.5, -49.0], "expected": -35.499998629041855}, {"input": [-35.5, -48.5], "expected": -35.49999773967315}, {"input": [-35.5, -48.0], "expected": -35.49999627335377}, {"input": [-35.5, -47.5], "expected": -35.49999385580652}, {"input": [-35.5, -47.0], "expected": -35.49998986995771}, {"input": [-35.5, -46.5], "expected": -35.49998329843868}, {"input": [-35.5, -46.0], "expected": -35.49997246392977}, {"input": [-35.5, -45.5], "expected": -35.49995460110078}, {"input": [-35.5, -45.0], "expected": -35.49992515097137}, {"input": [-35.5, -44.5], "expected": -35.49987659781028}, {"input": [-35.5, -44.0], "expected": -35.49979655232787}, {"input": [-35.5, -43.5], "expected": -35.4996645936271}, {"input": [-35.5, -43.0], "expected": -35.49944706852464}, {"input": [-35.5, -42.5], "expected": -35.49908853354623}, {"input": [-35.5, -42.0], "expected": -35.49849768984024}, {"input": [-35.5, -41.5], "expected": -35.49752431486227}, {"input": [-35.5, -41.0], "expected": -35.49592155672943}, {"input": [-35.5, -40.5], "expected": -35.49328465151088}, {"input": [-35.5, -40.0], "expected": -35.4889522551514}, {"input": [-35.5, -39.5], "expected": -35.48185007208219}, {"input": [-35.5, -39.0], "expected": -35.47024958172738}, {"input": [-35.5, -38.5], "expected": -35.451412648426256}, {"input": [-35.5, -38.0], "expected": -35.42111026570745}, {"input": [-35.5, -37.5], "expected": -35.37307198895703}, {"input": [-35.5, -37.0], "expected": -35.29858672201725}, {"input": [-35.5, -36.5], "expected": -35.18673831248178}, {"input": [-35.5, -36.0], "expected": -35.02592301581989}, {"input": [-35.5, -35.5], "expected": -34.80685281944005}, {"input": [-35.5, -35.0], "expected": -34.52592301581989}, {"input": [-35.5, -34.5], "expected": -34.18673831248178}, {"input": [-35.5, -34.0], "expected": -33.79858672201725}, {"input": [-35.5, -33.5], "expected": -33.37307198895703}, {"input": [-35.5, -33.0], "expected": -32.92111026570745}, {"input": [-35.5, -32.5], "expected": -32.451412648426256}, {"input": [-35.5, -32.0], "expected": -31.97024958172738}, {"input": [-35.5, -31.5], "expected": -31.48185007208219}, {"input": [-35.5, -31.0], "expected": -30.988952255151407}, {"input": [-35.5, -30.5], "expected": -30.493284651510884}, {"input": [-35.5, -30.0], "expected": -29.995921556729428}, {"input": [-35.5, -29.5], "expected": -29.497524314862268}, {"input": [-35.5, -29.0], "expected": -28.998497689840246}, {"input": [-35.5, -28.5], "expected": -28.499088533546225}, {"input": [-35.5, -28.0], "expected": -27.99944706852464}, {"input": [-35.5, -27.5], "expected": -27.499664593627106}, {"input": [-35.5, -27.0], "expected": -26.999796552327872}, {"input": [-35.5, -26.5], "expected": -26.499876597810278}, {"input": [-35.5, -26.0], "expected": -25.99992515097137}, {"input": [-35.5, -25.5], "expected": -25.499954601100782}, {"input": [-35.5, -25.0], "expected": -24.999972463929772}, {"input": [-35.5, -24.5], "expected": -24.499983298438682}, {"input": [-35.5, -24.0], "expected": -23.99998986995771}, {"input": [-35.5, -23.5], "expected": -23.499993855806522}, {"input": [-35.5, -23.0], "expected": -22.999996273353773}, {"input": [-35.5, -22.5], "expected": -22.499997739673148}, {"input": [-35.5, -22.0], "expected": -21.999998629041855}, {"input": [-35.5, -21.5], "expected": -21.499999168471625}, {"input": [-35.5, -21.0], "expected": -20.999999495652464}, {"input": [-35.5, -20.5], "expected": -20.499999694097728}, {"input": [-35.5, -20.0], "expected": -19.99999981446088}, {"input": [-35.5, -19.5], "expected": -19.49999988746483}, {"input": [-35.5, -19.0], "expected": -18.999999931743968}, {"input": [-35.5, -18.5], "expected": -18.499999958600625}, {"input": [-35.5, -18.0], "expected": -17.99999997489001}, {"input": [-35.5, -17.5], "expected": -17.49999998477002}, {"input": [-35.5, -17.0], "expected": -16.99999999076255}, {"input": [-35.5, -16.5], "expected": -16.499999994397204}, {"input": [-35.5, -16.0], "expected": -15.999999996601732}, {"input": [-35.5, -15.5], "expected": -15.499999997938847}, {"input": [-35.5, -15.0], "expected": -14.999999998749848}, {"input": [-35.5, -14.5], "expected": -14.499999999241744}, {"input": [-35.5, -14.0], "expected": -13.999999999540094}, {"input": [-35.5, -13.5], "expected": -13.499999999721053}, {"input": [-35.5, -13.0], "expected": -12.999999999830811}, {"input": [-35.5, -12.5], "expected": -12.499999999897382}, {"input": [-35.5, -12.0], "expected": -11.999999999937758}, {"input": [-35.5, -11.5], "expected": -11.499999999962249}, {"input": [-35.5, -11.0], "expected": -10.999999999977103}, {"input": [-35.5, -10.5], "expected": -10.499999999986112}, {"input": [-35.5, -10.0], "expected": -9.999999999991577}, {"input": [-35.5, -9.5], "expected": -9.499999999994891}, {"input": [-35.5, -9.0], "expected": -8.999999999996902}, {"input": [-35.5, -8.5], "expected": -8.49999999999812}, {"input": [-35.5, -8.0], "expected": -7.99999999999886}, {"input": [-35.5, -7.5], "expected": -7.499999999999309}, {"input": [-35.5, -7.0], "expected": -6.999999999999581}, {"input": [-35.5, -6.5], "expected": -6.499999999999746}, {"input": [-35.5, -6.0], "expected": -5.9999999999998455}, {"input": [-35.5, -5.5], "expected": -5.499999999999907}, {"input": [-35.5, -5.0], "expected": -4.999999999999943}, {"input": [-35.5, -4.5], "expected": -4.499999999999965}, {"input": [-35.5, -4.0], "expected": -3.999999999999979}, {"input": [-35.5, -3.5], "expected": -3.499999999999987}, {"input": [-35.5, -3.0], "expected": -2.9999999999999925}, {"input": [-35.5, -2.5], "expected": -2.4999999999999956}, {"input": [-35.5, -2.0], "expected": -1.9999999999999971}, {"input": [-35.5, -1.5], "expected": -1.4999999999999982}, {"input": [-35.5, -1.0], "expected": -0.999999999999999}, {"input": [-35.5, -0.5], "expected": -0.4999999999999994}, {"input": [-35.5, 0.0], "expected": 3.824246628097135e-16}, {"input": [-35.5, 0.5], "expected": 0.5000000000000002}, {"input": [-35.5, 1.0], "expected": 1.0000000000000002}, {"input": [-35.5, 1.5], "expected": 1.5}, {"input": [-35.5, 2.0], "expected": 2.0}, {"input": [-35.5, 2.5], "expected": 2.5}, {"input": [-35.5, 3.0], "expected": 3.0}, {"input": [-35.5, 3.5], "expected": 3.5}, {"input": [-35.5, 4.0], "expected": 4.0}, {"input": [-35.5, 4.5], "expected": 4.5}, {"input": [-35.5, 5.0], "expected": 5.0}, {"input": [-35.5, 5.5], "expected": 5.5}, {"input": [-35.5, 6.0], "expected": 6.0}, {"input": [-35.5, 6.5], "expected": 6.5}, {"input": [-35.5, 7.0], "expected": 7.0}, {"input": [-35.5, 7.5], "expected": 7.5}, {"input": [-35.5, 8.0], "expected": 8.0}, {"input": [-35.5, 8.5], "expected": 8.5}, {"input": [-35.5, 9.0], "expected": 9.0}, {"input": [-35.5, 9.5], "expected": 9.5}, {"input": [-35.5, 10.0], "expected": 10.0}, {"input": [-35.5, 10.5], "expected": 10.5}, {"input": [-35.5, 11.0], "expected": 11.0}, {"input": [-35.5, 11.5], "expected": 11.5}, {"input": [-35.5, 12.0], "expected": 12.0}, {"input": [-35.5, 12.5], "expected": 12.5}, {"input": [-35.5, 13.0], "expected": 13.0}, {"input": [-35.5, 13.5], "expected": 13.5}, {"input": [-35.5, 14.0], "expected": 14.0}, {"input": [-35.5, 14.5], "expected": 14.5}, {"input": [-35.5, 15.0], "expected": 15.0}, {"input": [-35.5, 15.5], "expected": 15.5}, {"input": [-35.5, 16.0], "expected": 16.0}, {"input": [-35.5, 16.5], "expected": 16.5}, {"input": [-35.5, 17.0], "expected": 17.0}, {"input": [-35.5, 17.5], "expected": 17.5}, {"input": [-35.5, 18.0], "expected": 18.0}, {"input": [-35.5, 18.5], "expected": 18.5}, {"input": [-35.5, 19.0], "expected": 19.0}, {"input": [-35.5, 19.5], "expected": 19.5}, {"input": [-35.5, 20.0], "expected": 20.0}, {"input": [-35.5, 20.5], "expected": 20.5}, {"input": [-35.5, 21.0], "expected": 21.0}, {"input": [-35.5, 21.5], "expected": 21.5}, {"input": [-35.5, 22.0], "expected": 22.0}, {"input": [-35.5, 22.5], "expected": 22.5}, {"input": [-35.5, 23.0], "expected": 23.0}, {"input": [-35.5, 23.5], "expected": 23.5}, {"input": [-35.5, 24.0], "expected": 24.0}, {"input": [-35.5, 24.5], "expected": 24.5}, {"input": [-35.5, 25.0], "expected": 25.0}, {"input": [-35.5, 25.5], "expected": 25.5}, {"input": [-35.5, 26.0], "expected": 26.0}, {"input": [-35.5, 26.5], "expected": 26.5}, {"input": [-35.5, 27.0], "expected": 27.0}, {"input": [-35.5, 27.5], "expected": 27.5}, {"input": [-35.5, 28.0], "expected": 28.0}, {"input": [-35.5, 28.5], "expected": 28.5}, {"input": [-35.5, 29.0], "expected": 29.0}, {"input": [-35.5, 29.5], "expected": 29.5}, {"input": [-35.5, 30.0], "expected": 30.0}, {"input": [-35.5, 30.5], "expected": 30.5}, {"input": [-35.5, 31.0], "expected": 31.0}, {"input": [-35.5, 31.5], "expected": 31.5}, {"input": [-35.5, 32.0], "expected": 32.0}, {"input": [-35.5, 32.5], "expected": 32.5}, {"input": [-35.5, 33.0], "expected": 33.0}, {"input": [-35.5, 33.5], "expected": 33.5}, {"input": [-35.5, 34.0], "expected": 34.0}, {"input": [-35.5, 34.5], "expected": 34.5}, {"input": [-35.5, 35.0], "expected": 35.0}, {"input": [-35.5, 35.5], "expected": 35.5}, {"input": [-35.5, 36.0], "expected": 36.0}, {"input": [-35.5, 36.5], "expected": 36.5}, {"input": [-35.5, 37.0], "expected": 37.0}, {"input": [-35.5, 37.5], "expected": 37.5}, {"input": [-35.5, 38.0], "expected": 38.0}, {"input": [-35.5, 38.5], "expected": 38.5}, {"input": [-35.5, 39.0], "expected": 39.0}, {"input": [-35.5, 39.5], "expected": 39.5}, {"input": [-35.5, 40.0], "expected": 40.0}, {"input": [-35.5, 40.5], "expected": 40.5}, {"input": [-35.5, 41.0], "expected": 41.0}, {"input": [-35.5, 41.5], "expected": 41.5}, {"input": [-35.5, 42.0], "expected": 42.0}, {"input": [-35.5, 42.5], "expected": 42.5}, {"input": [-35.5, 43.0], "expected": 43.0}, {"input": [-35.5, 43.5], "expected": 43.5}, {"input": [-35.5, 44.0], "expected": 44.0}, {"input": [-35.5, 44.5], "expected": 44.5}, {"input": [-35.5, 45.0], "expected": 45.0}, {"input": [-35.5, 45.5], "expected": 45.5}, {"input": [-35.5, 46.0], "expected": 46.0}, {"input": [-35.5, 46.5], "expected": 46.5}, {"input": [-35.5, 47.0], "expected": 47.0}, {"input": [-35.5, 47.5], "expected": 47.5}, {"input": [-35.5, 48.0], "expected": 48.0}, {"input": [-35.5, 48.5], "expected": 48.5}, {"input": [-35.5, 49.0], "expected": 49.0}, {"input": [-35.5, 49.5], "expected": 49.5}, {"input": [-35.5, 50.0], "expected": 50.0}, {"input": [-35.5, 50.5], "expected": 50.5}, {"input": [-35.5, 51.0], "expected": 51.0}, {"input": [-35.5, 51.5], "expected": 51.5}, {"input": [-35.5, 52.0], "expected": 52.0}, {"input": [-35.5, 52.5], "expected": 52.5}, {"input": [-35.5, 53.0], "expected": 53.0}, {"input": [-35.5, 53.5], "expected": 53.5}, {"input": [-35.5, 54.0], "expected": 54.0}, {"input": [-35.5, 54.5], "expected": 54.5}, {"input": [-35.5, 55.0], "expected": 55.0}, {"input": [-35.5, 55.5], "expected": 55.5}, {"input": [-35.5, 56.0], "expected": 56.0}, {"input": [-35.5, 56.5], "expected": 56.5}, {"input": [-35.5, 57.0], "expected": 57.0}, {"input": [-35.5, 57.5], "expected": 57.5}, {"input": [-35.5, 58.0], "expected": 58.0}, {"input": [-35.5, 58.5], "expected": 58.5}, {"input": [-35.5, 59.0], "expected": 59.0}, {"input": [-35.5, 59.5], "expected": 59.5}, {"input": [-35.5, 60.0], "expected": 60.0}, {"input": [-35.5, 60.5], "expected": 60.5}, {"input": [-35.5, 61.0], "expected": 61.0}, {"input": [-35.5, 61.5], "expected": 61.5}, {"input": [-35.5, 62.0], "expected": 62.0}, {"input": [-35.5, 62.5], "expected": 62.5}, {"input": [-35.5, 63.0], "expected": 63.0}, {"input": [-35.5, 63.5], "expected": 63.5}, {"input": [-35.5, 64.0], "expected": 64.0}, {"input": [-35.5, 64.5], "expected": 64.5}, {"input": [-35.5, 65.0], "expected": 65.0}, {"input": [-35.5, 65.5], "expected": 65.5}, {"input": [-35.5, 66.0], "expected": 66.0}, {"input": [-35.5, 66.5], "expected": 66.5}, {"input": [-35.5, 67.0], "expected": 67.0}, {"input": [-35.5, 67.5], "expected": 67.5}, {"input": [-35.5, 68.0], "expected": 68.0}, {"input": [-35.5, 68.5], "expected": 68.5}, {"input": [-35.5, 69.0], "expected": 69.0}, {"input": [-35.5, 69.5], "expected": 69.5}, {"input": [-35.5, 70.0], "expected": 70.0}, {"input": [-35.5, 70.5], "expected": 70.5}, {"input": [-35.5, 71.0], "expected": 71.0}, {"input": [-35.5, 71.5], "expected": 71.5}, {"input": [-35.5, 72.0], "expected": 72.0}, {"input": [-35.5, 72.5], "expected": 72.5}, {"input": [-35.5, 73.0], "expected": 73.0}, {"input": [-35.5, 73.5], "expected": 73.5}, {"input": [-35.5, 74.0], "expected": 74.0}, {"input": [-35.5, 74.5], "expected": 74.5}, {"input": [-35.5, 75.0], "expected": 75.0}, {"input": [-35.5, 75.5], "expected": 75.5}, {"input": [-35.5, 76.0], "expected": 76.0}, {"input": [-35.5, 76.5], "expected": 76.5}, {"input": [-35.5, 77.0], "expected": 77.0}, {"input": [-35.5, 77.5], "expected": 77.5}, {"input": [-35.5, 78.0], "expected": 78.0}, {"input": [-35.5, 78.5], "expected": 78.5}, {"input": [-35.5, 79.0], "expected": 79.0}, {"input": [-35.5, 79.5], "expected": 79.5}, {"input": [-35.5, 80.0], "expected": 80.0}, {"input": [-35.5, 80.5], "expected": 80.5}, {"input": [-35.5, 81.0], "expected": 81.0}, {"input": [-35.5, 81.5], "expected": 81.5}, {"input": [-35.5, 82.0], "expected": 82.0}, {"input": [-35.5, 82.5], "expected": 82.5}, {"input": [-35.5, 83.0], "expected": 83.0}, {"input": [-35.5, 83.5], "expected": 83.5}, {"input": [-35.5, 84.0], "expected": 84.0}, {"input": [-35.5, 84.5], "expected": 84.5}, {"input": [-35.5, 85.0], "expected": 85.0}, {"input": [-35.5, 85.5], "expected": 85.5}, {"input": [-35.5, 86.0], "expected": 86.0}, {"input": [-35.5, 86.5], "expected": 86.5}, {"input": [-35.5, 87.0], "expected": 87.0}, {"input": [-35.5, 87.5], "expected": 87.5}, {"input": [-35.5, 88.0], "expected": 88.0}, {"input": [-35.5, 88.5], "expected": 88.5}, {"input": [-35.5, 89.0], "expected": 89.0}, {"input": [-35.5, 89.5], "expected": 89.5}, {"input": [-35.5, 90.0], "expected": 90.0}, {"input": [-35.5, 90.5], "expected": 90.5}, {"input": [-35.5, 91.0], "expected": 91.0}, {"input": [-35.5, 91.5], "expected": 91.5}, {"input": [-35.5, 92.0], "expected": 92.0}, {"input": [-35.5, 92.5], "expected": 92.5}, {"input": [-35.5, 93.0], "expected": 93.0}, {"input": [-35.5, 93.5], "expected": 93.5}, {"input": [-35.5, 94.0], "expected": 94.0}, {"input": [-35.5, 94.5], "expected": 94.5}, {"input": [-35.5, 95.0], "expected": 95.0}, {"input": [-35.5, 95.5], "expected": 95.5}, {"input": [-35.5, 96.0], "expected": 96.0}, {"input": [-35.5, 96.5], "expected": 96.5}, {"input": [-35.5, 97.0], "expected": 97.0}, {"input": [-35.5, 97.5], "expected": 97.5}, {"input": [-35.5, 98.0], "expected": 98.0}, {"input": [-35.5, 98.5], "expected": 98.5}, {"input": [-35.5, 99.0], "expected": 99.0}, {"input": [-35.5, 99.5], "expected": 99.5}, {"input": [-35.0, -100.0], "expected": -35.0}, {"input": [-35.0, -99.5], "expected": -35.0}, {"input": [-35.0, -99.0], "expected": -35.0}, {"input": [-35.0, -98.5], "expected": -35.0}, {"input": [-35.0, -98.0], "expected": -35.0}, {"input": [-35.0, -97.5], "expected": -35.0}, {"input": [-35.0, -97.0], "expected": -35.0}, {"input": [-35.0, -96.5], "expected": -35.0}, {"input": [-35.0, -96.0], "expected": -35.0}, {"input": [-35.0, -95.5], "expected": -35.0}, {"input": [-35.0, -95.0], "expected": -35.0}, {"input": [-35.0, -94.5], "expected": -35.0}, {"input": [-35.0, -94.0], "expected": -35.0}, {"input": [-35.0, -93.5], "expected": -35.0}, {"input": [-35.0, -93.0], "expected": -35.0}, {"input": [-35.0, -92.5], "expected": -35.0}, {"input": [-35.0, -92.0], "expected": -35.0}, {"input": [-35.0, -91.5], "expected": -35.0}, {"input": [-35.0, -91.0], "expected": -35.0}, {"input": [-35.0, -90.5], "expected": -35.0}, {"input": [-35.0, -90.0], "expected": -35.0}, {"input": [-35.0, -89.5], "expected": -35.0}, {"input": [-35.0, -89.0], "expected": -35.0}, {"input": [-35.0, -88.5], "expected": -35.0}, {"input": [-35.0, -88.0], "expected": -35.0}, {"input": [-35.0, -87.5], "expected": -35.0}, {"input": [-35.0, -87.0], "expected": -35.0}, {"input": [-35.0, -86.5], "expected": -35.0}, {"input": [-35.0, -86.0], "expected": -35.0}, {"input": [-35.0, -85.5], "expected": -35.0}, {"input": [-35.0, -85.0], "expected": -35.0}, {"input": [-35.0, -84.5], "expected": -35.0}, {"input": [-35.0, -84.0], "expected": -35.0}, {"input": [-35.0, -83.5], "expected": -35.0}, {"input": [-35.0, -83.0], "expected": -35.0}, {"input": [-35.0, -82.5], "expected": -35.0}, {"input": [-35.0, -82.0], "expected": -35.0}, {"input": [-35.0, -81.5], "expected": -35.0}, {"input": [-35.0, -81.0], "expected": -35.0}, {"input": [-35.0, -80.5], "expected": -35.0}, {"input": [-35.0, -80.0], "expected": -35.0}, {"input": [-35.0, -79.5], "expected": -35.0}, {"input": [-35.0, -79.0], "expected": -35.0}, {"input": [-35.0, -78.5], "expected": -35.0}, {"input": [-35.0, -78.0], "expected": -35.0}, {"input": [-35.0, -77.5], "expected": -35.0}, {"input": [-35.0, -77.0], "expected": -35.0}, {"input": [-35.0, -76.5], "expected": -35.0}, {"input": [-35.0, -76.0], "expected": -35.0}, {"input": [-35.0, -75.5], "expected": -35.0}, {"input": [-35.0, -75.0], "expected": -35.0}, {"input": [-35.0, -74.5], "expected": -35.0}, {"input": [-35.0, -74.0], "expected": -35.0}, {"input": [-35.0, -73.5], "expected": -35.0}, {"input": [-35.0, -73.0], "expected": -35.0}, {"input": [-35.0, -72.5], "expected": -35.0}, {"input": [-35.0, -72.0], "expected": -35.0}, {"input": [-35.0, -71.5], "expected": -35.0}, {"input": [-35.0, -71.0], "expected": -35.0}, {"input": [-35.0, -70.5], "expected": -35.0}, {"input": [-35.0, -70.0], "expected": -35.0}, {"input": [-35.0, -69.5], "expected": -35.0}, {"input": [-35.0, -69.0], "expected": -35.0}, {"input": [-35.0, -68.5], "expected": -35.0}, {"input": [-35.0, -68.0], "expected": -34.99999999999999}, {"input": [-35.0, -67.5], "expected": -34.99999999999999}, {"input": [-35.0, -67.0], "expected": -34.999999999999986}, {"input": [-35.0, -66.5], "expected": -34.99999999999998}, {"input": [-35.0, -66.0], "expected": -34.999999999999964}, {"input": [-35.0, -65.5], "expected": -34.99999999999994}, {"input": [-35.0, -65.0], "expected": -34.99999999999991}, {"input": [-35.0, -64.5], "expected": -34.999999999999844}, {"input": [-35.0, -64.0], "expected": -34.999999999999744}, {"input": [-35.0, -63.5], "expected": -34.99999999999958}, {"input": [-35.0, -63.0], "expected": -34.99999999999931}, {"input": [-35.0, -62.5], "expected": -34.99999999999886}, {"input": [-35.0, -62.0], "expected": -34.99999999999812}, {"input": [-35.0, -61.5], "expected": -34.9999999999969}, {"input": [-35.0, -61.0], "expected": -34.99999999999489}, {"input": [-35.0, -60.5], "expected": -34.99999999999158}, {"input": [-35.0, -60.0], "expected": -34.99999999998611}, {"input": [-35.0, -59.5], "expected": -34.9999999999771}, {"input": [-35.0, -59.0], "expected": -34.99999999996225}, {"input": [-35.0, -58.5], "expected": -34.99999999993776}, {"input": [-35.0, -58.0], "expected": -34.99999999989738}, {"input": [-35.0, -57.5], "expected": -34.99999999983081}, {"input": [-35.0, -57.0], "expected": -34.999999999721055}, {"input": [-35.0, -56.5], "expected": -34.999999999540094}, {"input": [-35.0, -56.0], "expected": -34.999999999241744}, {"input": [-35.0, -55.5], "expected": -34.99999999874985}, {"input": [-35.0, -55.0], "expected": -34.99999999793884}, {"input": [-35.0, -54.5], "expected": -34.99999999660173}, {"input": [-35.0, -54.0], "expected": -34.99999999439721}, {"input": [-35.0, -53.5], "expected": -34.999999990762554}, {"input": [-35.0, -53.0], "expected": -34.99999998477002}, {"input": [-35.0, -52.5], "expected": -34.99999997489001}, {"input": [-35.0, -52.0], "expected": -34.999999958600625}, {"input": [-35.0, -51.5], "expected": -34.99999993174397}, {"input": [-35.0, -51.0], "expected": -34.99999988746483}, {"input": [-35.0, -50.5], "expected": -34.99999981446088}, {"input": [-35.0, -50.0], "expected": -34.999999694097724}, {"input": [-35.0, -49.5], "expected": -34.99999949565247}, {"input": [-35.0, -49.0], "expected": -34.999999168471625}, {"input": [-35.0, -48.5], "expected": -34.999998629041855}, {"input": [-35.0, -48.0], "expected": -34.99999773967315}, {"input": [-35.0, -47.5], "expected": -34.99999627335377}, {"input": [-35.0, -47.0], "expected": -34.99999385580652}, {"input": [-35.0, -46.5], "expected": -34.99998986995771}, {"input": [-35.0, -46.0], "expected": -34.99998329843868}, {"input": [-35.0, -45.5], "expected": -34.99997246392977}, {"input": [-35.0, -45.0], "expected": -34.99995460110078}, {"input": [-35.0, -44.5], "expected": -34.99992515097137}, {"input": [-35.0, -44.0], "expected": -34.99987659781028}, {"input": [-35.0, -43.5], "expected": -34.99979655232787}, {"input": [-35.0, -43.0], "expected": -34.9996645936271}, {"input": [-35.0, -42.5], "expected": -34.99944706852464}, {"input": [-35.0, -42.0], "expected": -34.99908853354623}, {"input": [-35.0, -41.5], "expected": -34.99849768984024}, {"input": [-35.0, -41.0], "expected": -34.99752431486227}, {"input": [-35.0, -40.5], "expected": -34.99592155672943}, {"input": [-35.0, -40.0], "expected": -34.99328465151088}, {"input": [-35.0, -39.5], "expected": -34.9889522551514}, {"input": [-35.0, -39.0], "expected": -34.98185007208219}, {"input": [-35.0, -38.5], "expected": -34.97024958172738}, {"input": [-35.0, -38.0], "expected": -34.951412648426256}, {"input": [-35.0, -37.5], "expected": -34.92111026570745}, {"input": [-35.0, -37.0], "expected": -34.87307198895703}, {"input": [-35.0, -36.5], "expected": -34.79858672201725}, {"input": [-35.0, -36.0], "expected": -34.68673831248178}, {"input": [-35.0, -35.5], "expected": -34.52592301581989}, {"input": [-35.0, -35.0], "expected": -34.30685281944005}, {"input": [-35.0, -34.5], "expected": -34.02592301581989}, {"input": [-35.0, -34.0], "expected": -33.68673831248178}, {"input": [-35.0, -33.5], "expected": -33.29858672201725}, {"input": [-35.0, -33.0], "expected": -32.87307198895703}, {"input": [-35.0, -32.5], "expected": -32.42111026570745}, {"input": [-35.0, -32.0], "expected": -31.951412648426256}, {"input": [-35.0, -31.5], "expected": -31.47024958172738}, {"input": [-35.0, -31.0], "expected": -30.98185007208219}, {"input": [-35.0, -30.5], "expected": -30.488952255151407}, {"input": [-35.0, -30.0], "expected": -29.993284651510884}, {"input": [-35.0, -29.5], "expected": -29.495921556729428}, {"input": [-35.0, -29.0], "expected": -28.997524314862268}, {"input": [-35.0, -28.5], "expected": -28.498497689840246}, {"input": [-35.0, -28.0], "expected": -27.999088533546225}, {"input": [-35.0, -27.5], "expected": -27.49944706852464}, {"input": [-35.0, -27.0], "expected": -26.999664593627106}, {"input": [-35.0, -26.5], "expected": -26.499796552327872}, {"input": [-35.0, -26.0], "expected": -25.999876597810278}, {"input": [-35.0, -25.5], "expected": -25.49992515097137}, {"input": [-35.0, -25.0], "expected": -24.999954601100782}, {"input": [-35.0, -24.5], "expected": -24.499972463929772}, {"input": [-35.0, -24.0], "expected": -23.999983298438682}, {"input": [-35.0, -23.5], "expected": -23.49998986995771}, {"input": [-35.0, -23.0], "expected": -22.999993855806522}, {"input": [-35.0, -22.5], "expected": -22.499996273353773}, {"input": [-35.0, -22.0], "expected": -21.999997739673148}, {"input": [-35.0, -21.5], "expected": -21.499998629041855}, {"input": [-35.0, -21.0], "expected": -20.999999168471625}, {"input": [-35.0, -20.5], "expected": -20.499999495652464}, {"input": [-35.0, -20.0], "expected": -19.999999694097728}, {"input": [-35.0, -19.5], "expected": -19.49999981446088}, {"input": [-35.0, -19.0], "expected": -18.99999988746483}, {"input": [-35.0, -18.5], "expected": -18.499999931743968}, {"input": [-35.0, -18.0], "expected": -17.999999958600625}, {"input": [-35.0, -17.5], "expected": -17.49999997489001}, {"input": [-35.0, -17.0], "expected": -16.99999998477002}, {"input": [-35.0, -16.5], "expected": -16.49999999076255}, {"input": [-35.0, -16.0], "expected": -15.999999994397204}, {"input": [-35.0, -15.5], "expected": -15.499999996601732}, {"input": [-35.0, -15.0], "expected": -14.999999997938847}, {"input": [-35.0, -14.5], "expected": -14.499999998749848}, {"input": [-35.0, -14.0], "expected": -13.999999999241744}, {"input": [-35.0, -13.5], "expected": -13.499999999540094}, {"input": [-35.0, -13.0], "expected": -12.999999999721053}, {"input": [-35.0, -12.5], "expected": -12.499999999830811}, {"input": [-35.0, -12.0], "expected": -11.999999999897382}, {"input": [-35.0, -11.5], "expected": -11.499999999937758}, {"input": [-35.0, -11.0], "expected": -10.999999999962249}, {"input": [-35.0, -10.5], "expected": -10.499999999977103}, {"input": [-35.0, -10.0], "expected": -9.999999999986112}, {"input": [-35.0, -9.5], "expected": -9.499999999991577}, {"input": [-35.0, -9.0], "expected": -8.999999999994891}, {"input": [-35.0, -8.5], "expected": -8.499999999996902}, {"input": [-35.0, -8.0], "expected": -7.999999999998121}, {"input": [-35.0, -7.5], "expected": -7.49999999999886}, {"input": [-35.0, -7.0], "expected": -6.999999999999309}, {"input": [-35.0, -6.5], "expected": -6.499999999999581}, {"input": [-35.0, -6.0], "expected": -5.999999999999746}, {"input": [-35.0, -5.5], "expected": -5.4999999999998455}, {"input": [-35.0, -5.0], "expected": -4.999999999999907}, {"input": [-35.0, -4.5], "expected": -4.499999999999943}, {"input": [-35.0, -4.0], "expected": -3.9999999999999654}, {"input": [-35.0, -3.5], "expected": -3.499999999999979}, {"input": [-35.0, -3.0], "expected": -2.999999999999987}, {"input": [-35.0, -2.5], "expected": -2.4999999999999925}, {"input": [-35.0, -2.0], "expected": -1.9999999999999953}, {"input": [-35.0, -1.5], "expected": -1.4999999999999971}, {"input": [-35.0, -1.0], "expected": -0.9999999999999983}, {"input": [-35.0, -0.5], "expected": -0.49999999999999895}, {"input": [-35.0, 0.0], "expected": 6.305116760146987e-16}, {"input": [-35.0, 0.5], "expected": 0.5000000000000003}, {"input": [-35.0, 1.0], "expected": 1.0000000000000002}, {"input": [-35.0, 1.5], "expected": 1.5000000000000002}, {"input": [-35.0, 2.0], "expected": 2.0}, {"input": [-35.0, 2.5], "expected": 2.5}, {"input": [-35.0, 3.0], "expected": 3.0}, {"input": [-35.0, 3.5], "expected": 3.5}, {"input": [-35.0, 4.0], "expected": 4.0}, {"input": [-35.0, 4.5], "expected": 4.5}, {"input": [-35.0, 5.0], "expected": 5.0}, {"input": [-35.0, 5.5], "expected": 5.5}, {"input": [-35.0, 6.0], "expected": 6.0}, {"input": [-35.0, 6.5], "expected": 6.5}, {"input": [-35.0, 7.0], "expected": 7.0}, {"input": [-35.0, 7.5], "expected": 7.5}, {"input": [-35.0, 8.0], "expected": 8.0}, {"input": [-35.0, 8.5], "expected": 8.5}, {"input": [-35.0, 9.0], "expected": 9.0}, {"input": [-35.0, 9.5], "expected": 9.5}, {"input": [-35.0, 10.0], "expected": 10.0}, {"input": [-35.0, 10.5], "expected": 10.5}, {"input": [-35.0, 11.0], "expected": 11.0}, {"input": [-35.0, 11.5], "expected": 11.5}, {"input": [-35.0, 12.0], "expected": 12.0}, {"input": [-35.0, 12.5], "expected": 12.5}, {"input": [-35.0, 13.0], "expected": 13.0}, {"input": [-35.0, 13.5], "expected": 13.5}, {"input": [-35.0, 14.0], "expected": 14.0}, {"input": [-35.0, 14.5], "expected": 14.5}, {"input": [-35.0, 15.0], "expected": 15.0}, {"input": [-35.0, 15.5], "expected": 15.5}, {"input": [-35.0, 16.0], "expected": 16.0}, {"input": [-35.0, 16.5], "expected": 16.5}, {"input": [-35.0, 17.0], "expected": 17.0}, {"input": [-35.0, 17.5], "expected": 17.5}, {"input": [-35.0, 18.0], "expected": 18.0}, {"input": [-35.0, 18.5], "expected": 18.5}, {"input": [-35.0, 19.0], "expected": 19.0}, {"input": [-35.0, 19.5], "expected": 19.5}, {"input": [-35.0, 20.0], "expected": 20.0}, {"input": [-35.0, 20.5], "expected": 20.5}, {"input": [-35.0, 21.0], "expected": 21.0}, {"input": [-35.0, 21.5], "expected": 21.5}, {"input": [-35.0, 22.0], "expected": 22.0}, {"input": [-35.0, 22.5], "expected": 22.5}, {"input": [-35.0, 23.0], "expected": 23.0}, {"input": [-35.0, 23.5], "expected": 23.5}, {"input": [-35.0, 24.0], "expected": 24.0}, {"input": [-35.0, 24.5], "expected": 24.5}, {"input": [-35.0, 25.0], "expected": 25.0}, {"input": [-35.0, 25.5], "expected": 25.5}, {"input": [-35.0, 26.0], "expected": 26.0}, {"input": [-35.0, 26.5], "expected": 26.5}, {"input": [-35.0, 27.0], "expected": 27.0}, {"input": [-35.0, 27.5], "expected": 27.5}, {"input": [-35.0, 28.0], "expected": 28.0}, {"input": [-35.0, 28.5], "expected": 28.5}, {"input": [-35.0, 29.0], "expected": 29.0}, {"input": [-35.0, 29.5], "expected": 29.5}, {"input": [-35.0, 30.0], "expected": 30.0}, {"input": [-35.0, 30.5], "expected": 30.5}, {"input": [-35.0, 31.0], "expected": 31.0}, {"input": [-35.0, 31.5], "expected": 31.5}, {"input": [-35.0, 32.0], "expected": 32.0}, {"input": [-35.0, 32.5], "expected": 32.5}, {"input": [-35.0, 33.0], "expected": 33.0}, {"input": [-35.0, 33.5], "expected": 33.5}, {"input": [-35.0, 34.0], "expected": 34.0}, {"input": [-35.0, 34.5], "expected": 34.5}, {"input": [-35.0, 35.0], "expected": 35.0}, {"input": [-35.0, 35.5], "expected": 35.5}, {"input": [-35.0, 36.0], "expected": 36.0}, {"input": [-35.0, 36.5], "expected": 36.5}, {"input": [-35.0, 37.0], "expected": 37.0}, {"input": [-35.0, 37.5], "expected": 37.5}, {"input": [-35.0, 38.0], "expected": 38.0}, {"input": [-35.0, 38.5], "expected": 38.5}, {"input": [-35.0, 39.0], "expected": 39.0}, {"input": [-35.0, 39.5], "expected": 39.5}, {"input": [-35.0, 40.0], "expected": 40.0}, {"input": [-35.0, 40.5], "expected": 40.5}, {"input": [-35.0, 41.0], "expected": 41.0}, {"input": [-35.0, 41.5], "expected": 41.5}, {"input": [-35.0, 42.0], "expected": 42.0}, {"input": [-35.0, 42.5], "expected": 42.5}, {"input": [-35.0, 43.0], "expected": 43.0}, {"input": [-35.0, 43.5], "expected": 43.5}, {"input": [-35.0, 44.0], "expected": 44.0}, {"input": [-35.0, 44.5], "expected": 44.5}, {"input": [-35.0, 45.0], "expected": 45.0}, {"input": [-35.0, 45.5], "expected": 45.5}, {"input": [-35.0, 46.0], "expected": 46.0}, {"input": [-35.0, 46.5], "expected": 46.5}, {"input": [-35.0, 47.0], "expected": 47.0}, {"input": [-35.0, 47.5], "expected": 47.5}, {"input": [-35.0, 48.0], "expected": 48.0}, {"input": [-35.0, 48.5], "expected": 48.5}, {"input": [-35.0, 49.0], "expected": 49.0}, {"input": [-35.0, 49.5], "expected": 49.5}, {"input": [-35.0, 50.0], "expected": 50.0}, {"input": [-35.0, 50.5], "expected": 50.5}, {"input": [-35.0, 51.0], "expected": 51.0}, {"input": [-35.0, 51.5], "expected": 51.5}, {"input": [-35.0, 52.0], "expected": 52.0}, {"input": [-35.0, 52.5], "expected": 52.5}, {"input": [-35.0, 53.0], "expected": 53.0}, {"input": [-35.0, 53.5], "expected": 53.5}, {"input": [-35.0, 54.0], "expected": 54.0}, {"input": [-35.0, 54.5], "expected": 54.5}, {"input": [-35.0, 55.0], "expected": 55.0}, {"input": [-35.0, 55.5], "expected": 55.5}, {"input": [-35.0, 56.0], "expected": 56.0}, {"input": [-35.0, 56.5], "expected": 56.5}, {"input": [-35.0, 57.0], "expected": 57.0}, {"input": [-35.0, 57.5], "expected": 57.5}, {"input": [-35.0, 58.0], "expected": 58.0}, {"input": [-35.0, 58.5], "expected": 58.5}, {"input": [-35.0, 59.0], "expected": 59.0}, {"input": [-35.0, 59.5], "expected": 59.5}, {"input": [-35.0, 60.0], "expected": 60.0}, {"input": [-35.0, 60.5], "expected": 60.5}, {"input": [-35.0, 61.0], "expected": 61.0}, {"input": [-35.0, 61.5], "expected": 61.5}, {"input": [-35.0, 62.0], "expected": 62.0}, {"input": [-35.0, 62.5], "expected": 62.5}, {"input": [-35.0, 63.0], "expected": 63.0}, {"input": [-35.0, 63.5], "expected": 63.5}, {"input": [-35.0, 64.0], "expected": 64.0}, {"input": [-35.0, 64.5], "expected": 64.5}, {"input": [-35.0, 65.0], "expected": 65.0}, {"input": [-35.0, 65.5], "expected": 65.5}, {"input": [-35.0, 66.0], "expected": 66.0}, {"input": [-35.0, 66.5], "expected": 66.5}, {"input": [-35.0, 67.0], "expected": 67.0}, {"input": [-35.0, 67.5], "expected": 67.5}, {"input": [-35.0, 68.0], "expected": 68.0}, {"input": [-35.0, 68.5], "expected": 68.5}, {"input": [-35.0, 69.0], "expected": 69.0}, {"input": [-35.0, 69.5], "expected": 69.5}, {"input": [-35.0, 70.0], "expected": 70.0}, {"input": [-35.0, 70.5], "expected": 70.5}, {"input": [-35.0, 71.0], "expected": 71.0}, {"input": [-35.0, 71.5], "expected": 71.5}, {"input": [-35.0, 72.0], "expected": 72.0}, {"input": [-35.0, 72.5], "expected": 72.5}, {"input": [-35.0, 73.0], "expected": 73.0}, {"input": [-35.0, 73.5], "expected": 73.5}, {"input": [-35.0, 74.0], "expected": 74.0}, {"input": [-35.0, 74.5], "expected": 74.5}, {"input": [-35.0, 75.0], "expected": 75.0}, {"input": [-35.0, 75.5], "expected": 75.5}, {"input": [-35.0, 76.0], "expected": 76.0}, {"input": [-35.0, 76.5], "expected": 76.5}, {"input": [-35.0, 77.0], "expected": 77.0}, {"input": [-35.0, 77.5], "expected": 77.5}, {"input": [-35.0, 78.0], "expected": 78.0}, {"input": [-35.0, 78.5], "expected": 78.5}, {"input": [-35.0, 79.0], "expected": 79.0}, {"input": [-35.0, 79.5], "expected": 79.5}, {"input": [-35.0, 80.0], "expected": 80.0}, {"input": [-35.0, 80.5], "expected": 80.5}, {"input": [-35.0, 81.0], "expected": 81.0}, {"input": [-35.0, 81.5], "expected": 81.5}, {"input": [-35.0, 82.0], "expected": 82.0}, {"input": [-35.0, 82.5], "expected": 82.5}, {"input": [-35.0, 83.0], "expected": 83.0}, {"input": [-35.0, 83.5], "expected": 83.5}, {"input": [-35.0, 84.0], "expected": 84.0}, {"input": [-35.0, 84.5], "expected": 84.5}, {"input": [-35.0, 85.0], "expected": 85.0}, {"input": [-35.0, 85.5], "expected": 85.5}, {"input": [-35.0, 86.0], "expected": 86.0}, {"input": [-35.0, 86.5], "expected": 86.5}, {"input": [-35.0, 87.0], "expected": 87.0}, {"input": [-35.0, 87.5], "expected": 87.5}, {"input": [-35.0, 88.0], "expected": 88.0}, {"input": [-35.0, 88.5], "expected": 88.5}, {"input": [-35.0, 89.0], "expected": 89.0}, {"input": [-35.0, 89.5], "expected": 89.5}, {"input": [-35.0, 90.0], "expected": 90.0}, {"input": [-35.0, 90.5], "expected": 90.5}, {"input": [-35.0, 91.0], "expected": 91.0}, {"input": [-35.0, 91.5], "expected": 91.5}, {"input": [-35.0, 92.0], "expected": 92.0}, {"input": [-35.0, 92.5], "expected": 92.5}, {"input": [-35.0, 93.0], "expected": 93.0}, {"input": [-35.0, 93.5], "expected": 93.5}, {"input": [-35.0, 94.0], "expected": 94.0}, {"input": [-35.0, 94.5], "expected": 94.5}, {"input": [-35.0, 95.0], "expected": 95.0}, {"input": [-35.0, 95.5], "expected": 95.5}, {"input": [-35.0, 96.0], "expected": 96.0}, {"input": [-35.0, 96.5], "expected": 96.5}, {"input": [-35.0, 97.0], "expected": 97.0}, {"input": [-35.0, 97.5], "expected": 97.5}, {"input": [-35.0, 98.0], "expected": 98.0}, {"input": [-35.0, 98.5], "expected": 98.5}, {"input": [-35.0, 99.0], "expected": 99.0}, {"input": [-35.0, 99.5], "expected": 99.5}, {"input": [-34.5, -100.0], "expected": -34.5}, {"input": [-34.5, -99.5], "expected": -34.5}, {"input": [-34.5, -99.0], "expected": -34.5}, {"input": [-34.5, -98.5], "expected": -34.5}, {"input": [-34.5, -98.0], "expected": -34.5}, {"input": [-34.5, -97.5], "expected": -34.5}, {"input": [-34.5, -97.0], "expected": -34.5}, {"input": [-34.5, -96.5], "expected": -34.5}, {"input": [-34.5, -96.0], "expected": -34.5}, {"input": [-34.5, -95.5], "expected": -34.5}, {"input": [-34.5, -95.0], "expected": -34.5}, {"input": [-34.5, -94.5], "expected": -34.5}, {"input": [-34.5, -94.0], "expected": -34.5}, {"input": [-34.5, -93.5], "expected": -34.5}, {"input": [-34.5, -93.0], "expected": -34.5}, {"input": [-34.5, -92.5], "expected": -34.5}, {"input": [-34.5, -92.0], "expected": -34.5}, {"input": [-34.5, -91.5], "expected": -34.5}, {"input": [-34.5, -91.0], "expected": -34.5}, {"input": [-34.5, -90.5], "expected": -34.5}, {"input": [-34.5, -90.0], "expected": -34.5}, {"input": [-34.5, -89.5], "expected": -34.5}, {"input": [-34.5, -89.0], "expected": -34.5}, {"input": [-34.5, -88.5], "expected": -34.5}, {"input": [-34.5, -88.0], "expected": -34.5}, {"input": [-34.5, -87.5], "expected": -34.5}, {"input": [-34.5, -87.0], "expected": -34.5}, {"input": [-34.5, -86.5], "expected": -34.5}, {"input": [-34.5, -86.0], "expected": -34.5}, {"input": [-34.5, -85.5], "expected": -34.5}, {"input": [-34.5, -85.0], "expected": -34.5}, {"input": [-34.5, -84.5], "expected": -34.5}, {"input": [-34.5, -84.0], "expected": -34.5}, {"input": [-34.5, -83.5], "expected": -34.5}, {"input": [-34.5, -83.0], "expected": -34.5}, {"input": [-34.5, -82.5], "expected": -34.5}, {"input": [-34.5, -82.0], "expected": -34.5}, {"input": [-34.5, -81.5], "expected": -34.5}, {"input": [-34.5, -81.0], "expected": -34.5}, {"input": [-34.5, -80.5], "expected": -34.5}, {"input": [-34.5, -80.0], "expected": -34.5}, {"input": [-34.5, -79.5], "expected": -34.5}, {"input": [-34.5, -79.0], "expected": -34.5}, {"input": [-34.5, -78.5], "expected": -34.5}, {"input": [-34.5, -78.0], "expected": -34.5}, {"input": [-34.5, -77.5], "expected": -34.5}, {"input": [-34.5, -77.0], "expected": -34.5}, {"input": [-34.5, -76.5], "expected": -34.5}, {"input": [-34.5, -76.0], "expected": -34.5}, {"input": [-34.5, -75.5], "expected": -34.5}, {"input": [-34.5, -75.0], "expected": -34.5}, {"input": [-34.5, -74.5], "expected": -34.5}, {"input": [-34.5, -74.0], "expected": -34.5}, {"input": [-34.5, -73.5], "expected": -34.5}, {"input": [-34.5, -73.0], "expected": -34.5}, {"input": [-34.5, -72.5], "expected": -34.5}, {"input": [-34.5, -72.0], "expected": -34.5}, {"input": [-34.5, -71.5], "expected": -34.5}, {"input": [-34.5, -71.0], "expected": -34.5}, {"input": [-34.5, -70.5], "expected": -34.5}, {"input": [-34.5, -70.0], "expected": -34.5}, {"input": [-34.5, -69.5], "expected": -34.5}, {"input": [-34.5, -69.0], "expected": -34.5}, {"input": [-34.5, -68.5], "expected": -34.5}, {"input": [-34.5, -68.0], "expected": -34.5}, {"input": [-34.5, -67.5], "expected": -34.49999999999999}, {"input": [-34.5, -67.0], "expected": -34.49999999999999}, {"input": [-34.5, -66.5], "expected": -34.499999999999986}, {"input": [-34.5, -66.0], "expected": -34.49999999999998}, {"input": [-34.5, -65.5], "expected": -34.499999999999964}, {"input": [-34.5, -65.0], "expected": -34.49999999999994}, {"input": [-34.5, -64.5], "expected": -34.49999999999991}, {"input": [-34.5, -64.0], "expected": -34.499999999999844}, {"input": [-34.5, -63.5], "expected": -34.499999999999744}, {"input": [-34.5, -63.0], "expected": -34.49999999999958}, {"input": [-34.5, -62.5], "expected": -34.49999999999931}, {"input": [-34.5, -62.0], "expected": -34.49999999999886}, {"input": [-34.5, -61.5], "expected": -34.49999999999812}, {"input": [-34.5, -61.0], "expected": -34.4999999999969}, {"input": [-34.5, -60.5], "expected": -34.49999999999489}, {"input": [-34.5, -60.0], "expected": -34.49999999999158}, {"input": [-34.5, -59.5], "expected": -34.49999999998611}, {"input": [-34.5, -59.0], "expected": -34.4999999999771}, {"input": [-34.5, -58.5], "expected": -34.49999999996225}, {"input": [-34.5, -58.0], "expected": -34.49999999993776}, {"input": [-34.5, -57.5], "expected": -34.49999999989738}, {"input": [-34.5, -57.0], "expected": -34.49999999983081}, {"input": [-34.5, -56.5], "expected": -34.499999999721055}, {"input": [-34.5, -56.0], "expected": -34.499999999540094}, {"input": [-34.5, -55.5], "expected": -34.499999999241744}, {"input": [-34.5, -55.0], "expected": -34.49999999874985}, {"input": [-34.5, -54.5], "expected": -34.49999999793884}, {"input": [-34.5, -54.0], "expected": -34.49999999660173}, {"input": [-34.5, -53.5], "expected": -34.49999999439721}, {"input": [-34.5, -53.0], "expected": -34.499999990762554}, {"input": [-34.5, -52.5], "expected": -34.49999998477002}, {"input": [-34.5, -52.0], "expected": -34.49999997489001}, {"input": [-34.5, -51.5], "expected": -34.499999958600625}, {"input": [-34.5, -51.0], "expected": -34.49999993174397}, {"input": [-34.5, -50.5], "expected": -34.49999988746483}, {"input": [-34.5, -50.0], "expected": -34.49999981446088}, {"input": [-34.5, -49.5], "expected": -34.499999694097724}, {"input": [-34.5, -49.0], "expected": -34.49999949565247}, {"input": [-34.5, -48.5], "expected": -34.499999168471625}, {"input": [-34.5, -48.0], "expected": -34.499998629041855}, {"input": [-34.5, -47.5], "expected": -34.49999773967315}, {"input": [-34.5, -47.0], "expected": -34.49999627335377}, {"input": [-34.5, -46.5], "expected": -34.49999385580652}, {"input": [-34.5, -46.0], "expected": -34.49998986995771}, {"input": [-34.5, -45.5], "expected": -34.49998329843868}, {"input": [-34.5, -45.0], "expected": -34.49997246392977}, {"input": [-34.5, -44.5], "expected": -34.49995460110078}, {"input": [-34.5, -44.0], "expected": -34.49992515097137}, {"input": [-34.5, -43.5], "expected": -34.49987659781028}, {"input": [-34.5, -43.0], "expected": -34.49979655232787}, {"input": [-34.5, -42.5], "expected": -34.4996645936271}, {"input": [-34.5, -42.0], "expected": -34.49944706852464}, {"input": [-34.5, -41.5], "expected": -34.49908853354623}, {"input": [-34.5, -41.0], "expected": -34.49849768984024}, {"input": [-34.5, -40.5], "expected": -34.49752431486227}, {"input": [-34.5, -40.0], "expected": -34.49592155672943}, {"input": [-34.5, -39.5], "expected": -34.49328465151088}, {"input": [-34.5, -39.0], "expected": -34.4889522551514}, {"input": [-34.5, -38.5], "expected": -34.48185007208219}, {"input": [-34.5, -38.0], "expected": -34.47024958172738}, {"input": [-34.5, -37.5], "expected": -34.451412648426256}, {"input": [-34.5, -37.0], "expected": -34.42111026570745}, {"input": [-34.5, -36.5], "expected": -34.37307198895703}, {"input": [-34.5, -36.0], "expected": -34.29858672201725}, {"input": [-34.5, -35.5], "expected": -34.18673831248178}, {"input": [-34.5, -35.0], "expected": -34.02592301581989}, {"input": [-34.5, -34.5], "expected": -33.80685281944005}, {"input": [-34.5, -34.0], "expected": -33.52592301581989}, {"input": [-34.5, -33.5], "expected": -33.18673831248178}, {"input": [-34.5, -33.0], "expected": -32.79858672201725}, {"input": [-34.5, -32.5], "expected": -32.37307198895703}, {"input": [-34.5, -32.0], "expected": -31.92111026570745}, {"input": [-34.5, -31.5], "expected": -31.451412648426256}, {"input": [-34.5, -31.0], "expected": -30.97024958172738}, {"input": [-34.5, -30.5], "expected": -30.48185007208219}, {"input": [-34.5, -30.0], "expected": -29.988952255151407}, {"input": [-34.5, -29.5], "expected": -29.493284651510884}, {"input": [-34.5, -29.0], "expected": -28.995921556729428}, {"input": [-34.5, -28.5], "expected": -28.497524314862268}, {"input": [-34.5, -28.0], "expected": -27.998497689840246}, {"input": [-34.5, -27.5], "expected": -27.499088533546225}, {"input": [-34.5, -27.0], "expected": -26.99944706852464}, {"input": [-34.5, -26.5], "expected": -26.499664593627106}, {"input": [-34.5, -26.0], "expected": -25.999796552327872}, {"input": [-34.5, -25.5], "expected": -25.499876597810278}, {"input": [-34.5, -25.0], "expected": -24.99992515097137}, {"input": [-34.5, -24.5], "expected": -24.499954601100782}, {"input": [-34.5, -24.0], "expected": -23.999972463929772}, {"input": [-34.5, -23.5], "expected": -23.499983298438682}, {"input": [-34.5, -23.0], "expected": -22.99998986995771}, {"input": [-34.5, -22.5], "expected": -22.499993855806522}, {"input": [-34.5, -22.0], "expected": -21.999996273353773}, {"input": [-34.5, -21.5], "expected": -21.499997739673148}, {"input": [-34.5, -21.0], "expected": -20.999998629041855}, {"input": [-34.5, -20.5], "expected": -20.499999168471625}, {"input": [-34.5, -20.0], "expected": -19.999999495652464}, {"input": [-34.5, -19.5], "expected": -19.499999694097728}, {"input": [-34.5, -19.0], "expected": -18.99999981446088}, {"input": [-34.5, -18.5], "expected": -18.49999988746483}, {"input": [-34.5, -18.0], "expected": -17.999999931743968}, {"input": [-34.5, -17.5], "expected": -17.499999958600625}, {"input": [-34.5, -17.0], "expected": -16.99999997489001}, {"input": [-34.5, -16.5], "expected": -16.49999998477002}, {"input": [-34.5, -16.0], "expected": -15.99999999076255}, {"input": [-34.5, -15.5], "expected": -15.499999994397204}, {"input": [-34.5, -15.0], "expected": -14.999999996601732}, {"input": [-34.5, -14.5], "expected": -14.499999997938847}, {"input": [-34.5, -14.0], "expected": -13.999999998749848}, {"input": [-34.5, -13.5], "expected": -13.499999999241744}, {"input": [-34.5, -13.0], "expected": -12.999999999540094}, {"input": [-34.5, -12.5], "expected": -12.499999999721053}, {"input": [-34.5, -12.0], "expected": -11.999999999830811}, {"input": [-34.5, -11.5], "expected": -11.499999999897382}, {"input": [-34.5, -11.0], "expected": -10.999999999937758}, {"input": [-34.5, -10.5], "expected": -10.499999999962249}, {"input": [-34.5, -10.0], "expected": -9.999999999977103}, {"input": [-34.5, -9.5], "expected": -9.499999999986112}, {"input": [-34.5, -9.0], "expected": -8.999999999991577}, {"input": [-34.5, -8.5], "expected": -8.499999999994891}, {"input": [-34.5, -8.0], "expected": -7.999999999996901}, {"input": [-34.5, -7.5], "expected": -7.499999999998121}, {"input": [-34.5, -7.0], "expected": -6.99999999999886}, {"input": [-34.5, -6.5], "expected": -6.499999999999309}, {"input": [-34.5, -6.0], "expected": -5.999999999999581}, {"input": [-34.5, -5.5], "expected": -5.499999999999746}, {"input": [-34.5, -5.0], "expected": -4.9999999999998455}, {"input": [-34.5, -4.5], "expected": -4.499999999999907}, {"input": [-34.5, -4.0], "expected": -3.999999999999943}, {"input": [-34.5, -3.5], "expected": -3.4999999999999654}, {"input": [-34.5, -3.0], "expected": -2.999999999999979}, {"input": [-34.5, -2.5], "expected": -2.499999999999987}, {"input": [-34.5, -2.0], "expected": -1.9999999999999922}, {"input": [-34.5, -1.5], "expected": -1.4999999999999953}, {"input": [-34.5, -1.0], "expected": -0.9999999999999972}, {"input": [-34.5, -0.5], "expected": -0.4999999999999983}, {"input": [-34.5, 0.0], "expected": 1.0395380116702214e-15}, {"input": [-34.5, 0.5], "expected": 0.5000000000000007}, {"input": [-34.5, 1.0], "expected": 1.0000000000000004}, {"input": [-34.5, 1.5], "expected": 1.5000000000000002}, {"input": [-34.5, 2.0], "expected": 2.0}, {"input": [-34.5, 2.5], "expected": 2.5}, {"input": [-34.5, 3.0], "expected": 3.0}, {"input": [-34.5, 3.5], "expected": 3.5}, {"input": [-34.5, 4.0], "expected": 4.0}, {"input": [-34.5, 4.5], "expected": 4.5}, {"input": [-34.5, 5.0], "expected": 5.0}, {"input": [-34.5, 5.5], "expected": 5.5}, {"input": [-34.5, 6.0], "expected": 6.0}, {"input": [-34.5, 6.5], "expected": 6.5}, {"input": [-34.5, 7.0], "expected": 7.0}, {"input": [-34.5, 7.5], "expected": 7.5}, {"input": [-34.5, 8.0], "expected": 8.0}, {"input": [-34.5, 8.5], "expected": 8.5}, {"input": [-34.5, 9.0], "expected": 9.0}, {"input": [-34.5, 9.5], "expected": 9.5}, {"input": [-34.5, 10.0], "expected": 10.0}, {"input": [-34.5, 10.5], "expected": 10.5}, {"input": [-34.5, 11.0], "expected": 11.0}, {"input": [-34.5, 11.5], "expected": 11.5}, {"input": [-34.5, 12.0], "expected": 12.0}, {"input": [-34.5, 12.5], "expected": 12.5}, {"input": [-34.5, 13.0], "expected": 13.0}, {"input": [-34.5, 13.5], "expected": 13.5}, {"input": [-34.5, 14.0], "expected": 14.0}, {"input": [-34.5, 14.5], "expected": 14.5}, {"input": [-34.5, 15.0], "expected": 15.0}, {"input": [-34.5, 15.5], "expected": 15.5}, {"input": [-34.5, 16.0], "expected": 16.0}, {"input": [-34.5, 16.5], "expected": 16.5}, {"input": [-34.5, 17.0], "expected": 17.0}, {"input": [-34.5, 17.5], "expected": 17.5}, {"input": [-34.5, 18.0], "expected": 18.0}, {"input": [-34.5, 18.5], "expected": 18.5}, {"input": [-34.5, 19.0], "expected": 19.0}, {"input": [-34.5, 19.5], "expected": 19.5}, {"input": [-34.5, 20.0], "expected": 20.0}, {"input": [-34.5, 20.5], "expected": 20.5}, {"input": [-34.5, 21.0], "expected": 21.0}, {"input": [-34.5, 21.5], "expected": 21.5}, {"input": [-34.5, 22.0], "expected": 22.0}, {"input": [-34.5, 22.5], "expected": 22.5}, {"input": [-34.5, 23.0], "expected": 23.0}, {"input": [-34.5, 23.5], "expected": 23.5}, {"input": [-34.5, 24.0], "expected": 24.0}, {"input": [-34.5, 24.5], "expected": 24.5}, {"input": [-34.5, 25.0], "expected": 25.0}, {"input": [-34.5, 25.5], "expected": 25.5}, {"input": [-34.5, 26.0], "expected": 26.0}, {"input": [-34.5, 26.5], "expected": 26.5}, {"input": [-34.5, 27.0], "expected": 27.0}, {"input": [-34.5, 27.5], "expected": 27.5}, {"input": [-34.5, 28.0], "expected": 28.0}, {"input": [-34.5, 28.5], "expected": 28.5}, {"input": [-34.5, 29.0], "expected": 29.0}, {"input": [-34.5, 29.5], "expected": 29.5}, {"input": [-34.5, 30.0], "expected": 30.0}, {"input": [-34.5, 30.5], "expected": 30.5}, {"input": [-34.5, 31.0], "expected": 31.0}, {"input": [-34.5, 31.5], "expected": 31.5}, {"input": [-34.5, 32.0], "expected": 32.0}, {"input": [-34.5, 32.5], "expected": 32.5}, {"input": [-34.5, 33.0], "expected": 33.0}, {"input": [-34.5, 33.5], "expected": 33.5}, {"input": [-34.5, 34.0], "expected": 34.0}, {"input": [-34.5, 34.5], "expected": 34.5}, {"input": [-34.5, 35.0], "expected": 35.0}, {"input": [-34.5, 35.5], "expected": 35.5}, {"input": [-34.5, 36.0], "expected": 36.0}, {"input": [-34.5, 36.5], "expected": 36.5}, {"input": [-34.5, 37.0], "expected": 37.0}, {"input": [-34.5, 37.5], "expected": 37.5}, {"input": [-34.5, 38.0], "expected": 38.0}, {"input": [-34.5, 38.5], "expected": 38.5}, {"input": [-34.5, 39.0], "expected": 39.0}, {"input": [-34.5, 39.5], "expected": 39.5}, {"input": [-34.5, 40.0], "expected": 40.0}, {"input": [-34.5, 40.5], "expected": 40.5}, {"input": [-34.5, 41.0], "expected": 41.0}, {"input": [-34.5, 41.5], "expected": 41.5}, {"input": [-34.5, 42.0], "expected": 42.0}, {"input": [-34.5, 42.5], "expected": 42.5}, {"input": [-34.5, 43.0], "expected": 43.0}, {"input": [-34.5, 43.5], "expected": 43.5}, {"input": [-34.5, 44.0], "expected": 44.0}, {"input": [-34.5, 44.5], "expected": 44.5}, {"input": [-34.5, 45.0], "expected": 45.0}, {"input": [-34.5, 45.5], "expected": 45.5}, {"input": [-34.5, 46.0], "expected": 46.0}, {"input": [-34.5, 46.5], "expected": 46.5}, {"input": [-34.5, 47.0], "expected": 47.0}, {"input": [-34.5, 47.5], "expected": 47.5}, {"input": [-34.5, 48.0], "expected": 48.0}, {"input": [-34.5, 48.5], "expected": 48.5}, {"input": [-34.5, 49.0], "expected": 49.0}, {"input": [-34.5, 49.5], "expected": 49.5}, {"input": [-34.5, 50.0], "expected": 50.0}, {"input": [-34.5, 50.5], "expected": 50.5}, {"input": [-34.5, 51.0], "expected": 51.0}, {"input": [-34.5, 51.5], "expected": 51.5}, {"input": [-34.5, 52.0], "expected": 52.0}, {"input": [-34.5, 52.5], "expected": 52.5}, {"input": [-34.5, 53.0], "expected": 53.0}, {"input": [-34.5, 53.5], "expected": 53.5}, {"input": [-34.5, 54.0], "expected": 54.0}, {"input": [-34.5, 54.5], "expected": 54.5}, {"input": [-34.5, 55.0], "expected": 55.0}, {"input": [-34.5, 55.5], "expected": 55.5}, {"input": [-34.5, 56.0], "expected": 56.0}, {"input": [-34.5, 56.5], "expected": 56.5}, {"input": [-34.5, 57.0], "expected": 57.0}, {"input": [-34.5, 57.5], "expected": 57.5}, {"input": [-34.5, 58.0], "expected": 58.0}, {"input": [-34.5, 58.5], "expected": 58.5}, {"input": [-34.5, 59.0], "expected": 59.0}, {"input": [-34.5, 59.5], "expected": 59.5}, {"input": [-34.5, 60.0], "expected": 60.0}, {"input": [-34.5, 60.5], "expected": 60.5}, {"input": [-34.5, 61.0], "expected": 61.0}, {"input": [-34.5, 61.5], "expected": 61.5}, {"input": [-34.5, 62.0], "expected": 62.0}, {"input": [-34.5, 62.5], "expected": 62.5}, {"input": [-34.5, 63.0], "expected": 63.0}, {"input": [-34.5, 63.5], "expected": 63.5}, {"input": [-34.5, 64.0], "expected": 64.0}, {"input": [-34.5, 64.5], "expected": 64.5}, {"input": [-34.5, 65.0], "expected": 65.0}, {"input": [-34.5, 65.5], "expected": 65.5}, {"input": [-34.5, 66.0], "expected": 66.0}, {"input": [-34.5, 66.5], "expected": 66.5}, {"input": [-34.5, 67.0], "expected": 67.0}, {"input": [-34.5, 67.5], "expected": 67.5}, {"input": [-34.5, 68.0], "expected": 68.0}, {"input": [-34.5, 68.5], "expected": 68.5}, {"input": [-34.5, 69.0], "expected": 69.0}, {"input": [-34.5, 69.5], "expected": 69.5}, {"input": [-34.5, 70.0], "expected": 70.0}, {"input": [-34.5, 70.5], "expected": 70.5}, {"input": [-34.5, 71.0], "expected": 71.0}, {"input": [-34.5, 71.5], "expected": 71.5}, {"input": [-34.5, 72.0], "expected": 72.0}, {"input": [-34.5, 72.5], "expected": 72.5}, {"input": [-34.5, 73.0], "expected": 73.0}, {"input": [-34.5, 73.5], "expected": 73.5}, {"input": [-34.5, 74.0], "expected": 74.0}, {"input": [-34.5, 74.5], "expected": 74.5}, {"input": [-34.5, 75.0], "expected": 75.0}, {"input": [-34.5, 75.5], "expected": 75.5}, {"input": [-34.5, 76.0], "expected": 76.0}, {"input": [-34.5, 76.5], "expected": 76.5}, {"input": [-34.5, 77.0], "expected": 77.0}, {"input": [-34.5, 77.5], "expected": 77.5}, {"input": [-34.5, 78.0], "expected": 78.0}, {"input": [-34.5, 78.5], "expected": 78.5}, {"input": [-34.5, 79.0], "expected": 79.0}, {"input": [-34.5, 79.5], "expected": 79.5}, {"input": [-34.5, 80.0], "expected": 80.0}, {"input": [-34.5, 80.5], "expected": 80.5}, {"input": [-34.5, 81.0], "expected": 81.0}, {"input": [-34.5, 81.5], "expected": 81.5}, {"input": [-34.5, 82.0], "expected": 82.0}, {"input": [-34.5, 82.5], "expected": 82.5}, {"input": [-34.5, 83.0], "expected": 83.0}, {"input": [-34.5, 83.5], "expected": 83.5}, {"input": [-34.5, 84.0], "expected": 84.0}, {"input": [-34.5, 84.5], "expected": 84.5}, {"input": [-34.5, 85.0], "expected": 85.0}, {"input": [-34.5, 85.5], "expected": 85.5}, {"input": [-34.5, 86.0], "expected": 86.0}, {"input": [-34.5, 86.5], "expected": 86.5}, {"input": [-34.5, 87.0], "expected": 87.0}, {"input": [-34.5, 87.5], "expected": 87.5}, {"input": [-34.5, 88.0], "expected": 88.0}, {"input": [-34.5, 88.5], "expected": 88.5}, {"input": [-34.5, 89.0], "expected": 89.0}, {"input": [-34.5, 89.5], "expected": 89.5}, {"input": [-34.5, 90.0], "expected": 90.0}, {"input": [-34.5, 90.5], "expected": 90.5}, {"input": [-34.5, 91.0], "expected": 91.0}, {"input": [-34.5, 91.5], "expected": 91.5}, {"input": [-34.5, 92.0], "expected": 92.0}, {"input": [-34.5, 92.5], "expected": 92.5}, {"input": [-34.5, 93.0], "expected": 93.0}, {"input": [-34.5, 93.5], "expected": 93.5}, {"input": [-34.5, 94.0], "expected": 94.0}, {"input": [-34.5, 94.5], "expected": 94.5}, {"input": [-34.5, 95.0], "expected": 95.0}, {"input": [-34.5, 95.5], "expected": 95.5}, {"input": [-34.5, 96.0], "expected": 96.0}, {"input": [-34.5, 96.5], "expected": 96.5}, {"input": [-34.5, 97.0], "expected": 97.0}, {"input": [-34.5, 97.5], "expected": 97.5}, {"input": [-34.5, 98.0], "expected": 98.0}, {"input": [-34.5, 98.5], "expected": 98.5}, {"input": [-34.5, 99.0], "expected": 99.0}, {"input": [-34.5, 99.5], "expected": 99.5}, {"input": [-34.0, -100.0], "expected": -34.0}, {"input": [-34.0, -99.5], "expected": -34.0}, {"input": [-34.0, -99.0], "expected": -34.0}, {"input": [-34.0, -98.5], "expected": -34.0}, {"input": [-34.0, -98.0], "expected": -34.0}, {"input": [-34.0, -97.5], "expected": -34.0}, {"input": [-34.0, -97.0], "expected": -34.0}, {"input": [-34.0, -96.5], "expected": -34.0}, {"input": [-34.0, -96.0], "expected": -34.0}, {"input": [-34.0, -95.5], "expected": -34.0}, {"input": [-34.0, -95.0], "expected": -34.0}, {"input": [-34.0, -94.5], "expected": -34.0}, {"input": [-34.0, -94.0], "expected": -34.0}, {"input": [-34.0, -93.5], "expected": -34.0}, {"input": [-34.0, -93.0], "expected": -34.0}, {"input": [-34.0, -92.5], "expected": -34.0}, {"input": [-34.0, -92.0], "expected": -34.0}, {"input": [-34.0, -91.5], "expected": -34.0}, {"input": [-34.0, -91.0], "expected": -34.0}, {"input": [-34.0, -90.5], "expected": -34.0}, {"input": [-34.0, -90.0], "expected": -34.0}, {"input": [-34.0, -89.5], "expected": -34.0}, {"input": [-34.0, -89.0], "expected": -34.0}, {"input": [-34.0, -88.5], "expected": -34.0}, {"input": [-34.0, -88.0], "expected": -34.0}, {"input": [-34.0, -87.5], "expected": -34.0}, {"input": [-34.0, -87.0], "expected": -34.0}, {"input": [-34.0, -86.5], "expected": -34.0}, {"input": [-34.0, -86.0], "expected": -34.0}, {"input": [-34.0, -85.5], "expected": -34.0}, {"input": [-34.0, -85.0], "expected": -34.0}, {"input": [-34.0, -84.5], "expected": -34.0}, {"input": [-34.0, -84.0], "expected": -34.0}, {"input": [-34.0, -83.5], "expected": -34.0}, {"input": [-34.0, -83.0], "expected": -34.0}, {"input": [-34.0, -82.5], "expected": -34.0}, {"input": [-34.0, -82.0], "expected": -34.0}, {"input": [-34.0, -81.5], "expected": -34.0}, {"input": [-34.0, -81.0], "expected": -34.0}, {"input": [-34.0, -80.5], "expected": -34.0}, {"input": [-34.0, -80.0], "expected": -34.0}, {"input": [-34.0, -79.5], "expected": -34.0}, {"input": [-34.0, -79.0], "expected": -34.0}, {"input": [-34.0, -78.5], "expected": -34.0}, {"input": [-34.0, -78.0], "expected": -34.0}, {"input": [-34.0, -77.5], "expected": -34.0}, {"input": [-34.0, -77.0], "expected": -34.0}, {"input": [-34.0, -76.5], "expected": -34.0}, {"input": [-34.0, -76.0], "expected": -34.0}, {"input": [-34.0, -75.5], "expected": -34.0}, {"input": [-34.0, -75.0], "expected": -34.0}, {"input": [-34.0, -74.5], "expected": -34.0}, {"input": [-34.0, -74.0], "expected": -34.0}, {"input": [-34.0, -73.5], "expected": -34.0}, {"input": [-34.0, -73.0], "expected": -34.0}, {"input": [-34.0, -72.5], "expected": -34.0}, {"input": [-34.0, -72.0], "expected": -34.0}, {"input": [-34.0, -71.5], "expected": -34.0}, {"input": [-34.0, -71.0], "expected": -34.0}, {"input": [-34.0, -70.5], "expected": -34.0}, {"input": [-34.0, -70.0], "expected": -34.0}, {"input": [-34.0, -69.5], "expected": -34.0}, {"input": [-34.0, -69.0], "expected": -34.0}, {"input": [-34.0, -68.5], "expected": -34.0}, {"input": [-34.0, -68.0], "expected": -34.0}, {"input": [-34.0, -67.5], "expected": -34.0}, {"input": [-34.0, -67.0], "expected": -33.99999999999999}, {"input": [-34.0, -66.5], "expected": -33.99999999999999}, {"input": [-34.0, -66.0], "expected": -33.999999999999986}, {"input": [-34.0, -65.5], "expected": -33.99999999999998}, {"input": [-34.0, -65.0], "expected": -33.999999999999964}, {"input": [-34.0, -64.5], "expected": -33.99999999999994}, {"input": [-34.0, -64.0], "expected": -33.99999999999991}, {"input": [-34.0, -63.5], "expected": -33.999999999999844}, {"input": [-34.0, -63.0], "expected": -33.999999999999744}, {"input": [-34.0, -62.5], "expected": -33.99999999999958}, {"input": [-34.0, -62.0], "expected": -33.99999999999931}, {"input": [-34.0, -61.5], "expected": -33.99999999999886}, {"input": [-34.0, -61.0], "expected": -33.99999999999812}, {"input": [-34.0, -60.5], "expected": -33.9999999999969}, {"input": [-34.0, -60.0], "expected": -33.99999999999489}, {"input": [-34.0, -59.5], "expected": -33.99999999999158}, {"input": [-34.0, -59.0], "expected": -33.99999999998611}, {"input": [-34.0, -58.5], "expected": -33.9999999999771}, {"input": [-34.0, -58.0], "expected": -33.99999999996225}, {"input": [-34.0, -57.5], "expected": -33.99999999993776}, {"input": [-34.0, -57.0], "expected": -33.99999999989738}, {"input": [-34.0, -56.5], "expected": -33.99999999983081}, {"input": [-34.0, -56.0], "expected": -33.999999999721055}, {"input": [-34.0, -55.5], "expected": -33.999999999540094}, {"input": [-34.0, -55.0], "expected": -33.999999999241744}, {"input": [-34.0, -54.5], "expected": -33.99999999874985}, {"input": [-34.0, -54.0], "expected": -33.99999999793884}, {"input": [-34.0, -53.5], "expected": -33.99999999660173}, {"input": [-34.0, -53.0], "expected": -33.99999999439721}, {"input": [-34.0, -52.5], "expected": -33.999999990762554}, {"input": [-34.0, -52.0], "expected": -33.99999998477002}, {"input": [-34.0, -51.5], "expected": -33.99999997489001}, {"input": [-34.0, -51.0], "expected": -33.999999958600625}, {"input": [-34.0, -50.5], "expected": -33.99999993174397}, {"input": [-34.0, -50.0], "expected": -33.99999988746483}, {"input": [-34.0, -49.5], "expected": -33.99999981446088}, {"input": [-34.0, -49.0], "expected": -33.999999694097724}, {"input": [-34.0, -48.5], "expected": -33.99999949565247}, {"input": [-34.0, -48.0], "expected": -33.999999168471625}, {"input": [-34.0, -47.5], "expected": -33.999998629041855}, {"input": [-34.0, -47.0], "expected": -33.99999773967315}, {"input": [-34.0, -46.5], "expected": -33.99999627335377}, {"input": [-34.0, -46.0], "expected": -33.99999385580652}, {"input": [-34.0, -45.5], "expected": -33.99998986995771}, {"input": [-34.0, -45.0], "expected": -33.99998329843868}, {"input": [-34.0, -44.5], "expected": -33.99997246392977}, {"input": [-34.0, -44.0], "expected": -33.99995460110078}, {"input": [-34.0, -43.5], "expected": -33.99992515097137}, {"input": [-34.0, -43.0], "expected": -33.99987659781028}, {"input": [-34.0, -42.5], "expected": -33.99979655232787}, {"input": [-34.0, -42.0], "expected": -33.9996645936271}, {"input": [-34.0, -41.5], "expected": -33.99944706852464}, {"input": [-34.0, -41.0], "expected": -33.99908853354623}, {"input": [-34.0, -40.5], "expected": -33.99849768984024}, {"input": [-34.0, -40.0], "expected": -33.99752431486227}, {"input": [-34.0, -39.5], "expected": -33.99592155672943}, {"input": [-34.0, -39.0], "expected": -33.99328465151088}, {"input": [-34.0, -38.5], "expected": -33.9889522551514}, {"input": [-34.0, -38.0], "expected": -33.98185007208219}, {"input": [-34.0, -37.5], "expected": -33.97024958172738}, {"input": [-34.0, -37.0], "expected": -33.951412648426256}, {"input": [-34.0, -36.5], "expected": -33.92111026570745}, {"input": [-34.0, -36.0], "expected": -33.87307198895703}, {"input": [-34.0, -35.5], "expected": -33.79858672201725}, {"input": [-34.0, -35.0], "expected": -33.68673831248178}, {"input": [-34.0, -34.5], "expected": -33.52592301581989}, {"input": [-34.0, -34.0], "expected": -33.30685281944005}, {"input": [-34.0, -33.5], "expected": -33.02592301581989}, {"input": [-34.0, -33.0], "expected": -32.68673831248178}, {"input": [-34.0, -32.5], "expected": -32.29858672201725}, {"input": [-34.0, -32.0], "expected": -31.873071988957026}, {"input": [-34.0, -31.5], "expected": -31.42111026570745}, {"input": [-34.0, -31.0], "expected": -30.951412648426256}, {"input": [-34.0, -30.5], "expected": -30.47024958172738}, {"input": [-34.0, -30.0], "expected": -29.98185007208219}, {"input": [-34.0, -29.5], "expected": -29.488952255151407}, {"input": [-34.0, -29.0], "expected": -28.993284651510884}, {"input": [-34.0, -28.5], "expected": -28.495921556729428}, {"input": [-34.0, -28.0], "expected": -27.997524314862268}, {"input": [-34.0, -27.5], "expected": -27.498497689840246}, {"input": [-34.0, -27.0], "expected": -26.999088533546225}, {"input": [-34.0, -26.5], "expected": -26.49944706852464}, {"input": [-34.0, -26.0], "expected": -25.999664593627106}, {"input": [-34.0, -25.5], "expected": -25.499796552327872}, {"input": [-34.0, -25.0], "expected": -24.999876597810278}, {"input": [-34.0, -24.5], "expected": -24.49992515097137}, {"input": [-34.0, -24.0], "expected": -23.999954601100782}, {"input": [-34.0, -23.5], "expected": -23.499972463929772}, {"input": [-34.0, -23.0], "expected": -22.999983298438682}, {"input": [-34.0, -22.5], "expected": -22.49998986995771}, {"input": [-34.0, -22.0], "expected": -21.999993855806522}, {"input": [-34.0, -21.5], "expected": -21.499996273353773}, {"input": [-34.0, -21.0], "expected": -20.999997739673148}, {"input": [-34.0, -20.5], "expected": -20.499998629041855}, {"input": [-34.0, -20.0], "expected": -19.999999168471625}, {"input": [-34.0, -19.5], "expected": -19.499999495652464}, {"input": [-34.0, -19.0], "expected": -18.999999694097728}, {"input": [-34.0, -18.5], "expected": -18.49999981446088}, {"input": [-34.0, -18.0], "expected": -17.99999988746483}, {"input": [-34.0, -17.5], "expected": -17.499999931743968}, {"input": [-34.0, -17.0], "expected": -16.999999958600625}, {"input": [-34.0, -16.5], "expected": -16.49999997489001}, {"input": [-34.0, -16.0], "expected": -15.999999984770021}, {"input": [-34.0, -15.5], "expected": -15.49999999076255}, {"input": [-34.0, -15.0], "expected": -14.999999994397204}, {"input": [-34.0, -14.5], "expected": -14.499999996601732}, {"input": [-34.0, -14.0], "expected": -13.999999997938847}, {"input": [-34.0, -13.5], "expected": -13.499999998749848}, {"input": [-34.0, -13.0], "expected": -12.999999999241744}, {"input": [-34.0, -12.5], "expected": -12.499999999540094}, {"input": [-34.0, -12.0], "expected": -11.999999999721053}, {"input": [-34.0, -11.5], "expected": -11.499999999830811}, {"input": [-34.0, -11.0], "expected": -10.999999999897382}, {"input": [-34.0, -10.5], "expected": -10.499999999937758}, {"input": [-34.0, -10.0], "expected": -9.999999999962249}, {"input": [-34.0, -9.5], "expected": -9.499999999977103}, {"input": [-34.0, -9.0], "expected": -8.999999999986112}, {"input": [-34.0, -8.5], "expected": -8.499999999991577}, {"input": [-34.0, -8.0], "expected": -7.999999999994891}, {"input": [-34.0, -7.5], "expected": -7.499999999996901}, {"input": [-34.0, -7.0], "expected": -6.999999999998121}, {"input": [-34.0, -6.5], "expected": -6.49999999999886}, {"input": [-34.0, -6.0], "expected": -5.999999999999309}, {"input": [-34.0, -5.5], "expected": -5.499999999999581}, {"input": [-34.0, -5.0], "expected": -4.999999999999746}, {"input": [-34.0, -4.5], "expected": -4.4999999999998455}, {"input": [-34.0, -4.0], "expected": -3.9999999999999063}, {"input": [-34.0, -3.5], "expected": -3.499999999999943}, {"input": [-34.0, -3.0], "expected": -2.9999999999999654}, {"input": [-34.0, -2.5], "expected": -2.499999999999979}, {"input": [-34.0, -2.0], "expected": -1.9999999999999873}, {"input": [-34.0, -1.5], "expected": -1.4999999999999922}, {"input": [-34.0, -1.0], "expected": -0.9999999999999953}, {"input": [-34.0, -0.5], "expected": -0.49999999999999717}, {"input": [-34.0, 0.0], "expected": 1.7139084315420116e-15}, {"input": [-34.0, 0.5], "expected": 0.500000000000001}, {"input": [-34.0, 1.0], "expected": 1.0000000000000007}, {"input": [-34.0, 1.5], "expected": 1.5000000000000004}, {"input": [-34.0, 2.0], "expected": 2.0000000000000004}, {"input": [-34.0, 2.5], "expected": 2.5}, {"input": [-34.0, 3.0], "expected": 3.0}, {"input": [-34.0, 3.5], "expected": 3.5}, {"input": [-34.0, 4.0], "expected": 4.0}, {"input": [-34.0, 4.5], "expected": 4.5}, {"input": [-34.0, 5.0], "expected": 5.0}, {"input": [-34.0, 5.5], "expected": 5.5}, {"input": [-34.0, 6.0], "expected": 6.0}, {"input": [-34.0, 6.5], "expected": 6.5}, {"input": [-34.0, 7.0], "expected": 7.0}, {"input": [-34.0, 7.5], "expected": 7.5}, {"input": [-34.0, 8.0], "expected": 8.0}, {"input": [-34.0, 8.5], "expected": 8.5}, {"input": [-34.0, 9.0], "expected": 9.0}, {"input": [-34.0, 9.5], "expected": 9.5}, {"input": [-34.0, 10.0], "expected": 10.0}, {"input": [-34.0, 10.5], "expected": 10.5}, {"input": [-34.0, 11.0], "expected": 11.0}, {"input": [-34.0, 11.5], "expected": 11.5}, {"input": [-34.0, 12.0], "expected": 12.0}, {"input": [-34.0, 12.5], "expected": 12.5}, {"input": [-34.0, 13.0], "expected": 13.0}, {"input": [-34.0, 13.5], "expected": 13.5}, {"input": [-34.0, 14.0], "expected": 14.0}, {"input": [-34.0, 14.5], "expected": 14.5}, {"input": [-34.0, 15.0], "expected": 15.0}, {"input": [-34.0, 15.5], "expected": 15.5}, {"input": [-34.0, 16.0], "expected": 16.0}, {"input": [-34.0, 16.5], "expected": 16.5}, {"input": [-34.0, 17.0], "expected": 17.0}, {"input": [-34.0, 17.5], "expected": 17.5}, {"input": [-34.0, 18.0], "expected": 18.0}, {"input": [-34.0, 18.5], "expected": 18.5}, {"input": [-34.0, 19.0], "expected": 19.0}, {"input": [-34.0, 19.5], "expected": 19.5}, {"input": [-34.0, 20.0], "expected": 20.0}, {"input": [-34.0, 20.5], "expected": 20.5}, {"input": [-34.0, 21.0], "expected": 21.0}, {"input": [-34.0, 21.5], "expected": 21.5}, {"input": [-34.0, 22.0], "expected": 22.0}, {"input": [-34.0, 22.5], "expected": 22.5}, {"input": [-34.0, 23.0], "expected": 23.0}, {"input": [-34.0, 23.5], "expected": 23.5}, {"input": [-34.0, 24.0], "expected": 24.0}, {"input": [-34.0, 24.5], "expected": 24.5}, {"input": [-34.0, 25.0], "expected": 25.0}, {"input": [-34.0, 25.5], "expected": 25.5}, {"input": [-34.0, 26.0], "expected": 26.0}, {"input": [-34.0, 26.5], "expected": 26.5}, {"input": [-34.0, 27.0], "expected": 27.0}, {"input": [-34.0, 27.5], "expected": 27.5}, {"input": [-34.0, 28.0], "expected": 28.0}, {"input": [-34.0, 28.5], "expected": 28.5}, {"input": [-34.0, 29.0], "expected": 29.0}, {"input": [-34.0, 29.5], "expected": 29.5}, {"input": [-34.0, 30.0], "expected": 30.0}, {"input": [-34.0, 30.5], "expected": 30.5}, {"input": [-34.0, 31.0], "expected": 31.0}, {"input": [-34.0, 31.5], "expected": 31.5}, {"input": [-34.0, 32.0], "expected": 32.0}, {"input": [-34.0, 32.5], "expected": 32.5}, {"input": [-34.0, 33.0], "expected": 33.0}, {"input": [-34.0, 33.5], "expected": 33.5}, {"input": [-34.0, 34.0], "expected": 34.0}, {"input": [-34.0, 34.5], "expected": 34.5}, {"input": [-34.0, 35.0], "expected": 35.0}, {"input": [-34.0, 35.5], "expected": 35.5}, {"input": [-34.0, 36.0], "expected": 36.0}, {"input": [-34.0, 36.5], "expected": 36.5}, {"input": [-34.0, 37.0], "expected": 37.0}, {"input": [-34.0, 37.5], "expected": 37.5}, {"input": [-34.0, 38.0], "expected": 38.0}, {"input": [-34.0, 38.5], "expected": 38.5}, {"input": [-34.0, 39.0], "expected": 39.0}, {"input": [-34.0, 39.5], "expected": 39.5}, {"input": [-34.0, 40.0], "expected": 40.0}, {"input": [-34.0, 40.5], "expected": 40.5}, {"input": [-34.0, 41.0], "expected": 41.0}, {"input": [-34.0, 41.5], "expected": 41.5}, {"input": [-34.0, 42.0], "expected": 42.0}, {"input": [-34.0, 42.5], "expected": 42.5}, {"input": [-34.0, 43.0], "expected": 43.0}, {"input": [-34.0, 43.5], "expected": 43.5}, {"input": [-34.0, 44.0], "expected": 44.0}, {"input": [-34.0, 44.5], "expected": 44.5}, {"input": [-34.0, 45.0], "expected": 45.0}, {"input": [-34.0, 45.5], "expected": 45.5}, {"input": [-34.0, 46.0], "expected": 46.0}, {"input": [-34.0, 46.5], "expected": 46.5}, {"input": [-34.0, 47.0], "expected": 47.0}, {"input": [-34.0, 47.5], "expected": 47.5}, {"input": [-34.0, 48.0], "expected": 48.0}, {"input": [-34.0, 48.5], "expected": 48.5}, {"input": [-34.0, 49.0], "expected": 49.0}, {"input": [-34.0, 49.5], "expected": 49.5}, {"input": [-34.0, 50.0], "expected": 50.0}, {"input": [-34.0, 50.5], "expected": 50.5}, {"input": [-34.0, 51.0], "expected": 51.0}, {"input": [-34.0, 51.5], "expected": 51.5}, {"input": [-34.0, 52.0], "expected": 52.0}, {"input": [-34.0, 52.5], "expected": 52.5}, {"input": [-34.0, 53.0], "expected": 53.0}, {"input": [-34.0, 53.5], "expected": 53.5}, {"input": [-34.0, 54.0], "expected": 54.0}, {"input": [-34.0, 54.5], "expected": 54.5}, {"input": [-34.0, 55.0], "expected": 55.0}, {"input": [-34.0, 55.5], "expected": 55.5}, {"input": [-34.0, 56.0], "expected": 56.0}, {"input": [-34.0, 56.5], "expected": 56.5}, {"input": [-34.0, 57.0], "expected": 57.0}, {"input": [-34.0, 57.5], "expected": 57.5}, {"input": [-34.0, 58.0], "expected": 58.0}, {"input": [-34.0, 58.5], "expected": 58.5}, {"input": [-34.0, 59.0], "expected": 59.0}, {"input": [-34.0, 59.5], "expected": 59.5}, {"input": [-34.0, 60.0], "expected": 60.0}, {"input": [-34.0, 60.5], "expected": 60.5}, {"input": [-34.0, 61.0], "expected": 61.0}, {"input": [-34.0, 61.5], "expected": 61.5}, {"input": [-34.0, 62.0], "expected": 62.0}, {"input": [-34.0, 62.5], "expected": 62.5}, {"input": [-34.0, 63.0], "expected": 63.0}, {"input": [-34.0, 63.5], "expected": 63.5}, {"input": [-34.0, 64.0], "expected": 64.0}, {"input": [-34.0, 64.5], "expected": 64.5}, {"input": [-34.0, 65.0], "expected": 65.0}, {"input": [-34.0, 65.5], "expected": 65.5}, {"input": [-34.0, 66.0], "expected": 66.0}, {"input": [-34.0, 66.5], "expected": 66.5}, {"input": [-34.0, 67.0], "expected": 67.0}, {"input": [-34.0, 67.5], "expected": 67.5}, {"input": [-34.0, 68.0], "expected": 68.0}, {"input": [-34.0, 68.5], "expected": 68.5}, {"input": [-34.0, 69.0], "expected": 69.0}, {"input": [-34.0, 69.5], "expected": 69.5}, {"input": [-34.0, 70.0], "expected": 70.0}, {"input": [-34.0, 70.5], "expected": 70.5}, {"input": [-34.0, 71.0], "expected": 71.0}, {"input": [-34.0, 71.5], "expected": 71.5}, {"input": [-34.0, 72.0], "expected": 72.0}, {"input": [-34.0, 72.5], "expected": 72.5}, {"input": [-34.0, 73.0], "expected": 73.0}, {"input": [-34.0, 73.5], "expected": 73.5}, {"input": [-34.0, 74.0], "expected": 74.0}, {"input": [-34.0, 74.5], "expected": 74.5}, {"input": [-34.0, 75.0], "expected": 75.0}, {"input": [-34.0, 75.5], "expected": 75.5}, {"input": [-34.0, 76.0], "expected": 76.0}, {"input": [-34.0, 76.5], "expected": 76.5}, {"input": [-34.0, 77.0], "expected": 77.0}, {"input": [-34.0, 77.5], "expected": 77.5}, {"input": [-34.0, 78.0], "expected": 78.0}, {"input": [-34.0, 78.5], "expected": 78.5}, {"input": [-34.0, 79.0], "expected": 79.0}, {"input": [-34.0, 79.5], "expected": 79.5}, {"input": [-34.0, 80.0], "expected": 80.0}, {"input": [-34.0, 80.5], "expected": 80.5}, {"input": [-34.0, 81.0], "expected": 81.0}, {"input": [-34.0, 81.5], "expected": 81.5}, {"input": [-34.0, 82.0], "expected": 82.0}, {"input": [-34.0, 82.5], "expected": 82.5}, {"input": [-34.0, 83.0], "expected": 83.0}, {"input": [-34.0, 83.5], "expected": 83.5}, {"input": [-34.0, 84.0], "expected": 84.0}, {"input": [-34.0, 84.5], "expected": 84.5}, {"input": [-34.0, 85.0], "expected": 85.0}, {"input": [-34.0, 85.5], "expected": 85.5}, {"input": [-34.0, 86.0], "expected": 86.0}, {"input": [-34.0, 86.5], "expected": 86.5}, {"input": [-34.0, 87.0], "expected": 87.0}, {"input": [-34.0, 87.5], "expected": 87.5}, {"input": [-34.0, 88.0], "expected": 88.0}, {"input": [-34.0, 88.5], "expected": 88.5}, {"input": [-34.0, 89.0], "expected": 89.0}, {"input": [-34.0, 89.5], "expected": 89.5}, {"input": [-34.0, 90.0], "expected": 90.0}, {"input": [-34.0, 90.5], "expected": 90.5}, {"input": [-34.0, 91.0], "expected": 91.0}, {"input": [-34.0, 91.5], "expected": 91.5}, {"input": [-34.0, 92.0], "expected": 92.0}, {"input": [-34.0, 92.5], "expected": 92.5}, {"input": [-34.0, 93.0], "expected": 93.0}, {"input": [-34.0, 93.5], "expected": 93.5}, {"input": [-34.0, 94.0], "expected": 94.0}, {"input": [-34.0, 94.5], "expected": 94.5}, {"input": [-34.0, 95.0], "expected": 95.0}, {"input": [-34.0, 95.5], "expected": 95.5}, {"input": [-34.0, 96.0], "expected": 96.0}, {"input": [-34.0, 96.5], "expected": 96.5}, {"input": [-34.0, 97.0], "expected": 97.0}, {"input": [-34.0, 97.5], "expected": 97.5}, {"input": [-34.0, 98.0], "expected": 98.0}, {"input": [-34.0, 98.5], "expected": 98.5}, {"input": [-34.0, 99.0], "expected": 99.0}, {"input": [-34.0, 99.5], "expected": 99.5}, {"input": [-33.5, -100.0], "expected": -33.5}, {"input": [-33.5, -99.5], "expected": -33.5}, {"input": [-33.5, -99.0], "expected": -33.5}, {"input": [-33.5, -98.5], "expected": -33.5}, {"input": [-33.5, -98.0], "expected": -33.5}, {"input": [-33.5, -97.5], "expected": -33.5}, {"input": [-33.5, -97.0], "expected": -33.5}, {"input": [-33.5, -96.5], "expected": -33.5}, {"input": [-33.5, -96.0], "expected": -33.5}, {"input": [-33.5, -95.5], "expected": -33.5}, {"input": [-33.5, -95.0], "expected": -33.5}, {"input": [-33.5, -94.5], "expected": -33.5}, {"input": [-33.5, -94.0], "expected": -33.5}, {"input": [-33.5, -93.5], "expected": -33.5}, {"input": [-33.5, -93.0], "expected": -33.5}, {"input": [-33.5, -92.5], "expected": -33.5}, {"input": [-33.5, -92.0], "expected": -33.5}, {"input": [-33.5, -91.5], "expected": -33.5}, {"input": [-33.5, -91.0], "expected": -33.5}, {"input": [-33.5, -90.5], "expected": -33.5}, {"input": [-33.5, -90.0], "expected": -33.5}, {"input": [-33.5, -89.5], "expected": -33.5}, {"input": [-33.5, -89.0], "expected": -33.5}, {"input": [-33.5, -88.5], "expected": -33.5}, {"input": [-33.5, -88.0], "expected": -33.5}, {"input": [-33.5, -87.5], "expected": -33.5}, {"input": [-33.5, -87.0], "expected": -33.5}, {"input": [-33.5, -86.5], "expected": -33.5}, {"input": [-33.5, -86.0], "expected": -33.5}, {"input": [-33.5, -85.5], "expected": -33.5}, {"input": [-33.5, -85.0], "expected": -33.5}, {"input": [-33.5, -84.5], "expected": -33.5}, {"input": [-33.5, -84.0], "expected": -33.5}, {"input": [-33.5, -83.5], "expected": -33.5}, {"input": [-33.5, -83.0], "expected": -33.5}, {"input": [-33.5, -82.5], "expected": -33.5}, {"input": [-33.5, -82.0], "expected": -33.5}, {"input": [-33.5, -81.5], "expected": -33.5}, {"input": [-33.5, -81.0], "expected": -33.5}, {"input": [-33.5, -80.5], "expected": -33.5}, {"input": [-33.5, -80.0], "expected": -33.5}, {"input": [-33.5, -79.5], "expected": -33.5}, {"input": [-33.5, -79.0], "expected": -33.5}, {"input": [-33.5, -78.5], "expected": -33.5}, {"input": [-33.5, -78.0], "expected": -33.5}, {"input": [-33.5, -77.5], "expected": -33.5}, {"input": [-33.5, -77.0], "expected": -33.5}, {"input": [-33.5, -76.5], "expected": -33.5}, {"input": [-33.5, -76.0], "expected": -33.5}, {"input": [-33.5, -75.5], "expected": -33.5}, {"input": [-33.5, -75.0], "expected": -33.5}, {"input": [-33.5, -74.5], "expected": -33.5}, {"input": [-33.5, -74.0], "expected": -33.5}, {"input": [-33.5, -73.5], "expected": -33.5}, {"input": [-33.5, -73.0], "expected": -33.5}, {"input": [-33.5, -72.5], "expected": -33.5}, {"input": [-33.5, -72.0], "expected": -33.5}, {"input": [-33.5, -71.5], "expected": -33.5}, {"input": [-33.5, -71.0], "expected": -33.5}, {"input": [-33.5, -70.5], "expected": -33.5}, {"input": [-33.5, -70.0], "expected": -33.5}, {"input": [-33.5, -69.5], "expected": -33.5}, {"input": [-33.5, -69.0], "expected": -33.5}, {"input": [-33.5, -68.5], "expected": -33.5}, {"input": [-33.5, -68.0], "expected": -33.5}, {"input": [-33.5, -67.5], "expected": -33.5}, {"input": [-33.5, -67.0], "expected": -33.5}, {"input": [-33.5, -66.5], "expected": -33.49999999999999}, {"input": [-33.5, -66.0], "expected": -33.49999999999999}, {"input": [-33.5, -65.5], "expected": -33.499999999999986}, {"input": [-33.5, -65.0], "expected": -33.49999999999998}, {"input": [-33.5, -64.5], "expected": -33.499999999999964}, {"input": [-33.5, -64.0], "expected": -33.49999999999994}, {"input": [-33.5, -63.5], "expected": -33.49999999999991}, {"input": [-33.5, -63.0], "expected": -33.499999999999844}, {"input": [-33.5, -62.5], "expected": -33.499999999999744}, {"input": [-33.5, -62.0], "expected": -33.49999999999958}, {"input": [-33.5, -61.5], "expected": -33.49999999999931}, {"input": [-33.5, -61.0], "expected": -33.49999999999886}, {"input": [-33.5, -60.5], "expected": -33.49999999999812}, {"input": [-33.5, -60.0], "expected": -33.4999999999969}, {"input": [-33.5, -59.5], "expected": -33.49999999999489}, {"input": [-33.5, -59.0], "expected": -33.49999999999158}, {"input": [-33.5, -58.5], "expected": -33.49999999998611}, {"input": [-33.5, -58.0], "expected": -33.4999999999771}, {"input": [-33.5, -57.5], "expected": -33.49999999996225}, {"input": [-33.5, -57.0], "expected": -33.49999999993776}, {"input": [-33.5, -56.5], "expected": -33.49999999989738}, {"input": [-33.5, -56.0], "expected": -33.49999999983081}, {"input": [-33.5, -55.5], "expected": -33.499999999721055}, {"input": [-33.5, -55.0], "expected": -33.499999999540094}, {"input": [-33.5, -54.5], "expected": -33.499999999241744}, {"input": [-33.5, -54.0], "expected": -33.49999999874985}, {"input": [-33.5, -53.5], "expected": -33.49999999793884}, {"input": [-33.5, -53.0], "expected": -33.49999999660173}, {"input": [-33.5, -52.5], "expected": -33.49999999439721}, {"input": [-33.5, -52.0], "expected": -33.499999990762554}, {"input": [-33.5, -51.5], "expected": -33.49999998477002}, {"input": [-33.5, -51.0], "expected": -33.49999997489001}, {"input": [-33.5, -50.5], "expected": -33.499999958600625}, {"input": [-33.5, -50.0], "expected": -33.49999993174397}, {"input": [-33.5, -49.5], "expected": -33.49999988746483}, {"input": [-33.5, -49.0], "expected": -33.49999981446088}, {"input": [-33.5, -48.5], "expected": -33.499999694097724}, {"input": [-33.5, -48.0], "expected": -33.49999949565247}, {"input": [-33.5, -47.5], "expected": -33.499999168471625}, {"input": [-33.5, -47.0], "expected": -33.499998629041855}, {"input": [-33.5, -46.5], "expected": -33.49999773967315}, {"input": [-33.5, -46.0], "expected": -33.49999627335377}, {"input": [-33.5, -45.5], "expected": -33.49999385580652}, {"input": [-33.5, -45.0], "expected": -33.49998986995771}, {"input": [-33.5, -44.5], "expected": -33.49998329843868}, {"input": [-33.5, -44.0], "expected": -33.49997246392977}, {"input": [-33.5, -43.5], "expected": -33.49995460110078}, {"input": [-33.5, -43.0], "expected": -33.49992515097137}, {"input": [-33.5, -42.5], "expected": -33.49987659781028}, {"input": [-33.5, -42.0], "expected": -33.49979655232787}, {"input": [-33.5, -41.5], "expected": -33.4996645936271}, {"input": [-33.5, -41.0], "expected": -33.49944706852464}, {"input": [-33.5, -40.5], "expected": -33.49908853354623}, {"input": [-33.5, -40.0], "expected": -33.49849768984024}, {"input": [-33.5, -39.5], "expected": -33.49752431486227}, {"input": [-33.5, -39.0], "expected": -33.49592155672943}, {"input": [-33.5, -38.5], "expected": -33.49328465151088}, {"input": [-33.5, -38.0], "expected": -33.4889522551514}, {"input": [-33.5, -37.5], "expected": -33.48185007208219}, {"input": [-33.5, -37.0], "expected": -33.47024958172738}, {"input": [-33.5, -36.5], "expected": -33.451412648426256}, {"input": [-33.5, -36.0], "expected": -33.42111026570745}, {"input": [-33.5, -35.5], "expected": -33.37307198895703}, {"input": [-33.5, -35.0], "expected": -33.29858672201725}, {"input": [-33.5, -34.5], "expected": -33.18673831248178}, {"input": [-33.5, -34.0], "expected": -33.02592301581989}, {"input": [-33.5, -33.5], "expected": -32.80685281944005}, {"input": [-33.5, -33.0], "expected": -32.52592301581989}, {"input": [-33.5, -32.5], "expected": -32.18673831248178}, {"input": [-33.5, -32.0], "expected": -31.798586722017248}, {"input": [-33.5, -31.5], "expected": -31.373071988957026}, {"input": [-33.5, -31.0], "expected": -30.92111026570745}, {"input": [-33.5, -30.5], "expected": -30.451412648426256}, {"input": [-33.5, -30.0], "expected": -29.97024958172738}, {"input": [-33.5, -29.5], "expected": -29.48185007208219}, {"input": [-33.5, -29.0], "expected": -28.988952255151407}, {"input": [-33.5, -28.5], "expected": -28.493284651510884}, {"input": [-33.5, -28.0], "expected": -27.995921556729428}, {"input": [-33.5, -27.5], "expected": -27.497524314862268}, {"input": [-33.5, -27.0], "expected": -26.998497689840246}, {"input": [-33.5, -26.5], "expected": -26.499088533546225}, {"input": [-33.5, -26.0], "expected": -25.99944706852464}, {"input": [-33.5, -25.5], "expected": -25.499664593627106}, {"input": [-33.5, -25.0], "expected": -24.999796552327872}, {"input": [-33.5, -24.5], "expected": -24.499876597810278}, {"input": [-33.5, -24.0], "expected": -23.99992515097137}, {"input": [-33.5, -23.5], "expected": -23.499954601100782}, {"input": [-33.5, -23.0], "expected": -22.999972463929772}, {"input": [-33.5, -22.5], "expected": -22.499983298438682}, {"input": [-33.5, -22.0], "expected": -21.99998986995771}, {"input": [-33.5, -21.5], "expected": -21.499993855806522}, {"input": [-33.5, -21.0], "expected": -20.999996273353773}, {"input": [-33.5, -20.5], "expected": -20.499997739673148}, {"input": [-33.5, -20.0], "expected": -19.999998629041855}, {"input": [-33.5, -19.5], "expected": -19.499999168471625}, {"input": [-33.5, -19.0], "expected": -18.999999495652464}, {"input": [-33.5, -18.5], "expected": -18.499999694097728}, {"input": [-33.5, -18.0], "expected": -17.99999981446088}, {"input": [-33.5, -17.5], "expected": -17.49999988746483}, {"input": [-33.5, -17.0], "expected": -16.999999931743968}, {"input": [-33.5, -16.5], "expected": -16.499999958600625}, {"input": [-33.5, -16.0], "expected": -15.99999997489001}, {"input": [-33.5, -15.5], "expected": -15.499999984770021}, {"input": [-33.5, -15.0], "expected": -14.99999999076255}, {"input": [-33.5, -14.5], "expected": -14.499999994397204}, {"input": [-33.5, -14.0], "expected": -13.999999996601732}, {"input": [-33.5, -13.5], "expected": -13.499999997938847}, {"input": [-33.5, -13.0], "expected": -12.999999998749848}, {"input": [-33.5, -12.5], "expected": -12.499999999241744}, {"input": [-33.5, -12.0], "expected": -11.999999999540094}, {"input": [-33.5, -11.5], "expected": -11.499999999721053}, {"input": [-33.5, -11.0], "expected": -10.999999999830811}, {"input": [-33.5, -10.5], "expected": -10.499999999897382}, {"input": [-33.5, -10.0], "expected": -9.999999999937758}, {"input": [-33.5, -9.5], "expected": -9.499999999962249}, {"input": [-33.5, -9.0], "expected": -8.999999999977103}, {"input": [-33.5, -8.5], "expected": -8.499999999986112}, {"input": [-33.5, -8.0], "expected": -7.9999999999915765}, {"input": [-33.5, -7.5], "expected": -7.499999999994891}, {"input": [-33.5, -7.0], "expected": -6.999999999996901}, {"input": [-33.5, -6.5], "expected": -6.499999999998121}, {"input": [-33.5, -6.0], "expected": -5.99999999999886}, {"input": [-33.5, -5.5], "expected": -5.499999999999309}, {"input": [-33.5, -5.0], "expected": -4.999999999999581}, {"input": [-33.5, -4.5], "expected": -4.499999999999746}, {"input": [-33.5, -4.0], "expected": -3.999999999999846}, {"input": [-33.5, -3.5], "expected": -3.4999999999999063}, {"input": [-33.5, -3.0], "expected": -2.999999999999943}, {"input": [-33.5, -2.5], "expected": -2.4999999999999654}, {"input": [-33.5, -2.0], "expected": -1.9999999999999791}, {"input": [-33.5, -1.5], "expected": -1.4999999999999873}, {"input": [-33.5, -1.0], "expected": -0.9999999999999923}, {"input": [-33.5, -0.5], "expected": -0.49999999999999534}, {"input": [-33.5, 0.0], "expected": 2.825757287115607e-15}, {"input": [-33.5, 0.5], "expected": 0.5000000000000017}, {"input": [-33.5, 1.0], "expected": 1.000000000000001}, {"input": [-33.5, 1.5], "expected": 1.5000000000000007}, {"input": [-33.5, 2.0], "expected": 2.0000000000000004}, {"input": [-33.5, 2.5], "expected": 2.5000000000000004}, {"input": [-33.5, 3.0], "expected": 3.0}, {"input": [-33.5, 3.5], "expected": 3.5}, {"input": [-33.5, 4.0], "expected": 4.0}, {"input": [-33.5, 4.5], "expected": 4.5}, {"input": [-33.5, 5.0], "expected": 5.0}, {"input": [-33.5, 5.5], "expected": 5.5}, {"input": [-33.5, 6.0], "expected": 6.0}, {"input": [-33.5, 6.5], "expected": 6.5}, {"input": [-33.5, 7.0], "expected": 7.0}, {"input": [-33.5, 7.5], "expected": 7.5}, {"input": [-33.5, 8.0], "expected": 8.0}, {"input": [-33.5, 8.5], "expected": 8.5}, {"input": [-33.5, 9.0], "expected": 9.0}, {"input": [-33.5, 9.5], "expected": 9.5}, {"input": [-33.5, 10.0], "expected": 10.0}, {"input": [-33.5, 10.5], "expected": 10.5}, {"input": [-33.5, 11.0], "expected": 11.0}, {"input": [-33.5, 11.5], "expected": 11.5}, {"input": [-33.5, 12.0], "expected": 12.0}, {"input": [-33.5, 12.5], "expected": 12.5}, {"input": [-33.5, 13.0], "expected": 13.0}, {"input": [-33.5, 13.5], "expected": 13.5}, {"input": [-33.5, 14.0], "expected": 14.0}, {"input": [-33.5, 14.5], "expected": 14.5}, {"input": [-33.5, 15.0], "expected": 15.0}, {"input": [-33.5, 15.5], "expected": 15.5}, {"input": [-33.5, 16.0], "expected": 16.0}, {"input": [-33.5, 16.5], "expected": 16.5}, {"input": [-33.5, 17.0], "expected": 17.0}, {"input": [-33.5, 17.5], "expected": 17.5}, {"input": [-33.5, 18.0], "expected": 18.0}, {"input": [-33.5, 18.5], "expected": 18.5}, {"input": [-33.5, 19.0], "expected": 19.0}, {"input": [-33.5, 19.5], "expected": 19.5}, {"input": [-33.5, 20.0], "expected": 20.0}, {"input": [-33.5, 20.5], "expected": 20.5}, {"input": [-33.5, 21.0], "expected": 21.0}, {"input": [-33.5, 21.5], "expected": 21.5}, {"input": [-33.5, 22.0], "expected": 22.0}, {"input": [-33.5, 22.5], "expected": 22.5}, {"input": [-33.5, 23.0], "expected": 23.0}, {"input": [-33.5, 23.5], "expected": 23.5}, {"input": [-33.5, 24.0], "expected": 24.0}, {"input": [-33.5, 24.5], "expected": 24.5}, {"input": [-33.5, 25.0], "expected": 25.0}, {"input": [-33.5, 25.5], "expected": 25.5}, {"input": [-33.5, 26.0], "expected": 26.0}, {"input": [-33.5, 26.5], "expected": 26.5}, {"input": [-33.5, 27.0], "expected": 27.0}, {"input": [-33.5, 27.5], "expected": 27.5}, {"input": [-33.5, 28.0], "expected": 28.0}, {"input": [-33.5, 28.5], "expected": 28.5}, {"input": [-33.5, 29.0], "expected": 29.0}, {"input": [-33.5, 29.5], "expected": 29.5}, {"input": [-33.5, 30.0], "expected": 30.0}, {"input": [-33.5, 30.5], "expected": 30.5}, {"input": [-33.5, 31.0], "expected": 31.0}, {"input": [-33.5, 31.5], "expected": 31.5}, {"input": [-33.5, 32.0], "expected": 32.0}, {"input": [-33.5, 32.5], "expected": 32.5}, {"input": [-33.5, 33.0], "expected": 33.0}, {"input": [-33.5, 33.5], "expected": 33.5}, {"input": [-33.5, 34.0], "expected": 34.0}, {"input": [-33.5, 34.5], "expected": 34.5}, {"input": [-33.5, 35.0], "expected": 35.0}, {"input": [-33.5, 35.5], "expected": 35.5}, {"input": [-33.5, 36.0], "expected": 36.0}, {"input": [-33.5, 36.5], "expected": 36.5}, {"input": [-33.5, 37.0], "expected": 37.0}, {"input": [-33.5, 37.5], "expected": 37.5}, {"input": [-33.5, 38.0], "expected": 38.0}, {"input": [-33.5, 38.5], "expected": 38.5}, {"input": [-33.5, 39.0], "expected": 39.0}, {"input": [-33.5, 39.5], "expected": 39.5}, {"input": [-33.5, 40.0], "expected": 40.0}, {"input": [-33.5, 40.5], "expected": 40.5}, {"input": [-33.5, 41.0], "expected": 41.0}, {"input": [-33.5, 41.5], "expected": 41.5}, {"input": [-33.5, 42.0], "expected": 42.0}, {"input": [-33.5, 42.5], "expected": 42.5}, {"input": [-33.5, 43.0], "expected": 43.0}, {"input": [-33.5, 43.5], "expected": 43.5}, {"input": [-33.5, 44.0], "expected": 44.0}, {"input": [-33.5, 44.5], "expected": 44.5}, {"input": [-33.5, 45.0], "expected": 45.0}, {"input": [-33.5, 45.5], "expected": 45.5}, {"input": [-33.5, 46.0], "expected": 46.0}, {"input": [-33.5, 46.5], "expected": 46.5}, {"input": [-33.5, 47.0], "expected": 47.0}, {"input": [-33.5, 47.5], "expected": 47.5}, {"input": [-33.5, 48.0], "expected": 48.0}, {"input": [-33.5, 48.5], "expected": 48.5}, {"input": [-33.5, 49.0], "expected": 49.0}, {"input": [-33.5, 49.5], "expected": 49.5}, {"input": [-33.5, 50.0], "expected": 50.0}, {"input": [-33.5, 50.5], "expected": 50.5}, {"input": [-33.5, 51.0], "expected": 51.0}, {"input": [-33.5, 51.5], "expected": 51.5}, {"input": [-33.5, 52.0], "expected": 52.0}, {"input": [-33.5, 52.5], "expected": 52.5}, {"input": [-33.5, 53.0], "expected": 53.0}, {"input": [-33.5, 53.5], "expected": 53.5}, {"input": [-33.5, 54.0], "expected": 54.0}, {"input": [-33.5, 54.5], "expected": 54.5}, {"input": [-33.5, 55.0], "expected": 55.0}, {"input": [-33.5, 55.5], "expected": 55.5}, {"input": [-33.5, 56.0], "expected": 56.0}, {"input": [-33.5, 56.5], "expected": 56.5}, {"input": [-33.5, 57.0], "expected": 57.0}, {"input": [-33.5, 57.5], "expected": 57.5}, {"input": [-33.5, 58.0], "expected": 58.0}, {"input": [-33.5, 58.5], "expected": 58.5}, {"input": [-33.5, 59.0], "expected": 59.0}, {"input": [-33.5, 59.5], "expected": 59.5}, {"input": [-33.5, 60.0], "expected": 60.0}, {"input": [-33.5, 60.5], "expected": 60.5}, {"input": [-33.5, 61.0], "expected": 61.0}, {"input": [-33.5, 61.5], "expected": 61.5}, {"input": [-33.5, 62.0], "expected": 62.0}, {"input": [-33.5, 62.5], "expected": 62.5}, {"input": [-33.5, 63.0], "expected": 63.0}, {"input": [-33.5, 63.5], "expected": 63.5}, {"input": [-33.5, 64.0], "expected": 64.0}, {"input": [-33.5, 64.5], "expected": 64.5}, {"input": [-33.5, 65.0], "expected": 65.0}, {"input": [-33.5, 65.5], "expected": 65.5}, {"input": [-33.5, 66.0], "expected": 66.0}, {"input": [-33.5, 66.5], "expected": 66.5}, {"input": [-33.5, 67.0], "expected": 67.0}, {"input": [-33.5, 67.5], "expected": 67.5}, {"input": [-33.5, 68.0], "expected": 68.0}, {"input": [-33.5, 68.5], "expected": 68.5}, {"input": [-33.5, 69.0], "expected": 69.0}, {"input": [-33.5, 69.5], "expected": 69.5}, {"input": [-33.5, 70.0], "expected": 70.0}, {"input": [-33.5, 70.5], "expected": 70.5}, {"input": [-33.5, 71.0], "expected": 71.0}, {"input": [-33.5, 71.5], "expected": 71.5}, {"input": [-33.5, 72.0], "expected": 72.0}, {"input": [-33.5, 72.5], "expected": 72.5}, {"input": [-33.5, 73.0], "expected": 73.0}, {"input": [-33.5, 73.5], "expected": 73.5}, {"input": [-33.5, 74.0], "expected": 74.0}, {"input": [-33.5, 74.5], "expected": 74.5}, {"input": [-33.5, 75.0], "expected": 75.0}, {"input": [-33.5, 75.5], "expected": 75.5}, {"input": [-33.5, 76.0], "expected": 76.0}, {"input": [-33.5, 76.5], "expected": 76.5}, {"input": [-33.5, 77.0], "expected": 77.0}, {"input": [-33.5, 77.5], "expected": 77.5}, {"input": [-33.5, 78.0], "expected": 78.0}, {"input": [-33.5, 78.5], "expected": 78.5}, {"input": [-33.5, 79.0], "expected": 79.0}, {"input": [-33.5, 79.5], "expected": 79.5}, {"input": [-33.5, 80.0], "expected": 80.0}, {"input": [-33.5, 80.5], "expected": 80.5}, {"input": [-33.5, 81.0], "expected": 81.0}, {"input": [-33.5, 81.5], "expected": 81.5}, {"input": [-33.5, 82.0], "expected": 82.0}, {"input": [-33.5, 82.5], "expected": 82.5}, {"input": [-33.5, 83.0], "expected": 83.0}, {"input": [-33.5, 83.5], "expected": 83.5}, {"input": [-33.5, 84.0], "expected": 84.0}, {"input": [-33.5, 84.5], "expected": 84.5}, {"input": [-33.5, 85.0], "expected": 85.0}, {"input": [-33.5, 85.5], "expected": 85.5}, {"input": [-33.5, 86.0], "expected": 86.0}, {"input": [-33.5, 86.5], "expected": 86.5}, {"input": [-33.5, 87.0], "expected": 87.0}, {"input": [-33.5, 87.5], "expected": 87.5}, {"input": [-33.5, 88.0], "expected": 88.0}, {"input": [-33.5, 88.5], "expected": 88.5}, {"input": [-33.5, 89.0], "expected": 89.0}, {"input": [-33.5, 89.5], "expected": 89.5}, {"input": [-33.5, 90.0], "expected": 90.0}, {"input": [-33.5, 90.5], "expected": 90.5}, {"input": [-33.5, 91.0], "expected": 91.0}, {"input": [-33.5, 91.5], "expected": 91.5}, {"input": [-33.5, 92.0], "expected": 92.0}, {"input": [-33.5, 92.5], "expected": 92.5}, {"input": [-33.5, 93.0], "expected": 93.0}, {"input": [-33.5, 93.5], "expected": 93.5}, {"input": [-33.5, 94.0], "expected": 94.0}, {"input": [-33.5, 94.5], "expected": 94.5}, {"input": [-33.5, 95.0], "expected": 95.0}, {"input": [-33.5, 95.5], "expected": 95.5}, {"input": [-33.5, 96.0], "expected": 96.0}, {"input": [-33.5, 96.5], "expected": 96.5}, {"input": [-33.5, 97.0], "expected": 97.0}, {"input": [-33.5, 97.5], "expected": 97.5}, {"input": [-33.5, 98.0], "expected": 98.0}, {"input": [-33.5, 98.5], "expected": 98.5}, {"input": [-33.5, 99.0], "expected": 99.0}, {"input": [-33.5, 99.5], "expected": 99.5}, {"input": [-33.0, -100.0], "expected": -33.0}, {"input": [-33.0, -99.5], "expected": -33.0}, {"input": [-33.0, -99.0], "expected": -33.0}, {"input": [-33.0, -98.5], "expected": -33.0}, {"input": [-33.0, -98.0], "expected": -33.0}, {"input": [-33.0, -97.5], "expected": -33.0}, {"input": [-33.0, -97.0], "expected": -33.0}, {"input": [-33.0, -96.5], "expected": -33.0}, {"input": [-33.0, -96.0], "expected": -33.0}, {"input": [-33.0, -95.5], "expected": -33.0}, {"input": [-33.0, -95.0], "expected": -33.0}, {"input": [-33.0, -94.5], "expected": -33.0}, {"input": [-33.0, -94.0], "expected": -33.0}, {"input": [-33.0, -93.5], "expected": -33.0}, {"input": [-33.0, -93.0], "expected": -33.0}, {"input": [-33.0, -92.5], "expected": -33.0}, {"input": [-33.0, -92.0], "expected": -33.0}, {"input": [-33.0, -91.5], "expected": -33.0}, {"input": [-33.0, -91.0], "expected": -33.0}, {"input": [-33.0, -90.5], "expected": -33.0}, {"input": [-33.0, -90.0], "expected": -33.0}, {"input": [-33.0, -89.5], "expected": -33.0}, {"input": [-33.0, -89.0], "expected": -33.0}, {"input": [-33.0, -88.5], "expected": -33.0}, {"input": [-33.0, -88.0], "expected": -33.0}, {"input": [-33.0, -87.5], "expected": -33.0}, {"input": [-33.0, -87.0], "expected": -33.0}, {"input": [-33.0, -86.5], "expected": -33.0}, {"input": [-33.0, -86.0], "expected": -33.0}, {"input": [-33.0, -85.5], "expected": -33.0}, {"input": [-33.0, -85.0], "expected": -33.0}, {"input": [-33.0, -84.5], "expected": -33.0}, {"input": [-33.0, -84.0], "expected": -33.0}, {"input": [-33.0, -83.5], "expected": -33.0}, {"input": [-33.0, -83.0], "expected": -33.0}, {"input": [-33.0, -82.5], "expected": -33.0}, {"input": [-33.0, -82.0], "expected": -33.0}, {"input": [-33.0, -81.5], "expected": -33.0}, {"input": [-33.0, -81.0], "expected": -33.0}, {"input": [-33.0, -80.5], "expected": -33.0}, {"input": [-33.0, -80.0], "expected": -33.0}, {"input": [-33.0, -79.5], "expected": -33.0}, {"input": [-33.0, -79.0], "expected": -33.0}, {"input": [-33.0, -78.5], "expected": -33.0}, {"input": [-33.0, -78.0], "expected": -33.0}, {"input": [-33.0, -77.5], "expected": -33.0}, {"input": [-33.0, -77.0], "expected": -33.0}, {"input": [-33.0, -76.5], "expected": -33.0}, {"input": [-33.0, -76.0], "expected": -33.0}, {"input": [-33.0, -75.5], "expected": -33.0}, {"input": [-33.0, -75.0], "expected": -33.0}, {"input": [-33.0, -74.5], "expected": -33.0}, {"input": [-33.0, -74.0], "expected": -33.0}, {"input": [-33.0, -73.5], "expected": -33.0}, {"input": [-33.0, -73.0], "expected": -33.0}, {"input": [-33.0, -72.5], "expected": -33.0}, {"input": [-33.0, -72.0], "expected": -33.0}, {"input": [-33.0, -71.5], "expected": -33.0}, {"input": [-33.0, -71.0], "expected": -33.0}, {"input": [-33.0, -70.5], "expected": -33.0}, {"input": [-33.0, -70.0], "expected": -33.0}, {"input": [-33.0, -69.5], "expected": -33.0}, {"input": [-33.0, -69.0], "expected": -33.0}, {"input": [-33.0, -68.5], "expected": -33.0}, {"input": [-33.0, -68.0], "expected": -33.0}, {"input": [-33.0, -67.5], "expected": -33.0}, {"input": [-33.0, -67.0], "expected": -33.0}, {"input": [-33.0, -66.5], "expected": -33.0}, {"input": [-33.0, -66.0], "expected": -32.99999999999999}, {"input": [-33.0, -65.5], "expected": -32.99999999999999}, {"input": [-33.0, -65.0], "expected": -32.999999999999986}, {"input": [-33.0, -64.5], "expected": -32.99999999999998}, {"input": [-33.0, -64.0], "expected": -32.999999999999964}, {"input": [-33.0, -63.5], "expected": -32.99999999999994}, {"input": [-33.0, -63.0], "expected": -32.99999999999991}, {"input": [-33.0, -62.5], "expected": -32.999999999999844}, {"input": [-33.0, -62.0], "expected": -32.999999999999744}, {"input": [-33.0, -61.5], "expected": -32.99999999999958}, {"input": [-33.0, -61.0], "expected": -32.99999999999931}, {"input": [-33.0, -60.5], "expected": -32.99999999999886}, {"input": [-33.0, -60.0], "expected": -32.99999999999812}, {"input": [-33.0, -59.5], "expected": -32.9999999999969}, {"input": [-33.0, -59.0], "expected": -32.99999999999489}, {"input": [-33.0, -58.5], "expected": -32.99999999999158}, {"input": [-33.0, -58.0], "expected": -32.99999999998611}, {"input": [-33.0, -57.5], "expected": -32.9999999999771}, {"input": [-33.0, -57.0], "expected": -32.99999999996225}, {"input": [-33.0, -56.5], "expected": -32.99999999993776}, {"input": [-33.0, -56.0], "expected": -32.99999999989738}, {"input": [-33.0, -55.5], "expected": -32.99999999983081}, {"input": [-33.0, -55.0], "expected": -32.999999999721055}, {"input": [-33.0, -54.5], "expected": -32.999999999540094}, {"input": [-33.0, -54.0], "expected": -32.999999999241744}, {"input": [-33.0, -53.5], "expected": -32.99999999874985}, {"input": [-33.0, -53.0], "expected": -32.99999999793884}, {"input": [-33.0, -52.5], "expected": -32.99999999660173}, {"input": [-33.0, -52.0], "expected": -32.99999999439721}, {"input": [-33.0, -51.5], "expected": -32.999999990762554}, {"input": [-33.0, -51.0], "expected": -32.99999998477002}, {"input": [-33.0, -50.5], "expected": -32.99999997489001}, {"input": [-33.0, -50.0], "expected": -32.999999958600625}, {"input": [-33.0, -49.5], "expected": -32.99999993174397}, {"input": [-33.0, -49.0], "expected": -32.99999988746483}, {"input": [-33.0, -48.5], "expected": -32.99999981446088}, {"input": [-33.0, -48.0], "expected": -32.999999694097724}, {"input": [-33.0, -47.5], "expected": -32.99999949565247}, {"input": [-33.0, -47.0], "expected": -32.999999168471625}, {"input": [-33.0, -46.5], "expected": -32.999998629041855}, {"input": [-33.0, -46.0], "expected": -32.99999773967315}, {"input": [-33.0, -45.5], "expected": -32.99999627335377}, {"input": [-33.0, -45.0], "expected": -32.99999385580652}, {"input": [-33.0, -44.5], "expected": -32.99998986995771}, {"input": [-33.0, -44.0], "expected": -32.99998329843868}, {"input": [-33.0, -43.5], "expected": -32.99997246392977}, {"input": [-33.0, -43.0], "expected": -32.99995460110078}, {"input": [-33.0, -42.5], "expected": -32.99992515097137}, {"input": [-33.0, -42.0], "expected": -32.99987659781028}, {"input": [-33.0, -41.5], "expected": -32.99979655232787}, {"input": [-33.0, -41.0], "expected": -32.9996645936271}, {"input": [-33.0, -40.5], "expected": -32.99944706852464}, {"input": [-33.0, -40.0], "expected": -32.99908853354623}, {"input": [-33.0, -39.5], "expected": -32.99849768984024}, {"input": [-33.0, -39.0], "expected": -32.99752431486227}, {"input": [-33.0, -38.5], "expected": -32.99592155672943}, {"input": [-33.0, -38.0], "expected": -32.99328465151088}, {"input": [-33.0, -37.5], "expected": -32.9889522551514}, {"input": [-33.0, -37.0], "expected": -32.98185007208219}, {"input": [-33.0, -36.5], "expected": -32.97024958172738}, {"input": [-33.0, -36.0], "expected": -32.951412648426256}, {"input": [-33.0, -35.5], "expected": -32.92111026570745}, {"input": [-33.0, -35.0], "expected": -32.87307198895703}, {"input": [-33.0, -34.5], "expected": -32.79858672201725}, {"input": [-33.0, -34.0], "expected": -32.68673831248178}, {"input": [-33.0, -33.5], "expected": -32.52592301581989}, {"input": [-33.0, -33.0], "expected": -32.30685281944005}, {"input": [-33.0, -32.5], "expected": -32.02592301581989}, {"input": [-33.0, -32.0], "expected": -31.686738312481776}, {"input": [-33.0, -31.5], "expected": -31.298586722017248}, {"input": [-33.0, -31.0], "expected": -30.873071988957026}, {"input": [-33.0, -30.5], "expected": -30.42111026570745}, {"input": [-33.0, -30.0], "expected": -29.951412648426256}, {"input": [-33.0, -29.5], "expected": -29.47024958172738}, {"input": [-33.0, -29.0], "expected": -28.98185007208219}, {"input": [-33.0, -28.5], "expected": -28.488952255151407}, {"input": [-33.0, -28.0], "expected": -27.993284651510884}, {"input": [-33.0, -27.5], "expected": -27.495921556729428}, {"input": [-33.0, -27.0], "expected": -26.997524314862268}, {"input": [-33.0, -26.5], "expected": -26.498497689840246}, {"input": [-33.0, -26.0], "expected": -25.999088533546225}, {"input": [-33.0, -25.5], "expected": -25.49944706852464}, {"input": [-33.0, -25.0], "expected": -24.999664593627106}, {"input": [-33.0, -24.5], "expected": -24.499796552327872}, {"input": [-33.0, -24.0], "expected": -23.999876597810278}, {"input": [-33.0, -23.5], "expected": -23.49992515097137}, {"input": [-33.0, -23.0], "expected": -22.999954601100782}, {"input": [-33.0, -22.5], "expected": -22.499972463929772}, {"input": [-33.0, -22.0], "expected": -21.999983298438682}, {"input": [-33.0, -21.5], "expected": -21.49998986995771}, {"input": [-33.0, -21.0], "expected": -20.999993855806522}, {"input": [-33.0, -20.5], "expected": -20.499996273353773}, {"input": [-33.0, -20.0], "expected": -19.999997739673148}, {"input": [-33.0, -19.5], "expected": -19.499998629041855}, {"input": [-33.0, -19.0], "expected": -18.999999168471625}, {"input": [-33.0, -18.5], "expected": -18.499999495652464}, {"input": [-33.0, -18.0], "expected": -17.999999694097728}, {"input": [-33.0, -17.5], "expected": -17.49999981446088}, {"input": [-33.0, -17.0], "expected": -16.99999988746483}, {"input": [-33.0, -16.5], "expected": -16.499999931743968}, {"input": [-33.0, -16.0], "expected": -15.999999958600624}, {"input": [-33.0, -15.5], "expected": -15.49999997489001}, {"input": [-33.0, -15.0], "expected": -14.999999984770021}, {"input": [-33.0, -14.5], "expected": -14.49999999076255}, {"input": [-33.0, -14.0], "expected": -13.999999994397204}, {"input": [-33.0, -13.5], "expected": -13.499999996601732}, {"input": [-33.0, -13.0], "expected": -12.999999997938847}, {"input": [-33.0, -12.5], "expected": -12.499999998749848}, {"input": [-33.0, -12.0], "expected": -11.999999999241744}, {"input": [-33.0, -11.5], "expected": -11.499999999540094}, {"input": [-33.0, -11.0], "expected": -10.999999999721053}, {"input": [-33.0, -10.5], "expected": -10.499999999830811}, {"input": [-33.0, -10.0], "expected": -9.999999999897382}, {"input": [-33.0, -9.5], "expected": -9.499999999937758}, {"input": [-33.0, -9.0], "expected": -8.999999999962249}, {"input": [-33.0, -8.5], "expected": -8.499999999977103}, {"input": [-33.0, -8.0], "expected": -7.999999999986112}, {"input": [-33.0, -7.5], "expected": -7.4999999999915765}, {"input": [-33.0, -7.0], "expected": -6.999999999994891}, {"input": [-33.0, -6.5], "expected": -6.499999999996901}, {"input": [-33.0, -6.0], "expected": -5.999999999998121}, {"input": [-33.0, -5.5], "expected": -5.49999999999886}, {"input": [-33.0, -5.0], "expected": -4.999999999999309}, {"input": [-33.0, -4.5], "expected": -4.499999999999581}, {"input": [-33.0, -4.0], "expected": -3.9999999999997455}, {"input": [-33.0, -3.5], "expected": -3.499999999999846}, {"input": [-33.0, -3.0], "expected": -2.9999999999999063}, {"input": [-33.0, -2.5], "expected": -2.499999999999943}, {"input": [-33.0, -2.0], "expected": -1.9999999999999656}, {"input": [-33.0, -1.5], "expected": -1.4999999999999791}, {"input": [-33.0, -1.0], "expected": -0.9999999999999873}, {"input": [-33.0, -0.5], "expected": -0.49999999999999234}, {"input": [-33.0, 0.0], "expected": 4.658886145103387e-15}, {"input": [-33.0, 0.5], "expected": 0.5000000000000028}, {"input": [-33.0, 1.0], "expected": 1.0000000000000018}, {"input": [-33.0, 1.5], "expected": 1.500000000000001}, {"input": [-33.0, 2.0], "expected": 2.0000000000000004}, {"input": [-33.0, 2.5], "expected": 2.5000000000000004}, {"input": [-33.0, 3.0], "expected": 3.0000000000000004}, {"input": [-33.0, 3.5], "expected": 3.5}, {"input": [-33.0, 4.0], "expected": 4.0}, {"input": [-33.0, 4.5], "expected": 4.5}, {"input": [-33.0, 5.0], "expected": 5.0}, {"input": [-33.0, 5.5], "expected": 5.5}, {"input": [-33.0, 6.0], "expected": 6.0}, {"input": [-33.0, 6.5], "expected": 6.5}, {"input": [-33.0, 7.0], "expected": 7.0}, {"input": [-33.0, 7.5], "expected": 7.5}, {"input": [-33.0, 8.0], "expected": 8.0}, {"input": [-33.0, 8.5], "expected": 8.5}, {"input": [-33.0, 9.0], "expected": 9.0}, {"input": [-33.0, 9.5], "expected": 9.5}, {"input": [-33.0, 10.0], "expected": 10.0}, {"input": [-33.0, 10.5], "expected": 10.5}, {"input": [-33.0, 11.0], "expected": 11.0}, {"input": [-33.0, 11.5], "expected": 11.5}, {"input": [-33.0, 12.0], "expected": 12.0}, {"input": [-33.0, 12.5], "expected": 12.5}, {"input": [-33.0, 13.0], "expected": 13.0}, {"input": [-33.0, 13.5], "expected": 13.5}, {"input": [-33.0, 14.0], "expected": 14.0}, {"input": [-33.0, 14.5], "expected": 14.5}, {"input": [-33.0, 15.0], "expected": 15.0}, {"input": [-33.0, 15.5], "expected": 15.5}, {"input": [-33.0, 16.0], "expected": 16.0}, {"input": [-33.0, 16.5], "expected": 16.5}, {"input": [-33.0, 17.0], "expected": 17.0}, {"input": [-33.0, 17.5], "expected": 17.5}, {"input": [-33.0, 18.0], "expected": 18.0}, {"input": [-33.0, 18.5], "expected": 18.5}, {"input": [-33.0, 19.0], "expected": 19.0}, {"input": [-33.0, 19.5], "expected": 19.5}, {"input": [-33.0, 20.0], "expected": 20.0}, {"input": [-33.0, 20.5], "expected": 20.5}, {"input": [-33.0, 21.0], "expected": 21.0}, {"input": [-33.0, 21.5], "expected": 21.5}, {"input": [-33.0, 22.0], "expected": 22.0}, {"input": [-33.0, 22.5], "expected": 22.5}, {"input": [-33.0, 23.0], "expected": 23.0}, {"input": [-33.0, 23.5], "expected": 23.5}, {"input": [-33.0, 24.0], "expected": 24.0}, {"input": [-33.0, 24.5], "expected": 24.5}, {"input": [-33.0, 25.0], "expected": 25.0}, {"input": [-33.0, 25.5], "expected": 25.5}, {"input": [-33.0, 26.0], "expected": 26.0}, {"input": [-33.0, 26.5], "expected": 26.5}, {"input": [-33.0, 27.0], "expected": 27.0}, {"input": [-33.0, 27.5], "expected": 27.5}, {"input": [-33.0, 28.0], "expected": 28.0}, {"input": [-33.0, 28.5], "expected": 28.5}, {"input": [-33.0, 29.0], "expected": 29.0}, {"input": [-33.0, 29.5], "expected": 29.5}, {"input": [-33.0, 30.0], "expected": 30.0}, {"input": [-33.0, 30.5], "expected": 30.5}, {"input": [-33.0, 31.0], "expected": 31.0}, {"input": [-33.0, 31.5], "expected": 31.5}, {"input": [-33.0, 32.0], "expected": 32.0}, {"input": [-33.0, 32.5], "expected": 32.5}, {"input": [-33.0, 33.0], "expected": 33.0}, {"input": [-33.0, 33.5], "expected": 33.5}, {"input": [-33.0, 34.0], "expected": 34.0}, {"input": [-33.0, 34.5], "expected": 34.5}, {"input": [-33.0, 35.0], "expected": 35.0}, {"input": [-33.0, 35.5], "expected": 35.5}, {"input": [-33.0, 36.0], "expected": 36.0}, {"input": [-33.0, 36.5], "expected": 36.5}, {"input": [-33.0, 37.0], "expected": 37.0}, {"input": [-33.0, 37.5], "expected": 37.5}, {"input": [-33.0, 38.0], "expected": 38.0}, {"input": [-33.0, 38.5], "expected": 38.5}, {"input": [-33.0, 39.0], "expected": 39.0}, {"input": [-33.0, 39.5], "expected": 39.5}, {"input": [-33.0, 40.0], "expected": 40.0}, {"input": [-33.0, 40.5], "expected": 40.5}, {"input": [-33.0, 41.0], "expected": 41.0}, {"input": [-33.0, 41.5], "expected": 41.5}, {"input": [-33.0, 42.0], "expected": 42.0}, {"input": [-33.0, 42.5], "expected": 42.5}, {"input": [-33.0, 43.0], "expected": 43.0}, {"input": [-33.0, 43.5], "expected": 43.5}, {"input": [-33.0, 44.0], "expected": 44.0}, {"input": [-33.0, 44.5], "expected": 44.5}, {"input": [-33.0, 45.0], "expected": 45.0}, {"input": [-33.0, 45.5], "expected": 45.5}, {"input": [-33.0, 46.0], "expected": 46.0}, {"input": [-33.0, 46.5], "expected": 46.5}, {"input": [-33.0, 47.0], "expected": 47.0}, {"input": [-33.0, 47.5], "expected": 47.5}, {"input": [-33.0, 48.0], "expected": 48.0}, {"input": [-33.0, 48.5], "expected": 48.5}, {"input": [-33.0, 49.0], "expected": 49.0}, {"input": [-33.0, 49.5], "expected": 49.5}, {"input": [-33.0, 50.0], "expected": 50.0}, {"input": [-33.0, 50.5], "expected": 50.5}, {"input": [-33.0, 51.0], "expected": 51.0}, {"input": [-33.0, 51.5], "expected": 51.5}, {"input": [-33.0, 52.0], "expected": 52.0}, {"input": [-33.0, 52.5], "expected": 52.5}, {"input": [-33.0, 53.0], "expected": 53.0}, {"input": [-33.0, 53.5], "expected": 53.5}, {"input": [-33.0, 54.0], "expected": 54.0}, {"input": [-33.0, 54.5], "expected": 54.5}, {"input": [-33.0, 55.0], "expected": 55.0}, {"input": [-33.0, 55.5], "expected": 55.5}, {"input": [-33.0, 56.0], "expected": 56.0}, {"input": [-33.0, 56.5], "expected": 56.5}, {"input": [-33.0, 57.0], "expected": 57.0}, {"input": [-33.0, 57.5], "expected": 57.5}, {"input": [-33.0, 58.0], "expected": 58.0}, {"input": [-33.0, 58.5], "expected": 58.5}, {"input": [-33.0, 59.0], "expected": 59.0}, {"input": [-33.0, 59.5], "expected": 59.5}, {"input": [-33.0, 60.0], "expected": 60.0}, {"input": [-33.0, 60.5], "expected": 60.5}, {"input": [-33.0, 61.0], "expected": 61.0}, {"input": [-33.0, 61.5], "expected": 61.5}, {"input": [-33.0, 62.0], "expected": 62.0}, {"input": [-33.0, 62.5], "expected": 62.5}, {"input": [-33.0, 63.0], "expected": 63.0}, {"input": [-33.0, 63.5], "expected": 63.5}, {"input": [-33.0, 64.0], "expected": 64.0}, {"input": [-33.0, 64.5], "expected": 64.5}, {"input": [-33.0, 65.0], "expected": 65.0}, {"input": [-33.0, 65.5], "expected": 65.5}, {"input": [-33.0, 66.0], "expected": 66.0}, {"input": [-33.0, 66.5], "expected": 66.5}, {"input": [-33.0, 67.0], "expected": 67.0}, {"input": [-33.0, 67.5], "expected": 67.5}, {"input": [-33.0, 68.0], "expected": 68.0}, {"input": [-33.0, 68.5], "expected": 68.5}, {"input": [-33.0, 69.0], "expected": 69.0}, {"input": [-33.0, 69.5], "expected": 69.5}, {"input": [-33.0, 70.0], "expected": 70.0}, {"input": [-33.0, 70.5], "expected": 70.5}, {"input": [-33.0, 71.0], "expected": 71.0}, {"input": [-33.0, 71.5], "expected": 71.5}, {"input": [-33.0, 72.0], "expected": 72.0}, {"input": [-33.0, 72.5], "expected": 72.5}, {"input": [-33.0, 73.0], "expected": 73.0}, {"input": [-33.0, 73.5], "expected": 73.5}, {"input": [-33.0, 74.0], "expected": 74.0}, {"input": [-33.0, 74.5], "expected": 74.5}, {"input": [-33.0, 75.0], "expected": 75.0}, {"input": [-33.0, 75.5], "expected": 75.5}, {"input": [-33.0, 76.0], "expected": 76.0}, {"input": [-33.0, 76.5], "expected": 76.5}, {"input": [-33.0, 77.0], "expected": 77.0}, {"input": [-33.0, 77.5], "expected": 77.5}, {"input": [-33.0, 78.0], "expected": 78.0}, {"input": [-33.0, 78.5], "expected": 78.5}, {"input": [-33.0, 79.0], "expected": 79.0}, {"input": [-33.0, 79.5], "expected": 79.5}, {"input": [-33.0, 80.0], "expected": 80.0}, {"input": [-33.0, 80.5], "expected": 80.5}, {"input": [-33.0, 81.0], "expected": 81.0}, {"input": [-33.0, 81.5], "expected": 81.5}, {"input": [-33.0, 82.0], "expected": 82.0}, {"input": [-33.0, 82.5], "expected": 82.5}, {"input": [-33.0, 83.0], "expected": 83.0}, {"input": [-33.0, 83.5], "expected": 83.5}, {"input": [-33.0, 84.0], "expected": 84.0}, {"input": [-33.0, 84.5], "expected": 84.5}, {"input": [-33.0, 85.0], "expected": 85.0}, {"input": [-33.0, 85.5], "expected": 85.5}, {"input": [-33.0, 86.0], "expected": 86.0}, {"input": [-33.0, 86.5], "expected": 86.5}, {"input": [-33.0, 87.0], "expected": 87.0}, {"input": [-33.0, 87.5], "expected": 87.5}, {"input": [-33.0, 88.0], "expected": 88.0}, {"input": [-33.0, 88.5], "expected": 88.5}, {"input": [-33.0, 89.0], "expected": 89.0}, {"input": [-33.0, 89.5], "expected": 89.5}, {"input": [-33.0, 90.0], "expected": 90.0}, {"input": [-33.0, 90.5], "expected": 90.5}, {"input": [-33.0, 91.0], "expected": 91.0}, {"input": [-33.0, 91.5], "expected": 91.5}, {"input": [-33.0, 92.0], "expected": 92.0}, {"input": [-33.0, 92.5], "expected": 92.5}, {"input": [-33.0, 93.0], "expected": 93.0}, {"input": [-33.0, 93.5], "expected": 93.5}, {"input": [-33.0, 94.0], "expected": 94.0}, {"input": [-33.0, 94.5], "expected": 94.5}, {"input": [-33.0, 95.0], "expected": 95.0}, {"input": [-33.0, 95.5], "expected": 95.5}, {"input": [-33.0, 96.0], "expected": 96.0}, {"input": [-33.0, 96.5], "expected": 96.5}, {"input": [-33.0, 97.0], "expected": 97.0}, {"input": [-33.0, 97.5], "expected": 97.5}, {"input": [-33.0, 98.0], "expected": 98.0}, {"input": [-33.0, 98.5], "expected": 98.5}, {"input": [-33.0, 99.0], "expected": 99.0}, {"input": [-33.0, 99.5], "expected": 99.5}, {"input": [-32.5, -100.0], "expected": -32.5}, {"input": [-32.5, -99.5], "expected": -32.5}, {"input": [-32.5, -99.0], "expected": -32.5}, {"input": [-32.5, -98.5], "expected": -32.5}, {"input": [-32.5, -98.0], "expected": -32.5}, {"input": [-32.5, -97.5], "expected": -32.5}, {"input": [-32.5, -97.0], "expected": -32.5}, {"input": [-32.5, -96.5], "expected": -32.5}, {"input": [-32.5, -96.0], "expected": -32.5}, {"input": [-32.5, -95.5], "expected": -32.5}, {"input": [-32.5, -95.0], "expected": -32.5}, {"input": [-32.5, -94.5], "expected": -32.5}, {"input": [-32.5, -94.0], "expected": -32.5}, {"input": [-32.5, -93.5], "expected": -32.5}, {"input": [-32.5, -93.0], "expected": -32.5}, {"input": [-32.5, -92.5], "expected": -32.5}, {"input": [-32.5, -92.0], "expected": -32.5}, {"input": [-32.5, -91.5], "expected": -32.5}, {"input": [-32.5, -91.0], "expected": -32.5}, {"input": [-32.5, -90.5], "expected": -32.5}, {"input": [-32.5, -90.0], "expected": -32.5}, {"input": [-32.5, -89.5], "expected": -32.5}, {"input": [-32.5, -89.0], "expected": -32.5}, {"input": [-32.5, -88.5], "expected": -32.5}, {"input": [-32.5, -88.0], "expected": -32.5}, {"input": [-32.5, -87.5], "expected": -32.5}, {"input": [-32.5, -87.0], "expected": -32.5}, {"input": [-32.5, -86.5], "expected": -32.5}, {"input": [-32.5, -86.0], "expected": -32.5}, {"input": [-32.5, -85.5], "expected": -32.5}, {"input": [-32.5, -85.0], "expected": -32.5}, {"input": [-32.5, -84.5], "expected": -32.5}, {"input": [-32.5, -84.0], "expected": -32.5}, {"input": [-32.5, -83.5], "expected": -32.5}, {"input": [-32.5, -83.0], "expected": -32.5}, {"input": [-32.5, -82.5], "expected": -32.5}, {"input": [-32.5, -82.0], "expected": -32.5}, {"input": [-32.5, -81.5], "expected": -32.5}, {"input": [-32.5, -81.0], "expected": -32.5}, {"input": [-32.5, -80.5], "expected": -32.5}, {"input": [-32.5, -80.0], "expected": -32.5}, {"input": [-32.5, -79.5], "expected": -32.5}, {"input": [-32.5, -79.0], "expected": -32.5}, {"input": [-32.5, -78.5], "expected": -32.5}, {"input": [-32.5, -78.0], "expected": -32.5}, {"input": [-32.5, -77.5], "expected": -32.5}, {"input": [-32.5, -77.0], "expected": -32.5}, {"input": [-32.5, -76.5], "expected": -32.5}, {"input": [-32.5, -76.0], "expected": -32.5}, {"input": [-32.5, -75.5], "expected": -32.5}, {"input": [-32.5, -75.0], "expected": -32.5}, {"input": [-32.5, -74.5], "expected": -32.5}, {"input": [-32.5, -74.0], "expected": -32.5}, {"input": [-32.5, -73.5], "expected": -32.5}, {"input": [-32.5, -73.0], "expected": -32.5}, {"input": [-32.5, -72.5], "expected": -32.5}, {"input": [-32.5, -72.0], "expected": -32.5}, {"input": [-32.5, -71.5], "expected": -32.5}, {"input": [-32.5, -71.0], "expected": -32.5}, {"input": [-32.5, -70.5], "expected": -32.5}, {"input": [-32.5, -70.0], "expected": -32.5}, {"input": [-32.5, -69.5], "expected": -32.5}, {"input": [-32.5, -69.0], "expected": -32.5}, {"input": [-32.5, -68.5], "expected": -32.5}, {"input": [-32.5, -68.0], "expected": -32.5}, {"input": [-32.5, -67.5], "expected": -32.5}, {"input": [-32.5, -67.0], "expected": -32.5}, {"input": [-32.5, -66.5], "expected": -32.5}, {"input": [-32.5, -66.0], "expected": -32.5}, {"input": [-32.5, -65.5], "expected": -32.49999999999999}, {"input": [-32.5, -65.0], "expected": -32.49999999999999}, {"input": [-32.5, -64.5], "expected": -32.499999999999986}, {"input": [-32.5, -64.0], "expected": -32.49999999999998}, {"input": [-32.5, -63.5], "expected": -32.499999999999964}, {"input": [-32.5, -63.0], "expected": -32.49999999999994}, {"input": [-32.5, -62.5], "expected": -32.49999999999991}, {"input": [-32.5, -62.0], "expected": -32.499999999999844}, {"input": [-32.5, -61.5], "expected": -32.499999999999744}, {"input": [-32.5, -61.0], "expected": -32.49999999999958}, {"input": [-32.5, -60.5], "expected": -32.49999999999931}, {"input": [-32.5, -60.0], "expected": -32.49999999999886}, {"input": [-32.5, -59.5], "expected": -32.49999999999812}, {"input": [-32.5, -59.0], "expected": -32.4999999999969}, {"input": [-32.5, -58.5], "expected": -32.49999999999489}, {"input": [-32.5, -58.0], "expected": -32.49999999999158}, {"input": [-32.5, -57.5], "expected": -32.49999999998611}, {"input": [-32.5, -57.0], "expected": -32.4999999999771}, {"input": [-32.5, -56.5], "expected": -32.49999999996225}, {"input": [-32.5, -56.0], "expected": -32.49999999993776}, {"input": [-32.5, -55.5], "expected": -32.49999999989738}, {"input": [-32.5, -55.0], "expected": -32.49999999983081}, {"input": [-32.5, -54.5], "expected": -32.499999999721055}, {"input": [-32.5, -54.0], "expected": -32.499999999540094}, {"input": [-32.5, -53.5], "expected": -32.499999999241744}, {"input": [-32.5, -53.0], "expected": -32.49999999874985}, {"input": [-32.5, -52.5], "expected": -32.49999999793884}, {"input": [-32.5, -52.0], "expected": -32.49999999660173}, {"input": [-32.5, -51.5], "expected": -32.49999999439721}, {"input": [-32.5, -51.0], "expected": -32.499999990762554}, {"input": [-32.5, -50.5], "expected": -32.49999998477002}, {"input": [-32.5, -50.0], "expected": -32.49999997489001}, {"input": [-32.5, -49.5], "expected": -32.499999958600625}, {"input": [-32.5, -49.0], "expected": -32.49999993174397}, {"input": [-32.5, -48.5], "expected": -32.49999988746483}, {"input": [-32.5, -48.0], "expected": -32.49999981446088}, {"input": [-32.5, -47.5], "expected": -32.499999694097724}, {"input": [-32.5, -47.0], "expected": -32.49999949565247}, {"input": [-32.5, -46.5], "expected": -32.499999168471625}, {"input": [-32.5, -46.0], "expected": -32.499998629041855}, {"input": [-32.5, -45.5], "expected": -32.49999773967315}, {"input": [-32.5, -45.0], "expected": -32.49999627335377}, {"input": [-32.5, -44.5], "expected": -32.49999385580652}, {"input": [-32.5, -44.0], "expected": -32.49998986995771}, {"input": [-32.5, -43.5], "expected": -32.49998329843868}, {"input": [-32.5, -43.0], "expected": -32.49997246392977}, {"input": [-32.5, -42.5], "expected": -32.49995460110078}, {"input": [-32.5, -42.0], "expected": -32.49992515097137}, {"input": [-32.5, -41.5], "expected": -32.49987659781028}, {"input": [-32.5, -41.0], "expected": -32.49979655232787}, {"input": [-32.5, -40.5], "expected": -32.4996645936271}, {"input": [-32.5, -40.0], "expected": -32.49944706852464}, {"input": [-32.5, -39.5], "expected": -32.49908853354623}, {"input": [-32.5, -39.0], "expected": -32.49849768984024}, {"input": [-32.5, -38.5], "expected": -32.49752431486227}, {"input": [-32.5, -38.0], "expected": -32.49592155672943}, {"input": [-32.5, -37.5], "expected": -32.49328465151088}, {"input": [-32.5, -37.0], "expected": -32.4889522551514}, {"input": [-32.5, -36.5], "expected": -32.48185007208219}, {"input": [-32.5, -36.0], "expected": -32.47024958172738}, {"input": [-32.5, -35.5], "expected": -32.451412648426256}, {"input": [-32.5, -35.0], "expected": -32.42111026570745}, {"input": [-32.5, -34.5], "expected": -32.37307198895703}, {"input": [-32.5, -34.0], "expected": -32.29858672201725}, {"input": [-32.5, -33.5], "expected": -32.18673831248178}, {"input": [-32.5, -33.0], "expected": -32.02592301581989}, {"input": [-32.5, -32.5], "expected": -31.806852819440056}, {"input": [-32.5, -32.0], "expected": -31.52592301581989}, {"input": [-32.5, -31.5], "expected": -31.186738312481776}, {"input": [-32.5, -31.0], "expected": -30.798586722017248}, {"input": [-32.5, -30.5], "expected": -30.373071988957026}, {"input": [-32.5, -30.0], "expected": -29.92111026570745}, {"input": [-32.5, -29.5], "expected": -29.451412648426256}, {"input": [-32.5, -29.0], "expected": -28.97024958172738}, {"input": [-32.5, -28.5], "expected": -28.48185007208219}, {"input": [-32.5, -28.0], "expected": -27.988952255151407}, {"input": [-32.5, -27.5], "expected": -27.493284651510884}, {"input": [-32.5, -27.0], "expected": -26.995921556729428}, {"input": [-32.5, -26.5], "expected": -26.497524314862268}, {"input": [-32.5, -26.0], "expected": -25.998497689840246}, {"input": [-32.5, -25.5], "expected": -25.499088533546225}, {"input": [-32.5, -25.0], "expected": -24.99944706852464}, {"input": [-32.5, -24.5], "expected": -24.499664593627106}, {"input": [-32.5, -24.0], "expected": -23.999796552327872}, {"input": [-32.5, -23.5], "expected": -23.499876597810278}, {"input": [-32.5, -23.0], "expected": -22.99992515097137}, {"input": [-32.5, -22.5], "expected": -22.499954601100782}, {"input": [-32.5, -22.0], "expected": -21.999972463929772}, {"input": [-32.5, -21.5], "expected": -21.499983298438682}, {"input": [-32.5, -21.0], "expected": -20.99998986995771}, {"input": [-32.5, -20.5], "expected": -20.499993855806522}, {"input": [-32.5, -20.0], "expected": -19.999996273353773}, {"input": [-32.5, -19.5], "expected": -19.499997739673148}, {"input": [-32.5, -19.0], "expected": -18.999998629041855}, {"input": [-32.5, -18.5], "expected": -18.499999168471625}, {"input": [-32.5, -18.0], "expected": -17.999999495652464}, {"input": [-32.5, -17.5], "expected": -17.499999694097728}, {"input": [-32.5, -17.0], "expected": -16.99999981446088}, {"input": [-32.5, -16.5], "expected": -16.49999988746483}, {"input": [-32.5, -16.0], "expected": -15.999999931743968}, {"input": [-32.5, -15.5], "expected": -15.499999958600624}, {"input": [-32.5, -15.0], "expected": -14.99999997489001}, {"input": [-32.5, -14.5], "expected": -14.499999984770021}, {"input": [-32.5, -14.0], "expected": -13.99999999076255}, {"input": [-32.5, -13.5], "expected": -13.499999994397204}, {"input": [-32.5, -13.0], "expected": -12.999999996601732}, {"input": [-32.5, -12.5], "expected": -12.499999997938847}, {"input": [-32.5, -12.0], "expected": -11.999999998749848}, {"input": [-32.5, -11.5], "expected": -11.499999999241744}, {"input": [-32.5, -11.0], "expected": -10.999999999540094}, {"input": [-32.5, -10.5], "expected": -10.499999999721053}, {"input": [-32.5, -10.0], "expected": -9.999999999830811}, {"input": [-32.5, -9.5], "expected": -9.499999999897382}, {"input": [-32.5, -9.0], "expected": -8.999999999937758}, {"input": [-32.5, -8.5], "expected": -8.499999999962249}, {"input": [-32.5, -8.0], "expected": -7.999999999977103}, {"input": [-32.5, -7.5], "expected": -7.499999999986112}, {"input": [-32.5, -7.0], "expected": -6.9999999999915765}, {"input": [-32.5, -6.5], "expected": -6.499999999994891}, {"input": [-32.5, -6.0], "expected": -5.999999999996901}, {"input": [-32.5, -5.5], "expected": -5.499999999998121}, {"input": [-32.5, -5.0], "expected": -4.99999999999886}, {"input": [-32.5, -4.5], "expected": -4.499999999999309}, {"input": [-32.5, -4.0], "expected": -3.999999999999581}, {"input": [-32.5, -3.5], "expected": -3.4999999999997455}, {"input": [-32.5, -3.0], "expected": -2.999999999999846}, {"input": [-32.5, -2.5], "expected": -2.4999999999999063}, {"input": [-32.5, -2.0], "expected": -1.9999999999999432}, {"input": [-32.5, -1.5], "expected": -1.4999999999999656}, {"input": [-32.5, -1.0], "expected": -0.9999999999999791}, {"input": [-32.5, -0.5], "expected": -0.49999999999998734}, {"input": [-32.5, 0.0], "expected": 7.681204685202065e-15}, {"input": [-32.5, 0.5], "expected": 0.5000000000000047}, {"input": [-32.5, 1.0], "expected": 1.0000000000000029}, {"input": [-32.5, 1.5], "expected": 1.5000000000000018}, {"input": [-32.5, 2.0], "expected": 2.000000000000001}, {"input": [-32.5, 2.5], "expected": 2.5000000000000004}, {"input": [-32.5, 3.0], "expected": 3.0000000000000004}, {"input": [-32.5, 3.5], "expected": 3.5000000000000004}, {"input": [-32.5, 4.0], "expected": 4.0}, {"input": [-32.5, 4.5], "expected": 4.5}, {"input": [-32.5, 5.0], "expected": 5.0}, {"input": [-32.5, 5.5], "expected": 5.5}, {"input": [-32.5, 6.0], "expected": 6.0}, {"input": [-32.5, 6.5], "expected": 6.5}, {"input": [-32.5, 7.0], "expected": 7.0}, {"input": [-32.5, 7.5], "expected": 7.5}, {"input": [-32.5, 8.0], "expected": 8.0}, {"input": [-32.5, 8.5], "expected": 8.5}, {"input": [-32.5, 9.0], "expected": 9.0}, {"input": [-32.5, 9.5], "expected": 9.5}, {"input": [-32.5, 10.0], "expected": 10.0}, {"input": [-32.5, 10.5], "expected": 10.5}, {"input": [-32.5, 11.0], "expected": 11.0}, {"input": [-32.5, 11.5], "expected": 11.5}, {"input": [-32.5, 12.0], "expected": 12.0}, {"input": [-32.5, 12.5], "expected": 12.5}, {"input": [-32.5, 13.0], "expected": 13.0}, {"input": [-32.5, 13.5], "expected": 13.5}, {"input": [-32.5, 14.0], "expected": 14.0}, {"input": [-32.5, 14.5], "expected": 14.5}, {"input": [-32.5, 15.0], "expected": 15.0}, {"input": [-32.5, 15.5], "expected": 15.5}, {"input": [-32.5, 16.0], "expected": 16.0}, {"input": [-32.5, 16.5], "expected": 16.5}, {"input": [-32.5, 17.0], "expected": 17.0}, {"input": [-32.5, 17.5], "expected": 17.5}, {"input": [-32.5, 18.0], "expected": 18.0}, {"input": [-32.5, 18.5], "expected": 18.5}, {"input": [-32.5, 19.0], "expected": 19.0}, {"input": [-32.5, 19.5], "expected": 19.5}, {"input": [-32.5, 20.0], "expected": 20.0}, {"input": [-32.5, 20.5], "expected": 20.5}, {"input": [-32.5, 21.0], "expected": 21.0}, {"input": [-32.5, 21.5], "expected": 21.5}, {"input": [-32.5, 22.0], "expected": 22.0}, {"input": [-32.5, 22.5], "expected": 22.5}, {"input": [-32.5, 23.0], "expected": 23.0}, {"input": [-32.5, 23.5], "expected": 23.5}, {"input": [-32.5, 24.0], "expected": 24.0}, {"input": [-32.5, 24.5], "expected": 24.5}, {"input": [-32.5, 25.0], "expected": 25.0}, {"input": [-32.5, 25.5], "expected": 25.5}, {"input": [-32.5, 26.0], "expected": 26.0}, {"input": [-32.5, 26.5], "expected": 26.5}, {"input": [-32.5, 27.0], "expected": 27.0}, {"input": [-32.5, 27.5], "expected": 27.5}, {"input": [-32.5, 28.0], "expected": 28.0}, {"input": [-32.5, 28.5], "expected": 28.5}, {"input": [-32.5, 29.0], "expected": 29.0}, {"input": [-32.5, 29.5], "expected": 29.5}, {"input": [-32.5, 30.0], "expected": 30.0}, {"input": [-32.5, 30.5], "expected": 30.5}, {"input": [-32.5, 31.0], "expected": 31.0}, {"input": [-32.5, 31.5], "expected": 31.5}, {"input": [-32.5, 32.0], "expected": 32.0}, {"input": [-32.5, 32.5], "expected": 32.5}, {"input": [-32.5, 33.0], "expected": 33.0}, {"input": [-32.5, 33.5], "expected": 33.5}, {"input": [-32.5, 34.0], "expected": 34.0}, {"input": [-32.5, 34.5], "expected": 34.5}, {"input": [-32.5, 35.0], "expected": 35.0}, {"input": [-32.5, 35.5], "expected": 35.5}, {"input": [-32.5, 36.0], "expected": 36.0}, {"input": [-32.5, 36.5], "expected": 36.5}, {"input": [-32.5, 37.0], "expected": 37.0}, {"input": [-32.5, 37.5], "expected": 37.5}, {"input": [-32.5, 38.0], "expected": 38.0}, {"input": [-32.5, 38.5], "expected": 38.5}, {"input": [-32.5, 39.0], "expected": 39.0}, {"input": [-32.5, 39.5], "expected": 39.5}, {"input": [-32.5, 40.0], "expected": 40.0}, {"input": [-32.5, 40.5], "expected": 40.5}, {"input": [-32.5, 41.0], "expected": 41.0}, {"input": [-32.5, 41.5], "expected": 41.5}, {"input": [-32.5, 42.0], "expected": 42.0}, {"input": [-32.5, 42.5], "expected": 42.5}, {"input": [-32.5, 43.0], "expected": 43.0}, {"input": [-32.5, 43.5], "expected": 43.5}, {"input": [-32.5, 44.0], "expected": 44.0}, {"input": [-32.5, 44.5], "expected": 44.5}, {"input": [-32.5, 45.0], "expected": 45.0}, {"input": [-32.5, 45.5], "expected": 45.5}, {"input": [-32.5, 46.0], "expected": 46.0}, {"input": [-32.5, 46.5], "expected": 46.5}, {"input": [-32.5, 47.0], "expected": 47.0}, {"input": [-32.5, 47.5], "expected": 47.5}, {"input": [-32.5, 48.0], "expected": 48.0}, {"input": [-32.5, 48.5], "expected": 48.5}, {"input": [-32.5, 49.0], "expected": 49.0}, {"input": [-32.5, 49.5], "expected": 49.5}, {"input": [-32.5, 50.0], "expected": 50.0}, {"input": [-32.5, 50.5], "expected": 50.5}, {"input": [-32.5, 51.0], "expected": 51.0}, {"input": [-32.5, 51.5], "expected": 51.5}, {"input": [-32.5, 52.0], "expected": 52.0}, {"input": [-32.5, 52.5], "expected": 52.5}, {"input": [-32.5, 53.0], "expected": 53.0}, {"input": [-32.5, 53.5], "expected": 53.5}, {"input": [-32.5, 54.0], "expected": 54.0}, {"input": [-32.5, 54.5], "expected": 54.5}, {"input": [-32.5, 55.0], "expected": 55.0}, {"input": [-32.5, 55.5], "expected": 55.5}, {"input": [-32.5, 56.0], "expected": 56.0}, {"input": [-32.5, 56.5], "expected": 56.5}, {"input": [-32.5, 57.0], "expected": 57.0}, {"input": [-32.5, 57.5], "expected": 57.5}, {"input": [-32.5, 58.0], "expected": 58.0}, {"input": [-32.5, 58.5], "expected": 58.5}, {"input": [-32.5, 59.0], "expected": 59.0}, {"input": [-32.5, 59.5], "expected": 59.5}, {"input": [-32.5, 60.0], "expected": 60.0}, {"input": [-32.5, 60.5], "expected": 60.5}, {"input": [-32.5, 61.0], "expected": 61.0}, {"input": [-32.5, 61.5], "expected": 61.5}, {"input": [-32.5, 62.0], "expected": 62.0}, {"input": [-32.5, 62.5], "expected": 62.5}, {"input": [-32.5, 63.0], "expected": 63.0}, {"input": [-32.5, 63.5], "expected": 63.5}, {"input": [-32.5, 64.0], "expected": 64.0}, {"input": [-32.5, 64.5], "expected": 64.5}, {"input": [-32.5, 65.0], "expected": 65.0}, {"input": [-32.5, 65.5], "expected": 65.5}, {"input": [-32.5, 66.0], "expected": 66.0}, {"input": [-32.5, 66.5], "expected": 66.5}, {"input": [-32.5, 67.0], "expected": 67.0}, {"input": [-32.5, 67.5], "expected": 67.5}, {"input": [-32.5, 68.0], "expected": 68.0}, {"input": [-32.5, 68.5], "expected": 68.5}, {"input": [-32.5, 69.0], "expected": 69.0}, {"input": [-32.5, 69.5], "expected": 69.5}, {"input": [-32.5, 70.0], "expected": 70.0}, {"input": [-32.5, 70.5], "expected": 70.5}, {"input": [-32.5, 71.0], "expected": 71.0}, {"input": [-32.5, 71.5], "expected": 71.5}, {"input": [-32.5, 72.0], "expected": 72.0}, {"input": [-32.5, 72.5], "expected": 72.5}, {"input": [-32.5, 73.0], "expected": 73.0}, {"input": [-32.5, 73.5], "expected": 73.5}, {"input": [-32.5, 74.0], "expected": 74.0}, {"input": [-32.5, 74.5], "expected": 74.5}, {"input": [-32.5, 75.0], "expected": 75.0}, {"input": [-32.5, 75.5], "expected": 75.5}, {"input": [-32.5, 76.0], "expected": 76.0}, {"input": [-32.5, 76.5], "expected": 76.5}, {"input": [-32.5, 77.0], "expected": 77.0}, {"input": [-32.5, 77.5], "expected": 77.5}, {"input": [-32.5, 78.0], "expected": 78.0}, {"input": [-32.5, 78.5], "expected": 78.5}, {"input": [-32.5, 79.0], "expected": 79.0}, {"input": [-32.5, 79.5], "expected": 79.5}, {"input": [-32.5, 80.0], "expected": 80.0}, {"input": [-32.5, 80.5], "expected": 80.5}, {"input": [-32.5, 81.0], "expected": 81.0}, {"input": [-32.5, 81.5], "expected": 81.5}, {"input": [-32.5, 82.0], "expected": 82.0}, {"input": [-32.5, 82.5], "expected": 82.5}, {"input": [-32.5, 83.0], "expected": 83.0}, {"input": [-32.5, 83.5], "expected": 83.5}, {"input": [-32.5, 84.0], "expected": 84.0}, {"input": [-32.5, 84.5], "expected": 84.5}, {"input": [-32.5, 85.0], "expected": 85.0}, {"input": [-32.5, 85.5], "expected": 85.5}, {"input": [-32.5, 86.0], "expected": 86.0}, {"input": [-32.5, 86.5], "expected": 86.5}, {"input": [-32.5, 87.0], "expected": 87.0}, {"input": [-32.5, 87.5], "expected": 87.5}, {"input": [-32.5, 88.0], "expected": 88.0}, {"input": [-32.5, 88.5], "expected": 88.5}, {"input": [-32.5, 89.0], "expected": 89.0}, {"input": [-32.5, 89.5], "expected": 89.5}, {"input": [-32.5, 90.0], "expected": 90.0}, {"input": [-32.5, 90.5], "expected": 90.5}, {"input": [-32.5, 91.0], "expected": 91.0}, {"input": [-32.5, 91.5], "expected": 91.5}, {"input": [-32.5, 92.0], "expected": 92.0}, {"input": [-32.5, 92.5], "expected": 92.5}, {"input": [-32.5, 93.0], "expected": 93.0}, {"input": [-32.5, 93.5], "expected": 93.5}, {"input": [-32.5, 94.0], "expected": 94.0}, {"input": [-32.5, 94.5], "expected": 94.5}, {"input": [-32.5, 95.0], "expected": 95.0}, {"input": [-32.5, 95.5], "expected": 95.5}, {"input": [-32.5, 96.0], "expected": 96.0}, {"input": [-32.5, 96.5], "expected": 96.5}, {"input": [-32.5, 97.0], "expected": 97.0}, {"input": [-32.5, 97.5], "expected": 97.5}, {"input": [-32.5, 98.0], "expected": 98.0}, {"input": [-32.5, 98.5], "expected": 98.5}, {"input": [-32.5, 99.0], "expected": 99.0}, {"input": [-32.5, 99.5], "expected": 99.5}, {"input": [-32.0, -100.0], "expected": -32.0}, {"input": [-32.0, -99.5], "expected": -32.0}, {"input": [-32.0, -99.0], "expected": -32.0}, {"input": [-32.0, -98.5], "expected": -32.0}, {"input": [-32.0, -98.0], "expected": -32.0}, {"input": [-32.0, -97.5], "expected": -32.0}, {"input": [-32.0, -97.0], "expected": -32.0}, {"input": [-32.0, -96.5], "expected": -32.0}, {"input": [-32.0, -96.0], "expected": -32.0}, {"input": [-32.0, -95.5], "expected": -32.0}, {"input": [-32.0, -95.0], "expected": -32.0}, {"input": [-32.0, -94.5], "expected": -32.0}, {"input": [-32.0, -94.0], "expected": -32.0}, {"input": [-32.0, -93.5], "expected": -32.0}, {"input": [-32.0, -93.0], "expected": -32.0}, {"input": [-32.0, -92.5], "expected": -32.0}, {"input": [-32.0, -92.0], "expected": -32.0}, {"input": [-32.0, -91.5], "expected": -32.0}, {"input": [-32.0, -91.0], "expected": -32.0}, {"input": [-32.0, -90.5], "expected": -32.0}, {"input": [-32.0, -90.0], "expected": -32.0}, {"input": [-32.0, -89.5], "expected": -32.0}, {"input": [-32.0, -89.0], "expected": -32.0}, {"input": [-32.0, -88.5], "expected": -32.0}, {"input": [-32.0, -88.0], "expected": -32.0}, {"input": [-32.0, -87.5], "expected": -32.0}, {"input": [-32.0, -87.0], "expected": -32.0}, {"input": [-32.0, -86.5], "expected": -32.0}, {"input": [-32.0, -86.0], "expected": -32.0}, {"input": [-32.0, -85.5], "expected": -32.0}, {"input": [-32.0, -85.0], "expected": -32.0}, {"input": [-32.0, -84.5], "expected": -32.0}, {"input": [-32.0, -84.0], "expected": -32.0}, {"input": [-32.0, -83.5], "expected": -32.0}, {"input": [-32.0, -83.0], "expected": -32.0}, {"input": [-32.0, -82.5], "expected": -32.0}, {"input": [-32.0, -82.0], "expected": -32.0}, {"input": [-32.0, -81.5], "expected": -32.0}, {"input": [-32.0, -81.0], "expected": -32.0}, {"input": [-32.0, -80.5], "expected": -32.0}, {"input": [-32.0, -80.0], "expected": -32.0}, {"input": [-32.0, -79.5], "expected": -32.0}, {"input": [-32.0, -79.0], "expected": -32.0}, {"input": [-32.0, -78.5], "expected": -32.0}, {"input": [-32.0, -78.0], "expected": -32.0}, {"input": [-32.0, -77.5], "expected": -32.0}, {"input": [-32.0, -77.0], "expected": -32.0}, {"input": [-32.0, -76.5], "expected": -32.0}, {"input": [-32.0, -76.0], "expected": -32.0}, {"input": [-32.0, -75.5], "expected": -32.0}, {"input": [-32.0, -75.0], "expected": -32.0}, {"input": [-32.0, -74.5], "expected": -32.0}, {"input": [-32.0, -74.0], "expected": -32.0}, {"input": [-32.0, -73.5], "expected": -32.0}, {"input": [-32.0, -73.0], "expected": -32.0}, {"input": [-32.0, -72.5], "expected": -32.0}, {"input": [-32.0, -72.0], "expected": -32.0}, {"input": [-32.0, -71.5], "expected": -32.0}, {"input": [-32.0, -71.0], "expected": -32.0}, {"input": [-32.0, -70.5], "expected": -32.0}, {"input": [-32.0, -70.0], "expected": -32.0}, {"input": [-32.0, -69.5], "expected": -32.0}, {"input": [-32.0, -69.0], "expected": -32.0}, {"input": [-32.0, -68.5], "expected": -32.0}, {"input": [-32.0, -68.0], "expected": -32.0}, {"input": [-32.0, -67.5], "expected": -32.0}, {"input": [-32.0, -67.0], "expected": -32.0}, {"input": [-32.0, -66.5], "expected": -32.0}, {"input": [-32.0, -66.0], "expected": -32.0}, {"input": [-32.0, -65.5], "expected": -31.999999999999996}, {"input": [-32.0, -65.0], "expected": -31.999999999999996}, {"input": [-32.0, -64.5], "expected": -31.999999999999993}, {"input": [-32.0, -64.0], "expected": -31.999999999999986}, {"input": [-32.0, -63.5], "expected": -31.99999999999998}, {"input": [-32.0, -63.0], "expected": -31.999999999999964}, {"input": [-32.0, -62.5], "expected": -31.999999999999943}, {"input": [-32.0, -62.0], "expected": -31.999999999999908}, {"input": [-32.0, -61.5], "expected": -31.999999999999847}, {"input": [-32.0, -61.0], "expected": -31.999999999999744}, {"input": [-32.0, -60.5], "expected": -31.99999999999958}, {"input": [-32.0, -60.0], "expected": -31.999999999999307}, {"input": [-32.0, -59.5], "expected": -31.99999999999886}, {"input": [-32.0, -59.0], "expected": -31.99999999999812}, {"input": [-32.0, -58.5], "expected": -31.999999999996902}, {"input": [-32.0, -58.0], "expected": -31.99999999999489}, {"input": [-32.0, -57.5], "expected": -31.999999999991577}, {"input": [-32.0, -57.0], "expected": -31.999999999986112}, {"input": [-32.0, -56.5], "expected": -31.999999999977103}, {"input": [-32.0, -56.0], "expected": -31.99999999996225}, {"input": [-32.0, -55.5], "expected": -31.99999999993776}, {"input": [-32.0, -55.0], "expected": -31.99999999989738}, {"input": [-32.0, -54.5], "expected": -31.99999999983081}, {"input": [-32.0, -54.0], "expected": -31.99999999972105}, {"input": [-32.0, -53.5], "expected": -31.999999999540094}, {"input": [-32.0, -53.0], "expected": -31.999999999241744}, {"input": [-32.0, -52.5], "expected": -31.999999998749846}, {"input": [-32.0, -52.0], "expected": -31.999999997938847}, {"input": [-32.0, -51.5], "expected": -31.999999996601733}, {"input": [-32.0, -51.0], "expected": -31.999999994397204}, {"input": [-32.0, -50.5], "expected": -31.99999999076255}, {"input": [-32.0, -50.0], "expected": -31.99999998477002}, {"input": [-32.0, -49.5], "expected": -31.99999997489001}, {"input": [-32.0, -49.0], "expected": -31.999999958600625}, {"input": [-32.0, -48.5], "expected": -31.999999931743968}, {"input": [-32.0, -48.0], "expected": -31.99999988746483}, {"input": [-32.0, -47.5], "expected": -31.99999981446088}, {"input": [-32.0, -47.0], "expected": -31.999999694097728}, {"input": [-32.0, -46.5], "expected": -31.999999495652464}, {"input": [-32.0, -46.0], "expected": -31.999999168471625}, {"input": [-32.0, -45.5], "expected": -31.999998629041855}, {"input": [-32.0, -45.0], "expected": -31.999997739673148}, {"input": [-32.0, -44.5], "expected": -31.999996273353773}, {"input": [-32.0, -44.0], "expected": -31.999993855806522}, {"input": [-32.0, -43.5], "expected": -31.99998986995771}, {"input": [-32.0, -43.0], "expected": -31.999983298438682}, {"input": [-32.0, -42.5], "expected": -31.999972463929772}, {"input": [-32.0, -42.0], "expected": -31.999954601100782}, {"input": [-32.0, -41.5], "expected": -31.99992515097137}, {"input": [-32.0, -41.0], "expected": -31.999876597810278}, {"input": [-32.0, -40.5], "expected": -31.999796552327872}, {"input": [-32.0, -40.0], "expected": -31.999664593627106}, {"input": [-32.0, -39.5], "expected": -31.99944706852464}, {"input": [-32.0, -39.0], "expected": -31.999088533546225}, {"input": [-32.0, -38.5], "expected": -31.998497689840246}, {"input": [-32.0, -38.0], "expected": -31.997524314862268}, {"input": [-32.0, -37.5], "expected": -31.995921556729428}, {"input": [-32.0, -37.0], "expected": -31.993284651510884}, {"input": [-32.0, -36.5], "expected": -31.988952255151407}, {"input": [-32.0, -36.0], "expected": -31.98185007208219}, {"input": [-32.0, -35.5], "expected": -31.97024958172738}, {"input": [-32.0, -35.0], "expected": -31.951412648426256}, {"input": [-32.0, -34.5], "expected": -31.92111026570745}, {"input": [-32.0, -34.0], "expected": -31.873071988957026}, {"input": [-32.0, -33.5], "expected": -31.798586722017248}, {"input": [-32.0, -33.0], "expected": -31.686738312481776}, {"input": [-32.0, -32.5], "expected": -31.52592301581989}, {"input": [-32.0, -32.0], "expected": -31.306852819440056}, {"input": [-32.0, -31.5], "expected": -31.02592301581989}, {"input": [-32.0, -31.0], "expected": -30.686738312481776}, {"input": [-32.0, -30.5], "expected": -30.298586722017248}, {"input": [-32.0, -30.0], "expected": -29.873071988957026}, {"input": [-32.0, -29.5], "expected": -29.42111026570745}, {"input": [-32.0, -29.0], "expected": -28.951412648426256}, {"input": [-32.0, -28.5], "expected": -28.47024958172738}, {"input": [-32.0, -28.0], "expected": -27.98185007208219}, {"input": [-32.0, -27.5], "expected": -27.488952255151407}, {"input": [-32.0, -27.0], "expected": -26.993284651510884}, {"input": [-32.0, -26.5], "expected": -26.495921556729428}, {"input": [-32.0, -26.0], "expected": -25.997524314862268}, {"input": [-32.0, -25.5], "expected": -25.498497689840246}, {"input": [-32.0, -25.0], "expected": -24.999088533546225}, {"input": [-32.0, -24.5], "expected": -24.49944706852464}, {"input": [-32.0, -24.0], "expected": -23.999664593627106}, {"input": [-32.0, -23.5], "expected": -23.499796552327872}, {"input": [-32.0, -23.0], "expected": -22.999876597810278}, {"input": [-32.0, -22.5], "expected": -22.49992515097137}, {"input": [-32.0, -22.0], "expected": -21.999954601100782}, {"input": [-32.0, -21.5], "expected": -21.499972463929772}, {"input": [-32.0, -21.0], "expected": -20.999983298438682}, {"input": [-32.0, -20.5], "expected": -20.49998986995771}, {"input": [-32.0, -20.0], "expected": -19.999993855806522}, {"input": [-32.0, -19.5], "expected": -19.499996273353773}, {"input": [-32.0, -19.0], "expected": -18.999997739673148}, {"input": [-32.0, -18.5], "expected": -18.499998629041855}, {"input": [-32.0, -18.0], "expected": -17.999999168471625}, {"input": [-32.0, -17.5], "expected": -17.499999495652464}, {"input": [-32.0, -17.0], "expected": -16.999999694097728}, {"input": [-32.0, -16.5], "expected": -16.49999981446088}, {"input": [-32.0, -16.0], "expected": -15.999999887464831}, {"input": [-32.0, -15.5], "expected": -15.499999931743968}, {"input": [-32.0, -15.0], "expected": -14.999999958600624}, {"input": [-32.0, -14.5], "expected": -14.49999997489001}, {"input": [-32.0, -14.0], "expected": -13.999999984770021}, {"input": [-32.0, -13.5], "expected": -13.49999999076255}, {"input": [-32.0, -13.0], "expected": -12.999999994397204}, {"input": [-32.0, -12.5], "expected": -12.499999996601732}, {"input": [-32.0, -12.0], "expected": -11.999999997938847}, {"input": [-32.0, -11.5], "expected": -11.499999998749848}, {"input": [-32.0, -11.0], "expected": -10.999999999241744}, {"input": [-32.0, -10.5], "expected": -10.499999999540094}, {"input": [-32.0, -10.0], "expected": -9.999999999721053}, {"input": [-32.0, -9.5], "expected": -9.499999999830811}, {"input": [-32.0, -9.0], "expected": -8.999999999897382}, {"input": [-32.0, -8.5], "expected": -8.499999999937758}, {"input": [-32.0, -8.0], "expected": -7.999999999962249}, {"input": [-32.0, -7.5], "expected": -7.499999999977103}, {"input": [-32.0, -7.0], "expected": -6.999999999986112}, {"input": [-32.0, -6.5], "expected": -6.4999999999915765}, {"input": [-32.0, -6.0], "expected": -5.999999999994891}, {"input": [-32.0, -5.5], "expected": -5.499999999996901}, {"input": [-32.0, -5.0], "expected": -4.999999999998121}, {"input": [-32.0, -4.5], "expected": -4.49999999999886}, {"input": [-32.0, -4.0], "expected": -3.9999999999993086}, {"input": [-32.0, -3.5], "expected": -3.499999999999581}, {"input": [-32.0, -3.0], "expected": -2.9999999999997455}, {"input": [-32.0, -2.5], "expected": -2.499999999999846}, {"input": [-32.0, -2.0], "expected": -1.9999999999999065}, {"input": [-32.0, -1.5], "expected": -1.4999999999999432}, {"input": [-32.0, -1.0], "expected": -0.9999999999999656}, {"input": [-32.0, -0.5], "expected": -0.49999999999997913}, {"input": [-32.0, 0.0], "expected": 1.2664165549094095e-14}, {"input": [-32.0, 0.5], "expected": 0.5000000000000077}, {"input": [-32.0, 1.0], "expected": 1.0000000000000047}, {"input": [-32.0, 1.5], "expected": 1.5000000000000029}, {"input": [-32.0, 2.0], "expected": 2.0000000000000018}, {"input": [-32.0, 2.5], "expected": 2.500000000000001}, {"input": [-32.0, 3.0], "expected": 3.0000000000000004}, {"input": [-32.0, 3.5], "expected": 3.5000000000000004}, {"input": [-32.0, 4.0], "expected": 4.0}, {"input": [-32.0, 4.5], "expected": 4.5}, {"input": [-32.0, 5.0], "expected": 5.0}, {"input": [-32.0, 5.5], "expected": 5.5}, {"input": [-32.0, 6.0], "expected": 6.0}, {"input": [-32.0, 6.5], "expected": 6.5}, {"input": [-32.0, 7.0], "expected": 7.0}, {"input": [-32.0, 7.5], "expected": 7.5}, {"input": [-32.0, 8.0], "expected": 8.0}, {"input": [-32.0, 8.5], "expected": 8.5}, {"input": [-32.0, 9.0], "expected": 9.0}, {"input": [-32.0, 9.5], "expected": 9.5}, {"input": [-32.0, 10.0], "expected": 10.0}, {"input": [-32.0, 10.5], "expected": 10.5}, {"input": [-32.0, 11.0], "expected": 11.0}, {"input": [-32.0, 11.5], "expected": 11.5}, {"input": [-32.0, 12.0], "expected": 12.0}, {"input": [-32.0, 12.5], "expected": 12.5}, {"input": [-32.0, 13.0], "expected": 13.0}, {"input": [-32.0, 13.5], "expected": 13.5}, {"input": [-32.0, 14.0], "expected": 14.0}, {"input": [-32.0, 14.5], "expected": 14.5}, {"input": [-32.0, 15.0], "expected": 15.0}, {"input": [-32.0, 15.5], "expected": 15.5}, {"input": [-32.0, 16.0], "expected": 16.0}, {"input": [-32.0, 16.5], "expected": 16.5}, {"input": [-32.0, 17.0], "expected": 17.0}, {"input": [-32.0, 17.5], "expected": 17.5}, {"input": [-32.0, 18.0], "expected": 18.0}, {"input": [-32.0, 18.5], "expected": 18.5}, {"input": [-32.0, 19.0], "expected": 19.0}, {"input": [-32.0, 19.5], "expected": 19.5}, {"input": [-32.0, 20.0], "expected": 20.0}, {"input": [-32.0, 20.5], "expected": 20.5}, {"input": [-32.0, 21.0], "expected": 21.0}, {"input": [-32.0, 21.5], "expected": 21.5}, {"input": [-32.0, 22.0], "expected": 22.0}, {"input": [-32.0, 22.5], "expected": 22.5}, {"input": [-32.0, 23.0], "expected": 23.0}, {"input": [-32.0, 23.5], "expected": 23.5}, {"input": [-32.0, 24.0], "expected": 24.0}, {"input": [-32.0, 24.5], "expected": 24.5}, {"input": [-32.0, 25.0], "expected": 25.0}, {"input": [-32.0, 25.5], "expected": 25.5}, {"input": [-32.0, 26.0], "expected": 26.0}, {"input": [-32.0, 26.5], "expected": 26.5}, {"input": [-32.0, 27.0], "expected": 27.0}, {"input": [-32.0, 27.5], "expected": 27.5}, {"input": [-32.0, 28.0], "expected": 28.0}, {"input": [-32.0, 28.5], "expected": 28.5}, {"input": [-32.0, 29.0], "expected": 29.0}, {"input": [-32.0, 29.5], "expected": 29.5}, {"input": [-32.0, 30.0], "expected": 30.0}, {"input": [-32.0, 30.5], "expected": 30.5}, {"input": [-32.0, 31.0], "expected": 31.0}, {"input": [-32.0, 31.5], "expected": 31.5}, {"input": [-32.0, 32.0], "expected": 32.0}, {"input": [-32.0, 32.5], "expected": 32.5}, {"input": [-32.0, 33.0], "expected": 33.0}, {"input": [-32.0, 33.5], "expected": 33.5}, {"input": [-32.0, 34.0], "expected": 34.0}, {"input": [-32.0, 34.5], "expected": 34.5}, {"input": [-32.0, 35.0], "expected": 35.0}, {"input": [-32.0, 35.5], "expected": 35.5}, {"input": [-32.0, 36.0], "expected": 36.0}, {"input": [-32.0, 36.5], "expected": 36.5}, {"input": [-32.0, 37.0], "expected": 37.0}, {"input": [-32.0, 37.5], "expected": 37.5}, {"input": [-32.0, 38.0], "expected": 38.0}, {"input": [-32.0, 38.5], "expected": 38.5}, {"input": [-32.0, 39.0], "expected": 39.0}, {"input": [-32.0, 39.5], "expected": 39.5}, {"input": [-32.0, 40.0], "expected": 40.0}, {"input": [-32.0, 40.5], "expected": 40.5}, {"input": [-32.0, 41.0], "expected": 41.0}, {"input": [-32.0, 41.5], "expected": 41.5}, {"input": [-32.0, 42.0], "expected": 42.0}, {"input": [-32.0, 42.5], "expected": 42.5}, {"input": [-32.0, 43.0], "expected": 43.0}, {"input": [-32.0, 43.5], "expected": 43.5}, {"input": [-32.0, 44.0], "expected": 44.0}, {"input": [-32.0, 44.5], "expected": 44.5}, {"input": [-32.0, 45.0], "expected": 45.0}, {"input": [-32.0, 45.5], "expected": 45.5}, {"input": [-32.0, 46.0], "expected": 46.0}, {"input": [-32.0, 46.5], "expected": 46.5}, {"input": [-32.0, 47.0], "expected": 47.0}, {"input": [-32.0, 47.5], "expected": 47.5}, {"input": [-32.0, 48.0], "expected": 48.0}, {"input": [-32.0, 48.5], "expected": 48.5}, {"input": [-32.0, 49.0], "expected": 49.0}, {"input": [-32.0, 49.5], "expected": 49.5}, {"input": [-32.0, 50.0], "expected": 50.0}, {"input": [-32.0, 50.5], "expected": 50.5}, {"input": [-32.0, 51.0], "expected": 51.0}, {"input": [-32.0, 51.5], "expected": 51.5}, {"input": [-32.0, 52.0], "expected": 52.0}, {"input": [-32.0, 52.5], "expected": 52.5}, {"input": [-32.0, 53.0], "expected": 53.0}, {"input": [-32.0, 53.5], "expected": 53.5}, {"input": [-32.0, 54.0], "expected": 54.0}, {"input": [-32.0, 54.5], "expected": 54.5}, {"input": [-32.0, 55.0], "expected": 55.0}, {"input": [-32.0, 55.5], "expected": 55.5}, {"input": [-32.0, 56.0], "expected": 56.0}, {"input": [-32.0, 56.5], "expected": 56.5}, {"input": [-32.0, 57.0], "expected": 57.0}, {"input": [-32.0, 57.5], "expected": 57.5}, {"input": [-32.0, 58.0], "expected": 58.0}, {"input": [-32.0, 58.5], "expected": 58.5}, {"input": [-32.0, 59.0], "expected": 59.0}, {"input": [-32.0, 59.5], "expected": 59.5}, {"input": [-32.0, 60.0], "expected": 60.0}, {"input": [-32.0, 60.5], "expected": 60.5}, {"input": [-32.0, 61.0], "expected": 61.0}, {"input": [-32.0, 61.5], "expected": 61.5}, {"input": [-32.0, 62.0], "expected": 62.0}, {"input": [-32.0, 62.5], "expected": 62.5}, {"input": [-32.0, 63.0], "expected": 63.0}, {"input": [-32.0, 63.5], "expected": 63.5}, {"input": [-32.0, 64.0], "expected": 64.0}, {"input": [-32.0, 64.5], "expected": 64.5}, {"input": [-32.0, 65.0], "expected": 65.0}, {"input": [-32.0, 65.5], "expected": 65.5}, {"input": [-32.0, 66.0], "expected": 66.0}, {"input": [-32.0, 66.5], "expected": 66.5}, {"input": [-32.0, 67.0], "expected": 67.0}, {"input": [-32.0, 67.5], "expected": 67.5}, {"input": [-32.0, 68.0], "expected": 68.0}, {"input": [-32.0, 68.5], "expected": 68.5}, {"input": [-32.0, 69.0], "expected": 69.0}, {"input": [-32.0, 69.5], "expected": 69.5}, {"input": [-32.0, 70.0], "expected": 70.0}, {"input": [-32.0, 70.5], "expected": 70.5}, {"input": [-32.0, 71.0], "expected": 71.0}, {"input": [-32.0, 71.5], "expected": 71.5}, {"input": [-32.0, 72.0], "expected": 72.0}, {"input": [-32.0, 72.5], "expected": 72.5}, {"input": [-32.0, 73.0], "expected": 73.0}, {"input": [-32.0, 73.5], "expected": 73.5}, {"input": [-32.0, 74.0], "expected": 74.0}, {"input": [-32.0, 74.5], "expected": 74.5}, {"input": [-32.0, 75.0], "expected": 75.0}, {"input": [-32.0, 75.5], "expected": 75.5}, {"input": [-32.0, 76.0], "expected": 76.0}, {"input": [-32.0, 76.5], "expected": 76.5}, {"input": [-32.0, 77.0], "expected": 77.0}, {"input": [-32.0, 77.5], "expected": 77.5}, {"input": [-32.0, 78.0], "expected": 78.0}, {"input": [-32.0, 78.5], "expected": 78.5}, {"input": [-32.0, 79.0], "expected": 79.0}, {"input": [-32.0, 79.5], "expected": 79.5}, {"input": [-32.0, 80.0], "expected": 80.0}, {"input": [-32.0, 80.5], "expected": 80.5}, {"input": [-32.0, 81.0], "expected": 81.0}, {"input": [-32.0, 81.5], "expected": 81.5}, {"input": [-32.0, 82.0], "expected": 82.0}, {"input": [-32.0, 82.5], "expected": 82.5}, {"input": [-32.0, 83.0], "expected": 83.0}, {"input": [-32.0, 83.5], "expected": 83.5}, {"input": [-32.0, 84.0], "expected": 84.0}, {"input": [-32.0, 84.5], "expected": 84.5}, {"input": [-32.0, 85.0], "expected": 85.0}, {"input": [-32.0, 85.5], "expected": 85.5}, {"input": [-32.0, 86.0], "expected": 86.0}, {"input": [-32.0, 86.5], "expected": 86.5}, {"input": [-32.0, 87.0], "expected": 87.0}, {"input": [-32.0, 87.5], "expected": 87.5}, {"input": [-32.0, 88.0], "expected": 88.0}, {"input": [-32.0, 88.5], "expected": 88.5}, {"input": [-32.0, 89.0], "expected": 89.0}, {"input": [-32.0, 89.5], "expected": 89.5}, {"input": [-32.0, 90.0], "expected": 90.0}, {"input": [-32.0, 90.5], "expected": 90.5}, {"input": [-32.0, 91.0], "expected": 91.0}, {"input": [-32.0, 91.5], "expected": 91.5}, {"input": [-32.0, 92.0], "expected": 92.0}, {"input": [-32.0, 92.5], "expected": 92.5}, {"input": [-32.0, 93.0], "expected": 93.0}, {"input": [-32.0, 93.5], "expected": 93.5}, {"input": [-32.0, 94.0], "expected": 94.0}, {"input": [-32.0, 94.5], "expected": 94.5}, {"input": [-32.0, 95.0], "expected": 95.0}, {"input": [-32.0, 95.5], "expected": 95.5}, {"input": [-32.0, 96.0], "expected": 96.0}, {"input": [-32.0, 96.5], "expected": 96.5}, {"input": [-32.0, 97.0], "expected": 97.0}, {"input": [-32.0, 97.5], "expected": 97.5}, {"input": [-32.0, 98.0], "expected": 98.0}, {"input": [-32.0, 98.5], "expected": 98.5}, {"input": [-32.0, 99.0], "expected": 99.0}, {"input": [-32.0, 99.5], "expected": 99.5}, {"input": [-31.5, -100.0], "expected": -31.5}, {"input": [-31.5, -99.5], "expected": -31.5}, {"input": [-31.5, -99.0], "expected": -31.5}, {"input": [-31.5, -98.5], "expected": -31.5}, {"input": [-31.5, -98.0], "expected": -31.5}, {"input": [-31.5, -97.5], "expected": -31.5}, {"input": [-31.5, -97.0], "expected": -31.5}, {"input": [-31.5, -96.5], "expected": -31.5}, {"input": [-31.5, -96.0], "expected": -31.5}, {"input": [-31.5, -95.5], "expected": -31.5}, {"input": [-31.5, -95.0], "expected": -31.5}, {"input": [-31.5, -94.5], "expected": -31.5}, {"input": [-31.5, -94.0], "expected": -31.5}, {"input": [-31.5, -93.5], "expected": -31.5}, {"input": [-31.5, -93.0], "expected": -31.5}, {"input": [-31.5, -92.5], "expected": -31.5}, {"input": [-31.5, -92.0], "expected": -31.5}, {"input": [-31.5, -91.5], "expected": -31.5}, {"input": [-31.5, -91.0], "expected": -31.5}, {"input": [-31.5, -90.5], "expected": -31.5}, {"input": [-31.5, -90.0], "expected": -31.5}, {"input": [-31.5, -89.5], "expected": -31.5}, {"input": [-31.5, -89.0], "expected": -31.5}, {"input": [-31.5, -88.5], "expected": -31.5}, {"input": [-31.5, -88.0], "expected": -31.5}, {"input": [-31.5, -87.5], "expected": -31.5}, {"input": [-31.5, -87.0], "expected": -31.5}, {"input": [-31.5, -86.5], "expected": -31.5}, {"input": [-31.5, -86.0], "expected": -31.5}, {"input": [-31.5, -85.5], "expected": -31.5}, {"input": [-31.5, -85.0], "expected": -31.5}, {"input": [-31.5, -84.5], "expected": -31.5}, {"input": [-31.5, -84.0], "expected": -31.5}, {"input": [-31.5, -83.5], "expected": -31.5}, {"input": [-31.5, -83.0], "expected": -31.5}, {"input": [-31.5, -82.5], "expected": -31.5}, {"input": [-31.5, -82.0], "expected": -31.5}, {"input": [-31.5, -81.5], "expected": -31.5}, {"input": [-31.5, -81.0], "expected": -31.5}, {"input": [-31.5, -80.5], "expected": -31.5}, {"input": [-31.5, -80.0], "expected": -31.5}, {"input": [-31.5, -79.5], "expected": -31.5}, {"input": [-31.5, -79.0], "expected": -31.5}, {"input": [-31.5, -78.5], "expected": -31.5}, {"input": [-31.5, -78.0], "expected": -31.5}, {"input": [-31.5, -77.5], "expected": -31.5}, {"input": [-31.5, -77.0], "expected": -31.5}, {"input": [-31.5, -76.5], "expected": -31.5}, {"input": [-31.5, -76.0], "expected": -31.5}, {"input": [-31.5, -75.5], "expected": -31.5}, {"input": [-31.5, -75.0], "expected": -31.5}, {"input": [-31.5, -74.5], "expected": -31.5}, {"input": [-31.5, -74.0], "expected": -31.5}, {"input": [-31.5, -73.5], "expected": -31.5}, {"input": [-31.5, -73.0], "expected": -31.5}, {"input": [-31.5, -72.5], "expected": -31.5}, {"input": [-31.5, -72.0], "expected": -31.5}, {"input": [-31.5, -71.5], "expected": -31.5}, {"input": [-31.5, -71.0], "expected": -31.5}, {"input": [-31.5, -70.5], "expected": -31.5}, {"input": [-31.5, -70.0], "expected": -31.5}, {"input": [-31.5, -69.5], "expected": -31.5}, {"input": [-31.5, -69.0], "expected": -31.5}, {"input": [-31.5, -68.5], "expected": -31.5}, {"input": [-31.5, -68.0], "expected": -31.5}, {"input": [-31.5, -67.5], "expected": -31.5}, {"input": [-31.5, -67.0], "expected": -31.5}, {"input": [-31.5, -66.5], "expected": -31.5}, {"input": [-31.5, -66.0], "expected": -31.5}, {"input": [-31.5, -65.5], "expected": -31.5}, {"input": [-31.5, -65.0], "expected": -31.499999999999996}, {"input": [-31.5, -64.5], "expected": -31.499999999999996}, {"input": [-31.5, -64.0], "expected": -31.499999999999993}, {"input": [-31.5, -63.5], "expected": -31.499999999999986}, {"input": [-31.5, -63.0], "expected": -31.49999999999998}, {"input": [-31.5, -62.5], "expected": -31.499999999999964}, {"input": [-31.5, -62.0], "expected": -31.499999999999943}, {"input": [-31.5, -61.5], "expected": -31.499999999999908}, {"input": [-31.5, -61.0], "expected": -31.499999999999847}, {"input": [-31.5, -60.5], "expected": -31.499999999999744}, {"input": [-31.5, -60.0], "expected": -31.49999999999958}, {"input": [-31.5, -59.5], "expected": -31.499999999999307}, {"input": [-31.5, -59.0], "expected": -31.49999999999886}, {"input": [-31.5, -58.5], "expected": -31.49999999999812}, {"input": [-31.5, -58.0], "expected": -31.499999999996902}, {"input": [-31.5, -57.5], "expected": -31.49999999999489}, {"input": [-31.5, -57.0], "expected": -31.499999999991577}, {"input": [-31.5, -56.5], "expected": -31.499999999986112}, {"input": [-31.5, -56.0], "expected": -31.499999999977103}, {"input": [-31.5, -55.5], "expected": -31.49999999996225}, {"input": [-31.5, -55.0], "expected": -31.49999999993776}, {"input": [-31.5, -54.5], "expected": -31.49999999989738}, {"input": [-31.5, -54.0], "expected": -31.49999999983081}, {"input": [-31.5, -53.5], "expected": -31.49999999972105}, {"input": [-31.5, -53.0], "expected": -31.499999999540094}, {"input": [-31.5, -52.5], "expected": -31.499999999241744}, {"input": [-31.5, -52.0], "expected": -31.499999998749846}, {"input": [-31.5, -51.5], "expected": -31.499999997938847}, {"input": [-31.5, -51.0], "expected": -31.499999996601733}, {"input": [-31.5, -50.5], "expected": -31.499999994397204}, {"input": [-31.5, -50.0], "expected": -31.49999999076255}, {"input": [-31.5, -49.5], "expected": -31.49999998477002}, {"input": [-31.5, -49.0], "expected": -31.49999997489001}, {"input": [-31.5, -48.5], "expected": -31.499999958600625}, {"input": [-31.5, -48.0], "expected": -31.499999931743968}, {"input": [-31.5, -47.5], "expected": -31.49999988746483}, {"input": [-31.5, -47.0], "expected": -31.49999981446088}, {"input": [-31.5, -46.5], "expected": -31.499999694097728}, {"input": [-31.5, -46.0], "expected": -31.499999495652464}, {"input": [-31.5, -45.5], "expected": -31.499999168471625}, {"input": [-31.5, -45.0], "expected": -31.499998629041855}, {"input": [-31.5, -44.5], "expected": -31.499997739673148}, {"input": [-31.5, -44.0], "expected": -31.499996273353773}, {"input": [-31.5, -43.5], "expected": -31.499993855806522}, {"input": [-31.5, -43.0], "expected": -31.49998986995771}, {"input": [-31.5, -42.5], "expected": -31.499983298438682}, {"input": [-31.5, -42.0], "expected": -31.499972463929772}, {"input": [-31.5, -41.5], "expected": -31.499954601100782}, {"input": [-31.5, -41.0], "expected": -31.49992515097137}, {"input": [-31.5, -40.5], "expected": -31.499876597810278}, {"input": [-31.5, -40.0], "expected": -31.499796552327872}, {"input": [-31.5, -39.5], "expected": -31.499664593627106}, {"input": [-31.5, -39.0], "expected": -31.49944706852464}, {"input": [-31.5, -38.5], "expected": -31.499088533546225}, {"input": [-31.5, -38.0], "expected": -31.498497689840246}, {"input": [-31.5, -37.5], "expected": -31.497524314862268}, {"input": [-31.5, -37.0], "expected": -31.495921556729428}, {"input": [-31.5, -36.5], "expected": -31.493284651510884}, {"input": [-31.5, -36.0], "expected": -31.488952255151407}, {"input": [-31.5, -35.5], "expected": -31.48185007208219}, {"input": [-31.5, -35.0], "expected": -31.47024958172738}, {"input": [-31.5, -34.5], "expected": -31.451412648426256}, {"input": [-31.5, -34.0], "expected": -31.42111026570745}, {"input": [-31.5, -33.5], "expected": -31.373071988957026}, {"input": [-31.5, -33.0], "expected": -31.298586722017248}, {"input": [-31.5, -32.5], "expected": -31.186738312481776}, {"input": [-31.5, -32.0], "expected": -31.02592301581989}, {"input": [-31.5, -31.5], "expected": -30.806852819440056}, {"input": [-31.5, -31.0], "expected": -30.52592301581989}, {"input": [-31.5, -30.5], "expected": -30.186738312481776}, {"input": [-31.5, -30.0], "expected": -29.798586722017248}, {"input": [-31.5, -29.5], "expected": -29.373071988957026}, {"input": [-31.5, -29.0], "expected": -28.92111026570745}, {"input": [-31.5, -28.5], "expected": -28.451412648426256}, {"input": [-31.5, -28.0], "expected": -27.97024958172738}, {"input": [-31.5, -27.5], "expected": -27.48185007208219}, {"input": [-31.5, -27.0], "expected": -26.988952255151407}, {"input": [-31.5, -26.5], "expected": -26.493284651510884}, {"input": [-31.5, -26.0], "expected": -25.995921556729428}, {"input": [-31.5, -25.5], "expected": -25.497524314862268}, {"input": [-31.5, -25.0], "expected": -24.998497689840246}, {"input": [-31.5, -24.5], "expected": -24.499088533546225}, {"input": [-31.5, -24.0], "expected": -23.99944706852464}, {"input": [-31.5, -23.5], "expected": -23.499664593627106}, {"input": [-31.5, -23.0], "expected": -22.999796552327872}, {"input": [-31.5, -22.5], "expected": -22.499876597810278}, {"input": [-31.5, -22.0], "expected": -21.99992515097137}, {"input": [-31.5, -21.5], "expected": -21.499954601100782}, {"input": [-31.5, -21.0], "expected": -20.999972463929772}, {"input": [-31.5, -20.5], "expected": -20.499983298438682}, {"input": [-31.5, -20.0], "expected": -19.99998986995771}, {"input": [-31.5, -19.5], "expected": -19.499993855806522}, {"input": [-31.5, -19.0], "expected": -18.999996273353773}, {"input": [-31.5, -18.5], "expected": -18.499997739673148}, {"input": [-31.5, -18.0], "expected": -17.999998629041855}, {"input": [-31.5, -17.5], "expected": -17.499999168471625}, {"input": [-31.5, -17.0], "expected": -16.999999495652464}, {"input": [-31.5, -16.5], "expected": -16.499999694097728}, {"input": [-31.5, -16.0], "expected": -15.999999814460882}, {"input": [-31.5, -15.5], "expected": -15.499999887464831}, {"input": [-31.5, -15.0], "expected": -14.999999931743968}, {"input": [-31.5, -14.5], "expected": -14.499999958600624}, {"input": [-31.5, -14.0], "expected": -13.99999997489001}, {"input": [-31.5, -13.5], "expected": -13.499999984770021}, {"input": [-31.5, -13.0], "expected": -12.99999999076255}, {"input": [-31.5, -12.5], "expected": -12.499999994397204}, {"input": [-31.5, -12.0], "expected": -11.999999996601732}, {"input": [-31.5, -11.5], "expected": -11.499999997938847}, {"input": [-31.5, -11.0], "expected": -10.999999998749848}, {"input": [-31.5, -10.5], "expected": -10.499999999241744}, {"input": [-31.5, -10.0], "expected": -9.999999999540094}, {"input": [-31.5, -9.5], "expected": -9.499999999721053}, {"input": [-31.5, -9.0], "expected": -8.999999999830811}, {"input": [-31.5, -8.5], "expected": -8.499999999897382}, {"input": [-31.5, -8.0], "expected": -7.999999999937758}, {"input": [-31.5, -7.5], "expected": -7.499999999962249}, {"input": [-31.5, -7.0], "expected": -6.999999999977103}, {"input": [-31.5, -6.5], "expected": -6.499999999986112}, {"input": [-31.5, -6.0], "expected": -5.9999999999915765}, {"input": [-31.5, -5.5], "expected": -5.499999999994891}, {"input": [-31.5, -5.0], "expected": -4.999999999996901}, {"input": [-31.5, -4.5], "expected": -4.499999999998121}, {"input": [-31.5, -4.0], "expected": -3.99999999999886}, {"input": [-31.5, -3.5], "expected": -3.4999999999993086}, {"input": [-31.5, -3.0], "expected": -2.999999999999581}, {"input": [-31.5, -2.5], "expected": -2.4999999999997455}, {"input": [-31.5, -2.0], "expected": -1.9999999999998457}, {"input": [-31.5, -1.5], "expected": -1.4999999999999065}, {"input": [-31.5, -1.0], "expected": -0.9999999999999433}, {"input": [-31.5, -0.5], "expected": -0.4999999999999656}, {"input": [-31.5, 0.0], "expected": 2.0879679116459118e-14}, {"input": [-31.5, 0.5], "expected": 0.5000000000000127}, {"input": [-31.5, 1.0], "expected": 1.0000000000000078}, {"input": [-31.5, 1.5], "expected": 1.5000000000000047}, {"input": [-31.5, 2.0], "expected": 2.0000000000000027}, {"input": [-31.5, 2.5], "expected": 2.5000000000000018}, {"input": [-31.5, 3.0], "expected": 3.000000000000001}, {"input": [-31.5, 3.5], "expected": 3.5000000000000004}, {"input": [-31.5, 4.0], "expected": 4.0}, {"input": [-31.5, 4.5], "expected": 4.5}, {"input": [-31.5, 5.0], "expected": 5.0}, {"input": [-31.5, 5.5], "expected": 5.5}, {"input": [-31.5, 6.0], "expected": 6.0}, {"input": [-31.5, 6.5], "expected": 6.5}, {"input": [-31.5, 7.0], "expected": 7.0}, {"input": [-31.5, 7.5], "expected": 7.5}, {"input": [-31.5, 8.0], "expected": 8.0}, {"input": [-31.5, 8.5], "expected": 8.5}, {"input": [-31.5, 9.0], "expected": 9.0}, {"input": [-31.5, 9.5], "expected": 9.5}, {"input": [-31.5, 10.0], "expected": 10.0}, {"input": [-31.5, 10.5], "expected": 10.5}, {"input": [-31.5, 11.0], "expected": 11.0}, {"input": [-31.5, 11.5], "expected": 11.5}, {"input": [-31.5, 12.0], "expected": 12.0}, {"input": [-31.5, 12.5], "expected": 12.5}, {"input": [-31.5, 13.0], "expected": 13.0}, {"input": [-31.5, 13.5], "expected": 13.5}, {"input": [-31.5, 14.0], "expected": 14.0}, {"input": [-31.5, 14.5], "expected": 14.5}, {"input": [-31.5, 15.0], "expected": 15.0}, {"input": [-31.5, 15.5], "expected": 15.5}, {"input": [-31.5, 16.0], "expected": 16.0}, {"input": [-31.5, 16.5], "expected": 16.5}, {"input": [-31.5, 17.0], "expected": 17.0}, {"input": [-31.5, 17.5], "expected": 17.5}, {"input": [-31.5, 18.0], "expected": 18.0}, {"input": [-31.5, 18.5], "expected": 18.5}, {"input": [-31.5, 19.0], "expected": 19.0}, {"input": [-31.5, 19.5], "expected": 19.5}, {"input": [-31.5, 20.0], "expected": 20.0}, {"input": [-31.5, 20.5], "expected": 20.5}, {"input": [-31.5, 21.0], "expected": 21.0}, {"input": [-31.5, 21.5], "expected": 21.5}, {"input": [-31.5, 22.0], "expected": 22.0}, {"input": [-31.5, 22.5], "expected": 22.5}, {"input": [-31.5, 23.0], "expected": 23.0}, {"input": [-31.5, 23.5], "expected": 23.5}, {"input": [-31.5, 24.0], "expected": 24.0}, {"input": [-31.5, 24.5], "expected": 24.5}, {"input": [-31.5, 25.0], "expected": 25.0}, {"input": [-31.5, 25.5], "expected": 25.5}, {"input": [-31.5, 26.0], "expected": 26.0}, {"input": [-31.5, 26.5], "expected": 26.5}, {"input": [-31.5, 27.0], "expected": 27.0}, {"input": [-31.5, 27.5], "expected": 27.5}, {"input": [-31.5, 28.0], "expected": 28.0}, {"input": [-31.5, 28.5], "expected": 28.5}, {"input": [-31.5, 29.0], "expected": 29.0}, {"input": [-31.5, 29.5], "expected": 29.5}, {"input": [-31.5, 30.0], "expected": 30.0}, {"input": [-31.5, 30.5], "expected": 30.5}, {"input": [-31.5, 31.0], "expected": 31.0}, {"input": [-31.5, 31.5], "expected": 31.5}, {"input": [-31.5, 32.0], "expected": 32.0}, {"input": [-31.5, 32.5], "expected": 32.5}, {"input": [-31.5, 33.0], "expected": 33.0}, {"input": [-31.5, 33.5], "expected": 33.5}, {"input": [-31.5, 34.0], "expected": 34.0}, {"input": [-31.5, 34.5], "expected": 34.5}, {"input": [-31.5, 35.0], "expected": 35.0}, {"input": [-31.5, 35.5], "expected": 35.5}, {"input": [-31.5, 36.0], "expected": 36.0}, {"input": [-31.5, 36.5], "expected": 36.5}, {"input": [-31.5, 37.0], "expected": 37.0}, {"input": [-31.5, 37.5], "expected": 37.5}, {"input": [-31.5, 38.0], "expected": 38.0}, {"input": [-31.5, 38.5], "expected": 38.5}, {"input": [-31.5, 39.0], "expected": 39.0}, {"input": [-31.5, 39.5], "expected": 39.5}, {"input": [-31.5, 40.0], "expected": 40.0}, {"input": [-31.5, 40.5], "expected": 40.5}, {"input": [-31.5, 41.0], "expected": 41.0}, {"input": [-31.5, 41.5], "expected": 41.5}, {"input": [-31.5, 42.0], "expected": 42.0}, {"input": [-31.5, 42.5], "expected": 42.5}, {"input": [-31.5, 43.0], "expected": 43.0}, {"input": [-31.5, 43.5], "expected": 43.5}, {"input": [-31.5, 44.0], "expected": 44.0}, {"input": [-31.5, 44.5], "expected": 44.5}, {"input": [-31.5, 45.0], "expected": 45.0}, {"input": [-31.5, 45.5], "expected": 45.5}, {"input": [-31.5, 46.0], "expected": 46.0}, {"input": [-31.5, 46.5], "expected": 46.5}, {"input": [-31.5, 47.0], "expected": 47.0}, {"input": [-31.5, 47.5], "expected": 47.5}, {"input": [-31.5, 48.0], "expected": 48.0}, {"input": [-31.5, 48.5], "expected": 48.5}, {"input": [-31.5, 49.0], "expected": 49.0}, {"input": [-31.5, 49.5], "expected": 49.5}, {"input": [-31.5, 50.0], "expected": 50.0}, {"input": [-31.5, 50.5], "expected": 50.5}, {"input": [-31.5, 51.0], "expected": 51.0}, {"input": [-31.5, 51.5], "expected": 51.5}, {"input": [-31.5, 52.0], "expected": 52.0}, {"input": [-31.5, 52.5], "expected": 52.5}, {"input": [-31.5, 53.0], "expected": 53.0}, {"input": [-31.5, 53.5], "expected": 53.5}, {"input": [-31.5, 54.0], "expected": 54.0}, {"input": [-31.5, 54.5], "expected": 54.5}, {"input": [-31.5, 55.0], "expected": 55.0}, {"input": [-31.5, 55.5], "expected": 55.5}, {"input": [-31.5, 56.0], "expected": 56.0}, {"input": [-31.5, 56.5], "expected": 56.5}, {"input": [-31.5, 57.0], "expected": 57.0}, {"input": [-31.5, 57.5], "expected": 57.5}, {"input": [-31.5, 58.0], "expected": 58.0}, {"input": [-31.5, 58.5], "expected": 58.5}, {"input": [-31.5, 59.0], "expected": 59.0}, {"input": [-31.5, 59.5], "expected": 59.5}, {"input": [-31.5, 60.0], "expected": 60.0}, {"input": [-31.5, 60.5], "expected": 60.5}, {"input": [-31.5, 61.0], "expected": 61.0}, {"input": [-31.5, 61.5], "expected": 61.5}, {"input": [-31.5, 62.0], "expected": 62.0}, {"input": [-31.5, 62.5], "expected": 62.5}, {"input": [-31.5, 63.0], "expected": 63.0}, {"input": [-31.5, 63.5], "expected": 63.5}, {"input": [-31.5, 64.0], "expected": 64.0}, {"input": [-31.5, 64.5], "expected": 64.5}, {"input": [-31.5, 65.0], "expected": 65.0}, {"input": [-31.5, 65.5], "expected": 65.5}, {"input": [-31.5, 66.0], "expected": 66.0}, {"input": [-31.5, 66.5], "expected": 66.5}, {"input": [-31.5, 67.0], "expected": 67.0}, {"input": [-31.5, 67.5], "expected": 67.5}, {"input": [-31.5, 68.0], "expected": 68.0}, {"input": [-31.5, 68.5], "expected": 68.5}, {"input": [-31.5, 69.0], "expected": 69.0}, {"input": [-31.5, 69.5], "expected": 69.5}, {"input": [-31.5, 70.0], "expected": 70.0}, {"input": [-31.5, 70.5], "expected": 70.5}, {"input": [-31.5, 71.0], "expected": 71.0}, {"input": [-31.5, 71.5], "expected": 71.5}, {"input": [-31.5, 72.0], "expected": 72.0}, {"input": [-31.5, 72.5], "expected": 72.5}, {"input": [-31.5, 73.0], "expected": 73.0}, {"input": [-31.5, 73.5], "expected": 73.5}, {"input": [-31.5, 74.0], "expected": 74.0}, {"input": [-31.5, 74.5], "expected": 74.5}, {"input": [-31.5, 75.0], "expected": 75.0}, {"input": [-31.5, 75.5], "expected": 75.5}, {"input": [-31.5, 76.0], "expected": 76.0}, {"input": [-31.5, 76.5], "expected": 76.5}, {"input": [-31.5, 77.0], "expected": 77.0}, {"input": [-31.5, 77.5], "expected": 77.5}, {"input": [-31.5, 78.0], "expected": 78.0}, {"input": [-31.5, 78.5], "expected": 78.5}, {"input": [-31.5, 79.0], "expected": 79.0}, {"input": [-31.5, 79.5], "expected": 79.5}, {"input": [-31.5, 80.0], "expected": 80.0}, {"input": [-31.5, 80.5], "expected": 80.5}, {"input": [-31.5, 81.0], "expected": 81.0}, {"input": [-31.5, 81.5], "expected": 81.5}, {"input": [-31.5, 82.0], "expected": 82.0}, {"input": [-31.5, 82.5], "expected": 82.5}, {"input": [-31.5, 83.0], "expected": 83.0}, {"input": [-31.5, 83.5], "expected": 83.5}, {"input": [-31.5, 84.0], "expected": 84.0}, {"input": [-31.5, 84.5], "expected": 84.5}, {"input": [-31.5, 85.0], "expected": 85.0}, {"input": [-31.5, 85.5], "expected": 85.5}, {"input": [-31.5, 86.0], "expected": 86.0}, {"input": [-31.5, 86.5], "expected": 86.5}, {"input": [-31.5, 87.0], "expected": 87.0}, {"input": [-31.5, 87.5], "expected": 87.5}, {"input": [-31.5, 88.0], "expected": 88.0}, {"input": [-31.5, 88.5], "expected": 88.5}, {"input": [-31.5, 89.0], "expected": 89.0}, {"input": [-31.5, 89.5], "expected": 89.5}, {"input": [-31.5, 90.0], "expected": 90.0}, {"input": [-31.5, 90.5], "expected": 90.5}, {"input": [-31.5, 91.0], "expected": 91.0}, {"input": [-31.5, 91.5], "expected": 91.5}, {"input": [-31.5, 92.0], "expected": 92.0}, {"input": [-31.5, 92.5], "expected": 92.5}, {"input": [-31.5, 93.0], "expected": 93.0}, {"input": [-31.5, 93.5], "expected": 93.5}, {"input": [-31.5, 94.0], "expected": 94.0}, {"input": [-31.5, 94.5], "expected": 94.5}, {"input": [-31.5, 95.0], "expected": 95.0}, {"input": [-31.5, 95.5], "expected": 95.5}, {"input": [-31.5, 96.0], "expected": 96.0}, {"input": [-31.5, 96.5], "expected": 96.5}, {"input": [-31.5, 97.0], "expected": 97.0}, {"input": [-31.5, 97.5], "expected": 97.5}, {"input": [-31.5, 98.0], "expected": 98.0}, {"input": [-31.5, 98.5], "expected": 98.5}, {"input": [-31.5, 99.0], "expected": 99.0}, {"input": [-31.5, 99.5], "expected": 99.5}, {"input": [-31.0, -100.0], "expected": -31.0}, {"input": [-31.0, -99.5], "expected": -31.0}, {"input": [-31.0, -99.0], "expected": -31.0}, {"input": [-31.0, -98.5], "expected": -31.0}, {"input": [-31.0, -98.0], "expected": -31.0}, {"input": [-31.0, -97.5], "expected": -31.0}, {"input": [-31.0, -97.0], "expected": -31.0}, {"input": [-31.0, -96.5], "expected": -31.0}, {"input": [-31.0, -96.0], "expected": -31.0}, {"input": [-31.0, -95.5], "expected": -31.0}, {"input": [-31.0, -95.0], "expected": -31.0}, {"input": [-31.0, -94.5], "expected": -31.0}, {"input": [-31.0, -94.0], "expected": -31.0}, {"input": [-31.0, -93.5], "expected": -31.0}, {"input": [-31.0, -93.0], "expected": -31.0}, {"input": [-31.0, -92.5], "expected": -31.0}, {"input": [-31.0, -92.0], "expected": -31.0}, {"input": [-31.0, -91.5], "expected": -31.0}, {"input": [-31.0, -91.0], "expected": -31.0}, {"input": [-31.0, -90.5], "expected": -31.0}, {"input": [-31.0, -90.0], "expected": -31.0}, {"input": [-31.0, -89.5], "expected": -31.0}, {"input": [-31.0, -89.0], "expected": -31.0}, {"input": [-31.0, -88.5], "expected": -31.0}, {"input": [-31.0, -88.0], "expected": -31.0}, {"input": [-31.0, -87.5], "expected": -31.0}, {"input": [-31.0, -87.0], "expected": -31.0}, {"input": [-31.0, -86.5], "expected": -31.0}, {"input": [-31.0, -86.0], "expected": -31.0}, {"input": [-31.0, -85.5], "expected": -31.0}, {"input": [-31.0, -85.0], "expected": -31.0}, {"input": [-31.0, -84.5], "expected": -31.0}, {"input": [-31.0, -84.0], "expected": -31.0}, {"input": [-31.0, -83.5], "expected": -31.0}, {"input": [-31.0, -83.0], "expected": -31.0}, {"input": [-31.0, -82.5], "expected": -31.0}, {"input": [-31.0, -82.0], "expected": -31.0}, {"input": [-31.0, -81.5], "expected": -31.0}, {"input": [-31.0, -81.0], "expected": -31.0}, {"input": [-31.0, -80.5], "expected": -31.0}, {"input": [-31.0, -80.0], "expected": -31.0}, {"input": [-31.0, -79.5], "expected": -31.0}, {"input": [-31.0, -79.0], "expected": -31.0}, {"input": [-31.0, -78.5], "expected": -31.0}, {"input": [-31.0, -78.0], "expected": -31.0}, {"input": [-31.0, -77.5], "expected": -31.0}, {"input": [-31.0, -77.0], "expected": -31.0}, {"input": [-31.0, -76.5], "expected": -31.0}, {"input": [-31.0, -76.0], "expected": -31.0}, {"input": [-31.0, -75.5], "expected": -31.0}, {"input": [-31.0, -75.0], "expected": -31.0}, {"input": [-31.0, -74.5], "expected": -31.0}, {"input": [-31.0, -74.0], "expected": -31.0}, {"input": [-31.0, -73.5], "expected": -31.0}, {"input": [-31.0, -73.0], "expected": -31.0}, {"input": [-31.0, -72.5], "expected": -31.0}, {"input": [-31.0, -72.0], "expected": -31.0}, {"input": [-31.0, -71.5], "expected": -31.0}, {"input": [-31.0, -71.0], "expected": -31.0}, {"input": [-31.0, -70.5], "expected": -31.0}, {"input": [-31.0, -70.0], "expected": -31.0}, {"input": [-31.0, -69.5], "expected": -31.0}, {"input": [-31.0, -69.0], "expected": -31.0}, {"input": [-31.0, -68.5], "expected": -31.0}, {"input": [-31.0, -68.0], "expected": -31.0}, {"input": [-31.0, -67.5], "expected": -31.0}, {"input": [-31.0, -67.0], "expected": -31.0}, {"input": [-31.0, -66.5], "expected": -31.0}, {"input": [-31.0, -66.0], "expected": -31.0}, {"input": [-31.0, -65.5], "expected": -31.0}, {"input": [-31.0, -65.0], "expected": -31.0}, {"input": [-31.0, -64.5], "expected": -30.999999999999996}, {"input": [-31.0, -64.0], "expected": -30.999999999999996}, {"input": [-31.0, -63.5], "expected": -30.999999999999993}, {"input": [-31.0, -63.0], "expected": -30.999999999999986}, {"input": [-31.0, -62.5], "expected": -30.99999999999998}, {"input": [-31.0, -62.0], "expected": -30.999999999999964}, {"input": [-31.0, -61.5], "expected": -30.999999999999943}, {"input": [-31.0, -61.0], "expected": -30.999999999999908}, {"input": [-31.0, -60.5], "expected": -30.999999999999847}, {"input": [-31.0, -60.0], "expected": -30.999999999999744}, {"input": [-31.0, -59.5], "expected": -30.99999999999958}, {"input": [-31.0, -59.0], "expected": -30.999999999999307}, {"input": [-31.0, -58.5], "expected": -30.99999999999886}, {"input": [-31.0, -58.0], "expected": -30.99999999999812}, {"input": [-31.0, -57.5], "expected": -30.999999999996902}, {"input": [-31.0, -57.0], "expected": -30.99999999999489}, {"input": [-31.0, -56.5], "expected": -30.999999999991577}, {"input": [-31.0, -56.0], "expected": -30.999999999986112}, {"input": [-31.0, -55.5], "expected": -30.999999999977103}, {"input": [-31.0, -55.0], "expected": -30.99999999996225}, {"input": [-31.0, -54.5], "expected": -30.99999999993776}, {"input": [-31.0, -54.0], "expected": -30.99999999989738}, {"input": [-31.0, -53.5], "expected": -30.99999999983081}, {"input": [-31.0, -53.0], "expected": -30.99999999972105}, {"input": [-31.0, -52.5], "expected": -30.999999999540094}, {"input": [-31.0, -52.0], "expected": -30.999999999241744}, {"input": [-31.0, -51.5], "expected": -30.999999998749846}, {"input": [-31.0, -51.0], "expected": -30.999999997938847}, {"input": [-31.0, -50.5], "expected": -30.999999996601733}, {"input": [-31.0, -50.0], "expected": -30.999999994397204}, {"input": [-31.0, -49.5], "expected": -30.99999999076255}, {"input": [-31.0, -49.0], "expected": -30.99999998477002}, {"input": [-31.0, -48.5], "expected": -30.99999997489001}, {"input": [-31.0, -48.0], "expected": -30.999999958600625}, {"input": [-31.0, -47.5], "expected": -30.999999931743968}, {"input": [-31.0, -47.0], "expected": -30.99999988746483}, {"input": [-31.0, -46.5], "expected": -30.99999981446088}, {"input": [-31.0, -46.0], "expected": -30.999999694097728}, {"input": [-31.0, -45.5], "expected": -30.999999495652464}, {"input": [-31.0, -45.0], "expected": -30.999999168471625}, {"input": [-31.0, -44.5], "expected": -30.999998629041855}, {"input": [-31.0, -44.0], "expected": -30.999997739673148}, {"input": [-31.0, -43.5], "expected": -30.999996273353773}, {"input": [-31.0, -43.0], "expected": -30.999993855806522}, {"input": [-31.0, -42.5], "expected": -30.99998986995771}, {"input": [-31.0, -42.0], "expected": -30.999983298438682}, {"input": [-31.0, -41.5], "expected": -30.999972463929772}, {"input": [-31.0, -41.0], "expected": -30.999954601100782}, {"input": [-31.0, -40.5], "expected": -30.99992515097137}, {"input": [-31.0, -40.0], "expected": -30.999876597810278}, {"input": [-31.0, -39.5], "expected": -30.999796552327872}, {"input": [-31.0, -39.0], "expected": -30.999664593627106}, {"input": [-31.0, -38.5], "expected": -30.99944706852464}, {"input": [-31.0, -38.0], "expected": -30.999088533546225}, {"input": [-31.0, -37.5], "expected": -30.998497689840246}, {"input": [-31.0, -37.0], "expected": -30.997524314862268}, {"input": [-31.0, -36.5], "expected": -30.995921556729428}, {"input": [-31.0, -36.0], "expected": -30.993284651510884}, {"input": [-31.0, -35.5], "expected": -30.988952255151407}, {"input": [-31.0, -35.0], "expected": -30.98185007208219}, {"input": [-31.0, -34.5], "expected": -30.97024958172738}, {"input": [-31.0, -34.0], "expected": -30.951412648426256}, {"input": [-31.0, -33.5], "expected": -30.92111026570745}, {"input": [-31.0, -33.0], "expected": -30.873071988957026}, {"input": [-31.0, -32.5], "expected": -30.798586722017248}, {"input": [-31.0, -32.0], "expected": -30.686738312481776}, {"input": [-31.0, -31.5], "expected": -30.52592301581989}, {"input": [-31.0, -31.0], "expected": -30.306852819440056}, {"input": [-31.0, -30.5], "expected": -30.02592301581989}, {"input": [-31.0, -30.0], "expected": -29.686738312481776}, {"input": [-31.0, -29.5], "expected": -29.298586722017248}, {"input": [-31.0, -29.0], "expected": -28.873071988957026}, {"input": [-31.0, -28.5], "expected": -28.42111026570745}, {"input": [-31.0, -28.0], "expected": -27.951412648426256}, {"input": [-31.0, -27.5], "expected": -27.47024958172738}, {"input": [-31.0, -27.0], "expected": -26.98185007208219}, {"input": [-31.0, -26.5], "expected": -26.488952255151407}, {"input": [-31.0, -26.0], "expected": -25.993284651510884}, {"input": [-31.0, -25.5], "expected": -25.495921556729428}, {"input": [-31.0, -25.0], "expected": -24.997524314862268}, {"input": [-31.0, -24.5], "expected": -24.498497689840246}, {"input": [-31.0, -24.0], "expected": -23.999088533546225}, {"input": [-31.0, -23.5], "expected": -23.49944706852464}, {"input": [-31.0, -23.0], "expected": -22.999664593627106}, {"input": [-31.0, -22.5], "expected": -22.499796552327872}, {"input": [-31.0, -22.0], "expected": -21.999876597810278}, {"input": [-31.0, -21.5], "expected": -21.49992515097137}, {"input": [-31.0, -21.0], "expected": -20.999954601100782}, {"input": [-31.0, -20.5], "expected": -20.499972463929772}, {"input": [-31.0, -20.0], "expected": -19.999983298438682}, {"input": [-31.0, -19.5], "expected": -19.49998986995771}, {"input": [-31.0, -19.0], "expected": -18.999993855806522}, {"input": [-31.0, -18.5], "expected": -18.499996273353773}, {"input": [-31.0, -18.0], "expected": -17.999997739673148}, {"input": [-31.0, -17.5], "expected": -17.499998629041855}, {"input": [-31.0, -17.0], "expected": -16.999999168471625}, {"input": [-31.0, -16.5], "expected": -16.499999495652464}, {"input": [-31.0, -16.0], "expected": -15.999999694097726}, {"input": [-31.0, -15.5], "expected": -15.499999814460882}, {"input": [-31.0, -15.0], "expected": -14.999999887464831}, {"input": [-31.0, -14.5], "expected": -14.499999931743968}, {"input": [-31.0, -14.0], "expected": -13.999999958600624}, {"input": [-31.0, -13.5], "expected": -13.49999997489001}, {"input": [-31.0, -13.0], "expected": -12.999999984770021}, {"input": [-31.0, -12.5], "expected": -12.49999999076255}, {"input": [-31.0, -12.0], "expected": -11.999999994397204}, {"input": [-31.0, -11.5], "expected": -11.499999996601732}, {"input": [-31.0, -11.0], "expected": -10.999999997938847}, {"input": [-31.0, -10.5], "expected": -10.499999998749848}, {"input": [-31.0, -10.0], "expected": -9.999999999241744}, {"input": [-31.0, -9.5], "expected": -9.499999999540094}, {"input": [-31.0, -9.0], "expected": -8.999999999721053}, {"input": [-31.0, -8.5], "expected": -8.499999999830811}, {"input": [-31.0, -8.0], "expected": -7.999999999897382}, {"input": [-31.0, -7.5], "expected": -7.499999999937758}, {"input": [-31.0, -7.0], "expected": -6.999999999962249}, {"input": [-31.0, -6.5], "expected": -6.499999999977103}, {"input": [-31.0, -6.0], "expected": -5.999999999986112}, {"input": [-31.0, -5.5], "expected": -5.4999999999915765}, {"input": [-31.0, -5.0], "expected": -4.999999999994891}, {"input": [-31.0, -4.5], "expected": -4.499999999996901}, {"input": [-31.0, -4.0], "expected": -3.9999999999981206}, {"input": [-31.0, -3.5], "expected": -3.49999999999886}, {"input": [-31.0, -3.0], "expected": -2.9999999999993086}, {"input": [-31.0, -2.5], "expected": -2.499999999999581}, {"input": [-31.0, -2.0], "expected": -1.9999999999997455}, {"input": [-31.0, -1.5], "expected": -1.4999999999998457}, {"input": [-31.0, -1.0], "expected": -0.9999999999999064}, {"input": [-31.0, -0.5], "expected": -0.49999999999994327}, {"input": [-31.0, 0.0], "expected": 3.4424771084699174e-14}, {"input": [-31.0, 0.5], "expected": 0.5000000000000209}, {"input": [-31.0, 1.0], "expected": 1.0000000000000127}, {"input": [-31.0, 1.5], "expected": 1.5000000000000078}, {"input": [-31.0, 2.0], "expected": 2.0000000000000044}, {"input": [-31.0, 2.5], "expected": 2.5000000000000027}, {"input": [-31.0, 3.0], "expected": 3.0000000000000018}, {"input": [-31.0, 3.5], "expected": 3.500000000000001}, {"input": [-31.0, 4.0], "expected": 4.000000000000001}, {"input": [-31.0, 4.5], "expected": 4.5}, {"input": [-31.0, 5.0], "expected": 5.0}, {"input": [-31.0, 5.5], "expected": 5.5}, {"input": [-31.0, 6.0], "expected": 6.0}, {"input": [-31.0, 6.5], "expected": 6.5}, {"input": [-31.0, 7.0], "expected": 7.0}, {"input": [-31.0, 7.5], "expected": 7.5}, {"input": [-31.0, 8.0], "expected": 8.0}, {"input": [-31.0, 8.5], "expected": 8.5}, {"input": [-31.0, 9.0], "expected": 9.0}, {"input": [-31.0, 9.5], "expected": 9.5}, {"input": [-31.0, 10.0], "expected": 10.0}, {"input": [-31.0, 10.5], "expected": 10.5}, {"input": [-31.0, 11.0], "expected": 11.0}, {"input": [-31.0, 11.5], "expected": 11.5}, {"input": [-31.0, 12.0], "expected": 12.0}, {"input": [-31.0, 12.5], "expected": 12.5}, {"input": [-31.0, 13.0], "expected": 13.0}, {"input": [-31.0, 13.5], "expected": 13.5}, {"input": [-31.0, 14.0], "expected": 14.0}, {"input": [-31.0, 14.5], "expected": 14.5}, {"input": [-31.0, 15.0], "expected": 15.0}, {"input": [-31.0, 15.5], "expected": 15.5}, {"input": [-31.0, 16.0], "expected": 16.0}, {"input": [-31.0, 16.5], "expected": 16.5}, {"input": [-31.0, 17.0], "expected": 17.0}, {"input": [-31.0, 17.5], "expected": 17.5}, {"input": [-31.0, 18.0], "expected": 18.0}, {"input": [-31.0, 18.5], "expected": 18.5}, {"input": [-31.0, 19.0], "expected": 19.0}, {"input": [-31.0, 19.5], "expected": 19.5}, {"input": [-31.0, 20.0], "expected": 20.0}, {"input": [-31.0, 20.5], "expected": 20.5}, {"input": [-31.0, 21.0], "expected": 21.0}, {"input": [-31.0, 21.5], "expected": 21.5}, {"input": [-31.0, 22.0], "expected": 22.0}, {"input": [-31.0, 22.5], "expected": 22.5}, {"input": [-31.0, 23.0], "expected": 23.0}, {"input": [-31.0, 23.5], "expected": 23.5}, {"input": [-31.0, 24.0], "expected": 24.0}, {"input": [-31.0, 24.5], "expected": 24.5}, {"input": [-31.0, 25.0], "expected": 25.0}, {"input": [-31.0, 25.5], "expected": 25.5}, {"input": [-31.0, 26.0], "expected": 26.0}, {"input": [-31.0, 26.5], "expected": 26.5}, {"input": [-31.0, 27.0], "expected": 27.0}, {"input": [-31.0, 27.5], "expected": 27.5}, {"input": [-31.0, 28.0], "expected": 28.0}, {"input": [-31.0, 28.5], "expected": 28.5}, {"input": [-31.0, 29.0], "expected": 29.0}, {"input": [-31.0, 29.5], "expected": 29.5}, {"input": [-31.0, 30.0], "expected": 30.0}, {"input": [-31.0, 30.5], "expected": 30.5}, {"input": [-31.0, 31.0], "expected": 31.0}, {"input": [-31.0, 31.5], "expected": 31.5}, {"input": [-31.0, 32.0], "expected": 32.0}, {"input": [-31.0, 32.5], "expected": 32.5}, {"input": [-31.0, 33.0], "expected": 33.0}, {"input": [-31.0, 33.5], "expected": 33.5}, {"input": [-31.0, 34.0], "expected": 34.0}, {"input": [-31.0, 34.5], "expected": 34.5}, {"input": [-31.0, 35.0], "expected": 35.0}, {"input": [-31.0, 35.5], "expected": 35.5}, {"input": [-31.0, 36.0], "expected": 36.0}, {"input": [-31.0, 36.5], "expected": 36.5}, {"input": [-31.0, 37.0], "expected": 37.0}, {"input": [-31.0, 37.5], "expected": 37.5}, {"input": [-31.0, 38.0], "expected": 38.0}, {"input": [-31.0, 38.5], "expected": 38.5}, {"input": [-31.0, 39.0], "expected": 39.0}, {"input": [-31.0, 39.5], "expected": 39.5}, {"input": [-31.0, 40.0], "expected": 40.0}, {"input": [-31.0, 40.5], "expected": 40.5}, {"input": [-31.0, 41.0], "expected": 41.0}, {"input": [-31.0, 41.5], "expected": 41.5}, {"input": [-31.0, 42.0], "expected": 42.0}, {"input": [-31.0, 42.5], "expected": 42.5}, {"input": [-31.0, 43.0], "expected": 43.0}, {"input": [-31.0, 43.5], "expected": 43.5}, {"input": [-31.0, 44.0], "expected": 44.0}, {"input": [-31.0, 44.5], "expected": 44.5}, {"input": [-31.0, 45.0], "expected": 45.0}, {"input": [-31.0, 45.5], "expected": 45.5}, {"input": [-31.0, 46.0], "expected": 46.0}, {"input": [-31.0, 46.5], "expected": 46.5}, {"input": [-31.0, 47.0], "expected": 47.0}, {"input": [-31.0, 47.5], "expected": 47.5}, {"input": [-31.0, 48.0], "expected": 48.0}, {"input": [-31.0, 48.5], "expected": 48.5}, {"input": [-31.0, 49.0], "expected": 49.0}, {"input": [-31.0, 49.5], "expected": 49.5}, {"input": [-31.0, 50.0], "expected": 50.0}, {"input": [-31.0, 50.5], "expected": 50.5}, {"input": [-31.0, 51.0], "expected": 51.0}, {"input": [-31.0, 51.5], "expected": 51.5}, {"input": [-31.0, 52.0], "expected": 52.0}, {"input": [-31.0, 52.5], "expected": 52.5}, {"input": [-31.0, 53.0], "expected": 53.0}, {"input": [-31.0, 53.5], "expected": 53.5}, {"input": [-31.0, 54.0], "expected": 54.0}, {"input": [-31.0, 54.5], "expected": 54.5}, {"input": [-31.0, 55.0], "expected": 55.0}, {"input": [-31.0, 55.5], "expected": 55.5}, {"input": [-31.0, 56.0], "expected": 56.0}, {"input": [-31.0, 56.5], "expected": 56.5}, {"input": [-31.0, 57.0], "expected": 57.0}, {"input": [-31.0, 57.5], "expected": 57.5}, {"input": [-31.0, 58.0], "expected": 58.0}, {"input": [-31.0, 58.5], "expected": 58.5}, {"input": [-31.0, 59.0], "expected": 59.0}, {"input": [-31.0, 59.5], "expected": 59.5}, {"input": [-31.0, 60.0], "expected": 60.0}, {"input": [-31.0, 60.5], "expected": 60.5}, {"input": [-31.0, 61.0], "expected": 61.0}, {"input": [-31.0, 61.5], "expected": 61.5}, {"input": [-31.0, 62.0], "expected": 62.0}, {"input": [-31.0, 62.5], "expected": 62.5}, {"input": [-31.0, 63.0], "expected": 63.0}, {"input": [-31.0, 63.5], "expected": 63.5}, {"input": [-31.0, 64.0], "expected": 64.0}, {"input": [-31.0, 64.5], "expected": 64.5}, {"input": [-31.0, 65.0], "expected": 65.0}, {"input": [-31.0, 65.5], "expected": 65.5}, {"input": [-31.0, 66.0], "expected": 66.0}, {"input": [-31.0, 66.5], "expected": 66.5}, {"input": [-31.0, 67.0], "expected": 67.0}, {"input": [-31.0, 67.5], "expected": 67.5}, {"input": [-31.0, 68.0], "expected": 68.0}, {"input": [-31.0, 68.5], "expected": 68.5}, {"input": [-31.0, 69.0], "expected": 69.0}, {"input": [-31.0, 69.5], "expected": 69.5}, {"input": [-31.0, 70.0], "expected": 70.0}, {"input": [-31.0, 70.5], "expected": 70.5}, {"input": [-31.0, 71.0], "expected": 71.0}, {"input": [-31.0, 71.5], "expected": 71.5}, {"input": [-31.0, 72.0], "expected": 72.0}, {"input": [-31.0, 72.5], "expected": 72.5}, {"input": [-31.0, 73.0], "expected": 73.0}, {"input": [-31.0, 73.5], "expected": 73.5}, {"input": [-31.0, 74.0], "expected": 74.0}, {"input": [-31.0, 74.5], "expected": 74.5}, {"input": [-31.0, 75.0], "expected": 75.0}, {"input": [-31.0, 75.5], "expected": 75.5}, {"input": [-31.0, 76.0], "expected": 76.0}, {"input": [-31.0, 76.5], "expected": 76.5}, {"input": [-31.0, 77.0], "expected": 77.0}, {"input": [-31.0, 77.5], "expected": 77.5}, {"input": [-31.0, 78.0], "expected": 78.0}, {"input": [-31.0, 78.5], "expected": 78.5}, {"input": [-31.0, 79.0], "expected": 79.0}, {"input": [-31.0, 79.5], "expected": 79.5}, {"input": [-31.0, 80.0], "expected": 80.0}, {"input": [-31.0, 80.5], "expected": 80.5}, {"input": [-31.0, 81.0], "expected": 81.0}, {"input": [-31.0, 81.5], "expected": 81.5}, {"input": [-31.0, 82.0], "expected": 82.0}, {"input": [-31.0, 82.5], "expected": 82.5}, {"input": [-31.0, 83.0], "expected": 83.0}, {"input": [-31.0, 83.5], "expected": 83.5}, {"input": [-31.0, 84.0], "expected": 84.0}, {"input": [-31.0, 84.5], "expected": 84.5}, {"input": [-31.0, 85.0], "expected": 85.0}, {"input": [-31.0, 85.5], "expected": 85.5}, {"input": [-31.0, 86.0], "expected": 86.0}, {"input": [-31.0, 86.5], "expected": 86.5}, {"input": [-31.0, 87.0], "expected": 87.0}, {"input": [-31.0, 87.5], "expected": 87.5}, {"input": [-31.0, 88.0], "expected": 88.0}, {"input": [-31.0, 88.5], "expected": 88.5}, {"input": [-31.0, 89.0], "expected": 89.0}, {"input": [-31.0, 89.5], "expected": 89.5}, {"input": [-31.0, 90.0], "expected": 90.0}, {"input": [-31.0, 90.5], "expected": 90.5}, {"input": [-31.0, 91.0], "expected": 91.0}, {"input": [-31.0, 91.5], "expected": 91.5}, {"input": [-31.0, 92.0], "expected": 92.0}, {"input": [-31.0, 92.5], "expected": 92.5}, {"input": [-31.0, 93.0], "expected": 93.0}, {"input": [-31.0, 93.5], "expected": 93.5}, {"input": [-31.0, 94.0], "expected": 94.0}, {"input": [-31.0, 94.5], "expected": 94.5}, {"input": [-31.0, 95.0], "expected": 95.0}, {"input": [-31.0, 95.5], "expected": 95.5}, {"input": [-31.0, 96.0], "expected": 96.0}, {"input": [-31.0, 96.5], "expected": 96.5}, {"input": [-31.0, 97.0], "expected": 97.0}, {"input": [-31.0, 97.5], "expected": 97.5}, {"input": [-31.0, 98.0], "expected": 98.0}, {"input": [-31.0, 98.5], "expected": 98.5}, {"input": [-31.0, 99.0], "expected": 99.0}, {"input": [-31.0, 99.5], "expected": 99.5}, {"input": [-30.5, -100.0], "expected": -30.5}, {"input": [-30.5, -99.5], "expected": -30.5}, {"input": [-30.5, -99.0], "expected": -30.5}, {"input": [-30.5, -98.5], "expected": -30.5}, {"input": [-30.5, -98.0], "expected": -30.5}, {"input": [-30.5, -97.5], "expected": -30.5}, {"input": [-30.5, -97.0], "expected": -30.5}, {"input": [-30.5, -96.5], "expected": -30.5}, {"input": [-30.5, -96.0], "expected": -30.5}, {"input": [-30.5, -95.5], "expected": -30.5}, {"input": [-30.5, -95.0], "expected": -30.5}, {"input": [-30.5, -94.5], "expected": -30.5}, {"input": [-30.5, -94.0], "expected": -30.5}, {"input": [-30.5, -93.5], "expected": -30.5}, {"input": [-30.5, -93.0], "expected": -30.5}, {"input": [-30.5, -92.5], "expected": -30.5}, {"input": [-30.5, -92.0], "expected": -30.5}, {"input": [-30.5, -91.5], "expected": -30.5}, {"input": [-30.5, -91.0], "expected": -30.5}, {"input": [-30.5, -90.5], "expected": -30.5}, {"input": [-30.5, -90.0], "expected": -30.5}, {"input": [-30.5, -89.5], "expected": -30.5}, {"input": [-30.5, -89.0], "expected": -30.5}, {"input": [-30.5, -88.5], "expected": -30.5}, {"input": [-30.5, -88.0], "expected": -30.5}, {"input": [-30.5, -87.5], "expected": -30.5}, {"input": [-30.5, -87.0], "expected": -30.5}, {"input": [-30.5, -86.5], "expected": -30.5}, {"input": [-30.5, -86.0], "expected": -30.5}, {"input": [-30.5, -85.5], "expected": -30.5}, {"input": [-30.5, -85.0], "expected": -30.5}, {"input": [-30.5, -84.5], "expected": -30.5}, {"input": [-30.5, -84.0], "expected": -30.5}, {"input": [-30.5, -83.5], "expected": -30.5}, {"input": [-30.5, -83.0], "expected": -30.5}, {"input": [-30.5, -82.5], "expected": -30.5}, {"input": [-30.5, -82.0], "expected": -30.5}, {"input": [-30.5, -81.5], "expected": -30.5}, {"input": [-30.5, -81.0], "expected": -30.5}, {"input": [-30.5, -80.5], "expected": -30.5}, {"input": [-30.5, -80.0], "expected": -30.5}, {"input": [-30.5, -79.5], "expected": -30.5}, {"input": [-30.5, -79.0], "expected": -30.5}, {"input": [-30.5, -78.5], "expected": -30.5}, {"input": [-30.5, -78.0], "expected": -30.5}, {"input": [-30.5, -77.5], "expected": -30.5}, {"input": [-30.5, -77.0], "expected": -30.5}, {"input": [-30.5, -76.5], "expected": -30.5}, {"input": [-30.5, -76.0], "expected": -30.5}, {"input": [-30.5, -75.5], "expected": -30.5}, {"input": [-30.5, -75.0], "expected": -30.5}, {"input": [-30.5, -74.5], "expected": -30.5}, {"input": [-30.5, -74.0], "expected": -30.5}, {"input": [-30.5, -73.5], "expected": -30.5}, {"input": [-30.5, -73.0], "expected": -30.5}, {"input": [-30.5, -72.5], "expected": -30.5}, {"input": [-30.5, -72.0], "expected": -30.5}, {"input": [-30.5, -71.5], "expected": -30.5}, {"input": [-30.5, -71.0], "expected": -30.5}, {"input": [-30.5, -70.5], "expected": -30.5}, {"input": [-30.5, -70.0], "expected": -30.5}, {"input": [-30.5, -69.5], "expected": -30.5}, {"input": [-30.5, -69.0], "expected": -30.5}, {"input": [-30.5, -68.5], "expected": -30.5}, {"input": [-30.5, -68.0], "expected": -30.5}, {"input": [-30.5, -67.5], "expected": -30.5}, {"input": [-30.5, -67.0], "expected": -30.5}, {"input": [-30.5, -66.5], "expected": -30.5}, {"input": [-30.5, -66.0], "expected": -30.5}, {"input": [-30.5, -65.5], "expected": -30.5}, {"input": [-30.5, -65.0], "expected": -30.5}, {"input": [-30.5, -64.5], "expected": -30.5}, {"input": [-30.5, -64.0], "expected": -30.499999999999996}, {"input": [-30.5, -63.5], "expected": -30.499999999999996}, {"input": [-30.5, -63.0], "expected": -30.499999999999993}, {"input": [-30.5, -62.5], "expected": -30.499999999999986}, {"input": [-30.5, -62.0], "expected": -30.49999999999998}, {"input": [-30.5, -61.5], "expected": -30.499999999999964}, {"input": [-30.5, -61.0], "expected": -30.499999999999943}, {"input": [-30.5, -60.5], "expected": -30.499999999999908}, {"input": [-30.5, -60.0], "expected": -30.499999999999847}, {"input": [-30.5, -59.5], "expected": -30.499999999999744}, {"input": [-30.5, -59.0], "expected": -30.49999999999958}, {"input": [-30.5, -58.5], "expected": -30.499999999999307}, {"input": [-30.5, -58.0], "expected": -30.49999999999886}, {"input": [-30.5, -57.5], "expected": -30.49999999999812}, {"input": [-30.5, -57.0], "expected": -30.499999999996902}, {"input": [-30.5, -56.5], "expected": -30.49999999999489}, {"input": [-30.5, -56.0], "expected": -30.499999999991577}, {"input": [-30.5, -55.5], "expected": -30.499999999986112}, {"input": [-30.5, -55.0], "expected": -30.499999999977103}, {"input": [-30.5, -54.5], "expected": -30.49999999996225}, {"input": [-30.5, -54.0], "expected": -30.49999999993776}, {"input": [-30.5, -53.5], "expected": -30.49999999989738}, {"input": [-30.5, -53.0], "expected": -30.49999999983081}, {"input": [-30.5, -52.5], "expected": -30.49999999972105}, {"input": [-30.5, -52.0], "expected": -30.499999999540094}, {"input": [-30.5, -51.5], "expected": -30.499999999241744}, {"input": [-30.5, -51.0], "expected": -30.499999998749846}, {"input": [-30.5, -50.5], "expected": -30.499999997938847}, {"input": [-30.5, -50.0], "expected": -30.499999996601733}, {"input": [-30.5, -49.5], "expected": -30.499999994397204}, {"input": [-30.5, -49.0], "expected": -30.49999999076255}, {"input": [-30.5, -48.5], "expected": -30.49999998477002}, {"input": [-30.5, -48.0], "expected": -30.49999997489001}, {"input": [-30.5, -47.5], "expected": -30.499999958600625}, {"input": [-30.5, -47.0], "expected": -30.499999931743968}, {"input": [-30.5, -46.5], "expected": -30.49999988746483}, {"input": [-30.5, -46.0], "expected": -30.49999981446088}, {"input": [-30.5, -45.5], "expected": -30.499999694097728}, {"input": [-30.5, -45.0], "expected": -30.499999495652464}, {"input": [-30.5, -44.5], "expected": -30.499999168471625}, {"input": [-30.5, -44.0], "expected": -30.499998629041855}, {"input": [-30.5, -43.5], "expected": -30.499997739673148}, {"input": [-30.5, -43.0], "expected": -30.499996273353773}, {"input": [-30.5, -42.5], "expected": -30.499993855806522}, {"input": [-30.5, -42.0], "expected": -30.49998986995771}, {"input": [-30.5, -41.5], "expected": -30.499983298438682}, {"input": [-30.5, -41.0], "expected": -30.499972463929772}, {"input": [-30.5, -40.5], "expected": -30.499954601100782}, {"input": [-30.5, -40.0], "expected": -30.49992515097137}, {"input": [-30.5, -39.5], "expected": -30.499876597810278}, {"input": [-30.5, -39.0], "expected": -30.499796552327872}, {"input": [-30.5, -38.5], "expected": -30.499664593627106}, {"input": [-30.5, -38.0], "expected": -30.49944706852464}, {"input": [-30.5, -37.5], "expected": -30.499088533546225}, {"input": [-30.5, -37.0], "expected": -30.498497689840246}, {"input": [-30.5, -36.5], "expected": -30.497524314862268}, {"input": [-30.5, -36.0], "expected": -30.495921556729428}, {"input": [-30.5, -35.5], "expected": -30.493284651510884}, {"input": [-30.5, -35.0], "expected": -30.488952255151407}, {"input": [-30.5, -34.5], "expected": -30.48185007208219}, {"input": [-30.5, -34.0], "expected": -30.47024958172738}, {"input": [-30.5, -33.5], "expected": -30.451412648426256}, {"input": [-30.5, -33.0], "expected": -30.42111026570745}, {"input": [-30.5, -32.5], "expected": -30.373071988957026}, {"input": [-30.5, -32.0], "expected": -30.298586722017248}, {"input": [-30.5, -31.5], "expected": -30.186738312481776}, {"input": [-30.5, -31.0], "expected": -30.02592301581989}, {"input": [-30.5, -30.5], "expected": -29.806852819440056}, {"input": [-30.5, -30.0], "expected": -29.52592301581989}, {"input": [-30.5, -29.5], "expected": -29.186738312481776}, {"input": [-30.5, -29.0], "expected": -28.798586722017248}, {"input": [-30.5, -28.5], "expected": -28.373071988957026}, {"input": [-30.5, -28.0], "expected": -27.92111026570745}, {"input": [-30.5, -27.5], "expected": -27.451412648426256}, {"input": [-30.5, -27.0], "expected": -26.97024958172738}, {"input": [-30.5, -26.5], "expected": -26.48185007208219}, {"input": [-30.5, -26.0], "expected": -25.988952255151407}, {"input": [-30.5, -25.5], "expected": -25.493284651510884}, {"input": [-30.5, -25.0], "expected": -24.995921556729428}, {"input": [-30.5, -24.5], "expected": -24.497524314862268}, {"input": [-30.5, -24.0], "expected": -23.998497689840246}, {"input": [-30.5, -23.5], "expected": -23.499088533546225}, {"input": [-30.5, -23.0], "expected": -22.99944706852464}, {"input": [-30.5, -22.5], "expected": -22.499664593627106}, {"input": [-30.5, -22.0], "expected": -21.999796552327872}, {"input": [-30.5, -21.5], "expected": -21.499876597810278}, {"input": [-30.5, -21.0], "expected": -20.99992515097137}, {"input": [-30.5, -20.5], "expected": -20.499954601100782}, {"input": [-30.5, -20.0], "expected": -19.999972463929772}, {"input": [-30.5, -19.5], "expected": -19.499983298438682}, {"input": [-30.5, -19.0], "expected": -18.99998986995771}, {"input": [-30.5, -18.5], "expected": -18.499993855806522}, {"input": [-30.5, -18.0], "expected": -17.999996273353773}, {"input": [-30.5, -17.5], "expected": -17.499997739673148}, {"input": [-30.5, -17.0], "expected": -16.999998629041855}, {"input": [-30.5, -16.5], "expected": -16.499999168471625}, {"input": [-30.5, -16.0], "expected": -15.999999495652464}, {"input": [-30.5, -15.5], "expected": -15.499999694097726}, {"input": [-30.5, -15.0], "expected": -14.999999814460882}, {"input": [-30.5, -14.5], "expected": -14.499999887464831}, {"input": [-30.5, -14.0], "expected": -13.999999931743968}, {"input": [-30.5, -13.5], "expected": -13.499999958600624}, {"input": [-30.5, -13.0], "expected": -12.99999997489001}, {"input": [-30.5, -12.5], "expected": -12.499999984770021}, {"input": [-30.5, -12.0], "expected": -11.99999999076255}, {"input": [-30.5, -11.5], "expected": -11.499999994397204}, {"input": [-30.5, -11.0], "expected": -10.999999996601732}, {"input": [-30.5, -10.5], "expected": -10.499999997938847}, {"input": [-30.5, -10.0], "expected": -9.999999998749848}, {"input": [-30.5, -9.5], "expected": -9.499999999241744}, {"input": [-30.5, -9.0], "expected": -8.999999999540094}, {"input": [-30.5, -8.5], "expected": -8.499999999721053}, {"input": [-30.5, -8.0], "expected": -7.99999999983081}, {"input": [-30.5, -7.5], "expected": -7.499999999897382}, {"input": [-30.5, -7.0], "expected": -6.999999999937758}, {"input": [-30.5, -6.5], "expected": -6.499999999962249}, {"input": [-30.5, -6.0], "expected": -5.999999999977103}, {"input": [-30.5, -5.5], "expected": -5.499999999986112}, {"input": [-30.5, -5.0], "expected": -4.9999999999915765}, {"input": [-30.5, -4.5], "expected": -4.499999999994891}, {"input": [-30.5, -4.0], "expected": -3.999999999996901}, {"input": [-30.5, -3.5], "expected": -3.4999999999981206}, {"input": [-30.5, -3.0], "expected": -2.99999999999886}, {"input": [-30.5, -2.5], "expected": -2.4999999999993086}, {"input": [-30.5, -2.0], "expected": -1.9999999999995806}, {"input": [-30.5, -1.5], "expected": -1.4999999999997455}, {"input": [-30.5, -1.0], "expected": -0.9999999999998457}, {"input": [-30.5, -0.5], "expected": -0.4999999999999064}, {"input": [-30.5, 0.0], "expected": 5.675685232632562e-14}, {"input": [-30.5, 0.5], "expected": 0.5000000000000344}, {"input": [-30.5, 1.0], "expected": 1.0000000000000209}, {"input": [-30.5, 1.5], "expected": 1.5000000000000127}, {"input": [-30.5, 2.0], "expected": 2.0000000000000075}, {"input": [-30.5, 2.5], "expected": 2.5000000000000044}, {"input": [-30.5, 3.0], "expected": 3.0000000000000027}, {"input": [-30.5, 3.5], "expected": 3.5000000000000018}, {"input": [-30.5, 4.0], "expected": 4.000000000000001}, {"input": [-30.5, 4.5], "expected": 4.500000000000001}, {"input": [-30.5, 5.0], "expected": 5.0}, {"input": [-30.5, 5.5], "expected": 5.5}, {"input": [-30.5, 6.0], "expected": 6.0}, {"input": [-30.5, 6.5], "expected": 6.5}, {"input": [-30.5, 7.0], "expected": 7.0}, {"input": [-30.5, 7.5], "expected": 7.5}, {"input": [-30.5, 8.0], "expected": 8.0}, {"input": [-30.5, 8.5], "expected": 8.5}, {"input": [-30.5, 9.0], "expected": 9.0}, {"input": [-30.5, 9.5], "expected": 9.5}, {"input": [-30.5, 10.0], "expected": 10.0}, {"input": [-30.5, 10.5], "expected": 10.5}, {"input": [-30.5, 11.0], "expected": 11.0}, {"input": [-30.5, 11.5], "expected": 11.5}, {"input": [-30.5, 12.0], "expected": 12.0}, {"input": [-30.5, 12.5], "expected": 12.5}, {"input": [-30.5, 13.0], "expected": 13.0}, {"input": [-30.5, 13.5], "expected": 13.5}, {"input": [-30.5, 14.0], "expected": 14.0}, {"input": [-30.5, 14.5], "expected": 14.5}, {"input": [-30.5, 15.0], "expected": 15.0}, {"input": [-30.5, 15.5], "expected": 15.5}, {"input": [-30.5, 16.0], "expected": 16.0}, {"input": [-30.5, 16.5], "expected": 16.5}, {"input": [-30.5, 17.0], "expected": 17.0}, {"input": [-30.5, 17.5], "expected": 17.5}, {"input": [-30.5, 18.0], "expected": 18.0}, {"input": [-30.5, 18.5], "expected": 18.5}, {"input": [-30.5, 19.0], "expected": 19.0}, {"input": [-30.5, 19.5], "expected": 19.5}, {"input": [-30.5, 20.0], "expected": 20.0}, {"input": [-30.5, 20.5], "expected": 20.5}, {"input": [-30.5, 21.0], "expected": 21.0}, {"input": [-30.5, 21.5], "expected": 21.5}, {"input": [-30.5, 22.0], "expected": 22.0}, {"input": [-30.5, 22.5], "expected": 22.5}, {"input": [-30.5, 23.0], "expected": 23.0}, {"input": [-30.5, 23.5], "expected": 23.5}, {"input": [-30.5, 24.0], "expected": 24.0}, {"input": [-30.5, 24.5], "expected": 24.5}, {"input": [-30.5, 25.0], "expected": 25.0}, {"input": [-30.5, 25.5], "expected": 25.5}, {"input": [-30.5, 26.0], "expected": 26.0}, {"input": [-30.5, 26.5], "expected": 26.5}, {"input": [-30.5, 27.0], "expected": 27.0}, {"input": [-30.5, 27.5], "expected": 27.5}, {"input": [-30.5, 28.0], "expected": 28.0}, {"input": [-30.5, 28.5], "expected": 28.5}, {"input": [-30.5, 29.0], "expected": 29.0}, {"input": [-30.5, 29.5], "expected": 29.5}, {"input": [-30.5, 30.0], "expected": 30.0}, {"input": [-30.5, 30.5], "expected": 30.5}, {"input": [-30.5, 31.0], "expected": 31.0}, {"input": [-30.5, 31.5], "expected": 31.5}, {"input": [-30.5, 32.0], "expected": 32.0}, {"input": [-30.5, 32.5], "expected": 32.5}, {"input": [-30.5, 33.0], "expected": 33.0}, {"input": [-30.5, 33.5], "expected": 33.5}, {"input": [-30.5, 34.0], "expected": 34.0}, {"input": [-30.5, 34.5], "expected": 34.5}, {"input": [-30.5, 35.0], "expected": 35.0}, {"input": [-30.5, 35.5], "expected": 35.5}, {"input": [-30.5, 36.0], "expected": 36.0}, {"input": [-30.5, 36.5], "expected": 36.5}, {"input": [-30.5, 37.0], "expected": 37.0}, {"input": [-30.5, 37.5], "expected": 37.5}, {"input": [-30.5, 38.0], "expected": 38.0}, {"input": [-30.5, 38.5], "expected": 38.5}, {"input": [-30.5, 39.0], "expected": 39.0}, {"input": [-30.5, 39.5], "expected": 39.5}, {"input": [-30.5, 40.0], "expected": 40.0}, {"input": [-30.5, 40.5], "expected": 40.5}, {"input": [-30.5, 41.0], "expected": 41.0}, {"input": [-30.5, 41.5], "expected": 41.5}, {"input": [-30.5, 42.0], "expected": 42.0}, {"input": [-30.5, 42.5], "expected": 42.5}, {"input": [-30.5, 43.0], "expected": 43.0}, {"input": [-30.5, 43.5], "expected": 43.5}, {"input": [-30.5, 44.0], "expected": 44.0}, {"input": [-30.5, 44.5], "expected": 44.5}, {"input": [-30.5, 45.0], "expected": 45.0}, {"input": [-30.5, 45.5], "expected": 45.5}, {"input": [-30.5, 46.0], "expected": 46.0}, {"input": [-30.5, 46.5], "expected": 46.5}, {"input": [-30.5, 47.0], "expected": 47.0}, {"input": [-30.5, 47.5], "expected": 47.5}, {"input": [-30.5, 48.0], "expected": 48.0}, {"input": [-30.5, 48.5], "expected": 48.5}, {"input": [-30.5, 49.0], "expected": 49.0}, {"input": [-30.5, 49.5], "expected": 49.5}, {"input": [-30.5, 50.0], "expected": 50.0}, {"input": [-30.5, 50.5], "expected": 50.5}, {"input": [-30.5, 51.0], "expected": 51.0}, {"input": [-30.5, 51.5], "expected": 51.5}, {"input": [-30.5, 52.0], "expected": 52.0}, {"input": [-30.5, 52.5], "expected": 52.5}, {"input": [-30.5, 53.0], "expected": 53.0}, {"input": [-30.5, 53.5], "expected": 53.5}, {"input": [-30.5, 54.0], "expected": 54.0}, {"input": [-30.5, 54.5], "expected": 54.5}, {"input": [-30.5, 55.0], "expected": 55.0}, {"input": [-30.5, 55.5], "expected": 55.5}, {"input": [-30.5, 56.0], "expected": 56.0}, {"input": [-30.5, 56.5], "expected": 56.5}, {"input": [-30.5, 57.0], "expected": 57.0}, {"input": [-30.5, 57.5], "expected": 57.5}, {"input": [-30.5, 58.0], "expected": 58.0}, {"input": [-30.5, 58.5], "expected": 58.5}, {"input": [-30.5, 59.0], "expected": 59.0}, {"input": [-30.5, 59.5], "expected": 59.5}, {"input": [-30.5, 60.0], "expected": 60.0}, {"input": [-30.5, 60.5], "expected": 60.5}, {"input": [-30.5, 61.0], "expected": 61.0}, {"input": [-30.5, 61.5], "expected": 61.5}, {"input": [-30.5, 62.0], "expected": 62.0}, {"input": [-30.5, 62.5], "expected": 62.5}, {"input": [-30.5, 63.0], "expected": 63.0}, {"input": [-30.5, 63.5], "expected": 63.5}, {"input": [-30.5, 64.0], "expected": 64.0}, {"input": [-30.5, 64.5], "expected": 64.5}, {"input": [-30.5, 65.0], "expected": 65.0}, {"input": [-30.5, 65.5], "expected": 65.5}, {"input": [-30.5, 66.0], "expected": 66.0}, {"input": [-30.5, 66.5], "expected": 66.5}, {"input": [-30.5, 67.0], "expected": 67.0}, {"input": [-30.5, 67.5], "expected": 67.5}, {"input": [-30.5, 68.0], "expected": 68.0}, {"input": [-30.5, 68.5], "expected": 68.5}, {"input": [-30.5, 69.0], "expected": 69.0}, {"input": [-30.5, 69.5], "expected": 69.5}, {"input": [-30.5, 70.0], "expected": 70.0}, {"input": [-30.5, 70.5], "expected": 70.5}, {"input": [-30.5, 71.0], "expected": 71.0}, {"input": [-30.5, 71.5], "expected": 71.5}, {"input": [-30.5, 72.0], "expected": 72.0}, {"input": [-30.5, 72.5], "expected": 72.5}, {"input": [-30.5, 73.0], "expected": 73.0}, {"input": [-30.5, 73.5], "expected": 73.5}, {"input": [-30.5, 74.0], "expected": 74.0}, {"input": [-30.5, 74.5], "expected": 74.5}, {"input": [-30.5, 75.0], "expected": 75.0}, {"input": [-30.5, 75.5], "expected": 75.5}, {"input": [-30.5, 76.0], "expected": 76.0}, {"input": [-30.5, 76.5], "expected": 76.5}, {"input": [-30.5, 77.0], "expected": 77.0}, {"input": [-30.5, 77.5], "expected": 77.5}, {"input": [-30.5, 78.0], "expected": 78.0}, {"input": [-30.5, 78.5], "expected": 78.5}, {"input": [-30.5, 79.0], "expected": 79.0}, {"input": [-30.5, 79.5], "expected": 79.5}, {"input": [-30.5, 80.0], "expected": 80.0}, {"input": [-30.5, 80.5], "expected": 80.5}, {"input": [-30.5, 81.0], "expected": 81.0}, {"input": [-30.5, 81.5], "expected": 81.5}, {"input": [-30.5, 82.0], "expected": 82.0}, {"input": [-30.5, 82.5], "expected": 82.5}, {"input": [-30.5, 83.0], "expected": 83.0}, {"input": [-30.5, 83.5], "expected": 83.5}, {"input": [-30.5, 84.0], "expected": 84.0}, {"input": [-30.5, 84.5], "expected": 84.5}, {"input": [-30.5, 85.0], "expected": 85.0}, {"input": [-30.5, 85.5], "expected": 85.5}, {"input": [-30.5, 86.0], "expected": 86.0}, {"input": [-30.5, 86.5], "expected": 86.5}, {"input": [-30.5, 87.0], "expected": 87.0}, {"input": [-30.5, 87.5], "expected": 87.5}, {"input": [-30.5, 88.0], "expected": 88.0}, {"input": [-30.5, 88.5], "expected": 88.5}, {"input": [-30.5, 89.0], "expected": 89.0}, {"input": [-30.5, 89.5], "expected": 89.5}, {"input": [-30.5, 90.0], "expected": 90.0}, {"input": [-30.5, 90.5], "expected": 90.5}, {"input": [-30.5, 91.0], "expected": 91.0}, {"input": [-30.5, 91.5], "expected": 91.5}, {"input": [-30.5, 92.0], "expected": 92.0}, {"input": [-30.5, 92.5], "expected": 92.5}, {"input": [-30.5, 93.0], "expected": 93.0}, {"input": [-30.5, 93.5], "expected": 93.5}, {"input": [-30.5, 94.0], "expected": 94.0}, {"input": [-30.5, 94.5], "expected": 94.5}, {"input": [-30.5, 95.0], "expected": 95.0}, {"input": [-30.5, 95.5], "expected": 95.5}, {"input": [-30.5, 96.0], "expected": 96.0}, {"input": [-30.5, 96.5], "expected": 96.5}, {"input": [-30.5, 97.0], "expected": 97.0}, {"input": [-30.5, 97.5], "expected": 97.5}, {"input": [-30.5, 98.0], "expected": 98.0}, {"input": [-30.5, 98.5], "expected": 98.5}, {"input": [-30.5, 99.0], "expected": 99.0}, {"input": [-30.5, 99.5], "expected": 99.5}, {"input": [-30.0, -100.0], "expected": -30.0}, {"input": [-30.0, -99.5], "expected": -30.0}, {"input": [-30.0, -99.0], "expected": -30.0}, {"input": [-30.0, -98.5], "expected": -30.0}, {"input": [-30.0, -98.0], "expected": -30.0}, {"input": [-30.0, -97.5], "expected": -30.0}, {"input": [-30.0, -97.0], "expected": -30.0}, {"input": [-30.0, -96.5], "expected": -30.0}, {"input": [-30.0, -96.0], "expected": -30.0}, {"input": [-30.0, -95.5], "expected": -30.0}, {"input": [-30.0, -95.0], "expected": -30.0}, {"input": [-30.0, -94.5], "expected": -30.0}, {"input": [-30.0, -94.0], "expected": -30.0}, {"input": [-30.0, -93.5], "expected": -30.0}, {"input": [-30.0, -93.0], "expected": -30.0}, {"input": [-30.0, -92.5], "expected": -30.0}, {"input": [-30.0, -92.0], "expected": -30.0}, {"input": [-30.0, -91.5], "expected": -30.0}, {"input": [-30.0, -91.0], "expected": -30.0}, {"input": [-30.0, -90.5], "expected": -30.0}, {"input": [-30.0, -90.0], "expected": -30.0}, {"input": [-30.0, -89.5], "expected": -30.0}, {"input": [-30.0, -89.0], "expected": -30.0}, {"input": [-30.0, -88.5], "expected": -30.0}, {"input": [-30.0, -88.0], "expected": -30.0}, {"input": [-30.0, -87.5], "expected": -30.0}, {"input": [-30.0, -87.0], "expected": -30.0}, {"input": [-30.0, -86.5], "expected": -30.0}, {"input": [-30.0, -86.0], "expected": -30.0}, {"input": [-30.0, -85.5], "expected": -30.0}, {"input": [-30.0, -85.0], "expected": -30.0}, {"input": [-30.0, -84.5], "expected": -30.0}, {"input": [-30.0, -84.0], "expected": -30.0}, {"input": [-30.0, -83.5], "expected": -30.0}, {"input": [-30.0, -83.0], "expected": -30.0}, {"input": [-30.0, -82.5], "expected": -30.0}, {"input": [-30.0, -82.0], "expected": -30.0}, {"input": [-30.0, -81.5], "expected": -30.0}, {"input": [-30.0, -81.0], "expected": -30.0}, {"input": [-30.0, -80.5], "expected": -30.0}, {"input": [-30.0, -80.0], "expected": -30.0}, {"input": [-30.0, -79.5], "expected": -30.0}, {"input": [-30.0, -79.0], "expected": -30.0}, {"input": [-30.0, -78.5], "expected": -30.0}, {"input": [-30.0, -78.0], "expected": -30.0}, {"input": [-30.0, -77.5], "expected": -30.0}, {"input": [-30.0, -77.0], "expected": -30.0}, {"input": [-30.0, -76.5], "expected": -30.0}, {"input": [-30.0, -76.0], "expected": -30.0}, {"input": [-30.0, -75.5], "expected": -30.0}, {"input": [-30.0, -75.0], "expected": -30.0}, {"input": [-30.0, -74.5], "expected": -30.0}, {"input": [-30.0, -74.0], "expected": -30.0}, {"input": [-30.0, -73.5], "expected": -30.0}, {"input": [-30.0, -73.0], "expected": -30.0}, {"input": [-30.0, -72.5], "expected": -30.0}, {"input": [-30.0, -72.0], "expected": -30.0}, {"input": [-30.0, -71.5], "expected": -30.0}, {"input": [-30.0, -71.0], "expected": -30.0}, {"input": [-30.0, -70.5], "expected": -30.0}, {"input": [-30.0, -70.0], "expected": -30.0}, {"input": [-30.0, -69.5], "expected": -30.0}, {"input": [-30.0, -69.0], "expected": -30.0}, {"input": [-30.0, -68.5], "expected": -30.0}, {"input": [-30.0, -68.0], "expected": -30.0}, {"input": [-30.0, -67.5], "expected": -30.0}, {"input": [-30.0, -67.0], "expected": -30.0}, {"input": [-30.0, -66.5], "expected": -30.0}, {"input": [-30.0, -66.0], "expected": -30.0}, {"input": [-30.0, -65.5], "expected": -30.0}, {"input": [-30.0, -65.0], "expected": -30.0}, {"input": [-30.0, -64.5], "expected": -30.0}, {"input": [-30.0, -64.0], "expected": -30.0}, {"input": [-30.0, -63.5], "expected": -29.999999999999996}, {"input": [-30.0, -63.0], "expected": -29.999999999999996}, {"input": [-30.0, -62.5], "expected": -29.999999999999993}, {"input": [-30.0, -62.0], "expected": -29.999999999999986}, {"input": [-30.0, -61.5], "expected": -29.99999999999998}, {"input": [-30.0, -61.0], "expected": -29.999999999999964}, {"input": [-30.0, -60.5], "expected": -29.999999999999943}, {"input": [-30.0, -60.0], "expected": -29.999999999999908}, {"input": [-30.0, -59.5], "expected": -29.999999999999847}, {"input": [-30.0, -59.0], "expected": -29.999999999999744}, {"input": [-30.0, -58.5], "expected": -29.99999999999958}, {"input": [-30.0, -58.0], "expected": -29.999999999999307}, {"input": [-30.0, -57.5], "expected": -29.99999999999886}, {"input": [-30.0, -57.0], "expected": -29.99999999999812}, {"input": [-30.0, -56.5], "expected": -29.999999999996902}, {"input": [-30.0, -56.0], "expected": -29.99999999999489}, {"input": [-30.0, -55.5], "expected": -29.999999999991577}, {"input": [-30.0, -55.0], "expected": -29.999999999986112}, {"input": [-30.0, -54.5], "expected": -29.999999999977103}, {"input": [-30.0, -54.0], "expected": -29.99999999996225}, {"input": [-30.0, -53.5], "expected": -29.99999999993776}, {"input": [-30.0, -53.0], "expected": -29.99999999989738}, {"input": [-30.0, -52.5], "expected": -29.99999999983081}, {"input": [-30.0, -52.0], "expected": -29.99999999972105}, {"input": [-30.0, -51.5], "expected": -29.999999999540094}, {"input": [-30.0, -51.0], "expected": -29.999999999241744}, {"input": [-30.0, -50.5], "expected": -29.999999998749846}, {"input": [-30.0, -50.0], "expected": -29.999999997938847}, {"input": [-30.0, -49.5], "expected": -29.999999996601733}, {"input": [-30.0, -49.0], "expected": -29.999999994397204}, {"input": [-30.0, -48.5], "expected": -29.99999999076255}, {"input": [-30.0, -48.0], "expected": -29.99999998477002}, {"input": [-30.0, -47.5], "expected": -29.99999997489001}, {"input": [-30.0, -47.0], "expected": -29.999999958600625}, {"input": [-30.0, -46.5], "expected": -29.999999931743968}, {"input": [-30.0, -46.0], "expected": -29.99999988746483}, {"input": [-30.0, -45.5], "expected": -29.99999981446088}, {"input": [-30.0, -45.0], "expected": -29.999999694097728}, {"input": [-30.0, -44.5], "expected": -29.999999495652464}, {"input": [-30.0, -44.0], "expected": -29.999999168471625}, {"input": [-30.0, -43.5], "expected": -29.999998629041855}, {"input": [-30.0, -43.0], "expected": -29.999997739673148}, {"input": [-30.0, -42.5], "expected": -29.999996273353773}, {"input": [-30.0, -42.0], "expected": -29.999993855806522}, {"input": [-30.0, -41.5], "expected": -29.99998986995771}, {"input": [-30.0, -41.0], "expected": -29.999983298438682}, {"input": [-30.0, -40.5], "expected": -29.999972463929772}, {"input": [-30.0, -40.0], "expected": -29.999954601100782}, {"input": [-30.0, -39.5], "expected": -29.99992515097137}, {"input": [-30.0, -39.0], "expected": -29.999876597810278}, {"input": [-30.0, -38.5], "expected": -29.999796552327872}, {"input": [-30.0, -38.0], "expected": -29.999664593627106}, {"input": [-30.0, -37.5], "expected": -29.99944706852464}, {"input": [-30.0, -37.0], "expected": -29.999088533546225}, {"input": [-30.0, -36.5], "expected": -29.998497689840246}, {"input": [-30.0, -36.0], "expected": -29.997524314862268}, {"input": [-30.0, -35.5], "expected": -29.995921556729428}, {"input": [-30.0, -35.0], "expected": -29.993284651510884}, {"input": [-30.0, -34.5], "expected": -29.988952255151407}, {"input": [-30.0, -34.0], "expected": -29.98185007208219}, {"input": [-30.0, -33.5], "expected": -29.97024958172738}, {"input": [-30.0, -33.0], "expected": -29.951412648426256}, {"input": [-30.0, -32.5], "expected": -29.92111026570745}, {"input": [-30.0, -32.0], "expected": -29.873071988957026}, {"input": [-30.0, -31.5], "expected": -29.798586722017248}, {"input": [-30.0, -31.0], "expected": -29.686738312481776}, {"input": [-30.0, -30.5], "expected": -29.52592301581989}, {"input": [-30.0, -30.0], "expected": -29.306852819440056}, {"input": [-30.0, -29.5], "expected": -29.02592301581989}, {"input": [-30.0, -29.0], "expected": -28.686738312481776}, {"input": [-30.0, -28.5], "expected": -28.298586722017248}, {"input": [-30.0, -28.0], "expected": -27.873071988957026}, {"input": [-30.0, -27.5], "expected": -27.42111026570745}, {"input": [-30.0, -27.0], "expected": -26.951412648426256}, {"input": [-30.0, -26.5], "expected": -26.47024958172738}, {"input": [-30.0, -26.0], "expected": -25.98185007208219}, {"input": [-30.0, -25.5], "expected": -25.488952255151407}, {"input": [-30.0, -25.0], "expected": -24.993284651510884}, {"input": [-30.0, -24.5], "expected": -24.495921556729428}, {"input": [-30.0, -24.0], "expected": -23.997524314862268}, {"input": [-30.0, -23.5], "expected": -23.498497689840246}, {"input": [-30.0, -23.0], "expected": -22.999088533546225}, {"input": [-30.0, -22.5], "expected": -22.49944706852464}, {"input": [-30.0, -22.0], "expected": -21.999664593627106}, {"input": [-30.0, -21.5], "expected": -21.499796552327872}, {"input": [-30.0, -21.0], "expected": -20.999876597810278}, {"input": [-30.0, -20.5], "expected": -20.49992515097137}, {"input": [-30.0, -20.0], "expected": -19.999954601100782}, {"input": [-30.0, -19.5], "expected": -19.499972463929772}, {"input": [-30.0, -19.0], "expected": -18.999983298438682}, {"input": [-30.0, -18.5], "expected": -18.49998986995771}, {"input": [-30.0, -18.0], "expected": -17.999993855806522}, {"input": [-30.0, -17.5], "expected": -17.499996273353773}, {"input": [-30.0, -17.0], "expected": -16.999997739673148}, {"input": [-30.0, -16.5], "expected": -16.499998629041855}, {"input": [-30.0, -16.0], "expected": -15.999999168471627}, {"input": [-30.0, -15.5], "expected": -15.499999495652464}, {"input": [-30.0, -15.0], "expected": -14.999999694097726}, {"input": [-30.0, -14.5], "expected": -14.499999814460882}, {"input": [-30.0, -14.0], "expected": -13.999999887464831}, {"input": [-30.0, -13.5], "expected": -13.499999931743968}, {"input": [-30.0, -13.0], "expected": -12.999999958600624}, {"input": [-30.0, -12.5], "expected": -12.49999997489001}, {"input": [-30.0, -12.0], "expected": -11.999999984770021}, {"input": [-30.0, -11.5], "expected": -11.49999999076255}, {"input": [-30.0, -11.0], "expected": -10.999999994397204}, {"input": [-30.0, -10.5], "expected": -10.499999996601732}, {"input": [-30.0, -10.0], "expected": -9.999999997938847}, {"input": [-30.0, -9.5], "expected": -9.499999998749848}, {"input": [-30.0, -9.0], "expected": -8.999999999241744}, {"input": [-30.0, -8.5], "expected": -8.499999999540094}, {"input": [-30.0, -8.0], "expected": -7.999999999721053}, {"input": [-30.0, -7.5], "expected": -7.49999999983081}, {"input": [-30.0, -7.0], "expected": -6.999999999897382}, {"input": [-30.0, -6.5], "expected": -6.499999999937758}, {"input": [-30.0, -6.0], "expected": -5.999999999962249}, {"input": [-30.0, -5.5], "expected": -5.499999999977103}, {"input": [-30.0, -5.0], "expected": -4.999999999986112}, {"input": [-30.0, -4.5], "expected": -4.4999999999915765}, {"input": [-30.0, -4.0], "expected": -3.9999999999948908}, {"input": [-30.0, -3.5], "expected": -3.499999999996901}, {"input": [-30.0, -3.0], "expected": -2.9999999999981206}, {"input": [-30.0, -2.5], "expected": -2.49999999999886}, {"input": [-30.0, -2.0], "expected": -1.9999999999993086}, {"input": [-30.0, -1.5], "expected": -1.4999999999995806}, {"input": [-30.0, -1.0], "expected": -0.9999999999997456}, {"input": [-30.0, -0.5], "expected": -0.49999999999984573}, {"input": [-30.0, 0.0], "expected": 9.357622968839737e-14}, {"input": [-30.0, 0.5], "expected": 0.5000000000000567}, {"input": [-30.0, 1.0], "expected": 1.0000000000000344}, {"input": [-30.0, 1.5], "expected": 1.5000000000000209}, {"input": [-30.0, 2.0], "expected": 2.000000000000013}, {"input": [-30.0, 2.5], "expected": 2.5000000000000075}, {"input": [-30.0, 3.0], "expected": 3.0000000000000044}, {"input": [-30.0, 3.5], "expected": 3.5000000000000027}, {"input": [-30.0, 4.0], "expected": 4.000000000000002}, {"input": [-30.0, 4.5], "expected": 4.500000000000001}, {"input": [-30.0, 5.0], "expected": 5.000000000000001}, {"input": [-30.0, 5.5], "expected": 5.5}, {"input": [-30.0, 6.0], "expected": 6.0}, {"input": [-30.0, 6.5], "expected": 6.5}, {"input": [-30.0, 7.0], "expected": 7.0}, {"input": [-30.0, 7.5], "expected": 7.5}, {"input": [-30.0, 8.0], "expected": 8.0}, {"input": [-30.0, 8.5], "expected": 8.5}, {"input": [-30.0, 9.0], "expected": 9.0}, {"input": [-30.0, 9.5], "expected": 9.5}, {"input": [-30.0, 10.0], "expected": 10.0}, {"input": [-30.0, 10.5], "expected": 10.5}, {"input": [-30.0, 11.0], "expected": 11.0}, {"input": [-30.0, 11.5], "expected": 11.5}, {"input": [-30.0, 12.0], "expected": 12.0}, {"input": [-30.0, 12.5], "expected": 12.5}, {"input": [-30.0, 13.0], "expected": 13.0}, {"input": [-30.0, 13.5], "expected": 13.5}, {"input": [-30.0, 14.0], "expected": 14.0}, {"input": [-30.0, 14.5], "expected": 14.5}, {"input": [-30.0, 15.0], "expected": 15.0}, {"input": [-30.0, 15.5], "expected": 15.5}, {"input": [-30.0, 16.0], "expected": 16.0}, {"input": [-30.0, 16.5], "expected": 16.5}, {"input": [-30.0, 17.0], "expected": 17.0}, {"input": [-30.0, 17.5], "expected": 17.5}, {"input": [-30.0, 18.0], "expected": 18.0}, {"input": [-30.0, 18.5], "expected": 18.5}, {"input": [-30.0, 19.0], "expected": 19.0}, {"input": [-30.0, 19.5], "expected": 19.5}, {"input": [-30.0, 20.0], "expected": 20.0}, {"input": [-30.0, 20.5], "expected": 20.5}, {"input": [-30.0, 21.0], "expected": 21.0}, {"input": [-30.0, 21.5], "expected": 21.5}, {"input": [-30.0, 22.0], "expected": 22.0}, {"input": [-30.0, 22.5], "expected": 22.5}, {"input": [-30.0, 23.0], "expected": 23.0}, {"input": [-30.0, 23.5], "expected": 23.5}, {"input": [-30.0, 24.0], "expected": 24.0}, {"input": [-30.0, 24.5], "expected": 24.5}, {"input": [-30.0, 25.0], "expected": 25.0}, {"input": [-30.0, 25.5], "expected": 25.5}, {"input": [-30.0, 26.0], "expected": 26.0}, {"input": [-30.0, 26.5], "expected": 26.5}, {"input": [-30.0, 27.0], "expected": 27.0}, {"input": [-30.0, 27.5], "expected": 27.5}, {"input": [-30.0, 28.0], "expected": 28.0}, {"input": [-30.0, 28.5], "expected": 28.5}, {"input": [-30.0, 29.0], "expected": 29.0}, {"input": [-30.0, 29.5], "expected": 29.5}, {"input": [-30.0, 30.0], "expected": 30.0}, {"input": [-30.0, 30.5], "expected": 30.5}, {"input": [-30.0, 31.0], "expected": 31.0}, {"input": [-30.0, 31.5], "expected": 31.5}, {"input": [-30.0, 32.0], "expected": 32.0}, {"input": [-30.0, 32.5], "expected": 32.5}, {"input": [-30.0, 33.0], "expected": 33.0}, {"input": [-30.0, 33.5], "expected": 33.5}, {"input": [-30.0, 34.0], "expected": 34.0}, {"input": [-30.0, 34.5], "expected": 34.5}, {"input": [-30.0, 35.0], "expected": 35.0}, {"input": [-30.0, 35.5], "expected": 35.5}, {"input": [-30.0, 36.0], "expected": 36.0}, {"input": [-30.0, 36.5], "expected": 36.5}, {"input": [-30.0, 37.0], "expected": 37.0}, {"input": [-30.0, 37.5], "expected": 37.5}, {"input": [-30.0, 38.0], "expected": 38.0}, {"input": [-30.0, 38.5], "expected": 38.5}, {"input": [-30.0, 39.0], "expected": 39.0}, {"input": [-30.0, 39.5], "expected": 39.5}, {"input": [-30.0, 40.0], "expected": 40.0}, {"input": [-30.0, 40.5], "expected": 40.5}, {"input": [-30.0, 41.0], "expected": 41.0}, {"input": [-30.0, 41.5], "expected": 41.5}, {"input": [-30.0, 42.0], "expected": 42.0}, {"input": [-30.0, 42.5], "expected": 42.5}, {"input": [-30.0, 43.0], "expected": 43.0}, {"input": [-30.0, 43.5], "expected": 43.5}, {"input": [-30.0, 44.0], "expected": 44.0}, {"input": [-30.0, 44.5], "expected": 44.5}, {"input": [-30.0, 45.0], "expected": 45.0}, {"input": [-30.0, 45.5], "expected": 45.5}, {"input": [-30.0, 46.0], "expected": 46.0}, {"input": [-30.0, 46.5], "expected": 46.5}, {"input": [-30.0, 47.0], "expected": 47.0}, {"input": [-30.0, 47.5], "expected": 47.5}, {"input": [-30.0, 48.0], "expected": 48.0}, {"input": [-30.0, 48.5], "expected": 48.5}, {"input": [-30.0, 49.0], "expected": 49.0}, {"input": [-30.0, 49.5], "expected": 49.5}, {"input": [-30.0, 50.0], "expected": 50.0}, {"input": [-30.0, 50.5], "expected": 50.5}, {"input": [-30.0, 51.0], "expected": 51.0}, {"input": [-30.0, 51.5], "expected": 51.5}, {"input": [-30.0, 52.0], "expected": 52.0}, {"input": [-30.0, 52.5], "expected": 52.5}, {"input": [-30.0, 53.0], "expected": 53.0}, {"input": [-30.0, 53.5], "expected": 53.5}, {"input": [-30.0, 54.0], "expected": 54.0}, {"input": [-30.0, 54.5], "expected": 54.5}, {"input": [-30.0, 55.0], "expected": 55.0}, {"input": [-30.0, 55.5], "expected": 55.5}, {"input": [-30.0, 56.0], "expected": 56.0}, {"input": [-30.0, 56.5], "expected": 56.5}, {"input": [-30.0, 57.0], "expected": 57.0}, {"input": [-30.0, 57.5], "expected": 57.5}, {"input": [-30.0, 58.0], "expected": 58.0}, {"input": [-30.0, 58.5], "expected": 58.5}, {"input": [-30.0, 59.0], "expected": 59.0}, {"input": [-30.0, 59.5], "expected": 59.5}, {"input": [-30.0, 60.0], "expected": 60.0}, {"input": [-30.0, 60.5], "expected": 60.5}, {"input": [-30.0, 61.0], "expected": 61.0}, {"input": [-30.0, 61.5], "expected": 61.5}, {"input": [-30.0, 62.0], "expected": 62.0}, {"input": [-30.0, 62.5], "expected": 62.5}, {"input": [-30.0, 63.0], "expected": 63.0}, {"input": [-30.0, 63.5], "expected": 63.5}, {"input": [-30.0, 64.0], "expected": 64.0}, {"input": [-30.0, 64.5], "expected": 64.5}, {"input": [-30.0, 65.0], "expected": 65.0}, {"input": [-30.0, 65.5], "expected": 65.5}, {"input": [-30.0, 66.0], "expected": 66.0}, {"input": [-30.0, 66.5], "expected": 66.5}, {"input": [-30.0, 67.0], "expected": 67.0}, {"input": [-30.0, 67.5], "expected": 67.5}, {"input": [-30.0, 68.0], "expected": 68.0}, {"input": [-30.0, 68.5], "expected": 68.5}, {"input": [-30.0, 69.0], "expected": 69.0}, {"input": [-30.0, 69.5], "expected": 69.5}, {"input": [-30.0, 70.0], "expected": 70.0}, {"input": [-30.0, 70.5], "expected": 70.5}, {"input": [-30.0, 71.0], "expected": 71.0}, {"input": [-30.0, 71.5], "expected": 71.5}, {"input": [-30.0, 72.0], "expected": 72.0}, {"input": [-30.0, 72.5], "expected": 72.5}, {"input": [-30.0, 73.0], "expected": 73.0}, {"input": [-30.0, 73.5], "expected": 73.5}, {"input": [-30.0, 74.0], "expected": 74.0}, {"input": [-30.0, 74.5], "expected": 74.5}, {"input": [-30.0, 75.0], "expected": 75.0}, {"input": [-30.0, 75.5], "expected": 75.5}, {"input": [-30.0, 76.0], "expected": 76.0}, {"input": [-30.0, 76.5], "expected": 76.5}, {"input": [-30.0, 77.0], "expected": 77.0}, {"input": [-30.0, 77.5], "expected": 77.5}, {"input": [-30.0, 78.0], "expected": 78.0}, {"input": [-30.0, 78.5], "expected": 78.5}, {"input": [-30.0, 79.0], "expected": 79.0}, {"input": [-30.0, 79.5], "expected": 79.5}, {"input": [-30.0, 80.0], "expected": 80.0}, {"input": [-30.0, 80.5], "expected": 80.5}, {"input": [-30.0, 81.0], "expected": 81.0}, {"input": [-30.0, 81.5], "expected": 81.5}, {"input": [-30.0, 82.0], "expected": 82.0}, {"input": [-30.0, 82.5], "expected": 82.5}, {"input": [-30.0, 83.0], "expected": 83.0}, {"input": [-30.0, 83.5], "expected": 83.5}, {"input": [-30.0, 84.0], "expected": 84.0}, {"input": [-30.0, 84.5], "expected": 84.5}, {"input": [-30.0, 85.0], "expected": 85.0}, {"input": [-30.0, 85.5], "expected": 85.5}, {"input": [-30.0, 86.0], "expected": 86.0}, {"input": [-30.0, 86.5], "expected": 86.5}, {"input": [-30.0, 87.0], "expected": 87.0}, {"input": [-30.0, 87.5], "expected": 87.5}, {"input": [-30.0, 88.0], "expected": 88.0}, {"input": [-30.0, 88.5], "expected": 88.5}, {"input": [-30.0, 89.0], "expected": 89.0}, {"input": [-30.0, 89.5], "expected": 89.5}, {"input": [-30.0, 90.0], "expected": 90.0}, {"input": [-30.0, 90.5], "expected": 90.5}, {"input": [-30.0, 91.0], "expected": 91.0}, {"input": [-30.0, 91.5], "expected": 91.5}, {"input": [-30.0, 92.0], "expected": 92.0}, {"input": [-30.0, 92.5], "expected": 92.5}, {"input": [-30.0, 93.0], "expected": 93.0}, {"input": [-30.0, 93.5], "expected": 93.5}, {"input": [-30.0, 94.0], "expected": 94.0}, {"input": [-30.0, 94.5], "expected": 94.5}, {"input": [-30.0, 95.0], "expected": 95.0}, {"input": [-30.0, 95.5], "expected": 95.5}, {"input": [-30.0, 96.0], "expected": 96.0}, {"input": [-30.0, 96.5], "expected": 96.5}, {"input": [-30.0, 97.0], "expected": 97.0}, {"input": [-30.0, 97.5], "expected": 97.5}, {"input": [-30.0, 98.0], "expected": 98.0}, {"input": [-30.0, 98.5], "expected": 98.5}, {"input": [-30.0, 99.0], "expected": 99.0}, {"input": [-30.0, 99.5], "expected": 99.5}, {"input": [-29.5, -100.0], "expected": -29.5}, {"input": [-29.5, -99.5], "expected": -29.5}, {"input": [-29.5, -99.0], "expected": -29.5}, {"input": [-29.5, -98.5], "expected": -29.5}, {"input": [-29.5, -98.0], "expected": -29.5}, {"input": [-29.5, -97.5], "expected": -29.5}, {"input": [-29.5, -97.0], "expected": -29.5}, {"input": [-29.5, -96.5], "expected": -29.5}, {"input": [-29.5, -96.0], "expected": -29.5}, {"input": [-29.5, -95.5], "expected": -29.5}, {"input": [-29.5, -95.0], "expected": -29.5}, {"input": [-29.5, -94.5], "expected": -29.5}, {"input": [-29.5, -94.0], "expected": -29.5}, {"input": [-29.5, -93.5], "expected": -29.5}, {"input": [-29.5, -93.0], "expected": -29.5}, {"input": [-29.5, -92.5], "expected": -29.5}, {"input": [-29.5, -92.0], "expected": -29.5}, {"input": [-29.5, -91.5], "expected": -29.5}, {"input": [-29.5, -91.0], "expected": -29.5}, {"input": [-29.5, -90.5], "expected": -29.5}, {"input": [-29.5, -90.0], "expected": -29.5}, {"input": [-29.5, -89.5], "expected": -29.5}, {"input": [-29.5, -89.0], "expected": -29.5}, {"input": [-29.5, -88.5], "expected": -29.5}, {"input": [-29.5, -88.0], "expected": -29.5}, {"input": [-29.5, -87.5], "expected": -29.5}, {"input": [-29.5, -87.0], "expected": -29.5}, {"input": [-29.5, -86.5], "expected": -29.5}, {"input": [-29.5, -86.0], "expected": -29.5}, {"input": [-29.5, -85.5], "expected": -29.5}, {"input": [-29.5, -85.0], "expected": -29.5}, {"input": [-29.5, -84.5], "expected": -29.5}, {"input": [-29.5, -84.0], "expected": -29.5}, {"input": [-29.5, -83.5], "expected": -29.5}, {"input": [-29.5, -83.0], "expected": -29.5}, {"input": [-29.5, -82.5], "expected": -29.5}, {"input": [-29.5, -82.0], "expected": -29.5}, {"input": [-29.5, -81.5], "expected": -29.5}, {"input": [-29.5, -81.0], "expected": -29.5}, {"input": [-29.5, -80.5], "expected": -29.5}, {"input": [-29.5, -80.0], "expected": -29.5}, {"input": [-29.5, -79.5], "expected": -29.5}, {"input": [-29.5, -79.0], "expected": -29.5}, {"input": [-29.5, -78.5], "expected": -29.5}, {"input": [-29.5, -78.0], "expected": -29.5}, {"input": [-29.5, -77.5], "expected": -29.5}, {"input": [-29.5, -77.0], "expected": -29.5}, {"input": [-29.5, -76.5], "expected": -29.5}, {"input": [-29.5, -76.0], "expected": -29.5}, {"input": [-29.5, -75.5], "expected": -29.5}, {"input": [-29.5, -75.0], "expected": -29.5}, {"input": [-29.5, -74.5], "expected": -29.5}, {"input": [-29.5, -74.0], "expected": -29.5}, {"input": [-29.5, -73.5], "expected": -29.5}, {"input": [-29.5, -73.0], "expected": -29.5}, {"input": [-29.5, -72.5], "expected": -29.5}, {"input": [-29.5, -72.0], "expected": -29.5}, {"input": [-29.5, -71.5], "expected": -29.5}, {"input": [-29.5, -71.0], "expected": -29.5}, {"input": [-29.5, -70.5], "expected": -29.5}, {"input": [-29.5, -70.0], "expected": -29.5}, {"input": [-29.5, -69.5], "expected": -29.5}, {"input": [-29.5, -69.0], "expected": -29.5}, {"input": [-29.5, -68.5], "expected": -29.5}, {"input": [-29.5, -68.0], "expected": -29.5}, {"input": [-29.5, -67.5], "expected": -29.5}, {"input": [-29.5, -67.0], "expected": -29.5}, {"input": [-29.5, -66.5], "expected": -29.5}, {"input": [-29.5, -66.0], "expected": -29.5}, {"input": [-29.5, -65.5], "expected": -29.5}, {"input": [-29.5, -65.0], "expected": -29.5}, {"input": [-29.5, -64.5], "expected": -29.5}, {"input": [-29.5, -64.0], "expected": -29.5}, {"input": [-29.5, -63.5], "expected": -29.5}, {"input": [-29.5, -63.0], "expected": -29.499999999999996}, {"input": [-29.5, -62.5], "expected": -29.499999999999996}, {"input": [-29.5, -62.0], "expected": -29.499999999999993}, {"input": [-29.5, -61.5], "expected": -29.499999999999986}, {"input": [-29.5, -61.0], "expected": -29.49999999999998}, {"input": [-29.5, -60.5], "expected": -29.499999999999964}, {"input": [-29.5, -60.0], "expected": -29.499999999999943}, {"input": [-29.5, -59.5], "expected": -29.499999999999908}, {"input": [-29.5, -59.0], "expected": -29.499999999999847}, {"input": [-29.5, -58.5], "expected": -29.499999999999744}, {"input": [-29.5, -58.0], "expected": -29.49999999999958}, {"input": [-29.5, -57.5], "expected": -29.499999999999307}, {"input": [-29.5, -57.0], "expected": -29.49999999999886}, {"input": [-29.5, -56.5], "expected": -29.49999999999812}, {"input": [-29.5, -56.0], "expected": -29.499999999996902}, {"input": [-29.5, -55.5], "expected": -29.49999999999489}, {"input": [-29.5, -55.0], "expected": -29.499999999991577}, {"input": [-29.5, -54.5], "expected": -29.499999999986112}, {"input": [-29.5, -54.0], "expected": -29.499999999977103}, {"input": [-29.5, -53.5], "expected": -29.49999999996225}, {"input": [-29.5, -53.0], "expected": -29.49999999993776}, {"input": [-29.5, -52.5], "expected": -29.49999999989738}, {"input": [-29.5, -52.0], "expected": -29.49999999983081}, {"input": [-29.5, -51.5], "expected": -29.49999999972105}, {"input": [-29.5, -51.0], "expected": -29.499999999540094}, {"input": [-29.5, -50.5], "expected": -29.499999999241744}, {"input": [-29.5, -50.0], "expected": -29.499999998749846}, {"input": [-29.5, -49.5], "expected": -29.499999997938847}, {"input": [-29.5, -49.0], "expected": -29.499999996601733}, {"input": [-29.5, -48.5], "expected": -29.499999994397204}, {"input": [-29.5, -48.0], "expected": -29.49999999076255}, {"input": [-29.5, -47.5], "expected": -29.49999998477002}, {"input": [-29.5, -47.0], "expected": -29.49999997489001}, {"input": [-29.5, -46.5], "expected": -29.499999958600625}, {"input": [-29.5, -46.0], "expected": -29.499999931743968}, {"input": [-29.5, -45.5], "expected": -29.49999988746483}, {"input": [-29.5, -45.0], "expected": -29.49999981446088}, {"input": [-29.5, -44.5], "expected": -29.499999694097728}, {"input": [-29.5, -44.0], "expected": -29.499999495652464}, {"input": [-29.5, -43.5], "expected": -29.499999168471625}, {"input": [-29.5, -43.0], "expected": -29.499998629041855}, {"input": [-29.5, -42.5], "expected": -29.499997739673148}, {"input": [-29.5, -42.0], "expected": -29.499996273353773}, {"input": [-29.5, -41.5], "expected": -29.499993855806522}, {"input": [-29.5, -41.0], "expected": -29.49998986995771}, {"input": [-29.5, -40.5], "expected": -29.499983298438682}, {"input": [-29.5, -40.0], "expected": -29.499972463929772}, {"input": [-29.5, -39.5], "expected": -29.499954601100782}, {"input": [-29.5, -39.0], "expected": -29.49992515097137}, {"input": [-29.5, -38.5], "expected": -29.499876597810278}, {"input": [-29.5, -38.0], "expected": -29.499796552327872}, {"input": [-29.5, -37.5], "expected": -29.499664593627106}, {"input": [-29.5, -37.0], "expected": -29.49944706852464}, {"input": [-29.5, -36.5], "expected": -29.499088533546225}, {"input": [-29.5, -36.0], "expected": -29.498497689840246}, {"input": [-29.5, -35.5], "expected": -29.497524314862268}, {"input": [-29.5, -35.0], "expected": -29.495921556729428}, {"input": [-29.5, -34.5], "expected": -29.493284651510884}, {"input": [-29.5, -34.0], "expected": -29.488952255151407}, {"input": [-29.5, -33.5], "expected": -29.48185007208219}, {"input": [-29.5, -33.0], "expected": -29.47024958172738}, {"input": [-29.5, -32.5], "expected": -29.451412648426256}, {"input": [-29.5, -32.0], "expected": -29.42111026570745}, {"input": [-29.5, -31.5], "expected": -29.373071988957026}, {"input": [-29.5, -31.0], "expected": -29.298586722017248}, {"input": [-29.5, -30.5], "expected": -29.186738312481776}, {"input": [-29.5, -30.0], "expected": -29.02592301581989}, {"input": [-29.5, -29.5], "expected": -28.806852819440056}, {"input": [-29.5, -29.0], "expected": -28.52592301581989}, {"input": [-29.5, -28.5], "expected": -28.186738312481776}, {"input": [-29.5, -28.0], "expected": -27.798586722017248}, {"input": [-29.5, -27.5], "expected": -27.373071988957026}, {"input": [-29.5, -27.0], "expected": -26.92111026570745}, {"input": [-29.5, -26.5], "expected": -26.451412648426256}, {"input": [-29.5, -26.0], "expected": -25.97024958172738}, {"input": [-29.5, -25.5], "expected": -25.48185007208219}, {"input": [-29.5, -25.0], "expected": -24.988952255151407}, {"input": [-29.5, -24.5], "expected": -24.493284651510884}, {"input": [-29.5, -24.0], "expected": -23.995921556729428}, {"input": [-29.5, -23.5], "expected": -23.497524314862268}, {"input": [-29.5, -23.0], "expected": -22.998497689840246}, {"input": [-29.5, -22.5], "expected": -22.499088533546225}, {"input": [-29.5, -22.0], "expected": -21.99944706852464}, {"input": [-29.5, -21.5], "expected": -21.499664593627106}, {"input": [-29.5, -21.0], "expected": -20.999796552327872}, {"input": [-29.5, -20.5], "expected": -20.499876597810278}, {"input": [-29.5, -20.0], "expected": -19.99992515097137}, {"input": [-29.5, -19.5], "expected": -19.499954601100782}, {"input": [-29.5, -19.0], "expected": -18.999972463929772}, {"input": [-29.5, -18.5], "expected": -18.499983298438682}, {"input": [-29.5, -18.0], "expected": -17.99998986995771}, {"input": [-29.5, -17.5], "expected": -17.499993855806522}, {"input": [-29.5, -17.0], "expected": -16.999996273353773}, {"input": [-29.5, -16.5], "expected": -16.499997739673148}, {"input": [-29.5, -16.0], "expected": -15.999998629041853}, {"input": [-29.5, -15.5], "expected": -15.499999168471627}, {"input": [-29.5, -15.0], "expected": -14.999999495652464}, {"input": [-29.5, -14.5], "expected": -14.499999694097726}, {"input": [-29.5, -14.0], "expected": -13.999999814460882}, {"input": [-29.5, -13.5], "expected": -13.499999887464831}, {"input": [-29.5, -13.0], "expected": -12.999999931743968}, {"input": [-29.5, -12.5], "expected": -12.499999958600624}, {"input": [-29.5, -12.0], "expected": -11.99999997489001}, {"input": [-29.5, -11.5], "expected": -11.499999984770021}, {"input": [-29.5, -11.0], "expected": -10.99999999076255}, {"input": [-29.5, -10.5], "expected": -10.499999994397204}, {"input": [-29.5, -10.0], "expected": -9.999999996601732}, {"input": [-29.5, -9.5], "expected": -9.499999997938847}, {"input": [-29.5, -9.0], "expected": -8.999999998749848}, {"input": [-29.5, -8.5], "expected": -8.499999999241744}, {"input": [-29.5, -8.0], "expected": -7.999999999540094}, {"input": [-29.5, -7.5], "expected": -7.499999999721053}, {"input": [-29.5, -7.0], "expected": -6.99999999983081}, {"input": [-29.5, -6.5], "expected": -6.499999999897382}, {"input": [-29.5, -6.0], "expected": -5.999999999937758}, {"input": [-29.5, -5.5], "expected": -5.499999999962249}, {"input": [-29.5, -5.0], "expected": -4.999999999977103}, {"input": [-29.5, -4.5], "expected": -4.499999999986112}, {"input": [-29.5, -4.0], "expected": -3.9999999999915765}, {"input": [-29.5, -3.5], "expected": -3.4999999999948908}, {"input": [-29.5, -3.0], "expected": -2.999999999996901}, {"input": [-29.5, -2.5], "expected": -2.4999999999981206}, {"input": [-29.5, -2.0], "expected": -1.99999999999886}, {"input": [-29.5, -1.5], "expected": -1.4999999999993086}, {"input": [-29.5, -1.0], "expected": -0.9999999999995807}, {"input": [-29.5, -0.5], "expected": -0.49999999999974565}, {"input": [-29.5, 0.0], "expected": 1.5428112031917688e-13}, {"input": [-29.5, 0.5], "expected": 0.5000000000000936}, {"input": [-29.5, 1.0], "expected": 1.0000000000000568}, {"input": [-29.5, 1.5], "expected": 1.5000000000000344}, {"input": [-29.5, 2.0], "expected": 2.000000000000021}, {"input": [-29.5, 2.5], "expected": 2.500000000000013}, {"input": [-29.5, 3.0], "expected": 3.0000000000000075}, {"input": [-29.5, 3.5], "expected": 3.5000000000000044}, {"input": [-29.5, 4.0], "expected": 4.000000000000003}, {"input": [-29.5, 4.5], "expected": 4.500000000000002}, {"input": [-29.5, 5.0], "expected": 5.000000000000001}, {"input": [-29.5, 5.5], "expected": 5.500000000000001}, {"input": [-29.5, 6.0], "expected": 6.0}, {"input": [-29.5, 6.5], "expected": 6.5}, {"input": [-29.5, 7.0], "expected": 7.0}, {"input": [-29.5, 7.5], "expected": 7.5}, {"input": [-29.5, 8.0], "expected": 8.0}, {"input": [-29.5, 8.5], "expected": 8.5}, {"input": [-29.5, 9.0], "expected": 9.0}, {"input": [-29.5, 9.5], "expected": 9.5}, {"input": [-29.5, 10.0], "expected": 10.0}, {"input": [-29.5, 10.5], "expected": 10.5}, {"input": [-29.5, 11.0], "expected": 11.0}, {"input": [-29.5, 11.5], "expected": 11.5}, {"input": [-29.5, 12.0], "expected": 12.0}, {"input": [-29.5, 12.5], "expected": 12.5}, {"input": [-29.5, 13.0], "expected": 13.0}, {"input": [-29.5, 13.5], "expected": 13.5}, {"input": [-29.5, 14.0], "expected": 14.0}, {"input": [-29.5, 14.5], "expected": 14.5}, {"input": [-29.5, 15.0], "expected": 15.0}, {"input": [-29.5, 15.5], "expected": 15.5}, {"input": [-29.5, 16.0], "expected": 16.0}, {"input": [-29.5, 16.5], "expected": 16.5}, {"input": [-29.5, 17.0], "expected": 17.0}, {"input": [-29.5, 17.5], "expected": 17.5}, {"input": [-29.5, 18.0], "expected": 18.0}, {"input": [-29.5, 18.5], "expected": 18.5}, {"input": [-29.5, 19.0], "expected": 19.0}, {"input": [-29.5, 19.5], "expected": 19.5}, {"input": [-29.5, 20.0], "expected": 20.0}, {"input": [-29.5, 20.5], "expected": 20.5}, {"input": [-29.5, 21.0], "expected": 21.0}, {"input": [-29.5, 21.5], "expected": 21.5}, {"input": [-29.5, 22.0], "expected": 22.0}, {"input": [-29.5, 22.5], "expected": 22.5}, {"input": [-29.5, 23.0], "expected": 23.0}, {"input": [-29.5, 23.5], "expected": 23.5}, {"input": [-29.5, 24.0], "expected": 24.0}, {"input": [-29.5, 24.5], "expected": 24.5}, {"input": [-29.5, 25.0], "expected": 25.0}, {"input": [-29.5, 25.5], "expected": 25.5}, {"input": [-29.5, 26.0], "expected": 26.0}, {"input": [-29.5, 26.5], "expected": 26.5}, {"input": [-29.5, 27.0], "expected": 27.0}, {"input": [-29.5, 27.5], "expected": 27.5}, {"input": [-29.5, 28.0], "expected": 28.0}, {"input": [-29.5, 28.5], "expected": 28.5}, {"input": [-29.5, 29.0], "expected": 29.0}, {"input": [-29.5, 29.5], "expected": 29.5}, {"input": [-29.5, 30.0], "expected": 30.0}, {"input": [-29.5, 30.5], "expected": 30.5}, {"input": [-29.5, 31.0], "expected": 31.0}, {"input": [-29.5, 31.5], "expected": 31.5}, {"input": [-29.5, 32.0], "expected": 32.0}, {"input": [-29.5, 32.5], "expected": 32.5}, {"input": [-29.5, 33.0], "expected": 33.0}, {"input": [-29.5, 33.5], "expected": 33.5}, {"input": [-29.5, 34.0], "expected": 34.0}, {"input": [-29.5, 34.5], "expected": 34.5}, {"input": [-29.5, 35.0], "expected": 35.0}, {"input": [-29.5, 35.5], "expected": 35.5}, {"input": [-29.5, 36.0], "expected": 36.0}, {"input": [-29.5, 36.5], "expected": 36.5}, {"input": [-29.5, 37.0], "expected": 37.0}, {"input": [-29.5, 37.5], "expected": 37.5}, {"input": [-29.5, 38.0], "expected": 38.0}, {"input": [-29.5, 38.5], "expected": 38.5}, {"input": [-29.5, 39.0], "expected": 39.0}, {"input": [-29.5, 39.5], "expected": 39.5}, {"input": [-29.5, 40.0], "expected": 40.0}, {"input": [-29.5, 40.5], "expected": 40.5}, {"input": [-29.5, 41.0], "expected": 41.0}, {"input": [-29.5, 41.5], "expected": 41.5}, {"input": [-29.5, 42.0], "expected": 42.0}, {"input": [-29.5, 42.5], "expected": 42.5}, {"input": [-29.5, 43.0], "expected": 43.0}, {"input": [-29.5, 43.5], "expected": 43.5}, {"input": [-29.5, 44.0], "expected": 44.0}, {"input": [-29.5, 44.5], "expected": 44.5}, {"input": [-29.5, 45.0], "expected": 45.0}, {"input": [-29.5, 45.5], "expected": 45.5}, {"input": [-29.5, 46.0], "expected": 46.0}, {"input": [-29.5, 46.5], "expected": 46.5}, {"input": [-29.5, 47.0], "expected": 47.0}, {"input": [-29.5, 47.5], "expected": 47.5}, {"input": [-29.5, 48.0], "expected": 48.0}, {"input": [-29.5, 48.5], "expected": 48.5}, {"input": [-29.5, 49.0], "expected": 49.0}, {"input": [-29.5, 49.5], "expected": 49.5}, {"input": [-29.5, 50.0], "expected": 50.0}, {"input": [-29.5, 50.5], "expected": 50.5}, {"input": [-29.5, 51.0], "expected": 51.0}, {"input": [-29.5, 51.5], "expected": 51.5}, {"input": [-29.5, 52.0], "expected": 52.0}, {"input": [-29.5, 52.5], "expected": 52.5}, {"input": [-29.5, 53.0], "expected": 53.0}, {"input": [-29.5, 53.5], "expected": 53.5}, {"input": [-29.5, 54.0], "expected": 54.0}, {"input": [-29.5, 54.5], "expected": 54.5}, {"input": [-29.5, 55.0], "expected": 55.0}, {"input": [-29.5, 55.5], "expected": 55.5}, {"input": [-29.5, 56.0], "expected": 56.0}, {"input": [-29.5, 56.5], "expected": 56.5}, {"input": [-29.5, 57.0], "expected": 57.0}, {"input": [-29.5, 57.5], "expected": 57.5}, {"input": [-29.5, 58.0], "expected": 58.0}, {"input": [-29.5, 58.5], "expected": 58.5}, {"input": [-29.5, 59.0], "expected": 59.0}, {"input": [-29.5, 59.5], "expected": 59.5}, {"input": [-29.5, 60.0], "expected": 60.0}, {"input": [-29.5, 60.5], "expected": 60.5}, {"input": [-29.5, 61.0], "expected": 61.0}, {"input": [-29.5, 61.5], "expected": 61.5}, {"input": [-29.5, 62.0], "expected": 62.0}, {"input": [-29.5, 62.5], "expected": 62.5}, {"input": [-29.5, 63.0], "expected": 63.0}, {"input": [-29.5, 63.5], "expected": 63.5}, {"input": [-29.5, 64.0], "expected": 64.0}, {"input": [-29.5, 64.5], "expected": 64.5}, {"input": [-29.5, 65.0], "expected": 65.0}, {"input": [-29.5, 65.5], "expected": 65.5}, {"input": [-29.5, 66.0], "expected": 66.0}, {"input": [-29.5, 66.5], "expected": 66.5}, {"input": [-29.5, 67.0], "expected": 67.0}, {"input": [-29.5, 67.5], "expected": 67.5}, {"input": [-29.5, 68.0], "expected": 68.0}, {"input": [-29.5, 68.5], "expected": 68.5}, {"input": [-29.5, 69.0], "expected": 69.0}, {"input": [-29.5, 69.5], "expected": 69.5}, {"input": [-29.5, 70.0], "expected": 70.0}, {"input": [-29.5, 70.5], "expected": 70.5}, {"input": [-29.5, 71.0], "expected": 71.0}, {"input": [-29.5, 71.5], "expected": 71.5}, {"input": [-29.5, 72.0], "expected": 72.0}, {"input": [-29.5, 72.5], "expected": 72.5}, {"input": [-29.5, 73.0], "expected": 73.0}, {"input": [-29.5, 73.5], "expected": 73.5}, {"input": [-29.5, 74.0], "expected": 74.0}, {"input": [-29.5, 74.5], "expected": 74.5}, {"input": [-29.5, 75.0], "expected": 75.0}, {"input": [-29.5, 75.5], "expected": 75.5}, {"input": [-29.5, 76.0], "expected": 76.0}, {"input": [-29.5, 76.5], "expected": 76.5}, {"input": [-29.5, 77.0], "expected": 77.0}, {"input": [-29.5, 77.5], "expected": 77.5}, {"input": [-29.5, 78.0], "expected": 78.0}, {"input": [-29.5, 78.5], "expected": 78.5}, {"input": [-29.5, 79.0], "expected": 79.0}, {"input": [-29.5, 79.5], "expected": 79.5}, {"input": [-29.5, 80.0], "expected": 80.0}, {"input": [-29.5, 80.5], "expected": 80.5}, {"input": [-29.5, 81.0], "expected": 81.0}, {"input": [-29.5, 81.5], "expected": 81.5}, {"input": [-29.5, 82.0], "expected": 82.0}, {"input": [-29.5, 82.5], "expected": 82.5}, {"input": [-29.5, 83.0], "expected": 83.0}, {"input": [-29.5, 83.5], "expected": 83.5}, {"input": [-29.5, 84.0], "expected": 84.0}, {"input": [-29.5, 84.5], "expected": 84.5}, {"input": [-29.5, 85.0], "expected": 85.0}, {"input": [-29.5, 85.5], "expected": 85.5}, {"input": [-29.5, 86.0], "expected": 86.0}, {"input": [-29.5, 86.5], "expected": 86.5}, {"input": [-29.5, 87.0], "expected": 87.0}, {"input": [-29.5, 87.5], "expected": 87.5}, {"input": [-29.5, 88.0], "expected": 88.0}, {"input": [-29.5, 88.5], "expected": 88.5}, {"input": [-29.5, 89.0], "expected": 89.0}, {"input": [-29.5, 89.5], "expected": 89.5}, {"input": [-29.5, 90.0], "expected": 90.0}, {"input": [-29.5, 90.5], "expected": 90.5}, {"input": [-29.5, 91.0], "expected": 91.0}, {"input": [-29.5, 91.5], "expected": 91.5}, {"input": [-29.5, 92.0], "expected": 92.0}, {"input": [-29.5, 92.5], "expected": 92.5}, {"input": [-29.5, 93.0], "expected": 93.0}, {"input": [-29.5, 93.5], "expected": 93.5}, {"input": [-29.5, 94.0], "expected": 94.0}, {"input": [-29.5, 94.5], "expected": 94.5}, {"input": [-29.5, 95.0], "expected": 95.0}, {"input": [-29.5, 95.5], "expected": 95.5}, {"input": [-29.5, 96.0], "expected": 96.0}, {"input": [-29.5, 96.5], "expected": 96.5}, {"input": [-29.5, 97.0], "expected": 97.0}, {"input": [-29.5, 97.5], "expected": 97.5}, {"input": [-29.5, 98.0], "expected": 98.0}, {"input": [-29.5, 98.5], "expected": 98.5}, {"input": [-29.5, 99.0], "expected": 99.0}, {"input": [-29.5, 99.5], "expected": 99.5}, {"input": [-29.0, -100.0], "expected": -29.0}, {"input": [-29.0, -99.5], "expected": -29.0}, {"input": [-29.0, -99.0], "expected": -29.0}, {"input": [-29.0, -98.5], "expected": -29.0}, {"input": [-29.0, -98.0], "expected": -29.0}, {"input": [-29.0, -97.5], "expected": -29.0}, {"input": [-29.0, -97.0], "expected": -29.0}, {"input": [-29.0, -96.5], "expected": -29.0}, {"input": [-29.0, -96.0], "expected": -29.0}, {"input": [-29.0, -95.5], "expected": -29.0}, {"input": [-29.0, -95.0], "expected": -29.0}, {"input": [-29.0, -94.5], "expected": -29.0}, {"input": [-29.0, -94.0], "expected": -29.0}, {"input": [-29.0, -93.5], "expected": -29.0}, {"input": [-29.0, -93.0], "expected": -29.0}, {"input": [-29.0, -92.5], "expected": -29.0}, {"input": [-29.0, -92.0], "expected": -29.0}, {"input": [-29.0, -91.5], "expected": -29.0}, {"input": [-29.0, -91.0], "expected": -29.0}, {"input": [-29.0, -90.5], "expected": -29.0}, {"input": [-29.0, -90.0], "expected": -29.0}, {"input": [-29.0, -89.5], "expected": -29.0}, {"input": [-29.0, -89.0], "expected": -29.0}, {"input": [-29.0, -88.5], "expected": -29.0}, {"input": [-29.0, -88.0], "expected": -29.0}, {"input": [-29.0, -87.5], "expected": -29.0}, {"input": [-29.0, -87.0], "expected": -29.0}, {"input": [-29.0, -86.5], "expected": -29.0}, {"input": [-29.0, -86.0], "expected": -29.0}, {"input": [-29.0, -85.5], "expected": -29.0}, {"input": [-29.0, -85.0], "expected": -29.0}, {"input": [-29.0, -84.5], "expected": -29.0}, {"input": [-29.0, -84.0], "expected": -29.0}, {"input": [-29.0, -83.5], "expected": -29.0}, {"input": [-29.0, -83.0], "expected": -29.0}, {"input": [-29.0, -82.5], "expected": -29.0}, {"input": [-29.0, -82.0], "expected": -29.0}, {"input": [-29.0, -81.5], "expected": -29.0}, {"input": [-29.0, -81.0], "expected": -29.0}, {"input": [-29.0, -80.5], "expected": -29.0}, {"input": [-29.0, -80.0], "expected": -29.0}, {"input": [-29.0, -79.5], "expected": -29.0}, {"input": [-29.0, -79.0], "expected": -29.0}, {"input": [-29.0, -78.5], "expected": -29.0}, {"input": [-29.0, -78.0], "expected": -29.0}, {"input": [-29.0, -77.5], "expected": -29.0}, {"input": [-29.0, -77.0], "expected": -29.0}, {"input": [-29.0, -76.5], "expected": -29.0}, {"input": [-29.0, -76.0], "expected": -29.0}, {"input": [-29.0, -75.5], "expected": -29.0}, {"input": [-29.0, -75.0], "expected": -29.0}, {"input": [-29.0, -74.5], "expected": -29.0}, {"input": [-29.0, -74.0], "expected": -29.0}, {"input": [-29.0, -73.5], "expected": -29.0}, {"input": [-29.0, -73.0], "expected": -29.0}, {"input": [-29.0, -72.5], "expected": -29.0}, {"input": [-29.0, -72.0], "expected": -29.0}, {"input": [-29.0, -71.5], "expected": -29.0}, {"input": [-29.0, -71.0], "expected": -29.0}, {"input": [-29.0, -70.5], "expected": -29.0}, {"input": [-29.0, -70.0], "expected": -29.0}, {"input": [-29.0, -69.5], "expected": -29.0}, {"input": [-29.0, -69.0], "expected": -29.0}, {"input": [-29.0, -68.5], "expected": -29.0}, {"input": [-29.0, -68.0], "expected": -29.0}, {"input": [-29.0, -67.5], "expected": -29.0}, {"input": [-29.0, -67.0], "expected": -29.0}, {"input": [-29.0, -66.5], "expected": -29.0}, {"input": [-29.0, -66.0], "expected": -29.0}, {"input": [-29.0, -65.5], "expected": -29.0}, {"input": [-29.0, -65.0], "expected": -29.0}, {"input": [-29.0, -64.5], "expected": -29.0}, {"input": [-29.0, -64.0], "expected": -29.0}, {"input": [-29.0, -63.5], "expected": -29.0}, {"input": [-29.0, -63.0], "expected": -29.0}, {"input": [-29.0, -62.5], "expected": -28.999999999999996}, {"input": [-29.0, -62.0], "expected": -28.999999999999996}, {"input": [-29.0, -61.5], "expected": -28.999999999999993}, {"input": [-29.0, -61.0], "expected": -28.999999999999986}, {"input": [-29.0, -60.5], "expected": -28.99999999999998}, {"input": [-29.0, -60.0], "expected": -28.999999999999964}, {"input": [-29.0, -59.5], "expected": -28.999999999999943}, {"input": [-29.0, -59.0], "expected": -28.999999999999908}, {"input": [-29.0, -58.5], "expected": -28.999999999999847}, {"input": [-29.0, -58.0], "expected": -28.999999999999744}, {"input": [-29.0, -57.5], "expected": -28.99999999999958}, {"input": [-29.0, -57.0], "expected": -28.999999999999307}, {"input": [-29.0, -56.5], "expected": -28.99999999999886}, {"input": [-29.0, -56.0], "expected": -28.99999999999812}, {"input": [-29.0, -55.5], "expected": -28.999999999996902}, {"input": [-29.0, -55.0], "expected": -28.99999999999489}, {"input": [-29.0, -54.5], "expected": -28.999999999991577}, {"input": [-29.0, -54.0], "expected": -28.999999999986112}, {"input": [-29.0, -53.5], "expected": -28.999999999977103}, {"input": [-29.0, -53.0], "expected": -28.99999999996225}, {"input": [-29.0, -52.5], "expected": -28.99999999993776}, {"input": [-29.0, -52.0], "expected": -28.99999999989738}, {"input": [-29.0, -51.5], "expected": -28.99999999983081}, {"input": [-29.0, -51.0], "expected": -28.99999999972105}, {"input": [-29.0, -50.5], "expected": -28.999999999540094}, {"input": [-29.0, -50.0], "expected": -28.999999999241744}, {"input": [-29.0, -49.5], "expected": -28.999999998749846}, {"input": [-29.0, -49.0], "expected": -28.999999997938847}, {"input": [-29.0, -48.5], "expected": -28.999999996601733}, {"input": [-29.0, -48.0], "expected": -28.999999994397204}, {"input": [-29.0, -47.5], "expected": -28.99999999076255}, {"input": [-29.0, -47.0], "expected": -28.99999998477002}, {"input": [-29.0, -46.5], "expected": -28.99999997489001}, {"input": [-29.0, -46.0], "expected": -28.999999958600625}, {"input": [-29.0, -45.5], "expected": -28.999999931743968}, {"input": [-29.0, -45.0], "expected": -28.99999988746483}, {"input": [-29.0, -44.5], "expected": -28.99999981446088}, {"input": [-29.0, -44.0], "expected": -28.999999694097728}, {"input": [-29.0, -43.5], "expected": -28.999999495652464}, {"input": [-29.0, -43.0], "expected": -28.999999168471625}, {"input": [-29.0, -42.5], "expected": -28.999998629041855}, {"input": [-29.0, -42.0], "expected": -28.999997739673148}, {"input": [-29.0, -41.5], "expected": -28.999996273353773}, {"input": [-29.0, -41.0], "expected": -28.999993855806522}, {"input": [-29.0, -40.5], "expected": -28.99998986995771}, {"input": [-29.0, -40.0], "expected": -28.999983298438682}, {"input": [-29.0, -39.5], "expected": -28.999972463929772}, {"input": [-29.0, -39.0], "expected": -28.999954601100782}, {"input": [-29.0, -38.5], "expected": -28.99992515097137}, {"input": [-29.0, -38.0], "expected": -28.999876597810278}, {"input": [-29.0, -37.5], "expected": -28.999796552327872}, {"input": [-29.0, -37.0], "expected": -28.999664593627106}, {"input": [-29.0, -36.5], "expected": -28.99944706852464}, {"input": [-29.0, -36.0], "expected": -28.999088533546225}, {"input": [-29.0, -35.5], "expected": -28.998497689840246}, {"input": [-29.0, -35.0], "expected": -28.997524314862268}, {"input": [-29.0, -34.5], "expected": -28.995921556729428}, {"input": [-29.0, -34.0], "expected": -28.993284651510884}, {"input": [-29.0, -33.5], "expected": -28.988952255151407}, {"input": [-29.0, -33.0], "expected": -28.98185007208219}, {"input": [-29.0, -32.5], "expected": -28.97024958172738}, {"input": [-29.0, -32.0], "expected": -28.951412648426256}, {"input": [-29.0, -31.5], "expected": -28.92111026570745}, {"input": [-29.0, -31.0], "expected": -28.873071988957026}, {"input": [-29.0, -30.5], "expected": -28.798586722017248}, {"input": [-29.0, -30.0], "expected": -28.686738312481776}, {"input": [-29.0, -29.5], "expected": -28.52592301581989}, {"input": [-29.0, -29.0], "expected": -28.306852819440056}, {"input": [-29.0, -28.5], "expected": -28.02592301581989}, {"input": [-29.0, -28.0], "expected": -27.686738312481776}, {"input": [-29.0, -27.5], "expected": -27.298586722017248}, {"input": [-29.0, -27.0], "expected": -26.873071988957026}, {"input": [-29.0, -26.5], "expected": -26.42111026570745}, {"input": [-29.0, -26.0], "expected": -25.951412648426256}, {"input": [-29.0, -25.5], "expected": -25.47024958172738}, {"input": [-29.0, -25.0], "expected": -24.98185007208219}, {"input": [-29.0, -24.5], "expected": -24.488952255151407}, {"input": [-29.0, -24.0], "expected": -23.993284651510884}, {"input": [-29.0, -23.5], "expected": -23.495921556729428}, {"input": [-29.0, -23.0], "expected": -22.997524314862268}, {"input": [-29.0, -22.5], "expected": -22.498497689840246}, {"input": [-29.0, -22.0], "expected": -21.999088533546225}, {"input": [-29.0, -21.5], "expected": -21.49944706852464}, {"input": [-29.0, -21.0], "expected": -20.999664593627106}, {"input": [-29.0, -20.5], "expected": -20.499796552327872}, {"input": [-29.0, -20.0], "expected": -19.999876597810278}, {"input": [-29.0, -19.5], "expected": -19.49992515097137}, {"input": [-29.0, -19.0], "expected": -18.999954601100782}, {"input": [-29.0, -18.5], "expected": -18.499972463929772}, {"input": [-29.0, -18.0], "expected": -17.999983298438682}, {"input": [-29.0, -17.5], "expected": -17.49998986995771}, {"input": [-29.0, -17.0], "expected": -16.999993855806522}, {"input": [-29.0, -16.5], "expected": -16.499996273353773}, {"input": [-29.0, -16.0], "expected": -15.999997739673148}, {"input": [-29.0, -15.5], "expected": -15.499998629041853}, {"input": [-29.0, -15.0], "expected": -14.999999168471627}, {"input": [-29.0, -14.5], "expected": -14.499999495652464}, {"input": [-29.0, -14.0], "expected": -13.999999694097726}, {"input": [-29.0, -13.5], "expected": -13.499999814460882}, {"input": [-29.0, -13.0], "expected": -12.999999887464831}, {"input": [-29.0, -12.5], "expected": -12.499999931743968}, {"input": [-29.0, -12.0], "expected": -11.999999958600624}, {"input": [-29.0, -11.5], "expected": -11.49999997489001}, {"input": [-29.0, -11.0], "expected": -10.999999984770021}, {"input": [-29.0, -10.5], "expected": -10.49999999076255}, {"input": [-29.0, -10.0], "expected": -9.999999994397204}, {"input": [-29.0, -9.5], "expected": -9.499999996601732}, {"input": [-29.0, -9.0], "expected": -8.999999997938847}, {"input": [-29.0, -8.5], "expected": -8.499999998749848}, {"input": [-29.0, -8.0], "expected": -7.999999999241744}, {"input": [-29.0, -7.5], "expected": -7.499999999540094}, {"input": [-29.0, -7.0], "expected": -6.999999999721053}, {"input": [-29.0, -6.5], "expected": -6.49999999983081}, {"input": [-29.0, -6.0], "expected": -5.999999999897382}, {"input": [-29.0, -5.5], "expected": -5.499999999937758}, {"input": [-29.0, -5.0], "expected": -4.999999999962249}, {"input": [-29.0, -4.5], "expected": -4.499999999977103}, {"input": [-29.0, -4.0], "expected": -3.999999999986112}, {"input": [-29.0, -3.5], "expected": -3.4999999999915765}, {"input": [-29.0, -3.0], "expected": -2.9999999999948908}, {"input": [-29.0, -2.5], "expected": -2.499999999996901}, {"input": [-29.0, -2.0], "expected": -1.9999999999981204}, {"input": [-29.0, -1.5], "expected": -1.49999999999886}, {"input": [-29.0, -1.0], "expected": -0.9999999999993086}, {"input": [-29.0, -0.5], "expected": -0.4999999999995806}, {"input": [-29.0, 0.0], "expected": 2.543665647376599e-13}, {"input": [-29.0, 0.5], "expected": 0.5000000000001543}, {"input": [-29.0, 1.0], "expected": 1.0000000000000935}, {"input": [-29.0, 1.5], "expected": 1.5000000000000568}, {"input": [-29.0, 2.0], "expected": 2.0000000000000346}, {"input": [-29.0, 2.5], "expected": 2.500000000000021}, {"input": [-29.0, 3.0], "expected": 3.000000000000013}, {"input": [-29.0, 3.5], "expected": 3.5000000000000075}, {"input": [-29.0, 4.0], "expected": 4.000000000000004}, {"input": [-29.0, 4.5], "expected": 4.500000000000003}, {"input": [-29.0, 5.0], "expected": 5.000000000000002}, {"input": [-29.0, 5.5], "expected": 5.500000000000001}, {"input": [-29.0, 6.0], "expected": 6.000000000000001}, {"input": [-29.0, 6.5], "expected": 6.5}, {"input": [-29.0, 7.0], "expected": 7.0}, {"input": [-29.0, 7.5], "expected": 7.5}, {"input": [-29.0, 8.0], "expected": 8.0}, {"input": [-29.0, 8.5], "expected": 8.5}, {"input": [-29.0, 9.0], "expected": 9.0}, {"input": [-29.0, 9.5], "expected": 9.5}, {"input": [-29.0, 10.0], "expected": 10.0}, {"input": [-29.0, 10.5], "expected": 10.5}, {"input": [-29.0, 11.0], "expected": 11.0}, {"input": [-29.0, 11.5], "expected": 11.5}, {"input": [-29.0, 12.0], "expected": 12.0}, {"input": [-29.0, 12.5], "expected": 12.5}, {"input": [-29.0, 13.0], "expected": 13.0}, {"input": [-29.0, 13.5], "expected": 13.5}, {"input": [-29.0, 14.0], "expected": 14.0}, {"input": [-29.0, 14.5], "expected": 14.5}, {"input": [-29.0, 15.0], "expected": 15.0}, {"input": [-29.0, 15.5], "expected": 15.5}, {"input": [-29.0, 16.0], "expected": 16.0}, {"input": [-29.0, 16.5], "expected": 16.5}, {"input": [-29.0, 17.0], "expected": 17.0}, {"input": [-29.0, 17.5], "expected": 17.5}, {"input": [-29.0, 18.0], "expected": 18.0}, {"input": [-29.0, 18.5], "expected": 18.5}, {"input": [-29.0, 19.0], "expected": 19.0}, {"input": [-29.0, 19.5], "expected": 19.5}, {"input": [-29.0, 20.0], "expected": 20.0}, {"input": [-29.0, 20.5], "expected": 20.5}, {"input": [-29.0, 21.0], "expected": 21.0}, {"input": [-29.0, 21.5], "expected": 21.5}, {"input": [-29.0, 22.0], "expected": 22.0}, {"input": [-29.0, 22.5], "expected": 22.5}, {"input": [-29.0, 23.0], "expected": 23.0}, {"input": [-29.0, 23.5], "expected": 23.5}, {"input": [-29.0, 24.0], "expected": 24.0}, {"input": [-29.0, 24.5], "expected": 24.5}, {"input": [-29.0, 25.0], "expected": 25.0}, {"input": [-29.0, 25.5], "expected": 25.5}, {"input": [-29.0, 26.0], "expected": 26.0}, {"input": [-29.0, 26.5], "expected": 26.5}, {"input": [-29.0, 27.0], "expected": 27.0}, {"input": [-29.0, 27.5], "expected": 27.5}, {"input": [-29.0, 28.0], "expected": 28.0}, {"input": [-29.0, 28.5], "expected": 28.5}, {"input": [-29.0, 29.0], "expected": 29.0}, {"input": [-29.0, 29.5], "expected": 29.5}, {"input": [-29.0, 30.0], "expected": 30.0}, {"input": [-29.0, 30.5], "expected": 30.5}, {"input": [-29.0, 31.0], "expected": 31.0}, {"input": [-29.0, 31.5], "expected": 31.5}, {"input": [-29.0, 32.0], "expected": 32.0}, {"input": [-29.0, 32.5], "expected": 32.5}, {"input": [-29.0, 33.0], "expected": 33.0}, {"input": [-29.0, 33.5], "expected": 33.5}, {"input": [-29.0, 34.0], "expected": 34.0}, {"input": [-29.0, 34.5], "expected": 34.5}, {"input": [-29.0, 35.0], "expected": 35.0}, {"input": [-29.0, 35.5], "expected": 35.5}, {"input": [-29.0, 36.0], "expected": 36.0}, {"input": [-29.0, 36.5], "expected": 36.5}, {"input": [-29.0, 37.0], "expected": 37.0}, {"input": [-29.0, 37.5], "expected": 37.5}, {"input": [-29.0, 38.0], "expected": 38.0}, {"input": [-29.0, 38.5], "expected": 38.5}, {"input": [-29.0, 39.0], "expected": 39.0}, {"input": [-29.0, 39.5], "expected": 39.5}, {"input": [-29.0, 40.0], "expected": 40.0}, {"input": [-29.0, 40.5], "expected": 40.5}, {"input": [-29.0, 41.0], "expected": 41.0}, {"input": [-29.0, 41.5], "expected": 41.5}, {"input": [-29.0, 42.0], "expected": 42.0}, {"input": [-29.0, 42.5], "expected": 42.5}, {"input": [-29.0, 43.0], "expected": 43.0}, {"input": [-29.0, 43.5], "expected": 43.5}, {"input": [-29.0, 44.0], "expected": 44.0}, {"input": [-29.0, 44.5], "expected": 44.5}, {"input": [-29.0, 45.0], "expected": 45.0}, {"input": [-29.0, 45.5], "expected": 45.5}, {"input": [-29.0, 46.0], "expected": 46.0}, {"input": [-29.0, 46.5], "expected": 46.5}, {"input": [-29.0, 47.0], "expected": 47.0}, {"input": [-29.0, 47.5], "expected": 47.5}, {"input": [-29.0, 48.0], "expected": 48.0}, {"input": [-29.0, 48.5], "expected": 48.5}, {"input": [-29.0, 49.0], "expected": 49.0}, {"input": [-29.0, 49.5], "expected": 49.5}, {"input": [-29.0, 50.0], "expected": 50.0}, {"input": [-29.0, 50.5], "expected": 50.5}, {"input": [-29.0, 51.0], "expected": 51.0}, {"input": [-29.0, 51.5], "expected": 51.5}, {"input": [-29.0, 52.0], "expected": 52.0}, {"input": [-29.0, 52.5], "expected": 52.5}, {"input": [-29.0, 53.0], "expected": 53.0}, {"input": [-29.0, 53.5], "expected": 53.5}, {"input": [-29.0, 54.0], "expected": 54.0}, {"input": [-29.0, 54.5], "expected": 54.5}, {"input": [-29.0, 55.0], "expected": 55.0}, {"input": [-29.0, 55.5], "expected": 55.5}, {"input": [-29.0, 56.0], "expected": 56.0}, {"input": [-29.0, 56.5], "expected": 56.5}, {"input": [-29.0, 57.0], "expected": 57.0}, {"input": [-29.0, 57.5], "expected": 57.5}, {"input": [-29.0, 58.0], "expected": 58.0}, {"input": [-29.0, 58.5], "expected": 58.5}, {"input": [-29.0, 59.0], "expected": 59.0}, {"input": [-29.0, 59.5], "expected": 59.5}, {"input": [-29.0, 60.0], "expected": 60.0}, {"input": [-29.0, 60.5], "expected": 60.5}, {"input": [-29.0, 61.0], "expected": 61.0}, {"input": [-29.0, 61.5], "expected": 61.5}, {"input": [-29.0, 62.0], "expected": 62.0}, {"input": [-29.0, 62.5], "expected": 62.5}, {"input": [-29.0, 63.0], "expected": 63.0}, {"input": [-29.0, 63.5], "expected": 63.5}, {"input": [-29.0, 64.0], "expected": 64.0}, {"input": [-29.0, 64.5], "expected": 64.5}, {"input": [-29.0, 65.0], "expected": 65.0}, {"input": [-29.0, 65.5], "expected": 65.5}, {"input": [-29.0, 66.0], "expected": 66.0}, {"input": [-29.0, 66.5], "expected": 66.5}, {"input": [-29.0, 67.0], "expected": 67.0}, {"input": [-29.0, 67.5], "expected": 67.5}, {"input": [-29.0, 68.0], "expected": 68.0}, {"input": [-29.0, 68.5], "expected": 68.5}, {"input": [-29.0, 69.0], "expected": 69.0}, {"input": [-29.0, 69.5], "expected": 69.5}, {"input": [-29.0, 70.0], "expected": 70.0}, {"input": [-29.0, 70.5], "expected": 70.5}, {"input": [-29.0, 71.0], "expected": 71.0}, {"input": [-29.0, 71.5], "expected": 71.5}, {"input": [-29.0, 72.0], "expected": 72.0}, {"input": [-29.0, 72.5], "expected": 72.5}, {"input": [-29.0, 73.0], "expected": 73.0}, {"input": [-29.0, 73.5], "expected": 73.5}, {"input": [-29.0, 74.0], "expected": 74.0}, {"input": [-29.0, 74.5], "expected": 74.5}, {"input": [-29.0, 75.0], "expected": 75.0}, {"input": [-29.0, 75.5], "expected": 75.5}, {"input": [-29.0, 76.0], "expected": 76.0}, {"input": [-29.0, 76.5], "expected": 76.5}, {"input": [-29.0, 77.0], "expected": 77.0}, {"input": [-29.0, 77.5], "expected": 77.5}, {"input": [-29.0, 78.0], "expected": 78.0}, {"input": [-29.0, 78.5], "expected": 78.5}, {"input": [-29.0, 79.0], "expected": 79.0}, {"input": [-29.0, 79.5], "expected": 79.5}, {"input": [-29.0, 80.0], "expected": 80.0}, {"input": [-29.0, 80.5], "expected": 80.5}, {"input": [-29.0, 81.0], "expected": 81.0}, {"input": [-29.0, 81.5], "expected": 81.5}, {"input": [-29.0, 82.0], "expected": 82.0}, {"input": [-29.0, 82.5], "expected": 82.5}, {"input": [-29.0, 83.0], "expected": 83.0}, {"input": [-29.0, 83.5], "expected": 83.5}, {"input": [-29.0, 84.0], "expected": 84.0}, {"input": [-29.0, 84.5], "expected": 84.5}, {"input": [-29.0, 85.0], "expected": 85.0}, {"input": [-29.0, 85.5], "expected": 85.5}, {"input": [-29.0, 86.0], "expected": 86.0}, {"input": [-29.0, 86.5], "expected": 86.5}, {"input": [-29.0, 87.0], "expected": 87.0}, {"input": [-29.0, 87.5], "expected": 87.5}, {"input": [-29.0, 88.0], "expected": 88.0}, {"input": [-29.0, 88.5], "expected": 88.5}, {"input": [-29.0, 89.0], "expected": 89.0}, {"input": [-29.0, 89.5], "expected": 89.5}, {"input": [-29.0, 90.0], "expected": 90.0}, {"input": [-29.0, 90.5], "expected": 90.5}, {"input": [-29.0, 91.0], "expected": 91.0}, {"input": [-29.0, 91.5], "expected": 91.5}, {"input": [-29.0, 92.0], "expected": 92.0}, {"input": [-29.0, 92.5], "expected": 92.5}, {"input": [-29.0, 93.0], "expected": 93.0}, {"input": [-29.0, 93.5], "expected": 93.5}, {"input": [-29.0, 94.0], "expected": 94.0}, {"input": [-29.0, 94.5], "expected": 94.5}, {"input": [-29.0, 95.0], "expected": 95.0}, {"input": [-29.0, 95.5], "expected": 95.5}, {"input": [-29.0, 96.0], "expected": 96.0}, {"input": [-29.0, 96.5], "expected": 96.5}, {"input": [-29.0, 97.0], "expected": 97.0}, {"input": [-29.0, 97.5], "expected": 97.5}, {"input": [-29.0, 98.0], "expected": 98.0}, {"input": [-29.0, 98.5], "expected": 98.5}, {"input": [-29.0, 99.0], "expected": 99.0}, {"input": [-29.0, 99.5], "expected": 99.5}, {"input": [-28.5, -100.0], "expected": -28.5}, {"input": [-28.5, -99.5], "expected": -28.5}, {"input": [-28.5, -99.0], "expected": -28.5}, {"input": [-28.5, -98.5], "expected": -28.5}, {"input": [-28.5, -98.0], "expected": -28.5}, {"input": [-28.5, -97.5], "expected": -28.5}, {"input": [-28.5, -97.0], "expected": -28.5}, {"input": [-28.5, -96.5], "expected": -28.5}, {"input": [-28.5, -96.0], "expected": -28.5}, {"input": [-28.5, -95.5], "expected": -28.5}, {"input": [-28.5, -95.0], "expected": -28.5}, {"input": [-28.5, -94.5], "expected": -28.5}, {"input": [-28.5, -94.0], "expected": -28.5}, {"input": [-28.5, -93.5], "expected": -28.5}, {"input": [-28.5, -93.0], "expected": -28.5}, {"input": [-28.5, -92.5], "expected": -28.5}, {"input": [-28.5, -92.0], "expected": -28.5}, {"input": [-28.5, -91.5], "expected": -28.5}, {"input": [-28.5, -91.0], "expected": -28.5}, {"input": [-28.5, -90.5], "expected": -28.5}, {"input": [-28.5, -90.0], "expected": -28.5}, {"input": [-28.5, -89.5], "expected": -28.5}, {"input": [-28.5, -89.0], "expected": -28.5}, {"input": [-28.5, -88.5], "expected": -28.5}, {"input": [-28.5, -88.0], "expected": -28.5}, {"input": [-28.5, -87.5], "expected": -28.5}, {"input": [-28.5, -87.0], "expected": -28.5}, {"input": [-28.5, -86.5], "expected": -28.5}, {"input": [-28.5, -86.0], "expected": -28.5}, {"input": [-28.5, -85.5], "expected": -28.5}, {"input": [-28.5, -85.0], "expected": -28.5}, {"input": [-28.5, -84.5], "expected": -28.5}, {"input": [-28.5, -84.0], "expected": -28.5}, {"input": [-28.5, -83.5], "expected": -28.5}, {"input": [-28.5, -83.0], "expected": -28.5}, {"input": [-28.5, -82.5], "expected": -28.5}, {"input": [-28.5, -82.0], "expected": -28.5}, {"input": [-28.5, -81.5], "expected": -28.5}, {"input": [-28.5, -81.0], "expected": -28.5}, {"input": [-28.5, -80.5], "expected": -28.5}, {"input": [-28.5, -80.0], "expected": -28.5}, {"input": [-28.5, -79.5], "expected": -28.5}, {"input": [-28.5, -79.0], "expected": -28.5}, {"input": [-28.5, -78.5], "expected": -28.5}, {"input": [-28.5, -78.0], "expected": -28.5}, {"input": [-28.5, -77.5], "expected": -28.5}, {"input": [-28.5, -77.0], "expected": -28.5}, {"input": [-28.5, -76.5], "expected": -28.5}, {"input": [-28.5, -76.0], "expected": -28.5}, {"input": [-28.5, -75.5], "expected": -28.5}, {"input": [-28.5, -75.0], "expected": -28.5}, {"input": [-28.5, -74.5], "expected": -28.5}, {"input": [-28.5, -74.0], "expected": -28.5}, {"input": [-28.5, -73.5], "expected": -28.5}, {"input": [-28.5, -73.0], "expected": -28.5}, {"input": [-28.5, -72.5], "expected": -28.5}, {"input": [-28.5, -72.0], "expected": -28.5}, {"input": [-28.5, -71.5], "expected": -28.5}, {"input": [-28.5, -71.0], "expected": -28.5}, {"input": [-28.5, -70.5], "expected": -28.5}, {"input": [-28.5, -70.0], "expected": -28.5}, {"input": [-28.5, -69.5], "expected": -28.5}, {"input": [-28.5, -69.0], "expected": -28.5}, {"input": [-28.5, -68.5], "expected": -28.5}, {"input": [-28.5, -68.0], "expected": -28.5}, {"input": [-28.5, -67.5], "expected": -28.5}, {"input": [-28.5, -67.0], "expected": -28.5}, {"input": [-28.5, -66.5], "expected": -28.5}, {"input": [-28.5, -66.0], "expected": -28.5}, {"input": [-28.5, -65.5], "expected": -28.5}, {"input": [-28.5, -65.0], "expected": -28.5}, {"input": [-28.5, -64.5], "expected": -28.5}, {"input": [-28.5, -64.0], "expected": -28.5}, {"input": [-28.5, -63.5], "expected": -28.5}, {"input": [-28.5, -63.0], "expected": -28.5}, {"input": [-28.5, -62.5], "expected": -28.5}, {"input": [-28.5, -62.0], "expected": -28.499999999999996}, {"input": [-28.5, -61.5], "expected": -28.499999999999996}, {"input": [-28.5, -61.0], "expected": -28.499999999999993}, {"input": [-28.5, -60.5], "expected": -28.499999999999986}, {"input": [-28.5, -60.0], "expected": -28.49999999999998}, {"input": [-28.5, -59.5], "expected": -28.499999999999964}, {"input": [-28.5, -59.0], "expected": -28.499999999999943}, {"input": [-28.5, -58.5], "expected": -28.499999999999908}, {"input": [-28.5, -58.0], "expected": -28.499999999999847}, {"input": [-28.5, -57.5], "expected": -28.499999999999744}, {"input": [-28.5, -57.0], "expected": -28.49999999999958}, {"input": [-28.5, -56.5], "expected": -28.499999999999307}, {"input": [-28.5, -56.0], "expected": -28.49999999999886}, {"input": [-28.5, -55.5], "expected": -28.49999999999812}, {"input": [-28.5, -55.0], "expected": -28.499999999996902}, {"input": [-28.5, -54.5], "expected": -28.49999999999489}, {"input": [-28.5, -54.0], "expected": -28.499999999991577}, {"input": [-28.5, -53.5], "expected": -28.499999999986112}, {"input": [-28.5, -53.0], "expected": -28.499999999977103}, {"input": [-28.5, -52.5], "expected": -28.49999999996225}, {"input": [-28.5, -52.0], "expected": -28.49999999993776}, {"input": [-28.5, -51.5], "expected": -28.49999999989738}, {"input": [-28.5, -51.0], "expected": -28.49999999983081}, {"input": [-28.5, -50.5], "expected": -28.49999999972105}, {"input": [-28.5, -50.0], "expected": -28.499999999540094}, {"input": [-28.5, -49.5], "expected": -28.499999999241744}, {"input": [-28.5, -49.0], "expected": -28.499999998749846}, {"input": [-28.5, -48.5], "expected": -28.499999997938847}, {"input": [-28.5, -48.0], "expected": -28.499999996601733}, {"input": [-28.5, -47.5], "expected": -28.499999994397204}, {"input": [-28.5, -47.0], "expected": -28.49999999076255}, {"input": [-28.5, -46.5], "expected": -28.49999998477002}, {"input": [-28.5, -46.0], "expected": -28.49999997489001}, {"input": [-28.5, -45.5], "expected": -28.499999958600625}, {"input": [-28.5, -45.0], "expected": -28.499999931743968}, {"input": [-28.5, -44.5], "expected": -28.49999988746483}, {"input": [-28.5, -44.0], "expected": -28.49999981446088}, {"input": [-28.5, -43.5], "expected": -28.499999694097728}, {"input": [-28.5, -43.0], "expected": -28.499999495652464}, {"input": [-28.5, -42.5], "expected": -28.499999168471625}, {"input": [-28.5, -42.0], "expected": -28.499998629041855}, {"input": [-28.5, -41.5], "expected": -28.499997739673148}, {"input": [-28.5, -41.0], "expected": -28.499996273353773}, {"input": [-28.5, -40.5], "expected": -28.499993855806522}, {"input": [-28.5, -40.0], "expected": -28.49998986995771}, {"input": [-28.5, -39.5], "expected": -28.499983298438682}, {"input": [-28.5, -39.0], "expected": -28.499972463929772}, {"input": [-28.5, -38.5], "expected": -28.499954601100782}, {"input": [-28.5, -38.0], "expected": -28.49992515097137}, {"input": [-28.5, -37.5], "expected": -28.499876597810278}, {"input": [-28.5, -37.0], "expected": -28.499796552327872}, {"input": [-28.5, -36.5], "expected": -28.499664593627106}, {"input": [-28.5, -36.0], "expected": -28.49944706852464}, {"input": [-28.5, -35.5], "expected": -28.499088533546225}, {"input": [-28.5, -35.0], "expected": -28.498497689840246}, {"input": [-28.5, -34.5], "expected": -28.497524314862268}, {"input": [-28.5, -34.0], "expected": -28.495921556729428}, {"input": [-28.5, -33.5], "expected": -28.493284651510884}, {"input": [-28.5, -33.0], "expected": -28.488952255151407}, {"input": [-28.5, -32.5], "expected": -28.48185007208219}, {"input": [-28.5, -32.0], "expected": -28.47024958172738}, {"input": [-28.5, -31.5], "expected": -28.451412648426256}, {"input": [-28.5, -31.0], "expected": -28.42111026570745}, {"input": [-28.5, -30.5], "expected": -28.373071988957026}, {"input": [-28.5, -30.0], "expected": -28.298586722017248}, {"input": [-28.5, -29.5], "expected": -28.186738312481776}, {"input": [-28.5, -29.0], "expected": -28.02592301581989}, {"input": [-28.5, -28.5], "expected": -27.806852819440056}, {"input": [-28.5, -28.0], "expected": -27.52592301581989}, {"input": [-28.5, -27.5], "expected": -27.186738312481776}, {"input": [-28.5, -27.0], "expected": -26.798586722017248}, {"input": [-28.5, -26.5], "expected": -26.373071988957026}, {"input": [-28.5, -26.0], "expected": -25.92111026570745}, {"input": [-28.5, -25.5], "expected": -25.451412648426256}, {"input": [-28.5, -25.0], "expected": -24.97024958172738}, {"input": [-28.5, -24.5], "expected": -24.48185007208219}, {"input": [-28.5, -24.0], "expected": -23.988952255151407}, {"input": [-28.5, -23.5], "expected": -23.493284651510884}, {"input": [-28.5, -23.0], "expected": -22.995921556729428}, {"input": [-28.5, -22.5], "expected": -22.497524314862268}, {"input": [-28.5, -22.0], "expected": -21.998497689840246}, {"input": [-28.5, -21.5], "expected": -21.499088533546225}, {"input": [-28.5, -21.0], "expected": -20.99944706852464}, {"input": [-28.5, -20.5], "expected": -20.499664593627106}, {"input": [-28.5, -20.0], "expected": -19.999796552327872}, {"input": [-28.5, -19.5], "expected": -19.499876597810278}, {"input": [-28.5, -19.0], "expected": -18.99992515097137}, {"input": [-28.5, -18.5], "expected": -18.499954601100782}, {"input": [-28.5, -18.0], "expected": -17.999972463929772}, {"input": [-28.5, -17.5], "expected": -17.499983298438682}, {"input": [-28.5, -17.0], "expected": -16.99998986995771}, {"input": [-28.5, -16.5], "expected": -16.499993855806522}, {"input": [-28.5, -16.0], "expected": -15.999996273353771}, {"input": [-28.5, -15.5], "expected": -15.499997739673148}, {"input": [-28.5, -15.0], "expected": -14.999998629041853}, {"input": [-28.5, -14.5], "expected": -14.499999168471627}, {"input": [-28.5, -14.0], "expected": -13.999999495652464}, {"input": [-28.5, -13.5], "expected": -13.499999694097726}, {"input": [-28.5, -13.0], "expected": -12.999999814460882}, {"input": [-28.5, -12.5], "expected": -12.499999887464831}, {"input": [-28.5, -12.0], "expected": -11.999999931743968}, {"input": [-28.5, -11.5], "expected": -11.499999958600624}, {"input": [-28.5, -11.0], "expected": -10.99999997489001}, {"input": [-28.5, -10.5], "expected": -10.499999984770021}, {"input": [-28.5, -10.0], "expected": -9.99999999076255}, {"input": [-28.5, -9.5], "expected": -9.499999994397204}, {"input": [-28.5, -9.0], "expected": -8.999999996601732}, {"input": [-28.5, -8.5], "expected": -8.499999997938847}, {"input": [-28.5, -8.0], "expected": -7.999999998749847}, {"input": [-28.5, -7.5], "expected": -7.499999999241744}, {"input": [-28.5, -7.0], "expected": -6.999999999540094}, {"input": [-28.5, -6.5], "expected": -6.499999999721053}, {"input": [-28.5, -6.0], "expected": -5.99999999983081}, {"input": [-28.5, -5.5], "expected": -5.499999999897382}, {"input": [-28.5, -5.0], "expected": -4.999999999937758}, {"input": [-28.5, -4.5], "expected": -4.499999999962249}, {"input": [-28.5, -4.0], "expected": -3.9999999999771028}, {"input": [-28.5, -3.5], "expected": -3.499999999986112}, {"input": [-28.5, -3.0], "expected": -2.9999999999915765}, {"input": [-28.5, -2.5], "expected": -2.4999999999948908}, {"input": [-28.5, -2.0], "expected": -1.9999999999969011}, {"input": [-28.5, -1.5], "expected": -1.4999999999981204}, {"input": [-28.5, -1.0], "expected": -0.99999999999886}, {"input": [-28.5, -0.5], "expected": -0.49999999999930855}, {"input": [-28.5, 0.0], "expected": 4.193795658378665e-13}, {"input": [-28.5, 0.5], "expected": 0.5000000000002544}, {"input": [-28.5, 1.0], "expected": 1.0000000000001543}, {"input": [-28.5, 1.5], "expected": 1.5000000000000935}, {"input": [-28.5, 2.0], "expected": 2.000000000000057}, {"input": [-28.5, 2.5], "expected": 2.5000000000000346}, {"input": [-28.5, 3.0], "expected": 3.000000000000021}, {"input": [-28.5, 3.5], "expected": 3.500000000000013}, {"input": [-28.5, 4.0], "expected": 4.000000000000008}, {"input": [-28.5, 4.5], "expected": 4.500000000000004}, {"input": [-28.5, 5.0], "expected": 5.000000000000003}, {"input": [-28.5, 5.5], "expected": 5.500000000000002}, {"input": [-28.5, 6.0], "expected": 6.000000000000001}, {"input": [-28.5, 6.5], "expected": 6.500000000000001}, {"input": [-28.5, 7.0], "expected": 7.0}, {"input": [-28.5, 7.5], "expected": 7.5}, {"input": [-28.5, 8.0], "expected": 8.0}, {"input": [-28.5, 8.5], "expected": 8.5}, {"input": [-28.5, 9.0], "expected": 9.0}, {"input": [-28.5, 9.5], "expected": 9.5}, {"input": [-28.5, 10.0], "expected": 10.0}, {"input": [-28.5, 10.5], "expected": 10.5}, {"input": [-28.5, 11.0], "expected": 11.0}, {"input": [-28.5, 11.5], "expected": 11.5}, {"input": [-28.5, 12.0], "expected": 12.0}, {"input": [-28.5, 12.5], "expected": 12.5}, {"input": [-28.5, 13.0], "expected": 13.0}, {"input": [-28.5, 13.5], "expected": 13.5}, {"input": [-28.5, 14.0], "expected": 14.0}, {"input": [-28.5, 14.5], "expected": 14.5}, {"input": [-28.5, 15.0], "expected": 15.0}, {"input": [-28.5, 15.5], "expected": 15.5}, {"input": [-28.5, 16.0], "expected": 16.0}, {"input": [-28.5, 16.5], "expected": 16.5}, {"input": [-28.5, 17.0], "expected": 17.0}, {"input": [-28.5, 17.5], "expected": 17.5}, {"input": [-28.5, 18.0], "expected": 18.0}, {"input": [-28.5, 18.5], "expected": 18.5}, {"input": [-28.5, 19.0], "expected": 19.0}, {"input": [-28.5, 19.5], "expected": 19.5}, {"input": [-28.5, 20.0], "expected": 20.0}, {"input": [-28.5, 20.5], "expected": 20.5}, {"input": [-28.5, 21.0], "expected": 21.0}, {"input": [-28.5, 21.5], "expected": 21.5}, {"input": [-28.5, 22.0], "expected": 22.0}, {"input": [-28.5, 22.5], "expected": 22.5}, {"input": [-28.5, 23.0], "expected": 23.0}, {"input": [-28.5, 23.5], "expected": 23.5}, {"input": [-28.5, 24.0], "expected": 24.0}, {"input": [-28.5, 24.5], "expected": 24.5}, {"input": [-28.5, 25.0], "expected": 25.0}, {"input": [-28.5, 25.5], "expected": 25.5}, {"input": [-28.5, 26.0], "expected": 26.0}, {"input": [-28.5, 26.5], "expected": 26.5}, {"input": [-28.5, 27.0], "expected": 27.0}, {"input": [-28.5, 27.5], "expected": 27.5}, {"input": [-28.5, 28.0], "expected": 28.0}, {"input": [-28.5, 28.5], "expected": 28.5}, {"input": [-28.5, 29.0], "expected": 29.0}, {"input": [-28.5, 29.5], "expected": 29.5}, {"input": [-28.5, 30.0], "expected": 30.0}, {"input": [-28.5, 30.5], "expected": 30.5}, {"input": [-28.5, 31.0], "expected": 31.0}, {"input": [-28.5, 31.5], "expected": 31.5}, {"input": [-28.5, 32.0], "expected": 32.0}, {"input": [-28.5, 32.5], "expected": 32.5}, {"input": [-28.5, 33.0], "expected": 33.0}, {"input": [-28.5, 33.5], "expected": 33.5}, {"input": [-28.5, 34.0], "expected": 34.0}, {"input": [-28.5, 34.5], "expected": 34.5}, {"input": [-28.5, 35.0], "expected": 35.0}, {"input": [-28.5, 35.5], "expected": 35.5}, {"input": [-28.5, 36.0], "expected": 36.0}, {"input": [-28.5, 36.5], "expected": 36.5}, {"input": [-28.5, 37.0], "expected": 37.0}, {"input": [-28.5, 37.5], "expected": 37.5}, {"input": [-28.5, 38.0], "expected": 38.0}, {"input": [-28.5, 38.5], "expected": 38.5}, {"input": [-28.5, 39.0], "expected": 39.0}, {"input": [-28.5, 39.5], "expected": 39.5}, {"input": [-28.5, 40.0], "expected": 40.0}, {"input": [-28.5, 40.5], "expected": 40.5}, {"input": [-28.5, 41.0], "expected": 41.0}, {"input": [-28.5, 41.5], "expected": 41.5}, {"input": [-28.5, 42.0], "expected": 42.0}, {"input": [-28.5, 42.5], "expected": 42.5}, {"input": [-28.5, 43.0], "expected": 43.0}, {"input": [-28.5, 43.5], "expected": 43.5}, {"input": [-28.5, 44.0], "expected": 44.0}, {"input": [-28.5, 44.5], "expected": 44.5}, {"input": [-28.5, 45.0], "expected": 45.0}, {"input": [-28.5, 45.5], "expected": 45.5}, {"input": [-28.5, 46.0], "expected": 46.0}, {"input": [-28.5, 46.5], "expected": 46.5}, {"input": [-28.5, 47.0], "expected": 47.0}, {"input": [-28.5, 47.5], "expected": 47.5}, {"input": [-28.5, 48.0], "expected": 48.0}, {"input": [-28.5, 48.5], "expected": 48.5}, {"input": [-28.5, 49.0], "expected": 49.0}, {"input": [-28.5, 49.5], "expected": 49.5}, {"input": [-28.5, 50.0], "expected": 50.0}, {"input": [-28.5, 50.5], "expected": 50.5}, {"input": [-28.5, 51.0], "expected": 51.0}, {"input": [-28.5, 51.5], "expected": 51.5}, {"input": [-28.5, 52.0], "expected": 52.0}, {"input": [-28.5, 52.5], "expected": 52.5}, {"input": [-28.5, 53.0], "expected": 53.0}, {"input": [-28.5, 53.5], "expected": 53.5}, {"input": [-28.5, 54.0], "expected": 54.0}, {"input": [-28.5, 54.5], "expected": 54.5}, {"input": [-28.5, 55.0], "expected": 55.0}, {"input": [-28.5, 55.5], "expected": 55.5}, {"input": [-28.5, 56.0], "expected": 56.0}, {"input": [-28.5, 56.5], "expected": 56.5}, {"input": [-28.5, 57.0], "expected": 57.0}, {"input": [-28.5, 57.5], "expected": 57.5}, {"input": [-28.5, 58.0], "expected": 58.0}, {"input": [-28.5, 58.5], "expected": 58.5}, {"input": [-28.5, 59.0], "expected": 59.0}, {"input": [-28.5, 59.5], "expected": 59.5}, {"input": [-28.5, 60.0], "expected": 60.0}, {"input": [-28.5, 60.5], "expected": 60.5}, {"input": [-28.5, 61.0], "expected": 61.0}, {"input": [-28.5, 61.5], "expected": 61.5}, {"input": [-28.5, 62.0], "expected": 62.0}, {"input": [-28.5, 62.5], "expected": 62.5}, {"input": [-28.5, 63.0], "expected": 63.0}, {"input": [-28.5, 63.5], "expected": 63.5}, {"input": [-28.5, 64.0], "expected": 64.0}, {"input": [-28.5, 64.5], "expected": 64.5}, {"input": [-28.5, 65.0], "expected": 65.0}, {"input": [-28.5, 65.5], "expected": 65.5}, {"input": [-28.5, 66.0], "expected": 66.0}, {"input": [-28.5, 66.5], "expected": 66.5}, {"input": [-28.5, 67.0], "expected": 67.0}, {"input": [-28.5, 67.5], "expected": 67.5}, {"input": [-28.5, 68.0], "expected": 68.0}, {"input": [-28.5, 68.5], "expected": 68.5}, {"input": [-28.5, 69.0], "expected": 69.0}, {"input": [-28.5, 69.5], "expected": 69.5}, {"input": [-28.5, 70.0], "expected": 70.0}, {"input": [-28.5, 70.5], "expected": 70.5}, {"input": [-28.5, 71.0], "expected": 71.0}, {"input": [-28.5, 71.5], "expected": 71.5}, {"input": [-28.5, 72.0], "expected": 72.0}, {"input": [-28.5, 72.5], "expected": 72.5}, {"input": [-28.5, 73.0], "expected": 73.0}, {"input": [-28.5, 73.5], "expected": 73.5}, {"input": [-28.5, 74.0], "expected": 74.0}, {"input": [-28.5, 74.5], "expected": 74.5}, {"input": [-28.5, 75.0], "expected": 75.0}, {"input": [-28.5, 75.5], "expected": 75.5}, {"input": [-28.5, 76.0], "expected": 76.0}, {"input": [-28.5, 76.5], "expected": 76.5}, {"input": [-28.5, 77.0], "expected": 77.0}, {"input": [-28.5, 77.5], "expected": 77.5}, {"input": [-28.5, 78.0], "expected": 78.0}, {"input": [-28.5, 78.5], "expected": 78.5}, {"input": [-28.5, 79.0], "expected": 79.0}, {"input": [-28.5, 79.5], "expected": 79.5}, {"input": [-28.5, 80.0], "expected": 80.0}, {"input": [-28.5, 80.5], "expected": 80.5}, {"input": [-28.5, 81.0], "expected": 81.0}, {"input": [-28.5, 81.5], "expected": 81.5}, {"input": [-28.5, 82.0], "expected": 82.0}, {"input": [-28.5, 82.5], "expected": 82.5}, {"input": [-28.5, 83.0], "expected": 83.0}, {"input": [-28.5, 83.5], "expected": 83.5}, {"input": [-28.5, 84.0], "expected": 84.0}, {"input": [-28.5, 84.5], "expected": 84.5}, {"input": [-28.5, 85.0], "expected": 85.0}, {"input": [-28.5, 85.5], "expected": 85.5}, {"input": [-28.5, 86.0], "expected": 86.0}, {"input": [-28.5, 86.5], "expected": 86.5}, {"input": [-28.5, 87.0], "expected": 87.0}, {"input": [-28.5, 87.5], "expected": 87.5}, {"input": [-28.5, 88.0], "expected": 88.0}, {"input": [-28.5, 88.5], "expected": 88.5}, {"input": [-28.5, 89.0], "expected": 89.0}, {"input": [-28.5, 89.5], "expected": 89.5}, {"input": [-28.5, 90.0], "expected": 90.0}, {"input": [-28.5, 90.5], "expected": 90.5}, {"input": [-28.5, 91.0], "expected": 91.0}, {"input": [-28.5, 91.5], "expected": 91.5}, {"input": [-28.5, 92.0], "expected": 92.0}, {"input": [-28.5, 92.5], "expected": 92.5}, {"input": [-28.5, 93.0], "expected": 93.0}, {"input": [-28.5, 93.5], "expected": 93.5}, {"input": [-28.5, 94.0], "expected": 94.0}, {"input": [-28.5, 94.5], "expected": 94.5}, {"input": [-28.5, 95.0], "expected": 95.0}, {"input": [-28.5, 95.5], "expected": 95.5}, {"input": [-28.5, 96.0], "expected": 96.0}, {"input": [-28.5, 96.5], "expected": 96.5}, {"input": [-28.5, 97.0], "expected": 97.0}, {"input": [-28.5, 97.5], "expected": 97.5}, {"input": [-28.5, 98.0], "expected": 98.0}, {"input": [-28.5, 98.5], "expected": 98.5}, {"input": [-28.5, 99.0], "expected": 99.0}, {"input": [-28.5, 99.5], "expected": 99.5}, {"input": [-28.0, -100.0], "expected": -28.0}, {"input": [-28.0, -99.5], "expected": -28.0}, {"input": [-28.0, -99.0], "expected": -28.0}, {"input": [-28.0, -98.5], "expected": -28.0}, {"input": [-28.0, -98.0], "expected": -28.0}, {"input": [-28.0, -97.5], "expected": -28.0}, {"input": [-28.0, -97.0], "expected": -28.0}, {"input": [-28.0, -96.5], "expected": -28.0}, {"input": [-28.0, -96.0], "expected": -28.0}, {"input": [-28.0, -95.5], "expected": -28.0}, {"input": [-28.0, -95.0], "expected": -28.0}, {"input": [-28.0, -94.5], "expected": -28.0}, {"input": [-28.0, -94.0], "expected": -28.0}, {"input": [-28.0, -93.5], "expected": -28.0}, {"input": [-28.0, -93.0], "expected": -28.0}, {"input": [-28.0, -92.5], "expected": -28.0}, {"input": [-28.0, -92.0], "expected": -28.0}, {"input": [-28.0, -91.5], "expected": -28.0}, {"input": [-28.0, -91.0], "expected": -28.0}, {"input": [-28.0, -90.5], "expected": -28.0}, {"input": [-28.0, -90.0], "expected": -28.0}, {"input": [-28.0, -89.5], "expected": -28.0}, {"input": [-28.0, -89.0], "expected": -28.0}, {"input": [-28.0, -88.5], "expected": -28.0}, {"input": [-28.0, -88.0], "expected": -28.0}, {"input": [-28.0, -87.5], "expected": -28.0}, {"input": [-28.0, -87.0], "expected": -28.0}, {"input": [-28.0, -86.5], "expected": -28.0}, {"input": [-28.0, -86.0], "expected": -28.0}, {"input": [-28.0, -85.5], "expected": -28.0}, {"input": [-28.0, -85.0], "expected": -28.0}, {"input": [-28.0, -84.5], "expected": -28.0}, {"input": [-28.0, -84.0], "expected": -28.0}, {"input": [-28.0, -83.5], "expected": -28.0}, {"input": [-28.0, -83.0], "expected": -28.0}, {"input": [-28.0, -82.5], "expected": -28.0}, {"input": [-28.0, -82.0], "expected": -28.0}, {"input": [-28.0, -81.5], "expected": -28.0}, {"input": [-28.0, -81.0], "expected": -28.0}, {"input": [-28.0, -80.5], "expected": -28.0}, {"input": [-28.0, -80.0], "expected": -28.0}, {"input": [-28.0, -79.5], "expected": -28.0}, {"input": [-28.0, -79.0], "expected": -28.0}, {"input": [-28.0, -78.5], "expected": -28.0}, {"input": [-28.0, -78.0], "expected": -28.0}, {"input": [-28.0, -77.5], "expected": -28.0}, {"input": [-28.0, -77.0], "expected": -28.0}, {"input": [-28.0, -76.5], "expected": -28.0}, {"input": [-28.0, -76.0], "expected": -28.0}, {"input": [-28.0, -75.5], "expected": -28.0}, {"input": [-28.0, -75.0], "expected": -28.0}, {"input": [-28.0, -74.5], "expected": -28.0}, {"input": [-28.0, -74.0], "expected": -28.0}, {"input": [-28.0, -73.5], "expected": -28.0}, {"input": [-28.0, -73.0], "expected": -28.0}, {"input": [-28.0, -72.5], "expected": -28.0}, {"input": [-28.0, -72.0], "expected": -28.0}, {"input": [-28.0, -71.5], "expected": -28.0}, {"input": [-28.0, -71.0], "expected": -28.0}, {"input": [-28.0, -70.5], "expected": -28.0}, {"input": [-28.0, -70.0], "expected": -28.0}, {"input": [-28.0, -69.5], "expected": -28.0}, {"input": [-28.0, -69.0], "expected": -28.0}, {"input": [-28.0, -68.5], "expected": -28.0}, {"input": [-28.0, -68.0], "expected": -28.0}, {"input": [-28.0, -67.5], "expected": -28.0}, {"input": [-28.0, -67.0], "expected": -28.0}, {"input": [-28.0, -66.5], "expected": -28.0}, {"input": [-28.0, -66.0], "expected": -28.0}, {"input": [-28.0, -65.5], "expected": -28.0}, {"input": [-28.0, -65.0], "expected": -28.0}, {"input": [-28.0, -64.5], "expected": -28.0}, {"input": [-28.0, -64.0], "expected": -28.0}, {"input": [-28.0, -63.5], "expected": -28.0}, {"input": [-28.0, -63.0], "expected": -28.0}, {"input": [-28.0, -62.5], "expected": -28.0}, {"input": [-28.0, -62.0], "expected": -28.0}, {"input": [-28.0, -61.5], "expected": -27.999999999999996}, {"input": [-28.0, -61.0], "expected": -27.999999999999996}, {"input": [-28.0, -60.5], "expected": -27.999999999999993}, {"input": [-28.0, -60.0], "expected": -27.999999999999986}, {"input": [-28.0, -59.5], "expected": -27.99999999999998}, {"input": [-28.0, -59.0], "expected": -27.999999999999964}, {"input": [-28.0, -58.5], "expected": -27.999999999999943}, {"input": [-28.0, -58.0], "expected": -27.999999999999908}, {"input": [-28.0, -57.5], "expected": -27.999999999999847}, {"input": [-28.0, -57.0], "expected": -27.999999999999744}, {"input": [-28.0, -56.5], "expected": -27.99999999999958}, {"input": [-28.0, -56.0], "expected": -27.999999999999307}, {"input": [-28.0, -55.5], "expected": -27.99999999999886}, {"input": [-28.0, -55.0], "expected": -27.99999999999812}, {"input": [-28.0, -54.5], "expected": -27.999999999996902}, {"input": [-28.0, -54.0], "expected": -27.99999999999489}, {"input": [-28.0, -53.5], "expected": -27.999999999991577}, {"input": [-28.0, -53.0], "expected": -27.999999999986112}, {"input": [-28.0, -52.5], "expected": -27.999999999977103}, {"input": [-28.0, -52.0], "expected": -27.99999999996225}, {"input": [-28.0, -51.5], "expected": -27.99999999993776}, {"input": [-28.0, -51.0], "expected": -27.99999999989738}, {"input": [-28.0, -50.5], "expected": -27.99999999983081}, {"input": [-28.0, -50.0], "expected": -27.99999999972105}, {"input": [-28.0, -49.5], "expected": -27.999999999540094}, {"input": [-28.0, -49.0], "expected": -27.999999999241744}, {"input": [-28.0, -48.5], "expected": -27.999999998749846}, {"input": [-28.0, -48.0], "expected": -27.999999997938847}, {"input": [-28.0, -47.5], "expected": -27.999999996601733}, {"input": [-28.0, -47.0], "expected": -27.999999994397204}, {"input": [-28.0, -46.5], "expected": -27.99999999076255}, {"input": [-28.0, -46.0], "expected": -27.99999998477002}, {"input": [-28.0, -45.5], "expected": -27.99999997489001}, {"input": [-28.0, -45.0], "expected": -27.999999958600625}, {"input": [-28.0, -44.5], "expected": -27.999999931743968}, {"input": [-28.0, -44.0], "expected": -27.99999988746483}, {"input": [-28.0, -43.5], "expected": -27.99999981446088}, {"input": [-28.0, -43.0], "expected": -27.999999694097728}, {"input": [-28.0, -42.5], "expected": -27.999999495652464}, {"input": [-28.0, -42.0], "expected": -27.999999168471625}, {"input": [-28.0, -41.5], "expected": -27.999998629041855}, {"input": [-28.0, -41.0], "expected": -27.999997739673148}, {"input": [-28.0, -40.5], "expected": -27.999996273353773}, {"input": [-28.0, -40.0], "expected": -27.999993855806522}, {"input": [-28.0, -39.5], "expected": -27.99998986995771}, {"input": [-28.0, -39.0], "expected": -27.999983298438682}, {"input": [-28.0, -38.5], "expected": -27.999972463929772}, {"input": [-28.0, -38.0], "expected": -27.999954601100782}, {"input": [-28.0, -37.5], "expected": -27.99992515097137}, {"input": [-28.0, -37.0], "expected": -27.999876597810278}, {"input": [-28.0, -36.5], "expected": -27.999796552327872}, {"input": [-28.0, -36.0], "expected": -27.999664593627106}, {"input": [-28.0, -35.5], "expected": -27.99944706852464}, {"input": [-28.0, -35.0], "expected": -27.999088533546225}, {"input": [-28.0, -34.5], "expected": -27.998497689840246}, {"input": [-28.0, -34.0], "expected": -27.997524314862268}, {"input": [-28.0, -33.5], "expected": -27.995921556729428}, {"input": [-28.0, -33.0], "expected": -27.993284651510884}, {"input": [-28.0, -32.5], "expected": -27.988952255151407}, {"input": [-28.0, -32.0], "expected": -27.98185007208219}, {"input": [-28.0, -31.5], "expected": -27.97024958172738}, {"input": [-28.0, -31.0], "expected": -27.951412648426256}, {"input": [-28.0, -30.5], "expected": -27.92111026570745}, {"input": [-28.0, -30.0], "expected": -27.873071988957026}, {"input": [-28.0, -29.5], "expected": -27.798586722017248}, {"input": [-28.0, -29.0], "expected": -27.686738312481776}, {"input": [-28.0, -28.5], "expected": -27.52592301581989}, {"input": [-28.0, -28.0], "expected": -27.306852819440056}, {"input": [-28.0, -27.5], "expected": -27.02592301581989}, {"input": [-28.0, -27.0], "expected": -26.686738312481776}, {"input": [-28.0, -26.5], "expected": -26.298586722017248}, {"input": [-28.0, -26.0], "expected": -25.873071988957026}, {"input": [-28.0, -25.5], "expected": -25.42111026570745}, {"input": [-28.0, -25.0], "expected": -24.951412648426256}, {"input": [-28.0, -24.5], "expected": -24.47024958172738}, {"input": [-28.0, -24.0], "expected": -23.98185007208219}, {"input": [-28.0, -23.5], "expected": -23.488952255151407}, {"input": [-28.0, -23.0], "expected": -22.993284651510884}, {"input": [-28.0, -22.5], "expected": -22.495921556729428}, {"input": [-28.0, -22.0], "expected": -21.997524314862268}, {"input": [-28.0, -21.5], "expected": -21.498497689840246}, {"input": [-28.0, -21.0], "expected": -20.999088533546225}, {"input": [-28.0, -20.5], "expected": -20.49944706852464}, {"input": [-28.0, -20.0], "expected": -19.999664593627106}, {"input": [-28.0, -19.5], "expected": -19.499796552327872}, {"input": [-28.0, -19.0], "expected": -18.999876597810278}, {"input": [-28.0, -18.5], "expected": -18.49992515097137}, {"input": [-28.0, -18.0], "expected": -17.999954601100782}, {"input": [-28.0, -17.5], "expected": -17.499972463929772}, {"input": [-28.0, -17.0], "expected": -16.999983298438682}, {"input": [-28.0, -16.5], "expected": -16.49998986995771}, {"input": [-28.0, -16.0], "expected": -15.999993855806522}, {"input": [-28.0, -15.5], "expected": -15.499996273353771}, {"input": [-28.0, -15.0], "expected": -14.999997739673148}, {"input": [-28.0, -14.5], "expected": -14.499998629041853}, {"input": [-28.0, -14.0], "expected": -13.999999168471627}, {"input": [-28.0, -13.5], "expected": -13.499999495652464}, {"input": [-28.0, -13.0], "expected": -12.999999694097726}, {"input": [-28.0, -12.5], "expected": -12.499999814460882}, {"input": [-28.0, -12.0], "expected": -11.999999887464831}, {"input": [-28.0, -11.5], "expected": -11.499999931743968}, {"input": [-28.0, -11.0], "expected": -10.999999958600624}, {"input": [-28.0, -10.5], "expected": -10.49999997489001}, {"input": [-28.0, -10.0], "expected": -9.999999984770021}, {"input": [-28.0, -9.5], "expected": -9.49999999076255}, {"input": [-28.0, -9.0], "expected": -8.999999994397204}, {"input": [-28.0, -8.5], "expected": -8.499999996601732}, {"input": [-28.0, -8.0], "expected": -7.999999997938846}, {"input": [-28.0, -7.5], "expected": -7.499999998749847}, {"input": [-28.0, -7.0], "expected": -6.999999999241744}, {"input": [-28.0, -6.5], "expected": -6.499999999540094}, {"input": [-28.0, -6.0], "expected": -5.999999999721053}, {"input": [-28.0, -5.5], "expected": -5.49999999983081}, {"input": [-28.0, -5.0], "expected": -4.999999999897382}, {"input": [-28.0, -4.5], "expected": -4.499999999937758}, {"input": [-28.0, -4.0], "expected": -3.999999999962249}, {"input": [-28.0, -3.5], "expected": -3.4999999999771028}, {"input": [-28.0, -3.0], "expected": -2.999999999986112}, {"input": [-28.0, -2.5], "expected": -2.4999999999915765}, {"input": [-28.0, -2.0], "expected": -1.999999999994891}, {"input": [-28.0, -1.5], "expected": -1.4999999999969011}, {"input": [-28.0, -1.0], "expected": -0.9999999999981205}, {"input": [-28.0, -0.5], "expected": -0.49999999999886}, {"input": [-28.0, 0.0], "expected": 6.914400106937813e-13}, {"input": [-28.0, 0.5], "expected": 0.5000000000004193}, {"input": [-28.0, 1.0], "expected": 1.0000000000002545}, {"input": [-28.0, 1.5], "expected": 1.5000000000001543}, {"input": [-28.0, 2.0], "expected": 2.0000000000000937}, {"input": [-28.0, 2.5], "expected": 2.500000000000057}, {"input": [-28.0, 3.0], "expected": 3.0000000000000346}, {"input": [-28.0, 3.5], "expected": 3.500000000000021}, {"input": [-28.0, 4.0], "expected": 4.000000000000012}, {"input": [-28.0, 4.5], "expected": 4.500000000000008}, {"input": [-28.0, 5.0], "expected": 5.000000000000004}, {"input": [-28.0, 5.5], "expected": 5.500000000000003}, {"input": [-28.0, 6.0], "expected": 6.000000000000002}, {"input": [-28.0, 6.5], "expected": 6.500000000000001}, {"input": [-28.0, 7.0], "expected": 7.000000000000001}, {"input": [-28.0, 7.5], "expected": 7.5}, {"input": [-28.0, 8.0], "expected": 8.0}, {"input": [-28.0, 8.5], "expected": 8.5}, {"input": [-28.0, 9.0], "expected": 9.0}, {"input": [-28.0, 9.5], "expected": 9.5}, {"input": [-28.0, 10.0], "expected": 10.0}, {"input": [-28.0, 10.5], "expected": 10.5}, {"input": [-28.0, 11.0], "expected": 11.0}, {"input": [-28.0, 11.5], "expected": 11.5}, {"input": [-28.0, 12.0], "expected": 12.0}, {"input": [-28.0, 12.5], "expected": 12.5}, {"input": [-28.0, 13.0], "expected": 13.0}, {"input": [-28.0, 13.5], "expected": 13.5}, {"input": [-28.0, 14.0], "expected": 14.0}, {"input": [-28.0, 14.5], "expected": 14.5}, {"input": [-28.0, 15.0], "expected": 15.0}, {"input": [-28.0, 15.5], "expected": 15.5}, {"input": [-28.0, 16.0], "expected": 16.0}, {"input": [-28.0, 16.5], "expected": 16.5}, {"input": [-28.0, 17.0], "expected": 17.0}, {"input": [-28.0, 17.5], "expected": 17.5}, {"input": [-28.0, 18.0], "expected": 18.0}, {"input": [-28.0, 18.5], "expected": 18.5}, {"input": [-28.0, 19.0], "expected": 19.0}, {"input": [-28.0, 19.5], "expected": 19.5}, {"input": [-28.0, 20.0], "expected": 20.0}, {"input": [-28.0, 20.5], "expected": 20.5}, {"input": [-28.0, 21.0], "expected": 21.0}, {"input": [-28.0, 21.5], "expected": 21.5}, {"input": [-28.0, 22.0], "expected": 22.0}, {"input": [-28.0, 22.5], "expected": 22.5}, {"input": [-28.0, 23.0], "expected": 23.0}, {"input": [-28.0, 23.5], "expected": 23.5}, {"input": [-28.0, 24.0], "expected": 24.0}, {"input": [-28.0, 24.5], "expected": 24.5}, {"input": [-28.0, 25.0], "expected": 25.0}, {"input": [-28.0, 25.5], "expected": 25.5}, {"input": [-28.0, 26.0], "expected": 26.0}, {"input": [-28.0, 26.5], "expected": 26.5}, {"input": [-28.0, 27.0], "expected": 27.0}, {"input": [-28.0, 27.5], "expected": 27.5}, {"input": [-28.0, 28.0], "expected": 28.0}, {"input": [-28.0, 28.5], "expected": 28.5}, {"input": [-28.0, 29.0], "expected": 29.0}, {"input": [-28.0, 29.5], "expected": 29.5}, {"input": [-28.0, 30.0], "expected": 30.0}, {"input": [-28.0, 30.5], "expected": 30.5}, {"input": [-28.0, 31.0], "expected": 31.0}, {"input": [-28.0, 31.5], "expected": 31.5}, {"input": [-28.0, 32.0], "expected": 32.0}, {"input": [-28.0, 32.5], "expected": 32.5}, {"input": [-28.0, 33.0], "expected": 33.0}, {"input": [-28.0, 33.5], "expected": 33.5}, {"input": [-28.0, 34.0], "expected": 34.0}, {"input": [-28.0, 34.5], "expected": 34.5}, {"input": [-28.0, 35.0], "expected": 35.0}, {"input": [-28.0, 35.5], "expected": 35.5}, {"input": [-28.0, 36.0], "expected": 36.0}, {"input": [-28.0, 36.5], "expected": 36.5}, {"input": [-28.0, 37.0], "expected": 37.0}, {"input": [-28.0, 37.5], "expected": 37.5}, {"input": [-28.0, 38.0], "expected": 38.0}, {"input": [-28.0, 38.5], "expected": 38.5}, {"input": [-28.0, 39.0], "expected": 39.0}, {"input": [-28.0, 39.5], "expected": 39.5}, {"input": [-28.0, 40.0], "expected": 40.0}, {"input": [-28.0, 40.5], "expected": 40.5}, {"input": [-28.0, 41.0], "expected": 41.0}, {"input": [-28.0, 41.5], "expected": 41.5}, {"input": [-28.0, 42.0], "expected": 42.0}, {"input": [-28.0, 42.5], "expected": 42.5}, {"input": [-28.0, 43.0], "expected": 43.0}, {"input": [-28.0, 43.5], "expected": 43.5}, {"input": [-28.0, 44.0], "expected": 44.0}, {"input": [-28.0, 44.5], "expected": 44.5}, {"input": [-28.0, 45.0], "expected": 45.0}, {"input": [-28.0, 45.5], "expected": 45.5}, {"input": [-28.0, 46.0], "expected": 46.0}, {"input": [-28.0, 46.5], "expected": 46.5}, {"input": [-28.0, 47.0], "expected": 47.0}, {"input": [-28.0, 47.5], "expected": 47.5}, {"input": [-28.0, 48.0], "expected": 48.0}, {"input": [-28.0, 48.5], "expected": 48.5}, {"input": [-28.0, 49.0], "expected": 49.0}, {"input": [-28.0, 49.5], "expected": 49.5}, {"input": [-28.0, 50.0], "expected": 50.0}, {"input": [-28.0, 50.5], "expected": 50.5}, {"input": [-28.0, 51.0], "expected": 51.0}, {"input": [-28.0, 51.5], "expected": 51.5}, {"input": [-28.0, 52.0], "expected": 52.0}, {"input": [-28.0, 52.5], "expected": 52.5}, {"input": [-28.0, 53.0], "expected": 53.0}, {"input": [-28.0, 53.5], "expected": 53.5}, {"input": [-28.0, 54.0], "expected": 54.0}, {"input": [-28.0, 54.5], "expected": 54.5}, {"input": [-28.0, 55.0], "expected": 55.0}, {"input": [-28.0, 55.5], "expected": 55.5}, {"input": [-28.0, 56.0], "expected": 56.0}, {"input": [-28.0, 56.5], "expected": 56.5}, {"input": [-28.0, 57.0], "expected": 57.0}, {"input": [-28.0, 57.5], "expected": 57.5}, {"input": [-28.0, 58.0], "expected": 58.0}, {"input": [-28.0, 58.5], "expected": 58.5}, {"input": [-28.0, 59.0], "expected": 59.0}, {"input": [-28.0, 59.5], "expected": 59.5}, {"input": [-28.0, 60.0], "expected": 60.0}, {"input": [-28.0, 60.5], "expected": 60.5}, {"input": [-28.0, 61.0], "expected": 61.0}, {"input": [-28.0, 61.5], "expected": 61.5}, {"input": [-28.0, 62.0], "expected": 62.0}, {"input": [-28.0, 62.5], "expected": 62.5}, {"input": [-28.0, 63.0], "expected": 63.0}, {"input": [-28.0, 63.5], "expected": 63.5}, {"input": [-28.0, 64.0], "expected": 64.0}, {"input": [-28.0, 64.5], "expected": 64.5}, {"input": [-28.0, 65.0], "expected": 65.0}, {"input": [-28.0, 65.5], "expected": 65.5}, {"input": [-28.0, 66.0], "expected": 66.0}, {"input": [-28.0, 66.5], "expected": 66.5}, {"input": [-28.0, 67.0], "expected": 67.0}, {"input": [-28.0, 67.5], "expected": 67.5}, {"input": [-28.0, 68.0], "expected": 68.0}, {"input": [-28.0, 68.5], "expected": 68.5}, {"input": [-28.0, 69.0], "expected": 69.0}, {"input": [-28.0, 69.5], "expected": 69.5}, {"input": [-28.0, 70.0], "expected": 70.0}, {"input": [-28.0, 70.5], "expected": 70.5}, {"input": [-28.0, 71.0], "expected": 71.0}, {"input": [-28.0, 71.5], "expected": 71.5}, {"input": [-28.0, 72.0], "expected": 72.0}, {"input": [-28.0, 72.5], "expected": 72.5}, {"input": [-28.0, 73.0], "expected": 73.0}, {"input": [-28.0, 73.5], "expected": 73.5}, {"input": [-28.0, 74.0], "expected": 74.0}, {"input": [-28.0, 74.5], "expected": 74.5}, {"input": [-28.0, 75.0], "expected": 75.0}, {"input": [-28.0, 75.5], "expected": 75.5}, {"input": [-28.0, 76.0], "expected": 76.0}, {"input": [-28.0, 76.5], "expected": 76.5}, {"input": [-28.0, 77.0], "expected": 77.0}, {"input": [-28.0, 77.5], "expected": 77.5}, {"input": [-28.0, 78.0], "expected": 78.0}, {"input": [-28.0, 78.5], "expected": 78.5}, {"input": [-28.0, 79.0], "expected": 79.0}, {"input": [-28.0, 79.5], "expected": 79.5}, {"input": [-28.0, 80.0], "expected": 80.0}, {"input": [-28.0, 80.5], "expected": 80.5}, {"input": [-28.0, 81.0], "expected": 81.0}, {"input": [-28.0, 81.5], "expected": 81.5}, {"input": [-28.0, 82.0], "expected": 82.0}, {"input": [-28.0, 82.5], "expected": 82.5}, {"input": [-28.0, 83.0], "expected": 83.0}, {"input": [-28.0, 83.5], "expected": 83.5}, {"input": [-28.0, 84.0], "expected": 84.0}, {"input": [-28.0, 84.5], "expected": 84.5}, {"input": [-28.0, 85.0], "expected": 85.0}, {"input": [-28.0, 85.5], "expected": 85.5}, {"input": [-28.0, 86.0], "expected": 86.0}, {"input": [-28.0, 86.5], "expected": 86.5}, {"input": [-28.0, 87.0], "expected": 87.0}, {"input": [-28.0, 87.5], "expected": 87.5}, {"input": [-28.0, 88.0], "expected": 88.0}, {"input": [-28.0, 88.5], "expected": 88.5}, {"input": [-28.0, 89.0], "expected": 89.0}, {"input": [-28.0, 89.5], "expected": 89.5}, {"input": [-28.0, 90.0], "expected": 90.0}, {"input": [-28.0, 90.5], "expected": 90.5}, {"input": [-28.0, 91.0], "expected": 91.0}, {"input": [-28.0, 91.5], "expected": 91.5}, {"input": [-28.0, 92.0], "expected": 92.0}, {"input": [-28.0, 92.5], "expected": 92.5}, {"input": [-28.0, 93.0], "expected": 93.0}, {"input": [-28.0, 93.5], "expected": 93.5}, {"input": [-28.0, 94.0], "expected": 94.0}, {"input": [-28.0, 94.5], "expected": 94.5}, {"input": [-28.0, 95.0], "expected": 95.0}, {"input": [-28.0, 95.5], "expected": 95.5}, {"input": [-28.0, 96.0], "expected": 96.0}, {"input": [-28.0, 96.5], "expected": 96.5}, {"input": [-28.0, 97.0], "expected": 97.0}, {"input": [-28.0, 97.5], "expected": 97.5}, {"input": [-28.0, 98.0], "expected": 98.0}, {"input": [-28.0, 98.5], "expected": 98.5}, {"input": [-28.0, 99.0], "expected": 99.0}, {"input": [-28.0, 99.5], "expected": 99.5}, {"input": [-27.5, -100.0], "expected": -27.5}, {"input": [-27.5, -99.5], "expected": -27.5}, {"input": [-27.5, -99.0], "expected": -27.5}, {"input": [-27.5, -98.5], "expected": -27.5}, {"input": [-27.5, -98.0], "expected": -27.5}, {"input": [-27.5, -97.5], "expected": -27.5}, {"input": [-27.5, -97.0], "expected": -27.5}, {"input": [-27.5, -96.5], "expected": -27.5}, {"input": [-27.5, -96.0], "expected": -27.5}, {"input": [-27.5, -95.5], "expected": -27.5}, {"input": [-27.5, -95.0], "expected": -27.5}, {"input": [-27.5, -94.5], "expected": -27.5}, {"input": [-27.5, -94.0], "expected": -27.5}, {"input": [-27.5, -93.5], "expected": -27.5}, {"input": [-27.5, -93.0], "expected": -27.5}, {"input": [-27.5, -92.5], "expected": -27.5}, {"input": [-27.5, -92.0], "expected": -27.5}, {"input": [-27.5, -91.5], "expected": -27.5}, {"input": [-27.5, -91.0], "expected": -27.5}, {"input": [-27.5, -90.5], "expected": -27.5}, {"input": [-27.5, -90.0], "expected": -27.5}, {"input": [-27.5, -89.5], "expected": -27.5}, {"input": [-27.5, -89.0], "expected": -27.5}, {"input": [-27.5, -88.5], "expected": -27.5}, {"input": [-27.5, -88.0], "expected": -27.5}, {"input": [-27.5, -87.5], "expected": -27.5}, {"input": [-27.5, -87.0], "expected": -27.5}, {"input": [-27.5, -86.5], "expected": -27.5}, {"input": [-27.5, -86.0], "expected": -27.5}, {"input": [-27.5, -85.5], "expected": -27.5}, {"input": [-27.5, -85.0], "expected": -27.5}, {"input": [-27.5, -84.5], "expected": -27.5}, {"input": [-27.5, -84.0], "expected": -27.5}, {"input": [-27.5, -83.5], "expected": -27.5}, {"input": [-27.5, -83.0], "expected": -27.5}, {"input": [-27.5, -82.5], "expected": -27.5}, {"input": [-27.5, -82.0], "expected": -27.5}, {"input": [-27.5, -81.5], "expected": -27.5}, {"input": [-27.5, -81.0], "expected": -27.5}, {"input": [-27.5, -80.5], "expected": -27.5}, {"input": [-27.5, -80.0], "expected": -27.5}, {"input": [-27.5, -79.5], "expected": -27.5}, {"input": [-27.5, -79.0], "expected": -27.5}, {"input": [-27.5, -78.5], "expected": -27.5}, {"input": [-27.5, -78.0], "expected": -27.5}, {"input": [-27.5, -77.5], "expected": -27.5}, {"input": [-27.5, -77.0], "expected": -27.5}, {"input": [-27.5, -76.5], "expected": -27.5}, {"input": [-27.5, -76.0], "expected": -27.5}, {"input": [-27.5, -75.5], "expected": -27.5}, {"input": [-27.5, -75.0], "expected": -27.5}, {"input": [-27.5, -74.5], "expected": -27.5}, {"input": [-27.5, -74.0], "expected": -27.5}, {"input": [-27.5, -73.5], "expected": -27.5}, {"input": [-27.5, -73.0], "expected": -27.5}, {"input": [-27.5, -72.5], "expected": -27.5}, {"input": [-27.5, -72.0], "expected": -27.5}, {"input": [-27.5, -71.5], "expected": -27.5}, {"input": [-27.5, -71.0], "expected": -27.5}, {"input": [-27.5, -70.5], "expected": -27.5}, {"input": [-27.5, -70.0], "expected": -27.5}, {"input": [-27.5, -69.5], "expected": -27.5}, {"input": [-27.5, -69.0], "expected": -27.5}, {"input": [-27.5, -68.5], "expected": -27.5}, {"input": [-27.5, -68.0], "expected": -27.5}, {"input": [-27.5, -67.5], "expected": -27.5}, {"input": [-27.5, -67.0], "expected": -27.5}, {"input": [-27.5, -66.5], "expected": -27.5}, {"input": [-27.5, -66.0], "expected": -27.5}, {"input": [-27.5, -65.5], "expected": -27.5}, {"input": [-27.5, -65.0], "expected": -27.5}, {"input": [-27.5, -64.5], "expected": -27.5}, {"input": [-27.5, -64.0], "expected": -27.5}, {"input": [-27.5, -63.5], "expected": -27.5}, {"input": [-27.5, -63.0], "expected": -27.5}, {"input": [-27.5, -62.5], "expected": -27.5}, {"input": [-27.5, -62.0], "expected": -27.5}, {"input": [-27.5, -61.5], "expected": -27.5}, {"input": [-27.5, -61.0], "expected": -27.499999999999996}, {"input": [-27.5, -60.5], "expected": -27.499999999999996}, {"input": [-27.5, -60.0], "expected": -27.499999999999993}, {"input": [-27.5, -59.5], "expected": -27.499999999999986}, {"input": [-27.5, -59.0], "expected": -27.49999999999998}, {"input": [-27.5, -58.5], "expected": -27.499999999999964}, {"input": [-27.5, -58.0], "expected": -27.499999999999943}, {"input": [-27.5, -57.5], "expected": -27.499999999999908}, {"input": [-27.5, -57.0], "expected": -27.499999999999847}, {"input": [-27.5, -56.5], "expected": -27.499999999999744}, {"input": [-27.5, -56.0], "expected": -27.49999999999958}, {"input": [-27.5, -55.5], "expected": -27.499999999999307}, {"input": [-27.5, -55.0], "expected": -27.49999999999886}, {"input": [-27.5, -54.5], "expected": -27.49999999999812}, {"input": [-27.5, -54.0], "expected": -27.499999999996902}, {"input": [-27.5, -53.5], "expected": -27.49999999999489}, {"input": [-27.5, -53.0], "expected": -27.499999999991577}, {"input": [-27.5, -52.5], "expected": -27.499999999986112}, {"input": [-27.5, -52.0], "expected": -27.499999999977103}, {"input": [-27.5, -51.5], "expected": -27.49999999996225}, {"input": [-27.5, -51.0], "expected": -27.49999999993776}, {"input": [-27.5, -50.5], "expected": -27.49999999989738}, {"input": [-27.5, -50.0], "expected": -27.49999999983081}, {"input": [-27.5, -49.5], "expected": -27.49999999972105}, {"input": [-27.5, -49.0], "expected": -27.499999999540094}, {"input": [-27.5, -48.5], "expected": -27.499999999241744}, {"input": [-27.5, -48.0], "expected": -27.499999998749846}, {"input": [-27.5, -47.5], "expected": -27.499999997938847}, {"input": [-27.5, -47.0], "expected": -27.499999996601733}, {"input": [-27.5, -46.5], "expected": -27.499999994397204}, {"input": [-27.5, -46.0], "expected": -27.49999999076255}, {"input": [-27.5, -45.5], "expected": -27.49999998477002}, {"input": [-27.5, -45.0], "expected": -27.49999997489001}, {"input": [-27.5, -44.5], "expected": -27.499999958600625}, {"input": [-27.5, -44.0], "expected": -27.499999931743968}, {"input": [-27.5, -43.5], "expected": -27.49999988746483}, {"input": [-27.5, -43.0], "expected": -27.49999981446088}, {"input": [-27.5, -42.5], "expected": -27.499999694097728}, {"input": [-27.5, -42.0], "expected": -27.499999495652464}, {"input": [-27.5, -41.5], "expected": -27.499999168471625}, {"input": [-27.5, -41.0], "expected": -27.499998629041855}, {"input": [-27.5, -40.5], "expected": -27.499997739673148}, {"input": [-27.5, -40.0], "expected": -27.499996273353773}, {"input": [-27.5, -39.5], "expected": -27.499993855806522}, {"input": [-27.5, -39.0], "expected": -27.49998986995771}, {"input": [-27.5, -38.5], "expected": -27.499983298438682}, {"input": [-27.5, -38.0], "expected": -27.499972463929772}, {"input": [-27.5, -37.5], "expected": -27.499954601100782}, {"input": [-27.5, -37.0], "expected": -27.49992515097137}, {"input": [-27.5, -36.5], "expected": -27.499876597810278}, {"input": [-27.5, -36.0], "expected": -27.499796552327872}, {"input": [-27.5, -35.5], "expected": -27.499664593627106}, {"input": [-27.5, -35.0], "expected": -27.49944706852464}, {"input": [-27.5, -34.5], "expected": -27.499088533546225}, {"input": [-27.5, -34.0], "expected": -27.498497689840246}, {"input": [-27.5, -33.5], "expected": -27.497524314862268}, {"input": [-27.5, -33.0], "expected": -27.495921556729428}, {"input": [-27.5, -32.5], "expected": -27.493284651510884}, {"input": [-27.5, -32.0], "expected": -27.488952255151407}, {"input": [-27.5, -31.5], "expected": -27.48185007208219}, {"input": [-27.5, -31.0], "expected": -27.47024958172738}, {"input": [-27.5, -30.5], "expected": -27.451412648426256}, {"input": [-27.5, -30.0], "expected": -27.42111026570745}, {"input": [-27.5, -29.5], "expected": -27.373071988957026}, {"input": [-27.5, -29.0], "expected": -27.298586722017248}, {"input": [-27.5, -28.5], "expected": -27.186738312481776}, {"input": [-27.5, -28.0], "expected": -27.02592301581989}, {"input": [-27.5, -27.5], "expected": -26.806852819440056}, {"input": [-27.5, -27.0], "expected": -26.52592301581989}, {"input": [-27.5, -26.5], "expected": -26.186738312481776}, {"input": [-27.5, -26.0], "expected": -25.798586722017248}, {"input": [-27.5, -25.5], "expected": -25.373071988957026}, {"input": [-27.5, -25.0], "expected": -24.92111026570745}, {"input": [-27.5, -24.5], "expected": -24.451412648426256}, {"input": [-27.5, -24.0], "expected": -23.97024958172738}, {"input": [-27.5, -23.5], "expected": -23.48185007208219}, {"input": [-27.5, -23.0], "expected": -22.988952255151407}, {"input": [-27.5, -22.5], "expected": -22.493284651510884}, {"input": [-27.5, -22.0], "expected": -21.995921556729428}, {"input": [-27.5, -21.5], "expected": -21.497524314862268}, {"input": [-27.5, -21.0], "expected": -20.998497689840246}, {"input": [-27.5, -20.5], "expected": -20.499088533546225}, {"input": [-27.5, -20.0], "expected": -19.99944706852464}, {"input": [-27.5, -19.5], "expected": -19.499664593627106}, {"input": [-27.5, -19.0], "expected": -18.999796552327872}, {"input": [-27.5, -18.5], "expected": -18.499876597810278}, {"input": [-27.5, -18.0], "expected": -17.99992515097137}, {"input": [-27.5, -17.5], "expected": -17.499954601100782}, {"input": [-27.5, -17.0], "expected": -16.999972463929772}, {"input": [-27.5, -16.5], "expected": -16.499983298438682}, {"input": [-27.5, -16.0], "expected": -15.99998986995771}, {"input": [-27.5, -15.5], "expected": -15.499993855806522}, {"input": [-27.5, -15.0], "expected": -14.999996273353771}, {"input": [-27.5, -14.5], "expected": -14.499997739673148}, {"input": [-27.5, -14.0], "expected": -13.999998629041853}, {"input": [-27.5, -13.5], "expected": -13.499999168471627}, {"input": [-27.5, -13.0], "expected": -12.999999495652464}, {"input": [-27.5, -12.5], "expected": -12.499999694097726}, {"input": [-27.5, -12.0], "expected": -11.999999814460882}, {"input": [-27.5, -11.5], "expected": -11.499999887464831}, {"input": [-27.5, -11.0], "expected": -10.999999931743968}, {"input": [-27.5, -10.5], "expected": -10.499999958600624}, {"input": [-27.5, -10.0], "expected": -9.99999997489001}, {"input": [-27.5, -9.5], "expected": -9.499999984770021}, {"input": [-27.5, -9.0], "expected": -8.99999999076255}, {"input": [-27.5, -8.5], "expected": -8.499999994397204}, {"input": [-27.5, -8.0], "expected": -7.9999999966017326}, {"input": [-27.5, -7.5], "expected": -7.499999997938846}, {"input": [-27.5, -7.0], "expected": -6.999999998749847}, {"input": [-27.5, -6.5], "expected": -6.499999999241744}, {"input": [-27.5, -6.0], "expected": -5.999999999540094}, {"input": [-27.5, -5.5], "expected": -5.499999999721053}, {"input": [-27.5, -5.0], "expected": -4.99999999983081}, {"input": [-27.5, -4.5], "expected": -4.499999999897382}, {"input": [-27.5, -4.0], "expected": -3.9999999999377587}, {"input": [-27.5, -3.5], "expected": -3.499999999962249}, {"input": [-27.5, -3.0], "expected": -2.9999999999771028}, {"input": [-27.5, -2.5], "expected": -2.499999999986112}, {"input": [-27.5, -2.0], "expected": -1.9999999999915765}, {"input": [-27.5, -1.5], "expected": -1.499999999994891}, {"input": [-27.5, -1.0], "expected": -0.9999999999969011}, {"input": [-27.5, -0.5], "expected": -0.49999999999812045}, {"input": [-27.5, 0.0], "expected": 1.1399918530437055e-12}, {"input": [-27.5, 0.5], "expected": 0.5000000000006914}, {"input": [-27.5, 1.0], "expected": 1.0000000000004194}, {"input": [-27.5, 1.5], "expected": 1.5000000000002545}, {"input": [-27.5, 2.0], "expected": 2.000000000000154}, {"input": [-27.5, 2.5], "expected": 2.5000000000000937}, {"input": [-27.5, 3.0], "expected": 3.000000000000057}, {"input": [-27.5, 3.5], "expected": 3.5000000000000346}, {"input": [-27.5, 4.0], "expected": 4.000000000000021}, {"input": [-27.5, 4.5], "expected": 4.500000000000012}, {"input": [-27.5, 5.0], "expected": 5.000000000000008}, {"input": [-27.5, 5.5], "expected": 5.500000000000004}, {"input": [-27.5, 6.0], "expected": 6.000000000000003}, {"input": [-27.5, 6.5], "expected": 6.500000000000002}, {"input": [-27.5, 7.0], "expected": 7.000000000000001}, {"input": [-27.5, 7.5], "expected": 7.500000000000001}, {"input": [-27.5, 8.0], "expected": 8.0}, {"input": [-27.5, 8.5], "expected": 8.5}, {"input": [-27.5, 9.0], "expected": 9.0}, {"input": [-27.5, 9.5], "expected": 9.5}, {"input": [-27.5, 10.0], "expected": 10.0}, {"input": [-27.5, 10.5], "expected": 10.5}, {"input": [-27.5, 11.0], "expected": 11.0}, {"input": [-27.5, 11.5], "expected": 11.5}, {"input": [-27.5, 12.0], "expected": 12.0}, {"input": [-27.5, 12.5], "expected": 12.5}, {"input": [-27.5, 13.0], "expected": 13.0}, {"input": [-27.5, 13.5], "expected": 13.5}, {"input": [-27.5, 14.0], "expected": 14.0}, {"input": [-27.5, 14.5], "expected": 14.5}, {"input": [-27.5, 15.0], "expected": 15.0}, {"input": [-27.5, 15.5], "expected": 15.5}, {"input": [-27.5, 16.0], "expected": 16.0}, {"input": [-27.5, 16.5], "expected": 16.5}, {"input": [-27.5, 17.0], "expected": 17.0}, {"input": [-27.5, 17.5], "expected": 17.5}, {"input": [-27.5, 18.0], "expected": 18.0}, {"input": [-27.5, 18.5], "expected": 18.5}, {"input": [-27.5, 19.0], "expected": 19.0}, {"input": [-27.5, 19.5], "expected": 19.5}, {"input": [-27.5, 20.0], "expected": 20.0}, {"input": [-27.5, 20.5], "expected": 20.5}, {"input": [-27.5, 21.0], "expected": 21.0}, {"input": [-27.5, 21.5], "expected": 21.5}, {"input": [-27.5, 22.0], "expected": 22.0}, {"input": [-27.5, 22.5], "expected": 22.5}, {"input": [-27.5, 23.0], "expected": 23.0}, {"input": [-27.5, 23.5], "expected": 23.5}, {"input": [-27.5, 24.0], "expected": 24.0}, {"input": [-27.5, 24.5], "expected": 24.5}, {"input": [-27.5, 25.0], "expected": 25.0}, {"input": [-27.5, 25.5], "expected": 25.5}, {"input": [-27.5, 26.0], "expected": 26.0}, {"input": [-27.5, 26.5], "expected": 26.5}, {"input": [-27.5, 27.0], "expected": 27.0}, {"input": [-27.5, 27.5], "expected": 27.5}, {"input": [-27.5, 28.0], "expected": 28.0}, {"input": [-27.5, 28.5], "expected": 28.5}, {"input": [-27.5, 29.0], "expected": 29.0}, {"input": [-27.5, 29.5], "expected": 29.5}, {"input": [-27.5, 30.0], "expected": 30.0}, {"input": [-27.5, 30.5], "expected": 30.5}, {"input": [-27.5, 31.0], "expected": 31.0}, {"input": [-27.5, 31.5], "expected": 31.5}, {"input": [-27.5, 32.0], "expected": 32.0}, {"input": [-27.5, 32.5], "expected": 32.5}, {"input": [-27.5, 33.0], "expected": 33.0}, {"input": [-27.5, 33.5], "expected": 33.5}, {"input": [-27.5, 34.0], "expected": 34.0}, {"input": [-27.5, 34.5], "expected": 34.5}, {"input": [-27.5, 35.0], "expected": 35.0}, {"input": [-27.5, 35.5], "expected": 35.5}, {"input": [-27.5, 36.0], "expected": 36.0}, {"input": [-27.5, 36.5], "expected": 36.5}, {"input": [-27.5, 37.0], "expected": 37.0}, {"input": [-27.5, 37.5], "expected": 37.5}, {"input": [-27.5, 38.0], "expected": 38.0}, {"input": [-27.5, 38.5], "expected": 38.5}, {"input": [-27.5, 39.0], "expected": 39.0}, {"input": [-27.5, 39.5], "expected": 39.5}, {"input": [-27.5, 40.0], "expected": 40.0}, {"input": [-27.5, 40.5], "expected": 40.5}, {"input": [-27.5, 41.0], "expected": 41.0}, {"input": [-27.5, 41.5], "expected": 41.5}, {"input": [-27.5, 42.0], "expected": 42.0}, {"input": [-27.5, 42.5], "expected": 42.5}, {"input": [-27.5, 43.0], "expected": 43.0}, {"input": [-27.5, 43.5], "expected": 43.5}, {"input": [-27.5, 44.0], "expected": 44.0}, {"input": [-27.5, 44.5], "expected": 44.5}, {"input": [-27.5, 45.0], "expected": 45.0}, {"input": [-27.5, 45.5], "expected": 45.5}, {"input": [-27.5, 46.0], "expected": 46.0}, {"input": [-27.5, 46.5], "expected": 46.5}, {"input": [-27.5, 47.0], "expected": 47.0}, {"input": [-27.5, 47.5], "expected": 47.5}, {"input": [-27.5, 48.0], "expected": 48.0}, {"input": [-27.5, 48.5], "expected": 48.5}, {"input": [-27.5, 49.0], "expected": 49.0}, {"input": [-27.5, 49.5], "expected": 49.5}, {"input": [-27.5, 50.0], "expected": 50.0}, {"input": [-27.5, 50.5], "expected": 50.5}, {"input": [-27.5, 51.0], "expected": 51.0}, {"input": [-27.5, 51.5], "expected": 51.5}, {"input": [-27.5, 52.0], "expected": 52.0}, {"input": [-27.5, 52.5], "expected": 52.5}, {"input": [-27.5, 53.0], "expected": 53.0}, {"input": [-27.5, 53.5], "expected": 53.5}, {"input": [-27.5, 54.0], "expected": 54.0}, {"input": [-27.5, 54.5], "expected": 54.5}, {"input": [-27.5, 55.0], "expected": 55.0}, {"input": [-27.5, 55.5], "expected": 55.5}, {"input": [-27.5, 56.0], "expected": 56.0}, {"input": [-27.5, 56.5], "expected": 56.5}, {"input": [-27.5, 57.0], "expected": 57.0}, {"input": [-27.5, 57.5], "expected": 57.5}, {"input": [-27.5, 58.0], "expected": 58.0}, {"input": [-27.5, 58.5], "expected": 58.5}, {"input": [-27.5, 59.0], "expected": 59.0}, {"input": [-27.5, 59.5], "expected": 59.5}, {"input": [-27.5, 60.0], "expected": 60.0}, {"input": [-27.5, 60.5], "expected": 60.5}, {"input": [-27.5, 61.0], "expected": 61.0}, {"input": [-27.5, 61.5], "expected": 61.5}, {"input": [-27.5, 62.0], "expected": 62.0}, {"input": [-27.5, 62.5], "expected": 62.5}, {"input": [-27.5, 63.0], "expected": 63.0}, {"input": [-27.5, 63.5], "expected": 63.5}, {"input": [-27.5, 64.0], "expected": 64.0}, {"input": [-27.5, 64.5], "expected": 64.5}, {"input": [-27.5, 65.0], "expected": 65.0}, {"input": [-27.5, 65.5], "expected": 65.5}, {"input": [-27.5, 66.0], "expected": 66.0}, {"input": [-27.5, 66.5], "expected": 66.5}, {"input": [-27.5, 67.0], "expected": 67.0}, {"input": [-27.5, 67.5], "expected": 67.5}, {"input": [-27.5, 68.0], "expected": 68.0}, {"input": [-27.5, 68.5], "expected": 68.5}, {"input": [-27.5, 69.0], "expected": 69.0}, {"input": [-27.5, 69.5], "expected": 69.5}, {"input": [-27.5, 70.0], "expected": 70.0}, {"input": [-27.5, 70.5], "expected": 70.5}, {"input": [-27.5, 71.0], "expected": 71.0}, {"input": [-27.5, 71.5], "expected": 71.5}, {"input": [-27.5, 72.0], "expected": 72.0}, {"input": [-27.5, 72.5], "expected": 72.5}, {"input": [-27.5, 73.0], "expected": 73.0}, {"input": [-27.5, 73.5], "expected": 73.5}, {"input": [-27.5, 74.0], "expected": 74.0}, {"input": [-27.5, 74.5], "expected": 74.5}, {"input": [-27.5, 75.0], "expected": 75.0}, {"input": [-27.5, 75.5], "expected": 75.5}, {"input": [-27.5, 76.0], "expected": 76.0}, {"input": [-27.5, 76.5], "expected": 76.5}, {"input": [-27.5, 77.0], "expected": 77.0}, {"input": [-27.5, 77.5], "expected": 77.5}, {"input": [-27.5, 78.0], "expected": 78.0}, {"input": [-27.5, 78.5], "expected": 78.5}, {"input": [-27.5, 79.0], "expected": 79.0}, {"input": [-27.5, 79.5], "expected": 79.5}, {"input": [-27.5, 80.0], "expected": 80.0}, {"input": [-27.5, 80.5], "expected": 80.5}, {"input": [-27.5, 81.0], "expected": 81.0}, {"input": [-27.5, 81.5], "expected": 81.5}, {"input": [-27.5, 82.0], "expected": 82.0}, {"input": [-27.5, 82.5], "expected": 82.5}, {"input": [-27.5, 83.0], "expected": 83.0}, {"input": [-27.5, 83.5], "expected": 83.5}, {"input": [-27.5, 84.0], "expected": 84.0}, {"input": [-27.5, 84.5], "expected": 84.5}, {"input": [-27.5, 85.0], "expected": 85.0}, {"input": [-27.5, 85.5], "expected": 85.5}, {"input": [-27.5, 86.0], "expected": 86.0}, {"input": [-27.5, 86.5], "expected": 86.5}, {"input": [-27.5, 87.0], "expected": 87.0}, {"input": [-27.5, 87.5], "expected": 87.5}, {"input": [-27.5, 88.0], "expected": 88.0}, {"input": [-27.5, 88.5], "expected": 88.5}, {"input": [-27.5, 89.0], "expected": 89.0}, {"input": [-27.5, 89.5], "expected": 89.5}, {"input": [-27.5, 90.0], "expected": 90.0}, {"input": [-27.5, 90.5], "expected": 90.5}, {"input": [-27.5, 91.0], "expected": 91.0}, {"input": [-27.5, 91.5], "expected": 91.5}, {"input": [-27.5, 92.0], "expected": 92.0}, {"input": [-27.5, 92.5], "expected": 92.5}, {"input": [-27.5, 93.0], "expected": 93.0}, {"input": [-27.5, 93.5], "expected": 93.5}, {"input": [-27.5, 94.0], "expected": 94.0}, {"input": [-27.5, 94.5], "expected": 94.5}, {"input": [-27.5, 95.0], "expected": 95.0}, {"input": [-27.5, 95.5], "expected": 95.5}, {"input": [-27.5, 96.0], "expected": 96.0}, {"input": [-27.5, 96.5], "expected": 96.5}, {"input": [-27.5, 97.0], "expected": 97.0}, {"input": [-27.5, 97.5], "expected": 97.5}, {"input": [-27.5, 98.0], "expected": 98.0}, {"input": [-27.5, 98.5], "expected": 98.5}, {"input": [-27.5, 99.0], "expected": 99.0}, {"input": [-27.5, 99.5], "expected": 99.5}, {"input": [-27.0, -100.0], "expected": -27.0}, {"input": [-27.0, -99.5], "expected": -27.0}, {"input": [-27.0, -99.0], "expected": -27.0}, {"input": [-27.0, -98.5], "expected": -27.0}, {"input": [-27.0, -98.0], "expected": -27.0}, {"input": [-27.0, -97.5], "expected": -27.0}, {"input": [-27.0, -97.0], "expected": -27.0}, {"input": [-27.0, -96.5], "expected": -27.0}, {"input": [-27.0, -96.0], "expected": -27.0}, {"input": [-27.0, -95.5], "expected": -27.0}, {"input": [-27.0, -95.0], "expected": -27.0}, {"input": [-27.0, -94.5], "expected": -27.0}, {"input": [-27.0, -94.0], "expected": -27.0}, {"input": [-27.0, -93.5], "expected": -27.0}, {"input": [-27.0, -93.0], "expected": -27.0}, {"input": [-27.0, -92.5], "expected": -27.0}, {"input": [-27.0, -92.0], "expected": -27.0}, {"input": [-27.0, -91.5], "expected": -27.0}, {"input": [-27.0, -91.0], "expected": -27.0}, {"input": [-27.0, -90.5], "expected": -27.0}, {"input": [-27.0, -90.0], "expected": -27.0}, {"input": [-27.0, -89.5], "expected": -27.0}, {"input": [-27.0, -89.0], "expected": -27.0}, {"input": [-27.0, -88.5], "expected": -27.0}, {"input": [-27.0, -88.0], "expected": -27.0}, {"input": [-27.0, -87.5], "expected": -27.0}, {"input": [-27.0, -87.0], "expected": -27.0}, {"input": [-27.0, -86.5], "expected": -27.0}, {"input": [-27.0, -86.0], "expected": -27.0}, {"input": [-27.0, -85.5], "expected": -27.0}, {"input": [-27.0, -85.0], "expected": -27.0}, {"input": [-27.0, -84.5], "expected": -27.0}, {"input": [-27.0, -84.0], "expected": -27.0}, {"input": [-27.0, -83.5], "expected": -27.0}, {"input": [-27.0, -83.0], "expected": -27.0}, {"input": [-27.0, -82.5], "expected": -27.0}, {"input": [-27.0, -82.0], "expected": -27.0}, {"input": [-27.0, -81.5], "expected": -27.0}, {"input": [-27.0, -81.0], "expected": -27.0}, {"input": [-27.0, -80.5], "expected": -27.0}, {"input": [-27.0, -80.0], "expected": -27.0}, {"input": [-27.0, -79.5], "expected": -27.0}, {"input": [-27.0, -79.0], "expected": -27.0}, {"input": [-27.0, -78.5], "expected": -27.0}, {"input": [-27.0, -78.0], "expected": -27.0}, {"input": [-27.0, -77.5], "expected": -27.0}, {"input": [-27.0, -77.0], "expected": -27.0}, {"input": [-27.0, -76.5], "expected": -27.0}, {"input": [-27.0, -76.0], "expected": -27.0}, {"input": [-27.0, -75.5], "expected": -27.0}, {"input": [-27.0, -75.0], "expected": -27.0}, {"input": [-27.0, -74.5], "expected": -27.0}, {"input": [-27.0, -74.0], "expected": -27.0}, {"input": [-27.0, -73.5], "expected": -27.0}, {"input": [-27.0, -73.0], "expected": -27.0}, {"input": [-27.0, -72.5], "expected": -27.0}, {"input": [-27.0, -72.0], "expected": -27.0}, {"input": [-27.0, -71.5], "expected": -27.0}, {"input": [-27.0, -71.0], "expected": -27.0}, {"input": [-27.0, -70.5], "expected": -27.0}, {"input": [-27.0, -70.0], "expected": -27.0}, {"input": [-27.0, -69.5], "expected": -27.0}, {"input": [-27.0, -69.0], "expected": -27.0}, {"input": [-27.0, -68.5], "expected": -27.0}, {"input": [-27.0, -68.0], "expected": -27.0}, {"input": [-27.0, -67.5], "expected": -27.0}, {"input": [-27.0, -67.0], "expected": -27.0}, {"input": [-27.0, -66.5], "expected": -27.0}, {"input": [-27.0, -66.0], "expected": -27.0}, {"input": [-27.0, -65.5], "expected": -27.0}, {"input": [-27.0, -65.0], "expected": -27.0}, {"input": [-27.0, -64.5], "expected": -27.0}, {"input": [-27.0, -64.0], "expected": -27.0}, {"input": [-27.0, -63.5], "expected": -27.0}, {"input": [-27.0, -63.0], "expected": -27.0}, {"input": [-27.0, -62.5], "expected": -27.0}, {"input": [-27.0, -62.0], "expected": -27.0}, {"input": [-27.0, -61.5], "expected": -27.0}, {"input": [-27.0, -61.0], "expected": -27.0}, {"input": [-27.0, -60.5], "expected": -26.999999999999996}, {"input": [-27.0, -60.0], "expected": -26.999999999999996}, {"input": [-27.0, -59.5], "expected": -26.999999999999993}, {"input": [-27.0, -59.0], "expected": -26.999999999999986}, {"input": [-27.0, -58.5], "expected": -26.99999999999998}, {"input": [-27.0, -58.0], "expected": -26.999999999999964}, {"input": [-27.0, -57.5], "expected": -26.999999999999943}, {"input": [-27.0, -57.0], "expected": -26.999999999999908}, {"input": [-27.0, -56.5], "expected": -26.999999999999847}, {"input": [-27.0, -56.0], "expected": -26.999999999999744}, {"input": [-27.0, -55.5], "expected": -26.99999999999958}, {"input": [-27.0, -55.0], "expected": -26.999999999999307}, {"input": [-27.0, -54.5], "expected": -26.99999999999886}, {"input": [-27.0, -54.0], "expected": -26.99999999999812}, {"input": [-27.0, -53.5], "expected": -26.999999999996902}, {"input": [-27.0, -53.0], "expected": -26.99999999999489}, {"input": [-27.0, -52.5], "expected": -26.999999999991577}, {"input": [-27.0, -52.0], "expected": -26.999999999986112}, {"input": [-27.0, -51.5], "expected": -26.999999999977103}, {"input": [-27.0, -51.0], "expected": -26.99999999996225}, {"input": [-27.0, -50.5], "expected": -26.99999999993776}, {"input": [-27.0, -50.0], "expected": -26.99999999989738}, {"input": [-27.0, -49.5], "expected": -26.99999999983081}, {"input": [-27.0, -49.0], "expected": -26.99999999972105}, {"input": [-27.0, -48.5], "expected": -26.999999999540094}, {"input": [-27.0, -48.0], "expected": -26.999999999241744}, {"input": [-27.0, -47.5], "expected": -26.999999998749846}, {"input": [-27.0, -47.0], "expected": -26.999999997938847}, {"input": [-27.0, -46.5], "expected": -26.999999996601733}, {"input": [-27.0, -46.0], "expected": -26.999999994397204}, {"input": [-27.0, -45.5], "expected": -26.99999999076255}, {"input": [-27.0, -45.0], "expected": -26.99999998477002}, {"input": [-27.0, -44.5], "expected": -26.99999997489001}, {"input": [-27.0, -44.0], "expected": -26.999999958600625}, {"input": [-27.0, -43.5], "expected": -26.999999931743968}, {"input": [-27.0, -43.0], "expected": -26.99999988746483}, {"input": [-27.0, -42.5], "expected": -26.99999981446088}, {"input": [-27.0, -42.0], "expected": -26.999999694097728}, {"input": [-27.0, -41.5], "expected": -26.999999495652464}, {"input": [-27.0, -41.0], "expected": -26.999999168471625}, {"input": [-27.0, -40.5], "expected": -26.999998629041855}, {"input": [-27.0, -40.0], "expected": -26.999997739673148}, {"input": [-27.0, -39.5], "expected": -26.999996273353773}, {"input": [-27.0, -39.0], "expected": -26.999993855806522}, {"input": [-27.0, -38.5], "expected": -26.99998986995771}, {"input": [-27.0, -38.0], "expected": -26.999983298438682}, {"input": [-27.0, -37.5], "expected": -26.999972463929772}, {"input": [-27.0, -37.0], "expected": -26.999954601100782}, {"input": [-27.0, -36.5], "expected": -26.99992515097137}, {"input": [-27.0, -36.0], "expected": -26.999876597810278}, {"input": [-27.0, -35.5], "expected": -26.999796552327872}, {"input": [-27.0, -35.0], "expected": -26.999664593627106}, {"input": [-27.0, -34.5], "expected": -26.99944706852464}, {"input": [-27.0, -34.0], "expected": -26.999088533546225}, {"input": [-27.0, -33.5], "expected": -26.998497689840246}, {"input": [-27.0, -33.0], "expected": -26.997524314862268}, {"input": [-27.0, -32.5], "expected": -26.995921556729428}, {"input": [-27.0, -32.0], "expected": -26.993284651510884}, {"input": [-27.0, -31.5], "expected": -26.988952255151407}, {"input": [-27.0, -31.0], "expected": -26.98185007208219}, {"input": [-27.0, -30.5], "expected": -26.97024958172738}, {"input": [-27.0, -30.0], "expected": -26.951412648426256}, {"input": [-27.0, -29.5], "expected": -26.92111026570745}, {"input": [-27.0, -29.0], "expected": -26.873071988957026}, {"input": [-27.0, -28.5], "expected": -26.798586722017248}, {"input": [-27.0, -28.0], "expected": -26.686738312481776}, {"input": [-27.0, -27.5], "expected": -26.52592301581989}, {"input": [-27.0, -27.0], "expected": -26.306852819440056}, {"input": [-27.0, -26.5], "expected": -26.02592301581989}, {"input": [-27.0, -26.0], "expected": -25.686738312481776}, {"input": [-27.0, -25.5], "expected": -25.298586722017248}, {"input": [-27.0, -25.0], "expected": -24.873071988957026}, {"input": [-27.0, -24.5], "expected": -24.42111026570745}, {"input": [-27.0, -24.0], "expected": -23.951412648426256}, {"input": [-27.0, -23.5], "expected": -23.47024958172738}, {"input": [-27.0, -23.0], "expected": -22.98185007208219}, {"input": [-27.0, -22.5], "expected": -22.488952255151407}, {"input": [-27.0, -22.0], "expected": -21.993284651510884}, {"input": [-27.0, -21.5], "expected": -21.495921556729428}, {"input": [-27.0, -21.0], "expected": -20.997524314862268}, {"input": [-27.0, -20.5], "expected": -20.498497689840246}, {"input": [-27.0, -20.0], "expected": -19.999088533546225}, {"input": [-27.0, -19.5], "expected": -19.49944706852464}, {"input": [-27.0, -19.0], "expected": -18.999664593627106}, {"input": [-27.0, -18.5], "expected": -18.499796552327872}, {"input": [-27.0, -18.0], "expected": -17.999876597810278}, {"input": [-27.0, -17.5], "expected": -17.49992515097137}, {"input": [-27.0, -17.0], "expected": -16.999954601100782}, {"input": [-27.0, -16.5], "expected": -16.499972463929772}, {"input": [-27.0, -16.0], "expected": -15.999983298438682}, {"input": [-27.0, -15.5], "expected": -15.49998986995771}, {"input": [-27.0, -15.0], "expected": -14.999993855806522}, {"input": [-27.0, -14.5], "expected": -14.499996273353771}, {"input": [-27.0, -14.0], "expected": -13.999997739673148}, {"input": [-27.0, -13.5], "expected": -13.499998629041853}, {"input": [-27.0, -13.0], "expected": -12.999999168471627}, {"input": [-27.0, -12.5], "expected": -12.499999495652464}, {"input": [-27.0, -12.0], "expected": -11.999999694097726}, {"input": [-27.0, -11.5], "expected": -11.499999814460882}, {"input": [-27.0, -11.0], "expected": -10.999999887464831}, {"input": [-27.0, -10.5], "expected": -10.499999931743968}, {"input": [-27.0, -10.0], "expected": -9.999999958600624}, {"input": [-27.0, -9.5], "expected": -9.49999997489001}, {"input": [-27.0, -9.0], "expected": -8.999999984770021}, {"input": [-27.0, -8.5], "expected": -8.49999999076255}, {"input": [-27.0, -8.0], "expected": -7.9999999943972036}, {"input": [-27.0, -7.5], "expected": -7.4999999966017326}, {"input": [-27.0, -7.0], "expected": -6.999999997938846}, {"input": [-27.0, -6.5], "expected": -6.499999998749847}, {"input": [-27.0, -6.0], "expected": -5.999999999241744}, {"input": [-27.0, -5.5], "expected": -5.499999999540094}, {"input": [-27.0, -5.0], "expected": -4.999999999721053}, {"input": [-27.0, -4.5], "expected": -4.49999999983081}, {"input": [-27.0, -4.0], "expected": -3.999999999897381}, {"input": [-27.0, -3.5], "expected": -3.4999999999377587}, {"input": [-27.0, -3.0], "expected": -2.999999999962249}, {"input": [-27.0, -2.5], "expected": -2.4999999999771028}, {"input": [-27.0, -2.0], "expected": -1.999999999986112}, {"input": [-27.0, -1.5], "expected": -1.4999999999915765}, {"input": [-27.0, -1.0], "expected": -0.9999999999948909}, {"input": [-27.0, -0.5], "expected": -0.4999999999969012}, {"input": [-27.0, 0.0], "expected": 1.879528816537317e-12}, {"input": [-27.0, 0.5], "expected": 0.50000000000114}, {"input": [-27.0, 1.0], "expected": 1.0000000000006914}, {"input": [-27.0, 1.5], "expected": 1.5000000000004194}, {"input": [-27.0, 2.0], "expected": 2.0000000000002545}, {"input": [-27.0, 2.5], "expected": 2.500000000000154}, {"input": [-27.0, 3.0], "expected": 3.0000000000000937}, {"input": [-27.0, 3.5], "expected": 3.500000000000057}, {"input": [-27.0, 4.0], "expected": 4.000000000000035}, {"input": [-27.0, 4.5], "expected": 4.500000000000021}, {"input": [-27.0, 5.0], "expected": 5.000000000000012}, {"input": [-27.0, 5.5], "expected": 5.500000000000008}, {"input": [-27.0, 6.0], "expected": 6.000000000000004}, {"input": [-27.0, 6.5], "expected": 6.500000000000003}, {"input": [-27.0, 7.0], "expected": 7.000000000000002}, {"input": [-27.0, 7.5], "expected": 7.500000000000001}, {"input": [-27.0, 8.0], "expected": 8.0}, {"input": [-27.0, 8.5], "expected": 8.5}, {"input": [-27.0, 9.0], "expected": 9.0}, {"input": [-27.0, 9.5], "expected": 9.5}, {"input": [-27.0, 10.0], "expected": 10.0}, {"input": [-27.0, 10.5], "expected": 10.5}, {"input": [-27.0, 11.0], "expected": 11.0}, {"input": [-27.0, 11.5], "expected": 11.5}, {"input": [-27.0, 12.0], "expected": 12.0}, {"input": [-27.0, 12.5], "expected": 12.5}, {"input": [-27.0, 13.0], "expected": 13.0}, {"input": [-27.0, 13.5], "expected": 13.5}, {"input": [-27.0, 14.0], "expected": 14.0}, {"input": [-27.0, 14.5], "expected": 14.5}, {"input": [-27.0, 15.0], "expected": 15.0}, {"input": [-27.0, 15.5], "expected": 15.5}, {"input": [-27.0, 16.0], "expected": 16.0}, {"input": [-27.0, 16.5], "expected": 16.5}, {"input": [-27.0, 17.0], "expected": 17.0}, {"input": [-27.0, 17.5], "expected": 17.5}, {"input": [-27.0, 18.0], "expected": 18.0}, {"input": [-27.0, 18.5], "expected": 18.5}, {"input": [-27.0, 19.0], "expected": 19.0}, {"input": [-27.0, 19.5], "expected": 19.5}, {"input": [-27.0, 20.0], "expected": 20.0}, {"input": [-27.0, 20.5], "expected": 20.5}, {"input": [-27.0, 21.0], "expected": 21.0}, {"input": [-27.0, 21.5], "expected": 21.5}, {"input": [-27.0, 22.0], "expected": 22.0}, {"input": [-27.0, 22.5], "expected": 22.5}, {"input": [-27.0, 23.0], "expected": 23.0}, {"input": [-27.0, 23.5], "expected": 23.5}, {"input": [-27.0, 24.0], "expected": 24.0}, {"input": [-27.0, 24.5], "expected": 24.5}, {"input": [-27.0, 25.0], "expected": 25.0}, {"input": [-27.0, 25.5], "expected": 25.5}, {"input": [-27.0, 26.0], "expected": 26.0}, {"input": [-27.0, 26.5], "expected": 26.5}, {"input": [-27.0, 27.0], "expected": 27.0}, {"input": [-27.0, 27.5], "expected": 27.5}, {"input": [-27.0, 28.0], "expected": 28.0}, {"input": [-27.0, 28.5], "expected": 28.5}, {"input": [-27.0, 29.0], "expected": 29.0}, {"input": [-27.0, 29.5], "expected": 29.5}, {"input": [-27.0, 30.0], "expected": 30.0}, {"input": [-27.0, 30.5], "expected": 30.5}, {"input": [-27.0, 31.0], "expected": 31.0}, {"input": [-27.0, 31.5], "expected": 31.5}, {"input": [-27.0, 32.0], "expected": 32.0}, {"input": [-27.0, 32.5], "expected": 32.5}, {"input": [-27.0, 33.0], "expected": 33.0}, {"input": [-27.0, 33.5], "expected": 33.5}, {"input": [-27.0, 34.0], "expected": 34.0}, {"input": [-27.0, 34.5], "expected": 34.5}, {"input": [-27.0, 35.0], "expected": 35.0}, {"input": [-27.0, 35.5], "expected": 35.5}, {"input": [-27.0, 36.0], "expected": 36.0}, {"input": [-27.0, 36.5], "expected": 36.5}, {"input": [-27.0, 37.0], "expected": 37.0}, {"input": [-27.0, 37.5], "expected": 37.5}, {"input": [-27.0, 38.0], "expected": 38.0}, {"input": [-27.0, 38.5], "expected": 38.5}, {"input": [-27.0, 39.0], "expected": 39.0}, {"input": [-27.0, 39.5], "expected": 39.5}, {"input": [-27.0, 40.0], "expected": 40.0}, {"input": [-27.0, 40.5], "expected": 40.5}, {"input": [-27.0, 41.0], "expected": 41.0}, {"input": [-27.0, 41.5], "expected": 41.5}, {"input": [-27.0, 42.0], "expected": 42.0}, {"input": [-27.0, 42.5], "expected": 42.5}, {"input": [-27.0, 43.0], "expected": 43.0}, {"input": [-27.0, 43.5], "expected": 43.5}, {"input": [-27.0, 44.0], "expected": 44.0}, {"input": [-27.0, 44.5], "expected": 44.5}, {"input": [-27.0, 45.0], "expected": 45.0}, {"input": [-27.0, 45.5], "expected": 45.5}, {"input": [-27.0, 46.0], "expected": 46.0}, {"input": [-27.0, 46.5], "expected": 46.5}, {"input": [-27.0, 47.0], "expected": 47.0}, {"input": [-27.0, 47.5], "expected": 47.5}, {"input": [-27.0, 48.0], "expected": 48.0}, {"input": [-27.0, 48.5], "expected": 48.5}, {"input": [-27.0, 49.0], "expected": 49.0}, {"input": [-27.0, 49.5], "expected": 49.5}, {"input": [-27.0, 50.0], "expected": 50.0}, {"input": [-27.0, 50.5], "expected": 50.5}, {"input": [-27.0, 51.0], "expected": 51.0}, {"input": [-27.0, 51.5], "expected": 51.5}, {"input": [-27.0, 52.0], "expected": 52.0}, {"input": [-27.0, 52.5], "expected": 52.5}, {"input": [-27.0, 53.0], "expected": 53.0}, {"input": [-27.0, 53.5], "expected": 53.5}, {"input": [-27.0, 54.0], "expected": 54.0}, {"input": [-27.0, 54.5], "expected": 54.5}, {"input": [-27.0, 55.0], "expected": 55.0}, {"input": [-27.0, 55.5], "expected": 55.5}, {"input": [-27.0, 56.0], "expected": 56.0}, {"input": [-27.0, 56.5], "expected": 56.5}, {"input": [-27.0, 57.0], "expected": 57.0}, {"input": [-27.0, 57.5], "expected": 57.5}, {"input": [-27.0, 58.0], "expected": 58.0}, {"input": [-27.0, 58.5], "expected": 58.5}, {"input": [-27.0, 59.0], "expected": 59.0}, {"input": [-27.0, 59.5], "expected": 59.5}, {"input": [-27.0, 60.0], "expected": 60.0}, {"input": [-27.0, 60.5], "expected": 60.5}, {"input": [-27.0, 61.0], "expected": 61.0}, {"input": [-27.0, 61.5], "expected": 61.5}, {"input": [-27.0, 62.0], "expected": 62.0}, {"input": [-27.0, 62.5], "expected": 62.5}, {"input": [-27.0, 63.0], "expected": 63.0}, {"input": [-27.0, 63.5], "expected": 63.5}, {"input": [-27.0, 64.0], "expected": 64.0}, {"input": [-27.0, 64.5], "expected": 64.5}, {"input": [-27.0, 65.0], "expected": 65.0}, {"input": [-27.0, 65.5], "expected": 65.5}, {"input": [-27.0, 66.0], "expected": 66.0}, {"input": [-27.0, 66.5], "expected": 66.5}, {"input": [-27.0, 67.0], "expected": 67.0}, {"input": [-27.0, 67.5], "expected": 67.5}, {"input": [-27.0, 68.0], "expected": 68.0}, {"input": [-27.0, 68.5], "expected": 68.5}, {"input": [-27.0, 69.0], "expected": 69.0}, {"input": [-27.0, 69.5], "expected": 69.5}, {"input": [-27.0, 70.0], "expected": 70.0}, {"input": [-27.0, 70.5], "expected": 70.5}, {"input": [-27.0, 71.0], "expected": 71.0}, {"input": [-27.0, 71.5], "expected": 71.5}, {"input": [-27.0, 72.0], "expected": 72.0}, {"input": [-27.0, 72.5], "expected": 72.5}, {"input": [-27.0, 73.0], "expected": 73.0}, {"input": [-27.0, 73.5], "expected": 73.5}, {"input": [-27.0, 74.0], "expected": 74.0}, {"input": [-27.0, 74.5], "expected": 74.5}, {"input": [-27.0, 75.0], "expected": 75.0}, {"input": [-27.0, 75.5], "expected": 75.5}, {"input": [-27.0, 76.0], "expected": 76.0}, {"input": [-27.0, 76.5], "expected": 76.5}, {"input": [-27.0, 77.0], "expected": 77.0}, {"input": [-27.0, 77.5], "expected": 77.5}, {"input": [-27.0, 78.0], "expected": 78.0}, {"input": [-27.0, 78.5], "expected": 78.5}, {"input": [-27.0, 79.0], "expected": 79.0}, {"input": [-27.0, 79.5], "expected": 79.5}, {"input": [-27.0, 80.0], "expected": 80.0}, {"input": [-27.0, 80.5], "expected": 80.5}, {"input": [-27.0, 81.0], "expected": 81.0}, {"input": [-27.0, 81.5], "expected": 81.5}, {"input": [-27.0, 82.0], "expected": 82.0}, {"input": [-27.0, 82.5], "expected": 82.5}, {"input": [-27.0, 83.0], "expected": 83.0}, {"input": [-27.0, 83.5], "expected": 83.5}, {"input": [-27.0, 84.0], "expected": 84.0}, {"input": [-27.0, 84.5], "expected": 84.5}, {"input": [-27.0, 85.0], "expected": 85.0}, {"input": [-27.0, 85.5], "expected": 85.5}, {"input": [-27.0, 86.0], "expected": 86.0}, {"input": [-27.0, 86.5], "expected": 86.5}, {"input": [-27.0, 87.0], "expected": 87.0}, {"input": [-27.0, 87.5], "expected": 87.5}, {"input": [-27.0, 88.0], "expected": 88.0}, {"input": [-27.0, 88.5], "expected": 88.5}, {"input": [-27.0, 89.0], "expected": 89.0}, {"input": [-27.0, 89.5], "expected": 89.5}, {"input": [-27.0, 90.0], "expected": 90.0}, {"input": [-27.0, 90.5], "expected": 90.5}, {"input": [-27.0, 91.0], "expected": 91.0}, {"input": [-27.0, 91.5], "expected": 91.5}, {"input": [-27.0, 92.0], "expected": 92.0}, {"input": [-27.0, 92.5], "expected": 92.5}, {"input": [-27.0, 93.0], "expected": 93.0}, {"input": [-27.0, 93.5], "expected": 93.5}, {"input": [-27.0, 94.0], "expected": 94.0}, {"input": [-27.0, 94.5], "expected": 94.5}, {"input": [-27.0, 95.0], "expected": 95.0}, {"input": [-27.0, 95.5], "expected": 95.5}, {"input": [-27.0, 96.0], "expected": 96.0}, {"input": [-27.0, 96.5], "expected": 96.5}, {"input": [-27.0, 97.0], "expected": 97.0}, {"input": [-27.0, 97.5], "expected": 97.5}, {"input": [-27.0, 98.0], "expected": 98.0}, {"input": [-27.0, 98.5], "expected": 98.5}, {"input": [-27.0, 99.0], "expected": 99.0}, {"input": [-27.0, 99.5], "expected": 99.5}, {"input": [-26.5, -100.0], "expected": -26.5}, {"input": [-26.5, -99.5], "expected": -26.5}, {"input": [-26.5, -99.0], "expected": -26.5}, {"input": [-26.5, -98.5], "expected": -26.5}, {"input": [-26.5, -98.0], "expected": -26.5}, {"input": [-26.5, -97.5], "expected": -26.5}, {"input": [-26.5, -97.0], "expected": -26.5}, {"input": [-26.5, -96.5], "expected": -26.5}, {"input": [-26.5, -96.0], "expected": -26.5}, {"input": [-26.5, -95.5], "expected": -26.5}, {"input": [-26.5, -95.0], "expected": -26.5}, {"input": [-26.5, -94.5], "expected": -26.5}, {"input": [-26.5, -94.0], "expected": -26.5}, {"input": [-26.5, -93.5], "expected": -26.5}, {"input": [-26.5, -93.0], "expected": -26.5}, {"input": [-26.5, -92.5], "expected": -26.5}, {"input": [-26.5, -92.0], "expected": -26.5}, {"input": [-26.5, -91.5], "expected": -26.5}, {"input": [-26.5, -91.0], "expected": -26.5}, {"input": [-26.5, -90.5], "expected": -26.5}, {"input": [-26.5, -90.0], "expected": -26.5}, {"input": [-26.5, -89.5], "expected": -26.5}, {"input": [-26.5, -89.0], "expected": -26.5}, {"input": [-26.5, -88.5], "expected": -26.5}, {"input": [-26.5, -88.0], "expected": -26.5}, {"input": [-26.5, -87.5], "expected": -26.5}, {"input": [-26.5, -87.0], "expected": -26.5}, {"input": [-26.5, -86.5], "expected": -26.5}, {"input": [-26.5, -86.0], "expected": -26.5}, {"input": [-26.5, -85.5], "expected": -26.5}, {"input": [-26.5, -85.0], "expected": -26.5}, {"input": [-26.5, -84.5], "expected": -26.5}, {"input": [-26.5, -84.0], "expected": -26.5}, {"input": [-26.5, -83.5], "expected": -26.5}, {"input": [-26.5, -83.0], "expected": -26.5}, {"input": [-26.5, -82.5], "expected": -26.5}, {"input": [-26.5, -82.0], "expected": -26.5}, {"input": [-26.5, -81.5], "expected": -26.5}, {"input": [-26.5, -81.0], "expected": -26.5}, {"input": [-26.5, -80.5], "expected": -26.5}, {"input": [-26.5, -80.0], "expected": -26.5}, {"input": [-26.5, -79.5], "expected": -26.5}, {"input": [-26.5, -79.0], "expected": -26.5}, {"input": [-26.5, -78.5], "expected": -26.5}, {"input": [-26.5, -78.0], "expected": -26.5}, {"input": [-26.5, -77.5], "expected": -26.5}, {"input": [-26.5, -77.0], "expected": -26.5}, {"input": [-26.5, -76.5], "expected": -26.5}, {"input": [-26.5, -76.0], "expected": -26.5}, {"input": [-26.5, -75.5], "expected": -26.5}, {"input": [-26.5, -75.0], "expected": -26.5}, {"input": [-26.5, -74.5], "expected": -26.5}, {"input": [-26.5, -74.0], "expected": -26.5}, {"input": [-26.5, -73.5], "expected": -26.5}, {"input": [-26.5, -73.0], "expected": -26.5}, {"input": [-26.5, -72.5], "expected": -26.5}, {"input": [-26.5, -72.0], "expected": -26.5}, {"input": [-26.5, -71.5], "expected": -26.5}, {"input": [-26.5, -71.0], "expected": -26.5}, {"input": [-26.5, -70.5], "expected": -26.5}, {"input": [-26.5, -70.0], "expected": -26.5}, {"input": [-26.5, -69.5], "expected": -26.5}, {"input": [-26.5, -69.0], "expected": -26.5}, {"input": [-26.5, -68.5], "expected": -26.5}, {"input": [-26.5, -68.0], "expected": -26.5}, {"input": [-26.5, -67.5], "expected": -26.5}, {"input": [-26.5, -67.0], "expected": -26.5}, {"input": [-26.5, -66.5], "expected": -26.5}, {"input": [-26.5, -66.0], "expected": -26.5}, {"input": [-26.5, -65.5], "expected": -26.5}, {"input": [-26.5, -65.0], "expected": -26.5}, {"input": [-26.5, -64.5], "expected": -26.5}, {"input": [-26.5, -64.0], "expected": -26.5}, {"input": [-26.5, -63.5], "expected": -26.5}, {"input": [-26.5, -63.0], "expected": -26.5}, {"input": [-26.5, -62.5], "expected": -26.5}, {"input": [-26.5, -62.0], "expected": -26.5}, {"input": [-26.5, -61.5], "expected": -26.5}, {"input": [-26.5, -61.0], "expected": -26.5}, {"input": [-26.5, -60.5], "expected": -26.5}, {"input": [-26.5, -60.0], "expected": -26.499999999999996}, {"input": [-26.5, -59.5], "expected": -26.499999999999996}, {"input": [-26.5, -59.0], "expected": -26.499999999999993}, {"input": [-26.5, -58.5], "expected": -26.499999999999986}, {"input": [-26.5, -58.0], "expected": -26.49999999999998}, {"input": [-26.5, -57.5], "expected": -26.499999999999964}, {"input": [-26.5, -57.0], "expected": -26.499999999999943}, {"input": [-26.5, -56.5], "expected": -26.499999999999908}, {"input": [-26.5, -56.0], "expected": -26.499999999999847}, {"input": [-26.5, -55.5], "expected": -26.499999999999744}, {"input": [-26.5, -55.0], "expected": -26.49999999999958}, {"input": [-26.5, -54.5], "expected": -26.499999999999307}, {"input": [-26.5, -54.0], "expected": -26.49999999999886}, {"input": [-26.5, -53.5], "expected": -26.49999999999812}, {"input": [-26.5, -53.0], "expected": -26.499999999996902}, {"input": [-26.5, -52.5], "expected": -26.49999999999489}, {"input": [-26.5, -52.0], "expected": -26.499999999991577}, {"input": [-26.5, -51.5], "expected": -26.499999999986112}, {"input": [-26.5, -51.0], "expected": -26.499999999977103}, {"input": [-26.5, -50.5], "expected": -26.49999999996225}, {"input": [-26.5, -50.0], "expected": -26.49999999993776}, {"input": [-26.5, -49.5], "expected": -26.49999999989738}, {"input": [-26.5, -49.0], "expected": -26.49999999983081}, {"input": [-26.5, -48.5], "expected": -26.49999999972105}, {"input": [-26.5, -48.0], "expected": -26.499999999540094}, {"input": [-26.5, -47.5], "expected": -26.499999999241744}, {"input": [-26.5, -47.0], "expected": -26.499999998749846}, {"input": [-26.5, -46.5], "expected": -26.499999997938847}, {"input": [-26.5, -46.0], "expected": -26.499999996601733}, {"input": [-26.5, -45.5], "expected": -26.499999994397204}, {"input": [-26.5, -45.0], "expected": -26.49999999076255}, {"input": [-26.5, -44.5], "expected": -26.49999998477002}, {"input": [-26.5, -44.0], "expected": -26.49999997489001}, {"input": [-26.5, -43.5], "expected": -26.499999958600625}, {"input": [-26.5, -43.0], "expected": -26.499999931743968}, {"input": [-26.5, -42.5], "expected": -26.49999988746483}, {"input": [-26.5, -42.0], "expected": -26.49999981446088}, {"input": [-26.5, -41.5], "expected": -26.499999694097728}, {"input": [-26.5, -41.0], "expected": -26.499999495652464}, {"input": [-26.5, -40.5], "expected": -26.499999168471625}, {"input": [-26.5, -40.0], "expected": -26.499998629041855}, {"input": [-26.5, -39.5], "expected": -26.499997739673148}, {"input": [-26.5, -39.0], "expected": -26.499996273353773}, {"input": [-26.5, -38.5], "expected": -26.499993855806522}, {"input": [-26.5, -38.0], "expected": -26.49998986995771}, {"input": [-26.5, -37.5], "expected": -26.499983298438682}, {"input": [-26.5, -37.0], "expected": -26.499972463929772}, {"input": [-26.5, -36.5], "expected": -26.499954601100782}, {"input": [-26.5, -36.0], "expected": -26.49992515097137}, {"input": [-26.5, -35.5], "expected": -26.499876597810278}, {"input": [-26.5, -35.0], "expected": -26.499796552327872}, {"input": [-26.5, -34.5], "expected": -26.499664593627106}, {"input": [-26.5, -34.0], "expected": -26.49944706852464}, {"input": [-26.5, -33.5], "expected": -26.499088533546225}, {"input": [-26.5, -33.0], "expected": -26.498497689840246}, {"input": [-26.5, -32.5], "expected": -26.497524314862268}, {"input": [-26.5, -32.0], "expected": -26.495921556729428}, {"input": [-26.5, -31.5], "expected": -26.493284651510884}, {"input": [-26.5, -31.0], "expected": -26.488952255151407}, {"input": [-26.5, -30.5], "expected": -26.48185007208219}, {"input": [-26.5, -30.0], "expected": -26.47024958172738}, {"input": [-26.5, -29.5], "expected": -26.451412648426256}, {"input": [-26.5, -29.0], "expected": -26.42111026570745}, {"input": [-26.5, -28.5], "expected": -26.373071988957026}, {"input": [-26.5, -28.0], "expected": -26.298586722017248}, {"input": [-26.5, -27.5], "expected": -26.186738312481776}, {"input": [-26.5, -27.0], "expected": -26.02592301581989}, {"input": [-26.5, -26.5], "expected": -25.806852819440056}, {"input": [-26.5, -26.0], "expected": -25.52592301581989}, {"input": [-26.5, -25.5], "expected": -25.186738312481776}, {"input": [-26.5, -25.0], "expected": -24.798586722017248}, {"input": [-26.5, -24.5], "expected": -24.373071988957026}, {"input": [-26.5, -24.0], "expected": -23.92111026570745}, {"input": [-26.5, -23.5], "expected": -23.451412648426256}, {"input": [-26.5, -23.0], "expected": -22.97024958172738}, {"input": [-26.5, -22.5], "expected": -22.48185007208219}, {"input": [-26.5, -22.0], "expected": -21.988952255151407}, {"input": [-26.5, -21.5], "expected": -21.493284651510884}, {"input": [-26.5, -21.0], "expected": -20.995921556729428}, {"input": [-26.5, -20.5], "expected": -20.497524314862268}, {"input": [-26.5, -20.0], "expected": -19.998497689840246}, {"input": [-26.5, -19.5], "expected": -19.499088533546225}, {"input": [-26.5, -19.0], "expected": -18.99944706852464}, {"input": [-26.5, -18.5], "expected": -18.499664593627106}, {"input": [-26.5, -18.0], "expected": -17.999796552327872}, {"input": [-26.5, -17.5], "expected": -17.499876597810278}, {"input": [-26.5, -17.0], "expected": -16.99992515097137}, {"input": [-26.5, -16.5], "expected": -16.499954601100782}, {"input": [-26.5, -16.0], "expected": -15.99997246392977}, {"input": [-26.5, -15.5], "expected": -15.499983298438682}, {"input": [-26.5, -15.0], "expected": -14.99998986995771}, {"input": [-26.5, -14.5], "expected": -14.499993855806522}, {"input": [-26.5, -14.0], "expected": -13.999996273353771}, {"input": [-26.5, -13.5], "expected": -13.499997739673148}, {"input": [-26.5, -13.0], "expected": -12.999998629041853}, {"input": [-26.5, -12.5], "expected": -12.499999168471627}, {"input": [-26.5, -12.0], "expected": -11.999999495652464}, {"input": [-26.5, -11.5], "expected": -11.499999694097726}, {"input": [-26.5, -11.0], "expected": -10.999999814460882}, {"input": [-26.5, -10.5], "expected": -10.499999887464831}, {"input": [-26.5, -10.0], "expected": -9.999999931743968}, {"input": [-26.5, -9.5], "expected": -9.499999958600624}, {"input": [-26.5, -9.0], "expected": -8.99999997489001}, {"input": [-26.5, -8.5], "expected": -8.499999984770021}, {"input": [-26.5, -8.0], "expected": -7.99999999076255}, {"input": [-26.5, -7.5], "expected": -7.4999999943972036}, {"input": [-26.5, -7.0], "expected": -6.9999999966017326}, {"input": [-26.5, -6.5], "expected": -6.499999997938846}, {"input": [-26.5, -6.0], "expected": -5.999999998749847}, {"input": [-26.5, -5.5], "expected": -5.499999999241744}, {"input": [-26.5, -5.0], "expected": -4.999999999540094}, {"input": [-26.5, -4.5], "expected": -4.499999999721053}, {"input": [-26.5, -4.0], "expected": -3.99999999983081}, {"input": [-26.5, -3.5], "expected": -3.499999999897381}, {"input": [-26.5, -3.0], "expected": -2.9999999999377587}, {"input": [-26.5, -2.5], "expected": -2.499999999962249}, {"input": [-26.5, -2.0], "expected": -1.9999999999771028}, {"input": [-26.5, -1.5], "expected": -1.499999999986112}, {"input": [-26.5, -1.0], "expected": -0.9999999999915765}, {"input": [-26.5, -0.5], "expected": -0.4999999999948909}, {"input": [-26.5, 0.0], "expected": 3.098819138717024e-12}, {"input": [-26.5, 0.5], "expected": 0.5000000000018795}, {"input": [-26.5, 1.0], "expected": 1.00000000000114}, {"input": [-26.5, 1.5], "expected": 1.5000000000006914}, {"input": [-26.5, 2.0], "expected": 2.000000000000419}, {"input": [-26.5, 2.5], "expected": 2.5000000000002545}, {"input": [-26.5, 3.0], "expected": 3.000000000000154}, {"input": [-26.5, 3.5], "expected": 3.5000000000000937}, {"input": [-26.5, 4.0], "expected": 4.000000000000057}, {"input": [-26.5, 4.5], "expected": 4.500000000000035}, {"input": [-26.5, 5.0], "expected": 5.000000000000021}, {"input": [-26.5, 5.5], "expected": 5.500000000000012}, {"input": [-26.5, 6.0], "expected": 6.000000000000008}, {"input": [-26.5, 6.5], "expected": 6.500000000000004}, {"input": [-26.5, 7.0], "expected": 7.000000000000003}, {"input": [-26.5, 7.5], "expected": 7.500000000000002}, {"input": [-26.5, 8.0], "expected": 8.000000000000002}, {"input": [-26.5, 8.5], "expected": 8.5}, {"input": [-26.5, 9.0], "expected": 9.0}, {"input": [-26.5, 9.5], "expected": 9.5}, {"input": [-26.5, 10.0], "expected": 10.0}, {"input": [-26.5, 10.5], "expected": 10.5}, {"input": [-26.5, 11.0], "expected": 11.0}, {"input": [-26.5, 11.5], "expected": 11.5}, {"input": [-26.5, 12.0], "expected": 12.0}, {"input": [-26.5, 12.5], "expected": 12.5}, {"input": [-26.5, 13.0], "expected": 13.0}, {"input": [-26.5, 13.5], "expected": 13.5}, {"input": [-26.5, 14.0], "expected": 14.0}, {"input": [-26.5, 14.5], "expected": 14.5}, {"input": [-26.5, 15.0], "expected": 15.0}, {"input": [-26.5, 15.5], "expected": 15.5}, {"input": [-26.5, 16.0], "expected": 16.0}, {"input": [-26.5, 16.5], "expected": 16.5}, {"input": [-26.5, 17.0], "expected": 17.0}, {"input": [-26.5, 17.5], "expected": 17.5}, {"input": [-26.5, 18.0], "expected": 18.0}, {"input": [-26.5, 18.5], "expected": 18.5}, {"input": [-26.5, 19.0], "expected": 19.0}, {"input": [-26.5, 19.5], "expected": 19.5}, {"input": [-26.5, 20.0], "expected": 20.0}, {"input": [-26.5, 20.5], "expected": 20.5}, {"input": [-26.5, 21.0], "expected": 21.0}, {"input": [-26.5, 21.5], "expected": 21.5}, {"input": [-26.5, 22.0], "expected": 22.0}, {"input": [-26.5, 22.5], "expected": 22.5}, {"input": [-26.5, 23.0], "expected": 23.0}, {"input": [-26.5, 23.5], "expected": 23.5}, {"input": [-26.5, 24.0], "expected": 24.0}, {"input": [-26.5, 24.5], "expected": 24.5}, {"input": [-26.5, 25.0], "expected": 25.0}, {"input": [-26.5, 25.5], "expected": 25.5}, {"input": [-26.5, 26.0], "expected": 26.0}, {"input": [-26.5, 26.5], "expected": 26.5}, {"input": [-26.5, 27.0], "expected": 27.0}, {"input": [-26.5, 27.5], "expected": 27.5}, {"input": [-26.5, 28.0], "expected": 28.0}, {"input": [-26.5, 28.5], "expected": 28.5}, {"input": [-26.5, 29.0], "expected": 29.0}, {"input": [-26.5, 29.5], "expected": 29.5}, {"input": [-26.5, 30.0], "expected": 30.0}, {"input": [-26.5, 30.5], "expected": 30.5}, {"input": [-26.5, 31.0], "expected": 31.0}, {"input": [-26.5, 31.5], "expected": 31.5}, {"input": [-26.5, 32.0], "expected": 32.0}, {"input": [-26.5, 32.5], "expected": 32.5}, {"input": [-26.5, 33.0], "expected": 33.0}, {"input": [-26.5, 33.5], "expected": 33.5}, {"input": [-26.5, 34.0], "expected": 34.0}, {"input": [-26.5, 34.5], "expected": 34.5}, {"input": [-26.5, 35.0], "expected": 35.0}, {"input": [-26.5, 35.5], "expected": 35.5}, {"input": [-26.5, 36.0], "expected": 36.0}, {"input": [-26.5, 36.5], "expected": 36.5}, {"input": [-26.5, 37.0], "expected": 37.0}, {"input": [-26.5, 37.5], "expected": 37.5}, {"input": [-26.5, 38.0], "expected": 38.0}, {"input": [-26.5, 38.5], "expected": 38.5}, {"input": [-26.5, 39.0], "expected": 39.0}, {"input": [-26.5, 39.5], "expected": 39.5}, {"input": [-26.5, 40.0], "expected": 40.0}, {"input": [-26.5, 40.5], "expected": 40.5}, {"input": [-26.5, 41.0], "expected": 41.0}, {"input": [-26.5, 41.5], "expected": 41.5}, {"input": [-26.5, 42.0], "expected": 42.0}, {"input": [-26.5, 42.5], "expected": 42.5}, {"input": [-26.5, 43.0], "expected": 43.0}, {"input": [-26.5, 43.5], "expected": 43.5}, {"input": [-26.5, 44.0], "expected": 44.0}, {"input": [-26.5, 44.5], "expected": 44.5}, {"input": [-26.5, 45.0], "expected": 45.0}, {"input": [-26.5, 45.5], "expected": 45.5}, {"input": [-26.5, 46.0], "expected": 46.0}, {"input": [-26.5, 46.5], "expected": 46.5}, {"input": [-26.5, 47.0], "expected": 47.0}, {"input": [-26.5, 47.5], "expected": 47.5}, {"input": [-26.5, 48.0], "expected": 48.0}, {"input": [-26.5, 48.5], "expected": 48.5}, {"input": [-26.5, 49.0], "expected": 49.0}, {"input": [-26.5, 49.5], "expected": 49.5}, {"input": [-26.5, 50.0], "expected": 50.0}, {"input": [-26.5, 50.5], "expected": 50.5}, {"input": [-26.5, 51.0], "expected": 51.0}, {"input": [-26.5, 51.5], "expected": 51.5}, {"input": [-26.5, 52.0], "expected": 52.0}, {"input": [-26.5, 52.5], "expected": 52.5}, {"input": [-26.5, 53.0], "expected": 53.0}, {"input": [-26.5, 53.5], "expected": 53.5}, {"input": [-26.5, 54.0], "expected": 54.0}, {"input": [-26.5, 54.5], "expected": 54.5}, {"input": [-26.5, 55.0], "expected": 55.0}, {"input": [-26.5, 55.5], "expected": 55.5}, {"input": [-26.5, 56.0], "expected": 56.0}, {"input": [-26.5, 56.5], "expected": 56.5}, {"input": [-26.5, 57.0], "expected": 57.0}, {"input": [-26.5, 57.5], "expected": 57.5}, {"input": [-26.5, 58.0], "expected": 58.0}, {"input": [-26.5, 58.5], "expected": 58.5}, {"input": [-26.5, 59.0], "expected": 59.0}, {"input": [-26.5, 59.5], "expected": 59.5}, {"input": [-26.5, 60.0], "expected": 60.0}, {"input": [-26.5, 60.5], "expected": 60.5}, {"input": [-26.5, 61.0], "expected": 61.0}, {"input": [-26.5, 61.5], "expected": 61.5}, {"input": [-26.5, 62.0], "expected": 62.0}, {"input": [-26.5, 62.5], "expected": 62.5}, {"input": [-26.5, 63.0], "expected": 63.0}, {"input": [-26.5, 63.5], "expected": 63.5}, {"input": [-26.5, 64.0], "expected": 64.0}, {"input": [-26.5, 64.5], "expected": 64.5}, {"input": [-26.5, 65.0], "expected": 65.0}, {"input": [-26.5, 65.5], "expected": 65.5}, {"input": [-26.5, 66.0], "expected": 66.0}, {"input": [-26.5, 66.5], "expected": 66.5}, {"input": [-26.5, 67.0], "expected": 67.0}, {"input": [-26.5, 67.5], "expected": 67.5}, {"input": [-26.5, 68.0], "expected": 68.0}, {"input": [-26.5, 68.5], "expected": 68.5}, {"input": [-26.5, 69.0], "expected": 69.0}, {"input": [-26.5, 69.5], "expected": 69.5}, {"input": [-26.5, 70.0], "expected": 70.0}, {"input": [-26.5, 70.5], "expected": 70.5}, {"input": [-26.5, 71.0], "expected": 71.0}, {"input": [-26.5, 71.5], "expected": 71.5}, {"input": [-26.5, 72.0], "expected": 72.0}, {"input": [-26.5, 72.5], "expected": 72.5}, {"input": [-26.5, 73.0], "expected": 73.0}, {"input": [-26.5, 73.5], "expected": 73.5}, {"input": [-26.5, 74.0], "expected": 74.0}, {"input": [-26.5, 74.5], "expected": 74.5}, {"input": [-26.5, 75.0], "expected": 75.0}, {"input": [-26.5, 75.5], "expected": 75.5}, {"input": [-26.5, 76.0], "expected": 76.0}, {"input": [-26.5, 76.5], "expected": 76.5}, {"input": [-26.5, 77.0], "expected": 77.0}, {"input": [-26.5, 77.5], "expected": 77.5}, {"input": [-26.5, 78.0], "expected": 78.0}, {"input": [-26.5, 78.5], "expected": 78.5}, {"input": [-26.5, 79.0], "expected": 79.0}, {"input": [-26.5, 79.5], "expected": 79.5}, {"input": [-26.5, 80.0], "expected": 80.0}, {"input": [-26.5, 80.5], "expected": 80.5}, {"input": [-26.5, 81.0], "expected": 81.0}, {"input": [-26.5, 81.5], "expected": 81.5}, {"input": [-26.5, 82.0], "expected": 82.0}, {"input": [-26.5, 82.5], "expected": 82.5}, {"input": [-26.5, 83.0], "expected": 83.0}, {"input": [-26.5, 83.5], "expected": 83.5}, {"input": [-26.5, 84.0], "expected": 84.0}, {"input": [-26.5, 84.5], "expected": 84.5}, {"input": [-26.5, 85.0], "expected": 85.0}, {"input": [-26.5, 85.5], "expected": 85.5}, {"input": [-26.5, 86.0], "expected": 86.0}, {"input": [-26.5, 86.5], "expected": 86.5}, {"input": [-26.5, 87.0], "expected": 87.0}, {"input": [-26.5, 87.5], "expected": 87.5}, {"input": [-26.5, 88.0], "expected": 88.0}, {"input": [-26.5, 88.5], "expected": 88.5}, {"input": [-26.5, 89.0], "expected": 89.0}, {"input": [-26.5, 89.5], "expected": 89.5}, {"input": [-26.5, 90.0], "expected": 90.0}, {"input": [-26.5, 90.5], "expected": 90.5}, {"input": [-26.5, 91.0], "expected": 91.0}, {"input": [-26.5, 91.5], "expected": 91.5}, {"input": [-26.5, 92.0], "expected": 92.0}, {"input": [-26.5, 92.5], "expected": 92.5}, {"input": [-26.5, 93.0], "expected": 93.0}, {"input": [-26.5, 93.5], "expected": 93.5}, {"input": [-26.5, 94.0], "expected": 94.0}, {"input": [-26.5, 94.5], "expected": 94.5}, {"input": [-26.5, 95.0], "expected": 95.0}, {"input": [-26.5, 95.5], "expected": 95.5}, {"input": [-26.5, 96.0], "expected": 96.0}, {"input": [-26.5, 96.5], "expected": 96.5}, {"input": [-26.5, 97.0], "expected": 97.0}, {"input": [-26.5, 97.5], "expected": 97.5}, {"input": [-26.5, 98.0], "expected": 98.0}, {"input": [-26.5, 98.5], "expected": 98.5}, {"input": [-26.5, 99.0], "expected": 99.0}, {"input": [-26.5, 99.5], "expected": 99.5}, {"input": [-26.0, -100.0], "expected": -26.0}, {"input": [-26.0, -99.5], "expected": -26.0}, {"input": [-26.0, -99.0], "expected": -26.0}, {"input": [-26.0, -98.5], "expected": -26.0}, {"input": [-26.0, -98.0], "expected": -26.0}, {"input": [-26.0, -97.5], "expected": -26.0}, {"input": [-26.0, -97.0], "expected": -26.0}, {"input": [-26.0, -96.5], "expected": -26.0}, {"input": [-26.0, -96.0], "expected": -26.0}, {"input": [-26.0, -95.5], "expected": -26.0}, {"input": [-26.0, -95.0], "expected": -26.0}, {"input": [-26.0, -94.5], "expected": -26.0}, {"input": [-26.0, -94.0], "expected": -26.0}, {"input": [-26.0, -93.5], "expected": -26.0}, {"input": [-26.0, -93.0], "expected": -26.0}, {"input": [-26.0, -92.5], "expected": -26.0}, {"input": [-26.0, -92.0], "expected": -26.0}, {"input": [-26.0, -91.5], "expected": -26.0}, {"input": [-26.0, -91.0], "expected": -26.0}, {"input": [-26.0, -90.5], "expected": -26.0}, {"input": [-26.0, -90.0], "expected": -26.0}, {"input": [-26.0, -89.5], "expected": -26.0}, {"input": [-26.0, -89.0], "expected": -26.0}, {"input": [-26.0, -88.5], "expected": -26.0}, {"input": [-26.0, -88.0], "expected": -26.0}, {"input": [-26.0, -87.5], "expected": -26.0}, {"input": [-26.0, -87.0], "expected": -26.0}, {"input": [-26.0, -86.5], "expected": -26.0}, {"input": [-26.0, -86.0], "expected": -26.0}, {"input": [-26.0, -85.5], "expected": -26.0}, {"input": [-26.0, -85.0], "expected": -26.0}, {"input": [-26.0, -84.5], "expected": -26.0}, {"input": [-26.0, -84.0], "expected": -26.0}, {"input": [-26.0, -83.5], "expected": -26.0}, {"input": [-26.0, -83.0], "expected": -26.0}, {"input": [-26.0, -82.5], "expected": -26.0}, {"input": [-26.0, -82.0], "expected": -26.0}, {"input": [-26.0, -81.5], "expected": -26.0}, {"input": [-26.0, -81.0], "expected": -26.0}, {"input": [-26.0, -80.5], "expected": -26.0}, {"input": [-26.0, -80.0], "expected": -26.0}, {"input": [-26.0, -79.5], "expected": -26.0}, {"input": [-26.0, -79.0], "expected": -26.0}, {"input": [-26.0, -78.5], "expected": -26.0}, {"input": [-26.0, -78.0], "expected": -26.0}, {"input": [-26.0, -77.5], "expected": -26.0}, {"input": [-26.0, -77.0], "expected": -26.0}, {"input": [-26.0, -76.5], "expected": -26.0}, {"input": [-26.0, -76.0], "expected": -26.0}, {"input": [-26.0, -75.5], "expected": -26.0}, {"input": [-26.0, -75.0], "expected": -26.0}, {"input": [-26.0, -74.5], "expected": -26.0}, {"input": [-26.0, -74.0], "expected": -26.0}, {"input": [-26.0, -73.5], "expected": -26.0}, {"input": [-26.0, -73.0], "expected": -26.0}, {"input": [-26.0, -72.5], "expected": -26.0}, {"input": [-26.0, -72.0], "expected": -26.0}, {"input": [-26.0, -71.5], "expected": -26.0}, {"input": [-26.0, -71.0], "expected": -26.0}, {"input": [-26.0, -70.5], "expected": -26.0}, {"input": [-26.0, -70.0], "expected": -26.0}, {"input": [-26.0, -69.5], "expected": -26.0}, {"input": [-26.0, -69.0], "expected": -26.0}, {"input": [-26.0, -68.5], "expected": -26.0}, {"input": [-26.0, -68.0], "expected": -26.0}, {"input": [-26.0, -67.5], "expected": -26.0}, {"input": [-26.0, -67.0], "expected": -26.0}, {"input": [-26.0, -66.5], "expected": -26.0}, {"input": [-26.0, -66.0], "expected": -26.0}, {"input": [-26.0, -65.5], "expected": -26.0}, {"input": [-26.0, -65.0], "expected": -26.0}, {"input": [-26.0, -64.5], "expected": -26.0}, {"input": [-26.0, -64.0], "expected": -26.0}, {"input": [-26.0, -63.5], "expected": -26.0}, {"input": [-26.0, -63.0], "expected": -26.0}, {"input": [-26.0, -62.5], "expected": -26.0}, {"input": [-26.0, -62.0], "expected": -26.0}, {"input": [-26.0, -61.5], "expected": -26.0}, {"input": [-26.0, -61.0], "expected": -26.0}, {"input": [-26.0, -60.5], "expected": -26.0}, {"input": [-26.0, -60.0], "expected": -26.0}, {"input": [-26.0, -59.5], "expected": -25.999999999999996}, {"input": [-26.0, -59.0], "expected": -25.999999999999996}, {"input": [-26.0, -58.5], "expected": -25.999999999999993}, {"input": [-26.0, -58.0], "expected": -25.999999999999986}, {"input": [-26.0, -57.5], "expected": -25.99999999999998}, {"input": [-26.0, -57.0], "expected": -25.999999999999964}, {"input": [-26.0, -56.5], "expected": -25.999999999999943}, {"input": [-26.0, -56.0], "expected": -25.999999999999908}, {"input": [-26.0, -55.5], "expected": -25.999999999999847}, {"input": [-26.0, -55.0], "expected": -25.999999999999744}, {"input": [-26.0, -54.5], "expected": -25.99999999999958}, {"input": [-26.0, -54.0], "expected": -25.999999999999307}, {"input": [-26.0, -53.5], "expected": -25.99999999999886}, {"input": [-26.0, -53.0], "expected": -25.99999999999812}, {"input": [-26.0, -52.5], "expected": -25.999999999996902}, {"input": [-26.0, -52.0], "expected": -25.99999999999489}, {"input": [-26.0, -51.5], "expected": -25.999999999991577}, {"input": [-26.0, -51.0], "expected": -25.999999999986112}, {"input": [-26.0, -50.5], "expected": -25.999999999977103}, {"input": [-26.0, -50.0], "expected": -25.99999999996225}, {"input": [-26.0, -49.5], "expected": -25.99999999993776}, {"input": [-26.0, -49.0], "expected": -25.99999999989738}, {"input": [-26.0, -48.5], "expected": -25.99999999983081}, {"input": [-26.0, -48.0], "expected": -25.99999999972105}, {"input": [-26.0, -47.5], "expected": -25.999999999540094}, {"input": [-26.0, -47.0], "expected": -25.999999999241744}, {"input": [-26.0, -46.5], "expected": -25.999999998749846}, {"input": [-26.0, -46.0], "expected": -25.999999997938847}, {"input": [-26.0, -45.5], "expected": -25.999999996601733}, {"input": [-26.0, -45.0], "expected": -25.999999994397204}, {"input": [-26.0, -44.5], "expected": -25.99999999076255}, {"input": [-26.0, -44.0], "expected": -25.99999998477002}, {"input": [-26.0, -43.5], "expected": -25.99999997489001}, {"input": [-26.0, -43.0], "expected": -25.999999958600625}, {"input": [-26.0, -42.5], "expected": -25.999999931743968}, {"input": [-26.0, -42.0], "expected": -25.99999988746483}, {"input": [-26.0, -41.5], "expected": -25.99999981446088}, {"input": [-26.0, -41.0], "expected": -25.999999694097728}, {"input": [-26.0, -40.5], "expected": -25.999999495652464}, {"input": [-26.0, -40.0], "expected": -25.999999168471625}, {"input": [-26.0, -39.5], "expected": -25.999998629041855}, {"input": [-26.0, -39.0], "expected": -25.999997739673148}, {"input": [-26.0, -38.5], "expected": -25.999996273353773}, {"input": [-26.0, -38.0], "expected": -25.999993855806522}, {"input": [-26.0, -37.5], "expected": -25.99998986995771}, {"input": [-26.0, -37.0], "expected": -25.999983298438682}, {"input": [-26.0, -36.5], "expected": -25.999972463929772}, {"input": [-26.0, -36.0], "expected": -25.999954601100782}, {"input": [-26.0, -35.5], "expected": -25.99992515097137}, {"input": [-26.0, -35.0], "expected": -25.999876597810278}, {"input": [-26.0, -34.5], "expected": -25.999796552327872}, {"input": [-26.0, -34.0], "expected": -25.999664593627106}, {"input": [-26.0, -33.5], "expected": -25.99944706852464}, {"input": [-26.0, -33.0], "expected": -25.999088533546225}, {"input": [-26.0, -32.5], "expected": -25.998497689840246}, {"input": [-26.0, -32.0], "expected": -25.997524314862268}, {"input": [-26.0, -31.5], "expected": -25.995921556729428}, {"input": [-26.0, -31.0], "expected": -25.993284651510884}, {"input": [-26.0, -30.5], "expected": -25.988952255151407}, {"input": [-26.0, -30.0], "expected": -25.98185007208219}, {"input": [-26.0, -29.5], "expected": -25.97024958172738}, {"input": [-26.0, -29.0], "expected": -25.951412648426256}, {"input": [-26.0, -28.5], "expected": -25.92111026570745}, {"input": [-26.0, -28.0], "expected": -25.873071988957026}, {"input": [-26.0, -27.5], "expected": -25.798586722017248}, {"input": [-26.0, -27.0], "expected": -25.686738312481776}, {"input": [-26.0, -26.5], "expected": -25.52592301581989}, {"input": [-26.0, -26.0], "expected": -25.306852819440056}, {"input": [-26.0, -25.5], "expected": -25.02592301581989}, {"input": [-26.0, -25.0], "expected": -24.686738312481776}, {"input": [-26.0, -24.5], "expected": -24.298586722017248}, {"input": [-26.0, -24.0], "expected": -23.873071988957026}, {"input": [-26.0, -23.5], "expected": -23.42111026570745}, {"input": [-26.0, -23.0], "expected": -22.951412648426256}, {"input": [-26.0, -22.5], "expected": -22.47024958172738}, {"input": [-26.0, -22.0], "expected": -21.98185007208219}, {"input": [-26.0, -21.5], "expected": -21.488952255151407}, {"input": [-26.0, -21.0], "expected": -20.993284651510884}, {"input": [-26.0, -20.5], "expected": -20.495921556729428}, {"input": [-26.0, -20.0], "expected": -19.997524314862268}, {"input": [-26.0, -19.5], "expected": -19.498497689840246}, {"input": [-26.0, -19.0], "expected": -18.999088533546225}, {"input": [-26.0, -18.5], "expected": -18.49944706852464}, {"input": [-26.0, -18.0], "expected": -17.999664593627106}, {"input": [-26.0, -17.5], "expected": -17.499796552327872}, {"input": [-26.0, -17.0], "expected": -16.999876597810278}, {"input": [-26.0, -16.5], "expected": -16.49992515097137}, {"input": [-26.0, -16.0], "expected": -15.999954601100782}, {"input": [-26.0, -15.5], "expected": -15.49997246392977}, {"input": [-26.0, -15.0], "expected": -14.999983298438682}, {"input": [-26.0, -14.5], "expected": -14.49998986995771}, {"input": [-26.0, -14.0], "expected": -13.999993855806522}, {"input": [-26.0, -13.5], "expected": -13.499996273353771}, {"input": [-26.0, -13.0], "expected": -12.999997739673148}, {"input": [-26.0, -12.5], "expected": -12.499998629041853}, {"input": [-26.0, -12.0], "expected": -11.999999168471627}, {"input": [-26.0, -11.5], "expected": -11.499999495652464}, {"input": [-26.0, -11.0], "expected": -10.999999694097726}, {"input": [-26.0, -10.5], "expected": -10.499999814460882}, {"input": [-26.0, -10.0], "expected": -9.999999887464831}, {"input": [-26.0, -9.5], "expected": -9.499999931743968}, {"input": [-26.0, -9.0], "expected": -8.999999958600624}, {"input": [-26.0, -8.5], "expected": -8.49999997489001}, {"input": [-26.0, -8.0], "expected": -7.99999998477002}, {"input": [-26.0, -7.5], "expected": -7.49999999076255}, {"input": [-26.0, -7.0], "expected": -6.9999999943972036}, {"input": [-26.0, -6.5], "expected": -6.4999999966017326}, {"input": [-26.0, -6.0], "expected": -5.999999997938846}, {"input": [-26.0, -5.5], "expected": -5.499999998749847}, {"input": [-26.0, -5.0], "expected": -4.999999999241744}, {"input": [-26.0, -4.5], "expected": -4.499999999540094}, {"input": [-26.0, -4.0], "expected": -3.9999999997210534}, {"input": [-26.0, -3.5], "expected": -3.49999999983081}, {"input": [-26.0, -3.0], "expected": -2.999999999897381}, {"input": [-26.0, -2.5], "expected": -2.4999999999377587}, {"input": [-26.0, -2.0], "expected": -1.9999999999622486}, {"input": [-26.0, -1.5], "expected": -1.4999999999771028}, {"input": [-26.0, -1.0], "expected": -0.9999999999861121}, {"input": [-26.0, -0.5], "expected": -0.4999999999915765}, {"input": [-26.0, 0.0], "expected": 5.1090890280502736e-12}, {"input": [-26.0, 0.5], "expected": 0.5000000000030989}, {"input": [-26.0, 1.0], "expected": 1.0000000000018796}, {"input": [-26.0, 1.5], "expected": 1.50000000000114}, {"input": [-26.0, 2.0], "expected": 2.0000000000006914}, {"input": [-26.0, 2.5], "expected": 2.500000000000419}, {"input": [-26.0, 3.0], "expected": 3.0000000000002545}, {"input": [-26.0, 3.5], "expected": 3.500000000000154}, {"input": [-26.0, 4.0], "expected": 4.000000000000093}, {"input": [-26.0, 4.5], "expected": 4.500000000000057}, {"input": [-26.0, 5.0], "expected": 5.000000000000035}, {"input": [-26.0, 5.5], "expected": 5.500000000000021}, {"input": [-26.0, 6.0], "expected": 6.000000000000012}, {"input": [-26.0, 6.5], "expected": 6.500000000000008}, {"input": [-26.0, 7.0], "expected": 7.000000000000004}, {"input": [-26.0, 7.5], "expected": 7.500000000000003}, {"input": [-26.0, 8.0], "expected": 8.000000000000002}, {"input": [-26.0, 8.5], "expected": 8.500000000000002}, {"input": [-26.0, 9.0], "expected": 9.0}, {"input": [-26.0, 9.5], "expected": 9.5}, {"input": [-26.0, 10.0], "expected": 10.0}, {"input": [-26.0, 10.5], "expected": 10.5}, {"input": [-26.0, 11.0], "expected": 11.0}, {"input": [-26.0, 11.5], "expected": 11.5}, {"input": [-26.0, 12.0], "expected": 12.0}, {"input": [-26.0, 12.5], "expected": 12.5}, {"input": [-26.0, 13.0], "expected": 13.0}, {"input": [-26.0, 13.5], "expected": 13.5}, {"input": [-26.0, 14.0], "expected": 14.0}, {"input": [-26.0, 14.5], "expected": 14.5}, {"input": [-26.0, 15.0], "expected": 15.0}, {"input": [-26.0, 15.5], "expected": 15.5}, {"input": [-26.0, 16.0], "expected": 16.0}, {"input": [-26.0, 16.5], "expected": 16.5}, {"input": [-26.0, 17.0], "expected": 17.0}, {"input": [-26.0, 17.5], "expected": 17.5}, {"input": [-26.0, 18.0], "expected": 18.0}, {"input": [-26.0, 18.5], "expected": 18.5}, {"input": [-26.0, 19.0], "expected": 19.0}, {"input": [-26.0, 19.5], "expected": 19.5}, {"input": [-26.0, 20.0], "expected": 20.0}, {"input": [-26.0, 20.5], "expected": 20.5}, {"input": [-26.0, 21.0], "expected": 21.0}, {"input": [-26.0, 21.5], "expected": 21.5}, {"input": [-26.0, 22.0], "expected": 22.0}, {"input": [-26.0, 22.5], "expected": 22.5}, {"input": [-26.0, 23.0], "expected": 23.0}, {"input": [-26.0, 23.5], "expected": 23.5}, {"input": [-26.0, 24.0], "expected": 24.0}, {"input": [-26.0, 24.5], "expected": 24.5}, {"input": [-26.0, 25.0], "expected": 25.0}, {"input": [-26.0, 25.5], "expected": 25.5}, {"input": [-26.0, 26.0], "expected": 26.0}, {"input": [-26.0, 26.5], "expected": 26.5}, {"input": [-26.0, 27.0], "expected": 27.0}, {"input": [-26.0, 27.5], "expected": 27.5}, {"input": [-26.0, 28.0], "expected": 28.0}, {"input": [-26.0, 28.5], "expected": 28.5}, {"input": [-26.0, 29.0], "expected": 29.0}, {"input": [-26.0, 29.5], "expected": 29.5}, {"input": [-26.0, 30.0], "expected": 30.0}, {"input": [-26.0, 30.5], "expected": 30.5}, {"input": [-26.0, 31.0], "expected": 31.0}, {"input": [-26.0, 31.5], "expected": 31.5}, {"input": [-26.0, 32.0], "expected": 32.0}, {"input": [-26.0, 32.5], "expected": 32.5}, {"input": [-26.0, 33.0], "expected": 33.0}, {"input": [-26.0, 33.5], "expected": 33.5}, {"input": [-26.0, 34.0], "expected": 34.0}, {"input": [-26.0, 34.5], "expected": 34.5}, {"input": [-26.0, 35.0], "expected": 35.0}, {"input": [-26.0, 35.5], "expected": 35.5}, {"input": [-26.0, 36.0], "expected": 36.0}, {"input": [-26.0, 36.5], "expected": 36.5}, {"input": [-26.0, 37.0], "expected": 37.0}, {"input": [-26.0, 37.5], "expected": 37.5}, {"input": [-26.0, 38.0], "expected": 38.0}, {"input": [-26.0, 38.5], "expected": 38.5}, {"input": [-26.0, 39.0], "expected": 39.0}, {"input": [-26.0, 39.5], "expected": 39.5}, {"input": [-26.0, 40.0], "expected": 40.0}, {"input": [-26.0, 40.5], "expected": 40.5}, {"input": [-26.0, 41.0], "expected": 41.0}, {"input": [-26.0, 41.5], "expected": 41.5}, {"input": [-26.0, 42.0], "expected": 42.0}, {"input": [-26.0, 42.5], "expected": 42.5}, {"input": [-26.0, 43.0], "expected": 43.0}, {"input": [-26.0, 43.5], "expected": 43.5}, {"input": [-26.0, 44.0], "expected": 44.0}, {"input": [-26.0, 44.5], "expected": 44.5}, {"input": [-26.0, 45.0], "expected": 45.0}, {"input": [-26.0, 45.5], "expected": 45.5}, {"input": [-26.0, 46.0], "expected": 46.0}, {"input": [-26.0, 46.5], "expected": 46.5}, {"input": [-26.0, 47.0], "expected": 47.0}, {"input": [-26.0, 47.5], "expected": 47.5}, {"input": [-26.0, 48.0], "expected": 48.0}, {"input": [-26.0, 48.5], "expected": 48.5}, {"input": [-26.0, 49.0], "expected": 49.0}, {"input": [-26.0, 49.5], "expected": 49.5}, {"input": [-26.0, 50.0], "expected": 50.0}, {"input": [-26.0, 50.5], "expected": 50.5}, {"input": [-26.0, 51.0], "expected": 51.0}, {"input": [-26.0, 51.5], "expected": 51.5}, {"input": [-26.0, 52.0], "expected": 52.0}, {"input": [-26.0, 52.5], "expected": 52.5}, {"input": [-26.0, 53.0], "expected": 53.0}, {"input": [-26.0, 53.5], "expected": 53.5}, {"input": [-26.0, 54.0], "expected": 54.0}, {"input": [-26.0, 54.5], "expected": 54.5}, {"input": [-26.0, 55.0], "expected": 55.0}, {"input": [-26.0, 55.5], "expected": 55.5}, {"input": [-26.0, 56.0], "expected": 56.0}, {"input": [-26.0, 56.5], "expected": 56.5}, {"input": [-26.0, 57.0], "expected": 57.0}, {"input": [-26.0, 57.5], "expected": 57.5}, {"input": [-26.0, 58.0], "expected": 58.0}, {"input": [-26.0, 58.5], "expected": 58.5}, {"input": [-26.0, 59.0], "expected": 59.0}, {"input": [-26.0, 59.5], "expected": 59.5}, {"input": [-26.0, 60.0], "expected": 60.0}, {"input": [-26.0, 60.5], "expected": 60.5}, {"input": [-26.0, 61.0], "expected": 61.0}, {"input": [-26.0, 61.5], "expected": 61.5}, {"input": [-26.0, 62.0], "expected": 62.0}, {"input": [-26.0, 62.5], "expected": 62.5}, {"input": [-26.0, 63.0], "expected": 63.0}, {"input": [-26.0, 63.5], "expected": 63.5}, {"input": [-26.0, 64.0], "expected": 64.0}, {"input": [-26.0, 64.5], "expected": 64.5}, {"input": [-26.0, 65.0], "expected": 65.0}, {"input": [-26.0, 65.5], "expected": 65.5}, {"input": [-26.0, 66.0], "expected": 66.0}, {"input": [-26.0, 66.5], "expected": 66.5}, {"input": [-26.0, 67.0], "expected": 67.0}, {"input": [-26.0, 67.5], "expected": 67.5}, {"input": [-26.0, 68.0], "expected": 68.0}, {"input": [-26.0, 68.5], "expected": 68.5}, {"input": [-26.0, 69.0], "expected": 69.0}, {"input": [-26.0, 69.5], "expected": 69.5}, {"input": [-26.0, 70.0], "expected": 70.0}, {"input": [-26.0, 70.5], "expected": 70.5}, {"input": [-26.0, 71.0], "expected": 71.0}, {"input": [-26.0, 71.5], "expected": 71.5}, {"input": [-26.0, 72.0], "expected": 72.0}, {"input": [-26.0, 72.5], "expected": 72.5}, {"input": [-26.0, 73.0], "expected": 73.0}, {"input": [-26.0, 73.5], "expected": 73.5}, {"input": [-26.0, 74.0], "expected": 74.0}, {"input": [-26.0, 74.5], "expected": 74.5}, {"input": [-26.0, 75.0], "expected": 75.0}, {"input": [-26.0, 75.5], "expected": 75.5}, {"input": [-26.0, 76.0], "expected": 76.0}, {"input": [-26.0, 76.5], "expected": 76.5}, {"input": [-26.0, 77.0], "expected": 77.0}, {"input": [-26.0, 77.5], "expected": 77.5}, {"input": [-26.0, 78.0], "expected": 78.0}, {"input": [-26.0, 78.5], "expected": 78.5}, {"input": [-26.0, 79.0], "expected": 79.0}, {"input": [-26.0, 79.5], "expected": 79.5}, {"input": [-26.0, 80.0], "expected": 80.0}, {"input": [-26.0, 80.5], "expected": 80.5}, {"input": [-26.0, 81.0], "expected": 81.0}, {"input": [-26.0, 81.5], "expected": 81.5}, {"input": [-26.0, 82.0], "expected": 82.0}, {"input": [-26.0, 82.5], "expected": 82.5}, {"input": [-26.0, 83.0], "expected": 83.0}, {"input": [-26.0, 83.5], "expected": 83.5}, {"input": [-26.0, 84.0], "expected": 84.0}, {"input": [-26.0, 84.5], "expected": 84.5}, {"input": [-26.0, 85.0], "expected": 85.0}, {"input": [-26.0, 85.5], "expected": 85.5}, {"input": [-26.0, 86.0], "expected": 86.0}, {"input": [-26.0, 86.5], "expected": 86.5}, {"input": [-26.0, 87.0], "expected": 87.0}, {"input": [-26.0, 87.5], "expected": 87.5}, {"input": [-26.0, 88.0], "expected": 88.0}, {"input": [-26.0, 88.5], "expected": 88.5}, {"input": [-26.0, 89.0], "expected": 89.0}, {"input": [-26.0, 89.5], "expected": 89.5}, {"input": [-26.0, 90.0], "expected": 90.0}, {"input": [-26.0, 90.5], "expected": 90.5}, {"input": [-26.0, 91.0], "expected": 91.0}, {"input": [-26.0, 91.5], "expected": 91.5}, {"input": [-26.0, 92.0], "expected": 92.0}, {"input": [-26.0, 92.5], "expected": 92.5}, {"input": [-26.0, 93.0], "expected": 93.0}, {"input": [-26.0, 93.5], "expected": 93.5}, {"input": [-26.0, 94.0], "expected": 94.0}, {"input": [-26.0, 94.5], "expected": 94.5}, {"input": [-26.0, 95.0], "expected": 95.0}, {"input": [-26.0, 95.5], "expected": 95.5}, {"input": [-26.0, 96.0], "expected": 96.0}, {"input": [-26.0, 96.5], "expected": 96.5}, {"input": [-26.0, 97.0], "expected": 97.0}, {"input": [-26.0, 97.5], "expected": 97.5}, {"input": [-26.0, 98.0], "expected": 98.0}, {"input": [-26.0, 98.5], "expected": 98.5}, {"input": [-26.0, 99.0], "expected": 99.0}, {"input": [-26.0, 99.5], "expected": 99.5}, {"input": [-25.5, -100.0], "expected": -25.5}, {"input": [-25.5, -99.5], "expected": -25.5}, {"input": [-25.5, -99.0], "expected": -25.5}, {"input": [-25.5, -98.5], "expected": -25.5}, {"input": [-25.5, -98.0], "expected": -25.5}, {"input": [-25.5, -97.5], "expected": -25.5}, {"input": [-25.5, -97.0], "expected": -25.5}, {"input": [-25.5, -96.5], "expected": -25.5}, {"input": [-25.5, -96.0], "expected": -25.5}, {"input": [-25.5, -95.5], "expected": -25.5}, {"input": [-25.5, -95.0], "expected": -25.5}, {"input": [-25.5, -94.5], "expected": -25.5}, {"input": [-25.5, -94.0], "expected": -25.5}, {"input": [-25.5, -93.5], "expected": -25.5}, {"input": [-25.5, -93.0], "expected": -25.5}, {"input": [-25.5, -92.5], "expected": -25.5}, {"input": [-25.5, -92.0], "expected": -25.5}, {"input": [-25.5, -91.5], "expected": -25.5}, {"input": [-25.5, -91.0], "expected": -25.5}, {"input": [-25.5, -90.5], "expected": -25.5}, {"input": [-25.5, -90.0], "expected": -25.5}, {"input": [-25.5, -89.5], "expected": -25.5}, {"input": [-25.5, -89.0], "expected": -25.5}, {"input": [-25.5, -88.5], "expected": -25.5}, {"input": [-25.5, -88.0], "expected": -25.5}, {"input": [-25.5, -87.5], "expected": -25.5}, {"input": [-25.5, -87.0], "expected": -25.5}, {"input": [-25.5, -86.5], "expected": -25.5}, {"input": [-25.5, -86.0], "expected": -25.5}, {"input": [-25.5, -85.5], "expected": -25.5}, {"input": [-25.5, -85.0], "expected": -25.5}, {"input": [-25.5, -84.5], "expected": -25.5}, {"input": [-25.5, -84.0], "expected": -25.5}, {"input": [-25.5, -83.5], "expected": -25.5}, {"input": [-25.5, -83.0], "expected": -25.5}, {"input": [-25.5, -82.5], "expected": -25.5}, {"input": [-25.5, -82.0], "expected": -25.5}, {"input": [-25.5, -81.5], "expected": -25.5}, {"input": [-25.5, -81.0], "expected": -25.5}, {"input": [-25.5, -80.5], "expected": -25.5}, {"input": [-25.5, -80.0], "expected": -25.5}, {"input": [-25.5, -79.5], "expected": -25.5}, {"input": [-25.5, -79.0], "expected": -25.5}, {"input": [-25.5, -78.5], "expected": -25.5}, {"input": [-25.5, -78.0], "expected": -25.5}, {"input": [-25.5, -77.5], "expected": -25.5}, {"input": [-25.5, -77.0], "expected": -25.5}, {"input": [-25.5, -76.5], "expected": -25.5}, {"input": [-25.5, -76.0], "expected": -25.5}, {"input": [-25.5, -75.5], "expected": -25.5}, {"input": [-25.5, -75.0], "expected": -25.5}, {"input": [-25.5, -74.5], "expected": -25.5}, {"input": [-25.5, -74.0], "expected": -25.5}, {"input": [-25.5, -73.5], "expected": -25.5}, {"input": [-25.5, -73.0], "expected": -25.5}, {"input": [-25.5, -72.5], "expected": -25.5}, {"input": [-25.5, -72.0], "expected": -25.5}, {"input": [-25.5, -71.5], "expected": -25.5}, {"input": [-25.5, -71.0], "expected": -25.5}, {"input": [-25.5, -70.5], "expected": -25.5}, {"input": [-25.5, -70.0], "expected": -25.5}, {"input": [-25.5, -69.5], "expected": -25.5}, {"input": [-25.5, -69.0], "expected": -25.5}, {"input": [-25.5, -68.5], "expected": -25.5}, {"input": [-25.5, -68.0], "expected": -25.5}, {"input": [-25.5, -67.5], "expected": -25.5}, {"input": [-25.5, -67.0], "expected": -25.5}, {"input": [-25.5, -66.5], "expected": -25.5}, {"input": [-25.5, -66.0], "expected": -25.5}, {"input": [-25.5, -65.5], "expected": -25.5}, {"input": [-25.5, -65.0], "expected": -25.5}, {"input": [-25.5, -64.5], "expected": -25.5}, {"input": [-25.5, -64.0], "expected": -25.5}, {"input": [-25.5, -63.5], "expected": -25.5}, {"input": [-25.5, -63.0], "expected": -25.5}, {"input": [-25.5, -62.5], "expected": -25.5}, {"input": [-25.5, -62.0], "expected": -25.5}, {"input": [-25.5, -61.5], "expected": -25.5}, {"input": [-25.5, -61.0], "expected": -25.5}, {"input": [-25.5, -60.5], "expected": -25.5}, {"input": [-25.5, -60.0], "expected": -25.5}, {"input": [-25.5, -59.5], "expected": -25.5}, {"input": [-25.5, -59.0], "expected": -25.499999999999996}, {"input": [-25.5, -58.5], "expected": -25.499999999999996}, {"input": [-25.5, -58.0], "expected": -25.499999999999993}, {"input": [-25.5, -57.5], "expected": -25.499999999999986}, {"input": [-25.5, -57.0], "expected": -25.49999999999998}, {"input": [-25.5, -56.5], "expected": -25.499999999999964}, {"input": [-25.5, -56.0], "expected": -25.499999999999943}, {"input": [-25.5, -55.5], "expected": -25.499999999999908}, {"input": [-25.5, -55.0], "expected": -25.499999999999847}, {"input": [-25.5, -54.5], "expected": -25.499999999999744}, {"input": [-25.5, -54.0], "expected": -25.49999999999958}, {"input": [-25.5, -53.5], "expected": -25.499999999999307}, {"input": [-25.5, -53.0], "expected": -25.49999999999886}, {"input": [-25.5, -52.5], "expected": -25.49999999999812}, {"input": [-25.5, -52.0], "expected": -25.499999999996902}, {"input": [-25.5, -51.5], "expected": -25.49999999999489}, {"input": [-25.5, -51.0], "expected": -25.499999999991577}, {"input": [-25.5, -50.5], "expected": -25.499999999986112}, {"input": [-25.5, -50.0], "expected": -25.499999999977103}, {"input": [-25.5, -49.5], "expected": -25.49999999996225}, {"input": [-25.5, -49.0], "expected": -25.49999999993776}, {"input": [-25.5, -48.5], "expected": -25.49999999989738}, {"input": [-25.5, -48.0], "expected": -25.49999999983081}, {"input": [-25.5, -47.5], "expected": -25.49999999972105}, {"input": [-25.5, -47.0], "expected": -25.499999999540094}, {"input": [-25.5, -46.5], "expected": -25.499999999241744}, {"input": [-25.5, -46.0], "expected": -25.499999998749846}, {"input": [-25.5, -45.5], "expected": -25.499999997938847}, {"input": [-25.5, -45.0], "expected": -25.499999996601733}, {"input": [-25.5, -44.5], "expected": -25.499999994397204}, {"input": [-25.5, -44.0], "expected": -25.49999999076255}, {"input": [-25.5, -43.5], "expected": -25.49999998477002}, {"input": [-25.5, -43.0], "expected": -25.49999997489001}, {"input": [-25.5, -42.5], "expected": -25.499999958600625}, {"input": [-25.5, -42.0], "expected": -25.499999931743968}, {"input": [-25.5, -41.5], "expected": -25.49999988746483}, {"input": [-25.5, -41.0], "expected": -25.49999981446088}, {"input": [-25.5, -40.5], "expected": -25.499999694097728}, {"input": [-25.5, -40.0], "expected": -25.499999495652464}, {"input": [-25.5, -39.5], "expected": -25.499999168471625}, {"input": [-25.5, -39.0], "expected": -25.499998629041855}, {"input": [-25.5, -38.5], "expected": -25.499997739673148}, {"input": [-25.5, -38.0], "expected": -25.499996273353773}, {"input": [-25.5, -37.5], "expected": -25.499993855806522}, {"input": [-25.5, -37.0], "expected": -25.49998986995771}, {"input": [-25.5, -36.5], "expected": -25.499983298438682}, {"input": [-25.5, -36.0], "expected": -25.499972463929772}, {"input": [-25.5, -35.5], "expected": -25.499954601100782}, {"input": [-25.5, -35.0], "expected": -25.49992515097137}, {"input": [-25.5, -34.5], "expected": -25.499876597810278}, {"input": [-25.5, -34.0], "expected": -25.499796552327872}, {"input": [-25.5, -33.5], "expected": -25.499664593627106}, {"input": [-25.5, -33.0], "expected": -25.49944706852464}, {"input": [-25.5, -32.5], "expected": -25.499088533546225}, {"input": [-25.5, -32.0], "expected": -25.498497689840246}, {"input": [-25.5, -31.5], "expected": -25.497524314862268}, {"input": [-25.5, -31.0], "expected": -25.495921556729428}, {"input": [-25.5, -30.5], "expected": -25.493284651510884}, {"input": [-25.5, -30.0], "expected": -25.488952255151407}, {"input": [-25.5, -29.5], "expected": -25.48185007208219}, {"input": [-25.5, -29.0], "expected": -25.47024958172738}, {"input": [-25.5, -28.5], "expected": -25.451412648426256}, {"input": [-25.5, -28.0], "expected": -25.42111026570745}, {"input": [-25.5, -27.5], "expected": -25.373071988957026}, {"input": [-25.5, -27.0], "expected": -25.298586722017248}, {"input": [-25.5, -26.5], "expected": -25.186738312481776}, {"input": [-25.5, -26.0], "expected": -25.02592301581989}, {"input": [-25.5, -25.5], "expected": -24.806852819440056}, {"input": [-25.5, -25.0], "expected": -24.52592301581989}, {"input": [-25.5, -24.5], "expected": -24.186738312481776}, {"input": [-25.5, -24.0], "expected": -23.798586722017248}, {"input": [-25.5, -23.5], "expected": -23.373071988957026}, {"input": [-25.5, -23.0], "expected": -22.92111026570745}, {"input": [-25.5, -22.5], "expected": -22.451412648426256}, {"input": [-25.5, -22.0], "expected": -21.97024958172738}, {"input": [-25.5, -21.5], "expected": -21.48185007208219}, {"input": [-25.5, -21.0], "expected": -20.988952255151407}, {"input": [-25.5, -20.5], "expected": -20.493284651510884}, {"input": [-25.5, -20.0], "expected": -19.995921556729428}, {"input": [-25.5, -19.5], "expected": -19.497524314862268}, {"input": [-25.5, -19.0], "expected": -18.998497689840246}, {"input": [-25.5, -18.5], "expected": -18.499088533546225}, {"input": [-25.5, -18.0], "expected": -17.99944706852464}, {"input": [-25.5, -17.5], "expected": -17.499664593627106}, {"input": [-25.5, -17.0], "expected": -16.999796552327872}, {"input": [-25.5, -16.5], "expected": -16.499876597810278}, {"input": [-25.5, -16.0], "expected": -15.999925150971372}, {"input": [-25.5, -15.5], "expected": -15.499954601100782}, {"input": [-25.5, -15.0], "expected": -14.99997246392977}, {"input": [-25.5, -14.5], "expected": -14.499983298438682}, {"input": [-25.5, -14.0], "expected": -13.99998986995771}, {"input": [-25.5, -13.5], "expected": -13.499993855806522}, {"input": [-25.5, -13.0], "expected": -12.999996273353771}, {"input": [-25.5, -12.5], "expected": -12.499997739673148}, {"input": [-25.5, -12.0], "expected": -11.999998629041853}, {"input": [-25.5, -11.5], "expected": -11.499999168471627}, {"input": [-25.5, -11.0], "expected": -10.999999495652464}, {"input": [-25.5, -10.5], "expected": -10.499999694097726}, {"input": [-25.5, -10.0], "expected": -9.999999814460882}, {"input": [-25.5, -9.5], "expected": -9.499999887464831}, {"input": [-25.5, -9.0], "expected": -8.999999931743968}, {"input": [-25.5, -8.5], "expected": -8.499999958600624}, {"input": [-25.5, -8.0], "expected": -7.999999974890009}, {"input": [-25.5, -7.5], "expected": -7.49999998477002}, {"input": [-25.5, -7.0], "expected": -6.99999999076255}, {"input": [-25.5, -6.5], "expected": -6.4999999943972036}, {"input": [-25.5, -6.0], "expected": -5.9999999966017326}, {"input": [-25.5, -5.5], "expected": -5.499999997938846}, {"input": [-25.5, -5.0], "expected": -4.999999998749847}, {"input": [-25.5, -4.5], "expected": -4.499999999241744}, {"input": [-25.5, -4.0], "expected": -3.9999999995400946}, {"input": [-25.5, -3.5], "expected": -3.4999999997210534}, {"input": [-25.5, -3.0], "expected": -2.99999999983081}, {"input": [-25.5, -2.5], "expected": -2.499999999897381}, {"input": [-25.5, -2.0], "expected": -1.9999999999377585}, {"input": [-25.5, -1.5], "expected": -1.4999999999622486}, {"input": [-25.5, -1.0], "expected": -0.9999999999771026}, {"input": [-25.5, -0.5], "expected": -0.49999999998611205}, {"input": [-25.5, 0.0], "expected": 8.42346375443317e-12}, {"input": [-25.5, 0.5], "expected": 0.5000000000051091}, {"input": [-25.5, 1.0], "expected": 1.0000000000030989}, {"input": [-25.5, 1.5], "expected": 1.5000000000018796}, {"input": [-25.5, 2.0], "expected": 2.00000000000114}, {"input": [-25.5, 2.5], "expected": 2.5000000000006914}, {"input": [-25.5, 3.0], "expected": 3.000000000000419}, {"input": [-25.5, 3.5], "expected": 3.5000000000002545}, {"input": [-25.5, 4.0], "expected": 4.0000000000001545}, {"input": [-25.5, 4.5], "expected": 4.500000000000093}, {"input": [-25.5, 5.0], "expected": 5.000000000000057}, {"input": [-25.5, 5.5], "expected": 5.500000000000035}, {"input": [-25.5, 6.0], "expected": 6.000000000000021}, {"input": [-25.5, 6.5], "expected": 6.500000000000012}, {"input": [-25.5, 7.0], "expected": 7.000000000000008}, {"input": [-25.5, 7.5], "expected": 7.500000000000004}, {"input": [-25.5, 8.0], "expected": 8.000000000000004}, {"input": [-25.5, 8.5], "expected": 8.500000000000002}, {"input": [-25.5, 9.0], "expected": 9.000000000000002}, {"input": [-25.5, 9.5], "expected": 9.5}, {"input": [-25.5, 10.0], "expected": 10.0}, {"input": [-25.5, 10.5], "expected": 10.5}, {"input": [-25.5, 11.0], "expected": 11.0}, {"input": [-25.5, 11.5], "expected": 11.5}, {"input": [-25.5, 12.0], "expected": 12.0}, {"input": [-25.5, 12.5], "expected": 12.5}, {"input": [-25.5, 13.0], "expected": 13.0}, {"input": [-25.5, 13.5], "expected": 13.5}, {"input": [-25.5, 14.0], "expected": 14.0}, {"input": [-25.5, 14.5], "expected": 14.5}, {"input": [-25.5, 15.0], "expected": 15.0}, {"input": [-25.5, 15.5], "expected": 15.5}, {"input": [-25.5, 16.0], "expected": 16.0}, {"input": [-25.5, 16.5], "expected": 16.5}, {"input": [-25.5, 17.0], "expected": 17.0}, {"input": [-25.5, 17.5], "expected": 17.5}, {"input": [-25.5, 18.0], "expected": 18.0}, {"input": [-25.5, 18.5], "expected": 18.5}, {"input": [-25.5, 19.0], "expected": 19.0}, {"input": [-25.5, 19.5], "expected": 19.5}, {"input": [-25.5, 20.0], "expected": 20.0}, {"input": [-25.5, 20.5], "expected": 20.5}, {"input": [-25.5, 21.0], "expected": 21.0}, {"input": [-25.5, 21.5], "expected": 21.5}, {"input": [-25.5, 22.0], "expected": 22.0}, {"input": [-25.5, 22.5], "expected": 22.5}, {"input": [-25.5, 23.0], "expected": 23.0}, {"input": [-25.5, 23.5], "expected": 23.5}, {"input": [-25.5, 24.0], "expected": 24.0}, {"input": [-25.5, 24.5], "expected": 24.5}, {"input": [-25.5, 25.0], "expected": 25.0}, {"input": [-25.5, 25.5], "expected": 25.5}, {"input": [-25.5, 26.0], "expected": 26.0}, {"input": [-25.5, 26.5], "expected": 26.5}, {"input": [-25.5, 27.0], "expected": 27.0}, {"input": [-25.5, 27.5], "expected": 27.5}, {"input": [-25.5, 28.0], "expected": 28.0}, {"input": [-25.5, 28.5], "expected": 28.5}, {"input": [-25.5, 29.0], "expected": 29.0}, {"input": [-25.5, 29.5], "expected": 29.5}, {"input": [-25.5, 30.0], "expected": 30.0}, {"input": [-25.5, 30.5], "expected": 30.5}, {"input": [-25.5, 31.0], "expected": 31.0}, {"input": [-25.5, 31.5], "expected": 31.5}, {"input": [-25.5, 32.0], "expected": 32.0}, {"input": [-25.5, 32.5], "expected": 32.5}, {"input": [-25.5, 33.0], "expected": 33.0}, {"input": [-25.5, 33.5], "expected": 33.5}, {"input": [-25.5, 34.0], "expected": 34.0}, {"input": [-25.5, 34.5], "expected": 34.5}, {"input": [-25.5, 35.0], "expected": 35.0}, {"input": [-25.5, 35.5], "expected": 35.5}, {"input": [-25.5, 36.0], "expected": 36.0}, {"input": [-25.5, 36.5], "expected": 36.5}, {"input": [-25.5, 37.0], "expected": 37.0}, {"input": [-25.5, 37.5], "expected": 37.5}, {"input": [-25.5, 38.0], "expected": 38.0}, {"input": [-25.5, 38.5], "expected": 38.5}, {"input": [-25.5, 39.0], "expected": 39.0}, {"input": [-25.5, 39.5], "expected": 39.5}, {"input": [-25.5, 40.0], "expected": 40.0}, {"input": [-25.5, 40.5], "expected": 40.5}, {"input": [-25.5, 41.0], "expected": 41.0}, {"input": [-25.5, 41.5], "expected": 41.5}, {"input": [-25.5, 42.0], "expected": 42.0}, {"input": [-25.5, 42.5], "expected": 42.5}, {"input": [-25.5, 43.0], "expected": 43.0}, {"input": [-25.5, 43.5], "expected": 43.5}, {"input": [-25.5, 44.0], "expected": 44.0}, {"input": [-25.5, 44.5], "expected": 44.5}, {"input": [-25.5, 45.0], "expected": 45.0}, {"input": [-25.5, 45.5], "expected": 45.5}, {"input": [-25.5, 46.0], "expected": 46.0}, {"input": [-25.5, 46.5], "expected": 46.5}, {"input": [-25.5, 47.0], "expected": 47.0}, {"input": [-25.5, 47.5], "expected": 47.5}, {"input": [-25.5, 48.0], "expected": 48.0}, {"input": [-25.5, 48.5], "expected": 48.5}, {"input": [-25.5, 49.0], "expected": 49.0}, {"input": [-25.5, 49.5], "expected": 49.5}, {"input": [-25.5, 50.0], "expected": 50.0}, {"input": [-25.5, 50.5], "expected": 50.5}, {"input": [-25.5, 51.0], "expected": 51.0}, {"input": [-25.5, 51.5], "expected": 51.5}, {"input": [-25.5, 52.0], "expected": 52.0}, {"input": [-25.5, 52.5], "expected": 52.5}, {"input": [-25.5, 53.0], "expected": 53.0}, {"input": [-25.5, 53.5], "expected": 53.5}, {"input": [-25.5, 54.0], "expected": 54.0}, {"input": [-25.5, 54.5], "expected": 54.5}, {"input": [-25.5, 55.0], "expected": 55.0}, {"input": [-25.5, 55.5], "expected": 55.5}, {"input": [-25.5, 56.0], "expected": 56.0}, {"input": [-25.5, 56.5], "expected": 56.5}, {"input": [-25.5, 57.0], "expected": 57.0}, {"input": [-25.5, 57.5], "expected": 57.5}, {"input": [-25.5, 58.0], "expected": 58.0}, {"input": [-25.5, 58.5], "expected": 58.5}, {"input": [-25.5, 59.0], "expected": 59.0}, {"input": [-25.5, 59.5], "expected": 59.5}, {"input": [-25.5, 60.0], "expected": 60.0}, {"input": [-25.5, 60.5], "expected": 60.5}, {"input": [-25.5, 61.0], "expected": 61.0}, {"input": [-25.5, 61.5], "expected": 61.5}, {"input": [-25.5, 62.0], "expected": 62.0}, {"input": [-25.5, 62.5], "expected": 62.5}, {"input": [-25.5, 63.0], "expected": 63.0}, {"input": [-25.5, 63.5], "expected": 63.5}, {"input": [-25.5, 64.0], "expected": 64.0}, {"input": [-25.5, 64.5], "expected": 64.5}, {"input": [-25.5, 65.0], "expected": 65.0}, {"input": [-25.5, 65.5], "expected": 65.5}, {"input": [-25.5, 66.0], "expected": 66.0}, {"input": [-25.5, 66.5], "expected": 66.5}, {"input": [-25.5, 67.0], "expected": 67.0}, {"input": [-25.5, 67.5], "expected": 67.5}, {"input": [-25.5, 68.0], "expected": 68.0}, {"input": [-25.5, 68.5], "expected": 68.5}, {"input": [-25.5, 69.0], "expected": 69.0}, {"input": [-25.5, 69.5], "expected": 69.5}, {"input": [-25.5, 70.0], "expected": 70.0}, {"input": [-25.5, 70.5], "expected": 70.5}, {"input": [-25.5, 71.0], "expected": 71.0}, {"input": [-25.5, 71.5], "expected": 71.5}, {"input": [-25.5, 72.0], "expected": 72.0}, {"input": [-25.5, 72.5], "expected": 72.5}, {"input": [-25.5, 73.0], "expected": 73.0}, {"input": [-25.5, 73.5], "expected": 73.5}, {"input": [-25.5, 74.0], "expected": 74.0}, {"input": [-25.5, 74.5], "expected": 74.5}, {"input": [-25.5, 75.0], "expected": 75.0}, {"input": [-25.5, 75.5], "expected": 75.5}, {"input": [-25.5, 76.0], "expected": 76.0}, {"input": [-25.5, 76.5], "expected": 76.5}, {"input": [-25.5, 77.0], "expected": 77.0}, {"input": [-25.5, 77.5], "expected": 77.5}, {"input": [-25.5, 78.0], "expected": 78.0}, {"input": [-25.5, 78.5], "expected": 78.5}, {"input": [-25.5, 79.0], "expected": 79.0}, {"input": [-25.5, 79.5], "expected": 79.5}, {"input": [-25.5, 80.0], "expected": 80.0}, {"input": [-25.5, 80.5], "expected": 80.5}, {"input": [-25.5, 81.0], "expected": 81.0}, {"input": [-25.5, 81.5], "expected": 81.5}, {"input": [-25.5, 82.0], "expected": 82.0}, {"input": [-25.5, 82.5], "expected": 82.5}, {"input": [-25.5, 83.0], "expected": 83.0}, {"input": [-25.5, 83.5], "expected": 83.5}, {"input": [-25.5, 84.0], "expected": 84.0}, {"input": [-25.5, 84.5], "expected": 84.5}, {"input": [-25.5, 85.0], "expected": 85.0}, {"input": [-25.5, 85.5], "expected": 85.5}, {"input": [-25.5, 86.0], "expected": 86.0}, {"input": [-25.5, 86.5], "expected": 86.5}, {"input": [-25.5, 87.0], "expected": 87.0}, {"input": [-25.5, 87.5], "expected": 87.5}, {"input": [-25.5, 88.0], "expected": 88.0}, {"input": [-25.5, 88.5], "expected": 88.5}, {"input": [-25.5, 89.0], "expected": 89.0}, {"input": [-25.5, 89.5], "expected": 89.5}, {"input": [-25.5, 90.0], "expected": 90.0}, {"input": [-25.5, 90.5], "expected": 90.5}, {"input": [-25.5, 91.0], "expected": 91.0}, {"input": [-25.5, 91.5], "expected": 91.5}, {"input": [-25.5, 92.0], "expected": 92.0}, {"input": [-25.5, 92.5], "expected": 92.5}, {"input": [-25.5, 93.0], "expected": 93.0}, {"input": [-25.5, 93.5], "expected": 93.5}, {"input": [-25.5, 94.0], "expected": 94.0}, {"input": [-25.5, 94.5], "expected": 94.5}, {"input": [-25.5, 95.0], "expected": 95.0}, {"input": [-25.5, 95.5], "expected": 95.5}, {"input": [-25.5, 96.0], "expected": 96.0}, {"input": [-25.5, 96.5], "expected": 96.5}, {"input": [-25.5, 97.0], "expected": 97.0}, {"input": [-25.5, 97.5], "expected": 97.5}, {"input": [-25.5, 98.0], "expected": 98.0}, {"input": [-25.5, 98.5], "expected": 98.5}, {"input": [-25.5, 99.0], "expected": 99.0}, {"input": [-25.5, 99.5], "expected": 99.5}, {"input": [-25.0, -100.0], "expected": -25.0}, {"input": [-25.0, -99.5], "expected": -25.0}, {"input": [-25.0, -99.0], "expected": -25.0}, {"input": [-25.0, -98.5], "expected": -25.0}, {"input": [-25.0, -98.0], "expected": -25.0}, {"input": [-25.0, -97.5], "expected": -25.0}, {"input": [-25.0, -97.0], "expected": -25.0}, {"input": [-25.0, -96.5], "expected": -25.0}, {"input": [-25.0, -96.0], "expected": -25.0}, {"input": [-25.0, -95.5], "expected": -25.0}, {"input": [-25.0, -95.0], "expected": -25.0}, {"input": [-25.0, -94.5], "expected": -25.0}, {"input": [-25.0, -94.0], "expected": -25.0}, {"input": [-25.0, -93.5], "expected": -25.0}, {"input": [-25.0, -93.0], "expected": -25.0}, {"input": [-25.0, -92.5], "expected": -25.0}, {"input": [-25.0, -92.0], "expected": -25.0}, {"input": [-25.0, -91.5], "expected": -25.0}, {"input": [-25.0, -91.0], "expected": -25.0}, {"input": [-25.0, -90.5], "expected": -25.0}, {"input": [-25.0, -90.0], "expected": -25.0}, {"input": [-25.0, -89.5], "expected": -25.0}, {"input": [-25.0, -89.0], "expected": -25.0}, {"input": [-25.0, -88.5], "expected": -25.0}, {"input": [-25.0, -88.0], "expected": -25.0}, {"input": [-25.0, -87.5], "expected": -25.0}, {"input": [-25.0, -87.0], "expected": -25.0}, {"input": [-25.0, -86.5], "expected": -25.0}, {"input": [-25.0, -86.0], "expected": -25.0}, {"input": [-25.0, -85.5], "expected": -25.0}, {"input": [-25.0, -85.0], "expected": -25.0}, {"input": [-25.0, -84.5], "expected": -25.0}, {"input": [-25.0, -84.0], "expected": -25.0}, {"input": [-25.0, -83.5], "expected": -25.0}, {"input": [-25.0, -83.0], "expected": -25.0}, {"input": [-25.0, -82.5], "expected": -25.0}, {"input": [-25.0, -82.0], "expected": -25.0}, {"input": [-25.0, -81.5], "expected": -25.0}, {"input": [-25.0, -81.0], "expected": -25.0}, {"input": [-25.0, -80.5], "expected": -25.0}, {"input": [-25.0, -80.0], "expected": -25.0}, {"input": [-25.0, -79.5], "expected": -25.0}, {"input": [-25.0, -79.0], "expected": -25.0}, {"input": [-25.0, -78.5], "expected": -25.0}, {"input": [-25.0, -78.0], "expected": -25.0}, {"input": [-25.0, -77.5], "expected": -25.0}, {"input": [-25.0, -77.0], "expected": -25.0}, {"input": [-25.0, -76.5], "expected": -25.0}, {"input": [-25.0, -76.0], "expected": -25.0}, {"input": [-25.0, -75.5], "expected": -25.0}, {"input": [-25.0, -75.0], "expected": -25.0}, {"input": [-25.0, -74.5], "expected": -25.0}, {"input": [-25.0, -74.0], "expected": -25.0}, {"input": [-25.0, -73.5], "expected": -25.0}, {"input": [-25.0, -73.0], "expected": -25.0}, {"input": [-25.0, -72.5], "expected": -25.0}, {"input": [-25.0, -72.0], "expected": -25.0}, {"input": [-25.0, -71.5], "expected": -25.0}, {"input": [-25.0, -71.0], "expected": -25.0}, {"input": [-25.0, -70.5], "expected": -25.0}, {"input": [-25.0, -70.0], "expected": -25.0}, {"input": [-25.0, -69.5], "expected": -25.0}, {"input": [-25.0, -69.0], "expected": -25.0}, {"input": [-25.0, -68.5], "expected": -25.0}, {"input": [-25.0, -68.0], "expected": -25.0}, {"input": [-25.0, -67.5], "expected": -25.0}, {"input": [-25.0, -67.0], "expected": -25.0}, {"input": [-25.0, -66.5], "expected": -25.0}, {"input": [-25.0, -66.0], "expected": -25.0}, {"input": [-25.0, -65.5], "expected": -25.0}, {"input": [-25.0, -65.0], "expected": -25.0}, {"input": [-25.0, -64.5], "expected": -25.0}, {"input": [-25.0, -64.0], "expected": -25.0}, {"input": [-25.0, -63.5], "expected": -25.0}, {"input": [-25.0, -63.0], "expected": -25.0}, {"input": [-25.0, -62.5], "expected": -25.0}, {"input": [-25.0, -62.0], "expected": -25.0}, {"input": [-25.0, -61.5], "expected": -25.0}, {"input": [-25.0, -61.0], "expected": -25.0}, {"input": [-25.0, -60.5], "expected": -25.0}, {"input": [-25.0, -60.0], "expected": -25.0}, {"input": [-25.0, -59.5], "expected": -25.0}, {"input": [-25.0, -59.0], "expected": -25.0}, {"input": [-25.0, -58.5], "expected": -24.999999999999996}, {"input": [-25.0, -58.0], "expected": -24.999999999999996}, {"input": [-25.0, -57.5], "expected": -24.999999999999993}, {"input": [-25.0, -57.0], "expected": -24.999999999999986}, {"input": [-25.0, -56.5], "expected": -24.99999999999998}, {"input": [-25.0, -56.0], "expected": -24.999999999999964}, {"input": [-25.0, -55.5], "expected": -24.999999999999943}, {"input": [-25.0, -55.0], "expected": -24.999999999999908}, {"input": [-25.0, -54.5], "expected": -24.999999999999847}, {"input": [-25.0, -54.0], "expected": -24.999999999999744}, {"input": [-25.0, -53.5], "expected": -24.99999999999958}, {"input": [-25.0, -53.0], "expected": -24.999999999999307}, {"input": [-25.0, -52.5], "expected": -24.99999999999886}, {"input": [-25.0, -52.0], "expected": -24.99999999999812}, {"input": [-25.0, -51.5], "expected": -24.999999999996902}, {"input": [-25.0, -51.0], "expected": -24.99999999999489}, {"input": [-25.0, -50.5], "expected": -24.999999999991577}, {"input": [-25.0, -50.0], "expected": -24.999999999986112}, {"input": [-25.0, -49.5], "expected": -24.999999999977103}, {"input": [-25.0, -49.0], "expected": -24.99999999996225}, {"input": [-25.0, -48.5], "expected": -24.99999999993776}, {"input": [-25.0, -48.0], "expected": -24.99999999989738}, {"input": [-25.0, -47.5], "expected": -24.99999999983081}, {"input": [-25.0, -47.0], "expected": -24.99999999972105}, {"input": [-25.0, -46.5], "expected": -24.999999999540094}, {"input": [-25.0, -46.0], "expected": -24.999999999241744}, {"input": [-25.0, -45.5], "expected": -24.999999998749846}, {"input": [-25.0, -45.0], "expected": -24.999999997938847}, {"input": [-25.0, -44.5], "expected": -24.999999996601733}, {"input": [-25.0, -44.0], "expected": -24.999999994397204}, {"input": [-25.0, -43.5], "expected": -24.99999999076255}, {"input": [-25.0, -43.0], "expected": -24.99999998477002}, {"input": [-25.0, -42.5], "expected": -24.99999997489001}, {"input": [-25.0, -42.0], "expected": -24.999999958600625}, {"input": [-25.0, -41.5], "expected": -24.999999931743968}, {"input": [-25.0, -41.0], "expected": -24.99999988746483}, {"input": [-25.0, -40.5], "expected": -24.99999981446088}, {"input": [-25.0, -40.0], "expected": -24.999999694097728}, {"input": [-25.0, -39.5], "expected": -24.999999495652464}, {"input": [-25.0, -39.0], "expected": -24.999999168471625}, {"input": [-25.0, -38.5], "expected": -24.999998629041855}, {"input": [-25.0, -38.0], "expected": -24.999997739673148}, {"input": [-25.0, -37.5], "expected": -24.999996273353773}, {"input": [-25.0, -37.0], "expected": -24.999993855806522}, {"input": [-25.0, -36.5], "expected": -24.99998986995771}, {"input": [-25.0, -36.0], "expected": -24.999983298438682}, {"input": [-25.0, -35.5], "expected": -24.999972463929772}, {"input": [-25.0, -35.0], "expected": -24.999954601100782}, {"input": [-25.0, -34.5], "expected": -24.99992515097137}, {"input": [-25.0, -34.0], "expected": -24.999876597810278}, {"input": [-25.0, -33.5], "expected": -24.999796552327872}, {"input": [-25.0, -33.0], "expected": -24.999664593627106}, {"input": [-25.0, -32.5], "expected": -24.99944706852464}, {"input": [-25.0, -32.0], "expected": -24.999088533546225}, {"input": [-25.0, -31.5], "expected": -24.998497689840246}, {"input": [-25.0, -31.0], "expected": -24.997524314862268}, {"input": [-25.0, -30.5], "expected": -24.995921556729428}, {"input": [-25.0, -30.0], "expected": -24.993284651510884}, {"input": [-25.0, -29.5], "expected": -24.988952255151407}, {"input": [-25.0, -29.0], "expected": -24.98185007208219}, {"input": [-25.0, -28.5], "expected": -24.97024958172738}, {"input": [-25.0, -28.0], "expected": -24.951412648426256}, {"input": [-25.0, -27.5], "expected": -24.92111026570745}, {"input": [-25.0, -27.0], "expected": -24.873071988957026}, {"input": [-25.0, -26.5], "expected": -24.798586722017248}, {"input": [-25.0, -26.0], "expected": -24.686738312481776}, {"input": [-25.0, -25.5], "expected": -24.52592301581989}, {"input": [-25.0, -25.0], "expected": -24.306852819440056}, {"input": [-25.0, -24.5], "expected": -24.02592301581989}, {"input": [-25.0, -24.0], "expected": -23.686738312481776}, {"input": [-25.0, -23.5], "expected": -23.298586722017248}, {"input": [-25.0, -23.0], "expected": -22.873071988957026}, {"input": [-25.0, -22.5], "expected": -22.42111026570745}, {"input": [-25.0, -22.0], "expected": -21.951412648426256}, {"input": [-25.0, -21.5], "expected": -21.47024958172738}, {"input": [-25.0, -21.0], "expected": -20.98185007208219}, {"input": [-25.0, -20.5], "expected": -20.488952255151407}, {"input": [-25.0, -20.0], "expected": -19.993284651510884}, {"input": [-25.0, -19.5], "expected": -19.495921556729428}, {"input": [-25.0, -19.0], "expected": -18.997524314862268}, {"input": [-25.0, -18.5], "expected": -18.498497689840246}, {"input": [-25.0, -18.0], "expected": -17.999088533546225}, {"input": [-25.0, -17.5], "expected": -17.49944706852464}, {"input": [-25.0, -17.0], "expected": -16.999664593627106}, {"input": [-25.0, -16.5], "expected": -16.499796552327872}, {"input": [-25.0, -16.0], "expected": -15.999876597810276}, {"input": [-25.0, -15.5], "expected": -15.499925150971372}, {"input": [-25.0, -15.0], "expected": -14.999954601100782}, {"input": [-25.0, -14.5], "expected": -14.49997246392977}, {"input": [-25.0, -14.0], "expected": -13.999983298438682}, {"input": [-25.0, -13.5], "expected": -13.49998986995771}, {"input": [-25.0, -13.0], "expected": -12.999993855806522}, {"input": [-25.0, -12.5], "expected": -12.499996273353771}, {"input": [-25.0, -12.0], "expected": -11.999997739673148}, {"input": [-25.0, -11.5], "expected": -11.499998629041853}, {"input": [-25.0, -11.0], "expected": -10.999999168471627}, {"input": [-25.0, -10.5], "expected": -10.499999495652464}, {"input": [-25.0, -10.0], "expected": -9.999999694097726}, {"input": [-25.0, -9.5], "expected": -9.499999814460882}, {"input": [-25.0, -9.0], "expected": -8.999999887464831}, {"input": [-25.0, -8.5], "expected": -8.499999931743968}, {"input": [-25.0, -8.0], "expected": -7.999999958600624}, {"input": [-25.0, -7.5], "expected": -7.499999974890009}, {"input": [-25.0, -7.0], "expected": -6.99999998477002}, {"input": [-25.0, -6.5], "expected": -6.49999999076255}, {"input": [-25.0, -6.0], "expected": -5.9999999943972036}, {"input": [-25.0, -5.5], "expected": -5.4999999966017326}, {"input": [-25.0, -5.0], "expected": -4.999999997938846}, {"input": [-25.0, -4.5], "expected": -4.499999998749847}, {"input": [-25.0, -4.0], "expected": -3.999999999241744}, {"input": [-25.0, -3.5], "expected": -3.4999999995400946}, {"input": [-25.0, -3.0], "expected": -2.9999999997210534}, {"input": [-25.0, -2.5], "expected": -2.49999999983081}, {"input": [-25.0, -2.0], "expected": -1.9999999998973812}, {"input": [-25.0, -1.5], "expected": -1.4999999999377585}, {"input": [-25.0, -1.0], "expected": -0.9999999999622486}, {"input": [-25.0, -0.5], "expected": -0.49999999997710265}, {"input": [-25.0, 0.0], "expected": 1.3887943864867583e-11}, {"input": [-25.0, 0.5], "expected": 0.5000000000084235}, {"input": [-25.0, 1.0], "expected": 1.000000000005109}, {"input": [-25.0, 1.5], "expected": 1.5000000000030989}, {"input": [-25.0, 2.0], "expected": 2.0000000000018794}, {"input": [-25.0, 2.5], "expected": 2.50000000000114}, {"input": [-25.0, 3.0], "expected": 3.0000000000006914}, {"input": [-25.0, 3.5], "expected": 3.500000000000419}, {"input": [-25.0, 4.0], "expected": 4.000000000000254}, {"input": [-25.0, 4.5], "expected": 4.5000000000001545}, {"input": [-25.0, 5.0], "expected": 5.000000000000093}, {"input": [-25.0, 5.5], "expected": 5.500000000000057}, {"input": [-25.0, 6.0], "expected": 6.000000000000035}, {"input": [-25.0, 6.5], "expected": 6.500000000000021}, {"input": [-25.0, 7.0], "expected": 7.000000000000012}, {"input": [-25.0, 7.5], "expected": 7.500000000000008}, {"input": [-25.0, 8.0], "expected": 8.000000000000005}, {"input": [-25.0, 8.5], "expected": 8.500000000000004}, {"input": [-25.0, 9.0], "expected": 9.000000000000002}, {"input": [-25.0, 9.5], "expected": 9.500000000000002}, {"input": [-25.0, 10.0], "expected": 10.0}, {"input": [-25.0, 10.5], "expected": 10.5}, {"input": [-25.0, 11.0], "expected": 11.0}, {"input": [-25.0, 11.5], "expected": 11.5}, {"input": [-25.0, 12.0], "expected": 12.0}, {"input": [-25.0, 12.5], "expected": 12.5}, {"input": [-25.0, 13.0], "expected": 13.0}, {"input": [-25.0, 13.5], "expected": 13.5}, {"input": [-25.0, 14.0], "expected": 14.0}, {"input": [-25.0, 14.5], "expected": 14.5}, {"input": [-25.0, 15.0], "expected": 15.0}, {"input": [-25.0, 15.5], "expected": 15.5}, {"input": [-25.0, 16.0], "expected": 16.0}, {"input": [-25.0, 16.5], "expected": 16.5}, {"input": [-25.0, 17.0], "expected": 17.0}, {"input": [-25.0, 17.5], "expected": 17.5}, {"input": [-25.0, 18.0], "expected": 18.0}, {"input": [-25.0, 18.5], "expected": 18.5}, {"input": [-25.0, 19.0], "expected": 19.0}, {"input": [-25.0, 19.5], "expected": 19.5}, {"input": [-25.0, 20.0], "expected": 20.0}, {"input": [-25.0, 20.5], "expected": 20.5}, {"input": [-25.0, 21.0], "expected": 21.0}, {"input": [-25.0, 21.5], "expected": 21.5}, {"input": [-25.0, 22.0], "expected": 22.0}, {"input": [-25.0, 22.5], "expected": 22.5}, {"input": [-25.0, 23.0], "expected": 23.0}, {"input": [-25.0, 23.5], "expected": 23.5}, {"input": [-25.0, 24.0], "expected": 24.0}, {"input": [-25.0, 24.5], "expected": 24.5}, {"input": [-25.0, 25.0], "expected": 25.0}, {"input": [-25.0, 25.5], "expected": 25.5}, {"input": [-25.0, 26.0], "expected": 26.0}, {"input": [-25.0, 26.5], "expected": 26.5}, {"input": [-25.0, 27.0], "expected": 27.0}, {"input": [-25.0, 27.5], "expected": 27.5}, {"input": [-25.0, 28.0], "expected": 28.0}, {"input": [-25.0, 28.5], "expected": 28.5}, {"input": [-25.0, 29.0], "expected": 29.0}, {"input": [-25.0, 29.5], "expected": 29.5}, {"input": [-25.0, 30.0], "expected": 30.0}, {"input": [-25.0, 30.5], "expected": 30.5}, {"input": [-25.0, 31.0], "expected": 31.0}, {"input": [-25.0, 31.5], "expected": 31.5}, {"input": [-25.0, 32.0], "expected": 32.0}, {"input": [-25.0, 32.5], "expected": 32.5}, {"input": [-25.0, 33.0], "expected": 33.0}, {"input": [-25.0, 33.5], "expected": 33.5}, {"input": [-25.0, 34.0], "expected": 34.0}, {"input": [-25.0, 34.5], "expected": 34.5}, {"input": [-25.0, 35.0], "expected": 35.0}, {"input": [-25.0, 35.5], "expected": 35.5}, {"input": [-25.0, 36.0], "expected": 36.0}, {"input": [-25.0, 36.5], "expected": 36.5}, {"input": [-25.0, 37.0], "expected": 37.0}, {"input": [-25.0, 37.5], "expected": 37.5}, {"input": [-25.0, 38.0], "expected": 38.0}, {"input": [-25.0, 38.5], "expected": 38.5}, {"input": [-25.0, 39.0], "expected": 39.0}, {"input": [-25.0, 39.5], "expected": 39.5}, {"input": [-25.0, 40.0], "expected": 40.0}, {"input": [-25.0, 40.5], "expected": 40.5}, {"input": [-25.0, 41.0], "expected": 41.0}, {"input": [-25.0, 41.5], "expected": 41.5}, {"input": [-25.0, 42.0], "expected": 42.0}, {"input": [-25.0, 42.5], "expected": 42.5}, {"input": [-25.0, 43.0], "expected": 43.0}, {"input": [-25.0, 43.5], "expected": 43.5}, {"input": [-25.0, 44.0], "expected": 44.0}, {"input": [-25.0, 44.5], "expected": 44.5}, {"input": [-25.0, 45.0], "expected": 45.0}, {"input": [-25.0, 45.5], "expected": 45.5}, {"input": [-25.0, 46.0], "expected": 46.0}, {"input": [-25.0, 46.5], "expected": 46.5}, {"input": [-25.0, 47.0], "expected": 47.0}, {"input": [-25.0, 47.5], "expected": 47.5}, {"input": [-25.0, 48.0], "expected": 48.0}, {"input": [-25.0, 48.5], "expected": 48.5}, {"input": [-25.0, 49.0], "expected": 49.0}, {"input": [-25.0, 49.5], "expected": 49.5}, {"input": [-25.0, 50.0], "expected": 50.0}, {"input": [-25.0, 50.5], "expected": 50.5}, {"input": [-25.0, 51.0], "expected": 51.0}, {"input": [-25.0, 51.5], "expected": 51.5}, {"input": [-25.0, 52.0], "expected": 52.0}, {"input": [-25.0, 52.5], "expected": 52.5}, {"input": [-25.0, 53.0], "expected": 53.0}, {"input": [-25.0, 53.5], "expected": 53.5}, {"input": [-25.0, 54.0], "expected": 54.0}, {"input": [-25.0, 54.5], "expected": 54.5}, {"input": [-25.0, 55.0], "expected": 55.0}, {"input": [-25.0, 55.5], "expected": 55.5}, {"input": [-25.0, 56.0], "expected": 56.0}, {"input": [-25.0, 56.5], "expected": 56.5}, {"input": [-25.0, 57.0], "expected": 57.0}, {"input": [-25.0, 57.5], "expected": 57.5}, {"input": [-25.0, 58.0], "expected": 58.0}, {"input": [-25.0, 58.5], "expected": 58.5}, {"input": [-25.0, 59.0], "expected": 59.0}, {"input": [-25.0, 59.5], "expected": 59.5}, {"input": [-25.0, 60.0], "expected": 60.0}, {"input": [-25.0, 60.5], "expected": 60.5}, {"input": [-25.0, 61.0], "expected": 61.0}, {"input": [-25.0, 61.5], "expected": 61.5}, {"input": [-25.0, 62.0], "expected": 62.0}, {"input": [-25.0, 62.5], "expected": 62.5}, {"input": [-25.0, 63.0], "expected": 63.0}, {"input": [-25.0, 63.5], "expected": 63.5}, {"input": [-25.0, 64.0], "expected": 64.0}, {"input": [-25.0, 64.5], "expected": 64.5}, {"input": [-25.0, 65.0], "expected": 65.0}, {"input": [-25.0, 65.5], "expected": 65.5}, {"input": [-25.0, 66.0], "expected": 66.0}, {"input": [-25.0, 66.5], "expected": 66.5}, {"input": [-25.0, 67.0], "expected": 67.0}, {"input": [-25.0, 67.5], "expected": 67.5}, {"input": [-25.0, 68.0], "expected": 68.0}, {"input": [-25.0, 68.5], "expected": 68.5}, {"input": [-25.0, 69.0], "expected": 69.0}, {"input": [-25.0, 69.5], "expected": 69.5}, {"input": [-25.0, 70.0], "expected": 70.0}, {"input": [-25.0, 70.5], "expected": 70.5}, {"input": [-25.0, 71.0], "expected": 71.0}, {"input": [-25.0, 71.5], "expected": 71.5}, {"input": [-25.0, 72.0], "expected": 72.0}, {"input": [-25.0, 72.5], "expected": 72.5}, {"input": [-25.0, 73.0], "expected": 73.0}, {"input": [-25.0, 73.5], "expected": 73.5}, {"input": [-25.0, 74.0], "expected": 74.0}, {"input": [-25.0, 74.5], "expected": 74.5}, {"input": [-25.0, 75.0], "expected": 75.0}, {"input": [-25.0, 75.5], "expected": 75.5}, {"input": [-25.0, 76.0], "expected": 76.0}, {"input": [-25.0, 76.5], "expected": 76.5}, {"input": [-25.0, 77.0], "expected": 77.0}, {"input": [-25.0, 77.5], "expected": 77.5}, {"input": [-25.0, 78.0], "expected": 78.0}, {"input": [-25.0, 78.5], "expected": 78.5}, {"input": [-25.0, 79.0], "expected": 79.0}, {"input": [-25.0, 79.5], "expected": 79.5}, {"input": [-25.0, 80.0], "expected": 80.0}, {"input": [-25.0, 80.5], "expected": 80.5}, {"input": [-25.0, 81.0], "expected": 81.0}, {"input": [-25.0, 81.5], "expected": 81.5}, {"input": [-25.0, 82.0], "expected": 82.0}, {"input": [-25.0, 82.5], "expected": 82.5}, {"input": [-25.0, 83.0], "expected": 83.0}, {"input": [-25.0, 83.5], "expected": 83.5}, {"input": [-25.0, 84.0], "expected": 84.0}, {"input": [-25.0, 84.5], "expected": 84.5}, {"input": [-25.0, 85.0], "expected": 85.0}, {"input": [-25.0, 85.5], "expected": 85.5}, {"input": [-25.0, 86.0], "expected": 86.0}, {"input": [-25.0, 86.5], "expected": 86.5}, {"input": [-25.0, 87.0], "expected": 87.0}, {"input": [-25.0, 87.5], "expected": 87.5}, {"input": [-25.0, 88.0], "expected": 88.0}, {"input": [-25.0, 88.5], "expected": 88.5}, {"input": [-25.0, 89.0], "expected": 89.0}, {"input": [-25.0, 89.5], "expected": 89.5}, {"input": [-25.0, 90.0], "expected": 90.0}, {"input": [-25.0, 90.5], "expected": 90.5}, {"input": [-25.0, 91.0], "expected": 91.0}, {"input": [-25.0, 91.5], "expected": 91.5}, {"input": [-25.0, 92.0], "expected": 92.0}, {"input": [-25.0, 92.5], "expected": 92.5}, {"input": [-25.0, 93.0], "expected": 93.0}, {"input": [-25.0, 93.5], "expected": 93.5}, {"input": [-25.0, 94.0], "expected": 94.0}, {"input": [-25.0, 94.5], "expected": 94.5}, {"input": [-25.0, 95.0], "expected": 95.0}, {"input": [-25.0, 95.5], "expected": 95.5}, {"input": [-25.0, 96.0], "expected": 96.0}, {"input": [-25.0, 96.5], "expected": 96.5}, {"input": [-25.0, 97.0], "expected": 97.0}, {"input": [-25.0, 97.5], "expected": 97.5}, {"input": [-25.0, 98.0], "expected": 98.0}, {"input": [-25.0, 98.5], "expected": 98.5}, {"input": [-25.0, 99.0], "expected": 99.0}, {"input": [-25.0, 99.5], "expected": 99.5}, {"input": [-24.5, -100.0], "expected": -24.5}, {"input": [-24.5, -99.5], "expected": -24.5}, {"input": [-24.5, -99.0], "expected": -24.5}, {"input": [-24.5, -98.5], "expected": -24.5}, {"input": [-24.5, -98.0], "expected": -24.5}, {"input": [-24.5, -97.5], "expected": -24.5}, {"input": [-24.5, -97.0], "expected": -24.5}, {"input": [-24.5, -96.5], "expected": -24.5}, {"input": [-24.5, -96.0], "expected": -24.5}, {"input": [-24.5, -95.5], "expected": -24.5}, {"input": [-24.5, -95.0], "expected": -24.5}, {"input": [-24.5, -94.5], "expected": -24.5}, {"input": [-24.5, -94.0], "expected": -24.5}, {"input": [-24.5, -93.5], "expected": -24.5}, {"input": [-24.5, -93.0], "expected": -24.5}, {"input": [-24.5, -92.5], "expected": -24.5}, {"input": [-24.5, -92.0], "expected": -24.5}, {"input": [-24.5, -91.5], "expected": -24.5}, {"input": [-24.5, -91.0], "expected": -24.5}, {"input": [-24.5, -90.5], "expected": -24.5}, {"input": [-24.5, -90.0], "expected": -24.5}, {"input": [-24.5, -89.5], "expected": -24.5}, {"input": [-24.5, -89.0], "expected": -24.5}, {"input": [-24.5, -88.5], "expected": -24.5}, {"input": [-24.5, -88.0], "expected": -24.5}, {"input": [-24.5, -87.5], "expected": -24.5}, {"input": [-24.5, -87.0], "expected": -24.5}, {"input": [-24.5, -86.5], "expected": -24.5}, {"input": [-24.5, -86.0], "expected": -24.5}, {"input": [-24.5, -85.5], "expected": -24.5}, {"input": [-24.5, -85.0], "expected": -24.5}, {"input": [-24.5, -84.5], "expected": -24.5}, {"input": [-24.5, -84.0], "expected": -24.5}, {"input": [-24.5, -83.5], "expected": -24.5}, {"input": [-24.5, -83.0], "expected": -24.5}, {"input": [-24.5, -82.5], "expected": -24.5}, {"input": [-24.5, -82.0], "expected": -24.5}, {"input": [-24.5, -81.5], "expected": -24.5}, {"input": [-24.5, -81.0], "expected": -24.5}, {"input": [-24.5, -80.5], "expected": -24.5}, {"input": [-24.5, -80.0], "expected": -24.5}, {"input": [-24.5, -79.5], "expected": -24.5}, {"input": [-24.5, -79.0], "expected": -24.5}, {"input": [-24.5, -78.5], "expected": -24.5}, {"input": [-24.5, -78.0], "expected": -24.5}, {"input": [-24.5, -77.5], "expected": -24.5}, {"input": [-24.5, -77.0], "expected": -24.5}, {"input": [-24.5, -76.5], "expected": -24.5}, {"input": [-24.5, -76.0], "expected": -24.5}, {"input": [-24.5, -75.5], "expected": -24.5}, {"input": [-24.5, -75.0], "expected": -24.5}, {"input": [-24.5, -74.5], "expected": -24.5}, {"input": [-24.5, -74.0], "expected": -24.5}, {"input": [-24.5, -73.5], "expected": -24.5}, {"input": [-24.5, -73.0], "expected": -24.5}, {"input": [-24.5, -72.5], "expected": -24.5}, {"input": [-24.5, -72.0], "expected": -24.5}, {"input": [-24.5, -71.5], "expected": -24.5}, {"input": [-24.5, -71.0], "expected": -24.5}, {"input": [-24.5, -70.5], "expected": -24.5}, {"input": [-24.5, -70.0], "expected": -24.5}, {"input": [-24.5, -69.5], "expected": -24.5}, {"input": [-24.5, -69.0], "expected": -24.5}, {"input": [-24.5, -68.5], "expected": -24.5}, {"input": [-24.5, -68.0], "expected": -24.5}, {"input": [-24.5, -67.5], "expected": -24.5}, {"input": [-24.5, -67.0], "expected": -24.5}, {"input": [-24.5, -66.5], "expected": -24.5}, {"input": [-24.5, -66.0], "expected": -24.5}, {"input": [-24.5, -65.5], "expected": -24.5}, {"input": [-24.5, -65.0], "expected": -24.5}, {"input": [-24.5, -64.5], "expected": -24.5}, {"input": [-24.5, -64.0], "expected": -24.5}, {"input": [-24.5, -63.5], "expected": -24.5}, {"input": [-24.5, -63.0], "expected": -24.5}, {"input": [-24.5, -62.5], "expected": -24.5}, {"input": [-24.5, -62.0], "expected": -24.5}, {"input": [-24.5, -61.5], "expected": -24.5}, {"input": [-24.5, -61.0], "expected": -24.5}, {"input": [-24.5, -60.5], "expected": -24.5}, {"input": [-24.5, -60.0], "expected": -24.5}, {"input": [-24.5, -59.5], "expected": -24.5}, {"input": [-24.5, -59.0], "expected": -24.5}, {"input": [-24.5, -58.5], "expected": -24.5}, {"input": [-24.5, -58.0], "expected": -24.499999999999996}, {"input": [-24.5, -57.5], "expected": -24.499999999999996}, {"input": [-24.5, -57.0], "expected": -24.499999999999993}, {"input": [-24.5, -56.5], "expected": -24.499999999999986}, {"input": [-24.5, -56.0], "expected": -24.49999999999998}, {"input": [-24.5, -55.5], "expected": -24.499999999999964}, {"input": [-24.5, -55.0], "expected": -24.499999999999943}, {"input": [-24.5, -54.5], "expected": -24.499999999999908}, {"input": [-24.5, -54.0], "expected": -24.499999999999847}, {"input": [-24.5, -53.5], "expected": -24.499999999999744}, {"input": [-24.5, -53.0], "expected": -24.49999999999958}, {"input": [-24.5, -52.5], "expected": -24.499999999999307}, {"input": [-24.5, -52.0], "expected": -24.49999999999886}, {"input": [-24.5, -51.5], "expected": -24.49999999999812}, {"input": [-24.5, -51.0], "expected": -24.499999999996902}, {"input": [-24.5, -50.5], "expected": -24.49999999999489}, {"input": [-24.5, -50.0], "expected": -24.499999999991577}, {"input": [-24.5, -49.5], "expected": -24.499999999986112}, {"input": [-24.5, -49.0], "expected": -24.499999999977103}, {"input": [-24.5, -48.5], "expected": -24.49999999996225}, {"input": [-24.5, -48.0], "expected": -24.49999999993776}, {"input": [-24.5, -47.5], "expected": -24.49999999989738}, {"input": [-24.5, -47.0], "expected": -24.49999999983081}, {"input": [-24.5, -46.5], "expected": -24.49999999972105}, {"input": [-24.5, -46.0], "expected": -24.499999999540094}, {"input": [-24.5, -45.5], "expected": -24.499999999241744}, {"input": [-24.5, -45.0], "expected": -24.499999998749846}, {"input": [-24.5, -44.5], "expected": -24.499999997938847}, {"input": [-24.5, -44.0], "expected": -24.499999996601733}, {"input": [-24.5, -43.5], "expected": -24.499999994397204}, {"input": [-24.5, -43.0], "expected": -24.49999999076255}, {"input": [-24.5, -42.5], "expected": -24.49999998477002}, {"input": [-24.5, -42.0], "expected": -24.49999997489001}, {"input": [-24.5, -41.5], "expected": -24.499999958600625}, {"input": [-24.5, -41.0], "expected": -24.499999931743968}, {"input": [-24.5, -40.5], "expected": -24.49999988746483}, {"input": [-24.5, -40.0], "expected": -24.49999981446088}, {"input": [-24.5, -39.5], "expected": -24.499999694097728}, {"input": [-24.5, -39.0], "expected": -24.499999495652464}, {"input": [-24.5, -38.5], "expected": -24.499999168471625}, {"input": [-24.5, -38.0], "expected": -24.499998629041855}, {"input": [-24.5, -37.5], "expected": -24.499997739673148}, {"input": [-24.5, -37.0], "expected": -24.499996273353773}, {"input": [-24.5, -36.5], "expected": -24.499993855806522}, {"input": [-24.5, -36.0], "expected": -24.49998986995771}, {"input": [-24.5, -35.5], "expected": -24.499983298438682}, {"input": [-24.5, -35.0], "expected": -24.499972463929772}, {"input": [-24.5, -34.5], "expected": -24.499954601100782}, {"input": [-24.5, -34.0], "expected": -24.49992515097137}, {"input": [-24.5, -33.5], "expected": -24.499876597810278}, {"input": [-24.5, -33.0], "expected": -24.499796552327872}, {"input": [-24.5, -32.5], "expected": -24.499664593627106}, {"input": [-24.5, -32.0], "expected": -24.49944706852464}, {"input": [-24.5, -31.5], "expected": -24.499088533546225}, {"input": [-24.5, -31.0], "expected": -24.498497689840246}, {"input": [-24.5, -30.5], "expected": -24.497524314862268}, {"input": [-24.5, -30.0], "expected": -24.495921556729428}, {"input": [-24.5, -29.5], "expected": -24.493284651510884}, {"input": [-24.5, -29.0], "expected": -24.488952255151407}, {"input": [-24.5, -28.5], "expected": -24.48185007208219}, {"input": [-24.5, -28.0], "expected": -24.47024958172738}, {"input": [-24.5, -27.5], "expected": -24.451412648426256}, {"input": [-24.5, -27.0], "expected": -24.42111026570745}, {"input": [-24.5, -26.5], "expected": -24.373071988957026}, {"input": [-24.5, -26.0], "expected": -24.298586722017248}, {"input": [-24.5, -25.5], "expected": -24.186738312481776}, {"input": [-24.5, -25.0], "expected": -24.02592301581989}, {"input": [-24.5, -24.5], "expected": -23.806852819440056}, {"input": [-24.5, -24.0], "expected": -23.52592301581989}, {"input": [-24.5, -23.5], "expected": -23.186738312481776}, {"input": [-24.5, -23.0], "expected": -22.798586722017248}, {"input": [-24.5, -22.5], "expected": -22.373071988957026}, {"input": [-24.5, -22.0], "expected": -21.92111026570745}, {"input": [-24.5, -21.5], "expected": -21.451412648426256}, {"input": [-24.5, -21.0], "expected": -20.97024958172738}, {"input": [-24.5, -20.5], "expected": -20.48185007208219}, {"input": [-24.5, -20.0], "expected": -19.988952255151407}, {"input": [-24.5, -19.5], "expected": -19.493284651510884}, {"input": [-24.5, -19.0], "expected": -18.995921556729428}, {"input": [-24.5, -18.5], "expected": -18.497524314862268}, {"input": [-24.5, -18.0], "expected": -17.998497689840246}, {"input": [-24.5, -17.5], "expected": -17.499088533546225}, {"input": [-24.5, -17.0], "expected": -16.99944706852464}, {"input": [-24.5, -16.5], "expected": -16.499664593627106}, {"input": [-24.5, -16.0], "expected": -15.99979655232787}, {"input": [-24.5, -15.5], "expected": -15.499876597810276}, {"input": [-24.5, -15.0], "expected": -14.999925150971372}, {"input": [-24.5, -14.5], "expected": -14.499954601100782}, {"input": [-24.5, -14.0], "expected": -13.99997246392977}, {"input": [-24.5, -13.5], "expected": -13.499983298438682}, {"input": [-24.5, -13.0], "expected": -12.99998986995771}, {"input": [-24.5, -12.5], "expected": -12.499993855806522}, {"input": [-24.5, -12.0], "expected": -11.999996273353771}, {"input": [-24.5, -11.5], "expected": -11.499997739673148}, {"input": [-24.5, -11.0], "expected": -10.999998629041853}, {"input": [-24.5, -10.5], "expected": -10.499999168471627}, {"input": [-24.5, -10.0], "expected": -9.999999495652464}, {"input": [-24.5, -9.5], "expected": -9.499999694097726}, {"input": [-24.5, -9.0], "expected": -8.999999814460882}, {"input": [-24.5, -8.5], "expected": -8.499999887464831}, {"input": [-24.5, -8.0], "expected": -7.999999931743969}, {"input": [-24.5, -7.5], "expected": -7.499999958600624}, {"input": [-24.5, -7.0], "expected": -6.999999974890009}, {"input": [-24.5, -6.5], "expected": -6.49999998477002}, {"input": [-24.5, -6.0], "expected": -5.99999999076255}, {"input": [-24.5, -5.5], "expected": -5.4999999943972036}, {"input": [-24.5, -5.0], "expected": -4.9999999966017326}, {"input": [-24.5, -4.5], "expected": -4.499999997938846}, {"input": [-24.5, -4.0], "expected": -3.999999998749847}, {"input": [-24.5, -3.5], "expected": -3.499999999241744}, {"input": [-24.5, -3.0], "expected": -2.9999999995400946}, {"input": [-24.5, -2.5], "expected": -2.4999999997210534}, {"input": [-24.5, -2.0], "expected": -1.9999999998308102}, {"input": [-24.5, -1.5], "expected": -1.4999999998973812}, {"input": [-24.5, -1.0], "expected": -0.9999999999377586}, {"input": [-24.5, -0.5], "expected": -0.49999999996224864}, {"input": [-24.5, 0.0], "expected": 2.2897348456193385e-11}, {"input": [-24.5, 0.5], "expected": 0.5000000000138879}, {"input": [-24.5, 1.0], "expected": 1.0000000000084235}, {"input": [-24.5, 1.5], "expected": 1.500000000005109}, {"input": [-24.5, 2.0], "expected": 2.000000000003099}, {"input": [-24.5, 2.5], "expected": 2.5000000000018794}, {"input": [-24.5, 3.0], "expected": 3.00000000000114}, {"input": [-24.5, 3.5], "expected": 3.5000000000006914}, {"input": [-24.5, 4.0], "expected": 4.000000000000419}, {"input": [-24.5, 4.5], "expected": 4.500000000000254}, {"input": [-24.5, 5.0], "expected": 5.0000000000001545}, {"input": [-24.5, 5.5], "expected": 5.500000000000093}, {"input": [-24.5, 6.0], "expected": 6.000000000000057}, {"input": [-24.5, 6.5], "expected": 6.500000000000035}, {"input": [-24.5, 7.0], "expected": 7.000000000000021}, {"input": [-24.5, 7.5], "expected": 7.500000000000012}, {"input": [-24.5, 8.0], "expected": 8.000000000000007}, {"input": [-24.5, 8.5], "expected": 8.500000000000005}, {"input": [-24.5, 9.0], "expected": 9.000000000000004}, {"input": [-24.5, 9.5], "expected": 9.500000000000002}, {"input": [-24.5, 10.0], "expected": 10.000000000000002}, {"input": [-24.5, 10.5], "expected": 10.5}, {"input": [-24.5, 11.0], "expected": 11.0}, {"input": [-24.5, 11.5], "expected": 11.5}, {"input": [-24.5, 12.0], "expected": 12.0}, {"input": [-24.5, 12.5], "expected": 12.5}, {"input": [-24.5, 13.0], "expected": 13.0}, {"input": [-24.5, 13.5], "expected": 13.5}, {"input": [-24.5, 14.0], "expected": 14.0}, {"input": [-24.5, 14.5], "expected": 14.5}, {"input": [-24.5, 15.0], "expected": 15.0}, {"input": [-24.5, 15.5], "expected": 15.5}, {"input": [-24.5, 16.0], "expected": 16.0}, {"input": [-24.5, 16.5], "expected": 16.5}, {"input": [-24.5, 17.0], "expected": 17.0}, {"input": [-24.5, 17.5], "expected": 17.5}, {"input": [-24.5, 18.0], "expected": 18.0}, {"input": [-24.5, 18.5], "expected": 18.5}, {"input": [-24.5, 19.0], "expected": 19.0}, {"input": [-24.5, 19.5], "expected": 19.5}, {"input": [-24.5, 20.0], "expected": 20.0}, {"input": [-24.5, 20.5], "expected": 20.5}, {"input": [-24.5, 21.0], "expected": 21.0}, {"input": [-24.5, 21.5], "expected": 21.5}, {"input": [-24.5, 22.0], "expected": 22.0}, {"input": [-24.5, 22.5], "expected": 22.5}, {"input": [-24.5, 23.0], "expected": 23.0}, {"input": [-24.5, 23.5], "expected": 23.5}, {"input": [-24.5, 24.0], "expected": 24.0}, {"input": [-24.5, 24.5], "expected": 24.5}, {"input": [-24.5, 25.0], "expected": 25.0}, {"input": [-24.5, 25.5], "expected": 25.5}, {"input": [-24.5, 26.0], "expected": 26.0}, {"input": [-24.5, 26.5], "expected": 26.5}, {"input": [-24.5, 27.0], "expected": 27.0}, {"input": [-24.5, 27.5], "expected": 27.5}, {"input": [-24.5, 28.0], "expected": 28.0}, {"input": [-24.5, 28.5], "expected": 28.5}, {"input": [-24.5, 29.0], "expected": 29.0}, {"input": [-24.5, 29.5], "expected": 29.5}, {"input": [-24.5, 30.0], "expected": 30.0}, {"input": [-24.5, 30.5], "expected": 30.5}, {"input": [-24.5, 31.0], "expected": 31.0}, {"input": [-24.5, 31.5], "expected": 31.5}, {"input": [-24.5, 32.0], "expected": 32.0}, {"input": [-24.5, 32.5], "expected": 32.5}, {"input": [-24.5, 33.0], "expected": 33.0}, {"input": [-24.5, 33.5], "expected": 33.5}, {"input": [-24.5, 34.0], "expected": 34.0}, {"input": [-24.5, 34.5], "expected": 34.5}, {"input": [-24.5, 35.0], "expected": 35.0}, {"input": [-24.5, 35.5], "expected": 35.5}, {"input": [-24.5, 36.0], "expected": 36.0}, {"input": [-24.5, 36.5], "expected": 36.5}, {"input": [-24.5, 37.0], "expected": 37.0}, {"input": [-24.5, 37.5], "expected": 37.5}, {"input": [-24.5, 38.0], "expected": 38.0}, {"input": [-24.5, 38.5], "expected": 38.5}, {"input": [-24.5, 39.0], "expected": 39.0}, {"input": [-24.5, 39.5], "expected": 39.5}, {"input": [-24.5, 40.0], "expected": 40.0}, {"input": [-24.5, 40.5], "expected": 40.5}, {"input": [-24.5, 41.0], "expected": 41.0}, {"input": [-24.5, 41.5], "expected": 41.5}, {"input": [-24.5, 42.0], "expected": 42.0}, {"input": [-24.5, 42.5], "expected": 42.5}, {"input": [-24.5, 43.0], "expected": 43.0}, {"input": [-24.5, 43.5], "expected": 43.5}, {"input": [-24.5, 44.0], "expected": 44.0}, {"input": [-24.5, 44.5], "expected": 44.5}, {"input": [-24.5, 45.0], "expected": 45.0}, {"input": [-24.5, 45.5], "expected": 45.5}, {"input": [-24.5, 46.0], "expected": 46.0}, {"input": [-24.5, 46.5], "expected": 46.5}, {"input": [-24.5, 47.0], "expected": 47.0}, {"input": [-24.5, 47.5], "expected": 47.5}, {"input": [-24.5, 48.0], "expected": 48.0}, {"input": [-24.5, 48.5], "expected": 48.5}, {"input": [-24.5, 49.0], "expected": 49.0}, {"input": [-24.5, 49.5], "expected": 49.5}, {"input": [-24.5, 50.0], "expected": 50.0}, {"input": [-24.5, 50.5], "expected": 50.5}, {"input": [-24.5, 51.0], "expected": 51.0}, {"input": [-24.5, 51.5], "expected": 51.5}, {"input": [-24.5, 52.0], "expected": 52.0}, {"input": [-24.5, 52.5], "expected": 52.5}, {"input": [-24.5, 53.0], "expected": 53.0}, {"input": [-24.5, 53.5], "expected": 53.5}, {"input": [-24.5, 54.0], "expected": 54.0}, {"input": [-24.5, 54.5], "expected": 54.5}, {"input": [-24.5, 55.0], "expected": 55.0}, {"input": [-24.5, 55.5], "expected": 55.5}, {"input": [-24.5, 56.0], "expected": 56.0}, {"input": [-24.5, 56.5], "expected": 56.5}, {"input": [-24.5, 57.0], "expected": 57.0}, {"input": [-24.5, 57.5], "expected": 57.5}, {"input": [-24.5, 58.0], "expected": 58.0}, {"input": [-24.5, 58.5], "expected": 58.5}, {"input": [-24.5, 59.0], "expected": 59.0}, {"input": [-24.5, 59.5], "expected": 59.5}, {"input": [-24.5, 60.0], "expected": 60.0}, {"input": [-24.5, 60.5], "expected": 60.5}, {"input": [-24.5, 61.0], "expected": 61.0}, {"input": [-24.5, 61.5], "expected": 61.5}, {"input": [-24.5, 62.0], "expected": 62.0}, {"input": [-24.5, 62.5], "expected": 62.5}, {"input": [-24.5, 63.0], "expected": 63.0}, {"input": [-24.5, 63.5], "expected": 63.5}, {"input": [-24.5, 64.0], "expected": 64.0}, {"input": [-24.5, 64.5], "expected": 64.5}, {"input": [-24.5, 65.0], "expected": 65.0}, {"input": [-24.5, 65.5], "expected": 65.5}, {"input": [-24.5, 66.0], "expected": 66.0}, {"input": [-24.5, 66.5], "expected": 66.5}, {"input": [-24.5, 67.0], "expected": 67.0}, {"input": [-24.5, 67.5], "expected": 67.5}, {"input": [-24.5, 68.0], "expected": 68.0}, {"input": [-24.5, 68.5], "expected": 68.5}, {"input": [-24.5, 69.0], "expected": 69.0}, {"input": [-24.5, 69.5], "expected": 69.5}, {"input": [-24.5, 70.0], "expected": 70.0}, {"input": [-24.5, 70.5], "expected": 70.5}, {"input": [-24.5, 71.0], "expected": 71.0}, {"input": [-24.5, 71.5], "expected": 71.5}, {"input": [-24.5, 72.0], "expected": 72.0}, {"input": [-24.5, 72.5], "expected": 72.5}, {"input": [-24.5, 73.0], "expected": 73.0}, {"input": [-24.5, 73.5], "expected": 73.5}, {"input": [-24.5, 74.0], "expected": 74.0}, {"input": [-24.5, 74.5], "expected": 74.5}, {"input": [-24.5, 75.0], "expected": 75.0}, {"input": [-24.5, 75.5], "expected": 75.5}, {"input": [-24.5, 76.0], "expected": 76.0}, {"input": [-24.5, 76.5], "expected": 76.5}, {"input": [-24.5, 77.0], "expected": 77.0}, {"input": [-24.5, 77.5], "expected": 77.5}, {"input": [-24.5, 78.0], "expected": 78.0}, {"input": [-24.5, 78.5], "expected": 78.5}, {"input": [-24.5, 79.0], "expected": 79.0}, {"input": [-24.5, 79.5], "expected": 79.5}, {"input": [-24.5, 80.0], "expected": 80.0}, {"input": [-24.5, 80.5], "expected": 80.5}, {"input": [-24.5, 81.0], "expected": 81.0}, {"input": [-24.5, 81.5], "expected": 81.5}, {"input": [-24.5, 82.0], "expected": 82.0}, {"input": [-24.5, 82.5], "expected": 82.5}, {"input": [-24.5, 83.0], "expected": 83.0}, {"input": [-24.5, 83.5], "expected": 83.5}, {"input": [-24.5, 84.0], "expected": 84.0}, {"input": [-24.5, 84.5], "expected": 84.5}, {"input": [-24.5, 85.0], "expected": 85.0}, {"input": [-24.5, 85.5], "expected": 85.5}, {"input": [-24.5, 86.0], "expected": 86.0}, {"input": [-24.5, 86.5], "expected": 86.5}, {"input": [-24.5, 87.0], "expected": 87.0}, {"input": [-24.5, 87.5], "expected": 87.5}, {"input": [-24.5, 88.0], "expected": 88.0}, {"input": [-24.5, 88.5], "expected": 88.5}, {"input": [-24.5, 89.0], "expected": 89.0}, {"input": [-24.5, 89.5], "expected": 89.5}, {"input": [-24.5, 90.0], "expected": 90.0}, {"input": [-24.5, 90.5], "expected": 90.5}, {"input": [-24.5, 91.0], "expected": 91.0}, {"input": [-24.5, 91.5], "expected": 91.5}, {"input": [-24.5, 92.0], "expected": 92.0}, {"input": [-24.5, 92.5], "expected": 92.5}, {"input": [-24.5, 93.0], "expected": 93.0}, {"input": [-24.5, 93.5], "expected": 93.5}, {"input": [-24.5, 94.0], "expected": 94.0}, {"input": [-24.5, 94.5], "expected": 94.5}, {"input": [-24.5, 95.0], "expected": 95.0}, {"input": [-24.5, 95.5], "expected": 95.5}, {"input": [-24.5, 96.0], "expected": 96.0}, {"input": [-24.5, 96.5], "expected": 96.5}, {"input": [-24.5, 97.0], "expected": 97.0}, {"input": [-24.5, 97.5], "expected": 97.5}, {"input": [-24.5, 98.0], "expected": 98.0}, {"input": [-24.5, 98.5], "expected": 98.5}, {"input": [-24.5, 99.0], "expected": 99.0}, {"input": [-24.5, 99.5], "expected": 99.5}, {"input": [-24.0, -100.0], "expected": -24.0}, {"input": [-24.0, -99.5], "expected": -24.0}, {"input": [-24.0, -99.0], "expected": -24.0}, {"input": [-24.0, -98.5], "expected": -24.0}, {"input": [-24.0, -98.0], "expected": -24.0}, {"input": [-24.0, -97.5], "expected": -24.0}, {"input": [-24.0, -97.0], "expected": -24.0}, {"input": [-24.0, -96.5], "expected": -24.0}, {"input": [-24.0, -96.0], "expected": -24.0}, {"input": [-24.0, -95.5], "expected": -24.0}, {"input": [-24.0, -95.0], "expected": -24.0}, {"input": [-24.0, -94.5], "expected": -24.0}, {"input": [-24.0, -94.0], "expected": -24.0}, {"input": [-24.0, -93.5], "expected": -24.0}, {"input": [-24.0, -93.0], "expected": -24.0}, {"input": [-24.0, -92.5], "expected": -24.0}, {"input": [-24.0, -92.0], "expected": -24.0}, {"input": [-24.0, -91.5], "expected": -24.0}, {"input": [-24.0, -91.0], "expected": -24.0}, {"input": [-24.0, -90.5], "expected": -24.0}, {"input": [-24.0, -90.0], "expected": -24.0}, {"input": [-24.0, -89.5], "expected": -24.0}, {"input": [-24.0, -89.0], "expected": -24.0}, {"input": [-24.0, -88.5], "expected": -24.0}, {"input": [-24.0, -88.0], "expected": -24.0}, {"input": [-24.0, -87.5], "expected": -24.0}, {"input": [-24.0, -87.0], "expected": -24.0}, {"input": [-24.0, -86.5], "expected": -24.0}, {"input": [-24.0, -86.0], "expected": -24.0}, {"input": [-24.0, -85.5], "expected": -24.0}, {"input": [-24.0, -85.0], "expected": -24.0}, {"input": [-24.0, -84.5], "expected": -24.0}, {"input": [-24.0, -84.0], "expected": -24.0}, {"input": [-24.0, -83.5], "expected": -24.0}, {"input": [-24.0, -83.0], "expected": -24.0}, {"input": [-24.0, -82.5], "expected": -24.0}, {"input": [-24.0, -82.0], "expected": -24.0}, {"input": [-24.0, -81.5], "expected": -24.0}, {"input": [-24.0, -81.0], "expected": -24.0}, {"input": [-24.0, -80.5], "expected": -24.0}, {"input": [-24.0, -80.0], "expected": -24.0}, {"input": [-24.0, -79.5], "expected": -24.0}, {"input": [-24.0, -79.0], "expected": -24.0}, {"input": [-24.0, -78.5], "expected": -24.0}, {"input": [-24.0, -78.0], "expected": -24.0}, {"input": [-24.0, -77.5], "expected": -24.0}, {"input": [-24.0, -77.0], "expected": -24.0}, {"input": [-24.0, -76.5], "expected": -24.0}, {"input": [-24.0, -76.0], "expected": -24.0}, {"input": [-24.0, -75.5], "expected": -24.0}, {"input": [-24.0, -75.0], "expected": -24.0}, {"input": [-24.0, -74.5], "expected": -24.0}, {"input": [-24.0, -74.0], "expected": -24.0}, {"input": [-24.0, -73.5], "expected": -24.0}, {"input": [-24.0, -73.0], "expected": -24.0}, {"input": [-24.0, -72.5], "expected": -24.0}, {"input": [-24.0, -72.0], "expected": -24.0}, {"input": [-24.0, -71.5], "expected": -24.0}, {"input": [-24.0, -71.0], "expected": -24.0}, {"input": [-24.0, -70.5], "expected": -24.0}, {"input": [-24.0, -70.0], "expected": -24.0}, {"input": [-24.0, -69.5], "expected": -24.0}, {"input": [-24.0, -69.0], "expected": -24.0}, {"input": [-24.0, -68.5], "expected": -24.0}, {"input": [-24.0, -68.0], "expected": -24.0}, {"input": [-24.0, -67.5], "expected": -24.0}, {"input": [-24.0, -67.0], "expected": -24.0}, {"input": [-24.0, -66.5], "expected": -24.0}, {"input": [-24.0, -66.0], "expected": -24.0}, {"input": [-24.0, -65.5], "expected": -24.0}, {"input": [-24.0, -65.0], "expected": -24.0}, {"input": [-24.0, -64.5], "expected": -24.0}, {"input": [-24.0, -64.0], "expected": -24.0}, {"input": [-24.0, -63.5], "expected": -24.0}, {"input": [-24.0, -63.0], "expected": -24.0}, {"input": [-24.0, -62.5], "expected": -24.0}, {"input": [-24.0, -62.0], "expected": -24.0}, {"input": [-24.0, -61.5], "expected": -24.0}, {"input": [-24.0, -61.0], "expected": -24.0}, {"input": [-24.0, -60.5], "expected": -24.0}, {"input": [-24.0, -60.0], "expected": -24.0}, {"input": [-24.0, -59.5], "expected": -24.0}, {"input": [-24.0, -59.0], "expected": -24.0}, {"input": [-24.0, -58.5], "expected": -24.0}, {"input": [-24.0, -58.0], "expected": -24.0}, {"input": [-24.0, -57.5], "expected": -23.999999999999996}, {"input": [-24.0, -57.0], "expected": -23.999999999999996}, {"input": [-24.0, -56.5], "expected": -23.999999999999993}, {"input": [-24.0, -56.0], "expected": -23.999999999999986}, {"input": [-24.0, -55.5], "expected": -23.99999999999998}, {"input": [-24.0, -55.0], "expected": -23.999999999999964}, {"input": [-24.0, -54.5], "expected": -23.999999999999943}, {"input": [-24.0, -54.0], "expected": -23.999999999999908}, {"input": [-24.0, -53.5], "expected": -23.999999999999847}, {"input": [-24.0, -53.0], "expected": -23.999999999999744}, {"input": [-24.0, -52.5], "expected": -23.99999999999958}, {"input": [-24.0, -52.0], "expected": -23.999999999999307}, {"input": [-24.0, -51.5], "expected": -23.99999999999886}, {"input": [-24.0, -51.0], "expected": -23.99999999999812}, {"input": [-24.0, -50.5], "expected": -23.999999999996902}, {"input": [-24.0, -50.0], "expected": -23.99999999999489}, {"input": [-24.0, -49.5], "expected": -23.999999999991577}, {"input": [-24.0, -49.0], "expected": -23.999999999986112}, {"input": [-24.0, -48.5], "expected": -23.999999999977103}, {"input": [-24.0, -48.0], "expected": -23.99999999996225}, {"input": [-24.0, -47.5], "expected": -23.99999999993776}, {"input": [-24.0, -47.0], "expected": -23.99999999989738}, {"input": [-24.0, -46.5], "expected": -23.99999999983081}, {"input": [-24.0, -46.0], "expected": -23.99999999972105}, {"input": [-24.0, -45.5], "expected": -23.999999999540094}, {"input": [-24.0, -45.0], "expected": -23.999999999241744}, {"input": [-24.0, -44.5], "expected": -23.999999998749846}, {"input": [-24.0, -44.0], "expected": -23.999999997938847}, {"input": [-24.0, -43.5], "expected": -23.999999996601733}, {"input": [-24.0, -43.0], "expected": -23.999999994397204}, {"input": [-24.0, -42.5], "expected": -23.99999999076255}, {"input": [-24.0, -42.0], "expected": -23.99999998477002}, {"input": [-24.0, -41.5], "expected": -23.99999997489001}, {"input": [-24.0, -41.0], "expected": -23.999999958600625}, {"input": [-24.0, -40.5], "expected": -23.999999931743968}, {"input": [-24.0, -40.0], "expected": -23.99999988746483}, {"input": [-24.0, -39.5], "expected": -23.99999981446088}, {"input": [-24.0, -39.0], "expected": -23.999999694097728}, {"input": [-24.0, -38.5], "expected": -23.999999495652464}, {"input": [-24.0, -38.0], "expected": -23.999999168471625}, {"input": [-24.0, -37.5], "expected": -23.999998629041855}, {"input": [-24.0, -37.0], "expected": -23.999997739673148}, {"input": [-24.0, -36.5], "expected": -23.999996273353773}, {"input": [-24.0, -36.0], "expected": -23.999993855806522}, {"input": [-24.0, -35.5], "expected": -23.99998986995771}, {"input": [-24.0, -35.0], "expected": -23.999983298438682}, {"input": [-24.0, -34.5], "expected": -23.999972463929772}, {"input": [-24.0, -34.0], "expected": -23.999954601100782}, {"input": [-24.0, -33.5], "expected": -23.99992515097137}, {"input": [-24.0, -33.0], "expected": -23.999876597810278}, {"input": [-24.0, -32.5], "expected": -23.999796552327872}, {"input": [-24.0, -32.0], "expected": -23.999664593627106}, {"input": [-24.0, -31.5], "expected": -23.99944706852464}, {"input": [-24.0, -31.0], "expected": -23.999088533546225}, {"input": [-24.0, -30.5], "expected": -23.998497689840246}, {"input": [-24.0, -30.0], "expected": -23.997524314862268}, {"input": [-24.0, -29.5], "expected": -23.995921556729428}, {"input": [-24.0, -29.0], "expected": -23.993284651510884}, {"input": [-24.0, -28.5], "expected": -23.988952255151407}, {"input": [-24.0, -28.0], "expected": -23.98185007208219}, {"input": [-24.0, -27.5], "expected": -23.97024958172738}, {"input": [-24.0, -27.0], "expected": -23.951412648426256}, {"input": [-24.0, -26.5], "expected": -23.92111026570745}, {"input": [-24.0, -26.0], "expected": -23.873071988957026}, {"input": [-24.0, -25.5], "expected": -23.798586722017248}, {"input": [-24.0, -25.0], "expected": -23.686738312481776}, {"input": [-24.0, -24.5], "expected": -23.52592301581989}, {"input": [-24.0, -24.0], "expected": -23.306852819440056}, {"input": [-24.0, -23.5], "expected": -23.02592301581989}, {"input": [-24.0, -23.0], "expected": -22.686738312481776}, {"input": [-24.0, -22.5], "expected": -22.298586722017248}, {"input": [-24.0, -22.0], "expected": -21.873071988957026}, {"input": [-24.0, -21.5], "expected": -21.42111026570745}, {"input": [-24.0, -21.0], "expected": -20.951412648426256}, {"input": [-24.0, -20.5], "expected": -20.47024958172738}, {"input": [-24.0, -20.0], "expected": -19.98185007208219}, {"input": [-24.0, -19.5], "expected": -19.488952255151407}, {"input": [-24.0, -19.0], "expected": -18.993284651510884}, {"input": [-24.0, -18.5], "expected": -18.495921556729428}, {"input": [-24.0, -18.0], "expected": -17.997524314862268}, {"input": [-24.0, -17.5], "expected": -17.498497689840246}, {"input": [-24.0, -17.0], "expected": -16.999088533546225}, {"input": [-24.0, -16.5], "expected": -16.49944706852464}, {"input": [-24.0, -16.0], "expected": -15.999664593627104}, {"input": [-24.0, -15.5], "expected": -15.49979655232787}, {"input": [-24.0, -15.0], "expected": -14.999876597810276}, {"input": [-24.0, -14.5], "expected": -14.499925150971372}, {"input": [-24.0, -14.0], "expected": -13.999954601100782}, {"input": [-24.0, -13.5], "expected": -13.49997246392977}, {"input": [-24.0, -13.0], "expected": -12.999983298438682}, {"input": [-24.0, -12.5], "expected": -12.49998986995771}, {"input": [-24.0, -12.0], "expected": -11.999993855806522}, {"input": [-24.0, -11.5], "expected": -11.499996273353771}, {"input": [-24.0, -11.0], "expected": -10.999997739673148}, {"input": [-24.0, -10.5], "expected": -10.499998629041853}, {"input": [-24.0, -10.0], "expected": -9.999999168471627}, {"input": [-24.0, -9.5], "expected": -9.499999495652464}, {"input": [-24.0, -9.0], "expected": -8.999999694097726}, {"input": [-24.0, -8.5], "expected": -8.499999814460882}, {"input": [-24.0, -8.0], "expected": -7.999999887464831}, {"input": [-24.0, -7.5], "expected": -7.499999931743969}, {"input": [-24.0, -7.0], "expected": -6.999999958600624}, {"input": [-24.0, -6.5], "expected": -6.499999974890009}, {"input": [-24.0, -6.0], "expected": -5.99999998477002}, {"input": [-24.0, -5.5], "expected": -5.49999999076255}, {"input": [-24.0, -5.0], "expected": -4.9999999943972036}, {"input": [-24.0, -4.5], "expected": -4.4999999966017326}, {"input": [-24.0, -4.0], "expected": -3.9999999979388465}, {"input": [-24.0, -3.5], "expected": -3.499999998749847}, {"input": [-24.0, -3.0], "expected": -2.999999999241744}, {"input": [-24.0, -2.5], "expected": -2.4999999995400946}, {"input": [-24.0, -2.0], "expected": -1.9999999997210531}, {"input": [-24.0, -1.5], "expected": -1.4999999998308102}, {"input": [-24.0, -1.0], "expected": -0.9999999998973812}, {"input": [-24.0, -0.5], "expected": -0.49999999993775857}, {"input": [-24.0, 0.0], "expected": 3.7751345442078393e-11}, {"input": [-24.0, 0.5], "expected": 0.5000000000228974}, {"input": [-24.0, 1.0], "expected": 1.000000000013888}, {"input": [-24.0, 1.5], "expected": 1.5000000000084235}, {"input": [-24.0, 2.0], "expected": 2.0000000000051092}, {"input": [-24.0, 2.5], "expected": 2.500000000003099}, {"input": [-24.0, 3.0], "expected": 3.0000000000018794}, {"input": [-24.0, 3.5], "expected": 3.50000000000114}, {"input": [-24.0, 4.0], "expected": 4.000000000000691}, {"input": [-24.0, 4.5], "expected": 4.500000000000419}, {"input": [-24.0, 5.0], "expected": 5.000000000000254}, {"input": [-24.0, 5.5], "expected": 5.5000000000001545}, {"input": [-24.0, 6.0], "expected": 6.000000000000093}, {"input": [-24.0, 6.5], "expected": 6.500000000000057}, {"input": [-24.0, 7.0], "expected": 7.000000000000035}, {"input": [-24.0, 7.5], "expected": 7.500000000000021}, {"input": [-24.0, 8.0], "expected": 8.000000000000012}, {"input": [-24.0, 8.5], "expected": 8.500000000000007}, {"input": [-24.0, 9.0], "expected": 9.000000000000005}, {"input": [-24.0, 9.5], "expected": 9.500000000000004}, {"input": [-24.0, 10.0], "expected": 10.000000000000002}, {"input": [-24.0, 10.5], "expected": 10.500000000000002}, {"input": [-24.0, 11.0], "expected": 11.0}, {"input": [-24.0, 11.5], "expected": 11.5}, {"input": [-24.0, 12.0], "expected": 12.0}, {"input": [-24.0, 12.5], "expected": 12.5}, {"input": [-24.0, 13.0], "expected": 13.0}, {"input": [-24.0, 13.5], "expected": 13.5}, {"input": [-24.0, 14.0], "expected": 14.0}, {"input": [-24.0, 14.5], "expected": 14.5}, {"input": [-24.0, 15.0], "expected": 15.0}, {"input": [-24.0, 15.5], "expected": 15.5}, {"input": [-24.0, 16.0], "expected": 16.0}, {"input": [-24.0, 16.5], "expected": 16.5}, {"input": [-24.0, 17.0], "expected": 17.0}, {"input": [-24.0, 17.5], "expected": 17.5}, {"input": [-24.0, 18.0], "expected": 18.0}, {"input": [-24.0, 18.5], "expected": 18.5}, {"input": [-24.0, 19.0], "expected": 19.0}, {"input": [-24.0, 19.5], "expected": 19.5}, {"input": [-24.0, 20.0], "expected": 20.0}, {"input": [-24.0, 20.5], "expected": 20.5}, {"input": [-24.0, 21.0], "expected": 21.0}, {"input": [-24.0, 21.5], "expected": 21.5}, {"input": [-24.0, 22.0], "expected": 22.0}, {"input": [-24.0, 22.5], "expected": 22.5}, {"input": [-24.0, 23.0], "expected": 23.0}, {"input": [-24.0, 23.5], "expected": 23.5}, {"input": [-24.0, 24.0], "expected": 24.0}, {"input": [-24.0, 24.5], "expected": 24.5}, {"input": [-24.0, 25.0], "expected": 25.0}, {"input": [-24.0, 25.5], "expected": 25.5}, {"input": [-24.0, 26.0], "expected": 26.0}, {"input": [-24.0, 26.5], "expected": 26.5}, {"input": [-24.0, 27.0], "expected": 27.0}, {"input": [-24.0, 27.5], "expected": 27.5}, {"input": [-24.0, 28.0], "expected": 28.0}, {"input": [-24.0, 28.5], "expected": 28.5}, {"input": [-24.0, 29.0], "expected": 29.0}, {"input": [-24.0, 29.5], "expected": 29.5}, {"input": [-24.0, 30.0], "expected": 30.0}, {"input": [-24.0, 30.5], "expected": 30.5}, {"input": [-24.0, 31.0], "expected": 31.0}, {"input": [-24.0, 31.5], "expected": 31.5}, {"input": [-24.0, 32.0], "expected": 32.0}, {"input": [-24.0, 32.5], "expected": 32.5}, {"input": [-24.0, 33.0], "expected": 33.0}, {"input": [-24.0, 33.5], "expected": 33.5}, {"input": [-24.0, 34.0], "expected": 34.0}, {"input": [-24.0, 34.5], "expected": 34.5}, {"input": [-24.0, 35.0], "expected": 35.0}, {"input": [-24.0, 35.5], "expected": 35.5}, {"input": [-24.0, 36.0], "expected": 36.0}, {"input": [-24.0, 36.5], "expected": 36.5}, {"input": [-24.0, 37.0], "expected": 37.0}, {"input": [-24.0, 37.5], "expected": 37.5}, {"input": [-24.0, 38.0], "expected": 38.0}, {"input": [-24.0, 38.5], "expected": 38.5}, {"input": [-24.0, 39.0], "expected": 39.0}, {"input": [-24.0, 39.5], "expected": 39.5}, {"input": [-24.0, 40.0], "expected": 40.0}, {"input": [-24.0, 40.5], "expected": 40.5}, {"input": [-24.0, 41.0], "expected": 41.0}, {"input": [-24.0, 41.5], "expected": 41.5}, {"input": [-24.0, 42.0], "expected": 42.0}, {"input": [-24.0, 42.5], "expected": 42.5}, {"input": [-24.0, 43.0], "expected": 43.0}, {"input": [-24.0, 43.5], "expected": 43.5}, {"input": [-24.0, 44.0], "expected": 44.0}, {"input": [-24.0, 44.5], "expected": 44.5}, {"input": [-24.0, 45.0], "expected": 45.0}, {"input": [-24.0, 45.5], "expected": 45.5}, {"input": [-24.0, 46.0], "expected": 46.0}, {"input": [-24.0, 46.5], "expected": 46.5}, {"input": [-24.0, 47.0], "expected": 47.0}, {"input": [-24.0, 47.5], "expected": 47.5}, {"input": [-24.0, 48.0], "expected": 48.0}, {"input": [-24.0, 48.5], "expected": 48.5}, {"input": [-24.0, 49.0], "expected": 49.0}, {"input": [-24.0, 49.5], "expected": 49.5}, {"input": [-24.0, 50.0], "expected": 50.0}, {"input": [-24.0, 50.5], "expected": 50.5}, {"input": [-24.0, 51.0], "expected": 51.0}, {"input": [-24.0, 51.5], "expected": 51.5}, {"input": [-24.0, 52.0], "expected": 52.0}, {"input": [-24.0, 52.5], "expected": 52.5}, {"input": [-24.0, 53.0], "expected": 53.0}, {"input": [-24.0, 53.5], "expected": 53.5}, {"input": [-24.0, 54.0], "expected": 54.0}, {"input": [-24.0, 54.5], "expected": 54.5}, {"input": [-24.0, 55.0], "expected": 55.0}, {"input": [-24.0, 55.5], "expected": 55.5}, {"input": [-24.0, 56.0], "expected": 56.0}, {"input": [-24.0, 56.5], "expected": 56.5}, {"input": [-24.0, 57.0], "expected": 57.0}, {"input": [-24.0, 57.5], "expected": 57.5}, {"input": [-24.0, 58.0], "expected": 58.0}, {"input": [-24.0, 58.5], "expected": 58.5}, {"input": [-24.0, 59.0], "expected": 59.0}, {"input": [-24.0, 59.5], "expected": 59.5}, {"input": [-24.0, 60.0], "expected": 60.0}, {"input": [-24.0, 60.5], "expected": 60.5}, {"input": [-24.0, 61.0], "expected": 61.0}, {"input": [-24.0, 61.5], "expected": 61.5}, {"input": [-24.0, 62.0], "expected": 62.0}, {"input": [-24.0, 62.5], "expected": 62.5}, {"input": [-24.0, 63.0], "expected": 63.0}, {"input": [-24.0, 63.5], "expected": 63.5}, {"input": [-24.0, 64.0], "expected": 64.0}, {"input": [-24.0, 64.5], "expected": 64.5}, {"input": [-24.0, 65.0], "expected": 65.0}, {"input": [-24.0, 65.5], "expected": 65.5}, {"input": [-24.0, 66.0], "expected": 66.0}, {"input": [-24.0, 66.5], "expected": 66.5}, {"input": [-24.0, 67.0], "expected": 67.0}, {"input": [-24.0, 67.5], "expected": 67.5}, {"input": [-24.0, 68.0], "expected": 68.0}, {"input": [-24.0, 68.5], "expected": 68.5}, {"input": [-24.0, 69.0], "expected": 69.0}, {"input": [-24.0, 69.5], "expected": 69.5}, {"input": [-24.0, 70.0], "expected": 70.0}, {"input": [-24.0, 70.5], "expected": 70.5}, {"input": [-24.0, 71.0], "expected": 71.0}, {"input": [-24.0, 71.5], "expected": 71.5}, {"input": [-24.0, 72.0], "expected": 72.0}, {"input": [-24.0, 72.5], "expected": 72.5}, {"input": [-24.0, 73.0], "expected": 73.0}, {"input": [-24.0, 73.5], "expected": 73.5}, {"input": [-24.0, 74.0], "expected": 74.0}, {"input": [-24.0, 74.5], "expected": 74.5}, {"input": [-24.0, 75.0], "expected": 75.0}, {"input": [-24.0, 75.5], "expected": 75.5}, {"input": [-24.0, 76.0], "expected": 76.0}, {"input": [-24.0, 76.5], "expected": 76.5}, {"input": [-24.0, 77.0], "expected": 77.0}, {"input": [-24.0, 77.5], "expected": 77.5}, {"input": [-24.0, 78.0], "expected": 78.0}, {"input": [-24.0, 78.5], "expected": 78.5}, {"input": [-24.0, 79.0], "expected": 79.0}, {"input": [-24.0, 79.5], "expected": 79.5}, {"input": [-24.0, 80.0], "expected": 80.0}, {"input": [-24.0, 80.5], "expected": 80.5}, {"input": [-24.0, 81.0], "expected": 81.0}, {"input": [-24.0, 81.5], "expected": 81.5}, {"input": [-24.0, 82.0], "expected": 82.0}, {"input": [-24.0, 82.5], "expected": 82.5}, {"input": [-24.0, 83.0], "expected": 83.0}, {"input": [-24.0, 83.5], "expected": 83.5}, {"input": [-24.0, 84.0], "expected": 84.0}, {"input": [-24.0, 84.5], "expected": 84.5}, {"input": [-24.0, 85.0], "expected": 85.0}, {"input": [-24.0, 85.5], "expected": 85.5}, {"input": [-24.0, 86.0], "expected": 86.0}, {"input": [-24.0, 86.5], "expected": 86.5}, {"input": [-24.0, 87.0], "expected": 87.0}, {"input": [-24.0, 87.5], "expected": 87.5}, {"input": [-24.0, 88.0], "expected": 88.0}, {"input": [-24.0, 88.5], "expected": 88.5}, {"input": [-24.0, 89.0], "expected": 89.0}, {"input": [-24.0, 89.5], "expected": 89.5}, {"input": [-24.0, 90.0], "expected": 90.0}, {"input": [-24.0, 90.5], "expected": 90.5}, {"input": [-24.0, 91.0], "expected": 91.0}, {"input": [-24.0, 91.5], "expected": 91.5}, {"input": [-24.0, 92.0], "expected": 92.0}, {"input": [-24.0, 92.5], "expected": 92.5}, {"input": [-24.0, 93.0], "expected": 93.0}, {"input": [-24.0, 93.5], "expected": 93.5}, {"input": [-24.0, 94.0], "expected": 94.0}, {"input": [-24.0, 94.5], "expected": 94.5}, {"input": [-24.0, 95.0], "expected": 95.0}, {"input": [-24.0, 95.5], "expected": 95.5}, {"input": [-24.0, 96.0], "expected": 96.0}, {"input": [-24.0, 96.5], "expected": 96.5}, {"input": [-24.0, 97.0], "expected": 97.0}, {"input": [-24.0, 97.5], "expected": 97.5}, {"input": [-24.0, 98.0], "expected": 98.0}, {"input": [-24.0, 98.5], "expected": 98.5}, {"input": [-24.0, 99.0], "expected": 99.0}, {"input": [-24.0, 99.5], "expected": 99.5}, {"input": [-23.5, -100.0], "expected": -23.5}, {"input": [-23.5, -99.5], "expected": -23.5}, {"input": [-23.5, -99.0], "expected": -23.5}, {"input": [-23.5, -98.5], "expected": -23.5}, {"input": [-23.5, -98.0], "expected": -23.5}, {"input": [-23.5, -97.5], "expected": -23.5}, {"input": [-23.5, -97.0], "expected": -23.5}, {"input": [-23.5, -96.5], "expected": -23.5}, {"input": [-23.5, -96.0], "expected": -23.5}, {"input": [-23.5, -95.5], "expected": -23.5}, {"input": [-23.5, -95.0], "expected": -23.5}, {"input": [-23.5, -94.5], "expected": -23.5}, {"input": [-23.5, -94.0], "expected": -23.5}, {"input": [-23.5, -93.5], "expected": -23.5}, {"input": [-23.5, -93.0], "expected": -23.5}, {"input": [-23.5, -92.5], "expected": -23.5}, {"input": [-23.5, -92.0], "expected": -23.5}, {"input": [-23.5, -91.5], "expected": -23.5}, {"input": [-23.5, -91.0], "expected": -23.5}, {"input": [-23.5, -90.5], "expected": -23.5}, {"input": [-23.5, -90.0], "expected": -23.5}, {"input": [-23.5, -89.5], "expected": -23.5}, {"input": [-23.5, -89.0], "expected": -23.5}, {"input": [-23.5, -88.5], "expected": -23.5}, {"input": [-23.5, -88.0], "expected": -23.5}, {"input": [-23.5, -87.5], "expected": -23.5}, {"input": [-23.5, -87.0], "expected": -23.5}, {"input": [-23.5, -86.5], "expected": -23.5}, {"input": [-23.5, -86.0], "expected": -23.5}, {"input": [-23.5, -85.5], "expected": -23.5}, {"input": [-23.5, -85.0], "expected": -23.5}, {"input": [-23.5, -84.5], "expected": -23.5}, {"input": [-23.5, -84.0], "expected": -23.5}, {"input": [-23.5, -83.5], "expected": -23.5}, {"input": [-23.5, -83.0], "expected": -23.5}, {"input": [-23.5, -82.5], "expected": -23.5}, {"input": [-23.5, -82.0], "expected": -23.5}, {"input": [-23.5, -81.5], "expected": -23.5}, {"input": [-23.5, -81.0], "expected": -23.5}, {"input": [-23.5, -80.5], "expected": -23.5}, {"input": [-23.5, -80.0], "expected": -23.5}, {"input": [-23.5, -79.5], "expected": -23.5}, {"input": [-23.5, -79.0], "expected": -23.5}, {"input": [-23.5, -78.5], "expected": -23.5}, {"input": [-23.5, -78.0], "expected": -23.5}, {"input": [-23.5, -77.5], "expected": -23.5}, {"input": [-23.5, -77.0], "expected": -23.5}, {"input": [-23.5, -76.5], "expected": -23.5}, {"input": [-23.5, -76.0], "expected": -23.5}, {"input": [-23.5, -75.5], "expected": -23.5}, {"input": [-23.5, -75.0], "expected": -23.5}, {"input": [-23.5, -74.5], "expected": -23.5}, {"input": [-23.5, -74.0], "expected": -23.5}, {"input": [-23.5, -73.5], "expected": -23.5}, {"input": [-23.5, -73.0], "expected": -23.5}, {"input": [-23.5, -72.5], "expected": -23.5}, {"input": [-23.5, -72.0], "expected": -23.5}, {"input": [-23.5, -71.5], "expected": -23.5}, {"input": [-23.5, -71.0], "expected": -23.5}, {"input": [-23.5, -70.5], "expected": -23.5}, {"input": [-23.5, -70.0], "expected": -23.5}, {"input": [-23.5, -69.5], "expected": -23.5}, {"input": [-23.5, -69.0], "expected": -23.5}, {"input": [-23.5, -68.5], "expected": -23.5}, {"input": [-23.5, -68.0], "expected": -23.5}, {"input": [-23.5, -67.5], "expected": -23.5}, {"input": [-23.5, -67.0], "expected": -23.5}, {"input": [-23.5, -66.5], "expected": -23.5}, {"input": [-23.5, -66.0], "expected": -23.5}, {"input": [-23.5, -65.5], "expected": -23.5}, {"input": [-23.5, -65.0], "expected": -23.5}, {"input": [-23.5, -64.5], "expected": -23.5}, {"input": [-23.5, -64.0], "expected": -23.5}, {"input": [-23.5, -63.5], "expected": -23.5}, {"input": [-23.5, -63.0], "expected": -23.5}, {"input": [-23.5, -62.5], "expected": -23.5}, {"input": [-23.5, -62.0], "expected": -23.5}, {"input": [-23.5, -61.5], "expected": -23.5}, {"input": [-23.5, -61.0], "expected": -23.5}, {"input": [-23.5, -60.5], "expected": -23.5}, {"input": [-23.5, -60.0], "expected": -23.5}, {"input": [-23.5, -59.5], "expected": -23.5}, {"input": [-23.5, -59.0], "expected": -23.5}, {"input": [-23.5, -58.5], "expected": -23.5}, {"input": [-23.5, -58.0], "expected": -23.5}, {"input": [-23.5, -57.5], "expected": -23.5}, {"input": [-23.5, -57.0], "expected": -23.499999999999996}, {"input": [-23.5, -56.5], "expected": -23.499999999999996}, {"input": [-23.5, -56.0], "expected": -23.499999999999993}, {"input": [-23.5, -55.5], "expected": -23.499999999999986}, {"input": [-23.5, -55.0], "expected": -23.49999999999998}, {"input": [-23.5, -54.5], "expected": -23.499999999999964}, {"input": [-23.5, -54.0], "expected": -23.499999999999943}, {"input": [-23.5, -53.5], "expected": -23.499999999999908}, {"input": [-23.5, -53.0], "expected": -23.499999999999847}, {"input": [-23.5, -52.5], "expected": -23.499999999999744}, {"input": [-23.5, -52.0], "expected": -23.49999999999958}, {"input": [-23.5, -51.5], "expected": -23.499999999999307}, {"input": [-23.5, -51.0], "expected": -23.49999999999886}, {"input": [-23.5, -50.5], "expected": -23.49999999999812}, {"input": [-23.5, -50.0], "expected": -23.499999999996902}, {"input": [-23.5, -49.5], "expected": -23.49999999999489}, {"input": [-23.5, -49.0], "expected": -23.499999999991577}, {"input": [-23.5, -48.5], "expected": -23.499999999986112}, {"input": [-23.5, -48.0], "expected": -23.499999999977103}, {"input": [-23.5, -47.5], "expected": -23.49999999996225}, {"input": [-23.5, -47.0], "expected": -23.49999999993776}, {"input": [-23.5, -46.5], "expected": -23.49999999989738}, {"input": [-23.5, -46.0], "expected": -23.49999999983081}, {"input": [-23.5, -45.5], "expected": -23.49999999972105}, {"input": [-23.5, -45.0], "expected": -23.499999999540094}, {"input": [-23.5, -44.5], "expected": -23.499999999241744}, {"input": [-23.5, -44.0], "expected": -23.499999998749846}, {"input": [-23.5, -43.5], "expected": -23.499999997938847}, {"input": [-23.5, -43.0], "expected": -23.499999996601733}, {"input": [-23.5, -42.5], "expected": -23.499999994397204}, {"input": [-23.5, -42.0], "expected": -23.49999999076255}, {"input": [-23.5, -41.5], "expected": -23.49999998477002}, {"input": [-23.5, -41.0], "expected": -23.49999997489001}, {"input": [-23.5, -40.5], "expected": -23.499999958600625}, {"input": [-23.5, -40.0], "expected": -23.499999931743968}, {"input": [-23.5, -39.5], "expected": -23.49999988746483}, {"input": [-23.5, -39.0], "expected": -23.49999981446088}, {"input": [-23.5, -38.5], "expected": -23.499999694097728}, {"input": [-23.5, -38.0], "expected": -23.499999495652464}, {"input": [-23.5, -37.5], "expected": -23.499999168471625}, {"input": [-23.5, -37.0], "expected": -23.499998629041855}, {"input": [-23.5, -36.5], "expected": -23.499997739673148}, {"input": [-23.5, -36.0], "expected": -23.499996273353773}, {"input": [-23.5, -35.5], "expected": -23.499993855806522}, {"input": [-23.5, -35.0], "expected": -23.49998986995771}, {"input": [-23.5, -34.5], "expected": -23.499983298438682}, {"input": [-23.5, -34.0], "expected": -23.499972463929772}, {"input": [-23.5, -33.5], "expected": -23.499954601100782}, {"input": [-23.5, -33.0], "expected": -23.49992515097137}, {"input": [-23.5, -32.5], "expected": -23.499876597810278}, {"input": [-23.5, -32.0], "expected": -23.499796552327872}, {"input": [-23.5, -31.5], "expected": -23.499664593627106}, {"input": [-23.5, -31.0], "expected": -23.49944706852464}, {"input": [-23.5, -30.5], "expected": -23.499088533546225}, {"input": [-23.5, -30.0], "expected": -23.498497689840246}, {"input": [-23.5, -29.5], "expected": -23.497524314862268}, {"input": [-23.5, -29.0], "expected": -23.495921556729428}, {"input": [-23.5, -28.5], "expected": -23.493284651510884}, {"input": [-23.5, -28.0], "expected": -23.488952255151407}, {"input": [-23.5, -27.5], "expected": -23.48185007208219}, {"input": [-23.5, -27.0], "expected": -23.47024958172738}, {"input": [-23.5, -26.5], "expected": -23.451412648426256}, {"input": [-23.5, -26.0], "expected": -23.42111026570745}, {"input": [-23.5, -25.5], "expected": -23.373071988957026}, {"input": [-23.5, -25.0], "expected": -23.298586722017248}, {"input": [-23.5, -24.5], "expected": -23.186738312481776}, {"input": [-23.5, -24.0], "expected": -23.02592301581989}, {"input": [-23.5, -23.5], "expected": -22.806852819440056}, {"input": [-23.5, -23.0], "expected": -22.52592301581989}, {"input": [-23.5, -22.5], "expected": -22.186738312481776}, {"input": [-23.5, -22.0], "expected": -21.798586722017248}, {"input": [-23.5, -21.5], "expected": -21.373071988957026}, {"input": [-23.5, -21.0], "expected": -20.92111026570745}, {"input": [-23.5, -20.5], "expected": -20.451412648426256}, {"input": [-23.5, -20.0], "expected": -19.97024958172738}, {"input": [-23.5, -19.5], "expected": -19.48185007208219}, {"input": [-23.5, -19.0], "expected": -18.988952255151407}, {"input": [-23.5, -18.5], "expected": -18.493284651510884}, {"input": [-23.5, -18.0], "expected": -17.995921556729428}, {"input": [-23.5, -17.5], "expected": -17.497524314862268}, {"input": [-23.5, -17.0], "expected": -16.998497689840246}, {"input": [-23.5, -16.5], "expected": -16.499088533546225}, {"input": [-23.5, -16.0], "expected": -15.999447068524638}, {"input": [-23.5, -15.5], "expected": -15.499664593627104}, {"input": [-23.5, -15.0], "expected": -14.99979655232787}, {"input": [-23.5, -14.5], "expected": -14.499876597810276}, {"input": [-23.5, -14.0], "expected": -13.999925150971372}, {"input": [-23.5, -13.5], "expected": -13.499954601100782}, {"input": [-23.5, -13.0], "expected": -12.99997246392977}, {"input": [-23.5, -12.5], "expected": -12.499983298438682}, {"input": [-23.5, -12.0], "expected": -11.99998986995771}, {"input": [-23.5, -11.5], "expected": -11.499993855806522}, {"input": [-23.5, -11.0], "expected": -10.999996273353771}, {"input": [-23.5, -10.5], "expected": -10.499997739673148}, {"input": [-23.5, -10.0], "expected": -9.999998629041853}, {"input": [-23.5, -9.5], "expected": -9.499999168471627}, {"input": [-23.5, -9.0], "expected": -8.999999495652464}, {"input": [-23.5, -8.5], "expected": -8.499999694097726}, {"input": [-23.5, -8.0], "expected": -7.999999814460881}, {"input": [-23.5, -7.5], "expected": -7.499999887464831}, {"input": [-23.5, -7.0], "expected": -6.999999931743969}, {"input": [-23.5, -6.5], "expected": -6.499999958600624}, {"input": [-23.5, -6.0], "expected": -5.999999974890009}, {"input": [-23.5, -5.5], "expected": -5.49999998477002}, {"input": [-23.5, -5.0], "expected": -4.99999999076255}, {"input": [-23.5, -4.5], "expected": -4.4999999943972036}, {"input": [-23.5, -4.0], "expected": -3.999999996601732}, {"input": [-23.5, -3.5], "expected": -3.4999999979388465}, {"input": [-23.5, -3.0], "expected": -2.999999998749847}, {"input": [-23.5, -2.5], "expected": -2.499999999241744}, {"input": [-23.5, -2.0], "expected": -1.9999999995400946}, {"input": [-23.5, -1.5], "expected": -1.4999999997210531}, {"input": [-23.5, -1.0], "expected": -0.9999999998308102}, {"input": [-23.5, -0.5], "expected": -0.4999999998973812}, {"input": [-23.5, 0.0], "expected": 6.224144622714083e-11}, {"input": [-23.5, 0.5], "expected": 0.5000000000377514}, {"input": [-23.5, 1.0], "expected": 1.0000000000228972}, {"input": [-23.5, 1.5], "expected": 1.500000000013888}, {"input": [-23.5, 2.0], "expected": 2.0000000000084235}, {"input": [-23.5, 2.5], "expected": 2.5000000000051092}, {"input": [-23.5, 3.0], "expected": 3.000000000003099}, {"input": [-23.5, 3.5], "expected": 3.5000000000018794}, {"input": [-23.5, 4.0], "expected": 4.00000000000114}, {"input": [-23.5, 4.5], "expected": 4.500000000000691}, {"input": [-23.5, 5.0], "expected": 5.000000000000419}, {"input": [-23.5, 5.5], "expected": 5.500000000000254}, {"input": [-23.5, 6.0], "expected": 6.0000000000001545}, {"input": [-23.5, 6.5], "expected": 6.500000000000093}, {"input": [-23.5, 7.0], "expected": 7.000000000000057}, {"input": [-23.5, 7.5], "expected": 7.500000000000035}, {"input": [-23.5, 8.0], "expected": 8.000000000000021}, {"input": [-23.5, 8.5], "expected": 8.500000000000012}, {"input": [-23.5, 9.0], "expected": 9.000000000000007}, {"input": [-23.5, 9.5], "expected": 9.500000000000005}, {"input": [-23.5, 10.0], "expected": 10.000000000000004}, {"input": [-23.5, 10.5], "expected": 10.500000000000002}, {"input": [-23.5, 11.0], "expected": 11.000000000000002}, {"input": [-23.5, 11.5], "expected": 11.5}, {"input": [-23.5, 12.0], "expected": 12.0}, {"input": [-23.5, 12.5], "expected": 12.5}, {"input": [-23.5, 13.0], "expected": 13.0}, {"input": [-23.5, 13.5], "expected": 13.5}, {"input": [-23.5, 14.0], "expected": 14.0}, {"input": [-23.5, 14.5], "expected": 14.5}, {"input": [-23.5, 15.0], "expected": 15.0}, {"input": [-23.5, 15.5], "expected": 15.5}, {"input": [-23.5, 16.0], "expected": 16.0}, {"input": [-23.5, 16.5], "expected": 16.5}, {"input": [-23.5, 17.0], "expected": 17.0}, {"input": [-23.5, 17.5], "expected": 17.5}, {"input": [-23.5, 18.0], "expected": 18.0}, {"input": [-23.5, 18.5], "expected": 18.5}, {"input": [-23.5, 19.0], "expected": 19.0}, {"input": [-23.5, 19.5], "expected": 19.5}, {"input": [-23.5, 20.0], "expected": 20.0}, {"input": [-23.5, 20.5], "expected": 20.5}, {"input": [-23.5, 21.0], "expected": 21.0}, {"input": [-23.5, 21.5], "expected": 21.5}, {"input": [-23.5, 22.0], "expected": 22.0}, {"input": [-23.5, 22.5], "expected": 22.5}, {"input": [-23.5, 23.0], "expected": 23.0}, {"input": [-23.5, 23.5], "expected": 23.5}, {"input": [-23.5, 24.0], "expected": 24.0}, {"input": [-23.5, 24.5], "expected": 24.5}, {"input": [-23.5, 25.0], "expected": 25.0}, {"input": [-23.5, 25.5], "expected": 25.5}, {"input": [-23.5, 26.0], "expected": 26.0}, {"input": [-23.5, 26.5], "expected": 26.5}, {"input": [-23.5, 27.0], "expected": 27.0}, {"input": [-23.5, 27.5], "expected": 27.5}, {"input": [-23.5, 28.0], "expected": 28.0}, {"input": [-23.5, 28.5], "expected": 28.5}, {"input": [-23.5, 29.0], "expected": 29.0}, {"input": [-23.5, 29.5], "expected": 29.5}, {"input": [-23.5, 30.0], "expected": 30.0}, {"input": [-23.5, 30.5], "expected": 30.5}, {"input": [-23.5, 31.0], "expected": 31.0}, {"input": [-23.5, 31.5], "expected": 31.5}, {"input": [-23.5, 32.0], "expected": 32.0}, {"input": [-23.5, 32.5], "expected": 32.5}, {"input": [-23.5, 33.0], "expected": 33.0}, {"input": [-23.5, 33.5], "expected": 33.5}, {"input": [-23.5, 34.0], "expected": 34.0}, {"input": [-23.5, 34.5], "expected": 34.5}, {"input": [-23.5, 35.0], "expected": 35.0}, {"input": [-23.5, 35.5], "expected": 35.5}, {"input": [-23.5, 36.0], "expected": 36.0}, {"input": [-23.5, 36.5], "expected": 36.5}, {"input": [-23.5, 37.0], "expected": 37.0}, {"input": [-23.5, 37.5], "expected": 37.5}, {"input": [-23.5, 38.0], "expected": 38.0}, {"input": [-23.5, 38.5], "expected": 38.5}, {"input": [-23.5, 39.0], "expected": 39.0}, {"input": [-23.5, 39.5], "expected": 39.5}, {"input": [-23.5, 40.0], "expected": 40.0}, {"input": [-23.5, 40.5], "expected": 40.5}, {"input": [-23.5, 41.0], "expected": 41.0}, {"input": [-23.5, 41.5], "expected": 41.5}, {"input": [-23.5, 42.0], "expected": 42.0}, {"input": [-23.5, 42.5], "expected": 42.5}, {"input": [-23.5, 43.0], "expected": 43.0}, {"input": [-23.5, 43.5], "expected": 43.5}, {"input": [-23.5, 44.0], "expected": 44.0}, {"input": [-23.5, 44.5], "expected": 44.5}, {"input": [-23.5, 45.0], "expected": 45.0}, {"input": [-23.5, 45.5], "expected": 45.5}, {"input": [-23.5, 46.0], "expected": 46.0}, {"input": [-23.5, 46.5], "expected": 46.5}, {"input": [-23.5, 47.0], "expected": 47.0}, {"input": [-23.5, 47.5], "expected": 47.5}, {"input": [-23.5, 48.0], "expected": 48.0}, {"input": [-23.5, 48.5], "expected": 48.5}, {"input": [-23.5, 49.0], "expected": 49.0}, {"input": [-23.5, 49.5], "expected": 49.5}, {"input": [-23.5, 50.0], "expected": 50.0}, {"input": [-23.5, 50.5], "expected": 50.5}, {"input": [-23.5, 51.0], "expected": 51.0}, {"input": [-23.5, 51.5], "expected": 51.5}, {"input": [-23.5, 52.0], "expected": 52.0}, {"input": [-23.5, 52.5], "expected": 52.5}, {"input": [-23.5, 53.0], "expected": 53.0}, {"input": [-23.5, 53.5], "expected": 53.5}, {"input": [-23.5, 54.0], "expected": 54.0}, {"input": [-23.5, 54.5], "expected": 54.5}, {"input": [-23.5, 55.0], "expected": 55.0}, {"input": [-23.5, 55.5], "expected": 55.5}, {"input": [-23.5, 56.0], "expected": 56.0}, {"input": [-23.5, 56.5], "expected": 56.5}, {"input": [-23.5, 57.0], "expected": 57.0}, {"input": [-23.5, 57.5], "expected": 57.5}, {"input": [-23.5, 58.0], "expected": 58.0}, {"input": [-23.5, 58.5], "expected": 58.5}, {"input": [-23.5, 59.0], "expected": 59.0}, {"input": [-23.5, 59.5], "expected": 59.5}, {"input": [-23.5, 60.0], "expected": 60.0}, {"input": [-23.5, 60.5], "expected": 60.5}, {"input": [-23.5, 61.0], "expected": 61.0}, {"input": [-23.5, 61.5], "expected": 61.5}, {"input": [-23.5, 62.0], "expected": 62.0}, {"input": [-23.5, 62.5], "expected": 62.5}, {"input": [-23.5, 63.0], "expected": 63.0}, {"input": [-23.5, 63.5], "expected": 63.5}, {"input": [-23.5, 64.0], "expected": 64.0}, {"input": [-23.5, 64.5], "expected": 64.5}, {"input": [-23.5, 65.0], "expected": 65.0}, {"input": [-23.5, 65.5], "expected": 65.5}, {"input": [-23.5, 66.0], "expected": 66.0}, {"input": [-23.5, 66.5], "expected": 66.5}, {"input": [-23.5, 67.0], "expected": 67.0}, {"input": [-23.5, 67.5], "expected": 67.5}, {"input": [-23.5, 68.0], "expected": 68.0}, {"input": [-23.5, 68.5], "expected": 68.5}, {"input": [-23.5, 69.0], "expected": 69.0}, {"input": [-23.5, 69.5], "expected": 69.5}, {"input": [-23.5, 70.0], "expected": 70.0}, {"input": [-23.5, 70.5], "expected": 70.5}, {"input": [-23.5, 71.0], "expected": 71.0}, {"input": [-23.5, 71.5], "expected": 71.5}, {"input": [-23.5, 72.0], "expected": 72.0}, {"input": [-23.5, 72.5], "expected": 72.5}, {"input": [-23.5, 73.0], "expected": 73.0}, {"input": [-23.5, 73.5], "expected": 73.5}, {"input": [-23.5, 74.0], "expected": 74.0}, {"input": [-23.5, 74.5], "expected": 74.5}, {"input": [-23.5, 75.0], "expected": 75.0}, {"input": [-23.5, 75.5], "expected": 75.5}, {"input": [-23.5, 76.0], "expected": 76.0}, {"input": [-23.5, 76.5], "expected": 76.5}, {"input": [-23.5, 77.0], "expected": 77.0}, {"input": [-23.5, 77.5], "expected": 77.5}, {"input": [-23.5, 78.0], "expected": 78.0}, {"input": [-23.5, 78.5], "expected": 78.5}, {"input": [-23.5, 79.0], "expected": 79.0}, {"input": [-23.5, 79.5], "expected": 79.5}, {"input": [-23.5, 80.0], "expected": 80.0}, {"input": [-23.5, 80.5], "expected": 80.5}, {"input": [-23.5, 81.0], "expected": 81.0}, {"input": [-23.5, 81.5], "expected": 81.5}, {"input": [-23.5, 82.0], "expected": 82.0}, {"input": [-23.5, 82.5], "expected": 82.5}, {"input": [-23.5, 83.0], "expected": 83.0}, {"input": [-23.5, 83.5], "expected": 83.5}, {"input": [-23.5, 84.0], "expected": 84.0}, {"input": [-23.5, 84.5], "expected": 84.5}, {"input": [-23.5, 85.0], "expected": 85.0}, {"input": [-23.5, 85.5], "expected": 85.5}, {"input": [-23.5, 86.0], "expected": 86.0}, {"input": [-23.5, 86.5], "expected": 86.5}, {"input": [-23.5, 87.0], "expected": 87.0}, {"input": [-23.5, 87.5], "expected": 87.5}, {"input": [-23.5, 88.0], "expected": 88.0}, {"input": [-23.5, 88.5], "expected": 88.5}, {"input": [-23.5, 89.0], "expected": 89.0}, {"input": [-23.5, 89.5], "expected": 89.5}, {"input": [-23.5, 90.0], "expected": 90.0}, {"input": [-23.5, 90.5], "expected": 90.5}, {"input": [-23.5, 91.0], "expected": 91.0}, {"input": [-23.5, 91.5], "expected": 91.5}, {"input": [-23.5, 92.0], "expected": 92.0}, {"input": [-23.5, 92.5], "expected": 92.5}, {"input": [-23.5, 93.0], "expected": 93.0}, {"input": [-23.5, 93.5], "expected": 93.5}, {"input": [-23.5, 94.0], "expected": 94.0}, {"input": [-23.5, 94.5], "expected": 94.5}, {"input": [-23.5, 95.0], "expected": 95.0}, {"input": [-23.5, 95.5], "expected": 95.5}, {"input": [-23.5, 96.0], "expected": 96.0}, {"input": [-23.5, 96.5], "expected": 96.5}, {"input": [-23.5, 97.0], "expected": 97.0}, {"input": [-23.5, 97.5], "expected": 97.5}, {"input": [-23.5, 98.0], "expected": 98.0}, {"input": [-23.5, 98.5], "expected": 98.5}, {"input": [-23.5, 99.0], "expected": 99.0}, {"input": [-23.5, 99.5], "expected": 99.5}, {"input": [-23.0, -100.0], "expected": -23.0}, {"input": [-23.0, -99.5], "expected": -23.0}, {"input": [-23.0, -99.0], "expected": -23.0}, {"input": [-23.0, -98.5], "expected": -23.0}, {"input": [-23.0, -98.0], "expected": -23.0}, {"input": [-23.0, -97.5], "expected": -23.0}, {"input": [-23.0, -97.0], "expected": -23.0}, {"input": [-23.0, -96.5], "expected": -23.0}, {"input": [-23.0, -96.0], "expected": -23.0}, {"input": [-23.0, -95.5], "expected": -23.0}, {"input": [-23.0, -95.0], "expected": -23.0}, {"input": [-23.0, -94.5], "expected": -23.0}, {"input": [-23.0, -94.0], "expected": -23.0}, {"input": [-23.0, -93.5], "expected": -23.0}, {"input": [-23.0, -93.0], "expected": -23.0}, {"input": [-23.0, -92.5], "expected": -23.0}, {"input": [-23.0, -92.0], "expected": -23.0}, {"input": [-23.0, -91.5], "expected": -23.0}, {"input": [-23.0, -91.0], "expected": -23.0}, {"input": [-23.0, -90.5], "expected": -23.0}, {"input": [-23.0, -90.0], "expected": -23.0}, {"input": [-23.0, -89.5], "expected": -23.0}, {"input": [-23.0, -89.0], "expected": -23.0}, {"input": [-23.0, -88.5], "expected": -23.0}, {"input": [-23.0, -88.0], "expected": -23.0}, {"input": [-23.0, -87.5], "expected": -23.0}, {"input": [-23.0, -87.0], "expected": -23.0}, {"input": [-23.0, -86.5], "expected": -23.0}, {"input": [-23.0, -86.0], "expected": -23.0}, {"input": [-23.0, -85.5], "expected": -23.0}, {"input": [-23.0, -85.0], "expected": -23.0}, {"input": [-23.0, -84.5], "expected": -23.0}, {"input": [-23.0, -84.0], "expected": -23.0}, {"input": [-23.0, -83.5], "expected": -23.0}, {"input": [-23.0, -83.0], "expected": -23.0}, {"input": [-23.0, -82.5], "expected": -23.0}, {"input": [-23.0, -82.0], "expected": -23.0}, {"input": [-23.0, -81.5], "expected": -23.0}, {"input": [-23.0, -81.0], "expected": -23.0}, {"input": [-23.0, -80.5], "expected": -23.0}, {"input": [-23.0, -80.0], "expected": -23.0}, {"input": [-23.0, -79.5], "expected": -23.0}, {"input": [-23.0, -79.0], "expected": -23.0}, {"input": [-23.0, -78.5], "expected": -23.0}, {"input": [-23.0, -78.0], "expected": -23.0}, {"input": [-23.0, -77.5], "expected": -23.0}, {"input": [-23.0, -77.0], "expected": -23.0}, {"input": [-23.0, -76.5], "expected": -23.0}, {"input": [-23.0, -76.0], "expected": -23.0}, {"input": [-23.0, -75.5], "expected": -23.0}, {"input": [-23.0, -75.0], "expected": -23.0}, {"input": [-23.0, -74.5], "expected": -23.0}, {"input": [-23.0, -74.0], "expected": -23.0}, {"input": [-23.0, -73.5], "expected": -23.0}, {"input": [-23.0, -73.0], "expected": -23.0}, {"input": [-23.0, -72.5], "expected": -23.0}, {"input": [-23.0, -72.0], "expected": -23.0}, {"input": [-23.0, -71.5], "expected": -23.0}, {"input": [-23.0, -71.0], "expected": -23.0}, {"input": [-23.0, -70.5], "expected": -23.0}, {"input": [-23.0, -70.0], "expected": -23.0}, {"input": [-23.0, -69.5], "expected": -23.0}, {"input": [-23.0, -69.0], "expected": -23.0}, {"input": [-23.0, -68.5], "expected": -23.0}, {"input": [-23.0, -68.0], "expected": -23.0}, {"input": [-23.0, -67.5], "expected": -23.0}, {"input": [-23.0, -67.0], "expected": -23.0}, {"input": [-23.0, -66.5], "expected": -23.0}, {"input": [-23.0, -66.0], "expected": -23.0}, {"input": [-23.0, -65.5], "expected": -23.0}, {"input": [-23.0, -65.0], "expected": -23.0}, {"input": [-23.0, -64.5], "expected": -23.0}, {"input": [-23.0, -64.0], "expected": -23.0}, {"input": [-23.0, -63.5], "expected": -23.0}, {"input": [-23.0, -63.0], "expected": -23.0}, {"input": [-23.0, -62.5], "expected": -23.0}, {"input": [-23.0, -62.0], "expected": -23.0}, {"input": [-23.0, -61.5], "expected": -23.0}, {"input": [-23.0, -61.0], "expected": -23.0}, {"input": [-23.0, -60.5], "expected": -23.0}, {"input": [-23.0, -60.0], "expected": -23.0}, {"input": [-23.0, -59.5], "expected": -23.0}, {"input": [-23.0, -59.0], "expected": -23.0}, {"input": [-23.0, -58.5], "expected": -23.0}, {"input": [-23.0, -58.0], "expected": -23.0}, {"input": [-23.0, -57.5], "expected": -23.0}, {"input": [-23.0, -57.0], "expected": -23.0}, {"input": [-23.0, -56.5], "expected": -22.999999999999996}, {"input": [-23.0, -56.0], "expected": -22.999999999999996}, {"input": [-23.0, -55.5], "expected": -22.999999999999993}, {"input": [-23.0, -55.0], "expected": -22.999999999999986}, {"input": [-23.0, -54.5], "expected": -22.99999999999998}, {"input": [-23.0, -54.0], "expected": -22.999999999999964}, {"input": [-23.0, -53.5], "expected": -22.999999999999943}, {"input": [-23.0, -53.0], "expected": -22.999999999999908}, {"input": [-23.0, -52.5], "expected": -22.999999999999847}, {"input": [-23.0, -52.0], "expected": -22.999999999999744}, {"input": [-23.0, -51.5], "expected": -22.99999999999958}, {"input": [-23.0, -51.0], "expected": -22.999999999999307}, {"input": [-23.0, -50.5], "expected": -22.99999999999886}, {"input": [-23.0, -50.0], "expected": -22.99999999999812}, {"input": [-23.0, -49.5], "expected": -22.999999999996902}, {"input": [-23.0, -49.0], "expected": -22.99999999999489}, {"input": [-23.0, -48.5], "expected": -22.999999999991577}, {"input": [-23.0, -48.0], "expected": -22.999999999986112}, {"input": [-23.0, -47.5], "expected": -22.999999999977103}, {"input": [-23.0, -47.0], "expected": -22.99999999996225}, {"input": [-23.0, -46.5], "expected": -22.99999999993776}, {"input": [-23.0, -46.0], "expected": -22.99999999989738}, {"input": [-23.0, -45.5], "expected": -22.99999999983081}, {"input": [-23.0, -45.0], "expected": -22.99999999972105}, {"input": [-23.0, -44.5], "expected": -22.999999999540094}, {"input": [-23.0, -44.0], "expected": -22.999999999241744}, {"input": [-23.0, -43.5], "expected": -22.999999998749846}, {"input": [-23.0, -43.0], "expected": -22.999999997938847}, {"input": [-23.0, -42.5], "expected": -22.999999996601733}, {"input": [-23.0, -42.0], "expected": -22.999999994397204}, {"input": [-23.0, -41.5], "expected": -22.99999999076255}, {"input": [-23.0, -41.0], "expected": -22.99999998477002}, {"input": [-23.0, -40.5], "expected": -22.99999997489001}, {"input": [-23.0, -40.0], "expected": -22.999999958600625}, {"input": [-23.0, -39.5], "expected": -22.999999931743968}, {"input": [-23.0, -39.0], "expected": -22.99999988746483}, {"input": [-23.0, -38.5], "expected": -22.99999981446088}, {"input": [-23.0, -38.0], "expected": -22.999999694097728}, {"input": [-23.0, -37.5], "expected": -22.999999495652464}, {"input": [-23.0, -37.0], "expected": -22.999999168471625}, {"input": [-23.0, -36.5], "expected": -22.999998629041855}, {"input": [-23.0, -36.0], "expected": -22.999997739673148}, {"input": [-23.0, -35.5], "expected": -22.999996273353773}, {"input": [-23.0, -35.0], "expected": -22.999993855806522}, {"input": [-23.0, -34.5], "expected": -22.99998986995771}, {"input": [-23.0, -34.0], "expected": -22.999983298438682}, {"input": [-23.0, -33.5], "expected": -22.999972463929772}, {"input": [-23.0, -33.0], "expected": -22.999954601100782}, {"input": [-23.0, -32.5], "expected": -22.99992515097137}, {"input": [-23.0, -32.0], "expected": -22.999876597810278}, {"input": [-23.0, -31.5], "expected": -22.999796552327872}, {"input": [-23.0, -31.0], "expected": -22.999664593627106}, {"input": [-23.0, -30.5], "expected": -22.99944706852464}, {"input": [-23.0, -30.0], "expected": -22.999088533546225}, {"input": [-23.0, -29.5], "expected": -22.998497689840246}, {"input": [-23.0, -29.0], "expected": -22.997524314862268}, {"input": [-23.0, -28.5], "expected": -22.995921556729428}, {"input": [-23.0, -28.0], "expected": -22.993284651510884}, {"input": [-23.0, -27.5], "expected": -22.988952255151407}, {"input": [-23.0, -27.0], "expected": -22.98185007208219}, {"input": [-23.0, -26.5], "expected": -22.97024958172738}, {"input": [-23.0, -26.0], "expected": -22.951412648426256}, {"input": [-23.0, -25.5], "expected": -22.92111026570745}, {"input": [-23.0, -25.0], "expected": -22.873071988957026}, {"input": [-23.0, -24.5], "expected": -22.798586722017248}, {"input": [-23.0, -24.0], "expected": -22.686738312481776}, {"input": [-23.0, -23.5], "expected": -22.52592301581989}, {"input": [-23.0, -23.0], "expected": -22.306852819440056}, {"input": [-23.0, -22.5], "expected": -22.02592301581989}, {"input": [-23.0, -22.0], "expected": -21.686738312481776}, {"input": [-23.0, -21.5], "expected": -21.298586722017248}, {"input": [-23.0, -21.0], "expected": -20.873071988957026}, {"input": [-23.0, -20.5], "expected": -20.42111026570745}, {"input": [-23.0, -20.0], "expected": -19.951412648426256}, {"input": [-23.0, -19.5], "expected": -19.47024958172738}, {"input": [-23.0, -19.0], "expected": -18.98185007208219}, {"input": [-23.0, -18.5], "expected": -18.488952255151407}, {"input": [-23.0, -18.0], "expected": -17.993284651510884}, {"input": [-23.0, -17.5], "expected": -17.495921556729428}, {"input": [-23.0, -17.0], "expected": -16.997524314862268}, {"input": [-23.0, -16.5], "expected": -16.498497689840246}, {"input": [-23.0, -16.0], "expected": -15.999088533546226}, {"input": [-23.0, -15.5], "expected": -15.499447068524638}, {"input": [-23.0, -15.0], "expected": -14.999664593627104}, {"input": [-23.0, -14.5], "expected": -14.49979655232787}, {"input": [-23.0, -14.0], "expected": -13.999876597810276}, {"input": [-23.0, -13.5], "expected": -13.499925150971372}, {"input": [-23.0, -13.0], "expected": -12.999954601100782}, {"input": [-23.0, -12.5], "expected": -12.49997246392977}, {"input": [-23.0, -12.0], "expected": -11.999983298438682}, {"input": [-23.0, -11.5], "expected": -11.49998986995771}, {"input": [-23.0, -11.0], "expected": -10.999993855806522}, {"input": [-23.0, -10.5], "expected": -10.499996273353771}, {"input": [-23.0, -10.0], "expected": -9.999997739673148}, {"input": [-23.0, -9.5], "expected": -9.499998629041853}, {"input": [-23.0, -9.0], "expected": -8.999999168471627}, {"input": [-23.0, -8.5], "expected": -8.499999495652464}, {"input": [-23.0, -8.0], "expected": -7.999999694097727}, {"input": [-23.0, -7.5], "expected": -7.499999814460881}, {"input": [-23.0, -7.0], "expected": -6.999999887464831}, {"input": [-23.0, -6.5], "expected": -6.499999931743969}, {"input": [-23.0, -6.0], "expected": -5.999999958600624}, {"input": [-23.0, -5.5], "expected": -5.499999974890009}, {"input": [-23.0, -5.0], "expected": -4.99999998477002}, {"input": [-23.0, -4.5], "expected": -4.49999999076255}, {"input": [-23.0, -4.0], "expected": -3.9999999943972036}, {"input": [-23.0, -3.5], "expected": -3.499999996601732}, {"input": [-23.0, -3.0], "expected": -2.9999999979388465}, {"input": [-23.0, -2.5], "expected": -2.499999998749847}, {"input": [-23.0, -2.0], "expected": -1.9999999992417439}, {"input": [-23.0, -1.5], "expected": -1.4999999995400946}, {"input": [-23.0, -1.0], "expected": -0.9999999997210532}, {"input": [-23.0, -0.5], "expected": -0.4999999998308102}, {"input": [-23.0, 0.0], "expected": 1.0261879631175359e-10}, {"input": [-23.0, 0.5], "expected": 0.5000000000622414}, {"input": [-23.0, 1.0], "expected": 1.0000000000377514}, {"input": [-23.0, 1.5], "expected": 1.5000000000228972}, {"input": [-23.0, 2.0], "expected": 2.000000000013888}, {"input": [-23.0, 2.5], "expected": 2.5000000000084235}, {"input": [-23.0, 3.0], "expected": 3.0000000000051092}, {"input": [-23.0, 3.5], "expected": 3.500000000003099}, {"input": [-23.0, 4.0], "expected": 4.000000000001879}, {"input": [-23.0, 4.5], "expected": 4.50000000000114}, {"input": [-23.0, 5.0], "expected": 5.000000000000691}, {"input": [-23.0, 5.5], "expected": 5.500000000000419}, {"input": [-23.0, 6.0], "expected": 6.000000000000254}, {"input": [-23.0, 6.5], "expected": 6.5000000000001545}, {"input": [-23.0, 7.0], "expected": 7.000000000000093}, {"input": [-23.0, 7.5], "expected": 7.500000000000057}, {"input": [-23.0, 8.0], "expected": 8.000000000000034}, {"input": [-23.0, 8.5], "expected": 8.500000000000021}, {"input": [-23.0, 9.0], "expected": 9.000000000000012}, {"input": [-23.0, 9.5], "expected": 9.500000000000007}, {"input": [-23.0, 10.0], "expected": 10.000000000000005}, {"input": [-23.0, 10.5], "expected": 10.500000000000004}, {"input": [-23.0, 11.0], "expected": 11.000000000000002}, {"input": [-23.0, 11.5], "expected": 11.500000000000002}, {"input": [-23.0, 12.0], "expected": 12.0}, {"input": [-23.0, 12.5], "expected": 12.5}, {"input": [-23.0, 13.0], "expected": 13.0}, {"input": [-23.0, 13.5], "expected": 13.5}, {"input": [-23.0, 14.0], "expected": 14.0}, {"input": [-23.0, 14.5], "expected": 14.5}, {"input": [-23.0, 15.0], "expected": 15.0}, {"input": [-23.0, 15.5], "expected": 15.5}, {"input": [-23.0, 16.0], "expected": 16.0}, {"input": [-23.0, 16.5], "expected": 16.5}, {"input": [-23.0, 17.0], "expected": 17.0}, {"input": [-23.0, 17.5], "expected": 17.5}, {"input": [-23.0, 18.0], "expected": 18.0}, {"input": [-23.0, 18.5], "expected": 18.5}, {"input": [-23.0, 19.0], "expected": 19.0}, {"input": [-23.0, 19.5], "expected": 19.5}, {"input": [-23.0, 20.0], "expected": 20.0}, {"input": [-23.0, 20.5], "expected": 20.5}, {"input": [-23.0, 21.0], "expected": 21.0}, {"input": [-23.0, 21.5], "expected": 21.5}, {"input": [-23.0, 22.0], "expected": 22.0}, {"input": [-23.0, 22.5], "expected": 22.5}, {"input": [-23.0, 23.0], "expected": 23.0}, {"input": [-23.0, 23.5], "expected": 23.5}, {"input": [-23.0, 24.0], "expected": 24.0}, {"input": [-23.0, 24.5], "expected": 24.5}, {"input": [-23.0, 25.0], "expected": 25.0}, {"input": [-23.0, 25.5], "expected": 25.5}, {"input": [-23.0, 26.0], "expected": 26.0}, {"input": [-23.0, 26.5], "expected": 26.5}, {"input": [-23.0, 27.0], "expected": 27.0}, {"input": [-23.0, 27.5], "expected": 27.5}, {"input": [-23.0, 28.0], "expected": 28.0}, {"input": [-23.0, 28.5], "expected": 28.5}, {"input": [-23.0, 29.0], "expected": 29.0}, {"input": [-23.0, 29.5], "expected": 29.5}, {"input": [-23.0, 30.0], "expected": 30.0}, {"input": [-23.0, 30.5], "expected": 30.5}, {"input": [-23.0, 31.0], "expected": 31.0}, {"input": [-23.0, 31.5], "expected": 31.5}, {"input": [-23.0, 32.0], "expected": 32.0}, {"input": [-23.0, 32.5], "expected": 32.5}, {"input": [-23.0, 33.0], "expected": 33.0}, {"input": [-23.0, 33.5], "expected": 33.5}, {"input": [-23.0, 34.0], "expected": 34.0}, {"input": [-23.0, 34.5], "expected": 34.5}, {"input": [-23.0, 35.0], "expected": 35.0}, {"input": [-23.0, 35.5], "expected": 35.5}, {"input": [-23.0, 36.0], "expected": 36.0}, {"input": [-23.0, 36.5], "expected": 36.5}, {"input": [-23.0, 37.0], "expected": 37.0}, {"input": [-23.0, 37.5], "expected": 37.5}, {"input": [-23.0, 38.0], "expected": 38.0}, {"input": [-23.0, 38.5], "expected": 38.5}, {"input": [-23.0, 39.0], "expected": 39.0}, {"input": [-23.0, 39.5], "expected": 39.5}, {"input": [-23.0, 40.0], "expected": 40.0}, {"input": [-23.0, 40.5], "expected": 40.5}, {"input": [-23.0, 41.0], "expected": 41.0}, {"input": [-23.0, 41.5], "expected": 41.5}, {"input": [-23.0, 42.0], "expected": 42.0}, {"input": [-23.0, 42.5], "expected": 42.5}, {"input": [-23.0, 43.0], "expected": 43.0}, {"input": [-23.0, 43.5], "expected": 43.5}, {"input": [-23.0, 44.0], "expected": 44.0}, {"input": [-23.0, 44.5], "expected": 44.5}, {"input": [-23.0, 45.0], "expected": 45.0}, {"input": [-23.0, 45.5], "expected": 45.5}, {"input": [-23.0, 46.0], "expected": 46.0}, {"input": [-23.0, 46.5], "expected": 46.5}, {"input": [-23.0, 47.0], "expected": 47.0}, {"input": [-23.0, 47.5], "expected": 47.5}, {"input": [-23.0, 48.0], "expected": 48.0}, {"input": [-23.0, 48.5], "expected": 48.5}, {"input": [-23.0, 49.0], "expected": 49.0}, {"input": [-23.0, 49.5], "expected": 49.5}, {"input": [-23.0, 50.0], "expected": 50.0}, {"input": [-23.0, 50.5], "expected": 50.5}, {"input": [-23.0, 51.0], "expected": 51.0}, {"input": [-23.0, 51.5], "expected": 51.5}, {"input": [-23.0, 52.0], "expected": 52.0}, {"input": [-23.0, 52.5], "expected": 52.5}, {"input": [-23.0, 53.0], "expected": 53.0}, {"input": [-23.0, 53.5], "expected": 53.5}, {"input": [-23.0, 54.0], "expected": 54.0}, {"input": [-23.0, 54.5], "expected": 54.5}, {"input": [-23.0, 55.0], "expected": 55.0}, {"input": [-23.0, 55.5], "expected": 55.5}, {"input": [-23.0, 56.0], "expected": 56.0}, {"input": [-23.0, 56.5], "expected": 56.5}, {"input": [-23.0, 57.0], "expected": 57.0}, {"input": [-23.0, 57.5], "expected": 57.5}, {"input": [-23.0, 58.0], "expected": 58.0}, {"input": [-23.0, 58.5], "expected": 58.5}, {"input": [-23.0, 59.0], "expected": 59.0}, {"input": [-23.0, 59.5], "expected": 59.5}, {"input": [-23.0, 60.0], "expected": 60.0}, {"input": [-23.0, 60.5], "expected": 60.5}, {"input": [-23.0, 61.0], "expected": 61.0}, {"input": [-23.0, 61.5], "expected": 61.5}, {"input": [-23.0, 62.0], "expected": 62.0}, {"input": [-23.0, 62.5], "expected": 62.5}, {"input": [-23.0, 63.0], "expected": 63.0}, {"input": [-23.0, 63.5], "expected": 63.5}, {"input": [-23.0, 64.0], "expected": 64.0}, {"input": [-23.0, 64.5], "expected": 64.5}, {"input": [-23.0, 65.0], "expected": 65.0}, {"input": [-23.0, 65.5], "expected": 65.5}, {"input": [-23.0, 66.0], "expected": 66.0}, {"input": [-23.0, 66.5], "expected": 66.5}, {"input": [-23.0, 67.0], "expected": 67.0}, {"input": [-23.0, 67.5], "expected": 67.5}, {"input": [-23.0, 68.0], "expected": 68.0}, {"input": [-23.0, 68.5], "expected": 68.5}, {"input": [-23.0, 69.0], "expected": 69.0}, {"input": [-23.0, 69.5], "expected": 69.5}, {"input": [-23.0, 70.0], "expected": 70.0}, {"input": [-23.0, 70.5], "expected": 70.5}, {"input": [-23.0, 71.0], "expected": 71.0}, {"input": [-23.0, 71.5], "expected": 71.5}, {"input": [-23.0, 72.0], "expected": 72.0}, {"input": [-23.0, 72.5], "expected": 72.5}, {"input": [-23.0, 73.0], "expected": 73.0}, {"input": [-23.0, 73.5], "expected": 73.5}, {"input": [-23.0, 74.0], "expected": 74.0}, {"input": [-23.0, 74.5], "expected": 74.5}, {"input": [-23.0, 75.0], "expected": 75.0}, {"input": [-23.0, 75.5], "expected": 75.5}, {"input": [-23.0, 76.0], "expected": 76.0}, {"input": [-23.0, 76.5], "expected": 76.5}, {"input": [-23.0, 77.0], "expected": 77.0}, {"input": [-23.0, 77.5], "expected": 77.5}, {"input": [-23.0, 78.0], "expected": 78.0}, {"input": [-23.0, 78.5], "expected": 78.5}, {"input": [-23.0, 79.0], "expected": 79.0}, {"input": [-23.0, 79.5], "expected": 79.5}, {"input": [-23.0, 80.0], "expected": 80.0}, {"input": [-23.0, 80.5], "expected": 80.5}, {"input": [-23.0, 81.0], "expected": 81.0}, {"input": [-23.0, 81.5], "expected": 81.5}, {"input": [-23.0, 82.0], "expected": 82.0}, {"input": [-23.0, 82.5], "expected": 82.5}, {"input": [-23.0, 83.0], "expected": 83.0}, {"input": [-23.0, 83.5], "expected": 83.5}, {"input": [-23.0, 84.0], "expected": 84.0}, {"input": [-23.0, 84.5], "expected": 84.5}, {"input": [-23.0, 85.0], "expected": 85.0}, {"input": [-23.0, 85.5], "expected": 85.5}, {"input": [-23.0, 86.0], "expected": 86.0}, {"input": [-23.0, 86.5], "expected": 86.5}, {"input": [-23.0, 87.0], "expected": 87.0}, {"input": [-23.0, 87.5], "expected": 87.5}, {"input": [-23.0, 88.0], "expected": 88.0}, {"input": [-23.0, 88.5], "expected": 88.5}, {"input": [-23.0, 89.0], "expected": 89.0}, {"input": [-23.0, 89.5], "expected": 89.5}, {"input": [-23.0, 90.0], "expected": 90.0}, {"input": [-23.0, 90.5], "expected": 90.5}, {"input": [-23.0, 91.0], "expected": 91.0}, {"input": [-23.0, 91.5], "expected": 91.5}, {"input": [-23.0, 92.0], "expected": 92.0}, {"input": [-23.0, 92.5], "expected": 92.5}, {"input": [-23.0, 93.0], "expected": 93.0}, {"input": [-23.0, 93.5], "expected": 93.5}, {"input": [-23.0, 94.0], "expected": 94.0}, {"input": [-23.0, 94.5], "expected": 94.5}, {"input": [-23.0, 95.0], "expected": 95.0}, {"input": [-23.0, 95.5], "expected": 95.5}, {"input": [-23.0, 96.0], "expected": 96.0}, {"input": [-23.0, 96.5], "expected": 96.5}, {"input": [-23.0, 97.0], "expected": 97.0}, {"input": [-23.0, 97.5], "expected": 97.5}, {"input": [-23.0, 98.0], "expected": 98.0}, {"input": [-23.0, 98.5], "expected": 98.5}, {"input": [-23.0, 99.0], "expected": 99.0}, {"input": [-23.0, 99.5], "expected": 99.5}, {"input": [-22.5, -100.0], "expected": -22.5}, {"input": [-22.5, -99.5], "expected": -22.5}, {"input": [-22.5, -99.0], "expected": -22.5}, {"input": [-22.5, -98.5], "expected": -22.5}, {"input": [-22.5, -98.0], "expected": -22.5}, {"input": [-22.5, -97.5], "expected": -22.5}, {"input": [-22.5, -97.0], "expected": -22.5}, {"input": [-22.5, -96.5], "expected": -22.5}, {"input": [-22.5, -96.0], "expected": -22.5}, {"input": [-22.5, -95.5], "expected": -22.5}, {"input": [-22.5, -95.0], "expected": -22.5}, {"input": [-22.5, -94.5], "expected": -22.5}, {"input": [-22.5, -94.0], "expected": -22.5}, {"input": [-22.5, -93.5], "expected": -22.5}, {"input": [-22.5, -93.0], "expected": -22.5}, {"input": [-22.5, -92.5], "expected": -22.5}, {"input": [-22.5, -92.0], "expected": -22.5}, {"input": [-22.5, -91.5], "expected": -22.5}, {"input": [-22.5, -91.0], "expected": -22.5}, {"input": [-22.5, -90.5], "expected": -22.5}, {"input": [-22.5, -90.0], "expected": -22.5}, {"input": [-22.5, -89.5], "expected": -22.5}, {"input": [-22.5, -89.0], "expected": -22.5}, {"input": [-22.5, -88.5], "expected": -22.5}, {"input": [-22.5, -88.0], "expected": -22.5}, {"input": [-22.5, -87.5], "expected": -22.5}, {"input": [-22.5, -87.0], "expected": -22.5}, {"input": [-22.5, -86.5], "expected": -22.5}, {"input": [-22.5, -86.0], "expected": -22.5}, {"input": [-22.5, -85.5], "expected": -22.5}, {"input": [-22.5, -85.0], "expected": -22.5}, {"input": [-22.5, -84.5], "expected": -22.5}, {"input": [-22.5, -84.0], "expected": -22.5}, {"input": [-22.5, -83.5], "expected": -22.5}, {"input": [-22.5, -83.0], "expected": -22.5}, {"input": [-22.5, -82.5], "expected": -22.5}, {"input": [-22.5, -82.0], "expected": -22.5}, {"input": [-22.5, -81.5], "expected": -22.5}, {"input": [-22.5, -81.0], "expected": -22.5}, {"input": [-22.5, -80.5], "expected": -22.5}, {"input": [-22.5, -80.0], "expected": -22.5}, {"input": [-22.5, -79.5], "expected": -22.5}, {"input": [-22.5, -79.0], "expected": -22.5}, {"input": [-22.5, -78.5], "expected": -22.5}, {"input": [-22.5, -78.0], "expected": -22.5}, {"input": [-22.5, -77.5], "expected": -22.5}, {"input": [-22.5, -77.0], "expected": -22.5}, {"input": [-22.5, -76.5], "expected": -22.5}, {"input": [-22.5, -76.0], "expected": -22.5}, {"input": [-22.5, -75.5], "expected": -22.5}, {"input": [-22.5, -75.0], "expected": -22.5}, {"input": [-22.5, -74.5], "expected": -22.5}, {"input": [-22.5, -74.0], "expected": -22.5}, {"input": [-22.5, -73.5], "expected": -22.5}, {"input": [-22.5, -73.0], "expected": -22.5}, {"input": [-22.5, -72.5], "expected": -22.5}, {"input": [-22.5, -72.0], "expected": -22.5}, {"input": [-22.5, -71.5], "expected": -22.5}, {"input": [-22.5, -71.0], "expected": -22.5}, {"input": [-22.5, -70.5], "expected": -22.5}, {"input": [-22.5, -70.0], "expected": -22.5}, {"input": [-22.5, -69.5], "expected": -22.5}, {"input": [-22.5, -69.0], "expected": -22.5}, {"input": [-22.5, -68.5], "expected": -22.5}, {"input": [-22.5, -68.0], "expected": -22.5}, {"input": [-22.5, -67.5], "expected": -22.5}, {"input": [-22.5, -67.0], "expected": -22.5}, {"input": [-22.5, -66.5], "expected": -22.5}, {"input": [-22.5, -66.0], "expected": -22.5}, {"input": [-22.5, -65.5], "expected": -22.5}, {"input": [-22.5, -65.0], "expected": -22.5}, {"input": [-22.5, -64.5], "expected": -22.5}, {"input": [-22.5, -64.0], "expected": -22.5}, {"input": [-22.5, -63.5], "expected": -22.5}, {"input": [-22.5, -63.0], "expected": -22.5}, {"input": [-22.5, -62.5], "expected": -22.5}, {"input": [-22.5, -62.0], "expected": -22.5}, {"input": [-22.5, -61.5], "expected": -22.5}, {"input": [-22.5, -61.0], "expected": -22.5}, {"input": [-22.5, -60.5], "expected": -22.5}, {"input": [-22.5, -60.0], "expected": -22.5}, {"input": [-22.5, -59.5], "expected": -22.5}, {"input": [-22.5, -59.0], "expected": -22.5}, {"input": [-22.5, -58.5], "expected": -22.5}, {"input": [-22.5, -58.0], "expected": -22.5}, {"input": [-22.5, -57.5], "expected": -22.5}, {"input": [-22.5, -57.0], "expected": -22.5}, {"input": [-22.5, -56.5], "expected": -22.5}, {"input": [-22.5, -56.0], "expected": -22.499999999999996}, {"input": [-22.5, -55.5], "expected": -22.499999999999996}, {"input": [-22.5, -55.0], "expected": -22.499999999999993}, {"input": [-22.5, -54.5], "expected": -22.499999999999986}, {"input": [-22.5, -54.0], "expected": -22.49999999999998}, {"input": [-22.5, -53.5], "expected": -22.499999999999964}, {"input": [-22.5, -53.0], "expected": -22.499999999999943}, {"input": [-22.5, -52.5], "expected": -22.499999999999908}, {"input": [-22.5, -52.0], "expected": -22.499999999999847}, {"input": [-22.5, -51.5], "expected": -22.499999999999744}, {"input": [-22.5, -51.0], "expected": -22.49999999999958}, {"input": [-22.5, -50.5], "expected": -22.499999999999307}, {"input": [-22.5, -50.0], "expected": -22.49999999999886}, {"input": [-22.5, -49.5], "expected": -22.49999999999812}, {"input": [-22.5, -49.0], "expected": -22.499999999996902}, {"input": [-22.5, -48.5], "expected": -22.49999999999489}, {"input": [-22.5, -48.0], "expected": -22.499999999991577}, {"input": [-22.5, -47.5], "expected": -22.499999999986112}, {"input": [-22.5, -47.0], "expected": -22.499999999977103}, {"input": [-22.5, -46.5], "expected": -22.49999999996225}, {"input": [-22.5, -46.0], "expected": -22.49999999993776}, {"input": [-22.5, -45.5], "expected": -22.49999999989738}, {"input": [-22.5, -45.0], "expected": -22.49999999983081}, {"input": [-22.5, -44.5], "expected": -22.49999999972105}, {"input": [-22.5, -44.0], "expected": -22.499999999540094}, {"input": [-22.5, -43.5], "expected": -22.499999999241744}, {"input": [-22.5, -43.0], "expected": -22.499999998749846}, {"input": [-22.5, -42.5], "expected": -22.499999997938847}, {"input": [-22.5, -42.0], "expected": -22.499999996601733}, {"input": [-22.5, -41.5], "expected": -22.499999994397204}, {"input": [-22.5, -41.0], "expected": -22.49999999076255}, {"input": [-22.5, -40.5], "expected": -22.49999998477002}, {"input": [-22.5, -40.0], "expected": -22.49999997489001}, {"input": [-22.5, -39.5], "expected": -22.499999958600625}, {"input": [-22.5, -39.0], "expected": -22.499999931743968}, {"input": [-22.5, -38.5], "expected": -22.49999988746483}, {"input": [-22.5, -38.0], "expected": -22.49999981446088}, {"input": [-22.5, -37.5], "expected": -22.499999694097728}, {"input": [-22.5, -37.0], "expected": -22.499999495652464}, {"input": [-22.5, -36.5], "expected": -22.499999168471625}, {"input": [-22.5, -36.0], "expected": -22.499998629041855}, {"input": [-22.5, -35.5], "expected": -22.499997739673148}, {"input": [-22.5, -35.0], "expected": -22.499996273353773}, {"input": [-22.5, -34.5], "expected": -22.499993855806522}, {"input": [-22.5, -34.0], "expected": -22.49998986995771}, {"input": [-22.5, -33.5], "expected": -22.499983298438682}, {"input": [-22.5, -33.0], "expected": -22.499972463929772}, {"input": [-22.5, -32.5], "expected": -22.499954601100782}, {"input": [-22.5, -32.0], "expected": -22.49992515097137}, {"input": [-22.5, -31.5], "expected": -22.499876597810278}, {"input": [-22.5, -31.0], "expected": -22.499796552327872}, {"input": [-22.5, -30.5], "expected": -22.499664593627106}, {"input": [-22.5, -30.0], "expected": -22.49944706852464}, {"input": [-22.5, -29.5], "expected": -22.499088533546225}, {"input": [-22.5, -29.0], "expected": -22.498497689840246}, {"input": [-22.5, -28.5], "expected": -22.497524314862268}, {"input": [-22.5, -28.0], "expected": -22.495921556729428}, {"input": [-22.5, -27.5], "expected": -22.493284651510884}, {"input": [-22.5, -27.0], "expected": -22.488952255151407}, {"input": [-22.5, -26.5], "expected": -22.48185007208219}, {"input": [-22.5, -26.0], "expected": -22.47024958172738}, {"input": [-22.5, -25.5], "expected": -22.451412648426256}, {"input": [-22.5, -25.0], "expected": -22.42111026570745}, {"input": [-22.5, -24.5], "expected": -22.373071988957026}, {"input": [-22.5, -24.0], "expected": -22.298586722017248}, {"input": [-22.5, -23.5], "expected": -22.186738312481776}, {"input": [-22.5, -23.0], "expected": -22.02592301581989}, {"input": [-22.5, -22.5], "expected": -21.806852819440056}, {"input": [-22.5, -22.0], "expected": -21.52592301581989}, {"input": [-22.5, -21.5], "expected": -21.186738312481776}, {"input": [-22.5, -21.0], "expected": -20.798586722017248}, {"input": [-22.5, -20.5], "expected": -20.373071988957026}, {"input": [-22.5, -20.0], "expected": -19.92111026570745}, {"input": [-22.5, -19.5], "expected": -19.451412648426256}, {"input": [-22.5, -19.0], "expected": -18.97024958172738}, {"input": [-22.5, -18.5], "expected": -18.48185007208219}, {"input": [-22.5, -18.0], "expected": -17.988952255151407}, {"input": [-22.5, -17.5], "expected": -17.493284651510884}, {"input": [-22.5, -17.0], "expected": -16.995921556729428}, {"input": [-22.5, -16.5], "expected": -16.497524314862268}, {"input": [-22.5, -16.0], "expected": -15.998497689840246}, {"input": [-22.5, -15.5], "expected": -15.499088533546226}, {"input": [-22.5, -15.0], "expected": -14.999447068524638}, {"input": [-22.5, -14.5], "expected": -14.499664593627104}, {"input": [-22.5, -14.0], "expected": -13.99979655232787}, {"input": [-22.5, -13.5], "expected": -13.499876597810276}, {"input": [-22.5, -13.0], "expected": -12.999925150971372}, {"input": [-22.5, -12.5], "expected": -12.499954601100782}, {"input": [-22.5, -12.0], "expected": -11.99997246392977}, {"input": [-22.5, -11.5], "expected": -11.499983298438682}, {"input": [-22.5, -11.0], "expected": -10.99998986995771}, {"input": [-22.5, -10.5], "expected": -10.499993855806522}, {"input": [-22.5, -10.0], "expected": -9.999996273353771}, {"input": [-22.5, -9.5], "expected": -9.499997739673148}, {"input": [-22.5, -9.0], "expected": -8.999998629041853}, {"input": [-22.5, -8.5], "expected": -8.499999168471627}, {"input": [-22.5, -8.0], "expected": -7.999999495652465}, {"input": [-22.5, -7.5], "expected": -7.499999694097727}, {"input": [-22.5, -7.0], "expected": -6.999999814460881}, {"input": [-22.5, -6.5], "expected": -6.499999887464831}, {"input": [-22.5, -6.0], "expected": -5.999999931743969}, {"input": [-22.5, -5.5], "expected": -5.499999958600624}, {"input": [-22.5, -5.0], "expected": -4.999999974890009}, {"input": [-22.5, -4.5], "expected": -4.49999998477002}, {"input": [-22.5, -4.0], "expected": -3.9999999907625505}, {"input": [-22.5, -3.5], "expected": -3.4999999943972036}, {"input": [-22.5, -3.0], "expected": -2.999999996601732}, {"input": [-22.5, -2.5], "expected": -2.4999999979388465}, {"input": [-22.5, -2.0], "expected": -1.9999999987498471}, {"input": [-22.5, -1.5], "expected": -1.4999999992417439}, {"input": [-22.5, -1.0], "expected": -0.9999999995400944}, {"input": [-22.5, -0.5], "expected": -0.4999999997210532}, {"input": [-22.5, 0.0], "expected": 1.6918979224720044e-10}, {"input": [-22.5, 0.5], "expected": 0.5000000001026188}, {"input": [-22.5, 1.0], "expected": 1.0000000000622415}, {"input": [-22.5, 1.5], "expected": 1.5000000000377514}, {"input": [-22.5, 2.0], "expected": 2.0000000000228972}, {"input": [-22.5, 2.5], "expected": 2.500000000013888}, {"input": [-22.5, 3.0], "expected": 3.0000000000084235}, {"input": [-22.5, 3.5], "expected": 3.5000000000051092}, {"input": [-22.5, 4.0], "expected": 4.000000000003099}, {"input": [-22.5, 4.5], "expected": 4.500000000001879}, {"input": [-22.5, 5.0], "expected": 5.00000000000114}, {"input": [-22.5, 5.5], "expected": 5.500000000000691}, {"input": [-22.5, 6.0], "expected": 6.000000000000419}, {"input": [-22.5, 6.5], "expected": 6.500000000000254}, {"input": [-22.5, 7.0], "expected": 7.0000000000001545}, {"input": [-22.5, 7.5], "expected": 7.500000000000093}, {"input": [-22.5, 8.0], "expected": 8.000000000000057}, {"input": [-22.5, 8.5], "expected": 8.500000000000034}, {"input": [-22.5, 9.0], "expected": 9.000000000000021}, {"input": [-22.5, 9.5], "expected": 9.500000000000012}, {"input": [-22.5, 10.0], "expected": 10.000000000000007}, {"input": [-22.5, 10.5], "expected": 10.500000000000005}, {"input": [-22.5, 11.0], "expected": 11.000000000000004}, {"input": [-22.5, 11.5], "expected": 11.500000000000002}, {"input": [-22.5, 12.0], "expected": 12.000000000000002}, {"input": [-22.5, 12.5], "expected": 12.5}, {"input": [-22.5, 13.0], "expected": 13.0}, {"input": [-22.5, 13.5], "expected": 13.5}, {"input": [-22.5, 14.0], "expected": 14.0}, {"input": [-22.5, 14.5], "expected": 14.5}, {"input": [-22.5, 15.0], "expected": 15.0}, {"input": [-22.5, 15.5], "expected": 15.5}, {"input": [-22.5, 16.0], "expected": 16.0}, {"input": [-22.5, 16.5], "expected": 16.5}, {"input": [-22.5, 17.0], "expected": 17.0}, {"input": [-22.5, 17.5], "expected": 17.5}, {"input": [-22.5, 18.0], "expected": 18.0}, {"input": [-22.5, 18.5], "expected": 18.5}, {"input": [-22.5, 19.0], "expected": 19.0}, {"input": [-22.5, 19.5], "expected": 19.5}, {"input": [-22.5, 20.0], "expected": 20.0}, {"input": [-22.5, 20.5], "expected": 20.5}, {"input": [-22.5, 21.0], "expected": 21.0}, {"input": [-22.5, 21.5], "expected": 21.5}, {"input": [-22.5, 22.0], "expected": 22.0}, {"input": [-22.5, 22.5], "expected": 22.5}, {"input": [-22.5, 23.0], "expected": 23.0}, {"input": [-22.5, 23.5], "expected": 23.5}, {"input": [-22.5, 24.0], "expected": 24.0}, {"input": [-22.5, 24.5], "expected": 24.5}, {"input": [-22.5, 25.0], "expected": 25.0}, {"input": [-22.5, 25.5], "expected": 25.5}, {"input": [-22.5, 26.0], "expected": 26.0}, {"input": [-22.5, 26.5], "expected": 26.5}, {"input": [-22.5, 27.0], "expected": 27.0}, {"input": [-22.5, 27.5], "expected": 27.5}, {"input": [-22.5, 28.0], "expected": 28.0}, {"input": [-22.5, 28.5], "expected": 28.5}, {"input": [-22.5, 29.0], "expected": 29.0}, {"input": [-22.5, 29.5], "expected": 29.5}, {"input": [-22.5, 30.0], "expected": 30.0}, {"input": [-22.5, 30.5], "expected": 30.5}, {"input": [-22.5, 31.0], "expected": 31.0}, {"input": [-22.5, 31.5], "expected": 31.5}, {"input": [-22.5, 32.0], "expected": 32.0}, {"input": [-22.5, 32.5], "expected": 32.5}, {"input": [-22.5, 33.0], "expected": 33.0}, {"input": [-22.5, 33.5], "expected": 33.5}, {"input": [-22.5, 34.0], "expected": 34.0}, {"input": [-22.5, 34.5], "expected": 34.5}, {"input": [-22.5, 35.0], "expected": 35.0}, {"input": [-22.5, 35.5], "expected": 35.5}, {"input": [-22.5, 36.0], "expected": 36.0}, {"input": [-22.5, 36.5], "expected": 36.5}, {"input": [-22.5, 37.0], "expected": 37.0}, {"input": [-22.5, 37.5], "expected": 37.5}, {"input": [-22.5, 38.0], "expected": 38.0}, {"input": [-22.5, 38.5], "expected": 38.5}, {"input": [-22.5, 39.0], "expected": 39.0}, {"input": [-22.5, 39.5], "expected": 39.5}, {"input": [-22.5, 40.0], "expected": 40.0}, {"input": [-22.5, 40.5], "expected": 40.5}, {"input": [-22.5, 41.0], "expected": 41.0}, {"input": [-22.5, 41.5], "expected": 41.5}, {"input": [-22.5, 42.0], "expected": 42.0}, {"input": [-22.5, 42.5], "expected": 42.5}, {"input": [-22.5, 43.0], "expected": 43.0}, {"input": [-22.5, 43.5], "expected": 43.5}, {"input": [-22.5, 44.0], "expected": 44.0}, {"input": [-22.5, 44.5], "expected": 44.5}, {"input": [-22.5, 45.0], "expected": 45.0}, {"input": [-22.5, 45.5], "expected": 45.5}, {"input": [-22.5, 46.0], "expected": 46.0}, {"input": [-22.5, 46.5], "expected": 46.5}, {"input": [-22.5, 47.0], "expected": 47.0}, {"input": [-22.5, 47.5], "expected": 47.5}, {"input": [-22.5, 48.0], "expected": 48.0}, {"input": [-22.5, 48.5], "expected": 48.5}, {"input": [-22.5, 49.0], "expected": 49.0}, {"input": [-22.5, 49.5], "expected": 49.5}, {"input": [-22.5, 50.0], "expected": 50.0}, {"input": [-22.5, 50.5], "expected": 50.5}, {"input": [-22.5, 51.0], "expected": 51.0}, {"input": [-22.5, 51.5], "expected": 51.5}, {"input": [-22.5, 52.0], "expected": 52.0}, {"input": [-22.5, 52.5], "expected": 52.5}, {"input": [-22.5, 53.0], "expected": 53.0}, {"input": [-22.5, 53.5], "expected": 53.5}, {"input": [-22.5, 54.0], "expected": 54.0}, {"input": [-22.5, 54.5], "expected": 54.5}, {"input": [-22.5, 55.0], "expected": 55.0}, {"input": [-22.5, 55.5], "expected": 55.5}, {"input": [-22.5, 56.0], "expected": 56.0}, {"input": [-22.5, 56.5], "expected": 56.5}, {"input": [-22.5, 57.0], "expected": 57.0}, {"input": [-22.5, 57.5], "expected": 57.5}, {"input": [-22.5, 58.0], "expected": 58.0}, {"input": [-22.5, 58.5], "expected": 58.5}, {"input": [-22.5, 59.0], "expected": 59.0}, {"input": [-22.5, 59.5], "expected": 59.5}, {"input": [-22.5, 60.0], "expected": 60.0}, {"input": [-22.5, 60.5], "expected": 60.5}, {"input": [-22.5, 61.0], "expected": 61.0}, {"input": [-22.5, 61.5], "expected": 61.5}, {"input": [-22.5, 62.0], "expected": 62.0}, {"input": [-22.5, 62.5], "expected": 62.5}, {"input": [-22.5, 63.0], "expected": 63.0}, {"input": [-22.5, 63.5], "expected": 63.5}, {"input": [-22.5, 64.0], "expected": 64.0}, {"input": [-22.5, 64.5], "expected": 64.5}, {"input": [-22.5, 65.0], "expected": 65.0}, {"input": [-22.5, 65.5], "expected": 65.5}, {"input": [-22.5, 66.0], "expected": 66.0}, {"input": [-22.5, 66.5], "expected": 66.5}, {"input": [-22.5, 67.0], "expected": 67.0}, {"input": [-22.5, 67.5], "expected": 67.5}, {"input": [-22.5, 68.0], "expected": 68.0}, {"input": [-22.5, 68.5], "expected": 68.5}, {"input": [-22.5, 69.0], "expected": 69.0}, {"input": [-22.5, 69.5], "expected": 69.5}, {"input": [-22.5, 70.0], "expected": 70.0}, {"input": [-22.5, 70.5], "expected": 70.5}, {"input": [-22.5, 71.0], "expected": 71.0}, {"input": [-22.5, 71.5], "expected": 71.5}, {"input": [-22.5, 72.0], "expected": 72.0}, {"input": [-22.5, 72.5], "expected": 72.5}, {"input": [-22.5, 73.0], "expected": 73.0}, {"input": [-22.5, 73.5], "expected": 73.5}, {"input": [-22.5, 74.0], "expected": 74.0}, {"input": [-22.5, 74.5], "expected": 74.5}, {"input": [-22.5, 75.0], "expected": 75.0}, {"input": [-22.5, 75.5], "expected": 75.5}, {"input": [-22.5, 76.0], "expected": 76.0}, {"input": [-22.5, 76.5], "expected": 76.5}, {"input": [-22.5, 77.0], "expected": 77.0}, {"input": [-22.5, 77.5], "expected": 77.5}, {"input": [-22.5, 78.0], "expected": 78.0}, {"input": [-22.5, 78.5], "expected": 78.5}, {"input": [-22.5, 79.0], "expected": 79.0}, {"input": [-22.5, 79.5], "expected": 79.5}, {"input": [-22.5, 80.0], "expected": 80.0}, {"input": [-22.5, 80.5], "expected": 80.5}, {"input": [-22.5, 81.0], "expected": 81.0}, {"input": [-22.5, 81.5], "expected": 81.5}, {"input": [-22.5, 82.0], "expected": 82.0}, {"input": [-22.5, 82.5], "expected": 82.5}, {"input": [-22.5, 83.0], "expected": 83.0}, {"input": [-22.5, 83.5], "expected": 83.5}, {"input": [-22.5, 84.0], "expected": 84.0}, {"input": [-22.5, 84.5], "expected": 84.5}, {"input": [-22.5, 85.0], "expected": 85.0}, {"input": [-22.5, 85.5], "expected": 85.5}, {"input": [-22.5, 86.0], "expected": 86.0}, {"input": [-22.5, 86.5], "expected": 86.5}, {"input": [-22.5, 87.0], "expected": 87.0}, {"input": [-22.5, 87.5], "expected": 87.5}, {"input": [-22.5, 88.0], "expected": 88.0}, {"input": [-22.5, 88.5], "expected": 88.5}, {"input": [-22.5, 89.0], "expected": 89.0}, {"input": [-22.5, 89.5], "expected": 89.5}, {"input": [-22.5, 90.0], "expected": 90.0}, {"input": [-22.5, 90.5], "expected": 90.5}, {"input": [-22.5, 91.0], "expected": 91.0}, {"input": [-22.5, 91.5], "expected": 91.5}, {"input": [-22.5, 92.0], "expected": 92.0}, {"input": [-22.5, 92.5], "expected": 92.5}, {"input": [-22.5, 93.0], "expected": 93.0}, {"input": [-22.5, 93.5], "expected": 93.5}, {"input": [-22.5, 94.0], "expected": 94.0}, {"input": [-22.5, 94.5], "expected": 94.5}, {"input": [-22.5, 95.0], "expected": 95.0}, {"input": [-22.5, 95.5], "expected": 95.5}, {"input": [-22.5, 96.0], "expected": 96.0}, {"input": [-22.5, 96.5], "expected": 96.5}, {"input": [-22.5, 97.0], "expected": 97.0}, {"input": [-22.5, 97.5], "expected": 97.5}, {"input": [-22.5, 98.0], "expected": 98.0}, {"input": [-22.5, 98.5], "expected": 98.5}, {"input": [-22.5, 99.0], "expected": 99.0}, {"input": [-22.5, 99.5], "expected": 99.5}, {"input": [-22.0, -100.0], "expected": -22.0}, {"input": [-22.0, -99.5], "expected": -22.0}, {"input": [-22.0, -99.0], "expected": -22.0}, {"input": [-22.0, -98.5], "expected": -22.0}, {"input": [-22.0, -98.0], "expected": -22.0}, {"input": [-22.0, -97.5], "expected": -22.0}, {"input": [-22.0, -97.0], "expected": -22.0}, {"input": [-22.0, -96.5], "expected": -22.0}, {"input": [-22.0, -96.0], "expected": -22.0}, {"input": [-22.0, -95.5], "expected": -22.0}, {"input": [-22.0, -95.0], "expected": -22.0}, {"input": [-22.0, -94.5], "expected": -22.0}, {"input": [-22.0, -94.0], "expected": -22.0}, {"input": [-22.0, -93.5], "expected": -22.0}, {"input": [-22.0, -93.0], "expected": -22.0}, {"input": [-22.0, -92.5], "expected": -22.0}, {"input": [-22.0, -92.0], "expected": -22.0}, {"input": [-22.0, -91.5], "expected": -22.0}, {"input": [-22.0, -91.0], "expected": -22.0}, {"input": [-22.0, -90.5], "expected": -22.0}, {"input": [-22.0, -90.0], "expected": -22.0}, {"input": [-22.0, -89.5], "expected": -22.0}, {"input": [-22.0, -89.0], "expected": -22.0}, {"input": [-22.0, -88.5], "expected": -22.0}, {"input": [-22.0, -88.0], "expected": -22.0}, {"input": [-22.0, -87.5], "expected": -22.0}, {"input": [-22.0, -87.0], "expected": -22.0}, {"input": [-22.0, -86.5], "expected": -22.0}, {"input": [-22.0, -86.0], "expected": -22.0}, {"input": [-22.0, -85.5], "expected": -22.0}, {"input": [-22.0, -85.0], "expected": -22.0}, {"input": [-22.0, -84.5], "expected": -22.0}, {"input": [-22.0, -84.0], "expected": -22.0}, {"input": [-22.0, -83.5], "expected": -22.0}, {"input": [-22.0, -83.0], "expected": -22.0}, {"input": [-22.0, -82.5], "expected": -22.0}, {"input": [-22.0, -82.0], "expected": -22.0}, {"input": [-22.0, -81.5], "expected": -22.0}, {"input": [-22.0, -81.0], "expected": -22.0}, {"input": [-22.0, -80.5], "expected": -22.0}, {"input": [-22.0, -80.0], "expected": -22.0}, {"input": [-22.0, -79.5], "expected": -22.0}, {"input": [-22.0, -79.0], "expected": -22.0}, {"input": [-22.0, -78.5], "expected": -22.0}, {"input": [-22.0, -78.0], "expected": -22.0}, {"input": [-22.0, -77.5], "expected": -22.0}, {"input": [-22.0, -77.0], "expected": -22.0}, {"input": [-22.0, -76.5], "expected": -22.0}, {"input": [-22.0, -76.0], "expected": -22.0}, {"input": [-22.0, -75.5], "expected": -22.0}, {"input": [-22.0, -75.0], "expected": -22.0}, {"input": [-22.0, -74.5], "expected": -22.0}, {"input": [-22.0, -74.0], "expected": -22.0}, {"input": [-22.0, -73.5], "expected": -22.0}, {"input": [-22.0, -73.0], "expected": -22.0}, {"input": [-22.0, -72.5], "expected": -22.0}, {"input": [-22.0, -72.0], "expected": -22.0}, {"input": [-22.0, -71.5], "expected": -22.0}, {"input": [-22.0, -71.0], "expected": -22.0}, {"input": [-22.0, -70.5], "expected": -22.0}, {"input": [-22.0, -70.0], "expected": -22.0}, {"input": [-22.0, -69.5], "expected": -22.0}, {"input": [-22.0, -69.0], "expected": -22.0}, {"input": [-22.0, -68.5], "expected": -22.0}, {"input": [-22.0, -68.0], "expected": -22.0}, {"input": [-22.0, -67.5], "expected": -22.0}, {"input": [-22.0, -67.0], "expected": -22.0}, {"input": [-22.0, -66.5], "expected": -22.0}, {"input": [-22.0, -66.0], "expected": -22.0}, {"input": [-22.0, -65.5], "expected": -22.0}, {"input": [-22.0, -65.0], "expected": -22.0}, {"input": [-22.0, -64.5], "expected": -22.0}, {"input": [-22.0, -64.0], "expected": -22.0}, {"input": [-22.0, -63.5], "expected": -22.0}, {"input": [-22.0, -63.0], "expected": -22.0}, {"input": [-22.0, -62.5], "expected": -22.0}, {"input": [-22.0, -62.0], "expected": -22.0}, {"input": [-22.0, -61.5], "expected": -22.0}, {"input": [-22.0, -61.0], "expected": -22.0}, {"input": [-22.0, -60.5], "expected": -22.0}, {"input": [-22.0, -60.0], "expected": -22.0}, {"input": [-22.0, -59.5], "expected": -22.0}, {"input": [-22.0, -59.0], "expected": -22.0}, {"input": [-22.0, -58.5], "expected": -22.0}, {"input": [-22.0, -58.0], "expected": -22.0}, {"input": [-22.0, -57.5], "expected": -22.0}, {"input": [-22.0, -57.0], "expected": -22.0}, {"input": [-22.0, -56.5], "expected": -22.0}, {"input": [-22.0, -56.0], "expected": -22.0}, {"input": [-22.0, -55.5], "expected": -21.999999999999996}, {"input": [-22.0, -55.0], "expected": -21.999999999999996}, {"input": [-22.0, -54.5], "expected": -21.999999999999993}, {"input": [-22.0, -54.0], "expected": -21.999999999999986}, {"input": [-22.0, -53.5], "expected": -21.99999999999998}, {"input": [-22.0, -53.0], "expected": -21.999999999999964}, {"input": [-22.0, -52.5], "expected": -21.999999999999943}, {"input": [-22.0, -52.0], "expected": -21.999999999999908}, {"input": [-22.0, -51.5], "expected": -21.999999999999847}, {"input": [-22.0, -51.0], "expected": -21.999999999999744}, {"input": [-22.0, -50.5], "expected": -21.99999999999958}, {"input": [-22.0, -50.0], "expected": -21.999999999999307}, {"input": [-22.0, -49.5], "expected": -21.99999999999886}, {"input": [-22.0, -49.0], "expected": -21.99999999999812}, {"input": [-22.0, -48.5], "expected": -21.999999999996902}, {"input": [-22.0, -48.0], "expected": -21.99999999999489}, {"input": [-22.0, -47.5], "expected": -21.999999999991577}, {"input": [-22.0, -47.0], "expected": -21.999999999986112}, {"input": [-22.0, -46.5], "expected": -21.999999999977103}, {"input": [-22.0, -46.0], "expected": -21.99999999996225}, {"input": [-22.0, -45.5], "expected": -21.99999999993776}, {"input": [-22.0, -45.0], "expected": -21.99999999989738}, {"input": [-22.0, -44.5], "expected": -21.99999999983081}, {"input": [-22.0, -44.0], "expected": -21.99999999972105}, {"input": [-22.0, -43.5], "expected": -21.999999999540094}, {"input": [-22.0, -43.0], "expected": -21.999999999241744}, {"input": [-22.0, -42.5], "expected": -21.999999998749846}, {"input": [-22.0, -42.0], "expected": -21.999999997938847}, {"input": [-22.0, -41.5], "expected": -21.999999996601733}, {"input": [-22.0, -41.0], "expected": -21.999999994397204}, {"input": [-22.0, -40.5], "expected": -21.99999999076255}, {"input": [-22.0, -40.0], "expected": -21.99999998477002}, {"input": [-22.0, -39.5], "expected": -21.99999997489001}, {"input": [-22.0, -39.0], "expected": -21.999999958600625}, {"input": [-22.0, -38.5], "expected": -21.999999931743968}, {"input": [-22.0, -38.0], "expected": -21.99999988746483}, {"input": [-22.0, -37.5], "expected": -21.99999981446088}, {"input": [-22.0, -37.0], "expected": -21.999999694097728}, {"input": [-22.0, -36.5], "expected": -21.999999495652464}, {"input": [-22.0, -36.0], "expected": -21.999999168471625}, {"input": [-22.0, -35.5], "expected": -21.999998629041855}, {"input": [-22.0, -35.0], "expected": -21.999997739673148}, {"input": [-22.0, -34.5], "expected": -21.999996273353773}, {"input": [-22.0, -34.0], "expected": -21.999993855806522}, {"input": [-22.0, -33.5], "expected": -21.99998986995771}, {"input": [-22.0, -33.0], "expected": -21.999983298438682}, {"input": [-22.0, -32.5], "expected": -21.999972463929772}, {"input": [-22.0, -32.0], "expected": -21.999954601100782}, {"input": [-22.0, -31.5], "expected": -21.99992515097137}, {"input": [-22.0, -31.0], "expected": -21.999876597810278}, {"input": [-22.0, -30.5], "expected": -21.999796552327872}, {"input": [-22.0, -30.0], "expected": -21.999664593627106}, {"input": [-22.0, -29.5], "expected": -21.99944706852464}, {"input": [-22.0, -29.0], "expected": -21.999088533546225}, {"input": [-22.0, -28.5], "expected": -21.998497689840246}, {"input": [-22.0, -28.0], "expected": -21.997524314862268}, {"input": [-22.0, -27.5], "expected": -21.995921556729428}, {"input": [-22.0, -27.0], "expected": -21.993284651510884}, {"input": [-22.0, -26.5], "expected": -21.988952255151407}, {"input": [-22.0, -26.0], "expected": -21.98185007208219}, {"input": [-22.0, -25.5], "expected": -21.97024958172738}, {"input": [-22.0, -25.0], "expected": -21.951412648426256}, {"input": [-22.0, -24.5], "expected": -21.92111026570745}, {"input": [-22.0, -24.0], "expected": -21.873071988957026}, {"input": [-22.0, -23.5], "expected": -21.798586722017248}, {"input": [-22.0, -23.0], "expected": -21.686738312481776}, {"input": [-22.0, -22.5], "expected": -21.52592301581989}, {"input": [-22.0, -22.0], "expected": -21.306852819440056}, {"input": [-22.0, -21.5], "expected": -21.02592301581989}, {"input": [-22.0, -21.0], "expected": -20.686738312481776}, {"input": [-22.0, -20.5], "expected": -20.298586722017248}, {"input": [-22.0, -20.0], "expected": -19.873071988957026}, {"input": [-22.0, -19.5], "expected": -19.42111026570745}, {"input": [-22.0, -19.0], "expected": -18.951412648426256}, {"input": [-22.0, -18.5], "expected": -18.47024958172738}, {"input": [-22.0, -18.0], "expected": -17.98185007208219}, {"input": [-22.0, -17.5], "expected": -17.488952255151407}, {"input": [-22.0, -17.0], "expected": -16.993284651510884}, {"input": [-22.0, -16.5], "expected": -16.495921556729428}, {"input": [-22.0, -16.0], "expected": -15.99752431486227}, {"input": [-22.0, -15.5], "expected": -15.498497689840246}, {"input": [-22.0, -15.0], "expected": -14.999088533546226}, {"input": [-22.0, -14.5], "expected": -14.499447068524638}, {"input": [-22.0, -14.0], "expected": -13.999664593627104}, {"input": [-22.0, -13.5], "expected": -13.49979655232787}, {"input": [-22.0, -13.0], "expected": -12.999876597810276}, {"input": [-22.0, -12.5], "expected": -12.499925150971372}, {"input": [-22.0, -12.0], "expected": -11.999954601100782}, {"input": [-22.0, -11.5], "expected": -11.49997246392977}, {"input": [-22.0, -11.0], "expected": -10.999983298438682}, {"input": [-22.0, -10.5], "expected": -10.49998986995771}, {"input": [-22.0, -10.0], "expected": -9.999993855806522}, {"input": [-22.0, -9.5], "expected": -9.499996273353771}, {"input": [-22.0, -9.0], "expected": -8.999997739673148}, {"input": [-22.0, -8.5], "expected": -8.499998629041853}, {"input": [-22.0, -8.0], "expected": -7.999999168471627}, {"input": [-22.0, -7.5], "expected": -7.499999495652465}, {"input": [-22.0, -7.0], "expected": -6.999999694097727}, {"input": [-22.0, -6.5], "expected": -6.499999814460881}, {"input": [-22.0, -6.0], "expected": -5.999999887464831}, {"input": [-22.0, -5.5], "expected": -5.499999931743969}, {"input": [-22.0, -5.0], "expected": -4.999999958600624}, {"input": [-22.0, -4.5], "expected": -4.499999974890009}, {"input": [-22.0, -4.0], "expected": -3.9999999847700205}, {"input": [-22.0, -3.5], "expected": -3.4999999907625505}, {"input": [-22.0, -3.0], "expected": -2.9999999943972036}, {"input": [-22.0, -2.5], "expected": -2.499999996601732}, {"input": [-22.0, -2.0], "expected": -1.9999999979388463}, {"input": [-22.0, -1.5], "expected": -1.4999999987498471}, {"input": [-22.0, -1.0], "expected": -0.999999999241744}, {"input": [-22.0, -0.5], "expected": -0.49999999954009444}, {"input": [-22.0, 0.0], "expected": 2.789468092479868e-10}, {"input": [-22.0, 0.5], "expected": 0.5000000001691898}, {"input": [-22.0, 1.0], "expected": 1.0000000001026188}, {"input": [-22.0, 1.5], "expected": 1.5000000000622415}, {"input": [-22.0, 2.0], "expected": 2.000000000037751}, {"input": [-22.0, 2.5], "expected": 2.5000000000228972}, {"input": [-22.0, 3.0], "expected": 3.000000000013888}, {"input": [-22.0, 3.5], "expected": 3.5000000000084235}, {"input": [-22.0, 4.0], "expected": 4.000000000005109}, {"input": [-22.0, 4.5], "expected": 4.500000000003099}, {"input": [-22.0, 5.0], "expected": 5.000000000001879}, {"input": [-22.0, 5.5], "expected": 5.50000000000114}, {"input": [-22.0, 6.0], "expected": 6.000000000000691}, {"input": [-22.0, 6.5], "expected": 6.500000000000419}, {"input": [-22.0, 7.0], "expected": 7.000000000000254}, {"input": [-22.0, 7.5], "expected": 7.5000000000001545}, {"input": [-22.0, 8.0], "expected": 8.000000000000094}, {"input": [-22.0, 8.5], "expected": 8.500000000000057}, {"input": [-22.0, 9.0], "expected": 9.000000000000034}, {"input": [-22.0, 9.5], "expected": 9.500000000000021}, {"input": [-22.0, 10.0], "expected": 10.000000000000012}, {"input": [-22.0, 10.5], "expected": 10.500000000000007}, {"input": [-22.0, 11.0], "expected": 11.000000000000005}, {"input": [-22.0, 11.5], "expected": 11.500000000000004}, {"input": [-22.0, 12.0], "expected": 12.000000000000002}, {"input": [-22.0, 12.5], "expected": 12.500000000000002}, {"input": [-22.0, 13.0], "expected": 13.0}, {"input": [-22.0, 13.5], "expected": 13.5}, {"input": [-22.0, 14.0], "expected": 14.0}, {"input": [-22.0, 14.5], "expected": 14.5}, {"input": [-22.0, 15.0], "expected": 15.0}, {"input": [-22.0, 15.5], "expected": 15.5}, {"input": [-22.0, 16.0], "expected": 16.0}, {"input": [-22.0, 16.5], "expected": 16.5}, {"input": [-22.0, 17.0], "expected": 17.0}, {"input": [-22.0, 17.5], "expected": 17.5}, {"input": [-22.0, 18.0], "expected": 18.0}, {"input": [-22.0, 18.5], "expected": 18.5}, {"input": [-22.0, 19.0], "expected": 19.0}, {"input": [-22.0, 19.5], "expected": 19.5}, {"input": [-22.0, 20.0], "expected": 20.0}, {"input": [-22.0, 20.5], "expected": 20.5}, {"input": [-22.0, 21.0], "expected": 21.0}, {"input": [-22.0, 21.5], "expected": 21.5}, {"input": [-22.0, 22.0], "expected": 22.0}, {"input": [-22.0, 22.5], "expected": 22.5}, {"input": [-22.0, 23.0], "expected": 23.0}, {"input": [-22.0, 23.5], "expected": 23.5}, {"input": [-22.0, 24.0], "expected": 24.0}, {"input": [-22.0, 24.5], "expected": 24.5}, {"input": [-22.0, 25.0], "expected": 25.0}, {"input": [-22.0, 25.5], "expected": 25.5}, {"input": [-22.0, 26.0], "expected": 26.0}, {"input": [-22.0, 26.5], "expected": 26.5}, {"input": [-22.0, 27.0], "expected": 27.0}, {"input": [-22.0, 27.5], "expected": 27.5}, {"input": [-22.0, 28.0], "expected": 28.0}, {"input": [-22.0, 28.5], "expected": 28.5}, {"input": [-22.0, 29.0], "expected": 29.0}, {"input": [-22.0, 29.5], "expected": 29.5}, {"input": [-22.0, 30.0], "expected": 30.0}, {"input": [-22.0, 30.5], "expected": 30.5}, {"input": [-22.0, 31.0], "expected": 31.0}, {"input": [-22.0, 31.5], "expected": 31.5}, {"input": [-22.0, 32.0], "expected": 32.0}, {"input": [-22.0, 32.5], "expected": 32.5}, {"input": [-22.0, 33.0], "expected": 33.0}, {"input": [-22.0, 33.5], "expected": 33.5}, {"input": [-22.0, 34.0], "expected": 34.0}, {"input": [-22.0, 34.5], "expected": 34.5}, {"input": [-22.0, 35.0], "expected": 35.0}, {"input": [-22.0, 35.5], "expected": 35.5}, {"input": [-22.0, 36.0], "expected": 36.0}, {"input": [-22.0, 36.5], "expected": 36.5}, {"input": [-22.0, 37.0], "expected": 37.0}, {"input": [-22.0, 37.5], "expected": 37.5}, {"input": [-22.0, 38.0], "expected": 38.0}, {"input": [-22.0, 38.5], "expected": 38.5}, {"input": [-22.0, 39.0], "expected": 39.0}, {"input": [-22.0, 39.5], "expected": 39.5}, {"input": [-22.0, 40.0], "expected": 40.0}, {"input": [-22.0, 40.5], "expected": 40.5}, {"input": [-22.0, 41.0], "expected": 41.0}, {"input": [-22.0, 41.5], "expected": 41.5}, {"input": [-22.0, 42.0], "expected": 42.0}, {"input": [-22.0, 42.5], "expected": 42.5}, {"input": [-22.0, 43.0], "expected": 43.0}, {"input": [-22.0, 43.5], "expected": 43.5}, {"input": [-22.0, 44.0], "expected": 44.0}, {"input": [-22.0, 44.5], "expected": 44.5}, {"input": [-22.0, 45.0], "expected": 45.0}, {"input": [-22.0, 45.5], "expected": 45.5}, {"input": [-22.0, 46.0], "expected": 46.0}, {"input": [-22.0, 46.5], "expected": 46.5}, {"input": [-22.0, 47.0], "expected": 47.0}, {"input": [-22.0, 47.5], "expected": 47.5}, {"input": [-22.0, 48.0], "expected": 48.0}, {"input": [-22.0, 48.5], "expected": 48.5}, {"input": [-22.0, 49.0], "expected": 49.0}, {"input": [-22.0, 49.5], "expected": 49.5}, {"input": [-22.0, 50.0], "expected": 50.0}, {"input": [-22.0, 50.5], "expected": 50.5}, {"input": [-22.0, 51.0], "expected": 51.0}, {"input": [-22.0, 51.5], "expected": 51.5}, {"input": [-22.0, 52.0], "expected": 52.0}, {"input": [-22.0, 52.5], "expected": 52.5}, {"input": [-22.0, 53.0], "expected": 53.0}, {"input": [-22.0, 53.5], "expected": 53.5}, {"input": [-22.0, 54.0], "expected": 54.0}, {"input": [-22.0, 54.5], "expected": 54.5}, {"input": [-22.0, 55.0], "expected": 55.0}, {"input": [-22.0, 55.5], "expected": 55.5}, {"input": [-22.0, 56.0], "expected": 56.0}, {"input": [-22.0, 56.5], "expected": 56.5}, {"input": [-22.0, 57.0], "expected": 57.0}, {"input": [-22.0, 57.5], "expected": 57.5}, {"input": [-22.0, 58.0], "expected": 58.0}, {"input": [-22.0, 58.5], "expected": 58.5}, {"input": [-22.0, 59.0], "expected": 59.0}, {"input": [-22.0, 59.5], "expected": 59.5}, {"input": [-22.0, 60.0], "expected": 60.0}, {"input": [-22.0, 60.5], "expected": 60.5}, {"input": [-22.0, 61.0], "expected": 61.0}, {"input": [-22.0, 61.5], "expected": 61.5}, {"input": [-22.0, 62.0], "expected": 62.0}, {"input": [-22.0, 62.5], "expected": 62.5}, {"input": [-22.0, 63.0], "expected": 63.0}, {"input": [-22.0, 63.5], "expected": 63.5}, {"input": [-22.0, 64.0], "expected": 64.0}, {"input": [-22.0, 64.5], "expected": 64.5}, {"input": [-22.0, 65.0], "expected": 65.0}, {"input": [-22.0, 65.5], "expected": 65.5}, {"input": [-22.0, 66.0], "expected": 66.0}, {"input": [-22.0, 66.5], "expected": 66.5}, {"input": [-22.0, 67.0], "expected": 67.0}, {"input": [-22.0, 67.5], "expected": 67.5}, {"input": [-22.0, 68.0], "expected": 68.0}, {"input": [-22.0, 68.5], "expected": 68.5}, {"input": [-22.0, 69.0], "expected": 69.0}, {"input": [-22.0, 69.5], "expected": 69.5}, {"input": [-22.0, 70.0], "expected": 70.0}, {"input": [-22.0, 70.5], "expected": 70.5}, {"input": [-22.0, 71.0], "expected": 71.0}, {"input": [-22.0, 71.5], "expected": 71.5}, {"input": [-22.0, 72.0], "expected": 72.0}, {"input": [-22.0, 72.5], "expected": 72.5}, {"input": [-22.0, 73.0], "expected": 73.0}, {"input": [-22.0, 73.5], "expected": 73.5}, {"input": [-22.0, 74.0], "expected": 74.0}, {"input": [-22.0, 74.5], "expected": 74.5}, {"input": [-22.0, 75.0], "expected": 75.0}, {"input": [-22.0, 75.5], "expected": 75.5}, {"input": [-22.0, 76.0], "expected": 76.0}, {"input": [-22.0, 76.5], "expected": 76.5}, {"input": [-22.0, 77.0], "expected": 77.0}, {"input": [-22.0, 77.5], "expected": 77.5}, {"input": [-22.0, 78.0], "expected": 78.0}, {"input": [-22.0, 78.5], "expected": 78.5}, {"input": [-22.0, 79.0], "expected": 79.0}, {"input": [-22.0, 79.5], "expected": 79.5}, {"input": [-22.0, 80.0], "expected": 80.0}, {"input": [-22.0, 80.5], "expected": 80.5}, {"input": [-22.0, 81.0], "expected": 81.0}, {"input": [-22.0, 81.5], "expected": 81.5}, {"input": [-22.0, 82.0], "expected": 82.0}, {"input": [-22.0, 82.5], "expected": 82.5}, {"input": [-22.0, 83.0], "expected": 83.0}, {"input": [-22.0, 83.5], "expected": 83.5}, {"input": [-22.0, 84.0], "expected": 84.0}, {"input": [-22.0, 84.5], "expected": 84.5}, {"input": [-22.0, 85.0], "expected": 85.0}, {"input": [-22.0, 85.5], "expected": 85.5}, {"input": [-22.0, 86.0], "expected": 86.0}, {"input": [-22.0, 86.5], "expected": 86.5}, {"input": [-22.0, 87.0], "expected": 87.0}, {"input": [-22.0, 87.5], "expected": 87.5}, {"input": [-22.0, 88.0], "expected": 88.0}, {"input": [-22.0, 88.5], "expected": 88.5}, {"input": [-22.0, 89.0], "expected": 89.0}, {"input": [-22.0, 89.5], "expected": 89.5}, {"input": [-22.0, 90.0], "expected": 90.0}, {"input": [-22.0, 90.5], "expected": 90.5}, {"input": [-22.0, 91.0], "expected": 91.0}, {"input": [-22.0, 91.5], "expected": 91.5}, {"input": [-22.0, 92.0], "expected": 92.0}, {"input": [-22.0, 92.5], "expected": 92.5}, {"input": [-22.0, 93.0], "expected": 93.0}, {"input": [-22.0, 93.5], "expected": 93.5}, {"input": [-22.0, 94.0], "expected": 94.0}, {"input": [-22.0, 94.5], "expected": 94.5}, {"input": [-22.0, 95.0], "expected": 95.0}, {"input": [-22.0, 95.5], "expected": 95.5}, {"input": [-22.0, 96.0], "expected": 96.0}, {"input": [-22.0, 96.5], "expected": 96.5}, {"input": [-22.0, 97.0], "expected": 97.0}, {"input": [-22.0, 97.5], "expected": 97.5}, {"input": [-22.0, 98.0], "expected": 98.0}, {"input": [-22.0, 98.5], "expected": 98.5}, {"input": [-22.0, 99.0], "expected": 99.0}, {"input": [-22.0, 99.5], "expected": 99.5}, {"input": [-21.5, -100.0], "expected": -21.5}, {"input": [-21.5, -99.5], "expected": -21.5}, {"input": [-21.5, -99.0], "expected": -21.5}, {"input": [-21.5, -98.5], "expected": -21.5}, {"input": [-21.5, -98.0], "expected": -21.5}, {"input": [-21.5, -97.5], "expected": -21.5}, {"input": [-21.5, -97.0], "expected": -21.5}, {"input": [-21.5, -96.5], "expected": -21.5}, {"input": [-21.5, -96.0], "expected": -21.5}, {"input": [-21.5, -95.5], "expected": -21.5}, {"input": [-21.5, -95.0], "expected": -21.5}, {"input": [-21.5, -94.5], "expected": -21.5}, {"input": [-21.5, -94.0], "expected": -21.5}, {"input": [-21.5, -93.5], "expected": -21.5}, {"input": [-21.5, -93.0], "expected": -21.5}, {"input": [-21.5, -92.5], "expected": -21.5}, {"input": [-21.5, -92.0], "expected": -21.5}, {"input": [-21.5, -91.5], "expected": -21.5}, {"input": [-21.5, -91.0], "expected": -21.5}, {"input": [-21.5, -90.5], "expected": -21.5}, {"input": [-21.5, -90.0], "expected": -21.5}, {"input": [-21.5, -89.5], "expected": -21.5}, {"input": [-21.5, -89.0], "expected": -21.5}, {"input": [-21.5, -88.5], "expected": -21.5}, {"input": [-21.5, -88.0], "expected": -21.5}, {"input": [-21.5, -87.5], "expected": -21.5}, {"input": [-21.5, -87.0], "expected": -21.5}, {"input": [-21.5, -86.5], "expected": -21.5}, {"input": [-21.5, -86.0], "expected": -21.5}, {"input": [-21.5, -85.5], "expected": -21.5}, {"input": [-21.5, -85.0], "expected": -21.5}, {"input": [-21.5, -84.5], "expected": -21.5}, {"input": [-21.5, -84.0], "expected": -21.5}, {"input": [-21.5, -83.5], "expected": -21.5}, {"input": [-21.5, -83.0], "expected": -21.5}, {"input": [-21.5, -82.5], "expected": -21.5}, {"input": [-21.5, -82.0], "expected": -21.5}, {"input": [-21.5, -81.5], "expected": -21.5}, {"input": [-21.5, -81.0], "expected": -21.5}, {"input": [-21.5, -80.5], "expected": -21.5}, {"input": [-21.5, -80.0], "expected": -21.5}, {"input": [-21.5, -79.5], "expected": -21.5}, {"input": [-21.5, -79.0], "expected": -21.5}, {"input": [-21.5, -78.5], "expected": -21.5}, {"input": [-21.5, -78.0], "expected": -21.5}, {"input": [-21.5, -77.5], "expected": -21.5}, {"input": [-21.5, -77.0], "expected": -21.5}, {"input": [-21.5, -76.5], "expected": -21.5}, {"input": [-21.5, -76.0], "expected": -21.5}, {"input": [-21.5, -75.5], "expected": -21.5}, {"input": [-21.5, -75.0], "expected": -21.5}, {"input": [-21.5, -74.5], "expected": -21.5}, {"input": [-21.5, -74.0], "expected": -21.5}, {"input": [-21.5, -73.5], "expected": -21.5}, {"input": [-21.5, -73.0], "expected": -21.5}, {"input": [-21.5, -72.5], "expected": -21.5}, {"input": [-21.5, -72.0], "expected": -21.5}, {"input": [-21.5, -71.5], "expected": -21.5}, {"input": [-21.5, -71.0], "expected": -21.5}, {"input": [-21.5, -70.5], "expected": -21.5}, {"input": [-21.5, -70.0], "expected": -21.5}, {"input": [-21.5, -69.5], "expected": -21.5}, {"input": [-21.5, -69.0], "expected": -21.5}, {"input": [-21.5, -68.5], "expected": -21.5}, {"input": [-21.5, -68.0], "expected": -21.5}, {"input": [-21.5, -67.5], "expected": -21.5}, {"input": [-21.5, -67.0], "expected": -21.5}, {"input": [-21.5, -66.5], "expected": -21.5}, {"input": [-21.5, -66.0], "expected": -21.5}, {"input": [-21.5, -65.5], "expected": -21.5}, {"input": [-21.5, -65.0], "expected": -21.5}, {"input": [-21.5, -64.5], "expected": -21.5}, {"input": [-21.5, -64.0], "expected": -21.5}, {"input": [-21.5, -63.5], "expected": -21.5}, {"input": [-21.5, -63.0], "expected": -21.5}, {"input": [-21.5, -62.5], "expected": -21.5}, {"input": [-21.5, -62.0], "expected": -21.5}, {"input": [-21.5, -61.5], "expected": -21.5}, {"input": [-21.5, -61.0], "expected": -21.5}, {"input": [-21.5, -60.5], "expected": -21.5}, {"input": [-21.5, -60.0], "expected": -21.5}, {"input": [-21.5, -59.5], "expected": -21.5}, {"input": [-21.5, -59.0], "expected": -21.5}, {"input": [-21.5, -58.5], "expected": -21.5}, {"input": [-21.5, -58.0], "expected": -21.5}, {"input": [-21.5, -57.5], "expected": -21.5}, {"input": [-21.5, -57.0], "expected": -21.5}, {"input": [-21.5, -56.5], "expected": -21.5}, {"input": [-21.5, -56.0], "expected": -21.5}, {"input": [-21.5, -55.5], "expected": -21.5}, {"input": [-21.5, -55.0], "expected": -21.499999999999996}, {"input": [-21.5, -54.5], "expected": -21.499999999999996}, {"input": [-21.5, -54.0], "expected": -21.499999999999993}, {"input": [-21.5, -53.5], "expected": -21.499999999999986}, {"input": [-21.5, -53.0], "expected": -21.49999999999998}, {"input": [-21.5, -52.5], "expected": -21.499999999999964}, {"input": [-21.5, -52.0], "expected": -21.499999999999943}, {"input": [-21.5, -51.5], "expected": -21.499999999999908}, {"input": [-21.5, -51.0], "expected": -21.499999999999847}, {"input": [-21.5, -50.5], "expected": -21.499999999999744}, {"input": [-21.5, -50.0], "expected": -21.49999999999958}, {"input": [-21.5, -49.5], "expected": -21.499999999999307}, {"input": [-21.5, -49.0], "expected": -21.49999999999886}, {"input": [-21.5, -48.5], "expected": -21.49999999999812}, {"input": [-21.5, -48.0], "expected": -21.499999999996902}, {"input": [-21.5, -47.5], "expected": -21.49999999999489}, {"input": [-21.5, -47.0], "expected": -21.499999999991577}, {"input": [-21.5, -46.5], "expected": -21.499999999986112}, {"input": [-21.5, -46.0], "expected": -21.499999999977103}, {"input": [-21.5, -45.5], "expected": -21.49999999996225}, {"input": [-21.5, -45.0], "expected": -21.49999999993776}, {"input": [-21.5, -44.5], "expected": -21.49999999989738}, {"input": [-21.5, -44.0], "expected": -21.49999999983081}, {"input": [-21.5, -43.5], "expected": -21.49999999972105}, {"input": [-21.5, -43.0], "expected": -21.499999999540094}, {"input": [-21.5, -42.5], "expected": -21.499999999241744}, {"input": [-21.5, -42.0], "expected": -21.499999998749846}, {"input": [-21.5, -41.5], "expected": -21.499999997938847}, {"input": [-21.5, -41.0], "expected": -21.499999996601733}, {"input": [-21.5, -40.5], "expected": -21.499999994397204}, {"input": [-21.5, -40.0], "expected": -21.49999999076255}, {"input": [-21.5, -39.5], "expected": -21.49999998477002}, {"input": [-21.5, -39.0], "expected": -21.49999997489001}, {"input": [-21.5, -38.5], "expected": -21.499999958600625}, {"input": [-21.5, -38.0], "expected": -21.499999931743968}, {"input": [-21.5, -37.5], "expected": -21.49999988746483}, {"input": [-21.5, -37.0], "expected": -21.49999981446088}, {"input": [-21.5, -36.5], "expected": -21.499999694097728}, {"input": [-21.5, -36.0], "expected": -21.499999495652464}, {"input": [-21.5, -35.5], "expected": -21.499999168471625}, {"input": [-21.5, -35.0], "expected": -21.499998629041855}, {"input": [-21.5, -34.5], "expected": -21.499997739673148}, {"input": [-21.5, -34.0], "expected": -21.499996273353773}, {"input": [-21.5, -33.5], "expected": -21.499993855806522}, {"input": [-21.5, -33.0], "expected": -21.49998986995771}, {"input": [-21.5, -32.5], "expected": -21.499983298438682}, {"input": [-21.5, -32.0], "expected": -21.499972463929772}, {"input": [-21.5, -31.5], "expected": -21.499954601100782}, {"input": [-21.5, -31.0], "expected": -21.49992515097137}, {"input": [-21.5, -30.5], "expected": -21.499876597810278}, {"input": [-21.5, -30.0], "expected": -21.499796552327872}, {"input": [-21.5, -29.5], "expected": -21.499664593627106}, {"input": [-21.5, -29.0], "expected": -21.49944706852464}, {"input": [-21.5, -28.5], "expected": -21.499088533546225}, {"input": [-21.5, -28.0], "expected": -21.498497689840246}, {"input": [-21.5, -27.5], "expected": -21.497524314862268}, {"input": [-21.5, -27.0], "expected": -21.495921556729428}, {"input": [-21.5, -26.5], "expected": -21.493284651510884}, {"input": [-21.5, -26.0], "expected": -21.488952255151407}, {"input": [-21.5, -25.5], "expected": -21.48185007208219}, {"input": [-21.5, -25.0], "expected": -21.47024958172738}, {"input": [-21.5, -24.5], "expected": -21.451412648426256}, {"input": [-21.5, -24.0], "expected": -21.42111026570745}, {"input": [-21.5, -23.5], "expected": -21.373071988957026}, {"input": [-21.5, -23.0], "expected": -21.298586722017248}, {"input": [-21.5, -22.5], "expected": -21.186738312481776}, {"input": [-21.5, -22.0], "expected": -21.02592301581989}, {"input": [-21.5, -21.5], "expected": -20.806852819440056}, {"input": [-21.5, -21.0], "expected": -20.52592301581989}, {"input": [-21.5, -20.5], "expected": -20.186738312481776}, {"input": [-21.5, -20.0], "expected": -19.798586722017248}, {"input": [-21.5, -19.5], "expected": -19.373071988957026}, {"input": [-21.5, -19.0], "expected": -18.92111026570745}, {"input": [-21.5, -18.5], "expected": -18.451412648426256}, {"input": [-21.5, -18.0], "expected": -17.97024958172738}, {"input": [-21.5, -17.5], "expected": -17.48185007208219}, {"input": [-21.5, -17.0], "expected": -16.988952255151407}, {"input": [-21.5, -16.5], "expected": -16.493284651510884}, {"input": [-21.5, -16.0], "expected": -15.99592155672943}, {"input": [-21.5, -15.5], "expected": -15.49752431486227}, {"input": [-21.5, -15.0], "expected": -14.998497689840246}, {"input": [-21.5, -14.5], "expected": -14.499088533546226}, {"input": [-21.5, -14.0], "expected": -13.999447068524638}, {"input": [-21.5, -13.5], "expected": -13.499664593627104}, {"input": [-21.5, -13.0], "expected": -12.99979655232787}, {"input": [-21.5, -12.5], "expected": -12.499876597810276}, {"input": [-21.5, -12.0], "expected": -11.999925150971372}, {"input": [-21.5, -11.5], "expected": -11.499954601100782}, {"input": [-21.5, -11.0], "expected": -10.99997246392977}, {"input": [-21.5, -10.5], "expected": -10.499983298438682}, {"input": [-21.5, -10.0], "expected": -9.99998986995771}, {"input": [-21.5, -9.5], "expected": -9.499993855806522}, {"input": [-21.5, -9.0], "expected": -8.999996273353771}, {"input": [-21.5, -8.5], "expected": -8.499997739673148}, {"input": [-21.5, -8.0], "expected": -7.999998629041853}, {"input": [-21.5, -7.5], "expected": -7.499999168471627}, {"input": [-21.5, -7.0], "expected": -6.999999495652465}, {"input": [-21.5, -6.5], "expected": -6.499999694097727}, {"input": [-21.5, -6.0], "expected": -5.999999814460881}, {"input": [-21.5, -5.5], "expected": -5.499999887464831}, {"input": [-21.5, -5.0], "expected": -4.999999931743969}, {"input": [-21.5, -4.5], "expected": -4.499999958600624}, {"input": [-21.5, -4.0], "expected": -3.9999999748900086}, {"input": [-21.5, -3.5], "expected": -3.4999999847700205}, {"input": [-21.5, -3.0], "expected": -2.9999999907625505}, {"input": [-21.5, -2.5], "expected": -2.4999999943972036}, {"input": [-21.5, -2.0], "expected": -1.999999996601732}, {"input": [-21.5, -1.5], "expected": -1.4999999979388463}, {"input": [-21.5, -1.0], "expected": -0.9999999987498471}, {"input": [-21.5, -0.5], "expected": -0.49999999924174393}, {"input": [-21.5, 0.0], "expected": 4.599055377594751e-10}, {"input": [-21.5, 0.5], "expected": 0.5000000002789468}, {"input": [-21.5, 1.0], "expected": 1.0000000001691898}, {"input": [-21.5, 1.5], "expected": 1.5000000001026188}, {"input": [-21.5, 2.0], "expected": 2.0000000000622413}, {"input": [-21.5, 2.5], "expected": 2.500000000037751}, {"input": [-21.5, 3.0], "expected": 3.0000000000228972}, {"input": [-21.5, 3.5], "expected": 3.500000000013888}, {"input": [-21.5, 4.0], "expected": 4.0000000000084235}, {"input": [-21.5, 4.5], "expected": 4.500000000005109}, {"input": [-21.5, 5.0], "expected": 5.000000000003099}, {"input": [-21.5, 5.5], "expected": 5.500000000001879}, {"input": [-21.5, 6.0], "expected": 6.00000000000114}, {"input": [-21.5, 6.5], "expected": 6.500000000000691}, {"input": [-21.5, 7.0], "expected": 7.000000000000419}, {"input": [-21.5, 7.5], "expected": 7.500000000000254}, {"input": [-21.5, 8.0], "expected": 8.000000000000155}, {"input": [-21.5, 8.5], "expected": 8.500000000000094}, {"input": [-21.5, 9.0], "expected": 9.000000000000057}, {"input": [-21.5, 9.5], "expected": 9.500000000000034}, {"input": [-21.5, 10.0], "expected": 10.000000000000021}, {"input": [-21.5, 10.5], "expected": 10.500000000000012}, {"input": [-21.5, 11.0], "expected": 11.000000000000007}, {"input": [-21.5, 11.5], "expected": 11.500000000000005}, {"input": [-21.5, 12.0], "expected": 12.000000000000004}, {"input": [-21.5, 12.5], "expected": 12.500000000000002}, {"input": [-21.5, 13.0], "expected": 13.000000000000002}, {"input": [-21.5, 13.5], "expected": 13.5}, {"input": [-21.5, 14.0], "expected": 14.0}, {"input": [-21.5, 14.5], "expected": 14.5}, {"input": [-21.5, 15.0], "expected": 15.0}, {"input": [-21.5, 15.5], "expected": 15.5}, {"input": [-21.5, 16.0], "expected": 16.0}, {"input": [-21.5, 16.5], "expected": 16.5}, {"input": [-21.5, 17.0], "expected": 17.0}, {"input": [-21.5, 17.5], "expected": 17.5}, {"input": [-21.5, 18.0], "expected": 18.0}, {"input": [-21.5, 18.5], "expected": 18.5}, {"input": [-21.5, 19.0], "expected": 19.0}, {"input": [-21.5, 19.5], "expected": 19.5}, {"input": [-21.5, 20.0], "expected": 20.0}, {"input": [-21.5, 20.5], "expected": 20.5}, {"input": [-21.5, 21.0], "expected": 21.0}, {"input": [-21.5, 21.5], "expected": 21.5}, {"input": [-21.5, 22.0], "expected": 22.0}, {"input": [-21.5, 22.5], "expected": 22.5}, {"input": [-21.5, 23.0], "expected": 23.0}, {"input": [-21.5, 23.5], "expected": 23.5}, {"input": [-21.5, 24.0], "expected": 24.0}, {"input": [-21.5, 24.5], "expected": 24.5}, {"input": [-21.5, 25.0], "expected": 25.0}, {"input": [-21.5, 25.5], "expected": 25.5}, {"input": [-21.5, 26.0], "expected": 26.0}, {"input": [-21.5, 26.5], "expected": 26.5}, {"input": [-21.5, 27.0], "expected": 27.0}, {"input": [-21.5, 27.5], "expected": 27.5}, {"input": [-21.5, 28.0], "expected": 28.0}, {"input": [-21.5, 28.5], "expected": 28.5}, {"input": [-21.5, 29.0], "expected": 29.0}, {"input": [-21.5, 29.5], "expected": 29.5}, {"input": [-21.5, 30.0], "expected": 30.0}, {"input": [-21.5, 30.5], "expected": 30.5}, {"input": [-21.5, 31.0], "expected": 31.0}, {"input": [-21.5, 31.5], "expected": 31.5}, {"input": [-21.5, 32.0], "expected": 32.0}, {"input": [-21.5, 32.5], "expected": 32.5}, {"input": [-21.5, 33.0], "expected": 33.0}, {"input": [-21.5, 33.5], "expected": 33.5}, {"input": [-21.5, 34.0], "expected": 34.0}, {"input": [-21.5, 34.5], "expected": 34.5}, {"input": [-21.5, 35.0], "expected": 35.0}, {"input": [-21.5, 35.5], "expected": 35.5}, {"input": [-21.5, 36.0], "expected": 36.0}, {"input": [-21.5, 36.5], "expected": 36.5}, {"input": [-21.5, 37.0], "expected": 37.0}, {"input": [-21.5, 37.5], "expected": 37.5}, {"input": [-21.5, 38.0], "expected": 38.0}, {"input": [-21.5, 38.5], "expected": 38.5}, {"input": [-21.5, 39.0], "expected": 39.0}, {"input": [-21.5, 39.5], "expected": 39.5}, {"input": [-21.5, 40.0], "expected": 40.0}, {"input": [-21.5, 40.5], "expected": 40.5}, {"input": [-21.5, 41.0], "expected": 41.0}, {"input": [-21.5, 41.5], "expected": 41.5}, {"input": [-21.5, 42.0], "expected": 42.0}, {"input": [-21.5, 42.5], "expected": 42.5}, {"input": [-21.5, 43.0], "expected": 43.0}, {"input": [-21.5, 43.5], "expected": 43.5}, {"input": [-21.5, 44.0], "expected": 44.0}, {"input": [-21.5, 44.5], "expected": 44.5}, {"input": [-21.5, 45.0], "expected": 45.0}, {"input": [-21.5, 45.5], "expected": 45.5}, {"input": [-21.5, 46.0], "expected": 46.0}, {"input": [-21.5, 46.5], "expected": 46.5}, {"input": [-21.5, 47.0], "expected": 47.0}, {"input": [-21.5, 47.5], "expected": 47.5}, {"input": [-21.5, 48.0], "expected": 48.0}, {"input": [-21.5, 48.5], "expected": 48.5}, {"input": [-21.5, 49.0], "expected": 49.0}, {"input": [-21.5, 49.5], "expected": 49.5}, {"input": [-21.5, 50.0], "expected": 50.0}, {"input": [-21.5, 50.5], "expected": 50.5}, {"input": [-21.5, 51.0], "expected": 51.0}, {"input": [-21.5, 51.5], "expected": 51.5}, {"input": [-21.5, 52.0], "expected": 52.0}, {"input": [-21.5, 52.5], "expected": 52.5}, {"input": [-21.5, 53.0], "expected": 53.0}, {"input": [-21.5, 53.5], "expected": 53.5}, {"input": [-21.5, 54.0], "expected": 54.0}, {"input": [-21.5, 54.5], "expected": 54.5}, {"input": [-21.5, 55.0], "expected": 55.0}, {"input": [-21.5, 55.5], "expected": 55.5}, {"input": [-21.5, 56.0], "expected": 56.0}, {"input": [-21.5, 56.5], "expected": 56.5}, {"input": [-21.5, 57.0], "expected": 57.0}, {"input": [-21.5, 57.5], "expected": 57.5}, {"input": [-21.5, 58.0], "expected": 58.0}, {"input": [-21.5, 58.5], "expected": 58.5}, {"input": [-21.5, 59.0], "expected": 59.0}, {"input": [-21.5, 59.5], "expected": 59.5}, {"input": [-21.5, 60.0], "expected": 60.0}, {"input": [-21.5, 60.5], "expected": 60.5}, {"input": [-21.5, 61.0], "expected": 61.0}, {"input": [-21.5, 61.5], "expected": 61.5}, {"input": [-21.5, 62.0], "expected": 62.0}, {"input": [-21.5, 62.5], "expected": 62.5}, {"input": [-21.5, 63.0], "expected": 63.0}, {"input": [-21.5, 63.5], "expected": 63.5}, {"input": [-21.5, 64.0], "expected": 64.0}, {"input": [-21.5, 64.5], "expected": 64.5}, {"input": [-21.5, 65.0], "expected": 65.0}, {"input": [-21.5, 65.5], "expected": 65.5}, {"input": [-21.5, 66.0], "expected": 66.0}, {"input": [-21.5, 66.5], "expected": 66.5}, {"input": [-21.5, 67.0], "expected": 67.0}, {"input": [-21.5, 67.5], "expected": 67.5}, {"input": [-21.5, 68.0], "expected": 68.0}, {"input": [-21.5, 68.5], "expected": 68.5}, {"input": [-21.5, 69.0], "expected": 69.0}, {"input": [-21.5, 69.5], "expected": 69.5}, {"input": [-21.5, 70.0], "expected": 70.0}, {"input": [-21.5, 70.5], "expected": 70.5}, {"input": [-21.5, 71.0], "expected": 71.0}, {"input": [-21.5, 71.5], "expected": 71.5}, {"input": [-21.5, 72.0], "expected": 72.0}, {"input": [-21.5, 72.5], "expected": 72.5}, {"input": [-21.5, 73.0], "expected": 73.0}, {"input": [-21.5, 73.5], "expected": 73.5}, {"input": [-21.5, 74.0], "expected": 74.0}, {"input": [-21.5, 74.5], "expected": 74.5}, {"input": [-21.5, 75.0], "expected": 75.0}, {"input": [-21.5, 75.5], "expected": 75.5}, {"input": [-21.5, 76.0], "expected": 76.0}, {"input": [-21.5, 76.5], "expected": 76.5}, {"input": [-21.5, 77.0], "expected": 77.0}, {"input": [-21.5, 77.5], "expected": 77.5}, {"input": [-21.5, 78.0], "expected": 78.0}, {"input": [-21.5, 78.5], "expected": 78.5}, {"input": [-21.5, 79.0], "expected": 79.0}, {"input": [-21.5, 79.5], "expected": 79.5}, {"input": [-21.5, 80.0], "expected": 80.0}, {"input": [-21.5, 80.5], "expected": 80.5}, {"input": [-21.5, 81.0], "expected": 81.0}, {"input": [-21.5, 81.5], "expected": 81.5}, {"input": [-21.5, 82.0], "expected": 82.0}, {"input": [-21.5, 82.5], "expected": 82.5}, {"input": [-21.5, 83.0], "expected": 83.0}, {"input": [-21.5, 83.5], "expected": 83.5}, {"input": [-21.5, 84.0], "expected": 84.0}, {"input": [-21.5, 84.5], "expected": 84.5}, {"input": [-21.5, 85.0], "expected": 85.0}, {"input": [-21.5, 85.5], "expected": 85.5}, {"input": [-21.5, 86.0], "expected": 86.0}, {"input": [-21.5, 86.5], "expected": 86.5}, {"input": [-21.5, 87.0], "expected": 87.0}, {"input": [-21.5, 87.5], "expected": 87.5}, {"input": [-21.5, 88.0], "expected": 88.0}, {"input": [-21.5, 88.5], "expected": 88.5}, {"input": [-21.5, 89.0], "expected": 89.0}, {"input": [-21.5, 89.5], "expected": 89.5}, {"input": [-21.5, 90.0], "expected": 90.0}, {"input": [-21.5, 90.5], "expected": 90.5}, {"input": [-21.5, 91.0], "expected": 91.0}, {"input": [-21.5, 91.5], "expected": 91.5}, {"input": [-21.5, 92.0], "expected": 92.0}, {"input": [-21.5, 92.5], "expected": 92.5}, {"input": [-21.5, 93.0], "expected": 93.0}, {"input": [-21.5, 93.5], "expected": 93.5}, {"input": [-21.5, 94.0], "expected": 94.0}, {"input": [-21.5, 94.5], "expected": 94.5}, {"input": [-21.5, 95.0], "expected": 95.0}, {"input": [-21.5, 95.5], "expected": 95.5}, {"input": [-21.5, 96.0], "expected": 96.0}, {"input": [-21.5, 96.5], "expected": 96.5}, {"input": [-21.5, 97.0], "expected": 97.0}, {"input": [-21.5, 97.5], "expected": 97.5}, {"input": [-21.5, 98.0], "expected": 98.0}, {"input": [-21.5, 98.5], "expected": 98.5}, {"input": [-21.5, 99.0], "expected": 99.0}, {"input": [-21.5, 99.5], "expected": 99.5}, {"input": [-21.0, -100.0], "expected": -21.0}, {"input": [-21.0, -99.5], "expected": -21.0}, {"input": [-21.0, -99.0], "expected": -21.0}, {"input": [-21.0, -98.5], "expected": -21.0}, {"input": [-21.0, -98.0], "expected": -21.0}, {"input": [-21.0, -97.5], "expected": -21.0}, {"input": [-21.0, -97.0], "expected": -21.0}, {"input": [-21.0, -96.5], "expected": -21.0}, {"input": [-21.0, -96.0], "expected": -21.0}, {"input": [-21.0, -95.5], "expected": -21.0}, {"input": [-21.0, -95.0], "expected": -21.0}, {"input": [-21.0, -94.5], "expected": -21.0}, {"input": [-21.0, -94.0], "expected": -21.0}, {"input": [-21.0, -93.5], "expected": -21.0}, {"input": [-21.0, -93.0], "expected": -21.0}, {"input": [-21.0, -92.5], "expected": -21.0}, {"input": [-21.0, -92.0], "expected": -21.0}, {"input": [-21.0, -91.5], "expected": -21.0}, {"input": [-21.0, -91.0], "expected": -21.0}, {"input": [-21.0, -90.5], "expected": -21.0}, {"input": [-21.0, -90.0], "expected": -21.0}, {"input": [-21.0, -89.5], "expected": -21.0}, {"input": [-21.0, -89.0], "expected": -21.0}, {"input": [-21.0, -88.5], "expected": -21.0}, {"input": [-21.0, -88.0], "expected": -21.0}, {"input": [-21.0, -87.5], "expected": -21.0}, {"input": [-21.0, -87.0], "expected": -21.0}, {"input": [-21.0, -86.5], "expected": -21.0}, {"input": [-21.0, -86.0], "expected": -21.0}, {"input": [-21.0, -85.5], "expected": -21.0}, {"input": [-21.0, -85.0], "expected": -21.0}, {"input": [-21.0, -84.5], "expected": -21.0}, {"input": [-21.0, -84.0], "expected": -21.0}, {"input": [-21.0, -83.5], "expected": -21.0}, {"input": [-21.0, -83.0], "expected": -21.0}, {"input": [-21.0, -82.5], "expected": -21.0}, {"input": [-21.0, -82.0], "expected": -21.0}, {"input": [-21.0, -81.5], "expected": -21.0}, {"input": [-21.0, -81.0], "expected": -21.0}, {"input": [-21.0, -80.5], "expected": -21.0}, {"input": [-21.0, -80.0], "expected": -21.0}, {"input": [-21.0, -79.5], "expected": -21.0}, {"input": [-21.0, -79.0], "expected": -21.0}, {"input": [-21.0, -78.5], "expected": -21.0}, {"input": [-21.0, -78.0], "expected": -21.0}, {"input": [-21.0, -77.5], "expected": -21.0}, {"input": [-21.0, -77.0], "expected": -21.0}, {"input": [-21.0, -76.5], "expected": -21.0}, {"input": [-21.0, -76.0], "expected": -21.0}, {"input": [-21.0, -75.5], "expected": -21.0}, {"input": [-21.0, -75.0], "expected": -21.0}, {"input": [-21.0, -74.5], "expected": -21.0}, {"input": [-21.0, -74.0], "expected": -21.0}, {"input": [-21.0, -73.5], "expected": -21.0}, {"input": [-21.0, -73.0], "expected": -21.0}, {"input": [-21.0, -72.5], "expected": -21.0}, {"input": [-21.0, -72.0], "expected": -21.0}, {"input": [-21.0, -71.5], "expected": -21.0}, {"input": [-21.0, -71.0], "expected": -21.0}, {"input": [-21.0, -70.5], "expected": -21.0}, {"input": [-21.0, -70.0], "expected": -21.0}, {"input": [-21.0, -69.5], "expected": -21.0}, {"input": [-21.0, -69.0], "expected": -21.0}, {"input": [-21.0, -68.5], "expected": -21.0}, {"input": [-21.0, -68.0], "expected": -21.0}, {"input": [-21.0, -67.5], "expected": -21.0}, {"input": [-21.0, -67.0], "expected": -21.0}, {"input": [-21.0, -66.5], "expected": -21.0}, {"input": [-21.0, -66.0], "expected": -21.0}, {"input": [-21.0, -65.5], "expected": -21.0}, {"input": [-21.0, -65.0], "expected": -21.0}, {"input": [-21.0, -64.5], "expected": -21.0}, {"input": [-21.0, -64.0], "expected": -21.0}, {"input": [-21.0, -63.5], "expected": -21.0}, {"input": [-21.0, -63.0], "expected": -21.0}, {"input": [-21.0, -62.5], "expected": -21.0}, {"input": [-21.0, -62.0], "expected": -21.0}, {"input": [-21.0, -61.5], "expected": -21.0}, {"input": [-21.0, -61.0], "expected": -21.0}, {"input": [-21.0, -60.5], "expected": -21.0}, {"input": [-21.0, -60.0], "expected": -21.0}, {"input": [-21.0, -59.5], "expected": -21.0}, {"input": [-21.0, -59.0], "expected": -21.0}, {"input": [-21.0, -58.5], "expected": -21.0}, {"input": [-21.0, -58.0], "expected": -21.0}, {"input": [-21.0, -57.5], "expected": -21.0}, {"input": [-21.0, -57.0], "expected": -21.0}, {"input": [-21.0, -56.5], "expected": -21.0}, {"input": [-21.0, -56.0], "expected": -21.0}, {"input": [-21.0, -55.5], "expected": -21.0}, {"input": [-21.0, -55.0], "expected": -21.0}, {"input": [-21.0, -54.5], "expected": -20.999999999999996}, {"input": [-21.0, -54.0], "expected": -20.999999999999996}, {"input": [-21.0, -53.5], "expected": -20.999999999999993}, {"input": [-21.0, -53.0], "expected": -20.999999999999986}, {"input": [-21.0, -52.5], "expected": -20.99999999999998}, {"input": [-21.0, -52.0], "expected": -20.999999999999964}, {"input": [-21.0, -51.5], "expected": -20.999999999999943}, {"input": [-21.0, -51.0], "expected": -20.999999999999908}, {"input": [-21.0, -50.5], "expected": -20.999999999999847}, {"input": [-21.0, -50.0], "expected": -20.999999999999744}, {"input": [-21.0, -49.5], "expected": -20.99999999999958}, {"input": [-21.0, -49.0], "expected": -20.999999999999307}, {"input": [-21.0, -48.5], "expected": -20.99999999999886}, {"input": [-21.0, -48.0], "expected": -20.99999999999812}, {"input": [-21.0, -47.5], "expected": -20.999999999996902}, {"input": [-21.0, -47.0], "expected": -20.99999999999489}, {"input": [-21.0, -46.5], "expected": -20.999999999991577}, {"input": [-21.0, -46.0], "expected": -20.999999999986112}, {"input": [-21.0, -45.5], "expected": -20.999999999977103}, {"input": [-21.0, -45.0], "expected": -20.99999999996225}, {"input": [-21.0, -44.5], "expected": -20.99999999993776}, {"input": [-21.0, -44.0], "expected": -20.99999999989738}, {"input": [-21.0, -43.5], "expected": -20.99999999983081}, {"input": [-21.0, -43.0], "expected": -20.99999999972105}, {"input": [-21.0, -42.5], "expected": -20.999999999540094}, {"input": [-21.0, -42.0], "expected": -20.999999999241744}, {"input": [-21.0, -41.5], "expected": -20.999999998749846}, {"input": [-21.0, -41.0], "expected": -20.999999997938847}, {"input": [-21.0, -40.5], "expected": -20.999999996601733}, {"input": [-21.0, -40.0], "expected": -20.999999994397204}, {"input": [-21.0, -39.5], "expected": -20.99999999076255}, {"input": [-21.0, -39.0], "expected": -20.99999998477002}, {"input": [-21.0, -38.5], "expected": -20.99999997489001}, {"input": [-21.0, -38.0], "expected": -20.999999958600625}, {"input": [-21.0, -37.5], "expected": -20.999999931743968}, {"input": [-21.0, -37.0], "expected": -20.99999988746483}, {"input": [-21.0, -36.5], "expected": -20.99999981446088}, {"input": [-21.0, -36.0], "expected": -20.999999694097728}, {"input": [-21.0, -35.5], "expected": -20.999999495652464}, {"input": [-21.0, -35.0], "expected": -20.999999168471625}, {"input": [-21.0, -34.5], "expected": -20.999998629041855}, {"input": [-21.0, -34.0], "expected": -20.999997739673148}, {"input": [-21.0, -33.5], "expected": -20.999996273353773}, {"input": [-21.0, -33.0], "expected": -20.999993855806522}, {"input": [-21.0, -32.5], "expected": -20.99998986995771}, {"input": [-21.0, -32.0], "expected": -20.999983298438682}, {"input": [-21.0, -31.5], "expected": -20.999972463929772}, {"input": [-21.0, -31.0], "expected": -20.999954601100782}, {"input": [-21.0, -30.5], "expected": -20.99992515097137}, {"input": [-21.0, -30.0], "expected": -20.999876597810278}, {"input": [-21.0, -29.5], "expected": -20.999796552327872}, {"input": [-21.0, -29.0], "expected": -20.999664593627106}, {"input": [-21.0, -28.5], "expected": -20.99944706852464}, {"input": [-21.0, -28.0], "expected": -20.999088533546225}, {"input": [-21.0, -27.5], "expected": -20.998497689840246}, {"input": [-21.0, -27.0], "expected": -20.997524314862268}, {"input": [-21.0, -26.5], "expected": -20.995921556729428}, {"input": [-21.0, -26.0], "expected": -20.993284651510884}, {"input": [-21.0, -25.5], "expected": -20.988952255151407}, {"input": [-21.0, -25.0], "expected": -20.98185007208219}, {"input": [-21.0, -24.5], "expected": -20.97024958172738}, {"input": [-21.0, -24.0], "expected": -20.951412648426256}, {"input": [-21.0, -23.5], "expected": -20.92111026570745}, {"input": [-21.0, -23.0], "expected": -20.873071988957026}, {"input": [-21.0, -22.5], "expected": -20.798586722017248}, {"input": [-21.0, -22.0], "expected": -20.686738312481776}, {"input": [-21.0, -21.5], "expected": -20.52592301581989}, {"input": [-21.0, -21.0], "expected": -20.306852819440056}, {"input": [-21.0, -20.5], "expected": -20.02592301581989}, {"input": [-21.0, -20.0], "expected": -19.686738312481776}, {"input": [-21.0, -19.5], "expected": -19.298586722017248}, {"input": [-21.0, -19.0], "expected": -18.873071988957026}, {"input": [-21.0, -18.5], "expected": -18.42111026570745}, {"input": [-21.0, -18.0], "expected": -17.951412648426256}, {"input": [-21.0, -17.5], "expected": -17.47024958172738}, {"input": [-21.0, -17.0], "expected": -16.98185007208219}, {"input": [-21.0, -16.5], "expected": -16.488952255151407}, {"input": [-21.0, -16.0], "expected": -15.993284651510882}, {"input": [-21.0, -15.5], "expected": -15.49592155672943}, {"input": [-21.0, -15.0], "expected": -14.99752431486227}, {"input": [-21.0, -14.5], "expected": -14.498497689840246}, {"input": [-21.0, -14.0], "expected": -13.999088533546226}, {"input": [-21.0, -13.5], "expected": -13.499447068524638}, {"input": [-21.0, -13.0], "expected": -12.999664593627104}, {"input": [-21.0, -12.5], "expected": -12.49979655232787}, {"input": [-21.0, -12.0], "expected": -11.999876597810276}, {"input": [-21.0, -11.5], "expected": -11.499925150971372}, {"input": [-21.0, -11.0], "expected": -10.999954601100782}, {"input": [-21.0, -10.5], "expected": -10.49997246392977}, {"input": [-21.0, -10.0], "expected": -9.999983298438682}, {"input": [-21.0, -9.5], "expected": -9.49998986995771}, {"input": [-21.0, -9.0], "expected": -8.999993855806522}, {"input": [-21.0, -8.5], "expected": -8.499996273353771}, {"input": [-21.0, -8.0], "expected": -7.999997739673147}, {"input": [-21.0, -7.5], "expected": -7.499998629041853}, {"input": [-21.0, -7.0], "expected": -6.999999168471627}, {"input": [-21.0, -6.5], "expected": -6.499999495652465}, {"input": [-21.0, -6.0], "expected": -5.999999694097727}, {"input": [-21.0, -5.5], "expected": -5.499999814460881}, {"input": [-21.0, -5.0], "expected": -4.999999887464831}, {"input": [-21.0, -4.5], "expected": -4.499999931743969}, {"input": [-21.0, -4.0], "expected": -3.9999999586006236}, {"input": [-21.0, -3.5], "expected": -3.4999999748900086}, {"input": [-21.0, -3.0], "expected": -2.9999999847700205}, {"input": [-21.0, -2.5], "expected": -2.4999999907625505}, {"input": [-21.0, -2.0], "expected": -1.9999999943972036}, {"input": [-21.0, -1.5], "expected": -1.499999996601732}, {"input": [-21.0, -1.0], "expected": -0.9999999979388464}, {"input": [-21.0, -0.5], "expected": -0.49999999874984713}, {"input": [-21.0, 0.0], "expected": 7.582560425037146e-10}, {"input": [-21.0, 0.5], "expected": 0.5000000004599056}, {"input": [-21.0, 1.0], "expected": 1.0000000002789469}, {"input": [-21.0, 1.5], "expected": 1.5000000001691898}, {"input": [-21.0, 2.0], "expected": 2.000000000102619}, {"input": [-21.0, 2.5], "expected": 2.5000000000622413}, {"input": [-21.0, 3.0], "expected": 3.000000000037751}, {"input": [-21.0, 3.5], "expected": 3.5000000000228972}, {"input": [-21.0, 4.0], "expected": 4.000000000013888}, {"input": [-21.0, 4.5], "expected": 4.5000000000084235}, {"input": [-21.0, 5.0], "expected": 5.000000000005109}, {"input": [-21.0, 5.5], "expected": 5.500000000003099}, {"input": [-21.0, 6.0], "expected": 6.000000000001879}, {"input": [-21.0, 6.5], "expected": 6.50000000000114}, {"input": [-21.0, 7.0], "expected": 7.000000000000691}, {"input": [-21.0, 7.5], "expected": 7.500000000000419}, {"input": [-21.0, 8.0], "expected": 8.000000000000254}, {"input": [-21.0, 8.5], "expected": 8.500000000000155}, {"input": [-21.0, 9.0], "expected": 9.000000000000094}, {"input": [-21.0, 9.5], "expected": 9.500000000000057}, {"input": [-21.0, 10.0], "expected": 10.000000000000034}, {"input": [-21.0, 10.5], "expected": 10.500000000000021}, {"input": [-21.0, 11.0], "expected": 11.000000000000012}, {"input": [-21.0, 11.5], "expected": 11.500000000000007}, {"input": [-21.0, 12.0], "expected": 12.000000000000005}, {"input": [-21.0, 12.5], "expected": 12.500000000000004}, {"input": [-21.0, 13.0], "expected": 13.000000000000002}, {"input": [-21.0, 13.5], "expected": 13.500000000000002}, {"input": [-21.0, 14.0], "expected": 14.0}, {"input": [-21.0, 14.5], "expected": 14.5}, {"input": [-21.0, 15.0], "expected": 15.0}, {"input": [-21.0, 15.5], "expected": 15.5}, {"input": [-21.0, 16.0], "expected": 16.0}, {"input": [-21.0, 16.5], "expected": 16.5}, {"input": [-21.0, 17.0], "expected": 17.0}, {"input": [-21.0, 17.5], "expected": 17.5}, {"input": [-21.0, 18.0], "expected": 18.0}, {"input": [-21.0, 18.5], "expected": 18.5}, {"input": [-21.0, 19.0], "expected": 19.0}, {"input": [-21.0, 19.5], "expected": 19.5}, {"input": [-21.0, 20.0], "expected": 20.0}, {"input": [-21.0, 20.5], "expected": 20.5}, {"input": [-21.0, 21.0], "expected": 21.0}, {"input": [-21.0, 21.5], "expected": 21.5}, {"input": [-21.0, 22.0], "expected": 22.0}, {"input": [-21.0, 22.5], "expected": 22.5}, {"input": [-21.0, 23.0], "expected": 23.0}, {"input": [-21.0, 23.5], "expected": 23.5}, {"input": [-21.0, 24.0], "expected": 24.0}, {"input": [-21.0, 24.5], "expected": 24.5}, {"input": [-21.0, 25.0], "expected": 25.0}, {"input": [-21.0, 25.5], "expected": 25.5}, {"input": [-21.0, 26.0], "expected": 26.0}, {"input": [-21.0, 26.5], "expected": 26.5}, {"input": [-21.0, 27.0], "expected": 27.0}, {"input": [-21.0, 27.5], "expected": 27.5}, {"input": [-21.0, 28.0], "expected": 28.0}, {"input": [-21.0, 28.5], "expected": 28.5}, {"input": [-21.0, 29.0], "expected": 29.0}, {"input": [-21.0, 29.5], "expected": 29.5}, {"input": [-21.0, 30.0], "expected": 30.0}, {"input": [-21.0, 30.5], "expected": 30.5}, {"input": [-21.0, 31.0], "expected": 31.0}, {"input": [-21.0, 31.5], "expected": 31.5}, {"input": [-21.0, 32.0], "expected": 32.0}, {"input": [-21.0, 32.5], "expected": 32.5}, {"input": [-21.0, 33.0], "expected": 33.0}, {"input": [-21.0, 33.5], "expected": 33.5}, {"input": [-21.0, 34.0], "expected": 34.0}, {"input": [-21.0, 34.5], "expected": 34.5}, {"input": [-21.0, 35.0], "expected": 35.0}, {"input": [-21.0, 35.5], "expected": 35.5}, {"input": [-21.0, 36.0], "expected": 36.0}, {"input": [-21.0, 36.5], "expected": 36.5}, {"input": [-21.0, 37.0], "expected": 37.0}, {"input": [-21.0, 37.5], "expected": 37.5}, {"input": [-21.0, 38.0], "expected": 38.0}, {"input": [-21.0, 38.5], "expected": 38.5}, {"input": [-21.0, 39.0], "expected": 39.0}, {"input": [-21.0, 39.5], "expected": 39.5}, {"input": [-21.0, 40.0], "expected": 40.0}, {"input": [-21.0, 40.5], "expected": 40.5}, {"input": [-21.0, 41.0], "expected": 41.0}, {"input": [-21.0, 41.5], "expected": 41.5}, {"input": [-21.0, 42.0], "expected": 42.0}, {"input": [-21.0, 42.5], "expected": 42.5}, {"input": [-21.0, 43.0], "expected": 43.0}, {"input": [-21.0, 43.5], "expected": 43.5}, {"input": [-21.0, 44.0], "expected": 44.0}, {"input": [-21.0, 44.5], "expected": 44.5}, {"input": [-21.0, 45.0], "expected": 45.0}, {"input": [-21.0, 45.5], "expected": 45.5}, {"input": [-21.0, 46.0], "expected": 46.0}, {"input": [-21.0, 46.5], "expected": 46.5}, {"input": [-21.0, 47.0], "expected": 47.0}, {"input": [-21.0, 47.5], "expected": 47.5}, {"input": [-21.0, 48.0], "expected": 48.0}, {"input": [-21.0, 48.5], "expected": 48.5}, {"input": [-21.0, 49.0], "expected": 49.0}, {"input": [-21.0, 49.5], "expected": 49.5}, {"input": [-21.0, 50.0], "expected": 50.0}, {"input": [-21.0, 50.5], "expected": 50.5}, {"input": [-21.0, 51.0], "expected": 51.0}, {"input": [-21.0, 51.5], "expected": 51.5}, {"input": [-21.0, 52.0], "expected": 52.0}, {"input": [-21.0, 52.5], "expected": 52.5}, {"input": [-21.0, 53.0], "expected": 53.0}, {"input": [-21.0, 53.5], "expected": 53.5}, {"input": [-21.0, 54.0], "expected": 54.0}, {"input": [-21.0, 54.5], "expected": 54.5}, {"input": [-21.0, 55.0], "expected": 55.0}, {"input": [-21.0, 55.5], "expected": 55.5}, {"input": [-21.0, 56.0], "expected": 56.0}, {"input": [-21.0, 56.5], "expected": 56.5}, {"input": [-21.0, 57.0], "expected": 57.0}, {"input": [-21.0, 57.5], "expected": 57.5}, {"input": [-21.0, 58.0], "expected": 58.0}, {"input": [-21.0, 58.5], "expected": 58.5}, {"input": [-21.0, 59.0], "expected": 59.0}, {"input": [-21.0, 59.5], "expected": 59.5}, {"input": [-21.0, 60.0], "expected": 60.0}, {"input": [-21.0, 60.5], "expected": 60.5}, {"input": [-21.0, 61.0], "expected": 61.0}, {"input": [-21.0, 61.5], "expected": 61.5}, {"input": [-21.0, 62.0], "expected": 62.0}, {"input": [-21.0, 62.5], "expected": 62.5}, {"input": [-21.0, 63.0], "expected": 63.0}, {"input": [-21.0, 63.5], "expected": 63.5}, {"input": [-21.0, 64.0], "expected": 64.0}, {"input": [-21.0, 64.5], "expected": 64.5}, {"input": [-21.0, 65.0], "expected": 65.0}, {"input": [-21.0, 65.5], "expected": 65.5}, {"input": [-21.0, 66.0], "expected": 66.0}, {"input": [-21.0, 66.5], "expected": 66.5}, {"input": [-21.0, 67.0], "expected": 67.0}, {"input": [-21.0, 67.5], "expected": 67.5}, {"input": [-21.0, 68.0], "expected": 68.0}, {"input": [-21.0, 68.5], "expected": 68.5}, {"input": [-21.0, 69.0], "expected": 69.0}, {"input": [-21.0, 69.5], "expected": 69.5}, {"input": [-21.0, 70.0], "expected": 70.0}, {"input": [-21.0, 70.5], "expected": 70.5}, {"input": [-21.0, 71.0], "expected": 71.0}, {"input": [-21.0, 71.5], "expected": 71.5}, {"input": [-21.0, 72.0], "expected": 72.0}, {"input": [-21.0, 72.5], "expected": 72.5}, {"input": [-21.0, 73.0], "expected": 73.0}, {"input": [-21.0, 73.5], "expected": 73.5}, {"input": [-21.0, 74.0], "expected": 74.0}, {"input": [-21.0, 74.5], "expected": 74.5}, {"input": [-21.0, 75.0], "expected": 75.0}, {"input": [-21.0, 75.5], "expected": 75.5}, {"input": [-21.0, 76.0], "expected": 76.0}, {"input": [-21.0, 76.5], "expected": 76.5}, {"input": [-21.0, 77.0], "expected": 77.0}, {"input": [-21.0, 77.5], "expected": 77.5}, {"input": [-21.0, 78.0], "expected": 78.0}, {"input": [-21.0, 78.5], "expected": 78.5}, {"input": [-21.0, 79.0], "expected": 79.0}, {"input": [-21.0, 79.5], "expected": 79.5}, {"input": [-21.0, 80.0], "expected": 80.0}, {"input": [-21.0, 80.5], "expected": 80.5}, {"input": [-21.0, 81.0], "expected": 81.0}, {"input": [-21.0, 81.5], "expected": 81.5}, {"input": [-21.0, 82.0], "expected": 82.0}, {"input": [-21.0, 82.5], "expected": 82.5}, {"input": [-21.0, 83.0], "expected": 83.0}, {"input": [-21.0, 83.5], "expected": 83.5}, {"input": [-21.0, 84.0], "expected": 84.0}, {"input": [-21.0, 84.5], "expected": 84.5}, {"input": [-21.0, 85.0], "expected": 85.0}, {"input": [-21.0, 85.5], "expected": 85.5}, {"input": [-21.0, 86.0], "expected": 86.0}, {"input": [-21.0, 86.5], "expected": 86.5}, {"input": [-21.0, 87.0], "expected": 87.0}, {"input": [-21.0, 87.5], "expected": 87.5}, {"input": [-21.0, 88.0], "expected": 88.0}, {"input": [-21.0, 88.5], "expected": 88.5}, {"input": [-21.0, 89.0], "expected": 89.0}, {"input": [-21.0, 89.5], "expected": 89.5}, {"input": [-21.0, 90.0], "expected": 90.0}, {"input": [-21.0, 90.5], "expected": 90.5}, {"input": [-21.0, 91.0], "expected": 91.0}, {"input": [-21.0, 91.5], "expected": 91.5}, {"input": [-21.0, 92.0], "expected": 92.0}, {"input": [-21.0, 92.5], "expected": 92.5}, {"input": [-21.0, 93.0], "expected": 93.0}, {"input": [-21.0, 93.5], "expected": 93.5}, {"input": [-21.0, 94.0], "expected": 94.0}, {"input": [-21.0, 94.5], "expected": 94.5}, {"input": [-21.0, 95.0], "expected": 95.0}, {"input": [-21.0, 95.5], "expected": 95.5}, {"input": [-21.0, 96.0], "expected": 96.0}, {"input": [-21.0, 96.5], "expected": 96.5}, {"input": [-21.0, 97.0], "expected": 97.0}, {"input": [-21.0, 97.5], "expected": 97.5}, {"input": [-21.0, 98.0], "expected": 98.0}, {"input": [-21.0, 98.5], "expected": 98.5}, {"input": [-21.0, 99.0], "expected": 99.0}, {"input": [-21.0, 99.5], "expected": 99.5}, {"input": [-20.5, -100.0], "expected": -20.5}, {"input": [-20.5, -99.5], "expected": -20.5}, {"input": [-20.5, -99.0], "expected": -20.5}, {"input": [-20.5, -98.5], "expected": -20.5}, {"input": [-20.5, -98.0], "expected": -20.5}, {"input": [-20.5, -97.5], "expected": -20.5}, {"input": [-20.5, -97.0], "expected": -20.5}, {"input": [-20.5, -96.5], "expected": -20.5}, {"input": [-20.5, -96.0], "expected": -20.5}, {"input": [-20.5, -95.5], "expected": -20.5}, {"input": [-20.5, -95.0], "expected": -20.5}, {"input": [-20.5, -94.5], "expected": -20.5}, {"input": [-20.5, -94.0], "expected": -20.5}, {"input": [-20.5, -93.5], "expected": -20.5}, {"input": [-20.5, -93.0], "expected": -20.5}, {"input": [-20.5, -92.5], "expected": -20.5}, {"input": [-20.5, -92.0], "expected": -20.5}, {"input": [-20.5, -91.5], "expected": -20.5}, {"input": [-20.5, -91.0], "expected": -20.5}, {"input": [-20.5, -90.5], "expected": -20.5}, {"input": [-20.5, -90.0], "expected": -20.5}, {"input": [-20.5, -89.5], "expected": -20.5}, {"input": [-20.5, -89.0], "expected": -20.5}, {"input": [-20.5, -88.5], "expected": -20.5}, {"input": [-20.5, -88.0], "expected": -20.5}, {"input": [-20.5, -87.5], "expected": -20.5}, {"input": [-20.5, -87.0], "expected": -20.5}, {"input": [-20.5, -86.5], "expected": -20.5}, {"input": [-20.5, -86.0], "expected": -20.5}, {"input": [-20.5, -85.5], "expected": -20.5}, {"input": [-20.5, -85.0], "expected": -20.5}, {"input": [-20.5, -84.5], "expected": -20.5}, {"input": [-20.5, -84.0], "expected": -20.5}, {"input": [-20.5, -83.5], "expected": -20.5}, {"input": [-20.5, -83.0], "expected": -20.5}, {"input": [-20.5, -82.5], "expected": -20.5}, {"input": [-20.5, -82.0], "expected": -20.5}, {"input": [-20.5, -81.5], "expected": -20.5}, {"input": [-20.5, -81.0], "expected": -20.5}, {"input": [-20.5, -80.5], "expected": -20.5}, {"input": [-20.5, -80.0], "expected": -20.5}, {"input": [-20.5, -79.5], "expected": -20.5}, {"input": [-20.5, -79.0], "expected": -20.5}, {"input": [-20.5, -78.5], "expected": -20.5}, {"input": [-20.5, -78.0], "expected": -20.5}, {"input": [-20.5, -77.5], "expected": -20.5}, {"input": [-20.5, -77.0], "expected": -20.5}, {"input": [-20.5, -76.5], "expected": -20.5}, {"input": [-20.5, -76.0], "expected": -20.5}, {"input": [-20.5, -75.5], "expected": -20.5}, {"input": [-20.5, -75.0], "expected": -20.5}, {"input": [-20.5, -74.5], "expected": -20.5}, {"input": [-20.5, -74.0], "expected": -20.5}, {"input": [-20.5, -73.5], "expected": -20.5}, {"input": [-20.5, -73.0], "expected": -20.5}, {"input": [-20.5, -72.5], "expected": -20.5}, {"input": [-20.5, -72.0], "expected": -20.5}, {"input": [-20.5, -71.5], "expected": -20.5}, {"input": [-20.5, -71.0], "expected": -20.5}, {"input": [-20.5, -70.5], "expected": -20.5}, {"input": [-20.5, -70.0], "expected": -20.5}, {"input": [-20.5, -69.5], "expected": -20.5}, {"input": [-20.5, -69.0], "expected": -20.5}, {"input": [-20.5, -68.5], "expected": -20.5}, {"input": [-20.5, -68.0], "expected": -20.5}, {"input": [-20.5, -67.5], "expected": -20.5}, {"input": [-20.5, -67.0], "expected": -20.5}, {"input": [-20.5, -66.5], "expected": -20.5}, {"input": [-20.5, -66.0], "expected": -20.5}, {"input": [-20.5, -65.5], "expected": -20.5}, {"input": [-20.5, -65.0], "expected": -20.5}, {"input": [-20.5, -64.5], "expected": -20.5}, {"input": [-20.5, -64.0], "expected": -20.5}, {"input": [-20.5, -63.5], "expected": -20.5}, {"input": [-20.5, -63.0], "expected": -20.5}, {"input": [-20.5, -62.5], "expected": -20.5}, {"input": [-20.5, -62.0], "expected": -20.5}, {"input": [-20.5, -61.5], "expected": -20.5}, {"input": [-20.5, -61.0], "expected": -20.5}, {"input": [-20.5, -60.5], "expected": -20.5}, {"input": [-20.5, -60.0], "expected": -20.5}, {"input": [-20.5, -59.5], "expected": -20.5}, {"input": [-20.5, -59.0], "expected": -20.5}, {"input": [-20.5, -58.5], "expected": -20.5}, {"input": [-20.5, -58.0], "expected": -20.5}, {"input": [-20.5, -57.5], "expected": -20.5}, {"input": [-20.5, -57.0], "expected": -20.5}, {"input": [-20.5, -56.5], "expected": -20.5}, {"input": [-20.5, -56.0], "expected": -20.5}, {"input": [-20.5, -55.5], "expected": -20.5}, {"input": [-20.5, -55.0], "expected": -20.5}, {"input": [-20.5, -54.5], "expected": -20.5}, {"input": [-20.5, -54.0], "expected": -20.499999999999996}, {"input": [-20.5, -53.5], "expected": -20.499999999999996}, {"input": [-20.5, -53.0], "expected": -20.499999999999993}, {"input": [-20.5, -52.5], "expected": -20.499999999999986}, {"input": [-20.5, -52.0], "expected": -20.49999999999998}, {"input": [-20.5, -51.5], "expected": -20.499999999999964}, {"input": [-20.5, -51.0], "expected": -20.499999999999943}, {"input": [-20.5, -50.5], "expected": -20.499999999999908}, {"input": [-20.5, -50.0], "expected": -20.499999999999847}, {"input": [-20.5, -49.5], "expected": -20.499999999999744}, {"input": [-20.5, -49.0], "expected": -20.49999999999958}, {"input": [-20.5, -48.5], "expected": -20.499999999999307}, {"input": [-20.5, -48.0], "expected": -20.49999999999886}, {"input": [-20.5, -47.5], "expected": -20.49999999999812}, {"input": [-20.5, -47.0], "expected": -20.499999999996902}, {"input": [-20.5, -46.5], "expected": -20.49999999999489}, {"input": [-20.5, -46.0], "expected": -20.499999999991577}, {"input": [-20.5, -45.5], "expected": -20.499999999986112}, {"input": [-20.5, -45.0], "expected": -20.499999999977103}, {"input": [-20.5, -44.5], "expected": -20.49999999996225}, {"input": [-20.5, -44.0], "expected": -20.49999999993776}, {"input": [-20.5, -43.5], "expected": -20.49999999989738}, {"input": [-20.5, -43.0], "expected": -20.49999999983081}, {"input": [-20.5, -42.5], "expected": -20.49999999972105}, {"input": [-20.5, -42.0], "expected": -20.499999999540094}, {"input": [-20.5, -41.5], "expected": -20.499999999241744}, {"input": [-20.5, -41.0], "expected": -20.499999998749846}, {"input": [-20.5, -40.5], "expected": -20.499999997938847}, {"input": [-20.5, -40.0], "expected": -20.499999996601733}, {"input": [-20.5, -39.5], "expected": -20.499999994397204}, {"input": [-20.5, -39.0], "expected": -20.49999999076255}, {"input": [-20.5, -38.5], "expected": -20.49999998477002}, {"input": [-20.5, -38.0], "expected": -20.49999997489001}, {"input": [-20.5, -37.5], "expected": -20.499999958600625}, {"input": [-20.5, -37.0], "expected": -20.499999931743968}, {"input": [-20.5, -36.5], "expected": -20.49999988746483}, {"input": [-20.5, -36.0], "expected": -20.49999981446088}, {"input": [-20.5, -35.5], "expected": -20.499999694097728}, {"input": [-20.5, -35.0], "expected": -20.499999495652464}, {"input": [-20.5, -34.5], "expected": -20.499999168471625}, {"input": [-20.5, -34.0], "expected": -20.499998629041855}, {"input": [-20.5, -33.5], "expected": -20.499997739673148}, {"input": [-20.5, -33.0], "expected": -20.499996273353773}, {"input": [-20.5, -32.5], "expected": -20.499993855806522}, {"input": [-20.5, -32.0], "expected": -20.49998986995771}, {"input": [-20.5, -31.5], "expected": -20.499983298438682}, {"input": [-20.5, -31.0], "expected": -20.499972463929772}, {"input": [-20.5, -30.5], "expected": -20.499954601100782}, {"input": [-20.5, -30.0], "expected": -20.49992515097137}, {"input": [-20.5, -29.5], "expected": -20.499876597810278}, {"input": [-20.5, -29.0], "expected": -20.499796552327872}, {"input": [-20.5, -28.5], "expected": -20.499664593627106}, {"input": [-20.5, -28.0], "expected": -20.49944706852464}, {"input": [-20.5, -27.5], "expected": -20.499088533546225}, {"input": [-20.5, -27.0], "expected": -20.498497689840246}, {"input": [-20.5, -26.5], "expected": -20.497524314862268}, {"input": [-20.5, -26.0], "expected": -20.495921556729428}, {"input": [-20.5, -25.5], "expected": -20.493284651510884}, {"input": [-20.5, -25.0], "expected": -20.488952255151407}, {"input": [-20.5, -24.5], "expected": -20.48185007208219}, {"input": [-20.5, -24.0], "expected": -20.47024958172738}, {"input": [-20.5, -23.5], "expected": -20.451412648426256}, {"input": [-20.5, -23.0], "expected": -20.42111026570745}, {"input": [-20.5, -22.5], "expected": -20.373071988957026}, {"input": [-20.5, -22.0], "expected": -20.298586722017248}, {"input": [-20.5, -21.5], "expected": -20.186738312481776}, {"input": [-20.5, -21.0], "expected": -20.02592301581989}, {"input": [-20.5, -20.5], "expected": -19.806852819440056}, {"input": [-20.5, -20.0], "expected": -19.52592301581989}, {"input": [-20.5, -19.5], "expected": -19.186738312481776}, {"input": [-20.5, -19.0], "expected": -18.798586722017248}, {"input": [-20.5, -18.5], "expected": -18.373071988957026}, {"input": [-20.5, -18.0], "expected": -17.92111026570745}, {"input": [-20.5, -17.5], "expected": -17.451412648426256}, {"input": [-20.5, -17.0], "expected": -16.97024958172738}, {"input": [-20.5, -16.5], "expected": -16.48185007208219}, {"input": [-20.5, -16.0], "expected": -15.988952255151407}, {"input": [-20.5, -15.5], "expected": -15.493284651510882}, {"input": [-20.5, -15.0], "expected": -14.99592155672943}, {"input": [-20.5, -14.5], "expected": -14.49752431486227}, {"input": [-20.5, -14.0], "expected": -13.998497689840246}, {"input": [-20.5, -13.5], "expected": -13.499088533546226}, {"input": [-20.5, -13.0], "expected": -12.999447068524638}, {"input": [-20.5, -12.5], "expected": -12.499664593627104}, {"input": [-20.5, -12.0], "expected": -11.99979655232787}, {"input": [-20.5, -11.5], "expected": -11.499876597810276}, {"input": [-20.5, -11.0], "expected": -10.999925150971372}, {"input": [-20.5, -10.5], "expected": -10.499954601100782}, {"input": [-20.5, -10.0], "expected": -9.99997246392977}, {"input": [-20.5, -9.5], "expected": -9.499983298438682}, {"input": [-20.5, -9.0], "expected": -8.99998986995771}, {"input": [-20.5, -8.5], "expected": -8.499993855806522}, {"input": [-20.5, -8.0], "expected": -7.999996273353772}, {"input": [-20.5, -7.5], "expected": -7.499997739673147}, {"input": [-20.5, -7.0], "expected": -6.999998629041853}, {"input": [-20.5, -6.5], "expected": -6.499999168471627}, {"input": [-20.5, -6.0], "expected": -5.999999495652465}, {"input": [-20.5, -5.5], "expected": -5.499999694097727}, {"input": [-20.5, -5.0], "expected": -4.999999814460881}, {"input": [-20.5, -4.5], "expected": -4.499999887464831}, {"input": [-20.5, -4.0], "expected": -3.9999999317439685}, {"input": [-20.5, -3.5], "expected": -3.4999999586006236}, {"input": [-20.5, -3.0], "expected": -2.9999999748900086}, {"input": [-20.5, -2.5], "expected": -2.4999999847700205}, {"input": [-20.5, -2.0], "expected": -1.9999999907625503}, {"input": [-20.5, -1.5], "expected": -1.4999999943972036}, {"input": [-20.5, -1.0], "expected": -0.9999999966017322}, {"input": [-20.5, -0.5], "expected": -0.49999999793884636}, {"input": [-20.5, 0.0], "expected": 1.2501528656053015e-09}, {"input": [-20.5, 0.5], "expected": 0.500000000758256}, {"input": [-20.5, 1.0], "expected": 1.0000000004599054}, {"input": [-20.5, 1.5], "expected": 1.5000000002789469}, {"input": [-20.5, 2.0], "expected": 2.00000000016919}, {"input": [-20.5, 2.5], "expected": 2.500000000102619}, {"input": [-20.5, 3.0], "expected": 3.0000000000622413}, {"input": [-20.5, 3.5], "expected": 3.500000000037751}, {"input": [-20.5, 4.0], "expected": 4.000000000022897}, {"input": [-20.5, 4.5], "expected": 4.500000000013888}, {"input": [-20.5, 5.0], "expected": 5.0000000000084235}, {"input": [-20.5, 5.5], "expected": 5.500000000005109}, {"input": [-20.5, 6.0], "expected": 6.000000000003099}, {"input": [-20.5, 6.5], "expected": 6.500000000001879}, {"input": [-20.5, 7.0], "expected": 7.00000000000114}, {"input": [-20.5, 7.5], "expected": 7.500000000000691}, {"input": [-20.5, 8.0], "expected": 8.00000000000042}, {"input": [-20.5, 8.5], "expected": 8.500000000000254}, {"input": [-20.5, 9.0], "expected": 9.000000000000155}, {"input": [-20.5, 9.5], "expected": 9.500000000000094}, {"input": [-20.5, 10.0], "expected": 10.000000000000057}, {"input": [-20.5, 10.5], "expected": 10.500000000000034}, {"input": [-20.5, 11.0], "expected": 11.000000000000021}, {"input": [-20.5, 11.5], "expected": 11.500000000000012}, {"input": [-20.5, 12.0], "expected": 12.000000000000007}, {"input": [-20.5, 12.5], "expected": 12.500000000000005}, {"input": [-20.5, 13.0], "expected": 13.000000000000004}, {"input": [-20.5, 13.5], "expected": 13.500000000000002}, {"input": [-20.5, 14.0], "expected": 14.000000000000002}, {"input": [-20.5, 14.5], "expected": 14.5}, {"input": [-20.5, 15.0], "expected": 15.0}, {"input": [-20.5, 15.5], "expected": 15.5}, {"input": [-20.5, 16.0], "expected": 16.0}, {"input": [-20.5, 16.5], "expected": 16.5}, {"input": [-20.5, 17.0], "expected": 17.0}, {"input": [-20.5, 17.5], "expected": 17.5}, {"input": [-20.5, 18.0], "expected": 18.0}, {"input": [-20.5, 18.5], "expected": 18.5}, {"input": [-20.5, 19.0], "expected": 19.0}, {"input": [-20.5, 19.5], "expected": 19.5}, {"input": [-20.5, 20.0], "expected": 20.0}, {"input": [-20.5, 20.5], "expected": 20.5}, {"input": [-20.5, 21.0], "expected": 21.0}, {"input": [-20.5, 21.5], "expected": 21.5}, {"input": [-20.5, 22.0], "expected": 22.0}, {"input": [-20.5, 22.5], "expected": 22.5}, {"input": [-20.5, 23.0], "expected": 23.0}, {"input": [-20.5, 23.5], "expected": 23.5}, {"input": [-20.5, 24.0], "expected": 24.0}, {"input": [-20.5, 24.5], "expected": 24.5}, {"input": [-20.5, 25.0], "expected": 25.0}, {"input": [-20.5, 25.5], "expected": 25.5}, {"input": [-20.5, 26.0], "expected": 26.0}, {"input": [-20.5, 26.5], "expected": 26.5}, {"input": [-20.5, 27.0], "expected": 27.0}, {"input": [-20.5, 27.5], "expected": 27.5}, {"input": [-20.5, 28.0], "expected": 28.0}, {"input": [-20.5, 28.5], "expected": 28.5}, {"input": [-20.5, 29.0], "expected": 29.0}, {"input": [-20.5, 29.5], "expected": 29.5}, {"input": [-20.5, 30.0], "expected": 30.0}, {"input": [-20.5, 30.5], "expected": 30.5}, {"input": [-20.5, 31.0], "expected": 31.0}, {"input": [-20.5, 31.5], "expected": 31.5}, {"input": [-20.5, 32.0], "expected": 32.0}, {"input": [-20.5, 32.5], "expected": 32.5}, {"input": [-20.5, 33.0], "expected": 33.0}, {"input": [-20.5, 33.5], "expected": 33.5}, {"input": [-20.5, 34.0], "expected": 34.0}, {"input": [-20.5, 34.5], "expected": 34.5}, {"input": [-20.5, 35.0], "expected": 35.0}, {"input": [-20.5, 35.5], "expected": 35.5}, {"input": [-20.5, 36.0], "expected": 36.0}, {"input": [-20.5, 36.5], "expected": 36.5}, {"input": [-20.5, 37.0], "expected": 37.0}, {"input": [-20.5, 37.5], "expected": 37.5}, {"input": [-20.5, 38.0], "expected": 38.0}, {"input": [-20.5, 38.5], "expected": 38.5}, {"input": [-20.5, 39.0], "expected": 39.0}, {"input": [-20.5, 39.5], "expected": 39.5}, {"input": [-20.5, 40.0], "expected": 40.0}, {"input": [-20.5, 40.5], "expected": 40.5}, {"input": [-20.5, 41.0], "expected": 41.0}, {"input": [-20.5, 41.5], "expected": 41.5}, {"input": [-20.5, 42.0], "expected": 42.0}, {"input": [-20.5, 42.5], "expected": 42.5}, {"input": [-20.5, 43.0], "expected": 43.0}, {"input": [-20.5, 43.5], "expected": 43.5}, {"input": [-20.5, 44.0], "expected": 44.0}, {"input": [-20.5, 44.5], "expected": 44.5}, {"input": [-20.5, 45.0], "expected": 45.0}, {"input": [-20.5, 45.5], "expected": 45.5}, {"input": [-20.5, 46.0], "expected": 46.0}, {"input": [-20.5, 46.5], "expected": 46.5}, {"input": [-20.5, 47.0], "expected": 47.0}, {"input": [-20.5, 47.5], "expected": 47.5}, {"input": [-20.5, 48.0], "expected": 48.0}, {"input": [-20.5, 48.5], "expected": 48.5}, {"input": [-20.5, 49.0], "expected": 49.0}, {"input": [-20.5, 49.5], "expected": 49.5}, {"input": [-20.5, 50.0], "expected": 50.0}, {"input": [-20.5, 50.5], "expected": 50.5}, {"input": [-20.5, 51.0], "expected": 51.0}, {"input": [-20.5, 51.5], "expected": 51.5}, {"input": [-20.5, 52.0], "expected": 52.0}, {"input": [-20.5, 52.5], "expected": 52.5}, {"input": [-20.5, 53.0], "expected": 53.0}, {"input": [-20.5, 53.5], "expected": 53.5}, {"input": [-20.5, 54.0], "expected": 54.0}, {"input": [-20.5, 54.5], "expected": 54.5}, {"input": [-20.5, 55.0], "expected": 55.0}, {"input": [-20.5, 55.5], "expected": 55.5}, {"input": [-20.5, 56.0], "expected": 56.0}, {"input": [-20.5, 56.5], "expected": 56.5}, {"input": [-20.5, 57.0], "expected": 57.0}, {"input": [-20.5, 57.5], "expected": 57.5}, {"input": [-20.5, 58.0], "expected": 58.0}, {"input": [-20.5, 58.5], "expected": 58.5}, {"input": [-20.5, 59.0], "expected": 59.0}, {"input": [-20.5, 59.5], "expected": 59.5}, {"input": [-20.5, 60.0], "expected": 60.0}, {"input": [-20.5, 60.5], "expected": 60.5}, {"input": [-20.5, 61.0], "expected": 61.0}, {"input": [-20.5, 61.5], "expected": 61.5}, {"input": [-20.5, 62.0], "expected": 62.0}, {"input": [-20.5, 62.5], "expected": 62.5}, {"input": [-20.5, 63.0], "expected": 63.0}, {"input": [-20.5, 63.5], "expected": 63.5}, {"input": [-20.5, 64.0], "expected": 64.0}, {"input": [-20.5, 64.5], "expected": 64.5}, {"input": [-20.5, 65.0], "expected": 65.0}, {"input": [-20.5, 65.5], "expected": 65.5}, {"input": [-20.5, 66.0], "expected": 66.0}, {"input": [-20.5, 66.5], "expected": 66.5}, {"input": [-20.5, 67.0], "expected": 67.0}, {"input": [-20.5, 67.5], "expected": 67.5}, {"input": [-20.5, 68.0], "expected": 68.0}, {"input": [-20.5, 68.5], "expected": 68.5}, {"input": [-20.5, 69.0], "expected": 69.0}, {"input": [-20.5, 69.5], "expected": 69.5}, {"input": [-20.5, 70.0], "expected": 70.0}, {"input": [-20.5, 70.5], "expected": 70.5}, {"input": [-20.5, 71.0], "expected": 71.0}, {"input": [-20.5, 71.5], "expected": 71.5}, {"input": [-20.5, 72.0], "expected": 72.0}, {"input": [-20.5, 72.5], "expected": 72.5}, {"input": [-20.5, 73.0], "expected": 73.0}, {"input": [-20.5, 73.5], "expected": 73.5}, {"input": [-20.5, 74.0], "expected": 74.0}, {"input": [-20.5, 74.5], "expected": 74.5}, {"input": [-20.5, 75.0], "expected": 75.0}, {"input": [-20.5, 75.5], "expected": 75.5}, {"input": [-20.5, 76.0], "expected": 76.0}, {"input": [-20.5, 76.5], "expected": 76.5}, {"input": [-20.5, 77.0], "expected": 77.0}, {"input": [-20.5, 77.5], "expected": 77.5}, {"input": [-20.5, 78.0], "expected": 78.0}, {"input": [-20.5, 78.5], "expected": 78.5}, {"input": [-20.5, 79.0], "expected": 79.0}, {"input": [-20.5, 79.5], "expected": 79.5}, {"input": [-20.5, 80.0], "expected": 80.0}, {"input": [-20.5, 80.5], "expected": 80.5}, {"input": [-20.5, 81.0], "expected": 81.0}, {"input": [-20.5, 81.5], "expected": 81.5}, {"input": [-20.5, 82.0], "expected": 82.0}, {"input": [-20.5, 82.5], "expected": 82.5}, {"input": [-20.5, 83.0], "expected": 83.0}, {"input": [-20.5, 83.5], "expected": 83.5}, {"input": [-20.5, 84.0], "expected": 84.0}, {"input": [-20.5, 84.5], "expected": 84.5}, {"input": [-20.5, 85.0], "expected": 85.0}, {"input": [-20.5, 85.5], "expected": 85.5}, {"input": [-20.5, 86.0], "expected": 86.0}, {"input": [-20.5, 86.5], "expected": 86.5}, {"input": [-20.5, 87.0], "expected": 87.0}, {"input": [-20.5, 87.5], "expected": 87.5}, {"input": [-20.5, 88.0], "expected": 88.0}, {"input": [-20.5, 88.5], "expected": 88.5}, {"input": [-20.5, 89.0], "expected": 89.0}, {"input": [-20.5, 89.5], "expected": 89.5}, {"input": [-20.5, 90.0], "expected": 90.0}, {"input": [-20.5, 90.5], "expected": 90.5}, {"input": [-20.5, 91.0], "expected": 91.0}, {"input": [-20.5, 91.5], "expected": 91.5}, {"input": [-20.5, 92.0], "expected": 92.0}, {"input": [-20.5, 92.5], "expected": 92.5}, {"input": [-20.5, 93.0], "expected": 93.0}, {"input": [-20.5, 93.5], "expected": 93.5}, {"input": [-20.5, 94.0], "expected": 94.0}, {"input": [-20.5, 94.5], "expected": 94.5}, {"input": [-20.5, 95.0], "expected": 95.0}, {"input": [-20.5, 95.5], "expected": 95.5}, {"input": [-20.5, 96.0], "expected": 96.0}, {"input": [-20.5, 96.5], "expected": 96.5}, {"input": [-20.5, 97.0], "expected": 97.0}, {"input": [-20.5, 97.5], "expected": 97.5}, {"input": [-20.5, 98.0], "expected": 98.0}, {"input": [-20.5, 98.5], "expected": 98.5}, {"input": [-20.5, 99.0], "expected": 99.0}, {"input": [-20.5, 99.5], "expected": 99.5}, {"input": [-20.0, -100.0], "expected": -20.0}, {"input": [-20.0, -99.5], "expected": -20.0}, {"input": [-20.0, -99.0], "expected": -20.0}, {"input": [-20.0, -98.5], "expected": -20.0}, {"input": [-20.0, -98.0], "expected": -20.0}, {"input": [-20.0, -97.5], "expected": -20.0}, {"input": [-20.0, -97.0], "expected": -20.0}, {"input": [-20.0, -96.5], "expected": -20.0}, {"input": [-20.0, -96.0], "expected": -20.0}, {"input": [-20.0, -95.5], "expected": -20.0}, {"input": [-20.0, -95.0], "expected": -20.0}, {"input": [-20.0, -94.5], "expected": -20.0}, {"input": [-20.0, -94.0], "expected": -20.0}, {"input": [-20.0, -93.5], "expected": -20.0}, {"input": [-20.0, -93.0], "expected": -20.0}, {"input": [-20.0, -92.5], "expected": -20.0}, {"input": [-20.0, -92.0], "expected": -20.0}, {"input": [-20.0, -91.5], "expected": -20.0}, {"input": [-20.0, -91.0], "expected": -20.0}, {"input": [-20.0, -90.5], "expected": -20.0}, {"input": [-20.0, -90.0], "expected": -20.0}, {"input": [-20.0, -89.5], "expected": -20.0}, {"input": [-20.0, -89.0], "expected": -20.0}, {"input": [-20.0, -88.5], "expected": -20.0}, {"input": [-20.0, -88.0], "expected": -20.0}, {"input": [-20.0, -87.5], "expected": -20.0}, {"input": [-20.0, -87.0], "expected": -20.0}, {"input": [-20.0, -86.5], "expected": -20.0}, {"input": [-20.0, -86.0], "expected": -20.0}, {"input": [-20.0, -85.5], "expected": -20.0}, {"input": [-20.0, -85.0], "expected": -20.0}, {"input": [-20.0, -84.5], "expected": -20.0}, {"input": [-20.0, -84.0], "expected": -20.0}, {"input": [-20.0, -83.5], "expected": -20.0}, {"input": [-20.0, -83.0], "expected": -20.0}, {"input": [-20.0, -82.5], "expected": -20.0}, {"input": [-20.0, -82.0], "expected": -20.0}, {"input": [-20.0, -81.5], "expected": -20.0}, {"input": [-20.0, -81.0], "expected": -20.0}, {"input": [-20.0, -80.5], "expected": -20.0}, {"input": [-20.0, -80.0], "expected": -20.0}, {"input": [-20.0, -79.5], "expected": -20.0}, {"input": [-20.0, -79.0], "expected": -20.0}, {"input": [-20.0, -78.5], "expected": -20.0}, {"input": [-20.0, -78.0], "expected": -20.0}, {"input": [-20.0, -77.5], "expected": -20.0}, {"input": [-20.0, -77.0], "expected": -20.0}, {"input": [-20.0, -76.5], "expected": -20.0}, {"input": [-20.0, -76.0], "expected": -20.0}, {"input": [-20.0, -75.5], "expected": -20.0}, {"input": [-20.0, -75.0], "expected": -20.0}, {"input": [-20.0, -74.5], "expected": -20.0}, {"input": [-20.0, -74.0], "expected": -20.0}, {"input": [-20.0, -73.5], "expected": -20.0}, {"input": [-20.0, -73.0], "expected": -20.0}, {"input": [-20.0, -72.5], "expected": -20.0}, {"input": [-20.0, -72.0], "expected": -20.0}, {"input": [-20.0, -71.5], "expected": -20.0}, {"input": [-20.0, -71.0], "expected": -20.0}, {"input": [-20.0, -70.5], "expected": -20.0}, {"input": [-20.0, -70.0], "expected": -20.0}, {"input": [-20.0, -69.5], "expected": -20.0}, {"input": [-20.0, -69.0], "expected": -20.0}, {"input": [-20.0, -68.5], "expected": -20.0}, {"input": [-20.0, -68.0], "expected": -20.0}, {"input": [-20.0, -67.5], "expected": -20.0}, {"input": [-20.0, -67.0], "expected": -20.0}, {"input": [-20.0, -66.5], "expected": -20.0}, {"input": [-20.0, -66.0], "expected": -20.0}, {"input": [-20.0, -65.5], "expected": -20.0}, {"input": [-20.0, -65.0], "expected": -20.0}, {"input": [-20.0, -64.5], "expected": -20.0}, {"input": [-20.0, -64.0], "expected": -20.0}, {"input": [-20.0, -63.5], "expected": -20.0}, {"input": [-20.0, -63.0], "expected": -20.0}, {"input": [-20.0, -62.5], "expected": -20.0}, {"input": [-20.0, -62.0], "expected": -20.0}, {"input": [-20.0, -61.5], "expected": -20.0}, {"input": [-20.0, -61.0], "expected": -20.0}, {"input": [-20.0, -60.5], "expected": -20.0}, {"input": [-20.0, -60.0], "expected": -20.0}, {"input": [-20.0, -59.5], "expected": -20.0}, {"input": [-20.0, -59.0], "expected": -20.0}, {"input": [-20.0, -58.5], "expected": -20.0}, {"input": [-20.0, -58.0], "expected": -20.0}, {"input": [-20.0, -57.5], "expected": -20.0}, {"input": [-20.0, -57.0], "expected": -20.0}, {"input": [-20.0, -56.5], "expected": -20.0}, {"input": [-20.0, -56.0], "expected": -20.0}, {"input": [-20.0, -55.5], "expected": -20.0}, {"input": [-20.0, -55.0], "expected": -20.0}, {"input": [-20.0, -54.5], "expected": -20.0}, {"input": [-20.0, -54.0], "expected": -20.0}, {"input": [-20.0, -53.5], "expected": -19.999999999999996}, {"input": [-20.0, -53.0], "expected": -19.999999999999996}, {"input": [-20.0, -52.5], "expected": -19.999999999999993}, {"input": [-20.0, -52.0], "expected": -19.999999999999986}, {"input": [-20.0, -51.5], "expected": -19.99999999999998}, {"input": [-20.0, -51.0], "expected": -19.999999999999964}, {"input": [-20.0, -50.5], "expected": -19.999999999999943}, {"input": [-20.0, -50.0], "expected": -19.999999999999908}, {"input": [-20.0, -49.5], "expected": -19.999999999999847}, {"input": [-20.0, -49.0], "expected": -19.999999999999744}, {"input": [-20.0, -48.5], "expected": -19.99999999999958}, {"input": [-20.0, -48.0], "expected": -19.999999999999307}, {"input": [-20.0, -47.5], "expected": -19.99999999999886}, {"input": [-20.0, -47.0], "expected": -19.99999999999812}, {"input": [-20.0, -46.5], "expected": -19.999999999996902}, {"input": [-20.0, -46.0], "expected": -19.99999999999489}, {"input": [-20.0, -45.5], "expected": -19.999999999991577}, {"input": [-20.0, -45.0], "expected": -19.999999999986112}, {"input": [-20.0, -44.5], "expected": -19.999999999977103}, {"input": [-20.0, -44.0], "expected": -19.99999999996225}, {"input": [-20.0, -43.5], "expected": -19.99999999993776}, {"input": [-20.0, -43.0], "expected": -19.99999999989738}, {"input": [-20.0, -42.5], "expected": -19.99999999983081}, {"input": [-20.0, -42.0], "expected": -19.99999999972105}, {"input": [-20.0, -41.5], "expected": -19.999999999540094}, {"input": [-20.0, -41.0], "expected": -19.999999999241744}, {"input": [-20.0, -40.5], "expected": -19.999999998749846}, {"input": [-20.0, -40.0], "expected": -19.999999997938847}, {"input": [-20.0, -39.5], "expected": -19.999999996601733}, {"input": [-20.0, -39.0], "expected": -19.999999994397204}, {"input": [-20.0, -38.5], "expected": -19.99999999076255}, {"input": [-20.0, -38.0], "expected": -19.99999998477002}, {"input": [-20.0, -37.5], "expected": -19.99999997489001}, {"input": [-20.0, -37.0], "expected": -19.999999958600625}, {"input": [-20.0, -36.5], "expected": -19.999999931743968}, {"input": [-20.0, -36.0], "expected": -19.99999988746483}, {"input": [-20.0, -35.5], "expected": -19.99999981446088}, {"input": [-20.0, -35.0], "expected": -19.999999694097728}, {"input": [-20.0, -34.5], "expected": -19.999999495652464}, {"input": [-20.0, -34.0], "expected": -19.999999168471625}, {"input": [-20.0, -33.5], "expected": -19.999998629041855}, {"input": [-20.0, -33.0], "expected": -19.999997739673148}, {"input": [-20.0, -32.5], "expected": -19.999996273353773}, {"input": [-20.0, -32.0], "expected": -19.999993855806522}, {"input": [-20.0, -31.5], "expected": -19.99998986995771}, {"input": [-20.0, -31.0], "expected": -19.999983298438682}, {"input": [-20.0, -30.5], "expected": -19.999972463929772}, {"input": [-20.0, -30.0], "expected": -19.999954601100782}, {"input": [-20.0, -29.5], "expected": -19.99992515097137}, {"input": [-20.0, -29.0], "expected": -19.999876597810278}, {"input": [-20.0, -28.5], "expected": -19.999796552327872}, {"input": [-20.0, -28.0], "expected": -19.999664593627106}, {"input": [-20.0, -27.5], "expected": -19.99944706852464}, {"input": [-20.0, -27.0], "expected": -19.999088533546225}, {"input": [-20.0, -26.5], "expected": -19.998497689840246}, {"input": [-20.0, -26.0], "expected": -19.997524314862268}, {"input": [-20.0, -25.5], "expected": -19.995921556729428}, {"input": [-20.0, -25.0], "expected": -19.993284651510884}, {"input": [-20.0, -24.5], "expected": -19.988952255151407}, {"input": [-20.0, -24.0], "expected": -19.98185007208219}, {"input": [-20.0, -23.5], "expected": -19.97024958172738}, {"input": [-20.0, -23.0], "expected": -19.951412648426256}, {"input": [-20.0, -22.5], "expected": -19.92111026570745}, {"input": [-20.0, -22.0], "expected": -19.873071988957026}, {"input": [-20.0, -21.5], "expected": -19.798586722017248}, {"input": [-20.0, -21.0], "expected": -19.686738312481776}, {"input": [-20.0, -20.5], "expected": -19.52592301581989}, {"input": [-20.0, -20.0], "expected": -19.306852819440056}, {"input": [-20.0, -19.5], "expected": -19.02592301581989}, {"input": [-20.0, -19.0], "expected": -18.686738312481776}, {"input": [-20.0, -18.5], "expected": -18.298586722017248}, {"input": [-20.0, -18.0], "expected": -17.873071988957026}, {"input": [-20.0, -17.5], "expected": -17.42111026570745}, {"input": [-20.0, -17.0], "expected": -16.951412648426256}, {"input": [-20.0, -16.5], "expected": -16.47024958172738}, {"input": [-20.0, -16.0], "expected": -15.98185007208219}, {"input": [-20.0, -15.5], "expected": -15.488952255151407}, {"input": [-20.0, -15.0], "expected": -14.993284651510882}, {"input": [-20.0, -14.5], "expected": -14.49592155672943}, {"input": [-20.0, -14.0], "expected": -13.99752431486227}, {"input": [-20.0, -13.5], "expected": -13.498497689840246}, {"input": [-20.0, -13.0], "expected": -12.999088533546226}, {"input": [-20.0, -12.5], "expected": -12.499447068524638}, {"input": [-20.0, -12.0], "expected": -11.999664593627104}, {"input": [-20.0, -11.5], "expected": -11.49979655232787}, {"input": [-20.0, -11.0], "expected": -10.999876597810276}, {"input": [-20.0, -10.5], "expected": -10.499925150971372}, {"input": [-20.0, -10.0], "expected": -9.999954601100782}, {"input": [-20.0, -9.5], "expected": -9.49997246392977}, {"input": [-20.0, -9.0], "expected": -8.999983298438682}, {"input": [-20.0, -8.5], "expected": -8.49998986995771}, {"input": [-20.0, -8.0], "expected": -7.9999938558065224}, {"input": [-20.0, -7.5], "expected": -7.499996273353772}, {"input": [-20.0, -7.0], "expected": -6.999997739673147}, {"input": [-20.0, -6.5], "expected": -6.499998629041853}, {"input": [-20.0, -6.0], "expected": -5.999999168471627}, {"input": [-20.0, -5.5], "expected": -5.499999495652465}, {"input": [-20.0, -5.0], "expected": -4.999999694097727}, {"input": [-20.0, -4.5], "expected": -4.499999814460881}, {"input": [-20.0, -4.0], "expected": -3.9999998874648317}, {"input": [-20.0, -3.5], "expected": -3.4999999317439685}, {"input": [-20.0, -3.0], "expected": -2.9999999586006236}, {"input": [-20.0, -2.5], "expected": -2.4999999748900086}, {"input": [-20.0, -2.0], "expected": -1.9999999847700203}, {"input": [-20.0, -1.5], "expected": -1.4999999907625503}, {"input": [-20.0, -1.0], "expected": -0.9999999943972036}, {"input": [-20.0, -0.5], "expected": -0.49999999660173217}, {"input": [-20.0, 0.0], "expected": 2.061153620314381e-09}, {"input": [-20.0, 0.5], "expected": 0.5000000012501529}, {"input": [-20.0, 1.0], "expected": 1.0000000007582561}, {"input": [-20.0, 1.5], "expected": 1.5000000004599054}, {"input": [-20.0, 2.0], "expected": 2.0000000002789466}, {"input": [-20.0, 2.5], "expected": 2.50000000016919}, {"input": [-20.0, 3.0], "expected": 3.000000000102619}, {"input": [-20.0, 3.5], "expected": 3.5000000000622413}, {"input": [-20.0, 4.0], "expected": 4.000000000037751}, {"input": [-20.0, 4.5], "expected": 4.500000000022897}, {"input": [-20.0, 5.0], "expected": 5.000000000013888}, {"input": [-20.0, 5.5], "expected": 5.5000000000084235}, {"input": [-20.0, 6.0], "expected": 6.000000000005109}, {"input": [-20.0, 6.5], "expected": 6.500000000003099}, {"input": [-20.0, 7.0], "expected": 7.000000000001879}, {"input": [-20.0, 7.5], "expected": 7.50000000000114}, {"input": [-20.0, 8.0], "expected": 8.000000000000691}, {"input": [-20.0, 8.5], "expected": 8.50000000000042}, {"input": [-20.0, 9.0], "expected": 9.000000000000254}, {"input": [-20.0, 9.5], "expected": 9.500000000000155}, {"input": [-20.0, 10.0], "expected": 10.000000000000094}, {"input": [-20.0, 10.5], "expected": 10.500000000000057}, {"input": [-20.0, 11.0], "expected": 11.000000000000034}, {"input": [-20.0, 11.5], "expected": 11.500000000000021}, {"input": [-20.0, 12.0], "expected": 12.000000000000012}, {"input": [-20.0, 12.5], "expected": 12.500000000000007}, {"input": [-20.0, 13.0], "expected": 13.000000000000005}, {"input": [-20.0, 13.5], "expected": 13.500000000000004}, {"input": [-20.0, 14.0], "expected": 14.000000000000002}, {"input": [-20.0, 14.5], "expected": 14.500000000000002}, {"input": [-20.0, 15.0], "expected": 15.0}, {"input": [-20.0, 15.5], "expected": 15.5}, {"input": [-20.0, 16.0], "expected": 16.0}, {"input": [-20.0, 16.5], "expected": 16.5}, {"input": [-20.0, 17.0], "expected": 17.0}, {"input": [-20.0, 17.5], "expected": 17.5}, {"input": [-20.0, 18.0], "expected": 18.0}, {"input": [-20.0, 18.5], "expected": 18.5}, {"input": [-20.0, 19.0], "expected": 19.0}, {"input": [-20.0, 19.5], "expected": 19.5}, {"input": [-20.0, 20.0], "expected": 20.0}, {"input": [-20.0, 20.5], "expected": 20.5}, {"input": [-20.0, 21.0], "expected": 21.0}, {"input": [-20.0, 21.5], "expected": 21.5}, {"input": [-20.0, 22.0], "expected": 22.0}, {"input": [-20.0, 22.5], "expected": 22.5}, {"input": [-20.0, 23.0], "expected": 23.0}, {"input": [-20.0, 23.5], "expected": 23.5}, {"input": [-20.0, 24.0], "expected": 24.0}, {"input": [-20.0, 24.5], "expected": 24.5}, {"input": [-20.0, 25.0], "expected": 25.0}, {"input": [-20.0, 25.5], "expected": 25.5}, {"input": [-20.0, 26.0], "expected": 26.0}, {"input": [-20.0, 26.5], "expected": 26.5}, {"input": [-20.0, 27.0], "expected": 27.0}, {"input": [-20.0, 27.5], "expected": 27.5}, {"input": [-20.0, 28.0], "expected": 28.0}, {"input": [-20.0, 28.5], "expected": 28.5}, {"input": [-20.0, 29.0], "expected": 29.0}, {"input": [-20.0, 29.5], "expected": 29.5}, {"input": [-20.0, 30.0], "expected": 30.0}, {"input": [-20.0, 30.5], "expected": 30.5}, {"input": [-20.0, 31.0], "expected": 31.0}, {"input": [-20.0, 31.5], "expected": 31.5}, {"input": [-20.0, 32.0], "expected": 32.0}, {"input": [-20.0, 32.5], "expected": 32.5}, {"input": [-20.0, 33.0], "expected": 33.0}, {"input": [-20.0, 33.5], "expected": 33.5}, {"input": [-20.0, 34.0], "expected": 34.0}, {"input": [-20.0, 34.5], "expected": 34.5}, {"input": [-20.0, 35.0], "expected": 35.0}, {"input": [-20.0, 35.5], "expected": 35.5}, {"input": [-20.0, 36.0], "expected": 36.0}, {"input": [-20.0, 36.5], "expected": 36.5}, {"input": [-20.0, 37.0], "expected": 37.0}, {"input": [-20.0, 37.5], "expected": 37.5}, {"input": [-20.0, 38.0], "expected": 38.0}, {"input": [-20.0, 38.5], "expected": 38.5}, {"input": [-20.0, 39.0], "expected": 39.0}, {"input": [-20.0, 39.5], "expected": 39.5}, {"input": [-20.0, 40.0], "expected": 40.0}, {"input": [-20.0, 40.5], "expected": 40.5}, {"input": [-20.0, 41.0], "expected": 41.0}, {"input": [-20.0, 41.5], "expected": 41.5}, {"input": [-20.0, 42.0], "expected": 42.0}, {"input": [-20.0, 42.5], "expected": 42.5}, {"input": [-20.0, 43.0], "expected": 43.0}, {"input": [-20.0, 43.5], "expected": 43.5}, {"input": [-20.0, 44.0], "expected": 44.0}, {"input": [-20.0, 44.5], "expected": 44.5}, {"input": [-20.0, 45.0], "expected": 45.0}, {"input": [-20.0, 45.5], "expected": 45.5}, {"input": [-20.0, 46.0], "expected": 46.0}, {"input": [-20.0, 46.5], "expected": 46.5}, {"input": [-20.0, 47.0], "expected": 47.0}, {"input": [-20.0, 47.5], "expected": 47.5}, {"input": [-20.0, 48.0], "expected": 48.0}, {"input": [-20.0, 48.5], "expected": 48.5}, {"input": [-20.0, 49.0], "expected": 49.0}, {"input": [-20.0, 49.5], "expected": 49.5}, {"input": [-20.0, 50.0], "expected": 50.0}, {"input": [-20.0, 50.5], "expected": 50.5}, {"input": [-20.0, 51.0], "expected": 51.0}, {"input": [-20.0, 51.5], "expected": 51.5}, {"input": [-20.0, 52.0], "expected": 52.0}, {"input": [-20.0, 52.5], "expected": 52.5}, {"input": [-20.0, 53.0], "expected": 53.0}, {"input": [-20.0, 53.5], "expected": 53.5}, {"input": [-20.0, 54.0], "expected": 54.0}, {"input": [-20.0, 54.5], "expected": 54.5}, {"input": [-20.0, 55.0], "expected": 55.0}, {"input": [-20.0, 55.5], "expected": 55.5}, {"input": [-20.0, 56.0], "expected": 56.0}, {"input": [-20.0, 56.5], "expected": 56.5}, {"input": [-20.0, 57.0], "expected": 57.0}, {"input": [-20.0, 57.5], "expected": 57.5}, {"input": [-20.0, 58.0], "expected": 58.0}, {"input": [-20.0, 58.5], "expected": 58.5}, {"input": [-20.0, 59.0], "expected": 59.0}, {"input": [-20.0, 59.5], "expected": 59.5}, {"input": [-20.0, 60.0], "expected": 60.0}, {"input": [-20.0, 60.5], "expected": 60.5}, {"input": [-20.0, 61.0], "expected": 61.0}, {"input": [-20.0, 61.5], "expected": 61.5}, {"input": [-20.0, 62.0], "expected": 62.0}, {"input": [-20.0, 62.5], "expected": 62.5}, {"input": [-20.0, 63.0], "expected": 63.0}, {"input": [-20.0, 63.5], "expected": 63.5}, {"input": [-20.0, 64.0], "expected": 64.0}, {"input": [-20.0, 64.5], "expected": 64.5}, {"input": [-20.0, 65.0], "expected": 65.0}, {"input": [-20.0, 65.5], "expected": 65.5}, {"input": [-20.0, 66.0], "expected": 66.0}, {"input": [-20.0, 66.5], "expected": 66.5}, {"input": [-20.0, 67.0], "expected": 67.0}, {"input": [-20.0, 67.5], "expected": 67.5}, {"input": [-20.0, 68.0], "expected": 68.0}, {"input": [-20.0, 68.5], "expected": 68.5}, {"input": [-20.0, 69.0], "expected": 69.0}, {"input": [-20.0, 69.5], "expected": 69.5}, {"input": [-20.0, 70.0], "expected": 70.0}, {"input": [-20.0, 70.5], "expected": 70.5}, {"input": [-20.0, 71.0], "expected": 71.0}, {"input": [-20.0, 71.5], "expected": 71.5}, {"input": [-20.0, 72.0], "expected": 72.0}, {"input": [-20.0, 72.5], "expected": 72.5}, {"input": [-20.0, 73.0], "expected": 73.0}, {"input": [-20.0, 73.5], "expected": 73.5}, {"input": [-20.0, 74.0], "expected": 74.0}, {"input": [-20.0, 74.5], "expected": 74.5}, {"input": [-20.0, 75.0], "expected": 75.0}, {"input": [-20.0, 75.5], "expected": 75.5}, {"input": [-20.0, 76.0], "expected": 76.0}, {"input": [-20.0, 76.5], "expected": 76.5}, {"input": [-20.0, 77.0], "expected": 77.0}, {"input": [-20.0, 77.5], "expected": 77.5}, {"input": [-20.0, 78.0], "expected": 78.0}, {"input": [-20.0, 78.5], "expected": 78.5}, {"input": [-20.0, 79.0], "expected": 79.0}, {"input": [-20.0, 79.5], "expected": 79.5}, {"input": [-20.0, 80.0], "expected": 80.0}, {"input": [-20.0, 80.5], "expected": 80.5}, {"input": [-20.0, 81.0], "expected": 81.0}, {"input": [-20.0, 81.5], "expected": 81.5}, {"input": [-20.0, 82.0], "expected": 82.0}, {"input": [-20.0, 82.5], "expected": 82.5}, {"input": [-20.0, 83.0], "expected": 83.0}, {"input": [-20.0, 83.5], "expected": 83.5}, {"input": [-20.0, 84.0], "expected": 84.0}, {"input": [-20.0, 84.5], "expected": 84.5}, {"input": [-20.0, 85.0], "expected": 85.0}, {"input": [-20.0, 85.5], "expected": 85.5}, {"input": [-20.0, 86.0], "expected": 86.0}, {"input": [-20.0, 86.5], "expected": 86.5}, {"input": [-20.0, 87.0], "expected": 87.0}, {"input": [-20.0, 87.5], "expected": 87.5}, {"input": [-20.0, 88.0], "expected": 88.0}, {"input": [-20.0, 88.5], "expected": 88.5}, {"input": [-20.0, 89.0], "expected": 89.0}, {"input": [-20.0, 89.5], "expected": 89.5}, {"input": [-20.0, 90.0], "expected": 90.0}, {"input": [-20.0, 90.5], "expected": 90.5}, {"input": [-20.0, 91.0], "expected": 91.0}, {"input": [-20.0, 91.5], "expected": 91.5}, {"input": [-20.0, 92.0], "expected": 92.0}, {"input": [-20.0, 92.5], "expected": 92.5}, {"input": [-20.0, 93.0], "expected": 93.0}, {"input": [-20.0, 93.5], "expected": 93.5}, {"input": [-20.0, 94.0], "expected": 94.0}, {"input": [-20.0, 94.5], "expected": 94.5}, {"input": [-20.0, 95.0], "expected": 95.0}, {"input": [-20.0, 95.5], "expected": 95.5}, {"input": [-20.0, 96.0], "expected": 96.0}, {"input": [-20.0, 96.5], "expected": 96.5}, {"input": [-20.0, 97.0], "expected": 97.0}, {"input": [-20.0, 97.5], "expected": 97.5}, {"input": [-20.0, 98.0], "expected": 98.0}, {"input": [-20.0, 98.5], "expected": 98.5}, {"input": [-20.0, 99.0], "expected": 99.0}, {"input": [-20.0, 99.5], "expected": 99.5}, {"input": [-19.5, -100.0], "expected": -19.5}, {"input": [-19.5, -99.5], "expected": -19.5}, {"input": [-19.5, -99.0], "expected": -19.5}, {"input": [-19.5, -98.5], "expected": -19.5}, {"input": [-19.5, -98.0], "expected": -19.5}, {"input": [-19.5, -97.5], "expected": -19.5}, {"input": [-19.5, -97.0], "expected": -19.5}, {"input": [-19.5, -96.5], "expected": -19.5}, {"input": [-19.5, -96.0], "expected": -19.5}, {"input": [-19.5, -95.5], "expected": -19.5}, {"input": [-19.5, -95.0], "expected": -19.5}, {"input": [-19.5, -94.5], "expected": -19.5}, {"input": [-19.5, -94.0], "expected": -19.5}, {"input": [-19.5, -93.5], "expected": -19.5}, {"input": [-19.5, -93.0], "expected": -19.5}, {"input": [-19.5, -92.5], "expected": -19.5}, {"input": [-19.5, -92.0], "expected": -19.5}, {"input": [-19.5, -91.5], "expected": -19.5}, {"input": [-19.5, -91.0], "expected": -19.5}, {"input": [-19.5, -90.5], "expected": -19.5}, {"input": [-19.5, -90.0], "expected": -19.5}, {"input": [-19.5, -89.5], "expected": -19.5}, {"input": [-19.5, -89.0], "expected": -19.5}, {"input": [-19.5, -88.5], "expected": -19.5}, {"input": [-19.5, -88.0], "expected": -19.5}, {"input": [-19.5, -87.5], "expected": -19.5}, {"input": [-19.5, -87.0], "expected": -19.5}, {"input": [-19.5, -86.5], "expected": -19.5}, {"input": [-19.5, -86.0], "expected": -19.5}, {"input": [-19.5, -85.5], "expected": -19.5}, {"input": [-19.5, -85.0], "expected": -19.5}, {"input": [-19.5, -84.5], "expected": -19.5}, {"input": [-19.5, -84.0], "expected": -19.5}, {"input": [-19.5, -83.5], "expected": -19.5}, {"input": [-19.5, -83.0], "expected": -19.5}, {"input": [-19.5, -82.5], "expected": -19.5}, {"input": [-19.5, -82.0], "expected": -19.5}, {"input": [-19.5, -81.5], "expected": -19.5}, {"input": [-19.5, -81.0], "expected": -19.5}, {"input": [-19.5, -80.5], "expected": -19.5}, {"input": [-19.5, -80.0], "expected": -19.5}, {"input": [-19.5, -79.5], "expected": -19.5}, {"input": [-19.5, -79.0], "expected": -19.5}, {"input": [-19.5, -78.5], "expected": -19.5}, {"input": [-19.5, -78.0], "expected": -19.5}, {"input": [-19.5, -77.5], "expected": -19.5}, {"input": [-19.5, -77.0], "expected": -19.5}, {"input": [-19.5, -76.5], "expected": -19.5}, {"input": [-19.5, -76.0], "expected": -19.5}, {"input": [-19.5, -75.5], "expected": -19.5}, {"input": [-19.5, -75.0], "expected": -19.5}, {"input": [-19.5, -74.5], "expected": -19.5}, {"input": [-19.5, -74.0], "expected": -19.5}, {"input": [-19.5, -73.5], "expected": -19.5}, {"input": [-19.5, -73.0], "expected": -19.5}, {"input": [-19.5, -72.5], "expected": -19.5}, {"input": [-19.5, -72.0], "expected": -19.5}, {"input": [-19.5, -71.5], "expected": -19.5}, {"input": [-19.5, -71.0], "expected": -19.5}, {"input": [-19.5, -70.5], "expected": -19.5}, {"input": [-19.5, -70.0], "expected": -19.5}, {"input": [-19.5, -69.5], "expected": -19.5}, {"input": [-19.5, -69.0], "expected": -19.5}, {"input": [-19.5, -68.5], "expected": -19.5}, {"input": [-19.5, -68.0], "expected": -19.5}, {"input": [-19.5, -67.5], "expected": -19.5}, {"input": [-19.5, -67.0], "expected": -19.5}, {"input": [-19.5, -66.5], "expected": -19.5}, {"input": [-19.5, -66.0], "expected": -19.5}, {"input": [-19.5, -65.5], "expected": -19.5}, {"input": [-19.5, -65.0], "expected": -19.5}, {"input": [-19.5, -64.5], "expected": -19.5}, {"input": [-19.5, -64.0], "expected": -19.5}, {"input": [-19.5, -63.5], "expected": -19.5}, {"input": [-19.5, -63.0], "expected": -19.5}, {"input": [-19.5, -62.5], "expected": -19.5}, {"input": [-19.5, -62.0], "expected": -19.5}, {"input": [-19.5, -61.5], "expected": -19.5}, {"input": [-19.5, -61.0], "expected": -19.5}, {"input": [-19.5, -60.5], "expected": -19.5}, {"input": [-19.5, -60.0], "expected": -19.5}, {"input": [-19.5, -59.5], "expected": -19.5}, {"input": [-19.5, -59.0], "expected": -19.5}, {"input": [-19.5, -58.5], "expected": -19.5}, {"input": [-19.5, -58.0], "expected": -19.5}, {"input": [-19.5, -57.5], "expected": -19.5}, {"input": [-19.5, -57.0], "expected": -19.5}, {"input": [-19.5, -56.5], "expected": -19.5}, {"input": [-19.5, -56.0], "expected": -19.5}, {"input": [-19.5, -55.5], "expected": -19.5}, {"input": [-19.5, -55.0], "expected": -19.5}, {"input": [-19.5, -54.5], "expected": -19.5}, {"input": [-19.5, -54.0], "expected": -19.5}, {"input": [-19.5, -53.5], "expected": -19.5}, {"input": [-19.5, -53.0], "expected": -19.499999999999996}, {"input": [-19.5, -52.5], "expected": -19.499999999999996}, {"input": [-19.5, -52.0], "expected": -19.499999999999993}, {"input": [-19.5, -51.5], "expected": -19.499999999999986}, {"input": [-19.5, -51.0], "expected": -19.49999999999998}, {"input": [-19.5, -50.5], "expected": -19.499999999999964}, {"input": [-19.5, -50.0], "expected": -19.499999999999943}, {"input": [-19.5, -49.5], "expected": -19.499999999999908}, {"input": [-19.5, -49.0], "expected": -19.499999999999847}, {"input": [-19.5, -48.5], "expected": -19.499999999999744}, {"input": [-19.5, -48.0], "expected": -19.49999999999958}, {"input": [-19.5, -47.5], "expected": -19.499999999999307}, {"input": [-19.5, -47.0], "expected": -19.49999999999886}, {"input": [-19.5, -46.5], "expected": -19.49999999999812}, {"input": [-19.5, -46.0], "expected": -19.499999999996902}, {"input": [-19.5, -45.5], "expected": -19.49999999999489}, {"input": [-19.5, -45.0], "expected": -19.499999999991577}, {"input": [-19.5, -44.5], "expected": -19.499999999986112}, {"input": [-19.5, -44.0], "expected": -19.499999999977103}, {"input": [-19.5, -43.5], "expected": -19.49999999996225}, {"input": [-19.5, -43.0], "expected": -19.49999999993776}, {"input": [-19.5, -42.5], "expected": -19.49999999989738}, {"input": [-19.5, -42.0], "expected": -19.49999999983081}, {"input": [-19.5, -41.5], "expected": -19.49999999972105}, {"input": [-19.5, -41.0], "expected": -19.499999999540094}, {"input": [-19.5, -40.5], "expected": -19.499999999241744}, {"input": [-19.5, -40.0], "expected": -19.499999998749846}, {"input": [-19.5, -39.5], "expected": -19.499999997938847}, {"input": [-19.5, -39.0], "expected": -19.499999996601733}, {"input": [-19.5, -38.5], "expected": -19.499999994397204}, {"input": [-19.5, -38.0], "expected": -19.49999999076255}, {"input": [-19.5, -37.5], "expected": -19.49999998477002}, {"input": [-19.5, -37.0], "expected": -19.49999997489001}, {"input": [-19.5, -36.5], "expected": -19.499999958600625}, {"input": [-19.5, -36.0], "expected": -19.499999931743968}, {"input": [-19.5, -35.5], "expected": -19.49999988746483}, {"input": [-19.5, -35.0], "expected": -19.49999981446088}, {"input": [-19.5, -34.5], "expected": -19.499999694097728}, {"input": [-19.5, -34.0], "expected": -19.499999495652464}, {"input": [-19.5, -33.5], "expected": -19.499999168471625}, {"input": [-19.5, -33.0], "expected": -19.499998629041855}, {"input": [-19.5, -32.5], "expected": -19.499997739673148}, {"input": [-19.5, -32.0], "expected": -19.499996273353773}, {"input": [-19.5, -31.5], "expected": -19.499993855806522}, {"input": [-19.5, -31.0], "expected": -19.49998986995771}, {"input": [-19.5, -30.5], "expected": -19.499983298438682}, {"input": [-19.5, -30.0], "expected": -19.499972463929772}, {"input": [-19.5, -29.5], "expected": -19.499954601100782}, {"input": [-19.5, -29.0], "expected": -19.49992515097137}, {"input": [-19.5, -28.5], "expected": -19.499876597810278}, {"input": [-19.5, -28.0], "expected": -19.499796552327872}, {"input": [-19.5, -27.5], "expected": -19.499664593627106}, {"input": [-19.5, -27.0], "expected": -19.49944706852464}, {"input": [-19.5, -26.5], "expected": -19.499088533546225}, {"input": [-19.5, -26.0], "expected": -19.498497689840246}, {"input": [-19.5, -25.5], "expected": -19.497524314862268}, {"input": [-19.5, -25.0], "expected": -19.495921556729428}, {"input": [-19.5, -24.5], "expected": -19.493284651510884}, {"input": [-19.5, -24.0], "expected": -19.488952255151407}, {"input": [-19.5, -23.5], "expected": -19.48185007208219}, {"input": [-19.5, -23.0], "expected": -19.47024958172738}, {"input": [-19.5, -22.5], "expected": -19.451412648426256}, {"input": [-19.5, -22.0], "expected": -19.42111026570745}, {"input": [-19.5, -21.5], "expected": -19.373071988957026}, {"input": [-19.5, -21.0], "expected": -19.298586722017248}, {"input": [-19.5, -20.5], "expected": -19.186738312481776}, {"input": [-19.5, -20.0], "expected": -19.02592301581989}, {"input": [-19.5, -19.5], "expected": -18.806852819440056}, {"input": [-19.5, -19.0], "expected": -18.52592301581989}, {"input": [-19.5, -18.5], "expected": -18.186738312481776}, {"input": [-19.5, -18.0], "expected": -17.798586722017248}, {"input": [-19.5, -17.5], "expected": -17.373071988957026}, {"input": [-19.5, -17.0], "expected": -16.92111026570745}, {"input": [-19.5, -16.5], "expected": -16.451412648426256}, {"input": [-19.5, -16.0], "expected": -15.97024958172738}, {"input": [-19.5, -15.5], "expected": -15.48185007208219}, {"input": [-19.5, -15.0], "expected": -14.988952255151407}, {"input": [-19.5, -14.5], "expected": -14.493284651510882}, {"input": [-19.5, -14.0], "expected": -13.99592155672943}, {"input": [-19.5, -13.5], "expected": -13.49752431486227}, {"input": [-19.5, -13.0], "expected": -12.998497689840246}, {"input": [-19.5, -12.5], "expected": -12.499088533546226}, {"input": [-19.5, -12.0], "expected": -11.999447068524638}, {"input": [-19.5, -11.5], "expected": -11.499664593627104}, {"input": [-19.5, -11.0], "expected": -10.99979655232787}, {"input": [-19.5, -10.5], "expected": -10.499876597810276}, {"input": [-19.5, -10.0], "expected": -9.999925150971372}, {"input": [-19.5, -9.5], "expected": -9.499954601100782}, {"input": [-19.5, -9.0], "expected": -8.99997246392977}, {"input": [-19.5, -8.5], "expected": -8.499983298438682}, {"input": [-19.5, -8.0], "expected": -7.9999898699577106}, {"input": [-19.5, -7.5], "expected": -7.4999938558065224}, {"input": [-19.5, -7.0], "expected": -6.999996273353772}, {"input": [-19.5, -6.5], "expected": -6.499997739673147}, {"input": [-19.5, -6.0], "expected": -5.999998629041853}, {"input": [-19.5, -5.5], "expected": -5.499999168471627}, {"input": [-19.5, -5.0], "expected": -4.999999495652465}, {"input": [-19.5, -4.5], "expected": -4.499999694097727}, {"input": [-19.5, -4.0], "expected": -3.999999814460881}, {"input": [-19.5, -3.5], "expected": -3.4999998874648317}, {"input": [-19.5, -3.0], "expected": -2.9999999317439685}, {"input": [-19.5, -2.5], "expected": -2.4999999586006236}, {"input": [-19.5, -2.0], "expected": -1.9999999748900088}, {"input": [-19.5, -1.5], "expected": -1.4999999847700203}, {"input": [-19.5, -1.0], "expected": -0.9999999907625504}, {"input": [-19.5, -0.5], "expected": -0.49999999439720355}, {"input": [-19.5, 0.0], "expected": 3.398267813720959e-09}, {"input": [-19.5, 0.5], "expected": 0.5000000020611536}, {"input": [-19.5, 1.0], "expected": 1.0000000012501529}, {"input": [-19.5, 1.5], "expected": 1.5000000007582561}, {"input": [-19.5, 2.0], "expected": 2.0000000004599054}, {"input": [-19.5, 2.5], "expected": 2.5000000002789466}, {"input": [-19.5, 3.0], "expected": 3.00000000016919}, {"input": [-19.5, 3.5], "expected": 3.500000000102619}, {"input": [-19.5, 4.0], "expected": 4.000000000062242}, {"input": [-19.5, 4.5], "expected": 4.500000000037751}, {"input": [-19.5, 5.0], "expected": 5.000000000022897}, {"input": [-19.5, 5.5], "expected": 5.500000000013888}, {"input": [-19.5, 6.0], "expected": 6.0000000000084235}, {"input": [-19.5, 6.5], "expected": 6.500000000005109}, {"input": [-19.5, 7.0], "expected": 7.000000000003099}, {"input": [-19.5, 7.5], "expected": 7.500000000001879}, {"input": [-19.5, 8.0], "expected": 8.00000000000114}, {"input": [-19.5, 8.5], "expected": 8.500000000000691}, {"input": [-19.5, 9.0], "expected": 9.00000000000042}, {"input": [-19.5, 9.5], "expected": 9.500000000000254}, {"input": [-19.5, 10.0], "expected": 10.000000000000155}, {"input": [-19.5, 10.5], "expected": 10.500000000000094}, {"input": [-19.5, 11.0], "expected": 11.000000000000057}, {"input": [-19.5, 11.5], "expected": 11.500000000000034}, {"input": [-19.5, 12.0], "expected": 12.000000000000021}, {"input": [-19.5, 12.5], "expected": 12.500000000000012}, {"input": [-19.5, 13.0], "expected": 13.000000000000007}, {"input": [-19.5, 13.5], "expected": 13.500000000000005}, {"input": [-19.5, 14.0], "expected": 14.000000000000004}, {"input": [-19.5, 14.5], "expected": 14.500000000000002}, {"input": [-19.5, 15.0], "expected": 15.000000000000002}, {"input": [-19.5, 15.5], "expected": 15.5}, {"input": [-19.5, 16.0], "expected": 16.0}, {"input": [-19.5, 16.5], "expected": 16.5}, {"input": [-19.5, 17.0], "expected": 17.0}, {"input": [-19.5, 17.5], "expected": 17.5}, {"input": [-19.5, 18.0], "expected": 18.0}, {"input": [-19.5, 18.5], "expected": 18.5}, {"input": [-19.5, 19.0], "expected": 19.0}, {"input": [-19.5, 19.5], "expected": 19.5}, {"input": [-19.5, 20.0], "expected": 20.0}, {"input": [-19.5, 20.5], "expected": 20.5}, {"input": [-19.5, 21.0], "expected": 21.0}, {"input": [-19.5, 21.5], "expected": 21.5}, {"input": [-19.5, 22.0], "expected": 22.0}, {"input": [-19.5, 22.5], "expected": 22.5}, {"input": [-19.5, 23.0], "expected": 23.0}, {"input": [-19.5, 23.5], "expected": 23.5}, {"input": [-19.5, 24.0], "expected": 24.0}, {"input": [-19.5, 24.5], "expected": 24.5}, {"input": [-19.5, 25.0], "expected": 25.0}, {"input": [-19.5, 25.5], "expected": 25.5}, {"input": [-19.5, 26.0], "expected": 26.0}, {"input": [-19.5, 26.5], "expected": 26.5}, {"input": [-19.5, 27.0], "expected": 27.0}, {"input": [-19.5, 27.5], "expected": 27.5}, {"input": [-19.5, 28.0], "expected": 28.0}, {"input": [-19.5, 28.5], "expected": 28.5}, {"input": [-19.5, 29.0], "expected": 29.0}, {"input": [-19.5, 29.5], "expected": 29.5}, {"input": [-19.5, 30.0], "expected": 30.0}, {"input": [-19.5, 30.5], "expected": 30.5}, {"input": [-19.5, 31.0], "expected": 31.0}, {"input": [-19.5, 31.5], "expected": 31.5}, {"input": [-19.5, 32.0], "expected": 32.0}, {"input": [-19.5, 32.5], "expected": 32.5}, {"input": [-19.5, 33.0], "expected": 33.0}, {"input": [-19.5, 33.5], "expected": 33.5}, {"input": [-19.5, 34.0], "expected": 34.0}, {"input": [-19.5, 34.5], "expected": 34.5}, {"input": [-19.5, 35.0], "expected": 35.0}, {"input": [-19.5, 35.5], "expected": 35.5}, {"input": [-19.5, 36.0], "expected": 36.0}, {"input": [-19.5, 36.5], "expected": 36.5}, {"input": [-19.5, 37.0], "expected": 37.0}, {"input": [-19.5, 37.5], "expected": 37.5}, {"input": [-19.5, 38.0], "expected": 38.0}, {"input": [-19.5, 38.5], "expected": 38.5}, {"input": [-19.5, 39.0], "expected": 39.0}, {"input": [-19.5, 39.5], "expected": 39.5}, {"input": [-19.5, 40.0], "expected": 40.0}, {"input": [-19.5, 40.5], "expected": 40.5}, {"input": [-19.5, 41.0], "expected": 41.0}, {"input": [-19.5, 41.5], "expected": 41.5}, {"input": [-19.5, 42.0], "expected": 42.0}, {"input": [-19.5, 42.5], "expected": 42.5}, {"input": [-19.5, 43.0], "expected": 43.0}, {"input": [-19.5, 43.5], "expected": 43.5}, {"input": [-19.5, 44.0], "expected": 44.0}, {"input": [-19.5, 44.5], "expected": 44.5}, {"input": [-19.5, 45.0], "expected": 45.0}, {"input": [-19.5, 45.5], "expected": 45.5}, {"input": [-19.5, 46.0], "expected": 46.0}, {"input": [-19.5, 46.5], "expected": 46.5}, {"input": [-19.5, 47.0], "expected": 47.0}, {"input": [-19.5, 47.5], "expected": 47.5}, {"input": [-19.5, 48.0], "expected": 48.0}, {"input": [-19.5, 48.5], "expected": 48.5}, {"input": [-19.5, 49.0], "expected": 49.0}, {"input": [-19.5, 49.5], "expected": 49.5}, {"input": [-19.5, 50.0], "expected": 50.0}, {"input": [-19.5, 50.5], "expected": 50.5}, {"input": [-19.5, 51.0], "expected": 51.0}, {"input": [-19.5, 51.5], "expected": 51.5}, {"input": [-19.5, 52.0], "expected": 52.0}, {"input": [-19.5, 52.5], "expected": 52.5}, {"input": [-19.5, 53.0], "expected": 53.0}, {"input": [-19.5, 53.5], "expected": 53.5}, {"input": [-19.5, 54.0], "expected": 54.0}, {"input": [-19.5, 54.5], "expected": 54.5}, {"input": [-19.5, 55.0], "expected": 55.0}, {"input": [-19.5, 55.5], "expected": 55.5}, {"input": [-19.5, 56.0], "expected": 56.0}, {"input": [-19.5, 56.5], "expected": 56.5}, {"input": [-19.5, 57.0], "expected": 57.0}, {"input": [-19.5, 57.5], "expected": 57.5}, {"input": [-19.5, 58.0], "expected": 58.0}, {"input": [-19.5, 58.5], "expected": 58.5}, {"input": [-19.5, 59.0], "expected": 59.0}, {"input": [-19.5, 59.5], "expected": 59.5}, {"input": [-19.5, 60.0], "expected": 60.0}, {"input": [-19.5, 60.5], "expected": 60.5}, {"input": [-19.5, 61.0], "expected": 61.0}, {"input": [-19.5, 61.5], "expected": 61.5}, {"input": [-19.5, 62.0], "expected": 62.0}, {"input": [-19.5, 62.5], "expected": 62.5}, {"input": [-19.5, 63.0], "expected": 63.0}, {"input": [-19.5, 63.5], "expected": 63.5}, {"input": [-19.5, 64.0], "expected": 64.0}, {"input": [-19.5, 64.5], "expected": 64.5}, {"input": [-19.5, 65.0], "expected": 65.0}, {"input": [-19.5, 65.5], "expected": 65.5}, {"input": [-19.5, 66.0], "expected": 66.0}, {"input": [-19.5, 66.5], "expected": 66.5}, {"input": [-19.5, 67.0], "expected": 67.0}, {"input": [-19.5, 67.5], "expected": 67.5}, {"input": [-19.5, 68.0], "expected": 68.0}, {"input": [-19.5, 68.5], "expected": 68.5}, {"input": [-19.5, 69.0], "expected": 69.0}, {"input": [-19.5, 69.5], "expected": 69.5}, {"input": [-19.5, 70.0], "expected": 70.0}, {"input": [-19.5, 70.5], "expected": 70.5}, {"input": [-19.5, 71.0], "expected": 71.0}, {"input": [-19.5, 71.5], "expected": 71.5}, {"input": [-19.5, 72.0], "expected": 72.0}, {"input": [-19.5, 72.5], "expected": 72.5}, {"input": [-19.5, 73.0], "expected": 73.0}, {"input": [-19.5, 73.5], "expected": 73.5}, {"input": [-19.5, 74.0], "expected": 74.0}, {"input": [-19.5, 74.5], "expected": 74.5}, {"input": [-19.5, 75.0], "expected": 75.0}, {"input": [-19.5, 75.5], "expected": 75.5}, {"input": [-19.5, 76.0], "expected": 76.0}, {"input": [-19.5, 76.5], "expected": 76.5}, {"input": [-19.5, 77.0], "expected": 77.0}, {"input": [-19.5, 77.5], "expected": 77.5}, {"input": [-19.5, 78.0], "expected": 78.0}, {"input": [-19.5, 78.5], "expected": 78.5}, {"input": [-19.5, 79.0], "expected": 79.0}, {"input": [-19.5, 79.5], "expected": 79.5}, {"input": [-19.5, 80.0], "expected": 80.0}, {"input": [-19.5, 80.5], "expected": 80.5}, {"input": [-19.5, 81.0], "expected": 81.0}, {"input": [-19.5, 81.5], "expected": 81.5}, {"input": [-19.5, 82.0], "expected": 82.0}, {"input": [-19.5, 82.5], "expected": 82.5}, {"input": [-19.5, 83.0], "expected": 83.0}, {"input": [-19.5, 83.5], "expected": 83.5}, {"input": [-19.5, 84.0], "expected": 84.0}, {"input": [-19.5, 84.5], "expected": 84.5}, {"input": [-19.5, 85.0], "expected": 85.0}, {"input": [-19.5, 85.5], "expected": 85.5}, {"input": [-19.5, 86.0], "expected": 86.0}, {"input": [-19.5, 86.5], "expected": 86.5}, {"input": [-19.5, 87.0], "expected": 87.0}, {"input": [-19.5, 87.5], "expected": 87.5}, {"input": [-19.5, 88.0], "expected": 88.0}, {"input": [-19.5, 88.5], "expected": 88.5}, {"input": [-19.5, 89.0], "expected": 89.0}, {"input": [-19.5, 89.5], "expected": 89.5}, {"input": [-19.5, 90.0], "expected": 90.0}, {"input": [-19.5, 90.5], "expected": 90.5}, {"input": [-19.5, 91.0], "expected": 91.0}, {"input": [-19.5, 91.5], "expected": 91.5}, {"input": [-19.5, 92.0], "expected": 92.0}, {"input": [-19.5, 92.5], "expected": 92.5}, {"input": [-19.5, 93.0], "expected": 93.0}, {"input": [-19.5, 93.5], "expected": 93.5}, {"input": [-19.5, 94.0], "expected": 94.0}, {"input": [-19.5, 94.5], "expected": 94.5}, {"input": [-19.5, 95.0], "expected": 95.0}, {"input": [-19.5, 95.5], "expected": 95.5}, {"input": [-19.5, 96.0], "expected": 96.0}, {"input": [-19.5, 96.5], "expected": 96.5}, {"input": [-19.5, 97.0], "expected": 97.0}, {"input": [-19.5, 97.5], "expected": 97.5}, {"input": [-19.5, 98.0], "expected": 98.0}, {"input": [-19.5, 98.5], "expected": 98.5}, {"input": [-19.5, 99.0], "expected": 99.0}, {"input": [-19.5, 99.5], "expected": 99.5}, {"input": [-19.0, -100.0], "expected": -19.0}, {"input": [-19.0, -99.5], "expected": -19.0}, {"input": [-19.0, -99.0], "expected": -19.0}, {"input": [-19.0, -98.5], "expected": -19.0}, {"input": [-19.0, -98.0], "expected": -19.0}, {"input": [-19.0, -97.5], "expected": -19.0}, {"input": [-19.0, -97.0], "expected": -19.0}, {"input": [-19.0, -96.5], "expected": -19.0}, {"input": [-19.0, -96.0], "expected": -19.0}, {"input": [-19.0, -95.5], "expected": -19.0}, {"input": [-19.0, -95.0], "expected": -19.0}, {"input": [-19.0, -94.5], "expected": -19.0}, {"input": [-19.0, -94.0], "expected": -19.0}, {"input": [-19.0, -93.5], "expected": -19.0}, {"input": [-19.0, -93.0], "expected": -19.0}, {"input": [-19.0, -92.5], "expected": -19.0}, {"input": [-19.0, -92.0], "expected": -19.0}, {"input": [-19.0, -91.5], "expected": -19.0}, {"input": [-19.0, -91.0], "expected": -19.0}, {"input": [-19.0, -90.5], "expected": -19.0}, {"input": [-19.0, -90.0], "expected": -19.0}, {"input": [-19.0, -89.5], "expected": -19.0}, {"input": [-19.0, -89.0], "expected": -19.0}, {"input": [-19.0, -88.5], "expected": -19.0}, {"input": [-19.0, -88.0], "expected": -19.0}, {"input": [-19.0, -87.5], "expected": -19.0}, {"input": [-19.0, -87.0], "expected": -19.0}, {"input": [-19.0, -86.5], "expected": -19.0}, {"input": [-19.0, -86.0], "expected": -19.0}, {"input": [-19.0, -85.5], "expected": -19.0}, {"input": [-19.0, -85.0], "expected": -19.0}, {"input": [-19.0, -84.5], "expected": -19.0}, {"input": [-19.0, -84.0], "expected": -19.0}, {"input": [-19.0, -83.5], "expected": -19.0}, {"input": [-19.0, -83.0], "expected": -19.0}, {"input": [-19.0, -82.5], "expected": -19.0}, {"input": [-19.0, -82.0], "expected": -19.0}, {"input": [-19.0, -81.5], "expected": -19.0}, {"input": [-19.0, -81.0], "expected": -19.0}, {"input": [-19.0, -80.5], "expected": -19.0}, {"input": [-19.0, -80.0], "expected": -19.0}, {"input": [-19.0, -79.5], "expected": -19.0}, {"input": [-19.0, -79.0], "expected": -19.0}, {"input": [-19.0, -78.5], "expected": -19.0}, {"input": [-19.0, -78.0], "expected": -19.0}, {"input": [-19.0, -77.5], "expected": -19.0}, {"input": [-19.0, -77.0], "expected": -19.0}, {"input": [-19.0, -76.5], "expected": -19.0}, {"input": [-19.0, -76.0], "expected": -19.0}, {"input": [-19.0, -75.5], "expected": -19.0}, {"input": [-19.0, -75.0], "expected": -19.0}, {"input": [-19.0, -74.5], "expected": -19.0}, {"input": [-19.0, -74.0], "expected": -19.0}, {"input": [-19.0, -73.5], "expected": -19.0}, {"input": [-19.0, -73.0], "expected": -19.0}, {"input": [-19.0, -72.5], "expected": -19.0}, {"input": [-19.0, -72.0], "expected": -19.0}, {"input": [-19.0, -71.5], "expected": -19.0}, {"input": [-19.0, -71.0], "expected": -19.0}, {"input": [-19.0, -70.5], "expected": -19.0}, {"input": [-19.0, -70.0], "expected": -19.0}, {"input": [-19.0, -69.5], "expected": -19.0}, {"input": [-19.0, -69.0], "expected": -19.0}, {"input": [-19.0, -68.5], "expected": -19.0}, {"input": [-19.0, -68.0], "expected": -19.0}, {"input": [-19.0, -67.5], "expected": -19.0}, {"input": [-19.0, -67.0], "expected": -19.0}, {"input": [-19.0, -66.5], "expected": -19.0}, {"input": [-19.0, -66.0], "expected": -19.0}, {"input": [-19.0, -65.5], "expected": -19.0}, {"input": [-19.0, -65.0], "expected": -19.0}, {"input": [-19.0, -64.5], "expected": -19.0}, {"input": [-19.0, -64.0], "expected": -19.0}, {"input": [-19.0, -63.5], "expected": -19.0}, {"input": [-19.0, -63.0], "expected": -19.0}, {"input": [-19.0, -62.5], "expected": -19.0}, {"input": [-19.0, -62.0], "expected": -19.0}, {"input": [-19.0, -61.5], "expected": -19.0}, {"input": [-19.0, -61.0], "expected": -19.0}, {"input": [-19.0, -60.5], "expected": -19.0}, {"input": [-19.0, -60.0], "expected": -19.0}, {"input": [-19.0, -59.5], "expected": -19.0}, {"input": [-19.0, -59.0], "expected": -19.0}, {"input": [-19.0, -58.5], "expected": -19.0}, {"input": [-19.0, -58.0], "expected": -19.0}, {"input": [-19.0, -57.5], "expected": -19.0}, {"input": [-19.0, -57.0], "expected": -19.0}, {"input": [-19.0, -56.5], "expected": -19.0}, {"input": [-19.0, -56.0], "expected": -19.0}, {"input": [-19.0, -55.5], "expected": -19.0}, {"input": [-19.0, -55.0], "expected": -19.0}, {"input": [-19.0, -54.5], "expected": -19.0}, {"input": [-19.0, -54.0], "expected": -19.0}, {"input": [-19.0, -53.5], "expected": -19.0}, {"input": [-19.0, -53.0], "expected": -19.0}, {"input": [-19.0, -52.5], "expected": -18.999999999999996}, {"input": [-19.0, -52.0], "expected": -18.999999999999996}, {"input": [-19.0, -51.5], "expected": -18.999999999999993}, {"input": [-19.0, -51.0], "expected": -18.999999999999986}, {"input": [-19.0, -50.5], "expected": -18.99999999999998}, {"input": [-19.0, -50.0], "expected": -18.999999999999964}, {"input": [-19.0, -49.5], "expected": -18.999999999999943}, {"input": [-19.0, -49.0], "expected": -18.999999999999908}, {"input": [-19.0, -48.5], "expected": -18.999999999999847}, {"input": [-19.0, -48.0], "expected": -18.999999999999744}, {"input": [-19.0, -47.5], "expected": -18.99999999999958}, {"input": [-19.0, -47.0], "expected": -18.999999999999307}, {"input": [-19.0, -46.5], "expected": -18.99999999999886}, {"input": [-19.0, -46.0], "expected": -18.99999999999812}, {"input": [-19.0, -45.5], "expected": -18.999999999996902}, {"input": [-19.0, -45.0], "expected": -18.99999999999489}, {"input": [-19.0, -44.5], "expected": -18.999999999991577}, {"input": [-19.0, -44.0], "expected": -18.999999999986112}, {"input": [-19.0, -43.5], "expected": -18.999999999977103}, {"input": [-19.0, -43.0], "expected": -18.99999999996225}, {"input": [-19.0, -42.5], "expected": -18.99999999993776}, {"input": [-19.0, -42.0], "expected": -18.99999999989738}, {"input": [-19.0, -41.5], "expected": -18.99999999983081}, {"input": [-19.0, -41.0], "expected": -18.99999999972105}, {"input": [-19.0, -40.5], "expected": -18.999999999540094}, {"input": [-19.0, -40.0], "expected": -18.999999999241744}, {"input": [-19.0, -39.5], "expected": -18.999999998749846}, {"input": [-19.0, -39.0], "expected": -18.999999997938847}, {"input": [-19.0, -38.5], "expected": -18.999999996601733}, {"input": [-19.0, -38.0], "expected": -18.999999994397204}, {"input": [-19.0, -37.5], "expected": -18.99999999076255}, {"input": [-19.0, -37.0], "expected": -18.99999998477002}, {"input": [-19.0, -36.5], "expected": -18.99999997489001}, {"input": [-19.0, -36.0], "expected": -18.999999958600625}, {"input": [-19.0, -35.5], "expected": -18.999999931743968}, {"input": [-19.0, -35.0], "expected": -18.99999988746483}, {"input": [-19.0, -34.5], "expected": -18.99999981446088}, {"input": [-19.0, -34.0], "expected": -18.999999694097728}, {"input": [-19.0, -33.5], "expected": -18.999999495652464}, {"input": [-19.0, -33.0], "expected": -18.999999168471625}, {"input": [-19.0, -32.5], "expected": -18.999998629041855}, {"input": [-19.0, -32.0], "expected": -18.999997739673148}, {"input": [-19.0, -31.5], "expected": -18.999996273353773}, {"input": [-19.0, -31.0], "expected": -18.999993855806522}, {"input": [-19.0, -30.5], "expected": -18.99998986995771}, {"input": [-19.0, -30.0], "expected": -18.999983298438682}, {"input": [-19.0, -29.5], "expected": -18.999972463929772}, {"input": [-19.0, -29.0], "expected": -18.999954601100782}, {"input": [-19.0, -28.5], "expected": -18.99992515097137}, {"input": [-19.0, -28.0], "expected": -18.999876597810278}, {"input": [-19.0, -27.5], "expected": -18.999796552327872}, {"input": [-19.0, -27.0], "expected": -18.999664593627106}, {"input": [-19.0, -26.5], "expected": -18.99944706852464}, {"input": [-19.0, -26.0], "expected": -18.999088533546225}, {"input": [-19.0, -25.5], "expected": -18.998497689840246}, {"input": [-19.0, -25.0], "expected": -18.997524314862268}, {"input": [-19.0, -24.5], "expected": -18.995921556729428}, {"input": [-19.0, -24.0], "expected": -18.993284651510884}, {"input": [-19.0, -23.5], "expected": -18.988952255151407}, {"input": [-19.0, -23.0], "expected": -18.98185007208219}, {"input": [-19.0, -22.5], "expected": -18.97024958172738}, {"input": [-19.0, -22.0], "expected": -18.951412648426256}, {"input": [-19.0, -21.5], "expected": -18.92111026570745}, {"input": [-19.0, -21.0], "expected": -18.873071988957026}, {"input": [-19.0, -20.5], "expected": -18.798586722017248}, {"input": [-19.0, -20.0], "expected": -18.686738312481776}, {"input": [-19.0, -19.5], "expected": -18.52592301581989}, {"input": [-19.0, -19.0], "expected": -18.306852819440056}, {"input": [-19.0, -18.5], "expected": -18.02592301581989}, {"input": [-19.0, -18.0], "expected": -17.686738312481776}, {"input": [-19.0, -17.5], "expected": -17.298586722017248}, {"input": [-19.0, -17.0], "expected": -16.873071988957026}, {"input": [-19.0, -16.5], "expected": -16.42111026570745}, {"input": [-19.0, -16.0], "expected": -15.951412648426258}, {"input": [-19.0, -15.5], "expected": -15.47024958172738}, {"input": [-19.0, -15.0], "expected": -14.98185007208219}, {"input": [-19.0, -14.5], "expected": -14.488952255151407}, {"input": [-19.0, -14.0], "expected": -13.993284651510882}, {"input": [-19.0, -13.5], "expected": -13.49592155672943}, {"input": [-19.0, -13.0], "expected": -12.99752431486227}, {"input": [-19.0, -12.5], "expected": -12.498497689840246}, {"input": [-19.0, -12.0], "expected": -11.999088533546226}, {"input": [-19.0, -11.5], "expected": -11.499447068524638}, {"input": [-19.0, -11.0], "expected": -10.999664593627104}, {"input": [-19.0, -10.5], "expected": -10.49979655232787}, {"input": [-19.0, -10.0], "expected": -9.999876597810276}, {"input": [-19.0, -9.5], "expected": -9.499925150971372}, {"input": [-19.0, -9.0], "expected": -8.999954601100782}, {"input": [-19.0, -8.5], "expected": -8.49997246392977}, {"input": [-19.0, -8.0], "expected": -7.999983298438681}, {"input": [-19.0, -7.5], "expected": -7.4999898699577106}, {"input": [-19.0, -7.0], "expected": -6.9999938558065224}, {"input": [-19.0, -6.5], "expected": -6.499996273353772}, {"input": [-19.0, -6.0], "expected": -5.999997739673147}, {"input": [-19.0, -5.5], "expected": -5.499998629041853}, {"input": [-19.0, -5.0], "expected": -4.999999168471627}, {"input": [-19.0, -4.5], "expected": -4.499999495652465}, {"input": [-19.0, -4.0], "expected": -3.9999996940977263}, {"input": [-19.0, -3.5], "expected": -3.499999814460881}, {"input": [-19.0, -3.0], "expected": -2.9999998874648317}, {"input": [-19.0, -2.5], "expected": -2.4999999317439685}, {"input": [-19.0, -2.0], "expected": -1.9999999586006236}, {"input": [-19.0, -1.5], "expected": -1.4999999748900088}, {"input": [-19.0, -1.0], "expected": -0.9999999847700204}, {"input": [-19.0, -0.5], "expected": -0.49999999076255036}, {"input": [-19.0, 0.0], "expected": 5.602796421841604e-09}, {"input": [-19.0, 0.5], "expected": 0.5000000033982678}, {"input": [-19.0, 1.0], "expected": 1.0000000020611537}, {"input": [-19.0, 1.5], "expected": 1.5000000012501529}, {"input": [-19.0, 2.0], "expected": 2.000000000758256}, {"input": [-19.0, 2.5], "expected": 2.5000000004599054}, {"input": [-19.0, 3.0], "expected": 3.0000000002789466}, {"input": [-19.0, 3.5], "expected": 3.50000000016919}, {"input": [-19.0, 4.0], "expected": 4.000000000102618}, {"input": [-19.0, 4.5], "expected": 4.500000000062242}, {"input": [-19.0, 5.0], "expected": 5.000000000037751}, {"input": [-19.0, 5.5], "expected": 5.500000000022897}, {"input": [-19.0, 6.0], "expected": 6.000000000013888}, {"input": [-19.0, 6.5], "expected": 6.5000000000084235}, {"input": [-19.0, 7.0], "expected": 7.000000000005109}, {"input": [-19.0, 7.5], "expected": 7.500000000003099}, {"input": [-19.0, 8.0], "expected": 8.00000000000188}, {"input": [-19.0, 8.5], "expected": 8.50000000000114}, {"input": [-19.0, 9.0], "expected": 9.000000000000691}, {"input": [-19.0, 9.5], "expected": 9.50000000000042}, {"input": [-19.0, 10.0], "expected": 10.000000000000254}, {"input": [-19.0, 10.5], "expected": 10.500000000000155}, {"input": [-19.0, 11.0], "expected": 11.000000000000094}, {"input": [-19.0, 11.5], "expected": 11.500000000000057}, {"input": [-19.0, 12.0], "expected": 12.000000000000034}, {"input": [-19.0, 12.5], "expected": 12.500000000000021}, {"input": [-19.0, 13.0], "expected": 13.000000000000012}, {"input": [-19.0, 13.5], "expected": 13.500000000000007}, {"input": [-19.0, 14.0], "expected": 14.000000000000005}, {"input": [-19.0, 14.5], "expected": 14.500000000000004}, {"input": [-19.0, 15.0], "expected": 15.000000000000002}, {"input": [-19.0, 15.5], "expected": 15.500000000000002}, {"input": [-19.0, 16.0], "expected": 16.0}, {"input": [-19.0, 16.5], "expected": 16.5}, {"input": [-19.0, 17.0], "expected": 17.0}, {"input": [-19.0, 17.5], "expected": 17.5}, {"input": [-19.0, 18.0], "expected": 18.0}, {"input": [-19.0, 18.5], "expected": 18.5}, {"input": [-19.0, 19.0], "expected": 19.0}, {"input": [-19.0, 19.5], "expected": 19.5}, {"input": [-19.0, 20.0], "expected": 20.0}, {"input": [-19.0, 20.5], "expected": 20.5}, {"input": [-19.0, 21.0], "expected": 21.0}, {"input": [-19.0, 21.5], "expected": 21.5}, {"input": [-19.0, 22.0], "expected": 22.0}, {"input": [-19.0, 22.5], "expected": 22.5}, {"input": [-19.0, 23.0], "expected": 23.0}, {"input": [-19.0, 23.5], "expected": 23.5}, {"input": [-19.0, 24.0], "expected": 24.0}, {"input": [-19.0, 24.5], "expected": 24.5}, {"input": [-19.0, 25.0], "expected": 25.0}, {"input": [-19.0, 25.5], "expected": 25.5}, {"input": [-19.0, 26.0], "expected": 26.0}, {"input": [-19.0, 26.5], "expected": 26.5}, {"input": [-19.0, 27.0], "expected": 27.0}, {"input": [-19.0, 27.5], "expected": 27.5}, {"input": [-19.0, 28.0], "expected": 28.0}, {"input": [-19.0, 28.5], "expected": 28.5}, {"input": [-19.0, 29.0], "expected": 29.0}, {"input": [-19.0, 29.5], "expected": 29.5}, {"input": [-19.0, 30.0], "expected": 30.0}, {"input": [-19.0, 30.5], "expected": 30.5}, {"input": [-19.0, 31.0], "expected": 31.0}, {"input": [-19.0, 31.5], "expected": 31.5}, {"input": [-19.0, 32.0], "expected": 32.0}, {"input": [-19.0, 32.5], "expected": 32.5}, {"input": [-19.0, 33.0], "expected": 33.0}, {"input": [-19.0, 33.5], "expected": 33.5}, {"input": [-19.0, 34.0], "expected": 34.0}, {"input": [-19.0, 34.5], "expected": 34.5}, {"input": [-19.0, 35.0], "expected": 35.0}, {"input": [-19.0, 35.5], "expected": 35.5}, {"input": [-19.0, 36.0], "expected": 36.0}, {"input": [-19.0, 36.5], "expected": 36.5}, {"input": [-19.0, 37.0], "expected": 37.0}, {"input": [-19.0, 37.5], "expected": 37.5}, {"input": [-19.0, 38.0], "expected": 38.0}, {"input": [-19.0, 38.5], "expected": 38.5}, {"input": [-19.0, 39.0], "expected": 39.0}, {"input": [-19.0, 39.5], "expected": 39.5}, {"input": [-19.0, 40.0], "expected": 40.0}, {"input": [-19.0, 40.5], "expected": 40.5}, {"input": [-19.0, 41.0], "expected": 41.0}, {"input": [-19.0, 41.5], "expected": 41.5}, {"input": [-19.0, 42.0], "expected": 42.0}, {"input": [-19.0, 42.5], "expected": 42.5}, {"input": [-19.0, 43.0], "expected": 43.0}, {"input": [-19.0, 43.5], "expected": 43.5}, {"input": [-19.0, 44.0], "expected": 44.0}, {"input": [-19.0, 44.5], "expected": 44.5}, {"input": [-19.0, 45.0], "expected": 45.0}, {"input": [-19.0, 45.5], "expected": 45.5}, {"input": [-19.0, 46.0], "expected": 46.0}, {"input": [-19.0, 46.5], "expected": 46.5}, {"input": [-19.0, 47.0], "expected": 47.0}, {"input": [-19.0, 47.5], "expected": 47.5}, {"input": [-19.0, 48.0], "expected": 48.0}, {"input": [-19.0, 48.5], "expected": 48.5}, {"input": [-19.0, 49.0], "expected": 49.0}, {"input": [-19.0, 49.5], "expected": 49.5}, {"input": [-19.0, 50.0], "expected": 50.0}, {"input": [-19.0, 50.5], "expected": 50.5}, {"input": [-19.0, 51.0], "expected": 51.0}, {"input": [-19.0, 51.5], "expected": 51.5}, {"input": [-19.0, 52.0], "expected": 52.0}, {"input": [-19.0, 52.5], "expected": 52.5}, {"input": [-19.0, 53.0], "expected": 53.0}, {"input": [-19.0, 53.5], "expected": 53.5}, {"input": [-19.0, 54.0], "expected": 54.0}, {"input": [-19.0, 54.5], "expected": 54.5}, {"input": [-19.0, 55.0], "expected": 55.0}, {"input": [-19.0, 55.5], "expected": 55.5}, {"input": [-19.0, 56.0], "expected": 56.0}, {"input": [-19.0, 56.5], "expected": 56.5}, {"input": [-19.0, 57.0], "expected": 57.0}, {"input": [-19.0, 57.5], "expected": 57.5}, {"input": [-19.0, 58.0], "expected": 58.0}, {"input": [-19.0, 58.5], "expected": 58.5}, {"input": [-19.0, 59.0], "expected": 59.0}, {"input": [-19.0, 59.5], "expected": 59.5}, {"input": [-19.0, 60.0], "expected": 60.0}, {"input": [-19.0, 60.5], "expected": 60.5}, {"input": [-19.0, 61.0], "expected": 61.0}, {"input": [-19.0, 61.5], "expected": 61.5}, {"input": [-19.0, 62.0], "expected": 62.0}, {"input": [-19.0, 62.5], "expected": 62.5}, {"input": [-19.0, 63.0], "expected": 63.0}, {"input": [-19.0, 63.5], "expected": 63.5}, {"input": [-19.0, 64.0], "expected": 64.0}, {"input": [-19.0, 64.5], "expected": 64.5}, {"input": [-19.0, 65.0], "expected": 65.0}, {"input": [-19.0, 65.5], "expected": 65.5}, {"input": [-19.0, 66.0], "expected": 66.0}, {"input": [-19.0, 66.5], "expected": 66.5}, {"input": [-19.0, 67.0], "expected": 67.0}, {"input": [-19.0, 67.5], "expected": 67.5}, {"input": [-19.0, 68.0], "expected": 68.0}, {"input": [-19.0, 68.5], "expected": 68.5}, {"input": [-19.0, 69.0], "expected": 69.0}, {"input": [-19.0, 69.5], "expected": 69.5}, {"input": [-19.0, 70.0], "expected": 70.0}, {"input": [-19.0, 70.5], "expected": 70.5}, {"input": [-19.0, 71.0], "expected": 71.0}, {"input": [-19.0, 71.5], "expected": 71.5}, {"input": [-19.0, 72.0], "expected": 72.0}, {"input": [-19.0, 72.5], "expected": 72.5}, {"input": [-19.0, 73.0], "expected": 73.0}, {"input": [-19.0, 73.5], "expected": 73.5}, {"input": [-19.0, 74.0], "expected": 74.0}, {"input": [-19.0, 74.5], "expected": 74.5}, {"input": [-19.0, 75.0], "expected": 75.0}, {"input": [-19.0, 75.5], "expected": 75.5}, {"input": [-19.0, 76.0], "expected": 76.0}, {"input": [-19.0, 76.5], "expected": 76.5}, {"input": [-19.0, 77.0], "expected": 77.0}, {"input": [-19.0, 77.5], "expected": 77.5}, {"input": [-19.0, 78.0], "expected": 78.0}, {"input": [-19.0, 78.5], "expected": 78.5}, {"input": [-19.0, 79.0], "expected": 79.0}, {"input": [-19.0, 79.5], "expected": 79.5}, {"input": [-19.0, 80.0], "expected": 80.0}, {"input": [-19.0, 80.5], "expected": 80.5}, {"input": [-19.0, 81.0], "expected": 81.0}, {"input": [-19.0, 81.5], "expected": 81.5}, {"input": [-19.0, 82.0], "expected": 82.0}, {"input": [-19.0, 82.5], "expected": 82.5}, {"input": [-19.0, 83.0], "expected": 83.0}, {"input": [-19.0, 83.5], "expected": 83.5}, {"input": [-19.0, 84.0], "expected": 84.0}, {"input": [-19.0, 84.5], "expected": 84.5}, {"input": [-19.0, 85.0], "expected": 85.0}, {"input": [-19.0, 85.5], "expected": 85.5}, {"input": [-19.0, 86.0], "expected": 86.0}, {"input": [-19.0, 86.5], "expected": 86.5}, {"input": [-19.0, 87.0], "expected": 87.0}, {"input": [-19.0, 87.5], "expected": 87.5}, {"input": [-19.0, 88.0], "expected": 88.0}, {"input": [-19.0, 88.5], "expected": 88.5}, {"input": [-19.0, 89.0], "expected": 89.0}, {"input": [-19.0, 89.5], "expected": 89.5}, {"input": [-19.0, 90.0], "expected": 90.0}, {"input": [-19.0, 90.5], "expected": 90.5}, {"input": [-19.0, 91.0], "expected": 91.0}, {"input": [-19.0, 91.5], "expected": 91.5}, {"input": [-19.0, 92.0], "expected": 92.0}, {"input": [-19.0, 92.5], "expected": 92.5}, {"input": [-19.0, 93.0], "expected": 93.0}, {"input": [-19.0, 93.5], "expected": 93.5}, {"input": [-19.0, 94.0], "expected": 94.0}, {"input": [-19.0, 94.5], "expected": 94.5}, {"input": [-19.0, 95.0], "expected": 95.0}, {"input": [-19.0, 95.5], "expected": 95.5}, {"input": [-19.0, 96.0], "expected": 96.0}, {"input": [-19.0, 96.5], "expected": 96.5}, {"input": [-19.0, 97.0], "expected": 97.0}, {"input": [-19.0, 97.5], "expected": 97.5}, {"input": [-19.0, 98.0], "expected": 98.0}, {"input": [-19.0, 98.5], "expected": 98.5}, {"input": [-19.0, 99.0], "expected": 99.0}, {"input": [-19.0, 99.5], "expected": 99.5}, {"input": [-18.5, -100.0], "expected": -18.5}, {"input": [-18.5, -99.5], "expected": -18.5}, {"input": [-18.5, -99.0], "expected": -18.5}, {"input": [-18.5, -98.5], "expected": -18.5}, {"input": [-18.5, -98.0], "expected": -18.5}, {"input": [-18.5, -97.5], "expected": -18.5}, {"input": [-18.5, -97.0], "expected": -18.5}, {"input": [-18.5, -96.5], "expected": -18.5}, {"input": [-18.5, -96.0], "expected": -18.5}, {"input": [-18.5, -95.5], "expected": -18.5}, {"input": [-18.5, -95.0], "expected": -18.5}, {"input": [-18.5, -94.5], "expected": -18.5}, {"input": [-18.5, -94.0], "expected": -18.5}, {"input": [-18.5, -93.5], "expected": -18.5}, {"input": [-18.5, -93.0], "expected": -18.5}, {"input": [-18.5, -92.5], "expected": -18.5}, {"input": [-18.5, -92.0], "expected": -18.5}, {"input": [-18.5, -91.5], "expected": -18.5}, {"input": [-18.5, -91.0], "expected": -18.5}, {"input": [-18.5, -90.5], "expected": -18.5}, {"input": [-18.5, -90.0], "expected": -18.5}, {"input": [-18.5, -89.5], "expected": -18.5}, {"input": [-18.5, -89.0], "expected": -18.5}, {"input": [-18.5, -88.5], "expected": -18.5}, {"input": [-18.5, -88.0], "expected": -18.5}, {"input": [-18.5, -87.5], "expected": -18.5}, {"input": [-18.5, -87.0], "expected": -18.5}, {"input": [-18.5, -86.5], "expected": -18.5}, {"input": [-18.5, -86.0], "expected": -18.5}, {"input": [-18.5, -85.5], "expected": -18.5}, {"input": [-18.5, -85.0], "expected": -18.5}, {"input": [-18.5, -84.5], "expected": -18.5}, {"input": [-18.5, -84.0], "expected": -18.5}, {"input": [-18.5, -83.5], "expected": -18.5}, {"input": [-18.5, -83.0], "expected": -18.5}, {"input": [-18.5, -82.5], "expected": -18.5}, {"input": [-18.5, -82.0], "expected": -18.5}, {"input": [-18.5, -81.5], "expected": -18.5}, {"input": [-18.5, -81.0], "expected": -18.5}, {"input": [-18.5, -80.5], "expected": -18.5}, {"input": [-18.5, -80.0], "expected": -18.5}, {"input": [-18.5, -79.5], "expected": -18.5}, {"input": [-18.5, -79.0], "expected": -18.5}, {"input": [-18.5, -78.5], "expected": -18.5}, {"input": [-18.5, -78.0], "expected": -18.5}, {"input": [-18.5, -77.5], "expected": -18.5}, {"input": [-18.5, -77.0], "expected": -18.5}, {"input": [-18.5, -76.5], "expected": -18.5}, {"input": [-18.5, -76.0], "expected": -18.5}, {"input": [-18.5, -75.5], "expected": -18.5}, {"input": [-18.5, -75.0], "expected": -18.5}, {"input": [-18.5, -74.5], "expected": -18.5}, {"input": [-18.5, -74.0], "expected": -18.5}, {"input": [-18.5, -73.5], "expected": -18.5}, {"input": [-18.5, -73.0], "expected": -18.5}, {"input": [-18.5, -72.5], "expected": -18.5}, {"input": [-18.5, -72.0], "expected": -18.5}, {"input": [-18.5, -71.5], "expected": -18.5}, {"input": [-18.5, -71.0], "expected": -18.5}, {"input": [-18.5, -70.5], "expected": -18.5}, {"input": [-18.5, -70.0], "expected": -18.5}, {"input": [-18.5, -69.5], "expected": -18.5}, {"input": [-18.5, -69.0], "expected": -18.5}, {"input": [-18.5, -68.5], "expected": -18.5}, {"input": [-18.5, -68.0], "expected": -18.5}, {"input": [-18.5, -67.5], "expected": -18.5}, {"input": [-18.5, -67.0], "expected": -18.5}, {"input": [-18.5, -66.5], "expected": -18.5}, {"input": [-18.5, -66.0], "expected": -18.5}, {"input": [-18.5, -65.5], "expected": -18.5}, {"input": [-18.5, -65.0], "expected": -18.5}, {"input": [-18.5, -64.5], "expected": -18.5}, {"input": [-18.5, -64.0], "expected": -18.5}, {"input": [-18.5, -63.5], "expected": -18.5}, {"input": [-18.5, -63.0], "expected": -18.5}, {"input": [-18.5, -62.5], "expected": -18.5}, {"input": [-18.5, -62.0], "expected": -18.5}, {"input": [-18.5, -61.5], "expected": -18.5}, {"input": [-18.5, -61.0], "expected": -18.5}, {"input": [-18.5, -60.5], "expected": -18.5}, {"input": [-18.5, -60.0], "expected": -18.5}, {"input": [-18.5, -59.5], "expected": -18.5}, {"input": [-18.5, -59.0], "expected": -18.5}, {"input": [-18.5, -58.5], "expected": -18.5}, {"input": [-18.5, -58.0], "expected": -18.5}, {"input": [-18.5, -57.5], "expected": -18.5}, {"input": [-18.5, -57.0], "expected": -18.5}, {"input": [-18.5, -56.5], "expected": -18.5}, {"input": [-18.5, -56.0], "expected": -18.5}, {"input": [-18.5, -55.5], "expected": -18.5}, {"input": [-18.5, -55.0], "expected": -18.5}, {"input": [-18.5, -54.5], "expected": -18.5}, {"input": [-18.5, -54.0], "expected": -18.5}, {"input": [-18.5, -53.5], "expected": -18.5}, {"input": [-18.5, -53.0], "expected": -18.5}, {"input": [-18.5, -52.5], "expected": -18.5}, {"input": [-18.5, -52.0], "expected": -18.499999999999996}, {"input": [-18.5, -51.5], "expected": -18.499999999999996}, {"input": [-18.5, -51.0], "expected": -18.499999999999993}, {"input": [-18.5, -50.5], "expected": -18.499999999999986}, {"input": [-18.5, -50.0], "expected": -18.49999999999998}, {"input": [-18.5, -49.5], "expected": -18.499999999999964}, {"input": [-18.5, -49.0], "expected": -18.499999999999943}, {"input": [-18.5, -48.5], "expected": -18.499999999999908}, {"input": [-18.5, -48.0], "expected": -18.499999999999847}, {"input": [-18.5, -47.5], "expected": -18.499999999999744}, {"input": [-18.5, -47.0], "expected": -18.49999999999958}, {"input": [-18.5, -46.5], "expected": -18.499999999999307}, {"input": [-18.5, -46.0], "expected": -18.49999999999886}, {"input": [-18.5, -45.5], "expected": -18.49999999999812}, {"input": [-18.5, -45.0], "expected": -18.499999999996902}, {"input": [-18.5, -44.5], "expected": -18.49999999999489}, {"input": [-18.5, -44.0], "expected": -18.499999999991577}, {"input": [-18.5, -43.5], "expected": -18.499999999986112}, {"input": [-18.5, -43.0], "expected": -18.499999999977103}, {"input": [-18.5, -42.5], "expected": -18.49999999996225}, {"input": [-18.5, -42.0], "expected": -18.49999999993776}, {"input": [-18.5, -41.5], "expected": -18.49999999989738}, {"input": [-18.5, -41.0], "expected": -18.49999999983081}, {"input": [-18.5, -40.5], "expected": -18.49999999972105}, {"input": [-18.5, -40.0], "expected": -18.499999999540094}, {"input": [-18.5, -39.5], "expected": -18.499999999241744}, {"input": [-18.5, -39.0], "expected": -18.499999998749846}, {"input": [-18.5, -38.5], "expected": -18.499999997938847}, {"input": [-18.5, -38.0], "expected": -18.499999996601733}, {"input": [-18.5, -37.5], "expected": -18.499999994397204}, {"input": [-18.5, -37.0], "expected": -18.49999999076255}, {"input": [-18.5, -36.5], "expected": -18.49999998477002}, {"input": [-18.5, -36.0], "expected": -18.49999997489001}, {"input": [-18.5, -35.5], "expected": -18.499999958600625}, {"input": [-18.5, -35.0], "expected": -18.499999931743968}, {"input": [-18.5, -34.5], "expected": -18.49999988746483}, {"input": [-18.5, -34.0], "expected": -18.49999981446088}, {"input": [-18.5, -33.5], "expected": -18.499999694097728}, {"input": [-18.5, -33.0], "expected": -18.499999495652464}, {"input": [-18.5, -32.5], "expected": -18.499999168471625}, {"input": [-18.5, -32.0], "expected": -18.499998629041855}, {"input": [-18.5, -31.5], "expected": -18.499997739673148}, {"input": [-18.5, -31.0], "expected": -18.499996273353773}, {"input": [-18.5, -30.5], "expected": -18.499993855806522}, {"input": [-18.5, -30.0], "expected": -18.49998986995771}, {"input": [-18.5, -29.5], "expected": -18.499983298438682}, {"input": [-18.5, -29.0], "expected": -18.499972463929772}, {"input": [-18.5, -28.5], "expected": -18.499954601100782}, {"input": [-18.5, -28.0], "expected": -18.49992515097137}, {"input": [-18.5, -27.5], "expected": -18.499876597810278}, {"input": [-18.5, -27.0], "expected": -18.499796552327872}, {"input": [-18.5, -26.5], "expected": -18.499664593627106}, {"input": [-18.5, -26.0], "expected": -18.49944706852464}, {"input": [-18.5, -25.5], "expected": -18.499088533546225}, {"input": [-18.5, -25.0], "expected": -18.498497689840246}, {"input": [-18.5, -24.5], "expected": -18.497524314862268}, {"input": [-18.5, -24.0], "expected": -18.495921556729428}, {"input": [-18.5, -23.5], "expected": -18.493284651510884}, {"input": [-18.5, -23.0], "expected": -18.488952255151407}, {"input": [-18.5, -22.5], "expected": -18.48185007208219}, {"input": [-18.5, -22.0], "expected": -18.47024958172738}, {"input": [-18.5, -21.5], "expected": -18.451412648426256}, {"input": [-18.5, -21.0], "expected": -18.42111026570745}, {"input": [-18.5, -20.5], "expected": -18.373071988957026}, {"input": [-18.5, -20.0], "expected": -18.298586722017248}, {"input": [-18.5, -19.5], "expected": -18.186738312481776}, {"input": [-18.5, -19.0], "expected": -18.02592301581989}, {"input": [-18.5, -18.5], "expected": -17.806852819440056}, {"input": [-18.5, -18.0], "expected": -17.52592301581989}, {"input": [-18.5, -17.5], "expected": -17.186738312481776}, {"input": [-18.5, -17.0], "expected": -16.798586722017248}, {"input": [-18.5, -16.5], "expected": -16.373071988957026}, {"input": [-18.5, -16.0], "expected": -15.921110265707451}, {"input": [-18.5, -15.5], "expected": -15.451412648426258}, {"input": [-18.5, -15.0], "expected": -14.97024958172738}, {"input": [-18.5, -14.5], "expected": -14.48185007208219}, {"input": [-18.5, -14.0], "expected": -13.988952255151407}, {"input": [-18.5, -13.5], "expected": -13.493284651510882}, {"input": [-18.5, -13.0], "expected": -12.99592155672943}, {"input": [-18.5, -12.5], "expected": -12.49752431486227}, {"input": [-18.5, -12.0], "expected": -11.998497689840246}, {"input": [-18.5, -11.5], "expected": -11.499088533546226}, {"input": [-18.5, -11.0], "expected": -10.999447068524638}, {"input": [-18.5, -10.5], "expected": -10.499664593627104}, {"input": [-18.5, -10.0], "expected": -9.99979655232787}, {"input": [-18.5, -9.5], "expected": -9.499876597810276}, {"input": [-18.5, -9.0], "expected": -8.999925150971372}, {"input": [-18.5, -8.5], "expected": -8.499954601100782}, {"input": [-18.5, -8.0], "expected": -7.999972463929772}, {"input": [-18.5, -7.5], "expected": -7.499983298438681}, {"input": [-18.5, -7.0], "expected": -6.9999898699577106}, {"input": [-18.5, -6.5], "expected": -6.4999938558065224}, {"input": [-18.5, -6.0], "expected": -5.999996273353772}, {"input": [-18.5, -5.5], "expected": -5.499997739673147}, {"input": [-18.5, -5.0], "expected": -4.999998629041853}, {"input": [-18.5, -4.5], "expected": -4.499999168471627}, {"input": [-18.5, -4.0], "expected": -3.9999994956524647}, {"input": [-18.5, -3.5], "expected": -3.4999996940977263}, {"input": [-18.5, -3.0], "expected": -2.999999814460881}, {"input": [-18.5, -2.5], "expected": -2.4999998874648317}, {"input": [-18.5, -2.0], "expected": -1.9999999317439685}, {"input": [-18.5, -1.5], "expected": -1.4999999586006236}, {"input": [-18.5, -1.0], "expected": -0.9999999748900088}, {"input": [-18.5, -0.5], "expected": -0.4999999847700204}, {"input": [-18.5, 0.0], "expected": 9.237449619305356e-09}, {"input": [-18.5, 0.5], "expected": 0.5000000056027964}, {"input": [-18.5, 1.0], "expected": 1.000000003398268}, {"input": [-18.5, 1.5], "expected": 1.5000000020611537}, {"input": [-18.5, 2.0], "expected": 2.000000001250153}, {"input": [-18.5, 2.5], "expected": 2.500000000758256}, {"input": [-18.5, 3.0], "expected": 3.0000000004599054}, {"input": [-18.5, 3.5], "expected": 3.5000000002789466}, {"input": [-18.5, 4.0], "expected": 4.00000000016919}, {"input": [-18.5, 4.5], "expected": 4.500000000102618}, {"input": [-18.5, 5.0], "expected": 5.000000000062242}, {"input": [-18.5, 5.5], "expected": 5.500000000037751}, {"input": [-18.5, 6.0], "expected": 6.000000000022897}, {"input": [-18.5, 6.5], "expected": 6.500000000013888}, {"input": [-18.5, 7.0], "expected": 7.0000000000084235}, {"input": [-18.5, 7.5], "expected": 7.500000000005109}, {"input": [-18.5, 8.0], "expected": 8.000000000003098}, {"input": [-18.5, 8.5], "expected": 8.50000000000188}, {"input": [-18.5, 9.0], "expected": 9.00000000000114}, {"input": [-18.5, 9.5], "expected": 9.500000000000691}, {"input": [-18.5, 10.0], "expected": 10.00000000000042}, {"input": [-18.5, 10.5], "expected": 10.500000000000254}, {"input": [-18.5, 11.0], "expected": 11.000000000000155}, {"input": [-18.5, 11.5], "expected": 11.500000000000094}, {"input": [-18.5, 12.0], "expected": 12.000000000000057}, {"input": [-18.5, 12.5], "expected": 12.500000000000034}, {"input": [-18.5, 13.0], "expected": 13.000000000000021}, {"input": [-18.5, 13.5], "expected": 13.500000000000012}, {"input": [-18.5, 14.0], "expected": 14.000000000000007}, {"input": [-18.5, 14.5], "expected": 14.500000000000005}, {"input": [-18.5, 15.0], "expected": 15.000000000000004}, {"input": [-18.5, 15.5], "expected": 15.500000000000002}, {"input": [-18.5, 16.0], "expected": 16.0}, {"input": [-18.5, 16.5], "expected": 16.5}, {"input": [-18.5, 17.0], "expected": 17.0}, {"input": [-18.5, 17.5], "expected": 17.5}, {"input": [-18.5, 18.0], "expected": 18.0}, {"input": [-18.5, 18.5], "expected": 18.5}, {"input": [-18.5, 19.0], "expected": 19.0}, {"input": [-18.5, 19.5], "expected": 19.5}, {"input": [-18.5, 20.0], "expected": 20.0}, {"input": [-18.5, 20.5], "expected": 20.5}, {"input": [-18.5, 21.0], "expected": 21.0}, {"input": [-18.5, 21.5], "expected": 21.5}, {"input": [-18.5, 22.0], "expected": 22.0}, {"input": [-18.5, 22.5], "expected": 22.5}, {"input": [-18.5, 23.0], "expected": 23.0}, {"input": [-18.5, 23.5], "expected": 23.5}, {"input": [-18.5, 24.0], "expected": 24.0}, {"input": [-18.5, 24.5], "expected": 24.5}, {"input": [-18.5, 25.0], "expected": 25.0}, {"input": [-18.5, 25.5], "expected": 25.5}, {"input": [-18.5, 26.0], "expected": 26.0}, {"input": [-18.5, 26.5], "expected": 26.5}, {"input": [-18.5, 27.0], "expected": 27.0}, {"input": [-18.5, 27.5], "expected": 27.5}, {"input": [-18.5, 28.0], "expected": 28.0}, {"input": [-18.5, 28.5], "expected": 28.5}, {"input": [-18.5, 29.0], "expected": 29.0}, {"input": [-18.5, 29.5], "expected": 29.5}, {"input": [-18.5, 30.0], "expected": 30.0}, {"input": [-18.5, 30.5], "expected": 30.5}, {"input": [-18.5, 31.0], "expected": 31.0}, {"input": [-18.5, 31.5], "expected": 31.5}, {"input": [-18.5, 32.0], "expected": 32.0}, {"input": [-18.5, 32.5], "expected": 32.5}, {"input": [-18.5, 33.0], "expected": 33.0}, {"input": [-18.5, 33.5], "expected": 33.5}, {"input": [-18.5, 34.0], "expected": 34.0}, {"input": [-18.5, 34.5], "expected": 34.5}, {"input": [-18.5, 35.0], "expected": 35.0}, {"input": [-18.5, 35.5], "expected": 35.5}, {"input": [-18.5, 36.0], "expected": 36.0}, {"input": [-18.5, 36.5], "expected": 36.5}, {"input": [-18.5, 37.0], "expected": 37.0}, {"input": [-18.5, 37.5], "expected": 37.5}, {"input": [-18.5, 38.0], "expected": 38.0}, {"input": [-18.5, 38.5], "expected": 38.5}, {"input": [-18.5, 39.0], "expected": 39.0}, {"input": [-18.5, 39.5], "expected": 39.5}, {"input": [-18.5, 40.0], "expected": 40.0}, {"input": [-18.5, 40.5], "expected": 40.5}, {"input": [-18.5, 41.0], "expected": 41.0}, {"input": [-18.5, 41.5], "expected": 41.5}, {"input": [-18.5, 42.0], "expected": 42.0}, {"input": [-18.5, 42.5], "expected": 42.5}, {"input": [-18.5, 43.0], "expected": 43.0}, {"input": [-18.5, 43.5], "expected": 43.5}, {"input": [-18.5, 44.0], "expected": 44.0}, {"input": [-18.5, 44.5], "expected": 44.5}, {"input": [-18.5, 45.0], "expected": 45.0}, {"input": [-18.5, 45.5], "expected": 45.5}, {"input": [-18.5, 46.0], "expected": 46.0}, {"input": [-18.5, 46.5], "expected": 46.5}, {"input": [-18.5, 47.0], "expected": 47.0}, {"input": [-18.5, 47.5], "expected": 47.5}, {"input": [-18.5, 48.0], "expected": 48.0}, {"input": [-18.5, 48.5], "expected": 48.5}, {"input": [-18.5, 49.0], "expected": 49.0}, {"input": [-18.5, 49.5], "expected": 49.5}, {"input": [-18.5, 50.0], "expected": 50.0}, {"input": [-18.5, 50.5], "expected": 50.5}, {"input": [-18.5, 51.0], "expected": 51.0}, {"input": [-18.5, 51.5], "expected": 51.5}, {"input": [-18.5, 52.0], "expected": 52.0}, {"input": [-18.5, 52.5], "expected": 52.5}, {"input": [-18.5, 53.0], "expected": 53.0}, {"input": [-18.5, 53.5], "expected": 53.5}, {"input": [-18.5, 54.0], "expected": 54.0}, {"input": [-18.5, 54.5], "expected": 54.5}, {"input": [-18.5, 55.0], "expected": 55.0}, {"input": [-18.5, 55.5], "expected": 55.5}, {"input": [-18.5, 56.0], "expected": 56.0}, {"input": [-18.5, 56.5], "expected": 56.5}, {"input": [-18.5, 57.0], "expected": 57.0}, {"input": [-18.5, 57.5], "expected": 57.5}, {"input": [-18.5, 58.0], "expected": 58.0}, {"input": [-18.5, 58.5], "expected": 58.5}, {"input": [-18.5, 59.0], "expected": 59.0}, {"input": [-18.5, 59.5], "expected": 59.5}, {"input": [-18.5, 60.0], "expected": 60.0}, {"input": [-18.5, 60.5], "expected": 60.5}, {"input": [-18.5, 61.0], "expected": 61.0}, {"input": [-18.5, 61.5], "expected": 61.5}, {"input": [-18.5, 62.0], "expected": 62.0}, {"input": [-18.5, 62.5], "expected": 62.5}, {"input": [-18.5, 63.0], "expected": 63.0}, {"input": [-18.5, 63.5], "expected": 63.5}, {"input": [-18.5, 64.0], "expected": 64.0}, {"input": [-18.5, 64.5], "expected": 64.5}, {"input": [-18.5, 65.0], "expected": 65.0}, {"input": [-18.5, 65.5], "expected": 65.5}, {"input": [-18.5, 66.0], "expected": 66.0}, {"input": [-18.5, 66.5], "expected": 66.5}, {"input": [-18.5, 67.0], "expected": 67.0}, {"input": [-18.5, 67.5], "expected": 67.5}, {"input": [-18.5, 68.0], "expected": 68.0}, {"input": [-18.5, 68.5], "expected": 68.5}, {"input": [-18.5, 69.0], "expected": 69.0}, {"input": [-18.5, 69.5], "expected": 69.5}, {"input": [-18.5, 70.0], "expected": 70.0}, {"input": [-18.5, 70.5], "expected": 70.5}, {"input": [-18.5, 71.0], "expected": 71.0}, {"input": [-18.5, 71.5], "expected": 71.5}, {"input": [-18.5, 72.0], "expected": 72.0}, {"input": [-18.5, 72.5], "expected": 72.5}, {"input": [-18.5, 73.0], "expected": 73.0}, {"input": [-18.5, 73.5], "expected": 73.5}, {"input": [-18.5, 74.0], "expected": 74.0}, {"input": [-18.5, 74.5], "expected": 74.5}, {"input": [-18.5, 75.0], "expected": 75.0}, {"input": [-18.5, 75.5], "expected": 75.5}, {"input": [-18.5, 76.0], "expected": 76.0}, {"input": [-18.5, 76.5], "expected": 76.5}, {"input": [-18.5, 77.0], "expected": 77.0}, {"input": [-18.5, 77.5], "expected": 77.5}, {"input": [-18.5, 78.0], "expected": 78.0}, {"input": [-18.5, 78.5], "expected": 78.5}, {"input": [-18.5, 79.0], "expected": 79.0}, {"input": [-18.5, 79.5], "expected": 79.5}, {"input": [-18.5, 80.0], "expected": 80.0}, {"input": [-18.5, 80.5], "expected": 80.5}, {"input": [-18.5, 81.0], "expected": 81.0}, {"input": [-18.5, 81.5], "expected": 81.5}, {"input": [-18.5, 82.0], "expected": 82.0}, {"input": [-18.5, 82.5], "expected": 82.5}, {"input": [-18.5, 83.0], "expected": 83.0}, {"input": [-18.5, 83.5], "expected": 83.5}, {"input": [-18.5, 84.0], "expected": 84.0}, {"input": [-18.5, 84.5], "expected": 84.5}, {"input": [-18.5, 85.0], "expected": 85.0}, {"input": [-18.5, 85.5], "expected": 85.5}, {"input": [-18.5, 86.0], "expected": 86.0}, {"input": [-18.5, 86.5], "expected": 86.5}, {"input": [-18.5, 87.0], "expected": 87.0}, {"input": [-18.5, 87.5], "expected": 87.5}, {"input": [-18.5, 88.0], "expected": 88.0}, {"input": [-18.5, 88.5], "expected": 88.5}, {"input": [-18.5, 89.0], "expected": 89.0}, {"input": [-18.5, 89.5], "expected": 89.5}, {"input": [-18.5, 90.0], "expected": 90.0}, {"input": [-18.5, 90.5], "expected": 90.5}, {"input": [-18.5, 91.0], "expected": 91.0}, {"input": [-18.5, 91.5], "expected": 91.5}, {"input": [-18.5, 92.0], "expected": 92.0}, {"input": [-18.5, 92.5], "expected": 92.5}, {"input": [-18.5, 93.0], "expected": 93.0}, {"input": [-18.5, 93.5], "expected": 93.5}, {"input": [-18.5, 94.0], "expected": 94.0}, {"input": [-18.5, 94.5], "expected": 94.5}, {"input": [-18.5, 95.0], "expected": 95.0}, {"input": [-18.5, 95.5], "expected": 95.5}, {"input": [-18.5, 96.0], "expected": 96.0}, {"input": [-18.5, 96.5], "expected": 96.5}, {"input": [-18.5, 97.0], "expected": 97.0}, {"input": [-18.5, 97.5], "expected": 97.5}, {"input": [-18.5, 98.0], "expected": 98.0}, {"input": [-18.5, 98.5], "expected": 98.5}, {"input": [-18.5, 99.0], "expected": 99.0}, {"input": [-18.5, 99.5], "expected": 99.5}, {"input": [-18.0, -100.0], "expected": -18.0}, {"input": [-18.0, -99.5], "expected": -18.0}, {"input": [-18.0, -99.0], "expected": -18.0}, {"input": [-18.0, -98.5], "expected": -18.0}, {"input": [-18.0, -98.0], "expected": -18.0}, {"input": [-18.0, -97.5], "expected": -18.0}, {"input": [-18.0, -97.0], "expected": -18.0}, {"input": [-18.0, -96.5], "expected": -18.0}, {"input": [-18.0, -96.0], "expected": -18.0}, {"input": [-18.0, -95.5], "expected": -18.0}, {"input": [-18.0, -95.0], "expected": -18.0}, {"input": [-18.0, -94.5], "expected": -18.0}, {"input": [-18.0, -94.0], "expected": -18.0}, {"input": [-18.0, -93.5], "expected": -18.0}, {"input": [-18.0, -93.0], "expected": -18.0}, {"input": [-18.0, -92.5], "expected": -18.0}, {"input": [-18.0, -92.0], "expected": -18.0}, {"input": [-18.0, -91.5], "expected": -18.0}, {"input": [-18.0, -91.0], "expected": -18.0}, {"input": [-18.0, -90.5], "expected": -18.0}, {"input": [-18.0, -90.0], "expected": -18.0}, {"input": [-18.0, -89.5], "expected": -18.0}, {"input": [-18.0, -89.0], "expected": -18.0}, {"input": [-18.0, -88.5], "expected": -18.0}, {"input": [-18.0, -88.0], "expected": -18.0}, {"input": [-18.0, -87.5], "expected": -18.0}, {"input": [-18.0, -87.0], "expected": -18.0}, {"input": [-18.0, -86.5], "expected": -18.0}, {"input": [-18.0, -86.0], "expected": -18.0}, {"input": [-18.0, -85.5], "expected": -18.0}, {"input": [-18.0, -85.0], "expected": -18.0}, {"input": [-18.0, -84.5], "expected": -18.0}, {"input": [-18.0, -84.0], "expected": -18.0}, {"input": [-18.0, -83.5], "expected": -18.0}, {"input": [-18.0, -83.0], "expected": -18.0}, {"input": [-18.0, -82.5], "expected": -18.0}, {"input": [-18.0, -82.0], "expected": -18.0}, {"input": [-18.0, -81.5], "expected": -18.0}, {"input": [-18.0, -81.0], "expected": -18.0}, {"input": [-18.0, -80.5], "expected": -18.0}, {"input": [-18.0, -80.0], "expected": -18.0}, {"input": [-18.0, -79.5], "expected": -18.0}, {"input": [-18.0, -79.0], "expected": -18.0}, {"input": [-18.0, -78.5], "expected": -18.0}, {"input": [-18.0, -78.0], "expected": -18.0}, {"input": [-18.0, -77.5], "expected": -18.0}, {"input": [-18.0, -77.0], "expected": -18.0}, {"input": [-18.0, -76.5], "expected": -18.0}, {"input": [-18.0, -76.0], "expected": -18.0}, {"input": [-18.0, -75.5], "expected": -18.0}, {"input": [-18.0, -75.0], "expected": -18.0}, {"input": [-18.0, -74.5], "expected": -18.0}, {"input": [-18.0, -74.0], "expected": -18.0}, {"input": [-18.0, -73.5], "expected": -18.0}, {"input": [-18.0, -73.0], "expected": -18.0}, {"input": [-18.0, -72.5], "expected": -18.0}, {"input": [-18.0, -72.0], "expected": -18.0}, {"input": [-18.0, -71.5], "expected": -18.0}, {"input": [-18.0, -71.0], "expected": -18.0}, {"input": [-18.0, -70.5], "expected": -18.0}, {"input": [-18.0, -70.0], "expected": -18.0}, {"input": [-18.0, -69.5], "expected": -18.0}, {"input": [-18.0, -69.0], "expected": -18.0}, {"input": [-18.0, -68.5], "expected": -18.0}, {"input": [-18.0, -68.0], "expected": -18.0}, {"input": [-18.0, -67.5], "expected": -18.0}, {"input": [-18.0, -67.0], "expected": -18.0}, {"input": [-18.0, -66.5], "expected": -18.0}, {"input": [-18.0, -66.0], "expected": -18.0}, {"input": [-18.0, -65.5], "expected": -18.0}, {"input": [-18.0, -65.0], "expected": -18.0}, {"input": [-18.0, -64.5], "expected": -18.0}, {"input": [-18.0, -64.0], "expected": -18.0}, {"input": [-18.0, -63.5], "expected": -18.0}, {"input": [-18.0, -63.0], "expected": -18.0}, {"input": [-18.0, -62.5], "expected": -18.0}, {"input": [-18.0, -62.0], "expected": -18.0}, {"input": [-18.0, -61.5], "expected": -18.0}, {"input": [-18.0, -61.0], "expected": -18.0}, {"input": [-18.0, -60.5], "expected": -18.0}, {"input": [-18.0, -60.0], "expected": -18.0}, {"input": [-18.0, -59.5], "expected": -18.0}, {"input": [-18.0, -59.0], "expected": -18.0}, {"input": [-18.0, -58.5], "expected": -18.0}, {"input": [-18.0, -58.0], "expected": -18.0}, {"input": [-18.0, -57.5], "expected": -18.0}, {"input": [-18.0, -57.0], "expected": -18.0}, {"input": [-18.0, -56.5], "expected": -18.0}, {"input": [-18.0, -56.0], "expected": -18.0}, {"input": [-18.0, -55.5], "expected": -18.0}, {"input": [-18.0, -55.0], "expected": -18.0}, {"input": [-18.0, -54.5], "expected": -18.0}, {"input": [-18.0, -54.0], "expected": -18.0}, {"input": [-18.0, -53.5], "expected": -18.0}, {"input": [-18.0, -53.0], "expected": -18.0}, {"input": [-18.0, -52.5], "expected": -18.0}, {"input": [-18.0, -52.0], "expected": -18.0}, {"input": [-18.0, -51.5], "expected": -17.999999999999996}, {"input": [-18.0, -51.0], "expected": -17.999999999999996}, {"input": [-18.0, -50.5], "expected": -17.999999999999993}, {"input": [-18.0, -50.0], "expected": -17.999999999999986}, {"input": [-18.0, -49.5], "expected": -17.99999999999998}, {"input": [-18.0, -49.0], "expected": -17.999999999999964}, {"input": [-18.0, -48.5], "expected": -17.999999999999943}, {"input": [-18.0, -48.0], "expected": -17.999999999999908}, {"input": [-18.0, -47.5], "expected": -17.999999999999847}, {"input": [-18.0, -47.0], "expected": -17.999999999999744}, {"input": [-18.0, -46.5], "expected": -17.99999999999958}, {"input": [-18.0, -46.0], "expected": -17.999999999999307}, {"input": [-18.0, -45.5], "expected": -17.99999999999886}, {"input": [-18.0, -45.0], "expected": -17.99999999999812}, {"input": [-18.0, -44.5], "expected": -17.999999999996902}, {"input": [-18.0, -44.0], "expected": -17.99999999999489}, {"input": [-18.0, -43.5], "expected": -17.999999999991577}, {"input": [-18.0, -43.0], "expected": -17.999999999986112}, {"input": [-18.0, -42.5], "expected": -17.999999999977103}, {"input": [-18.0, -42.0], "expected": -17.99999999996225}, {"input": [-18.0, -41.5], "expected": -17.99999999993776}, {"input": [-18.0, -41.0], "expected": -17.99999999989738}, {"input": [-18.0, -40.5], "expected": -17.99999999983081}, {"input": [-18.0, -40.0], "expected": -17.99999999972105}, {"input": [-18.0, -39.5], "expected": -17.999999999540094}, {"input": [-18.0, -39.0], "expected": -17.999999999241744}, {"input": [-18.0, -38.5], "expected": -17.999999998749846}, {"input": [-18.0, -38.0], "expected": -17.999999997938847}, {"input": [-18.0, -37.5], "expected": -17.999999996601733}, {"input": [-18.0, -37.0], "expected": -17.999999994397204}, {"input": [-18.0, -36.5], "expected": -17.99999999076255}, {"input": [-18.0, -36.0], "expected": -17.99999998477002}, {"input": [-18.0, -35.5], "expected": -17.99999997489001}, {"input": [-18.0, -35.0], "expected": -17.999999958600625}, {"input": [-18.0, -34.5], "expected": -17.999999931743968}, {"input": [-18.0, -34.0], "expected": -17.99999988746483}, {"input": [-18.0, -33.5], "expected": -17.99999981446088}, {"input": [-18.0, -33.0], "expected": -17.999999694097728}, {"input": [-18.0, -32.5], "expected": -17.999999495652464}, {"input": [-18.0, -32.0], "expected": -17.999999168471625}, {"input": [-18.0, -31.5], "expected": -17.999998629041855}, {"input": [-18.0, -31.0], "expected": -17.999997739673148}, {"input": [-18.0, -30.5], "expected": -17.999996273353773}, {"input": [-18.0, -30.0], "expected": -17.999993855806522}, {"input": [-18.0, -29.5], "expected": -17.99998986995771}, {"input": [-18.0, -29.0], "expected": -17.999983298438682}, {"input": [-18.0, -28.5], "expected": -17.999972463929772}, {"input": [-18.0, -28.0], "expected": -17.999954601100782}, {"input": [-18.0, -27.5], "expected": -17.99992515097137}, {"input": [-18.0, -27.0], "expected": -17.999876597810278}, {"input": [-18.0, -26.5], "expected": -17.999796552327872}, {"input": [-18.0, -26.0], "expected": -17.999664593627106}, {"input": [-18.0, -25.5], "expected": -17.99944706852464}, {"input": [-18.0, -25.0], "expected": -17.999088533546225}, {"input": [-18.0, -24.5], "expected": -17.998497689840246}, {"input": [-18.0, -24.0], "expected": -17.997524314862268}, {"input": [-18.0, -23.5], "expected": -17.995921556729428}, {"input": [-18.0, -23.0], "expected": -17.993284651510884}, {"input": [-18.0, -22.5], "expected": -17.988952255151407}, {"input": [-18.0, -22.0], "expected": -17.98185007208219}, {"input": [-18.0, -21.5], "expected": -17.97024958172738}, {"input": [-18.0, -21.0], "expected": -17.951412648426256}, {"input": [-18.0, -20.5], "expected": -17.92111026570745}, {"input": [-18.0, -20.0], "expected": -17.873071988957026}, {"input": [-18.0, -19.5], "expected": -17.798586722017248}, {"input": [-18.0, -19.0], "expected": -17.686738312481776}, {"input": [-18.0, -18.5], "expected": -17.52592301581989}, {"input": [-18.0, -18.0], "expected": -17.306852819440056}, {"input": [-18.0, -17.5], "expected": -17.02592301581989}, {"input": [-18.0, -17.0], "expected": -16.686738312481776}, {"input": [-18.0, -16.5], "expected": -16.298586722017248}, {"input": [-18.0, -16.0], "expected": -15.873071988957028}, {"input": [-18.0, -15.5], "expected": -15.421110265707451}, {"input": [-18.0, -15.0], "expected": -14.951412648426258}, {"input": [-18.0, -14.5], "expected": -14.47024958172738}, {"input": [-18.0, -14.0], "expected": -13.98185007208219}, {"input": [-18.0, -13.5], "expected": -13.488952255151407}, {"input": [-18.0, -13.0], "expected": -12.993284651510882}, {"input": [-18.0, -12.5], "expected": -12.49592155672943}, {"input": [-18.0, -12.0], "expected": -11.99752431486227}, {"input": [-18.0, -11.5], "expected": -11.498497689840246}, {"input": [-18.0, -11.0], "expected": -10.999088533546226}, {"input": [-18.0, -10.5], "expected": -10.499447068524638}, {"input": [-18.0, -10.0], "expected": -9.999664593627104}, {"input": [-18.0, -9.5], "expected": -9.49979655232787}, {"input": [-18.0, -9.0], "expected": -8.999876597810276}, {"input": [-18.0, -8.5], "expected": -8.499925150971372}, {"input": [-18.0, -8.0], "expected": -7.999954601100783}, {"input": [-18.0, -7.5], "expected": -7.499972463929772}, {"input": [-18.0, -7.0], "expected": -6.999983298438681}, {"input": [-18.0, -6.5], "expected": -6.4999898699577106}, {"input": [-18.0, -6.0], "expected": -5.9999938558065224}, {"input": [-18.0, -5.5], "expected": -5.499996273353772}, {"input": [-18.0, -5.0], "expected": -4.999997739673147}, {"input": [-18.0, -4.5], "expected": -4.499998629041853}, {"input": [-18.0, -4.0], "expected": -3.9999991684716267}, {"input": [-18.0, -3.5], "expected": -3.4999994956524647}, {"input": [-18.0, -3.0], "expected": -2.9999996940977263}, {"input": [-18.0, -2.5], "expected": -2.499999814460881}, {"input": [-18.0, -2.0], "expected": -1.9999998874648317}, {"input": [-18.0, -1.5], "expected": -1.4999999317439685}, {"input": [-18.0, -1.0], "expected": -0.9999999586006236}, {"input": [-18.0, -0.5], "expected": -0.49999997489000875}, {"input": [-18.0, 0.0], "expected": 1.5229979628736488e-08}, {"input": [-18.0, 0.5], "expected": 0.5000000092374496}, {"input": [-18.0, 1.0], "expected": 1.0000000056027964}, {"input": [-18.0, 1.5], "expected": 1.500000003398268}, {"input": [-18.0, 2.0], "expected": 2.0000000020611535}, {"input": [-18.0, 2.5], "expected": 2.500000001250153}, {"input": [-18.0, 3.0], "expected": 3.000000000758256}, {"input": [-18.0, 3.5], "expected": 3.5000000004599054}, {"input": [-18.0, 4.0], "expected": 4.000000000278947}, {"input": [-18.0, 4.5], "expected": 4.50000000016919}, {"input": [-18.0, 5.0], "expected": 5.000000000102618}, {"input": [-18.0, 5.5], "expected": 5.500000000062242}, {"input": [-18.0, 6.0], "expected": 6.000000000037751}, {"input": [-18.0, 6.5], "expected": 6.500000000022897}, {"input": [-18.0, 7.0], "expected": 7.000000000013888}, {"input": [-18.0, 7.5], "expected": 7.5000000000084235}, {"input": [-18.0, 8.0], "expected": 8.000000000005109}, {"input": [-18.0, 8.5], "expected": 8.500000000003098}, {"input": [-18.0, 9.0], "expected": 9.00000000000188}, {"input": [-18.0, 9.5], "expected": 9.50000000000114}, {"input": [-18.0, 10.0], "expected": 10.000000000000691}, {"input": [-18.0, 10.5], "expected": 10.50000000000042}, {"input": [-18.0, 11.0], "expected": 11.000000000000254}, {"input": [-18.0, 11.5], "expected": 11.500000000000155}, {"input": [-18.0, 12.0], "expected": 12.000000000000094}, {"input": [-18.0, 12.5], "expected": 12.500000000000057}, {"input": [-18.0, 13.0], "expected": 13.000000000000034}, {"input": [-18.0, 13.5], "expected": 13.500000000000021}, {"input": [-18.0, 14.0], "expected": 14.000000000000012}, {"input": [-18.0, 14.5], "expected": 14.500000000000007}, {"input": [-18.0, 15.0], "expected": 15.000000000000005}, {"input": [-18.0, 15.5], "expected": 15.500000000000004}, {"input": [-18.0, 16.0], "expected": 16.0}, {"input": [-18.0, 16.5], "expected": 16.5}, {"input": [-18.0, 17.0], "expected": 17.0}, {"input": [-18.0, 17.5], "expected": 17.5}, {"input": [-18.0, 18.0], "expected": 18.0}, {"input": [-18.0, 18.5], "expected": 18.5}, {"input": [-18.0, 19.0], "expected": 19.0}, {"input": [-18.0, 19.5], "expected": 19.5}, {"input": [-18.0, 20.0], "expected": 20.0}, {"input": [-18.0, 20.5], "expected": 20.5}, {"input": [-18.0, 21.0], "expected": 21.0}, {"input": [-18.0, 21.5], "expected": 21.5}, {"input": [-18.0, 22.0], "expected": 22.0}, {"input": [-18.0, 22.5], "expected": 22.5}, {"input": [-18.0, 23.0], "expected": 23.0}, {"input": [-18.0, 23.5], "expected": 23.5}, {"input": [-18.0, 24.0], "expected": 24.0}, {"input": [-18.0, 24.5], "expected": 24.5}, {"input": [-18.0, 25.0], "expected": 25.0}, {"input": [-18.0, 25.5], "expected": 25.5}, {"input": [-18.0, 26.0], "expected": 26.0}, {"input": [-18.0, 26.5], "expected": 26.5}, {"input": [-18.0, 27.0], "expected": 27.0}, {"input": [-18.0, 27.5], "expected": 27.5}, {"input": [-18.0, 28.0], "expected": 28.0}, {"input": [-18.0, 28.5], "expected": 28.5}, {"input": [-18.0, 29.0], "expected": 29.0}, {"input": [-18.0, 29.5], "expected": 29.5}, {"input": [-18.0, 30.0], "expected": 30.0}, {"input": [-18.0, 30.5], "expected": 30.5}, {"input": [-18.0, 31.0], "expected": 31.0}, {"input": [-18.0, 31.5], "expected": 31.5}, {"input": [-18.0, 32.0], "expected": 32.0}, {"input": [-18.0, 32.5], "expected": 32.5}, {"input": [-18.0, 33.0], "expected": 33.0}, {"input": [-18.0, 33.5], "expected": 33.5}, {"input": [-18.0, 34.0], "expected": 34.0}, {"input": [-18.0, 34.5], "expected": 34.5}, {"input": [-18.0, 35.0], "expected": 35.0}, {"input": [-18.0, 35.5], "expected": 35.5}, {"input": [-18.0, 36.0], "expected": 36.0}, {"input": [-18.0, 36.5], "expected": 36.5}, {"input": [-18.0, 37.0], "expected": 37.0}, {"input": [-18.0, 37.5], "expected": 37.5}, {"input": [-18.0, 38.0], "expected": 38.0}, {"input": [-18.0, 38.5], "expected": 38.5}, {"input": [-18.0, 39.0], "expected": 39.0}, {"input": [-18.0, 39.5], "expected": 39.5}, {"input": [-18.0, 40.0], "expected": 40.0}, {"input": [-18.0, 40.5], "expected": 40.5}, {"input": [-18.0, 41.0], "expected": 41.0}, {"input": [-18.0, 41.5], "expected": 41.5}, {"input": [-18.0, 42.0], "expected": 42.0}, {"input": [-18.0, 42.5], "expected": 42.5}, {"input": [-18.0, 43.0], "expected": 43.0}, {"input": [-18.0, 43.5], "expected": 43.5}, {"input": [-18.0, 44.0], "expected": 44.0}, {"input": [-18.0, 44.5], "expected": 44.5}, {"input": [-18.0, 45.0], "expected": 45.0}, {"input": [-18.0, 45.5], "expected": 45.5}, {"input": [-18.0, 46.0], "expected": 46.0}, {"input": [-18.0, 46.5], "expected": 46.5}, {"input": [-18.0, 47.0], "expected": 47.0}, {"input": [-18.0, 47.5], "expected": 47.5}, {"input": [-18.0, 48.0], "expected": 48.0}, {"input": [-18.0, 48.5], "expected": 48.5}, {"input": [-18.0, 49.0], "expected": 49.0}, {"input": [-18.0, 49.5], "expected": 49.5}, {"input": [-18.0, 50.0], "expected": 50.0}, {"input": [-18.0, 50.5], "expected": 50.5}, {"input": [-18.0, 51.0], "expected": 51.0}, {"input": [-18.0, 51.5], "expected": 51.5}, {"input": [-18.0, 52.0], "expected": 52.0}, {"input": [-18.0, 52.5], "expected": 52.5}, {"input": [-18.0, 53.0], "expected": 53.0}, {"input": [-18.0, 53.5], "expected": 53.5}, {"input": [-18.0, 54.0], "expected": 54.0}, {"input": [-18.0, 54.5], "expected": 54.5}, {"input": [-18.0, 55.0], "expected": 55.0}, {"input": [-18.0, 55.5], "expected": 55.5}, {"input": [-18.0, 56.0], "expected": 56.0}, {"input": [-18.0, 56.5], "expected": 56.5}, {"input": [-18.0, 57.0], "expected": 57.0}, {"input": [-18.0, 57.5], "expected": 57.5}, {"input": [-18.0, 58.0], "expected": 58.0}, {"input": [-18.0, 58.5], "expected": 58.5}, {"input": [-18.0, 59.0], "expected": 59.0}, {"input": [-18.0, 59.5], "expected": 59.5}, {"input": [-18.0, 60.0], "expected": 60.0}, {"input": [-18.0, 60.5], "expected": 60.5}, {"input": [-18.0, 61.0], "expected": 61.0}, {"input": [-18.0, 61.5], "expected": 61.5}, {"input": [-18.0, 62.0], "expected": 62.0}, {"input": [-18.0, 62.5], "expected": 62.5}, {"input": [-18.0, 63.0], "expected": 63.0}, {"input": [-18.0, 63.5], "expected": 63.5}, {"input": [-18.0, 64.0], "expected": 64.0}, {"input": [-18.0, 64.5], "expected": 64.5}, {"input": [-18.0, 65.0], "expected": 65.0}, {"input": [-18.0, 65.5], "expected": 65.5}, {"input": [-18.0, 66.0], "expected": 66.0}, {"input": [-18.0, 66.5], "expected": 66.5}, {"input": [-18.0, 67.0], "expected": 67.0}, {"input": [-18.0, 67.5], "expected": 67.5}, {"input": [-18.0, 68.0], "expected": 68.0}, {"input": [-18.0, 68.5], "expected": 68.5}, {"input": [-18.0, 69.0], "expected": 69.0}, {"input": [-18.0, 69.5], "expected": 69.5}, {"input": [-18.0, 70.0], "expected": 70.0}, {"input": [-18.0, 70.5], "expected": 70.5}, {"input": [-18.0, 71.0], "expected": 71.0}, {"input": [-18.0, 71.5], "expected": 71.5}, {"input": [-18.0, 72.0], "expected": 72.0}, {"input": [-18.0, 72.5], "expected": 72.5}, {"input": [-18.0, 73.0], "expected": 73.0}, {"input": [-18.0, 73.5], "expected": 73.5}, {"input": [-18.0, 74.0], "expected": 74.0}, {"input": [-18.0, 74.5], "expected": 74.5}, {"input": [-18.0, 75.0], "expected": 75.0}, {"input": [-18.0, 75.5], "expected": 75.5}, {"input": [-18.0, 76.0], "expected": 76.0}, {"input": [-18.0, 76.5], "expected": 76.5}, {"input": [-18.0, 77.0], "expected": 77.0}, {"input": [-18.0, 77.5], "expected": 77.5}, {"input": [-18.0, 78.0], "expected": 78.0}, {"input": [-18.0, 78.5], "expected": 78.5}, {"input": [-18.0, 79.0], "expected": 79.0}, {"input": [-18.0, 79.5], "expected": 79.5}, {"input": [-18.0, 80.0], "expected": 80.0}, {"input": [-18.0, 80.5], "expected": 80.5}, {"input": [-18.0, 81.0], "expected": 81.0}, {"input": [-18.0, 81.5], "expected": 81.5}, {"input": [-18.0, 82.0], "expected": 82.0}, {"input": [-18.0, 82.5], "expected": 82.5}, {"input": [-18.0, 83.0], "expected": 83.0}, {"input": [-18.0, 83.5], "expected": 83.5}, {"input": [-18.0, 84.0], "expected": 84.0}, {"input": [-18.0, 84.5], "expected": 84.5}, {"input": [-18.0, 85.0], "expected": 85.0}, {"input": [-18.0, 85.5], "expected": 85.5}, {"input": [-18.0, 86.0], "expected": 86.0}, {"input": [-18.0, 86.5], "expected": 86.5}, {"input": [-18.0, 87.0], "expected": 87.0}, {"input": [-18.0, 87.5], "expected": 87.5}, {"input": [-18.0, 88.0], "expected": 88.0}, {"input": [-18.0, 88.5], "expected": 88.5}, {"input": [-18.0, 89.0], "expected": 89.0}, {"input": [-18.0, 89.5], "expected": 89.5}, {"input": [-18.0, 90.0], "expected": 90.0}, {"input": [-18.0, 90.5], "expected": 90.5}, {"input": [-18.0, 91.0], "expected": 91.0}, {"input": [-18.0, 91.5], "expected": 91.5}, {"input": [-18.0, 92.0], "expected": 92.0}, {"input": [-18.0, 92.5], "expected": 92.5}, {"input": [-18.0, 93.0], "expected": 93.0}, {"input": [-18.0, 93.5], "expected": 93.5}, {"input": [-18.0, 94.0], "expected": 94.0}, {"input": [-18.0, 94.5], "expected": 94.5}, {"input": [-18.0, 95.0], "expected": 95.0}, {"input": [-18.0, 95.5], "expected": 95.5}, {"input": [-18.0, 96.0], "expected": 96.0}, {"input": [-18.0, 96.5], "expected": 96.5}, {"input": [-18.0, 97.0], "expected": 97.0}, {"input": [-18.0, 97.5], "expected": 97.5}, {"input": [-18.0, 98.0], "expected": 98.0}, {"input": [-18.0, 98.5], "expected": 98.5}, {"input": [-18.0, 99.0], "expected": 99.0}, {"input": [-18.0, 99.5], "expected": 99.5}, {"input": [-17.5, -100.0], "expected": -17.5}, {"input": [-17.5, -99.5], "expected": -17.5}, {"input": [-17.5, -99.0], "expected": -17.5}, {"input": [-17.5, -98.5], "expected": -17.5}, {"input": [-17.5, -98.0], "expected": -17.5}, {"input": [-17.5, -97.5], "expected": -17.5}, {"input": [-17.5, -97.0], "expected": -17.5}, {"input": [-17.5, -96.5], "expected": -17.5}, {"input": [-17.5, -96.0], "expected": -17.5}, {"input": [-17.5, -95.5], "expected": -17.5}, {"input": [-17.5, -95.0], "expected": -17.5}, {"input": [-17.5, -94.5], "expected": -17.5}, {"input": [-17.5, -94.0], "expected": -17.5}, {"input": [-17.5, -93.5], "expected": -17.5}, {"input": [-17.5, -93.0], "expected": -17.5}, {"input": [-17.5, -92.5], "expected": -17.5}, {"input": [-17.5, -92.0], "expected": -17.5}, {"input": [-17.5, -91.5], "expected": -17.5}, {"input": [-17.5, -91.0], "expected": -17.5}, {"input": [-17.5, -90.5], "expected": -17.5}, {"input": [-17.5, -90.0], "expected": -17.5}, {"input": [-17.5, -89.5], "expected": -17.5}, {"input": [-17.5, -89.0], "expected": -17.5}, {"input": [-17.5, -88.5], "expected": -17.5}, {"input": [-17.5, -88.0], "expected": -17.5}, {"input": [-17.5, -87.5], "expected": -17.5}, {"input": [-17.5, -87.0], "expected": -17.5}, {"input": [-17.5, -86.5], "expected": -17.5}, {"input": [-17.5, -86.0], "expected": -17.5}, {"input": [-17.5, -85.5], "expected": -17.5}, {"input": [-17.5, -85.0], "expected": -17.5}, {"input": [-17.5, -84.5], "expected": -17.5}, {"input": [-17.5, -84.0], "expected": -17.5}, {"input": [-17.5, -83.5], "expected": -17.5}, {"input": [-17.5, -83.0], "expected": -17.5}, {"input": [-17.5, -82.5], "expected": -17.5}, {"input": [-17.5, -82.0], "expected": -17.5}, {"input": [-17.5, -81.5], "expected": -17.5}, {"input": [-17.5, -81.0], "expected": -17.5}, {"input": [-17.5, -80.5], "expected": -17.5}, {"input": [-17.5, -80.0], "expected": -17.5}, {"input": [-17.5, -79.5], "expected": -17.5}, {"input": [-17.5, -79.0], "expected": -17.5}, {"input": [-17.5, -78.5], "expected": -17.5}, {"input": [-17.5, -78.0], "expected": -17.5}, {"input": [-17.5, -77.5], "expected": -17.5}, {"input": [-17.5, -77.0], "expected": -17.5}, {"input": [-17.5, -76.5], "expected": -17.5}, {"input": [-17.5, -76.0], "expected": -17.5}, {"input": [-17.5, -75.5], "expected": -17.5}, {"input": [-17.5, -75.0], "expected": -17.5}, {"input": [-17.5, -74.5], "expected": -17.5}, {"input": [-17.5, -74.0], "expected": -17.5}, {"input": [-17.5, -73.5], "expected": -17.5}, {"input": [-17.5, -73.0], "expected": -17.5}, {"input": [-17.5, -72.5], "expected": -17.5}, {"input": [-17.5, -72.0], "expected": -17.5}, {"input": [-17.5, -71.5], "expected": -17.5}, {"input": [-17.5, -71.0], "expected": -17.5}, {"input": [-17.5, -70.5], "expected": -17.5}, {"input": [-17.5, -70.0], "expected": -17.5}, {"input": [-17.5, -69.5], "expected": -17.5}, {"input": [-17.5, -69.0], "expected": -17.5}, {"input": [-17.5, -68.5], "expected": -17.5}, {"input": [-17.5, -68.0], "expected": -17.5}, {"input": [-17.5, -67.5], "expected": -17.5}, {"input": [-17.5, -67.0], "expected": -17.5}, {"input": [-17.5, -66.5], "expected": -17.5}, {"input": [-17.5, -66.0], "expected": -17.5}, {"input": [-17.5, -65.5], "expected": -17.5}, {"input": [-17.5, -65.0], "expected": -17.5}, {"input": [-17.5, -64.5], "expected": -17.5}, {"input": [-17.5, -64.0], "expected": -17.5}, {"input": [-17.5, -63.5], "expected": -17.5}, {"input": [-17.5, -63.0], "expected": -17.5}, {"input": [-17.5, -62.5], "expected": -17.5}, {"input": [-17.5, -62.0], "expected": -17.5}, {"input": [-17.5, -61.5], "expected": -17.5}, {"input": [-17.5, -61.0], "expected": -17.5}, {"input": [-17.5, -60.5], "expected": -17.5}, {"input": [-17.5, -60.0], "expected": -17.5}, {"input": [-17.5, -59.5], "expected": -17.5}, {"input": [-17.5, -59.0], "expected": -17.5}, {"input": [-17.5, -58.5], "expected": -17.5}, {"input": [-17.5, -58.0], "expected": -17.5}, {"input": [-17.5, -57.5], "expected": -17.5}, {"input": [-17.5, -57.0], "expected": -17.5}, {"input": [-17.5, -56.5], "expected": -17.5}, {"input": [-17.5, -56.0], "expected": -17.5}, {"input": [-17.5, -55.5], "expected": -17.5}, {"input": [-17.5, -55.0], "expected": -17.5}, {"input": [-17.5, -54.5], "expected": -17.5}, {"input": [-17.5, -54.0], "expected": -17.5}, {"input": [-17.5, -53.5], "expected": -17.5}, {"input": [-17.5, -53.0], "expected": -17.5}, {"input": [-17.5, -52.5], "expected": -17.5}, {"input": [-17.5, -52.0], "expected": -17.5}, {"input": [-17.5, -51.5], "expected": -17.5}, {"input": [-17.5, -51.0], "expected": -17.499999999999996}, {"input": [-17.5, -50.5], "expected": -17.499999999999996}, {"input": [-17.5, -50.0], "expected": -17.499999999999993}, {"input": [-17.5, -49.5], "expected": -17.499999999999986}, {"input": [-17.5, -49.0], "expected": -17.49999999999998}, {"input": [-17.5, -48.5], "expected": -17.499999999999964}, {"input": [-17.5, -48.0], "expected": -17.499999999999943}, {"input": [-17.5, -47.5], "expected": -17.499999999999908}, {"input": [-17.5, -47.0], "expected": -17.499999999999847}, {"input": [-17.5, -46.5], "expected": -17.499999999999744}, {"input": [-17.5, -46.0], "expected": -17.49999999999958}, {"input": [-17.5, -45.5], "expected": -17.499999999999307}, {"input": [-17.5, -45.0], "expected": -17.49999999999886}, {"input": [-17.5, -44.5], "expected": -17.49999999999812}, {"input": [-17.5, -44.0], "expected": -17.499999999996902}, {"input": [-17.5, -43.5], "expected": -17.49999999999489}, {"input": [-17.5, -43.0], "expected": -17.499999999991577}, {"input": [-17.5, -42.5], "expected": -17.499999999986112}, {"input": [-17.5, -42.0], "expected": -17.499999999977103}, {"input": [-17.5, -41.5], "expected": -17.49999999996225}, {"input": [-17.5, -41.0], "expected": -17.49999999993776}, {"input": [-17.5, -40.5], "expected": -17.49999999989738}, {"input": [-17.5, -40.0], "expected": -17.49999999983081}, {"input": [-17.5, -39.5], "expected": -17.49999999972105}, {"input": [-17.5, -39.0], "expected": -17.499999999540094}, {"input": [-17.5, -38.5], "expected": -17.499999999241744}, {"input": [-17.5, -38.0], "expected": -17.499999998749846}, {"input": [-17.5, -37.5], "expected": -17.499999997938847}, {"input": [-17.5, -37.0], "expected": -17.499999996601733}, {"input": [-17.5, -36.5], "expected": -17.499999994397204}, {"input": [-17.5, -36.0], "expected": -17.49999999076255}, {"input": [-17.5, -35.5], "expected": -17.49999998477002}, {"input": [-17.5, -35.0], "expected": -17.49999997489001}, {"input": [-17.5, -34.5], "expected": -17.499999958600625}, {"input": [-17.5, -34.0], "expected": -17.499999931743968}, {"input": [-17.5, -33.5], "expected": -17.49999988746483}, {"input": [-17.5, -33.0], "expected": -17.49999981446088}, {"input": [-17.5, -32.5], "expected": -17.499999694097728}, {"input": [-17.5, -32.0], "expected": -17.499999495652464}, {"input": [-17.5, -31.5], "expected": -17.499999168471625}, {"input": [-17.5, -31.0], "expected": -17.499998629041855}, {"input": [-17.5, -30.5], "expected": -17.499997739673148}, {"input": [-17.5, -30.0], "expected": -17.499996273353773}, {"input": [-17.5, -29.5], "expected": -17.499993855806522}, {"input": [-17.5, -29.0], "expected": -17.49998986995771}, {"input": [-17.5, -28.5], "expected": -17.499983298438682}, {"input": [-17.5, -28.0], "expected": -17.499972463929772}, {"input": [-17.5, -27.5], "expected": -17.499954601100782}, {"input": [-17.5, -27.0], "expected": -17.49992515097137}, {"input": [-17.5, -26.5], "expected": -17.499876597810278}, {"input": [-17.5, -26.0], "expected": -17.499796552327872}, {"input": [-17.5, -25.5], "expected": -17.499664593627106}, {"input": [-17.5, -25.0], "expected": -17.49944706852464}, {"input": [-17.5, -24.5], "expected": -17.499088533546225}, {"input": [-17.5, -24.0], "expected": -17.498497689840246}, {"input": [-17.5, -23.5], "expected": -17.497524314862268}, {"input": [-17.5, -23.0], "expected": -17.495921556729428}, {"input": [-17.5, -22.5], "expected": -17.493284651510884}, {"input": [-17.5, -22.0], "expected": -17.488952255151407}, {"input": [-17.5, -21.5], "expected": -17.48185007208219}, {"input": [-17.5, -21.0], "expected": -17.47024958172738}, {"input": [-17.5, -20.5], "expected": -17.451412648426256}, {"input": [-17.5, -20.0], "expected": -17.42111026570745}, {"input": [-17.5, -19.5], "expected": -17.373071988957026}, {"input": [-17.5, -19.0], "expected": -17.298586722017248}, {"input": [-17.5, -18.5], "expected": -17.186738312481776}, {"input": [-17.5, -18.0], "expected": -17.02592301581989}, {"input": [-17.5, -17.5], "expected": -16.806852819440056}, {"input": [-17.5, -17.0], "expected": -16.52592301581989}, {"input": [-17.5, -16.5], "expected": -16.186738312481776}, {"input": [-17.5, -16.0], "expected": -15.798586722017248}, {"input": [-17.5, -15.5], "expected": -15.373071988957028}, {"input": [-17.5, -15.0], "expected": -14.921110265707451}, {"input": [-17.5, -14.5], "expected": -14.451412648426258}, {"input": [-17.5, -14.0], "expected": -13.97024958172738}, {"input": [-17.5, -13.5], "expected": -13.48185007208219}, {"input": [-17.5, -13.0], "expected": -12.988952255151407}, {"input": [-17.5, -12.5], "expected": -12.493284651510882}, {"input": [-17.5, -12.0], "expected": -11.99592155672943}, {"input": [-17.5, -11.5], "expected": -11.49752431486227}, {"input": [-17.5, -11.0], "expected": -10.998497689840246}, {"input": [-17.5, -10.5], "expected": -10.499088533546226}, {"input": [-17.5, -10.0], "expected": -9.999447068524638}, {"input": [-17.5, -9.5], "expected": -9.499664593627104}, {"input": [-17.5, -9.0], "expected": -8.99979655232787}, {"input": [-17.5, -8.5], "expected": -8.499876597810276}, {"input": [-17.5, -8.0], "expected": -7.999925150971371}, {"input": [-17.5, -7.5], "expected": -7.499954601100783}, {"input": [-17.5, -7.0], "expected": -6.999972463929772}, {"input": [-17.5, -6.5], "expected": -6.499983298438681}, {"input": [-17.5, -6.0], "expected": -5.9999898699577106}, {"input": [-17.5, -5.5], "expected": -5.4999938558065224}, {"input": [-17.5, -5.0], "expected": -4.999996273353772}, {"input": [-17.5, -4.5], "expected": -4.499997739673147}, {"input": [-17.5, -4.0], "expected": -3.9999986290418534}, {"input": [-17.5, -3.5], "expected": -3.4999991684716267}, {"input": [-17.5, -3.0], "expected": -2.9999994956524647}, {"input": [-17.5, -2.5], "expected": -2.4999996940977263}, {"input": [-17.5, -2.0], "expected": -1.999999814460881}, {"input": [-17.5, -1.5], "expected": -1.4999998874648317}, {"input": [-17.5, -1.0], "expected": -0.9999999317439686}, {"input": [-17.5, -0.5], "expected": -0.4999999586006237}, {"input": [-17.5, 0.0], "expected": 2.5109991242183986e-08}, {"input": [-17.5, 0.5], "expected": 0.5000000152299796}, {"input": [-17.5, 1.0], "expected": 1.0000000092374497}, {"input": [-17.5, 1.5], "expected": 1.5000000056027964}, {"input": [-17.5, 2.0], "expected": 2.000000003398268}, {"input": [-17.5, 2.5], "expected": 2.5000000020611535}, {"input": [-17.5, 3.0], "expected": 3.000000001250153}, {"input": [-17.5, 3.5], "expected": 3.500000000758256}, {"input": [-17.5, 4.0], "expected": 4.000000000459906}, {"input": [-17.5, 4.5], "expected": 4.500000000278947}, {"input": [-17.5, 5.0], "expected": 5.00000000016919}, {"input": [-17.5, 5.5], "expected": 5.500000000102618}, {"input": [-17.5, 6.0], "expected": 6.000000000062242}, {"input": [-17.5, 6.5], "expected": 6.500000000037751}, {"input": [-17.5, 7.0], "expected": 7.000000000022897}, {"input": [-17.5, 7.5], "expected": 7.500000000013888}, {"input": [-17.5, 8.0], "expected": 8.000000000008423}, {"input": [-17.5, 8.5], "expected": 8.500000000005109}, {"input": [-17.5, 9.0], "expected": 9.000000000003098}, {"input": [-17.5, 9.5], "expected": 9.50000000000188}, {"input": [-17.5, 10.0], "expected": 10.00000000000114}, {"input": [-17.5, 10.5], "expected": 10.500000000000691}, {"input": [-17.5, 11.0], "expected": 11.00000000000042}, {"input": [-17.5, 11.5], "expected": 11.500000000000254}, {"input": [-17.5, 12.0], "expected": 12.000000000000155}, {"input": [-17.5, 12.5], "expected": 12.500000000000094}, {"input": [-17.5, 13.0], "expected": 13.000000000000057}, {"input": [-17.5, 13.5], "expected": 13.500000000000034}, {"input": [-17.5, 14.0], "expected": 14.000000000000021}, {"input": [-17.5, 14.5], "expected": 14.500000000000012}, {"input": [-17.5, 15.0], "expected": 15.000000000000007}, {"input": [-17.5, 15.5], "expected": 15.500000000000005}, {"input": [-17.5, 16.0], "expected": 16.000000000000004}, {"input": [-17.5, 16.5], "expected": 16.5}, {"input": [-17.5, 17.0], "expected": 17.0}, {"input": [-17.5, 17.5], "expected": 17.5}, {"input": [-17.5, 18.0], "expected": 18.0}, {"input": [-17.5, 18.5], "expected": 18.5}, {"input": [-17.5, 19.0], "expected": 19.0}, {"input": [-17.5, 19.5], "expected": 19.5}, {"input": [-17.5, 20.0], "expected": 20.0}, {"input": [-17.5, 20.5], "expected": 20.5}, {"input": [-17.5, 21.0], "expected": 21.0}, {"input": [-17.5, 21.5], "expected": 21.5}, {"input": [-17.5, 22.0], "expected": 22.0}, {"input": [-17.5, 22.5], "expected": 22.5}, {"input": [-17.5, 23.0], "expected": 23.0}, {"input": [-17.5, 23.5], "expected": 23.5}, {"input": [-17.5, 24.0], "expected": 24.0}, {"input": [-17.5, 24.5], "expected": 24.5}, {"input": [-17.5, 25.0], "expected": 25.0}, {"input": [-17.5, 25.5], "expected": 25.5}, {"input": [-17.5, 26.0], "expected": 26.0}, {"input": [-17.5, 26.5], "expected": 26.5}, {"input": [-17.5, 27.0], "expected": 27.0}, {"input": [-17.5, 27.5], "expected": 27.5}, {"input": [-17.5, 28.0], "expected": 28.0}, {"input": [-17.5, 28.5], "expected": 28.5}, {"input": [-17.5, 29.0], "expected": 29.0}, {"input": [-17.5, 29.5], "expected": 29.5}, {"input": [-17.5, 30.0], "expected": 30.0}, {"input": [-17.5, 30.5], "expected": 30.5}, {"input": [-17.5, 31.0], "expected": 31.0}, {"input": [-17.5, 31.5], "expected": 31.5}, {"input": [-17.5, 32.0], "expected": 32.0}, {"input": [-17.5, 32.5], "expected": 32.5}, {"input": [-17.5, 33.0], "expected": 33.0}, {"input": [-17.5, 33.5], "expected": 33.5}, {"input": [-17.5, 34.0], "expected": 34.0}, {"input": [-17.5, 34.5], "expected": 34.5}, {"input": [-17.5, 35.0], "expected": 35.0}, {"input": [-17.5, 35.5], "expected": 35.5}, {"input": [-17.5, 36.0], "expected": 36.0}, {"input": [-17.5, 36.5], "expected": 36.5}, {"input": [-17.5, 37.0], "expected": 37.0}, {"input": [-17.5, 37.5], "expected": 37.5}, {"input": [-17.5, 38.0], "expected": 38.0}, {"input": [-17.5, 38.5], "expected": 38.5}, {"input": [-17.5, 39.0], "expected": 39.0}, {"input": [-17.5, 39.5], "expected": 39.5}, {"input": [-17.5, 40.0], "expected": 40.0}, {"input": [-17.5, 40.5], "expected": 40.5}, {"input": [-17.5, 41.0], "expected": 41.0}, {"input": [-17.5, 41.5], "expected": 41.5}, {"input": [-17.5, 42.0], "expected": 42.0}, {"input": [-17.5, 42.5], "expected": 42.5}, {"input": [-17.5, 43.0], "expected": 43.0}, {"input": [-17.5, 43.5], "expected": 43.5}, {"input": [-17.5, 44.0], "expected": 44.0}, {"input": [-17.5, 44.5], "expected": 44.5}, {"input": [-17.5, 45.0], "expected": 45.0}, {"input": [-17.5, 45.5], "expected": 45.5}, {"input": [-17.5, 46.0], "expected": 46.0}, {"input": [-17.5, 46.5], "expected": 46.5}, {"input": [-17.5, 47.0], "expected": 47.0}, {"input": [-17.5, 47.5], "expected": 47.5}, {"input": [-17.5, 48.0], "expected": 48.0}, {"input": [-17.5, 48.5], "expected": 48.5}, {"input": [-17.5, 49.0], "expected": 49.0}, {"input": [-17.5, 49.5], "expected": 49.5}, {"input": [-17.5, 50.0], "expected": 50.0}, {"input": [-17.5, 50.5], "expected": 50.5}, {"input": [-17.5, 51.0], "expected": 51.0}, {"input": [-17.5, 51.5], "expected": 51.5}, {"input": [-17.5, 52.0], "expected": 52.0}, {"input": [-17.5, 52.5], "expected": 52.5}, {"input": [-17.5, 53.0], "expected": 53.0}, {"input": [-17.5, 53.5], "expected": 53.5}, {"input": [-17.5, 54.0], "expected": 54.0}, {"input": [-17.5, 54.5], "expected": 54.5}, {"input": [-17.5, 55.0], "expected": 55.0}, {"input": [-17.5, 55.5], "expected": 55.5}, {"input": [-17.5, 56.0], "expected": 56.0}, {"input": [-17.5, 56.5], "expected": 56.5}, {"input": [-17.5, 57.0], "expected": 57.0}, {"input": [-17.5, 57.5], "expected": 57.5}, {"input": [-17.5, 58.0], "expected": 58.0}, {"input": [-17.5, 58.5], "expected": 58.5}, {"input": [-17.5, 59.0], "expected": 59.0}, {"input": [-17.5, 59.5], "expected": 59.5}, {"input": [-17.5, 60.0], "expected": 60.0}, {"input": [-17.5, 60.5], "expected": 60.5}, {"input": [-17.5, 61.0], "expected": 61.0}, {"input": [-17.5, 61.5], "expected": 61.5}, {"input": [-17.5, 62.0], "expected": 62.0}, {"input": [-17.5, 62.5], "expected": 62.5}, {"input": [-17.5, 63.0], "expected": 63.0}, {"input": [-17.5, 63.5], "expected": 63.5}, {"input": [-17.5, 64.0], "expected": 64.0}, {"input": [-17.5, 64.5], "expected": 64.5}, {"input": [-17.5, 65.0], "expected": 65.0}, {"input": [-17.5, 65.5], "expected": 65.5}, {"input": [-17.5, 66.0], "expected": 66.0}, {"input": [-17.5, 66.5], "expected": 66.5}, {"input": [-17.5, 67.0], "expected": 67.0}, {"input": [-17.5, 67.5], "expected": 67.5}, {"input": [-17.5, 68.0], "expected": 68.0}, {"input": [-17.5, 68.5], "expected": 68.5}, {"input": [-17.5, 69.0], "expected": 69.0}, {"input": [-17.5, 69.5], "expected": 69.5}, {"input": [-17.5, 70.0], "expected": 70.0}, {"input": [-17.5, 70.5], "expected": 70.5}, {"input": [-17.5, 71.0], "expected": 71.0}, {"input": [-17.5, 71.5], "expected": 71.5}, {"input": [-17.5, 72.0], "expected": 72.0}, {"input": [-17.5, 72.5], "expected": 72.5}, {"input": [-17.5, 73.0], "expected": 73.0}, {"input": [-17.5, 73.5], "expected": 73.5}, {"input": [-17.5, 74.0], "expected": 74.0}, {"input": [-17.5, 74.5], "expected": 74.5}, {"input": [-17.5, 75.0], "expected": 75.0}, {"input": [-17.5, 75.5], "expected": 75.5}, {"input": [-17.5, 76.0], "expected": 76.0}, {"input": [-17.5, 76.5], "expected": 76.5}, {"input": [-17.5, 77.0], "expected": 77.0}, {"input": [-17.5, 77.5], "expected": 77.5}, {"input": [-17.5, 78.0], "expected": 78.0}, {"input": [-17.5, 78.5], "expected": 78.5}, {"input": [-17.5, 79.0], "expected": 79.0}, {"input": [-17.5, 79.5], "expected": 79.5}, {"input": [-17.5, 80.0], "expected": 80.0}, {"input": [-17.5, 80.5], "expected": 80.5}, {"input": [-17.5, 81.0], "expected": 81.0}, {"input": [-17.5, 81.5], "expected": 81.5}, {"input": [-17.5, 82.0], "expected": 82.0}, {"input": [-17.5, 82.5], "expected": 82.5}, {"input": [-17.5, 83.0], "expected": 83.0}, {"input": [-17.5, 83.5], "expected": 83.5}, {"input": [-17.5, 84.0], "expected": 84.0}, {"input": [-17.5, 84.5], "expected": 84.5}, {"input": [-17.5, 85.0], "expected": 85.0}, {"input": [-17.5, 85.5], "expected": 85.5}, {"input": [-17.5, 86.0], "expected": 86.0}, {"input": [-17.5, 86.5], "expected": 86.5}, {"input": [-17.5, 87.0], "expected": 87.0}, {"input": [-17.5, 87.5], "expected": 87.5}, {"input": [-17.5, 88.0], "expected": 88.0}, {"input": [-17.5, 88.5], "expected": 88.5}, {"input": [-17.5, 89.0], "expected": 89.0}, {"input": [-17.5, 89.5], "expected": 89.5}, {"input": [-17.5, 90.0], "expected": 90.0}, {"input": [-17.5, 90.5], "expected": 90.5}, {"input": [-17.5, 91.0], "expected": 91.0}, {"input": [-17.5, 91.5], "expected": 91.5}, {"input": [-17.5, 92.0], "expected": 92.0}, {"input": [-17.5, 92.5], "expected": 92.5}, {"input": [-17.5, 93.0], "expected": 93.0}, {"input": [-17.5, 93.5], "expected": 93.5}, {"input": [-17.5, 94.0], "expected": 94.0}, {"input": [-17.5, 94.5], "expected": 94.5}, {"input": [-17.5, 95.0], "expected": 95.0}, {"input": [-17.5, 95.5], "expected": 95.5}, {"input": [-17.5, 96.0], "expected": 96.0}, {"input": [-17.5, 96.5], "expected": 96.5}, {"input": [-17.5, 97.0], "expected": 97.0}, {"input": [-17.5, 97.5], "expected": 97.5}, {"input": [-17.5, 98.0], "expected": 98.0}, {"input": [-17.5, 98.5], "expected": 98.5}, {"input": [-17.5, 99.0], "expected": 99.0}, {"input": [-17.5, 99.5], "expected": 99.5}, {"input": [-17.0, -100.0], "expected": -17.0}, {"input": [-17.0, -99.5], "expected": -17.0}, {"input": [-17.0, -99.0], "expected": -17.0}, {"input": [-17.0, -98.5], "expected": -17.0}, {"input": [-17.0, -98.0], "expected": -17.0}, {"input": [-17.0, -97.5], "expected": -17.0}, {"input": [-17.0, -97.0], "expected": -17.0}, {"input": [-17.0, -96.5], "expected": -17.0}, {"input": [-17.0, -96.0], "expected": -17.0}, {"input": [-17.0, -95.5], "expected": -17.0}, {"input": [-17.0, -95.0], "expected": -17.0}, {"input": [-17.0, -94.5], "expected": -17.0}, {"input": [-17.0, -94.0], "expected": -17.0}, {"input": [-17.0, -93.5], "expected": -17.0}, {"input": [-17.0, -93.0], "expected": -17.0}, {"input": [-17.0, -92.5], "expected": -17.0}, {"input": [-17.0, -92.0], "expected": -17.0}, {"input": [-17.0, -91.5], "expected": -17.0}, {"input": [-17.0, -91.0], "expected": -17.0}, {"input": [-17.0, -90.5], "expected": -17.0}, {"input": [-17.0, -90.0], "expected": -17.0}, {"input": [-17.0, -89.5], "expected": -17.0}, {"input": [-17.0, -89.0], "expected": -17.0}, {"input": [-17.0, -88.5], "expected": -17.0}, {"input": [-17.0, -88.0], "expected": -17.0}, {"input": [-17.0, -87.5], "expected": -17.0}, {"input": [-17.0, -87.0], "expected": -17.0}, {"input": [-17.0, -86.5], "expected": -17.0}, {"input": [-17.0, -86.0], "expected": -17.0}, {"input": [-17.0, -85.5], "expected": -17.0}, {"input": [-17.0, -85.0], "expected": -17.0}, {"input": [-17.0, -84.5], "expected": -17.0}, {"input": [-17.0, -84.0], "expected": -17.0}, {"input": [-17.0, -83.5], "expected": -17.0}, {"input": [-17.0, -83.0], "expected": -17.0}, {"input": [-17.0, -82.5], "expected": -17.0}, {"input": [-17.0, -82.0], "expected": -17.0}, {"input": [-17.0, -81.5], "expected": -17.0}, {"input": [-17.0, -81.0], "expected": -17.0}, {"input": [-17.0, -80.5], "expected": -17.0}, {"input": [-17.0, -80.0], "expected": -17.0}, {"input": [-17.0, -79.5], "expected": -17.0}, {"input": [-17.0, -79.0], "expected": -17.0}, {"input": [-17.0, -78.5], "expected": -17.0}, {"input": [-17.0, -78.0], "expected": -17.0}, {"input": [-17.0, -77.5], "expected": -17.0}, {"input": [-17.0, -77.0], "expected": -17.0}, {"input": [-17.0, -76.5], "expected": -17.0}, {"input": [-17.0, -76.0], "expected": -17.0}, {"input": [-17.0, -75.5], "expected": -17.0}, {"input": [-17.0, -75.0], "expected": -17.0}, {"input": [-17.0, -74.5], "expected": -17.0}, {"input": [-17.0, -74.0], "expected": -17.0}, {"input": [-17.0, -73.5], "expected": -17.0}, {"input": [-17.0, -73.0], "expected": -17.0}, {"input": [-17.0, -72.5], "expected": -17.0}, {"input": [-17.0, -72.0], "expected": -17.0}, {"input": [-17.0, -71.5], "expected": -17.0}, {"input": [-17.0, -71.0], "expected": -17.0}, {"input": [-17.0, -70.5], "expected": -17.0}, {"input": [-17.0, -70.0], "expected": -17.0}, {"input": [-17.0, -69.5], "expected": -17.0}, {"input": [-17.0, -69.0], "expected": -17.0}, {"input": [-17.0, -68.5], "expected": -17.0}, {"input": [-17.0, -68.0], "expected": -17.0}, {"input": [-17.0, -67.5], "expected": -17.0}, {"input": [-17.0, -67.0], "expected": -17.0}, {"input": [-17.0, -66.5], "expected": -17.0}, {"input": [-17.0, -66.0], "expected": -17.0}, {"input": [-17.0, -65.5], "expected": -17.0}, {"input": [-17.0, -65.0], "expected": -17.0}, {"input": [-17.0, -64.5], "expected": -17.0}, {"input": [-17.0, -64.0], "expected": -17.0}, {"input": [-17.0, -63.5], "expected": -17.0}, {"input": [-17.0, -63.0], "expected": -17.0}, {"input": [-17.0, -62.5], "expected": -17.0}, {"input": [-17.0, -62.0], "expected": -17.0}, {"input": [-17.0, -61.5], "expected": -17.0}, {"input": [-17.0, -61.0], "expected": -17.0}, {"input": [-17.0, -60.5], "expected": -17.0}, {"input": [-17.0, -60.0], "expected": -17.0}, {"input": [-17.0, -59.5], "expected": -17.0}, {"input": [-17.0, -59.0], "expected": -17.0}, {"input": [-17.0, -58.5], "expected": -17.0}, {"input": [-17.0, -58.0], "expected": -17.0}, {"input": [-17.0, -57.5], "expected": -17.0}, {"input": [-17.0, -57.0], "expected": -17.0}, {"input": [-17.0, -56.5], "expected": -17.0}, {"input": [-17.0, -56.0], "expected": -17.0}, {"input": [-17.0, -55.5], "expected": -17.0}, {"input": [-17.0, -55.0], "expected": -17.0}, {"input": [-17.0, -54.5], "expected": -17.0}, {"input": [-17.0, -54.0], "expected": -17.0}, {"input": [-17.0, -53.5], "expected": -17.0}, {"input": [-17.0, -53.0], "expected": -17.0}, {"input": [-17.0, -52.5], "expected": -17.0}, {"input": [-17.0, -52.0], "expected": -17.0}, {"input": [-17.0, -51.5], "expected": -17.0}, {"input": [-17.0, -51.0], "expected": -17.0}, {"input": [-17.0, -50.5], "expected": -16.999999999999996}, {"input": [-17.0, -50.0], "expected": -16.999999999999996}, {"input": [-17.0, -49.5], "expected": -16.999999999999993}, {"input": [-17.0, -49.0], "expected": -16.999999999999986}, {"input": [-17.0, -48.5], "expected": -16.99999999999998}, {"input": [-17.0, -48.0], "expected": -16.999999999999964}, {"input": [-17.0, -47.5], "expected": -16.999999999999943}, {"input": [-17.0, -47.0], "expected": -16.999999999999908}, {"input": [-17.0, -46.5], "expected": -16.999999999999847}, {"input": [-17.0, -46.0], "expected": -16.999999999999744}, {"input": [-17.0, -45.5], "expected": -16.99999999999958}, {"input": [-17.0, -45.0], "expected": -16.999999999999307}, {"input": [-17.0, -44.5], "expected": -16.99999999999886}, {"input": [-17.0, -44.0], "expected": -16.99999999999812}, {"input": [-17.0, -43.5], "expected": -16.999999999996902}, {"input": [-17.0, -43.0], "expected": -16.99999999999489}, {"input": [-17.0, -42.5], "expected": -16.999999999991577}, {"input": [-17.0, -42.0], "expected": -16.999999999986112}, {"input": [-17.0, -41.5], "expected": -16.999999999977103}, {"input": [-17.0, -41.0], "expected": -16.99999999996225}, {"input": [-17.0, -40.5], "expected": -16.99999999993776}, {"input": [-17.0, -40.0], "expected": -16.99999999989738}, {"input": [-17.0, -39.5], "expected": -16.99999999983081}, {"input": [-17.0, -39.0], "expected": -16.99999999972105}, {"input": [-17.0, -38.5], "expected": -16.999999999540094}, {"input": [-17.0, -38.0], "expected": -16.999999999241744}, {"input": [-17.0, -37.5], "expected": -16.999999998749846}, {"input": [-17.0, -37.0], "expected": -16.999999997938847}, {"input": [-17.0, -36.5], "expected": -16.999999996601733}, {"input": [-17.0, -36.0], "expected": -16.999999994397204}, {"input": [-17.0, -35.5], "expected": -16.99999999076255}, {"input": [-17.0, -35.0], "expected": -16.99999998477002}, {"input": [-17.0, -34.5], "expected": -16.99999997489001}, {"input": [-17.0, -34.0], "expected": -16.999999958600625}, {"input": [-17.0, -33.5], "expected": -16.999999931743968}, {"input": [-17.0, -33.0], "expected": -16.99999988746483}, {"input": [-17.0, -32.5], "expected": -16.99999981446088}, {"input": [-17.0, -32.0], "expected": -16.999999694097728}, {"input": [-17.0, -31.5], "expected": -16.999999495652464}, {"input": [-17.0, -31.0], "expected": -16.999999168471625}, {"input": [-17.0, -30.5], "expected": -16.999998629041855}, {"input": [-17.0, -30.0], "expected": -16.999997739673148}, {"input": [-17.0, -29.5], "expected": -16.999996273353773}, {"input": [-17.0, -29.0], "expected": -16.999993855806522}, {"input": [-17.0, -28.5], "expected": -16.99998986995771}, {"input": [-17.0, -28.0], "expected": -16.999983298438682}, {"input": [-17.0, -27.5], "expected": -16.999972463929772}, {"input": [-17.0, -27.0], "expected": -16.999954601100782}, {"input": [-17.0, -26.5], "expected": -16.99992515097137}, {"input": [-17.0, -26.0], "expected": -16.999876597810278}, {"input": [-17.0, -25.5], "expected": -16.999796552327872}, {"input": [-17.0, -25.0], "expected": -16.999664593627106}, {"input": [-17.0, -24.5], "expected": -16.99944706852464}, {"input": [-17.0, -24.0], "expected": -16.999088533546225}, {"input": [-17.0, -23.5], "expected": -16.998497689840246}, {"input": [-17.0, -23.0], "expected": -16.997524314862268}, {"input": [-17.0, -22.5], "expected": -16.995921556729428}, {"input": [-17.0, -22.0], "expected": -16.993284651510884}, {"input": [-17.0, -21.5], "expected": -16.988952255151407}, {"input": [-17.0, -21.0], "expected": -16.98185007208219}, {"input": [-17.0, -20.5], "expected": -16.97024958172738}, {"input": [-17.0, -20.0], "expected": -16.951412648426256}, {"input": [-17.0, -19.5], "expected": -16.92111026570745}, {"input": [-17.0, -19.0], "expected": -16.873071988957026}, {"input": [-17.0, -18.5], "expected": -16.798586722017248}, {"input": [-17.0, -18.0], "expected": -16.686738312481776}, {"input": [-17.0, -17.5], "expected": -16.52592301581989}, {"input": [-17.0, -17.0], "expected": -16.306852819440056}, {"input": [-17.0, -16.5], "expected": -16.02592301581989}, {"input": [-17.0, -16.0], "expected": -15.686738312481777}, {"input": [-17.0, -15.5], "expected": -15.298586722017248}, {"input": [-17.0, -15.0], "expected": -14.873071988957028}, {"input": [-17.0, -14.5], "expected": -14.421110265707451}, {"input": [-17.0, -14.0], "expected": -13.951412648426258}, {"input": [-17.0, -13.5], "expected": -13.47024958172738}, {"input": [-17.0, -13.0], "expected": -12.98185007208219}, {"input": [-17.0, -12.5], "expected": -12.488952255151407}, {"input": [-17.0, -12.0], "expected": -11.993284651510882}, {"input": [-17.0, -11.5], "expected": -11.49592155672943}, {"input": [-17.0, -11.0], "expected": -10.99752431486227}, {"input": [-17.0, -10.5], "expected": -10.498497689840246}, {"input": [-17.0, -10.0], "expected": -9.999088533546226}, {"input": [-17.0, -9.5], "expected": -9.499447068524638}, {"input": [-17.0, -9.0], "expected": -8.999664593627104}, {"input": [-17.0, -8.5], "expected": -8.49979655232787}, {"input": [-17.0, -8.0], "expected": -7.999876597810276}, {"input": [-17.0, -7.5], "expected": -7.499925150971371}, {"input": [-17.0, -7.0], "expected": -6.999954601100783}, {"input": [-17.0, -6.5], "expected": -6.499972463929772}, {"input": [-17.0, -6.0], "expected": -5.999983298438681}, {"input": [-17.0, -5.5], "expected": -5.4999898699577106}, {"input": [-17.0, -5.0], "expected": -4.9999938558065224}, {"input": [-17.0, -4.5], "expected": -4.499996273353772}, {"input": [-17.0, -4.0], "expected": -3.9999977396731476}, {"input": [-17.0, -3.5], "expected": -3.4999986290418534}, {"input": [-17.0, -3.0], "expected": -2.9999991684716267}, {"input": [-17.0, -2.5], "expected": -2.4999994956524647}, {"input": [-17.0, -2.0], "expected": -1.9999996940977263}, {"input": [-17.0, -1.5], "expected": -1.499999814460881}, {"input": [-17.0, -1.0], "expected": -0.9999998874648316}, {"input": [-17.0, -0.5], "expected": -0.49999993174396856}, {"input": [-17.0, 0.0], "expected": 4.139937633089748e-08}, {"input": [-17.0, 0.5], "expected": 0.5000000251099912}, {"input": [-17.0, 1.0], "expected": 1.0000000152299797}, {"input": [-17.0, 1.5], "expected": 1.5000000092374497}, {"input": [-17.0, 2.0], "expected": 2.0000000056027964}, {"input": [-17.0, 2.5], "expected": 2.500000003398268}, {"input": [-17.0, 3.0], "expected": 3.0000000020611535}, {"input": [-17.0, 3.5], "expected": 3.500000001250153}, {"input": [-17.0, 4.0], "expected": 4.000000000758256}, {"input": [-17.0, 4.5], "expected": 4.500000000459906}, {"input": [-17.0, 5.0], "expected": 5.000000000278947}, {"input": [-17.0, 5.5], "expected": 5.50000000016919}, {"input": [-17.0, 6.0], "expected": 6.000000000102618}, {"input": [-17.0, 6.5], "expected": 6.500000000062242}, {"input": [-17.0, 7.0], "expected": 7.000000000037751}, {"input": [-17.0, 7.5], "expected": 7.500000000022897}, {"input": [-17.0, 8.0], "expected": 8.000000000013888}, {"input": [-17.0, 8.5], "expected": 8.500000000008423}, {"input": [-17.0, 9.0], "expected": 9.000000000005109}, {"input": [-17.0, 9.5], "expected": 9.500000000003098}, {"input": [-17.0, 10.0], "expected": 10.00000000000188}, {"input": [-17.0, 10.5], "expected": 10.50000000000114}, {"input": [-17.0, 11.0], "expected": 11.000000000000691}, {"input": [-17.0, 11.5], "expected": 11.50000000000042}, {"input": [-17.0, 12.0], "expected": 12.000000000000254}, {"input": [-17.0, 12.5], "expected": 12.500000000000155}, {"input": [-17.0, 13.0], "expected": 13.000000000000094}, {"input": [-17.0, 13.5], "expected": 13.500000000000057}, {"input": [-17.0, 14.0], "expected": 14.000000000000034}, {"input": [-17.0, 14.5], "expected": 14.500000000000021}, {"input": [-17.0, 15.0], "expected": 15.000000000000012}, {"input": [-17.0, 15.5], "expected": 15.500000000000007}, {"input": [-17.0, 16.0], "expected": 16.000000000000004}, {"input": [-17.0, 16.5], "expected": 16.500000000000004}, {"input": [-17.0, 17.0], "expected": 17.0}, {"input": [-17.0, 17.5], "expected": 17.5}, {"input": [-17.0, 18.0], "expected": 18.0}, {"input": [-17.0, 18.5], "expected": 18.5}, {"input": [-17.0, 19.0], "expected": 19.0}, {"input": [-17.0, 19.5], "expected": 19.5}, {"input": [-17.0, 20.0], "expected": 20.0}, {"input": [-17.0, 20.5], "expected": 20.5}, {"input": [-17.0, 21.0], "expected": 21.0}, {"input": [-17.0, 21.5], "expected": 21.5}, {"input": [-17.0, 22.0], "expected": 22.0}, {"input": [-17.0, 22.5], "expected": 22.5}, {"input": [-17.0, 23.0], "expected": 23.0}, {"input": [-17.0, 23.5], "expected": 23.5}, {"input": [-17.0, 24.0], "expected": 24.0}, {"input": [-17.0, 24.5], "expected": 24.5}, {"input": [-17.0, 25.0], "expected": 25.0}, {"input": [-17.0, 25.5], "expected": 25.5}, {"input": [-17.0, 26.0], "expected": 26.0}, {"input": [-17.0, 26.5], "expected": 26.5}, {"input": [-17.0, 27.0], "expected": 27.0}, {"input": [-17.0, 27.5], "expected": 27.5}, {"input": [-17.0, 28.0], "expected": 28.0}, {"input": [-17.0, 28.5], "expected": 28.5}, {"input": [-17.0, 29.0], "expected": 29.0}, {"input": [-17.0, 29.5], "expected": 29.5}, {"input": [-17.0, 30.0], "expected": 30.0}, {"input": [-17.0, 30.5], "expected": 30.5}, {"input": [-17.0, 31.0], "expected": 31.0}, {"input": [-17.0, 31.5], "expected": 31.5}, {"input": [-17.0, 32.0], "expected": 32.0}, {"input": [-17.0, 32.5], "expected": 32.5}, {"input": [-17.0, 33.0], "expected": 33.0}, {"input": [-17.0, 33.5], "expected": 33.5}, {"input": [-17.0, 34.0], "expected": 34.0}, {"input": [-17.0, 34.5], "expected": 34.5}, {"input": [-17.0, 35.0], "expected": 35.0}, {"input": [-17.0, 35.5], "expected": 35.5}, {"input": [-17.0, 36.0], "expected": 36.0}, {"input": [-17.0, 36.5], "expected": 36.5}, {"input": [-17.0, 37.0], "expected": 37.0}, {"input": [-17.0, 37.5], "expected": 37.5}, {"input": [-17.0, 38.0], "expected": 38.0}, {"input": [-17.0, 38.5], "expected": 38.5}, {"input": [-17.0, 39.0], "expected": 39.0}, {"input": [-17.0, 39.5], "expected": 39.5}, {"input": [-17.0, 40.0], "expected": 40.0}, {"input": [-17.0, 40.5], "expected": 40.5}, {"input": [-17.0, 41.0], "expected": 41.0}, {"input": [-17.0, 41.5], "expected": 41.5}, {"input": [-17.0, 42.0], "expected": 42.0}, {"input": [-17.0, 42.5], "expected": 42.5}, {"input": [-17.0, 43.0], "expected": 43.0}, {"input": [-17.0, 43.5], "expected": 43.5}, {"input": [-17.0, 44.0], "expected": 44.0}, {"input": [-17.0, 44.5], "expected": 44.5}, {"input": [-17.0, 45.0], "expected": 45.0}, {"input": [-17.0, 45.5], "expected": 45.5}, {"input": [-17.0, 46.0], "expected": 46.0}, {"input": [-17.0, 46.5], "expected": 46.5}, {"input": [-17.0, 47.0], "expected": 47.0}, {"input": [-17.0, 47.5], "expected": 47.5}, {"input": [-17.0, 48.0], "expected": 48.0}, {"input": [-17.0, 48.5], "expected": 48.5}, {"input": [-17.0, 49.0], "expected": 49.0}, {"input": [-17.0, 49.5], "expected": 49.5}, {"input": [-17.0, 50.0], "expected": 50.0}, {"input": [-17.0, 50.5], "expected": 50.5}, {"input": [-17.0, 51.0], "expected": 51.0}, {"input": [-17.0, 51.5], "expected": 51.5}, {"input": [-17.0, 52.0], "expected": 52.0}, {"input": [-17.0, 52.5], "expected": 52.5}, {"input": [-17.0, 53.0], "expected": 53.0}, {"input": [-17.0, 53.5], "expected": 53.5}, {"input": [-17.0, 54.0], "expected": 54.0}, {"input": [-17.0, 54.5], "expected": 54.5}, {"input": [-17.0, 55.0], "expected": 55.0}, {"input": [-17.0, 55.5], "expected": 55.5}, {"input": [-17.0, 56.0], "expected": 56.0}, {"input": [-17.0, 56.5], "expected": 56.5}, {"input": [-17.0, 57.0], "expected": 57.0}, {"input": [-17.0, 57.5], "expected": 57.5}, {"input": [-17.0, 58.0], "expected": 58.0}, {"input": [-17.0, 58.5], "expected": 58.5}, {"input": [-17.0, 59.0], "expected": 59.0}, {"input": [-17.0, 59.5], "expected": 59.5}, {"input": [-17.0, 60.0], "expected": 60.0}, {"input": [-17.0, 60.5], "expected": 60.5}, {"input": [-17.0, 61.0], "expected": 61.0}, {"input": [-17.0, 61.5], "expected": 61.5}, {"input": [-17.0, 62.0], "expected": 62.0}, {"input": [-17.0, 62.5], "expected": 62.5}, {"input": [-17.0, 63.0], "expected": 63.0}, {"input": [-17.0, 63.5], "expected": 63.5}, {"input": [-17.0, 64.0], "expected": 64.0}, {"input": [-17.0, 64.5], "expected": 64.5}, {"input": [-17.0, 65.0], "expected": 65.0}, {"input": [-17.0, 65.5], "expected": 65.5}, {"input": [-17.0, 66.0], "expected": 66.0}, {"input": [-17.0, 66.5], "expected": 66.5}, {"input": [-17.0, 67.0], "expected": 67.0}, {"input": [-17.0, 67.5], "expected": 67.5}, {"input": [-17.0, 68.0], "expected": 68.0}, {"input": [-17.0, 68.5], "expected": 68.5}, {"input": [-17.0, 69.0], "expected": 69.0}, {"input": [-17.0, 69.5], "expected": 69.5}, {"input": [-17.0, 70.0], "expected": 70.0}, {"input": [-17.0, 70.5], "expected": 70.5}, {"input": [-17.0, 71.0], "expected": 71.0}, {"input": [-17.0, 71.5], "expected": 71.5}, {"input": [-17.0, 72.0], "expected": 72.0}, {"input": [-17.0, 72.5], "expected": 72.5}, {"input": [-17.0, 73.0], "expected": 73.0}, {"input": [-17.0, 73.5], "expected": 73.5}, {"input": [-17.0, 74.0], "expected": 74.0}, {"input": [-17.0, 74.5], "expected": 74.5}, {"input": [-17.0, 75.0], "expected": 75.0}, {"input": [-17.0, 75.5], "expected": 75.5}, {"input": [-17.0, 76.0], "expected": 76.0}, {"input": [-17.0, 76.5], "expected": 76.5}, {"input": [-17.0, 77.0], "expected": 77.0}, {"input": [-17.0, 77.5], "expected": 77.5}, {"input": [-17.0, 78.0], "expected": 78.0}, {"input": [-17.0, 78.5], "expected": 78.5}, {"input": [-17.0, 79.0], "expected": 79.0}, {"input": [-17.0, 79.5], "expected": 79.5}, {"input": [-17.0, 80.0], "expected": 80.0}, {"input": [-17.0, 80.5], "expected": 80.5}, {"input": [-17.0, 81.0], "expected": 81.0}, {"input": [-17.0, 81.5], "expected": 81.5}, {"input": [-17.0, 82.0], "expected": 82.0}, {"input": [-17.0, 82.5], "expected": 82.5}, {"input": [-17.0, 83.0], "expected": 83.0}, {"input": [-17.0, 83.5], "expected": 83.5}, {"input": [-17.0, 84.0], "expected": 84.0}, {"input": [-17.0, 84.5], "expected": 84.5}, {"input": [-17.0, 85.0], "expected": 85.0}, {"input": [-17.0, 85.5], "expected": 85.5}, {"input": [-17.0, 86.0], "expected": 86.0}, {"input": [-17.0, 86.5], "expected": 86.5}, {"input": [-17.0, 87.0], "expected": 87.0}, {"input": [-17.0, 87.5], "expected": 87.5}, {"input": [-17.0, 88.0], "expected": 88.0}, {"input": [-17.0, 88.5], "expected": 88.5}, {"input": [-17.0, 89.0], "expected": 89.0}, {"input": [-17.0, 89.5], "expected": 89.5}, {"input": [-17.0, 90.0], "expected": 90.0}, {"input": [-17.0, 90.5], "expected": 90.5}, {"input": [-17.0, 91.0], "expected": 91.0}, {"input": [-17.0, 91.5], "expected": 91.5}, {"input": [-17.0, 92.0], "expected": 92.0}, {"input": [-17.0, 92.5], "expected": 92.5}, {"input": [-17.0, 93.0], "expected": 93.0}, {"input": [-17.0, 93.5], "expected": 93.5}, {"input": [-17.0, 94.0], "expected": 94.0}, {"input": [-17.0, 94.5], "expected": 94.5}, {"input": [-17.0, 95.0], "expected": 95.0}, {"input": [-17.0, 95.5], "expected": 95.5}, {"input": [-17.0, 96.0], "expected": 96.0}, {"input": [-17.0, 96.5], "expected": 96.5}, {"input": [-17.0, 97.0], "expected": 97.0}, {"input": [-17.0, 97.5], "expected": 97.5}, {"input": [-17.0, 98.0], "expected": 98.0}, {"input": [-17.0, 98.5], "expected": 98.5}, {"input": [-17.0, 99.0], "expected": 99.0}, {"input": [-17.0, 99.5], "expected": 99.5}, {"input": [-16.5, -100.0], "expected": -16.5}, {"input": [-16.5, -99.5], "expected": -16.5}, {"input": [-16.5, -99.0], "expected": -16.5}, {"input": [-16.5, -98.5], "expected": -16.5}, {"input": [-16.5, -98.0], "expected": -16.5}, {"input": [-16.5, -97.5], "expected": -16.5}, {"input": [-16.5, -97.0], "expected": -16.5}, {"input": [-16.5, -96.5], "expected": -16.5}, {"input": [-16.5, -96.0], "expected": -16.5}, {"input": [-16.5, -95.5], "expected": -16.5}, {"input": [-16.5, -95.0], "expected": -16.5}, {"input": [-16.5, -94.5], "expected": -16.5}, {"input": [-16.5, -94.0], "expected": -16.5}, {"input": [-16.5, -93.5], "expected": -16.5}, {"input": [-16.5, -93.0], "expected": -16.5}, {"input": [-16.5, -92.5], "expected": -16.5}, {"input": [-16.5, -92.0], "expected": -16.5}, {"input": [-16.5, -91.5], "expected": -16.5}, {"input": [-16.5, -91.0], "expected": -16.5}, {"input": [-16.5, -90.5], "expected": -16.5}, {"input": [-16.5, -90.0], "expected": -16.5}, {"input": [-16.5, -89.5], "expected": -16.5}, {"input": [-16.5, -89.0], "expected": -16.5}, {"input": [-16.5, -88.5], "expected": -16.5}, {"input": [-16.5, -88.0], "expected": -16.5}, {"input": [-16.5, -87.5], "expected": -16.5}, {"input": [-16.5, -87.0], "expected": -16.5}, {"input": [-16.5, -86.5], "expected": -16.5}, {"input": [-16.5, -86.0], "expected": -16.5}, {"input": [-16.5, -85.5], "expected": -16.5}, {"input": [-16.5, -85.0], "expected": -16.5}, {"input": [-16.5, -84.5], "expected": -16.5}, {"input": [-16.5, -84.0], "expected": -16.5}, {"input": [-16.5, -83.5], "expected": -16.5}, {"input": [-16.5, -83.0], "expected": -16.5}, {"input": [-16.5, -82.5], "expected": -16.5}, {"input": [-16.5, -82.0], "expected": -16.5}, {"input": [-16.5, -81.5], "expected": -16.5}, {"input": [-16.5, -81.0], "expected": -16.5}, {"input": [-16.5, -80.5], "expected": -16.5}, {"input": [-16.5, -80.0], "expected": -16.5}, {"input": [-16.5, -79.5], "expected": -16.5}, {"input": [-16.5, -79.0], "expected": -16.5}, {"input": [-16.5, -78.5], "expected": -16.5}, {"input": [-16.5, -78.0], "expected": -16.5}, {"input": [-16.5, -77.5], "expected": -16.5}, {"input": [-16.5, -77.0], "expected": -16.5}, {"input": [-16.5, -76.5], "expected": -16.5}, {"input": [-16.5, -76.0], "expected": -16.5}, {"input": [-16.5, -75.5], "expected": -16.5}, {"input": [-16.5, -75.0], "expected": -16.5}, {"input": [-16.5, -74.5], "expected": -16.5}, {"input": [-16.5, -74.0], "expected": -16.5}, {"input": [-16.5, -73.5], "expected": -16.5}, {"input": [-16.5, -73.0], "expected": -16.5}, {"input": [-16.5, -72.5], "expected": -16.5}, {"input": [-16.5, -72.0], "expected": -16.5}, {"input": [-16.5, -71.5], "expected": -16.5}, {"input": [-16.5, -71.0], "expected": -16.5}, {"input": [-16.5, -70.5], "expected": -16.5}, {"input": [-16.5, -70.0], "expected": -16.5}, {"input": [-16.5, -69.5], "expected": -16.5}, {"input": [-16.5, -69.0], "expected": -16.5}, {"input": [-16.5, -68.5], "expected": -16.5}, {"input": [-16.5, -68.0], "expected": -16.5}, {"input": [-16.5, -67.5], "expected": -16.5}, {"input": [-16.5, -67.0], "expected": -16.5}, {"input": [-16.5, -66.5], "expected": -16.5}, {"input": [-16.5, -66.0], "expected": -16.5}, {"input": [-16.5, -65.5], "expected": -16.5}, {"input": [-16.5, -65.0], "expected": -16.5}, {"input": [-16.5, -64.5], "expected": -16.5}, {"input": [-16.5, -64.0], "expected": -16.5}, {"input": [-16.5, -63.5], "expected": -16.5}, {"input": [-16.5, -63.0], "expected": -16.5}, {"input": [-16.5, -62.5], "expected": -16.5}, {"input": [-16.5, -62.0], "expected": -16.5}, {"input": [-16.5, -61.5], "expected": -16.5}, {"input": [-16.5, -61.0], "expected": -16.5}, {"input": [-16.5, -60.5], "expected": -16.5}, {"input": [-16.5, -60.0], "expected": -16.5}, {"input": [-16.5, -59.5], "expected": -16.5}, {"input": [-16.5, -59.0], "expected": -16.5}, {"input": [-16.5, -58.5], "expected": -16.5}, {"input": [-16.5, -58.0], "expected": -16.5}, {"input": [-16.5, -57.5], "expected": -16.5}, {"input": [-16.5, -57.0], "expected": -16.5}, {"input": [-16.5, -56.5], "expected": -16.5}, {"input": [-16.5, -56.0], "expected": -16.5}, {"input": [-16.5, -55.5], "expected": -16.5}, {"input": [-16.5, -55.0], "expected": -16.5}, {"input": [-16.5, -54.5], "expected": -16.5}, {"input": [-16.5, -54.0], "expected": -16.5}, {"input": [-16.5, -53.5], "expected": -16.5}, {"input": [-16.5, -53.0], "expected": -16.5}, {"input": [-16.5, -52.5], "expected": -16.5}, {"input": [-16.5, -52.0], "expected": -16.5}, {"input": [-16.5, -51.5], "expected": -16.5}, {"input": [-16.5, -51.0], "expected": -16.5}, {"input": [-16.5, -50.5], "expected": -16.5}, {"input": [-16.5, -50.0], "expected": -16.499999999999996}, {"input": [-16.5, -49.5], "expected": -16.499999999999996}, {"input": [-16.5, -49.0], "expected": -16.499999999999993}, {"input": [-16.5, -48.5], "expected": -16.499999999999986}, {"input": [-16.5, -48.0], "expected": -16.49999999999998}, {"input": [-16.5, -47.5], "expected": -16.499999999999964}, {"input": [-16.5, -47.0], "expected": -16.499999999999943}, {"input": [-16.5, -46.5], "expected": -16.499999999999908}, {"input": [-16.5, -46.0], "expected": -16.499999999999847}, {"input": [-16.5, -45.5], "expected": -16.499999999999744}, {"input": [-16.5, -45.0], "expected": -16.49999999999958}, {"input": [-16.5, -44.5], "expected": -16.499999999999307}, {"input": [-16.5, -44.0], "expected": -16.49999999999886}, {"input": [-16.5, -43.5], "expected": -16.49999999999812}, {"input": [-16.5, -43.0], "expected": -16.499999999996902}, {"input": [-16.5, -42.5], "expected": -16.49999999999489}, {"input": [-16.5, -42.0], "expected": -16.499999999991577}, {"input": [-16.5, -41.5], "expected": -16.499999999986112}, {"input": [-16.5, -41.0], "expected": -16.499999999977103}, {"input": [-16.5, -40.5], "expected": -16.49999999996225}, {"input": [-16.5, -40.0], "expected": -16.49999999993776}, {"input": [-16.5, -39.5], "expected": -16.49999999989738}, {"input": [-16.5, -39.0], "expected": -16.49999999983081}, {"input": [-16.5, -38.5], "expected": -16.49999999972105}, {"input": [-16.5, -38.0], "expected": -16.499999999540094}, {"input": [-16.5, -37.5], "expected": -16.499999999241744}, {"input": [-16.5, -37.0], "expected": -16.499999998749846}, {"input": [-16.5, -36.5], "expected": -16.499999997938847}, {"input": [-16.5, -36.0], "expected": -16.499999996601733}, {"input": [-16.5, -35.5], "expected": -16.499999994397204}, {"input": [-16.5, -35.0], "expected": -16.49999999076255}, {"input": [-16.5, -34.5], "expected": -16.49999998477002}, {"input": [-16.5, -34.0], "expected": -16.49999997489001}, {"input": [-16.5, -33.5], "expected": -16.499999958600625}, {"input": [-16.5, -33.0], "expected": -16.499999931743968}, {"input": [-16.5, -32.5], "expected": -16.49999988746483}, {"input": [-16.5, -32.0], "expected": -16.49999981446088}, {"input": [-16.5, -31.5], "expected": -16.499999694097728}, {"input": [-16.5, -31.0], "expected": -16.499999495652464}, {"input": [-16.5, -30.5], "expected": -16.499999168471625}, {"input": [-16.5, -30.0], "expected": -16.499998629041855}, {"input": [-16.5, -29.5], "expected": -16.499997739673148}, {"input": [-16.5, -29.0], "expected": -16.499996273353773}, {"input": [-16.5, -28.5], "expected": -16.499993855806522}, {"input": [-16.5, -28.0], "expected": -16.49998986995771}, {"input": [-16.5, -27.5], "expected": -16.499983298438682}, {"input": [-16.5, -27.0], "expected": -16.499972463929772}, {"input": [-16.5, -26.5], "expected": -16.499954601100782}, {"input": [-16.5, -26.0], "expected": -16.49992515097137}, {"input": [-16.5, -25.5], "expected": -16.499876597810278}, {"input": [-16.5, -25.0], "expected": -16.499796552327872}, {"input": [-16.5, -24.5], "expected": -16.499664593627106}, {"input": [-16.5, -24.0], "expected": -16.49944706852464}, {"input": [-16.5, -23.5], "expected": -16.499088533546225}, {"input": [-16.5, -23.0], "expected": -16.498497689840246}, {"input": [-16.5, -22.5], "expected": -16.497524314862268}, {"input": [-16.5, -22.0], "expected": -16.495921556729428}, {"input": [-16.5, -21.5], "expected": -16.493284651510884}, {"input": [-16.5, -21.0], "expected": -16.488952255151407}, {"input": [-16.5, -20.5], "expected": -16.48185007208219}, {"input": [-16.5, -20.0], "expected": -16.47024958172738}, {"input": [-16.5, -19.5], "expected": -16.451412648426256}, {"input": [-16.5, -19.0], "expected": -16.42111026570745}, {"input": [-16.5, -18.5], "expected": -16.373071988957026}, {"input": [-16.5, -18.0], "expected": -16.298586722017248}, {"input": [-16.5, -17.5], "expected": -16.186738312481776}, {"input": [-16.5, -17.0], "expected": -16.02592301581989}, {"input": [-16.5, -16.5], "expected": -15.806852819440055}, {"input": [-16.5, -16.0], "expected": -15.525923015819894}, {"input": [-16.5, -15.5], "expected": -15.186738312481777}, {"input": [-16.5, -15.0], "expected": -14.798586722017248}, {"input": [-16.5, -14.5], "expected": -14.373071988957028}, {"input": [-16.5, -14.0], "expected": -13.921110265707451}, {"input": [-16.5, -13.5], "expected": -13.451412648426258}, {"input": [-16.5, -13.0], "expected": -12.97024958172738}, {"input": [-16.5, -12.5], "expected": -12.48185007208219}, {"input": [-16.5, -12.0], "expected": -11.988952255151407}, {"input": [-16.5, -11.5], "expected": -11.493284651510882}, {"input": [-16.5, -11.0], "expected": -10.99592155672943}, {"input": [-16.5, -10.5], "expected": -10.49752431486227}, {"input": [-16.5, -10.0], "expected": -9.998497689840246}, {"input": [-16.5, -9.5], "expected": -9.499088533546226}, {"input": [-16.5, -9.0], "expected": -8.999447068524638}, {"input": [-16.5, -8.5], "expected": -8.499664593627104}, {"input": [-16.5, -8.0], "expected": -7.9997965523278705}, {"input": [-16.5, -7.5], "expected": -7.499876597810276}, {"input": [-16.5, -7.0], "expected": -6.999925150971371}, {"input": [-16.5, -6.5], "expected": -6.499954601100783}, {"input": [-16.5, -6.0], "expected": -5.999972463929772}, {"input": [-16.5, -5.5], "expected": -5.499983298438681}, {"input": [-16.5, -5.0], "expected": -4.9999898699577106}, {"input": [-16.5, -4.5], "expected": -4.4999938558065224}, {"input": [-16.5, -4.0], "expected": -3.999996273353772}, {"input": [-16.5, -3.5], "expected": -3.4999977396731476}, {"input": [-16.5, -3.0], "expected": -2.9999986290418534}, {"input": [-16.5, -2.5], "expected": -2.4999991684716267}, {"input": [-16.5, -2.0], "expected": -1.9999994956524647}, {"input": [-16.5, -1.5], "expected": -1.4999996940977263}, {"input": [-16.5, -1.0], "expected": -0.9999998144608809}, {"input": [-16.5, -0.5], "expected": -0.4999998874648316}, {"input": [-16.5, 0.0], "expected": 6.825603143390574e-08}, {"input": [-16.5, 0.5], "expected": 0.5000000413993764}, {"input": [-16.5, 1.0], "expected": 1.0000000251099912}, {"input": [-16.5, 1.5], "expected": 1.5000000152299797}, {"input": [-16.5, 2.0], "expected": 2.0000000092374495}, {"input": [-16.5, 2.5], "expected": 2.5000000056027964}, {"input": [-16.5, 3.0], "expected": 3.000000003398268}, {"input": [-16.5, 3.5], "expected": 3.5000000020611535}, {"input": [-16.5, 4.0], "expected": 4.000000001250153}, {"input": [-16.5, 4.5], "expected": 4.500000000758256}, {"input": [-16.5, 5.0], "expected": 5.000000000459906}, {"input": [-16.5, 5.5], "expected": 5.500000000278947}, {"input": [-16.5, 6.0], "expected": 6.00000000016919}, {"input": [-16.5, 6.5], "expected": 6.500000000102618}, {"input": [-16.5, 7.0], "expected": 7.000000000062242}, {"input": [-16.5, 7.5], "expected": 7.500000000037751}, {"input": [-16.5, 8.0], "expected": 8.000000000022897}, {"input": [-16.5, 8.5], "expected": 8.500000000013888}, {"input": [-16.5, 9.0], "expected": 9.000000000008423}, {"input": [-16.5, 9.5], "expected": 9.500000000005109}, {"input": [-16.5, 10.0], "expected": 10.000000000003098}, {"input": [-16.5, 10.5], "expected": 10.50000000000188}, {"input": [-16.5, 11.0], "expected": 11.00000000000114}, {"input": [-16.5, 11.5], "expected": 11.500000000000691}, {"input": [-16.5, 12.0], "expected": 12.00000000000042}, {"input": [-16.5, 12.5], "expected": 12.500000000000254}, {"input": [-16.5, 13.0], "expected": 13.000000000000155}, {"input": [-16.5, 13.5], "expected": 13.500000000000094}, {"input": [-16.5, 14.0], "expected": 14.000000000000057}, {"input": [-16.5, 14.5], "expected": 14.500000000000034}, {"input": [-16.5, 15.0], "expected": 15.000000000000021}, {"input": [-16.5, 15.5], "expected": 15.500000000000012}, {"input": [-16.5, 16.0], "expected": 16.000000000000007}, {"input": [-16.5, 16.5], "expected": 16.500000000000004}, {"input": [-16.5, 17.0], "expected": 17.000000000000004}, {"input": [-16.5, 17.5], "expected": 17.5}, {"input": [-16.5, 18.0], "expected": 18.0}, {"input": [-16.5, 18.5], "expected": 18.5}, {"input": [-16.5, 19.0], "expected": 19.0}, {"input": [-16.5, 19.5], "expected": 19.5}, {"input": [-16.5, 20.0], "expected": 20.0}, {"input": [-16.5, 20.5], "expected": 20.5}, {"input": [-16.5, 21.0], "expected": 21.0}, {"input": [-16.5, 21.5], "expected": 21.5}, {"input": [-16.5, 22.0], "expected": 22.0}, {"input": [-16.5, 22.5], "expected": 22.5}, {"input": [-16.5, 23.0], "expected": 23.0}, {"input": [-16.5, 23.5], "expected": 23.5}, {"input": [-16.5, 24.0], "expected": 24.0}, {"input": [-16.5, 24.5], "expected": 24.5}, {"input": [-16.5, 25.0], "expected": 25.0}, {"input": [-16.5, 25.5], "expected": 25.5}, {"input": [-16.5, 26.0], "expected": 26.0}, {"input": [-16.5, 26.5], "expected": 26.5}, {"input": [-16.5, 27.0], "expected": 27.0}, {"input": [-16.5, 27.5], "expected": 27.5}, {"input": [-16.5, 28.0], "expected": 28.0}, {"input": [-16.5, 28.5], "expected": 28.5}, {"input": [-16.5, 29.0], "expected": 29.0}, {"input": [-16.5, 29.5], "expected": 29.5}, {"input": [-16.5, 30.0], "expected": 30.0}, {"input": [-16.5, 30.5], "expected": 30.5}, {"input": [-16.5, 31.0], "expected": 31.0}, {"input": [-16.5, 31.5], "expected": 31.5}, {"input": [-16.5, 32.0], "expected": 32.0}, {"input": [-16.5, 32.5], "expected": 32.5}, {"input": [-16.5, 33.0], "expected": 33.0}, {"input": [-16.5, 33.5], "expected": 33.5}, {"input": [-16.5, 34.0], "expected": 34.0}, {"input": [-16.5, 34.5], "expected": 34.5}, {"input": [-16.5, 35.0], "expected": 35.0}, {"input": [-16.5, 35.5], "expected": 35.5}, {"input": [-16.5, 36.0], "expected": 36.0}, {"input": [-16.5, 36.5], "expected": 36.5}, {"input": [-16.5, 37.0], "expected": 37.0}, {"input": [-16.5, 37.5], "expected": 37.5}, {"input": [-16.5, 38.0], "expected": 38.0}, {"input": [-16.5, 38.5], "expected": 38.5}, {"input": [-16.5, 39.0], "expected": 39.0}, {"input": [-16.5, 39.5], "expected": 39.5}, {"input": [-16.5, 40.0], "expected": 40.0}, {"input": [-16.5, 40.5], "expected": 40.5}, {"input": [-16.5, 41.0], "expected": 41.0}, {"input": [-16.5, 41.5], "expected": 41.5}, {"input": [-16.5, 42.0], "expected": 42.0}, {"input": [-16.5, 42.5], "expected": 42.5}, {"input": [-16.5, 43.0], "expected": 43.0}, {"input": [-16.5, 43.5], "expected": 43.5}, {"input": [-16.5, 44.0], "expected": 44.0}, {"input": [-16.5, 44.5], "expected": 44.5}, {"input": [-16.5, 45.0], "expected": 45.0}, {"input": [-16.5, 45.5], "expected": 45.5}, {"input": [-16.5, 46.0], "expected": 46.0}, {"input": [-16.5, 46.5], "expected": 46.5}, {"input": [-16.5, 47.0], "expected": 47.0}, {"input": [-16.5, 47.5], "expected": 47.5}, {"input": [-16.5, 48.0], "expected": 48.0}, {"input": [-16.5, 48.5], "expected": 48.5}, {"input": [-16.5, 49.0], "expected": 49.0}, {"input": [-16.5, 49.5], "expected": 49.5}, {"input": [-16.5, 50.0], "expected": 50.0}, {"input": [-16.5, 50.5], "expected": 50.5}, {"input": [-16.5, 51.0], "expected": 51.0}, {"input": [-16.5, 51.5], "expected": 51.5}, {"input": [-16.5, 52.0], "expected": 52.0}, {"input": [-16.5, 52.5], "expected": 52.5}, {"input": [-16.5, 53.0], "expected": 53.0}, {"input": [-16.5, 53.5], "expected": 53.5}, {"input": [-16.5, 54.0], "expected": 54.0}, {"input": [-16.5, 54.5], "expected": 54.5}, {"input": [-16.5, 55.0], "expected": 55.0}, {"input": [-16.5, 55.5], "expected": 55.5}, {"input": [-16.5, 56.0], "expected": 56.0}, {"input": [-16.5, 56.5], "expected": 56.5}, {"input": [-16.5, 57.0], "expected": 57.0}, {"input": [-16.5, 57.5], "expected": 57.5}, {"input": [-16.5, 58.0], "expected": 58.0}, {"input": [-16.5, 58.5], "expected": 58.5}, {"input": [-16.5, 59.0], "expected": 59.0}, {"input": [-16.5, 59.5], "expected": 59.5}, {"input": [-16.5, 60.0], "expected": 60.0}, {"input": [-16.5, 60.5], "expected": 60.5}, {"input": [-16.5, 61.0], "expected": 61.0}, {"input": [-16.5, 61.5], "expected": 61.5}, {"input": [-16.5, 62.0], "expected": 62.0}, {"input": [-16.5, 62.5], "expected": 62.5}, {"input": [-16.5, 63.0], "expected": 63.0}, {"input": [-16.5, 63.5], "expected": 63.5}, {"input": [-16.5, 64.0], "expected": 64.0}, {"input": [-16.5, 64.5], "expected": 64.5}, {"input": [-16.5, 65.0], "expected": 65.0}, {"input": [-16.5, 65.5], "expected": 65.5}, {"input": [-16.5, 66.0], "expected": 66.0}, {"input": [-16.5, 66.5], "expected": 66.5}, {"input": [-16.5, 67.0], "expected": 67.0}, {"input": [-16.5, 67.5], "expected": 67.5}, {"input": [-16.5, 68.0], "expected": 68.0}, {"input": [-16.5, 68.5], "expected": 68.5}, {"input": [-16.5, 69.0], "expected": 69.0}, {"input": [-16.5, 69.5], "expected": 69.5}, {"input": [-16.5, 70.0], "expected": 70.0}, {"input": [-16.5, 70.5], "expected": 70.5}, {"input": [-16.5, 71.0], "expected": 71.0}, {"input": [-16.5, 71.5], "expected": 71.5}, {"input": [-16.5, 72.0], "expected": 72.0}, {"input": [-16.5, 72.5], "expected": 72.5}, {"input": [-16.5, 73.0], "expected": 73.0}, {"input": [-16.5, 73.5], "expected": 73.5}, {"input": [-16.5, 74.0], "expected": 74.0}, {"input": [-16.5, 74.5], "expected": 74.5}, {"input": [-16.5, 75.0], "expected": 75.0}, {"input": [-16.5, 75.5], "expected": 75.5}, {"input": [-16.5, 76.0], "expected": 76.0}, {"input": [-16.5, 76.5], "expected": 76.5}, {"input": [-16.5, 77.0], "expected": 77.0}, {"input": [-16.5, 77.5], "expected": 77.5}, {"input": [-16.5, 78.0], "expected": 78.0}, {"input": [-16.5, 78.5], "expected": 78.5}, {"input": [-16.5, 79.0], "expected": 79.0}, {"input": [-16.5, 79.5], "expected": 79.5}, {"input": [-16.5, 80.0], "expected": 80.0}, {"input": [-16.5, 80.5], "expected": 80.5}, {"input": [-16.5, 81.0], "expected": 81.0}, {"input": [-16.5, 81.5], "expected": 81.5}, {"input": [-16.5, 82.0], "expected": 82.0}, {"input": [-16.5, 82.5], "expected": 82.5}, {"input": [-16.5, 83.0], "expected": 83.0}, {"input": [-16.5, 83.5], "expected": 83.5}, {"input": [-16.5, 84.0], "expected": 84.0}, {"input": [-16.5, 84.5], "expected": 84.5}, {"input": [-16.5, 85.0], "expected": 85.0}, {"input": [-16.5, 85.5], "expected": 85.5}, {"input": [-16.5, 86.0], "expected": 86.0}, {"input": [-16.5, 86.5], "expected": 86.5}, {"input": [-16.5, 87.0], "expected": 87.0}, {"input": [-16.5, 87.5], "expected": 87.5}, {"input": [-16.5, 88.0], "expected": 88.0}, {"input": [-16.5, 88.5], "expected": 88.5}, {"input": [-16.5, 89.0], "expected": 89.0}, {"input": [-16.5, 89.5], "expected": 89.5}, {"input": [-16.5, 90.0], "expected": 90.0}, {"input": [-16.5, 90.5], "expected": 90.5}, {"input": [-16.5, 91.0], "expected": 91.0}, {"input": [-16.5, 91.5], "expected": 91.5}, {"input": [-16.5, 92.0], "expected": 92.0}, {"input": [-16.5, 92.5], "expected": 92.5}, {"input": [-16.5, 93.0], "expected": 93.0}, {"input": [-16.5, 93.5], "expected": 93.5}, {"input": [-16.5, 94.0], "expected": 94.0}, {"input": [-16.5, 94.5], "expected": 94.5}, {"input": [-16.5, 95.0], "expected": 95.0}, {"input": [-16.5, 95.5], "expected": 95.5}, {"input": [-16.5, 96.0], "expected": 96.0}, {"input": [-16.5, 96.5], "expected": 96.5}, {"input": [-16.5, 97.0], "expected": 97.0}, {"input": [-16.5, 97.5], "expected": 97.5}, {"input": [-16.5, 98.0], "expected": 98.0}, {"input": [-16.5, 98.5], "expected": 98.5}, {"input": [-16.5, 99.0], "expected": 99.0}, {"input": [-16.5, 99.5], "expected": 99.5}, {"input": [-16.0, -100.0], "expected": -16.0}, {"input": [-16.0, -99.5], "expected": -16.0}, {"input": [-16.0, -99.0], "expected": -16.0}, {"input": [-16.0, -98.5], "expected": -16.0}, {"input": [-16.0, -98.0], "expected": -16.0}, {"input": [-16.0, -97.5], "expected": -16.0}, {"input": [-16.0, -97.0], "expected": -16.0}, {"input": [-16.0, -96.5], "expected": -16.0}, {"input": [-16.0, -96.0], "expected": -16.0}, {"input": [-16.0, -95.5], "expected": -16.0}, {"input": [-16.0, -95.0], "expected": -16.0}, {"input": [-16.0, -94.5], "expected": -16.0}, {"input": [-16.0, -94.0], "expected": -16.0}, {"input": [-16.0, -93.5], "expected": -16.0}, {"input": [-16.0, -93.0], "expected": -16.0}, {"input": [-16.0, -92.5], "expected": -16.0}, {"input": [-16.0, -92.0], "expected": -16.0}, {"input": [-16.0, -91.5], "expected": -16.0}, {"input": [-16.0, -91.0], "expected": -16.0}, {"input": [-16.0, -90.5], "expected": -16.0}, {"input": [-16.0, -90.0], "expected": -16.0}, {"input": [-16.0, -89.5], "expected": -16.0}, {"input": [-16.0, -89.0], "expected": -16.0}, {"input": [-16.0, -88.5], "expected": -16.0}, {"input": [-16.0, -88.0], "expected": -16.0}, {"input": [-16.0, -87.5], "expected": -16.0}, {"input": [-16.0, -87.0], "expected": -16.0}, {"input": [-16.0, -86.5], "expected": -16.0}, {"input": [-16.0, -86.0], "expected": -16.0}, {"input": [-16.0, -85.5], "expected": -16.0}, {"input": [-16.0, -85.0], "expected": -16.0}, {"input": [-16.0, -84.5], "expected": -16.0}, {"input": [-16.0, -84.0], "expected": -16.0}, {"input": [-16.0, -83.5], "expected": -16.0}, {"input": [-16.0, -83.0], "expected": -16.0}, {"input": [-16.0, -82.5], "expected": -16.0}, {"input": [-16.0, -82.0], "expected": -16.0}, {"input": [-16.0, -81.5], "expected": -16.0}, {"input": [-16.0, -81.0], "expected": -16.0}, {"input": [-16.0, -80.5], "expected": -16.0}, {"input": [-16.0, -80.0], "expected": -16.0}, {"input": [-16.0, -79.5], "expected": -16.0}, {"input": [-16.0, -79.0], "expected": -16.0}, {"input": [-16.0, -78.5], "expected": -16.0}, {"input": [-16.0, -78.0], "expected": -16.0}, {"input": [-16.0, -77.5], "expected": -16.0}, {"input": [-16.0, -77.0], "expected": -16.0}, {"input": [-16.0, -76.5], "expected": -16.0}, {"input": [-16.0, -76.0], "expected": -16.0}, {"input": [-16.0, -75.5], "expected": -16.0}, {"input": [-16.0, -75.0], "expected": -16.0}, {"input": [-16.0, -74.5], "expected": -16.0}, {"input": [-16.0, -74.0], "expected": -16.0}, {"input": [-16.0, -73.5], "expected": -16.0}, {"input": [-16.0, -73.0], "expected": -16.0}, {"input": [-16.0, -72.5], "expected": -16.0}, {"input": [-16.0, -72.0], "expected": -16.0}, {"input": [-16.0, -71.5], "expected": -16.0}, {"input": [-16.0, -71.0], "expected": -16.0}, {"input": [-16.0, -70.5], "expected": -16.0}, {"input": [-16.0, -70.0], "expected": -16.0}, {"input": [-16.0, -69.5], "expected": -16.0}, {"input": [-16.0, -69.0], "expected": -16.0}, {"input": [-16.0, -68.5], "expected": -16.0}, {"input": [-16.0, -68.0], "expected": -16.0}, {"input": [-16.0, -67.5], "expected": -16.0}, {"input": [-16.0, -67.0], "expected": -16.0}, {"input": [-16.0, -66.5], "expected": -16.0}, {"input": [-16.0, -66.0], "expected": -16.0}, {"input": [-16.0, -65.5], "expected": -16.0}, {"input": [-16.0, -65.0], "expected": -16.0}, {"input": [-16.0, -64.5], "expected": -16.0}, {"input": [-16.0, -64.0], "expected": -16.0}, {"input": [-16.0, -63.5], "expected": -16.0}, {"input": [-16.0, -63.0], "expected": -16.0}, {"input": [-16.0, -62.5], "expected": -16.0}, {"input": [-16.0, -62.0], "expected": -16.0}, {"input": [-16.0, -61.5], "expected": -16.0}, {"input": [-16.0, -61.0], "expected": -16.0}, {"input": [-16.0, -60.5], "expected": -16.0}, {"input": [-16.0, -60.0], "expected": -16.0}, {"input": [-16.0, -59.5], "expected": -16.0}, {"input": [-16.0, -59.0], "expected": -16.0}, {"input": [-16.0, -58.5], "expected": -16.0}, {"input": [-16.0, -58.0], "expected": -16.0}, {"input": [-16.0, -57.5], "expected": -16.0}, {"input": [-16.0, -57.0], "expected": -16.0}, {"input": [-16.0, -56.5], "expected": -16.0}, {"input": [-16.0, -56.0], "expected": -16.0}, {"input": [-16.0, -55.5], "expected": -16.0}, {"input": [-16.0, -55.0], "expected": -16.0}, {"input": [-16.0, -54.5], "expected": -16.0}, {"input": [-16.0, -54.0], "expected": -16.0}, {"input": [-16.0, -53.5], "expected": -16.0}, {"input": [-16.0, -53.0], "expected": -16.0}, {"input": [-16.0, -52.5], "expected": -16.0}, {"input": [-16.0, -52.0], "expected": -16.0}, {"input": [-16.0, -51.5], "expected": -16.0}, {"input": [-16.0, -51.0], "expected": -16.0}, {"input": [-16.0, -50.5], "expected": -15.999999999999998}, {"input": [-16.0, -50.0], "expected": -15.999999999999998}, {"input": [-16.0, -49.5], "expected": -15.999999999999996}, {"input": [-16.0, -49.0], "expected": -15.999999999999995}, {"input": [-16.0, -48.5], "expected": -15.999999999999993}, {"input": [-16.0, -48.0], "expected": -15.999999999999988}, {"input": [-16.0, -47.5], "expected": -15.999999999999979}, {"input": [-16.0, -47.0], "expected": -15.999999999999966}, {"input": [-16.0, -46.5], "expected": -15.999999999999943}, {"input": [-16.0, -46.0], "expected": -15.999999999999906}, {"input": [-16.0, -45.5], "expected": -15.999999999999845}, {"input": [-16.0, -45.0], "expected": -15.999999999999746}, {"input": [-16.0, -44.5], "expected": -15.99999999999958}, {"input": [-16.0, -44.0], "expected": -15.999999999999309}, {"input": [-16.0, -43.5], "expected": -15.99999999999886}, {"input": [-16.0, -43.0], "expected": -15.99999999999812}, {"input": [-16.0, -42.5], "expected": -15.999999999996902}, {"input": [-16.0, -42.0], "expected": -15.999999999994891}, {"input": [-16.0, -41.5], "expected": -15.999999999991577}, {"input": [-16.0, -41.0], "expected": -15.999999999986112}, {"input": [-16.0, -40.5], "expected": -15.999999999977103}, {"input": [-16.0, -40.0], "expected": -15.999999999962249}, {"input": [-16.0, -39.5], "expected": -15.999999999937758}, {"input": [-16.0, -39.0], "expected": -15.999999999897382}, {"input": [-16.0, -38.5], "expected": -15.999999999830811}, {"input": [-16.0, -38.0], "expected": -15.999999999721053}, {"input": [-16.0, -37.5], "expected": -15.999999999540094}, {"input": [-16.0, -37.0], "expected": -15.999999999241744}, {"input": [-16.0, -36.5], "expected": -15.999999998749848}, {"input": [-16.0, -36.0], "expected": -15.999999997938847}, {"input": [-16.0, -35.5], "expected": -15.999999996601732}, {"input": [-16.0, -35.0], "expected": -15.999999994397204}, {"input": [-16.0, -34.5], "expected": -15.99999999076255}, {"input": [-16.0, -34.0], "expected": -15.999999984770021}, {"input": [-16.0, -33.5], "expected": -15.99999997489001}, {"input": [-16.0, -33.0], "expected": -15.999999958600624}, {"input": [-16.0, -32.5], "expected": -15.999999931743968}, {"input": [-16.0, -32.0], "expected": -15.999999887464831}, {"input": [-16.0, -31.5], "expected": -15.999999814460882}, {"input": [-16.0, -31.0], "expected": -15.999999694097726}, {"input": [-16.0, -30.5], "expected": -15.999999495652464}, {"input": [-16.0, -30.0], "expected": -15.999999168471627}, {"input": [-16.0, -29.5], "expected": -15.999998629041853}, {"input": [-16.0, -29.0], "expected": -15.999997739673148}, {"input": [-16.0, -28.5], "expected": -15.999996273353771}, {"input": [-16.0, -28.0], "expected": -15.999993855806522}, {"input": [-16.0, -27.5], "expected": -15.99998986995771}, {"input": [-16.0, -27.0], "expected": -15.999983298438682}, {"input": [-16.0, -26.5], "expected": -15.99997246392977}, {"input": [-16.0, -26.0], "expected": -15.999954601100782}, {"input": [-16.0, -25.5], "expected": -15.999925150971372}, {"input": [-16.0, -25.0], "expected": -15.999876597810276}, {"input": [-16.0, -24.5], "expected": -15.99979655232787}, {"input": [-16.0, -24.0], "expected": -15.999664593627104}, {"input": [-16.0, -23.5], "expected": -15.999447068524638}, {"input": [-16.0, -23.0], "expected": -15.999088533546226}, {"input": [-16.0, -22.5], "expected": -15.998497689840246}, {"input": [-16.0, -22.0], "expected": -15.99752431486227}, {"input": [-16.0, -21.5], "expected": -15.99592155672943}, {"input": [-16.0, -21.0], "expected": -15.993284651510882}, {"input": [-16.0, -20.5], "expected": -15.988952255151407}, {"input": [-16.0, -20.0], "expected": -15.98185007208219}, {"input": [-16.0, -19.5], "expected": -15.97024958172738}, {"input": [-16.0, -19.0], "expected": -15.951412648426258}, {"input": [-16.0, -18.5], "expected": -15.921110265707451}, {"input": [-16.0, -18.0], "expected": -15.873071988957028}, {"input": [-16.0, -17.5], "expected": -15.798586722017248}, {"input": [-16.0, -17.0], "expected": -15.686738312481777}, {"input": [-16.0, -16.5], "expected": -15.525923015819894}, {"input": [-16.0, -16.0], "expected": -15.306852819440055}, {"input": [-16.0, -15.5], "expected": -15.025923015819894}, {"input": [-16.0, -15.0], "expected": -14.686738312481777}, {"input": [-16.0, -14.5], "expected": -14.298586722017248}, {"input": [-16.0, -14.0], "expected": -13.873071988957028}, {"input": [-16.0, -13.5], "expected": -13.421110265707451}, {"input": [-16.0, -13.0], "expected": -12.951412648426258}, {"input": [-16.0, -12.5], "expected": -12.47024958172738}, {"input": [-16.0, -12.0], "expected": -11.98185007208219}, {"input": [-16.0, -11.5], "expected": -11.488952255151407}, {"input": [-16.0, -11.0], "expected": -10.993284651510882}, {"input": [-16.0, -10.5], "expected": -10.49592155672943}, {"input": [-16.0, -10.0], "expected": -9.99752431486227}, {"input": [-16.0, -9.5], "expected": -9.498497689840246}, {"input": [-16.0, -9.0], "expected": -8.999088533546226}, {"input": [-16.0, -8.5], "expected": -8.499447068524638}, {"input": [-16.0, -8.0], "expected": -7.999664593627104}, {"input": [-16.0, -7.5], "expected": -7.4997965523278705}, {"input": [-16.0, -7.0], "expected": -6.999876597810276}, {"input": [-16.0, -6.5], "expected": -6.499925150971371}, {"input": [-16.0, -6.0], "expected": -5.999954601100783}, {"input": [-16.0, -5.5], "expected": -5.499972463929772}, {"input": [-16.0, -5.0], "expected": -4.999983298438681}, {"input": [-16.0, -4.5], "expected": -4.4999898699577106}, {"input": [-16.0, -4.0], "expected": -3.9999938558065224}, {"input": [-16.0, -3.5], "expected": -3.499996273353772}, {"input": [-16.0, -3.0], "expected": -2.9999977396731476}, {"input": [-16.0, -2.5], "expected": -2.4999986290418534}, {"input": [-16.0, -2.0], "expected": -1.9999991684716265}, {"input": [-16.0, -1.5], "expected": -1.4999994956524647}, {"input": [-16.0, -1.0], "expected": -0.9999996940977263}, {"input": [-16.0, -0.5], "expected": -0.49999981446088093}, {"input": [-16.0, 0.0], "expected": 1.1253516838717682e-07}, {"input": [-16.0, 0.5], "expected": 0.5000000682560314}, {"input": [-16.0, 1.0], "expected": 1.0000000413993764}, {"input": [-16.0, 1.5], "expected": 1.5000000251099912}, {"input": [-16.0, 2.0], "expected": 2.0000000152299795}, {"input": [-16.0, 2.5], "expected": 2.5000000092374495}, {"input": [-16.0, 3.0], "expected": 3.0000000056027964}, {"input": [-16.0, 3.5], "expected": 3.500000003398268}, {"input": [-16.0, 4.0], "expected": 4.000000002061154}, {"input": [-16.0, 4.5], "expected": 4.500000001250153}, {"input": [-16.0, 5.0], "expected": 5.000000000758256}, {"input": [-16.0, 5.5], "expected": 5.500000000459906}, {"input": [-16.0, 6.0], "expected": 6.000000000278947}, {"input": [-16.0, 6.5], "expected": 6.50000000016919}, {"input": [-16.0, 7.0], "expected": 7.000000000102618}, {"input": [-16.0, 7.5], "expected": 7.500000000062242}, {"input": [-16.0, 8.0], "expected": 8.000000000037751}, {"input": [-16.0, 8.5], "expected": 8.500000000022897}, {"input": [-16.0, 9.0], "expected": 9.000000000013888}, {"input": [-16.0, 9.5], "expected": 9.500000000008423}, {"input": [-16.0, 10.0], "expected": 10.000000000005109}, {"input": [-16.0, 10.5], "expected": 10.500000000003098}, {"input": [-16.0, 11.0], "expected": 11.00000000000188}, {"input": [-16.0, 11.5], "expected": 11.50000000000114}, {"input": [-16.0, 12.0], "expected": 12.000000000000691}, {"input": [-16.0, 12.5], "expected": 12.50000000000042}, {"input": [-16.0, 13.0], "expected": 13.000000000000254}, {"input": [-16.0, 13.5], "expected": 13.500000000000155}, {"input": [-16.0, 14.0], "expected": 14.000000000000094}, {"input": [-16.0, 14.5], "expected": 14.500000000000057}, {"input": [-16.0, 15.0], "expected": 15.000000000000034}, {"input": [-16.0, 15.5], "expected": 15.500000000000021}, {"input": [-16.0, 16.0], "expected": 16.000000000000014}, {"input": [-16.0, 16.5], "expected": 16.500000000000007}, {"input": [-16.0, 17.0], "expected": 17.000000000000004}, {"input": [-16.0, 17.5], "expected": 17.500000000000004}, {"input": [-16.0, 18.0], "expected": 18.0}, {"input": [-16.0, 18.5], "expected": 18.5}, {"input": [-16.0, 19.0], "expected": 19.0}, {"input": [-16.0, 19.5], "expected": 19.5}, {"input": [-16.0, 20.0], "expected": 20.0}, {"input": [-16.0, 20.5], "expected": 20.5}, {"input": [-16.0, 21.0], "expected": 21.0}, {"input": [-16.0, 21.5], "expected": 21.5}, {"input": [-16.0, 22.0], "expected": 22.0}, {"input": [-16.0, 22.5], "expected": 22.5}, {"input": [-16.0, 23.0], "expected": 23.0}, {"input": [-16.0, 23.5], "expected": 23.5}, {"input": [-16.0, 24.0], "expected": 24.0}, {"input": [-16.0, 24.5], "expected": 24.5}, {"input": [-16.0, 25.0], "expected": 25.0}, {"input": [-16.0, 25.5], "expected": 25.5}, {"input": [-16.0, 26.0], "expected": 26.0}, {"input": [-16.0, 26.5], "expected": 26.5}, {"input": [-16.0, 27.0], "expected": 27.0}, {"input": [-16.0, 27.5], "expected": 27.5}, {"input": [-16.0, 28.0], "expected": 28.0}, {"input": [-16.0, 28.5], "expected": 28.5}, {"input": [-16.0, 29.0], "expected": 29.0}, {"input": [-16.0, 29.5], "expected": 29.5}, {"input": [-16.0, 30.0], "expected": 30.0}, {"input": [-16.0, 30.5], "expected": 30.5}, {"input": [-16.0, 31.0], "expected": 31.0}, {"input": [-16.0, 31.5], "expected": 31.5}, {"input": [-16.0, 32.0], "expected": 32.0}, {"input": [-16.0, 32.5], "expected": 32.5}, {"input": [-16.0, 33.0], "expected": 33.0}, {"input": [-16.0, 33.5], "expected": 33.5}, {"input": [-16.0, 34.0], "expected": 34.0}, {"input": [-16.0, 34.5], "expected": 34.5}, {"input": [-16.0, 35.0], "expected": 35.0}, {"input": [-16.0, 35.5], "expected": 35.5}, {"input": [-16.0, 36.0], "expected": 36.0}, {"input": [-16.0, 36.5], "expected": 36.5}, {"input": [-16.0, 37.0], "expected": 37.0}, {"input": [-16.0, 37.5], "expected": 37.5}, {"input": [-16.0, 38.0], "expected": 38.0}, {"input": [-16.0, 38.5], "expected": 38.5}, {"input": [-16.0, 39.0], "expected": 39.0}, {"input": [-16.0, 39.5], "expected": 39.5}, {"input": [-16.0, 40.0], "expected": 40.0}, {"input": [-16.0, 40.5], "expected": 40.5}, {"input": [-16.0, 41.0], "expected": 41.0}, {"input": [-16.0, 41.5], "expected": 41.5}, {"input": [-16.0, 42.0], "expected": 42.0}, {"input": [-16.0, 42.5], "expected": 42.5}, {"input": [-16.0, 43.0], "expected": 43.0}, {"input": [-16.0, 43.5], "expected": 43.5}, {"input": [-16.0, 44.0], "expected": 44.0}, {"input": [-16.0, 44.5], "expected": 44.5}, {"input": [-16.0, 45.0], "expected": 45.0}, {"input": [-16.0, 45.5], "expected": 45.5}, {"input": [-16.0, 46.0], "expected": 46.0}, {"input": [-16.0, 46.5], "expected": 46.5}, {"input": [-16.0, 47.0], "expected": 47.0}, {"input": [-16.0, 47.5], "expected": 47.5}, {"input": [-16.0, 48.0], "expected": 48.0}, {"input": [-16.0, 48.5], "expected": 48.5}, {"input": [-16.0, 49.0], "expected": 49.0}, {"input": [-16.0, 49.5], "expected": 49.5}, {"input": [-16.0, 50.0], "expected": 50.0}, {"input": [-16.0, 50.5], "expected": 50.5}, {"input": [-16.0, 51.0], "expected": 51.0}, {"input": [-16.0, 51.5], "expected": 51.5}, {"input": [-16.0, 52.0], "expected": 52.0}, {"input": [-16.0, 52.5], "expected": 52.5}, {"input": [-16.0, 53.0], "expected": 53.0}, {"input": [-16.0, 53.5], "expected": 53.5}, {"input": [-16.0, 54.0], "expected": 54.0}, {"input": [-16.0, 54.5], "expected": 54.5}, {"input": [-16.0, 55.0], "expected": 55.0}, {"input": [-16.0, 55.5], "expected": 55.5}, {"input": [-16.0, 56.0], "expected": 56.0}, {"input": [-16.0, 56.5], "expected": 56.5}, {"input": [-16.0, 57.0], "expected": 57.0}, {"input": [-16.0, 57.5], "expected": 57.5}, {"input": [-16.0, 58.0], "expected": 58.0}, {"input": [-16.0, 58.5], "expected": 58.5}, {"input": [-16.0, 59.0], "expected": 59.0}, {"input": [-16.0, 59.5], "expected": 59.5}, {"input": [-16.0, 60.0], "expected": 60.0}, {"input": [-16.0, 60.5], "expected": 60.5}, {"input": [-16.0, 61.0], "expected": 61.0}, {"input": [-16.0, 61.5], "expected": 61.5}, {"input": [-16.0, 62.0], "expected": 62.0}, {"input": [-16.0, 62.5], "expected": 62.5}, {"input": [-16.0, 63.0], "expected": 63.0}, {"input": [-16.0, 63.5], "expected": 63.5}, {"input": [-16.0, 64.0], "expected": 64.0}, {"input": [-16.0, 64.5], "expected": 64.5}, {"input": [-16.0, 65.0], "expected": 65.0}, {"input": [-16.0, 65.5], "expected": 65.5}, {"input": [-16.0, 66.0], "expected": 66.0}, {"input": [-16.0, 66.5], "expected": 66.5}, {"input": [-16.0, 67.0], "expected": 67.0}, {"input": [-16.0, 67.5], "expected": 67.5}, {"input": [-16.0, 68.0], "expected": 68.0}, {"input": [-16.0, 68.5], "expected": 68.5}, {"input": [-16.0, 69.0], "expected": 69.0}, {"input": [-16.0, 69.5], "expected": 69.5}, {"input": [-16.0, 70.0], "expected": 70.0}, {"input": [-16.0, 70.5], "expected": 70.5}, {"input": [-16.0, 71.0], "expected": 71.0}, {"input": [-16.0, 71.5], "expected": 71.5}, {"input": [-16.0, 72.0], "expected": 72.0}, {"input": [-16.0, 72.5], "expected": 72.5}, {"input": [-16.0, 73.0], "expected": 73.0}, {"input": [-16.0, 73.5], "expected": 73.5}, {"input": [-16.0, 74.0], "expected": 74.0}, {"input": [-16.0, 74.5], "expected": 74.5}, {"input": [-16.0, 75.0], "expected": 75.0}, {"input": [-16.0, 75.5], "expected": 75.5}, {"input": [-16.0, 76.0], "expected": 76.0}, {"input": [-16.0, 76.5], "expected": 76.5}, {"input": [-16.0, 77.0], "expected": 77.0}, {"input": [-16.0, 77.5], "expected": 77.5}, {"input": [-16.0, 78.0], "expected": 78.0}, {"input": [-16.0, 78.5], "expected": 78.5}, {"input": [-16.0, 79.0], "expected": 79.0}, {"input": [-16.0, 79.5], "expected": 79.5}, {"input": [-16.0, 80.0], "expected": 80.0}, {"input": [-16.0, 80.5], "expected": 80.5}, {"input": [-16.0, 81.0], "expected": 81.0}, {"input": [-16.0, 81.5], "expected": 81.5}, {"input": [-16.0, 82.0], "expected": 82.0}, {"input": [-16.0, 82.5], "expected": 82.5}, {"input": [-16.0, 83.0], "expected": 83.0}, {"input": [-16.0, 83.5], "expected": 83.5}, {"input": [-16.0, 84.0], "expected": 84.0}, {"input": [-16.0, 84.5], "expected": 84.5}, {"input": [-16.0, 85.0], "expected": 85.0}, {"input": [-16.0, 85.5], "expected": 85.5}, {"input": [-16.0, 86.0], "expected": 86.0}, {"input": [-16.0, 86.5], "expected": 86.5}, {"input": [-16.0, 87.0], "expected": 87.0}, {"input": [-16.0, 87.5], "expected": 87.5}, {"input": [-16.0, 88.0], "expected": 88.0}, {"input": [-16.0, 88.5], "expected": 88.5}, {"input": [-16.0, 89.0], "expected": 89.0}, {"input": [-16.0, 89.5], "expected": 89.5}, {"input": [-16.0, 90.0], "expected": 90.0}, {"input": [-16.0, 90.5], "expected": 90.5}, {"input": [-16.0, 91.0], "expected": 91.0}, {"input": [-16.0, 91.5], "expected": 91.5}, {"input": [-16.0, 92.0], "expected": 92.0}, {"input": [-16.0, 92.5], "expected": 92.5}, {"input": [-16.0, 93.0], "expected": 93.0}, {"input": [-16.0, 93.5], "expected": 93.5}, {"input": [-16.0, 94.0], "expected": 94.0}, {"input": [-16.0, 94.5], "expected": 94.5}, {"input": [-16.0, 95.0], "expected": 95.0}, {"input": [-16.0, 95.5], "expected": 95.5}, {"input": [-16.0, 96.0], "expected": 96.0}, {"input": [-16.0, 96.5], "expected": 96.5}, {"input": [-16.0, 97.0], "expected": 97.0}, {"input": [-16.0, 97.5], "expected": 97.5}, {"input": [-16.0, 98.0], "expected": 98.0}, {"input": [-16.0, 98.5], "expected": 98.5}, {"input": [-16.0, 99.0], "expected": 99.0}, {"input": [-16.0, 99.5], "expected": 99.5}, {"input": [-15.5, -100.0], "expected": -15.5}, {"input": [-15.5, -99.5], "expected": -15.5}, {"input": [-15.5, -99.0], "expected": -15.5}, {"input": [-15.5, -98.5], "expected": -15.5}, {"input": [-15.5, -98.0], "expected": -15.5}, {"input": [-15.5, -97.5], "expected": -15.5}, {"input": [-15.5, -97.0], "expected": -15.5}, {"input": [-15.5, -96.5], "expected": -15.5}, {"input": [-15.5, -96.0], "expected": -15.5}, {"input": [-15.5, -95.5], "expected": -15.5}, {"input": [-15.5, -95.0], "expected": -15.5}, {"input": [-15.5, -94.5], "expected": -15.5}, {"input": [-15.5, -94.0], "expected": -15.5}, {"input": [-15.5, -93.5], "expected": -15.5}, {"input": [-15.5, -93.0], "expected": -15.5}, {"input": [-15.5, -92.5], "expected": -15.5}, {"input": [-15.5, -92.0], "expected": -15.5}, {"input": [-15.5, -91.5], "expected": -15.5}, {"input": [-15.5, -91.0], "expected": -15.5}, {"input": [-15.5, -90.5], "expected": -15.5}, {"input": [-15.5, -90.0], "expected": -15.5}, {"input": [-15.5, -89.5], "expected": -15.5}, {"input": [-15.5, -89.0], "expected": -15.5}, {"input": [-15.5, -88.5], "expected": -15.5}, {"input": [-15.5, -88.0], "expected": -15.5}, {"input": [-15.5, -87.5], "expected": -15.5}, {"input": [-15.5, -87.0], "expected": -15.5}, {"input": [-15.5, -86.5], "expected": -15.5}, {"input": [-15.5, -86.0], "expected": -15.5}, {"input": [-15.5, -85.5], "expected": -15.5}, {"input": [-15.5, -85.0], "expected": -15.5}, {"input": [-15.5, -84.5], "expected": -15.5}, {"input": [-15.5, -84.0], "expected": -15.5}, {"input": [-15.5, -83.5], "expected": -15.5}, {"input": [-15.5, -83.0], "expected": -15.5}, {"input": [-15.5, -82.5], "expected": -15.5}, {"input": [-15.5, -82.0], "expected": -15.5}, {"input": [-15.5, -81.5], "expected": -15.5}, {"input": [-15.5, -81.0], "expected": -15.5}, {"input": [-15.5, -80.5], "expected": -15.5}, {"input": [-15.5, -80.0], "expected": -15.5}, {"input": [-15.5, -79.5], "expected": -15.5}, {"input": [-15.5, -79.0], "expected": -15.5}, {"input": [-15.5, -78.5], "expected": -15.5}, {"input": [-15.5, -78.0], "expected": -15.5}, {"input": [-15.5, -77.5], "expected": -15.5}, {"input": [-15.5, -77.0], "expected": -15.5}, {"input": [-15.5, -76.5], "expected": -15.5}, {"input": [-15.5, -76.0], "expected": -15.5}, {"input": [-15.5, -75.5], "expected": -15.5}, {"input": [-15.5, -75.0], "expected": -15.5}, {"input": [-15.5, -74.5], "expected": -15.5}, {"input": [-15.5, -74.0], "expected": -15.5}, {"input": [-15.5, -73.5], "expected": -15.5}, {"input": [-15.5, -73.0], "expected": -15.5}, {"input": [-15.5, -72.5], "expected": -15.5}, {"input": [-15.5, -72.0], "expected": -15.5}, {"input": [-15.5, -71.5], "expected": -15.5}, {"input": [-15.5, -71.0], "expected": -15.5}, {"input": [-15.5, -70.5], "expected": -15.5}, {"input": [-15.5, -70.0], "expected": -15.5}, {"input": [-15.5, -69.5], "expected": -15.5}, {"input": [-15.5, -69.0], "expected": -15.5}, {"input": [-15.5, -68.5], "expected": -15.5}, {"input": [-15.5, -68.0], "expected": -15.5}, {"input": [-15.5, -67.5], "expected": -15.5}, {"input": [-15.5, -67.0], "expected": -15.5}, {"input": [-15.5, -66.5], "expected": -15.5}, {"input": [-15.5, -66.0], "expected": -15.5}, {"input": [-15.5, -65.5], "expected": -15.5}, {"input": [-15.5, -65.0], "expected": -15.5}, {"input": [-15.5, -64.5], "expected": -15.5}, {"input": [-15.5, -64.0], "expected": -15.5}, {"input": [-15.5, -63.5], "expected": -15.5}, {"input": [-15.5, -63.0], "expected": -15.5}, {"input": [-15.5, -62.5], "expected": -15.5}, {"input": [-15.5, -62.0], "expected": -15.5}, {"input": [-15.5, -61.5], "expected": -15.5}, {"input": [-15.5, -61.0], "expected": -15.5}, {"input": [-15.5, -60.5], "expected": -15.5}, {"input": [-15.5, -60.0], "expected": -15.5}, {"input": [-15.5, -59.5], "expected": -15.5}, {"input": [-15.5, -59.0], "expected": -15.5}, {"input": [-15.5, -58.5], "expected": -15.5}, {"input": [-15.5, -58.0], "expected": -15.5}, {"input": [-15.5, -57.5], "expected": -15.5}, {"input": [-15.5, -57.0], "expected": -15.5}, {"input": [-15.5, -56.5], "expected": -15.5}, {"input": [-15.5, -56.0], "expected": -15.5}, {"input": [-15.5, -55.5], "expected": -15.5}, {"input": [-15.5, -55.0], "expected": -15.5}, {"input": [-15.5, -54.5], "expected": -15.5}, {"input": [-15.5, -54.0], "expected": -15.5}, {"input": [-15.5, -53.5], "expected": -15.5}, {"input": [-15.5, -53.0], "expected": -15.5}, {"input": [-15.5, -52.5], "expected": -15.5}, {"input": [-15.5, -52.0], "expected": -15.5}, {"input": [-15.5, -51.5], "expected": -15.5}, {"input": [-15.5, -51.0], "expected": -15.5}, {"input": [-15.5, -50.5], "expected": -15.5}, {"input": [-15.5, -50.0], "expected": -15.499999999999998}, {"input": [-15.5, -49.5], "expected": -15.499999999999998}, {"input": [-15.5, -49.0], "expected": -15.499999999999996}, {"input": [-15.5, -48.5], "expected": -15.499999999999995}, {"input": [-15.5, -48.0], "expected": -15.499999999999993}, {"input": [-15.5, -47.5], "expected": -15.499999999999988}, {"input": [-15.5, -47.0], "expected": -15.499999999999979}, {"input": [-15.5, -46.5], "expected": -15.499999999999966}, {"input": [-15.5, -46.0], "expected": -15.499999999999943}, {"input": [-15.5, -45.5], "expected": -15.499999999999906}, {"input": [-15.5, -45.0], "expected": -15.499999999999845}, {"input": [-15.5, -44.5], "expected": -15.499999999999746}, {"input": [-15.5, -44.0], "expected": -15.49999999999958}, {"input": [-15.5, -43.5], "expected": -15.499999999999309}, {"input": [-15.5, -43.0], "expected": -15.49999999999886}, {"input": [-15.5, -42.5], "expected": -15.49999999999812}, {"input": [-15.5, -42.0], "expected": -15.499999999996902}, {"input": [-15.5, -41.5], "expected": -15.499999999994891}, {"input": [-15.5, -41.0], "expected": -15.499999999991577}, {"input": [-15.5, -40.5], "expected": -15.499999999986112}, {"input": [-15.5, -40.0], "expected": -15.499999999977103}, {"input": [-15.5, -39.5], "expected": -15.499999999962249}, {"input": [-15.5, -39.0], "expected": -15.499999999937758}, {"input": [-15.5, -38.5], "expected": -15.499999999897382}, {"input": [-15.5, -38.0], "expected": -15.499999999830811}, {"input": [-15.5, -37.5], "expected": -15.499999999721053}, {"input": [-15.5, -37.0], "expected": -15.499999999540094}, {"input": [-15.5, -36.5], "expected": -15.499999999241744}, {"input": [-15.5, -36.0], "expected": -15.499999998749848}, {"input": [-15.5, -35.5], "expected": -15.499999997938847}, {"input": [-15.5, -35.0], "expected": -15.499999996601732}, {"input": [-15.5, -34.5], "expected": -15.499999994397204}, {"input": [-15.5, -34.0], "expected": -15.49999999076255}, {"input": [-15.5, -33.5], "expected": -15.499999984770021}, {"input": [-15.5, -33.0], "expected": -15.49999997489001}, {"input": [-15.5, -32.5], "expected": -15.499999958600624}, {"input": [-15.5, -32.0], "expected": -15.499999931743968}, {"input": [-15.5, -31.5], "expected": -15.499999887464831}, {"input": [-15.5, -31.0], "expected": -15.499999814460882}, {"input": [-15.5, -30.5], "expected": -15.499999694097726}, {"input": [-15.5, -30.0], "expected": -15.499999495652464}, {"input": [-15.5, -29.5], "expected": -15.499999168471627}, {"input": [-15.5, -29.0], "expected": -15.499998629041853}, {"input": [-15.5, -28.5], "expected": -15.499997739673148}, {"input": [-15.5, -28.0], "expected": -15.499996273353771}, {"input": [-15.5, -27.5], "expected": -15.499993855806522}, {"input": [-15.5, -27.0], "expected": -15.49998986995771}, {"input": [-15.5, -26.5], "expected": -15.499983298438682}, {"input": [-15.5, -26.0], "expected": -15.49997246392977}, {"input": [-15.5, -25.5], "expected": -15.499954601100782}, {"input": [-15.5, -25.0], "expected": -15.499925150971372}, {"input": [-15.5, -24.5], "expected": -15.499876597810276}, {"input": [-15.5, -24.0], "expected": -15.49979655232787}, {"input": [-15.5, -23.5], "expected": -15.499664593627104}, {"input": [-15.5, -23.0], "expected": -15.499447068524638}, {"input": [-15.5, -22.5], "expected": -15.499088533546226}, {"input": [-15.5, -22.0], "expected": -15.498497689840246}, {"input": [-15.5, -21.5], "expected": -15.49752431486227}, {"input": [-15.5, -21.0], "expected": -15.49592155672943}, {"input": [-15.5, -20.5], "expected": -15.493284651510882}, {"input": [-15.5, -20.0], "expected": -15.488952255151407}, {"input": [-15.5, -19.5], "expected": -15.48185007208219}, {"input": [-15.5, -19.0], "expected": -15.47024958172738}, {"input": [-15.5, -18.5], "expected": -15.451412648426258}, {"input": [-15.5, -18.0], "expected": -15.421110265707451}, {"input": [-15.5, -17.5], "expected": -15.373071988957028}, {"input": [-15.5, -17.0], "expected": -15.298586722017248}, {"input": [-15.5, -16.5], "expected": -15.186738312481777}, {"input": [-15.5, -16.0], "expected": -15.025923015819894}, {"input": [-15.5, -15.5], "expected": -14.806852819440055}, {"input": [-15.5, -15.0], "expected": -14.525923015819894}, {"input": [-15.5, -14.5], "expected": -14.186738312481777}, {"input": [-15.5, -14.0], "expected": -13.798586722017248}, {"input": [-15.5, -13.5], "expected": -13.373071988957028}, {"input": [-15.5, -13.0], "expected": -12.921110265707451}, {"input": [-15.5, -12.5], "expected": -12.451412648426258}, {"input": [-15.5, -12.0], "expected": -11.97024958172738}, {"input": [-15.5, -11.5], "expected": -11.48185007208219}, {"input": [-15.5, -11.0], "expected": -10.988952255151407}, {"input": [-15.5, -10.5], "expected": -10.493284651510882}, {"input": [-15.5, -10.0], "expected": -9.99592155672943}, {"input": [-15.5, -9.5], "expected": -9.49752431486227}, {"input": [-15.5, -9.0], "expected": -8.998497689840246}, {"input": [-15.5, -8.5], "expected": -8.499088533546226}, {"input": [-15.5, -8.0], "expected": -7.999447068524639}, {"input": [-15.5, -7.5], "expected": -7.499664593627104}, {"input": [-15.5, -7.0], "expected": -6.9997965523278705}, {"input": [-15.5, -6.5], "expected": -6.499876597810276}, {"input": [-15.5, -6.0], "expected": -5.999925150971371}, {"input": [-15.5, -5.5], "expected": -5.499954601100783}, {"input": [-15.5, -5.0], "expected": -4.999972463929772}, {"input": [-15.5, -4.5], "expected": -4.499983298438681}, {"input": [-15.5, -4.0], "expected": -3.9999898699577106}, {"input": [-15.5, -3.5], "expected": -3.4999938558065224}, {"input": [-15.5, -3.0], "expected": -2.999996273353772}, {"input": [-15.5, -2.5], "expected": -2.4999977396731476}, {"input": [-15.5, -2.0], "expected": -1.9999986290418534}, {"input": [-15.5, -1.5], "expected": -1.4999991684716265}, {"input": [-15.5, -1.0], "expected": -0.9999994956524646}, {"input": [-15.5, -0.5], "expected": -0.49999969409772627}, {"input": [-15.5, 0.0], "expected": 1.8553911904921443e-07}, {"input": [-15.5, 0.5], "expected": 0.5000001125351684}, {"input": [-15.5, 1.0], "expected": 1.0000000682560315}, {"input": [-15.5, 1.5], "expected": 1.5000000413993764}, {"input": [-15.5, 2.0], "expected": 2.0000000251099914}, {"input": [-15.5, 2.5], "expected": 2.5000000152299795}, {"input": [-15.5, 3.0], "expected": 3.0000000092374495}, {"input": [-15.5, 3.5], "expected": 3.5000000056027964}, {"input": [-15.5, 4.0], "expected": 4.0000000033982674}, {"input": [-15.5, 4.5], "expected": 4.500000002061154}, {"input": [-15.5, 5.0], "expected": 5.000000001250153}, {"input": [-15.5, 5.5], "expected": 5.500000000758256}, {"input": [-15.5, 6.0], "expected": 6.000000000459906}, {"input": [-15.5, 6.5], "expected": 6.500000000278947}, {"input": [-15.5, 7.0], "expected": 7.00000000016919}, {"input": [-15.5, 7.5], "expected": 7.500000000102618}, {"input": [-15.5, 8.0], "expected": 8.000000000062242}, {"input": [-15.5, 8.5], "expected": 8.500000000037751}, {"input": [-15.5, 9.0], "expected": 9.000000000022897}, {"input": [-15.5, 9.5], "expected": 9.500000000013888}, {"input": [-15.5, 10.0], "expected": 10.000000000008423}, {"input": [-15.5, 10.5], "expected": 10.500000000005109}, {"input": [-15.5, 11.0], "expected": 11.000000000003098}, {"input": [-15.5, 11.5], "expected": 11.50000000000188}, {"input": [-15.5, 12.0], "expected": 12.00000000000114}, {"input": [-15.5, 12.5], "expected": 12.500000000000691}, {"input": [-15.5, 13.0], "expected": 13.00000000000042}, {"input": [-15.5, 13.5], "expected": 13.500000000000254}, {"input": [-15.5, 14.0], "expected": 14.000000000000155}, {"input": [-15.5, 14.5], "expected": 14.500000000000094}, {"input": [-15.5, 15.0], "expected": 15.000000000000057}, {"input": [-15.5, 15.5], "expected": 15.500000000000034}, {"input": [-15.5, 16.0], "expected": 16.00000000000002}, {"input": [-15.5, 16.5], "expected": 16.500000000000014}, {"input": [-15.5, 17.0], "expected": 17.000000000000007}, {"input": [-15.5, 17.5], "expected": 17.500000000000004}, {"input": [-15.5, 18.0], "expected": 18.000000000000004}, {"input": [-15.5, 18.5], "expected": 18.5}, {"input": [-15.5, 19.0], "expected": 19.0}, {"input": [-15.5, 19.5], "expected": 19.5}, {"input": [-15.5, 20.0], "expected": 20.0}, {"input": [-15.5, 20.5], "expected": 20.5}, {"input": [-15.5, 21.0], "expected": 21.0}, {"input": [-15.5, 21.5], "expected": 21.5}, {"input": [-15.5, 22.0], "expected": 22.0}, {"input": [-15.5, 22.5], "expected": 22.5}, {"input": [-15.5, 23.0], "expected": 23.0}, {"input": [-15.5, 23.5], "expected": 23.5}, {"input": [-15.5, 24.0], "expected": 24.0}, {"input": [-15.5, 24.5], "expected": 24.5}, {"input": [-15.5, 25.0], "expected": 25.0}, {"input": [-15.5, 25.5], "expected": 25.5}, {"input": [-15.5, 26.0], "expected": 26.0}, {"input": [-15.5, 26.5], "expected": 26.5}, {"input": [-15.5, 27.0], "expected": 27.0}, {"input": [-15.5, 27.5], "expected": 27.5}, {"input": [-15.5, 28.0], "expected": 28.0}, {"input": [-15.5, 28.5], "expected": 28.5}, {"input": [-15.5, 29.0], "expected": 29.0}, {"input": [-15.5, 29.5], "expected": 29.5}, {"input": [-15.5, 30.0], "expected": 30.0}, {"input": [-15.5, 30.5], "expected": 30.5}, {"input": [-15.5, 31.0], "expected": 31.0}, {"input": [-15.5, 31.5], "expected": 31.5}, {"input": [-15.5, 32.0], "expected": 32.0}, {"input": [-15.5, 32.5], "expected": 32.5}, {"input": [-15.5, 33.0], "expected": 33.0}, {"input": [-15.5, 33.5], "expected": 33.5}, {"input": [-15.5, 34.0], "expected": 34.0}, {"input": [-15.5, 34.5], "expected": 34.5}, {"input": [-15.5, 35.0], "expected": 35.0}, {"input": [-15.5, 35.5], "expected": 35.5}, {"input": [-15.5, 36.0], "expected": 36.0}, {"input": [-15.5, 36.5], "expected": 36.5}, {"input": [-15.5, 37.0], "expected": 37.0}, {"input": [-15.5, 37.5], "expected": 37.5}, {"input": [-15.5, 38.0], "expected": 38.0}, {"input": [-15.5, 38.5], "expected": 38.5}, {"input": [-15.5, 39.0], "expected": 39.0}, {"input": [-15.5, 39.5], "expected": 39.5}, {"input": [-15.5, 40.0], "expected": 40.0}, {"input": [-15.5, 40.5], "expected": 40.5}, {"input": [-15.5, 41.0], "expected": 41.0}, {"input": [-15.5, 41.5], "expected": 41.5}, {"input": [-15.5, 42.0], "expected": 42.0}, {"input": [-15.5, 42.5], "expected": 42.5}, {"input": [-15.5, 43.0], "expected": 43.0}, {"input": [-15.5, 43.5], "expected": 43.5}, {"input": [-15.5, 44.0], "expected": 44.0}, {"input": [-15.5, 44.5], "expected": 44.5}, {"input": [-15.5, 45.0], "expected": 45.0}, {"input": [-15.5, 45.5], "expected": 45.5}, {"input": [-15.5, 46.0], "expected": 46.0}, {"input": [-15.5, 46.5], "expected": 46.5}, {"input": [-15.5, 47.0], "expected": 47.0}, {"input": [-15.5, 47.5], "expected": 47.5}, {"input": [-15.5, 48.0], "expected": 48.0}, {"input": [-15.5, 48.5], "expected": 48.5}, {"input": [-15.5, 49.0], "expected": 49.0}, {"input": [-15.5, 49.5], "expected": 49.5}, {"input": [-15.5, 50.0], "expected": 50.0}, {"input": [-15.5, 50.5], "expected": 50.5}, {"input": [-15.5, 51.0], "expected": 51.0}, {"input": [-15.5, 51.5], "expected": 51.5}, {"input": [-15.5, 52.0], "expected": 52.0}, {"input": [-15.5, 52.5], "expected": 52.5}, {"input": [-15.5, 53.0], "expected": 53.0}, {"input": [-15.5, 53.5], "expected": 53.5}, {"input": [-15.5, 54.0], "expected": 54.0}, {"input": [-15.5, 54.5], "expected": 54.5}, {"input": [-15.5, 55.0], "expected": 55.0}, {"input": [-15.5, 55.5], "expected": 55.5}, {"input": [-15.5, 56.0], "expected": 56.0}, {"input": [-15.5, 56.5], "expected": 56.5}, {"input": [-15.5, 57.0], "expected": 57.0}, {"input": [-15.5, 57.5], "expected": 57.5}, {"input": [-15.5, 58.0], "expected": 58.0}, {"input": [-15.5, 58.5], "expected": 58.5}, {"input": [-15.5, 59.0], "expected": 59.0}, {"input": [-15.5, 59.5], "expected": 59.5}, {"input": [-15.5, 60.0], "expected": 60.0}, {"input": [-15.5, 60.5], "expected": 60.5}, {"input": [-15.5, 61.0], "expected": 61.0}, {"input": [-15.5, 61.5], "expected": 61.5}, {"input": [-15.5, 62.0], "expected": 62.0}, {"input": [-15.5, 62.5], "expected": 62.5}, {"input": [-15.5, 63.0], "expected": 63.0}, {"input": [-15.5, 63.5], "expected": 63.5}, {"input": [-15.5, 64.0], "expected": 64.0}, {"input": [-15.5, 64.5], "expected": 64.5}, {"input": [-15.5, 65.0], "expected": 65.0}, {"input": [-15.5, 65.5], "expected": 65.5}, {"input": [-15.5, 66.0], "expected": 66.0}, {"input": [-15.5, 66.5], "expected": 66.5}, {"input": [-15.5, 67.0], "expected": 67.0}, {"input": [-15.5, 67.5], "expected": 67.5}, {"input": [-15.5, 68.0], "expected": 68.0}, {"input": [-15.5, 68.5], "expected": 68.5}, {"input": [-15.5, 69.0], "expected": 69.0}, {"input": [-15.5, 69.5], "expected": 69.5}, {"input": [-15.5, 70.0], "expected": 70.0}, {"input": [-15.5, 70.5], "expected": 70.5}, {"input": [-15.5, 71.0], "expected": 71.0}, {"input": [-15.5, 71.5], "expected": 71.5}, {"input": [-15.5, 72.0], "expected": 72.0}, {"input": [-15.5, 72.5], "expected": 72.5}, {"input": [-15.5, 73.0], "expected": 73.0}, {"input": [-15.5, 73.5], "expected": 73.5}, {"input": [-15.5, 74.0], "expected": 74.0}, {"input": [-15.5, 74.5], "expected": 74.5}, {"input": [-15.5, 75.0], "expected": 75.0}, {"input": [-15.5, 75.5], "expected": 75.5}, {"input": [-15.5, 76.0], "expected": 76.0}, {"input": [-15.5, 76.5], "expected": 76.5}, {"input": [-15.5, 77.0], "expected": 77.0}, {"input": [-15.5, 77.5], "expected": 77.5}, {"input": [-15.5, 78.0], "expected": 78.0}, {"input": [-15.5, 78.5], "expected": 78.5}, {"input": [-15.5, 79.0], "expected": 79.0}, {"input": [-15.5, 79.5], "expected": 79.5}, {"input": [-15.5, 80.0], "expected": 80.0}, {"input": [-15.5, 80.5], "expected": 80.5}, {"input": [-15.5, 81.0], "expected": 81.0}, {"input": [-15.5, 81.5], "expected": 81.5}, {"input": [-15.5, 82.0], "expected": 82.0}, {"input": [-15.5, 82.5], "expected": 82.5}, {"input": [-15.5, 83.0], "expected": 83.0}, {"input": [-15.5, 83.5], "expected": 83.5}, {"input": [-15.5, 84.0], "expected": 84.0}, {"input": [-15.5, 84.5], "expected": 84.5}, {"input": [-15.5, 85.0], "expected": 85.0}, {"input": [-15.5, 85.5], "expected": 85.5}, {"input": [-15.5, 86.0], "expected": 86.0}, {"input": [-15.5, 86.5], "expected": 86.5}, {"input": [-15.5, 87.0], "expected": 87.0}, {"input": [-15.5, 87.5], "expected": 87.5}, {"input": [-15.5, 88.0], "expected": 88.0}, {"input": [-15.5, 88.5], "expected": 88.5}, {"input": [-15.5, 89.0], "expected": 89.0}, {"input": [-15.5, 89.5], "expected": 89.5}, {"input": [-15.5, 90.0], "expected": 90.0}, {"input": [-15.5, 90.5], "expected": 90.5}, {"input": [-15.5, 91.0], "expected": 91.0}, {"input": [-15.5, 91.5], "expected": 91.5}, {"input": [-15.5, 92.0], "expected": 92.0}, {"input": [-15.5, 92.5], "expected": 92.5}, {"input": [-15.5, 93.0], "expected": 93.0}, {"input": [-15.5, 93.5], "expected": 93.5}, {"input": [-15.5, 94.0], "expected": 94.0}, {"input": [-15.5, 94.5], "expected": 94.5}, {"input": [-15.5, 95.0], "expected": 95.0}, {"input": [-15.5, 95.5], "expected": 95.5}, {"input": [-15.5, 96.0], "expected": 96.0}, {"input": [-15.5, 96.5], "expected": 96.5}, {"input": [-15.5, 97.0], "expected": 97.0}, {"input": [-15.5, 97.5], "expected": 97.5}, {"input": [-15.5, 98.0], "expected": 98.0}, {"input": [-15.5, 98.5], "expected": 98.5}, {"input": [-15.5, 99.0], "expected": 99.0}, {"input": [-15.5, 99.5], "expected": 99.5}, {"input": [-15.0, -100.0], "expected": -15.0}, {"input": [-15.0, -99.5], "expected": -15.0}, {"input": [-15.0, -99.0], "expected": -15.0}, {"input": [-15.0, -98.5], "expected": -15.0}, {"input": [-15.0, -98.0], "expected": -15.0}, {"input": [-15.0, -97.5], "expected": -15.0}, {"input": [-15.0, -97.0], "expected": -15.0}, {"input": [-15.0, -96.5], "expected": -15.0}, {"input": [-15.0, -96.0], "expected": -15.0}, {"input": [-15.0, -95.5], "expected": -15.0}, {"input": [-15.0, -95.0], "expected": -15.0}, {"input": [-15.0, -94.5], "expected": -15.0}, {"input": [-15.0, -94.0], "expected": -15.0}, {"input": [-15.0, -93.5], "expected": -15.0}, {"input": [-15.0, -93.0], "expected": -15.0}, {"input": [-15.0, -92.5], "expected": -15.0}, {"input": [-15.0, -92.0], "expected": -15.0}, {"input": [-15.0, -91.5], "expected": -15.0}, {"input": [-15.0, -91.0], "expected": -15.0}, {"input": [-15.0, -90.5], "expected": -15.0}, {"input": [-15.0, -90.0], "expected": -15.0}, {"input": [-15.0, -89.5], "expected": -15.0}, {"input": [-15.0, -89.0], "expected": -15.0}, {"input": [-15.0, -88.5], "expected": -15.0}, {"input": [-15.0, -88.0], "expected": -15.0}, {"input": [-15.0, -87.5], "expected": -15.0}, {"input": [-15.0, -87.0], "expected": -15.0}, {"input": [-15.0, -86.5], "expected": -15.0}, {"input": [-15.0, -86.0], "expected": -15.0}, {"input": [-15.0, -85.5], "expected": -15.0}, {"input": [-15.0, -85.0], "expected": -15.0}, {"input": [-15.0, -84.5], "expected": -15.0}, {"input": [-15.0, -84.0], "expected": -15.0}, {"input": [-15.0, -83.5], "expected": -15.0}, {"input": [-15.0, -83.0], "expected": -15.0}, {"input": [-15.0, -82.5], "expected": -15.0}, {"input": [-15.0, -82.0], "expected": -15.0}, {"input": [-15.0, -81.5], "expected": -15.0}, {"input": [-15.0, -81.0], "expected": -15.0}, {"input": [-15.0, -80.5], "expected": -15.0}, {"input": [-15.0, -80.0], "expected": -15.0}, {"input": [-15.0, -79.5], "expected": -15.0}, {"input": [-15.0, -79.0], "expected": -15.0}, {"input": [-15.0, -78.5], "expected": -15.0}, {"input": [-15.0, -78.0], "expected": -15.0}, {"input": [-15.0, -77.5], "expected": -15.0}, {"input": [-15.0, -77.0], "expected": -15.0}, {"input": [-15.0, -76.5], "expected": -15.0}, {"input": [-15.0, -76.0], "expected": -15.0}, {"input": [-15.0, -75.5], "expected": -15.0}, {"input": [-15.0, -75.0], "expected": -15.0}, {"input": [-15.0, -74.5], "expected": -15.0}, {"input": [-15.0, -74.0], "expected": -15.0}, {"input": [-15.0, -73.5], "expected": -15.0}, {"input": [-15.0, -73.0], "expected": -15.0}, {"input": [-15.0, -72.5], "expected": -15.0}, {"input": [-15.0, -72.0], "expected": -15.0}, {"input": [-15.0, -71.5], "expected": -15.0}, {"input": [-15.0, -71.0], "expected": -15.0}, {"input": [-15.0, -70.5], "expected": -15.0}, {"input": [-15.0, -70.0], "expected": -15.0}, {"input": [-15.0, -69.5], "expected": -15.0}, {"input": [-15.0, -69.0], "expected": -15.0}, {"input": [-15.0, -68.5], "expected": -15.0}, {"input": [-15.0, -68.0], "expected": -15.0}, {"input": [-15.0, -67.5], "expected": -15.0}, {"input": [-15.0, -67.0], "expected": -15.0}, {"input": [-15.0, -66.5], "expected": -15.0}, {"input": [-15.0, -66.0], "expected": -15.0}, {"input": [-15.0, -65.5], "expected": -15.0}, {"input": [-15.0, -65.0], "expected": -15.0}, {"input": [-15.0, -64.5], "expected": -15.0}, {"input": [-15.0, -64.0], "expected": -15.0}, {"input": [-15.0, -63.5], "expected": -15.0}, {"input": [-15.0, -63.0], "expected": -15.0}, {"input": [-15.0, -62.5], "expected": -15.0}, {"input": [-15.0, -62.0], "expected": -15.0}, {"input": [-15.0, -61.5], "expected": -15.0}, {"input": [-15.0, -61.0], "expected": -15.0}, {"input": [-15.0, -60.5], "expected": -15.0}, {"input": [-15.0, -60.0], "expected": -15.0}, {"input": [-15.0, -59.5], "expected": -15.0}, {"input": [-15.0, -59.0], "expected": -15.0}, {"input": [-15.0, -58.5], "expected": -15.0}, {"input": [-15.0, -58.0], "expected": -15.0}, {"input": [-15.0, -57.5], "expected": -15.0}, {"input": [-15.0, -57.0], "expected": -15.0}, {"input": [-15.0, -56.5], "expected": -15.0}, {"input": [-15.0, -56.0], "expected": -15.0}, {"input": [-15.0, -55.5], "expected": -15.0}, {"input": [-15.0, -55.0], "expected": -15.0}, {"input": [-15.0, -54.5], "expected": -15.0}, {"input": [-15.0, -54.0], "expected": -15.0}, {"input": [-15.0, -53.5], "expected": -15.0}, {"input": [-15.0, -53.0], "expected": -15.0}, {"input": [-15.0, -52.5], "expected": -15.0}, {"input": [-15.0, -52.0], "expected": -15.0}, {"input": [-15.0, -51.5], "expected": -15.0}, {"input": [-15.0, -51.0], "expected": -15.0}, {"input": [-15.0, -50.5], "expected": -15.0}, {"input": [-15.0, -50.0], "expected": -15.0}, {"input": [-15.0, -49.5], "expected": -14.999999999999998}, {"input": [-15.0, -49.0], "expected": -14.999999999999998}, {"input": [-15.0, -48.5], "expected": -14.999999999999996}, {"input": [-15.0, -48.0], "expected": -14.999999999999995}, {"input": [-15.0, -47.5], "expected": -14.999999999999993}, {"input": [-15.0, -47.0], "expected": -14.999999999999988}, {"input": [-15.0, -46.5], "expected": -14.999999999999979}, {"input": [-15.0, -46.0], "expected": -14.999999999999966}, {"input": [-15.0, -45.5], "expected": -14.999999999999943}, {"input": [-15.0, -45.0], "expected": -14.999999999999906}, {"input": [-15.0, -44.5], "expected": -14.999999999999845}, {"input": [-15.0, -44.0], "expected": -14.999999999999746}, {"input": [-15.0, -43.5], "expected": -14.99999999999958}, {"input": [-15.0, -43.0], "expected": -14.999999999999309}, {"input": [-15.0, -42.5], "expected": -14.99999999999886}, {"input": [-15.0, -42.0], "expected": -14.99999999999812}, {"input": [-15.0, -41.5], "expected": -14.999999999996902}, {"input": [-15.0, -41.0], "expected": -14.999999999994891}, {"input": [-15.0, -40.5], "expected": -14.999999999991577}, {"input": [-15.0, -40.0], "expected": -14.999999999986112}, {"input": [-15.0, -39.5], "expected": -14.999999999977103}, {"input": [-15.0, -39.0], "expected": -14.999999999962249}, {"input": [-15.0, -38.5], "expected": -14.999999999937758}, {"input": [-15.0, -38.0], "expected": -14.999999999897382}, {"input": [-15.0, -37.5], "expected": -14.999999999830811}, {"input": [-15.0, -37.0], "expected": -14.999999999721053}, {"input": [-15.0, -36.5], "expected": -14.999999999540094}, {"input": [-15.0, -36.0], "expected": -14.999999999241744}, {"input": [-15.0, -35.5], "expected": -14.999999998749848}, {"input": [-15.0, -35.0], "expected": -14.999999997938847}, {"input": [-15.0, -34.5], "expected": -14.999999996601732}, {"input": [-15.0, -34.0], "expected": -14.999999994397204}, {"input": [-15.0, -33.5], "expected": -14.99999999076255}, {"input": [-15.0, -33.0], "expected": -14.999999984770021}, {"input": [-15.0, -32.5], "expected": -14.99999997489001}, {"input": [-15.0, -32.0], "expected": -14.999999958600624}, {"input": [-15.0, -31.5], "expected": -14.999999931743968}, {"input": [-15.0, -31.0], "expected": -14.999999887464831}, {"input": [-15.0, -30.5], "expected": -14.999999814460882}, {"input": [-15.0, -30.0], "expected": -14.999999694097726}, {"input": [-15.0, -29.5], "expected": -14.999999495652464}, {"input": [-15.0, -29.0], "expected": -14.999999168471627}, {"input": [-15.0, -28.5], "expected": -14.999998629041853}, {"input": [-15.0, -28.0], "expected": -14.999997739673148}, {"input": [-15.0, -27.5], "expected": -14.999996273353771}, {"input": [-15.0, -27.0], "expected": -14.999993855806522}, {"input": [-15.0, -26.5], "expected": -14.99998986995771}, {"input": [-15.0, -26.0], "expected": -14.999983298438682}, {"input": [-15.0, -25.5], "expected": -14.99997246392977}, {"input": [-15.0, -25.0], "expected": -14.999954601100782}, {"input": [-15.0, -24.5], "expected": -14.999925150971372}, {"input": [-15.0, -24.0], "expected": -14.999876597810276}, {"input": [-15.0, -23.5], "expected": -14.99979655232787}, {"input": [-15.0, -23.0], "expected": -14.999664593627104}, {"input": [-15.0, -22.5], "expected": -14.999447068524638}, {"input": [-15.0, -22.0], "expected": -14.999088533546226}, {"input": [-15.0, -21.5], "expected": -14.998497689840246}, {"input": [-15.0, -21.0], "expected": -14.99752431486227}, {"input": [-15.0, -20.5], "expected": -14.99592155672943}, {"input": [-15.0, -20.0], "expected": -14.993284651510882}, {"input": [-15.0, -19.5], "expected": -14.988952255151407}, {"input": [-15.0, -19.0], "expected": -14.98185007208219}, {"input": [-15.0, -18.5], "expected": -14.97024958172738}, {"input": [-15.0, -18.0], "expected": -14.951412648426258}, {"input": [-15.0, -17.5], "expected": -14.921110265707451}, {"input": [-15.0, -17.0], "expected": -14.873071988957028}, {"input": [-15.0, -16.5], "expected": -14.798586722017248}, {"input": [-15.0, -16.0], "expected": -14.686738312481777}, {"input": [-15.0, -15.5], "expected": -14.525923015819894}, {"input": [-15.0, -15.0], "expected": -14.306852819440055}, {"input": [-15.0, -14.5], "expected": -14.025923015819894}, {"input": [-15.0, -14.0], "expected": -13.686738312481777}, {"input": [-15.0, -13.5], "expected": -13.298586722017248}, {"input": [-15.0, -13.0], "expected": -12.873071988957028}, {"input": [-15.0, -12.5], "expected": -12.421110265707451}, {"input": [-15.0, -12.0], "expected": -11.951412648426258}, {"input": [-15.0, -11.5], "expected": -11.47024958172738}, {"input": [-15.0, -11.0], "expected": -10.98185007208219}, {"input": [-15.0, -10.5], "expected": -10.488952255151407}, {"input": [-15.0, -10.0], "expected": -9.993284651510882}, {"input": [-15.0, -9.5], "expected": -9.49592155672943}, {"input": [-15.0, -9.0], "expected": -8.99752431486227}, {"input": [-15.0, -8.5], "expected": -8.498497689840246}, {"input": [-15.0, -8.0], "expected": -7.999088533546225}, {"input": [-15.0, -7.5], "expected": -7.499447068524639}, {"input": [-15.0, -7.0], "expected": -6.999664593627104}, {"input": [-15.0, -6.5], "expected": -6.4997965523278705}, {"input": [-15.0, -6.0], "expected": -5.999876597810276}, {"input": [-15.0, -5.5], "expected": -5.499925150971371}, {"input": [-15.0, -5.0], "expected": -4.999954601100783}, {"input": [-15.0, -4.5], "expected": -4.499972463929772}, {"input": [-15.0, -4.0], "expected": -3.9999832984386816}, {"input": [-15.0, -3.5], "expected": -3.4999898699577106}, {"input": [-15.0, -3.0], "expected": -2.9999938558065224}, {"input": [-15.0, -2.5], "expected": -2.499996273353772}, {"input": [-15.0, -2.0], "expected": -1.9999977396731476}, {"input": [-15.0, -1.5], "expected": -1.4999986290418534}, {"input": [-15.0, -1.0], "expected": -0.9999991684716266}, {"input": [-15.0, -0.5], "expected": -0.4999994956524646}, {"input": [-15.0, 0.0], "expected": 3.059022737137205e-07}, {"input": [-15.0, 0.5], "expected": 0.5000001855391191}, {"input": [-15.0, 1.0], "expected": 1.0000001125351683}, {"input": [-15.0, 1.5], "expected": 1.5000000682560315}, {"input": [-15.0, 2.0], "expected": 2.0000000413993764}, {"input": [-15.0, 2.5], "expected": 2.5000000251099914}, {"input": [-15.0, 3.0], "expected": 3.0000000152299795}, {"input": [-15.0, 3.5], "expected": 3.5000000092374495}, {"input": [-15.0, 4.0], "expected": 4.0000000056027964}, {"input": [-15.0, 4.5], "expected": 4.5000000033982674}, {"input": [-15.0, 5.0], "expected": 5.000000002061154}, {"input": [-15.0, 5.5], "expected": 5.500000001250153}, {"input": [-15.0, 6.0], "expected": 6.000000000758256}, {"input": [-15.0, 6.5], "expected": 6.500000000459906}, {"input": [-15.0, 7.0], "expected": 7.000000000278947}, {"input": [-15.0, 7.5], "expected": 7.50000000016919}, {"input": [-15.0, 8.0], "expected": 8.000000000102618}, {"input": [-15.0, 8.5], "expected": 8.500000000062242}, {"input": [-15.0, 9.0], "expected": 9.000000000037751}, {"input": [-15.0, 9.5], "expected": 9.500000000022897}, {"input": [-15.0, 10.0], "expected": 10.000000000013888}, {"input": [-15.0, 10.5], "expected": 10.500000000008423}, {"input": [-15.0, 11.0], "expected": 11.000000000005109}, {"input": [-15.0, 11.5], "expected": 11.500000000003098}, {"input": [-15.0, 12.0], "expected": 12.00000000000188}, {"input": [-15.0, 12.5], "expected": 12.50000000000114}, {"input": [-15.0, 13.0], "expected": 13.000000000000691}, {"input": [-15.0, 13.5], "expected": 13.50000000000042}, {"input": [-15.0, 14.0], "expected": 14.000000000000254}, {"input": [-15.0, 14.5], "expected": 14.500000000000155}, {"input": [-15.0, 15.0], "expected": 15.000000000000094}, {"input": [-15.0, 15.5], "expected": 15.500000000000057}, {"input": [-15.0, 16.0], "expected": 16.000000000000036}, {"input": [-15.0, 16.5], "expected": 16.50000000000002}, {"input": [-15.0, 17.0], "expected": 17.000000000000014}, {"input": [-15.0, 17.5], "expected": 17.500000000000007}, {"input": [-15.0, 18.0], "expected": 18.000000000000004}, {"input": [-15.0, 18.5], "expected": 18.500000000000004}, {"input": [-15.0, 19.0], "expected": 19.0}, {"input": [-15.0, 19.5], "expected": 19.5}, {"input": [-15.0, 20.0], "expected": 20.0}, {"input": [-15.0, 20.5], "expected": 20.5}, {"input": [-15.0, 21.0], "expected": 21.0}, {"input": [-15.0, 21.5], "expected": 21.5}, {"input": [-15.0, 22.0], "expected": 22.0}, {"input": [-15.0, 22.5], "expected": 22.5}, {"input": [-15.0, 23.0], "expected": 23.0}, {"input": [-15.0, 23.5], "expected": 23.5}, {"input": [-15.0, 24.0], "expected": 24.0}, {"input": [-15.0, 24.5], "expected": 24.5}, {"input": [-15.0, 25.0], "expected": 25.0}, {"input": [-15.0, 25.5], "expected": 25.5}, {"input": [-15.0, 26.0], "expected": 26.0}, {"input": [-15.0, 26.5], "expected": 26.5}, {"input": [-15.0, 27.0], "expected": 27.0}, {"input": [-15.0, 27.5], "expected": 27.5}, {"input": [-15.0, 28.0], "expected": 28.0}, {"input": [-15.0, 28.5], "expected": 28.5}, {"input": [-15.0, 29.0], "expected": 29.0}, {"input": [-15.0, 29.5], "expected": 29.5}, {"input": [-15.0, 30.0], "expected": 30.0}, {"input": [-15.0, 30.5], "expected": 30.5}, {"input": [-15.0, 31.0], "expected": 31.0}, {"input": [-15.0, 31.5], "expected": 31.5}, {"input": [-15.0, 32.0], "expected": 32.0}, {"input": [-15.0, 32.5], "expected": 32.5}, {"input": [-15.0, 33.0], "expected": 33.0}, {"input": [-15.0, 33.5], "expected": 33.5}, {"input": [-15.0, 34.0], "expected": 34.0}, {"input": [-15.0, 34.5], "expected": 34.5}, {"input": [-15.0, 35.0], "expected": 35.0}, {"input": [-15.0, 35.5], "expected": 35.5}, {"input": [-15.0, 36.0], "expected": 36.0}, {"input": [-15.0, 36.5], "expected": 36.5}, {"input": [-15.0, 37.0], "expected": 37.0}, {"input": [-15.0, 37.5], "expected": 37.5}, {"input": [-15.0, 38.0], "expected": 38.0}, {"input": [-15.0, 38.5], "expected": 38.5}, {"input": [-15.0, 39.0], "expected": 39.0}, {"input": [-15.0, 39.5], "expected": 39.5}, {"input": [-15.0, 40.0], "expected": 40.0}, {"input": [-15.0, 40.5], "expected": 40.5}, {"input": [-15.0, 41.0], "expected": 41.0}, {"input": [-15.0, 41.5], "expected": 41.5}, {"input": [-15.0, 42.0], "expected": 42.0}, {"input": [-15.0, 42.5], "expected": 42.5}, {"input": [-15.0, 43.0], "expected": 43.0}, {"input": [-15.0, 43.5], "expected": 43.5}, {"input": [-15.0, 44.0], "expected": 44.0}, {"input": [-15.0, 44.5], "expected": 44.5}, {"input": [-15.0, 45.0], "expected": 45.0}, {"input": [-15.0, 45.5], "expected": 45.5}, {"input": [-15.0, 46.0], "expected": 46.0}, {"input": [-15.0, 46.5], "expected": 46.5}, {"input": [-15.0, 47.0], "expected": 47.0}, {"input": [-15.0, 47.5], "expected": 47.5}, {"input": [-15.0, 48.0], "expected": 48.0}, {"input": [-15.0, 48.5], "expected": 48.5}, {"input": [-15.0, 49.0], "expected": 49.0}, {"input": [-15.0, 49.5], "expected": 49.5}, {"input": [-15.0, 50.0], "expected": 50.0}, {"input": [-15.0, 50.5], "expected": 50.5}, {"input": [-15.0, 51.0], "expected": 51.0}, {"input": [-15.0, 51.5], "expected": 51.5}, {"input": [-15.0, 52.0], "expected": 52.0}, {"input": [-15.0, 52.5], "expected": 52.5}, {"input": [-15.0, 53.0], "expected": 53.0}, {"input": [-15.0, 53.5], "expected": 53.5}, {"input": [-15.0, 54.0], "expected": 54.0}, {"input": [-15.0, 54.5], "expected": 54.5}, {"input": [-15.0, 55.0], "expected": 55.0}, {"input": [-15.0, 55.5], "expected": 55.5}, {"input": [-15.0, 56.0], "expected": 56.0}, {"input": [-15.0, 56.5], "expected": 56.5}, {"input": [-15.0, 57.0], "expected": 57.0}, {"input": [-15.0, 57.5], "expected": 57.5}, {"input": [-15.0, 58.0], "expected": 58.0}, {"input": [-15.0, 58.5], "expected": 58.5}, {"input": [-15.0, 59.0], "expected": 59.0}, {"input": [-15.0, 59.5], "expected": 59.5}, {"input": [-15.0, 60.0], "expected": 60.0}, {"input": [-15.0, 60.5], "expected": 60.5}, {"input": [-15.0, 61.0], "expected": 61.0}, {"input": [-15.0, 61.5], "expected": 61.5}, {"input": [-15.0, 62.0], "expected": 62.0}, {"input": [-15.0, 62.5], "expected": 62.5}, {"input": [-15.0, 63.0], "expected": 63.0}, {"input": [-15.0, 63.5], "expected": 63.5}, {"input": [-15.0, 64.0], "expected": 64.0}, {"input": [-15.0, 64.5], "expected": 64.5}, {"input": [-15.0, 65.0], "expected": 65.0}, {"input": [-15.0, 65.5], "expected": 65.5}, {"input": [-15.0, 66.0], "expected": 66.0}, {"input": [-15.0, 66.5], "expected": 66.5}, {"input": [-15.0, 67.0], "expected": 67.0}, {"input": [-15.0, 67.5], "expected": 67.5}, {"input": [-15.0, 68.0], "expected": 68.0}, {"input": [-15.0, 68.5], "expected": 68.5}, {"input": [-15.0, 69.0], "expected": 69.0}, {"input": [-15.0, 69.5], "expected": 69.5}, {"input": [-15.0, 70.0], "expected": 70.0}, {"input": [-15.0, 70.5], "expected": 70.5}, {"input": [-15.0, 71.0], "expected": 71.0}, {"input": [-15.0, 71.5], "expected": 71.5}, {"input": [-15.0, 72.0], "expected": 72.0}, {"input": [-15.0, 72.5], "expected": 72.5}, {"input": [-15.0, 73.0], "expected": 73.0}, {"input": [-15.0, 73.5], "expected": 73.5}, {"input": [-15.0, 74.0], "expected": 74.0}, {"input": [-15.0, 74.5], "expected": 74.5}, {"input": [-15.0, 75.0], "expected": 75.0}, {"input": [-15.0, 75.5], "expected": 75.5}, {"input": [-15.0, 76.0], "expected": 76.0}, {"input": [-15.0, 76.5], "expected": 76.5}, {"input": [-15.0, 77.0], "expected": 77.0}, {"input": [-15.0, 77.5], "expected": 77.5}, {"input": [-15.0, 78.0], "expected": 78.0}, {"input": [-15.0, 78.5], "expected": 78.5}, {"input": [-15.0, 79.0], "expected": 79.0}, {"input": [-15.0, 79.5], "expected": 79.5}, {"input": [-15.0, 80.0], "expected": 80.0}, {"input": [-15.0, 80.5], "expected": 80.5}, {"input": [-15.0, 81.0], "expected": 81.0}, {"input": [-15.0, 81.5], "expected": 81.5}, {"input": [-15.0, 82.0], "expected": 82.0}, {"input": [-15.0, 82.5], "expected": 82.5}, {"input": [-15.0, 83.0], "expected": 83.0}, {"input": [-15.0, 83.5], "expected": 83.5}, {"input": [-15.0, 84.0], "expected": 84.0}, {"input": [-15.0, 84.5], "expected": 84.5}, {"input": [-15.0, 85.0], "expected": 85.0}, {"input": [-15.0, 85.5], "expected": 85.5}, {"input": [-15.0, 86.0], "expected": 86.0}, {"input": [-15.0, 86.5], "expected": 86.5}, {"input": [-15.0, 87.0], "expected": 87.0}, {"input": [-15.0, 87.5], "expected": 87.5}, {"input": [-15.0, 88.0], "expected": 88.0}, {"input": [-15.0, 88.5], "expected": 88.5}, {"input": [-15.0, 89.0], "expected": 89.0}, {"input": [-15.0, 89.5], "expected": 89.5}, {"input": [-15.0, 90.0], "expected": 90.0}, {"input": [-15.0, 90.5], "expected": 90.5}, {"input": [-15.0, 91.0], "expected": 91.0}, {"input": [-15.0, 91.5], "expected": 91.5}, {"input": [-15.0, 92.0], "expected": 92.0}, {"input": [-15.0, 92.5], "expected": 92.5}, {"input": [-15.0, 93.0], "expected": 93.0}, {"input": [-15.0, 93.5], "expected": 93.5}, {"input": [-15.0, 94.0], "expected": 94.0}, {"input": [-15.0, 94.5], "expected": 94.5}, {"input": [-15.0, 95.0], "expected": 95.0}, {"input": [-15.0, 95.5], "expected": 95.5}, {"input": [-15.0, 96.0], "expected": 96.0}, {"input": [-15.0, 96.5], "expected": 96.5}, {"input": [-15.0, 97.0], "expected": 97.0}, {"input": [-15.0, 97.5], "expected": 97.5}, {"input": [-15.0, 98.0], "expected": 98.0}, {"input": [-15.0, 98.5], "expected": 98.5}, {"input": [-15.0, 99.0], "expected": 99.0}, {"input": [-15.0, 99.5], "expected": 99.5}, {"input": [-14.5, -100.0], "expected": -14.5}, {"input": [-14.5, -99.5], "expected": -14.5}, {"input": [-14.5, -99.0], "expected": -14.5}, {"input": [-14.5, -98.5], "expected": -14.5}, {"input": [-14.5, -98.0], "expected": -14.5}, {"input": [-14.5, -97.5], "expected": -14.5}, {"input": [-14.5, -97.0], "expected": -14.5}, {"input": [-14.5, -96.5], "expected": -14.5}, {"input": [-14.5, -96.0], "expected": -14.5}, {"input": [-14.5, -95.5], "expected": -14.5}, {"input": [-14.5, -95.0], "expected": -14.5}, {"input": [-14.5, -94.5], "expected": -14.5}, {"input": [-14.5, -94.0], "expected": -14.5}, {"input": [-14.5, -93.5], "expected": -14.5}, {"input": [-14.5, -93.0], "expected": -14.5}, {"input": [-14.5, -92.5], "expected": -14.5}, {"input": [-14.5, -92.0], "expected": -14.5}, {"input": [-14.5, -91.5], "expected": -14.5}, {"input": [-14.5, -91.0], "expected": -14.5}, {"input": [-14.5, -90.5], "expected": -14.5}, {"input": [-14.5, -90.0], "expected": -14.5}, {"input": [-14.5, -89.5], "expected": -14.5}, {"input": [-14.5, -89.0], "expected": -14.5}, {"input": [-14.5, -88.5], "expected": -14.5}, {"input": [-14.5, -88.0], "expected": -14.5}, {"input": [-14.5, -87.5], "expected": -14.5}, {"input": [-14.5, -87.0], "expected": -14.5}, {"input": [-14.5, -86.5], "expected": -14.5}, {"input": [-14.5, -86.0], "expected": -14.5}, {"input": [-14.5, -85.5], "expected": -14.5}, {"input": [-14.5, -85.0], "expected": -14.5}, {"input": [-14.5, -84.5], "expected": -14.5}, {"input": [-14.5, -84.0], "expected": -14.5}, {"input": [-14.5, -83.5], "expected": -14.5}, {"input": [-14.5, -83.0], "expected": -14.5}, {"input": [-14.5, -82.5], "expected": -14.5}, {"input": [-14.5, -82.0], "expected": -14.5}, {"input": [-14.5, -81.5], "expected": -14.5}, {"input": [-14.5, -81.0], "expected": -14.5}, {"input": [-14.5, -80.5], "expected": -14.5}, {"input": [-14.5, -80.0], "expected": -14.5}, {"input": [-14.5, -79.5], "expected": -14.5}, {"input": [-14.5, -79.0], "expected": -14.5}, {"input": [-14.5, -78.5], "expected": -14.5}, {"input": [-14.5, -78.0], "expected": -14.5}, {"input": [-14.5, -77.5], "expected": -14.5}, {"input": [-14.5, -77.0], "expected": -14.5}, {"input": [-14.5, -76.5], "expected": -14.5}, {"input": [-14.5, -76.0], "expected": -14.5}, {"input": [-14.5, -75.5], "expected": -14.5}, {"input": [-14.5, -75.0], "expected": -14.5}, {"input": [-14.5, -74.5], "expected": -14.5}, {"input": [-14.5, -74.0], "expected": -14.5}, {"input": [-14.5, -73.5], "expected": -14.5}, {"input": [-14.5, -73.0], "expected": -14.5}, {"input": [-14.5, -72.5], "expected": -14.5}, {"input": [-14.5, -72.0], "expected": -14.5}, {"input": [-14.5, -71.5], "expected": -14.5}, {"input": [-14.5, -71.0], "expected": -14.5}, {"input": [-14.5, -70.5], "expected": -14.5}, {"input": [-14.5, -70.0], "expected": -14.5}, {"input": [-14.5, -69.5], "expected": -14.5}, {"input": [-14.5, -69.0], "expected": -14.5}, {"input": [-14.5, -68.5], "expected": -14.5}, {"input": [-14.5, -68.0], "expected": -14.5}, {"input": [-14.5, -67.5], "expected": -14.5}, {"input": [-14.5, -67.0], "expected": -14.5}, {"input": [-14.5, -66.5], "expected": -14.5}, {"input": [-14.5, -66.0], "expected": -14.5}, {"input": [-14.5, -65.5], "expected": -14.5}, {"input": [-14.5, -65.0], "expected": -14.5}, {"input": [-14.5, -64.5], "expected": -14.5}, {"input": [-14.5, -64.0], "expected": -14.5}, {"input": [-14.5, -63.5], "expected": -14.5}, {"input": [-14.5, -63.0], "expected": -14.5}, {"input": [-14.5, -62.5], "expected": -14.5}, {"input": [-14.5, -62.0], "expected": -14.5}, {"input": [-14.5, -61.5], "expected": -14.5}, {"input": [-14.5, -61.0], "expected": -14.5}, {"input": [-14.5, -60.5], "expected": -14.5}, {"input": [-14.5, -60.0], "expected": -14.5}, {"input": [-14.5, -59.5], "expected": -14.5}, {"input": [-14.5, -59.0], "expected": -14.5}, {"input": [-14.5, -58.5], "expected": -14.5}, {"input": [-14.5, -58.0], "expected": -14.5}, {"input": [-14.5, -57.5], "expected": -14.5}, {"input": [-14.5, -57.0], "expected": -14.5}, {"input": [-14.5, -56.5], "expected": -14.5}, {"input": [-14.5, -56.0], "expected": -14.5}, {"input": [-14.5, -55.5], "expected": -14.5}, {"input": [-14.5, -55.0], "expected": -14.5}, {"input": [-14.5, -54.5], "expected": -14.5}, {"input": [-14.5, -54.0], "expected": -14.5}, {"input": [-14.5, -53.5], "expected": -14.5}, {"input": [-14.5, -53.0], "expected": -14.5}, {"input": [-14.5, -52.5], "expected": -14.5}, {"input": [-14.5, -52.0], "expected": -14.5}, {"input": [-14.5, -51.5], "expected": -14.5}, {"input": [-14.5, -51.0], "expected": -14.5}, {"input": [-14.5, -50.5], "expected": -14.5}, {"input": [-14.5, -50.0], "expected": -14.5}, {"input": [-14.5, -49.5], "expected": -14.5}, {"input": [-14.5, -49.0], "expected": -14.499999999999998}, {"input": [-14.5, -48.5], "expected": -14.499999999999998}, {"input": [-14.5, -48.0], "expected": -14.499999999999996}, {"input": [-14.5, -47.5], "expected": -14.499999999999995}, {"input": [-14.5, -47.0], "expected": -14.499999999999993}, {"input": [-14.5, -46.5], "expected": -14.499999999999988}, {"input": [-14.5, -46.0], "expected": -14.499999999999979}, {"input": [-14.5, -45.5], "expected": -14.499999999999966}, {"input": [-14.5, -45.0], "expected": -14.499999999999943}, {"input": [-14.5, -44.5], "expected": -14.499999999999906}, {"input": [-14.5, -44.0], "expected": -14.499999999999845}, {"input": [-14.5, -43.5], "expected": -14.499999999999746}, {"input": [-14.5, -43.0], "expected": -14.49999999999958}, {"input": [-14.5, -42.5], "expected": -14.499999999999309}, {"input": [-14.5, -42.0], "expected": -14.49999999999886}, {"input": [-14.5, -41.5], "expected": -14.49999999999812}, {"input": [-14.5, -41.0], "expected": -14.499999999996902}, {"input": [-14.5, -40.5], "expected": -14.499999999994891}, {"input": [-14.5, -40.0], "expected": -14.499999999991577}, {"input": [-14.5, -39.5], "expected": -14.499999999986112}, {"input": [-14.5, -39.0], "expected": -14.499999999977103}, {"input": [-14.5, -38.5], "expected": -14.499999999962249}, {"input": [-14.5, -38.0], "expected": -14.499999999937758}, {"input": [-14.5, -37.5], "expected": -14.499999999897382}, {"input": [-14.5, -37.0], "expected": -14.499999999830811}, {"input": [-14.5, -36.5], "expected": -14.499999999721053}, {"input": [-14.5, -36.0], "expected": -14.499999999540094}, {"input": [-14.5, -35.5], "expected": -14.499999999241744}, {"input": [-14.5, -35.0], "expected": -14.499999998749848}, {"input": [-14.5, -34.5], "expected": -14.499999997938847}, {"input": [-14.5, -34.0], "expected": -14.499999996601732}, {"input": [-14.5, -33.5], "expected": -14.499999994397204}, {"input": [-14.5, -33.0], "expected": -14.49999999076255}, {"input": [-14.5, -32.5], "expected": -14.499999984770021}, {"input": [-14.5, -32.0], "expected": -14.49999997489001}, {"input": [-14.5, -31.5], "expected": -14.499999958600624}, {"input": [-14.5, -31.0], "expected": -14.499999931743968}, {"input": [-14.5, -30.5], "expected": -14.499999887464831}, {"input": [-14.5, -30.0], "expected": -14.499999814460882}, {"input": [-14.5, -29.5], "expected": -14.499999694097726}, {"input": [-14.5, -29.0], "expected": -14.499999495652464}, {"input": [-14.5, -28.5], "expected": -14.499999168471627}, {"input": [-14.5, -28.0], "expected": -14.499998629041853}, {"input": [-14.5, -27.5], "expected": -14.499997739673148}, {"input": [-14.5, -27.0], "expected": -14.499996273353771}, {"input": [-14.5, -26.5], "expected": -14.499993855806522}, {"input": [-14.5, -26.0], "expected": -14.49998986995771}, {"input": [-14.5, -25.5], "expected": -14.499983298438682}, {"input": [-14.5, -25.0], "expected": -14.49997246392977}, {"input": [-14.5, -24.5], "expected": -14.499954601100782}, {"input": [-14.5, -24.0], "expected": -14.499925150971372}, {"input": [-14.5, -23.5], "expected": -14.499876597810276}, {"input": [-14.5, -23.0], "expected": -14.49979655232787}, {"input": [-14.5, -22.5], "expected": -14.499664593627104}, {"input": [-14.5, -22.0], "expected": -14.499447068524638}, {"input": [-14.5, -21.5], "expected": -14.499088533546226}, {"input": [-14.5, -21.0], "expected": -14.498497689840246}, {"input": [-14.5, -20.5], "expected": -14.49752431486227}, {"input": [-14.5, -20.0], "expected": -14.49592155672943}, {"input": [-14.5, -19.5], "expected": -14.493284651510882}, {"input": [-14.5, -19.0], "expected": -14.488952255151407}, {"input": [-14.5, -18.5], "expected": -14.48185007208219}, {"input": [-14.5, -18.0], "expected": -14.47024958172738}, {"input": [-14.5, -17.5], "expected": -14.451412648426258}, {"input": [-14.5, -17.0], "expected": -14.421110265707451}, {"input": [-14.5, -16.5], "expected": -14.373071988957028}, {"input": [-14.5, -16.0], "expected": -14.298586722017248}, {"input": [-14.5, -15.5], "expected": -14.186738312481777}, {"input": [-14.5, -15.0], "expected": -14.025923015819894}, {"input": [-14.5, -14.5], "expected": -13.806852819440055}, {"input": [-14.5, -14.0], "expected": -13.525923015819894}, {"input": [-14.5, -13.5], "expected": -13.186738312481777}, {"input": [-14.5, -13.0], "expected": -12.798586722017248}, {"input": [-14.5, -12.5], "expected": -12.373071988957028}, {"input": [-14.5, -12.0], "expected": -11.921110265707451}, {"input": [-14.5, -11.5], "expected": -11.451412648426258}, {"input": [-14.5, -11.0], "expected": -10.97024958172738}, {"input": [-14.5, -10.5], "expected": -10.48185007208219}, {"input": [-14.5, -10.0], "expected": -9.988952255151407}, {"input": [-14.5, -9.5], "expected": -9.493284651510882}, {"input": [-14.5, -9.0], "expected": -8.99592155672943}, {"input": [-14.5, -8.5], "expected": -8.49752431486227}, {"input": [-14.5, -8.0], "expected": -7.998497689840246}, {"input": [-14.5, -7.5], "expected": -7.499088533546225}, {"input": [-14.5, -7.0], "expected": -6.999447068524639}, {"input": [-14.5, -6.5], "expected": -6.499664593627104}, {"input": [-14.5, -6.0], "expected": -5.9997965523278705}, {"input": [-14.5, -5.5], "expected": -5.499876597810276}, {"input": [-14.5, -5.0], "expected": -4.999925150971371}, {"input": [-14.5, -4.5], "expected": -4.499954601100783}, {"input": [-14.5, -4.0], "expected": -3.999972463929771}, {"input": [-14.5, -3.5], "expected": -3.4999832984386816}, {"input": [-14.5, -3.0], "expected": -2.9999898699577106}, {"input": [-14.5, -2.5], "expected": -2.4999938558065224}, {"input": [-14.5, -2.0], "expected": -1.999996273353772}, {"input": [-14.5, -1.5], "expected": -1.4999977396731476}, {"input": [-14.5, -1.0], "expected": -0.9999986290418533}, {"input": [-14.5, -0.5], "expected": -0.4999991684716266}, {"input": [-14.5, 0.0], "expected": 5.043475353846484e-07}, {"input": [-14.5, 0.5], "expected": 0.5000003059022737}, {"input": [-14.5, 1.0], "expected": 1.000000185539119}, {"input": [-14.5, 1.5], "expected": 1.5000001125351683}, {"input": [-14.5, 2.0], "expected": 2.0000000682560315}, {"input": [-14.5, 2.5], "expected": 2.5000000413993764}, {"input": [-14.5, 3.0], "expected": 3.0000000251099914}, {"input": [-14.5, 3.5], "expected": 3.5000000152299795}, {"input": [-14.5, 4.0], "expected": 4.00000000923745}, {"input": [-14.5, 4.5], "expected": 4.5000000056027964}, {"input": [-14.5, 5.0], "expected": 5.0000000033982674}, {"input": [-14.5, 5.5], "expected": 5.500000002061154}, {"input": [-14.5, 6.0], "expected": 6.000000001250153}, {"input": [-14.5, 6.5], "expected": 6.500000000758256}, {"input": [-14.5, 7.0], "expected": 7.000000000459906}, {"input": [-14.5, 7.5], "expected": 7.500000000278947}, {"input": [-14.5, 8.0], "expected": 8.000000000169189}, {"input": [-14.5, 8.5], "expected": 8.500000000102618}, {"input": [-14.5, 9.0], "expected": 9.000000000062242}, {"input": [-14.5, 9.5], "expected": 9.500000000037751}, {"input": [-14.5, 10.0], "expected": 10.000000000022897}, {"input": [-14.5, 10.5], "expected": 10.500000000013888}, {"input": [-14.5, 11.0], "expected": 11.000000000008423}, {"input": [-14.5, 11.5], "expected": 11.500000000005109}, {"input": [-14.5, 12.0], "expected": 12.000000000003098}, {"input": [-14.5, 12.5], "expected": 12.50000000000188}, {"input": [-14.5, 13.0], "expected": 13.00000000000114}, {"input": [-14.5, 13.5], "expected": 13.500000000000691}, {"input": [-14.5, 14.0], "expected": 14.00000000000042}, {"input": [-14.5, 14.5], "expected": 14.500000000000254}, {"input": [-14.5, 15.0], "expected": 15.000000000000155}, {"input": [-14.5, 15.5], "expected": 15.500000000000094}, {"input": [-14.5, 16.0], "expected": 16.000000000000057}, {"input": [-14.5, 16.5], "expected": 16.500000000000036}, {"input": [-14.5, 17.0], "expected": 17.00000000000002}, {"input": [-14.5, 17.5], "expected": 17.500000000000014}, {"input": [-14.5, 18.0], "expected": 18.000000000000007}, {"input": [-14.5, 18.5], "expected": 18.500000000000004}, {"input": [-14.5, 19.0], "expected": 19.000000000000004}, {"input": [-14.5, 19.5], "expected": 19.5}, {"input": [-14.5, 20.0], "expected": 20.0}, {"input": [-14.5, 20.5], "expected": 20.5}, {"input": [-14.5, 21.0], "expected": 21.0}, {"input": [-14.5, 21.5], "expected": 21.5}, {"input": [-14.5, 22.0], "expected": 22.0}, {"input": [-14.5, 22.5], "expected": 22.5}, {"input": [-14.5, 23.0], "expected": 23.0}, {"input": [-14.5, 23.5], "expected": 23.5}, {"input": [-14.5, 24.0], "expected": 24.0}, {"input": [-14.5, 24.5], "expected": 24.5}, {"input": [-14.5, 25.0], "expected": 25.0}, {"input": [-14.5, 25.5], "expected": 25.5}, {"input": [-14.5, 26.0], "expected": 26.0}, {"input": [-14.5, 26.5], "expected": 26.5}, {"input": [-14.5, 27.0], "expected": 27.0}, {"input": [-14.5, 27.5], "expected": 27.5}, {"input": [-14.5, 28.0], "expected": 28.0}, {"input": [-14.5, 28.5], "expected": 28.5}, {"input": [-14.5, 29.0], "expected": 29.0}, {"input": [-14.5, 29.5], "expected": 29.5}, {"input": [-14.5, 30.0], "expected": 30.0}, {"input": [-14.5, 30.5], "expected": 30.5}, {"input": [-14.5, 31.0], "expected": 31.0}, {"input": [-14.5, 31.5], "expected": 31.5}, {"input": [-14.5, 32.0], "expected": 32.0}, {"input": [-14.5, 32.5], "expected": 32.5}, {"input": [-14.5, 33.0], "expected": 33.0}, {"input": [-14.5, 33.5], "expected": 33.5}, {"input": [-14.5, 34.0], "expected": 34.0}, {"input": [-14.5, 34.5], "expected": 34.5}, {"input": [-14.5, 35.0], "expected": 35.0}, {"input": [-14.5, 35.5], "expected": 35.5}, {"input": [-14.5, 36.0], "expected": 36.0}, {"input": [-14.5, 36.5], "expected": 36.5}, {"input": [-14.5, 37.0], "expected": 37.0}, {"input": [-14.5, 37.5], "expected": 37.5}, {"input": [-14.5, 38.0], "expected": 38.0}, {"input": [-14.5, 38.5], "expected": 38.5}, {"input": [-14.5, 39.0], "expected": 39.0}, {"input": [-14.5, 39.5], "expected": 39.5}, {"input": [-14.5, 40.0], "expected": 40.0}, {"input": [-14.5, 40.5], "expected": 40.5}, {"input": [-14.5, 41.0], "expected": 41.0}, {"input": [-14.5, 41.5], "expected": 41.5}, {"input": [-14.5, 42.0], "expected": 42.0}, {"input": [-14.5, 42.5], "expected": 42.5}, {"input": [-14.5, 43.0], "expected": 43.0}, {"input": [-14.5, 43.5], "expected": 43.5}, {"input": [-14.5, 44.0], "expected": 44.0}, {"input": [-14.5, 44.5], "expected": 44.5}, {"input": [-14.5, 45.0], "expected": 45.0}, {"input": [-14.5, 45.5], "expected": 45.5}, {"input": [-14.5, 46.0], "expected": 46.0}, {"input": [-14.5, 46.5], "expected": 46.5}, {"input": [-14.5, 47.0], "expected": 47.0}, {"input": [-14.5, 47.5], "expected": 47.5}, {"input": [-14.5, 48.0], "expected": 48.0}, {"input": [-14.5, 48.5], "expected": 48.5}, {"input": [-14.5, 49.0], "expected": 49.0}, {"input": [-14.5, 49.5], "expected": 49.5}, {"input": [-14.5, 50.0], "expected": 50.0}, {"input": [-14.5, 50.5], "expected": 50.5}, {"input": [-14.5, 51.0], "expected": 51.0}, {"input": [-14.5, 51.5], "expected": 51.5}, {"input": [-14.5, 52.0], "expected": 52.0}, {"input": [-14.5, 52.5], "expected": 52.5}, {"input": [-14.5, 53.0], "expected": 53.0}, {"input": [-14.5, 53.5], "expected": 53.5}, {"input": [-14.5, 54.0], "expected": 54.0}, {"input": [-14.5, 54.5], "expected": 54.5}, {"input": [-14.5, 55.0], "expected": 55.0}, {"input": [-14.5, 55.5], "expected": 55.5}, {"input": [-14.5, 56.0], "expected": 56.0}, {"input": [-14.5, 56.5], "expected": 56.5}, {"input": [-14.5, 57.0], "expected": 57.0}, {"input": [-14.5, 57.5], "expected": 57.5}, {"input": [-14.5, 58.0], "expected": 58.0}, {"input": [-14.5, 58.5], "expected": 58.5}, {"input": [-14.5, 59.0], "expected": 59.0}, {"input": [-14.5, 59.5], "expected": 59.5}, {"input": [-14.5, 60.0], "expected": 60.0}, {"input": [-14.5, 60.5], "expected": 60.5}, {"input": [-14.5, 61.0], "expected": 61.0}, {"input": [-14.5, 61.5], "expected": 61.5}, {"input": [-14.5, 62.0], "expected": 62.0}, {"input": [-14.5, 62.5], "expected": 62.5}, {"input": [-14.5, 63.0], "expected": 63.0}, {"input": [-14.5, 63.5], "expected": 63.5}, {"input": [-14.5, 64.0], "expected": 64.0}, {"input": [-14.5, 64.5], "expected": 64.5}, {"input": [-14.5, 65.0], "expected": 65.0}, {"input": [-14.5, 65.5], "expected": 65.5}, {"input": [-14.5, 66.0], "expected": 66.0}, {"input": [-14.5, 66.5], "expected": 66.5}, {"input": [-14.5, 67.0], "expected": 67.0}, {"input": [-14.5, 67.5], "expected": 67.5}, {"input": [-14.5, 68.0], "expected": 68.0}, {"input": [-14.5, 68.5], "expected": 68.5}, {"input": [-14.5, 69.0], "expected": 69.0}, {"input": [-14.5, 69.5], "expected": 69.5}, {"input": [-14.5, 70.0], "expected": 70.0}, {"input": [-14.5, 70.5], "expected": 70.5}, {"input": [-14.5, 71.0], "expected": 71.0}, {"input": [-14.5, 71.5], "expected": 71.5}, {"input": [-14.5, 72.0], "expected": 72.0}, {"input": [-14.5, 72.5], "expected": 72.5}, {"input": [-14.5, 73.0], "expected": 73.0}, {"input": [-14.5, 73.5], "expected": 73.5}, {"input": [-14.5, 74.0], "expected": 74.0}, {"input": [-14.5, 74.5], "expected": 74.5}, {"input": [-14.5, 75.0], "expected": 75.0}, {"input": [-14.5, 75.5], "expected": 75.5}, {"input": [-14.5, 76.0], "expected": 76.0}, {"input": [-14.5, 76.5], "expected": 76.5}, {"input": [-14.5, 77.0], "expected": 77.0}, {"input": [-14.5, 77.5], "expected": 77.5}, {"input": [-14.5, 78.0], "expected": 78.0}, {"input": [-14.5, 78.5], "expected": 78.5}, {"input": [-14.5, 79.0], "expected": 79.0}, {"input": [-14.5, 79.5], "expected": 79.5}, {"input": [-14.5, 80.0], "expected": 80.0}, {"input": [-14.5, 80.5], "expected": 80.5}, {"input": [-14.5, 81.0], "expected": 81.0}, {"input": [-14.5, 81.5], "expected": 81.5}, {"input": [-14.5, 82.0], "expected": 82.0}, {"input": [-14.5, 82.5], "expected": 82.5}, {"input": [-14.5, 83.0], "expected": 83.0}, {"input": [-14.5, 83.5], "expected": 83.5}, {"input": [-14.5, 84.0], "expected": 84.0}, {"input": [-14.5, 84.5], "expected": 84.5}, {"input": [-14.5, 85.0], "expected": 85.0}, {"input": [-14.5, 85.5], "expected": 85.5}, {"input": [-14.5, 86.0], "expected": 86.0}, {"input": [-14.5, 86.5], "expected": 86.5}, {"input": [-14.5, 87.0], "expected": 87.0}, {"input": [-14.5, 87.5], "expected": 87.5}, {"input": [-14.5, 88.0], "expected": 88.0}, {"input": [-14.5, 88.5], "expected": 88.5}, {"input": [-14.5, 89.0], "expected": 89.0}, {"input": [-14.5, 89.5], "expected": 89.5}, {"input": [-14.5, 90.0], "expected": 90.0}, {"input": [-14.5, 90.5], "expected": 90.5}, {"input": [-14.5, 91.0], "expected": 91.0}, {"input": [-14.5, 91.5], "expected": 91.5}, {"input": [-14.5, 92.0], "expected": 92.0}, {"input": [-14.5, 92.5], "expected": 92.5}, {"input": [-14.5, 93.0], "expected": 93.0}, {"input": [-14.5, 93.5], "expected": 93.5}, {"input": [-14.5, 94.0], "expected": 94.0}, {"input": [-14.5, 94.5], "expected": 94.5}, {"input": [-14.5, 95.0], "expected": 95.0}, {"input": [-14.5, 95.5], "expected": 95.5}, {"input": [-14.5, 96.0], "expected": 96.0}, {"input": [-14.5, 96.5], "expected": 96.5}, {"input": [-14.5, 97.0], "expected": 97.0}, {"input": [-14.5, 97.5], "expected": 97.5}, {"input": [-14.5, 98.0], "expected": 98.0}, {"input": [-14.5, 98.5], "expected": 98.5}, {"input": [-14.5, 99.0], "expected": 99.0}, {"input": [-14.5, 99.5], "expected": 99.5}, {"input": [-14.0, -100.0], "expected": -14.0}, {"input": [-14.0, -99.5], "expected": -14.0}, {"input": [-14.0, -99.0], "expected": -14.0}, {"input": [-14.0, -98.5], "expected": -14.0}, {"input": [-14.0, -98.0], "expected": -14.0}, {"input": [-14.0, -97.5], "expected": -14.0}, {"input": [-14.0, -97.0], "expected": -14.0}, {"input": [-14.0, -96.5], "expected": -14.0}, {"input": [-14.0, -96.0], "expected": -14.0}, {"input": [-14.0, -95.5], "expected": -14.0}, {"input": [-14.0, -95.0], "expected": -14.0}, {"input": [-14.0, -94.5], "expected": -14.0}, {"input": [-14.0, -94.0], "expected": -14.0}, {"input": [-14.0, -93.5], "expected": -14.0}, {"input": [-14.0, -93.0], "expected": -14.0}, {"input": [-14.0, -92.5], "expected": -14.0}, {"input": [-14.0, -92.0], "expected": -14.0}, {"input": [-14.0, -91.5], "expected": -14.0}, {"input": [-14.0, -91.0], "expected": -14.0}, {"input": [-14.0, -90.5], "expected": -14.0}, {"input": [-14.0, -90.0], "expected": -14.0}, {"input": [-14.0, -89.5], "expected": -14.0}, {"input": [-14.0, -89.0], "expected": -14.0}, {"input": [-14.0, -88.5], "expected": -14.0}, {"input": [-14.0, -88.0], "expected": -14.0}, {"input": [-14.0, -87.5], "expected": -14.0}, {"input": [-14.0, -87.0], "expected": -14.0}, {"input": [-14.0, -86.5], "expected": -14.0}, {"input": [-14.0, -86.0], "expected": -14.0}, {"input": [-14.0, -85.5], "expected": -14.0}, {"input": [-14.0, -85.0], "expected": -14.0}, {"input": [-14.0, -84.5], "expected": -14.0}, {"input": [-14.0, -84.0], "expected": -14.0}, {"input": [-14.0, -83.5], "expected": -14.0}, {"input": [-14.0, -83.0], "expected": -14.0}, {"input": [-14.0, -82.5], "expected": -14.0}, {"input": [-14.0, -82.0], "expected": -14.0}, {"input": [-14.0, -81.5], "expected": -14.0}, {"input": [-14.0, -81.0], "expected": -14.0}, {"input": [-14.0, -80.5], "expected": -14.0}, {"input": [-14.0, -80.0], "expected": -14.0}, {"input": [-14.0, -79.5], "expected": -14.0}, {"input": [-14.0, -79.0], "expected": -14.0}, {"input": [-14.0, -78.5], "expected": -14.0}, {"input": [-14.0, -78.0], "expected": -14.0}, {"input": [-14.0, -77.5], "expected": -14.0}, {"input": [-14.0, -77.0], "expected": -14.0}, {"input": [-14.0, -76.5], "expected": -14.0}, {"input": [-14.0, -76.0], "expected": -14.0}, {"input": [-14.0, -75.5], "expected": -14.0}, {"input": [-14.0, -75.0], "expected": -14.0}, {"input": [-14.0, -74.5], "expected": -14.0}, {"input": [-14.0, -74.0], "expected": -14.0}, {"input": [-14.0, -73.5], "expected": -14.0}, {"input": [-14.0, -73.0], "expected": -14.0}, {"input": [-14.0, -72.5], "expected": -14.0}, {"input": [-14.0, -72.0], "expected": -14.0}, {"input": [-14.0, -71.5], "expected": -14.0}, {"input": [-14.0, -71.0], "expected": -14.0}, {"input": [-14.0, -70.5], "expected": -14.0}, {"input": [-14.0, -70.0], "expected": -14.0}, {"input": [-14.0, -69.5], "expected": -14.0}, {"input": [-14.0, -69.0], "expected": -14.0}, {"input": [-14.0, -68.5], "expected": -14.0}, {"input": [-14.0, -68.0], "expected": -14.0}, {"input": [-14.0, -67.5], "expected": -14.0}, {"input": [-14.0, -67.0], "expected": -14.0}, {"input": [-14.0, -66.5], "expected": -14.0}, {"input": [-14.0, -66.0], "expected": -14.0}, {"input": [-14.0, -65.5], "expected": -14.0}, {"input": [-14.0, -65.0], "expected": -14.0}, {"input": [-14.0, -64.5], "expected": -14.0}, {"input": [-14.0, -64.0], "expected": -14.0}, {"input": [-14.0, -63.5], "expected": -14.0}, {"input": [-14.0, -63.0], "expected": -14.0}, {"input": [-14.0, -62.5], "expected": -14.0}, {"input": [-14.0, -62.0], "expected": -14.0}, {"input": [-14.0, -61.5], "expected": -14.0}, {"input": [-14.0, -61.0], "expected": -14.0}, {"input": [-14.0, -60.5], "expected": -14.0}, {"input": [-14.0, -60.0], "expected": -14.0}, {"input": [-14.0, -59.5], "expected": -14.0}, {"input": [-14.0, -59.0], "expected": -14.0}, {"input": [-14.0, -58.5], "expected": -14.0}, {"input": [-14.0, -58.0], "expected": -14.0}, {"input": [-14.0, -57.5], "expected": -14.0}, {"input": [-14.0, -57.0], "expected": -14.0}, {"input": [-14.0, -56.5], "expected": -14.0}, {"input": [-14.0, -56.0], "expected": -14.0}, {"input": [-14.0, -55.5], "expected": -14.0}, {"input": [-14.0, -55.0], "expected": -14.0}, {"input": [-14.0, -54.5], "expected": -14.0}, {"input": [-14.0, -54.0], "expected": -14.0}, {"input": [-14.0, -53.5], "expected": -14.0}, {"input": [-14.0, -53.0], "expected": -14.0}, {"input": [-14.0, -52.5], "expected": -14.0}, {"input": [-14.0, -52.0], "expected": -14.0}, {"input": [-14.0, -51.5], "expected": -14.0}, {"input": [-14.0, -51.0], "expected": -14.0}, {"input": [-14.0, -50.5], "expected": -14.0}, {"input": [-14.0, -50.0], "expected": -14.0}, {"input": [-14.0, -49.5], "expected": -14.0}, {"input": [-14.0, -49.0], "expected": -14.0}, {"input": [-14.0, -48.5], "expected": -13.999999999999998}, {"input": [-14.0, -48.0], "expected": -13.999999999999998}, {"input": [-14.0, -47.5], "expected": -13.999999999999996}, {"input": [-14.0, -47.0], "expected": -13.999999999999995}, {"input": [-14.0, -46.5], "expected": -13.999999999999993}, {"input": [-14.0, -46.0], "expected": -13.999999999999988}, {"input": [-14.0, -45.5], "expected": -13.999999999999979}, {"input": [-14.0, -45.0], "expected": -13.999999999999966}, {"input": [-14.0, -44.5], "expected": -13.999999999999943}, {"input": [-14.0, -44.0], "expected": -13.999999999999906}, {"input": [-14.0, -43.5], "expected": -13.999999999999845}, {"input": [-14.0, -43.0], "expected": -13.999999999999746}, {"input": [-14.0, -42.5], "expected": -13.99999999999958}, {"input": [-14.0, -42.0], "expected": -13.999999999999309}, {"input": [-14.0, -41.5], "expected": -13.99999999999886}, {"input": [-14.0, -41.0], "expected": -13.99999999999812}, {"input": [-14.0, -40.5], "expected": -13.999999999996902}, {"input": [-14.0, -40.0], "expected": -13.999999999994891}, {"input": [-14.0, -39.5], "expected": -13.999999999991577}, {"input": [-14.0, -39.0], "expected": -13.999999999986112}, {"input": [-14.0, -38.5], "expected": -13.999999999977103}, {"input": [-14.0, -38.0], "expected": -13.999999999962249}, {"input": [-14.0, -37.5], "expected": -13.999999999937758}, {"input": [-14.0, -37.0], "expected": -13.999999999897382}, {"input": [-14.0, -36.5], "expected": -13.999999999830811}, {"input": [-14.0, -36.0], "expected": -13.999999999721053}, {"input": [-14.0, -35.5], "expected": -13.999999999540094}, {"input": [-14.0, -35.0], "expected": -13.999999999241744}, {"input": [-14.0, -34.5], "expected": -13.999999998749848}, {"input": [-14.0, -34.0], "expected": -13.999999997938847}, {"input": [-14.0, -33.5], "expected": -13.999999996601732}, {"input": [-14.0, -33.0], "expected": -13.999999994397204}, {"input": [-14.0, -32.5], "expected": -13.99999999076255}, {"input": [-14.0, -32.0], "expected": -13.999999984770021}, {"input": [-14.0, -31.5], "expected": -13.99999997489001}, {"input": [-14.0, -31.0], "expected": -13.999999958600624}, {"input": [-14.0, -30.5], "expected": -13.999999931743968}, {"input": [-14.0, -30.0], "expected": -13.999999887464831}, {"input": [-14.0, -29.5], "expected": -13.999999814460882}, {"input": [-14.0, -29.0], "expected": -13.999999694097726}, {"input": [-14.0, -28.5], "expected": -13.999999495652464}, {"input": [-14.0, -28.0], "expected": -13.999999168471627}, {"input": [-14.0, -27.5], "expected": -13.999998629041853}, {"input": [-14.0, -27.0], "expected": -13.999997739673148}, {"input": [-14.0, -26.5], "expected": -13.999996273353771}, {"input": [-14.0, -26.0], "expected": -13.999993855806522}, {"input": [-14.0, -25.5], "expected": -13.99998986995771}, {"input": [-14.0, -25.0], "expected": -13.999983298438682}, {"input": [-14.0, -24.5], "expected": -13.99997246392977}, {"input": [-14.0, -24.0], "expected": -13.999954601100782}, {"input": [-14.0, -23.5], "expected": -13.999925150971372}, {"input": [-14.0, -23.0], "expected": -13.999876597810276}, {"input": [-14.0, -22.5], "expected": -13.99979655232787}, {"input": [-14.0, -22.0], "expected": -13.999664593627104}, {"input": [-14.0, -21.5], "expected": -13.999447068524638}, {"input": [-14.0, -21.0], "expected": -13.999088533546226}, {"input": [-14.0, -20.5], "expected": -13.998497689840246}, {"input": [-14.0, -20.0], "expected": -13.99752431486227}, {"input": [-14.0, -19.5], "expected": -13.99592155672943}, {"input": [-14.0, -19.0], "expected": -13.993284651510882}, {"input": [-14.0, -18.5], "expected": -13.988952255151407}, {"input": [-14.0, -18.0], "expected": -13.98185007208219}, {"input": [-14.0, -17.5], "expected": -13.97024958172738}, {"input": [-14.0, -17.0], "expected": -13.951412648426258}, {"input": [-14.0, -16.5], "expected": -13.921110265707451}, {"input": [-14.0, -16.0], "expected": -13.873071988957028}, {"input": [-14.0, -15.5], "expected": -13.798586722017248}, {"input": [-14.0, -15.0], "expected": -13.686738312481777}, {"input": [-14.0, -14.5], "expected": -13.525923015819894}, {"input": [-14.0, -14.0], "expected": -13.306852819440055}, {"input": [-14.0, -13.5], "expected": -13.025923015819894}, {"input": [-14.0, -13.0], "expected": -12.686738312481777}, {"input": [-14.0, -12.5], "expected": -12.298586722017248}, {"input": [-14.0, -12.0], "expected": -11.873071988957028}, {"input": [-14.0, -11.5], "expected": -11.421110265707451}, {"input": [-14.0, -11.0], "expected": -10.951412648426258}, {"input": [-14.0, -10.5], "expected": -10.47024958172738}, {"input": [-14.0, -10.0], "expected": -9.98185007208219}, {"input": [-14.0, -9.5], "expected": -9.488952255151407}, {"input": [-14.0, -9.0], "expected": -8.993284651510882}, {"input": [-14.0, -8.5], "expected": -8.49592155672943}, {"input": [-14.0, -8.0], "expected": -7.99752431486227}, {"input": [-14.0, -7.5], "expected": -7.498497689840246}, {"input": [-14.0, -7.0], "expected": -6.999088533546225}, {"input": [-14.0, -6.5], "expected": -6.499447068524639}, {"input": [-14.0, -6.0], "expected": -5.999664593627104}, {"input": [-14.0, -5.5], "expected": -5.4997965523278705}, {"input": [-14.0, -5.0], "expected": -4.999876597810276}, {"input": [-14.0, -4.5], "expected": -4.499925150971371}, {"input": [-14.0, -4.0], "expected": -3.999954601100783}, {"input": [-14.0, -3.5], "expected": -3.499972463929771}, {"input": [-14.0, -3.0], "expected": -2.9999832984386816}, {"input": [-14.0, -2.5], "expected": -2.4999898699577106}, {"input": [-14.0, -2.0], "expected": -1.9999938558065222}, {"input": [-14.0, -1.5], "expected": -1.499996273353772}, {"input": [-14.0, -1.0], "expected": -0.9999977396731475}, {"input": [-14.0, -0.5], "expected": -0.4999986290418534}, {"input": [-14.0, 0.0], "expected": 8.315283733837542e-07}, {"input": [-14.0, 0.5], "expected": 0.5000005043475354}, {"input": [-14.0, 1.0], "expected": 1.0000003059022737}, {"input": [-14.0, 1.5], "expected": 1.500000185539119}, {"input": [-14.0, 2.0], "expected": 2.0000001125351683}, {"input": [-14.0, 2.5], "expected": 2.5000000682560315}, {"input": [-14.0, 3.0], "expected": 3.0000000413993764}, {"input": [-14.0, 3.5], "expected": 3.5000000251099914}, {"input": [-14.0, 4.0], "expected": 4.00000001522998}, {"input": [-14.0, 4.5], "expected": 4.50000000923745}, {"input": [-14.0, 5.0], "expected": 5.0000000056027964}, {"input": [-14.0, 5.5], "expected": 5.5000000033982674}, {"input": [-14.0, 6.0], "expected": 6.000000002061154}, {"input": [-14.0, 6.5], "expected": 6.500000001250153}, {"input": [-14.0, 7.0], "expected": 7.000000000758256}, {"input": [-14.0, 7.5], "expected": 7.500000000459906}, {"input": [-14.0, 8.0], "expected": 8.000000000278947}, {"input": [-14.0, 8.5], "expected": 8.500000000169189}, {"input": [-14.0, 9.0], "expected": 9.000000000102618}, {"input": [-14.0, 9.5], "expected": 9.500000000062242}, {"input": [-14.0, 10.0], "expected": 10.000000000037751}, {"input": [-14.0, 10.5], "expected": 10.500000000022897}, {"input": [-14.0, 11.0], "expected": 11.000000000013888}, {"input": [-14.0, 11.5], "expected": 11.500000000008423}, {"input": [-14.0, 12.0], "expected": 12.000000000005109}, {"input": [-14.0, 12.5], "expected": 12.500000000003098}, {"input": [-14.0, 13.0], "expected": 13.00000000000188}, {"input": [-14.0, 13.5], "expected": 13.50000000000114}, {"input": [-14.0, 14.0], "expected": 14.000000000000691}, {"input": [-14.0, 14.5], "expected": 14.50000000000042}, {"input": [-14.0, 15.0], "expected": 15.000000000000254}, {"input": [-14.0, 15.5], "expected": 15.500000000000155}, {"input": [-14.0, 16.0], "expected": 16.000000000000092}, {"input": [-14.0, 16.5], "expected": 16.500000000000057}, {"input": [-14.0, 17.0], "expected": 17.000000000000036}, {"input": [-14.0, 17.5], "expected": 17.50000000000002}, {"input": [-14.0, 18.0], "expected": 18.000000000000014}, {"input": [-14.0, 18.5], "expected": 18.500000000000007}, {"input": [-14.0, 19.0], "expected": 19.000000000000004}, {"input": [-14.0, 19.5], "expected": 19.500000000000004}, {"input": [-14.0, 20.0], "expected": 20.0}, {"input": [-14.0, 20.5], "expected": 20.5}, {"input": [-14.0, 21.0], "expected": 21.0}, {"input": [-14.0, 21.5], "expected": 21.5}, {"input": [-14.0, 22.0], "expected": 22.0}, {"input": [-14.0, 22.5], "expected": 22.5}, {"input": [-14.0, 23.0], "expected": 23.0}, {"input": [-14.0, 23.5], "expected": 23.5}, {"input": [-14.0, 24.0], "expected": 24.0}, {"input": [-14.0, 24.5], "expected": 24.5}, {"input": [-14.0, 25.0], "expected": 25.0}, {"input": [-14.0, 25.5], "expected": 25.5}, {"input": [-14.0, 26.0], "expected": 26.0}, {"input": [-14.0, 26.5], "expected": 26.5}, {"input": [-14.0, 27.0], "expected": 27.0}, {"input": [-14.0, 27.5], "expected": 27.5}, {"input": [-14.0, 28.0], "expected": 28.0}, {"input": [-14.0, 28.5], "expected": 28.5}, {"input": [-14.0, 29.0], "expected": 29.0}, {"input": [-14.0, 29.5], "expected": 29.5}, {"input": [-14.0, 30.0], "expected": 30.0}, {"input": [-14.0, 30.5], "expected": 30.5}, {"input": [-14.0, 31.0], "expected": 31.0}, {"input": [-14.0, 31.5], "expected": 31.5}, {"input": [-14.0, 32.0], "expected": 32.0}, {"input": [-14.0, 32.5], "expected": 32.5}, {"input": [-14.0, 33.0], "expected": 33.0}, {"input": [-14.0, 33.5], "expected": 33.5}, {"input": [-14.0, 34.0], "expected": 34.0}, {"input": [-14.0, 34.5], "expected": 34.5}, {"input": [-14.0, 35.0], "expected": 35.0}, {"input": [-14.0, 35.5], "expected": 35.5}, {"input": [-14.0, 36.0], "expected": 36.0}, {"input": [-14.0, 36.5], "expected": 36.5}, {"input": [-14.0, 37.0], "expected": 37.0}, {"input": [-14.0, 37.5], "expected": 37.5}, {"input": [-14.0, 38.0], "expected": 38.0}, {"input": [-14.0, 38.5], "expected": 38.5}, {"input": [-14.0, 39.0], "expected": 39.0}, {"input": [-14.0, 39.5], "expected": 39.5}, {"input": [-14.0, 40.0], "expected": 40.0}, {"input": [-14.0, 40.5], "expected": 40.5}, {"input": [-14.0, 41.0], "expected": 41.0}, {"input": [-14.0, 41.5], "expected": 41.5}, {"input": [-14.0, 42.0], "expected": 42.0}, {"input": [-14.0, 42.5], "expected": 42.5}, {"input": [-14.0, 43.0], "expected": 43.0}, {"input": [-14.0, 43.5], "expected": 43.5}, {"input": [-14.0, 44.0], "expected": 44.0}, {"input": [-14.0, 44.5], "expected": 44.5}, {"input": [-14.0, 45.0], "expected": 45.0}, {"input": [-14.0, 45.5], "expected": 45.5}, {"input": [-14.0, 46.0], "expected": 46.0}, {"input": [-14.0, 46.5], "expected": 46.5}, {"input": [-14.0, 47.0], "expected": 47.0}, {"input": [-14.0, 47.5], "expected": 47.5}, {"input": [-14.0, 48.0], "expected": 48.0}, {"input": [-14.0, 48.5], "expected": 48.5}, {"input": [-14.0, 49.0], "expected": 49.0}, {"input": [-14.0, 49.5], "expected": 49.5}, {"input": [-14.0, 50.0], "expected": 50.0}, {"input": [-14.0, 50.5], "expected": 50.5}, {"input": [-14.0, 51.0], "expected": 51.0}, {"input": [-14.0, 51.5], "expected": 51.5}, {"input": [-14.0, 52.0], "expected": 52.0}, {"input": [-14.0, 52.5], "expected": 52.5}, {"input": [-14.0, 53.0], "expected": 53.0}, {"input": [-14.0, 53.5], "expected": 53.5}, {"input": [-14.0, 54.0], "expected": 54.0}, {"input": [-14.0, 54.5], "expected": 54.5}, {"input": [-14.0, 55.0], "expected": 55.0}, {"input": [-14.0, 55.5], "expected": 55.5}, {"input": [-14.0, 56.0], "expected": 56.0}, {"input": [-14.0, 56.5], "expected": 56.5}, {"input": [-14.0, 57.0], "expected": 57.0}, {"input": [-14.0, 57.5], "expected": 57.5}, {"input": [-14.0, 58.0], "expected": 58.0}, {"input": [-14.0, 58.5], "expected": 58.5}, {"input": [-14.0, 59.0], "expected": 59.0}, {"input": [-14.0, 59.5], "expected": 59.5}, {"input": [-14.0, 60.0], "expected": 60.0}, {"input": [-14.0, 60.5], "expected": 60.5}, {"input": [-14.0, 61.0], "expected": 61.0}, {"input": [-14.0, 61.5], "expected": 61.5}, {"input": [-14.0, 62.0], "expected": 62.0}, {"input": [-14.0, 62.5], "expected": 62.5}, {"input": [-14.0, 63.0], "expected": 63.0}, {"input": [-14.0, 63.5], "expected": 63.5}, {"input": [-14.0, 64.0], "expected": 64.0}, {"input": [-14.0, 64.5], "expected": 64.5}, {"input": [-14.0, 65.0], "expected": 65.0}, {"input": [-14.0, 65.5], "expected": 65.5}, {"input": [-14.0, 66.0], "expected": 66.0}, {"input": [-14.0, 66.5], "expected": 66.5}, {"input": [-14.0, 67.0], "expected": 67.0}, {"input": [-14.0, 67.5], "expected": 67.5}, {"input": [-14.0, 68.0], "expected": 68.0}, {"input": [-14.0, 68.5], "expected": 68.5}, {"input": [-14.0, 69.0], "expected": 69.0}, {"input": [-14.0, 69.5], "expected": 69.5}, {"input": [-14.0, 70.0], "expected": 70.0}, {"input": [-14.0, 70.5], "expected": 70.5}, {"input": [-14.0, 71.0], "expected": 71.0}, {"input": [-14.0, 71.5], "expected": 71.5}, {"input": [-14.0, 72.0], "expected": 72.0}, {"input": [-14.0, 72.5], "expected": 72.5}, {"input": [-14.0, 73.0], "expected": 73.0}, {"input": [-14.0, 73.5], "expected": 73.5}, {"input": [-14.0, 74.0], "expected": 74.0}, {"input": [-14.0, 74.5], "expected": 74.5}, {"input": [-14.0, 75.0], "expected": 75.0}, {"input": [-14.0, 75.5], "expected": 75.5}, {"input": [-14.0, 76.0], "expected": 76.0}, {"input": [-14.0, 76.5], "expected": 76.5}, {"input": [-14.0, 77.0], "expected": 77.0}, {"input": [-14.0, 77.5], "expected": 77.5}, {"input": [-14.0, 78.0], "expected": 78.0}, {"input": [-14.0, 78.5], "expected": 78.5}, {"input": [-14.0, 79.0], "expected": 79.0}, {"input": [-14.0, 79.5], "expected": 79.5}, {"input": [-14.0, 80.0], "expected": 80.0}, {"input": [-14.0, 80.5], "expected": 80.5}, {"input": [-14.0, 81.0], "expected": 81.0}, {"input": [-14.0, 81.5], "expected": 81.5}, {"input": [-14.0, 82.0], "expected": 82.0}, {"input": [-14.0, 82.5], "expected": 82.5}, {"input": [-14.0, 83.0], "expected": 83.0}, {"input": [-14.0, 83.5], "expected": 83.5}, {"input": [-14.0, 84.0], "expected": 84.0}, {"input": [-14.0, 84.5], "expected": 84.5}, {"input": [-14.0, 85.0], "expected": 85.0}, {"input": [-14.0, 85.5], "expected": 85.5}, {"input": [-14.0, 86.0], "expected": 86.0}, {"input": [-14.0, 86.5], "expected": 86.5}, {"input": [-14.0, 87.0], "expected": 87.0}, {"input": [-14.0, 87.5], "expected": 87.5}, {"input": [-14.0, 88.0], "expected": 88.0}, {"input": [-14.0, 88.5], "expected": 88.5}, {"input": [-14.0, 89.0], "expected": 89.0}, {"input": [-14.0, 89.5], "expected": 89.5}, {"input": [-14.0, 90.0], "expected": 90.0}, {"input": [-14.0, 90.5], "expected": 90.5}, {"input": [-14.0, 91.0], "expected": 91.0}, {"input": [-14.0, 91.5], "expected": 91.5}, {"input": [-14.0, 92.0], "expected": 92.0}, {"input": [-14.0, 92.5], "expected": 92.5}, {"input": [-14.0, 93.0], "expected": 93.0}, {"input": [-14.0, 93.5], "expected": 93.5}, {"input": [-14.0, 94.0], "expected": 94.0}, {"input": [-14.0, 94.5], "expected": 94.5}, {"input": [-14.0, 95.0], "expected": 95.0}, {"input": [-14.0, 95.5], "expected": 95.5}, {"input": [-14.0, 96.0], "expected": 96.0}, {"input": [-14.0, 96.5], "expected": 96.5}, {"input": [-14.0, 97.0], "expected": 97.0}, {"input": [-14.0, 97.5], "expected": 97.5}, {"input": [-14.0, 98.0], "expected": 98.0}, {"input": [-14.0, 98.5], "expected": 98.5}, {"input": [-14.0, 99.0], "expected": 99.0}, {"input": [-14.0, 99.5], "expected": 99.5}, {"input": [-13.5, -100.0], "expected": -13.5}, {"input": [-13.5, -99.5], "expected": -13.5}, {"input": [-13.5, -99.0], "expected": -13.5}, {"input": [-13.5, -98.5], "expected": -13.5}, {"input": [-13.5, -98.0], "expected": -13.5}, {"input": [-13.5, -97.5], "expected": -13.5}, {"input": [-13.5, -97.0], "expected": -13.5}, {"input": [-13.5, -96.5], "expected": -13.5}, {"input": [-13.5, -96.0], "expected": -13.5}, {"input": [-13.5, -95.5], "expected": -13.5}, {"input": [-13.5, -95.0], "expected": -13.5}, {"input": [-13.5, -94.5], "expected": -13.5}, {"input": [-13.5, -94.0], "expected": -13.5}, {"input": [-13.5, -93.5], "expected": -13.5}, {"input": [-13.5, -93.0], "expected": -13.5}, {"input": [-13.5, -92.5], "expected": -13.5}, {"input": [-13.5, -92.0], "expected": -13.5}, {"input": [-13.5, -91.5], "expected": -13.5}, {"input": [-13.5, -91.0], "expected": -13.5}, {"input": [-13.5, -90.5], "expected": -13.5}, {"input": [-13.5, -90.0], "expected": -13.5}, {"input": [-13.5, -89.5], "expected": -13.5}, {"input": [-13.5, -89.0], "expected": -13.5}, {"input": [-13.5, -88.5], "expected": -13.5}, {"input": [-13.5, -88.0], "expected": -13.5}, {"input": [-13.5, -87.5], "expected": -13.5}, {"input": [-13.5, -87.0], "expected": -13.5}, {"input": [-13.5, -86.5], "expected": -13.5}, {"input": [-13.5, -86.0], "expected": -13.5}, {"input": [-13.5, -85.5], "expected": -13.5}, {"input": [-13.5, -85.0], "expected": -13.5}, {"input": [-13.5, -84.5], "expected": -13.5}, {"input": [-13.5, -84.0], "expected": -13.5}, {"input": [-13.5, -83.5], "expected": -13.5}, {"input": [-13.5, -83.0], "expected": -13.5}, {"input": [-13.5, -82.5], "expected": -13.5}, {"input": [-13.5, -82.0], "expected": -13.5}, {"input": [-13.5, -81.5], "expected": -13.5}, {"input": [-13.5, -81.0], "expected": -13.5}, {"input": [-13.5, -80.5], "expected": -13.5}, {"input": [-13.5, -80.0], "expected": -13.5}, {"input": [-13.5, -79.5], "expected": -13.5}, {"input": [-13.5, -79.0], "expected": -13.5}, {"input": [-13.5, -78.5], "expected": -13.5}, {"input": [-13.5, -78.0], "expected": -13.5}, {"input": [-13.5, -77.5], "expected": -13.5}, {"input": [-13.5, -77.0], "expected": -13.5}, {"input": [-13.5, -76.5], "expected": -13.5}, {"input": [-13.5, -76.0], "expected": -13.5}, {"input": [-13.5, -75.5], "expected": -13.5}, {"input": [-13.5, -75.0], "expected": -13.5}, {"input": [-13.5, -74.5], "expected": -13.5}, {"input": [-13.5, -74.0], "expected": -13.5}, {"input": [-13.5, -73.5], "expected": -13.5}, {"input": [-13.5, -73.0], "expected": -13.5}, {"input": [-13.5, -72.5], "expected": -13.5}, {"input": [-13.5, -72.0], "expected": -13.5}, {"input": [-13.5, -71.5], "expected": -13.5}, {"input": [-13.5, -71.0], "expected": -13.5}, {"input": [-13.5, -70.5], "expected": -13.5}, {"input": [-13.5, -70.0], "expected": -13.5}, {"input": [-13.5, -69.5], "expected": -13.5}, {"input": [-13.5, -69.0], "expected": -13.5}, {"input": [-13.5, -68.5], "expected": -13.5}, {"input": [-13.5, -68.0], "expected": -13.5}, {"input": [-13.5, -67.5], "expected": -13.5}, {"input": [-13.5, -67.0], "expected": -13.5}, {"input": [-13.5, -66.5], "expected": -13.5}, {"input": [-13.5, -66.0], "expected": -13.5}, {"input": [-13.5, -65.5], "expected": -13.5}, {"input": [-13.5, -65.0], "expected": -13.5}, {"input": [-13.5, -64.5], "expected": -13.5}, {"input": [-13.5, -64.0], "expected": -13.5}, {"input": [-13.5, -63.5], "expected": -13.5}, {"input": [-13.5, -63.0], "expected": -13.5}, {"input": [-13.5, -62.5], "expected": -13.5}, {"input": [-13.5, -62.0], "expected": -13.5}, {"input": [-13.5, -61.5], "expected": -13.5}, {"input": [-13.5, -61.0], "expected": -13.5}, {"input": [-13.5, -60.5], "expected": -13.5}, {"input": [-13.5, -60.0], "expected": -13.5}, {"input": [-13.5, -59.5], "expected": -13.5}, {"input": [-13.5, -59.0], "expected": -13.5}, {"input": [-13.5, -58.5], "expected": -13.5}, {"input": [-13.5, -58.0], "expected": -13.5}, {"input": [-13.5, -57.5], "expected": -13.5}, {"input": [-13.5, -57.0], "expected": -13.5}, {"input": [-13.5, -56.5], "expected": -13.5}, {"input": [-13.5, -56.0], "expected": -13.5}, {"input": [-13.5, -55.5], "expected": -13.5}, {"input": [-13.5, -55.0], "expected": -13.5}, {"input": [-13.5, -54.5], "expected": -13.5}, {"input": [-13.5, -54.0], "expected": -13.5}, {"input": [-13.5, -53.5], "expected": -13.5}, {"input": [-13.5, -53.0], "expected": -13.5}, {"input": [-13.5, -52.5], "expected": -13.5}, {"input": [-13.5, -52.0], "expected": -13.5}, {"input": [-13.5, -51.5], "expected": -13.5}, {"input": [-13.5, -51.0], "expected": -13.5}, {"input": [-13.5, -50.5], "expected": -13.5}, {"input": [-13.5, -50.0], "expected": -13.5}, {"input": [-13.5, -49.5], "expected": -13.5}, {"input": [-13.5, -49.0], "expected": -13.5}, {"input": [-13.5, -48.5], "expected": -13.5}, {"input": [-13.5, -48.0], "expected": -13.499999999999998}, {"input": [-13.5, -47.5], "expected": -13.499999999999998}, {"input": [-13.5, -47.0], "expected": -13.499999999999996}, {"input": [-13.5, -46.5], "expected": -13.499999999999995}, {"input": [-13.5, -46.0], "expected": -13.499999999999993}, {"input": [-13.5, -45.5], "expected": -13.499999999999988}, {"input": [-13.5, -45.0], "expected": -13.499999999999979}, {"input": [-13.5, -44.5], "expected": -13.499999999999966}, {"input": [-13.5, -44.0], "expected": -13.499999999999943}, {"input": [-13.5, -43.5], "expected": -13.499999999999906}, {"input": [-13.5, -43.0], "expected": -13.499999999999845}, {"input": [-13.5, -42.5], "expected": -13.499999999999746}, {"input": [-13.5, -42.0], "expected": -13.49999999999958}, {"input": [-13.5, -41.5], "expected": -13.499999999999309}, {"input": [-13.5, -41.0], "expected": -13.49999999999886}, {"input": [-13.5, -40.5], "expected": -13.49999999999812}, {"input": [-13.5, -40.0], "expected": -13.499999999996902}, {"input": [-13.5, -39.5], "expected": -13.499999999994891}, {"input": [-13.5, -39.0], "expected": -13.499999999991577}, {"input": [-13.5, -38.5], "expected": -13.499999999986112}, {"input": [-13.5, -38.0], "expected": -13.499999999977103}, {"input": [-13.5, -37.5], "expected": -13.499999999962249}, {"input": [-13.5, -37.0], "expected": -13.499999999937758}, {"input": [-13.5, -36.5], "expected": -13.499999999897382}, {"input": [-13.5, -36.0], "expected": -13.499999999830811}, {"input": [-13.5, -35.5], "expected": -13.499999999721053}, {"input": [-13.5, -35.0], "expected": -13.499999999540094}, {"input": [-13.5, -34.5], "expected": -13.499999999241744}, {"input": [-13.5, -34.0], "expected": -13.499999998749848}, {"input": [-13.5, -33.5], "expected": -13.499999997938847}, {"input": [-13.5, -33.0], "expected": -13.499999996601732}, {"input": [-13.5, -32.5], "expected": -13.499999994397204}, {"input": [-13.5, -32.0], "expected": -13.49999999076255}, {"input": [-13.5, -31.5], "expected": -13.499999984770021}, {"input": [-13.5, -31.0], "expected": -13.49999997489001}, {"input": [-13.5, -30.5], "expected": -13.499999958600624}, {"input": [-13.5, -30.0], "expected": -13.499999931743968}, {"input": [-13.5, -29.5], "expected": -13.499999887464831}, {"input": [-13.5, -29.0], "expected": -13.499999814460882}, {"input": [-13.5, -28.5], "expected": -13.499999694097726}, {"input": [-13.5, -28.0], "expected": -13.499999495652464}, {"input": [-13.5, -27.5], "expected": -13.499999168471627}, {"input": [-13.5, -27.0], "expected": -13.499998629041853}, {"input": [-13.5, -26.5], "expected": -13.499997739673148}, {"input": [-13.5, -26.0], "expected": -13.499996273353771}, {"input": [-13.5, -25.5], "expected": -13.499993855806522}, {"input": [-13.5, -25.0], "expected": -13.49998986995771}, {"input": [-13.5, -24.5], "expected": -13.499983298438682}, {"input": [-13.5, -24.0], "expected": -13.49997246392977}, {"input": [-13.5, -23.5], "expected": -13.499954601100782}, {"input": [-13.5, -23.0], "expected": -13.499925150971372}, {"input": [-13.5, -22.5], "expected": -13.499876597810276}, {"input": [-13.5, -22.0], "expected": -13.49979655232787}, {"input": [-13.5, -21.5], "expected": -13.499664593627104}, {"input": [-13.5, -21.0], "expected": -13.499447068524638}, {"input": [-13.5, -20.5], "expected": -13.499088533546226}, {"input": [-13.5, -20.0], "expected": -13.498497689840246}, {"input": [-13.5, -19.5], "expected": -13.49752431486227}, {"input": [-13.5, -19.0], "expected": -13.49592155672943}, {"input": [-13.5, -18.5], "expected": -13.493284651510882}, {"input": [-13.5, -18.0], "expected": -13.488952255151407}, {"input": [-13.5, -17.5], "expected": -13.48185007208219}, {"input": [-13.5, -17.0], "expected": -13.47024958172738}, {"input": [-13.5, -16.5], "expected": -13.451412648426258}, {"input": [-13.5, -16.0], "expected": -13.421110265707451}, {"input": [-13.5, -15.5], "expected": -13.373071988957028}, {"input": [-13.5, -15.0], "expected": -13.298586722017248}, {"input": [-13.5, -14.5], "expected": -13.186738312481777}, {"input": [-13.5, -14.0], "expected": -13.025923015819894}, {"input": [-13.5, -13.5], "expected": -12.806852819440055}, {"input": [-13.5, -13.0], "expected": -12.525923015819894}, {"input": [-13.5, -12.5], "expected": -12.186738312481777}, {"input": [-13.5, -12.0], "expected": -11.798586722017248}, {"input": [-13.5, -11.5], "expected": -11.373071988957028}, {"input": [-13.5, -11.0], "expected": -10.921110265707451}, {"input": [-13.5, -10.5], "expected": -10.451412648426258}, {"input": [-13.5, -10.0], "expected": -9.97024958172738}, {"input": [-13.5, -9.5], "expected": -9.48185007208219}, {"input": [-13.5, -9.0], "expected": -8.988952255151407}, {"input": [-13.5, -8.5], "expected": -8.493284651510882}, {"input": [-13.5, -8.0], "expected": -7.995921556729429}, {"input": [-13.5, -7.5], "expected": -7.49752431486227}, {"input": [-13.5, -7.0], "expected": -6.998497689840246}, {"input": [-13.5, -6.5], "expected": -6.499088533546225}, {"input": [-13.5, -6.0], "expected": -5.999447068524639}, {"input": [-13.5, -5.5], "expected": -5.499664593627104}, {"input": [-13.5, -5.0], "expected": -4.9997965523278705}, {"input": [-13.5, -4.5], "expected": -4.499876597810276}, {"input": [-13.5, -4.0], "expected": -3.9999251509713707}, {"input": [-13.5, -3.5], "expected": -3.499954601100783}, {"input": [-13.5, -3.0], "expected": -2.999972463929771}, {"input": [-13.5, -2.5], "expected": -2.4999832984386816}, {"input": [-13.5, -2.0], "expected": -1.9999898699577103}, {"input": [-13.5, -1.5], "expected": -1.4999938558065222}, {"input": [-13.5, -1.0], "expected": -0.9999962733537718}, {"input": [-13.5, -0.5], "expected": -0.49999773967314753}, {"input": [-13.5, 0.0], "expected": 1.3709581466205352e-06}, {"input": [-13.5, 0.5], "expected": 0.5000008315283734}, {"input": [-13.5, 1.0], "expected": 1.0000005043475353}, {"input": [-13.5, 1.5], "expected": 1.5000003059022737}, {"input": [-13.5, 2.0], "expected": 2.000000185539119}, {"input": [-13.5, 2.5], "expected": 2.5000001125351683}, {"input": [-13.5, 3.0], "expected": 3.0000000682560315}, {"input": [-13.5, 3.5], "expected": 3.5000000413993764}, {"input": [-13.5, 4.0], "expected": 4.000000025109991}, {"input": [-13.5, 4.5], "expected": 4.50000001522998}, {"input": [-13.5, 5.0], "expected": 5.00000000923745}, {"input": [-13.5, 5.5], "expected": 5.5000000056027964}, {"input": [-13.5, 6.0], "expected": 6.0000000033982674}, {"input": [-13.5, 6.5], "expected": 6.500000002061154}, {"input": [-13.5, 7.0], "expected": 7.000000001250153}, {"input": [-13.5, 7.5], "expected": 7.500000000758256}, {"input": [-13.5, 8.0], "expected": 8.000000000459906}, {"input": [-13.5, 8.5], "expected": 8.500000000278947}, {"input": [-13.5, 9.0], "expected": 9.000000000169189}, {"input": [-13.5, 9.5], "expected": 9.500000000102618}, {"input": [-13.5, 10.0], "expected": 10.000000000062242}, {"input": [-13.5, 10.5], "expected": 10.500000000037751}, {"input": [-13.5, 11.0], "expected": 11.000000000022897}, {"input": [-13.5, 11.5], "expected": 11.500000000013888}, {"input": [-13.5, 12.0], "expected": 12.000000000008423}, {"input": [-13.5, 12.5], "expected": 12.500000000005109}, {"input": [-13.5, 13.0], "expected": 13.000000000003098}, {"input": [-13.5, 13.5], "expected": 13.50000000000188}, {"input": [-13.5, 14.0], "expected": 14.00000000000114}, {"input": [-13.5, 14.5], "expected": 14.500000000000691}, {"input": [-13.5, 15.0], "expected": 15.00000000000042}, {"input": [-13.5, 15.5], "expected": 15.500000000000254}, {"input": [-13.5, 16.0], "expected": 16.000000000000153}, {"input": [-13.5, 16.5], "expected": 16.500000000000092}, {"input": [-13.5, 17.0], "expected": 17.000000000000057}, {"input": [-13.5, 17.5], "expected": 17.500000000000036}, {"input": [-13.5, 18.0], "expected": 18.00000000000002}, {"input": [-13.5, 18.5], "expected": 18.500000000000014}, {"input": [-13.5, 19.0], "expected": 19.000000000000007}, {"input": [-13.5, 19.5], "expected": 19.500000000000004}, {"input": [-13.5, 20.0], "expected": 20.000000000000004}, {"input": [-13.5, 20.5], "expected": 20.5}, {"input": [-13.5, 21.0], "expected": 21.0}, {"input": [-13.5, 21.5], "expected": 21.5}, {"input": [-13.5, 22.0], "expected": 22.0}, {"input": [-13.5, 22.5], "expected": 22.5}, {"input": [-13.5, 23.0], "expected": 23.0}, {"input": [-13.5, 23.5], "expected": 23.5}, {"input": [-13.5, 24.0], "expected": 24.0}, {"input": [-13.5, 24.5], "expected": 24.5}, {"input": [-13.5, 25.0], "expected": 25.0}, {"input": [-13.5, 25.5], "expected": 25.5}, {"input": [-13.5, 26.0], "expected": 26.0}, {"input": [-13.5, 26.5], "expected": 26.5}, {"input": [-13.5, 27.0], "expected": 27.0}, {"input": [-13.5, 27.5], "expected": 27.5}, {"input": [-13.5, 28.0], "expected": 28.0}, {"input": [-13.5, 28.5], "expected": 28.5}, {"input": [-13.5, 29.0], "expected": 29.0}, {"input": [-13.5, 29.5], "expected": 29.5}, {"input": [-13.5, 30.0], "expected": 30.0}, {"input": [-13.5, 30.5], "expected": 30.5}, {"input": [-13.5, 31.0], "expected": 31.0}, {"input": [-13.5, 31.5], "expected": 31.5}, {"input": [-13.5, 32.0], "expected": 32.0}, {"input": [-13.5, 32.5], "expected": 32.5}, {"input": [-13.5, 33.0], "expected": 33.0}, {"input": [-13.5, 33.5], "expected": 33.5}, {"input": [-13.5, 34.0], "expected": 34.0}, {"input": [-13.5, 34.5], "expected": 34.5}, {"input": [-13.5, 35.0], "expected": 35.0}, {"input": [-13.5, 35.5], "expected": 35.5}, {"input": [-13.5, 36.0], "expected": 36.0}, {"input": [-13.5, 36.5], "expected": 36.5}, {"input": [-13.5, 37.0], "expected": 37.0}, {"input": [-13.5, 37.5], "expected": 37.5}, {"input": [-13.5, 38.0], "expected": 38.0}, {"input": [-13.5, 38.5], "expected": 38.5}, {"input": [-13.5, 39.0], "expected": 39.0}, {"input": [-13.5, 39.5], "expected": 39.5}, {"input": [-13.5, 40.0], "expected": 40.0}, {"input": [-13.5, 40.5], "expected": 40.5}, {"input": [-13.5, 41.0], "expected": 41.0}, {"input": [-13.5, 41.5], "expected": 41.5}, {"input": [-13.5, 42.0], "expected": 42.0}, {"input": [-13.5, 42.5], "expected": 42.5}, {"input": [-13.5, 43.0], "expected": 43.0}, {"input": [-13.5, 43.5], "expected": 43.5}, {"input": [-13.5, 44.0], "expected": 44.0}, {"input": [-13.5, 44.5], "expected": 44.5}, {"input": [-13.5, 45.0], "expected": 45.0}, {"input": [-13.5, 45.5], "expected": 45.5}, {"input": [-13.5, 46.0], "expected": 46.0}, {"input": [-13.5, 46.5], "expected": 46.5}, {"input": [-13.5, 47.0], "expected": 47.0}, {"input": [-13.5, 47.5], "expected": 47.5}, {"input": [-13.5, 48.0], "expected": 48.0}, {"input": [-13.5, 48.5], "expected": 48.5}, {"input": [-13.5, 49.0], "expected": 49.0}, {"input": [-13.5, 49.5], "expected": 49.5}, {"input": [-13.5, 50.0], "expected": 50.0}, {"input": [-13.5, 50.5], "expected": 50.5}, {"input": [-13.5, 51.0], "expected": 51.0}, {"input": [-13.5, 51.5], "expected": 51.5}, {"input": [-13.5, 52.0], "expected": 52.0}, {"input": [-13.5, 52.5], "expected": 52.5}, {"input": [-13.5, 53.0], "expected": 53.0}, {"input": [-13.5, 53.5], "expected": 53.5}, {"input": [-13.5, 54.0], "expected": 54.0}, {"input": [-13.5, 54.5], "expected": 54.5}, {"input": [-13.5, 55.0], "expected": 55.0}, {"input": [-13.5, 55.5], "expected": 55.5}, {"input": [-13.5, 56.0], "expected": 56.0}, {"input": [-13.5, 56.5], "expected": 56.5}, {"input": [-13.5, 57.0], "expected": 57.0}, {"input": [-13.5, 57.5], "expected": 57.5}, {"input": [-13.5, 58.0], "expected": 58.0}, {"input": [-13.5, 58.5], "expected": 58.5}, {"input": [-13.5, 59.0], "expected": 59.0}, {"input": [-13.5, 59.5], "expected": 59.5}, {"input": [-13.5, 60.0], "expected": 60.0}, {"input": [-13.5, 60.5], "expected": 60.5}, {"input": [-13.5, 61.0], "expected": 61.0}, {"input": [-13.5, 61.5], "expected": 61.5}, {"input": [-13.5, 62.0], "expected": 62.0}, {"input": [-13.5, 62.5], "expected": 62.5}, {"input": [-13.5, 63.0], "expected": 63.0}, {"input": [-13.5, 63.5], "expected": 63.5}, {"input": [-13.5, 64.0], "expected": 64.0}, {"input": [-13.5, 64.5], "expected": 64.5}, {"input": [-13.5, 65.0], "expected": 65.0}, {"input": [-13.5, 65.5], "expected": 65.5}, {"input": [-13.5, 66.0], "expected": 66.0}, {"input": [-13.5, 66.5], "expected": 66.5}, {"input": [-13.5, 67.0], "expected": 67.0}, {"input": [-13.5, 67.5], "expected": 67.5}, {"input": [-13.5, 68.0], "expected": 68.0}, {"input": [-13.5, 68.5], "expected": 68.5}, {"input": [-13.5, 69.0], "expected": 69.0}, {"input": [-13.5, 69.5], "expected": 69.5}, {"input": [-13.5, 70.0], "expected": 70.0}, {"input": [-13.5, 70.5], "expected": 70.5}, {"input": [-13.5, 71.0], "expected": 71.0}, {"input": [-13.5, 71.5], "expected": 71.5}, {"input": [-13.5, 72.0], "expected": 72.0}, {"input": [-13.5, 72.5], "expected": 72.5}, {"input": [-13.5, 73.0], "expected": 73.0}, {"input": [-13.5, 73.5], "expected": 73.5}, {"input": [-13.5, 74.0], "expected": 74.0}, {"input": [-13.5, 74.5], "expected": 74.5}, {"input": [-13.5, 75.0], "expected": 75.0}, {"input": [-13.5, 75.5], "expected": 75.5}, {"input": [-13.5, 76.0], "expected": 76.0}, {"input": [-13.5, 76.5], "expected": 76.5}, {"input": [-13.5, 77.0], "expected": 77.0}, {"input": [-13.5, 77.5], "expected": 77.5}, {"input": [-13.5, 78.0], "expected": 78.0}, {"input": [-13.5, 78.5], "expected": 78.5}, {"input": [-13.5, 79.0], "expected": 79.0}, {"input": [-13.5, 79.5], "expected": 79.5}, {"input": [-13.5, 80.0], "expected": 80.0}, {"input": [-13.5, 80.5], "expected": 80.5}, {"input": [-13.5, 81.0], "expected": 81.0}, {"input": [-13.5, 81.5], "expected": 81.5}, {"input": [-13.5, 82.0], "expected": 82.0}, {"input": [-13.5, 82.5], "expected": 82.5}, {"input": [-13.5, 83.0], "expected": 83.0}, {"input": [-13.5, 83.5], "expected": 83.5}, {"input": [-13.5, 84.0], "expected": 84.0}, {"input": [-13.5, 84.5], "expected": 84.5}, {"input": [-13.5, 85.0], "expected": 85.0}, {"input": [-13.5, 85.5], "expected": 85.5}, {"input": [-13.5, 86.0], "expected": 86.0}, {"input": [-13.5, 86.5], "expected": 86.5}, {"input": [-13.5, 87.0], "expected": 87.0}, {"input": [-13.5, 87.5], "expected": 87.5}, {"input": [-13.5, 88.0], "expected": 88.0}, {"input": [-13.5, 88.5], "expected": 88.5}, {"input": [-13.5, 89.0], "expected": 89.0}, {"input": [-13.5, 89.5], "expected": 89.5}, {"input": [-13.5, 90.0], "expected": 90.0}, {"input": [-13.5, 90.5], "expected": 90.5}, {"input": [-13.5, 91.0], "expected": 91.0}, {"input": [-13.5, 91.5], "expected": 91.5}, {"input": [-13.5, 92.0], "expected": 92.0}, {"input": [-13.5, 92.5], "expected": 92.5}, {"input": [-13.5, 93.0], "expected": 93.0}, {"input": [-13.5, 93.5], "expected": 93.5}, {"input": [-13.5, 94.0], "expected": 94.0}, {"input": [-13.5, 94.5], "expected": 94.5}, {"input": [-13.5, 95.0], "expected": 95.0}, {"input": [-13.5, 95.5], "expected": 95.5}, {"input": [-13.5, 96.0], "expected": 96.0}, {"input": [-13.5, 96.5], "expected": 96.5}, {"input": [-13.5, 97.0], "expected": 97.0}, {"input": [-13.5, 97.5], "expected": 97.5}, {"input": [-13.5, 98.0], "expected": 98.0}, {"input": [-13.5, 98.5], "expected": 98.5}, {"input": [-13.5, 99.0], "expected": 99.0}, {"input": [-13.5, 99.5], "expected": 99.5}, {"input": [-13.0, -100.0], "expected": -13.0}, {"input": [-13.0, -99.5], "expected": -13.0}, {"input": [-13.0, -99.0], "expected": -13.0}, {"input": [-13.0, -98.5], "expected": -13.0}, {"input": [-13.0, -98.0], "expected": -13.0}, {"input": [-13.0, -97.5], "expected": -13.0}, {"input": [-13.0, -97.0], "expected": -13.0}, {"input": [-13.0, -96.5], "expected": -13.0}, {"input": [-13.0, -96.0], "expected": -13.0}, {"input": [-13.0, -95.5], "expected": -13.0}, {"input": [-13.0, -95.0], "expected": -13.0}, {"input": [-13.0, -94.5], "expected": -13.0}, {"input": [-13.0, -94.0], "expected": -13.0}, {"input": [-13.0, -93.5], "expected": -13.0}, {"input": [-13.0, -93.0], "expected": -13.0}, {"input": [-13.0, -92.5], "expected": -13.0}, {"input": [-13.0, -92.0], "expected": -13.0}, {"input": [-13.0, -91.5], "expected": -13.0}, {"input": [-13.0, -91.0], "expected": -13.0}, {"input": [-13.0, -90.5], "expected": -13.0}, {"input": [-13.0, -90.0], "expected": -13.0}, {"input": [-13.0, -89.5], "expected": -13.0}, {"input": [-13.0, -89.0], "expected": -13.0}, {"input": [-13.0, -88.5], "expected": -13.0}, {"input": [-13.0, -88.0], "expected": -13.0}, {"input": [-13.0, -87.5], "expected": -13.0}, {"input": [-13.0, -87.0], "expected": -13.0}, {"input": [-13.0, -86.5], "expected": -13.0}, {"input": [-13.0, -86.0], "expected": -13.0}, {"input": [-13.0, -85.5], "expected": -13.0}, {"input": [-13.0, -85.0], "expected": -13.0}, {"input": [-13.0, -84.5], "expected": -13.0}, {"input": [-13.0, -84.0], "expected": -13.0}, {"input": [-13.0, -83.5], "expected": -13.0}, {"input": [-13.0, -83.0], "expected": -13.0}, {"input": [-13.0, -82.5], "expected": -13.0}, {"input": [-13.0, -82.0], "expected": -13.0}, {"input": [-13.0, -81.5], "expected": -13.0}, {"input": [-13.0, -81.0], "expected": -13.0}, {"input": [-13.0, -80.5], "expected": -13.0}, {"input": [-13.0, -80.0], "expected": -13.0}, {"input": [-13.0, -79.5], "expected": -13.0}, {"input": [-13.0, -79.0], "expected": -13.0}, {"input": [-13.0, -78.5], "expected": -13.0}, {"input": [-13.0, -78.0], "expected": -13.0}, {"input": [-13.0, -77.5], "expected": -13.0}, {"input": [-13.0, -77.0], "expected": -13.0}, {"input": [-13.0, -76.5], "expected": -13.0}, {"input": [-13.0, -76.0], "expected": -13.0}, {"input": [-13.0, -75.5], "expected": -13.0}, {"input": [-13.0, -75.0], "expected": -13.0}, {"input": [-13.0, -74.5], "expected": -13.0}, {"input": [-13.0, -74.0], "expected": -13.0}, {"input": [-13.0, -73.5], "expected": -13.0}, {"input": [-13.0, -73.0], "expected": -13.0}, {"input": [-13.0, -72.5], "expected": -13.0}, {"input": [-13.0, -72.0], "expected": -13.0}, {"input": [-13.0, -71.5], "expected": -13.0}, {"input": [-13.0, -71.0], "expected": -13.0}, {"input": [-13.0, -70.5], "expected": -13.0}, {"input": [-13.0, -70.0], "expected": -13.0}, {"input": [-13.0, -69.5], "expected": -13.0}, {"input": [-13.0, -69.0], "expected": -13.0}, {"input": [-13.0, -68.5], "expected": -13.0}, {"input": [-13.0, -68.0], "expected": -13.0}, {"input": [-13.0, -67.5], "expected": -13.0}, {"input": [-13.0, -67.0], "expected": -13.0}, {"input": [-13.0, -66.5], "expected": -13.0}, {"input": [-13.0, -66.0], "expected": -13.0}, {"input": [-13.0, -65.5], "expected": -13.0}, {"input": [-13.0, -65.0], "expected": -13.0}, {"input": [-13.0, -64.5], "expected": -13.0}, {"input": [-13.0, -64.0], "expected": -13.0}, {"input": [-13.0, -63.5], "expected": -13.0}, {"input": [-13.0, -63.0], "expected": -13.0}, {"input": [-13.0, -62.5], "expected": -13.0}, {"input": [-13.0, -62.0], "expected": -13.0}, {"input": [-13.0, -61.5], "expected": -13.0}, {"input": [-13.0, -61.0], "expected": -13.0}, {"input": [-13.0, -60.5], "expected": -13.0}, {"input": [-13.0, -60.0], "expected": -13.0}, {"input": [-13.0, -59.5], "expected": -13.0}, {"input": [-13.0, -59.0], "expected": -13.0}, {"input": [-13.0, -58.5], "expected": -13.0}, {"input": [-13.0, -58.0], "expected": -13.0}, {"input": [-13.0, -57.5], "expected": -13.0}, {"input": [-13.0, -57.0], "expected": -13.0}, {"input": [-13.0, -56.5], "expected": -13.0}, {"input": [-13.0, -56.0], "expected": -13.0}, {"input": [-13.0, -55.5], "expected": -13.0}, {"input": [-13.0, -55.0], "expected": -13.0}, {"input": [-13.0, -54.5], "expected": -13.0}, {"input": [-13.0, -54.0], "expected": -13.0}, {"input": [-13.0, -53.5], "expected": -13.0}, {"input": [-13.0, -53.0], "expected": -13.0}, {"input": [-13.0, -52.5], "expected": -13.0}, {"input": [-13.0, -52.0], "expected": -13.0}, {"input": [-13.0, -51.5], "expected": -13.0}, {"input": [-13.0, -51.0], "expected": -13.0}, {"input": [-13.0, -50.5], "expected": -13.0}, {"input": [-13.0, -50.0], "expected": -13.0}, {"input": [-13.0, -49.5], "expected": -13.0}, {"input": [-13.0, -49.0], "expected": -13.0}, {"input": [-13.0, -48.5], "expected": -13.0}, {"input": [-13.0, -48.0], "expected": -13.0}, {"input": [-13.0, -47.5], "expected": -12.999999999999998}, {"input": [-13.0, -47.0], "expected": -12.999999999999998}, {"input": [-13.0, -46.5], "expected": -12.999999999999996}, {"input": [-13.0, -46.0], "expected": -12.999999999999995}, {"input": [-13.0, -45.5], "expected": -12.999999999999993}, {"input": [-13.0, -45.0], "expected": -12.999999999999988}, {"input": [-13.0, -44.5], "expected": -12.999999999999979}, {"input": [-13.0, -44.0], "expected": -12.999999999999966}, {"input": [-13.0, -43.5], "expected": -12.999999999999943}, {"input": [-13.0, -43.0], "expected": -12.999999999999906}, {"input": [-13.0, -42.5], "expected": -12.999999999999845}, {"input": [-13.0, -42.0], "expected": -12.999999999999746}, {"input": [-13.0, -41.5], "expected": -12.99999999999958}, {"input": [-13.0, -41.0], "expected": -12.999999999999309}, {"input": [-13.0, -40.5], "expected": -12.99999999999886}, {"input": [-13.0, -40.0], "expected": -12.99999999999812}, {"input": [-13.0, -39.5], "expected": -12.999999999996902}, {"input": [-13.0, -39.0], "expected": -12.999999999994891}, {"input": [-13.0, -38.5], "expected": -12.999999999991577}, {"input": [-13.0, -38.0], "expected": -12.999999999986112}, {"input": [-13.0, -37.5], "expected": -12.999999999977103}, {"input": [-13.0, -37.0], "expected": -12.999999999962249}, {"input": [-13.0, -36.5], "expected": -12.999999999937758}, {"input": [-13.0, -36.0], "expected": -12.999999999897382}, {"input": [-13.0, -35.5], "expected": -12.999999999830811}, {"input": [-13.0, -35.0], "expected": -12.999999999721053}, {"input": [-13.0, -34.5], "expected": -12.999999999540094}, {"input": [-13.0, -34.0], "expected": -12.999999999241744}, {"input": [-13.0, -33.5], "expected": -12.999999998749848}, {"input": [-13.0, -33.0], "expected": -12.999999997938847}, {"input": [-13.0, -32.5], "expected": -12.999999996601732}, {"input": [-13.0, -32.0], "expected": -12.999999994397204}, {"input": [-13.0, -31.5], "expected": -12.99999999076255}, {"input": [-13.0, -31.0], "expected": -12.999999984770021}, {"input": [-13.0, -30.5], "expected": -12.99999997489001}, {"input": [-13.0, -30.0], "expected": -12.999999958600624}, {"input": [-13.0, -29.5], "expected": -12.999999931743968}, {"input": [-13.0, -29.0], "expected": -12.999999887464831}, {"input": [-13.0, -28.5], "expected": -12.999999814460882}, {"input": [-13.0, -28.0], "expected": -12.999999694097726}, {"input": [-13.0, -27.5], "expected": -12.999999495652464}, {"input": [-13.0, -27.0], "expected": -12.999999168471627}, {"input": [-13.0, -26.5], "expected": -12.999998629041853}, {"input": [-13.0, -26.0], "expected": -12.999997739673148}, {"input": [-13.0, -25.5], "expected": -12.999996273353771}, {"input": [-13.0, -25.0], "expected": -12.999993855806522}, {"input": [-13.0, -24.5], "expected": -12.99998986995771}, {"input": [-13.0, -24.0], "expected": -12.999983298438682}, {"input": [-13.0, -23.5], "expected": -12.99997246392977}, {"input": [-13.0, -23.0], "expected": -12.999954601100782}, {"input": [-13.0, -22.5], "expected": -12.999925150971372}, {"input": [-13.0, -22.0], "expected": -12.999876597810276}, {"input": [-13.0, -21.5], "expected": -12.99979655232787}, {"input": [-13.0, -21.0], "expected": -12.999664593627104}, {"input": [-13.0, -20.5], "expected": -12.999447068524638}, {"input": [-13.0, -20.0], "expected": -12.999088533546226}, {"input": [-13.0, -19.5], "expected": -12.998497689840246}, {"input": [-13.0, -19.0], "expected": -12.99752431486227}, {"input": [-13.0, -18.5], "expected": -12.99592155672943}, {"input": [-13.0, -18.0], "expected": -12.993284651510882}, {"input": [-13.0, -17.5], "expected": -12.988952255151407}, {"input": [-13.0, -17.0], "expected": -12.98185007208219}, {"input": [-13.0, -16.5], "expected": -12.97024958172738}, {"input": [-13.0, -16.0], "expected": -12.951412648426258}, {"input": [-13.0, -15.5], "expected": -12.921110265707451}, {"input": [-13.0, -15.0], "expected": -12.873071988957028}, {"input": [-13.0, -14.5], "expected": -12.798586722017248}, {"input": [-13.0, -14.0], "expected": -12.686738312481777}, {"input": [-13.0, -13.5], "expected": -12.525923015819894}, {"input": [-13.0, -13.0], "expected": -12.306852819440055}, {"input": [-13.0, -12.5], "expected": -12.025923015819894}, {"input": [-13.0, -12.0], "expected": -11.686738312481777}, {"input": [-13.0, -11.5], "expected": -11.298586722017248}, {"input": [-13.0, -11.0], "expected": -10.873071988957028}, {"input": [-13.0, -10.5], "expected": -10.421110265707451}, {"input": [-13.0, -10.0], "expected": -9.951412648426258}, {"input": [-13.0, -9.5], "expected": -9.47024958172738}, {"input": [-13.0, -9.0], "expected": -8.98185007208219}, {"input": [-13.0, -8.5], "expected": -8.488952255151407}, {"input": [-13.0, -8.0], "expected": -7.993284651510882}, {"input": [-13.0, -7.5], "expected": -7.495921556729429}, {"input": [-13.0, -7.0], "expected": -6.99752431486227}, {"input": [-13.0, -6.5], "expected": -6.498497689840246}, {"input": [-13.0, -6.0], "expected": -5.999088533546225}, {"input": [-13.0, -5.5], "expected": -5.499447068524639}, {"input": [-13.0, -5.0], "expected": -4.999664593627104}, {"input": [-13.0, -4.5], "expected": -4.4997965523278705}, {"input": [-13.0, -4.0], "expected": -3.999876597810277}, {"input": [-13.0, -3.5], "expected": -3.4999251509713707}, {"input": [-13.0, -3.0], "expected": -2.999954601100783}, {"input": [-13.0, -2.5], "expected": -2.499972463929771}, {"input": [-13.0, -2.0], "expected": -1.9999832984386816}, {"input": [-13.0, -1.5], "expected": -1.4999898699577103}, {"input": [-13.0, -1.0], "expected": -0.9999938558065222}, {"input": [-13.0, -0.5], "expected": -0.4999962733537719}, {"input": [-13.0, 0.0], "expected": 2.2603268524403896e-06}, {"input": [-13.0, 0.5], "expected": 0.5000013709581467}, {"input": [-13.0, 1.0], "expected": 1.0000008315283735}, {"input": [-13.0, 1.5], "expected": 1.5000005043475353}, {"input": [-13.0, 2.0], "expected": 2.0000003059022737}, {"input": [-13.0, 2.5], "expected": 2.500000185539119}, {"input": [-13.0, 3.0], "expected": 3.0000001125351683}, {"input": [-13.0, 3.5], "expected": 3.5000000682560315}, {"input": [-13.0, 4.0], "expected": 4.000000041399376}, {"input": [-13.0, 4.5], "expected": 4.500000025109991}, {"input": [-13.0, 5.0], "expected": 5.00000001522998}, {"input": [-13.0, 5.5], "expected": 5.50000000923745}, {"input": [-13.0, 6.0], "expected": 6.0000000056027964}, {"input": [-13.0, 6.5], "expected": 6.5000000033982674}, {"input": [-13.0, 7.0], "expected": 7.000000002061154}, {"input": [-13.0, 7.5], "expected": 7.500000001250153}, {"input": [-13.0, 8.0], "expected": 8.000000000758256}, {"input": [-13.0, 8.5], "expected": 8.500000000459906}, {"input": [-13.0, 9.0], "expected": 9.000000000278947}, {"input": [-13.0, 9.5], "expected": 9.500000000169189}, {"input": [-13.0, 10.0], "expected": 10.000000000102618}, {"input": [-13.0, 10.5], "expected": 10.500000000062242}, {"input": [-13.0, 11.0], "expected": 11.000000000037751}, {"input": [-13.0, 11.5], "expected": 11.500000000022897}, {"input": [-13.0, 12.0], "expected": 12.000000000013888}, {"input": [-13.0, 12.5], "expected": 12.500000000008423}, {"input": [-13.0, 13.0], "expected": 13.000000000005109}, {"input": [-13.0, 13.5], "expected": 13.500000000003098}, {"input": [-13.0, 14.0], "expected": 14.00000000000188}, {"input": [-13.0, 14.5], "expected": 14.50000000000114}, {"input": [-13.0, 15.0], "expected": 15.000000000000691}, {"input": [-13.0, 15.5], "expected": 15.50000000000042}, {"input": [-13.0, 16.0], "expected": 16.000000000000256}, {"input": [-13.0, 16.5], "expected": 16.500000000000153}, {"input": [-13.0, 17.0], "expected": 17.000000000000092}, {"input": [-13.0, 17.5], "expected": 17.500000000000057}, {"input": [-13.0, 18.0], "expected": 18.000000000000036}, {"input": [-13.0, 18.5], "expected": 18.50000000000002}, {"input": [-13.0, 19.0], "expected": 19.000000000000014}, {"input": [-13.0, 19.5], "expected": 19.500000000000007}, {"input": [-13.0, 20.0], "expected": 20.000000000000004}, {"input": [-13.0, 20.5], "expected": 20.500000000000004}, {"input": [-13.0, 21.0], "expected": 21.0}, {"input": [-13.0, 21.5], "expected": 21.5}, {"input": [-13.0, 22.0], "expected": 22.0}, {"input": [-13.0, 22.5], "expected": 22.5}, {"input": [-13.0, 23.0], "expected": 23.0}, {"input": [-13.0, 23.5], "expected": 23.5}, {"input": [-13.0, 24.0], "expected": 24.0}, {"input": [-13.0, 24.5], "expected": 24.5}, {"input": [-13.0, 25.0], "expected": 25.0}, {"input": [-13.0, 25.5], "expected": 25.5}, {"input": [-13.0, 26.0], "expected": 26.0}, {"input": [-13.0, 26.5], "expected": 26.5}, {"input": [-13.0, 27.0], "expected": 27.0}, {"input": [-13.0, 27.5], "expected": 27.5}, {"input": [-13.0, 28.0], "expected": 28.0}, {"input": [-13.0, 28.5], "expected": 28.5}, {"input": [-13.0, 29.0], "expected": 29.0}, {"input": [-13.0, 29.5], "expected": 29.5}, {"input": [-13.0, 30.0], "expected": 30.0}, {"input": [-13.0, 30.5], "expected": 30.5}, {"input": [-13.0, 31.0], "expected": 31.0}, {"input": [-13.0, 31.5], "expected": 31.5}, {"input": [-13.0, 32.0], "expected": 32.0}, {"input": [-13.0, 32.5], "expected": 32.5}, {"input": [-13.0, 33.0], "expected": 33.0}, {"input": [-13.0, 33.5], "expected": 33.5}, {"input": [-13.0, 34.0], "expected": 34.0}, {"input": [-13.0, 34.5], "expected": 34.5}, {"input": [-13.0, 35.0], "expected": 35.0}, {"input": [-13.0, 35.5], "expected": 35.5}, {"input": [-13.0, 36.0], "expected": 36.0}, {"input": [-13.0, 36.5], "expected": 36.5}, {"input": [-13.0, 37.0], "expected": 37.0}, {"input": [-13.0, 37.5], "expected": 37.5}, {"input": [-13.0, 38.0], "expected": 38.0}, {"input": [-13.0, 38.5], "expected": 38.5}, {"input": [-13.0, 39.0], "expected": 39.0}, {"input": [-13.0, 39.5], "expected": 39.5}, {"input": [-13.0, 40.0], "expected": 40.0}, {"input": [-13.0, 40.5], "expected": 40.5}, {"input": [-13.0, 41.0], "expected": 41.0}, {"input": [-13.0, 41.5], "expected": 41.5}, {"input": [-13.0, 42.0], "expected": 42.0}, {"input": [-13.0, 42.5], "expected": 42.5}, {"input": [-13.0, 43.0], "expected": 43.0}, {"input": [-13.0, 43.5], "expected": 43.5}, {"input": [-13.0, 44.0], "expected": 44.0}, {"input": [-13.0, 44.5], "expected": 44.5}, {"input": [-13.0, 45.0], "expected": 45.0}, {"input": [-13.0, 45.5], "expected": 45.5}, {"input": [-13.0, 46.0], "expected": 46.0}, {"input": [-13.0, 46.5], "expected": 46.5}, {"input": [-13.0, 47.0], "expected": 47.0}, {"input": [-13.0, 47.5], "expected": 47.5}, {"input": [-13.0, 48.0], "expected": 48.0}, {"input": [-13.0, 48.5], "expected": 48.5}, {"input": [-13.0, 49.0], "expected": 49.0}, {"input": [-13.0, 49.5], "expected": 49.5}, {"input": [-13.0, 50.0], "expected": 50.0}, {"input": [-13.0, 50.5], "expected": 50.5}, {"input": [-13.0, 51.0], "expected": 51.0}, {"input": [-13.0, 51.5], "expected": 51.5}, {"input": [-13.0, 52.0], "expected": 52.0}, {"input": [-13.0, 52.5], "expected": 52.5}, {"input": [-13.0, 53.0], "expected": 53.0}, {"input": [-13.0, 53.5], "expected": 53.5}, {"input": [-13.0, 54.0], "expected": 54.0}, {"input": [-13.0, 54.5], "expected": 54.5}, {"input": [-13.0, 55.0], "expected": 55.0}, {"input": [-13.0, 55.5], "expected": 55.5}, {"input": [-13.0, 56.0], "expected": 56.0}, {"input": [-13.0, 56.5], "expected": 56.5}, {"input": [-13.0, 57.0], "expected": 57.0}, {"input": [-13.0, 57.5], "expected": 57.5}, {"input": [-13.0, 58.0], "expected": 58.0}, {"input": [-13.0, 58.5], "expected": 58.5}, {"input": [-13.0, 59.0], "expected": 59.0}, {"input": [-13.0, 59.5], "expected": 59.5}, {"input": [-13.0, 60.0], "expected": 60.0}, {"input": [-13.0, 60.5], "expected": 60.5}, {"input": [-13.0, 61.0], "expected": 61.0}, {"input": [-13.0, 61.5], "expected": 61.5}, {"input": [-13.0, 62.0], "expected": 62.0}, {"input": [-13.0, 62.5], "expected": 62.5}, {"input": [-13.0, 63.0], "expected": 63.0}, {"input": [-13.0, 63.5], "expected": 63.5}, {"input": [-13.0, 64.0], "expected": 64.0}, {"input": [-13.0, 64.5], "expected": 64.5}, {"input": [-13.0, 65.0], "expected": 65.0}, {"input": [-13.0, 65.5], "expected": 65.5}, {"input": [-13.0, 66.0], "expected": 66.0}, {"input": [-13.0, 66.5], "expected": 66.5}, {"input": [-13.0, 67.0], "expected": 67.0}, {"input": [-13.0, 67.5], "expected": 67.5}, {"input": [-13.0, 68.0], "expected": 68.0}, {"input": [-13.0, 68.5], "expected": 68.5}, {"input": [-13.0, 69.0], "expected": 69.0}, {"input": [-13.0, 69.5], "expected": 69.5}, {"input": [-13.0, 70.0], "expected": 70.0}, {"input": [-13.0, 70.5], "expected": 70.5}, {"input": [-13.0, 71.0], "expected": 71.0}, {"input": [-13.0, 71.5], "expected": 71.5}, {"input": [-13.0, 72.0], "expected": 72.0}, {"input": [-13.0, 72.5], "expected": 72.5}, {"input": [-13.0, 73.0], "expected": 73.0}, {"input": [-13.0, 73.5], "expected": 73.5}, {"input": [-13.0, 74.0], "expected": 74.0}, {"input": [-13.0, 74.5], "expected": 74.5}, {"input": [-13.0, 75.0], "expected": 75.0}, {"input": [-13.0, 75.5], "expected": 75.5}, {"input": [-13.0, 76.0], "expected": 76.0}, {"input": [-13.0, 76.5], "expected": 76.5}, {"input": [-13.0, 77.0], "expected": 77.0}, {"input": [-13.0, 77.5], "expected": 77.5}, {"input": [-13.0, 78.0], "expected": 78.0}, {"input": [-13.0, 78.5], "expected": 78.5}, {"input": [-13.0, 79.0], "expected": 79.0}, {"input": [-13.0, 79.5], "expected": 79.5}, {"input": [-13.0, 80.0], "expected": 80.0}, {"input": [-13.0, 80.5], "expected": 80.5}, {"input": [-13.0, 81.0], "expected": 81.0}, {"input": [-13.0, 81.5], "expected": 81.5}, {"input": [-13.0, 82.0], "expected": 82.0}, {"input": [-13.0, 82.5], "expected": 82.5}, {"input": [-13.0, 83.0], "expected": 83.0}, {"input": [-13.0, 83.5], "expected": 83.5}, {"input": [-13.0, 84.0], "expected": 84.0}, {"input": [-13.0, 84.5], "expected": 84.5}, {"input": [-13.0, 85.0], "expected": 85.0}, {"input": [-13.0, 85.5], "expected": 85.5}, {"input": [-13.0, 86.0], "expected": 86.0}, {"input": [-13.0, 86.5], "expected": 86.5}, {"input": [-13.0, 87.0], "expected": 87.0}, {"input": [-13.0, 87.5], "expected": 87.5}, {"input": [-13.0, 88.0], "expected": 88.0}, {"input": [-13.0, 88.5], "expected": 88.5}, {"input": [-13.0, 89.0], "expected": 89.0}, {"input": [-13.0, 89.5], "expected": 89.5}, {"input": [-13.0, 90.0], "expected": 90.0}, {"input": [-13.0, 90.5], "expected": 90.5}, {"input": [-13.0, 91.0], "expected": 91.0}, {"input": [-13.0, 91.5], "expected": 91.5}, {"input": [-13.0, 92.0], "expected": 92.0}, {"input": [-13.0, 92.5], "expected": 92.5}, {"input": [-13.0, 93.0], "expected": 93.0}, {"input": [-13.0, 93.5], "expected": 93.5}, {"input": [-13.0, 94.0], "expected": 94.0}, {"input": [-13.0, 94.5], "expected": 94.5}, {"input": [-13.0, 95.0], "expected": 95.0}, {"input": [-13.0, 95.5], "expected": 95.5}, {"input": [-13.0, 96.0], "expected": 96.0}, {"input": [-13.0, 96.5], "expected": 96.5}, {"input": [-13.0, 97.0], "expected": 97.0}, {"input": [-13.0, 97.5], "expected": 97.5}, {"input": [-13.0, 98.0], "expected": 98.0}, {"input": [-13.0, 98.5], "expected": 98.5}, {"input": [-13.0, 99.0], "expected": 99.0}, {"input": [-13.0, 99.5], "expected": 99.5}, {"input": [-12.5, -100.0], "expected": -12.5}, {"input": [-12.5, -99.5], "expected": -12.5}, {"input": [-12.5, -99.0], "expected": -12.5}, {"input": [-12.5, -98.5], "expected": -12.5}, {"input": [-12.5, -98.0], "expected": -12.5}, {"input": [-12.5, -97.5], "expected": -12.5}, {"input": [-12.5, -97.0], "expected": -12.5}, {"input": [-12.5, -96.5], "expected": -12.5}, {"input": [-12.5, -96.0], "expected": -12.5}, {"input": [-12.5, -95.5], "expected": -12.5}, {"input": [-12.5, -95.0], "expected": -12.5}, {"input": [-12.5, -94.5], "expected": -12.5}, {"input": [-12.5, -94.0], "expected": -12.5}, {"input": [-12.5, -93.5], "expected": -12.5}, {"input": [-12.5, -93.0], "expected": -12.5}, {"input": [-12.5, -92.5], "expected": -12.5}, {"input": [-12.5, -92.0], "expected": -12.5}, {"input": [-12.5, -91.5], "expected": -12.5}, {"input": [-12.5, -91.0], "expected": -12.5}, {"input": [-12.5, -90.5], "expected": -12.5}, {"input": [-12.5, -90.0], "expected": -12.5}, {"input": [-12.5, -89.5], "expected": -12.5}, {"input": [-12.5, -89.0], "expected": -12.5}, {"input": [-12.5, -88.5], "expected": -12.5}, {"input": [-12.5, -88.0], "expected": -12.5}, {"input": [-12.5, -87.5], "expected": -12.5}, {"input": [-12.5, -87.0], "expected": -12.5}, {"input": [-12.5, -86.5], "expected": -12.5}, {"input": [-12.5, -86.0], "expected": -12.5}, {"input": [-12.5, -85.5], "expected": -12.5}, {"input": [-12.5, -85.0], "expected": -12.5}, {"input": [-12.5, -84.5], "expected": -12.5}, {"input": [-12.5, -84.0], "expected": -12.5}, {"input": [-12.5, -83.5], "expected": -12.5}, {"input": [-12.5, -83.0], "expected": -12.5}, {"input": [-12.5, -82.5], "expected": -12.5}, {"input": [-12.5, -82.0], "expected": -12.5}, {"input": [-12.5, -81.5], "expected": -12.5}, {"input": [-12.5, -81.0], "expected": -12.5}, {"input": [-12.5, -80.5], "expected": -12.5}, {"input": [-12.5, -80.0], "expected": -12.5}, {"input": [-12.5, -79.5], "expected": -12.5}, {"input": [-12.5, -79.0], "expected": -12.5}, {"input": [-12.5, -78.5], "expected": -12.5}, {"input": [-12.5, -78.0], "expected": -12.5}, {"input": [-12.5, -77.5], "expected": -12.5}, {"input": [-12.5, -77.0], "expected": -12.5}, {"input": [-12.5, -76.5], "expected": -12.5}, {"input": [-12.5, -76.0], "expected": -12.5}, {"input": [-12.5, -75.5], "expected": -12.5}, {"input": [-12.5, -75.0], "expected": -12.5}, {"input": [-12.5, -74.5], "expected": -12.5}, {"input": [-12.5, -74.0], "expected": -12.5}, {"input": [-12.5, -73.5], "expected": -12.5}, {"input": [-12.5, -73.0], "expected": -12.5}, {"input": [-12.5, -72.5], "expected": -12.5}, {"input": [-12.5, -72.0], "expected": -12.5}, {"input": [-12.5, -71.5], "expected": -12.5}, {"input": [-12.5, -71.0], "expected": -12.5}, {"input": [-12.5, -70.5], "expected": -12.5}, {"input": [-12.5, -70.0], "expected": -12.5}, {"input": [-12.5, -69.5], "expected": -12.5}, {"input": [-12.5, -69.0], "expected": -12.5}, {"input": [-12.5, -68.5], "expected": -12.5}, {"input": [-12.5, -68.0], "expected": -12.5}, {"input": [-12.5, -67.5], "expected": -12.5}, {"input": [-12.5, -67.0], "expected": -12.5}, {"input": [-12.5, -66.5], "expected": -12.5}, {"input": [-12.5, -66.0], "expected": -12.5}, {"input": [-12.5, -65.5], "expected": -12.5}, {"input": [-12.5, -65.0], "expected": -12.5}, {"input": [-12.5, -64.5], "expected": -12.5}, {"input": [-12.5, -64.0], "expected": -12.5}, {"input": [-12.5, -63.5], "expected": -12.5}, {"input": [-12.5, -63.0], "expected": -12.5}, {"input": [-12.5, -62.5], "expected": -12.5}, {"input": [-12.5, -62.0], "expected": -12.5}, {"input": [-12.5, -61.5], "expected": -12.5}, {"input": [-12.5, -61.0], "expected": -12.5}, {"input": [-12.5, -60.5], "expected": -12.5}, {"input": [-12.5, -60.0], "expected": -12.5}, {"input": [-12.5, -59.5], "expected": -12.5}, {"input": [-12.5, -59.0], "expected": -12.5}, {"input": [-12.5, -58.5], "expected": -12.5}, {"input": [-12.5, -58.0], "expected": -12.5}, {"input": [-12.5, -57.5], "expected": -12.5}, {"input": [-12.5, -57.0], "expected": -12.5}, {"input": [-12.5, -56.5], "expected": -12.5}, {"input": [-12.5, -56.0], "expected": -12.5}, {"input": [-12.5, -55.5], "expected": -12.5}, {"input": [-12.5, -55.0], "expected": -12.5}, {"input": [-12.5, -54.5], "expected": -12.5}, {"input": [-12.5, -54.0], "expected": -12.5}, {"input": [-12.5, -53.5], "expected": -12.5}, {"input": [-12.5, -53.0], "expected": -12.5}, {"input": [-12.5, -52.5], "expected": -12.5}, {"input": [-12.5, -52.0], "expected": -12.5}, {"input": [-12.5, -51.5], "expected": -12.5}, {"input": [-12.5, -51.0], "expected": -12.5}, {"input": [-12.5, -50.5], "expected": -12.5}, {"input": [-12.5, -50.0], "expected": -12.5}, {"input": [-12.5, -49.5], "expected": -12.5}, {"input": [-12.5, -49.0], "expected": -12.5}, {"input": [-12.5, -48.5], "expected": -12.5}, {"input": [-12.5, -48.0], "expected": -12.5}, {"input": [-12.5, -47.5], "expected": -12.5}, {"input": [-12.5, -47.0], "expected": -12.499999999999998}, {"input": [-12.5, -46.5], "expected": -12.499999999999998}, {"input": [-12.5, -46.0], "expected": -12.499999999999996}, {"input": [-12.5, -45.5], "expected": -12.499999999999995}, {"input": [-12.5, -45.0], "expected": -12.499999999999993}, {"input": [-12.5, -44.5], "expected": -12.499999999999988}, {"input": [-12.5, -44.0], "expected": -12.499999999999979}, {"input": [-12.5, -43.5], "expected": -12.499999999999966}, {"input": [-12.5, -43.0], "expected": -12.499999999999943}, {"input": [-12.5, -42.5], "expected": -12.499999999999906}, {"input": [-12.5, -42.0], "expected": -12.499999999999845}, {"input": [-12.5, -41.5], "expected": -12.499999999999746}, {"input": [-12.5, -41.0], "expected": -12.49999999999958}, {"input": [-12.5, -40.5], "expected": -12.499999999999309}, {"input": [-12.5, -40.0], "expected": -12.49999999999886}, {"input": [-12.5, -39.5], "expected": -12.49999999999812}, {"input": [-12.5, -39.0], "expected": -12.499999999996902}, {"input": [-12.5, -38.5], "expected": -12.499999999994891}, {"input": [-12.5, -38.0], "expected": -12.499999999991577}, {"input": [-12.5, -37.5], "expected": -12.499999999986112}, {"input": [-12.5, -37.0], "expected": -12.499999999977103}, {"input": [-12.5, -36.5], "expected": -12.499999999962249}, {"input": [-12.5, -36.0], "expected": -12.499999999937758}, {"input": [-12.5, -35.5], "expected": -12.499999999897382}, {"input": [-12.5, -35.0], "expected": -12.499999999830811}, {"input": [-12.5, -34.5], "expected": -12.499999999721053}, {"input": [-12.5, -34.0], "expected": -12.499999999540094}, {"input": [-12.5, -33.5], "expected": -12.499999999241744}, {"input": [-12.5, -33.0], "expected": -12.499999998749848}, {"input": [-12.5, -32.5], "expected": -12.499999997938847}, {"input": [-12.5, -32.0], "expected": -12.499999996601732}, {"input": [-12.5, -31.5], "expected": -12.499999994397204}, {"input": [-12.5, -31.0], "expected": -12.49999999076255}, {"input": [-12.5, -30.5], "expected": -12.499999984770021}, {"input": [-12.5, -30.0], "expected": -12.49999997489001}, {"input": [-12.5, -29.5], "expected": -12.499999958600624}, {"input": [-12.5, -29.0], "expected": -12.499999931743968}, {"input": [-12.5, -28.5], "expected": -12.499999887464831}, {"input": [-12.5, -28.0], "expected": -12.499999814460882}, {"input": [-12.5, -27.5], "expected": -12.499999694097726}, {"input": [-12.5, -27.0], "expected": -12.499999495652464}, {"input": [-12.5, -26.5], "expected": -12.499999168471627}, {"input": [-12.5, -26.0], "expected": -12.499998629041853}, {"input": [-12.5, -25.5], "expected": -12.499997739673148}, {"input": [-12.5, -25.0], "expected": -12.499996273353771}, {"input": [-12.5, -24.5], "expected": -12.499993855806522}, {"input": [-12.5, -24.0], "expected": -12.49998986995771}, {"input": [-12.5, -23.5], "expected": -12.499983298438682}, {"input": [-12.5, -23.0], "expected": -12.49997246392977}, {"input": [-12.5, -22.5], "expected": -12.499954601100782}, {"input": [-12.5, -22.0], "expected": -12.499925150971372}, {"input": [-12.5, -21.5], "expected": -12.499876597810276}, {"input": [-12.5, -21.0], "expected": -12.49979655232787}, {"input": [-12.5, -20.5], "expected": -12.499664593627104}, {"input": [-12.5, -20.0], "expected": -12.499447068524638}, {"input": [-12.5, -19.5], "expected": -12.499088533546226}, {"input": [-12.5, -19.0], "expected": -12.498497689840246}, {"input": [-12.5, -18.5], "expected": -12.49752431486227}, {"input": [-12.5, -18.0], "expected": -12.49592155672943}, {"input": [-12.5, -17.5], "expected": -12.493284651510882}, {"input": [-12.5, -17.0], "expected": -12.488952255151407}, {"input": [-12.5, -16.5], "expected": -12.48185007208219}, {"input": [-12.5, -16.0], "expected": -12.47024958172738}, {"input": [-12.5, -15.5], "expected": -12.451412648426258}, {"input": [-12.5, -15.0], "expected": -12.421110265707451}, {"input": [-12.5, -14.5], "expected": -12.373071988957028}, {"input": [-12.5, -14.0], "expected": -12.298586722017248}, {"input": [-12.5, -13.5], "expected": -12.186738312481777}, {"input": [-12.5, -13.0], "expected": -12.025923015819894}, {"input": [-12.5, -12.5], "expected": -11.806852819440055}, {"input": [-12.5, -12.0], "expected": -11.525923015819894}, {"input": [-12.5, -11.5], "expected": -11.186738312481777}, {"input": [-12.5, -11.0], "expected": -10.798586722017248}, {"input": [-12.5, -10.5], "expected": -10.373071988957028}, {"input": [-12.5, -10.0], "expected": -9.921110265707451}, {"input": [-12.5, -9.5], "expected": -9.451412648426258}, {"input": [-12.5, -9.0], "expected": -8.97024958172738}, {"input": [-12.5, -8.5], "expected": -8.48185007208219}, {"input": [-12.5, -8.0], "expected": -7.988952255151406}, {"input": [-12.5, -7.5], "expected": -7.493284651510882}, {"input": [-12.5, -7.0], "expected": -6.995921556729429}, {"input": [-12.5, -6.5], "expected": -6.49752431486227}, {"input": [-12.5, -6.0], "expected": -5.998497689840246}, {"input": [-12.5, -5.5], "expected": -5.499088533546225}, {"input": [-12.5, -5.0], "expected": -4.999447068524639}, {"input": [-12.5, -4.5], "expected": -4.499664593627104}, {"input": [-12.5, -4.0], "expected": -3.9997965523278705}, {"input": [-12.5, -3.5], "expected": -3.499876597810277}, {"input": [-12.5, -3.0], "expected": -2.9999251509713707}, {"input": [-12.5, -2.5], "expected": -2.499954601100783}, {"input": [-12.5, -2.0], "expected": -1.9999724639297713}, {"input": [-12.5, -1.5], "expected": -1.4999832984386816}, {"input": [-12.5, -1.0], "expected": -0.9999898699577104}, {"input": [-12.5, -0.5], "expected": -0.4999938558065223}, {"input": [-12.5, 0.0], "expected": 3.7266462281239904e-06}, {"input": [-12.5, 0.5], "expected": 0.5000022603268525}, {"input": [-12.5, 1.0], "expected": 1.0000013709581466}, {"input": [-12.5, 1.5], "expected": 1.5000008315283735}, {"input": [-12.5, 2.0], "expected": 2.0000005043475353}, {"input": [-12.5, 2.5], "expected": 2.5000003059022737}, {"input": [-12.5, 3.0], "expected": 3.000000185539119}, {"input": [-12.5, 3.5], "expected": 3.5000001125351683}, {"input": [-12.5, 4.0], "expected": 4.000000068256031}, {"input": [-12.5, 4.5], "expected": 4.500000041399376}, {"input": [-12.5, 5.0], "expected": 5.000000025109991}, {"input": [-12.5, 5.5], "expected": 5.50000001522998}, {"input": [-12.5, 6.0], "expected": 6.00000000923745}, {"input": [-12.5, 6.5], "expected": 6.5000000056027964}, {"input": [-12.5, 7.0], "expected": 7.0000000033982674}, {"input": [-12.5, 7.5], "expected": 7.500000002061154}, {"input": [-12.5, 8.0], "expected": 8.000000001250152}, {"input": [-12.5, 8.5], "expected": 8.500000000758256}, {"input": [-12.5, 9.0], "expected": 9.000000000459906}, {"input": [-12.5, 9.5], "expected": 9.500000000278947}, {"input": [-12.5, 10.0], "expected": 10.000000000169189}, {"input": [-12.5, 10.5], "expected": 10.500000000102618}, {"input": [-12.5, 11.0], "expected": 11.000000000062242}, {"input": [-12.5, 11.5], "expected": 11.500000000037751}, {"input": [-12.5, 12.0], "expected": 12.000000000022897}, {"input": [-12.5, 12.5], "expected": 12.500000000013888}, {"input": [-12.5, 13.0], "expected": 13.000000000008423}, {"input": [-12.5, 13.5], "expected": 13.500000000005109}, {"input": [-12.5, 14.0], "expected": 14.000000000003098}, {"input": [-12.5, 14.5], "expected": 14.50000000000188}, {"input": [-12.5, 15.0], "expected": 15.00000000000114}, {"input": [-12.5, 15.5], "expected": 15.500000000000691}, {"input": [-12.5, 16.0], "expected": 16.00000000000042}, {"input": [-12.5, 16.5], "expected": 16.500000000000256}, {"input": [-12.5, 17.0], "expected": 17.000000000000153}, {"input": [-12.5, 17.5], "expected": 17.500000000000092}, {"input": [-12.5, 18.0], "expected": 18.000000000000057}, {"input": [-12.5, 18.5], "expected": 18.500000000000036}, {"input": [-12.5, 19.0], "expected": 19.00000000000002}, {"input": [-12.5, 19.5], "expected": 19.500000000000014}, {"input": [-12.5, 20.0], "expected": 20.000000000000007}, {"input": [-12.5, 20.5], "expected": 20.500000000000004}, {"input": [-12.5, 21.0], "expected": 21.000000000000004}, {"input": [-12.5, 21.5], "expected": 21.5}, {"input": [-12.5, 22.0], "expected": 22.0}, {"input": [-12.5, 22.5], "expected": 22.5}, {"input": [-12.5, 23.0], "expected": 23.0}, {"input": [-12.5, 23.5], "expected": 23.5}, {"input": [-12.5, 24.0], "expected": 24.0}, {"input": [-12.5, 24.5], "expected": 24.5}, {"input": [-12.5, 25.0], "expected": 25.0}, {"input": [-12.5, 25.5], "expected": 25.5}, {"input": [-12.5, 26.0], "expected": 26.0}, {"input": [-12.5, 26.5], "expected": 26.5}, {"input": [-12.5, 27.0], "expected": 27.0}, {"input": [-12.5, 27.5], "expected": 27.5}, {"input": [-12.5, 28.0], "expected": 28.0}, {"input": [-12.5, 28.5], "expected": 28.5}, {"input": [-12.5, 29.0], "expected": 29.0}, {"input": [-12.5, 29.5], "expected": 29.5}, {"input": [-12.5, 30.0], "expected": 30.0}, {"input": [-12.5, 30.5], "expected": 30.5}, {"input": [-12.5, 31.0], "expected": 31.0}, {"input": [-12.5, 31.5], "expected": 31.5}, {"input": [-12.5, 32.0], "expected": 32.0}, {"input": [-12.5, 32.5], "expected": 32.5}, {"input": [-12.5, 33.0], "expected": 33.0}, {"input": [-12.5, 33.5], "expected": 33.5}, {"input": [-12.5, 34.0], "expected": 34.0}, {"input": [-12.5, 34.5], "expected": 34.5}, {"input": [-12.5, 35.0], "expected": 35.0}, {"input": [-12.5, 35.5], "expected": 35.5}, {"input": [-12.5, 36.0], "expected": 36.0}, {"input": [-12.5, 36.5], "expected": 36.5}, {"input": [-12.5, 37.0], "expected": 37.0}, {"input": [-12.5, 37.5], "expected": 37.5}, {"input": [-12.5, 38.0], "expected": 38.0}, {"input": [-12.5, 38.5], "expected": 38.5}, {"input": [-12.5, 39.0], "expected": 39.0}, {"input": [-12.5, 39.5], "expected": 39.5}, {"input": [-12.5, 40.0], "expected": 40.0}, {"input": [-12.5, 40.5], "expected": 40.5}, {"input": [-12.5, 41.0], "expected": 41.0}, {"input": [-12.5, 41.5], "expected": 41.5}, {"input": [-12.5, 42.0], "expected": 42.0}, {"input": [-12.5, 42.5], "expected": 42.5}, {"input": [-12.5, 43.0], "expected": 43.0}, {"input": [-12.5, 43.5], "expected": 43.5}, {"input": [-12.5, 44.0], "expected": 44.0}, {"input": [-12.5, 44.5], "expected": 44.5}, {"input": [-12.5, 45.0], "expected": 45.0}, {"input": [-12.5, 45.5], "expected": 45.5}, {"input": [-12.5, 46.0], "expected": 46.0}, {"input": [-12.5, 46.5], "expected": 46.5}, {"input": [-12.5, 47.0], "expected": 47.0}, {"input": [-12.5, 47.5], "expected": 47.5}, {"input": [-12.5, 48.0], "expected": 48.0}, {"input": [-12.5, 48.5], "expected": 48.5}, {"input": [-12.5, 49.0], "expected": 49.0}, {"input": [-12.5, 49.5], "expected": 49.5}, {"input": [-12.5, 50.0], "expected": 50.0}, {"input": [-12.5, 50.5], "expected": 50.5}, {"input": [-12.5, 51.0], "expected": 51.0}, {"input": [-12.5, 51.5], "expected": 51.5}, {"input": [-12.5, 52.0], "expected": 52.0}, {"input": [-12.5, 52.5], "expected": 52.5}, {"input": [-12.5, 53.0], "expected": 53.0}, {"input": [-12.5, 53.5], "expected": 53.5}, {"input": [-12.5, 54.0], "expected": 54.0}, {"input": [-12.5, 54.5], "expected": 54.5}, {"input": [-12.5, 55.0], "expected": 55.0}, {"input": [-12.5, 55.5], "expected": 55.5}, {"input": [-12.5, 56.0], "expected": 56.0}, {"input": [-12.5, 56.5], "expected": 56.5}, {"input": [-12.5, 57.0], "expected": 57.0}, {"input": [-12.5, 57.5], "expected": 57.5}, {"input": [-12.5, 58.0], "expected": 58.0}, {"input": [-12.5, 58.5], "expected": 58.5}, {"input": [-12.5, 59.0], "expected": 59.0}, {"input": [-12.5, 59.5], "expected": 59.5}, {"input": [-12.5, 60.0], "expected": 60.0}, {"input": [-12.5, 60.5], "expected": 60.5}, {"input": [-12.5, 61.0], "expected": 61.0}, {"input": [-12.5, 61.5], "expected": 61.5}, {"input": [-12.5, 62.0], "expected": 62.0}, {"input": [-12.5, 62.5], "expected": 62.5}, {"input": [-12.5, 63.0], "expected": 63.0}, {"input": [-12.5, 63.5], "expected": 63.5}, {"input": [-12.5, 64.0], "expected": 64.0}, {"input": [-12.5, 64.5], "expected": 64.5}, {"input": [-12.5, 65.0], "expected": 65.0}, {"input": [-12.5, 65.5], "expected": 65.5}, {"input": [-12.5, 66.0], "expected": 66.0}, {"input": [-12.5, 66.5], "expected": 66.5}, {"input": [-12.5, 67.0], "expected": 67.0}, {"input": [-12.5, 67.5], "expected": 67.5}, {"input": [-12.5, 68.0], "expected": 68.0}, {"input": [-12.5, 68.5], "expected": 68.5}, {"input": [-12.5, 69.0], "expected": 69.0}, {"input": [-12.5, 69.5], "expected": 69.5}, {"input": [-12.5, 70.0], "expected": 70.0}, {"input": [-12.5, 70.5], "expected": 70.5}, {"input": [-12.5, 71.0], "expected": 71.0}, {"input": [-12.5, 71.5], "expected": 71.5}, {"input": [-12.5, 72.0], "expected": 72.0}, {"input": [-12.5, 72.5], "expected": 72.5}, {"input": [-12.5, 73.0], "expected": 73.0}, {"input": [-12.5, 73.5], "expected": 73.5}, {"input": [-12.5, 74.0], "expected": 74.0}, {"input": [-12.5, 74.5], "expected": 74.5}, {"input": [-12.5, 75.0], "expected": 75.0}, {"input": [-12.5, 75.5], "expected": 75.5}, {"input": [-12.5, 76.0], "expected": 76.0}, {"input": [-12.5, 76.5], "expected": 76.5}, {"input": [-12.5, 77.0], "expected": 77.0}, {"input": [-12.5, 77.5], "expected": 77.5}, {"input": [-12.5, 78.0], "expected": 78.0}, {"input": [-12.5, 78.5], "expected": 78.5}, {"input": [-12.5, 79.0], "expected": 79.0}, {"input": [-12.5, 79.5], "expected": 79.5}, {"input": [-12.5, 80.0], "expected": 80.0}, {"input": [-12.5, 80.5], "expected": 80.5}, {"input": [-12.5, 81.0], "expected": 81.0}, {"input": [-12.5, 81.5], "expected": 81.5}, {"input": [-12.5, 82.0], "expected": 82.0}, {"input": [-12.5, 82.5], "expected": 82.5}, {"input": [-12.5, 83.0], "expected": 83.0}, {"input": [-12.5, 83.5], "expected": 83.5}, {"input": [-12.5, 84.0], "expected": 84.0}, {"input": [-12.5, 84.5], "expected": 84.5}, {"input": [-12.5, 85.0], "expected": 85.0}, {"input": [-12.5, 85.5], "expected": 85.5}, {"input": [-12.5, 86.0], "expected": 86.0}, {"input": [-12.5, 86.5], "expected": 86.5}, {"input": [-12.5, 87.0], "expected": 87.0}, {"input": [-12.5, 87.5], "expected": 87.5}, {"input": [-12.5, 88.0], "expected": 88.0}, {"input": [-12.5, 88.5], "expected": 88.5}, {"input": [-12.5, 89.0], "expected": 89.0}, {"input": [-12.5, 89.5], "expected": 89.5}, {"input": [-12.5, 90.0], "expected": 90.0}, {"input": [-12.5, 90.5], "expected": 90.5}, {"input": [-12.5, 91.0], "expected": 91.0}, {"input": [-12.5, 91.5], "expected": 91.5}, {"input": [-12.5, 92.0], "expected": 92.0}, {"input": [-12.5, 92.5], "expected": 92.5}, {"input": [-12.5, 93.0], "expected": 93.0}, {"input": [-12.5, 93.5], "expected": 93.5}, {"input": [-12.5, 94.0], "expected": 94.0}, {"input": [-12.5, 94.5], "expected": 94.5}, {"input": [-12.5, 95.0], "expected": 95.0}, {"input": [-12.5, 95.5], "expected": 95.5}, {"input": [-12.5, 96.0], "expected": 96.0}, {"input": [-12.5, 96.5], "expected": 96.5}, {"input": [-12.5, 97.0], "expected": 97.0}, {"input": [-12.5, 97.5], "expected": 97.5}, {"input": [-12.5, 98.0], "expected": 98.0}, {"input": [-12.5, 98.5], "expected": 98.5}, {"input": [-12.5, 99.0], "expected": 99.0}, {"input": [-12.5, 99.5], "expected": 99.5}, {"input": [-12.0, -100.0], "expected": -12.0}, {"input": [-12.0, -99.5], "expected": -12.0}, {"input": [-12.0, -99.0], "expected": -12.0}, {"input": [-12.0, -98.5], "expected": -12.0}, {"input": [-12.0, -98.0], "expected": -12.0}, {"input": [-12.0, -97.5], "expected": -12.0}, {"input": [-12.0, -97.0], "expected": -12.0}, {"input": [-12.0, -96.5], "expected": -12.0}, {"input": [-12.0, -96.0], "expected": -12.0}, {"input": [-12.0, -95.5], "expected": -12.0}, {"input": [-12.0, -95.0], "expected": -12.0}, {"input": [-12.0, -94.5], "expected": -12.0}, {"input": [-12.0, -94.0], "expected": -12.0}, {"input": [-12.0, -93.5], "expected": -12.0}, {"input": [-12.0, -93.0], "expected": -12.0}, {"input": [-12.0, -92.5], "expected": -12.0}, {"input": [-12.0, -92.0], "expected": -12.0}, {"input": [-12.0, -91.5], "expected": -12.0}, {"input": [-12.0, -91.0], "expected": -12.0}, {"input": [-12.0, -90.5], "expected": -12.0}, {"input": [-12.0, -90.0], "expected": -12.0}, {"input": [-12.0, -89.5], "expected": -12.0}, {"input": [-12.0, -89.0], "expected": -12.0}, {"input": [-12.0, -88.5], "expected": -12.0}, {"input": [-12.0, -88.0], "expected": -12.0}, {"input": [-12.0, -87.5], "expected": -12.0}, {"input": [-12.0, -87.0], "expected": -12.0}, {"input": [-12.0, -86.5], "expected": -12.0}, {"input": [-12.0, -86.0], "expected": -12.0}, {"input": [-12.0, -85.5], "expected": -12.0}, {"input": [-12.0, -85.0], "expected": -12.0}, {"input": [-12.0, -84.5], "expected": -12.0}, {"input": [-12.0, -84.0], "expected": -12.0}, {"input": [-12.0, -83.5], "expected": -12.0}, {"input": [-12.0, -83.0], "expected": -12.0}, {"input": [-12.0, -82.5], "expected": -12.0}, {"input": [-12.0, -82.0], "expected": -12.0}, {"input": [-12.0, -81.5], "expected": -12.0}, {"input": [-12.0, -81.0], "expected": -12.0}, {"input": [-12.0, -80.5], "expected": -12.0}, {"input": [-12.0, -80.0], "expected": -12.0}, {"input": [-12.0, -79.5], "expected": -12.0}, {"input": [-12.0, -79.0], "expected": -12.0}, {"input": [-12.0, -78.5], "expected": -12.0}, {"input": [-12.0, -78.0], "expected": -12.0}, {"input": [-12.0, -77.5], "expected": -12.0}, {"input": [-12.0, -77.0], "expected": -12.0}, {"input": [-12.0, -76.5], "expected": -12.0}, {"input": [-12.0, -76.0], "expected": -12.0}, {"input": [-12.0, -75.5], "expected": -12.0}, {"input": [-12.0, -75.0], "expected": -12.0}, {"input": [-12.0, -74.5], "expected": -12.0}, {"input": [-12.0, -74.0], "expected": -12.0}, {"input": [-12.0, -73.5], "expected": -12.0}, {"input": [-12.0, -73.0], "expected": -12.0}, {"input": [-12.0, -72.5], "expected": -12.0}, {"input": [-12.0, -72.0], "expected": -12.0}, {"input": [-12.0, -71.5], "expected": -12.0}, {"input": [-12.0, -71.0], "expected": -12.0}, {"input": [-12.0, -70.5], "expected": -12.0}, {"input": [-12.0, -70.0], "expected": -12.0}, {"input": [-12.0, -69.5], "expected": -12.0}, {"input": [-12.0, -69.0], "expected": -12.0}, {"input": [-12.0, -68.5], "expected": -12.0}, {"input": [-12.0, -68.0], "expected": -12.0}, {"input": [-12.0, -67.5], "expected": -12.0}, {"input": [-12.0, -67.0], "expected": -12.0}, {"input": [-12.0, -66.5], "expected": -12.0}, {"input": [-12.0, -66.0], "expected": -12.0}, {"input": [-12.0, -65.5], "expected": -12.0}, {"input": [-12.0, -65.0], "expected": -12.0}, {"input": [-12.0, -64.5], "expected": -12.0}, {"input": [-12.0, -64.0], "expected": -12.0}, {"input": [-12.0, -63.5], "expected": -12.0}, {"input": [-12.0, -63.0], "expected": -12.0}, {"input": [-12.0, -62.5], "expected": -12.0}, {"input": [-12.0, -62.0], "expected": -12.0}, {"input": [-12.0, -61.5], "expected": -12.0}, {"input": [-12.0, -61.0], "expected": -12.0}, {"input": [-12.0, -60.5], "expected": -12.0}, {"input": [-12.0, -60.0], "expected": -12.0}, {"input": [-12.0, -59.5], "expected": -12.0}, {"input": [-12.0, -59.0], "expected": -12.0}, {"input": [-12.0, -58.5], "expected": -12.0}, {"input": [-12.0, -58.0], "expected": -12.0}, {"input": [-12.0, -57.5], "expected": -12.0}, {"input": [-12.0, -57.0], "expected": -12.0}, {"input": [-12.0, -56.5], "expected": -12.0}, {"input": [-12.0, -56.0], "expected": -12.0}, {"input": [-12.0, -55.5], "expected": -12.0}, {"input": [-12.0, -55.0], "expected": -12.0}, {"input": [-12.0, -54.5], "expected": -12.0}, {"input": [-12.0, -54.0], "expected": -12.0}, {"input": [-12.0, -53.5], "expected": -12.0}, {"input": [-12.0, -53.0], "expected": -12.0}, {"input": [-12.0, -52.5], "expected": -12.0}, {"input": [-12.0, -52.0], "expected": -12.0}, {"input": [-12.0, -51.5], "expected": -12.0}, {"input": [-12.0, -51.0], "expected": -12.0}, {"input": [-12.0, -50.5], "expected": -12.0}, {"input": [-12.0, -50.0], "expected": -12.0}, {"input": [-12.0, -49.5], "expected": -12.0}, {"input": [-12.0, -49.0], "expected": -12.0}, {"input": [-12.0, -48.5], "expected": -12.0}, {"input": [-12.0, -48.0], "expected": -12.0}, {"input": [-12.0, -47.5], "expected": -12.0}, {"input": [-12.0, -47.0], "expected": -12.0}, {"input": [-12.0, -46.5], "expected": -11.999999999999998}, {"input": [-12.0, -46.0], "expected": -11.999999999999998}, {"input": [-12.0, -45.5], "expected": -11.999999999999996}, {"input": [-12.0, -45.0], "expected": -11.999999999999995}, {"input": [-12.0, -44.5], "expected": -11.999999999999993}, {"input": [-12.0, -44.0], "expected": -11.999999999999988}, {"input": [-12.0, -43.5], "expected": -11.999999999999979}, {"input": [-12.0, -43.0], "expected": -11.999999999999966}, {"input": [-12.0, -42.5], "expected": -11.999999999999943}, {"input": [-12.0, -42.0], "expected": -11.999999999999906}, {"input": [-12.0, -41.5], "expected": -11.999999999999845}, {"input": [-12.0, -41.0], "expected": -11.999999999999746}, {"input": [-12.0, -40.5], "expected": -11.99999999999958}, {"input": [-12.0, -40.0], "expected": -11.999999999999309}, {"input": [-12.0, -39.5], "expected": -11.99999999999886}, {"input": [-12.0, -39.0], "expected": -11.99999999999812}, {"input": [-12.0, -38.5], "expected": -11.999999999996902}, {"input": [-12.0, -38.0], "expected": -11.999999999994891}, {"input": [-12.0, -37.5], "expected": -11.999999999991577}, {"input": [-12.0, -37.0], "expected": -11.999999999986112}, {"input": [-12.0, -36.5], "expected": -11.999999999977103}, {"input": [-12.0, -36.0], "expected": -11.999999999962249}, {"input": [-12.0, -35.5], "expected": -11.999999999937758}, {"input": [-12.0, -35.0], "expected": -11.999999999897382}, {"input": [-12.0, -34.5], "expected": -11.999999999830811}, {"input": [-12.0, -34.0], "expected": -11.999999999721053}, {"input": [-12.0, -33.5], "expected": -11.999999999540094}, {"input": [-12.0, -33.0], "expected": -11.999999999241744}, {"input": [-12.0, -32.5], "expected": -11.999999998749848}, {"input": [-12.0, -32.0], "expected": -11.999999997938847}, {"input": [-12.0, -31.5], "expected": -11.999999996601732}, {"input": [-12.0, -31.0], "expected": -11.999999994397204}, {"input": [-12.0, -30.5], "expected": -11.99999999076255}, {"input": [-12.0, -30.0], "expected": -11.999999984770021}, {"input": [-12.0, -29.5], "expected": -11.99999997489001}, {"input": [-12.0, -29.0], "expected": -11.999999958600624}, {"input": [-12.0, -28.5], "expected": -11.999999931743968}, {"input": [-12.0, -28.0], "expected": -11.999999887464831}, {"input": [-12.0, -27.5], "expected": -11.999999814460882}, {"input": [-12.0, -27.0], "expected": -11.999999694097726}, {"input": [-12.0, -26.5], "expected": -11.999999495652464}, {"input": [-12.0, -26.0], "expected": -11.999999168471627}, {"input": [-12.0, -25.5], "expected": -11.999998629041853}, {"input": [-12.0, -25.0], "expected": -11.999997739673148}, {"input": [-12.0, -24.5], "expected": -11.999996273353771}, {"input": [-12.0, -24.0], "expected": -11.999993855806522}, {"input": [-12.0, -23.5], "expected": -11.99998986995771}, {"input": [-12.0, -23.0], "expected": -11.999983298438682}, {"input": [-12.0, -22.5], "expected": -11.99997246392977}, {"input": [-12.0, -22.0], "expected": -11.999954601100782}, {"input": [-12.0, -21.5], "expected": -11.999925150971372}, {"input": [-12.0, -21.0], "expected": -11.999876597810276}, {"input": [-12.0, -20.5], "expected": -11.99979655232787}, {"input": [-12.0, -20.0], "expected": -11.999664593627104}, {"input": [-12.0, -19.5], "expected": -11.999447068524638}, {"input": [-12.0, -19.0], "expected": -11.999088533546226}, {"input": [-12.0, -18.5], "expected": -11.998497689840246}, {"input": [-12.0, -18.0], "expected": -11.99752431486227}, {"input": [-12.0, -17.5], "expected": -11.99592155672943}, {"input": [-12.0, -17.0], "expected": -11.993284651510882}, {"input": [-12.0, -16.5], "expected": -11.988952255151407}, {"input": [-12.0, -16.0], "expected": -11.98185007208219}, {"input": [-12.0, -15.5], "expected": -11.97024958172738}, {"input": [-12.0, -15.0], "expected": -11.951412648426258}, {"input": [-12.0, -14.5], "expected": -11.921110265707451}, {"input": [-12.0, -14.0], "expected": -11.873071988957028}, {"input": [-12.0, -13.5], "expected": -11.798586722017248}, {"input": [-12.0, -13.0], "expected": -11.686738312481777}, {"input": [-12.0, -12.5], "expected": -11.525923015819894}, {"input": [-12.0, -12.0], "expected": -11.306852819440055}, {"input": [-12.0, -11.5], "expected": -11.025923015819894}, {"input": [-12.0, -11.0], "expected": -10.686738312481777}, {"input": [-12.0, -10.5], "expected": -10.298586722017248}, {"input": [-12.0, -10.0], "expected": -9.873071988957028}, {"input": [-12.0, -9.5], "expected": -9.421110265707451}, {"input": [-12.0, -9.0], "expected": -8.951412648426258}, {"input": [-12.0, -8.5], "expected": -8.47024958172738}, {"input": [-12.0, -8.0], "expected": -7.9818500720821906}, {"input": [-12.0, -7.5], "expected": -7.488952255151406}, {"input": [-12.0, -7.0], "expected": -6.993284651510882}, {"input": [-12.0, -6.5], "expected": -6.495921556729429}, {"input": [-12.0, -6.0], "expected": -5.99752431486227}, {"input": [-12.0, -5.5], "expected": -5.498497689840246}, {"input": [-12.0, -5.0], "expected": -4.999088533546225}, {"input": [-12.0, -4.5], "expected": -4.499447068524639}, {"input": [-12.0, -4.0], "expected": -3.999664593627104}, {"input": [-12.0, -3.5], "expected": -3.4997965523278705}, {"input": [-12.0, -3.0], "expected": -2.999876597810277}, {"input": [-12.0, -2.5], "expected": -2.4999251509713707}, {"input": [-12.0, -2.0], "expected": -1.9999546011007832}, {"input": [-12.0, -1.5], "expected": -1.4999724639297713}, {"input": [-12.0, -1.0], "expected": -0.9999832984386816}, {"input": [-12.0, -0.5], "expected": -0.49998986995771044}, {"input": [-12.0, 0.0], "expected": 6.144193477732806e-06}, {"input": [-12.0, 0.5], "expected": 0.5000037266462282}, {"input": [-12.0, 1.0], "expected": 1.0000022603268524}, {"input": [-12.0, 1.5], "expected": 1.5000013709581466}, {"input": [-12.0, 2.0], "expected": 2.0000008315283733}, {"input": [-12.0, 2.5], "expected": 2.5000005043475353}, {"input": [-12.0, 3.0], "expected": 3.0000003059022737}, {"input": [-12.0, 3.5], "expected": 3.500000185539119}, {"input": [-12.0, 4.0], "expected": 4.000000112535169}, {"input": [-12.0, 4.5], "expected": 4.500000068256031}, {"input": [-12.0, 5.0], "expected": 5.000000041399376}, {"input": [-12.0, 5.5], "expected": 5.500000025109991}, {"input": [-12.0, 6.0], "expected": 6.00000001522998}, {"input": [-12.0, 6.5], "expected": 6.50000000923745}, {"input": [-12.0, 7.0], "expected": 7.0000000056027964}, {"input": [-12.0, 7.5], "expected": 7.5000000033982674}, {"input": [-12.0, 8.0], "expected": 8.000000002061153}, {"input": [-12.0, 8.5], "expected": 8.500000001250152}, {"input": [-12.0, 9.0], "expected": 9.000000000758256}, {"input": [-12.0, 9.5], "expected": 9.500000000459906}, {"input": [-12.0, 10.0], "expected": 10.000000000278947}, {"input": [-12.0, 10.5], "expected": 10.500000000169189}, {"input": [-12.0, 11.0], "expected": 11.000000000102618}, {"input": [-12.0, 11.5], "expected": 11.500000000062242}, {"input": [-12.0, 12.0], "expected": 12.000000000037751}, {"input": [-12.0, 12.5], "expected": 12.500000000022897}, {"input": [-12.0, 13.0], "expected": 13.000000000013888}, {"input": [-12.0, 13.5], "expected": 13.500000000008423}, {"input": [-12.0, 14.0], "expected": 14.000000000005109}, {"input": [-12.0, 14.5], "expected": 14.500000000003098}, {"input": [-12.0, 15.0], "expected": 15.00000000000188}, {"input": [-12.0, 15.5], "expected": 15.50000000000114}, {"input": [-12.0, 16.0], "expected": 16.000000000000693}, {"input": [-12.0, 16.5], "expected": 16.50000000000042}, {"input": [-12.0, 17.0], "expected": 17.000000000000256}, {"input": [-12.0, 17.5], "expected": 17.500000000000153}, {"input": [-12.0, 18.0], "expected": 18.000000000000092}, {"input": [-12.0, 18.5], "expected": 18.500000000000057}, {"input": [-12.0, 19.0], "expected": 19.000000000000036}, {"input": [-12.0, 19.5], "expected": 19.50000000000002}, {"input": [-12.0, 20.0], "expected": 20.000000000000014}, {"input": [-12.0, 20.5], "expected": 20.500000000000007}, {"input": [-12.0, 21.0], "expected": 21.000000000000004}, {"input": [-12.0, 21.5], "expected": 21.500000000000004}, {"input": [-12.0, 22.0], "expected": 22.0}, {"input": [-12.0, 22.5], "expected": 22.5}, {"input": [-12.0, 23.0], "expected": 23.0}, {"input": [-12.0, 23.5], "expected": 23.5}, {"input": [-12.0, 24.0], "expected": 24.0}, {"input": [-12.0, 24.5], "expected": 24.5}, {"input": [-12.0, 25.0], "expected": 25.0}, {"input": [-12.0, 25.5], "expected": 25.5}, {"input": [-12.0, 26.0], "expected": 26.0}, {"input": [-12.0, 26.5], "expected": 26.5}, {"input": [-12.0, 27.0], "expected": 27.0}, {"input": [-12.0, 27.5], "expected": 27.5}, {"input": [-12.0, 28.0], "expected": 28.0}, {"input": [-12.0, 28.5], "expected": 28.5}, {"input": [-12.0, 29.0], "expected": 29.0}, {"input": [-12.0, 29.5], "expected": 29.5}, {"input": [-12.0, 30.0], "expected": 30.0}, {"input": [-12.0, 30.5], "expected": 30.5}, {"input": [-12.0, 31.0], "expected": 31.0}, {"input": [-12.0, 31.5], "expected": 31.5}, {"input": [-12.0, 32.0], "expected": 32.0}, {"input": [-12.0, 32.5], "expected": 32.5}, {"input": [-12.0, 33.0], "expected": 33.0}, {"input": [-12.0, 33.5], "expected": 33.5}, {"input": [-12.0, 34.0], "expected": 34.0}, {"input": [-12.0, 34.5], "expected": 34.5}, {"input": [-12.0, 35.0], "expected": 35.0}, {"input": [-12.0, 35.5], "expected": 35.5}, {"input": [-12.0, 36.0], "expected": 36.0}, {"input": [-12.0, 36.5], "expected": 36.5}, {"input": [-12.0, 37.0], "expected": 37.0}, {"input": [-12.0, 37.5], "expected": 37.5}, {"input": [-12.0, 38.0], "expected": 38.0}, {"input": [-12.0, 38.5], "expected": 38.5}, {"input": [-12.0, 39.0], "expected": 39.0}, {"input": [-12.0, 39.5], "expected": 39.5}, {"input": [-12.0, 40.0], "expected": 40.0}, {"input": [-12.0, 40.5], "expected": 40.5}, {"input": [-12.0, 41.0], "expected": 41.0}, {"input": [-12.0, 41.5], "expected": 41.5}, {"input": [-12.0, 42.0], "expected": 42.0}, {"input": [-12.0, 42.5], "expected": 42.5}, {"input": [-12.0, 43.0], "expected": 43.0}, {"input": [-12.0, 43.5], "expected": 43.5}, {"input": [-12.0, 44.0], "expected": 44.0}, {"input": [-12.0, 44.5], "expected": 44.5}, {"input": [-12.0, 45.0], "expected": 45.0}, {"input": [-12.0, 45.5], "expected": 45.5}, {"input": [-12.0, 46.0], "expected": 46.0}, {"input": [-12.0, 46.5], "expected": 46.5}, {"input": [-12.0, 47.0], "expected": 47.0}, {"input": [-12.0, 47.5], "expected": 47.5}, {"input": [-12.0, 48.0], "expected": 48.0}, {"input": [-12.0, 48.5], "expected": 48.5}, {"input": [-12.0, 49.0], "expected": 49.0}, {"input": [-12.0, 49.5], "expected": 49.5}, {"input": [-12.0, 50.0], "expected": 50.0}, {"input": [-12.0, 50.5], "expected": 50.5}, {"input": [-12.0, 51.0], "expected": 51.0}, {"input": [-12.0, 51.5], "expected": 51.5}, {"input": [-12.0, 52.0], "expected": 52.0}, {"input": [-12.0, 52.5], "expected": 52.5}, {"input": [-12.0, 53.0], "expected": 53.0}, {"input": [-12.0, 53.5], "expected": 53.5}, {"input": [-12.0, 54.0], "expected": 54.0}, {"input": [-12.0, 54.5], "expected": 54.5}, {"input": [-12.0, 55.0], "expected": 55.0}, {"input": [-12.0, 55.5], "expected": 55.5}, {"input": [-12.0, 56.0], "expected": 56.0}, {"input": [-12.0, 56.5], "expected": 56.5}, {"input": [-12.0, 57.0], "expected": 57.0}, {"input": [-12.0, 57.5], "expected": 57.5}, {"input": [-12.0, 58.0], "expected": 58.0}, {"input": [-12.0, 58.5], "expected": 58.5}, {"input": [-12.0, 59.0], "expected": 59.0}, {"input": [-12.0, 59.5], "expected": 59.5}, {"input": [-12.0, 60.0], "expected": 60.0}, {"input": [-12.0, 60.5], "expected": 60.5}, {"input": [-12.0, 61.0], "expected": 61.0}, {"input": [-12.0, 61.5], "expected": 61.5}, {"input": [-12.0, 62.0], "expected": 62.0}, {"input": [-12.0, 62.5], "expected": 62.5}, {"input": [-12.0, 63.0], "expected": 63.0}, {"input": [-12.0, 63.5], "expected": 63.5}, {"input": [-12.0, 64.0], "expected": 64.0}, {"input": [-12.0, 64.5], "expected": 64.5}, {"input": [-12.0, 65.0], "expected": 65.0}, {"input": [-12.0, 65.5], "expected": 65.5}, {"input": [-12.0, 66.0], "expected": 66.0}, {"input": [-12.0, 66.5], "expected": 66.5}, {"input": [-12.0, 67.0], "expected": 67.0}, {"input": [-12.0, 67.5], "expected": 67.5}, {"input": [-12.0, 68.0], "expected": 68.0}, {"input": [-12.0, 68.5], "expected": 68.5}, {"input": [-12.0, 69.0], "expected": 69.0}, {"input": [-12.0, 69.5], "expected": 69.5}, {"input": [-12.0, 70.0], "expected": 70.0}, {"input": [-12.0, 70.5], "expected": 70.5}, {"input": [-12.0, 71.0], "expected": 71.0}, {"input": [-12.0, 71.5], "expected": 71.5}, {"input": [-12.0, 72.0], "expected": 72.0}, {"input": [-12.0, 72.5], "expected": 72.5}, {"input": [-12.0, 73.0], "expected": 73.0}, {"input": [-12.0, 73.5], "expected": 73.5}, {"input": [-12.0, 74.0], "expected": 74.0}, {"input": [-12.0, 74.5], "expected": 74.5}, {"input": [-12.0, 75.0], "expected": 75.0}, {"input": [-12.0, 75.5], "expected": 75.5}, {"input": [-12.0, 76.0], "expected": 76.0}, {"input": [-12.0, 76.5], "expected": 76.5}, {"input": [-12.0, 77.0], "expected": 77.0}, {"input": [-12.0, 77.5], "expected": 77.5}, {"input": [-12.0, 78.0], "expected": 78.0}, {"input": [-12.0, 78.5], "expected": 78.5}, {"input": [-12.0, 79.0], "expected": 79.0}, {"input": [-12.0, 79.5], "expected": 79.5}, {"input": [-12.0, 80.0], "expected": 80.0}, {"input": [-12.0, 80.5], "expected": 80.5}, {"input": [-12.0, 81.0], "expected": 81.0}, {"input": [-12.0, 81.5], "expected": 81.5}, {"input": [-12.0, 82.0], "expected": 82.0}, {"input": [-12.0, 82.5], "expected": 82.5}, {"input": [-12.0, 83.0], "expected": 83.0}, {"input": [-12.0, 83.5], "expected": 83.5}, {"input": [-12.0, 84.0], "expected": 84.0}, {"input": [-12.0, 84.5], "expected": 84.5}, {"input": [-12.0, 85.0], "expected": 85.0}, {"input": [-12.0, 85.5], "expected": 85.5}, {"input": [-12.0, 86.0], "expected": 86.0}, {"input": [-12.0, 86.5], "expected": 86.5}, {"input": [-12.0, 87.0], "expected": 87.0}, {"input": [-12.0, 87.5], "expected": 87.5}, {"input": [-12.0, 88.0], "expected": 88.0}, {"input": [-12.0, 88.5], "expected": 88.5}, {"input": [-12.0, 89.0], "expected": 89.0}, {"input": [-12.0, 89.5], "expected": 89.5}, {"input": [-12.0, 90.0], "expected": 90.0}, {"input": [-12.0, 90.5], "expected": 90.5}, {"input": [-12.0, 91.0], "expected": 91.0}, {"input": [-12.0, 91.5], "expected": 91.5}, {"input": [-12.0, 92.0], "expected": 92.0}, {"input": [-12.0, 92.5], "expected": 92.5}, {"input": [-12.0, 93.0], "expected": 93.0}, {"input": [-12.0, 93.5], "expected": 93.5}, {"input": [-12.0, 94.0], "expected": 94.0}, {"input": [-12.0, 94.5], "expected": 94.5}, {"input": [-12.0, 95.0], "expected": 95.0}, {"input": [-12.0, 95.5], "expected": 95.5}, {"input": [-12.0, 96.0], "expected": 96.0}, {"input": [-12.0, 96.5], "expected": 96.5}, {"input": [-12.0, 97.0], "expected": 97.0}, {"input": [-12.0, 97.5], "expected": 97.5}, {"input": [-12.0, 98.0], "expected": 98.0}, {"input": [-12.0, 98.5], "expected": 98.5}, {"input": [-12.0, 99.0], "expected": 99.0}, {"input": [-12.0, 99.5], "expected": 99.5}, {"input": [-11.5, -100.0], "expected": -11.5}, {"input": [-11.5, -99.5], "expected": -11.5}, {"input": [-11.5, -99.0], "expected": -11.5}, {"input": [-11.5, -98.5], "expected": -11.5}, {"input": [-11.5, -98.0], "expected": -11.5}, {"input": [-11.5, -97.5], "expected": -11.5}, {"input": [-11.5, -97.0], "expected": -11.5}, {"input": [-11.5, -96.5], "expected": -11.5}, {"input": [-11.5, -96.0], "expected": -11.5}, {"input": [-11.5, -95.5], "expected": -11.5}, {"input": [-11.5, -95.0], "expected": -11.5}, {"input": [-11.5, -94.5], "expected": -11.5}, {"input": [-11.5, -94.0], "expected": -11.5}, {"input": [-11.5, -93.5], "expected": -11.5}, {"input": [-11.5, -93.0], "expected": -11.5}, {"input": [-11.5, -92.5], "expected": -11.5}, {"input": [-11.5, -92.0], "expected": -11.5}, {"input": [-11.5, -91.5], "expected": -11.5}, {"input": [-11.5, -91.0], "expected": -11.5}, {"input": [-11.5, -90.5], "expected": -11.5}, {"input": [-11.5, -90.0], "expected": -11.5}, {"input": [-11.5, -89.5], "expected": -11.5}, {"input": [-11.5, -89.0], "expected": -11.5}, {"input": [-11.5, -88.5], "expected": -11.5}, {"input": [-11.5, -88.0], "expected": -11.5}, {"input": [-11.5, -87.5], "expected": -11.5}, {"input": [-11.5, -87.0], "expected": -11.5}, {"input": [-11.5, -86.5], "expected": -11.5}, {"input": [-11.5, -86.0], "expected": -11.5}, {"input": [-11.5, -85.5], "expected": -11.5}, {"input": [-11.5, -85.0], "expected": -11.5}, {"input": [-11.5, -84.5], "expected": -11.5}, {"input": [-11.5, -84.0], "expected": -11.5}, {"input": [-11.5, -83.5], "expected": -11.5}, {"input": [-11.5, -83.0], "expected": -11.5}, {"input": [-11.5, -82.5], "expected": -11.5}, {"input": [-11.5, -82.0], "expected": -11.5}, {"input": [-11.5, -81.5], "expected": -11.5}, {"input": [-11.5, -81.0], "expected": -11.5}, {"input": [-11.5, -80.5], "expected": -11.5}, {"input": [-11.5, -80.0], "expected": -11.5}, {"input": [-11.5, -79.5], "expected": -11.5}, {"input": [-11.5, -79.0], "expected": -11.5}, {"input": [-11.5, -78.5], "expected": -11.5}, {"input": [-11.5, -78.0], "expected": -11.5}, {"input": [-11.5, -77.5], "expected": -11.5}, {"input": [-11.5, -77.0], "expected": -11.5}, {"input": [-11.5, -76.5], "expected": -11.5}, {"input": [-11.5, -76.0], "expected": -11.5}, {"input": [-11.5, -75.5], "expected": -11.5}, {"input": [-11.5, -75.0], "expected": -11.5}, {"input": [-11.5, -74.5], "expected": -11.5}, {"input": [-11.5, -74.0], "expected": -11.5}, {"input": [-11.5, -73.5], "expected": -11.5}, {"input": [-11.5, -73.0], "expected": -11.5}, {"input": [-11.5, -72.5], "expected": -11.5}, {"input": [-11.5, -72.0], "expected": -11.5}, {"input": [-11.5, -71.5], "expected": -11.5}, {"input": [-11.5, -71.0], "expected": -11.5}, {"input": [-11.5, -70.5], "expected": -11.5}, {"input": [-11.5, -70.0], "expected": -11.5}, {"input": [-11.5, -69.5], "expected": -11.5}, {"input": [-11.5, -69.0], "expected": -11.5}, {"input": [-11.5, -68.5], "expected": -11.5}, {"input": [-11.5, -68.0], "expected": -11.5}, {"input": [-11.5, -67.5], "expected": -11.5}, {"input": [-11.5, -67.0], "expected": -11.5}, {"input": [-11.5, -66.5], "expected": -11.5}, {"input": [-11.5, -66.0], "expected": -11.5}, {"input": [-11.5, -65.5], "expected": -11.5}, {"input": [-11.5, -65.0], "expected": -11.5}, {"input": [-11.5, -64.5], "expected": -11.5}, {"input": [-11.5, -64.0], "expected": -11.5}, {"input": [-11.5, -63.5], "expected": -11.5}, {"input": [-11.5, -63.0], "expected": -11.5}, {"input": [-11.5, -62.5], "expected": -11.5}, {"input": [-11.5, -62.0], "expected": -11.5}, {"input": [-11.5, -61.5], "expected": -11.5}, {"input": [-11.5, -61.0], "expected": -11.5}, {"input": [-11.5, -60.5], "expected": -11.5}, {"input": [-11.5, -60.0], "expected": -11.5}, {"input": [-11.5, -59.5], "expected": -11.5}, {"input": [-11.5, -59.0], "expected": -11.5}, {"input": [-11.5, -58.5], "expected": -11.5}, {"input": [-11.5, -58.0], "expected": -11.5}, {"input": [-11.5, -57.5], "expected": -11.5}, {"input": [-11.5, -57.0], "expected": -11.5}, {"input": [-11.5, -56.5], "expected": -11.5}, {"input": [-11.5, -56.0], "expected": -11.5}, {"input": [-11.5, -55.5], "expected": -11.5}, {"input": [-11.5, -55.0], "expected": -11.5}, {"input": [-11.5, -54.5], "expected": -11.5}, {"input": [-11.5, -54.0], "expected": -11.5}, {"input": [-11.5, -53.5], "expected": -11.5}, {"input": [-11.5, -53.0], "expected": -11.5}, {"input": [-11.5, -52.5], "expected": -11.5}, {"input": [-11.5, -52.0], "expected": -11.5}, {"input": [-11.5, -51.5], "expected": -11.5}, {"input": [-11.5, -51.0], "expected": -11.5}, {"input": [-11.5, -50.5], "expected": -11.5}, {"input": [-11.5, -50.0], "expected": -11.5}, {"input": [-11.5, -49.5], "expected": -11.5}, {"input": [-11.5, -49.0], "expected": -11.5}, {"input": [-11.5, -48.5], "expected": -11.5}, {"input": [-11.5, -48.0], "expected": -11.5}, {"input": [-11.5, -47.5], "expected": -11.5}, {"input": [-11.5, -47.0], "expected": -11.5}, {"input": [-11.5, -46.5], "expected": -11.5}, {"input": [-11.5, -46.0], "expected": -11.499999999999998}, {"input": [-11.5, -45.5], "expected": -11.499999999999998}, {"input": [-11.5, -45.0], "expected": -11.499999999999996}, {"input": [-11.5, -44.5], "expected": -11.499999999999995}, {"input": [-11.5, -44.0], "expected": -11.499999999999993}, {"input": [-11.5, -43.5], "expected": -11.499999999999988}, {"input": [-11.5, -43.0], "expected": -11.499999999999979}, {"input": [-11.5, -42.5], "expected": -11.499999999999966}, {"input": [-11.5, -42.0], "expected": -11.499999999999943}, {"input": [-11.5, -41.5], "expected": -11.499999999999906}, {"input": [-11.5, -41.0], "expected": -11.499999999999845}, {"input": [-11.5, -40.5], "expected": -11.499999999999746}, {"input": [-11.5, -40.0], "expected": -11.49999999999958}, {"input": [-11.5, -39.5], "expected": -11.499999999999309}, {"input": [-11.5, -39.0], "expected": -11.49999999999886}, {"input": [-11.5, -38.5], "expected": -11.49999999999812}, {"input": [-11.5, -38.0], "expected": -11.499999999996902}, {"input": [-11.5, -37.5], "expected": -11.499999999994891}, {"input": [-11.5, -37.0], "expected": -11.499999999991577}, {"input": [-11.5, -36.5], "expected": -11.499999999986112}, {"input": [-11.5, -36.0], "expected": -11.499999999977103}, {"input": [-11.5, -35.5], "expected": -11.499999999962249}, {"input": [-11.5, -35.0], "expected": -11.499999999937758}, {"input": [-11.5, -34.5], "expected": -11.499999999897382}, {"input": [-11.5, -34.0], "expected": -11.499999999830811}, {"input": [-11.5, -33.5], "expected": -11.499999999721053}, {"input": [-11.5, -33.0], "expected": -11.499999999540094}, {"input": [-11.5, -32.5], "expected": -11.499999999241744}, {"input": [-11.5, -32.0], "expected": -11.499999998749848}, {"input": [-11.5, -31.5], "expected": -11.499999997938847}, {"input": [-11.5, -31.0], "expected": -11.499999996601732}, {"input": [-11.5, -30.5], "expected": -11.499999994397204}, {"input": [-11.5, -30.0], "expected": -11.49999999076255}, {"input": [-11.5, -29.5], "expected": -11.499999984770021}, {"input": [-11.5, -29.0], "expected": -11.49999997489001}, {"input": [-11.5, -28.5], "expected": -11.499999958600624}, {"input": [-11.5, -28.0], "expected": -11.499999931743968}, {"input": [-11.5, -27.5], "expected": -11.499999887464831}, {"input": [-11.5, -27.0], "expected": -11.499999814460882}, {"input": [-11.5, -26.5], "expected": -11.499999694097726}, {"input": [-11.5, -26.0], "expected": -11.499999495652464}, {"input": [-11.5, -25.5], "expected": -11.499999168471627}, {"input": [-11.5, -25.0], "expected": -11.499998629041853}, {"input": [-11.5, -24.5], "expected": -11.499997739673148}, {"input": [-11.5, -24.0], "expected": -11.499996273353771}, {"input": [-11.5, -23.5], "expected": -11.499993855806522}, {"input": [-11.5, -23.0], "expected": -11.49998986995771}, {"input": [-11.5, -22.5], "expected": -11.499983298438682}, {"input": [-11.5, -22.0], "expected": -11.49997246392977}, {"input": [-11.5, -21.5], "expected": -11.499954601100782}, {"input": [-11.5, -21.0], "expected": -11.499925150971372}, {"input": [-11.5, -20.5], "expected": -11.499876597810276}, {"input": [-11.5, -20.0], "expected": -11.49979655232787}, {"input": [-11.5, -19.5], "expected": -11.499664593627104}, {"input": [-11.5, -19.0], "expected": -11.499447068524638}, {"input": [-11.5, -18.5], "expected": -11.499088533546226}, {"input": [-11.5, -18.0], "expected": -11.498497689840246}, {"input": [-11.5, -17.5], "expected": -11.49752431486227}, {"input": [-11.5, -17.0], "expected": -11.49592155672943}, {"input": [-11.5, -16.5], "expected": -11.493284651510882}, {"input": [-11.5, -16.0], "expected": -11.488952255151407}, {"input": [-11.5, -15.5], "expected": -11.48185007208219}, {"input": [-11.5, -15.0], "expected": -11.47024958172738}, {"input": [-11.5, -14.5], "expected": -11.451412648426258}, {"input": [-11.5, -14.0], "expected": -11.421110265707451}, {"input": [-11.5, -13.5], "expected": -11.373071988957028}, {"input": [-11.5, -13.0], "expected": -11.298586722017248}, {"input": [-11.5, -12.5], "expected": -11.186738312481777}, {"input": [-11.5, -12.0], "expected": -11.025923015819894}, {"input": [-11.5, -11.5], "expected": -10.806852819440055}, {"input": [-11.5, -11.0], "expected": -10.525923015819894}, {"input": [-11.5, -10.5], "expected": -10.186738312481777}, {"input": [-11.5, -10.0], "expected": -9.798586722017248}, {"input": [-11.5, -9.5], "expected": -9.373071988957028}, {"input": [-11.5, -9.0], "expected": -8.921110265707451}, {"input": [-11.5, -8.5], "expected": -8.451412648426258}, {"input": [-11.5, -8.0], "expected": -7.970249581727379}, {"input": [-11.5, -7.5], "expected": -7.4818500720821906}, {"input": [-11.5, -7.0], "expected": -6.988952255151406}, {"input": [-11.5, -6.5], "expected": -6.493284651510882}, {"input": [-11.5, -6.0], "expected": -5.995921556729429}, {"input": [-11.5, -5.5], "expected": -5.49752431486227}, {"input": [-11.5, -5.0], "expected": -4.998497689840246}, {"input": [-11.5, -4.5], "expected": -4.499088533546225}, {"input": [-11.5, -4.0], "expected": -3.9994470685246393}, {"input": [-11.5, -3.5], "expected": -3.499664593627104}, {"input": [-11.5, -3.0], "expected": -2.9997965523278705}, {"input": [-11.5, -2.5], "expected": -2.499876597810277}, {"input": [-11.5, -2.0], "expected": -1.9999251509713707}, {"input": [-11.5, -1.5], "expected": -1.4999546011007832}, {"input": [-11.5, -1.0], "expected": -0.9999724639297713}, {"input": [-11.5, -0.5], "expected": -0.4999832984386816}, {"input": [-11.5, 0.0], "expected": 1.0130042289579061e-05}, {"input": [-11.5, 0.5], "expected": 0.5000061441934778}, {"input": [-11.5, 1.0], "expected": 1.000003726646228}, {"input": [-11.5, 1.5], "expected": 1.5000022603268524}, {"input": [-11.5, 2.0], "expected": 2.0000013709581466}, {"input": [-11.5, 2.5], "expected": 2.5000008315283733}, {"input": [-11.5, 3.0], "expected": 3.0000005043475353}, {"input": [-11.5, 3.5], "expected": 3.5000003059022737}, {"input": [-11.5, 4.0], "expected": 4.000000185539119}, {"input": [-11.5, 4.5], "expected": 4.500000112535169}, {"input": [-11.5, 5.0], "expected": 5.000000068256031}, {"input": [-11.5, 5.5], "expected": 5.500000041399376}, {"input": [-11.5, 6.0], "expected": 6.000000025109991}, {"input": [-11.5, 6.5], "expected": 6.50000001522998}, {"input": [-11.5, 7.0], "expected": 7.00000000923745}, {"input": [-11.5, 7.5], "expected": 7.5000000056027964}, {"input": [-11.5, 8.0], "expected": 8.000000003398268}, {"input": [-11.5, 8.5], "expected": 8.500000002061153}, {"input": [-11.5, 9.0], "expected": 9.000000001250152}, {"input": [-11.5, 9.5], "expected": 9.500000000758256}, {"input": [-11.5, 10.0], "expected": 10.000000000459906}, {"input": [-11.5, 10.5], "expected": 10.500000000278947}, {"input": [-11.5, 11.0], "expected": 11.000000000169189}, {"input": [-11.5, 11.5], "expected": 11.500000000102618}, {"input": [-11.5, 12.0], "expected": 12.000000000062242}, {"input": [-11.5, 12.5], "expected": 12.500000000037751}, {"input": [-11.5, 13.0], "expected": 13.000000000022897}, {"input": [-11.5, 13.5], "expected": 13.500000000013888}, {"input": [-11.5, 14.0], "expected": 14.000000000008423}, {"input": [-11.5, 14.5], "expected": 14.500000000005109}, {"input": [-11.5, 15.0], "expected": 15.000000000003098}, {"input": [-11.5, 15.5], "expected": 15.50000000000188}, {"input": [-11.5, 16.0], "expected": 16.00000000000114}, {"input": [-11.5, 16.5], "expected": 16.500000000000693}, {"input": [-11.5, 17.0], "expected": 17.00000000000042}, {"input": [-11.5, 17.5], "expected": 17.500000000000256}, {"input": [-11.5, 18.0], "expected": 18.000000000000153}, {"input": [-11.5, 18.5], "expected": 18.500000000000092}, {"input": [-11.5, 19.0], "expected": 19.000000000000057}, {"input": [-11.5, 19.5], "expected": 19.500000000000036}, {"input": [-11.5, 20.0], "expected": 20.00000000000002}, {"input": [-11.5, 20.5], "expected": 20.500000000000014}, {"input": [-11.5, 21.0], "expected": 21.000000000000007}, {"input": [-11.5, 21.5], "expected": 21.500000000000004}, {"input": [-11.5, 22.0], "expected": 22.000000000000004}, {"input": [-11.5, 22.5], "expected": 22.5}, {"input": [-11.5, 23.0], "expected": 23.0}, {"input": [-11.5, 23.5], "expected": 23.5}, {"input": [-11.5, 24.0], "expected": 24.0}, {"input": [-11.5, 24.5], "expected": 24.5}, {"input": [-11.5, 25.0], "expected": 25.0}, {"input": [-11.5, 25.5], "expected": 25.5}, {"input": [-11.5, 26.0], "expected": 26.0}, {"input": [-11.5, 26.5], "expected": 26.5}, {"input": [-11.5, 27.0], "expected": 27.0}, {"input": [-11.5, 27.5], "expected": 27.5}, {"input": [-11.5, 28.0], "expected": 28.0}, {"input": [-11.5, 28.5], "expected": 28.5}, {"input": [-11.5, 29.0], "expected": 29.0}, {"input": [-11.5, 29.5], "expected": 29.5}, {"input": [-11.5, 30.0], "expected": 30.0}, {"input": [-11.5, 30.5], "expected": 30.5}, {"input": [-11.5, 31.0], "expected": 31.0}, {"input": [-11.5, 31.5], "expected": 31.5}, {"input": [-11.5, 32.0], "expected": 32.0}, {"input": [-11.5, 32.5], "expected": 32.5}, {"input": [-11.5, 33.0], "expected": 33.0}, {"input": [-11.5, 33.5], "expected": 33.5}, {"input": [-11.5, 34.0], "expected": 34.0}, {"input": [-11.5, 34.5], "expected": 34.5}, {"input": [-11.5, 35.0], "expected": 35.0}, {"input": [-11.5, 35.5], "expected": 35.5}, {"input": [-11.5, 36.0], "expected": 36.0}, {"input": [-11.5, 36.5], "expected": 36.5}, {"input": [-11.5, 37.0], "expected": 37.0}, {"input": [-11.5, 37.5], "expected": 37.5}, {"input": [-11.5, 38.0], "expected": 38.0}, {"input": [-11.5, 38.5], "expected": 38.5}, {"input": [-11.5, 39.0], "expected": 39.0}, {"input": [-11.5, 39.5], "expected": 39.5}, {"input": [-11.5, 40.0], "expected": 40.0}, {"input": [-11.5, 40.5], "expected": 40.5}, {"input": [-11.5, 41.0], "expected": 41.0}, {"input": [-11.5, 41.5], "expected": 41.5}, {"input": [-11.5, 42.0], "expected": 42.0}, {"input": [-11.5, 42.5], "expected": 42.5}, {"input": [-11.5, 43.0], "expected": 43.0}, {"input": [-11.5, 43.5], "expected": 43.5}, {"input": [-11.5, 44.0], "expected": 44.0}, {"input": [-11.5, 44.5], "expected": 44.5}, {"input": [-11.5, 45.0], "expected": 45.0}, {"input": [-11.5, 45.5], "expected": 45.5}, {"input": [-11.5, 46.0], "expected": 46.0}, {"input": [-11.5, 46.5], "expected": 46.5}, {"input": [-11.5, 47.0], "expected": 47.0}, {"input": [-11.5, 47.5], "expected": 47.5}, {"input": [-11.5, 48.0], "expected": 48.0}, {"input": [-11.5, 48.5], "expected": 48.5}, {"input": [-11.5, 49.0], "expected": 49.0}, {"input": [-11.5, 49.5], "expected": 49.5}, {"input": [-11.5, 50.0], "expected": 50.0}, {"input": [-11.5, 50.5], "expected": 50.5}, {"input": [-11.5, 51.0], "expected": 51.0}, {"input": [-11.5, 51.5], "expected": 51.5}, {"input": [-11.5, 52.0], "expected": 52.0}, {"input": [-11.5, 52.5], "expected": 52.5}, {"input": [-11.5, 53.0], "expected": 53.0}, {"input": [-11.5, 53.5], "expected": 53.5}, {"input": [-11.5, 54.0], "expected": 54.0}, {"input": [-11.5, 54.5], "expected": 54.5}, {"input": [-11.5, 55.0], "expected": 55.0}, {"input": [-11.5, 55.5], "expected": 55.5}, {"input": [-11.5, 56.0], "expected": 56.0}, {"input": [-11.5, 56.5], "expected": 56.5}, {"input": [-11.5, 57.0], "expected": 57.0}, {"input": [-11.5, 57.5], "expected": 57.5}, {"input": [-11.5, 58.0], "expected": 58.0}, {"input": [-11.5, 58.5], "expected": 58.5}, {"input": [-11.5, 59.0], "expected": 59.0}, {"input": [-11.5, 59.5], "expected": 59.5}, {"input": [-11.5, 60.0], "expected": 60.0}, {"input": [-11.5, 60.5], "expected": 60.5}, {"input": [-11.5, 61.0], "expected": 61.0}, {"input": [-11.5, 61.5], "expected": 61.5}, {"input": [-11.5, 62.0], "expected": 62.0}, {"input": [-11.5, 62.5], "expected": 62.5}, {"input": [-11.5, 63.0], "expected": 63.0}, {"input": [-11.5, 63.5], "expected": 63.5}, {"input": [-11.5, 64.0], "expected": 64.0}, {"input": [-11.5, 64.5], "expected": 64.5}, {"input": [-11.5, 65.0], "expected": 65.0}, {"input": [-11.5, 65.5], "expected": 65.5}, {"input": [-11.5, 66.0], "expected": 66.0}, {"input": [-11.5, 66.5], "expected": 66.5}, {"input": [-11.5, 67.0], "expected": 67.0}, {"input": [-11.5, 67.5], "expected": 67.5}, {"input": [-11.5, 68.0], "expected": 68.0}, {"input": [-11.5, 68.5], "expected": 68.5}, {"input": [-11.5, 69.0], "expected": 69.0}, {"input": [-11.5, 69.5], "expected": 69.5}, {"input": [-11.5, 70.0], "expected": 70.0}, {"input": [-11.5, 70.5], "expected": 70.5}, {"input": [-11.5, 71.0], "expected": 71.0}, {"input": [-11.5, 71.5], "expected": 71.5}, {"input": [-11.5, 72.0], "expected": 72.0}, {"input": [-11.5, 72.5], "expected": 72.5}, {"input": [-11.5, 73.0], "expected": 73.0}, {"input": [-11.5, 73.5], "expected": 73.5}, {"input": [-11.5, 74.0], "expected": 74.0}, {"input": [-11.5, 74.5], "expected": 74.5}, {"input": [-11.5, 75.0], "expected": 75.0}, {"input": [-11.5, 75.5], "expected": 75.5}, {"input": [-11.5, 76.0], "expected": 76.0}, {"input": [-11.5, 76.5], "expected": 76.5}, {"input": [-11.5, 77.0], "expected": 77.0}, {"input": [-11.5, 77.5], "expected": 77.5}, {"input": [-11.5, 78.0], "expected": 78.0}, {"input": [-11.5, 78.5], "expected": 78.5}, {"input": [-11.5, 79.0], "expected": 79.0}, {"input": [-11.5, 79.5], "expected": 79.5}, {"input": [-11.5, 80.0], "expected": 80.0}, {"input": [-11.5, 80.5], "expected": 80.5}, {"input": [-11.5, 81.0], "expected": 81.0}, {"input": [-11.5, 81.5], "expected": 81.5}, {"input": [-11.5, 82.0], "expected": 82.0}, {"input": [-11.5, 82.5], "expected": 82.5}, {"input": [-11.5, 83.0], "expected": 83.0}, {"input": [-11.5, 83.5], "expected": 83.5}, {"input": [-11.5, 84.0], "expected": 84.0}, {"input": [-11.5, 84.5], "expected": 84.5}, {"input": [-11.5, 85.0], "expected": 85.0}, {"input": [-11.5, 85.5], "expected": 85.5}, {"input": [-11.5, 86.0], "expected": 86.0}, {"input": [-11.5, 86.5], "expected": 86.5}, {"input": [-11.5, 87.0], "expected": 87.0}, {"input": [-11.5, 87.5], "expected": 87.5}, {"input": [-11.5, 88.0], "expected": 88.0}, {"input": [-11.5, 88.5], "expected": 88.5}, {"input": [-11.5, 89.0], "expected": 89.0}, {"input": [-11.5, 89.5], "expected": 89.5}, {"input": [-11.5, 90.0], "expected": 90.0}, {"input": [-11.5, 90.5], "expected": 90.5}, {"input": [-11.5, 91.0], "expected": 91.0}, {"input": [-11.5, 91.5], "expected": 91.5}, {"input": [-11.5, 92.0], "expected": 92.0}, {"input": [-11.5, 92.5], "expected": 92.5}, {"input": [-11.5, 93.0], "expected": 93.0}, {"input": [-11.5, 93.5], "expected": 93.5}, {"input": [-11.5, 94.0], "expected": 94.0}, {"input": [-11.5, 94.5], "expected": 94.5}, {"input": [-11.5, 95.0], "expected": 95.0}, {"input": [-11.5, 95.5], "expected": 95.5}, {"input": [-11.5, 96.0], "expected": 96.0}, {"input": [-11.5, 96.5], "expected": 96.5}, {"input": [-11.5, 97.0], "expected": 97.0}, {"input": [-11.5, 97.5], "expected": 97.5}, {"input": [-11.5, 98.0], "expected": 98.0}, {"input": [-11.5, 98.5], "expected": 98.5}, {"input": [-11.5, 99.0], "expected": 99.0}, {"input": [-11.5, 99.5], "expected": 99.5}, {"input": [-11.0, -100.0], "expected": -11.0}, {"input": [-11.0, -99.5], "expected": -11.0}, {"input": [-11.0, -99.0], "expected": -11.0}, {"input": [-11.0, -98.5], "expected": -11.0}, {"input": [-11.0, -98.0], "expected": -11.0}, {"input": [-11.0, -97.5], "expected": -11.0}, {"input": [-11.0, -97.0], "expected": -11.0}, {"input": [-11.0, -96.5], "expected": -11.0}, {"input": [-11.0, -96.0], "expected": -11.0}, {"input": [-11.0, -95.5], "expected": -11.0}, {"input": [-11.0, -95.0], "expected": -11.0}, {"input": [-11.0, -94.5], "expected": -11.0}, {"input": [-11.0, -94.0], "expected": -11.0}, {"input": [-11.0, -93.5], "expected": -11.0}, {"input": [-11.0, -93.0], "expected": -11.0}, {"input": [-11.0, -92.5], "expected": -11.0}, {"input": [-11.0, -92.0], "expected": -11.0}, {"input": [-11.0, -91.5], "expected": -11.0}, {"input": [-11.0, -91.0], "expected": -11.0}, {"input": [-11.0, -90.5], "expected": -11.0}, {"input": [-11.0, -90.0], "expected": -11.0}, {"input": [-11.0, -89.5], "expected": -11.0}, {"input": [-11.0, -89.0], "expected": -11.0}, {"input": [-11.0, -88.5], "expected": -11.0}, {"input": [-11.0, -88.0], "expected": -11.0}, {"input": [-11.0, -87.5], "expected": -11.0}, {"input": [-11.0, -87.0], "expected": -11.0}, {"input": [-11.0, -86.5], "expected": -11.0}, {"input": [-11.0, -86.0], "expected": -11.0}, {"input": [-11.0, -85.5], "expected": -11.0}, {"input": [-11.0, -85.0], "expected": -11.0}, {"input": [-11.0, -84.5], "expected": -11.0}, {"input": [-11.0, -84.0], "expected": -11.0}, {"input": [-11.0, -83.5], "expected": -11.0}, {"input": [-11.0, -83.0], "expected": -11.0}, {"input": [-11.0, -82.5], "expected": -11.0}, {"input": [-11.0, -82.0], "expected": -11.0}, {"input": [-11.0, -81.5], "expected": -11.0}, {"input": [-11.0, -81.0], "expected": -11.0}, {"input": [-11.0, -80.5], "expected": -11.0}, {"input": [-11.0, -80.0], "expected": -11.0}, {"input": [-11.0, -79.5], "expected": -11.0}, {"input": [-11.0, -79.0], "expected": -11.0}, {"input": [-11.0, -78.5], "expected": -11.0}, {"input": [-11.0, -78.0], "expected": -11.0}, {"input": [-11.0, -77.5], "expected": -11.0}, {"input": [-11.0, -77.0], "expected": -11.0}, {"input": [-11.0, -76.5], "expected": -11.0}, {"input": [-11.0, -76.0], "expected": -11.0}, {"input": [-11.0, -75.5], "expected": -11.0}, {"input": [-11.0, -75.0], "expected": -11.0}, {"input": [-11.0, -74.5], "expected": -11.0}, {"input": [-11.0, -74.0], "expected": -11.0}, {"input": [-11.0, -73.5], "expected": -11.0}, {"input": [-11.0, -73.0], "expected": -11.0}, {"input": [-11.0, -72.5], "expected": -11.0}, {"input": [-11.0, -72.0], "expected": -11.0}, {"input": [-11.0, -71.5], "expected": -11.0}, {"input": [-11.0, -71.0], "expected": -11.0}, {"input": [-11.0, -70.5], "expected": -11.0}, {"input": [-11.0, -70.0], "expected": -11.0}, {"input": [-11.0, -69.5], "expected": -11.0}, {"input": [-11.0, -69.0], "expected": -11.0}, {"input": [-11.0, -68.5], "expected": -11.0}, {"input": [-11.0, -68.0], "expected": -11.0}, {"input": [-11.0, -67.5], "expected": -11.0}, {"input": [-11.0, -67.0], "expected": -11.0}, {"input": [-11.0, -66.5], "expected": -11.0}, {"input": [-11.0, -66.0], "expected": -11.0}, {"input": [-11.0, -65.5], "expected": -11.0}, {"input": [-11.0, -65.0], "expected": -11.0}, {"input": [-11.0, -64.5], "expected": -11.0}, {"input": [-11.0, -64.0], "expected": -11.0}, {"input": [-11.0, -63.5], "expected": -11.0}, {"input": [-11.0, -63.0], "expected": -11.0}, {"input": [-11.0, -62.5], "expected": -11.0}, {"input": [-11.0, -62.0], "expected": -11.0}, {"input": [-11.0, -61.5], "expected": -11.0}, {"input": [-11.0, -61.0], "expected": -11.0}, {"input": [-11.0, -60.5], "expected": -11.0}, {"input": [-11.0, -60.0], "expected": -11.0}, {"input": [-11.0, -59.5], "expected": -11.0}, {"input": [-11.0, -59.0], "expected": -11.0}, {"input": [-11.0, -58.5], "expected": -11.0}, {"input": [-11.0, -58.0], "expected": -11.0}, {"input": [-11.0, -57.5], "expected": -11.0}, {"input": [-11.0, -57.0], "expected": -11.0}, {"input": [-11.0, -56.5], "expected": -11.0}, {"input": [-11.0, -56.0], "expected": -11.0}, {"input": [-11.0, -55.5], "expected": -11.0}, {"input": [-11.0, -55.0], "expected": -11.0}, {"input": [-11.0, -54.5], "expected": -11.0}, {"input": [-11.0, -54.0], "expected": -11.0}, {"input": [-11.0, -53.5], "expected": -11.0}, {"input": [-11.0, -53.0], "expected": -11.0}, {"input": [-11.0, -52.5], "expected": -11.0}, {"input": [-11.0, -52.0], "expected": -11.0}, {"input": [-11.0, -51.5], "expected": -11.0}, {"input": [-11.0, -51.0], "expected": -11.0}, {"input": [-11.0, -50.5], "expected": -11.0}, {"input": [-11.0, -50.0], "expected": -11.0}, {"input": [-11.0, -49.5], "expected": -11.0}, {"input": [-11.0, -49.0], "expected": -11.0}, {"input": [-11.0, -48.5], "expected": -11.0}, {"input": [-11.0, -48.0], "expected": -11.0}, {"input": [-11.0, -47.5], "expected": -11.0}, {"input": [-11.0, -47.0], "expected": -11.0}, {"input": [-11.0, -46.5], "expected": -11.0}, {"input": [-11.0, -46.0], "expected": -11.0}, {"input": [-11.0, -45.5], "expected": -10.999999999999998}, {"input": [-11.0, -45.0], "expected": -10.999999999999998}, {"input": [-11.0, -44.5], "expected": -10.999999999999996}, {"input": [-11.0, -44.0], "expected": -10.999999999999995}, {"input": [-11.0, -43.5], "expected": -10.999999999999993}, {"input": [-11.0, -43.0], "expected": -10.999999999999988}, {"input": [-11.0, -42.5], "expected": -10.999999999999979}, {"input": [-11.0, -42.0], "expected": -10.999999999999966}, {"input": [-11.0, -41.5], "expected": -10.999999999999943}, {"input": [-11.0, -41.0], "expected": -10.999999999999906}, {"input": [-11.0, -40.5], "expected": -10.999999999999845}, {"input": [-11.0, -40.0], "expected": -10.999999999999746}, {"input": [-11.0, -39.5], "expected": -10.99999999999958}, {"input": [-11.0, -39.0], "expected": -10.999999999999309}, {"input": [-11.0, -38.5], "expected": -10.99999999999886}, {"input": [-11.0, -38.0], "expected": -10.99999999999812}, {"input": [-11.0, -37.5], "expected": -10.999999999996902}, {"input": [-11.0, -37.0], "expected": -10.999999999994891}, {"input": [-11.0, -36.5], "expected": -10.999999999991577}, {"input": [-11.0, -36.0], "expected": -10.999999999986112}, {"input": [-11.0, -35.5], "expected": -10.999999999977103}, {"input": [-11.0, -35.0], "expected": -10.999999999962249}, {"input": [-11.0, -34.5], "expected": -10.999999999937758}, {"input": [-11.0, -34.0], "expected": -10.999999999897382}, {"input": [-11.0, -33.5], "expected": -10.999999999830811}, {"input": [-11.0, -33.0], "expected": -10.999999999721053}, {"input": [-11.0, -32.5], "expected": -10.999999999540094}, {"input": [-11.0, -32.0], "expected": -10.999999999241744}, {"input": [-11.0, -31.5], "expected": -10.999999998749848}, {"input": [-11.0, -31.0], "expected": -10.999999997938847}, {"input": [-11.0, -30.5], "expected": -10.999999996601732}, {"input": [-11.0, -30.0], "expected": -10.999999994397204}, {"input": [-11.0, -29.5], "expected": -10.99999999076255}, {"input": [-11.0, -29.0], "expected": -10.999999984770021}, {"input": [-11.0, -28.5], "expected": -10.99999997489001}, {"input": [-11.0, -28.0], "expected": -10.999999958600624}, {"input": [-11.0, -27.5], "expected": -10.999999931743968}, {"input": [-11.0, -27.0], "expected": -10.999999887464831}, {"input": [-11.0, -26.5], "expected": -10.999999814460882}, {"input": [-11.0, -26.0], "expected": -10.999999694097726}, {"input": [-11.0, -25.5], "expected": -10.999999495652464}, {"input": [-11.0, -25.0], "expected": -10.999999168471627}, {"input": [-11.0, -24.5], "expected": -10.999998629041853}, {"input": [-11.0, -24.0], "expected": -10.999997739673148}, {"input": [-11.0, -23.5], "expected": -10.999996273353771}, {"input": [-11.0, -23.0], "expected": -10.999993855806522}, {"input": [-11.0, -22.5], "expected": -10.99998986995771}, {"input": [-11.0, -22.0], "expected": -10.999983298438682}, {"input": [-11.0, -21.5], "expected": -10.99997246392977}, {"input": [-11.0, -21.0], "expected": -10.999954601100782}, {"input": [-11.0, -20.5], "expected": -10.999925150971372}, {"input": [-11.0, -20.0], "expected": -10.999876597810276}, {"input": [-11.0, -19.5], "expected": -10.99979655232787}, {"input": [-11.0, -19.0], "expected": -10.999664593627104}, {"input": [-11.0, -18.5], "expected": -10.999447068524638}, {"input": [-11.0, -18.0], "expected": -10.999088533546226}, {"input": [-11.0, -17.5], "expected": -10.998497689840246}, {"input": [-11.0, -17.0], "expected": -10.99752431486227}, {"input": [-11.0, -16.5], "expected": -10.99592155672943}, {"input": [-11.0, -16.0], "expected": -10.993284651510882}, {"input": [-11.0, -15.5], "expected": -10.988952255151407}, {"input": [-11.0, -15.0], "expected": -10.98185007208219}, {"input": [-11.0, -14.5], "expected": -10.97024958172738}, {"input": [-11.0, -14.0], "expected": -10.951412648426258}, {"input": [-11.0, -13.5], "expected": -10.921110265707451}, {"input": [-11.0, -13.0], "expected": -10.873071988957028}, {"input": [-11.0, -12.5], "expected": -10.798586722017248}, {"input": [-11.0, -12.0], "expected": -10.686738312481777}, {"input": [-11.0, -11.5], "expected": -10.525923015819894}, {"input": [-11.0, -11.0], "expected": -10.306852819440055}, {"input": [-11.0, -10.5], "expected": -10.025923015819894}, {"input": [-11.0, -10.0], "expected": -9.686738312481777}, {"input": [-11.0, -9.5], "expected": -9.298586722017248}, {"input": [-11.0, -9.0], "expected": -8.873071988957028}, {"input": [-11.0, -8.5], "expected": -8.421110265707451}, {"input": [-11.0, -8.0], "expected": -7.951412648426258}, {"input": [-11.0, -7.5], "expected": -7.470249581727379}, {"input": [-11.0, -7.0], "expected": -6.9818500720821906}, {"input": [-11.0, -6.5], "expected": -6.488952255151406}, {"input": [-11.0, -6.0], "expected": -5.993284651510882}, {"input": [-11.0, -5.5], "expected": -5.495921556729429}, {"input": [-11.0, -5.0], "expected": -4.99752431486227}, {"input": [-11.0, -4.5], "expected": -4.498497689840246}, {"input": [-11.0, -4.0], "expected": -3.999088533546226}, {"input": [-11.0, -3.5], "expected": -3.4994470685246393}, {"input": [-11.0, -3.0], "expected": -2.999664593627104}, {"input": [-11.0, -2.5], "expected": -2.4997965523278705}, {"input": [-11.0, -2.0], "expected": -1.9998765978102768}, {"input": [-11.0, -1.5], "expected": -1.4999251509713707}, {"input": [-11.0, -1.0], "expected": -0.9999546011007832}, {"input": [-11.0, -0.5], "expected": -0.4999724639297713}, {"input": [-11.0, 0.0], "expected": 1.670156131839396e-05}, {"input": [-11.0, 0.5], "expected": 0.5000101300422896}, {"input": [-11.0, 1.0], "expected": 1.0000061441934778}, {"input": [-11.0, 1.5], "expected": 1.500003726646228}, {"input": [-11.0, 2.0], "expected": 2.0000022603268524}, {"input": [-11.0, 2.5], "expected": 2.5000013709581466}, {"input": [-11.0, 3.0], "expected": 3.0000008315283733}, {"input": [-11.0, 3.5], "expected": 3.5000005043475353}, {"input": [-11.0, 4.0], "expected": 4.000000305902273}, {"input": [-11.0, 4.5], "expected": 4.500000185539119}, {"input": [-11.0, 5.0], "expected": 5.000000112535169}, {"input": [-11.0, 5.5], "expected": 5.500000068256031}, {"input": [-11.0, 6.0], "expected": 6.000000041399376}, {"input": [-11.0, 6.5], "expected": 6.500000025109991}, {"input": [-11.0, 7.0], "expected": 7.00000001522998}, {"input": [-11.0, 7.5], "expected": 7.50000000923745}, {"input": [-11.0, 8.0], "expected": 8.000000005602796}, {"input": [-11.0, 8.5], "expected": 8.500000003398268}, {"input": [-11.0, 9.0], "expected": 9.000000002061153}, {"input": [-11.0, 9.5], "expected": 9.500000001250152}, {"input": [-11.0, 10.0], "expected": 10.000000000758256}, {"input": [-11.0, 10.5], "expected": 10.500000000459906}, {"input": [-11.0, 11.0], "expected": 11.000000000278947}, {"input": [-11.0, 11.5], "expected": 11.500000000169189}, {"input": [-11.0, 12.0], "expected": 12.000000000102618}, {"input": [-11.0, 12.5], "expected": 12.500000000062242}, {"input": [-11.0, 13.0], "expected": 13.000000000037751}, {"input": [-11.0, 13.5], "expected": 13.500000000022897}, {"input": [-11.0, 14.0], "expected": 14.000000000013888}, {"input": [-11.0, 14.5], "expected": 14.500000000008423}, {"input": [-11.0, 15.0], "expected": 15.000000000005109}, {"input": [-11.0, 15.5], "expected": 15.500000000003098}, {"input": [-11.0, 16.0], "expected": 16.00000000000188}, {"input": [-11.0, 16.5], "expected": 16.50000000000114}, {"input": [-11.0, 17.0], "expected": 17.000000000000693}, {"input": [-11.0, 17.5], "expected": 17.50000000000042}, {"input": [-11.0, 18.0], "expected": 18.000000000000256}, {"input": [-11.0, 18.5], "expected": 18.500000000000153}, {"input": [-11.0, 19.0], "expected": 19.000000000000092}, {"input": [-11.0, 19.5], "expected": 19.500000000000057}, {"input": [-11.0, 20.0], "expected": 20.000000000000036}, {"input": [-11.0, 20.5], "expected": 20.50000000000002}, {"input": [-11.0, 21.0], "expected": 21.000000000000014}, {"input": [-11.0, 21.5], "expected": 21.500000000000007}, {"input": [-11.0, 22.0], "expected": 22.000000000000004}, {"input": [-11.0, 22.5], "expected": 22.500000000000004}, {"input": [-11.0, 23.0], "expected": 23.0}, {"input": [-11.0, 23.5], "expected": 23.5}, {"input": [-11.0, 24.0], "expected": 24.0}, {"input": [-11.0, 24.5], "expected": 24.5}, {"input": [-11.0, 25.0], "expected": 25.0}, {"input": [-11.0, 25.5], "expected": 25.5}, {"input": [-11.0, 26.0], "expected": 26.0}, {"input": [-11.0, 26.5], "expected": 26.5}, {"input": [-11.0, 27.0], "expected": 27.0}, {"input": [-11.0, 27.5], "expected": 27.5}, {"input": [-11.0, 28.0], "expected": 28.0}, {"input": [-11.0, 28.5], "expected": 28.5}, {"input": [-11.0, 29.0], "expected": 29.0}, {"input": [-11.0, 29.5], "expected": 29.5}, {"input": [-11.0, 30.0], "expected": 30.0}, {"input": [-11.0, 30.5], "expected": 30.5}, {"input": [-11.0, 31.0], "expected": 31.0}, {"input": [-11.0, 31.5], "expected": 31.5}, {"input": [-11.0, 32.0], "expected": 32.0}, {"input": [-11.0, 32.5], "expected": 32.5}, {"input": [-11.0, 33.0], "expected": 33.0}, {"input": [-11.0, 33.5], "expected": 33.5}, {"input": [-11.0, 34.0], "expected": 34.0}, {"input": [-11.0, 34.5], "expected": 34.5}, {"input": [-11.0, 35.0], "expected": 35.0}, {"input": [-11.0, 35.5], "expected": 35.5}, {"input": [-11.0, 36.0], "expected": 36.0}, {"input": [-11.0, 36.5], "expected": 36.5}, {"input": [-11.0, 37.0], "expected": 37.0}, {"input": [-11.0, 37.5], "expected": 37.5}, {"input": [-11.0, 38.0], "expected": 38.0}, {"input": [-11.0, 38.5], "expected": 38.5}, {"input": [-11.0, 39.0], "expected": 39.0}, {"input": [-11.0, 39.5], "expected": 39.5}, {"input": [-11.0, 40.0], "expected": 40.0}, {"input": [-11.0, 40.5], "expected": 40.5}, {"input": [-11.0, 41.0], "expected": 41.0}, {"input": [-11.0, 41.5], "expected": 41.5}, {"input": [-11.0, 42.0], "expected": 42.0}, {"input": [-11.0, 42.5], "expected": 42.5}, {"input": [-11.0, 43.0], "expected": 43.0}, {"input": [-11.0, 43.5], "expected": 43.5}, {"input": [-11.0, 44.0], "expected": 44.0}, {"input": [-11.0, 44.5], "expected": 44.5}, {"input": [-11.0, 45.0], "expected": 45.0}, {"input": [-11.0, 45.5], "expected": 45.5}, {"input": [-11.0, 46.0], "expected": 46.0}, {"input": [-11.0, 46.5], "expected": 46.5}, {"input": [-11.0, 47.0], "expected": 47.0}, {"input": [-11.0, 47.5], "expected": 47.5}, {"input": [-11.0, 48.0], "expected": 48.0}, {"input": [-11.0, 48.5], "expected": 48.5}, {"input": [-11.0, 49.0], "expected": 49.0}, {"input": [-11.0, 49.5], "expected": 49.5}, {"input": [-11.0, 50.0], "expected": 50.0}, {"input": [-11.0, 50.5], "expected": 50.5}, {"input": [-11.0, 51.0], "expected": 51.0}, {"input": [-11.0, 51.5], "expected": 51.5}, {"input": [-11.0, 52.0], "expected": 52.0}, {"input": [-11.0, 52.5], "expected": 52.5}, {"input": [-11.0, 53.0], "expected": 53.0}, {"input": [-11.0, 53.5], "expected": 53.5}, {"input": [-11.0, 54.0], "expected": 54.0}, {"input": [-11.0, 54.5], "expected": 54.5}, {"input": [-11.0, 55.0], "expected": 55.0}, {"input": [-11.0, 55.5], "expected": 55.5}, {"input": [-11.0, 56.0], "expected": 56.0}, {"input": [-11.0, 56.5], "expected": 56.5}, {"input": [-11.0, 57.0], "expected": 57.0}, {"input": [-11.0, 57.5], "expected": 57.5}, {"input": [-11.0, 58.0], "expected": 58.0}, {"input": [-11.0, 58.5], "expected": 58.5}, {"input": [-11.0, 59.0], "expected": 59.0}, {"input": [-11.0, 59.5], "expected": 59.5}, {"input": [-11.0, 60.0], "expected": 60.0}, {"input": [-11.0, 60.5], "expected": 60.5}, {"input": [-11.0, 61.0], "expected": 61.0}, {"input": [-11.0, 61.5], "expected": 61.5}, {"input": [-11.0, 62.0], "expected": 62.0}, {"input": [-11.0, 62.5], "expected": 62.5}, {"input": [-11.0, 63.0], "expected": 63.0}, {"input": [-11.0, 63.5], "expected": 63.5}, {"input": [-11.0, 64.0], "expected": 64.0}, {"input": [-11.0, 64.5], "expected": 64.5}, {"input": [-11.0, 65.0], "expected": 65.0}, {"input": [-11.0, 65.5], "expected": 65.5}, {"input": [-11.0, 66.0], "expected": 66.0}, {"input": [-11.0, 66.5], "expected": 66.5}, {"input": [-11.0, 67.0], "expected": 67.0}, {"input": [-11.0, 67.5], "expected": 67.5}, {"input": [-11.0, 68.0], "expected": 68.0}, {"input": [-11.0, 68.5], "expected": 68.5}, {"input": [-11.0, 69.0], "expected": 69.0}, {"input": [-11.0, 69.5], "expected": 69.5}, {"input": [-11.0, 70.0], "expected": 70.0}, {"input": [-11.0, 70.5], "expected": 70.5}, {"input": [-11.0, 71.0], "expected": 71.0}, {"input": [-11.0, 71.5], "expected": 71.5}, {"input": [-11.0, 72.0], "expected": 72.0}, {"input": [-11.0, 72.5], "expected": 72.5}, {"input": [-11.0, 73.0], "expected": 73.0}, {"input": [-11.0, 73.5], "expected": 73.5}, {"input": [-11.0, 74.0], "expected": 74.0}, {"input": [-11.0, 74.5], "expected": 74.5}, {"input": [-11.0, 75.0], "expected": 75.0}, {"input": [-11.0, 75.5], "expected": 75.5}, {"input": [-11.0, 76.0], "expected": 76.0}, {"input": [-11.0, 76.5], "expected": 76.5}, {"input": [-11.0, 77.0], "expected": 77.0}, {"input": [-11.0, 77.5], "expected": 77.5}, {"input": [-11.0, 78.0], "expected": 78.0}, {"input": [-11.0, 78.5], "expected": 78.5}, {"input": [-11.0, 79.0], "expected": 79.0}, {"input": [-11.0, 79.5], "expected": 79.5}, {"input": [-11.0, 80.0], "expected": 80.0}, {"input": [-11.0, 80.5], "expected": 80.5}, {"input": [-11.0, 81.0], "expected": 81.0}, {"input": [-11.0, 81.5], "expected": 81.5}, {"input": [-11.0, 82.0], "expected": 82.0}, {"input": [-11.0, 82.5], "expected": 82.5}, {"input": [-11.0, 83.0], "expected": 83.0}, {"input": [-11.0, 83.5], "expected": 83.5}, {"input": [-11.0, 84.0], "expected": 84.0}, {"input": [-11.0, 84.5], "expected": 84.5}, {"input": [-11.0, 85.0], "expected": 85.0}, {"input": [-11.0, 85.5], "expected": 85.5}, {"input": [-11.0, 86.0], "expected": 86.0}, {"input": [-11.0, 86.5], "expected": 86.5}, {"input": [-11.0, 87.0], "expected": 87.0}, {"input": [-11.0, 87.5], "expected": 87.5}, {"input": [-11.0, 88.0], "expected": 88.0}, {"input": [-11.0, 88.5], "expected": 88.5}, {"input": [-11.0, 89.0], "expected": 89.0}, {"input": [-11.0, 89.5], "expected": 89.5}, {"input": [-11.0, 90.0], "expected": 90.0}, {"input": [-11.0, 90.5], "expected": 90.5}, {"input": [-11.0, 91.0], "expected": 91.0}, {"input": [-11.0, 91.5], "expected": 91.5}, {"input": [-11.0, 92.0], "expected": 92.0}, {"input": [-11.0, 92.5], "expected": 92.5}, {"input": [-11.0, 93.0], "expected": 93.0}, {"input": [-11.0, 93.5], "expected": 93.5}, {"input": [-11.0, 94.0], "expected": 94.0}, {"input": [-11.0, 94.5], "expected": 94.5}, {"input": [-11.0, 95.0], "expected": 95.0}, {"input": [-11.0, 95.5], "expected": 95.5}, {"input": [-11.0, 96.0], "expected": 96.0}, {"input": [-11.0, 96.5], "expected": 96.5}, {"input": [-11.0, 97.0], "expected": 97.0}, {"input": [-11.0, 97.5], "expected": 97.5}, {"input": [-11.0, 98.0], "expected": 98.0}, {"input": [-11.0, 98.5], "expected": 98.5}, {"input": [-11.0, 99.0], "expected": 99.0}, {"input": [-11.0, 99.5], "expected": 99.5}, {"input": [-10.5, -100.0], "expected": -10.5}, {"input": [-10.5, -99.5], "expected": -10.5}, {"input": [-10.5, -99.0], "expected": -10.5}, {"input": [-10.5, -98.5], "expected": -10.5}, {"input": [-10.5, -98.0], "expected": -10.5}, {"input": [-10.5, -97.5], "expected": -10.5}, {"input": [-10.5, -97.0], "expected": -10.5}, {"input": [-10.5, -96.5], "expected": -10.5}, {"input": [-10.5, -96.0], "expected": -10.5}, {"input": [-10.5, -95.5], "expected": -10.5}, {"input": [-10.5, -95.0], "expected": -10.5}, {"input": [-10.5, -94.5], "expected": -10.5}, {"input": [-10.5, -94.0], "expected": -10.5}, {"input": [-10.5, -93.5], "expected": -10.5}, {"input": [-10.5, -93.0], "expected": -10.5}, {"input": [-10.5, -92.5], "expected": -10.5}, {"input": [-10.5, -92.0], "expected": -10.5}, {"input": [-10.5, -91.5], "expected": -10.5}, {"input": [-10.5, -91.0], "expected": -10.5}, {"input": [-10.5, -90.5], "expected": -10.5}, {"input": [-10.5, -90.0], "expected": -10.5}, {"input": [-10.5, -89.5], "expected": -10.5}, {"input": [-10.5, -89.0], "expected": -10.5}, {"input": [-10.5, -88.5], "expected": -10.5}, {"input": [-10.5, -88.0], "expected": -10.5}, {"input": [-10.5, -87.5], "expected": -10.5}, {"input": [-10.5, -87.0], "expected": -10.5}, {"input": [-10.5, -86.5], "expected": -10.5}, {"input": [-10.5, -86.0], "expected": -10.5}, {"input": [-10.5, -85.5], "expected": -10.5}, {"input": [-10.5, -85.0], "expected": -10.5}, {"input": [-10.5, -84.5], "expected": -10.5}, {"input": [-10.5, -84.0], "expected": -10.5}, {"input": [-10.5, -83.5], "expected": -10.5}, {"input": [-10.5, -83.0], "expected": -10.5}, {"input": [-10.5, -82.5], "expected": -10.5}, {"input": [-10.5, -82.0], "expected": -10.5}, {"input": [-10.5, -81.5], "expected": -10.5}, {"input": [-10.5, -81.0], "expected": -10.5}, {"input": [-10.5, -80.5], "expected": -10.5}, {"input": [-10.5, -80.0], "expected": -10.5}, {"input": [-10.5, -79.5], "expected": -10.5}, {"input": [-10.5, -79.0], "expected": -10.5}, {"input": [-10.5, -78.5], "expected": -10.5}, {"input": [-10.5, -78.0], "expected": -10.5}, {"input": [-10.5, -77.5], "expected": -10.5}, {"input": [-10.5, -77.0], "expected": -10.5}, {"input": [-10.5, -76.5], "expected": -10.5}, {"input": [-10.5, -76.0], "expected": -10.5}, {"input": [-10.5, -75.5], "expected": -10.5}, {"input": [-10.5, -75.0], "expected": -10.5}, {"input": [-10.5, -74.5], "expected": -10.5}, {"input": [-10.5, -74.0], "expected": -10.5}, {"input": [-10.5, -73.5], "expected": -10.5}, {"input": [-10.5, -73.0], "expected": -10.5}, {"input": [-10.5, -72.5], "expected": -10.5}, {"input": [-10.5, -72.0], "expected": -10.5}, {"input": [-10.5, -71.5], "expected": -10.5}, {"input": [-10.5, -71.0], "expected": -10.5}, {"input": [-10.5, -70.5], "expected": -10.5}, {"input": [-10.5, -70.0], "expected": -10.5}, {"input": [-10.5, -69.5], "expected": -10.5}, {"input": [-10.5, -69.0], "expected": -10.5}, {"input": [-10.5, -68.5], "expected": -10.5}, {"input": [-10.5, -68.0], "expected": -10.5}, {"input": [-10.5, -67.5], "expected": -10.5}, {"input": [-10.5, -67.0], "expected": -10.5}, {"input": [-10.5, -66.5], "expected": -10.5}, {"input": [-10.5, -66.0], "expected": -10.5}, {"input": [-10.5, -65.5], "expected": -10.5}, {"input": [-10.5, -65.0], "expected": -10.5}, {"input": [-10.5, -64.5], "expected": -10.5}, {"input": [-10.5, -64.0], "expected": -10.5}, {"input": [-10.5, -63.5], "expected": -10.5}, {"input": [-10.5, -63.0], "expected": -10.5}, {"input": [-10.5, -62.5], "expected": -10.5}, {"input": [-10.5, -62.0], "expected": -10.5}, {"input": [-10.5, -61.5], "expected": -10.5}, {"input": [-10.5, -61.0], "expected": -10.5}, {"input": [-10.5, -60.5], "expected": -10.5}, {"input": [-10.5, -60.0], "expected": -10.5}, {"input": [-10.5, -59.5], "expected": -10.5}, {"input": [-10.5, -59.0], "expected": -10.5}, {"input": [-10.5, -58.5], "expected": -10.5}, {"input": [-10.5, -58.0], "expected": -10.5}, {"input": [-10.5, -57.5], "expected": -10.5}, {"input": [-10.5, -57.0], "expected": -10.5}, {"input": [-10.5, -56.5], "expected": -10.5}, {"input": [-10.5, -56.0], "expected": -10.5}, {"input": [-10.5, -55.5], "expected": -10.5}, {"input": [-10.5, -55.0], "expected": -10.5}, {"input": [-10.5, -54.5], "expected": -10.5}, {"input": [-10.5, -54.0], "expected": -10.5}, {"input": [-10.5, -53.5], "expected": -10.5}, {"input": [-10.5, -53.0], "expected": -10.5}, {"input": [-10.5, -52.5], "expected": -10.5}, {"input": [-10.5, -52.0], "expected": -10.5}, {"input": [-10.5, -51.5], "expected": -10.5}, {"input": [-10.5, -51.0], "expected": -10.5}, {"input": [-10.5, -50.5], "expected": -10.5}, {"input": [-10.5, -50.0], "expected": -10.5}, {"input": [-10.5, -49.5], "expected": -10.5}, {"input": [-10.5, -49.0], "expected": -10.5}, {"input": [-10.5, -48.5], "expected": -10.5}, {"input": [-10.5, -48.0], "expected": -10.5}, {"input": [-10.5, -47.5], "expected": -10.5}, {"input": [-10.5, -47.0], "expected": -10.5}, {"input": [-10.5, -46.5], "expected": -10.5}, {"input": [-10.5, -46.0], "expected": -10.5}, {"input": [-10.5, -45.5], "expected": -10.5}, {"input": [-10.5, -45.0], "expected": -10.499999999999998}, {"input": [-10.5, -44.5], "expected": -10.499999999999998}, {"input": [-10.5, -44.0], "expected": -10.499999999999996}, {"input": [-10.5, -43.5], "expected": -10.499999999999995}, {"input": [-10.5, -43.0], "expected": -10.499999999999993}, {"input": [-10.5, -42.5], "expected": -10.499999999999988}, {"input": [-10.5, -42.0], "expected": -10.499999999999979}, {"input": [-10.5, -41.5], "expected": -10.499999999999966}, {"input": [-10.5, -41.0], "expected": -10.499999999999943}, {"input": [-10.5, -40.5], "expected": -10.499999999999906}, {"input": [-10.5, -40.0], "expected": -10.499999999999845}, {"input": [-10.5, -39.5], "expected": -10.499999999999746}, {"input": [-10.5, -39.0], "expected": -10.49999999999958}, {"input": [-10.5, -38.5], "expected": -10.499999999999309}, {"input": [-10.5, -38.0], "expected": -10.49999999999886}, {"input": [-10.5, -37.5], "expected": -10.49999999999812}, {"input": [-10.5, -37.0], "expected": -10.499999999996902}, {"input": [-10.5, -36.5], "expected": -10.499999999994891}, {"input": [-10.5, -36.0], "expected": -10.499999999991577}, {"input": [-10.5, -35.5], "expected": -10.499999999986112}, {"input": [-10.5, -35.0], "expected": -10.499999999977103}, {"input": [-10.5, -34.5], "expected": -10.499999999962249}, {"input": [-10.5, -34.0], "expected": -10.499999999937758}, {"input": [-10.5, -33.5], "expected": -10.499999999897382}, {"input": [-10.5, -33.0], "expected": -10.499999999830811}, {"input": [-10.5, -32.5], "expected": -10.499999999721053}, {"input": [-10.5, -32.0], "expected": -10.499999999540094}, {"input": [-10.5, -31.5], "expected": -10.499999999241744}, {"input": [-10.5, -31.0], "expected": -10.499999998749848}, {"input": [-10.5, -30.5], "expected": -10.499999997938847}, {"input": [-10.5, -30.0], "expected": -10.499999996601732}, {"input": [-10.5, -29.5], "expected": -10.499999994397204}, {"input": [-10.5, -29.0], "expected": -10.49999999076255}, {"input": [-10.5, -28.5], "expected": -10.499999984770021}, {"input": [-10.5, -28.0], "expected": -10.49999997489001}, {"input": [-10.5, -27.5], "expected": -10.499999958600624}, {"input": [-10.5, -27.0], "expected": -10.499999931743968}, {"input": [-10.5, -26.5], "expected": -10.499999887464831}, {"input": [-10.5, -26.0], "expected": -10.499999814460882}, {"input": [-10.5, -25.5], "expected": -10.499999694097726}, {"input": [-10.5, -25.0], "expected": -10.499999495652464}, {"input": [-10.5, -24.5], "expected": -10.499999168471627}, {"input": [-10.5, -24.0], "expected": -10.499998629041853}, {"input": [-10.5, -23.5], "expected": -10.499997739673148}, {"input": [-10.5, -23.0], "expected": -10.499996273353771}, {"input": [-10.5, -22.5], "expected": -10.499993855806522}, {"input": [-10.5, -22.0], "expected": -10.49998986995771}, {"input": [-10.5, -21.5], "expected": -10.499983298438682}, {"input": [-10.5, -21.0], "expected": -10.49997246392977}, {"input": [-10.5, -20.5], "expected": -10.499954601100782}, {"input": [-10.5, -20.0], "expected": -10.499925150971372}, {"input": [-10.5, -19.5], "expected": -10.499876597810276}, {"input": [-10.5, -19.0], "expected": -10.49979655232787}, {"input": [-10.5, -18.5], "expected": -10.499664593627104}, {"input": [-10.5, -18.0], "expected": -10.499447068524638}, {"input": [-10.5, -17.5], "expected": -10.499088533546226}, {"input": [-10.5, -17.0], "expected": -10.498497689840246}, {"input": [-10.5, -16.5], "expected": -10.49752431486227}, {"input": [-10.5, -16.0], "expected": -10.49592155672943}, {"input": [-10.5, -15.5], "expected": -10.493284651510882}, {"input": [-10.5, -15.0], "expected": -10.488952255151407}, {"input": [-10.5, -14.5], "expected": -10.48185007208219}, {"input": [-10.5, -14.0], "expected": -10.47024958172738}, {"input": [-10.5, -13.5], "expected": -10.451412648426258}, {"input": [-10.5, -13.0], "expected": -10.421110265707451}, {"input": [-10.5, -12.5], "expected": -10.373071988957028}, {"input": [-10.5, -12.0], "expected": -10.298586722017248}, {"input": [-10.5, -11.5], "expected": -10.186738312481777}, {"input": [-10.5, -11.0], "expected": -10.025923015819894}, {"input": [-10.5, -10.5], "expected": -9.806852819440055}, {"input": [-10.5, -10.0], "expected": -9.525923015819894}, {"input": [-10.5, -9.5], "expected": -9.186738312481777}, {"input": [-10.5, -9.0], "expected": -8.798586722017248}, {"input": [-10.5, -8.5], "expected": -8.373071988957028}, {"input": [-10.5, -8.0], "expected": -7.92111026570745}, {"input": [-10.5, -7.5], "expected": -7.451412648426258}, {"input": [-10.5, -7.0], "expected": -6.970249581727379}, {"input": [-10.5, -6.5], "expected": -6.4818500720821906}, {"input": [-10.5, -6.0], "expected": -5.988952255151406}, {"input": [-10.5, -5.5], "expected": -5.493284651510882}, {"input": [-10.5, -5.0], "expected": -4.995921556729429}, {"input": [-10.5, -4.5], "expected": -4.49752431486227}, {"input": [-10.5, -4.0], "expected": -3.998497689840246}, {"input": [-10.5, -3.5], "expected": -3.499088533546226}, {"input": [-10.5, -3.0], "expected": -2.9994470685246393}, {"input": [-10.5, -2.5], "expected": -2.499664593627104}, {"input": [-10.5, -2.0], "expected": -1.9997965523278705}, {"input": [-10.5, -1.5], "expected": -1.4998765978102768}, {"input": [-10.5, -1.0], "expected": -0.9999251509713707}, {"input": [-10.5, -0.5], "expected": -0.49995460110078316}, {"input": [-10.5, 0.0], "expected": 2.7536070228685513e-05}, {"input": [-10.5, 0.5], "expected": 0.5000167015613184}, {"input": [-10.5, 1.0], "expected": 1.0000101300422897}, {"input": [-10.5, 1.5], "expected": 1.5000061441934778}, {"input": [-10.5, 2.0], "expected": 2.000003726646228}, {"input": [-10.5, 2.5], "expected": 2.5000022603268524}, {"input": [-10.5, 3.0], "expected": 3.0000013709581466}, {"input": [-10.5, 3.5], "expected": 3.5000008315283733}, {"input": [-10.5, 4.0], "expected": 4.000000504347535}, {"input": [-10.5, 4.5], "expected": 4.500000305902273}, {"input": [-10.5, 5.0], "expected": 5.000000185539119}, {"input": [-10.5, 5.5], "expected": 5.500000112535169}, {"input": [-10.5, 6.0], "expected": 6.000000068256031}, {"input": [-10.5, 6.5], "expected": 6.500000041399376}, {"input": [-10.5, 7.0], "expected": 7.000000025109991}, {"input": [-10.5, 7.5], "expected": 7.50000001522998}, {"input": [-10.5, 8.0], "expected": 8.00000000923745}, {"input": [-10.5, 8.5], "expected": 8.500000005602796}, {"input": [-10.5, 9.0], "expected": 9.000000003398268}, {"input": [-10.5, 9.5], "expected": 9.500000002061153}, {"input": [-10.5, 10.0], "expected": 10.000000001250152}, {"input": [-10.5, 10.5], "expected": 10.500000000758256}, {"input": [-10.5, 11.0], "expected": 11.000000000459906}, {"input": [-10.5, 11.5], "expected": 11.500000000278947}, {"input": [-10.5, 12.0], "expected": 12.000000000169189}, {"input": [-10.5, 12.5], "expected": 12.500000000102618}, {"input": [-10.5, 13.0], "expected": 13.000000000062242}, {"input": [-10.5, 13.5], "expected": 13.500000000037751}, {"input": [-10.5, 14.0], "expected": 14.000000000022897}, {"input": [-10.5, 14.5], "expected": 14.500000000013888}, {"input": [-10.5, 15.0], "expected": 15.000000000008423}, {"input": [-10.5, 15.5], "expected": 15.500000000005109}, {"input": [-10.5, 16.0], "expected": 16.000000000003098}, {"input": [-10.5, 16.5], "expected": 16.50000000000188}, {"input": [-10.5, 17.0], "expected": 17.00000000000114}, {"input": [-10.5, 17.5], "expected": 17.500000000000693}, {"input": [-10.5, 18.0], "expected": 18.00000000000042}, {"input": [-10.5, 18.5], "expected": 18.500000000000256}, {"input": [-10.5, 19.0], "expected": 19.000000000000153}, {"input": [-10.5, 19.5], "expected": 19.500000000000092}, {"input": [-10.5, 20.0], "expected": 20.000000000000057}, {"input": [-10.5, 20.5], "expected": 20.500000000000036}, {"input": [-10.5, 21.0], "expected": 21.00000000000002}, {"input": [-10.5, 21.5], "expected": 21.500000000000014}, {"input": [-10.5, 22.0], "expected": 22.000000000000007}, {"input": [-10.5, 22.5], "expected": 22.500000000000004}, {"input": [-10.5, 23.0], "expected": 23.000000000000004}, {"input": [-10.5, 23.5], "expected": 23.5}, {"input": [-10.5, 24.0], "expected": 24.0}, {"input": [-10.5, 24.5], "expected": 24.5}, {"input": [-10.5, 25.0], "expected": 25.0}, {"input": [-10.5, 25.5], "expected": 25.5}, {"input": [-10.5, 26.0], "expected": 26.0}, {"input": [-10.5, 26.5], "expected": 26.5}, {"input": [-10.5, 27.0], "expected": 27.0}, {"input": [-10.5, 27.5], "expected": 27.5}, {"input": [-10.5, 28.0], "expected": 28.0}, {"input": [-10.5, 28.5], "expected": 28.5}, {"input": [-10.5, 29.0], "expected": 29.0}, {"input": [-10.5, 29.5], "expected": 29.5}, {"input": [-10.5, 30.0], "expected": 30.0}, {"input": [-10.5, 30.5], "expected": 30.5}, {"input": [-10.5, 31.0], "expected": 31.0}, {"input": [-10.5, 31.5], "expected": 31.5}, {"input": [-10.5, 32.0], "expected": 32.0}, {"input": [-10.5, 32.5], "expected": 32.5}, {"input": [-10.5, 33.0], "expected": 33.0}, {"input": [-10.5, 33.5], "expected": 33.5}, {"input": [-10.5, 34.0], "expected": 34.0}, {"input": [-10.5, 34.5], "expected": 34.5}, {"input": [-10.5, 35.0], "expected": 35.0}, {"input": [-10.5, 35.5], "expected": 35.5}, {"input": [-10.5, 36.0], "expected": 36.0}, {"input": [-10.5, 36.5], "expected": 36.5}, {"input": [-10.5, 37.0], "expected": 37.0}, {"input": [-10.5, 37.5], "expected": 37.5}, {"input": [-10.5, 38.0], "expected": 38.0}, {"input": [-10.5, 38.5], "expected": 38.5}, {"input": [-10.5, 39.0], "expected": 39.0}, {"input": [-10.5, 39.5], "expected": 39.5}, {"input": [-10.5, 40.0], "expected": 40.0}, {"input": [-10.5, 40.5], "expected": 40.5}, {"input": [-10.5, 41.0], "expected": 41.0}, {"input": [-10.5, 41.5], "expected": 41.5}, {"input": [-10.5, 42.0], "expected": 42.0}, {"input": [-10.5, 42.5], "expected": 42.5}, {"input": [-10.5, 43.0], "expected": 43.0}, {"input": [-10.5, 43.5], "expected": 43.5}, {"input": [-10.5, 44.0], "expected": 44.0}, {"input": [-10.5, 44.5], "expected": 44.5}, {"input": [-10.5, 45.0], "expected": 45.0}, {"input": [-10.5, 45.5], "expected": 45.5}, {"input": [-10.5, 46.0], "expected": 46.0}, {"input": [-10.5, 46.5], "expected": 46.5}, {"input": [-10.5, 47.0], "expected": 47.0}, {"input": [-10.5, 47.5], "expected": 47.5}, {"input": [-10.5, 48.0], "expected": 48.0}, {"input": [-10.5, 48.5], "expected": 48.5}, {"input": [-10.5, 49.0], "expected": 49.0}, {"input": [-10.5, 49.5], "expected": 49.5}, {"input": [-10.5, 50.0], "expected": 50.0}, {"input": [-10.5, 50.5], "expected": 50.5}, {"input": [-10.5, 51.0], "expected": 51.0}, {"input": [-10.5, 51.5], "expected": 51.5}, {"input": [-10.5, 52.0], "expected": 52.0}, {"input": [-10.5, 52.5], "expected": 52.5}, {"input": [-10.5, 53.0], "expected": 53.0}, {"input": [-10.5, 53.5], "expected": 53.5}, {"input": [-10.5, 54.0], "expected": 54.0}, {"input": [-10.5, 54.5], "expected": 54.5}, {"input": [-10.5, 55.0], "expected": 55.0}, {"input": [-10.5, 55.5], "expected": 55.5}, {"input": [-10.5, 56.0], "expected": 56.0}, {"input": [-10.5, 56.5], "expected": 56.5}, {"input": [-10.5, 57.0], "expected": 57.0}, {"input": [-10.5, 57.5], "expected": 57.5}, {"input": [-10.5, 58.0], "expected": 58.0}, {"input": [-10.5, 58.5], "expected": 58.5}, {"input": [-10.5, 59.0], "expected": 59.0}, {"input": [-10.5, 59.5], "expected": 59.5}, {"input": [-10.5, 60.0], "expected": 60.0}, {"input": [-10.5, 60.5], "expected": 60.5}, {"input": [-10.5, 61.0], "expected": 61.0}, {"input": [-10.5, 61.5], "expected": 61.5}, {"input": [-10.5, 62.0], "expected": 62.0}, {"input": [-10.5, 62.5], "expected": 62.5}, {"input": [-10.5, 63.0], "expected": 63.0}, {"input": [-10.5, 63.5], "expected": 63.5}, {"input": [-10.5, 64.0], "expected": 64.0}, {"input": [-10.5, 64.5], "expected": 64.5}, {"input": [-10.5, 65.0], "expected": 65.0}, {"input": [-10.5, 65.5], "expected": 65.5}, {"input": [-10.5, 66.0], "expected": 66.0}, {"input": [-10.5, 66.5], "expected": 66.5}, {"input": [-10.5, 67.0], "expected": 67.0}, {"input": [-10.5, 67.5], "expected": 67.5}, {"input": [-10.5, 68.0], "expected": 68.0}, {"input": [-10.5, 68.5], "expected": 68.5}, {"input": [-10.5, 69.0], "expected": 69.0}, {"input": [-10.5, 69.5], "expected": 69.5}, {"input": [-10.5, 70.0], "expected": 70.0}, {"input": [-10.5, 70.5], "expected": 70.5}, {"input": [-10.5, 71.0], "expected": 71.0}, {"input": [-10.5, 71.5], "expected": 71.5}, {"input": [-10.5, 72.0], "expected": 72.0}, {"input": [-10.5, 72.5], "expected": 72.5}, {"input": [-10.5, 73.0], "expected": 73.0}, {"input": [-10.5, 73.5], "expected": 73.5}, {"input": [-10.5, 74.0], "expected": 74.0}, {"input": [-10.5, 74.5], "expected": 74.5}, {"input": [-10.5, 75.0], "expected": 75.0}, {"input": [-10.5, 75.5], "expected": 75.5}, {"input": [-10.5, 76.0], "expected": 76.0}, {"input": [-10.5, 76.5], "expected": 76.5}, {"input": [-10.5, 77.0], "expected": 77.0}, {"input": [-10.5, 77.5], "expected": 77.5}, {"input": [-10.5, 78.0], "expected": 78.0}, {"input": [-10.5, 78.5], "expected": 78.5}, {"input": [-10.5, 79.0], "expected": 79.0}, {"input": [-10.5, 79.5], "expected": 79.5}, {"input": [-10.5, 80.0], "expected": 80.0}, {"input": [-10.5, 80.5], "expected": 80.5}, {"input": [-10.5, 81.0], "expected": 81.0}, {"input": [-10.5, 81.5], "expected": 81.5}, {"input": [-10.5, 82.0], "expected": 82.0}, {"input": [-10.5, 82.5], "expected": 82.5}, {"input": [-10.5, 83.0], "expected": 83.0}, {"input": [-10.5, 83.5], "expected": 83.5}, {"input": [-10.5, 84.0], "expected": 84.0}, {"input": [-10.5, 84.5], "expected": 84.5}, {"input": [-10.5, 85.0], "expected": 85.0}, {"input": [-10.5, 85.5], "expected": 85.5}, {"input": [-10.5, 86.0], "expected": 86.0}, {"input": [-10.5, 86.5], "expected": 86.5}, {"input": [-10.5, 87.0], "expected": 87.0}, {"input": [-10.5, 87.5], "expected": 87.5}, {"input": [-10.5, 88.0], "expected": 88.0}, {"input": [-10.5, 88.5], "expected": 88.5}, {"input": [-10.5, 89.0], "expected": 89.0}, {"input": [-10.5, 89.5], "expected": 89.5}, {"input": [-10.5, 90.0], "expected": 90.0}, {"input": [-10.5, 90.5], "expected": 90.5}, {"input": [-10.5, 91.0], "expected": 91.0}, {"input": [-10.5, 91.5], "expected": 91.5}, {"input": [-10.5, 92.0], "expected": 92.0}, {"input": [-10.5, 92.5], "expected": 92.5}, {"input": [-10.5, 93.0], "expected": 93.0}, {"input": [-10.5, 93.5], "expected": 93.5}, {"input": [-10.5, 94.0], "expected": 94.0}, {"input": [-10.5, 94.5], "expected": 94.5}, {"input": [-10.5, 95.0], "expected": 95.0}, {"input": [-10.5, 95.5], "expected": 95.5}, {"input": [-10.5, 96.0], "expected": 96.0}, {"input": [-10.5, 96.5], "expected": 96.5}, {"input": [-10.5, 97.0], "expected": 97.0}, {"input": [-10.5, 97.5], "expected": 97.5}, {"input": [-10.5, 98.0], "expected": 98.0}, {"input": [-10.5, 98.5], "expected": 98.5}, {"input": [-10.5, 99.0], "expected": 99.0}, {"input": [-10.5, 99.5], "expected": 99.5}, {"input": [-10.0, -100.0], "expected": -10.0}, {"input": [-10.0, -99.5], "expected": -10.0}, {"input": [-10.0, -99.0], "expected": -10.0}, {"input": [-10.0, -98.5], "expected": -10.0}, {"input": [-10.0, -98.0], "expected": -10.0}, {"input": [-10.0, -97.5], "expected": -10.0}, {"input": [-10.0, -97.0], "expected": -10.0}, {"input": [-10.0, -96.5], "expected": -10.0}, {"input": [-10.0, -96.0], "expected": -10.0}, {"input": [-10.0, -95.5], "expected": -10.0}, {"input": [-10.0, -95.0], "expected": -10.0}, {"input": [-10.0, -94.5], "expected": -10.0}, {"input": [-10.0, -94.0], "expected": -10.0}, {"input": [-10.0, -93.5], "expected": -10.0}, {"input": [-10.0, -93.0], "expected": -10.0}, {"input": [-10.0, -92.5], "expected": -10.0}, {"input": [-10.0, -92.0], "expected": -10.0}, {"input": [-10.0, -91.5], "expected": -10.0}, {"input": [-10.0, -91.0], "expected": -10.0}, {"input": [-10.0, -90.5], "expected": -10.0}, {"input": [-10.0, -90.0], "expected": -10.0}, {"input": [-10.0, -89.5], "expected": -10.0}, {"input": [-10.0, -89.0], "expected": -10.0}, {"input": [-10.0, -88.5], "expected": -10.0}, {"input": [-10.0, -88.0], "expected": -10.0}, {"input": [-10.0, -87.5], "expected": -10.0}, {"input": [-10.0, -87.0], "expected": -10.0}, {"input": [-10.0, -86.5], "expected": -10.0}, {"input": [-10.0, -86.0], "expected": -10.0}, {"input": [-10.0, -85.5], "expected": -10.0}, {"input": [-10.0, -85.0], "expected": -10.0}, {"input": [-10.0, -84.5], "expected": -10.0}, {"input": [-10.0, -84.0], "expected": -10.0}, {"input": [-10.0, -83.5], "expected": -10.0}, {"input": [-10.0, -83.0], "expected": -10.0}, {"input": [-10.0, -82.5], "expected": -10.0}, {"input": [-10.0, -82.0], "expected": -10.0}, {"input": [-10.0, -81.5], "expected": -10.0}, {"input": [-10.0, -81.0], "expected": -10.0}, {"input": [-10.0, -80.5], "expected": -10.0}, {"input": [-10.0, -80.0], "expected": -10.0}, {"input": [-10.0, -79.5], "expected": -10.0}, {"input": [-10.0, -79.0], "expected": -10.0}, {"input": [-10.0, -78.5], "expected": -10.0}, {"input": [-10.0, -78.0], "expected": -10.0}, {"input": [-10.0, -77.5], "expected": -10.0}, {"input": [-10.0, -77.0], "expected": -10.0}, {"input": [-10.0, -76.5], "expected": -10.0}, {"input": [-10.0, -76.0], "expected": -10.0}, {"input": [-10.0, -75.5], "expected": -10.0}, {"input": [-10.0, -75.0], "expected": -10.0}, {"input": [-10.0, -74.5], "expected": -10.0}, {"input": [-10.0, -74.0], "expected": -10.0}, {"input": [-10.0, -73.5], "expected": -10.0}, {"input": [-10.0, -73.0], "expected": -10.0}, {"input": [-10.0, -72.5], "expected": -10.0}, {"input": [-10.0, -72.0], "expected": -10.0}, {"input": [-10.0, -71.5], "expected": -10.0}, {"input": [-10.0, -71.0], "expected": -10.0}, {"input": [-10.0, -70.5], "expected": -10.0}, {"input": [-10.0, -70.0], "expected": -10.0}, {"input": [-10.0, -69.5], "expected": -10.0}, {"input": [-10.0, -69.0], "expected": -10.0}, {"input": [-10.0, -68.5], "expected": -10.0}, {"input": [-10.0, -68.0], "expected": -10.0}, {"input": [-10.0, -67.5], "expected": -10.0}, {"input": [-10.0, -67.0], "expected": -10.0}, {"input": [-10.0, -66.5], "expected": -10.0}, {"input": [-10.0, -66.0], "expected": -10.0}, {"input": [-10.0, -65.5], "expected": -10.0}, {"input": [-10.0, -65.0], "expected": -10.0}, {"input": [-10.0, -64.5], "expected": -10.0}, {"input": [-10.0, -64.0], "expected": -10.0}, {"input": [-10.0, -63.5], "expected": -10.0}, {"input": [-10.0, -63.0], "expected": -10.0}, {"input": [-10.0, -62.5], "expected": -10.0}, {"input": [-10.0, -62.0], "expected": -10.0}, {"input": [-10.0, -61.5], "expected": -10.0}, {"input": [-10.0, -61.0], "expected": -10.0}, {"input": [-10.0, -60.5], "expected": -10.0}, {"input": [-10.0, -60.0], "expected": -10.0}, {"input": [-10.0, -59.5], "expected": -10.0}, {"input": [-10.0, -59.0], "expected": -10.0}, {"input": [-10.0, -58.5], "expected": -10.0}, {"input": [-10.0, -58.0], "expected": -10.0}, {"input": [-10.0, -57.5], "expected": -10.0}, {"input": [-10.0, -57.0], "expected": -10.0}, {"input": [-10.0, -56.5], "expected": -10.0}, {"input": [-10.0, -56.0], "expected": -10.0}, {"input": [-10.0, -55.5], "expected": -10.0}, {"input": [-10.0, -55.0], "expected": -10.0}, {"input": [-10.0, -54.5], "expected": -10.0}, {"input": [-10.0, -54.0], "expected": -10.0}, {"input": [-10.0, -53.5], "expected": -10.0}, {"input": [-10.0, -53.0], "expected": -10.0}, {"input": [-10.0, -52.5], "expected": -10.0}, {"input": [-10.0, -52.0], "expected": -10.0}, {"input": [-10.0, -51.5], "expected": -10.0}, {"input": [-10.0, -51.0], "expected": -10.0}, {"input": [-10.0, -50.5], "expected": -10.0}, {"input": [-10.0, -50.0], "expected": -10.0}, {"input": [-10.0, -49.5], "expected": -10.0}, {"input": [-10.0, -49.0], "expected": -10.0}, {"input": [-10.0, -48.5], "expected": -10.0}, {"input": [-10.0, -48.0], "expected": -10.0}, {"input": [-10.0, -47.5], "expected": -10.0}, {"input": [-10.0, -47.0], "expected": -10.0}, {"input": [-10.0, -46.5], "expected": -10.0}, {"input": [-10.0, -46.0], "expected": -10.0}, {"input": [-10.0, -45.5], "expected": -10.0}, {"input": [-10.0, -45.0], "expected": -10.0}, {"input": [-10.0, -44.5], "expected": -9.999999999999998}, {"input": [-10.0, -44.0], "expected": -9.999999999999998}, {"input": [-10.0, -43.5], "expected": -9.999999999999996}, {"input": [-10.0, -43.0], "expected": -9.999999999999995}, {"input": [-10.0, -42.5], "expected": -9.999999999999993}, {"input": [-10.0, -42.0], "expected": -9.999999999999988}, {"input": [-10.0, -41.5], "expected": -9.999999999999979}, {"input": [-10.0, -41.0], "expected": -9.999999999999966}, {"input": [-10.0, -40.5], "expected": -9.999999999999943}, {"input": [-10.0, -40.0], "expected": -9.999999999999906}, {"input": [-10.0, -39.5], "expected": -9.999999999999845}, {"input": [-10.0, -39.0], "expected": -9.999999999999746}, {"input": [-10.0, -38.5], "expected": -9.99999999999958}, {"input": [-10.0, -38.0], "expected": -9.999999999999309}, {"input": [-10.0, -37.5], "expected": -9.99999999999886}, {"input": [-10.0, -37.0], "expected": -9.99999999999812}, {"input": [-10.0, -36.5], "expected": -9.999999999996902}, {"input": [-10.0, -36.0], "expected": -9.999999999994891}, {"input": [-10.0, -35.5], "expected": -9.999999999991577}, {"input": [-10.0, -35.0], "expected": -9.999999999986112}, {"input": [-10.0, -34.5], "expected": -9.999999999977103}, {"input": [-10.0, -34.0], "expected": -9.999999999962249}, {"input": [-10.0, -33.5], "expected": -9.999999999937758}, {"input": [-10.0, -33.0], "expected": -9.999999999897382}, {"input": [-10.0, -32.5], "expected": -9.999999999830811}, {"input": [-10.0, -32.0], "expected": -9.999999999721053}, {"input": [-10.0, -31.5], "expected": -9.999999999540094}, {"input": [-10.0, -31.0], "expected": -9.999999999241744}, {"input": [-10.0, -30.5], "expected": -9.999999998749848}, {"input": [-10.0, -30.0], "expected": -9.999999997938847}, {"input": [-10.0, -29.5], "expected": -9.999999996601732}, {"input": [-10.0, -29.0], "expected": -9.999999994397204}, {"input": [-10.0, -28.5], "expected": -9.99999999076255}, {"input": [-10.0, -28.0], "expected": -9.999999984770021}, {"input": [-10.0, -27.5], "expected": -9.99999997489001}, {"input": [-10.0, -27.0], "expected": -9.999999958600624}, {"input": [-10.0, -26.5], "expected": -9.999999931743968}, {"input": [-10.0, -26.0], "expected": -9.999999887464831}, {"input": [-10.0, -25.5], "expected": -9.999999814460882}, {"input": [-10.0, -25.0], "expected": -9.999999694097726}, {"input": [-10.0, -24.5], "expected": -9.999999495652464}, {"input": [-10.0, -24.0], "expected": -9.999999168471627}, {"input": [-10.0, -23.5], "expected": -9.999998629041853}, {"input": [-10.0, -23.0], "expected": -9.999997739673148}, {"input": [-10.0, -22.5], "expected": -9.999996273353771}, {"input": [-10.0, -22.0], "expected": -9.999993855806522}, {"input": [-10.0, -21.5], "expected": -9.99998986995771}, {"input": [-10.0, -21.0], "expected": -9.999983298438682}, {"input": [-10.0, -20.5], "expected": -9.99997246392977}, {"input": [-10.0, -20.0], "expected": -9.999954601100782}, {"input": [-10.0, -19.5], "expected": -9.999925150971372}, {"input": [-10.0, -19.0], "expected": -9.999876597810276}, {"input": [-10.0, -18.5], "expected": -9.99979655232787}, {"input": [-10.0, -18.0], "expected": -9.999664593627104}, {"input": [-10.0, -17.5], "expected": -9.999447068524638}, {"input": [-10.0, -17.0], "expected": -9.999088533546226}, {"input": [-10.0, -16.5], "expected": -9.998497689840246}, {"input": [-10.0, -16.0], "expected": -9.99752431486227}, {"input": [-10.0, -15.5], "expected": -9.99592155672943}, {"input": [-10.0, -15.0], "expected": -9.993284651510882}, {"input": [-10.0, -14.5], "expected": -9.988952255151407}, {"input": [-10.0, -14.0], "expected": -9.98185007208219}, {"input": [-10.0, -13.5], "expected": -9.97024958172738}, {"input": [-10.0, -13.0], "expected": -9.951412648426258}, {"input": [-10.0, -12.5], "expected": -9.921110265707451}, {"input": [-10.0, -12.0], "expected": -9.873071988957028}, {"input": [-10.0, -11.5], "expected": -9.798586722017248}, {"input": [-10.0, -11.0], "expected": -9.686738312481777}, {"input": [-10.0, -10.5], "expected": -9.525923015819894}, {"input": [-10.0, -10.0], "expected": -9.306852819440055}, {"input": [-10.0, -9.5], "expected": -9.025923015819894}, {"input": [-10.0, -9.0], "expected": -8.686738312481777}, {"input": [-10.0, -8.5], "expected": -8.298586722017248}, {"input": [-10.0, -8.0], "expected": -7.873071988957028}, {"input": [-10.0, -7.5], "expected": -7.42111026570745}, {"input": [-10.0, -7.0], "expected": -6.951412648426258}, {"input": [-10.0, -6.5], "expected": -6.470249581727379}, {"input": [-10.0, -6.0], "expected": -5.9818500720821906}, {"input": [-10.0, -5.5], "expected": -5.488952255151406}, {"input": [-10.0, -5.0], "expected": -4.993284651510882}, {"input": [-10.0, -4.5], "expected": -4.495921556729429}, {"input": [-10.0, -4.0], "expected": -3.9975243148622694}, {"input": [-10.0, -3.5], "expected": -3.498497689840246}, {"input": [-10.0, -3.0], "expected": -2.999088533546226}, {"input": [-10.0, -2.5], "expected": -2.4994470685246393}, {"input": [-10.0, -2.0], "expected": -1.9996645936271042}, {"input": [-10.0, -1.5], "expected": -1.4997965523278705}, {"input": [-10.0, -1.0], "expected": -0.9998765978102767}, {"input": [-10.0, -0.5], "expected": -0.49992515097137075}, {"input": [-10.0, 0.0], "expected": 4.539889921686465e-05}, {"input": [-10.0, 0.5], "expected": 0.5000275360702287}, {"input": [-10.0, 1.0], "expected": 1.0000167015613184}, {"input": [-10.0, 1.5], "expected": 1.5000101300422897}, {"input": [-10.0, 2.0], "expected": 2.0000061441934776}, {"input": [-10.0, 2.5], "expected": 2.500003726646228}, {"input": [-10.0, 3.0], "expected": 3.0000022603268524}, {"input": [-10.0, 3.5], "expected": 3.5000013709581466}, {"input": [-10.0, 4.0], "expected": 4.000000831528373}, {"input": [-10.0, 4.5], "expected": 4.500000504347535}, {"input": [-10.0, 5.0], "expected": 5.000000305902273}, {"input": [-10.0, 5.5], "expected": 5.500000185539119}, {"input": [-10.0, 6.0], "expected": 6.000000112535169}, {"input": [-10.0, 6.5], "expected": 6.500000068256031}, {"input": [-10.0, 7.0], "expected": 7.000000041399376}, {"input": [-10.0, 7.5], "expected": 7.500000025109991}, {"input": [-10.0, 8.0], "expected": 8.000000015229979}, {"input": [-10.0, 8.5], "expected": 8.50000000923745}, {"input": [-10.0, 9.0], "expected": 9.000000005602796}, {"input": [-10.0, 9.5], "expected": 9.500000003398268}, {"input": [-10.0, 10.0], "expected": 10.000000002061153}, {"input": [-10.0, 10.5], "expected": 10.500000001250152}, {"input": [-10.0, 11.0], "expected": 11.000000000758256}, {"input": [-10.0, 11.5], "expected": 11.500000000459906}, {"input": [-10.0, 12.0], "expected": 12.000000000278947}, {"input": [-10.0, 12.5], "expected": 12.500000000169189}, {"input": [-10.0, 13.0], "expected": 13.000000000102618}, {"input": [-10.0, 13.5], "expected": 13.500000000062242}, {"input": [-10.0, 14.0], "expected": 14.000000000037751}, {"input": [-10.0, 14.5], "expected": 14.500000000022897}, {"input": [-10.0, 15.0], "expected": 15.000000000013888}, {"input": [-10.0, 15.5], "expected": 15.500000000008423}, {"input": [-10.0, 16.0], "expected": 16.00000000000511}, {"input": [-10.0, 16.5], "expected": 16.500000000003098}, {"input": [-10.0, 17.0], "expected": 17.00000000000188}, {"input": [-10.0, 17.5], "expected": 17.50000000000114}, {"input": [-10.0, 18.0], "expected": 18.000000000000693}, {"input": [-10.0, 18.5], "expected": 18.50000000000042}, {"input": [-10.0, 19.0], "expected": 19.000000000000256}, {"input": [-10.0, 19.5], "expected": 19.500000000000153}, {"input": [-10.0, 20.0], "expected": 20.000000000000092}, {"input": [-10.0, 20.5], "expected": 20.500000000000057}, {"input": [-10.0, 21.0], "expected": 21.000000000000036}, {"input": [-10.0, 21.5], "expected": 21.50000000000002}, {"input": [-10.0, 22.0], "expected": 22.000000000000014}, {"input": [-10.0, 22.5], "expected": 22.500000000000007}, {"input": [-10.0, 23.0], "expected": 23.000000000000004}, {"input": [-10.0, 23.5], "expected": 23.500000000000004}, {"input": [-10.0, 24.0], "expected": 24.0}, {"input": [-10.0, 24.5], "expected": 24.5}, {"input": [-10.0, 25.0], "expected": 25.0}, {"input": [-10.0, 25.5], "expected": 25.5}, {"input": [-10.0, 26.0], "expected": 26.0}, {"input": [-10.0, 26.5], "expected": 26.5}, {"input": [-10.0, 27.0], "expected": 27.0}, {"input": [-10.0, 27.5], "expected": 27.5}, {"input": [-10.0, 28.0], "expected": 28.0}, {"input": [-10.0, 28.5], "expected": 28.5}, {"input": [-10.0, 29.0], "expected": 29.0}, {"input": [-10.0, 29.5], "expected": 29.5}, {"input": [-10.0, 30.0], "expected": 30.0}, {"input": [-10.0, 30.5], "expected": 30.5}, {"input": [-10.0, 31.0], "expected": 31.0}, {"input": [-10.0, 31.5], "expected": 31.5}, {"input": [-10.0, 32.0], "expected": 32.0}, {"input": [-10.0, 32.5], "expected": 32.5}, {"input": [-10.0, 33.0], "expected": 33.0}, {"input": [-10.0, 33.5], "expected": 33.5}, {"input": [-10.0, 34.0], "expected": 34.0}, {"input": [-10.0, 34.5], "expected": 34.5}, {"input": [-10.0, 35.0], "expected": 35.0}, {"input": [-10.0, 35.5], "expected": 35.5}, {"input": [-10.0, 36.0], "expected": 36.0}, {"input": [-10.0, 36.5], "expected": 36.5}, {"input": [-10.0, 37.0], "expected": 37.0}, {"input": [-10.0, 37.5], "expected": 37.5}, {"input": [-10.0, 38.0], "expected": 38.0}, {"input": [-10.0, 38.5], "expected": 38.5}, {"input": [-10.0, 39.0], "expected": 39.0}, {"input": [-10.0, 39.5], "expected": 39.5}, {"input": [-10.0, 40.0], "expected": 40.0}, {"input": [-10.0, 40.5], "expected": 40.5}, {"input": [-10.0, 41.0], "expected": 41.0}, {"input": [-10.0, 41.5], "expected": 41.5}, {"input": [-10.0, 42.0], "expected": 42.0}, {"input": [-10.0, 42.5], "expected": 42.5}, {"input": [-10.0, 43.0], "expected": 43.0}, {"input": [-10.0, 43.5], "expected": 43.5}, {"input": [-10.0, 44.0], "expected": 44.0}, {"input": [-10.0, 44.5], "expected": 44.5}, {"input": [-10.0, 45.0], "expected": 45.0}, {"input": [-10.0, 45.5], "expected": 45.5}, {"input": [-10.0, 46.0], "expected": 46.0}, {"input": [-10.0, 46.5], "expected": 46.5}, {"input": [-10.0, 47.0], "expected": 47.0}, {"input": [-10.0, 47.5], "expected": 47.5}, {"input": [-10.0, 48.0], "expected": 48.0}, {"input": [-10.0, 48.5], "expected": 48.5}, {"input": [-10.0, 49.0], "expected": 49.0}, {"input": [-10.0, 49.5], "expected": 49.5}, {"input": [-10.0, 50.0], "expected": 50.0}, {"input": [-10.0, 50.5], "expected": 50.5}, {"input": [-10.0, 51.0], "expected": 51.0}, {"input": [-10.0, 51.5], "expected": 51.5}, {"input": [-10.0, 52.0], "expected": 52.0}, {"input": [-10.0, 52.5], "expected": 52.5}, {"input": [-10.0, 53.0], "expected": 53.0}, {"input": [-10.0, 53.5], "expected": 53.5}, {"input": [-10.0, 54.0], "expected": 54.0}, {"input": [-10.0, 54.5], "expected": 54.5}, {"input": [-10.0, 55.0], "expected": 55.0}, {"input": [-10.0, 55.5], "expected": 55.5}, {"input": [-10.0, 56.0], "expected": 56.0}, {"input": [-10.0, 56.5], "expected": 56.5}, {"input": [-10.0, 57.0], "expected": 57.0}, {"input": [-10.0, 57.5], "expected": 57.5}, {"input": [-10.0, 58.0], "expected": 58.0}, {"input": [-10.0, 58.5], "expected": 58.5}, {"input": [-10.0, 59.0], "expected": 59.0}, {"input": [-10.0, 59.5], "expected": 59.5}, {"input": [-10.0, 60.0], "expected": 60.0}, {"input": [-10.0, 60.5], "expected": 60.5}, {"input": [-10.0, 61.0], "expected": 61.0}, {"input": [-10.0, 61.5], "expected": 61.5}, {"input": [-10.0, 62.0], "expected": 62.0}, {"input": [-10.0, 62.5], "expected": 62.5}, {"input": [-10.0, 63.0], "expected": 63.0}, {"input": [-10.0, 63.5], "expected": 63.5}, {"input": [-10.0, 64.0], "expected": 64.0}, {"input": [-10.0, 64.5], "expected": 64.5}, {"input": [-10.0, 65.0], "expected": 65.0}, {"input": [-10.0, 65.5], "expected": 65.5}, {"input": [-10.0, 66.0], "expected": 66.0}, {"input": [-10.0, 66.5], "expected": 66.5}, {"input": [-10.0, 67.0], "expected": 67.0}, {"input": [-10.0, 67.5], "expected": 67.5}, {"input": [-10.0, 68.0], "expected": 68.0}, {"input": [-10.0, 68.5], "expected": 68.5}, {"input": [-10.0, 69.0], "expected": 69.0}, {"input": [-10.0, 69.5], "expected": 69.5}, {"input": [-10.0, 70.0], "expected": 70.0}, {"input": [-10.0, 70.5], "expected": 70.5}, {"input": [-10.0, 71.0], "expected": 71.0}, {"input": [-10.0, 71.5], "expected": 71.5}, {"input": [-10.0, 72.0], "expected": 72.0}, {"input": [-10.0, 72.5], "expected": 72.5}, {"input": [-10.0, 73.0], "expected": 73.0}, {"input": [-10.0, 73.5], "expected": 73.5}, {"input": [-10.0, 74.0], "expected": 74.0}, {"input": [-10.0, 74.5], "expected": 74.5}, {"input": [-10.0, 75.0], "expected": 75.0}, {"input": [-10.0, 75.5], "expected": 75.5}, {"input": [-10.0, 76.0], "expected": 76.0}, {"input": [-10.0, 76.5], "expected": 76.5}, {"input": [-10.0, 77.0], "expected": 77.0}, {"input": [-10.0, 77.5], "expected": 77.5}, {"input": [-10.0, 78.0], "expected": 78.0}, {"input": [-10.0, 78.5], "expected": 78.5}, {"input": [-10.0, 79.0], "expected": 79.0}, {"input": [-10.0, 79.5], "expected": 79.5}, {"input": [-10.0, 80.0], "expected": 80.0}, {"input": [-10.0, 80.5], "expected": 80.5}, {"input": [-10.0, 81.0], "expected": 81.0}, {"input": [-10.0, 81.5], "expected": 81.5}, {"input": [-10.0, 82.0], "expected": 82.0}, {"input": [-10.0, 82.5], "expected": 82.5}, {"input": [-10.0, 83.0], "expected": 83.0}, {"input": [-10.0, 83.5], "expected": 83.5}, {"input": [-10.0, 84.0], "expected": 84.0}, {"input": [-10.0, 84.5], "expected": 84.5}, {"input": [-10.0, 85.0], "expected": 85.0}, {"input": [-10.0, 85.5], "expected": 85.5}, {"input": [-10.0, 86.0], "expected": 86.0}, {"input": [-10.0, 86.5], "expected": 86.5}, {"input": [-10.0, 87.0], "expected": 87.0}, {"input": [-10.0, 87.5], "expected": 87.5}, {"input": [-10.0, 88.0], "expected": 88.0}, {"input": [-10.0, 88.5], "expected": 88.5}, {"input": [-10.0, 89.0], "expected": 89.0}, {"input": [-10.0, 89.5], "expected": 89.5}, {"input": [-10.0, 90.0], "expected": 90.0}, {"input": [-10.0, 90.5], "expected": 90.5}, {"input": [-10.0, 91.0], "expected": 91.0}, {"input": [-10.0, 91.5], "expected": 91.5}, {"input": [-10.0, 92.0], "expected": 92.0}, {"input": [-10.0, 92.5], "expected": 92.5}, {"input": [-10.0, 93.0], "expected": 93.0}, {"input": [-10.0, 93.5], "expected": 93.5}, {"input": [-10.0, 94.0], "expected": 94.0}, {"input": [-10.0, 94.5], "expected": 94.5}, {"input": [-10.0, 95.0], "expected": 95.0}, {"input": [-10.0, 95.5], "expected": 95.5}, {"input": [-10.0, 96.0], "expected": 96.0}, {"input": [-10.0, 96.5], "expected": 96.5}, {"input": [-10.0, 97.0], "expected": 97.0}, {"input": [-10.0, 97.5], "expected": 97.5}, {"input": [-10.0, 98.0], "expected": 98.0}, {"input": [-10.0, 98.5], "expected": 98.5}, {"input": [-10.0, 99.0], "expected": 99.0}, {"input": [-10.0, 99.5], "expected": 99.5}, {"input": [-9.5, -100.0], "expected": -9.5}, {"input": [-9.5, -99.5], "expected": -9.5}, {"input": [-9.5, -99.0], "expected": -9.5}, {"input": [-9.5, -98.5], "expected": -9.5}, {"input": [-9.5, -98.0], "expected": -9.5}, {"input": [-9.5, -97.5], "expected": -9.5}, {"input": [-9.5, -97.0], "expected": -9.5}, {"input": [-9.5, -96.5], "expected": -9.5}, {"input": [-9.5, -96.0], "expected": -9.5}, {"input": [-9.5, -95.5], "expected": -9.5}, {"input": [-9.5, -95.0], "expected": -9.5}, {"input": [-9.5, -94.5], "expected": -9.5}, {"input": [-9.5, -94.0], "expected": -9.5}, {"input": [-9.5, -93.5], "expected": -9.5}, {"input": [-9.5, -93.0], "expected": -9.5}, {"input": [-9.5, -92.5], "expected": -9.5}, {"input": [-9.5, -92.0], "expected": -9.5}, {"input": [-9.5, -91.5], "expected": -9.5}, {"input": [-9.5, -91.0], "expected": -9.5}, {"input": [-9.5, -90.5], "expected": -9.5}, {"input": [-9.5, -90.0], "expected": -9.5}, {"input": [-9.5, -89.5], "expected": -9.5}, {"input": [-9.5, -89.0], "expected": -9.5}, {"input": [-9.5, -88.5], "expected": -9.5}, {"input": [-9.5, -88.0], "expected": -9.5}, {"input": [-9.5, -87.5], "expected": -9.5}, {"input": [-9.5, -87.0], "expected": -9.5}, {"input": [-9.5, -86.5], "expected": -9.5}, {"input": [-9.5, -86.0], "expected": -9.5}, {"input": [-9.5, -85.5], "expected": -9.5}, {"input": [-9.5, -85.0], "expected": -9.5}, {"input": [-9.5, -84.5], "expected": -9.5}, {"input": [-9.5, -84.0], "expected": -9.5}, {"input": [-9.5, -83.5], "expected": -9.5}, {"input": [-9.5, -83.0], "expected": -9.5}, {"input": [-9.5, -82.5], "expected": -9.5}, {"input": [-9.5, -82.0], "expected": -9.5}, {"input": [-9.5, -81.5], "expected": -9.5}, {"input": [-9.5, -81.0], "expected": -9.5}, {"input": [-9.5, -80.5], "expected": -9.5}, {"input": [-9.5, -80.0], "expected": -9.5}, {"input": [-9.5, -79.5], "expected": -9.5}, {"input": [-9.5, -79.0], "expected": -9.5}, {"input": [-9.5, -78.5], "expected": -9.5}, {"input": [-9.5, -78.0], "expected": -9.5}, {"input": [-9.5, -77.5], "expected": -9.5}, {"input": [-9.5, -77.0], "expected": -9.5}, {"input": [-9.5, -76.5], "expected": -9.5}, {"input": [-9.5, -76.0], "expected": -9.5}, {"input": [-9.5, -75.5], "expected": -9.5}, {"input": [-9.5, -75.0], "expected": -9.5}, {"input": [-9.5, -74.5], "expected": -9.5}, {"input": [-9.5, -74.0], "expected": -9.5}, {"input": [-9.5, -73.5], "expected": -9.5}, {"input": [-9.5, -73.0], "expected": -9.5}, {"input": [-9.5, -72.5], "expected": -9.5}, {"input": [-9.5, -72.0], "expected": -9.5}, {"input": [-9.5, -71.5], "expected": -9.5}, {"input": [-9.5, -71.0], "expected": -9.5}, {"input": [-9.5, -70.5], "expected": -9.5}, {"input": [-9.5, -70.0], "expected": -9.5}, {"input": [-9.5, -69.5], "expected": -9.5}, {"input": [-9.5, -69.0], "expected": -9.5}, {"input": [-9.5, -68.5], "expected": -9.5}, {"input": [-9.5, -68.0], "expected": -9.5}, {"input": [-9.5, -67.5], "expected": -9.5}, {"input": [-9.5, -67.0], "expected": -9.5}, {"input": [-9.5, -66.5], "expected": -9.5}, {"input": [-9.5, -66.0], "expected": -9.5}, {"input": [-9.5, -65.5], "expected": -9.5}, {"input": [-9.5, -65.0], "expected": -9.5}, {"input": [-9.5, -64.5], "expected": -9.5}, {"input": [-9.5, -64.0], "expected": -9.5}, {"input": [-9.5, -63.5], "expected": -9.5}, {"input": [-9.5, -63.0], "expected": -9.5}, {"input": [-9.5, -62.5], "expected": -9.5}, {"input": [-9.5, -62.0], "expected": -9.5}, {"input": [-9.5, -61.5], "expected": -9.5}, {"input": [-9.5, -61.0], "expected": -9.5}, {"input": [-9.5, -60.5], "expected": -9.5}, {"input": [-9.5, -60.0], "expected": -9.5}, {"input": [-9.5, -59.5], "expected": -9.5}, {"input": [-9.5, -59.0], "expected": -9.5}, {"input": [-9.5, -58.5], "expected": -9.5}, {"input": [-9.5, -58.0], "expected": -9.5}, {"input": [-9.5, -57.5], "expected": -9.5}, {"input": [-9.5, -57.0], "expected": -9.5}, {"input": [-9.5, -56.5], "expected": -9.5}, {"input": [-9.5, -56.0], "expected": -9.5}, {"input": [-9.5, -55.5], "expected": -9.5}, {"input": [-9.5, -55.0], "expected": -9.5}, {"input": [-9.5, -54.5], "expected": -9.5}, {"input": [-9.5, -54.0], "expected": -9.5}, {"input": [-9.5, -53.5], "expected": -9.5}, {"input": [-9.5, -53.0], "expected": -9.5}, {"input": [-9.5, -52.5], "expected": -9.5}, {"input": [-9.5, -52.0], "expected": -9.5}, {"input": [-9.5, -51.5], "expected": -9.5}, {"input": [-9.5, -51.0], "expected": -9.5}, {"input": [-9.5, -50.5], "expected": -9.5}, {"input": [-9.5, -50.0], "expected": -9.5}, {"input": [-9.5, -49.5], "expected": -9.5}, {"input": [-9.5, -49.0], "expected": -9.5}, {"input": [-9.5, -48.5], "expected": -9.5}, {"input": [-9.5, -48.0], "expected": -9.5}, {"input": [-9.5, -47.5], "expected": -9.5}, {"input": [-9.5, -47.0], "expected": -9.5}, {"input": [-9.5, -46.5], "expected": -9.5}, {"input": [-9.5, -46.0], "expected": -9.5}, {"input": [-9.5, -45.5], "expected": -9.5}, {"input": [-9.5, -45.0], "expected": -9.5}, {"input": [-9.5, -44.5], "expected": -9.5}, {"input": [-9.5, -44.0], "expected": -9.499999999999998}, {"input": [-9.5, -43.5], "expected": -9.499999999999998}, {"input": [-9.5, -43.0], "expected": -9.499999999999996}, {"input": [-9.5, -42.5], "expected": -9.499999999999995}, {"input": [-9.5, -42.0], "expected": -9.499999999999993}, {"input": [-9.5, -41.5], "expected": -9.499999999999988}, {"input": [-9.5, -41.0], "expected": -9.499999999999979}, {"input": [-9.5, -40.5], "expected": -9.499999999999966}, {"input": [-9.5, -40.0], "expected": -9.499999999999943}, {"input": [-9.5, -39.5], "expected": -9.499999999999906}, {"input": [-9.5, -39.0], "expected": -9.499999999999845}, {"input": [-9.5, -38.5], "expected": -9.499999999999746}, {"input": [-9.5, -38.0], "expected": -9.49999999999958}, {"input": [-9.5, -37.5], "expected": -9.499999999999309}, {"input": [-9.5, -37.0], "expected": -9.49999999999886}, {"input": [-9.5, -36.5], "expected": -9.49999999999812}, {"input": [-9.5, -36.0], "expected": -9.499999999996902}, {"input": [-9.5, -35.5], "expected": -9.499999999994891}, {"input": [-9.5, -35.0], "expected": -9.499999999991577}, {"input": [-9.5, -34.5], "expected": -9.499999999986112}, {"input": [-9.5, -34.0], "expected": -9.499999999977103}, {"input": [-9.5, -33.5], "expected": -9.499999999962249}, {"input": [-9.5, -33.0], "expected": -9.499999999937758}, {"input": [-9.5, -32.5], "expected": -9.499999999897382}, {"input": [-9.5, -32.0], "expected": -9.499999999830811}, {"input": [-9.5, -31.5], "expected": -9.499999999721053}, {"input": [-9.5, -31.0], "expected": -9.499999999540094}, {"input": [-9.5, -30.5], "expected": -9.499999999241744}, {"input": [-9.5, -30.0], "expected": -9.499999998749848}, {"input": [-9.5, -29.5], "expected": -9.499999997938847}, {"input": [-9.5, -29.0], "expected": -9.499999996601732}, {"input": [-9.5, -28.5], "expected": -9.499999994397204}, {"input": [-9.5, -28.0], "expected": -9.49999999076255}, {"input": [-9.5, -27.5], "expected": -9.499999984770021}, {"input": [-9.5, -27.0], "expected": -9.49999997489001}, {"input": [-9.5, -26.5], "expected": -9.499999958600624}, {"input": [-9.5, -26.0], "expected": -9.499999931743968}, {"input": [-9.5, -25.5], "expected": -9.499999887464831}, {"input": [-9.5, -25.0], "expected": -9.499999814460882}, {"input": [-9.5, -24.5], "expected": -9.499999694097726}, {"input": [-9.5, -24.0], "expected": -9.499999495652464}, {"input": [-9.5, -23.5], "expected": -9.499999168471627}, {"input": [-9.5, -23.0], "expected": -9.499998629041853}, {"input": [-9.5, -22.5], "expected": -9.499997739673148}, {"input": [-9.5, -22.0], "expected": -9.499996273353771}, {"input": [-9.5, -21.5], "expected": -9.499993855806522}, {"input": [-9.5, -21.0], "expected": -9.49998986995771}, {"input": [-9.5, -20.5], "expected": -9.499983298438682}, {"input": [-9.5, -20.0], "expected": -9.49997246392977}, {"input": [-9.5, -19.5], "expected": -9.499954601100782}, {"input": [-9.5, -19.0], "expected": -9.499925150971372}, {"input": [-9.5, -18.5], "expected": -9.499876597810276}, {"input": [-9.5, -18.0], "expected": -9.49979655232787}, {"input": [-9.5, -17.5], "expected": -9.499664593627104}, {"input": [-9.5, -17.0], "expected": -9.499447068524638}, {"input": [-9.5, -16.5], "expected": -9.499088533546226}, {"input": [-9.5, -16.0], "expected": -9.498497689840246}, {"input": [-9.5, -15.5], "expected": -9.49752431486227}, {"input": [-9.5, -15.0], "expected": -9.49592155672943}, {"input": [-9.5, -14.5], "expected": -9.493284651510882}, {"input": [-9.5, -14.0], "expected": -9.488952255151407}, {"input": [-9.5, -13.5], "expected": -9.48185007208219}, {"input": [-9.5, -13.0], "expected": -9.47024958172738}, {"input": [-9.5, -12.5], "expected": -9.451412648426258}, {"input": [-9.5, -12.0], "expected": -9.421110265707451}, {"input": [-9.5, -11.5], "expected": -9.373071988957028}, {"input": [-9.5, -11.0], "expected": -9.298586722017248}, {"input": [-9.5, -10.5], "expected": -9.186738312481777}, {"input": [-9.5, -10.0], "expected": -9.025923015819894}, {"input": [-9.5, -9.5], "expected": -8.806852819440055}, {"input": [-9.5, -9.0], "expected": -8.525923015819894}, {"input": [-9.5, -8.5], "expected": -8.186738312481777}, {"input": [-9.5, -8.0], "expected": -7.798586722017248}, {"input": [-9.5, -7.5], "expected": -7.373071988957028}, {"input": [-9.5, -7.0], "expected": -6.92111026570745}, {"input": [-9.5, -6.5], "expected": -6.451412648426258}, {"input": [-9.5, -6.0], "expected": -5.970249581727379}, {"input": [-9.5, -5.5], "expected": -5.4818500720821906}, {"input": [-9.5, -5.0], "expected": -4.988952255151406}, {"input": [-9.5, -4.5], "expected": -4.493284651510882}, {"input": [-9.5, -4.0], "expected": -3.9959215567294293}, {"input": [-9.5, -3.5], "expected": -3.4975243148622694}, {"input": [-9.5, -3.0], "expected": -2.998497689840246}, {"input": [-9.5, -2.5], "expected": -2.499088533546226}, {"input": [-9.5, -2.0], "expected": -1.9994470685246393}, {"input": [-9.5, -1.5], "expected": -1.4996645936271042}, {"input": [-9.5, -1.0], "expected": -0.9997965523278706}, {"input": [-9.5, -0.5], "expected": -0.49987659781027677}, {"input": [-9.5, 0.0], "expected": 7.484902862926717e-05}, {"input": [-9.5, 0.5], "expected": 0.5000453988992168}, {"input": [-9.5, 1.0], "expected": 1.0000275360702287}, {"input": [-9.5, 1.5], "expected": 1.5000167015613184}, {"input": [-9.5, 2.0], "expected": 2.0000101300422894}, {"input": [-9.5, 2.5], "expected": 2.5000061441934776}, {"input": [-9.5, 3.0], "expected": 3.000003726646228}, {"input": [-9.5, 3.5], "expected": 3.5000022603268524}, {"input": [-9.5, 4.0], "expected": 4.000001370958147}, {"input": [-9.5, 4.5], "expected": 4.500000831528373}, {"input": [-9.5, 5.0], "expected": 5.000000504347535}, {"input": [-9.5, 5.5], "expected": 5.500000305902273}, {"input": [-9.5, 6.0], "expected": 6.000000185539119}, {"input": [-9.5, 6.5], "expected": 6.500000112535169}, {"input": [-9.5, 7.0], "expected": 7.000000068256031}, {"input": [-9.5, 7.5], "expected": 7.500000041399376}, {"input": [-9.5, 8.0], "expected": 8.00000002510999}, {"input": [-9.5, 8.5], "expected": 8.500000015229979}, {"input": [-9.5, 9.0], "expected": 9.00000000923745}, {"input": [-9.5, 9.5], "expected": 9.500000005602796}, {"input": [-9.5, 10.0], "expected": 10.000000003398268}, {"input": [-9.5, 10.5], "expected": 10.500000002061153}, {"input": [-9.5, 11.0], "expected": 11.000000001250152}, {"input": [-9.5, 11.5], "expected": 11.500000000758256}, {"input": [-9.5, 12.0], "expected": 12.000000000459906}, {"input": [-9.5, 12.5], "expected": 12.500000000278947}, {"input": [-9.5, 13.0], "expected": 13.000000000169189}, {"input": [-9.5, 13.5], "expected": 13.500000000102618}, {"input": [-9.5, 14.0], "expected": 14.000000000062242}, {"input": [-9.5, 14.5], "expected": 14.500000000037751}, {"input": [-9.5, 15.0], "expected": 15.000000000022897}, {"input": [-9.5, 15.5], "expected": 15.500000000013888}, {"input": [-9.5, 16.0], "expected": 16.000000000008423}, {"input": [-9.5, 16.5], "expected": 16.50000000000511}, {"input": [-9.5, 17.0], "expected": 17.000000000003098}, {"input": [-9.5, 17.5], "expected": 17.50000000000188}, {"input": [-9.5, 18.0], "expected": 18.00000000000114}, {"input": [-9.5, 18.5], "expected": 18.500000000000693}, {"input": [-9.5, 19.0], "expected": 19.00000000000042}, {"input": [-9.5, 19.5], "expected": 19.500000000000256}, {"input": [-9.5, 20.0], "expected": 20.000000000000153}, {"input": [-9.5, 20.5], "expected": 20.500000000000092}, {"input": [-9.5, 21.0], "expected": 21.000000000000057}, {"input": [-9.5, 21.5], "expected": 21.500000000000036}, {"input": [-9.5, 22.0], "expected": 22.00000000000002}, {"input": [-9.5, 22.5], "expected": 22.500000000000014}, {"input": [-9.5, 23.0], "expected": 23.000000000000007}, {"input": [-9.5, 23.5], "expected": 23.500000000000004}, {"input": [-9.5, 24.0], "expected": 24.000000000000004}, {"input": [-9.5, 24.5], "expected": 24.5}, {"input": [-9.5, 25.0], "expected": 25.0}, {"input": [-9.5, 25.5], "expected": 25.5}, {"input": [-9.5, 26.0], "expected": 26.0}, {"input": [-9.5, 26.5], "expected": 26.5}, {"input": [-9.5, 27.0], "expected": 27.0}, {"input": [-9.5, 27.5], "expected": 27.5}, {"input": [-9.5, 28.0], "expected": 28.0}, {"input": [-9.5, 28.5], "expected": 28.5}, {"input": [-9.5, 29.0], "expected": 29.0}, {"input": [-9.5, 29.5], "expected": 29.5}, {"input": [-9.5, 30.0], "expected": 30.0}, {"input": [-9.5, 30.5], "expected": 30.5}, {"input": [-9.5, 31.0], "expected": 31.0}, {"input": [-9.5, 31.5], "expected": 31.5}, {"input": [-9.5, 32.0], "expected": 32.0}, {"input": [-9.5, 32.5], "expected": 32.5}, {"input": [-9.5, 33.0], "expected": 33.0}, {"input": [-9.5, 33.5], "expected": 33.5}, {"input": [-9.5, 34.0], "expected": 34.0}, {"input": [-9.5, 34.5], "expected": 34.5}, {"input": [-9.5, 35.0], "expected": 35.0}, {"input": [-9.5, 35.5], "expected": 35.5}, {"input": [-9.5, 36.0], "expected": 36.0}, {"input": [-9.5, 36.5], "expected": 36.5}, {"input": [-9.5, 37.0], "expected": 37.0}, {"input": [-9.5, 37.5], "expected": 37.5}, {"input": [-9.5, 38.0], "expected": 38.0}, {"input": [-9.5, 38.5], "expected": 38.5}, {"input": [-9.5, 39.0], "expected": 39.0}, {"input": [-9.5, 39.5], "expected": 39.5}, {"input": [-9.5, 40.0], "expected": 40.0}, {"input": [-9.5, 40.5], "expected": 40.5}, {"input": [-9.5, 41.0], "expected": 41.0}, {"input": [-9.5, 41.5], "expected": 41.5}, {"input": [-9.5, 42.0], "expected": 42.0}, {"input": [-9.5, 42.5], "expected": 42.5}, {"input": [-9.5, 43.0], "expected": 43.0}, {"input": [-9.5, 43.5], "expected": 43.5}, {"input": [-9.5, 44.0], "expected": 44.0}, {"input": [-9.5, 44.5], "expected": 44.5}, {"input": [-9.5, 45.0], "expected": 45.0}, {"input": [-9.5, 45.5], "expected": 45.5}, {"input": [-9.5, 46.0], "expected": 46.0}, {"input": [-9.5, 46.5], "expected": 46.5}, {"input": [-9.5, 47.0], "expected": 47.0}, {"input": [-9.5, 47.5], "expected": 47.5}, {"input": [-9.5, 48.0], "expected": 48.0}, {"input": [-9.5, 48.5], "expected": 48.5}, {"input": [-9.5, 49.0], "expected": 49.0}, {"input": [-9.5, 49.5], "expected": 49.5}, {"input": [-9.5, 50.0], "expected": 50.0}, {"input": [-9.5, 50.5], "expected": 50.5}, {"input": [-9.5, 51.0], "expected": 51.0}, {"input": [-9.5, 51.5], "expected": 51.5}, {"input": [-9.5, 52.0], "expected": 52.0}, {"input": [-9.5, 52.5], "expected": 52.5}, {"input": [-9.5, 53.0], "expected": 53.0}, {"input": [-9.5, 53.5], "expected": 53.5}, {"input": [-9.5, 54.0], "expected": 54.0}, {"input": [-9.5, 54.5], "expected": 54.5}, {"input": [-9.5, 55.0], "expected": 55.0}, {"input": [-9.5, 55.5], "expected": 55.5}, {"input": [-9.5, 56.0], "expected": 56.0}, {"input": [-9.5, 56.5], "expected": 56.5}, {"input": [-9.5, 57.0], "expected": 57.0}, {"input": [-9.5, 57.5], "expected": 57.5}, {"input": [-9.5, 58.0], "expected": 58.0}, {"input": [-9.5, 58.5], "expected": 58.5}, {"input": [-9.5, 59.0], "expected": 59.0}, {"input": [-9.5, 59.5], "expected": 59.5}, {"input": [-9.5, 60.0], "expected": 60.0}, {"input": [-9.5, 60.5], "expected": 60.5}, {"input": [-9.5, 61.0], "expected": 61.0}, {"input": [-9.5, 61.5], "expected": 61.5}, {"input": [-9.5, 62.0], "expected": 62.0}, {"input": [-9.5, 62.5], "expected": 62.5}, {"input": [-9.5, 63.0], "expected": 63.0}, {"input": [-9.5, 63.5], "expected": 63.5}, {"input": [-9.5, 64.0], "expected": 64.0}, {"input": [-9.5, 64.5], "expected": 64.5}, {"input": [-9.5, 65.0], "expected": 65.0}, {"input": [-9.5, 65.5], "expected": 65.5}, {"input": [-9.5, 66.0], "expected": 66.0}, {"input": [-9.5, 66.5], "expected": 66.5}, {"input": [-9.5, 67.0], "expected": 67.0}, {"input": [-9.5, 67.5], "expected": 67.5}, {"input": [-9.5, 68.0], "expected": 68.0}, {"input": [-9.5, 68.5], "expected": 68.5}, {"input": [-9.5, 69.0], "expected": 69.0}, {"input": [-9.5, 69.5], "expected": 69.5}, {"input": [-9.5, 70.0], "expected": 70.0}, {"input": [-9.5, 70.5], "expected": 70.5}, {"input": [-9.5, 71.0], "expected": 71.0}, {"input": [-9.5, 71.5], "expected": 71.5}, {"input": [-9.5, 72.0], "expected": 72.0}, {"input": [-9.5, 72.5], "expected": 72.5}, {"input": [-9.5, 73.0], "expected": 73.0}, {"input": [-9.5, 73.5], "expected": 73.5}, {"input": [-9.5, 74.0], "expected": 74.0}, {"input": [-9.5, 74.5], "expected": 74.5}, {"input": [-9.5, 75.0], "expected": 75.0}, {"input": [-9.5, 75.5], "expected": 75.5}, {"input": [-9.5, 76.0], "expected": 76.0}, {"input": [-9.5, 76.5], "expected": 76.5}, {"input": [-9.5, 77.0], "expected": 77.0}, {"input": [-9.5, 77.5], "expected": 77.5}, {"input": [-9.5, 78.0], "expected": 78.0}, {"input": [-9.5, 78.5], "expected": 78.5}, {"input": [-9.5, 79.0], "expected": 79.0}, {"input": [-9.5, 79.5], "expected": 79.5}, {"input": [-9.5, 80.0], "expected": 80.0}, {"input": [-9.5, 80.5], "expected": 80.5}, {"input": [-9.5, 81.0], "expected": 81.0}, {"input": [-9.5, 81.5], "expected": 81.5}, {"input": [-9.5, 82.0], "expected": 82.0}, {"input": [-9.5, 82.5], "expected": 82.5}, {"input": [-9.5, 83.0], "expected": 83.0}, {"input": [-9.5, 83.5], "expected": 83.5}, {"input": [-9.5, 84.0], "expected": 84.0}, {"input": [-9.5, 84.5], "expected": 84.5}, {"input": [-9.5, 85.0], "expected": 85.0}, {"input": [-9.5, 85.5], "expected": 85.5}, {"input": [-9.5, 86.0], "expected": 86.0}, {"input": [-9.5, 86.5], "expected": 86.5}, {"input": [-9.5, 87.0], "expected": 87.0}, {"input": [-9.5, 87.5], "expected": 87.5}, {"input": [-9.5, 88.0], "expected": 88.0}, {"input": [-9.5, 88.5], "expected": 88.5}, {"input": [-9.5, 89.0], "expected": 89.0}, {"input": [-9.5, 89.5], "expected": 89.5}, {"input": [-9.5, 90.0], "expected": 90.0}, {"input": [-9.5, 90.5], "expected": 90.5}, {"input": [-9.5, 91.0], "expected": 91.0}, {"input": [-9.5, 91.5], "expected": 91.5}, {"input": [-9.5, 92.0], "expected": 92.0}, {"input": [-9.5, 92.5], "expected": 92.5}, {"input": [-9.5, 93.0], "expected": 93.0}, {"input": [-9.5, 93.5], "expected": 93.5}, {"input": [-9.5, 94.0], "expected": 94.0}, {"input": [-9.5, 94.5], "expected": 94.5}, {"input": [-9.5, 95.0], "expected": 95.0}, {"input": [-9.5, 95.5], "expected": 95.5}, {"input": [-9.5, 96.0], "expected": 96.0}, {"input": [-9.5, 96.5], "expected": 96.5}, {"input": [-9.5, 97.0], "expected": 97.0}, {"input": [-9.5, 97.5], "expected": 97.5}, {"input": [-9.5, 98.0], "expected": 98.0}, {"input": [-9.5, 98.5], "expected": 98.5}, {"input": [-9.5, 99.0], "expected": 99.0}, {"input": [-9.5, 99.5], "expected": 99.5}, {"input": [-9.0, -100.0], "expected": -9.0}, {"input": [-9.0, -99.5], "expected": -9.0}, {"input": [-9.0, -99.0], "expected": -9.0}, {"input": [-9.0, -98.5], "expected": -9.0}, {"input": [-9.0, -98.0], "expected": -9.0}, {"input": [-9.0, -97.5], "expected": -9.0}, {"input": [-9.0, -97.0], "expected": -9.0}, {"input": [-9.0, -96.5], "expected": -9.0}, {"input": [-9.0, -96.0], "expected": -9.0}, {"input": [-9.0, -95.5], "expected": -9.0}, {"input": [-9.0, -95.0], "expected": -9.0}, {"input": [-9.0, -94.5], "expected": -9.0}, {"input": [-9.0, -94.0], "expected": -9.0}, {"input": [-9.0, -93.5], "expected": -9.0}, {"input": [-9.0, -93.0], "expected": -9.0}, {"input": [-9.0, -92.5], "expected": -9.0}, {"input": [-9.0, -92.0], "expected": -9.0}, {"input": [-9.0, -91.5], "expected": -9.0}, {"input": [-9.0, -91.0], "expected": -9.0}, {"input": [-9.0, -90.5], "expected": -9.0}, {"input": [-9.0, -90.0], "expected": -9.0}, {"input": [-9.0, -89.5], "expected": -9.0}, {"input": [-9.0, -89.0], "expected": -9.0}, {"input": [-9.0, -88.5], "expected": -9.0}, {"input": [-9.0, -88.0], "expected": -9.0}, {"input": [-9.0, -87.5], "expected": -9.0}, {"input": [-9.0, -87.0], "expected": -9.0}, {"input": [-9.0, -86.5], "expected": -9.0}, {"input": [-9.0, -86.0], "expected": -9.0}, {"input": [-9.0, -85.5], "expected": -9.0}, {"input": [-9.0, -85.0], "expected": -9.0}, {"input": [-9.0, -84.5], "expected": -9.0}, {"input": [-9.0, -84.0], "expected": -9.0}, {"input": [-9.0, -83.5], "expected": -9.0}, {"input": [-9.0, -83.0], "expected": -9.0}, {"input": [-9.0, -82.5], "expected": -9.0}, {"input": [-9.0, -82.0], "expected": -9.0}, {"input": [-9.0, -81.5], "expected": -9.0}, {"input": [-9.0, -81.0], "expected": -9.0}, {"input": [-9.0, -80.5], "expected": -9.0}, {"input": [-9.0, -80.0], "expected": -9.0}, {"input": [-9.0, -79.5], "expected": -9.0}, {"input": [-9.0, -79.0], "expected": -9.0}, {"input": [-9.0, -78.5], "expected": -9.0}, {"input": [-9.0, -78.0], "expected": -9.0}, {"input": [-9.0, -77.5], "expected": -9.0}, {"input": [-9.0, -77.0], "expected": -9.0}, {"input": [-9.0, -76.5], "expected": -9.0}, {"input": [-9.0, -76.0], "expected": -9.0}, {"input": [-9.0, -75.5], "expected": -9.0}, {"input": [-9.0, -75.0], "expected": -9.0}, {"input": [-9.0, -74.5], "expected": -9.0}, {"input": [-9.0, -74.0], "expected": -9.0}, {"input": [-9.0, -73.5], "expected": -9.0}, {"input": [-9.0, -73.0], "expected": -9.0}, {"input": [-9.0, -72.5], "expected": -9.0}, {"input": [-9.0, -72.0], "expected": -9.0}, {"input": [-9.0, -71.5], "expected": -9.0}, {"input": [-9.0, -71.0], "expected": -9.0}, {"input": [-9.0, -70.5], "expected": -9.0}, {"input": [-9.0, -70.0], "expected": -9.0}, {"input": [-9.0, -69.5], "expected": -9.0}, {"input": [-9.0, -69.0], "expected": -9.0}, {"input": [-9.0, -68.5], "expected": -9.0}, {"input": [-9.0, -68.0], "expected": -9.0}, {"input": [-9.0, -67.5], "expected": -9.0}, {"input": [-9.0, -67.0], "expected": -9.0}, {"input": [-9.0, -66.5], "expected": -9.0}, {"input": [-9.0, -66.0], "expected": -9.0}, {"input": [-9.0, -65.5], "expected": -9.0}, {"input": [-9.0, -65.0], "expected": -9.0}, {"input": [-9.0, -64.5], "expected": -9.0}, {"input": [-9.0, -64.0], "expected": -9.0}, {"input": [-9.0, -63.5], "expected": -9.0}, {"input": [-9.0, -63.0], "expected": -9.0}, {"input": [-9.0, -62.5], "expected": -9.0}, {"input": [-9.0, -62.0], "expected": -9.0}, {"input": [-9.0, -61.5], "expected": -9.0}, {"input": [-9.0, -61.0], "expected": -9.0}, {"input": [-9.0, -60.5], "expected": -9.0}, {"input": [-9.0, -60.0], "expected": -9.0}, {"input": [-9.0, -59.5], "expected": -9.0}, {"input": [-9.0, -59.0], "expected": -9.0}, {"input": [-9.0, -58.5], "expected": -9.0}, {"input": [-9.0, -58.0], "expected": -9.0}, {"input": [-9.0, -57.5], "expected": -9.0}, {"input": [-9.0, -57.0], "expected": -9.0}, {"input": [-9.0, -56.5], "expected": -9.0}, {"input": [-9.0, -56.0], "expected": -9.0}, {"input": [-9.0, -55.5], "expected": -9.0}, {"input": [-9.0, -55.0], "expected": -9.0}, {"input": [-9.0, -54.5], "expected": -9.0}, {"input": [-9.0, -54.0], "expected": -9.0}, {"input": [-9.0, -53.5], "expected": -9.0}, {"input": [-9.0, -53.0], "expected": -9.0}, {"input": [-9.0, -52.5], "expected": -9.0}, {"input": [-9.0, -52.0], "expected": -9.0}, {"input": [-9.0, -51.5], "expected": -9.0}, {"input": [-9.0, -51.0], "expected": -9.0}, {"input": [-9.0, -50.5], "expected": -9.0}, {"input": [-9.0, -50.0], "expected": -9.0}, {"input": [-9.0, -49.5], "expected": -9.0}, {"input": [-9.0, -49.0], "expected": -9.0}, {"input": [-9.0, -48.5], "expected": -9.0}, {"input": [-9.0, -48.0], "expected": -9.0}, {"input": [-9.0, -47.5], "expected": -9.0}, {"input": [-9.0, -47.0], "expected": -9.0}, {"input": [-9.0, -46.5], "expected": -9.0}, {"input": [-9.0, -46.0], "expected": -9.0}, {"input": [-9.0, -45.5], "expected": -9.0}, {"input": [-9.0, -45.0], "expected": -9.0}, {"input": [-9.0, -44.5], "expected": -9.0}, {"input": [-9.0, -44.0], "expected": -9.0}, {"input": [-9.0, -43.5], "expected": -8.999999999999998}, {"input": [-9.0, -43.0], "expected": -8.999999999999998}, {"input": [-9.0, -42.5], "expected": -8.999999999999996}, {"input": [-9.0, -42.0], "expected": -8.999999999999995}, {"input": [-9.0, -41.5], "expected": -8.999999999999993}, {"input": [-9.0, -41.0], "expected": -8.999999999999988}, {"input": [-9.0, -40.5], "expected": -8.999999999999979}, {"input": [-9.0, -40.0], "expected": -8.999999999999966}, {"input": [-9.0, -39.5], "expected": -8.999999999999943}, {"input": [-9.0, -39.0], "expected": -8.999999999999906}, {"input": [-9.0, -38.5], "expected": -8.999999999999845}, {"input": [-9.0, -38.0], "expected": -8.999999999999746}, {"input": [-9.0, -37.5], "expected": -8.99999999999958}, {"input": [-9.0, -37.0], "expected": -8.999999999999309}, {"input": [-9.0, -36.5], "expected": -8.99999999999886}, {"input": [-9.0, -36.0], "expected": -8.99999999999812}, {"input": [-9.0, -35.5], "expected": -8.999999999996902}, {"input": [-9.0, -35.0], "expected": -8.999999999994891}, {"input": [-9.0, -34.5], "expected": -8.999999999991577}, {"input": [-9.0, -34.0], "expected": -8.999999999986112}, {"input": [-9.0, -33.5], "expected": -8.999999999977103}, {"input": [-9.0, -33.0], "expected": -8.999999999962249}, {"input": [-9.0, -32.5], "expected": -8.999999999937758}, {"input": [-9.0, -32.0], "expected": -8.999999999897382}, {"input": [-9.0, -31.5], "expected": -8.999999999830811}, {"input": [-9.0, -31.0], "expected": -8.999999999721053}, {"input": [-9.0, -30.5], "expected": -8.999999999540094}, {"input": [-9.0, -30.0], "expected": -8.999999999241744}, {"input": [-9.0, -29.5], "expected": -8.999999998749848}, {"input": [-9.0, -29.0], "expected": -8.999999997938847}, {"input": [-9.0, -28.5], "expected": -8.999999996601732}, {"input": [-9.0, -28.0], "expected": -8.999999994397204}, {"input": [-9.0, -27.5], "expected": -8.99999999076255}, {"input": [-9.0, -27.0], "expected": -8.999999984770021}, {"input": [-9.0, -26.5], "expected": -8.99999997489001}, {"input": [-9.0, -26.0], "expected": -8.999999958600624}, {"input": [-9.0, -25.5], "expected": -8.999999931743968}, {"input": [-9.0, -25.0], "expected": -8.999999887464831}, {"input": [-9.0, -24.5], "expected": -8.999999814460882}, {"input": [-9.0, -24.0], "expected": -8.999999694097726}, {"input": [-9.0, -23.5], "expected": -8.999999495652464}, {"input": [-9.0, -23.0], "expected": -8.999999168471627}, {"input": [-9.0, -22.5], "expected": -8.999998629041853}, {"input": [-9.0, -22.0], "expected": -8.999997739673148}, {"input": [-9.0, -21.5], "expected": -8.999996273353771}, {"input": [-9.0, -21.0], "expected": -8.999993855806522}, {"input": [-9.0, -20.5], "expected": -8.99998986995771}, {"input": [-9.0, -20.0], "expected": -8.999983298438682}, {"input": [-9.0, -19.5], "expected": -8.99997246392977}, {"input": [-9.0, -19.0], "expected": -8.999954601100782}, {"input": [-9.0, -18.5], "expected": -8.999925150971372}, {"input": [-9.0, -18.0], "expected": -8.999876597810276}, {"input": [-9.0, -17.5], "expected": -8.99979655232787}, {"input": [-9.0, -17.0], "expected": -8.999664593627104}, {"input": [-9.0, -16.5], "expected": -8.999447068524638}, {"input": [-9.0, -16.0], "expected": -8.999088533546226}, {"input": [-9.0, -15.5], "expected": -8.998497689840246}, {"input": [-9.0, -15.0], "expected": -8.99752431486227}, {"input": [-9.0, -14.5], "expected": -8.99592155672943}, {"input": [-9.0, -14.0], "expected": -8.993284651510882}, {"input": [-9.0, -13.5], "expected": -8.988952255151407}, {"input": [-9.0, -13.0], "expected": -8.98185007208219}, {"input": [-9.0, -12.5], "expected": -8.97024958172738}, {"input": [-9.0, -12.0], "expected": -8.951412648426258}, {"input": [-9.0, -11.5], "expected": -8.921110265707451}, {"input": [-9.0, -11.0], "expected": -8.873071988957028}, {"input": [-9.0, -10.5], "expected": -8.798586722017248}, {"input": [-9.0, -10.0], "expected": -8.686738312481777}, {"input": [-9.0, -9.5], "expected": -8.525923015819894}, {"input": [-9.0, -9.0], "expected": -8.306852819440055}, {"input": [-9.0, -8.5], "expected": -8.025923015819894}, {"input": [-9.0, -8.0], "expected": -7.686738312481777}, {"input": [-9.0, -7.5], "expected": -7.298586722017248}, {"input": [-9.0, -7.0], "expected": -6.873071988957028}, {"input": [-9.0, -6.5], "expected": -6.42111026570745}, {"input": [-9.0, -6.0], "expected": -5.951412648426258}, {"input": [-9.0, -5.5], "expected": -5.470249581727379}, {"input": [-9.0, -5.0], "expected": -4.9818500720821906}, {"input": [-9.0, -4.5], "expected": -4.488952255151406}, {"input": [-9.0, -4.0], "expected": -3.9932846515108817}, {"input": [-9.0, -3.5], "expected": -3.4959215567294293}, {"input": [-9.0, -3.0], "expected": -2.9975243148622694}, {"input": [-9.0, -2.5], "expected": -2.498497689840246}, {"input": [-9.0, -2.0], "expected": -1.9990885335462258}, {"input": [-9.0, -1.5], "expected": -1.4994470685246393}, {"input": [-9.0, -1.0], "expected": -0.9996645936271042}, {"input": [-9.0, -0.5], "expected": -0.49979655232787057}, {"input": [-9.0, 0.0], "expected": 0.00012340218972325883}, {"input": [-9.0, 0.5], "expected": 0.5000748490286293}, {"input": [-9.0, 1.0], "expected": 1.0000453988992168}, {"input": [-9.0, 1.5], "expected": 1.5000275360702287}, {"input": [-9.0, 2.0], "expected": 2.0000167015613184}, {"input": [-9.0, 2.5], "expected": 2.5000101300422894}, {"input": [-9.0, 3.0], "expected": 3.0000061441934776}, {"input": [-9.0, 3.5], "expected": 3.500003726646228}, {"input": [-9.0, 4.0], "expected": 4.000002260326853}, {"input": [-9.0, 4.5], "expected": 4.500001370958147}, {"input": [-9.0, 5.0], "expected": 5.000000831528373}, {"input": [-9.0, 5.5], "expected": 5.500000504347535}, {"input": [-9.0, 6.0], "expected": 6.000000305902273}, {"input": [-9.0, 6.5], "expected": 6.500000185539119}, {"input": [-9.0, 7.0], "expected": 7.000000112535169}, {"input": [-9.0, 7.5], "expected": 7.500000068256031}, {"input": [-9.0, 8.0], "expected": 8.000000041399376}, {"input": [-9.0, 8.5], "expected": 8.50000002510999}, {"input": [-9.0, 9.0], "expected": 9.000000015229979}, {"input": [-9.0, 9.5], "expected": 9.50000000923745}, {"input": [-9.0, 10.0], "expected": 10.000000005602796}, {"input": [-9.0, 10.5], "expected": 10.500000003398268}, {"input": [-9.0, 11.0], "expected": 11.000000002061153}, {"input": [-9.0, 11.5], "expected": 11.500000001250152}, {"input": [-9.0, 12.0], "expected": 12.000000000758256}, {"input": [-9.0, 12.5], "expected": 12.500000000459906}, {"input": [-9.0, 13.0], "expected": 13.000000000278947}, {"input": [-9.0, 13.5], "expected": 13.500000000169189}, {"input": [-9.0, 14.0], "expected": 14.000000000102618}, {"input": [-9.0, 14.5], "expected": 14.500000000062242}, {"input": [-9.0, 15.0], "expected": 15.000000000037751}, {"input": [-9.0, 15.5], "expected": 15.500000000022897}, {"input": [-9.0, 16.0], "expected": 16.000000000013888}, {"input": [-9.0, 16.5], "expected": 16.500000000008423}, {"input": [-9.0, 17.0], "expected": 17.00000000000511}, {"input": [-9.0, 17.5], "expected": 17.500000000003098}, {"input": [-9.0, 18.0], "expected": 18.00000000000188}, {"input": [-9.0, 18.5], "expected": 18.50000000000114}, {"input": [-9.0, 19.0], "expected": 19.000000000000693}, {"input": [-9.0, 19.5], "expected": 19.50000000000042}, {"input": [-9.0, 20.0], "expected": 20.000000000000256}, {"input": [-9.0, 20.5], "expected": 20.500000000000153}, {"input": [-9.0, 21.0], "expected": 21.000000000000092}, {"input": [-9.0, 21.5], "expected": 21.500000000000057}, {"input": [-9.0, 22.0], "expected": 22.000000000000036}, {"input": [-9.0, 22.5], "expected": 22.50000000000002}, {"input": [-9.0, 23.0], "expected": 23.000000000000014}, {"input": [-9.0, 23.5], "expected": 23.500000000000007}, {"input": [-9.0, 24.0], "expected": 24.000000000000004}, {"input": [-9.0, 24.5], "expected": 24.500000000000004}, {"input": [-9.0, 25.0], "expected": 25.0}, {"input": [-9.0, 25.5], "expected": 25.5}, {"input": [-9.0, 26.0], "expected": 26.0}, {"input": [-9.0, 26.5], "expected": 26.5}, {"input": [-9.0, 27.0], "expected": 27.0}, {"input": [-9.0, 27.5], "expected": 27.5}, {"input": [-9.0, 28.0], "expected": 28.0}, {"input": [-9.0, 28.5], "expected": 28.5}, {"input": [-9.0, 29.0], "expected": 29.0}, {"input": [-9.0, 29.5], "expected": 29.5}, {"input": [-9.0, 30.0], "expected": 30.0}, {"input": [-9.0, 30.5], "expected": 30.5}, {"input": [-9.0, 31.0], "expected": 31.0}, {"input": [-9.0, 31.5], "expected": 31.5}, {"input": [-9.0, 32.0], "expected": 32.0}, {"input": [-9.0, 32.5], "expected": 32.5}, {"input": [-9.0, 33.0], "expected": 33.0}, {"input": [-9.0, 33.5], "expected": 33.5}, {"input": [-9.0, 34.0], "expected": 34.0}, {"input": [-9.0, 34.5], "expected": 34.5}, {"input": [-9.0, 35.0], "expected": 35.0}, {"input": [-9.0, 35.5], "expected": 35.5}, {"input": [-9.0, 36.0], "expected": 36.0}, {"input": [-9.0, 36.5], "expected": 36.5}, {"input": [-9.0, 37.0], "expected": 37.0}, {"input": [-9.0, 37.5], "expected": 37.5}, {"input": [-9.0, 38.0], "expected": 38.0}, {"input": [-9.0, 38.5], "expected": 38.5}, {"input": [-9.0, 39.0], "expected": 39.0}, {"input": [-9.0, 39.5], "expected": 39.5}, {"input": [-9.0, 40.0], "expected": 40.0}, {"input": [-9.0, 40.5], "expected": 40.5}, {"input": [-9.0, 41.0], "expected": 41.0}, {"input": [-9.0, 41.5], "expected": 41.5}, {"input": [-9.0, 42.0], "expected": 42.0}, {"input": [-9.0, 42.5], "expected": 42.5}, {"input": [-9.0, 43.0], "expected": 43.0}, {"input": [-9.0, 43.5], "expected": 43.5}, {"input": [-9.0, 44.0], "expected": 44.0}, {"input": [-9.0, 44.5], "expected": 44.5}, {"input": [-9.0, 45.0], "expected": 45.0}, {"input": [-9.0, 45.5], "expected": 45.5}, {"input": [-9.0, 46.0], "expected": 46.0}, {"input": [-9.0, 46.5], "expected": 46.5}, {"input": [-9.0, 47.0], "expected": 47.0}, {"input": [-9.0, 47.5], "expected": 47.5}, {"input": [-9.0, 48.0], "expected": 48.0}, {"input": [-9.0, 48.5], "expected": 48.5}, {"input": [-9.0, 49.0], "expected": 49.0}, {"input": [-9.0, 49.5], "expected": 49.5}, {"input": [-9.0, 50.0], "expected": 50.0}, {"input": [-9.0, 50.5], "expected": 50.5}, {"input": [-9.0, 51.0], "expected": 51.0}, {"input": [-9.0, 51.5], "expected": 51.5}, {"input": [-9.0, 52.0], "expected": 52.0}, {"input": [-9.0, 52.5], "expected": 52.5}, {"input": [-9.0, 53.0], "expected": 53.0}, {"input": [-9.0, 53.5], "expected": 53.5}, {"input": [-9.0, 54.0], "expected": 54.0}, {"input": [-9.0, 54.5], "expected": 54.5}, {"input": [-9.0, 55.0], "expected": 55.0}, {"input": [-9.0, 55.5], "expected": 55.5}, {"input": [-9.0, 56.0], "expected": 56.0}, {"input": [-9.0, 56.5], "expected": 56.5}, {"input": [-9.0, 57.0], "expected": 57.0}, {"input": [-9.0, 57.5], "expected": 57.5}, {"input": [-9.0, 58.0], "expected": 58.0}, {"input": [-9.0, 58.5], "expected": 58.5}, {"input": [-9.0, 59.0], "expected": 59.0}, {"input": [-9.0, 59.5], "expected": 59.5}, {"input": [-9.0, 60.0], "expected": 60.0}, {"input": [-9.0, 60.5], "expected": 60.5}, {"input": [-9.0, 61.0], "expected": 61.0}, {"input": [-9.0, 61.5], "expected": 61.5}, {"input": [-9.0, 62.0], "expected": 62.0}, {"input": [-9.0, 62.5], "expected": 62.5}, {"input": [-9.0, 63.0], "expected": 63.0}, {"input": [-9.0, 63.5], "expected": 63.5}, {"input": [-9.0, 64.0], "expected": 64.0}, {"input": [-9.0, 64.5], "expected": 64.5}, {"input": [-9.0, 65.0], "expected": 65.0}, {"input": [-9.0, 65.5], "expected": 65.5}, {"input": [-9.0, 66.0], "expected": 66.0}, {"input": [-9.0, 66.5], "expected": 66.5}, {"input": [-9.0, 67.0], "expected": 67.0}, {"input": [-9.0, 67.5], "expected": 67.5}, {"input": [-9.0, 68.0], "expected": 68.0}, {"input": [-9.0, 68.5], "expected": 68.5}, {"input": [-9.0, 69.0], "expected": 69.0}, {"input": [-9.0, 69.5], "expected": 69.5}, {"input": [-9.0, 70.0], "expected": 70.0}, {"input": [-9.0, 70.5], "expected": 70.5}, {"input": [-9.0, 71.0], "expected": 71.0}, {"input": [-9.0, 71.5], "expected": 71.5}, {"input": [-9.0, 72.0], "expected": 72.0}, {"input": [-9.0, 72.5], "expected": 72.5}, {"input": [-9.0, 73.0], "expected": 73.0}, {"input": [-9.0, 73.5], "expected": 73.5}, {"input": [-9.0, 74.0], "expected": 74.0}, {"input": [-9.0, 74.5], "expected": 74.5}, {"input": [-9.0, 75.0], "expected": 75.0}, {"input": [-9.0, 75.5], "expected": 75.5}, {"input": [-9.0, 76.0], "expected": 76.0}, {"input": [-9.0, 76.5], "expected": 76.5}, {"input": [-9.0, 77.0], "expected": 77.0}, {"input": [-9.0, 77.5], "expected": 77.5}, {"input": [-9.0, 78.0], "expected": 78.0}, {"input": [-9.0, 78.5], "expected": 78.5}, {"input": [-9.0, 79.0], "expected": 79.0}, {"input": [-9.0, 79.5], "expected": 79.5}, {"input": [-9.0, 80.0], "expected": 80.0}, {"input": [-9.0, 80.5], "expected": 80.5}, {"input": [-9.0, 81.0], "expected": 81.0}, {"input": [-9.0, 81.5], "expected": 81.5}, {"input": [-9.0, 82.0], "expected": 82.0}, {"input": [-9.0, 82.5], "expected": 82.5}, {"input": [-9.0, 83.0], "expected": 83.0}, {"input": [-9.0, 83.5], "expected": 83.5}, {"input": [-9.0, 84.0], "expected": 84.0}, {"input": [-9.0, 84.5], "expected": 84.5}, {"input": [-9.0, 85.0], "expected": 85.0}, {"input": [-9.0, 85.5], "expected": 85.5}, {"input": [-9.0, 86.0], "expected": 86.0}, {"input": [-9.0, 86.5], "expected": 86.5}, {"input": [-9.0, 87.0], "expected": 87.0}, {"input": [-9.0, 87.5], "expected": 87.5}, {"input": [-9.0, 88.0], "expected": 88.0}, {"input": [-9.0, 88.5], "expected": 88.5}, {"input": [-9.0, 89.0], "expected": 89.0}, {"input": [-9.0, 89.5], "expected": 89.5}, {"input": [-9.0, 90.0], "expected": 90.0}, {"input": [-9.0, 90.5], "expected": 90.5}, {"input": [-9.0, 91.0], "expected": 91.0}, {"input": [-9.0, 91.5], "expected": 91.5}, {"input": [-9.0, 92.0], "expected": 92.0}, {"input": [-9.0, 92.5], "expected": 92.5}, {"input": [-9.0, 93.0], "expected": 93.0}, {"input": [-9.0, 93.5], "expected": 93.5}, {"input": [-9.0, 94.0], "expected": 94.0}, {"input": [-9.0, 94.5], "expected": 94.5}, {"input": [-9.0, 95.0], "expected": 95.0}, {"input": [-9.0, 95.5], "expected": 95.5}, {"input": [-9.0, 96.0], "expected": 96.0}, {"input": [-9.0, 96.5], "expected": 96.5}, {"input": [-9.0, 97.0], "expected": 97.0}, {"input": [-9.0, 97.5], "expected": 97.5}, {"input": [-9.0, 98.0], "expected": 98.0}, {"input": [-9.0, 98.5], "expected": 98.5}, {"input": [-9.0, 99.0], "expected": 99.0}, {"input": [-9.0, 99.5], "expected": 99.5}, {"input": [-8.5, -100.0], "expected": -8.5}, {"input": [-8.5, -99.5], "expected": -8.5}, {"input": [-8.5, -99.0], "expected": -8.5}, {"input": [-8.5, -98.5], "expected": -8.5}, {"input": [-8.5, -98.0], "expected": -8.5}, {"input": [-8.5, -97.5], "expected": -8.5}, {"input": [-8.5, -97.0], "expected": -8.5}, {"input": [-8.5, -96.5], "expected": -8.5}, {"input": [-8.5, -96.0], "expected": -8.5}, {"input": [-8.5, -95.5], "expected": -8.5}, {"input": [-8.5, -95.0], "expected": -8.5}, {"input": [-8.5, -94.5], "expected": -8.5}, {"input": [-8.5, -94.0], "expected": -8.5}, {"input": [-8.5, -93.5], "expected": -8.5}, {"input": [-8.5, -93.0], "expected": -8.5}, {"input": [-8.5, -92.5], "expected": -8.5}, {"input": [-8.5, -92.0], "expected": -8.5}, {"input": [-8.5, -91.5], "expected": -8.5}, {"input": [-8.5, -91.0], "expected": -8.5}, {"input": [-8.5, -90.5], "expected": -8.5}, {"input": [-8.5, -90.0], "expected": -8.5}, {"input": [-8.5, -89.5], "expected": -8.5}, {"input": [-8.5, -89.0], "expected": -8.5}, {"input": [-8.5, -88.5], "expected": -8.5}, {"input": [-8.5, -88.0], "expected": -8.5}, {"input": [-8.5, -87.5], "expected": -8.5}, {"input": [-8.5, -87.0], "expected": -8.5}, {"input": [-8.5, -86.5], "expected": -8.5}, {"input": [-8.5, -86.0], "expected": -8.5}, {"input": [-8.5, -85.5], "expected": -8.5}, {"input": [-8.5, -85.0], "expected": -8.5}, {"input": [-8.5, -84.5], "expected": -8.5}, {"input": [-8.5, -84.0], "expected": -8.5}, {"input": [-8.5, -83.5], "expected": -8.5}, {"input": [-8.5, -83.0], "expected": -8.5}, {"input": [-8.5, -82.5], "expected": -8.5}, {"input": [-8.5, -82.0], "expected": -8.5}, {"input": [-8.5, -81.5], "expected": -8.5}, {"input": [-8.5, -81.0], "expected": -8.5}, {"input": [-8.5, -80.5], "expected": -8.5}, {"input": [-8.5, -80.0], "expected": -8.5}, {"input": [-8.5, -79.5], "expected": -8.5}, {"input": [-8.5, -79.0], "expected": -8.5}, {"input": [-8.5, -78.5], "expected": -8.5}, {"input": [-8.5, -78.0], "expected": -8.5}, {"input": [-8.5, -77.5], "expected": -8.5}, {"input": [-8.5, -77.0], "expected": -8.5}, {"input": [-8.5, -76.5], "expected": -8.5}, {"input": [-8.5, -76.0], "expected": -8.5}, {"input": [-8.5, -75.5], "expected": -8.5}, {"input": [-8.5, -75.0], "expected": -8.5}, {"input": [-8.5, -74.5], "expected": -8.5}, {"input": [-8.5, -74.0], "expected": -8.5}, {"input": [-8.5, -73.5], "expected": -8.5}, {"input": [-8.5, -73.0], "expected": -8.5}, {"input": [-8.5, -72.5], "expected": -8.5}, {"input": [-8.5, -72.0], "expected": -8.5}, {"input": [-8.5, -71.5], "expected": -8.5}, {"input": [-8.5, -71.0], "expected": -8.5}, {"input": [-8.5, -70.5], "expected": -8.5}, {"input": [-8.5, -70.0], "expected": -8.5}, {"input": [-8.5, -69.5], "expected": -8.5}, {"input": [-8.5, -69.0], "expected": -8.5}, {"input": [-8.5, -68.5], "expected": -8.5}, {"input": [-8.5, -68.0], "expected": -8.5}, {"input": [-8.5, -67.5], "expected": -8.5}, {"input": [-8.5, -67.0], "expected": -8.5}, {"input": [-8.5, -66.5], "expected": -8.5}, {"input": [-8.5, -66.0], "expected": -8.5}, {"input": [-8.5, -65.5], "expected": -8.5}, {"input": [-8.5, -65.0], "expected": -8.5}, {"input": [-8.5, -64.5], "expected": -8.5}, {"input": [-8.5, -64.0], "expected": -8.5}, {"input": [-8.5, -63.5], "expected": -8.5}, {"input": [-8.5, -63.0], "expected": -8.5}, {"input": [-8.5, -62.5], "expected": -8.5}, {"input": [-8.5, -62.0], "expected": -8.5}, {"input": [-8.5, -61.5], "expected": -8.5}, {"input": [-8.5, -61.0], "expected": -8.5}, {"input": [-8.5, -60.5], "expected": -8.5}, {"input": [-8.5, -60.0], "expected": -8.5}, {"input": [-8.5, -59.5], "expected": -8.5}, {"input": [-8.5, -59.0], "expected": -8.5}, {"input": [-8.5, -58.5], "expected": -8.5}, {"input": [-8.5, -58.0], "expected": -8.5}, {"input": [-8.5, -57.5], "expected": -8.5}, {"input": [-8.5, -57.0], "expected": -8.5}, {"input": [-8.5, -56.5], "expected": -8.5}, {"input": [-8.5, -56.0], "expected": -8.5}, {"input": [-8.5, -55.5], "expected": -8.5}, {"input": [-8.5, -55.0], "expected": -8.5}, {"input": [-8.5, -54.5], "expected": -8.5}, {"input": [-8.5, -54.0], "expected": -8.5}, {"input": [-8.5, -53.5], "expected": -8.5}, {"input": [-8.5, -53.0], "expected": -8.5}, {"input": [-8.5, -52.5], "expected": -8.5}, {"input": [-8.5, -52.0], "expected": -8.5}, {"input": [-8.5, -51.5], "expected": -8.5}, {"input": [-8.5, -51.0], "expected": -8.5}, {"input": [-8.5, -50.5], "expected": -8.5}, {"input": [-8.5, -50.0], "expected": -8.5}, {"input": [-8.5, -49.5], "expected": -8.5}, {"input": [-8.5, -49.0], "expected": -8.5}, {"input": [-8.5, -48.5], "expected": -8.5}, {"input": [-8.5, -48.0], "expected": -8.5}, {"input": [-8.5, -47.5], "expected": -8.5}, {"input": [-8.5, -47.0], "expected": -8.5}, {"input": [-8.5, -46.5], "expected": -8.5}, {"input": [-8.5, -46.0], "expected": -8.5}, {"input": [-8.5, -45.5], "expected": -8.5}, {"input": [-8.5, -45.0], "expected": -8.5}, {"input": [-8.5, -44.5], "expected": -8.5}, {"input": [-8.5, -44.0], "expected": -8.5}, {"input": [-8.5, -43.5], "expected": -8.5}, {"input": [-8.5, -43.0], "expected": -8.499999999999998}, {"input": [-8.5, -42.5], "expected": -8.499999999999998}, {"input": [-8.5, -42.0], "expected": -8.499999999999996}, {"input": [-8.5, -41.5], "expected": -8.499999999999995}, {"input": [-8.5, -41.0], "expected": -8.499999999999993}, {"input": [-8.5, -40.5], "expected": -8.499999999999988}, {"input": [-8.5, -40.0], "expected": -8.499999999999979}, {"input": [-8.5, -39.5], "expected": -8.499999999999966}, {"input": [-8.5, -39.0], "expected": -8.499999999999943}, {"input": [-8.5, -38.5], "expected": -8.499999999999906}, {"input": [-8.5, -38.0], "expected": -8.499999999999845}, {"input": [-8.5, -37.5], "expected": -8.499999999999746}, {"input": [-8.5, -37.0], "expected": -8.49999999999958}, {"input": [-8.5, -36.5], "expected": -8.499999999999309}, {"input": [-8.5, -36.0], "expected": -8.49999999999886}, {"input": [-8.5, -35.5], "expected": -8.49999999999812}, {"input": [-8.5, -35.0], "expected": -8.499999999996902}, {"input": [-8.5, -34.5], "expected": -8.499999999994891}, {"input": [-8.5, -34.0], "expected": -8.499999999991577}, {"input": [-8.5, -33.5], "expected": -8.499999999986112}, {"input": [-8.5, -33.0], "expected": -8.499999999977103}, {"input": [-8.5, -32.5], "expected": -8.499999999962249}, {"input": [-8.5, -32.0], "expected": -8.499999999937758}, {"input": [-8.5, -31.5], "expected": -8.499999999897382}, {"input": [-8.5, -31.0], "expected": -8.499999999830811}, {"input": [-8.5, -30.5], "expected": -8.499999999721053}, {"input": [-8.5, -30.0], "expected": -8.499999999540094}, {"input": [-8.5, -29.5], "expected": -8.499999999241744}, {"input": [-8.5, -29.0], "expected": -8.499999998749848}, {"input": [-8.5, -28.5], "expected": -8.499999997938847}, {"input": [-8.5, -28.0], "expected": -8.499999996601732}, {"input": [-8.5, -27.5], "expected": -8.499999994397204}, {"input": [-8.5, -27.0], "expected": -8.49999999076255}, {"input": [-8.5, -26.5], "expected": -8.499999984770021}, {"input": [-8.5, -26.0], "expected": -8.49999997489001}, {"input": [-8.5, -25.5], "expected": -8.499999958600624}, {"input": [-8.5, -25.0], "expected": -8.499999931743968}, {"input": [-8.5, -24.5], "expected": -8.499999887464831}, {"input": [-8.5, -24.0], "expected": -8.499999814460882}, {"input": [-8.5, -23.5], "expected": -8.499999694097726}, {"input": [-8.5, -23.0], "expected": -8.499999495652464}, {"input": [-8.5, -22.5], "expected": -8.499999168471627}, {"input": [-8.5, -22.0], "expected": -8.499998629041853}, {"input": [-8.5, -21.5], "expected": -8.499997739673148}, {"input": [-8.5, -21.0], "expected": -8.499996273353771}, {"input": [-8.5, -20.5], "expected": -8.499993855806522}, {"input": [-8.5, -20.0], "expected": -8.49998986995771}, {"input": [-8.5, -19.5], "expected": -8.499983298438682}, {"input": [-8.5, -19.0], "expected": -8.49997246392977}, {"input": [-8.5, -18.5], "expected": -8.499954601100782}, {"input": [-8.5, -18.0], "expected": -8.499925150971372}, {"input": [-8.5, -17.5], "expected": -8.499876597810276}, {"input": [-8.5, -17.0], "expected": -8.49979655232787}, {"input": [-8.5, -16.5], "expected": -8.499664593627104}, {"input": [-8.5, -16.0], "expected": -8.499447068524638}, {"input": [-8.5, -15.5], "expected": -8.499088533546226}, {"input": [-8.5, -15.0], "expected": -8.498497689840246}, {"input": [-8.5, -14.5], "expected": -8.49752431486227}, {"input": [-8.5, -14.0], "expected": -8.49592155672943}, {"input": [-8.5, -13.5], "expected": -8.493284651510882}, {"input": [-8.5, -13.0], "expected": -8.488952255151407}, {"input": [-8.5, -12.5], "expected": -8.48185007208219}, {"input": [-8.5, -12.0], "expected": -8.47024958172738}, {"input": [-8.5, -11.5], "expected": -8.451412648426258}, {"input": [-8.5, -11.0], "expected": -8.421110265707451}, {"input": [-8.5, -10.5], "expected": -8.373071988957028}, {"input": [-8.5, -10.0], "expected": -8.298586722017248}, {"input": [-8.5, -9.5], "expected": -8.186738312481777}, {"input": [-8.5, -9.0], "expected": -8.025923015819894}, {"input": [-8.5, -8.5], "expected": -7.806852819440055}, {"input": [-8.5, -8.0], "expected": -7.5259230158198935}, {"input": [-8.5, -7.5], "expected": -7.186738312481777}, {"input": [-8.5, -7.0], "expected": -6.798586722017248}, {"input": [-8.5, -6.5], "expected": -6.373071988957028}, {"input": [-8.5, -6.0], "expected": -5.92111026570745}, {"input": [-8.5, -5.5], "expected": -5.451412648426258}, {"input": [-8.5, -5.0], "expected": -4.970249581727379}, {"input": [-8.5, -4.5], "expected": -4.4818500720821906}, {"input": [-8.5, -4.0], "expected": -3.988952255151406}, {"input": [-8.5, -3.5], "expected": -3.4932846515108817}, {"input": [-8.5, -3.0], "expected": -2.9959215567294293}, {"input": [-8.5, -2.5], "expected": -2.4975243148622694}, {"input": [-8.5, -2.0], "expected": -1.9984976898402458}, {"input": [-8.5, -1.5], "expected": -1.4990885335462258}, {"input": [-8.5, -1.0], "expected": -0.9994470685246392}, {"input": [-8.5, -0.5], "expected": -0.49966459362710425}, {"input": [-8.5, 0.0], "expected": 0.00020344767212944308}, {"input": [-8.5, 0.5], "expected": 0.5001234021897233}, {"input": [-8.5, 1.0], "expected": 1.0000748490286293}, {"input": [-8.5, 1.5], "expected": 1.5000453988992168}, {"input": [-8.5, 2.0], "expected": 2.000027536070229}, {"input": [-8.5, 2.5], "expected": 2.5000167015613184}, {"input": [-8.5, 3.0], "expected": 3.0000101300422894}, {"input": [-8.5, 3.5], "expected": 3.5000061441934776}, {"input": [-8.5, 4.0], "expected": 4.000003726646228}, {"input": [-8.5, 4.5], "expected": 4.500002260326853}, {"input": [-8.5, 5.0], "expected": 5.000001370958147}, {"input": [-8.5, 5.5], "expected": 5.500000831528373}, {"input": [-8.5, 6.0], "expected": 6.000000504347535}, {"input": [-8.5, 6.5], "expected": 6.500000305902273}, {"input": [-8.5, 7.0], "expected": 7.000000185539119}, {"input": [-8.5, 7.5], "expected": 7.500000112535169}, {"input": [-8.5, 8.0], "expected": 8.000000068256032}, {"input": [-8.5, 8.5], "expected": 8.500000041399376}, {"input": [-8.5, 9.0], "expected": 9.00000002510999}, {"input": [-8.5, 9.5], "expected": 9.500000015229979}, {"input": [-8.5, 10.0], "expected": 10.00000000923745}, {"input": [-8.5, 10.5], "expected": 10.500000005602796}, {"input": [-8.5, 11.0], "expected": 11.000000003398268}, {"input": [-8.5, 11.5], "expected": 11.500000002061153}, {"input": [-8.5, 12.0], "expected": 12.000000001250152}, {"input": [-8.5, 12.5], "expected": 12.500000000758256}, {"input": [-8.5, 13.0], "expected": 13.000000000459906}, {"input": [-8.5, 13.5], "expected": 13.500000000278947}, {"input": [-8.5, 14.0], "expected": 14.000000000169189}, {"input": [-8.5, 14.5], "expected": 14.500000000102618}, {"input": [-8.5, 15.0], "expected": 15.000000000062242}, {"input": [-8.5, 15.5], "expected": 15.500000000037751}, {"input": [-8.5, 16.0], "expected": 16.000000000022897}, {"input": [-8.5, 16.5], "expected": 16.500000000013888}, {"input": [-8.5, 17.0], "expected": 17.000000000008423}, {"input": [-8.5, 17.5], "expected": 17.50000000000511}, {"input": [-8.5, 18.0], "expected": 18.000000000003098}, {"input": [-8.5, 18.5], "expected": 18.50000000000188}, {"input": [-8.5, 19.0], "expected": 19.00000000000114}, {"input": [-8.5, 19.5], "expected": 19.500000000000693}, {"input": [-8.5, 20.0], "expected": 20.00000000000042}, {"input": [-8.5, 20.5], "expected": 20.500000000000256}, {"input": [-8.5, 21.0], "expected": 21.000000000000153}, {"input": [-8.5, 21.5], "expected": 21.500000000000092}, {"input": [-8.5, 22.0], "expected": 22.000000000000057}, {"input": [-8.5, 22.5], "expected": 22.500000000000036}, {"input": [-8.5, 23.0], "expected": 23.00000000000002}, {"input": [-8.5, 23.5], "expected": 23.500000000000014}, {"input": [-8.5, 24.0], "expected": 24.000000000000007}, {"input": [-8.5, 24.5], "expected": 24.500000000000004}, {"input": [-8.5, 25.0], "expected": 25.000000000000004}, {"input": [-8.5, 25.5], "expected": 25.5}, {"input": [-8.5, 26.0], "expected": 26.0}, {"input": [-8.5, 26.5], "expected": 26.5}, {"input": [-8.5, 27.0], "expected": 27.0}, {"input": [-8.5, 27.5], "expected": 27.5}, {"input": [-8.5, 28.0], "expected": 28.0}, {"input": [-8.5, 28.5], "expected": 28.5}, {"input": [-8.5, 29.0], "expected": 29.0}, {"input": [-8.5, 29.5], "expected": 29.5}, {"input": [-8.5, 30.0], "expected": 30.0}, {"input": [-8.5, 30.5], "expected": 30.5}, {"input": [-8.5, 31.0], "expected": 31.0}, {"input": [-8.5, 31.5], "expected": 31.5}, {"input": [-8.5, 32.0], "expected": 32.0}, {"input": [-8.5, 32.5], "expected": 32.5}, {"input": [-8.5, 33.0], "expected": 33.0}, {"input": [-8.5, 33.5], "expected": 33.5}, {"input": [-8.5, 34.0], "expected": 34.0}, {"input": [-8.5, 34.5], "expected": 34.5}, {"input": [-8.5, 35.0], "expected": 35.0}, {"input": [-8.5, 35.5], "expected": 35.5}, {"input": [-8.5, 36.0], "expected": 36.0}, {"input": [-8.5, 36.5], "expected": 36.5}, {"input": [-8.5, 37.0], "expected": 37.0}, {"input": [-8.5, 37.5], "expected": 37.5}, {"input": [-8.5, 38.0], "expected": 38.0}, {"input": [-8.5, 38.5], "expected": 38.5}, {"input": [-8.5, 39.0], "expected": 39.0}, {"input": [-8.5, 39.5], "expected": 39.5}, {"input": [-8.5, 40.0], "expected": 40.0}, {"input": [-8.5, 40.5], "expected": 40.5}, {"input": [-8.5, 41.0], "expected": 41.0}, {"input": [-8.5, 41.5], "expected": 41.5}, {"input": [-8.5, 42.0], "expected": 42.0}, {"input": [-8.5, 42.5], "expected": 42.5}, {"input": [-8.5, 43.0], "expected": 43.0}, {"input": [-8.5, 43.5], "expected": 43.5}, {"input": [-8.5, 44.0], "expected": 44.0}, {"input": [-8.5, 44.5], "expected": 44.5}, {"input": [-8.5, 45.0], "expected": 45.0}, {"input": [-8.5, 45.5], "expected": 45.5}, {"input": [-8.5, 46.0], "expected": 46.0}, {"input": [-8.5, 46.5], "expected": 46.5}, {"input": [-8.5, 47.0], "expected": 47.0}, {"input": [-8.5, 47.5], "expected": 47.5}, {"input": [-8.5, 48.0], "expected": 48.0}, {"input": [-8.5, 48.5], "expected": 48.5}, {"input": [-8.5, 49.0], "expected": 49.0}, {"input": [-8.5, 49.5], "expected": 49.5}, {"input": [-8.5, 50.0], "expected": 50.0}, {"input": [-8.5, 50.5], "expected": 50.5}, {"input": [-8.5, 51.0], "expected": 51.0}, {"input": [-8.5, 51.5], "expected": 51.5}, {"input": [-8.5, 52.0], "expected": 52.0}, {"input": [-8.5, 52.5], "expected": 52.5}, {"input": [-8.5, 53.0], "expected": 53.0}, {"input": [-8.5, 53.5], "expected": 53.5}, {"input": [-8.5, 54.0], "expected": 54.0}, {"input": [-8.5, 54.5], "expected": 54.5}, {"input": [-8.5, 55.0], "expected": 55.0}, {"input": [-8.5, 55.5], "expected": 55.5}, {"input": [-8.5, 56.0], "expected": 56.0}, {"input": [-8.5, 56.5], "expected": 56.5}, {"input": [-8.5, 57.0], "expected": 57.0}, {"input": [-8.5, 57.5], "expected": 57.5}, {"input": [-8.5, 58.0], "expected": 58.0}, {"input": [-8.5, 58.5], "expected": 58.5}, {"input": [-8.5, 59.0], "expected": 59.0}, {"input": [-8.5, 59.5], "expected": 59.5}, {"input": [-8.5, 60.0], "expected": 60.0}, {"input": [-8.5, 60.5], "expected": 60.5}, {"input": [-8.5, 61.0], "expected": 61.0}, {"input": [-8.5, 61.5], "expected": 61.5}, {"input": [-8.5, 62.0], "expected": 62.0}, {"input": [-8.5, 62.5], "expected": 62.5}, {"input": [-8.5, 63.0], "expected": 63.0}, {"input": [-8.5, 63.5], "expected": 63.5}, {"input": [-8.5, 64.0], "expected": 64.0}, {"input": [-8.5, 64.5], "expected": 64.5}, {"input": [-8.5, 65.0], "expected": 65.0}, {"input": [-8.5, 65.5], "expected": 65.5}, {"input": [-8.5, 66.0], "expected": 66.0}, {"input": [-8.5, 66.5], "expected": 66.5}, {"input": [-8.5, 67.0], "expected": 67.0}, {"input": [-8.5, 67.5], "expected": 67.5}, {"input": [-8.5, 68.0], "expected": 68.0}, {"input": [-8.5, 68.5], "expected": 68.5}, {"input": [-8.5, 69.0], "expected": 69.0}, {"input": [-8.5, 69.5], "expected": 69.5}, {"input": [-8.5, 70.0], "expected": 70.0}, {"input": [-8.5, 70.5], "expected": 70.5}, {"input": [-8.5, 71.0], "expected": 71.0}, {"input": [-8.5, 71.5], "expected": 71.5}, {"input": [-8.5, 72.0], "expected": 72.0}, {"input": [-8.5, 72.5], "expected": 72.5}, {"input": [-8.5, 73.0], "expected": 73.0}, {"input": [-8.5, 73.5], "expected": 73.5}, {"input": [-8.5, 74.0], "expected": 74.0}, {"input": [-8.5, 74.5], "expected": 74.5}, {"input": [-8.5, 75.0], "expected": 75.0}, {"input": [-8.5, 75.5], "expected": 75.5}, {"input": [-8.5, 76.0], "expected": 76.0}, {"input": [-8.5, 76.5], "expected": 76.5}, {"input": [-8.5, 77.0], "expected": 77.0}, {"input": [-8.5, 77.5], "expected": 77.5}, {"input": [-8.5, 78.0], "expected": 78.0}, {"input": [-8.5, 78.5], "expected": 78.5}, {"input": [-8.5, 79.0], "expected": 79.0}, {"input": [-8.5, 79.5], "expected": 79.5}, {"input": [-8.5, 80.0], "expected": 80.0}, {"input": [-8.5, 80.5], "expected": 80.5}, {"input": [-8.5, 81.0], "expected": 81.0}, {"input": [-8.5, 81.5], "expected": 81.5}, {"input": [-8.5, 82.0], "expected": 82.0}, {"input": [-8.5, 82.5], "expected": 82.5}, {"input": [-8.5, 83.0], "expected": 83.0}, {"input": [-8.5, 83.5], "expected": 83.5}, {"input": [-8.5, 84.0], "expected": 84.0}, {"input": [-8.5, 84.5], "expected": 84.5}, {"input": [-8.5, 85.0], "expected": 85.0}, {"input": [-8.5, 85.5], "expected": 85.5}, {"input": [-8.5, 86.0], "expected": 86.0}, {"input": [-8.5, 86.5], "expected": 86.5}, {"input": [-8.5, 87.0], "expected": 87.0}, {"input": [-8.5, 87.5], "expected": 87.5}, {"input": [-8.5, 88.0], "expected": 88.0}, {"input": [-8.5, 88.5], "expected": 88.5}, {"input": [-8.5, 89.0], "expected": 89.0}, {"input": [-8.5, 89.5], "expected": 89.5}, {"input": [-8.5, 90.0], "expected": 90.0}, {"input": [-8.5, 90.5], "expected": 90.5}, {"input": [-8.5, 91.0], "expected": 91.0}, {"input": [-8.5, 91.5], "expected": 91.5}, {"input": [-8.5, 92.0], "expected": 92.0}, {"input": [-8.5, 92.5], "expected": 92.5}, {"input": [-8.5, 93.0], "expected": 93.0}, {"input": [-8.5, 93.5], "expected": 93.5}, {"input": [-8.5, 94.0], "expected": 94.0}, {"input": [-8.5, 94.5], "expected": 94.5}, {"input": [-8.5, 95.0], "expected": 95.0}, {"input": [-8.5, 95.5], "expected": 95.5}, {"input": [-8.5, 96.0], "expected": 96.0}, {"input": [-8.5, 96.5], "expected": 96.5}, {"input": [-8.5, 97.0], "expected": 97.0}, {"input": [-8.5, 97.5], "expected": 97.5}, {"input": [-8.5, 98.0], "expected": 98.0}, {"input": [-8.5, 98.5], "expected": 98.5}, {"input": [-8.5, 99.0], "expected": 99.0}, {"input": [-8.5, 99.5], "expected": 99.5}, {"input": [-8.0, -100.0], "expected": -8.0}, {"input": [-8.0, -99.5], "expected": -8.0}, {"input": [-8.0, -99.0], "expected": -8.0}, {"input": [-8.0, -98.5], "expected": -8.0}, {"input": [-8.0, -98.0], "expected": -8.0}, {"input": [-8.0, -97.5], "expected": -8.0}, {"input": [-8.0, -97.0], "expected": -8.0}, {"input": [-8.0, -96.5], "expected": -8.0}, {"input": [-8.0, -96.0], "expected": -8.0}, {"input": [-8.0, -95.5], "expected": -8.0}, {"input": [-8.0, -95.0], "expected": -8.0}, {"input": [-8.0, -94.5], "expected": -8.0}, {"input": [-8.0, -94.0], "expected": -8.0}, {"input": [-8.0, -93.5], "expected": -8.0}, {"input": [-8.0, -93.0], "expected": -8.0}, {"input": [-8.0, -92.5], "expected": -8.0}, {"input": [-8.0, -92.0], "expected": -8.0}, {"input": [-8.0, -91.5], "expected": -8.0}, {"input": [-8.0, -91.0], "expected": -8.0}, {"input": [-8.0, -90.5], "expected": -8.0}, {"input": [-8.0, -90.0], "expected": -8.0}, {"input": [-8.0, -89.5], "expected": -8.0}, {"input": [-8.0, -89.0], "expected": -8.0}, {"input": [-8.0, -88.5], "expected": -8.0}, {"input": [-8.0, -88.0], "expected": -8.0}, {"input": [-8.0, -87.5], "expected": -8.0}, {"input": [-8.0, -87.0], "expected": -8.0}, {"input": [-8.0, -86.5], "expected": -8.0}, {"input": [-8.0, -86.0], "expected": -8.0}, {"input": [-8.0, -85.5], "expected": -8.0}, {"input": [-8.0, -85.0], "expected": -8.0}, {"input": [-8.0, -84.5], "expected": -8.0}, {"input": [-8.0, -84.0], "expected": -8.0}, {"input": [-8.0, -83.5], "expected": -8.0}, {"input": [-8.0, -83.0], "expected": -8.0}, {"input": [-8.0, -82.5], "expected": -8.0}, {"input": [-8.0, -82.0], "expected": -8.0}, {"input": [-8.0, -81.5], "expected": -8.0}, {"input": [-8.0, -81.0], "expected": -8.0}, {"input": [-8.0, -80.5], "expected": -8.0}, {"input": [-8.0, -80.0], "expected": -8.0}, {"input": [-8.0, -79.5], "expected": -8.0}, {"input": [-8.0, -79.0], "expected": -8.0}, {"input": [-8.0, -78.5], "expected": -8.0}, {"input": [-8.0, -78.0], "expected": -8.0}, {"input": [-8.0, -77.5], "expected": -8.0}, {"input": [-8.0, -77.0], "expected": -8.0}, {"input": [-8.0, -76.5], "expected": -8.0}, {"input": [-8.0, -76.0], "expected": -8.0}, {"input": [-8.0, -75.5], "expected": -8.0}, {"input": [-8.0, -75.0], "expected": -8.0}, {"input": [-8.0, -74.5], "expected": -8.0}, {"input": [-8.0, -74.0], "expected": -8.0}, {"input": [-8.0, -73.5], "expected": -8.0}, {"input": [-8.0, -73.0], "expected": -8.0}, {"input": [-8.0, -72.5], "expected": -8.0}, {"input": [-8.0, -72.0], "expected": -8.0}, {"input": [-8.0, -71.5], "expected": -8.0}, {"input": [-8.0, -71.0], "expected": -8.0}, {"input": [-8.0, -70.5], "expected": -8.0}, {"input": [-8.0, -70.0], "expected": -8.0}, {"input": [-8.0, -69.5], "expected": -8.0}, {"input": [-8.0, -69.0], "expected": -8.0}, {"input": [-8.0, -68.5], "expected": -8.0}, {"input": [-8.0, -68.0], "expected": -8.0}, {"input": [-8.0, -67.5], "expected": -8.0}, {"input": [-8.0, -67.0], "expected": -8.0}, {"input": [-8.0, -66.5], "expected": -8.0}, {"input": [-8.0, -66.0], "expected": -8.0}, {"input": [-8.0, -65.5], "expected": -8.0}, {"input": [-8.0, -65.0], "expected": -8.0}, {"input": [-8.0, -64.5], "expected": -8.0}, {"input": [-8.0, -64.0], "expected": -8.0}, {"input": [-8.0, -63.5], "expected": -8.0}, {"input": [-8.0, -63.0], "expected": -8.0}, {"input": [-8.0, -62.5], "expected": -8.0}, {"input": [-8.0, -62.0], "expected": -8.0}, {"input": [-8.0, -61.5], "expected": -8.0}, {"input": [-8.0, -61.0], "expected": -8.0}, {"input": [-8.0, -60.5], "expected": -8.0}, {"input": [-8.0, -60.0], "expected": -8.0}, {"input": [-8.0, -59.5], "expected": -8.0}, {"input": [-8.0, -59.0], "expected": -8.0}, {"input": [-8.0, -58.5], "expected": -8.0}, {"input": [-8.0, -58.0], "expected": -8.0}, {"input": [-8.0, -57.5], "expected": -8.0}, {"input": [-8.0, -57.0], "expected": -8.0}, {"input": [-8.0, -56.5], "expected": -8.0}, {"input": [-8.0, -56.0], "expected": -8.0}, {"input": [-8.0, -55.5], "expected": -8.0}, {"input": [-8.0, -55.0], "expected": -8.0}, {"input": [-8.0, -54.5], "expected": -8.0}, {"input": [-8.0, -54.0], "expected": -8.0}, {"input": [-8.0, -53.5], "expected": -8.0}, {"input": [-8.0, -53.0], "expected": -8.0}, {"input": [-8.0, -52.5], "expected": -8.0}, {"input": [-8.0, -52.0], "expected": -8.0}, {"input": [-8.0, -51.5], "expected": -8.0}, {"input": [-8.0, -51.0], "expected": -8.0}, {"input": [-8.0, -50.5], "expected": -8.0}, {"input": [-8.0, -50.0], "expected": -8.0}, {"input": [-8.0, -49.5], "expected": -8.0}, {"input": [-8.0, -49.0], "expected": -8.0}, {"input": [-8.0, -48.5], "expected": -8.0}, {"input": [-8.0, -48.0], "expected": -8.0}, {"input": [-8.0, -47.5], "expected": -8.0}, {"input": [-8.0, -47.0], "expected": -8.0}, {"input": [-8.0, -46.5], "expected": -8.0}, {"input": [-8.0, -46.0], "expected": -8.0}, {"input": [-8.0, -45.5], "expected": -8.0}, {"input": [-8.0, -45.0], "expected": -8.0}, {"input": [-8.0, -44.5], "expected": -8.0}, {"input": [-8.0, -44.0], "expected": -8.0}, {"input": [-8.0, -43.5], "expected": -8.0}, {"input": [-8.0, -43.0], "expected": -7.999999999999999}, {"input": [-8.0, -42.5], "expected": -7.999999999999999}, {"input": [-8.0, -42.0], "expected": -7.999999999999998}, {"input": [-8.0, -41.5], "expected": -7.999999999999997}, {"input": [-8.0, -41.0], "expected": -7.999999999999996}, {"input": [-8.0, -40.5], "expected": -7.999999999999992}, {"input": [-8.0, -40.0], "expected": -7.999999999999988}, {"input": [-8.0, -39.5], "expected": -7.999999999999979}, {"input": [-8.0, -39.0], "expected": -7.999999999999965}, {"input": [-8.0, -38.5], "expected": -7.999999999999943}, {"input": [-8.0, -38.0], "expected": -7.999999999999907}, {"input": [-8.0, -37.5], "expected": -7.9999999999998455}, {"input": [-8.0, -37.0], "expected": -7.999999999999746}, {"input": [-8.0, -36.5], "expected": -7.999999999999581}, {"input": [-8.0, -36.0], "expected": -7.999999999999309}, {"input": [-8.0, -35.5], "expected": -7.99999999999886}, {"input": [-8.0, -35.0], "expected": -7.999999999998121}, {"input": [-8.0, -34.5], "expected": -7.999999999996901}, {"input": [-8.0, -34.0], "expected": -7.999999999994891}, {"input": [-8.0, -33.5], "expected": -7.9999999999915765}, {"input": [-8.0, -33.0], "expected": -7.999999999986112}, {"input": [-8.0, -32.5], "expected": -7.999999999977103}, {"input": [-8.0, -32.0], "expected": -7.999999999962249}, {"input": [-8.0, -31.5], "expected": -7.999999999937758}, {"input": [-8.0, -31.0], "expected": -7.999999999897382}, {"input": [-8.0, -30.5], "expected": -7.99999999983081}, {"input": [-8.0, -30.0], "expected": -7.999999999721053}, {"input": [-8.0, -29.5], "expected": -7.999999999540094}, {"input": [-8.0, -29.0], "expected": -7.999999999241744}, {"input": [-8.0, -28.5], "expected": -7.999999998749847}, {"input": [-8.0, -28.0], "expected": -7.999999997938846}, {"input": [-8.0, -27.5], "expected": -7.9999999966017326}, {"input": [-8.0, -27.0], "expected": -7.9999999943972036}, {"input": [-8.0, -26.5], "expected": -7.99999999076255}, {"input": [-8.0, -26.0], "expected": -7.99999998477002}, {"input": [-8.0, -25.5], "expected": -7.999999974890009}, {"input": [-8.0, -25.0], "expected": -7.999999958600624}, {"input": [-8.0, -24.5], "expected": -7.999999931743969}, {"input": [-8.0, -24.0], "expected": -7.999999887464831}, {"input": [-8.0, -23.5], "expected": -7.999999814460881}, {"input": [-8.0, -23.0], "expected": -7.999999694097727}, {"input": [-8.0, -22.5], "expected": -7.999999495652465}, {"input": [-8.0, -22.0], "expected": -7.999999168471627}, {"input": [-8.0, -21.5], "expected": -7.999998629041853}, {"input": [-8.0, -21.0], "expected": -7.999997739673147}, {"input": [-8.0, -20.5], "expected": -7.999996273353772}, {"input": [-8.0, -20.0], "expected": -7.9999938558065224}, {"input": [-8.0, -19.5], "expected": -7.9999898699577106}, {"input": [-8.0, -19.0], "expected": -7.999983298438681}, {"input": [-8.0, -18.5], "expected": -7.999972463929772}, {"input": [-8.0, -18.0], "expected": -7.999954601100783}, {"input": [-8.0, -17.5], "expected": -7.999925150971371}, {"input": [-8.0, -17.0], "expected": -7.999876597810276}, {"input": [-8.0, -16.5], "expected": -7.9997965523278705}, {"input": [-8.0, -16.0], "expected": -7.999664593627104}, {"input": [-8.0, -15.5], "expected": -7.999447068524639}, {"input": [-8.0, -15.0], "expected": -7.999088533546225}, {"input": [-8.0, -14.5], "expected": -7.998497689840246}, {"input": [-8.0, -14.0], "expected": -7.99752431486227}, {"input": [-8.0, -13.5], "expected": -7.995921556729429}, {"input": [-8.0, -13.0], "expected": -7.993284651510882}, {"input": [-8.0, -12.5], "expected": -7.988952255151406}, {"input": [-8.0, -12.0], "expected": -7.9818500720821906}, {"input": [-8.0, -11.5], "expected": -7.970249581727379}, {"input": [-8.0, -11.0], "expected": -7.951412648426258}, {"input": [-8.0, -10.5], "expected": -7.92111026570745}, {"input": [-8.0, -10.0], "expected": -7.873071988957028}, {"input": [-8.0, -9.5], "expected": -7.798586722017248}, {"input": [-8.0, -9.0], "expected": -7.686738312481777}, {"input": [-8.0, -8.5], "expected": -7.5259230158198935}, {"input": [-8.0, -8.0], "expected": -7.306852819440055}, {"input": [-8.0, -7.5], "expected": -7.0259230158198935}, {"input": [-8.0, -7.0], "expected": -6.686738312481777}, {"input": [-8.0, -6.5], "expected": -6.298586722017248}, {"input": [-8.0, -6.0], "expected": -5.873071988957028}, {"input": [-8.0, -5.5], "expected": -5.42111026570745}, {"input": [-8.0, -5.0], "expected": -4.951412648426258}, {"input": [-8.0, -4.5], "expected": -4.470249581727379}, {"input": [-8.0, -4.0], "expected": -3.98185007208219}, {"input": [-8.0, -3.5], "expected": -3.488952255151406}, {"input": [-8.0, -3.0], "expected": -2.9932846515108817}, {"input": [-8.0, -2.5], "expected": -2.4959215567294293}, {"input": [-8.0, -2.0], "expected": -1.9975243148622694}, {"input": [-8.0, -1.5], "expected": -1.4984976898402458}, {"input": [-8.0, -1.0], "expected": -0.9990885335462257}, {"input": [-8.0, -0.5], "expected": -0.4994470685246392}, {"input": [-8.0, 0.0], "expected": 0.00033540637289576885}, {"input": [-8.0, 0.5], "expected": 0.5002034476721294}, {"input": [-8.0, 1.0], "expected": 1.0001234021897232}, {"input": [-8.0, 1.5], "expected": 1.5000748490286293}, {"input": [-8.0, 2.0], "expected": 2.000045398899217}, {"input": [-8.0, 2.5], "expected": 2.500027536070229}, {"input": [-8.0, 3.0], "expected": 3.0000167015613184}, {"input": [-8.0, 3.5], "expected": 3.5000101300422894}, {"input": [-8.0, 4.0], "expected": 4.0000061441934776}, {"input": [-8.0, 4.5], "expected": 4.500003726646228}, {"input": [-8.0, 5.0], "expected": 5.000002260326853}, {"input": [-8.0, 5.5], "expected": 5.500001370958147}, {"input": [-8.0, 6.0], "expected": 6.000000831528373}, {"input": [-8.0, 6.5], "expected": 6.500000504347535}, {"input": [-8.0, 7.0], "expected": 7.000000305902273}, {"input": [-8.0, 7.5], "expected": 7.500000185539119}, {"input": [-8.0, 8.0], "expected": 8.000000112535169}, {"input": [-8.0, 8.5], "expected": 8.500000068256032}, {"input": [-8.0, 9.0], "expected": 9.000000041399376}, {"input": [-8.0, 9.5], "expected": 9.50000002510999}, {"input": [-8.0, 10.0], "expected": 10.000000015229979}, {"input": [-8.0, 10.5], "expected": 10.50000000923745}, {"input": [-8.0, 11.0], "expected": 11.000000005602796}, {"input": [-8.0, 11.5], "expected": 11.500000003398268}, {"input": [-8.0, 12.0], "expected": 12.000000002061153}, {"input": [-8.0, 12.5], "expected": 12.500000001250152}, {"input": [-8.0, 13.0], "expected": 13.000000000758256}, {"input": [-8.0, 13.5], "expected": 13.500000000459906}, {"input": [-8.0, 14.0], "expected": 14.000000000278947}, {"input": [-8.0, 14.5], "expected": 14.500000000169189}, {"input": [-8.0, 15.0], "expected": 15.000000000102618}, {"input": [-8.0, 15.5], "expected": 15.500000000062242}, {"input": [-8.0, 16.0], "expected": 16.00000000003775}, {"input": [-8.0, 16.5], "expected": 16.500000000022897}, {"input": [-8.0, 17.0], "expected": 17.000000000013888}, {"input": [-8.0, 17.5], "expected": 17.500000000008423}, {"input": [-8.0, 18.0], "expected": 18.00000000000511}, {"input": [-8.0, 18.5], "expected": 18.500000000003098}, {"input": [-8.0, 19.0], "expected": 19.00000000000188}, {"input": [-8.0, 19.5], "expected": 19.50000000000114}, {"input": [-8.0, 20.0], "expected": 20.000000000000693}, {"input": [-8.0, 20.5], "expected": 20.50000000000042}, {"input": [-8.0, 21.0], "expected": 21.000000000000256}, {"input": [-8.0, 21.5], "expected": 21.500000000000153}, {"input": [-8.0, 22.0], "expected": 22.000000000000092}, {"input": [-8.0, 22.5], "expected": 22.500000000000057}, {"input": [-8.0, 23.0], "expected": 23.000000000000036}, {"input": [-8.0, 23.5], "expected": 23.50000000000002}, {"input": [-8.0, 24.0], "expected": 24.000000000000014}, {"input": [-8.0, 24.5], "expected": 24.500000000000007}, {"input": [-8.0, 25.0], "expected": 25.000000000000004}, {"input": [-8.0, 25.5], "expected": 25.500000000000004}, {"input": [-8.0, 26.0], "expected": 26.0}, {"input": [-8.0, 26.5], "expected": 26.5}, {"input": [-8.0, 27.0], "expected": 27.0}, {"input": [-8.0, 27.5], "expected": 27.5}, {"input": [-8.0, 28.0], "expected": 28.0}, {"input": [-8.0, 28.5], "expected": 28.5}, {"input": [-8.0, 29.0], "expected": 29.0}, {"input": [-8.0, 29.5], "expected": 29.5}, {"input": [-8.0, 30.0], "expected": 30.0}, {"input": [-8.0, 30.5], "expected": 30.5}, {"input": [-8.0, 31.0], "expected": 31.0}, {"input": [-8.0, 31.5], "expected": 31.5}, {"input": [-8.0, 32.0], "expected": 32.0}, {"input": [-8.0, 32.5], "expected": 32.5}, {"input": [-8.0, 33.0], "expected": 33.0}, {"input": [-8.0, 33.5], "expected": 33.5}, {"input": [-8.0, 34.0], "expected": 34.0}, {"input": [-8.0, 34.5], "expected": 34.5}, {"input": [-8.0, 35.0], "expected": 35.0}, {"input": [-8.0, 35.5], "expected": 35.5}, {"input": [-8.0, 36.0], "expected": 36.0}, {"input": [-8.0, 36.5], "expected": 36.5}, {"input": [-8.0, 37.0], "expected": 37.0}, {"input": [-8.0, 37.5], "expected": 37.5}, {"input": [-8.0, 38.0], "expected": 38.0}, {"input": [-8.0, 38.5], "expected": 38.5}, {"input": [-8.0, 39.0], "expected": 39.0}, {"input": [-8.0, 39.5], "expected": 39.5}, {"input": [-8.0, 40.0], "expected": 40.0}, {"input": [-8.0, 40.5], "expected": 40.5}, {"input": [-8.0, 41.0], "expected": 41.0}, {"input": [-8.0, 41.5], "expected": 41.5}, {"input": [-8.0, 42.0], "expected": 42.0}, {"input": [-8.0, 42.5], "expected": 42.5}, {"input": [-8.0, 43.0], "expected": 43.0}, {"input": [-8.0, 43.5], "expected": 43.5}, {"input": [-8.0, 44.0], "expected": 44.0}, {"input": [-8.0, 44.5], "expected": 44.5}, {"input": [-8.0, 45.0], "expected": 45.0}, {"input": [-8.0, 45.5], "expected": 45.5}, {"input": [-8.0, 46.0], "expected": 46.0}, {"input": [-8.0, 46.5], "expected": 46.5}, {"input": [-8.0, 47.0], "expected": 47.0}, {"input": [-8.0, 47.5], "expected": 47.5}, {"input": [-8.0, 48.0], "expected": 48.0}, {"input": [-8.0, 48.5], "expected": 48.5}, {"input": [-8.0, 49.0], "expected": 49.0}, {"input": [-8.0, 49.5], "expected": 49.5}, {"input": [-8.0, 50.0], "expected": 50.0}, {"input": [-8.0, 50.5], "expected": 50.5}, {"input": [-8.0, 51.0], "expected": 51.0}, {"input": [-8.0, 51.5], "expected": 51.5}, {"input": [-8.0, 52.0], "expected": 52.0}, {"input": [-8.0, 52.5], "expected": 52.5}, {"input": [-8.0, 53.0], "expected": 53.0}, {"input": [-8.0, 53.5], "expected": 53.5}, {"input": [-8.0, 54.0], "expected": 54.0}, {"input": [-8.0, 54.5], "expected": 54.5}, {"input": [-8.0, 55.0], "expected": 55.0}, {"input": [-8.0, 55.5], "expected": 55.5}, {"input": [-8.0, 56.0], "expected": 56.0}, {"input": [-8.0, 56.5], "expected": 56.5}, {"input": [-8.0, 57.0], "expected": 57.0}, {"input": [-8.0, 57.5], "expected": 57.5}, {"input": [-8.0, 58.0], "expected": 58.0}, {"input": [-8.0, 58.5], "expected": 58.5}, {"input": [-8.0, 59.0], "expected": 59.0}, {"input": [-8.0, 59.5], "expected": 59.5}, {"input": [-8.0, 60.0], "expected": 60.0}, {"input": [-8.0, 60.5], "expected": 60.5}, {"input": [-8.0, 61.0], "expected": 61.0}, {"input": [-8.0, 61.5], "expected": 61.5}, {"input": [-8.0, 62.0], "expected": 62.0}, {"input": [-8.0, 62.5], "expected": 62.5}, {"input": [-8.0, 63.0], "expected": 63.0}, {"input": [-8.0, 63.5], "expected": 63.5}, {"input": [-8.0, 64.0], "expected": 64.0}, {"input": [-8.0, 64.5], "expected": 64.5}, {"input": [-8.0, 65.0], "expected": 65.0}, {"input": [-8.0, 65.5], "expected": 65.5}, {"input": [-8.0, 66.0], "expected": 66.0}, {"input": [-8.0, 66.5], "expected": 66.5}, {"input": [-8.0, 67.0], "expected": 67.0}, {"input": [-8.0, 67.5], "expected": 67.5}, {"input": [-8.0, 68.0], "expected": 68.0}, {"input": [-8.0, 68.5], "expected": 68.5}, {"input": [-8.0, 69.0], "expected": 69.0}, {"input": [-8.0, 69.5], "expected": 69.5}, {"input": [-8.0, 70.0], "expected": 70.0}, {"input": [-8.0, 70.5], "expected": 70.5}, {"input": [-8.0, 71.0], "expected": 71.0}, {"input": [-8.0, 71.5], "expected": 71.5}, {"input": [-8.0, 72.0], "expected": 72.0}, {"input": [-8.0, 72.5], "expected": 72.5}, {"input": [-8.0, 73.0], "expected": 73.0}, {"input": [-8.0, 73.5], "expected": 73.5}, {"input": [-8.0, 74.0], "expected": 74.0}, {"input": [-8.0, 74.5], "expected": 74.5}, {"input": [-8.0, 75.0], "expected": 75.0}, {"input": [-8.0, 75.5], "expected": 75.5}, {"input": [-8.0, 76.0], "expected": 76.0}, {"input": [-8.0, 76.5], "expected": 76.5}, {"input": [-8.0, 77.0], "expected": 77.0}, {"input": [-8.0, 77.5], "expected": 77.5}, {"input": [-8.0, 78.0], "expected": 78.0}, {"input": [-8.0, 78.5], "expected": 78.5}, {"input": [-8.0, 79.0], "expected": 79.0}, {"input": [-8.0, 79.5], "expected": 79.5}, {"input": [-8.0, 80.0], "expected": 80.0}, {"input": [-8.0, 80.5], "expected": 80.5}, {"input": [-8.0, 81.0], "expected": 81.0}, {"input": [-8.0, 81.5], "expected": 81.5}, {"input": [-8.0, 82.0], "expected": 82.0}, {"input": [-8.0, 82.5], "expected": 82.5}, {"input": [-8.0, 83.0], "expected": 83.0}, {"input": [-8.0, 83.5], "expected": 83.5}, {"input": [-8.0, 84.0], "expected": 84.0}, {"input": [-8.0, 84.5], "expected": 84.5}, {"input": [-8.0, 85.0], "expected": 85.0}, {"input": [-8.0, 85.5], "expected": 85.5}, {"input": [-8.0, 86.0], "expected": 86.0}, {"input": [-8.0, 86.5], "expected": 86.5}, {"input": [-8.0, 87.0], "expected": 87.0}, {"input": [-8.0, 87.5], "expected": 87.5}, {"input": [-8.0, 88.0], "expected": 88.0}, {"input": [-8.0, 88.5], "expected": 88.5}, {"input": [-8.0, 89.0], "expected": 89.0}, {"input": [-8.0, 89.5], "expected": 89.5}, {"input": [-8.0, 90.0], "expected": 90.0}, {"input": [-8.0, 90.5], "expected": 90.5}, {"input": [-8.0, 91.0], "expected": 91.0}, {"input": [-8.0, 91.5], "expected": 91.5}, {"input": [-8.0, 92.0], "expected": 92.0}, {"input": [-8.0, 92.5], "expected": 92.5}, {"input": [-8.0, 93.0], "expected": 93.0}, {"input": [-8.0, 93.5], "expected": 93.5}, {"input": [-8.0, 94.0], "expected": 94.0}, {"input": [-8.0, 94.5], "expected": 94.5}, {"input": [-8.0, 95.0], "expected": 95.0}, {"input": [-8.0, 95.5], "expected": 95.5}, {"input": [-8.0, 96.0], "expected": 96.0}, {"input": [-8.0, 96.5], "expected": 96.5}, {"input": [-8.0, 97.0], "expected": 97.0}, {"input": [-8.0, 97.5], "expected": 97.5}, {"input": [-8.0, 98.0], "expected": 98.0}, {"input": [-8.0, 98.5], "expected": 98.5}, {"input": [-8.0, 99.0], "expected": 99.0}, {"input": [-8.0, 99.5], "expected": 99.5}, {"input": [-7.5, -100.0], "expected": -7.5}, {"input": [-7.5, -99.5], "expected": -7.5}, {"input": [-7.5, -99.0], "expected": -7.5}, {"input": [-7.5, -98.5], "expected": -7.5}, {"input": [-7.5, -98.0], "expected": -7.5}, {"input": [-7.5, -97.5], "expected": -7.5}, {"input": [-7.5, -97.0], "expected": -7.5}, {"input": [-7.5, -96.5], "expected": -7.5}, {"input": [-7.5, -96.0], "expected": -7.5}, {"input": [-7.5, -95.5], "expected": -7.5}, {"input": [-7.5, -95.0], "expected": -7.5}, {"input": [-7.5, -94.5], "expected": -7.5}, {"input": [-7.5, -94.0], "expected": -7.5}, {"input": [-7.5, -93.5], "expected": -7.5}, {"input": [-7.5, -93.0], "expected": -7.5}, {"input": [-7.5, -92.5], "expected": -7.5}, {"input": [-7.5, -92.0], "expected": -7.5}, {"input": [-7.5, -91.5], "expected": -7.5}, {"input": [-7.5, -91.0], "expected": -7.5}, {"input": [-7.5, -90.5], "expected": -7.5}, {"input": [-7.5, -90.0], "expected": -7.5}, {"input": [-7.5, -89.5], "expected": -7.5}, {"input": [-7.5, -89.0], "expected": -7.5}, {"input": [-7.5, -88.5], "expected": -7.5}, {"input": [-7.5, -88.0], "expected": -7.5}, {"input": [-7.5, -87.5], "expected": -7.5}, {"input": [-7.5, -87.0], "expected": -7.5}, {"input": [-7.5, -86.5], "expected": -7.5}, {"input": [-7.5, -86.0], "expected": -7.5}, {"input": [-7.5, -85.5], "expected": -7.5}, {"input": [-7.5, -85.0], "expected": -7.5}, {"input": [-7.5, -84.5], "expected": -7.5}, {"input": [-7.5, -84.0], "expected": -7.5}, {"input": [-7.5, -83.5], "expected": -7.5}, {"input": [-7.5, -83.0], "expected": -7.5}, {"input": [-7.5, -82.5], "expected": -7.5}, {"input": [-7.5, -82.0], "expected": -7.5}, {"input": [-7.5, -81.5], "expected": -7.5}, {"input": [-7.5, -81.0], "expected": -7.5}, {"input": [-7.5, -80.5], "expected": -7.5}, {"input": [-7.5, -80.0], "expected": -7.5}, {"input": [-7.5, -79.5], "expected": -7.5}, {"input": [-7.5, -79.0], "expected": -7.5}, {"input": [-7.5, -78.5], "expected": -7.5}, {"input": [-7.5, -78.0], "expected": -7.5}, {"input": [-7.5, -77.5], "expected": -7.5}, {"input": [-7.5, -77.0], "expected": -7.5}, {"input": [-7.5, -76.5], "expected": -7.5}, {"input": [-7.5, -76.0], "expected": -7.5}, {"input": [-7.5, -75.5], "expected": -7.5}, {"input": [-7.5, -75.0], "expected": -7.5}, {"input": [-7.5, -74.5], "expected": -7.5}, {"input": [-7.5, -74.0], "expected": -7.5}, {"input": [-7.5, -73.5], "expected": -7.5}, {"input": [-7.5, -73.0], "expected": -7.5}, {"input": [-7.5, -72.5], "expected": -7.5}, {"input": [-7.5, -72.0], "expected": -7.5}, {"input": [-7.5, -71.5], "expected": -7.5}, {"input": [-7.5, -71.0], "expected": -7.5}, {"input": [-7.5, -70.5], "expected": -7.5}, {"input": [-7.5, -70.0], "expected": -7.5}, {"input": [-7.5, -69.5], "expected": -7.5}, {"input": [-7.5, -69.0], "expected": -7.5}, {"input": [-7.5, -68.5], "expected": -7.5}, {"input": [-7.5, -68.0], "expected": -7.5}, {"input": [-7.5, -67.5], "expected": -7.5}, {"input": [-7.5, -67.0], "expected": -7.5}, {"input": [-7.5, -66.5], "expected": -7.5}, {"input": [-7.5, -66.0], "expected": -7.5}, {"input": [-7.5, -65.5], "expected": -7.5}, {"input": [-7.5, -65.0], "expected": -7.5}, {"input": [-7.5, -64.5], "expected": -7.5}, {"input": [-7.5, -64.0], "expected": -7.5}, {"input": [-7.5, -63.5], "expected": -7.5}, {"input": [-7.5, -63.0], "expected": -7.5}, {"input": [-7.5, -62.5], "expected": -7.5}, {"input": [-7.5, -62.0], "expected": -7.5}, {"input": [-7.5, -61.5], "expected": -7.5}, {"input": [-7.5, -61.0], "expected": -7.5}, {"input": [-7.5, -60.5], "expected": -7.5}, {"input": [-7.5, -60.0], "expected": -7.5}, {"input": [-7.5, -59.5], "expected": -7.5}, {"input": [-7.5, -59.0], "expected": -7.5}, {"input": [-7.5, -58.5], "expected": -7.5}, {"input": [-7.5, -58.0], "expected": -7.5}, {"input": [-7.5, -57.5], "expected": -7.5}, {"input": [-7.5, -57.0], "expected": -7.5}, {"input": [-7.5, -56.5], "expected": -7.5}, {"input": [-7.5, -56.0], "expected": -7.5}, {"input": [-7.5, -55.5], "expected": -7.5}, {"input": [-7.5, -55.0], "expected": -7.5}, {"input": [-7.5, -54.5], "expected": -7.5}, {"input": [-7.5, -54.0], "expected": -7.5}, {"input": [-7.5, -53.5], "expected": -7.5}, {"input": [-7.5, -53.0], "expected": -7.5}, {"input": [-7.5, -52.5], "expected": -7.5}, {"input": [-7.5, -52.0], "expected": -7.5}, {"input": [-7.5, -51.5], "expected": -7.5}, {"input": [-7.5, -51.0], "expected": -7.5}, {"input": [-7.5, -50.5], "expected": -7.5}, {"input": [-7.5, -50.0], "expected": -7.5}, {"input": [-7.5, -49.5], "expected": -7.5}, {"input": [-7.5, -49.0], "expected": -7.5}, {"input": [-7.5, -48.5], "expected": -7.5}, {"input": [-7.5, -48.0], "expected": -7.5}, {"input": [-7.5, -47.5], "expected": -7.5}, {"input": [-7.5, -47.0], "expected": -7.5}, {"input": [-7.5, -46.5], "expected": -7.5}, {"input": [-7.5, -46.0], "expected": -7.5}, {"input": [-7.5, -45.5], "expected": -7.5}, {"input": [-7.5, -45.0], "expected": -7.5}, {"input": [-7.5, -44.5], "expected": -7.5}, {"input": [-7.5, -44.0], "expected": -7.5}, {"input": [-7.5, -43.5], "expected": -7.5}, {"input": [-7.5, -43.0], "expected": -7.5}, {"input": [-7.5, -42.5], "expected": -7.499999999999999}, {"input": [-7.5, -42.0], "expected": -7.499999999999999}, {"input": [-7.5, -41.5], "expected": -7.499999999999998}, {"input": [-7.5, -41.0], "expected": -7.499999999999997}, {"input": [-7.5, -40.5], "expected": -7.499999999999996}, {"input": [-7.5, -40.0], "expected": -7.499999999999992}, {"input": [-7.5, -39.5], "expected": -7.499999999999988}, {"input": [-7.5, -39.0], "expected": -7.499999999999979}, {"input": [-7.5, -38.5], "expected": -7.499999999999965}, {"input": [-7.5, -38.0], "expected": -7.499999999999943}, {"input": [-7.5, -37.5], "expected": -7.499999999999907}, {"input": [-7.5, -37.0], "expected": -7.4999999999998455}, {"input": [-7.5, -36.5], "expected": -7.499999999999746}, {"input": [-7.5, -36.0], "expected": -7.499999999999581}, {"input": [-7.5, -35.5], "expected": -7.499999999999309}, {"input": [-7.5, -35.0], "expected": -7.49999999999886}, {"input": [-7.5, -34.5], "expected": -7.499999999998121}, {"input": [-7.5, -34.0], "expected": -7.499999999996901}, {"input": [-7.5, -33.5], "expected": -7.499999999994891}, {"input": [-7.5, -33.0], "expected": -7.4999999999915765}, {"input": [-7.5, -32.5], "expected": -7.499999999986112}, {"input": [-7.5, -32.0], "expected": -7.499999999977103}, {"input": [-7.5, -31.5], "expected": -7.499999999962249}, {"input": [-7.5, -31.0], "expected": -7.499999999937758}, {"input": [-7.5, -30.5], "expected": -7.499999999897382}, {"input": [-7.5, -30.0], "expected": -7.49999999983081}, {"input": [-7.5, -29.5], "expected": -7.499999999721053}, {"input": [-7.5, -29.0], "expected": -7.499999999540094}, {"input": [-7.5, -28.5], "expected": -7.499999999241744}, {"input": [-7.5, -28.0], "expected": -7.499999998749847}, {"input": [-7.5, -27.5], "expected": -7.499999997938846}, {"input": [-7.5, -27.0], "expected": -7.4999999966017326}, {"input": [-7.5, -26.5], "expected": -7.4999999943972036}, {"input": [-7.5, -26.0], "expected": -7.49999999076255}, {"input": [-7.5, -25.5], "expected": -7.49999998477002}, {"input": [-7.5, -25.0], "expected": -7.499999974890009}, {"input": [-7.5, -24.5], "expected": -7.499999958600624}, {"input": [-7.5, -24.0], "expected": -7.499999931743969}, {"input": [-7.5, -23.5], "expected": -7.499999887464831}, {"input": [-7.5, -23.0], "expected": -7.499999814460881}, {"input": [-7.5, -22.5], "expected": -7.499999694097727}, {"input": [-7.5, -22.0], "expected": -7.499999495652465}, {"input": [-7.5, -21.5], "expected": -7.499999168471627}, {"input": [-7.5, -21.0], "expected": -7.499998629041853}, {"input": [-7.5, -20.5], "expected": -7.499997739673147}, {"input": [-7.5, -20.0], "expected": -7.499996273353772}, {"input": [-7.5, -19.5], "expected": -7.4999938558065224}, {"input": [-7.5, -19.0], "expected": -7.4999898699577106}, {"input": [-7.5, -18.5], "expected": -7.499983298438681}, {"input": [-7.5, -18.0], "expected": -7.499972463929772}, {"input": [-7.5, -17.5], "expected": -7.499954601100783}, {"input": [-7.5, -17.0], "expected": -7.499925150971371}, {"input": [-7.5, -16.5], "expected": -7.499876597810276}, {"input": [-7.5, -16.0], "expected": -7.4997965523278705}, {"input": [-7.5, -15.5], "expected": -7.499664593627104}, {"input": [-7.5, -15.0], "expected": -7.499447068524639}, {"input": [-7.5, -14.5], "expected": -7.499088533546225}, {"input": [-7.5, -14.0], "expected": -7.498497689840246}, {"input": [-7.5, -13.5], "expected": -7.49752431486227}, {"input": [-7.5, -13.0], "expected": -7.495921556729429}, {"input": [-7.5, -12.5], "expected": -7.493284651510882}, {"input": [-7.5, -12.0], "expected": -7.488952255151406}, {"input": [-7.5, -11.5], "expected": -7.4818500720821906}, {"input": [-7.5, -11.0], "expected": -7.470249581727379}, {"input": [-7.5, -10.5], "expected": -7.451412648426258}, {"input": [-7.5, -10.0], "expected": -7.42111026570745}, {"input": [-7.5, -9.5], "expected": -7.373071988957028}, {"input": [-7.5, -9.0], "expected": -7.298586722017248}, {"input": [-7.5, -8.5], "expected": -7.186738312481777}, {"input": [-7.5, -8.0], "expected": -7.0259230158198935}, {"input": [-7.5, -7.5], "expected": -6.806852819440055}, {"input": [-7.5, -7.0], "expected": -6.5259230158198935}, {"input": [-7.5, -6.5], "expected": -6.186738312481777}, {"input": [-7.5, -6.0], "expected": -5.798586722017248}, {"input": [-7.5, -5.5], "expected": -5.373071988957028}, {"input": [-7.5, -5.0], "expected": -4.92111026570745}, {"input": [-7.5, -4.5], "expected": -4.451412648426258}, {"input": [-7.5, -4.0], "expected": -3.9702495817273795}, {"input": [-7.5, -3.5], "expected": -3.48185007208219}, {"input": [-7.5, -3.0], "expected": -2.988952255151406}, {"input": [-7.5, -2.5], "expected": -2.4932846515108817}, {"input": [-7.5, -2.0], "expected": -1.9959215567294293}, {"input": [-7.5, -1.5], "expected": -1.4975243148622694}, {"input": [-7.5, -1.0], "expected": -0.9984976898402457}, {"input": [-7.5, -0.5], "expected": -0.49908853354622573}, {"input": [-7.5, 0.0], "expected": 0.0005529314753607964}, {"input": [-7.5, 0.5], "expected": 0.5003354063728958}, {"input": [-7.5, 1.0], "expected": 1.0002034476721295}, {"input": [-7.5, 1.5], "expected": 1.5001234021897232}, {"input": [-7.5, 2.0], "expected": 2.0000748490286293}, {"input": [-7.5, 2.5], "expected": 2.500045398899217}, {"input": [-7.5, 3.0], "expected": 3.000027536070229}, {"input": [-7.5, 3.5], "expected": 3.5000167015613184}, {"input": [-7.5, 4.0], "expected": 4.0000101300422894}, {"input": [-7.5, 4.5], "expected": 4.5000061441934776}, {"input": [-7.5, 5.0], "expected": 5.000003726646228}, {"input": [-7.5, 5.5], "expected": 5.500002260326853}, {"input": [-7.5, 6.0], "expected": 6.000001370958147}, {"input": [-7.5, 6.5], "expected": 6.500000831528373}, {"input": [-7.5, 7.0], "expected": 7.000000504347535}, {"input": [-7.5, 7.5], "expected": 7.500000305902273}, {"input": [-7.5, 8.0], "expected": 8.000000185539118}, {"input": [-7.5, 8.5], "expected": 8.500000112535169}, {"input": [-7.5, 9.0], "expected": 9.000000068256032}, {"input": [-7.5, 9.5], "expected": 9.500000041399376}, {"input": [-7.5, 10.0], "expected": 10.00000002510999}, {"input": [-7.5, 10.5], "expected": 10.500000015229979}, {"input": [-7.5, 11.0], "expected": 11.00000000923745}, {"input": [-7.5, 11.5], "expected": 11.500000005602796}, {"input": [-7.5, 12.0], "expected": 12.000000003398268}, {"input": [-7.5, 12.5], "expected": 12.500000002061153}, {"input": [-7.5, 13.0], "expected": 13.000000001250152}, {"input": [-7.5, 13.5], "expected": 13.500000000758256}, {"input": [-7.5, 14.0], "expected": 14.000000000459906}, {"input": [-7.5, 14.5], "expected": 14.500000000278947}, {"input": [-7.5, 15.0], "expected": 15.000000000169189}, {"input": [-7.5, 15.5], "expected": 15.500000000102618}, {"input": [-7.5, 16.0], "expected": 16.00000000006224}, {"input": [-7.5, 16.5], "expected": 16.50000000003775}, {"input": [-7.5, 17.0], "expected": 17.000000000022897}, {"input": [-7.5, 17.5], "expected": 17.500000000013888}, {"input": [-7.5, 18.0], "expected": 18.000000000008423}, {"input": [-7.5, 18.5], "expected": 18.50000000000511}, {"input": [-7.5, 19.0], "expected": 19.000000000003098}, {"input": [-7.5, 19.5], "expected": 19.50000000000188}, {"input": [-7.5, 20.0], "expected": 20.00000000000114}, {"input": [-7.5, 20.5], "expected": 20.500000000000693}, {"input": [-7.5, 21.0], "expected": 21.00000000000042}, {"input": [-7.5, 21.5], "expected": 21.500000000000256}, {"input": [-7.5, 22.0], "expected": 22.000000000000153}, {"input": [-7.5, 22.5], "expected": 22.500000000000092}, {"input": [-7.5, 23.0], "expected": 23.000000000000057}, {"input": [-7.5, 23.5], "expected": 23.500000000000036}, {"input": [-7.5, 24.0], "expected": 24.00000000000002}, {"input": [-7.5, 24.5], "expected": 24.500000000000014}, {"input": [-7.5, 25.0], "expected": 25.000000000000007}, {"input": [-7.5, 25.5], "expected": 25.500000000000004}, {"input": [-7.5, 26.0], "expected": 26.000000000000004}, {"input": [-7.5, 26.5], "expected": 26.5}, {"input": [-7.5, 27.0], "expected": 27.0}, {"input": [-7.5, 27.5], "expected": 27.5}, {"input": [-7.5, 28.0], "expected": 28.0}, {"input": [-7.5, 28.5], "expected": 28.5}, {"input": [-7.5, 29.0], "expected": 29.0}, {"input": [-7.5, 29.5], "expected": 29.5}, {"input": [-7.5, 30.0], "expected": 30.0}, {"input": [-7.5, 30.5], "expected": 30.5}, {"input": [-7.5, 31.0], "expected": 31.0}, {"input": [-7.5, 31.5], "expected": 31.5}, {"input": [-7.5, 32.0], "expected": 32.0}, {"input": [-7.5, 32.5], "expected": 32.5}, {"input": [-7.5, 33.0], "expected": 33.0}, {"input": [-7.5, 33.5], "expected": 33.5}, {"input": [-7.5, 34.0], "expected": 34.0}, {"input": [-7.5, 34.5], "expected": 34.5}, {"input": [-7.5, 35.0], "expected": 35.0}, {"input": [-7.5, 35.5], "expected": 35.5}, {"input": [-7.5, 36.0], "expected": 36.0}, {"input": [-7.5, 36.5], "expected": 36.5}, {"input": [-7.5, 37.0], "expected": 37.0}, {"input": [-7.5, 37.5], "expected": 37.5}, {"input": [-7.5, 38.0], "expected": 38.0}, {"input": [-7.5, 38.5], "expected": 38.5}, {"input": [-7.5, 39.0], "expected": 39.0}, {"input": [-7.5, 39.5], "expected": 39.5}, {"input": [-7.5, 40.0], "expected": 40.0}, {"input": [-7.5, 40.5], "expected": 40.5}, {"input": [-7.5, 41.0], "expected": 41.0}, {"input": [-7.5, 41.5], "expected": 41.5}, {"input": [-7.5, 42.0], "expected": 42.0}, {"input": [-7.5, 42.5], "expected": 42.5}, {"input": [-7.5, 43.0], "expected": 43.0}, {"input": [-7.5, 43.5], "expected": 43.5}, {"input": [-7.5, 44.0], "expected": 44.0}, {"input": [-7.5, 44.5], "expected": 44.5}, {"input": [-7.5, 45.0], "expected": 45.0}, {"input": [-7.5, 45.5], "expected": 45.5}, {"input": [-7.5, 46.0], "expected": 46.0}, {"input": [-7.5, 46.5], "expected": 46.5}, {"input": [-7.5, 47.0], "expected": 47.0}, {"input": [-7.5, 47.5], "expected": 47.5}, {"input": [-7.5, 48.0], "expected": 48.0}, {"input": [-7.5, 48.5], "expected": 48.5}, {"input": [-7.5, 49.0], "expected": 49.0}, {"input": [-7.5, 49.5], "expected": 49.5}, {"input": [-7.5, 50.0], "expected": 50.0}, {"input": [-7.5, 50.5], "expected": 50.5}, {"input": [-7.5, 51.0], "expected": 51.0}, {"input": [-7.5, 51.5], "expected": 51.5}, {"input": [-7.5, 52.0], "expected": 52.0}, {"input": [-7.5, 52.5], "expected": 52.5}, {"input": [-7.5, 53.0], "expected": 53.0}, {"input": [-7.5, 53.5], "expected": 53.5}, {"input": [-7.5, 54.0], "expected": 54.0}, {"input": [-7.5, 54.5], "expected": 54.5}, {"input": [-7.5, 55.0], "expected": 55.0}, {"input": [-7.5, 55.5], "expected": 55.5}, {"input": [-7.5, 56.0], "expected": 56.0}, {"input": [-7.5, 56.5], "expected": 56.5}, {"input": [-7.5, 57.0], "expected": 57.0}, {"input": [-7.5, 57.5], "expected": 57.5}, {"input": [-7.5, 58.0], "expected": 58.0}, {"input": [-7.5, 58.5], "expected": 58.5}, {"input": [-7.5, 59.0], "expected": 59.0}, {"input": [-7.5, 59.5], "expected": 59.5}, {"input": [-7.5, 60.0], "expected": 60.0}, {"input": [-7.5, 60.5], "expected": 60.5}, {"input": [-7.5, 61.0], "expected": 61.0}, {"input": [-7.5, 61.5], "expected": 61.5}, {"input": [-7.5, 62.0], "expected": 62.0}, {"input": [-7.5, 62.5], "expected": 62.5}, {"input": [-7.5, 63.0], "expected": 63.0}, {"input": [-7.5, 63.5], "expected": 63.5}, {"input": [-7.5, 64.0], "expected": 64.0}, {"input": [-7.5, 64.5], "expected": 64.5}, {"input": [-7.5, 65.0], "expected": 65.0}, {"input": [-7.5, 65.5], "expected": 65.5}, {"input": [-7.5, 66.0], "expected": 66.0}, {"input": [-7.5, 66.5], "expected": 66.5}, {"input": [-7.5, 67.0], "expected": 67.0}, {"input": [-7.5, 67.5], "expected": 67.5}, {"input": [-7.5, 68.0], "expected": 68.0}, {"input": [-7.5, 68.5], "expected": 68.5}, {"input": [-7.5, 69.0], "expected": 69.0}, {"input": [-7.5, 69.5], "expected": 69.5}, {"input": [-7.5, 70.0], "expected": 70.0}, {"input": [-7.5, 70.5], "expected": 70.5}, {"input": [-7.5, 71.0], "expected": 71.0}, {"input": [-7.5, 71.5], "expected": 71.5}, {"input": [-7.5, 72.0], "expected": 72.0}, {"input": [-7.5, 72.5], "expected": 72.5}, {"input": [-7.5, 73.0], "expected": 73.0}, {"input": [-7.5, 73.5], "expected": 73.5}, {"input": [-7.5, 74.0], "expected": 74.0}, {"input": [-7.5, 74.5], "expected": 74.5}, {"input": [-7.5, 75.0], "expected": 75.0}, {"input": [-7.5, 75.5], "expected": 75.5}, {"input": [-7.5, 76.0], "expected": 76.0}, {"input": [-7.5, 76.5], "expected": 76.5}, {"input": [-7.5, 77.0], "expected": 77.0}, {"input": [-7.5, 77.5], "expected": 77.5}, {"input": [-7.5, 78.0], "expected": 78.0}, {"input": [-7.5, 78.5], "expected": 78.5}, {"input": [-7.5, 79.0], "expected": 79.0}, {"input": [-7.5, 79.5], "expected": 79.5}, {"input": [-7.5, 80.0], "expected": 80.0}, {"input": [-7.5, 80.5], "expected": 80.5}, {"input": [-7.5, 81.0], "expected": 81.0}, {"input": [-7.5, 81.5], "expected": 81.5}, {"input": [-7.5, 82.0], "expected": 82.0}, {"input": [-7.5, 82.5], "expected": 82.5}, {"input": [-7.5, 83.0], "expected": 83.0}, {"input": [-7.5, 83.5], "expected": 83.5}, {"input": [-7.5, 84.0], "expected": 84.0}, {"input": [-7.5, 84.5], "expected": 84.5}, {"input": [-7.5, 85.0], "expected": 85.0}, {"input": [-7.5, 85.5], "expected": 85.5}, {"input": [-7.5, 86.0], "expected": 86.0}, {"input": [-7.5, 86.5], "expected": 86.5}, {"input": [-7.5, 87.0], "expected": 87.0}, {"input": [-7.5, 87.5], "expected": 87.5}, {"input": [-7.5, 88.0], "expected": 88.0}, {"input": [-7.5, 88.5], "expected": 88.5}, {"input": [-7.5, 89.0], "expected": 89.0}, {"input": [-7.5, 89.5], "expected": 89.5}, {"input": [-7.5, 90.0], "expected": 90.0}, {"input": [-7.5, 90.5], "expected": 90.5}, {"input": [-7.5, 91.0], "expected": 91.0}, {"input": [-7.5, 91.5], "expected": 91.5}, {"input": [-7.5, 92.0], "expected": 92.0}, {"input": [-7.5, 92.5], "expected": 92.5}, {"input": [-7.5, 93.0], "expected": 93.0}, {"input": [-7.5, 93.5], "expected": 93.5}, {"input": [-7.5, 94.0], "expected": 94.0}, {"input": [-7.5, 94.5], "expected": 94.5}, {"input": [-7.5, 95.0], "expected": 95.0}, {"input": [-7.5, 95.5], "expected": 95.5}, {"input": [-7.5, 96.0], "expected": 96.0}, {"input": [-7.5, 96.5], "expected": 96.5}, {"input": [-7.5, 97.0], "expected": 97.0}, {"input": [-7.5, 97.5], "expected": 97.5}, {"input": [-7.5, 98.0], "expected": 98.0}, {"input": [-7.5, 98.5], "expected": 98.5}, {"input": [-7.5, 99.0], "expected": 99.0}, {"input": [-7.5, 99.5], "expected": 99.5}, {"input": [-7.0, -100.0], "expected": -7.0}, {"input": [-7.0, -99.5], "expected": -7.0}, {"input": [-7.0, -99.0], "expected": -7.0}, {"input": [-7.0, -98.5], "expected": -7.0}, {"input": [-7.0, -98.0], "expected": -7.0}, {"input": [-7.0, -97.5], "expected": -7.0}, {"input": [-7.0, -97.0], "expected": -7.0}, {"input": [-7.0, -96.5], "expected": -7.0}, {"input": [-7.0, -96.0], "expected": -7.0}, {"input": [-7.0, -95.5], "expected": -7.0}, {"input": [-7.0, -95.0], "expected": -7.0}, {"input": [-7.0, -94.5], "expected": -7.0}, {"input": [-7.0, -94.0], "expected": -7.0}, {"input": [-7.0, -93.5], "expected": -7.0}, {"input": [-7.0, -93.0], "expected": -7.0}, {"input": [-7.0, -92.5], "expected": -7.0}, {"input": [-7.0, -92.0], "expected": -7.0}, {"input": [-7.0, -91.5], "expected": -7.0}, {"input": [-7.0, -91.0], "expected": -7.0}, {"input": [-7.0, -90.5], "expected": -7.0}, {"input": [-7.0, -90.0], "expected": -7.0}, {"input": [-7.0, -89.5], "expected": -7.0}, {"input": [-7.0, -89.0], "expected": -7.0}, {"input": [-7.0, -88.5], "expected": -7.0}, {"input": [-7.0, -88.0], "expected": -7.0}, {"input": [-7.0, -87.5], "expected": -7.0}, {"input": [-7.0, -87.0], "expected": -7.0}, {"input": [-7.0, -86.5], "expected": -7.0}, {"input": [-7.0, -86.0], "expected": -7.0}, {"input": [-7.0, -85.5], "expected": -7.0}, {"input": [-7.0, -85.0], "expected": -7.0}, {"input": [-7.0, -84.5], "expected": -7.0}, {"input": [-7.0, -84.0], "expected": -7.0}, {"input": [-7.0, -83.5], "expected": -7.0}, {"input": [-7.0, -83.0], "expected": -7.0}, {"input": [-7.0, -82.5], "expected": -7.0}, {"input": [-7.0, -82.0], "expected": -7.0}, {"input": [-7.0, -81.5], "expected": -7.0}, {"input": [-7.0, -81.0], "expected": -7.0}, {"input": [-7.0, -80.5], "expected": -7.0}, {"input": [-7.0, -80.0], "expected": -7.0}, {"input": [-7.0, -79.5], "expected": -7.0}, {"input": [-7.0, -79.0], "expected": -7.0}, {"input": [-7.0, -78.5], "expected": -7.0}, {"input": [-7.0, -78.0], "expected": -7.0}, {"input": [-7.0, -77.5], "expected": -7.0}, {"input": [-7.0, -77.0], "expected": -7.0}, {"input": [-7.0, -76.5], "expected": -7.0}, {"input": [-7.0, -76.0], "expected": -7.0}, {"input": [-7.0, -75.5], "expected": -7.0}, {"input": [-7.0, -75.0], "expected": -7.0}, {"input": [-7.0, -74.5], "expected": -7.0}, {"input": [-7.0, -74.0], "expected": -7.0}, {"input": [-7.0, -73.5], "expected": -7.0}, {"input": [-7.0, -73.0], "expected": -7.0}, {"input": [-7.0, -72.5], "expected": -7.0}, {"input": [-7.0, -72.0], "expected": -7.0}, {"input": [-7.0, -71.5], "expected": -7.0}, {"input": [-7.0, -71.0], "expected": -7.0}, {"input": [-7.0, -70.5], "expected": -7.0}, {"input": [-7.0, -70.0], "expected": -7.0}, {"input": [-7.0, -69.5], "expected": -7.0}, {"input": [-7.0, -69.0], "expected": -7.0}, {"input": [-7.0, -68.5], "expected": -7.0}, {"input": [-7.0, -68.0], "expected": -7.0}, {"input": [-7.0, -67.5], "expected": -7.0}, {"input": [-7.0, -67.0], "expected": -7.0}, {"input": [-7.0, -66.5], "expected": -7.0}, {"input": [-7.0, -66.0], "expected": -7.0}, {"input": [-7.0, -65.5], "expected": -7.0}, {"input": [-7.0, -65.0], "expected": -7.0}, {"input": [-7.0, -64.5], "expected": -7.0}, {"input": [-7.0, -64.0], "expected": -7.0}, {"input": [-7.0, -63.5], "expected": -7.0}, {"input": [-7.0, -63.0], "expected": -7.0}, {"input": [-7.0, -62.5], "expected": -7.0}, {"input": [-7.0, -62.0], "expected": -7.0}, {"input": [-7.0, -61.5], "expected": -7.0}, {"input": [-7.0, -61.0], "expected": -7.0}, {"input": [-7.0, -60.5], "expected": -7.0}, {"input": [-7.0, -60.0], "expected": -7.0}, {"input": [-7.0, -59.5], "expected": -7.0}, {"input": [-7.0, -59.0], "expected": -7.0}, {"input": [-7.0, -58.5], "expected": -7.0}, {"input": [-7.0, -58.0], "expected": -7.0}, {"input": [-7.0, -57.5], "expected": -7.0}, {"input": [-7.0, -57.0], "expected": -7.0}, {"input": [-7.0, -56.5], "expected": -7.0}, {"input": [-7.0, -56.0], "expected": -7.0}, {"input": [-7.0, -55.5], "expected": -7.0}, {"input": [-7.0, -55.0], "expected": -7.0}, {"input": [-7.0, -54.5], "expected": -7.0}, {"input": [-7.0, -54.0], "expected": -7.0}, {"input": [-7.0, -53.5], "expected": -7.0}, {"input": [-7.0, -53.0], "expected": -7.0}, {"input": [-7.0, -52.5], "expected": -7.0}, {"input": [-7.0, -52.0], "expected": -7.0}, {"input": [-7.0, -51.5], "expected": -7.0}, {"input": [-7.0, -51.0], "expected": -7.0}, {"input": [-7.0, -50.5], "expected": -7.0}, {"input": [-7.0, -50.0], "expected": -7.0}, {"input": [-7.0, -49.5], "expected": -7.0}, {"input": [-7.0, -49.0], "expected": -7.0}, {"input": [-7.0, -48.5], "expected": -7.0}, {"input": [-7.0, -48.0], "expected": -7.0}, {"input": [-7.0, -47.5], "expected": -7.0}, {"input": [-7.0, -47.0], "expected": -7.0}, {"input": [-7.0, -46.5], "expected": -7.0}, {"input": [-7.0, -46.0], "expected": -7.0}, {"input": [-7.0, -45.5], "expected": -7.0}, {"input": [-7.0, -45.0], "expected": -7.0}, {"input": [-7.0, -44.5], "expected": -7.0}, {"input": [-7.0, -44.0], "expected": -7.0}, {"input": [-7.0, -43.5], "expected": -7.0}, {"input": [-7.0, -43.0], "expected": -7.0}, {"input": [-7.0, -42.5], "expected": -7.0}, {"input": [-7.0, -42.0], "expected": -6.999999999999999}, {"input": [-7.0, -41.5], "expected": -6.999999999999999}, {"input": [-7.0, -41.0], "expected": -6.999999999999998}, {"input": [-7.0, -40.5], "expected": -6.999999999999997}, {"input": [-7.0, -40.0], "expected": -6.999999999999996}, {"input": [-7.0, -39.5], "expected": -6.999999999999992}, {"input": [-7.0, -39.0], "expected": -6.999999999999988}, {"input": [-7.0, -38.5], "expected": -6.999999999999979}, {"input": [-7.0, -38.0], "expected": -6.999999999999965}, {"input": [-7.0, -37.5], "expected": -6.999999999999943}, {"input": [-7.0, -37.0], "expected": -6.999999999999907}, {"input": [-7.0, -36.5], "expected": -6.9999999999998455}, {"input": [-7.0, -36.0], "expected": -6.999999999999746}, {"input": [-7.0, -35.5], "expected": -6.999999999999581}, {"input": [-7.0, -35.0], "expected": -6.999999999999309}, {"input": [-7.0, -34.5], "expected": -6.99999999999886}, {"input": [-7.0, -34.0], "expected": -6.999999999998121}, {"input": [-7.0, -33.5], "expected": -6.999999999996901}, {"input": [-7.0, -33.0], "expected": -6.999999999994891}, {"input": [-7.0, -32.5], "expected": -6.9999999999915765}, {"input": [-7.0, -32.0], "expected": -6.999999999986112}, {"input": [-7.0, -31.5], "expected": -6.999999999977103}, {"input": [-7.0, -31.0], "expected": -6.999999999962249}, {"input": [-7.0, -30.5], "expected": -6.999999999937758}, {"input": [-7.0, -30.0], "expected": -6.999999999897382}, {"input": [-7.0, -29.5], "expected": -6.99999999983081}, {"input": [-7.0, -29.0], "expected": -6.999999999721053}, {"input": [-7.0, -28.5], "expected": -6.999999999540094}, {"input": [-7.0, -28.0], "expected": -6.999999999241744}, {"input": [-7.0, -27.5], "expected": -6.999999998749847}, {"input": [-7.0, -27.0], "expected": -6.999999997938846}, {"input": [-7.0, -26.5], "expected": -6.9999999966017326}, {"input": [-7.0, -26.0], "expected": -6.9999999943972036}, {"input": [-7.0, -25.5], "expected": -6.99999999076255}, {"input": [-7.0, -25.0], "expected": -6.99999998477002}, {"input": [-7.0, -24.5], "expected": -6.999999974890009}, {"input": [-7.0, -24.0], "expected": -6.999999958600624}, {"input": [-7.0, -23.5], "expected": -6.999999931743969}, {"input": [-7.0, -23.0], "expected": -6.999999887464831}, {"input": [-7.0, -22.5], "expected": -6.999999814460881}, {"input": [-7.0, -22.0], "expected": -6.999999694097727}, {"input": [-7.0, -21.5], "expected": -6.999999495652465}, {"input": [-7.0, -21.0], "expected": -6.999999168471627}, {"input": [-7.0, -20.5], "expected": -6.999998629041853}, {"input": [-7.0, -20.0], "expected": -6.999997739673147}, {"input": [-7.0, -19.5], "expected": -6.999996273353772}, {"input": [-7.0, -19.0], "expected": -6.9999938558065224}, {"input": [-7.0, -18.5], "expected": -6.9999898699577106}, {"input": [-7.0, -18.0], "expected": -6.999983298438681}, {"input": [-7.0, -17.5], "expected": -6.999972463929772}, {"input": [-7.0, -17.0], "expected": -6.999954601100783}, {"input": [-7.0, -16.5], "expected": -6.999925150971371}, {"input": [-7.0, -16.0], "expected": -6.999876597810276}, {"input": [-7.0, -15.5], "expected": -6.9997965523278705}, {"input": [-7.0, -15.0], "expected": -6.999664593627104}, {"input": [-7.0, -14.5], "expected": -6.999447068524639}, {"input": [-7.0, -14.0], "expected": -6.999088533546225}, {"input": [-7.0, -13.5], "expected": -6.998497689840246}, {"input": [-7.0, -13.0], "expected": -6.99752431486227}, {"input": [-7.0, -12.5], "expected": -6.995921556729429}, {"input": [-7.0, -12.0], "expected": -6.993284651510882}, {"input": [-7.0, -11.5], "expected": -6.988952255151406}, {"input": [-7.0, -11.0], "expected": -6.9818500720821906}, {"input": [-7.0, -10.5], "expected": -6.970249581727379}, {"input": [-7.0, -10.0], "expected": -6.951412648426258}, {"input": [-7.0, -9.5], "expected": -6.92111026570745}, {"input": [-7.0, -9.0], "expected": -6.873071988957028}, {"input": [-7.0, -8.5], "expected": -6.798586722017248}, {"input": [-7.0, -8.0], "expected": -6.686738312481777}, {"input": [-7.0, -7.5], "expected": -6.5259230158198935}, {"input": [-7.0, -7.0], "expected": -6.306852819440055}, {"input": [-7.0, -6.5], "expected": -6.0259230158198935}, {"input": [-7.0, -6.0], "expected": -5.686738312481777}, {"input": [-7.0, -5.5], "expected": -5.298586722017248}, {"input": [-7.0, -5.0], "expected": -4.873071988957028}, {"input": [-7.0, -4.5], "expected": -4.42111026570745}, {"input": [-7.0, -4.0], "expected": -3.951412648426258}, {"input": [-7.0, -3.5], "expected": -3.4702495817273795}, {"input": [-7.0, -3.0], "expected": -2.98185007208219}, {"input": [-7.0, -2.5], "expected": -2.488952255151406}, {"input": [-7.0, -2.0], "expected": -1.993284651510882}, {"input": [-7.0, -1.5], "expected": -1.4959215567294293}, {"input": [-7.0, -1.0], "expected": -0.9975243148622696}, {"input": [-7.0, -0.5], "expected": -0.49849768984024573}, {"input": [-7.0, 0.0], "expected": 0.0009114664537742447}, {"input": [-7.0, 0.5], "expected": 0.5005529314753608}, {"input": [-7.0, 1.0], "expected": 1.0003354063728958}, {"input": [-7.0, 1.5], "expected": 1.5002034476721295}, {"input": [-7.0, 2.0], "expected": 2.000123402189723}, {"input": [-7.0, 2.5], "expected": 2.5000748490286293}, {"input": [-7.0, 3.0], "expected": 3.000045398899217}, {"input": [-7.0, 3.5], "expected": 3.500027536070229}, {"input": [-7.0, 4.0], "expected": 4.000016701561319}, {"input": [-7.0, 4.5], "expected": 4.5000101300422894}, {"input": [-7.0, 5.0], "expected": 5.0000061441934776}, {"input": [-7.0, 5.5], "expected": 5.500003726646228}, {"input": [-7.0, 6.0], "expected": 6.000002260326853}, {"input": [-7.0, 6.5], "expected": 6.500001370958147}, {"input": [-7.0, 7.0], "expected": 7.000000831528373}, {"input": [-7.0, 7.5], "expected": 7.500000504347535}, {"input": [-7.0, 8.0], "expected": 8.000000305902274}, {"input": [-7.0, 8.5], "expected": 8.500000185539118}, {"input": [-7.0, 9.0], "expected": 9.000000112535169}, {"input": [-7.0, 9.5], "expected": 9.500000068256032}, {"input": [-7.0, 10.0], "expected": 10.000000041399376}, {"input": [-7.0, 10.5], "expected": 10.50000002510999}, {"input": [-7.0, 11.0], "expected": 11.000000015229979}, {"input": [-7.0, 11.5], "expected": 11.50000000923745}, {"input": [-7.0, 12.0], "expected": 12.000000005602796}, {"input": [-7.0, 12.5], "expected": 12.500000003398268}, {"input": [-7.0, 13.0], "expected": 13.000000002061153}, {"input": [-7.0, 13.5], "expected": 13.500000001250152}, {"input": [-7.0, 14.0], "expected": 14.000000000758256}, {"input": [-7.0, 14.5], "expected": 14.500000000459906}, {"input": [-7.0, 15.0], "expected": 15.000000000278947}, {"input": [-7.0, 15.5], "expected": 15.500000000169189}, {"input": [-7.0, 16.0], "expected": 16.00000000010262}, {"input": [-7.0, 16.5], "expected": 16.50000000006224}, {"input": [-7.0, 17.0], "expected": 17.00000000003775}, {"input": [-7.0, 17.5], "expected": 17.500000000022897}, {"input": [-7.0, 18.0], "expected": 18.000000000013888}, {"input": [-7.0, 18.5], "expected": 18.500000000008423}, {"input": [-7.0, 19.0], "expected": 19.00000000000511}, {"input": [-7.0, 19.5], "expected": 19.500000000003098}, {"input": [-7.0, 20.0], "expected": 20.00000000000188}, {"input": [-7.0, 20.5], "expected": 20.50000000000114}, {"input": [-7.0, 21.0], "expected": 21.000000000000693}, {"input": [-7.0, 21.5], "expected": 21.50000000000042}, {"input": [-7.0, 22.0], "expected": 22.000000000000256}, {"input": [-7.0, 22.5], "expected": 22.500000000000153}, {"input": [-7.0, 23.0], "expected": 23.000000000000092}, {"input": [-7.0, 23.5], "expected": 23.500000000000057}, {"input": [-7.0, 24.0], "expected": 24.000000000000036}, {"input": [-7.0, 24.5], "expected": 24.50000000000002}, {"input": [-7.0, 25.0], "expected": 25.000000000000014}, {"input": [-7.0, 25.5], "expected": 25.500000000000007}, {"input": [-7.0, 26.0], "expected": 26.000000000000004}, {"input": [-7.0, 26.5], "expected": 26.500000000000004}, {"input": [-7.0, 27.0], "expected": 27.0}, {"input": [-7.0, 27.5], "expected": 27.5}, {"input": [-7.0, 28.0], "expected": 28.0}, {"input": [-7.0, 28.5], "expected": 28.5}, {"input": [-7.0, 29.0], "expected": 29.0}, {"input": [-7.0, 29.5], "expected": 29.5}, {"input": [-7.0, 30.0], "expected": 30.0}, {"input": [-7.0, 30.5], "expected": 30.5}, {"input": [-7.0, 31.0], "expected": 31.0}, {"input": [-7.0, 31.5], "expected": 31.5}, {"input": [-7.0, 32.0], "expected": 32.0}, {"input": [-7.0, 32.5], "expected": 32.5}, {"input": [-7.0, 33.0], "expected": 33.0}, {"input": [-7.0, 33.5], "expected": 33.5}, {"input": [-7.0, 34.0], "expected": 34.0}, {"input": [-7.0, 34.5], "expected": 34.5}, {"input": [-7.0, 35.0], "expected": 35.0}, {"input": [-7.0, 35.5], "expected": 35.5}, {"input": [-7.0, 36.0], "expected": 36.0}, {"input": [-7.0, 36.5], "expected": 36.5}, {"input": [-7.0, 37.0], "expected": 37.0}, {"input": [-7.0, 37.5], "expected": 37.5}, {"input": [-7.0, 38.0], "expected": 38.0}, {"input": [-7.0, 38.5], "expected": 38.5}, {"input": [-7.0, 39.0], "expected": 39.0}, {"input": [-7.0, 39.5], "expected": 39.5}, {"input": [-7.0, 40.0], "expected": 40.0}, {"input": [-7.0, 40.5], "expected": 40.5}, {"input": [-7.0, 41.0], "expected": 41.0}, {"input": [-7.0, 41.5], "expected": 41.5}, {"input": [-7.0, 42.0], "expected": 42.0}, {"input": [-7.0, 42.5], "expected": 42.5}, {"input": [-7.0, 43.0], "expected": 43.0}, {"input": [-7.0, 43.5], "expected": 43.5}, {"input": [-7.0, 44.0], "expected": 44.0}, {"input": [-7.0, 44.5], "expected": 44.5}, {"input": [-7.0, 45.0], "expected": 45.0}, {"input": [-7.0, 45.5], "expected": 45.5}, {"input": [-7.0, 46.0], "expected": 46.0}, {"input": [-7.0, 46.5], "expected": 46.5}, {"input": [-7.0, 47.0], "expected": 47.0}, {"input": [-7.0, 47.5], "expected": 47.5}, {"input": [-7.0, 48.0], "expected": 48.0}, {"input": [-7.0, 48.5], "expected": 48.5}, {"input": [-7.0, 49.0], "expected": 49.0}, {"input": [-7.0, 49.5], "expected": 49.5}, {"input": [-7.0, 50.0], "expected": 50.0}, {"input": [-7.0, 50.5], "expected": 50.5}, {"input": [-7.0, 51.0], "expected": 51.0}, {"input": [-7.0, 51.5], "expected": 51.5}, {"input": [-7.0, 52.0], "expected": 52.0}, {"input": [-7.0, 52.5], "expected": 52.5}, {"input": [-7.0, 53.0], "expected": 53.0}, {"input": [-7.0, 53.5], "expected": 53.5}, {"input": [-7.0, 54.0], "expected": 54.0}, {"input": [-7.0, 54.5], "expected": 54.5}, {"input": [-7.0, 55.0], "expected": 55.0}, {"input": [-7.0, 55.5], "expected": 55.5}, {"input": [-7.0, 56.0], "expected": 56.0}, {"input": [-7.0, 56.5], "expected": 56.5}, {"input": [-7.0, 57.0], "expected": 57.0}, {"input": [-7.0, 57.5], "expected": 57.5}, {"input": [-7.0, 58.0], "expected": 58.0}, {"input": [-7.0, 58.5], "expected": 58.5}, {"input": [-7.0, 59.0], "expected": 59.0}, {"input": [-7.0, 59.5], "expected": 59.5}, {"input": [-7.0, 60.0], "expected": 60.0}, {"input": [-7.0, 60.5], "expected": 60.5}, {"input": [-7.0, 61.0], "expected": 61.0}, {"input": [-7.0, 61.5], "expected": 61.5}, {"input": [-7.0, 62.0], "expected": 62.0}, {"input": [-7.0, 62.5], "expected": 62.5}, {"input": [-7.0, 63.0], "expected": 63.0}, {"input": [-7.0, 63.5], "expected": 63.5}, {"input": [-7.0, 64.0], "expected": 64.0}, {"input": [-7.0, 64.5], "expected": 64.5}, {"input": [-7.0, 65.0], "expected": 65.0}, {"input": [-7.0, 65.5], "expected": 65.5}, {"input": [-7.0, 66.0], "expected": 66.0}, {"input": [-7.0, 66.5], "expected": 66.5}, {"input": [-7.0, 67.0], "expected": 67.0}, {"input": [-7.0, 67.5], "expected": 67.5}, {"input": [-7.0, 68.0], "expected": 68.0}, {"input": [-7.0, 68.5], "expected": 68.5}, {"input": [-7.0, 69.0], "expected": 69.0}, {"input": [-7.0, 69.5], "expected": 69.5}, {"input": [-7.0, 70.0], "expected": 70.0}, {"input": [-7.0, 70.5], "expected": 70.5}, {"input": [-7.0, 71.0], "expected": 71.0}, {"input": [-7.0, 71.5], "expected": 71.5}, {"input": [-7.0, 72.0], "expected": 72.0}, {"input": [-7.0, 72.5], "expected": 72.5}, {"input": [-7.0, 73.0], "expected": 73.0}, {"input": [-7.0, 73.5], "expected": 73.5}, {"input": [-7.0, 74.0], "expected": 74.0}, {"input": [-7.0, 74.5], "expected": 74.5}, {"input": [-7.0, 75.0], "expected": 75.0}, {"input": [-7.0, 75.5], "expected": 75.5}, {"input": [-7.0, 76.0], "expected": 76.0}, {"input": [-7.0, 76.5], "expected": 76.5}, {"input": [-7.0, 77.0], "expected": 77.0}, {"input": [-7.0, 77.5], "expected": 77.5}, {"input": [-7.0, 78.0], "expected": 78.0}, {"input": [-7.0, 78.5], "expected": 78.5}, {"input": [-7.0, 79.0], "expected": 79.0}, {"input": [-7.0, 79.5], "expected": 79.5}, {"input": [-7.0, 80.0], "expected": 80.0}, {"input": [-7.0, 80.5], "expected": 80.5}, {"input": [-7.0, 81.0], "expected": 81.0}, {"input": [-7.0, 81.5], "expected": 81.5}, {"input": [-7.0, 82.0], "expected": 82.0}, {"input": [-7.0, 82.5], "expected": 82.5}, {"input": [-7.0, 83.0], "expected": 83.0}, {"input": [-7.0, 83.5], "expected": 83.5}, {"input": [-7.0, 84.0], "expected": 84.0}, {"input": [-7.0, 84.5], "expected": 84.5}, {"input": [-7.0, 85.0], "expected": 85.0}, {"input": [-7.0, 85.5], "expected": 85.5}, {"input": [-7.0, 86.0], "expected": 86.0}, {"input": [-7.0, 86.5], "expected": 86.5}, {"input": [-7.0, 87.0], "expected": 87.0}, {"input": [-7.0, 87.5], "expected": 87.5}, {"input": [-7.0, 88.0], "expected": 88.0}, {"input": [-7.0, 88.5], "expected": 88.5}, {"input": [-7.0, 89.0], "expected": 89.0}, {"input": [-7.0, 89.5], "expected": 89.5}, {"input": [-7.0, 90.0], "expected": 90.0}, {"input": [-7.0, 90.5], "expected": 90.5}, {"input": [-7.0, 91.0], "expected": 91.0}, {"input": [-7.0, 91.5], "expected": 91.5}, {"input": [-7.0, 92.0], "expected": 92.0}, {"input": [-7.0, 92.5], "expected": 92.5}, {"input": [-7.0, 93.0], "expected": 93.0}, {"input": [-7.0, 93.5], "expected": 93.5}, {"input": [-7.0, 94.0], "expected": 94.0}, {"input": [-7.0, 94.5], "expected": 94.5}, {"input": [-7.0, 95.0], "expected": 95.0}, {"input": [-7.0, 95.5], "expected": 95.5}, {"input": [-7.0, 96.0], "expected": 96.0}, {"input": [-7.0, 96.5], "expected": 96.5}, {"input": [-7.0, 97.0], "expected": 97.0}, {"input": [-7.0, 97.5], "expected": 97.5}, {"input": [-7.0, 98.0], "expected": 98.0}, {"input": [-7.0, 98.5], "expected": 98.5}, {"input": [-7.0, 99.0], "expected": 99.0}, {"input": [-7.0, 99.5], "expected": 99.5}, {"input": [-6.5, -100.0], "expected": -6.5}, {"input": [-6.5, -99.5], "expected": -6.5}, {"input": [-6.5, -99.0], "expected": -6.5}, {"input": [-6.5, -98.5], "expected": -6.5}, {"input": [-6.5, -98.0], "expected": -6.5}, {"input": [-6.5, -97.5], "expected": -6.5}, {"input": [-6.5, -97.0], "expected": -6.5}, {"input": [-6.5, -96.5], "expected": -6.5}, {"input": [-6.5, -96.0], "expected": -6.5}, {"input": [-6.5, -95.5], "expected": -6.5}, {"input": [-6.5, -95.0], "expected": -6.5}, {"input": [-6.5, -94.5], "expected": -6.5}, {"input": [-6.5, -94.0], "expected": -6.5}, {"input": [-6.5, -93.5], "expected": -6.5}, {"input": [-6.5, -93.0], "expected": -6.5}, {"input": [-6.5, -92.5], "expected": -6.5}, {"input": [-6.5, -92.0], "expected": -6.5}, {"input": [-6.5, -91.5], "expected": -6.5}, {"input": [-6.5, -91.0], "expected": -6.5}, {"input": [-6.5, -90.5], "expected": -6.5}, {"input": [-6.5, -90.0], "expected": -6.5}, {"input": [-6.5, -89.5], "expected": -6.5}, {"input": [-6.5, -89.0], "expected": -6.5}, {"input": [-6.5, -88.5], "expected": -6.5}, {"input": [-6.5, -88.0], "expected": -6.5}, {"input": [-6.5, -87.5], "expected": -6.5}, {"input": [-6.5, -87.0], "expected": -6.5}, {"input": [-6.5, -86.5], "expected": -6.5}, {"input": [-6.5, -86.0], "expected": -6.5}, {"input": [-6.5, -85.5], "expected": -6.5}, {"input": [-6.5, -85.0], "expected": -6.5}, {"input": [-6.5, -84.5], "expected": -6.5}, {"input": [-6.5, -84.0], "expected": -6.5}, {"input": [-6.5, -83.5], "expected": -6.5}, {"input": [-6.5, -83.0], "expected": -6.5}, {"input": [-6.5, -82.5], "expected": -6.5}, {"input": [-6.5, -82.0], "expected": -6.5}, {"input": [-6.5, -81.5], "expected": -6.5}, {"input": [-6.5, -81.0], "expected": -6.5}, {"input": [-6.5, -80.5], "expected": -6.5}, {"input": [-6.5, -80.0], "expected": -6.5}, {"input": [-6.5, -79.5], "expected": -6.5}, {"input": [-6.5, -79.0], "expected": -6.5}, {"input": [-6.5, -78.5], "expected": -6.5}, {"input": [-6.5, -78.0], "expected": -6.5}, {"input": [-6.5, -77.5], "expected": -6.5}, {"input": [-6.5, -77.0], "expected": -6.5}, {"input": [-6.5, -76.5], "expected": -6.5}, {"input": [-6.5, -76.0], "expected": -6.5}, {"input": [-6.5, -75.5], "expected": -6.5}, {"input": [-6.5, -75.0], "expected": -6.5}, {"input": [-6.5, -74.5], "expected": -6.5}, {"input": [-6.5, -74.0], "expected": -6.5}, {"input": [-6.5, -73.5], "expected": -6.5}, {"input": [-6.5, -73.0], "expected": -6.5}, {"input": [-6.5, -72.5], "expected": -6.5}, {"input": [-6.5, -72.0], "expected": -6.5}, {"input": [-6.5, -71.5], "expected": -6.5}, {"input": [-6.5, -71.0], "expected": -6.5}, {"input": [-6.5, -70.5], "expected": -6.5}, {"input": [-6.5, -70.0], "expected": -6.5}, {"input": [-6.5, -69.5], "expected": -6.5}, {"input": [-6.5, -69.0], "expected": -6.5}, {"input": [-6.5, -68.5], "expected": -6.5}, {"input": [-6.5, -68.0], "expected": -6.5}, {"input": [-6.5, -67.5], "expected": -6.5}, {"input": [-6.5, -67.0], "expected": -6.5}, {"input": [-6.5, -66.5], "expected": -6.5}, {"input": [-6.5, -66.0], "expected": -6.5}, {"input": [-6.5, -65.5], "expected": -6.5}, {"input": [-6.5, -65.0], "expected": -6.5}, {"input": [-6.5, -64.5], "expected": -6.5}, {"input": [-6.5, -64.0], "expected": -6.5}, {"input": [-6.5, -63.5], "expected": -6.5}, {"input": [-6.5, -63.0], "expected": -6.5}, {"input": [-6.5, -62.5], "expected": -6.5}, {"input": [-6.5, -62.0], "expected": -6.5}, {"input": [-6.5, -61.5], "expected": -6.5}, {"input": [-6.5, -61.0], "expected": -6.5}, {"input": [-6.5, -60.5], "expected": -6.5}, {"input": [-6.5, -60.0], "expected": -6.5}, {"input": [-6.5, -59.5], "expected": -6.5}, {"input": [-6.5, -59.0], "expected": -6.5}, {"input": [-6.5, -58.5], "expected": -6.5}, {"input": [-6.5, -58.0], "expected": -6.5}, {"input": [-6.5, -57.5], "expected": -6.5}, {"input": [-6.5, -57.0], "expected": -6.5}, {"input": [-6.5, -56.5], "expected": -6.5}, {"input": [-6.5, -56.0], "expected": -6.5}, {"input": [-6.5, -55.5], "expected": -6.5}, {"input": [-6.5, -55.0], "expected": -6.5}, {"input": [-6.5, -54.5], "expected": -6.5}, {"input": [-6.5, -54.0], "expected": -6.5}, {"input": [-6.5, -53.5], "expected": -6.5}, {"input": [-6.5, -53.0], "expected": -6.5}, {"input": [-6.5, -52.5], "expected": -6.5}, {"input": [-6.5, -52.0], "expected": -6.5}, {"input": [-6.5, -51.5], "expected": -6.5}, {"input": [-6.5, -51.0], "expected": -6.5}, {"input": [-6.5, -50.5], "expected": -6.5}, {"input": [-6.5, -50.0], "expected": -6.5}, {"input": [-6.5, -49.5], "expected": -6.5}, {"input": [-6.5, -49.0], "expected": -6.5}, {"input": [-6.5, -48.5], "expected": -6.5}, {"input": [-6.5, -48.0], "expected": -6.5}, {"input": [-6.5, -47.5], "expected": -6.5}, {"input": [-6.5, -47.0], "expected": -6.5}, {"input": [-6.5, -46.5], "expected": -6.5}, {"input": [-6.5, -46.0], "expected": -6.5}, {"input": [-6.5, -45.5], "expected": -6.5}, {"input": [-6.5, -45.0], "expected": -6.5}, {"input": [-6.5, -44.5], "expected": -6.5}, {"input": [-6.5, -44.0], "expected": -6.5}, {"input": [-6.5, -43.5], "expected": -6.5}, {"input": [-6.5, -43.0], "expected": -6.5}, {"input": [-6.5, -42.5], "expected": -6.5}, {"input": [-6.5, -42.0], "expected": -6.5}, {"input": [-6.5, -41.5], "expected": -6.499999999999999}, {"input": [-6.5, -41.0], "expected": -6.499999999999999}, {"input": [-6.5, -40.5], "expected": -6.499999999999998}, {"input": [-6.5, -40.0], "expected": -6.499999999999997}, {"input": [-6.5, -39.5], "expected": -6.499999999999996}, {"input": [-6.5, -39.0], "expected": -6.499999999999992}, {"input": [-6.5, -38.5], "expected": -6.499999999999988}, {"input": [-6.5, -38.0], "expected": -6.499999999999979}, {"input": [-6.5, -37.5], "expected": -6.499999999999965}, {"input": [-6.5, -37.0], "expected": -6.499999999999943}, {"input": [-6.5, -36.5], "expected": -6.499999999999907}, {"input": [-6.5, -36.0], "expected": -6.4999999999998455}, {"input": [-6.5, -35.5], "expected": -6.499999999999746}, {"input": [-6.5, -35.0], "expected": -6.499999999999581}, {"input": [-6.5, -34.5], "expected": -6.499999999999309}, {"input": [-6.5, -34.0], "expected": -6.49999999999886}, {"input": [-6.5, -33.5], "expected": -6.499999999998121}, {"input": [-6.5, -33.0], "expected": -6.499999999996901}, {"input": [-6.5, -32.5], "expected": -6.499999999994891}, {"input": [-6.5, -32.0], "expected": -6.4999999999915765}, {"input": [-6.5, -31.5], "expected": -6.499999999986112}, {"input": [-6.5, -31.0], "expected": -6.499999999977103}, {"input": [-6.5, -30.5], "expected": -6.499999999962249}, {"input": [-6.5, -30.0], "expected": -6.499999999937758}, {"input": [-6.5, -29.5], "expected": -6.499999999897382}, {"input": [-6.5, -29.0], "expected": -6.49999999983081}, {"input": [-6.5, -28.5], "expected": -6.499999999721053}, {"input": [-6.5, -28.0], "expected": -6.499999999540094}, {"input": [-6.5, -27.5], "expected": -6.499999999241744}, {"input": [-6.5, -27.0], "expected": -6.499999998749847}, {"input": [-6.5, -26.5], "expected": -6.499999997938846}, {"input": [-6.5, -26.0], "expected": -6.4999999966017326}, {"input": [-6.5, -25.5], "expected": -6.4999999943972036}, {"input": [-6.5, -25.0], "expected": -6.49999999076255}, {"input": [-6.5, -24.5], "expected": -6.49999998477002}, {"input": [-6.5, -24.0], "expected": -6.499999974890009}, {"input": [-6.5, -23.5], "expected": -6.499999958600624}, {"input": [-6.5, -23.0], "expected": -6.499999931743969}, {"input": [-6.5, -22.5], "expected": -6.499999887464831}, {"input": [-6.5, -22.0], "expected": -6.499999814460881}, {"input": [-6.5, -21.5], "expected": -6.499999694097727}, {"input": [-6.5, -21.0], "expected": -6.499999495652465}, {"input": [-6.5, -20.5], "expected": -6.499999168471627}, {"input": [-6.5, -20.0], "expected": -6.499998629041853}, {"input": [-6.5, -19.5], "expected": -6.499997739673147}, {"input": [-6.5, -19.0], "expected": -6.499996273353772}, {"input": [-6.5, -18.5], "expected": -6.4999938558065224}, {"input": [-6.5, -18.0], "expected": -6.4999898699577106}, {"input": [-6.5, -17.5], "expected": -6.499983298438681}, {"input": [-6.5, -17.0], "expected": -6.499972463929772}, {"input": [-6.5, -16.5], "expected": -6.499954601100783}, {"input": [-6.5, -16.0], "expected": -6.499925150971371}, {"input": [-6.5, -15.5], "expected": -6.499876597810276}, {"input": [-6.5, -15.0], "expected": -6.4997965523278705}, {"input": [-6.5, -14.5], "expected": -6.499664593627104}, {"input": [-6.5, -14.0], "expected": -6.499447068524639}, {"input": [-6.5, -13.5], "expected": -6.499088533546225}, {"input": [-6.5, -13.0], "expected": -6.498497689840246}, {"input": [-6.5, -12.5], "expected": -6.49752431486227}, {"input": [-6.5, -12.0], "expected": -6.495921556729429}, {"input": [-6.5, -11.5], "expected": -6.493284651510882}, {"input": [-6.5, -11.0], "expected": -6.488952255151406}, {"input": [-6.5, -10.5], "expected": -6.4818500720821906}, {"input": [-6.5, -10.0], "expected": -6.470249581727379}, {"input": [-6.5, -9.5], "expected": -6.451412648426258}, {"input": [-6.5, -9.0], "expected": -6.42111026570745}, {"input": [-6.5, -8.5], "expected": -6.373071988957028}, {"input": [-6.5, -8.0], "expected": -6.298586722017248}, {"input": [-6.5, -7.5], "expected": -6.186738312481777}, {"input": [-6.5, -7.0], "expected": -6.0259230158198935}, {"input": [-6.5, -6.5], "expected": -5.806852819440055}, {"input": [-6.5, -6.0], "expected": -5.5259230158198935}, {"input": [-6.5, -5.5], "expected": -5.186738312481777}, {"input": [-6.5, -5.0], "expected": -4.798586722017248}, {"input": [-6.5, -4.5], "expected": -4.373071988957028}, {"input": [-6.5, -4.0], "expected": -3.9211102657074504}, {"input": [-6.5, -3.5], "expected": -3.451412648426258}, {"input": [-6.5, -3.0], "expected": -2.9702495817273795}, {"input": [-6.5, -2.5], "expected": -2.48185007208219}, {"input": [-6.5, -2.0], "expected": -1.9889522551514063}, {"input": [-6.5, -1.5], "expected": -1.493284651510882}, {"input": [-6.5, -1.0], "expected": -0.9959215567294293}, {"input": [-6.5, -0.5], "expected": -0.49752431486226956}, {"input": [-6.5, 0.0], "expected": 0.0015023101597542838}, {"input": [-6.5, 0.5], "expected": 0.5009114664537743}, {"input": [-6.5, 1.0], "expected": 1.0005529314753607}, {"input": [-6.5, 1.5], "expected": 1.5003354063728958}, {"input": [-6.5, 2.0], "expected": 2.0002034476721295}, {"input": [-6.5, 2.5], "expected": 2.500123402189723}, {"input": [-6.5, 3.0], "expected": 3.0000748490286293}, {"input": [-6.5, 3.5], "expected": 3.500045398899217}, {"input": [-6.5, 4.0], "expected": 4.000027536070228}, {"input": [-6.5, 4.5], "expected": 4.500016701561319}, {"input": [-6.5, 5.0], "expected": 5.0000101300422894}, {"input": [-6.5, 5.5], "expected": 5.5000061441934776}, {"input": [-6.5, 6.0], "expected": 6.000003726646228}, {"input": [-6.5, 6.5], "expected": 6.500002260326853}, {"input": [-6.5, 7.0], "expected": 7.000001370958147}, {"input": [-6.5, 7.5], "expected": 7.500000831528373}, {"input": [-6.5, 8.0], "expected": 8.000000504347536}, {"input": [-6.5, 8.5], "expected": 8.500000305902274}, {"input": [-6.5, 9.0], "expected": 9.000000185539118}, {"input": [-6.5, 9.5], "expected": 9.500000112535169}, {"input": [-6.5, 10.0], "expected": 10.000000068256032}, {"input": [-6.5, 10.5], "expected": 10.500000041399376}, {"input": [-6.5, 11.0], "expected": 11.00000002510999}, {"input": [-6.5, 11.5], "expected": 11.500000015229979}, {"input": [-6.5, 12.0], "expected": 12.00000000923745}, {"input": [-6.5, 12.5], "expected": 12.500000005602796}, {"input": [-6.5, 13.0], "expected": 13.000000003398268}, {"input": [-6.5, 13.5], "expected": 13.500000002061153}, {"input": [-6.5, 14.0], "expected": 14.000000001250152}, {"input": [-6.5, 14.5], "expected": 14.500000000758256}, {"input": [-6.5, 15.0], "expected": 15.000000000459906}, {"input": [-6.5, 15.5], "expected": 15.500000000278947}, {"input": [-6.5, 16.0], "expected": 16.00000000016919}, {"input": [-6.5, 16.5], "expected": 16.50000000010262}, {"input": [-6.5, 17.0], "expected": 17.00000000006224}, {"input": [-6.5, 17.5], "expected": 17.50000000003775}, {"input": [-6.5, 18.0], "expected": 18.000000000022897}, {"input": [-6.5, 18.5], "expected": 18.500000000013888}, {"input": [-6.5, 19.0], "expected": 19.000000000008423}, {"input": [-6.5, 19.5], "expected": 19.50000000000511}, {"input": [-6.5, 20.0], "expected": 20.000000000003098}, {"input": [-6.5, 20.5], "expected": 20.50000000000188}, {"input": [-6.5, 21.0], "expected": 21.00000000000114}, {"input": [-6.5, 21.5], "expected": 21.500000000000693}, {"input": [-6.5, 22.0], "expected": 22.00000000000042}, {"input": [-6.5, 22.5], "expected": 22.500000000000256}, {"input": [-6.5, 23.0], "expected": 23.000000000000153}, {"input": [-6.5, 23.5], "expected": 23.500000000000092}, {"input": [-6.5, 24.0], "expected": 24.000000000000057}, {"input": [-6.5, 24.5], "expected": 24.500000000000036}, {"input": [-6.5, 25.0], "expected": 25.00000000000002}, {"input": [-6.5, 25.5], "expected": 25.500000000000014}, {"input": [-6.5, 26.0], "expected": 26.000000000000007}, {"input": [-6.5, 26.5], "expected": 26.500000000000004}, {"input": [-6.5, 27.0], "expected": 27.000000000000004}, {"input": [-6.5, 27.5], "expected": 27.5}, {"input": [-6.5, 28.0], "expected": 28.0}, {"input": [-6.5, 28.5], "expected": 28.5}, {"input": [-6.5, 29.0], "expected": 29.0}, {"input": [-6.5, 29.5], "expected": 29.5}, {"input": [-6.5, 30.0], "expected": 30.0}, {"input": [-6.5, 30.5], "expected": 30.5}, {"input": [-6.5, 31.0], "expected": 31.0}, {"input": [-6.5, 31.5], "expected": 31.5}, {"input": [-6.5, 32.0], "expected": 32.0}, {"input": [-6.5, 32.5], "expected": 32.5}, {"input": [-6.5, 33.0], "expected": 33.0}, {"input": [-6.5, 33.5], "expected": 33.5}, {"input": [-6.5, 34.0], "expected": 34.0}, {"input": [-6.5, 34.5], "expected": 34.5}, {"input": [-6.5, 35.0], "expected": 35.0}, {"input": [-6.5, 35.5], "expected": 35.5}, {"input": [-6.5, 36.0], "expected": 36.0}, {"input": [-6.5, 36.5], "expected": 36.5}, {"input": [-6.5, 37.0], "expected": 37.0}, {"input": [-6.5, 37.5], "expected": 37.5}, {"input": [-6.5, 38.0], "expected": 38.0}, {"input": [-6.5, 38.5], "expected": 38.5}, {"input": [-6.5, 39.0], "expected": 39.0}, {"input": [-6.5, 39.5], "expected": 39.5}, {"input": [-6.5, 40.0], "expected": 40.0}, {"input": [-6.5, 40.5], "expected": 40.5}, {"input": [-6.5, 41.0], "expected": 41.0}, {"input": [-6.5, 41.5], "expected": 41.5}, {"input": [-6.5, 42.0], "expected": 42.0}, {"input": [-6.5, 42.5], "expected": 42.5}, {"input": [-6.5, 43.0], "expected": 43.0}, {"input": [-6.5, 43.5], "expected": 43.5}, {"input": [-6.5, 44.0], "expected": 44.0}, {"input": [-6.5, 44.5], "expected": 44.5}, {"input": [-6.5, 45.0], "expected": 45.0}, {"input": [-6.5, 45.5], "expected": 45.5}, {"input": [-6.5, 46.0], "expected": 46.0}, {"input": [-6.5, 46.5], "expected": 46.5}, {"input": [-6.5, 47.0], "expected": 47.0}, {"input": [-6.5, 47.5], "expected": 47.5}, {"input": [-6.5, 48.0], "expected": 48.0}, {"input": [-6.5, 48.5], "expected": 48.5}, {"input": [-6.5, 49.0], "expected": 49.0}, {"input": [-6.5, 49.5], "expected": 49.5}, {"input": [-6.5, 50.0], "expected": 50.0}, {"input": [-6.5, 50.5], "expected": 50.5}, {"input": [-6.5, 51.0], "expected": 51.0}, {"input": [-6.5, 51.5], "expected": 51.5}, {"input": [-6.5, 52.0], "expected": 52.0}, {"input": [-6.5, 52.5], "expected": 52.5}, {"input": [-6.5, 53.0], "expected": 53.0}, {"input": [-6.5, 53.5], "expected": 53.5}, {"input": [-6.5, 54.0], "expected": 54.0}, {"input": [-6.5, 54.5], "expected": 54.5}, {"input": [-6.5, 55.0], "expected": 55.0}, {"input": [-6.5, 55.5], "expected": 55.5}, {"input": [-6.5, 56.0], "expected": 56.0}, {"input": [-6.5, 56.5], "expected": 56.5}, {"input": [-6.5, 57.0], "expected": 57.0}, {"input": [-6.5, 57.5], "expected": 57.5}, {"input": [-6.5, 58.0], "expected": 58.0}, {"input": [-6.5, 58.5], "expected": 58.5}, {"input": [-6.5, 59.0], "expected": 59.0}, {"input": [-6.5, 59.5], "expected": 59.5}, {"input": [-6.5, 60.0], "expected": 60.0}, {"input": [-6.5, 60.5], "expected": 60.5}, {"input": [-6.5, 61.0], "expected": 61.0}, {"input": [-6.5, 61.5], "expected": 61.5}, {"input": [-6.5, 62.0], "expected": 62.0}, {"input": [-6.5, 62.5], "expected": 62.5}, {"input": [-6.5, 63.0], "expected": 63.0}, {"input": [-6.5, 63.5], "expected": 63.5}, {"input": [-6.5, 64.0], "expected": 64.0}, {"input": [-6.5, 64.5], "expected": 64.5}, {"input": [-6.5, 65.0], "expected": 65.0}, {"input": [-6.5, 65.5], "expected": 65.5}, {"input": [-6.5, 66.0], "expected": 66.0}, {"input": [-6.5, 66.5], "expected": 66.5}, {"input": [-6.5, 67.0], "expected": 67.0}, {"input": [-6.5, 67.5], "expected": 67.5}, {"input": [-6.5, 68.0], "expected": 68.0}, {"input": [-6.5, 68.5], "expected": 68.5}, {"input": [-6.5, 69.0], "expected": 69.0}, {"input": [-6.5, 69.5], "expected": 69.5}, {"input": [-6.5, 70.0], "expected": 70.0}, {"input": [-6.5, 70.5], "expected": 70.5}, {"input": [-6.5, 71.0], "expected": 71.0}, {"input": [-6.5, 71.5], "expected": 71.5}, {"input": [-6.5, 72.0], "expected": 72.0}, {"input": [-6.5, 72.5], "expected": 72.5}, {"input": [-6.5, 73.0], "expected": 73.0}, {"input": [-6.5, 73.5], "expected": 73.5}, {"input": [-6.5, 74.0], "expected": 74.0}, {"input": [-6.5, 74.5], "expected": 74.5}, {"input": [-6.5, 75.0], "expected": 75.0}, {"input": [-6.5, 75.5], "expected": 75.5}, {"input": [-6.5, 76.0], "expected": 76.0}, {"input": [-6.5, 76.5], "expected": 76.5}, {"input": [-6.5, 77.0], "expected": 77.0}, {"input": [-6.5, 77.5], "expected": 77.5}, {"input": [-6.5, 78.0], "expected": 78.0}, {"input": [-6.5, 78.5], "expected": 78.5}, {"input": [-6.5, 79.0], "expected": 79.0}, {"input": [-6.5, 79.5], "expected": 79.5}, {"input": [-6.5, 80.0], "expected": 80.0}, {"input": [-6.5, 80.5], "expected": 80.5}, {"input": [-6.5, 81.0], "expected": 81.0}, {"input": [-6.5, 81.5], "expected": 81.5}, {"input": [-6.5, 82.0], "expected": 82.0}, {"input": [-6.5, 82.5], "expected": 82.5}, {"input": [-6.5, 83.0], "expected": 83.0}, {"input": [-6.5, 83.5], "expected": 83.5}, {"input": [-6.5, 84.0], "expected": 84.0}, {"input": [-6.5, 84.5], "expected": 84.5}, {"input": [-6.5, 85.0], "expected": 85.0}, {"input": [-6.5, 85.5], "expected": 85.5}, {"input": [-6.5, 86.0], "expected": 86.0}, {"input": [-6.5, 86.5], "expected": 86.5}, {"input": [-6.5, 87.0], "expected": 87.0}, {"input": [-6.5, 87.5], "expected": 87.5}, {"input": [-6.5, 88.0], "expected": 88.0}, {"input": [-6.5, 88.5], "expected": 88.5}, {"input": [-6.5, 89.0], "expected": 89.0}, {"input": [-6.5, 89.5], "expected": 89.5}, {"input": [-6.5, 90.0], "expected": 90.0}, {"input": [-6.5, 90.5], "expected": 90.5}, {"input": [-6.5, 91.0], "expected": 91.0}, {"input": [-6.5, 91.5], "expected": 91.5}, {"input": [-6.5, 92.0], "expected": 92.0}, {"input": [-6.5, 92.5], "expected": 92.5}, {"input": [-6.5, 93.0], "expected": 93.0}, {"input": [-6.5, 93.5], "expected": 93.5}, {"input": [-6.5, 94.0], "expected": 94.0}, {"input": [-6.5, 94.5], "expected": 94.5}, {"input": [-6.5, 95.0], "expected": 95.0}, {"input": [-6.5, 95.5], "expected": 95.5}, {"input": [-6.5, 96.0], "expected": 96.0}, {"input": [-6.5, 96.5], "expected": 96.5}, {"input": [-6.5, 97.0], "expected": 97.0}, {"input": [-6.5, 97.5], "expected": 97.5}, {"input": [-6.5, 98.0], "expected": 98.0}, {"input": [-6.5, 98.5], "expected": 98.5}, {"input": [-6.5, 99.0], "expected": 99.0}, {"input": [-6.5, 99.5], "expected": 99.5}, {"input": [-6.0, -100.0], "expected": -6.0}, {"input": [-6.0, -99.5], "expected": -6.0}, {"input": [-6.0, -99.0], "expected": -6.0}, {"input": [-6.0, -98.5], "expected": -6.0}, {"input": [-6.0, -98.0], "expected": -6.0}, {"input": [-6.0, -97.5], "expected": -6.0}, {"input": [-6.0, -97.0], "expected": -6.0}, {"input": [-6.0, -96.5], "expected": -6.0}, {"input": [-6.0, -96.0], "expected": -6.0}, {"input": [-6.0, -95.5], "expected": -6.0}, {"input": [-6.0, -95.0], "expected": -6.0}, {"input": [-6.0, -94.5], "expected": -6.0}, {"input": [-6.0, -94.0], "expected": -6.0}, {"input": [-6.0, -93.5], "expected": -6.0}, {"input": [-6.0, -93.0], "expected": -6.0}, {"input": [-6.0, -92.5], "expected": -6.0}, {"input": [-6.0, -92.0], "expected": -6.0}, {"input": [-6.0, -91.5], "expected": -6.0}, {"input": [-6.0, -91.0], "expected": -6.0}, {"input": [-6.0, -90.5], "expected": -6.0}, {"input": [-6.0, -90.0], "expected": -6.0}, {"input": [-6.0, -89.5], "expected": -6.0}, {"input": [-6.0, -89.0], "expected": -6.0}, {"input": [-6.0, -88.5], "expected": -6.0}, {"input": [-6.0, -88.0], "expected": -6.0}, {"input": [-6.0, -87.5], "expected": -6.0}, {"input": [-6.0, -87.0], "expected": -6.0}, {"input": [-6.0, -86.5], "expected": -6.0}, {"input": [-6.0, -86.0], "expected": -6.0}, {"input": [-6.0, -85.5], "expected": -6.0}, {"input": [-6.0, -85.0], "expected": -6.0}, {"input": [-6.0, -84.5], "expected": -6.0}, {"input": [-6.0, -84.0], "expected": -6.0}, {"input": [-6.0, -83.5], "expected": -6.0}, {"input": [-6.0, -83.0], "expected": -6.0}, {"input": [-6.0, -82.5], "expected": -6.0}, {"input": [-6.0, -82.0], "expected": -6.0}, {"input": [-6.0, -81.5], "expected": -6.0}, {"input": [-6.0, -81.0], "expected": -6.0}, {"input": [-6.0, -80.5], "expected": -6.0}, {"input": [-6.0, -80.0], "expected": -6.0}, {"input": [-6.0, -79.5], "expected": -6.0}, {"input": [-6.0, -79.0], "expected": -6.0}, {"input": [-6.0, -78.5], "expected": -6.0}, {"input": [-6.0, -78.0], "expected": -6.0}, {"input": [-6.0, -77.5], "expected": -6.0}, {"input": [-6.0, -77.0], "expected": -6.0}, {"input": [-6.0, -76.5], "expected": -6.0}, {"input": [-6.0, -76.0], "expected": -6.0}, {"input": [-6.0, -75.5], "expected": -6.0}, {"input": [-6.0, -75.0], "expected": -6.0}, {"input": [-6.0, -74.5], "expected": -6.0}, {"input": [-6.0, -74.0], "expected": -6.0}, {"input": [-6.0, -73.5], "expected": -6.0}, {"input": [-6.0, -73.0], "expected": -6.0}, {"input": [-6.0, -72.5], "expected": -6.0}, {"input": [-6.0, -72.0], "expected": -6.0}, {"input": [-6.0, -71.5], "expected": -6.0}, {"input": [-6.0, -71.0], "expected": -6.0}, {"input": [-6.0, -70.5], "expected": -6.0}, {"input": [-6.0, -70.0], "expected": -6.0}, {"input": [-6.0, -69.5], "expected": -6.0}, {"input": [-6.0, -69.0], "expected": -6.0}, {"input": [-6.0, -68.5], "expected": -6.0}, {"input": [-6.0, -68.0], "expected": -6.0}, {"input": [-6.0, -67.5], "expected": -6.0}, {"input": [-6.0, -67.0], "expected": -6.0}, {"input": [-6.0, -66.5], "expected": -6.0}, {"input": [-6.0, -66.0], "expected": -6.0}, {"input": [-6.0, -65.5], "expected": -6.0}, {"input": [-6.0, -65.0], "expected": -6.0}, {"input": [-6.0, -64.5], "expected": -6.0}, {"input": [-6.0, -64.0], "expected": -6.0}, {"input": [-6.0, -63.5], "expected": -6.0}, {"input": [-6.0, -63.0], "expected": -6.0}, {"input": [-6.0, -62.5], "expected": -6.0}, {"input": [-6.0, -62.0], "expected": -6.0}, {"input": [-6.0, -61.5], "expected": -6.0}, {"input": [-6.0, -61.0], "expected": -6.0}, {"input": [-6.0, -60.5], "expected": -6.0}, {"input": [-6.0, -60.0], "expected": -6.0}, {"input": [-6.0, -59.5], "expected": -6.0}, {"input": [-6.0, -59.0], "expected": -6.0}, {"input": [-6.0, -58.5], "expected": -6.0}, {"input": [-6.0, -58.0], "expected": -6.0}, {"input": [-6.0, -57.5], "expected": -6.0}, {"input": [-6.0, -57.0], "expected": -6.0}, {"input": [-6.0, -56.5], "expected": -6.0}, {"input": [-6.0, -56.0], "expected": -6.0}, {"input": [-6.0, -55.5], "expected": -6.0}, {"input": [-6.0, -55.0], "expected": -6.0}, {"input": [-6.0, -54.5], "expected": -6.0}, {"input": [-6.0, -54.0], "expected": -6.0}, {"input": [-6.0, -53.5], "expected": -6.0}, {"input": [-6.0, -53.0], "expected": -6.0}, {"input": [-6.0, -52.5], "expected": -6.0}, {"input": [-6.0, -52.0], "expected": -6.0}, {"input": [-6.0, -51.5], "expected": -6.0}, {"input": [-6.0, -51.0], "expected": -6.0}, {"input": [-6.0, -50.5], "expected": -6.0}, {"input": [-6.0, -50.0], "expected": -6.0}, {"input": [-6.0, -49.5], "expected": -6.0}, {"input": [-6.0, -49.0], "expected": -6.0}, {"input": [-6.0, -48.5], "expected": -6.0}, {"input": [-6.0, -48.0], "expected": -6.0}, {"input": [-6.0, -47.5], "expected": -6.0}, {"input": [-6.0, -47.0], "expected": -6.0}, {"input": [-6.0, -46.5], "expected": -6.0}, {"input": [-6.0, -46.0], "expected": -6.0}, {"input": [-6.0, -45.5], "expected": -6.0}, {"input": [-6.0, -45.0], "expected": -6.0}, {"input": [-6.0, -44.5], "expected": -6.0}, {"input": [-6.0, -44.0], "expected": -6.0}, {"input": [-6.0, -43.5], "expected": -6.0}, {"input": [-6.0, -43.0], "expected": -6.0}, {"input": [-6.0, -42.5], "expected": -6.0}, {"input": [-6.0, -42.0], "expected": -6.0}, {"input": [-6.0, -41.5], "expected": -6.0}, {"input": [-6.0, -41.0], "expected": -5.999999999999999}, {"input": [-6.0, -40.5], "expected": -5.999999999999999}, {"input": [-6.0, -40.0], "expected": -5.999999999999998}, {"input": [-6.0, -39.5], "expected": -5.999999999999997}, {"input": [-6.0, -39.0], "expected": -5.999999999999996}, {"input": [-6.0, -38.5], "expected": -5.999999999999992}, {"input": [-6.0, -38.0], "expected": -5.999999999999988}, {"input": [-6.0, -37.5], "expected": -5.999999999999979}, {"input": [-6.0, -37.0], "expected": -5.999999999999965}, {"input": [-6.0, -36.5], "expected": -5.999999999999943}, {"input": [-6.0, -36.0], "expected": -5.999999999999907}, {"input": [-6.0, -35.5], "expected": -5.9999999999998455}, {"input": [-6.0, -35.0], "expected": -5.999999999999746}, {"input": [-6.0, -34.5], "expected": -5.999999999999581}, {"input": [-6.0, -34.0], "expected": -5.999999999999309}, {"input": [-6.0, -33.5], "expected": -5.99999999999886}, {"input": [-6.0, -33.0], "expected": -5.999999999998121}, {"input": [-6.0, -32.5], "expected": -5.999999999996901}, {"input": [-6.0, -32.0], "expected": -5.999999999994891}, {"input": [-6.0, -31.5], "expected": -5.9999999999915765}, {"input": [-6.0, -31.0], "expected": -5.999999999986112}, {"input": [-6.0, -30.5], "expected": -5.999999999977103}, {"input": [-6.0, -30.0], "expected": -5.999999999962249}, {"input": [-6.0, -29.5], "expected": -5.999999999937758}, {"input": [-6.0, -29.0], "expected": -5.999999999897382}, {"input": [-6.0, -28.5], "expected": -5.99999999983081}, {"input": [-6.0, -28.0], "expected": -5.999999999721053}, {"input": [-6.0, -27.5], "expected": -5.999999999540094}, {"input": [-6.0, -27.0], "expected": -5.999999999241744}, {"input": [-6.0, -26.5], "expected": -5.999999998749847}, {"input": [-6.0, -26.0], "expected": -5.999999997938846}, {"input": [-6.0, -25.5], "expected": -5.9999999966017326}, {"input": [-6.0, -25.0], "expected": -5.9999999943972036}, {"input": [-6.0, -24.5], "expected": -5.99999999076255}, {"input": [-6.0, -24.0], "expected": -5.99999998477002}, {"input": [-6.0, -23.5], "expected": -5.999999974890009}, {"input": [-6.0, -23.0], "expected": -5.999999958600624}, {"input": [-6.0, -22.5], "expected": -5.999999931743969}, {"input": [-6.0, -22.0], "expected": -5.999999887464831}, {"input": [-6.0, -21.5], "expected": -5.999999814460881}, {"input": [-6.0, -21.0], "expected": -5.999999694097727}, {"input": [-6.0, -20.5], "expected": -5.999999495652465}, {"input": [-6.0, -20.0], "expected": -5.999999168471627}, {"input": [-6.0, -19.5], "expected": -5.999998629041853}, {"input": [-6.0, -19.0], "expected": -5.999997739673147}, {"input": [-6.0, -18.5], "expected": -5.999996273353772}, {"input": [-6.0, -18.0], "expected": -5.9999938558065224}, {"input": [-6.0, -17.5], "expected": -5.9999898699577106}, {"input": [-6.0, -17.0], "expected": -5.999983298438681}, {"input": [-6.0, -16.5], "expected": -5.999972463929772}, {"input": [-6.0, -16.0], "expected": -5.999954601100783}, {"input": [-6.0, -15.5], "expected": -5.999925150971371}, {"input": [-6.0, -15.0], "expected": -5.999876597810276}, {"input": [-6.0, -14.5], "expected": -5.9997965523278705}, {"input": [-6.0, -14.0], "expected": -5.999664593627104}, {"input": [-6.0, -13.5], "expected": -5.999447068524639}, {"input": [-6.0, -13.0], "expected": -5.999088533546225}, {"input": [-6.0, -12.5], "expected": -5.998497689840246}, {"input": [-6.0, -12.0], "expected": -5.99752431486227}, {"input": [-6.0, -11.5], "expected": -5.995921556729429}, {"input": [-6.0, -11.0], "expected": -5.993284651510882}, {"input": [-6.0, -10.5], "expected": -5.988952255151406}, {"input": [-6.0, -10.0], "expected": -5.9818500720821906}, {"input": [-6.0, -9.5], "expected": -5.970249581727379}, {"input": [-6.0, -9.0], "expected": -5.951412648426258}, {"input": [-6.0, -8.5], "expected": -5.92111026570745}, {"input": [-6.0, -8.0], "expected": -5.873071988957028}, {"input": [-6.0, -7.5], "expected": -5.798586722017248}, {"input": [-6.0, -7.0], "expected": -5.686738312481777}, {"input": [-6.0, -6.5], "expected": -5.5259230158198935}, {"input": [-6.0, -6.0], "expected": -5.306852819440055}, {"input": [-6.0, -5.5], "expected": -5.0259230158198935}, {"input": [-6.0, -5.0], "expected": -4.686738312481777}, {"input": [-6.0, -4.5], "expected": -4.298586722017248}, {"input": [-6.0, -4.0], "expected": -3.8730719889570273}, {"input": [-6.0, -3.5], "expected": -3.4211102657074504}, {"input": [-6.0, -3.0], "expected": -2.951412648426258}, {"input": [-6.0, -2.5], "expected": -2.4702495817273795}, {"input": [-6.0, -2.0], "expected": -1.9818500720821903}, {"input": [-6.0, -1.5], "expected": -1.4889522551514063}, {"input": [-6.0, -1.0], "expected": -0.993284651510882}, {"input": [-6.0, -0.5], "expected": -0.4959215567294293}, {"input": [-6.0, 0.0], "expected": 0.0024756851377304495}, {"input": [-6.0, 0.5], "expected": 0.5015023101597543}, {"input": [-6.0, 1.0], "expected": 1.0009114664537742}, {"input": [-6.0, 1.5], "expected": 1.5005529314753607}, {"input": [-6.0, 2.0], "expected": 2.000335406372896}, {"input": [-6.0, 2.5], "expected": 2.5002034476721295}, {"input": [-6.0, 3.0], "expected": 3.000123402189723}, {"input": [-6.0, 3.5], "expected": 3.5000748490286293}, {"input": [-6.0, 4.0], "expected": 4.000045398899217}, {"input": [-6.0, 4.5], "expected": 4.500027536070228}, {"input": [-6.0, 5.0], "expected": 5.000016701561319}, {"input": [-6.0, 5.5], "expected": 5.5000101300422894}, {"input": [-6.0, 6.0], "expected": 6.0000061441934776}, {"input": [-6.0, 6.5], "expected": 6.500003726646228}, {"input": [-6.0, 7.0], "expected": 7.000002260326853}, {"input": [-6.0, 7.5], "expected": 7.500001370958147}, {"input": [-6.0, 8.0], "expected": 8.000000831528373}, {"input": [-6.0, 8.5], "expected": 8.500000504347536}, {"input": [-6.0, 9.0], "expected": 9.000000305902274}, {"input": [-6.0, 9.5], "expected": 9.500000185539118}, {"input": [-6.0, 10.0], "expected": 10.000000112535169}, {"input": [-6.0, 10.5], "expected": 10.500000068256032}, {"input": [-6.0, 11.0], "expected": 11.000000041399376}, {"input": [-6.0, 11.5], "expected": 11.50000002510999}, {"input": [-6.0, 12.0], "expected": 12.000000015229979}, {"input": [-6.0, 12.5], "expected": 12.50000000923745}, {"input": [-6.0, 13.0], "expected": 13.000000005602796}, {"input": [-6.0, 13.5], "expected": 13.500000003398268}, {"input": [-6.0, 14.0], "expected": 14.000000002061153}, {"input": [-6.0, 14.5], "expected": 14.500000001250152}, {"input": [-6.0, 15.0], "expected": 15.000000000758256}, {"input": [-6.0, 15.5], "expected": 15.500000000459906}, {"input": [-6.0, 16.0], "expected": 16.00000000027895}, {"input": [-6.0, 16.5], "expected": 16.50000000016919}, {"input": [-6.0, 17.0], "expected": 17.00000000010262}, {"input": [-6.0, 17.5], "expected": 17.50000000006224}, {"input": [-6.0, 18.0], "expected": 18.00000000003775}, {"input": [-6.0, 18.5], "expected": 18.500000000022897}, {"input": [-6.0, 19.0], "expected": 19.000000000013888}, {"input": [-6.0, 19.5], "expected": 19.500000000008423}, {"input": [-6.0, 20.0], "expected": 20.00000000000511}, {"input": [-6.0, 20.5], "expected": 20.500000000003098}, {"input": [-6.0, 21.0], "expected": 21.00000000000188}, {"input": [-6.0, 21.5], "expected": 21.50000000000114}, {"input": [-6.0, 22.0], "expected": 22.000000000000693}, {"input": [-6.0, 22.5], "expected": 22.50000000000042}, {"input": [-6.0, 23.0], "expected": 23.000000000000256}, {"input": [-6.0, 23.5], "expected": 23.500000000000153}, {"input": [-6.0, 24.0], "expected": 24.000000000000092}, {"input": [-6.0, 24.5], "expected": 24.500000000000057}, {"input": [-6.0, 25.0], "expected": 25.000000000000036}, {"input": [-6.0, 25.5], "expected": 25.50000000000002}, {"input": [-6.0, 26.0], "expected": 26.000000000000014}, {"input": [-6.0, 26.5], "expected": 26.500000000000007}, {"input": [-6.0, 27.0], "expected": 27.000000000000004}, {"input": [-6.0, 27.5], "expected": 27.500000000000004}, {"input": [-6.0, 28.0], "expected": 28.0}, {"input": [-6.0, 28.5], "expected": 28.5}, {"input": [-6.0, 29.0], "expected": 29.0}, {"input": [-6.0, 29.5], "expected": 29.5}, {"input": [-6.0, 30.0], "expected": 30.0}, {"input": [-6.0, 30.5], "expected": 30.5}, {"input": [-6.0, 31.0], "expected": 31.0}, {"input": [-6.0, 31.5], "expected": 31.5}, {"input": [-6.0, 32.0], "expected": 32.0}, {"input": [-6.0, 32.5], "expected": 32.5}, {"input": [-6.0, 33.0], "expected": 33.0}, {"input": [-6.0, 33.5], "expected": 33.5}, {"input": [-6.0, 34.0], "expected": 34.0}, {"input": [-6.0, 34.5], "expected": 34.5}, {"input": [-6.0, 35.0], "expected": 35.0}, {"input": [-6.0, 35.5], "expected": 35.5}, {"input": [-6.0, 36.0], "expected": 36.0}, {"input": [-6.0, 36.5], "expected": 36.5}, {"input": [-6.0, 37.0], "expected": 37.0}, {"input": [-6.0, 37.5], "expected": 37.5}, {"input": [-6.0, 38.0], "expected": 38.0}, {"input": [-6.0, 38.5], "expected": 38.5}, {"input": [-6.0, 39.0], "expected": 39.0}, {"input": [-6.0, 39.5], "expected": 39.5}, {"input": [-6.0, 40.0], "expected": 40.0}, {"input": [-6.0, 40.5], "expected": 40.5}, {"input": [-6.0, 41.0], "expected": 41.0}, {"input": [-6.0, 41.5], "expected": 41.5}, {"input": [-6.0, 42.0], "expected": 42.0}, {"input": [-6.0, 42.5], "expected": 42.5}, {"input": [-6.0, 43.0], "expected": 43.0}, {"input": [-6.0, 43.5], "expected": 43.5}, {"input": [-6.0, 44.0], "expected": 44.0}, {"input": [-6.0, 44.5], "expected": 44.5}, {"input": [-6.0, 45.0], "expected": 45.0}, {"input": [-6.0, 45.5], "expected": 45.5}, {"input": [-6.0, 46.0], "expected": 46.0}, {"input": [-6.0, 46.5], "expected": 46.5}, {"input": [-6.0, 47.0], "expected": 47.0}, {"input": [-6.0, 47.5], "expected": 47.5}, {"input": [-6.0, 48.0], "expected": 48.0}, {"input": [-6.0, 48.5], "expected": 48.5}, {"input": [-6.0, 49.0], "expected": 49.0}, {"input": [-6.0, 49.5], "expected": 49.5}, {"input": [-6.0, 50.0], "expected": 50.0}, {"input": [-6.0, 50.5], "expected": 50.5}, {"input": [-6.0, 51.0], "expected": 51.0}, {"input": [-6.0, 51.5], "expected": 51.5}, {"input": [-6.0, 52.0], "expected": 52.0}, {"input": [-6.0, 52.5], "expected": 52.5}, {"input": [-6.0, 53.0], "expected": 53.0}, {"input": [-6.0, 53.5], "expected": 53.5}, {"input": [-6.0, 54.0], "expected": 54.0}, {"input": [-6.0, 54.5], "expected": 54.5}, {"input": [-6.0, 55.0], "expected": 55.0}, {"input": [-6.0, 55.5], "expected": 55.5}, {"input": [-6.0, 56.0], "expected": 56.0}, {"input": [-6.0, 56.5], "expected": 56.5}, {"input": [-6.0, 57.0], "expected": 57.0}, {"input": [-6.0, 57.5], "expected": 57.5}, {"input": [-6.0, 58.0], "expected": 58.0}, {"input": [-6.0, 58.5], "expected": 58.5}, {"input": [-6.0, 59.0], "expected": 59.0}, {"input": [-6.0, 59.5], "expected": 59.5}, {"input": [-6.0, 60.0], "expected": 60.0}, {"input": [-6.0, 60.5], "expected": 60.5}, {"input": [-6.0, 61.0], "expected": 61.0}, {"input": [-6.0, 61.5], "expected": 61.5}, {"input": [-6.0, 62.0], "expected": 62.0}, {"input": [-6.0, 62.5], "expected": 62.5}, {"input": [-6.0, 63.0], "expected": 63.0}, {"input": [-6.0, 63.5], "expected": 63.5}, {"input": [-6.0, 64.0], "expected": 64.0}, {"input": [-6.0, 64.5], "expected": 64.5}, {"input": [-6.0, 65.0], "expected": 65.0}, {"input": [-6.0, 65.5], "expected": 65.5}, {"input": [-6.0, 66.0], "expected": 66.0}, {"input": [-6.0, 66.5], "expected": 66.5}, {"input": [-6.0, 67.0], "expected": 67.0}, {"input": [-6.0, 67.5], "expected": 67.5}, {"input": [-6.0, 68.0], "expected": 68.0}, {"input": [-6.0, 68.5], "expected": 68.5}, {"input": [-6.0, 69.0], "expected": 69.0}, {"input": [-6.0, 69.5], "expected": 69.5}, {"input": [-6.0, 70.0], "expected": 70.0}, {"input": [-6.0, 70.5], "expected": 70.5}, {"input": [-6.0, 71.0], "expected": 71.0}, {"input": [-6.0, 71.5], "expected": 71.5}, {"input": [-6.0, 72.0], "expected": 72.0}, {"input": [-6.0, 72.5], "expected": 72.5}, {"input": [-6.0, 73.0], "expected": 73.0}, {"input": [-6.0, 73.5], "expected": 73.5}, {"input": [-6.0, 74.0], "expected": 74.0}, {"input": [-6.0, 74.5], "expected": 74.5}, {"input": [-6.0, 75.0], "expected": 75.0}, {"input": [-6.0, 75.5], "expected": 75.5}, {"input": [-6.0, 76.0], "expected": 76.0}, {"input": [-6.0, 76.5], "expected": 76.5}, {"input": [-6.0, 77.0], "expected": 77.0}, {"input": [-6.0, 77.5], "expected": 77.5}, {"input": [-6.0, 78.0], "expected": 78.0}, {"input": [-6.0, 78.5], "expected": 78.5}, {"input": [-6.0, 79.0], "expected": 79.0}, {"input": [-6.0, 79.5], "expected": 79.5}, {"input": [-6.0, 80.0], "expected": 80.0}, {"input": [-6.0, 80.5], "expected": 80.5}, {"input": [-6.0, 81.0], "expected": 81.0}, {"input": [-6.0, 81.5], "expected": 81.5}, {"input": [-6.0, 82.0], "expected": 82.0}, {"input": [-6.0, 82.5], "expected": 82.5}, {"input": [-6.0, 83.0], "expected": 83.0}, {"input": [-6.0, 83.5], "expected": 83.5}, {"input": [-6.0, 84.0], "expected": 84.0}, {"input": [-6.0, 84.5], "expected": 84.5}, {"input": [-6.0, 85.0], "expected": 85.0}, {"input": [-6.0, 85.5], "expected": 85.5}, {"input": [-6.0, 86.0], "expected": 86.0}, {"input": [-6.0, 86.5], "expected": 86.5}, {"input": [-6.0, 87.0], "expected": 87.0}, {"input": [-6.0, 87.5], "expected": 87.5}, {"input": [-6.0, 88.0], "expected": 88.0}, {"input": [-6.0, 88.5], "expected": 88.5}, {"input": [-6.0, 89.0], "expected": 89.0}, {"input": [-6.0, 89.5], "expected": 89.5}, {"input": [-6.0, 90.0], "expected": 90.0}, {"input": [-6.0, 90.5], "expected": 90.5}, {"input": [-6.0, 91.0], "expected": 91.0}, {"input": [-6.0, 91.5], "expected": 91.5}, {"input": [-6.0, 92.0], "expected": 92.0}, {"input": [-6.0, 92.5], "expected": 92.5}, {"input": [-6.0, 93.0], "expected": 93.0}, {"input": [-6.0, 93.5], "expected": 93.5}, {"input": [-6.0, 94.0], "expected": 94.0}, {"input": [-6.0, 94.5], "expected": 94.5}, {"input": [-6.0, 95.0], "expected": 95.0}, {"input": [-6.0, 95.5], "expected": 95.5}, {"input": [-6.0, 96.0], "expected": 96.0}, {"input": [-6.0, 96.5], "expected": 96.5}, {"input": [-6.0, 97.0], "expected": 97.0}, {"input": [-6.0, 97.5], "expected": 97.5}, {"input": [-6.0, 98.0], "expected": 98.0}, {"input": [-6.0, 98.5], "expected": 98.5}, {"input": [-6.0, 99.0], "expected": 99.0}, {"input": [-6.0, 99.5], "expected": 99.5}, {"input": [-5.5, -100.0], "expected": -5.5}, {"input": [-5.5, -99.5], "expected": -5.5}, {"input": [-5.5, -99.0], "expected": -5.5}, {"input": [-5.5, -98.5], "expected": -5.5}, {"input": [-5.5, -98.0], "expected": -5.5}, {"input": [-5.5, -97.5], "expected": -5.5}, {"input": [-5.5, -97.0], "expected": -5.5}, {"input": [-5.5, -96.5], "expected": -5.5}, {"input": [-5.5, -96.0], "expected": -5.5}, {"input": [-5.5, -95.5], "expected": -5.5}, {"input": [-5.5, -95.0], "expected": -5.5}, {"input": [-5.5, -94.5], "expected": -5.5}, {"input": [-5.5, -94.0], "expected": -5.5}, {"input": [-5.5, -93.5], "expected": -5.5}, {"input": [-5.5, -93.0], "expected": -5.5}, {"input": [-5.5, -92.5], "expected": -5.5}, {"input": [-5.5, -92.0], "expected": -5.5}, {"input": [-5.5, -91.5], "expected": -5.5}, {"input": [-5.5, -91.0], "expected": -5.5}, {"input": [-5.5, -90.5], "expected": -5.5}, {"input": [-5.5, -90.0], "expected": -5.5}, {"input": [-5.5, -89.5], "expected": -5.5}, {"input": [-5.5, -89.0], "expected": -5.5}, {"input": [-5.5, -88.5], "expected": -5.5}, {"input": [-5.5, -88.0], "expected": -5.5}, {"input": [-5.5, -87.5], "expected": -5.5}, {"input": [-5.5, -87.0], "expected": -5.5}, {"input": [-5.5, -86.5], "expected": -5.5}, {"input": [-5.5, -86.0], "expected": -5.5}, {"input": [-5.5, -85.5], "expected": -5.5}, {"input": [-5.5, -85.0], "expected": -5.5}, {"input": [-5.5, -84.5], "expected": -5.5}, {"input": [-5.5, -84.0], "expected": -5.5}, {"input": [-5.5, -83.5], "expected": -5.5}, {"input": [-5.5, -83.0], "expected": -5.5}, {"input": [-5.5, -82.5], "expected": -5.5}, {"input": [-5.5, -82.0], "expected": -5.5}, {"input": [-5.5, -81.5], "expected": -5.5}, {"input": [-5.5, -81.0], "expected": -5.5}, {"input": [-5.5, -80.5], "expected": -5.5}, {"input": [-5.5, -80.0], "expected": -5.5}, {"input": [-5.5, -79.5], "expected": -5.5}, {"input": [-5.5, -79.0], "expected": -5.5}, {"input": [-5.5, -78.5], "expected": -5.5}, {"input": [-5.5, -78.0], "expected": -5.5}, {"input": [-5.5, -77.5], "expected": -5.5}, {"input": [-5.5, -77.0], "expected": -5.5}, {"input": [-5.5, -76.5], "expected": -5.5}, {"input": [-5.5, -76.0], "expected": -5.5}, {"input": [-5.5, -75.5], "expected": -5.5}, {"input": [-5.5, -75.0], "expected": -5.5}, {"input": [-5.5, -74.5], "expected": -5.5}, {"input": [-5.5, -74.0], "expected": -5.5}, {"input": [-5.5, -73.5], "expected": -5.5}, {"input": [-5.5, -73.0], "expected": -5.5}, {"input": [-5.5, -72.5], "expected": -5.5}, {"input": [-5.5, -72.0], "expected": -5.5}, {"input": [-5.5, -71.5], "expected": -5.5}, {"input": [-5.5, -71.0], "expected": -5.5}, {"input": [-5.5, -70.5], "expected": -5.5}, {"input": [-5.5, -70.0], "expected": -5.5}, {"input": [-5.5, -69.5], "expected": -5.5}, {"input": [-5.5, -69.0], "expected": -5.5}, {"input": [-5.5, -68.5], "expected": -5.5}, {"input": [-5.5, -68.0], "expected": -5.5}, {"input": [-5.5, -67.5], "expected": -5.5}, {"input": [-5.5, -67.0], "expected": -5.5}, {"input": [-5.5, -66.5], "expected": -5.5}, {"input": [-5.5, -66.0], "expected": -5.5}, {"input": [-5.5, -65.5], "expected": -5.5}, {"input": [-5.5, -65.0], "expected": -5.5}, {"input": [-5.5, -64.5], "expected": -5.5}, {"input": [-5.5, -64.0], "expected": -5.5}, {"input": [-5.5, -63.5], "expected": -5.5}, {"input": [-5.5, -63.0], "expected": -5.5}, {"input": [-5.5, -62.5], "expected": -5.5}, {"input": [-5.5, -62.0], "expected": -5.5}, {"input": [-5.5, -61.5], "expected": -5.5}, {"input": [-5.5, -61.0], "expected": -5.5}, {"input": [-5.5, -60.5], "expected": -5.5}, {"input": [-5.5, -60.0], "expected": -5.5}, {"input": [-5.5, -59.5], "expected": -5.5}, {"input": [-5.5, -59.0], "expected": -5.5}, {"input": [-5.5, -58.5], "expected": -5.5}, {"input": [-5.5, -58.0], "expected": -5.5}, {"input": [-5.5, -57.5], "expected": -5.5}, {"input": [-5.5, -57.0], "expected": -5.5}, {"input": [-5.5, -56.5], "expected": -5.5}, {"input": [-5.5, -56.0], "expected": -5.5}, {"input": [-5.5, -55.5], "expected": -5.5}, {"input": [-5.5, -55.0], "expected": -5.5}, {"input": [-5.5, -54.5], "expected": -5.5}, {"input": [-5.5, -54.0], "expected": -5.5}, {"input": [-5.5, -53.5], "expected": -5.5}, {"input": [-5.5, -53.0], "expected": -5.5}, {"input": [-5.5, -52.5], "expected": -5.5}, {"input": [-5.5, -52.0], "expected": -5.5}, {"input": [-5.5, -51.5], "expected": -5.5}, {"input": [-5.5, -51.0], "expected": -5.5}, {"input": [-5.5, -50.5], "expected": -5.5}, {"input": [-5.5, -50.0], "expected": -5.5}, {"input": [-5.5, -49.5], "expected": -5.5}, {"input": [-5.5, -49.0], "expected": -5.5}, {"input": [-5.5, -48.5], "expected": -5.5}, {"input": [-5.5, -48.0], "expected": -5.5}, {"input": [-5.5, -47.5], "expected": -5.5}, {"input": [-5.5, -47.0], "expected": -5.5}, {"input": [-5.5, -46.5], "expected": -5.5}, {"input": [-5.5, -46.0], "expected": -5.5}, {"input": [-5.5, -45.5], "expected": -5.5}, {"input": [-5.5, -45.0], "expected": -5.5}, {"input": [-5.5, -44.5], "expected": -5.5}, {"input": [-5.5, -44.0], "expected": -5.5}, {"input": [-5.5, -43.5], "expected": -5.5}, {"input": [-5.5, -43.0], "expected": -5.5}, {"input": [-5.5, -42.5], "expected": -5.5}, {"input": [-5.5, -42.0], "expected": -5.5}, {"input": [-5.5, -41.5], "expected": -5.5}, {"input": [-5.5, -41.0], "expected": -5.5}, {"input": [-5.5, -40.5], "expected": -5.499999999999999}, {"input": [-5.5, -40.0], "expected": -5.499999999999999}, {"input": [-5.5, -39.5], "expected": -5.499999999999998}, {"input": [-5.5, -39.0], "expected": -5.499999999999997}, {"input": [-5.5, -38.5], "expected": -5.499999999999996}, {"input": [-5.5, -38.0], "expected": -5.499999999999992}, {"input": [-5.5, -37.5], "expected": -5.499999999999988}, {"input": [-5.5, -37.0], "expected": -5.499999999999979}, {"input": [-5.5, -36.5], "expected": -5.499999999999965}, {"input": [-5.5, -36.0], "expected": -5.499999999999943}, {"input": [-5.5, -35.5], "expected": -5.499999999999907}, {"input": [-5.5, -35.0], "expected": -5.4999999999998455}, {"input": [-5.5, -34.5], "expected": -5.499999999999746}, {"input": [-5.5, -34.0], "expected": -5.499999999999581}, {"input": [-5.5, -33.5], "expected": -5.499999999999309}, {"input": [-5.5, -33.0], "expected": -5.49999999999886}, {"input": [-5.5, -32.5], "expected": -5.499999999998121}, {"input": [-5.5, -32.0], "expected": -5.499999999996901}, {"input": [-5.5, -31.5], "expected": -5.499999999994891}, {"input": [-5.5, -31.0], "expected": -5.4999999999915765}, {"input": [-5.5, -30.5], "expected": -5.499999999986112}, {"input": [-5.5, -30.0], "expected": -5.499999999977103}, {"input": [-5.5, -29.5], "expected": -5.499999999962249}, {"input": [-5.5, -29.0], "expected": -5.499999999937758}, {"input": [-5.5, -28.5], "expected": -5.499999999897382}, {"input": [-5.5, -28.0], "expected": -5.49999999983081}, {"input": [-5.5, -27.5], "expected": -5.499999999721053}, {"input": [-5.5, -27.0], "expected": -5.499999999540094}, {"input": [-5.5, -26.5], "expected": -5.499999999241744}, {"input": [-5.5, -26.0], "expected": -5.499999998749847}, {"input": [-5.5, -25.5], "expected": -5.499999997938846}, {"input": [-5.5, -25.0], "expected": -5.4999999966017326}, {"input": [-5.5, -24.5], "expected": -5.4999999943972036}, {"input": [-5.5, -24.0], "expected": -5.49999999076255}, {"input": [-5.5, -23.5], "expected": -5.49999998477002}, {"input": [-5.5, -23.0], "expected": -5.499999974890009}, {"input": [-5.5, -22.5], "expected": -5.499999958600624}, {"input": [-5.5, -22.0], "expected": -5.499999931743969}, {"input": [-5.5, -21.5], "expected": -5.499999887464831}, {"input": [-5.5, -21.0], "expected": -5.499999814460881}, {"input": [-5.5, -20.5], "expected": -5.499999694097727}, {"input": [-5.5, -20.0], "expected": -5.499999495652465}, {"input": [-5.5, -19.5], "expected": -5.499999168471627}, {"input": [-5.5, -19.0], "expected": -5.499998629041853}, {"input": [-5.5, -18.5], "expected": -5.499997739673147}, {"input": [-5.5, -18.0], "expected": -5.499996273353772}, {"input": [-5.5, -17.5], "expected": -5.4999938558065224}, {"input": [-5.5, -17.0], "expected": -5.4999898699577106}, {"input": [-5.5, -16.5], "expected": -5.499983298438681}, {"input": [-5.5, -16.0], "expected": -5.499972463929772}, {"input": [-5.5, -15.5], "expected": -5.499954601100783}, {"input": [-5.5, -15.0], "expected": -5.499925150971371}, {"input": [-5.5, -14.5], "expected": -5.499876597810276}, {"input": [-5.5, -14.0], "expected": -5.4997965523278705}, {"input": [-5.5, -13.5], "expected": -5.499664593627104}, {"input": [-5.5, -13.0], "expected": -5.499447068524639}, {"input": [-5.5, -12.5], "expected": -5.499088533546225}, {"input": [-5.5, -12.0], "expected": -5.498497689840246}, {"input": [-5.5, -11.5], "expected": -5.49752431486227}, {"input": [-5.5, -11.0], "expected": -5.495921556729429}, {"input": [-5.5, -10.5], "expected": -5.493284651510882}, {"input": [-5.5, -10.0], "expected": -5.488952255151406}, {"input": [-5.5, -9.5], "expected": -5.4818500720821906}, {"input": [-5.5, -9.0], "expected": -5.470249581727379}, {"input": [-5.5, -8.5], "expected": -5.451412648426258}, {"input": [-5.5, -8.0], "expected": -5.42111026570745}, {"input": [-5.5, -7.5], "expected": -5.373071988957028}, {"input": [-5.5, -7.0], "expected": -5.298586722017248}, {"input": [-5.5, -6.5], "expected": -5.186738312481777}, {"input": [-5.5, -6.0], "expected": -5.0259230158198935}, {"input": [-5.5, -5.5], "expected": -4.806852819440055}, {"input": [-5.5, -5.0], "expected": -4.5259230158198935}, {"input": [-5.5, -4.5], "expected": -4.186738312481777}, {"input": [-5.5, -4.0], "expected": -3.7985867220172476}, {"input": [-5.5, -3.5], "expected": -3.3730719889570273}, {"input": [-5.5, -3.0], "expected": -2.9211102657074504}, {"input": [-5.5, -2.5], "expected": -2.451412648426258}, {"input": [-5.5, -2.0], "expected": -1.9702495817273795}, {"input": [-5.5, -1.5], "expected": -1.4818500720821903}, {"input": [-5.5, -1.0], "expected": -0.9889522551514062}, {"input": [-5.5, -0.5], "expected": -0.4932846515108819}, {"input": [-5.5, 0.0], "expected": 0.0040784432705707205}, {"input": [-5.5, 0.5], "expected": 0.5024756851377304}, {"input": [-5.5, 1.0], "expected": 1.0015023101597542}, {"input": [-5.5, 1.5], "expected": 1.5009114664537742}, {"input": [-5.5, 2.0], "expected": 2.0005529314753607}, {"input": [-5.5, 2.5], "expected": 2.500335406372896}, {"input": [-5.5, 3.0], "expected": 3.0002034476721295}, {"input": [-5.5, 3.5], "expected": 3.500123402189723}, {"input": [-5.5, 4.0], "expected": 4.000074849028629}, {"input": [-5.5, 4.5], "expected": 4.500045398899217}, {"input": [-5.5, 5.0], "expected": 5.000027536070228}, {"input": [-5.5, 5.5], "expected": 5.500016701561319}, {"input": [-5.5, 6.0], "expected": 6.0000101300422894}, {"input": [-5.5, 6.5], "expected": 6.5000061441934776}, {"input": [-5.5, 7.0], "expected": 7.000003726646228}, {"input": [-5.5, 7.5], "expected": 7.500002260326853}, {"input": [-5.5, 8.0], "expected": 8.000001370958147}, {"input": [-5.5, 8.5], "expected": 8.500000831528373}, {"input": [-5.5, 9.0], "expected": 9.000000504347536}, {"input": [-5.5, 9.5], "expected": 9.500000305902274}, {"input": [-5.5, 10.0], "expected": 10.000000185539118}, {"input": [-5.5, 10.5], "expected": 10.500000112535169}, {"input": [-5.5, 11.0], "expected": 11.000000068256032}, {"input": [-5.5, 11.5], "expected": 11.500000041399376}, {"input": [-5.5, 12.0], "expected": 12.00000002510999}, {"input": [-5.5, 12.5], "expected": 12.500000015229979}, {"input": [-5.5, 13.0], "expected": 13.00000000923745}, {"input": [-5.5, 13.5], "expected": 13.500000005602796}, {"input": [-5.5, 14.0], "expected": 14.000000003398268}, {"input": [-5.5, 14.5], "expected": 14.500000002061153}, {"input": [-5.5, 15.0], "expected": 15.000000001250152}, {"input": [-5.5, 15.5], "expected": 15.500000000758256}, {"input": [-5.5, 16.0], "expected": 16.000000000459906}, {"input": [-5.5, 16.5], "expected": 16.50000000027895}, {"input": [-5.5, 17.0], "expected": 17.00000000016919}, {"input": [-5.5, 17.5], "expected": 17.50000000010262}, {"input": [-5.5, 18.0], "expected": 18.00000000006224}, {"input": [-5.5, 18.5], "expected": 18.50000000003775}, {"input": [-5.5, 19.0], "expected": 19.000000000022897}, {"input": [-5.5, 19.5], "expected": 19.500000000013888}, {"input": [-5.5, 20.0], "expected": 20.000000000008423}, {"input": [-5.5, 20.5], "expected": 20.50000000000511}, {"input": [-5.5, 21.0], "expected": 21.000000000003098}, {"input": [-5.5, 21.5], "expected": 21.50000000000188}, {"input": [-5.5, 22.0], "expected": 22.00000000000114}, {"input": [-5.5, 22.5], "expected": 22.500000000000693}, {"input": [-5.5, 23.0], "expected": 23.00000000000042}, {"input": [-5.5, 23.5], "expected": 23.500000000000256}, {"input": [-5.5, 24.0], "expected": 24.000000000000153}, {"input": [-5.5, 24.5], "expected": 24.500000000000092}, {"input": [-5.5, 25.0], "expected": 25.000000000000057}, {"input": [-5.5, 25.5], "expected": 25.500000000000036}, {"input": [-5.5, 26.0], "expected": 26.00000000000002}, {"input": [-5.5, 26.5], "expected": 26.500000000000014}, {"input": [-5.5, 27.0], "expected": 27.000000000000007}, {"input": [-5.5, 27.5], "expected": 27.500000000000004}, {"input": [-5.5, 28.0], "expected": 28.000000000000004}, {"input": [-5.5, 28.5], "expected": 28.5}, {"input": [-5.5, 29.0], "expected": 29.0}, {"input": [-5.5, 29.5], "expected": 29.5}, {"input": [-5.5, 30.0], "expected": 30.0}, {"input": [-5.5, 30.5], "expected": 30.5}, {"input": [-5.5, 31.0], "expected": 31.0}, {"input": [-5.5, 31.5], "expected": 31.5}, {"input": [-5.5, 32.0], "expected": 32.0}, {"input": [-5.5, 32.5], "expected": 32.5}, {"input": [-5.5, 33.0], "expected": 33.0}, {"input": [-5.5, 33.5], "expected": 33.5}, {"input": [-5.5, 34.0], "expected": 34.0}, {"input": [-5.5, 34.5], "expected": 34.5}, {"input": [-5.5, 35.0], "expected": 35.0}, {"input": [-5.5, 35.5], "expected": 35.5}, {"input": [-5.5, 36.0], "expected": 36.0}, {"input": [-5.5, 36.5], "expected": 36.5}, {"input": [-5.5, 37.0], "expected": 37.0}, {"input": [-5.5, 37.5], "expected": 37.5}, {"input": [-5.5, 38.0], "expected": 38.0}, {"input": [-5.5, 38.5], "expected": 38.5}, {"input": [-5.5, 39.0], "expected": 39.0}, {"input": [-5.5, 39.5], "expected": 39.5}, {"input": [-5.5, 40.0], "expected": 40.0}, {"input": [-5.5, 40.5], "expected": 40.5}, {"input": [-5.5, 41.0], "expected": 41.0}, {"input": [-5.5, 41.5], "expected": 41.5}, {"input": [-5.5, 42.0], "expected": 42.0}, {"input": [-5.5, 42.5], "expected": 42.5}, {"input": [-5.5, 43.0], "expected": 43.0}, {"input": [-5.5, 43.5], "expected": 43.5}, {"input": [-5.5, 44.0], "expected": 44.0}, {"input": [-5.5, 44.5], "expected": 44.5}, {"input": [-5.5, 45.0], "expected": 45.0}, {"input": [-5.5, 45.5], "expected": 45.5}, {"input": [-5.5, 46.0], "expected": 46.0}, {"input": [-5.5, 46.5], "expected": 46.5}, {"input": [-5.5, 47.0], "expected": 47.0}, {"input": [-5.5, 47.5], "expected": 47.5}, {"input": [-5.5, 48.0], "expected": 48.0}, {"input": [-5.5, 48.5], "expected": 48.5}, {"input": [-5.5, 49.0], "expected": 49.0}, {"input": [-5.5, 49.5], "expected": 49.5}, {"input": [-5.5, 50.0], "expected": 50.0}, {"input": [-5.5, 50.5], "expected": 50.5}, {"input": [-5.5, 51.0], "expected": 51.0}, {"input": [-5.5, 51.5], "expected": 51.5}, {"input": [-5.5, 52.0], "expected": 52.0}, {"input": [-5.5, 52.5], "expected": 52.5}, {"input": [-5.5, 53.0], "expected": 53.0}, {"input": [-5.5, 53.5], "expected": 53.5}, {"input": [-5.5, 54.0], "expected": 54.0}, {"input": [-5.5, 54.5], "expected": 54.5}, {"input": [-5.5, 55.0], "expected": 55.0}, {"input": [-5.5, 55.5], "expected": 55.5}, {"input": [-5.5, 56.0], "expected": 56.0}, {"input": [-5.5, 56.5], "expected": 56.5}, {"input": [-5.5, 57.0], "expected": 57.0}, {"input": [-5.5, 57.5], "expected": 57.5}, {"input": [-5.5, 58.0], "expected": 58.0}, {"input": [-5.5, 58.5], "expected": 58.5}, {"input": [-5.5, 59.0], "expected": 59.0}, {"input": [-5.5, 59.5], "expected": 59.5}, {"input": [-5.5, 60.0], "expected": 60.0}, {"input": [-5.5, 60.5], "expected": 60.5}, {"input": [-5.5, 61.0], "expected": 61.0}, {"input": [-5.5, 61.5], "expected": 61.5}, {"input": [-5.5, 62.0], "expected": 62.0}, {"input": [-5.5, 62.5], "expected": 62.5}, {"input": [-5.5, 63.0], "expected": 63.0}, {"input": [-5.5, 63.5], "expected": 63.5}, {"input": [-5.5, 64.0], "expected": 64.0}, {"input": [-5.5, 64.5], "expected": 64.5}, {"input": [-5.5, 65.0], "expected": 65.0}, {"input": [-5.5, 65.5], "expected": 65.5}, {"input": [-5.5, 66.0], "expected": 66.0}, {"input": [-5.5, 66.5], "expected": 66.5}, {"input": [-5.5, 67.0], "expected": 67.0}, {"input": [-5.5, 67.5], "expected": 67.5}, {"input": [-5.5, 68.0], "expected": 68.0}, {"input": [-5.5, 68.5], "expected": 68.5}, {"input": [-5.5, 69.0], "expected": 69.0}, {"input": [-5.5, 69.5], "expected": 69.5}, {"input": [-5.5, 70.0], "expected": 70.0}, {"input": [-5.5, 70.5], "expected": 70.5}, {"input": [-5.5, 71.0], "expected": 71.0}, {"input": [-5.5, 71.5], "expected": 71.5}, {"input": [-5.5, 72.0], "expected": 72.0}, {"input": [-5.5, 72.5], "expected": 72.5}, {"input": [-5.5, 73.0], "expected": 73.0}, {"input": [-5.5, 73.5], "expected": 73.5}, {"input": [-5.5, 74.0], "expected": 74.0}, {"input": [-5.5, 74.5], "expected": 74.5}, {"input": [-5.5, 75.0], "expected": 75.0}, {"input": [-5.5, 75.5], "expected": 75.5}, {"input": [-5.5, 76.0], "expected": 76.0}, {"input": [-5.5, 76.5], "expected": 76.5}, {"input": [-5.5, 77.0], "expected": 77.0}, {"input": [-5.5, 77.5], "expected": 77.5}, {"input": [-5.5, 78.0], "expected": 78.0}, {"input": [-5.5, 78.5], "expected": 78.5}, {"input": [-5.5, 79.0], "expected": 79.0}, {"input": [-5.5, 79.5], "expected": 79.5}, {"input": [-5.5, 80.0], "expected": 80.0}, {"input": [-5.5, 80.5], "expected": 80.5}, {"input": [-5.5, 81.0], "expected": 81.0}, {"input": [-5.5, 81.5], "expected": 81.5}, {"input": [-5.5, 82.0], "expected": 82.0}, {"input": [-5.5, 82.5], "expected": 82.5}, {"input": [-5.5, 83.0], "expected": 83.0}, {"input": [-5.5, 83.5], "expected": 83.5}, {"input": [-5.5, 84.0], "expected": 84.0}, {"input": [-5.5, 84.5], "expected": 84.5}, {"input": [-5.5, 85.0], "expected": 85.0}, {"input": [-5.5, 85.5], "expected": 85.5}, {"input": [-5.5, 86.0], "expected": 86.0}, {"input": [-5.5, 86.5], "expected": 86.5}, {"input": [-5.5, 87.0], "expected": 87.0}, {"input": [-5.5, 87.5], "expected": 87.5}, {"input": [-5.5, 88.0], "expected": 88.0}, {"input": [-5.5, 88.5], "expected": 88.5}, {"input": [-5.5, 89.0], "expected": 89.0}, {"input": [-5.5, 89.5], "expected": 89.5}, {"input": [-5.5, 90.0], "expected": 90.0}, {"input": [-5.5, 90.5], "expected": 90.5}, {"input": [-5.5, 91.0], "expected": 91.0}, {"input": [-5.5, 91.5], "expected": 91.5}, {"input": [-5.5, 92.0], "expected": 92.0}, {"input": [-5.5, 92.5], "expected": 92.5}, {"input": [-5.5, 93.0], "expected": 93.0}, {"input": [-5.5, 93.5], "expected": 93.5}, {"input": [-5.5, 94.0], "expected": 94.0}, {"input": [-5.5, 94.5], "expected": 94.5}, {"input": [-5.5, 95.0], "expected": 95.0}, {"input": [-5.5, 95.5], "expected": 95.5}, {"input": [-5.5, 96.0], "expected": 96.0}, {"input": [-5.5, 96.5], "expected": 96.5}, {"input": [-5.5, 97.0], "expected": 97.0}, {"input": [-5.5, 97.5], "expected": 97.5}, {"input": [-5.5, 98.0], "expected": 98.0}, {"input": [-5.5, 98.5], "expected": 98.5}, {"input": [-5.5, 99.0], "expected": 99.0}, {"input": [-5.5, 99.5], "expected": 99.5}, {"input": [-5.0, -100.0], "expected": -5.0}, {"input": [-5.0, -99.5], "expected": -5.0}, {"input": [-5.0, -99.0], "expected": -5.0}, {"input": [-5.0, -98.5], "expected": -5.0}, {"input": [-5.0, -98.0], "expected": -5.0}, {"input": [-5.0, -97.5], "expected": -5.0}, {"input": [-5.0, -97.0], "expected": -5.0}, {"input": [-5.0, -96.5], "expected": -5.0}, {"input": [-5.0, -96.0], "expected": -5.0}, {"input": [-5.0, -95.5], "expected": -5.0}, {"input": [-5.0, -95.0], "expected": -5.0}, {"input": [-5.0, -94.5], "expected": -5.0}, {"input": [-5.0, -94.0], "expected": -5.0}, {"input": [-5.0, -93.5], "expected": -5.0}, {"input": [-5.0, -93.0], "expected": -5.0}, {"input": [-5.0, -92.5], "expected": -5.0}, {"input": [-5.0, -92.0], "expected": -5.0}, {"input": [-5.0, -91.5], "expected": -5.0}, {"input": [-5.0, -91.0], "expected": -5.0}, {"input": [-5.0, -90.5], "expected": -5.0}, {"input": [-5.0, -90.0], "expected": -5.0}, {"input": [-5.0, -89.5], "expected": -5.0}, {"input": [-5.0, -89.0], "expected": -5.0}, {"input": [-5.0, -88.5], "expected": -5.0}, {"input": [-5.0, -88.0], "expected": -5.0}, {"input": [-5.0, -87.5], "expected": -5.0}, {"input": [-5.0, -87.0], "expected": -5.0}, {"input": [-5.0, -86.5], "expected": -5.0}, {"input": [-5.0, -86.0], "expected": -5.0}, {"input": [-5.0, -85.5], "expected": -5.0}, {"input": [-5.0, -85.0], "expected": -5.0}, {"input": [-5.0, -84.5], "expected": -5.0}, {"input": [-5.0, -84.0], "expected": -5.0}, {"input": [-5.0, -83.5], "expected": -5.0}, {"input": [-5.0, -83.0], "expected": -5.0}, {"input": [-5.0, -82.5], "expected": -5.0}, {"input": [-5.0, -82.0], "expected": -5.0}, {"input": [-5.0, -81.5], "expected": -5.0}, {"input": [-5.0, -81.0], "expected": -5.0}, {"input": [-5.0, -80.5], "expected": -5.0}, {"input": [-5.0, -80.0], "expected": -5.0}, {"input": [-5.0, -79.5], "expected": -5.0}, {"input": [-5.0, -79.0], "expected": -5.0}, {"input": [-5.0, -78.5], "expected": -5.0}, {"input": [-5.0, -78.0], "expected": -5.0}, {"input": [-5.0, -77.5], "expected": -5.0}, {"input": [-5.0, -77.0], "expected": -5.0}, {"input": [-5.0, -76.5], "expected": -5.0}, {"input": [-5.0, -76.0], "expected": -5.0}, {"input": [-5.0, -75.5], "expected": -5.0}, {"input": [-5.0, -75.0], "expected": -5.0}, {"input": [-5.0, -74.5], "expected": -5.0}, {"input": [-5.0, -74.0], "expected": -5.0}, {"input": [-5.0, -73.5], "expected": -5.0}, {"input": [-5.0, -73.0], "expected": -5.0}, {"input": [-5.0, -72.5], "expected": -5.0}, {"input": [-5.0, -72.0], "expected": -5.0}, {"input": [-5.0, -71.5], "expected": -5.0}, {"input": [-5.0, -71.0], "expected": -5.0}, {"input": [-5.0, -70.5], "expected": -5.0}, {"input": [-5.0, -70.0], "expected": -5.0}, {"input": [-5.0, -69.5], "expected": -5.0}, {"input": [-5.0, -69.0], "expected": -5.0}, {"input": [-5.0, -68.5], "expected": -5.0}, {"input": [-5.0, -68.0], "expected": -5.0}, {"input": [-5.0, -67.5], "expected": -5.0}, {"input": [-5.0, -67.0], "expected": -5.0}, {"input": [-5.0, -66.5], "expected": -5.0}, {"input": [-5.0, -66.0], "expected": -5.0}, {"input": [-5.0, -65.5], "expected": -5.0}, {"input": [-5.0, -65.0], "expected": -5.0}, {"input": [-5.0, -64.5], "expected": -5.0}, {"input": [-5.0, -64.0], "expected": -5.0}, {"input": [-5.0, -63.5], "expected": -5.0}, {"input": [-5.0, -63.0], "expected": -5.0}, {"input": [-5.0, -62.5], "expected": -5.0}, {"input": [-5.0, -62.0], "expected": -5.0}, {"input": [-5.0, -61.5], "expected": -5.0}, {"input": [-5.0, -61.0], "expected": -5.0}, {"input": [-5.0, -60.5], "expected": -5.0}, {"input": [-5.0, -60.0], "expected": -5.0}, {"input": [-5.0, -59.5], "expected": -5.0}, {"input": [-5.0, -59.0], "expected": -5.0}, {"input": [-5.0, -58.5], "expected": -5.0}, {"input": [-5.0, -58.0], "expected": -5.0}, {"input": [-5.0, -57.5], "expected": -5.0}, {"input": [-5.0, -57.0], "expected": -5.0}, {"input": [-5.0, -56.5], "expected": -5.0}, {"input": [-5.0, -56.0], "expected": -5.0}, {"input": [-5.0, -55.5], "expected": -5.0}, {"input": [-5.0, -55.0], "expected": -5.0}, {"input": [-5.0, -54.5], "expected": -5.0}, {"input": [-5.0, -54.0], "expected": -5.0}, {"input": [-5.0, -53.5], "expected": -5.0}, {"input": [-5.0, -53.0], "expected": -5.0}, {"input": [-5.0, -52.5], "expected": -5.0}, {"input": [-5.0, -52.0], "expected": -5.0}, {"input": [-5.0, -51.5], "expected": -5.0}, {"input": [-5.0, -51.0], "expected": -5.0}, {"input": [-5.0, -50.5], "expected": -5.0}, {"input": [-5.0, -50.0], "expected": -5.0}, {"input": [-5.0, -49.5], "expected": -5.0}, {"input": [-5.0, -49.0], "expected": -5.0}, {"input": [-5.0, -48.5], "expected": -5.0}, {"input": [-5.0, -48.0], "expected": -5.0}, {"input": [-5.0, -47.5], "expected": -5.0}, {"input": [-5.0, -47.0], "expected": -5.0}, {"input": [-5.0, -46.5], "expected": -5.0}, {"input": [-5.0, -46.0], "expected": -5.0}, {"input": [-5.0, -45.5], "expected": -5.0}, {"input": [-5.0, -45.0], "expected": -5.0}, {"input": [-5.0, -44.5], "expected": -5.0}, {"input": [-5.0, -44.0], "expected": -5.0}, {"input": [-5.0, -43.5], "expected": -5.0}, {"input": [-5.0, -43.0], "expected": -5.0}, {"input": [-5.0, -42.5], "expected": -5.0}, {"input": [-5.0, -42.0], "expected": -5.0}, {"input": [-5.0, -41.5], "expected": -5.0}, {"input": [-5.0, -41.0], "expected": -5.0}, {"input": [-5.0, -40.5], "expected": -5.0}, {"input": [-5.0, -40.0], "expected": -4.999999999999999}, {"input": [-5.0, -39.5], "expected": -4.999999999999999}, {"input": [-5.0, -39.0], "expected": -4.999999999999998}, {"input": [-5.0, -38.5], "expected": -4.999999999999997}, {"input": [-5.0, -38.0], "expected": -4.999999999999996}, {"input": [-5.0, -37.5], "expected": -4.999999999999992}, {"input": [-5.0, -37.0], "expected": -4.999999999999988}, {"input": [-5.0, -36.5], "expected": -4.999999999999979}, {"input": [-5.0, -36.0], "expected": -4.999999999999965}, {"input": [-5.0, -35.5], "expected": -4.999999999999943}, {"input": [-5.0, -35.0], "expected": -4.999999999999907}, {"input": [-5.0, -34.5], "expected": -4.9999999999998455}, {"input": [-5.0, -34.0], "expected": -4.999999999999746}, {"input": [-5.0, -33.5], "expected": -4.999999999999581}, {"input": [-5.0, -33.0], "expected": -4.999999999999309}, {"input": [-5.0, -32.5], "expected": -4.99999999999886}, {"input": [-5.0, -32.0], "expected": -4.999999999998121}, {"input": [-5.0, -31.5], "expected": -4.999999999996901}, {"input": [-5.0, -31.0], "expected": -4.999999999994891}, {"input": [-5.0, -30.5], "expected": -4.9999999999915765}, {"input": [-5.0, -30.0], "expected": -4.999999999986112}, {"input": [-5.0, -29.5], "expected": -4.999999999977103}, {"input": [-5.0, -29.0], "expected": -4.999999999962249}, {"input": [-5.0, -28.5], "expected": -4.999999999937758}, {"input": [-5.0, -28.0], "expected": -4.999999999897382}, {"input": [-5.0, -27.5], "expected": -4.99999999983081}, {"input": [-5.0, -27.0], "expected": -4.999999999721053}, {"input": [-5.0, -26.5], "expected": -4.999999999540094}, {"input": [-5.0, -26.0], "expected": -4.999999999241744}, {"input": [-5.0, -25.5], "expected": -4.999999998749847}, {"input": [-5.0, -25.0], "expected": -4.999999997938846}, {"input": [-5.0, -24.5], "expected": -4.9999999966017326}, {"input": [-5.0, -24.0], "expected": -4.9999999943972036}, {"input": [-5.0, -23.5], "expected": -4.99999999076255}, {"input": [-5.0, -23.0], "expected": -4.99999998477002}, {"input": [-5.0, -22.5], "expected": -4.999999974890009}, {"input": [-5.0, -22.0], "expected": -4.999999958600624}, {"input": [-5.0, -21.5], "expected": -4.999999931743969}, {"input": [-5.0, -21.0], "expected": -4.999999887464831}, {"input": [-5.0, -20.5], "expected": -4.999999814460881}, {"input": [-5.0, -20.0], "expected": -4.999999694097727}, {"input": [-5.0, -19.5], "expected": -4.999999495652465}, {"input": [-5.0, -19.0], "expected": -4.999999168471627}, {"input": [-5.0, -18.5], "expected": -4.999998629041853}, {"input": [-5.0, -18.0], "expected": -4.999997739673147}, {"input": [-5.0, -17.5], "expected": -4.999996273353772}, {"input": [-5.0, -17.0], "expected": -4.9999938558065224}, {"input": [-5.0, -16.5], "expected": -4.9999898699577106}, {"input": [-5.0, -16.0], "expected": -4.999983298438681}, {"input": [-5.0, -15.5], "expected": -4.999972463929772}, {"input": [-5.0, -15.0], "expected": -4.999954601100783}, {"input": [-5.0, -14.5], "expected": -4.999925150971371}, {"input": [-5.0, -14.0], "expected": -4.999876597810276}, {"input": [-5.0, -13.5], "expected": -4.9997965523278705}, {"input": [-5.0, -13.0], "expected": -4.999664593627104}, {"input": [-5.0, -12.5], "expected": -4.999447068524639}, {"input": [-5.0, -12.0], "expected": -4.999088533546225}, {"input": [-5.0, -11.5], "expected": -4.998497689840246}, {"input": [-5.0, -11.0], "expected": -4.99752431486227}, {"input": [-5.0, -10.5], "expected": -4.995921556729429}, {"input": [-5.0, -10.0], "expected": -4.993284651510882}, {"input": [-5.0, -9.5], "expected": -4.988952255151406}, {"input": [-5.0, -9.0], "expected": -4.9818500720821906}, {"input": [-5.0, -8.5], "expected": -4.970249581727379}, {"input": [-5.0, -8.0], "expected": -4.951412648426258}, {"input": [-5.0, -7.5], "expected": -4.92111026570745}, {"input": [-5.0, -7.0], "expected": -4.873071988957028}, {"input": [-5.0, -6.5], "expected": -4.798586722017248}, {"input": [-5.0, -6.0], "expected": -4.686738312481777}, {"input": [-5.0, -5.5], "expected": -4.5259230158198935}, {"input": [-5.0, -5.0], "expected": -4.306852819440055}, {"input": [-5.0, -4.5], "expected": -4.0259230158198935}, {"input": [-5.0, -4.0], "expected": -3.686738312481777}, {"input": [-5.0, -3.5], "expected": -3.2985867220172476}, {"input": [-5.0, -3.0], "expected": -2.8730719889570273}, {"input": [-5.0, -2.5], "expected": -2.4211102657074504}, {"input": [-5.0, -2.0], "expected": -1.951412648426258}, {"input": [-5.0, -1.5], "expected": -1.4702495817273795}, {"input": [-5.0, -1.0], "expected": -0.9818500720821902}, {"input": [-5.0, -0.5], "expected": -0.48895225515140617}, {"input": [-5.0, 0.0], "expected": 0.006715348489118068}, {"input": [-5.0, 0.5], "expected": 0.5040784432705707}, {"input": [-5.0, 1.0], "expected": 1.0024756851377306}, {"input": [-5.0, 1.5], "expected": 1.5015023101597542}, {"input": [-5.0, 2.0], "expected": 2.000911466453774}, {"input": [-5.0, 2.5], "expected": 2.5005529314753607}, {"input": [-5.0, 3.0], "expected": 3.000335406372896}, {"input": [-5.0, 3.5], "expected": 3.5002034476721295}, {"input": [-5.0, 4.0], "expected": 4.000123402189724}, {"input": [-5.0, 4.5], "expected": 4.500074849028629}, {"input": [-5.0, 5.0], "expected": 5.000045398899217}, {"input": [-5.0, 5.5], "expected": 5.500027536070228}, {"input": [-5.0, 6.0], "expected": 6.000016701561319}, {"input": [-5.0, 6.5], "expected": 6.5000101300422894}, {"input": [-5.0, 7.0], "expected": 7.0000061441934776}, {"input": [-5.0, 7.5], "expected": 7.500003726646228}, {"input": [-5.0, 8.0], "expected": 8.000002260326852}, {"input": [-5.0, 8.5], "expected": 8.500001370958147}, {"input": [-5.0, 9.0], "expected": 9.000000831528373}, {"input": [-5.0, 9.5], "expected": 9.500000504347536}, {"input": [-5.0, 10.0], "expected": 10.000000305902274}, {"input": [-5.0, 10.5], "expected": 10.500000185539118}, {"input": [-5.0, 11.0], "expected": 11.000000112535169}, {"input": [-5.0, 11.5], "expected": 11.500000068256032}, {"input": [-5.0, 12.0], "expected": 12.000000041399376}, {"input": [-5.0, 12.5], "expected": 12.50000002510999}, {"input": [-5.0, 13.0], "expected": 13.000000015229979}, {"input": [-5.0, 13.5], "expected": 13.50000000923745}, {"input": [-5.0, 14.0], "expected": 14.000000005602796}, {"input": [-5.0, 14.5], "expected": 14.500000003398268}, {"input": [-5.0, 15.0], "expected": 15.000000002061153}, {"input": [-5.0, 15.5], "expected": 15.500000001250152}, {"input": [-5.0, 16.0], "expected": 16.000000000758256}, {"input": [-5.0, 16.5], "expected": 16.500000000459906}, {"input": [-5.0, 17.0], "expected": 17.00000000027895}, {"input": [-5.0, 17.5], "expected": 17.50000000016919}, {"input": [-5.0, 18.0], "expected": 18.00000000010262}, {"input": [-5.0, 18.5], "expected": 18.50000000006224}, {"input": [-5.0, 19.0], "expected": 19.00000000003775}, {"input": [-5.0, 19.5], "expected": 19.500000000022897}, {"input": [-5.0, 20.0], "expected": 20.000000000013888}, {"input": [-5.0, 20.5], "expected": 20.500000000008423}, {"input": [-5.0, 21.0], "expected": 21.00000000000511}, {"input": [-5.0, 21.5], "expected": 21.500000000003098}, {"input": [-5.0, 22.0], "expected": 22.00000000000188}, {"input": [-5.0, 22.5], "expected": 22.50000000000114}, {"input": [-5.0, 23.0], "expected": 23.000000000000693}, {"input": [-5.0, 23.5], "expected": 23.50000000000042}, {"input": [-5.0, 24.0], "expected": 24.000000000000256}, {"input": [-5.0, 24.5], "expected": 24.500000000000153}, {"input": [-5.0, 25.0], "expected": 25.000000000000092}, {"input": [-5.0, 25.5], "expected": 25.500000000000057}, {"input": [-5.0, 26.0], "expected": 26.000000000000036}, {"input": [-5.0, 26.5], "expected": 26.50000000000002}, {"input": [-5.0, 27.0], "expected": 27.000000000000014}, {"input": [-5.0, 27.5], "expected": 27.500000000000007}, {"input": [-5.0, 28.0], "expected": 28.000000000000004}, {"input": [-5.0, 28.5], "expected": 28.500000000000004}, {"input": [-5.0, 29.0], "expected": 29.0}, {"input": [-5.0, 29.5], "expected": 29.5}, {"input": [-5.0, 30.0], "expected": 30.0}, {"input": [-5.0, 30.5], "expected": 30.5}, {"input": [-5.0, 31.0], "expected": 31.0}, {"input": [-5.0, 31.5], "expected": 31.5}, {"input": [-5.0, 32.0], "expected": 32.0}, {"input": [-5.0, 32.5], "expected": 32.5}, {"input": [-5.0, 33.0], "expected": 33.0}, {"input": [-5.0, 33.5], "expected": 33.5}, {"input": [-5.0, 34.0], "expected": 34.0}, {"input": [-5.0, 34.5], "expected": 34.5}, {"input": [-5.0, 35.0], "expected": 35.0}, {"input": [-5.0, 35.5], "expected": 35.5}, {"input": [-5.0, 36.0], "expected": 36.0}, {"input": [-5.0, 36.5], "expected": 36.5}, {"input": [-5.0, 37.0], "expected": 37.0}, {"input": [-5.0, 37.5], "expected": 37.5}, {"input": [-5.0, 38.0], "expected": 38.0}, {"input": [-5.0, 38.5], "expected": 38.5}, {"input": [-5.0, 39.0], "expected": 39.0}, {"input": [-5.0, 39.5], "expected": 39.5}, {"input": [-5.0, 40.0], "expected": 40.0}, {"input": [-5.0, 40.5], "expected": 40.5}, {"input": [-5.0, 41.0], "expected": 41.0}, {"input": [-5.0, 41.5], "expected": 41.5}, {"input": [-5.0, 42.0], "expected": 42.0}, {"input": [-5.0, 42.5], "expected": 42.5}, {"input": [-5.0, 43.0], "expected": 43.0}, {"input": [-5.0, 43.5], "expected": 43.5}, {"input": [-5.0, 44.0], "expected": 44.0}, {"input": [-5.0, 44.5], "expected": 44.5}, {"input": [-5.0, 45.0], "expected": 45.0}, {"input": [-5.0, 45.5], "expected": 45.5}, {"input": [-5.0, 46.0], "expected": 46.0}, {"input": [-5.0, 46.5], "expected": 46.5}, {"input": [-5.0, 47.0], "expected": 47.0}, {"input": [-5.0, 47.5], "expected": 47.5}, {"input": [-5.0, 48.0], "expected": 48.0}, {"input": [-5.0, 48.5], "expected": 48.5}, {"input": [-5.0, 49.0], "expected": 49.0}, {"input": [-5.0, 49.5], "expected": 49.5}, {"input": [-5.0, 50.0], "expected": 50.0}, {"input": [-5.0, 50.5], "expected": 50.5}, {"input": [-5.0, 51.0], "expected": 51.0}, {"input": [-5.0, 51.5], "expected": 51.5}, {"input": [-5.0, 52.0], "expected": 52.0}, {"input": [-5.0, 52.5], "expected": 52.5}, {"input": [-5.0, 53.0], "expected": 53.0}, {"input": [-5.0, 53.5], "expected": 53.5}, {"input": [-5.0, 54.0], "expected": 54.0}, {"input": [-5.0, 54.5], "expected": 54.5}, {"input": [-5.0, 55.0], "expected": 55.0}, {"input": [-5.0, 55.5], "expected": 55.5}, {"input": [-5.0, 56.0], "expected": 56.0}, {"input": [-5.0, 56.5], "expected": 56.5}, {"input": [-5.0, 57.0], "expected": 57.0}, {"input": [-5.0, 57.5], "expected": 57.5}, {"input": [-5.0, 58.0], "expected": 58.0}, {"input": [-5.0, 58.5], "expected": 58.5}, {"input": [-5.0, 59.0], "expected": 59.0}, {"input": [-5.0, 59.5], "expected": 59.5}, {"input": [-5.0, 60.0], "expected": 60.0}, {"input": [-5.0, 60.5], "expected": 60.5}, {"input": [-5.0, 61.0], "expected": 61.0}, {"input": [-5.0, 61.5], "expected": 61.5}, {"input": [-5.0, 62.0], "expected": 62.0}, {"input": [-5.0, 62.5], "expected": 62.5}, {"input": [-5.0, 63.0], "expected": 63.0}, {"input": [-5.0, 63.5], "expected": 63.5}, {"input": [-5.0, 64.0], "expected": 64.0}, {"input": [-5.0, 64.5], "expected": 64.5}, {"input": [-5.0, 65.0], "expected": 65.0}, {"input": [-5.0, 65.5], "expected": 65.5}, {"input": [-5.0, 66.0], "expected": 66.0}, {"input": [-5.0, 66.5], "expected": 66.5}, {"input": [-5.0, 67.0], "expected": 67.0}, {"input": [-5.0, 67.5], "expected": 67.5}, {"input": [-5.0, 68.0], "expected": 68.0}, {"input": [-5.0, 68.5], "expected": 68.5}, {"input": [-5.0, 69.0], "expected": 69.0}, {"input": [-5.0, 69.5], "expected": 69.5}, {"input": [-5.0, 70.0], "expected": 70.0}, {"input": [-5.0, 70.5], "expected": 70.5}, {"input": [-5.0, 71.0], "expected": 71.0}, {"input": [-5.0, 71.5], "expected": 71.5}, {"input": [-5.0, 72.0], "expected": 72.0}, {"input": [-5.0, 72.5], "expected": 72.5}, {"input": [-5.0, 73.0], "expected": 73.0}, {"input": [-5.0, 73.5], "expected": 73.5}, {"input": [-5.0, 74.0], "expected": 74.0}, {"input": [-5.0, 74.5], "expected": 74.5}, {"input": [-5.0, 75.0], "expected": 75.0}, {"input": [-5.0, 75.5], "expected": 75.5}, {"input": [-5.0, 76.0], "expected": 76.0}, {"input": [-5.0, 76.5], "expected": 76.5}, {"input": [-5.0, 77.0], "expected": 77.0}, {"input": [-5.0, 77.5], "expected": 77.5}, {"input": [-5.0, 78.0], "expected": 78.0}, {"input": [-5.0, 78.5], "expected": 78.5}, {"input": [-5.0, 79.0], "expected": 79.0}, {"input": [-5.0, 79.5], "expected": 79.5}, {"input": [-5.0, 80.0], "expected": 80.0}, {"input": [-5.0, 80.5], "expected": 80.5}, {"input": [-5.0, 81.0], "expected": 81.0}, {"input": [-5.0, 81.5], "expected": 81.5}, {"input": [-5.0, 82.0], "expected": 82.0}, {"input": [-5.0, 82.5], "expected": 82.5}, {"input": [-5.0, 83.0], "expected": 83.0}, {"input": [-5.0, 83.5], "expected": 83.5}, {"input": [-5.0, 84.0], "expected": 84.0}, {"input": [-5.0, 84.5], "expected": 84.5}, {"input": [-5.0, 85.0], "expected": 85.0}, {"input": [-5.0, 85.5], "expected": 85.5}, {"input": [-5.0, 86.0], "expected": 86.0}, {"input": [-5.0, 86.5], "expected": 86.5}, {"input": [-5.0, 87.0], "expected": 87.0}, {"input": [-5.0, 87.5], "expected": 87.5}, {"input": [-5.0, 88.0], "expected": 88.0}, {"input": [-5.0, 88.5], "expected": 88.5}, {"input": [-5.0, 89.0], "expected": 89.0}, {"input": [-5.0, 89.5], "expected": 89.5}, {"input": [-5.0, 90.0], "expected": 90.0}, {"input": [-5.0, 90.5], "expected": 90.5}, {"input": [-5.0, 91.0], "expected": 91.0}, {"input": [-5.0, 91.5], "expected": 91.5}, {"input": [-5.0, 92.0], "expected": 92.0}, {"input": [-5.0, 92.5], "expected": 92.5}, {"input": [-5.0, 93.0], "expected": 93.0}, {"input": [-5.0, 93.5], "expected": 93.5}, {"input": [-5.0, 94.0], "expected": 94.0}, {"input": [-5.0, 94.5], "expected": 94.5}, {"input": [-5.0, 95.0], "expected": 95.0}, {"input": [-5.0, 95.5], "expected": 95.5}, {"input": [-5.0, 96.0], "expected": 96.0}, {"input": [-5.0, 96.5], "expected": 96.5}, {"input": [-5.0, 97.0], "expected": 97.0}, {"input": [-5.0, 97.5], "expected": 97.5}, {"input": [-5.0, 98.0], "expected": 98.0}, {"input": [-5.0, 98.5], "expected": 98.5}, {"input": [-5.0, 99.0], "expected": 99.0}, {"input": [-5.0, 99.5], "expected": 99.5}, {"input": [-4.5, -100.0], "expected": -4.5}, {"input": [-4.5, -99.5], "expected": -4.5}, {"input": [-4.5, -99.0], "expected": -4.5}, {"input": [-4.5, -98.5], "expected": -4.5}, {"input": [-4.5, -98.0], "expected": -4.5}, {"input": [-4.5, -97.5], "expected": -4.5}, {"input": [-4.5, -97.0], "expected": -4.5}, {"input": [-4.5, -96.5], "expected": -4.5}, {"input": [-4.5, -96.0], "expected": -4.5}, {"input": [-4.5, -95.5], "expected": -4.5}, {"input": [-4.5, -95.0], "expected": -4.5}, {"input": [-4.5, -94.5], "expected": -4.5}, {"input": [-4.5, -94.0], "expected": -4.5}, {"input": [-4.5, -93.5], "expected": -4.5}, {"input": [-4.5, -93.0], "expected": -4.5}, {"input": [-4.5, -92.5], "expected": -4.5}, {"input": [-4.5, -92.0], "expected": -4.5}, {"input": [-4.5, -91.5], "expected": -4.5}, {"input": [-4.5, -91.0], "expected": -4.5}, {"input": [-4.5, -90.5], "expected": -4.5}, {"input": [-4.5, -90.0], "expected": -4.5}, {"input": [-4.5, -89.5], "expected": -4.5}, {"input": [-4.5, -89.0], "expected": -4.5}, {"input": [-4.5, -88.5], "expected": -4.5}, {"input": [-4.5, -88.0], "expected": -4.5}, {"input": [-4.5, -87.5], "expected": -4.5}, {"input": [-4.5, -87.0], "expected": -4.5}, {"input": [-4.5, -86.5], "expected": -4.5}, {"input": [-4.5, -86.0], "expected": -4.5}, {"input": [-4.5, -85.5], "expected": -4.5}, {"input": [-4.5, -85.0], "expected": -4.5}, {"input": [-4.5, -84.5], "expected": -4.5}, {"input": [-4.5, -84.0], "expected": -4.5}, {"input": [-4.5, -83.5], "expected": -4.5}, {"input": [-4.5, -83.0], "expected": -4.5}, {"input": [-4.5, -82.5], "expected": -4.5}, {"input": [-4.5, -82.0], "expected": -4.5}, {"input": [-4.5, -81.5], "expected": -4.5}, {"input": [-4.5, -81.0], "expected": -4.5}, {"input": [-4.5, -80.5], "expected": -4.5}, {"input": [-4.5, -80.0], "expected": -4.5}, {"input": [-4.5, -79.5], "expected": -4.5}, {"input": [-4.5, -79.0], "expected": -4.5}, {"input": [-4.5, -78.5], "expected": -4.5}, {"input": [-4.5, -78.0], "expected": -4.5}, {"input": [-4.5, -77.5], "expected": -4.5}, {"input": [-4.5, -77.0], "expected": -4.5}, {"input": [-4.5, -76.5], "expected": -4.5}, {"input": [-4.5, -76.0], "expected": -4.5}, {"input": [-4.5, -75.5], "expected": -4.5}, {"input": [-4.5, -75.0], "expected": -4.5}, {"input": [-4.5, -74.5], "expected": -4.5}, {"input": [-4.5, -74.0], "expected": -4.5}, {"input": [-4.5, -73.5], "expected": -4.5}, {"input": [-4.5, -73.0], "expected": -4.5}, {"input": [-4.5, -72.5], "expected": -4.5}, {"input": [-4.5, -72.0], "expected": -4.5}, {"input": [-4.5, -71.5], "expected": -4.5}, {"input": [-4.5, -71.0], "expected": -4.5}, {"input": [-4.5, -70.5], "expected": -4.5}, {"input": [-4.5, -70.0], "expected": -4.5}, {"input": [-4.5, -69.5], "expected": -4.5}, {"input": [-4.5, -69.0], "expected": -4.5}, {"input": [-4.5, -68.5], "expected": -4.5}, {"input": [-4.5, -68.0], "expected": -4.5}, {"input": [-4.5, -67.5], "expected": -4.5}, {"input": [-4.5, -67.0], "expected": -4.5}, {"input": [-4.5, -66.5], "expected": -4.5}, {"input": [-4.5, -66.0], "expected": -4.5}, {"input": [-4.5, -65.5], "expected": -4.5}, {"input": [-4.5, -65.0], "expected": -4.5}, {"input": [-4.5, -64.5], "expected": -4.5}, {"input": [-4.5, -64.0], "expected": -4.5}, {"input": [-4.5, -63.5], "expected": -4.5}, {"input": [-4.5, -63.0], "expected": -4.5}, {"input": [-4.5, -62.5], "expected": -4.5}, {"input": [-4.5, -62.0], "expected": -4.5}, {"input": [-4.5, -61.5], "expected": -4.5}, {"input": [-4.5, -61.0], "expected": -4.5}, {"input": [-4.5, -60.5], "expected": -4.5}, {"input": [-4.5, -60.0], "expected": -4.5}, {"input": [-4.5, -59.5], "expected": -4.5}, {"input": [-4.5, -59.0], "expected": -4.5}, {"input": [-4.5, -58.5], "expected": -4.5}, {"input": [-4.5, -58.0], "expected": -4.5}, {"input": [-4.5, -57.5], "expected": -4.5}, {"input": [-4.5, -57.0], "expected": -4.5}, {"input": [-4.5, -56.5], "expected": -4.5}, {"input": [-4.5, -56.0], "expected": -4.5}, {"input": [-4.5, -55.5], "expected": -4.5}, {"input": [-4.5, -55.0], "expected": -4.5}, {"input": [-4.5, -54.5], "expected": -4.5}, {"input": [-4.5, -54.0], "expected": -4.5}, {"input": [-4.5, -53.5], "expected": -4.5}, {"input": [-4.5, -53.0], "expected": -4.5}, {"input": [-4.5, -52.5], "expected": -4.5}, {"input": [-4.5, -52.0], "expected": -4.5}, {"input": [-4.5, -51.5], "expected": -4.5}, {"input": [-4.5, -51.0], "expected": -4.5}, {"input": [-4.5, -50.5], "expected": -4.5}, {"input": [-4.5, -50.0], "expected": -4.5}, {"input": [-4.5, -49.5], "expected": -4.5}, {"input": [-4.5, -49.0], "expected": -4.5}, {"input": [-4.5, -48.5], "expected": -4.5}, {"input": [-4.5, -48.0], "expected": -4.5}, {"input": [-4.5, -47.5], "expected": -4.5}, {"input": [-4.5, -47.0], "expected": -4.5}, {"input": [-4.5, -46.5], "expected": -4.5}, {"input": [-4.5, -46.0], "expected": -4.5}, {"input": [-4.5, -45.5], "expected": -4.5}, {"input": [-4.5, -45.0], "expected": -4.5}, {"input": [-4.5, -44.5], "expected": -4.5}, {"input": [-4.5, -44.0], "expected": -4.5}, {"input": [-4.5, -43.5], "expected": -4.5}, {"input": [-4.5, -43.0], "expected": -4.5}, {"input": [-4.5, -42.5], "expected": -4.5}, {"input": [-4.5, -42.0], "expected": -4.5}, {"input": [-4.5, -41.5], "expected": -4.5}, {"input": [-4.5, -41.0], "expected": -4.5}, {"input": [-4.5, -40.5], "expected": -4.5}, {"input": [-4.5, -40.0], "expected": -4.5}, {"input": [-4.5, -39.5], "expected": -4.499999999999999}, {"input": [-4.5, -39.0], "expected": -4.499999999999999}, {"input": [-4.5, -38.5], "expected": -4.499999999999998}, {"input": [-4.5, -38.0], "expected": -4.499999999999997}, {"input": [-4.5, -37.5], "expected": -4.499999999999996}, {"input": [-4.5, -37.0], "expected": -4.499999999999992}, {"input": [-4.5, -36.5], "expected": -4.499999999999988}, {"input": [-4.5, -36.0], "expected": -4.499999999999979}, {"input": [-4.5, -35.5], "expected": -4.499999999999965}, {"input": [-4.5, -35.0], "expected": -4.499999999999943}, {"input": [-4.5, -34.5], "expected": -4.499999999999907}, {"input": [-4.5, -34.0], "expected": -4.4999999999998455}, {"input": [-4.5, -33.5], "expected": -4.499999999999746}, {"input": [-4.5, -33.0], "expected": -4.499999999999581}, {"input": [-4.5, -32.5], "expected": -4.499999999999309}, {"input": [-4.5, -32.0], "expected": -4.49999999999886}, {"input": [-4.5, -31.5], "expected": -4.499999999998121}, {"input": [-4.5, -31.0], "expected": -4.499999999996901}, {"input": [-4.5, -30.5], "expected": -4.499999999994891}, {"input": [-4.5, -30.0], "expected": -4.4999999999915765}, {"input": [-4.5, -29.5], "expected": -4.499999999986112}, {"input": [-4.5, -29.0], "expected": -4.499999999977103}, {"input": [-4.5, -28.5], "expected": -4.499999999962249}, {"input": [-4.5, -28.0], "expected": -4.499999999937758}, {"input": [-4.5, -27.5], "expected": -4.499999999897382}, {"input": [-4.5, -27.0], "expected": -4.49999999983081}, {"input": [-4.5, -26.5], "expected": -4.499999999721053}, {"input": [-4.5, -26.0], "expected": -4.499999999540094}, {"input": [-4.5, -25.5], "expected": -4.499999999241744}, {"input": [-4.5, -25.0], "expected": -4.499999998749847}, {"input": [-4.5, -24.5], "expected": -4.499999997938846}, {"input": [-4.5, -24.0], "expected": -4.4999999966017326}, {"input": [-4.5, -23.5], "expected": -4.4999999943972036}, {"input": [-4.5, -23.0], "expected": -4.49999999076255}, {"input": [-4.5, -22.5], "expected": -4.49999998477002}, {"input": [-4.5, -22.0], "expected": -4.499999974890009}, {"input": [-4.5, -21.5], "expected": -4.499999958600624}, {"input": [-4.5, -21.0], "expected": -4.499999931743969}, {"input": [-4.5, -20.5], "expected": -4.499999887464831}, {"input": [-4.5, -20.0], "expected": -4.499999814460881}, {"input": [-4.5, -19.5], "expected": -4.499999694097727}, {"input": [-4.5, -19.0], "expected": -4.499999495652465}, {"input": [-4.5, -18.5], "expected": -4.499999168471627}, {"input": [-4.5, -18.0], "expected": -4.499998629041853}, {"input": [-4.5, -17.5], "expected": -4.499997739673147}, {"input": [-4.5, -17.0], "expected": -4.499996273353772}, {"input": [-4.5, -16.5], "expected": -4.4999938558065224}, {"input": [-4.5, -16.0], "expected": -4.4999898699577106}, {"input": [-4.5, -15.5], "expected": -4.499983298438681}, {"input": [-4.5, -15.0], "expected": -4.499972463929772}, {"input": [-4.5, -14.5], "expected": -4.499954601100783}, {"input": [-4.5, -14.0], "expected": -4.499925150971371}, {"input": [-4.5, -13.5], "expected": -4.499876597810276}, {"input": [-4.5, -13.0], "expected": -4.4997965523278705}, {"input": [-4.5, -12.5], "expected": -4.499664593627104}, {"input": [-4.5, -12.0], "expected": -4.499447068524639}, {"input": [-4.5, -11.5], "expected": -4.499088533546225}, {"input": [-4.5, -11.0], "expected": -4.498497689840246}, {"input": [-4.5, -10.5], "expected": -4.49752431486227}, {"input": [-4.5, -10.0], "expected": -4.495921556729429}, {"input": [-4.5, -9.5], "expected": -4.493284651510882}, {"input": [-4.5, -9.0], "expected": -4.488952255151406}, {"input": [-4.5, -8.5], "expected": -4.4818500720821906}, {"input": [-4.5, -8.0], "expected": -4.470249581727379}, {"input": [-4.5, -7.5], "expected": -4.451412648426258}, {"input": [-4.5, -7.0], "expected": -4.42111026570745}, {"input": [-4.5, -6.5], "expected": -4.373071988957028}, {"input": [-4.5, -6.0], "expected": -4.298586722017248}, {"input": [-4.5, -5.5], "expected": -4.186738312481777}, {"input": [-4.5, -5.0], "expected": -4.0259230158198935}, {"input": [-4.5, -4.5], "expected": -3.8068528194400546}, {"input": [-4.5, -4.0], "expected": -3.5259230158198935}, {"input": [-4.5, -3.5], "expected": -3.186738312481777}, {"input": [-4.5, -3.0], "expected": -2.7985867220172476}, {"input": [-4.5, -2.5], "expected": -2.3730719889570273}, {"input": [-4.5, -2.0], "expected": -1.9211102657074504}, {"input": [-4.5, -1.5], "expected": -1.451412648426258}, {"input": [-4.5, -1.0], "expected": -0.9702495817273794}, {"input": [-4.5, -0.5], "expected": -0.4818500720821903}, {"input": [-4.5, 0.0], "expected": 0.011047744848593817}, {"input": [-4.5, 0.5], "expected": 0.506715348489118}, {"input": [-4.5, 1.0], "expected": 1.0040784432705707}, {"input": [-4.5, 1.5], "expected": 1.5024756851377306}, {"input": [-4.5, 2.0], "expected": 2.001502310159754}, {"input": [-4.5, 2.5], "expected": 2.500911466453774}, {"input": [-4.5, 3.0], "expected": 3.0005529314753607}, {"input": [-4.5, 3.5], "expected": 3.500335406372896}, {"input": [-4.5, 4.0], "expected": 4.0002034476721295}, {"input": [-4.5, 4.5], "expected": 4.500123402189724}, {"input": [-4.5, 5.0], "expected": 5.000074849028629}, {"input": [-4.5, 5.5], "expected": 5.500045398899217}, {"input": [-4.5, 6.0], "expected": 6.000027536070228}, {"input": [-4.5, 6.5], "expected": 6.500016701561319}, {"input": [-4.5, 7.0], "expected": 7.0000101300422894}, {"input": [-4.5, 7.5], "expected": 7.5000061441934776}, {"input": [-4.5, 8.0], "expected": 8.000003726646229}, {"input": [-4.5, 8.5], "expected": 8.500002260326852}, {"input": [-4.5, 9.0], "expected": 9.000001370958147}, {"input": [-4.5, 9.5], "expected": 9.500000831528373}, {"input": [-4.5, 10.0], "expected": 10.000000504347536}, {"input": [-4.5, 10.5], "expected": 10.500000305902274}, {"input": [-4.5, 11.0], "expected": 11.000000185539118}, {"input": [-4.5, 11.5], "expected": 11.500000112535169}, {"input": [-4.5, 12.0], "expected": 12.000000068256032}, {"input": [-4.5, 12.5], "expected": 12.500000041399376}, {"input": [-4.5, 13.0], "expected": 13.00000002510999}, {"input": [-4.5, 13.5], "expected": 13.500000015229979}, {"input": [-4.5, 14.0], "expected": 14.00000000923745}, {"input": [-4.5, 14.5], "expected": 14.500000005602796}, {"input": [-4.5, 15.0], "expected": 15.000000003398268}, {"input": [-4.5, 15.5], "expected": 15.500000002061153}, {"input": [-4.5, 16.0], "expected": 16.000000001250154}, {"input": [-4.5, 16.5], "expected": 16.500000000758256}, {"input": [-4.5, 17.0], "expected": 17.000000000459906}, {"input": [-4.5, 17.5], "expected": 17.50000000027895}, {"input": [-4.5, 18.0], "expected": 18.00000000016919}, {"input": [-4.5, 18.5], "expected": 18.50000000010262}, {"input": [-4.5, 19.0], "expected": 19.00000000006224}, {"input": [-4.5, 19.5], "expected": 19.50000000003775}, {"input": [-4.5, 20.0], "expected": 20.000000000022897}, {"input": [-4.5, 20.5], "expected": 20.500000000013888}, {"input": [-4.5, 21.0], "expected": 21.000000000008423}, {"input": [-4.5, 21.5], "expected": 21.50000000000511}, {"input": [-4.5, 22.0], "expected": 22.000000000003098}, {"input": [-4.5, 22.5], "expected": 22.50000000000188}, {"input": [-4.5, 23.0], "expected": 23.00000000000114}, {"input": [-4.5, 23.5], "expected": 23.500000000000693}, {"input": [-4.5, 24.0], "expected": 24.00000000000042}, {"input": [-4.5, 24.5], "expected": 24.500000000000256}, {"input": [-4.5, 25.0], "expected": 25.000000000000153}, {"input": [-4.5, 25.5], "expected": 25.500000000000092}, {"input": [-4.5, 26.0], "expected": 26.000000000000057}, {"input": [-4.5, 26.5], "expected": 26.500000000000036}, {"input": [-4.5, 27.0], "expected": 27.00000000000002}, {"input": [-4.5, 27.5], "expected": 27.500000000000014}, {"input": [-4.5, 28.0], "expected": 28.000000000000007}, {"input": [-4.5, 28.5], "expected": 28.500000000000004}, {"input": [-4.5, 29.0], "expected": 29.000000000000004}, {"input": [-4.5, 29.5], "expected": 29.5}, {"input": [-4.5, 30.0], "expected": 30.0}, {"input": [-4.5, 30.5], "expected": 30.5}, {"input": [-4.5, 31.0], "expected": 31.0}, {"input": [-4.5, 31.5], "expected": 31.5}, {"input": [-4.5, 32.0], "expected": 32.0}, {"input": [-4.5, 32.5], "expected": 32.5}, {"input": [-4.5, 33.0], "expected": 33.0}, {"input": [-4.5, 33.5], "expected": 33.5}, {"input": [-4.5, 34.0], "expected": 34.0}, {"input": [-4.5, 34.5], "expected": 34.5}, {"input": [-4.5, 35.0], "expected": 35.0}, {"input": [-4.5, 35.5], "expected": 35.5}, {"input": [-4.5, 36.0], "expected": 36.0}, {"input": [-4.5, 36.5], "expected": 36.5}, {"input": [-4.5, 37.0], "expected": 37.0}, {"input": [-4.5, 37.5], "expected": 37.5}, {"input": [-4.5, 38.0], "expected": 38.0}, {"input": [-4.5, 38.5], "expected": 38.5}, {"input": [-4.5, 39.0], "expected": 39.0}, {"input": [-4.5, 39.5], "expected": 39.5}, {"input": [-4.5, 40.0], "expected": 40.0}, {"input": [-4.5, 40.5], "expected": 40.5}, {"input": [-4.5, 41.0], "expected": 41.0}, {"input": [-4.5, 41.5], "expected": 41.5}, {"input": [-4.5, 42.0], "expected": 42.0}, {"input": [-4.5, 42.5], "expected": 42.5}, {"input": [-4.5, 43.0], "expected": 43.0}, {"input": [-4.5, 43.5], "expected": 43.5}, {"input": [-4.5, 44.0], "expected": 44.0}, {"input": [-4.5, 44.5], "expected": 44.5}, {"input": [-4.5, 45.0], "expected": 45.0}, {"input": [-4.5, 45.5], "expected": 45.5}, {"input": [-4.5, 46.0], "expected": 46.0}, {"input": [-4.5, 46.5], "expected": 46.5}, {"input": [-4.5, 47.0], "expected": 47.0}, {"input": [-4.5, 47.5], "expected": 47.5}, {"input": [-4.5, 48.0], "expected": 48.0}, {"input": [-4.5, 48.5], "expected": 48.5}, {"input": [-4.5, 49.0], "expected": 49.0}, {"input": [-4.5, 49.5], "expected": 49.5}, {"input": [-4.5, 50.0], "expected": 50.0}, {"input": [-4.5, 50.5], "expected": 50.5}, {"input": [-4.5, 51.0], "expected": 51.0}, {"input": [-4.5, 51.5], "expected": 51.5}, {"input": [-4.5, 52.0], "expected": 52.0}, {"input": [-4.5, 52.5], "expected": 52.5}, {"input": [-4.5, 53.0], "expected": 53.0}, {"input": [-4.5, 53.5], "expected": 53.5}, {"input": [-4.5, 54.0], "expected": 54.0}, {"input": [-4.5, 54.5], "expected": 54.5}, {"input": [-4.5, 55.0], "expected": 55.0}, {"input": [-4.5, 55.5], "expected": 55.5}, {"input": [-4.5, 56.0], "expected": 56.0}, {"input": [-4.5, 56.5], "expected": 56.5}, {"input": [-4.5, 57.0], "expected": 57.0}, {"input": [-4.5, 57.5], "expected": 57.5}, {"input": [-4.5, 58.0], "expected": 58.0}, {"input": [-4.5, 58.5], "expected": 58.5}, {"input": [-4.5, 59.0], "expected": 59.0}, {"input": [-4.5, 59.5], "expected": 59.5}, {"input": [-4.5, 60.0], "expected": 60.0}, {"input": [-4.5, 60.5], "expected": 60.5}, {"input": [-4.5, 61.0], "expected": 61.0}, {"input": [-4.5, 61.5], "expected": 61.5}, {"input": [-4.5, 62.0], "expected": 62.0}, {"input": [-4.5, 62.5], "expected": 62.5}, {"input": [-4.5, 63.0], "expected": 63.0}, {"input": [-4.5, 63.5], "expected": 63.5}, {"input": [-4.5, 64.0], "expected": 64.0}, {"input": [-4.5, 64.5], "expected": 64.5}, {"input": [-4.5, 65.0], "expected": 65.0}, {"input": [-4.5, 65.5], "expected": 65.5}, {"input": [-4.5, 66.0], "expected": 66.0}, {"input": [-4.5, 66.5], "expected": 66.5}, {"input": [-4.5, 67.0], "expected": 67.0}, {"input": [-4.5, 67.5], "expected": 67.5}, {"input": [-4.5, 68.0], "expected": 68.0}, {"input": [-4.5, 68.5], "expected": 68.5}, {"input": [-4.5, 69.0], "expected": 69.0}, {"input": [-4.5, 69.5], "expected": 69.5}, {"input": [-4.5, 70.0], "expected": 70.0}, {"input": [-4.5, 70.5], "expected": 70.5}, {"input": [-4.5, 71.0], "expected": 71.0}, {"input": [-4.5, 71.5], "expected": 71.5}, {"input": [-4.5, 72.0], "expected": 72.0}, {"input": [-4.5, 72.5], "expected": 72.5}, {"input": [-4.5, 73.0], "expected": 73.0}, {"input": [-4.5, 73.5], "expected": 73.5}, {"input": [-4.5, 74.0], "expected": 74.0}, {"input": [-4.5, 74.5], "expected": 74.5}, {"input": [-4.5, 75.0], "expected": 75.0}, {"input": [-4.5, 75.5], "expected": 75.5}, {"input": [-4.5, 76.0], "expected": 76.0}, {"input": [-4.5, 76.5], "expected": 76.5}, {"input": [-4.5, 77.0], "expected": 77.0}, {"input": [-4.5, 77.5], "expected": 77.5}, {"input": [-4.5, 78.0], "expected": 78.0}, {"input": [-4.5, 78.5], "expected": 78.5}, {"input": [-4.5, 79.0], "expected": 79.0}, {"input": [-4.5, 79.5], "expected": 79.5}, {"input": [-4.5, 80.0], "expected": 80.0}, {"input": [-4.5, 80.5], "expected": 80.5}, {"input": [-4.5, 81.0], "expected": 81.0}, {"input": [-4.5, 81.5], "expected": 81.5}, {"input": [-4.5, 82.0], "expected": 82.0}, {"input": [-4.5, 82.5], "expected": 82.5}, {"input": [-4.5, 83.0], "expected": 83.0}, {"input": [-4.5, 83.5], "expected": 83.5}, {"input": [-4.5, 84.0], "expected": 84.0}, {"input": [-4.5, 84.5], "expected": 84.5}, {"input": [-4.5, 85.0], "expected": 85.0}, {"input": [-4.5, 85.5], "expected": 85.5}, {"input": [-4.5, 86.0], "expected": 86.0}, {"input": [-4.5, 86.5], "expected": 86.5}, {"input": [-4.5, 87.0], "expected": 87.0}, {"input": [-4.5, 87.5], "expected": 87.5}, {"input": [-4.5, 88.0], "expected": 88.0}, {"input": [-4.5, 88.5], "expected": 88.5}, {"input": [-4.5, 89.0], "expected": 89.0}, {"input": [-4.5, 89.5], "expected": 89.5}, {"input": [-4.5, 90.0], "expected": 90.0}, {"input": [-4.5, 90.5], "expected": 90.5}, {"input": [-4.5, 91.0], "expected": 91.0}, {"input": [-4.5, 91.5], "expected": 91.5}, {"input": [-4.5, 92.0], "expected": 92.0}, {"input": [-4.5, 92.5], "expected": 92.5}, {"input": [-4.5, 93.0], "expected": 93.0}, {"input": [-4.5, 93.5], "expected": 93.5}, {"input": [-4.5, 94.0], "expected": 94.0}, {"input": [-4.5, 94.5], "expected": 94.5}, {"input": [-4.5, 95.0], "expected": 95.0}, {"input": [-4.5, 95.5], "expected": 95.5}, {"input": [-4.5, 96.0], "expected": 96.0}, {"input": [-4.5, 96.5], "expected": 96.5}, {"input": [-4.5, 97.0], "expected": 97.0}, {"input": [-4.5, 97.5], "expected": 97.5}, {"input": [-4.5, 98.0], "expected": 98.0}, {"input": [-4.5, 98.5], "expected": 98.5}, {"input": [-4.5, 99.0], "expected": 99.0}, {"input": [-4.5, 99.5], "expected": 99.5}, {"input": [-4.0, -100.0], "expected": -4.0}, {"input": [-4.0, -99.5], "expected": -4.0}, {"input": [-4.0, -99.0], "expected": -4.0}, {"input": [-4.0, -98.5], "expected": -4.0}, {"input": [-4.0, -98.0], "expected": -4.0}, {"input": [-4.0, -97.5], "expected": -4.0}, {"input": [-4.0, -97.0], "expected": -4.0}, {"input": [-4.0, -96.5], "expected": -4.0}, {"input": [-4.0, -96.0], "expected": -4.0}, {"input": [-4.0, -95.5], "expected": -4.0}, {"input": [-4.0, -95.0], "expected": -4.0}, {"input": [-4.0, -94.5], "expected": -4.0}, {"input": [-4.0, -94.0], "expected": -4.0}, {"input": [-4.0, -93.5], "expected": -4.0}, {"input": [-4.0, -93.0], "expected": -4.0}, {"input": [-4.0, -92.5], "expected": -4.0}, {"input": [-4.0, -92.0], "expected": -4.0}, {"input": [-4.0, -91.5], "expected": -4.0}, {"input": [-4.0, -91.0], "expected": -4.0}, {"input": [-4.0, -90.5], "expected": -4.0}, {"input": [-4.0, -90.0], "expected": -4.0}, {"input": [-4.0, -89.5], "expected": -4.0}, {"input": [-4.0, -89.0], "expected": -4.0}, {"input": [-4.0, -88.5], "expected": -4.0}, {"input": [-4.0, -88.0], "expected": -4.0}, {"input": [-4.0, -87.5], "expected": -4.0}, {"input": [-4.0, -87.0], "expected": -4.0}, {"input": [-4.0, -86.5], "expected": -4.0}, {"input": [-4.0, -86.0], "expected": -4.0}, {"input": [-4.0, -85.5], "expected": -4.0}, {"input": [-4.0, -85.0], "expected": -4.0}, {"input": [-4.0, -84.5], "expected": -4.0}, {"input": [-4.0, -84.0], "expected": -4.0}, {"input": [-4.0, -83.5], "expected": -4.0}, {"input": [-4.0, -83.0], "expected": -4.0}, {"input": [-4.0, -82.5], "expected": -4.0}, {"input": [-4.0, -82.0], "expected": -4.0}, {"input": [-4.0, -81.5], "expected": -4.0}, {"input": [-4.0, -81.0], "expected": -4.0}, {"input": [-4.0, -80.5], "expected": -4.0}, {"input": [-4.0, -80.0], "expected": -4.0}, {"input": [-4.0, -79.5], "expected": -4.0}, {"input": [-4.0, -79.0], "expected": -4.0}, {"input": [-4.0, -78.5], "expected": -4.0}, {"input": [-4.0, -78.0], "expected": -4.0}, {"input": [-4.0, -77.5], "expected": -4.0}, {"input": [-4.0, -77.0], "expected": -4.0}, {"input": [-4.0, -76.5], "expected": -4.0}, {"input": [-4.0, -76.0], "expected": -4.0}, {"input": [-4.0, -75.5], "expected": -4.0}, {"input": [-4.0, -75.0], "expected": -4.0}, {"input": [-4.0, -74.5], "expected": -4.0}, {"input": [-4.0, -74.0], "expected": -4.0}, {"input": [-4.0, -73.5], "expected": -4.0}, {"input": [-4.0, -73.0], "expected": -4.0}, {"input": [-4.0, -72.5], "expected": -4.0}, {"input": [-4.0, -72.0], "expected": -4.0}, {"input": [-4.0, -71.5], "expected": -4.0}, {"input": [-4.0, -71.0], "expected": -4.0}, {"input": [-4.0, -70.5], "expected": -4.0}, {"input": [-4.0, -70.0], "expected": -4.0}, {"input": [-4.0, -69.5], "expected": -4.0}, {"input": [-4.0, -69.0], "expected": -4.0}, {"input": [-4.0, -68.5], "expected": -4.0}, {"input": [-4.0, -68.0], "expected": -4.0}, {"input": [-4.0, -67.5], "expected": -4.0}, {"input": [-4.0, -67.0], "expected": -4.0}, {"input": [-4.0, -66.5], "expected": -4.0}, {"input": [-4.0, -66.0], "expected": -4.0}, {"input": [-4.0, -65.5], "expected": -4.0}, {"input": [-4.0, -65.0], "expected": -4.0}, {"input": [-4.0, -64.5], "expected": -4.0}, {"input": [-4.0, -64.0], "expected": -4.0}, {"input": [-4.0, -63.5], "expected": -4.0}, {"input": [-4.0, -63.0], "expected": -4.0}, {"input": [-4.0, -62.5], "expected": -4.0}, {"input": [-4.0, -62.0], "expected": -4.0}, {"input": [-4.0, -61.5], "expected": -4.0}, {"input": [-4.0, -61.0], "expected": -4.0}, {"input": [-4.0, -60.5], "expected": -4.0}, {"input": [-4.0, -60.0], "expected": -4.0}, {"input": [-4.0, -59.5], "expected": -4.0}, {"input": [-4.0, -59.0], "expected": -4.0}, {"input": [-4.0, -58.5], "expected": -4.0}, {"input": [-4.0, -58.0], "expected": -4.0}, {"input": [-4.0, -57.5], "expected": -4.0}, {"input": [-4.0, -57.0], "expected": -4.0}, {"input": [-4.0, -56.5], "expected": -4.0}, {"input": [-4.0, -56.0], "expected": -4.0}, {"input": [-4.0, -55.5], "expected": -4.0}, {"input": [-4.0, -55.0], "expected": -4.0}, {"input": [-4.0, -54.5], "expected": -4.0}, {"input": [-4.0, -54.0], "expected": -4.0}, {"input": [-4.0, -53.5], "expected": -4.0}, {"input": [-4.0, -53.0], "expected": -4.0}, {"input": [-4.0, -52.5], "expected": -4.0}, {"input": [-4.0, -52.0], "expected": -4.0}, {"input": [-4.0, -51.5], "expected": -4.0}, {"input": [-4.0, -51.0], "expected": -4.0}, {"input": [-4.0, -50.5], "expected": -4.0}, {"input": [-4.0, -50.0], "expected": -4.0}, {"input": [-4.0, -49.5], "expected": -4.0}, {"input": [-4.0, -49.0], "expected": -4.0}, {"input": [-4.0, -48.5], "expected": -4.0}, {"input": [-4.0, -48.0], "expected": -4.0}, {"input": [-4.0, -47.5], "expected": -4.0}, {"input": [-4.0, -47.0], "expected": -4.0}, {"input": [-4.0, -46.5], "expected": -4.0}, {"input": [-4.0, -46.0], "expected": -4.0}, {"input": [-4.0, -45.5], "expected": -4.0}, {"input": [-4.0, -45.0], "expected": -4.0}, {"input": [-4.0, -44.5], "expected": -4.0}, {"input": [-4.0, -44.0], "expected": -4.0}, {"input": [-4.0, -43.5], "expected": -4.0}, {"input": [-4.0, -43.0], "expected": -4.0}, {"input": [-4.0, -42.5], "expected": -4.0}, {"input": [-4.0, -42.0], "expected": -4.0}, {"input": [-4.0, -41.5], "expected": -4.0}, {"input": [-4.0, -41.0], "expected": -4.0}, {"input": [-4.0, -40.5], "expected": -4.0}, {"input": [-4.0, -40.0], "expected": -3.9999999999999996}, {"input": [-4.0, -39.5], "expected": -3.9999999999999996}, {"input": [-4.0, -39.0], "expected": -3.9999999999999996}, {"input": [-4.0, -38.5], "expected": -3.999999999999999}, {"input": [-4.0, -38.0], "expected": -3.9999999999999982}, {"input": [-4.0, -37.5], "expected": -3.9999999999999973}, {"input": [-4.0, -37.0], "expected": -3.9999999999999956}, {"input": [-4.0, -36.5], "expected": -3.9999999999999925}, {"input": [-4.0, -36.0], "expected": -3.999999999999987}, {"input": [-4.0, -35.5], "expected": -3.999999999999979}, {"input": [-4.0, -35.0], "expected": -3.9999999999999654}, {"input": [-4.0, -34.5], "expected": -3.999999999999943}, {"input": [-4.0, -34.0], "expected": -3.9999999999999063}, {"input": [-4.0, -33.5], "expected": -3.999999999999846}, {"input": [-4.0, -33.0], "expected": -3.9999999999997455}, {"input": [-4.0, -32.5], "expected": -3.999999999999581}, {"input": [-4.0, -32.0], "expected": -3.9999999999993086}, {"input": [-4.0, -31.5], "expected": -3.99999999999886}, {"input": [-4.0, -31.0], "expected": -3.9999999999981206}, {"input": [-4.0, -30.5], "expected": -3.999999999996901}, {"input": [-4.0, -30.0], "expected": -3.9999999999948908}, {"input": [-4.0, -29.5], "expected": -3.9999999999915765}, {"input": [-4.0, -29.0], "expected": -3.999999999986112}, {"input": [-4.0, -28.5], "expected": -3.9999999999771028}, {"input": [-4.0, -28.0], "expected": -3.999999999962249}, {"input": [-4.0, -27.5], "expected": -3.9999999999377587}, {"input": [-4.0, -27.0], "expected": -3.999999999897381}, {"input": [-4.0, -26.5], "expected": -3.99999999983081}, {"input": [-4.0, -26.0], "expected": -3.9999999997210534}, {"input": [-4.0, -25.5], "expected": -3.9999999995400946}, {"input": [-4.0, -25.0], "expected": -3.999999999241744}, {"input": [-4.0, -24.5], "expected": -3.999999998749847}, {"input": [-4.0, -24.0], "expected": -3.9999999979388465}, {"input": [-4.0, -23.5], "expected": -3.999999996601732}, {"input": [-4.0, -23.0], "expected": -3.9999999943972036}, {"input": [-4.0, -22.5], "expected": -3.9999999907625505}, {"input": [-4.0, -22.0], "expected": -3.9999999847700205}, {"input": [-4.0, -21.5], "expected": -3.9999999748900086}, {"input": [-4.0, -21.0], "expected": -3.9999999586006236}, {"input": [-4.0, -20.5], "expected": -3.9999999317439685}, {"input": [-4.0, -20.0], "expected": -3.9999998874648317}, {"input": [-4.0, -19.5], "expected": -3.999999814460881}, {"input": [-4.0, -19.0], "expected": -3.9999996940977263}, {"input": [-4.0, -18.5], "expected": -3.9999994956524647}, {"input": [-4.0, -18.0], "expected": -3.9999991684716267}, {"input": [-4.0, -17.5], "expected": -3.9999986290418534}, {"input": [-4.0, -17.0], "expected": -3.9999977396731476}, {"input": [-4.0, -16.5], "expected": -3.999996273353772}, {"input": [-4.0, -16.0], "expected": -3.9999938558065224}, {"input": [-4.0, -15.5], "expected": -3.9999898699577106}, {"input": [-4.0, -15.0], "expected": -3.9999832984386816}, {"input": [-4.0, -14.5], "expected": -3.999972463929771}, {"input": [-4.0, -14.0], "expected": -3.999954601100783}, {"input": [-4.0, -13.5], "expected": -3.9999251509713707}, {"input": [-4.0, -13.0], "expected": -3.999876597810277}, {"input": [-4.0, -12.5], "expected": -3.9997965523278705}, {"input": [-4.0, -12.0], "expected": -3.999664593627104}, {"input": [-4.0, -11.5], "expected": -3.9994470685246393}, {"input": [-4.0, -11.0], "expected": -3.999088533546226}, {"input": [-4.0, -10.5], "expected": -3.998497689840246}, {"input": [-4.0, -10.0], "expected": -3.9975243148622694}, {"input": [-4.0, -9.5], "expected": -3.9959215567294293}, {"input": [-4.0, -9.0], "expected": -3.9932846515108817}, {"input": [-4.0, -8.5], "expected": -3.988952255151406}, {"input": [-4.0, -8.0], "expected": -3.98185007208219}, {"input": [-4.0, -7.5], "expected": -3.9702495817273795}, {"input": [-4.0, -7.0], "expected": -3.951412648426258}, {"input": [-4.0, -6.5], "expected": -3.9211102657074504}, {"input": [-4.0, -6.0], "expected": -3.8730719889570273}, {"input": [-4.0, -5.5], "expected": -3.7985867220172476}, {"input": [-4.0, -5.0], "expected": -3.686738312481777}, {"input": [-4.0, -4.5], "expected": -3.5259230158198935}, {"input": [-4.0, -4.0], "expected": -3.3068528194400546}, {"input": [-4.0, -3.5], "expected": -3.0259230158198935}, {"input": [-4.0, -3.0], "expected": -2.686738312481777}, {"input": [-4.0, -2.5], "expected": -2.2985867220172476}, {"input": [-4.0, -2.0], "expected": -1.8730719889570275}, {"input": [-4.0, -1.5], "expected": -1.4211102657074504}, {"input": [-4.0, -1.0], "expected": -0.951412648426258}, {"input": [-4.0, -0.5], "expected": -0.4702495817273794}, {"input": [-4.0, 0.0], "expected": 0.018149927917809738}, {"input": [-4.0, 0.5], "expected": 0.5110477448485938}, {"input": [-4.0, 1.0], "expected": 1.006715348489118}, {"input": [-4.0, 1.5], "expected": 1.5040784432705707}, {"input": [-4.0, 2.0], "expected": 2.0024756851377306}, {"input": [-4.0, 2.5], "expected": 2.501502310159754}, {"input": [-4.0, 3.0], "expected": 3.000911466453774}, {"input": [-4.0, 3.5], "expected": 3.5005529314753607}, {"input": [-4.0, 4.0], "expected": 4.000335406372896}, {"input": [-4.0, 4.5], "expected": 4.5002034476721295}, {"input": [-4.0, 5.0], "expected": 5.000123402189724}, {"input": [-4.0, 5.5], "expected": 5.500074849028629}, {"input": [-4.0, 6.0], "expected": 6.000045398899217}, {"input": [-4.0, 6.5], "expected": 6.500027536070228}, {"input": [-4.0, 7.0], "expected": 7.000016701561319}, {"input": [-4.0, 7.5], "expected": 7.5000101300422894}, {"input": [-4.0, 8.0], "expected": 8.000006144193478}, {"input": [-4.0, 8.5], "expected": 8.500003726646229}, {"input": [-4.0, 9.0], "expected": 9.000002260326852}, {"input": [-4.0, 9.5], "expected": 9.500001370958147}, {"input": [-4.0, 10.0], "expected": 10.000000831528373}, {"input": [-4.0, 10.5], "expected": 10.500000504347536}, {"input": [-4.0, 11.0], "expected": 11.000000305902274}, {"input": [-4.0, 11.5], "expected": 11.500000185539118}, {"input": [-4.0, 12.0], "expected": 12.000000112535169}, {"input": [-4.0, 12.5], "expected": 12.500000068256032}, {"input": [-4.0, 13.0], "expected": 13.000000041399376}, {"input": [-4.0, 13.5], "expected": 13.50000002510999}, {"input": [-4.0, 14.0], "expected": 14.000000015229979}, {"input": [-4.0, 14.5], "expected": 14.50000000923745}, {"input": [-4.0, 15.0], "expected": 15.000000005602796}, {"input": [-4.0, 15.5], "expected": 15.500000003398268}, {"input": [-4.0, 16.0], "expected": 16.000000002061153}, {"input": [-4.0, 16.5], "expected": 16.500000001250154}, {"input": [-4.0, 17.0], "expected": 17.000000000758256}, {"input": [-4.0, 17.5], "expected": 17.500000000459906}, {"input": [-4.0, 18.0], "expected": 18.00000000027895}, {"input": [-4.0, 18.5], "expected": 18.50000000016919}, {"input": [-4.0, 19.0], "expected": 19.00000000010262}, {"input": [-4.0, 19.5], "expected": 19.50000000006224}, {"input": [-4.0, 20.0], "expected": 20.00000000003775}, {"input": [-4.0, 20.5], "expected": 20.500000000022897}, {"input": [-4.0, 21.0], "expected": 21.000000000013888}, {"input": [-4.0, 21.5], "expected": 21.500000000008423}, {"input": [-4.0, 22.0], "expected": 22.00000000000511}, {"input": [-4.0, 22.5], "expected": 22.500000000003098}, {"input": [-4.0, 23.0], "expected": 23.00000000000188}, {"input": [-4.0, 23.5], "expected": 23.50000000000114}, {"input": [-4.0, 24.0], "expected": 24.000000000000693}, {"input": [-4.0, 24.5], "expected": 24.50000000000042}, {"input": [-4.0, 25.0], "expected": 25.000000000000256}, {"input": [-4.0, 25.5], "expected": 25.500000000000153}, {"input": [-4.0, 26.0], "expected": 26.000000000000092}, {"input": [-4.0, 26.5], "expected": 26.500000000000057}, {"input": [-4.0, 27.0], "expected": 27.000000000000036}, {"input": [-4.0, 27.5], "expected": 27.50000000000002}, {"input": [-4.0, 28.0], "expected": 28.000000000000014}, {"input": [-4.0, 28.5], "expected": 28.500000000000007}, {"input": [-4.0, 29.0], "expected": 29.000000000000004}, {"input": [-4.0, 29.5], "expected": 29.500000000000004}, {"input": [-4.0, 30.0], "expected": 30.0}, {"input": [-4.0, 30.5], "expected": 30.5}, {"input": [-4.0, 31.0], "expected": 31.0}, {"input": [-4.0, 31.5], "expected": 31.5}, {"input": [-4.0, 32.0], "expected": 32.0}, {"input": [-4.0, 32.5], "expected": 32.5}, {"input": [-4.0, 33.0], "expected": 33.0}, {"input": [-4.0, 33.5], "expected": 33.5}, {"input": [-4.0, 34.0], "expected": 34.0}, {"input": [-4.0, 34.5], "expected": 34.5}, {"input": [-4.0, 35.0], "expected": 35.0}, {"input": [-4.0, 35.5], "expected": 35.5}, {"input": [-4.0, 36.0], "expected": 36.0}, {"input": [-4.0, 36.5], "expected": 36.5}, {"input": [-4.0, 37.0], "expected": 37.0}, {"input": [-4.0, 37.5], "expected": 37.5}, {"input": [-4.0, 38.0], "expected": 38.0}, {"input": [-4.0, 38.5], "expected": 38.5}, {"input": [-4.0, 39.0], "expected": 39.0}, {"input": [-4.0, 39.5], "expected": 39.5}, {"input": [-4.0, 40.0], "expected": 40.0}, {"input": [-4.0, 40.5], "expected": 40.5}, {"input": [-4.0, 41.0], "expected": 41.0}, {"input": [-4.0, 41.5], "expected": 41.5}, {"input": [-4.0, 42.0], "expected": 42.0}, {"input": [-4.0, 42.5], "expected": 42.5}, {"input": [-4.0, 43.0], "expected": 43.0}, {"input": [-4.0, 43.5], "expected": 43.5}, {"input": [-4.0, 44.0], "expected": 44.0}, {"input": [-4.0, 44.5], "expected": 44.5}, {"input": [-4.0, 45.0], "expected": 45.0}, {"input": [-4.0, 45.5], "expected": 45.5}, {"input": [-4.0, 46.0], "expected": 46.0}, {"input": [-4.0, 46.5], "expected": 46.5}, {"input": [-4.0, 47.0], "expected": 47.0}, {"input": [-4.0, 47.5], "expected": 47.5}, {"input": [-4.0, 48.0], "expected": 48.0}, {"input": [-4.0, 48.5], "expected": 48.5}, {"input": [-4.0, 49.0], "expected": 49.0}, {"input": [-4.0, 49.5], "expected": 49.5}, {"input": [-4.0, 50.0], "expected": 50.0}, {"input": [-4.0, 50.5], "expected": 50.5}, {"input": [-4.0, 51.0], "expected": 51.0}, {"input": [-4.0, 51.5], "expected": 51.5}, {"input": [-4.0, 52.0], "expected": 52.0}, {"input": [-4.0, 52.5], "expected": 52.5}, {"input": [-4.0, 53.0], "expected": 53.0}, {"input": [-4.0, 53.5], "expected": 53.5}, {"input": [-4.0, 54.0], "expected": 54.0}, {"input": [-4.0, 54.5], "expected": 54.5}, {"input": [-4.0, 55.0], "expected": 55.0}, {"input": [-4.0, 55.5], "expected": 55.5}, {"input": [-4.0, 56.0], "expected": 56.0}, {"input": [-4.0, 56.5], "expected": 56.5}, {"input": [-4.0, 57.0], "expected": 57.0}, {"input": [-4.0, 57.5], "expected": 57.5}, {"input": [-4.0, 58.0], "expected": 58.0}, {"input": [-4.0, 58.5], "expected": 58.5}, {"input": [-4.0, 59.0], "expected": 59.0}, {"input": [-4.0, 59.5], "expected": 59.5}, {"input": [-4.0, 60.0], "expected": 60.0}, {"input": [-4.0, 60.5], "expected": 60.5}, {"input": [-4.0, 61.0], "expected": 61.0}, {"input": [-4.0, 61.5], "expected": 61.5}, {"input": [-4.0, 62.0], "expected": 62.0}, {"input": [-4.0, 62.5], "expected": 62.5}, {"input": [-4.0, 63.0], "expected": 63.0}, {"input": [-4.0, 63.5], "expected": 63.5}, {"input": [-4.0, 64.0], "expected": 64.0}, {"input": [-4.0, 64.5], "expected": 64.5}, {"input": [-4.0, 65.0], "expected": 65.0}, {"input": [-4.0, 65.5], "expected": 65.5}, {"input": [-4.0, 66.0], "expected": 66.0}, {"input": [-4.0, 66.5], "expected": 66.5}, {"input": [-4.0, 67.0], "expected": 67.0}, {"input": [-4.0, 67.5], "expected": 67.5}, {"input": [-4.0, 68.0], "expected": 68.0}, {"input": [-4.0, 68.5], "expected": 68.5}, {"input": [-4.0, 69.0], "expected": 69.0}, {"input": [-4.0, 69.5], "expected": 69.5}, {"input": [-4.0, 70.0], "expected": 70.0}, {"input": [-4.0, 70.5], "expected": 70.5}, {"input": [-4.0, 71.0], "expected": 71.0}, {"input": [-4.0, 71.5], "expected": 71.5}, {"input": [-4.0, 72.0], "expected": 72.0}, {"input": [-4.0, 72.5], "expected": 72.5}, {"input": [-4.0, 73.0], "expected": 73.0}, {"input": [-4.0, 73.5], "expected": 73.5}, {"input": [-4.0, 74.0], "expected": 74.0}, {"input": [-4.0, 74.5], "expected": 74.5}, {"input": [-4.0, 75.0], "expected": 75.0}, {"input": [-4.0, 75.5], "expected": 75.5}, {"input": [-4.0, 76.0], "expected": 76.0}, {"input": [-4.0, 76.5], "expected": 76.5}, {"input": [-4.0, 77.0], "expected": 77.0}, {"input": [-4.0, 77.5], "expected": 77.5}, {"input": [-4.0, 78.0], "expected": 78.0}, {"input": [-4.0, 78.5], "expected": 78.5}, {"input": [-4.0, 79.0], "expected": 79.0}, {"input": [-4.0, 79.5], "expected": 79.5}, {"input": [-4.0, 80.0], "expected": 80.0}, {"input": [-4.0, 80.5], "expected": 80.5}, {"input": [-4.0, 81.0], "expected": 81.0}, {"input": [-4.0, 81.5], "expected": 81.5}, {"input": [-4.0, 82.0], "expected": 82.0}, {"input": [-4.0, 82.5], "expected": 82.5}, {"input": [-4.0, 83.0], "expected": 83.0}, {"input": [-4.0, 83.5], "expected": 83.5}, {"input": [-4.0, 84.0], "expected": 84.0}, {"input": [-4.0, 84.5], "expected": 84.5}, {"input": [-4.0, 85.0], "expected": 85.0}, {"input": [-4.0, 85.5], "expected": 85.5}, {"input": [-4.0, 86.0], "expected": 86.0}, {"input": [-4.0, 86.5], "expected": 86.5}, {"input": [-4.0, 87.0], "expected": 87.0}, {"input": [-4.0, 87.5], "expected": 87.5}, {"input": [-4.0, 88.0], "expected": 88.0}, {"input": [-4.0, 88.5], "expected": 88.5}, {"input": [-4.0, 89.0], "expected": 89.0}, {"input": [-4.0, 89.5], "expected": 89.5}, {"input": [-4.0, 90.0], "expected": 90.0}, {"input": [-4.0, 90.5], "expected": 90.5}, {"input": [-4.0, 91.0], "expected": 91.0}, {"input": [-4.0, 91.5], "expected": 91.5}, {"input": [-4.0, 92.0], "expected": 92.0}, {"input": [-4.0, 92.5], "expected": 92.5}, {"input": [-4.0, 93.0], "expected": 93.0}, {"input": [-4.0, 93.5], "expected": 93.5}, {"input": [-4.0, 94.0], "expected": 94.0}, {"input": [-4.0, 94.5], "expected": 94.5}, {"input": [-4.0, 95.0], "expected": 95.0}, {"input": [-4.0, 95.5], "expected": 95.5}, {"input": [-4.0, 96.0], "expected": 96.0}, {"input": [-4.0, 96.5], "expected": 96.5}, {"input": [-4.0, 97.0], "expected": 97.0}, {"input": [-4.0, 97.5], "expected": 97.5}, {"input": [-4.0, 98.0], "expected": 98.0}, {"input": [-4.0, 98.5], "expected": 98.5}, {"input": [-4.0, 99.0], "expected": 99.0}, {"input": [-4.0, 99.5], "expected": 99.5}, {"input": [-3.5, -100.0], "expected": -3.5}, {"input": [-3.5, -99.5], "expected": -3.5}, {"input": [-3.5, -99.0], "expected": -3.5}, {"input": [-3.5, -98.5], "expected": -3.5}, {"input": [-3.5, -98.0], "expected": -3.5}, {"input": [-3.5, -97.5], "expected": -3.5}, {"input": [-3.5, -97.0], "expected": -3.5}, {"input": [-3.5, -96.5], "expected": -3.5}, {"input": [-3.5, -96.0], "expected": -3.5}, {"input": [-3.5, -95.5], "expected": -3.5}, {"input": [-3.5, -95.0], "expected": -3.5}, {"input": [-3.5, -94.5], "expected": -3.5}, {"input": [-3.5, -94.0], "expected": -3.5}, {"input": [-3.5, -93.5], "expected": -3.5}, {"input": [-3.5, -93.0], "expected": -3.5}, {"input": [-3.5, -92.5], "expected": -3.5}, {"input": [-3.5, -92.0], "expected": -3.5}, {"input": [-3.5, -91.5], "expected": -3.5}, {"input": [-3.5, -91.0], "expected": -3.5}, {"input": [-3.5, -90.5], "expected": -3.5}, {"input": [-3.5, -90.0], "expected": -3.5}, {"input": [-3.5, -89.5], "expected": -3.5}, {"input": [-3.5, -89.0], "expected": -3.5}, {"input": [-3.5, -88.5], "expected": -3.5}, {"input": [-3.5, -88.0], "expected": -3.5}, {"input": [-3.5, -87.5], "expected": -3.5}, {"input": [-3.5, -87.0], "expected": -3.5}, {"input": [-3.5, -86.5], "expected": -3.5}, {"input": [-3.5, -86.0], "expected": -3.5}, {"input": [-3.5, -85.5], "expected": -3.5}, {"input": [-3.5, -85.0], "expected": -3.5}, {"input": [-3.5, -84.5], "expected": -3.5}, {"input": [-3.5, -84.0], "expected": -3.5}, {"input": [-3.5, -83.5], "expected": -3.5}, {"input": [-3.5, -83.0], "expected": -3.5}, {"input": [-3.5, -82.5], "expected": -3.5}, {"input": [-3.5, -82.0], "expected": -3.5}, {"input": [-3.5, -81.5], "expected": -3.5}, {"input": [-3.5, -81.0], "expected": -3.5}, {"input": [-3.5, -80.5], "expected": -3.5}, {"input": [-3.5, -80.0], "expected": -3.5}, {"input": [-3.5, -79.5], "expected": -3.5}, {"input": [-3.5, -79.0], "expected": -3.5}, {"input": [-3.5, -78.5], "expected": -3.5}, {"input": [-3.5, -78.0], "expected": -3.5}, {"input": [-3.5, -77.5], "expected": -3.5}, {"input": [-3.5, -77.0], "expected": -3.5}, {"input": [-3.5, -76.5], "expected": -3.5}, {"input": [-3.5, -76.0], "expected": -3.5}, {"input": [-3.5, -75.5], "expected": -3.5}, {"input": [-3.5, -75.0], "expected": -3.5}, {"input": [-3.5, -74.5], "expected": -3.5}, {"input": [-3.5, -74.0], "expected": -3.5}, {"input": [-3.5, -73.5], "expected": -3.5}, {"input": [-3.5, -73.0], "expected": -3.5}, {"input": [-3.5, -72.5], "expected": -3.5}, {"input": [-3.5, -72.0], "expected": -3.5}, {"input": [-3.5, -71.5], "expected": -3.5}, {"input": [-3.5, -71.0], "expected": -3.5}, {"input": [-3.5, -70.5], "expected": -3.5}, {"input": [-3.5, -70.0], "expected": -3.5}, {"input": [-3.5, -69.5], "expected": -3.5}, {"input": [-3.5, -69.0], "expected": -3.5}, {"input": [-3.5, -68.5], "expected": -3.5}, {"input": [-3.5, -68.0], "expected": -3.5}, {"input": [-3.5, -67.5], "expected": -3.5}, {"input": [-3.5, -67.0], "expected": -3.5}, {"input": [-3.5, -66.5], "expected": -3.5}, {"input": [-3.5, -66.0], "expected": -3.5}, {"input": [-3.5, -65.5], "expected": -3.5}, {"input": [-3.5, -65.0], "expected": -3.5}, {"input": [-3.5, -64.5], "expected": -3.5}, {"input": [-3.5, -64.0], "expected": -3.5}, {"input": [-3.5, -63.5], "expected": -3.5}, {"input": [-3.5, -63.0], "expected": -3.5}, {"input": [-3.5, -62.5], "expected": -3.5}, {"input": [-3.5, -62.0], "expected": -3.5}, {"input": [-3.5, -61.5], "expected": -3.5}, {"input": [-3.5, -61.0], "expected": -3.5}, {"input": [-3.5, -60.5], "expected": -3.5}, {"input": [-3.5, -60.0], "expected": -3.5}, {"input": [-3.5, -59.5], "expected": -3.5}, {"input": [-3.5, -59.0], "expected": -3.5}, {"input": [-3.5, -58.5], "expected": -3.5}, {"input": [-3.5, -58.0], "expected": -3.5}, {"input": [-3.5, -57.5], "expected": -3.5}, {"input": [-3.5, -57.0], "expected": -3.5}, {"input": [-3.5, -56.5], "expected": -3.5}, {"input": [-3.5, -56.0], "expected": -3.5}, {"input": [-3.5, -55.5], "expected": -3.5}, {"input": [-3.5, -55.0], "expected": -3.5}, {"input": [-3.5, -54.5], "expected": -3.5}, {"input": [-3.5, -54.0], "expected": -3.5}, {"input": [-3.5, -53.5], "expected": -3.5}, {"input": [-3.5, -53.0], "expected": -3.5}, {"input": [-3.5, -52.5], "expected": -3.5}, {"input": [-3.5, -52.0], "expected": -3.5}, {"input": [-3.5, -51.5], "expected": -3.5}, {"input": [-3.5, -51.0], "expected": -3.5}, {"input": [-3.5, -50.5], "expected": -3.5}, {"input": [-3.5, -50.0], "expected": -3.5}, {"input": [-3.5, -49.5], "expected": -3.5}, {"input": [-3.5, -49.0], "expected": -3.5}, {"input": [-3.5, -48.5], "expected": -3.5}, {"input": [-3.5, -48.0], "expected": -3.5}, {"input": [-3.5, -47.5], "expected": -3.5}, {"input": [-3.5, -47.0], "expected": -3.5}, {"input": [-3.5, -46.5], "expected": -3.5}, {"input": [-3.5, -46.0], "expected": -3.5}, {"input": [-3.5, -45.5], "expected": -3.5}, {"input": [-3.5, -45.0], "expected": -3.5}, {"input": [-3.5, -44.5], "expected": -3.5}, {"input": [-3.5, -44.0], "expected": -3.5}, {"input": [-3.5, -43.5], "expected": -3.5}, {"input": [-3.5, -43.0], "expected": -3.5}, {"input": [-3.5, -42.5], "expected": -3.5}, {"input": [-3.5, -42.0], "expected": -3.5}, {"input": [-3.5, -41.5], "expected": -3.5}, {"input": [-3.5, -41.0], "expected": -3.5}, {"input": [-3.5, -40.5], "expected": -3.5}, {"input": [-3.5, -40.0], "expected": -3.5}, {"input": [-3.5, -39.5], "expected": -3.4999999999999996}, {"input": [-3.5, -39.0], "expected": -3.4999999999999996}, {"input": [-3.5, -38.5], "expected": -3.4999999999999996}, {"input": [-3.5, -38.0], "expected": -3.499999999999999}, {"input": [-3.5, -37.5], "expected": -3.4999999999999982}, {"input": [-3.5, -37.0], "expected": -3.4999999999999973}, {"input": [-3.5, -36.5], "expected": -3.4999999999999956}, {"input": [-3.5, -36.0], "expected": -3.4999999999999925}, {"input": [-3.5, -35.5], "expected": -3.499999999999987}, {"input": [-3.5, -35.0], "expected": -3.499999999999979}, {"input": [-3.5, -34.5], "expected": -3.4999999999999654}, {"input": [-3.5, -34.0], "expected": -3.499999999999943}, {"input": [-3.5, -33.5], "expected": -3.4999999999999063}, {"input": [-3.5, -33.0], "expected": -3.499999999999846}, {"input": [-3.5, -32.5], "expected": -3.4999999999997455}, {"input": [-3.5, -32.0], "expected": -3.499999999999581}, {"input": [-3.5, -31.5], "expected": -3.4999999999993086}, {"input": [-3.5, -31.0], "expected": -3.49999999999886}, {"input": [-3.5, -30.5], "expected": -3.4999999999981206}, {"input": [-3.5, -30.0], "expected": -3.499999999996901}, {"input": [-3.5, -29.5], "expected": -3.4999999999948908}, {"input": [-3.5, -29.0], "expected": -3.4999999999915765}, {"input": [-3.5, -28.5], "expected": -3.499999999986112}, {"input": [-3.5, -28.0], "expected": -3.4999999999771028}, {"input": [-3.5, -27.5], "expected": -3.499999999962249}, {"input": [-3.5, -27.0], "expected": -3.4999999999377587}, {"input": [-3.5, -26.5], "expected": -3.499999999897381}, {"input": [-3.5, -26.0], "expected": -3.49999999983081}, {"input": [-3.5, -25.5], "expected": -3.4999999997210534}, {"input": [-3.5, -25.0], "expected": -3.4999999995400946}, {"input": [-3.5, -24.5], "expected": -3.499999999241744}, {"input": [-3.5, -24.0], "expected": -3.499999998749847}, {"input": [-3.5, -23.5], "expected": -3.4999999979388465}, {"input": [-3.5, -23.0], "expected": -3.499999996601732}, {"input": [-3.5, -22.5], "expected": -3.4999999943972036}, {"input": [-3.5, -22.0], "expected": -3.4999999907625505}, {"input": [-3.5, -21.5], "expected": -3.4999999847700205}, {"input": [-3.5, -21.0], "expected": -3.4999999748900086}, {"input": [-3.5, -20.5], "expected": -3.4999999586006236}, {"input": [-3.5, -20.0], "expected": -3.4999999317439685}, {"input": [-3.5, -19.5], "expected": -3.4999998874648317}, {"input": [-3.5, -19.0], "expected": -3.499999814460881}, {"input": [-3.5, -18.5], "expected": -3.4999996940977263}, {"input": [-3.5, -18.0], "expected": -3.4999994956524647}, {"input": [-3.5, -17.5], "expected": -3.4999991684716267}, {"input": [-3.5, -17.0], "expected": -3.4999986290418534}, {"input": [-3.5, -16.5], "expected": -3.4999977396731476}, {"input": [-3.5, -16.0], "expected": -3.499996273353772}, {"input": [-3.5, -15.5], "expected": -3.4999938558065224}, {"input": [-3.5, -15.0], "expected": -3.4999898699577106}, {"input": [-3.5, -14.5], "expected": -3.4999832984386816}, {"input": [-3.5, -14.0], "expected": -3.499972463929771}, {"input": [-3.5, -13.5], "expected": -3.499954601100783}, {"input": [-3.5, -13.0], "expected": -3.4999251509713707}, {"input": [-3.5, -12.5], "expected": -3.499876597810277}, {"input": [-3.5, -12.0], "expected": -3.4997965523278705}, {"input": [-3.5, -11.5], "expected": -3.499664593627104}, {"input": [-3.5, -11.0], "expected": -3.4994470685246393}, {"input": [-3.5, -10.5], "expected": -3.499088533546226}, {"input": [-3.5, -10.0], "expected": -3.498497689840246}, {"input": [-3.5, -9.5], "expected": -3.4975243148622694}, {"input": [-3.5, -9.0], "expected": -3.4959215567294293}, {"input": [-3.5, -8.5], "expected": -3.4932846515108817}, {"input": [-3.5, -8.0], "expected": -3.488952255151406}, {"input": [-3.5, -7.5], "expected": -3.48185007208219}, {"input": [-3.5, -7.0], "expected": -3.4702495817273795}, {"input": [-3.5, -6.5], "expected": -3.451412648426258}, {"input": [-3.5, -6.0], "expected": -3.4211102657074504}, {"input": [-3.5, -5.5], "expected": -3.3730719889570273}, {"input": [-3.5, -5.0], "expected": -3.2985867220172476}, {"input": [-3.5, -4.5], "expected": -3.186738312481777}, {"input": [-3.5, -4.0], "expected": -3.0259230158198935}, {"input": [-3.5, -3.5], "expected": -2.8068528194400546}, {"input": [-3.5, -3.0], "expected": -2.5259230158198935}, {"input": [-3.5, -2.5], "expected": -2.186738312481777}, {"input": [-3.5, -2.0], "expected": -1.7985867220172476}, {"input": [-3.5, -1.5], "expected": -1.3730719889570275}, {"input": [-3.5, -1.0], "expected": -0.9211102657074504}, {"input": [-3.5, -0.5], "expected": -0.45141264842625795}, {"input": [-3.5, 0.0], "expected": 0.029750418272620566}, {"input": [-3.5, 0.5], "expected": 0.5181499279178098}, {"input": [-3.5, 1.0], "expected": 1.0110477448485937}, {"input": [-3.5, 1.5], "expected": 1.506715348489118}, {"input": [-3.5, 2.0], "expected": 2.0040784432705707}, {"input": [-3.5, 2.5], "expected": 2.5024756851377306}, {"input": [-3.5, 3.0], "expected": 3.001502310159754}, {"input": [-3.5, 3.5], "expected": 3.500911466453774}, {"input": [-3.5, 4.0], "expected": 4.000552931475361}, {"input": [-3.5, 4.5], "expected": 4.500335406372896}, {"input": [-3.5, 5.0], "expected": 5.0002034476721295}, {"input": [-3.5, 5.5], "expected": 5.500123402189724}, {"input": [-3.5, 6.0], "expected": 6.000074849028629}, {"input": [-3.5, 6.5], "expected": 6.500045398899217}, {"input": [-3.5, 7.0], "expected": 7.000027536070228}, {"input": [-3.5, 7.5], "expected": 7.500016701561319}, {"input": [-3.5, 8.0], "expected": 8.00001013004229}, {"input": [-3.5, 8.5], "expected": 8.500006144193478}, {"input": [-3.5, 9.0], "expected": 9.000003726646229}, {"input": [-3.5, 9.5], "expected": 9.500002260326852}, {"input": [-3.5, 10.0], "expected": 10.000001370958147}, {"input": [-3.5, 10.5], "expected": 10.500000831528373}, {"input": [-3.5, 11.0], "expected": 11.000000504347536}, {"input": [-3.5, 11.5], "expected": 11.500000305902274}, {"input": [-3.5, 12.0], "expected": 12.000000185539118}, {"input": [-3.5, 12.5], "expected": 12.500000112535169}, {"input": [-3.5, 13.0], "expected": 13.000000068256032}, {"input": [-3.5, 13.5], "expected": 13.500000041399376}, {"input": [-3.5, 14.0], "expected": 14.00000002510999}, {"input": [-3.5, 14.5], "expected": 14.500000015229979}, {"input": [-3.5, 15.0], "expected": 15.00000000923745}, {"input": [-3.5, 15.5], "expected": 15.500000005602796}, {"input": [-3.5, 16.0], "expected": 16.000000003398267}, {"input": [-3.5, 16.5], "expected": 16.500000002061153}, {"input": [-3.5, 17.0], "expected": 17.000000001250154}, {"input": [-3.5, 17.5], "expected": 17.500000000758256}, {"input": [-3.5, 18.0], "expected": 18.000000000459906}, {"input": [-3.5, 18.5], "expected": 18.50000000027895}, {"input": [-3.5, 19.0], "expected": 19.00000000016919}, {"input": [-3.5, 19.5], "expected": 19.50000000010262}, {"input": [-3.5, 20.0], "expected": 20.00000000006224}, {"input": [-3.5, 20.5], "expected": 20.50000000003775}, {"input": [-3.5, 21.0], "expected": 21.000000000022897}, {"input": [-3.5, 21.5], "expected": 21.500000000013888}, {"input": [-3.5, 22.0], "expected": 22.000000000008423}, {"input": [-3.5, 22.5], "expected": 22.50000000000511}, {"input": [-3.5, 23.0], "expected": 23.000000000003098}, {"input": [-3.5, 23.5], "expected": 23.50000000000188}, {"input": [-3.5, 24.0], "expected": 24.00000000000114}, {"input": [-3.5, 24.5], "expected": 24.500000000000693}, {"input": [-3.5, 25.0], "expected": 25.00000000000042}, {"input": [-3.5, 25.5], "expected": 25.500000000000256}, {"input": [-3.5, 26.0], "expected": 26.000000000000153}, {"input": [-3.5, 26.5], "expected": 26.500000000000092}, {"input": [-3.5, 27.0], "expected": 27.000000000000057}, {"input": [-3.5, 27.5], "expected": 27.500000000000036}, {"input": [-3.5, 28.0], "expected": 28.00000000000002}, {"input": [-3.5, 28.5], "expected": 28.500000000000014}, {"input": [-3.5, 29.0], "expected": 29.000000000000007}, {"input": [-3.5, 29.5], "expected": 29.500000000000004}, {"input": [-3.5, 30.0], "expected": 30.000000000000004}, {"input": [-3.5, 30.5], "expected": 30.5}, {"input": [-3.5, 31.0], "expected": 31.0}, {"input": [-3.5, 31.5], "expected": 31.5}, {"input": [-3.5, 32.0], "expected": 32.0}, {"input": [-3.5, 32.5], "expected": 32.5}, {"input": [-3.5, 33.0], "expected": 33.0}, {"input": [-3.5, 33.5], "expected": 33.5}, {"input": [-3.5, 34.0], "expected": 34.0}, {"input": [-3.5, 34.5], "expected": 34.5}, {"input": [-3.5, 35.0], "expected": 35.0}, {"input": [-3.5, 35.5], "expected": 35.5}, {"input": [-3.5, 36.0], "expected": 36.0}, {"input": [-3.5, 36.5], "expected": 36.5}, {"input": [-3.5, 37.0], "expected": 37.0}, {"input": [-3.5, 37.5], "expected": 37.5}, {"input": [-3.5, 38.0], "expected": 38.0}, {"input": [-3.5, 38.5], "expected": 38.5}, {"input": [-3.5, 39.0], "expected": 39.0}, {"input": [-3.5, 39.5], "expected": 39.5}, {"input": [-3.5, 40.0], "expected": 40.0}, {"input": [-3.5, 40.5], "expected": 40.5}, {"input": [-3.5, 41.0], "expected": 41.0}, {"input": [-3.5, 41.5], "expected": 41.5}, {"input": [-3.5, 42.0], "expected": 42.0}, {"input": [-3.5, 42.5], "expected": 42.5}, {"input": [-3.5, 43.0], "expected": 43.0}, {"input": [-3.5, 43.5], "expected": 43.5}, {"input": [-3.5, 44.0], "expected": 44.0}, {"input": [-3.5, 44.5], "expected": 44.5}, {"input": [-3.5, 45.0], "expected": 45.0}, {"input": [-3.5, 45.5], "expected": 45.5}, {"input": [-3.5, 46.0], "expected": 46.0}, {"input": [-3.5, 46.5], "expected": 46.5}, {"input": [-3.5, 47.0], "expected": 47.0}, {"input": [-3.5, 47.5], "expected": 47.5}, {"input": [-3.5, 48.0], "expected": 48.0}, {"input": [-3.5, 48.5], "expected": 48.5}, {"input": [-3.5, 49.0], "expected": 49.0}, {"input": [-3.5, 49.5], "expected": 49.5}, {"input": [-3.5, 50.0], "expected": 50.0}, {"input": [-3.5, 50.5], "expected": 50.5}, {"input": [-3.5, 51.0], "expected": 51.0}, {"input": [-3.5, 51.5], "expected": 51.5}, {"input": [-3.5, 52.0], "expected": 52.0}, {"input": [-3.5, 52.5], "expected": 52.5}, {"input": [-3.5, 53.0], "expected": 53.0}, {"input": [-3.5, 53.5], "expected": 53.5}, {"input": [-3.5, 54.0], "expected": 54.0}, {"input": [-3.5, 54.5], "expected": 54.5}, {"input": [-3.5, 55.0], "expected": 55.0}, {"input": [-3.5, 55.5], "expected": 55.5}, {"input": [-3.5, 56.0], "expected": 56.0}, {"input": [-3.5, 56.5], "expected": 56.5}, {"input": [-3.5, 57.0], "expected": 57.0}, {"input": [-3.5, 57.5], "expected": 57.5}, {"input": [-3.5, 58.0], "expected": 58.0}, {"input": [-3.5, 58.5], "expected": 58.5}, {"input": [-3.5, 59.0], "expected": 59.0}, {"input": [-3.5, 59.5], "expected": 59.5}, {"input": [-3.5, 60.0], "expected": 60.0}, {"input": [-3.5, 60.5], "expected": 60.5}, {"input": [-3.5, 61.0], "expected": 61.0}, {"input": [-3.5, 61.5], "expected": 61.5}, {"input": [-3.5, 62.0], "expected": 62.0}, {"input": [-3.5, 62.5], "expected": 62.5}, {"input": [-3.5, 63.0], "expected": 63.0}, {"input": [-3.5, 63.5], "expected": 63.5}, {"input": [-3.5, 64.0], "expected": 64.0}, {"input": [-3.5, 64.5], "expected": 64.5}, {"input": [-3.5, 65.0], "expected": 65.0}, {"input": [-3.5, 65.5], "expected": 65.5}, {"input": [-3.5, 66.0], "expected": 66.0}, {"input": [-3.5, 66.5], "expected": 66.5}, {"input": [-3.5, 67.0], "expected": 67.0}, {"input": [-3.5, 67.5], "expected": 67.5}, {"input": [-3.5, 68.0], "expected": 68.0}, {"input": [-3.5, 68.5], "expected": 68.5}, {"input": [-3.5, 69.0], "expected": 69.0}, {"input": [-3.5, 69.5], "expected": 69.5}, {"input": [-3.5, 70.0], "expected": 70.0}, {"input": [-3.5, 70.5], "expected": 70.5}, {"input": [-3.5, 71.0], "expected": 71.0}, {"input": [-3.5, 71.5], "expected": 71.5}, {"input": [-3.5, 72.0], "expected": 72.0}, {"input": [-3.5, 72.5], "expected": 72.5}, {"input": [-3.5, 73.0], "expected": 73.0}, {"input": [-3.5, 73.5], "expected": 73.5}, {"input": [-3.5, 74.0], "expected": 74.0}, {"input": [-3.5, 74.5], "expected": 74.5}, {"input": [-3.5, 75.0], "expected": 75.0}, {"input": [-3.5, 75.5], "expected": 75.5}, {"input": [-3.5, 76.0], "expected": 76.0}, {"input": [-3.5, 76.5], "expected": 76.5}, {"input": [-3.5, 77.0], "expected": 77.0}, {"input": [-3.5, 77.5], "expected": 77.5}, {"input": [-3.5, 78.0], "expected": 78.0}, {"input": [-3.5, 78.5], "expected": 78.5}, {"input": [-3.5, 79.0], "expected": 79.0}, {"input": [-3.5, 79.5], "expected": 79.5}, {"input": [-3.5, 80.0], "expected": 80.0}, {"input": [-3.5, 80.5], "expected": 80.5}, {"input": [-3.5, 81.0], "expected": 81.0}, {"input": [-3.5, 81.5], "expected": 81.5}, {"input": [-3.5, 82.0], "expected": 82.0}, {"input": [-3.5, 82.5], "expected": 82.5}, {"input": [-3.5, 83.0], "expected": 83.0}, {"input": [-3.5, 83.5], "expected": 83.5}, {"input": [-3.5, 84.0], "expected": 84.0}, {"input": [-3.5, 84.5], "expected": 84.5}, {"input": [-3.5, 85.0], "expected": 85.0}, {"input": [-3.5, 85.5], "expected": 85.5}, {"input": [-3.5, 86.0], "expected": 86.0}, {"input": [-3.5, 86.5], "expected": 86.5}, {"input": [-3.5, 87.0], "expected": 87.0}, {"input": [-3.5, 87.5], "expected": 87.5}, {"input": [-3.5, 88.0], "expected": 88.0}, {"input": [-3.5, 88.5], "expected": 88.5}, {"input": [-3.5, 89.0], "expected": 89.0}, {"input": [-3.5, 89.5], "expected": 89.5}, {"input": [-3.5, 90.0], "expected": 90.0}, {"input": [-3.5, 90.5], "expected": 90.5}, {"input": [-3.5, 91.0], "expected": 91.0}, {"input": [-3.5, 91.5], "expected": 91.5}, {"input": [-3.5, 92.0], "expected": 92.0}, {"input": [-3.5, 92.5], "expected": 92.5}, {"input": [-3.5, 93.0], "expected": 93.0}, {"input": [-3.5, 93.5], "expected": 93.5}, {"input": [-3.5, 94.0], "expected": 94.0}, {"input": [-3.5, 94.5], "expected": 94.5}, {"input": [-3.5, 95.0], "expected": 95.0}, {"input": [-3.5, 95.5], "expected": 95.5}, {"input": [-3.5, 96.0], "expected": 96.0}, {"input": [-3.5, 96.5], "expected": 96.5}, {"input": [-3.5, 97.0], "expected": 97.0}, {"input": [-3.5, 97.5], "expected": 97.5}, {"input": [-3.5, 98.0], "expected": 98.0}, {"input": [-3.5, 98.5], "expected": 98.5}, {"input": [-3.5, 99.0], "expected": 99.0}, {"input": [-3.5, 99.5], "expected": 99.5}, {"input": [-3.0, -100.0], "expected": -3.0}, {"input": [-3.0, -99.5], "expected": -3.0}, {"input": [-3.0, -99.0], "expected": -3.0}, {"input": [-3.0, -98.5], "expected": -3.0}, {"input": [-3.0, -98.0], "expected": -3.0}, {"input": [-3.0, -97.5], "expected": -3.0}, {"input": [-3.0, -97.0], "expected": -3.0}, {"input": [-3.0, -96.5], "expected": -3.0}, {"input": [-3.0, -96.0], "expected": -3.0}, {"input": [-3.0, -95.5], "expected": -3.0}, {"input": [-3.0, -95.0], "expected": -3.0}, {"input": [-3.0, -94.5], "expected": -3.0}, {"input": [-3.0, -94.0], "expected": -3.0}, {"input": [-3.0, -93.5], "expected": -3.0}, {"input": [-3.0, -93.0], "expected": -3.0}, {"input": [-3.0, -92.5], "expected": -3.0}, {"input": [-3.0, -92.0], "expected": -3.0}, {"input": [-3.0, -91.5], "expected": -3.0}, {"input": [-3.0, -91.0], "expected": -3.0}, {"input": [-3.0, -90.5], "expected": -3.0}, {"input": [-3.0, -90.0], "expected": -3.0}, {"input": [-3.0, -89.5], "expected": -3.0}, {"input": [-3.0, -89.0], "expected": -3.0}, {"input": [-3.0, -88.5], "expected": -3.0}, {"input": [-3.0, -88.0], "expected": -3.0}, {"input": [-3.0, -87.5], "expected": -3.0}, {"input": [-3.0, -87.0], "expected": -3.0}, {"input": [-3.0, -86.5], "expected": -3.0}, {"input": [-3.0, -86.0], "expected": -3.0}, {"input": [-3.0, -85.5], "expected": -3.0}, {"input": [-3.0, -85.0], "expected": -3.0}, {"input": [-3.0, -84.5], "expected": -3.0}, {"input": [-3.0, -84.0], "expected": -3.0}, {"input": [-3.0, -83.5], "expected": -3.0}, {"input": [-3.0, -83.0], "expected": -3.0}, {"input": [-3.0, -82.5], "expected": -3.0}, {"input": [-3.0, -82.0], "expected": -3.0}, {"input": [-3.0, -81.5], "expected": -3.0}, {"input": [-3.0, -81.0], "expected": -3.0}, {"input": [-3.0, -80.5], "expected": -3.0}, {"input": [-3.0, -80.0], "expected": -3.0}, {"input": [-3.0, -79.5], "expected": -3.0}, {"input": [-3.0, -79.0], "expected": -3.0}, {"input": [-3.0, -78.5], "expected": -3.0}, {"input": [-3.0, -78.0], "expected": -3.0}, {"input": [-3.0, -77.5], "expected": -3.0}, {"input": [-3.0, -77.0], "expected": -3.0}, {"input": [-3.0, -76.5], "expected": -3.0}, {"input": [-3.0, -76.0], "expected": -3.0}, {"input": [-3.0, -75.5], "expected": -3.0}, {"input": [-3.0, -75.0], "expected": -3.0}, {"input": [-3.0, -74.5], "expected": -3.0}, {"input": [-3.0, -74.0], "expected": -3.0}, {"input": [-3.0, -73.5], "expected": -3.0}, {"input": [-3.0, -73.0], "expected": -3.0}, {"input": [-3.0, -72.5], "expected": -3.0}, {"input": [-3.0, -72.0], "expected": -3.0}, {"input": [-3.0, -71.5], "expected": -3.0}, {"input": [-3.0, -71.0], "expected": -3.0}, {"input": [-3.0, -70.5], "expected": -3.0}, {"input": [-3.0, -70.0], "expected": -3.0}, {"input": [-3.0, -69.5], "expected": -3.0}, {"input": [-3.0, -69.0], "expected": -3.0}, {"input": [-3.0, -68.5], "expected": -3.0}, {"input": [-3.0, -68.0], "expected": -3.0}, {"input": [-3.0, -67.5], "expected": -3.0}, {"input": [-3.0, -67.0], "expected": -3.0}, {"input": [-3.0, -66.5], "expected": -3.0}, {"input": [-3.0, -66.0], "expected": -3.0}, {"input": [-3.0, -65.5], "expected": -3.0}, {"input": [-3.0, -65.0], "expected": -3.0}, {"input": [-3.0, -64.5], "expected": -3.0}, {"input": [-3.0, -64.0], "expected": -3.0}, {"input": [-3.0, -63.5], "expected": -3.0}, {"input": [-3.0, -63.0], "expected": -3.0}, {"input": [-3.0, -62.5], "expected": -3.0}, {"input": [-3.0, -62.0], "expected": -3.0}, {"input": [-3.0, -61.5], "expected": -3.0}, {"input": [-3.0, -61.0], "expected": -3.0}, {"input": [-3.0, -60.5], "expected": -3.0}, {"input": [-3.0, -60.0], "expected": -3.0}, {"input": [-3.0, -59.5], "expected": -3.0}, {"input": [-3.0, -59.0], "expected": -3.0}, {"input": [-3.0, -58.5], "expected": -3.0}, {"input": [-3.0, -58.0], "expected": -3.0}, {"input": [-3.0, -57.5], "expected": -3.0}, {"input": [-3.0, -57.0], "expected": -3.0}, {"input": [-3.0, -56.5], "expected": -3.0}, {"input": [-3.0, -56.0], "expected": -3.0}, {"input": [-3.0, -55.5], "expected": -3.0}, {"input": [-3.0, -55.0], "expected": -3.0}, {"input": [-3.0, -54.5], "expected": -3.0}, {"input": [-3.0, -54.0], "expected": -3.0}, {"input": [-3.0, -53.5], "expected": -3.0}, {"input": [-3.0, -53.0], "expected": -3.0}, {"input": [-3.0, -52.5], "expected": -3.0}, {"input": [-3.0, -52.0], "expected": -3.0}, {"input": [-3.0, -51.5], "expected": -3.0}, {"input": [-3.0, -51.0], "expected": -3.0}, {"input": [-3.0, -50.5], "expected": -3.0}, {"input": [-3.0, -50.0], "expected": -3.0}, {"input": [-3.0, -49.5], "expected": -3.0}, {"input": [-3.0, -49.0], "expected": -3.0}, {"input": [-3.0, -48.5], "expected": -3.0}, {"input": [-3.0, -48.0], "expected": -3.0}, {"input": [-3.0, -47.5], "expected": -3.0}, {"input": [-3.0, -47.0], "expected": -3.0}, {"input": [-3.0, -46.5], "expected": -3.0}, {"input": [-3.0, -46.0], "expected": -3.0}, {"input": [-3.0, -45.5], "expected": -3.0}, {"input": [-3.0, -45.0], "expected": -3.0}, {"input": [-3.0, -44.5], "expected": -3.0}, {"input": [-3.0, -44.0], "expected": -3.0}, {"input": [-3.0, -43.5], "expected": -3.0}, {"input": [-3.0, -43.0], "expected": -3.0}, {"input": [-3.0, -42.5], "expected": -3.0}, {"input": [-3.0, -42.0], "expected": -3.0}, {"input": [-3.0, -41.5], "expected": -3.0}, {"input": [-3.0, -41.0], "expected": -3.0}, {"input": [-3.0, -40.5], "expected": -3.0}, {"input": [-3.0, -40.0], "expected": -3.0}, {"input": [-3.0, -39.5], "expected": -3.0}, {"input": [-3.0, -39.0], "expected": -2.9999999999999996}, {"input": [-3.0, -38.5], "expected": -2.9999999999999996}, {"input": [-3.0, -38.0], "expected": -2.9999999999999996}, {"input": [-3.0, -37.5], "expected": -2.999999999999999}, {"input": [-3.0, -37.0], "expected": -2.9999999999999982}, {"input": [-3.0, -36.5], "expected": -2.9999999999999973}, {"input": [-3.0, -36.0], "expected": -2.9999999999999956}, {"input": [-3.0, -35.5], "expected": -2.9999999999999925}, {"input": [-3.0, -35.0], "expected": -2.999999999999987}, {"input": [-3.0, -34.5], "expected": -2.999999999999979}, {"input": [-3.0, -34.0], "expected": -2.9999999999999654}, {"input": [-3.0, -33.5], "expected": -2.999999999999943}, {"input": [-3.0, -33.0], "expected": -2.9999999999999063}, {"input": [-3.0, -32.5], "expected": -2.999999999999846}, {"input": [-3.0, -32.0], "expected": -2.9999999999997455}, {"input": [-3.0, -31.5], "expected": -2.999999999999581}, {"input": [-3.0, -31.0], "expected": -2.9999999999993086}, {"input": [-3.0, -30.5], "expected": -2.99999999999886}, {"input": [-3.0, -30.0], "expected": -2.9999999999981206}, {"input": [-3.0, -29.5], "expected": -2.999999999996901}, {"input": [-3.0, -29.0], "expected": -2.9999999999948908}, {"input": [-3.0, -28.5], "expected": -2.9999999999915765}, {"input": [-3.0, -28.0], "expected": -2.999999999986112}, {"input": [-3.0, -27.5], "expected": -2.9999999999771028}, {"input": [-3.0, -27.0], "expected": -2.999999999962249}, {"input": [-3.0, -26.5], "expected": -2.9999999999377587}, {"input": [-3.0, -26.0], "expected": -2.999999999897381}, {"input": [-3.0, -25.5], "expected": -2.99999999983081}, {"input": [-3.0, -25.0], "expected": -2.9999999997210534}, {"input": [-3.0, -24.5], "expected": -2.9999999995400946}, {"input": [-3.0, -24.0], "expected": -2.999999999241744}, {"input": [-3.0, -23.5], "expected": -2.999999998749847}, {"input": [-3.0, -23.0], "expected": -2.9999999979388465}, {"input": [-3.0, -22.5], "expected": -2.999999996601732}, {"input": [-3.0, -22.0], "expected": -2.9999999943972036}, {"input": [-3.0, -21.5], "expected": -2.9999999907625505}, {"input": [-3.0, -21.0], "expected": -2.9999999847700205}, {"input": [-3.0, -20.5], "expected": -2.9999999748900086}, {"input": [-3.0, -20.0], "expected": -2.9999999586006236}, {"input": [-3.0, -19.5], "expected": -2.9999999317439685}, {"input": [-3.0, -19.0], "expected": -2.9999998874648317}, {"input": [-3.0, -18.5], "expected": -2.999999814460881}, {"input": [-3.0, -18.0], "expected": -2.9999996940977263}, {"input": [-3.0, -17.5], "expected": -2.9999994956524647}, {"input": [-3.0, -17.0], "expected": -2.9999991684716267}, {"input": [-3.0, -16.5], "expected": -2.9999986290418534}, {"input": [-3.0, -16.0], "expected": -2.9999977396731476}, {"input": [-3.0, -15.5], "expected": -2.999996273353772}, {"input": [-3.0, -15.0], "expected": -2.9999938558065224}, {"input": [-3.0, -14.5], "expected": -2.9999898699577106}, {"input": [-3.0, -14.0], "expected": -2.9999832984386816}, {"input": [-3.0, -13.5], "expected": -2.999972463929771}, {"input": [-3.0, -13.0], "expected": -2.999954601100783}, {"input": [-3.0, -12.5], "expected": -2.9999251509713707}, {"input": [-3.0, -12.0], "expected": -2.999876597810277}, {"input": [-3.0, -11.5], "expected": -2.9997965523278705}, {"input": [-3.0, -11.0], "expected": -2.999664593627104}, {"input": [-3.0, -10.5], "expected": -2.9994470685246393}, {"input": [-3.0, -10.0], "expected": -2.999088533546226}, {"input": [-3.0, -9.5], "expected": -2.998497689840246}, {"input": [-3.0, -9.0], "expected": -2.9975243148622694}, {"input": [-3.0, -8.5], "expected": -2.9959215567294293}, {"input": [-3.0, -8.0], "expected": -2.9932846515108817}, {"input": [-3.0, -7.5], "expected": -2.988952255151406}, {"input": [-3.0, -7.0], "expected": -2.98185007208219}, {"input": [-3.0, -6.5], "expected": -2.9702495817273795}, {"input": [-3.0, -6.0], "expected": -2.951412648426258}, {"input": [-3.0, -5.5], "expected": -2.9211102657074504}, {"input": [-3.0, -5.0], "expected": -2.8730719889570273}, {"input": [-3.0, -4.5], "expected": -2.7985867220172476}, {"input": [-3.0, -4.0], "expected": -2.686738312481777}, {"input": [-3.0, -3.5], "expected": -2.5259230158198935}, {"input": [-3.0, -3.0], "expected": -2.3068528194400546}, {"input": [-3.0, -2.5], "expected": -2.0259230158198935}, {"input": [-3.0, -2.0], "expected": -1.6867383124817772}, {"input": [-3.0, -1.5], "expected": -1.2985867220172476}, {"input": [-3.0, -1.0], "expected": -0.8730719889570275}, {"input": [-3.0, -0.5], "expected": -0.42111026570745036}, {"input": [-3.0, 0.0], "expected": 0.04858735157374206}, {"input": [-3.0, 0.5], "expected": 0.5297504182726206}, {"input": [-3.0, 1.0], "expected": 1.0181499279178097}, {"input": [-3.0, 1.5], "expected": 1.5110477448485937}, {"input": [-3.0, 2.0], "expected": 2.0067153484891183}, {"input": [-3.0, 2.5], "expected": 2.5040784432705707}, {"input": [-3.0, 3.0], "expected": 3.0024756851377306}, {"input": [-3.0, 3.5], "expected": 3.501502310159754}, {"input": [-3.0, 4.0], "expected": 4.000911466453775}, {"input": [-3.0, 4.5], "expected": 4.500552931475361}, {"input": [-3.0, 5.0], "expected": 5.000335406372896}, {"input": [-3.0, 5.5], "expected": 5.5002034476721295}, {"input": [-3.0, 6.0], "expected": 6.000123402189724}, {"input": [-3.0, 6.5], "expected": 6.500074849028629}, {"input": [-3.0, 7.0], "expected": 7.000045398899217}, {"input": [-3.0, 7.5], "expected": 7.500027536070228}, {"input": [-3.0, 8.0], "expected": 8.000016701561318}, {"input": [-3.0, 8.5], "expected": 8.50001013004229}, {"input": [-3.0, 9.0], "expected": 9.000006144193478}, {"input": [-3.0, 9.5], "expected": 9.500003726646229}, {"input": [-3.0, 10.0], "expected": 10.000002260326852}, {"input": [-3.0, 10.5], "expected": 10.500001370958147}, {"input": [-3.0, 11.0], "expected": 11.000000831528373}, {"input": [-3.0, 11.5], "expected": 11.500000504347536}, {"input": [-3.0, 12.0], "expected": 12.000000305902274}, {"input": [-3.0, 12.5], "expected": 12.500000185539118}, {"input": [-3.0, 13.0], "expected": 13.000000112535169}, {"input": [-3.0, 13.5], "expected": 13.500000068256032}, {"input": [-3.0, 14.0], "expected": 14.000000041399376}, {"input": [-3.0, 14.5], "expected": 14.50000002510999}, {"input": [-3.0, 15.0], "expected": 15.000000015229979}, {"input": [-3.0, 15.5], "expected": 15.50000000923745}, {"input": [-3.0, 16.0], "expected": 16.000000005602796}, {"input": [-3.0, 16.5], "expected": 16.500000003398267}, {"input": [-3.0, 17.0], "expected": 17.000000002061153}, {"input": [-3.0, 17.5], "expected": 17.500000001250154}, {"input": [-3.0, 18.0], "expected": 18.000000000758256}, {"input": [-3.0, 18.5], "expected": 18.500000000459906}, {"input": [-3.0, 19.0], "expected": 19.00000000027895}, {"input": [-3.0, 19.5], "expected": 19.50000000016919}, {"input": [-3.0, 20.0], "expected": 20.00000000010262}, {"input": [-3.0, 20.5], "expected": 20.50000000006224}, {"input": [-3.0, 21.0], "expected": 21.00000000003775}, {"input": [-3.0, 21.5], "expected": 21.500000000022897}, {"input": [-3.0, 22.0], "expected": 22.000000000013888}, {"input": [-3.0, 22.5], "expected": 22.500000000008423}, {"input": [-3.0, 23.0], "expected": 23.00000000000511}, {"input": [-3.0, 23.5], "expected": 23.500000000003098}, {"input": [-3.0, 24.0], "expected": 24.00000000000188}, {"input": [-3.0, 24.5], "expected": 24.50000000000114}, {"input": [-3.0, 25.0], "expected": 25.000000000000693}, {"input": [-3.0, 25.5], "expected": 25.50000000000042}, {"input": [-3.0, 26.0], "expected": 26.000000000000256}, {"input": [-3.0, 26.5], "expected": 26.500000000000153}, {"input": [-3.0, 27.0], "expected": 27.000000000000092}, {"input": [-3.0, 27.5], "expected": 27.500000000000057}, {"input": [-3.0, 28.0], "expected": 28.000000000000036}, {"input": [-3.0, 28.5], "expected": 28.50000000000002}, {"input": [-3.0, 29.0], "expected": 29.000000000000014}, {"input": [-3.0, 29.5], "expected": 29.500000000000007}, {"input": [-3.0, 30.0], "expected": 30.000000000000004}, {"input": [-3.0, 30.5], "expected": 30.500000000000004}, {"input": [-3.0, 31.0], "expected": 31.0}, {"input": [-3.0, 31.5], "expected": 31.5}, {"input": [-3.0, 32.0], "expected": 32.0}, {"input": [-3.0, 32.5], "expected": 32.5}, {"input": [-3.0, 33.0], "expected": 33.0}, {"input": [-3.0, 33.5], "expected": 33.5}, {"input": [-3.0, 34.0], "expected": 34.0}, {"input": [-3.0, 34.5], "expected": 34.5}, {"input": [-3.0, 35.0], "expected": 35.0}, {"input": [-3.0, 35.5], "expected": 35.5}, {"input": [-3.0, 36.0], "expected": 36.0}, {"input": [-3.0, 36.5], "expected": 36.5}, {"input": [-3.0, 37.0], "expected": 37.0}, {"input": [-3.0, 37.5], "expected": 37.5}, {"input": [-3.0, 38.0], "expected": 38.0}, {"input": [-3.0, 38.5], "expected": 38.5}, {"input": [-3.0, 39.0], "expected": 39.0}, {"input": [-3.0, 39.5], "expected": 39.5}, {"input": [-3.0, 40.0], "expected": 40.0}, {"input": [-3.0, 40.5], "expected": 40.5}, {"input": [-3.0, 41.0], "expected": 41.0}, {"input": [-3.0, 41.5], "expected": 41.5}, {"input": [-3.0, 42.0], "expected": 42.0}, {"input": [-3.0, 42.5], "expected": 42.5}, {"input": [-3.0, 43.0], "expected": 43.0}, {"input": [-3.0, 43.5], "expected": 43.5}, {"input": [-3.0, 44.0], "expected": 44.0}, {"input": [-3.0, 44.5], "expected": 44.5}, {"input": [-3.0, 45.0], "expected": 45.0}, {"input": [-3.0, 45.5], "expected": 45.5}, {"input": [-3.0, 46.0], "expected": 46.0}, {"input": [-3.0, 46.5], "expected": 46.5}, {"input": [-3.0, 47.0], "expected": 47.0}, {"input": [-3.0, 47.5], "expected": 47.5}, {"input": [-3.0, 48.0], "expected": 48.0}, {"input": [-3.0, 48.5], "expected": 48.5}, {"input": [-3.0, 49.0], "expected": 49.0}, {"input": [-3.0, 49.5], "expected": 49.5}, {"input": [-3.0, 50.0], "expected": 50.0}, {"input": [-3.0, 50.5], "expected": 50.5}, {"input": [-3.0, 51.0], "expected": 51.0}, {"input": [-3.0, 51.5], "expected": 51.5}, {"input": [-3.0, 52.0], "expected": 52.0}, {"input": [-3.0, 52.5], "expected": 52.5}, {"input": [-3.0, 53.0], "expected": 53.0}, {"input": [-3.0, 53.5], "expected": 53.5}, {"input": [-3.0, 54.0], "expected": 54.0}, {"input": [-3.0, 54.5], "expected": 54.5}, {"input": [-3.0, 55.0], "expected": 55.0}, {"input": [-3.0, 55.5], "expected": 55.5}, {"input": [-3.0, 56.0], "expected": 56.0}, {"input": [-3.0, 56.5], "expected": 56.5}, {"input": [-3.0, 57.0], "expected": 57.0}, {"input": [-3.0, 57.5], "expected": 57.5}, {"input": [-3.0, 58.0], "expected": 58.0}, {"input": [-3.0, 58.5], "expected": 58.5}, {"input": [-3.0, 59.0], "expected": 59.0}, {"input": [-3.0, 59.5], "expected": 59.5}, {"input": [-3.0, 60.0], "expected": 60.0}, {"input": [-3.0, 60.5], "expected": 60.5}, {"input": [-3.0, 61.0], "expected": 61.0}, {"input": [-3.0, 61.5], "expected": 61.5}, {"input": [-3.0, 62.0], "expected": 62.0}, {"input": [-3.0, 62.5], "expected": 62.5}, {"input": [-3.0, 63.0], "expected": 63.0}, {"input": [-3.0, 63.5], "expected": 63.5}, {"input": [-3.0, 64.0], "expected": 64.0}, {"input": [-3.0, 64.5], "expected": 64.5}, {"input": [-3.0, 65.0], "expected": 65.0}, {"input": [-3.0, 65.5], "expected": 65.5}, {"input": [-3.0, 66.0], "expected": 66.0}, {"input": [-3.0, 66.5], "expected": 66.5}, {"input": [-3.0, 67.0], "expected": 67.0}, {"input": [-3.0, 67.5], "expected": 67.5}, {"input": [-3.0, 68.0], "expected": 68.0}, {"input": [-3.0, 68.5], "expected": 68.5}, {"input": [-3.0, 69.0], "expected": 69.0}, {"input": [-3.0, 69.5], "expected": 69.5}, {"input": [-3.0, 70.0], "expected": 70.0}, {"input": [-3.0, 70.5], "expected": 70.5}, {"input": [-3.0, 71.0], "expected": 71.0}, {"input": [-3.0, 71.5], "expected": 71.5}, {"input": [-3.0, 72.0], "expected": 72.0}, {"input": [-3.0, 72.5], "expected": 72.5}, {"input": [-3.0, 73.0], "expected": 73.0}, {"input": [-3.0, 73.5], "expected": 73.5}, {"input": [-3.0, 74.0], "expected": 74.0}, {"input": [-3.0, 74.5], "expected": 74.5}, {"input": [-3.0, 75.0], "expected": 75.0}, {"input": [-3.0, 75.5], "expected": 75.5}, {"input": [-3.0, 76.0], "expected": 76.0}, {"input": [-3.0, 76.5], "expected": 76.5}, {"input": [-3.0, 77.0], "expected": 77.0}, {"input": [-3.0, 77.5], "expected": 77.5}, {"input": [-3.0, 78.0], "expected": 78.0}, {"input": [-3.0, 78.5], "expected": 78.5}, {"input": [-3.0, 79.0], "expected": 79.0}, {"input": [-3.0, 79.5], "expected": 79.5}, {"input": [-3.0, 80.0], "expected": 80.0}, {"input": [-3.0, 80.5], "expected": 80.5}, {"input": [-3.0, 81.0], "expected": 81.0}, {"input": [-3.0, 81.5], "expected": 81.5}, {"input": [-3.0, 82.0], "expected": 82.0}, {"input": [-3.0, 82.5], "expected": 82.5}, {"input": [-3.0, 83.0], "expected": 83.0}, {"input": [-3.0, 83.5], "expected": 83.5}, {"input": [-3.0, 84.0], "expected": 84.0}, {"input": [-3.0, 84.5], "expected": 84.5}, {"input": [-3.0, 85.0], "expected": 85.0}, {"input": [-3.0, 85.5], "expected": 85.5}, {"input": [-3.0, 86.0], "expected": 86.0}, {"input": [-3.0, 86.5], "expected": 86.5}, {"input": [-3.0, 87.0], "expected": 87.0}, {"input": [-3.0, 87.5], "expected": 87.5}, {"input": [-3.0, 88.0], "expected": 88.0}, {"input": [-3.0, 88.5], "expected": 88.5}, {"input": [-3.0, 89.0], "expected": 89.0}, {"input": [-3.0, 89.5], "expected": 89.5}, {"input": [-3.0, 90.0], "expected": 90.0}, {"input": [-3.0, 90.5], "expected": 90.5}, {"input": [-3.0, 91.0], "expected": 91.0}, {"input": [-3.0, 91.5], "expected": 91.5}, {"input": [-3.0, 92.0], "expected": 92.0}, {"input": [-3.0, 92.5], "expected": 92.5}, {"input": [-3.0, 93.0], "expected": 93.0}, {"input": [-3.0, 93.5], "expected": 93.5}, {"input": [-3.0, 94.0], "expected": 94.0}, {"input": [-3.0, 94.5], "expected": 94.5}, {"input": [-3.0, 95.0], "expected": 95.0}, {"input": [-3.0, 95.5], "expected": 95.5}, {"input": [-3.0, 96.0], "expected": 96.0}, {"input": [-3.0, 96.5], "expected": 96.5}, {"input": [-3.0, 97.0], "expected": 97.0}, {"input": [-3.0, 97.5], "expected": 97.5}, {"input": [-3.0, 98.0], "expected": 98.0}, {"input": [-3.0, 98.5], "expected": 98.5}, {"input": [-3.0, 99.0], "expected": 99.0}, {"input": [-3.0, 99.5], "expected": 99.5}, {"input": [-2.5, -100.0], "expected": -2.5}, {"input": [-2.5, -99.5], "expected": -2.5}, {"input": [-2.5, -99.0], "expected": -2.5}, {"input": [-2.5, -98.5], "expected": -2.5}, {"input": [-2.5, -98.0], "expected": -2.5}, {"input": [-2.5, -97.5], "expected": -2.5}, {"input": [-2.5, -97.0], "expected": -2.5}, {"input": [-2.5, -96.5], "expected": -2.5}, {"input": [-2.5, -96.0], "expected": -2.5}, {"input": [-2.5, -95.5], "expected": -2.5}, {"input": [-2.5, -95.0], "expected": -2.5}, {"input": [-2.5, -94.5], "expected": -2.5}, {"input": [-2.5, -94.0], "expected": -2.5}, {"input": [-2.5, -93.5], "expected": -2.5}, {"input": [-2.5, -93.0], "expected": -2.5}, {"input": [-2.5, -92.5], "expected": -2.5}, {"input": [-2.5, -92.0], "expected": -2.5}, {"input": [-2.5, -91.5], "expected": -2.5}, {"input": [-2.5, -91.0], "expected": -2.5}, {"input": [-2.5, -90.5], "expected": -2.5}, {"input": [-2.5, -90.0], "expected": -2.5}, {"input": [-2.5, -89.5], "expected": -2.5}, {"input": [-2.5, -89.0], "expected": -2.5}, {"input": [-2.5, -88.5], "expected": -2.5}, {"input": [-2.5, -88.0], "expected": -2.5}, {"input": [-2.5, -87.5], "expected": -2.5}, {"input": [-2.5, -87.0], "expected": -2.5}, {"input": [-2.5, -86.5], "expected": -2.5}, {"input": [-2.5, -86.0], "expected": -2.5}, {"input": [-2.5, -85.5], "expected": -2.5}, {"input": [-2.5, -85.0], "expected": -2.5}, {"input": [-2.5, -84.5], "expected": -2.5}, {"input": [-2.5, -84.0], "expected": -2.5}, {"input": [-2.5, -83.5], "expected": -2.5}, {"input": [-2.5, -83.0], "expected": -2.5}, {"input": [-2.5, -82.5], "expected": -2.5}, {"input": [-2.5, -82.0], "expected": -2.5}, {"input": [-2.5, -81.5], "expected": -2.5}, {"input": [-2.5, -81.0], "expected": -2.5}, {"input": [-2.5, -80.5], "expected": -2.5}, {"input": [-2.5, -80.0], "expected": -2.5}, {"input": [-2.5, -79.5], "expected": -2.5}, {"input": [-2.5, -79.0], "expected": -2.5}, {"input": [-2.5, -78.5], "expected": -2.5}, {"input": [-2.5, -78.0], "expected": -2.5}, {"input": [-2.5, -77.5], "expected": -2.5}, {"input": [-2.5, -77.0], "expected": -2.5}, {"input": [-2.5, -76.5], "expected": -2.5}, {"input": [-2.5, -76.0], "expected": -2.5}, {"input": [-2.5, -75.5], "expected": -2.5}, {"input": [-2.5, -75.0], "expected": -2.5}, {"input": [-2.5, -74.5], "expected": -2.5}, {"input": [-2.5, -74.0], "expected": -2.5}, {"input": [-2.5, -73.5], "expected": -2.5}, {"input": [-2.5, -73.0], "expected": -2.5}, {"input": [-2.5, -72.5], "expected": -2.5}, {"input": [-2.5, -72.0], "expected": -2.5}, {"input": [-2.5, -71.5], "expected": -2.5}, {"input": [-2.5, -71.0], "expected": -2.5}, {"input": [-2.5, -70.5], "expected": -2.5}, {"input": [-2.5, -70.0], "expected": -2.5}, {"input": [-2.5, -69.5], "expected": -2.5}, {"input": [-2.5, -69.0], "expected": -2.5}, {"input": [-2.5, -68.5], "expected": -2.5}, {"input": [-2.5, -68.0], "expected": -2.5}, {"input": [-2.5, -67.5], "expected": -2.5}, {"input": [-2.5, -67.0], "expected": -2.5}, {"input": [-2.5, -66.5], "expected": -2.5}, {"input": [-2.5, -66.0], "expected": -2.5}, {"input": [-2.5, -65.5], "expected": -2.5}, {"input": [-2.5, -65.0], "expected": -2.5}, {"input": [-2.5, -64.5], "expected": -2.5}, {"input": [-2.5, -64.0], "expected": -2.5}, {"input": [-2.5, -63.5], "expected": -2.5}, {"input": [-2.5, -63.0], "expected": -2.5}, {"input": [-2.5, -62.5], "expected": -2.5}, {"input": [-2.5, -62.0], "expected": -2.5}, {"input": [-2.5, -61.5], "expected": -2.5}, {"input": [-2.5, -61.0], "expected": -2.5}, {"input": [-2.5, -60.5], "expected": -2.5}, {"input": [-2.5, -60.0], "expected": -2.5}, {"input": [-2.5, -59.5], "expected": -2.5}, {"input": [-2.5, -59.0], "expected": -2.5}, {"input": [-2.5, -58.5], "expected": -2.5}, {"input": [-2.5, -58.0], "expected": -2.5}, {"input": [-2.5, -57.5], "expected": -2.5}, {"input": [-2.5, -57.0], "expected": -2.5}, {"input": [-2.5, -56.5], "expected": -2.5}, {"input": [-2.5, -56.0], "expected": -2.5}, {"input": [-2.5, -55.5], "expected": -2.5}, {"input": [-2.5, -55.0], "expected": -2.5}, {"input": [-2.5, -54.5], "expected": -2.5}, {"input": [-2.5, -54.0], "expected": -2.5}, {"input": [-2.5, -53.5], "expected": -2.5}, {"input": [-2.5, -53.0], "expected": -2.5}, {"input": [-2.5, -52.5], "expected": -2.5}, {"input": [-2.5, -52.0], "expected": -2.5}, {"input": [-2.5, -51.5], "expected": -2.5}, {"input": [-2.5, -51.0], "expected": -2.5}, {"input": [-2.5, -50.5], "expected": -2.5}, {"input": [-2.5, -50.0], "expected": -2.5}, {"input": [-2.5, -49.5], "expected": -2.5}, {"input": [-2.5, -49.0], "expected": -2.5}, {"input": [-2.5, -48.5], "expected": -2.5}, {"input": [-2.5, -48.0], "expected": -2.5}, {"input": [-2.5, -47.5], "expected": -2.5}, {"input": [-2.5, -47.0], "expected": -2.5}, {"input": [-2.5, -46.5], "expected": -2.5}, {"input": [-2.5, -46.0], "expected": -2.5}, {"input": [-2.5, -45.5], "expected": -2.5}, {"input": [-2.5, -45.0], "expected": -2.5}, {"input": [-2.5, -44.5], "expected": -2.5}, {"input": [-2.5, -44.0], "expected": -2.5}, {"input": [-2.5, -43.5], "expected": -2.5}, {"input": [-2.5, -43.0], "expected": -2.5}, {"input": [-2.5, -42.5], "expected": -2.5}, {"input": [-2.5, -42.0], "expected": -2.5}, {"input": [-2.5, -41.5], "expected": -2.5}, {"input": [-2.5, -41.0], "expected": -2.5}, {"input": [-2.5, -40.5], "expected": -2.5}, {"input": [-2.5, -40.0], "expected": -2.5}, {"input": [-2.5, -39.5], "expected": -2.5}, {"input": [-2.5, -39.0], "expected": -2.5}, {"input": [-2.5, -38.5], "expected": -2.4999999999999996}, {"input": [-2.5, -38.0], "expected": -2.4999999999999996}, {"input": [-2.5, -37.5], "expected": -2.4999999999999996}, {"input": [-2.5, -37.0], "expected": -2.499999999999999}, {"input": [-2.5, -36.5], "expected": -2.4999999999999982}, {"input": [-2.5, -36.0], "expected": -2.4999999999999973}, {"input": [-2.5, -35.5], "expected": -2.4999999999999956}, {"input": [-2.5, -35.0], "expected": -2.4999999999999925}, {"input": [-2.5, -34.5], "expected": -2.499999999999987}, {"input": [-2.5, -34.0], "expected": -2.499999999999979}, {"input": [-2.5, -33.5], "expected": -2.4999999999999654}, {"input": [-2.5, -33.0], "expected": -2.499999999999943}, {"input": [-2.5, -32.5], "expected": -2.4999999999999063}, {"input": [-2.5, -32.0], "expected": -2.499999999999846}, {"input": [-2.5, -31.5], "expected": -2.4999999999997455}, {"input": [-2.5, -31.0], "expected": -2.499999999999581}, {"input": [-2.5, -30.5], "expected": -2.4999999999993086}, {"input": [-2.5, -30.0], "expected": -2.49999999999886}, {"input": [-2.5, -29.5], "expected": -2.4999999999981206}, {"input": [-2.5, -29.0], "expected": -2.499999999996901}, {"input": [-2.5, -28.5], "expected": -2.4999999999948908}, {"input": [-2.5, -28.0], "expected": -2.4999999999915765}, {"input": [-2.5, -27.5], "expected": -2.499999999986112}, {"input": [-2.5, -27.0], "expected": -2.4999999999771028}, {"input": [-2.5, -26.5], "expected": -2.499999999962249}, {"input": [-2.5, -26.0], "expected": -2.4999999999377587}, {"input": [-2.5, -25.5], "expected": -2.499999999897381}, {"input": [-2.5, -25.0], "expected": -2.49999999983081}, {"input": [-2.5, -24.5], "expected": -2.4999999997210534}, {"input": [-2.5, -24.0], "expected": -2.4999999995400946}, {"input": [-2.5, -23.5], "expected": -2.499999999241744}, {"input": [-2.5, -23.0], "expected": -2.499999998749847}, {"input": [-2.5, -22.5], "expected": -2.4999999979388465}, {"input": [-2.5, -22.0], "expected": -2.499999996601732}, {"input": [-2.5, -21.5], "expected": -2.4999999943972036}, {"input": [-2.5, -21.0], "expected": -2.4999999907625505}, {"input": [-2.5, -20.5], "expected": -2.4999999847700205}, {"input": [-2.5, -20.0], "expected": -2.4999999748900086}, {"input": [-2.5, -19.5], "expected": -2.4999999586006236}, {"input": [-2.5, -19.0], "expected": -2.4999999317439685}, {"input": [-2.5, -18.5], "expected": -2.4999998874648317}, {"input": [-2.5, -18.0], "expected": -2.499999814460881}, {"input": [-2.5, -17.5], "expected": -2.4999996940977263}, {"input": [-2.5, -17.0], "expected": -2.4999994956524647}, {"input": [-2.5, -16.5], "expected": -2.4999991684716267}, {"input": [-2.5, -16.0], "expected": -2.4999986290418534}, {"input": [-2.5, -15.5], "expected": -2.4999977396731476}, {"input": [-2.5, -15.0], "expected": -2.499996273353772}, {"input": [-2.5, -14.5], "expected": -2.4999938558065224}, {"input": [-2.5, -14.0], "expected": -2.4999898699577106}, {"input": [-2.5, -13.5], "expected": -2.4999832984386816}, {"input": [-2.5, -13.0], "expected": -2.499972463929771}, {"input": [-2.5, -12.5], "expected": -2.499954601100783}, {"input": [-2.5, -12.0], "expected": -2.4999251509713707}, {"input": [-2.5, -11.5], "expected": -2.499876597810277}, {"input": [-2.5, -11.0], "expected": -2.4997965523278705}, {"input": [-2.5, -10.5], "expected": -2.499664593627104}, {"input": [-2.5, -10.0], "expected": -2.4994470685246393}, {"input": [-2.5, -9.5], "expected": -2.499088533546226}, {"input": [-2.5, -9.0], "expected": -2.498497689840246}, {"input": [-2.5, -8.5], "expected": -2.4975243148622694}, {"input": [-2.5, -8.0], "expected": -2.4959215567294293}, {"input": [-2.5, -7.5], "expected": -2.4932846515108817}, {"input": [-2.5, -7.0], "expected": -2.488952255151406}, {"input": [-2.5, -6.5], "expected": -2.48185007208219}, {"input": [-2.5, -6.0], "expected": -2.4702495817273795}, {"input": [-2.5, -5.5], "expected": -2.451412648426258}, {"input": [-2.5, -5.0], "expected": -2.4211102657074504}, {"input": [-2.5, -4.5], "expected": -2.3730719889570273}, {"input": [-2.5, -4.0], "expected": -2.2985867220172476}, {"input": [-2.5, -3.5], "expected": -2.186738312481777}, {"input": [-2.5, -3.0], "expected": -2.0259230158198935}, {"input": [-2.5, -2.5], "expected": -1.8068528194400546}, {"input": [-2.5, -2.0], "expected": -1.5259230158198933}, {"input": [-2.5, -1.5], "expected": -1.1867383124817772}, {"input": [-2.5, -1.0], "expected": -0.7985867220172476}, {"input": [-2.5, -0.5], "expected": -0.37307198895702753}, {"input": [-2.5, 0.0], "expected": 0.07888973429254963}, {"input": [-2.5, 0.5], "expected": 0.548587351573742}, {"input": [-2.5, 1.0], "expected": 1.0297504182726205}, {"input": [-2.5, 1.5], "expected": 1.5181499279178097}, {"input": [-2.5, 2.0], "expected": 2.011047744848594}, {"input": [-2.5, 2.5], "expected": 2.5067153484891183}, {"input": [-2.5, 3.0], "expected": 3.0040784432705707}, {"input": [-2.5, 3.5], "expected": 3.5024756851377306}, {"input": [-2.5, 4.0], "expected": 4.001502310159754}, {"input": [-2.5, 4.5], "expected": 4.500911466453775}, {"input": [-2.5, 5.0], "expected": 5.000552931475361}, {"input": [-2.5, 5.5], "expected": 5.500335406372896}, {"input": [-2.5, 6.0], "expected": 6.0002034476721295}, {"input": [-2.5, 6.5], "expected": 6.500123402189724}, {"input": [-2.5, 7.0], "expected": 7.000074849028629}, {"input": [-2.5, 7.5], "expected": 7.500045398899217}, {"input": [-2.5, 8.0], "expected": 8.00002753607023}, {"input": [-2.5, 8.5], "expected": 8.500016701561318}, {"input": [-2.5, 9.0], "expected": 9.00001013004229}, {"input": [-2.5, 9.5], "expected": 9.500006144193478}, {"input": [-2.5, 10.0], "expected": 10.000003726646229}, {"input": [-2.5, 10.5], "expected": 10.500002260326852}, {"input": [-2.5, 11.0], "expected": 11.000001370958147}, {"input": [-2.5, 11.5], "expected": 11.500000831528373}, {"input": [-2.5, 12.0], "expected": 12.000000504347536}, {"input": [-2.5, 12.5], "expected": 12.500000305902274}, {"input": [-2.5, 13.0], "expected": 13.000000185539118}, {"input": [-2.5, 13.5], "expected": 13.500000112535169}, {"input": [-2.5, 14.0], "expected": 14.000000068256032}, {"input": [-2.5, 14.5], "expected": 14.500000041399376}, {"input": [-2.5, 15.0], "expected": 15.00000002510999}, {"input": [-2.5, 15.5], "expected": 15.500000015229979}, {"input": [-2.5, 16.0], "expected": 16.00000000923745}, {"input": [-2.5, 16.5], "expected": 16.500000005602796}, {"input": [-2.5, 17.0], "expected": 17.000000003398267}, {"input": [-2.5, 17.5], "expected": 17.500000002061153}, {"input": [-2.5, 18.0], "expected": 18.000000001250154}, {"input": [-2.5, 18.5], "expected": 18.500000000758256}, {"input": [-2.5, 19.0], "expected": 19.000000000459906}, {"input": [-2.5, 19.5], "expected": 19.50000000027895}, {"input": [-2.5, 20.0], "expected": 20.00000000016919}, {"input": [-2.5, 20.5], "expected": 20.50000000010262}, {"input": [-2.5, 21.0], "expected": 21.00000000006224}, {"input": [-2.5, 21.5], "expected": 21.50000000003775}, {"input": [-2.5, 22.0], "expected": 22.000000000022897}, {"input": [-2.5, 22.5], "expected": 22.500000000013888}, {"input": [-2.5, 23.0], "expected": 23.000000000008423}, {"input": [-2.5, 23.5], "expected": 23.50000000000511}, {"input": [-2.5, 24.0], "expected": 24.000000000003098}, {"input": [-2.5, 24.5], "expected": 24.50000000000188}, {"input": [-2.5, 25.0], "expected": 25.00000000000114}, {"input": [-2.5, 25.5], "expected": 25.500000000000693}, {"input": [-2.5, 26.0], "expected": 26.00000000000042}, {"input": [-2.5, 26.5], "expected": 26.500000000000256}, {"input": [-2.5, 27.0], "expected": 27.000000000000153}, {"input": [-2.5, 27.5], "expected": 27.500000000000092}, {"input": [-2.5, 28.0], "expected": 28.000000000000057}, {"input": [-2.5, 28.5], "expected": 28.500000000000036}, {"input": [-2.5, 29.0], "expected": 29.00000000000002}, {"input": [-2.5, 29.5], "expected": 29.500000000000014}, {"input": [-2.5, 30.0], "expected": 30.000000000000007}, {"input": [-2.5, 30.5], "expected": 30.500000000000004}, {"input": [-2.5, 31.0], "expected": 31.000000000000004}, {"input": [-2.5, 31.5], "expected": 31.5}, {"input": [-2.5, 32.0], "expected": 32.0}, {"input": [-2.5, 32.5], "expected": 32.5}, {"input": [-2.5, 33.0], "expected": 33.0}, {"input": [-2.5, 33.5], "expected": 33.5}, {"input": [-2.5, 34.0], "expected": 34.0}, {"input": [-2.5, 34.5], "expected": 34.5}, {"input": [-2.5, 35.0], "expected": 35.0}, {"input": [-2.5, 35.5], "expected": 35.5}, {"input": [-2.5, 36.0], "expected": 36.0}, {"input": [-2.5, 36.5], "expected": 36.5}, {"input": [-2.5, 37.0], "expected": 37.0}, {"input": [-2.5, 37.5], "expected": 37.5}, {"input": [-2.5, 38.0], "expected": 38.0}, {"input": [-2.5, 38.5], "expected": 38.5}, {"input": [-2.5, 39.0], "expected": 39.0}, {"input": [-2.5, 39.5], "expected": 39.5}, {"input": [-2.5, 40.0], "expected": 40.0}, {"input": [-2.5, 40.5], "expected": 40.5}, {"input": [-2.5, 41.0], "expected": 41.0}, {"input": [-2.5, 41.5], "expected": 41.5}, {"input": [-2.5, 42.0], "expected": 42.0}, {"input": [-2.5, 42.5], "expected": 42.5}, {"input": [-2.5, 43.0], "expected": 43.0}, {"input": [-2.5, 43.5], "expected": 43.5}, {"input": [-2.5, 44.0], "expected": 44.0}, {"input": [-2.5, 44.5], "expected": 44.5}, {"input": [-2.5, 45.0], "expected": 45.0}, {"input": [-2.5, 45.5], "expected": 45.5}, {"input": [-2.5, 46.0], "expected": 46.0}, {"input": [-2.5, 46.5], "expected": 46.5}, {"input": [-2.5, 47.0], "expected": 47.0}, {"input": [-2.5, 47.5], "expected": 47.5}, {"input": [-2.5, 48.0], "expected": 48.0}, {"input": [-2.5, 48.5], "expected": 48.5}, {"input": [-2.5, 49.0], "expected": 49.0}, {"input": [-2.5, 49.5], "expected": 49.5}, {"input": [-2.5, 50.0], "expected": 50.0}, {"input": [-2.5, 50.5], "expected": 50.5}, {"input": [-2.5, 51.0], "expected": 51.0}, {"input": [-2.5, 51.5], "expected": 51.5}, {"input": [-2.5, 52.0], "expected": 52.0}, {"input": [-2.5, 52.5], "expected": 52.5}, {"input": [-2.5, 53.0], "expected": 53.0}, {"input": [-2.5, 53.5], "expected": 53.5}, {"input": [-2.5, 54.0], "expected": 54.0}, {"input": [-2.5, 54.5], "expected": 54.5}, {"input": [-2.5, 55.0], "expected": 55.0}, {"input": [-2.5, 55.5], "expected": 55.5}, {"input": [-2.5, 56.0], "expected": 56.0}, {"input": [-2.5, 56.5], "expected": 56.5}, {"input": [-2.5, 57.0], "expected": 57.0}, {"input": [-2.5, 57.5], "expected": 57.5}, {"input": [-2.5, 58.0], "expected": 58.0}, {"input": [-2.5, 58.5], "expected": 58.5}, {"input": [-2.5, 59.0], "expected": 59.0}, {"input": [-2.5, 59.5], "expected": 59.5}, {"input": [-2.5, 60.0], "expected": 60.0}, {"input": [-2.5, 60.5], "expected": 60.5}, {"input": [-2.5, 61.0], "expected": 61.0}, {"input": [-2.5, 61.5], "expected": 61.5}, {"input": [-2.5, 62.0], "expected": 62.0}, {"input": [-2.5, 62.5], "expected": 62.5}, {"input": [-2.5, 63.0], "expected": 63.0}, {"input": [-2.5, 63.5], "expected": 63.5}, {"input": [-2.5, 64.0], "expected": 64.0}, {"input": [-2.5, 64.5], "expected": 64.5}, {"input": [-2.5, 65.0], "expected": 65.0}, {"input": [-2.5, 65.5], "expected": 65.5}, {"input": [-2.5, 66.0], "expected": 66.0}, {"input": [-2.5, 66.5], "expected": 66.5}, {"input": [-2.5, 67.0], "expected": 67.0}, {"input": [-2.5, 67.5], "expected": 67.5}, {"input": [-2.5, 68.0], "expected": 68.0}, {"input": [-2.5, 68.5], "expected": 68.5}, {"input": [-2.5, 69.0], "expected": 69.0}, {"input": [-2.5, 69.5], "expected": 69.5}, {"input": [-2.5, 70.0], "expected": 70.0}, {"input": [-2.5, 70.5], "expected": 70.5}, {"input": [-2.5, 71.0], "expected": 71.0}, {"input": [-2.5, 71.5], "expected": 71.5}, {"input": [-2.5, 72.0], "expected": 72.0}, {"input": [-2.5, 72.5], "expected": 72.5}, {"input": [-2.5, 73.0], "expected": 73.0}, {"input": [-2.5, 73.5], "expected": 73.5}, {"input": [-2.5, 74.0], "expected": 74.0}, {"input": [-2.5, 74.5], "expected": 74.5}, {"input": [-2.5, 75.0], "expected": 75.0}, {"input": [-2.5, 75.5], "expected": 75.5}, {"input": [-2.5, 76.0], "expected": 76.0}, {"input": [-2.5, 76.5], "expected": 76.5}, {"input": [-2.5, 77.0], "expected": 77.0}, {"input": [-2.5, 77.5], "expected": 77.5}, {"input": [-2.5, 78.0], "expected": 78.0}, {"input": [-2.5, 78.5], "expected": 78.5}, {"input": [-2.5, 79.0], "expected": 79.0}, {"input": [-2.5, 79.5], "expected": 79.5}, {"input": [-2.5, 80.0], "expected": 80.0}, {"input": [-2.5, 80.5], "expected": 80.5}, {"input": [-2.5, 81.0], "expected": 81.0}, {"input": [-2.5, 81.5], "expected": 81.5}, {"input": [-2.5, 82.0], "expected": 82.0}, {"input": [-2.5, 82.5], "expected": 82.5}, {"input": [-2.5, 83.0], "expected": 83.0}, {"input": [-2.5, 83.5], "expected": 83.5}, {"input": [-2.5, 84.0], "expected": 84.0}, {"input": [-2.5, 84.5], "expected": 84.5}, {"input": [-2.5, 85.0], "expected": 85.0}, {"input": [-2.5, 85.5], "expected": 85.5}, {"input": [-2.5, 86.0], "expected": 86.0}, {"input": [-2.5, 86.5], "expected": 86.5}, {"input": [-2.5, 87.0], "expected": 87.0}, {"input": [-2.5, 87.5], "expected": 87.5}, {"input": [-2.5, 88.0], "expected": 88.0}, {"input": [-2.5, 88.5], "expected": 88.5}, {"input": [-2.5, 89.0], "expected": 89.0}, {"input": [-2.5, 89.5], "expected": 89.5}, {"input": [-2.5, 90.0], "expected": 90.0}, {"input": [-2.5, 90.5], "expected": 90.5}, {"input": [-2.5, 91.0], "expected": 91.0}, {"input": [-2.5, 91.5], "expected": 91.5}, {"input": [-2.5, 92.0], "expected": 92.0}, {"input": [-2.5, 92.5], "expected": 92.5}, {"input": [-2.5, 93.0], "expected": 93.0}, {"input": [-2.5, 93.5], "expected": 93.5}, {"input": [-2.5, 94.0], "expected": 94.0}, {"input": [-2.5, 94.5], "expected": 94.5}, {"input": [-2.5, 95.0], "expected": 95.0}, {"input": [-2.5, 95.5], "expected": 95.5}, {"input": [-2.5, 96.0], "expected": 96.0}, {"input": [-2.5, 96.5], "expected": 96.5}, {"input": [-2.5, 97.0], "expected": 97.0}, {"input": [-2.5, 97.5], "expected": 97.5}, {"input": [-2.5, 98.0], "expected": 98.0}, {"input": [-2.5, 98.5], "expected": 98.5}, {"input": [-2.5, 99.0], "expected": 99.0}, {"input": [-2.5, 99.5], "expected": 99.5}, {"input": [-2.0, -100.0], "expected": -2.0}, {"input": [-2.0, -99.5], "expected": -2.0}, {"input": [-2.0, -99.0], "expected": -2.0}, {"input": [-2.0, -98.5], "expected": -2.0}, {"input": [-2.0, -98.0], "expected": -2.0}, {"input": [-2.0, -97.5], "expected": -2.0}, {"input": [-2.0, -97.0], "expected": -2.0}, {"input": [-2.0, -96.5], "expected": -2.0}, {"input": [-2.0, -96.0], "expected": -2.0}, {"input": [-2.0, -95.5], "expected": -2.0}, {"input": [-2.0, -95.0], "expected": -2.0}, {"input": [-2.0, -94.5], "expected": -2.0}, {"input": [-2.0, -94.0], "expected": -2.0}, {"input": [-2.0, -93.5], "expected": -2.0}, {"input": [-2.0, -93.0], "expected": -2.0}, {"input": [-2.0, -92.5], "expected": -2.0}, {"input": [-2.0, -92.0], "expected": -2.0}, {"input": [-2.0, -91.5], "expected": -2.0}, {"input": [-2.0, -91.0], "expected": -2.0}, {"input": [-2.0, -90.5], "expected": -2.0}, {"input": [-2.0, -90.0], "expected": -2.0}, {"input": [-2.0, -89.5], "expected": -2.0}, {"input": [-2.0, -89.0], "expected": -2.0}, {"input": [-2.0, -88.5], "expected": -2.0}, {"input": [-2.0, -88.0], "expected": -2.0}, {"input": [-2.0, -87.5], "expected": -2.0}, {"input": [-2.0, -87.0], "expected": -2.0}, {"input": [-2.0, -86.5], "expected": -2.0}, {"input": [-2.0, -86.0], "expected": -2.0}, {"input": [-2.0, -85.5], "expected": -2.0}, {"input": [-2.0, -85.0], "expected": -2.0}, {"input": [-2.0, -84.5], "expected": -2.0}, {"input": [-2.0, -84.0], "expected": -2.0}, {"input": [-2.0, -83.5], "expected": -2.0}, {"input": [-2.0, -83.0], "expected": -2.0}, {"input": [-2.0, -82.5], "expected": -2.0}, {"input": [-2.0, -82.0], "expected": -2.0}, {"input": [-2.0, -81.5], "expected": -2.0}, {"input": [-2.0, -81.0], "expected": -2.0}, {"input": [-2.0, -80.5], "expected": -2.0}, {"input": [-2.0, -80.0], "expected": -2.0}, {"input": [-2.0, -79.5], "expected": -2.0}, {"input": [-2.0, -79.0], "expected": -2.0}, {"input": [-2.0, -78.5], "expected": -2.0}, {"input": [-2.0, -78.0], "expected": -2.0}, {"input": [-2.0, -77.5], "expected": -2.0}, {"input": [-2.0, -77.0], "expected": -2.0}, {"input": [-2.0, -76.5], "expected": -2.0}, {"input": [-2.0, -76.0], "expected": -2.0}, {"input": [-2.0, -75.5], "expected": -2.0}, {"input": [-2.0, -75.0], "expected": -2.0}, {"input": [-2.0, -74.5], "expected": -2.0}, {"input": [-2.0, -74.0], "expected": -2.0}, {"input": [-2.0, -73.5], "expected": -2.0}, {"input": [-2.0, -73.0], "expected": -2.0}, {"input": [-2.0, -72.5], "expected": -2.0}, {"input": [-2.0, -72.0], "expected": -2.0}, {"input": [-2.0, -71.5], "expected": -2.0}, {"input": [-2.0, -71.0], "expected": -2.0}, {"input": [-2.0, -70.5], "expected": -2.0}, {"input": [-2.0, -70.0], "expected": -2.0}, {"input": [-2.0, -69.5], "expected": -2.0}, {"input": [-2.0, -69.0], "expected": -2.0}, {"input": [-2.0, -68.5], "expected": -2.0}, {"input": [-2.0, -68.0], "expected": -2.0}, {"input": [-2.0, -67.5], "expected": -2.0}, {"input": [-2.0, -67.0], "expected": -2.0}, {"input": [-2.0, -66.5], "expected": -2.0}, {"input": [-2.0, -66.0], "expected": -2.0}, {"input": [-2.0, -65.5], "expected": -2.0}, {"input": [-2.0, -65.0], "expected": -2.0}, {"input": [-2.0, -64.5], "expected": -2.0}, {"input": [-2.0, -64.0], "expected": -2.0}, {"input": [-2.0, -63.5], "expected": -2.0}, {"input": [-2.0, -63.0], "expected": -2.0}, {"input": [-2.0, -62.5], "expected": -2.0}, {"input": [-2.0, -62.0], "expected": -2.0}, {"input": [-2.0, -61.5], "expected": -2.0}, {"input": [-2.0, -61.0], "expected": -2.0}, {"input": [-2.0, -60.5], "expected": -2.0}, {"input": [-2.0, -60.0], "expected": -2.0}, {"input": [-2.0, -59.5], "expected": -2.0}, {"input": [-2.0, -59.0], "expected": -2.0}, {"input": [-2.0, -58.5], "expected": -2.0}, {"input": [-2.0, -58.0], "expected": -2.0}, {"input": [-2.0, -57.5], "expected": -2.0}, {"input": [-2.0, -57.0], "expected": -2.0}, {"input": [-2.0, -56.5], "expected": -2.0}, {"input": [-2.0, -56.0], "expected": -2.0}, {"input": [-2.0, -55.5], "expected": -2.0}, {"input": [-2.0, -55.0], "expected": -2.0}, {"input": [-2.0, -54.5], "expected": -2.0}, {"input": [-2.0, -54.0], "expected": -2.0}, {"input": [-2.0, -53.5], "expected": -2.0}, {"input": [-2.0, -53.0], "expected": -2.0}, {"input": [-2.0, -52.5], "expected": -2.0}, {"input": [-2.0, -52.0], "expected": -2.0}, {"input": [-2.0, -51.5], "expected": -2.0}, {"input": [-2.0, -51.0], "expected": -2.0}, {"input": [-2.0, -50.5], "expected": -2.0}, {"input": [-2.0, -50.0], "expected": -2.0}, {"input": [-2.0, -49.5], "expected": -2.0}, {"input": [-2.0, -49.0], "expected": -2.0}, {"input": [-2.0, -48.5], "expected": -2.0}, {"input": [-2.0, -48.0], "expected": -2.0}, {"input": [-2.0, -47.5], "expected": -2.0}, {"input": [-2.0, -47.0], "expected": -2.0}, {"input": [-2.0, -46.5], "expected": -2.0}, {"input": [-2.0, -46.0], "expected": -2.0}, {"input": [-2.0, -45.5], "expected": -2.0}, {"input": [-2.0, -45.0], "expected": -2.0}, {"input": [-2.0, -44.5], "expected": -2.0}, {"input": [-2.0, -44.0], "expected": -2.0}, {"input": [-2.0, -43.5], "expected": -2.0}, {"input": [-2.0, -43.0], "expected": -2.0}, {"input": [-2.0, -42.5], "expected": -2.0}, {"input": [-2.0, -42.0], "expected": -2.0}, {"input": [-2.0, -41.5], "expected": -2.0}, {"input": [-2.0, -41.0], "expected": -2.0}, {"input": [-2.0, -40.5], "expected": -2.0}, {"input": [-2.0, -40.0], "expected": -2.0}, {"input": [-2.0, -39.5], "expected": -2.0}, {"input": [-2.0, -39.0], "expected": -2.0}, {"input": [-2.0, -38.5], "expected": -1.9999999999999998}, {"input": [-2.0, -38.0], "expected": -1.9999999999999998}, {"input": [-2.0, -37.5], "expected": -1.9999999999999996}, {"input": [-2.0, -37.0], "expected": -1.9999999999999993}, {"input": [-2.0, -36.5], "expected": -1.999999999999999}, {"input": [-2.0, -36.0], "expected": -1.9999999999999982}, {"input": [-2.0, -35.5], "expected": -1.9999999999999971}, {"input": [-2.0, -35.0], "expected": -1.9999999999999953}, {"input": [-2.0, -34.5], "expected": -1.9999999999999922}, {"input": [-2.0, -34.0], "expected": -1.9999999999999873}, {"input": [-2.0, -33.5], "expected": -1.9999999999999791}, {"input": [-2.0, -33.0], "expected": -1.9999999999999656}, {"input": [-2.0, -32.5], "expected": -1.9999999999999432}, {"input": [-2.0, -32.0], "expected": -1.9999999999999065}, {"input": [-2.0, -31.5], "expected": -1.9999999999998457}, {"input": [-2.0, -31.0], "expected": -1.9999999999997455}, {"input": [-2.0, -30.5], "expected": -1.9999999999995806}, {"input": [-2.0, -30.0], "expected": -1.9999999999993086}, {"input": [-2.0, -29.5], "expected": -1.99999999999886}, {"input": [-2.0, -29.0], "expected": -1.9999999999981204}, {"input": [-2.0, -28.5], "expected": -1.9999999999969011}, {"input": [-2.0, -28.0], "expected": -1.999999999994891}, {"input": [-2.0, -27.5], "expected": -1.9999999999915765}, {"input": [-2.0, -27.0], "expected": -1.999999999986112}, {"input": [-2.0, -26.5], "expected": -1.9999999999771028}, {"input": [-2.0, -26.0], "expected": -1.9999999999622486}, {"input": [-2.0, -25.5], "expected": -1.9999999999377585}, {"input": [-2.0, -25.0], "expected": -1.9999999998973812}, {"input": [-2.0, -24.5], "expected": -1.9999999998308102}, {"input": [-2.0, -24.0], "expected": -1.9999999997210531}, {"input": [-2.0, -23.5], "expected": -1.9999999995400946}, {"input": [-2.0, -23.0], "expected": -1.9999999992417439}, {"input": [-2.0, -22.5], "expected": -1.9999999987498471}, {"input": [-2.0, -22.0], "expected": -1.9999999979388463}, {"input": [-2.0, -21.5], "expected": -1.999999996601732}, {"input": [-2.0, -21.0], "expected": -1.9999999943972036}, {"input": [-2.0, -20.5], "expected": -1.9999999907625503}, {"input": [-2.0, -20.0], "expected": -1.9999999847700203}, {"input": [-2.0, -19.5], "expected": -1.9999999748900088}, {"input": [-2.0, -19.0], "expected": -1.9999999586006236}, {"input": [-2.0, -18.5], "expected": -1.9999999317439685}, {"input": [-2.0, -18.0], "expected": -1.9999998874648317}, {"input": [-2.0, -17.5], "expected": -1.999999814460881}, {"input": [-2.0, -17.0], "expected": -1.9999996940977263}, {"input": [-2.0, -16.5], "expected": -1.9999994956524647}, {"input": [-2.0, -16.0], "expected": -1.9999991684716265}, {"input": [-2.0, -15.5], "expected": -1.9999986290418534}, {"input": [-2.0, -15.0], "expected": -1.9999977396731476}, {"input": [-2.0, -14.5], "expected": -1.999996273353772}, {"input": [-2.0, -14.0], "expected": -1.9999938558065222}, {"input": [-2.0, -13.5], "expected": -1.9999898699577103}, {"input": [-2.0, -13.0], "expected": -1.9999832984386816}, {"input": [-2.0, -12.5], "expected": -1.9999724639297713}, {"input": [-2.0, -12.0], "expected": -1.9999546011007832}, {"input": [-2.0, -11.5], "expected": -1.9999251509713707}, {"input": [-2.0, -11.0], "expected": -1.9998765978102768}, {"input": [-2.0, -10.5], "expected": -1.9997965523278705}, {"input": [-2.0, -10.0], "expected": -1.9996645936271042}, {"input": [-2.0, -9.5], "expected": -1.9994470685246393}, {"input": [-2.0, -9.0], "expected": -1.9990885335462258}, {"input": [-2.0, -8.5], "expected": -1.9984976898402458}, {"input": [-2.0, -8.0], "expected": -1.9975243148622694}, {"input": [-2.0, -7.5], "expected": -1.9959215567294293}, {"input": [-2.0, -7.0], "expected": -1.993284651510882}, {"input": [-2.0, -6.5], "expected": -1.9889522551514063}, {"input": [-2.0, -6.0], "expected": -1.9818500720821903}, {"input": [-2.0, -5.5], "expected": -1.9702495817273795}, {"input": [-2.0, -5.0], "expected": -1.951412648426258}, {"input": [-2.0, -4.5], "expected": -1.9211102657074504}, {"input": [-2.0, -4.0], "expected": -1.8730719889570275}, {"input": [-2.0, -3.5], "expected": -1.7985867220172476}, {"input": [-2.0, -3.0], "expected": -1.6867383124817772}, {"input": [-2.0, -2.5], "expected": -1.5259230158198933}, {"input": [-2.0, -2.0], "expected": -1.3068528194400546}, {"input": [-2.0, -1.5], "expected": -1.0259230158198933}, {"input": [-2.0, -1.0], "expected": -0.6867383124817772}, {"input": [-2.0, -0.5], "expected": -0.29858672201724756}, {"input": [-2.0, 0.0], "expected": 0.1269280110429725}, {"input": [-2.0, 0.5], "expected": 0.5788897342925496}, {"input": [-2.0, 1.0], "expected": 1.048587351573742}, {"input": [-2.0, 1.5], "expected": 1.5297504182726205}, {"input": [-2.0, 2.0], "expected": 2.01814992791781}, {"input": [-2.0, 2.5], "expected": 2.511047744848594}, {"input": [-2.0, 3.0], "expected": 3.0067153484891183}, {"input": [-2.0, 3.5], "expected": 3.5040784432705707}, {"input": [-2.0, 4.0], "expected": 4.00247568513773}, {"input": [-2.0, 4.5], "expected": 4.501502310159754}, {"input": [-2.0, 5.0], "expected": 5.000911466453775}, {"input": [-2.0, 5.5], "expected": 5.500552931475361}, {"input": [-2.0, 6.0], "expected": 6.000335406372896}, {"input": [-2.0, 6.5], "expected": 6.5002034476721295}, {"input": [-2.0, 7.0], "expected": 7.000123402189724}, {"input": [-2.0, 7.5], "expected": 7.500074849028629}, {"input": [-2.0, 8.0], "expected": 8.000045398899218}, {"input": [-2.0, 8.5], "expected": 8.50002753607023}, {"input": [-2.0, 9.0], "expected": 9.000016701561318}, {"input": [-2.0, 9.5], "expected": 9.50001013004229}, {"input": [-2.0, 10.0], "expected": 10.000006144193478}, {"input": [-2.0, 10.5], "expected": 10.500003726646229}, {"input": [-2.0, 11.0], "expected": 11.000002260326852}, {"input": [-2.0, 11.5], "expected": 11.500001370958147}, {"input": [-2.0, 12.0], "expected": 12.000000831528373}, {"input": [-2.0, 12.5], "expected": 12.500000504347536}, {"input": [-2.0, 13.0], "expected": 13.000000305902274}, {"input": [-2.0, 13.5], "expected": 13.500000185539118}, {"input": [-2.0, 14.0], "expected": 14.000000112535169}, {"input": [-2.0, 14.5], "expected": 14.500000068256032}, {"input": [-2.0, 15.0], "expected": 15.000000041399376}, {"input": [-2.0, 15.5], "expected": 15.50000002510999}, {"input": [-2.0, 16.0], "expected": 16.00000001522998}, {"input": [-2.0, 16.5], "expected": 16.50000000923745}, {"input": [-2.0, 17.0], "expected": 17.000000005602796}, {"input": [-2.0, 17.5], "expected": 17.500000003398267}, {"input": [-2.0, 18.0], "expected": 18.000000002061153}, {"input": [-2.0, 18.5], "expected": 18.500000001250154}, {"input": [-2.0, 19.0], "expected": 19.000000000758256}, {"input": [-2.0, 19.5], "expected": 19.500000000459906}, {"input": [-2.0, 20.0], "expected": 20.00000000027895}, {"input": [-2.0, 20.5], "expected": 20.50000000016919}, {"input": [-2.0, 21.0], "expected": 21.00000000010262}, {"input": [-2.0, 21.5], "expected": 21.50000000006224}, {"input": [-2.0, 22.0], "expected": 22.00000000003775}, {"input": [-2.0, 22.5], "expected": 22.500000000022897}, {"input": [-2.0, 23.0], "expected": 23.000000000013888}, {"input": [-2.0, 23.5], "expected": 23.500000000008423}, {"input": [-2.0, 24.0], "expected": 24.00000000000511}, {"input": [-2.0, 24.5], "expected": 24.500000000003098}, {"input": [-2.0, 25.0], "expected": 25.00000000000188}, {"input": [-2.0, 25.5], "expected": 25.50000000000114}, {"input": [-2.0, 26.0], "expected": 26.000000000000693}, {"input": [-2.0, 26.5], "expected": 26.50000000000042}, {"input": [-2.0, 27.0], "expected": 27.000000000000256}, {"input": [-2.0, 27.5], "expected": 27.500000000000153}, {"input": [-2.0, 28.0], "expected": 28.000000000000092}, {"input": [-2.0, 28.5], "expected": 28.500000000000057}, {"input": [-2.0, 29.0], "expected": 29.000000000000036}, {"input": [-2.0, 29.5], "expected": 29.50000000000002}, {"input": [-2.0, 30.0], "expected": 30.000000000000014}, {"input": [-2.0, 30.5], "expected": 30.500000000000007}, {"input": [-2.0, 31.0], "expected": 31.000000000000004}, {"input": [-2.0, 31.5], "expected": 31.500000000000004}, {"input": [-2.0, 32.0], "expected": 32.0}, {"input": [-2.0, 32.5], "expected": 32.5}, {"input": [-2.0, 33.0], "expected": 33.0}, {"input": [-2.0, 33.5], "expected": 33.5}, {"input": [-2.0, 34.0], "expected": 34.0}, {"input": [-2.0, 34.5], "expected": 34.5}, {"input": [-2.0, 35.0], "expected": 35.0}, {"input": [-2.0, 35.5], "expected": 35.5}, {"input": [-2.0, 36.0], "expected": 36.0}, {"input": [-2.0, 36.5], "expected": 36.5}, {"input": [-2.0, 37.0], "expected": 37.0}, {"input": [-2.0, 37.5], "expected": 37.5}, {"input": [-2.0, 38.0], "expected": 38.0}, {"input": [-2.0, 38.5], "expected": 38.5}, {"input": [-2.0, 39.0], "expected": 39.0}, {"input": [-2.0, 39.5], "expected": 39.5}, {"input": [-2.0, 40.0], "expected": 40.0}, {"input": [-2.0, 40.5], "expected": 40.5}, {"input": [-2.0, 41.0], "expected": 41.0}, {"input": [-2.0, 41.5], "expected": 41.5}, {"input": [-2.0, 42.0], "expected": 42.0}, {"input": [-2.0, 42.5], "expected": 42.5}, {"input": [-2.0, 43.0], "expected": 43.0}, {"input": [-2.0, 43.5], "expected": 43.5}, {"input": [-2.0, 44.0], "expected": 44.0}, {"input": [-2.0, 44.5], "expected": 44.5}, {"input": [-2.0, 45.0], "expected": 45.0}, {"input": [-2.0, 45.5], "expected": 45.5}, {"input": [-2.0, 46.0], "expected": 46.0}, {"input": [-2.0, 46.5], "expected": 46.5}, {"input": [-2.0, 47.0], "expected": 47.0}, {"input": [-2.0, 47.5], "expected": 47.5}, {"input": [-2.0, 48.0], "expected": 48.0}, {"input": [-2.0, 48.5], "expected": 48.5}, {"input": [-2.0, 49.0], "expected": 49.0}, {"input": [-2.0, 49.5], "expected": 49.5}, {"input": [-2.0, 50.0], "expected": 50.0}, {"input": [-2.0, 50.5], "expected": 50.5}, {"input": [-2.0, 51.0], "expected": 51.0}, {"input": [-2.0, 51.5], "expected": 51.5}, {"input": [-2.0, 52.0], "expected": 52.0}, {"input": [-2.0, 52.5], "expected": 52.5}, {"input": [-2.0, 53.0], "expected": 53.0}, {"input": [-2.0, 53.5], "expected": 53.5}, {"input": [-2.0, 54.0], "expected": 54.0}, {"input": [-2.0, 54.5], "expected": 54.5}, {"input": [-2.0, 55.0], "expected": 55.0}, {"input": [-2.0, 55.5], "expected": 55.5}, {"input": [-2.0, 56.0], "expected": 56.0}, {"input": [-2.0, 56.5], "expected": 56.5}, {"input": [-2.0, 57.0], "expected": 57.0}, {"input": [-2.0, 57.5], "expected": 57.5}, {"input": [-2.0, 58.0], "expected": 58.0}, {"input": [-2.0, 58.5], "expected": 58.5}, {"input": [-2.0, 59.0], "expected": 59.0}, {"input": [-2.0, 59.5], "expected": 59.5}, {"input": [-2.0, 60.0], "expected": 60.0}, {"input": [-2.0, 60.5], "expected": 60.5}, {"input": [-2.0, 61.0], "expected": 61.0}, {"input": [-2.0, 61.5], "expected": 61.5}, {"input": [-2.0, 62.0], "expected": 62.0}, {"input": [-2.0, 62.5], "expected": 62.5}, {"input": [-2.0, 63.0], "expected": 63.0}, {"input": [-2.0, 63.5], "expected": 63.5}, {"input": [-2.0, 64.0], "expected": 64.0}, {"input": [-2.0, 64.5], "expected": 64.5}, {"input": [-2.0, 65.0], "expected": 65.0}, {"input": [-2.0, 65.5], "expected": 65.5}, {"input": [-2.0, 66.0], "expected": 66.0}, {"input": [-2.0, 66.5], "expected": 66.5}, {"input": [-2.0, 67.0], "expected": 67.0}, {"input": [-2.0, 67.5], "expected": 67.5}, {"input": [-2.0, 68.0], "expected": 68.0}, {"input": [-2.0, 68.5], "expected": 68.5}, {"input": [-2.0, 69.0], "expected": 69.0}, {"input": [-2.0, 69.5], "expected": 69.5}, {"input": [-2.0, 70.0], "expected": 70.0}, {"input": [-2.0, 70.5], "expected": 70.5}, {"input": [-2.0, 71.0], "expected": 71.0}, {"input": [-2.0, 71.5], "expected": 71.5}, {"input": [-2.0, 72.0], "expected": 72.0}, {"input": [-2.0, 72.5], "expected": 72.5}, {"input": [-2.0, 73.0], "expected": 73.0}, {"input": [-2.0, 73.5], "expected": 73.5}, {"input": [-2.0, 74.0], "expected": 74.0}, {"input": [-2.0, 74.5], "expected": 74.5}, {"input": [-2.0, 75.0], "expected": 75.0}, {"input": [-2.0, 75.5], "expected": 75.5}, {"input": [-2.0, 76.0], "expected": 76.0}, {"input": [-2.0, 76.5], "expected": 76.5}, {"input": [-2.0, 77.0], "expected": 77.0}, {"input": [-2.0, 77.5], "expected": 77.5}, {"input": [-2.0, 78.0], "expected": 78.0}, {"input": [-2.0, 78.5], "expected": 78.5}, {"input": [-2.0, 79.0], "expected": 79.0}, {"input": [-2.0, 79.5], "expected": 79.5}, {"input": [-2.0, 80.0], "expected": 80.0}, {"input": [-2.0, 80.5], "expected": 80.5}, {"input": [-2.0, 81.0], "expected": 81.0}, {"input": [-2.0, 81.5], "expected": 81.5}, {"input": [-2.0, 82.0], "expected": 82.0}, {"input": [-2.0, 82.5], "expected": 82.5}, {"input": [-2.0, 83.0], "expected": 83.0}, {"input": [-2.0, 83.5], "expected": 83.5}, {"input": [-2.0, 84.0], "expected": 84.0}, {"input": [-2.0, 84.5], "expected": 84.5}, {"input": [-2.0, 85.0], "expected": 85.0}, {"input": [-2.0, 85.5], "expected": 85.5}, {"input": [-2.0, 86.0], "expected": 86.0}, {"input": [-2.0, 86.5], "expected": 86.5}, {"input": [-2.0, 87.0], "expected": 87.0}, {"input": [-2.0, 87.5], "expected": 87.5}, {"input": [-2.0, 88.0], "expected": 88.0}, {"input": [-2.0, 88.5], "expected": 88.5}, {"input": [-2.0, 89.0], "expected": 89.0}, {"input": [-2.0, 89.5], "expected": 89.5}, {"input": [-2.0, 90.0], "expected": 90.0}, {"input": [-2.0, 90.5], "expected": 90.5}, {"input": [-2.0, 91.0], "expected": 91.0}, {"input": [-2.0, 91.5], "expected": 91.5}, {"input": [-2.0, 92.0], "expected": 92.0}, {"input": [-2.0, 92.5], "expected": 92.5}, {"input": [-2.0, 93.0], "expected": 93.0}, {"input": [-2.0, 93.5], "expected": 93.5}, {"input": [-2.0, 94.0], "expected": 94.0}, {"input": [-2.0, 94.5], "expected": 94.5}, {"input": [-2.0, 95.0], "expected": 95.0}, {"input": [-2.0, 95.5], "expected": 95.5}, {"input": [-2.0, 96.0], "expected": 96.0}, {"input": [-2.0, 96.5], "expected": 96.5}, {"input": [-2.0, 97.0], "expected": 97.0}, {"input": [-2.0, 97.5], "expected": 97.5}, {"input": [-2.0, 98.0], "expected": 98.0}, {"input": [-2.0, 98.5], "expected": 98.5}, {"input": [-2.0, 99.0], "expected": 99.0}, {"input": [-2.0, 99.5], "expected": 99.5}, {"input": [-1.5, -100.0], "expected": -1.5}, {"input": [-1.5, -99.5], "expected": -1.5}, {"input": [-1.5, -99.0], "expected": -1.5}, {"input": [-1.5, -98.5], "expected": -1.5}, {"input": [-1.5, -98.0], "expected": -1.5}, {"input": [-1.5, -97.5], "expected": -1.5}, {"input": [-1.5, -97.0], "expected": -1.5}, {"input": [-1.5, -96.5], "expected": -1.5}, {"input": [-1.5, -96.0], "expected": -1.5}, {"input": [-1.5, -95.5], "expected": -1.5}, {"input": [-1.5, -95.0], "expected": -1.5}, {"input": [-1.5, -94.5], "expected": -1.5}, {"input": [-1.5, -94.0], "expected": -1.5}, {"input": [-1.5, -93.5], "expected": -1.5}, {"input": [-1.5, -93.0], "expected": -1.5}, {"input": [-1.5, -92.5], "expected": -1.5}, {"input": [-1.5, -92.0], "expected": -1.5}, {"input": [-1.5, -91.5], "expected": -1.5}, {"input": [-1.5, -91.0], "expected": -1.5}, {"input": [-1.5, -90.5], "expected": -1.5}, {"input": [-1.5, -90.0], "expected": -1.5}, {"input": [-1.5, -89.5], "expected": -1.5}, {"input": [-1.5, -89.0], "expected": -1.5}, {"input": [-1.5, -88.5], "expected": -1.5}, {"input": [-1.5, -88.0], "expected": -1.5}, {"input": [-1.5, -87.5], "expected": -1.5}, {"input": [-1.5, -87.0], "expected": -1.5}, {"input": [-1.5, -86.5], "expected": -1.5}, {"input": [-1.5, -86.0], "expected": -1.5}, {"input": [-1.5, -85.5], "expected": -1.5}, {"input": [-1.5, -85.0], "expected": -1.5}, {"input": [-1.5, -84.5], "expected": -1.5}, {"input": [-1.5, -84.0], "expected": -1.5}, {"input": [-1.5, -83.5], "expected": -1.5}, {"input": [-1.5, -83.0], "expected": -1.5}, {"input": [-1.5, -82.5], "expected": -1.5}, {"input": [-1.5, -82.0], "expected": -1.5}, {"input": [-1.5, -81.5], "expected": -1.5}, {"input": [-1.5, -81.0], "expected": -1.5}, {"input": [-1.5, -80.5], "expected": -1.5}, {"input": [-1.5, -80.0], "expected": -1.5}, {"input": [-1.5, -79.5], "expected": -1.5}, {"input": [-1.5, -79.0], "expected": -1.5}, {"input": [-1.5, -78.5], "expected": -1.5}, {"input": [-1.5, -78.0], "expected": -1.5}, {"input": [-1.5, -77.5], "expected": -1.5}, {"input": [-1.5, -77.0], "expected": -1.5}, {"input": [-1.5, -76.5], "expected": -1.5}, {"input": [-1.5, -76.0], "expected": -1.5}, {"input": [-1.5, -75.5], "expected": -1.5}, {"input": [-1.5, -75.0], "expected": -1.5}, {"input": [-1.5, -74.5], "expected": -1.5}, {"input": [-1.5, -74.0], "expected": -1.5}, {"input": [-1.5, -73.5], "expected": -1.5}, {"input": [-1.5, -73.0], "expected": -1.5}, {"input": [-1.5, -72.5], "expected": -1.5}, {"input": [-1.5, -72.0], "expected": -1.5}, {"input": [-1.5, -71.5], "expected": -1.5}, {"input": [-1.5, -71.0], "expected": -1.5}, {"input": [-1.5, -70.5], "expected": -1.5}, {"input": [-1.5, -70.0], "expected": -1.5}, {"input": [-1.5, -69.5], "expected": -1.5}, {"input": [-1.5, -69.0], "expected": -1.5}, {"input": [-1.5, -68.5], "expected": -1.5}, {"input": [-1.5, -68.0], "expected": -1.5}, {"input": [-1.5, -67.5], "expected": -1.5}, {"input": [-1.5, -67.0], "expected": -1.5}, {"input": [-1.5, -66.5], "expected": -1.5}, {"input": [-1.5, -66.0], "expected": -1.5}, {"input": [-1.5, -65.5], "expected": -1.5}, {"input": [-1.5, -65.0], "expected": -1.5}, {"input": [-1.5, -64.5], "expected": -1.5}, {"input": [-1.5, -64.0], "expected": -1.5}, {"input": [-1.5, -63.5], "expected": -1.5}, {"input": [-1.5, -63.0], "expected": -1.5}, {"input": [-1.5, -62.5], "expected": -1.5}, {"input": [-1.5, -62.0], "expected": -1.5}, {"input": [-1.5, -61.5], "expected": -1.5}, {"input": [-1.5, -61.0], "expected": -1.5}, {"input": [-1.5, -60.5], "expected": -1.5}, {"input": [-1.5, -60.0], "expected": -1.5}, {"input": [-1.5, -59.5], "expected": -1.5}, {"input": [-1.5, -59.0], "expected": -1.5}, {"input": [-1.5, -58.5], "expected": -1.5}, {"input": [-1.5, -58.0], "expected": -1.5}, {"input": [-1.5, -57.5], "expected": -1.5}, {"input": [-1.5, -57.0], "expected": -1.5}, {"input": [-1.5, -56.5], "expected": -1.5}, {"input": [-1.5, -56.0], "expected": -1.5}, {"input": [-1.5, -55.5], "expected": -1.5}, {"input": [-1.5, -55.0], "expected": -1.5}, {"input": [-1.5, -54.5], "expected": -1.5}, {"input": [-1.5, -54.0], "expected": -1.5}, {"input": [-1.5, -53.5], "expected": -1.5}, {"input": [-1.5, -53.0], "expected": -1.5}, {"input": [-1.5, -52.5], "expected": -1.5}, {"input": [-1.5, -52.0], "expected": -1.5}, {"input": [-1.5, -51.5], "expected": -1.5}, {"input": [-1.5, -51.0], "expected": -1.5}, {"input": [-1.5, -50.5], "expected": -1.5}, {"input": [-1.5, -50.0], "expected": -1.5}, {"input": [-1.5, -49.5], "expected": -1.5}, {"input": [-1.5, -49.0], "expected": -1.5}, {"input": [-1.5, -48.5], "expected": -1.5}, {"input": [-1.5, -48.0], "expected": -1.5}, {"input": [-1.5, -47.5], "expected": -1.5}, {"input": [-1.5, -47.0], "expected": -1.5}, {"input": [-1.5, -46.5], "expected": -1.5}, {"input": [-1.5, -46.0], "expected": -1.5}, {"input": [-1.5, -45.5], "expected": -1.5}, {"input": [-1.5, -45.0], "expected": -1.5}, {"input": [-1.5, -44.5], "expected": -1.5}, {"input": [-1.5, -44.0], "expected": -1.5}, {"input": [-1.5, -43.5], "expected": -1.5}, {"input": [-1.5, -43.0], "expected": -1.5}, {"input": [-1.5, -42.5], "expected": -1.5}, {"input": [-1.5, -42.0], "expected": -1.5}, {"input": [-1.5, -41.5], "expected": -1.5}, {"input": [-1.5, -41.0], "expected": -1.5}, {"input": [-1.5, -40.5], "expected": -1.5}, {"input": [-1.5, -40.0], "expected": -1.5}, {"input": [-1.5, -39.5], "expected": -1.5}, {"input": [-1.5, -39.0], "expected": -1.5}, {"input": [-1.5, -38.5], "expected": -1.5}, {"input": [-1.5, -38.0], "expected": -1.4999999999999998}, {"input": [-1.5, -37.5], "expected": -1.4999999999999998}, {"input": [-1.5, -37.0], "expected": -1.4999999999999996}, {"input": [-1.5, -36.5], "expected": -1.4999999999999993}, {"input": [-1.5, -36.0], "expected": -1.499999999999999}, {"input": [-1.5, -35.5], "expected": -1.4999999999999982}, {"input": [-1.5, -35.0], "expected": -1.4999999999999971}, {"input": [-1.5, -34.5], "expected": -1.4999999999999953}, {"input": [-1.5, -34.0], "expected": -1.4999999999999922}, {"input": [-1.5, -33.5], "expected": -1.4999999999999873}, {"input": [-1.5, -33.0], "expected": -1.4999999999999791}, {"input": [-1.5, -32.5], "expected": -1.4999999999999656}, {"input": [-1.5, -32.0], "expected": -1.4999999999999432}, {"input": [-1.5, -31.5], "expected": -1.4999999999999065}, {"input": [-1.5, -31.0], "expected": -1.4999999999998457}, {"input": [-1.5, -30.5], "expected": -1.4999999999997455}, {"input": [-1.5, -30.0], "expected": -1.4999999999995806}, {"input": [-1.5, -29.5], "expected": -1.4999999999993086}, {"input": [-1.5, -29.0], "expected": -1.49999999999886}, {"input": [-1.5, -28.5], "expected": -1.4999999999981204}, {"input": [-1.5, -28.0], "expected": -1.4999999999969011}, {"input": [-1.5, -27.5], "expected": -1.499999999994891}, {"input": [-1.5, -27.0], "expected": -1.4999999999915765}, {"input": [-1.5, -26.5], "expected": -1.499999999986112}, {"input": [-1.5, -26.0], "expected": -1.4999999999771028}, {"input": [-1.5, -25.5], "expected": -1.4999999999622486}, {"input": [-1.5, -25.0], "expected": -1.4999999999377585}, {"input": [-1.5, -24.5], "expected": -1.4999999998973812}, {"input": [-1.5, -24.0], "expected": -1.4999999998308102}, {"input": [-1.5, -23.5], "expected": -1.4999999997210531}, {"input": [-1.5, -23.0], "expected": -1.4999999995400946}, {"input": [-1.5, -22.5], "expected": -1.4999999992417439}, {"input": [-1.5, -22.0], "expected": -1.4999999987498471}, {"input": [-1.5, -21.5], "expected": -1.4999999979388463}, {"input": [-1.5, -21.0], "expected": -1.499999996601732}, {"input": [-1.5, -20.5], "expected": -1.4999999943972036}, {"input": [-1.5, -20.0], "expected": -1.4999999907625503}, {"input": [-1.5, -19.5], "expected": -1.4999999847700203}, {"input": [-1.5, -19.0], "expected": -1.4999999748900088}, {"input": [-1.5, -18.5], "expected": -1.4999999586006236}, {"input": [-1.5, -18.0], "expected": -1.4999999317439685}, {"input": [-1.5, -17.5], "expected": -1.4999998874648317}, {"input": [-1.5, -17.0], "expected": -1.499999814460881}, {"input": [-1.5, -16.5], "expected": -1.4999996940977263}, {"input": [-1.5, -16.0], "expected": -1.4999994956524647}, {"input": [-1.5, -15.5], "expected": -1.4999991684716265}, {"input": [-1.5, -15.0], "expected": -1.4999986290418534}, {"input": [-1.5, -14.5], "expected": -1.4999977396731476}, {"input": [-1.5, -14.0], "expected": -1.499996273353772}, {"input": [-1.5, -13.5], "expected": -1.4999938558065222}, {"input": [-1.5, -13.0], "expected": -1.4999898699577103}, {"input": [-1.5, -12.5], "expected": -1.4999832984386816}, {"input": [-1.5, -12.0], "expected": -1.4999724639297713}, {"input": [-1.5, -11.5], "expected": -1.4999546011007832}, {"input": [-1.5, -11.0], "expected": -1.4999251509713707}, {"input": [-1.5, -10.5], "expected": -1.4998765978102768}, {"input": [-1.5, -10.0], "expected": -1.4997965523278705}, {"input": [-1.5, -9.5], "expected": -1.4996645936271042}, {"input": [-1.5, -9.0], "expected": -1.4994470685246393}, {"input": [-1.5, -8.5], "expected": -1.4990885335462258}, {"input": [-1.5, -8.0], "expected": -1.4984976898402458}, {"input": [-1.5, -7.5], "expected": -1.4975243148622694}, {"input": [-1.5, -7.0], "expected": -1.4959215567294293}, {"input": [-1.5, -6.5], "expected": -1.493284651510882}, {"input": [-1.5, -6.0], "expected": -1.4889522551514063}, {"input": [-1.5, -5.5], "expected": -1.4818500720821903}, {"input": [-1.5, -5.0], "expected": -1.4702495817273795}, {"input": [-1.5, -4.5], "expected": -1.451412648426258}, {"input": [-1.5, -4.0], "expected": -1.4211102657074504}, {"input": [-1.5, -3.5], "expected": -1.3730719889570275}, {"input": [-1.5, -3.0], "expected": -1.2985867220172476}, {"input": [-1.5, -2.5], "expected": -1.1867383124817772}, {"input": [-1.5, -2.0], "expected": -1.0259230158198933}, {"input": [-1.5, -1.5], "expected": -0.8068528194400547}, {"input": [-1.5, -1.0], "expected": -0.5259230158198933}, {"input": [-1.5, -0.5], "expected": -0.18673831248177714}, {"input": [-1.5, 0.0], "expected": 0.2014132779827524}, {"input": [-1.5, 0.5], "expected": 0.6269280110429725}, {"input": [-1.5, 1.0], "expected": 1.0788897342925496}, {"input": [-1.5, 1.5], "expected": 1.548587351573742}, {"input": [-1.5, 2.0], "expected": 2.0297504182726205}, {"input": [-1.5, 2.5], "expected": 2.51814992791781}, {"input": [-1.5, 3.0], "expected": 3.011047744848594}, {"input": [-1.5, 3.5], "expected": 3.5067153484891183}, {"input": [-1.5, 4.0], "expected": 4.004078443270571}, {"input": [-1.5, 4.5], "expected": 4.50247568513773}, {"input": [-1.5, 5.0], "expected": 5.001502310159754}, {"input": [-1.5, 5.5], "expected": 5.500911466453775}, {"input": [-1.5, 6.0], "expected": 6.000552931475361}, {"input": [-1.5, 6.5], "expected": 6.500335406372896}, {"input": [-1.5, 7.0], "expected": 7.0002034476721295}, {"input": [-1.5, 7.5], "expected": 7.500123402189724}, {"input": [-1.5, 8.0], "expected": 8.000074849028628}, {"input": [-1.5, 8.5], "expected": 8.500045398899218}, {"input": [-1.5, 9.0], "expected": 9.00002753607023}, {"input": [-1.5, 9.5], "expected": 9.500016701561318}, {"input": [-1.5, 10.0], "expected": 10.00001013004229}, {"input": [-1.5, 10.5], "expected": 10.500006144193478}, {"input": [-1.5, 11.0], "expected": 11.000003726646229}, {"input": [-1.5, 11.5], "expected": 11.500002260326852}, {"input": [-1.5, 12.0], "expected": 12.000001370958147}, {"input": [-1.5, 12.5], "expected": 12.500000831528373}, {"input": [-1.5, 13.0], "expected": 13.000000504347536}, {"input": [-1.5, 13.5], "expected": 13.500000305902274}, {"input": [-1.5, 14.0], "expected": 14.000000185539118}, {"input": [-1.5, 14.5], "expected": 14.500000112535169}, {"input": [-1.5, 15.0], "expected": 15.000000068256032}, {"input": [-1.5, 15.5], "expected": 15.500000041399376}, {"input": [-1.5, 16.0], "expected": 16.00000002510999}, {"input": [-1.5, 16.5], "expected": 16.50000001522998}, {"input": [-1.5, 17.0], "expected": 17.00000000923745}, {"input": [-1.5, 17.5], "expected": 17.500000005602796}, {"input": [-1.5, 18.0], "expected": 18.000000003398267}, {"input": [-1.5, 18.5], "expected": 18.500000002061153}, {"input": [-1.5, 19.0], "expected": 19.000000001250154}, {"input": [-1.5, 19.5], "expected": 19.500000000758256}, {"input": [-1.5, 20.0], "expected": 20.000000000459906}, {"input": [-1.5, 20.5], "expected": 20.50000000027895}, {"input": [-1.5, 21.0], "expected": 21.00000000016919}, {"input": [-1.5, 21.5], "expected": 21.50000000010262}, {"input": [-1.5, 22.0], "expected": 22.00000000006224}, {"input": [-1.5, 22.5], "expected": 22.50000000003775}, {"input": [-1.5, 23.0], "expected": 23.000000000022897}, {"input": [-1.5, 23.5], "expected": 23.500000000013888}, {"input": [-1.5, 24.0], "expected": 24.000000000008423}, {"input": [-1.5, 24.5], "expected": 24.50000000000511}, {"input": [-1.5, 25.0], "expected": 25.000000000003098}, {"input": [-1.5, 25.5], "expected": 25.50000000000188}, {"input": [-1.5, 26.0], "expected": 26.00000000000114}, {"input": [-1.5, 26.5], "expected": 26.500000000000693}, {"input": [-1.5, 27.0], "expected": 27.00000000000042}, {"input": [-1.5, 27.5], "expected": 27.500000000000256}, {"input": [-1.5, 28.0], "expected": 28.000000000000153}, {"input": [-1.5, 28.5], "expected": 28.500000000000092}, {"input": [-1.5, 29.0], "expected": 29.000000000000057}, {"input": [-1.5, 29.5], "expected": 29.500000000000036}, {"input": [-1.5, 30.0], "expected": 30.00000000000002}, {"input": [-1.5, 30.5], "expected": 30.500000000000014}, {"input": [-1.5, 31.0], "expected": 31.000000000000007}, {"input": [-1.5, 31.5], "expected": 31.500000000000004}, {"input": [-1.5, 32.0], "expected": 32.0}, {"input": [-1.5, 32.5], "expected": 32.5}, {"input": [-1.5, 33.0], "expected": 33.0}, {"input": [-1.5, 33.5], "expected": 33.5}, {"input": [-1.5, 34.0], "expected": 34.0}, {"input": [-1.5, 34.5], "expected": 34.5}, {"input": [-1.5, 35.0], "expected": 35.0}, {"input": [-1.5, 35.5], "expected": 35.5}, {"input": [-1.5, 36.0], "expected": 36.0}, {"input": [-1.5, 36.5], "expected": 36.5}, {"input": [-1.5, 37.0], "expected": 37.0}, {"input": [-1.5, 37.5], "expected": 37.5}, {"input": [-1.5, 38.0], "expected": 38.0}, {"input": [-1.5, 38.5], "expected": 38.5}, {"input": [-1.5, 39.0], "expected": 39.0}, {"input": [-1.5, 39.5], "expected": 39.5}, {"input": [-1.5, 40.0], "expected": 40.0}, {"input": [-1.5, 40.5], "expected": 40.5}, {"input": [-1.5, 41.0], "expected": 41.0}, {"input": [-1.5, 41.5], "expected": 41.5}, {"input": [-1.5, 42.0], "expected": 42.0}, {"input": [-1.5, 42.5], "expected": 42.5}, {"input": [-1.5, 43.0], "expected": 43.0}, {"input": [-1.5, 43.5], "expected": 43.5}, {"input": [-1.5, 44.0], "expected": 44.0}, {"input": [-1.5, 44.5], "expected": 44.5}, {"input": [-1.5, 45.0], "expected": 45.0}, {"input": [-1.5, 45.5], "expected": 45.5}, {"input": [-1.5, 46.0], "expected": 46.0}, {"input": [-1.5, 46.5], "expected": 46.5}, {"input": [-1.5, 47.0], "expected": 47.0}, {"input": [-1.5, 47.5], "expected": 47.5}, {"input": [-1.5, 48.0], "expected": 48.0}, {"input": [-1.5, 48.5], "expected": 48.5}, {"input": [-1.5, 49.0], "expected": 49.0}, {"input": [-1.5, 49.5], "expected": 49.5}, {"input": [-1.5, 50.0], "expected": 50.0}, {"input": [-1.5, 50.5], "expected": 50.5}, {"input": [-1.5, 51.0], "expected": 51.0}, {"input": [-1.5, 51.5], "expected": 51.5}, {"input": [-1.5, 52.0], "expected": 52.0}, {"input": [-1.5, 52.5], "expected": 52.5}, {"input": [-1.5, 53.0], "expected": 53.0}, {"input": [-1.5, 53.5], "expected": 53.5}, {"input": [-1.5, 54.0], "expected": 54.0}, {"input": [-1.5, 54.5], "expected": 54.5}, {"input": [-1.5, 55.0], "expected": 55.0}, {"input": [-1.5, 55.5], "expected": 55.5}, {"input": [-1.5, 56.0], "expected": 56.0}, {"input": [-1.5, 56.5], "expected": 56.5}, {"input": [-1.5, 57.0], "expected": 57.0}, {"input": [-1.5, 57.5], "expected": 57.5}, {"input": [-1.5, 58.0], "expected": 58.0}, {"input": [-1.5, 58.5], "expected": 58.5}, {"input": [-1.5, 59.0], "expected": 59.0}, {"input": [-1.5, 59.5], "expected": 59.5}, {"input": [-1.5, 60.0], "expected": 60.0}, {"input": [-1.5, 60.5], "expected": 60.5}, {"input": [-1.5, 61.0], "expected": 61.0}, {"input": [-1.5, 61.5], "expected": 61.5}, {"input": [-1.5, 62.0], "expected": 62.0}, {"input": [-1.5, 62.5], "expected": 62.5}, {"input": [-1.5, 63.0], "expected": 63.0}, {"input": [-1.5, 63.5], "expected": 63.5}, {"input": [-1.5, 64.0], "expected": 64.0}, {"input": [-1.5, 64.5], "expected": 64.5}, {"input": [-1.5, 65.0], "expected": 65.0}, {"input": [-1.5, 65.5], "expected": 65.5}, {"input": [-1.5, 66.0], "expected": 66.0}, {"input": [-1.5, 66.5], "expected": 66.5}, {"input": [-1.5, 67.0], "expected": 67.0}, {"input": [-1.5, 67.5], "expected": 67.5}, {"input": [-1.5, 68.0], "expected": 68.0}, {"input": [-1.5, 68.5], "expected": 68.5}, {"input": [-1.5, 69.0], "expected": 69.0}, {"input": [-1.5, 69.5], "expected": 69.5}, {"input": [-1.5, 70.0], "expected": 70.0}, {"input": [-1.5, 70.5], "expected": 70.5}, {"input": [-1.5, 71.0], "expected": 71.0}, {"input": [-1.5, 71.5], "expected": 71.5}, {"input": [-1.5, 72.0], "expected": 72.0}, {"input": [-1.5, 72.5], "expected": 72.5}, {"input": [-1.5, 73.0], "expected": 73.0}, {"input": [-1.5, 73.5], "expected": 73.5}, {"input": [-1.5, 74.0], "expected": 74.0}, {"input": [-1.5, 74.5], "expected": 74.5}, {"input": [-1.5, 75.0], "expected": 75.0}, {"input": [-1.5, 75.5], "expected": 75.5}, {"input": [-1.5, 76.0], "expected": 76.0}, {"input": [-1.5, 76.5], "expected": 76.5}, {"input": [-1.5, 77.0], "expected": 77.0}, {"input": [-1.5, 77.5], "expected": 77.5}, {"input": [-1.5, 78.0], "expected": 78.0}, {"input": [-1.5, 78.5], "expected": 78.5}, {"input": [-1.5, 79.0], "expected": 79.0}, {"input": [-1.5, 79.5], "expected": 79.5}, {"input": [-1.5, 80.0], "expected": 80.0}, {"input": [-1.5, 80.5], "expected": 80.5}, {"input": [-1.5, 81.0], "expected": 81.0}, {"input": [-1.5, 81.5], "expected": 81.5}, {"input": [-1.5, 82.0], "expected": 82.0}, {"input": [-1.5, 82.5], "expected": 82.5}, {"input": [-1.5, 83.0], "expected": 83.0}, {"input": [-1.5, 83.5], "expected": 83.5}, {"input": [-1.5, 84.0], "expected": 84.0}, {"input": [-1.5, 84.5], "expected": 84.5}, {"input": [-1.5, 85.0], "expected": 85.0}, {"input": [-1.5, 85.5], "expected": 85.5}, {"input": [-1.5, 86.0], "expected": 86.0}, {"input": [-1.5, 86.5], "expected": 86.5}, {"input": [-1.5, 87.0], "expected": 87.0}, {"input": [-1.5, 87.5], "expected": 87.5}, {"input": [-1.5, 88.0], "expected": 88.0}, {"input": [-1.5, 88.5], "expected": 88.5}, {"input": [-1.5, 89.0], "expected": 89.0}, {"input": [-1.5, 89.5], "expected": 89.5}, {"input": [-1.5, 90.0], "expected": 90.0}, {"input": [-1.5, 90.5], "expected": 90.5}, {"input": [-1.5, 91.0], "expected": 91.0}, {"input": [-1.5, 91.5], "expected": 91.5}, {"input": [-1.5, 92.0], "expected": 92.0}, {"input": [-1.5, 92.5], "expected": 92.5}, {"input": [-1.5, 93.0], "expected": 93.0}, {"input": [-1.5, 93.5], "expected": 93.5}, {"input": [-1.5, 94.0], "expected": 94.0}, {"input": [-1.5, 94.5], "expected": 94.5}, {"input": [-1.5, 95.0], "expected": 95.0}, {"input": [-1.5, 95.5], "expected": 95.5}, {"input": [-1.5, 96.0], "expected": 96.0}, {"input": [-1.5, 96.5], "expected": 96.5}, {"input": [-1.5, 97.0], "expected": 97.0}, {"input": [-1.5, 97.5], "expected": 97.5}, {"input": [-1.5, 98.0], "expected": 98.0}, {"input": [-1.5, 98.5], "expected": 98.5}, {"input": [-1.5, 99.0], "expected": 99.0}, {"input": [-1.5, 99.5], "expected": 99.5}, {"input": [-1.0, -100.0], "expected": -1.0}, {"input": [-1.0, -99.5], "expected": -1.0}, {"input": [-1.0, -99.0], "expected": -1.0}, {"input": [-1.0, -98.5], "expected": -1.0}, {"input": [-1.0, -98.0], "expected": -1.0}, {"input": [-1.0, -97.5], "expected": -1.0}, {"input": [-1.0, -97.0], "expected": -1.0}, {"input": [-1.0, -96.5], "expected": -1.0}, {"input": [-1.0, -96.0], "expected": -1.0}, {"input": [-1.0, -95.5], "expected": -1.0}, {"input": [-1.0, -95.0], "expected": -1.0}, {"input": [-1.0, -94.5], "expected": -1.0}, {"input": [-1.0, -94.0], "expected": -1.0}, {"input": [-1.0, -93.5], "expected": -1.0}, {"input": [-1.0, -93.0], "expected": -1.0}, {"input": [-1.0, -92.5], "expected": -1.0}, {"input": [-1.0, -92.0], "expected": -1.0}, {"input": [-1.0, -91.5], "expected": -1.0}, {"input": [-1.0, -91.0], "expected": -1.0}, {"input": [-1.0, -90.5], "expected": -1.0}, {"input": [-1.0, -90.0], "expected": -1.0}, {"input": [-1.0, -89.5], "expected": -1.0}, {"input": [-1.0, -89.0], "expected": -1.0}, {"input": [-1.0, -88.5], "expected": -1.0}, {"input": [-1.0, -88.0], "expected": -1.0}, {"input": [-1.0, -87.5], "expected": -1.0}, {"input": [-1.0, -87.0], "expected": -1.0}, {"input": [-1.0, -86.5], "expected": -1.0}, {"input": [-1.0, -86.0], "expected": -1.0}, {"input": [-1.0, -85.5], "expected": -1.0}, {"input": [-1.0, -85.0], "expected": -1.0}, {"input": [-1.0, -84.5], "expected": -1.0}, {"input": [-1.0, -84.0], "expected": -1.0}, {"input": [-1.0, -83.5], "expected": -1.0}, {"input": [-1.0, -83.0], "expected": -1.0}, {"input": [-1.0, -82.5], "expected": -1.0}, {"input": [-1.0, -82.0], "expected": -1.0}, {"input": [-1.0, -81.5], "expected": -1.0}, {"input": [-1.0, -81.0], "expected": -1.0}, {"input": [-1.0, -80.5], "expected": -1.0}, {"input": [-1.0, -80.0], "expected": -1.0}, {"input": [-1.0, -79.5], "expected": -1.0}, {"input": [-1.0, -79.0], "expected": -1.0}, {"input": [-1.0, -78.5], "expected": -1.0}, {"input": [-1.0, -78.0], "expected": -1.0}, {"input": [-1.0, -77.5], "expected": -1.0}, {"input": [-1.0, -77.0], "expected": -1.0}, {"input": [-1.0, -76.5], "expected": -1.0}, {"input": [-1.0, -76.0], "expected": -1.0}, {"input": [-1.0, -75.5], "expected": -1.0}, {"input": [-1.0, -75.0], "expected": -1.0}, {"input": [-1.0, -74.5], "expected": -1.0}, {"input": [-1.0, -74.0], "expected": -1.0}, {"input": [-1.0, -73.5], "expected": -1.0}, {"input": [-1.0, -73.0], "expected": -1.0}, {"input": [-1.0, -72.5], "expected": -1.0}, {"input": [-1.0, -72.0], "expected": -1.0}, {"input": [-1.0, -71.5], "expected": -1.0}, {"input": [-1.0, -71.0], "expected": -1.0}, {"input": [-1.0, -70.5], "expected": -1.0}, {"input": [-1.0, -70.0], "expected": -1.0}, {"input": [-1.0, -69.5], "expected": -1.0}, {"input": [-1.0, -69.0], "expected": -1.0}, {"input": [-1.0, -68.5], "expected": -1.0}, {"input": [-1.0, -68.0], "expected": -1.0}, {"input": [-1.0, -67.5], "expected": -1.0}, {"input": [-1.0, -67.0], "expected": -1.0}, {"input": [-1.0, -66.5], "expected": -1.0}, {"input": [-1.0, -66.0], "expected": -1.0}, {"input": [-1.0, -65.5], "expected": -1.0}, {"input": [-1.0, -65.0], "expected": -1.0}, {"input": [-1.0, -64.5], "expected": -1.0}, {"input": [-1.0, -64.0], "expected": -1.0}, {"input": [-1.0, -63.5], "expected": -1.0}, {"input": [-1.0, -63.0], "expected": -1.0}, {"input": [-1.0, -62.5], "expected": -1.0}, {"input": [-1.0, -62.0], "expected": -1.0}, {"input": [-1.0, -61.5], "expected": -1.0}, {"input": [-1.0, -61.0], "expected": -1.0}, {"input": [-1.0, -60.5], "expected": -1.0}, {"input": [-1.0, -60.0], "expected": -1.0}, {"input": [-1.0, -59.5], "expected": -1.0}, {"input": [-1.0, -59.0], "expected": -1.0}, {"input": [-1.0, -58.5], "expected": -1.0}, {"input": [-1.0, -58.0], "expected": -1.0}, {"input": [-1.0, -57.5], "expected": -1.0}, {"input": [-1.0, -57.0], "expected": -1.0}, {"input": [-1.0, -56.5], "expected": -1.0}, {"input": [-1.0, -56.0], "expected": -1.0}, {"input": [-1.0, -55.5], "expected": -1.0}, {"input": [-1.0, -55.0], "expected": -1.0}, {"input": [-1.0, -54.5], "expected": -1.0}, {"input": [-1.0, -54.0], "expected": -1.0}, {"input": [-1.0, -53.5], "expected": -1.0}, {"input": [-1.0, -53.0], "expected": -1.0}, {"input": [-1.0, -52.5], "expected": -1.0}, {"input": [-1.0, -52.0], "expected": -1.0}, {"input": [-1.0, -51.5], "expected": -1.0}, {"input": [-1.0, -51.0], "expected": -1.0}, {"input": [-1.0, -50.5], "expected": -1.0}, {"input": [-1.0, -50.0], "expected": -1.0}, {"input": [-1.0, -49.5], "expected": -1.0}, {"input": [-1.0, -49.0], "expected": -1.0}, {"input": [-1.0, -48.5], "expected": -1.0}, {"input": [-1.0, -48.0], "expected": -1.0}, {"input": [-1.0, -47.5], "expected": -1.0}, {"input": [-1.0, -47.0], "expected": -1.0}, {"input": [-1.0, -46.5], "expected": -1.0}, {"input": [-1.0, -46.0], "expected": -1.0}, {"input": [-1.0, -45.5], "expected": -1.0}, {"input": [-1.0, -45.0], "expected": -1.0}, {"input": [-1.0, -44.5], "expected": -1.0}, {"input": [-1.0, -44.0], "expected": -1.0}, {"input": [-1.0, -43.5], "expected": -1.0}, {"input": [-1.0, -43.0], "expected": -1.0}, {"input": [-1.0, -42.5], "expected": -1.0}, {"input": [-1.0, -42.0], "expected": -1.0}, {"input": [-1.0, -41.5], "expected": -1.0}, {"input": [-1.0, -41.0], "expected": -1.0}, {"input": [-1.0, -40.5], "expected": -1.0}, {"input": [-1.0, -40.0], "expected": -1.0}, {"input": [-1.0, -39.5], "expected": -1.0}, {"input": [-1.0, -39.0], "expected": -1.0}, {"input": [-1.0, -38.5], "expected": -1.0}, {"input": [-1.0, -38.0], "expected": -0.9999999999999999}, {"input": [-1.0, -37.5], "expected": -0.9999999999999999}, {"input": [-1.0, -37.0], "expected": -0.9999999999999998}, {"input": [-1.0, -36.5], "expected": -0.9999999999999997}, {"input": [-1.0, -36.0], "expected": -0.9999999999999993}, {"input": [-1.0, -35.5], "expected": -0.999999999999999}, {"input": [-1.0, -35.0], "expected": -0.9999999999999983}, {"input": [-1.0, -34.5], "expected": -0.9999999999999972}, {"input": [-1.0, -34.0], "expected": -0.9999999999999953}, {"input": [-1.0, -33.5], "expected": -0.9999999999999923}, {"input": [-1.0, -33.0], "expected": -0.9999999999999873}, {"input": [-1.0, -32.5], "expected": -0.9999999999999791}, {"input": [-1.0, -32.0], "expected": -0.9999999999999656}, {"input": [-1.0, -31.5], "expected": -0.9999999999999433}, {"input": [-1.0, -31.0], "expected": -0.9999999999999064}, {"input": [-1.0, -30.5], "expected": -0.9999999999998457}, {"input": [-1.0, -30.0], "expected": -0.9999999999997456}, {"input": [-1.0, -29.5], "expected": -0.9999999999995807}, {"input": [-1.0, -29.0], "expected": -0.9999999999993086}, {"input": [-1.0, -28.5], "expected": -0.99999999999886}, {"input": [-1.0, -28.0], "expected": -0.9999999999981205}, {"input": [-1.0, -27.5], "expected": -0.9999999999969011}, {"input": [-1.0, -27.0], "expected": -0.9999999999948909}, {"input": [-1.0, -26.5], "expected": -0.9999999999915765}, {"input": [-1.0, -26.0], "expected": -0.9999999999861121}, {"input": [-1.0, -25.5], "expected": -0.9999999999771026}, {"input": [-1.0, -25.0], "expected": -0.9999999999622486}, {"input": [-1.0, -24.5], "expected": -0.9999999999377586}, {"input": [-1.0, -24.0], "expected": -0.9999999998973812}, {"input": [-1.0, -23.5], "expected": -0.9999999998308102}, {"input": [-1.0, -23.0], "expected": -0.9999999997210532}, {"input": [-1.0, -22.5], "expected": -0.9999999995400944}, {"input": [-1.0, -22.0], "expected": -0.999999999241744}, {"input": [-1.0, -21.5], "expected": -0.9999999987498471}, {"input": [-1.0, -21.0], "expected": -0.9999999979388464}, {"input": [-1.0, -20.5], "expected": -0.9999999966017322}, {"input": [-1.0, -20.0], "expected": -0.9999999943972036}, {"input": [-1.0, -19.5], "expected": -0.9999999907625504}, {"input": [-1.0, -19.0], "expected": -0.9999999847700204}, {"input": [-1.0, -18.5], "expected": -0.9999999748900088}, {"input": [-1.0, -18.0], "expected": -0.9999999586006236}, {"input": [-1.0, -17.5], "expected": -0.9999999317439686}, {"input": [-1.0, -17.0], "expected": -0.9999998874648316}, {"input": [-1.0, -16.5], "expected": -0.9999998144608809}, {"input": [-1.0, -16.0], "expected": -0.9999996940977263}, {"input": [-1.0, -15.5], "expected": -0.9999994956524646}, {"input": [-1.0, -15.0], "expected": -0.9999991684716266}, {"input": [-1.0, -14.5], "expected": -0.9999986290418533}, {"input": [-1.0, -14.0], "expected": -0.9999977396731475}, {"input": [-1.0, -13.5], "expected": -0.9999962733537718}, {"input": [-1.0, -13.0], "expected": -0.9999938558065222}, {"input": [-1.0, -12.5], "expected": -0.9999898699577104}, {"input": [-1.0, -12.0], "expected": -0.9999832984386816}, {"input": [-1.0, -11.5], "expected": -0.9999724639297713}, {"input": [-1.0, -11.0], "expected": -0.9999546011007832}, {"input": [-1.0, -10.5], "expected": -0.9999251509713707}, {"input": [-1.0, -10.0], "expected": -0.9998765978102767}, {"input": [-1.0, -9.5], "expected": -0.9997965523278706}, {"input": [-1.0, -9.0], "expected": -0.9996645936271042}, {"input": [-1.0, -8.5], "expected": -0.9994470685246392}, {"input": [-1.0, -8.0], "expected": -0.9990885335462257}, {"input": [-1.0, -7.5], "expected": -0.9984976898402457}, {"input": [-1.0, -7.0], "expected": -0.9975243148622696}, {"input": [-1.0, -6.5], "expected": -0.9959215567294293}, {"input": [-1.0, -6.0], "expected": -0.993284651510882}, {"input": [-1.0, -5.5], "expected": -0.9889522551514062}, {"input": [-1.0, -5.0], "expected": -0.9818500720821902}, {"input": [-1.0, -4.5], "expected": -0.9702495817273794}, {"input": [-1.0, -4.0], "expected": -0.951412648426258}, {"input": [-1.0, -3.5], "expected": -0.9211102657074504}, {"input": [-1.0, -3.0], "expected": -0.8730719889570275}, {"input": [-1.0, -2.5], "expected": -0.7985867220172476}, {"input": [-1.0, -2.0], "expected": -0.6867383124817772}, {"input": [-1.0, -1.5], "expected": -0.5259230158198933}, {"input": [-1.0, -1.0], "expected": -0.3068528194400547}, {"input": [-1.0, -0.5], "expected": -0.025923015819893314}, {"input": [-1.0, 0.0], "expected": 0.31326168751822286}, {"input": [-1.0, 0.5], "expected": 0.7014132779827524}, {"input": [-1.0, 1.0], "expected": 1.1269280110429725}, {"input": [-1.0, 1.5], "expected": 1.5788897342925496}, {"input": [-1.0, 2.0], "expected": 2.048587351573742}, {"input": [-1.0, 2.5], "expected": 2.5297504182726205}, {"input": [-1.0, 3.0], "expected": 3.01814992791781}, {"input": [-1.0, 3.5], "expected": 3.511047744848594}, {"input": [-1.0, 4.0], "expected": 4.006715348489118}, {"input": [-1.0, 4.5], "expected": 4.504078443270571}, {"input": [-1.0, 5.0], "expected": 5.00247568513773}, {"input": [-1.0, 5.5], "expected": 5.501502310159754}, {"input": [-1.0, 6.0], "expected": 6.000911466453775}, {"input": [-1.0, 6.5], "expected": 6.500552931475361}, {"input": [-1.0, 7.0], "expected": 7.000335406372896}, {"input": [-1.0, 7.5], "expected": 7.5002034476721295}, {"input": [-1.0, 8.0], "expected": 8.000123402189724}, {"input": [-1.0, 8.5], "expected": 8.500074849028628}, {"input": [-1.0, 9.0], "expected": 9.000045398899218}, {"input": [-1.0, 9.5], "expected": 9.50002753607023}, {"input": [-1.0, 10.0], "expected": 10.000016701561318}, {"input": [-1.0, 10.5], "expected": 10.50001013004229}, {"input": [-1.0, 11.0], "expected": 11.000006144193478}, {"input": [-1.0, 11.5], "expected": 11.500003726646229}, {"input": [-1.0, 12.0], "expected": 12.000002260326852}, {"input": [-1.0, 12.5], "expected": 12.500001370958147}, {"input": [-1.0, 13.0], "expected": 13.000000831528373}, {"input": [-1.0, 13.5], "expected": 13.500000504347536}, {"input": [-1.0, 14.0], "expected": 14.000000305902274}, {"input": [-1.0, 14.5], "expected": 14.500000185539118}, {"input": [-1.0, 15.0], "expected": 15.000000112535169}, {"input": [-1.0, 15.5], "expected": 15.500000068256032}, {"input": [-1.0, 16.0], "expected": 16.000000041399375}, {"input": [-1.0, 16.5], "expected": 16.50000002510999}, {"input": [-1.0, 17.0], "expected": 17.00000001522998}, {"input": [-1.0, 17.5], "expected": 17.50000000923745}, {"input": [-1.0, 18.0], "expected": 18.000000005602796}, {"input": [-1.0, 18.5], "expected": 18.500000003398267}, {"input": [-1.0, 19.0], "expected": 19.000000002061153}, {"input": [-1.0, 19.5], "expected": 19.500000001250154}, {"input": [-1.0, 20.0], "expected": 20.000000000758256}, {"input": [-1.0, 20.5], "expected": 20.500000000459906}, {"input": [-1.0, 21.0], "expected": 21.00000000027895}, {"input": [-1.0, 21.5], "expected": 21.50000000016919}, {"input": [-1.0, 22.0], "expected": 22.00000000010262}, {"input": [-1.0, 22.5], "expected": 22.50000000006224}, {"input": [-1.0, 23.0], "expected": 23.00000000003775}, {"input": [-1.0, 23.5], "expected": 23.500000000022897}, {"input": [-1.0, 24.0], "expected": 24.000000000013888}, {"input": [-1.0, 24.5], "expected": 24.500000000008423}, {"input": [-1.0, 25.0], "expected": 25.00000000000511}, {"input": [-1.0, 25.5], "expected": 25.500000000003098}, {"input": [-1.0, 26.0], "expected": 26.00000000000188}, {"input": [-1.0, 26.5], "expected": 26.50000000000114}, {"input": [-1.0, 27.0], "expected": 27.000000000000693}, {"input": [-1.0, 27.5], "expected": 27.50000000000042}, {"input": [-1.0, 28.0], "expected": 28.000000000000256}, {"input": [-1.0, 28.5], "expected": 28.500000000000153}, {"input": [-1.0, 29.0], "expected": 29.000000000000092}, {"input": [-1.0, 29.5], "expected": 29.500000000000057}, {"input": [-1.0, 30.0], "expected": 30.000000000000036}, {"input": [-1.0, 30.5], "expected": 30.50000000000002}, {"input": [-1.0, 31.0], "expected": 31.000000000000014}, {"input": [-1.0, 31.5], "expected": 31.500000000000007}, {"input": [-1.0, 32.0], "expected": 32.00000000000001}, {"input": [-1.0, 32.5], "expected": 32.5}, {"input": [-1.0, 33.0], "expected": 33.0}, {"input": [-1.0, 33.5], "expected": 33.5}, {"input": [-1.0, 34.0], "expected": 34.0}, {"input": [-1.0, 34.5], "expected": 34.5}, {"input": [-1.0, 35.0], "expected": 35.0}, {"input": [-1.0, 35.5], "expected": 35.5}, {"input": [-1.0, 36.0], "expected": 36.0}, {"input": [-1.0, 36.5], "expected": 36.5}, {"input": [-1.0, 37.0], "expected": 37.0}, {"input": [-1.0, 37.5], "expected": 37.5}, {"input": [-1.0, 38.0], "expected": 38.0}, {"input": [-1.0, 38.5], "expected": 38.5}, {"input": [-1.0, 39.0], "expected": 39.0}, {"input": [-1.0, 39.5], "expected": 39.5}, {"input": [-1.0, 40.0], "expected": 40.0}, {"input": [-1.0, 40.5], "expected": 40.5}, {"input": [-1.0, 41.0], "expected": 41.0}, {"input": [-1.0, 41.5], "expected": 41.5}, {"input": [-1.0, 42.0], "expected": 42.0}, {"input": [-1.0, 42.5], "expected": 42.5}, {"input": [-1.0, 43.0], "expected": 43.0}, {"input": [-1.0, 43.5], "expected": 43.5}, {"input": [-1.0, 44.0], "expected": 44.0}, {"input": [-1.0, 44.5], "expected": 44.5}, {"input": [-1.0, 45.0], "expected": 45.0}, {"input": [-1.0, 45.5], "expected": 45.5}, {"input": [-1.0, 46.0], "expected": 46.0}, {"input": [-1.0, 46.5], "expected": 46.5}, {"input": [-1.0, 47.0], "expected": 47.0}, {"input": [-1.0, 47.5], "expected": 47.5}, {"input": [-1.0, 48.0], "expected": 48.0}, {"input": [-1.0, 48.5], "expected": 48.5}, {"input": [-1.0, 49.0], "expected": 49.0}, {"input": [-1.0, 49.5], "expected": 49.5}, {"input": [-1.0, 50.0], "expected": 50.0}, {"input": [-1.0, 50.5], "expected": 50.5}, {"input": [-1.0, 51.0], "expected": 51.0}, {"input": [-1.0, 51.5], "expected": 51.5}, {"input": [-1.0, 52.0], "expected": 52.0}, {"input": [-1.0, 52.5], "expected": 52.5}, {"input": [-1.0, 53.0], "expected": 53.0}, {"input": [-1.0, 53.5], "expected": 53.5}, {"input": [-1.0, 54.0], "expected": 54.0}, {"input": [-1.0, 54.5], "expected": 54.5}, {"input": [-1.0, 55.0], "expected": 55.0}, {"input": [-1.0, 55.5], "expected": 55.5}, {"input": [-1.0, 56.0], "expected": 56.0}, {"input": [-1.0, 56.5], "expected": 56.5}, {"input": [-1.0, 57.0], "expected": 57.0}, {"input": [-1.0, 57.5], "expected": 57.5}, {"input": [-1.0, 58.0], "expected": 58.0}, {"input": [-1.0, 58.5], "expected": 58.5}, {"input": [-1.0, 59.0], "expected": 59.0}, {"input": [-1.0, 59.5], "expected": 59.5}, {"input": [-1.0, 60.0], "expected": 60.0}, {"input": [-1.0, 60.5], "expected": 60.5}, {"input": [-1.0, 61.0], "expected": 61.0}, {"input": [-1.0, 61.5], "expected": 61.5}, {"input": [-1.0, 62.0], "expected": 62.0}, {"input": [-1.0, 62.5], "expected": 62.5}, {"input": [-1.0, 63.0], "expected": 63.0}, {"input": [-1.0, 63.5], "expected": 63.5}, {"input": [-1.0, 64.0], "expected": 64.0}, {"input": [-1.0, 64.5], "expected": 64.5}, {"input": [-1.0, 65.0], "expected": 65.0}, {"input": [-1.0, 65.5], "expected": 65.5}, {"input": [-1.0, 66.0], "expected": 66.0}, {"input": [-1.0, 66.5], "expected": 66.5}, {"input": [-1.0, 67.0], "expected": 67.0}, {"input": [-1.0, 67.5], "expected": 67.5}, {"input": [-1.0, 68.0], "expected": 68.0}, {"input": [-1.0, 68.5], "expected": 68.5}, {"input": [-1.0, 69.0], "expected": 69.0}, {"input": [-1.0, 69.5], "expected": 69.5}, {"input": [-1.0, 70.0], "expected": 70.0}, {"input": [-1.0, 70.5], "expected": 70.5}, {"input": [-1.0, 71.0], "expected": 71.0}, {"input": [-1.0, 71.5], "expected": 71.5}, {"input": [-1.0, 72.0], "expected": 72.0}, {"input": [-1.0, 72.5], "expected": 72.5}, {"input": [-1.0, 73.0], "expected": 73.0}, {"input": [-1.0, 73.5], "expected": 73.5}, {"input": [-1.0, 74.0], "expected": 74.0}, {"input": [-1.0, 74.5], "expected": 74.5}, {"input": [-1.0, 75.0], "expected": 75.0}, {"input": [-1.0, 75.5], "expected": 75.5}, {"input": [-1.0, 76.0], "expected": 76.0}, {"input": [-1.0, 76.5], "expected": 76.5}, {"input": [-1.0, 77.0], "expected": 77.0}, {"input": [-1.0, 77.5], "expected": 77.5}, {"input": [-1.0, 78.0], "expected": 78.0}, {"input": [-1.0, 78.5], "expected": 78.5}, {"input": [-1.0, 79.0], "expected": 79.0}, {"input": [-1.0, 79.5], "expected": 79.5}, {"input": [-1.0, 80.0], "expected": 80.0}, {"input": [-1.0, 80.5], "expected": 80.5}, {"input": [-1.0, 81.0], "expected": 81.0}, {"input": [-1.0, 81.5], "expected": 81.5}, {"input": [-1.0, 82.0], "expected": 82.0}, {"input": [-1.0, 82.5], "expected": 82.5}, {"input": [-1.0, 83.0], "expected": 83.0}, {"input": [-1.0, 83.5], "expected": 83.5}, {"input": [-1.0, 84.0], "expected": 84.0}, {"input": [-1.0, 84.5], "expected": 84.5}, {"input": [-1.0, 85.0], "expected": 85.0}, {"input": [-1.0, 85.5], "expected": 85.5}, {"input": [-1.0, 86.0], "expected": 86.0}, {"input": [-1.0, 86.5], "expected": 86.5}, {"input": [-1.0, 87.0], "expected": 87.0}, {"input": [-1.0, 87.5], "expected": 87.5}, {"input": [-1.0, 88.0], "expected": 88.0}, {"input": [-1.0, 88.5], "expected": 88.5}, {"input": [-1.0, 89.0], "expected": 89.0}, {"input": [-1.0, 89.5], "expected": 89.5}, {"input": [-1.0, 90.0], "expected": 90.0}, {"input": [-1.0, 90.5], "expected": 90.5}, {"input": [-1.0, 91.0], "expected": 91.0}, {"input": [-1.0, 91.5], "expected": 91.5}, {"input": [-1.0, 92.0], "expected": 92.0}, {"input": [-1.0, 92.5], "expected": 92.5}, {"input": [-1.0, 93.0], "expected": 93.0}, {"input": [-1.0, 93.5], "expected": 93.5}, {"input": [-1.0, 94.0], "expected": 94.0}, {"input": [-1.0, 94.5], "expected": 94.5}, {"input": [-1.0, 95.0], "expected": 95.0}, {"input": [-1.0, 95.5], "expected": 95.5}, {"input": [-1.0, 96.0], "expected": 96.0}, {"input": [-1.0, 96.5], "expected": 96.5}, {"input": [-1.0, 97.0], "expected": 97.0}, {"input": [-1.0, 97.5], "expected": 97.5}, {"input": [-1.0, 98.0], "expected": 98.0}, {"input": [-1.0, 98.5], "expected": 98.5}, {"input": [-1.0, 99.0], "expected": 99.0}, {"input": [-1.0, 99.5], "expected": 99.5}, {"input": [-0.5, -100.0], "expected": -0.5}, {"input": [-0.5, -99.5], "expected": -0.5}, {"input": [-0.5, -99.0], "expected": -0.5}, {"input": [-0.5, -98.5], "expected": -0.5}, {"input": [-0.5, -98.0], "expected": -0.5}, {"input": [-0.5, -97.5], "expected": -0.5}, {"input": [-0.5, -97.0], "expected": -0.5}, {"input": [-0.5, -96.5], "expected": -0.5}, {"input": [-0.5, -96.0], "expected": -0.5}, {"input": [-0.5, -95.5], "expected": -0.5}, {"input": [-0.5, -95.0], "expected": -0.5}, {"input": [-0.5, -94.5], "expected": -0.5}, {"input": [-0.5, -94.0], "expected": -0.5}, {"input": [-0.5, -93.5], "expected": -0.5}, {"input": [-0.5, -93.0], "expected": -0.5}, {"input": [-0.5, -92.5], "expected": -0.5}, {"input": [-0.5, -92.0], "expected": -0.5}, {"input": [-0.5, -91.5], "expected": -0.5}, {"input": [-0.5, -91.0], "expected": -0.5}, {"input": [-0.5, -90.5], "expected": -0.5}, {"input": [-0.5, -90.0], "expected": -0.5}, {"input": [-0.5, -89.5], "expected": -0.5}, {"input": [-0.5, -89.0], "expected": -0.5}, {"input": [-0.5, -88.5], "expected": -0.5}, {"input": [-0.5, -88.0], "expected": -0.5}, {"input": [-0.5, -87.5], "expected": -0.5}, {"input": [-0.5, -87.0], "expected": -0.5}, {"input": [-0.5, -86.5], "expected": -0.5}, {"input": [-0.5, -86.0], "expected": -0.5}, {"input": [-0.5, -85.5], "expected": -0.5}, {"input": [-0.5, -85.0], "expected": -0.5}, {"input": [-0.5, -84.5], "expected": -0.5}, {"input": [-0.5, -84.0], "expected": -0.5}, {"input": [-0.5, -83.5], "expected": -0.5}, {"input": [-0.5, -83.0], "expected": -0.5}, {"input": [-0.5, -82.5], "expected": -0.5}, {"input": [-0.5, -82.0], "expected": -0.5}, {"input": [-0.5, -81.5], "expected": -0.5}, {"input": [-0.5, -81.0], "expected": -0.5}, {"input": [-0.5, -80.5], "expected": -0.5}, {"input": [-0.5, -80.0], "expected": -0.5}, {"input": [-0.5, -79.5], "expected": -0.5}, {"input": [-0.5, -79.0], "expected": -0.5}, {"input": [-0.5, -78.5], "expected": -0.5}, {"input": [-0.5, -78.0], "expected": -0.5}, {"input": [-0.5, -77.5], "expected": -0.5}, {"input": [-0.5, -77.0], "expected": -0.5}, {"input": [-0.5, -76.5], "expected": -0.5}, {"input": [-0.5, -76.0], "expected": -0.5}, {"input": [-0.5, -75.5], "expected": -0.5}, {"input": [-0.5, -75.0], "expected": -0.5}, {"input": [-0.5, -74.5], "expected": -0.5}, {"input": [-0.5, -74.0], "expected": -0.5}, {"input": [-0.5, -73.5], "expected": -0.5}, {"input": [-0.5, -73.0], "expected": -0.5}, {"input": [-0.5, -72.5], "expected": -0.5}, {"input": [-0.5, -72.0], "expected": -0.5}, {"input": [-0.5, -71.5], "expected": -0.5}, {"input": [-0.5, -71.0], "expected": -0.5}, {"input": [-0.5, -70.5], "expected": -0.5}, {"input": [-0.5, -70.0], "expected": -0.5}, {"input": [-0.5, -69.5], "expected": -0.5}, {"input": [-0.5, -69.0], "expected": -0.5}, {"input": [-0.5, -68.5], "expected": -0.5}, {"input": [-0.5, -68.0], "expected": -0.5}, {"input": [-0.5, -67.5], "expected": -0.5}, {"input": [-0.5, -67.0], "expected": -0.5}, {"input": [-0.5, -66.5], "expected": -0.5}, {"input": [-0.5, -66.0], "expected": -0.5}, {"input": [-0.5, -65.5], "expected": -0.5}, {"input": [-0.5, -65.0], "expected": -0.5}, {"input": [-0.5, -64.5], "expected": -0.5}, {"input": [-0.5, -64.0], "expected": -0.5}, {"input": [-0.5, -63.5], "expected": -0.5}, {"input": [-0.5, -63.0], "expected": -0.5}, {"input": [-0.5, -62.5], "expected": -0.5}, {"input": [-0.5, -62.0], "expected": -0.5}, {"input": [-0.5, -61.5], "expected": -0.5}, {"input": [-0.5, -61.0], "expected": -0.5}, {"input": [-0.5, -60.5], "expected": -0.5}, {"input": [-0.5, -60.0], "expected": -0.5}, {"input": [-0.5, -59.5], "expected": -0.5}, {"input": [-0.5, -59.0], "expected": -0.5}, {"input": [-0.5, -58.5], "expected": -0.5}, {"input": [-0.5, -58.0], "expected": -0.5}, {"input": [-0.5, -57.5], "expected": -0.5}, {"input": [-0.5, -57.0], "expected": -0.5}, {"input": [-0.5, -56.5], "expected": -0.5}, {"input": [-0.5, -56.0], "expected": -0.5}, {"input": [-0.5, -55.5], "expected": -0.5}, {"input": [-0.5, -55.0], "expected": -0.5}, {"input": [-0.5, -54.5], "expected": -0.5}, {"input": [-0.5, -54.0], "expected": -0.5}, {"input": [-0.5, -53.5], "expected": -0.5}, {"input": [-0.5, -53.0], "expected": -0.5}, {"input": [-0.5, -52.5], "expected": -0.5}, {"input": [-0.5, -52.0], "expected": -0.5}, {"input": [-0.5, -51.5], "expected": -0.5}, {"input": [-0.5, -51.0], "expected": -0.5}, {"input": [-0.5, -50.5], "expected": -0.5}, {"input": [-0.5, -50.0], "expected": -0.5}, {"input": [-0.5, -49.5], "expected": -0.5}, {"input": [-0.5, -49.0], "expected": -0.5}, {"input": [-0.5, -48.5], "expected": -0.5}, {"input": [-0.5, -48.0], "expected": -0.5}, {"input": [-0.5, -47.5], "expected": -0.5}, {"input": [-0.5, -47.0], "expected": -0.5}, {"input": [-0.5, -46.5], "expected": -0.5}, {"input": [-0.5, -46.0], "expected": -0.5}, {"input": [-0.5, -45.5], "expected": -0.5}, {"input": [-0.5, -45.0], "expected": -0.5}, {"input": [-0.5, -44.5], "expected": -0.5}, {"input": [-0.5, -44.0], "expected": -0.5}, {"input": [-0.5, -43.5], "expected": -0.5}, {"input": [-0.5, -43.0], "expected": -0.5}, {"input": [-0.5, -42.5], "expected": -0.5}, {"input": [-0.5, -42.0], "expected": -0.5}, {"input": [-0.5, -41.5], "expected": -0.5}, {"input": [-0.5, -41.0], "expected": -0.5}, {"input": [-0.5, -40.5], "expected": -0.5}, {"input": [-0.5, -40.0], "expected": -0.5}, {"input": [-0.5, -39.5], "expected": -0.5}, {"input": [-0.5, -39.0], "expected": -0.5}, {"input": [-0.5, -38.5], "expected": -0.49999999999999994}, {"input": [-0.5, -38.0], "expected": -0.49999999999999994}, {"input": [-0.5, -37.5], "expected": -0.4999999999999999}, {"input": [-0.5, -37.0], "expected": -0.49999999999999983}, {"input": [-0.5, -36.5], "expected": -0.4999999999999998}, {"input": [-0.5, -36.0], "expected": -0.4999999999999996}, {"input": [-0.5, -35.5], "expected": -0.4999999999999994}, {"input": [-0.5, -35.0], "expected": -0.49999999999999895}, {"input": [-0.5, -34.5], "expected": -0.4999999999999983}, {"input": [-0.5, -34.0], "expected": -0.49999999999999717}, {"input": [-0.5, -33.5], "expected": -0.49999999999999534}, {"input": [-0.5, -33.0], "expected": -0.49999999999999234}, {"input": [-0.5, -32.5], "expected": -0.49999999999998734}, {"input": [-0.5, -32.0], "expected": -0.49999999999997913}, {"input": [-0.5, -31.5], "expected": -0.4999999999999656}, {"input": [-0.5, -31.0], "expected": -0.49999999999994327}, {"input": [-0.5, -30.5], "expected": -0.4999999999999064}, {"input": [-0.5, -30.0], "expected": -0.49999999999984573}, {"input": [-0.5, -29.5], "expected": -0.49999999999974565}, {"input": [-0.5, -29.0], "expected": -0.4999999999995806}, {"input": [-0.5, -28.5], "expected": -0.49999999999930855}, {"input": [-0.5, -28.0], "expected": -0.49999999999886}, {"input": [-0.5, -27.5], "expected": -0.49999999999812045}, {"input": [-0.5, -27.0], "expected": -0.4999999999969012}, {"input": [-0.5, -26.5], "expected": -0.4999999999948909}, {"input": [-0.5, -26.0], "expected": -0.4999999999915765}, {"input": [-0.5, -25.5], "expected": -0.49999999998611205}, {"input": [-0.5, -25.0], "expected": -0.49999999997710265}, {"input": [-0.5, -24.5], "expected": -0.49999999996224864}, {"input": [-0.5, -24.0], "expected": -0.49999999993775857}, {"input": [-0.5, -23.5], "expected": -0.4999999998973812}, {"input": [-0.5, -23.0], "expected": -0.4999999998308102}, {"input": [-0.5, -22.5], "expected": -0.4999999997210532}, {"input": [-0.5, -22.0], "expected": -0.49999999954009444}, {"input": [-0.5, -21.5], "expected": -0.49999999924174393}, {"input": [-0.5, -21.0], "expected": -0.49999999874984713}, {"input": [-0.5, -20.5], "expected": -0.49999999793884636}, {"input": [-0.5, -20.0], "expected": -0.49999999660173217}, {"input": [-0.5, -19.5], "expected": -0.49999999439720355}, {"input": [-0.5, -19.0], "expected": -0.49999999076255036}, {"input": [-0.5, -18.5], "expected": -0.4999999847700204}, {"input": [-0.5, -18.0], "expected": -0.49999997489000875}, {"input": [-0.5, -17.5], "expected": -0.4999999586006237}, {"input": [-0.5, -17.0], "expected": -0.49999993174396856}, {"input": [-0.5, -16.5], "expected": -0.4999998874648316}, {"input": [-0.5, -16.0], "expected": -0.49999981446088093}, {"input": [-0.5, -15.5], "expected": -0.49999969409772627}, {"input": [-0.5, -15.0], "expected": -0.4999994956524646}, {"input": [-0.5, -14.5], "expected": -0.4999991684716266}, {"input": [-0.5, -14.0], "expected": -0.4999986290418534}, {"input": [-0.5, -13.5], "expected": -0.49999773967314753}, {"input": [-0.5, -13.0], "expected": -0.4999962733537719}, {"input": [-0.5, -12.5], "expected": -0.4999938558065223}, {"input": [-0.5, -12.0], "expected": -0.49998986995771044}, {"input": [-0.5, -11.5], "expected": -0.4999832984386816}, {"input": [-0.5, -11.0], "expected": -0.4999724639297713}, {"input": [-0.5, -10.5], "expected": -0.49995460110078316}, {"input": [-0.5, -10.0], "expected": -0.49992515097137075}, {"input": [-0.5, -9.5], "expected": -0.49987659781027677}, {"input": [-0.5, -9.0], "expected": -0.49979655232787057}, {"input": [-0.5, -8.5], "expected": -0.49966459362710425}, {"input": [-0.5, -8.0], "expected": -0.4994470685246392}, {"input": [-0.5, -7.5], "expected": -0.49908853354622573}, {"input": [-0.5, -7.0], "expected": -0.49849768984024573}, {"input": [-0.5, -6.5], "expected": -0.49752431486226956}, {"input": [-0.5, -6.0], "expected": -0.4959215567294293}, {"input": [-0.5, -5.5], "expected": -0.4932846515108819}, {"input": [-0.5, -5.0], "expected": -0.48895225515140617}, {"input": [-0.5, -4.5], "expected": -0.4818500720821903}, {"input": [-0.5, -4.0], "expected": -0.4702495817273794}, {"input": [-0.5, -3.5], "expected": -0.45141264842625795}, {"input": [-0.5, -3.0], "expected": -0.42111026570745036}, {"input": [-0.5, -2.5], "expected": -0.37307198895702753}, {"input": [-0.5, -2.0], "expected": -0.29858672201724756}, {"input": [-0.5, -1.5], "expected": -0.18673831248177714}, {"input": [-0.5, -1.0], "expected": -0.025923015819893314}, {"input": [-0.5, -0.5], "expected": 0.1931471805599453}, {"input": [-0.5, 0.0], "expected": 0.4740769841801067}, {"input": [-0.5, 0.5], "expected": 0.8132616875182228}, {"input": [-0.5, 1.0], "expected": 1.2014132779827524}, {"input": [-0.5, 1.5], "expected": 1.6269280110429725}, {"input": [-0.5, 2.0], "expected": 2.0788897342925496}, {"input": [-0.5, 2.5], "expected": 2.548587351573742}, {"input": [-0.5, 3.0], "expected": 3.0297504182726205}, {"input": [-0.5, 3.5], "expected": 3.51814992791781}, {"input": [-0.5, 4.0], "expected": 4.011047744848594}, {"input": [-0.5, 4.5], "expected": 4.506715348489118}, {"input": [-0.5, 5.0], "expected": 5.004078443270571}, {"input": [-0.5, 5.5], "expected": 5.50247568513773}, {"input": [-0.5, 6.0], "expected": 6.001502310159754}, {"input": [-0.5, 6.5], "expected": 6.500911466453775}, {"input": [-0.5, 7.0], "expected": 7.000552931475361}, {"input": [-0.5, 7.5], "expected": 7.500335406372896}, {"input": [-0.5, 8.0], "expected": 8.00020344767213}, {"input": [-0.5, 8.5], "expected": 8.500123402189724}, {"input": [-0.5, 9.0], "expected": 9.000074849028628}, {"input": [-0.5, 9.5], "expected": 9.500045398899218}, {"input": [-0.5, 10.0], "expected": 10.00002753607023}, {"input": [-0.5, 10.5], "expected": 10.500016701561318}, {"input": [-0.5, 11.0], "expected": 11.00001013004229}, {"input": [-0.5, 11.5], "expected": 11.500006144193478}, {"input": [-0.5, 12.0], "expected": 12.000003726646229}, {"input": [-0.5, 12.5], "expected": 12.500002260326852}, {"input": [-0.5, 13.0], "expected": 13.000001370958147}, {"input": [-0.5, 13.5], "expected": 13.500000831528373}, {"input": [-0.5, 14.0], "expected": 14.000000504347536}, {"input": [-0.5, 14.5], "expected": 14.500000305902274}, {"input": [-0.5, 15.0], "expected": 15.000000185539118}, {"input": [-0.5, 15.5], "expected": 15.500000112535169}, {"input": [-0.5, 16.0], "expected": 16.000000068256032}, {"input": [-0.5, 16.5], "expected": 16.500000041399375}, {"input": [-0.5, 17.0], "expected": 17.00000002510999}, {"input": [-0.5, 17.5], "expected": 17.50000001522998}, {"input": [-0.5, 18.0], "expected": 18.00000000923745}, {"input": [-0.5, 18.5], "expected": 18.500000005602796}, {"input": [-0.5, 19.0], "expected": 19.000000003398267}, {"input": [-0.5, 19.5], "expected": 19.500000002061153}, {"input": [-0.5, 20.0], "expected": 20.000000001250154}, {"input": [-0.5, 20.5], "expected": 20.500000000758256}, {"input": [-0.5, 21.0], "expected": 21.000000000459906}, {"input": [-0.5, 21.5], "expected": 21.50000000027895}, {"input": [-0.5, 22.0], "expected": 22.00000000016919}, {"input": [-0.5, 22.5], "expected": 22.50000000010262}, {"input": [-0.5, 23.0], "expected": 23.00000000006224}, {"input": [-0.5, 23.5], "expected": 23.50000000003775}, {"input": [-0.5, 24.0], "expected": 24.000000000022897}, {"input": [-0.5, 24.5], "expected": 24.500000000013888}, {"input": [-0.5, 25.0], "expected": 25.000000000008423}, {"input": [-0.5, 25.5], "expected": 25.50000000000511}, {"input": [-0.5, 26.0], "expected": 26.000000000003098}, {"input": [-0.5, 26.5], "expected": 26.50000000000188}, {"input": [-0.5, 27.0], "expected": 27.00000000000114}, {"input": [-0.5, 27.5], "expected": 27.500000000000693}, {"input": [-0.5, 28.0], "expected": 28.00000000000042}, {"input": [-0.5, 28.5], "expected": 28.500000000000256}, {"input": [-0.5, 29.0], "expected": 29.000000000000153}, {"input": [-0.5, 29.5], "expected": 29.500000000000092}, {"input": [-0.5, 30.0], "expected": 30.000000000000057}, {"input": [-0.5, 30.5], "expected": 30.500000000000036}, {"input": [-0.5, 31.0], "expected": 31.00000000000002}, {"input": [-0.5, 31.5], "expected": 31.500000000000014}, {"input": [-0.5, 32.0], "expected": 32.00000000000001}, {"input": [-0.5, 32.5], "expected": 32.50000000000001}, {"input": [-0.5, 33.0], "expected": 33.0}, {"input": [-0.5, 33.5], "expected": 33.5}, {"input": [-0.5, 34.0], "expected": 34.0}, {"input": [-0.5, 34.5], "expected": 34.5}, {"input": [-0.5, 35.0], "expected": 35.0}, {"input": [-0.5, 35.5], "expected": 35.5}, {"input": [-0.5, 36.0], "expected": 36.0}, {"input": [-0.5, 36.5], "expected": 36.5}, {"input": [-0.5, 37.0], "expected": 37.0}, {"input": [-0.5, 37.5], "expected": 37.5}, {"input": [-0.5, 38.0], "expected": 38.0}, {"input": [-0.5, 38.5], "expected": 38.5}, {"input": [-0.5, 39.0], "expected": 39.0}, {"input": [-0.5, 39.5], "expected": 39.5}, {"input": [-0.5, 40.0], "expected": 40.0}, {"input": [-0.5, 40.5], "expected": 40.5}, {"input": [-0.5, 41.0], "expected": 41.0}, {"input": [-0.5, 41.5], "expected": 41.5}, {"input": [-0.5, 42.0], "expected": 42.0}, {"input": [-0.5, 42.5], "expected": 42.5}, {"input": [-0.5, 43.0], "expected": 43.0}, {"input": [-0.5, 43.5], "expected": 43.5}, {"input": [-0.5, 44.0], "expected": 44.0}, {"input": [-0.5, 44.5], "expected": 44.5}, {"input": [-0.5, 45.0], "expected": 45.0}, {"input": [-0.5, 45.5], "expected": 45.5}, {"input": [-0.5, 46.0], "expected": 46.0}, {"input": [-0.5, 46.5], "expected": 46.5}, {"input": [-0.5, 47.0], "expected": 47.0}, {"input": [-0.5, 47.5], "expected": 47.5}, {"input": [-0.5, 48.0], "expected": 48.0}, {"input": [-0.5, 48.5], "expected": 48.5}, {"input": [-0.5, 49.0], "expected": 49.0}, {"input": [-0.5, 49.5], "expected": 49.5}, {"input": [-0.5, 50.0], "expected": 50.0}, {"input": [-0.5, 50.5], "expected": 50.5}, {"input": [-0.5, 51.0], "expected": 51.0}, {"input": [-0.5, 51.5], "expected": 51.5}, {"input": [-0.5, 52.0], "expected": 52.0}, {"input": [-0.5, 52.5], "expected": 52.5}, {"input": [-0.5, 53.0], "expected": 53.0}, {"input": [-0.5, 53.5], "expected": 53.5}, {"input": [-0.5, 54.0], "expected": 54.0}, {"input": [-0.5, 54.5], "expected": 54.5}, {"input": [-0.5, 55.0], "expected": 55.0}, {"input": [-0.5, 55.5], "expected": 55.5}, {"input": [-0.5, 56.0], "expected": 56.0}, {"input": [-0.5, 56.5], "expected": 56.5}, {"input": [-0.5, 57.0], "expected": 57.0}, {"input": [-0.5, 57.5], "expected": 57.5}, {"input": [-0.5, 58.0], "expected": 58.0}, {"input": [-0.5, 58.5], "expected": 58.5}, {"input": [-0.5, 59.0], "expected": 59.0}, {"input": [-0.5, 59.5], "expected": 59.5}, {"input": [-0.5, 60.0], "expected": 60.0}, {"input": [-0.5, 60.5], "expected": 60.5}, {"input": [-0.5, 61.0], "expected": 61.0}, {"input": [-0.5, 61.5], "expected": 61.5}, {"input": [-0.5, 62.0], "expected": 62.0}, {"input": [-0.5, 62.5], "expected": 62.5}, {"input": [-0.5, 63.0], "expected": 63.0}, {"input": [-0.5, 63.5], "expected": 63.5}, {"input": [-0.5, 64.0], "expected": 64.0}, {"input": [-0.5, 64.5], "expected": 64.5}, {"input": [-0.5, 65.0], "expected": 65.0}, {"input": [-0.5, 65.5], "expected": 65.5}, {"input": [-0.5, 66.0], "expected": 66.0}, {"input": [-0.5, 66.5], "expected": 66.5}, {"input": [-0.5, 67.0], "expected": 67.0}, {"input": [-0.5, 67.5], "expected": 67.5}, {"input": [-0.5, 68.0], "expected": 68.0}, {"input": [-0.5, 68.5], "expected": 68.5}, {"input": [-0.5, 69.0], "expected": 69.0}, {"input": [-0.5, 69.5], "expected": 69.5}, {"input": [-0.5, 70.0], "expected": 70.0}, {"input": [-0.5, 70.5], "expected": 70.5}, {"input": [-0.5, 71.0], "expected": 71.0}, {"input": [-0.5, 71.5], "expected": 71.5}, {"input": [-0.5, 72.0], "expected": 72.0}, {"input": [-0.5, 72.5], "expected": 72.5}, {"input": [-0.5, 73.0], "expected": 73.0}, {"input": [-0.5, 73.5], "expected": 73.5}, {"input": [-0.5, 74.0], "expected": 74.0}, {"input": [-0.5, 74.5], "expected": 74.5}, {"input": [-0.5, 75.0], "expected": 75.0}, {"input": [-0.5, 75.5], "expected": 75.5}, {"input": [-0.5, 76.0], "expected": 76.0}, {"input": [-0.5, 76.5], "expected": 76.5}, {"input": [-0.5, 77.0], "expected": 77.0}, {"input": [-0.5, 77.5], "expected": 77.5}, {"input": [-0.5, 78.0], "expected": 78.0}, {"input": [-0.5, 78.5], "expected": 78.5}, {"input": [-0.5, 79.0], "expected": 79.0}, {"input": [-0.5, 79.5], "expected": 79.5}, {"input": [-0.5, 80.0], "expected": 80.0}, {"input": [-0.5, 80.5], "expected": 80.5}, {"input": [-0.5, 81.0], "expected": 81.0}, {"input": [-0.5, 81.5], "expected": 81.5}, {"input": [-0.5, 82.0], "expected": 82.0}, {"input": [-0.5, 82.5], "expected": 82.5}, {"input": [-0.5, 83.0], "expected": 83.0}, {"input": [-0.5, 83.5], "expected": 83.5}, {"input": [-0.5, 84.0], "expected": 84.0}, {"input": [-0.5, 84.5], "expected": 84.5}, {"input": [-0.5, 85.0], "expected": 85.0}, {"input": [-0.5, 85.5], "expected": 85.5}, {"input": [-0.5, 86.0], "expected": 86.0}, {"input": [-0.5, 86.5], "expected": 86.5}, {"input": [-0.5, 87.0], "expected": 87.0}, {"input": [-0.5, 87.5], "expected": 87.5}, {"input": [-0.5, 88.0], "expected": 88.0}, {"input": [-0.5, 88.5], "expected": 88.5}, {"input": [-0.5, 89.0], "expected": 89.0}, {"input": [-0.5, 89.5], "expected": 89.5}, {"input": [-0.5, 90.0], "expected": 90.0}, {"input": [-0.5, 90.5], "expected": 90.5}, {"input": [-0.5, 91.0], "expected": 91.0}, {"input": [-0.5, 91.5], "expected": 91.5}, {"input": [-0.5, 92.0], "expected": 92.0}, {"input": [-0.5, 92.5], "expected": 92.5}, {"input": [-0.5, 93.0], "expected": 93.0}, {"input": [-0.5, 93.5], "expected": 93.5}, {"input": [-0.5, 94.0], "expected": 94.0}, {"input": [-0.5, 94.5], "expected": 94.5}, {"input": [-0.5, 95.0], "expected": 95.0}, {"input": [-0.5, 95.5], "expected": 95.5}, {"input": [-0.5, 96.0], "expected": 96.0}, {"input": [-0.5, 96.5], "expected": 96.5}, {"input": [-0.5, 97.0], "expected": 97.0}, {"input": [-0.5, 97.5], "expected": 97.5}, {"input": [-0.5, 98.0], "expected": 98.0}, {"input": [-0.5, 98.5], "expected": 98.5}, {"input": [-0.5, 99.0], "expected": 99.0}, {"input": [-0.5, 99.5], "expected": 99.5}, {"input": [0.0, -100.0], "expected": 3.720075976020836e-44}, {"input": [0.0, -99.5], "expected": 6.133368390286092e-44}, {"input": [0.0, -99.0], "expected": 1.0112214926104486e-43}, {"input": [0.0, -98.5], "expected": 1.667222384255979e-43}, {"input": [0.0, -98.0], "expected": 2.7487850079102147e-43}, {"input": [0.0, -97.5], "expected": 4.5319803111231915e-43}, {"input": [0.0, -97.0], "expected": 7.47197233734299e-43}, {"input": [0.0, -96.5], "expected": 1.2319199726660341e-42}, {"input": [0.0, -96.0], "expected": 2.031092662734811e-42}, {"input": [0.0, -95.5], "expected": 3.348705675813844e-42}, {"input": [0.0, -95.0], "expected": 5.5210822770285325e-42}, {"input": [0.0, -94.5], "expected": 9.10272578742244e-42}, {"input": [0.0, -94.0], "expected": 1.5007857627073948e-41}, {"input": [0.0, -93.5], "expected": 2.474377409739597e-41}, {"input": [0.0, -93.0], "expected": 4.0795586671775603e-41}, {"input": [0.0, -92.5], "expected": 6.726055149644708e-41}, {"input": [0.0, -92.0], "expected": 1.1089390193121365e-40}, {"input": [0.0, -91.5], "expected": 1.8283313490492594e-40}, {"input": [0.0, -91.0], "expected": 3.0144087850653746e-40}, {"input": [0.0, -90.5], "expected": 4.9699198825226136e-40}, {"input": [0.0, -90.0], "expected": 8.194012623990515e-40}, {"input": [0.0, -89.5], "expected": 1.3509642905558533e-39}, {"input": [0.0, -89.0], "expected": 2.2273635617957438e-39}, {"input": [0.0, -88.5], "expected": 3.672301681915042e-39}, {"input": [0.0, -88.0], "expected": 6.054601895401186e-39}, {"input": [0.0, -87.5], "expected": 9.982350930569248e-39}, {"input": [0.0, -87.0], "expected": 1.6458114310822737e-38}, {"input": [0.0, -86.5], "expected": 2.7134843139867624e-38}, {"input": [0.0, -86.0], "expected": 4.4737793061811207e-38}, {"input": [0.0, -85.5], "expected": 7.376015102518876e-38}, {"input": [0.0, -85.0], "expected": 1.2160992992528256e-37}, {"input": [0.0, -84.5], "expected": 2.005008781961654e-37}, {"input": [0.0, -84.0], "expected": 3.3057006267607343e-37}, {"input": [0.0, -83.5], "expected": 5.450178937907168e-37}, {"input": [0.0, -83.0], "expected": 8.985825944049381e-37}, {"input": [0.0, -82.5], "expected": 1.4815122368763274e-36}, {"input": [0.0, -82.0], "expected": 2.4426007377405277e-36}, {"input": [0.0, -81.5], "expected": 4.027167792140633e-36}, {"input": [0.0, -81.0], "expected": 6.639677199580735e-36}, {"input": [0.0, -80.5], "expected": 1.0946977029531417e-35}, {"input": [0.0, -80.0], "expected": 1.8048513878454153e-35}, {"input": [0.0, -79.5], "expected": 2.9756968735933825e-35}, {"input": [0.0, -79.0], "expected": 4.906094730649281e-35}, {"input": [0.0, -78.5], "expected": 8.088782738491285e-35}, {"input": [0.0, -78.0], "expected": 1.3336148155022614e-34}, {"input": [0.0, -77.5], "expected": 2.1987591132394053e-34}, {"input": [0.0, -77.0], "expected": 3.6251409191435593e-34}, {"input": [0.0, -76.5], "expected": 5.976846942677399e-34}, {"input": [0.0, -76.0], "expected": 9.854154686111257e-34}, {"input": [0.0, -75.5], "expected": 1.6246754435760975e-33}, {"input": [0.0, -75.0], "expected": 2.6786369618080778e-33}, {"input": [0.0, -74.5], "expected": 4.416325735416545e-33}, {"input": [0.0, -74.0], "expected": 7.281290178321643e-33}, {"input": [0.0, -73.5], "expected": 1.2004817995138824e-32}, {"input": [0.0, -73.0], "expected": 1.9792598779469045e-32}, {"input": [0.0, -72.5], "expected": 3.263247861014401e-32}, {"input": [0.0, -72.0], "expected": 5.380186160021138e-32}, {"input": [0.0, -71.5], "expected": 8.870427362353295e-32}, {"input": [0.0, -71.0], "expected": 1.462486227251231e-31}, {"input": [0.0, -70.5], "expected": 2.411232150975086e-31}, {"input": [0.0, -70.0], "expected": 3.975449735908647e-31}, {"input": [0.0, -69.5], "expected": 6.554408540191793e-31}, {"input": [0.0, -69.0], "expected": 1.0806392777072785e-30}, {"input": [0.0, -68.5], "expected": 1.7816729631100128e-30}, {"input": [0.0, -68.0], "expected": 2.9374821117108028e-30}, {"input": [0.0, -67.5], "expected": 4.843089239878731e-30}, {"input": [0.0, -67.0], "expected": 7.984904245686979e-30}, {"input": [0.0, -66.5], "expected": 1.3164881474367883e-29}, {"input": [0.0, -66.0], "expected": 2.1705220113036395e-29}, {"input": [0.0, -65.5], "expected": 3.578585808559134e-29}, {"input": [0.0, -65.0], "expected": 5.900090541597061e-29}, {"input": [0.0, -64.5], "expected": 9.727604774987714e-29}, {"input": [0.0, -64.0], "expected": 1.603810890548638e-28}, {"input": [0.0, -63.5], "expected": 2.6442371294280543e-28}, {"input": [0.0, -63.0], "expected": 4.359610000063081e-28}, {"input": [0.0, -62.5], "expected": 7.187781739060989e-28}, {"input": [0.0, -62.0], "expected": 1.185064864233981e-27}, {"input": [0.0, -61.5], "expected": 1.953841648821924e-27}, {"input": [0.0, -61.0], "expected": 3.221340285992516e-27}, {"input": [0.0, -60.5], "expected": 5.311092249679095e-27}, {"input": [0.0, -60.0], "expected": 8.75651076269652e-27}, {"input": [0.0, -59.5], "expected": 1.4437045551572354e-26}, {"input": [0.0, -59.0], "expected": 2.3802664086944007e-26}, {"input": [0.0, -58.5], "expected": 3.924395857947463e-26}, {"input": [0.0, -58.0], "expected": 6.47023492564546e-26}, {"input": [0.0, -57.5], "expected": 1.0667613948338533e-25}, {"input": [0.0, -57.0], "expected": 1.7587922024243116e-25}, {"input": [0.0, -56.5], "expected": 2.899758114878488e-25}, {"input": [0.0, -56.0], "expected": 4.780892883885469e-25}, {"input": [0.0, -55.5], "expected": 7.882359790600851e-25}, {"input": [0.0, -55.0], "expected": 1.2995814250075031e-24}, {"input": [0.0, -54.5], "expected": 2.1426475384166538e-24}, {"input": [0.0, -54.0], "expected": 3.532628572200807e-24}, {"input": [0.0, -53.5], "expected": 5.824319868470494e-24}, {"input": [0.0, -53.0], "expected": 9.602680054508676e-24}, {"input": [0.0, -52.5], "expected": 1.583214286159632e-23}, {"input": [0.0, -52.0], "expected": 2.6102790696677047e-23}, {"input": [0.0, -51.5], "expected": 4.3036226246244867e-23}, {"input": [0.0, -51.0], "expected": 7.095474162284704e-23}, {"input": [0.0, -50.5], "expected": 1.1698459177061964e-22}, {"input": [0.0, -50.0], "expected": 1.9287498479639178e-22}, {"input": [0.0, -49.5], "expected": 3.1799709001977496e-22}, {"input": [0.0, -49.0], "expected": 5.242885663363464e-22}, {"input": [0.0, -48.5], "expected": 8.644057113036095e-22}, {"input": [0.0, -48.0], "expected": 1.4251640827409352e-21}, {"input": [0.0, -47.5], "expected": 2.349698337452817e-21}, {"input": [0.0, -47.0], "expected": 3.873997628687187e-21}, {"input": [0.0, -46.5], "expected": 6.387142293058423e-21}, {"input": [0.0, -46.0], "expected": 1.0530617357553812e-20}, {"input": [0.0, -45.5], "expected": 1.7362052831002947e-20}, {"input": [0.0, -45.0], "expected": 2.8625185805493937e-20}, {"input": [0.0, -44.5], "expected": 4.719495271526123e-20}, {"input": [0.0, -44.0], "expected": 7.781132241133797e-20}, {"input": [0.0, -43.5], "expected": 1.282891823608785e-19}, {"input": [0.0, -43.0], "expected": 2.1151310375910805e-19}, {"input": [0.0, -42.5], "expected": 3.4872615319944465e-19}, {"input": [0.0, -42.0], "expected": 5.74952226429356e-19}, {"input": [0.0, -41.5], "expected": 9.479359653504757e-19}, {"input": [0.0, -41.0], "expected": 1.5628821893349888e-18}, {"input": [0.0, -40.5], "expected": 2.576757109154981e-18}, {"input": [0.0, -40.0], "expected": 4.248354255291589e-18}, {"input": [0.0, -39.5], "expected": 7.004352026168645e-18}, {"input": [0.0, -39.0], "expected": 1.1548224173015786e-17}, {"input": [0.0, -38.5], "expected": 1.9039802832864523e-17}, {"input": [0.0, -38.0], "expected": 3.1391327920480296e-17}, {"input": [0.0, -37.5], "expected": 5.175555005801869e-17}, {"input": [0.0, -37.0], "expected": 8.533047625744066e-17}, {"input": [0.0, -36.5], "expected": 1.4068617124461467e-16}, {"input": [0.0, -36.0], "expected": 2.319522830243569e-16}, {"input": [0.0, -35.5], "expected": 3.824246628097135e-16}, {"input": [0.0, -35.0], "expected": 6.305116760146987e-16}, {"input": [0.0, -34.5], "expected": 1.0395380116702214e-15}, {"input": [0.0, -34.0], "expected": 1.7139084315420116e-15}, {"input": [0.0, -33.5], "expected": 2.825757287115607e-15}, {"input": [0.0, -33.0], "expected": 4.658886145103387e-15}, {"input": [0.0, -32.5], "expected": 7.681204685202065e-15}, {"input": [0.0, -32.0], "expected": 1.2664165549094095e-14}, {"input": [0.0, -31.5], "expected": 2.0879679116459118e-14}, {"input": [0.0, -31.0], "expected": 3.4424771084699174e-14}, {"input": [0.0, -30.5], "expected": 5.675685232632562e-14}, {"input": [0.0, -30.0], "expected": 9.357622968839737e-14}, {"input": [0.0, -29.5], "expected": 1.5428112031917688e-13}, {"input": [0.0, -29.0], "expected": 2.543665647376599e-13}, {"input": [0.0, -28.5], "expected": 4.193795658378665e-13}, {"input": [0.0, -28.0], "expected": 6.914400106937813e-13}, {"input": [0.0, -27.5], "expected": 1.1399918530437055e-12}, {"input": [0.0, -27.0], "expected": 1.879528816537317e-12}, {"input": [0.0, -26.5], "expected": 3.098819138717024e-12}, {"input": [0.0, -26.0], "expected": 5.1090890280502736e-12}, {"input": [0.0, -25.5], "expected": 8.42346375443317e-12}, {"input": [0.0, -25.0], "expected": 1.3887943864867583e-11}, {"input": [0.0, -24.5], "expected": 2.2897348456193385e-11}, {"input": [0.0, -24.0], "expected": 3.7751345442078393e-11}, {"input": [0.0, -23.5], "expected": 6.224144622714083e-11}, {"input": [0.0, -23.0], "expected": 1.0261879631175359e-10}, {"input": [0.0, -22.5], "expected": 1.6918979224720044e-10}, {"input": [0.0, -22.0], "expected": 2.789468092479868e-10}, {"input": [0.0, -21.5], "expected": 4.599055377594751e-10}, {"input": [0.0, -21.0], "expected": 7.582560425037146e-10}, {"input": [0.0, -20.5], "expected": 1.2501528656053015e-09}, {"input": [0.0, -20.0], "expected": 2.061153620314381e-09}, {"input": [0.0, -19.5], "expected": 3.398267813720959e-09}, {"input": [0.0, -19.0], "expected": 5.602796421841604e-09}, {"input": [0.0, -18.5], "expected": 9.237449619305356e-09}, {"input": [0.0, -18.0], "expected": 1.5229979628736488e-08}, {"input": [0.0, -17.5], "expected": 2.5109991242183986e-08}, {"input": [0.0, -17.0], "expected": 4.139937633089748e-08}, {"input": [0.0, -16.5], "expected": 6.825603143390574e-08}, {"input": [0.0, -16.0], "expected": 1.1253516838717682e-07}, {"input": [0.0, -15.5], "expected": 1.8553911904921443e-07}, {"input": [0.0, -15.0], "expected": 3.059022737137205e-07}, {"input": [0.0, -14.5], "expected": 5.043475353846484e-07}, {"input": [0.0, -14.0], "expected": 8.315283733837542e-07}, {"input": [0.0, -13.5], "expected": 1.3709581466205352e-06}, {"input": [0.0, -13.0], "expected": 2.2603268524403896e-06}, {"input": [0.0, -12.5], "expected": 3.7266462281239904e-06}, {"input": [0.0, -12.0], "expected": 6.144193477732806e-06}, {"input": [0.0, -11.5], "expected": 1.0130042289579061e-05}, {"input": [0.0, -11.0], "expected": 1.670156131839396e-05}, {"input": [0.0, -10.5], "expected": 2.7536070228685513e-05}, {"input": [0.0, -10.0], "expected": 4.539889921686465e-05}, {"input": [0.0, -9.5], "expected": 7.484902862926717e-05}, {"input": [0.0, -9.0], "expected": 0.00012340218972325883}, {"input": [0.0, -8.5], "expected": 0.00020344767212944308}, {"input": [0.0, -8.0], "expected": 0.00033540637289576885}, {"input": [0.0, -7.5], "expected": 0.0005529314753607964}, {"input": [0.0, -7.0], "expected": 0.0009114664537742447}, {"input": [0.0, -6.5], "expected": 0.0015023101597542838}, {"input": [0.0, -6.0], "expected": 0.0024756851377304495}, {"input": [0.0, -5.5], "expected": 0.0040784432705707205}, {"input": [0.0, -5.0], "expected": 0.006715348489118068}, {"input": [0.0, -4.5], "expected": 0.011047744848593817}, {"input": [0.0, -4.0], "expected": 0.018149927917809738}, {"input": [0.0, -3.5], "expected": 0.029750418272620566}, {"input": [0.0, -3.0], "expected": 0.04858735157374206}, {"input": [0.0, -2.5], "expected": 0.07888973429254963}, {"input": [0.0, -2.0], "expected": 0.1269280110429725}, {"input": [0.0, -1.5], "expected": 0.2014132779827524}, {"input": [0.0, -1.0], "expected": 0.31326168751822286}, {"input": [0.0, -0.5], "expected": 0.4740769841801067}, {"input": [0.0, 0.0], "expected": 0.6931471805599453}, {"input": [0.0, 0.5], "expected": 0.9740769841801067}, {"input": [0.0, 1.0], "expected": 1.3132616875182228}, {"input": [0.0, 1.5], "expected": 1.7014132779827524}, {"input": [0.0, 2.0], "expected": 2.1269280110429727}, {"input": [0.0, 2.5], "expected": 2.5788897342925496}, {"input": [0.0, 3.0], "expected": 3.048587351573742}, {"input": [0.0, 3.5], "expected": 3.5297504182726205}, {"input": [0.0, 4.0], "expected": 4.0181499279178094}, {"input": [0.0, 4.5], "expected": 4.511047744848594}, {"input": [0.0, 5.0], "expected": 5.006715348489118}, {"input": [0.0, 5.5], "expected": 5.504078443270571}, {"input": [0.0, 6.0], "expected": 6.00247568513773}, {"input": [0.0, 6.5], "expected": 6.501502310159754}, {"input": [0.0, 7.0], "expected": 7.000911466453775}, {"input": [0.0, 7.5], "expected": 7.500552931475361}, {"input": [0.0, 8.0], "expected": 8.000335406372896}, {"input": [0.0, 8.5], "expected": 8.50020344767213}, {"input": [0.0, 9.0], "expected": 9.000123402189724}, {"input": [0.0, 9.5], "expected": 9.500074849028628}, {"input": [0.0, 10.0], "expected": 10.000045398899218}, {"input": [0.0, 10.5], "expected": 10.50002753607023}, {"input": [0.0, 11.0], "expected": 11.000016701561318}, {"input": [0.0, 11.5], "expected": 11.50001013004229}, {"input": [0.0, 12.0], "expected": 12.000006144193478}, {"input": [0.0, 12.5], "expected": 12.500003726646229}, {"input": [0.0, 13.0], "expected": 13.000002260326852}, {"input": [0.0, 13.5], "expected": 13.500001370958147}, {"input": [0.0, 14.0], "expected": 14.000000831528373}, {"input": [0.0, 14.5], "expected": 14.500000504347536}, {"input": [0.0, 15.0], "expected": 15.000000305902274}, {"input": [0.0, 15.5], "expected": 15.500000185539118}, {"input": [0.0, 16.0], "expected": 16.00000011253517}, {"input": [0.0, 16.5], "expected": 16.500000068256032}, {"input": [0.0, 17.0], "expected": 17.000000041399375}, {"input": [0.0, 17.5], "expected": 17.50000002510999}, {"input": [0.0, 18.0], "expected": 18.00000001522998}, {"input": [0.0, 18.5], "expected": 18.50000000923745}, {"input": [0.0, 19.0], "expected": 19.000000005602796}, {"input": [0.0, 19.5], "expected": 19.500000003398267}, {"input": [0.0, 20.0], "expected": 20.000000002061153}, {"input": [0.0, 20.5], "expected": 20.500000001250154}, {"input": [0.0, 21.0], "expected": 21.000000000758256}, {"input": [0.0, 21.5], "expected": 21.500000000459906}, {"input": [0.0, 22.0], "expected": 22.00000000027895}, {"input": [0.0, 22.5], "expected": 22.50000000016919}, {"input": [0.0, 23.0], "expected": 23.00000000010262}, {"input": [0.0, 23.5], "expected": 23.50000000006224}, {"input": [0.0, 24.0], "expected": 24.00000000003775}, {"input": [0.0, 24.5], "expected": 24.500000000022897}, {"input": [0.0, 25.0], "expected": 25.000000000013888}, {"input": [0.0, 25.5], "expected": 25.500000000008423}, {"input": [0.0, 26.0], "expected": 26.00000000000511}, {"input": [0.0, 26.5], "expected": 26.500000000003098}, {"input": [0.0, 27.0], "expected": 27.00000000000188}, {"input": [0.0, 27.5], "expected": 27.50000000000114}, {"input": [0.0, 28.0], "expected": 28.000000000000693}, {"input": [0.0, 28.5], "expected": 28.50000000000042}, {"input": [0.0, 29.0], "expected": 29.000000000000256}, {"input": [0.0, 29.5], "expected": 29.500000000000153}, {"input": [0.0, 30.0], "expected": 30.000000000000092}, {"input": [0.0, 30.5], "expected": 30.500000000000057}, {"input": [0.0, 31.0], "expected": 31.000000000000036}, {"input": [0.0, 31.5], "expected": 31.50000000000002}, {"input": [0.0, 32.0], "expected": 32.000000000000014}, {"input": [0.0, 32.5], "expected": 32.50000000000001}, {"input": [0.0, 33.0], "expected": 33.00000000000001}, {"input": [0.0, 33.5], "expected": 33.5}, {"input": [0.0, 34.0], "expected": 34.0}, {"input": [0.0, 34.5], "expected": 34.5}, {"input": [0.0, 35.0], "expected": 35.0}, {"input": [0.0, 35.5], "expected": 35.5}, {"input": [0.0, 36.0], "expected": 36.0}, {"input": [0.0, 36.5], "expected": 36.5}, {"input": [0.0, 37.0], "expected": 37.0}, {"input": [0.0, 37.5], "expected": 37.5}, {"input": [0.0, 38.0], "expected": 38.0}, {"input": [0.0, 38.5], "expected": 38.5}, {"input": [0.0, 39.0], "expected": 39.0}, {"input": [0.0, 39.5], "expected": 39.5}, {"input": [0.0, 40.0], "expected": 40.0}, {"input": [0.0, 40.5], "expected": 40.5}, {"input": [0.0, 41.0], "expected": 41.0}, {"input": [0.0, 41.5], "expected": 41.5}, {"input": [0.0, 42.0], "expected": 42.0}, {"input": [0.0, 42.5], "expected": 42.5}, {"input": [0.0, 43.0], "expected": 43.0}, {"input": [0.0, 43.5], "expected": 43.5}, {"input": [0.0, 44.0], "expected": 44.0}, {"input": [0.0, 44.5], "expected": 44.5}, {"input": [0.0, 45.0], "expected": 45.0}, {"input": [0.0, 45.5], "expected": 45.5}, {"input": [0.0, 46.0], "expected": 46.0}, {"input": [0.0, 46.5], "expected": 46.5}, {"input": [0.0, 47.0], "expected": 47.0}, {"input": [0.0, 47.5], "expected": 47.5}, {"input": [0.0, 48.0], "expected": 48.0}, {"input": [0.0, 48.5], "expected": 48.5}, {"input": [0.0, 49.0], "expected": 49.0}, {"input": [0.0, 49.5], "expected": 49.5}, {"input": [0.0, 50.0], "expected": 50.0}, {"input": [0.0, 50.5], "expected": 50.5}, {"input": [0.0, 51.0], "expected": 51.0}, {"input": [0.0, 51.5], "expected": 51.5}, {"input": [0.0, 52.0], "expected": 52.0}, {"input": [0.0, 52.5], "expected": 52.5}, {"input": [0.0, 53.0], "expected": 53.0}, {"input": [0.0, 53.5], "expected": 53.5}, {"input": [0.0, 54.0], "expected": 54.0}, {"input": [0.0, 54.5], "expected": 54.5}, {"input": [0.0, 55.0], "expected": 55.0}, {"input": [0.0, 55.5], "expected": 55.5}, {"input": [0.0, 56.0], "expected": 56.0}, {"input": [0.0, 56.5], "expected": 56.5}, {"input": [0.0, 57.0], "expected": 57.0}, {"input": [0.0, 57.5], "expected": 57.5}, {"input": [0.0, 58.0], "expected": 58.0}, {"input": [0.0, 58.5], "expected": 58.5}, {"input": [0.0, 59.0], "expected": 59.0}, {"input": [0.0, 59.5], "expected": 59.5}, {"input": [0.0, 60.0], "expected": 60.0}, {"input": [0.0, 60.5], "expected": 60.5}, {"input": [0.0, 61.0], "expected": 61.0}, {"input": [0.0, 61.5], "expected": 61.5}, {"input": [0.0, 62.0], "expected": 62.0}, {"input": [0.0, 62.5], "expected": 62.5}, {"input": [0.0, 63.0], "expected": 63.0}, {"input": [0.0, 63.5], "expected": 63.5}, {"input": [0.0, 64.0], "expected": 64.0}, {"input": [0.0, 64.5], "expected": 64.5}, {"input": [0.0, 65.0], "expected": 65.0}, {"input": [0.0, 65.5], "expected": 65.5}, {"input": [0.0, 66.0], "expected": 66.0}, {"input": [0.0, 66.5], "expected": 66.5}, {"input": [0.0, 67.0], "expected": 67.0}, {"input": [0.0, 67.5], "expected": 67.5}, {"input": [0.0, 68.0], "expected": 68.0}, {"input": [0.0, 68.5], "expected": 68.5}, {"input": [0.0, 69.0], "expected": 69.0}, {"input": [0.0, 69.5], "expected": 69.5}, {"input": [0.0, 70.0], "expected": 70.0}, {"input": [0.0, 70.5], "expected": 70.5}, {"input": [0.0, 71.0], "expected": 71.0}, {"input": [0.0, 71.5], "expected": 71.5}, {"input": [0.0, 72.0], "expected": 72.0}, {"input": [0.0, 72.5], "expected": 72.5}, {"input": [0.0, 73.0], "expected": 73.0}, {"input": [0.0, 73.5], "expected": 73.5}, {"input": [0.0, 74.0], "expected": 74.0}, {"input": [0.0, 74.5], "expected": 74.5}, {"input": [0.0, 75.0], "expected": 75.0}, {"input": [0.0, 75.5], "expected": 75.5}, {"input": [0.0, 76.0], "expected": 76.0}, {"input": [0.0, 76.5], "expected": 76.5}, {"input": [0.0, 77.0], "expected": 77.0}, {"input": [0.0, 77.5], "expected": 77.5}, {"input": [0.0, 78.0], "expected": 78.0}, {"input": [0.0, 78.5], "expected": 78.5}, {"input": [0.0, 79.0], "expected": 79.0}, {"input": [0.0, 79.5], "expected": 79.5}, {"input": [0.0, 80.0], "expected": 80.0}, {"input": [0.0, 80.5], "expected": 80.5}, {"input": [0.0, 81.0], "expected": 81.0}, {"input": [0.0, 81.5], "expected": 81.5}, {"input": [0.0, 82.0], "expected": 82.0}, {"input": [0.0, 82.5], "expected": 82.5}, {"input": [0.0, 83.0], "expected": 83.0}, {"input": [0.0, 83.5], "expected": 83.5}, {"input": [0.0, 84.0], "expected": 84.0}, {"input": [0.0, 84.5], "expected": 84.5}, {"input": [0.0, 85.0], "expected": 85.0}, {"input": [0.0, 85.5], "expected": 85.5}, {"input": [0.0, 86.0], "expected": 86.0}, {"input": [0.0, 86.5], "expected": 86.5}, {"input": [0.0, 87.0], "expected": 87.0}, {"input": [0.0, 87.5], "expected": 87.5}, {"input": [0.0, 88.0], "expected": 88.0}, {"input": [0.0, 88.5], "expected": 88.5}, {"input": [0.0, 89.0], "expected": 89.0}, {"input": [0.0, 89.5], "expected": 89.5}, {"input": [0.0, 90.0], "expected": 90.0}, {"input": [0.0, 90.5], "expected": 90.5}, {"input": [0.0, 91.0], "expected": 91.0}, {"input": [0.0, 91.5], "expected": 91.5}, {"input": [0.0, 92.0], "expected": 92.0}, {"input": [0.0, 92.5], "expected": 92.5}, {"input": [0.0, 93.0], "expected": 93.0}, {"input": [0.0, 93.5], "expected": 93.5}, {"input": [0.0, 94.0], "expected": 94.0}, {"input": [0.0, 94.5], "expected": 94.5}, {"input": [0.0, 95.0], "expected": 95.0}, {"input": [0.0, 95.5], "expected": 95.5}, {"input": [0.0, 96.0], "expected": 96.0}, {"input": [0.0, 96.5], "expected": 96.5}, {"input": [0.0, 97.0], "expected": 97.0}, {"input": [0.0, 97.5], "expected": 97.5}, {"input": [0.0, 98.0], "expected": 98.0}, {"input": [0.0, 98.5], "expected": 98.5}, {"input": [0.0, 99.0], "expected": 99.0}, {"input": [0.0, 99.5], "expected": 99.5}, {"input": [0.5, -100.0], "expected": 0.5}, {"input": [0.5, -99.5], "expected": 0.5}, {"input": [0.5, -99.0], "expected": 0.5}, {"input": [0.5, -98.5], "expected": 0.5}, {"input": [0.5, -98.0], "expected": 0.5}, {"input": [0.5, -97.5], "expected": 0.5}, {"input": [0.5, -97.0], "expected": 0.5}, {"input": [0.5, -96.5], "expected": 0.5}, {"input": [0.5, -96.0], "expected": 0.5}, {"input": [0.5, -95.5], "expected": 0.5}, {"input": [0.5, -95.0], "expected": 0.5}, {"input": [0.5, -94.5], "expected": 0.5}, {"input": [0.5, -94.0], "expected": 0.5}, {"input": [0.5, -93.5], "expected": 0.5}, {"input": [0.5, -93.0], "expected": 0.5}, {"input": [0.5, -92.5], "expected": 0.5}, {"input": [0.5, -92.0], "expected": 0.5}, {"input": [0.5, -91.5], "expected": 0.5}, {"input": [0.5, -91.0], "expected": 0.5}, {"input": [0.5, -90.5], "expected": 0.5}, {"input": [0.5, -90.0], "expected": 0.5}, {"input": [0.5, -89.5], "expected": 0.5}, {"input": [0.5, -89.0], "expected": 0.5}, {"input": [0.5, -88.5], "expected": 0.5}, {"input": [0.5, -88.0], "expected": 0.5}, {"input": [0.5, -87.5], "expected": 0.5}, {"input": [0.5, -87.0], "expected": 0.5}, {"input": [0.5, -86.5], "expected": 0.5}, {"input": [0.5, -86.0], "expected": 0.5}, {"input": [0.5, -85.5], "expected": 0.5}, {"input": [0.5, -85.0], "expected": 0.5}, {"input": [0.5, -84.5], "expected": 0.5}, {"input": [0.5, -84.0], "expected": 0.5}, {"input": [0.5, -83.5], "expected": 0.5}, {"input": [0.5, -83.0], "expected": 0.5}, {"input": [0.5, -82.5], "expected": 0.5}, {"input": [0.5, -82.0], "expected": 0.5}, {"input": [0.5, -81.5], "expected": 0.5}, {"input": [0.5, -81.0], "expected": 0.5}, {"input": [0.5, -80.5], "expected": 0.5}, {"input": [0.5, -80.0], "expected": 0.5}, {"input": [0.5, -79.5], "expected": 0.5}, {"input": [0.5, -79.0], "expected": 0.5}, {"input": [0.5, -78.5], "expected": 0.5}, {"input": [0.5, -78.0], "expected": 0.5}, {"input": [0.5, -77.5], "expected": 0.5}, {"input": [0.5, -77.0], "expected": 0.5}, {"input": [0.5, -76.5], "expected": 0.5}, {"input": [0.5, -76.0], "expected": 0.5}, {"input": [0.5, -75.5], "expected": 0.5}, {"input": [0.5, -75.0], "expected": 0.5}, {"input": [0.5, -74.5], "expected": 0.5}, {"input": [0.5, -74.0], "expected": 0.5}, {"input": [0.5, -73.5], "expected": 0.5}, {"input": [0.5, -73.0], "expected": 0.5}, {"input": [0.5, -72.5], "expected": 0.5}, {"input": [0.5, -72.0], "expected": 0.5}, {"input": [0.5, -71.5], "expected": 0.5}, {"input": [0.5, -71.0], "expected": 0.5}, {"input": [0.5, -70.5], "expected": 0.5}, {"input": [0.5, -70.0], "expected": 0.5}, {"input": [0.5, -69.5], "expected": 0.5}, {"input": [0.5, -69.0], "expected": 0.5}, {"input": [0.5, -68.5], "expected": 0.5}, {"input": [0.5, -68.0], "expected": 0.5}, {"input": [0.5, -67.5], "expected": 0.5}, {"input": [0.5, -67.0], "expected": 0.5}, {"input": [0.5, -66.5], "expected": 0.5}, {"input": [0.5, -66.0], "expected": 0.5}, {"input": [0.5, -65.5], "expected": 0.5}, {"input": [0.5, -65.0], "expected": 0.5}, {"input": [0.5, -64.5], "expected": 0.5}, {"input": [0.5, -64.0], "expected": 0.5}, {"input": [0.5, -63.5], "expected": 0.5}, {"input": [0.5, -63.0], "expected": 0.5}, {"input": [0.5, -62.5], "expected": 0.5}, {"input": [0.5, -62.0], "expected": 0.5}, {"input": [0.5, -61.5], "expected": 0.5}, {"input": [0.5, -61.0], "expected": 0.5}, {"input": [0.5, -60.5], "expected": 0.5}, {"input": [0.5, -60.0], "expected": 0.5}, {"input": [0.5, -59.5], "expected": 0.5}, {"input": [0.5, -59.0], "expected": 0.5}, {"input": [0.5, -58.5], "expected": 0.5}, {"input": [0.5, -58.0], "expected": 0.5}, {"input": [0.5, -57.5], "expected": 0.5}, {"input": [0.5, -57.0], "expected": 0.5}, {"input": [0.5, -56.5], "expected": 0.5}, {"input": [0.5, -56.0], "expected": 0.5}, {"input": [0.5, -55.5], "expected": 0.5}, {"input": [0.5, -55.0], "expected": 0.5}, {"input": [0.5, -54.5], "expected": 0.5}, {"input": [0.5, -54.0], "expected": 0.5}, {"input": [0.5, -53.5], "expected": 0.5}, {"input": [0.5, -53.0], "expected": 0.5}, {"input": [0.5, -52.5], "expected": 0.5}, {"input": [0.5, -52.0], "expected": 0.5}, {"input": [0.5, -51.5], "expected": 0.5}, {"input": [0.5, -51.0], "expected": 0.5}, {"input": [0.5, -50.5], "expected": 0.5}, {"input": [0.5, -50.0], "expected": 0.5}, {"input": [0.5, -49.5], "expected": 0.5}, {"input": [0.5, -49.0], "expected": 0.5}, {"input": [0.5, -48.5], "expected": 0.5}, {"input": [0.5, -48.0], "expected": 0.5}, {"input": [0.5, -47.5], "expected": 0.5}, {"input": [0.5, -47.0], "expected": 0.5}, {"input": [0.5, -46.5], "expected": 0.5}, {"input": [0.5, -46.0], "expected": 0.5}, {"input": [0.5, -45.5], "expected": 0.5}, {"input": [0.5, -45.0], "expected": 0.5}, {"input": [0.5, -44.5], "expected": 0.5}, {"input": [0.5, -44.0], "expected": 0.5}, {"input": [0.5, -43.5], "expected": 0.5}, {"input": [0.5, -43.0], "expected": 0.5}, {"input": [0.5, -42.5], "expected": 0.5}, {"input": [0.5, -42.0], "expected": 0.5}, {"input": [0.5, -41.5], "expected": 0.5}, {"input": [0.5, -41.0], "expected": 0.5}, {"input": [0.5, -40.5], "expected": 0.5}, {"input": [0.5, -40.0], "expected": 0.5}, {"input": [0.5, -39.5], "expected": 0.5}, {"input": [0.5, -39.0], "expected": 0.5}, {"input": [0.5, -38.5], "expected": 0.5}, {"input": [0.5, -38.0], "expected": 0.5}, {"input": [0.5, -37.5], "expected": 0.5}, {"input": [0.5, -37.0], "expected": 0.5}, {"input": [0.5, -36.5], "expected": 0.5000000000000001}, {"input": [0.5, -36.0], "expected": 0.5000000000000001}, {"input": [0.5, -35.5], "expected": 0.5000000000000002}, {"input": [0.5, -35.0], "expected": 0.5000000000000003}, {"input": [0.5, -34.5], "expected": 0.5000000000000007}, {"input": [0.5, -34.0], "expected": 0.500000000000001}, {"input": [0.5, -33.5], "expected": 0.5000000000000017}, {"input": [0.5, -33.0], "expected": 0.5000000000000028}, {"input": [0.5, -32.5], "expected": 0.5000000000000047}, {"input": [0.5, -32.0], "expected": 0.5000000000000077}, {"input": [0.5, -31.5], "expected": 0.5000000000000127}, {"input": [0.5, -31.0], "expected": 0.5000000000000209}, {"input": [0.5, -30.5], "expected": 0.5000000000000344}, {"input": [0.5, -30.0], "expected": 0.5000000000000567}, {"input": [0.5, -29.5], "expected": 0.5000000000000936}, {"input": [0.5, -29.0], "expected": 0.5000000000001543}, {"input": [0.5, -28.5], "expected": 0.5000000000002544}, {"input": [0.5, -28.0], "expected": 0.5000000000004193}, {"input": [0.5, -27.5], "expected": 0.5000000000006914}, {"input": [0.5, -27.0], "expected": 0.50000000000114}, {"input": [0.5, -26.5], "expected": 0.5000000000018795}, {"input": [0.5, -26.0], "expected": 0.5000000000030989}, {"input": [0.5, -25.5], "expected": 0.5000000000051091}, {"input": [0.5, -25.0], "expected": 0.5000000000084235}, {"input": [0.5, -24.5], "expected": 0.5000000000138879}, {"input": [0.5, -24.0], "expected": 0.5000000000228974}, {"input": [0.5, -23.5], "expected": 0.5000000000377514}, {"input": [0.5, -23.0], "expected": 0.5000000000622414}, {"input": [0.5, -22.5], "expected": 0.5000000001026188}, {"input": [0.5, -22.0], "expected": 0.5000000001691898}, {"input": [0.5, -21.5], "expected": 0.5000000002789468}, {"input": [0.5, -21.0], "expected": 0.5000000004599056}, {"input": [0.5, -20.5], "expected": 0.500000000758256}, {"input": [0.5, -20.0], "expected": 0.5000000012501529}, {"input": [0.5, -19.5], "expected": 0.5000000020611536}, {"input": [0.5, -19.0], "expected": 0.5000000033982678}, {"input": [0.5, -18.5], "expected": 0.5000000056027964}, {"input": [0.5, -18.0], "expected": 0.5000000092374496}, {"input": [0.5, -17.5], "expected": 0.5000000152299796}, {"input": [0.5, -17.0], "expected": 0.5000000251099912}, {"input": [0.5, -16.5], "expected": 0.5000000413993764}, {"input": [0.5, -16.0], "expected": 0.5000000682560314}, {"input": [0.5, -15.5], "expected": 0.5000001125351684}, {"input": [0.5, -15.0], "expected": 0.5000001855391191}, {"input": [0.5, -14.5], "expected": 0.5000003059022737}, {"input": [0.5, -14.0], "expected": 0.5000005043475354}, {"input": [0.5, -13.5], "expected": 0.5000008315283734}, {"input": [0.5, -13.0], "expected": 0.5000013709581467}, {"input": [0.5, -12.5], "expected": 0.5000022603268525}, {"input": [0.5, -12.0], "expected": 0.5000037266462282}, {"input": [0.5, -11.5], "expected": 0.5000061441934778}, {"input": [0.5, -11.0], "expected": 0.5000101300422896}, {"input": [0.5, -10.5], "expected": 0.5000167015613184}, {"input": [0.5, -10.0], "expected": 0.5000275360702287}, {"input": [0.5, -9.5], "expected": 0.5000453988992168}, {"input": [0.5, -9.0], "expected": 0.5000748490286293}, {"input": [0.5, -8.5], "expected": 0.5001234021897233}, {"input": [0.5, -8.0], "expected": 0.5002034476721294}, {"input": [0.5, -7.5], "expected": 0.5003354063728958}, {"input": [0.5, -7.0], "expected": 0.5005529314753608}, {"input": [0.5, -6.5], "expected": 0.5009114664537743}, {"input": [0.5, -6.0], "expected": 0.5015023101597543}, {"input": [0.5, -5.5], "expected": 0.5024756851377304}, {"input": [0.5, -5.0], "expected": 0.5040784432705707}, {"input": [0.5, -4.5], "expected": 0.506715348489118}, {"input": [0.5, -4.0], "expected": 0.5110477448485938}, {"input": [0.5, -3.5], "expected": 0.5181499279178098}, {"input": [0.5, -3.0], "expected": 0.5297504182726206}, {"input": [0.5, -2.5], "expected": 0.548587351573742}, {"input": [0.5, -2.0], "expected": 0.5788897342925496}, {"input": [0.5, -1.5], "expected": 0.6269280110429725}, {"input": [0.5, -1.0], "expected": 0.7014132779827524}, {"input": [0.5, -0.5], "expected": 0.8132616875182228}, {"input": [0.5, 0.0], "expected": 0.9740769841801067}, {"input": [0.5, 0.5], "expected": 1.1931471805599454}, {"input": [0.5, 1.0], "expected": 1.4740769841801067}, {"input": [0.5, 1.5], "expected": 1.8132616875182228}, {"input": [0.5, 2.0], "expected": 2.2014132779827524}, {"input": [0.5, 2.5], "expected": 2.6269280110429727}, {"input": [0.5, 3.0], "expected": 3.0788897342925496}, {"input": [0.5, 3.5], "expected": 3.548587351573742}, {"input": [0.5, 4.0], "expected": 4.029750418272621}, {"input": [0.5, 4.5], "expected": 4.5181499279178094}, {"input": [0.5, 5.0], "expected": 5.011047744848594}, {"input": [0.5, 5.5], "expected": 5.506715348489118}, {"input": [0.5, 6.0], "expected": 6.004078443270571}, {"input": [0.5, 6.5], "expected": 6.50247568513773}, {"input": [0.5, 7.0], "expected": 7.001502310159754}, {"input": [0.5, 7.5], "expected": 7.500911466453775}, {"input": [0.5, 8.0], "expected": 8.000552931475362}, {"input": [0.5, 8.5], "expected": 8.500335406372896}, {"input": [0.5, 9.0], "expected": 9.00020344767213}, {"input": [0.5, 9.5], "expected": 9.500123402189724}, {"input": [0.5, 10.0], "expected": 10.000074849028628}, {"input": [0.5, 10.5], "expected": 10.500045398899218}, {"input": [0.5, 11.0], "expected": 11.00002753607023}, {"input": [0.5, 11.5], "expected": 11.500016701561318}, {"input": [0.5, 12.0], "expected": 12.00001013004229}, {"input": [0.5, 12.5], "expected": 12.500006144193478}, {"input": [0.5, 13.0], "expected": 13.000003726646229}, {"input": [0.5, 13.5], "expected": 13.500002260326852}, {"input": [0.5, 14.0], "expected": 14.000001370958147}, {"input": [0.5, 14.5], "expected": 14.500000831528373}, {"input": [0.5, 15.0], "expected": 15.000000504347536}, {"input": [0.5, 15.5], "expected": 15.500000305902274}, {"input": [0.5, 16.0], "expected": 16.00000018553912}, {"input": [0.5, 16.5], "expected": 16.50000011253517}, {"input": [0.5, 17.0], "expected": 17.000000068256032}, {"input": [0.5, 17.5], "expected": 17.500000041399375}, {"input": [0.5, 18.0], "expected": 18.00000002510999}, {"input": [0.5, 18.5], "expected": 18.50000001522998}, {"input": [0.5, 19.0], "expected": 19.00000000923745}, {"input": [0.5, 19.5], "expected": 19.500000005602796}, {"input": [0.5, 20.0], "expected": 20.000000003398267}, {"input": [0.5, 20.5], "expected": 20.500000002061153}, {"input": [0.5, 21.0], "expected": 21.000000001250154}, {"input": [0.5, 21.5], "expected": 21.500000000758256}, {"input": [0.5, 22.0], "expected": 22.000000000459906}, {"input": [0.5, 22.5], "expected": 22.50000000027895}, {"input": [0.5, 23.0], "expected": 23.00000000016919}, {"input": [0.5, 23.5], "expected": 23.50000000010262}, {"input": [0.5, 24.0], "expected": 24.00000000006224}, {"input": [0.5, 24.5], "expected": 24.50000000003775}, {"input": [0.5, 25.0], "expected": 25.000000000022897}, {"input": [0.5, 25.5], "expected": 25.500000000013888}, {"input": [0.5, 26.0], "expected": 26.000000000008423}, {"input": [0.5, 26.5], "expected": 26.50000000000511}, {"input": [0.5, 27.0], "expected": 27.000000000003098}, {"input": [0.5, 27.5], "expected": 27.50000000000188}, {"input": [0.5, 28.0], "expected": 28.00000000000114}, {"input": [0.5, 28.5], "expected": 28.500000000000693}, {"input": [0.5, 29.0], "expected": 29.00000000000042}, {"input": [0.5, 29.5], "expected": 29.500000000000256}, {"input": [0.5, 30.0], "expected": 30.000000000000153}, {"input": [0.5, 30.5], "expected": 30.500000000000092}, {"input": [0.5, 31.0], "expected": 31.000000000000057}, {"input": [0.5, 31.5], "expected": 31.500000000000036}, {"input": [0.5, 32.0], "expected": 32.00000000000002}, {"input": [0.5, 32.5], "expected": 32.500000000000014}, {"input": [0.5, 33.0], "expected": 33.00000000000001}, {"input": [0.5, 33.5], "expected": 33.50000000000001}, {"input": [0.5, 34.0], "expected": 34.0}, {"input": [0.5, 34.5], "expected": 34.5}, {"input": [0.5, 35.0], "expected": 35.0}, {"input": [0.5, 35.5], "expected": 35.5}, {"input": [0.5, 36.0], "expected": 36.0}, {"input": [0.5, 36.5], "expected": 36.5}, {"input": [0.5, 37.0], "expected": 37.0}, {"input": [0.5, 37.5], "expected": 37.5}, {"input": [0.5, 38.0], "expected": 38.0}, {"input": [0.5, 38.5], "expected": 38.5}, {"input": [0.5, 39.0], "expected": 39.0}, {"input": [0.5, 39.5], "expected": 39.5}, {"input": [0.5, 40.0], "expected": 40.0}, {"input": [0.5, 40.5], "expected": 40.5}, {"input": [0.5, 41.0], "expected": 41.0}, {"input": [0.5, 41.5], "expected": 41.5}, {"input": [0.5, 42.0], "expected": 42.0}, {"input": [0.5, 42.5], "expected": 42.5}, {"input": [0.5, 43.0], "expected": 43.0}, {"input": [0.5, 43.5], "expected": 43.5}, {"input": [0.5, 44.0], "expected": 44.0}, {"input": [0.5, 44.5], "expected": 44.5}, {"input": [0.5, 45.0], "expected": 45.0}, {"input": [0.5, 45.5], "expected": 45.5}, {"input": [0.5, 46.0], "expected": 46.0}, {"input": [0.5, 46.5], "expected": 46.5}, {"input": [0.5, 47.0], "expected": 47.0}, {"input": [0.5, 47.5], "expected": 47.5}, {"input": [0.5, 48.0], "expected": 48.0}, {"input": [0.5, 48.5], "expected": 48.5}, {"input": [0.5, 49.0], "expected": 49.0}, {"input": [0.5, 49.5], "expected": 49.5}, {"input": [0.5, 50.0], "expected": 50.0}, {"input": [0.5, 50.5], "expected": 50.5}, {"input": [0.5, 51.0], "expected": 51.0}, {"input": [0.5, 51.5], "expected": 51.5}, {"input": [0.5, 52.0], "expected": 52.0}, {"input": [0.5, 52.5], "expected": 52.5}, {"input": [0.5, 53.0], "expected": 53.0}, {"input": [0.5, 53.5], "expected": 53.5}, {"input": [0.5, 54.0], "expected": 54.0}, {"input": [0.5, 54.5], "expected": 54.5}, {"input": [0.5, 55.0], "expected": 55.0}, {"input": [0.5, 55.5], "expected": 55.5}, {"input": [0.5, 56.0], "expected": 56.0}, {"input": [0.5, 56.5], "expected": 56.5}, {"input": [0.5, 57.0], "expected": 57.0}, {"input": [0.5, 57.5], "expected": 57.5}, {"input": [0.5, 58.0], "expected": 58.0}, {"input": [0.5, 58.5], "expected": 58.5}, {"input": [0.5, 59.0], "expected": 59.0}, {"input": [0.5, 59.5], "expected": 59.5}, {"input": [0.5, 60.0], "expected": 60.0}, {"input": [0.5, 60.5], "expected": 60.5}, {"input": [0.5, 61.0], "expected": 61.0}, {"input": [0.5, 61.5], "expected": 61.5}, {"input": [0.5, 62.0], "expected": 62.0}, {"input": [0.5, 62.5], "expected": 62.5}, {"input": [0.5, 63.0], "expected": 63.0}, {"input": [0.5, 63.5], "expected": 63.5}, {"input": [0.5, 64.0], "expected": 64.0}, {"input": [0.5, 64.5], "expected": 64.5}, {"input": [0.5, 65.0], "expected": 65.0}, {"input": [0.5, 65.5], "expected": 65.5}, {"input": [0.5, 66.0], "expected": 66.0}, {"input": [0.5, 66.5], "expected": 66.5}, {"input": [0.5, 67.0], "expected": 67.0}, {"input": [0.5, 67.5], "expected": 67.5}, {"input": [0.5, 68.0], "expected": 68.0}, {"input": [0.5, 68.5], "expected": 68.5}, {"input": [0.5, 69.0], "expected": 69.0}, {"input": [0.5, 69.5], "expected": 69.5}, {"input": [0.5, 70.0], "expected": 70.0}, {"input": [0.5, 70.5], "expected": 70.5}, {"input": [0.5, 71.0], "expected": 71.0}, {"input": [0.5, 71.5], "expected": 71.5}, {"input": [0.5, 72.0], "expected": 72.0}, {"input": [0.5, 72.5], "expected": 72.5}, {"input": [0.5, 73.0], "expected": 73.0}, {"input": [0.5, 73.5], "expected": 73.5}, {"input": [0.5, 74.0], "expected": 74.0}, {"input": [0.5, 74.5], "expected": 74.5}, {"input": [0.5, 75.0], "expected": 75.0}, {"input": [0.5, 75.5], "expected": 75.5}, {"input": [0.5, 76.0], "expected": 76.0}, {"input": [0.5, 76.5], "expected": 76.5}, {"input": [0.5, 77.0], "expected": 77.0}, {"input": [0.5, 77.5], "expected": 77.5}, {"input": [0.5, 78.0], "expected": 78.0}, {"input": [0.5, 78.5], "expected": 78.5}, {"input": [0.5, 79.0], "expected": 79.0}, {"input": [0.5, 79.5], "expected": 79.5}, {"input": [0.5, 80.0], "expected": 80.0}, {"input": [0.5, 80.5], "expected": 80.5}, {"input": [0.5, 81.0], "expected": 81.0}, {"input": [0.5, 81.5], "expected": 81.5}, {"input": [0.5, 82.0], "expected": 82.0}, {"input": [0.5, 82.5], "expected": 82.5}, {"input": [0.5, 83.0], "expected": 83.0}, {"input": [0.5, 83.5], "expected": 83.5}, {"input": [0.5, 84.0], "expected": 84.0}, {"input": [0.5, 84.5], "expected": 84.5}, {"input": [0.5, 85.0], "expected": 85.0}, {"input": [0.5, 85.5], "expected": 85.5}, {"input": [0.5, 86.0], "expected": 86.0}, {"input": [0.5, 86.5], "expected": 86.5}, {"input": [0.5, 87.0], "expected": 87.0}, {"input": [0.5, 87.5], "expected": 87.5}, {"input": [0.5, 88.0], "expected": 88.0}, {"input": [0.5, 88.5], "expected": 88.5}, {"input": [0.5, 89.0], "expected": 89.0}, {"input": [0.5, 89.5], "expected": 89.5}, {"input": [0.5, 90.0], "expected": 90.0}, {"input": [0.5, 90.5], "expected": 90.5}, {"input": [0.5, 91.0], "expected": 91.0}, {"input": [0.5, 91.5], "expected": 91.5}, {"input": [0.5, 92.0], "expected": 92.0}, {"input": [0.5, 92.5], "expected": 92.5}, {"input": [0.5, 93.0], "expected": 93.0}, {"input": [0.5, 93.5], "expected": 93.5}, {"input": [0.5, 94.0], "expected": 94.0}, {"input": [0.5, 94.5], "expected": 94.5}, {"input": [0.5, 95.0], "expected": 95.0}, {"input": [0.5, 95.5], "expected": 95.5}, {"input": [0.5, 96.0], "expected": 96.0}, {"input": [0.5, 96.5], "expected": 96.5}, {"input": [0.5, 97.0], "expected": 97.0}, {"input": [0.5, 97.5], "expected": 97.5}, {"input": [0.5, 98.0], "expected": 98.0}, {"input": [0.5, 98.5], "expected": 98.5}, {"input": [0.5, 99.0], "expected": 99.0}, {"input": [0.5, 99.5], "expected": 99.5}, {"input": [1.0, -100.0], "expected": 1.0}, {"input": [1.0, -99.5], "expected": 1.0}, {"input": [1.0, -99.0], "expected": 1.0}, {"input": [1.0, -98.5], "expected": 1.0}, {"input": [1.0, -98.0], "expected": 1.0}, {"input": [1.0, -97.5], "expected": 1.0}, {"input": [1.0, -97.0], "expected": 1.0}, {"input": [1.0, -96.5], "expected": 1.0}, {"input": [1.0, -96.0], "expected": 1.0}, {"input": [1.0, -95.5], "expected": 1.0}, {"input": [1.0, -95.0], "expected": 1.0}, {"input": [1.0, -94.5], "expected": 1.0}, {"input": [1.0, -94.0], "expected": 1.0}, {"input": [1.0, -93.5], "expected": 1.0}, {"input": [1.0, -93.0], "expected": 1.0}, {"input": [1.0, -92.5], "expected": 1.0}, {"input": [1.0, -92.0], "expected": 1.0}, {"input": [1.0, -91.5], "expected": 1.0}, {"input": [1.0, -91.0], "expected": 1.0}, {"input": [1.0, -90.5], "expected": 1.0}, {"input": [1.0, -90.0], "expected": 1.0}, {"input": [1.0, -89.5], "expected": 1.0}, {"input": [1.0, -89.0], "expected": 1.0}, {"input": [1.0, -88.5], "expected": 1.0}, {"input": [1.0, -88.0], "expected": 1.0}, {"input": [1.0, -87.5], "expected": 1.0}, {"input": [1.0, -87.0], "expected": 1.0}, {"input": [1.0, -86.5], "expected": 1.0}, {"input": [1.0, -86.0], "expected": 1.0}, {"input": [1.0, -85.5], "expected": 1.0}, {"input": [1.0, -85.0], "expected": 1.0}, {"input": [1.0, -84.5], "expected": 1.0}, {"input": [1.0, -84.0], "expected": 1.0}, {"input": [1.0, -83.5], "expected": 1.0}, {"input": [1.0, -83.0], "expected": 1.0}, {"input": [1.0, -82.5], "expected": 1.0}, {"input": [1.0, -82.0], "expected": 1.0}, {"input": [1.0, -81.5], "expected": 1.0}, {"input": [1.0, -81.0], "expected": 1.0}, {"input": [1.0, -80.5], "expected": 1.0}, {"input": [1.0, -80.0], "expected": 1.0}, {"input": [1.0, -79.5], "expected": 1.0}, {"input": [1.0, -79.0], "expected": 1.0}, {"input": [1.0, -78.5], "expected": 1.0}, {"input": [1.0, -78.0], "expected": 1.0}, {"input": [1.0, -77.5], "expected": 1.0}, {"input": [1.0, -77.0], "expected": 1.0}, {"input": [1.0, -76.5], "expected": 1.0}, {"input": [1.0, -76.0], "expected": 1.0}, {"input": [1.0, -75.5], "expected": 1.0}, {"input": [1.0, -75.0], "expected": 1.0}, {"input": [1.0, -74.5], "expected": 1.0}, {"input": [1.0, -74.0], "expected": 1.0}, {"input": [1.0, -73.5], "expected": 1.0}, {"input": [1.0, -73.0], "expected": 1.0}, {"input": [1.0, -72.5], "expected": 1.0}, {"input": [1.0, -72.0], "expected": 1.0}, {"input": [1.0, -71.5], "expected": 1.0}, {"input": [1.0, -71.0], "expected": 1.0}, {"input": [1.0, -70.5], "expected": 1.0}, {"input": [1.0, -70.0], "expected": 1.0}, {"input": [1.0, -69.5], "expected": 1.0}, {"input": [1.0, -69.0], "expected": 1.0}, {"input": [1.0, -68.5], "expected": 1.0}, {"input": [1.0, -68.0], "expected": 1.0}, {"input": [1.0, -67.5], "expected": 1.0}, {"input": [1.0, -67.0], "expected": 1.0}, {"input": [1.0, -66.5], "expected": 1.0}, {"input": [1.0, -66.0], "expected": 1.0}, {"input": [1.0, -65.5], "expected": 1.0}, {"input": [1.0, -65.0], "expected": 1.0}, {"input": [1.0, -64.5], "expected": 1.0}, {"input": [1.0, -64.0], "expected": 1.0}, {"input": [1.0, -63.5], "expected": 1.0}, {"input": [1.0, -63.0], "expected": 1.0}, {"input": [1.0, -62.5], "expected": 1.0}, {"input": [1.0, -62.0], "expected": 1.0}, {"input": [1.0, -61.5], "expected": 1.0}, {"input": [1.0, -61.0], "expected": 1.0}, {"input": [1.0, -60.5], "expected": 1.0}, {"input": [1.0, -60.0], "expected": 1.0}, {"input": [1.0, -59.5], "expected": 1.0}, {"input": [1.0, -59.0], "expected": 1.0}, {"input": [1.0, -58.5], "expected": 1.0}, {"input": [1.0, -58.0], "expected": 1.0}, {"input": [1.0, -57.5], "expected": 1.0}, {"input": [1.0, -57.0], "expected": 1.0}, {"input": [1.0, -56.5], "expected": 1.0}, {"input": [1.0, -56.0], "expected": 1.0}, {"input": [1.0, -55.5], "expected": 1.0}, {"input": [1.0, -55.0], "expected": 1.0}, {"input": [1.0, -54.5], "expected": 1.0}, {"input": [1.0, -54.0], "expected": 1.0}, {"input": [1.0, -53.5], "expected": 1.0}, {"input": [1.0, -53.0], "expected": 1.0}, {"input": [1.0, -52.5], "expected": 1.0}, {"input": [1.0, -52.0], "expected": 1.0}, {"input": [1.0, -51.5], "expected": 1.0}, {"input": [1.0, -51.0], "expected": 1.0}, {"input": [1.0, -50.5], "expected": 1.0}, {"input": [1.0, -50.0], "expected": 1.0}, {"input": [1.0, -49.5], "expected": 1.0}, {"input": [1.0, -49.0], "expected": 1.0}, {"input": [1.0, -48.5], "expected": 1.0}, {"input": [1.0, -48.0], "expected": 1.0}, {"input": [1.0, -47.5], "expected": 1.0}, {"input": [1.0, -47.0], "expected": 1.0}, {"input": [1.0, -46.5], "expected": 1.0}, {"input": [1.0, -46.0], "expected": 1.0}, {"input": [1.0, -45.5], "expected": 1.0}, {"input": [1.0, -45.0], "expected": 1.0}, {"input": [1.0, -44.5], "expected": 1.0}, {"input": [1.0, -44.0], "expected": 1.0}, {"input": [1.0, -43.5], "expected": 1.0}, {"input": [1.0, -43.0], "expected": 1.0}, {"input": [1.0, -42.5], "expected": 1.0}, {"input": [1.0, -42.0], "expected": 1.0}, {"input": [1.0, -41.5], "expected": 1.0}, {"input": [1.0, -41.0], "expected": 1.0}, {"input": [1.0, -40.5], "expected": 1.0}, {"input": [1.0, -40.0], "expected": 1.0}, {"input": [1.0, -39.5], "expected": 1.0}, {"input": [1.0, -39.0], "expected": 1.0}, {"input": [1.0, -38.5], "expected": 1.0}, {"input": [1.0, -38.0], "expected": 1.0}, {"input": [1.0, -37.5], "expected": 1.0}, {"input": [1.0, -37.0], "expected": 1.0}, {"input": [1.0, -36.5], "expected": 1.0}, {"input": [1.0, -36.0], "expected": 1.0}, {"input": [1.0, -35.5], "expected": 1.0000000000000002}, {"input": [1.0, -35.0], "expected": 1.0000000000000002}, {"input": [1.0, -34.5], "expected": 1.0000000000000004}, {"input": [1.0, -34.0], "expected": 1.0000000000000007}, {"input": [1.0, -33.5], "expected": 1.000000000000001}, {"input": [1.0, -33.0], "expected": 1.0000000000000018}, {"input": [1.0, -32.5], "expected": 1.0000000000000029}, {"input": [1.0, -32.0], "expected": 1.0000000000000047}, {"input": [1.0, -31.5], "expected": 1.0000000000000078}, {"input": [1.0, -31.0], "expected": 1.0000000000000127}, {"input": [1.0, -30.5], "expected": 1.0000000000000209}, {"input": [1.0, -30.0], "expected": 1.0000000000000344}, {"input": [1.0, -29.5], "expected": 1.0000000000000568}, {"input": [1.0, -29.0], "expected": 1.0000000000000935}, {"input": [1.0, -28.5], "expected": 1.0000000000001543}, {"input": [1.0, -28.0], "expected": 1.0000000000002545}, {"input": [1.0, -27.5], "expected": 1.0000000000004194}, {"input": [1.0, -27.0], "expected": 1.0000000000006914}, {"input": [1.0, -26.5], "expected": 1.00000000000114}, {"input": [1.0, -26.0], "expected": 1.0000000000018796}, {"input": [1.0, -25.5], "expected": 1.0000000000030989}, {"input": [1.0, -25.0], "expected": 1.000000000005109}, {"input": [1.0, -24.5], "expected": 1.0000000000084235}, {"input": [1.0, -24.0], "expected": 1.000000000013888}, {"input": [1.0, -23.5], "expected": 1.0000000000228972}, {"input": [1.0, -23.0], "expected": 1.0000000000377514}, {"input": [1.0, -22.5], "expected": 1.0000000000622415}, {"input": [1.0, -22.0], "expected": 1.0000000001026188}, {"input": [1.0, -21.5], "expected": 1.0000000001691898}, {"input": [1.0, -21.0], "expected": 1.0000000002789469}, {"input": [1.0, -20.5], "expected": 1.0000000004599054}, {"input": [1.0, -20.0], "expected": 1.0000000007582561}, {"input": [1.0, -19.5], "expected": 1.0000000012501529}, {"input": [1.0, -19.0], "expected": 1.0000000020611537}, {"input": [1.0, -18.5], "expected": 1.000000003398268}, {"input": [1.0, -18.0], "expected": 1.0000000056027964}, {"input": [1.0, -17.5], "expected": 1.0000000092374497}, {"input": [1.0, -17.0], "expected": 1.0000000152299797}, {"input": [1.0, -16.5], "expected": 1.0000000251099912}, {"input": [1.0, -16.0], "expected": 1.0000000413993764}, {"input": [1.0, -15.5], "expected": 1.0000000682560315}, {"input": [1.0, -15.0], "expected": 1.0000001125351683}, {"input": [1.0, -14.5], "expected": 1.000000185539119}, {"input": [1.0, -14.0], "expected": 1.0000003059022737}, {"input": [1.0, -13.5], "expected": 1.0000005043475353}, {"input": [1.0, -13.0], "expected": 1.0000008315283735}, {"input": [1.0, -12.5], "expected": 1.0000013709581466}, {"input": [1.0, -12.0], "expected": 1.0000022603268524}, {"input": [1.0, -11.5], "expected": 1.000003726646228}, {"input": [1.0, -11.0], "expected": 1.0000061441934778}, {"input": [1.0, -10.5], "expected": 1.0000101300422897}, {"input": [1.0, -10.0], "expected": 1.0000167015613184}, {"input": [1.0, -9.5], "expected": 1.0000275360702287}, {"input": [1.0, -9.0], "expected": 1.0000453988992168}, {"input": [1.0, -8.5], "expected": 1.0000748490286293}, {"input": [1.0, -8.0], "expected": 1.0001234021897232}, {"input": [1.0, -7.5], "expected": 1.0002034476721295}, {"input": [1.0, -7.0], "expected": 1.0003354063728958}, {"input": [1.0, -6.5], "expected": 1.0005529314753607}, {"input": [1.0, -6.0], "expected": 1.0009114664537742}, {"input": [1.0, -5.5], "expected": 1.0015023101597542}, {"input": [1.0, -5.0], "expected": 1.0024756851377306}, {"input": [1.0, -4.5], "expected": 1.0040784432705707}, {"input": [1.0, -4.0], "expected": 1.006715348489118}, {"input": [1.0, -3.5], "expected": 1.0110477448485937}, {"input": [1.0, -3.0], "expected": 1.0181499279178097}, {"input": [1.0, -2.5], "expected": 1.0297504182726205}, {"input": [1.0, -2.0], "expected": 1.048587351573742}, {"input": [1.0, -1.5], "expected": 1.0788897342925496}, {"input": [1.0, -1.0], "expected": 1.1269280110429725}, {"input": [1.0, -0.5], "expected": 1.2014132779827524}, {"input": [1.0, 0.0], "expected": 1.3132616875182228}, {"input": [1.0, 0.5], "expected": 1.4740769841801067}, {"input": [1.0, 1.0], "expected": 1.6931471805599454}, {"input": [1.0, 1.5], "expected": 1.9740769841801067}, {"input": [1.0, 2.0], "expected": 2.313261687518223}, {"input": [1.0, 2.5], "expected": 2.7014132779827524}, {"input": [1.0, 3.0], "expected": 3.1269280110429727}, {"input": [1.0, 3.5], "expected": 3.5788897342925496}, {"input": [1.0, 4.0], "expected": 4.048587351573742}, {"input": [1.0, 4.5], "expected": 4.529750418272621}, {"input": [1.0, 5.0], "expected": 5.0181499279178094}, {"input": [1.0, 5.5], "expected": 5.511047744848594}, {"input": [1.0, 6.0], "expected": 6.006715348489118}, {"input": [1.0, 6.5], "expected": 6.504078443270571}, {"input": [1.0, 7.0], "expected": 7.00247568513773}, {"input": [1.0, 7.5], "expected": 7.501502310159754}, {"input": [1.0, 8.0], "expected": 8.000911466453774}, {"input": [1.0, 8.5], "expected": 8.500552931475362}, {"input": [1.0, 9.0], "expected": 9.000335406372896}, {"input": [1.0, 9.5], "expected": 9.50020344767213}, {"input": [1.0, 10.0], "expected": 10.000123402189724}, {"input": [1.0, 10.5], "expected": 10.500074849028628}, {"input": [1.0, 11.0], "expected": 11.000045398899218}, {"input": [1.0, 11.5], "expected": 11.50002753607023}, {"input": [1.0, 12.0], "expected": 12.000016701561318}, {"input": [1.0, 12.5], "expected": 12.50001013004229}, {"input": [1.0, 13.0], "expected": 13.000006144193478}, {"input": [1.0, 13.5], "expected": 13.500003726646229}, {"input": [1.0, 14.0], "expected": 14.000002260326852}, {"input": [1.0, 14.5], "expected": 14.500001370958147}, {"input": [1.0, 15.0], "expected": 15.000000831528373}, {"input": [1.0, 15.5], "expected": 15.500000504347536}, {"input": [1.0, 16.0], "expected": 16.000000305902272}, {"input": [1.0, 16.5], "expected": 16.50000018553912}, {"input": [1.0, 17.0], "expected": 17.00000011253517}, {"input": [1.0, 17.5], "expected": 17.500000068256032}, {"input": [1.0, 18.0], "expected": 18.000000041399375}, {"input": [1.0, 18.5], "expected": 18.50000002510999}, {"input": [1.0, 19.0], "expected": 19.00000001522998}, {"input": [1.0, 19.5], "expected": 19.50000000923745}, {"input": [1.0, 20.0], "expected": 20.000000005602796}, {"input": [1.0, 20.5], "expected": 20.500000003398267}, {"input": [1.0, 21.0], "expected": 21.000000002061153}, {"input": [1.0, 21.5], "expected": 21.500000001250154}, {"input": [1.0, 22.0], "expected": 22.000000000758256}, {"input": [1.0, 22.5], "expected": 22.500000000459906}, {"input": [1.0, 23.0], "expected": 23.00000000027895}, {"input": [1.0, 23.5], "expected": 23.50000000016919}, {"input": [1.0, 24.0], "expected": 24.00000000010262}, {"input": [1.0, 24.5], "expected": 24.50000000006224}, {"input": [1.0, 25.0], "expected": 25.00000000003775}, {"input": [1.0, 25.5], "expected": 25.500000000022897}, {"input": [1.0, 26.0], "expected": 26.000000000013888}, {"input": [1.0, 26.5], "expected": 26.500000000008423}, {"input": [1.0, 27.0], "expected": 27.00000000000511}, {"input": [1.0, 27.5], "expected": 27.500000000003098}, {"input": [1.0, 28.0], "expected": 28.00000000000188}, {"input": [1.0, 28.5], "expected": 28.50000000000114}, {"input": [1.0, 29.0], "expected": 29.000000000000693}, {"input": [1.0, 29.5], "expected": 29.50000000000042}, {"input": [1.0, 30.0], "expected": 30.000000000000256}, {"input": [1.0, 30.5], "expected": 30.500000000000153}, {"input": [1.0, 31.0], "expected": 31.000000000000092}, {"input": [1.0, 31.5], "expected": 31.500000000000057}, {"input": [1.0, 32.0], "expected": 32.000000000000036}, {"input": [1.0, 32.5], "expected": 32.50000000000002}, {"input": [1.0, 33.0], "expected": 33.000000000000014}, {"input": [1.0, 33.5], "expected": 33.50000000000001}, {"input": [1.0, 34.0], "expected": 34.00000000000001}, {"input": [1.0, 34.5], "expected": 34.5}, {"input": [1.0, 35.0], "expected": 35.0}, {"input": [1.0, 35.5], "expected": 35.5}, {"input": [1.0, 36.0], "expected": 36.0}, {"input": [1.0, 36.5], "expected": 36.5}, {"input": [1.0, 37.0], "expected": 37.0}, {"input": [1.0, 37.5], "expected": 37.5}, {"input": [1.0, 38.0], "expected": 38.0}, {"input": [1.0, 38.5], "expected": 38.5}, {"input": [1.0, 39.0], "expected": 39.0}, {"input": [1.0, 39.5], "expected": 39.5}, {"input": [1.0, 40.0], "expected": 40.0}, {"input": [1.0, 40.5], "expected": 40.5}, {"input": [1.0, 41.0], "expected": 41.0}, {"input": [1.0, 41.5], "expected": 41.5}, {"input": [1.0, 42.0], "expected": 42.0}, {"input": [1.0, 42.5], "expected": 42.5}, {"input": [1.0, 43.0], "expected": 43.0}, {"input": [1.0, 43.5], "expected": 43.5}, {"input": [1.0, 44.0], "expected": 44.0}, {"input": [1.0, 44.5], "expected": 44.5}, {"input": [1.0, 45.0], "expected": 45.0}, {"input": [1.0, 45.5], "expected": 45.5}, {"input": [1.0, 46.0], "expected": 46.0}, {"input": [1.0, 46.5], "expected": 46.5}, {"input": [1.0, 47.0], "expected": 47.0}, {"input": [1.0, 47.5], "expected": 47.5}, {"input": [1.0, 48.0], "expected": 48.0}, {"input": [1.0, 48.5], "expected": 48.5}, {"input": [1.0, 49.0], "expected": 49.0}, {"input": [1.0, 49.5], "expected": 49.5}, {"input": [1.0, 50.0], "expected": 50.0}, {"input": [1.0, 50.5], "expected": 50.5}, {"input": [1.0, 51.0], "expected": 51.0}, {"input": [1.0, 51.5], "expected": 51.5}, {"input": [1.0, 52.0], "expected": 52.0}, {"input": [1.0, 52.5], "expected": 52.5}, {"input": [1.0, 53.0], "expected": 53.0}, {"input": [1.0, 53.5], "expected": 53.5}, {"input": [1.0, 54.0], "expected": 54.0}, {"input": [1.0, 54.5], "expected": 54.5}, {"input": [1.0, 55.0], "expected": 55.0}, {"input": [1.0, 55.5], "expected": 55.5}, {"input": [1.0, 56.0], "expected": 56.0}, {"input": [1.0, 56.5], "expected": 56.5}, {"input": [1.0, 57.0], "expected": 57.0}, {"input": [1.0, 57.5], "expected": 57.5}, {"input": [1.0, 58.0], "expected": 58.0}, {"input": [1.0, 58.5], "expected": 58.5}, {"input": [1.0, 59.0], "expected": 59.0}, {"input": [1.0, 59.5], "expected": 59.5}, {"input": [1.0, 60.0], "expected": 60.0}, {"input": [1.0, 60.5], "expected": 60.5}, {"input": [1.0, 61.0], "expected": 61.0}, {"input": [1.0, 61.5], "expected": 61.5}, {"input": [1.0, 62.0], "expected": 62.0}, {"input": [1.0, 62.5], "expected": 62.5}, {"input": [1.0, 63.0], "expected": 63.0}, {"input": [1.0, 63.5], "expected": 63.5}, {"input": [1.0, 64.0], "expected": 64.0}, {"input": [1.0, 64.5], "expected": 64.5}, {"input": [1.0, 65.0], "expected": 65.0}, {"input": [1.0, 65.5], "expected": 65.5}, {"input": [1.0, 66.0], "expected": 66.0}, {"input": [1.0, 66.5], "expected": 66.5}, {"input": [1.0, 67.0], "expected": 67.0}, {"input": [1.0, 67.5], "expected": 67.5}, {"input": [1.0, 68.0], "expected": 68.0}, {"input": [1.0, 68.5], "expected": 68.5}, {"input": [1.0, 69.0], "expected": 69.0}, {"input": [1.0, 69.5], "expected": 69.5}, {"input": [1.0, 70.0], "expected": 70.0}, {"input": [1.0, 70.5], "expected": 70.5}, {"input": [1.0, 71.0], "expected": 71.0}, {"input": [1.0, 71.5], "expected": 71.5}, {"input": [1.0, 72.0], "expected": 72.0}, {"input": [1.0, 72.5], "expected": 72.5}, {"input": [1.0, 73.0], "expected": 73.0}, {"input": [1.0, 73.5], "expected": 73.5}, {"input": [1.0, 74.0], "expected": 74.0}, {"input": [1.0, 74.5], "expected": 74.5}, {"input": [1.0, 75.0], "expected": 75.0}, {"input": [1.0, 75.5], "expected": 75.5}, {"input": [1.0, 76.0], "expected": 76.0}, {"input": [1.0, 76.5], "expected": 76.5}, {"input": [1.0, 77.0], "expected": 77.0}, {"input": [1.0, 77.5], "expected": 77.5}, {"input": [1.0, 78.0], "expected": 78.0}, {"input": [1.0, 78.5], "expected": 78.5}, {"input": [1.0, 79.0], "expected": 79.0}, {"input": [1.0, 79.5], "expected": 79.5}, {"input": [1.0, 80.0], "expected": 80.0}, {"input": [1.0, 80.5], "expected": 80.5}, {"input": [1.0, 81.0], "expected": 81.0}, {"input": [1.0, 81.5], "expected": 81.5}, {"input": [1.0, 82.0], "expected": 82.0}, {"input": [1.0, 82.5], "expected": 82.5}, {"input": [1.0, 83.0], "expected": 83.0}, {"input": [1.0, 83.5], "expected": 83.5}, {"input": [1.0, 84.0], "expected": 84.0}, {"input": [1.0, 84.5], "expected": 84.5}, {"input": [1.0, 85.0], "expected": 85.0}, {"input": [1.0, 85.5], "expected": 85.5}, {"input": [1.0, 86.0], "expected": 86.0}, {"input": [1.0, 86.5], "expected": 86.5}, {"input": [1.0, 87.0], "expected": 87.0}, {"input": [1.0, 87.5], "expected": 87.5}, {"input": [1.0, 88.0], "expected": 88.0}, {"input": [1.0, 88.5], "expected": 88.5}, {"input": [1.0, 89.0], "expected": 89.0}, {"input": [1.0, 89.5], "expected": 89.5}, {"input": [1.0, 90.0], "expected": 90.0}, {"input": [1.0, 90.5], "expected": 90.5}, {"input": [1.0, 91.0], "expected": 91.0}, {"input": [1.0, 91.5], "expected": 91.5}, {"input": [1.0, 92.0], "expected": 92.0}, {"input": [1.0, 92.5], "expected": 92.5}, {"input": [1.0, 93.0], "expected": 93.0}, {"input": [1.0, 93.5], "expected": 93.5}, {"input": [1.0, 94.0], "expected": 94.0}, {"input": [1.0, 94.5], "expected": 94.5}, {"input": [1.0, 95.0], "expected": 95.0}, {"input": [1.0, 95.5], "expected": 95.5}, {"input": [1.0, 96.0], "expected": 96.0}, {"input": [1.0, 96.5], "expected": 96.5}, {"input": [1.0, 97.0], "expected": 97.0}, {"input": [1.0, 97.5], "expected": 97.5}, {"input": [1.0, 98.0], "expected": 98.0}, {"input": [1.0, 98.5], "expected": 98.5}, {"input": [1.0, 99.0], "expected": 99.0}, {"input": [1.0, 99.5], "expected": 99.5}, {"input": [1.5, -100.0], "expected": 1.5}, {"input": [1.5, -99.5], "expected": 1.5}, {"input": [1.5, -99.0], "expected": 1.5}, {"input": [1.5, -98.5], "expected": 1.5}, {"input": [1.5, -98.0], "expected": 1.5}, {"input": [1.5, -97.5], "expected": 1.5}, {"input": [1.5, -97.0], "expected": 1.5}, {"input": [1.5, -96.5], "expected": 1.5}, {"input": [1.5, -96.0], "expected": 1.5}, {"input": [1.5, -95.5], "expected": 1.5}, {"input": [1.5, -95.0], "expected": 1.5}, {"input": [1.5, -94.5], "expected": 1.5}, {"input": [1.5, -94.0], "expected": 1.5}, {"input": [1.5, -93.5], "expected": 1.5}, {"input": [1.5, -93.0], "expected": 1.5}, {"input": [1.5, -92.5], "expected": 1.5}, {"input": [1.5, -92.0], "expected": 1.5}, {"input": [1.5, -91.5], "expected": 1.5}, {"input": [1.5, -91.0], "expected": 1.5}, {"input": [1.5, -90.5], "expected": 1.5}, {"input": [1.5, -90.0], "expected": 1.5}, {"input": [1.5, -89.5], "expected": 1.5}, {"input": [1.5, -89.0], "expected": 1.5}, {"input": [1.5, -88.5], "expected": 1.5}, {"input": [1.5, -88.0], "expected": 1.5}, {"input": [1.5, -87.5], "expected": 1.5}, {"input": [1.5, -87.0], "expected": 1.5}, {"input": [1.5, -86.5], "expected": 1.5}, {"input": [1.5, -86.0], "expected": 1.5}, {"input": [1.5, -85.5], "expected": 1.5}, {"input": [1.5, -85.0], "expected": 1.5}, {"input": [1.5, -84.5], "expected": 1.5}, {"input": [1.5, -84.0], "expected": 1.5}, {"input": [1.5, -83.5], "expected": 1.5}, {"input": [1.5, -83.0], "expected": 1.5}, {"input": [1.5, -82.5], "expected": 1.5}, {"input": [1.5, -82.0], "expected": 1.5}, {"input": [1.5, -81.5], "expected": 1.5}, {"input": [1.5, -81.0], "expected": 1.5}, {"input": [1.5, -80.5], "expected": 1.5}, {"input": [1.5, -80.0], "expected": 1.5}, {"input": [1.5, -79.5], "expected": 1.5}, {"input": [1.5, -79.0], "expected": 1.5}, {"input": [1.5, -78.5], "expected": 1.5}, {"input": [1.5, -78.0], "expected": 1.5}, {"input": [1.5, -77.5], "expected": 1.5}, {"input": [1.5, -77.0], "expected": 1.5}, {"input": [1.5, -76.5], "expected": 1.5}, {"input": [1.5, -76.0], "expected": 1.5}, {"input": [1.5, -75.5], "expected": 1.5}, {"input": [1.5, -75.0], "expected": 1.5}, {"input": [1.5, -74.5], "expected": 1.5}, {"input": [1.5, -74.0], "expected": 1.5}, {"input": [1.5, -73.5], "expected": 1.5}, {"input": [1.5, -73.0], "expected": 1.5}, {"input": [1.5, -72.5], "expected": 1.5}, {"input": [1.5, -72.0], "expected": 1.5}, {"input": [1.5, -71.5], "expected": 1.5}, {"input": [1.5, -71.0], "expected": 1.5}, {"input": [1.5, -70.5], "expected": 1.5}, {"input": [1.5, -70.0], "expected": 1.5}, {"input": [1.5, -69.5], "expected": 1.5}, {"input": [1.5, -69.0], "expected": 1.5}, {"input": [1.5, -68.5], "expected": 1.5}, {"input": [1.5, -68.0], "expected": 1.5}, {"input": [1.5, -67.5], "expected": 1.5}, {"input": [1.5, -67.0], "expected": 1.5}, {"input": [1.5, -66.5], "expected": 1.5}, {"input": [1.5, -66.0], "expected": 1.5}, {"input": [1.5, -65.5], "expected": 1.5}, {"input": [1.5, -65.0], "expected": 1.5}, {"input": [1.5, -64.5], "expected": 1.5}, {"input": [1.5, -64.0], "expected": 1.5}, {"input": [1.5, -63.5], "expected": 1.5}, {"input": [1.5, -63.0], "expected": 1.5}, {"input": [1.5, -62.5], "expected": 1.5}, {"input": [1.5, -62.0], "expected": 1.5}, {"input": [1.5, -61.5], "expected": 1.5}, {"input": [1.5, -61.0], "expected": 1.5}, {"input": [1.5, -60.5], "expected": 1.5}, {"input": [1.5, -60.0], "expected": 1.5}, {"input": [1.5, -59.5], "expected": 1.5}, {"input": [1.5, -59.0], "expected": 1.5}, {"input": [1.5, -58.5], "expected": 1.5}, {"input": [1.5, -58.0], "expected": 1.5}, {"input": [1.5, -57.5], "expected": 1.5}, {"input": [1.5, -57.0], "expected": 1.5}, {"input": [1.5, -56.5], "expected": 1.5}, {"input": [1.5, -56.0], "expected": 1.5}, {"input": [1.5, -55.5], "expected": 1.5}, {"input": [1.5, -55.0], "expected": 1.5}, {"input": [1.5, -54.5], "expected": 1.5}, {"input": [1.5, -54.0], "expected": 1.5}, {"input": [1.5, -53.5], "expected": 1.5}, {"input": [1.5, -53.0], "expected": 1.5}, {"input": [1.5, -52.5], "expected": 1.5}, {"input": [1.5, -52.0], "expected": 1.5}, {"input": [1.5, -51.5], "expected": 1.5}, {"input": [1.5, -51.0], "expected": 1.5}, {"input": [1.5, -50.5], "expected": 1.5}, {"input": [1.5, -50.0], "expected": 1.5}, {"input": [1.5, -49.5], "expected": 1.5}, {"input": [1.5, -49.0], "expected": 1.5}, {"input": [1.5, -48.5], "expected": 1.5}, {"input": [1.5, -48.0], "expected": 1.5}, {"input": [1.5, -47.5], "expected": 1.5}, {"input": [1.5, -47.0], "expected": 1.5}, {"input": [1.5, -46.5], "expected": 1.5}, {"input": [1.5, -46.0], "expected": 1.5}, {"input": [1.5, -45.5], "expected": 1.5}, {"input": [1.5, -45.0], "expected": 1.5}, {"input": [1.5, -44.5], "expected": 1.5}, {"input": [1.5, -44.0], "expected": 1.5}, {"input": [1.5, -43.5], "expected": 1.5}, {"input": [1.5, -43.0], "expected": 1.5}, {"input": [1.5, -42.5], "expected": 1.5}, {"input": [1.5, -42.0], "expected": 1.5}, {"input": [1.5, -41.5], "expected": 1.5}, {"input": [1.5, -41.0], "expected": 1.5}, {"input": [1.5, -40.5], "expected": 1.5}, {"input": [1.5, -40.0], "expected": 1.5}, {"input": [1.5, -39.5], "expected": 1.5}, {"input": [1.5, -39.0], "expected": 1.5}, {"input": [1.5, -38.5], "expected": 1.5}, {"input": [1.5, -38.0], "expected": 1.5}, {"input": [1.5, -37.5], "expected": 1.5}, {"input": [1.5, -37.0], "expected": 1.5}, {"input": [1.5, -36.5], "expected": 1.5}, {"input": [1.5, -36.0], "expected": 1.5}, {"input": [1.5, -35.5], "expected": 1.5}, {"input": [1.5, -35.0], "expected": 1.5000000000000002}, {"input": [1.5, -34.5], "expected": 1.5000000000000002}, {"input": [1.5, -34.0], "expected": 1.5000000000000004}, {"input": [1.5, -33.5], "expected": 1.5000000000000007}, {"input": [1.5, -33.0], "expected": 1.500000000000001}, {"input": [1.5, -32.5], "expected": 1.5000000000000018}, {"input": [1.5, -32.0], "expected": 1.5000000000000029}, {"input": [1.5, -31.5], "expected": 1.5000000000000047}, {"input": [1.5, -31.0], "expected": 1.5000000000000078}, {"input": [1.5, -30.5], "expected": 1.5000000000000127}, {"input": [1.5, -30.0], "expected": 1.5000000000000209}, {"input": [1.5, -29.5], "expected": 1.5000000000000344}, {"input": [1.5, -29.0], "expected": 1.5000000000000568}, {"input": [1.5, -28.5], "expected": 1.5000000000000935}, {"input": [1.5, -28.0], "expected": 1.5000000000001543}, {"input": [1.5, -27.5], "expected": 1.5000000000002545}, {"input": [1.5, -27.0], "expected": 1.5000000000004194}, {"input": [1.5, -26.5], "expected": 1.5000000000006914}, {"input": [1.5, -26.0], "expected": 1.50000000000114}, {"input": [1.5, -25.5], "expected": 1.5000000000018796}, {"input": [1.5, -25.0], "expected": 1.5000000000030989}, {"input": [1.5, -24.5], "expected": 1.500000000005109}, {"input": [1.5, -24.0], "expected": 1.5000000000084235}, {"input": [1.5, -23.5], "expected": 1.500000000013888}, {"input": [1.5, -23.0], "expected": 1.5000000000228972}, {"input": [1.5, -22.5], "expected": 1.5000000000377514}, {"input": [1.5, -22.0], "expected": 1.5000000000622415}, {"input": [1.5, -21.5], "expected": 1.5000000001026188}, {"input": [1.5, -21.0], "expected": 1.5000000001691898}, {"input": [1.5, -20.5], "expected": 1.5000000002789469}, {"input": [1.5, -20.0], "expected": 1.5000000004599054}, {"input": [1.5, -19.5], "expected": 1.5000000007582561}, {"input": [1.5, -19.0], "expected": 1.5000000012501529}, {"input": [1.5, -18.5], "expected": 1.5000000020611537}, {"input": [1.5, -18.0], "expected": 1.500000003398268}, {"input": [1.5, -17.5], "expected": 1.5000000056027964}, {"input": [1.5, -17.0], "expected": 1.5000000092374497}, {"input": [1.5, -16.5], "expected": 1.5000000152299797}, {"input": [1.5, -16.0], "expected": 1.5000000251099912}, {"input": [1.5, -15.5], "expected": 1.5000000413993764}, {"input": [1.5, -15.0], "expected": 1.5000000682560315}, {"input": [1.5, -14.5], "expected": 1.5000001125351683}, {"input": [1.5, -14.0], "expected": 1.500000185539119}, {"input": [1.5, -13.5], "expected": 1.5000003059022737}, {"input": [1.5, -13.0], "expected": 1.5000005043475353}, {"input": [1.5, -12.5], "expected": 1.5000008315283735}, {"input": [1.5, -12.0], "expected": 1.5000013709581466}, {"input": [1.5, -11.5], "expected": 1.5000022603268524}, {"input": [1.5, -11.0], "expected": 1.500003726646228}, {"input": [1.5, -10.5], "expected": 1.5000061441934778}, {"input": [1.5, -10.0], "expected": 1.5000101300422897}, {"input": [1.5, -9.5], "expected": 1.5000167015613184}, {"input": [1.5, -9.0], "expected": 1.5000275360702287}, {"input": [1.5, -8.5], "expected": 1.5000453988992168}, {"input": [1.5, -8.0], "expected": 1.5000748490286293}, {"input": [1.5, -7.5], "expected": 1.5001234021897232}, {"input": [1.5, -7.0], "expected": 1.5002034476721295}, {"input": [1.5, -6.5], "expected": 1.5003354063728958}, {"input": [1.5, -6.0], "expected": 1.5005529314753607}, {"input": [1.5, -5.5], "expected": 1.5009114664537742}, {"input": [1.5, -5.0], "expected": 1.5015023101597542}, {"input": [1.5, -4.5], "expected": 1.5024756851377306}, {"input": [1.5, -4.0], "expected": 1.5040784432705707}, {"input": [1.5, -3.5], "expected": 1.506715348489118}, {"input": [1.5, -3.0], "expected": 1.5110477448485937}, {"input": [1.5, -2.5], "expected": 1.5181499279178097}, {"input": [1.5, -2.0], "expected": 1.5297504182726205}, {"input": [1.5, -1.5], "expected": 1.548587351573742}, {"input": [1.5, -1.0], "expected": 1.5788897342925496}, {"input": [1.5, -0.5], "expected": 1.6269280110429725}, {"input": [1.5, 0.0], "expected": 1.7014132779827524}, {"input": [1.5, 0.5], "expected": 1.8132616875182228}, {"input": [1.5, 1.0], "expected": 1.9740769841801067}, {"input": [1.5, 1.5], "expected": 2.1931471805599454}, {"input": [1.5, 2.0], "expected": 2.4740769841801065}, {"input": [1.5, 2.5], "expected": 2.813261687518223}, {"input": [1.5, 3.0], "expected": 3.2014132779827524}, {"input": [1.5, 3.5], "expected": 3.6269280110429727}, {"input": [1.5, 4.0], "expected": 4.07888973429255}, {"input": [1.5, 4.5], "expected": 4.548587351573742}, {"input": [1.5, 5.0], "expected": 5.029750418272621}, {"input": [1.5, 5.5], "expected": 5.5181499279178094}, {"input": [1.5, 6.0], "expected": 6.011047744848594}, {"input": [1.5, 6.5], "expected": 6.506715348489118}, {"input": [1.5, 7.0], "expected": 7.004078443270571}, {"input": [1.5, 7.5], "expected": 7.50247568513773}, {"input": [1.5, 8.0], "expected": 8.001502310159754}, {"input": [1.5, 8.5], "expected": 8.500911466453774}, {"input": [1.5, 9.0], "expected": 9.000552931475362}, {"input": [1.5, 9.5], "expected": 9.500335406372896}, {"input": [1.5, 10.0], "expected": 10.00020344767213}, {"input": [1.5, 10.5], "expected": 10.500123402189724}, {"input": [1.5, 11.0], "expected": 11.000074849028628}, {"input": [1.5, 11.5], "expected": 11.500045398899218}, {"input": [1.5, 12.0], "expected": 12.00002753607023}, {"input": [1.5, 12.5], "expected": 12.500016701561318}, {"input": [1.5, 13.0], "expected": 13.00001013004229}, {"input": [1.5, 13.5], "expected": 13.500006144193478}, {"input": [1.5, 14.0], "expected": 14.000003726646229}, {"input": [1.5, 14.5], "expected": 14.500002260326852}, {"input": [1.5, 15.0], "expected": 15.000001370958147}, {"input": [1.5, 15.5], "expected": 15.500000831528373}, {"input": [1.5, 16.0], "expected": 16.000000504347536}, {"input": [1.5, 16.5], "expected": 16.500000305902272}, {"input": [1.5, 17.0], "expected": 17.00000018553912}, {"input": [1.5, 17.5], "expected": 17.50000011253517}, {"input": [1.5, 18.0], "expected": 18.000000068256032}, {"input": [1.5, 18.5], "expected": 18.500000041399375}, {"input": [1.5, 19.0], "expected": 19.00000002510999}, {"input": [1.5, 19.5], "expected": 19.50000001522998}, {"input": [1.5, 20.0], "expected": 20.00000000923745}, {"input": [1.5, 20.5], "expected": 20.500000005602796}, {"input": [1.5, 21.0], "expected": 21.000000003398267}, {"input": [1.5, 21.5], "expected": 21.500000002061153}, {"input": [1.5, 22.0], "expected": 22.000000001250154}, {"input": [1.5, 22.5], "expected": 22.500000000758256}, {"input": [1.5, 23.0], "expected": 23.000000000459906}, {"input": [1.5, 23.5], "expected": 23.50000000027895}, {"input": [1.5, 24.0], "expected": 24.00000000016919}, {"input": [1.5, 24.5], "expected": 24.50000000010262}, {"input": [1.5, 25.0], "expected": 25.00000000006224}, {"input": [1.5, 25.5], "expected": 25.50000000003775}, {"input": [1.5, 26.0], "expected": 26.000000000022897}, {"input": [1.5, 26.5], "expected": 26.500000000013888}, {"input": [1.5, 27.0], "expected": 27.000000000008423}, {"input": [1.5, 27.5], "expected": 27.50000000000511}, {"input": [1.5, 28.0], "expected": 28.000000000003098}, {"input": [1.5, 28.5], "expected": 28.50000000000188}, {"input": [1.5, 29.0], "expected": 29.00000000000114}, {"input": [1.5, 29.5], "expected": 29.500000000000693}, {"input": [1.5, 30.0], "expected": 30.00000000000042}, {"input": [1.5, 30.5], "expected": 30.500000000000256}, {"input": [1.5, 31.0], "expected": 31.000000000000153}, {"input": [1.5, 31.5], "expected": 31.500000000000092}, {"input": [1.5, 32.0], "expected": 32.00000000000006}, {"input": [1.5, 32.5], "expected": 32.500000000000036}, {"input": [1.5, 33.0], "expected": 33.00000000000002}, {"input": [1.5, 33.5], "expected": 33.500000000000014}, {"input": [1.5, 34.0], "expected": 34.00000000000001}, {"input": [1.5, 34.5], "expected": 34.50000000000001}, {"input": [1.5, 35.0], "expected": 35.0}, {"input": [1.5, 35.5], "expected": 35.5}, {"input": [1.5, 36.0], "expected": 36.0}, {"input": [1.5, 36.5], "expected": 36.5}, {"input": [1.5, 37.0], "expected": 37.0}, {"input": [1.5, 37.5], "expected": 37.5}, {"input": [1.5, 38.0], "expected": 38.0}, {"input": [1.5, 38.5], "expected": 38.5}, {"input": [1.5, 39.0], "expected": 39.0}, {"input": [1.5, 39.5], "expected": 39.5}, {"input": [1.5, 40.0], "expected": 40.0}, {"input": [1.5, 40.5], "expected": 40.5}, {"input": [1.5, 41.0], "expected": 41.0}, {"input": [1.5, 41.5], "expected": 41.5}, {"input": [1.5, 42.0], "expected": 42.0}, {"input": [1.5, 42.5], "expected": 42.5}, {"input": [1.5, 43.0], "expected": 43.0}, {"input": [1.5, 43.5], "expected": 43.5}, {"input": [1.5, 44.0], "expected": 44.0}, {"input": [1.5, 44.5], "expected": 44.5}, {"input": [1.5, 45.0], "expected": 45.0}, {"input": [1.5, 45.5], "expected": 45.5}, {"input": [1.5, 46.0], "expected": 46.0}, {"input": [1.5, 46.5], "expected": 46.5}, {"input": [1.5, 47.0], "expected": 47.0}, {"input": [1.5, 47.5], "expected": 47.5}, {"input": [1.5, 48.0], "expected": 48.0}, {"input": [1.5, 48.5], "expected": 48.5}, {"input": [1.5, 49.0], "expected": 49.0}, {"input": [1.5, 49.5], "expected": 49.5}, {"input": [1.5, 50.0], "expected": 50.0}, {"input": [1.5, 50.5], "expected": 50.5}, {"input": [1.5, 51.0], "expected": 51.0}, {"input": [1.5, 51.5], "expected": 51.5}, {"input": [1.5, 52.0], "expected": 52.0}, {"input": [1.5, 52.5], "expected": 52.5}, {"input": [1.5, 53.0], "expected": 53.0}, {"input": [1.5, 53.5], "expected": 53.5}, {"input": [1.5, 54.0], "expected": 54.0}, {"input": [1.5, 54.5], "expected": 54.5}, {"input": [1.5, 55.0], "expected": 55.0}, {"input": [1.5, 55.5], "expected": 55.5}, {"input": [1.5, 56.0], "expected": 56.0}, {"input": [1.5, 56.5], "expected": 56.5}, {"input": [1.5, 57.0], "expected": 57.0}, {"input": [1.5, 57.5], "expected": 57.5}, {"input": [1.5, 58.0], "expected": 58.0}, {"input": [1.5, 58.5], "expected": 58.5}, {"input": [1.5, 59.0], "expected": 59.0}, {"input": [1.5, 59.5], "expected": 59.5}, {"input": [1.5, 60.0], "expected": 60.0}, {"input": [1.5, 60.5], "expected": 60.5}, {"input": [1.5, 61.0], "expected": 61.0}, {"input": [1.5, 61.5], "expected": 61.5}, {"input": [1.5, 62.0], "expected": 62.0}, {"input": [1.5, 62.5], "expected": 62.5}, {"input": [1.5, 63.0], "expected": 63.0}, {"input": [1.5, 63.5], "expected": 63.5}, {"input": [1.5, 64.0], "expected": 64.0}, {"input": [1.5, 64.5], "expected": 64.5}, {"input": [1.5, 65.0], "expected": 65.0}, {"input": [1.5, 65.5], "expected": 65.5}, {"input": [1.5, 66.0], "expected": 66.0}, {"input": [1.5, 66.5], "expected": 66.5}, {"input": [1.5, 67.0], "expected": 67.0}, {"input": [1.5, 67.5], "expected": 67.5}, {"input": [1.5, 68.0], "expected": 68.0}, {"input": [1.5, 68.5], "expected": 68.5}, {"input": [1.5, 69.0], "expected": 69.0}, {"input": [1.5, 69.5], "expected": 69.5}, {"input": [1.5, 70.0], "expected": 70.0}, {"input": [1.5, 70.5], "expected": 70.5}, {"input": [1.5, 71.0], "expected": 71.0}, {"input": [1.5, 71.5], "expected": 71.5}, {"input": [1.5, 72.0], "expected": 72.0}, {"input": [1.5, 72.5], "expected": 72.5}, {"input": [1.5, 73.0], "expected": 73.0}, {"input": [1.5, 73.5], "expected": 73.5}, {"input": [1.5, 74.0], "expected": 74.0}, {"input": [1.5, 74.5], "expected": 74.5}, {"input": [1.5, 75.0], "expected": 75.0}, {"input": [1.5, 75.5], "expected": 75.5}, {"input": [1.5, 76.0], "expected": 76.0}, {"input": [1.5, 76.5], "expected": 76.5}, {"input": [1.5, 77.0], "expected": 77.0}, {"input": [1.5, 77.5], "expected": 77.5}, {"input": [1.5, 78.0], "expected": 78.0}, {"input": [1.5, 78.5], "expected": 78.5}, {"input": [1.5, 79.0], "expected": 79.0}, {"input": [1.5, 79.5], "expected": 79.5}, {"input": [1.5, 80.0], "expected": 80.0}, {"input": [1.5, 80.5], "expected": 80.5}, {"input": [1.5, 81.0], "expected": 81.0}, {"input": [1.5, 81.5], "expected": 81.5}, {"input": [1.5, 82.0], "expected": 82.0}, {"input": [1.5, 82.5], "expected": 82.5}, {"input": [1.5, 83.0], "expected": 83.0}, {"input": [1.5, 83.5], "expected": 83.5}, {"input": [1.5, 84.0], "expected": 84.0}, {"input": [1.5, 84.5], "expected": 84.5}, {"input": [1.5, 85.0], "expected": 85.0}, {"input": [1.5, 85.5], "expected": 85.5}, {"input": [1.5, 86.0], "expected": 86.0}, {"input": [1.5, 86.5], "expected": 86.5}, {"input": [1.5, 87.0], "expected": 87.0}, {"input": [1.5, 87.5], "expected": 87.5}, {"input": [1.5, 88.0], "expected": 88.0}, {"input": [1.5, 88.5], "expected": 88.5}, {"input": [1.5, 89.0], "expected": 89.0}, {"input": [1.5, 89.5], "expected": 89.5}, {"input": [1.5, 90.0], "expected": 90.0}, {"input": [1.5, 90.5], "expected": 90.5}, {"input": [1.5, 91.0], "expected": 91.0}, {"input": [1.5, 91.5], "expected": 91.5}, {"input": [1.5, 92.0], "expected": 92.0}, {"input": [1.5, 92.5], "expected": 92.5}, {"input": [1.5, 93.0], "expected": 93.0}, {"input": [1.5, 93.5], "expected": 93.5}, {"input": [1.5, 94.0], "expected": 94.0}, {"input": [1.5, 94.5], "expected": 94.5}, {"input": [1.5, 95.0], "expected": 95.0}, {"input": [1.5, 95.5], "expected": 95.5}, {"input": [1.5, 96.0], "expected": 96.0}, {"input": [1.5, 96.5], "expected": 96.5}, {"input": [1.5, 97.0], "expected": 97.0}, {"input": [1.5, 97.5], "expected": 97.5}, {"input": [1.5, 98.0], "expected": 98.0}, {"input": [1.5, 98.5], "expected": 98.5}, {"input": [1.5, 99.0], "expected": 99.0}, {"input": [1.5, 99.5], "expected": 99.5}, {"input": [2.0, -100.0], "expected": 2.0}, {"input": [2.0, -99.5], "expected": 2.0}, {"input": [2.0, -99.0], "expected": 2.0}, {"input": [2.0, -98.5], "expected": 2.0}, {"input": [2.0, -98.0], "expected": 2.0}, {"input": [2.0, -97.5], "expected": 2.0}, {"input": [2.0, -97.0], "expected": 2.0}, {"input": [2.0, -96.5], "expected": 2.0}, {"input": [2.0, -96.0], "expected": 2.0}, {"input": [2.0, -95.5], "expected": 2.0}, {"input": [2.0, -95.0], "expected": 2.0}, {"input": [2.0, -94.5], "expected": 2.0}, {"input": [2.0, -94.0], "expected": 2.0}, {"input": [2.0, -93.5], "expected": 2.0}, {"input": [2.0, -93.0], "expected": 2.0}, {"input": [2.0, -92.5], "expected": 2.0}, {"input": [2.0, -92.0], "expected": 2.0}, {"input": [2.0, -91.5], "expected": 2.0}, {"input": [2.0, -91.0], "expected": 2.0}, {"input": [2.0, -90.5], "expected": 2.0}, {"input": [2.0, -90.0], "expected": 2.0}, {"input": [2.0, -89.5], "expected": 2.0}, {"input": [2.0, -89.0], "expected": 2.0}, {"input": [2.0, -88.5], "expected": 2.0}, {"input": [2.0, -88.0], "expected": 2.0}, {"input": [2.0, -87.5], "expected": 2.0}, {"input": [2.0, -87.0], "expected": 2.0}, {"input": [2.0, -86.5], "expected": 2.0}, {"input": [2.0, -86.0], "expected": 2.0}, {"input": [2.0, -85.5], "expected": 2.0}, {"input": [2.0, -85.0], "expected": 2.0}, {"input": [2.0, -84.5], "expected": 2.0}, {"input": [2.0, -84.0], "expected": 2.0}, {"input": [2.0, -83.5], "expected": 2.0}, {"input": [2.0, -83.0], "expected": 2.0}, {"input": [2.0, -82.5], "expected": 2.0}, {"input": [2.0, -82.0], "expected": 2.0}, {"input": [2.0, -81.5], "expected": 2.0}, {"input": [2.0, -81.0], "expected": 2.0}, {"input": [2.0, -80.5], "expected": 2.0}, {"input": [2.0, -80.0], "expected": 2.0}, {"input": [2.0, -79.5], "expected": 2.0}, {"input": [2.0, -79.0], "expected": 2.0}, {"input": [2.0, -78.5], "expected": 2.0}, {"input": [2.0, -78.0], "expected": 2.0}, {"input": [2.0, -77.5], "expected": 2.0}, {"input": [2.0, -77.0], "expected": 2.0}, {"input": [2.0, -76.5], "expected": 2.0}, {"input": [2.0, -76.0], "expected": 2.0}, {"input": [2.0, -75.5], "expected": 2.0}, {"input": [2.0, -75.0], "expected": 2.0}, {"input": [2.0, -74.5], "expected": 2.0}, {"input": [2.0, -74.0], "expected": 2.0}, {"input": [2.0, -73.5], "expected": 2.0}, {"input": [2.0, -73.0], "expected": 2.0}, {"input": [2.0, -72.5], "expected": 2.0}, {"input": [2.0, -72.0], "expected": 2.0}, {"input": [2.0, -71.5], "expected": 2.0}, {"input": [2.0, -71.0], "expected": 2.0}, {"input": [2.0, -70.5], "expected": 2.0}, {"input": [2.0, -70.0], "expected": 2.0}, {"input": [2.0, -69.5], "expected": 2.0}, {"input": [2.0, -69.0], "expected": 2.0}, {"input": [2.0, -68.5], "expected": 2.0}, {"input": [2.0, -68.0], "expected": 2.0}, {"input": [2.0, -67.5], "expected": 2.0}, {"input": [2.0, -67.0], "expected": 2.0}, {"input": [2.0, -66.5], "expected": 2.0}, {"input": [2.0, -66.0], "expected": 2.0}, {"input": [2.0, -65.5], "expected": 2.0}, {"input": [2.0, -65.0], "expected": 2.0}, {"input": [2.0, -64.5], "expected": 2.0}, {"input": [2.0, -64.0], "expected": 2.0}, {"input": [2.0, -63.5], "expected": 2.0}, {"input": [2.0, -63.0], "expected": 2.0}, {"input": [2.0, -62.5], "expected": 2.0}, {"input": [2.0, -62.0], "expected": 2.0}, {"input": [2.0, -61.5], "expected": 2.0}, {"input": [2.0, -61.0], "expected": 2.0}, {"input": [2.0, -60.5], "expected": 2.0}, {"input": [2.0, -60.0], "expected": 2.0}, {"input": [2.0, -59.5], "expected": 2.0}, {"input": [2.0, -59.0], "expected": 2.0}, {"input": [2.0, -58.5], "expected": 2.0}, {"input": [2.0, -58.0], "expected": 2.0}, {"input": [2.0, -57.5], "expected": 2.0}, {"input": [2.0, -57.0], "expected": 2.0}, {"input": [2.0, -56.5], "expected": 2.0}, {"input": [2.0, -56.0], "expected": 2.0}, {"input": [2.0, -55.5], "expected": 2.0}, {"input": [2.0, -55.0], "expected": 2.0}, {"input": [2.0, -54.5], "expected": 2.0}, {"input": [2.0, -54.0], "expected": 2.0}, {"input": [2.0, -53.5], "expected": 2.0}, {"input": [2.0, -53.0], "expected": 2.0}, {"input": [2.0, -52.5], "expected": 2.0}, {"input": [2.0, -52.0], "expected": 2.0}, {"input": [2.0, -51.5], "expected": 2.0}, {"input": [2.0, -51.0], "expected": 2.0}, {"input": [2.0, -50.5], "expected": 2.0}, {"input": [2.0, -50.0], "expected": 2.0}, {"input": [2.0, -49.5], "expected": 2.0}, {"input": [2.0, -49.0], "expected": 2.0}, {"input": [2.0, -48.5], "expected": 2.0}, {"input": [2.0, -48.0], "expected": 2.0}, {"input": [2.0, -47.5], "expected": 2.0}, {"input": [2.0, -47.0], "expected": 2.0}, {"input": [2.0, -46.5], "expected": 2.0}, {"input": [2.0, -46.0], "expected": 2.0}, {"input": [2.0, -45.5], "expected": 2.0}, {"input": [2.0, -45.0], "expected": 2.0}, {"input": [2.0, -44.5], "expected": 2.0}, {"input": [2.0, -44.0], "expected": 2.0}, {"input": [2.0, -43.5], "expected": 2.0}, {"input": [2.0, -43.0], "expected": 2.0}, {"input": [2.0, -42.5], "expected": 2.0}, {"input": [2.0, -42.0], "expected": 2.0}, {"input": [2.0, -41.5], "expected": 2.0}, {"input": [2.0, -41.0], "expected": 2.0}, {"input": [2.0, -40.5], "expected": 2.0}, {"input": [2.0, -40.0], "expected": 2.0}, {"input": [2.0, -39.5], "expected": 2.0}, {"input": [2.0, -39.0], "expected": 2.0}, {"input": [2.0, -38.5], "expected": 2.0}, {"input": [2.0, -38.0], "expected": 2.0}, {"input": [2.0, -37.5], "expected": 2.0}, {"input": [2.0, -37.0], "expected": 2.0}, {"input": [2.0, -36.5], "expected": 2.0}, {"input": [2.0, -36.0], "expected": 2.0}, {"input": [2.0, -35.5], "expected": 2.0}, {"input": [2.0, -35.0], "expected": 2.0}, {"input": [2.0, -34.5], "expected": 2.0}, {"input": [2.0, -34.0], "expected": 2.0000000000000004}, {"input": [2.0, -33.5], "expected": 2.0000000000000004}, {"input": [2.0, -33.0], "expected": 2.0000000000000004}, {"input": [2.0, -32.5], "expected": 2.000000000000001}, {"input": [2.0, -32.0], "expected": 2.0000000000000018}, {"input": [2.0, -31.5], "expected": 2.0000000000000027}, {"input": [2.0, -31.0], "expected": 2.0000000000000044}, {"input": [2.0, -30.5], "expected": 2.0000000000000075}, {"input": [2.0, -30.0], "expected": 2.000000000000013}, {"input": [2.0, -29.5], "expected": 2.000000000000021}, {"input": [2.0, -29.0], "expected": 2.0000000000000346}, {"input": [2.0, -28.5], "expected": 2.000000000000057}, {"input": [2.0, -28.0], "expected": 2.0000000000000937}, {"input": [2.0, -27.5], "expected": 2.000000000000154}, {"input": [2.0, -27.0], "expected": 2.0000000000002545}, {"input": [2.0, -26.5], "expected": 2.000000000000419}, {"input": [2.0, -26.0], "expected": 2.0000000000006914}, {"input": [2.0, -25.5], "expected": 2.00000000000114}, {"input": [2.0, -25.0], "expected": 2.0000000000018794}, {"input": [2.0, -24.5], "expected": 2.000000000003099}, {"input": [2.0, -24.0], "expected": 2.0000000000051092}, {"input": [2.0, -23.5], "expected": 2.0000000000084235}, {"input": [2.0, -23.0], "expected": 2.000000000013888}, {"input": [2.0, -22.5], "expected": 2.0000000000228972}, {"input": [2.0, -22.0], "expected": 2.000000000037751}, {"input": [2.0, -21.5], "expected": 2.0000000000622413}, {"input": [2.0, -21.0], "expected": 2.000000000102619}, {"input": [2.0, -20.5], "expected": 2.00000000016919}, {"input": [2.0, -20.0], "expected": 2.0000000002789466}, {"input": [2.0, -19.5], "expected": 2.0000000004599054}, {"input": [2.0, -19.0], "expected": 2.000000000758256}, {"input": [2.0, -18.5], "expected": 2.000000001250153}, {"input": [2.0, -18.0], "expected": 2.0000000020611535}, {"input": [2.0, -17.5], "expected": 2.000000003398268}, {"input": [2.0, -17.0], "expected": 2.0000000056027964}, {"input": [2.0, -16.5], "expected": 2.0000000092374495}, {"input": [2.0, -16.0], "expected": 2.0000000152299795}, {"input": [2.0, -15.5], "expected": 2.0000000251099914}, {"input": [2.0, -15.0], "expected": 2.0000000413993764}, {"input": [2.0, -14.5], "expected": 2.0000000682560315}, {"input": [2.0, -14.0], "expected": 2.0000001125351683}, {"input": [2.0, -13.5], "expected": 2.000000185539119}, {"input": [2.0, -13.0], "expected": 2.0000003059022737}, {"input": [2.0, -12.5], "expected": 2.0000005043475353}, {"input": [2.0, -12.0], "expected": 2.0000008315283733}, {"input": [2.0, -11.5], "expected": 2.0000013709581466}, {"input": [2.0, -11.0], "expected": 2.0000022603268524}, {"input": [2.0, -10.5], "expected": 2.000003726646228}, {"input": [2.0, -10.0], "expected": 2.0000061441934776}, {"input": [2.0, -9.5], "expected": 2.0000101300422894}, {"input": [2.0, -9.0], "expected": 2.0000167015613184}, {"input": [2.0, -8.5], "expected": 2.000027536070229}, {"input": [2.0, -8.0], "expected": 2.000045398899217}, {"input": [2.0, -7.5], "expected": 2.0000748490286293}, {"input": [2.0, -7.0], "expected": 2.000123402189723}, {"input": [2.0, -6.5], "expected": 2.0002034476721295}, {"input": [2.0, -6.0], "expected": 2.000335406372896}, {"input": [2.0, -5.5], "expected": 2.0005529314753607}, {"input": [2.0, -5.0], "expected": 2.000911466453774}, {"input": [2.0, -4.5], "expected": 2.001502310159754}, {"input": [2.0, -4.0], "expected": 2.0024756851377306}, {"input": [2.0, -3.5], "expected": 2.0040784432705707}, {"input": [2.0, -3.0], "expected": 2.0067153484891183}, {"input": [2.0, -2.5], "expected": 2.011047744848594}, {"input": [2.0, -2.0], "expected": 2.01814992791781}, {"input": [2.0, -1.5], "expected": 2.0297504182726205}, {"input": [2.0, -1.0], "expected": 2.048587351573742}, {"input": [2.0, -0.5], "expected": 2.0788897342925496}, {"input": [2.0, 0.0], "expected": 2.1269280110429727}, {"input": [2.0, 0.5], "expected": 2.2014132779827524}, {"input": [2.0, 1.0], "expected": 2.313261687518223}, {"input": [2.0, 1.5], "expected": 2.4740769841801065}, {"input": [2.0, 2.0], "expected": 2.6931471805599454}, {"input": [2.0, 2.5], "expected": 2.9740769841801065}, {"input": [2.0, 3.0], "expected": 3.313261687518223}, {"input": [2.0, 3.5], "expected": 3.7014132779827524}, {"input": [2.0, 4.0], "expected": 4.126928011042972}, {"input": [2.0, 4.5], "expected": 4.57888973429255}, {"input": [2.0, 5.0], "expected": 5.048587351573742}, {"input": [2.0, 5.5], "expected": 5.529750418272621}, {"input": [2.0, 6.0], "expected": 6.0181499279178094}, {"input": [2.0, 6.5], "expected": 6.511047744848594}, {"input": [2.0, 7.0], "expected": 7.006715348489118}, {"input": [2.0, 7.5], "expected": 7.504078443270571}, {"input": [2.0, 8.0], "expected": 8.00247568513773}, {"input": [2.0, 8.5], "expected": 8.501502310159754}, {"input": [2.0, 9.0], "expected": 9.000911466453774}, {"input": [2.0, 9.5], "expected": 9.500552931475362}, {"input": [2.0, 10.0], "expected": 10.000335406372896}, {"input": [2.0, 10.5], "expected": 10.50020344767213}, {"input": [2.0, 11.0], "expected": 11.000123402189724}, {"input": [2.0, 11.5], "expected": 11.500074849028628}, {"input": [2.0, 12.0], "expected": 12.000045398899218}, {"input": [2.0, 12.5], "expected": 12.50002753607023}, {"input": [2.0, 13.0], "expected": 13.000016701561318}, {"input": [2.0, 13.5], "expected": 13.50001013004229}, {"input": [2.0, 14.0], "expected": 14.000006144193478}, {"input": [2.0, 14.5], "expected": 14.500003726646229}, {"input": [2.0, 15.0], "expected": 15.000002260326852}, {"input": [2.0, 15.5], "expected": 15.500001370958147}, {"input": [2.0, 16.0], "expected": 16.000000831528375}, {"input": [2.0, 16.5], "expected": 16.500000504347536}, {"input": [2.0, 17.0], "expected": 17.000000305902272}, {"input": [2.0, 17.5], "expected": 17.50000018553912}, {"input": [2.0, 18.0], "expected": 18.00000011253517}, {"input": [2.0, 18.5], "expected": 18.500000068256032}, {"input": [2.0, 19.0], "expected": 19.000000041399375}, {"input": [2.0, 19.5], "expected": 19.50000002510999}, {"input": [2.0, 20.0], "expected": 20.00000001522998}, {"input": [2.0, 20.5], "expected": 20.50000000923745}, {"input": [2.0, 21.0], "expected": 21.000000005602796}, {"input": [2.0, 21.5], "expected": 21.500000003398267}, {"input": [2.0, 22.0], "expected": 22.000000002061153}, {"input": [2.0, 22.5], "expected": 22.500000001250154}, {"input": [2.0, 23.0], "expected": 23.000000000758256}, {"input": [2.0, 23.5], "expected": 23.500000000459906}, {"input": [2.0, 24.0], "expected": 24.00000000027895}, {"input": [2.0, 24.5], "expected": 24.50000000016919}, {"input": [2.0, 25.0], "expected": 25.00000000010262}, {"input": [2.0, 25.5], "expected": 25.50000000006224}, {"input": [2.0, 26.0], "expected": 26.00000000003775}, {"input": [2.0, 26.5], "expected": 26.500000000022897}, {"input": [2.0, 27.0], "expected": 27.000000000013888}, {"input": [2.0, 27.5], "expected": 27.500000000008423}, {"input": [2.0, 28.0], "expected": 28.00000000000511}, {"input": [2.0, 28.5], "expected": 28.500000000003098}, {"input": [2.0, 29.0], "expected": 29.00000000000188}, {"input": [2.0, 29.5], "expected": 29.50000000000114}, {"input": [2.0, 30.0], "expected": 30.000000000000693}, {"input": [2.0, 30.5], "expected": 30.50000000000042}, {"input": [2.0, 31.0], "expected": 31.000000000000256}, {"input": [2.0, 31.5], "expected": 31.500000000000153}, {"input": [2.0, 32.0], "expected": 32.00000000000009}, {"input": [2.0, 32.5], "expected": 32.50000000000006}, {"input": [2.0, 33.0], "expected": 33.000000000000036}, {"input": [2.0, 33.5], "expected": 33.50000000000002}, {"input": [2.0, 34.0], "expected": 34.000000000000014}, {"input": [2.0, 34.5], "expected": 34.50000000000001}, {"input": [2.0, 35.0], "expected": 35.00000000000001}, {"input": [2.0, 35.5], "expected": 35.5}, {"input": [2.0, 36.0], "expected": 36.0}, {"input": [2.0, 36.5], "expected": 36.5}, {"input": [2.0, 37.0], "expected": 37.0}, {"input": [2.0, 37.5], "expected": 37.5}, {"input": [2.0, 38.0], "expected": 38.0}, {"input": [2.0, 38.5], "expected": 38.5}, {"input": [2.0, 39.0], "expected": 39.0}, {"input": [2.0, 39.5], "expected": 39.5}, {"input": [2.0, 40.0], "expected": 40.0}, {"input": [2.0, 40.5], "expected": 40.5}, {"input": [2.0, 41.0], "expected": 41.0}, {"input": [2.0, 41.5], "expected": 41.5}, {"input": [2.0, 42.0], "expected": 42.0}, {"input": [2.0, 42.5], "expected": 42.5}, {"input": [2.0, 43.0], "expected": 43.0}, {"input": [2.0, 43.5], "expected": 43.5}, {"input": [2.0, 44.0], "expected": 44.0}, {"input": [2.0, 44.5], "expected": 44.5}, {"input": [2.0, 45.0], "expected": 45.0}, {"input": [2.0, 45.5], "expected": 45.5}, {"input": [2.0, 46.0], "expected": 46.0}, {"input": [2.0, 46.5], "expected": 46.5}, {"input": [2.0, 47.0], "expected": 47.0}, {"input": [2.0, 47.5], "expected": 47.5}, {"input": [2.0, 48.0], "expected": 48.0}, {"input": [2.0, 48.5], "expected": 48.5}, {"input": [2.0, 49.0], "expected": 49.0}, {"input": [2.0, 49.5], "expected": 49.5}, {"input": [2.0, 50.0], "expected": 50.0}, {"input": [2.0, 50.5], "expected": 50.5}, {"input": [2.0, 51.0], "expected": 51.0}, {"input": [2.0, 51.5], "expected": 51.5}, {"input": [2.0, 52.0], "expected": 52.0}, {"input": [2.0, 52.5], "expected": 52.5}, {"input": [2.0, 53.0], "expected": 53.0}, {"input": [2.0, 53.5], "expected": 53.5}, {"input": [2.0, 54.0], "expected": 54.0}, {"input": [2.0, 54.5], "expected": 54.5}, {"input": [2.0, 55.0], "expected": 55.0}, {"input": [2.0, 55.5], "expected": 55.5}, {"input": [2.0, 56.0], "expected": 56.0}, {"input": [2.0, 56.5], "expected": 56.5}, {"input": [2.0, 57.0], "expected": 57.0}, {"input": [2.0, 57.5], "expected": 57.5}, {"input": [2.0, 58.0], "expected": 58.0}, {"input": [2.0, 58.5], "expected": 58.5}, {"input": [2.0, 59.0], "expected": 59.0}, {"input": [2.0, 59.5], "expected": 59.5}, {"input": [2.0, 60.0], "expected": 60.0}, {"input": [2.0, 60.5], "expected": 60.5}, {"input": [2.0, 61.0], "expected": 61.0}, {"input": [2.0, 61.5], "expected": 61.5}, {"input": [2.0, 62.0], "expected": 62.0}, {"input": [2.0, 62.5], "expected": 62.5}, {"input": [2.0, 63.0], "expected": 63.0}, {"input": [2.0, 63.5], "expected": 63.5}, {"input": [2.0, 64.0], "expected": 64.0}, {"input": [2.0, 64.5], "expected": 64.5}, {"input": [2.0, 65.0], "expected": 65.0}, {"input": [2.0, 65.5], "expected": 65.5}, {"input": [2.0, 66.0], "expected": 66.0}, {"input": [2.0, 66.5], "expected": 66.5}, {"input": [2.0, 67.0], "expected": 67.0}, {"input": [2.0, 67.5], "expected": 67.5}, {"input": [2.0, 68.0], "expected": 68.0}, {"input": [2.0, 68.5], "expected": 68.5}, {"input": [2.0, 69.0], "expected": 69.0}, {"input": [2.0, 69.5], "expected": 69.5}, {"input": [2.0, 70.0], "expected": 70.0}, {"input": [2.0, 70.5], "expected": 70.5}, {"input": [2.0, 71.0], "expected": 71.0}, {"input": [2.0, 71.5], "expected": 71.5}, {"input": [2.0, 72.0], "expected": 72.0}, {"input": [2.0, 72.5], "expected": 72.5}, {"input": [2.0, 73.0], "expected": 73.0}, {"input": [2.0, 73.5], "expected": 73.5}, {"input": [2.0, 74.0], "expected": 74.0}, {"input": [2.0, 74.5], "expected": 74.5}, {"input": [2.0, 75.0], "expected": 75.0}, {"input": [2.0, 75.5], "expected": 75.5}, {"input": [2.0, 76.0], "expected": 76.0}, {"input": [2.0, 76.5], "expected": 76.5}, {"input": [2.0, 77.0], "expected": 77.0}, {"input": [2.0, 77.5], "expected": 77.5}, {"input": [2.0, 78.0], "expected": 78.0}, {"input": [2.0, 78.5], "expected": 78.5}, {"input": [2.0, 79.0], "expected": 79.0}, {"input": [2.0, 79.5], "expected": 79.5}, {"input": [2.0, 80.0], "expected": 80.0}, {"input": [2.0, 80.5], "expected": 80.5}, {"input": [2.0, 81.0], "expected": 81.0}, {"input": [2.0, 81.5], "expected": 81.5}, {"input": [2.0, 82.0], "expected": 82.0}, {"input": [2.0, 82.5], "expected": 82.5}, {"input": [2.0, 83.0], "expected": 83.0}, {"input": [2.0, 83.5], "expected": 83.5}, {"input": [2.0, 84.0], "expected": 84.0}, {"input": [2.0, 84.5], "expected": 84.5}, {"input": [2.0, 85.0], "expected": 85.0}, {"input": [2.0, 85.5], "expected": 85.5}, {"input": [2.0, 86.0], "expected": 86.0}, {"input": [2.0, 86.5], "expected": 86.5}, {"input": [2.0, 87.0], "expected": 87.0}, {"input": [2.0, 87.5], "expected": 87.5}, {"input": [2.0, 88.0], "expected": 88.0}, {"input": [2.0, 88.5], "expected": 88.5}, {"input": [2.0, 89.0], "expected": 89.0}, {"input": [2.0, 89.5], "expected": 89.5}, {"input": [2.0, 90.0], "expected": 90.0}, {"input": [2.0, 90.5], "expected": 90.5}, {"input": [2.0, 91.0], "expected": 91.0}, {"input": [2.0, 91.5], "expected": 91.5}, {"input": [2.0, 92.0], "expected": 92.0}, {"input": [2.0, 92.5], "expected": 92.5}, {"input": [2.0, 93.0], "expected": 93.0}, {"input": [2.0, 93.5], "expected": 93.5}, {"input": [2.0, 94.0], "expected": 94.0}, {"input": [2.0, 94.5], "expected": 94.5}, {"input": [2.0, 95.0], "expected": 95.0}, {"input": [2.0, 95.5], "expected": 95.5}, {"input": [2.0, 96.0], "expected": 96.0}, {"input": [2.0, 96.5], "expected": 96.5}, {"input": [2.0, 97.0], "expected": 97.0}, {"input": [2.0, 97.5], "expected": 97.5}, {"input": [2.0, 98.0], "expected": 98.0}, {"input": [2.0, 98.5], "expected": 98.5}, {"input": [2.0, 99.0], "expected": 99.0}, {"input": [2.0, 99.5], "expected": 99.5}, {"input": [2.5, -100.0], "expected": 2.5}, {"input": [2.5, -99.5], "expected": 2.5}, {"input": [2.5, -99.0], "expected": 2.5}, {"input": [2.5, -98.5], "expected": 2.5}, {"input": [2.5, -98.0], "expected": 2.5}, {"input": [2.5, -97.5], "expected": 2.5}, {"input": [2.5, -97.0], "expected": 2.5}, {"input": [2.5, -96.5], "expected": 2.5}, {"input": [2.5, -96.0], "expected": 2.5}, {"input": [2.5, -95.5], "expected": 2.5}, {"input": [2.5, -95.0], "expected": 2.5}, {"input": [2.5, -94.5], "expected": 2.5}, {"input": [2.5, -94.0], "expected": 2.5}, {"input": [2.5, -93.5], "expected": 2.5}, {"input": [2.5, -93.0], "expected": 2.5}, {"input": [2.5, -92.5], "expected": 2.5}, {"input": [2.5, -92.0], "expected": 2.5}, {"input": [2.5, -91.5], "expected": 2.5}, {"input": [2.5, -91.0], "expected": 2.5}, {"input": [2.5, -90.5], "expected": 2.5}, {"input": [2.5, -90.0], "expected": 2.5}, {"input": [2.5, -89.5], "expected": 2.5}, {"input": [2.5, -89.0], "expected": 2.5}, {"input": [2.5, -88.5], "expected": 2.5}, {"input": [2.5, -88.0], "expected": 2.5}, {"input": [2.5, -87.5], "expected": 2.5}, {"input": [2.5, -87.0], "expected": 2.5}, {"input": [2.5, -86.5], "expected": 2.5}, {"input": [2.5, -86.0], "expected": 2.5}, {"input": [2.5, -85.5], "expected": 2.5}, {"input": [2.5, -85.0], "expected": 2.5}, {"input": [2.5, -84.5], "expected": 2.5}, {"input": [2.5, -84.0], "expected": 2.5}, {"input": [2.5, -83.5], "expected": 2.5}, {"input": [2.5, -83.0], "expected": 2.5}, {"input": [2.5, -82.5], "expected": 2.5}, {"input": [2.5, -82.0], "expected": 2.5}, {"input": [2.5, -81.5], "expected": 2.5}, {"input": [2.5, -81.0], "expected": 2.5}, {"input": [2.5, -80.5], "expected": 2.5}, {"input": [2.5, -80.0], "expected": 2.5}, {"input": [2.5, -79.5], "expected": 2.5}, {"input": [2.5, -79.0], "expected": 2.5}, {"input": [2.5, -78.5], "expected": 2.5}, {"input": [2.5, -78.0], "expected": 2.5}, {"input": [2.5, -77.5], "expected": 2.5}, {"input": [2.5, -77.0], "expected": 2.5}, {"input": [2.5, -76.5], "expected": 2.5}, {"input": [2.5, -76.0], "expected": 2.5}, {"input": [2.5, -75.5], "expected": 2.5}, {"input": [2.5, -75.0], "expected": 2.5}, {"input": [2.5, -74.5], "expected": 2.5}, {"input": [2.5, -74.0], "expected": 2.5}, {"input": [2.5, -73.5], "expected": 2.5}, {"input": [2.5, -73.0], "expected": 2.5}, {"input": [2.5, -72.5], "expected": 2.5}, {"input": [2.5, -72.0], "expected": 2.5}, {"input": [2.5, -71.5], "expected": 2.5}, {"input": [2.5, -71.0], "expected": 2.5}, {"input": [2.5, -70.5], "expected": 2.5}, {"input": [2.5, -70.0], "expected": 2.5}, {"input": [2.5, -69.5], "expected": 2.5}, {"input": [2.5, -69.0], "expected": 2.5}, {"input": [2.5, -68.5], "expected": 2.5}, {"input": [2.5, -68.0], "expected": 2.5}, {"input": [2.5, -67.5], "expected": 2.5}, {"input": [2.5, -67.0], "expected": 2.5}, {"input": [2.5, -66.5], "expected": 2.5}, {"input": [2.5, -66.0], "expected": 2.5}, {"input": [2.5, -65.5], "expected": 2.5}, {"input": [2.5, -65.0], "expected": 2.5}, {"input": [2.5, -64.5], "expected": 2.5}, {"input": [2.5, -64.0], "expected": 2.5}, {"input": [2.5, -63.5], "expected": 2.5}, {"input": [2.5, -63.0], "expected": 2.5}, {"input": [2.5, -62.5], "expected": 2.5}, {"input": [2.5, -62.0], "expected": 2.5}, {"input": [2.5, -61.5], "expected": 2.5}, {"input": [2.5, -61.0], "expected": 2.5}, {"input": [2.5, -60.5], "expected": 2.5}, {"input": [2.5, -60.0], "expected": 2.5}, {"input": [2.5, -59.5], "expected": 2.5}, {"input": [2.5, -59.0], "expected": 2.5}, {"input": [2.5, -58.5], "expected": 2.5}, {"input": [2.5, -58.0], "expected": 2.5}, {"input": [2.5, -57.5], "expected": 2.5}, {"input": [2.5, -57.0], "expected": 2.5}, {"input": [2.5, -56.5], "expected": 2.5}, {"input": [2.5, -56.0], "expected": 2.5}, {"input": [2.5, -55.5], "expected": 2.5}, {"input": [2.5, -55.0], "expected": 2.5}, {"input": [2.5, -54.5], "expected": 2.5}, {"input": [2.5, -54.0], "expected": 2.5}, {"input": [2.5, -53.5], "expected": 2.5}, {"input": [2.5, -53.0], "expected": 2.5}, {"input": [2.5, -52.5], "expected": 2.5}, {"input": [2.5, -52.0], "expected": 2.5}, {"input": [2.5, -51.5], "expected": 2.5}, {"input": [2.5, -51.0], "expected": 2.5}, {"input": [2.5, -50.5], "expected": 2.5}, {"input": [2.5, -50.0], "expected": 2.5}, {"input": [2.5, -49.5], "expected": 2.5}, {"input": [2.5, -49.0], "expected": 2.5}, {"input": [2.5, -48.5], "expected": 2.5}, {"input": [2.5, -48.0], "expected": 2.5}, {"input": [2.5, -47.5], "expected": 2.5}, {"input": [2.5, -47.0], "expected": 2.5}, {"input": [2.5, -46.5], "expected": 2.5}, {"input": [2.5, -46.0], "expected": 2.5}, {"input": [2.5, -45.5], "expected": 2.5}, {"input": [2.5, -45.0], "expected": 2.5}, {"input": [2.5, -44.5], "expected": 2.5}, {"input": [2.5, -44.0], "expected": 2.5}, {"input": [2.5, -43.5], "expected": 2.5}, {"input": [2.5, -43.0], "expected": 2.5}, {"input": [2.5, -42.5], "expected": 2.5}, {"input": [2.5, -42.0], "expected": 2.5}, {"input": [2.5, -41.5], "expected": 2.5}, {"input": [2.5, -41.0], "expected": 2.5}, {"input": [2.5, -40.5], "expected": 2.5}, {"input": [2.5, -40.0], "expected": 2.5}, {"input": [2.5, -39.5], "expected": 2.5}, {"input": [2.5, -39.0], "expected": 2.5}, {"input": [2.5, -38.5], "expected": 2.5}, {"input": [2.5, -38.0], "expected": 2.5}, {"input": [2.5, -37.5], "expected": 2.5}, {"input": [2.5, -37.0], "expected": 2.5}, {"input": [2.5, -36.5], "expected": 2.5}, {"input": [2.5, -36.0], "expected": 2.5}, {"input": [2.5, -35.5], "expected": 2.5}, {"input": [2.5, -35.0], "expected": 2.5}, {"input": [2.5, -34.5], "expected": 2.5}, {"input": [2.5, -34.0], "expected": 2.5}, {"input": [2.5, -33.5], "expected": 2.5000000000000004}, {"input": [2.5, -33.0], "expected": 2.5000000000000004}, {"input": [2.5, -32.5], "expected": 2.5000000000000004}, {"input": [2.5, -32.0], "expected": 2.500000000000001}, {"input": [2.5, -31.5], "expected": 2.5000000000000018}, {"input": [2.5, -31.0], "expected": 2.5000000000000027}, {"input": [2.5, -30.5], "expected": 2.5000000000000044}, {"input": [2.5, -30.0], "expected": 2.5000000000000075}, {"input": [2.5, -29.5], "expected": 2.500000000000013}, {"input": [2.5, -29.0], "expected": 2.500000000000021}, {"input": [2.5, -28.5], "expected": 2.5000000000000346}, {"input": [2.5, -28.0], "expected": 2.500000000000057}, {"input": [2.5, -27.5], "expected": 2.5000000000000937}, {"input": [2.5, -27.0], "expected": 2.500000000000154}, {"input": [2.5, -26.5], "expected": 2.5000000000002545}, {"input": [2.5, -26.0], "expected": 2.500000000000419}, {"input": [2.5, -25.5], "expected": 2.5000000000006914}, {"input": [2.5, -25.0], "expected": 2.50000000000114}, {"input": [2.5, -24.5], "expected": 2.5000000000018794}, {"input": [2.5, -24.0], "expected": 2.500000000003099}, {"input": [2.5, -23.5], "expected": 2.5000000000051092}, {"input": [2.5, -23.0], "expected": 2.5000000000084235}, {"input": [2.5, -22.5], "expected": 2.500000000013888}, {"input": [2.5, -22.0], "expected": 2.5000000000228972}, {"input": [2.5, -21.5], "expected": 2.500000000037751}, {"input": [2.5, -21.0], "expected": 2.5000000000622413}, {"input": [2.5, -20.5], "expected": 2.500000000102619}, {"input": [2.5, -20.0], "expected": 2.50000000016919}, {"input": [2.5, -19.5], "expected": 2.5000000002789466}, {"input": [2.5, -19.0], "expected": 2.5000000004599054}, {"input": [2.5, -18.5], "expected": 2.500000000758256}, {"input": [2.5, -18.0], "expected": 2.500000001250153}, {"input": [2.5, -17.5], "expected": 2.5000000020611535}, {"input": [2.5, -17.0], "expected": 2.500000003398268}, {"input": [2.5, -16.5], "expected": 2.5000000056027964}, {"input": [2.5, -16.0], "expected": 2.5000000092374495}, {"input": [2.5, -15.5], "expected": 2.5000000152299795}, {"input": [2.5, -15.0], "expected": 2.5000000251099914}, {"input": [2.5, -14.5], "expected": 2.5000000413993764}, {"input": [2.5, -14.0], "expected": 2.5000000682560315}, {"input": [2.5, -13.5], "expected": 2.5000001125351683}, {"input": [2.5, -13.0], "expected": 2.500000185539119}, {"input": [2.5, -12.5], "expected": 2.5000003059022737}, {"input": [2.5, -12.0], "expected": 2.5000005043475353}, {"input": [2.5, -11.5], "expected": 2.5000008315283733}, {"input": [2.5, -11.0], "expected": 2.5000013709581466}, {"input": [2.5, -10.5], "expected": 2.5000022603268524}, {"input": [2.5, -10.0], "expected": 2.500003726646228}, {"input": [2.5, -9.5], "expected": 2.5000061441934776}, {"input": [2.5, -9.0], "expected": 2.5000101300422894}, {"input": [2.5, -8.5], "expected": 2.5000167015613184}, {"input": [2.5, -8.0], "expected": 2.500027536070229}, {"input": [2.5, -7.5], "expected": 2.500045398899217}, {"input": [2.5, -7.0], "expected": 2.5000748490286293}, {"input": [2.5, -6.5], "expected": 2.500123402189723}, {"input": [2.5, -6.0], "expected": 2.5002034476721295}, {"input": [2.5, -5.5], "expected": 2.500335406372896}, {"input": [2.5, -5.0], "expected": 2.5005529314753607}, {"input": [2.5, -4.5], "expected": 2.500911466453774}, {"input": [2.5, -4.0], "expected": 2.501502310159754}, {"input": [2.5, -3.5], "expected": 2.5024756851377306}, {"input": [2.5, -3.0], "expected": 2.5040784432705707}, {"input": [2.5, -2.5], "expected": 2.5067153484891183}, {"input": [2.5, -2.0], "expected": 2.511047744848594}, {"input": [2.5, -1.5], "expected": 2.51814992791781}, {"input": [2.5, -1.0], "expected": 2.5297504182726205}, {"input": [2.5, -0.5], "expected": 2.548587351573742}, {"input": [2.5, 0.0], "expected": 2.5788897342925496}, {"input": [2.5, 0.5], "expected": 2.6269280110429727}, {"input": [2.5, 1.0], "expected": 2.7014132779827524}, {"input": [2.5, 1.5], "expected": 2.813261687518223}, {"input": [2.5, 2.0], "expected": 2.9740769841801065}, {"input": [2.5, 2.5], "expected": 3.1931471805599454}, {"input": [2.5, 3.0], "expected": 3.4740769841801065}, {"input": [2.5, 3.5], "expected": 3.813261687518223}, {"input": [2.5, 4.0], "expected": 4.201413277982752}, {"input": [2.5, 4.5], "expected": 4.626928011042972}, {"input": [2.5, 5.0], "expected": 5.07888973429255}, {"input": [2.5, 5.5], "expected": 5.548587351573742}, {"input": [2.5, 6.0], "expected": 6.029750418272621}, {"input": [2.5, 6.5], "expected": 6.5181499279178094}, {"input": [2.5, 7.0], "expected": 7.011047744848594}, {"input": [2.5, 7.5], "expected": 7.506715348489118}, {"input": [2.5, 8.0], "expected": 8.00407844327057}, {"input": [2.5, 8.5], "expected": 8.50247568513773}, {"input": [2.5, 9.0], "expected": 9.001502310159754}, {"input": [2.5, 9.5], "expected": 9.500911466453774}, {"input": [2.5, 10.0], "expected": 10.000552931475362}, {"input": [2.5, 10.5], "expected": 10.500335406372896}, {"input": [2.5, 11.0], "expected": 11.00020344767213}, {"input": [2.5, 11.5], "expected": 11.500123402189724}, {"input": [2.5, 12.0], "expected": 12.000074849028628}, {"input": [2.5, 12.5], "expected": 12.500045398899218}, {"input": [2.5, 13.0], "expected": 13.00002753607023}, {"input": [2.5, 13.5], "expected": 13.500016701561318}, {"input": [2.5, 14.0], "expected": 14.00001013004229}, {"input": [2.5, 14.5], "expected": 14.500006144193478}, {"input": [2.5, 15.0], "expected": 15.000003726646229}, {"input": [2.5, 15.5], "expected": 15.500002260326852}, {"input": [2.5, 16.0], "expected": 16.000001370958145}, {"input": [2.5, 16.5], "expected": 16.500000831528375}, {"input": [2.5, 17.0], "expected": 17.000000504347536}, {"input": [2.5, 17.5], "expected": 17.500000305902272}, {"input": [2.5, 18.0], "expected": 18.00000018553912}, {"input": [2.5, 18.5], "expected": 18.50000011253517}, {"input": [2.5, 19.0], "expected": 19.000000068256032}, {"input": [2.5, 19.5], "expected": 19.500000041399375}, {"input": [2.5, 20.0], "expected": 20.00000002510999}, {"input": [2.5, 20.5], "expected": 20.50000001522998}, {"input": [2.5, 21.0], "expected": 21.00000000923745}, {"input": [2.5, 21.5], "expected": 21.500000005602796}, {"input": [2.5, 22.0], "expected": 22.000000003398267}, {"input": [2.5, 22.5], "expected": 22.500000002061153}, {"input": [2.5, 23.0], "expected": 23.000000001250154}, {"input": [2.5, 23.5], "expected": 23.500000000758256}, {"input": [2.5, 24.0], "expected": 24.000000000459906}, {"input": [2.5, 24.5], "expected": 24.50000000027895}, {"input": [2.5, 25.0], "expected": 25.00000000016919}, {"input": [2.5, 25.5], "expected": 25.50000000010262}, {"input": [2.5, 26.0], "expected": 26.00000000006224}, {"input": [2.5, 26.5], "expected": 26.50000000003775}, {"input": [2.5, 27.0], "expected": 27.000000000022897}, {"input": [2.5, 27.5], "expected": 27.500000000013888}, {"input": [2.5, 28.0], "expected": 28.000000000008423}, {"input": [2.5, 28.5], "expected": 28.50000000000511}, {"input": [2.5, 29.0], "expected": 29.000000000003098}, {"input": [2.5, 29.5], "expected": 29.50000000000188}, {"input": [2.5, 30.0], "expected": 30.00000000000114}, {"input": [2.5, 30.5], "expected": 30.500000000000693}, {"input": [2.5, 31.0], "expected": 31.00000000000042}, {"input": [2.5, 31.5], "expected": 31.500000000000256}, {"input": [2.5, 32.0], "expected": 32.000000000000156}, {"input": [2.5, 32.5], "expected": 32.50000000000009}, {"input": [2.5, 33.0], "expected": 33.00000000000006}, {"input": [2.5, 33.5], "expected": 33.500000000000036}, {"input": [2.5, 34.0], "expected": 34.00000000000002}, {"input": [2.5, 34.5], "expected": 34.500000000000014}, {"input": [2.5, 35.0], "expected": 35.00000000000001}, {"input": [2.5, 35.5], "expected": 35.50000000000001}, {"input": [2.5, 36.0], "expected": 36.0}, {"input": [2.5, 36.5], "expected": 36.5}, {"input": [2.5, 37.0], "expected": 37.0}, {"input": [2.5, 37.5], "expected": 37.5}, {"input": [2.5, 38.0], "expected": 38.0}, {"input": [2.5, 38.5], "expected": 38.5}, {"input": [2.5, 39.0], "expected": 39.0}, {"input": [2.5, 39.5], "expected": 39.5}, {"input": [2.5, 40.0], "expected": 40.0}, {"input": [2.5, 40.5], "expected": 40.5}, {"input": [2.5, 41.0], "expected": 41.0}, {"input": [2.5, 41.5], "expected": 41.5}, {"input": [2.5, 42.0], "expected": 42.0}, {"input": [2.5, 42.5], "expected": 42.5}, {"input": [2.5, 43.0], "expected": 43.0}, {"input": [2.5, 43.5], "expected": 43.5}, {"input": [2.5, 44.0], "expected": 44.0}, {"input": [2.5, 44.5], "expected": 44.5}, {"input": [2.5, 45.0], "expected": 45.0}, {"input": [2.5, 45.5], "expected": 45.5}, {"input": [2.5, 46.0], "expected": 46.0}, {"input": [2.5, 46.5], "expected": 46.5}, {"input": [2.5, 47.0], "expected": 47.0}, {"input": [2.5, 47.5], "expected": 47.5}, {"input": [2.5, 48.0], "expected": 48.0}, {"input": [2.5, 48.5], "expected": 48.5}, {"input": [2.5, 49.0], "expected": 49.0}, {"input": [2.5, 49.5], "expected": 49.5}, {"input": [2.5, 50.0], "expected": 50.0}, {"input": [2.5, 50.5], "expected": 50.5}, {"input": [2.5, 51.0], "expected": 51.0}, {"input": [2.5, 51.5], "expected": 51.5}, {"input": [2.5, 52.0], "expected": 52.0}, {"input": [2.5, 52.5], "expected": 52.5}, {"input": [2.5, 53.0], "expected": 53.0}, {"input": [2.5, 53.5], "expected": 53.5}, {"input": [2.5, 54.0], "expected": 54.0}, {"input": [2.5, 54.5], "expected": 54.5}, {"input": [2.5, 55.0], "expected": 55.0}, {"input": [2.5, 55.5], "expected": 55.5}, {"input": [2.5, 56.0], "expected": 56.0}, {"input": [2.5, 56.5], "expected": 56.5}, {"input": [2.5, 57.0], "expected": 57.0}, {"input": [2.5, 57.5], "expected": 57.5}, {"input": [2.5, 58.0], "expected": 58.0}, {"input": [2.5, 58.5], "expected": 58.5}, {"input": [2.5, 59.0], "expected": 59.0}, {"input": [2.5, 59.5], "expected": 59.5}, {"input": [2.5, 60.0], "expected": 60.0}, {"input": [2.5, 60.5], "expected": 60.5}, {"input": [2.5, 61.0], "expected": 61.0}, {"input": [2.5, 61.5], "expected": 61.5}, {"input": [2.5, 62.0], "expected": 62.0}, {"input": [2.5, 62.5], "expected": 62.5}, {"input": [2.5, 63.0], "expected": 63.0}, {"input": [2.5, 63.5], "expected": 63.5}, {"input": [2.5, 64.0], "expected": 64.0}, {"input": [2.5, 64.5], "expected": 64.5}, {"input": [2.5, 65.0], "expected": 65.0}, {"input": [2.5, 65.5], "expected": 65.5}, {"input": [2.5, 66.0], "expected": 66.0}, {"input": [2.5, 66.5], "expected": 66.5}, {"input": [2.5, 67.0], "expected": 67.0}, {"input": [2.5, 67.5], "expected": 67.5}, {"input": [2.5, 68.0], "expected": 68.0}, {"input": [2.5, 68.5], "expected": 68.5}, {"input": [2.5, 69.0], "expected": 69.0}, {"input": [2.5, 69.5], "expected": 69.5}, {"input": [2.5, 70.0], "expected": 70.0}, {"input": [2.5, 70.5], "expected": 70.5}, {"input": [2.5, 71.0], "expected": 71.0}, {"input": [2.5, 71.5], "expected": 71.5}, {"input": [2.5, 72.0], "expected": 72.0}, {"input": [2.5, 72.5], "expected": 72.5}, {"input": [2.5, 73.0], "expected": 73.0}, {"input": [2.5, 73.5], "expected": 73.5}, {"input": [2.5, 74.0], "expected": 74.0}, {"input": [2.5, 74.5], "expected": 74.5}, {"input": [2.5, 75.0], "expected": 75.0}, {"input": [2.5, 75.5], "expected": 75.5}, {"input": [2.5, 76.0], "expected": 76.0}, {"input": [2.5, 76.5], "expected": 76.5}, {"input": [2.5, 77.0], "expected": 77.0}, {"input": [2.5, 77.5], "expected": 77.5}, {"input": [2.5, 78.0], "expected": 78.0}, {"input": [2.5, 78.5], "expected": 78.5}, {"input": [2.5, 79.0], "expected": 79.0}, {"input": [2.5, 79.5], "expected": 79.5}, {"input": [2.5, 80.0], "expected": 80.0}, {"input": [2.5, 80.5], "expected": 80.5}, {"input": [2.5, 81.0], "expected": 81.0}, {"input": [2.5, 81.5], "expected": 81.5}, {"input": [2.5, 82.0], "expected": 82.0}, {"input": [2.5, 82.5], "expected": 82.5}, {"input": [2.5, 83.0], "expected": 83.0}, {"input": [2.5, 83.5], "expected": 83.5}, {"input": [2.5, 84.0], "expected": 84.0}, {"input": [2.5, 84.5], "expected": 84.5}, {"input": [2.5, 85.0], "expected": 85.0}, {"input": [2.5, 85.5], "expected": 85.5}, {"input": [2.5, 86.0], "expected": 86.0}, {"input": [2.5, 86.5], "expected": 86.5}, {"input": [2.5, 87.0], "expected": 87.0}, {"input": [2.5, 87.5], "expected": 87.5}, {"input": [2.5, 88.0], "expected": 88.0}, {"input": [2.5, 88.5], "expected": 88.5}, {"input": [2.5, 89.0], "expected": 89.0}, {"input": [2.5, 89.5], "expected": 89.5}, {"input": [2.5, 90.0], "expected": 90.0}, {"input": [2.5, 90.5], "expected": 90.5}, {"input": [2.5, 91.0], "expected": 91.0}, {"input": [2.5, 91.5], "expected": 91.5}, {"input": [2.5, 92.0], "expected": 92.0}, {"input": [2.5, 92.5], "expected": 92.5}, {"input": [2.5, 93.0], "expected": 93.0}, {"input": [2.5, 93.5], "expected": 93.5}, {"input": [2.5, 94.0], "expected": 94.0}, {"input": [2.5, 94.5], "expected": 94.5}, {"input": [2.5, 95.0], "expected": 95.0}, {"input": [2.5, 95.5], "expected": 95.5}, {"input": [2.5, 96.0], "expected": 96.0}, {"input": [2.5, 96.5], "expected": 96.5}, {"input": [2.5, 97.0], "expected": 97.0}, {"input": [2.5, 97.5], "expected": 97.5}, {"input": [2.5, 98.0], "expected": 98.0}, {"input": [2.5, 98.5], "expected": 98.5}, {"input": [2.5, 99.0], "expected": 99.0}, {"input": [2.5, 99.5], "expected": 99.5}, {"input": [3.0, -100.0], "expected": 3.0}, {"input": [3.0, -99.5], "expected": 3.0}, {"input": [3.0, -99.0], "expected": 3.0}, {"input": [3.0, -98.5], "expected": 3.0}, {"input": [3.0, -98.0], "expected": 3.0}, {"input": [3.0, -97.5], "expected": 3.0}, {"input": [3.0, -97.0], "expected": 3.0}, {"input": [3.0, -96.5], "expected": 3.0}, {"input": [3.0, -96.0], "expected": 3.0}, {"input": [3.0, -95.5], "expected": 3.0}, {"input": [3.0, -95.0], "expected": 3.0}, {"input": [3.0, -94.5], "expected": 3.0}, {"input": [3.0, -94.0], "expected": 3.0}, {"input": [3.0, -93.5], "expected": 3.0}, {"input": [3.0, -93.0], "expected": 3.0}, {"input": [3.0, -92.5], "expected": 3.0}, {"input": [3.0, -92.0], "expected": 3.0}, {"input": [3.0, -91.5], "expected": 3.0}, {"input": [3.0, -91.0], "expected": 3.0}, {"input": [3.0, -90.5], "expected": 3.0}, {"input": [3.0, -90.0], "expected": 3.0}, {"input": [3.0, -89.5], "expected": 3.0}, {"input": [3.0, -89.0], "expected": 3.0}, {"input": [3.0, -88.5], "expected": 3.0}, {"input": [3.0, -88.0], "expected": 3.0}, {"input": [3.0, -87.5], "expected": 3.0}, {"input": [3.0, -87.0], "expected": 3.0}, {"input": [3.0, -86.5], "expected": 3.0}, {"input": [3.0, -86.0], "expected": 3.0}, {"input": [3.0, -85.5], "expected": 3.0}, {"input": [3.0, -85.0], "expected": 3.0}, {"input": [3.0, -84.5], "expected": 3.0}, {"input": [3.0, -84.0], "expected": 3.0}, {"input": [3.0, -83.5], "expected": 3.0}, {"input": [3.0, -83.0], "expected": 3.0}, {"input": [3.0, -82.5], "expected": 3.0}, {"input": [3.0, -82.0], "expected": 3.0}, {"input": [3.0, -81.5], "expected": 3.0}, {"input": [3.0, -81.0], "expected": 3.0}, {"input": [3.0, -80.5], "expected": 3.0}, {"input": [3.0, -80.0], "expected": 3.0}, {"input": [3.0, -79.5], "expected": 3.0}, {"input": [3.0, -79.0], "expected": 3.0}, {"input": [3.0, -78.5], "expected": 3.0}, {"input": [3.0, -78.0], "expected": 3.0}, {"input": [3.0, -77.5], "expected": 3.0}, {"input": [3.0, -77.0], "expected": 3.0}, {"input": [3.0, -76.5], "expected": 3.0}, {"input": [3.0, -76.0], "expected": 3.0}, {"input": [3.0, -75.5], "expected": 3.0}, {"input": [3.0, -75.0], "expected": 3.0}, {"input": [3.0, -74.5], "expected": 3.0}, {"input": [3.0, -74.0], "expected": 3.0}, {"input": [3.0, -73.5], "expected": 3.0}, {"input": [3.0, -73.0], "expected": 3.0}, {"input": [3.0, -72.5], "expected": 3.0}, {"input": [3.0, -72.0], "expected": 3.0}, {"input": [3.0, -71.5], "expected": 3.0}, {"input": [3.0, -71.0], "expected": 3.0}, {"input": [3.0, -70.5], "expected": 3.0}, {"input": [3.0, -70.0], "expected": 3.0}, {"input": [3.0, -69.5], "expected": 3.0}, {"input": [3.0, -69.0], "expected": 3.0}, {"input": [3.0, -68.5], "expected": 3.0}, {"input": [3.0, -68.0], "expected": 3.0}, {"input": [3.0, -67.5], "expected": 3.0}, {"input": [3.0, -67.0], "expected": 3.0}, {"input": [3.0, -66.5], "expected": 3.0}, {"input": [3.0, -66.0], "expected": 3.0}, {"input": [3.0, -65.5], "expected": 3.0}, {"input": [3.0, -65.0], "expected": 3.0}, {"input": [3.0, -64.5], "expected": 3.0}, {"input": [3.0, -64.0], "expected": 3.0}, {"input": [3.0, -63.5], "expected": 3.0}, {"input": [3.0, -63.0], "expected": 3.0}, {"input": [3.0, -62.5], "expected": 3.0}, {"input": [3.0, -62.0], "expected": 3.0}, {"input": [3.0, -61.5], "expected": 3.0}, {"input": [3.0, -61.0], "expected": 3.0}, {"input": [3.0, -60.5], "expected": 3.0}, {"input": [3.0, -60.0], "expected": 3.0}, {"input": [3.0, -59.5], "expected": 3.0}, {"input": [3.0, -59.0], "expected": 3.0}, {"input": [3.0, -58.5], "expected": 3.0}, {"input": [3.0, -58.0], "expected": 3.0}, {"input": [3.0, -57.5], "expected": 3.0}, {"input": [3.0, -57.0], "expected": 3.0}, {"input": [3.0, -56.5], "expected": 3.0}, {"input": [3.0, -56.0], "expected": 3.0}, {"input": [3.0, -55.5], "expected": 3.0}, {"input": [3.0, -55.0], "expected": 3.0}, {"input": [3.0, -54.5], "expected": 3.0}, {"input": [3.0, -54.0], "expected": 3.0}, {"input": [3.0, -53.5], "expected": 3.0}, {"input": [3.0, -53.0], "expected": 3.0}, {"input": [3.0, -52.5], "expected": 3.0}, {"input": [3.0, -52.0], "expected": 3.0}, {"input": [3.0, -51.5], "expected": 3.0}, {"input": [3.0, -51.0], "expected": 3.0}, {"input": [3.0, -50.5], "expected": 3.0}, {"input": [3.0, -50.0], "expected": 3.0}, {"input": [3.0, -49.5], "expected": 3.0}, {"input": [3.0, -49.0], "expected": 3.0}, {"input": [3.0, -48.5], "expected": 3.0}, {"input": [3.0, -48.0], "expected": 3.0}, {"input": [3.0, -47.5], "expected": 3.0}, {"input": [3.0, -47.0], "expected": 3.0}, {"input": [3.0, -46.5], "expected": 3.0}, {"input": [3.0, -46.0], "expected": 3.0}, {"input": [3.0, -45.5], "expected": 3.0}, {"input": [3.0, -45.0], "expected": 3.0}, {"input": [3.0, -44.5], "expected": 3.0}, {"input": [3.0, -44.0], "expected": 3.0}, {"input": [3.0, -43.5], "expected": 3.0}, {"input": [3.0, -43.0], "expected": 3.0}, {"input": [3.0, -42.5], "expected": 3.0}, {"input": [3.0, -42.0], "expected": 3.0}, {"input": [3.0, -41.5], "expected": 3.0}, {"input": [3.0, -41.0], "expected": 3.0}, {"input": [3.0, -40.5], "expected": 3.0}, {"input": [3.0, -40.0], "expected": 3.0}, {"input": [3.0, -39.5], "expected": 3.0}, {"input": [3.0, -39.0], "expected": 3.0}, {"input": [3.0, -38.5], "expected": 3.0}, {"input": [3.0, -38.0], "expected": 3.0}, {"input": [3.0, -37.5], "expected": 3.0}, {"input": [3.0, -37.0], "expected": 3.0}, {"input": [3.0, -36.5], "expected": 3.0}, {"input": [3.0, -36.0], "expected": 3.0}, {"input": [3.0, -35.5], "expected": 3.0}, {"input": [3.0, -35.0], "expected": 3.0}, {"input": [3.0, -34.5], "expected": 3.0}, {"input": [3.0, -34.0], "expected": 3.0}, {"input": [3.0, -33.5], "expected": 3.0}, {"input": [3.0, -33.0], "expected": 3.0000000000000004}, {"input": [3.0, -32.5], "expected": 3.0000000000000004}, {"input": [3.0, -32.0], "expected": 3.0000000000000004}, {"input": [3.0, -31.5], "expected": 3.000000000000001}, {"input": [3.0, -31.0], "expected": 3.0000000000000018}, {"input": [3.0, -30.5], "expected": 3.0000000000000027}, {"input": [3.0, -30.0], "expected": 3.0000000000000044}, {"input": [3.0, -29.5], "expected": 3.0000000000000075}, {"input": [3.0, -29.0], "expected": 3.000000000000013}, {"input": [3.0, -28.5], "expected": 3.000000000000021}, {"input": [3.0, -28.0], "expected": 3.0000000000000346}, {"input": [3.0, -27.5], "expected": 3.000000000000057}, {"input": [3.0, -27.0], "expected": 3.0000000000000937}, {"input": [3.0, -26.5], "expected": 3.000000000000154}, {"input": [3.0, -26.0], "expected": 3.0000000000002545}, {"input": [3.0, -25.5], "expected": 3.000000000000419}, {"input": [3.0, -25.0], "expected": 3.0000000000006914}, {"input": [3.0, -24.5], "expected": 3.00000000000114}, {"input": [3.0, -24.0], "expected": 3.0000000000018794}, {"input": [3.0, -23.5], "expected": 3.000000000003099}, {"input": [3.0, -23.0], "expected": 3.0000000000051092}, {"input": [3.0, -22.5], "expected": 3.0000000000084235}, {"input": [3.0, -22.0], "expected": 3.000000000013888}, {"input": [3.0, -21.5], "expected": 3.0000000000228972}, {"input": [3.0, -21.0], "expected": 3.000000000037751}, {"input": [3.0, -20.5], "expected": 3.0000000000622413}, {"input": [3.0, -20.0], "expected": 3.000000000102619}, {"input": [3.0, -19.5], "expected": 3.00000000016919}, {"input": [3.0, -19.0], "expected": 3.0000000002789466}, {"input": [3.0, -18.5], "expected": 3.0000000004599054}, {"input": [3.0, -18.0], "expected": 3.000000000758256}, {"input": [3.0, -17.5], "expected": 3.000000001250153}, {"input": [3.0, -17.0], "expected": 3.0000000020611535}, {"input": [3.0, -16.5], "expected": 3.000000003398268}, {"input": [3.0, -16.0], "expected": 3.0000000056027964}, {"input": [3.0, -15.5], "expected": 3.0000000092374495}, {"input": [3.0, -15.0], "expected": 3.0000000152299795}, {"input": [3.0, -14.5], "expected": 3.0000000251099914}, {"input": [3.0, -14.0], "expected": 3.0000000413993764}, {"input": [3.0, -13.5], "expected": 3.0000000682560315}, {"input": [3.0, -13.0], "expected": 3.0000001125351683}, {"input": [3.0, -12.5], "expected": 3.000000185539119}, {"input": [3.0, -12.0], "expected": 3.0000003059022737}, {"input": [3.0, -11.5], "expected": 3.0000005043475353}, {"input": [3.0, -11.0], "expected": 3.0000008315283733}, {"input": [3.0, -10.5], "expected": 3.0000013709581466}, {"input": [3.0, -10.0], "expected": 3.0000022603268524}, {"input": [3.0, -9.5], "expected": 3.000003726646228}, {"input": [3.0, -9.0], "expected": 3.0000061441934776}, {"input": [3.0, -8.5], "expected": 3.0000101300422894}, {"input": [3.0, -8.0], "expected": 3.0000167015613184}, {"input": [3.0, -7.5], "expected": 3.000027536070229}, {"input": [3.0, -7.0], "expected": 3.000045398899217}, {"input": [3.0, -6.5], "expected": 3.0000748490286293}, {"input": [3.0, -6.0], "expected": 3.000123402189723}, {"input": [3.0, -5.5], "expected": 3.0002034476721295}, {"input": [3.0, -5.0], "expected": 3.000335406372896}, {"input": [3.0, -4.5], "expected": 3.0005529314753607}, {"input": [3.0, -4.0], "expected": 3.000911466453774}, {"input": [3.0, -3.5], "expected": 3.001502310159754}, {"input": [3.0, -3.0], "expected": 3.0024756851377306}, {"input": [3.0, -2.5], "expected": 3.0040784432705707}, {"input": [3.0, -2.0], "expected": 3.0067153484891183}, {"input": [3.0, -1.5], "expected": 3.011047744848594}, {"input": [3.0, -1.0], "expected": 3.01814992791781}, {"input": [3.0, -0.5], "expected": 3.0297504182726205}, {"input": [3.0, 0.0], "expected": 3.048587351573742}, {"input": [3.0, 0.5], "expected": 3.0788897342925496}, {"input": [3.0, 1.0], "expected": 3.1269280110429727}, {"input": [3.0, 1.5], "expected": 3.2014132779827524}, {"input": [3.0, 2.0], "expected": 3.313261687518223}, {"input": [3.0, 2.5], "expected": 3.4740769841801065}, {"input": [3.0, 3.0], "expected": 3.6931471805599454}, {"input": [3.0, 3.5], "expected": 3.9740769841801065}, {"input": [3.0, 4.0], "expected": 4.313261687518223}, {"input": [3.0, 4.5], "expected": 4.701413277982752}, {"input": [3.0, 5.0], "expected": 5.126928011042972}, {"input": [3.0, 5.5], "expected": 5.57888973429255}, {"input": [3.0, 6.0], "expected": 6.048587351573742}, {"input": [3.0, 6.5], "expected": 6.529750418272621}, {"input": [3.0, 7.0], "expected": 7.0181499279178094}, {"input": [3.0, 7.5], "expected": 7.511047744848594}, {"input": [3.0, 8.0], "expected": 8.006715348489118}, {"input": [3.0, 8.5], "expected": 8.50407844327057}, {"input": [3.0, 9.0], "expected": 9.00247568513773}, {"input": [3.0, 9.5], "expected": 9.501502310159754}, {"input": [3.0, 10.0], "expected": 10.000911466453774}, {"input": [3.0, 10.5], "expected": 10.500552931475362}, {"input": [3.0, 11.0], "expected": 11.000335406372896}, {"input": [3.0, 11.5], "expected": 11.50020344767213}, {"input": [3.0, 12.0], "expected": 12.000123402189724}, {"input": [3.0, 12.5], "expected": 12.500074849028628}, {"input": [3.0, 13.0], "expected": 13.000045398899218}, {"input": [3.0, 13.5], "expected": 13.50002753607023}, {"input": [3.0, 14.0], "expected": 14.000016701561318}, {"input": [3.0, 14.5], "expected": 14.50001013004229}, {"input": [3.0, 15.0], "expected": 15.000006144193478}, {"input": [3.0, 15.5], "expected": 15.500003726646229}, {"input": [3.0, 16.0], "expected": 16.000002260326852}, {"input": [3.0, 16.5], "expected": 16.500001370958145}, {"input": [3.0, 17.0], "expected": 17.000000831528375}, {"input": [3.0, 17.5], "expected": 17.500000504347536}, {"input": [3.0, 18.0], "expected": 18.000000305902272}, {"input": [3.0, 18.5], "expected": 18.50000018553912}, {"input": [3.0, 19.0], "expected": 19.00000011253517}, {"input": [3.0, 19.5], "expected": 19.500000068256032}, {"input": [3.0, 20.0], "expected": 20.000000041399375}, {"input": [3.0, 20.5], "expected": 20.50000002510999}, {"input": [3.0, 21.0], "expected": 21.00000001522998}, {"input": [3.0, 21.5], "expected": 21.50000000923745}, {"input": [3.0, 22.0], "expected": 22.000000005602796}, {"input": [3.0, 22.5], "expected": 22.500000003398267}, {"input": [3.0, 23.0], "expected": 23.000000002061153}, {"input": [3.0, 23.5], "expected": 23.500000001250154}, {"input": [3.0, 24.0], "expected": 24.000000000758256}, {"input": [3.0, 24.5], "expected": 24.500000000459906}, {"input": [3.0, 25.0], "expected": 25.00000000027895}, {"input": [3.0, 25.5], "expected": 25.50000000016919}, {"input": [3.0, 26.0], "expected": 26.00000000010262}, {"input": [3.0, 26.5], "expected": 26.50000000006224}, {"input": [3.0, 27.0], "expected": 27.00000000003775}, {"input": [3.0, 27.5], "expected": 27.500000000022897}, {"input": [3.0, 28.0], "expected": 28.000000000013888}, {"input": [3.0, 28.5], "expected": 28.500000000008423}, {"input": [3.0, 29.0], "expected": 29.00000000000511}, {"input": [3.0, 29.5], "expected": 29.500000000003098}, {"input": [3.0, 30.0], "expected": 30.00000000000188}, {"input": [3.0, 30.5], "expected": 30.50000000000114}, {"input": [3.0, 31.0], "expected": 31.000000000000693}, {"input": [3.0, 31.5], "expected": 31.50000000000042}, {"input": [3.0, 32.0], "expected": 32.000000000000256}, {"input": [3.0, 32.5], "expected": 32.500000000000156}, {"input": [3.0, 33.0], "expected": 33.00000000000009}, {"input": [3.0, 33.5], "expected": 33.50000000000006}, {"input": [3.0, 34.0], "expected": 34.000000000000036}, {"input": [3.0, 34.5], "expected": 34.50000000000002}, {"input": [3.0, 35.0], "expected": 35.000000000000014}, {"input": [3.0, 35.5], "expected": 35.50000000000001}, {"input": [3.0, 36.0], "expected": 36.00000000000001}, {"input": [3.0, 36.5], "expected": 36.5}, {"input": [3.0, 37.0], "expected": 37.0}, {"input": [3.0, 37.5], "expected": 37.5}, {"input": [3.0, 38.0], "expected": 38.0}, {"input": [3.0, 38.5], "expected": 38.5}, {"input": [3.0, 39.0], "expected": 39.0}, {"input": [3.0, 39.5], "expected": 39.5}, {"input": [3.0, 40.0], "expected": 40.0}, {"input": [3.0, 40.5], "expected": 40.5}, {"input": [3.0, 41.0], "expected": 41.0}, {"input": [3.0, 41.5], "expected": 41.5}, {"input": [3.0, 42.0], "expected": 42.0}, {"input": [3.0, 42.5], "expected": 42.5}, {"input": [3.0, 43.0], "expected": 43.0}, {"input": [3.0, 43.5], "expected": 43.5}, {"input": [3.0, 44.0], "expected": 44.0}, {"input": [3.0, 44.5], "expected": 44.5}, {"input": [3.0, 45.0], "expected": 45.0}, {"input": [3.0, 45.5], "expected": 45.5}, {"input": [3.0, 46.0], "expected": 46.0}, {"input": [3.0, 46.5], "expected": 46.5}, {"input": [3.0, 47.0], "expected": 47.0}, {"input": [3.0, 47.5], "expected": 47.5}, {"input": [3.0, 48.0], "expected": 48.0}, {"input": [3.0, 48.5], "expected": 48.5}, {"input": [3.0, 49.0], "expected": 49.0}, {"input": [3.0, 49.5], "expected": 49.5}, {"input": [3.0, 50.0], "expected": 50.0}, {"input": [3.0, 50.5], "expected": 50.5}, {"input": [3.0, 51.0], "expected": 51.0}, {"input": [3.0, 51.5], "expected": 51.5}, {"input": [3.0, 52.0], "expected": 52.0}, {"input": [3.0, 52.5], "expected": 52.5}, {"input": [3.0, 53.0], "expected": 53.0}, {"input": [3.0, 53.5], "expected": 53.5}, {"input": [3.0, 54.0], "expected": 54.0}, {"input": [3.0, 54.5], "expected": 54.5}, {"input": [3.0, 55.0], "expected": 55.0}, {"input": [3.0, 55.5], "expected": 55.5}, {"input": [3.0, 56.0], "expected": 56.0}, {"input": [3.0, 56.5], "expected": 56.5}, {"input": [3.0, 57.0], "expected": 57.0}, {"input": [3.0, 57.5], "expected": 57.5}, {"input": [3.0, 58.0], "expected": 58.0}, {"input": [3.0, 58.5], "expected": 58.5}, {"input": [3.0, 59.0], "expected": 59.0}, {"input": [3.0, 59.5], "expected": 59.5}, {"input": [3.0, 60.0], "expected": 60.0}, {"input": [3.0, 60.5], "expected": 60.5}, {"input": [3.0, 61.0], "expected": 61.0}, {"input": [3.0, 61.5], "expected": 61.5}, {"input": [3.0, 62.0], "expected": 62.0}, {"input": [3.0, 62.5], "expected": 62.5}, {"input": [3.0, 63.0], "expected": 63.0}, {"input": [3.0, 63.5], "expected": 63.5}, {"input": [3.0, 64.0], "expected": 64.0}, {"input": [3.0, 64.5], "expected": 64.5}, {"input": [3.0, 65.0], "expected": 65.0}, {"input": [3.0, 65.5], "expected": 65.5}, {"input": [3.0, 66.0], "expected": 66.0}, {"input": [3.0, 66.5], "expected": 66.5}, {"input": [3.0, 67.0], "expected": 67.0}, {"input": [3.0, 67.5], "expected": 67.5}, {"input": [3.0, 68.0], "expected": 68.0}, {"input": [3.0, 68.5], "expected": 68.5}, {"input": [3.0, 69.0], "expected": 69.0}, {"input": [3.0, 69.5], "expected": 69.5}, {"input": [3.0, 70.0], "expected": 70.0}, {"input": [3.0, 70.5], "expected": 70.5}, {"input": [3.0, 71.0], "expected": 71.0}, {"input": [3.0, 71.5], "expected": 71.5}, {"input": [3.0, 72.0], "expected": 72.0}, {"input": [3.0, 72.5], "expected": 72.5}, {"input": [3.0, 73.0], "expected": 73.0}, {"input": [3.0, 73.5], "expected": 73.5}, {"input": [3.0, 74.0], "expected": 74.0}, {"input": [3.0, 74.5], "expected": 74.5}, {"input": [3.0, 75.0], "expected": 75.0}, {"input": [3.0, 75.5], "expected": 75.5}, {"input": [3.0, 76.0], "expected": 76.0}, {"input": [3.0, 76.5], "expected": 76.5}, {"input": [3.0, 77.0], "expected": 77.0}, {"input": [3.0, 77.5], "expected": 77.5}, {"input": [3.0, 78.0], "expected": 78.0}, {"input": [3.0, 78.5], "expected": 78.5}, {"input": [3.0, 79.0], "expected": 79.0}, {"input": [3.0, 79.5], "expected": 79.5}, {"input": [3.0, 80.0], "expected": 80.0}, {"input": [3.0, 80.5], "expected": 80.5}, {"input": [3.0, 81.0], "expected": 81.0}, {"input": [3.0, 81.5], "expected": 81.5}, {"input": [3.0, 82.0], "expected": 82.0}, {"input": [3.0, 82.5], "expected": 82.5}, {"input": [3.0, 83.0], "expected": 83.0}, {"input": [3.0, 83.5], "expected": 83.5}, {"input": [3.0, 84.0], "expected": 84.0}, {"input": [3.0, 84.5], "expected": 84.5}, {"input": [3.0, 85.0], "expected": 85.0}, {"input": [3.0, 85.5], "expected": 85.5}, {"input": [3.0, 86.0], "expected": 86.0}, {"input": [3.0, 86.5], "expected": 86.5}, {"input": [3.0, 87.0], "expected": 87.0}, {"input": [3.0, 87.5], "expected": 87.5}, {"input": [3.0, 88.0], "expected": 88.0}, {"input": [3.0, 88.5], "expected": 88.5}, {"input": [3.0, 89.0], "expected": 89.0}, {"input": [3.0, 89.5], "expected": 89.5}, {"input": [3.0, 90.0], "expected": 90.0}, {"input": [3.0, 90.5], "expected": 90.5}, {"input": [3.0, 91.0], "expected": 91.0}, {"input": [3.0, 91.5], "expected": 91.5}, {"input": [3.0, 92.0], "expected": 92.0}, {"input": [3.0, 92.5], "expected": 92.5}, {"input": [3.0, 93.0], "expected": 93.0}, {"input": [3.0, 93.5], "expected": 93.5}, {"input": [3.0, 94.0], "expected": 94.0}, {"input": [3.0, 94.5], "expected": 94.5}, {"input": [3.0, 95.0], "expected": 95.0}, {"input": [3.0, 95.5], "expected": 95.5}, {"input": [3.0, 96.0], "expected": 96.0}, {"input": [3.0, 96.5], "expected": 96.5}, {"input": [3.0, 97.0], "expected": 97.0}, {"input": [3.0, 97.5], "expected": 97.5}, {"input": [3.0, 98.0], "expected": 98.0}, {"input": [3.0, 98.5], "expected": 98.5}, {"input": [3.0, 99.0], "expected": 99.0}, {"input": [3.0, 99.5], "expected": 99.5}, {"input": [3.5, -100.0], "expected": 3.5}, {"input": [3.5, -99.5], "expected": 3.5}, {"input": [3.5, -99.0], "expected": 3.5}, {"input": [3.5, -98.5], "expected": 3.5}, {"input": [3.5, -98.0], "expected": 3.5}, {"input": [3.5, -97.5], "expected": 3.5}, {"input": [3.5, -97.0], "expected": 3.5}, {"input": [3.5, -96.5], "expected": 3.5}, {"input": [3.5, -96.0], "expected": 3.5}, {"input": [3.5, -95.5], "expected": 3.5}, {"input": [3.5, -95.0], "expected": 3.5}, {"input": [3.5, -94.5], "expected": 3.5}, {"input": [3.5, -94.0], "expected": 3.5}, {"input": [3.5, -93.5], "expected": 3.5}, {"input": [3.5, -93.0], "expected": 3.5}, {"input": [3.5, -92.5], "expected": 3.5}, {"input": [3.5, -92.0], "expected": 3.5}, {"input": [3.5, -91.5], "expected": 3.5}, {"input": [3.5, -91.0], "expected": 3.5}, {"input": [3.5, -90.5], "expected": 3.5}, {"input": [3.5, -90.0], "expected": 3.5}, {"input": [3.5, -89.5], "expected": 3.5}, {"input": [3.5, -89.0], "expected": 3.5}, {"input": [3.5, -88.5], "expected": 3.5}, {"input": [3.5, -88.0], "expected": 3.5}, {"input": [3.5, -87.5], "expected": 3.5}, {"input": [3.5, -87.0], "expected": 3.5}, {"input": [3.5, -86.5], "expected": 3.5}, {"input": [3.5, -86.0], "expected": 3.5}, {"input": [3.5, -85.5], "expected": 3.5}, {"input": [3.5, -85.0], "expected": 3.5}, {"input": [3.5, -84.5], "expected": 3.5}, {"input": [3.5, -84.0], "expected": 3.5}, {"input": [3.5, -83.5], "expected": 3.5}, {"input": [3.5, -83.0], "expected": 3.5}, {"input": [3.5, -82.5], "expected": 3.5}, {"input": [3.5, -82.0], "expected": 3.5}, {"input": [3.5, -81.5], "expected": 3.5}, {"input": [3.5, -81.0], "expected": 3.5}, {"input": [3.5, -80.5], "expected": 3.5}, {"input": [3.5, -80.0], "expected": 3.5}, {"input": [3.5, -79.5], "expected": 3.5}, {"input": [3.5, -79.0], "expected": 3.5}, {"input": [3.5, -78.5], "expected": 3.5}, {"input": [3.5, -78.0], "expected": 3.5}, {"input": [3.5, -77.5], "expected": 3.5}, {"input": [3.5, -77.0], "expected": 3.5}, {"input": [3.5, -76.5], "expected": 3.5}, {"input": [3.5, -76.0], "expected": 3.5}, {"input": [3.5, -75.5], "expected": 3.5}, {"input": [3.5, -75.0], "expected": 3.5}, {"input": [3.5, -74.5], "expected": 3.5}, {"input": [3.5, -74.0], "expected": 3.5}, {"input": [3.5, -73.5], "expected": 3.5}, {"input": [3.5, -73.0], "expected": 3.5}, {"input": [3.5, -72.5], "expected": 3.5}, {"input": [3.5, -72.0], "expected": 3.5}, {"input": [3.5, -71.5], "expected": 3.5}, {"input": [3.5, -71.0], "expected": 3.5}, {"input": [3.5, -70.5], "expected": 3.5}, {"input": [3.5, -70.0], "expected": 3.5}, {"input": [3.5, -69.5], "expected": 3.5}, {"input": [3.5, -69.0], "expected": 3.5}, {"input": [3.5, -68.5], "expected": 3.5}, {"input": [3.5, -68.0], "expected": 3.5}, {"input": [3.5, -67.5], "expected": 3.5}, {"input": [3.5, -67.0], "expected": 3.5}, {"input": [3.5, -66.5], "expected": 3.5}, {"input": [3.5, -66.0], "expected": 3.5}, {"input": [3.5, -65.5], "expected": 3.5}, {"input": [3.5, -65.0], "expected": 3.5}, {"input": [3.5, -64.5], "expected": 3.5}, {"input": [3.5, -64.0], "expected": 3.5}, {"input": [3.5, -63.5], "expected": 3.5}, {"input": [3.5, -63.0], "expected": 3.5}, {"input": [3.5, -62.5], "expected": 3.5}, {"input": [3.5, -62.0], "expected": 3.5}, {"input": [3.5, -61.5], "expected": 3.5}, {"input": [3.5, -61.0], "expected": 3.5}, {"input": [3.5, -60.5], "expected": 3.5}, {"input": [3.5, -60.0], "expected": 3.5}, {"input": [3.5, -59.5], "expected": 3.5}, {"input": [3.5, -59.0], "expected": 3.5}, {"input": [3.5, -58.5], "expected": 3.5}, {"input": [3.5, -58.0], "expected": 3.5}, {"input": [3.5, -57.5], "expected": 3.5}, {"input": [3.5, -57.0], "expected": 3.5}, {"input": [3.5, -56.5], "expected": 3.5}, {"input": [3.5, -56.0], "expected": 3.5}, {"input": [3.5, -55.5], "expected": 3.5}, {"input": [3.5, -55.0], "expected": 3.5}, {"input": [3.5, -54.5], "expected": 3.5}, {"input": [3.5, -54.0], "expected": 3.5}, {"input": [3.5, -53.5], "expected": 3.5}, {"input": [3.5, -53.0], "expected": 3.5}, {"input": [3.5, -52.5], "expected": 3.5}, {"input": [3.5, -52.0], "expected": 3.5}, {"input": [3.5, -51.5], "expected": 3.5}, {"input": [3.5, -51.0], "expected": 3.5}, {"input": [3.5, -50.5], "expected": 3.5}, {"input": [3.5, -50.0], "expected": 3.5}, {"input": [3.5, -49.5], "expected": 3.5}, {"input": [3.5, -49.0], "expected": 3.5}, {"input": [3.5, -48.5], "expected": 3.5}, {"input": [3.5, -48.0], "expected": 3.5}, {"input": [3.5, -47.5], "expected": 3.5}, {"input": [3.5, -47.0], "expected": 3.5}, {"input": [3.5, -46.5], "expected": 3.5}, {"input": [3.5, -46.0], "expected": 3.5}, {"input": [3.5, -45.5], "expected": 3.5}, {"input": [3.5, -45.0], "expected": 3.5}, {"input": [3.5, -44.5], "expected": 3.5}, {"input": [3.5, -44.0], "expected": 3.5}, {"input": [3.5, -43.5], "expected": 3.5}, {"input": [3.5, -43.0], "expected": 3.5}, {"input": [3.5, -42.5], "expected": 3.5}, {"input": [3.5, -42.0], "expected": 3.5}, {"input": [3.5, -41.5], "expected": 3.5}, {"input": [3.5, -41.0], "expected": 3.5}, {"input": [3.5, -40.5], "expected": 3.5}, {"input": [3.5, -40.0], "expected": 3.5}, {"input": [3.5, -39.5], "expected": 3.5}, {"input": [3.5, -39.0], "expected": 3.5}, {"input": [3.5, -38.5], "expected": 3.5}, {"input": [3.5, -38.0], "expected": 3.5}, {"input": [3.5, -37.5], "expected": 3.5}, {"input": [3.5, -37.0], "expected": 3.5}, {"input": [3.5, -36.5], "expected": 3.5}, {"input": [3.5, -36.0], "expected": 3.5}, {"input": [3.5, -35.5], "expected": 3.5}, {"input": [3.5, -35.0], "expected": 3.5}, {"input": [3.5, -34.5], "expected": 3.5}, {"input": [3.5, -34.0], "expected": 3.5}, {"input": [3.5, -33.5], "expected": 3.5}, {"input": [3.5, -33.0], "expected": 3.5}, {"input": [3.5, -32.5], "expected": 3.5000000000000004}, {"input": [3.5, -32.0], "expected": 3.5000000000000004}, {"input": [3.5, -31.5], "expected": 3.5000000000000004}, {"input": [3.5, -31.0], "expected": 3.500000000000001}, {"input": [3.5, -30.5], "expected": 3.5000000000000018}, {"input": [3.5, -30.0], "expected": 3.5000000000000027}, {"input": [3.5, -29.5], "expected": 3.5000000000000044}, {"input": [3.5, -29.0], "expected": 3.5000000000000075}, {"input": [3.5, -28.5], "expected": 3.500000000000013}, {"input": [3.5, -28.0], "expected": 3.500000000000021}, {"input": [3.5, -27.5], "expected": 3.5000000000000346}, {"input": [3.5, -27.0], "expected": 3.500000000000057}, {"input": [3.5, -26.5], "expected": 3.5000000000000937}, {"input": [3.5, -26.0], "expected": 3.500000000000154}, {"input": [3.5, -25.5], "expected": 3.5000000000002545}, {"input": [3.5, -25.0], "expected": 3.500000000000419}, {"input": [3.5, -24.5], "expected": 3.5000000000006914}, {"input": [3.5, -24.0], "expected": 3.50000000000114}, {"input": [3.5, -23.5], "expected": 3.5000000000018794}, {"input": [3.5, -23.0], "expected": 3.500000000003099}, {"input": [3.5, -22.5], "expected": 3.5000000000051092}, {"input": [3.5, -22.0], "expected": 3.5000000000084235}, {"input": [3.5, -21.5], "expected": 3.500000000013888}, {"input": [3.5, -21.0], "expected": 3.5000000000228972}, {"input": [3.5, -20.5], "expected": 3.500000000037751}, {"input": [3.5, -20.0], "expected": 3.5000000000622413}, {"input": [3.5, -19.5], "expected": 3.500000000102619}, {"input": [3.5, -19.0], "expected": 3.50000000016919}, {"input": [3.5, -18.5], "expected": 3.5000000002789466}, {"input": [3.5, -18.0], "expected": 3.5000000004599054}, {"input": [3.5, -17.5], "expected": 3.500000000758256}, {"input": [3.5, -17.0], "expected": 3.500000001250153}, {"input": [3.5, -16.5], "expected": 3.5000000020611535}, {"input": [3.5, -16.0], "expected": 3.500000003398268}, {"input": [3.5, -15.5], "expected": 3.5000000056027964}, {"input": [3.5, -15.0], "expected": 3.5000000092374495}, {"input": [3.5, -14.5], "expected": 3.5000000152299795}, {"input": [3.5, -14.0], "expected": 3.5000000251099914}, {"input": [3.5, -13.5], "expected": 3.5000000413993764}, {"input": [3.5, -13.0], "expected": 3.5000000682560315}, {"input": [3.5, -12.5], "expected": 3.5000001125351683}, {"input": [3.5, -12.0], "expected": 3.500000185539119}, {"input": [3.5, -11.5], "expected": 3.5000003059022737}, {"input": [3.5, -11.0], "expected": 3.5000005043475353}, {"input": [3.5, -10.5], "expected": 3.5000008315283733}, {"input": [3.5, -10.0], "expected": 3.5000013709581466}, {"input": [3.5, -9.5], "expected": 3.5000022603268524}, {"input": [3.5, -9.0], "expected": 3.500003726646228}, {"input": [3.5, -8.5], "expected": 3.5000061441934776}, {"input": [3.5, -8.0], "expected": 3.5000101300422894}, {"input": [3.5, -7.5], "expected": 3.5000167015613184}, {"input": [3.5, -7.0], "expected": 3.500027536070229}, {"input": [3.5, -6.5], "expected": 3.500045398899217}, {"input": [3.5, -6.0], "expected": 3.5000748490286293}, {"input": [3.5, -5.5], "expected": 3.500123402189723}, {"input": [3.5, -5.0], "expected": 3.5002034476721295}, {"input": [3.5, -4.5], "expected": 3.500335406372896}, {"input": [3.5, -4.0], "expected": 3.5005529314753607}, {"input": [3.5, -3.5], "expected": 3.500911466453774}, {"input": [3.5, -3.0], "expected": 3.501502310159754}, {"input": [3.5, -2.5], "expected": 3.5024756851377306}, {"input": [3.5, -2.0], "expected": 3.5040784432705707}, {"input": [3.5, -1.5], "expected": 3.5067153484891183}, {"input": [3.5, -1.0], "expected": 3.511047744848594}, {"input": [3.5, -0.5], "expected": 3.51814992791781}, {"input": [3.5, 0.0], "expected": 3.5297504182726205}, {"input": [3.5, 0.5], "expected": 3.548587351573742}, {"input": [3.5, 1.0], "expected": 3.5788897342925496}, {"input": [3.5, 1.5], "expected": 3.6269280110429727}, {"input": [3.5, 2.0], "expected": 3.7014132779827524}, {"input": [3.5, 2.5], "expected": 3.813261687518223}, {"input": [3.5, 3.0], "expected": 3.9740769841801065}, {"input": [3.5, 3.5], "expected": 4.193147180559945}, {"input": [3.5, 4.0], "expected": 4.4740769841801065}, {"input": [3.5, 4.5], "expected": 4.813261687518223}, {"input": [3.5, 5.0], "expected": 5.201413277982752}, {"input": [3.5, 5.5], "expected": 5.626928011042972}, {"input": [3.5, 6.0], "expected": 6.07888973429255}, {"input": [3.5, 6.5], "expected": 6.548587351573742}, {"input": [3.5, 7.0], "expected": 7.029750418272621}, {"input": [3.5, 7.5], "expected": 7.5181499279178094}, {"input": [3.5, 8.0], "expected": 8.011047744848593}, {"input": [3.5, 8.5], "expected": 8.506715348489118}, {"input": [3.5, 9.0], "expected": 9.00407844327057}, {"input": [3.5, 9.5], "expected": 9.50247568513773}, {"input": [3.5, 10.0], "expected": 10.001502310159754}, {"input": [3.5, 10.5], "expected": 10.500911466453774}, {"input": [3.5, 11.0], "expected": 11.000552931475362}, {"input": [3.5, 11.5], "expected": 11.500335406372896}, {"input": [3.5, 12.0], "expected": 12.00020344767213}, {"input": [3.5, 12.5], "expected": 12.500123402189724}, {"input": [3.5, 13.0], "expected": 13.000074849028628}, {"input": [3.5, 13.5], "expected": 13.500045398899218}, {"input": [3.5, 14.0], "expected": 14.00002753607023}, {"input": [3.5, 14.5], "expected": 14.500016701561318}, {"input": [3.5, 15.0], "expected": 15.00001013004229}, {"input": [3.5, 15.5], "expected": 15.500006144193478}, {"input": [3.5, 16.0], "expected": 16.000003726646227}, {"input": [3.5, 16.5], "expected": 16.500002260326852}, {"input": [3.5, 17.0], "expected": 17.000001370958145}, {"input": [3.5, 17.5], "expected": 17.500000831528375}, {"input": [3.5, 18.0], "expected": 18.000000504347536}, {"input": [3.5, 18.5], "expected": 18.500000305902272}, {"input": [3.5, 19.0], "expected": 19.00000018553912}, {"input": [3.5, 19.5], "expected": 19.50000011253517}, {"input": [3.5, 20.0], "expected": 20.000000068256032}, {"input": [3.5, 20.5], "expected": 20.500000041399375}, {"input": [3.5, 21.0], "expected": 21.00000002510999}, {"input": [3.5, 21.5], "expected": 21.50000001522998}, {"input": [3.5, 22.0], "expected": 22.00000000923745}, {"input": [3.5, 22.5], "expected": 22.500000005602796}, {"input": [3.5, 23.0], "expected": 23.000000003398267}, {"input": [3.5, 23.5], "expected": 23.500000002061153}, {"input": [3.5, 24.0], "expected": 24.000000001250154}, {"input": [3.5, 24.5], "expected": 24.500000000758256}, {"input": [3.5, 25.0], "expected": 25.000000000459906}, {"input": [3.5, 25.5], "expected": 25.50000000027895}, {"input": [3.5, 26.0], "expected": 26.00000000016919}, {"input": [3.5, 26.5], "expected": 26.50000000010262}, {"input": [3.5, 27.0], "expected": 27.00000000006224}, {"input": [3.5, 27.5], "expected": 27.50000000003775}, {"input": [3.5, 28.0], "expected": 28.000000000022897}, {"input": [3.5, 28.5], "expected": 28.500000000013888}, {"input": [3.5, 29.0], "expected": 29.000000000008423}, {"input": [3.5, 29.5], "expected": 29.50000000000511}, {"input": [3.5, 30.0], "expected": 30.000000000003098}, {"input": [3.5, 30.5], "expected": 30.50000000000188}, {"input": [3.5, 31.0], "expected": 31.00000000000114}, {"input": [3.5, 31.5], "expected": 31.500000000000693}, {"input": [3.5, 32.0], "expected": 32.00000000000042}, {"input": [3.5, 32.5], "expected": 32.500000000000256}, {"input": [3.5, 33.0], "expected": 33.000000000000156}, {"input": [3.5, 33.5], "expected": 33.50000000000009}, {"input": [3.5, 34.0], "expected": 34.00000000000006}, {"input": [3.5, 34.5], "expected": 34.500000000000036}, {"input": [3.5, 35.0], "expected": 35.00000000000002}, {"input": [3.5, 35.5], "expected": 35.500000000000014}, {"input": [3.5, 36.0], "expected": 36.00000000000001}, {"input": [3.5, 36.5], "expected": 36.50000000000001}, {"input": [3.5, 37.0], "expected": 37.0}, {"input": [3.5, 37.5], "expected": 37.5}, {"input": [3.5, 38.0], "expected": 38.0}, {"input": [3.5, 38.5], "expected": 38.5}, {"input": [3.5, 39.0], "expected": 39.0}, {"input": [3.5, 39.5], "expected": 39.5}, {"input": [3.5, 40.0], "expected": 40.0}, {"input": [3.5, 40.5], "expected": 40.5}, {"input": [3.5, 41.0], "expected": 41.0}, {"input": [3.5, 41.5], "expected": 41.5}, {"input": [3.5, 42.0], "expected": 42.0}, {"input": [3.5, 42.5], "expected": 42.5}, {"input": [3.5, 43.0], "expected": 43.0}, {"input": [3.5, 43.5], "expected": 43.5}, {"input": [3.5, 44.0], "expected": 44.0}, {"input": [3.5, 44.5], "expected": 44.5}, {"input": [3.5, 45.0], "expected": 45.0}, {"input": [3.5, 45.5], "expected": 45.5}, {"input": [3.5, 46.0], "expected": 46.0}, {"input": [3.5, 46.5], "expected": 46.5}, {"input": [3.5, 47.0], "expected": 47.0}, {"input": [3.5, 47.5], "expected": 47.5}, {"input": [3.5, 48.0], "expected": 48.0}, {"input": [3.5, 48.5], "expected": 48.5}, {"input": [3.5, 49.0], "expected": 49.0}, {"input": [3.5, 49.5], "expected": 49.5}, {"input": [3.5, 50.0], "expected": 50.0}, {"input": [3.5, 50.5], "expected": 50.5}, {"input": [3.5, 51.0], "expected": 51.0}, {"input": [3.5, 51.5], "expected": 51.5}, {"input": [3.5, 52.0], "expected": 52.0}, {"input": [3.5, 52.5], "expected": 52.5}, {"input": [3.5, 53.0], "expected": 53.0}, {"input": [3.5, 53.5], "expected": 53.5}, {"input": [3.5, 54.0], "expected": 54.0}, {"input": [3.5, 54.5], "expected": 54.5}, {"input": [3.5, 55.0], "expected": 55.0}, {"input": [3.5, 55.5], "expected": 55.5}, {"input": [3.5, 56.0], "expected": 56.0}, {"input": [3.5, 56.5], "expected": 56.5}, {"input": [3.5, 57.0], "expected": 57.0}, {"input": [3.5, 57.5], "expected": 57.5}, {"input": [3.5, 58.0], "expected": 58.0}, {"input": [3.5, 58.5], "expected": 58.5}, {"input": [3.5, 59.0], "expected": 59.0}, {"input": [3.5, 59.5], "expected": 59.5}, {"input": [3.5, 60.0], "expected": 60.0}, {"input": [3.5, 60.5], "expected": 60.5}, {"input": [3.5, 61.0], "expected": 61.0}, {"input": [3.5, 61.5], "expected": 61.5}, {"input": [3.5, 62.0], "expected": 62.0}, {"input": [3.5, 62.5], "expected": 62.5}, {"input": [3.5, 63.0], "expected": 63.0}, {"input": [3.5, 63.5], "expected": 63.5}, {"input": [3.5, 64.0], "expected": 64.0}, {"input": [3.5, 64.5], "expected": 64.5}, {"input": [3.5, 65.0], "expected": 65.0}, {"input": [3.5, 65.5], "expected": 65.5}, {"input": [3.5, 66.0], "expected": 66.0}, {"input": [3.5, 66.5], "expected": 66.5}, {"input": [3.5, 67.0], "expected": 67.0}, {"input": [3.5, 67.5], "expected": 67.5}, {"input": [3.5, 68.0], "expected": 68.0}, {"input": [3.5, 68.5], "expected": 68.5}, {"input": [3.5, 69.0], "expected": 69.0}, {"input": [3.5, 69.5], "expected": 69.5}, {"input": [3.5, 70.0], "expected": 70.0}, {"input": [3.5, 70.5], "expected": 70.5}, {"input": [3.5, 71.0], "expected": 71.0}, {"input": [3.5, 71.5], "expected": 71.5}, {"input": [3.5, 72.0], "expected": 72.0}, {"input": [3.5, 72.5], "expected": 72.5}, {"input": [3.5, 73.0], "expected": 73.0}, {"input": [3.5, 73.5], "expected": 73.5}, {"input": [3.5, 74.0], "expected": 74.0}, {"input": [3.5, 74.5], "expected": 74.5}, {"input": [3.5, 75.0], "expected": 75.0}, {"input": [3.5, 75.5], "expected": 75.5}, {"input": [3.5, 76.0], "expected": 76.0}, {"input": [3.5, 76.5], "expected": 76.5}, {"input": [3.5, 77.0], "expected": 77.0}, {"input": [3.5, 77.5], "expected": 77.5}, {"input": [3.5, 78.0], "expected": 78.0}, {"input": [3.5, 78.5], "expected": 78.5}, {"input": [3.5, 79.0], "expected": 79.0}, {"input": [3.5, 79.5], "expected": 79.5}, {"input": [3.5, 80.0], "expected": 80.0}, {"input": [3.5, 80.5], "expected": 80.5}, {"input": [3.5, 81.0], "expected": 81.0}, {"input": [3.5, 81.5], "expected": 81.5}, {"input": [3.5, 82.0], "expected": 82.0}, {"input": [3.5, 82.5], "expected": 82.5}, {"input": [3.5, 83.0], "expected": 83.0}, {"input": [3.5, 83.5], "expected": 83.5}, {"input": [3.5, 84.0], "expected": 84.0}, {"input": [3.5, 84.5], "expected": 84.5}, {"input": [3.5, 85.0], "expected": 85.0}, {"input": [3.5, 85.5], "expected": 85.5}, {"input": [3.5, 86.0], "expected": 86.0}, {"input": [3.5, 86.5], "expected": 86.5}, {"input": [3.5, 87.0], "expected": 87.0}, {"input": [3.5, 87.5], "expected": 87.5}, {"input": [3.5, 88.0], "expected": 88.0}, {"input": [3.5, 88.5], "expected": 88.5}, {"input": [3.5, 89.0], "expected": 89.0}, {"input": [3.5, 89.5], "expected": 89.5}, {"input": [3.5, 90.0], "expected": 90.0}, {"input": [3.5, 90.5], "expected": 90.5}, {"input": [3.5, 91.0], "expected": 91.0}, {"input": [3.5, 91.5], "expected": 91.5}, {"input": [3.5, 92.0], "expected": 92.0}, {"input": [3.5, 92.5], "expected": 92.5}, {"input": [3.5, 93.0], "expected": 93.0}, {"input": [3.5, 93.5], "expected": 93.5}, {"input": [3.5, 94.0], "expected": 94.0}, {"input": [3.5, 94.5], "expected": 94.5}, {"input": [3.5, 95.0], "expected": 95.0}, {"input": [3.5, 95.5], "expected": 95.5}, {"input": [3.5, 96.0], "expected": 96.0}, {"input": [3.5, 96.5], "expected": 96.5}, {"input": [3.5, 97.0], "expected": 97.0}, {"input": [3.5, 97.5], "expected": 97.5}, {"input": [3.5, 98.0], "expected": 98.0}, {"input": [3.5, 98.5], "expected": 98.5}, {"input": [3.5, 99.0], "expected": 99.0}, {"input": [3.5, 99.5], "expected": 99.5}, {"input": [4.0, -100.0], "expected": 4.0}, {"input": [4.0, -99.5], "expected": 4.0}, {"input": [4.0, -99.0], "expected": 4.0}, {"input": [4.0, -98.5], "expected": 4.0}, {"input": [4.0, -98.0], "expected": 4.0}, {"input": [4.0, -97.5], "expected": 4.0}, {"input": [4.0, -97.0], "expected": 4.0}, {"input": [4.0, -96.5], "expected": 4.0}, {"input": [4.0, -96.0], "expected": 4.0}, {"input": [4.0, -95.5], "expected": 4.0}, {"input": [4.0, -95.0], "expected": 4.0}, {"input": [4.0, -94.5], "expected": 4.0}, {"input": [4.0, -94.0], "expected": 4.0}, {"input": [4.0, -93.5], "expected": 4.0}, {"input": [4.0, -93.0], "expected": 4.0}, {"input": [4.0, -92.5], "expected": 4.0}, {"input": [4.0, -92.0], "expected": 4.0}, {"input": [4.0, -91.5], "expected": 4.0}, {"input": [4.0, -91.0], "expected": 4.0}, {"input": [4.0, -90.5], "expected": 4.0}, {"input": [4.0, -90.0], "expected": 4.0}, {"input": [4.0, -89.5], "expected": 4.0}, {"input": [4.0, -89.0], "expected": 4.0}, {"input": [4.0, -88.5], "expected": 4.0}, {"input": [4.0, -88.0], "expected": 4.0}, {"input": [4.0, -87.5], "expected": 4.0}, {"input": [4.0, -87.0], "expected": 4.0}, {"input": [4.0, -86.5], "expected": 4.0}, {"input": [4.0, -86.0], "expected": 4.0}, {"input": [4.0, -85.5], "expected": 4.0}, {"input": [4.0, -85.0], "expected": 4.0}, {"input": [4.0, -84.5], "expected": 4.0}, {"input": [4.0, -84.0], "expected": 4.0}, {"input": [4.0, -83.5], "expected": 4.0}, {"input": [4.0, -83.0], "expected": 4.0}, {"input": [4.0, -82.5], "expected": 4.0}, {"input": [4.0, -82.0], "expected": 4.0}, {"input": [4.0, -81.5], "expected": 4.0}, {"input": [4.0, -81.0], "expected": 4.0}, {"input": [4.0, -80.5], "expected": 4.0}, {"input": [4.0, -80.0], "expected": 4.0}, {"input": [4.0, -79.5], "expected": 4.0}, {"input": [4.0, -79.0], "expected": 4.0}, {"input": [4.0, -78.5], "expected": 4.0}, {"input": [4.0, -78.0], "expected": 4.0}, {"input": [4.0, -77.5], "expected": 4.0}, {"input": [4.0, -77.0], "expected": 4.0}, {"input": [4.0, -76.5], "expected": 4.0}, {"input": [4.0, -76.0], "expected": 4.0}, {"input": [4.0, -75.5], "expected": 4.0}, {"input": [4.0, -75.0], "expected": 4.0}, {"input": [4.0, -74.5], "expected": 4.0}, {"input": [4.0, -74.0], "expected": 4.0}, {"input": [4.0, -73.5], "expected": 4.0}, {"input": [4.0, -73.0], "expected": 4.0}, {"input": [4.0, -72.5], "expected": 4.0}, {"input": [4.0, -72.0], "expected": 4.0}, {"input": [4.0, -71.5], "expected": 4.0}, {"input": [4.0, -71.0], "expected": 4.0}, {"input": [4.0, -70.5], "expected": 4.0}, {"input": [4.0, -70.0], "expected": 4.0}, {"input": [4.0, -69.5], "expected": 4.0}, {"input": [4.0, -69.0], "expected": 4.0}, {"input": [4.0, -68.5], "expected": 4.0}, {"input": [4.0, -68.0], "expected": 4.0}, {"input": [4.0, -67.5], "expected": 4.0}, {"input": [4.0, -67.0], "expected": 4.0}, {"input": [4.0, -66.5], "expected": 4.0}, {"input": [4.0, -66.0], "expected": 4.0}, {"input": [4.0, -65.5], "expected": 4.0}, {"input": [4.0, -65.0], "expected": 4.0}, {"input": [4.0, -64.5], "expected": 4.0}, {"input": [4.0, -64.0], "expected": 4.0}, {"input": [4.0, -63.5], "expected": 4.0}, {"input": [4.0, -63.0], "expected": 4.0}, {"input": [4.0, -62.5], "expected": 4.0}, {"input": [4.0, -62.0], "expected": 4.0}, {"input": [4.0, -61.5], "expected": 4.0}, {"input": [4.0, -61.0], "expected": 4.0}, {"input": [4.0, -60.5], "expected": 4.0}, {"input": [4.0, -60.0], "expected": 4.0}, {"input": [4.0, -59.5], "expected": 4.0}, {"input": [4.0, -59.0], "expected": 4.0}, {"input": [4.0, -58.5], "expected": 4.0}, {"input": [4.0, -58.0], "expected": 4.0}, {"input": [4.0, -57.5], "expected": 4.0}, {"input": [4.0, -57.0], "expected": 4.0}, {"input": [4.0, -56.5], "expected": 4.0}, {"input": [4.0, -56.0], "expected": 4.0}, {"input": [4.0, -55.5], "expected": 4.0}, {"input": [4.0, -55.0], "expected": 4.0}, {"input": [4.0, -54.5], "expected": 4.0}, {"input": [4.0, -54.0], "expected": 4.0}, {"input": [4.0, -53.5], "expected": 4.0}, {"input": [4.0, -53.0], "expected": 4.0}, {"input": [4.0, -52.5], "expected": 4.0}, {"input": [4.0, -52.0], "expected": 4.0}, {"input": [4.0, -51.5], "expected": 4.0}, {"input": [4.0, -51.0], "expected": 4.0}, {"input": [4.0, -50.5], "expected": 4.0}, {"input": [4.0, -50.0], "expected": 4.0}, {"input": [4.0, -49.5], "expected": 4.0}, {"input": [4.0, -49.0], "expected": 4.0}, {"input": [4.0, -48.5], "expected": 4.0}, {"input": [4.0, -48.0], "expected": 4.0}, {"input": [4.0, -47.5], "expected": 4.0}, {"input": [4.0, -47.0], "expected": 4.0}, {"input": [4.0, -46.5], "expected": 4.0}, {"input": [4.0, -46.0], "expected": 4.0}, {"input": [4.0, -45.5], "expected": 4.0}, {"input": [4.0, -45.0], "expected": 4.0}, {"input": [4.0, -44.5], "expected": 4.0}, {"input": [4.0, -44.0], "expected": 4.0}, {"input": [4.0, -43.5], "expected": 4.0}, {"input": [4.0, -43.0], "expected": 4.0}, {"input": [4.0, -42.5], "expected": 4.0}, {"input": [4.0, -42.0], "expected": 4.0}, {"input": [4.0, -41.5], "expected": 4.0}, {"input": [4.0, -41.0], "expected": 4.0}, {"input": [4.0, -40.5], "expected": 4.0}, {"input": [4.0, -40.0], "expected": 4.0}, {"input": [4.0, -39.5], "expected": 4.0}, {"input": [4.0, -39.0], "expected": 4.0}, {"input": [4.0, -38.5], "expected": 4.0}, {"input": [4.0, -38.0], "expected": 4.0}, {"input": [4.0, -37.5], "expected": 4.0}, {"input": [4.0, -37.0], "expected": 4.0}, {"input": [4.0, -36.5], "expected": 4.0}, {"input": [4.0, -36.0], "expected": 4.0}, {"input": [4.0, -35.5], "expected": 4.0}, {"input": [4.0, -35.0], "expected": 4.0}, {"input": [4.0, -34.5], "expected": 4.0}, {"input": [4.0, -34.0], "expected": 4.0}, {"input": [4.0, -33.5], "expected": 4.0}, {"input": [4.0, -33.0], "expected": 4.0}, {"input": [4.0, -32.5], "expected": 4.0}, {"input": [4.0, -32.0], "expected": 4.0}, {"input": [4.0, -31.5], "expected": 4.0}, {"input": [4.0, -31.0], "expected": 4.000000000000001}, {"input": [4.0, -30.5], "expected": 4.000000000000001}, {"input": [4.0, -30.0], "expected": 4.000000000000002}, {"input": [4.0, -29.5], "expected": 4.000000000000003}, {"input": [4.0, -29.0], "expected": 4.000000000000004}, {"input": [4.0, -28.5], "expected": 4.000000000000008}, {"input": [4.0, -28.0], "expected": 4.000000000000012}, {"input": [4.0, -27.5], "expected": 4.000000000000021}, {"input": [4.0, -27.0], "expected": 4.000000000000035}, {"input": [4.0, -26.5], "expected": 4.000000000000057}, {"input": [4.0, -26.0], "expected": 4.000000000000093}, {"input": [4.0, -25.5], "expected": 4.0000000000001545}, {"input": [4.0, -25.0], "expected": 4.000000000000254}, {"input": [4.0, -24.5], "expected": 4.000000000000419}, {"input": [4.0, -24.0], "expected": 4.000000000000691}, {"input": [4.0, -23.5], "expected": 4.00000000000114}, {"input": [4.0, -23.0], "expected": 4.000000000001879}, {"input": [4.0, -22.5], "expected": 4.000000000003099}, {"input": [4.0, -22.0], "expected": 4.000000000005109}, {"input": [4.0, -21.5], "expected": 4.0000000000084235}, {"input": [4.0, -21.0], "expected": 4.000000000013888}, {"input": [4.0, -20.5], "expected": 4.000000000022897}, {"input": [4.0, -20.0], "expected": 4.000000000037751}, {"input": [4.0, -19.5], "expected": 4.000000000062242}, {"input": [4.0, -19.0], "expected": 4.000000000102618}, {"input": [4.0, -18.5], "expected": 4.00000000016919}, {"input": [4.0, -18.0], "expected": 4.000000000278947}, {"input": [4.0, -17.5], "expected": 4.000000000459906}, {"input": [4.0, -17.0], "expected": 4.000000000758256}, {"input": [4.0, -16.5], "expected": 4.000000001250153}, {"input": [4.0, -16.0], "expected": 4.000000002061154}, {"input": [4.0, -15.5], "expected": 4.0000000033982674}, {"input": [4.0, -15.0], "expected": 4.0000000056027964}, {"input": [4.0, -14.5], "expected": 4.00000000923745}, {"input": [4.0, -14.0], "expected": 4.00000001522998}, {"input": [4.0, -13.5], "expected": 4.000000025109991}, {"input": [4.0, -13.0], "expected": 4.000000041399376}, {"input": [4.0, -12.5], "expected": 4.000000068256031}, {"input": [4.0, -12.0], "expected": 4.000000112535169}, {"input": [4.0, -11.5], "expected": 4.000000185539119}, {"input": [4.0, -11.0], "expected": 4.000000305902273}, {"input": [4.0, -10.5], "expected": 4.000000504347535}, {"input": [4.0, -10.0], "expected": 4.000000831528373}, {"input": [4.0, -9.5], "expected": 4.000001370958147}, {"input": [4.0, -9.0], "expected": 4.000002260326853}, {"input": [4.0, -8.5], "expected": 4.000003726646228}, {"input": [4.0, -8.0], "expected": 4.0000061441934776}, {"input": [4.0, -7.5], "expected": 4.0000101300422894}, {"input": [4.0, -7.0], "expected": 4.000016701561319}, {"input": [4.0, -6.5], "expected": 4.000027536070228}, {"input": [4.0, -6.0], "expected": 4.000045398899217}, {"input": [4.0, -5.5], "expected": 4.000074849028629}, {"input": [4.0, -5.0], "expected": 4.000123402189724}, {"input": [4.0, -4.5], "expected": 4.0002034476721295}, {"input": [4.0, -4.0], "expected": 4.000335406372896}, {"input": [4.0, -3.5], "expected": 4.000552931475361}, {"input": [4.0, -3.0], "expected": 4.000911466453775}, {"input": [4.0, -2.5], "expected": 4.001502310159754}, {"input": [4.0, -2.0], "expected": 4.00247568513773}, {"input": [4.0, -1.5], "expected": 4.004078443270571}, {"input": [4.0, -1.0], "expected": 4.006715348489118}, {"input": [4.0, -0.5], "expected": 4.011047744848594}, {"input": [4.0, 0.0], "expected": 4.0181499279178094}, {"input": [4.0, 0.5], "expected": 4.029750418272621}, {"input": [4.0, 1.0], "expected": 4.048587351573742}, {"input": [4.0, 1.5], "expected": 4.07888973429255}, {"input": [4.0, 2.0], "expected": 4.126928011042972}, {"input": [4.0, 2.5], "expected": 4.201413277982752}, {"input": [4.0, 3.0], "expected": 4.313261687518223}, {"input": [4.0, 3.5], "expected": 4.4740769841801065}, {"input": [4.0, 4.0], "expected": 4.693147180559945}, {"input": [4.0, 4.5], "expected": 4.9740769841801065}, {"input": [4.0, 5.0], "expected": 5.313261687518223}, {"input": [4.0, 5.5], "expected": 5.701413277982752}, {"input": [4.0, 6.0], "expected": 6.126928011042972}, {"input": [4.0, 6.5], "expected": 6.57888973429255}, {"input": [4.0, 7.0], "expected": 7.048587351573742}, {"input": [4.0, 7.5], "expected": 7.529750418272621}, {"input": [4.0, 8.0], "expected": 8.01814992791781}, {"input": [4.0, 8.5], "expected": 8.511047744848593}, {"input": [4.0, 9.0], "expected": 9.006715348489118}, {"input": [4.0, 9.5], "expected": 9.50407844327057}, {"input": [4.0, 10.0], "expected": 10.00247568513773}, {"input": [4.0, 10.5], "expected": 10.501502310159754}, {"input": [4.0, 11.0], "expected": 11.000911466453774}, {"input": [4.0, 11.5], "expected": 11.500552931475362}, {"input": [4.0, 12.0], "expected": 12.000335406372896}, {"input": [4.0, 12.5], "expected": 12.50020344767213}, {"input": [4.0, 13.0], "expected": 13.000123402189724}, {"input": [4.0, 13.5], "expected": 13.500074849028628}, {"input": [4.0, 14.0], "expected": 14.000045398899218}, {"input": [4.0, 14.5], "expected": 14.50002753607023}, {"input": [4.0, 15.0], "expected": 15.000016701561318}, {"input": [4.0, 15.5], "expected": 15.50001013004229}, {"input": [4.0, 16.0], "expected": 16.000006144193478}, {"input": [4.0, 16.5], "expected": 16.500003726646227}, {"input": [4.0, 17.0], "expected": 17.000002260326852}, {"input": [4.0, 17.5], "expected": 17.500001370958145}, {"input": [4.0, 18.0], "expected": 18.000000831528375}, {"input": [4.0, 18.5], "expected": 18.500000504347536}, {"input": [4.0, 19.0], "expected": 19.000000305902272}, {"input": [4.0, 19.5], "expected": 19.50000018553912}, {"input": [4.0, 20.0], "expected": 20.00000011253517}, {"input": [4.0, 20.5], "expected": 20.500000068256032}, {"input": [4.0, 21.0], "expected": 21.000000041399375}, {"input": [4.0, 21.5], "expected": 21.50000002510999}, {"input": [4.0, 22.0], "expected": 22.00000001522998}, {"input": [4.0, 22.5], "expected": 22.50000000923745}, {"input": [4.0, 23.0], "expected": 23.000000005602796}, {"input": [4.0, 23.5], "expected": 23.500000003398267}, {"input": [4.0, 24.0], "expected": 24.000000002061153}, {"input": [4.0, 24.5], "expected": 24.500000001250154}, {"input": [4.0, 25.0], "expected": 25.000000000758256}, {"input": [4.0, 25.5], "expected": 25.500000000459906}, {"input": [4.0, 26.0], "expected": 26.00000000027895}, {"input": [4.0, 26.5], "expected": 26.50000000016919}, {"input": [4.0, 27.0], "expected": 27.00000000010262}, {"input": [4.0, 27.5], "expected": 27.50000000006224}, {"input": [4.0, 28.0], "expected": 28.00000000003775}, {"input": [4.0, 28.5], "expected": 28.500000000022897}, {"input": [4.0, 29.0], "expected": 29.000000000013888}, {"input": [4.0, 29.5], "expected": 29.500000000008423}, {"input": [4.0, 30.0], "expected": 30.00000000000511}, {"input": [4.0, 30.5], "expected": 30.500000000003098}, {"input": [4.0, 31.0], "expected": 31.00000000000188}, {"input": [4.0, 31.5], "expected": 31.50000000000114}, {"input": [4.0, 32.0], "expected": 32.00000000000069}, {"input": [4.0, 32.5], "expected": 32.50000000000042}, {"input": [4.0, 33.0], "expected": 33.000000000000256}, {"input": [4.0, 33.5], "expected": 33.500000000000156}, {"input": [4.0, 34.0], "expected": 34.00000000000009}, {"input": [4.0, 34.5], "expected": 34.50000000000006}, {"input": [4.0, 35.0], "expected": 35.000000000000036}, {"input": [4.0, 35.5], "expected": 35.50000000000002}, {"input": [4.0, 36.0], "expected": 36.000000000000014}, {"input": [4.0, 36.5], "expected": 36.50000000000001}, {"input": [4.0, 37.0], "expected": 37.00000000000001}, {"input": [4.0, 37.5], "expected": 37.5}, {"input": [4.0, 38.0], "expected": 38.0}, {"input": [4.0, 38.5], "expected": 38.5}, {"input": [4.0, 39.0], "expected": 39.0}, {"input": [4.0, 39.5], "expected": 39.5}, {"input": [4.0, 40.0], "expected": 40.0}, {"input": [4.0, 40.5], "expected": 40.5}, {"input": [4.0, 41.0], "expected": 41.0}, {"input": [4.0, 41.5], "expected": 41.5}, {"input": [4.0, 42.0], "expected": 42.0}, {"input": [4.0, 42.5], "expected": 42.5}, {"input": [4.0, 43.0], "expected": 43.0}, {"input": [4.0, 43.5], "expected": 43.5}, {"input": [4.0, 44.0], "expected": 44.0}, {"input": [4.0, 44.5], "expected": 44.5}, {"input": [4.0, 45.0], "expected": 45.0}, {"input": [4.0, 45.5], "expected": 45.5}, {"input": [4.0, 46.0], "expected": 46.0}, {"input": [4.0, 46.5], "expected": 46.5}, {"input": [4.0, 47.0], "expected": 47.0}, {"input": [4.0, 47.5], "expected": 47.5}, {"input": [4.0, 48.0], "expected": 48.0}, {"input": [4.0, 48.5], "expected": 48.5}, {"input": [4.0, 49.0], "expected": 49.0}, {"input": [4.0, 49.5], "expected": 49.5}, {"input": [4.0, 50.0], "expected": 50.0}, {"input": [4.0, 50.5], "expected": 50.5}, {"input": [4.0, 51.0], "expected": 51.0}, {"input": [4.0, 51.5], "expected": 51.5}, {"input": [4.0, 52.0], "expected": 52.0}, {"input": [4.0, 52.5], "expected": 52.5}, {"input": [4.0, 53.0], "expected": 53.0}, {"input": [4.0, 53.5], "expected": 53.5}, {"input": [4.0, 54.0], "expected": 54.0}, {"input": [4.0, 54.5], "expected": 54.5}, {"input": [4.0, 55.0], "expected": 55.0}, {"input": [4.0, 55.5], "expected": 55.5}, {"input": [4.0, 56.0], "expected": 56.0}, {"input": [4.0, 56.5], "expected": 56.5}, {"input": [4.0, 57.0], "expected": 57.0}, {"input": [4.0, 57.5], "expected": 57.5}, {"input": [4.0, 58.0], "expected": 58.0}, {"input": [4.0, 58.5], "expected": 58.5}, {"input": [4.0, 59.0], "expected": 59.0}, {"input": [4.0, 59.5], "expected": 59.5}, {"input": [4.0, 60.0], "expected": 60.0}, {"input": [4.0, 60.5], "expected": 60.5}, {"input": [4.0, 61.0], "expected": 61.0}, {"input": [4.0, 61.5], "expected": 61.5}, {"input": [4.0, 62.0], "expected": 62.0}, {"input": [4.0, 62.5], "expected": 62.5}, {"input": [4.0, 63.0], "expected": 63.0}, {"input": [4.0, 63.5], "expected": 63.5}, {"input": [4.0, 64.0], "expected": 64.0}, {"input": [4.0, 64.5], "expected": 64.5}, {"input": [4.0, 65.0], "expected": 65.0}, {"input": [4.0, 65.5], "expected": 65.5}, {"input": [4.0, 66.0], "expected": 66.0}, {"input": [4.0, 66.5], "expected": 66.5}, {"input": [4.0, 67.0], "expected": 67.0}, {"input": [4.0, 67.5], "expected": 67.5}, {"input": [4.0, 68.0], "expected": 68.0}, {"input": [4.0, 68.5], "expected": 68.5}, {"input": [4.0, 69.0], "expected": 69.0}, {"input": [4.0, 69.5], "expected": 69.5}, {"input": [4.0, 70.0], "expected": 70.0}, {"input": [4.0, 70.5], "expected": 70.5}, {"input": [4.0, 71.0], "expected": 71.0}, {"input": [4.0, 71.5], "expected": 71.5}, {"input": [4.0, 72.0], "expected": 72.0}, {"input": [4.0, 72.5], "expected": 72.5}, {"input": [4.0, 73.0], "expected": 73.0}, {"input": [4.0, 73.5], "expected": 73.5}, {"input": [4.0, 74.0], "expected": 74.0}, {"input": [4.0, 74.5], "expected": 74.5}, {"input": [4.0, 75.0], "expected": 75.0}, {"input": [4.0, 75.5], "expected": 75.5}, {"input": [4.0, 76.0], "expected": 76.0}, {"input": [4.0, 76.5], "expected": 76.5}, {"input": [4.0, 77.0], "expected": 77.0}, {"input": [4.0, 77.5], "expected": 77.5}, {"input": [4.0, 78.0], "expected": 78.0}, {"input": [4.0, 78.5], "expected": 78.5}, {"input": [4.0, 79.0], "expected": 79.0}, {"input": [4.0, 79.5], "expected": 79.5}, {"input": [4.0, 80.0], "expected": 80.0}, {"input": [4.0, 80.5], "expected": 80.5}, {"input": [4.0, 81.0], "expected": 81.0}, {"input": [4.0, 81.5], "expected": 81.5}, {"input": [4.0, 82.0], "expected": 82.0}, {"input": [4.0, 82.5], "expected": 82.5}, {"input": [4.0, 83.0], "expected": 83.0}, {"input": [4.0, 83.5], "expected": 83.5}, {"input": [4.0, 84.0], "expected": 84.0}, {"input": [4.0, 84.5], "expected": 84.5}, {"input": [4.0, 85.0], "expected": 85.0}, {"input": [4.0, 85.5], "expected": 85.5}, {"input": [4.0, 86.0], "expected": 86.0}, {"input": [4.0, 86.5], "expected": 86.5}, {"input": [4.0, 87.0], "expected": 87.0}, {"input": [4.0, 87.5], "expected": 87.5}, {"input": [4.0, 88.0], "expected": 88.0}, {"input": [4.0, 88.5], "expected": 88.5}, {"input": [4.0, 89.0], "expected": 89.0}, {"input": [4.0, 89.5], "expected": 89.5}, {"input": [4.0, 90.0], "expected": 90.0}, {"input": [4.0, 90.5], "expected": 90.5}, {"input": [4.0, 91.0], "expected": 91.0}, {"input": [4.0, 91.5], "expected": 91.5}, {"input": [4.0, 92.0], "expected": 92.0}, {"input": [4.0, 92.5], "expected": 92.5}, {"input": [4.0, 93.0], "expected": 93.0}, {"input": [4.0, 93.5], "expected": 93.5}, {"input": [4.0, 94.0], "expected": 94.0}, {"input": [4.0, 94.5], "expected": 94.5}, {"input": [4.0, 95.0], "expected": 95.0}, {"input": [4.0, 95.5], "expected": 95.5}, {"input": [4.0, 96.0], "expected": 96.0}, {"input": [4.0, 96.5], "expected": 96.5}, {"input": [4.0, 97.0], "expected": 97.0}, {"input": [4.0, 97.5], "expected": 97.5}, {"input": [4.0, 98.0], "expected": 98.0}, {"input": [4.0, 98.5], "expected": 98.5}, {"input": [4.0, 99.0], "expected": 99.0}, {"input": [4.0, 99.5], "expected": 99.5}, {"input": [4.5, -100.0], "expected": 4.5}, {"input": [4.5, -99.5], "expected": 4.5}, {"input": [4.5, -99.0], "expected": 4.5}, {"input": [4.5, -98.5], "expected": 4.5}, {"input": [4.5, -98.0], "expected": 4.5}, {"input": [4.5, -97.5], "expected": 4.5}, {"input": [4.5, -97.0], "expected": 4.5}, {"input": [4.5, -96.5], "expected": 4.5}, {"input": [4.5, -96.0], "expected": 4.5}, {"input": [4.5, -95.5], "expected": 4.5}, {"input": [4.5, -95.0], "expected": 4.5}, {"input": [4.5, -94.5], "expected": 4.5}, {"input": [4.5, -94.0], "expected": 4.5}, {"input": [4.5, -93.5], "expected": 4.5}, {"input": [4.5, -93.0], "expected": 4.5}, {"input": [4.5, -92.5], "expected": 4.5}, {"input": [4.5, -92.0], "expected": 4.5}, {"input": [4.5, -91.5], "expected": 4.5}, {"input": [4.5, -91.0], "expected": 4.5}, {"input": [4.5, -90.5], "expected": 4.5}, {"input": [4.5, -90.0], "expected": 4.5}, {"input": [4.5, -89.5], "expected": 4.5}, {"input": [4.5, -89.0], "expected": 4.5}, {"input": [4.5, -88.5], "expected": 4.5}, {"input": [4.5, -88.0], "expected": 4.5}, {"input": [4.5, -87.5], "expected": 4.5}, {"input": [4.5, -87.0], "expected": 4.5}, {"input": [4.5, -86.5], "expected": 4.5}, {"input": [4.5, -86.0], "expected": 4.5}, {"input": [4.5, -85.5], "expected": 4.5}, {"input": [4.5, -85.0], "expected": 4.5}, {"input": [4.5, -84.5], "expected": 4.5}, {"input": [4.5, -84.0], "expected": 4.5}, {"input": [4.5, -83.5], "expected": 4.5}, {"input": [4.5, -83.0], "expected": 4.5}, {"input": [4.5, -82.5], "expected": 4.5}, {"input": [4.5, -82.0], "expected": 4.5}, {"input": [4.5, -81.5], "expected": 4.5}, {"input": [4.5, -81.0], "expected": 4.5}, {"input": [4.5, -80.5], "expected": 4.5}, {"input": [4.5, -80.0], "expected": 4.5}, {"input": [4.5, -79.5], "expected": 4.5}, {"input": [4.5, -79.0], "expected": 4.5}, {"input": [4.5, -78.5], "expected": 4.5}, {"input": [4.5, -78.0], "expected": 4.5}, {"input": [4.5, -77.5], "expected": 4.5}, {"input": [4.5, -77.0], "expected": 4.5}, {"input": [4.5, -76.5], "expected": 4.5}, {"input": [4.5, -76.0], "expected": 4.5}, {"input": [4.5, -75.5], "expected": 4.5}, {"input": [4.5, -75.0], "expected": 4.5}, {"input": [4.5, -74.5], "expected": 4.5}, {"input": [4.5, -74.0], "expected": 4.5}, {"input": [4.5, -73.5], "expected": 4.5}, {"input": [4.5, -73.0], "expected": 4.5}, {"input": [4.5, -72.5], "expected": 4.5}, {"input": [4.5, -72.0], "expected": 4.5}, {"input": [4.5, -71.5], "expected": 4.5}, {"input": [4.5, -71.0], "expected": 4.5}, {"input": [4.5, -70.5], "expected": 4.5}, {"input": [4.5, -70.0], "expected": 4.5}, {"input": [4.5, -69.5], "expected": 4.5}, {"input": [4.5, -69.0], "expected": 4.5}, {"input": [4.5, -68.5], "expected": 4.5}, {"input": [4.5, -68.0], "expected": 4.5}, {"input": [4.5, -67.5], "expected": 4.5}, {"input": [4.5, -67.0], "expected": 4.5}, {"input": [4.5, -66.5], "expected": 4.5}, {"input": [4.5, -66.0], "expected": 4.5}, {"input": [4.5, -65.5], "expected": 4.5}, {"input": [4.5, -65.0], "expected": 4.5}, {"input": [4.5, -64.5], "expected": 4.5}, {"input": [4.5, -64.0], "expected": 4.5}, {"input": [4.5, -63.5], "expected": 4.5}, {"input": [4.5, -63.0], "expected": 4.5}, {"input": [4.5, -62.5], "expected": 4.5}, {"input": [4.5, -62.0], "expected": 4.5}, {"input": [4.5, -61.5], "expected": 4.5}, {"input": [4.5, -61.0], "expected": 4.5}, {"input": [4.5, -60.5], "expected": 4.5}, {"input": [4.5, -60.0], "expected": 4.5}, {"input": [4.5, -59.5], "expected": 4.5}, {"input": [4.5, -59.0], "expected": 4.5}, {"input": [4.5, -58.5], "expected": 4.5}, {"input": [4.5, -58.0], "expected": 4.5}, {"input": [4.5, -57.5], "expected": 4.5}, {"input": [4.5, -57.0], "expected": 4.5}, {"input": [4.5, -56.5], "expected": 4.5}, {"input": [4.5, -56.0], "expected": 4.5}, {"input": [4.5, -55.5], "expected": 4.5}, {"input": [4.5, -55.0], "expected": 4.5}, {"input": [4.5, -54.5], "expected": 4.5}, {"input": [4.5, -54.0], "expected": 4.5}, {"input": [4.5, -53.5], "expected": 4.5}, {"input": [4.5, -53.0], "expected": 4.5}, {"input": [4.5, -52.5], "expected": 4.5}, {"input": [4.5, -52.0], "expected": 4.5}, {"input": [4.5, -51.5], "expected": 4.5}, {"input": [4.5, -51.0], "expected": 4.5}, {"input": [4.5, -50.5], "expected": 4.5}, {"input": [4.5, -50.0], "expected": 4.5}, {"input": [4.5, -49.5], "expected": 4.5}, {"input": [4.5, -49.0], "expected": 4.5}, {"input": [4.5, -48.5], "expected": 4.5}, {"input": [4.5, -48.0], "expected": 4.5}, {"input": [4.5, -47.5], "expected": 4.5}, {"input": [4.5, -47.0], "expected": 4.5}, {"input": [4.5, -46.5], "expected": 4.5}, {"input": [4.5, -46.0], "expected": 4.5}, {"input": [4.5, -45.5], "expected": 4.5}, {"input": [4.5, -45.0], "expected": 4.5}, {"input": [4.5, -44.5], "expected": 4.5}, {"input": [4.5, -44.0], "expected": 4.5}, {"input": [4.5, -43.5], "expected": 4.5}, {"input": [4.5, -43.0], "expected": 4.5}, {"input": [4.5, -42.5], "expected": 4.5}, {"input": [4.5, -42.0], "expected": 4.5}, {"input": [4.5, -41.5], "expected": 4.5}, {"input": [4.5, -41.0], "expected": 4.5}, {"input": [4.5, -40.5], "expected": 4.5}, {"input": [4.5, -40.0], "expected": 4.5}, {"input": [4.5, -39.5], "expected": 4.5}, {"input": [4.5, -39.0], "expected": 4.5}, {"input": [4.5, -38.5], "expected": 4.5}, {"input": [4.5, -38.0], "expected": 4.5}, {"input": [4.5, -37.5], "expected": 4.5}, {"input": [4.5, -37.0], "expected": 4.5}, {"input": [4.5, -36.5], "expected": 4.5}, {"input": [4.5, -36.0], "expected": 4.5}, {"input": [4.5, -35.5], "expected": 4.5}, {"input": [4.5, -35.0], "expected": 4.5}, {"input": [4.5, -34.5], "expected": 4.5}, {"input": [4.5, -34.0], "expected": 4.5}, {"input": [4.5, -33.5], "expected": 4.5}, {"input": [4.5, -33.0], "expected": 4.5}, {"input": [4.5, -32.5], "expected": 4.5}, {"input": [4.5, -32.0], "expected": 4.5}, {"input": [4.5, -31.5], "expected": 4.5}, {"input": [4.5, -31.0], "expected": 4.5}, {"input": [4.5, -30.5], "expected": 4.500000000000001}, {"input": [4.5, -30.0], "expected": 4.500000000000001}, {"input": [4.5, -29.5], "expected": 4.500000000000002}, {"input": [4.5, -29.0], "expected": 4.500000000000003}, {"input": [4.5, -28.5], "expected": 4.500000000000004}, {"input": [4.5, -28.0], "expected": 4.500000000000008}, {"input": [4.5, -27.5], "expected": 4.500000000000012}, {"input": [4.5, -27.0], "expected": 4.500000000000021}, {"input": [4.5, -26.5], "expected": 4.500000000000035}, {"input": [4.5, -26.0], "expected": 4.500000000000057}, {"input": [4.5, -25.5], "expected": 4.500000000000093}, {"input": [4.5, -25.0], "expected": 4.5000000000001545}, {"input": [4.5, -24.5], "expected": 4.500000000000254}, {"input": [4.5, -24.0], "expected": 4.500000000000419}, {"input": [4.5, -23.5], "expected": 4.500000000000691}, {"input": [4.5, -23.0], "expected": 4.50000000000114}, {"input": [4.5, -22.5], "expected": 4.500000000001879}, {"input": [4.5, -22.0], "expected": 4.500000000003099}, {"input": [4.5, -21.5], "expected": 4.500000000005109}, {"input": [4.5, -21.0], "expected": 4.5000000000084235}, {"input": [4.5, -20.5], "expected": 4.500000000013888}, {"input": [4.5, -20.0], "expected": 4.500000000022897}, {"input": [4.5, -19.5], "expected": 4.500000000037751}, {"input": [4.5, -19.0], "expected": 4.500000000062242}, {"input": [4.5, -18.5], "expected": 4.500000000102618}, {"input": [4.5, -18.0], "expected": 4.50000000016919}, {"input": [4.5, -17.5], "expected": 4.500000000278947}, {"input": [4.5, -17.0], "expected": 4.500000000459906}, {"input": [4.5, -16.5], "expected": 4.500000000758256}, {"input": [4.5, -16.0], "expected": 4.500000001250153}, {"input": [4.5, -15.5], "expected": 4.500000002061154}, {"input": [4.5, -15.0], "expected": 4.5000000033982674}, {"input": [4.5, -14.5], "expected": 4.5000000056027964}, {"input": [4.5, -14.0], "expected": 4.50000000923745}, {"input": [4.5, -13.5], "expected": 4.50000001522998}, {"input": [4.5, -13.0], "expected": 4.500000025109991}, {"input": [4.5, -12.5], "expected": 4.500000041399376}, {"input": [4.5, -12.0], "expected": 4.500000068256031}, {"input": [4.5, -11.5], "expected": 4.500000112535169}, {"input": [4.5, -11.0], "expected": 4.500000185539119}, {"input": [4.5, -10.5], "expected": 4.500000305902273}, {"input": [4.5, -10.0], "expected": 4.500000504347535}, {"input": [4.5, -9.5], "expected": 4.500000831528373}, {"input": [4.5, -9.0], "expected": 4.500001370958147}, {"input": [4.5, -8.5], "expected": 4.500002260326853}, {"input": [4.5, -8.0], "expected": 4.500003726646228}, {"input": [4.5, -7.5], "expected": 4.5000061441934776}, {"input": [4.5, -7.0], "expected": 4.5000101300422894}, {"input": [4.5, -6.5], "expected": 4.500016701561319}, {"input": [4.5, -6.0], "expected": 4.500027536070228}, {"input": [4.5, -5.5], "expected": 4.500045398899217}, {"input": [4.5, -5.0], "expected": 4.500074849028629}, {"input": [4.5, -4.5], "expected": 4.500123402189724}, {"input": [4.5, -4.0], "expected": 4.5002034476721295}, {"input": [4.5, -3.5], "expected": 4.500335406372896}, {"input": [4.5, -3.0], "expected": 4.500552931475361}, {"input": [4.5, -2.5], "expected": 4.500911466453775}, {"input": [4.5, -2.0], "expected": 4.501502310159754}, {"input": [4.5, -1.5], "expected": 4.50247568513773}, {"input": [4.5, -1.0], "expected": 4.504078443270571}, {"input": [4.5, -0.5], "expected": 4.506715348489118}, {"input": [4.5, 0.0], "expected": 4.511047744848594}, {"input": [4.5, 0.5], "expected": 4.5181499279178094}, {"input": [4.5, 1.0], "expected": 4.529750418272621}, {"input": [4.5, 1.5], "expected": 4.548587351573742}, {"input": [4.5, 2.0], "expected": 4.57888973429255}, {"input": [4.5, 2.5], "expected": 4.626928011042972}, {"input": [4.5, 3.0], "expected": 4.701413277982752}, {"input": [4.5, 3.5], "expected": 4.813261687518223}, {"input": [4.5, 4.0], "expected": 4.9740769841801065}, {"input": [4.5, 4.5], "expected": 5.193147180559945}, {"input": [4.5, 5.0], "expected": 5.4740769841801065}, {"input": [4.5, 5.5], "expected": 5.813261687518223}, {"input": [4.5, 6.0], "expected": 6.201413277982752}, {"input": [4.5, 6.5], "expected": 6.626928011042972}, {"input": [4.5, 7.0], "expected": 7.07888973429255}, {"input": [4.5, 7.5], "expected": 7.548587351573742}, {"input": [4.5, 8.0], "expected": 8.02975041827262}, {"input": [4.5, 8.5], "expected": 8.51814992791781}, {"input": [4.5, 9.0], "expected": 9.011047744848593}, {"input": [4.5, 9.5], "expected": 9.506715348489118}, {"input": [4.5, 10.0], "expected": 10.00407844327057}, {"input": [4.5, 10.5], "expected": 10.50247568513773}, {"input": [4.5, 11.0], "expected": 11.001502310159754}, {"input": [4.5, 11.5], "expected": 11.500911466453774}, {"input": [4.5, 12.0], "expected": 12.000552931475362}, {"input": [4.5, 12.5], "expected": 12.500335406372896}, {"input": [4.5, 13.0], "expected": 13.00020344767213}, {"input": [4.5, 13.5], "expected": 13.500123402189724}, {"input": [4.5, 14.0], "expected": 14.000074849028628}, {"input": [4.5, 14.5], "expected": 14.500045398899218}, {"input": [4.5, 15.0], "expected": 15.00002753607023}, {"input": [4.5, 15.5], "expected": 15.500016701561318}, {"input": [4.5, 16.0], "expected": 16.00001013004229}, {"input": [4.5, 16.5], "expected": 16.500006144193478}, {"input": [4.5, 17.0], "expected": 17.000003726646227}, {"input": [4.5, 17.5], "expected": 17.500002260326852}, {"input": [4.5, 18.0], "expected": 18.000001370958145}, {"input": [4.5, 18.5], "expected": 18.500000831528375}, {"input": [4.5, 19.0], "expected": 19.000000504347536}, {"input": [4.5, 19.5], "expected": 19.500000305902272}, {"input": [4.5, 20.0], "expected": 20.00000018553912}, {"input": [4.5, 20.5], "expected": 20.50000011253517}, {"input": [4.5, 21.0], "expected": 21.000000068256032}, {"input": [4.5, 21.5], "expected": 21.500000041399375}, {"input": [4.5, 22.0], "expected": 22.00000002510999}, {"input": [4.5, 22.5], "expected": 22.50000001522998}, {"input": [4.5, 23.0], "expected": 23.00000000923745}, {"input": [4.5, 23.5], "expected": 23.500000005602796}, {"input": [4.5, 24.0], "expected": 24.000000003398267}, {"input": [4.5, 24.5], "expected": 24.500000002061153}, {"input": [4.5, 25.0], "expected": 25.000000001250154}, {"input": [4.5, 25.5], "expected": 25.500000000758256}, {"input": [4.5, 26.0], "expected": 26.000000000459906}, {"input": [4.5, 26.5], "expected": 26.50000000027895}, {"input": [4.5, 27.0], "expected": 27.00000000016919}, {"input": [4.5, 27.5], "expected": 27.50000000010262}, {"input": [4.5, 28.0], "expected": 28.00000000006224}, {"input": [4.5, 28.5], "expected": 28.50000000003775}, {"input": [4.5, 29.0], "expected": 29.000000000022897}, {"input": [4.5, 29.5], "expected": 29.500000000013888}, {"input": [4.5, 30.0], "expected": 30.000000000008423}, {"input": [4.5, 30.5], "expected": 30.50000000000511}, {"input": [4.5, 31.0], "expected": 31.000000000003098}, {"input": [4.5, 31.5], "expected": 31.50000000000188}, {"input": [4.5, 32.0], "expected": 32.00000000000114}, {"input": [4.5, 32.5], "expected": 32.50000000000069}, {"input": [4.5, 33.0], "expected": 33.00000000000042}, {"input": [4.5, 33.5], "expected": 33.500000000000256}, {"input": [4.5, 34.0], "expected": 34.000000000000156}, {"input": [4.5, 34.5], "expected": 34.50000000000009}, {"input": [4.5, 35.0], "expected": 35.00000000000006}, {"input": [4.5, 35.5], "expected": 35.500000000000036}, {"input": [4.5, 36.0], "expected": 36.00000000000002}, {"input": [4.5, 36.5], "expected": 36.500000000000014}, {"input": [4.5, 37.0], "expected": 37.00000000000001}, {"input": [4.5, 37.5], "expected": 37.50000000000001}, {"input": [4.5, 38.0], "expected": 38.0}, {"input": [4.5, 38.5], "expected": 38.5}, {"input": [4.5, 39.0], "expected": 39.0}, {"input": [4.5, 39.5], "expected": 39.5}, {"input": [4.5, 40.0], "expected": 40.0}, {"input": [4.5, 40.5], "expected": 40.5}, {"input": [4.5, 41.0], "expected": 41.0}, {"input": [4.5, 41.5], "expected": 41.5}, {"input": [4.5, 42.0], "expected": 42.0}, {"input": [4.5, 42.5], "expected": 42.5}, {"input": [4.5, 43.0], "expected": 43.0}, {"input": [4.5, 43.5], "expected": 43.5}, {"input": [4.5, 44.0], "expected": 44.0}, {"input": [4.5, 44.5], "expected": 44.5}, {"input": [4.5, 45.0], "expected": 45.0}, {"input": [4.5, 45.5], "expected": 45.5}, {"input": [4.5, 46.0], "expected": 46.0}, {"input": [4.5, 46.5], "expected": 46.5}, {"input": [4.5, 47.0], "expected": 47.0}, {"input": [4.5, 47.5], "expected": 47.5}, {"input": [4.5, 48.0], "expected": 48.0}, {"input": [4.5, 48.5], "expected": 48.5}, {"input": [4.5, 49.0], "expected": 49.0}, {"input": [4.5, 49.5], "expected": 49.5}, {"input": [4.5, 50.0], "expected": 50.0}, {"input": [4.5, 50.5], "expected": 50.5}, {"input": [4.5, 51.0], "expected": 51.0}, {"input": [4.5, 51.5], "expected": 51.5}, {"input": [4.5, 52.0], "expected": 52.0}, {"input": [4.5, 52.5], "expected": 52.5}, {"input": [4.5, 53.0], "expected": 53.0}, {"input": [4.5, 53.5], "expected": 53.5}, {"input": [4.5, 54.0], "expected": 54.0}, {"input": [4.5, 54.5], "expected": 54.5}, {"input": [4.5, 55.0], "expected": 55.0}, {"input": [4.5, 55.5], "expected": 55.5}, {"input": [4.5, 56.0], "expected": 56.0}, {"input": [4.5, 56.5], "expected": 56.5}, {"input": [4.5, 57.0], "expected": 57.0}, {"input": [4.5, 57.5], "expected": 57.5}, {"input": [4.5, 58.0], "expected": 58.0}, {"input": [4.5, 58.5], "expected": 58.5}, {"input": [4.5, 59.0], "expected": 59.0}, {"input": [4.5, 59.5], "expected": 59.5}, {"input": [4.5, 60.0], "expected": 60.0}, {"input": [4.5, 60.5], "expected": 60.5}, {"input": [4.5, 61.0], "expected": 61.0}, {"input": [4.5, 61.5], "expected": 61.5}, {"input": [4.5, 62.0], "expected": 62.0}, {"input": [4.5, 62.5], "expected": 62.5}, {"input": [4.5, 63.0], "expected": 63.0}, {"input": [4.5, 63.5], "expected": 63.5}, {"input": [4.5, 64.0], "expected": 64.0}, {"input": [4.5, 64.5], "expected": 64.5}, {"input": [4.5, 65.0], "expected": 65.0}, {"input": [4.5, 65.5], "expected": 65.5}, {"input": [4.5, 66.0], "expected": 66.0}, {"input": [4.5, 66.5], "expected": 66.5}, {"input": [4.5, 67.0], "expected": 67.0}, {"input": [4.5, 67.5], "expected": 67.5}, {"input": [4.5, 68.0], "expected": 68.0}, {"input": [4.5, 68.5], "expected": 68.5}, {"input": [4.5, 69.0], "expected": 69.0}, {"input": [4.5, 69.5], "expected": 69.5}, {"input": [4.5, 70.0], "expected": 70.0}, {"input": [4.5, 70.5], "expected": 70.5}, {"input": [4.5, 71.0], "expected": 71.0}, {"input": [4.5, 71.5], "expected": 71.5}, {"input": [4.5, 72.0], "expected": 72.0}, {"input": [4.5, 72.5], "expected": 72.5}, {"input": [4.5, 73.0], "expected": 73.0}, {"input": [4.5, 73.5], "expected": 73.5}, {"input": [4.5, 74.0], "expected": 74.0}, {"input": [4.5, 74.5], "expected": 74.5}, {"input": [4.5, 75.0], "expected": 75.0}, {"input": [4.5, 75.5], "expected": 75.5}, {"input": [4.5, 76.0], "expected": 76.0}, {"input": [4.5, 76.5], "expected": 76.5}, {"input": [4.5, 77.0], "expected": 77.0}, {"input": [4.5, 77.5], "expected": 77.5}, {"input": [4.5, 78.0], "expected": 78.0}, {"input": [4.5, 78.5], "expected": 78.5}, {"input": [4.5, 79.0], "expected": 79.0}, {"input": [4.5, 79.5], "expected": 79.5}, {"input": [4.5, 80.0], "expected": 80.0}, {"input": [4.5, 80.5], "expected": 80.5}, {"input": [4.5, 81.0], "expected": 81.0}, {"input": [4.5, 81.5], "expected": 81.5}, {"input": [4.5, 82.0], "expected": 82.0}, {"input": [4.5, 82.5], "expected": 82.5}, {"input": [4.5, 83.0], "expected": 83.0}, {"input": [4.5, 83.5], "expected": 83.5}, {"input": [4.5, 84.0], "expected": 84.0}, {"input": [4.5, 84.5], "expected": 84.5}, {"input": [4.5, 85.0], "expected": 85.0}, {"input": [4.5, 85.5], "expected": 85.5}, {"input": [4.5, 86.0], "expected": 86.0}, {"input": [4.5, 86.5], "expected": 86.5}, {"input": [4.5, 87.0], "expected": 87.0}, {"input": [4.5, 87.5], "expected": 87.5}, {"input": [4.5, 88.0], "expected": 88.0}, {"input": [4.5, 88.5], "expected": 88.5}, {"input": [4.5, 89.0], "expected": 89.0}, {"input": [4.5, 89.5], "expected": 89.5}, {"input": [4.5, 90.0], "expected": 90.0}, {"input": [4.5, 90.5], "expected": 90.5}, {"input": [4.5, 91.0], "expected": 91.0}, {"input": [4.5, 91.5], "expected": 91.5}, {"input": [4.5, 92.0], "expected": 92.0}, {"input": [4.5, 92.5], "expected": 92.5}, {"input": [4.5, 93.0], "expected": 93.0}, {"input": [4.5, 93.5], "expected": 93.5}, {"input": [4.5, 94.0], "expected": 94.0}, {"input": [4.5, 94.5], "expected": 94.5}, {"input": [4.5, 95.0], "expected": 95.0}, {"input": [4.5, 95.5], "expected": 95.5}, {"input": [4.5, 96.0], "expected": 96.0}, {"input": [4.5, 96.5], "expected": 96.5}, {"input": [4.5, 97.0], "expected": 97.0}, {"input": [4.5, 97.5], "expected": 97.5}, {"input": [4.5, 98.0], "expected": 98.0}, {"input": [4.5, 98.5], "expected": 98.5}, {"input": [4.5, 99.0], "expected": 99.0}, {"input": [4.5, 99.5], "expected": 99.5}, {"input": [5.0, -100.0], "expected": 5.0}, {"input": [5.0, -99.5], "expected": 5.0}, {"input": [5.0, -99.0], "expected": 5.0}, {"input": [5.0, -98.5], "expected": 5.0}, {"input": [5.0, -98.0], "expected": 5.0}, {"input": [5.0, -97.5], "expected": 5.0}, {"input": [5.0, -97.0], "expected": 5.0}, {"input": [5.0, -96.5], "expected": 5.0}, {"input": [5.0, -96.0], "expected": 5.0}, {"input": [5.0, -95.5], "expected": 5.0}, {"input": [5.0, -95.0], "expected": 5.0}, {"input": [5.0, -94.5], "expected": 5.0}, {"input": [5.0, -94.0], "expected": 5.0}, {"input": [5.0, -93.5], "expected": 5.0}, {"input": [5.0, -93.0], "expected": 5.0}, {"input": [5.0, -92.5], "expected": 5.0}, {"input": [5.0, -92.0], "expected": 5.0}, {"input": [5.0, -91.5], "expected": 5.0}, {"input": [5.0, -91.0], "expected": 5.0}, {"input": [5.0, -90.5], "expected": 5.0}, {"input": [5.0, -90.0], "expected": 5.0}, {"input": [5.0, -89.5], "expected": 5.0}, {"input": [5.0, -89.0], "expected": 5.0}, {"input": [5.0, -88.5], "expected": 5.0}, {"input": [5.0, -88.0], "expected": 5.0}, {"input": [5.0, -87.5], "expected": 5.0}, {"input": [5.0, -87.0], "expected": 5.0}, {"input": [5.0, -86.5], "expected": 5.0}, {"input": [5.0, -86.0], "expected": 5.0}, {"input": [5.0, -85.5], "expected": 5.0}, {"input": [5.0, -85.0], "expected": 5.0}, {"input": [5.0, -84.5], "expected": 5.0}, {"input": [5.0, -84.0], "expected": 5.0}, {"input": [5.0, -83.5], "expected": 5.0}, {"input": [5.0, -83.0], "expected": 5.0}, {"input": [5.0, -82.5], "expected": 5.0}, {"input": [5.0, -82.0], "expected": 5.0}, {"input": [5.0, -81.5], "expected": 5.0}, {"input": [5.0, -81.0], "expected": 5.0}, {"input": [5.0, -80.5], "expected": 5.0}, {"input": [5.0, -80.0], "expected": 5.0}, {"input": [5.0, -79.5], "expected": 5.0}, {"input": [5.0, -79.0], "expected": 5.0}, {"input": [5.0, -78.5], "expected": 5.0}, {"input": [5.0, -78.0], "expected": 5.0}, {"input": [5.0, -77.5], "expected": 5.0}, {"input": [5.0, -77.0], "expected": 5.0}, {"input": [5.0, -76.5], "expected": 5.0}, {"input": [5.0, -76.0], "expected": 5.0}, {"input": [5.0, -75.5], "expected": 5.0}, {"input": [5.0, -75.0], "expected": 5.0}, {"input": [5.0, -74.5], "expected": 5.0}, {"input": [5.0, -74.0], "expected": 5.0}, {"input": [5.0, -73.5], "expected": 5.0}, {"input": [5.0, -73.0], "expected": 5.0}, {"input": [5.0, -72.5], "expected": 5.0}, {"input": [5.0, -72.0], "expected": 5.0}, {"input": [5.0, -71.5], "expected": 5.0}, {"input": [5.0, -71.0], "expected": 5.0}, {"input": [5.0, -70.5], "expected": 5.0}, {"input": [5.0, -70.0], "expected": 5.0}, {"input": [5.0, -69.5], "expected": 5.0}, {"input": [5.0, -69.0], "expected": 5.0}, {"input": [5.0, -68.5], "expected": 5.0}, {"input": [5.0, -68.0], "expected": 5.0}, {"input": [5.0, -67.5], "expected": 5.0}, {"input": [5.0, -67.0], "expected": 5.0}, {"input": [5.0, -66.5], "expected": 5.0}, {"input": [5.0, -66.0], "expected": 5.0}, {"input": [5.0, -65.5], "expected": 5.0}, {"input": [5.0, -65.0], "expected": 5.0}, {"input": [5.0, -64.5], "expected": 5.0}, {"input": [5.0, -64.0], "expected": 5.0}, {"input": [5.0, -63.5], "expected": 5.0}, {"input": [5.0, -63.0], "expected": 5.0}, {"input": [5.0, -62.5], "expected": 5.0}, {"input": [5.0, -62.0], "expected": 5.0}, {"input": [5.0, -61.5], "expected": 5.0}, {"input": [5.0, -61.0], "expected": 5.0}, {"input": [5.0, -60.5], "expected": 5.0}, {"input": [5.0, -60.0], "expected": 5.0}, {"input": [5.0, -59.5], "expected": 5.0}, {"input": [5.0, -59.0], "expected": 5.0}, {"input": [5.0, -58.5], "expected": 5.0}, {"input": [5.0, -58.0], "expected": 5.0}, {"input": [5.0, -57.5], "expected": 5.0}, {"input": [5.0, -57.0], "expected": 5.0}, {"input": [5.0, -56.5], "expected": 5.0}, {"input": [5.0, -56.0], "expected": 5.0}, {"input": [5.0, -55.5], "expected": 5.0}, {"input": [5.0, -55.0], "expected": 5.0}, {"input": [5.0, -54.5], "expected": 5.0}, {"input": [5.0, -54.0], "expected": 5.0}, {"input": [5.0, -53.5], "expected": 5.0}, {"input": [5.0, -53.0], "expected": 5.0}, {"input": [5.0, -52.5], "expected": 5.0}, {"input": [5.0, -52.0], "expected": 5.0}, {"input": [5.0, -51.5], "expected": 5.0}, {"input": [5.0, -51.0], "expected": 5.0}, {"input": [5.0, -50.5], "expected": 5.0}, {"input": [5.0, -50.0], "expected": 5.0}, {"input": [5.0, -49.5], "expected": 5.0}, {"input": [5.0, -49.0], "expected": 5.0}, {"input": [5.0, -48.5], "expected": 5.0}, {"input": [5.0, -48.0], "expected": 5.0}, {"input": [5.0, -47.5], "expected": 5.0}, {"input": [5.0, -47.0], "expected": 5.0}, {"input": [5.0, -46.5], "expected": 5.0}, {"input": [5.0, -46.0], "expected": 5.0}, {"input": [5.0, -45.5], "expected": 5.0}, {"input": [5.0, -45.0], "expected": 5.0}, {"input": [5.0, -44.5], "expected": 5.0}, {"input": [5.0, -44.0], "expected": 5.0}, {"input": [5.0, -43.5], "expected": 5.0}, {"input": [5.0, -43.0], "expected": 5.0}, {"input": [5.0, -42.5], "expected": 5.0}, {"input": [5.0, -42.0], "expected": 5.0}, {"input": [5.0, -41.5], "expected": 5.0}, {"input": [5.0, -41.0], "expected": 5.0}, {"input": [5.0, -40.5], "expected": 5.0}, {"input": [5.0, -40.0], "expected": 5.0}, {"input": [5.0, -39.5], "expected": 5.0}, {"input": [5.0, -39.0], "expected": 5.0}, {"input": [5.0, -38.5], "expected": 5.0}, {"input": [5.0, -38.0], "expected": 5.0}, {"input": [5.0, -37.5], "expected": 5.0}, {"input": [5.0, -37.0], "expected": 5.0}, {"input": [5.0, -36.5], "expected": 5.0}, {"input": [5.0, -36.0], "expected": 5.0}, {"input": [5.0, -35.5], "expected": 5.0}, {"input": [5.0, -35.0], "expected": 5.0}, {"input": [5.0, -34.5], "expected": 5.0}, {"input": [5.0, -34.0], "expected": 5.0}, {"input": [5.0, -33.5], "expected": 5.0}, {"input": [5.0, -33.0], "expected": 5.0}, {"input": [5.0, -32.5], "expected": 5.0}, {"input": [5.0, -32.0], "expected": 5.0}, {"input": [5.0, -31.5], "expected": 5.0}, {"input": [5.0, -31.0], "expected": 5.0}, {"input": [5.0, -30.5], "expected": 5.0}, {"input": [5.0, -30.0], "expected": 5.000000000000001}, {"input": [5.0, -29.5], "expected": 5.000000000000001}, {"input": [5.0, -29.0], "expected": 5.000000000000002}, {"input": [5.0, -28.5], "expected": 5.000000000000003}, {"input": [5.0, -28.0], "expected": 5.000000000000004}, {"input": [5.0, -27.5], "expected": 5.000000000000008}, {"input": [5.0, -27.0], "expected": 5.000000000000012}, {"input": [5.0, -26.5], "expected": 5.000000000000021}, {"input": [5.0, -26.0], "expected": 5.000000000000035}, {"input": [5.0, -25.5], "expected": 5.000000000000057}, {"input": [5.0, -25.0], "expected": 5.000000000000093}, {"input": [5.0, -24.5], "expected": 5.0000000000001545}, {"input": [5.0, -24.0], "expected": 5.000000000000254}, {"input": [5.0, -23.5], "expected": 5.000000000000419}, {"input": [5.0, -23.0], "expected": 5.000000000000691}, {"input": [5.0, -22.5], "expected": 5.00000000000114}, {"input": [5.0, -22.0], "expected": 5.000000000001879}, {"input": [5.0, -21.5], "expected": 5.000000000003099}, {"input": [5.0, -21.0], "expected": 5.000000000005109}, {"input": [5.0, -20.5], "expected": 5.0000000000084235}, {"input": [5.0, -20.0], "expected": 5.000000000013888}, {"input": [5.0, -19.5], "expected": 5.000000000022897}, {"input": [5.0, -19.0], "expected": 5.000000000037751}, {"input": [5.0, -18.5], "expected": 5.000000000062242}, {"input": [5.0, -18.0], "expected": 5.000000000102618}, {"input": [5.0, -17.5], "expected": 5.00000000016919}, {"input": [5.0, -17.0], "expected": 5.000000000278947}, {"input": [5.0, -16.5], "expected": 5.000000000459906}, {"input": [5.0, -16.0], "expected": 5.000000000758256}, {"input": [5.0, -15.5], "expected": 5.000000001250153}, {"input": [5.0, -15.0], "expected": 5.000000002061154}, {"input": [5.0, -14.5], "expected": 5.0000000033982674}, {"input": [5.0, -14.0], "expected": 5.0000000056027964}, {"input": [5.0, -13.5], "expected": 5.00000000923745}, {"input": [5.0, -13.0], "expected": 5.00000001522998}, {"input": [5.0, -12.5], "expected": 5.000000025109991}, {"input": [5.0, -12.0], "expected": 5.000000041399376}, {"input": [5.0, -11.5], "expected": 5.000000068256031}, {"input": [5.0, -11.0], "expected": 5.000000112535169}, {"input": [5.0, -10.5], "expected": 5.000000185539119}, {"input": [5.0, -10.0], "expected": 5.000000305902273}, {"input": [5.0, -9.5], "expected": 5.000000504347535}, {"input": [5.0, -9.0], "expected": 5.000000831528373}, {"input": [5.0, -8.5], "expected": 5.000001370958147}, {"input": [5.0, -8.0], "expected": 5.000002260326853}, {"input": [5.0, -7.5], "expected": 5.000003726646228}, {"input": [5.0, -7.0], "expected": 5.0000061441934776}, {"input": [5.0, -6.5], "expected": 5.0000101300422894}, {"input": [5.0, -6.0], "expected": 5.000016701561319}, {"input": [5.0, -5.5], "expected": 5.000027536070228}, {"input": [5.0, -5.0], "expected": 5.000045398899217}, {"input": [5.0, -4.5], "expected": 5.000074849028629}, {"input": [5.0, -4.0], "expected": 5.000123402189724}, {"input": [5.0, -3.5], "expected": 5.0002034476721295}, {"input": [5.0, -3.0], "expected": 5.000335406372896}, {"input": [5.0, -2.5], "expected": 5.000552931475361}, {"input": [5.0, -2.0], "expected": 5.000911466453775}, {"input": [5.0, -1.5], "expected": 5.001502310159754}, {"input": [5.0, -1.0], "expected": 5.00247568513773}, {"input": [5.0, -0.5], "expected": 5.004078443270571}, {"input": [5.0, 0.0], "expected": 5.006715348489118}, {"input": [5.0, 0.5], "expected": 5.011047744848594}, {"input": [5.0, 1.0], "expected": 5.0181499279178094}, {"input": [5.0, 1.5], "expected": 5.029750418272621}, {"input": [5.0, 2.0], "expected": 5.048587351573742}, {"input": [5.0, 2.5], "expected": 5.07888973429255}, {"input": [5.0, 3.0], "expected": 5.126928011042972}, {"input": [5.0, 3.5], "expected": 5.201413277982752}, {"input": [5.0, 4.0], "expected": 5.313261687518223}, {"input": [5.0, 4.5], "expected": 5.4740769841801065}, {"input": [5.0, 5.0], "expected": 5.693147180559945}, {"input": [5.0, 5.5], "expected": 5.9740769841801065}, {"input": [5.0, 6.0], "expected": 6.313261687518223}, {"input": [5.0, 6.5], "expected": 6.701413277982752}, {"input": [5.0, 7.0], "expected": 7.126928011042972}, {"input": [5.0, 7.5], "expected": 7.57888973429255}, {"input": [5.0, 8.0], "expected": 8.048587351573742}, {"input": [5.0, 8.5], "expected": 8.52975041827262}, {"input": [5.0, 9.0], "expected": 9.01814992791781}, {"input": [5.0, 9.5], "expected": 9.511047744848593}, {"input": [5.0, 10.0], "expected": 10.006715348489118}, {"input": [5.0, 10.5], "expected": 10.50407844327057}, {"input": [5.0, 11.0], "expected": 11.00247568513773}, {"input": [5.0, 11.5], "expected": 11.501502310159754}, {"input": [5.0, 12.0], "expected": 12.000911466453774}, {"input": [5.0, 12.5], "expected": 12.500552931475362}, {"input": [5.0, 13.0], "expected": 13.000335406372896}, {"input": [5.0, 13.5], "expected": 13.50020344767213}, {"input": [5.0, 14.0], "expected": 14.000123402189724}, {"input": [5.0, 14.5], "expected": 14.500074849028628}, {"input": [5.0, 15.0], "expected": 15.000045398899218}, {"input": [5.0, 15.5], "expected": 15.50002753607023}, {"input": [5.0, 16.0], "expected": 16.000016701561318}, {"input": [5.0, 16.5], "expected": 16.50001013004229}, {"input": [5.0, 17.0], "expected": 17.000006144193478}, {"input": [5.0, 17.5], "expected": 17.500003726646227}, {"input": [5.0, 18.0], "expected": 18.000002260326852}, {"input": [5.0, 18.5], "expected": 18.500001370958145}, {"input": [5.0, 19.0], "expected": 19.000000831528375}, {"input": [5.0, 19.5], "expected": 19.500000504347536}, {"input": [5.0, 20.0], "expected": 20.000000305902272}, {"input": [5.0, 20.5], "expected": 20.50000018553912}, {"input": [5.0, 21.0], "expected": 21.00000011253517}, {"input": [5.0, 21.5], "expected": 21.500000068256032}, {"input": [5.0, 22.0], "expected": 22.000000041399375}, {"input": [5.0, 22.5], "expected": 22.50000002510999}, {"input": [5.0, 23.0], "expected": 23.00000001522998}, {"input": [5.0, 23.5], "expected": 23.50000000923745}, {"input": [5.0, 24.0], "expected": 24.000000005602796}, {"input": [5.0, 24.5], "expected": 24.500000003398267}, {"input": [5.0, 25.0], "expected": 25.000000002061153}, {"input": [5.0, 25.5], "expected": 25.500000001250154}, {"input": [5.0, 26.0], "expected": 26.000000000758256}, {"input": [5.0, 26.5], "expected": 26.500000000459906}, {"input": [5.0, 27.0], "expected": 27.00000000027895}, {"input": [5.0, 27.5], "expected": 27.50000000016919}, {"input": [5.0, 28.0], "expected": 28.00000000010262}, {"input": [5.0, 28.5], "expected": 28.50000000006224}, {"input": [5.0, 29.0], "expected": 29.00000000003775}, {"input": [5.0, 29.5], "expected": 29.500000000022897}, {"input": [5.0, 30.0], "expected": 30.000000000013888}, {"input": [5.0, 30.5], "expected": 30.500000000008423}, {"input": [5.0, 31.0], "expected": 31.00000000000511}, {"input": [5.0, 31.5], "expected": 31.500000000003098}, {"input": [5.0, 32.0], "expected": 32.00000000000188}, {"input": [5.0, 32.5], "expected": 32.50000000000114}, {"input": [5.0, 33.0], "expected": 33.00000000000069}, {"input": [5.0, 33.5], "expected": 33.50000000000042}, {"input": [5.0, 34.0], "expected": 34.000000000000256}, {"input": [5.0, 34.5], "expected": 34.500000000000156}, {"input": [5.0, 35.0], "expected": 35.00000000000009}, {"input": [5.0, 35.5], "expected": 35.50000000000006}, {"input": [5.0, 36.0], "expected": 36.000000000000036}, {"input": [5.0, 36.5], "expected": 36.50000000000002}, {"input": [5.0, 37.0], "expected": 37.000000000000014}, {"input": [5.0, 37.5], "expected": 37.50000000000001}, {"input": [5.0, 38.0], "expected": 38.00000000000001}, {"input": [5.0, 38.5], "expected": 38.5}, {"input": [5.0, 39.0], "expected": 39.0}, {"input": [5.0, 39.5], "expected": 39.5}, {"input": [5.0, 40.0], "expected": 40.0}, {"input": [5.0, 40.5], "expected": 40.5}, {"input": [5.0, 41.0], "expected": 41.0}, {"input": [5.0, 41.5], "expected": 41.5}, {"input": [5.0, 42.0], "expected": 42.0}, {"input": [5.0, 42.5], "expected": 42.5}, {"input": [5.0, 43.0], "expected": 43.0}, {"input": [5.0, 43.5], "expected": 43.5}, {"input": [5.0, 44.0], "expected": 44.0}, {"input": [5.0, 44.5], "expected": 44.5}, {"input": [5.0, 45.0], "expected": 45.0}, {"input": [5.0, 45.5], "expected": 45.5}, {"input": [5.0, 46.0], "expected": 46.0}, {"input": [5.0, 46.5], "expected": 46.5}, {"input": [5.0, 47.0], "expected": 47.0}, {"input": [5.0, 47.5], "expected": 47.5}, {"input": [5.0, 48.0], "expected": 48.0}, {"input": [5.0, 48.5], "expected": 48.5}, {"input": [5.0, 49.0], "expected": 49.0}, {"input": [5.0, 49.5], "expected": 49.5}, {"input": [5.0, 50.0], "expected": 50.0}, {"input": [5.0, 50.5], "expected": 50.5}, {"input": [5.0, 51.0], "expected": 51.0}, {"input": [5.0, 51.5], "expected": 51.5}, {"input": [5.0, 52.0], "expected": 52.0}, {"input": [5.0, 52.5], "expected": 52.5}, {"input": [5.0, 53.0], "expected": 53.0}, {"input": [5.0, 53.5], "expected": 53.5}, {"input": [5.0, 54.0], "expected": 54.0}, {"input": [5.0, 54.5], "expected": 54.5}, {"input": [5.0, 55.0], "expected": 55.0}, {"input": [5.0, 55.5], "expected": 55.5}, {"input": [5.0, 56.0], "expected": 56.0}, {"input": [5.0, 56.5], "expected": 56.5}, {"input": [5.0, 57.0], "expected": 57.0}, {"input": [5.0, 57.5], "expected": 57.5}, {"input": [5.0, 58.0], "expected": 58.0}, {"input": [5.0, 58.5], "expected": 58.5}, {"input": [5.0, 59.0], "expected": 59.0}, {"input": [5.0, 59.5], "expected": 59.5}, {"input": [5.0, 60.0], "expected": 60.0}, {"input": [5.0, 60.5], "expected": 60.5}, {"input": [5.0, 61.0], "expected": 61.0}, {"input": [5.0, 61.5], "expected": 61.5}, {"input": [5.0, 62.0], "expected": 62.0}, {"input": [5.0, 62.5], "expected": 62.5}, {"input": [5.0, 63.0], "expected": 63.0}, {"input": [5.0, 63.5], "expected": 63.5}, {"input": [5.0, 64.0], "expected": 64.0}, {"input": [5.0, 64.5], "expected": 64.5}, {"input": [5.0, 65.0], "expected": 65.0}, {"input": [5.0, 65.5], "expected": 65.5}, {"input": [5.0, 66.0], "expected": 66.0}, {"input": [5.0, 66.5], "expected": 66.5}, {"input": [5.0, 67.0], "expected": 67.0}, {"input": [5.0, 67.5], "expected": 67.5}, {"input": [5.0, 68.0], "expected": 68.0}, {"input": [5.0, 68.5], "expected": 68.5}, {"input": [5.0, 69.0], "expected": 69.0}, {"input": [5.0, 69.5], "expected": 69.5}, {"input": [5.0, 70.0], "expected": 70.0}, {"input": [5.0, 70.5], "expected": 70.5}, {"input": [5.0, 71.0], "expected": 71.0}, {"input": [5.0, 71.5], "expected": 71.5}, {"input": [5.0, 72.0], "expected": 72.0}, {"input": [5.0, 72.5], "expected": 72.5}, {"input": [5.0, 73.0], "expected": 73.0}, {"input": [5.0, 73.5], "expected": 73.5}, {"input": [5.0, 74.0], "expected": 74.0}, {"input": [5.0, 74.5], "expected": 74.5}, {"input": [5.0, 75.0], "expected": 75.0}, {"input": [5.0, 75.5], "expected": 75.5}, {"input": [5.0, 76.0], "expected": 76.0}, {"input": [5.0, 76.5], "expected": 76.5}, {"input": [5.0, 77.0], "expected": 77.0}, {"input": [5.0, 77.5], "expected": 77.5}, {"input": [5.0, 78.0], "expected": 78.0}, {"input": [5.0, 78.5], "expected": 78.5}, {"input": [5.0, 79.0], "expected": 79.0}, {"input": [5.0, 79.5], "expected": 79.5}, {"input": [5.0, 80.0], "expected": 80.0}, {"input": [5.0, 80.5], "expected": 80.5}, {"input": [5.0, 81.0], "expected": 81.0}, {"input": [5.0, 81.5], "expected": 81.5}, {"input": [5.0, 82.0], "expected": 82.0}, {"input": [5.0, 82.5], "expected": 82.5}, {"input": [5.0, 83.0], "expected": 83.0}, {"input": [5.0, 83.5], "expected": 83.5}, {"input": [5.0, 84.0], "expected": 84.0}, {"input": [5.0, 84.5], "expected": 84.5}, {"input": [5.0, 85.0], "expected": 85.0}, {"input": [5.0, 85.5], "expected": 85.5}, {"input": [5.0, 86.0], "expected": 86.0}, {"input": [5.0, 86.5], "expected": 86.5}, {"input": [5.0, 87.0], "expected": 87.0}, {"input": [5.0, 87.5], "expected": 87.5}, {"input": [5.0, 88.0], "expected": 88.0}, {"input": [5.0, 88.5], "expected": 88.5}, {"input": [5.0, 89.0], "expected": 89.0}, {"input": [5.0, 89.5], "expected": 89.5}, {"input": [5.0, 90.0], "expected": 90.0}, {"input": [5.0, 90.5], "expected": 90.5}, {"input": [5.0, 91.0], "expected": 91.0}, {"input": [5.0, 91.5], "expected": 91.5}, {"input": [5.0, 92.0], "expected": 92.0}, {"input": [5.0, 92.5], "expected": 92.5}, {"input": [5.0, 93.0], "expected": 93.0}, {"input": [5.0, 93.5], "expected": 93.5}, {"input": [5.0, 94.0], "expected": 94.0}, {"input": [5.0, 94.5], "expected": 94.5}, {"input": [5.0, 95.0], "expected": 95.0}, {"input": [5.0, 95.5], "expected": 95.5}, {"input": [5.0, 96.0], "expected": 96.0}, {"input": [5.0, 96.5], "expected": 96.5}, {"input": [5.0, 97.0], "expected": 97.0}, {"input": [5.0, 97.5], "expected": 97.5}, {"input": [5.0, 98.0], "expected": 98.0}, {"input": [5.0, 98.5], "expected": 98.5}, {"input": [5.0, 99.0], "expected": 99.0}, {"input": [5.0, 99.5], "expected": 99.5}, {"input": [5.5, -100.0], "expected": 5.5}, {"input": [5.5, -99.5], "expected": 5.5}, {"input": [5.5, -99.0], "expected": 5.5}, {"input": [5.5, -98.5], "expected": 5.5}, {"input": [5.5, -98.0], "expected": 5.5}, {"input": [5.5, -97.5], "expected": 5.5}, {"input": [5.5, -97.0], "expected": 5.5}, {"input": [5.5, -96.5], "expected": 5.5}, {"input": [5.5, -96.0], "expected": 5.5}, {"input": [5.5, -95.5], "expected": 5.5}, {"input": [5.5, -95.0], "expected": 5.5}, {"input": [5.5, -94.5], "expected": 5.5}, {"input": [5.5, -94.0], "expected": 5.5}, {"input": [5.5, -93.5], "expected": 5.5}, {"input": [5.5, -93.0], "expected": 5.5}, {"input": [5.5, -92.5], "expected": 5.5}, {"input": [5.5, -92.0], "expected": 5.5}, {"input": [5.5, -91.5], "expected": 5.5}, {"input": [5.5, -91.0], "expected": 5.5}, {"input": [5.5, -90.5], "expected": 5.5}, {"input": [5.5, -90.0], "expected": 5.5}, {"input": [5.5, -89.5], "expected": 5.5}, {"input": [5.5, -89.0], "expected": 5.5}, {"input": [5.5, -88.5], "expected": 5.5}, {"input": [5.5, -88.0], "expected": 5.5}, {"input": [5.5, -87.5], "expected": 5.5}, {"input": [5.5, -87.0], "expected": 5.5}, {"input": [5.5, -86.5], "expected": 5.5}, {"input": [5.5, -86.0], "expected": 5.5}, {"input": [5.5, -85.5], "expected": 5.5}, {"input": [5.5, -85.0], "expected": 5.5}, {"input": [5.5, -84.5], "expected": 5.5}, {"input": [5.5, -84.0], "expected": 5.5}, {"input": [5.5, -83.5], "expected": 5.5}, {"input": [5.5, -83.0], "expected": 5.5}, {"input": [5.5, -82.5], "expected": 5.5}, {"input": [5.5, -82.0], "expected": 5.5}, {"input": [5.5, -81.5], "expected": 5.5}, {"input": [5.5, -81.0], "expected": 5.5}, {"input": [5.5, -80.5], "expected": 5.5}, {"input": [5.5, -80.0], "expected": 5.5}, {"input": [5.5, -79.5], "expected": 5.5}, {"input": [5.5, -79.0], "expected": 5.5}, {"input": [5.5, -78.5], "expected": 5.5}, {"input": [5.5, -78.0], "expected": 5.5}, {"input": [5.5, -77.5], "expected": 5.5}, {"input": [5.5, -77.0], "expected": 5.5}, {"input": [5.5, -76.5], "expected": 5.5}, {"input": [5.5, -76.0], "expected": 5.5}, {"input": [5.5, -75.5], "expected": 5.5}, {"input": [5.5, -75.0], "expected": 5.5}, {"input": [5.5, -74.5], "expected": 5.5}, {"input": [5.5, -74.0], "expected": 5.5}, {"input": [5.5, -73.5], "expected": 5.5}, {"input": [5.5, -73.0], "expected": 5.5}, {"input": [5.5, -72.5], "expected": 5.5}, {"input": [5.5, -72.0], "expected": 5.5}, {"input": [5.5, -71.5], "expected": 5.5}, {"input": [5.5, -71.0], "expected": 5.5}, {"input": [5.5, -70.5], "expected": 5.5}, {"input": [5.5, -70.0], "expected": 5.5}, {"input": [5.5, -69.5], "expected": 5.5}, {"input": [5.5, -69.0], "expected": 5.5}, {"input": [5.5, -68.5], "expected": 5.5}, {"input": [5.5, -68.0], "expected": 5.5}, {"input": [5.5, -67.5], "expected": 5.5}, {"input": [5.5, -67.0], "expected": 5.5}, {"input": [5.5, -66.5], "expected": 5.5}, {"input": [5.5, -66.0], "expected": 5.5}, {"input": [5.5, -65.5], "expected": 5.5}, {"input": [5.5, -65.0], "expected": 5.5}, {"input": [5.5, -64.5], "expected": 5.5}, {"input": [5.5, -64.0], "expected": 5.5}, {"input": [5.5, -63.5], "expected": 5.5}, {"input": [5.5, -63.0], "expected": 5.5}, {"input": [5.5, -62.5], "expected": 5.5}, {"input": [5.5, -62.0], "expected": 5.5}, {"input": [5.5, -61.5], "expected": 5.5}, {"input": [5.5, -61.0], "expected": 5.5}, {"input": [5.5, -60.5], "expected": 5.5}, {"input": [5.5, -60.0], "expected": 5.5}, {"input": [5.5, -59.5], "expected": 5.5}, {"input": [5.5, -59.0], "expected": 5.5}, {"input": [5.5, -58.5], "expected": 5.5}, {"input": [5.5, -58.0], "expected": 5.5}, {"input": [5.5, -57.5], "expected": 5.5}, {"input": [5.5, -57.0], "expected": 5.5}, {"input": [5.5, -56.5], "expected": 5.5}, {"input": [5.5, -56.0], "expected": 5.5}, {"input": [5.5, -55.5], "expected": 5.5}, {"input": [5.5, -55.0], "expected": 5.5}, {"input": [5.5, -54.5], "expected": 5.5}, {"input": [5.5, -54.0], "expected": 5.5}, {"input": [5.5, -53.5], "expected": 5.5}, {"input": [5.5, -53.0], "expected": 5.5}, {"input": [5.5, -52.5], "expected": 5.5}, {"input": [5.5, -52.0], "expected": 5.5}, {"input": [5.5, -51.5], "expected": 5.5}, {"input": [5.5, -51.0], "expected": 5.5}, {"input": [5.5, -50.5], "expected": 5.5}, {"input": [5.5, -50.0], "expected": 5.5}, {"input": [5.5, -49.5], "expected": 5.5}, {"input": [5.5, -49.0], "expected": 5.5}, {"input": [5.5, -48.5], "expected": 5.5}, {"input": [5.5, -48.0], "expected": 5.5}, {"input": [5.5, -47.5], "expected": 5.5}, {"input": [5.5, -47.0], "expected": 5.5}, {"input": [5.5, -46.5], "expected": 5.5}, {"input": [5.5, -46.0], "expected": 5.5}, {"input": [5.5, -45.5], "expected": 5.5}, {"input": [5.5, -45.0], "expected": 5.5}, {"input": [5.5, -44.5], "expected": 5.5}, {"input": [5.5, -44.0], "expected": 5.5}, {"input": [5.5, -43.5], "expected": 5.5}, {"input": [5.5, -43.0], "expected": 5.5}, {"input": [5.5, -42.5], "expected": 5.5}, {"input": [5.5, -42.0], "expected": 5.5}, {"input": [5.5, -41.5], "expected": 5.5}, {"input": [5.5, -41.0], "expected": 5.5}, {"input": [5.5, -40.5], "expected": 5.5}, {"input": [5.5, -40.0], "expected": 5.5}, {"input": [5.5, -39.5], "expected": 5.5}, {"input": [5.5, -39.0], "expected": 5.5}, {"input": [5.5, -38.5], "expected": 5.5}, {"input": [5.5, -38.0], "expected": 5.5}, {"input": [5.5, -37.5], "expected": 5.5}, {"input": [5.5, -37.0], "expected": 5.5}, {"input": [5.5, -36.5], "expected": 5.5}, {"input": [5.5, -36.0], "expected": 5.5}, {"input": [5.5, -35.5], "expected": 5.5}, {"input": [5.5, -35.0], "expected": 5.5}, {"input": [5.5, -34.5], "expected": 5.5}, {"input": [5.5, -34.0], "expected": 5.5}, {"input": [5.5, -33.5], "expected": 5.5}, {"input": [5.5, -33.0], "expected": 5.5}, {"input": [5.5, -32.5], "expected": 5.5}, {"input": [5.5, -32.0], "expected": 5.5}, {"input": [5.5, -31.5], "expected": 5.5}, {"input": [5.5, -31.0], "expected": 5.5}, {"input": [5.5, -30.5], "expected": 5.5}, {"input": [5.5, -30.0], "expected": 5.5}, {"input": [5.5, -29.5], "expected": 5.500000000000001}, {"input": [5.5, -29.0], "expected": 5.500000000000001}, {"input": [5.5, -28.5], "expected": 5.500000000000002}, {"input": [5.5, -28.0], "expected": 5.500000000000003}, {"input": [5.5, -27.5], "expected": 5.500000000000004}, {"input": [5.5, -27.0], "expected": 5.500000000000008}, {"input": [5.5, -26.5], "expected": 5.500000000000012}, {"input": [5.5, -26.0], "expected": 5.500000000000021}, {"input": [5.5, -25.5], "expected": 5.500000000000035}, {"input": [5.5, -25.0], "expected": 5.500000000000057}, {"input": [5.5, -24.5], "expected": 5.500000000000093}, {"input": [5.5, -24.0], "expected": 5.5000000000001545}, {"input": [5.5, -23.5], "expected": 5.500000000000254}, {"input": [5.5, -23.0], "expected": 5.500000000000419}, {"input": [5.5, -22.5], "expected": 5.500000000000691}, {"input": [5.5, -22.0], "expected": 5.50000000000114}, {"input": [5.5, -21.5], "expected": 5.500000000001879}, {"input": [5.5, -21.0], "expected": 5.500000000003099}, {"input": [5.5, -20.5], "expected": 5.500000000005109}, {"input": [5.5, -20.0], "expected": 5.5000000000084235}, {"input": [5.5, -19.5], "expected": 5.500000000013888}, {"input": [5.5, -19.0], "expected": 5.500000000022897}, {"input": [5.5, -18.5], "expected": 5.500000000037751}, {"input": [5.5, -18.0], "expected": 5.500000000062242}, {"input": [5.5, -17.5], "expected": 5.500000000102618}, {"input": [5.5, -17.0], "expected": 5.50000000016919}, {"input": [5.5, -16.5], "expected": 5.500000000278947}, {"input": [5.5, -16.0], "expected": 5.500000000459906}, {"input": [5.5, -15.5], "expected": 5.500000000758256}, {"input": [5.5, -15.0], "expected": 5.500000001250153}, {"input": [5.5, -14.5], "expected": 5.500000002061154}, {"input": [5.5, -14.0], "expected": 5.5000000033982674}, {"input": [5.5, -13.5], "expected": 5.5000000056027964}, {"input": [5.5, -13.0], "expected": 5.50000000923745}, {"input": [5.5, -12.5], "expected": 5.50000001522998}, {"input": [5.5, -12.0], "expected": 5.500000025109991}, {"input": [5.5, -11.5], "expected": 5.500000041399376}, {"input": [5.5, -11.0], "expected": 5.500000068256031}, {"input": [5.5, -10.5], "expected": 5.500000112535169}, {"input": [5.5, -10.0], "expected": 5.500000185539119}, {"input": [5.5, -9.5], "expected": 5.500000305902273}, {"input": [5.5, -9.0], "expected": 5.500000504347535}, {"input": [5.5, -8.5], "expected": 5.500000831528373}, {"input": [5.5, -8.0], "expected": 5.500001370958147}, {"input": [5.5, -7.5], "expected": 5.500002260326853}, {"input": [5.5, -7.0], "expected": 5.500003726646228}, {"input": [5.5, -6.5], "expected": 5.5000061441934776}, {"input": [5.5, -6.0], "expected": 5.5000101300422894}, {"input": [5.5, -5.5], "expected": 5.500016701561319}, {"input": [5.5, -5.0], "expected": 5.500027536070228}, {"input": [5.5, -4.5], "expected": 5.500045398899217}, {"input": [5.5, -4.0], "expected": 5.500074849028629}, {"input": [5.5, -3.5], "expected": 5.500123402189724}, {"input": [5.5, -3.0], "expected": 5.5002034476721295}, {"input": [5.5, -2.5], "expected": 5.500335406372896}, {"input": [5.5, -2.0], "expected": 5.500552931475361}, {"input": [5.5, -1.5], "expected": 5.500911466453775}, {"input": [5.5, -1.0], "expected": 5.501502310159754}, {"input": [5.5, -0.5], "expected": 5.50247568513773}, {"input": [5.5, 0.0], "expected": 5.504078443270571}, {"input": [5.5, 0.5], "expected": 5.506715348489118}, {"input": [5.5, 1.0], "expected": 5.511047744848594}, {"input": [5.5, 1.5], "expected": 5.5181499279178094}, {"input": [5.5, 2.0], "expected": 5.529750418272621}, {"input": [5.5, 2.5], "expected": 5.548587351573742}, {"input": [5.5, 3.0], "expected": 5.57888973429255}, {"input": [5.5, 3.5], "expected": 5.626928011042972}, {"input": [5.5, 4.0], "expected": 5.701413277982752}, {"input": [5.5, 4.5], "expected": 5.813261687518223}, {"input": [5.5, 5.0], "expected": 5.9740769841801065}, {"input": [5.5, 5.5], "expected": 6.193147180559945}, {"input": [5.5, 6.0], "expected": 6.4740769841801065}, {"input": [5.5, 6.5], "expected": 6.813261687518223}, {"input": [5.5, 7.0], "expected": 7.201413277982752}, {"input": [5.5, 7.5], "expected": 7.626928011042972}, {"input": [5.5, 8.0], "expected": 8.078889734292549}, {"input": [5.5, 8.5], "expected": 8.548587351573742}, {"input": [5.5, 9.0], "expected": 9.02975041827262}, {"input": [5.5, 9.5], "expected": 9.51814992791781}, {"input": [5.5, 10.0], "expected": 10.011047744848593}, {"input": [5.5, 10.5], "expected": 10.506715348489118}, {"input": [5.5, 11.0], "expected": 11.00407844327057}, {"input": [5.5, 11.5], "expected": 11.50247568513773}, {"input": [5.5, 12.0], "expected": 12.001502310159754}, {"input": [5.5, 12.5], "expected": 12.500911466453774}, {"input": [5.5, 13.0], "expected": 13.000552931475362}, {"input": [5.5, 13.5], "expected": 13.500335406372896}, {"input": [5.5, 14.0], "expected": 14.00020344767213}, {"input": [5.5, 14.5], "expected": 14.500123402189724}, {"input": [5.5, 15.0], "expected": 15.000074849028628}, {"input": [5.5, 15.5], "expected": 15.500045398899218}, {"input": [5.5, 16.0], "expected": 16.000027536070228}, {"input": [5.5, 16.5], "expected": 16.500016701561318}, {"input": [5.5, 17.0], "expected": 17.00001013004229}, {"input": [5.5, 17.5], "expected": 17.500006144193478}, {"input": [5.5, 18.0], "expected": 18.000003726646227}, {"input": [5.5, 18.5], "expected": 18.500002260326852}, {"input": [5.5, 19.0], "expected": 19.000001370958145}, {"input": [5.5, 19.5], "expected": 19.500000831528375}, {"input": [5.5, 20.0], "expected": 20.000000504347536}, {"input": [5.5, 20.5], "expected": 20.500000305902272}, {"input": [5.5, 21.0], "expected": 21.00000018553912}, {"input": [5.5, 21.5], "expected": 21.50000011253517}, {"input": [5.5, 22.0], "expected": 22.000000068256032}, {"input": [5.5, 22.5], "expected": 22.500000041399375}, {"input": [5.5, 23.0], "expected": 23.00000002510999}, {"input": [5.5, 23.5], "expected": 23.50000001522998}, {"input": [5.5, 24.0], "expected": 24.00000000923745}, {"input": [5.5, 24.5], "expected": 24.500000005602796}, {"input": [5.5, 25.0], "expected": 25.000000003398267}, {"input": [5.5, 25.5], "expected": 25.500000002061153}, {"input": [5.5, 26.0], "expected": 26.000000001250154}, {"input": [5.5, 26.5], "expected": 26.500000000758256}, {"input": [5.5, 27.0], "expected": 27.000000000459906}, {"input": [5.5, 27.5], "expected": 27.50000000027895}, {"input": [5.5, 28.0], "expected": 28.00000000016919}, {"input": [5.5, 28.5], "expected": 28.50000000010262}, {"input": [5.5, 29.0], "expected": 29.00000000006224}, {"input": [5.5, 29.5], "expected": 29.50000000003775}, {"input": [5.5, 30.0], "expected": 30.000000000022897}, {"input": [5.5, 30.5], "expected": 30.500000000013888}, {"input": [5.5, 31.0], "expected": 31.000000000008423}, {"input": [5.5, 31.5], "expected": 31.50000000000511}, {"input": [5.5, 32.0], "expected": 32.0000000000031}, {"input": [5.5, 32.5], "expected": 32.50000000000188}, {"input": [5.5, 33.0], "expected": 33.00000000000114}, {"input": [5.5, 33.5], "expected": 33.50000000000069}, {"input": [5.5, 34.0], "expected": 34.00000000000042}, {"input": [5.5, 34.5], "expected": 34.500000000000256}, {"input": [5.5, 35.0], "expected": 35.000000000000156}, {"input": [5.5, 35.5], "expected": 35.50000000000009}, {"input": [5.5, 36.0], "expected": 36.00000000000006}, {"input": [5.5, 36.5], "expected": 36.500000000000036}, {"input": [5.5, 37.0], "expected": 37.00000000000002}, {"input": [5.5, 37.5], "expected": 37.500000000000014}, {"input": [5.5, 38.0], "expected": 38.00000000000001}, {"input": [5.5, 38.5], "expected": 38.50000000000001}, {"input": [5.5, 39.0], "expected": 39.0}, {"input": [5.5, 39.5], "expected": 39.5}, {"input": [5.5, 40.0], "expected": 40.0}, {"input": [5.5, 40.5], "expected": 40.5}, {"input": [5.5, 41.0], "expected": 41.0}, {"input": [5.5, 41.5], "expected": 41.5}, {"input": [5.5, 42.0], "expected": 42.0}, {"input": [5.5, 42.5], "expected": 42.5}, {"input": [5.5, 43.0], "expected": 43.0}, {"input": [5.5, 43.5], "expected": 43.5}, {"input": [5.5, 44.0], "expected": 44.0}, {"input": [5.5, 44.5], "expected": 44.5}, {"input": [5.5, 45.0], "expected": 45.0}, {"input": [5.5, 45.5], "expected": 45.5}, {"input": [5.5, 46.0], "expected": 46.0}, {"input": [5.5, 46.5], "expected": 46.5}, {"input": [5.5, 47.0], "expected": 47.0}, {"input": [5.5, 47.5], "expected": 47.5}, {"input": [5.5, 48.0], "expected": 48.0}, {"input": [5.5, 48.5], "expected": 48.5}, {"input": [5.5, 49.0], "expected": 49.0}, {"input": [5.5, 49.5], "expected": 49.5}, {"input": [5.5, 50.0], "expected": 50.0}, {"input": [5.5, 50.5], "expected": 50.5}, {"input": [5.5, 51.0], "expected": 51.0}, {"input": [5.5, 51.5], "expected": 51.5}, {"input": [5.5, 52.0], "expected": 52.0}, {"input": [5.5, 52.5], "expected": 52.5}, {"input": [5.5, 53.0], "expected": 53.0}, {"input": [5.5, 53.5], "expected": 53.5}, {"input": [5.5, 54.0], "expected": 54.0}, {"input": [5.5, 54.5], "expected": 54.5}, {"input": [5.5, 55.0], "expected": 55.0}, {"input": [5.5, 55.5], "expected": 55.5}, {"input": [5.5, 56.0], "expected": 56.0}, {"input": [5.5, 56.5], "expected": 56.5}, {"input": [5.5, 57.0], "expected": 57.0}, {"input": [5.5, 57.5], "expected": 57.5}, {"input": [5.5, 58.0], "expected": 58.0}, {"input": [5.5, 58.5], "expected": 58.5}, {"input": [5.5, 59.0], "expected": 59.0}, {"input": [5.5, 59.5], "expected": 59.5}, {"input": [5.5, 60.0], "expected": 60.0}, {"input": [5.5, 60.5], "expected": 60.5}, {"input": [5.5, 61.0], "expected": 61.0}, {"input": [5.5, 61.5], "expected": 61.5}, {"input": [5.5, 62.0], "expected": 62.0}, {"input": [5.5, 62.5], "expected": 62.5}, {"input": [5.5, 63.0], "expected": 63.0}, {"input": [5.5, 63.5], "expected": 63.5}, {"input": [5.5, 64.0], "expected": 64.0}, {"input": [5.5, 64.5], "expected": 64.5}, {"input": [5.5, 65.0], "expected": 65.0}, {"input": [5.5, 65.5], "expected": 65.5}, {"input": [5.5, 66.0], "expected": 66.0}, {"input": [5.5, 66.5], "expected": 66.5}, {"input": [5.5, 67.0], "expected": 67.0}, {"input": [5.5, 67.5], "expected": 67.5}, {"input": [5.5, 68.0], "expected": 68.0}, {"input": [5.5, 68.5], "expected": 68.5}, {"input": [5.5, 69.0], "expected": 69.0}, {"input": [5.5, 69.5], "expected": 69.5}, {"input": [5.5, 70.0], "expected": 70.0}, {"input": [5.5, 70.5], "expected": 70.5}, {"input": [5.5, 71.0], "expected": 71.0}, {"input": [5.5, 71.5], "expected": 71.5}, {"input": [5.5, 72.0], "expected": 72.0}, {"input": [5.5, 72.5], "expected": 72.5}, {"input": [5.5, 73.0], "expected": 73.0}, {"input": [5.5, 73.5], "expected": 73.5}, {"input": [5.5, 74.0], "expected": 74.0}, {"input": [5.5, 74.5], "expected": 74.5}, {"input": [5.5, 75.0], "expected": 75.0}, {"input": [5.5, 75.5], "expected": 75.5}, {"input": [5.5, 76.0], "expected": 76.0}, {"input": [5.5, 76.5], "expected": 76.5}, {"input": [5.5, 77.0], "expected": 77.0}, {"input": [5.5, 77.5], "expected": 77.5}, {"input": [5.5, 78.0], "expected": 78.0}, {"input": [5.5, 78.5], "expected": 78.5}, {"input": [5.5, 79.0], "expected": 79.0}, {"input": [5.5, 79.5], "expected": 79.5}, {"input": [5.5, 80.0], "expected": 80.0}, {"input": [5.5, 80.5], "expected": 80.5}, {"input": [5.5, 81.0], "expected": 81.0}, {"input": [5.5, 81.5], "expected": 81.5}, {"input": [5.5, 82.0], "expected": 82.0}, {"input": [5.5, 82.5], "expected": 82.5}, {"input": [5.5, 83.0], "expected": 83.0}, {"input": [5.5, 83.5], "expected": 83.5}, {"input": [5.5, 84.0], "expected": 84.0}, {"input": [5.5, 84.5], "expected": 84.5}, {"input": [5.5, 85.0], "expected": 85.0}, {"input": [5.5, 85.5], "expected": 85.5}, {"input": [5.5, 86.0], "expected": 86.0}, {"input": [5.5, 86.5], "expected": 86.5}, {"input": [5.5, 87.0], "expected": 87.0}, {"input": [5.5, 87.5], "expected": 87.5}, {"input": [5.5, 88.0], "expected": 88.0}, {"input": [5.5, 88.5], "expected": 88.5}, {"input": [5.5, 89.0], "expected": 89.0}, {"input": [5.5, 89.5], "expected": 89.5}, {"input": [5.5, 90.0], "expected": 90.0}, {"input": [5.5, 90.5], "expected": 90.5}, {"input": [5.5, 91.0], "expected": 91.0}, {"input": [5.5, 91.5], "expected": 91.5}, {"input": [5.5, 92.0], "expected": 92.0}, {"input": [5.5, 92.5], "expected": 92.5}, {"input": [5.5, 93.0], "expected": 93.0}, {"input": [5.5, 93.5], "expected": 93.5}, {"input": [5.5, 94.0], "expected": 94.0}, {"input": [5.5, 94.5], "expected": 94.5}, {"input": [5.5, 95.0], "expected": 95.0}, {"input": [5.5, 95.5], "expected": 95.5}, {"input": [5.5, 96.0], "expected": 96.0}, {"input": [5.5, 96.5], "expected": 96.5}, {"input": [5.5, 97.0], "expected": 97.0}, {"input": [5.5, 97.5], "expected": 97.5}, {"input": [5.5, 98.0], "expected": 98.0}, {"input": [5.5, 98.5], "expected": 98.5}, {"input": [5.5, 99.0], "expected": 99.0}, {"input": [5.5, 99.5], "expected": 99.5}, {"input": [6.0, -100.0], "expected": 6.0}, {"input": [6.0, -99.5], "expected": 6.0}, {"input": [6.0, -99.0], "expected": 6.0}, {"input": [6.0, -98.5], "expected": 6.0}, {"input": [6.0, -98.0], "expected": 6.0}, {"input": [6.0, -97.5], "expected": 6.0}, {"input": [6.0, -97.0], "expected": 6.0}, {"input": [6.0, -96.5], "expected": 6.0}, {"input": [6.0, -96.0], "expected": 6.0}, {"input": [6.0, -95.5], "expected": 6.0}, {"input": [6.0, -95.0], "expected": 6.0}, {"input": [6.0, -94.5], "expected": 6.0}, {"input": [6.0, -94.0], "expected": 6.0}, {"input": [6.0, -93.5], "expected": 6.0}, {"input": [6.0, -93.0], "expected": 6.0}, {"input": [6.0, -92.5], "expected": 6.0}, {"input": [6.0, -92.0], "expected": 6.0}, {"input": [6.0, -91.5], "expected": 6.0}, {"input": [6.0, -91.0], "expected": 6.0}, {"input": [6.0, -90.5], "expected": 6.0}, {"input": [6.0, -90.0], "expected": 6.0}, {"input": [6.0, -89.5], "expected": 6.0}, {"input": [6.0, -89.0], "expected": 6.0}, {"input": [6.0, -88.5], "expected": 6.0}, {"input": [6.0, -88.0], "expected": 6.0}, {"input": [6.0, -87.5], "expected": 6.0}, {"input": [6.0, -87.0], "expected": 6.0}, {"input": [6.0, -86.5], "expected": 6.0}, {"input": [6.0, -86.0], "expected": 6.0}, {"input": [6.0, -85.5], "expected": 6.0}, {"input": [6.0, -85.0], "expected": 6.0}, {"input": [6.0, -84.5], "expected": 6.0}, {"input": [6.0, -84.0], "expected": 6.0}, {"input": [6.0, -83.5], "expected": 6.0}, {"input": [6.0, -83.0], "expected": 6.0}, {"input": [6.0, -82.5], "expected": 6.0}, {"input": [6.0, -82.0], "expected": 6.0}, {"input": [6.0, -81.5], "expected": 6.0}, {"input": [6.0, -81.0], "expected": 6.0}, {"input": [6.0, -80.5], "expected": 6.0}, {"input": [6.0, -80.0], "expected": 6.0}, {"input": [6.0, -79.5], "expected": 6.0}, {"input": [6.0, -79.0], "expected": 6.0}, {"input": [6.0, -78.5], "expected": 6.0}, {"input": [6.0, -78.0], "expected": 6.0}, {"input": [6.0, -77.5], "expected": 6.0}, {"input": [6.0, -77.0], "expected": 6.0}, {"input": [6.0, -76.5], "expected": 6.0}, {"input": [6.0, -76.0], "expected": 6.0}, {"input": [6.0, -75.5], "expected": 6.0}, {"input": [6.0, -75.0], "expected": 6.0}, {"input": [6.0, -74.5], "expected": 6.0}, {"input": [6.0, -74.0], "expected": 6.0}, {"input": [6.0, -73.5], "expected": 6.0}, {"input": [6.0, -73.0], "expected": 6.0}, {"input": [6.0, -72.5], "expected": 6.0}, {"input": [6.0, -72.0], "expected": 6.0}, {"input": [6.0, -71.5], "expected": 6.0}, {"input": [6.0, -71.0], "expected": 6.0}, {"input": [6.0, -70.5], "expected": 6.0}, {"input": [6.0, -70.0], "expected": 6.0}, {"input": [6.0, -69.5], "expected": 6.0}, {"input": [6.0, -69.0], "expected": 6.0}, {"input": [6.0, -68.5], "expected": 6.0}, {"input": [6.0, -68.0], "expected": 6.0}, {"input": [6.0, -67.5], "expected": 6.0}, {"input": [6.0, -67.0], "expected": 6.0}, {"input": [6.0, -66.5], "expected": 6.0}, {"input": [6.0, -66.0], "expected": 6.0}, {"input": [6.0, -65.5], "expected": 6.0}, {"input": [6.0, -65.0], "expected": 6.0}, {"input": [6.0, -64.5], "expected": 6.0}, {"input": [6.0, -64.0], "expected": 6.0}, {"input": [6.0, -63.5], "expected": 6.0}, {"input": [6.0, -63.0], "expected": 6.0}, {"input": [6.0, -62.5], "expected": 6.0}, {"input": [6.0, -62.0], "expected": 6.0}, {"input": [6.0, -61.5], "expected": 6.0}, {"input": [6.0, -61.0], "expected": 6.0}, {"input": [6.0, -60.5], "expected": 6.0}, {"input": [6.0, -60.0], "expected": 6.0}, {"input": [6.0, -59.5], "expected": 6.0}, {"input": [6.0, -59.0], "expected": 6.0}, {"input": [6.0, -58.5], "expected": 6.0}, {"input": [6.0, -58.0], "expected": 6.0}, {"input": [6.0, -57.5], "expected": 6.0}, {"input": [6.0, -57.0], "expected": 6.0}, {"input": [6.0, -56.5], "expected": 6.0}, {"input": [6.0, -56.0], "expected": 6.0}, {"input": [6.0, -55.5], "expected": 6.0}, {"input": [6.0, -55.0], "expected": 6.0}, {"input": [6.0, -54.5], "expected": 6.0}, {"input": [6.0, -54.0], "expected": 6.0}, {"input": [6.0, -53.5], "expected": 6.0}, {"input": [6.0, -53.0], "expected": 6.0}, {"input": [6.0, -52.5], "expected": 6.0}, {"input": [6.0, -52.0], "expected": 6.0}, {"input": [6.0, -51.5], "expected": 6.0}, {"input": [6.0, -51.0], "expected": 6.0}, {"input": [6.0, -50.5], "expected": 6.0}, {"input": [6.0, -50.0], "expected": 6.0}, {"input": [6.0, -49.5], "expected": 6.0}, {"input": [6.0, -49.0], "expected": 6.0}, {"input": [6.0, -48.5], "expected": 6.0}, {"input": [6.0, -48.0], "expected": 6.0}, {"input": [6.0, -47.5], "expected": 6.0}, {"input": [6.0, -47.0], "expected": 6.0}, {"input": [6.0, -46.5], "expected": 6.0}, {"input": [6.0, -46.0], "expected": 6.0}, {"input": [6.0, -45.5], "expected": 6.0}, {"input": [6.0, -45.0], "expected": 6.0}, {"input": [6.0, -44.5], "expected": 6.0}, {"input": [6.0, -44.0], "expected": 6.0}, {"input": [6.0, -43.5], "expected": 6.0}, {"input": [6.0, -43.0], "expected": 6.0}, {"input": [6.0, -42.5], "expected": 6.0}, {"input": [6.0, -42.0], "expected": 6.0}, {"input": [6.0, -41.5], "expected": 6.0}, {"input": [6.0, -41.0], "expected": 6.0}, {"input": [6.0, -40.5], "expected": 6.0}, {"input": [6.0, -40.0], "expected": 6.0}, {"input": [6.0, -39.5], "expected": 6.0}, {"input": [6.0, -39.0], "expected": 6.0}, {"input": [6.0, -38.5], "expected": 6.0}, {"input": [6.0, -38.0], "expected": 6.0}, {"input": [6.0, -37.5], "expected": 6.0}, {"input": [6.0, -37.0], "expected": 6.0}, {"input": [6.0, -36.5], "expected": 6.0}, {"input": [6.0, -36.0], "expected": 6.0}, {"input": [6.0, -35.5], "expected": 6.0}, {"input": [6.0, -35.0], "expected": 6.0}, {"input": [6.0, -34.5], "expected": 6.0}, {"input": [6.0, -34.0], "expected": 6.0}, {"input": [6.0, -33.5], "expected": 6.0}, {"input": [6.0, -33.0], "expected": 6.0}, {"input": [6.0, -32.5], "expected": 6.0}, {"input": [6.0, -32.0], "expected": 6.0}, {"input": [6.0, -31.5], "expected": 6.0}, {"input": [6.0, -31.0], "expected": 6.0}, {"input": [6.0, -30.5], "expected": 6.0}, {"input": [6.0, -30.0], "expected": 6.0}, {"input": [6.0, -29.5], "expected": 6.0}, {"input": [6.0, -29.0], "expected": 6.000000000000001}, {"input": [6.0, -28.5], "expected": 6.000000000000001}, {"input": [6.0, -28.0], "expected": 6.000000000000002}, {"input": [6.0, -27.5], "expected": 6.000000000000003}, {"input": [6.0, -27.0], "expected": 6.000000000000004}, {"input": [6.0, -26.5], "expected": 6.000000000000008}, {"input": [6.0, -26.0], "expected": 6.000000000000012}, {"input": [6.0, -25.5], "expected": 6.000000000000021}, {"input": [6.0, -25.0], "expected": 6.000000000000035}, {"input": [6.0, -24.5], "expected": 6.000000000000057}, {"input": [6.0, -24.0], "expected": 6.000000000000093}, {"input": [6.0, -23.5], "expected": 6.0000000000001545}, {"input": [6.0, -23.0], "expected": 6.000000000000254}, {"input": [6.0, -22.5], "expected": 6.000000000000419}, {"input": [6.0, -22.0], "expected": 6.000000000000691}, {"input": [6.0, -21.5], "expected": 6.00000000000114}, {"input": [6.0, -21.0], "expected": 6.000000000001879}, {"input": [6.0, -20.5], "expected": 6.000000000003099}, {"input": [6.0, -20.0], "expected": 6.000000000005109}, {"input": [6.0, -19.5], "expected": 6.0000000000084235}, {"input": [6.0, -19.0], "expected": 6.000000000013888}, {"input": [6.0, -18.5], "expected": 6.000000000022897}, {"input": [6.0, -18.0], "expected": 6.000000000037751}, {"input": [6.0, -17.5], "expected": 6.000000000062242}, {"input": [6.0, -17.0], "expected": 6.000000000102618}, {"input": [6.0, -16.5], "expected": 6.00000000016919}, {"input": [6.0, -16.0], "expected": 6.000000000278947}, {"input": [6.0, -15.5], "expected": 6.000000000459906}, {"input": [6.0, -15.0], "expected": 6.000000000758256}, {"input": [6.0, -14.5], "expected": 6.000000001250153}, {"input": [6.0, -14.0], "expected": 6.000000002061154}, {"input": [6.0, -13.5], "expected": 6.0000000033982674}, {"input": [6.0, -13.0], "expected": 6.0000000056027964}, {"input": [6.0, -12.5], "expected": 6.00000000923745}, {"input": [6.0, -12.0], "expected": 6.00000001522998}, {"input": [6.0, -11.5], "expected": 6.000000025109991}, {"input": [6.0, -11.0], "expected": 6.000000041399376}, {"input": [6.0, -10.5], "expected": 6.000000068256031}, {"input": [6.0, -10.0], "expected": 6.000000112535169}, {"input": [6.0, -9.5], "expected": 6.000000185539119}, {"input": [6.0, -9.0], "expected": 6.000000305902273}, {"input": [6.0, -8.5], "expected": 6.000000504347535}, {"input": [6.0, -8.0], "expected": 6.000000831528373}, {"input": [6.0, -7.5], "expected": 6.000001370958147}, {"input": [6.0, -7.0], "expected": 6.000002260326853}, {"input": [6.0, -6.5], "expected": 6.000003726646228}, {"input": [6.0, -6.0], "expected": 6.0000061441934776}, {"input": [6.0, -5.5], "expected": 6.0000101300422894}, {"input": [6.0, -5.0], "expected": 6.000016701561319}, {"input": [6.0, -4.5], "expected": 6.000027536070228}, {"input": [6.0, -4.0], "expected": 6.000045398899217}, {"input": [6.0, -3.5], "expected": 6.000074849028629}, {"input": [6.0, -3.0], "expected": 6.000123402189724}, {"input": [6.0, -2.5], "expected": 6.0002034476721295}, {"input": [6.0, -2.0], "expected": 6.000335406372896}, {"input": [6.0, -1.5], "expected": 6.000552931475361}, {"input": [6.0, -1.0], "expected": 6.000911466453775}, {"input": [6.0, -0.5], "expected": 6.001502310159754}, {"input": [6.0, 0.0], "expected": 6.00247568513773}, {"input": [6.0, 0.5], "expected": 6.004078443270571}, {"input": [6.0, 1.0], "expected": 6.006715348489118}, {"input": [6.0, 1.5], "expected": 6.011047744848594}, {"input": [6.0, 2.0], "expected": 6.0181499279178094}, {"input": [6.0, 2.5], "expected": 6.029750418272621}, {"input": [6.0, 3.0], "expected": 6.048587351573742}, {"input": [6.0, 3.5], "expected": 6.07888973429255}, {"input": [6.0, 4.0], "expected": 6.126928011042972}, {"input": [6.0, 4.5], "expected": 6.201413277982752}, {"input": [6.0, 5.0], "expected": 6.313261687518223}, {"input": [6.0, 5.5], "expected": 6.4740769841801065}, {"input": [6.0, 6.0], "expected": 6.693147180559945}, {"input": [6.0, 6.5], "expected": 6.9740769841801065}, {"input": [6.0, 7.0], "expected": 7.313261687518223}, {"input": [6.0, 7.5], "expected": 7.701413277982752}, {"input": [6.0, 8.0], "expected": 8.126928011042972}, {"input": [6.0, 8.5], "expected": 8.578889734292549}, {"input": [6.0, 9.0], "expected": 9.048587351573742}, {"input": [6.0, 9.5], "expected": 9.52975041827262}, {"input": [6.0, 10.0], "expected": 10.01814992791781}, {"input": [6.0, 10.5], "expected": 10.511047744848593}, {"input": [6.0, 11.0], "expected": 11.006715348489118}, {"input": [6.0, 11.5], "expected": 11.50407844327057}, {"input": [6.0, 12.0], "expected": 12.00247568513773}, {"input": [6.0, 12.5], "expected": 12.501502310159754}, {"input": [6.0, 13.0], "expected": 13.000911466453774}, {"input": [6.0, 13.5], "expected": 13.500552931475362}, {"input": [6.0, 14.0], "expected": 14.000335406372896}, {"input": [6.0, 14.5], "expected": 14.50020344767213}, {"input": [6.0, 15.0], "expected": 15.000123402189724}, {"input": [6.0, 15.5], "expected": 15.500074849028628}, {"input": [6.0, 16.0], "expected": 16.000045398899218}, {"input": [6.0, 16.5], "expected": 16.500027536070228}, {"input": [6.0, 17.0], "expected": 17.000016701561318}, {"input": [6.0, 17.5], "expected": 17.50001013004229}, {"input": [6.0, 18.0], "expected": 18.000006144193478}, {"input": [6.0, 18.5], "expected": 18.500003726646227}, {"input": [6.0, 19.0], "expected": 19.000002260326852}, {"input": [6.0, 19.5], "expected": 19.500001370958145}, {"input": [6.0, 20.0], "expected": 20.000000831528375}, {"input": [6.0, 20.5], "expected": 20.500000504347536}, {"input": [6.0, 21.0], "expected": 21.000000305902272}, {"input": [6.0, 21.5], "expected": 21.50000018553912}, {"input": [6.0, 22.0], "expected": 22.00000011253517}, {"input": [6.0, 22.5], "expected": 22.500000068256032}, {"input": [6.0, 23.0], "expected": 23.000000041399375}, {"input": [6.0, 23.5], "expected": 23.50000002510999}, {"input": [6.0, 24.0], "expected": 24.00000001522998}, {"input": [6.0, 24.5], "expected": 24.50000000923745}, {"input": [6.0, 25.0], "expected": 25.000000005602796}, {"input": [6.0, 25.5], "expected": 25.500000003398267}, {"input": [6.0, 26.0], "expected": 26.000000002061153}, {"input": [6.0, 26.5], "expected": 26.500000001250154}, {"input": [6.0, 27.0], "expected": 27.000000000758256}, {"input": [6.0, 27.5], "expected": 27.500000000459906}, {"input": [6.0, 28.0], "expected": 28.00000000027895}, {"input": [6.0, 28.5], "expected": 28.50000000016919}, {"input": [6.0, 29.0], "expected": 29.00000000010262}, {"input": [6.0, 29.5], "expected": 29.50000000006224}, {"input": [6.0, 30.0], "expected": 30.00000000003775}, {"input": [6.0, 30.5], "expected": 30.500000000022897}, {"input": [6.0, 31.0], "expected": 31.000000000013888}, {"input": [6.0, 31.5], "expected": 31.500000000008423}, {"input": [6.0, 32.0], "expected": 32.00000000000511}, {"input": [6.0, 32.5], "expected": 32.5000000000031}, {"input": [6.0, 33.0], "expected": 33.00000000000188}, {"input": [6.0, 33.5], "expected": 33.50000000000114}, {"input": [6.0, 34.0], "expected": 34.00000000000069}, {"input": [6.0, 34.5], "expected": 34.50000000000042}, {"input": [6.0, 35.0], "expected": 35.000000000000256}, {"input": [6.0, 35.5], "expected": 35.500000000000156}, {"input": [6.0, 36.0], "expected": 36.00000000000009}, {"input": [6.0, 36.5], "expected": 36.50000000000006}, {"input": [6.0, 37.0], "expected": 37.000000000000036}, {"input": [6.0, 37.5], "expected": 37.50000000000002}, {"input": [6.0, 38.0], "expected": 38.000000000000014}, {"input": [6.0, 38.5], "expected": 38.50000000000001}, {"input": [6.0, 39.0], "expected": 39.00000000000001}, {"input": [6.0, 39.5], "expected": 39.5}, {"input": [6.0, 40.0], "expected": 40.0}, {"input": [6.0, 40.5], "expected": 40.5}, {"input": [6.0, 41.0], "expected": 41.0}, {"input": [6.0, 41.5], "expected": 41.5}, {"input": [6.0, 42.0], "expected": 42.0}, {"input": [6.0, 42.5], "expected": 42.5}, {"input": [6.0, 43.0], "expected": 43.0}, {"input": [6.0, 43.5], "expected": 43.5}, {"input": [6.0, 44.0], "expected": 44.0}, {"input": [6.0, 44.5], "expected": 44.5}, {"input": [6.0, 45.0], "expected": 45.0}, {"input": [6.0, 45.5], "expected": 45.5}, {"input": [6.0, 46.0], "expected": 46.0}, {"input": [6.0, 46.5], "expected": 46.5}, {"input": [6.0, 47.0], "expected": 47.0}, {"input": [6.0, 47.5], "expected": 47.5}, {"input": [6.0, 48.0], "expected": 48.0}, {"input": [6.0, 48.5], "expected": 48.5}, {"input": [6.0, 49.0], "expected": 49.0}, {"input": [6.0, 49.5], "expected": 49.5}, {"input": [6.0, 50.0], "expected": 50.0}, {"input": [6.0, 50.5], "expected": 50.5}, {"input": [6.0, 51.0], "expected": 51.0}, {"input": [6.0, 51.5], "expected": 51.5}, {"input": [6.0, 52.0], "expected": 52.0}, {"input": [6.0, 52.5], "expected": 52.5}, {"input": [6.0, 53.0], "expected": 53.0}, {"input": [6.0, 53.5], "expected": 53.5}, {"input": [6.0, 54.0], "expected": 54.0}, {"input": [6.0, 54.5], "expected": 54.5}, {"input": [6.0, 55.0], "expected": 55.0}, {"input": [6.0, 55.5], "expected": 55.5}, {"input": [6.0, 56.0], "expected": 56.0}, {"input": [6.0, 56.5], "expected": 56.5}, {"input": [6.0, 57.0], "expected": 57.0}, {"input": [6.0, 57.5], "expected": 57.5}, {"input": [6.0, 58.0], "expected": 58.0}, {"input": [6.0, 58.5], "expected": 58.5}, {"input": [6.0, 59.0], "expected": 59.0}, {"input": [6.0, 59.5], "expected": 59.5}, {"input": [6.0, 60.0], "expected": 60.0}, {"input": [6.0, 60.5], "expected": 60.5}, {"input": [6.0, 61.0], "expected": 61.0}, {"input": [6.0, 61.5], "expected": 61.5}, {"input": [6.0, 62.0], "expected": 62.0}, {"input": [6.0, 62.5], "expected": 62.5}, {"input": [6.0, 63.0], "expected": 63.0}, {"input": [6.0, 63.5], "expected": 63.5}, {"input": [6.0, 64.0], "expected": 64.0}, {"input": [6.0, 64.5], "expected": 64.5}, {"input": [6.0, 65.0], "expected": 65.0}, {"input": [6.0, 65.5], "expected": 65.5}, {"input": [6.0, 66.0], "expected": 66.0}, {"input": [6.0, 66.5], "expected": 66.5}, {"input": [6.0, 67.0], "expected": 67.0}, {"input": [6.0, 67.5], "expected": 67.5}, {"input": [6.0, 68.0], "expected": 68.0}, {"input": [6.0, 68.5], "expected": 68.5}, {"input": [6.0, 69.0], "expected": 69.0}, {"input": [6.0, 69.5], "expected": 69.5}, {"input": [6.0, 70.0], "expected": 70.0}, {"input": [6.0, 70.5], "expected": 70.5}, {"input": [6.0, 71.0], "expected": 71.0}, {"input": [6.0, 71.5], "expected": 71.5}, {"input": [6.0, 72.0], "expected": 72.0}, {"input": [6.0, 72.5], "expected": 72.5}, {"input": [6.0, 73.0], "expected": 73.0}, {"input": [6.0, 73.5], "expected": 73.5}, {"input": [6.0, 74.0], "expected": 74.0}, {"input": [6.0, 74.5], "expected": 74.5}, {"input": [6.0, 75.0], "expected": 75.0}, {"input": [6.0, 75.5], "expected": 75.5}, {"input": [6.0, 76.0], "expected": 76.0}, {"input": [6.0, 76.5], "expected": 76.5}, {"input": [6.0, 77.0], "expected": 77.0}, {"input": [6.0, 77.5], "expected": 77.5}, {"input": [6.0, 78.0], "expected": 78.0}, {"input": [6.0, 78.5], "expected": 78.5}, {"input": [6.0, 79.0], "expected": 79.0}, {"input": [6.0, 79.5], "expected": 79.5}, {"input": [6.0, 80.0], "expected": 80.0}, {"input": [6.0, 80.5], "expected": 80.5}, {"input": [6.0, 81.0], "expected": 81.0}, {"input": [6.0, 81.5], "expected": 81.5}, {"input": [6.0, 82.0], "expected": 82.0}, {"input": [6.0, 82.5], "expected": 82.5}, {"input": [6.0, 83.0], "expected": 83.0}, {"input": [6.0, 83.5], "expected": 83.5}, {"input": [6.0, 84.0], "expected": 84.0}, {"input": [6.0, 84.5], "expected": 84.5}, {"input": [6.0, 85.0], "expected": 85.0}, {"input": [6.0, 85.5], "expected": 85.5}, {"input": [6.0, 86.0], "expected": 86.0}, {"input": [6.0, 86.5], "expected": 86.5}, {"input": [6.0, 87.0], "expected": 87.0}, {"input": [6.0, 87.5], "expected": 87.5}, {"input": [6.0, 88.0], "expected": 88.0}, {"input": [6.0, 88.5], "expected": 88.5}, {"input": [6.0, 89.0], "expected": 89.0}, {"input": [6.0, 89.5], "expected": 89.5}, {"input": [6.0, 90.0], "expected": 90.0}, {"input": [6.0, 90.5], "expected": 90.5}, {"input": [6.0, 91.0], "expected": 91.0}, {"input": [6.0, 91.5], "expected": 91.5}, {"input": [6.0, 92.0], "expected": 92.0}, {"input": [6.0, 92.5], "expected": 92.5}, {"input": [6.0, 93.0], "expected": 93.0}, {"input": [6.0, 93.5], "expected": 93.5}, {"input": [6.0, 94.0], "expected": 94.0}, {"input": [6.0, 94.5], "expected": 94.5}, {"input": [6.0, 95.0], "expected": 95.0}, {"input": [6.0, 95.5], "expected": 95.5}, {"input": [6.0, 96.0], "expected": 96.0}, {"input": [6.0, 96.5], "expected": 96.5}, {"input": [6.0, 97.0], "expected": 97.0}, {"input": [6.0, 97.5], "expected": 97.5}, {"input": [6.0, 98.0], "expected": 98.0}, {"input": [6.0, 98.5], "expected": 98.5}, {"input": [6.0, 99.0], "expected": 99.0}, {"input": [6.0, 99.5], "expected": 99.5}, {"input": [6.5, -100.0], "expected": 6.5}, {"input": [6.5, -99.5], "expected": 6.5}, {"input": [6.5, -99.0], "expected": 6.5}, {"input": [6.5, -98.5], "expected": 6.5}, {"input": [6.5, -98.0], "expected": 6.5}, {"input": [6.5, -97.5], "expected": 6.5}, {"input": [6.5, -97.0], "expected": 6.5}, {"input": [6.5, -96.5], "expected": 6.5}, {"input": [6.5, -96.0], "expected": 6.5}, {"input": [6.5, -95.5], "expected": 6.5}, {"input": [6.5, -95.0], "expected": 6.5}, {"input": [6.5, -94.5], "expected": 6.5}, {"input": [6.5, -94.0], "expected": 6.5}, {"input": [6.5, -93.5], "expected": 6.5}, {"input": [6.5, -93.0], "expected": 6.5}, {"input": [6.5, -92.5], "expected": 6.5}, {"input": [6.5, -92.0], "expected": 6.5}, {"input": [6.5, -91.5], "expected": 6.5}, {"input": [6.5, -91.0], "expected": 6.5}, {"input": [6.5, -90.5], "expected": 6.5}, {"input": [6.5, -90.0], "expected": 6.5}, {"input": [6.5, -89.5], "expected": 6.5}, {"input": [6.5, -89.0], "expected": 6.5}, {"input": [6.5, -88.5], "expected": 6.5}, {"input": [6.5, -88.0], "expected": 6.5}, {"input": [6.5, -87.5], "expected": 6.5}, {"input": [6.5, -87.0], "expected": 6.5}, {"input": [6.5, -86.5], "expected": 6.5}, {"input": [6.5, -86.0], "expected": 6.5}, {"input": [6.5, -85.5], "expected": 6.5}, {"input": [6.5, -85.0], "expected": 6.5}, {"input": [6.5, -84.5], "expected": 6.5}, {"input": [6.5, -84.0], "expected": 6.5}, {"input": [6.5, -83.5], "expected": 6.5}, {"input": [6.5, -83.0], "expected": 6.5}, {"input": [6.5, -82.5], "expected": 6.5}, {"input": [6.5, -82.0], "expected": 6.5}, {"input": [6.5, -81.5], "expected": 6.5}, {"input": [6.5, -81.0], "expected": 6.5}, {"input": [6.5, -80.5], "expected": 6.5}, {"input": [6.5, -80.0], "expected": 6.5}, {"input": [6.5, -79.5], "expected": 6.5}, {"input": [6.5, -79.0], "expected": 6.5}, {"input": [6.5, -78.5], "expected": 6.5}, {"input": [6.5, -78.0], "expected": 6.5}, {"input": [6.5, -77.5], "expected": 6.5}, {"input": [6.5, -77.0], "expected": 6.5}, {"input": [6.5, -76.5], "expected": 6.5}, {"input": [6.5, -76.0], "expected": 6.5}, {"input": [6.5, -75.5], "expected": 6.5}, {"input": [6.5, -75.0], "expected": 6.5}, {"input": [6.5, -74.5], "expected": 6.5}, {"input": [6.5, -74.0], "expected": 6.5}, {"input": [6.5, -73.5], "expected": 6.5}, {"input": [6.5, -73.0], "expected": 6.5}, {"input": [6.5, -72.5], "expected": 6.5}, {"input": [6.5, -72.0], "expected": 6.5}, {"input": [6.5, -71.5], "expected": 6.5}, {"input": [6.5, -71.0], "expected": 6.5}, {"input": [6.5, -70.5], "expected": 6.5}, {"input": [6.5, -70.0], "expected": 6.5}, {"input": [6.5, -69.5], "expected": 6.5}, {"input": [6.5, -69.0], "expected": 6.5}, {"input": [6.5, -68.5], "expected": 6.5}, {"input": [6.5, -68.0], "expected": 6.5}, {"input": [6.5, -67.5], "expected": 6.5}, {"input": [6.5, -67.0], "expected": 6.5}, {"input": [6.5, -66.5], "expected": 6.5}, {"input": [6.5, -66.0], "expected": 6.5}, {"input": [6.5, -65.5], "expected": 6.5}, {"input": [6.5, -65.0], "expected": 6.5}, {"input": [6.5, -64.5], "expected": 6.5}, {"input": [6.5, -64.0], "expected": 6.5}, {"input": [6.5, -63.5], "expected": 6.5}, {"input": [6.5, -63.0], "expected": 6.5}, {"input": [6.5, -62.5], "expected": 6.5}, {"input": [6.5, -62.0], "expected": 6.5}, {"input": [6.5, -61.5], "expected": 6.5}, {"input": [6.5, -61.0], "expected": 6.5}, {"input": [6.5, -60.5], "expected": 6.5}, {"input": [6.5, -60.0], "expected": 6.5}, {"input": [6.5, -59.5], "expected": 6.5}, {"input": [6.5, -59.0], "expected": 6.5}, {"input": [6.5, -58.5], "expected": 6.5}, {"input": [6.5, -58.0], "expected": 6.5}, {"input": [6.5, -57.5], "expected": 6.5}, {"input": [6.5, -57.0], "expected": 6.5}, {"input": [6.5, -56.5], "expected": 6.5}, {"input": [6.5, -56.0], "expected": 6.5}, {"input": [6.5, -55.5], "expected": 6.5}, {"input": [6.5, -55.0], "expected": 6.5}, {"input": [6.5, -54.5], "expected": 6.5}, {"input": [6.5, -54.0], "expected": 6.5}, {"input": [6.5, -53.5], "expected": 6.5}, {"input": [6.5, -53.0], "expected": 6.5}, {"input": [6.5, -52.5], "expected": 6.5}, {"input": [6.5, -52.0], "expected": 6.5}, {"input": [6.5, -51.5], "expected": 6.5}, {"input": [6.5, -51.0], "expected": 6.5}, {"input": [6.5, -50.5], "expected": 6.5}, {"input": [6.5, -50.0], "expected": 6.5}, {"input": [6.5, -49.5], "expected": 6.5}, {"input": [6.5, -49.0], "expected": 6.5}, {"input": [6.5, -48.5], "expected": 6.5}, {"input": [6.5, -48.0], "expected": 6.5}, {"input": [6.5, -47.5], "expected": 6.5}, {"input": [6.5, -47.0], "expected": 6.5}, {"input": [6.5, -46.5], "expected": 6.5}, {"input": [6.5, -46.0], "expected": 6.5}, {"input": [6.5, -45.5], "expected": 6.5}, {"input": [6.5, -45.0], "expected": 6.5}, {"input": [6.5, -44.5], "expected": 6.5}, {"input": [6.5, -44.0], "expected": 6.5}, {"input": [6.5, -43.5], "expected": 6.5}, {"input": [6.5, -43.0], "expected": 6.5}, {"input": [6.5, -42.5], "expected": 6.5}, {"input": [6.5, -42.0], "expected": 6.5}, {"input": [6.5, -41.5], "expected": 6.5}, {"input": [6.5, -41.0], "expected": 6.5}, {"input": [6.5, -40.5], "expected": 6.5}, {"input": [6.5, -40.0], "expected": 6.5}, {"input": [6.5, -39.5], "expected": 6.5}, {"input": [6.5, -39.0], "expected": 6.5}, {"input": [6.5, -38.5], "expected": 6.5}, {"input": [6.5, -38.0], "expected": 6.5}, {"input": [6.5, -37.5], "expected": 6.5}, {"input": [6.5, -37.0], "expected": 6.5}, {"input": [6.5, -36.5], "expected": 6.5}, {"input": [6.5, -36.0], "expected": 6.5}, {"input": [6.5, -35.5], "expected": 6.5}, {"input": [6.5, -35.0], "expected": 6.5}, {"input": [6.5, -34.5], "expected": 6.5}, {"input": [6.5, -34.0], "expected": 6.5}, {"input": [6.5, -33.5], "expected": 6.5}, {"input": [6.5, -33.0], "expected": 6.5}, {"input": [6.5, -32.5], "expected": 6.5}, {"input": [6.5, -32.0], "expected": 6.5}, {"input": [6.5, -31.5], "expected": 6.5}, {"input": [6.5, -31.0], "expected": 6.5}, {"input": [6.5, -30.5], "expected": 6.5}, {"input": [6.5, -30.0], "expected": 6.5}, {"input": [6.5, -29.5], "expected": 6.5}, {"input": [6.5, -29.0], "expected": 6.5}, {"input": [6.5, -28.5], "expected": 6.500000000000001}, {"input": [6.5, -28.0], "expected": 6.500000000000001}, {"input": [6.5, -27.5], "expected": 6.500000000000002}, {"input": [6.5, -27.0], "expected": 6.500000000000003}, {"input": [6.5, -26.5], "expected": 6.500000000000004}, {"input": [6.5, -26.0], "expected": 6.500000000000008}, {"input": [6.5, -25.5], "expected": 6.500000000000012}, {"input": [6.5, -25.0], "expected": 6.500000000000021}, {"input": [6.5, -24.5], "expected": 6.500000000000035}, {"input": [6.5, -24.0], "expected": 6.500000000000057}, {"input": [6.5, -23.5], "expected": 6.500000000000093}, {"input": [6.5, -23.0], "expected": 6.5000000000001545}, {"input": [6.5, -22.5], "expected": 6.500000000000254}, {"input": [6.5, -22.0], "expected": 6.500000000000419}, {"input": [6.5, -21.5], "expected": 6.500000000000691}, {"input": [6.5, -21.0], "expected": 6.50000000000114}, {"input": [6.5, -20.5], "expected": 6.500000000001879}, {"input": [6.5, -20.0], "expected": 6.500000000003099}, {"input": [6.5, -19.5], "expected": 6.500000000005109}, {"input": [6.5, -19.0], "expected": 6.5000000000084235}, {"input": [6.5, -18.5], "expected": 6.500000000013888}, {"input": [6.5, -18.0], "expected": 6.500000000022897}, {"input": [6.5, -17.5], "expected": 6.500000000037751}, {"input": [6.5, -17.0], "expected": 6.500000000062242}, {"input": [6.5, -16.5], "expected": 6.500000000102618}, {"input": [6.5, -16.0], "expected": 6.50000000016919}, {"input": [6.5, -15.5], "expected": 6.500000000278947}, {"input": [6.5, -15.0], "expected": 6.500000000459906}, {"input": [6.5, -14.5], "expected": 6.500000000758256}, {"input": [6.5, -14.0], "expected": 6.500000001250153}, {"input": [6.5, -13.5], "expected": 6.500000002061154}, {"input": [6.5, -13.0], "expected": 6.5000000033982674}, {"input": [6.5, -12.5], "expected": 6.5000000056027964}, {"input": [6.5, -12.0], "expected": 6.50000000923745}, {"input": [6.5, -11.5], "expected": 6.50000001522998}, {"input": [6.5, -11.0], "expected": 6.500000025109991}, {"input": [6.5, -10.5], "expected": 6.500000041399376}, {"input": [6.5, -10.0], "expected": 6.500000068256031}, {"input": [6.5, -9.5], "expected": 6.500000112535169}, {"input": [6.5, -9.0], "expected": 6.500000185539119}, {"input": [6.5, -8.5], "expected": 6.500000305902273}, {"input": [6.5, -8.0], "expected": 6.500000504347535}, {"input": [6.5, -7.5], "expected": 6.500000831528373}, {"input": [6.5, -7.0], "expected": 6.500001370958147}, {"input": [6.5, -6.5], "expected": 6.500002260326853}, {"input": [6.5, -6.0], "expected": 6.500003726646228}, {"input": [6.5, -5.5], "expected": 6.5000061441934776}, {"input": [6.5, -5.0], "expected": 6.5000101300422894}, {"input": [6.5, -4.5], "expected": 6.500016701561319}, {"input": [6.5, -4.0], "expected": 6.500027536070228}, {"input": [6.5, -3.5], "expected": 6.500045398899217}, {"input": [6.5, -3.0], "expected": 6.500074849028629}, {"input": [6.5, -2.5], "expected": 6.500123402189724}, {"input": [6.5, -2.0], "expected": 6.5002034476721295}, {"input": [6.5, -1.5], "expected": 6.500335406372896}, {"input": [6.5, -1.0], "expected": 6.500552931475361}, {"input": [6.5, -0.5], "expected": 6.500911466453775}, {"input": [6.5, 0.0], "expected": 6.501502310159754}, {"input": [6.5, 0.5], "expected": 6.50247568513773}, {"input": [6.5, 1.0], "expected": 6.504078443270571}, {"input": [6.5, 1.5], "expected": 6.506715348489118}, {"input": [6.5, 2.0], "expected": 6.511047744848594}, {"input": [6.5, 2.5], "expected": 6.5181499279178094}, {"input": [6.5, 3.0], "expected": 6.529750418272621}, {"input": [6.5, 3.5], "expected": 6.548587351573742}, {"input": [6.5, 4.0], "expected": 6.57888973429255}, {"input": [6.5, 4.5], "expected": 6.626928011042972}, {"input": [6.5, 5.0], "expected": 6.701413277982752}, {"input": [6.5, 5.5], "expected": 6.813261687518223}, {"input": [6.5, 6.0], "expected": 6.9740769841801065}, {"input": [6.5, 6.5], "expected": 7.193147180559945}, {"input": [6.5, 7.0], "expected": 7.4740769841801065}, {"input": [6.5, 7.5], "expected": 7.813261687518223}, {"input": [6.5, 8.0], "expected": 8.201413277982752}, {"input": [6.5, 8.5], "expected": 8.626928011042972}, {"input": [6.5, 9.0], "expected": 9.078889734292549}, {"input": [6.5, 9.5], "expected": 9.548587351573742}, {"input": [6.5, 10.0], "expected": 10.02975041827262}, {"input": [6.5, 10.5], "expected": 10.51814992791781}, {"input": [6.5, 11.0], "expected": 11.011047744848593}, {"input": [6.5, 11.5], "expected": 11.506715348489118}, {"input": [6.5, 12.0], "expected": 12.00407844327057}, {"input": [6.5, 12.5], "expected": 12.50247568513773}, {"input": [6.5, 13.0], "expected": 13.001502310159754}, {"input": [6.5, 13.5], "expected": 13.500911466453774}, {"input": [6.5, 14.0], "expected": 14.000552931475362}, {"input": [6.5, 14.5], "expected": 14.500335406372896}, {"input": [6.5, 15.0], "expected": 15.00020344767213}, {"input": [6.5, 15.5], "expected": 15.500123402189724}, {"input": [6.5, 16.0], "expected": 16.00007484902863}, {"input": [6.5, 16.5], "expected": 16.500045398899218}, {"input": [6.5, 17.0], "expected": 17.000027536070228}, {"input": [6.5, 17.5], "expected": 17.500016701561318}, {"input": [6.5, 18.0], "expected": 18.00001013004229}, {"input": [6.5, 18.5], "expected": 18.500006144193478}, {"input": [6.5, 19.0], "expected": 19.000003726646227}, {"input": [6.5, 19.5], "expected": 19.500002260326852}, {"input": [6.5, 20.0], "expected": 20.000001370958145}, {"input": [6.5, 20.5], "expected": 20.500000831528375}, {"input": [6.5, 21.0], "expected": 21.000000504347536}, {"input": [6.5, 21.5], "expected": 21.500000305902272}, {"input": [6.5, 22.0], "expected": 22.00000018553912}, {"input": [6.5, 22.5], "expected": 22.50000011253517}, {"input": [6.5, 23.0], "expected": 23.000000068256032}, {"input": [6.5, 23.5], "expected": 23.500000041399375}, {"input": [6.5, 24.0], "expected": 24.00000002510999}, {"input": [6.5, 24.5], "expected": 24.50000001522998}, {"input": [6.5, 25.0], "expected": 25.00000000923745}, {"input": [6.5, 25.5], "expected": 25.500000005602796}, {"input": [6.5, 26.0], "expected": 26.000000003398267}, {"input": [6.5, 26.5], "expected": 26.500000002061153}, {"input": [6.5, 27.0], "expected": 27.000000001250154}, {"input": [6.5, 27.5], "expected": 27.500000000758256}, {"input": [6.5, 28.0], "expected": 28.000000000459906}, {"input": [6.5, 28.5], "expected": 28.50000000027895}, {"input": [6.5, 29.0], "expected": 29.00000000016919}, {"input": [6.5, 29.5], "expected": 29.50000000010262}, {"input": [6.5, 30.0], "expected": 30.00000000006224}, {"input": [6.5, 30.5], "expected": 30.50000000003775}, {"input": [6.5, 31.0], "expected": 31.000000000022897}, {"input": [6.5, 31.5], "expected": 31.500000000013888}, {"input": [6.5, 32.0], "expected": 32.00000000000842}, {"input": [6.5, 32.5], "expected": 32.50000000000511}, {"input": [6.5, 33.0], "expected": 33.0000000000031}, {"input": [6.5, 33.5], "expected": 33.50000000000188}, {"input": [6.5, 34.0], "expected": 34.00000000000114}, {"input": [6.5, 34.5], "expected": 34.50000000000069}, {"input": [6.5, 35.0], "expected": 35.00000000000042}, {"input": [6.5, 35.5], "expected": 35.500000000000256}, {"input": [6.5, 36.0], "expected": 36.000000000000156}, {"input": [6.5, 36.5], "expected": 36.50000000000009}, {"input": [6.5, 37.0], "expected": 37.00000000000006}, {"input": [6.5, 37.5], "expected": 37.500000000000036}, {"input": [6.5, 38.0], "expected": 38.00000000000002}, {"input": [6.5, 38.5], "expected": 38.500000000000014}, {"input": [6.5, 39.0], "expected": 39.00000000000001}, {"input": [6.5, 39.5], "expected": 39.50000000000001}, {"input": [6.5, 40.0], "expected": 40.0}, {"input": [6.5, 40.5], "expected": 40.5}, {"input": [6.5, 41.0], "expected": 41.0}, {"input": [6.5, 41.5], "expected": 41.5}, {"input": [6.5, 42.0], "expected": 42.0}, {"input": [6.5, 42.5], "expected": 42.5}, {"input": [6.5, 43.0], "expected": 43.0}, {"input": [6.5, 43.5], "expected": 43.5}, {"input": [6.5, 44.0], "expected": 44.0}, {"input": [6.5, 44.5], "expected": 44.5}, {"input": [6.5, 45.0], "expected": 45.0}, {"input": [6.5, 45.5], "expected": 45.5}, {"input": [6.5, 46.0], "expected": 46.0}, {"input": [6.5, 46.5], "expected": 46.5}, {"input": [6.5, 47.0], "expected": 47.0}, {"input": [6.5, 47.5], "expected": 47.5}, {"input": [6.5, 48.0], "expected": 48.0}, {"input": [6.5, 48.5], "expected": 48.5}, {"input": [6.5, 49.0], "expected": 49.0}, {"input": [6.5, 49.5], "expected": 49.5}, {"input": [6.5, 50.0], "expected": 50.0}, {"input": [6.5, 50.5], "expected": 50.5}, {"input": [6.5, 51.0], "expected": 51.0}, {"input": [6.5, 51.5], "expected": 51.5}, {"input": [6.5, 52.0], "expected": 52.0}, {"input": [6.5, 52.5], "expected": 52.5}, {"input": [6.5, 53.0], "expected": 53.0}, {"input": [6.5, 53.5], "expected": 53.5}, {"input": [6.5, 54.0], "expected": 54.0}, {"input": [6.5, 54.5], "expected": 54.5}, {"input": [6.5, 55.0], "expected": 55.0}, {"input": [6.5, 55.5], "expected": 55.5}, {"input": [6.5, 56.0], "expected": 56.0}, {"input": [6.5, 56.5], "expected": 56.5}, {"input": [6.5, 57.0], "expected": 57.0}, {"input": [6.5, 57.5], "expected": 57.5}, {"input": [6.5, 58.0], "expected": 58.0}, {"input": [6.5, 58.5], "expected": 58.5}, {"input": [6.5, 59.0], "expected": 59.0}, {"input": [6.5, 59.5], "expected": 59.5}, {"input": [6.5, 60.0], "expected": 60.0}, {"input": [6.5, 60.5], "expected": 60.5}, {"input": [6.5, 61.0], "expected": 61.0}, {"input": [6.5, 61.5], "expected": 61.5}, {"input": [6.5, 62.0], "expected": 62.0}, {"input": [6.5, 62.5], "expected": 62.5}, {"input": [6.5, 63.0], "expected": 63.0}, {"input": [6.5, 63.5], "expected": 63.5}, {"input": [6.5, 64.0], "expected": 64.0}, {"input": [6.5, 64.5], "expected": 64.5}, {"input": [6.5, 65.0], "expected": 65.0}, {"input": [6.5, 65.5], "expected": 65.5}, {"input": [6.5, 66.0], "expected": 66.0}, {"input": [6.5, 66.5], "expected": 66.5}, {"input": [6.5, 67.0], "expected": 67.0}, {"input": [6.5, 67.5], "expected": 67.5}, {"input": [6.5, 68.0], "expected": 68.0}, {"input": [6.5, 68.5], "expected": 68.5}, {"input": [6.5, 69.0], "expected": 69.0}, {"input": [6.5, 69.5], "expected": 69.5}, {"input": [6.5, 70.0], "expected": 70.0}, {"input": [6.5, 70.5], "expected": 70.5}, {"input": [6.5, 71.0], "expected": 71.0}, {"input": [6.5, 71.5], "expected": 71.5}, {"input": [6.5, 72.0], "expected": 72.0}, {"input": [6.5, 72.5], "expected": 72.5}, {"input": [6.5, 73.0], "expected": 73.0}, {"input": [6.5, 73.5], "expected": 73.5}, {"input": [6.5, 74.0], "expected": 74.0}, {"input": [6.5, 74.5], "expected": 74.5}, {"input": [6.5, 75.0], "expected": 75.0}, {"input": [6.5, 75.5], "expected": 75.5}, {"input": [6.5, 76.0], "expected": 76.0}, {"input": [6.5, 76.5], "expected": 76.5}, {"input": [6.5, 77.0], "expected": 77.0}, {"input": [6.5, 77.5], "expected": 77.5}, {"input": [6.5, 78.0], "expected": 78.0}, {"input": [6.5, 78.5], "expected": 78.5}, {"input": [6.5, 79.0], "expected": 79.0}, {"input": [6.5, 79.5], "expected": 79.5}, {"input": [6.5, 80.0], "expected": 80.0}, {"input": [6.5, 80.5], "expected": 80.5}, {"input": [6.5, 81.0], "expected": 81.0}, {"input": [6.5, 81.5], "expected": 81.5}, {"input": [6.5, 82.0], "expected": 82.0}, {"input": [6.5, 82.5], "expected": 82.5}, {"input": [6.5, 83.0], "expected": 83.0}, {"input": [6.5, 83.5], "expected": 83.5}, {"input": [6.5, 84.0], "expected": 84.0}, {"input": [6.5, 84.5], "expected": 84.5}, {"input": [6.5, 85.0], "expected": 85.0}, {"input": [6.5, 85.5], "expected": 85.5}, {"input": [6.5, 86.0], "expected": 86.0}, {"input": [6.5, 86.5], "expected": 86.5}, {"input": [6.5, 87.0], "expected": 87.0}, {"input": [6.5, 87.5], "expected": 87.5}, {"input": [6.5, 88.0], "expected": 88.0}, {"input": [6.5, 88.5], "expected": 88.5}, {"input": [6.5, 89.0], "expected": 89.0}, {"input": [6.5, 89.5], "expected": 89.5}, {"input": [6.5, 90.0], "expected": 90.0}, {"input": [6.5, 90.5], "expected": 90.5}, {"input": [6.5, 91.0], "expected": 91.0}, {"input": [6.5, 91.5], "expected": 91.5}, {"input": [6.5, 92.0], "expected": 92.0}, {"input": [6.5, 92.5], "expected": 92.5}, {"input": [6.5, 93.0], "expected": 93.0}, {"input": [6.5, 93.5], "expected": 93.5}, {"input": [6.5, 94.0], "expected": 94.0}, {"input": [6.5, 94.5], "expected": 94.5}, {"input": [6.5, 95.0], "expected": 95.0}, {"input": [6.5, 95.5], "expected": 95.5}, {"input": [6.5, 96.0], "expected": 96.0}, {"input": [6.5, 96.5], "expected": 96.5}, {"input": [6.5, 97.0], "expected": 97.0}, {"input": [6.5, 97.5], "expected": 97.5}, {"input": [6.5, 98.0], "expected": 98.0}, {"input": [6.5, 98.5], "expected": 98.5}, {"input": [6.5, 99.0], "expected": 99.0}, {"input": [6.5, 99.5], "expected": 99.5}, {"input": [7.0, -100.0], "expected": 7.0}, {"input": [7.0, -99.5], "expected": 7.0}, {"input": [7.0, -99.0], "expected": 7.0}, {"input": [7.0, -98.5], "expected": 7.0}, {"input": [7.0, -98.0], "expected": 7.0}, {"input": [7.0, -97.5], "expected": 7.0}, {"input": [7.0, -97.0], "expected": 7.0}, {"input": [7.0, -96.5], "expected": 7.0}, {"input": [7.0, -96.0], "expected": 7.0}, {"input": [7.0, -95.5], "expected": 7.0}, {"input": [7.0, -95.0], "expected": 7.0}, {"input": [7.0, -94.5], "expected": 7.0}, {"input": [7.0, -94.0], "expected": 7.0}, {"input": [7.0, -93.5], "expected": 7.0}, {"input": [7.0, -93.0], "expected": 7.0}, {"input": [7.0, -92.5], "expected": 7.0}, {"input": [7.0, -92.0], "expected": 7.0}, {"input": [7.0, -91.5], "expected": 7.0}, {"input": [7.0, -91.0], "expected": 7.0}, {"input": [7.0, -90.5], "expected": 7.0}, {"input": [7.0, -90.0], "expected": 7.0}, {"input": [7.0, -89.5], "expected": 7.0}, {"input": [7.0, -89.0], "expected": 7.0}, {"input": [7.0, -88.5], "expected": 7.0}, {"input": [7.0, -88.0], "expected": 7.0}, {"input": [7.0, -87.5], "expected": 7.0}, {"input": [7.0, -87.0], "expected": 7.0}, {"input": [7.0, -86.5], "expected": 7.0}, {"input": [7.0, -86.0], "expected": 7.0}, {"input": [7.0, -85.5], "expected": 7.0}, {"input": [7.0, -85.0], "expected": 7.0}, {"input": [7.0, -84.5], "expected": 7.0}, {"input": [7.0, -84.0], "expected": 7.0}, {"input": [7.0, -83.5], "expected": 7.0}, {"input": [7.0, -83.0], "expected": 7.0}, {"input": [7.0, -82.5], "expected": 7.0}, {"input": [7.0, -82.0], "expected": 7.0}, {"input": [7.0, -81.5], "expected": 7.0}, {"input": [7.0, -81.0], "expected": 7.0}, {"input": [7.0, -80.5], "expected": 7.0}, {"input": [7.0, -80.0], "expected": 7.0}, {"input": [7.0, -79.5], "expected": 7.0}, {"input": [7.0, -79.0], "expected": 7.0}, {"input": [7.0, -78.5], "expected": 7.0}, {"input": [7.0, -78.0], "expected": 7.0}, {"input": [7.0, -77.5], "expected": 7.0}, {"input": [7.0, -77.0], "expected": 7.0}, {"input": [7.0, -76.5], "expected": 7.0}, {"input": [7.0, -76.0], "expected": 7.0}, {"input": [7.0, -75.5], "expected": 7.0}, {"input": [7.0, -75.0], "expected": 7.0}, {"input": [7.0, -74.5], "expected": 7.0}, {"input": [7.0, -74.0], "expected": 7.0}, {"input": [7.0, -73.5], "expected": 7.0}, {"input": [7.0, -73.0], "expected": 7.0}, {"input": [7.0, -72.5], "expected": 7.0}, {"input": [7.0, -72.0], "expected": 7.0}, {"input": [7.0, -71.5], "expected": 7.0}, {"input": [7.0, -71.0], "expected": 7.0}, {"input": [7.0, -70.5], "expected": 7.0}, {"input": [7.0, -70.0], "expected": 7.0}, {"input": [7.0, -69.5], "expected": 7.0}, {"input": [7.0, -69.0], "expected": 7.0}, {"input": [7.0, -68.5], "expected": 7.0}, {"input": [7.0, -68.0], "expected": 7.0}, {"input": [7.0, -67.5], "expected": 7.0}, {"input": [7.0, -67.0], "expected": 7.0}, {"input": [7.0, -66.5], "expected": 7.0}, {"input": [7.0, -66.0], "expected": 7.0}, {"input": [7.0, -65.5], "expected": 7.0}, {"input": [7.0, -65.0], "expected": 7.0}, {"input": [7.0, -64.5], "expected": 7.0}, {"input": [7.0, -64.0], "expected": 7.0}, {"input": [7.0, -63.5], "expected": 7.0}, {"input": [7.0, -63.0], "expected": 7.0}, {"input": [7.0, -62.5], "expected": 7.0}, {"input": [7.0, -62.0], "expected": 7.0}, {"input": [7.0, -61.5], "expected": 7.0}, {"input": [7.0, -61.0], "expected": 7.0}, {"input": [7.0, -60.5], "expected": 7.0}, {"input": [7.0, -60.0], "expected": 7.0}, {"input": [7.0, -59.5], "expected": 7.0}, {"input": [7.0, -59.0], "expected": 7.0}, {"input": [7.0, -58.5], "expected": 7.0}, {"input": [7.0, -58.0], "expected": 7.0}, {"input": [7.0, -57.5], "expected": 7.0}, {"input": [7.0, -57.0], "expected": 7.0}, {"input": [7.0, -56.5], "expected": 7.0}, {"input": [7.0, -56.0], "expected": 7.0}, {"input": [7.0, -55.5], "expected": 7.0}, {"input": [7.0, -55.0], "expected": 7.0}, {"input": [7.0, -54.5], "expected": 7.0}, {"input": [7.0, -54.0], "expected": 7.0}, {"input": [7.0, -53.5], "expected": 7.0}, {"input": [7.0, -53.0], "expected": 7.0}, {"input": [7.0, -52.5], "expected": 7.0}, {"input": [7.0, -52.0], "expected": 7.0}, {"input": [7.0, -51.5], "expected": 7.0}, {"input": [7.0, -51.0], "expected": 7.0}, {"input": [7.0, -50.5], "expected": 7.0}, {"input": [7.0, -50.0], "expected": 7.0}, {"input": [7.0, -49.5], "expected": 7.0}, {"input": [7.0, -49.0], "expected": 7.0}, {"input": [7.0, -48.5], "expected": 7.0}, {"input": [7.0, -48.0], "expected": 7.0}, {"input": [7.0, -47.5], "expected": 7.0}, {"input": [7.0, -47.0], "expected": 7.0}, {"input": [7.0, -46.5], "expected": 7.0}, {"input": [7.0, -46.0], "expected": 7.0}, {"input": [7.0, -45.5], "expected": 7.0}, {"input": [7.0, -45.0], "expected": 7.0}, {"input": [7.0, -44.5], "expected": 7.0}, {"input": [7.0, -44.0], "expected": 7.0}, {"input": [7.0, -43.5], "expected": 7.0}, {"input": [7.0, -43.0], "expected": 7.0}, {"input": [7.0, -42.5], "expected": 7.0}, {"input": [7.0, -42.0], "expected": 7.0}, {"input": [7.0, -41.5], "expected": 7.0}, {"input": [7.0, -41.0], "expected": 7.0}, {"input": [7.0, -40.5], "expected": 7.0}, {"input": [7.0, -40.0], "expected": 7.0}, {"input": [7.0, -39.5], "expected": 7.0}, {"input": [7.0, -39.0], "expected": 7.0}, {"input": [7.0, -38.5], "expected": 7.0}, {"input": [7.0, -38.0], "expected": 7.0}, {"input": [7.0, -37.5], "expected": 7.0}, {"input": [7.0, -37.0], "expected": 7.0}, {"input": [7.0, -36.5], "expected": 7.0}, {"input": [7.0, -36.0], "expected": 7.0}, {"input": [7.0, -35.5], "expected": 7.0}, {"input": [7.0, -35.0], "expected": 7.0}, {"input": [7.0, -34.5], "expected": 7.0}, {"input": [7.0, -34.0], "expected": 7.0}, {"input": [7.0, -33.5], "expected": 7.0}, {"input": [7.0, -33.0], "expected": 7.0}, {"input": [7.0, -32.5], "expected": 7.0}, {"input": [7.0, -32.0], "expected": 7.0}, {"input": [7.0, -31.5], "expected": 7.0}, {"input": [7.0, -31.0], "expected": 7.0}, {"input": [7.0, -30.5], "expected": 7.0}, {"input": [7.0, -30.0], "expected": 7.0}, {"input": [7.0, -29.5], "expected": 7.0}, {"input": [7.0, -29.0], "expected": 7.0}, {"input": [7.0, -28.5], "expected": 7.0}, {"input": [7.0, -28.0], "expected": 7.000000000000001}, {"input": [7.0, -27.5], "expected": 7.000000000000001}, {"input": [7.0, -27.0], "expected": 7.000000000000002}, {"input": [7.0, -26.5], "expected": 7.000000000000003}, {"input": [7.0, -26.0], "expected": 7.000000000000004}, {"input": [7.0, -25.5], "expected": 7.000000000000008}, {"input": [7.0, -25.0], "expected": 7.000000000000012}, {"input": [7.0, -24.5], "expected": 7.000000000000021}, {"input": [7.0, -24.0], "expected": 7.000000000000035}, {"input": [7.0, -23.5], "expected": 7.000000000000057}, {"input": [7.0, -23.0], "expected": 7.000000000000093}, {"input": [7.0, -22.5], "expected": 7.0000000000001545}, {"input": [7.0, -22.0], "expected": 7.000000000000254}, {"input": [7.0, -21.5], "expected": 7.000000000000419}, {"input": [7.0, -21.0], "expected": 7.000000000000691}, {"input": [7.0, -20.5], "expected": 7.00000000000114}, {"input": [7.0, -20.0], "expected": 7.000000000001879}, {"input": [7.0, -19.5], "expected": 7.000000000003099}, {"input": [7.0, -19.0], "expected": 7.000000000005109}, {"input": [7.0, -18.5], "expected": 7.0000000000084235}, {"input": [7.0, -18.0], "expected": 7.000000000013888}, {"input": [7.0, -17.5], "expected": 7.000000000022897}, {"input": [7.0, -17.0], "expected": 7.000000000037751}, {"input": [7.0, -16.5], "expected": 7.000000000062242}, {"input": [7.0, -16.0], "expected": 7.000000000102618}, {"input": [7.0, -15.5], "expected": 7.00000000016919}, {"input": [7.0, -15.0], "expected": 7.000000000278947}, {"input": [7.0, -14.5], "expected": 7.000000000459906}, {"input": [7.0, -14.0], "expected": 7.000000000758256}, {"input": [7.0, -13.5], "expected": 7.000000001250153}, {"input": [7.0, -13.0], "expected": 7.000000002061154}, {"input": [7.0, -12.5], "expected": 7.0000000033982674}, {"input": [7.0, -12.0], "expected": 7.0000000056027964}, {"input": [7.0, -11.5], "expected": 7.00000000923745}, {"input": [7.0, -11.0], "expected": 7.00000001522998}, {"input": [7.0, -10.5], "expected": 7.000000025109991}, {"input": [7.0, -10.0], "expected": 7.000000041399376}, {"input": [7.0, -9.5], "expected": 7.000000068256031}, {"input": [7.0, -9.0], "expected": 7.000000112535169}, {"input": [7.0, -8.5], "expected": 7.000000185539119}, {"input": [7.0, -8.0], "expected": 7.000000305902273}, {"input": [7.0, -7.5], "expected": 7.000000504347535}, {"input": [7.0, -7.0], "expected": 7.000000831528373}, {"input": [7.0, -6.5], "expected": 7.000001370958147}, {"input": [7.0, -6.0], "expected": 7.000002260326853}, {"input": [7.0, -5.5], "expected": 7.000003726646228}, {"input": [7.0, -5.0], "expected": 7.0000061441934776}, {"input": [7.0, -4.5], "expected": 7.0000101300422894}, {"input": [7.0, -4.0], "expected": 7.000016701561319}, {"input": [7.0, -3.5], "expected": 7.000027536070228}, {"input": [7.0, -3.0], "expected": 7.000045398899217}, {"input": [7.0, -2.5], "expected": 7.000074849028629}, {"input": [7.0, -2.0], "expected": 7.000123402189724}, {"input": [7.0, -1.5], "expected": 7.0002034476721295}, {"input": [7.0, -1.0], "expected": 7.000335406372896}, {"input": [7.0, -0.5], "expected": 7.000552931475361}, {"input": [7.0, 0.0], "expected": 7.000911466453775}, {"input": [7.0, 0.5], "expected": 7.001502310159754}, {"input": [7.0, 1.0], "expected": 7.00247568513773}, {"input": [7.0, 1.5], "expected": 7.004078443270571}, {"input": [7.0, 2.0], "expected": 7.006715348489118}, {"input": [7.0, 2.5], "expected": 7.011047744848594}, {"input": [7.0, 3.0], "expected": 7.0181499279178094}, {"input": [7.0, 3.5], "expected": 7.029750418272621}, {"input": [7.0, 4.0], "expected": 7.048587351573742}, {"input": [7.0, 4.5], "expected": 7.07888973429255}, {"input": [7.0, 5.0], "expected": 7.126928011042972}, {"input": [7.0, 5.5], "expected": 7.201413277982752}, {"input": [7.0, 6.0], "expected": 7.313261687518223}, {"input": [7.0, 6.5], "expected": 7.4740769841801065}, {"input": [7.0, 7.0], "expected": 7.693147180559945}, {"input": [7.0, 7.5], "expected": 7.9740769841801065}, {"input": [7.0, 8.0], "expected": 8.313261687518223}, {"input": [7.0, 8.5], "expected": 8.701413277982752}, {"input": [7.0, 9.0], "expected": 9.126928011042972}, {"input": [7.0, 9.5], "expected": 9.578889734292549}, {"input": [7.0, 10.0], "expected": 10.048587351573742}, {"input": [7.0, 10.5], "expected": 10.52975041827262}, {"input": [7.0, 11.0], "expected": 11.01814992791781}, {"input": [7.0, 11.5], "expected": 11.511047744848593}, {"input": [7.0, 12.0], "expected": 12.006715348489118}, {"input": [7.0, 12.5], "expected": 12.50407844327057}, {"input": [7.0, 13.0], "expected": 13.00247568513773}, {"input": [7.0, 13.5], "expected": 13.501502310159754}, {"input": [7.0, 14.0], "expected": 14.000911466453774}, {"input": [7.0, 14.5], "expected": 14.500552931475362}, {"input": [7.0, 15.0], "expected": 15.000335406372896}, {"input": [7.0, 15.5], "expected": 15.50020344767213}, {"input": [7.0, 16.0], "expected": 16.000123402189722}, {"input": [7.0, 16.5], "expected": 16.50007484902863}, {"input": [7.0, 17.0], "expected": 17.000045398899218}, {"input": [7.0, 17.5], "expected": 17.500027536070228}, {"input": [7.0, 18.0], "expected": 18.000016701561318}, {"input": [7.0, 18.5], "expected": 18.50001013004229}, {"input": [7.0, 19.0], "expected": 19.000006144193478}, {"input": [7.0, 19.5], "expected": 19.500003726646227}, {"input": [7.0, 20.0], "expected": 20.000002260326852}, {"input": [7.0, 20.5], "expected": 20.500001370958145}, {"input": [7.0, 21.0], "expected": 21.000000831528375}, {"input": [7.0, 21.5], "expected": 21.500000504347536}, {"input": [7.0, 22.0], "expected": 22.000000305902272}, {"input": [7.0, 22.5], "expected": 22.50000018553912}, {"input": [7.0, 23.0], "expected": 23.00000011253517}, {"input": [7.0, 23.5], "expected": 23.500000068256032}, {"input": [7.0, 24.0], "expected": 24.000000041399375}, {"input": [7.0, 24.5], "expected": 24.50000002510999}, {"input": [7.0, 25.0], "expected": 25.00000001522998}, {"input": [7.0, 25.5], "expected": 25.50000000923745}, {"input": [7.0, 26.0], "expected": 26.000000005602796}, {"input": [7.0, 26.5], "expected": 26.500000003398267}, {"input": [7.0, 27.0], "expected": 27.000000002061153}, {"input": [7.0, 27.5], "expected": 27.500000001250154}, {"input": [7.0, 28.0], "expected": 28.000000000758256}, {"input": [7.0, 28.5], "expected": 28.500000000459906}, {"input": [7.0, 29.0], "expected": 29.00000000027895}, {"input": [7.0, 29.5], "expected": 29.50000000016919}, {"input": [7.0, 30.0], "expected": 30.00000000010262}, {"input": [7.0, 30.5], "expected": 30.50000000006224}, {"input": [7.0, 31.0], "expected": 31.00000000003775}, {"input": [7.0, 31.5], "expected": 31.500000000022897}, {"input": [7.0, 32.0], "expected": 32.00000000001389}, {"input": [7.0, 32.5], "expected": 32.50000000000842}, {"input": [7.0, 33.0], "expected": 33.00000000000511}, {"input": [7.0, 33.5], "expected": 33.5000000000031}, {"input": [7.0, 34.0], "expected": 34.00000000000188}, {"input": [7.0, 34.5], "expected": 34.50000000000114}, {"input": [7.0, 35.0], "expected": 35.00000000000069}, {"input": [7.0, 35.5], "expected": 35.50000000000042}, {"input": [7.0, 36.0], "expected": 36.000000000000256}, {"input": [7.0, 36.5], "expected": 36.500000000000156}, {"input": [7.0, 37.0], "expected": 37.00000000000009}, {"input": [7.0, 37.5], "expected": 37.50000000000006}, {"input": [7.0, 38.0], "expected": 38.000000000000036}, {"input": [7.0, 38.5], "expected": 38.50000000000002}, {"input": [7.0, 39.0], "expected": 39.000000000000014}, {"input": [7.0, 39.5], "expected": 39.50000000000001}, {"input": [7.0, 40.0], "expected": 40.00000000000001}, {"input": [7.0, 40.5], "expected": 40.5}, {"input": [7.0, 41.0], "expected": 41.0}, {"input": [7.0, 41.5], "expected": 41.5}, {"input": [7.0, 42.0], "expected": 42.0}, {"input": [7.0, 42.5], "expected": 42.5}, {"input": [7.0, 43.0], "expected": 43.0}, {"input": [7.0, 43.5], "expected": 43.5}, {"input": [7.0, 44.0], "expected": 44.0}, {"input": [7.0, 44.5], "expected": 44.5}, {"input": [7.0, 45.0], "expected": 45.0}, {"input": [7.0, 45.5], "expected": 45.5}, {"input": [7.0, 46.0], "expected": 46.0}, {"input": [7.0, 46.5], "expected": 46.5}, {"input": [7.0, 47.0], "expected": 47.0}, {"input": [7.0, 47.5], "expected": 47.5}, {"input": [7.0, 48.0], "expected": 48.0}, {"input": [7.0, 48.5], "expected": 48.5}, {"input": [7.0, 49.0], "expected": 49.0}, {"input": [7.0, 49.5], "expected": 49.5}, {"input": [7.0, 50.0], "expected": 50.0}, {"input": [7.0, 50.5], "expected": 50.5}, {"input": [7.0, 51.0], "expected": 51.0}, {"input": [7.0, 51.5], "expected": 51.5}, {"input": [7.0, 52.0], "expected": 52.0}, {"input": [7.0, 52.5], "expected": 52.5}, {"input": [7.0, 53.0], "expected": 53.0}, {"input": [7.0, 53.5], "expected": 53.5}, {"input": [7.0, 54.0], "expected": 54.0}, {"input": [7.0, 54.5], "expected": 54.5}, {"input": [7.0, 55.0], "expected": 55.0}, {"input": [7.0, 55.5], "expected": 55.5}, {"input": [7.0, 56.0], "expected": 56.0}, {"input": [7.0, 56.5], "expected": 56.5}, {"input": [7.0, 57.0], "expected": 57.0}, {"input": [7.0, 57.5], "expected": 57.5}, {"input": [7.0, 58.0], "expected": 58.0}, {"input": [7.0, 58.5], "expected": 58.5}, {"input": [7.0, 59.0], "expected": 59.0}, {"input": [7.0, 59.5], "expected": 59.5}, {"input": [7.0, 60.0], "expected": 60.0}, {"input": [7.0, 60.5], "expected": 60.5}, {"input": [7.0, 61.0], "expected": 61.0}, {"input": [7.0, 61.5], "expected": 61.5}, {"input": [7.0, 62.0], "expected": 62.0}, {"input": [7.0, 62.5], "expected": 62.5}, {"input": [7.0, 63.0], "expected": 63.0}, {"input": [7.0, 63.5], "expected": 63.5}, {"input": [7.0, 64.0], "expected": 64.0}, {"input": [7.0, 64.5], "expected": 64.5}, {"input": [7.0, 65.0], "expected": 65.0}, {"input": [7.0, 65.5], "expected": 65.5}, {"input": [7.0, 66.0], "expected": 66.0}, {"input": [7.0, 66.5], "expected": 66.5}, {"input": [7.0, 67.0], "expected": 67.0}, {"input": [7.0, 67.5], "expected": 67.5}, {"input": [7.0, 68.0], "expected": 68.0}, {"input": [7.0, 68.5], "expected": 68.5}, {"input": [7.0, 69.0], "expected": 69.0}, {"input": [7.0, 69.5], "expected": 69.5}, {"input": [7.0, 70.0], "expected": 70.0}, {"input": [7.0, 70.5], "expected": 70.5}, {"input": [7.0, 71.0], "expected": 71.0}, {"input": [7.0, 71.5], "expected": 71.5}, {"input": [7.0, 72.0], "expected": 72.0}, {"input": [7.0, 72.5], "expected": 72.5}, {"input": [7.0, 73.0], "expected": 73.0}, {"input": [7.0, 73.5], "expected": 73.5}, {"input": [7.0, 74.0], "expected": 74.0}, {"input": [7.0, 74.5], "expected": 74.5}, {"input": [7.0, 75.0], "expected": 75.0}, {"input": [7.0, 75.5], "expected": 75.5}, {"input": [7.0, 76.0], "expected": 76.0}, {"input": [7.0, 76.5], "expected": 76.5}, {"input": [7.0, 77.0], "expected": 77.0}, {"input": [7.0, 77.5], "expected": 77.5}, {"input": [7.0, 78.0], "expected": 78.0}, {"input": [7.0, 78.5], "expected": 78.5}, {"input": [7.0, 79.0], "expected": 79.0}, {"input": [7.0, 79.5], "expected": 79.5}, {"input": [7.0, 80.0], "expected": 80.0}, {"input": [7.0, 80.5], "expected": 80.5}, {"input": [7.0, 81.0], "expected": 81.0}, {"input": [7.0, 81.5], "expected": 81.5}, {"input": [7.0, 82.0], "expected": 82.0}, {"input": [7.0, 82.5], "expected": 82.5}, {"input": [7.0, 83.0], "expected": 83.0}, {"input": [7.0, 83.5], "expected": 83.5}, {"input": [7.0, 84.0], "expected": 84.0}, {"input": [7.0, 84.5], "expected": 84.5}, {"input": [7.0, 85.0], "expected": 85.0}, {"input": [7.0, 85.5], "expected": 85.5}, {"input": [7.0, 86.0], "expected": 86.0}, {"input": [7.0, 86.5], "expected": 86.5}, {"input": [7.0, 87.0], "expected": 87.0}, {"input": [7.0, 87.5], "expected": 87.5}, {"input": [7.0, 88.0], "expected": 88.0}, {"input": [7.0, 88.5], "expected": 88.5}, {"input": [7.0, 89.0], "expected": 89.0}, {"input": [7.0, 89.5], "expected": 89.5}, {"input": [7.0, 90.0], "expected": 90.0}, {"input": [7.0, 90.5], "expected": 90.5}, {"input": [7.0, 91.0], "expected": 91.0}, {"input": [7.0, 91.5], "expected": 91.5}, {"input": [7.0, 92.0], "expected": 92.0}, {"input": [7.0, 92.5], "expected": 92.5}, {"input": [7.0, 93.0], "expected": 93.0}, {"input": [7.0, 93.5], "expected": 93.5}, {"input": [7.0, 94.0], "expected": 94.0}, {"input": [7.0, 94.5], "expected": 94.5}, {"input": [7.0, 95.0], "expected": 95.0}, {"input": [7.0, 95.5], "expected": 95.5}, {"input": [7.0, 96.0], "expected": 96.0}, {"input": [7.0, 96.5], "expected": 96.5}, {"input": [7.0, 97.0], "expected": 97.0}, {"input": [7.0, 97.5], "expected": 97.5}, {"input": [7.0, 98.0], "expected": 98.0}, {"input": [7.0, 98.5], "expected": 98.5}, {"input": [7.0, 99.0], "expected": 99.0}, {"input": [7.0, 99.5], "expected": 99.5}, {"input": [7.5, -100.0], "expected": 7.5}, {"input": [7.5, -99.5], "expected": 7.5}, {"input": [7.5, -99.0], "expected": 7.5}, {"input": [7.5, -98.5], "expected": 7.5}, {"input": [7.5, -98.0], "expected": 7.5}, {"input": [7.5, -97.5], "expected": 7.5}, {"input": [7.5, -97.0], "expected": 7.5}, {"input": [7.5, -96.5], "expected": 7.5}, {"input": [7.5, -96.0], "expected": 7.5}, {"input": [7.5, -95.5], "expected": 7.5}, {"input": [7.5, -95.0], "expected": 7.5}, {"input": [7.5, -94.5], "expected": 7.5}, {"input": [7.5, -94.0], "expected": 7.5}, {"input": [7.5, -93.5], "expected": 7.5}, {"input": [7.5, -93.0], "expected": 7.5}, {"input": [7.5, -92.5], "expected": 7.5}, {"input": [7.5, -92.0], "expected": 7.5}, {"input": [7.5, -91.5], "expected": 7.5}, {"input": [7.5, -91.0], "expected": 7.5}, {"input": [7.5, -90.5], "expected": 7.5}, {"input": [7.5, -90.0], "expected": 7.5}, {"input": [7.5, -89.5], "expected": 7.5}, {"input": [7.5, -89.0], "expected": 7.5}, {"input": [7.5, -88.5], "expected": 7.5}, {"input": [7.5, -88.0], "expected": 7.5}, {"input": [7.5, -87.5], "expected": 7.5}, {"input": [7.5, -87.0], "expected": 7.5}, {"input": [7.5, -86.5], "expected": 7.5}, {"input": [7.5, -86.0], "expected": 7.5}, {"input": [7.5, -85.5], "expected": 7.5}, {"input": [7.5, -85.0], "expected": 7.5}, {"input": [7.5, -84.5], "expected": 7.5}, {"input": [7.5, -84.0], "expected": 7.5}, {"input": [7.5, -83.5], "expected": 7.5}, {"input": [7.5, -83.0], "expected": 7.5}, {"input": [7.5, -82.5], "expected": 7.5}, {"input": [7.5, -82.0], "expected": 7.5}, {"input": [7.5, -81.5], "expected": 7.5}, {"input": [7.5, -81.0], "expected": 7.5}, {"input": [7.5, -80.5], "expected": 7.5}, {"input": [7.5, -80.0], "expected": 7.5}, {"input": [7.5, -79.5], "expected": 7.5}, {"input": [7.5, -79.0], "expected": 7.5}, {"input": [7.5, -78.5], "expected": 7.5}, {"input": [7.5, -78.0], "expected": 7.5}, {"input": [7.5, -77.5], "expected": 7.5}, {"input": [7.5, -77.0], "expected": 7.5}, {"input": [7.5, -76.5], "expected": 7.5}, {"input": [7.5, -76.0], "expected": 7.5}, {"input": [7.5, -75.5], "expected": 7.5}, {"input": [7.5, -75.0], "expected": 7.5}, {"input": [7.5, -74.5], "expected": 7.5}, {"input": [7.5, -74.0], "expected": 7.5}, {"input": [7.5, -73.5], "expected": 7.5}, {"input": [7.5, -73.0], "expected": 7.5}, {"input": [7.5, -72.5], "expected": 7.5}, {"input": [7.5, -72.0], "expected": 7.5}, {"input": [7.5, -71.5], "expected": 7.5}, {"input": [7.5, -71.0], "expected": 7.5}, {"input": [7.5, -70.5], "expected": 7.5}, {"input": [7.5, -70.0], "expected": 7.5}, {"input": [7.5, -69.5], "expected": 7.5}, {"input": [7.5, -69.0], "expected": 7.5}, {"input": [7.5, -68.5], "expected": 7.5}, {"input": [7.5, -68.0], "expected": 7.5}, {"input": [7.5, -67.5], "expected": 7.5}, {"input": [7.5, -67.0], "expected": 7.5}, {"input": [7.5, -66.5], "expected": 7.5}, {"input": [7.5, -66.0], "expected": 7.5}, {"input": [7.5, -65.5], "expected": 7.5}, {"input": [7.5, -65.0], "expected": 7.5}, {"input": [7.5, -64.5], "expected": 7.5}, {"input": [7.5, -64.0], "expected": 7.5}, {"input": [7.5, -63.5], "expected": 7.5}, {"input": [7.5, -63.0], "expected": 7.5}, {"input": [7.5, -62.5], "expected": 7.5}, {"input": [7.5, -62.0], "expected": 7.5}, {"input": [7.5, -61.5], "expected": 7.5}, {"input": [7.5, -61.0], "expected": 7.5}, {"input": [7.5, -60.5], "expected": 7.5}, {"input": [7.5, -60.0], "expected": 7.5}, {"input": [7.5, -59.5], "expected": 7.5}, {"input": [7.5, -59.0], "expected": 7.5}, {"input": [7.5, -58.5], "expected": 7.5}, {"input": [7.5, -58.0], "expected": 7.5}, {"input": [7.5, -57.5], "expected": 7.5}, {"input": [7.5, -57.0], "expected": 7.5}, {"input": [7.5, -56.5], "expected": 7.5}, {"input": [7.5, -56.0], "expected": 7.5}, {"input": [7.5, -55.5], "expected": 7.5}, {"input": [7.5, -55.0], "expected": 7.5}, {"input": [7.5, -54.5], "expected": 7.5}, {"input": [7.5, -54.0], "expected": 7.5}, {"input": [7.5, -53.5], "expected": 7.5}, {"input": [7.5, -53.0], "expected": 7.5}, {"input": [7.5, -52.5], "expected": 7.5}, {"input": [7.5, -52.0], "expected": 7.5}, {"input": [7.5, -51.5], "expected": 7.5}, {"input": [7.5, -51.0], "expected": 7.5}, {"input": [7.5, -50.5], "expected": 7.5}, {"input": [7.5, -50.0], "expected": 7.5}, {"input": [7.5, -49.5], "expected": 7.5}, {"input": [7.5, -49.0], "expected": 7.5}, {"input": [7.5, -48.5], "expected": 7.5}, {"input": [7.5, -48.0], "expected": 7.5}, {"input": [7.5, -47.5], "expected": 7.5}, {"input": [7.5, -47.0], "expected": 7.5}, {"input": [7.5, -46.5], "expected": 7.5}, {"input": [7.5, -46.0], "expected": 7.5}, {"input": [7.5, -45.5], "expected": 7.5}, {"input": [7.5, -45.0], "expected": 7.5}, {"input": [7.5, -44.5], "expected": 7.5}, {"input": [7.5, -44.0], "expected": 7.5}, {"input": [7.5, -43.5], "expected": 7.5}, {"input": [7.5, -43.0], "expected": 7.5}, {"input": [7.5, -42.5], "expected": 7.5}, {"input": [7.5, -42.0], "expected": 7.5}, {"input": [7.5, -41.5], "expected": 7.5}, {"input": [7.5, -41.0], "expected": 7.5}, {"input": [7.5, -40.5], "expected": 7.5}, {"input": [7.5, -40.0], "expected": 7.5}, {"input": [7.5, -39.5], "expected": 7.5}, {"input": [7.5, -39.0], "expected": 7.5}, {"input": [7.5, -38.5], "expected": 7.5}, {"input": [7.5, -38.0], "expected": 7.5}, {"input": [7.5, -37.5], "expected": 7.5}, {"input": [7.5, -37.0], "expected": 7.5}, {"input": [7.5, -36.5], "expected": 7.5}, {"input": [7.5, -36.0], "expected": 7.5}, {"input": [7.5, -35.5], "expected": 7.5}, {"input": [7.5, -35.0], "expected": 7.5}, {"input": [7.5, -34.5], "expected": 7.5}, {"input": [7.5, -34.0], "expected": 7.5}, {"input": [7.5, -33.5], "expected": 7.5}, {"input": [7.5, -33.0], "expected": 7.5}, {"input": [7.5, -32.5], "expected": 7.5}, {"input": [7.5, -32.0], "expected": 7.5}, {"input": [7.5, -31.5], "expected": 7.5}, {"input": [7.5, -31.0], "expected": 7.5}, {"input": [7.5, -30.5], "expected": 7.5}, {"input": [7.5, -30.0], "expected": 7.5}, {"input": [7.5, -29.5], "expected": 7.5}, {"input": [7.5, -29.0], "expected": 7.5}, {"input": [7.5, -28.5], "expected": 7.5}, {"input": [7.5, -28.0], "expected": 7.5}, {"input": [7.5, -27.5], "expected": 7.500000000000001}, {"input": [7.5, -27.0], "expected": 7.500000000000001}, {"input": [7.5, -26.5], "expected": 7.500000000000002}, {"input": [7.5, -26.0], "expected": 7.500000000000003}, {"input": [7.5, -25.5], "expected": 7.500000000000004}, {"input": [7.5, -25.0], "expected": 7.500000000000008}, {"input": [7.5, -24.5], "expected": 7.500000000000012}, {"input": [7.5, -24.0], "expected": 7.500000000000021}, {"input": [7.5, -23.5], "expected": 7.500000000000035}, {"input": [7.5, -23.0], "expected": 7.500000000000057}, {"input": [7.5, -22.5], "expected": 7.500000000000093}, {"input": [7.5, -22.0], "expected": 7.5000000000001545}, {"input": [7.5, -21.5], "expected": 7.500000000000254}, {"input": [7.5, -21.0], "expected": 7.500000000000419}, {"input": [7.5, -20.5], "expected": 7.500000000000691}, {"input": [7.5, -20.0], "expected": 7.50000000000114}, {"input": [7.5, -19.5], "expected": 7.500000000001879}, {"input": [7.5, -19.0], "expected": 7.500000000003099}, {"input": [7.5, -18.5], "expected": 7.500000000005109}, {"input": [7.5, -18.0], "expected": 7.5000000000084235}, {"input": [7.5, -17.5], "expected": 7.500000000013888}, {"input": [7.5, -17.0], "expected": 7.500000000022897}, {"input": [7.5, -16.5], "expected": 7.500000000037751}, {"input": [7.5, -16.0], "expected": 7.500000000062242}, {"input": [7.5, -15.5], "expected": 7.500000000102618}, {"input": [7.5, -15.0], "expected": 7.50000000016919}, {"input": [7.5, -14.5], "expected": 7.500000000278947}, {"input": [7.5, -14.0], "expected": 7.500000000459906}, {"input": [7.5, -13.5], "expected": 7.500000000758256}, {"input": [7.5, -13.0], "expected": 7.500000001250153}, {"input": [7.5, -12.5], "expected": 7.500000002061154}, {"input": [7.5, -12.0], "expected": 7.5000000033982674}, {"input": [7.5, -11.5], "expected": 7.5000000056027964}, {"input": [7.5, -11.0], "expected": 7.50000000923745}, {"input": [7.5, -10.5], "expected": 7.50000001522998}, {"input": [7.5, -10.0], "expected": 7.500000025109991}, {"input": [7.5, -9.5], "expected": 7.500000041399376}, {"input": [7.5, -9.0], "expected": 7.500000068256031}, {"input": [7.5, -8.5], "expected": 7.500000112535169}, {"input": [7.5, -8.0], "expected": 7.500000185539119}, {"input": [7.5, -7.5], "expected": 7.500000305902273}, {"input": [7.5, -7.0], "expected": 7.500000504347535}, {"input": [7.5, -6.5], "expected": 7.500000831528373}, {"input": [7.5, -6.0], "expected": 7.500001370958147}, {"input": [7.5, -5.5], "expected": 7.500002260326853}, {"input": [7.5, -5.0], "expected": 7.500003726646228}, {"input": [7.5, -4.5], "expected": 7.5000061441934776}, {"input": [7.5, -4.0], "expected": 7.5000101300422894}, {"input": [7.5, -3.5], "expected": 7.500016701561319}, {"input": [7.5, -3.0], "expected": 7.500027536070228}, {"input": [7.5, -2.5], "expected": 7.500045398899217}, {"input": [7.5, -2.0], "expected": 7.500074849028629}, {"input": [7.5, -1.5], "expected": 7.500123402189724}, {"input": [7.5, -1.0], "expected": 7.5002034476721295}, {"input": [7.5, -0.5], "expected": 7.500335406372896}, {"input": [7.5, 0.0], "expected": 7.500552931475361}, {"input": [7.5, 0.5], "expected": 7.500911466453775}, {"input": [7.5, 1.0], "expected": 7.501502310159754}, {"input": [7.5, 1.5], "expected": 7.50247568513773}, {"input": [7.5, 2.0], "expected": 7.504078443270571}, {"input": [7.5, 2.5], "expected": 7.506715348489118}, {"input": [7.5, 3.0], "expected": 7.511047744848594}, {"input": [7.5, 3.5], "expected": 7.5181499279178094}, {"input": [7.5, 4.0], "expected": 7.529750418272621}, {"input": [7.5, 4.5], "expected": 7.548587351573742}, {"input": [7.5, 5.0], "expected": 7.57888973429255}, {"input": [7.5, 5.5], "expected": 7.626928011042972}, {"input": [7.5, 6.0], "expected": 7.701413277982752}, {"input": [7.5, 6.5], "expected": 7.813261687518223}, {"input": [7.5, 7.0], "expected": 7.9740769841801065}, {"input": [7.5, 7.5], "expected": 8.193147180559945}, {"input": [7.5, 8.0], "expected": 8.474076984180106}, {"input": [7.5, 8.5], "expected": 8.813261687518223}, {"input": [7.5, 9.0], "expected": 9.201413277982752}, {"input": [7.5, 9.5], "expected": 9.626928011042972}, {"input": [7.5, 10.0], "expected": 10.078889734292549}, {"input": [7.5, 10.5], "expected": 10.548587351573742}, {"input": [7.5, 11.0], "expected": 11.02975041827262}, {"input": [7.5, 11.5], "expected": 11.51814992791781}, {"input": [7.5, 12.0], "expected": 12.011047744848593}, {"input": [7.5, 12.5], "expected": 12.506715348489118}, {"input": [7.5, 13.0], "expected": 13.00407844327057}, {"input": [7.5, 13.5], "expected": 13.50247568513773}, {"input": [7.5, 14.0], "expected": 14.001502310159754}, {"input": [7.5, 14.5], "expected": 14.500911466453774}, {"input": [7.5, 15.0], "expected": 15.000552931475362}, {"input": [7.5, 15.5], "expected": 15.500335406372896}, {"input": [7.5, 16.0], "expected": 16.000203447672128}, {"input": [7.5, 16.5], "expected": 16.500123402189722}, {"input": [7.5, 17.0], "expected": 17.00007484902863}, {"input": [7.5, 17.5], "expected": 17.500045398899218}, {"input": [7.5, 18.0], "expected": 18.000027536070228}, {"input": [7.5, 18.5], "expected": 18.500016701561318}, {"input": [7.5, 19.0], "expected": 19.00001013004229}, {"input": [7.5, 19.5], "expected": 19.500006144193478}, {"input": [7.5, 20.0], "expected": 20.000003726646227}, {"input": [7.5, 20.5], "expected": 20.500002260326852}, {"input": [7.5, 21.0], "expected": 21.000001370958145}, {"input": [7.5, 21.5], "expected": 21.500000831528375}, {"input": [7.5, 22.0], "expected": 22.000000504347536}, {"input": [7.5, 22.5], "expected": 22.500000305902272}, {"input": [7.5, 23.0], "expected": 23.00000018553912}, {"input": [7.5, 23.5], "expected": 23.50000011253517}, {"input": [7.5, 24.0], "expected": 24.000000068256032}, {"input": [7.5, 24.5], "expected": 24.500000041399375}, {"input": [7.5, 25.0], "expected": 25.00000002510999}, {"input": [7.5, 25.5], "expected": 25.50000001522998}, {"input": [7.5, 26.0], "expected": 26.00000000923745}, {"input": [7.5, 26.5], "expected": 26.500000005602796}, {"input": [7.5, 27.0], "expected": 27.000000003398267}, {"input": [7.5, 27.5], "expected": 27.500000002061153}, {"input": [7.5, 28.0], "expected": 28.000000001250154}, {"input": [7.5, 28.5], "expected": 28.500000000758256}, {"input": [7.5, 29.0], "expected": 29.000000000459906}, {"input": [7.5, 29.5], "expected": 29.50000000027895}, {"input": [7.5, 30.0], "expected": 30.00000000016919}, {"input": [7.5, 30.5], "expected": 30.50000000010262}, {"input": [7.5, 31.0], "expected": 31.00000000006224}, {"input": [7.5, 31.5], "expected": 31.50000000003775}, {"input": [7.5, 32.0], "expected": 32.0000000000229}, {"input": [7.5, 32.5], "expected": 32.50000000001389}, {"input": [7.5, 33.0], "expected": 33.00000000000842}, {"input": [7.5, 33.5], "expected": 33.50000000000511}, {"input": [7.5, 34.0], "expected": 34.0000000000031}, {"input": [7.5, 34.5], "expected": 34.50000000000188}, {"input": [7.5, 35.0], "expected": 35.00000000000114}, {"input": [7.5, 35.5], "expected": 35.50000000000069}, {"input": [7.5, 36.0], "expected": 36.00000000000042}, {"input": [7.5, 36.5], "expected": 36.500000000000256}, {"input": [7.5, 37.0], "expected": 37.000000000000156}, {"input": [7.5, 37.5], "expected": 37.50000000000009}, {"input": [7.5, 38.0], "expected": 38.00000000000006}, {"input": [7.5, 38.5], "expected": 38.500000000000036}, {"input": [7.5, 39.0], "expected": 39.00000000000002}, {"input": [7.5, 39.5], "expected": 39.500000000000014}, {"input": [7.5, 40.0], "expected": 40.00000000000001}, {"input": [7.5, 40.5], "expected": 40.50000000000001}, {"input": [7.5, 41.0], "expected": 41.0}, {"input": [7.5, 41.5], "expected": 41.5}, {"input": [7.5, 42.0], "expected": 42.0}, {"input": [7.5, 42.5], "expected": 42.5}, {"input": [7.5, 43.0], "expected": 43.0}, {"input": [7.5, 43.5], "expected": 43.5}, {"input": [7.5, 44.0], "expected": 44.0}, {"input": [7.5, 44.5], "expected": 44.5}, {"input": [7.5, 45.0], "expected": 45.0}, {"input": [7.5, 45.5], "expected": 45.5}, {"input": [7.5, 46.0], "expected": 46.0}, {"input": [7.5, 46.5], "expected": 46.5}, {"input": [7.5, 47.0], "expected": 47.0}, {"input": [7.5, 47.5], "expected": 47.5}, {"input": [7.5, 48.0], "expected": 48.0}, {"input": [7.5, 48.5], "expected": 48.5}, {"input": [7.5, 49.0], "expected": 49.0}, {"input": [7.5, 49.5], "expected": 49.5}, {"input": [7.5, 50.0], "expected": 50.0}, {"input": [7.5, 50.5], "expected": 50.5}, {"input": [7.5, 51.0], "expected": 51.0}, {"input": [7.5, 51.5], "expected": 51.5}, {"input": [7.5, 52.0], "expected": 52.0}, {"input": [7.5, 52.5], "expected": 52.5}, {"input": [7.5, 53.0], "expected": 53.0}, {"input": [7.5, 53.5], "expected": 53.5}, {"input": [7.5, 54.0], "expected": 54.0}, {"input": [7.5, 54.5], "expected": 54.5}, {"input": [7.5, 55.0], "expected": 55.0}, {"input": [7.5, 55.5], "expected": 55.5}, {"input": [7.5, 56.0], "expected": 56.0}, {"input": [7.5, 56.5], "expected": 56.5}, {"input": [7.5, 57.0], "expected": 57.0}, {"input": [7.5, 57.5], "expected": 57.5}, {"input": [7.5, 58.0], "expected": 58.0}, {"input": [7.5, 58.5], "expected": 58.5}, {"input": [7.5, 59.0], "expected": 59.0}, {"input": [7.5, 59.5], "expected": 59.5}, {"input": [7.5, 60.0], "expected": 60.0}, {"input": [7.5, 60.5], "expected": 60.5}, {"input": [7.5, 61.0], "expected": 61.0}, {"input": [7.5, 61.5], "expected": 61.5}, {"input": [7.5, 62.0], "expected": 62.0}, {"input": [7.5, 62.5], "expected": 62.5}, {"input": [7.5, 63.0], "expected": 63.0}, {"input": [7.5, 63.5], "expected": 63.5}, {"input": [7.5, 64.0], "expected": 64.0}, {"input": [7.5, 64.5], "expected": 64.5}, {"input": [7.5, 65.0], "expected": 65.0}, {"input": [7.5, 65.5], "expected": 65.5}, {"input": [7.5, 66.0], "expected": 66.0}, {"input": [7.5, 66.5], "expected": 66.5}, {"input": [7.5, 67.0], "expected": 67.0}, {"input": [7.5, 67.5], "expected": 67.5}, {"input": [7.5, 68.0], "expected": 68.0}, {"input": [7.5, 68.5], "expected": 68.5}, {"input": [7.5, 69.0], "expected": 69.0}, {"input": [7.5, 69.5], "expected": 69.5}, {"input": [7.5, 70.0], "expected": 70.0}, {"input": [7.5, 70.5], "expected": 70.5}, {"input": [7.5, 71.0], "expected": 71.0}, {"input": [7.5, 71.5], "expected": 71.5}, {"input": [7.5, 72.0], "expected": 72.0}, {"input": [7.5, 72.5], "expected": 72.5}, {"input": [7.5, 73.0], "expected": 73.0}, {"input": [7.5, 73.5], "expected": 73.5}, {"input": [7.5, 74.0], "expected": 74.0}, {"input": [7.5, 74.5], "expected": 74.5}, {"input": [7.5, 75.0], "expected": 75.0}, {"input": [7.5, 75.5], "expected": 75.5}, {"input": [7.5, 76.0], "expected": 76.0}, {"input": [7.5, 76.5], "expected": 76.5}, {"input": [7.5, 77.0], "expected": 77.0}, {"input": [7.5, 77.5], "expected": 77.5}, {"input": [7.5, 78.0], "expected": 78.0}, {"input": [7.5, 78.5], "expected": 78.5}, {"input": [7.5, 79.0], "expected": 79.0}, {"input": [7.5, 79.5], "expected": 79.5}, {"input": [7.5, 80.0], "expected": 80.0}, {"input": [7.5, 80.5], "expected": 80.5}, {"input": [7.5, 81.0], "expected": 81.0}, {"input": [7.5, 81.5], "expected": 81.5}, {"input": [7.5, 82.0], "expected": 82.0}, {"input": [7.5, 82.5], "expected": 82.5}, {"input": [7.5, 83.0], "expected": 83.0}, {"input": [7.5, 83.5], "expected": 83.5}, {"input": [7.5, 84.0], "expected": 84.0}, {"input": [7.5, 84.5], "expected": 84.5}, {"input": [7.5, 85.0], "expected": 85.0}, {"input": [7.5, 85.5], "expected": 85.5}, {"input": [7.5, 86.0], "expected": 86.0}, {"input": [7.5, 86.5], "expected": 86.5}, {"input": [7.5, 87.0], "expected": 87.0}, {"input": [7.5, 87.5], "expected": 87.5}, {"input": [7.5, 88.0], "expected": 88.0}, {"input": [7.5, 88.5], "expected": 88.5}, {"input": [7.5, 89.0], "expected": 89.0}, {"input": [7.5, 89.5], "expected": 89.5}, {"input": [7.5, 90.0], "expected": 90.0}, {"input": [7.5, 90.5], "expected": 90.5}, {"input": [7.5, 91.0], "expected": 91.0}, {"input": [7.5, 91.5], "expected": 91.5}, {"input": [7.5, 92.0], "expected": 92.0}, {"input": [7.5, 92.5], "expected": 92.5}, {"input": [7.5, 93.0], "expected": 93.0}, {"input": [7.5, 93.5], "expected": 93.5}, {"input": [7.5, 94.0], "expected": 94.0}, {"input": [7.5, 94.5], "expected": 94.5}, {"input": [7.5, 95.0], "expected": 95.0}, {"input": [7.5, 95.5], "expected": 95.5}, {"input": [7.5, 96.0], "expected": 96.0}, {"input": [7.5, 96.5], "expected": 96.5}, {"input": [7.5, 97.0], "expected": 97.0}, {"input": [7.5, 97.5], "expected": 97.5}, {"input": [7.5, 98.0], "expected": 98.0}, {"input": [7.5, 98.5], "expected": 98.5}, {"input": [7.5, 99.0], "expected": 99.0}, {"input": [7.5, 99.5], "expected": 99.5}, {"input": [8.0, -100.0], "expected": 8.0}, {"input": [8.0, -99.5], "expected": 8.0}, {"input": [8.0, -99.0], "expected": 8.0}, {"input": [8.0, -98.5], "expected": 8.0}, {"input": [8.0, -98.0], "expected": 8.0}, {"input": [8.0, -97.5], "expected": 8.0}, {"input": [8.0, -97.0], "expected": 8.0}, {"input": [8.0, -96.5], "expected": 8.0}, {"input": [8.0, -96.0], "expected": 8.0}, {"input": [8.0, -95.5], "expected": 8.0}, {"input": [8.0, -95.0], "expected": 8.0}, {"input": [8.0, -94.5], "expected": 8.0}, {"input": [8.0, -94.0], "expected": 8.0}, {"input": [8.0, -93.5], "expected": 8.0}, {"input": [8.0, -93.0], "expected": 8.0}, {"input": [8.0, -92.5], "expected": 8.0}, {"input": [8.0, -92.0], "expected": 8.0}, {"input": [8.0, -91.5], "expected": 8.0}, {"input": [8.0, -91.0], "expected": 8.0}, {"input": [8.0, -90.5], "expected": 8.0}, {"input": [8.0, -90.0], "expected": 8.0}, {"input": [8.0, -89.5], "expected": 8.0}, {"input": [8.0, -89.0], "expected": 8.0}, {"input": [8.0, -88.5], "expected": 8.0}, {"input": [8.0, -88.0], "expected": 8.0}, {"input": [8.0, -87.5], "expected": 8.0}, {"input": [8.0, -87.0], "expected": 8.0}, {"input": [8.0, -86.5], "expected": 8.0}, {"input": [8.0, -86.0], "expected": 8.0}, {"input": [8.0, -85.5], "expected": 8.0}, {"input": [8.0, -85.0], "expected": 8.0}, {"input": [8.0, -84.5], "expected": 8.0}, {"input": [8.0, -84.0], "expected": 8.0}, {"input": [8.0, -83.5], "expected": 8.0}, {"input": [8.0, -83.0], "expected": 8.0}, {"input": [8.0, -82.5], "expected": 8.0}, {"input": [8.0, -82.0], "expected": 8.0}, {"input": [8.0, -81.5], "expected": 8.0}, {"input": [8.0, -81.0], "expected": 8.0}, {"input": [8.0, -80.5], "expected": 8.0}, {"input": [8.0, -80.0], "expected": 8.0}, {"input": [8.0, -79.5], "expected": 8.0}, {"input": [8.0, -79.0], "expected": 8.0}, {"input": [8.0, -78.5], "expected": 8.0}, {"input": [8.0, -78.0], "expected": 8.0}, {"input": [8.0, -77.5], "expected": 8.0}, {"input": [8.0, -77.0], "expected": 8.0}, {"input": [8.0, -76.5], "expected": 8.0}, {"input": [8.0, -76.0], "expected": 8.0}, {"input": [8.0, -75.5], "expected": 8.0}, {"input": [8.0, -75.0], "expected": 8.0}, {"input": [8.0, -74.5], "expected": 8.0}, {"input": [8.0, -74.0], "expected": 8.0}, {"input": [8.0, -73.5], "expected": 8.0}, {"input": [8.0, -73.0], "expected": 8.0}, {"input": [8.0, -72.5], "expected": 8.0}, {"input": [8.0, -72.0], "expected": 8.0}, {"input": [8.0, -71.5], "expected": 8.0}, {"input": [8.0, -71.0], "expected": 8.0}, {"input": [8.0, -70.5], "expected": 8.0}, {"input": [8.0, -70.0], "expected": 8.0}, {"input": [8.0, -69.5], "expected": 8.0}, {"input": [8.0, -69.0], "expected": 8.0}, {"input": [8.0, -68.5], "expected": 8.0}, {"input": [8.0, -68.0], "expected": 8.0}, {"input": [8.0, -67.5], "expected": 8.0}, {"input": [8.0, -67.0], "expected": 8.0}, {"input": [8.0, -66.5], "expected": 8.0}, {"input": [8.0, -66.0], "expected": 8.0}, {"input": [8.0, -65.5], "expected": 8.0}, {"input": [8.0, -65.0], "expected": 8.0}, {"input": [8.0, -64.5], "expected": 8.0}, {"input": [8.0, -64.0], "expected": 8.0}, {"input": [8.0, -63.5], "expected": 8.0}, {"input": [8.0, -63.0], "expected": 8.0}, {"input": [8.0, -62.5], "expected": 8.0}, {"input": [8.0, -62.0], "expected": 8.0}, {"input": [8.0, -61.5], "expected": 8.0}, {"input": [8.0, -61.0], "expected": 8.0}, {"input": [8.0, -60.5], "expected": 8.0}, {"input": [8.0, -60.0], "expected": 8.0}, {"input": [8.0, -59.5], "expected": 8.0}, {"input": [8.0, -59.0], "expected": 8.0}, {"input": [8.0, -58.5], "expected": 8.0}, {"input": [8.0, -58.0], "expected": 8.0}, {"input": [8.0, -57.5], "expected": 8.0}, {"input": [8.0, -57.0], "expected": 8.0}, {"input": [8.0, -56.5], "expected": 8.0}, {"input": [8.0, -56.0], "expected": 8.0}, {"input": [8.0, -55.5], "expected": 8.0}, {"input": [8.0, -55.0], "expected": 8.0}, {"input": [8.0, -54.5], "expected": 8.0}, {"input": [8.0, -54.0], "expected": 8.0}, {"input": [8.0, -53.5], "expected": 8.0}, {"input": [8.0, -53.0], "expected": 8.0}, {"input": [8.0, -52.5], "expected": 8.0}, {"input": [8.0, -52.0], "expected": 8.0}, {"input": [8.0, -51.5], "expected": 8.0}, {"input": [8.0, -51.0], "expected": 8.0}, {"input": [8.0, -50.5], "expected": 8.0}, {"input": [8.0, -50.0], "expected": 8.0}, {"input": [8.0, -49.5], "expected": 8.0}, {"input": [8.0, -49.0], "expected": 8.0}, {"input": [8.0, -48.5], "expected": 8.0}, {"input": [8.0, -48.0], "expected": 8.0}, {"input": [8.0, -47.5], "expected": 8.0}, {"input": [8.0, -47.0], "expected": 8.0}, {"input": [8.0, -46.5], "expected": 8.0}, {"input": [8.0, -46.0], "expected": 8.0}, {"input": [8.0, -45.5], "expected": 8.0}, {"input": [8.0, -45.0], "expected": 8.0}, {"input": [8.0, -44.5], "expected": 8.0}, {"input": [8.0, -44.0], "expected": 8.0}, {"input": [8.0, -43.5], "expected": 8.0}, {"input": [8.0, -43.0], "expected": 8.0}, {"input": [8.0, -42.5], "expected": 8.0}, {"input": [8.0, -42.0], "expected": 8.0}, {"input": [8.0, -41.5], "expected": 8.0}, {"input": [8.0, -41.0], "expected": 8.0}, {"input": [8.0, -40.5], "expected": 8.0}, {"input": [8.0, -40.0], "expected": 8.0}, {"input": [8.0, -39.5], "expected": 8.0}, {"input": [8.0, -39.0], "expected": 8.0}, {"input": [8.0, -38.5], "expected": 8.0}, {"input": [8.0, -38.0], "expected": 8.0}, {"input": [8.0, -37.5], "expected": 8.0}, {"input": [8.0, -37.0], "expected": 8.0}, {"input": [8.0, -36.5], "expected": 8.0}, {"input": [8.0, -36.0], "expected": 8.0}, {"input": [8.0, -35.5], "expected": 8.0}, {"input": [8.0, -35.0], "expected": 8.0}, {"input": [8.0, -34.5], "expected": 8.0}, {"input": [8.0, -34.0], "expected": 8.0}, {"input": [8.0, -33.5], "expected": 8.0}, {"input": [8.0, -33.0], "expected": 8.0}, {"input": [8.0, -32.5], "expected": 8.0}, {"input": [8.0, -32.0], "expected": 8.0}, {"input": [8.0, -31.5], "expected": 8.0}, {"input": [8.0, -31.0], "expected": 8.0}, {"input": [8.0, -30.5], "expected": 8.0}, {"input": [8.0, -30.0], "expected": 8.0}, {"input": [8.0, -29.5], "expected": 8.0}, {"input": [8.0, -29.0], "expected": 8.0}, {"input": [8.0, -28.5], "expected": 8.0}, {"input": [8.0, -28.0], "expected": 8.0}, {"input": [8.0, -27.5], "expected": 8.0}, {"input": [8.0, -27.0], "expected": 8.0}, {"input": [8.0, -26.5], "expected": 8.000000000000002}, {"input": [8.0, -26.0], "expected": 8.000000000000002}, {"input": [8.0, -25.5], "expected": 8.000000000000004}, {"input": [8.0, -25.0], "expected": 8.000000000000005}, {"input": [8.0, -24.5], "expected": 8.000000000000007}, {"input": [8.0, -24.0], "expected": 8.000000000000012}, {"input": [8.0, -23.5], "expected": 8.000000000000021}, {"input": [8.0, -23.0], "expected": 8.000000000000034}, {"input": [8.0, -22.5], "expected": 8.000000000000057}, {"input": [8.0, -22.0], "expected": 8.000000000000094}, {"input": [8.0, -21.5], "expected": 8.000000000000155}, {"input": [8.0, -21.0], "expected": 8.000000000000254}, {"input": [8.0, -20.5], "expected": 8.00000000000042}, {"input": [8.0, -20.0], "expected": 8.000000000000691}, {"input": [8.0, -19.5], "expected": 8.00000000000114}, {"input": [8.0, -19.0], "expected": 8.00000000000188}, {"input": [8.0, -18.5], "expected": 8.000000000003098}, {"input": [8.0, -18.0], "expected": 8.000000000005109}, {"input": [8.0, -17.5], "expected": 8.000000000008423}, {"input": [8.0, -17.0], "expected": 8.000000000013888}, {"input": [8.0, -16.5], "expected": 8.000000000022897}, {"input": [8.0, -16.0], "expected": 8.000000000037751}, {"input": [8.0, -15.5], "expected": 8.000000000062242}, {"input": [8.0, -15.0], "expected": 8.000000000102618}, {"input": [8.0, -14.5], "expected": 8.000000000169189}, {"input": [8.0, -14.0], "expected": 8.000000000278947}, {"input": [8.0, -13.5], "expected": 8.000000000459906}, {"input": [8.0, -13.0], "expected": 8.000000000758256}, {"input": [8.0, -12.5], "expected": 8.000000001250152}, {"input": [8.0, -12.0], "expected": 8.000000002061153}, {"input": [8.0, -11.5], "expected": 8.000000003398268}, {"input": [8.0, -11.0], "expected": 8.000000005602796}, {"input": [8.0, -10.5], "expected": 8.00000000923745}, {"input": [8.0, -10.0], "expected": 8.000000015229979}, {"input": [8.0, -9.5], "expected": 8.00000002510999}, {"input": [8.0, -9.0], "expected": 8.000000041399376}, {"input": [8.0, -8.5], "expected": 8.000000068256032}, {"input": [8.0, -8.0], "expected": 8.000000112535169}, {"input": [8.0, -7.5], "expected": 8.000000185539118}, {"input": [8.0, -7.0], "expected": 8.000000305902274}, {"input": [8.0, -6.5], "expected": 8.000000504347536}, {"input": [8.0, -6.0], "expected": 8.000000831528373}, {"input": [8.0, -5.5], "expected": 8.000001370958147}, {"input": [8.0, -5.0], "expected": 8.000002260326852}, {"input": [8.0, -4.5], "expected": 8.000003726646229}, {"input": [8.0, -4.0], "expected": 8.000006144193478}, {"input": [8.0, -3.5], "expected": 8.00001013004229}, {"input": [8.0, -3.0], "expected": 8.000016701561318}, {"input": [8.0, -2.5], "expected": 8.00002753607023}, {"input": [8.0, -2.0], "expected": 8.000045398899218}, {"input": [8.0, -1.5], "expected": 8.000074849028628}, {"input": [8.0, -1.0], "expected": 8.000123402189724}, {"input": [8.0, -0.5], "expected": 8.00020344767213}, {"input": [8.0, 0.0], "expected": 8.000335406372896}, {"input": [8.0, 0.5], "expected": 8.000552931475362}, {"input": [8.0, 1.0], "expected": 8.000911466453774}, {"input": [8.0, 1.5], "expected": 8.001502310159754}, {"input": [8.0, 2.0], "expected": 8.00247568513773}, {"input": [8.0, 2.5], "expected": 8.00407844327057}, {"input": [8.0, 3.0], "expected": 8.006715348489118}, {"input": [8.0, 3.5], "expected": 8.011047744848593}, {"input": [8.0, 4.0], "expected": 8.01814992791781}, {"input": [8.0, 4.5], "expected": 8.02975041827262}, {"input": [8.0, 5.0], "expected": 8.048587351573742}, {"input": [8.0, 5.5], "expected": 8.078889734292549}, {"input": [8.0, 6.0], "expected": 8.126928011042972}, {"input": [8.0, 6.5], "expected": 8.201413277982752}, {"input": [8.0, 7.0], "expected": 8.313261687518223}, {"input": [8.0, 7.5], "expected": 8.474076984180106}, {"input": [8.0, 8.0], "expected": 8.693147180559945}, {"input": [8.0, 8.5], "expected": 8.974076984180106}, {"input": [8.0, 9.0], "expected": 9.313261687518223}, {"input": [8.0, 9.5], "expected": 9.701413277982752}, {"input": [8.0, 10.0], "expected": 10.126928011042972}, {"input": [8.0, 10.5], "expected": 10.578889734292549}, {"input": [8.0, 11.0], "expected": 11.048587351573742}, {"input": [8.0, 11.5], "expected": 11.52975041827262}, {"input": [8.0, 12.0], "expected": 12.01814992791781}, {"input": [8.0, 12.5], "expected": 12.511047744848593}, {"input": [8.0, 13.0], "expected": 13.006715348489118}, {"input": [8.0, 13.5], "expected": 13.50407844327057}, {"input": [8.0, 14.0], "expected": 14.00247568513773}, {"input": [8.0, 14.5], "expected": 14.501502310159754}, {"input": [8.0, 15.0], "expected": 15.000911466453774}, {"input": [8.0, 15.5], "expected": 15.500552931475362}, {"input": [8.0, 16.0], "expected": 16.000335406372894}, {"input": [8.0, 16.5], "expected": 16.500203447672128}, {"input": [8.0, 17.0], "expected": 17.000123402189722}, {"input": [8.0, 17.5], "expected": 17.50007484902863}, {"input": [8.0, 18.0], "expected": 18.000045398899218}, {"input": [8.0, 18.5], "expected": 18.500027536070228}, {"input": [8.0, 19.0], "expected": 19.000016701561318}, {"input": [8.0, 19.5], "expected": 19.50001013004229}, {"input": [8.0, 20.0], "expected": 20.000006144193478}, {"input": [8.0, 20.5], "expected": 20.500003726646227}, {"input": [8.0, 21.0], "expected": 21.000002260326852}, {"input": [8.0, 21.5], "expected": 21.500001370958145}, {"input": [8.0, 22.0], "expected": 22.000000831528375}, {"input": [8.0, 22.5], "expected": 22.500000504347536}, {"input": [8.0, 23.0], "expected": 23.000000305902272}, {"input": [8.0, 23.5], "expected": 23.50000018553912}, {"input": [8.0, 24.0], "expected": 24.00000011253517}, {"input": [8.0, 24.5], "expected": 24.500000068256032}, {"input": [8.0, 25.0], "expected": 25.000000041399375}, {"input": [8.0, 25.5], "expected": 25.50000002510999}, {"input": [8.0, 26.0], "expected": 26.00000001522998}, {"input": [8.0, 26.5], "expected": 26.50000000923745}, {"input": [8.0, 27.0], "expected": 27.000000005602796}, {"input": [8.0, 27.5], "expected": 27.500000003398267}, {"input": [8.0, 28.0], "expected": 28.000000002061153}, {"input": [8.0, 28.5], "expected": 28.500000001250154}, {"input": [8.0, 29.0], "expected": 29.000000000758256}, {"input": [8.0, 29.5], "expected": 29.500000000459906}, {"input": [8.0, 30.0], "expected": 30.00000000027895}, {"input": [8.0, 30.5], "expected": 30.50000000016919}, {"input": [8.0, 31.0], "expected": 31.00000000010262}, {"input": [8.0, 31.5], "expected": 31.50000000006224}, {"input": [8.0, 32.0], "expected": 32.00000000003775}, {"input": [8.0, 32.5], "expected": 32.5000000000229}, {"input": [8.0, 33.0], "expected": 33.00000000001389}, {"input": [8.0, 33.5], "expected": 33.50000000000842}, {"input": [8.0, 34.0], "expected": 34.00000000000511}, {"input": [8.0, 34.5], "expected": 34.5000000000031}, {"input": [8.0, 35.0], "expected": 35.00000000000188}, {"input": [8.0, 35.5], "expected": 35.50000000000114}, {"input": [8.0, 36.0], "expected": 36.00000000000069}, {"input": [8.0, 36.5], "expected": 36.50000000000042}, {"input": [8.0, 37.0], "expected": 37.000000000000256}, {"input": [8.0, 37.5], "expected": 37.500000000000156}, {"input": [8.0, 38.0], "expected": 38.00000000000009}, {"input": [8.0, 38.5], "expected": 38.50000000000006}, {"input": [8.0, 39.0], "expected": 39.000000000000036}, {"input": [8.0, 39.5], "expected": 39.50000000000002}, {"input": [8.0, 40.0], "expected": 40.000000000000014}, {"input": [8.0, 40.5], "expected": 40.50000000000001}, {"input": [8.0, 41.0], "expected": 41.00000000000001}, {"input": [8.0, 41.5], "expected": 41.5}, {"input": [8.0, 42.0], "expected": 42.0}, {"input": [8.0, 42.5], "expected": 42.5}, {"input": [8.0, 43.0], "expected": 43.0}, {"input": [8.0, 43.5], "expected": 43.5}, {"input": [8.0, 44.0], "expected": 44.0}, {"input": [8.0, 44.5], "expected": 44.5}, {"input": [8.0, 45.0], "expected": 45.0}, {"input": [8.0, 45.5], "expected": 45.5}, {"input": [8.0, 46.0], "expected": 46.0}, {"input": [8.0, 46.5], "expected": 46.5}, {"input": [8.0, 47.0], "expected": 47.0}, {"input": [8.0, 47.5], "expected": 47.5}, {"input": [8.0, 48.0], "expected": 48.0}, {"input": [8.0, 48.5], "expected": 48.5}, {"input": [8.0, 49.0], "expected": 49.0}, {"input": [8.0, 49.5], "expected": 49.5}, {"input": [8.0, 50.0], "expected": 50.0}, {"input": [8.0, 50.5], "expected": 50.5}, {"input": [8.0, 51.0], "expected": 51.0}, {"input": [8.0, 51.5], "expected": 51.5}, {"input": [8.0, 52.0], "expected": 52.0}, {"input": [8.0, 52.5], "expected": 52.5}, {"input": [8.0, 53.0], "expected": 53.0}, {"input": [8.0, 53.5], "expected": 53.5}, {"input": [8.0, 54.0], "expected": 54.0}, {"input": [8.0, 54.5], "expected": 54.5}, {"input": [8.0, 55.0], "expected": 55.0}, {"input": [8.0, 55.5], "expected": 55.5}, {"input": [8.0, 56.0], "expected": 56.0}, {"input": [8.0, 56.5], "expected": 56.5}, {"input": [8.0, 57.0], "expected": 57.0}, {"input": [8.0, 57.5], "expected": 57.5}, {"input": [8.0, 58.0], "expected": 58.0}, {"input": [8.0, 58.5], "expected": 58.5}, {"input": [8.0, 59.0], "expected": 59.0}, {"input": [8.0, 59.5], "expected": 59.5}, {"input": [8.0, 60.0], "expected": 60.0}, {"input": [8.0, 60.5], "expected": 60.5}, {"input": [8.0, 61.0], "expected": 61.0}, {"input": [8.0, 61.5], "expected": 61.5}, {"input": [8.0, 62.0], "expected": 62.0}, {"input": [8.0, 62.5], "expected": 62.5}, {"input": [8.0, 63.0], "expected": 63.0}, {"input": [8.0, 63.5], "expected": 63.5}, {"input": [8.0, 64.0], "expected": 64.0}, {"input": [8.0, 64.5], "expected": 64.5}, {"input": [8.0, 65.0], "expected": 65.0}, {"input": [8.0, 65.5], "expected": 65.5}, {"input": [8.0, 66.0], "expected": 66.0}, {"input": [8.0, 66.5], "expected": 66.5}, {"input": [8.0, 67.0], "expected": 67.0}, {"input": [8.0, 67.5], "expected": 67.5}, {"input": [8.0, 68.0], "expected": 68.0}, {"input": [8.0, 68.5], "expected": 68.5}, {"input": [8.0, 69.0], "expected": 69.0}, {"input": [8.0, 69.5], "expected": 69.5}, {"input": [8.0, 70.0], "expected": 70.0}, {"input": [8.0, 70.5], "expected": 70.5}, {"input": [8.0, 71.0], "expected": 71.0}, {"input": [8.0, 71.5], "expected": 71.5}, {"input": [8.0, 72.0], "expected": 72.0}, {"input": [8.0, 72.5], "expected": 72.5}, {"input": [8.0, 73.0], "expected": 73.0}, {"input": [8.0, 73.5], "expected": 73.5}, {"input": [8.0, 74.0], "expected": 74.0}, {"input": [8.0, 74.5], "expected": 74.5}, {"input": [8.0, 75.0], "expected": 75.0}, {"input": [8.0, 75.5], "expected": 75.5}, {"input": [8.0, 76.0], "expected": 76.0}, {"input": [8.0, 76.5], "expected": 76.5}, {"input": [8.0, 77.0], "expected": 77.0}, {"input": [8.0, 77.5], "expected": 77.5}, {"input": [8.0, 78.0], "expected": 78.0}, {"input": [8.0, 78.5], "expected": 78.5}, {"input": [8.0, 79.0], "expected": 79.0}, {"input": [8.0, 79.5], "expected": 79.5}, {"input": [8.0, 80.0], "expected": 80.0}, {"input": [8.0, 80.5], "expected": 80.5}, {"input": [8.0, 81.0], "expected": 81.0}, {"input": [8.0, 81.5], "expected": 81.5}, {"input": [8.0, 82.0], "expected": 82.0}, {"input": [8.0, 82.5], "expected": 82.5}, {"input": [8.0, 83.0], "expected": 83.0}, {"input": [8.0, 83.5], "expected": 83.5}, {"input": [8.0, 84.0], "expected": 84.0}, {"input": [8.0, 84.5], "expected": 84.5}, {"input": [8.0, 85.0], "expected": 85.0}, {"input": [8.0, 85.5], "expected": 85.5}, {"input": [8.0, 86.0], "expected": 86.0}, {"input": [8.0, 86.5], "expected": 86.5}, {"input": [8.0, 87.0], "expected": 87.0}, {"input": [8.0, 87.5], "expected": 87.5}, {"input": [8.0, 88.0], "expected": 88.0}, {"input": [8.0, 88.5], "expected": 88.5}, {"input": [8.0, 89.0], "expected": 89.0}, {"input": [8.0, 89.5], "expected": 89.5}, {"input": [8.0, 90.0], "expected": 90.0}, {"input": [8.0, 90.5], "expected": 90.5}, {"input": [8.0, 91.0], "expected": 91.0}, {"input": [8.0, 91.5], "expected": 91.5}, {"input": [8.0, 92.0], "expected": 92.0}, {"input": [8.0, 92.5], "expected": 92.5}, {"input": [8.0, 93.0], "expected": 93.0}, {"input": [8.0, 93.5], "expected": 93.5}, {"input": [8.0, 94.0], "expected": 94.0}, {"input": [8.0, 94.5], "expected": 94.5}, {"input": [8.0, 95.0], "expected": 95.0}, {"input": [8.0, 95.5], "expected": 95.5}, {"input": [8.0, 96.0], "expected": 96.0}, {"input": [8.0, 96.5], "expected": 96.5}, {"input": [8.0, 97.0], "expected": 97.0}, {"input": [8.0, 97.5], "expected": 97.5}, {"input": [8.0, 98.0], "expected": 98.0}, {"input": [8.0, 98.5], "expected": 98.5}, {"input": [8.0, 99.0], "expected": 99.0}, {"input": [8.0, 99.5], "expected": 99.5}, {"input": [8.5, -100.0], "expected": 8.5}, {"input": [8.5, -99.5], "expected": 8.5}, {"input": [8.5, -99.0], "expected": 8.5}, {"input": [8.5, -98.5], "expected": 8.5}, {"input": [8.5, -98.0], "expected": 8.5}, {"input": [8.5, -97.5], "expected": 8.5}, {"input": [8.5, -97.0], "expected": 8.5}, {"input": [8.5, -96.5], "expected": 8.5}, {"input": [8.5, -96.0], "expected": 8.5}, {"input": [8.5, -95.5], "expected": 8.5}, {"input": [8.5, -95.0], "expected": 8.5}, {"input": [8.5, -94.5], "expected": 8.5}, {"input": [8.5, -94.0], "expected": 8.5}, {"input": [8.5, -93.5], "expected": 8.5}, {"input": [8.5, -93.0], "expected": 8.5}, {"input": [8.5, -92.5], "expected": 8.5}, {"input": [8.5, -92.0], "expected": 8.5}, {"input": [8.5, -91.5], "expected": 8.5}, {"input": [8.5, -91.0], "expected": 8.5}, {"input": [8.5, -90.5], "expected": 8.5}, {"input": [8.5, -90.0], "expected": 8.5}, {"input": [8.5, -89.5], "expected": 8.5}, {"input": [8.5, -89.0], "expected": 8.5}, {"input": [8.5, -88.5], "expected": 8.5}, {"input": [8.5, -88.0], "expected": 8.5}, {"input": [8.5, -87.5], "expected": 8.5}, {"input": [8.5, -87.0], "expected": 8.5}, {"input": [8.5, -86.5], "expected": 8.5}, {"input": [8.5, -86.0], "expected": 8.5}, {"input": [8.5, -85.5], "expected": 8.5}, {"input": [8.5, -85.0], "expected": 8.5}, {"input": [8.5, -84.5], "expected": 8.5}, {"input": [8.5, -84.0], "expected": 8.5}, {"input": [8.5, -83.5], "expected": 8.5}, {"input": [8.5, -83.0], "expected": 8.5}, {"input": [8.5, -82.5], "expected": 8.5}, {"input": [8.5, -82.0], "expected": 8.5}, {"input": [8.5, -81.5], "expected": 8.5}, {"input": [8.5, -81.0], "expected": 8.5}, {"input": [8.5, -80.5], "expected": 8.5}, {"input": [8.5, -80.0], "expected": 8.5}, {"input": [8.5, -79.5], "expected": 8.5}, {"input": [8.5, -79.0], "expected": 8.5}, {"input": [8.5, -78.5], "expected": 8.5}, {"input": [8.5, -78.0], "expected": 8.5}, {"input": [8.5, -77.5], "expected": 8.5}, {"input": [8.5, -77.0], "expected": 8.5}, {"input": [8.5, -76.5], "expected": 8.5}, {"input": [8.5, -76.0], "expected": 8.5}, {"input": [8.5, -75.5], "expected": 8.5}, {"input": [8.5, -75.0], "expected": 8.5}, {"input": [8.5, -74.5], "expected": 8.5}, {"input": [8.5, -74.0], "expected": 8.5}, {"input": [8.5, -73.5], "expected": 8.5}, {"input": [8.5, -73.0], "expected": 8.5}, {"input": [8.5, -72.5], "expected": 8.5}, {"input": [8.5, -72.0], "expected": 8.5}, {"input": [8.5, -71.5], "expected": 8.5}, {"input": [8.5, -71.0], "expected": 8.5}, {"input": [8.5, -70.5], "expected": 8.5}, {"input": [8.5, -70.0], "expected": 8.5}, {"input": [8.5, -69.5], "expected": 8.5}, {"input": [8.5, -69.0], "expected": 8.5}, {"input": [8.5, -68.5], "expected": 8.5}, {"input": [8.5, -68.0], "expected": 8.5}, {"input": [8.5, -67.5], "expected": 8.5}, {"input": [8.5, -67.0], "expected": 8.5}, {"input": [8.5, -66.5], "expected": 8.5}, {"input": [8.5, -66.0], "expected": 8.5}, {"input": [8.5, -65.5], "expected": 8.5}, {"input": [8.5, -65.0], "expected": 8.5}, {"input": [8.5, -64.5], "expected": 8.5}, {"input": [8.5, -64.0], "expected": 8.5}, {"input": [8.5, -63.5], "expected": 8.5}, {"input": [8.5, -63.0], "expected": 8.5}, {"input": [8.5, -62.5], "expected": 8.5}, {"input": [8.5, -62.0], "expected": 8.5}, {"input": [8.5, -61.5], "expected": 8.5}, {"input": [8.5, -61.0], "expected": 8.5}, {"input": [8.5, -60.5], "expected": 8.5}, {"input": [8.5, -60.0], "expected": 8.5}, {"input": [8.5, -59.5], "expected": 8.5}, {"input": [8.5, -59.0], "expected": 8.5}, {"input": [8.5, -58.5], "expected": 8.5}, {"input": [8.5, -58.0], "expected": 8.5}, {"input": [8.5, -57.5], "expected": 8.5}, {"input": [8.5, -57.0], "expected": 8.5}, {"input": [8.5, -56.5], "expected": 8.5}, {"input": [8.5, -56.0], "expected": 8.5}, {"input": [8.5, -55.5], "expected": 8.5}, {"input": [8.5, -55.0], "expected": 8.5}, {"input": [8.5, -54.5], "expected": 8.5}, {"input": [8.5, -54.0], "expected": 8.5}, {"input": [8.5, -53.5], "expected": 8.5}, {"input": [8.5, -53.0], "expected": 8.5}, {"input": [8.5, -52.5], "expected": 8.5}, {"input": [8.5, -52.0], "expected": 8.5}, {"input": [8.5, -51.5], "expected": 8.5}, {"input": [8.5, -51.0], "expected": 8.5}, {"input": [8.5, -50.5], "expected": 8.5}, {"input": [8.5, -50.0], "expected": 8.5}, {"input": [8.5, -49.5], "expected": 8.5}, {"input": [8.5, -49.0], "expected": 8.5}, {"input": [8.5, -48.5], "expected": 8.5}, {"input": [8.5, -48.0], "expected": 8.5}, {"input": [8.5, -47.5], "expected": 8.5}, {"input": [8.5, -47.0], "expected": 8.5}, {"input": [8.5, -46.5], "expected": 8.5}, {"input": [8.5, -46.0], "expected": 8.5}, {"input": [8.5, -45.5], "expected": 8.5}, {"input": [8.5, -45.0], "expected": 8.5}, {"input": [8.5, -44.5], "expected": 8.5}, {"input": [8.5, -44.0], "expected": 8.5}, {"input": [8.5, -43.5], "expected": 8.5}, {"input": [8.5, -43.0], "expected": 8.5}, {"input": [8.5, -42.5], "expected": 8.5}, {"input": [8.5, -42.0], "expected": 8.5}, {"input": [8.5, -41.5], "expected": 8.5}, {"input": [8.5, -41.0], "expected": 8.5}, {"input": [8.5, -40.5], "expected": 8.5}, {"input": [8.5, -40.0], "expected": 8.5}, {"input": [8.5, -39.5], "expected": 8.5}, {"input": [8.5, -39.0], "expected": 8.5}, {"input": [8.5, -38.5], "expected": 8.5}, {"input": [8.5, -38.0], "expected": 8.5}, {"input": [8.5, -37.5], "expected": 8.5}, {"input": [8.5, -37.0], "expected": 8.5}, {"input": [8.5, -36.5], "expected": 8.5}, {"input": [8.5, -36.0], "expected": 8.5}, {"input": [8.5, -35.5], "expected": 8.5}, {"input": [8.5, -35.0], "expected": 8.5}, {"input": [8.5, -34.5], "expected": 8.5}, {"input": [8.5, -34.0], "expected": 8.5}, {"input": [8.5, -33.5], "expected": 8.5}, {"input": [8.5, -33.0], "expected": 8.5}, {"input": [8.5, -32.5], "expected": 8.5}, {"input": [8.5, -32.0], "expected": 8.5}, {"input": [8.5, -31.5], "expected": 8.5}, {"input": [8.5, -31.0], "expected": 8.5}, {"input": [8.5, -30.5], "expected": 8.5}, {"input": [8.5, -30.0], "expected": 8.5}, {"input": [8.5, -29.5], "expected": 8.5}, {"input": [8.5, -29.0], "expected": 8.5}, {"input": [8.5, -28.5], "expected": 8.5}, {"input": [8.5, -28.0], "expected": 8.5}, {"input": [8.5, -27.5], "expected": 8.5}, {"input": [8.5, -27.0], "expected": 8.5}, {"input": [8.5, -26.5], "expected": 8.5}, {"input": [8.5, -26.0], "expected": 8.500000000000002}, {"input": [8.5, -25.5], "expected": 8.500000000000002}, {"input": [8.5, -25.0], "expected": 8.500000000000004}, {"input": [8.5, -24.5], "expected": 8.500000000000005}, {"input": [8.5, -24.0], "expected": 8.500000000000007}, {"input": [8.5, -23.5], "expected": 8.500000000000012}, {"input": [8.5, -23.0], "expected": 8.500000000000021}, {"input": [8.5, -22.5], "expected": 8.500000000000034}, {"input": [8.5, -22.0], "expected": 8.500000000000057}, {"input": [8.5, -21.5], "expected": 8.500000000000094}, {"input": [8.5, -21.0], "expected": 8.500000000000155}, {"input": [8.5, -20.5], "expected": 8.500000000000254}, {"input": [8.5, -20.0], "expected": 8.50000000000042}, {"input": [8.5, -19.5], "expected": 8.500000000000691}, {"input": [8.5, -19.0], "expected": 8.50000000000114}, {"input": [8.5, -18.5], "expected": 8.50000000000188}, {"input": [8.5, -18.0], "expected": 8.500000000003098}, {"input": [8.5, -17.5], "expected": 8.500000000005109}, {"input": [8.5, -17.0], "expected": 8.500000000008423}, {"input": [8.5, -16.5], "expected": 8.500000000013888}, {"input": [8.5, -16.0], "expected": 8.500000000022897}, {"input": [8.5, -15.5], "expected": 8.500000000037751}, {"input": [8.5, -15.0], "expected": 8.500000000062242}, {"input": [8.5, -14.5], "expected": 8.500000000102618}, {"input": [8.5, -14.0], "expected": 8.500000000169189}, {"input": [8.5, -13.5], "expected": 8.500000000278947}, {"input": [8.5, -13.0], "expected": 8.500000000459906}, {"input": [8.5, -12.5], "expected": 8.500000000758256}, {"input": [8.5, -12.0], "expected": 8.500000001250152}, {"input": [8.5, -11.5], "expected": 8.500000002061153}, {"input": [8.5, -11.0], "expected": 8.500000003398268}, {"input": [8.5, -10.5], "expected": 8.500000005602796}, {"input": [8.5, -10.0], "expected": 8.50000000923745}, {"input": [8.5, -9.5], "expected": 8.500000015229979}, {"input": [8.5, -9.0], "expected": 8.50000002510999}, {"input": [8.5, -8.5], "expected": 8.500000041399376}, {"input": [8.5, -8.0], "expected": 8.500000068256032}, {"input": [8.5, -7.5], "expected": 8.500000112535169}, {"input": [8.5, -7.0], "expected": 8.500000185539118}, {"input": [8.5, -6.5], "expected": 8.500000305902274}, {"input": [8.5, -6.0], "expected": 8.500000504347536}, {"input": [8.5, -5.5], "expected": 8.500000831528373}, {"input": [8.5, -5.0], "expected": 8.500001370958147}, {"input": [8.5, -4.5], "expected": 8.500002260326852}, {"input": [8.5, -4.0], "expected": 8.500003726646229}, {"input": [8.5, -3.5], "expected": 8.500006144193478}, {"input": [8.5, -3.0], "expected": 8.50001013004229}, {"input": [8.5, -2.5], "expected": 8.500016701561318}, {"input": [8.5, -2.0], "expected": 8.50002753607023}, {"input": [8.5, -1.5], "expected": 8.500045398899218}, {"input": [8.5, -1.0], "expected": 8.500074849028628}, {"input": [8.5, -0.5], "expected": 8.500123402189724}, {"input": [8.5, 0.0], "expected": 8.50020344767213}, {"input": [8.5, 0.5], "expected": 8.500335406372896}, {"input": [8.5, 1.0], "expected": 8.500552931475362}, {"input": [8.5, 1.5], "expected": 8.500911466453774}, {"input": [8.5, 2.0], "expected": 8.501502310159754}, {"input": [8.5, 2.5], "expected": 8.50247568513773}, {"input": [8.5, 3.0], "expected": 8.50407844327057}, {"input": [8.5, 3.5], "expected": 8.506715348489118}, {"input": [8.5, 4.0], "expected": 8.511047744848593}, {"input": [8.5, 4.5], "expected": 8.51814992791781}, {"input": [8.5, 5.0], "expected": 8.52975041827262}, {"input": [8.5, 5.5], "expected": 8.548587351573742}, {"input": [8.5, 6.0], "expected": 8.578889734292549}, {"input": [8.5, 6.5], "expected": 8.626928011042972}, {"input": [8.5, 7.0], "expected": 8.701413277982752}, {"input": [8.5, 7.5], "expected": 8.813261687518223}, {"input": [8.5, 8.0], "expected": 8.974076984180106}, {"input": [8.5, 8.5], "expected": 9.193147180559945}, {"input": [8.5, 9.0], "expected": 9.474076984180106}, {"input": [8.5, 9.5], "expected": 9.813261687518223}, {"input": [8.5, 10.0], "expected": 10.201413277982752}, {"input": [8.5, 10.5], "expected": 10.626928011042972}, {"input": [8.5, 11.0], "expected": 11.078889734292549}, {"input": [8.5, 11.5], "expected": 11.548587351573742}, {"input": [8.5, 12.0], "expected": 12.02975041827262}, {"input": [8.5, 12.5], "expected": 12.51814992791781}, {"input": [8.5, 13.0], "expected": 13.011047744848593}, {"input": [8.5, 13.5], "expected": 13.506715348489118}, {"input": [8.5, 14.0], "expected": 14.00407844327057}, {"input": [8.5, 14.5], "expected": 14.50247568513773}, {"input": [8.5, 15.0], "expected": 15.001502310159754}, {"input": [8.5, 15.5], "expected": 15.500911466453774}, {"input": [8.5, 16.0], "expected": 16.00055293147536}, {"input": [8.5, 16.5], "expected": 16.500335406372894}, {"input": [8.5, 17.0], "expected": 17.000203447672128}, {"input": [8.5, 17.5], "expected": 17.500123402189722}, {"input": [8.5, 18.0], "expected": 18.00007484902863}, {"input": [8.5, 18.5], "expected": 18.500045398899218}, {"input": [8.5, 19.0], "expected": 19.000027536070228}, {"input": [8.5, 19.5], "expected": 19.500016701561318}, {"input": [8.5, 20.0], "expected": 20.00001013004229}, {"input": [8.5, 20.5], "expected": 20.500006144193478}, {"input": [8.5, 21.0], "expected": 21.000003726646227}, {"input": [8.5, 21.5], "expected": 21.500002260326852}, {"input": [8.5, 22.0], "expected": 22.000001370958145}, {"input": [8.5, 22.5], "expected": 22.500000831528375}, {"input": [8.5, 23.0], "expected": 23.000000504347536}, {"input": [8.5, 23.5], "expected": 23.500000305902272}, {"input": [8.5, 24.0], "expected": 24.00000018553912}, {"input": [8.5, 24.5], "expected": 24.50000011253517}, {"input": [8.5, 25.0], "expected": 25.000000068256032}, {"input": [8.5, 25.5], "expected": 25.500000041399375}, {"input": [8.5, 26.0], "expected": 26.00000002510999}, {"input": [8.5, 26.5], "expected": 26.50000001522998}, {"input": [8.5, 27.0], "expected": 27.00000000923745}, {"input": [8.5, 27.5], "expected": 27.500000005602796}, {"input": [8.5, 28.0], "expected": 28.000000003398267}, {"input": [8.5, 28.5], "expected": 28.500000002061153}, {"input": [8.5, 29.0], "expected": 29.000000001250154}, {"input": [8.5, 29.5], "expected": 29.500000000758256}, {"input": [8.5, 30.0], "expected": 30.000000000459906}, {"input": [8.5, 30.5], "expected": 30.50000000027895}, {"input": [8.5, 31.0], "expected": 31.00000000016919}, {"input": [8.5, 31.5], "expected": 31.50000000010262}, {"input": [8.5, 32.0], "expected": 32.00000000006224}, {"input": [8.5, 32.5], "expected": 32.50000000003775}, {"input": [8.5, 33.0], "expected": 33.0000000000229}, {"input": [8.5, 33.5], "expected": 33.50000000001389}, {"input": [8.5, 34.0], "expected": 34.00000000000842}, {"input": [8.5, 34.5], "expected": 34.50000000000511}, {"input": [8.5, 35.0], "expected": 35.0000000000031}, {"input": [8.5, 35.5], "expected": 35.50000000000188}, {"input": [8.5, 36.0], "expected": 36.00000000000114}, {"input": [8.5, 36.5], "expected": 36.50000000000069}, {"input": [8.5, 37.0], "expected": 37.00000000000042}, {"input": [8.5, 37.5], "expected": 37.500000000000256}, {"input": [8.5, 38.0], "expected": 38.000000000000156}, {"input": [8.5, 38.5], "expected": 38.50000000000009}, {"input": [8.5, 39.0], "expected": 39.00000000000006}, {"input": [8.5, 39.5], "expected": 39.500000000000036}, {"input": [8.5, 40.0], "expected": 40.00000000000002}, {"input": [8.5, 40.5], "expected": 40.500000000000014}, {"input": [8.5, 41.0], "expected": 41.00000000000001}, {"input": [8.5, 41.5], "expected": 41.50000000000001}, {"input": [8.5, 42.0], "expected": 42.0}, {"input": [8.5, 42.5], "expected": 42.5}, {"input": [8.5, 43.0], "expected": 43.0}, {"input": [8.5, 43.5], "expected": 43.5}, {"input": [8.5, 44.0], "expected": 44.0}, {"input": [8.5, 44.5], "expected": 44.5}, {"input": [8.5, 45.0], "expected": 45.0}, {"input": [8.5, 45.5], "expected": 45.5}, {"input": [8.5, 46.0], "expected": 46.0}, {"input": [8.5, 46.5], "expected": 46.5}, {"input": [8.5, 47.0], "expected": 47.0}, {"input": [8.5, 47.5], "expected": 47.5}, {"input": [8.5, 48.0], "expected": 48.0}, {"input": [8.5, 48.5], "expected": 48.5}, {"input": [8.5, 49.0], "expected": 49.0}, {"input": [8.5, 49.5], "expected": 49.5}, {"input": [8.5, 50.0], "expected": 50.0}, {"input": [8.5, 50.5], "expected": 50.5}, {"input": [8.5, 51.0], "expected": 51.0}, {"input": [8.5, 51.5], "expected": 51.5}, {"input": [8.5, 52.0], "expected": 52.0}, {"input": [8.5, 52.5], "expected": 52.5}, {"input": [8.5, 53.0], "expected": 53.0}, {"input": [8.5, 53.5], "expected": 53.5}, {"input": [8.5, 54.0], "expected": 54.0}, {"input": [8.5, 54.5], "expected": 54.5}, {"input": [8.5, 55.0], "expected": 55.0}, {"input": [8.5, 55.5], "expected": 55.5}, {"input": [8.5, 56.0], "expected": 56.0}, {"input": [8.5, 56.5], "expected": 56.5}, {"input": [8.5, 57.0], "expected": 57.0}, {"input": [8.5, 57.5], "expected": 57.5}, {"input": [8.5, 58.0], "expected": 58.0}, {"input": [8.5, 58.5], "expected": 58.5}, {"input": [8.5, 59.0], "expected": 59.0}, {"input": [8.5, 59.5], "expected": 59.5}, {"input": [8.5, 60.0], "expected": 60.0}, {"input": [8.5, 60.5], "expected": 60.5}, {"input": [8.5, 61.0], "expected": 61.0}, {"input": [8.5, 61.5], "expected": 61.5}, {"input": [8.5, 62.0], "expected": 62.0}, {"input": [8.5, 62.5], "expected": 62.5}, {"input": [8.5, 63.0], "expected": 63.0}, {"input": [8.5, 63.5], "expected": 63.5}, {"input": [8.5, 64.0], "expected": 64.0}, {"input": [8.5, 64.5], "expected": 64.5}, {"input": [8.5, 65.0], "expected": 65.0}, {"input": [8.5, 65.5], "expected": 65.5}, {"input": [8.5, 66.0], "expected": 66.0}, {"input": [8.5, 66.5], "expected": 66.5}, {"input": [8.5, 67.0], "expected": 67.0}, {"input": [8.5, 67.5], "expected": 67.5}, {"input": [8.5, 68.0], "expected": 68.0}, {"input": [8.5, 68.5], "expected": 68.5}, {"input": [8.5, 69.0], "expected": 69.0}, {"input": [8.5, 69.5], "expected": 69.5}, {"input": [8.5, 70.0], "expected": 70.0}, {"input": [8.5, 70.5], "expected": 70.5}, {"input": [8.5, 71.0], "expected": 71.0}, {"input": [8.5, 71.5], "expected": 71.5}, {"input": [8.5, 72.0], "expected": 72.0}, {"input": [8.5, 72.5], "expected": 72.5}, {"input": [8.5, 73.0], "expected": 73.0}, {"input": [8.5, 73.5], "expected": 73.5}, {"input": [8.5, 74.0], "expected": 74.0}, {"input": [8.5, 74.5], "expected": 74.5}, {"input": [8.5, 75.0], "expected": 75.0}, {"input": [8.5, 75.5], "expected": 75.5}, {"input": [8.5, 76.0], "expected": 76.0}, {"input": [8.5, 76.5], "expected": 76.5}, {"input": [8.5, 77.0], "expected": 77.0}, {"input": [8.5, 77.5], "expected": 77.5}, {"input": [8.5, 78.0], "expected": 78.0}, {"input": [8.5, 78.5], "expected": 78.5}, {"input": [8.5, 79.0], "expected": 79.0}, {"input": [8.5, 79.5], "expected": 79.5}, {"input": [8.5, 80.0], "expected": 80.0}, {"input": [8.5, 80.5], "expected": 80.5}, {"input": [8.5, 81.0], "expected": 81.0}, {"input": [8.5, 81.5], "expected": 81.5}, {"input": [8.5, 82.0], "expected": 82.0}, {"input": [8.5, 82.5], "expected": 82.5}, {"input": [8.5, 83.0], "expected": 83.0}, {"input": [8.5, 83.5], "expected": 83.5}, {"input": [8.5, 84.0], "expected": 84.0}, {"input": [8.5, 84.5], "expected": 84.5}, {"input": [8.5, 85.0], "expected": 85.0}, {"input": [8.5, 85.5], "expected": 85.5}, {"input": [8.5, 86.0], "expected": 86.0}, {"input": [8.5, 86.5], "expected": 86.5}, {"input": [8.5, 87.0], "expected": 87.0}, {"input": [8.5, 87.5], "expected": 87.5}, {"input": [8.5, 88.0], "expected": 88.0}, {"input": [8.5, 88.5], "expected": 88.5}, {"input": [8.5, 89.0], "expected": 89.0}, {"input": [8.5, 89.5], "expected": 89.5}, {"input": [8.5, 90.0], "expected": 90.0}, {"input": [8.5, 90.5], "expected": 90.5}, {"input": [8.5, 91.0], "expected": 91.0}, {"input": [8.5, 91.5], "expected": 91.5}, {"input": [8.5, 92.0], "expected": 92.0}, {"input": [8.5, 92.5], "expected": 92.5}, {"input": [8.5, 93.0], "expected": 93.0}, {"input": [8.5, 93.5], "expected": 93.5}, {"input": [8.5, 94.0], "expected": 94.0}, {"input": [8.5, 94.5], "expected": 94.5}, {"input": [8.5, 95.0], "expected": 95.0}, {"input": [8.5, 95.5], "expected": 95.5}, {"input": [8.5, 96.0], "expected": 96.0}, {"input": [8.5, 96.5], "expected": 96.5}, {"input": [8.5, 97.0], "expected": 97.0}, {"input": [8.5, 97.5], "expected": 97.5}, {"input": [8.5, 98.0], "expected": 98.0}, {"input": [8.5, 98.5], "expected": 98.5}, {"input": [8.5, 99.0], "expected": 99.0}, {"input": [8.5, 99.5], "expected": 99.5}, {"input": [9.0, -100.0], "expected": 9.0}, {"input": [9.0, -99.5], "expected": 9.0}, {"input": [9.0, -99.0], "expected": 9.0}, {"input": [9.0, -98.5], "expected": 9.0}, {"input": [9.0, -98.0], "expected": 9.0}, {"input": [9.0, -97.5], "expected": 9.0}, {"input": [9.0, -97.0], "expected": 9.0}, {"input": [9.0, -96.5], "expected": 9.0}, {"input": [9.0, -96.0], "expected": 9.0}, {"input": [9.0, -95.5], "expected": 9.0}, {"input": [9.0, -95.0], "expected": 9.0}, {"input": [9.0, -94.5], "expected": 9.0}, {"input": [9.0, -94.0], "expected": 9.0}, {"input": [9.0, -93.5], "expected": 9.0}, {"input": [9.0, -93.0], "expected": 9.0}, {"input": [9.0, -92.5], "expected": 9.0}, {"input": [9.0, -92.0], "expected": 9.0}, {"input": [9.0, -91.5], "expected": 9.0}, {"input": [9.0, -91.0], "expected": 9.0}, {"input": [9.0, -90.5], "expected": 9.0}, {"input": [9.0, -90.0], "expected": 9.0}, {"input": [9.0, -89.5], "expected": 9.0}, {"input": [9.0, -89.0], "expected": 9.0}, {"input": [9.0, -88.5], "expected": 9.0}, {"input": [9.0, -88.0], "expected": 9.0}, {"input": [9.0, -87.5], "expected": 9.0}, {"input": [9.0, -87.0], "expected": 9.0}, {"input": [9.0, -86.5], "expected": 9.0}, {"input": [9.0, -86.0], "expected": 9.0}, {"input": [9.0, -85.5], "expected": 9.0}, {"input": [9.0, -85.0], "expected": 9.0}, {"input": [9.0, -84.5], "expected": 9.0}, {"input": [9.0, -84.0], "expected": 9.0}, {"input": [9.0, -83.5], "expected": 9.0}, {"input": [9.0, -83.0], "expected": 9.0}, {"input": [9.0, -82.5], "expected": 9.0}, {"input": [9.0, -82.0], "expected": 9.0}, {"input": [9.0, -81.5], "expected": 9.0}, {"input": [9.0, -81.0], "expected": 9.0}, {"input": [9.0, -80.5], "expected": 9.0}, {"input": [9.0, -80.0], "expected": 9.0}, {"input": [9.0, -79.5], "expected": 9.0}, {"input": [9.0, -79.0], "expected": 9.0}, {"input": [9.0, -78.5], "expected": 9.0}, {"input": [9.0, -78.0], "expected": 9.0}, {"input": [9.0, -77.5], "expected": 9.0}, {"input": [9.0, -77.0], "expected": 9.0}, {"input": [9.0, -76.5], "expected": 9.0}, {"input": [9.0, -76.0], "expected": 9.0}, {"input": [9.0, -75.5], "expected": 9.0}, {"input": [9.0, -75.0], "expected": 9.0}, {"input": [9.0, -74.5], "expected": 9.0}, {"input": [9.0, -74.0], "expected": 9.0}, {"input": [9.0, -73.5], "expected": 9.0}, {"input": [9.0, -73.0], "expected": 9.0}, {"input": [9.0, -72.5], "expected": 9.0}, {"input": [9.0, -72.0], "expected": 9.0}, {"input": [9.0, -71.5], "expected": 9.0}, {"input": [9.0, -71.0], "expected": 9.0}, {"input": [9.0, -70.5], "expected": 9.0}, {"input": [9.0, -70.0], "expected": 9.0}, {"input": [9.0, -69.5], "expected": 9.0}, {"input": [9.0, -69.0], "expected": 9.0}, {"input": [9.0, -68.5], "expected": 9.0}, {"input": [9.0, -68.0], "expected": 9.0}, {"input": [9.0, -67.5], "expected": 9.0}, {"input": [9.0, -67.0], "expected": 9.0}, {"input": [9.0, -66.5], "expected": 9.0}, {"input": [9.0, -66.0], "expected": 9.0}, {"input": [9.0, -65.5], "expected": 9.0}, {"input": [9.0, -65.0], "expected": 9.0}, {"input": [9.0, -64.5], "expected": 9.0}, {"input": [9.0, -64.0], "expected": 9.0}, {"input": [9.0, -63.5], "expected": 9.0}, {"input": [9.0, -63.0], "expected": 9.0}, {"input": [9.0, -62.5], "expected": 9.0}, {"input": [9.0, -62.0], "expected": 9.0}, {"input": [9.0, -61.5], "expected": 9.0}, {"input": [9.0, -61.0], "expected": 9.0}, {"input": [9.0, -60.5], "expected": 9.0}, {"input": [9.0, -60.0], "expected": 9.0}, {"input": [9.0, -59.5], "expected": 9.0}, {"input": [9.0, -59.0], "expected": 9.0}, {"input": [9.0, -58.5], "expected": 9.0}, {"input": [9.0, -58.0], "expected": 9.0}, {"input": [9.0, -57.5], "expected": 9.0}, {"input": [9.0, -57.0], "expected": 9.0}, {"input": [9.0, -56.5], "expected": 9.0}, {"input": [9.0, -56.0], "expected": 9.0}, {"input": [9.0, -55.5], "expected": 9.0}, {"input": [9.0, -55.0], "expected": 9.0}, {"input": [9.0, -54.5], "expected": 9.0}, {"input": [9.0, -54.0], "expected": 9.0}, {"input": [9.0, -53.5], "expected": 9.0}, {"input": [9.0, -53.0], "expected": 9.0}, {"input": [9.0, -52.5], "expected": 9.0}, {"input": [9.0, -52.0], "expected": 9.0}, {"input": [9.0, -51.5], "expected": 9.0}, {"input": [9.0, -51.0], "expected": 9.0}, {"input": [9.0, -50.5], "expected": 9.0}, {"input": [9.0, -50.0], "expected": 9.0}, {"input": [9.0, -49.5], "expected": 9.0}, {"input": [9.0, -49.0], "expected": 9.0}, {"input": [9.0, -48.5], "expected": 9.0}, {"input": [9.0, -48.0], "expected": 9.0}, {"input": [9.0, -47.5], "expected": 9.0}, {"input": [9.0, -47.0], "expected": 9.0}, {"input": [9.0, -46.5], "expected": 9.0}, {"input": [9.0, -46.0], "expected": 9.0}, {"input": [9.0, -45.5], "expected": 9.0}, {"input": [9.0, -45.0], "expected": 9.0}, {"input": [9.0, -44.5], "expected": 9.0}, {"input": [9.0, -44.0], "expected": 9.0}, {"input": [9.0, -43.5], "expected": 9.0}, {"input": [9.0, -43.0], "expected": 9.0}, {"input": [9.0, -42.5], "expected": 9.0}, {"input": [9.0, -42.0], "expected": 9.0}, {"input": [9.0, -41.5], "expected": 9.0}, {"input": [9.0, -41.0], "expected": 9.0}, {"input": [9.0, -40.5], "expected": 9.0}, {"input": [9.0, -40.0], "expected": 9.0}, {"input": [9.0, -39.5], "expected": 9.0}, {"input": [9.0, -39.0], "expected": 9.0}, {"input": [9.0, -38.5], "expected": 9.0}, {"input": [9.0, -38.0], "expected": 9.0}, {"input": [9.0, -37.5], "expected": 9.0}, {"input": [9.0, -37.0], "expected": 9.0}, {"input": [9.0, -36.5], "expected": 9.0}, {"input": [9.0, -36.0], "expected": 9.0}, {"input": [9.0, -35.5], "expected": 9.0}, {"input": [9.0, -35.0], "expected": 9.0}, {"input": [9.0, -34.5], "expected": 9.0}, {"input": [9.0, -34.0], "expected": 9.0}, {"input": [9.0, -33.5], "expected": 9.0}, {"input": [9.0, -33.0], "expected": 9.0}, {"input": [9.0, -32.5], "expected": 9.0}, {"input": [9.0, -32.0], "expected": 9.0}, {"input": [9.0, -31.5], "expected": 9.0}, {"input": [9.0, -31.0], "expected": 9.0}, {"input": [9.0, -30.5], "expected": 9.0}, {"input": [9.0, -30.0], "expected": 9.0}, {"input": [9.0, -29.5], "expected": 9.0}, {"input": [9.0, -29.0], "expected": 9.0}, {"input": [9.0, -28.5], "expected": 9.0}, {"input": [9.0, -28.0], "expected": 9.0}, {"input": [9.0, -27.5], "expected": 9.0}, {"input": [9.0, -27.0], "expected": 9.0}, {"input": [9.0, -26.5], "expected": 9.0}, {"input": [9.0, -26.0], "expected": 9.0}, {"input": [9.0, -25.5], "expected": 9.000000000000002}, {"input": [9.0, -25.0], "expected": 9.000000000000002}, {"input": [9.0, -24.5], "expected": 9.000000000000004}, {"input": [9.0, -24.0], "expected": 9.000000000000005}, {"input": [9.0, -23.5], "expected": 9.000000000000007}, {"input": [9.0, -23.0], "expected": 9.000000000000012}, {"input": [9.0, -22.5], "expected": 9.000000000000021}, {"input": [9.0, -22.0], "expected": 9.000000000000034}, {"input": [9.0, -21.5], "expected": 9.000000000000057}, {"input": [9.0, -21.0], "expected": 9.000000000000094}, {"input": [9.0, -20.5], "expected": 9.000000000000155}, {"input": [9.0, -20.0], "expected": 9.000000000000254}, {"input": [9.0, -19.5], "expected": 9.00000000000042}, {"input": [9.0, -19.0], "expected": 9.000000000000691}, {"input": [9.0, -18.5], "expected": 9.00000000000114}, {"input": [9.0, -18.0], "expected": 9.00000000000188}, {"input": [9.0, -17.5], "expected": 9.000000000003098}, {"input": [9.0, -17.0], "expected": 9.000000000005109}, {"input": [9.0, -16.5], "expected": 9.000000000008423}, {"input": [9.0, -16.0], "expected": 9.000000000013888}, {"input": [9.0, -15.5], "expected": 9.000000000022897}, {"input": [9.0, -15.0], "expected": 9.000000000037751}, {"input": [9.0, -14.5], "expected": 9.000000000062242}, {"input": [9.0, -14.0], "expected": 9.000000000102618}, {"input": [9.0, -13.5], "expected": 9.000000000169189}, {"input": [9.0, -13.0], "expected": 9.000000000278947}, {"input": [9.0, -12.5], "expected": 9.000000000459906}, {"input": [9.0, -12.0], "expected": 9.000000000758256}, {"input": [9.0, -11.5], "expected": 9.000000001250152}, {"input": [9.0, -11.0], "expected": 9.000000002061153}, {"input": [9.0, -10.5], "expected": 9.000000003398268}, {"input": [9.0, -10.0], "expected": 9.000000005602796}, {"input": [9.0, -9.5], "expected": 9.00000000923745}, {"input": [9.0, -9.0], "expected": 9.000000015229979}, {"input": [9.0, -8.5], "expected": 9.00000002510999}, {"input": [9.0, -8.0], "expected": 9.000000041399376}, {"input": [9.0, -7.5], "expected": 9.000000068256032}, {"input": [9.0, -7.0], "expected": 9.000000112535169}, {"input": [9.0, -6.5], "expected": 9.000000185539118}, {"input": [9.0, -6.0], "expected": 9.000000305902274}, {"input": [9.0, -5.5], "expected": 9.000000504347536}, {"input": [9.0, -5.0], "expected": 9.000000831528373}, {"input": [9.0, -4.5], "expected": 9.000001370958147}, {"input": [9.0, -4.0], "expected": 9.000002260326852}, {"input": [9.0, -3.5], "expected": 9.000003726646229}, {"input": [9.0, -3.0], "expected": 9.000006144193478}, {"input": [9.0, -2.5], "expected": 9.00001013004229}, {"input": [9.0, -2.0], "expected": 9.000016701561318}, {"input": [9.0, -1.5], "expected": 9.00002753607023}, {"input": [9.0, -1.0], "expected": 9.000045398899218}, {"input": [9.0, -0.5], "expected": 9.000074849028628}, {"input": [9.0, 0.0], "expected": 9.000123402189724}, {"input": [9.0, 0.5], "expected": 9.00020344767213}, {"input": [9.0, 1.0], "expected": 9.000335406372896}, {"input": [9.0, 1.5], "expected": 9.000552931475362}, {"input": [9.0, 2.0], "expected": 9.000911466453774}, {"input": [9.0, 2.5], "expected": 9.001502310159754}, {"input": [9.0, 3.0], "expected": 9.00247568513773}, {"input": [9.0, 3.5], "expected": 9.00407844327057}, {"input": [9.0, 4.0], "expected": 9.006715348489118}, {"input": [9.0, 4.5], "expected": 9.011047744848593}, {"input": [9.0, 5.0], "expected": 9.01814992791781}, {"input": [9.0, 5.5], "expected": 9.02975041827262}, {"input": [9.0, 6.0], "expected": 9.048587351573742}, {"input": [9.0, 6.5], "expected": 9.078889734292549}, {"input": [9.0, 7.0], "expected": 9.126928011042972}, {"input": [9.0, 7.5], "expected": 9.201413277982752}, {"input": [9.0, 8.0], "expected": 9.313261687518223}, {"input": [9.0, 8.5], "expected": 9.474076984180106}, {"input": [9.0, 9.0], "expected": 9.693147180559945}, {"input": [9.0, 9.5], "expected": 9.974076984180106}, {"input": [9.0, 10.0], "expected": 10.313261687518223}, {"input": [9.0, 10.5], "expected": 10.701413277982752}, {"input": [9.0, 11.0], "expected": 11.126928011042972}, {"input": [9.0, 11.5], "expected": 11.578889734292549}, {"input": [9.0, 12.0], "expected": 12.048587351573742}, {"input": [9.0, 12.5], "expected": 12.52975041827262}, {"input": [9.0, 13.0], "expected": 13.01814992791781}, {"input": [9.0, 13.5], "expected": 13.511047744848593}, {"input": [9.0, 14.0], "expected": 14.006715348489118}, {"input": [9.0, 14.5], "expected": 14.50407844327057}, {"input": [9.0, 15.0], "expected": 15.00247568513773}, {"input": [9.0, 15.5], "expected": 15.501502310159754}, {"input": [9.0, 16.0], "expected": 16.000911466453775}, {"input": [9.0, 16.5], "expected": 16.50055293147536}, {"input": [9.0, 17.0], "expected": 17.000335406372894}, {"input": [9.0, 17.5], "expected": 17.500203447672128}, {"input": [9.0, 18.0], "expected": 18.000123402189722}, {"input": [9.0, 18.5], "expected": 18.50007484902863}, {"input": [9.0, 19.0], "expected": 19.000045398899218}, {"input": [9.0, 19.5], "expected": 19.500027536070228}, {"input": [9.0, 20.0], "expected": 20.000016701561318}, {"input": [9.0, 20.5], "expected": 20.50001013004229}, {"input": [9.0, 21.0], "expected": 21.000006144193478}, {"input": [9.0, 21.5], "expected": 21.500003726646227}, {"input": [9.0, 22.0], "expected": 22.000002260326852}, {"input": [9.0, 22.5], "expected": 22.500001370958145}, {"input": [9.0, 23.0], "expected": 23.000000831528375}, {"input": [9.0, 23.5], "expected": 23.500000504347536}, {"input": [9.0, 24.0], "expected": 24.000000305902272}, {"input": [9.0, 24.5], "expected": 24.50000018553912}, {"input": [9.0, 25.0], "expected": 25.00000011253517}, {"input": [9.0, 25.5], "expected": 25.500000068256032}, {"input": [9.0, 26.0], "expected": 26.000000041399375}, {"input": [9.0, 26.5], "expected": 26.50000002510999}, {"input": [9.0, 27.0], "expected": 27.00000001522998}, {"input": [9.0, 27.5], "expected": 27.50000000923745}, {"input": [9.0, 28.0], "expected": 28.000000005602796}, {"input": [9.0, 28.5], "expected": 28.500000003398267}, {"input": [9.0, 29.0], "expected": 29.000000002061153}, {"input": [9.0, 29.5], "expected": 29.500000001250154}, {"input": [9.0, 30.0], "expected": 30.000000000758256}, {"input": [9.0, 30.5], "expected": 30.500000000459906}, {"input": [9.0, 31.0], "expected": 31.00000000027895}, {"input": [9.0, 31.5], "expected": 31.50000000016919}, {"input": [9.0, 32.0], "expected": 32.00000000010262}, {"input": [9.0, 32.5], "expected": 32.50000000006224}, {"input": [9.0, 33.0], "expected": 33.00000000003775}, {"input": [9.0, 33.5], "expected": 33.5000000000229}, {"input": [9.0, 34.0], "expected": 34.00000000001389}, {"input": [9.0, 34.5], "expected": 34.50000000000842}, {"input": [9.0, 35.0], "expected": 35.00000000000511}, {"input": [9.0, 35.5], "expected": 35.5000000000031}, {"input": [9.0, 36.0], "expected": 36.00000000000188}, {"input": [9.0, 36.5], "expected": 36.50000000000114}, {"input": [9.0, 37.0], "expected": 37.00000000000069}, {"input": [9.0, 37.5], "expected": 37.50000000000042}, {"input": [9.0, 38.0], "expected": 38.000000000000256}, {"input": [9.0, 38.5], "expected": 38.500000000000156}, {"input": [9.0, 39.0], "expected": 39.00000000000009}, {"input": [9.0, 39.5], "expected": 39.50000000000006}, {"input": [9.0, 40.0], "expected": 40.000000000000036}, {"input": [9.0, 40.5], "expected": 40.50000000000002}, {"input": [9.0, 41.0], "expected": 41.000000000000014}, {"input": [9.0, 41.5], "expected": 41.50000000000001}, {"input": [9.0, 42.0], "expected": 42.00000000000001}, {"input": [9.0, 42.5], "expected": 42.5}, {"input": [9.0, 43.0], "expected": 43.0}, {"input": [9.0, 43.5], "expected": 43.5}, {"input": [9.0, 44.0], "expected": 44.0}, {"input": [9.0, 44.5], "expected": 44.5}, {"input": [9.0, 45.0], "expected": 45.0}, {"input": [9.0, 45.5], "expected": 45.5}, {"input": [9.0, 46.0], "expected": 46.0}, {"input": [9.0, 46.5], "expected": 46.5}, {"input": [9.0, 47.0], "expected": 47.0}, {"input": [9.0, 47.5], "expected": 47.5}, {"input": [9.0, 48.0], "expected": 48.0}, {"input": [9.0, 48.5], "expected": 48.5}, {"input": [9.0, 49.0], "expected": 49.0}, {"input": [9.0, 49.5], "expected": 49.5}, {"input": [9.0, 50.0], "expected": 50.0}, {"input": [9.0, 50.5], "expected": 50.5}, {"input": [9.0, 51.0], "expected": 51.0}, {"input": [9.0, 51.5], "expected": 51.5}, {"input": [9.0, 52.0], "expected": 52.0}, {"input": [9.0, 52.5], "expected": 52.5}, {"input": [9.0, 53.0], "expected": 53.0}, {"input": [9.0, 53.5], "expected": 53.5}, {"input": [9.0, 54.0], "expected": 54.0}, {"input": [9.0, 54.5], "expected": 54.5}, {"input": [9.0, 55.0], "expected": 55.0}, {"input": [9.0, 55.5], "expected": 55.5}, {"input": [9.0, 56.0], "expected": 56.0}, {"input": [9.0, 56.5], "expected": 56.5}, {"input": [9.0, 57.0], "expected": 57.0}, {"input": [9.0, 57.5], "expected": 57.5}, {"input": [9.0, 58.0], "expected": 58.0}, {"input": [9.0, 58.5], "expected": 58.5}, {"input": [9.0, 59.0], "expected": 59.0}, {"input": [9.0, 59.5], "expected": 59.5}, {"input": [9.0, 60.0], "expected": 60.0}, {"input": [9.0, 60.5], "expected": 60.5}, {"input": [9.0, 61.0], "expected": 61.0}, {"input": [9.0, 61.5], "expected": 61.5}, {"input": [9.0, 62.0], "expected": 62.0}, {"input": [9.0, 62.5], "expected": 62.5}, {"input": [9.0, 63.0], "expected": 63.0}, {"input": [9.0, 63.5], "expected": 63.5}, {"input": [9.0, 64.0], "expected": 64.0}, {"input": [9.0, 64.5], "expected": 64.5}, {"input": [9.0, 65.0], "expected": 65.0}, {"input": [9.0, 65.5], "expected": 65.5}, {"input": [9.0, 66.0], "expected": 66.0}, {"input": [9.0, 66.5], "expected": 66.5}, {"input": [9.0, 67.0], "expected": 67.0}, {"input": [9.0, 67.5], "expected": 67.5}, {"input": [9.0, 68.0], "expected": 68.0}, {"input": [9.0, 68.5], "expected": 68.5}, {"input": [9.0, 69.0], "expected": 69.0}, {"input": [9.0, 69.5], "expected": 69.5}, {"input": [9.0, 70.0], "expected": 70.0}, {"input": [9.0, 70.5], "expected": 70.5}, {"input": [9.0, 71.0], "expected": 71.0}, {"input": [9.0, 71.5], "expected": 71.5}, {"input": [9.0, 72.0], "expected": 72.0}, {"input": [9.0, 72.5], "expected": 72.5}, {"input": [9.0, 73.0], "expected": 73.0}, {"input": [9.0, 73.5], "expected": 73.5}, {"input": [9.0, 74.0], "expected": 74.0}, {"input": [9.0, 74.5], "expected": 74.5}, {"input": [9.0, 75.0], "expected": 75.0}, {"input": [9.0, 75.5], "expected": 75.5}, {"input": [9.0, 76.0], "expected": 76.0}, {"input": [9.0, 76.5], "expected": 76.5}, {"input": [9.0, 77.0], "expected": 77.0}, {"input": [9.0, 77.5], "expected": 77.5}, {"input": [9.0, 78.0], "expected": 78.0}, {"input": [9.0, 78.5], "expected": 78.5}, {"input": [9.0, 79.0], "expected": 79.0}, {"input": [9.0, 79.5], "expected": 79.5}, {"input": [9.0, 80.0], "expected": 80.0}, {"input": [9.0, 80.5], "expected": 80.5}, {"input": [9.0, 81.0], "expected": 81.0}, {"input": [9.0, 81.5], "expected": 81.5}, {"input": [9.0, 82.0], "expected": 82.0}, {"input": [9.0, 82.5], "expected": 82.5}, {"input": [9.0, 83.0], "expected": 83.0}, {"input": [9.0, 83.5], "expected": 83.5}, {"input": [9.0, 84.0], "expected": 84.0}, {"input": [9.0, 84.5], "expected": 84.5}, {"input": [9.0, 85.0], "expected": 85.0}, {"input": [9.0, 85.5], "expected": 85.5}, {"input": [9.0, 86.0], "expected": 86.0}, {"input": [9.0, 86.5], "expected": 86.5}, {"input": [9.0, 87.0], "expected": 87.0}, {"input": [9.0, 87.5], "expected": 87.5}, {"input": [9.0, 88.0], "expected": 88.0}, {"input": [9.0, 88.5], "expected": 88.5}, {"input": [9.0, 89.0], "expected": 89.0}, {"input": [9.0, 89.5], "expected": 89.5}, {"input": [9.0, 90.0], "expected": 90.0}, {"input": [9.0, 90.5], "expected": 90.5}, {"input": [9.0, 91.0], "expected": 91.0}, {"input": [9.0, 91.5], "expected": 91.5}, {"input": [9.0, 92.0], "expected": 92.0}, {"input": [9.0, 92.5], "expected": 92.5}, {"input": [9.0, 93.0], "expected": 93.0}, {"input": [9.0, 93.5], "expected": 93.5}, {"input": [9.0, 94.0], "expected": 94.0}, {"input": [9.0, 94.5], "expected": 94.5}, {"input": [9.0, 95.0], "expected": 95.0}, {"input": [9.0, 95.5], "expected": 95.5}, {"input": [9.0, 96.0], "expected": 96.0}, {"input": [9.0, 96.5], "expected": 96.5}, {"input": [9.0, 97.0], "expected": 97.0}, {"input": [9.0, 97.5], "expected": 97.5}, {"input": [9.0, 98.0], "expected": 98.0}, {"input": [9.0, 98.5], "expected": 98.5}, {"input": [9.0, 99.0], "expected": 99.0}, {"input": [9.0, 99.5], "expected": 99.5}, {"input": [9.5, -100.0], "expected": 9.5}, {"input": [9.5, -99.5], "expected": 9.5}, {"input": [9.5, -99.0], "expected": 9.5}, {"input": [9.5, -98.5], "expected": 9.5}, {"input": [9.5, -98.0], "expected": 9.5}, {"input": [9.5, -97.5], "expected": 9.5}, {"input": [9.5, -97.0], "expected": 9.5}, {"input": [9.5, -96.5], "expected": 9.5}, {"input": [9.5, -96.0], "expected": 9.5}, {"input": [9.5, -95.5], "expected": 9.5}, {"input": [9.5, -95.0], "expected": 9.5}, {"input": [9.5, -94.5], "expected": 9.5}, {"input": [9.5, -94.0], "expected": 9.5}, {"input": [9.5, -93.5], "expected": 9.5}, {"input": [9.5, -93.0], "expected": 9.5}, {"input": [9.5, -92.5], "expected": 9.5}, {"input": [9.5, -92.0], "expected": 9.5}, {"input": [9.5, -91.5], "expected": 9.5}, {"input": [9.5, -91.0], "expected": 9.5}, {"input": [9.5, -90.5], "expected": 9.5}, {"input": [9.5, -90.0], "expected": 9.5}, {"input": [9.5, -89.5], "expected": 9.5}, {"input": [9.5, -89.0], "expected": 9.5}, {"input": [9.5, -88.5], "expected": 9.5}, {"input": [9.5, -88.0], "expected": 9.5}, {"input": [9.5, -87.5], "expected": 9.5}, {"input": [9.5, -87.0], "expected": 9.5}, {"input": [9.5, -86.5], "expected": 9.5}, {"input": [9.5, -86.0], "expected": 9.5}, {"input": [9.5, -85.5], "expected": 9.5}, {"input": [9.5, -85.0], "expected": 9.5}, {"input": [9.5, -84.5], "expected": 9.5}, {"input": [9.5, -84.0], "expected": 9.5}, {"input": [9.5, -83.5], "expected": 9.5}, {"input": [9.5, -83.0], "expected": 9.5}, {"input": [9.5, -82.5], "expected": 9.5}, {"input": [9.5, -82.0], "expected": 9.5}, {"input": [9.5, -81.5], "expected": 9.5}, {"input": [9.5, -81.0], "expected": 9.5}, {"input": [9.5, -80.5], "expected": 9.5}, {"input": [9.5, -80.0], "expected": 9.5}, {"input": [9.5, -79.5], "expected": 9.5}, {"input": [9.5, -79.0], "expected": 9.5}, {"input": [9.5, -78.5], "expected": 9.5}, {"input": [9.5, -78.0], "expected": 9.5}, {"input": [9.5, -77.5], "expected": 9.5}, {"input": [9.5, -77.0], "expected": 9.5}, {"input": [9.5, -76.5], "expected": 9.5}, {"input": [9.5, -76.0], "expected": 9.5}, {"input": [9.5, -75.5], "expected": 9.5}, {"input": [9.5, -75.0], "expected": 9.5}, {"input": [9.5, -74.5], "expected": 9.5}, {"input": [9.5, -74.0], "expected": 9.5}, {"input": [9.5, -73.5], "expected": 9.5}, {"input": [9.5, -73.0], "expected": 9.5}, {"input": [9.5, -72.5], "expected": 9.5}, {"input": [9.5, -72.0], "expected": 9.5}, {"input": [9.5, -71.5], "expected": 9.5}, {"input": [9.5, -71.0], "expected": 9.5}, {"input": [9.5, -70.5], "expected": 9.5}, {"input": [9.5, -70.0], "expected": 9.5}, {"input": [9.5, -69.5], "expected": 9.5}, {"input": [9.5, -69.0], "expected": 9.5}, {"input": [9.5, -68.5], "expected": 9.5}, {"input": [9.5, -68.0], "expected": 9.5}, {"input": [9.5, -67.5], "expected": 9.5}, {"input": [9.5, -67.0], "expected": 9.5}, {"input": [9.5, -66.5], "expected": 9.5}, {"input": [9.5, -66.0], "expected": 9.5}, {"input": [9.5, -65.5], "expected": 9.5}, {"input": [9.5, -65.0], "expected": 9.5}, {"input": [9.5, -64.5], "expected": 9.5}, {"input": [9.5, -64.0], "expected": 9.5}, {"input": [9.5, -63.5], "expected": 9.5}, {"input": [9.5, -63.0], "expected": 9.5}, {"input": [9.5, -62.5], "expected": 9.5}, {"input": [9.5, -62.0], "expected": 9.5}, {"input": [9.5, -61.5], "expected": 9.5}, {"input": [9.5, -61.0], "expected": 9.5}, {"input": [9.5, -60.5], "expected": 9.5}, {"input": [9.5, -60.0], "expected": 9.5}, {"input": [9.5, -59.5], "expected": 9.5}, {"input": [9.5, -59.0], "expected": 9.5}, {"input": [9.5, -58.5], "expected": 9.5}, {"input": [9.5, -58.0], "expected": 9.5}, {"input": [9.5, -57.5], "expected": 9.5}, {"input": [9.5, -57.0], "expected": 9.5}, {"input": [9.5, -56.5], "expected": 9.5}, {"input": [9.5, -56.0], "expected": 9.5}, {"input": [9.5, -55.5], "expected": 9.5}, {"input": [9.5, -55.0], "expected": 9.5}, {"input": [9.5, -54.5], "expected": 9.5}, {"input": [9.5, -54.0], "expected": 9.5}, {"input": [9.5, -53.5], "expected": 9.5}, {"input": [9.5, -53.0], "expected": 9.5}, {"input": [9.5, -52.5], "expected": 9.5}, {"input": [9.5, -52.0], "expected": 9.5}, {"input": [9.5, -51.5], "expected": 9.5}, {"input": [9.5, -51.0], "expected": 9.5}, {"input": [9.5, -50.5], "expected": 9.5}, {"input": [9.5, -50.0], "expected": 9.5}, {"input": [9.5, -49.5], "expected": 9.5}, {"input": [9.5, -49.0], "expected": 9.5}, {"input": [9.5, -48.5], "expected": 9.5}, {"input": [9.5, -48.0], "expected": 9.5}, {"input": [9.5, -47.5], "expected": 9.5}, {"input": [9.5, -47.0], "expected": 9.5}, {"input": [9.5, -46.5], "expected": 9.5}, {"input": [9.5, -46.0], "expected": 9.5}, {"input": [9.5, -45.5], "expected": 9.5}, {"input": [9.5, -45.0], "expected": 9.5}, {"input": [9.5, -44.5], "expected": 9.5}, {"input": [9.5, -44.0], "expected": 9.5}, {"input": [9.5, -43.5], "expected": 9.5}, {"input": [9.5, -43.0], "expected": 9.5}, {"input": [9.5, -42.5], "expected": 9.5}, {"input": [9.5, -42.0], "expected": 9.5}, {"input": [9.5, -41.5], "expected": 9.5}, {"input": [9.5, -41.0], "expected": 9.5}, {"input": [9.5, -40.5], "expected": 9.5}, {"input": [9.5, -40.0], "expected": 9.5}, {"input": [9.5, -39.5], "expected": 9.5}, {"input": [9.5, -39.0], "expected": 9.5}, {"input": [9.5, -38.5], "expected": 9.5}, {"input": [9.5, -38.0], "expected": 9.5}, {"input": [9.5, -37.5], "expected": 9.5}, {"input": [9.5, -37.0], "expected": 9.5}, {"input": [9.5, -36.5], "expected": 9.5}, {"input": [9.5, -36.0], "expected": 9.5}, {"input": [9.5, -35.5], "expected": 9.5}, {"input": [9.5, -35.0], "expected": 9.5}, {"input": [9.5, -34.5], "expected": 9.5}, {"input": [9.5, -34.0], "expected": 9.5}, {"input": [9.5, -33.5], "expected": 9.5}, {"input": [9.5, -33.0], "expected": 9.5}, {"input": [9.5, -32.5], "expected": 9.5}, {"input": [9.5, -32.0], "expected": 9.5}, {"input": [9.5, -31.5], "expected": 9.5}, {"input": [9.5, -31.0], "expected": 9.5}, {"input": [9.5, -30.5], "expected": 9.5}, {"input": [9.5, -30.0], "expected": 9.5}, {"input": [9.5, -29.5], "expected": 9.5}, {"input": [9.5, -29.0], "expected": 9.5}, {"input": [9.5, -28.5], "expected": 9.5}, {"input": [9.5, -28.0], "expected": 9.5}, {"input": [9.5, -27.5], "expected": 9.5}, {"input": [9.5, -27.0], "expected": 9.5}, {"input": [9.5, -26.5], "expected": 9.5}, {"input": [9.5, -26.0], "expected": 9.5}, {"input": [9.5, -25.5], "expected": 9.5}, {"input": [9.5, -25.0], "expected": 9.500000000000002}, {"input": [9.5, -24.5], "expected": 9.500000000000002}, {"input": [9.5, -24.0], "expected": 9.500000000000004}, {"input": [9.5, -23.5], "expected": 9.500000000000005}, {"input": [9.5, -23.0], "expected": 9.500000000000007}, {"input": [9.5, -22.5], "expected": 9.500000000000012}, {"input": [9.5, -22.0], "expected": 9.500000000000021}, {"input": [9.5, -21.5], "expected": 9.500000000000034}, {"input": [9.5, -21.0], "expected": 9.500000000000057}, {"input": [9.5, -20.5], "expected": 9.500000000000094}, {"input": [9.5, -20.0], "expected": 9.500000000000155}, {"input": [9.5, -19.5], "expected": 9.500000000000254}, {"input": [9.5, -19.0], "expected": 9.50000000000042}, {"input": [9.5, -18.5], "expected": 9.500000000000691}, {"input": [9.5, -18.0], "expected": 9.50000000000114}, {"input": [9.5, -17.5], "expected": 9.50000000000188}, {"input": [9.5, -17.0], "expected": 9.500000000003098}, {"input": [9.5, -16.5], "expected": 9.500000000005109}, {"input": [9.5, -16.0], "expected": 9.500000000008423}, {"input": [9.5, -15.5], "expected": 9.500000000013888}, {"input": [9.5, -15.0], "expected": 9.500000000022897}, {"input": [9.5, -14.5], "expected": 9.500000000037751}, {"input": [9.5, -14.0], "expected": 9.500000000062242}, {"input": [9.5, -13.5], "expected": 9.500000000102618}, {"input": [9.5, -13.0], "expected": 9.500000000169189}, {"input": [9.5, -12.5], "expected": 9.500000000278947}, {"input": [9.5, -12.0], "expected": 9.500000000459906}, {"input": [9.5, -11.5], "expected": 9.500000000758256}, {"input": [9.5, -11.0], "expected": 9.500000001250152}, {"input": [9.5, -10.5], "expected": 9.500000002061153}, {"input": [9.5, -10.0], "expected": 9.500000003398268}, {"input": [9.5, -9.5], "expected": 9.500000005602796}, {"input": [9.5, -9.0], "expected": 9.50000000923745}, {"input": [9.5, -8.5], "expected": 9.500000015229979}, {"input": [9.5, -8.0], "expected": 9.50000002510999}, {"input": [9.5, -7.5], "expected": 9.500000041399376}, {"input": [9.5, -7.0], "expected": 9.500000068256032}, {"input": [9.5, -6.5], "expected": 9.500000112535169}, {"input": [9.5, -6.0], "expected": 9.500000185539118}, {"input": [9.5, -5.5], "expected": 9.500000305902274}, {"input": [9.5, -5.0], "expected": 9.500000504347536}, {"input": [9.5, -4.5], "expected": 9.500000831528373}, {"input": [9.5, -4.0], "expected": 9.500001370958147}, {"input": [9.5, -3.5], "expected": 9.500002260326852}, {"input": [9.5, -3.0], "expected": 9.500003726646229}, {"input": [9.5, -2.5], "expected": 9.500006144193478}, {"input": [9.5, -2.0], "expected": 9.50001013004229}, {"input": [9.5, -1.5], "expected": 9.500016701561318}, {"input": [9.5, -1.0], "expected": 9.50002753607023}, {"input": [9.5, -0.5], "expected": 9.500045398899218}, {"input": [9.5, 0.0], "expected": 9.500074849028628}, {"input": [9.5, 0.5], "expected": 9.500123402189724}, {"input": [9.5, 1.0], "expected": 9.50020344767213}, {"input": [9.5, 1.5], "expected": 9.500335406372896}, {"input": [9.5, 2.0], "expected": 9.500552931475362}, {"input": [9.5, 2.5], "expected": 9.500911466453774}, {"input": [9.5, 3.0], "expected": 9.501502310159754}, {"input": [9.5, 3.5], "expected": 9.50247568513773}, {"input": [9.5, 4.0], "expected": 9.50407844327057}, {"input": [9.5, 4.5], "expected": 9.506715348489118}, {"input": [9.5, 5.0], "expected": 9.511047744848593}, {"input": [9.5, 5.5], "expected": 9.51814992791781}, {"input": [9.5, 6.0], "expected": 9.52975041827262}, {"input": [9.5, 6.5], "expected": 9.548587351573742}, {"input": [9.5, 7.0], "expected": 9.578889734292549}, {"input": [9.5, 7.5], "expected": 9.626928011042972}, {"input": [9.5, 8.0], "expected": 9.701413277982752}, {"input": [9.5, 8.5], "expected": 9.813261687518223}, {"input": [9.5, 9.0], "expected": 9.974076984180106}, {"input": [9.5, 9.5], "expected": 10.193147180559945}, {"input": [9.5, 10.0], "expected": 10.474076984180106}, {"input": [9.5, 10.5], "expected": 10.813261687518223}, {"input": [9.5, 11.0], "expected": 11.201413277982752}, {"input": [9.5, 11.5], "expected": 11.626928011042972}, {"input": [9.5, 12.0], "expected": 12.078889734292549}, {"input": [9.5, 12.5], "expected": 12.548587351573742}, {"input": [9.5, 13.0], "expected": 13.02975041827262}, {"input": [9.5, 13.5], "expected": 13.51814992791781}, {"input": [9.5, 14.0], "expected": 14.011047744848593}, {"input": [9.5, 14.5], "expected": 14.506715348489118}, {"input": [9.5, 15.0], "expected": 15.00407844327057}, {"input": [9.5, 15.5], "expected": 15.50247568513773}, {"input": [9.5, 16.0], "expected": 16.001502310159754}, {"input": [9.5, 16.5], "expected": 16.500911466453775}, {"input": [9.5, 17.0], "expected": 17.00055293147536}, {"input": [9.5, 17.5], "expected": 17.500335406372894}, {"input": [9.5, 18.0], "expected": 18.000203447672128}, {"input": [9.5, 18.5], "expected": 18.500123402189722}, {"input": [9.5, 19.0], "expected": 19.00007484902863}, {"input": [9.5, 19.5], "expected": 19.500045398899218}, {"input": [9.5, 20.0], "expected": 20.000027536070228}, {"input": [9.5, 20.5], "expected": 20.500016701561318}, {"input": [9.5, 21.0], "expected": 21.00001013004229}, {"input": [9.5, 21.5], "expected": 21.500006144193478}, {"input": [9.5, 22.0], "expected": 22.000003726646227}, {"input": [9.5, 22.5], "expected": 22.500002260326852}, {"input": [9.5, 23.0], "expected": 23.000001370958145}, {"input": [9.5, 23.5], "expected": 23.500000831528375}, {"input": [9.5, 24.0], "expected": 24.000000504347536}, {"input": [9.5, 24.5], "expected": 24.500000305902272}, {"input": [9.5, 25.0], "expected": 25.00000018553912}, {"input": [9.5, 25.5], "expected": 25.50000011253517}, {"input": [9.5, 26.0], "expected": 26.000000068256032}, {"input": [9.5, 26.5], "expected": 26.500000041399375}, {"input": [9.5, 27.0], "expected": 27.00000002510999}, {"input": [9.5, 27.5], "expected": 27.50000001522998}, {"input": [9.5, 28.0], "expected": 28.00000000923745}, {"input": [9.5, 28.5], "expected": 28.500000005602796}, {"input": [9.5, 29.0], "expected": 29.000000003398267}, {"input": [9.5, 29.5], "expected": 29.500000002061153}, {"input": [9.5, 30.0], "expected": 30.000000001250154}, {"input": [9.5, 30.5], "expected": 30.500000000758256}, {"input": [9.5, 31.0], "expected": 31.000000000459906}, {"input": [9.5, 31.5], "expected": 31.50000000027895}, {"input": [9.5, 32.0], "expected": 32.00000000016919}, {"input": [9.5, 32.5], "expected": 32.50000000010262}, {"input": [9.5, 33.0], "expected": 33.00000000006224}, {"input": [9.5, 33.5], "expected": 33.50000000003775}, {"input": [9.5, 34.0], "expected": 34.0000000000229}, {"input": [9.5, 34.5], "expected": 34.50000000001389}, {"input": [9.5, 35.0], "expected": 35.00000000000842}, {"input": [9.5, 35.5], "expected": 35.50000000000511}, {"input": [9.5, 36.0], "expected": 36.0000000000031}, {"input": [9.5, 36.5], "expected": 36.50000000000188}, {"input": [9.5, 37.0], "expected": 37.00000000000114}, {"input": [9.5, 37.5], "expected": 37.50000000000069}, {"input": [9.5, 38.0], "expected": 38.00000000000042}, {"input": [9.5, 38.5], "expected": 38.500000000000256}, {"input": [9.5, 39.0], "expected": 39.000000000000156}, {"input": [9.5, 39.5], "expected": 39.50000000000009}, {"input": [9.5, 40.0], "expected": 40.00000000000006}, {"input": [9.5, 40.5], "expected": 40.500000000000036}, {"input": [9.5, 41.0], "expected": 41.00000000000002}, {"input": [9.5, 41.5], "expected": 41.500000000000014}, {"input": [9.5, 42.0], "expected": 42.00000000000001}, {"input": [9.5, 42.5], "expected": 42.50000000000001}, {"input": [9.5, 43.0], "expected": 43.0}, {"input": [9.5, 43.5], "expected": 43.5}, {"input": [9.5, 44.0], "expected": 44.0}, {"input": [9.5, 44.5], "expected": 44.5}, {"input": [9.5, 45.0], "expected": 45.0}, {"input": [9.5, 45.5], "expected": 45.5}, {"input": [9.5, 46.0], "expected": 46.0}, {"input": [9.5, 46.5], "expected": 46.5}, {"input": [9.5, 47.0], "expected": 47.0}, {"input": [9.5, 47.5], "expected": 47.5}, {"input": [9.5, 48.0], "expected": 48.0}, {"input": [9.5, 48.5], "expected": 48.5}, {"input": [9.5, 49.0], "expected": 49.0}, {"input": [9.5, 49.5], "expected": 49.5}, {"input": [9.5, 50.0], "expected": 50.0}, {"input": [9.5, 50.5], "expected": 50.5}, {"input": [9.5, 51.0], "expected": 51.0}, {"input": [9.5, 51.5], "expected": 51.5}, {"input": [9.5, 52.0], "expected": 52.0}, {"input": [9.5, 52.5], "expected": 52.5}, {"input": [9.5, 53.0], "expected": 53.0}, {"input": [9.5, 53.5], "expected": 53.5}, {"input": [9.5, 54.0], "expected": 54.0}, {"input": [9.5, 54.5], "expected": 54.5}, {"input": [9.5, 55.0], "expected": 55.0}, {"input": [9.5, 55.5], "expected": 55.5}, {"input": [9.5, 56.0], "expected": 56.0}, {"input": [9.5, 56.5], "expected": 56.5}, {"input": [9.5, 57.0], "expected": 57.0}, {"input": [9.5, 57.5], "expected": 57.5}, {"input": [9.5, 58.0], "expected": 58.0}, {"input": [9.5, 58.5], "expected": 58.5}, {"input": [9.5, 59.0], "expected": 59.0}, {"input": [9.5, 59.5], "expected": 59.5}, {"input": [9.5, 60.0], "expected": 60.0}, {"input": [9.5, 60.5], "expected": 60.5}, {"input": [9.5, 61.0], "expected": 61.0}, {"input": [9.5, 61.5], "expected": 61.5}, {"input": [9.5, 62.0], "expected": 62.0}, {"input": [9.5, 62.5], "expected": 62.5}, {"input": [9.5, 63.0], "expected": 63.0}, {"input": [9.5, 63.5], "expected": 63.5}, {"input": [9.5, 64.0], "expected": 64.0}, {"input": [9.5, 64.5], "expected": 64.5}, {"input": [9.5, 65.0], "expected": 65.0}, {"input": [9.5, 65.5], "expected": 65.5}, {"input": [9.5, 66.0], "expected": 66.0}, {"input": [9.5, 66.5], "expected": 66.5}, {"input": [9.5, 67.0], "expected": 67.0}, {"input": [9.5, 67.5], "expected": 67.5}, {"input": [9.5, 68.0], "expected": 68.0}, {"input": [9.5, 68.5], "expected": 68.5}, {"input": [9.5, 69.0], "expected": 69.0}, {"input": [9.5, 69.5], "expected": 69.5}, {"input": [9.5, 70.0], "expected": 70.0}, {"input": [9.5, 70.5], "expected": 70.5}, {"input": [9.5, 71.0], "expected": 71.0}, {"input": [9.5, 71.5], "expected": 71.5}, {"input": [9.5, 72.0], "expected": 72.0}, {"input": [9.5, 72.5], "expected": 72.5}, {"input": [9.5, 73.0], "expected": 73.0}, {"input": [9.5, 73.5], "expected": 73.5}, {"input": [9.5, 74.0], "expected": 74.0}, {"input": [9.5, 74.5], "expected": 74.5}, {"input": [9.5, 75.0], "expected": 75.0}, {"input": [9.5, 75.5], "expected": 75.5}, {"input": [9.5, 76.0], "expected": 76.0}, {"input": [9.5, 76.5], "expected": 76.5}, {"input": [9.5, 77.0], "expected": 77.0}, {"input": [9.5, 77.5], "expected": 77.5}, {"input": [9.5, 78.0], "expected": 78.0}, {"input": [9.5, 78.5], "expected": 78.5}, {"input": [9.5, 79.0], "expected": 79.0}, {"input": [9.5, 79.5], "expected": 79.5}, {"input": [9.5, 80.0], "expected": 80.0}, {"input": [9.5, 80.5], "expected": 80.5}, {"input": [9.5, 81.0], "expected": 81.0}, {"input": [9.5, 81.5], "expected": 81.5}, {"input": [9.5, 82.0], "expected": 82.0}, {"input": [9.5, 82.5], "expected": 82.5}, {"input": [9.5, 83.0], "expected": 83.0}, {"input": [9.5, 83.5], "expected": 83.5}, {"input": [9.5, 84.0], "expected": 84.0}, {"input": [9.5, 84.5], "expected": 84.5}, {"input": [9.5, 85.0], "expected": 85.0}, {"input": [9.5, 85.5], "expected": 85.5}, {"input": [9.5, 86.0], "expected": 86.0}, {"input": [9.5, 86.5], "expected": 86.5}, {"input": [9.5, 87.0], "expected": 87.0}, {"input": [9.5, 87.5], "expected": 87.5}, {"input": [9.5, 88.0], "expected": 88.0}, {"input": [9.5, 88.5], "expected": 88.5}, {"input": [9.5, 89.0], "expected": 89.0}, {"input": [9.5, 89.5], "expected": 89.5}, {"input": [9.5, 90.0], "expected": 90.0}, {"input": [9.5, 90.5], "expected": 90.5}, {"input": [9.5, 91.0], "expected": 91.0}, {"input": [9.5, 91.5], "expected": 91.5}, {"input": [9.5, 92.0], "expected": 92.0}, {"input": [9.5, 92.5], "expected": 92.5}, {"input": [9.5, 93.0], "expected": 93.0}, {"input": [9.5, 93.5], "expected": 93.5}, {"input": [9.5, 94.0], "expected": 94.0}, {"input": [9.5, 94.5], "expected": 94.5}, {"input": [9.5, 95.0], "expected": 95.0}, {"input": [9.5, 95.5], "expected": 95.5}, {"input": [9.5, 96.0], "expected": 96.0}, {"input": [9.5, 96.5], "expected": 96.5}, {"input": [9.5, 97.0], "expected": 97.0}, {"input": [9.5, 97.5], "expected": 97.5}, {"input": [9.5, 98.0], "expected": 98.0}, {"input": [9.5, 98.5], "expected": 98.5}, {"input": [9.5, 99.0], "expected": 99.0}, {"input": [9.5, 99.5], "expected": 99.5}, {"input": [10.0, -100.0], "expected": 10.0}, {"input": [10.0, -99.5], "expected": 10.0}, {"input": [10.0, -99.0], "expected": 10.0}, {"input": [10.0, -98.5], "expected": 10.0}, {"input": [10.0, -98.0], "expected": 10.0}, {"input": [10.0, -97.5], "expected": 10.0}, {"input": [10.0, -97.0], "expected": 10.0}, {"input": [10.0, -96.5], "expected": 10.0}, {"input": [10.0, -96.0], "expected": 10.0}, {"input": [10.0, -95.5], "expected": 10.0}, {"input": [10.0, -95.0], "expected": 10.0}, {"input": [10.0, -94.5], "expected": 10.0}, {"input": [10.0, -94.0], "expected": 10.0}, {"input": [10.0, -93.5], "expected": 10.0}, {"input": [10.0, -93.0], "expected": 10.0}, {"input": [10.0, -92.5], "expected": 10.0}, {"input": [10.0, -92.0], "expected": 10.0}, {"input": [10.0, -91.5], "expected": 10.0}, {"input": [10.0, -91.0], "expected": 10.0}, {"input": [10.0, -90.5], "expected": 10.0}, {"input": [10.0, -90.0], "expected": 10.0}, {"input": [10.0, -89.5], "expected": 10.0}, {"input": [10.0, -89.0], "expected": 10.0}, {"input": [10.0, -88.5], "expected": 10.0}, {"input": [10.0, -88.0], "expected": 10.0}, {"input": [10.0, -87.5], "expected": 10.0}, {"input": [10.0, -87.0], "expected": 10.0}, {"input": [10.0, -86.5], "expected": 10.0}, {"input": [10.0, -86.0], "expected": 10.0}, {"input": [10.0, -85.5], "expected": 10.0}, {"input": [10.0, -85.0], "expected": 10.0}, {"input": [10.0, -84.5], "expected": 10.0}, {"input": [10.0, -84.0], "expected": 10.0}, {"input": [10.0, -83.5], "expected": 10.0}, {"input": [10.0, -83.0], "expected": 10.0}, {"input": [10.0, -82.5], "expected": 10.0}, {"input": [10.0, -82.0], "expected": 10.0}, {"input": [10.0, -81.5], "expected": 10.0}, {"input": [10.0, -81.0], "expected": 10.0}, {"input": [10.0, -80.5], "expected": 10.0}, {"input": [10.0, -80.0], "expected": 10.0}, {"input": [10.0, -79.5], "expected": 10.0}, {"input": [10.0, -79.0], "expected": 10.0}, {"input": [10.0, -78.5], "expected": 10.0}, {"input": [10.0, -78.0], "expected": 10.0}, {"input": [10.0, -77.5], "expected": 10.0}, {"input": [10.0, -77.0], "expected": 10.0}, {"input": [10.0, -76.5], "expected": 10.0}, {"input": [10.0, -76.0], "expected": 10.0}, {"input": [10.0, -75.5], "expected": 10.0}, {"input": [10.0, -75.0], "expected": 10.0}, {"input": [10.0, -74.5], "expected": 10.0}, {"input": [10.0, -74.0], "expected": 10.0}, {"input": [10.0, -73.5], "expected": 10.0}, {"input": [10.0, -73.0], "expected": 10.0}, {"input": [10.0, -72.5], "expected": 10.0}, {"input": [10.0, -72.0], "expected": 10.0}, {"input": [10.0, -71.5], "expected": 10.0}, {"input": [10.0, -71.0], "expected": 10.0}, {"input": [10.0, -70.5], "expected": 10.0}, {"input": [10.0, -70.0], "expected": 10.0}, {"input": [10.0, -69.5], "expected": 10.0}, {"input": [10.0, -69.0], "expected": 10.0}, {"input": [10.0, -68.5], "expected": 10.0}, {"input": [10.0, -68.0], "expected": 10.0}, {"input": [10.0, -67.5], "expected": 10.0}, {"input": [10.0, -67.0], "expected": 10.0}, {"input": [10.0, -66.5], "expected": 10.0}, {"input": [10.0, -66.0], "expected": 10.0}, {"input": [10.0, -65.5], "expected": 10.0}, {"input": [10.0, -65.0], "expected": 10.0}, {"input": [10.0, -64.5], "expected": 10.0}, {"input": [10.0, -64.0], "expected": 10.0}, {"input": [10.0, -63.5], "expected": 10.0}, {"input": [10.0, -63.0], "expected": 10.0}, {"input": [10.0, -62.5], "expected": 10.0}, {"input": [10.0, -62.0], "expected": 10.0}, {"input": [10.0, -61.5], "expected": 10.0}, {"input": [10.0, -61.0], "expected": 10.0}, {"input": [10.0, -60.5], "expected": 10.0}, {"input": [10.0, -60.0], "expected": 10.0}, {"input": [10.0, -59.5], "expected": 10.0}, {"input": [10.0, -59.0], "expected": 10.0}, {"input": [10.0, -58.5], "expected": 10.0}, {"input": [10.0, -58.0], "expected": 10.0}, {"input": [10.0, -57.5], "expected": 10.0}, {"input": [10.0, -57.0], "expected": 10.0}, {"input": [10.0, -56.5], "expected": 10.0}, {"input": [10.0, -56.0], "expected": 10.0}, {"input": [10.0, -55.5], "expected": 10.0}, {"input": [10.0, -55.0], "expected": 10.0}, {"input": [10.0, -54.5], "expected": 10.0}, {"input": [10.0, -54.0], "expected": 10.0}, {"input": [10.0, -53.5], "expected": 10.0}, {"input": [10.0, -53.0], "expected": 10.0}, {"input": [10.0, -52.5], "expected": 10.0}, {"input": [10.0, -52.0], "expected": 10.0}, {"input": [10.0, -51.5], "expected": 10.0}, {"input": [10.0, -51.0], "expected": 10.0}, {"input": [10.0, -50.5], "expected": 10.0}, {"input": [10.0, -50.0], "expected": 10.0}, {"input": [10.0, -49.5], "expected": 10.0}, {"input": [10.0, -49.0], "expected": 10.0}, {"input": [10.0, -48.5], "expected": 10.0}, {"input": [10.0, -48.0], "expected": 10.0}, {"input": [10.0, -47.5], "expected": 10.0}, {"input": [10.0, -47.0], "expected": 10.0}, {"input": [10.0, -46.5], "expected": 10.0}, {"input": [10.0, -46.0], "expected": 10.0}, {"input": [10.0, -45.5], "expected": 10.0}, {"input": [10.0, -45.0], "expected": 10.0}, {"input": [10.0, -44.5], "expected": 10.0}, {"input": [10.0, -44.0], "expected": 10.0}, {"input": [10.0, -43.5], "expected": 10.0}, {"input": [10.0, -43.0], "expected": 10.0}, {"input": [10.0, -42.5], "expected": 10.0}, {"input": [10.0, -42.0], "expected": 10.0}, {"input": [10.0, -41.5], "expected": 10.0}, {"input": [10.0, -41.0], "expected": 10.0}, {"input": [10.0, -40.5], "expected": 10.0}, {"input": [10.0, -40.0], "expected": 10.0}, {"input": [10.0, -39.5], "expected": 10.0}, {"input": [10.0, -39.0], "expected": 10.0}, {"input": [10.0, -38.5], "expected": 10.0}, {"input": [10.0, -38.0], "expected": 10.0}, {"input": [10.0, -37.5], "expected": 10.0}, {"input": [10.0, -37.0], "expected": 10.0}, {"input": [10.0, -36.5], "expected": 10.0}, {"input": [10.0, -36.0], "expected": 10.0}, {"input": [10.0, -35.5], "expected": 10.0}, {"input": [10.0, -35.0], "expected": 10.0}, {"input": [10.0, -34.5], "expected": 10.0}, {"input": [10.0, -34.0], "expected": 10.0}, {"input": [10.0, -33.5], "expected": 10.0}, {"input": [10.0, -33.0], "expected": 10.0}, {"input": [10.0, -32.5], "expected": 10.0}, {"input": [10.0, -32.0], "expected": 10.0}, {"input": [10.0, -31.5], "expected": 10.0}, {"input": [10.0, -31.0], "expected": 10.0}, {"input": [10.0, -30.5], "expected": 10.0}, {"input": [10.0, -30.0], "expected": 10.0}, {"input": [10.0, -29.5], "expected": 10.0}, {"input": [10.0, -29.0], "expected": 10.0}, {"input": [10.0, -28.5], "expected": 10.0}, {"input": [10.0, -28.0], "expected": 10.0}, {"input": [10.0, -27.5], "expected": 10.0}, {"input": [10.0, -27.0], "expected": 10.0}, {"input": [10.0, -26.5], "expected": 10.0}, {"input": [10.0, -26.0], "expected": 10.0}, {"input": [10.0, -25.5], "expected": 10.0}, {"input": [10.0, -25.0], "expected": 10.0}, {"input": [10.0, -24.5], "expected": 10.000000000000002}, {"input": [10.0, -24.0], "expected": 10.000000000000002}, {"input": [10.0, -23.5], "expected": 10.000000000000004}, {"input": [10.0, -23.0], "expected": 10.000000000000005}, {"input": [10.0, -22.5], "expected": 10.000000000000007}, {"input": [10.0, -22.0], "expected": 10.000000000000012}, {"input": [10.0, -21.5], "expected": 10.000000000000021}, {"input": [10.0, -21.0], "expected": 10.000000000000034}, {"input": [10.0, -20.5], "expected": 10.000000000000057}, {"input": [10.0, -20.0], "expected": 10.000000000000094}, {"input": [10.0, -19.5], "expected": 10.000000000000155}, {"input": [10.0, -19.0], "expected": 10.000000000000254}, {"input": [10.0, -18.5], "expected": 10.00000000000042}, {"input": [10.0, -18.0], "expected": 10.000000000000691}, {"input": [10.0, -17.5], "expected": 10.00000000000114}, {"input": [10.0, -17.0], "expected": 10.00000000000188}, {"input": [10.0, -16.5], "expected": 10.000000000003098}, {"input": [10.0, -16.0], "expected": 10.000000000005109}, {"input": [10.0, -15.5], "expected": 10.000000000008423}, {"input": [10.0, -15.0], "expected": 10.000000000013888}, {"input": [10.0, -14.5], "expected": 10.000000000022897}, {"input": [10.0, -14.0], "expected": 10.000000000037751}, {"input": [10.0, -13.5], "expected": 10.000000000062242}, {"input": [10.0, -13.0], "expected": 10.000000000102618}, {"input": [10.0, -12.5], "expected": 10.000000000169189}, {"input": [10.0, -12.0], "expected": 10.000000000278947}, {"input": [10.0, -11.5], "expected": 10.000000000459906}, {"input": [10.0, -11.0], "expected": 10.000000000758256}, {"input": [10.0, -10.5], "expected": 10.000000001250152}, {"input": [10.0, -10.0], "expected": 10.000000002061153}, {"input": [10.0, -9.5], "expected": 10.000000003398268}, {"input": [10.0, -9.0], "expected": 10.000000005602796}, {"input": [10.0, -8.5], "expected": 10.00000000923745}, {"input": [10.0, -8.0], "expected": 10.000000015229979}, {"input": [10.0, -7.5], "expected": 10.00000002510999}, {"input": [10.0, -7.0], "expected": 10.000000041399376}, {"input": [10.0, -6.5], "expected": 10.000000068256032}, {"input": [10.0, -6.0], "expected": 10.000000112535169}, {"input": [10.0, -5.5], "expected": 10.000000185539118}, {"input": [10.0, -5.0], "expected": 10.000000305902274}, {"input": [10.0, -4.5], "expected": 10.000000504347536}, {"input": [10.0, -4.0], "expected": 10.000000831528373}, {"input": [10.0, -3.5], "expected": 10.000001370958147}, {"input": [10.0, -3.0], "expected": 10.000002260326852}, {"input": [10.0, -2.5], "expected": 10.000003726646229}, {"input": [10.0, -2.0], "expected": 10.000006144193478}, {"input": [10.0, -1.5], "expected": 10.00001013004229}, {"input": [10.0, -1.0], "expected": 10.000016701561318}, {"input": [10.0, -0.5], "expected": 10.00002753607023}, {"input": [10.0, 0.0], "expected": 10.000045398899218}, {"input": [10.0, 0.5], "expected": 10.000074849028628}, {"input": [10.0, 1.0], "expected": 10.000123402189724}, {"input": [10.0, 1.5], "expected": 10.00020344767213}, {"input": [10.0, 2.0], "expected": 10.000335406372896}, {"input": [10.0, 2.5], "expected": 10.000552931475362}, {"input": [10.0, 3.0], "expected": 10.000911466453774}, {"input": [10.0, 3.5], "expected": 10.001502310159754}, {"input": [10.0, 4.0], "expected": 10.00247568513773}, {"input": [10.0, 4.5], "expected": 10.00407844327057}, {"input": [10.0, 5.0], "expected": 10.006715348489118}, {"input": [10.0, 5.5], "expected": 10.011047744848593}, {"input": [10.0, 6.0], "expected": 10.01814992791781}, {"input": [10.0, 6.5], "expected": 10.02975041827262}, {"input": [10.0, 7.0], "expected": 10.048587351573742}, {"input": [10.0, 7.5], "expected": 10.078889734292549}, {"input": [10.0, 8.0], "expected": 10.126928011042972}, {"input": [10.0, 8.5], "expected": 10.201413277982752}, {"input": [10.0, 9.0], "expected": 10.313261687518223}, {"input": [10.0, 9.5], "expected": 10.474076984180106}, {"input": [10.0, 10.0], "expected": 10.693147180559945}, {"input": [10.0, 10.5], "expected": 10.974076984180106}, {"input": [10.0, 11.0], "expected": 11.313261687518223}, {"input": [10.0, 11.5], "expected": 11.701413277982752}, {"input": [10.0, 12.0], "expected": 12.126928011042972}, {"input": [10.0, 12.5], "expected": 12.578889734292549}, {"input": [10.0, 13.0], "expected": 13.048587351573742}, {"input": [10.0, 13.5], "expected": 13.52975041827262}, {"input": [10.0, 14.0], "expected": 14.01814992791781}, {"input": [10.0, 14.5], "expected": 14.511047744848593}, {"input": [10.0, 15.0], "expected": 15.006715348489118}, {"input": [10.0, 15.5], "expected": 15.50407844327057}, {"input": [10.0, 16.0], "expected": 16.002475685137732}, {"input": [10.0, 16.5], "expected": 16.501502310159754}, {"input": [10.0, 17.0], "expected": 17.000911466453775}, {"input": [10.0, 17.5], "expected": 17.50055293147536}, {"input": [10.0, 18.0], "expected": 18.000335406372894}, {"input": [10.0, 18.5], "expected": 18.500203447672128}, {"input": [10.0, 19.0], "expected": 19.000123402189722}, {"input": [10.0, 19.5], "expected": 19.50007484902863}, {"input": [10.0, 20.0], "expected": 20.000045398899218}, {"input": [10.0, 20.5], "expected": 20.500027536070228}, {"input": [10.0, 21.0], "expected": 21.000016701561318}, {"input": [10.0, 21.5], "expected": 21.50001013004229}, {"input": [10.0, 22.0], "expected": 22.000006144193478}, {"input": [10.0, 22.5], "expected": 22.500003726646227}, {"input": [10.0, 23.0], "expected": 23.000002260326852}, {"input": [10.0, 23.5], "expected": 23.500001370958145}, {"input": [10.0, 24.0], "expected": 24.000000831528375}, {"input": [10.0, 24.5], "expected": 24.500000504347536}, {"input": [10.0, 25.0], "expected": 25.000000305902272}, {"input": [10.0, 25.5], "expected": 25.50000018553912}, {"input": [10.0, 26.0], "expected": 26.00000011253517}, {"input": [10.0, 26.5], "expected": 26.500000068256032}, {"input": [10.0, 27.0], "expected": 27.000000041399375}, {"input": [10.0, 27.5], "expected": 27.50000002510999}, {"input": [10.0, 28.0], "expected": 28.00000001522998}, {"input": [10.0, 28.5], "expected": 28.50000000923745}, {"input": [10.0, 29.0], "expected": 29.000000005602796}, {"input": [10.0, 29.5], "expected": 29.500000003398267}, {"input": [10.0, 30.0], "expected": 30.000000002061153}, {"input": [10.0, 30.5], "expected": 30.500000001250154}, {"input": [10.0, 31.0], "expected": 31.000000000758256}, {"input": [10.0, 31.5], "expected": 31.500000000459906}, {"input": [10.0, 32.0], "expected": 32.000000000278945}, {"input": [10.0, 32.5], "expected": 32.50000000016919}, {"input": [10.0, 33.0], "expected": 33.00000000010262}, {"input": [10.0, 33.5], "expected": 33.50000000006224}, {"input": [10.0, 34.0], "expected": 34.00000000003775}, {"input": [10.0, 34.5], "expected": 34.5000000000229}, {"input": [10.0, 35.0], "expected": 35.00000000001389}, {"input": [10.0, 35.5], "expected": 35.50000000000842}, {"input": [10.0, 36.0], "expected": 36.00000000000511}, {"input": [10.0, 36.5], "expected": 36.5000000000031}, {"input": [10.0, 37.0], "expected": 37.00000000000188}, {"input": [10.0, 37.5], "expected": 37.50000000000114}, {"input": [10.0, 38.0], "expected": 38.00000000000069}, {"input": [10.0, 38.5], "expected": 38.50000000000042}, {"input": [10.0, 39.0], "expected": 39.000000000000256}, {"input": [10.0, 39.5], "expected": 39.500000000000156}, {"input": [10.0, 40.0], "expected": 40.00000000000009}, {"input": [10.0, 40.5], "expected": 40.50000000000006}, {"input": [10.0, 41.0], "expected": 41.000000000000036}, {"input": [10.0, 41.5], "expected": 41.50000000000002}, {"input": [10.0, 42.0], "expected": 42.000000000000014}, {"input": [10.0, 42.5], "expected": 42.50000000000001}, {"input": [10.0, 43.0], "expected": 43.00000000000001}, {"input": [10.0, 43.5], "expected": 43.5}, {"input": [10.0, 44.0], "expected": 44.0}, {"input": [10.0, 44.5], "expected": 44.5}, {"input": [10.0, 45.0], "expected": 45.0}, {"input": [10.0, 45.5], "expected": 45.5}, {"input": [10.0, 46.0], "expected": 46.0}, {"input": [10.0, 46.5], "expected": 46.5}, {"input": [10.0, 47.0], "expected": 47.0}, {"input": [10.0, 47.5], "expected": 47.5}, {"input": [10.0, 48.0], "expected": 48.0}, {"input": [10.0, 48.5], "expected": 48.5}, {"input": [10.0, 49.0], "expected": 49.0}, {"input": [10.0, 49.5], "expected": 49.5}, {"input": [10.0, 50.0], "expected": 50.0}, {"input": [10.0, 50.5], "expected": 50.5}, {"input": [10.0, 51.0], "expected": 51.0}, {"input": [10.0, 51.5], "expected": 51.5}, {"input": [10.0, 52.0], "expected": 52.0}, {"input": [10.0, 52.5], "expected": 52.5}, {"input": [10.0, 53.0], "expected": 53.0}, {"input": [10.0, 53.5], "expected": 53.5}, {"input": [10.0, 54.0], "expected": 54.0}, {"input": [10.0, 54.5], "expected": 54.5}, {"input": [10.0, 55.0], "expected": 55.0}, {"input": [10.0, 55.5], "expected": 55.5}, {"input": [10.0, 56.0], "expected": 56.0}, {"input": [10.0, 56.5], "expected": 56.5}, {"input": [10.0, 57.0], "expected": 57.0}, {"input": [10.0, 57.5], "expected": 57.5}, {"input": [10.0, 58.0], "expected": 58.0}, {"input": [10.0, 58.5], "expected": 58.5}, {"input": [10.0, 59.0], "expected": 59.0}, {"input": [10.0, 59.5], "expected": 59.5}, {"input": [10.0, 60.0], "expected": 60.0}, {"input": [10.0, 60.5], "expected": 60.5}, {"input": [10.0, 61.0], "expected": 61.0}, {"input": [10.0, 61.5], "expected": 61.5}, {"input": [10.0, 62.0], "expected": 62.0}, {"input": [10.0, 62.5], "expected": 62.5}, {"input": [10.0, 63.0], "expected": 63.0}, {"input": [10.0, 63.5], "expected": 63.5}, {"input": [10.0, 64.0], "expected": 64.0}, {"input": [10.0, 64.5], "expected": 64.5}, {"input": [10.0, 65.0], "expected": 65.0}, {"input": [10.0, 65.5], "expected": 65.5}, {"input": [10.0, 66.0], "expected": 66.0}, {"input": [10.0, 66.5], "expected": 66.5}, {"input": [10.0, 67.0], "expected": 67.0}, {"input": [10.0, 67.5], "expected": 67.5}, {"input": [10.0, 68.0], "expected": 68.0}, {"input": [10.0, 68.5], "expected": 68.5}, {"input": [10.0, 69.0], "expected": 69.0}, {"input": [10.0, 69.5], "expected": 69.5}, {"input": [10.0, 70.0], "expected": 70.0}, {"input": [10.0, 70.5], "expected": 70.5}, {"input": [10.0, 71.0], "expected": 71.0}, {"input": [10.0, 71.5], "expected": 71.5}, {"input": [10.0, 72.0], "expected": 72.0}, {"input": [10.0, 72.5], "expected": 72.5}, {"input": [10.0, 73.0], "expected": 73.0}, {"input": [10.0, 73.5], "expected": 73.5}, {"input": [10.0, 74.0], "expected": 74.0}, {"input": [10.0, 74.5], "expected": 74.5}, {"input": [10.0, 75.0], "expected": 75.0}, {"input": [10.0, 75.5], "expected": 75.5}, {"input": [10.0, 76.0], "expected": 76.0}, {"input": [10.0, 76.5], "expected": 76.5}, {"input": [10.0, 77.0], "expected": 77.0}, {"input": [10.0, 77.5], "expected": 77.5}, {"input": [10.0, 78.0], "expected": 78.0}, {"input": [10.0, 78.5], "expected": 78.5}, {"input": [10.0, 79.0], "expected": 79.0}, {"input": [10.0, 79.5], "expected": 79.5}, {"input": [10.0, 80.0], "expected": 80.0}, {"input": [10.0, 80.5], "expected": 80.5}, {"input": [10.0, 81.0], "expected": 81.0}, {"input": [10.0, 81.5], "expected": 81.5}, {"input": [10.0, 82.0], "expected": 82.0}, {"input": [10.0, 82.5], "expected": 82.5}, {"input": [10.0, 83.0], "expected": 83.0}, {"input": [10.0, 83.5], "expected": 83.5}, {"input": [10.0, 84.0], "expected": 84.0}, {"input": [10.0, 84.5], "expected": 84.5}, {"input": [10.0, 85.0], "expected": 85.0}, {"input": [10.0, 85.5], "expected": 85.5}, {"input": [10.0, 86.0], "expected": 86.0}, {"input": [10.0, 86.5], "expected": 86.5}, {"input": [10.0, 87.0], "expected": 87.0}, {"input": [10.0, 87.5], "expected": 87.5}, {"input": [10.0, 88.0], "expected": 88.0}, {"input": [10.0, 88.5], "expected": 88.5}, {"input": [10.0, 89.0], "expected": 89.0}, {"input": [10.0, 89.5], "expected": 89.5}, {"input": [10.0, 90.0], "expected": 90.0}, {"input": [10.0, 90.5], "expected": 90.5}, {"input": [10.0, 91.0], "expected": 91.0}, {"input": [10.0, 91.5], "expected": 91.5}, {"input": [10.0, 92.0], "expected": 92.0}, {"input": [10.0, 92.5], "expected": 92.5}, {"input": [10.0, 93.0], "expected": 93.0}, {"input": [10.0, 93.5], "expected": 93.5}, {"input": [10.0, 94.0], "expected": 94.0}, {"input": [10.0, 94.5], "expected": 94.5}, {"input": [10.0, 95.0], "expected": 95.0}, {"input": [10.0, 95.5], "expected": 95.5}, {"input": [10.0, 96.0], "expected": 96.0}, {"input": [10.0, 96.5], "expected": 96.5}, {"input": [10.0, 97.0], "expected": 97.0}, {"input": [10.0, 97.5], "expected": 97.5}, {"input": [10.0, 98.0], "expected": 98.0}, {"input": [10.0, 98.5], "expected": 98.5}, {"input": [10.0, 99.0], "expected": 99.0}, {"input": [10.0, 99.5], "expected": 99.5}, {"input": [10.5, -100.0], "expected": 10.5}, {"input": [10.5, -99.5], "expected": 10.5}, {"input": [10.5, -99.0], "expected": 10.5}, {"input": [10.5, -98.5], "expected": 10.5}, {"input": [10.5, -98.0], "expected": 10.5}, {"input": [10.5, -97.5], "expected": 10.5}, {"input": [10.5, -97.0], "expected": 10.5}, {"input": [10.5, -96.5], "expected": 10.5}, {"input": [10.5, -96.0], "expected": 10.5}, {"input": [10.5, -95.5], "expected": 10.5}, {"input": [10.5, -95.0], "expected": 10.5}, {"input": [10.5, -94.5], "expected": 10.5}, {"input": [10.5, -94.0], "expected": 10.5}, {"input": [10.5, -93.5], "expected": 10.5}, {"input": [10.5, -93.0], "expected": 10.5}, {"input": [10.5, -92.5], "expected": 10.5}, {"input": [10.5, -92.0], "expected": 10.5}, {"input": [10.5, -91.5], "expected": 10.5}, {"input": [10.5, -91.0], "expected": 10.5}, {"input": [10.5, -90.5], "expected": 10.5}, {"input": [10.5, -90.0], "expected": 10.5}, {"input": [10.5, -89.5], "expected": 10.5}, {"input": [10.5, -89.0], "expected": 10.5}, {"input": [10.5, -88.5], "expected": 10.5}, {"input": [10.5, -88.0], "expected": 10.5}, {"input": [10.5, -87.5], "expected": 10.5}, {"input": [10.5, -87.0], "expected": 10.5}, {"input": [10.5, -86.5], "expected": 10.5}, {"input": [10.5, -86.0], "expected": 10.5}, {"input": [10.5, -85.5], "expected": 10.5}, {"input": [10.5, -85.0], "expected": 10.5}, {"input": [10.5, -84.5], "expected": 10.5}, {"input": [10.5, -84.0], "expected": 10.5}, {"input": [10.5, -83.5], "expected": 10.5}, {"input": [10.5, -83.0], "expected": 10.5}, {"input": [10.5, -82.5], "expected": 10.5}, {"input": [10.5, -82.0], "expected": 10.5}, {"input": [10.5, -81.5], "expected": 10.5}, {"input": [10.5, -81.0], "expected": 10.5}, {"input": [10.5, -80.5], "expected": 10.5}, {"input": [10.5, -80.0], "expected": 10.5}, {"input": [10.5, -79.5], "expected": 10.5}, {"input": [10.5, -79.0], "expected": 10.5}, {"input": [10.5, -78.5], "expected": 10.5}, {"input": [10.5, -78.0], "expected": 10.5}, {"input": [10.5, -77.5], "expected": 10.5}, {"input": [10.5, -77.0], "expected": 10.5}, {"input": [10.5, -76.5], "expected": 10.5}, {"input": [10.5, -76.0], "expected": 10.5}, {"input": [10.5, -75.5], "expected": 10.5}, {"input": [10.5, -75.0], "expected": 10.5}, {"input": [10.5, -74.5], "expected": 10.5}, {"input": [10.5, -74.0], "expected": 10.5}, {"input": [10.5, -73.5], "expected": 10.5}, {"input": [10.5, -73.0], "expected": 10.5}, {"input": [10.5, -72.5], "expected": 10.5}, {"input": [10.5, -72.0], "expected": 10.5}, {"input": [10.5, -71.5], "expected": 10.5}, {"input": [10.5, -71.0], "expected": 10.5}, {"input": [10.5, -70.5], "expected": 10.5}, {"input": [10.5, -70.0], "expected": 10.5}, {"input": [10.5, -69.5], "expected": 10.5}, {"input": [10.5, -69.0], "expected": 10.5}, {"input": [10.5, -68.5], "expected": 10.5}, {"input": [10.5, -68.0], "expected": 10.5}, {"input": [10.5, -67.5], "expected": 10.5}, {"input": [10.5, -67.0], "expected": 10.5}, {"input": [10.5, -66.5], "expected": 10.5}, {"input": [10.5, -66.0], "expected": 10.5}, {"input": [10.5, -65.5], "expected": 10.5}, {"input": [10.5, -65.0], "expected": 10.5}, {"input": [10.5, -64.5], "expected": 10.5}, {"input": [10.5, -64.0], "expected": 10.5}, {"input": [10.5, -63.5], "expected": 10.5}, {"input": [10.5, -63.0], "expected": 10.5}, {"input": [10.5, -62.5], "expected": 10.5}, {"input": [10.5, -62.0], "expected": 10.5}, {"input": [10.5, -61.5], "expected": 10.5}, {"input": [10.5, -61.0], "expected": 10.5}, {"input": [10.5, -60.5], "expected": 10.5}, {"input": [10.5, -60.0], "expected": 10.5}, {"input": [10.5, -59.5], "expected": 10.5}, {"input": [10.5, -59.0], "expected": 10.5}, {"input": [10.5, -58.5], "expected": 10.5}, {"input": [10.5, -58.0], "expected": 10.5}, {"input": [10.5, -57.5], "expected": 10.5}, {"input": [10.5, -57.0], "expected": 10.5}, {"input": [10.5, -56.5], "expected": 10.5}, {"input": [10.5, -56.0], "expected": 10.5}, {"input": [10.5, -55.5], "expected": 10.5}, {"input": [10.5, -55.0], "expected": 10.5}, {"input": [10.5, -54.5], "expected": 10.5}, {"input": [10.5, -54.0], "expected": 10.5}, {"input": [10.5, -53.5], "expected": 10.5}, {"input": [10.5, -53.0], "expected": 10.5}, {"input": [10.5, -52.5], "expected": 10.5}, {"input": [10.5, -52.0], "expected": 10.5}, {"input": [10.5, -51.5], "expected": 10.5}, {"input": [10.5, -51.0], "expected": 10.5}, {"input": [10.5, -50.5], "expected": 10.5}, {"input": [10.5, -50.0], "expected": 10.5}, {"input": [10.5, -49.5], "expected": 10.5}, {"input": [10.5, -49.0], "expected": 10.5}, {"input": [10.5, -48.5], "expected": 10.5}, {"input": [10.5, -48.0], "expected": 10.5}, {"input": [10.5, -47.5], "expected": 10.5}, {"input": [10.5, -47.0], "expected": 10.5}, {"input": [10.5, -46.5], "expected": 10.5}, {"input": [10.5, -46.0], "expected": 10.5}, {"input": [10.5, -45.5], "expected": 10.5}, {"input": [10.5, -45.0], "expected": 10.5}, {"input": [10.5, -44.5], "expected": 10.5}, {"input": [10.5, -44.0], "expected": 10.5}, {"input": [10.5, -43.5], "expected": 10.5}, {"input": [10.5, -43.0], "expected": 10.5}, {"input": [10.5, -42.5], "expected": 10.5}, {"input": [10.5, -42.0], "expected": 10.5}, {"input": [10.5, -41.5], "expected": 10.5}, {"input": [10.5, -41.0], "expected": 10.5}, {"input": [10.5, -40.5], "expected": 10.5}, {"input": [10.5, -40.0], "expected": 10.5}, {"input": [10.5, -39.5], "expected": 10.5}, {"input": [10.5, -39.0], "expected": 10.5}, {"input": [10.5, -38.5], "expected": 10.5}, {"input": [10.5, -38.0], "expected": 10.5}, {"input": [10.5, -37.5], "expected": 10.5}, {"input": [10.5, -37.0], "expected": 10.5}, {"input": [10.5, -36.5], "expected": 10.5}, {"input": [10.5, -36.0], "expected": 10.5}, {"input": [10.5, -35.5], "expected": 10.5}, {"input": [10.5, -35.0], "expected": 10.5}, {"input": [10.5, -34.5], "expected": 10.5}, {"input": [10.5, -34.0], "expected": 10.5}, {"input": [10.5, -33.5], "expected": 10.5}, {"input": [10.5, -33.0], "expected": 10.5}, {"input": [10.5, -32.5], "expected": 10.5}, {"input": [10.5, -32.0], "expected": 10.5}, {"input": [10.5, -31.5], "expected": 10.5}, {"input": [10.5, -31.0], "expected": 10.5}, {"input": [10.5, -30.5], "expected": 10.5}, {"input": [10.5, -30.0], "expected": 10.5}, {"input": [10.5, -29.5], "expected": 10.5}, {"input": [10.5, -29.0], "expected": 10.5}, {"input": [10.5, -28.5], "expected": 10.5}, {"input": [10.5, -28.0], "expected": 10.5}, {"input": [10.5, -27.5], "expected": 10.5}, {"input": [10.5, -27.0], "expected": 10.5}, {"input": [10.5, -26.5], "expected": 10.5}, {"input": [10.5, -26.0], "expected": 10.5}, {"input": [10.5, -25.5], "expected": 10.5}, {"input": [10.5, -25.0], "expected": 10.5}, {"input": [10.5, -24.5], "expected": 10.5}, {"input": [10.5, -24.0], "expected": 10.500000000000002}, {"input": [10.5, -23.5], "expected": 10.500000000000002}, {"input": [10.5, -23.0], "expected": 10.500000000000004}, {"input": [10.5, -22.5], "expected": 10.500000000000005}, {"input": [10.5, -22.0], "expected": 10.500000000000007}, {"input": [10.5, -21.5], "expected": 10.500000000000012}, {"input": [10.5, -21.0], "expected": 10.500000000000021}, {"input": [10.5, -20.5], "expected": 10.500000000000034}, {"input": [10.5, -20.0], "expected": 10.500000000000057}, {"input": [10.5, -19.5], "expected": 10.500000000000094}, {"input": [10.5, -19.0], "expected": 10.500000000000155}, {"input": [10.5, -18.5], "expected": 10.500000000000254}, {"input": [10.5, -18.0], "expected": 10.50000000000042}, {"input": [10.5, -17.5], "expected": 10.500000000000691}, {"input": [10.5, -17.0], "expected": 10.50000000000114}, {"input": [10.5, -16.5], "expected": 10.50000000000188}, {"input": [10.5, -16.0], "expected": 10.500000000003098}, {"input": [10.5, -15.5], "expected": 10.500000000005109}, {"input": [10.5, -15.0], "expected": 10.500000000008423}, {"input": [10.5, -14.5], "expected": 10.500000000013888}, {"input": [10.5, -14.0], "expected": 10.500000000022897}, {"input": [10.5, -13.5], "expected": 10.500000000037751}, {"input": [10.5, -13.0], "expected": 10.500000000062242}, {"input": [10.5, -12.5], "expected": 10.500000000102618}, {"input": [10.5, -12.0], "expected": 10.500000000169189}, {"input": [10.5, -11.5], "expected": 10.500000000278947}, {"input": [10.5, -11.0], "expected": 10.500000000459906}, {"input": [10.5, -10.5], "expected": 10.500000000758256}, {"input": [10.5, -10.0], "expected": 10.500000001250152}, {"input": [10.5, -9.5], "expected": 10.500000002061153}, {"input": [10.5, -9.0], "expected": 10.500000003398268}, {"input": [10.5, -8.5], "expected": 10.500000005602796}, {"input": [10.5, -8.0], "expected": 10.50000000923745}, {"input": [10.5, -7.5], "expected": 10.500000015229979}, {"input": [10.5, -7.0], "expected": 10.50000002510999}, {"input": [10.5, -6.5], "expected": 10.500000041399376}, {"input": [10.5, -6.0], "expected": 10.500000068256032}, {"input": [10.5, -5.5], "expected": 10.500000112535169}, {"input": [10.5, -5.0], "expected": 10.500000185539118}, {"input": [10.5, -4.5], "expected": 10.500000305902274}, {"input": [10.5, -4.0], "expected": 10.500000504347536}, {"input": [10.5, -3.5], "expected": 10.500000831528373}, {"input": [10.5, -3.0], "expected": 10.500001370958147}, {"input": [10.5, -2.5], "expected": 10.500002260326852}, {"input": [10.5, -2.0], "expected": 10.500003726646229}, {"input": [10.5, -1.5], "expected": 10.500006144193478}, {"input": [10.5, -1.0], "expected": 10.50001013004229}, {"input": [10.5, -0.5], "expected": 10.500016701561318}, {"input": [10.5, 0.0], "expected": 10.50002753607023}, {"input": [10.5, 0.5], "expected": 10.500045398899218}, {"input": [10.5, 1.0], "expected": 10.500074849028628}, {"input": [10.5, 1.5], "expected": 10.500123402189724}, {"input": [10.5, 2.0], "expected": 10.50020344767213}, {"input": [10.5, 2.5], "expected": 10.500335406372896}, {"input": [10.5, 3.0], "expected": 10.500552931475362}, {"input": [10.5, 3.5], "expected": 10.500911466453774}, {"input": [10.5, 4.0], "expected": 10.501502310159754}, {"input": [10.5, 4.5], "expected": 10.50247568513773}, {"input": [10.5, 5.0], "expected": 10.50407844327057}, {"input": [10.5, 5.5], "expected": 10.506715348489118}, {"input": [10.5, 6.0], "expected": 10.511047744848593}, {"input": [10.5, 6.5], "expected": 10.51814992791781}, {"input": [10.5, 7.0], "expected": 10.52975041827262}, {"input": [10.5, 7.5], "expected": 10.548587351573742}, {"input": [10.5, 8.0], "expected": 10.578889734292549}, {"input": [10.5, 8.5], "expected": 10.626928011042972}, {"input": [10.5, 9.0], "expected": 10.701413277982752}, {"input": [10.5, 9.5], "expected": 10.813261687518223}, {"input": [10.5, 10.0], "expected": 10.974076984180106}, {"input": [10.5, 10.5], "expected": 11.193147180559945}, {"input": [10.5, 11.0], "expected": 11.474076984180106}, {"input": [10.5, 11.5], "expected": 11.813261687518223}, {"input": [10.5, 12.0], "expected": 12.201413277982752}, {"input": [10.5, 12.5], "expected": 12.626928011042972}, {"input": [10.5, 13.0], "expected": 13.078889734292549}, {"input": [10.5, 13.5], "expected": 13.548587351573742}, {"input": [10.5, 14.0], "expected": 14.02975041827262}, {"input": [10.5, 14.5], "expected": 14.51814992791781}, {"input": [10.5, 15.0], "expected": 15.011047744848593}, {"input": [10.5, 15.5], "expected": 15.506715348489118}, {"input": [10.5, 16.0], "expected": 16.004078443270572}, {"input": [10.5, 16.5], "expected": 16.502475685137732}, {"input": [10.5, 17.0], "expected": 17.001502310159754}, {"input": [10.5, 17.5], "expected": 17.500911466453775}, {"input": [10.5, 18.0], "expected": 18.00055293147536}, {"input": [10.5, 18.5], "expected": 18.500335406372894}, {"input": [10.5, 19.0], "expected": 19.000203447672128}, {"input": [10.5, 19.5], "expected": 19.500123402189722}, {"input": [10.5, 20.0], "expected": 20.00007484902863}, {"input": [10.5, 20.5], "expected": 20.500045398899218}, {"input": [10.5, 21.0], "expected": 21.000027536070228}, {"input": [10.5, 21.5], "expected": 21.500016701561318}, {"input": [10.5, 22.0], "expected": 22.00001013004229}, {"input": [10.5, 22.5], "expected": 22.500006144193478}, {"input": [10.5, 23.0], "expected": 23.000003726646227}, {"input": [10.5, 23.5], "expected": 23.500002260326852}, {"input": [10.5, 24.0], "expected": 24.000001370958145}, {"input": [10.5, 24.5], "expected": 24.500000831528375}, {"input": [10.5, 25.0], "expected": 25.000000504347536}, {"input": [10.5, 25.5], "expected": 25.500000305902272}, {"input": [10.5, 26.0], "expected": 26.00000018553912}, {"input": [10.5, 26.5], "expected": 26.50000011253517}, {"input": [10.5, 27.0], "expected": 27.000000068256032}, {"input": [10.5, 27.5], "expected": 27.500000041399375}, {"input": [10.5, 28.0], "expected": 28.00000002510999}, {"input": [10.5, 28.5], "expected": 28.50000001522998}, {"input": [10.5, 29.0], "expected": 29.00000000923745}, {"input": [10.5, 29.5], "expected": 29.500000005602796}, {"input": [10.5, 30.0], "expected": 30.000000003398267}, {"input": [10.5, 30.5], "expected": 30.500000002061153}, {"input": [10.5, 31.0], "expected": 31.000000001250154}, {"input": [10.5, 31.5], "expected": 31.500000000758256}, {"input": [10.5, 32.0], "expected": 32.000000000459906}, {"input": [10.5, 32.5], "expected": 32.500000000278945}, {"input": [10.5, 33.0], "expected": 33.00000000016919}, {"input": [10.5, 33.5], "expected": 33.50000000010262}, {"input": [10.5, 34.0], "expected": 34.00000000006224}, {"input": [10.5, 34.5], "expected": 34.50000000003775}, {"input": [10.5, 35.0], "expected": 35.0000000000229}, {"input": [10.5, 35.5], "expected": 35.50000000001389}, {"input": [10.5, 36.0], "expected": 36.00000000000842}, {"input": [10.5, 36.5], "expected": 36.50000000000511}, {"input": [10.5, 37.0], "expected": 37.0000000000031}, {"input": [10.5, 37.5], "expected": 37.50000000000188}, {"input": [10.5, 38.0], "expected": 38.00000000000114}, {"input": [10.5, 38.5], "expected": 38.50000000000069}, {"input": [10.5, 39.0], "expected": 39.00000000000042}, {"input": [10.5, 39.5], "expected": 39.500000000000256}, {"input": [10.5, 40.0], "expected": 40.000000000000156}, {"input": [10.5, 40.5], "expected": 40.50000000000009}, {"input": [10.5, 41.0], "expected": 41.00000000000006}, {"input": [10.5, 41.5], "expected": 41.500000000000036}, {"input": [10.5, 42.0], "expected": 42.00000000000002}, {"input": [10.5, 42.5], "expected": 42.500000000000014}, {"input": [10.5, 43.0], "expected": 43.00000000000001}, {"input": [10.5, 43.5], "expected": 43.50000000000001}, {"input": [10.5, 44.0], "expected": 44.0}, {"input": [10.5, 44.5], "expected": 44.5}, {"input": [10.5, 45.0], "expected": 45.0}, {"input": [10.5, 45.5], "expected": 45.5}, {"input": [10.5, 46.0], "expected": 46.0}, {"input": [10.5, 46.5], "expected": 46.5}, {"input": [10.5, 47.0], "expected": 47.0}, {"input": [10.5, 47.5], "expected": 47.5}, {"input": [10.5, 48.0], "expected": 48.0}, {"input": [10.5, 48.5], "expected": 48.5}, {"input": [10.5, 49.0], "expected": 49.0}, {"input": [10.5, 49.5], "expected": 49.5}, {"input": [10.5, 50.0], "expected": 50.0}, {"input": [10.5, 50.5], "expected": 50.5}, {"input": [10.5, 51.0], "expected": 51.0}, {"input": [10.5, 51.5], "expected": 51.5}, {"input": [10.5, 52.0], "expected": 52.0}, {"input": [10.5, 52.5], "expected": 52.5}, {"input": [10.5, 53.0], "expected": 53.0}, {"input": [10.5, 53.5], "expected": 53.5}, {"input": [10.5, 54.0], "expected": 54.0}, {"input": [10.5, 54.5], "expected": 54.5}, {"input": [10.5, 55.0], "expected": 55.0}, {"input": [10.5, 55.5], "expected": 55.5}, {"input": [10.5, 56.0], "expected": 56.0}, {"input": [10.5, 56.5], "expected": 56.5}, {"input": [10.5, 57.0], "expected": 57.0}, {"input": [10.5, 57.5], "expected": 57.5}, {"input": [10.5, 58.0], "expected": 58.0}, {"input": [10.5, 58.5], "expected": 58.5}, {"input": [10.5, 59.0], "expected": 59.0}, {"input": [10.5, 59.5], "expected": 59.5}, {"input": [10.5, 60.0], "expected": 60.0}, {"input": [10.5, 60.5], "expected": 60.5}, {"input": [10.5, 61.0], "expected": 61.0}, {"input": [10.5, 61.5], "expected": 61.5}, {"input": [10.5, 62.0], "expected": 62.0}, {"input": [10.5, 62.5], "expected": 62.5}, {"input": [10.5, 63.0], "expected": 63.0}, {"input": [10.5, 63.5], "expected": 63.5}, {"input": [10.5, 64.0], "expected": 64.0}, {"input": [10.5, 64.5], "expected": 64.5}, {"input": [10.5, 65.0], "expected": 65.0}, {"input": [10.5, 65.5], "expected": 65.5}, {"input": [10.5, 66.0], "expected": 66.0}, {"input": [10.5, 66.5], "expected": 66.5}, {"input": [10.5, 67.0], "expected": 67.0}, {"input": [10.5, 67.5], "expected": 67.5}, {"input": [10.5, 68.0], "expected": 68.0}, {"input": [10.5, 68.5], "expected": 68.5}, {"input": [10.5, 69.0], "expected": 69.0}, {"input": [10.5, 69.5], "expected": 69.5}, {"input": [10.5, 70.0], "expected": 70.0}, {"input": [10.5, 70.5], "expected": 70.5}, {"input": [10.5, 71.0], "expected": 71.0}, {"input": [10.5, 71.5], "expected": 71.5}, {"input": [10.5, 72.0], "expected": 72.0}, {"input": [10.5, 72.5], "expected": 72.5}, {"input": [10.5, 73.0], "expected": 73.0}, {"input": [10.5, 73.5], "expected": 73.5}, {"input": [10.5, 74.0], "expected": 74.0}, {"input": [10.5, 74.5], "expected": 74.5}, {"input": [10.5, 75.0], "expected": 75.0}, {"input": [10.5, 75.5], "expected": 75.5}, {"input": [10.5, 76.0], "expected": 76.0}, {"input": [10.5, 76.5], "expected": 76.5}, {"input": [10.5, 77.0], "expected": 77.0}, {"input": [10.5, 77.5], "expected": 77.5}, {"input": [10.5, 78.0], "expected": 78.0}, {"input": [10.5, 78.5], "expected": 78.5}, {"input": [10.5, 79.0], "expected": 79.0}, {"input": [10.5, 79.5], "expected": 79.5}, {"input": [10.5, 80.0], "expected": 80.0}, {"input": [10.5, 80.5], "expected": 80.5}, {"input": [10.5, 81.0], "expected": 81.0}, {"input": [10.5, 81.5], "expected": 81.5}, {"input": [10.5, 82.0], "expected": 82.0}, {"input": [10.5, 82.5], "expected": 82.5}, {"input": [10.5, 83.0], "expected": 83.0}, {"input": [10.5, 83.5], "expected": 83.5}, {"input": [10.5, 84.0], "expected": 84.0}, {"input": [10.5, 84.5], "expected": 84.5}, {"input": [10.5, 85.0], "expected": 85.0}, {"input": [10.5, 85.5], "expected": 85.5}, {"input": [10.5, 86.0], "expected": 86.0}, {"input": [10.5, 86.5], "expected": 86.5}, {"input": [10.5, 87.0], "expected": 87.0}, {"input": [10.5, 87.5], "expected": 87.5}, {"input": [10.5, 88.0], "expected": 88.0}, {"input": [10.5, 88.5], "expected": 88.5}, {"input": [10.5, 89.0], "expected": 89.0}, {"input": [10.5, 89.5], "expected": 89.5}, {"input": [10.5, 90.0], "expected": 90.0}, {"input": [10.5, 90.5], "expected": 90.5}, {"input": [10.5, 91.0], "expected": 91.0}, {"input": [10.5, 91.5], "expected": 91.5}, {"input": [10.5, 92.0], "expected": 92.0}, {"input": [10.5, 92.5], "expected": 92.5}, {"input": [10.5, 93.0], "expected": 93.0}, {"input": [10.5, 93.5], "expected": 93.5}, {"input": [10.5, 94.0], "expected": 94.0}, {"input": [10.5, 94.5], "expected": 94.5}, {"input": [10.5, 95.0], "expected": 95.0}, {"input": [10.5, 95.5], "expected": 95.5}, {"input": [10.5, 96.0], "expected": 96.0}, {"input": [10.5, 96.5], "expected": 96.5}, {"input": [10.5, 97.0], "expected": 97.0}, {"input": [10.5, 97.5], "expected": 97.5}, {"input": [10.5, 98.0], "expected": 98.0}, {"input": [10.5, 98.5], "expected": 98.5}, {"input": [10.5, 99.0], "expected": 99.0}, {"input": [10.5, 99.5], "expected": 99.5}, {"input": [11.0, -100.0], "expected": 11.0}, {"input": [11.0, -99.5], "expected": 11.0}, {"input": [11.0, -99.0], "expected": 11.0}, {"input": [11.0, -98.5], "expected": 11.0}, {"input": [11.0, -98.0], "expected": 11.0}, {"input": [11.0, -97.5], "expected": 11.0}, {"input": [11.0, -97.0], "expected": 11.0}, {"input": [11.0, -96.5], "expected": 11.0}, {"input": [11.0, -96.0], "expected": 11.0}, {"input": [11.0, -95.5], "expected": 11.0}, {"input": [11.0, -95.0], "expected": 11.0}, {"input": [11.0, -94.5], "expected": 11.0}, {"input": [11.0, -94.0], "expected": 11.0}, {"input": [11.0, -93.5], "expected": 11.0}, {"input": [11.0, -93.0], "expected": 11.0}, {"input": [11.0, -92.5], "expected": 11.0}, {"input": [11.0, -92.0], "expected": 11.0}, {"input": [11.0, -91.5], "expected": 11.0}, {"input": [11.0, -91.0], "expected": 11.0}, {"input": [11.0, -90.5], "expected": 11.0}, {"input": [11.0, -90.0], "expected": 11.0}, {"input": [11.0, -89.5], "expected": 11.0}, {"input": [11.0, -89.0], "expected": 11.0}, {"input": [11.0, -88.5], "expected": 11.0}, {"input": [11.0, -88.0], "expected": 11.0}, {"input": [11.0, -87.5], "expected": 11.0}, {"input": [11.0, -87.0], "expected": 11.0}, {"input": [11.0, -86.5], "expected": 11.0}, {"input": [11.0, -86.0], "expected": 11.0}, {"input": [11.0, -85.5], "expected": 11.0}, {"input": [11.0, -85.0], "expected": 11.0}, {"input": [11.0, -84.5], "expected": 11.0}, {"input": [11.0, -84.0], "expected": 11.0}, {"input": [11.0, -83.5], "expected": 11.0}, {"input": [11.0, -83.0], "expected": 11.0}, {"input": [11.0, -82.5], "expected": 11.0}, {"input": [11.0, -82.0], "expected": 11.0}, {"input": [11.0, -81.5], "expected": 11.0}, {"input": [11.0, -81.0], "expected": 11.0}, {"input": [11.0, -80.5], "expected": 11.0}, {"input": [11.0, -80.0], "expected": 11.0}, {"input": [11.0, -79.5], "expected": 11.0}, {"input": [11.0, -79.0], "expected": 11.0}, {"input": [11.0, -78.5], "expected": 11.0}, {"input": [11.0, -78.0], "expected": 11.0}, {"input": [11.0, -77.5], "expected": 11.0}, {"input": [11.0, -77.0], "expected": 11.0}, {"input": [11.0, -76.5], "expected": 11.0}, {"input": [11.0, -76.0], "expected": 11.0}, {"input": [11.0, -75.5], "expected": 11.0}, {"input": [11.0, -75.0], "expected": 11.0}, {"input": [11.0, -74.5], "expected": 11.0}, {"input": [11.0, -74.0], "expected": 11.0}, {"input": [11.0, -73.5], "expected": 11.0}, {"input": [11.0, -73.0], "expected": 11.0}, {"input": [11.0, -72.5], "expected": 11.0}, {"input": [11.0, -72.0], "expected": 11.0}, {"input": [11.0, -71.5], "expected": 11.0}, {"input": [11.0, -71.0], "expected": 11.0}, {"input": [11.0, -70.5], "expected": 11.0}, {"input": [11.0, -70.0], "expected": 11.0}, {"input": [11.0, -69.5], "expected": 11.0}, {"input": [11.0, -69.0], "expected": 11.0}, {"input": [11.0, -68.5], "expected": 11.0}, {"input": [11.0, -68.0], "expected": 11.0}, {"input": [11.0, -67.5], "expected": 11.0}, {"input": [11.0, -67.0], "expected": 11.0}, {"input": [11.0, -66.5], "expected": 11.0}, {"input": [11.0, -66.0], "expected": 11.0}, {"input": [11.0, -65.5], "expected": 11.0}, {"input": [11.0, -65.0], "expected": 11.0}, {"input": [11.0, -64.5], "expected": 11.0}, {"input": [11.0, -64.0], "expected": 11.0}, {"input": [11.0, -63.5], "expected": 11.0}, {"input": [11.0, -63.0], "expected": 11.0}, {"input": [11.0, -62.5], "expected": 11.0}, {"input": [11.0, -62.0], "expected": 11.0}, {"input": [11.0, -61.5], "expected": 11.0}, {"input": [11.0, -61.0], "expected": 11.0}, {"input": [11.0, -60.5], "expected": 11.0}, {"input": [11.0, -60.0], "expected": 11.0}, {"input": [11.0, -59.5], "expected": 11.0}, {"input": [11.0, -59.0], "expected": 11.0}, {"input": [11.0, -58.5], "expected": 11.0}, {"input": [11.0, -58.0], "expected": 11.0}, {"input": [11.0, -57.5], "expected": 11.0}, {"input": [11.0, -57.0], "expected": 11.0}, {"input": [11.0, -56.5], "expected": 11.0}, {"input": [11.0, -56.0], "expected": 11.0}, {"input": [11.0, -55.5], "expected": 11.0}, {"input": [11.0, -55.0], "expected": 11.0}, {"input": [11.0, -54.5], "expected": 11.0}, {"input": [11.0, -54.0], "expected": 11.0}, {"input": [11.0, -53.5], "expected": 11.0}, {"input": [11.0, -53.0], "expected": 11.0}, {"input": [11.0, -52.5], "expected": 11.0}, {"input": [11.0, -52.0], "expected": 11.0}, {"input": [11.0, -51.5], "expected": 11.0}, {"input": [11.0, -51.0], "expected": 11.0}, {"input": [11.0, -50.5], "expected": 11.0}, {"input": [11.0, -50.0], "expected": 11.0}, {"input": [11.0, -49.5], "expected": 11.0}, {"input": [11.0, -49.0], "expected": 11.0}, {"input": [11.0, -48.5], "expected": 11.0}, {"input": [11.0, -48.0], "expected": 11.0}, {"input": [11.0, -47.5], "expected": 11.0}, {"input": [11.0, -47.0], "expected": 11.0}, {"input": [11.0, -46.5], "expected": 11.0}, {"input": [11.0, -46.0], "expected": 11.0}, {"input": [11.0, -45.5], "expected": 11.0}, {"input": [11.0, -45.0], "expected": 11.0}, {"input": [11.0, -44.5], "expected": 11.0}, {"input": [11.0, -44.0], "expected": 11.0}, {"input": [11.0, -43.5], "expected": 11.0}, {"input": [11.0, -43.0], "expected": 11.0}, {"input": [11.0, -42.5], "expected": 11.0}, {"input": [11.0, -42.0], "expected": 11.0}, {"input": [11.0, -41.5], "expected": 11.0}, {"input": [11.0, -41.0], "expected": 11.0}, {"input": [11.0, -40.5], "expected": 11.0}, {"input": [11.0, -40.0], "expected": 11.0}, {"input": [11.0, -39.5], "expected": 11.0}, {"input": [11.0, -39.0], "expected": 11.0}, {"input": [11.0, -38.5], "expected": 11.0}, {"input": [11.0, -38.0], "expected": 11.0}, {"input": [11.0, -37.5], "expected": 11.0}, {"input": [11.0, -37.0], "expected": 11.0}, {"input": [11.0, -36.5], "expected": 11.0}, {"input": [11.0, -36.0], "expected": 11.0}, {"input": [11.0, -35.5], "expected": 11.0}, {"input": [11.0, -35.0], "expected": 11.0}, {"input": [11.0, -34.5], "expected": 11.0}, {"input": [11.0, -34.0], "expected": 11.0}, {"input": [11.0, -33.5], "expected": 11.0}, {"input": [11.0, -33.0], "expected": 11.0}, {"input": [11.0, -32.5], "expected": 11.0}, {"input": [11.0, -32.0], "expected": 11.0}, {"input": [11.0, -31.5], "expected": 11.0}, {"input": [11.0, -31.0], "expected": 11.0}, {"input": [11.0, -30.5], "expected": 11.0}, {"input": [11.0, -30.0], "expected": 11.0}, {"input": [11.0, -29.5], "expected": 11.0}, {"input": [11.0, -29.0], "expected": 11.0}, {"input": [11.0, -28.5], "expected": 11.0}, {"input": [11.0, -28.0], "expected": 11.0}, {"input": [11.0, -27.5], "expected": 11.0}, {"input": [11.0, -27.0], "expected": 11.0}, {"input": [11.0, -26.5], "expected": 11.0}, {"input": [11.0, -26.0], "expected": 11.0}, {"input": [11.0, -25.5], "expected": 11.0}, {"input": [11.0, -25.0], "expected": 11.0}, {"input": [11.0, -24.5], "expected": 11.0}, {"input": [11.0, -24.0], "expected": 11.0}, {"input": [11.0, -23.5], "expected": 11.000000000000002}, {"input": [11.0, -23.0], "expected": 11.000000000000002}, {"input": [11.0, -22.5], "expected": 11.000000000000004}, {"input": [11.0, -22.0], "expected": 11.000000000000005}, {"input": [11.0, -21.5], "expected": 11.000000000000007}, {"input": [11.0, -21.0], "expected": 11.000000000000012}, {"input": [11.0, -20.5], "expected": 11.000000000000021}, {"input": [11.0, -20.0], "expected": 11.000000000000034}, {"input": [11.0, -19.5], "expected": 11.000000000000057}, {"input": [11.0, -19.0], "expected": 11.000000000000094}, {"input": [11.0, -18.5], "expected": 11.000000000000155}, {"input": [11.0, -18.0], "expected": 11.000000000000254}, {"input": [11.0, -17.5], "expected": 11.00000000000042}, {"input": [11.0, -17.0], "expected": 11.000000000000691}, {"input": [11.0, -16.5], "expected": 11.00000000000114}, {"input": [11.0, -16.0], "expected": 11.00000000000188}, {"input": [11.0, -15.5], "expected": 11.000000000003098}, {"input": [11.0, -15.0], "expected": 11.000000000005109}, {"input": [11.0, -14.5], "expected": 11.000000000008423}, {"input": [11.0, -14.0], "expected": 11.000000000013888}, {"input": [11.0, -13.5], "expected": 11.000000000022897}, {"input": [11.0, -13.0], "expected": 11.000000000037751}, {"input": [11.0, -12.5], "expected": 11.000000000062242}, {"input": [11.0, -12.0], "expected": 11.000000000102618}, {"input": [11.0, -11.5], "expected": 11.000000000169189}, {"input": [11.0, -11.0], "expected": 11.000000000278947}, {"input": [11.0, -10.5], "expected": 11.000000000459906}, {"input": [11.0, -10.0], "expected": 11.000000000758256}, {"input": [11.0, -9.5], "expected": 11.000000001250152}, {"input": [11.0, -9.0], "expected": 11.000000002061153}, {"input": [11.0, -8.5], "expected": 11.000000003398268}, {"input": [11.0, -8.0], "expected": 11.000000005602796}, {"input": [11.0, -7.5], "expected": 11.00000000923745}, {"input": [11.0, -7.0], "expected": 11.000000015229979}, {"input": [11.0, -6.5], "expected": 11.00000002510999}, {"input": [11.0, -6.0], "expected": 11.000000041399376}, {"input": [11.0, -5.5], "expected": 11.000000068256032}, {"input": [11.0, -5.0], "expected": 11.000000112535169}, {"input": [11.0, -4.5], "expected": 11.000000185539118}, {"input": [11.0, -4.0], "expected": 11.000000305902274}, {"input": [11.0, -3.5], "expected": 11.000000504347536}, {"input": [11.0, -3.0], "expected": 11.000000831528373}, {"input": [11.0, -2.5], "expected": 11.000001370958147}, {"input": [11.0, -2.0], "expected": 11.000002260326852}, {"input": [11.0, -1.5], "expected": 11.000003726646229}, {"input": [11.0, -1.0], "expected": 11.000006144193478}, {"input": [11.0, -0.5], "expected": 11.00001013004229}, {"input": [11.0, 0.0], "expected": 11.000016701561318}, {"input": [11.0, 0.5], "expected": 11.00002753607023}, {"input": [11.0, 1.0], "expected": 11.000045398899218}, {"input": [11.0, 1.5], "expected": 11.000074849028628}, {"input": [11.0, 2.0], "expected": 11.000123402189724}, {"input": [11.0, 2.5], "expected": 11.00020344767213}, {"input": [11.0, 3.0], "expected": 11.000335406372896}, {"input": [11.0, 3.5], "expected": 11.000552931475362}, {"input": [11.0, 4.0], "expected": 11.000911466453774}, {"input": [11.0, 4.5], "expected": 11.001502310159754}, {"input": [11.0, 5.0], "expected": 11.00247568513773}, {"input": [11.0, 5.5], "expected": 11.00407844327057}, {"input": [11.0, 6.0], "expected": 11.006715348489118}, {"input": [11.0, 6.5], "expected": 11.011047744848593}, {"input": [11.0, 7.0], "expected": 11.01814992791781}, {"input": [11.0, 7.5], "expected": 11.02975041827262}, {"input": [11.0, 8.0], "expected": 11.048587351573742}, {"input": [11.0, 8.5], "expected": 11.078889734292549}, {"input": [11.0, 9.0], "expected": 11.126928011042972}, {"input": [11.0, 9.5], "expected": 11.201413277982752}, {"input": [11.0, 10.0], "expected": 11.313261687518223}, {"input": [11.0, 10.5], "expected": 11.474076984180106}, {"input": [11.0, 11.0], "expected": 11.693147180559945}, {"input": [11.0, 11.5], "expected": 11.974076984180106}, {"input": [11.0, 12.0], "expected": 12.313261687518223}, {"input": [11.0, 12.5], "expected": 12.701413277982752}, {"input": [11.0, 13.0], "expected": 13.126928011042972}, {"input": [11.0, 13.5], "expected": 13.578889734292549}, {"input": [11.0, 14.0], "expected": 14.048587351573742}, {"input": [11.0, 14.5], "expected": 14.52975041827262}, {"input": [11.0, 15.0], "expected": 15.01814992791781}, {"input": [11.0, 15.5], "expected": 15.511047744848593}, {"input": [11.0, 16.0], "expected": 16.006715348489116}, {"input": [11.0, 16.5], "expected": 16.504078443270572}, {"input": [11.0, 17.0], "expected": 17.002475685137732}, {"input": [11.0, 17.5], "expected": 17.501502310159754}, {"input": [11.0, 18.0], "expected": 18.000911466453775}, {"input": [11.0, 18.5], "expected": 18.50055293147536}, {"input": [11.0, 19.0], "expected": 19.000335406372894}, {"input": [11.0, 19.5], "expected": 19.500203447672128}, {"input": [11.0, 20.0], "expected": 20.000123402189722}, {"input": [11.0, 20.5], "expected": 20.50007484902863}, {"input": [11.0, 21.0], "expected": 21.000045398899218}, {"input": [11.0, 21.5], "expected": 21.500027536070228}, {"input": [11.0, 22.0], "expected": 22.000016701561318}, {"input": [11.0, 22.5], "expected": 22.50001013004229}, {"input": [11.0, 23.0], "expected": 23.000006144193478}, {"input": [11.0, 23.5], "expected": 23.500003726646227}, {"input": [11.0, 24.0], "expected": 24.000002260326852}, {"input": [11.0, 24.5], "expected": 24.500001370958145}, {"input": [11.0, 25.0], "expected": 25.000000831528375}, {"input": [11.0, 25.5], "expected": 25.500000504347536}, {"input": [11.0, 26.0], "expected": 26.000000305902272}, {"input": [11.0, 26.5], "expected": 26.50000018553912}, {"input": [11.0, 27.0], "expected": 27.00000011253517}, {"input": [11.0, 27.5], "expected": 27.500000068256032}, {"input": [11.0, 28.0], "expected": 28.000000041399375}, {"input": [11.0, 28.5], "expected": 28.50000002510999}, {"input": [11.0, 29.0], "expected": 29.00000001522998}, {"input": [11.0, 29.5], "expected": 29.50000000923745}, {"input": [11.0, 30.0], "expected": 30.000000005602796}, {"input": [11.0, 30.5], "expected": 30.500000003398267}, {"input": [11.0, 31.0], "expected": 31.000000002061153}, {"input": [11.0, 31.5], "expected": 31.500000001250154}, {"input": [11.0, 32.0], "expected": 32.000000000758256}, {"input": [11.0, 32.5], "expected": 32.500000000459906}, {"input": [11.0, 33.0], "expected": 33.000000000278945}, {"input": [11.0, 33.5], "expected": 33.50000000016919}, {"input": [11.0, 34.0], "expected": 34.00000000010262}, {"input": [11.0, 34.5], "expected": 34.50000000006224}, {"input": [11.0, 35.0], "expected": 35.00000000003775}, {"input": [11.0, 35.5], "expected": 35.5000000000229}, {"input": [11.0, 36.0], "expected": 36.00000000001389}, {"input": [11.0, 36.5], "expected": 36.50000000000842}, {"input": [11.0, 37.0], "expected": 37.00000000000511}, {"input": [11.0, 37.5], "expected": 37.5000000000031}, {"input": [11.0, 38.0], "expected": 38.00000000000188}, {"input": [11.0, 38.5], "expected": 38.50000000000114}, {"input": [11.0, 39.0], "expected": 39.00000000000069}, {"input": [11.0, 39.5], "expected": 39.50000000000042}, {"input": [11.0, 40.0], "expected": 40.000000000000256}, {"input": [11.0, 40.5], "expected": 40.500000000000156}, {"input": [11.0, 41.0], "expected": 41.00000000000009}, {"input": [11.0, 41.5], "expected": 41.50000000000006}, {"input": [11.0, 42.0], "expected": 42.000000000000036}, {"input": [11.0, 42.5], "expected": 42.50000000000002}, {"input": [11.0, 43.0], "expected": 43.000000000000014}, {"input": [11.0, 43.5], "expected": 43.50000000000001}, {"input": [11.0, 44.0], "expected": 44.00000000000001}, {"input": [11.0, 44.5], "expected": 44.5}, {"input": [11.0, 45.0], "expected": 45.0}, {"input": [11.0, 45.5], "expected": 45.5}, {"input": [11.0, 46.0], "expected": 46.0}, {"input": [11.0, 46.5], "expected": 46.5}, {"input": [11.0, 47.0], "expected": 47.0}, {"input": [11.0, 47.5], "expected": 47.5}, {"input": [11.0, 48.0], "expected": 48.0}, {"input": [11.0, 48.5], "expected": 48.5}, {"input": [11.0, 49.0], "expected": 49.0}, {"input": [11.0, 49.5], "expected": 49.5}, {"input": [11.0, 50.0], "expected": 50.0}, {"input": [11.0, 50.5], "expected": 50.5}, {"input": [11.0, 51.0], "expected": 51.0}, {"input": [11.0, 51.5], "expected": 51.5}, {"input": [11.0, 52.0], "expected": 52.0}, {"input": [11.0, 52.5], "expected": 52.5}, {"input": [11.0, 53.0], "expected": 53.0}, {"input": [11.0, 53.5], "expected": 53.5}, {"input": [11.0, 54.0], "expected": 54.0}, {"input": [11.0, 54.5], "expected": 54.5}, {"input": [11.0, 55.0], "expected": 55.0}, {"input": [11.0, 55.5], "expected": 55.5}, {"input": [11.0, 56.0], "expected": 56.0}, {"input": [11.0, 56.5], "expected": 56.5}, {"input": [11.0, 57.0], "expected": 57.0}, {"input": [11.0, 57.5], "expected": 57.5}, {"input": [11.0, 58.0], "expected": 58.0}, {"input": [11.0, 58.5], "expected": 58.5}, {"input": [11.0, 59.0], "expected": 59.0}, {"input": [11.0, 59.5], "expected": 59.5}, {"input": [11.0, 60.0], "expected": 60.0}, {"input": [11.0, 60.5], "expected": 60.5}, {"input": [11.0, 61.0], "expected": 61.0}, {"input": [11.0, 61.5], "expected": 61.5}, {"input": [11.0, 62.0], "expected": 62.0}, {"input": [11.0, 62.5], "expected": 62.5}, {"input": [11.0, 63.0], "expected": 63.0}, {"input": [11.0, 63.5], "expected": 63.5}, {"input": [11.0, 64.0], "expected": 64.0}, {"input": [11.0, 64.5], "expected": 64.5}, {"input": [11.0, 65.0], "expected": 65.0}, {"input": [11.0, 65.5], "expected": 65.5}, {"input": [11.0, 66.0], "expected": 66.0}, {"input": [11.0, 66.5], "expected": 66.5}, {"input": [11.0, 67.0], "expected": 67.0}, {"input": [11.0, 67.5], "expected": 67.5}, {"input": [11.0, 68.0], "expected": 68.0}, {"input": [11.0, 68.5], "expected": 68.5}, {"input": [11.0, 69.0], "expected": 69.0}, {"input": [11.0, 69.5], "expected": 69.5}, {"input": [11.0, 70.0], "expected": 70.0}, {"input": [11.0, 70.5], "expected": 70.5}, {"input": [11.0, 71.0], "expected": 71.0}, {"input": [11.0, 71.5], "expected": 71.5}, {"input": [11.0, 72.0], "expected": 72.0}, {"input": [11.0, 72.5], "expected": 72.5}, {"input": [11.0, 73.0], "expected": 73.0}, {"input": [11.0, 73.5], "expected": 73.5}, {"input": [11.0, 74.0], "expected": 74.0}, {"input": [11.0, 74.5], "expected": 74.5}, {"input": [11.0, 75.0], "expected": 75.0}, {"input": [11.0, 75.5], "expected": 75.5}, {"input": [11.0, 76.0], "expected": 76.0}, {"input": [11.0, 76.5], "expected": 76.5}, {"input": [11.0, 77.0], "expected": 77.0}, {"input": [11.0, 77.5], "expected": 77.5}, {"input": [11.0, 78.0], "expected": 78.0}, {"input": [11.0, 78.5], "expected": 78.5}, {"input": [11.0, 79.0], "expected": 79.0}, {"input": [11.0, 79.5], "expected": 79.5}, {"input": [11.0, 80.0], "expected": 80.0}, {"input": [11.0, 80.5], "expected": 80.5}, {"input": [11.0, 81.0], "expected": 81.0}, {"input": [11.0, 81.5], "expected": 81.5}, {"input": [11.0, 82.0], "expected": 82.0}, {"input": [11.0, 82.5], "expected": 82.5}, {"input": [11.0, 83.0], "expected": 83.0}, {"input": [11.0, 83.5], "expected": 83.5}, {"input": [11.0, 84.0], "expected": 84.0}, {"input": [11.0, 84.5], "expected": 84.5}, {"input": [11.0, 85.0], "expected": 85.0}, {"input": [11.0, 85.5], "expected": 85.5}, {"input": [11.0, 86.0], "expected": 86.0}, {"input": [11.0, 86.5], "expected": 86.5}, {"input": [11.0, 87.0], "expected": 87.0}, {"input": [11.0, 87.5], "expected": 87.5}, {"input": [11.0, 88.0], "expected": 88.0}, {"input": [11.0, 88.5], "expected": 88.5}, {"input": [11.0, 89.0], "expected": 89.0}, {"input": [11.0, 89.5], "expected": 89.5}, {"input": [11.0, 90.0], "expected": 90.0}, {"input": [11.0, 90.5], "expected": 90.5}, {"input": [11.0, 91.0], "expected": 91.0}, {"input": [11.0, 91.5], "expected": 91.5}, {"input": [11.0, 92.0], "expected": 92.0}, {"input": [11.0, 92.5], "expected": 92.5}, {"input": [11.0, 93.0], "expected": 93.0}, {"input": [11.0, 93.5], "expected": 93.5}, {"input": [11.0, 94.0], "expected": 94.0}, {"input": [11.0, 94.5], "expected": 94.5}, {"input": [11.0, 95.0], "expected": 95.0}, {"input": [11.0, 95.5], "expected": 95.5}, {"input": [11.0, 96.0], "expected": 96.0}, {"input": [11.0, 96.5], "expected": 96.5}, {"input": [11.0, 97.0], "expected": 97.0}, {"input": [11.0, 97.5], "expected": 97.5}, {"input": [11.0, 98.0], "expected": 98.0}, {"input": [11.0, 98.5], "expected": 98.5}, {"input": [11.0, 99.0], "expected": 99.0}, {"input": [11.0, 99.5], "expected": 99.5}, {"input": [11.5, -100.0], "expected": 11.5}, {"input": [11.5, -99.5], "expected": 11.5}, {"input": [11.5, -99.0], "expected": 11.5}, {"input": [11.5, -98.5], "expected": 11.5}, {"input": [11.5, -98.0], "expected": 11.5}, {"input": [11.5, -97.5], "expected": 11.5}, {"input": [11.5, -97.0], "expected": 11.5}, {"input": [11.5, -96.5], "expected": 11.5}, {"input": [11.5, -96.0], "expected": 11.5}, {"input": [11.5, -95.5], "expected": 11.5}, {"input": [11.5, -95.0], "expected": 11.5}, {"input": [11.5, -94.5], "expected": 11.5}, {"input": [11.5, -94.0], "expected": 11.5}, {"input": [11.5, -93.5], "expected": 11.5}, {"input": [11.5, -93.0], "expected": 11.5}, {"input": [11.5, -92.5], "expected": 11.5}, {"input": [11.5, -92.0], "expected": 11.5}, {"input": [11.5, -91.5], "expected": 11.5}, {"input": [11.5, -91.0], "expected": 11.5}, {"input": [11.5, -90.5], "expected": 11.5}, {"input": [11.5, -90.0], "expected": 11.5}, {"input": [11.5, -89.5], "expected": 11.5}, {"input": [11.5, -89.0], "expected": 11.5}, {"input": [11.5, -88.5], "expected": 11.5}, {"input": [11.5, -88.0], "expected": 11.5}, {"input": [11.5, -87.5], "expected": 11.5}, {"input": [11.5, -87.0], "expected": 11.5}, {"input": [11.5, -86.5], "expected": 11.5}, {"input": [11.5, -86.0], "expected": 11.5}, {"input": [11.5, -85.5], "expected": 11.5}, {"input": [11.5, -85.0], "expected": 11.5}, {"input": [11.5, -84.5], "expected": 11.5}, {"input": [11.5, -84.0], "expected": 11.5}, {"input": [11.5, -83.5], "expected": 11.5}, {"input": [11.5, -83.0], "expected": 11.5}, {"input": [11.5, -82.5], "expected": 11.5}, {"input": [11.5, -82.0], "expected": 11.5}, {"input": [11.5, -81.5], "expected": 11.5}, {"input": [11.5, -81.0], "expected": 11.5}, {"input": [11.5, -80.5], "expected": 11.5}, {"input": [11.5, -80.0], "expected": 11.5}, {"input": [11.5, -79.5], "expected": 11.5}, {"input": [11.5, -79.0], "expected": 11.5}, {"input": [11.5, -78.5], "expected": 11.5}, {"input": [11.5, -78.0], "expected": 11.5}, {"input": [11.5, -77.5], "expected": 11.5}, {"input": [11.5, -77.0], "expected": 11.5}, {"input": [11.5, -76.5], "expected": 11.5}, {"input": [11.5, -76.0], "expected": 11.5}, {"input": [11.5, -75.5], "expected": 11.5}, {"input": [11.5, -75.0], "expected": 11.5}, {"input": [11.5, -74.5], "expected": 11.5}, {"input": [11.5, -74.0], "expected": 11.5}, {"input": [11.5, -73.5], "expected": 11.5}, {"input": [11.5, -73.0], "expected": 11.5}, {"input": [11.5, -72.5], "expected": 11.5}, {"input": [11.5, -72.0], "expected": 11.5}, {"input": [11.5, -71.5], "expected": 11.5}, {"input": [11.5, -71.0], "expected": 11.5}, {"input": [11.5, -70.5], "expected": 11.5}, {"input": [11.5, -70.0], "expected": 11.5}, {"input": [11.5, -69.5], "expected": 11.5}, {"input": [11.5, -69.0], "expected": 11.5}, {"input": [11.5, -68.5], "expected": 11.5}, {"input": [11.5, -68.0], "expected": 11.5}, {"input": [11.5, -67.5], "expected": 11.5}, {"input": [11.5, -67.0], "expected": 11.5}, {"input": [11.5, -66.5], "expected": 11.5}, {"input": [11.5, -66.0], "expected": 11.5}, {"input": [11.5, -65.5], "expected": 11.5}, {"input": [11.5, -65.0], "expected": 11.5}, {"input": [11.5, -64.5], "expected": 11.5}, {"input": [11.5, -64.0], "expected": 11.5}, {"input": [11.5, -63.5], "expected": 11.5}, {"input": [11.5, -63.0], "expected": 11.5}, {"input": [11.5, -62.5], "expected": 11.5}, {"input": [11.5, -62.0], "expected": 11.5}, {"input": [11.5, -61.5], "expected": 11.5}, {"input": [11.5, -61.0], "expected": 11.5}, {"input": [11.5, -60.5], "expected": 11.5}, {"input": [11.5, -60.0], "expected": 11.5}, {"input": [11.5, -59.5], "expected": 11.5}, {"input": [11.5, -59.0], "expected": 11.5}, {"input": [11.5, -58.5], "expected": 11.5}, {"input": [11.5, -58.0], "expected": 11.5}, {"input": [11.5, -57.5], "expected": 11.5}, {"input": [11.5, -57.0], "expected": 11.5}, {"input": [11.5, -56.5], "expected": 11.5}, {"input": [11.5, -56.0], "expected": 11.5}, {"input": [11.5, -55.5], "expected": 11.5}, {"input": [11.5, -55.0], "expected": 11.5}, {"input": [11.5, -54.5], "expected": 11.5}, {"input": [11.5, -54.0], "expected": 11.5}, {"input": [11.5, -53.5], "expected": 11.5}, {"input": [11.5, -53.0], "expected": 11.5}, {"input": [11.5, -52.5], "expected": 11.5}, {"input": [11.5, -52.0], "expected": 11.5}, {"input": [11.5, -51.5], "expected": 11.5}, {"input": [11.5, -51.0], "expected": 11.5}, {"input": [11.5, -50.5], "expected": 11.5}, {"input": [11.5, -50.0], "expected": 11.5}, {"input": [11.5, -49.5], "expected": 11.5}, {"input": [11.5, -49.0], "expected": 11.5}, {"input": [11.5, -48.5], "expected": 11.5}, {"input": [11.5, -48.0], "expected": 11.5}, {"input": [11.5, -47.5], "expected": 11.5}, {"input": [11.5, -47.0], "expected": 11.5}, {"input": [11.5, -46.5], "expected": 11.5}, {"input": [11.5, -46.0], "expected": 11.5}, {"input": [11.5, -45.5], "expected": 11.5}, {"input": [11.5, -45.0], "expected": 11.5}, {"input": [11.5, -44.5], "expected": 11.5}, {"input": [11.5, -44.0], "expected": 11.5}, {"input": [11.5, -43.5], "expected": 11.5}, {"input": [11.5, -43.0], "expected": 11.5}, {"input": [11.5, -42.5], "expected": 11.5}, {"input": [11.5, -42.0], "expected": 11.5}, {"input": [11.5, -41.5], "expected": 11.5}, {"input": [11.5, -41.0], "expected": 11.5}, {"input": [11.5, -40.5], "expected": 11.5}, {"input": [11.5, -40.0], "expected": 11.5}, {"input": [11.5, -39.5], "expected": 11.5}, {"input": [11.5, -39.0], "expected": 11.5}, {"input": [11.5, -38.5], "expected": 11.5}, {"input": [11.5, -38.0], "expected": 11.5}, {"input": [11.5, -37.5], "expected": 11.5}, {"input": [11.5, -37.0], "expected": 11.5}, {"input": [11.5, -36.5], "expected": 11.5}, {"input": [11.5, -36.0], "expected": 11.5}, {"input": [11.5, -35.5], "expected": 11.5}, {"input": [11.5, -35.0], "expected": 11.5}, {"input": [11.5, -34.5], "expected": 11.5}, {"input": [11.5, -34.0], "expected": 11.5}, {"input": [11.5, -33.5], "expected": 11.5}, {"input": [11.5, -33.0], "expected": 11.5}, {"input": [11.5, -32.5], "expected": 11.5}, {"input": [11.5, -32.0], "expected": 11.5}, {"input": [11.5, -31.5], "expected": 11.5}, {"input": [11.5, -31.0], "expected": 11.5}, {"input": [11.5, -30.5], "expected": 11.5}, {"input": [11.5, -30.0], "expected": 11.5}, {"input": [11.5, -29.5], "expected": 11.5}, {"input": [11.5, -29.0], "expected": 11.5}, {"input": [11.5, -28.5], "expected": 11.5}, {"input": [11.5, -28.0], "expected": 11.5}, {"input": [11.5, -27.5], "expected": 11.5}, {"input": [11.5, -27.0], "expected": 11.5}, {"input": [11.5, -26.5], "expected": 11.5}, {"input": [11.5, -26.0], "expected": 11.5}, {"input": [11.5, -25.5], "expected": 11.5}, {"input": [11.5, -25.0], "expected": 11.5}, {"input": [11.5, -24.5], "expected": 11.5}, {"input": [11.5, -24.0], "expected": 11.5}, {"input": [11.5, -23.5], "expected": 11.5}, {"input": [11.5, -23.0], "expected": 11.500000000000002}, {"input": [11.5, -22.5], "expected": 11.500000000000002}, {"input": [11.5, -22.0], "expected": 11.500000000000004}, {"input": [11.5, -21.5], "expected": 11.500000000000005}, {"input": [11.5, -21.0], "expected": 11.500000000000007}, {"input": [11.5, -20.5], "expected": 11.500000000000012}, {"input": [11.5, -20.0], "expected": 11.500000000000021}, {"input": [11.5, -19.5], "expected": 11.500000000000034}, {"input": [11.5, -19.0], "expected": 11.500000000000057}, {"input": [11.5, -18.5], "expected": 11.500000000000094}, {"input": [11.5, -18.0], "expected": 11.500000000000155}, {"input": [11.5, -17.5], "expected": 11.500000000000254}, {"input": [11.5, -17.0], "expected": 11.50000000000042}, {"input": [11.5, -16.5], "expected": 11.500000000000691}, {"input": [11.5, -16.0], "expected": 11.50000000000114}, {"input": [11.5, -15.5], "expected": 11.50000000000188}, {"input": [11.5, -15.0], "expected": 11.500000000003098}, {"input": [11.5, -14.5], "expected": 11.500000000005109}, {"input": [11.5, -14.0], "expected": 11.500000000008423}, {"input": [11.5, -13.5], "expected": 11.500000000013888}, {"input": [11.5, -13.0], "expected": 11.500000000022897}, {"input": [11.5, -12.5], "expected": 11.500000000037751}, {"input": [11.5, -12.0], "expected": 11.500000000062242}, {"input": [11.5, -11.5], "expected": 11.500000000102618}, {"input": [11.5, -11.0], "expected": 11.500000000169189}, {"input": [11.5, -10.5], "expected": 11.500000000278947}, {"input": [11.5, -10.0], "expected": 11.500000000459906}, {"input": [11.5, -9.5], "expected": 11.500000000758256}, {"input": [11.5, -9.0], "expected": 11.500000001250152}, {"input": [11.5, -8.5], "expected": 11.500000002061153}, {"input": [11.5, -8.0], "expected": 11.500000003398268}, {"input": [11.5, -7.5], "expected": 11.500000005602796}, {"input": [11.5, -7.0], "expected": 11.50000000923745}, {"input": [11.5, -6.5], "expected": 11.500000015229979}, {"input": [11.5, -6.0], "expected": 11.50000002510999}, {"input": [11.5, -5.5], "expected": 11.500000041399376}, {"input": [11.5, -5.0], "expected": 11.500000068256032}, {"input": [11.5, -4.5], "expected": 11.500000112535169}, {"input": [11.5, -4.0], "expected": 11.500000185539118}, {"input": [11.5, -3.5], "expected": 11.500000305902274}, {"input": [11.5, -3.0], "expected": 11.500000504347536}, {"input": [11.5, -2.5], "expected": 11.500000831528373}, {"input": [11.5, -2.0], "expected": 11.500001370958147}, {"input": [11.5, -1.5], "expected": 11.500002260326852}, {"input": [11.5, -1.0], "expected": 11.500003726646229}, {"input": [11.5, -0.5], "expected": 11.500006144193478}, {"input": [11.5, 0.0], "expected": 11.50001013004229}, {"input": [11.5, 0.5], "expected": 11.500016701561318}, {"input": [11.5, 1.0], "expected": 11.50002753607023}, {"input": [11.5, 1.5], "expected": 11.500045398899218}, {"input": [11.5, 2.0], "expected": 11.500074849028628}, {"input": [11.5, 2.5], "expected": 11.500123402189724}, {"input": [11.5, 3.0], "expected": 11.50020344767213}, {"input": [11.5, 3.5], "expected": 11.500335406372896}, {"input": [11.5, 4.0], "expected": 11.500552931475362}, {"input": [11.5, 4.5], "expected": 11.500911466453774}, {"input": [11.5, 5.0], "expected": 11.501502310159754}, {"input": [11.5, 5.5], "expected": 11.50247568513773}, {"input": [11.5, 6.0], "expected": 11.50407844327057}, {"input": [11.5, 6.5], "expected": 11.506715348489118}, {"input": [11.5, 7.0], "expected": 11.511047744848593}, {"input": [11.5, 7.5], "expected": 11.51814992791781}, {"input": [11.5, 8.0], "expected": 11.52975041827262}, {"input": [11.5, 8.5], "expected": 11.548587351573742}, {"input": [11.5, 9.0], "expected": 11.578889734292549}, {"input": [11.5, 9.5], "expected": 11.626928011042972}, {"input": [11.5, 10.0], "expected": 11.701413277982752}, {"input": [11.5, 10.5], "expected": 11.813261687518223}, {"input": [11.5, 11.0], "expected": 11.974076984180106}, {"input": [11.5, 11.5], "expected": 12.193147180559945}, {"input": [11.5, 12.0], "expected": 12.474076984180106}, {"input": [11.5, 12.5], "expected": 12.813261687518223}, {"input": [11.5, 13.0], "expected": 13.201413277982752}, {"input": [11.5, 13.5], "expected": 13.626928011042972}, {"input": [11.5, 14.0], "expected": 14.078889734292549}, {"input": [11.5, 14.5], "expected": 14.548587351573742}, {"input": [11.5, 15.0], "expected": 15.02975041827262}, {"input": [11.5, 15.5], "expected": 15.51814992791781}, {"input": [11.5, 16.0], "expected": 16.011047744848593}, {"input": [11.5, 16.5], "expected": 16.506715348489116}, {"input": [11.5, 17.0], "expected": 17.004078443270572}, {"input": [11.5, 17.5], "expected": 17.502475685137732}, {"input": [11.5, 18.0], "expected": 18.001502310159754}, {"input": [11.5, 18.5], "expected": 18.500911466453775}, {"input": [11.5, 19.0], "expected": 19.00055293147536}, {"input": [11.5, 19.5], "expected": 19.500335406372894}, {"input": [11.5, 20.0], "expected": 20.000203447672128}, {"input": [11.5, 20.5], "expected": 20.500123402189722}, {"input": [11.5, 21.0], "expected": 21.00007484902863}, {"input": [11.5, 21.5], "expected": 21.500045398899218}, {"input": [11.5, 22.0], "expected": 22.000027536070228}, {"input": [11.5, 22.5], "expected": 22.500016701561318}, {"input": [11.5, 23.0], "expected": 23.00001013004229}, {"input": [11.5, 23.5], "expected": 23.500006144193478}, {"input": [11.5, 24.0], "expected": 24.000003726646227}, {"input": [11.5, 24.5], "expected": 24.500002260326852}, {"input": [11.5, 25.0], "expected": 25.000001370958145}, {"input": [11.5, 25.5], "expected": 25.500000831528375}, {"input": [11.5, 26.0], "expected": 26.000000504347536}, {"input": [11.5, 26.5], "expected": 26.500000305902272}, {"input": [11.5, 27.0], "expected": 27.00000018553912}, {"input": [11.5, 27.5], "expected": 27.50000011253517}, {"input": [11.5, 28.0], "expected": 28.000000068256032}, {"input": [11.5, 28.5], "expected": 28.500000041399375}, {"input": [11.5, 29.0], "expected": 29.00000002510999}, {"input": [11.5, 29.5], "expected": 29.50000001522998}, {"input": [11.5, 30.0], "expected": 30.00000000923745}, {"input": [11.5, 30.5], "expected": 30.500000005602796}, {"input": [11.5, 31.0], "expected": 31.000000003398267}, {"input": [11.5, 31.5], "expected": 31.500000002061153}, {"input": [11.5, 32.0], "expected": 32.00000000125015}, {"input": [11.5, 32.5], "expected": 32.500000000758256}, {"input": [11.5, 33.0], "expected": 33.000000000459906}, {"input": [11.5, 33.5], "expected": 33.500000000278945}, {"input": [11.5, 34.0], "expected": 34.00000000016919}, {"input": [11.5, 34.5], "expected": 34.50000000010262}, {"input": [11.5, 35.0], "expected": 35.00000000006224}, {"input": [11.5, 35.5], "expected": 35.50000000003775}, {"input": [11.5, 36.0], "expected": 36.0000000000229}, {"input": [11.5, 36.5], "expected": 36.50000000001389}, {"input": [11.5, 37.0], "expected": 37.00000000000842}, {"input": [11.5, 37.5], "expected": 37.50000000000511}, {"input": [11.5, 38.0], "expected": 38.0000000000031}, {"input": [11.5, 38.5], "expected": 38.50000000000188}, {"input": [11.5, 39.0], "expected": 39.00000000000114}, {"input": [11.5, 39.5], "expected": 39.50000000000069}, {"input": [11.5, 40.0], "expected": 40.00000000000042}, {"input": [11.5, 40.5], "expected": 40.500000000000256}, {"input": [11.5, 41.0], "expected": 41.000000000000156}, {"input": [11.5, 41.5], "expected": 41.50000000000009}, {"input": [11.5, 42.0], "expected": 42.00000000000006}, {"input": [11.5, 42.5], "expected": 42.500000000000036}, {"input": [11.5, 43.0], "expected": 43.00000000000002}, {"input": [11.5, 43.5], "expected": 43.500000000000014}, {"input": [11.5, 44.0], "expected": 44.00000000000001}, {"input": [11.5, 44.5], "expected": 44.50000000000001}, {"input": [11.5, 45.0], "expected": 45.0}, {"input": [11.5, 45.5], "expected": 45.5}, {"input": [11.5, 46.0], "expected": 46.0}, {"input": [11.5, 46.5], "expected": 46.5}, {"input": [11.5, 47.0], "expected": 47.0}, {"input": [11.5, 47.5], "expected": 47.5}, {"input": [11.5, 48.0], "expected": 48.0}, {"input": [11.5, 48.5], "expected": 48.5}, {"input": [11.5, 49.0], "expected": 49.0}, {"input": [11.5, 49.5], "expected": 49.5}, {"input": [11.5, 50.0], "expected": 50.0}, {"input": [11.5, 50.5], "expected": 50.5}, {"input": [11.5, 51.0], "expected": 51.0}, {"input": [11.5, 51.5], "expected": 51.5}, {"input": [11.5, 52.0], "expected": 52.0}, {"input": [11.5, 52.5], "expected": 52.5}, {"input": [11.5, 53.0], "expected": 53.0}, {"input": [11.5, 53.5], "expected": 53.5}, {"input": [11.5, 54.0], "expected": 54.0}, {"input": [11.5, 54.5], "expected": 54.5}, {"input": [11.5, 55.0], "expected": 55.0}, {"input": [11.5, 55.5], "expected": 55.5}, {"input": [11.5, 56.0], "expected": 56.0}, {"input": [11.5, 56.5], "expected": 56.5}, {"input": [11.5, 57.0], "expected": 57.0}, {"input": [11.5, 57.5], "expected": 57.5}, {"input": [11.5, 58.0], "expected": 58.0}, {"input": [11.5, 58.5], "expected": 58.5}, {"input": [11.5, 59.0], "expected": 59.0}, {"input": [11.5, 59.5], "expected": 59.5}, {"input": [11.5, 60.0], "expected": 60.0}, {"input": [11.5, 60.5], "expected": 60.5}, {"input": [11.5, 61.0], "expected": 61.0}, {"input": [11.5, 61.5], "expected": 61.5}, {"input": [11.5, 62.0], "expected": 62.0}, {"input": [11.5, 62.5], "expected": 62.5}, {"input": [11.5, 63.0], "expected": 63.0}, {"input": [11.5, 63.5], "expected": 63.5}, {"input": [11.5, 64.0], "expected": 64.0}, {"input": [11.5, 64.5], "expected": 64.5}, {"input": [11.5, 65.0], "expected": 65.0}, {"input": [11.5, 65.5], "expected": 65.5}, {"input": [11.5, 66.0], "expected": 66.0}, {"input": [11.5, 66.5], "expected": 66.5}, {"input": [11.5, 67.0], "expected": 67.0}, {"input": [11.5, 67.5], "expected": 67.5}, {"input": [11.5, 68.0], "expected": 68.0}, {"input": [11.5, 68.5], "expected": 68.5}, {"input": [11.5, 69.0], "expected": 69.0}, {"input": [11.5, 69.5], "expected": 69.5}, {"input": [11.5, 70.0], "expected": 70.0}, {"input": [11.5, 70.5], "expected": 70.5}, {"input": [11.5, 71.0], "expected": 71.0}, {"input": [11.5, 71.5], "expected": 71.5}, {"input": [11.5, 72.0], "expected": 72.0}, {"input": [11.5, 72.5], "expected": 72.5}, {"input": [11.5, 73.0], "expected": 73.0}, {"input": [11.5, 73.5], "expected": 73.5}, {"input": [11.5, 74.0], "expected": 74.0}, {"input": [11.5, 74.5], "expected": 74.5}, {"input": [11.5, 75.0], "expected": 75.0}, {"input": [11.5, 75.5], "expected": 75.5}, {"input": [11.5, 76.0], "expected": 76.0}, {"input": [11.5, 76.5], "expected": 76.5}, {"input": [11.5, 77.0], "expected": 77.0}, {"input": [11.5, 77.5], "expected": 77.5}, {"input": [11.5, 78.0], "expected": 78.0}, {"input": [11.5, 78.5], "expected": 78.5}, {"input": [11.5, 79.0], "expected": 79.0}, {"input": [11.5, 79.5], "expected": 79.5}, {"input": [11.5, 80.0], "expected": 80.0}, {"input": [11.5, 80.5], "expected": 80.5}, {"input": [11.5, 81.0], "expected": 81.0}, {"input": [11.5, 81.5], "expected": 81.5}, {"input": [11.5, 82.0], "expected": 82.0}, {"input": [11.5, 82.5], "expected": 82.5}, {"input": [11.5, 83.0], "expected": 83.0}, {"input": [11.5, 83.5], "expected": 83.5}, {"input": [11.5, 84.0], "expected": 84.0}, {"input": [11.5, 84.5], "expected": 84.5}, {"input": [11.5, 85.0], "expected": 85.0}, {"input": [11.5, 85.5], "expected": 85.5}, {"input": [11.5, 86.0], "expected": 86.0}, {"input": [11.5, 86.5], "expected": 86.5}, {"input": [11.5, 87.0], "expected": 87.0}, {"input": [11.5, 87.5], "expected": 87.5}, {"input": [11.5, 88.0], "expected": 88.0}, {"input": [11.5, 88.5], "expected": 88.5}, {"input": [11.5, 89.0], "expected": 89.0}, {"input": [11.5, 89.5], "expected": 89.5}, {"input": [11.5, 90.0], "expected": 90.0}, {"input": [11.5, 90.5], "expected": 90.5}, {"input": [11.5, 91.0], "expected": 91.0}, {"input": [11.5, 91.5], "expected": 91.5}, {"input": [11.5, 92.0], "expected": 92.0}, {"input": [11.5, 92.5], "expected": 92.5}, {"input": [11.5, 93.0], "expected": 93.0}, {"input": [11.5, 93.5], "expected": 93.5}, {"input": [11.5, 94.0], "expected": 94.0}, {"input": [11.5, 94.5], "expected": 94.5}, {"input": [11.5, 95.0], "expected": 95.0}, {"input": [11.5, 95.5], "expected": 95.5}, {"input": [11.5, 96.0], "expected": 96.0}, {"input": [11.5, 96.5], "expected": 96.5}, {"input": [11.5, 97.0], "expected": 97.0}, {"input": [11.5, 97.5], "expected": 97.5}, {"input": [11.5, 98.0], "expected": 98.0}, {"input": [11.5, 98.5], "expected": 98.5}, {"input": [11.5, 99.0], "expected": 99.0}, {"input": [11.5, 99.5], "expected": 99.5}, {"input": [12.0, -100.0], "expected": 12.0}, {"input": [12.0, -99.5], "expected": 12.0}, {"input": [12.0, -99.0], "expected": 12.0}, {"input": [12.0, -98.5], "expected": 12.0}, {"input": [12.0, -98.0], "expected": 12.0}, {"input": [12.0, -97.5], "expected": 12.0}, {"input": [12.0, -97.0], "expected": 12.0}, {"input": [12.0, -96.5], "expected": 12.0}, {"input": [12.0, -96.0], "expected": 12.0}, {"input": [12.0, -95.5], "expected": 12.0}, {"input": [12.0, -95.0], "expected": 12.0}, {"input": [12.0, -94.5], "expected": 12.0}, {"input": [12.0, -94.0], "expected": 12.0}, {"input": [12.0, -93.5], "expected": 12.0}, {"input": [12.0, -93.0], "expected": 12.0}, {"input": [12.0, -92.5], "expected": 12.0}, {"input": [12.0, -92.0], "expected": 12.0}, {"input": [12.0, -91.5], "expected": 12.0}, {"input": [12.0, -91.0], "expected": 12.0}, {"input": [12.0, -90.5], "expected": 12.0}, {"input": [12.0, -90.0], "expected": 12.0}, {"input": [12.0, -89.5], "expected": 12.0}, {"input": [12.0, -89.0], "expected": 12.0}, {"input": [12.0, -88.5], "expected": 12.0}, {"input": [12.0, -88.0], "expected": 12.0}, {"input": [12.0, -87.5], "expected": 12.0}, {"input": [12.0, -87.0], "expected": 12.0}, {"input": [12.0, -86.5], "expected": 12.0}, {"input": [12.0, -86.0], "expected": 12.0}, {"input": [12.0, -85.5], "expected": 12.0}, {"input": [12.0, -85.0], "expected": 12.0}, {"input": [12.0, -84.5], "expected": 12.0}, {"input": [12.0, -84.0], "expected": 12.0}, {"input": [12.0, -83.5], "expected": 12.0}, {"input": [12.0, -83.0], "expected": 12.0}, {"input": [12.0, -82.5], "expected": 12.0}, {"input": [12.0, -82.0], "expected": 12.0}, {"input": [12.0, -81.5], "expected": 12.0}, {"input": [12.0, -81.0], "expected": 12.0}, {"input": [12.0, -80.5], "expected": 12.0}, {"input": [12.0, -80.0], "expected": 12.0}, {"input": [12.0, -79.5], "expected": 12.0}, {"input": [12.0, -79.0], "expected": 12.0}, {"input": [12.0, -78.5], "expected": 12.0}, {"input": [12.0, -78.0], "expected": 12.0}, {"input": [12.0, -77.5], "expected": 12.0}, {"input": [12.0, -77.0], "expected": 12.0}, {"input": [12.0, -76.5], "expected": 12.0}, {"input": [12.0, -76.0], "expected": 12.0}, {"input": [12.0, -75.5], "expected": 12.0}, {"input": [12.0, -75.0], "expected": 12.0}, {"input": [12.0, -74.5], "expected": 12.0}, {"input": [12.0, -74.0], "expected": 12.0}, {"input": [12.0, -73.5], "expected": 12.0}, {"input": [12.0, -73.0], "expected": 12.0}, {"input": [12.0, -72.5], "expected": 12.0}, {"input": [12.0, -72.0], "expected": 12.0}, {"input": [12.0, -71.5], "expected": 12.0}, {"input": [12.0, -71.0], "expected": 12.0}, {"input": [12.0, -70.5], "expected": 12.0}, {"input": [12.0, -70.0], "expected": 12.0}, {"input": [12.0, -69.5], "expected": 12.0}, {"input": [12.0, -69.0], "expected": 12.0}, {"input": [12.0, -68.5], "expected": 12.0}, {"input": [12.0, -68.0], "expected": 12.0}, {"input": [12.0, -67.5], "expected": 12.0}, {"input": [12.0, -67.0], "expected": 12.0}, {"input": [12.0, -66.5], "expected": 12.0}, {"input": [12.0, -66.0], "expected": 12.0}, {"input": [12.0, -65.5], "expected": 12.0}, {"input": [12.0, -65.0], "expected": 12.0}, {"input": [12.0, -64.5], "expected": 12.0}, {"input": [12.0, -64.0], "expected": 12.0}, {"input": [12.0, -63.5], "expected": 12.0}, {"input": [12.0, -63.0], "expected": 12.0}, {"input": [12.0, -62.5], "expected": 12.0}, {"input": [12.0, -62.0], "expected": 12.0}, {"input": [12.0, -61.5], "expected": 12.0}, {"input": [12.0, -61.0], "expected": 12.0}, {"input": [12.0, -60.5], "expected": 12.0}, {"input": [12.0, -60.0], "expected": 12.0}, {"input": [12.0, -59.5], "expected": 12.0}, {"input": [12.0, -59.0], "expected": 12.0}, {"input": [12.0, -58.5], "expected": 12.0}, {"input": [12.0, -58.0], "expected": 12.0}, {"input": [12.0, -57.5], "expected": 12.0}, {"input": [12.0, -57.0], "expected": 12.0}, {"input": [12.0, -56.5], "expected": 12.0}, {"input": [12.0, -56.0], "expected": 12.0}, {"input": [12.0, -55.5], "expected": 12.0}, {"input": [12.0, -55.0], "expected": 12.0}, {"input": [12.0, -54.5], "expected": 12.0}, {"input": [12.0, -54.0], "expected": 12.0}, {"input": [12.0, -53.5], "expected": 12.0}, {"input": [12.0, -53.0], "expected": 12.0}, {"input": [12.0, -52.5], "expected": 12.0}, {"input": [12.0, -52.0], "expected": 12.0}, {"input": [12.0, -51.5], "expected": 12.0}, {"input": [12.0, -51.0], "expected": 12.0}, {"input": [12.0, -50.5], "expected": 12.0}, {"input": [12.0, -50.0], "expected": 12.0}, {"input": [12.0, -49.5], "expected": 12.0}, {"input": [12.0, -49.0], "expected": 12.0}, {"input": [12.0, -48.5], "expected": 12.0}, {"input": [12.0, -48.0], "expected": 12.0}, {"input": [12.0, -47.5], "expected": 12.0}, {"input": [12.0, -47.0], "expected": 12.0}, {"input": [12.0, -46.5], "expected": 12.0}, {"input": [12.0, -46.0], "expected": 12.0}, {"input": [12.0, -45.5], "expected": 12.0}, {"input": [12.0, -45.0], "expected": 12.0}, {"input": [12.0, -44.5], "expected": 12.0}, {"input": [12.0, -44.0], "expected": 12.0}, {"input": [12.0, -43.5], "expected": 12.0}, {"input": [12.0, -43.0], "expected": 12.0}, {"input": [12.0, -42.5], "expected": 12.0}, {"input": [12.0, -42.0], "expected": 12.0}, {"input": [12.0, -41.5], "expected": 12.0}, {"input": [12.0, -41.0], "expected": 12.0}, {"input": [12.0, -40.5], "expected": 12.0}, {"input": [12.0, -40.0], "expected": 12.0}, {"input": [12.0, -39.5], "expected": 12.0}, {"input": [12.0, -39.0], "expected": 12.0}, {"input": [12.0, -38.5], "expected": 12.0}, {"input": [12.0, -38.0], "expected": 12.0}, {"input": [12.0, -37.5], "expected": 12.0}, {"input": [12.0, -37.0], "expected": 12.0}, {"input": [12.0, -36.5], "expected": 12.0}, {"input": [12.0, -36.0], "expected": 12.0}, {"input": [12.0, -35.5], "expected": 12.0}, {"input": [12.0, -35.0], "expected": 12.0}, {"input": [12.0, -34.5], "expected": 12.0}, {"input": [12.0, -34.0], "expected": 12.0}, {"input": [12.0, -33.5], "expected": 12.0}, {"input": [12.0, -33.0], "expected": 12.0}, {"input": [12.0, -32.5], "expected": 12.0}, {"input": [12.0, -32.0], "expected": 12.0}, {"input": [12.0, -31.5], "expected": 12.0}, {"input": [12.0, -31.0], "expected": 12.0}, {"input": [12.0, -30.5], "expected": 12.0}, {"input": [12.0, -30.0], "expected": 12.0}, {"input": [12.0, -29.5], "expected": 12.0}, {"input": [12.0, -29.0], "expected": 12.0}, {"input": [12.0, -28.5], "expected": 12.0}, {"input": [12.0, -28.0], "expected": 12.0}, {"input": [12.0, -27.5], "expected": 12.0}, {"input": [12.0, -27.0], "expected": 12.0}, {"input": [12.0, -26.5], "expected": 12.0}, {"input": [12.0, -26.0], "expected": 12.0}, {"input": [12.0, -25.5], "expected": 12.0}, {"input": [12.0, -25.0], "expected": 12.0}, {"input": [12.0, -24.5], "expected": 12.0}, {"input": [12.0, -24.0], "expected": 12.0}, {"input": [12.0, -23.5], "expected": 12.0}, {"input": [12.0, -23.0], "expected": 12.0}, {"input": [12.0, -22.5], "expected": 12.000000000000002}, {"input": [12.0, -22.0], "expected": 12.000000000000002}, {"input": [12.0, -21.5], "expected": 12.000000000000004}, {"input": [12.0, -21.0], "expected": 12.000000000000005}, {"input": [12.0, -20.5], "expected": 12.000000000000007}, {"input": [12.0, -20.0], "expected": 12.000000000000012}, {"input": [12.0, -19.5], "expected": 12.000000000000021}, {"input": [12.0, -19.0], "expected": 12.000000000000034}, {"input": [12.0, -18.5], "expected": 12.000000000000057}, {"input": [12.0, -18.0], "expected": 12.000000000000094}, {"input": [12.0, -17.5], "expected": 12.000000000000155}, {"input": [12.0, -17.0], "expected": 12.000000000000254}, {"input": [12.0, -16.5], "expected": 12.00000000000042}, {"input": [12.0, -16.0], "expected": 12.000000000000691}, {"input": [12.0, -15.5], "expected": 12.00000000000114}, {"input": [12.0, -15.0], "expected": 12.00000000000188}, {"input": [12.0, -14.5], "expected": 12.000000000003098}, {"input": [12.0, -14.0], "expected": 12.000000000005109}, {"input": [12.0, -13.5], "expected": 12.000000000008423}, {"input": [12.0, -13.0], "expected": 12.000000000013888}, {"input": [12.0, -12.5], "expected": 12.000000000022897}, {"input": [12.0, -12.0], "expected": 12.000000000037751}, {"input": [12.0, -11.5], "expected": 12.000000000062242}, {"input": [12.0, -11.0], "expected": 12.000000000102618}, {"input": [12.0, -10.5], "expected": 12.000000000169189}, {"input": [12.0, -10.0], "expected": 12.000000000278947}, {"input": [12.0, -9.5], "expected": 12.000000000459906}, {"input": [12.0, -9.0], "expected": 12.000000000758256}, {"input": [12.0, -8.5], "expected": 12.000000001250152}, {"input": [12.0, -8.0], "expected": 12.000000002061153}, {"input": [12.0, -7.5], "expected": 12.000000003398268}, {"input": [12.0, -7.0], "expected": 12.000000005602796}, {"input": [12.0, -6.5], "expected": 12.00000000923745}, {"input": [12.0, -6.0], "expected": 12.000000015229979}, {"input": [12.0, -5.5], "expected": 12.00000002510999}, {"input": [12.0, -5.0], "expected": 12.000000041399376}, {"input": [12.0, -4.5], "expected": 12.000000068256032}, {"input": [12.0, -4.0], "expected": 12.000000112535169}, {"input": [12.0, -3.5], "expected": 12.000000185539118}, {"input": [12.0, -3.0], "expected": 12.000000305902274}, {"input": [12.0, -2.5], "expected": 12.000000504347536}, {"input": [12.0, -2.0], "expected": 12.000000831528373}, {"input": [12.0, -1.5], "expected": 12.000001370958147}, {"input": [12.0, -1.0], "expected": 12.000002260326852}, {"input": [12.0, -0.5], "expected": 12.000003726646229}, {"input": [12.0, 0.0], "expected": 12.000006144193478}, {"input": [12.0, 0.5], "expected": 12.00001013004229}, {"input": [12.0, 1.0], "expected": 12.000016701561318}, {"input": [12.0, 1.5], "expected": 12.00002753607023}, {"input": [12.0, 2.0], "expected": 12.000045398899218}, {"input": [12.0, 2.5], "expected": 12.000074849028628}, {"input": [12.0, 3.0], "expected": 12.000123402189724}, {"input": [12.0, 3.5], "expected": 12.00020344767213}, {"input": [12.0, 4.0], "expected": 12.000335406372896}, {"input": [12.0, 4.5], "expected": 12.000552931475362}, {"input": [12.0, 5.0], "expected": 12.000911466453774}, {"input": [12.0, 5.5], "expected": 12.001502310159754}, {"input": [12.0, 6.0], "expected": 12.00247568513773}, {"input": [12.0, 6.5], "expected": 12.00407844327057}, {"input": [12.0, 7.0], "expected": 12.006715348489118}, {"input": [12.0, 7.5], "expected": 12.011047744848593}, {"input": [12.0, 8.0], "expected": 12.01814992791781}, {"input": [12.0, 8.5], "expected": 12.02975041827262}, {"input": [12.0, 9.0], "expected": 12.048587351573742}, {"input": [12.0, 9.5], "expected": 12.078889734292549}, {"input": [12.0, 10.0], "expected": 12.126928011042972}, {"input": [12.0, 10.5], "expected": 12.201413277982752}, {"input": [12.0, 11.0], "expected": 12.313261687518223}, {"input": [12.0, 11.5], "expected": 12.474076984180106}, {"input": [12.0, 12.0], "expected": 12.693147180559945}, {"input": [12.0, 12.5], "expected": 12.974076984180106}, {"input": [12.0, 13.0], "expected": 13.313261687518223}, {"input": [12.0, 13.5], "expected": 13.701413277982752}, {"input": [12.0, 14.0], "expected": 14.126928011042972}, {"input": [12.0, 14.5], "expected": 14.578889734292549}, {"input": [12.0, 15.0], "expected": 15.048587351573742}, {"input": [12.0, 15.5], "expected": 15.52975041827262}, {"input": [12.0, 16.0], "expected": 16.01814992791781}, {"input": [12.0, 16.5], "expected": 16.511047744848593}, {"input": [12.0, 17.0], "expected": 17.006715348489116}, {"input": [12.0, 17.5], "expected": 17.504078443270572}, {"input": [12.0, 18.0], "expected": 18.002475685137732}, {"input": [12.0, 18.5], "expected": 18.501502310159754}, {"input": [12.0, 19.0], "expected": 19.000911466453775}, {"input": [12.0, 19.5], "expected": 19.50055293147536}, {"input": [12.0, 20.0], "expected": 20.000335406372894}, {"input": [12.0, 20.5], "expected": 20.500203447672128}, {"input": [12.0, 21.0], "expected": 21.000123402189722}, {"input": [12.0, 21.5], "expected": 21.50007484902863}, {"input": [12.0, 22.0], "expected": 22.000045398899218}, {"input": [12.0, 22.5], "expected": 22.500027536070228}, {"input": [12.0, 23.0], "expected": 23.000016701561318}, {"input": [12.0, 23.5], "expected": 23.50001013004229}, {"input": [12.0, 24.0], "expected": 24.000006144193478}, {"input": [12.0, 24.5], "expected": 24.500003726646227}, {"input": [12.0, 25.0], "expected": 25.000002260326852}, {"input": [12.0, 25.5], "expected": 25.500001370958145}, {"input": [12.0, 26.0], "expected": 26.000000831528375}, {"input": [12.0, 26.5], "expected": 26.500000504347536}, {"input": [12.0, 27.0], "expected": 27.000000305902272}, {"input": [12.0, 27.5], "expected": 27.50000018553912}, {"input": [12.0, 28.0], "expected": 28.00000011253517}, {"input": [12.0, 28.5], "expected": 28.500000068256032}, {"input": [12.0, 29.0], "expected": 29.000000041399375}, {"input": [12.0, 29.5], "expected": 29.50000002510999}, {"input": [12.0, 30.0], "expected": 30.00000001522998}, {"input": [12.0, 30.5], "expected": 30.50000000923745}, {"input": [12.0, 31.0], "expected": 31.000000005602796}, {"input": [12.0, 31.5], "expected": 31.500000003398267}, {"input": [12.0, 32.0], "expected": 32.00000000206116}, {"input": [12.0, 32.5], "expected": 32.50000000125015}, {"input": [12.0, 33.0], "expected": 33.000000000758256}, {"input": [12.0, 33.5], "expected": 33.500000000459906}, {"input": [12.0, 34.0], "expected": 34.000000000278945}, {"input": [12.0, 34.5], "expected": 34.50000000016919}, {"input": [12.0, 35.0], "expected": 35.00000000010262}, {"input": [12.0, 35.5], "expected": 35.50000000006224}, {"input": [12.0, 36.0], "expected": 36.00000000003775}, {"input": [12.0, 36.5], "expected": 36.5000000000229}, {"input": [12.0, 37.0], "expected": 37.00000000001389}, {"input": [12.0, 37.5], "expected": 37.50000000000842}, {"input": [12.0, 38.0], "expected": 38.00000000000511}, {"input": [12.0, 38.5], "expected": 38.5000000000031}, {"input": [12.0, 39.0], "expected": 39.00000000000188}, {"input": [12.0, 39.5], "expected": 39.50000000000114}, {"input": [12.0, 40.0], "expected": 40.00000000000069}, {"input": [12.0, 40.5], "expected": 40.50000000000042}, {"input": [12.0, 41.0], "expected": 41.000000000000256}, {"input": [12.0, 41.5], "expected": 41.500000000000156}, {"input": [12.0, 42.0], "expected": 42.00000000000009}, {"input": [12.0, 42.5], "expected": 42.50000000000006}, {"input": [12.0, 43.0], "expected": 43.000000000000036}, {"input": [12.0, 43.5], "expected": 43.50000000000002}, {"input": [12.0, 44.0], "expected": 44.000000000000014}, {"input": [12.0, 44.5], "expected": 44.50000000000001}, {"input": [12.0, 45.0], "expected": 45.00000000000001}, {"input": [12.0, 45.5], "expected": 45.5}, {"input": [12.0, 46.0], "expected": 46.0}, {"input": [12.0, 46.5], "expected": 46.5}, {"input": [12.0, 47.0], "expected": 47.0}, {"input": [12.0, 47.5], "expected": 47.5}, {"input": [12.0, 48.0], "expected": 48.0}, {"input": [12.0, 48.5], "expected": 48.5}, {"input": [12.0, 49.0], "expected": 49.0}, {"input": [12.0, 49.5], "expected": 49.5}, {"input": [12.0, 50.0], "expected": 50.0}, {"input": [12.0, 50.5], "expected": 50.5}, {"input": [12.0, 51.0], "expected": 51.0}, {"input": [12.0, 51.5], "expected": 51.5}, {"input": [12.0, 52.0], "expected": 52.0}, {"input": [12.0, 52.5], "expected": 52.5}, {"input": [12.0, 53.0], "expected": 53.0}, {"input": [12.0, 53.5], "expected": 53.5}, {"input": [12.0, 54.0], "expected": 54.0}, {"input": [12.0, 54.5], "expected": 54.5}, {"input": [12.0, 55.0], "expected": 55.0}, {"input": [12.0, 55.5], "expected": 55.5}, {"input": [12.0, 56.0], "expected": 56.0}, {"input": [12.0, 56.5], "expected": 56.5}, {"input": [12.0, 57.0], "expected": 57.0}, {"input": [12.0, 57.5], "expected": 57.5}, {"input": [12.0, 58.0], "expected": 58.0}, {"input": [12.0, 58.5], "expected": 58.5}, {"input": [12.0, 59.0], "expected": 59.0}, {"input": [12.0, 59.5], "expected": 59.5}, {"input": [12.0, 60.0], "expected": 60.0}, {"input": [12.0, 60.5], "expected": 60.5}, {"input": [12.0, 61.0], "expected": 61.0}, {"input": [12.0, 61.5], "expected": 61.5}, {"input": [12.0, 62.0], "expected": 62.0}, {"input": [12.0, 62.5], "expected": 62.5}, {"input": [12.0, 63.0], "expected": 63.0}, {"input": [12.0, 63.5], "expected": 63.5}, {"input": [12.0, 64.0], "expected": 64.0}, {"input": [12.0, 64.5], "expected": 64.5}, {"input": [12.0, 65.0], "expected": 65.0}, {"input": [12.0, 65.5], "expected": 65.5}, {"input": [12.0, 66.0], "expected": 66.0}, {"input": [12.0, 66.5], "expected": 66.5}, {"input": [12.0, 67.0], "expected": 67.0}, {"input": [12.0, 67.5], "expected": 67.5}, {"input": [12.0, 68.0], "expected": 68.0}, {"input": [12.0, 68.5], "expected": 68.5}, {"input": [12.0, 69.0], "expected": 69.0}, {"input": [12.0, 69.5], "expected": 69.5}, {"input": [12.0, 70.0], "expected": 70.0}, {"input": [12.0, 70.5], "expected": 70.5}, {"input": [12.0, 71.0], "expected": 71.0}, {"input": [12.0, 71.5], "expected": 71.5}, {"input": [12.0, 72.0], "expected": 72.0}, {"input": [12.0, 72.5], "expected": 72.5}, {"input": [12.0, 73.0], "expected": 73.0}, {"input": [12.0, 73.5], "expected": 73.5}, {"input": [12.0, 74.0], "expected": 74.0}, {"input": [12.0, 74.5], "expected": 74.5}, {"input": [12.0, 75.0], "expected": 75.0}, {"input": [12.0, 75.5], "expected": 75.5}, {"input": [12.0, 76.0], "expected": 76.0}, {"input": [12.0, 76.5], "expected": 76.5}, {"input": [12.0, 77.0], "expected": 77.0}, {"input": [12.0, 77.5], "expected": 77.5}, {"input": [12.0, 78.0], "expected": 78.0}, {"input": [12.0, 78.5], "expected": 78.5}, {"input": [12.0, 79.0], "expected": 79.0}, {"input": [12.0, 79.5], "expected": 79.5}, {"input": [12.0, 80.0], "expected": 80.0}, {"input": [12.0, 80.5], "expected": 80.5}, {"input": [12.0, 81.0], "expected": 81.0}, {"input": [12.0, 81.5], "expected": 81.5}, {"input": [12.0, 82.0], "expected": 82.0}, {"input": [12.0, 82.5], "expected": 82.5}, {"input": [12.0, 83.0], "expected": 83.0}, {"input": [12.0, 83.5], "expected": 83.5}, {"input": [12.0, 84.0], "expected": 84.0}, {"input": [12.0, 84.5], "expected": 84.5}, {"input": [12.0, 85.0], "expected": 85.0}, {"input": [12.0, 85.5], "expected": 85.5}, {"input": [12.0, 86.0], "expected": 86.0}, {"input": [12.0, 86.5], "expected": 86.5}, {"input": [12.0, 87.0], "expected": 87.0}, {"input": [12.0, 87.5], "expected": 87.5}, {"input": [12.0, 88.0], "expected": 88.0}, {"input": [12.0, 88.5], "expected": 88.5}, {"input": [12.0, 89.0], "expected": 89.0}, {"input": [12.0, 89.5], "expected": 89.5}, {"input": [12.0, 90.0], "expected": 90.0}, {"input": [12.0, 90.5], "expected": 90.5}, {"input": [12.0, 91.0], "expected": 91.0}, {"input": [12.0, 91.5], "expected": 91.5}, {"input": [12.0, 92.0], "expected": 92.0}, {"input": [12.0, 92.5], "expected": 92.5}, {"input": [12.0, 93.0], "expected": 93.0}, {"input": [12.0, 93.5], "expected": 93.5}, {"input": [12.0, 94.0], "expected": 94.0}, {"input": [12.0, 94.5], "expected": 94.5}, {"input": [12.0, 95.0], "expected": 95.0}, {"input": [12.0, 95.5], "expected": 95.5}, {"input": [12.0, 96.0], "expected": 96.0}, {"input": [12.0, 96.5], "expected": 96.5}, {"input": [12.0, 97.0], "expected": 97.0}, {"input": [12.0, 97.5], "expected": 97.5}, {"input": [12.0, 98.0], "expected": 98.0}, {"input": [12.0, 98.5], "expected": 98.5}, {"input": [12.0, 99.0], "expected": 99.0}, {"input": [12.0, 99.5], "expected": 99.5}, {"input": [12.5, -100.0], "expected": 12.5}, {"input": [12.5, -99.5], "expected": 12.5}, {"input": [12.5, -99.0], "expected": 12.5}, {"input": [12.5, -98.5], "expected": 12.5}, {"input": [12.5, -98.0], "expected": 12.5}, {"input": [12.5, -97.5], "expected": 12.5}, {"input": [12.5, -97.0], "expected": 12.5}, {"input": [12.5, -96.5], "expected": 12.5}, {"input": [12.5, -96.0], "expected": 12.5}, {"input": [12.5, -95.5], "expected": 12.5}, {"input": [12.5, -95.0], "expected": 12.5}, {"input": [12.5, -94.5], "expected": 12.5}, {"input": [12.5, -94.0], "expected": 12.5}, {"input": [12.5, -93.5], "expected": 12.5}, {"input": [12.5, -93.0], "expected": 12.5}, {"input": [12.5, -92.5], "expected": 12.5}, {"input": [12.5, -92.0], "expected": 12.5}, {"input": [12.5, -91.5], "expected": 12.5}, {"input": [12.5, -91.0], "expected": 12.5}, {"input": [12.5, -90.5], "expected": 12.5}, {"input": [12.5, -90.0], "expected": 12.5}, {"input": [12.5, -89.5], "expected": 12.5}, {"input": [12.5, -89.0], "expected": 12.5}, {"input": [12.5, -88.5], "expected": 12.5}, {"input": [12.5, -88.0], "expected": 12.5}, {"input": [12.5, -87.5], "expected": 12.5}, {"input": [12.5, -87.0], "expected": 12.5}, {"input": [12.5, -86.5], "expected": 12.5}, {"input": [12.5, -86.0], "expected": 12.5}, {"input": [12.5, -85.5], "expected": 12.5}, {"input": [12.5, -85.0], "expected": 12.5}, {"input": [12.5, -84.5], "expected": 12.5}, {"input": [12.5, -84.0], "expected": 12.5}, {"input": [12.5, -83.5], "expected": 12.5}, {"input": [12.5, -83.0], "expected": 12.5}, {"input": [12.5, -82.5], "expected": 12.5}, {"input": [12.5, -82.0], "expected": 12.5}, {"input": [12.5, -81.5], "expected": 12.5}, {"input": [12.5, -81.0], "expected": 12.5}, {"input": [12.5, -80.5], "expected": 12.5}, {"input": [12.5, -80.0], "expected": 12.5}, {"input": [12.5, -79.5], "expected": 12.5}, {"input": [12.5, -79.0], "expected": 12.5}, {"input": [12.5, -78.5], "expected": 12.5}, {"input": [12.5, -78.0], "expected": 12.5}, {"input": [12.5, -77.5], "expected": 12.5}, {"input": [12.5, -77.0], "expected": 12.5}, {"input": [12.5, -76.5], "expected": 12.5}, {"input": [12.5, -76.0], "expected": 12.5}, {"input": [12.5, -75.5], "expected": 12.5}, {"input": [12.5, -75.0], "expected": 12.5}, {"input": [12.5, -74.5], "expected": 12.5}, {"input": [12.5, -74.0], "expected": 12.5}, {"input": [12.5, -73.5], "expected": 12.5}, {"input": [12.5, -73.0], "expected": 12.5}, {"input": [12.5, -72.5], "expected": 12.5}, {"input": [12.5, -72.0], "expected": 12.5}, {"input": [12.5, -71.5], "expected": 12.5}, {"input": [12.5, -71.0], "expected": 12.5}, {"input": [12.5, -70.5], "expected": 12.5}, {"input": [12.5, -70.0], "expected": 12.5}, {"input": [12.5, -69.5], "expected": 12.5}, {"input": [12.5, -69.0], "expected": 12.5}, {"input": [12.5, -68.5], "expected": 12.5}, {"input": [12.5, -68.0], "expected": 12.5}, {"input": [12.5, -67.5], "expected": 12.5}, {"input": [12.5, -67.0], "expected": 12.5}, {"input": [12.5, -66.5], "expected": 12.5}, {"input": [12.5, -66.0], "expected": 12.5}, {"input": [12.5, -65.5], "expected": 12.5}, {"input": [12.5, -65.0], "expected": 12.5}, {"input": [12.5, -64.5], "expected": 12.5}, {"input": [12.5, -64.0], "expected": 12.5}, {"input": [12.5, -63.5], "expected": 12.5}, {"input": [12.5, -63.0], "expected": 12.5}, {"input": [12.5, -62.5], "expected": 12.5}, {"input": [12.5, -62.0], "expected": 12.5}, {"input": [12.5, -61.5], "expected": 12.5}, {"input": [12.5, -61.0], "expected": 12.5}, {"input": [12.5, -60.5], "expected": 12.5}, {"input": [12.5, -60.0], "expected": 12.5}, {"input": [12.5, -59.5], "expected": 12.5}, {"input": [12.5, -59.0], "expected": 12.5}, {"input": [12.5, -58.5], "expected": 12.5}, {"input": [12.5, -58.0], "expected": 12.5}, {"input": [12.5, -57.5], "expected": 12.5}, {"input": [12.5, -57.0], "expected": 12.5}, {"input": [12.5, -56.5], "expected": 12.5}, {"input": [12.5, -56.0], "expected": 12.5}, {"input": [12.5, -55.5], "expected": 12.5}, {"input": [12.5, -55.0], "expected": 12.5}, {"input": [12.5, -54.5], "expected": 12.5}, {"input": [12.5, -54.0], "expected": 12.5}, {"input": [12.5, -53.5], "expected": 12.5}, {"input": [12.5, -53.0], "expected": 12.5}, {"input": [12.5, -52.5], "expected": 12.5}, {"input": [12.5, -52.0], "expected": 12.5}, {"input": [12.5, -51.5], "expected": 12.5}, {"input": [12.5, -51.0], "expected": 12.5}, {"input": [12.5, -50.5], "expected": 12.5}, {"input": [12.5, -50.0], "expected": 12.5}, {"input": [12.5, -49.5], "expected": 12.5}, {"input": [12.5, -49.0], "expected": 12.5}, {"input": [12.5, -48.5], "expected": 12.5}, {"input": [12.5, -48.0], "expected": 12.5}, {"input": [12.5, -47.5], "expected": 12.5}, {"input": [12.5, -47.0], "expected": 12.5}, {"input": [12.5, -46.5], "expected": 12.5}, {"input": [12.5, -46.0], "expected": 12.5}, {"input": [12.5, -45.5], "expected": 12.5}, {"input": [12.5, -45.0], "expected": 12.5}, {"input": [12.5, -44.5], "expected": 12.5}, {"input": [12.5, -44.0], "expected": 12.5}, {"input": [12.5, -43.5], "expected": 12.5}, {"input": [12.5, -43.0], "expected": 12.5}, {"input": [12.5, -42.5], "expected": 12.5}, {"input": [12.5, -42.0], "expected": 12.5}, {"input": [12.5, -41.5], "expected": 12.5}, {"input": [12.5, -41.0], "expected": 12.5}, {"input": [12.5, -40.5], "expected": 12.5}, {"input": [12.5, -40.0], "expected": 12.5}, {"input": [12.5, -39.5], "expected": 12.5}, {"input": [12.5, -39.0], "expected": 12.5}, {"input": [12.5, -38.5], "expected": 12.5}, {"input": [12.5, -38.0], "expected": 12.5}, {"input": [12.5, -37.5], "expected": 12.5}, {"input": [12.5, -37.0], "expected": 12.5}, {"input": [12.5, -36.5], "expected": 12.5}, {"input": [12.5, -36.0], "expected": 12.5}, {"input": [12.5, -35.5], "expected": 12.5}, {"input": [12.5, -35.0], "expected": 12.5}, {"input": [12.5, -34.5], "expected": 12.5}, {"input": [12.5, -34.0], "expected": 12.5}, {"input": [12.5, -33.5], "expected": 12.5}, {"input": [12.5, -33.0], "expected": 12.5}, {"input": [12.5, -32.5], "expected": 12.5}, {"input": [12.5, -32.0], "expected": 12.5}, {"input": [12.5, -31.5], "expected": 12.5}, {"input": [12.5, -31.0], "expected": 12.5}, {"input": [12.5, -30.5], "expected": 12.5}, {"input": [12.5, -30.0], "expected": 12.5}, {"input": [12.5, -29.5], "expected": 12.5}, {"input": [12.5, -29.0], "expected": 12.5}, {"input": [12.5, -28.5], "expected": 12.5}, {"input": [12.5, -28.0], "expected": 12.5}, {"input": [12.5, -27.5], "expected": 12.5}, {"input": [12.5, -27.0], "expected": 12.5}, {"input": [12.5, -26.5], "expected": 12.5}, {"input": [12.5, -26.0], "expected": 12.5}, {"input": [12.5, -25.5], "expected": 12.5}, {"input": [12.5, -25.0], "expected": 12.5}, {"input": [12.5, -24.5], "expected": 12.5}, {"input": [12.5, -24.0], "expected": 12.5}, {"input": [12.5, -23.5], "expected": 12.5}, {"input": [12.5, -23.0], "expected": 12.5}, {"input": [12.5, -22.5], "expected": 12.5}, {"input": [12.5, -22.0], "expected": 12.500000000000002}, {"input": [12.5, -21.5], "expected": 12.500000000000002}, {"input": [12.5, -21.0], "expected": 12.500000000000004}, {"input": [12.5, -20.5], "expected": 12.500000000000005}, {"input": [12.5, -20.0], "expected": 12.500000000000007}, {"input": [12.5, -19.5], "expected": 12.500000000000012}, {"input": [12.5, -19.0], "expected": 12.500000000000021}, {"input": [12.5, -18.5], "expected": 12.500000000000034}, {"input": [12.5, -18.0], "expected": 12.500000000000057}, {"input": [12.5, -17.5], "expected": 12.500000000000094}, {"input": [12.5, -17.0], "expected": 12.500000000000155}, {"input": [12.5, -16.5], "expected": 12.500000000000254}, {"input": [12.5, -16.0], "expected": 12.50000000000042}, {"input": [12.5, -15.5], "expected": 12.500000000000691}, {"input": [12.5, -15.0], "expected": 12.50000000000114}, {"input": [12.5, -14.5], "expected": 12.50000000000188}, {"input": [12.5, -14.0], "expected": 12.500000000003098}, {"input": [12.5, -13.5], "expected": 12.500000000005109}, {"input": [12.5, -13.0], "expected": 12.500000000008423}, {"input": [12.5, -12.5], "expected": 12.500000000013888}, {"input": [12.5, -12.0], "expected": 12.500000000022897}, {"input": [12.5, -11.5], "expected": 12.500000000037751}, {"input": [12.5, -11.0], "expected": 12.500000000062242}, {"input": [12.5, -10.5], "expected": 12.500000000102618}, {"input": [12.5, -10.0], "expected": 12.500000000169189}, {"input": [12.5, -9.5], "expected": 12.500000000278947}, {"input": [12.5, -9.0], "expected": 12.500000000459906}, {"input": [12.5, -8.5], "expected": 12.500000000758256}, {"input": [12.5, -8.0], "expected": 12.500000001250152}, {"input": [12.5, -7.5], "expected": 12.500000002061153}, {"input": [12.5, -7.0], "expected": 12.500000003398268}, {"input": [12.5, -6.5], "expected": 12.500000005602796}, {"input": [12.5, -6.0], "expected": 12.50000000923745}, {"input": [12.5, -5.5], "expected": 12.500000015229979}, {"input": [12.5, -5.0], "expected": 12.50000002510999}, {"input": [12.5, -4.5], "expected": 12.500000041399376}, {"input": [12.5, -4.0], "expected": 12.500000068256032}, {"input": [12.5, -3.5], "expected": 12.500000112535169}, {"input": [12.5, -3.0], "expected": 12.500000185539118}, {"input": [12.5, -2.5], "expected": 12.500000305902274}, {"input": [12.5, -2.0], "expected": 12.500000504347536}, {"input": [12.5, -1.5], "expected": 12.500000831528373}, {"input": [12.5, -1.0], "expected": 12.500001370958147}, {"input": [12.5, -0.5], "expected": 12.500002260326852}, {"input": [12.5, 0.0], "expected": 12.500003726646229}, {"input": [12.5, 0.5], "expected": 12.500006144193478}, {"input": [12.5, 1.0], "expected": 12.50001013004229}, {"input": [12.5, 1.5], "expected": 12.500016701561318}, {"input": [12.5, 2.0], "expected": 12.50002753607023}, {"input": [12.5, 2.5], "expected": 12.500045398899218}, {"input": [12.5, 3.0], "expected": 12.500074849028628}, {"input": [12.5, 3.5], "expected": 12.500123402189724}, {"input": [12.5, 4.0], "expected": 12.50020344767213}, {"input": [12.5, 4.5], "expected": 12.500335406372896}, {"input": [12.5, 5.0], "expected": 12.500552931475362}, {"input": [12.5, 5.5], "expected": 12.500911466453774}, {"input": [12.5, 6.0], "expected": 12.501502310159754}, {"input": [12.5, 6.5], "expected": 12.50247568513773}, {"input": [12.5, 7.0], "expected": 12.50407844327057}, {"input": [12.5, 7.5], "expected": 12.506715348489118}, {"input": [12.5, 8.0], "expected": 12.511047744848593}, {"input": [12.5, 8.5], "expected": 12.51814992791781}, {"input": [12.5, 9.0], "expected": 12.52975041827262}, {"input": [12.5, 9.5], "expected": 12.548587351573742}, {"input": [12.5, 10.0], "expected": 12.578889734292549}, {"input": [12.5, 10.5], "expected": 12.626928011042972}, {"input": [12.5, 11.0], "expected": 12.701413277982752}, {"input": [12.5, 11.5], "expected": 12.813261687518223}, {"input": [12.5, 12.0], "expected": 12.974076984180106}, {"input": [12.5, 12.5], "expected": 13.193147180559945}, {"input": [12.5, 13.0], "expected": 13.474076984180106}, {"input": [12.5, 13.5], "expected": 13.813261687518223}, {"input": [12.5, 14.0], "expected": 14.201413277982752}, {"input": [12.5, 14.5], "expected": 14.626928011042972}, {"input": [12.5, 15.0], "expected": 15.078889734292549}, {"input": [12.5, 15.5], "expected": 15.548587351573742}, {"input": [12.5, 16.0], "expected": 16.02975041827262}, {"input": [12.5, 16.5], "expected": 16.51814992791781}, {"input": [12.5, 17.0], "expected": 17.011047744848593}, {"input": [12.5, 17.5], "expected": 17.506715348489116}, {"input": [12.5, 18.0], "expected": 18.004078443270572}, {"input": [12.5, 18.5], "expected": 18.502475685137732}, {"input": [12.5, 19.0], "expected": 19.001502310159754}, {"input": [12.5, 19.5], "expected": 19.500911466453775}, {"input": [12.5, 20.0], "expected": 20.00055293147536}, {"input": [12.5, 20.5], "expected": 20.500335406372894}, {"input": [12.5, 21.0], "expected": 21.000203447672128}, {"input": [12.5, 21.5], "expected": 21.500123402189722}, {"input": [12.5, 22.0], "expected": 22.00007484902863}, {"input": [12.5, 22.5], "expected": 22.500045398899218}, {"input": [12.5, 23.0], "expected": 23.000027536070228}, {"input": [12.5, 23.5], "expected": 23.500016701561318}, {"input": [12.5, 24.0], "expected": 24.00001013004229}, {"input": [12.5, 24.5], "expected": 24.500006144193478}, {"input": [12.5, 25.0], "expected": 25.000003726646227}, {"input": [12.5, 25.5], "expected": 25.500002260326852}, {"input": [12.5, 26.0], "expected": 26.000001370958145}, {"input": [12.5, 26.5], "expected": 26.500000831528375}, {"input": [12.5, 27.0], "expected": 27.000000504347536}, {"input": [12.5, 27.5], "expected": 27.500000305902272}, {"input": [12.5, 28.0], "expected": 28.00000018553912}, {"input": [12.5, 28.5], "expected": 28.50000011253517}, {"input": [12.5, 29.0], "expected": 29.000000068256032}, {"input": [12.5, 29.5], "expected": 29.500000041399375}, {"input": [12.5, 30.0], "expected": 30.00000002510999}, {"input": [12.5, 30.5], "expected": 30.50000001522998}, {"input": [12.5, 31.0], "expected": 31.00000000923745}, {"input": [12.5, 31.5], "expected": 31.500000005602796}, {"input": [12.5, 32.0], "expected": 32.00000000339827}, {"input": [12.5, 32.5], "expected": 32.50000000206116}, {"input": [12.5, 33.0], "expected": 33.00000000125015}, {"input": [12.5, 33.5], "expected": 33.500000000758256}, {"input": [12.5, 34.0], "expected": 34.000000000459906}, {"input": [12.5, 34.5], "expected": 34.500000000278945}, {"input": [12.5, 35.0], "expected": 35.00000000016919}, {"input": [12.5, 35.5], "expected": 35.50000000010262}, {"input": [12.5, 36.0], "expected": 36.00000000006224}, {"input": [12.5, 36.5], "expected": 36.50000000003775}, {"input": [12.5, 37.0], "expected": 37.0000000000229}, {"input": [12.5, 37.5], "expected": 37.50000000001389}, {"input": [12.5, 38.0], "expected": 38.00000000000842}, {"input": [12.5, 38.5], "expected": 38.50000000000511}, {"input": [12.5, 39.0], "expected": 39.0000000000031}, {"input": [12.5, 39.5], "expected": 39.50000000000188}, {"input": [12.5, 40.0], "expected": 40.00000000000114}, {"input": [12.5, 40.5], "expected": 40.50000000000069}, {"input": [12.5, 41.0], "expected": 41.00000000000042}, {"input": [12.5, 41.5], "expected": 41.500000000000256}, {"input": [12.5, 42.0], "expected": 42.000000000000156}, {"input": [12.5, 42.5], "expected": 42.50000000000009}, {"input": [12.5, 43.0], "expected": 43.00000000000006}, {"input": [12.5, 43.5], "expected": 43.500000000000036}, {"input": [12.5, 44.0], "expected": 44.00000000000002}, {"input": [12.5, 44.5], "expected": 44.500000000000014}, {"input": [12.5, 45.0], "expected": 45.00000000000001}, {"input": [12.5, 45.5], "expected": 45.50000000000001}, {"input": [12.5, 46.0], "expected": 46.0}, {"input": [12.5, 46.5], "expected": 46.5}, {"input": [12.5, 47.0], "expected": 47.0}, {"input": [12.5, 47.5], "expected": 47.5}, {"input": [12.5, 48.0], "expected": 48.0}, {"input": [12.5, 48.5], "expected": 48.5}, {"input": [12.5, 49.0], "expected": 49.0}, {"input": [12.5, 49.5], "expected": 49.5}, {"input": [12.5, 50.0], "expected": 50.0}, {"input": [12.5, 50.5], "expected": 50.5}, {"input": [12.5, 51.0], "expected": 51.0}, {"input": [12.5, 51.5], "expected": 51.5}, {"input": [12.5, 52.0], "expected": 52.0}, {"input": [12.5, 52.5], "expected": 52.5}, {"input": [12.5, 53.0], "expected": 53.0}, {"input": [12.5, 53.5], "expected": 53.5}, {"input": [12.5, 54.0], "expected": 54.0}, {"input": [12.5, 54.5], "expected": 54.5}, {"input": [12.5, 55.0], "expected": 55.0}, {"input": [12.5, 55.5], "expected": 55.5}, {"input": [12.5, 56.0], "expected": 56.0}, {"input": [12.5, 56.5], "expected": 56.5}, {"input": [12.5, 57.0], "expected": 57.0}, {"input": [12.5, 57.5], "expected": 57.5}, {"input": [12.5, 58.0], "expected": 58.0}, {"input": [12.5, 58.5], "expected": 58.5}, {"input": [12.5, 59.0], "expected": 59.0}, {"input": [12.5, 59.5], "expected": 59.5}, {"input": [12.5, 60.0], "expected": 60.0}, {"input": [12.5, 60.5], "expected": 60.5}, {"input": [12.5, 61.0], "expected": 61.0}, {"input": [12.5, 61.5], "expected": 61.5}, {"input": [12.5, 62.0], "expected": 62.0}, {"input": [12.5, 62.5], "expected": 62.5}, {"input": [12.5, 63.0], "expected": 63.0}, {"input": [12.5, 63.5], "expected": 63.5}, {"input": [12.5, 64.0], "expected": 64.0}, {"input": [12.5, 64.5], "expected": 64.5}, {"input": [12.5, 65.0], "expected": 65.0}, {"input": [12.5, 65.5], "expected": 65.5}, {"input": [12.5, 66.0], "expected": 66.0}, {"input": [12.5, 66.5], "expected": 66.5}, {"input": [12.5, 67.0], "expected": 67.0}, {"input": [12.5, 67.5], "expected": 67.5}, {"input": [12.5, 68.0], "expected": 68.0}, {"input": [12.5, 68.5], "expected": 68.5}, {"input": [12.5, 69.0], "expected": 69.0}, {"input": [12.5, 69.5], "expected": 69.5}, {"input": [12.5, 70.0], "expected": 70.0}, {"input": [12.5, 70.5], "expected": 70.5}, {"input": [12.5, 71.0], "expected": 71.0}, {"input": [12.5, 71.5], "expected": 71.5}, {"input": [12.5, 72.0], "expected": 72.0}, {"input": [12.5, 72.5], "expected": 72.5}, {"input": [12.5, 73.0], "expected": 73.0}, {"input": [12.5, 73.5], "expected": 73.5}, {"input": [12.5, 74.0], "expected": 74.0}, {"input": [12.5, 74.5], "expected": 74.5}, {"input": [12.5, 75.0], "expected": 75.0}, {"input": [12.5, 75.5], "expected": 75.5}, {"input": [12.5, 76.0], "expected": 76.0}, {"input": [12.5, 76.5], "expected": 76.5}, {"input": [12.5, 77.0], "expected": 77.0}, {"input": [12.5, 77.5], "expected": 77.5}, {"input": [12.5, 78.0], "expected": 78.0}, {"input": [12.5, 78.5], "expected": 78.5}, {"input": [12.5, 79.0], "expected": 79.0}, {"input": [12.5, 79.5], "expected": 79.5}, {"input": [12.5, 80.0], "expected": 80.0}, {"input": [12.5, 80.5], "expected": 80.5}, {"input": [12.5, 81.0], "expected": 81.0}, {"input": [12.5, 81.5], "expected": 81.5}, {"input": [12.5, 82.0], "expected": 82.0}, {"input": [12.5, 82.5], "expected": 82.5}, {"input": [12.5, 83.0], "expected": 83.0}, {"input": [12.5, 83.5], "expected": 83.5}, {"input": [12.5, 84.0], "expected": 84.0}, {"input": [12.5, 84.5], "expected": 84.5}, {"input": [12.5, 85.0], "expected": 85.0}, {"input": [12.5, 85.5], "expected": 85.5}, {"input": [12.5, 86.0], "expected": 86.0}, {"input": [12.5, 86.5], "expected": 86.5}, {"input": [12.5, 87.0], "expected": 87.0}, {"input": [12.5, 87.5], "expected": 87.5}, {"input": [12.5, 88.0], "expected": 88.0}, {"input": [12.5, 88.5], "expected": 88.5}, {"input": [12.5, 89.0], "expected": 89.0}, {"input": [12.5, 89.5], "expected": 89.5}, {"input": [12.5, 90.0], "expected": 90.0}, {"input": [12.5, 90.5], "expected": 90.5}, {"input": [12.5, 91.0], "expected": 91.0}, {"input": [12.5, 91.5], "expected": 91.5}, {"input": [12.5, 92.0], "expected": 92.0}, {"input": [12.5, 92.5], "expected": 92.5}, {"input": [12.5, 93.0], "expected": 93.0}, {"input": [12.5, 93.5], "expected": 93.5}, {"input": [12.5, 94.0], "expected": 94.0}, {"input": [12.5, 94.5], "expected": 94.5}, {"input": [12.5, 95.0], "expected": 95.0}, {"input": [12.5, 95.5], "expected": 95.5}, {"input": [12.5, 96.0], "expected": 96.0}, {"input": [12.5, 96.5], "expected": 96.5}, {"input": [12.5, 97.0], "expected": 97.0}, {"input": [12.5, 97.5], "expected": 97.5}, {"input": [12.5, 98.0], "expected": 98.0}, {"input": [12.5, 98.5], "expected": 98.5}, {"input": [12.5, 99.0], "expected": 99.0}, {"input": [12.5, 99.5], "expected": 99.5}, {"input": [13.0, -100.0], "expected": 13.0}, {"input": [13.0, -99.5], "expected": 13.0}, {"input": [13.0, -99.0], "expected": 13.0}, {"input": [13.0, -98.5], "expected": 13.0}, {"input": [13.0, -98.0], "expected": 13.0}, {"input": [13.0, -97.5], "expected": 13.0}, {"input": [13.0, -97.0], "expected": 13.0}, {"input": [13.0, -96.5], "expected": 13.0}, {"input": [13.0, -96.0], "expected": 13.0}, {"input": [13.0, -95.5], "expected": 13.0}, {"input": [13.0, -95.0], "expected": 13.0}, {"input": [13.0, -94.5], "expected": 13.0}, {"input": [13.0, -94.0], "expected": 13.0}, {"input": [13.0, -93.5], "expected": 13.0}, {"input": [13.0, -93.0], "expected": 13.0}, {"input": [13.0, -92.5], "expected": 13.0}, {"input": [13.0, -92.0], "expected": 13.0}, {"input": [13.0, -91.5], "expected": 13.0}, {"input": [13.0, -91.0], "expected": 13.0}, {"input": [13.0, -90.5], "expected": 13.0}, {"input": [13.0, -90.0], "expected": 13.0}, {"input": [13.0, -89.5], "expected": 13.0}, {"input": [13.0, -89.0], "expected": 13.0}, {"input": [13.0, -88.5], "expected": 13.0}, {"input": [13.0, -88.0], "expected": 13.0}, {"input": [13.0, -87.5], "expected": 13.0}, {"input": [13.0, -87.0], "expected": 13.0}, {"input": [13.0, -86.5], "expected": 13.0}, {"input": [13.0, -86.0], "expected": 13.0}, {"input": [13.0, -85.5], "expected": 13.0}, {"input": [13.0, -85.0], "expected": 13.0}, {"input": [13.0, -84.5], "expected": 13.0}, {"input": [13.0, -84.0], "expected": 13.0}, {"input": [13.0, -83.5], "expected": 13.0}, {"input": [13.0, -83.0], "expected": 13.0}, {"input": [13.0, -82.5], "expected": 13.0}, {"input": [13.0, -82.0], "expected": 13.0}, {"input": [13.0, -81.5], "expected": 13.0}, {"input": [13.0, -81.0], "expected": 13.0}, {"input": [13.0, -80.5], "expected": 13.0}, {"input": [13.0, -80.0], "expected": 13.0}, {"input": [13.0, -79.5], "expected": 13.0}, {"input": [13.0, -79.0], "expected": 13.0}, {"input": [13.0, -78.5], "expected": 13.0}, {"input": [13.0, -78.0], "expected": 13.0}, {"input": [13.0, -77.5], "expected": 13.0}, {"input": [13.0, -77.0], "expected": 13.0}, {"input": [13.0, -76.5], "expected": 13.0}, {"input": [13.0, -76.0], "expected": 13.0}, {"input": [13.0, -75.5], "expected": 13.0}, {"input": [13.0, -75.0], "expected": 13.0}, {"input": [13.0, -74.5], "expected": 13.0}, {"input": [13.0, -74.0], "expected": 13.0}, {"input": [13.0, -73.5], "expected": 13.0}, {"input": [13.0, -73.0], "expected": 13.0}, {"input": [13.0, -72.5], "expected": 13.0}, {"input": [13.0, -72.0], "expected": 13.0}, {"input": [13.0, -71.5], "expected": 13.0}, {"input": [13.0, -71.0], "expected": 13.0}, {"input": [13.0, -70.5], "expected": 13.0}, {"input": [13.0, -70.0], "expected": 13.0}, {"input": [13.0, -69.5], "expected": 13.0}, {"input": [13.0, -69.0], "expected": 13.0}, {"input": [13.0, -68.5], "expected": 13.0}, {"input": [13.0, -68.0], "expected": 13.0}, {"input": [13.0, -67.5], "expected": 13.0}, {"input": [13.0, -67.0], "expected": 13.0}, {"input": [13.0, -66.5], "expected": 13.0}, {"input": [13.0, -66.0], "expected": 13.0}, {"input": [13.0, -65.5], "expected": 13.0}, {"input": [13.0, -65.0], "expected": 13.0}, {"input": [13.0, -64.5], "expected": 13.0}, {"input": [13.0, -64.0], "expected": 13.0}, {"input": [13.0, -63.5], "expected": 13.0}, {"input": [13.0, -63.0], "expected": 13.0}, {"input": [13.0, -62.5], "expected": 13.0}, {"input": [13.0, -62.0], "expected": 13.0}, {"input": [13.0, -61.5], "expected": 13.0}, {"input": [13.0, -61.0], "expected": 13.0}, {"input": [13.0, -60.5], "expected": 13.0}, {"input": [13.0, -60.0], "expected": 13.0}, {"input": [13.0, -59.5], "expected": 13.0}, {"input": [13.0, -59.0], "expected": 13.0}, {"input": [13.0, -58.5], "expected": 13.0}, {"input": [13.0, -58.0], "expected": 13.0}, {"input": [13.0, -57.5], "expected": 13.0}, {"input": [13.0, -57.0], "expected": 13.0}, {"input": [13.0, -56.5], "expected": 13.0}, {"input": [13.0, -56.0], "expected": 13.0}, {"input": [13.0, -55.5], "expected": 13.0}, {"input": [13.0, -55.0], "expected": 13.0}, {"input": [13.0, -54.5], "expected": 13.0}, {"input": [13.0, -54.0], "expected": 13.0}, {"input": [13.0, -53.5], "expected": 13.0}, {"input": [13.0, -53.0], "expected": 13.0}, {"input": [13.0, -52.5], "expected": 13.0}, {"input": [13.0, -52.0], "expected": 13.0}, {"input": [13.0, -51.5], "expected": 13.0}, {"input": [13.0, -51.0], "expected": 13.0}, {"input": [13.0, -50.5], "expected": 13.0}, {"input": [13.0, -50.0], "expected": 13.0}, {"input": [13.0, -49.5], "expected": 13.0}, {"input": [13.0, -49.0], "expected": 13.0}, {"input": [13.0, -48.5], "expected": 13.0}, {"input": [13.0, -48.0], "expected": 13.0}, {"input": [13.0, -47.5], "expected": 13.0}, {"input": [13.0, -47.0], "expected": 13.0}, {"input": [13.0, -46.5], "expected": 13.0}, {"input": [13.0, -46.0], "expected": 13.0}, {"input": [13.0, -45.5], "expected": 13.0}, {"input": [13.0, -45.0], "expected": 13.0}, {"input": [13.0, -44.5], "expected": 13.0}, {"input": [13.0, -44.0], "expected": 13.0}, {"input": [13.0, -43.5], "expected": 13.0}, {"input": [13.0, -43.0], "expected": 13.0}, {"input": [13.0, -42.5], "expected": 13.0}, {"input": [13.0, -42.0], "expected": 13.0}, {"input": [13.0, -41.5], "expected": 13.0}, {"input": [13.0, -41.0], "expected": 13.0}, {"input": [13.0, -40.5], "expected": 13.0}, {"input": [13.0, -40.0], "expected": 13.0}, {"input": [13.0, -39.5], "expected": 13.0}, {"input": [13.0, -39.0], "expected": 13.0}, {"input": [13.0, -38.5], "expected": 13.0}, {"input": [13.0, -38.0], "expected": 13.0}, {"input": [13.0, -37.5], "expected": 13.0}, {"input": [13.0, -37.0], "expected": 13.0}, {"input": [13.0, -36.5], "expected": 13.0}, {"input": [13.0, -36.0], "expected": 13.0}, {"input": [13.0, -35.5], "expected": 13.0}, {"input": [13.0, -35.0], "expected": 13.0}, {"input": [13.0, -34.5], "expected": 13.0}, {"input": [13.0, -34.0], "expected": 13.0}, {"input": [13.0, -33.5], "expected": 13.0}, {"input": [13.0, -33.0], "expected": 13.0}, {"input": [13.0, -32.5], "expected": 13.0}, {"input": [13.0, -32.0], "expected": 13.0}, {"input": [13.0, -31.5], "expected": 13.0}, {"input": [13.0, -31.0], "expected": 13.0}, {"input": [13.0, -30.5], "expected": 13.0}, {"input": [13.0, -30.0], "expected": 13.0}, {"input": [13.0, -29.5], "expected": 13.0}, {"input": [13.0, -29.0], "expected": 13.0}, {"input": [13.0, -28.5], "expected": 13.0}, {"input": [13.0, -28.0], "expected": 13.0}, {"input": [13.0, -27.5], "expected": 13.0}, {"input": [13.0, -27.0], "expected": 13.0}, {"input": [13.0, -26.5], "expected": 13.0}, {"input": [13.0, -26.0], "expected": 13.0}, {"input": [13.0, -25.5], "expected": 13.0}, {"input": [13.0, -25.0], "expected": 13.0}, {"input": [13.0, -24.5], "expected": 13.0}, {"input": [13.0, -24.0], "expected": 13.0}, {"input": [13.0, -23.5], "expected": 13.0}, {"input": [13.0, -23.0], "expected": 13.0}, {"input": [13.0, -22.5], "expected": 13.0}, {"input": [13.0, -22.0], "expected": 13.0}, {"input": [13.0, -21.5], "expected": 13.000000000000002}, {"input": [13.0, -21.0], "expected": 13.000000000000002}, {"input": [13.0, -20.5], "expected": 13.000000000000004}, {"input": [13.0, -20.0], "expected": 13.000000000000005}, {"input": [13.0, -19.5], "expected": 13.000000000000007}, {"input": [13.0, -19.0], "expected": 13.000000000000012}, {"input": [13.0, -18.5], "expected": 13.000000000000021}, {"input": [13.0, -18.0], "expected": 13.000000000000034}, {"input": [13.0, -17.5], "expected": 13.000000000000057}, {"input": [13.0, -17.0], "expected": 13.000000000000094}, {"input": [13.0, -16.5], "expected": 13.000000000000155}, {"input": [13.0, -16.0], "expected": 13.000000000000254}, {"input": [13.0, -15.5], "expected": 13.00000000000042}, {"input": [13.0, -15.0], "expected": 13.000000000000691}, {"input": [13.0, -14.5], "expected": 13.00000000000114}, {"input": [13.0, -14.0], "expected": 13.00000000000188}, {"input": [13.0, -13.5], "expected": 13.000000000003098}, {"input": [13.0, -13.0], "expected": 13.000000000005109}, {"input": [13.0, -12.5], "expected": 13.000000000008423}, {"input": [13.0, -12.0], "expected": 13.000000000013888}, {"input": [13.0, -11.5], "expected": 13.000000000022897}, {"input": [13.0, -11.0], "expected": 13.000000000037751}, {"input": [13.0, -10.5], "expected": 13.000000000062242}, {"input": [13.0, -10.0], "expected": 13.000000000102618}, {"input": [13.0, -9.5], "expected": 13.000000000169189}, {"input": [13.0, -9.0], "expected": 13.000000000278947}, {"input": [13.0, -8.5], "expected": 13.000000000459906}, {"input": [13.0, -8.0], "expected": 13.000000000758256}, {"input": [13.0, -7.5], "expected": 13.000000001250152}, {"input": [13.0, -7.0], "expected": 13.000000002061153}, {"input": [13.0, -6.5], "expected": 13.000000003398268}, {"input": [13.0, -6.0], "expected": 13.000000005602796}, {"input": [13.0, -5.5], "expected": 13.00000000923745}, {"input": [13.0, -5.0], "expected": 13.000000015229979}, {"input": [13.0, -4.5], "expected": 13.00000002510999}, {"input": [13.0, -4.0], "expected": 13.000000041399376}, {"input": [13.0, -3.5], "expected": 13.000000068256032}, {"input": [13.0, -3.0], "expected": 13.000000112535169}, {"input": [13.0, -2.5], "expected": 13.000000185539118}, {"input": [13.0, -2.0], "expected": 13.000000305902274}, {"input": [13.0, -1.5], "expected": 13.000000504347536}, {"input": [13.0, -1.0], "expected": 13.000000831528373}, {"input": [13.0, -0.5], "expected": 13.000001370958147}, {"input": [13.0, 0.0], "expected": 13.000002260326852}, {"input": [13.0, 0.5], "expected": 13.000003726646229}, {"input": [13.0, 1.0], "expected": 13.000006144193478}, {"input": [13.0, 1.5], "expected": 13.00001013004229}, {"input": [13.0, 2.0], "expected": 13.000016701561318}, {"input": [13.0, 2.5], "expected": 13.00002753607023}, {"input": [13.0, 3.0], "expected": 13.000045398899218}, {"input": [13.0, 3.5], "expected": 13.000074849028628}, {"input": [13.0, 4.0], "expected": 13.000123402189724}, {"input": [13.0, 4.5], "expected": 13.00020344767213}, {"input": [13.0, 5.0], "expected": 13.000335406372896}, {"input": [13.0, 5.5], "expected": 13.000552931475362}, {"input": [13.0, 6.0], "expected": 13.000911466453774}, {"input": [13.0, 6.5], "expected": 13.001502310159754}, {"input": [13.0, 7.0], "expected": 13.00247568513773}, {"input": [13.0, 7.5], "expected": 13.00407844327057}, {"input": [13.0, 8.0], "expected": 13.006715348489118}, {"input": [13.0, 8.5], "expected": 13.011047744848593}, {"input": [13.0, 9.0], "expected": 13.01814992791781}, {"input": [13.0, 9.5], "expected": 13.02975041827262}, {"input": [13.0, 10.0], "expected": 13.048587351573742}, {"input": [13.0, 10.5], "expected": 13.078889734292549}, {"input": [13.0, 11.0], "expected": 13.126928011042972}, {"input": [13.0, 11.5], "expected": 13.201413277982752}, {"input": [13.0, 12.0], "expected": 13.313261687518223}, {"input": [13.0, 12.5], "expected": 13.474076984180106}, {"input": [13.0, 13.0], "expected": 13.693147180559945}, {"input": [13.0, 13.5], "expected": 13.974076984180106}, {"input": [13.0, 14.0], "expected": 14.313261687518223}, {"input": [13.0, 14.5], "expected": 14.701413277982752}, {"input": [13.0, 15.0], "expected": 15.126928011042972}, {"input": [13.0, 15.5], "expected": 15.578889734292549}, {"input": [13.0, 16.0], "expected": 16.048587351573744}, {"input": [13.0, 16.5], "expected": 16.52975041827262}, {"input": [13.0, 17.0], "expected": 17.01814992791781}, {"input": [13.0, 17.5], "expected": 17.511047744848593}, {"input": [13.0, 18.0], "expected": 18.006715348489116}, {"input": [13.0, 18.5], "expected": 18.504078443270572}, {"input": [13.0, 19.0], "expected": 19.002475685137732}, {"input": [13.0, 19.5], "expected": 19.501502310159754}, {"input": [13.0, 20.0], "expected": 20.000911466453775}, {"input": [13.0, 20.5], "expected": 20.50055293147536}, {"input": [13.0, 21.0], "expected": 21.000335406372894}, {"input": [13.0, 21.5], "expected": 21.500203447672128}, {"input": [13.0, 22.0], "expected": 22.000123402189722}, {"input": [13.0, 22.5], "expected": 22.50007484902863}, {"input": [13.0, 23.0], "expected": 23.000045398899218}, {"input": [13.0, 23.5], "expected": 23.500027536070228}, {"input": [13.0, 24.0], "expected": 24.000016701561318}, {"input": [13.0, 24.5], "expected": 24.50001013004229}, {"input": [13.0, 25.0], "expected": 25.000006144193478}, {"input": [13.0, 25.5], "expected": 25.500003726646227}, {"input": [13.0, 26.0], "expected": 26.000002260326852}, {"input": [13.0, 26.5], "expected": 26.500001370958145}, {"input": [13.0, 27.0], "expected": 27.000000831528375}, {"input": [13.0, 27.5], "expected": 27.500000504347536}, {"input": [13.0, 28.0], "expected": 28.000000305902272}, {"input": [13.0, 28.5], "expected": 28.50000018553912}, {"input": [13.0, 29.0], "expected": 29.00000011253517}, {"input": [13.0, 29.5], "expected": 29.500000068256032}, {"input": [13.0, 30.0], "expected": 30.000000041399375}, {"input": [13.0, 30.5], "expected": 30.50000002510999}, {"input": [13.0, 31.0], "expected": 31.00000001522998}, {"input": [13.0, 31.5], "expected": 31.50000000923745}, {"input": [13.0, 32.0], "expected": 32.00000000560279}, {"input": [13.0, 32.5], "expected": 32.50000000339827}, {"input": [13.0, 33.0], "expected": 33.00000000206116}, {"input": [13.0, 33.5], "expected": 33.50000000125015}, {"input": [13.0, 34.0], "expected": 34.000000000758256}, {"input": [13.0, 34.5], "expected": 34.500000000459906}, {"input": [13.0, 35.0], "expected": 35.000000000278945}, {"input": [13.0, 35.5], "expected": 35.50000000016919}, {"input": [13.0, 36.0], "expected": 36.00000000010262}, {"input": [13.0, 36.5], "expected": 36.50000000006224}, {"input": [13.0, 37.0], "expected": 37.00000000003775}, {"input": [13.0, 37.5], "expected": 37.5000000000229}, {"input": [13.0, 38.0], "expected": 38.00000000001389}, {"input": [13.0, 38.5], "expected": 38.50000000000842}, {"input": [13.0, 39.0], "expected": 39.00000000000511}, {"input": [13.0, 39.5], "expected": 39.5000000000031}, {"input": [13.0, 40.0], "expected": 40.00000000000188}, {"input": [13.0, 40.5], "expected": 40.50000000000114}, {"input": [13.0, 41.0], "expected": 41.00000000000069}, {"input": [13.0, 41.5], "expected": 41.50000000000042}, {"input": [13.0, 42.0], "expected": 42.000000000000256}, {"input": [13.0, 42.5], "expected": 42.500000000000156}, {"input": [13.0, 43.0], "expected": 43.00000000000009}, {"input": [13.0, 43.5], "expected": 43.50000000000006}, {"input": [13.0, 44.0], "expected": 44.000000000000036}, {"input": [13.0, 44.5], "expected": 44.50000000000002}, {"input": [13.0, 45.0], "expected": 45.000000000000014}, {"input": [13.0, 45.5], "expected": 45.50000000000001}, {"input": [13.0, 46.0], "expected": 46.00000000000001}, {"input": [13.0, 46.5], "expected": 46.5}, {"input": [13.0, 47.0], "expected": 47.0}, {"input": [13.0, 47.5], "expected": 47.5}, {"input": [13.0, 48.0], "expected": 48.0}, {"input": [13.0, 48.5], "expected": 48.5}, {"input": [13.0, 49.0], "expected": 49.0}, {"input": [13.0, 49.5], "expected": 49.5}, {"input": [13.0, 50.0], "expected": 50.0}, {"input": [13.0, 50.5], "expected": 50.5}, {"input": [13.0, 51.0], "expected": 51.0}, {"input": [13.0, 51.5], "expected": 51.5}, {"input": [13.0, 52.0], "expected": 52.0}, {"input": [13.0, 52.5], "expected": 52.5}, {"input": [13.0, 53.0], "expected": 53.0}, {"input": [13.0, 53.5], "expected": 53.5}, {"input": [13.0, 54.0], "expected": 54.0}, {"input": [13.0, 54.5], "expected": 54.5}, {"input": [13.0, 55.0], "expected": 55.0}, {"input": [13.0, 55.5], "expected": 55.5}, {"input": [13.0, 56.0], "expected": 56.0}, {"input": [13.0, 56.5], "expected": 56.5}, {"input": [13.0, 57.0], "expected": 57.0}, {"input": [13.0, 57.5], "expected": 57.5}, {"input": [13.0, 58.0], "expected": 58.0}, {"input": [13.0, 58.5], "expected": 58.5}, {"input": [13.0, 59.0], "expected": 59.0}, {"input": [13.0, 59.5], "expected": 59.5}, {"input": [13.0, 60.0], "expected": 60.0}, {"input": [13.0, 60.5], "expected": 60.5}, {"input": [13.0, 61.0], "expected": 61.0}, {"input": [13.0, 61.5], "expected": 61.5}, {"input": [13.0, 62.0], "expected": 62.0}, {"input": [13.0, 62.5], "expected": 62.5}, {"input": [13.0, 63.0], "expected": 63.0}, {"input": [13.0, 63.5], "expected": 63.5}, {"input": [13.0, 64.0], "expected": 64.0}, {"input": [13.0, 64.5], "expected": 64.5}, {"input": [13.0, 65.0], "expected": 65.0}, {"input": [13.0, 65.5], "expected": 65.5}, {"input": [13.0, 66.0], "expected": 66.0}, {"input": [13.0, 66.5], "expected": 66.5}, {"input": [13.0, 67.0], "expected": 67.0}, {"input": [13.0, 67.5], "expected": 67.5}, {"input": [13.0, 68.0], "expected": 68.0}, {"input": [13.0, 68.5], "expected": 68.5}, {"input": [13.0, 69.0], "expected": 69.0}, {"input": [13.0, 69.5], "expected": 69.5}, {"input": [13.0, 70.0], "expected": 70.0}, {"input": [13.0, 70.5], "expected": 70.5}, {"input": [13.0, 71.0], "expected": 71.0}, {"input": [13.0, 71.5], "expected": 71.5}, {"input": [13.0, 72.0], "expected": 72.0}, {"input": [13.0, 72.5], "expected": 72.5}, {"input": [13.0, 73.0], "expected": 73.0}, {"input": [13.0, 73.5], "expected": 73.5}, {"input": [13.0, 74.0], "expected": 74.0}, {"input": [13.0, 74.5], "expected": 74.5}, {"input": [13.0, 75.0], "expected": 75.0}, {"input": [13.0, 75.5], "expected": 75.5}, {"input": [13.0, 76.0], "expected": 76.0}, {"input": [13.0, 76.5], "expected": 76.5}, {"input": [13.0, 77.0], "expected": 77.0}, {"input": [13.0, 77.5], "expected": 77.5}, {"input": [13.0, 78.0], "expected": 78.0}, {"input": [13.0, 78.5], "expected": 78.5}, {"input": [13.0, 79.0], "expected": 79.0}, {"input": [13.0, 79.5], "expected": 79.5}, {"input": [13.0, 80.0], "expected": 80.0}, {"input": [13.0, 80.5], "expected": 80.5}, {"input": [13.0, 81.0], "expected": 81.0}, {"input": [13.0, 81.5], "expected": 81.5}, {"input": [13.0, 82.0], "expected": 82.0}, {"input": [13.0, 82.5], "expected": 82.5}, {"input": [13.0, 83.0], "expected": 83.0}, {"input": [13.0, 83.5], "expected": 83.5}, {"input": [13.0, 84.0], "expected": 84.0}, {"input": [13.0, 84.5], "expected": 84.5}, {"input": [13.0, 85.0], "expected": 85.0}, {"input": [13.0, 85.5], "expected": 85.5}, {"input": [13.0, 86.0], "expected": 86.0}, {"input": [13.0, 86.5], "expected": 86.5}, {"input": [13.0, 87.0], "expected": 87.0}, {"input": [13.0, 87.5], "expected": 87.5}, {"input": [13.0, 88.0], "expected": 88.0}, {"input": [13.0, 88.5], "expected": 88.5}, {"input": [13.0, 89.0], "expected": 89.0}, {"input": [13.0, 89.5], "expected": 89.5}, {"input": [13.0, 90.0], "expected": 90.0}, {"input": [13.0, 90.5], "expected": 90.5}, {"input": [13.0, 91.0], "expected": 91.0}, {"input": [13.0, 91.5], "expected": 91.5}, {"input": [13.0, 92.0], "expected": 92.0}, {"input": [13.0, 92.5], "expected": 92.5}, {"input": [13.0, 93.0], "expected": 93.0}, {"input": [13.0, 93.5], "expected": 93.5}, {"input": [13.0, 94.0], "expected": 94.0}, {"input": [13.0, 94.5], "expected": 94.5}, {"input": [13.0, 95.0], "expected": 95.0}, {"input": [13.0, 95.5], "expected": 95.5}, {"input": [13.0, 96.0], "expected": 96.0}, {"input": [13.0, 96.5], "expected": 96.5}, {"input": [13.0, 97.0], "expected": 97.0}, {"input": [13.0, 97.5], "expected": 97.5}, {"input": [13.0, 98.0], "expected": 98.0}, {"input": [13.0, 98.5], "expected": 98.5}, {"input": [13.0, 99.0], "expected": 99.0}, {"input": [13.0, 99.5], "expected": 99.5}, {"input": [13.5, -100.0], "expected": 13.5}, {"input": [13.5, -99.5], "expected": 13.5}, {"input": [13.5, -99.0], "expected": 13.5}, {"input": [13.5, -98.5], "expected": 13.5}, {"input": [13.5, -98.0], "expected": 13.5}, {"input": [13.5, -97.5], "expected": 13.5}, {"input": [13.5, -97.0], "expected": 13.5}, {"input": [13.5, -96.5], "expected": 13.5}, {"input": [13.5, -96.0], "expected": 13.5}, {"input": [13.5, -95.5], "expected": 13.5}, {"input": [13.5, -95.0], "expected": 13.5}, {"input": [13.5, -94.5], "expected": 13.5}, {"input": [13.5, -94.0], "expected": 13.5}, {"input": [13.5, -93.5], "expected": 13.5}, {"input": [13.5, -93.0], "expected": 13.5}, {"input": [13.5, -92.5], "expected": 13.5}, {"input": [13.5, -92.0], "expected": 13.5}, {"input": [13.5, -91.5], "expected": 13.5}, {"input": [13.5, -91.0], "expected": 13.5}, {"input": [13.5, -90.5], "expected": 13.5}, {"input": [13.5, -90.0], "expected": 13.5}, {"input": [13.5, -89.5], "expected": 13.5}, {"input": [13.5, -89.0], "expected": 13.5}, {"input": [13.5, -88.5], "expected": 13.5}, {"input": [13.5, -88.0], "expected": 13.5}, {"input": [13.5, -87.5], "expected": 13.5}, {"input": [13.5, -87.0], "expected": 13.5}, {"input": [13.5, -86.5], "expected": 13.5}, {"input": [13.5, -86.0], "expected": 13.5}, {"input": [13.5, -85.5], "expected": 13.5}, {"input": [13.5, -85.0], "expected": 13.5}, {"input": [13.5, -84.5], "expected": 13.5}, {"input": [13.5, -84.0], "expected": 13.5}, {"input": [13.5, -83.5], "expected": 13.5}, {"input": [13.5, -83.0], "expected": 13.5}, {"input": [13.5, -82.5], "expected": 13.5}, {"input": [13.5, -82.0], "expected": 13.5}, {"input": [13.5, -81.5], "expected": 13.5}, {"input": [13.5, -81.0], "expected": 13.5}, {"input": [13.5, -80.5], "expected": 13.5}, {"input": [13.5, -80.0], "expected": 13.5}, {"input": [13.5, -79.5], "expected": 13.5}, {"input": [13.5, -79.0], "expected": 13.5}, {"input": [13.5, -78.5], "expected": 13.5}, {"input": [13.5, -78.0], "expected": 13.5}, {"input": [13.5, -77.5], "expected": 13.5}, {"input": [13.5, -77.0], "expected": 13.5}, {"input": [13.5, -76.5], "expected": 13.5}, {"input": [13.5, -76.0], "expected": 13.5}, {"input": [13.5, -75.5], "expected": 13.5}, {"input": [13.5, -75.0], "expected": 13.5}, {"input": [13.5, -74.5], "expected": 13.5}, {"input": [13.5, -74.0], "expected": 13.5}, {"input": [13.5, -73.5], "expected": 13.5}, {"input": [13.5, -73.0], "expected": 13.5}, {"input": [13.5, -72.5], "expected": 13.5}, {"input": [13.5, -72.0], "expected": 13.5}, {"input": [13.5, -71.5], "expected": 13.5}, {"input": [13.5, -71.0], "expected": 13.5}, {"input": [13.5, -70.5], "expected": 13.5}, {"input": [13.5, -70.0], "expected": 13.5}, {"input": [13.5, -69.5], "expected": 13.5}, {"input": [13.5, -69.0], "expected": 13.5}, {"input": [13.5, -68.5], "expected": 13.5}, {"input": [13.5, -68.0], "expected": 13.5}, {"input": [13.5, -67.5], "expected": 13.5}, {"input": [13.5, -67.0], "expected": 13.5}, {"input": [13.5, -66.5], "expected": 13.5}, {"input": [13.5, -66.0], "expected": 13.5}, {"input": [13.5, -65.5], "expected": 13.5}, {"input": [13.5, -65.0], "expected": 13.5}, {"input": [13.5, -64.5], "expected": 13.5}, {"input": [13.5, -64.0], "expected": 13.5}, {"input": [13.5, -63.5], "expected": 13.5}, {"input": [13.5, -63.0], "expected": 13.5}, {"input": [13.5, -62.5], "expected": 13.5}, {"input": [13.5, -62.0], "expected": 13.5}, {"input": [13.5, -61.5], "expected": 13.5}, {"input": [13.5, -61.0], "expected": 13.5}, {"input": [13.5, -60.5], "expected": 13.5}, {"input": [13.5, -60.0], "expected": 13.5}, {"input": [13.5, -59.5], "expected": 13.5}, {"input": [13.5, -59.0], "expected": 13.5}, {"input": [13.5, -58.5], "expected": 13.5}, {"input": [13.5, -58.0], "expected": 13.5}, {"input": [13.5, -57.5], "expected": 13.5}, {"input": [13.5, -57.0], "expected": 13.5}, {"input": [13.5, -56.5], "expected": 13.5}, {"input": [13.5, -56.0], "expected": 13.5}, {"input": [13.5, -55.5], "expected": 13.5}, {"input": [13.5, -55.0], "expected": 13.5}, {"input": [13.5, -54.5], "expected": 13.5}, {"input": [13.5, -54.0], "expected": 13.5}, {"input": [13.5, -53.5], "expected": 13.5}, {"input": [13.5, -53.0], "expected": 13.5}, {"input": [13.5, -52.5], "expected": 13.5}, {"input": [13.5, -52.0], "expected": 13.5}, {"input": [13.5, -51.5], "expected": 13.5}, {"input": [13.5, -51.0], "expected": 13.5}, {"input": [13.5, -50.5], "expected": 13.5}, {"input": [13.5, -50.0], "expected": 13.5}, {"input": [13.5, -49.5], "expected": 13.5}, {"input": [13.5, -49.0], "expected": 13.5}, {"input": [13.5, -48.5], "expected": 13.5}, {"input": [13.5, -48.0], "expected": 13.5}, {"input": [13.5, -47.5], "expected": 13.5}, {"input": [13.5, -47.0], "expected": 13.5}, {"input": [13.5, -46.5], "expected": 13.5}, {"input": [13.5, -46.0], "expected": 13.5}, {"input": [13.5, -45.5], "expected": 13.5}, {"input": [13.5, -45.0], "expected": 13.5}, {"input": [13.5, -44.5], "expected": 13.5}, {"input": [13.5, -44.0], "expected": 13.5}, {"input": [13.5, -43.5], "expected": 13.5}, {"input": [13.5, -43.0], "expected": 13.5}, {"input": [13.5, -42.5], "expected": 13.5}, {"input": [13.5, -42.0], "expected": 13.5}, {"input": [13.5, -41.5], "expected": 13.5}, {"input": [13.5, -41.0], "expected": 13.5}, {"input": [13.5, -40.5], "expected": 13.5}, {"input": [13.5, -40.0], "expected": 13.5}, {"input": [13.5, -39.5], "expected": 13.5}, {"input": [13.5, -39.0], "expected": 13.5}, {"input": [13.5, -38.5], "expected": 13.5}, {"input": [13.5, -38.0], "expected": 13.5}, {"input": [13.5, -37.5], "expected": 13.5}, {"input": [13.5, -37.0], "expected": 13.5}, {"input": [13.5, -36.5], "expected": 13.5}, {"input": [13.5, -36.0], "expected": 13.5}, {"input": [13.5, -35.5], "expected": 13.5}, {"input": [13.5, -35.0], "expected": 13.5}, {"input": [13.5, -34.5], "expected": 13.5}, {"input": [13.5, -34.0], "expected": 13.5}, {"input": [13.5, -33.5], "expected": 13.5}, {"input": [13.5, -33.0], "expected": 13.5}, {"input": [13.5, -32.5], "expected": 13.5}, {"input": [13.5, -32.0], "expected": 13.5}, {"input": [13.5, -31.5], "expected": 13.5}, {"input": [13.5, -31.0], "expected": 13.5}, {"input": [13.5, -30.5], "expected": 13.5}, {"input": [13.5, -30.0], "expected": 13.5}, {"input": [13.5, -29.5], "expected": 13.5}, {"input": [13.5, -29.0], "expected": 13.5}, {"input": [13.5, -28.5], "expected": 13.5}, {"input": [13.5, -28.0], "expected": 13.5}, {"input": [13.5, -27.5], "expected": 13.5}, {"input": [13.5, -27.0], "expected": 13.5}, {"input": [13.5, -26.5], "expected": 13.5}, {"input": [13.5, -26.0], "expected": 13.5}, {"input": [13.5, -25.5], "expected": 13.5}, {"input": [13.5, -25.0], "expected": 13.5}, {"input": [13.5, -24.5], "expected": 13.5}, {"input": [13.5, -24.0], "expected": 13.5}, {"input": [13.5, -23.5], "expected": 13.5}, {"input": [13.5, -23.0], "expected": 13.5}, {"input": [13.5, -22.5], "expected": 13.5}, {"input": [13.5, -22.0], "expected": 13.5}, {"input": [13.5, -21.5], "expected": 13.5}, {"input": [13.5, -21.0], "expected": 13.500000000000002}, {"input": [13.5, -20.5], "expected": 13.500000000000002}, {"input": [13.5, -20.0], "expected": 13.500000000000004}, {"input": [13.5, -19.5], "expected": 13.500000000000005}, {"input": [13.5, -19.0], "expected": 13.500000000000007}, {"input": [13.5, -18.5], "expected": 13.500000000000012}, {"input": [13.5, -18.0], "expected": 13.500000000000021}, {"input": [13.5, -17.5], "expected": 13.500000000000034}, {"input": [13.5, -17.0], "expected": 13.500000000000057}, {"input": [13.5, -16.5], "expected": 13.500000000000094}, {"input": [13.5, -16.0], "expected": 13.500000000000155}, {"input": [13.5, -15.5], "expected": 13.500000000000254}, {"input": [13.5, -15.0], "expected": 13.50000000000042}, {"input": [13.5, -14.5], "expected": 13.500000000000691}, {"input": [13.5, -14.0], "expected": 13.50000000000114}, {"input": [13.5, -13.5], "expected": 13.50000000000188}, {"input": [13.5, -13.0], "expected": 13.500000000003098}, {"input": [13.5, -12.5], "expected": 13.500000000005109}, {"input": [13.5, -12.0], "expected": 13.500000000008423}, {"input": [13.5, -11.5], "expected": 13.500000000013888}, {"input": [13.5, -11.0], "expected": 13.500000000022897}, {"input": [13.5, -10.5], "expected": 13.500000000037751}, {"input": [13.5, -10.0], "expected": 13.500000000062242}, {"input": [13.5, -9.5], "expected": 13.500000000102618}, {"input": [13.5, -9.0], "expected": 13.500000000169189}, {"input": [13.5, -8.5], "expected": 13.500000000278947}, {"input": [13.5, -8.0], "expected": 13.500000000459906}, {"input": [13.5, -7.5], "expected": 13.500000000758256}, {"input": [13.5, -7.0], "expected": 13.500000001250152}, {"input": [13.5, -6.5], "expected": 13.500000002061153}, {"input": [13.5, -6.0], "expected": 13.500000003398268}, {"input": [13.5, -5.5], "expected": 13.500000005602796}, {"input": [13.5, -5.0], "expected": 13.50000000923745}, {"input": [13.5, -4.5], "expected": 13.500000015229979}, {"input": [13.5, -4.0], "expected": 13.50000002510999}, {"input": [13.5, -3.5], "expected": 13.500000041399376}, {"input": [13.5, -3.0], "expected": 13.500000068256032}, {"input": [13.5, -2.5], "expected": 13.500000112535169}, {"input": [13.5, -2.0], "expected": 13.500000185539118}, {"input": [13.5, -1.5], "expected": 13.500000305902274}, {"input": [13.5, -1.0], "expected": 13.500000504347536}, {"input": [13.5, -0.5], "expected": 13.500000831528373}, {"input": [13.5, 0.0], "expected": 13.500001370958147}, {"input": [13.5, 0.5], "expected": 13.500002260326852}, {"input": [13.5, 1.0], "expected": 13.500003726646229}, {"input": [13.5, 1.5], "expected": 13.500006144193478}, {"input": [13.5, 2.0], "expected": 13.50001013004229}, {"input": [13.5, 2.5], "expected": 13.500016701561318}, {"input": [13.5, 3.0], "expected": 13.50002753607023}, {"input": [13.5, 3.5], "expected": 13.500045398899218}, {"input": [13.5, 4.0], "expected": 13.500074849028628}, {"input": [13.5, 4.5], "expected": 13.500123402189724}, {"input": [13.5, 5.0], "expected": 13.50020344767213}, {"input": [13.5, 5.5], "expected": 13.500335406372896}, {"input": [13.5, 6.0], "expected": 13.500552931475362}, {"input": [13.5, 6.5], "expected": 13.500911466453774}, {"input": [13.5, 7.0], "expected": 13.501502310159754}, {"input": [13.5, 7.5], "expected": 13.50247568513773}, {"input": [13.5, 8.0], "expected": 13.50407844327057}, {"input": [13.5, 8.5], "expected": 13.506715348489118}, {"input": [13.5, 9.0], "expected": 13.511047744848593}, {"input": [13.5, 9.5], "expected": 13.51814992791781}, {"input": [13.5, 10.0], "expected": 13.52975041827262}, {"input": [13.5, 10.5], "expected": 13.548587351573742}, {"input": [13.5, 11.0], "expected": 13.578889734292549}, {"input": [13.5, 11.5], "expected": 13.626928011042972}, {"input": [13.5, 12.0], "expected": 13.701413277982752}, {"input": [13.5, 12.5], "expected": 13.813261687518223}, {"input": [13.5, 13.0], "expected": 13.974076984180106}, {"input": [13.5, 13.5], "expected": 14.193147180559945}, {"input": [13.5, 14.0], "expected": 14.474076984180106}, {"input": [13.5, 14.5], "expected": 14.813261687518223}, {"input": [13.5, 15.0], "expected": 15.201413277982752}, {"input": [13.5, 15.5], "expected": 15.626928011042972}, {"input": [13.5, 16.0], "expected": 16.07888973429255}, {"input": [13.5, 16.5], "expected": 16.548587351573744}, {"input": [13.5, 17.0], "expected": 17.02975041827262}, {"input": [13.5, 17.5], "expected": 17.51814992791781}, {"input": [13.5, 18.0], "expected": 18.011047744848593}, {"input": [13.5, 18.5], "expected": 18.506715348489116}, {"input": [13.5, 19.0], "expected": 19.004078443270572}, {"input": [13.5, 19.5], "expected": 19.502475685137732}, {"input": [13.5, 20.0], "expected": 20.001502310159754}, {"input": [13.5, 20.5], "expected": 20.500911466453775}, {"input": [13.5, 21.0], "expected": 21.00055293147536}, {"input": [13.5, 21.5], "expected": 21.500335406372894}, {"input": [13.5, 22.0], "expected": 22.000203447672128}, {"input": [13.5, 22.5], "expected": 22.500123402189722}, {"input": [13.5, 23.0], "expected": 23.00007484902863}, {"input": [13.5, 23.5], "expected": 23.500045398899218}, {"input": [13.5, 24.0], "expected": 24.000027536070228}, {"input": [13.5, 24.5], "expected": 24.500016701561318}, {"input": [13.5, 25.0], "expected": 25.00001013004229}, {"input": [13.5, 25.5], "expected": 25.500006144193478}, {"input": [13.5, 26.0], "expected": 26.000003726646227}, {"input": [13.5, 26.5], "expected": 26.500002260326852}, {"input": [13.5, 27.0], "expected": 27.000001370958145}, {"input": [13.5, 27.5], "expected": 27.500000831528375}, {"input": [13.5, 28.0], "expected": 28.000000504347536}, {"input": [13.5, 28.5], "expected": 28.500000305902272}, {"input": [13.5, 29.0], "expected": 29.00000018553912}, {"input": [13.5, 29.5], "expected": 29.50000011253517}, {"input": [13.5, 30.0], "expected": 30.000000068256032}, {"input": [13.5, 30.5], "expected": 30.500000041399375}, {"input": [13.5, 31.0], "expected": 31.00000002510999}, {"input": [13.5, 31.5], "expected": 31.50000001522998}, {"input": [13.5, 32.0], "expected": 32.000000009237446}, {"input": [13.5, 32.5], "expected": 32.50000000560279}, {"input": [13.5, 33.0], "expected": 33.00000000339827}, {"input": [13.5, 33.5], "expected": 33.50000000206116}, {"input": [13.5, 34.0], "expected": 34.00000000125015}, {"input": [13.5, 34.5], "expected": 34.500000000758256}, {"input": [13.5, 35.0], "expected": 35.000000000459906}, {"input": [13.5, 35.5], "expected": 35.500000000278945}, {"input": [13.5, 36.0], "expected": 36.00000000016919}, {"input": [13.5, 36.5], "expected": 36.50000000010262}, {"input": [13.5, 37.0], "expected": 37.00000000006224}, {"input": [13.5, 37.5], "expected": 37.50000000003775}, {"input": [13.5, 38.0], "expected": 38.0000000000229}, {"input": [13.5, 38.5], "expected": 38.50000000001389}, {"input": [13.5, 39.0], "expected": 39.00000000000842}, {"input": [13.5, 39.5], "expected": 39.50000000000511}, {"input": [13.5, 40.0], "expected": 40.0000000000031}, {"input": [13.5, 40.5], "expected": 40.50000000000188}, {"input": [13.5, 41.0], "expected": 41.00000000000114}, {"input": [13.5, 41.5], "expected": 41.50000000000069}, {"input": [13.5, 42.0], "expected": 42.00000000000042}, {"input": [13.5, 42.5], "expected": 42.500000000000256}, {"input": [13.5, 43.0], "expected": 43.000000000000156}, {"input": [13.5, 43.5], "expected": 43.50000000000009}, {"input": [13.5, 44.0], "expected": 44.00000000000006}, {"input": [13.5, 44.5], "expected": 44.500000000000036}, {"input": [13.5, 45.0], "expected": 45.00000000000002}, {"input": [13.5, 45.5], "expected": 45.500000000000014}, {"input": [13.5, 46.0], "expected": 46.00000000000001}, {"input": [13.5, 46.5], "expected": 46.50000000000001}, {"input": [13.5, 47.0], "expected": 47.0}, {"input": [13.5, 47.5], "expected": 47.5}, {"input": [13.5, 48.0], "expected": 48.0}, {"input": [13.5, 48.5], "expected": 48.5}, {"input": [13.5, 49.0], "expected": 49.0}, {"input": [13.5, 49.5], "expected": 49.5}, {"input": [13.5, 50.0], "expected": 50.0}, {"input": [13.5, 50.5], "expected": 50.5}, {"input": [13.5, 51.0], "expected": 51.0}, {"input": [13.5, 51.5], "expected": 51.5}, {"input": [13.5, 52.0], "expected": 52.0}, {"input": [13.5, 52.5], "expected": 52.5}, {"input": [13.5, 53.0], "expected": 53.0}, {"input": [13.5, 53.5], "expected": 53.5}, {"input": [13.5, 54.0], "expected": 54.0}, {"input": [13.5, 54.5], "expected": 54.5}, {"input": [13.5, 55.0], "expected": 55.0}, {"input": [13.5, 55.5], "expected": 55.5}, {"input": [13.5, 56.0], "expected": 56.0}, {"input": [13.5, 56.5], "expected": 56.5}, {"input": [13.5, 57.0], "expected": 57.0}, {"input": [13.5, 57.5], "expected": 57.5}, {"input": [13.5, 58.0], "expected": 58.0}, {"input": [13.5, 58.5], "expected": 58.5}, {"input": [13.5, 59.0], "expected": 59.0}, {"input": [13.5, 59.5], "expected": 59.5}, {"input": [13.5, 60.0], "expected": 60.0}, {"input": [13.5, 60.5], "expected": 60.5}, {"input": [13.5, 61.0], "expected": 61.0}, {"input": [13.5, 61.5], "expected": 61.5}, {"input": [13.5, 62.0], "expected": 62.0}, {"input": [13.5, 62.5], "expected": 62.5}, {"input": [13.5, 63.0], "expected": 63.0}, {"input": [13.5, 63.5], "expected": 63.5}, {"input": [13.5, 64.0], "expected": 64.0}, {"input": [13.5, 64.5], "expected": 64.5}, {"input": [13.5, 65.0], "expected": 65.0}, {"input": [13.5, 65.5], "expected": 65.5}, {"input": [13.5, 66.0], "expected": 66.0}, {"input": [13.5, 66.5], "expected": 66.5}, {"input": [13.5, 67.0], "expected": 67.0}, {"input": [13.5, 67.5], "expected": 67.5}, {"input": [13.5, 68.0], "expected": 68.0}, {"input": [13.5, 68.5], "expected": 68.5}, {"input": [13.5, 69.0], "expected": 69.0}, {"input": [13.5, 69.5], "expected": 69.5}, {"input": [13.5, 70.0], "expected": 70.0}, {"input": [13.5, 70.5], "expected": 70.5}, {"input": [13.5, 71.0], "expected": 71.0}, {"input": [13.5, 71.5], "expected": 71.5}, {"input": [13.5, 72.0], "expected": 72.0}, {"input": [13.5, 72.5], "expected": 72.5}, {"input": [13.5, 73.0], "expected": 73.0}, {"input": [13.5, 73.5], "expected": 73.5}, {"input": [13.5, 74.0], "expected": 74.0}, {"input": [13.5, 74.5], "expected": 74.5}, {"input": [13.5, 75.0], "expected": 75.0}, {"input": [13.5, 75.5], "expected": 75.5}, {"input": [13.5, 76.0], "expected": 76.0}, {"input": [13.5, 76.5], "expected": 76.5}, {"input": [13.5, 77.0], "expected": 77.0}, {"input": [13.5, 77.5], "expected": 77.5}, {"input": [13.5, 78.0], "expected": 78.0}, {"input": [13.5, 78.5], "expected": 78.5}, {"input": [13.5, 79.0], "expected": 79.0}, {"input": [13.5, 79.5], "expected": 79.5}, {"input": [13.5, 80.0], "expected": 80.0}, {"input": [13.5, 80.5], "expected": 80.5}, {"input": [13.5, 81.0], "expected": 81.0}, {"input": [13.5, 81.5], "expected": 81.5}, {"input": [13.5, 82.0], "expected": 82.0}, {"input": [13.5, 82.5], "expected": 82.5}, {"input": [13.5, 83.0], "expected": 83.0}, {"input": [13.5, 83.5], "expected": 83.5}, {"input": [13.5, 84.0], "expected": 84.0}, {"input": [13.5, 84.5], "expected": 84.5}, {"input": [13.5, 85.0], "expected": 85.0}, {"input": [13.5, 85.5], "expected": 85.5}, {"input": [13.5, 86.0], "expected": 86.0}, {"input": [13.5, 86.5], "expected": 86.5}, {"input": [13.5, 87.0], "expected": 87.0}, {"input": [13.5, 87.5], "expected": 87.5}, {"input": [13.5, 88.0], "expected": 88.0}, {"input": [13.5, 88.5], "expected": 88.5}, {"input": [13.5, 89.0], "expected": 89.0}, {"input": [13.5, 89.5], "expected": 89.5}, {"input": [13.5, 90.0], "expected": 90.0}, {"input": [13.5, 90.5], "expected": 90.5}, {"input": [13.5, 91.0], "expected": 91.0}, {"input": [13.5, 91.5], "expected": 91.5}, {"input": [13.5, 92.0], "expected": 92.0}, {"input": [13.5, 92.5], "expected": 92.5}, {"input": [13.5, 93.0], "expected": 93.0}, {"input": [13.5, 93.5], "expected": 93.5}, {"input": [13.5, 94.0], "expected": 94.0}, {"input": [13.5, 94.5], "expected": 94.5}, {"input": [13.5, 95.0], "expected": 95.0}, {"input": [13.5, 95.5], "expected": 95.5}, {"input": [13.5, 96.0], "expected": 96.0}, {"input": [13.5, 96.5], "expected": 96.5}, {"input": [13.5, 97.0], "expected": 97.0}, {"input": [13.5, 97.5], "expected": 97.5}, {"input": [13.5, 98.0], "expected": 98.0}, {"input": [13.5, 98.5], "expected": 98.5}, {"input": [13.5, 99.0], "expected": 99.0}, {"input": [13.5, 99.5], "expected": 99.5}, {"input": [14.0, -100.0], "expected": 14.0}, {"input": [14.0, -99.5], "expected": 14.0}, {"input": [14.0, -99.0], "expected": 14.0}, {"input": [14.0, -98.5], "expected": 14.0}, {"input": [14.0, -98.0], "expected": 14.0}, {"input": [14.0, -97.5], "expected": 14.0}, {"input": [14.0, -97.0], "expected": 14.0}, {"input": [14.0, -96.5], "expected": 14.0}, {"input": [14.0, -96.0], "expected": 14.0}, {"input": [14.0, -95.5], "expected": 14.0}, {"input": [14.0, -95.0], "expected": 14.0}, {"input": [14.0, -94.5], "expected": 14.0}, {"input": [14.0, -94.0], "expected": 14.0}, {"input": [14.0, -93.5], "expected": 14.0}, {"input": [14.0, -93.0], "expected": 14.0}, {"input": [14.0, -92.5], "expected": 14.0}, {"input": [14.0, -92.0], "expected": 14.0}, {"input": [14.0, -91.5], "expected": 14.0}, {"input": [14.0, -91.0], "expected": 14.0}, {"input": [14.0, -90.5], "expected": 14.0}, {"input": [14.0, -90.0], "expected": 14.0}, {"input": [14.0, -89.5], "expected": 14.0}, {"input": [14.0, -89.0], "expected": 14.0}, {"input": [14.0, -88.5], "expected": 14.0}, {"input": [14.0, -88.0], "expected": 14.0}, {"input": [14.0, -87.5], "expected": 14.0}, {"input": [14.0, -87.0], "expected": 14.0}, {"input": [14.0, -86.5], "expected": 14.0}, {"input": [14.0, -86.0], "expected": 14.0}, {"input": [14.0, -85.5], "expected": 14.0}, {"input": [14.0, -85.0], "expected": 14.0}, {"input": [14.0, -84.5], "expected": 14.0}, {"input": [14.0, -84.0], "expected": 14.0}, {"input": [14.0, -83.5], "expected": 14.0}, {"input": [14.0, -83.0], "expected": 14.0}, {"input": [14.0, -82.5], "expected": 14.0}, {"input": [14.0, -82.0], "expected": 14.0}, {"input": [14.0, -81.5], "expected": 14.0}, {"input": [14.0, -81.0], "expected": 14.0}, {"input": [14.0, -80.5], "expected": 14.0}, {"input": [14.0, -80.0], "expected": 14.0}, {"input": [14.0, -79.5], "expected": 14.0}, {"input": [14.0, -79.0], "expected": 14.0}, {"input": [14.0, -78.5], "expected": 14.0}, {"input": [14.0, -78.0], "expected": 14.0}, {"input": [14.0, -77.5], "expected": 14.0}, {"input": [14.0, -77.0], "expected": 14.0}, {"input": [14.0, -76.5], "expected": 14.0}, {"input": [14.0, -76.0], "expected": 14.0}, {"input": [14.0, -75.5], "expected": 14.0}, {"input": [14.0, -75.0], "expected": 14.0}, {"input": [14.0, -74.5], "expected": 14.0}, {"input": [14.0, -74.0], "expected": 14.0}, {"input": [14.0, -73.5], "expected": 14.0}, {"input": [14.0, -73.0], "expected": 14.0}, {"input": [14.0, -72.5], "expected": 14.0}, {"input": [14.0, -72.0], "expected": 14.0}, {"input": [14.0, -71.5], "expected": 14.0}, {"input": [14.0, -71.0], "expected": 14.0}, {"input": [14.0, -70.5], "expected": 14.0}, {"input": [14.0, -70.0], "expected": 14.0}, {"input": [14.0, -69.5], "expected": 14.0}, {"input": [14.0, -69.0], "expected": 14.0}, {"input": [14.0, -68.5], "expected": 14.0}, {"input": [14.0, -68.0], "expected": 14.0}, {"input": [14.0, -67.5], "expected": 14.0}, {"input": [14.0, -67.0], "expected": 14.0}, {"input": [14.0, -66.5], "expected": 14.0}, {"input": [14.0, -66.0], "expected": 14.0}, {"input": [14.0, -65.5], "expected": 14.0}, {"input": [14.0, -65.0], "expected": 14.0}, {"input": [14.0, -64.5], "expected": 14.0}, {"input": [14.0, -64.0], "expected": 14.0}, {"input": [14.0, -63.5], "expected": 14.0}, {"input": [14.0, -63.0], "expected": 14.0}, {"input": [14.0, -62.5], "expected": 14.0}, {"input": [14.0, -62.0], "expected": 14.0}, {"input": [14.0, -61.5], "expected": 14.0}, {"input": [14.0, -61.0], "expected": 14.0}, {"input": [14.0, -60.5], "expected": 14.0}, {"input": [14.0, -60.0], "expected": 14.0}, {"input": [14.0, -59.5], "expected": 14.0}, {"input": [14.0, -59.0], "expected": 14.0}, {"input": [14.0, -58.5], "expected": 14.0}, {"input": [14.0, -58.0], "expected": 14.0}, {"input": [14.0, -57.5], "expected": 14.0}, {"input": [14.0, -57.0], "expected": 14.0}, {"input": [14.0, -56.5], "expected": 14.0}, {"input": [14.0, -56.0], "expected": 14.0}, {"input": [14.0, -55.5], "expected": 14.0}, {"input": [14.0, -55.0], "expected": 14.0}, {"input": [14.0, -54.5], "expected": 14.0}, {"input": [14.0, -54.0], "expected": 14.0}, {"input": [14.0, -53.5], "expected": 14.0}, {"input": [14.0, -53.0], "expected": 14.0}, {"input": [14.0, -52.5], "expected": 14.0}, {"input": [14.0, -52.0], "expected": 14.0}, {"input": [14.0, -51.5], "expected": 14.0}, {"input": [14.0, -51.0], "expected": 14.0}, {"input": [14.0, -50.5], "expected": 14.0}, {"input": [14.0, -50.0], "expected": 14.0}, {"input": [14.0, -49.5], "expected": 14.0}, {"input": [14.0, -49.0], "expected": 14.0}, {"input": [14.0, -48.5], "expected": 14.0}, {"input": [14.0, -48.0], "expected": 14.0}, {"input": [14.0, -47.5], "expected": 14.0}, {"input": [14.0, -47.0], "expected": 14.0}, {"input": [14.0, -46.5], "expected": 14.0}, {"input": [14.0, -46.0], "expected": 14.0}, {"input": [14.0, -45.5], "expected": 14.0}, {"input": [14.0, -45.0], "expected": 14.0}, {"input": [14.0, -44.5], "expected": 14.0}, {"input": [14.0, -44.0], "expected": 14.0}, {"input": [14.0, -43.5], "expected": 14.0}, {"input": [14.0, -43.0], "expected": 14.0}, {"input": [14.0, -42.5], "expected": 14.0}, {"input": [14.0, -42.0], "expected": 14.0}, {"input": [14.0, -41.5], "expected": 14.0}, {"input": [14.0, -41.0], "expected": 14.0}, {"input": [14.0, -40.5], "expected": 14.0}, {"input": [14.0, -40.0], "expected": 14.0}, {"input": [14.0, -39.5], "expected": 14.0}, {"input": [14.0, -39.0], "expected": 14.0}, {"input": [14.0, -38.5], "expected": 14.0}, {"input": [14.0, -38.0], "expected": 14.0}, {"input": [14.0, -37.5], "expected": 14.0}, {"input": [14.0, -37.0], "expected": 14.0}, {"input": [14.0, -36.5], "expected": 14.0}, {"input": [14.0, -36.0], "expected": 14.0}, {"input": [14.0, -35.5], "expected": 14.0}, {"input": [14.0, -35.0], "expected": 14.0}, {"input": [14.0, -34.5], "expected": 14.0}, {"input": [14.0, -34.0], "expected": 14.0}, {"input": [14.0, -33.5], "expected": 14.0}, {"input": [14.0, -33.0], "expected": 14.0}, {"input": [14.0, -32.5], "expected": 14.0}, {"input": [14.0, -32.0], "expected": 14.0}, {"input": [14.0, -31.5], "expected": 14.0}, {"input": [14.0, -31.0], "expected": 14.0}, {"input": [14.0, -30.5], "expected": 14.0}, {"input": [14.0, -30.0], "expected": 14.0}, {"input": [14.0, -29.5], "expected": 14.0}, {"input": [14.0, -29.0], "expected": 14.0}, {"input": [14.0, -28.5], "expected": 14.0}, {"input": [14.0, -28.0], "expected": 14.0}, {"input": [14.0, -27.5], "expected": 14.0}, {"input": [14.0, -27.0], "expected": 14.0}, {"input": [14.0, -26.5], "expected": 14.0}, {"input": [14.0, -26.0], "expected": 14.0}, {"input": [14.0, -25.5], "expected": 14.0}, {"input": [14.0, -25.0], "expected": 14.0}, {"input": [14.0, -24.5], "expected": 14.0}, {"input": [14.0, -24.0], "expected": 14.0}, {"input": [14.0, -23.5], "expected": 14.0}, {"input": [14.0, -23.0], "expected": 14.0}, {"input": [14.0, -22.5], "expected": 14.0}, {"input": [14.0, -22.0], "expected": 14.0}, {"input": [14.0, -21.5], "expected": 14.0}, {"input": [14.0, -21.0], "expected": 14.0}, {"input": [14.0, -20.5], "expected": 14.000000000000002}, {"input": [14.0, -20.0], "expected": 14.000000000000002}, {"input": [14.0, -19.5], "expected": 14.000000000000004}, {"input": [14.0, -19.0], "expected": 14.000000000000005}, {"input": [14.0, -18.5], "expected": 14.000000000000007}, {"input": [14.0, -18.0], "expected": 14.000000000000012}, {"input": [14.0, -17.5], "expected": 14.000000000000021}, {"input": [14.0, -17.0], "expected": 14.000000000000034}, {"input": [14.0, -16.5], "expected": 14.000000000000057}, {"input": [14.0, -16.0], "expected": 14.000000000000094}, {"input": [14.0, -15.5], "expected": 14.000000000000155}, {"input": [14.0, -15.0], "expected": 14.000000000000254}, {"input": [14.0, -14.5], "expected": 14.00000000000042}, {"input": [14.0, -14.0], "expected": 14.000000000000691}, {"input": [14.0, -13.5], "expected": 14.00000000000114}, {"input": [14.0, -13.0], "expected": 14.00000000000188}, {"input": [14.0, -12.5], "expected": 14.000000000003098}, {"input": [14.0, -12.0], "expected": 14.000000000005109}, {"input": [14.0, -11.5], "expected": 14.000000000008423}, {"input": [14.0, -11.0], "expected": 14.000000000013888}, {"input": [14.0, -10.5], "expected": 14.000000000022897}, {"input": [14.0, -10.0], "expected": 14.000000000037751}, {"input": [14.0, -9.5], "expected": 14.000000000062242}, {"input": [14.0, -9.0], "expected": 14.000000000102618}, {"input": [14.0, -8.5], "expected": 14.000000000169189}, {"input": [14.0, -8.0], "expected": 14.000000000278947}, {"input": [14.0, -7.5], "expected": 14.000000000459906}, {"input": [14.0, -7.0], "expected": 14.000000000758256}, {"input": [14.0, -6.5], "expected": 14.000000001250152}, {"input": [14.0, -6.0], "expected": 14.000000002061153}, {"input": [14.0, -5.5], "expected": 14.000000003398268}, {"input": [14.0, -5.0], "expected": 14.000000005602796}, {"input": [14.0, -4.5], "expected": 14.00000000923745}, {"input": [14.0, -4.0], "expected": 14.000000015229979}, {"input": [14.0, -3.5], "expected": 14.00000002510999}, {"input": [14.0, -3.0], "expected": 14.000000041399376}, {"input": [14.0, -2.5], "expected": 14.000000068256032}, {"input": [14.0, -2.0], "expected": 14.000000112535169}, {"input": [14.0, -1.5], "expected": 14.000000185539118}, {"input": [14.0, -1.0], "expected": 14.000000305902274}, {"input": [14.0, -0.5], "expected": 14.000000504347536}, {"input": [14.0, 0.0], "expected": 14.000000831528373}, {"input": [14.0, 0.5], "expected": 14.000001370958147}, {"input": [14.0, 1.0], "expected": 14.000002260326852}, {"input": [14.0, 1.5], "expected": 14.000003726646229}, {"input": [14.0, 2.0], "expected": 14.000006144193478}, {"input": [14.0, 2.5], "expected": 14.00001013004229}, {"input": [14.0, 3.0], "expected": 14.000016701561318}, {"input": [14.0, 3.5], "expected": 14.00002753607023}, {"input": [14.0, 4.0], "expected": 14.000045398899218}, {"input": [14.0, 4.5], "expected": 14.000074849028628}, {"input": [14.0, 5.0], "expected": 14.000123402189724}, {"input": [14.0, 5.5], "expected": 14.00020344767213}, {"input": [14.0, 6.0], "expected": 14.000335406372896}, {"input": [14.0, 6.5], "expected": 14.000552931475362}, {"input": [14.0, 7.0], "expected": 14.000911466453774}, {"input": [14.0, 7.5], "expected": 14.001502310159754}, {"input": [14.0, 8.0], "expected": 14.00247568513773}, {"input": [14.0, 8.5], "expected": 14.00407844327057}, {"input": [14.0, 9.0], "expected": 14.006715348489118}, {"input": [14.0, 9.5], "expected": 14.011047744848593}, {"input": [14.0, 10.0], "expected": 14.01814992791781}, {"input": [14.0, 10.5], "expected": 14.02975041827262}, {"input": [14.0, 11.0], "expected": 14.048587351573742}, {"input": [14.0, 11.5], "expected": 14.078889734292549}, {"input": [14.0, 12.0], "expected": 14.126928011042972}, {"input": [14.0, 12.5], "expected": 14.201413277982752}, {"input": [14.0, 13.0], "expected": 14.313261687518223}, {"input": [14.0, 13.5], "expected": 14.474076984180106}, {"input": [14.0, 14.0], "expected": 14.693147180559945}, {"input": [14.0, 14.5], "expected": 14.974076984180106}, {"input": [14.0, 15.0], "expected": 15.313261687518223}, {"input": [14.0, 15.5], "expected": 15.701413277982752}, {"input": [14.0, 16.0], "expected": 16.126928011042974}, {"input": [14.0, 16.5], "expected": 16.57888973429255}, {"input": [14.0, 17.0], "expected": 17.048587351573744}, {"input": [14.0, 17.5], "expected": 17.52975041827262}, {"input": [14.0, 18.0], "expected": 18.01814992791781}, {"input": [14.0, 18.5], "expected": 18.511047744848593}, {"input": [14.0, 19.0], "expected": 19.006715348489116}, {"input": [14.0, 19.5], "expected": 19.504078443270572}, {"input": [14.0, 20.0], "expected": 20.002475685137732}, {"input": [14.0, 20.5], "expected": 20.501502310159754}, {"input": [14.0, 21.0], "expected": 21.000911466453775}, {"input": [14.0, 21.5], "expected": 21.50055293147536}, {"input": [14.0, 22.0], "expected": 22.000335406372894}, {"input": [14.0, 22.5], "expected": 22.500203447672128}, {"input": [14.0, 23.0], "expected": 23.000123402189722}, {"input": [14.0, 23.5], "expected": 23.50007484902863}, {"input": [14.0, 24.0], "expected": 24.000045398899218}, {"input": [14.0, 24.5], "expected": 24.500027536070228}, {"input": [14.0, 25.0], "expected": 25.000016701561318}, {"input": [14.0, 25.5], "expected": 25.50001013004229}, {"input": [14.0, 26.0], "expected": 26.000006144193478}, {"input": [14.0, 26.5], "expected": 26.500003726646227}, {"input": [14.0, 27.0], "expected": 27.000002260326852}, {"input": [14.0, 27.5], "expected": 27.500001370958145}, {"input": [14.0, 28.0], "expected": 28.000000831528375}, {"input": [14.0, 28.5], "expected": 28.500000504347536}, {"input": [14.0, 29.0], "expected": 29.000000305902272}, {"input": [14.0, 29.5], "expected": 29.50000018553912}, {"input": [14.0, 30.0], "expected": 30.00000011253517}, {"input": [14.0, 30.5], "expected": 30.500000068256032}, {"input": [14.0, 31.0], "expected": 31.000000041399375}, {"input": [14.0, 31.5], "expected": 31.50000002510999}, {"input": [14.0, 32.0], "expected": 32.00000001522998}, {"input": [14.0, 32.5], "expected": 32.500000009237446}, {"input": [14.0, 33.0], "expected": 33.00000000560279}, {"input": [14.0, 33.5], "expected": 33.50000000339827}, {"input": [14.0, 34.0], "expected": 34.00000000206116}, {"input": [14.0, 34.5], "expected": 34.50000000125015}, {"input": [14.0, 35.0], "expected": 35.000000000758256}, {"input": [14.0, 35.5], "expected": 35.500000000459906}, {"input": [14.0, 36.0], "expected": 36.000000000278945}, {"input": [14.0, 36.5], "expected": 36.50000000016919}, {"input": [14.0, 37.0], "expected": 37.00000000010262}, {"input": [14.0, 37.5], "expected": 37.50000000006224}, {"input": [14.0, 38.0], "expected": 38.00000000003775}, {"input": [14.0, 38.5], "expected": 38.5000000000229}, {"input": [14.0, 39.0], "expected": 39.00000000001389}, {"input": [14.0, 39.5], "expected": 39.50000000000842}, {"input": [14.0, 40.0], "expected": 40.00000000000511}, {"input": [14.0, 40.5], "expected": 40.5000000000031}, {"input": [14.0, 41.0], "expected": 41.00000000000188}, {"input": [14.0, 41.5], "expected": 41.50000000000114}, {"input": [14.0, 42.0], "expected": 42.00000000000069}, {"input": [14.0, 42.5], "expected": 42.50000000000042}, {"input": [14.0, 43.0], "expected": 43.000000000000256}, {"input": [14.0, 43.5], "expected": 43.500000000000156}, {"input": [14.0, 44.0], "expected": 44.00000000000009}, {"input": [14.0, 44.5], "expected": 44.50000000000006}, {"input": [14.0, 45.0], "expected": 45.000000000000036}, {"input": [14.0, 45.5], "expected": 45.50000000000002}, {"input": [14.0, 46.0], "expected": 46.000000000000014}, {"input": [14.0, 46.5], "expected": 46.50000000000001}, {"input": [14.0, 47.0], "expected": 47.00000000000001}, {"input": [14.0, 47.5], "expected": 47.5}, {"input": [14.0, 48.0], "expected": 48.0}, {"input": [14.0, 48.5], "expected": 48.5}, {"input": [14.0, 49.0], "expected": 49.0}, {"input": [14.0, 49.5], "expected": 49.5}, {"input": [14.0, 50.0], "expected": 50.0}, {"input": [14.0, 50.5], "expected": 50.5}, {"input": [14.0, 51.0], "expected": 51.0}, {"input": [14.0, 51.5], "expected": 51.5}, {"input": [14.0, 52.0], "expected": 52.0}, {"input": [14.0, 52.5], "expected": 52.5}, {"input": [14.0, 53.0], "expected": 53.0}, {"input": [14.0, 53.5], "expected": 53.5}, {"input": [14.0, 54.0], "expected": 54.0}, {"input": [14.0, 54.5], "expected": 54.5}, {"input": [14.0, 55.0], "expected": 55.0}, {"input": [14.0, 55.5], "expected": 55.5}, {"input": [14.0, 56.0], "expected": 56.0}, {"input": [14.0, 56.5], "expected": 56.5}, {"input": [14.0, 57.0], "expected": 57.0}, {"input": [14.0, 57.5], "expected": 57.5}, {"input": [14.0, 58.0], "expected": 58.0}, {"input": [14.0, 58.5], "expected": 58.5}, {"input": [14.0, 59.0], "expected": 59.0}, {"input": [14.0, 59.5], "expected": 59.5}, {"input": [14.0, 60.0], "expected": 60.0}, {"input": [14.0, 60.5], "expected": 60.5}, {"input": [14.0, 61.0], "expected": 61.0}, {"input": [14.0, 61.5], "expected": 61.5}, {"input": [14.0, 62.0], "expected": 62.0}, {"input": [14.0, 62.5], "expected": 62.5}, {"input": [14.0, 63.0], "expected": 63.0}, {"input": [14.0, 63.5], "expected": 63.5}, {"input": [14.0, 64.0], "expected": 64.0}, {"input": [14.0, 64.5], "expected": 64.5}, {"input": [14.0, 65.0], "expected": 65.0}, {"input": [14.0, 65.5], "expected": 65.5}, {"input": [14.0, 66.0], "expected": 66.0}, {"input": [14.0, 66.5], "expected": 66.5}, {"input": [14.0, 67.0], "expected": 67.0}, {"input": [14.0, 67.5], "expected": 67.5}, {"input": [14.0, 68.0], "expected": 68.0}, {"input": [14.0, 68.5], "expected": 68.5}, {"input": [14.0, 69.0], "expected": 69.0}, {"input": [14.0, 69.5], "expected": 69.5}, {"input": [14.0, 70.0], "expected": 70.0}, {"input": [14.0, 70.5], "expected": 70.5}, {"input": [14.0, 71.0], "expected": 71.0}, {"input": [14.0, 71.5], "expected": 71.5}, {"input": [14.0, 72.0], "expected": 72.0}, {"input": [14.0, 72.5], "expected": 72.5}, {"input": [14.0, 73.0], "expected": 73.0}, {"input": [14.0, 73.5], "expected": 73.5}, {"input": [14.0, 74.0], "expected": 74.0}, {"input": [14.0, 74.5], "expected": 74.5}, {"input": [14.0, 75.0], "expected": 75.0}, {"input": [14.0, 75.5], "expected": 75.5}, {"input": [14.0, 76.0], "expected": 76.0}, {"input": [14.0, 76.5], "expected": 76.5}, {"input": [14.0, 77.0], "expected": 77.0}, {"input": [14.0, 77.5], "expected": 77.5}, {"input": [14.0, 78.0], "expected": 78.0}, {"input": [14.0, 78.5], "expected": 78.5}, {"input": [14.0, 79.0], "expected": 79.0}, {"input": [14.0, 79.5], "expected": 79.5}, {"input": [14.0, 80.0], "expected": 80.0}, {"input": [14.0, 80.5], "expected": 80.5}, {"input": [14.0, 81.0], "expected": 81.0}, {"input": [14.0, 81.5], "expected": 81.5}, {"input": [14.0, 82.0], "expected": 82.0}, {"input": [14.0, 82.5], "expected": 82.5}, {"input": [14.0, 83.0], "expected": 83.0}, {"input": [14.0, 83.5], "expected": 83.5}, {"input": [14.0, 84.0], "expected": 84.0}, {"input": [14.0, 84.5], "expected": 84.5}, {"input": [14.0, 85.0], "expected": 85.0}, {"input": [14.0, 85.5], "expected": 85.5}, {"input": [14.0, 86.0], "expected": 86.0}, {"input": [14.0, 86.5], "expected": 86.5}, {"input": [14.0, 87.0], "expected": 87.0}, {"input": [14.0, 87.5], "expected": 87.5}, {"input": [14.0, 88.0], "expected": 88.0}, {"input": [14.0, 88.5], "expected": 88.5}, {"input": [14.0, 89.0], "expected": 89.0}, {"input": [14.0, 89.5], "expected": 89.5}, {"input": [14.0, 90.0], "expected": 90.0}, {"input": [14.0, 90.5], "expected": 90.5}, {"input": [14.0, 91.0], "expected": 91.0}, {"input": [14.0, 91.5], "expected": 91.5}, {"input": [14.0, 92.0], "expected": 92.0}, {"input": [14.0, 92.5], "expected": 92.5}, {"input": [14.0, 93.0], "expected": 93.0}, {"input": [14.0, 93.5], "expected": 93.5}, {"input": [14.0, 94.0], "expected": 94.0}, {"input": [14.0, 94.5], "expected": 94.5}, {"input": [14.0, 95.0], "expected": 95.0}, {"input": [14.0, 95.5], "expected": 95.5}, {"input": [14.0, 96.0], "expected": 96.0}, {"input": [14.0, 96.5], "expected": 96.5}, {"input": [14.0, 97.0], "expected": 97.0}, {"input": [14.0, 97.5], "expected": 97.5}, {"input": [14.0, 98.0], "expected": 98.0}, {"input": [14.0, 98.5], "expected": 98.5}, {"input": [14.0, 99.0], "expected": 99.0}, {"input": [14.0, 99.5], "expected": 99.5}, {"input": [14.5, -100.0], "expected": 14.5}, {"input": [14.5, -99.5], "expected": 14.5}, {"input": [14.5, -99.0], "expected": 14.5}, {"input": [14.5, -98.5], "expected": 14.5}, {"input": [14.5, -98.0], "expected": 14.5}, {"input": [14.5, -97.5], "expected": 14.5}, {"input": [14.5, -97.0], "expected": 14.5}, {"input": [14.5, -96.5], "expected": 14.5}, {"input": [14.5, -96.0], "expected": 14.5}, {"input": [14.5, -95.5], "expected": 14.5}, {"input": [14.5, -95.0], "expected": 14.5}, {"input": [14.5, -94.5], "expected": 14.5}, {"input": [14.5, -94.0], "expected": 14.5}, {"input": [14.5, -93.5], "expected": 14.5}, {"input": [14.5, -93.0], "expected": 14.5}, {"input": [14.5, -92.5], "expected": 14.5}, {"input": [14.5, -92.0], "expected": 14.5}, {"input": [14.5, -91.5], "expected": 14.5}, {"input": [14.5, -91.0], "expected": 14.5}, {"input": [14.5, -90.5], "expected": 14.5}, {"input": [14.5, -90.0], "expected": 14.5}, {"input": [14.5, -89.5], "expected": 14.5}, {"input": [14.5, -89.0], "expected": 14.5}, {"input": [14.5, -88.5], "expected": 14.5}, {"input": [14.5, -88.0], "expected": 14.5}, {"input": [14.5, -87.5], "expected": 14.5}, {"input": [14.5, -87.0], "expected": 14.5}, {"input": [14.5, -86.5], "expected": 14.5}, {"input": [14.5, -86.0], "expected": 14.5}, {"input": [14.5, -85.5], "expected": 14.5}, {"input": [14.5, -85.0], "expected": 14.5}, {"input": [14.5, -84.5], "expected": 14.5}, {"input": [14.5, -84.0], "expected": 14.5}, {"input": [14.5, -83.5], "expected": 14.5}, {"input": [14.5, -83.0], "expected": 14.5}, {"input": [14.5, -82.5], "expected": 14.5}, {"input": [14.5, -82.0], "expected": 14.5}, {"input": [14.5, -81.5], "expected": 14.5}, {"input": [14.5, -81.0], "expected": 14.5}, {"input": [14.5, -80.5], "expected": 14.5}, {"input": [14.5, -80.0], "expected": 14.5}, {"input": [14.5, -79.5], "expected": 14.5}, {"input": [14.5, -79.0], "expected": 14.5}, {"input": [14.5, -78.5], "expected": 14.5}, {"input": [14.5, -78.0], "expected": 14.5}, {"input": [14.5, -77.5], "expected": 14.5}, {"input": [14.5, -77.0], "expected": 14.5}, {"input": [14.5, -76.5], "expected": 14.5}, {"input": [14.5, -76.0], "expected": 14.5}, {"input": [14.5, -75.5], "expected": 14.5}, {"input": [14.5, -75.0], "expected": 14.5}, {"input": [14.5, -74.5], "expected": 14.5}, {"input": [14.5, -74.0], "expected": 14.5}, {"input": [14.5, -73.5], "expected": 14.5}, {"input": [14.5, -73.0], "expected": 14.5}, {"input": [14.5, -72.5], "expected": 14.5}, {"input": [14.5, -72.0], "expected": 14.5}, {"input": [14.5, -71.5], "expected": 14.5}, {"input": [14.5, -71.0], "expected": 14.5}, {"input": [14.5, -70.5], "expected": 14.5}, {"input": [14.5, -70.0], "expected": 14.5}, {"input": [14.5, -69.5], "expected": 14.5}, {"input": [14.5, -69.0], "expected": 14.5}, {"input": [14.5, -68.5], "expected": 14.5}, {"input": [14.5, -68.0], "expected": 14.5}, {"input": [14.5, -67.5], "expected": 14.5}, {"input": [14.5, -67.0], "expected": 14.5}, {"input": [14.5, -66.5], "expected": 14.5}, {"input": [14.5, -66.0], "expected": 14.5}, {"input": [14.5, -65.5], "expected": 14.5}, {"input": [14.5, -65.0], "expected": 14.5}, {"input": [14.5, -64.5], "expected": 14.5}, {"input": [14.5, -64.0], "expected": 14.5}, {"input": [14.5, -63.5], "expected": 14.5}, {"input": [14.5, -63.0], "expected": 14.5}, {"input": [14.5, -62.5], "expected": 14.5}, {"input": [14.5, -62.0], "expected": 14.5}, {"input": [14.5, -61.5], "expected": 14.5}, {"input": [14.5, -61.0], "expected": 14.5}, {"input": [14.5, -60.5], "expected": 14.5}, {"input": [14.5, -60.0], "expected": 14.5}, {"input": [14.5, -59.5], "expected": 14.5}, {"input": [14.5, -59.0], "expected": 14.5}, {"input": [14.5, -58.5], "expected": 14.5}, {"input": [14.5, -58.0], "expected": 14.5}, {"input": [14.5, -57.5], "expected": 14.5}, {"input": [14.5, -57.0], "expected": 14.5}, {"input": [14.5, -56.5], "expected": 14.5}, {"input": [14.5, -56.0], "expected": 14.5}, {"input": [14.5, -55.5], "expected": 14.5}, {"input": [14.5, -55.0], "expected": 14.5}, {"input": [14.5, -54.5], "expected": 14.5}, {"input": [14.5, -54.0], "expected": 14.5}, {"input": [14.5, -53.5], "expected": 14.5}, {"input": [14.5, -53.0], "expected": 14.5}, {"input": [14.5, -52.5], "expected": 14.5}, {"input": [14.5, -52.0], "expected": 14.5}, {"input": [14.5, -51.5], "expected": 14.5}, {"input": [14.5, -51.0], "expected": 14.5}, {"input": [14.5, -50.5], "expected": 14.5}, {"input": [14.5, -50.0], "expected": 14.5}, {"input": [14.5, -49.5], "expected": 14.5}, {"input": [14.5, -49.0], "expected": 14.5}, {"input": [14.5, -48.5], "expected": 14.5}, {"input": [14.5, -48.0], "expected": 14.5}, {"input": [14.5, -47.5], "expected": 14.5}, {"input": [14.5, -47.0], "expected": 14.5}, {"input": [14.5, -46.5], "expected": 14.5}, {"input": [14.5, -46.0], "expected": 14.5}, {"input": [14.5, -45.5], "expected": 14.5}, {"input": [14.5, -45.0], "expected": 14.5}, {"input": [14.5, -44.5], "expected": 14.5}, {"input": [14.5, -44.0], "expected": 14.5}, {"input": [14.5, -43.5], "expected": 14.5}, {"input": [14.5, -43.0], "expected": 14.5}, {"input": [14.5, -42.5], "expected": 14.5}, {"input": [14.5, -42.0], "expected": 14.5}, {"input": [14.5, -41.5], "expected": 14.5}, {"input": [14.5, -41.0], "expected": 14.5}, {"input": [14.5, -40.5], "expected": 14.5}, {"input": [14.5, -40.0], "expected": 14.5}, {"input": [14.5, -39.5], "expected": 14.5}, {"input": [14.5, -39.0], "expected": 14.5}, {"input": [14.5, -38.5], "expected": 14.5}, {"input": [14.5, -38.0], "expected": 14.5}, {"input": [14.5, -37.5], "expected": 14.5}, {"input": [14.5, -37.0], "expected": 14.5}, {"input": [14.5, -36.5], "expected": 14.5}, {"input": [14.5, -36.0], "expected": 14.5}, {"input": [14.5, -35.5], "expected": 14.5}, {"input": [14.5, -35.0], "expected": 14.5}, {"input": [14.5, -34.5], "expected": 14.5}, {"input": [14.5, -34.0], "expected": 14.5}, {"input": [14.5, -33.5], "expected": 14.5}, {"input": [14.5, -33.0], "expected": 14.5}, {"input": [14.5, -32.5], "expected": 14.5}, {"input": [14.5, -32.0], "expected": 14.5}, {"input": [14.5, -31.5], "expected": 14.5}, {"input": [14.5, -31.0], "expected": 14.5}, {"input": [14.5, -30.5], "expected": 14.5}, {"input": [14.5, -30.0], "expected": 14.5}, {"input": [14.5, -29.5], "expected": 14.5}, {"input": [14.5, -29.0], "expected": 14.5}, {"input": [14.5, -28.5], "expected": 14.5}, {"input": [14.5, -28.0], "expected": 14.5}, {"input": [14.5, -27.5], "expected": 14.5}, {"input": [14.5, -27.0], "expected": 14.5}, {"input": [14.5, -26.5], "expected": 14.5}, {"input": [14.5, -26.0], "expected": 14.5}, {"input": [14.5, -25.5], "expected": 14.5}, {"input": [14.5, -25.0], "expected": 14.5}, {"input": [14.5, -24.5], "expected": 14.5}, {"input": [14.5, -24.0], "expected": 14.5}, {"input": [14.5, -23.5], "expected": 14.5}, {"input": [14.5, -23.0], "expected": 14.5}, {"input": [14.5, -22.5], "expected": 14.5}, {"input": [14.5, -22.0], "expected": 14.5}, {"input": [14.5, -21.5], "expected": 14.5}, {"input": [14.5, -21.0], "expected": 14.5}, {"input": [14.5, -20.5], "expected": 14.5}, {"input": [14.5, -20.0], "expected": 14.500000000000002}, {"input": [14.5, -19.5], "expected": 14.500000000000002}, {"input": [14.5, -19.0], "expected": 14.500000000000004}, {"input": [14.5, -18.5], "expected": 14.500000000000005}, {"input": [14.5, -18.0], "expected": 14.500000000000007}, {"input": [14.5, -17.5], "expected": 14.500000000000012}, {"input": [14.5, -17.0], "expected": 14.500000000000021}, {"input": [14.5, -16.5], "expected": 14.500000000000034}, {"input": [14.5, -16.0], "expected": 14.500000000000057}, {"input": [14.5, -15.5], "expected": 14.500000000000094}, {"input": [14.5, -15.0], "expected": 14.500000000000155}, {"input": [14.5, -14.5], "expected": 14.500000000000254}, {"input": [14.5, -14.0], "expected": 14.50000000000042}, {"input": [14.5, -13.5], "expected": 14.500000000000691}, {"input": [14.5, -13.0], "expected": 14.50000000000114}, {"input": [14.5, -12.5], "expected": 14.50000000000188}, {"input": [14.5, -12.0], "expected": 14.500000000003098}, {"input": [14.5, -11.5], "expected": 14.500000000005109}, {"input": [14.5, -11.0], "expected": 14.500000000008423}, {"input": [14.5, -10.5], "expected": 14.500000000013888}, {"input": [14.5, -10.0], "expected": 14.500000000022897}, {"input": [14.5, -9.5], "expected": 14.500000000037751}, {"input": [14.5, -9.0], "expected": 14.500000000062242}, {"input": [14.5, -8.5], "expected": 14.500000000102618}, {"input": [14.5, -8.0], "expected": 14.500000000169189}, {"input": [14.5, -7.5], "expected": 14.500000000278947}, {"input": [14.5, -7.0], "expected": 14.500000000459906}, {"input": [14.5, -6.5], "expected": 14.500000000758256}, {"input": [14.5, -6.0], "expected": 14.500000001250152}, {"input": [14.5, -5.5], "expected": 14.500000002061153}, {"input": [14.5, -5.0], "expected": 14.500000003398268}, {"input": [14.5, -4.5], "expected": 14.500000005602796}, {"input": [14.5, -4.0], "expected": 14.50000000923745}, {"input": [14.5, -3.5], "expected": 14.500000015229979}, {"input": [14.5, -3.0], "expected": 14.50000002510999}, {"input": [14.5, -2.5], "expected": 14.500000041399376}, {"input": [14.5, -2.0], "expected": 14.500000068256032}, {"input": [14.5, -1.5], "expected": 14.500000112535169}, {"input": [14.5, -1.0], "expected": 14.500000185539118}, {"input": [14.5, -0.5], "expected": 14.500000305902274}, {"input": [14.5, 0.0], "expected": 14.500000504347536}, {"input": [14.5, 0.5], "expected": 14.500000831528373}, {"input": [14.5, 1.0], "expected": 14.500001370958147}, {"input": [14.5, 1.5], "expected": 14.500002260326852}, {"input": [14.5, 2.0], "expected": 14.500003726646229}, {"input": [14.5, 2.5], "expected": 14.500006144193478}, {"input": [14.5, 3.0], "expected": 14.50001013004229}, {"input": [14.5, 3.5], "expected": 14.500016701561318}, {"input": [14.5, 4.0], "expected": 14.50002753607023}, {"input": [14.5, 4.5], "expected": 14.500045398899218}, {"input": [14.5, 5.0], "expected": 14.500074849028628}, {"input": [14.5, 5.5], "expected": 14.500123402189724}, {"input": [14.5, 6.0], "expected": 14.50020344767213}, {"input": [14.5, 6.5], "expected": 14.500335406372896}, {"input": [14.5, 7.0], "expected": 14.500552931475362}, {"input": [14.5, 7.5], "expected": 14.500911466453774}, {"input": [14.5, 8.0], "expected": 14.501502310159754}, {"input": [14.5, 8.5], "expected": 14.50247568513773}, {"input": [14.5, 9.0], "expected": 14.50407844327057}, {"input": [14.5, 9.5], "expected": 14.506715348489118}, {"input": [14.5, 10.0], "expected": 14.511047744848593}, {"input": [14.5, 10.5], "expected": 14.51814992791781}, {"input": [14.5, 11.0], "expected": 14.52975041827262}, {"input": [14.5, 11.5], "expected": 14.548587351573742}, {"input": [14.5, 12.0], "expected": 14.578889734292549}, {"input": [14.5, 12.5], "expected": 14.626928011042972}, {"input": [14.5, 13.0], "expected": 14.701413277982752}, {"input": [14.5, 13.5], "expected": 14.813261687518223}, {"input": [14.5, 14.0], "expected": 14.974076984180106}, {"input": [14.5, 14.5], "expected": 15.193147180559945}, {"input": [14.5, 15.0], "expected": 15.474076984180106}, {"input": [14.5, 15.5], "expected": 15.813261687518223}, {"input": [14.5, 16.0], "expected": 16.201413277982752}, {"input": [14.5, 16.5], "expected": 16.626928011042974}, {"input": [14.5, 17.0], "expected": 17.07888973429255}, {"input": [14.5, 17.5], "expected": 17.548587351573744}, {"input": [14.5, 18.0], "expected": 18.02975041827262}, {"input": [14.5, 18.5], "expected": 18.51814992791781}, {"input": [14.5, 19.0], "expected": 19.011047744848593}, {"input": [14.5, 19.5], "expected": 19.506715348489116}, {"input": [14.5, 20.0], "expected": 20.004078443270572}, {"input": [14.5, 20.5], "expected": 20.502475685137732}, {"input": [14.5, 21.0], "expected": 21.001502310159754}, {"input": [14.5, 21.5], "expected": 21.500911466453775}, {"input": [14.5, 22.0], "expected": 22.00055293147536}, {"input": [14.5, 22.5], "expected": 22.500335406372894}, {"input": [14.5, 23.0], "expected": 23.000203447672128}, {"input": [14.5, 23.5], "expected": 23.500123402189722}, {"input": [14.5, 24.0], "expected": 24.00007484902863}, {"input": [14.5, 24.5], "expected": 24.500045398899218}, {"input": [14.5, 25.0], "expected": 25.000027536070228}, {"input": [14.5, 25.5], "expected": 25.500016701561318}, {"input": [14.5, 26.0], "expected": 26.00001013004229}, {"input": [14.5, 26.5], "expected": 26.500006144193478}, {"input": [14.5, 27.0], "expected": 27.000003726646227}, {"input": [14.5, 27.5], "expected": 27.500002260326852}, {"input": [14.5, 28.0], "expected": 28.000001370958145}, {"input": [14.5, 28.5], "expected": 28.500000831528375}, {"input": [14.5, 29.0], "expected": 29.000000504347536}, {"input": [14.5, 29.5], "expected": 29.500000305902272}, {"input": [14.5, 30.0], "expected": 30.00000018553912}, {"input": [14.5, 30.5], "expected": 30.50000011253517}, {"input": [14.5, 31.0], "expected": 31.000000068256032}, {"input": [14.5, 31.5], "expected": 31.500000041399375}, {"input": [14.5, 32.0], "expected": 32.00000002510999}, {"input": [14.5, 32.5], "expected": 32.50000001522998}, {"input": [14.5, 33.0], "expected": 33.000000009237446}, {"input": [14.5, 33.5], "expected": 33.50000000560279}, {"input": [14.5, 34.0], "expected": 34.00000000339827}, {"input": [14.5, 34.5], "expected": 34.50000000206116}, {"input": [14.5, 35.0], "expected": 35.00000000125015}, {"input": [14.5, 35.5], "expected": 35.500000000758256}, {"input": [14.5, 36.0], "expected": 36.000000000459906}, {"input": [14.5, 36.5], "expected": 36.500000000278945}, {"input": [14.5, 37.0], "expected": 37.00000000016919}, {"input": [14.5, 37.5], "expected": 37.50000000010262}, {"input": [14.5, 38.0], "expected": 38.00000000006224}, {"input": [14.5, 38.5], "expected": 38.50000000003775}, {"input": [14.5, 39.0], "expected": 39.0000000000229}, {"input": [14.5, 39.5], "expected": 39.50000000001389}, {"input": [14.5, 40.0], "expected": 40.00000000000842}, {"input": [14.5, 40.5], "expected": 40.50000000000511}, {"input": [14.5, 41.0], "expected": 41.0000000000031}, {"input": [14.5, 41.5], "expected": 41.50000000000188}, {"input": [14.5, 42.0], "expected": 42.00000000000114}, {"input": [14.5, 42.5], "expected": 42.50000000000069}, {"input": [14.5, 43.0], "expected": 43.00000000000042}, {"input": [14.5, 43.5], "expected": 43.500000000000256}, {"input": [14.5, 44.0], "expected": 44.000000000000156}, {"input": [14.5, 44.5], "expected": 44.50000000000009}, {"input": [14.5, 45.0], "expected": 45.00000000000006}, {"input": [14.5, 45.5], "expected": 45.500000000000036}, {"input": [14.5, 46.0], "expected": 46.00000000000002}, {"input": [14.5, 46.5], "expected": 46.500000000000014}, {"input": [14.5, 47.0], "expected": 47.00000000000001}, {"input": [14.5, 47.5], "expected": 47.50000000000001}, {"input": [14.5, 48.0], "expected": 48.0}, {"input": [14.5, 48.5], "expected": 48.5}, {"input": [14.5, 49.0], "expected": 49.0}, {"input": [14.5, 49.5], "expected": 49.5}, {"input": [14.5, 50.0], "expected": 50.0}, {"input": [14.5, 50.5], "expected": 50.5}, {"input": [14.5, 51.0], "expected": 51.0}, {"input": [14.5, 51.5], "expected": 51.5}, {"input": [14.5, 52.0], "expected": 52.0}, {"input": [14.5, 52.5], "expected": 52.5}, {"input": [14.5, 53.0], "expected": 53.0}, {"input": [14.5, 53.5], "expected": 53.5}, {"input": [14.5, 54.0], "expected": 54.0}, {"input": [14.5, 54.5], "expected": 54.5}, {"input": [14.5, 55.0], "expected": 55.0}, {"input": [14.5, 55.5], "expected": 55.5}, {"input": [14.5, 56.0], "expected": 56.0}, {"input": [14.5, 56.5], "expected": 56.5}, {"input": [14.5, 57.0], "expected": 57.0}, {"input": [14.5, 57.5], "expected": 57.5}, {"input": [14.5, 58.0], "expected": 58.0}, {"input": [14.5, 58.5], "expected": 58.5}, {"input": [14.5, 59.0], "expected": 59.0}, {"input": [14.5, 59.5], "expected": 59.5}, {"input": [14.5, 60.0], "expected": 60.0}, {"input": [14.5, 60.5], "expected": 60.5}, {"input": [14.5, 61.0], "expected": 61.0}, {"input": [14.5, 61.5], "expected": 61.5}, {"input": [14.5, 62.0], "expected": 62.0}, {"input": [14.5, 62.5], "expected": 62.5}, {"input": [14.5, 63.0], "expected": 63.0}, {"input": [14.5, 63.5], "expected": 63.5}, {"input": [14.5, 64.0], "expected": 64.0}, {"input": [14.5, 64.5], "expected": 64.5}, {"input": [14.5, 65.0], "expected": 65.0}, {"input": [14.5, 65.5], "expected": 65.5}, {"input": [14.5, 66.0], "expected": 66.0}, {"input": [14.5, 66.5], "expected": 66.5}, {"input": [14.5, 67.0], "expected": 67.0}, {"input": [14.5, 67.5], "expected": 67.5}, {"input": [14.5, 68.0], "expected": 68.0}, {"input": [14.5, 68.5], "expected": 68.5}, {"input": [14.5, 69.0], "expected": 69.0}, {"input": [14.5, 69.5], "expected": 69.5}, {"input": [14.5, 70.0], "expected": 70.0}, {"input": [14.5, 70.5], "expected": 70.5}, {"input": [14.5, 71.0], "expected": 71.0}, {"input": [14.5, 71.5], "expected": 71.5}, {"input": [14.5, 72.0], "expected": 72.0}, {"input": [14.5, 72.5], "expected": 72.5}, {"input": [14.5, 73.0], "expected": 73.0}, {"input": [14.5, 73.5], "expected": 73.5}, {"input": [14.5, 74.0], "expected": 74.0}, {"input": [14.5, 74.5], "expected": 74.5}, {"input": [14.5, 75.0], "expected": 75.0}, {"input": [14.5, 75.5], "expected": 75.5}, {"input": [14.5, 76.0], "expected": 76.0}, {"input": [14.5, 76.5], "expected": 76.5}, {"input": [14.5, 77.0], "expected": 77.0}, {"input": [14.5, 77.5], "expected": 77.5}, {"input": [14.5, 78.0], "expected": 78.0}, {"input": [14.5, 78.5], "expected": 78.5}, {"input": [14.5, 79.0], "expected": 79.0}, {"input": [14.5, 79.5], "expected": 79.5}, {"input": [14.5, 80.0], "expected": 80.0}, {"input": [14.5, 80.5], "expected": 80.5}, {"input": [14.5, 81.0], "expected": 81.0}, {"input": [14.5, 81.5], "expected": 81.5}, {"input": [14.5, 82.0], "expected": 82.0}, {"input": [14.5, 82.5], "expected": 82.5}, {"input": [14.5, 83.0], "expected": 83.0}, {"input": [14.5, 83.5], "expected": 83.5}, {"input": [14.5, 84.0], "expected": 84.0}, {"input": [14.5, 84.5], "expected": 84.5}, {"input": [14.5, 85.0], "expected": 85.0}, {"input": [14.5, 85.5], "expected": 85.5}, {"input": [14.5, 86.0], "expected": 86.0}, {"input": [14.5, 86.5], "expected": 86.5}, {"input": [14.5, 87.0], "expected": 87.0}, {"input": [14.5, 87.5], "expected": 87.5}, {"input": [14.5, 88.0], "expected": 88.0}, {"input": [14.5, 88.5], "expected": 88.5}, {"input": [14.5, 89.0], "expected": 89.0}, {"input": [14.5, 89.5], "expected": 89.5}, {"input": [14.5, 90.0], "expected": 90.0}, {"input": [14.5, 90.5], "expected": 90.5}, {"input": [14.5, 91.0], "expected": 91.0}, {"input": [14.5, 91.5], "expected": 91.5}, {"input": [14.5, 92.0], "expected": 92.0}, {"input": [14.5, 92.5], "expected": 92.5}, {"input": [14.5, 93.0], "expected": 93.0}, {"input": [14.5, 93.5], "expected": 93.5}, {"input": [14.5, 94.0], "expected": 94.0}, {"input": [14.5, 94.5], "expected": 94.5}, {"input": [14.5, 95.0], "expected": 95.0}, {"input": [14.5, 95.5], "expected": 95.5}, {"input": [14.5, 96.0], "expected": 96.0}, {"input": [14.5, 96.5], "expected": 96.5}, {"input": [14.5, 97.0], "expected": 97.0}, {"input": [14.5, 97.5], "expected": 97.5}, {"input": [14.5, 98.0], "expected": 98.0}, {"input": [14.5, 98.5], "expected": 98.5}, {"input": [14.5, 99.0], "expected": 99.0}, {"input": [14.5, 99.5], "expected": 99.5}, {"input": [15.0, -100.0], "expected": 15.0}, {"input": [15.0, -99.5], "expected": 15.0}, {"input": [15.0, -99.0], "expected": 15.0}, {"input": [15.0, -98.5], "expected": 15.0}, {"input": [15.0, -98.0], "expected": 15.0}, {"input": [15.0, -97.5], "expected": 15.0}, {"input": [15.0, -97.0], "expected": 15.0}, {"input": [15.0, -96.5], "expected": 15.0}, {"input": [15.0, -96.0], "expected": 15.0}, {"input": [15.0, -95.5], "expected": 15.0}, {"input": [15.0, -95.0], "expected": 15.0}, {"input": [15.0, -94.5], "expected": 15.0}, {"input": [15.0, -94.0], "expected": 15.0}, {"input": [15.0, -93.5], "expected": 15.0}, {"input": [15.0, -93.0], "expected": 15.0}, {"input": [15.0, -92.5], "expected": 15.0}, {"input": [15.0, -92.0], "expected": 15.0}, {"input": [15.0, -91.5], "expected": 15.0}, {"input": [15.0, -91.0], "expected": 15.0}, {"input": [15.0, -90.5], "expected": 15.0}, {"input": [15.0, -90.0], "expected": 15.0}, {"input": [15.0, -89.5], "expected": 15.0}, {"input": [15.0, -89.0], "expected": 15.0}, {"input": [15.0, -88.5], "expected": 15.0}, {"input": [15.0, -88.0], "expected": 15.0}, {"input": [15.0, -87.5], "expected": 15.0}, {"input": [15.0, -87.0], "expected": 15.0}, {"input": [15.0, -86.5], "expected": 15.0}, {"input": [15.0, -86.0], "expected": 15.0}, {"input": [15.0, -85.5], "expected": 15.0}, {"input": [15.0, -85.0], "expected": 15.0}, {"input": [15.0, -84.5], "expected": 15.0}, {"input": [15.0, -84.0], "expected": 15.0}, {"input": [15.0, -83.5], "expected": 15.0}, {"input": [15.0, -83.0], "expected": 15.0}, {"input": [15.0, -82.5], "expected": 15.0}, {"input": [15.0, -82.0], "expected": 15.0}, {"input": [15.0, -81.5], "expected": 15.0}, {"input": [15.0, -81.0], "expected": 15.0}, {"input": [15.0, -80.5], "expected": 15.0}, {"input": [15.0, -80.0], "expected": 15.0}, {"input": [15.0, -79.5], "expected": 15.0}, {"input": [15.0, -79.0], "expected": 15.0}, {"input": [15.0, -78.5], "expected": 15.0}, {"input": [15.0, -78.0], "expected": 15.0}, {"input": [15.0, -77.5], "expected": 15.0}, {"input": [15.0, -77.0], "expected": 15.0}, {"input": [15.0, -76.5], "expected": 15.0}, {"input": [15.0, -76.0], "expected": 15.0}, {"input": [15.0, -75.5], "expected": 15.0}, {"input": [15.0, -75.0], "expected": 15.0}, {"input": [15.0, -74.5], "expected": 15.0}, {"input": [15.0, -74.0], "expected": 15.0}, {"input": [15.0, -73.5], "expected": 15.0}, {"input": [15.0, -73.0], "expected": 15.0}, {"input": [15.0, -72.5], "expected": 15.0}, {"input": [15.0, -72.0], "expected": 15.0}, {"input": [15.0, -71.5], "expected": 15.0}, {"input": [15.0, -71.0], "expected": 15.0}, {"input": [15.0, -70.5], "expected": 15.0}, {"input": [15.0, -70.0], "expected": 15.0}, {"input": [15.0, -69.5], "expected": 15.0}, {"input": [15.0, -69.0], "expected": 15.0}, {"input": [15.0, -68.5], "expected": 15.0}, {"input": [15.0, -68.0], "expected": 15.0}, {"input": [15.0, -67.5], "expected": 15.0}, {"input": [15.0, -67.0], "expected": 15.0}, {"input": [15.0, -66.5], "expected": 15.0}, {"input": [15.0, -66.0], "expected": 15.0}, {"input": [15.0, -65.5], "expected": 15.0}, {"input": [15.0, -65.0], "expected": 15.0}, {"input": [15.0, -64.5], "expected": 15.0}, {"input": [15.0, -64.0], "expected": 15.0}, {"input": [15.0, -63.5], "expected": 15.0}, {"input": [15.0, -63.0], "expected": 15.0}, {"input": [15.0, -62.5], "expected": 15.0}, {"input": [15.0, -62.0], "expected": 15.0}, {"input": [15.0, -61.5], "expected": 15.0}, {"input": [15.0, -61.0], "expected": 15.0}, {"input": [15.0, -60.5], "expected": 15.0}, {"input": [15.0, -60.0], "expected": 15.0}, {"input": [15.0, -59.5], "expected": 15.0}, {"input": [15.0, -59.0], "expected": 15.0}, {"input": [15.0, -58.5], "expected": 15.0}, {"input": [15.0, -58.0], "expected": 15.0}, {"input": [15.0, -57.5], "expected": 15.0}, {"input": [15.0, -57.0], "expected": 15.0}, {"input": [15.0, -56.5], "expected": 15.0}, {"input": [15.0, -56.0], "expected": 15.0}, {"input": [15.0, -55.5], "expected": 15.0}, {"input": [15.0, -55.0], "expected": 15.0}, {"input": [15.0, -54.5], "expected": 15.0}, {"input": [15.0, -54.0], "expected": 15.0}, {"input": [15.0, -53.5], "expected": 15.0}, {"input": [15.0, -53.0], "expected": 15.0}, {"input": [15.0, -52.5], "expected": 15.0}, {"input": [15.0, -52.0], "expected": 15.0}, {"input": [15.0, -51.5], "expected": 15.0}, {"input": [15.0, -51.0], "expected": 15.0}, {"input": [15.0, -50.5], "expected": 15.0}, {"input": [15.0, -50.0], "expected": 15.0}, {"input": [15.0, -49.5], "expected": 15.0}, {"input": [15.0, -49.0], "expected": 15.0}, {"input": [15.0, -48.5], "expected": 15.0}, {"input": [15.0, -48.0], "expected": 15.0}, {"input": [15.0, -47.5], "expected": 15.0}, {"input": [15.0, -47.0], "expected": 15.0}, {"input": [15.0, -46.5], "expected": 15.0}, {"input": [15.0, -46.0], "expected": 15.0}, {"input": [15.0, -45.5], "expected": 15.0}, {"input": [15.0, -45.0], "expected": 15.0}, {"input": [15.0, -44.5], "expected": 15.0}, {"input": [15.0, -44.0], "expected": 15.0}, {"input": [15.0, -43.5], "expected": 15.0}, {"input": [15.0, -43.0], "expected": 15.0}, {"input": [15.0, -42.5], "expected": 15.0}, {"input": [15.0, -42.0], "expected": 15.0}, {"input": [15.0, -41.5], "expected": 15.0}, {"input": [15.0, -41.0], "expected": 15.0}, {"input": [15.0, -40.5], "expected": 15.0}, {"input": [15.0, -40.0], "expected": 15.0}, {"input": [15.0, -39.5], "expected": 15.0}, {"input": [15.0, -39.0], "expected": 15.0}, {"input": [15.0, -38.5], "expected": 15.0}, {"input": [15.0, -38.0], "expected": 15.0}, {"input": [15.0, -37.5], "expected": 15.0}, {"input": [15.0, -37.0], "expected": 15.0}, {"input": [15.0, -36.5], "expected": 15.0}, {"input": [15.0, -36.0], "expected": 15.0}, {"input": [15.0, -35.5], "expected": 15.0}, {"input": [15.0, -35.0], "expected": 15.0}, {"input": [15.0, -34.5], "expected": 15.0}, {"input": [15.0, -34.0], "expected": 15.0}, {"input": [15.0, -33.5], "expected": 15.0}, {"input": [15.0, -33.0], "expected": 15.0}, {"input": [15.0, -32.5], "expected": 15.0}, {"input": [15.0, -32.0], "expected": 15.0}, {"input": [15.0, -31.5], "expected": 15.0}, {"input": [15.0, -31.0], "expected": 15.0}, {"input": [15.0, -30.5], "expected": 15.0}, {"input": [15.0, -30.0], "expected": 15.0}, {"input": [15.0, -29.5], "expected": 15.0}, {"input": [15.0, -29.0], "expected": 15.0}, {"input": [15.0, -28.5], "expected": 15.0}, {"input": [15.0, -28.0], "expected": 15.0}, {"input": [15.0, -27.5], "expected": 15.0}, {"input": [15.0, -27.0], "expected": 15.0}, {"input": [15.0, -26.5], "expected": 15.0}, {"input": [15.0, -26.0], "expected": 15.0}, {"input": [15.0, -25.5], "expected": 15.0}, {"input": [15.0, -25.0], "expected": 15.0}, {"input": [15.0, -24.5], "expected": 15.0}, {"input": [15.0, -24.0], "expected": 15.0}, {"input": [15.0, -23.5], "expected": 15.0}, {"input": [15.0, -23.0], "expected": 15.0}, {"input": [15.0, -22.5], "expected": 15.0}, {"input": [15.0, -22.0], "expected": 15.0}, {"input": [15.0, -21.5], "expected": 15.0}, {"input": [15.0, -21.0], "expected": 15.0}, {"input": [15.0, -20.5], "expected": 15.0}, {"input": [15.0, -20.0], "expected": 15.0}, {"input": [15.0, -19.5], "expected": 15.000000000000002}, {"input": [15.0, -19.0], "expected": 15.000000000000002}, {"input": [15.0, -18.5], "expected": 15.000000000000004}, {"input": [15.0, -18.0], "expected": 15.000000000000005}, {"input": [15.0, -17.5], "expected": 15.000000000000007}, {"input": [15.0, -17.0], "expected": 15.000000000000012}, {"input": [15.0, -16.5], "expected": 15.000000000000021}, {"input": [15.0, -16.0], "expected": 15.000000000000034}, {"input": [15.0, -15.5], "expected": 15.000000000000057}, {"input": [15.0, -15.0], "expected": 15.000000000000094}, {"input": [15.0, -14.5], "expected": 15.000000000000155}, {"input": [15.0, -14.0], "expected": 15.000000000000254}, {"input": [15.0, -13.5], "expected": 15.00000000000042}, {"input": [15.0, -13.0], "expected": 15.000000000000691}, {"input": [15.0, -12.5], "expected": 15.00000000000114}, {"input": [15.0, -12.0], "expected": 15.00000000000188}, {"input": [15.0, -11.5], "expected": 15.000000000003098}, {"input": [15.0, -11.0], "expected": 15.000000000005109}, {"input": [15.0, -10.5], "expected": 15.000000000008423}, {"input": [15.0, -10.0], "expected": 15.000000000013888}, {"input": [15.0, -9.5], "expected": 15.000000000022897}, {"input": [15.0, -9.0], "expected": 15.000000000037751}, {"input": [15.0, -8.5], "expected": 15.000000000062242}, {"input": [15.0, -8.0], "expected": 15.000000000102618}, {"input": [15.0, -7.5], "expected": 15.000000000169189}, {"input": [15.0, -7.0], "expected": 15.000000000278947}, {"input": [15.0, -6.5], "expected": 15.000000000459906}, {"input": [15.0, -6.0], "expected": 15.000000000758256}, {"input": [15.0, -5.5], "expected": 15.000000001250152}, {"input": [15.0, -5.0], "expected": 15.000000002061153}, {"input": [15.0, -4.5], "expected": 15.000000003398268}, {"input": [15.0, -4.0], "expected": 15.000000005602796}, {"input": [15.0, -3.5], "expected": 15.00000000923745}, {"input": [15.0, -3.0], "expected": 15.000000015229979}, {"input": [15.0, -2.5], "expected": 15.00000002510999}, {"input": [15.0, -2.0], "expected": 15.000000041399376}, {"input": [15.0, -1.5], "expected": 15.000000068256032}, {"input": [15.0, -1.0], "expected": 15.000000112535169}, {"input": [15.0, -0.5], "expected": 15.000000185539118}, {"input": [15.0, 0.0], "expected": 15.000000305902274}, {"input": [15.0, 0.5], "expected": 15.000000504347536}, {"input": [15.0, 1.0], "expected": 15.000000831528373}, {"input": [15.0, 1.5], "expected": 15.000001370958147}, {"input": [15.0, 2.0], "expected": 15.000002260326852}, {"input": [15.0, 2.5], "expected": 15.000003726646229}, {"input": [15.0, 3.0], "expected": 15.000006144193478}, {"input": [15.0, 3.5], "expected": 15.00001013004229}, {"input": [15.0, 4.0], "expected": 15.000016701561318}, {"input": [15.0, 4.5], "expected": 15.00002753607023}, {"input": [15.0, 5.0], "expected": 15.000045398899218}, {"input": [15.0, 5.5], "expected": 15.000074849028628}, {"input": [15.0, 6.0], "expected": 15.000123402189724}, {"input": [15.0, 6.5], "expected": 15.00020344767213}, {"input": [15.0, 7.0], "expected": 15.000335406372896}, {"input": [15.0, 7.5], "expected": 15.000552931475362}, {"input": [15.0, 8.0], "expected": 15.000911466453774}, {"input": [15.0, 8.5], "expected": 15.001502310159754}, {"input": [15.0, 9.0], "expected": 15.00247568513773}, {"input": [15.0, 9.5], "expected": 15.00407844327057}, {"input": [15.0, 10.0], "expected": 15.006715348489118}, {"input": [15.0, 10.5], "expected": 15.011047744848593}, {"input": [15.0, 11.0], "expected": 15.01814992791781}, {"input": [15.0, 11.5], "expected": 15.02975041827262}, {"input": [15.0, 12.0], "expected": 15.048587351573742}, {"input": [15.0, 12.5], "expected": 15.078889734292549}, {"input": [15.0, 13.0], "expected": 15.126928011042972}, {"input": [15.0, 13.5], "expected": 15.201413277982752}, {"input": [15.0, 14.0], "expected": 15.313261687518223}, {"input": [15.0, 14.5], "expected": 15.474076984180106}, {"input": [15.0, 15.0], "expected": 15.693147180559945}, {"input": [15.0, 15.5], "expected": 15.974076984180106}, {"input": [15.0, 16.0], "expected": 16.313261687518224}, {"input": [15.0, 16.5], "expected": 16.701413277982752}, {"input": [15.0, 17.0], "expected": 17.126928011042974}, {"input": [15.0, 17.5], "expected": 17.57888973429255}, {"input": [15.0, 18.0], "expected": 18.048587351573744}, {"input": [15.0, 18.5], "expected": 18.52975041827262}, {"input": [15.0, 19.0], "expected": 19.01814992791781}, {"input": [15.0, 19.5], "expected": 19.511047744848593}, {"input": [15.0, 20.0], "expected": 20.006715348489116}, {"input": [15.0, 20.5], "expected": 20.504078443270572}, {"input": [15.0, 21.0], "expected": 21.002475685137732}, {"input": [15.0, 21.5], "expected": 21.501502310159754}, {"input": [15.0, 22.0], "expected": 22.000911466453775}, {"input": [15.0, 22.5], "expected": 22.50055293147536}, {"input": [15.0, 23.0], "expected": 23.000335406372894}, {"input": [15.0, 23.5], "expected": 23.500203447672128}, {"input": [15.0, 24.0], "expected": 24.000123402189722}, {"input": [15.0, 24.5], "expected": 24.50007484902863}, {"input": [15.0, 25.0], "expected": 25.000045398899218}, {"input": [15.0, 25.5], "expected": 25.500027536070228}, {"input": [15.0, 26.0], "expected": 26.000016701561318}, {"input": [15.0, 26.5], "expected": 26.50001013004229}, {"input": [15.0, 27.0], "expected": 27.000006144193478}, {"input": [15.0, 27.5], "expected": 27.500003726646227}, {"input": [15.0, 28.0], "expected": 28.000002260326852}, {"input": [15.0, 28.5], "expected": 28.500001370958145}, {"input": [15.0, 29.0], "expected": 29.000000831528375}, {"input": [15.0, 29.5], "expected": 29.500000504347536}, {"input": [15.0, 30.0], "expected": 30.000000305902272}, {"input": [15.0, 30.5], "expected": 30.50000018553912}, {"input": [15.0, 31.0], "expected": 31.00000011253517}, {"input": [15.0, 31.5], "expected": 31.500000068256032}, {"input": [15.0, 32.0], "expected": 32.000000041399375}, {"input": [15.0, 32.5], "expected": 32.50000002510999}, {"input": [15.0, 33.0], "expected": 33.00000001522998}, {"input": [15.0, 33.5], "expected": 33.500000009237446}, {"input": [15.0, 34.0], "expected": 34.00000000560279}, {"input": [15.0, 34.5], "expected": 34.50000000339827}, {"input": [15.0, 35.0], "expected": 35.00000000206116}, {"input": [15.0, 35.5], "expected": 35.50000000125015}, {"input": [15.0, 36.0], "expected": 36.000000000758256}, {"input": [15.0, 36.5], "expected": 36.500000000459906}, {"input": [15.0, 37.0], "expected": 37.000000000278945}, {"input": [15.0, 37.5], "expected": 37.50000000016919}, {"input": [15.0, 38.0], "expected": 38.00000000010262}, {"input": [15.0, 38.5], "expected": 38.50000000006224}, {"input": [15.0, 39.0], "expected": 39.00000000003775}, {"input": [15.0, 39.5], "expected": 39.5000000000229}, {"input": [15.0, 40.0], "expected": 40.00000000001389}, {"input": [15.0, 40.5], "expected": 40.50000000000842}, {"input": [15.0, 41.0], "expected": 41.00000000000511}, {"input": [15.0, 41.5], "expected": 41.5000000000031}, {"input": [15.0, 42.0], "expected": 42.00000000000188}, {"input": [15.0, 42.5], "expected": 42.50000000000114}, {"input": [15.0, 43.0], "expected": 43.00000000000069}, {"input": [15.0, 43.5], "expected": 43.50000000000042}, {"input": [15.0, 44.0], "expected": 44.000000000000256}, {"input": [15.0, 44.5], "expected": 44.500000000000156}, {"input": [15.0, 45.0], "expected": 45.00000000000009}, {"input": [15.0, 45.5], "expected": 45.50000000000006}, {"input": [15.0, 46.0], "expected": 46.000000000000036}, {"input": [15.0, 46.5], "expected": 46.50000000000002}, {"input": [15.0, 47.0], "expected": 47.000000000000014}, {"input": [15.0, 47.5], "expected": 47.50000000000001}, {"input": [15.0, 48.0], "expected": 48.00000000000001}, {"input": [15.0, 48.5], "expected": 48.5}, {"input": [15.0, 49.0], "expected": 49.0}, {"input": [15.0, 49.5], "expected": 49.5}, {"input": [15.0, 50.0], "expected": 50.0}, {"input": [15.0, 50.5], "expected": 50.5}, {"input": [15.0, 51.0], "expected": 51.0}, {"input": [15.0, 51.5], "expected": 51.5}, {"input": [15.0, 52.0], "expected": 52.0}, {"input": [15.0, 52.5], "expected": 52.5}, {"input": [15.0, 53.0], "expected": 53.0}, {"input": [15.0, 53.5], "expected": 53.5}, {"input": [15.0, 54.0], "expected": 54.0}, {"input": [15.0, 54.5], "expected": 54.5}, {"input": [15.0, 55.0], "expected": 55.0}, {"input": [15.0, 55.5], "expected": 55.5}, {"input": [15.0, 56.0], "expected": 56.0}, {"input": [15.0, 56.5], "expected": 56.5}, {"input": [15.0, 57.0], "expected": 57.0}, {"input": [15.0, 57.5], "expected": 57.5}, {"input": [15.0, 58.0], "expected": 58.0}, {"input": [15.0, 58.5], "expected": 58.5}, {"input": [15.0, 59.0], "expected": 59.0}, {"input": [15.0, 59.5], "expected": 59.5}, {"input": [15.0, 60.0], "expected": 60.0}, {"input": [15.0, 60.5], "expected": 60.5}, {"input": [15.0, 61.0], "expected": 61.0}, {"input": [15.0, 61.5], "expected": 61.5}, {"input": [15.0, 62.0], "expected": 62.0}, {"input": [15.0, 62.5], "expected": 62.5}, {"input": [15.0, 63.0], "expected": 63.0}, {"input": [15.0, 63.5], "expected": 63.5}, {"input": [15.0, 64.0], "expected": 64.0}, {"input": [15.0, 64.5], "expected": 64.5}, {"input": [15.0, 65.0], "expected": 65.0}, {"input": [15.0, 65.5], "expected": 65.5}, {"input": [15.0, 66.0], "expected": 66.0}, {"input": [15.0, 66.5], "expected": 66.5}, {"input": [15.0, 67.0], "expected": 67.0}, {"input": [15.0, 67.5], "expected": 67.5}, {"input": [15.0, 68.0], "expected": 68.0}, {"input": [15.0, 68.5], "expected": 68.5}, {"input": [15.0, 69.0], "expected": 69.0}, {"input": [15.0, 69.5], "expected": 69.5}, {"input": [15.0, 70.0], "expected": 70.0}, {"input": [15.0, 70.5], "expected": 70.5}, {"input": [15.0, 71.0], "expected": 71.0}, {"input": [15.0, 71.5], "expected": 71.5}, {"input": [15.0, 72.0], "expected": 72.0}, {"input": [15.0, 72.5], "expected": 72.5}, {"input": [15.0, 73.0], "expected": 73.0}, {"input": [15.0, 73.5], "expected": 73.5}, {"input": [15.0, 74.0], "expected": 74.0}, {"input": [15.0, 74.5], "expected": 74.5}, {"input": [15.0, 75.0], "expected": 75.0}, {"input": [15.0, 75.5], "expected": 75.5}, {"input": [15.0, 76.0], "expected": 76.0}, {"input": [15.0, 76.5], "expected": 76.5}, {"input": [15.0, 77.0], "expected": 77.0}, {"input": [15.0, 77.5], "expected": 77.5}, {"input": [15.0, 78.0], "expected": 78.0}, {"input": [15.0, 78.5], "expected": 78.5}, {"input": [15.0, 79.0], "expected": 79.0}, {"input": [15.0, 79.5], "expected": 79.5}, {"input": [15.0, 80.0], "expected": 80.0}, {"input": [15.0, 80.5], "expected": 80.5}, {"input": [15.0, 81.0], "expected": 81.0}, {"input": [15.0, 81.5], "expected": 81.5}, {"input": [15.0, 82.0], "expected": 82.0}, {"input": [15.0, 82.5], "expected": 82.5}, {"input": [15.0, 83.0], "expected": 83.0}, {"input": [15.0, 83.5], "expected": 83.5}, {"input": [15.0, 84.0], "expected": 84.0}, {"input": [15.0, 84.5], "expected": 84.5}, {"input": [15.0, 85.0], "expected": 85.0}, {"input": [15.0, 85.5], "expected": 85.5}, {"input": [15.0, 86.0], "expected": 86.0}, {"input": [15.0, 86.5], "expected": 86.5}, {"input": [15.0, 87.0], "expected": 87.0}, {"input": [15.0, 87.5], "expected": 87.5}, {"input": [15.0, 88.0], "expected": 88.0}, {"input": [15.0, 88.5], "expected": 88.5}, {"input": [15.0, 89.0], "expected": 89.0}, {"input": [15.0, 89.5], "expected": 89.5}, {"input": [15.0, 90.0], "expected": 90.0}, {"input": [15.0, 90.5], "expected": 90.5}, {"input": [15.0, 91.0], "expected": 91.0}, {"input": [15.0, 91.5], "expected": 91.5}, {"input": [15.0, 92.0], "expected": 92.0}, {"input": [15.0, 92.5], "expected": 92.5}, {"input": [15.0, 93.0], "expected": 93.0}, {"input": [15.0, 93.5], "expected": 93.5}, {"input": [15.0, 94.0], "expected": 94.0}, {"input": [15.0, 94.5], "expected": 94.5}, {"input": [15.0, 95.0], "expected": 95.0}, {"input": [15.0, 95.5], "expected": 95.5}, {"input": [15.0, 96.0], "expected": 96.0}, {"input": [15.0, 96.5], "expected": 96.5}, {"input": [15.0, 97.0], "expected": 97.0}, {"input": [15.0, 97.5], "expected": 97.5}, {"input": [15.0, 98.0], "expected": 98.0}, {"input": [15.0, 98.5], "expected": 98.5}, {"input": [15.0, 99.0], "expected": 99.0}, {"input": [15.0, 99.5], "expected": 99.5}, {"input": [15.5, -100.0], "expected": 15.5}, {"input": [15.5, -99.5], "expected": 15.5}, {"input": [15.5, -99.0], "expected": 15.5}, {"input": [15.5, -98.5], "expected": 15.5}, {"input": [15.5, -98.0], "expected": 15.5}, {"input": [15.5, -97.5], "expected": 15.5}, {"input": [15.5, -97.0], "expected": 15.5}, {"input": [15.5, -96.5], "expected": 15.5}, {"input": [15.5, -96.0], "expected": 15.5}, {"input": [15.5, -95.5], "expected": 15.5}, {"input": [15.5, -95.0], "expected": 15.5}, {"input": [15.5, -94.5], "expected": 15.5}, {"input": [15.5, -94.0], "expected": 15.5}, {"input": [15.5, -93.5], "expected": 15.5}, {"input": [15.5, -93.0], "expected": 15.5}, {"input": [15.5, -92.5], "expected": 15.5}, {"input": [15.5, -92.0], "expected": 15.5}, {"input": [15.5, -91.5], "expected": 15.5}, {"input": [15.5, -91.0], "expected": 15.5}, {"input": [15.5, -90.5], "expected": 15.5}, {"input": [15.5, -90.0], "expected": 15.5}, {"input": [15.5, -89.5], "expected": 15.5}, {"input": [15.5, -89.0], "expected": 15.5}, {"input": [15.5, -88.5], "expected": 15.5}, {"input": [15.5, -88.0], "expected": 15.5}, {"input": [15.5, -87.5], "expected": 15.5}, {"input": [15.5, -87.0], "expected": 15.5}, {"input": [15.5, -86.5], "expected": 15.5}, {"input": [15.5, -86.0], "expected": 15.5}, {"input": [15.5, -85.5], "expected": 15.5}, {"input": [15.5, -85.0], "expected": 15.5}, {"input": [15.5, -84.5], "expected": 15.5}, {"input": [15.5, -84.0], "expected": 15.5}, {"input": [15.5, -83.5], "expected": 15.5}, {"input": [15.5, -83.0], "expected": 15.5}, {"input": [15.5, -82.5], "expected": 15.5}, {"input": [15.5, -82.0], "expected": 15.5}, {"input": [15.5, -81.5], "expected": 15.5}, {"input": [15.5, -81.0], "expected": 15.5}, {"input": [15.5, -80.5], "expected": 15.5}, {"input": [15.5, -80.0], "expected": 15.5}, {"input": [15.5, -79.5], "expected": 15.5}, {"input": [15.5, -79.0], "expected": 15.5}, {"input": [15.5, -78.5], "expected": 15.5}, {"input": [15.5, -78.0], "expected": 15.5}, {"input": [15.5, -77.5], "expected": 15.5}, {"input": [15.5, -77.0], "expected": 15.5}, {"input": [15.5, -76.5], "expected": 15.5}, {"input": [15.5, -76.0], "expected": 15.5}, {"input": [15.5, -75.5], "expected": 15.5}, {"input": [15.5, -75.0], "expected": 15.5}, {"input": [15.5, -74.5], "expected": 15.5}, {"input": [15.5, -74.0], "expected": 15.5}, {"input": [15.5, -73.5], "expected": 15.5}, {"input": [15.5, -73.0], "expected": 15.5}, {"input": [15.5, -72.5], "expected": 15.5}, {"input": [15.5, -72.0], "expected": 15.5}, {"input": [15.5, -71.5], "expected": 15.5}, {"input": [15.5, -71.0], "expected": 15.5}, {"input": [15.5, -70.5], "expected": 15.5}, {"input": [15.5, -70.0], "expected": 15.5}, {"input": [15.5, -69.5], "expected": 15.5}, {"input": [15.5, -69.0], "expected": 15.5}, {"input": [15.5, -68.5], "expected": 15.5}, {"input": [15.5, -68.0], "expected": 15.5}, {"input": [15.5, -67.5], "expected": 15.5}, {"input": [15.5, -67.0], "expected": 15.5}, {"input": [15.5, -66.5], "expected": 15.5}, {"input": [15.5, -66.0], "expected": 15.5}, {"input": [15.5, -65.5], "expected": 15.5}, {"input": [15.5, -65.0], "expected": 15.5}, {"input": [15.5, -64.5], "expected": 15.5}, {"input": [15.5, -64.0], "expected": 15.5}, {"input": [15.5, -63.5], "expected": 15.5}, {"input": [15.5, -63.0], "expected": 15.5}, {"input": [15.5, -62.5], "expected": 15.5}, {"input": [15.5, -62.0], "expected": 15.5}, {"input": [15.5, -61.5], "expected": 15.5}, {"input": [15.5, -61.0], "expected": 15.5}, {"input": [15.5, -60.5], "expected": 15.5}, {"input": [15.5, -60.0], "expected": 15.5}, {"input": [15.5, -59.5], "expected": 15.5}, {"input": [15.5, -59.0], "expected": 15.5}, {"input": [15.5, -58.5], "expected": 15.5}, {"input": [15.5, -58.0], "expected": 15.5}, {"input": [15.5, -57.5], "expected": 15.5}, {"input": [15.5, -57.0], "expected": 15.5}, {"input": [15.5, -56.5], "expected": 15.5}, {"input": [15.5, -56.0], "expected": 15.5}, {"input": [15.5, -55.5], "expected": 15.5}, {"input": [15.5, -55.0], "expected": 15.5}, {"input": [15.5, -54.5], "expected": 15.5}, {"input": [15.5, -54.0], "expected": 15.5}, {"input": [15.5, -53.5], "expected": 15.5}, {"input": [15.5, -53.0], "expected": 15.5}, {"input": [15.5, -52.5], "expected": 15.5}, {"input": [15.5, -52.0], "expected": 15.5}, {"input": [15.5, -51.5], "expected": 15.5}, {"input": [15.5, -51.0], "expected": 15.5}, {"input": [15.5, -50.5], "expected": 15.5}, {"input": [15.5, -50.0], "expected": 15.5}, {"input": [15.5, -49.5], "expected": 15.5}, {"input": [15.5, -49.0], "expected": 15.5}, {"input": [15.5, -48.5], "expected": 15.5}, {"input": [15.5, -48.0], "expected": 15.5}, {"input": [15.5, -47.5], "expected": 15.5}, {"input": [15.5, -47.0], "expected": 15.5}, {"input": [15.5, -46.5], "expected": 15.5}, {"input": [15.5, -46.0], "expected": 15.5}, {"input": [15.5, -45.5], "expected": 15.5}, {"input": [15.5, -45.0], "expected": 15.5}, {"input": [15.5, -44.5], "expected": 15.5}, {"input": [15.5, -44.0], "expected": 15.5}, {"input": [15.5, -43.5], "expected": 15.5}, {"input": [15.5, -43.0], "expected": 15.5}, {"input": [15.5, -42.5], "expected": 15.5}, {"input": [15.5, -42.0], "expected": 15.5}, {"input": [15.5, -41.5], "expected": 15.5}, {"input": [15.5, -41.0], "expected": 15.5}, {"input": [15.5, -40.5], "expected": 15.5}, {"input": [15.5, -40.0], "expected": 15.5}, {"input": [15.5, -39.5], "expected": 15.5}, {"input": [15.5, -39.0], "expected": 15.5}, {"input": [15.5, -38.5], "expected": 15.5}, {"input": [15.5, -38.0], "expected": 15.5}, {"input": [15.5, -37.5], "expected": 15.5}, {"input": [15.5, -37.0], "expected": 15.5}, {"input": [15.5, -36.5], "expected": 15.5}, {"input": [15.5, -36.0], "expected": 15.5}, {"input": [15.5, -35.5], "expected": 15.5}, {"input": [15.5, -35.0], "expected": 15.5}, {"input": [15.5, -34.5], "expected": 15.5}, {"input": [15.5, -34.0], "expected": 15.5}, {"input": [15.5, -33.5], "expected": 15.5}, {"input": [15.5, -33.0], "expected": 15.5}, {"input": [15.5, -32.5], "expected": 15.5}, {"input": [15.5, -32.0], "expected": 15.5}, {"input": [15.5, -31.5], "expected": 15.5}, {"input": [15.5, -31.0], "expected": 15.5}, {"input": [15.5, -30.5], "expected": 15.5}, {"input": [15.5, -30.0], "expected": 15.5}, {"input": [15.5, -29.5], "expected": 15.5}, {"input": [15.5, -29.0], "expected": 15.5}, {"input": [15.5, -28.5], "expected": 15.5}, {"input": [15.5, -28.0], "expected": 15.5}, {"input": [15.5, -27.5], "expected": 15.5}, {"input": [15.5, -27.0], "expected": 15.5}, {"input": [15.5, -26.5], "expected": 15.5}, {"input": [15.5, -26.0], "expected": 15.5}, {"input": [15.5, -25.5], "expected": 15.5}, {"input": [15.5, -25.0], "expected": 15.5}, {"input": [15.5, -24.5], "expected": 15.5}, {"input": [15.5, -24.0], "expected": 15.5}, {"input": [15.5, -23.5], "expected": 15.5}, {"input": [15.5, -23.0], "expected": 15.5}, {"input": [15.5, -22.5], "expected": 15.5}, {"input": [15.5, -22.0], "expected": 15.5}, {"input": [15.5, -21.5], "expected": 15.5}, {"input": [15.5, -21.0], "expected": 15.5}, {"input": [15.5, -20.5], "expected": 15.5}, {"input": [15.5, -20.0], "expected": 15.5}, {"input": [15.5, -19.5], "expected": 15.5}, {"input": [15.5, -19.0], "expected": 15.500000000000002}, {"input": [15.5, -18.5], "expected": 15.500000000000002}, {"input": [15.5, -18.0], "expected": 15.500000000000004}, {"input": [15.5, -17.5], "expected": 15.500000000000005}, {"input": [15.5, -17.0], "expected": 15.500000000000007}, {"input": [15.5, -16.5], "expected": 15.500000000000012}, {"input": [15.5, -16.0], "expected": 15.500000000000021}, {"input": [15.5, -15.5], "expected": 15.500000000000034}, {"input": [15.5, -15.0], "expected": 15.500000000000057}, {"input": [15.5, -14.5], "expected": 15.500000000000094}, {"input": [15.5, -14.0], "expected": 15.500000000000155}, {"input": [15.5, -13.5], "expected": 15.500000000000254}, {"input": [15.5, -13.0], "expected": 15.50000000000042}, {"input": [15.5, -12.5], "expected": 15.500000000000691}, {"input": [15.5, -12.0], "expected": 15.50000000000114}, {"input": [15.5, -11.5], "expected": 15.50000000000188}, {"input": [15.5, -11.0], "expected": 15.500000000003098}, {"input": [15.5, -10.5], "expected": 15.500000000005109}, {"input": [15.5, -10.0], "expected": 15.500000000008423}, {"input": [15.5, -9.5], "expected": 15.500000000013888}, {"input": [15.5, -9.0], "expected": 15.500000000022897}, {"input": [15.5, -8.5], "expected": 15.500000000037751}, {"input": [15.5, -8.0], "expected": 15.500000000062242}, {"input": [15.5, -7.5], "expected": 15.500000000102618}, {"input": [15.5, -7.0], "expected": 15.500000000169189}, {"input": [15.5, -6.5], "expected": 15.500000000278947}, {"input": [15.5, -6.0], "expected": 15.500000000459906}, {"input": [15.5, -5.5], "expected": 15.500000000758256}, {"input": [15.5, -5.0], "expected": 15.500000001250152}, {"input": [15.5, -4.5], "expected": 15.500000002061153}, {"input": [15.5, -4.0], "expected": 15.500000003398268}, {"input": [15.5, -3.5], "expected": 15.500000005602796}, {"input": [15.5, -3.0], "expected": 15.50000000923745}, {"input": [15.5, -2.5], "expected": 15.500000015229979}, {"input": [15.5, -2.0], "expected": 15.50000002510999}, {"input": [15.5, -1.5], "expected": 15.500000041399376}, {"input": [15.5, -1.0], "expected": 15.500000068256032}, {"input": [15.5, -0.5], "expected": 15.500000112535169}, {"input": [15.5, 0.0], "expected": 15.500000185539118}, {"input": [15.5, 0.5], "expected": 15.500000305902274}, {"input": [15.5, 1.0], "expected": 15.500000504347536}, {"input": [15.5, 1.5], "expected": 15.500000831528373}, {"input": [15.5, 2.0], "expected": 15.500001370958147}, {"input": [15.5, 2.5], "expected": 15.500002260326852}, {"input": [15.5, 3.0], "expected": 15.500003726646229}, {"input": [15.5, 3.5], "expected": 15.500006144193478}, {"input": [15.5, 4.0], "expected": 15.50001013004229}, {"input": [15.5, 4.5], "expected": 15.500016701561318}, {"input": [15.5, 5.0], "expected": 15.50002753607023}, {"input": [15.5, 5.5], "expected": 15.500045398899218}, {"input": [15.5, 6.0], "expected": 15.500074849028628}, {"input": [15.5, 6.5], "expected": 15.500123402189724}, {"input": [15.5, 7.0], "expected": 15.50020344767213}, {"input": [15.5, 7.5], "expected": 15.500335406372896}, {"input": [15.5, 8.0], "expected": 15.500552931475362}, {"input": [15.5, 8.5], "expected": 15.500911466453774}, {"input": [15.5, 9.0], "expected": 15.501502310159754}, {"input": [15.5, 9.5], "expected": 15.50247568513773}, {"input": [15.5, 10.0], "expected": 15.50407844327057}, {"input": [15.5, 10.5], "expected": 15.506715348489118}, {"input": [15.5, 11.0], "expected": 15.511047744848593}, {"input": [15.5, 11.5], "expected": 15.51814992791781}, {"input": [15.5, 12.0], "expected": 15.52975041827262}, {"input": [15.5, 12.5], "expected": 15.548587351573742}, {"input": [15.5, 13.0], "expected": 15.578889734292549}, {"input": [15.5, 13.5], "expected": 15.626928011042972}, {"input": [15.5, 14.0], "expected": 15.701413277982752}, {"input": [15.5, 14.5], "expected": 15.813261687518223}, {"input": [15.5, 15.0], "expected": 15.974076984180106}, {"input": [15.5, 15.5], "expected": 16.193147180559944}, {"input": [15.5, 16.0], "expected": 16.47407698418011}, {"input": [15.5, 16.5], "expected": 16.813261687518224}, {"input": [15.5, 17.0], "expected": 17.201413277982752}, {"input": [15.5, 17.5], "expected": 17.626928011042974}, {"input": [15.5, 18.0], "expected": 18.07888973429255}, {"input": [15.5, 18.5], "expected": 18.548587351573744}, {"input": [15.5, 19.0], "expected": 19.02975041827262}, {"input": [15.5, 19.5], "expected": 19.51814992791781}, {"input": [15.5, 20.0], "expected": 20.011047744848593}, {"input": [15.5, 20.5], "expected": 20.506715348489116}, {"input": [15.5, 21.0], "expected": 21.004078443270572}, {"input": [15.5, 21.5], "expected": 21.502475685137732}, {"input": [15.5, 22.0], "expected": 22.001502310159754}, {"input": [15.5, 22.5], "expected": 22.500911466453775}, {"input": [15.5, 23.0], "expected": 23.00055293147536}, {"input": [15.5, 23.5], "expected": 23.500335406372894}, {"input": [15.5, 24.0], "expected": 24.000203447672128}, {"input": [15.5, 24.5], "expected": 24.500123402189722}, {"input": [15.5, 25.0], "expected": 25.00007484902863}, {"input": [15.5, 25.5], "expected": 25.500045398899218}, {"input": [15.5, 26.0], "expected": 26.000027536070228}, {"input": [15.5, 26.5], "expected": 26.500016701561318}, {"input": [15.5, 27.0], "expected": 27.00001013004229}, {"input": [15.5, 27.5], "expected": 27.500006144193478}, {"input": [15.5, 28.0], "expected": 28.000003726646227}, {"input": [15.5, 28.5], "expected": 28.500002260326852}, {"input": [15.5, 29.0], "expected": 29.000001370958145}, {"input": [15.5, 29.5], "expected": 29.500000831528375}, {"input": [15.5, 30.0], "expected": 30.000000504347536}, {"input": [15.5, 30.5], "expected": 30.500000305902272}, {"input": [15.5, 31.0], "expected": 31.00000018553912}, {"input": [15.5, 31.5], "expected": 31.50000011253517}, {"input": [15.5, 32.0], "expected": 32.00000006825603}, {"input": [15.5, 32.5], "expected": 32.500000041399375}, {"input": [15.5, 33.0], "expected": 33.00000002510999}, {"input": [15.5, 33.5], "expected": 33.50000001522998}, {"input": [15.5, 34.0], "expected": 34.000000009237446}, {"input": [15.5, 34.5], "expected": 34.50000000560279}, {"input": [15.5, 35.0], "expected": 35.00000000339827}, {"input": [15.5, 35.5], "expected": 35.50000000206116}, {"input": [15.5, 36.0], "expected": 36.00000000125015}, {"input": [15.5, 36.5], "expected": 36.500000000758256}, {"input": [15.5, 37.0], "expected": 37.000000000459906}, {"input": [15.5, 37.5], "expected": 37.500000000278945}, {"input": [15.5, 38.0], "expected": 38.00000000016919}, {"input": [15.5, 38.5], "expected": 38.50000000010262}, {"input": [15.5, 39.0], "expected": 39.00000000006224}, {"input": [15.5, 39.5], "expected": 39.50000000003775}, {"input": [15.5, 40.0], "expected": 40.0000000000229}, {"input": [15.5, 40.5], "expected": 40.50000000001389}, {"input": [15.5, 41.0], "expected": 41.00000000000842}, {"input": [15.5, 41.5], "expected": 41.50000000000511}, {"input": [15.5, 42.0], "expected": 42.0000000000031}, {"input": [15.5, 42.5], "expected": 42.50000000000188}, {"input": [15.5, 43.0], "expected": 43.00000000000114}, {"input": [15.5, 43.5], "expected": 43.50000000000069}, {"input": [15.5, 44.0], "expected": 44.00000000000042}, {"input": [15.5, 44.5], "expected": 44.500000000000256}, {"input": [15.5, 45.0], "expected": 45.000000000000156}, {"input": [15.5, 45.5], "expected": 45.50000000000009}, {"input": [15.5, 46.0], "expected": 46.00000000000006}, {"input": [15.5, 46.5], "expected": 46.500000000000036}, {"input": [15.5, 47.0], "expected": 47.00000000000002}, {"input": [15.5, 47.5], "expected": 47.500000000000014}, {"input": [15.5, 48.0], "expected": 48.00000000000001}, {"input": [15.5, 48.5], "expected": 48.50000000000001}, {"input": [15.5, 49.0], "expected": 49.0}, {"input": [15.5, 49.5], "expected": 49.5}, {"input": [15.5, 50.0], "expected": 50.0}, {"input": [15.5, 50.5], "expected": 50.5}, {"input": [15.5, 51.0], "expected": 51.0}, {"input": [15.5, 51.5], "expected": 51.5}, {"input": [15.5, 52.0], "expected": 52.0}, {"input": [15.5, 52.5], "expected": 52.5}, {"input": [15.5, 53.0], "expected": 53.0}, {"input": [15.5, 53.5], "expected": 53.5}, {"input": [15.5, 54.0], "expected": 54.0}, {"input": [15.5, 54.5], "expected": 54.5}, {"input": [15.5, 55.0], "expected": 55.0}, {"input": [15.5, 55.5], "expected": 55.5}, {"input": [15.5, 56.0], "expected": 56.0}, {"input": [15.5, 56.5], "expected": 56.5}, {"input": [15.5, 57.0], "expected": 57.0}, {"input": [15.5, 57.5], "expected": 57.5}, {"input": [15.5, 58.0], "expected": 58.0}, {"input": [15.5, 58.5], "expected": 58.5}, {"input": [15.5, 59.0], "expected": 59.0}, {"input": [15.5, 59.5], "expected": 59.5}, {"input": [15.5, 60.0], "expected": 60.0}, {"input": [15.5, 60.5], "expected": 60.5}, {"input": [15.5, 61.0], "expected": 61.0}, {"input": [15.5, 61.5], "expected": 61.5}, {"input": [15.5, 62.0], "expected": 62.0}, {"input": [15.5, 62.5], "expected": 62.5}, {"input": [15.5, 63.0], "expected": 63.0}, {"input": [15.5, 63.5], "expected": 63.5}, {"input": [15.5, 64.0], "expected": 64.0}, {"input": [15.5, 64.5], "expected": 64.5}, {"input": [15.5, 65.0], "expected": 65.0}, {"input": [15.5, 65.5], "expected": 65.5}, {"input": [15.5, 66.0], "expected": 66.0}, {"input": [15.5, 66.5], "expected": 66.5}, {"input": [15.5, 67.0], "expected": 67.0}, {"input": [15.5, 67.5], "expected": 67.5}, {"input": [15.5, 68.0], "expected": 68.0}, {"input": [15.5, 68.5], "expected": 68.5}, {"input": [15.5, 69.0], "expected": 69.0}, {"input": [15.5, 69.5], "expected": 69.5}, {"input": [15.5, 70.0], "expected": 70.0}, {"input": [15.5, 70.5], "expected": 70.5}, {"input": [15.5, 71.0], "expected": 71.0}, {"input": [15.5, 71.5], "expected": 71.5}, {"input": [15.5, 72.0], "expected": 72.0}, {"input": [15.5, 72.5], "expected": 72.5}, {"input": [15.5, 73.0], "expected": 73.0}, {"input": [15.5, 73.5], "expected": 73.5}, {"input": [15.5, 74.0], "expected": 74.0}, {"input": [15.5, 74.5], "expected": 74.5}, {"input": [15.5, 75.0], "expected": 75.0}, {"input": [15.5, 75.5], "expected": 75.5}, {"input": [15.5, 76.0], "expected": 76.0}, {"input": [15.5, 76.5], "expected": 76.5}, {"input": [15.5, 77.0], "expected": 77.0}, {"input": [15.5, 77.5], "expected": 77.5}, {"input": [15.5, 78.0], "expected": 78.0}, {"input": [15.5, 78.5], "expected": 78.5}, {"input": [15.5, 79.0], "expected": 79.0}, {"input": [15.5, 79.5], "expected": 79.5}, {"input": [15.5, 80.0], "expected": 80.0}, {"input": [15.5, 80.5], "expected": 80.5}, {"input": [15.5, 81.0], "expected": 81.0}, {"input": [15.5, 81.5], "expected": 81.5}, {"input": [15.5, 82.0], "expected": 82.0}, {"input": [15.5, 82.5], "expected": 82.5}, {"input": [15.5, 83.0], "expected": 83.0}, {"input": [15.5, 83.5], "expected": 83.5}, {"input": [15.5, 84.0], "expected": 84.0}, {"input": [15.5, 84.5], "expected": 84.5}, {"input": [15.5, 85.0], "expected": 85.0}, {"input": [15.5, 85.5], "expected": 85.5}, {"input": [15.5, 86.0], "expected": 86.0}, {"input": [15.5, 86.5], "expected": 86.5}, {"input": [15.5, 87.0], "expected": 87.0}, {"input": [15.5, 87.5], "expected": 87.5}, {"input": [15.5, 88.0], "expected": 88.0}, {"input": [15.5, 88.5], "expected": 88.5}, {"input": [15.5, 89.0], "expected": 89.0}, {"input": [15.5, 89.5], "expected": 89.5}, {"input": [15.5, 90.0], "expected": 90.0}, {"input": [15.5, 90.5], "expected": 90.5}, {"input": [15.5, 91.0], "expected": 91.0}, {"input": [15.5, 91.5], "expected": 91.5}, {"input": [15.5, 92.0], "expected": 92.0}, {"input": [15.5, 92.5], "expected": 92.5}, {"input": [15.5, 93.0], "expected": 93.0}, {"input": [15.5, 93.5], "expected": 93.5}, {"input": [15.5, 94.0], "expected": 94.0}, {"input": [15.5, 94.5], "expected": 94.5}, {"input": [15.5, 95.0], "expected": 95.0}, {"input": [15.5, 95.5], "expected": 95.5}, {"input": [15.5, 96.0], "expected": 96.0}, {"input": [15.5, 96.5], "expected": 96.5}, {"input": [15.5, 97.0], "expected": 97.0}, {"input": [15.5, 97.5], "expected": 97.5}, {"input": [15.5, 98.0], "expected": 98.0}, {"input": [15.5, 98.5], "expected": 98.5}, {"input": [15.5, 99.0], "expected": 99.0}, {"input": [15.5, 99.5], "expected": 99.5}, {"input": [16.0, -100.0], "expected": 16.0}, {"input": [16.0, -99.5], "expected": 16.0}, {"input": [16.0, -99.0], "expected": 16.0}, {"input": [16.0, -98.5], "expected": 16.0}, {"input": [16.0, -98.0], "expected": 16.0}, {"input": [16.0, -97.5], "expected": 16.0}, {"input": [16.0, -97.0], "expected": 16.0}, {"input": [16.0, -96.5], "expected": 16.0}, {"input": [16.0, -96.0], "expected": 16.0}, {"input": [16.0, -95.5], "expected": 16.0}, {"input": [16.0, -95.0], "expected": 16.0}, {"input": [16.0, -94.5], "expected": 16.0}, {"input": [16.0, -94.0], "expected": 16.0}, {"input": [16.0, -93.5], "expected": 16.0}, {"input": [16.0, -93.0], "expected": 16.0}, {"input": [16.0, -92.5], "expected": 16.0}, {"input": [16.0, -92.0], "expected": 16.0}, {"input": [16.0, -91.5], "expected": 16.0}, {"input": [16.0, -91.0], "expected": 16.0}, {"input": [16.0, -90.5], "expected": 16.0}, {"input": [16.0, -90.0], "expected": 16.0}, {"input": [16.0, -89.5], "expected": 16.0}, {"input": [16.0, -89.0], "expected": 16.0}, {"input": [16.0, -88.5], "expected": 16.0}, {"input": [16.0, -88.0], "expected": 16.0}, {"input": [16.0, -87.5], "expected": 16.0}, {"input": [16.0, -87.0], "expected": 16.0}, {"input": [16.0, -86.5], "expected": 16.0}, {"input": [16.0, -86.0], "expected": 16.0}, {"input": [16.0, -85.5], "expected": 16.0}, {"input": [16.0, -85.0], "expected": 16.0}, {"input": [16.0, -84.5], "expected": 16.0}, {"input": [16.0, -84.0], "expected": 16.0}, {"input": [16.0, -83.5], "expected": 16.0}, {"input": [16.0, -83.0], "expected": 16.0}, {"input": [16.0, -82.5], "expected": 16.0}, {"input": [16.0, -82.0], "expected": 16.0}, {"input": [16.0, -81.5], "expected": 16.0}, {"input": [16.0, -81.0], "expected": 16.0}, {"input": [16.0, -80.5], "expected": 16.0}, {"input": [16.0, -80.0], "expected": 16.0}, {"input": [16.0, -79.5], "expected": 16.0}, {"input": [16.0, -79.0], "expected": 16.0}, {"input": [16.0, -78.5], "expected": 16.0}, {"input": [16.0, -78.0], "expected": 16.0}, {"input": [16.0, -77.5], "expected": 16.0}, {"input": [16.0, -77.0], "expected": 16.0}, {"input": [16.0, -76.5], "expected": 16.0}, {"input": [16.0, -76.0], "expected": 16.0}, {"input": [16.0, -75.5], "expected": 16.0}, {"input": [16.0, -75.0], "expected": 16.0}, {"input": [16.0, -74.5], "expected": 16.0}, {"input": [16.0, -74.0], "expected": 16.0}, {"input": [16.0, -73.5], "expected": 16.0}, {"input": [16.0, -73.0], "expected": 16.0}, {"input": [16.0, -72.5], "expected": 16.0}, {"input": [16.0, -72.0], "expected": 16.0}, {"input": [16.0, -71.5], "expected": 16.0}, {"input": [16.0, -71.0], "expected": 16.0}, {"input": [16.0, -70.5], "expected": 16.0}, {"input": [16.0, -70.0], "expected": 16.0}, {"input": [16.0, -69.5], "expected": 16.0}, {"input": [16.0, -69.0], "expected": 16.0}, {"input": [16.0, -68.5], "expected": 16.0}, {"input": [16.0, -68.0], "expected": 16.0}, {"input": [16.0, -67.5], "expected": 16.0}, {"input": [16.0, -67.0], "expected": 16.0}, {"input": [16.0, -66.5], "expected": 16.0}, {"input": [16.0, -66.0], "expected": 16.0}, {"input": [16.0, -65.5], "expected": 16.0}, {"input": [16.0, -65.0], "expected": 16.0}, {"input": [16.0, -64.5], "expected": 16.0}, {"input": [16.0, -64.0], "expected": 16.0}, {"input": [16.0, -63.5], "expected": 16.0}, {"input": [16.0, -63.0], "expected": 16.0}, {"input": [16.0, -62.5], "expected": 16.0}, {"input": [16.0, -62.0], "expected": 16.0}, {"input": [16.0, -61.5], "expected": 16.0}, {"input": [16.0, -61.0], "expected": 16.0}, {"input": [16.0, -60.5], "expected": 16.0}, {"input": [16.0, -60.0], "expected": 16.0}, {"input": [16.0, -59.5], "expected": 16.0}, {"input": [16.0, -59.0], "expected": 16.0}, {"input": [16.0, -58.5], "expected": 16.0}, {"input": [16.0, -58.0], "expected": 16.0}, {"input": [16.0, -57.5], "expected": 16.0}, {"input": [16.0, -57.0], "expected": 16.0}, {"input": [16.0, -56.5], "expected": 16.0}, {"input": [16.0, -56.0], "expected": 16.0}, {"input": [16.0, -55.5], "expected": 16.0}, {"input": [16.0, -55.0], "expected": 16.0}, {"input": [16.0, -54.5], "expected": 16.0}, {"input": [16.0, -54.0], "expected": 16.0}, {"input": [16.0, -53.5], "expected": 16.0}, {"input": [16.0, -53.0], "expected": 16.0}, {"input": [16.0, -52.5], "expected": 16.0}, {"input": [16.0, -52.0], "expected": 16.0}, {"input": [16.0, -51.5], "expected": 16.0}, {"input": [16.0, -51.0], "expected": 16.0}, {"input": [16.0, -50.5], "expected": 16.0}, {"input": [16.0, -50.0], "expected": 16.0}, {"input": [16.0, -49.5], "expected": 16.0}, {"input": [16.0, -49.0], "expected": 16.0}, {"input": [16.0, -48.5], "expected": 16.0}, {"input": [16.0, -48.0], "expected": 16.0}, {"input": [16.0, -47.5], "expected": 16.0}, {"input": [16.0, -47.0], "expected": 16.0}, {"input": [16.0, -46.5], "expected": 16.0}, {"input": [16.0, -46.0], "expected": 16.0}, {"input": [16.0, -45.5], "expected": 16.0}, {"input": [16.0, -45.0], "expected": 16.0}, {"input": [16.0, -44.5], "expected": 16.0}, {"input": [16.0, -44.0], "expected": 16.0}, {"input": [16.0, -43.5], "expected": 16.0}, {"input": [16.0, -43.0], "expected": 16.0}, {"input": [16.0, -42.5], "expected": 16.0}, {"input": [16.0, -42.0], "expected": 16.0}, {"input": [16.0, -41.5], "expected": 16.0}, {"input": [16.0, -41.0], "expected": 16.0}, {"input": [16.0, -40.5], "expected": 16.0}, {"input": [16.0, -40.0], "expected": 16.0}, {"input": [16.0, -39.5], "expected": 16.0}, {"input": [16.0, -39.0], "expected": 16.0}, {"input": [16.0, -38.5], "expected": 16.0}, {"input": [16.0, -38.0], "expected": 16.0}, {"input": [16.0, -37.5], "expected": 16.0}, {"input": [16.0, -37.0], "expected": 16.0}, {"input": [16.0, -36.5], "expected": 16.0}, {"input": [16.0, -36.0], "expected": 16.0}, {"input": [16.0, -35.5], "expected": 16.0}, {"input": [16.0, -35.0], "expected": 16.0}, {"input": [16.0, -34.5], "expected": 16.0}, {"input": [16.0, -34.0], "expected": 16.0}, {"input": [16.0, -33.5], "expected": 16.0}, {"input": [16.0, -33.0], "expected": 16.0}, {"input": [16.0, -32.5], "expected": 16.0}, {"input": [16.0, -32.0], "expected": 16.0}, {"input": [16.0, -31.5], "expected": 16.0}, {"input": [16.0, -31.0], "expected": 16.0}, {"input": [16.0, -30.5], "expected": 16.0}, {"input": [16.0, -30.0], "expected": 16.0}, {"input": [16.0, -29.5], "expected": 16.0}, {"input": [16.0, -29.0], "expected": 16.0}, {"input": [16.0, -28.5], "expected": 16.0}, {"input": [16.0, -28.0], "expected": 16.0}, {"input": [16.0, -27.5], "expected": 16.0}, {"input": [16.0, -27.0], "expected": 16.0}, {"input": [16.0, -26.5], "expected": 16.0}, {"input": [16.0, -26.0], "expected": 16.0}, {"input": [16.0, -25.5], "expected": 16.0}, {"input": [16.0, -25.0], "expected": 16.0}, {"input": [16.0, -24.5], "expected": 16.0}, {"input": [16.0, -24.0], "expected": 16.0}, {"input": [16.0, -23.5], "expected": 16.0}, {"input": [16.0, -23.0], "expected": 16.0}, {"input": [16.0, -22.5], "expected": 16.0}, {"input": [16.0, -22.0], "expected": 16.0}, {"input": [16.0, -21.5], "expected": 16.0}, {"input": [16.0, -21.0], "expected": 16.0}, {"input": [16.0, -20.5], "expected": 16.0}, {"input": [16.0, -20.0], "expected": 16.0}, {"input": [16.0, -19.5], "expected": 16.0}, {"input": [16.0, -19.0], "expected": 16.0}, {"input": [16.0, -18.5], "expected": 16.0}, {"input": [16.0, -18.0], "expected": 16.0}, {"input": [16.0, -17.5], "expected": 16.000000000000004}, {"input": [16.0, -17.0], "expected": 16.000000000000004}, {"input": [16.0, -16.5], "expected": 16.000000000000007}, {"input": [16.0, -16.0], "expected": 16.000000000000014}, {"input": [16.0, -15.5], "expected": 16.00000000000002}, {"input": [16.0, -15.0], "expected": 16.000000000000036}, {"input": [16.0, -14.5], "expected": 16.000000000000057}, {"input": [16.0, -14.0], "expected": 16.000000000000092}, {"input": [16.0, -13.5], "expected": 16.000000000000153}, {"input": [16.0, -13.0], "expected": 16.000000000000256}, {"input": [16.0, -12.5], "expected": 16.00000000000042}, {"input": [16.0, -12.0], "expected": 16.000000000000693}, {"input": [16.0, -11.5], "expected": 16.00000000000114}, {"input": [16.0, -11.0], "expected": 16.00000000000188}, {"input": [16.0, -10.5], "expected": 16.000000000003098}, {"input": [16.0, -10.0], "expected": 16.00000000000511}, {"input": [16.0, -9.5], "expected": 16.000000000008423}, {"input": [16.0, -9.0], "expected": 16.000000000013888}, {"input": [16.0, -8.5], "expected": 16.000000000022897}, {"input": [16.0, -8.0], "expected": 16.00000000003775}, {"input": [16.0, -7.5], "expected": 16.00000000006224}, {"input": [16.0, -7.0], "expected": 16.00000000010262}, {"input": [16.0, -6.5], "expected": 16.00000000016919}, {"input": [16.0, -6.0], "expected": 16.00000000027895}, {"input": [16.0, -5.5], "expected": 16.000000000459906}, {"input": [16.0, -5.0], "expected": 16.000000000758256}, {"input": [16.0, -4.5], "expected": 16.000000001250154}, {"input": [16.0, -4.0], "expected": 16.000000002061153}, {"input": [16.0, -3.5], "expected": 16.000000003398267}, {"input": [16.0, -3.0], "expected": 16.000000005602796}, {"input": [16.0, -2.5], "expected": 16.00000000923745}, {"input": [16.0, -2.0], "expected": 16.00000001522998}, {"input": [16.0, -1.5], "expected": 16.00000002510999}, {"input": [16.0, -1.0], "expected": 16.000000041399375}, {"input": [16.0, -0.5], "expected": 16.000000068256032}, {"input": [16.0, 0.0], "expected": 16.00000011253517}, {"input": [16.0, 0.5], "expected": 16.00000018553912}, {"input": [16.0, 1.0], "expected": 16.000000305902272}, {"input": [16.0, 1.5], "expected": 16.000000504347536}, {"input": [16.0, 2.0], "expected": 16.000000831528375}, {"input": [16.0, 2.5], "expected": 16.000001370958145}, {"input": [16.0, 3.0], "expected": 16.000002260326852}, {"input": [16.0, 3.5], "expected": 16.000003726646227}, {"input": [16.0, 4.0], "expected": 16.000006144193478}, {"input": [16.0, 4.5], "expected": 16.00001013004229}, {"input": [16.0, 5.0], "expected": 16.000016701561318}, {"input": [16.0, 5.5], "expected": 16.000027536070228}, {"input": [16.0, 6.0], "expected": 16.000045398899218}, {"input": [16.0, 6.5], "expected": 16.00007484902863}, {"input": [16.0, 7.0], "expected": 16.000123402189722}, {"input": [16.0, 7.5], "expected": 16.000203447672128}, {"input": [16.0, 8.0], "expected": 16.000335406372894}, {"input": [16.0, 8.5], "expected": 16.00055293147536}, {"input": [16.0, 9.0], "expected": 16.000911466453775}, {"input": [16.0, 9.5], "expected": 16.001502310159754}, {"input": [16.0, 10.0], "expected": 16.002475685137732}, {"input": [16.0, 10.5], "expected": 16.004078443270572}, {"input": [16.0, 11.0], "expected": 16.006715348489116}, {"input": [16.0, 11.5], "expected": 16.011047744848593}, {"input": [16.0, 12.0], "expected": 16.01814992791781}, {"input": [16.0, 12.5], "expected": 16.02975041827262}, {"input": [16.0, 13.0], "expected": 16.048587351573744}, {"input": [16.0, 13.5], "expected": 16.07888973429255}, {"input": [16.0, 14.0], "expected": 16.126928011042974}, {"input": [16.0, 14.5], "expected": 16.201413277982752}, {"input": [16.0, 15.0], "expected": 16.313261687518224}, {"input": [16.0, 15.5], "expected": 16.47407698418011}, {"input": [16.0, 16.0], "expected": 16.693147180559944}, {"input": [16.0, 16.5], "expected": 16.97407698418011}, {"input": [16.0, 17.0], "expected": 17.313261687518224}, {"input": [16.0, 17.5], "expected": 17.701413277982752}, {"input": [16.0, 18.0], "expected": 18.126928011042974}, {"input": [16.0, 18.5], "expected": 18.57888973429255}, {"input": [16.0, 19.0], "expected": 19.048587351573744}, {"input": [16.0, 19.5], "expected": 19.52975041827262}, {"input": [16.0, 20.0], "expected": 20.01814992791781}, {"input": [16.0, 20.5], "expected": 20.511047744848593}, {"input": [16.0, 21.0], "expected": 21.006715348489116}, {"input": [16.0, 21.5], "expected": 21.504078443270572}, {"input": [16.0, 22.0], "expected": 22.002475685137732}, {"input": [16.0, 22.5], "expected": 22.501502310159754}, {"input": [16.0, 23.0], "expected": 23.000911466453775}, {"input": [16.0, 23.5], "expected": 23.50055293147536}, {"input": [16.0, 24.0], "expected": 24.000335406372894}, {"input": [16.0, 24.5], "expected": 24.500203447672128}, {"input": [16.0, 25.0], "expected": 25.000123402189722}, {"input": [16.0, 25.5], "expected": 25.50007484902863}, {"input": [16.0, 26.0], "expected": 26.000045398899218}, {"input": [16.0, 26.5], "expected": 26.500027536070228}, {"input": [16.0, 27.0], "expected": 27.000016701561318}, {"input": [16.0, 27.5], "expected": 27.50001013004229}, {"input": [16.0, 28.0], "expected": 28.000006144193478}, {"input": [16.0, 28.5], "expected": 28.500003726646227}, {"input": [16.0, 29.0], "expected": 29.000002260326852}, {"input": [16.0, 29.5], "expected": 29.500001370958145}, {"input": [16.0, 30.0], "expected": 30.000000831528375}, {"input": [16.0, 30.5], "expected": 30.500000504347536}, {"input": [16.0, 31.0], "expected": 31.000000305902272}, {"input": [16.0, 31.5], "expected": 31.50000018553912}, {"input": [16.0, 32.0], "expected": 32.00000011253517}, {"input": [16.0, 32.5], "expected": 32.50000006825603}, {"input": [16.0, 33.0], "expected": 33.000000041399375}, {"input": [16.0, 33.5], "expected": 33.50000002510999}, {"input": [16.0, 34.0], "expected": 34.00000001522998}, {"input": [16.0, 34.5], "expected": 34.500000009237446}, {"input": [16.0, 35.0], "expected": 35.00000000560279}, {"input": [16.0, 35.5], "expected": 35.50000000339827}, {"input": [16.0, 36.0], "expected": 36.00000000206116}, {"input": [16.0, 36.5], "expected": 36.50000000125015}, {"input": [16.0, 37.0], "expected": 37.000000000758256}, {"input": [16.0, 37.5], "expected": 37.500000000459906}, {"input": [16.0, 38.0], "expected": 38.000000000278945}, {"input": [16.0, 38.5], "expected": 38.50000000016919}, {"input": [16.0, 39.0], "expected": 39.00000000010262}, {"input": [16.0, 39.5], "expected": 39.50000000006224}, {"input": [16.0, 40.0], "expected": 40.00000000003775}, {"input": [16.0, 40.5], "expected": 40.5000000000229}, {"input": [16.0, 41.0], "expected": 41.00000000001389}, {"input": [16.0, 41.5], "expected": 41.50000000000842}, {"input": [16.0, 42.0], "expected": 42.00000000000511}, {"input": [16.0, 42.5], "expected": 42.5000000000031}, {"input": [16.0, 43.0], "expected": 43.00000000000188}, {"input": [16.0, 43.5], "expected": 43.50000000000114}, {"input": [16.0, 44.0], "expected": 44.00000000000069}, {"input": [16.0, 44.5], "expected": 44.50000000000042}, {"input": [16.0, 45.0], "expected": 45.000000000000256}, {"input": [16.0, 45.5], "expected": 45.500000000000156}, {"input": [16.0, 46.0], "expected": 46.00000000000009}, {"input": [16.0, 46.5], "expected": 46.50000000000006}, {"input": [16.0, 47.0], "expected": 47.000000000000036}, {"input": [16.0, 47.5], "expected": 47.50000000000002}, {"input": [16.0, 48.0], "expected": 48.000000000000014}, {"input": [16.0, 48.5], "expected": 48.50000000000001}, {"input": [16.0, 49.0], "expected": 49.00000000000001}, {"input": [16.0, 49.5], "expected": 49.5}, {"input": [16.0, 50.0], "expected": 50.0}, {"input": [16.0, 50.5], "expected": 50.5}, {"input": [16.0, 51.0], "expected": 51.0}, {"input": [16.0, 51.5], "expected": 51.5}, {"input": [16.0, 52.0], "expected": 52.0}, {"input": [16.0, 52.5], "expected": 52.5}, {"input": [16.0, 53.0], "expected": 53.0}, {"input": [16.0, 53.5], "expected": 53.5}, {"input": [16.0, 54.0], "expected": 54.0}, {"input": [16.0, 54.5], "expected": 54.5}, {"input": [16.0, 55.0], "expected": 55.0}, {"input": [16.0, 55.5], "expected": 55.5}, {"input": [16.0, 56.0], "expected": 56.0}, {"input": [16.0, 56.5], "expected": 56.5}, {"input": [16.0, 57.0], "expected": 57.0}, {"input": [16.0, 57.5], "expected": 57.5}, {"input": [16.0, 58.0], "expected": 58.0}, {"input": [16.0, 58.5], "expected": 58.5}, {"input": [16.0, 59.0], "expected": 59.0}, {"input": [16.0, 59.5], "expected": 59.5}, {"input": [16.0, 60.0], "expected": 60.0}, {"input": [16.0, 60.5], "expected": 60.5}, {"input": [16.0, 61.0], "expected": 61.0}, {"input": [16.0, 61.5], "expected": 61.5}, {"input": [16.0, 62.0], "expected": 62.0}, {"input": [16.0, 62.5], "expected": 62.5}, {"input": [16.0, 63.0], "expected": 63.0}, {"input": [16.0, 63.5], "expected": 63.5}, {"input": [16.0, 64.0], "expected": 64.0}, {"input": [16.0, 64.5], "expected": 64.5}, {"input": [16.0, 65.0], "expected": 65.0}, {"input": [16.0, 65.5], "expected": 65.5}, {"input": [16.0, 66.0], "expected": 66.0}, {"input": [16.0, 66.5], "expected": 66.5}, {"input": [16.0, 67.0], "expected": 67.0}, {"input": [16.0, 67.5], "expected": 67.5}, {"input": [16.0, 68.0], "expected": 68.0}, {"input": [16.0, 68.5], "expected": 68.5}, {"input": [16.0, 69.0], "expected": 69.0}, {"input": [16.0, 69.5], "expected": 69.5}, {"input": [16.0, 70.0], "expected": 70.0}, {"input": [16.0, 70.5], "expected": 70.5}, {"input": [16.0, 71.0], "expected": 71.0}, {"input": [16.0, 71.5], "expected": 71.5}, {"input": [16.0, 72.0], "expected": 72.0}, {"input": [16.0, 72.5], "expected": 72.5}, {"input": [16.0, 73.0], "expected": 73.0}, {"input": [16.0, 73.5], "expected": 73.5}, {"input": [16.0, 74.0], "expected": 74.0}, {"input": [16.0, 74.5], "expected": 74.5}, {"input": [16.0, 75.0], "expected": 75.0}, {"input": [16.0, 75.5], "expected": 75.5}, {"input": [16.0, 76.0], "expected": 76.0}, {"input": [16.0, 76.5], "expected": 76.5}, {"input": [16.0, 77.0], "expected": 77.0}, {"input": [16.0, 77.5], "expected": 77.5}, {"input": [16.0, 78.0], "expected": 78.0}, {"input": [16.0, 78.5], "expected": 78.5}, {"input": [16.0, 79.0], "expected": 79.0}, {"input": [16.0, 79.5], "expected": 79.5}, {"input": [16.0, 80.0], "expected": 80.0}, {"input": [16.0, 80.5], "expected": 80.5}, {"input": [16.0, 81.0], "expected": 81.0}, {"input": [16.0, 81.5], "expected": 81.5}, {"input": [16.0, 82.0], "expected": 82.0}, {"input": [16.0, 82.5], "expected": 82.5}, {"input": [16.0, 83.0], "expected": 83.0}, {"input": [16.0, 83.5], "expected": 83.5}, {"input": [16.0, 84.0], "expected": 84.0}, {"input": [16.0, 84.5], "expected": 84.5}, {"input": [16.0, 85.0], "expected": 85.0}, {"input": [16.0, 85.5], "expected": 85.5}, {"input": [16.0, 86.0], "expected": 86.0}, {"input": [16.0, 86.5], "expected": 86.5}, {"input": [16.0, 87.0], "expected": 87.0}, {"input": [16.0, 87.5], "expected": 87.5}, {"input": [16.0, 88.0], "expected": 88.0}, {"input": [16.0, 88.5], "expected": 88.5}, {"input": [16.0, 89.0], "expected": 89.0}, {"input": [16.0, 89.5], "expected": 89.5}, {"input": [16.0, 90.0], "expected": 90.0}, {"input": [16.0, 90.5], "expected": 90.5}, {"input": [16.0, 91.0], "expected": 91.0}, {"input": [16.0, 91.5], "expected": 91.5}, {"input": [16.0, 92.0], "expected": 92.0}, {"input": [16.0, 92.5], "expected": 92.5}, {"input": [16.0, 93.0], "expected": 93.0}, {"input": [16.0, 93.5], "expected": 93.5}, {"input": [16.0, 94.0], "expected": 94.0}, {"input": [16.0, 94.5], "expected": 94.5}, {"input": [16.0, 95.0], "expected": 95.0}, {"input": [16.0, 95.5], "expected": 95.5}, {"input": [16.0, 96.0], "expected": 96.0}, {"input": [16.0, 96.5], "expected": 96.5}, {"input": [16.0, 97.0], "expected": 97.0}, {"input": [16.0, 97.5], "expected": 97.5}, {"input": [16.0, 98.0], "expected": 98.0}, {"input": [16.0, 98.5], "expected": 98.5}, {"input": [16.0, 99.0], "expected": 99.0}, {"input": [16.0, 99.5], "expected": 99.5}, {"input": [16.5, -100.0], "expected": 16.5}, {"input": [16.5, -99.5], "expected": 16.5}, {"input": [16.5, -99.0], "expected": 16.5}, {"input": [16.5, -98.5], "expected": 16.5}, {"input": [16.5, -98.0], "expected": 16.5}, {"input": [16.5, -97.5], "expected": 16.5}, {"input": [16.5, -97.0], "expected": 16.5}, {"input": [16.5, -96.5], "expected": 16.5}, {"input": [16.5, -96.0], "expected": 16.5}, {"input": [16.5, -95.5], "expected": 16.5}, {"input": [16.5, -95.0], "expected": 16.5}, {"input": [16.5, -94.5], "expected": 16.5}, {"input": [16.5, -94.0], "expected": 16.5}, {"input": [16.5, -93.5], "expected": 16.5}, {"input": [16.5, -93.0], "expected": 16.5}, {"input": [16.5, -92.5], "expected": 16.5}, {"input": [16.5, -92.0], "expected": 16.5}, {"input": [16.5, -91.5], "expected": 16.5}, {"input": [16.5, -91.0], "expected": 16.5}, {"input": [16.5, -90.5], "expected": 16.5}, {"input": [16.5, -90.0], "expected": 16.5}, {"input": [16.5, -89.5], "expected": 16.5}, {"input": [16.5, -89.0], "expected": 16.5}, {"input": [16.5, -88.5], "expected": 16.5}, {"input": [16.5, -88.0], "expected": 16.5}, {"input": [16.5, -87.5], "expected": 16.5}, {"input": [16.5, -87.0], "expected": 16.5}, {"input": [16.5, -86.5], "expected": 16.5}, {"input": [16.5, -86.0], "expected": 16.5}, {"input": [16.5, -85.5], "expected": 16.5}, {"input": [16.5, -85.0], "expected": 16.5}, {"input": [16.5, -84.5], "expected": 16.5}, {"input": [16.5, -84.0], "expected": 16.5}, {"input": [16.5, -83.5], "expected": 16.5}, {"input": [16.5, -83.0], "expected": 16.5}, {"input": [16.5, -82.5], "expected": 16.5}, {"input": [16.5, -82.0], "expected": 16.5}, {"input": [16.5, -81.5], "expected": 16.5}, {"input": [16.5, -81.0], "expected": 16.5}, {"input": [16.5, -80.5], "expected": 16.5}, {"input": [16.5, -80.0], "expected": 16.5}, {"input": [16.5, -79.5], "expected": 16.5}, {"input": [16.5, -79.0], "expected": 16.5}, {"input": [16.5, -78.5], "expected": 16.5}, {"input": [16.5, -78.0], "expected": 16.5}, {"input": [16.5, -77.5], "expected": 16.5}, {"input": [16.5, -77.0], "expected": 16.5}, {"input": [16.5, -76.5], "expected": 16.5}, {"input": [16.5, -76.0], "expected": 16.5}, {"input": [16.5, -75.5], "expected": 16.5}, {"input": [16.5, -75.0], "expected": 16.5}, {"input": [16.5, -74.5], "expected": 16.5}, {"input": [16.5, -74.0], "expected": 16.5}, {"input": [16.5, -73.5], "expected": 16.5}, {"input": [16.5, -73.0], "expected": 16.5}, {"input": [16.5, -72.5], "expected": 16.5}, {"input": [16.5, -72.0], "expected": 16.5}, {"input": [16.5, -71.5], "expected": 16.5}, {"input": [16.5, -71.0], "expected": 16.5}, {"input": [16.5, -70.5], "expected": 16.5}, {"input": [16.5, -70.0], "expected": 16.5}, {"input": [16.5, -69.5], "expected": 16.5}, {"input": [16.5, -69.0], "expected": 16.5}, {"input": [16.5, -68.5], "expected": 16.5}, {"input": [16.5, -68.0], "expected": 16.5}, {"input": [16.5, -67.5], "expected": 16.5}, {"input": [16.5, -67.0], "expected": 16.5}, {"input": [16.5, -66.5], "expected": 16.5}, {"input": [16.5, -66.0], "expected": 16.5}, {"input": [16.5, -65.5], "expected": 16.5}, {"input": [16.5, -65.0], "expected": 16.5}, {"input": [16.5, -64.5], "expected": 16.5}, {"input": [16.5, -64.0], "expected": 16.5}, {"input": [16.5, -63.5], "expected": 16.5}, {"input": [16.5, -63.0], "expected": 16.5}, {"input": [16.5, -62.5], "expected": 16.5}, {"input": [16.5, -62.0], "expected": 16.5}, {"input": [16.5, -61.5], "expected": 16.5}, {"input": [16.5, -61.0], "expected": 16.5}, {"input": [16.5, -60.5], "expected": 16.5}, {"input": [16.5, -60.0], "expected": 16.5}, {"input": [16.5, -59.5], "expected": 16.5}, {"input": [16.5, -59.0], "expected": 16.5}, {"input": [16.5, -58.5], "expected": 16.5}, {"input": [16.5, -58.0], "expected": 16.5}, {"input": [16.5, -57.5], "expected": 16.5}, {"input": [16.5, -57.0], "expected": 16.5}, {"input": [16.5, -56.5], "expected": 16.5}, {"input": [16.5, -56.0], "expected": 16.5}, {"input": [16.5, -55.5], "expected": 16.5}, {"input": [16.5, -55.0], "expected": 16.5}, {"input": [16.5, -54.5], "expected": 16.5}, {"input": [16.5, -54.0], "expected": 16.5}, {"input": [16.5, -53.5], "expected": 16.5}, {"input": [16.5, -53.0], "expected": 16.5}, {"input": [16.5, -52.5], "expected": 16.5}, {"input": [16.5, -52.0], "expected": 16.5}, {"input": [16.5, -51.5], "expected": 16.5}, {"input": [16.5, -51.0], "expected": 16.5}, {"input": [16.5, -50.5], "expected": 16.5}, {"input": [16.5, -50.0], "expected": 16.5}, {"input": [16.5, -49.5], "expected": 16.5}, {"input": [16.5, -49.0], "expected": 16.5}, {"input": [16.5, -48.5], "expected": 16.5}, {"input": [16.5, -48.0], "expected": 16.5}, {"input": [16.5, -47.5], "expected": 16.5}, {"input": [16.5, -47.0], "expected": 16.5}, {"input": [16.5, -46.5], "expected": 16.5}, {"input": [16.5, -46.0], "expected": 16.5}, {"input": [16.5, -45.5], "expected": 16.5}, {"input": [16.5, -45.0], "expected": 16.5}, {"input": [16.5, -44.5], "expected": 16.5}, {"input": [16.5, -44.0], "expected": 16.5}, {"input": [16.5, -43.5], "expected": 16.5}, {"input": [16.5, -43.0], "expected": 16.5}, {"input": [16.5, -42.5], "expected": 16.5}, {"input": [16.5, -42.0], "expected": 16.5}, {"input": [16.5, -41.5], "expected": 16.5}, {"input": [16.5, -41.0], "expected": 16.5}, {"input": [16.5, -40.5], "expected": 16.5}, {"input": [16.5, -40.0], "expected": 16.5}, {"input": [16.5, -39.5], "expected": 16.5}, {"input": [16.5, -39.0], "expected": 16.5}, {"input": [16.5, -38.5], "expected": 16.5}, {"input": [16.5, -38.0], "expected": 16.5}, {"input": [16.5, -37.5], "expected": 16.5}, {"input": [16.5, -37.0], "expected": 16.5}, {"input": [16.5, -36.5], "expected": 16.5}, {"input": [16.5, -36.0], "expected": 16.5}, {"input": [16.5, -35.5], "expected": 16.5}, {"input": [16.5, -35.0], "expected": 16.5}, {"input": [16.5, -34.5], "expected": 16.5}, {"input": [16.5, -34.0], "expected": 16.5}, {"input": [16.5, -33.5], "expected": 16.5}, {"input": [16.5, -33.0], "expected": 16.5}, {"input": [16.5, -32.5], "expected": 16.5}, {"input": [16.5, -32.0], "expected": 16.5}, {"input": [16.5, -31.5], "expected": 16.5}, {"input": [16.5, -31.0], "expected": 16.5}, {"input": [16.5, -30.5], "expected": 16.5}, {"input": [16.5, -30.0], "expected": 16.5}, {"input": [16.5, -29.5], "expected": 16.5}, {"input": [16.5, -29.0], "expected": 16.5}, {"input": [16.5, -28.5], "expected": 16.5}, {"input": [16.5, -28.0], "expected": 16.5}, {"input": [16.5, -27.5], "expected": 16.5}, {"input": [16.5, -27.0], "expected": 16.5}, {"input": [16.5, -26.5], "expected": 16.5}, {"input": [16.5, -26.0], "expected": 16.5}, {"input": [16.5, -25.5], "expected": 16.5}, {"input": [16.5, -25.0], "expected": 16.5}, {"input": [16.5, -24.5], "expected": 16.5}, {"input": [16.5, -24.0], "expected": 16.5}, {"input": [16.5, -23.5], "expected": 16.5}, {"input": [16.5, -23.0], "expected": 16.5}, {"input": [16.5, -22.5], "expected": 16.5}, {"input": [16.5, -22.0], "expected": 16.5}, {"input": [16.5, -21.5], "expected": 16.5}, {"input": [16.5, -21.0], "expected": 16.5}, {"input": [16.5, -20.5], "expected": 16.5}, {"input": [16.5, -20.0], "expected": 16.5}, {"input": [16.5, -19.5], "expected": 16.5}, {"input": [16.5, -19.0], "expected": 16.5}, {"input": [16.5, -18.5], "expected": 16.5}, {"input": [16.5, -18.0], "expected": 16.5}, {"input": [16.5, -17.5], "expected": 16.5}, {"input": [16.5, -17.0], "expected": 16.500000000000004}, {"input": [16.5, -16.5], "expected": 16.500000000000004}, {"input": [16.5, -16.0], "expected": 16.500000000000007}, {"input": [16.5, -15.5], "expected": 16.500000000000014}, {"input": [16.5, -15.0], "expected": 16.50000000000002}, {"input": [16.5, -14.5], "expected": 16.500000000000036}, {"input": [16.5, -14.0], "expected": 16.500000000000057}, {"input": [16.5, -13.5], "expected": 16.500000000000092}, {"input": [16.5, -13.0], "expected": 16.500000000000153}, {"input": [16.5, -12.5], "expected": 16.500000000000256}, {"input": [16.5, -12.0], "expected": 16.50000000000042}, {"input": [16.5, -11.5], "expected": 16.500000000000693}, {"input": [16.5, -11.0], "expected": 16.50000000000114}, {"input": [16.5, -10.5], "expected": 16.50000000000188}, {"input": [16.5, -10.0], "expected": 16.500000000003098}, {"input": [16.5, -9.5], "expected": 16.50000000000511}, {"input": [16.5, -9.0], "expected": 16.500000000008423}, {"input": [16.5, -8.5], "expected": 16.500000000013888}, {"input": [16.5, -8.0], "expected": 16.500000000022897}, {"input": [16.5, -7.5], "expected": 16.50000000003775}, {"input": [16.5, -7.0], "expected": 16.50000000006224}, {"input": [16.5, -6.5], "expected": 16.50000000010262}, {"input": [16.5, -6.0], "expected": 16.50000000016919}, {"input": [16.5, -5.5], "expected": 16.50000000027895}, {"input": [16.5, -5.0], "expected": 16.500000000459906}, {"input": [16.5, -4.5], "expected": 16.500000000758256}, {"input": [16.5, -4.0], "expected": 16.500000001250154}, {"input": [16.5, -3.5], "expected": 16.500000002061153}, {"input": [16.5, -3.0], "expected": 16.500000003398267}, {"input": [16.5, -2.5], "expected": 16.500000005602796}, {"input": [16.5, -2.0], "expected": 16.50000000923745}, {"input": [16.5, -1.5], "expected": 16.50000001522998}, {"input": [16.5, -1.0], "expected": 16.50000002510999}, {"input": [16.5, -0.5], "expected": 16.500000041399375}, {"input": [16.5, 0.0], "expected": 16.500000068256032}, {"input": [16.5, 0.5], "expected": 16.50000011253517}, {"input": [16.5, 1.0], "expected": 16.50000018553912}, {"input": [16.5, 1.5], "expected": 16.500000305902272}, {"input": [16.5, 2.0], "expected": 16.500000504347536}, {"input": [16.5, 2.5], "expected": 16.500000831528375}, {"input": [16.5, 3.0], "expected": 16.500001370958145}, {"input": [16.5, 3.5], "expected": 16.500002260326852}, {"input": [16.5, 4.0], "expected": 16.500003726646227}, {"input": [16.5, 4.5], "expected": 16.500006144193478}, {"input": [16.5, 5.0], "expected": 16.50001013004229}, {"input": [16.5, 5.5], "expected": 16.500016701561318}, {"input": [16.5, 6.0], "expected": 16.500027536070228}, {"input": [16.5, 6.5], "expected": 16.500045398899218}, {"input": [16.5, 7.0], "expected": 16.50007484902863}, {"input": [16.5, 7.5], "expected": 16.500123402189722}, {"input": [16.5, 8.0], "expected": 16.500203447672128}, {"input": [16.5, 8.5], "expected": 16.500335406372894}, {"input": [16.5, 9.0], "expected": 16.50055293147536}, {"input": [16.5, 9.5], "expected": 16.500911466453775}, {"input": [16.5, 10.0], "expected": 16.501502310159754}, {"input": [16.5, 10.5], "expected": 16.502475685137732}, {"input": [16.5, 11.0], "expected": 16.504078443270572}, {"input": [16.5, 11.5], "expected": 16.506715348489116}, {"input": [16.5, 12.0], "expected": 16.511047744848593}, {"input": [16.5, 12.5], "expected": 16.51814992791781}, {"input": [16.5, 13.0], "expected": 16.52975041827262}, {"input": [16.5, 13.5], "expected": 16.548587351573744}, {"input": [16.5, 14.0], "expected": 16.57888973429255}, {"input": [16.5, 14.5], "expected": 16.626928011042974}, {"input": [16.5, 15.0], "expected": 16.701413277982752}, {"input": [16.5, 15.5], "expected": 16.813261687518224}, {"input": [16.5, 16.0], "expected": 16.97407698418011}, {"input": [16.5, 16.5], "expected": 17.193147180559944}, {"input": [16.5, 17.0], "expected": 17.47407698418011}, {"input": [16.5, 17.5], "expected": 17.813261687518224}, {"input": [16.5, 18.0], "expected": 18.201413277982752}, {"input": [16.5, 18.5], "expected": 18.626928011042974}, {"input": [16.5, 19.0], "expected": 19.07888973429255}, {"input": [16.5, 19.5], "expected": 19.548587351573744}, {"input": [16.5, 20.0], "expected": 20.02975041827262}, {"input": [16.5, 20.5], "expected": 20.51814992791781}, {"input": [16.5, 21.0], "expected": 21.011047744848593}, {"input": [16.5, 21.5], "expected": 21.506715348489116}, {"input": [16.5, 22.0], "expected": 22.004078443270572}, {"input": [16.5, 22.5], "expected": 22.502475685137732}, {"input": [16.5, 23.0], "expected": 23.001502310159754}, {"input": [16.5, 23.5], "expected": 23.500911466453775}, {"input": [16.5, 24.0], "expected": 24.00055293147536}, {"input": [16.5, 24.5], "expected": 24.500335406372894}, {"input": [16.5, 25.0], "expected": 25.000203447672128}, {"input": [16.5, 25.5], "expected": 25.500123402189722}, {"input": [16.5, 26.0], "expected": 26.00007484902863}, {"input": [16.5, 26.5], "expected": 26.500045398899218}, {"input": [16.5, 27.0], "expected": 27.000027536070228}, {"input": [16.5, 27.5], "expected": 27.500016701561318}, {"input": [16.5, 28.0], "expected": 28.00001013004229}, {"input": [16.5, 28.5], "expected": 28.500006144193478}, {"input": [16.5, 29.0], "expected": 29.000003726646227}, {"input": [16.5, 29.5], "expected": 29.500002260326852}, {"input": [16.5, 30.0], "expected": 30.000001370958145}, {"input": [16.5, 30.5], "expected": 30.500000831528375}, {"input": [16.5, 31.0], "expected": 31.000000504347536}, {"input": [16.5, 31.5], "expected": 31.500000305902272}, {"input": [16.5, 32.0], "expected": 32.00000018553912}, {"input": [16.5, 32.5], "expected": 32.50000011253517}, {"input": [16.5, 33.0], "expected": 33.00000006825603}, {"input": [16.5, 33.5], "expected": 33.500000041399375}, {"input": [16.5, 34.0], "expected": 34.00000002510999}, {"input": [16.5, 34.5], "expected": 34.50000001522998}, {"input": [16.5, 35.0], "expected": 35.000000009237446}, {"input": [16.5, 35.5], "expected": 35.50000000560279}, {"input": [16.5, 36.0], "expected": 36.00000000339827}, {"input": [16.5, 36.5], "expected": 36.50000000206116}, {"input": [16.5, 37.0], "expected": 37.00000000125015}, {"input": [16.5, 37.5], "expected": 37.500000000758256}, {"input": [16.5, 38.0], "expected": 38.000000000459906}, {"input": [16.5, 38.5], "expected": 38.500000000278945}, {"input": [16.5, 39.0], "expected": 39.00000000016919}, {"input": [16.5, 39.5], "expected": 39.50000000010262}, {"input": [16.5, 40.0], "expected": 40.00000000006224}, {"input": [16.5, 40.5], "expected": 40.50000000003775}, {"input": [16.5, 41.0], "expected": 41.0000000000229}, {"input": [16.5, 41.5], "expected": 41.50000000001389}, {"input": [16.5, 42.0], "expected": 42.00000000000842}, {"input": [16.5, 42.5], "expected": 42.50000000000511}, {"input": [16.5, 43.0], "expected": 43.0000000000031}, {"input": [16.5, 43.5], "expected": 43.50000000000188}, {"input": [16.5, 44.0], "expected": 44.00000000000114}, {"input": [16.5, 44.5], "expected": 44.50000000000069}, {"input": [16.5, 45.0], "expected": 45.00000000000042}, {"input": [16.5, 45.5], "expected": 45.500000000000256}, {"input": [16.5, 46.0], "expected": 46.000000000000156}, {"input": [16.5, 46.5], "expected": 46.50000000000009}, {"input": [16.5, 47.0], "expected": 47.00000000000006}, {"input": [16.5, 47.5], "expected": 47.500000000000036}, {"input": [16.5, 48.0], "expected": 48.00000000000002}, {"input": [16.5, 48.5], "expected": 48.500000000000014}, {"input": [16.5, 49.0], "expected": 49.00000000000001}, {"input": [16.5, 49.5], "expected": 49.50000000000001}, {"input": [16.5, 50.0], "expected": 50.0}, {"input": [16.5, 50.5], "expected": 50.5}, {"input": [16.5, 51.0], "expected": 51.0}, {"input": [16.5, 51.5], "expected": 51.5}, {"input": [16.5, 52.0], "expected": 52.0}, {"input": [16.5, 52.5], "expected": 52.5}, {"input": [16.5, 53.0], "expected": 53.0}, {"input": [16.5, 53.5], "expected": 53.5}, {"input": [16.5, 54.0], "expected": 54.0}, {"input": [16.5, 54.5], "expected": 54.5}, {"input": [16.5, 55.0], "expected": 55.0}, {"input": [16.5, 55.5], "expected": 55.5}, {"input": [16.5, 56.0], "expected": 56.0}, {"input": [16.5, 56.5], "expected": 56.5}, {"input": [16.5, 57.0], "expected": 57.0}, {"input": [16.5, 57.5], "expected": 57.5}, {"input": [16.5, 58.0], "expected": 58.0}, {"input": [16.5, 58.5], "expected": 58.5}, {"input": [16.5, 59.0], "expected": 59.0}, {"input": [16.5, 59.5], "expected": 59.5}, {"input": [16.5, 60.0], "expected": 60.0}, {"input": [16.5, 60.5], "expected": 60.5}, {"input": [16.5, 61.0], "expected": 61.0}, {"input": [16.5, 61.5], "expected": 61.5}, {"input": [16.5, 62.0], "expected": 62.0}, {"input": [16.5, 62.5], "expected": 62.5}, {"input": [16.5, 63.0], "expected": 63.0}, {"input": [16.5, 63.5], "expected": 63.5}, {"input": [16.5, 64.0], "expected": 64.0}, {"input": [16.5, 64.5], "expected": 64.5}, {"input": [16.5, 65.0], "expected": 65.0}, {"input": [16.5, 65.5], "expected": 65.5}, {"input": [16.5, 66.0], "expected": 66.0}, {"input": [16.5, 66.5], "expected": 66.5}, {"input": [16.5, 67.0], "expected": 67.0}, {"input": [16.5, 67.5], "expected": 67.5}, {"input": [16.5, 68.0], "expected": 68.0}, {"input": [16.5, 68.5], "expected": 68.5}, {"input": [16.5, 69.0], "expected": 69.0}, {"input": [16.5, 69.5], "expected": 69.5}, {"input": [16.5, 70.0], "expected": 70.0}, {"input": [16.5, 70.5], "expected": 70.5}, {"input": [16.5, 71.0], "expected": 71.0}, {"input": [16.5, 71.5], "expected": 71.5}, {"input": [16.5, 72.0], "expected": 72.0}, {"input": [16.5, 72.5], "expected": 72.5}, {"input": [16.5, 73.0], "expected": 73.0}, {"input": [16.5, 73.5], "expected": 73.5}, {"input": [16.5, 74.0], "expected": 74.0}, {"input": [16.5, 74.5], "expected": 74.5}, {"input": [16.5, 75.0], "expected": 75.0}, {"input": [16.5, 75.5], "expected": 75.5}, {"input": [16.5, 76.0], "expected": 76.0}, {"input": [16.5, 76.5], "expected": 76.5}, {"input": [16.5, 77.0], "expected": 77.0}, {"input": [16.5, 77.5], "expected": 77.5}, {"input": [16.5, 78.0], "expected": 78.0}, {"input": [16.5, 78.5], "expected": 78.5}, {"input": [16.5, 79.0], "expected": 79.0}, {"input": [16.5, 79.5], "expected": 79.5}, {"input": [16.5, 80.0], "expected": 80.0}, {"input": [16.5, 80.5], "expected": 80.5}, {"input": [16.5, 81.0], "expected": 81.0}, {"input": [16.5, 81.5], "expected": 81.5}, {"input": [16.5, 82.0], "expected": 82.0}, {"input": [16.5, 82.5], "expected": 82.5}, {"input": [16.5, 83.0], "expected": 83.0}, {"input": [16.5, 83.5], "expected": 83.5}, {"input": [16.5, 84.0], "expected": 84.0}, {"input": [16.5, 84.5], "expected": 84.5}, {"input": [16.5, 85.0], "expected": 85.0}, {"input": [16.5, 85.5], "expected": 85.5}, {"input": [16.5, 86.0], "expected": 86.0}, {"input": [16.5, 86.5], "expected": 86.5}, {"input": [16.5, 87.0], "expected": 87.0}, {"input": [16.5, 87.5], "expected": 87.5}, {"input": [16.5, 88.0], "expected": 88.0}, {"input": [16.5, 88.5], "expected": 88.5}, {"input": [16.5, 89.0], "expected": 89.0}, {"input": [16.5, 89.5], "expected": 89.5}, {"input": [16.5, 90.0], "expected": 90.0}, {"input": [16.5, 90.5], "expected": 90.5}, {"input": [16.5, 91.0], "expected": 91.0}, {"input": [16.5, 91.5], "expected": 91.5}, {"input": [16.5, 92.0], "expected": 92.0}, {"input": [16.5, 92.5], "expected": 92.5}, {"input": [16.5, 93.0], "expected": 93.0}, {"input": [16.5, 93.5], "expected": 93.5}, {"input": [16.5, 94.0], "expected": 94.0}, {"input": [16.5, 94.5], "expected": 94.5}, {"input": [16.5, 95.0], "expected": 95.0}, {"input": [16.5, 95.5], "expected": 95.5}, {"input": [16.5, 96.0], "expected": 96.0}, {"input": [16.5, 96.5], "expected": 96.5}, {"input": [16.5, 97.0], "expected": 97.0}, {"input": [16.5, 97.5], "expected": 97.5}, {"input": [16.5, 98.0], "expected": 98.0}, {"input": [16.5, 98.5], "expected": 98.5}, {"input": [16.5, 99.0], "expected": 99.0}, {"input": [16.5, 99.5], "expected": 99.5}, {"input": [17.0, -100.0], "expected": 17.0}, {"input": [17.0, -99.5], "expected": 17.0}, {"input": [17.0, -99.0], "expected": 17.0}, {"input": [17.0, -98.5], "expected": 17.0}, {"input": [17.0, -98.0], "expected": 17.0}, {"input": [17.0, -97.5], "expected": 17.0}, {"input": [17.0, -97.0], "expected": 17.0}, {"input": [17.0, -96.5], "expected": 17.0}, {"input": [17.0, -96.0], "expected": 17.0}, {"input": [17.0, -95.5], "expected": 17.0}, {"input": [17.0, -95.0], "expected": 17.0}, {"input": [17.0, -94.5], "expected": 17.0}, {"input": [17.0, -94.0], "expected": 17.0}, {"input": [17.0, -93.5], "expected": 17.0}, {"input": [17.0, -93.0], "expected": 17.0}, {"input": [17.0, -92.5], "expected": 17.0}, {"input": [17.0, -92.0], "expected": 17.0}, {"input": [17.0, -91.5], "expected": 17.0}, {"input": [17.0, -91.0], "expected": 17.0}, {"input": [17.0, -90.5], "expected": 17.0}, {"input": [17.0, -90.0], "expected": 17.0}, {"input": [17.0, -89.5], "expected": 17.0}, {"input": [17.0, -89.0], "expected": 17.0}, {"input": [17.0, -88.5], "expected": 17.0}, {"input": [17.0, -88.0], "expected": 17.0}, {"input": [17.0, -87.5], "expected": 17.0}, {"input": [17.0, -87.0], "expected": 17.0}, {"input": [17.0, -86.5], "expected": 17.0}, {"input": [17.0, -86.0], "expected": 17.0}, {"input": [17.0, -85.5], "expected": 17.0}, {"input": [17.0, -85.0], "expected": 17.0}, {"input": [17.0, -84.5], "expected": 17.0}, {"input": [17.0, -84.0], "expected": 17.0}, {"input": [17.0, -83.5], "expected": 17.0}, {"input": [17.0, -83.0], "expected": 17.0}, {"input": [17.0, -82.5], "expected": 17.0}, {"input": [17.0, -82.0], "expected": 17.0}, {"input": [17.0, -81.5], "expected": 17.0}, {"input": [17.0, -81.0], "expected": 17.0}, {"input": [17.0, -80.5], "expected": 17.0}, {"input": [17.0, -80.0], "expected": 17.0}, {"input": [17.0, -79.5], "expected": 17.0}, {"input": [17.0, -79.0], "expected": 17.0}, {"input": [17.0, -78.5], "expected": 17.0}, {"input": [17.0, -78.0], "expected": 17.0}, {"input": [17.0, -77.5], "expected": 17.0}, {"input": [17.0, -77.0], "expected": 17.0}, {"input": [17.0, -76.5], "expected": 17.0}, {"input": [17.0, -76.0], "expected": 17.0}, {"input": [17.0, -75.5], "expected": 17.0}, {"input": [17.0, -75.0], "expected": 17.0}, {"input": [17.0, -74.5], "expected": 17.0}, {"input": [17.0, -74.0], "expected": 17.0}, {"input": [17.0, -73.5], "expected": 17.0}, {"input": [17.0, -73.0], "expected": 17.0}, {"input": [17.0, -72.5], "expected": 17.0}, {"input": [17.0, -72.0], "expected": 17.0}, {"input": [17.0, -71.5], "expected": 17.0}, {"input": [17.0, -71.0], "expected": 17.0}, {"input": [17.0, -70.5], "expected": 17.0}, {"input": [17.0, -70.0], "expected": 17.0}, {"input": [17.0, -69.5], "expected": 17.0}, {"input": [17.0, -69.0], "expected": 17.0}, {"input": [17.0, -68.5], "expected": 17.0}, {"input": [17.0, -68.0], "expected": 17.0}, {"input": [17.0, -67.5], "expected": 17.0}, {"input": [17.0, -67.0], "expected": 17.0}, {"input": [17.0, -66.5], "expected": 17.0}, {"input": [17.0, -66.0], "expected": 17.0}, {"input": [17.0, -65.5], "expected": 17.0}, {"input": [17.0, -65.0], "expected": 17.0}, {"input": [17.0, -64.5], "expected": 17.0}, {"input": [17.0, -64.0], "expected": 17.0}, {"input": [17.0, -63.5], "expected": 17.0}, {"input": [17.0, -63.0], "expected": 17.0}, {"input": [17.0, -62.5], "expected": 17.0}, {"input": [17.0, -62.0], "expected": 17.0}, {"input": [17.0, -61.5], "expected": 17.0}, {"input": [17.0, -61.0], "expected": 17.0}, {"input": [17.0, -60.5], "expected": 17.0}, {"input": [17.0, -60.0], "expected": 17.0}, {"input": [17.0, -59.5], "expected": 17.0}, {"input": [17.0, -59.0], "expected": 17.0}, {"input": [17.0, -58.5], "expected": 17.0}, {"input": [17.0, -58.0], "expected": 17.0}, {"input": [17.0, -57.5], "expected": 17.0}, {"input": [17.0, -57.0], "expected": 17.0}, {"input": [17.0, -56.5], "expected": 17.0}, {"input": [17.0, -56.0], "expected": 17.0}, {"input": [17.0, -55.5], "expected": 17.0}, {"input": [17.0, -55.0], "expected": 17.0}, {"input": [17.0, -54.5], "expected": 17.0}, {"input": [17.0, -54.0], "expected": 17.0}, {"input": [17.0, -53.5], "expected": 17.0}, {"input": [17.0, -53.0], "expected": 17.0}, {"input": [17.0, -52.5], "expected": 17.0}, {"input": [17.0, -52.0], "expected": 17.0}, {"input": [17.0, -51.5], "expected": 17.0}, {"input": [17.0, -51.0], "expected": 17.0}, {"input": [17.0, -50.5], "expected": 17.0}, {"input": [17.0, -50.0], "expected": 17.0}, {"input": [17.0, -49.5], "expected": 17.0}, {"input": [17.0, -49.0], "expected": 17.0}, {"input": [17.0, -48.5], "expected": 17.0}, {"input": [17.0, -48.0], "expected": 17.0}, {"input": [17.0, -47.5], "expected": 17.0}, {"input": [17.0, -47.0], "expected": 17.0}, {"input": [17.0, -46.5], "expected": 17.0}, {"input": [17.0, -46.0], "expected": 17.0}, {"input": [17.0, -45.5], "expected": 17.0}, {"input": [17.0, -45.0], "expected": 17.0}, {"input": [17.0, -44.5], "expected": 17.0}, {"input": [17.0, -44.0], "expected": 17.0}, {"input": [17.0, -43.5], "expected": 17.0}, {"input": [17.0, -43.0], "expected": 17.0}, {"input": [17.0, -42.5], "expected": 17.0}, {"input": [17.0, -42.0], "expected": 17.0}, {"input": [17.0, -41.5], "expected": 17.0}, {"input": [17.0, -41.0], "expected": 17.0}, {"input": [17.0, -40.5], "expected": 17.0}, {"input": [17.0, -40.0], "expected": 17.0}, {"input": [17.0, -39.5], "expected": 17.0}, {"input": [17.0, -39.0], "expected": 17.0}, {"input": [17.0, -38.5], "expected": 17.0}, {"input": [17.0, -38.0], "expected": 17.0}, {"input": [17.0, -37.5], "expected": 17.0}, {"input": [17.0, -37.0], "expected": 17.0}, {"input": [17.0, -36.5], "expected": 17.0}, {"input": [17.0, -36.0], "expected": 17.0}, {"input": [17.0, -35.5], "expected": 17.0}, {"input": [17.0, -35.0], "expected": 17.0}, {"input": [17.0, -34.5], "expected": 17.0}, {"input": [17.0, -34.0], "expected": 17.0}, {"input": [17.0, -33.5], "expected": 17.0}, {"input": [17.0, -33.0], "expected": 17.0}, {"input": [17.0, -32.5], "expected": 17.0}, {"input": [17.0, -32.0], "expected": 17.0}, {"input": [17.0, -31.5], "expected": 17.0}, {"input": [17.0, -31.0], "expected": 17.0}, {"input": [17.0, -30.5], "expected": 17.0}, {"input": [17.0, -30.0], "expected": 17.0}, {"input": [17.0, -29.5], "expected": 17.0}, {"input": [17.0, -29.0], "expected": 17.0}, {"input": [17.0, -28.5], "expected": 17.0}, {"input": [17.0, -28.0], "expected": 17.0}, {"input": [17.0, -27.5], "expected": 17.0}, {"input": [17.0, -27.0], "expected": 17.0}, {"input": [17.0, -26.5], "expected": 17.0}, {"input": [17.0, -26.0], "expected": 17.0}, {"input": [17.0, -25.5], "expected": 17.0}, {"input": [17.0, -25.0], "expected": 17.0}, {"input": [17.0, -24.5], "expected": 17.0}, {"input": [17.0, -24.0], "expected": 17.0}, {"input": [17.0, -23.5], "expected": 17.0}, {"input": [17.0, -23.0], "expected": 17.0}, {"input": [17.0, -22.5], "expected": 17.0}, {"input": [17.0, -22.0], "expected": 17.0}, {"input": [17.0, -21.5], "expected": 17.0}, {"input": [17.0, -21.0], "expected": 17.0}, {"input": [17.0, -20.5], "expected": 17.0}, {"input": [17.0, -20.0], "expected": 17.0}, {"input": [17.0, -19.5], "expected": 17.0}, {"input": [17.0, -19.0], "expected": 17.0}, {"input": [17.0, -18.5], "expected": 17.0}, {"input": [17.0, -18.0], "expected": 17.0}, {"input": [17.0, -17.5], "expected": 17.0}, {"input": [17.0, -17.0], "expected": 17.0}, {"input": [17.0, -16.5], "expected": 17.000000000000004}, {"input": [17.0, -16.0], "expected": 17.000000000000004}, {"input": [17.0, -15.5], "expected": 17.000000000000007}, {"input": [17.0, -15.0], "expected": 17.000000000000014}, {"input": [17.0, -14.5], "expected": 17.00000000000002}, {"input": [17.0, -14.0], "expected": 17.000000000000036}, {"input": [17.0, -13.5], "expected": 17.000000000000057}, {"input": [17.0, -13.0], "expected": 17.000000000000092}, {"input": [17.0, -12.5], "expected": 17.000000000000153}, {"input": [17.0, -12.0], "expected": 17.000000000000256}, {"input": [17.0, -11.5], "expected": 17.00000000000042}, {"input": [17.0, -11.0], "expected": 17.000000000000693}, {"input": [17.0, -10.5], "expected": 17.00000000000114}, {"input": [17.0, -10.0], "expected": 17.00000000000188}, {"input": [17.0, -9.5], "expected": 17.000000000003098}, {"input": [17.0, -9.0], "expected": 17.00000000000511}, {"input": [17.0, -8.5], "expected": 17.000000000008423}, {"input": [17.0, -8.0], "expected": 17.000000000013888}, {"input": [17.0, -7.5], "expected": 17.000000000022897}, {"input": [17.0, -7.0], "expected": 17.00000000003775}, {"input": [17.0, -6.5], "expected": 17.00000000006224}, {"input": [17.0, -6.0], "expected": 17.00000000010262}, {"input": [17.0, -5.5], "expected": 17.00000000016919}, {"input": [17.0, -5.0], "expected": 17.00000000027895}, {"input": [17.0, -4.5], "expected": 17.000000000459906}, {"input": [17.0, -4.0], "expected": 17.000000000758256}, {"input": [17.0, -3.5], "expected": 17.000000001250154}, {"input": [17.0, -3.0], "expected": 17.000000002061153}, {"input": [17.0, -2.5], "expected": 17.000000003398267}, {"input": [17.0, -2.0], "expected": 17.000000005602796}, {"input": [17.0, -1.5], "expected": 17.00000000923745}, {"input": [17.0, -1.0], "expected": 17.00000001522998}, {"input": [17.0, -0.5], "expected": 17.00000002510999}, {"input": [17.0, 0.0], "expected": 17.000000041399375}, {"input": [17.0, 0.5], "expected": 17.000000068256032}, {"input": [17.0, 1.0], "expected": 17.00000011253517}, {"input": [17.0, 1.5], "expected": 17.00000018553912}, {"input": [17.0, 2.0], "expected": 17.000000305902272}, {"input": [17.0, 2.5], "expected": 17.000000504347536}, {"input": [17.0, 3.0], "expected": 17.000000831528375}, {"input": [17.0, 3.5], "expected": 17.000001370958145}, {"input": [17.0, 4.0], "expected": 17.000002260326852}, {"input": [17.0, 4.5], "expected": 17.000003726646227}, {"input": [17.0, 5.0], "expected": 17.000006144193478}, {"input": [17.0, 5.5], "expected": 17.00001013004229}, {"input": [17.0, 6.0], "expected": 17.000016701561318}, {"input": [17.0, 6.5], "expected": 17.000027536070228}, {"input": [17.0, 7.0], "expected": 17.000045398899218}, {"input": [17.0, 7.5], "expected": 17.00007484902863}, {"input": [17.0, 8.0], "expected": 17.000123402189722}, {"input": [17.0, 8.5], "expected": 17.000203447672128}, {"input": [17.0, 9.0], "expected": 17.000335406372894}, {"input": [17.0, 9.5], "expected": 17.00055293147536}, {"input": [17.0, 10.0], "expected": 17.000911466453775}, {"input": [17.0, 10.5], "expected": 17.001502310159754}, {"input": [17.0, 11.0], "expected": 17.002475685137732}, {"input": [17.0, 11.5], "expected": 17.004078443270572}, {"input": [17.0, 12.0], "expected": 17.006715348489116}, {"input": [17.0, 12.5], "expected": 17.011047744848593}, {"input": [17.0, 13.0], "expected": 17.01814992791781}, {"input": [17.0, 13.5], "expected": 17.02975041827262}, {"input": [17.0, 14.0], "expected": 17.048587351573744}, {"input": [17.0, 14.5], "expected": 17.07888973429255}, {"input": [17.0, 15.0], "expected": 17.126928011042974}, {"input": [17.0, 15.5], "expected": 17.201413277982752}, {"input": [17.0, 16.0], "expected": 17.313261687518224}, {"input": [17.0, 16.5], "expected": 17.47407698418011}, {"input": [17.0, 17.0], "expected": 17.693147180559944}, {"input": [17.0, 17.5], "expected": 17.97407698418011}, {"input": [17.0, 18.0], "expected": 18.313261687518224}, {"input": [17.0, 18.5], "expected": 18.701413277982752}, {"input": [17.0, 19.0], "expected": 19.126928011042974}, {"input": [17.0, 19.5], "expected": 19.57888973429255}, {"input": [17.0, 20.0], "expected": 20.048587351573744}, {"input": [17.0, 20.5], "expected": 20.52975041827262}, {"input": [17.0, 21.0], "expected": 21.01814992791781}, {"input": [17.0, 21.5], "expected": 21.511047744848593}, {"input": [17.0, 22.0], "expected": 22.006715348489116}, {"input": [17.0, 22.5], "expected": 22.504078443270572}, {"input": [17.0, 23.0], "expected": 23.002475685137732}, {"input": [17.0, 23.5], "expected": 23.501502310159754}, {"input": [17.0, 24.0], "expected": 24.000911466453775}, {"input": [17.0, 24.5], "expected": 24.50055293147536}, {"input": [17.0, 25.0], "expected": 25.000335406372894}, {"input": [17.0, 25.5], "expected": 25.500203447672128}, {"input": [17.0, 26.0], "expected": 26.000123402189722}, {"input": [17.0, 26.5], "expected": 26.50007484902863}, {"input": [17.0, 27.0], "expected": 27.000045398899218}, {"input": [17.0, 27.5], "expected": 27.500027536070228}, {"input": [17.0, 28.0], "expected": 28.000016701561318}, {"input": [17.0, 28.5], "expected": 28.50001013004229}, {"input": [17.0, 29.0], "expected": 29.000006144193478}, {"input": [17.0, 29.5], "expected": 29.500003726646227}, {"input": [17.0, 30.0], "expected": 30.000002260326852}, {"input": [17.0, 30.5], "expected": 30.500001370958145}, {"input": [17.0, 31.0], "expected": 31.000000831528375}, {"input": [17.0, 31.5], "expected": 31.500000504347536}, {"input": [17.0, 32.0], "expected": 32.000000305902276}, {"input": [17.0, 32.5], "expected": 32.50000018553912}, {"input": [17.0, 33.0], "expected": 33.00000011253517}, {"input": [17.0, 33.5], "expected": 33.50000006825603}, {"input": [17.0, 34.0], "expected": 34.000000041399375}, {"input": [17.0, 34.5], "expected": 34.50000002510999}, {"input": [17.0, 35.0], "expected": 35.00000001522998}, {"input": [17.0, 35.5], "expected": 35.500000009237446}, {"input": [17.0, 36.0], "expected": 36.00000000560279}, {"input": [17.0, 36.5], "expected": 36.50000000339827}, {"input": [17.0, 37.0], "expected": 37.00000000206116}, {"input": [17.0, 37.5], "expected": 37.50000000125015}, {"input": [17.0, 38.0], "expected": 38.000000000758256}, {"input": [17.0, 38.5], "expected": 38.500000000459906}, {"input": [17.0, 39.0], "expected": 39.000000000278945}, {"input": [17.0, 39.5], "expected": 39.50000000016919}, {"input": [17.0, 40.0], "expected": 40.00000000010262}, {"input": [17.0, 40.5], "expected": 40.50000000006224}, {"input": [17.0, 41.0], "expected": 41.00000000003775}, {"input": [17.0, 41.5], "expected": 41.5000000000229}, {"input": [17.0, 42.0], "expected": 42.00000000001389}, {"input": [17.0, 42.5], "expected": 42.50000000000842}, {"input": [17.0, 43.0], "expected": 43.00000000000511}, {"input": [17.0, 43.5], "expected": 43.5000000000031}, {"input": [17.0, 44.0], "expected": 44.00000000000188}, {"input": [17.0, 44.5], "expected": 44.50000000000114}, {"input": [17.0, 45.0], "expected": 45.00000000000069}, {"input": [17.0, 45.5], "expected": 45.50000000000042}, {"input": [17.0, 46.0], "expected": 46.000000000000256}, {"input": [17.0, 46.5], "expected": 46.500000000000156}, {"input": [17.0, 47.0], "expected": 47.00000000000009}, {"input": [17.0, 47.5], "expected": 47.50000000000006}, {"input": [17.0, 48.0], "expected": 48.000000000000036}, {"input": [17.0, 48.5], "expected": 48.50000000000002}, {"input": [17.0, 49.0], "expected": 49.000000000000014}, {"input": [17.0, 49.5], "expected": 49.50000000000001}, {"input": [17.0, 50.0], "expected": 50.00000000000001}, {"input": [17.0, 50.5], "expected": 50.5}, {"input": [17.0, 51.0], "expected": 51.0}, {"input": [17.0, 51.5], "expected": 51.5}, {"input": [17.0, 52.0], "expected": 52.0}, {"input": [17.0, 52.5], "expected": 52.5}, {"input": [17.0, 53.0], "expected": 53.0}, {"input": [17.0, 53.5], "expected": 53.5}, {"input": [17.0, 54.0], "expected": 54.0}, {"input": [17.0, 54.5], "expected": 54.5}, {"input": [17.0, 55.0], "expected": 55.0}, {"input": [17.0, 55.5], "expected": 55.5}, {"input": [17.0, 56.0], "expected": 56.0}, {"input": [17.0, 56.5], "expected": 56.5}, {"input": [17.0, 57.0], "expected": 57.0}, {"input": [17.0, 57.5], "expected": 57.5}, {"input": [17.0, 58.0], "expected": 58.0}, {"input": [17.0, 58.5], "expected": 58.5}, {"input": [17.0, 59.0], "expected": 59.0}, {"input": [17.0, 59.5], "expected": 59.5}, {"input": [17.0, 60.0], "expected": 60.0}, {"input": [17.0, 60.5], "expected": 60.5}, {"input": [17.0, 61.0], "expected": 61.0}, {"input": [17.0, 61.5], "expected": 61.5}, {"input": [17.0, 62.0], "expected": 62.0}, {"input": [17.0, 62.5], "expected": 62.5}, {"input": [17.0, 63.0], "expected": 63.0}, {"input": [17.0, 63.5], "expected": 63.5}, {"input": [17.0, 64.0], "expected": 64.0}, {"input": [17.0, 64.5], "expected": 64.5}, {"input": [17.0, 65.0], "expected": 65.0}, {"input": [17.0, 65.5], "expected": 65.5}, {"input": [17.0, 66.0], "expected": 66.0}, {"input": [17.0, 66.5], "expected": 66.5}, {"input": [17.0, 67.0], "expected": 67.0}, {"input": [17.0, 67.5], "expected": 67.5}, {"input": [17.0, 68.0], "expected": 68.0}, {"input": [17.0, 68.5], "expected": 68.5}, {"input": [17.0, 69.0], "expected": 69.0}, {"input": [17.0, 69.5], "expected": 69.5}, {"input": [17.0, 70.0], "expected": 70.0}, {"input": [17.0, 70.5], "expected": 70.5}, {"input": [17.0, 71.0], "expected": 71.0}, {"input": [17.0, 71.5], "expected": 71.5}, {"input": [17.0, 72.0], "expected": 72.0}, {"input": [17.0, 72.5], "expected": 72.5}, {"input": [17.0, 73.0], "expected": 73.0}, {"input": [17.0, 73.5], "expected": 73.5}, {"input": [17.0, 74.0], "expected": 74.0}, {"input": [17.0, 74.5], "expected": 74.5}, {"input": [17.0, 75.0], "expected": 75.0}, {"input": [17.0, 75.5], "expected": 75.5}, {"input": [17.0, 76.0], "expected": 76.0}, {"input": [17.0, 76.5], "expected": 76.5}, {"input": [17.0, 77.0], "expected": 77.0}, {"input": [17.0, 77.5], "expected": 77.5}, {"input": [17.0, 78.0], "expected": 78.0}, {"input": [17.0, 78.5], "expected": 78.5}, {"input": [17.0, 79.0], "expected": 79.0}, {"input": [17.0, 79.5], "expected": 79.5}, {"input": [17.0, 80.0], "expected": 80.0}, {"input": [17.0, 80.5], "expected": 80.5}, {"input": [17.0, 81.0], "expected": 81.0}, {"input": [17.0, 81.5], "expected": 81.5}, {"input": [17.0, 82.0], "expected": 82.0}, {"input": [17.0, 82.5], "expected": 82.5}, {"input": [17.0, 83.0], "expected": 83.0}, {"input": [17.0, 83.5], "expected": 83.5}, {"input": [17.0, 84.0], "expected": 84.0}, {"input": [17.0, 84.5], "expected": 84.5}, {"input": [17.0, 85.0], "expected": 85.0}, {"input": [17.0, 85.5], "expected": 85.5}, {"input": [17.0, 86.0], "expected": 86.0}, {"input": [17.0, 86.5], "expected": 86.5}, {"input": [17.0, 87.0], "expected": 87.0}, {"input": [17.0, 87.5], "expected": 87.5}, {"input": [17.0, 88.0], "expected": 88.0}, {"input": [17.0, 88.5], "expected": 88.5}, {"input": [17.0, 89.0], "expected": 89.0}, {"input": [17.0, 89.5], "expected": 89.5}, {"input": [17.0, 90.0], "expected": 90.0}, {"input": [17.0, 90.5], "expected": 90.5}, {"input": [17.0, 91.0], "expected": 91.0}, {"input": [17.0, 91.5], "expected": 91.5}, {"input": [17.0, 92.0], "expected": 92.0}, {"input": [17.0, 92.5], "expected": 92.5}, {"input": [17.0, 93.0], "expected": 93.0}, {"input": [17.0, 93.5], "expected": 93.5}, {"input": [17.0, 94.0], "expected": 94.0}, {"input": [17.0, 94.5], "expected": 94.5}, {"input": [17.0, 95.0], "expected": 95.0}, {"input": [17.0, 95.5], "expected": 95.5}, {"input": [17.0, 96.0], "expected": 96.0}, {"input": [17.0, 96.5], "expected": 96.5}, {"input": [17.0, 97.0], "expected": 97.0}, {"input": [17.0, 97.5], "expected": 97.5}, {"input": [17.0, 98.0], "expected": 98.0}, {"input": [17.0, 98.5], "expected": 98.5}, {"input": [17.0, 99.0], "expected": 99.0}, {"input": [17.0, 99.5], "expected": 99.5}, {"input": [17.5, -100.0], "expected": 17.5}, {"input": [17.5, -99.5], "expected": 17.5}, {"input": [17.5, -99.0], "expected": 17.5}, {"input": [17.5, -98.5], "expected": 17.5}, {"input": [17.5, -98.0], "expected": 17.5}, {"input": [17.5, -97.5], "expected": 17.5}, {"input": [17.5, -97.0], "expected": 17.5}, {"input": [17.5, -96.5], "expected": 17.5}, {"input": [17.5, -96.0], "expected": 17.5}, {"input": [17.5, -95.5], "expected": 17.5}, {"input": [17.5, -95.0], "expected": 17.5}, {"input": [17.5, -94.5], "expected": 17.5}, {"input": [17.5, -94.0], "expected": 17.5}, {"input": [17.5, -93.5], "expected": 17.5}, {"input": [17.5, -93.0], "expected": 17.5}, {"input": [17.5, -92.5], "expected": 17.5}, {"input": [17.5, -92.0], "expected": 17.5}, {"input": [17.5, -91.5], "expected": 17.5}, {"input": [17.5, -91.0], "expected": 17.5}, {"input": [17.5, -90.5], "expected": 17.5}, {"input": [17.5, -90.0], "expected": 17.5}, {"input": [17.5, -89.5], "expected": 17.5}, {"input": [17.5, -89.0], "expected": 17.5}, {"input": [17.5, -88.5], "expected": 17.5}, {"input": [17.5, -88.0], "expected": 17.5}, {"input": [17.5, -87.5], "expected": 17.5}, {"input": [17.5, -87.0], "expected": 17.5}, {"input": [17.5, -86.5], "expected": 17.5}, {"input": [17.5, -86.0], "expected": 17.5}, {"input": [17.5, -85.5], "expected": 17.5}, {"input": [17.5, -85.0], "expected": 17.5}, {"input": [17.5, -84.5], "expected": 17.5}, {"input": [17.5, -84.0], "expected": 17.5}, {"input": [17.5, -83.5], "expected": 17.5}, {"input": [17.5, -83.0], "expected": 17.5}, {"input": [17.5, -82.5], "expected": 17.5}, {"input": [17.5, -82.0], "expected": 17.5}, {"input": [17.5, -81.5], "expected": 17.5}, {"input": [17.5, -81.0], "expected": 17.5}, {"input": [17.5, -80.5], "expected": 17.5}, {"input": [17.5, -80.0], "expected": 17.5}, {"input": [17.5, -79.5], "expected": 17.5}, {"input": [17.5, -79.0], "expected": 17.5}, {"input": [17.5, -78.5], "expected": 17.5}, {"input": [17.5, -78.0], "expected": 17.5}, {"input": [17.5, -77.5], "expected": 17.5}, {"input": [17.5, -77.0], "expected": 17.5}, {"input": [17.5, -76.5], "expected": 17.5}, {"input": [17.5, -76.0], "expected": 17.5}, {"input": [17.5, -75.5], "expected": 17.5}, {"input": [17.5, -75.0], "expected": 17.5}, {"input": [17.5, -74.5], "expected": 17.5}, {"input": [17.5, -74.0], "expected": 17.5}, {"input": [17.5, -73.5], "expected": 17.5}, {"input": [17.5, -73.0], "expected": 17.5}, {"input": [17.5, -72.5], "expected": 17.5}, {"input": [17.5, -72.0], "expected": 17.5}, {"input": [17.5, -71.5], "expected": 17.5}, {"input": [17.5, -71.0], "expected": 17.5}, {"input": [17.5, -70.5], "expected": 17.5}, {"input": [17.5, -70.0], "expected": 17.5}, {"input": [17.5, -69.5], "expected": 17.5}, {"input": [17.5, -69.0], "expected": 17.5}, {"input": [17.5, -68.5], "expected": 17.5}, {"input": [17.5, -68.0], "expected": 17.5}, {"input": [17.5, -67.5], "expected": 17.5}, {"input": [17.5, -67.0], "expected": 17.5}, {"input": [17.5, -66.5], "expected": 17.5}, {"input": [17.5, -66.0], "expected": 17.5}, {"input": [17.5, -65.5], "expected": 17.5}, {"input": [17.5, -65.0], "expected": 17.5}, {"input": [17.5, -64.5], "expected": 17.5}, {"input": [17.5, -64.0], "expected": 17.5}, {"input": [17.5, -63.5], "expected": 17.5}, {"input": [17.5, -63.0], "expected": 17.5}, {"input": [17.5, -62.5], "expected": 17.5}, {"input": [17.5, -62.0], "expected": 17.5}, {"input": [17.5, -61.5], "expected": 17.5}, {"input": [17.5, -61.0], "expected": 17.5}, {"input": [17.5, -60.5], "expected": 17.5}, {"input": [17.5, -60.0], "expected": 17.5}, {"input": [17.5, -59.5], "expected": 17.5}, {"input": [17.5, -59.0], "expected": 17.5}, {"input": [17.5, -58.5], "expected": 17.5}, {"input": [17.5, -58.0], "expected": 17.5}, {"input": [17.5, -57.5], "expected": 17.5}, {"input": [17.5, -57.0], "expected": 17.5}, {"input": [17.5, -56.5], "expected": 17.5}, {"input": [17.5, -56.0], "expected": 17.5}, {"input": [17.5, -55.5], "expected": 17.5}, {"input": [17.5, -55.0], "expected": 17.5}, {"input": [17.5, -54.5], "expected": 17.5}, {"input": [17.5, -54.0], "expected": 17.5}, {"input": [17.5, -53.5], "expected": 17.5}, {"input": [17.5, -53.0], "expected": 17.5}, {"input": [17.5, -52.5], "expected": 17.5}, {"input": [17.5, -52.0], "expected": 17.5}, {"input": [17.5, -51.5], "expected": 17.5}, {"input": [17.5, -51.0], "expected": 17.5}, {"input": [17.5, -50.5], "expected": 17.5}, {"input": [17.5, -50.0], "expected": 17.5}, {"input": [17.5, -49.5], "expected": 17.5}, {"input": [17.5, -49.0], "expected": 17.5}, {"input": [17.5, -48.5], "expected": 17.5}, {"input": [17.5, -48.0], "expected": 17.5}, {"input": [17.5, -47.5], "expected": 17.5}, {"input": [17.5, -47.0], "expected": 17.5}, {"input": [17.5, -46.5], "expected": 17.5}, {"input": [17.5, -46.0], "expected": 17.5}, {"input": [17.5, -45.5], "expected": 17.5}, {"input": [17.5, -45.0], "expected": 17.5}, {"input": [17.5, -44.5], "expected": 17.5}, {"input": [17.5, -44.0], "expected": 17.5}, {"input": [17.5, -43.5], "expected": 17.5}, {"input": [17.5, -43.0], "expected": 17.5}, {"input": [17.5, -42.5], "expected": 17.5}, {"input": [17.5, -42.0], "expected": 17.5}, {"input": [17.5, -41.5], "expected": 17.5}, {"input": [17.5, -41.0], "expected": 17.5}, {"input": [17.5, -40.5], "expected": 17.5}, {"input": [17.5, -40.0], "expected": 17.5}, {"input": [17.5, -39.5], "expected": 17.5}, {"input": [17.5, -39.0], "expected": 17.5}, {"input": [17.5, -38.5], "expected": 17.5}, {"input": [17.5, -38.0], "expected": 17.5}, {"input": [17.5, -37.5], "expected": 17.5}, {"input": [17.5, -37.0], "expected": 17.5}, {"input": [17.5, -36.5], "expected": 17.5}, {"input": [17.5, -36.0], "expected": 17.5}, {"input": [17.5, -35.5], "expected": 17.5}, {"input": [17.5, -35.0], "expected": 17.5}, {"input": [17.5, -34.5], "expected": 17.5}, {"input": [17.5, -34.0], "expected": 17.5}, {"input": [17.5, -33.5], "expected": 17.5}, {"input": [17.5, -33.0], "expected": 17.5}, {"input": [17.5, -32.5], "expected": 17.5}, {"input": [17.5, -32.0], "expected": 17.5}, {"input": [17.5, -31.5], "expected": 17.5}, {"input": [17.5, -31.0], "expected": 17.5}, {"input": [17.5, -30.5], "expected": 17.5}, {"input": [17.5, -30.0], "expected": 17.5}, {"input": [17.5, -29.5], "expected": 17.5}, {"input": [17.5, -29.0], "expected": 17.5}, {"input": [17.5, -28.5], "expected": 17.5}, {"input": [17.5, -28.0], "expected": 17.5}, {"input": [17.5, -27.5], "expected": 17.5}, {"input": [17.5, -27.0], "expected": 17.5}, {"input": [17.5, -26.5], "expected": 17.5}, {"input": [17.5, -26.0], "expected": 17.5}, {"input": [17.5, -25.5], "expected": 17.5}, {"input": [17.5, -25.0], "expected": 17.5}, {"input": [17.5, -24.5], "expected": 17.5}, {"input": [17.5, -24.0], "expected": 17.5}, {"input": [17.5, -23.5], "expected": 17.5}, {"input": [17.5, -23.0], "expected": 17.5}, {"input": [17.5, -22.5], "expected": 17.5}, {"input": [17.5, -22.0], "expected": 17.5}, {"input": [17.5, -21.5], "expected": 17.5}, {"input": [17.5, -21.0], "expected": 17.5}, {"input": [17.5, -20.5], "expected": 17.5}, {"input": [17.5, -20.0], "expected": 17.5}, {"input": [17.5, -19.5], "expected": 17.5}, {"input": [17.5, -19.0], "expected": 17.5}, {"input": [17.5, -18.5], "expected": 17.5}, {"input": [17.5, -18.0], "expected": 17.5}, {"input": [17.5, -17.5], "expected": 17.5}, {"input": [17.5, -17.0], "expected": 17.5}, {"input": [17.5, -16.5], "expected": 17.5}, {"input": [17.5, -16.0], "expected": 17.500000000000004}, {"input": [17.5, -15.5], "expected": 17.500000000000004}, {"input": [17.5, -15.0], "expected": 17.500000000000007}, {"input": [17.5, -14.5], "expected": 17.500000000000014}, {"input": [17.5, -14.0], "expected": 17.50000000000002}, {"input": [17.5, -13.5], "expected": 17.500000000000036}, {"input": [17.5, -13.0], "expected": 17.500000000000057}, {"input": [17.5, -12.5], "expected": 17.500000000000092}, {"input": [17.5, -12.0], "expected": 17.500000000000153}, {"input": [17.5, -11.5], "expected": 17.500000000000256}, {"input": [17.5, -11.0], "expected": 17.50000000000042}, {"input": [17.5, -10.5], "expected": 17.500000000000693}, {"input": [17.5, -10.0], "expected": 17.50000000000114}, {"input": [17.5, -9.5], "expected": 17.50000000000188}, {"input": [17.5, -9.0], "expected": 17.500000000003098}, {"input": [17.5, -8.5], "expected": 17.50000000000511}, {"input": [17.5, -8.0], "expected": 17.500000000008423}, {"input": [17.5, -7.5], "expected": 17.500000000013888}, {"input": [17.5, -7.0], "expected": 17.500000000022897}, {"input": [17.5, -6.5], "expected": 17.50000000003775}, {"input": [17.5, -6.0], "expected": 17.50000000006224}, {"input": [17.5, -5.5], "expected": 17.50000000010262}, {"input": [17.5, -5.0], "expected": 17.50000000016919}, {"input": [17.5, -4.5], "expected": 17.50000000027895}, {"input": [17.5, -4.0], "expected": 17.500000000459906}, {"input": [17.5, -3.5], "expected": 17.500000000758256}, {"input": [17.5, -3.0], "expected": 17.500000001250154}, {"input": [17.5, -2.5], "expected": 17.500000002061153}, {"input": [17.5, -2.0], "expected": 17.500000003398267}, {"input": [17.5, -1.5], "expected": 17.500000005602796}, {"input": [17.5, -1.0], "expected": 17.50000000923745}, {"input": [17.5, -0.5], "expected": 17.50000001522998}, {"input": [17.5, 0.0], "expected": 17.50000002510999}, {"input": [17.5, 0.5], "expected": 17.500000041399375}, {"input": [17.5, 1.0], "expected": 17.500000068256032}, {"input": [17.5, 1.5], "expected": 17.50000011253517}, {"input": [17.5, 2.0], "expected": 17.50000018553912}, {"input": [17.5, 2.5], "expected": 17.500000305902272}, {"input": [17.5, 3.0], "expected": 17.500000504347536}, {"input": [17.5, 3.5], "expected": 17.500000831528375}, {"input": [17.5, 4.0], "expected": 17.500001370958145}, {"input": [17.5, 4.5], "expected": 17.500002260326852}, {"input": [17.5, 5.0], "expected": 17.500003726646227}, {"input": [17.5, 5.5], "expected": 17.500006144193478}, {"input": [17.5, 6.0], "expected": 17.50001013004229}, {"input": [17.5, 6.5], "expected": 17.500016701561318}, {"input": [17.5, 7.0], "expected": 17.500027536070228}, {"input": [17.5, 7.5], "expected": 17.500045398899218}, {"input": [17.5, 8.0], "expected": 17.50007484902863}, {"input": [17.5, 8.5], "expected": 17.500123402189722}, {"input": [17.5, 9.0], "expected": 17.500203447672128}, {"input": [17.5, 9.5], "expected": 17.500335406372894}, {"input": [17.5, 10.0], "expected": 17.50055293147536}, {"input": [17.5, 10.5], "expected": 17.500911466453775}, {"input": [17.5, 11.0], "expected": 17.501502310159754}, {"input": [17.5, 11.5], "expected": 17.502475685137732}, {"input": [17.5, 12.0], "expected": 17.504078443270572}, {"input": [17.5, 12.5], "expected": 17.506715348489116}, {"input": [17.5, 13.0], "expected": 17.511047744848593}, {"input": [17.5, 13.5], "expected": 17.51814992791781}, {"input": [17.5, 14.0], "expected": 17.52975041827262}, {"input": [17.5, 14.5], "expected": 17.548587351573744}, {"input": [17.5, 15.0], "expected": 17.57888973429255}, {"input": [17.5, 15.5], "expected": 17.626928011042974}, {"input": [17.5, 16.0], "expected": 17.701413277982752}, {"input": [17.5, 16.5], "expected": 17.813261687518224}, {"input": [17.5, 17.0], "expected": 17.97407698418011}, {"input": [17.5, 17.5], "expected": 18.193147180559944}, {"input": [17.5, 18.0], "expected": 18.47407698418011}, {"input": [17.5, 18.5], "expected": 18.813261687518224}, {"input": [17.5, 19.0], "expected": 19.201413277982752}, {"input": [17.5, 19.5], "expected": 19.626928011042974}, {"input": [17.5, 20.0], "expected": 20.07888973429255}, {"input": [17.5, 20.5], "expected": 20.548587351573744}, {"input": [17.5, 21.0], "expected": 21.02975041827262}, {"input": [17.5, 21.5], "expected": 21.51814992791781}, {"input": [17.5, 22.0], "expected": 22.011047744848593}, {"input": [17.5, 22.5], "expected": 22.506715348489116}, {"input": [17.5, 23.0], "expected": 23.004078443270572}, {"input": [17.5, 23.5], "expected": 23.502475685137732}, {"input": [17.5, 24.0], "expected": 24.001502310159754}, {"input": [17.5, 24.5], "expected": 24.500911466453775}, {"input": [17.5, 25.0], "expected": 25.00055293147536}, {"input": [17.5, 25.5], "expected": 25.500335406372894}, {"input": [17.5, 26.0], "expected": 26.000203447672128}, {"input": [17.5, 26.5], "expected": 26.500123402189722}, {"input": [17.5, 27.0], "expected": 27.00007484902863}, {"input": [17.5, 27.5], "expected": 27.500045398899218}, {"input": [17.5, 28.0], "expected": 28.000027536070228}, {"input": [17.5, 28.5], "expected": 28.500016701561318}, {"input": [17.5, 29.0], "expected": 29.00001013004229}, {"input": [17.5, 29.5], "expected": 29.500006144193478}, {"input": [17.5, 30.0], "expected": 30.000003726646227}, {"input": [17.5, 30.5], "expected": 30.500002260326852}, {"input": [17.5, 31.0], "expected": 31.000001370958145}, {"input": [17.5, 31.5], "expected": 31.500000831528375}, {"input": [17.5, 32.0], "expected": 32.00000050434753}, {"input": [17.5, 32.5], "expected": 32.500000305902276}, {"input": [17.5, 33.0], "expected": 33.00000018553912}, {"input": [17.5, 33.5], "expected": 33.50000011253517}, {"input": [17.5, 34.0], "expected": 34.00000006825603}, {"input": [17.5, 34.5], "expected": 34.500000041399375}, {"input": [17.5, 35.0], "expected": 35.00000002510999}, {"input": [17.5, 35.5], "expected": 35.50000001522998}, {"input": [17.5, 36.0], "expected": 36.000000009237446}, {"input": [17.5, 36.5], "expected": 36.50000000560279}, {"input": [17.5, 37.0], "expected": 37.00000000339827}, {"input": [17.5, 37.5], "expected": 37.50000000206116}, {"input": [17.5, 38.0], "expected": 38.00000000125015}, {"input": [17.5, 38.5], "expected": 38.500000000758256}, {"input": [17.5, 39.0], "expected": 39.000000000459906}, {"input": [17.5, 39.5], "expected": 39.500000000278945}, {"input": [17.5, 40.0], "expected": 40.00000000016919}, {"input": [17.5, 40.5], "expected": 40.50000000010262}, {"input": [17.5, 41.0], "expected": 41.00000000006224}, {"input": [17.5, 41.5], "expected": 41.50000000003775}, {"input": [17.5, 42.0], "expected": 42.0000000000229}, {"input": [17.5, 42.5], "expected": 42.50000000001389}, {"input": [17.5, 43.0], "expected": 43.00000000000842}, {"input": [17.5, 43.5], "expected": 43.50000000000511}, {"input": [17.5, 44.0], "expected": 44.0000000000031}, {"input": [17.5, 44.5], "expected": 44.50000000000188}, {"input": [17.5, 45.0], "expected": 45.00000000000114}, {"input": [17.5, 45.5], "expected": 45.50000000000069}, {"input": [17.5, 46.0], "expected": 46.00000000000042}, {"input": [17.5, 46.5], "expected": 46.500000000000256}, {"input": [17.5, 47.0], "expected": 47.000000000000156}, {"input": [17.5, 47.5], "expected": 47.50000000000009}, {"input": [17.5, 48.0], "expected": 48.00000000000006}, {"input": [17.5, 48.5], "expected": 48.500000000000036}, {"input": [17.5, 49.0], "expected": 49.00000000000002}, {"input": [17.5, 49.5], "expected": 49.500000000000014}, {"input": [17.5, 50.0], "expected": 50.00000000000001}, {"input": [17.5, 50.5], "expected": 50.50000000000001}, {"input": [17.5, 51.0], "expected": 51.0}, {"input": [17.5, 51.5], "expected": 51.5}, {"input": [17.5, 52.0], "expected": 52.0}, {"input": [17.5, 52.5], "expected": 52.5}, {"input": [17.5, 53.0], "expected": 53.0}, {"input": [17.5, 53.5], "expected": 53.5}, {"input": [17.5, 54.0], "expected": 54.0}, {"input": [17.5, 54.5], "expected": 54.5}, {"input": [17.5, 55.0], "expected": 55.0}, {"input": [17.5, 55.5], "expected": 55.5}, {"input": [17.5, 56.0], "expected": 56.0}, {"input": [17.5, 56.5], "expected": 56.5}, {"input": [17.5, 57.0], "expected": 57.0}, {"input": [17.5, 57.5], "expected": 57.5}, {"input": [17.5, 58.0], "expected": 58.0}, {"input": [17.5, 58.5], "expected": 58.5}, {"input": [17.5, 59.0], "expected": 59.0}, {"input": [17.5, 59.5], "expected": 59.5}, {"input": [17.5, 60.0], "expected": 60.0}, {"input": [17.5, 60.5], "expected": 60.5}, {"input": [17.5, 61.0], "expected": 61.0}, {"input": [17.5, 61.5], "expected": 61.5}, {"input": [17.5, 62.0], "expected": 62.0}, {"input": [17.5, 62.5], "expected": 62.5}, {"input": [17.5, 63.0], "expected": 63.0}, {"input": [17.5, 63.5], "expected": 63.5}, {"input": [17.5, 64.0], "expected": 64.0}, {"input": [17.5, 64.5], "expected": 64.5}, {"input": [17.5, 65.0], "expected": 65.0}, {"input": [17.5, 65.5], "expected": 65.5}, {"input": [17.5, 66.0], "expected": 66.0}, {"input": [17.5, 66.5], "expected": 66.5}, {"input": [17.5, 67.0], "expected": 67.0}, {"input": [17.5, 67.5], "expected": 67.5}, {"input": [17.5, 68.0], "expected": 68.0}, {"input": [17.5, 68.5], "expected": 68.5}, {"input": [17.5, 69.0], "expected": 69.0}, {"input": [17.5, 69.5], "expected": 69.5}, {"input": [17.5, 70.0], "expected": 70.0}, {"input": [17.5, 70.5], "expected": 70.5}, {"input": [17.5, 71.0], "expected": 71.0}, {"input": [17.5, 71.5], "expected": 71.5}, {"input": [17.5, 72.0], "expected": 72.0}, {"input": [17.5, 72.5], "expected": 72.5}, {"input": [17.5, 73.0], "expected": 73.0}, {"input": [17.5, 73.5], "expected": 73.5}, {"input": [17.5, 74.0], "expected": 74.0}, {"input": [17.5, 74.5], "expected": 74.5}, {"input": [17.5, 75.0], "expected": 75.0}, {"input": [17.5, 75.5], "expected": 75.5}, {"input": [17.5, 76.0], "expected": 76.0}, {"input": [17.5, 76.5], "expected": 76.5}, {"input": [17.5, 77.0], "expected": 77.0}, {"input": [17.5, 77.5], "expected": 77.5}, {"input": [17.5, 78.0], "expected": 78.0}, {"input": [17.5, 78.5], "expected": 78.5}, {"input": [17.5, 79.0], "expected": 79.0}, {"input": [17.5, 79.5], "expected": 79.5}, {"input": [17.5, 80.0], "expected": 80.0}, {"input": [17.5, 80.5], "expected": 80.5}, {"input": [17.5, 81.0], "expected": 81.0}, {"input": [17.5, 81.5], "expected": 81.5}, {"input": [17.5, 82.0], "expected": 82.0}, {"input": [17.5, 82.5], "expected": 82.5}, {"input": [17.5, 83.0], "expected": 83.0}, {"input": [17.5, 83.5], "expected": 83.5}, {"input": [17.5, 84.0], "expected": 84.0}, {"input": [17.5, 84.5], "expected": 84.5}, {"input": [17.5, 85.0], "expected": 85.0}, {"input": [17.5, 85.5], "expected": 85.5}, {"input": [17.5, 86.0], "expected": 86.0}, {"input": [17.5, 86.5], "expected": 86.5}, {"input": [17.5, 87.0], "expected": 87.0}, {"input": [17.5, 87.5], "expected": 87.5}, {"input": [17.5, 88.0], "expected": 88.0}, {"input": [17.5, 88.5], "expected": 88.5}, {"input": [17.5, 89.0], "expected": 89.0}, {"input": [17.5, 89.5], "expected": 89.5}, {"input": [17.5, 90.0], "expected": 90.0}, {"input": [17.5, 90.5], "expected": 90.5}, {"input": [17.5, 91.0], "expected": 91.0}, {"input": [17.5, 91.5], "expected": 91.5}, {"input": [17.5, 92.0], "expected": 92.0}, {"input": [17.5, 92.5], "expected": 92.5}, {"input": [17.5, 93.0], "expected": 93.0}, {"input": [17.5, 93.5], "expected": 93.5}, {"input": [17.5, 94.0], "expected": 94.0}, {"input": [17.5, 94.5], "expected": 94.5}, {"input": [17.5, 95.0], "expected": 95.0}, {"input": [17.5, 95.5], "expected": 95.5}, {"input": [17.5, 96.0], "expected": 96.0}, {"input": [17.5, 96.5], "expected": 96.5}, {"input": [17.5, 97.0], "expected": 97.0}, {"input": [17.5, 97.5], "expected": 97.5}, {"input": [17.5, 98.0], "expected": 98.0}, {"input": [17.5, 98.5], "expected": 98.5}, {"input": [17.5, 99.0], "expected": 99.0}, {"input": [17.5, 99.5], "expected": 99.5}, {"input": [18.0, -100.0], "expected": 18.0}, {"input": [18.0, -99.5], "expected": 18.0}, {"input": [18.0, -99.0], "expected": 18.0}, {"input": [18.0, -98.5], "expected": 18.0}, {"input": [18.0, -98.0], "expected": 18.0}, {"input": [18.0, -97.5], "expected": 18.0}, {"input": [18.0, -97.0], "expected": 18.0}, {"input": [18.0, -96.5], "expected": 18.0}, {"input": [18.0, -96.0], "expected": 18.0}, {"input": [18.0, -95.5], "expected": 18.0}, {"input": [18.0, -95.0], "expected": 18.0}, {"input": [18.0, -94.5], "expected": 18.0}, {"input": [18.0, -94.0], "expected": 18.0}, {"input": [18.0, -93.5], "expected": 18.0}, {"input": [18.0, -93.0], "expected": 18.0}, {"input": [18.0, -92.5], "expected": 18.0}, {"input": [18.0, -92.0], "expected": 18.0}, {"input": [18.0, -91.5], "expected": 18.0}, {"input": [18.0, -91.0], "expected": 18.0}, {"input": [18.0, -90.5], "expected": 18.0}, {"input": [18.0, -90.0], "expected": 18.0}, {"input": [18.0, -89.5], "expected": 18.0}, {"input": [18.0, -89.0], "expected": 18.0}, {"input": [18.0, -88.5], "expected": 18.0}, {"input": [18.0, -88.0], "expected": 18.0}, {"input": [18.0, -87.5], "expected": 18.0}, {"input": [18.0, -87.0], "expected": 18.0}, {"input": [18.0, -86.5], "expected": 18.0}, {"input": [18.0, -86.0], "expected": 18.0}, {"input": [18.0, -85.5], "expected": 18.0}, {"input": [18.0, -85.0], "expected": 18.0}, {"input": [18.0, -84.5], "expected": 18.0}, {"input": [18.0, -84.0], "expected": 18.0}, {"input": [18.0, -83.5], "expected": 18.0}, {"input": [18.0, -83.0], "expected": 18.0}, {"input": [18.0, -82.5], "expected": 18.0}, {"input": [18.0, -82.0], "expected": 18.0}, {"input": [18.0, -81.5], "expected": 18.0}, {"input": [18.0, -81.0], "expected": 18.0}, {"input": [18.0, -80.5], "expected": 18.0}, {"input": [18.0, -80.0], "expected": 18.0}, {"input": [18.0, -79.5], "expected": 18.0}, {"input": [18.0, -79.0], "expected": 18.0}, {"input": [18.0, -78.5], "expected": 18.0}, {"input": [18.0, -78.0], "expected": 18.0}, {"input": [18.0, -77.5], "expected": 18.0}, {"input": [18.0, -77.0], "expected": 18.0}, {"input": [18.0, -76.5], "expected": 18.0}, {"input": [18.0, -76.0], "expected": 18.0}, {"input": [18.0, -75.5], "expected": 18.0}, {"input": [18.0, -75.0], "expected": 18.0}, {"input": [18.0, -74.5], "expected": 18.0}, {"input": [18.0, -74.0], "expected": 18.0}, {"input": [18.0, -73.5], "expected": 18.0}, {"input": [18.0, -73.0], "expected": 18.0}, {"input": [18.0, -72.5], "expected": 18.0}, {"input": [18.0, -72.0], "expected": 18.0}, {"input": [18.0, -71.5], "expected": 18.0}, {"input": [18.0, -71.0], "expected": 18.0}, {"input": [18.0, -70.5], "expected": 18.0}, {"input": [18.0, -70.0], "expected": 18.0}, {"input": [18.0, -69.5], "expected": 18.0}, {"input": [18.0, -69.0], "expected": 18.0}, {"input": [18.0, -68.5], "expected": 18.0}, {"input": [18.0, -68.0], "expected": 18.0}, {"input": [18.0, -67.5], "expected": 18.0}, {"input": [18.0, -67.0], "expected": 18.0}, {"input": [18.0, -66.5], "expected": 18.0}, {"input": [18.0, -66.0], "expected": 18.0}, {"input": [18.0, -65.5], "expected": 18.0}, {"input": [18.0, -65.0], "expected": 18.0}, {"input": [18.0, -64.5], "expected": 18.0}, {"input": [18.0, -64.0], "expected": 18.0}, {"input": [18.0, -63.5], "expected": 18.0}, {"input": [18.0, -63.0], "expected": 18.0}, {"input": [18.0, -62.5], "expected": 18.0}, {"input": [18.0, -62.0], "expected": 18.0}, {"input": [18.0, -61.5], "expected": 18.0}, {"input": [18.0, -61.0], "expected": 18.0}, {"input": [18.0, -60.5], "expected": 18.0}, {"input": [18.0, -60.0], "expected": 18.0}, {"input": [18.0, -59.5], "expected": 18.0}, {"input": [18.0, -59.0], "expected": 18.0}, {"input": [18.0, -58.5], "expected": 18.0}, {"input": [18.0, -58.0], "expected": 18.0}, {"input": [18.0, -57.5], "expected": 18.0}, {"input": [18.0, -57.0], "expected": 18.0}, {"input": [18.0, -56.5], "expected": 18.0}, {"input": [18.0, -56.0], "expected": 18.0}, {"input": [18.0, -55.5], "expected": 18.0}, {"input": [18.0, -55.0], "expected": 18.0}, {"input": [18.0, -54.5], "expected": 18.0}, {"input": [18.0, -54.0], "expected": 18.0}, {"input": [18.0, -53.5], "expected": 18.0}, {"input": [18.0, -53.0], "expected": 18.0}, {"input": [18.0, -52.5], "expected": 18.0}, {"input": [18.0, -52.0], "expected": 18.0}, {"input": [18.0, -51.5], "expected": 18.0}, {"input": [18.0, -51.0], "expected": 18.0}, {"input": [18.0, -50.5], "expected": 18.0}, {"input": [18.0, -50.0], "expected": 18.0}, {"input": [18.0, -49.5], "expected": 18.0}, {"input": [18.0, -49.0], "expected": 18.0}, {"input": [18.0, -48.5], "expected": 18.0}, {"input": [18.0, -48.0], "expected": 18.0}, {"input": [18.0, -47.5], "expected": 18.0}, {"input": [18.0, -47.0], "expected": 18.0}, {"input": [18.0, -46.5], "expected": 18.0}, {"input": [18.0, -46.0], "expected": 18.0}, {"input": [18.0, -45.5], "expected": 18.0}, {"input": [18.0, -45.0], "expected": 18.0}, {"input": [18.0, -44.5], "expected": 18.0}, {"input": [18.0, -44.0], "expected": 18.0}, {"input": [18.0, -43.5], "expected": 18.0}, {"input": [18.0, -43.0], "expected": 18.0}, {"input": [18.0, -42.5], "expected": 18.0}, {"input": [18.0, -42.0], "expected": 18.0}, {"input": [18.0, -41.5], "expected": 18.0}, {"input": [18.0, -41.0], "expected": 18.0}, {"input": [18.0, -40.5], "expected": 18.0}, {"input": [18.0, -40.0], "expected": 18.0}, {"input": [18.0, -39.5], "expected": 18.0}, {"input": [18.0, -39.0], "expected": 18.0}, {"input": [18.0, -38.5], "expected": 18.0}, {"input": [18.0, -38.0], "expected": 18.0}, {"input": [18.0, -37.5], "expected": 18.0}, {"input": [18.0, -37.0], "expected": 18.0}, {"input": [18.0, -36.5], "expected": 18.0}, {"input": [18.0, -36.0], "expected": 18.0}, {"input": [18.0, -35.5], "expected": 18.0}, {"input": [18.0, -35.0], "expected": 18.0}, {"input": [18.0, -34.5], "expected": 18.0}, {"input": [18.0, -34.0], "expected": 18.0}, {"input": [18.0, -33.5], "expected": 18.0}, {"input": [18.0, -33.0], "expected": 18.0}, {"input": [18.0, -32.5], "expected": 18.0}, {"input": [18.0, -32.0], "expected": 18.0}, {"input": [18.0, -31.5], "expected": 18.0}, {"input": [18.0, -31.0], "expected": 18.0}, {"input": [18.0, -30.5], "expected": 18.0}, {"input": [18.0, -30.0], "expected": 18.0}, {"input": [18.0, -29.5], "expected": 18.0}, {"input": [18.0, -29.0], "expected": 18.0}, {"input": [18.0, -28.5], "expected": 18.0}, {"input": [18.0, -28.0], "expected": 18.0}, {"input": [18.0, -27.5], "expected": 18.0}, {"input": [18.0, -27.0], "expected": 18.0}, {"input": [18.0, -26.5], "expected": 18.0}, {"input": [18.0, -26.0], "expected": 18.0}, {"input": [18.0, -25.5], "expected": 18.0}, {"input": [18.0, -25.0], "expected": 18.0}, {"input": [18.0, -24.5], "expected": 18.0}, {"input": [18.0, -24.0], "expected": 18.0}, {"input": [18.0, -23.5], "expected": 18.0}, {"input": [18.0, -23.0], "expected": 18.0}, {"input": [18.0, -22.5], "expected": 18.0}, {"input": [18.0, -22.0], "expected": 18.0}, {"input": [18.0, -21.5], "expected": 18.0}, {"input": [18.0, -21.0], "expected": 18.0}, {"input": [18.0, -20.5], "expected": 18.0}, {"input": [18.0, -20.0], "expected": 18.0}, {"input": [18.0, -19.5], "expected": 18.0}, {"input": [18.0, -19.0], "expected": 18.0}, {"input": [18.0, -18.5], "expected": 18.0}, {"input": [18.0, -18.0], "expected": 18.0}, {"input": [18.0, -17.5], "expected": 18.0}, {"input": [18.0, -17.0], "expected": 18.0}, {"input": [18.0, -16.5], "expected": 18.0}, {"input": [18.0, -16.0], "expected": 18.0}, {"input": [18.0, -15.5], "expected": 18.000000000000004}, {"input": [18.0, -15.0], "expected": 18.000000000000004}, {"input": [18.0, -14.5], "expected": 18.000000000000007}, {"input": [18.0, -14.0], "expected": 18.000000000000014}, {"input": [18.0, -13.5], "expected": 18.00000000000002}, {"input": [18.0, -13.0], "expected": 18.000000000000036}, {"input": [18.0, -12.5], "expected": 18.000000000000057}, {"input": [18.0, -12.0], "expected": 18.000000000000092}, {"input": [18.0, -11.5], "expected": 18.000000000000153}, {"input": [18.0, -11.0], "expected": 18.000000000000256}, {"input": [18.0, -10.5], "expected": 18.00000000000042}, {"input": [18.0, -10.0], "expected": 18.000000000000693}, {"input": [18.0, -9.5], "expected": 18.00000000000114}, {"input": [18.0, -9.0], "expected": 18.00000000000188}, {"input": [18.0, -8.5], "expected": 18.000000000003098}, {"input": [18.0, -8.0], "expected": 18.00000000000511}, {"input": [18.0, -7.5], "expected": 18.000000000008423}, {"input": [18.0, -7.0], "expected": 18.000000000013888}, {"input": [18.0, -6.5], "expected": 18.000000000022897}, {"input": [18.0, -6.0], "expected": 18.00000000003775}, {"input": [18.0, -5.5], "expected": 18.00000000006224}, {"input": [18.0, -5.0], "expected": 18.00000000010262}, {"input": [18.0, -4.5], "expected": 18.00000000016919}, {"input": [18.0, -4.0], "expected": 18.00000000027895}, {"input": [18.0, -3.5], "expected": 18.000000000459906}, {"input": [18.0, -3.0], "expected": 18.000000000758256}, {"input": [18.0, -2.5], "expected": 18.000000001250154}, {"input": [18.0, -2.0], "expected": 18.000000002061153}, {"input": [18.0, -1.5], "expected": 18.000000003398267}, {"input": [18.0, -1.0], "expected": 18.000000005602796}, {"input": [18.0, -0.5], "expected": 18.00000000923745}, {"input": [18.0, 0.0], "expected": 18.00000001522998}, {"input": [18.0, 0.5], "expected": 18.00000002510999}, {"input": [18.0, 1.0], "expected": 18.000000041399375}, {"input": [18.0, 1.5], "expected": 18.000000068256032}, {"input": [18.0, 2.0], "expected": 18.00000011253517}, {"input": [18.0, 2.5], "expected": 18.00000018553912}, {"input": [18.0, 3.0], "expected": 18.000000305902272}, {"input": [18.0, 3.5], "expected": 18.000000504347536}, {"input": [18.0, 4.0], "expected": 18.000000831528375}, {"input": [18.0, 4.5], "expected": 18.000001370958145}, {"input": [18.0, 5.0], "expected": 18.000002260326852}, {"input": [18.0, 5.5], "expected": 18.000003726646227}, {"input": [18.0, 6.0], "expected": 18.000006144193478}, {"input": [18.0, 6.5], "expected": 18.00001013004229}, {"input": [18.0, 7.0], "expected": 18.000016701561318}, {"input": [18.0, 7.5], "expected": 18.000027536070228}, {"input": [18.0, 8.0], "expected": 18.000045398899218}, {"input": [18.0, 8.5], "expected": 18.00007484902863}, {"input": [18.0, 9.0], "expected": 18.000123402189722}, {"input": [18.0, 9.5], "expected": 18.000203447672128}, {"input": [18.0, 10.0], "expected": 18.000335406372894}, {"input": [18.0, 10.5], "expected": 18.00055293147536}, {"input": [18.0, 11.0], "expected": 18.000911466453775}, {"input": [18.0, 11.5], "expected": 18.001502310159754}, {"input": [18.0, 12.0], "expected": 18.002475685137732}, {"input": [18.0, 12.5], "expected": 18.004078443270572}, {"input": [18.0, 13.0], "expected": 18.006715348489116}, {"input": [18.0, 13.5], "expected": 18.011047744848593}, {"input": [18.0, 14.0], "expected": 18.01814992791781}, {"input": [18.0, 14.5], "expected": 18.02975041827262}, {"input": [18.0, 15.0], "expected": 18.048587351573744}, {"input": [18.0, 15.5], "expected": 18.07888973429255}, {"input": [18.0, 16.0], "expected": 18.126928011042974}, {"input": [18.0, 16.5], "expected": 18.201413277982752}, {"input": [18.0, 17.0], "expected": 18.313261687518224}, {"input": [18.0, 17.5], "expected": 18.47407698418011}, {"input": [18.0, 18.0], "expected": 18.693147180559944}, {"input": [18.0, 18.5], "expected": 18.97407698418011}, {"input": [18.0, 19.0], "expected": 19.313261687518224}, {"input": [18.0, 19.5], "expected": 19.701413277982752}, {"input": [18.0, 20.0], "expected": 20.126928011042974}, {"input": [18.0, 20.5], "expected": 20.57888973429255}, {"input": [18.0, 21.0], "expected": 21.048587351573744}, {"input": [18.0, 21.5], "expected": 21.52975041827262}, {"input": [18.0, 22.0], "expected": 22.01814992791781}, {"input": [18.0, 22.5], "expected": 22.511047744848593}, {"input": [18.0, 23.0], "expected": 23.006715348489116}, {"input": [18.0, 23.5], "expected": 23.504078443270572}, {"input": [18.0, 24.0], "expected": 24.002475685137732}, {"input": [18.0, 24.5], "expected": 24.501502310159754}, {"input": [18.0, 25.0], "expected": 25.000911466453775}, {"input": [18.0, 25.5], "expected": 25.50055293147536}, {"input": [18.0, 26.0], "expected": 26.000335406372894}, {"input": [18.0, 26.5], "expected": 26.500203447672128}, {"input": [18.0, 27.0], "expected": 27.000123402189722}, {"input": [18.0, 27.5], "expected": 27.50007484902863}, {"input": [18.0, 28.0], "expected": 28.000045398899218}, {"input": [18.0, 28.5], "expected": 28.500027536070228}, {"input": [18.0, 29.0], "expected": 29.000016701561318}, {"input": [18.0, 29.5], "expected": 29.50001013004229}, {"input": [18.0, 30.0], "expected": 30.000006144193478}, {"input": [18.0, 30.5], "expected": 30.500003726646227}, {"input": [18.0, 31.0], "expected": 31.000002260326852}, {"input": [18.0, 31.5], "expected": 31.500001370958145}, {"input": [18.0, 32.0], "expected": 32.000000831528375}, {"input": [18.0, 32.5], "expected": 32.50000050434753}, {"input": [18.0, 33.0], "expected": 33.000000305902276}, {"input": [18.0, 33.5], "expected": 33.50000018553912}, {"input": [18.0, 34.0], "expected": 34.00000011253517}, {"input": [18.0, 34.5], "expected": 34.50000006825603}, {"input": [18.0, 35.0], "expected": 35.000000041399375}, {"input": [18.0, 35.5], "expected": 35.50000002510999}, {"input": [18.0, 36.0], "expected": 36.00000001522998}, {"input": [18.0, 36.5], "expected": 36.500000009237446}, {"input": [18.0, 37.0], "expected": 37.00000000560279}, {"input": [18.0, 37.5], "expected": 37.50000000339827}, {"input": [18.0, 38.0], "expected": 38.00000000206116}, {"input": [18.0, 38.5], "expected": 38.50000000125015}, {"input": [18.0, 39.0], "expected": 39.000000000758256}, {"input": [18.0, 39.5], "expected": 39.500000000459906}, {"input": [18.0, 40.0], "expected": 40.000000000278945}, {"input": [18.0, 40.5], "expected": 40.50000000016919}, {"input": [18.0, 41.0], "expected": 41.00000000010262}, {"input": [18.0, 41.5], "expected": 41.50000000006224}, {"input": [18.0, 42.0], "expected": 42.00000000003775}, {"input": [18.0, 42.5], "expected": 42.5000000000229}, {"input": [18.0, 43.0], "expected": 43.00000000001389}, {"input": [18.0, 43.5], "expected": 43.50000000000842}, {"input": [18.0, 44.0], "expected": 44.00000000000511}, {"input": [18.0, 44.5], "expected": 44.5000000000031}, {"input": [18.0, 45.0], "expected": 45.00000000000188}, {"input": [18.0, 45.5], "expected": 45.50000000000114}, {"input": [18.0, 46.0], "expected": 46.00000000000069}, {"input": [18.0, 46.5], "expected": 46.50000000000042}, {"input": [18.0, 47.0], "expected": 47.000000000000256}, {"input": [18.0, 47.5], "expected": 47.500000000000156}, {"input": [18.0, 48.0], "expected": 48.00000000000009}, {"input": [18.0, 48.5], "expected": 48.50000000000006}, {"input": [18.0, 49.0], "expected": 49.000000000000036}, {"input": [18.0, 49.5], "expected": 49.50000000000002}, {"input": [18.0, 50.0], "expected": 50.000000000000014}, {"input": [18.0, 50.5], "expected": 50.50000000000001}, {"input": [18.0, 51.0], "expected": 51.00000000000001}, {"input": [18.0, 51.5], "expected": 51.5}, {"input": [18.0, 52.0], "expected": 52.0}, {"input": [18.0, 52.5], "expected": 52.5}, {"input": [18.0, 53.0], "expected": 53.0}, {"input": [18.0, 53.5], "expected": 53.5}, {"input": [18.0, 54.0], "expected": 54.0}, {"input": [18.0, 54.5], "expected": 54.5}, {"input": [18.0, 55.0], "expected": 55.0}, {"input": [18.0, 55.5], "expected": 55.5}, {"input": [18.0, 56.0], "expected": 56.0}, {"input": [18.0, 56.5], "expected": 56.5}, {"input": [18.0, 57.0], "expected": 57.0}, {"input": [18.0, 57.5], "expected": 57.5}, {"input": [18.0, 58.0], "expected": 58.0}, {"input": [18.0, 58.5], "expected": 58.5}, {"input": [18.0, 59.0], "expected": 59.0}, {"input": [18.0, 59.5], "expected": 59.5}, {"input": [18.0, 60.0], "expected": 60.0}, {"input": [18.0, 60.5], "expected": 60.5}, {"input": [18.0, 61.0], "expected": 61.0}, {"input": [18.0, 61.5], "expected": 61.5}, {"input": [18.0, 62.0], "expected": 62.0}, {"input": [18.0, 62.5], "expected": 62.5}, {"input": [18.0, 63.0], "expected": 63.0}, {"input": [18.0, 63.5], "expected": 63.5}, {"input": [18.0, 64.0], "expected": 64.0}, {"input": [18.0, 64.5], "expected": 64.5}, {"input": [18.0, 65.0], "expected": 65.0}, {"input": [18.0, 65.5], "expected": 65.5}, {"input": [18.0, 66.0], "expected": 66.0}, {"input": [18.0, 66.5], "expected": 66.5}, {"input": [18.0, 67.0], "expected": 67.0}, {"input": [18.0, 67.5], "expected": 67.5}, {"input": [18.0, 68.0], "expected": 68.0}, {"input": [18.0, 68.5], "expected": 68.5}, {"input": [18.0, 69.0], "expected": 69.0}, {"input": [18.0, 69.5], "expected": 69.5}, {"input": [18.0, 70.0], "expected": 70.0}, {"input": [18.0, 70.5], "expected": 70.5}, {"input": [18.0, 71.0], "expected": 71.0}, {"input": [18.0, 71.5], "expected": 71.5}, {"input": [18.0, 72.0], "expected": 72.0}, {"input": [18.0, 72.5], "expected": 72.5}, {"input": [18.0, 73.0], "expected": 73.0}, {"input": [18.0, 73.5], "expected": 73.5}, {"input": [18.0, 74.0], "expected": 74.0}, {"input": [18.0, 74.5], "expected": 74.5}, {"input": [18.0, 75.0], "expected": 75.0}, {"input": [18.0, 75.5], "expected": 75.5}, {"input": [18.0, 76.0], "expected": 76.0}, {"input": [18.0, 76.5], "expected": 76.5}, {"input": [18.0, 77.0], "expected": 77.0}, {"input": [18.0, 77.5], "expected": 77.5}, {"input": [18.0, 78.0], "expected": 78.0}, {"input": [18.0, 78.5], "expected": 78.5}, {"input": [18.0, 79.0], "expected": 79.0}, {"input": [18.0, 79.5], "expected": 79.5}, {"input": [18.0, 80.0], "expected": 80.0}, {"input": [18.0, 80.5], "expected": 80.5}, {"input": [18.0, 81.0], "expected": 81.0}, {"input": [18.0, 81.5], "expected": 81.5}, {"input": [18.0, 82.0], "expected": 82.0}, {"input": [18.0, 82.5], "expected": 82.5}, {"input": [18.0, 83.0], "expected": 83.0}, {"input": [18.0, 83.5], "expected": 83.5}, {"input": [18.0, 84.0], "expected": 84.0}, {"input": [18.0, 84.5], "expected": 84.5}, {"input": [18.0, 85.0], "expected": 85.0}, {"input": [18.0, 85.5], "expected": 85.5}, {"input": [18.0, 86.0], "expected": 86.0}, {"input": [18.0, 86.5], "expected": 86.5}, {"input": [18.0, 87.0], "expected": 87.0}, {"input": [18.0, 87.5], "expected": 87.5}, {"input": [18.0, 88.0], "expected": 88.0}, {"input": [18.0, 88.5], "expected": 88.5}, {"input": [18.0, 89.0], "expected": 89.0}, {"input": [18.0, 89.5], "expected": 89.5}, {"input": [18.0, 90.0], "expected": 90.0}, {"input": [18.0, 90.5], "expected": 90.5}, {"input": [18.0, 91.0], "expected": 91.0}, {"input": [18.0, 91.5], "expected": 91.5}, {"input": [18.0, 92.0], "expected": 92.0}, {"input": [18.0, 92.5], "expected": 92.5}, {"input": [18.0, 93.0], "expected": 93.0}, {"input": [18.0, 93.5], "expected": 93.5}, {"input": [18.0, 94.0], "expected": 94.0}, {"input": [18.0, 94.5], "expected": 94.5}, {"input": [18.0, 95.0], "expected": 95.0}, {"input": [18.0, 95.5], "expected": 95.5}, {"input": [18.0, 96.0], "expected": 96.0}, {"input": [18.0, 96.5], "expected": 96.5}, {"input": [18.0, 97.0], "expected": 97.0}, {"input": [18.0, 97.5], "expected": 97.5}, {"input": [18.0, 98.0], "expected": 98.0}, {"input": [18.0, 98.5], "expected": 98.5}, {"input": [18.0, 99.0], "expected": 99.0}, {"input": [18.0, 99.5], "expected": 99.5}, {"input": [18.5, -100.0], "expected": 18.5}, {"input": [18.5, -99.5], "expected": 18.5}, {"input": [18.5, -99.0], "expected": 18.5}, {"input": [18.5, -98.5], "expected": 18.5}, {"input": [18.5, -98.0], "expected": 18.5}, {"input": [18.5, -97.5], "expected": 18.5}, {"input": [18.5, -97.0], "expected": 18.5}, {"input": [18.5, -96.5], "expected": 18.5}, {"input": [18.5, -96.0], "expected": 18.5}, {"input": [18.5, -95.5], "expected": 18.5}, {"input": [18.5, -95.0], "expected": 18.5}, {"input": [18.5, -94.5], "expected": 18.5}, {"input": [18.5, -94.0], "expected": 18.5}, {"input": [18.5, -93.5], "expected": 18.5}, {"input": [18.5, -93.0], "expected": 18.5}, {"input": [18.5, -92.5], "expected": 18.5}, {"input": [18.5, -92.0], "expected": 18.5}, {"input": [18.5, -91.5], "expected": 18.5}, {"input": [18.5, -91.0], "expected": 18.5}, {"input": [18.5, -90.5], "expected": 18.5}, {"input": [18.5, -90.0], "expected": 18.5}, {"input": [18.5, -89.5], "expected": 18.5}, {"input": [18.5, -89.0], "expected": 18.5}, {"input": [18.5, -88.5], "expected": 18.5}, {"input": [18.5, -88.0], "expected": 18.5}, {"input": [18.5, -87.5], "expected": 18.5}, {"input": [18.5, -87.0], "expected": 18.5}, {"input": [18.5, -86.5], "expected": 18.5}, {"input": [18.5, -86.0], "expected": 18.5}, {"input": [18.5, -85.5], "expected": 18.5}, {"input": [18.5, -85.0], "expected": 18.5}, {"input": [18.5, -84.5], "expected": 18.5}, {"input": [18.5, -84.0], "expected": 18.5}, {"input": [18.5, -83.5], "expected": 18.5}, {"input": [18.5, -83.0], "expected": 18.5}, {"input": [18.5, -82.5], "expected": 18.5}, {"input": [18.5, -82.0], "expected": 18.5}, {"input": [18.5, -81.5], "expected": 18.5}, {"input": [18.5, -81.0], "expected": 18.5}, {"input": [18.5, -80.5], "expected": 18.5}, {"input": [18.5, -80.0], "expected": 18.5}, {"input": [18.5, -79.5], "expected": 18.5}, {"input": [18.5, -79.0], "expected": 18.5}, {"input": [18.5, -78.5], "expected": 18.5}, {"input": [18.5, -78.0], "expected": 18.5}, {"input": [18.5, -77.5], "expected": 18.5}, {"input": [18.5, -77.0], "expected": 18.5}, {"input": [18.5, -76.5], "expected": 18.5}, {"input": [18.5, -76.0], "expected": 18.5}, {"input": [18.5, -75.5], "expected": 18.5}, {"input": [18.5, -75.0], "expected": 18.5}, {"input": [18.5, -74.5], "expected": 18.5}, {"input": [18.5, -74.0], "expected": 18.5}, {"input": [18.5, -73.5], "expected": 18.5}, {"input": [18.5, -73.0], "expected": 18.5}, {"input": [18.5, -72.5], "expected": 18.5}, {"input": [18.5, -72.0], "expected": 18.5}, {"input": [18.5, -71.5], "expected": 18.5}, {"input": [18.5, -71.0], "expected": 18.5}, {"input": [18.5, -70.5], "expected": 18.5}, {"input": [18.5, -70.0], "expected": 18.5}, {"input": [18.5, -69.5], "expected": 18.5}, {"input": [18.5, -69.0], "expected": 18.5}, {"input": [18.5, -68.5], "expected": 18.5}, {"input": [18.5, -68.0], "expected": 18.5}, {"input": [18.5, -67.5], "expected": 18.5}, {"input": [18.5, -67.0], "expected": 18.5}, {"input": [18.5, -66.5], "expected": 18.5}, {"input": [18.5, -66.0], "expected": 18.5}, {"input": [18.5, -65.5], "expected": 18.5}, {"input": [18.5, -65.0], "expected": 18.5}, {"input": [18.5, -64.5], "expected": 18.5}, {"input": [18.5, -64.0], "expected": 18.5}, {"input": [18.5, -63.5], "expected": 18.5}, {"input": [18.5, -63.0], "expected": 18.5}, {"input": [18.5, -62.5], "expected": 18.5}, {"input": [18.5, -62.0], "expected": 18.5}, {"input": [18.5, -61.5], "expected": 18.5}, {"input": [18.5, -61.0], "expected": 18.5}, {"input": [18.5, -60.5], "expected": 18.5}, {"input": [18.5, -60.0], "expected": 18.5}, {"input": [18.5, -59.5], "expected": 18.5}, {"input": [18.5, -59.0], "expected": 18.5}, {"input": [18.5, -58.5], "expected": 18.5}, {"input": [18.5, -58.0], "expected": 18.5}, {"input": [18.5, -57.5], "expected": 18.5}, {"input": [18.5, -57.0], "expected": 18.5}, {"input": [18.5, -56.5], "expected": 18.5}, {"input": [18.5, -56.0], "expected": 18.5}, {"input": [18.5, -55.5], "expected": 18.5}, {"input": [18.5, -55.0], "expected": 18.5}, {"input": [18.5, -54.5], "expected": 18.5}, {"input": [18.5, -54.0], "expected": 18.5}, {"input": [18.5, -53.5], "expected": 18.5}, {"input": [18.5, -53.0], "expected": 18.5}, {"input": [18.5, -52.5], "expected": 18.5}, {"input": [18.5, -52.0], "expected": 18.5}, {"input": [18.5, -51.5], "expected": 18.5}, {"input": [18.5, -51.0], "expected": 18.5}, {"input": [18.5, -50.5], "expected": 18.5}, {"input": [18.5, -50.0], "expected": 18.5}, {"input": [18.5, -49.5], "expected": 18.5}, {"input": [18.5, -49.0], "expected": 18.5}, {"input": [18.5, -48.5], "expected": 18.5}, {"input": [18.5, -48.0], "expected": 18.5}, {"input": [18.5, -47.5], "expected": 18.5}, {"input": [18.5, -47.0], "expected": 18.5}, {"input": [18.5, -46.5], "expected": 18.5}, {"input": [18.5, -46.0], "expected": 18.5}, {"input": [18.5, -45.5], "expected": 18.5}, {"input": [18.5, -45.0], "expected": 18.5}, {"input": [18.5, -44.5], "expected": 18.5}, {"input": [18.5, -44.0], "expected": 18.5}, {"input": [18.5, -43.5], "expected": 18.5}, {"input": [18.5, -43.0], "expected": 18.5}, {"input": [18.5, -42.5], "expected": 18.5}, {"input": [18.5, -42.0], "expected": 18.5}, {"input": [18.5, -41.5], "expected": 18.5}, {"input": [18.5, -41.0], "expected": 18.5}, {"input": [18.5, -40.5], "expected": 18.5}, {"input": [18.5, -40.0], "expected": 18.5}, {"input": [18.5, -39.5], "expected": 18.5}, {"input": [18.5, -39.0], "expected": 18.5}, {"input": [18.5, -38.5], "expected": 18.5}, {"input": [18.5, -38.0], "expected": 18.5}, {"input": [18.5, -37.5], "expected": 18.5}, {"input": [18.5, -37.0], "expected": 18.5}, {"input": [18.5, -36.5], "expected": 18.5}, {"input": [18.5, -36.0], "expected": 18.5}, {"input": [18.5, -35.5], "expected": 18.5}, {"input": [18.5, -35.0], "expected": 18.5}, {"input": [18.5, -34.5], "expected": 18.5}, {"input": [18.5, -34.0], "expected": 18.5}, {"input": [18.5, -33.5], "expected": 18.5}, {"input": [18.5, -33.0], "expected": 18.5}, {"input": [18.5, -32.5], "expected": 18.5}, {"input": [18.5, -32.0], "expected": 18.5}, {"input": [18.5, -31.5], "expected": 18.5}, {"input": [18.5, -31.0], "expected": 18.5}, {"input": [18.5, -30.5], "expected": 18.5}, {"input": [18.5, -30.0], "expected": 18.5}, {"input": [18.5, -29.5], "expected": 18.5}, {"input": [18.5, -29.0], "expected": 18.5}, {"input": [18.5, -28.5], "expected": 18.5}, {"input": [18.5, -28.0], "expected": 18.5}, {"input": [18.5, -27.5], "expected": 18.5}, {"input": [18.5, -27.0], "expected": 18.5}, {"input": [18.5, -26.5], "expected": 18.5}, {"input": [18.5, -26.0], "expected": 18.5}, {"input": [18.5, -25.5], "expected": 18.5}, {"input": [18.5, -25.0], "expected": 18.5}, {"input": [18.5, -24.5], "expected": 18.5}, {"input": [18.5, -24.0], "expected": 18.5}, {"input": [18.5, -23.5], "expected": 18.5}, {"input": [18.5, -23.0], "expected": 18.5}, {"input": [18.5, -22.5], "expected": 18.5}, {"input": [18.5, -22.0], "expected": 18.5}, {"input": [18.5, -21.5], "expected": 18.5}, {"input": [18.5, -21.0], "expected": 18.5}, {"input": [18.5, -20.5], "expected": 18.5}, {"input": [18.5, -20.0], "expected": 18.5}, {"input": [18.5, -19.5], "expected": 18.5}, {"input": [18.5, -19.0], "expected": 18.5}, {"input": [18.5, -18.5], "expected": 18.5}, {"input": [18.5, -18.0], "expected": 18.5}, {"input": [18.5, -17.5], "expected": 18.5}, {"input": [18.5, -17.0], "expected": 18.5}, {"input": [18.5, -16.5], "expected": 18.5}, {"input": [18.5, -16.0], "expected": 18.5}, {"input": [18.5, -15.5], "expected": 18.5}, {"input": [18.5, -15.0], "expected": 18.500000000000004}, {"input": [18.5, -14.5], "expected": 18.500000000000004}, {"input": [18.5, -14.0], "expected": 18.500000000000007}, {"input": [18.5, -13.5], "expected": 18.500000000000014}, {"input": [18.5, -13.0], "expected": 18.50000000000002}, {"input": [18.5, -12.5], "expected": 18.500000000000036}, {"input": [18.5, -12.0], "expected": 18.500000000000057}, {"input": [18.5, -11.5], "expected": 18.500000000000092}, {"input": [18.5, -11.0], "expected": 18.500000000000153}, {"input": [18.5, -10.5], "expected": 18.500000000000256}, {"input": [18.5, -10.0], "expected": 18.50000000000042}, {"input": [18.5, -9.5], "expected": 18.500000000000693}, {"input": [18.5, -9.0], "expected": 18.50000000000114}, {"input": [18.5, -8.5], "expected": 18.50000000000188}, {"input": [18.5, -8.0], "expected": 18.500000000003098}, {"input": [18.5, -7.5], "expected": 18.50000000000511}, {"input": [18.5, -7.0], "expected": 18.500000000008423}, {"input": [18.5, -6.5], "expected": 18.500000000013888}, {"input": [18.5, -6.0], "expected": 18.500000000022897}, {"input": [18.5, -5.5], "expected": 18.50000000003775}, {"input": [18.5, -5.0], "expected": 18.50000000006224}, {"input": [18.5, -4.5], "expected": 18.50000000010262}, {"input": [18.5, -4.0], "expected": 18.50000000016919}, {"input": [18.5, -3.5], "expected": 18.50000000027895}, {"input": [18.5, -3.0], "expected": 18.500000000459906}, {"input": [18.5, -2.5], "expected": 18.500000000758256}, {"input": [18.5, -2.0], "expected": 18.500000001250154}, {"input": [18.5, -1.5], "expected": 18.500000002061153}, {"input": [18.5, -1.0], "expected": 18.500000003398267}, {"input": [18.5, -0.5], "expected": 18.500000005602796}, {"input": [18.5, 0.0], "expected": 18.50000000923745}, {"input": [18.5, 0.5], "expected": 18.50000001522998}, {"input": [18.5, 1.0], "expected": 18.50000002510999}, {"input": [18.5, 1.5], "expected": 18.500000041399375}, {"input": [18.5, 2.0], "expected": 18.500000068256032}, {"input": [18.5, 2.5], "expected": 18.50000011253517}, {"input": [18.5, 3.0], "expected": 18.50000018553912}, {"input": [18.5, 3.5], "expected": 18.500000305902272}, {"input": [18.5, 4.0], "expected": 18.500000504347536}, {"input": [18.5, 4.5], "expected": 18.500000831528375}, {"input": [18.5, 5.0], "expected": 18.500001370958145}, {"input": [18.5, 5.5], "expected": 18.500002260326852}, {"input": [18.5, 6.0], "expected": 18.500003726646227}, {"input": [18.5, 6.5], "expected": 18.500006144193478}, {"input": [18.5, 7.0], "expected": 18.50001013004229}, {"input": [18.5, 7.5], "expected": 18.500016701561318}, {"input": [18.5, 8.0], "expected": 18.500027536070228}, {"input": [18.5, 8.5], "expected": 18.500045398899218}, {"input": [18.5, 9.0], "expected": 18.50007484902863}, {"input": [18.5, 9.5], "expected": 18.500123402189722}, {"input": [18.5, 10.0], "expected": 18.500203447672128}, {"input": [18.5, 10.5], "expected": 18.500335406372894}, {"input": [18.5, 11.0], "expected": 18.50055293147536}, {"input": [18.5, 11.5], "expected": 18.500911466453775}, {"input": [18.5, 12.0], "expected": 18.501502310159754}, {"input": [18.5, 12.5], "expected": 18.502475685137732}, {"input": [18.5, 13.0], "expected": 18.504078443270572}, {"input": [18.5, 13.5], "expected": 18.506715348489116}, {"input": [18.5, 14.0], "expected": 18.511047744848593}, {"input": [18.5, 14.5], "expected": 18.51814992791781}, {"input": [18.5, 15.0], "expected": 18.52975041827262}, {"input": [18.5, 15.5], "expected": 18.548587351573744}, {"input": [18.5, 16.0], "expected": 18.57888973429255}, {"input": [18.5, 16.5], "expected": 18.626928011042974}, {"input": [18.5, 17.0], "expected": 18.701413277982752}, {"input": [18.5, 17.5], "expected": 18.813261687518224}, {"input": [18.5, 18.0], "expected": 18.97407698418011}, {"input": [18.5, 18.5], "expected": 19.193147180559944}, {"input": [18.5, 19.0], "expected": 19.47407698418011}, {"input": [18.5, 19.5], "expected": 19.813261687518224}, {"input": [18.5, 20.0], "expected": 20.201413277982752}, {"input": [18.5, 20.5], "expected": 20.626928011042974}, {"input": [18.5, 21.0], "expected": 21.07888973429255}, {"input": [18.5, 21.5], "expected": 21.548587351573744}, {"input": [18.5, 22.0], "expected": 22.02975041827262}, {"input": [18.5, 22.5], "expected": 22.51814992791781}, {"input": [18.5, 23.0], "expected": 23.011047744848593}, {"input": [18.5, 23.5], "expected": 23.506715348489116}, {"input": [18.5, 24.0], "expected": 24.004078443270572}, {"input": [18.5, 24.5], "expected": 24.502475685137732}, {"input": [18.5, 25.0], "expected": 25.001502310159754}, {"input": [18.5, 25.5], "expected": 25.500911466453775}, {"input": [18.5, 26.0], "expected": 26.00055293147536}, {"input": [18.5, 26.5], "expected": 26.500335406372894}, {"input": [18.5, 27.0], "expected": 27.000203447672128}, {"input": [18.5, 27.5], "expected": 27.500123402189722}, {"input": [18.5, 28.0], "expected": 28.00007484902863}, {"input": [18.5, 28.5], "expected": 28.500045398899218}, {"input": [18.5, 29.0], "expected": 29.000027536070228}, {"input": [18.5, 29.5], "expected": 29.500016701561318}, {"input": [18.5, 30.0], "expected": 30.00001013004229}, {"input": [18.5, 30.5], "expected": 30.500006144193478}, {"input": [18.5, 31.0], "expected": 31.000003726646227}, {"input": [18.5, 31.5], "expected": 31.500002260326852}, {"input": [18.5, 32.0], "expected": 32.000001370958145}, {"input": [18.5, 32.5], "expected": 32.500000831528375}, {"input": [18.5, 33.0], "expected": 33.00000050434753}, {"input": [18.5, 33.5], "expected": 33.500000305902276}, {"input": [18.5, 34.0], "expected": 34.00000018553912}, {"input": [18.5, 34.5], "expected": 34.50000011253517}, {"input": [18.5, 35.0], "expected": 35.00000006825603}, {"input": [18.5, 35.5], "expected": 35.500000041399375}, {"input": [18.5, 36.0], "expected": 36.00000002510999}, {"input": [18.5, 36.5], "expected": 36.50000001522998}, {"input": [18.5, 37.0], "expected": 37.000000009237446}, {"input": [18.5, 37.5], "expected": 37.50000000560279}, {"input": [18.5, 38.0], "expected": 38.00000000339827}, {"input": [18.5, 38.5], "expected": 38.50000000206116}, {"input": [18.5, 39.0], "expected": 39.00000000125015}, {"input": [18.5, 39.5], "expected": 39.500000000758256}, {"input": [18.5, 40.0], "expected": 40.000000000459906}, {"input": [18.5, 40.5], "expected": 40.500000000278945}, {"input": [18.5, 41.0], "expected": 41.00000000016919}, {"input": [18.5, 41.5], "expected": 41.50000000010262}, {"input": [18.5, 42.0], "expected": 42.00000000006224}, {"input": [18.5, 42.5], "expected": 42.50000000003775}, {"input": [18.5, 43.0], "expected": 43.0000000000229}, {"input": [18.5, 43.5], "expected": 43.50000000001389}, {"input": [18.5, 44.0], "expected": 44.00000000000842}, {"input": [18.5, 44.5], "expected": 44.50000000000511}, {"input": [18.5, 45.0], "expected": 45.0000000000031}, {"input": [18.5, 45.5], "expected": 45.50000000000188}, {"input": [18.5, 46.0], "expected": 46.00000000000114}, {"input": [18.5, 46.5], "expected": 46.50000000000069}, {"input": [18.5, 47.0], "expected": 47.00000000000042}, {"input": [18.5, 47.5], "expected": 47.500000000000256}, {"input": [18.5, 48.0], "expected": 48.000000000000156}, {"input": [18.5, 48.5], "expected": 48.50000000000009}, {"input": [18.5, 49.0], "expected": 49.00000000000006}, {"input": [18.5, 49.5], "expected": 49.500000000000036}, {"input": [18.5, 50.0], "expected": 50.00000000000002}, {"input": [18.5, 50.5], "expected": 50.500000000000014}, {"input": [18.5, 51.0], "expected": 51.00000000000001}, {"input": [18.5, 51.5], "expected": 51.50000000000001}, {"input": [18.5, 52.0], "expected": 52.0}, {"input": [18.5, 52.5], "expected": 52.5}, {"input": [18.5, 53.0], "expected": 53.0}, {"input": [18.5, 53.5], "expected": 53.5}, {"input": [18.5, 54.0], "expected": 54.0}, {"input": [18.5, 54.5], "expected": 54.5}, {"input": [18.5, 55.0], "expected": 55.0}, {"input": [18.5, 55.5], "expected": 55.5}, {"input": [18.5, 56.0], "expected": 56.0}, {"input": [18.5, 56.5], "expected": 56.5}, {"input": [18.5, 57.0], "expected": 57.0}, {"input": [18.5, 57.5], "expected": 57.5}, {"input": [18.5, 58.0], "expected": 58.0}, {"input": [18.5, 58.5], "expected": 58.5}, {"input": [18.5, 59.0], "expected": 59.0}, {"input": [18.5, 59.5], "expected": 59.5}, {"input": [18.5, 60.0], "expected": 60.0}, {"input": [18.5, 60.5], "expected": 60.5}, {"input": [18.5, 61.0], "expected": 61.0}, {"input": [18.5, 61.5], "expected": 61.5}, {"input": [18.5, 62.0], "expected": 62.0}, {"input": [18.5, 62.5], "expected": 62.5}, {"input": [18.5, 63.0], "expected": 63.0}, {"input": [18.5, 63.5], "expected": 63.5}, {"input": [18.5, 64.0], "expected": 64.0}, {"input": [18.5, 64.5], "expected": 64.5}, {"input": [18.5, 65.0], "expected": 65.0}, {"input": [18.5, 65.5], "expected": 65.5}, {"input": [18.5, 66.0], "expected": 66.0}, {"input": [18.5, 66.5], "expected": 66.5}, {"input": [18.5, 67.0], "expected": 67.0}, {"input": [18.5, 67.5], "expected": 67.5}, {"input": [18.5, 68.0], "expected": 68.0}, {"input": [18.5, 68.5], "expected": 68.5}, {"input": [18.5, 69.0], "expected": 69.0}, {"input": [18.5, 69.5], "expected": 69.5}, {"input": [18.5, 70.0], "expected": 70.0}, {"input": [18.5, 70.5], "expected": 70.5}, {"input": [18.5, 71.0], "expected": 71.0}, {"input": [18.5, 71.5], "expected": 71.5}, {"input": [18.5, 72.0], "expected": 72.0}, {"input": [18.5, 72.5], "expected": 72.5}, {"input": [18.5, 73.0], "expected": 73.0}, {"input": [18.5, 73.5], "expected": 73.5}, {"input": [18.5, 74.0], "expected": 74.0}, {"input": [18.5, 74.5], "expected": 74.5}, {"input": [18.5, 75.0], "expected": 75.0}, {"input": [18.5, 75.5], "expected": 75.5}, {"input": [18.5, 76.0], "expected": 76.0}, {"input": [18.5, 76.5], "expected": 76.5}, {"input": [18.5, 77.0], "expected": 77.0}, {"input": [18.5, 77.5], "expected": 77.5}, {"input": [18.5, 78.0], "expected": 78.0}, {"input": [18.5, 78.5], "expected": 78.5}, {"input": [18.5, 79.0], "expected": 79.0}, {"input": [18.5, 79.5], "expected": 79.5}, {"input": [18.5, 80.0], "expected": 80.0}, {"input": [18.5, 80.5], "expected": 80.5}, {"input": [18.5, 81.0], "expected": 81.0}, {"input": [18.5, 81.5], "expected": 81.5}, {"input": [18.5, 82.0], "expected": 82.0}, {"input": [18.5, 82.5], "expected": 82.5}, {"input": [18.5, 83.0], "expected": 83.0}, {"input": [18.5, 83.5], "expected": 83.5}, {"input": [18.5, 84.0], "expected": 84.0}, {"input": [18.5, 84.5], "expected": 84.5}, {"input": [18.5, 85.0], "expected": 85.0}, {"input": [18.5, 85.5], "expected": 85.5}, {"input": [18.5, 86.0], "expected": 86.0}, {"input": [18.5, 86.5], "expected": 86.5}, {"input": [18.5, 87.0], "expected": 87.0}, {"input": [18.5, 87.5], "expected": 87.5}, {"input": [18.5, 88.0], "expected": 88.0}, {"input": [18.5, 88.5], "expected": 88.5}, {"input": [18.5, 89.0], "expected": 89.0}, {"input": [18.5, 89.5], "expected": 89.5}, {"input": [18.5, 90.0], "expected": 90.0}, {"input": [18.5, 90.5], "expected": 90.5}, {"input": [18.5, 91.0], "expected": 91.0}, {"input": [18.5, 91.5], "expected": 91.5}, {"input": [18.5, 92.0], "expected": 92.0}, {"input": [18.5, 92.5], "expected": 92.5}, {"input": [18.5, 93.0], "expected": 93.0}, {"input": [18.5, 93.5], "expected": 93.5}, {"input": [18.5, 94.0], "expected": 94.0}, {"input": [18.5, 94.5], "expected": 94.5}, {"input": [18.5, 95.0], "expected": 95.0}, {"input": [18.5, 95.5], "expected": 95.5}, {"input": [18.5, 96.0], "expected": 96.0}, {"input": [18.5, 96.5], "expected": 96.5}, {"input": [18.5, 97.0], "expected": 97.0}, {"input": [18.5, 97.5], "expected": 97.5}, {"input": [18.5, 98.0], "expected": 98.0}, {"input": [18.5, 98.5], "expected": 98.5}, {"input": [18.5, 99.0], "expected": 99.0}, {"input": [18.5, 99.5], "expected": 99.5}, {"input": [19.0, -100.0], "expected": 19.0}, {"input": [19.0, -99.5], "expected": 19.0}, {"input": [19.0, -99.0], "expected": 19.0}, {"input": [19.0, -98.5], "expected": 19.0}, {"input": [19.0, -98.0], "expected": 19.0}, {"input": [19.0, -97.5], "expected": 19.0}, {"input": [19.0, -97.0], "expected": 19.0}, {"input": [19.0, -96.5], "expected": 19.0}, {"input": [19.0, -96.0], "expected": 19.0}, {"input": [19.0, -95.5], "expected": 19.0}, {"input": [19.0, -95.0], "expected": 19.0}, {"input": [19.0, -94.5], "expected": 19.0}, {"input": [19.0, -94.0], "expected": 19.0}, {"input": [19.0, -93.5], "expected": 19.0}, {"input": [19.0, -93.0], "expected": 19.0}, {"input": [19.0, -92.5], "expected": 19.0}, {"input": [19.0, -92.0], "expected": 19.0}, {"input": [19.0, -91.5], "expected": 19.0}, {"input": [19.0, -91.0], "expected": 19.0}, {"input": [19.0, -90.5], "expected": 19.0}, {"input": [19.0, -90.0], "expected": 19.0}, {"input": [19.0, -89.5], "expected": 19.0}, {"input": [19.0, -89.0], "expected": 19.0}, {"input": [19.0, -88.5], "expected": 19.0}, {"input": [19.0, -88.0], "expected": 19.0}, {"input": [19.0, -87.5], "expected": 19.0}, {"input": [19.0, -87.0], "expected": 19.0}, {"input": [19.0, -86.5], "expected": 19.0}, {"input": [19.0, -86.0], "expected": 19.0}, {"input": [19.0, -85.5], "expected": 19.0}, {"input": [19.0, -85.0], "expected": 19.0}, {"input": [19.0, -84.5], "expected": 19.0}, {"input": [19.0, -84.0], "expected": 19.0}, {"input": [19.0, -83.5], "expected": 19.0}, {"input": [19.0, -83.0], "expected": 19.0}, {"input": [19.0, -82.5], "expected": 19.0}, {"input": [19.0, -82.0], "expected": 19.0}, {"input": [19.0, -81.5], "expected": 19.0}, {"input": [19.0, -81.0], "expected": 19.0}, {"input": [19.0, -80.5], "expected": 19.0}, {"input": [19.0, -80.0], "expected": 19.0}, {"input": [19.0, -79.5], "expected": 19.0}, {"input": [19.0, -79.0], "expected": 19.0}, {"input": [19.0, -78.5], "expected": 19.0}, {"input": [19.0, -78.0], "expected": 19.0}, {"input": [19.0, -77.5], "expected": 19.0}, {"input": [19.0, -77.0], "expected": 19.0}, {"input": [19.0, -76.5], "expected": 19.0}, {"input": [19.0, -76.0], "expected": 19.0}, {"input": [19.0, -75.5], "expected": 19.0}, {"input": [19.0, -75.0], "expected": 19.0}, {"input": [19.0, -74.5], "expected": 19.0}, {"input": [19.0, -74.0], "expected": 19.0}, {"input": [19.0, -73.5], "expected": 19.0}, {"input": [19.0, -73.0], "expected": 19.0}, {"input": [19.0, -72.5], "expected": 19.0}, {"input": [19.0, -72.0], "expected": 19.0}, {"input": [19.0, -71.5], "expected": 19.0}, {"input": [19.0, -71.0], "expected": 19.0}, {"input": [19.0, -70.5], "expected": 19.0}, {"input": [19.0, -70.0], "expected": 19.0}, {"input": [19.0, -69.5], "expected": 19.0}, {"input": [19.0, -69.0], "expected": 19.0}, {"input": [19.0, -68.5], "expected": 19.0}, {"input": [19.0, -68.0], "expected": 19.0}, {"input": [19.0, -67.5], "expected": 19.0}, {"input": [19.0, -67.0], "expected": 19.0}, {"input": [19.0, -66.5], "expected": 19.0}, {"input": [19.0, -66.0], "expected": 19.0}, {"input": [19.0, -65.5], "expected": 19.0}, {"input": [19.0, -65.0], "expected": 19.0}, {"input": [19.0, -64.5], "expected": 19.0}, {"input": [19.0, -64.0], "expected": 19.0}, {"input": [19.0, -63.5], "expected": 19.0}, {"input": [19.0, -63.0], "expected": 19.0}, {"input": [19.0, -62.5], "expected": 19.0}, {"input": [19.0, -62.0], "expected": 19.0}, {"input": [19.0, -61.5], "expected": 19.0}, {"input": [19.0, -61.0], "expected": 19.0}, {"input": [19.0, -60.5], "expected": 19.0}, {"input": [19.0, -60.0], "expected": 19.0}, {"input": [19.0, -59.5], "expected": 19.0}, {"input": [19.0, -59.0], "expected": 19.0}, {"input": [19.0, -58.5], "expected": 19.0}, {"input": [19.0, -58.0], "expected": 19.0}, {"input": [19.0, -57.5], "expected": 19.0}, {"input": [19.0, -57.0], "expected": 19.0}, {"input": [19.0, -56.5], "expected": 19.0}, {"input": [19.0, -56.0], "expected": 19.0}, {"input": [19.0, -55.5], "expected": 19.0}, {"input": [19.0, -55.0], "expected": 19.0}, {"input": [19.0, -54.5], "expected": 19.0}, {"input": [19.0, -54.0], "expected": 19.0}, {"input": [19.0, -53.5], "expected": 19.0}, {"input": [19.0, -53.0], "expected": 19.0}, {"input": [19.0, -52.5], "expected": 19.0}, {"input": [19.0, -52.0], "expected": 19.0}, {"input": [19.0, -51.5], "expected": 19.0}, {"input": [19.0, -51.0], "expected": 19.0}, {"input": [19.0, -50.5], "expected": 19.0}, {"input": [19.0, -50.0], "expected": 19.0}, {"input": [19.0, -49.5], "expected": 19.0}, {"input": [19.0, -49.0], "expected": 19.0}, {"input": [19.0, -48.5], "expected": 19.0}, {"input": [19.0, -48.0], "expected": 19.0}, {"input": [19.0, -47.5], "expected": 19.0}, {"input": [19.0, -47.0], "expected": 19.0}, {"input": [19.0, -46.5], "expected": 19.0}, {"input": [19.0, -46.0], "expected": 19.0}, {"input": [19.0, -45.5], "expected": 19.0}, {"input": [19.0, -45.0], "expected": 19.0}, {"input": [19.0, -44.5], "expected": 19.0}, {"input": [19.0, -44.0], "expected": 19.0}, {"input": [19.0, -43.5], "expected": 19.0}, {"input": [19.0, -43.0], "expected": 19.0}, {"input": [19.0, -42.5], "expected": 19.0}, {"input": [19.0, -42.0], "expected": 19.0}, {"input": [19.0, -41.5], "expected": 19.0}, {"input": [19.0, -41.0], "expected": 19.0}, {"input": [19.0, -40.5], "expected": 19.0}, {"input": [19.0, -40.0], "expected": 19.0}, {"input": [19.0, -39.5], "expected": 19.0}, {"input": [19.0, -39.0], "expected": 19.0}, {"input": [19.0, -38.5], "expected": 19.0}, {"input": [19.0, -38.0], "expected": 19.0}, {"input": [19.0, -37.5], "expected": 19.0}, {"input": [19.0, -37.0], "expected": 19.0}, {"input": [19.0, -36.5], "expected": 19.0}, {"input": [19.0, -36.0], "expected": 19.0}, {"input": [19.0, -35.5], "expected": 19.0}, {"input": [19.0, -35.0], "expected": 19.0}, {"input": [19.0, -34.5], "expected": 19.0}, {"input": [19.0, -34.0], "expected": 19.0}, {"input": [19.0, -33.5], "expected": 19.0}, {"input": [19.0, -33.0], "expected": 19.0}, {"input": [19.0, -32.5], "expected": 19.0}, {"input": [19.0, -32.0], "expected": 19.0}, {"input": [19.0, -31.5], "expected": 19.0}, {"input": [19.0, -31.0], "expected": 19.0}, {"input": [19.0, -30.5], "expected": 19.0}, {"input": [19.0, -30.0], "expected": 19.0}, {"input": [19.0, -29.5], "expected": 19.0}, {"input": [19.0, -29.0], "expected": 19.0}, {"input": [19.0, -28.5], "expected": 19.0}, {"input": [19.0, -28.0], "expected": 19.0}, {"input": [19.0, -27.5], "expected": 19.0}, {"input": [19.0, -27.0], "expected": 19.0}, {"input": [19.0, -26.5], "expected": 19.0}, {"input": [19.0, -26.0], "expected": 19.0}, {"input": [19.0, -25.5], "expected": 19.0}, {"input": [19.0, -25.0], "expected": 19.0}, {"input": [19.0, -24.5], "expected": 19.0}, {"input": [19.0, -24.0], "expected": 19.0}, {"input": [19.0, -23.5], "expected": 19.0}, {"input": [19.0, -23.0], "expected": 19.0}, {"input": [19.0, -22.5], "expected": 19.0}, {"input": [19.0, -22.0], "expected": 19.0}, {"input": [19.0, -21.5], "expected": 19.0}, {"input": [19.0, -21.0], "expected": 19.0}, {"input": [19.0, -20.5], "expected": 19.0}, {"input": [19.0, -20.0], "expected": 19.0}, {"input": [19.0, -19.5], "expected": 19.0}, {"input": [19.0, -19.0], "expected": 19.0}, {"input": [19.0, -18.5], "expected": 19.0}, {"input": [19.0, -18.0], "expected": 19.0}, {"input": [19.0, -17.5], "expected": 19.0}, {"input": [19.0, -17.0], "expected": 19.0}, {"input": [19.0, -16.5], "expected": 19.0}, {"input": [19.0, -16.0], "expected": 19.0}, {"input": [19.0, -15.5], "expected": 19.0}, {"input": [19.0, -15.0], "expected": 19.0}, {"input": [19.0, -14.5], "expected": 19.000000000000004}, {"input": [19.0, -14.0], "expected": 19.000000000000004}, {"input": [19.0, -13.5], "expected": 19.000000000000007}, {"input": [19.0, -13.0], "expected": 19.000000000000014}, {"input": [19.0, -12.5], "expected": 19.00000000000002}, {"input": [19.0, -12.0], "expected": 19.000000000000036}, {"input": [19.0, -11.5], "expected": 19.000000000000057}, {"input": [19.0, -11.0], "expected": 19.000000000000092}, {"input": [19.0, -10.5], "expected": 19.000000000000153}, {"input": [19.0, -10.0], "expected": 19.000000000000256}, {"input": [19.0, -9.5], "expected": 19.00000000000042}, {"input": [19.0, -9.0], "expected": 19.000000000000693}, {"input": [19.0, -8.5], "expected": 19.00000000000114}, {"input": [19.0, -8.0], "expected": 19.00000000000188}, {"input": [19.0, -7.5], "expected": 19.000000000003098}, {"input": [19.0, -7.0], "expected": 19.00000000000511}, {"input": [19.0, -6.5], "expected": 19.000000000008423}, {"input": [19.0, -6.0], "expected": 19.000000000013888}, {"input": [19.0, -5.5], "expected": 19.000000000022897}, {"input": [19.0, -5.0], "expected": 19.00000000003775}, {"input": [19.0, -4.5], "expected": 19.00000000006224}, {"input": [19.0, -4.0], "expected": 19.00000000010262}, {"input": [19.0, -3.5], "expected": 19.00000000016919}, {"input": [19.0, -3.0], "expected": 19.00000000027895}, {"input": [19.0, -2.5], "expected": 19.000000000459906}, {"input": [19.0, -2.0], "expected": 19.000000000758256}, {"input": [19.0, -1.5], "expected": 19.000000001250154}, {"input": [19.0, -1.0], "expected": 19.000000002061153}, {"input": [19.0, -0.5], "expected": 19.000000003398267}, {"input": [19.0, 0.0], "expected": 19.000000005602796}, {"input": [19.0, 0.5], "expected": 19.00000000923745}, {"input": [19.0, 1.0], "expected": 19.00000001522998}, {"input": [19.0, 1.5], "expected": 19.00000002510999}, {"input": [19.0, 2.0], "expected": 19.000000041399375}, {"input": [19.0, 2.5], "expected": 19.000000068256032}, {"input": [19.0, 3.0], "expected": 19.00000011253517}, {"input": [19.0, 3.5], "expected": 19.00000018553912}, {"input": [19.0, 4.0], "expected": 19.000000305902272}, {"input": [19.0, 4.5], "expected": 19.000000504347536}, {"input": [19.0, 5.0], "expected": 19.000000831528375}, {"input": [19.0, 5.5], "expected": 19.000001370958145}, {"input": [19.0, 6.0], "expected": 19.000002260326852}, {"input": [19.0, 6.5], "expected": 19.000003726646227}, {"input": [19.0, 7.0], "expected": 19.000006144193478}, {"input": [19.0, 7.5], "expected": 19.00001013004229}, {"input": [19.0, 8.0], "expected": 19.000016701561318}, {"input": [19.0, 8.5], "expected": 19.000027536070228}, {"input": [19.0, 9.0], "expected": 19.000045398899218}, {"input": [19.0, 9.5], "expected": 19.00007484902863}, {"input": [19.0, 10.0], "expected": 19.000123402189722}, {"input": [19.0, 10.5], "expected": 19.000203447672128}, {"input": [19.0, 11.0], "expected": 19.000335406372894}, {"input": [19.0, 11.5], "expected": 19.00055293147536}, {"input": [19.0, 12.0], "expected": 19.000911466453775}, {"input": [19.0, 12.5], "expected": 19.001502310159754}, {"input": [19.0, 13.0], "expected": 19.002475685137732}, {"input": [19.0, 13.5], "expected": 19.004078443270572}, {"input": [19.0, 14.0], "expected": 19.006715348489116}, {"input": [19.0, 14.5], "expected": 19.011047744848593}, {"input": [19.0, 15.0], "expected": 19.01814992791781}, {"input": [19.0, 15.5], "expected": 19.02975041827262}, {"input": [19.0, 16.0], "expected": 19.048587351573744}, {"input": [19.0, 16.5], "expected": 19.07888973429255}, {"input": [19.0, 17.0], "expected": 19.126928011042974}, {"input": [19.0, 17.5], "expected": 19.201413277982752}, {"input": [19.0, 18.0], "expected": 19.313261687518224}, {"input": [19.0, 18.5], "expected": 19.47407698418011}, {"input": [19.0, 19.0], "expected": 19.693147180559944}, {"input": [19.0, 19.5], "expected": 19.97407698418011}, {"input": [19.0, 20.0], "expected": 20.313261687518224}, {"input": [19.0, 20.5], "expected": 20.701413277982752}, {"input": [19.0, 21.0], "expected": 21.126928011042974}, {"input": [19.0, 21.5], "expected": 21.57888973429255}, {"input": [19.0, 22.0], "expected": 22.048587351573744}, {"input": [19.0, 22.5], "expected": 22.52975041827262}, {"input": [19.0, 23.0], "expected": 23.01814992791781}, {"input": [19.0, 23.5], "expected": 23.511047744848593}, {"input": [19.0, 24.0], "expected": 24.006715348489116}, {"input": [19.0, 24.5], "expected": 24.504078443270572}, {"input": [19.0, 25.0], "expected": 25.002475685137732}, {"input": [19.0, 25.5], "expected": 25.501502310159754}, {"input": [19.0, 26.0], "expected": 26.000911466453775}, {"input": [19.0, 26.5], "expected": 26.50055293147536}, {"input": [19.0, 27.0], "expected": 27.000335406372894}, {"input": [19.0, 27.5], "expected": 27.500203447672128}, {"input": [19.0, 28.0], "expected": 28.000123402189722}, {"input": [19.0, 28.5], "expected": 28.50007484902863}, {"input": [19.0, 29.0], "expected": 29.000045398899218}, {"input": [19.0, 29.5], "expected": 29.500027536070228}, {"input": [19.0, 30.0], "expected": 30.000016701561318}, {"input": [19.0, 30.5], "expected": 30.50001013004229}, {"input": [19.0, 31.0], "expected": 31.000006144193478}, {"input": [19.0, 31.5], "expected": 31.500003726646227}, {"input": [19.0, 32.0], "expected": 32.00000226032685}, {"input": [19.0, 32.5], "expected": 32.500001370958145}, {"input": [19.0, 33.0], "expected": 33.000000831528375}, {"input": [19.0, 33.5], "expected": 33.50000050434753}, {"input": [19.0, 34.0], "expected": 34.000000305902276}, {"input": [19.0, 34.5], "expected": 34.50000018553912}, {"input": [19.0, 35.0], "expected": 35.00000011253517}, {"input": [19.0, 35.5], "expected": 35.50000006825603}, {"input": [19.0, 36.0], "expected": 36.000000041399375}, {"input": [19.0, 36.5], "expected": 36.50000002510999}, {"input": [19.0, 37.0], "expected": 37.00000001522998}, {"input": [19.0, 37.5], "expected": 37.500000009237446}, {"input": [19.0, 38.0], "expected": 38.00000000560279}, {"input": [19.0, 38.5], "expected": 38.50000000339827}, {"input": [19.0, 39.0], "expected": 39.00000000206116}, {"input": [19.0, 39.5], "expected": 39.50000000125015}, {"input": [19.0, 40.0], "expected": 40.000000000758256}, {"input": [19.0, 40.5], "expected": 40.500000000459906}, {"input": [19.0, 41.0], "expected": 41.000000000278945}, {"input": [19.0, 41.5], "expected": 41.50000000016919}, {"input": [19.0, 42.0], "expected": 42.00000000010262}, {"input": [19.0, 42.5], "expected": 42.50000000006224}, {"input": [19.0, 43.0], "expected": 43.00000000003775}, {"input": [19.0, 43.5], "expected": 43.5000000000229}, {"input": [19.0, 44.0], "expected": 44.00000000001389}, {"input": [19.0, 44.5], "expected": 44.50000000000842}, {"input": [19.0, 45.0], "expected": 45.00000000000511}, {"input": [19.0, 45.5], "expected": 45.5000000000031}, {"input": [19.0, 46.0], "expected": 46.00000000000188}, {"input": [19.0, 46.5], "expected": 46.50000000000114}, {"input": [19.0, 47.0], "expected": 47.00000000000069}, {"input": [19.0, 47.5], "expected": 47.50000000000042}, {"input": [19.0, 48.0], "expected": 48.000000000000256}, {"input": [19.0, 48.5], "expected": 48.500000000000156}, {"input": [19.0, 49.0], "expected": 49.00000000000009}, {"input": [19.0, 49.5], "expected": 49.50000000000006}, {"input": [19.0, 50.0], "expected": 50.000000000000036}, {"input": [19.0, 50.5], "expected": 50.50000000000002}, {"input": [19.0, 51.0], "expected": 51.000000000000014}, {"input": [19.0, 51.5], "expected": 51.50000000000001}, {"input": [19.0, 52.0], "expected": 52.00000000000001}, {"input": [19.0, 52.5], "expected": 52.5}, {"input": [19.0, 53.0], "expected": 53.0}, {"input": [19.0, 53.5], "expected": 53.5}, {"input": [19.0, 54.0], "expected": 54.0}, {"input": [19.0, 54.5], "expected": 54.5}, {"input": [19.0, 55.0], "expected": 55.0}, {"input": [19.0, 55.5], "expected": 55.5}, {"input": [19.0, 56.0], "expected": 56.0}, {"input": [19.0, 56.5], "expected": 56.5}, {"input": [19.0, 57.0], "expected": 57.0}, {"input": [19.0, 57.5], "expected": 57.5}, {"input": [19.0, 58.0], "expected": 58.0}, {"input": [19.0, 58.5], "expected": 58.5}, {"input": [19.0, 59.0], "expected": 59.0}, {"input": [19.0, 59.5], "expected": 59.5}, {"input": [19.0, 60.0], "expected": 60.0}, {"input": [19.0, 60.5], "expected": 60.5}, {"input": [19.0, 61.0], "expected": 61.0}, {"input": [19.0, 61.5], "expected": 61.5}, {"input": [19.0, 62.0], "expected": 62.0}, {"input": [19.0, 62.5], "expected": 62.5}, {"input": [19.0, 63.0], "expected": 63.0}, {"input": [19.0, 63.5], "expected": 63.5}, {"input": [19.0, 64.0], "expected": 64.0}, {"input": [19.0, 64.5], "expected": 64.5}, {"input": [19.0, 65.0], "expected": 65.0}, {"input": [19.0, 65.5], "expected": 65.5}, {"input": [19.0, 66.0], "expected": 66.0}, {"input": [19.0, 66.5], "expected": 66.5}, {"input": [19.0, 67.0], "expected": 67.0}, {"input": [19.0, 67.5], "expected": 67.5}, {"input": [19.0, 68.0], "expected": 68.0}, {"input": [19.0, 68.5], "expected": 68.5}, {"input": [19.0, 69.0], "expected": 69.0}, {"input": [19.0, 69.5], "expected": 69.5}, {"input": [19.0, 70.0], "expected": 70.0}, {"input": [19.0, 70.5], "expected": 70.5}, {"input": [19.0, 71.0], "expected": 71.0}, {"input": [19.0, 71.5], "expected": 71.5}, {"input": [19.0, 72.0], "expected": 72.0}, {"input": [19.0, 72.5], "expected": 72.5}, {"input": [19.0, 73.0], "expected": 73.0}, {"input": [19.0, 73.5], "expected": 73.5}, {"input": [19.0, 74.0], "expected": 74.0}, {"input": [19.0, 74.5], "expected": 74.5}, {"input": [19.0, 75.0], "expected": 75.0}, {"input": [19.0, 75.5], "expected": 75.5}, {"input": [19.0, 76.0], "expected": 76.0}, {"input": [19.0, 76.5], "expected": 76.5}, {"input": [19.0, 77.0], "expected": 77.0}, {"input": [19.0, 77.5], "expected": 77.5}, {"input": [19.0, 78.0], "expected": 78.0}, {"input": [19.0, 78.5], "expected": 78.5}, {"input": [19.0, 79.0], "expected": 79.0}, {"input": [19.0, 79.5], "expected": 79.5}, {"input": [19.0, 80.0], "expected": 80.0}, {"input": [19.0, 80.5], "expected": 80.5}, {"input": [19.0, 81.0], "expected": 81.0}, {"input": [19.0, 81.5], "expected": 81.5}, {"input": [19.0, 82.0], "expected": 82.0}, {"input": [19.0, 82.5], "expected": 82.5}, {"input": [19.0, 83.0], "expected": 83.0}, {"input": [19.0, 83.5], "expected": 83.5}, {"input": [19.0, 84.0], "expected": 84.0}, {"input": [19.0, 84.5], "expected": 84.5}, {"input": [19.0, 85.0], "expected": 85.0}, {"input": [19.0, 85.5], "expected": 85.5}, {"input": [19.0, 86.0], "expected": 86.0}, {"input": [19.0, 86.5], "expected": 86.5}, {"input": [19.0, 87.0], "expected": 87.0}, {"input": [19.0, 87.5], "expected": 87.5}, {"input": [19.0, 88.0], "expected": 88.0}, {"input": [19.0, 88.5], "expected": 88.5}, {"input": [19.0, 89.0], "expected": 89.0}, {"input": [19.0, 89.5], "expected": 89.5}, {"input": [19.0, 90.0], "expected": 90.0}, {"input": [19.0, 90.5], "expected": 90.5}, {"input": [19.0, 91.0], "expected": 91.0}, {"input": [19.0, 91.5], "expected": 91.5}, {"input": [19.0, 92.0], "expected": 92.0}, {"input": [19.0, 92.5], "expected": 92.5}, {"input": [19.0, 93.0], "expected": 93.0}, {"input": [19.0, 93.5], "expected": 93.5}, {"input": [19.0, 94.0], "expected": 94.0}, {"input": [19.0, 94.5], "expected": 94.5}, {"input": [19.0, 95.0], "expected": 95.0}, {"input": [19.0, 95.5], "expected": 95.5}, {"input": [19.0, 96.0], "expected": 96.0}, {"input": [19.0, 96.5], "expected": 96.5}, {"input": [19.0, 97.0], "expected": 97.0}, {"input": [19.0, 97.5], "expected": 97.5}, {"input": [19.0, 98.0], "expected": 98.0}, {"input": [19.0, 98.5], "expected": 98.5}, {"input": [19.0, 99.0], "expected": 99.0}, {"input": [19.0, 99.5], "expected": 99.5}, {"input": [19.5, -100.0], "expected": 19.5}, {"input": [19.5, -99.5], "expected": 19.5}, {"input": [19.5, -99.0], "expected": 19.5}, {"input": [19.5, -98.5], "expected": 19.5}, {"input": [19.5, -98.0], "expected": 19.5}, {"input": [19.5, -97.5], "expected": 19.5}, {"input": [19.5, -97.0], "expected": 19.5}, {"input": [19.5, -96.5], "expected": 19.5}, {"input": [19.5, -96.0], "expected": 19.5}, {"input": [19.5, -95.5], "expected": 19.5}, {"input": [19.5, -95.0], "expected": 19.5}, {"input": [19.5, -94.5], "expected": 19.5}, {"input": [19.5, -94.0], "expected": 19.5}, {"input": [19.5, -93.5], "expected": 19.5}, {"input": [19.5, -93.0], "expected": 19.5}, {"input": [19.5, -92.5], "expected": 19.5}, {"input": [19.5, -92.0], "expected": 19.5}, {"input": [19.5, -91.5], "expected": 19.5}, {"input": [19.5, -91.0], "expected": 19.5}, {"input": [19.5, -90.5], "expected": 19.5}, {"input": [19.5, -90.0], "expected": 19.5}, {"input": [19.5, -89.5], "expected": 19.5}, {"input": [19.5, -89.0], "expected": 19.5}, {"input": [19.5, -88.5], "expected": 19.5}, {"input": [19.5, -88.0], "expected": 19.5}, {"input": [19.5, -87.5], "expected": 19.5}, {"input": [19.5, -87.0], "expected": 19.5}, {"input": [19.5, -86.5], "expected": 19.5}, {"input": [19.5, -86.0], "expected": 19.5}, {"input": [19.5, -85.5], "expected": 19.5}, {"input": [19.5, -85.0], "expected": 19.5}, {"input": [19.5, -84.5], "expected": 19.5}, {"input": [19.5, -84.0], "expected": 19.5}, {"input": [19.5, -83.5], "expected": 19.5}, {"input": [19.5, -83.0], "expected": 19.5}, {"input": [19.5, -82.5], "expected": 19.5}, {"input": [19.5, -82.0], "expected": 19.5}, {"input": [19.5, -81.5], "expected": 19.5}, {"input": [19.5, -81.0], "expected": 19.5}, {"input": [19.5, -80.5], "expected": 19.5}, {"input": [19.5, -80.0], "expected": 19.5}, {"input": [19.5, -79.5], "expected": 19.5}, {"input": [19.5, -79.0], "expected": 19.5}, {"input": [19.5, -78.5], "expected": 19.5}, {"input": [19.5, -78.0], "expected": 19.5}, {"input": [19.5, -77.5], "expected": 19.5}, {"input": [19.5, -77.0], "expected": 19.5}, {"input": [19.5, -76.5], "expected": 19.5}, {"input": [19.5, -76.0], "expected": 19.5}, {"input": [19.5, -75.5], "expected": 19.5}, {"input": [19.5, -75.0], "expected": 19.5}, {"input": [19.5, -74.5], "expected": 19.5}, {"input": [19.5, -74.0], "expected": 19.5}, {"input": [19.5, -73.5], "expected": 19.5}, {"input": [19.5, -73.0], "expected": 19.5}, {"input": [19.5, -72.5], "expected": 19.5}, {"input": [19.5, -72.0], "expected": 19.5}, {"input": [19.5, -71.5], "expected": 19.5}, {"input": [19.5, -71.0], "expected": 19.5}, {"input": [19.5, -70.5], "expected": 19.5}, {"input": [19.5, -70.0], "expected": 19.5}, {"input": [19.5, -69.5], "expected": 19.5}, {"input": [19.5, -69.0], "expected": 19.5}, {"input": [19.5, -68.5], "expected": 19.5}, {"input": [19.5, -68.0], "expected": 19.5}, {"input": [19.5, -67.5], "expected": 19.5}, {"input": [19.5, -67.0], "expected": 19.5}, {"input": [19.5, -66.5], "expected": 19.5}, {"input": [19.5, -66.0], "expected": 19.5}, {"input": [19.5, -65.5], "expected": 19.5}, {"input": [19.5, -65.0], "expected": 19.5}, {"input": [19.5, -64.5], "expected": 19.5}, {"input": [19.5, -64.0], "expected": 19.5}, {"input": [19.5, -63.5], "expected": 19.5}, {"input": [19.5, -63.0], "expected": 19.5}, {"input": [19.5, -62.5], "expected": 19.5}, {"input": [19.5, -62.0], "expected": 19.5}, {"input": [19.5, -61.5], "expected": 19.5}, {"input": [19.5, -61.0], "expected": 19.5}, {"input": [19.5, -60.5], "expected": 19.5}, {"input": [19.5, -60.0], "expected": 19.5}, {"input": [19.5, -59.5], "expected": 19.5}, {"input": [19.5, -59.0], "expected": 19.5}, {"input": [19.5, -58.5], "expected": 19.5}, {"input": [19.5, -58.0], "expected": 19.5}, {"input": [19.5, -57.5], "expected": 19.5}, {"input": [19.5, -57.0], "expected": 19.5}, {"input": [19.5, -56.5], "expected": 19.5}, {"input": [19.5, -56.0], "expected": 19.5}, {"input": [19.5, -55.5], "expected": 19.5}, {"input": [19.5, -55.0], "expected": 19.5}, {"input": [19.5, -54.5], "expected": 19.5}, {"input": [19.5, -54.0], "expected": 19.5}, {"input": [19.5, -53.5], "expected": 19.5}, {"input": [19.5, -53.0], "expected": 19.5}, {"input": [19.5, -52.5], "expected": 19.5}, {"input": [19.5, -52.0], "expected": 19.5}, {"input": [19.5, -51.5], "expected": 19.5}, {"input": [19.5, -51.0], "expected": 19.5}, {"input": [19.5, -50.5], "expected": 19.5}, {"input": [19.5, -50.0], "expected": 19.5}, {"input": [19.5, -49.5], "expected": 19.5}, {"input": [19.5, -49.0], "expected": 19.5}, {"input": [19.5, -48.5], "expected": 19.5}, {"input": [19.5, -48.0], "expected": 19.5}, {"input": [19.5, -47.5], "expected": 19.5}, {"input": [19.5, -47.0], "expected": 19.5}, {"input": [19.5, -46.5], "expected": 19.5}, {"input": [19.5, -46.0], "expected": 19.5}, {"input": [19.5, -45.5], "expected": 19.5}, {"input": [19.5, -45.0], "expected": 19.5}, {"input": [19.5, -44.5], "expected": 19.5}, {"input": [19.5, -44.0], "expected": 19.5}, {"input": [19.5, -43.5], "expected": 19.5}, {"input": [19.5, -43.0], "expected": 19.5}, {"input": [19.5, -42.5], "expected": 19.5}, {"input": [19.5, -42.0], "expected": 19.5}, {"input": [19.5, -41.5], "expected": 19.5}, {"input": [19.5, -41.0], "expected": 19.5}, {"input": [19.5, -40.5], "expected": 19.5}, {"input": [19.5, -40.0], "expected": 19.5}, {"input": [19.5, -39.5], "expected": 19.5}, {"input": [19.5, -39.0], "expected": 19.5}, {"input": [19.5, -38.5], "expected": 19.5}, {"input": [19.5, -38.0], "expected": 19.5}, {"input": [19.5, -37.5], "expected": 19.5}, {"input": [19.5, -37.0], "expected": 19.5}, {"input": [19.5, -36.5], "expected": 19.5}, {"input": [19.5, -36.0], "expected": 19.5}, {"input": [19.5, -35.5], "expected": 19.5}, {"input": [19.5, -35.0], "expected": 19.5}, {"input": [19.5, -34.5], "expected": 19.5}, {"input": [19.5, -34.0], "expected": 19.5}, {"input": [19.5, -33.5], "expected": 19.5}, {"input": [19.5, -33.0], "expected": 19.5}, {"input": [19.5, -32.5], "expected": 19.5}, {"input": [19.5, -32.0], "expected": 19.5}, {"input": [19.5, -31.5], "expected": 19.5}, {"input": [19.5, -31.0], "expected": 19.5}, {"input": [19.5, -30.5], "expected": 19.5}, {"input": [19.5, -30.0], "expected": 19.5}, {"input": [19.5, -29.5], "expected": 19.5}, {"input": [19.5, -29.0], "expected": 19.5}, {"input": [19.5, -28.5], "expected": 19.5}, {"input": [19.5, -28.0], "expected": 19.5}, {"input": [19.5, -27.5], "expected": 19.5}, {"input": [19.5, -27.0], "expected": 19.5}, {"input": [19.5, -26.5], "expected": 19.5}, {"input": [19.5, -26.0], "expected": 19.5}, {"input": [19.5, -25.5], "expected": 19.5}, {"input": [19.5, -25.0], "expected": 19.5}, {"input": [19.5, -24.5], "expected": 19.5}, {"input": [19.5, -24.0], "expected": 19.5}, {"input": [19.5, -23.5], "expected": 19.5}, {"input": [19.5, -23.0], "expected": 19.5}, {"input": [19.5, -22.5], "expected": 19.5}, {"input": [19.5, -22.0], "expected": 19.5}, {"input": [19.5, -21.5], "expected": 19.5}, {"input": [19.5, -21.0], "expected": 19.5}, {"input": [19.5, -20.5], "expected": 19.5}, {"input": [19.5, -20.0], "expected": 19.5}, {"input": [19.5, -19.5], "expected": 19.5}, {"input": [19.5, -19.0], "expected": 19.5}, {"input": [19.5, -18.5], "expected": 19.5}, {"input": [19.5, -18.0], "expected": 19.5}, {"input": [19.5, -17.5], "expected": 19.5}, {"input": [19.5, -17.0], "expected": 19.5}, {"input": [19.5, -16.5], "expected": 19.5}, {"input": [19.5, -16.0], "expected": 19.5}, {"input": [19.5, -15.5], "expected": 19.5}, {"input": [19.5, -15.0], "expected": 19.5}, {"input": [19.5, -14.5], "expected": 19.5}, {"input": [19.5, -14.0], "expected": 19.500000000000004}, {"input": [19.5, -13.5], "expected": 19.500000000000004}, {"input": [19.5, -13.0], "expected": 19.500000000000007}, {"input": [19.5, -12.5], "expected": 19.500000000000014}, {"input": [19.5, -12.0], "expected": 19.50000000000002}, {"input": [19.5, -11.5], "expected": 19.500000000000036}, {"input": [19.5, -11.0], "expected": 19.500000000000057}, {"input": [19.5, -10.5], "expected": 19.500000000000092}, {"input": [19.5, -10.0], "expected": 19.500000000000153}, {"input": [19.5, -9.5], "expected": 19.500000000000256}, {"input": [19.5, -9.0], "expected": 19.50000000000042}, {"input": [19.5, -8.5], "expected": 19.500000000000693}, {"input": [19.5, -8.0], "expected": 19.50000000000114}, {"input": [19.5, -7.5], "expected": 19.50000000000188}, {"input": [19.5, -7.0], "expected": 19.500000000003098}, {"input": [19.5, -6.5], "expected": 19.50000000000511}, {"input": [19.5, -6.0], "expected": 19.500000000008423}, {"input": [19.5, -5.5], "expected": 19.500000000013888}, {"input": [19.5, -5.0], "expected": 19.500000000022897}, {"input": [19.5, -4.5], "expected": 19.50000000003775}, {"input": [19.5, -4.0], "expected": 19.50000000006224}, {"input": [19.5, -3.5], "expected": 19.50000000010262}, {"input": [19.5, -3.0], "expected": 19.50000000016919}, {"input": [19.5, -2.5], "expected": 19.50000000027895}, {"input": [19.5, -2.0], "expected": 19.500000000459906}, {"input": [19.5, -1.5], "expected": 19.500000000758256}, {"input": [19.5, -1.0], "expected": 19.500000001250154}, {"input": [19.5, -0.5], "expected": 19.500000002061153}, {"input": [19.5, 0.0], "expected": 19.500000003398267}, {"input": [19.5, 0.5], "expected": 19.500000005602796}, {"input": [19.5, 1.0], "expected": 19.50000000923745}, {"input": [19.5, 1.5], "expected": 19.50000001522998}, {"input": [19.5, 2.0], "expected": 19.50000002510999}, {"input": [19.5, 2.5], "expected": 19.500000041399375}, {"input": [19.5, 3.0], "expected": 19.500000068256032}, {"input": [19.5, 3.5], "expected": 19.50000011253517}, {"input": [19.5, 4.0], "expected": 19.50000018553912}, {"input": [19.5, 4.5], "expected": 19.500000305902272}, {"input": [19.5, 5.0], "expected": 19.500000504347536}, {"input": [19.5, 5.5], "expected": 19.500000831528375}, {"input": [19.5, 6.0], "expected": 19.500001370958145}, {"input": [19.5, 6.5], "expected": 19.500002260326852}, {"input": [19.5, 7.0], "expected": 19.500003726646227}, {"input": [19.5, 7.5], "expected": 19.500006144193478}, {"input": [19.5, 8.0], "expected": 19.50001013004229}, {"input": [19.5, 8.5], "expected": 19.500016701561318}, {"input": [19.5, 9.0], "expected": 19.500027536070228}, {"input": [19.5, 9.5], "expected": 19.500045398899218}, {"input": [19.5, 10.0], "expected": 19.50007484902863}, {"input": [19.5, 10.5], "expected": 19.500123402189722}, {"input": [19.5, 11.0], "expected": 19.500203447672128}, {"input": [19.5, 11.5], "expected": 19.500335406372894}, {"input": [19.5, 12.0], "expected": 19.50055293147536}, {"input": [19.5, 12.5], "expected": 19.500911466453775}, {"input": [19.5, 13.0], "expected": 19.501502310159754}, {"input": [19.5, 13.5], "expected": 19.502475685137732}, {"input": [19.5, 14.0], "expected": 19.504078443270572}, {"input": [19.5, 14.5], "expected": 19.506715348489116}, {"input": [19.5, 15.0], "expected": 19.511047744848593}, {"input": [19.5, 15.5], "expected": 19.51814992791781}, {"input": [19.5, 16.0], "expected": 19.52975041827262}, {"input": [19.5, 16.5], "expected": 19.548587351573744}, {"input": [19.5, 17.0], "expected": 19.57888973429255}, {"input": [19.5, 17.5], "expected": 19.626928011042974}, {"input": [19.5, 18.0], "expected": 19.701413277982752}, {"input": [19.5, 18.5], "expected": 19.813261687518224}, {"input": [19.5, 19.0], "expected": 19.97407698418011}, {"input": [19.5, 19.5], "expected": 20.193147180559944}, {"input": [19.5, 20.0], "expected": 20.47407698418011}, {"input": [19.5, 20.5], "expected": 20.813261687518224}, {"input": [19.5, 21.0], "expected": 21.201413277982752}, {"input": [19.5, 21.5], "expected": 21.626928011042974}, {"input": [19.5, 22.0], "expected": 22.07888973429255}, {"input": [19.5, 22.5], "expected": 22.548587351573744}, {"input": [19.5, 23.0], "expected": 23.02975041827262}, {"input": [19.5, 23.5], "expected": 23.51814992791781}, {"input": [19.5, 24.0], "expected": 24.011047744848593}, {"input": [19.5, 24.5], "expected": 24.506715348489116}, {"input": [19.5, 25.0], "expected": 25.004078443270572}, {"input": [19.5, 25.5], "expected": 25.502475685137732}, {"input": [19.5, 26.0], "expected": 26.001502310159754}, {"input": [19.5, 26.5], "expected": 26.500911466453775}, {"input": [19.5, 27.0], "expected": 27.00055293147536}, {"input": [19.5, 27.5], "expected": 27.500335406372894}, {"input": [19.5, 28.0], "expected": 28.000203447672128}, {"input": [19.5, 28.5], "expected": 28.500123402189722}, {"input": [19.5, 29.0], "expected": 29.00007484902863}, {"input": [19.5, 29.5], "expected": 29.500045398899218}, {"input": [19.5, 30.0], "expected": 30.000027536070228}, {"input": [19.5, 30.5], "expected": 30.500016701561318}, {"input": [19.5, 31.0], "expected": 31.00001013004229}, {"input": [19.5, 31.5], "expected": 31.500006144193478}, {"input": [19.5, 32.0], "expected": 32.00000372664623}, {"input": [19.5, 32.5], "expected": 32.50000226032685}, {"input": [19.5, 33.0], "expected": 33.000001370958145}, {"input": [19.5, 33.5], "expected": 33.500000831528375}, {"input": [19.5, 34.0], "expected": 34.00000050434753}, {"input": [19.5, 34.5], "expected": 34.500000305902276}, {"input": [19.5, 35.0], "expected": 35.00000018553912}, {"input": [19.5, 35.5], "expected": 35.50000011253517}, {"input": [19.5, 36.0], "expected": 36.00000006825603}, {"input": [19.5, 36.5], "expected": 36.500000041399375}, {"input": [19.5, 37.0], "expected": 37.00000002510999}, {"input": [19.5, 37.5], "expected": 37.50000001522998}, {"input": [19.5, 38.0], "expected": 38.000000009237446}, {"input": [19.5, 38.5], "expected": 38.50000000560279}, {"input": [19.5, 39.0], "expected": 39.00000000339827}, {"input": [19.5, 39.5], "expected": 39.50000000206116}, {"input": [19.5, 40.0], "expected": 40.00000000125015}, {"input": [19.5, 40.5], "expected": 40.500000000758256}, {"input": [19.5, 41.0], "expected": 41.000000000459906}, {"input": [19.5, 41.5], "expected": 41.500000000278945}, {"input": [19.5, 42.0], "expected": 42.00000000016919}, {"input": [19.5, 42.5], "expected": 42.50000000010262}, {"input": [19.5, 43.0], "expected": 43.00000000006224}, {"input": [19.5, 43.5], "expected": 43.50000000003775}, {"input": [19.5, 44.0], "expected": 44.0000000000229}, {"input": [19.5, 44.5], "expected": 44.50000000001389}, {"input": [19.5, 45.0], "expected": 45.00000000000842}, {"input": [19.5, 45.5], "expected": 45.50000000000511}, {"input": [19.5, 46.0], "expected": 46.0000000000031}, {"input": [19.5, 46.5], "expected": 46.50000000000188}, {"input": [19.5, 47.0], "expected": 47.00000000000114}, {"input": [19.5, 47.5], "expected": 47.50000000000069}, {"input": [19.5, 48.0], "expected": 48.00000000000042}, {"input": [19.5, 48.5], "expected": 48.500000000000256}, {"input": [19.5, 49.0], "expected": 49.000000000000156}, {"input": [19.5, 49.5], "expected": 49.50000000000009}, {"input": [19.5, 50.0], "expected": 50.00000000000006}, {"input": [19.5, 50.5], "expected": 50.500000000000036}, {"input": [19.5, 51.0], "expected": 51.00000000000002}, {"input": [19.5, 51.5], "expected": 51.500000000000014}, {"input": [19.5, 52.0], "expected": 52.00000000000001}, {"input": [19.5, 52.5], "expected": 52.50000000000001}, {"input": [19.5, 53.0], "expected": 53.0}, {"input": [19.5, 53.5], "expected": 53.5}, {"input": [19.5, 54.0], "expected": 54.0}, {"input": [19.5, 54.5], "expected": 54.5}, {"input": [19.5, 55.0], "expected": 55.0}, {"input": [19.5, 55.5], "expected": 55.5}, {"input": [19.5, 56.0], "expected": 56.0}, {"input": [19.5, 56.5], "expected": 56.5}, {"input": [19.5, 57.0], "expected": 57.0}, {"input": [19.5, 57.5], "expected": 57.5}, {"input": [19.5, 58.0], "expected": 58.0}, {"input": [19.5, 58.5], "expected": 58.5}, {"input": [19.5, 59.0], "expected": 59.0}, {"input": [19.5, 59.5], "expected": 59.5}, {"input": [19.5, 60.0], "expected": 60.0}, {"input": [19.5, 60.5], "expected": 60.5}, {"input": [19.5, 61.0], "expected": 61.0}, {"input": [19.5, 61.5], "expected": 61.5}, {"input": [19.5, 62.0], "expected": 62.0}, {"input": [19.5, 62.5], "expected": 62.5}, {"input": [19.5, 63.0], "expected": 63.0}, {"input": [19.5, 63.5], "expected": 63.5}, {"input": [19.5, 64.0], "expected": 64.0}, {"input": [19.5, 64.5], "expected": 64.5}, {"input": [19.5, 65.0], "expected": 65.0}, {"input": [19.5, 65.5], "expected": 65.5}, {"input": [19.5, 66.0], "expected": 66.0}, {"input": [19.5, 66.5], "expected": 66.5}, {"input": [19.5, 67.0], "expected": 67.0}, {"input": [19.5, 67.5], "expected": 67.5}, {"input": [19.5, 68.0], "expected": 68.0}, {"input": [19.5, 68.5], "expected": 68.5}, {"input": [19.5, 69.0], "expected": 69.0}, {"input": [19.5, 69.5], "expected": 69.5}, {"input": [19.5, 70.0], "expected": 70.0}, {"input": [19.5, 70.5], "expected": 70.5}, {"input": [19.5, 71.0], "expected": 71.0}, {"input": [19.5, 71.5], "expected": 71.5}, {"input": [19.5, 72.0], "expected": 72.0}, {"input": [19.5, 72.5], "expected": 72.5}, {"input": [19.5, 73.0], "expected": 73.0}, {"input": [19.5, 73.5], "expected": 73.5}, {"input": [19.5, 74.0], "expected": 74.0}, {"input": [19.5, 74.5], "expected": 74.5}, {"input": [19.5, 75.0], "expected": 75.0}, {"input": [19.5, 75.5], "expected": 75.5}, {"input": [19.5, 76.0], "expected": 76.0}, {"input": [19.5, 76.5], "expected": 76.5}, {"input": [19.5, 77.0], "expected": 77.0}, {"input": [19.5, 77.5], "expected": 77.5}, {"input": [19.5, 78.0], "expected": 78.0}, {"input": [19.5, 78.5], "expected": 78.5}, {"input": [19.5, 79.0], "expected": 79.0}, {"input": [19.5, 79.5], "expected": 79.5}, {"input": [19.5, 80.0], "expected": 80.0}, {"input": [19.5, 80.5], "expected": 80.5}, {"input": [19.5, 81.0], "expected": 81.0}, {"input": [19.5, 81.5], "expected": 81.5}, {"input": [19.5, 82.0], "expected": 82.0}, {"input": [19.5, 82.5], "expected": 82.5}, {"input": [19.5, 83.0], "expected": 83.0}, {"input": [19.5, 83.5], "expected": 83.5}, {"input": [19.5, 84.0], "expected": 84.0}, {"input": [19.5, 84.5], "expected": 84.5}, {"input": [19.5, 85.0], "expected": 85.0}, {"input": [19.5, 85.5], "expected": 85.5}, {"input": [19.5, 86.0], "expected": 86.0}, {"input": [19.5, 86.5], "expected": 86.5}, {"input": [19.5, 87.0], "expected": 87.0}, {"input": [19.5, 87.5], "expected": 87.5}, {"input": [19.5, 88.0], "expected": 88.0}, {"input": [19.5, 88.5], "expected": 88.5}, {"input": [19.5, 89.0], "expected": 89.0}, {"input": [19.5, 89.5], "expected": 89.5}, {"input": [19.5, 90.0], "expected": 90.0}, {"input": [19.5, 90.5], "expected": 90.5}, {"input": [19.5, 91.0], "expected": 91.0}, {"input": [19.5, 91.5], "expected": 91.5}, {"input": [19.5, 92.0], "expected": 92.0}, {"input": [19.5, 92.5], "expected": 92.5}, {"input": [19.5, 93.0], "expected": 93.0}, {"input": [19.5, 93.5], "expected": 93.5}, {"input": [19.5, 94.0], "expected": 94.0}, {"input": [19.5, 94.5], "expected": 94.5}, {"input": [19.5, 95.0], "expected": 95.0}, {"input": [19.5, 95.5], "expected": 95.5}, {"input": [19.5, 96.0], "expected": 96.0}, {"input": [19.5, 96.5], "expected": 96.5}, {"input": [19.5, 97.0], "expected": 97.0}, {"input": [19.5, 97.5], "expected": 97.5}, {"input": [19.5, 98.0], "expected": 98.0}, {"input": [19.5, 98.5], "expected": 98.5}, {"input": [19.5, 99.0], "expected": 99.0}, {"input": [19.5, 99.5], "expected": 99.5}, {"input": [20.0, -100.0], "expected": 20.0}, {"input": [20.0, -99.5], "expected": 20.0}, {"input": [20.0, -99.0], "expected": 20.0}, {"input": [20.0, -98.5], "expected": 20.0}, {"input": [20.0, -98.0], "expected": 20.0}, {"input": [20.0, -97.5], "expected": 20.0}, {"input": [20.0, -97.0], "expected": 20.0}, {"input": [20.0, -96.5], "expected": 20.0}, {"input": [20.0, -96.0], "expected": 20.0}, {"input": [20.0, -95.5], "expected": 20.0}, {"input": [20.0, -95.0], "expected": 20.0}, {"input": [20.0, -94.5], "expected": 20.0}, {"input": [20.0, -94.0], "expected": 20.0}, {"input": [20.0, -93.5], "expected": 20.0}, {"input": [20.0, -93.0], "expected": 20.0}, {"input": [20.0, -92.5], "expected": 20.0}, {"input": [20.0, -92.0], "expected": 20.0}, {"input": [20.0, -91.5], "expected": 20.0}, {"input": [20.0, -91.0], "expected": 20.0}, {"input": [20.0, -90.5], "expected": 20.0}, {"input": [20.0, -90.0], "expected": 20.0}, {"input": [20.0, -89.5], "expected": 20.0}, {"input": [20.0, -89.0], "expected": 20.0}, {"input": [20.0, -88.5], "expected": 20.0}, {"input": [20.0, -88.0], "expected": 20.0}, {"input": [20.0, -87.5], "expected": 20.0}, {"input": [20.0, -87.0], "expected": 20.0}, {"input": [20.0, -86.5], "expected": 20.0}, {"input": [20.0, -86.0], "expected": 20.0}, {"input": [20.0, -85.5], "expected": 20.0}, {"input": [20.0, -85.0], "expected": 20.0}, {"input": [20.0, -84.5], "expected": 20.0}, {"input": [20.0, -84.0], "expected": 20.0}, {"input": [20.0, -83.5], "expected": 20.0}, {"input": [20.0, -83.0], "expected": 20.0}, {"input": [20.0, -82.5], "expected": 20.0}, {"input": [20.0, -82.0], "expected": 20.0}, {"input": [20.0, -81.5], "expected": 20.0}, {"input": [20.0, -81.0], "expected": 20.0}, {"input": [20.0, -80.5], "expected": 20.0}, {"input": [20.0, -80.0], "expected": 20.0}, {"input": [20.0, -79.5], "expected": 20.0}, {"input": [20.0, -79.0], "expected": 20.0}, {"input": [20.0, -78.5], "expected": 20.0}, {"input": [20.0, -78.0], "expected": 20.0}, {"input": [20.0, -77.5], "expected": 20.0}, {"input": [20.0, -77.0], "expected": 20.0}, {"input": [20.0, -76.5], "expected": 20.0}, {"input": [20.0, -76.0], "expected": 20.0}, {"input": [20.0, -75.5], "expected": 20.0}, {"input": [20.0, -75.0], "expected": 20.0}, {"input": [20.0, -74.5], "expected": 20.0}, {"input": [20.0, -74.0], "expected": 20.0}, {"input": [20.0, -73.5], "expected": 20.0}, {"input": [20.0, -73.0], "expected": 20.0}, {"input": [20.0, -72.5], "expected": 20.0}, {"input": [20.0, -72.0], "expected": 20.0}, {"input": [20.0, -71.5], "expected": 20.0}, {"input": [20.0, -71.0], "expected": 20.0}, {"input": [20.0, -70.5], "expected": 20.0}, {"input": [20.0, -70.0], "expected": 20.0}, {"input": [20.0, -69.5], "expected": 20.0}, {"input": [20.0, -69.0], "expected": 20.0}, {"input": [20.0, -68.5], "expected": 20.0}, {"input": [20.0, -68.0], "expected": 20.0}, {"input": [20.0, -67.5], "expected": 20.0}, {"input": [20.0, -67.0], "expected": 20.0}, {"input": [20.0, -66.5], "expected": 20.0}, {"input": [20.0, -66.0], "expected": 20.0}, {"input": [20.0, -65.5], "expected": 20.0}, {"input": [20.0, -65.0], "expected": 20.0}, {"input": [20.0, -64.5], "expected": 20.0}, {"input": [20.0, -64.0], "expected": 20.0}, {"input": [20.0, -63.5], "expected": 20.0}, {"input": [20.0, -63.0], "expected": 20.0}, {"input": [20.0, -62.5], "expected": 20.0}, {"input": [20.0, -62.0], "expected": 20.0}, {"input": [20.0, -61.5], "expected": 20.0}, {"input": [20.0, -61.0], "expected": 20.0}, {"input": [20.0, -60.5], "expected": 20.0}, {"input": [20.0, -60.0], "expected": 20.0}, {"input": [20.0, -59.5], "expected": 20.0}, {"input": [20.0, -59.0], "expected": 20.0}, {"input": [20.0, -58.5], "expected": 20.0}, {"input": [20.0, -58.0], "expected": 20.0}, {"input": [20.0, -57.5], "expected": 20.0}, {"input": [20.0, -57.0], "expected": 20.0}, {"input": [20.0, -56.5], "expected": 20.0}, {"input": [20.0, -56.0], "expected": 20.0}, {"input": [20.0, -55.5], "expected": 20.0}, {"input": [20.0, -55.0], "expected": 20.0}, {"input": [20.0, -54.5], "expected": 20.0}, {"input": [20.0, -54.0], "expected": 20.0}, {"input": [20.0, -53.5], "expected": 20.0}, {"input": [20.0, -53.0], "expected": 20.0}, {"input": [20.0, -52.5], "expected": 20.0}, {"input": [20.0, -52.0], "expected": 20.0}, {"input": [20.0, -51.5], "expected": 20.0}, {"input": [20.0, -51.0], "expected": 20.0}, {"input": [20.0, -50.5], "expected": 20.0}, {"input": [20.0, -50.0], "expected": 20.0}, {"input": [20.0, -49.5], "expected": 20.0}, {"input": [20.0, -49.0], "expected": 20.0}, {"input": [20.0, -48.5], "expected": 20.0}, {"input": [20.0, -48.0], "expected": 20.0}, {"input": [20.0, -47.5], "expected": 20.0}, {"input": [20.0, -47.0], "expected": 20.0}, {"input": [20.0, -46.5], "expected": 20.0}, {"input": [20.0, -46.0], "expected": 20.0}, {"input": [20.0, -45.5], "expected": 20.0}, {"input": [20.0, -45.0], "expected": 20.0}, {"input": [20.0, -44.5], "expected": 20.0}, {"input": [20.0, -44.0], "expected": 20.0}, {"input": [20.0, -43.5], "expected": 20.0}, {"input": [20.0, -43.0], "expected": 20.0}, {"input": [20.0, -42.5], "expected": 20.0}, {"input": [20.0, -42.0], "expected": 20.0}, {"input": [20.0, -41.5], "expected": 20.0}, {"input": [20.0, -41.0], "expected": 20.0}, {"input": [20.0, -40.5], "expected": 20.0}, {"input": [20.0, -40.0], "expected": 20.0}, {"input": [20.0, -39.5], "expected": 20.0}, {"input": [20.0, -39.0], "expected": 20.0}, {"input": [20.0, -38.5], "expected": 20.0}, {"input": [20.0, -38.0], "expected": 20.0}, {"input": [20.0, -37.5], "expected": 20.0}, {"input": [20.0, -37.0], "expected": 20.0}, {"input": [20.0, -36.5], "expected": 20.0}, {"input": [20.0, -36.0], "expected": 20.0}, {"input": [20.0, -35.5], "expected": 20.0}, {"input": [20.0, -35.0], "expected": 20.0}, {"input": [20.0, -34.5], "expected": 20.0}, {"input": [20.0, -34.0], "expected": 20.0}, {"input": [20.0, -33.5], "expected": 20.0}, {"input": [20.0, -33.0], "expected": 20.0}, {"input": [20.0, -32.5], "expected": 20.0}, {"input": [20.0, -32.0], "expected": 20.0}, {"input": [20.0, -31.5], "expected": 20.0}, {"input": [20.0, -31.0], "expected": 20.0}, {"input": [20.0, -30.5], "expected": 20.0}, {"input": [20.0, -30.0], "expected": 20.0}, {"input": [20.0, -29.5], "expected": 20.0}, {"input": [20.0, -29.0], "expected": 20.0}, {"input": [20.0, -28.5], "expected": 20.0}, {"input": [20.0, -28.0], "expected": 20.0}, {"input": [20.0, -27.5], "expected": 20.0}, {"input": [20.0, -27.0], "expected": 20.0}, {"input": [20.0, -26.5], "expected": 20.0}, {"input": [20.0, -26.0], "expected": 20.0}, {"input": [20.0, -25.5], "expected": 20.0}, {"input": [20.0, -25.0], "expected": 20.0}, {"input": [20.0, -24.5], "expected": 20.0}, {"input": [20.0, -24.0], "expected": 20.0}, {"input": [20.0, -23.5], "expected": 20.0}, {"input": [20.0, -23.0], "expected": 20.0}, {"input": [20.0, -22.5], "expected": 20.0}, {"input": [20.0, -22.0], "expected": 20.0}, {"input": [20.0, -21.5], "expected": 20.0}, {"input": [20.0, -21.0], "expected": 20.0}, {"input": [20.0, -20.5], "expected": 20.0}, {"input": [20.0, -20.0], "expected": 20.0}, {"input": [20.0, -19.5], "expected": 20.0}, {"input": [20.0, -19.0], "expected": 20.0}, {"input": [20.0, -18.5], "expected": 20.0}, {"input": [20.0, -18.0], "expected": 20.0}, {"input": [20.0, -17.5], "expected": 20.0}, {"input": [20.0, -17.0], "expected": 20.0}, {"input": [20.0, -16.5], "expected": 20.0}, {"input": [20.0, -16.0], "expected": 20.0}, {"input": [20.0, -15.5], "expected": 20.0}, {"input": [20.0, -15.0], "expected": 20.0}, {"input": [20.0, -14.5], "expected": 20.0}, {"input": [20.0, -14.0], "expected": 20.0}, {"input": [20.0, -13.5], "expected": 20.000000000000004}, {"input": [20.0, -13.0], "expected": 20.000000000000004}, {"input": [20.0, -12.5], "expected": 20.000000000000007}, {"input": [20.0, -12.0], "expected": 20.000000000000014}, {"input": [20.0, -11.5], "expected": 20.00000000000002}, {"input": [20.0, -11.0], "expected": 20.000000000000036}, {"input": [20.0, -10.5], "expected": 20.000000000000057}, {"input": [20.0, -10.0], "expected": 20.000000000000092}, {"input": [20.0, -9.5], "expected": 20.000000000000153}, {"input": [20.0, -9.0], "expected": 20.000000000000256}, {"input": [20.0, -8.5], "expected": 20.00000000000042}, {"input": [20.0, -8.0], "expected": 20.000000000000693}, {"input": [20.0, -7.5], "expected": 20.00000000000114}, {"input": [20.0, -7.0], "expected": 20.00000000000188}, {"input": [20.0, -6.5], "expected": 20.000000000003098}, {"input": [20.0, -6.0], "expected": 20.00000000000511}, {"input": [20.0, -5.5], "expected": 20.000000000008423}, {"input": [20.0, -5.0], "expected": 20.000000000013888}, {"input": [20.0, -4.5], "expected": 20.000000000022897}, {"input": [20.0, -4.0], "expected": 20.00000000003775}, {"input": [20.0, -3.5], "expected": 20.00000000006224}, {"input": [20.0, -3.0], "expected": 20.00000000010262}, {"input": [20.0, -2.5], "expected": 20.00000000016919}, {"input": [20.0, -2.0], "expected": 20.00000000027895}, {"input": [20.0, -1.5], "expected": 20.000000000459906}, {"input": [20.0, -1.0], "expected": 20.000000000758256}, {"input": [20.0, -0.5], "expected": 20.000000001250154}, {"input": [20.0, 0.0], "expected": 20.000000002061153}, {"input": [20.0, 0.5], "expected": 20.000000003398267}, {"input": [20.0, 1.0], "expected": 20.000000005602796}, {"input": [20.0, 1.5], "expected": 20.00000000923745}, {"input": [20.0, 2.0], "expected": 20.00000001522998}, {"input": [20.0, 2.5], "expected": 20.00000002510999}, {"input": [20.0, 3.0], "expected": 20.000000041399375}, {"input": [20.0, 3.5], "expected": 20.000000068256032}, {"input": [20.0, 4.0], "expected": 20.00000011253517}, {"input": [20.0, 4.5], "expected": 20.00000018553912}, {"input": [20.0, 5.0], "expected": 20.000000305902272}, {"input": [20.0, 5.5], "expected": 20.000000504347536}, {"input": [20.0, 6.0], "expected": 20.000000831528375}, {"input": [20.0, 6.5], "expected": 20.000001370958145}, {"input": [20.0, 7.0], "expected": 20.000002260326852}, {"input": [20.0, 7.5], "expected": 20.000003726646227}, {"input": [20.0, 8.0], "expected": 20.000006144193478}, {"input": [20.0, 8.5], "expected": 20.00001013004229}, {"input": [20.0, 9.0], "expected": 20.000016701561318}, {"input": [20.0, 9.5], "expected": 20.000027536070228}, {"input": [20.0, 10.0], "expected": 20.000045398899218}, {"input": [20.0, 10.5], "expected": 20.00007484902863}, {"input": [20.0, 11.0], "expected": 20.000123402189722}, {"input": [20.0, 11.5], "expected": 20.000203447672128}, {"input": [20.0, 12.0], "expected": 20.000335406372894}, {"input": [20.0, 12.5], "expected": 20.00055293147536}, {"input": [20.0, 13.0], "expected": 20.000911466453775}, {"input": [20.0, 13.5], "expected": 20.001502310159754}, {"input": [20.0, 14.0], "expected": 20.002475685137732}, {"input": [20.0, 14.5], "expected": 20.004078443270572}, {"input": [20.0, 15.0], "expected": 20.006715348489116}, {"input": [20.0, 15.5], "expected": 20.011047744848593}, {"input": [20.0, 16.0], "expected": 20.01814992791781}, {"input": [20.0, 16.5], "expected": 20.02975041827262}, {"input": [20.0, 17.0], "expected": 20.048587351573744}, {"input": [20.0, 17.5], "expected": 20.07888973429255}, {"input": [20.0, 18.0], "expected": 20.126928011042974}, {"input": [20.0, 18.5], "expected": 20.201413277982752}, {"input": [20.0, 19.0], "expected": 20.313261687518224}, {"input": [20.0, 19.5], "expected": 20.47407698418011}, {"input": [20.0, 20.0], "expected": 20.693147180559944}, {"input": [20.0, 20.5], "expected": 20.97407698418011}, {"input": [20.0, 21.0], "expected": 21.313261687518224}, {"input": [20.0, 21.5], "expected": 21.701413277982752}, {"input": [20.0, 22.0], "expected": 22.126928011042974}, {"input": [20.0, 22.5], "expected": 22.57888973429255}, {"input": [20.0, 23.0], "expected": 23.048587351573744}, {"input": [20.0, 23.5], "expected": 23.52975041827262}, {"input": [20.0, 24.0], "expected": 24.01814992791781}, {"input": [20.0, 24.5], "expected": 24.511047744848593}, {"input": [20.0, 25.0], "expected": 25.006715348489116}, {"input": [20.0, 25.5], "expected": 25.504078443270572}, {"input": [20.0, 26.0], "expected": 26.002475685137732}, {"input": [20.0, 26.5], "expected": 26.501502310159754}, {"input": [20.0, 27.0], "expected": 27.000911466453775}, {"input": [20.0, 27.5], "expected": 27.50055293147536}, {"input": [20.0, 28.0], "expected": 28.000335406372894}, {"input": [20.0, 28.5], "expected": 28.500203447672128}, {"input": [20.0, 29.0], "expected": 29.000123402189722}, {"input": [20.0, 29.5], "expected": 29.50007484902863}, {"input": [20.0, 30.0], "expected": 30.000045398899218}, {"input": [20.0, 30.5], "expected": 30.500027536070228}, {"input": [20.0, 31.0], "expected": 31.000016701561318}, {"input": [20.0, 31.5], "expected": 31.50001013004229}, {"input": [20.0, 32.0], "expected": 32.00000614419348}, {"input": [20.0, 32.5], "expected": 32.50000372664623}, {"input": [20.0, 33.0], "expected": 33.00000226032685}, {"input": [20.0, 33.5], "expected": 33.500001370958145}, {"input": [20.0, 34.0], "expected": 34.000000831528375}, {"input": [20.0, 34.5], "expected": 34.50000050434753}, {"input": [20.0, 35.0], "expected": 35.000000305902276}, {"input": [20.0, 35.5], "expected": 35.50000018553912}, {"input": [20.0, 36.0], "expected": 36.00000011253517}, {"input": [20.0, 36.5], "expected": 36.50000006825603}, {"input": [20.0, 37.0], "expected": 37.000000041399375}, {"input": [20.0, 37.5], "expected": 37.50000002510999}, {"input": [20.0, 38.0], "expected": 38.00000001522998}, {"input": [20.0, 38.5], "expected": 38.500000009237446}, {"input": [20.0, 39.0], "expected": 39.00000000560279}, {"input": [20.0, 39.5], "expected": 39.50000000339827}, {"input": [20.0, 40.0], "expected": 40.00000000206116}, {"input": [20.0, 40.5], "expected": 40.50000000125015}, {"input": [20.0, 41.0], "expected": 41.000000000758256}, {"input": [20.0, 41.5], "expected": 41.500000000459906}, {"input": [20.0, 42.0], "expected": 42.000000000278945}, {"input": [20.0, 42.5], "expected": 42.50000000016919}, {"input": [20.0, 43.0], "expected": 43.00000000010262}, {"input": [20.0, 43.5], "expected": 43.50000000006224}, {"input": [20.0, 44.0], "expected": 44.00000000003775}, {"input": [20.0, 44.5], "expected": 44.5000000000229}, {"input": [20.0, 45.0], "expected": 45.00000000001389}, {"input": [20.0, 45.5], "expected": 45.50000000000842}, {"input": [20.0, 46.0], "expected": 46.00000000000511}, {"input": [20.0, 46.5], "expected": 46.5000000000031}, {"input": [20.0, 47.0], "expected": 47.00000000000188}, {"input": [20.0, 47.5], "expected": 47.50000000000114}, {"input": [20.0, 48.0], "expected": 48.00000000000069}, {"input": [20.0, 48.5], "expected": 48.50000000000042}, {"input": [20.0, 49.0], "expected": 49.000000000000256}, {"input": [20.0, 49.5], "expected": 49.500000000000156}, {"input": [20.0, 50.0], "expected": 50.00000000000009}, {"input": [20.0, 50.5], "expected": 50.50000000000006}, {"input": [20.0, 51.0], "expected": 51.000000000000036}, {"input": [20.0, 51.5], "expected": 51.50000000000002}, {"input": [20.0, 52.0], "expected": 52.000000000000014}, {"input": [20.0, 52.5], "expected": 52.50000000000001}, {"input": [20.0, 53.0], "expected": 53.00000000000001}, {"input": [20.0, 53.5], "expected": 53.5}, {"input": [20.0, 54.0], "expected": 54.0}, {"input": [20.0, 54.5], "expected": 54.5}, {"input": [20.0, 55.0], "expected": 55.0}, {"input": [20.0, 55.5], "expected": 55.5}, {"input": [20.0, 56.0], "expected": 56.0}, {"input": [20.0, 56.5], "expected": 56.5}, {"input": [20.0, 57.0], "expected": 57.0}, {"input": [20.0, 57.5], "expected": 57.5}, {"input": [20.0, 58.0], "expected": 58.0}, {"input": [20.0, 58.5], "expected": 58.5}, {"input": [20.0, 59.0], "expected": 59.0}, {"input": [20.0, 59.5], "expected": 59.5}, {"input": [20.0, 60.0], "expected": 60.0}, {"input": [20.0, 60.5], "expected": 60.5}, {"input": [20.0, 61.0], "expected": 61.0}, {"input": [20.0, 61.5], "expected": 61.5}, {"input": [20.0, 62.0], "expected": 62.0}, {"input": [20.0, 62.5], "expected": 62.5}, {"input": [20.0, 63.0], "expected": 63.0}, {"input": [20.0, 63.5], "expected": 63.5}, {"input": [20.0, 64.0], "expected": 64.0}, {"input": [20.0, 64.5], "expected": 64.5}, {"input": [20.0, 65.0], "expected": 65.0}, {"input": [20.0, 65.5], "expected": 65.5}, {"input": [20.0, 66.0], "expected": 66.0}, {"input": [20.0, 66.5], "expected": 66.5}, {"input": [20.0, 67.0], "expected": 67.0}, {"input": [20.0, 67.5], "expected": 67.5}, {"input": [20.0, 68.0], "expected": 68.0}, {"input": [20.0, 68.5], "expected": 68.5}, {"input": [20.0, 69.0], "expected": 69.0}, {"input": [20.0, 69.5], "expected": 69.5}, {"input": [20.0, 70.0], "expected": 70.0}, {"input": [20.0, 70.5], "expected": 70.5}, {"input": [20.0, 71.0], "expected": 71.0}, {"input": [20.0, 71.5], "expected": 71.5}, {"input": [20.0, 72.0], "expected": 72.0}, {"input": [20.0, 72.5], "expected": 72.5}, {"input": [20.0, 73.0], "expected": 73.0}, {"input": [20.0, 73.5], "expected": 73.5}, {"input": [20.0, 74.0], "expected": 74.0}, {"input": [20.0, 74.5], "expected": 74.5}, {"input": [20.0, 75.0], "expected": 75.0}, {"input": [20.0, 75.5], "expected": 75.5}, {"input": [20.0, 76.0], "expected": 76.0}, {"input": [20.0, 76.5], "expected": 76.5}, {"input": [20.0, 77.0], "expected": 77.0}, {"input": [20.0, 77.5], "expected": 77.5}, {"input": [20.0, 78.0], "expected": 78.0}, {"input": [20.0, 78.5], "expected": 78.5}, {"input": [20.0, 79.0], "expected": 79.0}, {"input": [20.0, 79.5], "expected": 79.5}, {"input": [20.0, 80.0], "expected": 80.0}, {"input": [20.0, 80.5], "expected": 80.5}, {"input": [20.0, 81.0], "expected": 81.0}, {"input": [20.0, 81.5], "expected": 81.5}, {"input": [20.0, 82.0], "expected": 82.0}, {"input": [20.0, 82.5], "expected": 82.5}, {"input": [20.0, 83.0], "expected": 83.0}, {"input": [20.0, 83.5], "expected": 83.5}, {"input": [20.0, 84.0], "expected": 84.0}, {"input": [20.0, 84.5], "expected": 84.5}, {"input": [20.0, 85.0], "expected": 85.0}, {"input": [20.0, 85.5], "expected": 85.5}, {"input": [20.0, 86.0], "expected": 86.0}, {"input": [20.0, 86.5], "expected": 86.5}, {"input": [20.0, 87.0], "expected": 87.0}, {"input": [20.0, 87.5], "expected": 87.5}, {"input": [20.0, 88.0], "expected": 88.0}, {"input": [20.0, 88.5], "expected": 88.5}, {"input": [20.0, 89.0], "expected": 89.0}, {"input": [20.0, 89.5], "expected": 89.5}, {"input": [20.0, 90.0], "expected": 90.0}, {"input": [20.0, 90.5], "expected": 90.5}, {"input": [20.0, 91.0], "expected": 91.0}, {"input": [20.0, 91.5], "expected": 91.5}, {"input": [20.0, 92.0], "expected": 92.0}, {"input": [20.0, 92.5], "expected": 92.5}, {"input": [20.0, 93.0], "expected": 93.0}, {"input": [20.0, 93.5], "expected": 93.5}, {"input": [20.0, 94.0], "expected": 94.0}, {"input": [20.0, 94.5], "expected": 94.5}, {"input": [20.0, 95.0], "expected": 95.0}, {"input": [20.0, 95.5], "expected": 95.5}, {"input": [20.0, 96.0], "expected": 96.0}, {"input": [20.0, 96.5], "expected": 96.5}, {"input": [20.0, 97.0], "expected": 97.0}, {"input": [20.0, 97.5], "expected": 97.5}, {"input": [20.0, 98.0], "expected": 98.0}, {"input": [20.0, 98.5], "expected": 98.5}, {"input": [20.0, 99.0], "expected": 99.0}, {"input": [20.0, 99.5], "expected": 99.5}, {"input": [20.5, -100.0], "expected": 20.5}, {"input": [20.5, -99.5], "expected": 20.5}, {"input": [20.5, -99.0], "expected": 20.5}, {"input": [20.5, -98.5], "expected": 20.5}, {"input": [20.5, -98.0], "expected": 20.5}, {"input": [20.5, -97.5], "expected": 20.5}, {"input": [20.5, -97.0], "expected": 20.5}, {"input": [20.5, -96.5], "expected": 20.5}, {"input": [20.5, -96.0], "expected": 20.5}, {"input": [20.5, -95.5], "expected": 20.5}, {"input": [20.5, -95.0], "expected": 20.5}, {"input": [20.5, -94.5], "expected": 20.5}, {"input": [20.5, -94.0], "expected": 20.5}, {"input": [20.5, -93.5], "expected": 20.5}, {"input": [20.5, -93.0], "expected": 20.5}, {"input": [20.5, -92.5], "expected": 20.5}, {"input": [20.5, -92.0], "expected": 20.5}, {"input": [20.5, -91.5], "expected": 20.5}, {"input": [20.5, -91.0], "expected": 20.5}, {"input": [20.5, -90.5], "expected": 20.5}, {"input": [20.5, -90.0], "expected": 20.5}, {"input": [20.5, -89.5], "expected": 20.5}, {"input": [20.5, -89.0], "expected": 20.5}, {"input": [20.5, -88.5], "expected": 20.5}, {"input": [20.5, -88.0], "expected": 20.5}, {"input": [20.5, -87.5], "expected": 20.5}, {"input": [20.5, -87.0], "expected": 20.5}, {"input": [20.5, -86.5], "expected": 20.5}, {"input": [20.5, -86.0], "expected": 20.5}, {"input": [20.5, -85.5], "expected": 20.5}, {"input": [20.5, -85.0], "expected": 20.5}, {"input": [20.5, -84.5], "expected": 20.5}, {"input": [20.5, -84.0], "expected": 20.5}, {"input": [20.5, -83.5], "expected": 20.5}, {"input": [20.5, -83.0], "expected": 20.5}, {"input": [20.5, -82.5], "expected": 20.5}, {"input": [20.5, -82.0], "expected": 20.5}, {"input": [20.5, -81.5], "expected": 20.5}, {"input": [20.5, -81.0], "expected": 20.5}, {"input": [20.5, -80.5], "expected": 20.5}, {"input": [20.5, -80.0], "expected": 20.5}, {"input": [20.5, -79.5], "expected": 20.5}, {"input": [20.5, -79.0], "expected": 20.5}, {"input": [20.5, -78.5], "expected": 20.5}, {"input": [20.5, -78.0], "expected": 20.5}, {"input": [20.5, -77.5], "expected": 20.5}, {"input": [20.5, -77.0], "expected": 20.5}, {"input": [20.5, -76.5], "expected": 20.5}, {"input": [20.5, -76.0], "expected": 20.5}, {"input": [20.5, -75.5], "expected": 20.5}, {"input": [20.5, -75.0], "expected": 20.5}, {"input": [20.5, -74.5], "expected": 20.5}, {"input": [20.5, -74.0], "expected": 20.5}, {"input": [20.5, -73.5], "expected": 20.5}, {"input": [20.5, -73.0], "expected": 20.5}, {"input": [20.5, -72.5], "expected": 20.5}, {"input": [20.5, -72.0], "expected": 20.5}, {"input": [20.5, -71.5], "expected": 20.5}, {"input": [20.5, -71.0], "expected": 20.5}, {"input": [20.5, -70.5], "expected": 20.5}, {"input": [20.5, -70.0], "expected": 20.5}, {"input": [20.5, -69.5], "expected": 20.5}, {"input": [20.5, -69.0], "expected": 20.5}, {"input": [20.5, -68.5], "expected": 20.5}, {"input": [20.5, -68.0], "expected": 20.5}, {"input": [20.5, -67.5], "expected": 20.5}, {"input": [20.5, -67.0], "expected": 20.5}, {"input": [20.5, -66.5], "expected": 20.5}, {"input": [20.5, -66.0], "expected": 20.5}, {"input": [20.5, -65.5], "expected": 20.5}, {"input": [20.5, -65.0], "expected": 20.5}, {"input": [20.5, -64.5], "expected": 20.5}, {"input": [20.5, -64.0], "expected": 20.5}, {"input": [20.5, -63.5], "expected": 20.5}, {"input": [20.5, -63.0], "expected": 20.5}, {"input": [20.5, -62.5], "expected": 20.5}, {"input": [20.5, -62.0], "expected": 20.5}, {"input": [20.5, -61.5], "expected": 20.5}, {"input": [20.5, -61.0], "expected": 20.5}, {"input": [20.5, -60.5], "expected": 20.5}, {"input": [20.5, -60.0], "expected": 20.5}, {"input": [20.5, -59.5], "expected": 20.5}, {"input": [20.5, -59.0], "expected": 20.5}, {"input": [20.5, -58.5], "expected": 20.5}, {"input": [20.5, -58.0], "expected": 20.5}, {"input": [20.5, -57.5], "expected": 20.5}, {"input": [20.5, -57.0], "expected": 20.5}, {"input": [20.5, -56.5], "expected": 20.5}, {"input": [20.5, -56.0], "expected": 20.5}, {"input": [20.5, -55.5], "expected": 20.5}, {"input": [20.5, -55.0], "expected": 20.5}, {"input": [20.5, -54.5], "expected": 20.5}, {"input": [20.5, -54.0], "expected": 20.5}, {"input": [20.5, -53.5], "expected": 20.5}, {"input": [20.5, -53.0], "expected": 20.5}, {"input": [20.5, -52.5], "expected": 20.5}, {"input": [20.5, -52.0], "expected": 20.5}, {"input": [20.5, -51.5], "expected": 20.5}, {"input": [20.5, -51.0], "expected": 20.5}, {"input": [20.5, -50.5], "expected": 20.5}, {"input": [20.5, -50.0], "expected": 20.5}, {"input": [20.5, -49.5], "expected": 20.5}, {"input": [20.5, -49.0], "expected": 20.5}, {"input": [20.5, -48.5], "expected": 20.5}, {"input": [20.5, -48.0], "expected": 20.5}, {"input": [20.5, -47.5], "expected": 20.5}, {"input": [20.5, -47.0], "expected": 20.5}, {"input": [20.5, -46.5], "expected": 20.5}, {"input": [20.5, -46.0], "expected": 20.5}, {"input": [20.5, -45.5], "expected": 20.5}, {"input": [20.5, -45.0], "expected": 20.5}, {"input": [20.5, -44.5], "expected": 20.5}, {"input": [20.5, -44.0], "expected": 20.5}, {"input": [20.5, -43.5], "expected": 20.5}, {"input": [20.5, -43.0], "expected": 20.5}, {"input": [20.5, -42.5], "expected": 20.5}, {"input": [20.5, -42.0], "expected": 20.5}, {"input": [20.5, -41.5], "expected": 20.5}, {"input": [20.5, -41.0], "expected": 20.5}, {"input": [20.5, -40.5], "expected": 20.5}, {"input": [20.5, -40.0], "expected": 20.5}, {"input": [20.5, -39.5], "expected": 20.5}, {"input": [20.5, -39.0], "expected": 20.5}, {"input": [20.5, -38.5], "expected": 20.5}, {"input": [20.5, -38.0], "expected": 20.5}, {"input": [20.5, -37.5], "expected": 20.5}, {"input": [20.5, -37.0], "expected": 20.5}, {"input": [20.5, -36.5], "expected": 20.5}, {"input": [20.5, -36.0], "expected": 20.5}, {"input": [20.5, -35.5], "expected": 20.5}, {"input": [20.5, -35.0], "expected": 20.5}, {"input": [20.5, -34.5], "expected": 20.5}, {"input": [20.5, -34.0], "expected": 20.5}, {"input": [20.5, -33.5], "expected": 20.5}, {"input": [20.5, -33.0], "expected": 20.5}, {"input": [20.5, -32.5], "expected": 20.5}, {"input": [20.5, -32.0], "expected": 20.5}, {"input": [20.5, -31.5], "expected": 20.5}, {"input": [20.5, -31.0], "expected": 20.5}, {"input": [20.5, -30.5], "expected": 20.5}, {"input": [20.5, -30.0], "expected": 20.5}, {"input": [20.5, -29.5], "expected": 20.5}, {"input": [20.5, -29.0], "expected": 20.5}, {"input": [20.5, -28.5], "expected": 20.5}, {"input": [20.5, -28.0], "expected": 20.5}, {"input": [20.5, -27.5], "expected": 20.5}, {"input": [20.5, -27.0], "expected": 20.5}, {"input": [20.5, -26.5], "expected": 20.5}, {"input": [20.5, -26.0], "expected": 20.5}, {"input": [20.5, -25.5], "expected": 20.5}, {"input": [20.5, -25.0], "expected": 20.5}, {"input": [20.5, -24.5], "expected": 20.5}, {"input": [20.5, -24.0], "expected": 20.5}, {"input": [20.5, -23.5], "expected": 20.5}, {"input": [20.5, -23.0], "expected": 20.5}, {"input": [20.5, -22.5], "expected": 20.5}, {"input": [20.5, -22.0], "expected": 20.5}, {"input": [20.5, -21.5], "expected": 20.5}, {"input": [20.5, -21.0], "expected": 20.5}, {"input": [20.5, -20.5], "expected": 20.5}, {"input": [20.5, -20.0], "expected": 20.5}, {"input": [20.5, -19.5], "expected": 20.5}, {"input": [20.5, -19.0], "expected": 20.5}, {"input": [20.5, -18.5], "expected": 20.5}, {"input": [20.5, -18.0], "expected": 20.5}, {"input": [20.5, -17.5], "expected": 20.5}, {"input": [20.5, -17.0], "expected": 20.5}, {"input": [20.5, -16.5], "expected": 20.5}, {"input": [20.5, -16.0], "expected": 20.5}, {"input": [20.5, -15.5], "expected": 20.5}, {"input": [20.5, -15.0], "expected": 20.5}, {"input": [20.5, -14.5], "expected": 20.5}, {"input": [20.5, -14.0], "expected": 20.5}, {"input": [20.5, -13.5], "expected": 20.5}, {"input": [20.5, -13.0], "expected": 20.500000000000004}, {"input": [20.5, -12.5], "expected": 20.500000000000004}, {"input": [20.5, -12.0], "expected": 20.500000000000007}, {"input": [20.5, -11.5], "expected": 20.500000000000014}, {"input": [20.5, -11.0], "expected": 20.50000000000002}, {"input": [20.5, -10.5], "expected": 20.500000000000036}, {"input": [20.5, -10.0], "expected": 20.500000000000057}, {"input": [20.5, -9.5], "expected": 20.500000000000092}, {"input": [20.5, -9.0], "expected": 20.500000000000153}, {"input": [20.5, -8.5], "expected": 20.500000000000256}, {"input": [20.5, -8.0], "expected": 20.50000000000042}, {"input": [20.5, -7.5], "expected": 20.500000000000693}, {"input": [20.5, -7.0], "expected": 20.50000000000114}, {"input": [20.5, -6.5], "expected": 20.50000000000188}, {"input": [20.5, -6.0], "expected": 20.500000000003098}, {"input": [20.5, -5.5], "expected": 20.50000000000511}, {"input": [20.5, -5.0], "expected": 20.500000000008423}, {"input": [20.5, -4.5], "expected": 20.500000000013888}, {"input": [20.5, -4.0], "expected": 20.500000000022897}, {"input": [20.5, -3.5], "expected": 20.50000000003775}, {"input": [20.5, -3.0], "expected": 20.50000000006224}, {"input": [20.5, -2.5], "expected": 20.50000000010262}, {"input": [20.5, -2.0], "expected": 20.50000000016919}, {"input": [20.5, -1.5], "expected": 20.50000000027895}, {"input": [20.5, -1.0], "expected": 20.500000000459906}, {"input": [20.5, -0.5], "expected": 20.500000000758256}, {"input": [20.5, 0.0], "expected": 20.500000001250154}, {"input": [20.5, 0.5], "expected": 20.500000002061153}, {"input": [20.5, 1.0], "expected": 20.500000003398267}, {"input": [20.5, 1.5], "expected": 20.500000005602796}, {"input": [20.5, 2.0], "expected": 20.50000000923745}, {"input": [20.5, 2.5], "expected": 20.50000001522998}, {"input": [20.5, 3.0], "expected": 20.50000002510999}, {"input": [20.5, 3.5], "expected": 20.500000041399375}, {"input": [20.5, 4.0], "expected": 20.500000068256032}, {"input": [20.5, 4.5], "expected": 20.50000011253517}, {"input": [20.5, 5.0], "expected": 20.50000018553912}, {"input": [20.5, 5.5], "expected": 20.500000305902272}, {"input": [20.5, 6.0], "expected": 20.500000504347536}, {"input": [20.5, 6.5], "expected": 20.500000831528375}, {"input": [20.5, 7.0], "expected": 20.500001370958145}, {"input": [20.5, 7.5], "expected": 20.500002260326852}, {"input": [20.5, 8.0], "expected": 20.500003726646227}, {"input": [20.5, 8.5], "expected": 20.500006144193478}, {"input": [20.5, 9.0], "expected": 20.50001013004229}, {"input": [20.5, 9.5], "expected": 20.500016701561318}, {"input": [20.5, 10.0], "expected": 20.500027536070228}, {"input": [20.5, 10.5], "expected": 20.500045398899218}, {"input": [20.5, 11.0], "expected": 20.50007484902863}, {"input": [20.5, 11.5], "expected": 20.500123402189722}, {"input": [20.5, 12.0], "expected": 20.500203447672128}, {"input": [20.5, 12.5], "expected": 20.500335406372894}, {"input": [20.5, 13.0], "expected": 20.50055293147536}, {"input": [20.5, 13.5], "expected": 20.500911466453775}, {"input": [20.5, 14.0], "expected": 20.501502310159754}, {"input": [20.5, 14.5], "expected": 20.502475685137732}, {"input": [20.5, 15.0], "expected": 20.504078443270572}, {"input": [20.5, 15.5], "expected": 20.506715348489116}, {"input": [20.5, 16.0], "expected": 20.511047744848593}, {"input": [20.5, 16.5], "expected": 20.51814992791781}, {"input": [20.5, 17.0], "expected": 20.52975041827262}, {"input": [20.5, 17.5], "expected": 20.548587351573744}, {"input": [20.5, 18.0], "expected": 20.57888973429255}, {"input": [20.5, 18.5], "expected": 20.626928011042974}, {"input": [20.5, 19.0], "expected": 20.701413277982752}, {"input": [20.5, 19.5], "expected": 20.813261687518224}, {"input": [20.5, 20.0], "expected": 20.97407698418011}, {"input": [20.5, 20.5], "expected": 21.193147180559944}, {"input": [20.5, 21.0], "expected": 21.47407698418011}, {"input": [20.5, 21.5], "expected": 21.813261687518224}, {"input": [20.5, 22.0], "expected": 22.201413277982752}, {"input": [20.5, 22.5], "expected": 22.626928011042974}, {"input": [20.5, 23.0], "expected": 23.07888973429255}, {"input": [20.5, 23.5], "expected": 23.548587351573744}, {"input": [20.5, 24.0], "expected": 24.02975041827262}, {"input": [20.5, 24.5], "expected": 24.51814992791781}, {"input": [20.5, 25.0], "expected": 25.011047744848593}, {"input": [20.5, 25.5], "expected": 25.506715348489116}, {"input": [20.5, 26.0], "expected": 26.004078443270572}, {"input": [20.5, 26.5], "expected": 26.502475685137732}, {"input": [20.5, 27.0], "expected": 27.001502310159754}, {"input": [20.5, 27.5], "expected": 27.500911466453775}, {"input": [20.5, 28.0], "expected": 28.00055293147536}, {"input": [20.5, 28.5], "expected": 28.500335406372894}, {"input": [20.5, 29.0], "expected": 29.000203447672128}, {"input": [20.5, 29.5], "expected": 29.500123402189722}, {"input": [20.5, 30.0], "expected": 30.00007484902863}, {"input": [20.5, 30.5], "expected": 30.500045398899218}, {"input": [20.5, 31.0], "expected": 31.000027536070228}, {"input": [20.5, 31.5], "expected": 31.500016701561318}, {"input": [20.5, 32.0], "expected": 32.00001013004229}, {"input": [20.5, 32.5], "expected": 32.50000614419348}, {"input": [20.5, 33.0], "expected": 33.00000372664623}, {"input": [20.5, 33.5], "expected": 33.50000226032685}, {"input": [20.5, 34.0], "expected": 34.000001370958145}, {"input": [20.5, 34.5], "expected": 34.500000831528375}, {"input": [20.5, 35.0], "expected": 35.00000050434753}, {"input": [20.5, 35.5], "expected": 35.500000305902276}, {"input": [20.5, 36.0], "expected": 36.00000018553912}, {"input": [20.5, 36.5], "expected": 36.50000011253517}, {"input": [20.5, 37.0], "expected": 37.00000006825603}, {"input": [20.5, 37.5], "expected": 37.500000041399375}, {"input": [20.5, 38.0], "expected": 38.00000002510999}, {"input": [20.5, 38.5], "expected": 38.50000001522998}, {"input": [20.5, 39.0], "expected": 39.000000009237446}, {"input": [20.5, 39.5], "expected": 39.50000000560279}, {"input": [20.5, 40.0], "expected": 40.00000000339827}, {"input": [20.5, 40.5], "expected": 40.50000000206116}, {"input": [20.5, 41.0], "expected": 41.00000000125015}, {"input": [20.5, 41.5], "expected": 41.500000000758256}, {"input": [20.5, 42.0], "expected": 42.000000000459906}, {"input": [20.5, 42.5], "expected": 42.500000000278945}, {"input": [20.5, 43.0], "expected": 43.00000000016919}, {"input": [20.5, 43.5], "expected": 43.50000000010262}, {"input": [20.5, 44.0], "expected": 44.00000000006224}, {"input": [20.5, 44.5], "expected": 44.50000000003775}, {"input": [20.5, 45.0], "expected": 45.0000000000229}, {"input": [20.5, 45.5], "expected": 45.50000000001389}, {"input": [20.5, 46.0], "expected": 46.00000000000842}, {"input": [20.5, 46.5], "expected": 46.50000000000511}, {"input": [20.5, 47.0], "expected": 47.0000000000031}, {"input": [20.5, 47.5], "expected": 47.50000000000188}, {"input": [20.5, 48.0], "expected": 48.00000000000114}, {"input": [20.5, 48.5], "expected": 48.50000000000069}, {"input": [20.5, 49.0], "expected": 49.00000000000042}, {"input": [20.5, 49.5], "expected": 49.500000000000256}, {"input": [20.5, 50.0], "expected": 50.000000000000156}, {"input": [20.5, 50.5], "expected": 50.50000000000009}, {"input": [20.5, 51.0], "expected": 51.00000000000006}, {"input": [20.5, 51.5], "expected": 51.500000000000036}, {"input": [20.5, 52.0], "expected": 52.00000000000002}, {"input": [20.5, 52.5], "expected": 52.500000000000014}, {"input": [20.5, 53.0], "expected": 53.00000000000001}, {"input": [20.5, 53.5], "expected": 53.50000000000001}, {"input": [20.5, 54.0], "expected": 54.0}, {"input": [20.5, 54.5], "expected": 54.5}, {"input": [20.5, 55.0], "expected": 55.0}, {"input": [20.5, 55.5], "expected": 55.5}, {"input": [20.5, 56.0], "expected": 56.0}, {"input": [20.5, 56.5], "expected": 56.5}, {"input": [20.5, 57.0], "expected": 57.0}, {"input": [20.5, 57.5], "expected": 57.5}, {"input": [20.5, 58.0], "expected": 58.0}, {"input": [20.5, 58.5], "expected": 58.5}, {"input": [20.5, 59.0], "expected": 59.0}, {"input": [20.5, 59.5], "expected": 59.5}, {"input": [20.5, 60.0], "expected": 60.0}, {"input": [20.5, 60.5], "expected": 60.5}, {"input": [20.5, 61.0], "expected": 61.0}, {"input": [20.5, 61.5], "expected": 61.5}, {"input": [20.5, 62.0], "expected": 62.0}, {"input": [20.5, 62.5], "expected": 62.5}, {"input": [20.5, 63.0], "expected": 63.0}, {"input": [20.5, 63.5], "expected": 63.5}, {"input": [20.5, 64.0], "expected": 64.0}, {"input": [20.5, 64.5], "expected": 64.5}, {"input": [20.5, 65.0], "expected": 65.0}, {"input": [20.5, 65.5], "expected": 65.5}, {"input": [20.5, 66.0], "expected": 66.0}, {"input": [20.5, 66.5], "expected": 66.5}, {"input": [20.5, 67.0], "expected": 67.0}, {"input": [20.5, 67.5], "expected": 67.5}, {"input": [20.5, 68.0], "expected": 68.0}, {"input": [20.5, 68.5], "expected": 68.5}, {"input": [20.5, 69.0], "expected": 69.0}, {"input": [20.5, 69.5], "expected": 69.5}, {"input": [20.5, 70.0], "expected": 70.0}, {"input": [20.5, 70.5], "expected": 70.5}, {"input": [20.5, 71.0], "expected": 71.0}, {"input": [20.5, 71.5], "expected": 71.5}, {"input": [20.5, 72.0], "expected": 72.0}, {"input": [20.5, 72.5], "expected": 72.5}, {"input": [20.5, 73.0], "expected": 73.0}, {"input": [20.5, 73.5], "expected": 73.5}, {"input": [20.5, 74.0], "expected": 74.0}, {"input": [20.5, 74.5], "expected": 74.5}, {"input": [20.5, 75.0], "expected": 75.0}, {"input": [20.5, 75.5], "expected": 75.5}, {"input": [20.5, 76.0], "expected": 76.0}, {"input": [20.5, 76.5], "expected": 76.5}, {"input": [20.5, 77.0], "expected": 77.0}, {"input": [20.5, 77.5], "expected": 77.5}, {"input": [20.5, 78.0], "expected": 78.0}, {"input": [20.5, 78.5], "expected": 78.5}, {"input": [20.5, 79.0], "expected": 79.0}, {"input": [20.5, 79.5], "expected": 79.5}, {"input": [20.5, 80.0], "expected": 80.0}, {"input": [20.5, 80.5], "expected": 80.5}, {"input": [20.5, 81.0], "expected": 81.0}, {"input": [20.5, 81.5], "expected": 81.5}, {"input": [20.5, 82.0], "expected": 82.0}, {"input": [20.5, 82.5], "expected": 82.5}, {"input": [20.5, 83.0], "expected": 83.0}, {"input": [20.5, 83.5], "expected": 83.5}, {"input": [20.5, 84.0], "expected": 84.0}, {"input": [20.5, 84.5], "expected": 84.5}, {"input": [20.5, 85.0], "expected": 85.0}, {"input": [20.5, 85.5], "expected": 85.5}, {"input": [20.5, 86.0], "expected": 86.0}, {"input": [20.5, 86.5], "expected": 86.5}, {"input": [20.5, 87.0], "expected": 87.0}, {"input": [20.5, 87.5], "expected": 87.5}, {"input": [20.5, 88.0], "expected": 88.0}, {"input": [20.5, 88.5], "expected": 88.5}, {"input": [20.5, 89.0], "expected": 89.0}, {"input": [20.5, 89.5], "expected": 89.5}, {"input": [20.5, 90.0], "expected": 90.0}, {"input": [20.5, 90.5], "expected": 90.5}, {"input": [20.5, 91.0], "expected": 91.0}, {"input": [20.5, 91.5], "expected": 91.5}, {"input": [20.5, 92.0], "expected": 92.0}, {"input": [20.5, 92.5], "expected": 92.5}, {"input": [20.5, 93.0], "expected": 93.0}, {"input": [20.5, 93.5], "expected": 93.5}, {"input": [20.5, 94.0], "expected": 94.0}, {"input": [20.5, 94.5], "expected": 94.5}, {"input": [20.5, 95.0], "expected": 95.0}, {"input": [20.5, 95.5], "expected": 95.5}, {"input": [20.5, 96.0], "expected": 96.0}, {"input": [20.5, 96.5], "expected": 96.5}, {"input": [20.5, 97.0], "expected": 97.0}, {"input": [20.5, 97.5], "expected": 97.5}, {"input": [20.5, 98.0], "expected": 98.0}, {"input": [20.5, 98.5], "expected": 98.5}, {"input": [20.5, 99.0], "expected": 99.0}, {"input": [20.5, 99.5], "expected": 99.5}, {"input": [21.0, -100.0], "expected": 21.0}, {"input": [21.0, -99.5], "expected": 21.0}, {"input": [21.0, -99.0], "expected": 21.0}, {"input": [21.0, -98.5], "expected": 21.0}, {"input": [21.0, -98.0], "expected": 21.0}, {"input": [21.0, -97.5], "expected": 21.0}, {"input": [21.0, -97.0], "expected": 21.0}, {"input": [21.0, -96.5], "expected": 21.0}, {"input": [21.0, -96.0], "expected": 21.0}, {"input": [21.0, -95.5], "expected": 21.0}, {"input": [21.0, -95.0], "expected": 21.0}, {"input": [21.0, -94.5], "expected": 21.0}, {"input": [21.0, -94.0], "expected": 21.0}, {"input": [21.0, -93.5], "expected": 21.0}, {"input": [21.0, -93.0], "expected": 21.0}, {"input": [21.0, -92.5], "expected": 21.0}, {"input": [21.0, -92.0], "expected": 21.0}, {"input": [21.0, -91.5], "expected": 21.0}, {"input": [21.0, -91.0], "expected": 21.0}, {"input": [21.0, -90.5], "expected": 21.0}, {"input": [21.0, -90.0], "expected": 21.0}, {"input": [21.0, -89.5], "expected": 21.0}, {"input": [21.0, -89.0], "expected": 21.0}, {"input": [21.0, -88.5], "expected": 21.0}, {"input": [21.0, -88.0], "expected": 21.0}, {"input": [21.0, -87.5], "expected": 21.0}, {"input": [21.0, -87.0], "expected": 21.0}, {"input": [21.0, -86.5], "expected": 21.0}, {"input": [21.0, -86.0], "expected": 21.0}, {"input": [21.0, -85.5], "expected": 21.0}, {"input": [21.0, -85.0], "expected": 21.0}, {"input": [21.0, -84.5], "expected": 21.0}, {"input": [21.0, -84.0], "expected": 21.0}, {"input": [21.0, -83.5], "expected": 21.0}, {"input": [21.0, -83.0], "expected": 21.0}, {"input": [21.0, -82.5], "expected": 21.0}, {"input": [21.0, -82.0], "expected": 21.0}, {"input": [21.0, -81.5], "expected": 21.0}, {"input": [21.0, -81.0], "expected": 21.0}, {"input": [21.0, -80.5], "expected": 21.0}, {"input": [21.0, -80.0], "expected": 21.0}, {"input": [21.0, -79.5], "expected": 21.0}, {"input": [21.0, -79.0], "expected": 21.0}, {"input": [21.0, -78.5], "expected": 21.0}, {"input": [21.0, -78.0], "expected": 21.0}, {"input": [21.0, -77.5], "expected": 21.0}, {"input": [21.0, -77.0], "expected": 21.0}, {"input": [21.0, -76.5], "expected": 21.0}, {"input": [21.0, -76.0], "expected": 21.0}, {"input": [21.0, -75.5], "expected": 21.0}, {"input": [21.0, -75.0], "expected": 21.0}, {"input": [21.0, -74.5], "expected": 21.0}, {"input": [21.0, -74.0], "expected": 21.0}, {"input": [21.0, -73.5], "expected": 21.0}, {"input": [21.0, -73.0], "expected": 21.0}, {"input": [21.0, -72.5], "expected": 21.0}, {"input": [21.0, -72.0], "expected": 21.0}, {"input": [21.0, -71.5], "expected": 21.0}, {"input": [21.0, -71.0], "expected": 21.0}, {"input": [21.0, -70.5], "expected": 21.0}, {"input": [21.0, -70.0], "expected": 21.0}, {"input": [21.0, -69.5], "expected": 21.0}, {"input": [21.0, -69.0], "expected": 21.0}, {"input": [21.0, -68.5], "expected": 21.0}, {"input": [21.0, -68.0], "expected": 21.0}, {"input": [21.0, -67.5], "expected": 21.0}, {"input": [21.0, -67.0], "expected": 21.0}, {"input": [21.0, -66.5], "expected": 21.0}, {"input": [21.0, -66.0], "expected": 21.0}, {"input": [21.0, -65.5], "expected": 21.0}, {"input": [21.0, -65.0], "expected": 21.0}, {"input": [21.0, -64.5], "expected": 21.0}, {"input": [21.0, -64.0], "expected": 21.0}, {"input": [21.0, -63.5], "expected": 21.0}, {"input": [21.0, -63.0], "expected": 21.0}, {"input": [21.0, -62.5], "expected": 21.0}, {"input": [21.0, -62.0], "expected": 21.0}, {"input": [21.0, -61.5], "expected": 21.0}, {"input": [21.0, -61.0], "expected": 21.0}, {"input": [21.0, -60.5], "expected": 21.0}, {"input": [21.0, -60.0], "expected": 21.0}, {"input": [21.0, -59.5], "expected": 21.0}, {"input": [21.0, -59.0], "expected": 21.0}, {"input": [21.0, -58.5], "expected": 21.0}, {"input": [21.0, -58.0], "expected": 21.0}, {"input": [21.0, -57.5], "expected": 21.0}, {"input": [21.0, -57.0], "expected": 21.0}, {"input": [21.0, -56.5], "expected": 21.0}, {"input": [21.0, -56.0], "expected": 21.0}, {"input": [21.0, -55.5], "expected": 21.0}, {"input": [21.0, -55.0], "expected": 21.0}, {"input": [21.0, -54.5], "expected": 21.0}, {"input": [21.0, -54.0], "expected": 21.0}, {"input": [21.0, -53.5], "expected": 21.0}, {"input": [21.0, -53.0], "expected": 21.0}, {"input": [21.0, -52.5], "expected": 21.0}, {"input": [21.0, -52.0], "expected": 21.0}, {"input": [21.0, -51.5], "expected": 21.0}, {"input": [21.0, -51.0], "expected": 21.0}, {"input": [21.0, -50.5], "expected": 21.0}, {"input": [21.0, -50.0], "expected": 21.0}, {"input": [21.0, -49.5], "expected": 21.0}, {"input": [21.0, -49.0], "expected": 21.0}, {"input": [21.0, -48.5], "expected": 21.0}, {"input": [21.0, -48.0], "expected": 21.0}, {"input": [21.0, -47.5], "expected": 21.0}, {"input": [21.0, -47.0], "expected": 21.0}, {"input": [21.0, -46.5], "expected": 21.0}, {"input": [21.0, -46.0], "expected": 21.0}, {"input": [21.0, -45.5], "expected": 21.0}, {"input": [21.0, -45.0], "expected": 21.0}, {"input": [21.0, -44.5], "expected": 21.0}, {"input": [21.0, -44.0], "expected": 21.0}, {"input": [21.0, -43.5], "expected": 21.0}, {"input": [21.0, -43.0], "expected": 21.0}, {"input": [21.0, -42.5], "expected": 21.0}, {"input": [21.0, -42.0], "expected": 21.0}, {"input": [21.0, -41.5], "expected": 21.0}, {"input": [21.0, -41.0], "expected": 21.0}, {"input": [21.0, -40.5], "expected": 21.0}, {"input": [21.0, -40.0], "expected": 21.0}, {"input": [21.0, -39.5], "expected": 21.0}, {"input": [21.0, -39.0], "expected": 21.0}, {"input": [21.0, -38.5], "expected": 21.0}, {"input": [21.0, -38.0], "expected": 21.0}, {"input": [21.0, -37.5], "expected": 21.0}, {"input": [21.0, -37.0], "expected": 21.0}, {"input": [21.0, -36.5], "expected": 21.0}, {"input": [21.0, -36.0], "expected": 21.0}, {"input": [21.0, -35.5], "expected": 21.0}, {"input": [21.0, -35.0], "expected": 21.0}, {"input": [21.0, -34.5], "expected": 21.0}, {"input": [21.0, -34.0], "expected": 21.0}, {"input": [21.0, -33.5], "expected": 21.0}, {"input": [21.0, -33.0], "expected": 21.0}, {"input": [21.0, -32.5], "expected": 21.0}, {"input": [21.0, -32.0], "expected": 21.0}, {"input": [21.0, -31.5], "expected": 21.0}, {"input": [21.0, -31.0], "expected": 21.0}, {"input": [21.0, -30.5], "expected": 21.0}, {"input": [21.0, -30.0], "expected": 21.0}, {"input": [21.0, -29.5], "expected": 21.0}, {"input": [21.0, -29.0], "expected": 21.0}, {"input": [21.0, -28.5], "expected": 21.0}, {"input": [21.0, -28.0], "expected": 21.0}, {"input": [21.0, -27.5], "expected": 21.0}, {"input": [21.0, -27.0], "expected": 21.0}, {"input": [21.0, -26.5], "expected": 21.0}, {"input": [21.0, -26.0], "expected": 21.0}, {"input": [21.0, -25.5], "expected": 21.0}, {"input": [21.0, -25.0], "expected": 21.0}, {"input": [21.0, -24.5], "expected": 21.0}, {"input": [21.0, -24.0], "expected": 21.0}, {"input": [21.0, -23.5], "expected": 21.0}, {"input": [21.0, -23.0], "expected": 21.0}, {"input": [21.0, -22.5], "expected": 21.0}, {"input": [21.0, -22.0], "expected": 21.0}, {"input": [21.0, -21.5], "expected": 21.0}, {"input": [21.0, -21.0], "expected": 21.0}, {"input": [21.0, -20.5], "expected": 21.0}, {"input": [21.0, -20.0], "expected": 21.0}, {"input": [21.0, -19.5], "expected": 21.0}, {"input": [21.0, -19.0], "expected": 21.0}, {"input": [21.0, -18.5], "expected": 21.0}, {"input": [21.0, -18.0], "expected": 21.0}, {"input": [21.0, -17.5], "expected": 21.0}, {"input": [21.0, -17.0], "expected": 21.0}, {"input": [21.0, -16.5], "expected": 21.0}, {"input": [21.0, -16.0], "expected": 21.0}, {"input": [21.0, -15.5], "expected": 21.0}, {"input": [21.0, -15.0], "expected": 21.0}, {"input": [21.0, -14.5], "expected": 21.0}, {"input": [21.0, -14.0], "expected": 21.0}, {"input": [21.0, -13.5], "expected": 21.0}, {"input": [21.0, -13.0], "expected": 21.0}, {"input": [21.0, -12.5], "expected": 21.000000000000004}, {"input": [21.0, -12.0], "expected": 21.000000000000004}, {"input": [21.0, -11.5], "expected": 21.000000000000007}, {"input": [21.0, -11.0], "expected": 21.000000000000014}, {"input": [21.0, -10.5], "expected": 21.00000000000002}, {"input": [21.0, -10.0], "expected": 21.000000000000036}, {"input": [21.0, -9.5], "expected": 21.000000000000057}, {"input": [21.0, -9.0], "expected": 21.000000000000092}, {"input": [21.0, -8.5], "expected": 21.000000000000153}, {"input": [21.0, -8.0], "expected": 21.000000000000256}, {"input": [21.0, -7.5], "expected": 21.00000000000042}, {"input": [21.0, -7.0], "expected": 21.000000000000693}, {"input": [21.0, -6.5], "expected": 21.00000000000114}, {"input": [21.0, -6.0], "expected": 21.00000000000188}, {"input": [21.0, -5.5], "expected": 21.000000000003098}, {"input": [21.0, -5.0], "expected": 21.00000000000511}, {"input": [21.0, -4.5], "expected": 21.000000000008423}, {"input": [21.0, -4.0], "expected": 21.000000000013888}, {"input": [21.0, -3.5], "expected": 21.000000000022897}, {"input": [21.0, -3.0], "expected": 21.00000000003775}, {"input": [21.0, -2.5], "expected": 21.00000000006224}, {"input": [21.0, -2.0], "expected": 21.00000000010262}, {"input": [21.0, -1.5], "expected": 21.00000000016919}, {"input": [21.0, -1.0], "expected": 21.00000000027895}, {"input": [21.0, -0.5], "expected": 21.000000000459906}, {"input": [21.0, 0.0], "expected": 21.000000000758256}, {"input": [21.0, 0.5], "expected": 21.000000001250154}, {"input": [21.0, 1.0], "expected": 21.000000002061153}, {"input": [21.0, 1.5], "expected": 21.000000003398267}, {"input": [21.0, 2.0], "expected": 21.000000005602796}, {"input": [21.0, 2.5], "expected": 21.00000000923745}, {"input": [21.0, 3.0], "expected": 21.00000001522998}, {"input": [21.0, 3.5], "expected": 21.00000002510999}, {"input": [21.0, 4.0], "expected": 21.000000041399375}, {"input": [21.0, 4.5], "expected": 21.000000068256032}, {"input": [21.0, 5.0], "expected": 21.00000011253517}, {"input": [21.0, 5.5], "expected": 21.00000018553912}, {"input": [21.0, 6.0], "expected": 21.000000305902272}, {"input": [21.0, 6.5], "expected": 21.000000504347536}, {"input": [21.0, 7.0], "expected": 21.000000831528375}, {"input": [21.0, 7.5], "expected": 21.000001370958145}, {"input": [21.0, 8.0], "expected": 21.000002260326852}, {"input": [21.0, 8.5], "expected": 21.000003726646227}, {"input": [21.0, 9.0], "expected": 21.000006144193478}, {"input": [21.0, 9.5], "expected": 21.00001013004229}, {"input": [21.0, 10.0], "expected": 21.000016701561318}, {"input": [21.0, 10.5], "expected": 21.000027536070228}, {"input": [21.0, 11.0], "expected": 21.000045398899218}, {"input": [21.0, 11.5], "expected": 21.00007484902863}, {"input": [21.0, 12.0], "expected": 21.000123402189722}, {"input": [21.0, 12.5], "expected": 21.000203447672128}, {"input": [21.0, 13.0], "expected": 21.000335406372894}, {"input": [21.0, 13.5], "expected": 21.00055293147536}, {"input": [21.0, 14.0], "expected": 21.000911466453775}, {"input": [21.0, 14.5], "expected": 21.001502310159754}, {"input": [21.0, 15.0], "expected": 21.002475685137732}, {"input": [21.0, 15.5], "expected": 21.004078443270572}, {"input": [21.0, 16.0], "expected": 21.006715348489116}, {"input": [21.0, 16.5], "expected": 21.011047744848593}, {"input": [21.0, 17.0], "expected": 21.01814992791781}, {"input": [21.0, 17.5], "expected": 21.02975041827262}, {"input": [21.0, 18.0], "expected": 21.048587351573744}, {"input": [21.0, 18.5], "expected": 21.07888973429255}, {"input": [21.0, 19.0], "expected": 21.126928011042974}, {"input": [21.0, 19.5], "expected": 21.201413277982752}, {"input": [21.0, 20.0], "expected": 21.313261687518224}, {"input": [21.0, 20.5], "expected": 21.47407698418011}, {"input": [21.0, 21.0], "expected": 21.693147180559944}, {"input": [21.0, 21.5], "expected": 21.97407698418011}, {"input": [21.0, 22.0], "expected": 22.313261687518224}, {"input": [21.0, 22.5], "expected": 22.701413277982752}, {"input": [21.0, 23.0], "expected": 23.126928011042974}, {"input": [21.0, 23.5], "expected": 23.57888973429255}, {"input": [21.0, 24.0], "expected": 24.048587351573744}, {"input": [21.0, 24.5], "expected": 24.52975041827262}, {"input": [21.0, 25.0], "expected": 25.01814992791781}, {"input": [21.0, 25.5], "expected": 25.511047744848593}, {"input": [21.0, 26.0], "expected": 26.006715348489116}, {"input": [21.0, 26.5], "expected": 26.504078443270572}, {"input": [21.0, 27.0], "expected": 27.002475685137732}, {"input": [21.0, 27.5], "expected": 27.501502310159754}, {"input": [21.0, 28.0], "expected": 28.000911466453775}, {"input": [21.0, 28.5], "expected": 28.50055293147536}, {"input": [21.0, 29.0], "expected": 29.000335406372894}, {"input": [21.0, 29.5], "expected": 29.500203447672128}, {"input": [21.0, 30.0], "expected": 30.000123402189722}, {"input": [21.0, 30.5], "expected": 30.50007484902863}, {"input": [21.0, 31.0], "expected": 31.000045398899218}, {"input": [21.0, 31.5], "expected": 31.500027536070228}, {"input": [21.0, 32.0], "expected": 32.00001670156132}, {"input": [21.0, 32.5], "expected": 32.50001013004229}, {"input": [21.0, 33.0], "expected": 33.00000614419348}, {"input": [21.0, 33.5], "expected": 33.50000372664623}, {"input": [21.0, 34.0], "expected": 34.00000226032685}, {"input": [21.0, 34.5], "expected": 34.500001370958145}, {"input": [21.0, 35.0], "expected": 35.000000831528375}, {"input": [21.0, 35.5], "expected": 35.50000050434753}, {"input": [21.0, 36.0], "expected": 36.000000305902276}, {"input": [21.0, 36.5], "expected": 36.50000018553912}, {"input": [21.0, 37.0], "expected": 37.00000011253517}, {"input": [21.0, 37.5], "expected": 37.50000006825603}, {"input": [21.0, 38.0], "expected": 38.000000041399375}, {"input": [21.0, 38.5], "expected": 38.50000002510999}, {"input": [21.0, 39.0], "expected": 39.00000001522998}, {"input": [21.0, 39.5], "expected": 39.500000009237446}, {"input": [21.0, 40.0], "expected": 40.00000000560279}, {"input": [21.0, 40.5], "expected": 40.50000000339827}, {"input": [21.0, 41.0], "expected": 41.00000000206116}, {"input": [21.0, 41.5], "expected": 41.50000000125015}, {"input": [21.0, 42.0], "expected": 42.000000000758256}, {"input": [21.0, 42.5], "expected": 42.500000000459906}, {"input": [21.0, 43.0], "expected": 43.000000000278945}, {"input": [21.0, 43.5], "expected": 43.50000000016919}, {"input": [21.0, 44.0], "expected": 44.00000000010262}, {"input": [21.0, 44.5], "expected": 44.50000000006224}, {"input": [21.0, 45.0], "expected": 45.00000000003775}, {"input": [21.0, 45.5], "expected": 45.5000000000229}, {"input": [21.0, 46.0], "expected": 46.00000000001389}, {"input": [21.0, 46.5], "expected": 46.50000000000842}, {"input": [21.0, 47.0], "expected": 47.00000000000511}, {"input": [21.0, 47.5], "expected": 47.5000000000031}, {"input": [21.0, 48.0], "expected": 48.00000000000188}, {"input": [21.0, 48.5], "expected": 48.50000000000114}, {"input": [21.0, 49.0], "expected": 49.00000000000069}, {"input": [21.0, 49.5], "expected": 49.50000000000042}, {"input": [21.0, 50.0], "expected": 50.000000000000256}, {"input": [21.0, 50.5], "expected": 50.500000000000156}, {"input": [21.0, 51.0], "expected": 51.00000000000009}, {"input": [21.0, 51.5], "expected": 51.50000000000006}, {"input": [21.0, 52.0], "expected": 52.000000000000036}, {"input": [21.0, 52.5], "expected": 52.50000000000002}, {"input": [21.0, 53.0], "expected": 53.000000000000014}, {"input": [21.0, 53.5], "expected": 53.50000000000001}, {"input": [21.0, 54.0], "expected": 54.00000000000001}, {"input": [21.0, 54.5], "expected": 54.5}, {"input": [21.0, 55.0], "expected": 55.0}, {"input": [21.0, 55.5], "expected": 55.5}, {"input": [21.0, 56.0], "expected": 56.0}, {"input": [21.0, 56.5], "expected": 56.5}, {"input": [21.0, 57.0], "expected": 57.0}, {"input": [21.0, 57.5], "expected": 57.5}, {"input": [21.0, 58.0], "expected": 58.0}, {"input": [21.0, 58.5], "expected": 58.5}, {"input": [21.0, 59.0], "expected": 59.0}, {"input": [21.0, 59.5], "expected": 59.5}, {"input": [21.0, 60.0], "expected": 60.0}, {"input": [21.0, 60.5], "expected": 60.5}, {"input": [21.0, 61.0], "expected": 61.0}, {"input": [21.0, 61.5], "expected": 61.5}, {"input": [21.0, 62.0], "expected": 62.0}, {"input": [21.0, 62.5], "expected": 62.5}, {"input": [21.0, 63.0], "expected": 63.0}, {"input": [21.0, 63.5], "expected": 63.5}, {"input": [21.0, 64.0], "expected": 64.0}, {"input": [21.0, 64.5], "expected": 64.5}, {"input": [21.0, 65.0], "expected": 65.0}, {"input": [21.0, 65.5], "expected": 65.5}, {"input": [21.0, 66.0], "expected": 66.0}, {"input": [21.0, 66.5], "expected": 66.5}, {"input": [21.0, 67.0], "expected": 67.0}, {"input": [21.0, 67.5], "expected": 67.5}, {"input": [21.0, 68.0], "expected": 68.0}, {"input": [21.0, 68.5], "expected": 68.5}, {"input": [21.0, 69.0], "expected": 69.0}, {"input": [21.0, 69.5], "expected": 69.5}, {"input": [21.0, 70.0], "expected": 70.0}, {"input": [21.0, 70.5], "expected": 70.5}, {"input": [21.0, 71.0], "expected": 71.0}, {"input": [21.0, 71.5], "expected": 71.5}, {"input": [21.0, 72.0], "expected": 72.0}, {"input": [21.0, 72.5], "expected": 72.5}, {"input": [21.0, 73.0], "expected": 73.0}, {"input": [21.0, 73.5], "expected": 73.5}, {"input": [21.0, 74.0], "expected": 74.0}, {"input": [21.0, 74.5], "expected": 74.5}, {"input": [21.0, 75.0], "expected": 75.0}, {"input": [21.0, 75.5], "expected": 75.5}, {"input": [21.0, 76.0], "expected": 76.0}, {"input": [21.0, 76.5], "expected": 76.5}, {"input": [21.0, 77.0], "expected": 77.0}, {"input": [21.0, 77.5], "expected": 77.5}, {"input": [21.0, 78.0], "expected": 78.0}, {"input": [21.0, 78.5], "expected": 78.5}, {"input": [21.0, 79.0], "expected": 79.0}, {"input": [21.0, 79.5], "expected": 79.5}, {"input": [21.0, 80.0], "expected": 80.0}, {"input": [21.0, 80.5], "expected": 80.5}, {"input": [21.0, 81.0], "expected": 81.0}, {"input": [21.0, 81.5], "expected": 81.5}, {"input": [21.0, 82.0], "expected": 82.0}, {"input": [21.0, 82.5], "expected": 82.5}, {"input": [21.0, 83.0], "expected": 83.0}, {"input": [21.0, 83.5], "expected": 83.5}, {"input": [21.0, 84.0], "expected": 84.0}, {"input": [21.0, 84.5], "expected": 84.5}, {"input": [21.0, 85.0], "expected": 85.0}, {"input": [21.0, 85.5], "expected": 85.5}, {"input": [21.0, 86.0], "expected": 86.0}, {"input": [21.0, 86.5], "expected": 86.5}, {"input": [21.0, 87.0], "expected": 87.0}, {"input": [21.0, 87.5], "expected": 87.5}, {"input": [21.0, 88.0], "expected": 88.0}, {"input": [21.0, 88.5], "expected": 88.5}, {"input": [21.0, 89.0], "expected": 89.0}, {"input": [21.0, 89.5], "expected": 89.5}, {"input": [21.0, 90.0], "expected": 90.0}, {"input": [21.0, 90.5], "expected": 90.5}, {"input": [21.0, 91.0], "expected": 91.0}, {"input": [21.0, 91.5], "expected": 91.5}, {"input": [21.0, 92.0], "expected": 92.0}, {"input": [21.0, 92.5], "expected": 92.5}, {"input": [21.0, 93.0], "expected": 93.0}, {"input": [21.0, 93.5], "expected": 93.5}, {"input": [21.0, 94.0], "expected": 94.0}, {"input": [21.0, 94.5], "expected": 94.5}, {"input": [21.0, 95.0], "expected": 95.0}, {"input": [21.0, 95.5], "expected": 95.5}, {"input": [21.0, 96.0], "expected": 96.0}, {"input": [21.0, 96.5], "expected": 96.5}, {"input": [21.0, 97.0], "expected": 97.0}, {"input": [21.0, 97.5], "expected": 97.5}, {"input": [21.0, 98.0], "expected": 98.0}, {"input": [21.0, 98.5], "expected": 98.5}, {"input": [21.0, 99.0], "expected": 99.0}, {"input": [21.0, 99.5], "expected": 99.5}, {"input": [21.5, -100.0], "expected": 21.5}, {"input": [21.5, -99.5], "expected": 21.5}, {"input": [21.5, -99.0], "expected": 21.5}, {"input": [21.5, -98.5], "expected": 21.5}, {"input": [21.5, -98.0], "expected": 21.5}, {"input": [21.5, -97.5], "expected": 21.5}, {"input": [21.5, -97.0], "expected": 21.5}, {"input": [21.5, -96.5], "expected": 21.5}, {"input": [21.5, -96.0], "expected": 21.5}, {"input": [21.5, -95.5], "expected": 21.5}, {"input": [21.5, -95.0], "expected": 21.5}, {"input": [21.5, -94.5], "expected": 21.5}, {"input": [21.5, -94.0], "expected": 21.5}, {"input": [21.5, -93.5], "expected": 21.5}, {"input": [21.5, -93.0], "expected": 21.5}, {"input": [21.5, -92.5], "expected": 21.5}, {"input": [21.5, -92.0], "expected": 21.5}, {"input": [21.5, -91.5], "expected": 21.5}, {"input": [21.5, -91.0], "expected": 21.5}, {"input": [21.5, -90.5], "expected": 21.5}, {"input": [21.5, -90.0], "expected": 21.5}, {"input": [21.5, -89.5], "expected": 21.5}, {"input": [21.5, -89.0], "expected": 21.5}, {"input": [21.5, -88.5], "expected": 21.5}, {"input": [21.5, -88.0], "expected": 21.5}, {"input": [21.5, -87.5], "expected": 21.5}, {"input": [21.5, -87.0], "expected": 21.5}, {"input": [21.5, -86.5], "expected": 21.5}, {"input": [21.5, -86.0], "expected": 21.5}, {"input": [21.5, -85.5], "expected": 21.5}, {"input": [21.5, -85.0], "expected": 21.5}, {"input": [21.5, -84.5], "expected": 21.5}, {"input": [21.5, -84.0], "expected": 21.5}, {"input": [21.5, -83.5], "expected": 21.5}, {"input": [21.5, -83.0], "expected": 21.5}, {"input": [21.5, -82.5], "expected": 21.5}, {"input": [21.5, -82.0], "expected": 21.5}, {"input": [21.5, -81.5], "expected": 21.5}, {"input": [21.5, -81.0], "expected": 21.5}, {"input": [21.5, -80.5], "expected": 21.5}, {"input": [21.5, -80.0], "expected": 21.5}, {"input": [21.5, -79.5], "expected": 21.5}, {"input": [21.5, -79.0], "expected": 21.5}, {"input": [21.5, -78.5], "expected": 21.5}, {"input": [21.5, -78.0], "expected": 21.5}, {"input": [21.5, -77.5], "expected": 21.5}, {"input": [21.5, -77.0], "expected": 21.5}, {"input": [21.5, -76.5], "expected": 21.5}, {"input": [21.5, -76.0], "expected": 21.5}, {"input": [21.5, -75.5], "expected": 21.5}, {"input": [21.5, -75.0], "expected": 21.5}, {"input": [21.5, -74.5], "expected": 21.5}, {"input": [21.5, -74.0], "expected": 21.5}, {"input": [21.5, -73.5], "expected": 21.5}, {"input": [21.5, -73.0], "expected": 21.5}, {"input": [21.5, -72.5], "expected": 21.5}, {"input": [21.5, -72.0], "expected": 21.5}, {"input": [21.5, -71.5], "expected": 21.5}, {"input": [21.5, -71.0], "expected": 21.5}, {"input": [21.5, -70.5], "expected": 21.5}, {"input": [21.5, -70.0], "expected": 21.5}, {"input": [21.5, -69.5], "expected": 21.5}, {"input": [21.5, -69.0], "expected": 21.5}, {"input": [21.5, -68.5], "expected": 21.5}, {"input": [21.5, -68.0], "expected": 21.5}, {"input": [21.5, -67.5], "expected": 21.5}, {"input": [21.5, -67.0], "expected": 21.5}, {"input": [21.5, -66.5], "expected": 21.5}, {"input": [21.5, -66.0], "expected": 21.5}, {"input": [21.5, -65.5], "expected": 21.5}, {"input": [21.5, -65.0], "expected": 21.5}, {"input": [21.5, -64.5], "expected": 21.5}, {"input": [21.5, -64.0], "expected": 21.5}, {"input": [21.5, -63.5], "expected": 21.5}, {"input": [21.5, -63.0], "expected": 21.5}, {"input": [21.5, -62.5], "expected": 21.5}, {"input": [21.5, -62.0], "expected": 21.5}, {"input": [21.5, -61.5], "expected": 21.5}, {"input": [21.5, -61.0], "expected": 21.5}, {"input": [21.5, -60.5], "expected": 21.5}, {"input": [21.5, -60.0], "expected": 21.5}, {"input": [21.5, -59.5], "expected": 21.5}, {"input": [21.5, -59.0], "expected": 21.5}, {"input": [21.5, -58.5], "expected": 21.5}, {"input": [21.5, -58.0], "expected": 21.5}, {"input": [21.5, -57.5], "expected": 21.5}, {"input": [21.5, -57.0], "expected": 21.5}, {"input": [21.5, -56.5], "expected": 21.5}, {"input": [21.5, -56.0], "expected": 21.5}, {"input": [21.5, -55.5], "expected": 21.5}, {"input": [21.5, -55.0], "expected": 21.5}, {"input": [21.5, -54.5], "expected": 21.5}, {"input": [21.5, -54.0], "expected": 21.5}, {"input": [21.5, -53.5], "expected": 21.5}, {"input": [21.5, -53.0], "expected": 21.5}, {"input": [21.5, -52.5], "expected": 21.5}, {"input": [21.5, -52.0], "expected": 21.5}, {"input": [21.5, -51.5], "expected": 21.5}, {"input": [21.5, -51.0], "expected": 21.5}, {"input": [21.5, -50.5], "expected": 21.5}, {"input": [21.5, -50.0], "expected": 21.5}, {"input": [21.5, -49.5], "expected": 21.5}, {"input": [21.5, -49.0], "expected": 21.5}, {"input": [21.5, -48.5], "expected": 21.5}, {"input": [21.5, -48.0], "expected": 21.5}, {"input": [21.5, -47.5], "expected": 21.5}, {"input": [21.5, -47.0], "expected": 21.5}, {"input": [21.5, -46.5], "expected": 21.5}, {"input": [21.5, -46.0], "expected": 21.5}, {"input": [21.5, -45.5], "expected": 21.5}, {"input": [21.5, -45.0], "expected": 21.5}, {"input": [21.5, -44.5], "expected": 21.5}, {"input": [21.5, -44.0], "expected": 21.5}, {"input": [21.5, -43.5], "expected": 21.5}, {"input": [21.5, -43.0], "expected": 21.5}, {"input": [21.5, -42.5], "expected": 21.5}, {"input": [21.5, -42.0], "expected": 21.5}, {"input": [21.5, -41.5], "expected": 21.5}, {"input": [21.5, -41.0], "expected": 21.5}, {"input": [21.5, -40.5], "expected": 21.5}, {"input": [21.5, -40.0], "expected": 21.5}, {"input": [21.5, -39.5], "expected": 21.5}, {"input": [21.5, -39.0], "expected": 21.5}, {"input": [21.5, -38.5], "expected": 21.5}, {"input": [21.5, -38.0], "expected": 21.5}, {"input": [21.5, -37.5], "expected": 21.5}, {"input": [21.5, -37.0], "expected": 21.5}, {"input": [21.5, -36.5], "expected": 21.5}, {"input": [21.5, -36.0], "expected": 21.5}, {"input": [21.5, -35.5], "expected": 21.5}, {"input": [21.5, -35.0], "expected": 21.5}, {"input": [21.5, -34.5], "expected": 21.5}, {"input": [21.5, -34.0], "expected": 21.5}, {"input": [21.5, -33.5], "expected": 21.5}, {"input": [21.5, -33.0], "expected": 21.5}, {"input": [21.5, -32.5], "expected": 21.5}, {"input": [21.5, -32.0], "expected": 21.5}, {"input": [21.5, -31.5], "expected": 21.5}, {"input": [21.5, -31.0], "expected": 21.5}, {"input": [21.5, -30.5], "expected": 21.5}, {"input": [21.5, -30.0], "expected": 21.5}, {"input": [21.5, -29.5], "expected": 21.5}, {"input": [21.5, -29.0], "expected": 21.5}, {"input": [21.5, -28.5], "expected": 21.5}, {"input": [21.5, -28.0], "expected": 21.5}, {"input": [21.5, -27.5], "expected": 21.5}, {"input": [21.5, -27.0], "expected": 21.5}, {"input": [21.5, -26.5], "expected": 21.5}, {"input": [21.5, -26.0], "expected": 21.5}, {"input": [21.5, -25.5], "expected": 21.5}, {"input": [21.5, -25.0], "expected": 21.5}, {"input": [21.5, -24.5], "expected": 21.5}, {"input": [21.5, -24.0], "expected": 21.5}, {"input": [21.5, -23.5], "expected": 21.5}, {"input": [21.5, -23.0], "expected": 21.5}, {"input": [21.5, -22.5], "expected": 21.5}, {"input": [21.5, -22.0], "expected": 21.5}, {"input": [21.5, -21.5], "expected": 21.5}, {"input": [21.5, -21.0], "expected": 21.5}, {"input": [21.5, -20.5], "expected": 21.5}, {"input": [21.5, -20.0], "expected": 21.5}, {"input": [21.5, -19.5], "expected": 21.5}, {"input": [21.5, -19.0], "expected": 21.5}, {"input": [21.5, -18.5], "expected": 21.5}, {"input": [21.5, -18.0], "expected": 21.5}, {"input": [21.5, -17.5], "expected": 21.5}, {"input": [21.5, -17.0], "expected": 21.5}, {"input": [21.5, -16.5], "expected": 21.5}, {"input": [21.5, -16.0], "expected": 21.5}, {"input": [21.5, -15.5], "expected": 21.5}, {"input": [21.5, -15.0], "expected": 21.5}, {"input": [21.5, -14.5], "expected": 21.5}, {"input": [21.5, -14.0], "expected": 21.5}, {"input": [21.5, -13.5], "expected": 21.5}, {"input": [21.5, -13.0], "expected": 21.5}, {"input": [21.5, -12.5], "expected": 21.5}, {"input": [21.5, -12.0], "expected": 21.500000000000004}, {"input": [21.5, -11.5], "expected": 21.500000000000004}, {"input": [21.5, -11.0], "expected": 21.500000000000007}, {"input": [21.5, -10.5], "expected": 21.500000000000014}, {"input": [21.5, -10.0], "expected": 21.50000000000002}, {"input": [21.5, -9.5], "expected": 21.500000000000036}, {"input": [21.5, -9.0], "expected": 21.500000000000057}, {"input": [21.5, -8.5], "expected": 21.500000000000092}, {"input": [21.5, -8.0], "expected": 21.500000000000153}, {"input": [21.5, -7.5], "expected": 21.500000000000256}, {"input": [21.5, -7.0], "expected": 21.50000000000042}, {"input": [21.5, -6.5], "expected": 21.500000000000693}, {"input": [21.5, -6.0], "expected": 21.50000000000114}, {"input": [21.5, -5.5], "expected": 21.50000000000188}, {"input": [21.5, -5.0], "expected": 21.500000000003098}, {"input": [21.5, -4.5], "expected": 21.50000000000511}, {"input": [21.5, -4.0], "expected": 21.500000000008423}, {"input": [21.5, -3.5], "expected": 21.500000000013888}, {"input": [21.5, -3.0], "expected": 21.500000000022897}, {"input": [21.5, -2.5], "expected": 21.50000000003775}, {"input": [21.5, -2.0], "expected": 21.50000000006224}, {"input": [21.5, -1.5], "expected": 21.50000000010262}, {"input": [21.5, -1.0], "expected": 21.50000000016919}, {"input": [21.5, -0.5], "expected": 21.50000000027895}, {"input": [21.5, 0.0], "expected": 21.500000000459906}, {"input": [21.5, 0.5], "expected": 21.500000000758256}, {"input": [21.5, 1.0], "expected": 21.500000001250154}, {"input": [21.5, 1.5], "expected": 21.500000002061153}, {"input": [21.5, 2.0], "expected": 21.500000003398267}, {"input": [21.5, 2.5], "expected": 21.500000005602796}, {"input": [21.5, 3.0], "expected": 21.50000000923745}, {"input": [21.5, 3.5], "expected": 21.50000001522998}, {"input": [21.5, 4.0], "expected": 21.50000002510999}, {"input": [21.5, 4.5], "expected": 21.500000041399375}, {"input": [21.5, 5.0], "expected": 21.500000068256032}, {"input": [21.5, 5.5], "expected": 21.50000011253517}, {"input": [21.5, 6.0], "expected": 21.50000018553912}, {"input": [21.5, 6.5], "expected": 21.500000305902272}, {"input": [21.5, 7.0], "expected": 21.500000504347536}, {"input": [21.5, 7.5], "expected": 21.500000831528375}, {"input": [21.5, 8.0], "expected": 21.500001370958145}, {"input": [21.5, 8.5], "expected": 21.500002260326852}, {"input": [21.5, 9.0], "expected": 21.500003726646227}, {"input": [21.5, 9.5], "expected": 21.500006144193478}, {"input": [21.5, 10.0], "expected": 21.50001013004229}, {"input": [21.5, 10.5], "expected": 21.500016701561318}, {"input": [21.5, 11.0], "expected": 21.500027536070228}, {"input": [21.5, 11.5], "expected": 21.500045398899218}, {"input": [21.5, 12.0], "expected": 21.50007484902863}, {"input": [21.5, 12.5], "expected": 21.500123402189722}, {"input": [21.5, 13.0], "expected": 21.500203447672128}, {"input": [21.5, 13.5], "expected": 21.500335406372894}, {"input": [21.5, 14.0], "expected": 21.50055293147536}, {"input": [21.5, 14.5], "expected": 21.500911466453775}, {"input": [21.5, 15.0], "expected": 21.501502310159754}, {"input": [21.5, 15.5], "expected": 21.502475685137732}, {"input": [21.5, 16.0], "expected": 21.504078443270572}, {"input": [21.5, 16.5], "expected": 21.506715348489116}, {"input": [21.5, 17.0], "expected": 21.511047744848593}, {"input": [21.5, 17.5], "expected": 21.51814992791781}, {"input": [21.5, 18.0], "expected": 21.52975041827262}, {"input": [21.5, 18.5], "expected": 21.548587351573744}, {"input": [21.5, 19.0], "expected": 21.57888973429255}, {"input": [21.5, 19.5], "expected": 21.626928011042974}, {"input": [21.5, 20.0], "expected": 21.701413277982752}, {"input": [21.5, 20.5], "expected": 21.813261687518224}, {"input": [21.5, 21.0], "expected": 21.97407698418011}, {"input": [21.5, 21.5], "expected": 22.193147180559944}, {"input": [21.5, 22.0], "expected": 22.47407698418011}, {"input": [21.5, 22.5], "expected": 22.813261687518224}, {"input": [21.5, 23.0], "expected": 23.201413277982752}, {"input": [21.5, 23.5], "expected": 23.626928011042974}, {"input": [21.5, 24.0], "expected": 24.07888973429255}, {"input": [21.5, 24.5], "expected": 24.548587351573744}, {"input": [21.5, 25.0], "expected": 25.02975041827262}, {"input": [21.5, 25.5], "expected": 25.51814992791781}, {"input": [21.5, 26.0], "expected": 26.011047744848593}, {"input": [21.5, 26.5], "expected": 26.506715348489116}, {"input": [21.5, 27.0], "expected": 27.004078443270572}, {"input": [21.5, 27.5], "expected": 27.502475685137732}, {"input": [21.5, 28.0], "expected": 28.001502310159754}, {"input": [21.5, 28.5], "expected": 28.500911466453775}, {"input": [21.5, 29.0], "expected": 29.00055293147536}, {"input": [21.5, 29.5], "expected": 29.500335406372894}, {"input": [21.5, 30.0], "expected": 30.000203447672128}, {"input": [21.5, 30.5], "expected": 30.500123402189722}, {"input": [21.5, 31.0], "expected": 31.00007484902863}, {"input": [21.5, 31.5], "expected": 31.500045398899218}, {"input": [21.5, 32.0], "expected": 32.00002753607023}, {"input": [21.5, 32.5], "expected": 32.50001670156132}, {"input": [21.5, 33.0], "expected": 33.00001013004229}, {"input": [21.5, 33.5], "expected": 33.50000614419348}, {"input": [21.5, 34.0], "expected": 34.00000372664623}, {"input": [21.5, 34.5], "expected": 34.50000226032685}, {"input": [21.5, 35.0], "expected": 35.000001370958145}, {"input": [21.5, 35.5], "expected": 35.500000831528375}, {"input": [21.5, 36.0], "expected": 36.00000050434753}, {"input": [21.5, 36.5], "expected": 36.500000305902276}, {"input": [21.5, 37.0], "expected": 37.00000018553912}, {"input": [21.5, 37.5], "expected": 37.50000011253517}, {"input": [21.5, 38.0], "expected": 38.00000006825603}, {"input": [21.5, 38.5], "expected": 38.500000041399375}, {"input": [21.5, 39.0], "expected": 39.00000002510999}, {"input": [21.5, 39.5], "expected": 39.50000001522998}, {"input": [21.5, 40.0], "expected": 40.000000009237446}, {"input": [21.5, 40.5], "expected": 40.50000000560279}, {"input": [21.5, 41.0], "expected": 41.00000000339827}, {"input": [21.5, 41.5], "expected": 41.50000000206116}, {"input": [21.5, 42.0], "expected": 42.00000000125015}, {"input": [21.5, 42.5], "expected": 42.500000000758256}, {"input": [21.5, 43.0], "expected": 43.000000000459906}, {"input": [21.5, 43.5], "expected": 43.500000000278945}, {"input": [21.5, 44.0], "expected": 44.00000000016919}, {"input": [21.5, 44.5], "expected": 44.50000000010262}, {"input": [21.5, 45.0], "expected": 45.00000000006224}, {"input": [21.5, 45.5], "expected": 45.50000000003775}, {"input": [21.5, 46.0], "expected": 46.0000000000229}, {"input": [21.5, 46.5], "expected": 46.50000000001389}, {"input": [21.5, 47.0], "expected": 47.00000000000842}, {"input": [21.5, 47.5], "expected": 47.50000000000511}, {"input": [21.5, 48.0], "expected": 48.0000000000031}, {"input": [21.5, 48.5], "expected": 48.50000000000188}, {"input": [21.5, 49.0], "expected": 49.00000000000114}, {"input": [21.5, 49.5], "expected": 49.50000000000069}, {"input": [21.5, 50.0], "expected": 50.00000000000042}, {"input": [21.5, 50.5], "expected": 50.500000000000256}, {"input": [21.5, 51.0], "expected": 51.000000000000156}, {"input": [21.5, 51.5], "expected": 51.50000000000009}, {"input": [21.5, 52.0], "expected": 52.00000000000006}, {"input": [21.5, 52.5], "expected": 52.500000000000036}, {"input": [21.5, 53.0], "expected": 53.00000000000002}, {"input": [21.5, 53.5], "expected": 53.500000000000014}, {"input": [21.5, 54.0], "expected": 54.00000000000001}, {"input": [21.5, 54.5], "expected": 54.50000000000001}, {"input": [21.5, 55.0], "expected": 55.0}, {"input": [21.5, 55.5], "expected": 55.5}, {"input": [21.5, 56.0], "expected": 56.0}, {"input": [21.5, 56.5], "expected": 56.5}, {"input": [21.5, 57.0], "expected": 57.0}, {"input": [21.5, 57.5], "expected": 57.5}, {"input": [21.5, 58.0], "expected": 58.0}, {"input": [21.5, 58.5], "expected": 58.5}, {"input": [21.5, 59.0], "expected": 59.0}, {"input": [21.5, 59.5], "expected": 59.5}, {"input": [21.5, 60.0], "expected": 60.0}, {"input": [21.5, 60.5], "expected": 60.5}, {"input": [21.5, 61.0], "expected": 61.0}, {"input": [21.5, 61.5], "expected": 61.5}, {"input": [21.5, 62.0], "expected": 62.0}, {"input": [21.5, 62.5], "expected": 62.5}, {"input": [21.5, 63.0], "expected": 63.0}, {"input": [21.5, 63.5], "expected": 63.5}, {"input": [21.5, 64.0], "expected": 64.0}, {"input": [21.5, 64.5], "expected": 64.5}, {"input": [21.5, 65.0], "expected": 65.0}, {"input": [21.5, 65.5], "expected": 65.5}, {"input": [21.5, 66.0], "expected": 66.0}, {"input": [21.5, 66.5], "expected": 66.5}, {"input": [21.5, 67.0], "expected": 67.0}, {"input": [21.5, 67.5], "expected": 67.5}, {"input": [21.5, 68.0], "expected": 68.0}, {"input": [21.5, 68.5], "expected": 68.5}, {"input": [21.5, 69.0], "expected": 69.0}, {"input": [21.5, 69.5], "expected": 69.5}, {"input": [21.5, 70.0], "expected": 70.0}, {"input": [21.5, 70.5], "expected": 70.5}, {"input": [21.5, 71.0], "expected": 71.0}, {"input": [21.5, 71.5], "expected": 71.5}, {"input": [21.5, 72.0], "expected": 72.0}, {"input": [21.5, 72.5], "expected": 72.5}, {"input": [21.5, 73.0], "expected": 73.0}, {"input": [21.5, 73.5], "expected": 73.5}, {"input": [21.5, 74.0], "expected": 74.0}, {"input": [21.5, 74.5], "expected": 74.5}, {"input": [21.5, 75.0], "expected": 75.0}, {"input": [21.5, 75.5], "expected": 75.5}, {"input": [21.5, 76.0], "expected": 76.0}, {"input": [21.5, 76.5], "expected": 76.5}, {"input": [21.5, 77.0], "expected": 77.0}, {"input": [21.5, 77.5], "expected": 77.5}, {"input": [21.5, 78.0], "expected": 78.0}, {"input": [21.5, 78.5], "expected": 78.5}, {"input": [21.5, 79.0], "expected": 79.0}, {"input": [21.5, 79.5], "expected": 79.5}, {"input": [21.5, 80.0], "expected": 80.0}, {"input": [21.5, 80.5], "expected": 80.5}, {"input": [21.5, 81.0], "expected": 81.0}, {"input": [21.5, 81.5], "expected": 81.5}, {"input": [21.5, 82.0], "expected": 82.0}, {"input": [21.5, 82.5], "expected": 82.5}, {"input": [21.5, 83.0], "expected": 83.0}, {"input": [21.5, 83.5], "expected": 83.5}, {"input": [21.5, 84.0], "expected": 84.0}, {"input": [21.5, 84.5], "expected": 84.5}, {"input": [21.5, 85.0], "expected": 85.0}, {"input": [21.5, 85.5], "expected": 85.5}, {"input": [21.5, 86.0], "expected": 86.0}, {"input": [21.5, 86.5], "expected": 86.5}, {"input": [21.5, 87.0], "expected": 87.0}, {"input": [21.5, 87.5], "expected": 87.5}, {"input": [21.5, 88.0], "expected": 88.0}, {"input": [21.5, 88.5], "expected": 88.5}, {"input": [21.5, 89.0], "expected": 89.0}, {"input": [21.5, 89.5], "expected": 89.5}, {"input": [21.5, 90.0], "expected": 90.0}, {"input": [21.5, 90.5], "expected": 90.5}, {"input": [21.5, 91.0], "expected": 91.0}, {"input": [21.5, 91.5], "expected": 91.5}, {"input": [21.5, 92.0], "expected": 92.0}, {"input": [21.5, 92.5], "expected": 92.5}, {"input": [21.5, 93.0], "expected": 93.0}, {"input": [21.5, 93.5], "expected": 93.5}, {"input": [21.5, 94.0], "expected": 94.0}, {"input": [21.5, 94.5], "expected": 94.5}, {"input": [21.5, 95.0], "expected": 95.0}, {"input": [21.5, 95.5], "expected": 95.5}, {"input": [21.5, 96.0], "expected": 96.0}, {"input": [21.5, 96.5], "expected": 96.5}, {"input": [21.5, 97.0], "expected": 97.0}, {"input": [21.5, 97.5], "expected": 97.5}, {"input": [21.5, 98.0], "expected": 98.0}, {"input": [21.5, 98.5], "expected": 98.5}, {"input": [21.5, 99.0], "expected": 99.0}, {"input": [21.5, 99.5], "expected": 99.5}, {"input": [22.0, -100.0], "expected": 22.0}, {"input": [22.0, -99.5], "expected": 22.0}, {"input": [22.0, -99.0], "expected": 22.0}, {"input": [22.0, -98.5], "expected": 22.0}, {"input": [22.0, -98.0], "expected": 22.0}, {"input": [22.0, -97.5], "expected": 22.0}, {"input": [22.0, -97.0], "expected": 22.0}, {"input": [22.0, -96.5], "expected": 22.0}, {"input": [22.0, -96.0], "expected": 22.0}, {"input": [22.0, -95.5], "expected": 22.0}, {"input": [22.0, -95.0], "expected": 22.0}, {"input": [22.0, -94.5], "expected": 22.0}, {"input": [22.0, -94.0], "expected": 22.0}, {"input": [22.0, -93.5], "expected": 22.0}, {"input": [22.0, -93.0], "expected": 22.0}, {"input": [22.0, -92.5], "expected": 22.0}, {"input": [22.0, -92.0], "expected": 22.0}, {"input": [22.0, -91.5], "expected": 22.0}, {"input": [22.0, -91.0], "expected": 22.0}, {"input": [22.0, -90.5], "expected": 22.0}, {"input": [22.0, -90.0], "expected": 22.0}, {"input": [22.0, -89.5], "expected": 22.0}, {"input": [22.0, -89.0], "expected": 22.0}, {"input": [22.0, -88.5], "expected": 22.0}, {"input": [22.0, -88.0], "expected": 22.0}, {"input": [22.0, -87.5], "expected": 22.0}, {"input": [22.0, -87.0], "expected": 22.0}, {"input": [22.0, -86.5], "expected": 22.0}, {"input": [22.0, -86.0], "expected": 22.0}, {"input": [22.0, -85.5], "expected": 22.0}, {"input": [22.0, -85.0], "expected": 22.0}, {"input": [22.0, -84.5], "expected": 22.0}, {"input": [22.0, -84.0], "expected": 22.0}, {"input": [22.0, -83.5], "expected": 22.0}, {"input": [22.0, -83.0], "expected": 22.0}, {"input": [22.0, -82.5], "expected": 22.0}, {"input": [22.0, -82.0], "expected": 22.0}, {"input": [22.0, -81.5], "expected": 22.0}, {"input": [22.0, -81.0], "expected": 22.0}, {"input": [22.0, -80.5], "expected": 22.0}, {"input": [22.0, -80.0], "expected": 22.0}, {"input": [22.0, -79.5], "expected": 22.0}, {"input": [22.0, -79.0], "expected": 22.0}, {"input": [22.0, -78.5], "expected": 22.0}, {"input": [22.0, -78.0], "expected": 22.0}, {"input": [22.0, -77.5], "expected": 22.0}, {"input": [22.0, -77.0], "expected": 22.0}, {"input": [22.0, -76.5], "expected": 22.0}, {"input": [22.0, -76.0], "expected": 22.0}, {"input": [22.0, -75.5], "expected": 22.0}, {"input": [22.0, -75.0], "expected": 22.0}, {"input": [22.0, -74.5], "expected": 22.0}, {"input": [22.0, -74.0], "expected": 22.0}, {"input": [22.0, -73.5], "expected": 22.0}, {"input": [22.0, -73.0], "expected": 22.0}, {"input": [22.0, -72.5], "expected": 22.0}, {"input": [22.0, -72.0], "expected": 22.0}, {"input": [22.0, -71.5], "expected": 22.0}, {"input": [22.0, -71.0], "expected": 22.0}, {"input": [22.0, -70.5], "expected": 22.0}, {"input": [22.0, -70.0], "expected": 22.0}, {"input": [22.0, -69.5], "expected": 22.0}, {"input": [22.0, -69.0], "expected": 22.0}, {"input": [22.0, -68.5], "expected": 22.0}, {"input": [22.0, -68.0], "expected": 22.0}, {"input": [22.0, -67.5], "expected": 22.0}, {"input": [22.0, -67.0], "expected": 22.0}, {"input": [22.0, -66.5], "expected": 22.0}, {"input": [22.0, -66.0], "expected": 22.0}, {"input": [22.0, -65.5], "expected": 22.0}, {"input": [22.0, -65.0], "expected": 22.0}, {"input": [22.0, -64.5], "expected": 22.0}, {"input": [22.0, -64.0], "expected": 22.0}, {"input": [22.0, -63.5], "expected": 22.0}, {"input": [22.0, -63.0], "expected": 22.0}, {"input": [22.0, -62.5], "expected": 22.0}, {"input": [22.0, -62.0], "expected": 22.0}, {"input": [22.0, -61.5], "expected": 22.0}, {"input": [22.0, -61.0], "expected": 22.0}, {"input": [22.0, -60.5], "expected": 22.0}, {"input": [22.0, -60.0], "expected": 22.0}, {"input": [22.0, -59.5], "expected": 22.0}, {"input": [22.0, -59.0], "expected": 22.0}, {"input": [22.0, -58.5], "expected": 22.0}, {"input": [22.0, -58.0], "expected": 22.0}, {"input": [22.0, -57.5], "expected": 22.0}, {"input": [22.0, -57.0], "expected": 22.0}, {"input": [22.0, -56.5], "expected": 22.0}, {"input": [22.0, -56.0], "expected": 22.0}, {"input": [22.0, -55.5], "expected": 22.0}, {"input": [22.0, -55.0], "expected": 22.0}, {"input": [22.0, -54.5], "expected": 22.0}, {"input": [22.0, -54.0], "expected": 22.0}, {"input": [22.0, -53.5], "expected": 22.0}, {"input": [22.0, -53.0], "expected": 22.0}, {"input": [22.0, -52.5], "expected": 22.0}, {"input": [22.0, -52.0], "expected": 22.0}, {"input": [22.0, -51.5], "expected": 22.0}, {"input": [22.0, -51.0], "expected": 22.0}, {"input": [22.0, -50.5], "expected": 22.0}, {"input": [22.0, -50.0], "expected": 22.0}, {"input": [22.0, -49.5], "expected": 22.0}, {"input": [22.0, -49.0], "expected": 22.0}, {"input": [22.0, -48.5], "expected": 22.0}, {"input": [22.0, -48.0], "expected": 22.0}, {"input": [22.0, -47.5], "expected": 22.0}, {"input": [22.0, -47.0], "expected": 22.0}, {"input": [22.0, -46.5], "expected": 22.0}, {"input": [22.0, -46.0], "expected": 22.0}, {"input": [22.0, -45.5], "expected": 22.0}, {"input": [22.0, -45.0], "expected": 22.0}, {"input": [22.0, -44.5], "expected": 22.0}, {"input": [22.0, -44.0], "expected": 22.0}, {"input": [22.0, -43.5], "expected": 22.0}, {"input": [22.0, -43.0], "expected": 22.0}, {"input": [22.0, -42.5], "expected": 22.0}, {"input": [22.0, -42.0], "expected": 22.0}, {"input": [22.0, -41.5], "expected": 22.0}, {"input": [22.0, -41.0], "expected": 22.0}, {"input": [22.0, -40.5], "expected": 22.0}, {"input": [22.0, -40.0], "expected": 22.0}, {"input": [22.0, -39.5], "expected": 22.0}, {"input": [22.0, -39.0], "expected": 22.0}, {"input": [22.0, -38.5], "expected": 22.0}, {"input": [22.0, -38.0], "expected": 22.0}, {"input": [22.0, -37.5], "expected": 22.0}, {"input": [22.0, -37.0], "expected": 22.0}, {"input": [22.0, -36.5], "expected": 22.0}, {"input": [22.0, -36.0], "expected": 22.0}, {"input": [22.0, -35.5], "expected": 22.0}, {"input": [22.0, -35.0], "expected": 22.0}, {"input": [22.0, -34.5], "expected": 22.0}, {"input": [22.0, -34.0], "expected": 22.0}, {"input": [22.0, -33.5], "expected": 22.0}, {"input": [22.0, -33.0], "expected": 22.0}, {"input": [22.0, -32.5], "expected": 22.0}, {"input": [22.0, -32.0], "expected": 22.0}, {"input": [22.0, -31.5], "expected": 22.0}, {"input": [22.0, -31.0], "expected": 22.0}, {"input": [22.0, -30.5], "expected": 22.0}, {"input": [22.0, -30.0], "expected": 22.0}, {"input": [22.0, -29.5], "expected": 22.0}, {"input": [22.0, -29.0], "expected": 22.0}, {"input": [22.0, -28.5], "expected": 22.0}, {"input": [22.0, -28.0], "expected": 22.0}, {"input": [22.0, -27.5], "expected": 22.0}, {"input": [22.0, -27.0], "expected": 22.0}, {"input": [22.0, -26.5], "expected": 22.0}, {"input": [22.0, -26.0], "expected": 22.0}, {"input": [22.0, -25.5], "expected": 22.0}, {"input": [22.0, -25.0], "expected": 22.0}, {"input": [22.0, -24.5], "expected": 22.0}, {"input": [22.0, -24.0], "expected": 22.0}, {"input": [22.0, -23.5], "expected": 22.0}, {"input": [22.0, -23.0], "expected": 22.0}, {"input": [22.0, -22.5], "expected": 22.0}, {"input": [22.0, -22.0], "expected": 22.0}, {"input": [22.0, -21.5], "expected": 22.0}, {"input": [22.0, -21.0], "expected": 22.0}, {"input": [22.0, -20.5], "expected": 22.0}, {"input": [22.0, -20.0], "expected": 22.0}, {"input": [22.0, -19.5], "expected": 22.0}, {"input": [22.0, -19.0], "expected": 22.0}, {"input": [22.0, -18.5], "expected": 22.0}, {"input": [22.0, -18.0], "expected": 22.0}, {"input": [22.0, -17.5], "expected": 22.0}, {"input": [22.0, -17.0], "expected": 22.0}, {"input": [22.0, -16.5], "expected": 22.0}, {"input": [22.0, -16.0], "expected": 22.0}, {"input": [22.0, -15.5], "expected": 22.0}, {"input": [22.0, -15.0], "expected": 22.0}, {"input": [22.0, -14.5], "expected": 22.0}, {"input": [22.0, -14.0], "expected": 22.0}, {"input": [22.0, -13.5], "expected": 22.0}, {"input": [22.0, -13.0], "expected": 22.0}, {"input": [22.0, -12.5], "expected": 22.0}, {"input": [22.0, -12.0], "expected": 22.0}, {"input": [22.0, -11.5], "expected": 22.000000000000004}, {"input": [22.0, -11.0], "expected": 22.000000000000004}, {"input": [22.0, -10.5], "expected": 22.000000000000007}, {"input": [22.0, -10.0], "expected": 22.000000000000014}, {"input": [22.0, -9.5], "expected": 22.00000000000002}, {"input": [22.0, -9.0], "expected": 22.000000000000036}, {"input": [22.0, -8.5], "expected": 22.000000000000057}, {"input": [22.0, -8.0], "expected": 22.000000000000092}, {"input": [22.0, -7.5], "expected": 22.000000000000153}, {"input": [22.0, -7.0], "expected": 22.000000000000256}, {"input": [22.0, -6.5], "expected": 22.00000000000042}, {"input": [22.0, -6.0], "expected": 22.000000000000693}, {"input": [22.0, -5.5], "expected": 22.00000000000114}, {"input": [22.0, -5.0], "expected": 22.00000000000188}, {"input": [22.0, -4.5], "expected": 22.000000000003098}, {"input": [22.0, -4.0], "expected": 22.00000000000511}, {"input": [22.0, -3.5], "expected": 22.000000000008423}, {"input": [22.0, -3.0], "expected": 22.000000000013888}, {"input": [22.0, -2.5], "expected": 22.000000000022897}, {"input": [22.0, -2.0], "expected": 22.00000000003775}, {"input": [22.0, -1.5], "expected": 22.00000000006224}, {"input": [22.0, -1.0], "expected": 22.00000000010262}, {"input": [22.0, -0.5], "expected": 22.00000000016919}, {"input": [22.0, 0.0], "expected": 22.00000000027895}, {"input": [22.0, 0.5], "expected": 22.000000000459906}, {"input": [22.0, 1.0], "expected": 22.000000000758256}, {"input": [22.0, 1.5], "expected": 22.000000001250154}, {"input": [22.0, 2.0], "expected": 22.000000002061153}, {"input": [22.0, 2.5], "expected": 22.000000003398267}, {"input": [22.0, 3.0], "expected": 22.000000005602796}, {"input": [22.0, 3.5], "expected": 22.00000000923745}, {"input": [22.0, 4.0], "expected": 22.00000001522998}, {"input": [22.0, 4.5], "expected": 22.00000002510999}, {"input": [22.0, 5.0], "expected": 22.000000041399375}, {"input": [22.0, 5.5], "expected": 22.000000068256032}, {"input": [22.0, 6.0], "expected": 22.00000011253517}, {"input": [22.0, 6.5], "expected": 22.00000018553912}, {"input": [22.0, 7.0], "expected": 22.000000305902272}, {"input": [22.0, 7.5], "expected": 22.000000504347536}, {"input": [22.0, 8.0], "expected": 22.000000831528375}, {"input": [22.0, 8.5], "expected": 22.000001370958145}, {"input": [22.0, 9.0], "expected": 22.000002260326852}, {"input": [22.0, 9.5], "expected": 22.000003726646227}, {"input": [22.0, 10.0], "expected": 22.000006144193478}, {"input": [22.0, 10.5], "expected": 22.00001013004229}, {"input": [22.0, 11.0], "expected": 22.000016701561318}, {"input": [22.0, 11.5], "expected": 22.000027536070228}, {"input": [22.0, 12.0], "expected": 22.000045398899218}, {"input": [22.0, 12.5], "expected": 22.00007484902863}, {"input": [22.0, 13.0], "expected": 22.000123402189722}, {"input": [22.0, 13.5], "expected": 22.000203447672128}, {"input": [22.0, 14.0], "expected": 22.000335406372894}, {"input": [22.0, 14.5], "expected": 22.00055293147536}, {"input": [22.0, 15.0], "expected": 22.000911466453775}, {"input": [22.0, 15.5], "expected": 22.001502310159754}, {"input": [22.0, 16.0], "expected": 22.002475685137732}, {"input": [22.0, 16.5], "expected": 22.004078443270572}, {"input": [22.0, 17.0], "expected": 22.006715348489116}, {"input": [22.0, 17.5], "expected": 22.011047744848593}, {"input": [22.0, 18.0], "expected": 22.01814992791781}, {"input": [22.0, 18.5], "expected": 22.02975041827262}, {"input": [22.0, 19.0], "expected": 22.048587351573744}, {"input": [22.0, 19.5], "expected": 22.07888973429255}, {"input": [22.0, 20.0], "expected": 22.126928011042974}, {"input": [22.0, 20.5], "expected": 22.201413277982752}, {"input": [22.0, 21.0], "expected": 22.313261687518224}, {"input": [22.0, 21.5], "expected": 22.47407698418011}, {"input": [22.0, 22.0], "expected": 22.693147180559944}, {"input": [22.0, 22.5], "expected": 22.97407698418011}, {"input": [22.0, 23.0], "expected": 23.313261687518224}, {"input": [22.0, 23.5], "expected": 23.701413277982752}, {"input": [22.0, 24.0], "expected": 24.126928011042974}, {"input": [22.0, 24.5], "expected": 24.57888973429255}, {"input": [22.0, 25.0], "expected": 25.048587351573744}, {"input": [22.0, 25.5], "expected": 25.52975041827262}, {"input": [22.0, 26.0], "expected": 26.01814992791781}, {"input": [22.0, 26.5], "expected": 26.511047744848593}, {"input": [22.0, 27.0], "expected": 27.006715348489116}, {"input": [22.0, 27.5], "expected": 27.504078443270572}, {"input": [22.0, 28.0], "expected": 28.002475685137732}, {"input": [22.0, 28.5], "expected": 28.501502310159754}, {"input": [22.0, 29.0], "expected": 29.000911466453775}, {"input": [22.0, 29.5], "expected": 29.50055293147536}, {"input": [22.0, 30.0], "expected": 30.000335406372894}, {"input": [22.0, 30.5], "expected": 30.500203447672128}, {"input": [22.0, 31.0], "expected": 31.000123402189722}, {"input": [22.0, 31.5], "expected": 31.50007484902863}, {"input": [22.0, 32.0], "expected": 32.00004539889922}, {"input": [22.0, 32.5], "expected": 32.50002753607023}, {"input": [22.0, 33.0], "expected": 33.00001670156132}, {"input": [22.0, 33.5], "expected": 33.50001013004229}, {"input": [22.0, 34.0], "expected": 34.00000614419348}, {"input": [22.0, 34.5], "expected": 34.50000372664623}, {"input": [22.0, 35.0], "expected": 35.00000226032685}, {"input": [22.0, 35.5], "expected": 35.500001370958145}, {"input": [22.0, 36.0], "expected": 36.000000831528375}, {"input": [22.0, 36.5], "expected": 36.50000050434753}, {"input": [22.0, 37.0], "expected": 37.000000305902276}, {"input": [22.0, 37.5], "expected": 37.50000018553912}, {"input": [22.0, 38.0], "expected": 38.00000011253517}, {"input": [22.0, 38.5], "expected": 38.50000006825603}, {"input": [22.0, 39.0], "expected": 39.000000041399375}, {"input": [22.0, 39.5], "expected": 39.50000002510999}, {"input": [22.0, 40.0], "expected": 40.00000001522998}, {"input": [22.0, 40.5], "expected": 40.500000009237446}, {"input": [22.0, 41.0], "expected": 41.00000000560279}, {"input": [22.0, 41.5], "expected": 41.50000000339827}, {"input": [22.0, 42.0], "expected": 42.00000000206116}, {"input": [22.0, 42.5], "expected": 42.50000000125015}, {"input": [22.0, 43.0], "expected": 43.000000000758256}, {"input": [22.0, 43.5], "expected": 43.500000000459906}, {"input": [22.0, 44.0], "expected": 44.000000000278945}, {"input": [22.0, 44.5], "expected": 44.50000000016919}, {"input": [22.0, 45.0], "expected": 45.00000000010262}, {"input": [22.0, 45.5], "expected": 45.50000000006224}, {"input": [22.0, 46.0], "expected": 46.00000000003775}, {"input": [22.0, 46.5], "expected": 46.5000000000229}, {"input": [22.0, 47.0], "expected": 47.00000000001389}, {"input": [22.0, 47.5], "expected": 47.50000000000842}, {"input": [22.0, 48.0], "expected": 48.00000000000511}, {"input": [22.0, 48.5], "expected": 48.5000000000031}, {"input": [22.0, 49.0], "expected": 49.00000000000188}, {"input": [22.0, 49.5], "expected": 49.50000000000114}, {"input": [22.0, 50.0], "expected": 50.00000000000069}, {"input": [22.0, 50.5], "expected": 50.50000000000042}, {"input": [22.0, 51.0], "expected": 51.000000000000256}, {"input": [22.0, 51.5], "expected": 51.500000000000156}, {"input": [22.0, 52.0], "expected": 52.00000000000009}, {"input": [22.0, 52.5], "expected": 52.50000000000006}, {"input": [22.0, 53.0], "expected": 53.000000000000036}, {"input": [22.0, 53.5], "expected": 53.50000000000002}, {"input": [22.0, 54.0], "expected": 54.000000000000014}, {"input": [22.0, 54.5], "expected": 54.50000000000001}, {"input": [22.0, 55.0], "expected": 55.00000000000001}, {"input": [22.0, 55.5], "expected": 55.5}, {"input": [22.0, 56.0], "expected": 56.0}, {"input": [22.0, 56.5], "expected": 56.5}, {"input": [22.0, 57.0], "expected": 57.0}, {"input": [22.0, 57.5], "expected": 57.5}, {"input": [22.0, 58.0], "expected": 58.0}, {"input": [22.0, 58.5], "expected": 58.5}, {"input": [22.0, 59.0], "expected": 59.0}, {"input": [22.0, 59.5], "expected": 59.5}, {"input": [22.0, 60.0], "expected": 60.0}, {"input": [22.0, 60.5], "expected": 60.5}, {"input": [22.0, 61.0], "expected": 61.0}, {"input": [22.0, 61.5], "expected": 61.5}, {"input": [22.0, 62.0], "expected": 62.0}, {"input": [22.0, 62.5], "expected": 62.5}, {"input": [22.0, 63.0], "expected": 63.0}, {"input": [22.0, 63.5], "expected": 63.5}, {"input": [22.0, 64.0], "expected": 64.0}, {"input": [22.0, 64.5], "expected": 64.5}, {"input": [22.0, 65.0], "expected": 65.0}, {"input": [22.0, 65.5], "expected": 65.5}, {"input": [22.0, 66.0], "expected": 66.0}, {"input": [22.0, 66.5], "expected": 66.5}, {"input": [22.0, 67.0], "expected": 67.0}, {"input": [22.0, 67.5], "expected": 67.5}, {"input": [22.0, 68.0], "expected": 68.0}, {"input": [22.0, 68.5], "expected": 68.5}, {"input": [22.0, 69.0], "expected": 69.0}, {"input": [22.0, 69.5], "expected": 69.5}, {"input": [22.0, 70.0], "expected": 70.0}, {"input": [22.0, 70.5], "expected": 70.5}, {"input": [22.0, 71.0], "expected": 71.0}, {"input": [22.0, 71.5], "expected": 71.5}, {"input": [22.0, 72.0], "expected": 72.0}, {"input": [22.0, 72.5], "expected": 72.5}, {"input": [22.0, 73.0], "expected": 73.0}, {"input": [22.0, 73.5], "expected": 73.5}, {"input": [22.0, 74.0], "expected": 74.0}, {"input": [22.0, 74.5], "expected": 74.5}, {"input": [22.0, 75.0], "expected": 75.0}, {"input": [22.0, 75.5], "expected": 75.5}, {"input": [22.0, 76.0], "expected": 76.0}, {"input": [22.0, 76.5], "expected": 76.5}, {"input": [22.0, 77.0], "expected": 77.0}, {"input": [22.0, 77.5], "expected": 77.5}, {"input": [22.0, 78.0], "expected": 78.0}, {"input": [22.0, 78.5], "expected": 78.5}, {"input": [22.0, 79.0], "expected": 79.0}, {"input": [22.0, 79.5], "expected": 79.5}, {"input": [22.0, 80.0], "expected": 80.0}, {"input": [22.0, 80.5], "expected": 80.5}, {"input": [22.0, 81.0], "expected": 81.0}, {"input": [22.0, 81.5], "expected": 81.5}, {"input": [22.0, 82.0], "expected": 82.0}, {"input": [22.0, 82.5], "expected": 82.5}, {"input": [22.0, 83.0], "expected": 83.0}, {"input": [22.0, 83.5], "expected": 83.5}, {"input": [22.0, 84.0], "expected": 84.0}, {"input": [22.0, 84.5], "expected": 84.5}, {"input": [22.0, 85.0], "expected": 85.0}, {"input": [22.0, 85.5], "expected": 85.5}, {"input": [22.0, 86.0], "expected": 86.0}, {"input": [22.0, 86.5], "expected": 86.5}, {"input": [22.0, 87.0], "expected": 87.0}, {"input": [22.0, 87.5], "expected": 87.5}, {"input": [22.0, 88.0], "expected": 88.0}, {"input": [22.0, 88.5], "expected": 88.5}, {"input": [22.0, 89.0], "expected": 89.0}, {"input": [22.0, 89.5], "expected": 89.5}, {"input": [22.0, 90.0], "expected": 90.0}, {"input": [22.0, 90.5], "expected": 90.5}, {"input": [22.0, 91.0], "expected": 91.0}, {"input": [22.0, 91.5], "expected": 91.5}, {"input": [22.0, 92.0], "expected": 92.0}, {"input": [22.0, 92.5], "expected": 92.5}, {"input": [22.0, 93.0], "expected": 93.0}, {"input": [22.0, 93.5], "expected": 93.5}, {"input": [22.0, 94.0], "expected": 94.0}, {"input": [22.0, 94.5], "expected": 94.5}, {"input": [22.0, 95.0], "expected": 95.0}, {"input": [22.0, 95.5], "expected": 95.5}, {"input": [22.0, 96.0], "expected": 96.0}, {"input": [22.0, 96.5], "expected": 96.5}, {"input": [22.0, 97.0], "expected": 97.0}, {"input": [22.0, 97.5], "expected": 97.5}, {"input": [22.0, 98.0], "expected": 98.0}, {"input": [22.0, 98.5], "expected": 98.5}, {"input": [22.0, 99.0], "expected": 99.0}, {"input": [22.0, 99.5], "expected": 99.5}, {"input": [22.5, -100.0], "expected": 22.5}, {"input": [22.5, -99.5], "expected": 22.5}, {"input": [22.5, -99.0], "expected": 22.5}, {"input": [22.5, -98.5], "expected": 22.5}, {"input": [22.5, -98.0], "expected": 22.5}, {"input": [22.5, -97.5], "expected": 22.5}, {"input": [22.5, -97.0], "expected": 22.5}, {"input": [22.5, -96.5], "expected": 22.5}, {"input": [22.5, -96.0], "expected": 22.5}, {"input": [22.5, -95.5], "expected": 22.5}, {"input": [22.5, -95.0], "expected": 22.5}, {"input": [22.5, -94.5], "expected": 22.5}, {"input": [22.5, -94.0], "expected": 22.5}, {"input": [22.5, -93.5], "expected": 22.5}, {"input": [22.5, -93.0], "expected": 22.5}, {"input": [22.5, -92.5], "expected": 22.5}, {"input": [22.5, -92.0], "expected": 22.5}, {"input": [22.5, -91.5], "expected": 22.5}, {"input": [22.5, -91.0], "expected": 22.5}, {"input": [22.5, -90.5], "expected": 22.5}, {"input": [22.5, -90.0], "expected": 22.5}, {"input": [22.5, -89.5], "expected": 22.5}, {"input": [22.5, -89.0], "expected": 22.5}, {"input": [22.5, -88.5], "expected": 22.5}, {"input": [22.5, -88.0], "expected": 22.5}, {"input": [22.5, -87.5], "expected": 22.5}, {"input": [22.5, -87.0], "expected": 22.5}, {"input": [22.5, -86.5], "expected": 22.5}, {"input": [22.5, -86.0], "expected": 22.5}, {"input": [22.5, -85.5], "expected": 22.5}, {"input": [22.5, -85.0], "expected": 22.5}, {"input": [22.5, -84.5], "expected": 22.5}, {"input": [22.5, -84.0], "expected": 22.5}, {"input": [22.5, -83.5], "expected": 22.5}, {"input": [22.5, -83.0], "expected": 22.5}, {"input": [22.5, -82.5], "expected": 22.5}, {"input": [22.5, -82.0], "expected": 22.5}, {"input": [22.5, -81.5], "expected": 22.5}, {"input": [22.5, -81.0], "expected": 22.5}, {"input": [22.5, -80.5], "expected": 22.5}, {"input": [22.5, -80.0], "expected": 22.5}, {"input": [22.5, -79.5], "expected": 22.5}, {"input": [22.5, -79.0], "expected": 22.5}, {"input": [22.5, -78.5], "expected": 22.5}, {"input": [22.5, -78.0], "expected": 22.5}, {"input": [22.5, -77.5], "expected": 22.5}, {"input": [22.5, -77.0], "expected": 22.5}, {"input": [22.5, -76.5], "expected": 22.5}, {"input": [22.5, -76.0], "expected": 22.5}, {"input": [22.5, -75.5], "expected": 22.5}, {"input": [22.5, -75.0], "expected": 22.5}, {"input": [22.5, -74.5], "expected": 22.5}, {"input": [22.5, -74.0], "expected": 22.5}, {"input": [22.5, -73.5], "expected": 22.5}, {"input": [22.5, -73.0], "expected": 22.5}, {"input": [22.5, -72.5], "expected": 22.5}, {"input": [22.5, -72.0], "expected": 22.5}, {"input": [22.5, -71.5], "expected": 22.5}, {"input": [22.5, -71.0], "expected": 22.5}, {"input": [22.5, -70.5], "expected": 22.5}, {"input": [22.5, -70.0], "expected": 22.5}, {"input": [22.5, -69.5], "expected": 22.5}, {"input": [22.5, -69.0], "expected": 22.5}, {"input": [22.5, -68.5], "expected": 22.5}, {"input": [22.5, -68.0], "expected": 22.5}, {"input": [22.5, -67.5], "expected": 22.5}, {"input": [22.5, -67.0], "expected": 22.5}, {"input": [22.5, -66.5], "expected": 22.5}, {"input": [22.5, -66.0], "expected": 22.5}, {"input": [22.5, -65.5], "expected": 22.5}, {"input": [22.5, -65.0], "expected": 22.5}, {"input": [22.5, -64.5], "expected": 22.5}, {"input": [22.5, -64.0], "expected": 22.5}, {"input": [22.5, -63.5], "expected": 22.5}, {"input": [22.5, -63.0], "expected": 22.5}, {"input": [22.5, -62.5], "expected": 22.5}, {"input": [22.5, -62.0], "expected": 22.5}, {"input": [22.5, -61.5], "expected": 22.5}, {"input": [22.5, -61.0], "expected": 22.5}, {"input": [22.5, -60.5], "expected": 22.5}, {"input": [22.5, -60.0], "expected": 22.5}, {"input": [22.5, -59.5], "expected": 22.5}, {"input": [22.5, -59.0], "expected": 22.5}, {"input": [22.5, -58.5], "expected": 22.5}, {"input": [22.5, -58.0], "expected": 22.5}, {"input": [22.5, -57.5], "expected": 22.5}, {"input": [22.5, -57.0], "expected": 22.5}, {"input": [22.5, -56.5], "expected": 22.5}, {"input": [22.5, -56.0], "expected": 22.5}, {"input": [22.5, -55.5], "expected": 22.5}, {"input": [22.5, -55.0], "expected": 22.5}, {"input": [22.5, -54.5], "expected": 22.5}, {"input": [22.5, -54.0], "expected": 22.5}, {"input": [22.5, -53.5], "expected": 22.5}, {"input": [22.5, -53.0], "expected": 22.5}, {"input": [22.5, -52.5], "expected": 22.5}, {"input": [22.5, -52.0], "expected": 22.5}, {"input": [22.5, -51.5], "expected": 22.5}, {"input": [22.5, -51.0], "expected": 22.5}, {"input": [22.5, -50.5], "expected": 22.5}, {"input": [22.5, -50.0], "expected": 22.5}, {"input": [22.5, -49.5], "expected": 22.5}, {"input": [22.5, -49.0], "expected": 22.5}, {"input": [22.5, -48.5], "expected": 22.5}, {"input": [22.5, -48.0], "expected": 22.5}, {"input": [22.5, -47.5], "expected": 22.5}, {"input": [22.5, -47.0], "expected": 22.5}, {"input": [22.5, -46.5], "expected": 22.5}, {"input": [22.5, -46.0], "expected": 22.5}, {"input": [22.5, -45.5], "expected": 22.5}, {"input": [22.5, -45.0], "expected": 22.5}, {"input": [22.5, -44.5], "expected": 22.5}, {"input": [22.5, -44.0], "expected": 22.5}, {"input": [22.5, -43.5], "expected": 22.5}, {"input": [22.5, -43.0], "expected": 22.5}, {"input": [22.5, -42.5], "expected": 22.5}, {"input": [22.5, -42.0], "expected": 22.5}, {"input": [22.5, -41.5], "expected": 22.5}, {"input": [22.5, -41.0], "expected": 22.5}, {"input": [22.5, -40.5], "expected": 22.5}, {"input": [22.5, -40.0], "expected": 22.5}, {"input": [22.5, -39.5], "expected": 22.5}, {"input": [22.5, -39.0], "expected": 22.5}, {"input": [22.5, -38.5], "expected": 22.5}, {"input": [22.5, -38.0], "expected": 22.5}, {"input": [22.5, -37.5], "expected": 22.5}, {"input": [22.5, -37.0], "expected": 22.5}, {"input": [22.5, -36.5], "expected": 22.5}, {"input": [22.5, -36.0], "expected": 22.5}, {"input": [22.5, -35.5], "expected": 22.5}, {"input": [22.5, -35.0], "expected": 22.5}, {"input": [22.5, -34.5], "expected": 22.5}, {"input": [22.5, -34.0], "expected": 22.5}, {"input": [22.5, -33.5], "expected": 22.5}, {"input": [22.5, -33.0], "expected": 22.5}, {"input": [22.5, -32.5], "expected": 22.5}, {"input": [22.5, -32.0], "expected": 22.5}, {"input": [22.5, -31.5], "expected": 22.5}, {"input": [22.5, -31.0], "expected": 22.5}, {"input": [22.5, -30.5], "expected": 22.5}, {"input": [22.5, -30.0], "expected": 22.5}, {"input": [22.5, -29.5], "expected": 22.5}, {"input": [22.5, -29.0], "expected": 22.5}, {"input": [22.5, -28.5], "expected": 22.5}, {"input": [22.5, -28.0], "expected": 22.5}, {"input": [22.5, -27.5], "expected": 22.5}, {"input": [22.5, -27.0], "expected": 22.5}, {"input": [22.5, -26.5], "expected": 22.5}, {"input": [22.5, -26.0], "expected": 22.5}, {"input": [22.5, -25.5], "expected": 22.5}, {"input": [22.5, -25.0], "expected": 22.5}, {"input": [22.5, -24.5], "expected": 22.5}, {"input": [22.5, -24.0], "expected": 22.5}, {"input": [22.5, -23.5], "expected": 22.5}, {"input": [22.5, -23.0], "expected": 22.5}, {"input": [22.5, -22.5], "expected": 22.5}, {"input": [22.5, -22.0], "expected": 22.5}, {"input": [22.5, -21.5], "expected": 22.5}, {"input": [22.5, -21.0], "expected": 22.5}, {"input": [22.5, -20.5], "expected": 22.5}, {"input": [22.5, -20.0], "expected": 22.5}, {"input": [22.5, -19.5], "expected": 22.5}, {"input": [22.5, -19.0], "expected": 22.5}, {"input": [22.5, -18.5], "expected": 22.5}, {"input": [22.5, -18.0], "expected": 22.5}, {"input": [22.5, -17.5], "expected": 22.5}, {"input": [22.5, -17.0], "expected": 22.5}, {"input": [22.5, -16.5], "expected": 22.5}, {"input": [22.5, -16.0], "expected": 22.5}, {"input": [22.5, -15.5], "expected": 22.5}, {"input": [22.5, -15.0], "expected": 22.5}, {"input": [22.5, -14.5], "expected": 22.5}, {"input": [22.5, -14.0], "expected": 22.5}, {"input": [22.5, -13.5], "expected": 22.5}, {"input": [22.5, -13.0], "expected": 22.5}, {"input": [22.5, -12.5], "expected": 22.5}, {"input": [22.5, -12.0], "expected": 22.5}, {"input": [22.5, -11.5], "expected": 22.5}, {"input": [22.5, -11.0], "expected": 22.500000000000004}, {"input": [22.5, -10.5], "expected": 22.500000000000004}, {"input": [22.5, -10.0], "expected": 22.500000000000007}, {"input": [22.5, -9.5], "expected": 22.500000000000014}, {"input": [22.5, -9.0], "expected": 22.50000000000002}, {"input": [22.5, -8.5], "expected": 22.500000000000036}, {"input": [22.5, -8.0], "expected": 22.500000000000057}, {"input": [22.5, -7.5], "expected": 22.500000000000092}, {"input": [22.5, -7.0], "expected": 22.500000000000153}, {"input": [22.5, -6.5], "expected": 22.500000000000256}, {"input": [22.5, -6.0], "expected": 22.50000000000042}, {"input": [22.5, -5.5], "expected": 22.500000000000693}, {"input": [22.5, -5.0], "expected": 22.50000000000114}, {"input": [22.5, -4.5], "expected": 22.50000000000188}, {"input": [22.5, -4.0], "expected": 22.500000000003098}, {"input": [22.5, -3.5], "expected": 22.50000000000511}, {"input": [22.5, -3.0], "expected": 22.500000000008423}, {"input": [22.5, -2.5], "expected": 22.500000000013888}, {"input": [22.5, -2.0], "expected": 22.500000000022897}, {"input": [22.5, -1.5], "expected": 22.50000000003775}, {"input": [22.5, -1.0], "expected": 22.50000000006224}, {"input": [22.5, -0.5], "expected": 22.50000000010262}, {"input": [22.5, 0.0], "expected": 22.50000000016919}, {"input": [22.5, 0.5], "expected": 22.50000000027895}, {"input": [22.5, 1.0], "expected": 22.500000000459906}, {"input": [22.5, 1.5], "expected": 22.500000000758256}, {"input": [22.5, 2.0], "expected": 22.500000001250154}, {"input": [22.5, 2.5], "expected": 22.500000002061153}, {"input": [22.5, 3.0], "expected": 22.500000003398267}, {"input": [22.5, 3.5], "expected": 22.500000005602796}, {"input": [22.5, 4.0], "expected": 22.50000000923745}, {"input": [22.5, 4.5], "expected": 22.50000001522998}, {"input": [22.5, 5.0], "expected": 22.50000002510999}, {"input": [22.5, 5.5], "expected": 22.500000041399375}, {"input": [22.5, 6.0], "expected": 22.500000068256032}, {"input": [22.5, 6.5], "expected": 22.50000011253517}, {"input": [22.5, 7.0], "expected": 22.50000018553912}, {"input": [22.5, 7.5], "expected": 22.500000305902272}, {"input": [22.5, 8.0], "expected": 22.500000504347536}, {"input": [22.5, 8.5], "expected": 22.500000831528375}, {"input": [22.5, 9.0], "expected": 22.500001370958145}, {"input": [22.5, 9.5], "expected": 22.500002260326852}, {"input": [22.5, 10.0], "expected": 22.500003726646227}, {"input": [22.5, 10.5], "expected": 22.500006144193478}, {"input": [22.5, 11.0], "expected": 22.50001013004229}, {"input": [22.5, 11.5], "expected": 22.500016701561318}, {"input": [22.5, 12.0], "expected": 22.500027536070228}, {"input": [22.5, 12.5], "expected": 22.500045398899218}, {"input": [22.5, 13.0], "expected": 22.50007484902863}, {"input": [22.5, 13.5], "expected": 22.500123402189722}, {"input": [22.5, 14.0], "expected": 22.500203447672128}, {"input": [22.5, 14.5], "expected": 22.500335406372894}, {"input": [22.5, 15.0], "expected": 22.50055293147536}, {"input": [22.5, 15.5], "expected": 22.500911466453775}, {"input": [22.5, 16.0], "expected": 22.501502310159754}, {"input": [22.5, 16.5], "expected": 22.502475685137732}, {"input": [22.5, 17.0], "expected": 22.504078443270572}, {"input": [22.5, 17.5], "expected": 22.506715348489116}, {"input": [22.5, 18.0], "expected": 22.511047744848593}, {"input": [22.5, 18.5], "expected": 22.51814992791781}, {"input": [22.5, 19.0], "expected": 22.52975041827262}, {"input": [22.5, 19.5], "expected": 22.548587351573744}, {"input": [22.5, 20.0], "expected": 22.57888973429255}, {"input": [22.5, 20.5], "expected": 22.626928011042974}, {"input": [22.5, 21.0], "expected": 22.701413277982752}, {"input": [22.5, 21.5], "expected": 22.813261687518224}, {"input": [22.5, 22.0], "expected": 22.97407698418011}, {"input": [22.5, 22.5], "expected": 23.193147180559944}, {"input": [22.5, 23.0], "expected": 23.47407698418011}, {"input": [22.5, 23.5], "expected": 23.813261687518224}, {"input": [22.5, 24.0], "expected": 24.201413277982752}, {"input": [22.5, 24.5], "expected": 24.626928011042974}, {"input": [22.5, 25.0], "expected": 25.07888973429255}, {"input": [22.5, 25.5], "expected": 25.548587351573744}, {"input": [22.5, 26.0], "expected": 26.02975041827262}, {"input": [22.5, 26.5], "expected": 26.51814992791781}, {"input": [22.5, 27.0], "expected": 27.011047744848593}, {"input": [22.5, 27.5], "expected": 27.506715348489116}, {"input": [22.5, 28.0], "expected": 28.004078443270572}, {"input": [22.5, 28.5], "expected": 28.502475685137732}, {"input": [22.5, 29.0], "expected": 29.001502310159754}, {"input": [22.5, 29.5], "expected": 29.500911466453775}, {"input": [22.5, 30.0], "expected": 30.00055293147536}, {"input": [22.5, 30.5], "expected": 30.500335406372894}, {"input": [22.5, 31.0], "expected": 31.000203447672128}, {"input": [22.5, 31.5], "expected": 31.500123402189722}, {"input": [22.5, 32.0], "expected": 32.00007484902863}, {"input": [22.5, 32.5], "expected": 32.50004539889922}, {"input": [22.5, 33.0], "expected": 33.00002753607023}, {"input": [22.5, 33.5], "expected": 33.50001670156132}, {"input": [22.5, 34.0], "expected": 34.00001013004229}, {"input": [22.5, 34.5], "expected": 34.50000614419348}, {"input": [22.5, 35.0], "expected": 35.00000372664623}, {"input": [22.5, 35.5], "expected": 35.50000226032685}, {"input": [22.5, 36.0], "expected": 36.000001370958145}, {"input": [22.5, 36.5], "expected": 36.500000831528375}, {"input": [22.5, 37.0], "expected": 37.00000050434753}, {"input": [22.5, 37.5], "expected": 37.500000305902276}, {"input": [22.5, 38.0], "expected": 38.00000018553912}, {"input": [22.5, 38.5], "expected": 38.50000011253517}, {"input": [22.5, 39.0], "expected": 39.00000006825603}, {"input": [22.5, 39.5], "expected": 39.500000041399375}, {"input": [22.5, 40.0], "expected": 40.00000002510999}, {"input": [22.5, 40.5], "expected": 40.50000001522998}, {"input": [22.5, 41.0], "expected": 41.000000009237446}, {"input": [22.5, 41.5], "expected": 41.50000000560279}, {"input": [22.5, 42.0], "expected": 42.00000000339827}, {"input": [22.5, 42.5], "expected": 42.50000000206116}, {"input": [22.5, 43.0], "expected": 43.00000000125015}, {"input": [22.5, 43.5], "expected": 43.500000000758256}, {"input": [22.5, 44.0], "expected": 44.000000000459906}, {"input": [22.5, 44.5], "expected": 44.500000000278945}, {"input": [22.5, 45.0], "expected": 45.00000000016919}, {"input": [22.5, 45.5], "expected": 45.50000000010262}, {"input": [22.5, 46.0], "expected": 46.00000000006224}, {"input": [22.5, 46.5], "expected": 46.50000000003775}, {"input": [22.5, 47.0], "expected": 47.0000000000229}, {"input": [22.5, 47.5], "expected": 47.50000000001389}, {"input": [22.5, 48.0], "expected": 48.00000000000842}, {"input": [22.5, 48.5], "expected": 48.50000000000511}, {"input": [22.5, 49.0], "expected": 49.0000000000031}, {"input": [22.5, 49.5], "expected": 49.50000000000188}, {"input": [22.5, 50.0], "expected": 50.00000000000114}, {"input": [22.5, 50.5], "expected": 50.50000000000069}, {"input": [22.5, 51.0], "expected": 51.00000000000042}, {"input": [22.5, 51.5], "expected": 51.500000000000256}, {"input": [22.5, 52.0], "expected": 52.000000000000156}, {"input": [22.5, 52.5], "expected": 52.50000000000009}, {"input": [22.5, 53.0], "expected": 53.00000000000006}, {"input": [22.5, 53.5], "expected": 53.500000000000036}, {"input": [22.5, 54.0], "expected": 54.00000000000002}, {"input": [22.5, 54.5], "expected": 54.500000000000014}, {"input": [22.5, 55.0], "expected": 55.00000000000001}, {"input": [22.5, 55.5], "expected": 55.50000000000001}, {"input": [22.5, 56.0], "expected": 56.0}, {"input": [22.5, 56.5], "expected": 56.5}, {"input": [22.5, 57.0], "expected": 57.0}, {"input": [22.5, 57.5], "expected": 57.5}, {"input": [22.5, 58.0], "expected": 58.0}, {"input": [22.5, 58.5], "expected": 58.5}, {"input": [22.5, 59.0], "expected": 59.0}, {"input": [22.5, 59.5], "expected": 59.5}, {"input": [22.5, 60.0], "expected": 60.0}, {"input": [22.5, 60.5], "expected": 60.5}, {"input": [22.5, 61.0], "expected": 61.0}, {"input": [22.5, 61.5], "expected": 61.5}, {"input": [22.5, 62.0], "expected": 62.0}, {"input": [22.5, 62.5], "expected": 62.5}, {"input": [22.5, 63.0], "expected": 63.0}, {"input": [22.5, 63.5], "expected": 63.5}, {"input": [22.5, 64.0], "expected": 64.0}, {"input": [22.5, 64.5], "expected": 64.5}, {"input": [22.5, 65.0], "expected": 65.0}, {"input": [22.5, 65.5], "expected": 65.5}, {"input": [22.5, 66.0], "expected": 66.0}, {"input": [22.5, 66.5], "expected": 66.5}, {"input": [22.5, 67.0], "expected": 67.0}, {"input": [22.5, 67.5], "expected": 67.5}, {"input": [22.5, 68.0], "expected": 68.0}, {"input": [22.5, 68.5], "expected": 68.5}, {"input": [22.5, 69.0], "expected": 69.0}, {"input": [22.5, 69.5], "expected": 69.5}, {"input": [22.5, 70.0], "expected": 70.0}, {"input": [22.5, 70.5], "expected": 70.5}, {"input": [22.5, 71.0], "expected": 71.0}, {"input": [22.5, 71.5], "expected": 71.5}, {"input": [22.5, 72.0], "expected": 72.0}, {"input": [22.5, 72.5], "expected": 72.5}, {"input": [22.5, 73.0], "expected": 73.0}, {"input": [22.5, 73.5], "expected": 73.5}, {"input": [22.5, 74.0], "expected": 74.0}, {"input": [22.5, 74.5], "expected": 74.5}, {"input": [22.5, 75.0], "expected": 75.0}, {"input": [22.5, 75.5], "expected": 75.5}, {"input": [22.5, 76.0], "expected": 76.0}, {"input": [22.5, 76.5], "expected": 76.5}, {"input": [22.5, 77.0], "expected": 77.0}, {"input": [22.5, 77.5], "expected": 77.5}, {"input": [22.5, 78.0], "expected": 78.0}, {"input": [22.5, 78.5], "expected": 78.5}, {"input": [22.5, 79.0], "expected": 79.0}, {"input": [22.5, 79.5], "expected": 79.5}, {"input": [22.5, 80.0], "expected": 80.0}, {"input": [22.5, 80.5], "expected": 80.5}, {"input": [22.5, 81.0], "expected": 81.0}, {"input": [22.5, 81.5], "expected": 81.5}, {"input": [22.5, 82.0], "expected": 82.0}, {"input": [22.5, 82.5], "expected": 82.5}, {"input": [22.5, 83.0], "expected": 83.0}, {"input": [22.5, 83.5], "expected": 83.5}, {"input": [22.5, 84.0], "expected": 84.0}, {"input": [22.5, 84.5], "expected": 84.5}, {"input": [22.5, 85.0], "expected": 85.0}, {"input": [22.5, 85.5], "expected": 85.5}, {"input": [22.5, 86.0], "expected": 86.0}, {"input": [22.5, 86.5], "expected": 86.5}, {"input": [22.5, 87.0], "expected": 87.0}, {"input": [22.5, 87.5], "expected": 87.5}, {"input": [22.5, 88.0], "expected": 88.0}, {"input": [22.5, 88.5], "expected": 88.5}, {"input": [22.5, 89.0], "expected": 89.0}, {"input": [22.5, 89.5], "expected": 89.5}, {"input": [22.5, 90.0], "expected": 90.0}, {"input": [22.5, 90.5], "expected": 90.5}, {"input": [22.5, 91.0], "expected": 91.0}, {"input": [22.5, 91.5], "expected": 91.5}, {"input": [22.5, 92.0], "expected": 92.0}, {"input": [22.5, 92.5], "expected": 92.5}, {"input": [22.5, 93.0], "expected": 93.0}, {"input": [22.5, 93.5], "expected": 93.5}, {"input": [22.5, 94.0], "expected": 94.0}, {"input": [22.5, 94.5], "expected": 94.5}, {"input": [22.5, 95.0], "expected": 95.0}, {"input": [22.5, 95.5], "expected": 95.5}, {"input": [22.5, 96.0], "expected": 96.0}, {"input": [22.5, 96.5], "expected": 96.5}, {"input": [22.5, 97.0], "expected": 97.0}, {"input": [22.5, 97.5], "expected": 97.5}, {"input": [22.5, 98.0], "expected": 98.0}, {"input": [22.5, 98.5], "expected": 98.5}, {"input": [22.5, 99.0], "expected": 99.0}, {"input": [22.5, 99.5], "expected": 99.5}, {"input": [23.0, -100.0], "expected": 23.0}, {"input": [23.0, -99.5], "expected": 23.0}, {"input": [23.0, -99.0], "expected": 23.0}, {"input": [23.0, -98.5], "expected": 23.0}, {"input": [23.0, -98.0], "expected": 23.0}, {"input": [23.0, -97.5], "expected": 23.0}, {"input": [23.0, -97.0], "expected": 23.0}, {"input": [23.0, -96.5], "expected": 23.0}, {"input": [23.0, -96.0], "expected": 23.0}, {"input": [23.0, -95.5], "expected": 23.0}, {"input": [23.0, -95.0], "expected": 23.0}, {"input": [23.0, -94.5], "expected": 23.0}, {"input": [23.0, -94.0], "expected": 23.0}, {"input": [23.0, -93.5], "expected": 23.0}, {"input": [23.0, -93.0], "expected": 23.0}, {"input": [23.0, -92.5], "expected": 23.0}, {"input": [23.0, -92.0], "expected": 23.0}, {"input": [23.0, -91.5], "expected": 23.0}, {"input": [23.0, -91.0], "expected": 23.0}, {"input": [23.0, -90.5], "expected": 23.0}, {"input": [23.0, -90.0], "expected": 23.0}, {"input": [23.0, -89.5], "expected": 23.0}, {"input": [23.0, -89.0], "expected": 23.0}, {"input": [23.0, -88.5], "expected": 23.0}, {"input": [23.0, -88.0], "expected": 23.0}, {"input": [23.0, -87.5], "expected": 23.0}, {"input": [23.0, -87.0], "expected": 23.0}, {"input": [23.0, -86.5], "expected": 23.0}, {"input": [23.0, -86.0], "expected": 23.0}, {"input": [23.0, -85.5], "expected": 23.0}, {"input": [23.0, -85.0], "expected": 23.0}, {"input": [23.0, -84.5], "expected": 23.0}, {"input": [23.0, -84.0], "expected": 23.0}, {"input": [23.0, -83.5], "expected": 23.0}, {"input": [23.0, -83.0], "expected": 23.0}, {"input": [23.0, -82.5], "expected": 23.0}, {"input": [23.0, -82.0], "expected": 23.0}, {"input": [23.0, -81.5], "expected": 23.0}, {"input": [23.0, -81.0], "expected": 23.0}, {"input": [23.0, -80.5], "expected": 23.0}, {"input": [23.0, -80.0], "expected": 23.0}, {"input": [23.0, -79.5], "expected": 23.0}, {"input": [23.0, -79.0], "expected": 23.0}, {"input": [23.0, -78.5], "expected": 23.0}, {"input": [23.0, -78.0], "expected": 23.0}, {"input": [23.0, -77.5], "expected": 23.0}, {"input": [23.0, -77.0], "expected": 23.0}, {"input": [23.0, -76.5], "expected": 23.0}, {"input": [23.0, -76.0], "expected": 23.0}, {"input": [23.0, -75.5], "expected": 23.0}, {"input": [23.0, -75.0], "expected": 23.0}, {"input": [23.0, -74.5], "expected": 23.0}, {"input": [23.0, -74.0], "expected": 23.0}, {"input": [23.0, -73.5], "expected": 23.0}, {"input": [23.0, -73.0], "expected": 23.0}, {"input": [23.0, -72.5], "expected": 23.0}, {"input": [23.0, -72.0], "expected": 23.0}, {"input": [23.0, -71.5], "expected": 23.0}, {"input": [23.0, -71.0], "expected": 23.0}, {"input": [23.0, -70.5], "expected": 23.0}, {"input": [23.0, -70.0], "expected": 23.0}, {"input": [23.0, -69.5], "expected": 23.0}, {"input": [23.0, -69.0], "expected": 23.0}, {"input": [23.0, -68.5], "expected": 23.0}, {"input": [23.0, -68.0], "expected": 23.0}, {"input": [23.0, -67.5], "expected": 23.0}, {"input": [23.0, -67.0], "expected": 23.0}, {"input": [23.0, -66.5], "expected": 23.0}, {"input": [23.0, -66.0], "expected": 23.0}, {"input": [23.0, -65.5], "expected": 23.0}, {"input": [23.0, -65.0], "expected": 23.0}, {"input": [23.0, -64.5], "expected": 23.0}, {"input": [23.0, -64.0], "expected": 23.0}, {"input": [23.0, -63.5], "expected": 23.0}, {"input": [23.0, -63.0], "expected": 23.0}, {"input": [23.0, -62.5], "expected": 23.0}, {"input": [23.0, -62.0], "expected": 23.0}, {"input": [23.0, -61.5], "expected": 23.0}, {"input": [23.0, -61.0], "expected": 23.0}, {"input": [23.0, -60.5], "expected": 23.0}, {"input": [23.0, -60.0], "expected": 23.0}, {"input": [23.0, -59.5], "expected": 23.0}, {"input": [23.0, -59.0], "expected": 23.0}, {"input": [23.0, -58.5], "expected": 23.0}, {"input": [23.0, -58.0], "expected": 23.0}, {"input": [23.0, -57.5], "expected": 23.0}, {"input": [23.0, -57.0], "expected": 23.0}, {"input": [23.0, -56.5], "expected": 23.0}, {"input": [23.0, -56.0], "expected": 23.0}, {"input": [23.0, -55.5], "expected": 23.0}, {"input": [23.0, -55.0], "expected": 23.0}, {"input": [23.0, -54.5], "expected": 23.0}, {"input": [23.0, -54.0], "expected": 23.0}, {"input": [23.0, -53.5], "expected": 23.0}, {"input": [23.0, -53.0], "expected": 23.0}, {"input": [23.0, -52.5], "expected": 23.0}, {"input": [23.0, -52.0], "expected": 23.0}, {"input": [23.0, -51.5], "expected": 23.0}, {"input": [23.0, -51.0], "expected": 23.0}, {"input": [23.0, -50.5], "expected": 23.0}, {"input": [23.0, -50.0], "expected": 23.0}, {"input": [23.0, -49.5], "expected": 23.0}, {"input": [23.0, -49.0], "expected": 23.0}, {"input": [23.0, -48.5], "expected": 23.0}, {"input": [23.0, -48.0], "expected": 23.0}, {"input": [23.0, -47.5], "expected": 23.0}, {"input": [23.0, -47.0], "expected": 23.0}, {"input": [23.0, -46.5], "expected": 23.0}, {"input": [23.0, -46.0], "expected": 23.0}, {"input": [23.0, -45.5], "expected": 23.0}, {"input": [23.0, -45.0], "expected": 23.0}, {"input": [23.0, -44.5], "expected": 23.0}, {"input": [23.0, -44.0], "expected": 23.0}, {"input": [23.0, -43.5], "expected": 23.0}, {"input": [23.0, -43.0], "expected": 23.0}, {"input": [23.0, -42.5], "expected": 23.0}, {"input": [23.0, -42.0], "expected": 23.0}, {"input": [23.0, -41.5], "expected": 23.0}, {"input": [23.0, -41.0], "expected": 23.0}, {"input": [23.0, -40.5], "expected": 23.0}, {"input": [23.0, -40.0], "expected": 23.0}, {"input": [23.0, -39.5], "expected": 23.0}, {"input": [23.0, -39.0], "expected": 23.0}, {"input": [23.0, -38.5], "expected": 23.0}, {"input": [23.0, -38.0], "expected": 23.0}, {"input": [23.0, -37.5], "expected": 23.0}, {"input": [23.0, -37.0], "expected": 23.0}, {"input": [23.0, -36.5], "expected": 23.0}, {"input": [23.0, -36.0], "expected": 23.0}, {"input": [23.0, -35.5], "expected": 23.0}, {"input": [23.0, -35.0], "expected": 23.0}, {"input": [23.0, -34.5], "expected": 23.0}, {"input": [23.0, -34.0], "expected": 23.0}, {"input": [23.0, -33.5], "expected": 23.0}, {"input": [23.0, -33.0], "expected": 23.0}, {"input": [23.0, -32.5], "expected": 23.0}, {"input": [23.0, -32.0], "expected": 23.0}, {"input": [23.0, -31.5], "expected": 23.0}, {"input": [23.0, -31.0], "expected": 23.0}, {"input": [23.0, -30.5], "expected": 23.0}, {"input": [23.0, -30.0], "expected": 23.0}, {"input": [23.0, -29.5], "expected": 23.0}, {"input": [23.0, -29.0], "expected": 23.0}, {"input": [23.0, -28.5], "expected": 23.0}, {"input": [23.0, -28.0], "expected": 23.0}, {"input": [23.0, -27.5], "expected": 23.0}, {"input": [23.0, -27.0], "expected": 23.0}, {"input": [23.0, -26.5], "expected": 23.0}, {"input": [23.0, -26.0], "expected": 23.0}, {"input": [23.0, -25.5], "expected": 23.0}, {"input": [23.0, -25.0], "expected": 23.0}, {"input": [23.0, -24.5], "expected": 23.0}, {"input": [23.0, -24.0], "expected": 23.0}, {"input": [23.0, -23.5], "expected": 23.0}, {"input": [23.0, -23.0], "expected": 23.0}, {"input": [23.0, -22.5], "expected": 23.0}, {"input": [23.0, -22.0], "expected": 23.0}, {"input": [23.0, -21.5], "expected": 23.0}, {"input": [23.0, -21.0], "expected": 23.0}, {"input": [23.0, -20.5], "expected": 23.0}, {"input": [23.0, -20.0], "expected": 23.0}, {"input": [23.0, -19.5], "expected": 23.0}, {"input": [23.0, -19.0], "expected": 23.0}, {"input": [23.0, -18.5], "expected": 23.0}, {"input": [23.0, -18.0], "expected": 23.0}, {"input": [23.0, -17.5], "expected": 23.0}, {"input": [23.0, -17.0], "expected": 23.0}, {"input": [23.0, -16.5], "expected": 23.0}, {"input": [23.0, -16.0], "expected": 23.0}, {"input": [23.0, -15.5], "expected": 23.0}, {"input": [23.0, -15.0], "expected": 23.0}, {"input": [23.0, -14.5], "expected": 23.0}, {"input": [23.0, -14.0], "expected": 23.0}, {"input": [23.0, -13.5], "expected": 23.0}, {"input": [23.0, -13.0], "expected": 23.0}, {"input": [23.0, -12.5], "expected": 23.0}, {"input": [23.0, -12.0], "expected": 23.0}, {"input": [23.0, -11.5], "expected": 23.0}, {"input": [23.0, -11.0], "expected": 23.0}, {"input": [23.0, -10.5], "expected": 23.000000000000004}, {"input": [23.0, -10.0], "expected": 23.000000000000004}, {"input": [23.0, -9.5], "expected": 23.000000000000007}, {"input": [23.0, -9.0], "expected": 23.000000000000014}, {"input": [23.0, -8.5], "expected": 23.00000000000002}, {"input": [23.0, -8.0], "expected": 23.000000000000036}, {"input": [23.0, -7.5], "expected": 23.000000000000057}, {"input": [23.0, -7.0], "expected": 23.000000000000092}, {"input": [23.0, -6.5], "expected": 23.000000000000153}, {"input": [23.0, -6.0], "expected": 23.000000000000256}, {"input": [23.0, -5.5], "expected": 23.00000000000042}, {"input": [23.0, -5.0], "expected": 23.000000000000693}, {"input": [23.0, -4.5], "expected": 23.00000000000114}, {"input": [23.0, -4.0], "expected": 23.00000000000188}, {"input": [23.0, -3.5], "expected": 23.000000000003098}, {"input": [23.0, -3.0], "expected": 23.00000000000511}, {"input": [23.0, -2.5], "expected": 23.000000000008423}, {"input": [23.0, -2.0], "expected": 23.000000000013888}, {"input": [23.0, -1.5], "expected": 23.000000000022897}, {"input": [23.0, -1.0], "expected": 23.00000000003775}, {"input": [23.0, -0.5], "expected": 23.00000000006224}, {"input": [23.0, 0.0], "expected": 23.00000000010262}, {"input": [23.0, 0.5], "expected": 23.00000000016919}, {"input": [23.0, 1.0], "expected": 23.00000000027895}, {"input": [23.0, 1.5], "expected": 23.000000000459906}, {"input": [23.0, 2.0], "expected": 23.000000000758256}, {"input": [23.0, 2.5], "expected": 23.000000001250154}, {"input": [23.0, 3.0], "expected": 23.000000002061153}, {"input": [23.0, 3.5], "expected": 23.000000003398267}, {"input": [23.0, 4.0], "expected": 23.000000005602796}, {"input": [23.0, 4.5], "expected": 23.00000000923745}, {"input": [23.0, 5.0], "expected": 23.00000001522998}, {"input": [23.0, 5.5], "expected": 23.00000002510999}, {"input": [23.0, 6.0], "expected": 23.000000041399375}, {"input": [23.0, 6.5], "expected": 23.000000068256032}, {"input": [23.0, 7.0], "expected": 23.00000011253517}, {"input": [23.0, 7.5], "expected": 23.00000018553912}, {"input": [23.0, 8.0], "expected": 23.000000305902272}, {"input": [23.0, 8.5], "expected": 23.000000504347536}, {"input": [23.0, 9.0], "expected": 23.000000831528375}, {"input": [23.0, 9.5], "expected": 23.000001370958145}, {"input": [23.0, 10.0], "expected": 23.000002260326852}, {"input": [23.0, 10.5], "expected": 23.000003726646227}, {"input": [23.0, 11.0], "expected": 23.000006144193478}, {"input": [23.0, 11.5], "expected": 23.00001013004229}, {"input": [23.0, 12.0], "expected": 23.000016701561318}, {"input": [23.0, 12.5], "expected": 23.000027536070228}, {"input": [23.0, 13.0], "expected": 23.000045398899218}, {"input": [23.0, 13.5], "expected": 23.00007484902863}, {"input": [23.0, 14.0], "expected": 23.000123402189722}, {"input": [23.0, 14.5], "expected": 23.000203447672128}, {"input": [23.0, 15.0], "expected": 23.000335406372894}, {"input": [23.0, 15.5], "expected": 23.00055293147536}, {"input": [23.0, 16.0], "expected": 23.000911466453775}, {"input": [23.0, 16.5], "expected": 23.001502310159754}, {"input": [23.0, 17.0], "expected": 23.002475685137732}, {"input": [23.0, 17.5], "expected": 23.004078443270572}, {"input": [23.0, 18.0], "expected": 23.006715348489116}, {"input": [23.0, 18.5], "expected": 23.011047744848593}, {"input": [23.0, 19.0], "expected": 23.01814992791781}, {"input": [23.0, 19.5], "expected": 23.02975041827262}, {"input": [23.0, 20.0], "expected": 23.048587351573744}, {"input": [23.0, 20.5], "expected": 23.07888973429255}, {"input": [23.0, 21.0], "expected": 23.126928011042974}, {"input": [23.0, 21.5], "expected": 23.201413277982752}, {"input": [23.0, 22.0], "expected": 23.313261687518224}, {"input": [23.0, 22.5], "expected": 23.47407698418011}, {"input": [23.0, 23.0], "expected": 23.693147180559944}, {"input": [23.0, 23.5], "expected": 23.97407698418011}, {"input": [23.0, 24.0], "expected": 24.313261687518224}, {"input": [23.0, 24.5], "expected": 24.701413277982752}, {"input": [23.0, 25.0], "expected": 25.126928011042974}, {"input": [23.0, 25.5], "expected": 25.57888973429255}, {"input": [23.0, 26.0], "expected": 26.048587351573744}, {"input": [23.0, 26.5], "expected": 26.52975041827262}, {"input": [23.0, 27.0], "expected": 27.01814992791781}, {"input": [23.0, 27.5], "expected": 27.511047744848593}, {"input": [23.0, 28.0], "expected": 28.006715348489116}, {"input": [23.0, 28.5], "expected": 28.504078443270572}, {"input": [23.0, 29.0], "expected": 29.002475685137732}, {"input": [23.0, 29.5], "expected": 29.501502310159754}, {"input": [23.0, 30.0], "expected": 30.000911466453775}, {"input": [23.0, 30.5], "expected": 30.50055293147536}, {"input": [23.0, 31.0], "expected": 31.000335406372894}, {"input": [23.0, 31.5], "expected": 31.500203447672128}, {"input": [23.0, 32.0], "expected": 32.00012340218972}, {"input": [23.0, 32.5], "expected": 32.50007484902863}, {"input": [23.0, 33.0], "expected": 33.00004539889922}, {"input": [23.0, 33.5], "expected": 33.50002753607023}, {"input": [23.0, 34.0], "expected": 34.00001670156132}, {"input": [23.0, 34.5], "expected": 34.50001013004229}, {"input": [23.0, 35.0], "expected": 35.00000614419348}, {"input": [23.0, 35.5], "expected": 35.50000372664623}, {"input": [23.0, 36.0], "expected": 36.00000226032685}, {"input": [23.0, 36.5], "expected": 36.500001370958145}, {"input": [23.0, 37.0], "expected": 37.000000831528375}, {"input": [23.0, 37.5], "expected": 37.50000050434753}, {"input": [23.0, 38.0], "expected": 38.000000305902276}, {"input": [23.0, 38.5], "expected": 38.50000018553912}, {"input": [23.0, 39.0], "expected": 39.00000011253517}, {"input": [23.0, 39.5], "expected": 39.50000006825603}, {"input": [23.0, 40.0], "expected": 40.000000041399375}, {"input": [23.0, 40.5], "expected": 40.50000002510999}, {"input": [23.0, 41.0], "expected": 41.00000001522998}, {"input": [23.0, 41.5], "expected": 41.500000009237446}, {"input": [23.0, 42.0], "expected": 42.00000000560279}, {"input": [23.0, 42.5], "expected": 42.50000000339827}, {"input": [23.0, 43.0], "expected": 43.00000000206116}, {"input": [23.0, 43.5], "expected": 43.50000000125015}, {"input": [23.0, 44.0], "expected": 44.000000000758256}, {"input": [23.0, 44.5], "expected": 44.500000000459906}, {"input": [23.0, 45.0], "expected": 45.000000000278945}, {"input": [23.0, 45.5], "expected": 45.50000000016919}, {"input": [23.0, 46.0], "expected": 46.00000000010262}, {"input": [23.0, 46.5], "expected": 46.50000000006224}, {"input": [23.0, 47.0], "expected": 47.00000000003775}, {"input": [23.0, 47.5], "expected": 47.5000000000229}, {"input": [23.0, 48.0], "expected": 48.00000000001389}, {"input": [23.0, 48.5], "expected": 48.50000000000842}, {"input": [23.0, 49.0], "expected": 49.00000000000511}, {"input": [23.0, 49.5], "expected": 49.5000000000031}, {"input": [23.0, 50.0], "expected": 50.00000000000188}, {"input": [23.0, 50.5], "expected": 50.50000000000114}, {"input": [23.0, 51.0], "expected": 51.00000000000069}, {"input": [23.0, 51.5], "expected": 51.50000000000042}, {"input": [23.0, 52.0], "expected": 52.000000000000256}, {"input": [23.0, 52.5], "expected": 52.500000000000156}, {"input": [23.0, 53.0], "expected": 53.00000000000009}, {"input": [23.0, 53.5], "expected": 53.50000000000006}, {"input": [23.0, 54.0], "expected": 54.000000000000036}, {"input": [23.0, 54.5], "expected": 54.50000000000002}, {"input": [23.0, 55.0], "expected": 55.000000000000014}, {"input": [23.0, 55.5], "expected": 55.50000000000001}, {"input": [23.0, 56.0], "expected": 56.00000000000001}, {"input": [23.0, 56.5], "expected": 56.5}, {"input": [23.0, 57.0], "expected": 57.0}, {"input": [23.0, 57.5], "expected": 57.5}, {"input": [23.0, 58.0], "expected": 58.0}, {"input": [23.0, 58.5], "expected": 58.5}, {"input": [23.0, 59.0], "expected": 59.0}, {"input": [23.0, 59.5], "expected": 59.5}, {"input": [23.0, 60.0], "expected": 60.0}, {"input": [23.0, 60.5], "expected": 60.5}, {"input": [23.0, 61.0], "expected": 61.0}, {"input": [23.0, 61.5], "expected": 61.5}, {"input": [23.0, 62.0], "expected": 62.0}, {"input": [23.0, 62.5], "expected": 62.5}, {"input": [23.0, 63.0], "expected": 63.0}, {"input": [23.0, 63.5], "expected": 63.5}, {"input": [23.0, 64.0], "expected": 64.0}, {"input": [23.0, 64.5], "expected": 64.5}, {"input": [23.0, 65.0], "expected": 65.0}, {"input": [23.0, 65.5], "expected": 65.5}, {"input": [23.0, 66.0], "expected": 66.0}, {"input": [23.0, 66.5], "expected": 66.5}, {"input": [23.0, 67.0], "expected": 67.0}, {"input": [23.0, 67.5], "expected": 67.5}, {"input": [23.0, 68.0], "expected": 68.0}, {"input": [23.0, 68.5], "expected": 68.5}, {"input": [23.0, 69.0], "expected": 69.0}, {"input": [23.0, 69.5], "expected": 69.5}, {"input": [23.0, 70.0], "expected": 70.0}, {"input": [23.0, 70.5], "expected": 70.5}, {"input": [23.0, 71.0], "expected": 71.0}, {"input": [23.0, 71.5], "expected": 71.5}, {"input": [23.0, 72.0], "expected": 72.0}, {"input": [23.0, 72.5], "expected": 72.5}, {"input": [23.0, 73.0], "expected": 73.0}, {"input": [23.0, 73.5], "expected": 73.5}, {"input": [23.0, 74.0], "expected": 74.0}, {"input": [23.0, 74.5], "expected": 74.5}, {"input": [23.0, 75.0], "expected": 75.0}, {"input": [23.0, 75.5], "expected": 75.5}, {"input": [23.0, 76.0], "expected": 76.0}, {"input": [23.0, 76.5], "expected": 76.5}, {"input": [23.0, 77.0], "expected": 77.0}, {"input": [23.0, 77.5], "expected": 77.5}, {"input": [23.0, 78.0], "expected": 78.0}, {"input": [23.0, 78.5], "expected": 78.5}, {"input": [23.0, 79.0], "expected": 79.0}, {"input": [23.0, 79.5], "expected": 79.5}, {"input": [23.0, 80.0], "expected": 80.0}, {"input": [23.0, 80.5], "expected": 80.5}, {"input": [23.0, 81.0], "expected": 81.0}, {"input": [23.0, 81.5], "expected": 81.5}, {"input": [23.0, 82.0], "expected": 82.0}, {"input": [23.0, 82.5], "expected": 82.5}, {"input": [23.0, 83.0], "expected": 83.0}, {"input": [23.0, 83.5], "expected": 83.5}, {"input": [23.0, 84.0], "expected": 84.0}, {"input": [23.0, 84.5], "expected": 84.5}, {"input": [23.0, 85.0], "expected": 85.0}, {"input": [23.0, 85.5], "expected": 85.5}, {"input": [23.0, 86.0], "expected": 86.0}, {"input": [23.0, 86.5], "expected": 86.5}, {"input": [23.0, 87.0], "expected": 87.0}, {"input": [23.0, 87.5], "expected": 87.5}, {"input": [23.0, 88.0], "expected": 88.0}, {"input": [23.0, 88.5], "expected": 88.5}, {"input": [23.0, 89.0], "expected": 89.0}, {"input": [23.0, 89.5], "expected": 89.5}, {"input": [23.0, 90.0], "expected": 90.0}, {"input": [23.0, 90.5], "expected": 90.5}, {"input": [23.0, 91.0], "expected": 91.0}, {"input": [23.0, 91.5], "expected": 91.5}, {"input": [23.0, 92.0], "expected": 92.0}, {"input": [23.0, 92.5], "expected": 92.5}, {"input": [23.0, 93.0], "expected": 93.0}, {"input": [23.0, 93.5], "expected": 93.5}, {"input": [23.0, 94.0], "expected": 94.0}, {"input": [23.0, 94.5], "expected": 94.5}, {"input": [23.0, 95.0], "expected": 95.0}, {"input": [23.0, 95.5], "expected": 95.5}, {"input": [23.0, 96.0], "expected": 96.0}, {"input": [23.0, 96.5], "expected": 96.5}, {"input": [23.0, 97.0], "expected": 97.0}, {"input": [23.0, 97.5], "expected": 97.5}, {"input": [23.0, 98.0], "expected": 98.0}, {"input": [23.0, 98.5], "expected": 98.5}, {"input": [23.0, 99.0], "expected": 99.0}, {"input": [23.0, 99.5], "expected": 99.5}, {"input": [23.5, -100.0], "expected": 23.5}, {"input": [23.5, -99.5], "expected": 23.5}, {"input": [23.5, -99.0], "expected": 23.5}, {"input": [23.5, -98.5], "expected": 23.5}, {"input": [23.5, -98.0], "expected": 23.5}, {"input": [23.5, -97.5], "expected": 23.5}, {"input": [23.5, -97.0], "expected": 23.5}, {"input": [23.5, -96.5], "expected": 23.5}, {"input": [23.5, -96.0], "expected": 23.5}, {"input": [23.5, -95.5], "expected": 23.5}, {"input": [23.5, -95.0], "expected": 23.5}, {"input": [23.5, -94.5], "expected": 23.5}, {"input": [23.5, -94.0], "expected": 23.5}, {"input": [23.5, -93.5], "expected": 23.5}, {"input": [23.5, -93.0], "expected": 23.5}, {"input": [23.5, -92.5], "expected": 23.5}, {"input": [23.5, -92.0], "expected": 23.5}, {"input": [23.5, -91.5], "expected": 23.5}, {"input": [23.5, -91.0], "expected": 23.5}, {"input": [23.5, -90.5], "expected": 23.5}, {"input": [23.5, -90.0], "expected": 23.5}, {"input": [23.5, -89.5], "expected": 23.5}, {"input": [23.5, -89.0], "expected": 23.5}, {"input": [23.5, -88.5], "expected": 23.5}, {"input": [23.5, -88.0], "expected": 23.5}, {"input": [23.5, -87.5], "expected": 23.5}, {"input": [23.5, -87.0], "expected": 23.5}, {"input": [23.5, -86.5], "expected": 23.5}, {"input": [23.5, -86.0], "expected": 23.5}, {"input": [23.5, -85.5], "expected": 23.5}, {"input": [23.5, -85.0], "expected": 23.5}, {"input": [23.5, -84.5], "expected": 23.5}, {"input": [23.5, -84.0], "expected": 23.5}, {"input": [23.5, -83.5], "expected": 23.5}, {"input": [23.5, -83.0], "expected": 23.5}, {"input": [23.5, -82.5], "expected": 23.5}, {"input": [23.5, -82.0], "expected": 23.5}, {"input": [23.5, -81.5], "expected": 23.5}, {"input": [23.5, -81.0], "expected": 23.5}, {"input": [23.5, -80.5], "expected": 23.5}, {"input": [23.5, -80.0], "expected": 23.5}, {"input": [23.5, -79.5], "expected": 23.5}, {"input": [23.5, -79.0], "expected": 23.5}, {"input": [23.5, -78.5], "expected": 23.5}, {"input": [23.5, -78.0], "expected": 23.5}, {"input": [23.5, -77.5], "expected": 23.5}, {"input": [23.5, -77.0], "expected": 23.5}, {"input": [23.5, -76.5], "expected": 23.5}, {"input": [23.5, -76.0], "expected": 23.5}, {"input": [23.5, -75.5], "expected": 23.5}, {"input": [23.5, -75.0], "expected": 23.5}, {"input": [23.5, -74.5], "expected": 23.5}, {"input": [23.5, -74.0], "expected": 23.5}, {"input": [23.5, -73.5], "expected": 23.5}, {"input": [23.5, -73.0], "expected": 23.5}, {"input": [23.5, -72.5], "expected": 23.5}, {"input": [23.5, -72.0], "expected": 23.5}, {"input": [23.5, -71.5], "expected": 23.5}, {"input": [23.5, -71.0], "expected": 23.5}, {"input": [23.5, -70.5], "expected": 23.5}, {"input": [23.5, -70.0], "expected": 23.5}, {"input": [23.5, -69.5], "expected": 23.5}, {"input": [23.5, -69.0], "expected": 23.5}, {"input": [23.5, -68.5], "expected": 23.5}, {"input": [23.5, -68.0], "expected": 23.5}, {"input": [23.5, -67.5], "expected": 23.5}, {"input": [23.5, -67.0], "expected": 23.5}, {"input": [23.5, -66.5], "expected": 23.5}, {"input": [23.5, -66.0], "expected": 23.5}, {"input": [23.5, -65.5], "expected": 23.5}, {"input": [23.5, -65.0], "expected": 23.5}, {"input": [23.5, -64.5], "expected": 23.5}, {"input": [23.5, -64.0], "expected": 23.5}, {"input": [23.5, -63.5], "expected": 23.5}, {"input": [23.5, -63.0], "expected": 23.5}, {"input": [23.5, -62.5], "expected": 23.5}, {"input": [23.5, -62.0], "expected": 23.5}, {"input": [23.5, -61.5], "expected": 23.5}, {"input": [23.5, -61.0], "expected": 23.5}, {"input": [23.5, -60.5], "expected": 23.5}, {"input": [23.5, -60.0], "expected": 23.5}, {"input": [23.5, -59.5], "expected": 23.5}, {"input": [23.5, -59.0], "expected": 23.5}, {"input": [23.5, -58.5], "expected": 23.5}, {"input": [23.5, -58.0], "expected": 23.5}, {"input": [23.5, -57.5], "expected": 23.5}, {"input": [23.5, -57.0], "expected": 23.5}, {"input": [23.5, -56.5], "expected": 23.5}, {"input": [23.5, -56.0], "expected": 23.5}, {"input": [23.5, -55.5], "expected": 23.5}, {"input": [23.5, -55.0], "expected": 23.5}, {"input": [23.5, -54.5], "expected": 23.5}, {"input": [23.5, -54.0], "expected": 23.5}, {"input": [23.5, -53.5], "expected": 23.5}, {"input": [23.5, -53.0], "expected": 23.5}, {"input": [23.5, -52.5], "expected": 23.5}, {"input": [23.5, -52.0], "expected": 23.5}, {"input": [23.5, -51.5], "expected": 23.5}, {"input": [23.5, -51.0], "expected": 23.5}, {"input": [23.5, -50.5], "expected": 23.5}, {"input": [23.5, -50.0], "expected": 23.5}, {"input": [23.5, -49.5], "expected": 23.5}, {"input": [23.5, -49.0], "expected": 23.5}, {"input": [23.5, -48.5], "expected": 23.5}, {"input": [23.5, -48.0], "expected": 23.5}, {"input": [23.5, -47.5], "expected": 23.5}, {"input": [23.5, -47.0], "expected": 23.5}, {"input": [23.5, -46.5], "expected": 23.5}, {"input": [23.5, -46.0], "expected": 23.5}, {"input": [23.5, -45.5], "expected": 23.5}, {"input": [23.5, -45.0], "expected": 23.5}, {"input": [23.5, -44.5], "expected": 23.5}, {"input": [23.5, -44.0], "expected": 23.5}, {"input": [23.5, -43.5], "expected": 23.5}, {"input": [23.5, -43.0], "expected": 23.5}, {"input": [23.5, -42.5], "expected": 23.5}, {"input": [23.5, -42.0], "expected": 23.5}, {"input": [23.5, -41.5], "expected": 23.5}, {"input": [23.5, -41.0], "expected": 23.5}, {"input": [23.5, -40.5], "expected": 23.5}, {"input": [23.5, -40.0], "expected": 23.5}, {"input": [23.5, -39.5], "expected": 23.5}, {"input": [23.5, -39.0], "expected": 23.5}, {"input": [23.5, -38.5], "expected": 23.5}, {"input": [23.5, -38.0], "expected": 23.5}, {"input": [23.5, -37.5], "expected": 23.5}, {"input": [23.5, -37.0], "expected": 23.5}, {"input": [23.5, -36.5], "expected": 23.5}, {"input": [23.5, -36.0], "expected": 23.5}, {"input": [23.5, -35.5], "expected": 23.5}, {"input": [23.5, -35.0], "expected": 23.5}, {"input": [23.5, -34.5], "expected": 23.5}, {"input": [23.5, -34.0], "expected": 23.5}, {"input": [23.5, -33.5], "expected": 23.5}, {"input": [23.5, -33.0], "expected": 23.5}, {"input": [23.5, -32.5], "expected": 23.5}, {"input": [23.5, -32.0], "expected": 23.5}, {"input": [23.5, -31.5], "expected": 23.5}, {"input": [23.5, -31.0], "expected": 23.5}, {"input": [23.5, -30.5], "expected": 23.5}, {"input": [23.5, -30.0], "expected": 23.5}, {"input": [23.5, -29.5], "expected": 23.5}, {"input": [23.5, -29.0], "expected": 23.5}, {"input": [23.5, -28.5], "expected": 23.5}, {"input": [23.5, -28.0], "expected": 23.5}, {"input": [23.5, -27.5], "expected": 23.5}, {"input": [23.5, -27.0], "expected": 23.5}, {"input": [23.5, -26.5], "expected": 23.5}, {"input": [23.5, -26.0], "expected": 23.5}, {"input": [23.5, -25.5], "expected": 23.5}, {"input": [23.5, -25.0], "expected": 23.5}, {"input": [23.5, -24.5], "expected": 23.5}, {"input": [23.5, -24.0], "expected": 23.5}, {"input": [23.5, -23.5], "expected": 23.5}, {"input": [23.5, -23.0], "expected": 23.5}, {"input": [23.5, -22.5], "expected": 23.5}, {"input": [23.5, -22.0], "expected": 23.5}, {"input": [23.5, -21.5], "expected": 23.5}, {"input": [23.5, -21.0], "expected": 23.5}, {"input": [23.5, -20.5], "expected": 23.5}, {"input": [23.5, -20.0], "expected": 23.5}, {"input": [23.5, -19.5], "expected": 23.5}, {"input": [23.5, -19.0], "expected": 23.5}, {"input": [23.5, -18.5], "expected": 23.5}, {"input": [23.5, -18.0], "expected": 23.5}, {"input": [23.5, -17.5], "expected": 23.5}, {"input": [23.5, -17.0], "expected": 23.5}, {"input": [23.5, -16.5], "expected": 23.5}, {"input": [23.5, -16.0], "expected": 23.5}, {"input": [23.5, -15.5], "expected": 23.5}, {"input": [23.5, -15.0], "expected": 23.5}, {"input": [23.5, -14.5], "expected": 23.5}, {"input": [23.5, -14.0], "expected": 23.5}, {"input": [23.5, -13.5], "expected": 23.5}, {"input": [23.5, -13.0], "expected": 23.5}, {"input": [23.5, -12.5], "expected": 23.5}, {"input": [23.5, -12.0], "expected": 23.5}, {"input": [23.5, -11.5], "expected": 23.5}, {"input": [23.5, -11.0], "expected": 23.5}, {"input": [23.5, -10.5], "expected": 23.5}, {"input": [23.5, -10.0], "expected": 23.500000000000004}, {"input": [23.5, -9.5], "expected": 23.500000000000004}, {"input": [23.5, -9.0], "expected": 23.500000000000007}, {"input": [23.5, -8.5], "expected": 23.500000000000014}, {"input": [23.5, -8.0], "expected": 23.50000000000002}, {"input": [23.5, -7.5], "expected": 23.500000000000036}, {"input": [23.5, -7.0], "expected": 23.500000000000057}, {"input": [23.5, -6.5], "expected": 23.500000000000092}, {"input": [23.5, -6.0], "expected": 23.500000000000153}, {"input": [23.5, -5.5], "expected": 23.500000000000256}, {"input": [23.5, -5.0], "expected": 23.50000000000042}, {"input": [23.5, -4.5], "expected": 23.500000000000693}, {"input": [23.5, -4.0], "expected": 23.50000000000114}, {"input": [23.5, -3.5], "expected": 23.50000000000188}, {"input": [23.5, -3.0], "expected": 23.500000000003098}, {"input": [23.5, -2.5], "expected": 23.50000000000511}, {"input": [23.5, -2.0], "expected": 23.500000000008423}, {"input": [23.5, -1.5], "expected": 23.500000000013888}, {"input": [23.5, -1.0], "expected": 23.500000000022897}, {"input": [23.5, -0.5], "expected": 23.50000000003775}, {"input": [23.5, 0.0], "expected": 23.50000000006224}, {"input": [23.5, 0.5], "expected": 23.50000000010262}, {"input": [23.5, 1.0], "expected": 23.50000000016919}, {"input": [23.5, 1.5], "expected": 23.50000000027895}, {"input": [23.5, 2.0], "expected": 23.500000000459906}, {"input": [23.5, 2.5], "expected": 23.500000000758256}, {"input": [23.5, 3.0], "expected": 23.500000001250154}, {"input": [23.5, 3.5], "expected": 23.500000002061153}, {"input": [23.5, 4.0], "expected": 23.500000003398267}, {"input": [23.5, 4.5], "expected": 23.500000005602796}, {"input": [23.5, 5.0], "expected": 23.50000000923745}, {"input": [23.5, 5.5], "expected": 23.50000001522998}, {"input": [23.5, 6.0], "expected": 23.50000002510999}, {"input": [23.5, 6.5], "expected": 23.500000041399375}, {"input": [23.5, 7.0], "expected": 23.500000068256032}, {"input": [23.5, 7.5], "expected": 23.50000011253517}, {"input": [23.5, 8.0], "expected": 23.50000018553912}, {"input": [23.5, 8.5], "expected": 23.500000305902272}, {"input": [23.5, 9.0], "expected": 23.500000504347536}, {"input": [23.5, 9.5], "expected": 23.500000831528375}, {"input": [23.5, 10.0], "expected": 23.500001370958145}, {"input": [23.5, 10.5], "expected": 23.500002260326852}, {"input": [23.5, 11.0], "expected": 23.500003726646227}, {"input": [23.5, 11.5], "expected": 23.500006144193478}, {"input": [23.5, 12.0], "expected": 23.50001013004229}, {"input": [23.5, 12.5], "expected": 23.500016701561318}, {"input": [23.5, 13.0], "expected": 23.500027536070228}, {"input": [23.5, 13.5], "expected": 23.500045398899218}, {"input": [23.5, 14.0], "expected": 23.50007484902863}, {"input": [23.5, 14.5], "expected": 23.500123402189722}, {"input": [23.5, 15.0], "expected": 23.500203447672128}, {"input": [23.5, 15.5], "expected": 23.500335406372894}, {"input": [23.5, 16.0], "expected": 23.50055293147536}, {"input": [23.5, 16.5], "expected": 23.500911466453775}, {"input": [23.5, 17.0], "expected": 23.501502310159754}, {"input": [23.5, 17.5], "expected": 23.502475685137732}, {"input": [23.5, 18.0], "expected": 23.504078443270572}, {"input": [23.5, 18.5], "expected": 23.506715348489116}, {"input": [23.5, 19.0], "expected": 23.511047744848593}, {"input": [23.5, 19.5], "expected": 23.51814992791781}, {"input": [23.5, 20.0], "expected": 23.52975041827262}, {"input": [23.5, 20.5], "expected": 23.548587351573744}, {"input": [23.5, 21.0], "expected": 23.57888973429255}, {"input": [23.5, 21.5], "expected": 23.626928011042974}, {"input": [23.5, 22.0], "expected": 23.701413277982752}, {"input": [23.5, 22.5], "expected": 23.813261687518224}, {"input": [23.5, 23.0], "expected": 23.97407698418011}, {"input": [23.5, 23.5], "expected": 24.193147180559944}, {"input": [23.5, 24.0], "expected": 24.47407698418011}, {"input": [23.5, 24.5], "expected": 24.813261687518224}, {"input": [23.5, 25.0], "expected": 25.201413277982752}, {"input": [23.5, 25.5], "expected": 25.626928011042974}, {"input": [23.5, 26.0], "expected": 26.07888973429255}, {"input": [23.5, 26.5], "expected": 26.548587351573744}, {"input": [23.5, 27.0], "expected": 27.02975041827262}, {"input": [23.5, 27.5], "expected": 27.51814992791781}, {"input": [23.5, 28.0], "expected": 28.011047744848593}, {"input": [23.5, 28.5], "expected": 28.506715348489116}, {"input": [23.5, 29.0], "expected": 29.004078443270572}, {"input": [23.5, 29.5], "expected": 29.502475685137732}, {"input": [23.5, 30.0], "expected": 30.001502310159754}, {"input": [23.5, 30.5], "expected": 30.500911466453775}, {"input": [23.5, 31.0], "expected": 31.00055293147536}, {"input": [23.5, 31.5], "expected": 31.500335406372894}, {"input": [23.5, 32.0], "expected": 32.00020344767213}, {"input": [23.5, 32.5], "expected": 32.50012340218972}, {"input": [23.5, 33.0], "expected": 33.00007484902863}, {"input": [23.5, 33.5], "expected": 33.50004539889922}, {"input": [23.5, 34.0], "expected": 34.00002753607023}, {"input": [23.5, 34.5], "expected": 34.50001670156132}, {"input": [23.5, 35.0], "expected": 35.00001013004229}, {"input": [23.5, 35.5], "expected": 35.50000614419348}, {"input": [23.5, 36.0], "expected": 36.00000372664623}, {"input": [23.5, 36.5], "expected": 36.50000226032685}, {"input": [23.5, 37.0], "expected": 37.000001370958145}, {"input": [23.5, 37.5], "expected": 37.500000831528375}, {"input": [23.5, 38.0], "expected": 38.00000050434753}, {"input": [23.5, 38.5], "expected": 38.500000305902276}, {"input": [23.5, 39.0], "expected": 39.00000018553912}, {"input": [23.5, 39.5], "expected": 39.50000011253517}, {"input": [23.5, 40.0], "expected": 40.00000006825603}, {"input": [23.5, 40.5], "expected": 40.500000041399375}, {"input": [23.5, 41.0], "expected": 41.00000002510999}, {"input": [23.5, 41.5], "expected": 41.50000001522998}, {"input": [23.5, 42.0], "expected": 42.000000009237446}, {"input": [23.5, 42.5], "expected": 42.50000000560279}, {"input": [23.5, 43.0], "expected": 43.00000000339827}, {"input": [23.5, 43.5], "expected": 43.50000000206116}, {"input": [23.5, 44.0], "expected": 44.00000000125015}, {"input": [23.5, 44.5], "expected": 44.500000000758256}, {"input": [23.5, 45.0], "expected": 45.000000000459906}, {"input": [23.5, 45.5], "expected": 45.500000000278945}, {"input": [23.5, 46.0], "expected": 46.00000000016919}, {"input": [23.5, 46.5], "expected": 46.50000000010262}, {"input": [23.5, 47.0], "expected": 47.00000000006224}, {"input": [23.5, 47.5], "expected": 47.50000000003775}, {"input": [23.5, 48.0], "expected": 48.0000000000229}, {"input": [23.5, 48.5], "expected": 48.50000000001389}, {"input": [23.5, 49.0], "expected": 49.00000000000842}, {"input": [23.5, 49.5], "expected": 49.50000000000511}, {"input": [23.5, 50.0], "expected": 50.0000000000031}, {"input": [23.5, 50.5], "expected": 50.50000000000188}, {"input": [23.5, 51.0], "expected": 51.00000000000114}, {"input": [23.5, 51.5], "expected": 51.50000000000069}, {"input": [23.5, 52.0], "expected": 52.00000000000042}, {"input": [23.5, 52.5], "expected": 52.500000000000256}, {"input": [23.5, 53.0], "expected": 53.000000000000156}, {"input": [23.5, 53.5], "expected": 53.50000000000009}, {"input": [23.5, 54.0], "expected": 54.00000000000006}, {"input": [23.5, 54.5], "expected": 54.500000000000036}, {"input": [23.5, 55.0], "expected": 55.00000000000002}, {"input": [23.5, 55.5], "expected": 55.500000000000014}, {"input": [23.5, 56.0], "expected": 56.00000000000001}, {"input": [23.5, 56.5], "expected": 56.50000000000001}, {"input": [23.5, 57.0], "expected": 57.0}, {"input": [23.5, 57.5], "expected": 57.5}, {"input": [23.5, 58.0], "expected": 58.0}, {"input": [23.5, 58.5], "expected": 58.5}, {"input": [23.5, 59.0], "expected": 59.0}, {"input": [23.5, 59.5], "expected": 59.5}, {"input": [23.5, 60.0], "expected": 60.0}, {"input": [23.5, 60.5], "expected": 60.5}, {"input": [23.5, 61.0], "expected": 61.0}, {"input": [23.5, 61.5], "expected": 61.5}, {"input": [23.5, 62.0], "expected": 62.0}, {"input": [23.5, 62.5], "expected": 62.5}, {"input": [23.5, 63.0], "expected": 63.0}, {"input": [23.5, 63.5], "expected": 63.5}, {"input": [23.5, 64.0], "expected": 64.0}, {"input": [23.5, 64.5], "expected": 64.5}, {"input": [23.5, 65.0], "expected": 65.0}, {"input": [23.5, 65.5], "expected": 65.5}, {"input": [23.5, 66.0], "expected": 66.0}, {"input": [23.5, 66.5], "expected": 66.5}, {"input": [23.5, 67.0], "expected": 67.0}, {"input": [23.5, 67.5], "expected": 67.5}, {"input": [23.5, 68.0], "expected": 68.0}, {"input": [23.5, 68.5], "expected": 68.5}, {"input": [23.5, 69.0], "expected": 69.0}, {"input": [23.5, 69.5], "expected": 69.5}, {"input": [23.5, 70.0], "expected": 70.0}, {"input": [23.5, 70.5], "expected": 70.5}, {"input": [23.5, 71.0], "expected": 71.0}, {"input": [23.5, 71.5], "expected": 71.5}, {"input": [23.5, 72.0], "expected": 72.0}, {"input": [23.5, 72.5], "expected": 72.5}, {"input": [23.5, 73.0], "expected": 73.0}, {"input": [23.5, 73.5], "expected": 73.5}, {"input": [23.5, 74.0], "expected": 74.0}, {"input": [23.5, 74.5], "expected": 74.5}, {"input": [23.5, 75.0], "expected": 75.0}, {"input": [23.5, 75.5], "expected": 75.5}, {"input": [23.5, 76.0], "expected": 76.0}, {"input": [23.5, 76.5], "expected": 76.5}, {"input": [23.5, 77.0], "expected": 77.0}, {"input": [23.5, 77.5], "expected": 77.5}, {"input": [23.5, 78.0], "expected": 78.0}, {"input": [23.5, 78.5], "expected": 78.5}, {"input": [23.5, 79.0], "expected": 79.0}, {"input": [23.5, 79.5], "expected": 79.5}, {"input": [23.5, 80.0], "expected": 80.0}, {"input": [23.5, 80.5], "expected": 80.5}, {"input": [23.5, 81.0], "expected": 81.0}, {"input": [23.5, 81.5], "expected": 81.5}, {"input": [23.5, 82.0], "expected": 82.0}, {"input": [23.5, 82.5], "expected": 82.5}, {"input": [23.5, 83.0], "expected": 83.0}, {"input": [23.5, 83.5], "expected": 83.5}, {"input": [23.5, 84.0], "expected": 84.0}, {"input": [23.5, 84.5], "expected": 84.5}, {"input": [23.5, 85.0], "expected": 85.0}, {"input": [23.5, 85.5], "expected": 85.5}, {"input": [23.5, 86.0], "expected": 86.0}, {"input": [23.5, 86.5], "expected": 86.5}, {"input": [23.5, 87.0], "expected": 87.0}, {"input": [23.5, 87.5], "expected": 87.5}, {"input": [23.5, 88.0], "expected": 88.0}, {"input": [23.5, 88.5], "expected": 88.5}, {"input": [23.5, 89.0], "expected": 89.0}, {"input": [23.5, 89.5], "expected": 89.5}, {"input": [23.5, 90.0], "expected": 90.0}, {"input": [23.5, 90.5], "expected": 90.5}, {"input": [23.5, 91.0], "expected": 91.0}, {"input": [23.5, 91.5], "expected": 91.5}, {"input": [23.5, 92.0], "expected": 92.0}, {"input": [23.5, 92.5], "expected": 92.5}, {"input": [23.5, 93.0], "expected": 93.0}, {"input": [23.5, 93.5], "expected": 93.5}, {"input": [23.5, 94.0], "expected": 94.0}, {"input": [23.5, 94.5], "expected": 94.5}, {"input": [23.5, 95.0], "expected": 95.0}, {"input": [23.5, 95.5], "expected": 95.5}, {"input": [23.5, 96.0], "expected": 96.0}, {"input": [23.5, 96.5], "expected": 96.5}, {"input": [23.5, 97.0], "expected": 97.0}, {"input": [23.5, 97.5], "expected": 97.5}, {"input": [23.5, 98.0], "expected": 98.0}, {"input": [23.5, 98.5], "expected": 98.5}, {"input": [23.5, 99.0], "expected": 99.0}, {"input": [23.5, 99.5], "expected": 99.5}, {"input": [24.0, -100.0], "expected": 24.0}, {"input": [24.0, -99.5], "expected": 24.0}, {"input": [24.0, -99.0], "expected": 24.0}, {"input": [24.0, -98.5], "expected": 24.0}, {"input": [24.0, -98.0], "expected": 24.0}, {"input": [24.0, -97.5], "expected": 24.0}, {"input": [24.0, -97.0], "expected": 24.0}, {"input": [24.0, -96.5], "expected": 24.0}, {"input": [24.0, -96.0], "expected": 24.0}, {"input": [24.0, -95.5], "expected": 24.0}, {"input": [24.0, -95.0], "expected": 24.0}, {"input": [24.0, -94.5], "expected": 24.0}, {"input": [24.0, -94.0], "expected": 24.0}, {"input": [24.0, -93.5], "expected": 24.0}, {"input": [24.0, -93.0], "expected": 24.0}, {"input": [24.0, -92.5], "expected": 24.0}, {"input": [24.0, -92.0], "expected": 24.0}, {"input": [24.0, -91.5], "expected": 24.0}, {"input": [24.0, -91.0], "expected": 24.0}, {"input": [24.0, -90.5], "expected": 24.0}, {"input": [24.0, -90.0], "expected": 24.0}, {"input": [24.0, -89.5], "expected": 24.0}, {"input": [24.0, -89.0], "expected": 24.0}, {"input": [24.0, -88.5], "expected": 24.0}, {"input": [24.0, -88.0], "expected": 24.0}, {"input": [24.0, -87.5], "expected": 24.0}, {"input": [24.0, -87.0], "expected": 24.0}, {"input": [24.0, -86.5], "expected": 24.0}, {"input": [24.0, -86.0], "expected": 24.0}, {"input": [24.0, -85.5], "expected": 24.0}, {"input": [24.0, -85.0], "expected": 24.0}, {"input": [24.0, -84.5], "expected": 24.0}, {"input": [24.0, -84.0], "expected": 24.0}, {"input": [24.0, -83.5], "expected": 24.0}, {"input": [24.0, -83.0], "expected": 24.0}, {"input": [24.0, -82.5], "expected": 24.0}, {"input": [24.0, -82.0], "expected": 24.0}, {"input": [24.0, -81.5], "expected": 24.0}, {"input": [24.0, -81.0], "expected": 24.0}, {"input": [24.0, -80.5], "expected": 24.0}, {"input": [24.0, -80.0], "expected": 24.0}, {"input": [24.0, -79.5], "expected": 24.0}, {"input": [24.0, -79.0], "expected": 24.0}, {"input": [24.0, -78.5], "expected": 24.0}, {"input": [24.0, -78.0], "expected": 24.0}, {"input": [24.0, -77.5], "expected": 24.0}, {"input": [24.0, -77.0], "expected": 24.0}, {"input": [24.0, -76.5], "expected": 24.0}, {"input": [24.0, -76.0], "expected": 24.0}, {"input": [24.0, -75.5], "expected": 24.0}, {"input": [24.0, -75.0], "expected": 24.0}, {"input": [24.0, -74.5], "expected": 24.0}, {"input": [24.0, -74.0], "expected": 24.0}, {"input": [24.0, -73.5], "expected": 24.0}, {"input": [24.0, -73.0], "expected": 24.0}, {"input": [24.0, -72.5], "expected": 24.0}, {"input": [24.0, -72.0], "expected": 24.0}, {"input": [24.0, -71.5], "expected": 24.0}, {"input": [24.0, -71.0], "expected": 24.0}, {"input": [24.0, -70.5], "expected": 24.0}, {"input": [24.0, -70.0], "expected": 24.0}, {"input": [24.0, -69.5], "expected": 24.0}, {"input": [24.0, -69.0], "expected": 24.0}, {"input": [24.0, -68.5], "expected": 24.0}, {"input": [24.0, -68.0], "expected": 24.0}, {"input": [24.0, -67.5], "expected": 24.0}, {"input": [24.0, -67.0], "expected": 24.0}, {"input": [24.0, -66.5], "expected": 24.0}, {"input": [24.0, -66.0], "expected": 24.0}, {"input": [24.0, -65.5], "expected": 24.0}, {"input": [24.0, -65.0], "expected": 24.0}, {"input": [24.0, -64.5], "expected": 24.0}, {"input": [24.0, -64.0], "expected": 24.0}, {"input": [24.0, -63.5], "expected": 24.0}, {"input": [24.0, -63.0], "expected": 24.0}, {"input": [24.0, -62.5], "expected": 24.0}, {"input": [24.0, -62.0], "expected": 24.0}, {"input": [24.0, -61.5], "expected": 24.0}, {"input": [24.0, -61.0], "expected": 24.0}, {"input": [24.0, -60.5], "expected": 24.0}, {"input": [24.0, -60.0], "expected": 24.0}, {"input": [24.0, -59.5], "expected": 24.0}, {"input": [24.0, -59.0], "expected": 24.0}, {"input": [24.0, -58.5], "expected": 24.0}, {"input": [24.0, -58.0], "expected": 24.0}, {"input": [24.0, -57.5], "expected": 24.0}, {"input": [24.0, -57.0], "expected": 24.0}, {"input": [24.0, -56.5], "expected": 24.0}, {"input": [24.0, -56.0], "expected": 24.0}, {"input": [24.0, -55.5], "expected": 24.0}, {"input": [24.0, -55.0], "expected": 24.0}, {"input": [24.0, -54.5], "expected": 24.0}, {"input": [24.0, -54.0], "expected": 24.0}, {"input": [24.0, -53.5], "expected": 24.0}, {"input": [24.0, -53.0], "expected": 24.0}, {"input": [24.0, -52.5], "expected": 24.0}, {"input": [24.0, -52.0], "expected": 24.0}, {"input": [24.0, -51.5], "expected": 24.0}, {"input": [24.0, -51.0], "expected": 24.0}, {"input": [24.0, -50.5], "expected": 24.0}, {"input": [24.0, -50.0], "expected": 24.0}, {"input": [24.0, -49.5], "expected": 24.0}, {"input": [24.0, -49.0], "expected": 24.0}, {"input": [24.0, -48.5], "expected": 24.0}, {"input": [24.0, -48.0], "expected": 24.0}, {"input": [24.0, -47.5], "expected": 24.0}, {"input": [24.0, -47.0], "expected": 24.0}, {"input": [24.0, -46.5], "expected": 24.0}, {"input": [24.0, -46.0], "expected": 24.0}, {"input": [24.0, -45.5], "expected": 24.0}, {"input": [24.0, -45.0], "expected": 24.0}, {"input": [24.0, -44.5], "expected": 24.0}, {"input": [24.0, -44.0], "expected": 24.0}, {"input": [24.0, -43.5], "expected": 24.0}, {"input": [24.0, -43.0], "expected": 24.0}, {"input": [24.0, -42.5], "expected": 24.0}, {"input": [24.0, -42.0], "expected": 24.0}, {"input": [24.0, -41.5], "expected": 24.0}, {"input": [24.0, -41.0], "expected": 24.0}, {"input": [24.0, -40.5], "expected": 24.0}, {"input": [24.0, -40.0], "expected": 24.0}, {"input": [24.0, -39.5], "expected": 24.0}, {"input": [24.0, -39.0], "expected": 24.0}, {"input": [24.0, -38.5], "expected": 24.0}, {"input": [24.0, -38.0], "expected": 24.0}, {"input": [24.0, -37.5], "expected": 24.0}, {"input": [24.0, -37.0], "expected": 24.0}, {"input": [24.0, -36.5], "expected": 24.0}, {"input": [24.0, -36.0], "expected": 24.0}, {"input": [24.0, -35.5], "expected": 24.0}, {"input": [24.0, -35.0], "expected": 24.0}, {"input": [24.0, -34.5], "expected": 24.0}, {"input": [24.0, -34.0], "expected": 24.0}, {"input": [24.0, -33.5], "expected": 24.0}, {"input": [24.0, -33.0], "expected": 24.0}, {"input": [24.0, -32.5], "expected": 24.0}, {"input": [24.0, -32.0], "expected": 24.0}, {"input": [24.0, -31.5], "expected": 24.0}, {"input": [24.0, -31.0], "expected": 24.0}, {"input": [24.0, -30.5], "expected": 24.0}, {"input": [24.0, -30.0], "expected": 24.0}, {"input": [24.0, -29.5], "expected": 24.0}, {"input": [24.0, -29.0], "expected": 24.0}, {"input": [24.0, -28.5], "expected": 24.0}, {"input": [24.0, -28.0], "expected": 24.0}, {"input": [24.0, -27.5], "expected": 24.0}, {"input": [24.0, -27.0], "expected": 24.0}, {"input": [24.0, -26.5], "expected": 24.0}, {"input": [24.0, -26.0], "expected": 24.0}, {"input": [24.0, -25.5], "expected": 24.0}, {"input": [24.0, -25.0], "expected": 24.0}, {"input": [24.0, -24.5], "expected": 24.0}, {"input": [24.0, -24.0], "expected": 24.0}, {"input": [24.0, -23.5], "expected": 24.0}, {"input": [24.0, -23.0], "expected": 24.0}, {"input": [24.0, -22.5], "expected": 24.0}, {"input": [24.0, -22.0], "expected": 24.0}, {"input": [24.0, -21.5], "expected": 24.0}, {"input": [24.0, -21.0], "expected": 24.0}, {"input": [24.0, -20.5], "expected": 24.0}, {"input": [24.0, -20.0], "expected": 24.0}, {"input": [24.0, -19.5], "expected": 24.0}, {"input": [24.0, -19.0], "expected": 24.0}, {"input": [24.0, -18.5], "expected": 24.0}, {"input": [24.0, -18.0], "expected": 24.0}, {"input": [24.0, -17.5], "expected": 24.0}, {"input": [24.0, -17.0], "expected": 24.0}, {"input": [24.0, -16.5], "expected": 24.0}, {"input": [24.0, -16.0], "expected": 24.0}, {"input": [24.0, -15.5], "expected": 24.0}, {"input": [24.0, -15.0], "expected": 24.0}, {"input": [24.0, -14.5], "expected": 24.0}, {"input": [24.0, -14.0], "expected": 24.0}, {"input": [24.0, -13.5], "expected": 24.0}, {"input": [24.0, -13.0], "expected": 24.0}, {"input": [24.0, -12.5], "expected": 24.0}, {"input": [24.0, -12.0], "expected": 24.0}, {"input": [24.0, -11.5], "expected": 24.0}, {"input": [24.0, -11.0], "expected": 24.0}, {"input": [24.0, -10.5], "expected": 24.0}, {"input": [24.0, -10.0], "expected": 24.0}, {"input": [24.0, -9.5], "expected": 24.000000000000004}, {"input": [24.0, -9.0], "expected": 24.000000000000004}, {"input": [24.0, -8.5], "expected": 24.000000000000007}, {"input": [24.0, -8.0], "expected": 24.000000000000014}, {"input": [24.0, -7.5], "expected": 24.00000000000002}, {"input": [24.0, -7.0], "expected": 24.000000000000036}, {"input": [24.0, -6.5], "expected": 24.000000000000057}, {"input": [24.0, -6.0], "expected": 24.000000000000092}, {"input": [24.0, -5.5], "expected": 24.000000000000153}, {"input": [24.0, -5.0], "expected": 24.000000000000256}, {"input": [24.0, -4.5], "expected": 24.00000000000042}, {"input": [24.0, -4.0], "expected": 24.000000000000693}, {"input": [24.0, -3.5], "expected": 24.00000000000114}, {"input": [24.0, -3.0], "expected": 24.00000000000188}, {"input": [24.0, -2.5], "expected": 24.000000000003098}, {"input": [24.0, -2.0], "expected": 24.00000000000511}, {"input": [24.0, -1.5], "expected": 24.000000000008423}, {"input": [24.0, -1.0], "expected": 24.000000000013888}, {"input": [24.0, -0.5], "expected": 24.000000000022897}, {"input": [24.0, 0.0], "expected": 24.00000000003775}, {"input": [24.0, 0.5], "expected": 24.00000000006224}, {"input": [24.0, 1.0], "expected": 24.00000000010262}, {"input": [24.0, 1.5], "expected": 24.00000000016919}, {"input": [24.0, 2.0], "expected": 24.00000000027895}, {"input": [24.0, 2.5], "expected": 24.000000000459906}, {"input": [24.0, 3.0], "expected": 24.000000000758256}, {"input": [24.0, 3.5], "expected": 24.000000001250154}, {"input": [24.0, 4.0], "expected": 24.000000002061153}, {"input": [24.0, 4.5], "expected": 24.000000003398267}, {"input": [24.0, 5.0], "expected": 24.000000005602796}, {"input": [24.0, 5.5], "expected": 24.00000000923745}, {"input": [24.0, 6.0], "expected": 24.00000001522998}, {"input": [24.0, 6.5], "expected": 24.00000002510999}, {"input": [24.0, 7.0], "expected": 24.000000041399375}, {"input": [24.0, 7.5], "expected": 24.000000068256032}, {"input": [24.0, 8.0], "expected": 24.00000011253517}, {"input": [24.0, 8.5], "expected": 24.00000018553912}, {"input": [24.0, 9.0], "expected": 24.000000305902272}, {"input": [24.0, 9.5], "expected": 24.000000504347536}, {"input": [24.0, 10.0], "expected": 24.000000831528375}, {"input": [24.0, 10.5], "expected": 24.000001370958145}, {"input": [24.0, 11.0], "expected": 24.000002260326852}, {"input": [24.0, 11.5], "expected": 24.000003726646227}, {"input": [24.0, 12.0], "expected": 24.000006144193478}, {"input": [24.0, 12.5], "expected": 24.00001013004229}, {"input": [24.0, 13.0], "expected": 24.000016701561318}, {"input": [24.0, 13.5], "expected": 24.000027536070228}, {"input": [24.0, 14.0], "expected": 24.000045398899218}, {"input": [24.0, 14.5], "expected": 24.00007484902863}, {"input": [24.0, 15.0], "expected": 24.000123402189722}, {"input": [24.0, 15.5], "expected": 24.000203447672128}, {"input": [24.0, 16.0], "expected": 24.000335406372894}, {"input": [24.0, 16.5], "expected": 24.00055293147536}, {"input": [24.0, 17.0], "expected": 24.000911466453775}, {"input": [24.0, 17.5], "expected": 24.001502310159754}, {"input": [24.0, 18.0], "expected": 24.002475685137732}, {"input": [24.0, 18.5], "expected": 24.004078443270572}, {"input": [24.0, 19.0], "expected": 24.006715348489116}, {"input": [24.0, 19.5], "expected": 24.011047744848593}, {"input": [24.0, 20.0], "expected": 24.01814992791781}, {"input": [24.0, 20.5], "expected": 24.02975041827262}, {"input": [24.0, 21.0], "expected": 24.048587351573744}, {"input": [24.0, 21.5], "expected": 24.07888973429255}, {"input": [24.0, 22.0], "expected": 24.126928011042974}, {"input": [24.0, 22.5], "expected": 24.201413277982752}, {"input": [24.0, 23.0], "expected": 24.313261687518224}, {"input": [24.0, 23.5], "expected": 24.47407698418011}, {"input": [24.0, 24.0], "expected": 24.693147180559944}, {"input": [24.0, 24.5], "expected": 24.97407698418011}, {"input": [24.0, 25.0], "expected": 25.313261687518224}, {"input": [24.0, 25.5], "expected": 25.701413277982752}, {"input": [24.0, 26.0], "expected": 26.126928011042974}, {"input": [24.0, 26.5], "expected": 26.57888973429255}, {"input": [24.0, 27.0], "expected": 27.048587351573744}, {"input": [24.0, 27.5], "expected": 27.52975041827262}, {"input": [24.0, 28.0], "expected": 28.01814992791781}, {"input": [24.0, 28.5], "expected": 28.511047744848593}, {"input": [24.0, 29.0], "expected": 29.006715348489116}, {"input": [24.0, 29.5], "expected": 29.504078443270572}, {"input": [24.0, 30.0], "expected": 30.002475685137732}, {"input": [24.0, 30.5], "expected": 30.501502310159754}, {"input": [24.0, 31.0], "expected": 31.000911466453775}, {"input": [24.0, 31.5], "expected": 31.50055293147536}, {"input": [24.0, 32.0], "expected": 32.0003354063729}, {"input": [24.0, 32.5], "expected": 32.50020344767213}, {"input": [24.0, 33.0], "expected": 33.00012340218972}, {"input": [24.0, 33.5], "expected": 33.50007484902863}, {"input": [24.0, 34.0], "expected": 34.00004539889922}, {"input": [24.0, 34.5], "expected": 34.50002753607023}, {"input": [24.0, 35.0], "expected": 35.00001670156132}, {"input": [24.0, 35.5], "expected": 35.50001013004229}, {"input": [24.0, 36.0], "expected": 36.00000614419348}, {"input": [24.0, 36.5], "expected": 36.50000372664623}, {"input": [24.0, 37.0], "expected": 37.00000226032685}, {"input": [24.0, 37.5], "expected": 37.500001370958145}, {"input": [24.0, 38.0], "expected": 38.000000831528375}, {"input": [24.0, 38.5], "expected": 38.50000050434753}, {"input": [24.0, 39.0], "expected": 39.000000305902276}, {"input": [24.0, 39.5], "expected": 39.50000018553912}, {"input": [24.0, 40.0], "expected": 40.00000011253517}, {"input": [24.0, 40.5], "expected": 40.50000006825603}, {"input": [24.0, 41.0], "expected": 41.000000041399375}, {"input": [24.0, 41.5], "expected": 41.50000002510999}, {"input": [24.0, 42.0], "expected": 42.00000001522998}, {"input": [24.0, 42.5], "expected": 42.500000009237446}, {"input": [24.0, 43.0], "expected": 43.00000000560279}, {"input": [24.0, 43.5], "expected": 43.50000000339827}, {"input": [24.0, 44.0], "expected": 44.00000000206116}, {"input": [24.0, 44.5], "expected": 44.50000000125015}, {"input": [24.0, 45.0], "expected": 45.000000000758256}, {"input": [24.0, 45.5], "expected": 45.500000000459906}, {"input": [24.0, 46.0], "expected": 46.000000000278945}, {"input": [24.0, 46.5], "expected": 46.50000000016919}, {"input": [24.0, 47.0], "expected": 47.00000000010262}, {"input": [24.0, 47.5], "expected": 47.50000000006224}, {"input": [24.0, 48.0], "expected": 48.00000000003775}, {"input": [24.0, 48.5], "expected": 48.5000000000229}, {"input": [24.0, 49.0], "expected": 49.00000000001389}, {"input": [24.0, 49.5], "expected": 49.50000000000842}, {"input": [24.0, 50.0], "expected": 50.00000000000511}, {"input": [24.0, 50.5], "expected": 50.5000000000031}, {"input": [24.0, 51.0], "expected": 51.00000000000188}, {"input": [24.0, 51.5], "expected": 51.50000000000114}, {"input": [24.0, 52.0], "expected": 52.00000000000069}, {"input": [24.0, 52.5], "expected": 52.50000000000042}, {"input": [24.0, 53.0], "expected": 53.000000000000256}, {"input": [24.0, 53.5], "expected": 53.500000000000156}, {"input": [24.0, 54.0], "expected": 54.00000000000009}, {"input": [24.0, 54.5], "expected": 54.50000000000006}, {"input": [24.0, 55.0], "expected": 55.000000000000036}, {"input": [24.0, 55.5], "expected": 55.50000000000002}, {"input": [24.0, 56.0], "expected": 56.000000000000014}, {"input": [24.0, 56.5], "expected": 56.50000000000001}, {"input": [24.0, 57.0], "expected": 57.00000000000001}, {"input": [24.0, 57.5], "expected": 57.5}, {"input": [24.0, 58.0], "expected": 58.0}, {"input": [24.0, 58.5], "expected": 58.5}, {"input": [24.0, 59.0], "expected": 59.0}, {"input": [24.0, 59.5], "expected": 59.5}, {"input": [24.0, 60.0], "expected": 60.0}, {"input": [24.0, 60.5], "expected": 60.5}, {"input": [24.0, 61.0], "expected": 61.0}, {"input": [24.0, 61.5], "expected": 61.5}, {"input": [24.0, 62.0], "expected": 62.0}, {"input": [24.0, 62.5], "expected": 62.5}, {"input": [24.0, 63.0], "expected": 63.0}, {"input": [24.0, 63.5], "expected": 63.5}, {"input": [24.0, 64.0], "expected": 64.0}, {"input": [24.0, 64.5], "expected": 64.5}, {"input": [24.0, 65.0], "expected": 65.0}, {"input": [24.0, 65.5], "expected": 65.5}, {"input": [24.0, 66.0], "expected": 66.0}, {"input": [24.0, 66.5], "expected": 66.5}, {"input": [24.0, 67.0], "expected": 67.0}, {"input": [24.0, 67.5], "expected": 67.5}, {"input": [24.0, 68.0], "expected": 68.0}, {"input": [24.0, 68.5], "expected": 68.5}, {"input": [24.0, 69.0], "expected": 69.0}, {"input": [24.0, 69.5], "expected": 69.5}, {"input": [24.0, 70.0], "expected": 70.0}, {"input": [24.0, 70.5], "expected": 70.5}, {"input": [24.0, 71.0], "expected": 71.0}, {"input": [24.0, 71.5], "expected": 71.5}, {"input": [24.0, 72.0], "expected": 72.0}, {"input": [24.0, 72.5], "expected": 72.5}, {"input": [24.0, 73.0], "expected": 73.0}, {"input": [24.0, 73.5], "expected": 73.5}, {"input": [24.0, 74.0], "expected": 74.0}, {"input": [24.0, 74.5], "expected": 74.5}, {"input": [24.0, 75.0], "expected": 75.0}, {"input": [24.0, 75.5], "expected": 75.5}, {"input": [24.0, 76.0], "expected": 76.0}, {"input": [24.0, 76.5], "expected": 76.5}, {"input": [24.0, 77.0], "expected": 77.0}, {"input": [24.0, 77.5], "expected": 77.5}, {"input": [24.0, 78.0], "expected": 78.0}, {"input": [24.0, 78.5], "expected": 78.5}, {"input": [24.0, 79.0], "expected": 79.0}, {"input": [24.0, 79.5], "expected": 79.5}, {"input": [24.0, 80.0], "expected": 80.0}, {"input": [24.0, 80.5], "expected": 80.5}, {"input": [24.0, 81.0], "expected": 81.0}, {"input": [24.0, 81.5], "expected": 81.5}, {"input": [24.0, 82.0], "expected": 82.0}, {"input": [24.0, 82.5], "expected": 82.5}, {"input": [24.0, 83.0], "expected": 83.0}, {"input": [24.0, 83.5], "expected": 83.5}, {"input": [24.0, 84.0], "expected": 84.0}, {"input": [24.0, 84.5], "expected": 84.5}, {"input": [24.0, 85.0], "expected": 85.0}, {"input": [24.0, 85.5], "expected": 85.5}, {"input": [24.0, 86.0], "expected": 86.0}, {"input": [24.0, 86.5], "expected": 86.5}, {"input": [24.0, 87.0], "expected": 87.0}, {"input": [24.0, 87.5], "expected": 87.5}, {"input": [24.0, 88.0], "expected": 88.0}, {"input": [24.0, 88.5], "expected": 88.5}, {"input": [24.0, 89.0], "expected": 89.0}, {"input": [24.0, 89.5], "expected": 89.5}, {"input": [24.0, 90.0], "expected": 90.0}, {"input": [24.0, 90.5], "expected": 90.5}, {"input": [24.0, 91.0], "expected": 91.0}, {"input": [24.0, 91.5], "expected": 91.5}, {"input": [24.0, 92.0], "expected": 92.0}, {"input": [24.0, 92.5], "expected": 92.5}, {"input": [24.0, 93.0], "expected": 93.0}, {"input": [24.0, 93.5], "expected": 93.5}, {"input": [24.0, 94.0], "expected": 94.0}, {"input": [24.0, 94.5], "expected": 94.5}, {"input": [24.0, 95.0], "expected": 95.0}, {"input": [24.0, 95.5], "expected": 95.5}, {"input": [24.0, 96.0], "expected": 96.0}, {"input": [24.0, 96.5], "expected": 96.5}, {"input": [24.0, 97.0], "expected": 97.0}, {"input": [24.0, 97.5], "expected": 97.5}, {"input": [24.0, 98.0], "expected": 98.0}, {"input": [24.0, 98.5], "expected": 98.5}, {"input": [24.0, 99.0], "expected": 99.0}, {"input": [24.0, 99.5], "expected": 99.5}, {"input": [24.5, -100.0], "expected": 24.5}, {"input": [24.5, -99.5], "expected": 24.5}, {"input": [24.5, -99.0], "expected": 24.5}, {"input": [24.5, -98.5], "expected": 24.5}, {"input": [24.5, -98.0], "expected": 24.5}, {"input": [24.5, -97.5], "expected": 24.5}, {"input": [24.5, -97.0], "expected": 24.5}, {"input": [24.5, -96.5], "expected": 24.5}, {"input": [24.5, -96.0], "expected": 24.5}, {"input": [24.5, -95.5], "expected": 24.5}, {"input": [24.5, -95.0], "expected": 24.5}, {"input": [24.5, -94.5], "expected": 24.5}, {"input": [24.5, -94.0], "expected": 24.5}, {"input": [24.5, -93.5], "expected": 24.5}, {"input": [24.5, -93.0], "expected": 24.5}, {"input": [24.5, -92.5], "expected": 24.5}, {"input": [24.5, -92.0], "expected": 24.5}, {"input": [24.5, -91.5], "expected": 24.5}, {"input": [24.5, -91.0], "expected": 24.5}, {"input": [24.5, -90.5], "expected": 24.5}, {"input": [24.5, -90.0], "expected": 24.5}, {"input": [24.5, -89.5], "expected": 24.5}, {"input": [24.5, -89.0], "expected": 24.5}, {"input": [24.5, -88.5], "expected": 24.5}, {"input": [24.5, -88.0], "expected": 24.5}, {"input": [24.5, -87.5], "expected": 24.5}, {"input": [24.5, -87.0], "expected": 24.5}, {"input": [24.5, -86.5], "expected": 24.5}, {"input": [24.5, -86.0], "expected": 24.5}, {"input": [24.5, -85.5], "expected": 24.5}, {"input": [24.5, -85.0], "expected": 24.5}, {"input": [24.5, -84.5], "expected": 24.5}, {"input": [24.5, -84.0], "expected": 24.5}, {"input": [24.5, -83.5], "expected": 24.5}, {"input": [24.5, -83.0], "expected": 24.5}, {"input": [24.5, -82.5], "expected": 24.5}, {"input": [24.5, -82.0], "expected": 24.5}, {"input": [24.5, -81.5], "expected": 24.5}, {"input": [24.5, -81.0], "expected": 24.5}, {"input": [24.5, -80.5], "expected": 24.5}, {"input": [24.5, -80.0], "expected": 24.5}, {"input": [24.5, -79.5], "expected": 24.5}, {"input": [24.5, -79.0], "expected": 24.5}, {"input": [24.5, -78.5], "expected": 24.5}, {"input": [24.5, -78.0], "expected": 24.5}, {"input": [24.5, -77.5], "expected": 24.5}, {"input": [24.5, -77.0], "expected": 24.5}, {"input": [24.5, -76.5], "expected": 24.5}, {"input": [24.5, -76.0], "expected": 24.5}, {"input": [24.5, -75.5], "expected": 24.5}, {"input": [24.5, -75.0], "expected": 24.5}, {"input": [24.5, -74.5], "expected": 24.5}, {"input": [24.5, -74.0], "expected": 24.5}, {"input": [24.5, -73.5], "expected": 24.5}, {"input": [24.5, -73.0], "expected": 24.5}, {"input": [24.5, -72.5], "expected": 24.5}, {"input": [24.5, -72.0], "expected": 24.5}, {"input": [24.5, -71.5], "expected": 24.5}, {"input": [24.5, -71.0], "expected": 24.5}, {"input": [24.5, -70.5], "expected": 24.5}, {"input": [24.5, -70.0], "expected": 24.5}, {"input": [24.5, -69.5], "expected": 24.5}, {"input": [24.5, -69.0], "expected": 24.5}, {"input": [24.5, -68.5], "expected": 24.5}, {"input": [24.5, -68.0], "expected": 24.5}, {"input": [24.5, -67.5], "expected": 24.5}, {"input": [24.5, -67.0], "expected": 24.5}, {"input": [24.5, -66.5], "expected": 24.5}, {"input": [24.5, -66.0], "expected": 24.5}, {"input": [24.5, -65.5], "expected": 24.5}, {"input": [24.5, -65.0], "expected": 24.5}, {"input": [24.5, -64.5], "expected": 24.5}, {"input": [24.5, -64.0], "expected": 24.5}, {"input": [24.5, -63.5], "expected": 24.5}, {"input": [24.5, -63.0], "expected": 24.5}, {"input": [24.5, -62.5], "expected": 24.5}, {"input": [24.5, -62.0], "expected": 24.5}, {"input": [24.5, -61.5], "expected": 24.5}, {"input": [24.5, -61.0], "expected": 24.5}, {"input": [24.5, -60.5], "expected": 24.5}, {"input": [24.5, -60.0], "expected": 24.5}, {"input": [24.5, -59.5], "expected": 24.5}, {"input": [24.5, -59.0], "expected": 24.5}, {"input": [24.5, -58.5], "expected": 24.5}, {"input": [24.5, -58.0], "expected": 24.5}, {"input": [24.5, -57.5], "expected": 24.5}, {"input": [24.5, -57.0], "expected": 24.5}, {"input": [24.5, -56.5], "expected": 24.5}, {"input": [24.5, -56.0], "expected": 24.5}, {"input": [24.5, -55.5], "expected": 24.5}, {"input": [24.5, -55.0], "expected": 24.5}, {"input": [24.5, -54.5], "expected": 24.5}, {"input": [24.5, -54.0], "expected": 24.5}, {"input": [24.5, -53.5], "expected": 24.5}, {"input": [24.5, -53.0], "expected": 24.5}, {"input": [24.5, -52.5], "expected": 24.5}, {"input": [24.5, -52.0], "expected": 24.5}, {"input": [24.5, -51.5], "expected": 24.5}, {"input": [24.5, -51.0], "expected": 24.5}, {"input": [24.5, -50.5], "expected": 24.5}, {"input": [24.5, -50.0], "expected": 24.5}, {"input": [24.5, -49.5], "expected": 24.5}, {"input": [24.5, -49.0], "expected": 24.5}, {"input": [24.5, -48.5], "expected": 24.5}, {"input": [24.5, -48.0], "expected": 24.5}, {"input": [24.5, -47.5], "expected": 24.5}, {"input": [24.5, -47.0], "expected": 24.5}, {"input": [24.5, -46.5], "expected": 24.5}, {"input": [24.5, -46.0], "expected": 24.5}, {"input": [24.5, -45.5], "expected": 24.5}, {"input": [24.5, -45.0], "expected": 24.5}, {"input": [24.5, -44.5], "expected": 24.5}, {"input": [24.5, -44.0], "expected": 24.5}, {"input": [24.5, -43.5], "expected": 24.5}, {"input": [24.5, -43.0], "expected": 24.5}, {"input": [24.5, -42.5], "expected": 24.5}, {"input": [24.5, -42.0], "expected": 24.5}, {"input": [24.5, -41.5], "expected": 24.5}, {"input": [24.5, -41.0], "expected": 24.5}, {"input": [24.5, -40.5], "expected": 24.5}, {"input": [24.5, -40.0], "expected": 24.5}, {"input": [24.5, -39.5], "expected": 24.5}, {"input": [24.5, -39.0], "expected": 24.5}, {"input": [24.5, -38.5], "expected": 24.5}, {"input": [24.5, -38.0], "expected": 24.5}, {"input": [24.5, -37.5], "expected": 24.5}, {"input": [24.5, -37.0], "expected": 24.5}, {"input": [24.5, -36.5], "expected": 24.5}, {"input": [24.5, -36.0], "expected": 24.5}, {"input": [24.5, -35.5], "expected": 24.5}, {"input": [24.5, -35.0], "expected": 24.5}, {"input": [24.5, -34.5], "expected": 24.5}, {"input": [24.5, -34.0], "expected": 24.5}, {"input": [24.5, -33.5], "expected": 24.5}, {"input": [24.5, -33.0], "expected": 24.5}, {"input": [24.5, -32.5], "expected": 24.5}, {"input": [24.5, -32.0], "expected": 24.5}, {"input": [24.5, -31.5], "expected": 24.5}, {"input": [24.5, -31.0], "expected": 24.5}, {"input": [24.5, -30.5], "expected": 24.5}, {"input": [24.5, -30.0], "expected": 24.5}, {"input": [24.5, -29.5], "expected": 24.5}, {"input": [24.5, -29.0], "expected": 24.5}, {"input": [24.5, -28.5], "expected": 24.5}, {"input": [24.5, -28.0], "expected": 24.5}, {"input": [24.5, -27.5], "expected": 24.5}, {"input": [24.5, -27.0], "expected": 24.5}, {"input": [24.5, -26.5], "expected": 24.5}, {"input": [24.5, -26.0], "expected": 24.5}, {"input": [24.5, -25.5], "expected": 24.5}, {"input": [24.5, -25.0], "expected": 24.5}, {"input": [24.5, -24.5], "expected": 24.5}, {"input": [24.5, -24.0], "expected": 24.5}, {"input": [24.5, -23.5], "expected": 24.5}, {"input": [24.5, -23.0], "expected": 24.5}, {"input": [24.5, -22.5], "expected": 24.5}, {"input": [24.5, -22.0], "expected": 24.5}, {"input": [24.5, -21.5], "expected": 24.5}, {"input": [24.5, -21.0], "expected": 24.5}, {"input": [24.5, -20.5], "expected": 24.5}, {"input": [24.5, -20.0], "expected": 24.5}, {"input": [24.5, -19.5], "expected": 24.5}, {"input": [24.5, -19.0], "expected": 24.5}, {"input": [24.5, -18.5], "expected": 24.5}, {"input": [24.5, -18.0], "expected": 24.5}, {"input": [24.5, -17.5], "expected": 24.5}, {"input": [24.5, -17.0], "expected": 24.5}, {"input": [24.5, -16.5], "expected": 24.5}, {"input": [24.5, -16.0], "expected": 24.5}, {"input": [24.5, -15.5], "expected": 24.5}, {"input": [24.5, -15.0], "expected": 24.5}, {"input": [24.5, -14.5], "expected": 24.5}, {"input": [24.5, -14.0], "expected": 24.5}, {"input": [24.5, -13.5], "expected": 24.5}, {"input": [24.5, -13.0], "expected": 24.5}, {"input": [24.5, -12.5], "expected": 24.5}, {"input": [24.5, -12.0], "expected": 24.5}, {"input": [24.5, -11.5], "expected": 24.5}, {"input": [24.5, -11.0], "expected": 24.5}, {"input": [24.5, -10.5], "expected": 24.5}, {"input": [24.5, -10.0], "expected": 24.5}, {"input": [24.5, -9.5], "expected": 24.5}, {"input": [24.5, -9.0], "expected": 24.500000000000004}, {"input": [24.5, -8.5], "expected": 24.500000000000004}, {"input": [24.5, -8.0], "expected": 24.500000000000007}, {"input": [24.5, -7.5], "expected": 24.500000000000014}, {"input": [24.5, -7.0], "expected": 24.50000000000002}, {"input": [24.5, -6.5], "expected": 24.500000000000036}, {"input": [24.5, -6.0], "expected": 24.500000000000057}, {"input": [24.5, -5.5], "expected": 24.500000000000092}, {"input": [24.5, -5.0], "expected": 24.500000000000153}, {"input": [24.5, -4.5], "expected": 24.500000000000256}, {"input": [24.5, -4.0], "expected": 24.50000000000042}, {"input": [24.5, -3.5], "expected": 24.500000000000693}, {"input": [24.5, -3.0], "expected": 24.50000000000114}, {"input": [24.5, -2.5], "expected": 24.50000000000188}, {"input": [24.5, -2.0], "expected": 24.500000000003098}, {"input": [24.5, -1.5], "expected": 24.50000000000511}, {"input": [24.5, -1.0], "expected": 24.500000000008423}, {"input": [24.5, -0.5], "expected": 24.500000000013888}, {"input": [24.5, 0.0], "expected": 24.500000000022897}, {"input": [24.5, 0.5], "expected": 24.50000000003775}, {"input": [24.5, 1.0], "expected": 24.50000000006224}, {"input": [24.5, 1.5], "expected": 24.50000000010262}, {"input": [24.5, 2.0], "expected": 24.50000000016919}, {"input": [24.5, 2.5], "expected": 24.50000000027895}, {"input": [24.5, 3.0], "expected": 24.500000000459906}, {"input": [24.5, 3.5], "expected": 24.500000000758256}, {"input": [24.5, 4.0], "expected": 24.500000001250154}, {"input": [24.5, 4.5], "expected": 24.500000002061153}, {"input": [24.5, 5.0], "expected": 24.500000003398267}, {"input": [24.5, 5.5], "expected": 24.500000005602796}, {"input": [24.5, 6.0], "expected": 24.50000000923745}, {"input": [24.5, 6.5], "expected": 24.50000001522998}, {"input": [24.5, 7.0], "expected": 24.50000002510999}, {"input": [24.5, 7.5], "expected": 24.500000041399375}, {"input": [24.5, 8.0], "expected": 24.500000068256032}, {"input": [24.5, 8.5], "expected": 24.50000011253517}, {"input": [24.5, 9.0], "expected": 24.50000018553912}, {"input": [24.5, 9.5], "expected": 24.500000305902272}, {"input": [24.5, 10.0], "expected": 24.500000504347536}, {"input": [24.5, 10.5], "expected": 24.500000831528375}, {"input": [24.5, 11.0], "expected": 24.500001370958145}, {"input": [24.5, 11.5], "expected": 24.500002260326852}, {"input": [24.5, 12.0], "expected": 24.500003726646227}, {"input": [24.5, 12.5], "expected": 24.500006144193478}, {"input": [24.5, 13.0], "expected": 24.50001013004229}, {"input": [24.5, 13.5], "expected": 24.500016701561318}, {"input": [24.5, 14.0], "expected": 24.500027536070228}, {"input": [24.5, 14.5], "expected": 24.500045398899218}, {"input": [24.5, 15.0], "expected": 24.50007484902863}, {"input": [24.5, 15.5], "expected": 24.500123402189722}, {"input": [24.5, 16.0], "expected": 24.500203447672128}, {"input": [24.5, 16.5], "expected": 24.500335406372894}, {"input": [24.5, 17.0], "expected": 24.50055293147536}, {"input": [24.5, 17.5], "expected": 24.500911466453775}, {"input": [24.5, 18.0], "expected": 24.501502310159754}, {"input": [24.5, 18.5], "expected": 24.502475685137732}, {"input": [24.5, 19.0], "expected": 24.504078443270572}, {"input": [24.5, 19.5], "expected": 24.506715348489116}, {"input": [24.5, 20.0], "expected": 24.511047744848593}, {"input": [24.5, 20.5], "expected": 24.51814992791781}, {"input": [24.5, 21.0], "expected": 24.52975041827262}, {"input": [24.5, 21.5], "expected": 24.548587351573744}, {"input": [24.5, 22.0], "expected": 24.57888973429255}, {"input": [24.5, 22.5], "expected": 24.626928011042974}, {"input": [24.5, 23.0], "expected": 24.701413277982752}, {"input": [24.5, 23.5], "expected": 24.813261687518224}, {"input": [24.5, 24.0], "expected": 24.97407698418011}, {"input": [24.5, 24.5], "expected": 25.193147180559944}, {"input": [24.5, 25.0], "expected": 25.47407698418011}, {"input": [24.5, 25.5], "expected": 25.813261687518224}, {"input": [24.5, 26.0], "expected": 26.201413277982752}, {"input": [24.5, 26.5], "expected": 26.626928011042974}, {"input": [24.5, 27.0], "expected": 27.07888973429255}, {"input": [24.5, 27.5], "expected": 27.548587351573744}, {"input": [24.5, 28.0], "expected": 28.02975041827262}, {"input": [24.5, 28.5], "expected": 28.51814992791781}, {"input": [24.5, 29.0], "expected": 29.011047744848593}, {"input": [24.5, 29.5], "expected": 29.506715348489116}, {"input": [24.5, 30.0], "expected": 30.004078443270572}, {"input": [24.5, 30.5], "expected": 30.502475685137732}, {"input": [24.5, 31.0], "expected": 31.001502310159754}, {"input": [24.5, 31.5], "expected": 31.500911466453775}, {"input": [24.5, 32.0], "expected": 32.00055293147536}, {"input": [24.5, 32.5], "expected": 32.5003354063729}, {"input": [24.5, 33.0], "expected": 33.00020344767213}, {"input": [24.5, 33.5], "expected": 33.50012340218972}, {"input": [24.5, 34.0], "expected": 34.00007484902863}, {"input": [24.5, 34.5], "expected": 34.50004539889922}, {"input": [24.5, 35.0], "expected": 35.00002753607023}, {"input": [24.5, 35.5], "expected": 35.50001670156132}, {"input": [24.5, 36.0], "expected": 36.00001013004229}, {"input": [24.5, 36.5], "expected": 36.50000614419348}, {"input": [24.5, 37.0], "expected": 37.00000372664623}, {"input": [24.5, 37.5], "expected": 37.50000226032685}, {"input": [24.5, 38.0], "expected": 38.000001370958145}, {"input": [24.5, 38.5], "expected": 38.500000831528375}, {"input": [24.5, 39.0], "expected": 39.00000050434753}, {"input": [24.5, 39.5], "expected": 39.500000305902276}, {"input": [24.5, 40.0], "expected": 40.00000018553912}, {"input": [24.5, 40.5], "expected": 40.50000011253517}, {"input": [24.5, 41.0], "expected": 41.00000006825603}, {"input": [24.5, 41.5], "expected": 41.500000041399375}, {"input": [24.5, 42.0], "expected": 42.00000002510999}, {"input": [24.5, 42.5], "expected": 42.50000001522998}, {"input": [24.5, 43.0], "expected": 43.000000009237446}, {"input": [24.5, 43.5], "expected": 43.50000000560279}, {"input": [24.5, 44.0], "expected": 44.00000000339827}, {"input": [24.5, 44.5], "expected": 44.50000000206116}, {"input": [24.5, 45.0], "expected": 45.00000000125015}, {"input": [24.5, 45.5], "expected": 45.500000000758256}, {"input": [24.5, 46.0], "expected": 46.000000000459906}, {"input": [24.5, 46.5], "expected": 46.500000000278945}, {"input": [24.5, 47.0], "expected": 47.00000000016919}, {"input": [24.5, 47.5], "expected": 47.50000000010262}, {"input": [24.5, 48.0], "expected": 48.00000000006224}, {"input": [24.5, 48.5], "expected": 48.50000000003775}, {"input": [24.5, 49.0], "expected": 49.0000000000229}, {"input": [24.5, 49.5], "expected": 49.50000000001389}, {"input": [24.5, 50.0], "expected": 50.00000000000842}, {"input": [24.5, 50.5], "expected": 50.50000000000511}, {"input": [24.5, 51.0], "expected": 51.0000000000031}, {"input": [24.5, 51.5], "expected": 51.50000000000188}, {"input": [24.5, 52.0], "expected": 52.00000000000114}, {"input": [24.5, 52.5], "expected": 52.50000000000069}, {"input": [24.5, 53.0], "expected": 53.00000000000042}, {"input": [24.5, 53.5], "expected": 53.500000000000256}, {"input": [24.5, 54.0], "expected": 54.000000000000156}, {"input": [24.5, 54.5], "expected": 54.50000000000009}, {"input": [24.5, 55.0], "expected": 55.00000000000006}, {"input": [24.5, 55.5], "expected": 55.500000000000036}, {"input": [24.5, 56.0], "expected": 56.00000000000002}, {"input": [24.5, 56.5], "expected": 56.500000000000014}, {"input": [24.5, 57.0], "expected": 57.00000000000001}, {"input": [24.5, 57.5], "expected": 57.50000000000001}, {"input": [24.5, 58.0], "expected": 58.0}, {"input": [24.5, 58.5], "expected": 58.5}, {"input": [24.5, 59.0], "expected": 59.0}, {"input": [24.5, 59.5], "expected": 59.5}, {"input": [24.5, 60.0], "expected": 60.0}, {"input": [24.5, 60.5], "expected": 60.5}, {"input": [24.5, 61.0], "expected": 61.0}, {"input": [24.5, 61.5], "expected": 61.5}, {"input": [24.5, 62.0], "expected": 62.0}, {"input": [24.5, 62.5], "expected": 62.5}, {"input": [24.5, 63.0], "expected": 63.0}, {"input": [24.5, 63.5], "expected": 63.5}, {"input": [24.5, 64.0], "expected": 64.0}, {"input": [24.5, 64.5], "expected": 64.5}, {"input": [24.5, 65.0], "expected": 65.0}, {"input": [24.5, 65.5], "expected": 65.5}, {"input": [24.5, 66.0], "expected": 66.0}, {"input": [24.5, 66.5], "expected": 66.5}, {"input": [24.5, 67.0], "expected": 67.0}, {"input": [24.5, 67.5], "expected": 67.5}, {"input": [24.5, 68.0], "expected": 68.0}, {"input": [24.5, 68.5], "expected": 68.5}, {"input": [24.5, 69.0], "expected": 69.0}, {"input": [24.5, 69.5], "expected": 69.5}, {"input": [24.5, 70.0], "expected": 70.0}, {"input": [24.5, 70.5], "expected": 70.5}, {"input": [24.5, 71.0], "expected": 71.0}, {"input": [24.5, 71.5], "expected": 71.5}, {"input": [24.5, 72.0], "expected": 72.0}, {"input": [24.5, 72.5], "expected": 72.5}, {"input": [24.5, 73.0], "expected": 73.0}, {"input": [24.5, 73.5], "expected": 73.5}, {"input": [24.5, 74.0], "expected": 74.0}, {"input": [24.5, 74.5], "expected": 74.5}, {"input": [24.5, 75.0], "expected": 75.0}, {"input": [24.5, 75.5], "expected": 75.5}, {"input": [24.5, 76.0], "expected": 76.0}, {"input": [24.5, 76.5], "expected": 76.5}, {"input": [24.5, 77.0], "expected": 77.0}, {"input": [24.5, 77.5], "expected": 77.5}, {"input": [24.5, 78.0], "expected": 78.0}, {"input": [24.5, 78.5], "expected": 78.5}, {"input": [24.5, 79.0], "expected": 79.0}, {"input": [24.5, 79.5], "expected": 79.5}, {"input": [24.5, 80.0], "expected": 80.0}, {"input": [24.5, 80.5], "expected": 80.5}, {"input": [24.5, 81.0], "expected": 81.0}, {"input": [24.5, 81.5], "expected": 81.5}, {"input": [24.5, 82.0], "expected": 82.0}, {"input": [24.5, 82.5], "expected": 82.5}, {"input": [24.5, 83.0], "expected": 83.0}, {"input": [24.5, 83.5], "expected": 83.5}, {"input": [24.5, 84.0], "expected": 84.0}, {"input": [24.5, 84.5], "expected": 84.5}, {"input": [24.5, 85.0], "expected": 85.0}, {"input": [24.5, 85.5], "expected": 85.5}, {"input": [24.5, 86.0], "expected": 86.0}, {"input": [24.5, 86.5], "expected": 86.5}, {"input": [24.5, 87.0], "expected": 87.0}, {"input": [24.5, 87.5], "expected": 87.5}, {"input": [24.5, 88.0], "expected": 88.0}, {"input": [24.5, 88.5], "expected": 88.5}, {"input": [24.5, 89.0], "expected": 89.0}, {"input": [24.5, 89.5], "expected": 89.5}, {"input": [24.5, 90.0], "expected": 90.0}, {"input": [24.5, 90.5], "expected": 90.5}, {"input": [24.5, 91.0], "expected": 91.0}, {"input": [24.5, 91.5], "expected": 91.5}, {"input": [24.5, 92.0], "expected": 92.0}, {"input": [24.5, 92.5], "expected": 92.5}, {"input": [24.5, 93.0], "expected": 93.0}, {"input": [24.5, 93.5], "expected": 93.5}, {"input": [24.5, 94.0], "expected": 94.0}, {"input": [24.5, 94.5], "expected": 94.5}, {"input": [24.5, 95.0], "expected": 95.0}, {"input": [24.5, 95.5], "expected": 95.5}, {"input": [24.5, 96.0], "expected": 96.0}, {"input": [24.5, 96.5], "expected": 96.5}, {"input": [24.5, 97.0], "expected": 97.0}, {"input": [24.5, 97.5], "expected": 97.5}, {"input": [24.5, 98.0], "expected": 98.0}, {"input": [24.5, 98.5], "expected": 98.5}, {"input": [24.5, 99.0], "expected": 99.0}, {"input": [24.5, 99.5], "expected": 99.5}, {"input": [25.0, -100.0], "expected": 25.0}, {"input": [25.0, -99.5], "expected": 25.0}, {"input": [25.0, -99.0], "expected": 25.0}, {"input": [25.0, -98.5], "expected": 25.0}, {"input": [25.0, -98.0], "expected": 25.0}, {"input": [25.0, -97.5], "expected": 25.0}, {"input": [25.0, -97.0], "expected": 25.0}, {"input": [25.0, -96.5], "expected": 25.0}, {"input": [25.0, -96.0], "expected": 25.0}, {"input": [25.0, -95.5], "expected": 25.0}, {"input": [25.0, -95.0], "expected": 25.0}, {"input": [25.0, -94.5], "expected": 25.0}, {"input": [25.0, -94.0], "expected": 25.0}, {"input": [25.0, -93.5], "expected": 25.0}, {"input": [25.0, -93.0], "expected": 25.0}, {"input": [25.0, -92.5], "expected": 25.0}, {"input": [25.0, -92.0], "expected": 25.0}, {"input": [25.0, -91.5], "expected": 25.0}, {"input": [25.0, -91.0], "expected": 25.0}, {"input": [25.0, -90.5], "expected": 25.0}, {"input": [25.0, -90.0], "expected": 25.0}, {"input": [25.0, -89.5], "expected": 25.0}, {"input": [25.0, -89.0], "expected": 25.0}, {"input": [25.0, -88.5], "expected": 25.0}, {"input": [25.0, -88.0], "expected": 25.0}, {"input": [25.0, -87.5], "expected": 25.0}, {"input": [25.0, -87.0], "expected": 25.0}, {"input": [25.0, -86.5], "expected": 25.0}, {"input": [25.0, -86.0], "expected": 25.0}, {"input": [25.0, -85.5], "expected": 25.0}, {"input": [25.0, -85.0], "expected": 25.0}, {"input": [25.0, -84.5], "expected": 25.0}, {"input": [25.0, -84.0], "expected": 25.0}, {"input": [25.0, -83.5], "expected": 25.0}, {"input": [25.0, -83.0], "expected": 25.0}, {"input": [25.0, -82.5], "expected": 25.0}, {"input": [25.0, -82.0], "expected": 25.0}, {"input": [25.0, -81.5], "expected": 25.0}, {"input": [25.0, -81.0], "expected": 25.0}, {"input": [25.0, -80.5], "expected": 25.0}, {"input": [25.0, -80.0], "expected": 25.0}, {"input": [25.0, -79.5], "expected": 25.0}, {"input": [25.0, -79.0], "expected": 25.0}, {"input": [25.0, -78.5], "expected": 25.0}, {"input": [25.0, -78.0], "expected": 25.0}, {"input": [25.0, -77.5], "expected": 25.0}, {"input": [25.0, -77.0], "expected": 25.0}, {"input": [25.0, -76.5], "expected": 25.0}, {"input": [25.0, -76.0], "expected": 25.0}, {"input": [25.0, -75.5], "expected": 25.0}, {"input": [25.0, -75.0], "expected": 25.0}, {"input": [25.0, -74.5], "expected": 25.0}, {"input": [25.0, -74.0], "expected": 25.0}, {"input": [25.0, -73.5], "expected": 25.0}, {"input": [25.0, -73.0], "expected": 25.0}, {"input": [25.0, -72.5], "expected": 25.0}, {"input": [25.0, -72.0], "expected": 25.0}, {"input": [25.0, -71.5], "expected": 25.0}, {"input": [25.0, -71.0], "expected": 25.0}, {"input": [25.0, -70.5], "expected": 25.0}, {"input": [25.0, -70.0], "expected": 25.0}, {"input": [25.0, -69.5], "expected": 25.0}, {"input": [25.0, -69.0], "expected": 25.0}, {"input": [25.0, -68.5], "expected": 25.0}, {"input": [25.0, -68.0], "expected": 25.0}, {"input": [25.0, -67.5], "expected": 25.0}, {"input": [25.0, -67.0], "expected": 25.0}, {"input": [25.0, -66.5], "expected": 25.0}, {"input": [25.0, -66.0], "expected": 25.0}, {"input": [25.0, -65.5], "expected": 25.0}, {"input": [25.0, -65.0], "expected": 25.0}, {"input": [25.0, -64.5], "expected": 25.0}, {"input": [25.0, -64.0], "expected": 25.0}, {"input": [25.0, -63.5], "expected": 25.0}, {"input": [25.0, -63.0], "expected": 25.0}, {"input": [25.0, -62.5], "expected": 25.0}, {"input": [25.0, -62.0], "expected": 25.0}, {"input": [25.0, -61.5], "expected": 25.0}, {"input": [25.0, -61.0], "expected": 25.0}, {"input": [25.0, -60.5], "expected": 25.0}, {"input": [25.0, -60.0], "expected": 25.0}, {"input": [25.0, -59.5], "expected": 25.0}, {"input": [25.0, -59.0], "expected": 25.0}, {"input": [25.0, -58.5], "expected": 25.0}, {"input": [25.0, -58.0], "expected": 25.0}, {"input": [25.0, -57.5], "expected": 25.0}, {"input": [25.0, -57.0], "expected": 25.0}, {"input": [25.0, -56.5], "expected": 25.0}, {"input": [25.0, -56.0], "expected": 25.0}, {"input": [25.0, -55.5], "expected": 25.0}, {"input": [25.0, -55.0], "expected": 25.0}, {"input": [25.0, -54.5], "expected": 25.0}, {"input": [25.0, -54.0], "expected": 25.0}, {"input": [25.0, -53.5], "expected": 25.0}, {"input": [25.0, -53.0], "expected": 25.0}, {"input": [25.0, -52.5], "expected": 25.0}, {"input": [25.0, -52.0], "expected": 25.0}, {"input": [25.0, -51.5], "expected": 25.0}, {"input": [25.0, -51.0], "expected": 25.0}, {"input": [25.0, -50.5], "expected": 25.0}, {"input": [25.0, -50.0], "expected": 25.0}, {"input": [25.0, -49.5], "expected": 25.0}, {"input": [25.0, -49.0], "expected": 25.0}, {"input": [25.0, -48.5], "expected": 25.0}, {"input": [25.0, -48.0], "expected": 25.0}, {"input": [25.0, -47.5], "expected": 25.0}, {"input": [25.0, -47.0], "expected": 25.0}, {"input": [25.0, -46.5], "expected": 25.0}, {"input": [25.0, -46.0], "expected": 25.0}, {"input": [25.0, -45.5], "expected": 25.0}, {"input": [25.0, -45.0], "expected": 25.0}, {"input": [25.0, -44.5], "expected": 25.0}, {"input": [25.0, -44.0], "expected": 25.0}, {"input": [25.0, -43.5], "expected": 25.0}, {"input": [25.0, -43.0], "expected": 25.0}, {"input": [25.0, -42.5], "expected": 25.0}, {"input": [25.0, -42.0], "expected": 25.0}, {"input": [25.0, -41.5], "expected": 25.0}, {"input": [25.0, -41.0], "expected": 25.0}, {"input": [25.0, -40.5], "expected": 25.0}, {"input": [25.0, -40.0], "expected": 25.0}, {"input": [25.0, -39.5], "expected": 25.0}, {"input": [25.0, -39.0], "expected": 25.0}, {"input": [25.0, -38.5], "expected": 25.0}, {"input": [25.0, -38.0], "expected": 25.0}, {"input": [25.0, -37.5], "expected": 25.0}, {"input": [25.0, -37.0], "expected": 25.0}, {"input": [25.0, -36.5], "expected": 25.0}, {"input": [25.0, -36.0], "expected": 25.0}, {"input": [25.0, -35.5], "expected": 25.0}, {"input": [25.0, -35.0], "expected": 25.0}, {"input": [25.0, -34.5], "expected": 25.0}, {"input": [25.0, -34.0], "expected": 25.0}, {"input": [25.0, -33.5], "expected": 25.0}, {"input": [25.0, -33.0], "expected": 25.0}, {"input": [25.0, -32.5], "expected": 25.0}, {"input": [25.0, -32.0], "expected": 25.0}, {"input": [25.0, -31.5], "expected": 25.0}, {"input": [25.0, -31.0], "expected": 25.0}, {"input": [25.0, -30.5], "expected": 25.0}, {"input": [25.0, -30.0], "expected": 25.0}, {"input": [25.0, -29.5], "expected": 25.0}, {"input": [25.0, -29.0], "expected": 25.0}, {"input": [25.0, -28.5], "expected": 25.0}, {"input": [25.0, -28.0], "expected": 25.0}, {"input": [25.0, -27.5], "expected": 25.0}, {"input": [25.0, -27.0], "expected": 25.0}, {"input": [25.0, -26.5], "expected": 25.0}, {"input": [25.0, -26.0], "expected": 25.0}, {"input": [25.0, -25.5], "expected": 25.0}, {"input": [25.0, -25.0], "expected": 25.0}, {"input": [25.0, -24.5], "expected": 25.0}, {"input": [25.0, -24.0], "expected": 25.0}, {"input": [25.0, -23.5], "expected": 25.0}, {"input": [25.0, -23.0], "expected": 25.0}, {"input": [25.0, -22.5], "expected": 25.0}, {"input": [25.0, -22.0], "expected": 25.0}, {"input": [25.0, -21.5], "expected": 25.0}, {"input": [25.0, -21.0], "expected": 25.0}, {"input": [25.0, -20.5], "expected": 25.0}, {"input": [25.0, -20.0], "expected": 25.0}, {"input": [25.0, -19.5], "expected": 25.0}, {"input": [25.0, -19.0], "expected": 25.0}, {"input": [25.0, -18.5], "expected": 25.0}, {"input": [25.0, -18.0], "expected": 25.0}, {"input": [25.0, -17.5], "expected": 25.0}, {"input": [25.0, -17.0], "expected": 25.0}, {"input": [25.0, -16.5], "expected": 25.0}, {"input": [25.0, -16.0], "expected": 25.0}, {"input": [25.0, -15.5], "expected": 25.0}, {"input": [25.0, -15.0], "expected": 25.0}, {"input": [25.0, -14.5], "expected": 25.0}, {"input": [25.0, -14.0], "expected": 25.0}, {"input": [25.0, -13.5], "expected": 25.0}, {"input": [25.0, -13.0], "expected": 25.0}, {"input": [25.0, -12.5], "expected": 25.0}, {"input": [25.0, -12.0], "expected": 25.0}, {"input": [25.0, -11.5], "expected": 25.0}, {"input": [25.0, -11.0], "expected": 25.0}, {"input": [25.0, -10.5], "expected": 25.0}, {"input": [25.0, -10.0], "expected": 25.0}, {"input": [25.0, -9.5], "expected": 25.0}, {"input": [25.0, -9.0], "expected": 25.0}, {"input": [25.0, -8.5], "expected": 25.000000000000004}, {"input": [25.0, -8.0], "expected": 25.000000000000004}, {"input": [25.0, -7.5], "expected": 25.000000000000007}, {"input": [25.0, -7.0], "expected": 25.000000000000014}, {"input": [25.0, -6.5], "expected": 25.00000000000002}, {"input": [25.0, -6.0], "expected": 25.000000000000036}, {"input": [25.0, -5.5], "expected": 25.000000000000057}, {"input": [25.0, -5.0], "expected": 25.000000000000092}, {"input": [25.0, -4.5], "expected": 25.000000000000153}, {"input": [25.0, -4.0], "expected": 25.000000000000256}, {"input": [25.0, -3.5], "expected": 25.00000000000042}, {"input": [25.0, -3.0], "expected": 25.000000000000693}, {"input": [25.0, -2.5], "expected": 25.00000000000114}, {"input": [25.0, -2.0], "expected": 25.00000000000188}, {"input": [25.0, -1.5], "expected": 25.000000000003098}, {"input": [25.0, -1.0], "expected": 25.00000000000511}, {"input": [25.0, -0.5], "expected": 25.000000000008423}, {"input": [25.0, 0.0], "expected": 25.000000000013888}, {"input": [25.0, 0.5], "expected": 25.000000000022897}, {"input": [25.0, 1.0], "expected": 25.00000000003775}, {"input": [25.0, 1.5], "expected": 25.00000000006224}, {"input": [25.0, 2.0], "expected": 25.00000000010262}, {"input": [25.0, 2.5], "expected": 25.00000000016919}, {"input": [25.0, 3.0], "expected": 25.00000000027895}, {"input": [25.0, 3.5], "expected": 25.000000000459906}, {"input": [25.0, 4.0], "expected": 25.000000000758256}, {"input": [25.0, 4.5], "expected": 25.000000001250154}, {"input": [25.0, 5.0], "expected": 25.000000002061153}, {"input": [25.0, 5.5], "expected": 25.000000003398267}, {"input": [25.0, 6.0], "expected": 25.000000005602796}, {"input": [25.0, 6.5], "expected": 25.00000000923745}, {"input": [25.0, 7.0], "expected": 25.00000001522998}, {"input": [25.0, 7.5], "expected": 25.00000002510999}, {"input": [25.0, 8.0], "expected": 25.000000041399375}, {"input": [25.0, 8.5], "expected": 25.000000068256032}, {"input": [25.0, 9.0], "expected": 25.00000011253517}, {"input": [25.0, 9.5], "expected": 25.00000018553912}, {"input": [25.0, 10.0], "expected": 25.000000305902272}, {"input": [25.0, 10.5], "expected": 25.000000504347536}, {"input": [25.0, 11.0], "expected": 25.000000831528375}, {"input": [25.0, 11.5], "expected": 25.000001370958145}, {"input": [25.0, 12.0], "expected": 25.000002260326852}, {"input": [25.0, 12.5], "expected": 25.000003726646227}, {"input": [25.0, 13.0], "expected": 25.000006144193478}, {"input": [25.0, 13.5], "expected": 25.00001013004229}, {"input": [25.0, 14.0], "expected": 25.000016701561318}, {"input": [25.0, 14.5], "expected": 25.000027536070228}, {"input": [25.0, 15.0], "expected": 25.000045398899218}, {"input": [25.0, 15.5], "expected": 25.00007484902863}, {"input": [25.0, 16.0], "expected": 25.000123402189722}, {"input": [25.0, 16.5], "expected": 25.000203447672128}, {"input": [25.0, 17.0], "expected": 25.000335406372894}, {"input": [25.0, 17.5], "expected": 25.00055293147536}, {"input": [25.0, 18.0], "expected": 25.000911466453775}, {"input": [25.0, 18.5], "expected": 25.001502310159754}, {"input": [25.0, 19.0], "expected": 25.002475685137732}, {"input": [25.0, 19.5], "expected": 25.004078443270572}, {"input": [25.0, 20.0], "expected": 25.006715348489116}, {"input": [25.0, 20.5], "expected": 25.011047744848593}, {"input": [25.0, 21.0], "expected": 25.01814992791781}, {"input": [25.0, 21.5], "expected": 25.02975041827262}, {"input": [25.0, 22.0], "expected": 25.048587351573744}, {"input": [25.0, 22.5], "expected": 25.07888973429255}, {"input": [25.0, 23.0], "expected": 25.126928011042974}, {"input": [25.0, 23.5], "expected": 25.201413277982752}, {"input": [25.0, 24.0], "expected": 25.313261687518224}, {"input": [25.0, 24.5], "expected": 25.47407698418011}, {"input": [25.0, 25.0], "expected": 25.693147180559944}, {"input": [25.0, 25.5], "expected": 25.97407698418011}, {"input": [25.0, 26.0], "expected": 26.313261687518224}, {"input": [25.0, 26.5], "expected": 26.701413277982752}, {"input": [25.0, 27.0], "expected": 27.126928011042974}, {"input": [25.0, 27.5], "expected": 27.57888973429255}, {"input": [25.0, 28.0], "expected": 28.048587351573744}, {"input": [25.0, 28.5], "expected": 28.52975041827262}, {"input": [25.0, 29.0], "expected": 29.01814992791781}, {"input": [25.0, 29.5], "expected": 29.511047744848593}, {"input": [25.0, 30.0], "expected": 30.006715348489116}, {"input": [25.0, 30.5], "expected": 30.504078443270572}, {"input": [25.0, 31.0], "expected": 31.002475685137732}, {"input": [25.0, 31.5], "expected": 31.501502310159754}, {"input": [25.0, 32.0], "expected": 32.00091146645377}, {"input": [25.0, 32.5], "expected": 32.50055293147536}, {"input": [25.0, 33.0], "expected": 33.0003354063729}, {"input": [25.0, 33.5], "expected": 33.50020344767213}, {"input": [25.0, 34.0], "expected": 34.00012340218972}, {"input": [25.0, 34.5], "expected": 34.50007484902863}, {"input": [25.0, 35.0], "expected": 35.00004539889922}, {"input": [25.0, 35.5], "expected": 35.50002753607023}, {"input": [25.0, 36.0], "expected": 36.00001670156132}, {"input": [25.0, 36.5], "expected": 36.50001013004229}, {"input": [25.0, 37.0], "expected": 37.00000614419348}, {"input": [25.0, 37.5], "expected": 37.50000372664623}, {"input": [25.0, 38.0], "expected": 38.00000226032685}, {"input": [25.0, 38.5], "expected": 38.500001370958145}, {"input": [25.0, 39.0], "expected": 39.000000831528375}, {"input": [25.0, 39.5], "expected": 39.50000050434753}, {"input": [25.0, 40.0], "expected": 40.000000305902276}, {"input": [25.0, 40.5], "expected": 40.50000018553912}, {"input": [25.0, 41.0], "expected": 41.00000011253517}, {"input": [25.0, 41.5], "expected": 41.50000006825603}, {"input": [25.0, 42.0], "expected": 42.000000041399375}, {"input": [25.0, 42.5], "expected": 42.50000002510999}, {"input": [25.0, 43.0], "expected": 43.00000001522998}, {"input": [25.0, 43.5], "expected": 43.500000009237446}, {"input": [25.0, 44.0], "expected": 44.00000000560279}, {"input": [25.0, 44.5], "expected": 44.50000000339827}, {"input": [25.0, 45.0], "expected": 45.00000000206116}, {"input": [25.0, 45.5], "expected": 45.50000000125015}, {"input": [25.0, 46.0], "expected": 46.000000000758256}, {"input": [25.0, 46.5], "expected": 46.500000000459906}, {"input": [25.0, 47.0], "expected": 47.000000000278945}, {"input": [25.0, 47.5], "expected": 47.50000000016919}, {"input": [25.0, 48.0], "expected": 48.00000000010262}, {"input": [25.0, 48.5], "expected": 48.50000000006224}, {"input": [25.0, 49.0], "expected": 49.00000000003775}, {"input": [25.0, 49.5], "expected": 49.5000000000229}, {"input": [25.0, 50.0], "expected": 50.00000000001389}, {"input": [25.0, 50.5], "expected": 50.50000000000842}, {"input": [25.0, 51.0], "expected": 51.00000000000511}, {"input": [25.0, 51.5], "expected": 51.5000000000031}, {"input": [25.0, 52.0], "expected": 52.00000000000188}, {"input": [25.0, 52.5], "expected": 52.50000000000114}, {"input": [25.0, 53.0], "expected": 53.00000000000069}, {"input": [25.0, 53.5], "expected": 53.50000000000042}, {"input": [25.0, 54.0], "expected": 54.000000000000256}, {"input": [25.0, 54.5], "expected": 54.500000000000156}, {"input": [25.0, 55.0], "expected": 55.00000000000009}, {"input": [25.0, 55.5], "expected": 55.50000000000006}, {"input": [25.0, 56.0], "expected": 56.000000000000036}, {"input": [25.0, 56.5], "expected": 56.50000000000002}, {"input": [25.0, 57.0], "expected": 57.000000000000014}, {"input": [25.0, 57.5], "expected": 57.50000000000001}, {"input": [25.0, 58.0], "expected": 58.00000000000001}, {"input": [25.0, 58.5], "expected": 58.5}, {"input": [25.0, 59.0], "expected": 59.0}, {"input": [25.0, 59.5], "expected": 59.5}, {"input": [25.0, 60.0], "expected": 60.0}, {"input": [25.0, 60.5], "expected": 60.5}, {"input": [25.0, 61.0], "expected": 61.0}, {"input": [25.0, 61.5], "expected": 61.5}, {"input": [25.0, 62.0], "expected": 62.0}, {"input": [25.0, 62.5], "expected": 62.5}, {"input": [25.0, 63.0], "expected": 63.0}, {"input": [25.0, 63.5], "expected": 63.5}, {"input": [25.0, 64.0], "expected": 64.0}, {"input": [25.0, 64.5], "expected": 64.5}, {"input": [25.0, 65.0], "expected": 65.0}, {"input": [25.0, 65.5], "expected": 65.5}, {"input": [25.0, 66.0], "expected": 66.0}, {"input": [25.0, 66.5], "expected": 66.5}, {"input": [25.0, 67.0], "expected": 67.0}, {"input": [25.0, 67.5], "expected": 67.5}, {"input": [25.0, 68.0], "expected": 68.0}, {"input": [25.0, 68.5], "expected": 68.5}, {"input": [25.0, 69.0], "expected": 69.0}, {"input": [25.0, 69.5], "expected": 69.5}, {"input": [25.0, 70.0], "expected": 70.0}, {"input": [25.0, 70.5], "expected": 70.5}, {"input": [25.0, 71.0], "expected": 71.0}, {"input": [25.0, 71.5], "expected": 71.5}, {"input": [25.0, 72.0], "expected": 72.0}, {"input": [25.0, 72.5], "expected": 72.5}, {"input": [25.0, 73.0], "expected": 73.0}, {"input": [25.0, 73.5], "expected": 73.5}, {"input": [25.0, 74.0], "expected": 74.0}, {"input": [25.0, 74.5], "expected": 74.5}, {"input": [25.0, 75.0], "expected": 75.0}, {"input": [25.0, 75.5], "expected": 75.5}, {"input": [25.0, 76.0], "expected": 76.0}, {"input": [25.0, 76.5], "expected": 76.5}, {"input": [25.0, 77.0], "expected": 77.0}, {"input": [25.0, 77.5], "expected": 77.5}, {"input": [25.0, 78.0], "expected": 78.0}, {"input": [25.0, 78.5], "expected": 78.5}, {"input": [25.0, 79.0], "expected": 79.0}, {"input": [25.0, 79.5], "expected": 79.5}, {"input": [25.0, 80.0], "expected": 80.0}, {"input": [25.0, 80.5], "expected": 80.5}, {"input": [25.0, 81.0], "expected": 81.0}, {"input": [25.0, 81.5], "expected": 81.5}, {"input": [25.0, 82.0], "expected": 82.0}, {"input": [25.0, 82.5], "expected": 82.5}, {"input": [25.0, 83.0], "expected": 83.0}, {"input": [25.0, 83.5], "expected": 83.5}, {"input": [25.0, 84.0], "expected": 84.0}, {"input": [25.0, 84.5], "expected": 84.5}, {"input": [25.0, 85.0], "expected": 85.0}, {"input": [25.0, 85.5], "expected": 85.5}, {"input": [25.0, 86.0], "expected": 86.0}, {"input": [25.0, 86.5], "expected": 86.5}, {"input": [25.0, 87.0], "expected": 87.0}, {"input": [25.0, 87.5], "expected": 87.5}, {"input": [25.0, 88.0], "expected": 88.0}, {"input": [25.0, 88.5], "expected": 88.5}, {"input": [25.0, 89.0], "expected": 89.0}, {"input": [25.0, 89.5], "expected": 89.5}, {"input": [25.0, 90.0], "expected": 90.0}, {"input": [25.0, 90.5], "expected": 90.5}, {"input": [25.0, 91.0], "expected": 91.0}, {"input": [25.0, 91.5], "expected": 91.5}, {"input": [25.0, 92.0], "expected": 92.0}, {"input": [25.0, 92.5], "expected": 92.5}, {"input": [25.0, 93.0], "expected": 93.0}, {"input": [25.0, 93.5], "expected": 93.5}, {"input": [25.0, 94.0], "expected": 94.0}, {"input": [25.0, 94.5], "expected": 94.5}, {"input": [25.0, 95.0], "expected": 95.0}, {"input": [25.0, 95.5], "expected": 95.5}, {"input": [25.0, 96.0], "expected": 96.0}, {"input": [25.0, 96.5], "expected": 96.5}, {"input": [25.0, 97.0], "expected": 97.0}, {"input": [25.0, 97.5], "expected": 97.5}, {"input": [25.0, 98.0], "expected": 98.0}, {"input": [25.0, 98.5], "expected": 98.5}, {"input": [25.0, 99.0], "expected": 99.0}, {"input": [25.0, 99.5], "expected": 99.5}, {"input": [25.5, -100.0], "expected": 25.5}, {"input": [25.5, -99.5], "expected": 25.5}, {"input": [25.5, -99.0], "expected": 25.5}, {"input": [25.5, -98.5], "expected": 25.5}, {"input": [25.5, -98.0], "expected": 25.5}, {"input": [25.5, -97.5], "expected": 25.5}, {"input": [25.5, -97.0], "expected": 25.5}, {"input": [25.5, -96.5], "expected": 25.5}, {"input": [25.5, -96.0], "expected": 25.5}, {"input": [25.5, -95.5], "expected": 25.5}, {"input": [25.5, -95.0], "expected": 25.5}, {"input": [25.5, -94.5], "expected": 25.5}, {"input": [25.5, -94.0], "expected": 25.5}, {"input": [25.5, -93.5], "expected": 25.5}, {"input": [25.5, -93.0], "expected": 25.5}, {"input": [25.5, -92.5], "expected": 25.5}, {"input": [25.5, -92.0], "expected": 25.5}, {"input": [25.5, -91.5], "expected": 25.5}, {"input": [25.5, -91.0], "expected": 25.5}, {"input": [25.5, -90.5], "expected": 25.5}, {"input": [25.5, -90.0], "expected": 25.5}, {"input": [25.5, -89.5], "expected": 25.5}, {"input": [25.5, -89.0], "expected": 25.5}, {"input": [25.5, -88.5], "expected": 25.5}, {"input": [25.5, -88.0], "expected": 25.5}, {"input": [25.5, -87.5], "expected": 25.5}, {"input": [25.5, -87.0], "expected": 25.5}, {"input": [25.5, -86.5], "expected": 25.5}, {"input": [25.5, -86.0], "expected": 25.5}, {"input": [25.5, -85.5], "expected": 25.5}, {"input": [25.5, -85.0], "expected": 25.5}, {"input": [25.5, -84.5], "expected": 25.5}, {"input": [25.5, -84.0], "expected": 25.5}, {"input": [25.5, -83.5], "expected": 25.5}, {"input": [25.5, -83.0], "expected": 25.5}, {"input": [25.5, -82.5], "expected": 25.5}, {"input": [25.5, -82.0], "expected": 25.5}, {"input": [25.5, -81.5], "expected": 25.5}, {"input": [25.5, -81.0], "expected": 25.5}, {"input": [25.5, -80.5], "expected": 25.5}, {"input": [25.5, -80.0], "expected": 25.5}, {"input": [25.5, -79.5], "expected": 25.5}, {"input": [25.5, -79.0], "expected": 25.5}, {"input": [25.5, -78.5], "expected": 25.5}, {"input": [25.5, -78.0], "expected": 25.5}, {"input": [25.5, -77.5], "expected": 25.5}, {"input": [25.5, -77.0], "expected": 25.5}, {"input": [25.5, -76.5], "expected": 25.5}, {"input": [25.5, -76.0], "expected": 25.5}, {"input": [25.5, -75.5], "expected": 25.5}, {"input": [25.5, -75.0], "expected": 25.5}, {"input": [25.5, -74.5], "expected": 25.5}, {"input": [25.5, -74.0], "expected": 25.5}, {"input": [25.5, -73.5], "expected": 25.5}, {"input": [25.5, -73.0], "expected": 25.5}, {"input": [25.5, -72.5], "expected": 25.5}, {"input": [25.5, -72.0], "expected": 25.5}, {"input": [25.5, -71.5], "expected": 25.5}, {"input": [25.5, -71.0], "expected": 25.5}, {"input": [25.5, -70.5], "expected": 25.5}, {"input": [25.5, -70.0], "expected": 25.5}, {"input": [25.5, -69.5], "expected": 25.5}, {"input": [25.5, -69.0], "expected": 25.5}, {"input": [25.5, -68.5], "expected": 25.5}, {"input": [25.5, -68.0], "expected": 25.5}, {"input": [25.5, -67.5], "expected": 25.5}, {"input": [25.5, -67.0], "expected": 25.5}, {"input": [25.5, -66.5], "expected": 25.5}, {"input": [25.5, -66.0], "expected": 25.5}, {"input": [25.5, -65.5], "expected": 25.5}, {"input": [25.5, -65.0], "expected": 25.5}, {"input": [25.5, -64.5], "expected": 25.5}, {"input": [25.5, -64.0], "expected": 25.5}, {"input": [25.5, -63.5], "expected": 25.5}, {"input": [25.5, -63.0], "expected": 25.5}, {"input": [25.5, -62.5], "expected": 25.5}, {"input": [25.5, -62.0], "expected": 25.5}, {"input": [25.5, -61.5], "expected": 25.5}, {"input": [25.5, -61.0], "expected": 25.5}, {"input": [25.5, -60.5], "expected": 25.5}, {"input": [25.5, -60.0], "expected": 25.5}, {"input": [25.5, -59.5], "expected": 25.5}, {"input": [25.5, -59.0], "expected": 25.5}, {"input": [25.5, -58.5], "expected": 25.5}, {"input": [25.5, -58.0], "expected": 25.5}, {"input": [25.5, -57.5], "expected": 25.5}, {"input": [25.5, -57.0], "expected": 25.5}, {"input": [25.5, -56.5], "expected": 25.5}, {"input": [25.5, -56.0], "expected": 25.5}, {"input": [25.5, -55.5], "expected": 25.5}, {"input": [25.5, -55.0], "expected": 25.5}, {"input": [25.5, -54.5], "expected": 25.5}, {"input": [25.5, -54.0], "expected": 25.5}, {"input": [25.5, -53.5], "expected": 25.5}, {"input": [25.5, -53.0], "expected": 25.5}, {"input": [25.5, -52.5], "expected": 25.5}, {"input": [25.5, -52.0], "expected": 25.5}, {"input": [25.5, -51.5], "expected": 25.5}, {"input": [25.5, -51.0], "expected": 25.5}, {"input": [25.5, -50.5], "expected": 25.5}, {"input": [25.5, -50.0], "expected": 25.5}, {"input": [25.5, -49.5], "expected": 25.5}, {"input": [25.5, -49.0], "expected": 25.5}, {"input": [25.5, -48.5], "expected": 25.5}, {"input": [25.5, -48.0], "expected": 25.5}, {"input": [25.5, -47.5], "expected": 25.5}, {"input": [25.5, -47.0], "expected": 25.5}, {"input": [25.5, -46.5], "expected": 25.5}, {"input": [25.5, -46.0], "expected": 25.5}, {"input": [25.5, -45.5], "expected": 25.5}, {"input": [25.5, -45.0], "expected": 25.5}, {"input": [25.5, -44.5], "expected": 25.5}, {"input": [25.5, -44.0], "expected": 25.5}, {"input": [25.5, -43.5], "expected": 25.5}, {"input": [25.5, -43.0], "expected": 25.5}, {"input": [25.5, -42.5], "expected": 25.5}, {"input": [25.5, -42.0], "expected": 25.5}, {"input": [25.5, -41.5], "expected": 25.5}, {"input": [25.5, -41.0], "expected": 25.5}, {"input": [25.5, -40.5], "expected": 25.5}, {"input": [25.5, -40.0], "expected": 25.5}, {"input": [25.5, -39.5], "expected": 25.5}, {"input": [25.5, -39.0], "expected": 25.5}, {"input": [25.5, -38.5], "expected": 25.5}, {"input": [25.5, -38.0], "expected": 25.5}, {"input": [25.5, -37.5], "expected": 25.5}, {"input": [25.5, -37.0], "expected": 25.5}, {"input": [25.5, -36.5], "expected": 25.5}, {"input": [25.5, -36.0], "expected": 25.5}, {"input": [25.5, -35.5], "expected": 25.5}, {"input": [25.5, -35.0], "expected": 25.5}, {"input": [25.5, -34.5], "expected": 25.5}, {"input": [25.5, -34.0], "expected": 25.5}, {"input": [25.5, -33.5], "expected": 25.5}, {"input": [25.5, -33.0], "expected": 25.5}, {"input": [25.5, -32.5], "expected": 25.5}, {"input": [25.5, -32.0], "expected": 25.5}, {"input": [25.5, -31.5], "expected": 25.5}, {"input": [25.5, -31.0], "expected": 25.5}, {"input": [25.5, -30.5], "expected": 25.5}, {"input": [25.5, -30.0], "expected": 25.5}, {"input": [25.5, -29.5], "expected": 25.5}, {"input": [25.5, -29.0], "expected": 25.5}, {"input": [25.5, -28.5], "expected": 25.5}, {"input": [25.5, -28.0], "expected": 25.5}, {"input": [25.5, -27.5], "expected": 25.5}, {"input": [25.5, -27.0], "expected": 25.5}, {"input": [25.5, -26.5], "expected": 25.5}, {"input": [25.5, -26.0], "expected": 25.5}, {"input": [25.5, -25.5], "expected": 25.5}, {"input": [25.5, -25.0], "expected": 25.5}, {"input": [25.5, -24.5], "expected": 25.5}, {"input": [25.5, -24.0], "expected": 25.5}, {"input": [25.5, -23.5], "expected": 25.5}, {"input": [25.5, -23.0], "expected": 25.5}, {"input": [25.5, -22.5], "expected": 25.5}, {"input": [25.5, -22.0], "expected": 25.5}, {"input": [25.5, -21.5], "expected": 25.5}, {"input": [25.5, -21.0], "expected": 25.5}, {"input": [25.5, -20.5], "expected": 25.5}, {"input": [25.5, -20.0], "expected": 25.5}, {"input": [25.5, -19.5], "expected": 25.5}, {"input": [25.5, -19.0], "expected": 25.5}, {"input": [25.5, -18.5], "expected": 25.5}, {"input": [25.5, -18.0], "expected": 25.5}, {"input": [25.5, -17.5], "expected": 25.5}, {"input": [25.5, -17.0], "expected": 25.5}, {"input": [25.5, -16.5], "expected": 25.5}, {"input": [25.5, -16.0], "expected": 25.5}, {"input": [25.5, -15.5], "expected": 25.5}, {"input": [25.5, -15.0], "expected": 25.5}, {"input": [25.5, -14.5], "expected": 25.5}, {"input": [25.5, -14.0], "expected": 25.5}, {"input": [25.5, -13.5], "expected": 25.5}, {"input": [25.5, -13.0], "expected": 25.5}, {"input": [25.5, -12.5], "expected": 25.5}, {"input": [25.5, -12.0], "expected": 25.5}, {"input": [25.5, -11.5], "expected": 25.5}, {"input": [25.5, -11.0], "expected": 25.5}, {"input": [25.5, -10.5], "expected": 25.5}, {"input": [25.5, -10.0], "expected": 25.5}, {"input": [25.5, -9.5], "expected": 25.5}, {"input": [25.5, -9.0], "expected": 25.5}, {"input": [25.5, -8.5], "expected": 25.5}, {"input": [25.5, -8.0], "expected": 25.500000000000004}, {"input": [25.5, -7.5], "expected": 25.500000000000004}, {"input": [25.5, -7.0], "expected": 25.500000000000007}, {"input": [25.5, -6.5], "expected": 25.500000000000014}, {"input": [25.5, -6.0], "expected": 25.50000000000002}, {"input": [25.5, -5.5], "expected": 25.500000000000036}, {"input": [25.5, -5.0], "expected": 25.500000000000057}, {"input": [25.5, -4.5], "expected": 25.500000000000092}, {"input": [25.5, -4.0], "expected": 25.500000000000153}, {"input": [25.5, -3.5], "expected": 25.500000000000256}, {"input": [25.5, -3.0], "expected": 25.50000000000042}, {"input": [25.5, -2.5], "expected": 25.500000000000693}, {"input": [25.5, -2.0], "expected": 25.50000000000114}, {"input": [25.5, -1.5], "expected": 25.50000000000188}, {"input": [25.5, -1.0], "expected": 25.500000000003098}, {"input": [25.5, -0.5], "expected": 25.50000000000511}, {"input": [25.5, 0.0], "expected": 25.500000000008423}, {"input": [25.5, 0.5], "expected": 25.500000000013888}, {"input": [25.5, 1.0], "expected": 25.500000000022897}, {"input": [25.5, 1.5], "expected": 25.50000000003775}, {"input": [25.5, 2.0], "expected": 25.50000000006224}, {"input": [25.5, 2.5], "expected": 25.50000000010262}, {"input": [25.5, 3.0], "expected": 25.50000000016919}, {"input": [25.5, 3.5], "expected": 25.50000000027895}, {"input": [25.5, 4.0], "expected": 25.500000000459906}, {"input": [25.5, 4.5], "expected": 25.500000000758256}, {"input": [25.5, 5.0], "expected": 25.500000001250154}, {"input": [25.5, 5.5], "expected": 25.500000002061153}, {"input": [25.5, 6.0], "expected": 25.500000003398267}, {"input": [25.5, 6.5], "expected": 25.500000005602796}, {"input": [25.5, 7.0], "expected": 25.50000000923745}, {"input": [25.5, 7.5], "expected": 25.50000001522998}, {"input": [25.5, 8.0], "expected": 25.50000002510999}, {"input": [25.5, 8.5], "expected": 25.500000041399375}, {"input": [25.5, 9.0], "expected": 25.500000068256032}, {"input": [25.5, 9.5], "expected": 25.50000011253517}, {"input": [25.5, 10.0], "expected": 25.50000018553912}, {"input": [25.5, 10.5], "expected": 25.500000305902272}, {"input": [25.5, 11.0], "expected": 25.500000504347536}, {"input": [25.5, 11.5], "expected": 25.500000831528375}, {"input": [25.5, 12.0], "expected": 25.500001370958145}, {"input": [25.5, 12.5], "expected": 25.500002260326852}, {"input": [25.5, 13.0], "expected": 25.500003726646227}, {"input": [25.5, 13.5], "expected": 25.500006144193478}, {"input": [25.5, 14.0], "expected": 25.50001013004229}, {"input": [25.5, 14.5], "expected": 25.500016701561318}, {"input": [25.5, 15.0], "expected": 25.500027536070228}, {"input": [25.5, 15.5], "expected": 25.500045398899218}, {"input": [25.5, 16.0], "expected": 25.50007484902863}, {"input": [25.5, 16.5], "expected": 25.500123402189722}, {"input": [25.5, 17.0], "expected": 25.500203447672128}, {"input": [25.5, 17.5], "expected": 25.500335406372894}, {"input": [25.5, 18.0], "expected": 25.50055293147536}, {"input": [25.5, 18.5], "expected": 25.500911466453775}, {"input": [25.5, 19.0], "expected": 25.501502310159754}, {"input": [25.5, 19.5], "expected": 25.502475685137732}, {"input": [25.5, 20.0], "expected": 25.504078443270572}, {"input": [25.5, 20.5], "expected": 25.506715348489116}, {"input": [25.5, 21.0], "expected": 25.511047744848593}, {"input": [25.5, 21.5], "expected": 25.51814992791781}, {"input": [25.5, 22.0], "expected": 25.52975041827262}, {"input": [25.5, 22.5], "expected": 25.548587351573744}, {"input": [25.5, 23.0], "expected": 25.57888973429255}, {"input": [25.5, 23.5], "expected": 25.626928011042974}, {"input": [25.5, 24.0], "expected": 25.701413277982752}, {"input": [25.5, 24.5], "expected": 25.813261687518224}, {"input": [25.5, 25.0], "expected": 25.97407698418011}, {"input": [25.5, 25.5], "expected": 26.193147180559944}, {"input": [25.5, 26.0], "expected": 26.47407698418011}, {"input": [25.5, 26.5], "expected": 26.813261687518224}, {"input": [25.5, 27.0], "expected": 27.201413277982752}, {"input": [25.5, 27.5], "expected": 27.626928011042974}, {"input": [25.5, 28.0], "expected": 28.07888973429255}, {"input": [25.5, 28.5], "expected": 28.548587351573744}, {"input": [25.5, 29.0], "expected": 29.02975041827262}, {"input": [25.5, 29.5], "expected": 29.51814992791781}, {"input": [25.5, 30.0], "expected": 30.011047744848593}, {"input": [25.5, 30.5], "expected": 30.506715348489116}, {"input": [25.5, 31.0], "expected": 31.004078443270572}, {"input": [25.5, 31.5], "expected": 31.502475685137732}, {"input": [25.5, 32.0], "expected": 32.00150231015976}, {"input": [25.5, 32.5], "expected": 32.50091146645377}, {"input": [25.5, 33.0], "expected": 33.00055293147536}, {"input": [25.5, 33.5], "expected": 33.5003354063729}, {"input": [25.5, 34.0], "expected": 34.00020344767213}, {"input": [25.5, 34.5], "expected": 34.50012340218972}, {"input": [25.5, 35.0], "expected": 35.00007484902863}, {"input": [25.5, 35.5], "expected": 35.50004539889922}, {"input": [25.5, 36.0], "expected": 36.00002753607023}, {"input": [25.5, 36.5], "expected": 36.50001670156132}, {"input": [25.5, 37.0], "expected": 37.00001013004229}, {"input": [25.5, 37.5], "expected": 37.50000614419348}, {"input": [25.5, 38.0], "expected": 38.00000372664623}, {"input": [25.5, 38.5], "expected": 38.50000226032685}, {"input": [25.5, 39.0], "expected": 39.000001370958145}, {"input": [25.5, 39.5], "expected": 39.500000831528375}, {"input": [25.5, 40.0], "expected": 40.00000050434753}, {"input": [25.5, 40.5], "expected": 40.500000305902276}, {"input": [25.5, 41.0], "expected": 41.00000018553912}, {"input": [25.5, 41.5], "expected": 41.50000011253517}, {"input": [25.5, 42.0], "expected": 42.00000006825603}, {"input": [25.5, 42.5], "expected": 42.500000041399375}, {"input": [25.5, 43.0], "expected": 43.00000002510999}, {"input": [25.5, 43.5], "expected": 43.50000001522998}, {"input": [25.5, 44.0], "expected": 44.000000009237446}, {"input": [25.5, 44.5], "expected": 44.50000000560279}, {"input": [25.5, 45.0], "expected": 45.00000000339827}, {"input": [25.5, 45.5], "expected": 45.50000000206116}, {"input": [25.5, 46.0], "expected": 46.00000000125015}, {"input": [25.5, 46.5], "expected": 46.500000000758256}, {"input": [25.5, 47.0], "expected": 47.000000000459906}, {"input": [25.5, 47.5], "expected": 47.500000000278945}, {"input": [25.5, 48.0], "expected": 48.00000000016919}, {"input": [25.5, 48.5], "expected": 48.50000000010262}, {"input": [25.5, 49.0], "expected": 49.00000000006224}, {"input": [25.5, 49.5], "expected": 49.50000000003775}, {"input": [25.5, 50.0], "expected": 50.0000000000229}, {"input": [25.5, 50.5], "expected": 50.50000000001389}, {"input": [25.5, 51.0], "expected": 51.00000000000842}, {"input": [25.5, 51.5], "expected": 51.50000000000511}, {"input": [25.5, 52.0], "expected": 52.0000000000031}, {"input": [25.5, 52.5], "expected": 52.50000000000188}, {"input": [25.5, 53.0], "expected": 53.00000000000114}, {"input": [25.5, 53.5], "expected": 53.50000000000069}, {"input": [25.5, 54.0], "expected": 54.00000000000042}, {"input": [25.5, 54.5], "expected": 54.500000000000256}, {"input": [25.5, 55.0], "expected": 55.000000000000156}, {"input": [25.5, 55.5], "expected": 55.50000000000009}, {"input": [25.5, 56.0], "expected": 56.00000000000006}, {"input": [25.5, 56.5], "expected": 56.500000000000036}, {"input": [25.5, 57.0], "expected": 57.00000000000002}, {"input": [25.5, 57.5], "expected": 57.500000000000014}, {"input": [25.5, 58.0], "expected": 58.00000000000001}, {"input": [25.5, 58.5], "expected": 58.50000000000001}, {"input": [25.5, 59.0], "expected": 59.0}, {"input": [25.5, 59.5], "expected": 59.5}, {"input": [25.5, 60.0], "expected": 60.0}, {"input": [25.5, 60.5], "expected": 60.5}, {"input": [25.5, 61.0], "expected": 61.0}, {"input": [25.5, 61.5], "expected": 61.5}, {"input": [25.5, 62.0], "expected": 62.0}, {"input": [25.5, 62.5], "expected": 62.5}, {"input": [25.5, 63.0], "expected": 63.0}, {"input": [25.5, 63.5], "expected": 63.5}, {"input": [25.5, 64.0], "expected": 64.0}, {"input": [25.5, 64.5], "expected": 64.5}, {"input": [25.5, 65.0], "expected": 65.0}, {"input": [25.5, 65.5], "expected": 65.5}, {"input": [25.5, 66.0], "expected": 66.0}, {"input": [25.5, 66.5], "expected": 66.5}, {"input": [25.5, 67.0], "expected": 67.0}, {"input": [25.5, 67.5], "expected": 67.5}, {"input": [25.5, 68.0], "expected": 68.0}, {"input": [25.5, 68.5], "expected": 68.5}, {"input": [25.5, 69.0], "expected": 69.0}, {"input": [25.5, 69.5], "expected": 69.5}, {"input": [25.5, 70.0], "expected": 70.0}, {"input": [25.5, 70.5], "expected": 70.5}, {"input": [25.5, 71.0], "expected": 71.0}, {"input": [25.5, 71.5], "expected": 71.5}, {"input": [25.5, 72.0], "expected": 72.0}, {"input": [25.5, 72.5], "expected": 72.5}, {"input": [25.5, 73.0], "expected": 73.0}, {"input": [25.5, 73.5], "expected": 73.5}, {"input": [25.5, 74.0], "expected": 74.0}, {"input": [25.5, 74.5], "expected": 74.5}, {"input": [25.5, 75.0], "expected": 75.0}, {"input": [25.5, 75.5], "expected": 75.5}, {"input": [25.5, 76.0], "expected": 76.0}, {"input": [25.5, 76.5], "expected": 76.5}, {"input": [25.5, 77.0], "expected": 77.0}, {"input": [25.5, 77.5], "expected": 77.5}, {"input": [25.5, 78.0], "expected": 78.0}, {"input": [25.5, 78.5], "expected": 78.5}, {"input": [25.5, 79.0], "expected": 79.0}, {"input": [25.5, 79.5], "expected": 79.5}, {"input": [25.5, 80.0], "expected": 80.0}, {"input": [25.5, 80.5], "expected": 80.5}, {"input": [25.5, 81.0], "expected": 81.0}, {"input": [25.5, 81.5], "expected": 81.5}, {"input": [25.5, 82.0], "expected": 82.0}, {"input": [25.5, 82.5], "expected": 82.5}, {"input": [25.5, 83.0], "expected": 83.0}, {"input": [25.5, 83.5], "expected": 83.5}, {"input": [25.5, 84.0], "expected": 84.0}, {"input": [25.5, 84.5], "expected": 84.5}, {"input": [25.5, 85.0], "expected": 85.0}, {"input": [25.5, 85.5], "expected": 85.5}, {"input": [25.5, 86.0], "expected": 86.0}, {"input": [25.5, 86.5], "expected": 86.5}, {"input": [25.5, 87.0], "expected": 87.0}, {"input": [25.5, 87.5], "expected": 87.5}, {"input": [25.5, 88.0], "expected": 88.0}, {"input": [25.5, 88.5], "expected": 88.5}, {"input": [25.5, 89.0], "expected": 89.0}, {"input": [25.5, 89.5], "expected": 89.5}, {"input": [25.5, 90.0], "expected": 90.0}, {"input": [25.5, 90.5], "expected": 90.5}, {"input": [25.5, 91.0], "expected": 91.0}, {"input": [25.5, 91.5], "expected": 91.5}, {"input": [25.5, 92.0], "expected": 92.0}, {"input": [25.5, 92.5], "expected": 92.5}, {"input": [25.5, 93.0], "expected": 93.0}, {"input": [25.5, 93.5], "expected": 93.5}, {"input": [25.5, 94.0], "expected": 94.0}, {"input": [25.5, 94.5], "expected": 94.5}, {"input": [25.5, 95.0], "expected": 95.0}, {"input": [25.5, 95.5], "expected": 95.5}, {"input": [25.5, 96.0], "expected": 96.0}, {"input": [25.5, 96.5], "expected": 96.5}, {"input": [25.5, 97.0], "expected": 97.0}, {"input": [25.5, 97.5], "expected": 97.5}, {"input": [25.5, 98.0], "expected": 98.0}, {"input": [25.5, 98.5], "expected": 98.5}, {"input": [25.5, 99.0], "expected": 99.0}, {"input": [25.5, 99.5], "expected": 99.5}, {"input": [26.0, -100.0], "expected": 26.0}, {"input": [26.0, -99.5], "expected": 26.0}, {"input": [26.0, -99.0], "expected": 26.0}, {"input": [26.0, -98.5], "expected": 26.0}, {"input": [26.0, -98.0], "expected": 26.0}, {"input": [26.0, -97.5], "expected": 26.0}, {"input": [26.0, -97.0], "expected": 26.0}, {"input": [26.0, -96.5], "expected": 26.0}, {"input": [26.0, -96.0], "expected": 26.0}, {"input": [26.0, -95.5], "expected": 26.0}, {"input": [26.0, -95.0], "expected": 26.0}, {"input": [26.0, -94.5], "expected": 26.0}, {"input": [26.0, -94.0], "expected": 26.0}, {"input": [26.0, -93.5], "expected": 26.0}, {"input": [26.0, -93.0], "expected": 26.0}, {"input": [26.0, -92.5], "expected": 26.0}, {"input": [26.0, -92.0], "expected": 26.0}, {"input": [26.0, -91.5], "expected": 26.0}, {"input": [26.0, -91.0], "expected": 26.0}, {"input": [26.0, -90.5], "expected": 26.0}, {"input": [26.0, -90.0], "expected": 26.0}, {"input": [26.0, -89.5], "expected": 26.0}, {"input": [26.0, -89.0], "expected": 26.0}, {"input": [26.0, -88.5], "expected": 26.0}, {"input": [26.0, -88.0], "expected": 26.0}, {"input": [26.0, -87.5], "expected": 26.0}, {"input": [26.0, -87.0], "expected": 26.0}, {"input": [26.0, -86.5], "expected": 26.0}, {"input": [26.0, -86.0], "expected": 26.0}, {"input": [26.0, -85.5], "expected": 26.0}, {"input": [26.0, -85.0], "expected": 26.0}, {"input": [26.0, -84.5], "expected": 26.0}, {"input": [26.0, -84.0], "expected": 26.0}, {"input": [26.0, -83.5], "expected": 26.0}, {"input": [26.0, -83.0], "expected": 26.0}, {"input": [26.0, -82.5], "expected": 26.0}, {"input": [26.0, -82.0], "expected": 26.0}, {"input": [26.0, -81.5], "expected": 26.0}, {"input": [26.0, -81.0], "expected": 26.0}, {"input": [26.0, -80.5], "expected": 26.0}, {"input": [26.0, -80.0], "expected": 26.0}, {"input": [26.0, -79.5], "expected": 26.0}, {"input": [26.0, -79.0], "expected": 26.0}, {"input": [26.0, -78.5], "expected": 26.0}, {"input": [26.0, -78.0], "expected": 26.0}, {"input": [26.0, -77.5], "expected": 26.0}, {"input": [26.0, -77.0], "expected": 26.0}, {"input": [26.0, -76.5], "expected": 26.0}, {"input": [26.0, -76.0], "expected": 26.0}, {"input": [26.0, -75.5], "expected": 26.0}, {"input": [26.0, -75.0], "expected": 26.0}, {"input": [26.0, -74.5], "expected": 26.0}, {"input": [26.0, -74.0], "expected": 26.0}, {"input": [26.0, -73.5], "expected": 26.0}, {"input": [26.0, -73.0], "expected": 26.0}, {"input": [26.0, -72.5], "expected": 26.0}, {"input": [26.0, -72.0], "expected": 26.0}, {"input": [26.0, -71.5], "expected": 26.0}, {"input": [26.0, -71.0], "expected": 26.0}, {"input": [26.0, -70.5], "expected": 26.0}, {"input": [26.0, -70.0], "expected": 26.0}, {"input": [26.0, -69.5], "expected": 26.0}, {"input": [26.0, -69.0], "expected": 26.0}, {"input": [26.0, -68.5], "expected": 26.0}, {"input": [26.0, -68.0], "expected": 26.0}, {"input": [26.0, -67.5], "expected": 26.0}, {"input": [26.0, -67.0], "expected": 26.0}, {"input": [26.0, -66.5], "expected": 26.0}, {"input": [26.0, -66.0], "expected": 26.0}, {"input": [26.0, -65.5], "expected": 26.0}, {"input": [26.0, -65.0], "expected": 26.0}, {"input": [26.0, -64.5], "expected": 26.0}, {"input": [26.0, -64.0], "expected": 26.0}, {"input": [26.0, -63.5], "expected": 26.0}, {"input": [26.0, -63.0], "expected": 26.0}, {"input": [26.0, -62.5], "expected": 26.0}, {"input": [26.0, -62.0], "expected": 26.0}, {"input": [26.0, -61.5], "expected": 26.0}, {"input": [26.0, -61.0], "expected": 26.0}, {"input": [26.0, -60.5], "expected": 26.0}, {"input": [26.0, -60.0], "expected": 26.0}, {"input": [26.0, -59.5], "expected": 26.0}, {"input": [26.0, -59.0], "expected": 26.0}, {"input": [26.0, -58.5], "expected": 26.0}, {"input": [26.0, -58.0], "expected": 26.0}, {"input": [26.0, -57.5], "expected": 26.0}, {"input": [26.0, -57.0], "expected": 26.0}, {"input": [26.0, -56.5], "expected": 26.0}, {"input": [26.0, -56.0], "expected": 26.0}, {"input": [26.0, -55.5], "expected": 26.0}, {"input": [26.0, -55.0], "expected": 26.0}, {"input": [26.0, -54.5], "expected": 26.0}, {"input": [26.0, -54.0], "expected": 26.0}, {"input": [26.0, -53.5], "expected": 26.0}, {"input": [26.0, -53.0], "expected": 26.0}, {"input": [26.0, -52.5], "expected": 26.0}, {"input": [26.0, -52.0], "expected": 26.0}, {"input": [26.0, -51.5], "expected": 26.0}, {"input": [26.0, -51.0], "expected": 26.0}, {"input": [26.0, -50.5], "expected": 26.0}, {"input": [26.0, -50.0], "expected": 26.0}, {"input": [26.0, -49.5], "expected": 26.0}, {"input": [26.0, -49.0], "expected": 26.0}, {"input": [26.0, -48.5], "expected": 26.0}, {"input": [26.0, -48.0], "expected": 26.0}, {"input": [26.0, -47.5], "expected": 26.0}, {"input": [26.0, -47.0], "expected": 26.0}, {"input": [26.0, -46.5], "expected": 26.0}, {"input": [26.0, -46.0], "expected": 26.0}, {"input": [26.0, -45.5], "expected": 26.0}, {"input": [26.0, -45.0], "expected": 26.0}, {"input": [26.0, -44.5], "expected": 26.0}, {"input": [26.0, -44.0], "expected": 26.0}, {"input": [26.0, -43.5], "expected": 26.0}, {"input": [26.0, -43.0], "expected": 26.0}, {"input": [26.0, -42.5], "expected": 26.0}, {"input": [26.0, -42.0], "expected": 26.0}, {"input": [26.0, -41.5], "expected": 26.0}, {"input": [26.0, -41.0], "expected": 26.0}, {"input": [26.0, -40.5], "expected": 26.0}, {"input": [26.0, -40.0], "expected": 26.0}, {"input": [26.0, -39.5], "expected": 26.0}, {"input": [26.0, -39.0], "expected": 26.0}, {"input": [26.0, -38.5], "expected": 26.0}, {"input": [26.0, -38.0], "expected": 26.0}, {"input": [26.0, -37.5], "expected": 26.0}, {"input": [26.0, -37.0], "expected": 26.0}, {"input": [26.0, -36.5], "expected": 26.0}, {"input": [26.0, -36.0], "expected": 26.0}, {"input": [26.0, -35.5], "expected": 26.0}, {"input": [26.0, -35.0], "expected": 26.0}, {"input": [26.0, -34.5], "expected": 26.0}, {"input": [26.0, -34.0], "expected": 26.0}, {"input": [26.0, -33.5], "expected": 26.0}, {"input": [26.0, -33.0], "expected": 26.0}, {"input": [26.0, -32.5], "expected": 26.0}, {"input": [26.0, -32.0], "expected": 26.0}, {"input": [26.0, -31.5], "expected": 26.0}, {"input": [26.0, -31.0], "expected": 26.0}, {"input": [26.0, -30.5], "expected": 26.0}, {"input": [26.0, -30.0], "expected": 26.0}, {"input": [26.0, -29.5], "expected": 26.0}, {"input": [26.0, -29.0], "expected": 26.0}, {"input": [26.0, -28.5], "expected": 26.0}, {"input": [26.0, -28.0], "expected": 26.0}, {"input": [26.0, -27.5], "expected": 26.0}, {"input": [26.0, -27.0], "expected": 26.0}, {"input": [26.0, -26.5], "expected": 26.0}, {"input": [26.0, -26.0], "expected": 26.0}, {"input": [26.0, -25.5], "expected": 26.0}, {"input": [26.0, -25.0], "expected": 26.0}, {"input": [26.0, -24.5], "expected": 26.0}, {"input": [26.0, -24.0], "expected": 26.0}, {"input": [26.0, -23.5], "expected": 26.0}, {"input": [26.0, -23.0], "expected": 26.0}, {"input": [26.0, -22.5], "expected": 26.0}, {"input": [26.0, -22.0], "expected": 26.0}, {"input": [26.0, -21.5], "expected": 26.0}, {"input": [26.0, -21.0], "expected": 26.0}, {"input": [26.0, -20.5], "expected": 26.0}, {"input": [26.0, -20.0], "expected": 26.0}, {"input": [26.0, -19.5], "expected": 26.0}, {"input": [26.0, -19.0], "expected": 26.0}, {"input": [26.0, -18.5], "expected": 26.0}, {"input": [26.0, -18.0], "expected": 26.0}, {"input": [26.0, -17.5], "expected": 26.0}, {"input": [26.0, -17.0], "expected": 26.0}, {"input": [26.0, -16.5], "expected": 26.0}, {"input": [26.0, -16.0], "expected": 26.0}, {"input": [26.0, -15.5], "expected": 26.0}, {"input": [26.0, -15.0], "expected": 26.0}, {"input": [26.0, -14.5], "expected": 26.0}, {"input": [26.0, -14.0], "expected": 26.0}, {"input": [26.0, -13.5], "expected": 26.0}, {"input": [26.0, -13.0], "expected": 26.0}, {"input": [26.0, -12.5], "expected": 26.0}, {"input": [26.0, -12.0], "expected": 26.0}, {"input": [26.0, -11.5], "expected": 26.0}, {"input": [26.0, -11.0], "expected": 26.0}, {"input": [26.0, -10.5], "expected": 26.0}, {"input": [26.0, -10.0], "expected": 26.0}, {"input": [26.0, -9.5], "expected": 26.0}, {"input": [26.0, -9.0], "expected": 26.0}, {"input": [26.0, -8.5], "expected": 26.0}, {"input": [26.0, -8.0], "expected": 26.0}, {"input": [26.0, -7.5], "expected": 26.000000000000004}, {"input": [26.0, -7.0], "expected": 26.000000000000004}, {"input": [26.0, -6.5], "expected": 26.000000000000007}, {"input": [26.0, -6.0], "expected": 26.000000000000014}, {"input": [26.0, -5.5], "expected": 26.00000000000002}, {"input": [26.0, -5.0], "expected": 26.000000000000036}, {"input": [26.0, -4.5], "expected": 26.000000000000057}, {"input": [26.0, -4.0], "expected": 26.000000000000092}, {"input": [26.0, -3.5], "expected": 26.000000000000153}, {"input": [26.0, -3.0], "expected": 26.000000000000256}, {"input": [26.0, -2.5], "expected": 26.00000000000042}, {"input": [26.0, -2.0], "expected": 26.000000000000693}, {"input": [26.0, -1.5], "expected": 26.00000000000114}, {"input": [26.0, -1.0], "expected": 26.00000000000188}, {"input": [26.0, -0.5], "expected": 26.000000000003098}, {"input": [26.0, 0.0], "expected": 26.00000000000511}, {"input": [26.0, 0.5], "expected": 26.000000000008423}, {"input": [26.0, 1.0], "expected": 26.000000000013888}, {"input": [26.0, 1.5], "expected": 26.000000000022897}, {"input": [26.0, 2.0], "expected": 26.00000000003775}, {"input": [26.0, 2.5], "expected": 26.00000000006224}, {"input": [26.0, 3.0], "expected": 26.00000000010262}, {"input": [26.0, 3.5], "expected": 26.00000000016919}, {"input": [26.0, 4.0], "expected": 26.00000000027895}, {"input": [26.0, 4.5], "expected": 26.000000000459906}, {"input": [26.0, 5.0], "expected": 26.000000000758256}, {"input": [26.0, 5.5], "expected": 26.000000001250154}, {"input": [26.0, 6.0], "expected": 26.000000002061153}, {"input": [26.0, 6.5], "expected": 26.000000003398267}, {"input": [26.0, 7.0], "expected": 26.000000005602796}, {"input": [26.0, 7.5], "expected": 26.00000000923745}, {"input": [26.0, 8.0], "expected": 26.00000001522998}, {"input": [26.0, 8.5], "expected": 26.00000002510999}, {"input": [26.0, 9.0], "expected": 26.000000041399375}, {"input": [26.0, 9.5], "expected": 26.000000068256032}, {"input": [26.0, 10.0], "expected": 26.00000011253517}, {"input": [26.0, 10.5], "expected": 26.00000018553912}, {"input": [26.0, 11.0], "expected": 26.000000305902272}, {"input": [26.0, 11.5], "expected": 26.000000504347536}, {"input": [26.0, 12.0], "expected": 26.000000831528375}, {"input": [26.0, 12.5], "expected": 26.000001370958145}, {"input": [26.0, 13.0], "expected": 26.000002260326852}, {"input": [26.0, 13.5], "expected": 26.000003726646227}, {"input": [26.0, 14.0], "expected": 26.000006144193478}, {"input": [26.0, 14.5], "expected": 26.00001013004229}, {"input": [26.0, 15.0], "expected": 26.000016701561318}, {"input": [26.0, 15.5], "expected": 26.000027536070228}, {"input": [26.0, 16.0], "expected": 26.000045398899218}, {"input": [26.0, 16.5], "expected": 26.00007484902863}, {"input": [26.0, 17.0], "expected": 26.000123402189722}, {"input": [26.0, 17.5], "expected": 26.000203447672128}, {"input": [26.0, 18.0], "expected": 26.000335406372894}, {"input": [26.0, 18.5], "expected": 26.00055293147536}, {"input": [26.0, 19.0], "expected": 26.000911466453775}, {"input": [26.0, 19.5], "expected": 26.001502310159754}, {"input": [26.0, 20.0], "expected": 26.002475685137732}, {"input": [26.0, 20.5], "expected": 26.004078443270572}, {"input": [26.0, 21.0], "expected": 26.006715348489116}, {"input": [26.0, 21.5], "expected": 26.011047744848593}, {"input": [26.0, 22.0], "expected": 26.01814992791781}, {"input": [26.0, 22.5], "expected": 26.02975041827262}, {"input": [26.0, 23.0], "expected": 26.048587351573744}, {"input": [26.0, 23.5], "expected": 26.07888973429255}, {"input": [26.0, 24.0], "expected": 26.126928011042974}, {"input": [26.0, 24.5], "expected": 26.201413277982752}, {"input": [26.0, 25.0], "expected": 26.313261687518224}, {"input": [26.0, 25.5], "expected": 26.47407698418011}, {"input": [26.0, 26.0], "expected": 26.693147180559944}, {"input": [26.0, 26.5], "expected": 26.97407698418011}, {"input": [26.0, 27.0], "expected": 27.313261687518224}, {"input": [26.0, 27.5], "expected": 27.701413277982752}, {"input": [26.0, 28.0], "expected": 28.126928011042974}, {"input": [26.0, 28.5], "expected": 28.57888973429255}, {"input": [26.0, 29.0], "expected": 29.048587351573744}, {"input": [26.0, 29.5], "expected": 29.52975041827262}, {"input": [26.0, 30.0], "expected": 30.01814992791781}, {"input": [26.0, 30.5], "expected": 30.511047744848593}, {"input": [26.0, 31.0], "expected": 31.006715348489116}, {"input": [26.0, 31.5], "expected": 31.504078443270572}, {"input": [26.0, 32.0], "expected": 32.00247568513773}, {"input": [26.0, 32.5], "expected": 32.50150231015976}, {"input": [26.0, 33.0], "expected": 33.00091146645377}, {"input": [26.0, 33.5], "expected": 33.50055293147536}, {"input": [26.0, 34.0], "expected": 34.0003354063729}, {"input": [26.0, 34.5], "expected": 34.50020344767213}, {"input": [26.0, 35.0], "expected": 35.00012340218972}, {"input": [26.0, 35.5], "expected": 35.50007484902863}, {"input": [26.0, 36.0], "expected": 36.00004539889922}, {"input": [26.0, 36.5], "expected": 36.50002753607023}, {"input": [26.0, 37.0], "expected": 37.00001670156132}, {"input": [26.0, 37.5], "expected": 37.50001013004229}, {"input": [26.0, 38.0], "expected": 38.00000614419348}, {"input": [26.0, 38.5], "expected": 38.50000372664623}, {"input": [26.0, 39.0], "expected": 39.00000226032685}, {"input": [26.0, 39.5], "expected": 39.500001370958145}, {"input": [26.0, 40.0], "expected": 40.000000831528375}, {"input": [26.0, 40.5], "expected": 40.50000050434753}, {"input": [26.0, 41.0], "expected": 41.000000305902276}, {"input": [26.0, 41.5], "expected": 41.50000018553912}, {"input": [26.0, 42.0], "expected": 42.00000011253517}, {"input": [26.0, 42.5], "expected": 42.50000006825603}, {"input": [26.0, 43.0], "expected": 43.000000041399375}, {"input": [26.0, 43.5], "expected": 43.50000002510999}, {"input": [26.0, 44.0], "expected": 44.00000001522998}, {"input": [26.0, 44.5], "expected": 44.500000009237446}, {"input": [26.0, 45.0], "expected": 45.00000000560279}, {"input": [26.0, 45.5], "expected": 45.50000000339827}, {"input": [26.0, 46.0], "expected": 46.00000000206116}, {"input": [26.0, 46.5], "expected": 46.50000000125015}, {"input": [26.0, 47.0], "expected": 47.000000000758256}, {"input": [26.0, 47.5], "expected": 47.500000000459906}, {"input": [26.0, 48.0], "expected": 48.000000000278945}, {"input": [26.0, 48.5], "expected": 48.50000000016919}, {"input": [26.0, 49.0], "expected": 49.00000000010262}, {"input": [26.0, 49.5], "expected": 49.50000000006224}, {"input": [26.0, 50.0], "expected": 50.00000000003775}, {"input": [26.0, 50.5], "expected": 50.5000000000229}, {"input": [26.0, 51.0], "expected": 51.00000000001389}, {"input": [26.0, 51.5], "expected": 51.50000000000842}, {"input": [26.0, 52.0], "expected": 52.00000000000511}, {"input": [26.0, 52.5], "expected": 52.5000000000031}, {"input": [26.0, 53.0], "expected": 53.00000000000188}, {"input": [26.0, 53.5], "expected": 53.50000000000114}, {"input": [26.0, 54.0], "expected": 54.00000000000069}, {"input": [26.0, 54.5], "expected": 54.50000000000042}, {"input": [26.0, 55.0], "expected": 55.000000000000256}, {"input": [26.0, 55.5], "expected": 55.500000000000156}, {"input": [26.0, 56.0], "expected": 56.00000000000009}, {"input": [26.0, 56.5], "expected": 56.50000000000006}, {"input": [26.0, 57.0], "expected": 57.000000000000036}, {"input": [26.0, 57.5], "expected": 57.50000000000002}, {"input": [26.0, 58.0], "expected": 58.000000000000014}, {"input": [26.0, 58.5], "expected": 58.50000000000001}, {"input": [26.0, 59.0], "expected": 59.00000000000001}, {"input": [26.0, 59.5], "expected": 59.5}, {"input": [26.0, 60.0], "expected": 60.0}, {"input": [26.0, 60.5], "expected": 60.5}, {"input": [26.0, 61.0], "expected": 61.0}, {"input": [26.0, 61.5], "expected": 61.5}, {"input": [26.0, 62.0], "expected": 62.0}, {"input": [26.0, 62.5], "expected": 62.5}, {"input": [26.0, 63.0], "expected": 63.0}, {"input": [26.0, 63.5], "expected": 63.5}, {"input": [26.0, 64.0], "expected": 64.0}, {"input": [26.0, 64.5], "expected": 64.5}, {"input": [26.0, 65.0], "expected": 65.0}, {"input": [26.0, 65.5], "expected": 65.5}, {"input": [26.0, 66.0], "expected": 66.0}, {"input": [26.0, 66.5], "expected": 66.5}, {"input": [26.0, 67.0], "expected": 67.0}, {"input": [26.0, 67.5], "expected": 67.5}, {"input": [26.0, 68.0], "expected": 68.0}, {"input": [26.0, 68.5], "expected": 68.5}, {"input": [26.0, 69.0], "expected": 69.0}, {"input": [26.0, 69.5], "expected": 69.5}, {"input": [26.0, 70.0], "expected": 70.0}, {"input": [26.0, 70.5], "expected": 70.5}, {"input": [26.0, 71.0], "expected": 71.0}, {"input": [26.0, 71.5], "expected": 71.5}, {"input": [26.0, 72.0], "expected": 72.0}, {"input": [26.0, 72.5], "expected": 72.5}, {"input": [26.0, 73.0], "expected": 73.0}, {"input": [26.0, 73.5], "expected": 73.5}, {"input": [26.0, 74.0], "expected": 74.0}, {"input": [26.0, 74.5], "expected": 74.5}, {"input": [26.0, 75.0], "expected": 75.0}, {"input": [26.0, 75.5], "expected": 75.5}, {"input": [26.0, 76.0], "expected": 76.0}, {"input": [26.0, 76.5], "expected": 76.5}, {"input": [26.0, 77.0], "expected": 77.0}, {"input": [26.0, 77.5], "expected": 77.5}, {"input": [26.0, 78.0], "expected": 78.0}, {"input": [26.0, 78.5], "expected": 78.5}, {"input": [26.0, 79.0], "expected": 79.0}, {"input": [26.0, 79.5], "expected": 79.5}, {"input": [26.0, 80.0], "expected": 80.0}, {"input": [26.0, 80.5], "expected": 80.5}, {"input": [26.0, 81.0], "expected": 81.0}, {"input": [26.0, 81.5], "expected": 81.5}, {"input": [26.0, 82.0], "expected": 82.0}, {"input": [26.0, 82.5], "expected": 82.5}, {"input": [26.0, 83.0], "expected": 83.0}, {"input": [26.0, 83.5], "expected": 83.5}, {"input": [26.0, 84.0], "expected": 84.0}, {"input": [26.0, 84.5], "expected": 84.5}, {"input": [26.0, 85.0], "expected": 85.0}, {"input": [26.0, 85.5], "expected": 85.5}, {"input": [26.0, 86.0], "expected": 86.0}, {"input": [26.0, 86.5], "expected": 86.5}, {"input": [26.0, 87.0], "expected": 87.0}, {"input": [26.0, 87.5], "expected": 87.5}, {"input": [26.0, 88.0], "expected": 88.0}, {"input": [26.0, 88.5], "expected": 88.5}, {"input": [26.0, 89.0], "expected": 89.0}, {"input": [26.0, 89.5], "expected": 89.5}, {"input": [26.0, 90.0], "expected": 90.0}, {"input": [26.0, 90.5], "expected": 90.5}, {"input": [26.0, 91.0], "expected": 91.0}, {"input": [26.0, 91.5], "expected": 91.5}, {"input": [26.0, 92.0], "expected": 92.0}, {"input": [26.0, 92.5], "expected": 92.5}, {"input": [26.0, 93.0], "expected": 93.0}, {"input": [26.0, 93.5], "expected": 93.5}, {"input": [26.0, 94.0], "expected": 94.0}, {"input": [26.0, 94.5], "expected": 94.5}, {"input": [26.0, 95.0], "expected": 95.0}, {"input": [26.0, 95.5], "expected": 95.5}, {"input": [26.0, 96.0], "expected": 96.0}, {"input": [26.0, 96.5], "expected": 96.5}, {"input": [26.0, 97.0], "expected": 97.0}, {"input": [26.0, 97.5], "expected": 97.5}, {"input": [26.0, 98.0], "expected": 98.0}, {"input": [26.0, 98.5], "expected": 98.5}, {"input": [26.0, 99.0], "expected": 99.0}, {"input": [26.0, 99.5], "expected": 99.5}, {"input": [26.5, -100.0], "expected": 26.5}, {"input": [26.5, -99.5], "expected": 26.5}, {"input": [26.5, -99.0], "expected": 26.5}, {"input": [26.5, -98.5], "expected": 26.5}, {"input": [26.5, -98.0], "expected": 26.5}, {"input": [26.5, -97.5], "expected": 26.5}, {"input": [26.5, -97.0], "expected": 26.5}, {"input": [26.5, -96.5], "expected": 26.5}, {"input": [26.5, -96.0], "expected": 26.5}, {"input": [26.5, -95.5], "expected": 26.5}, {"input": [26.5, -95.0], "expected": 26.5}, {"input": [26.5, -94.5], "expected": 26.5}, {"input": [26.5, -94.0], "expected": 26.5}, {"input": [26.5, -93.5], "expected": 26.5}, {"input": [26.5, -93.0], "expected": 26.5}, {"input": [26.5, -92.5], "expected": 26.5}, {"input": [26.5, -92.0], "expected": 26.5}, {"input": [26.5, -91.5], "expected": 26.5}, {"input": [26.5, -91.0], "expected": 26.5}, {"input": [26.5, -90.5], "expected": 26.5}, {"input": [26.5, -90.0], "expected": 26.5}, {"input": [26.5, -89.5], "expected": 26.5}, {"input": [26.5, -89.0], "expected": 26.5}, {"input": [26.5, -88.5], "expected": 26.5}, {"input": [26.5, -88.0], "expected": 26.5}, {"input": [26.5, -87.5], "expected": 26.5}, {"input": [26.5, -87.0], "expected": 26.5}, {"input": [26.5, -86.5], "expected": 26.5}, {"input": [26.5, -86.0], "expected": 26.5}, {"input": [26.5, -85.5], "expected": 26.5}, {"input": [26.5, -85.0], "expected": 26.5}, {"input": [26.5, -84.5], "expected": 26.5}, {"input": [26.5, -84.0], "expected": 26.5}, {"input": [26.5, -83.5], "expected": 26.5}, {"input": [26.5, -83.0], "expected": 26.5}, {"input": [26.5, -82.5], "expected": 26.5}, {"input": [26.5, -82.0], "expected": 26.5}, {"input": [26.5, -81.5], "expected": 26.5}, {"input": [26.5, -81.0], "expected": 26.5}, {"input": [26.5, -80.5], "expected": 26.5}, {"input": [26.5, -80.0], "expected": 26.5}, {"input": [26.5, -79.5], "expected": 26.5}, {"input": [26.5, -79.0], "expected": 26.5}, {"input": [26.5, -78.5], "expected": 26.5}, {"input": [26.5, -78.0], "expected": 26.5}, {"input": [26.5, -77.5], "expected": 26.5}, {"input": [26.5, -77.0], "expected": 26.5}, {"input": [26.5, -76.5], "expected": 26.5}, {"input": [26.5, -76.0], "expected": 26.5}, {"input": [26.5, -75.5], "expected": 26.5}, {"input": [26.5, -75.0], "expected": 26.5}, {"input": [26.5, -74.5], "expected": 26.5}, {"input": [26.5, -74.0], "expected": 26.5}, {"input": [26.5, -73.5], "expected": 26.5}, {"input": [26.5, -73.0], "expected": 26.5}, {"input": [26.5, -72.5], "expected": 26.5}, {"input": [26.5, -72.0], "expected": 26.5}, {"input": [26.5, -71.5], "expected": 26.5}, {"input": [26.5, -71.0], "expected": 26.5}, {"input": [26.5, -70.5], "expected": 26.5}, {"input": [26.5, -70.0], "expected": 26.5}, {"input": [26.5, -69.5], "expected": 26.5}, {"input": [26.5, -69.0], "expected": 26.5}, {"input": [26.5, -68.5], "expected": 26.5}, {"input": [26.5, -68.0], "expected": 26.5}, {"input": [26.5, -67.5], "expected": 26.5}, {"input": [26.5, -67.0], "expected": 26.5}, {"input": [26.5, -66.5], "expected": 26.5}, {"input": [26.5, -66.0], "expected": 26.5}, {"input": [26.5, -65.5], "expected": 26.5}, {"input": [26.5, -65.0], "expected": 26.5}, {"input": [26.5, -64.5], "expected": 26.5}, {"input": [26.5, -64.0], "expected": 26.5}, {"input": [26.5, -63.5], "expected": 26.5}, {"input": [26.5, -63.0], "expected": 26.5}, {"input": [26.5, -62.5], "expected": 26.5}, {"input": [26.5, -62.0], "expected": 26.5}, {"input": [26.5, -61.5], "expected": 26.5}, {"input": [26.5, -61.0], "expected": 26.5}, {"input": [26.5, -60.5], "expected": 26.5}, {"input": [26.5, -60.0], "expected": 26.5}, {"input": [26.5, -59.5], "expected": 26.5}, {"input": [26.5, -59.0], "expected": 26.5}, {"input": [26.5, -58.5], "expected": 26.5}, {"input": [26.5, -58.0], "expected": 26.5}, {"input": [26.5, -57.5], "expected": 26.5}, {"input": [26.5, -57.0], "expected": 26.5}, {"input": [26.5, -56.5], "expected": 26.5}, {"input": [26.5, -56.0], "expected": 26.5}, {"input": [26.5, -55.5], "expected": 26.5}, {"input": [26.5, -55.0], "expected": 26.5}, {"input": [26.5, -54.5], "expected": 26.5}, {"input": [26.5, -54.0], "expected": 26.5}, {"input": [26.5, -53.5], "expected": 26.5}, {"input": [26.5, -53.0], "expected": 26.5}, {"input": [26.5, -52.5], "expected": 26.5}, {"input": [26.5, -52.0], "expected": 26.5}, {"input": [26.5, -51.5], "expected": 26.5}, {"input": [26.5, -51.0], "expected": 26.5}, {"input": [26.5, -50.5], "expected": 26.5}, {"input": [26.5, -50.0], "expected": 26.5}, {"input": [26.5, -49.5], "expected": 26.5}, {"input": [26.5, -49.0], "expected": 26.5}, {"input": [26.5, -48.5], "expected": 26.5}, {"input": [26.5, -48.0], "expected": 26.5}, {"input": [26.5, -47.5], "expected": 26.5}, {"input": [26.5, -47.0], "expected": 26.5}, {"input": [26.5, -46.5], "expected": 26.5}, {"input": [26.5, -46.0], "expected": 26.5}, {"input": [26.5, -45.5], "expected": 26.5}, {"input": [26.5, -45.0], "expected": 26.5}, {"input": [26.5, -44.5], "expected": 26.5}, {"input": [26.5, -44.0], "expected": 26.5}, {"input": [26.5, -43.5], "expected": 26.5}, {"input": [26.5, -43.0], "expected": 26.5}, {"input": [26.5, -42.5], "expected": 26.5}, {"input": [26.5, -42.0], "expected": 26.5}, {"input": [26.5, -41.5], "expected": 26.5}, {"input": [26.5, -41.0], "expected": 26.5}, {"input": [26.5, -40.5], "expected": 26.5}, {"input": [26.5, -40.0], "expected": 26.5}, {"input": [26.5, -39.5], "expected": 26.5}, {"input": [26.5, -39.0], "expected": 26.5}, {"input": [26.5, -38.5], "expected": 26.5}, {"input": [26.5, -38.0], "expected": 26.5}, {"input": [26.5, -37.5], "expected": 26.5}, {"input": [26.5, -37.0], "expected": 26.5}, {"input": [26.5, -36.5], "expected": 26.5}, {"input": [26.5, -36.0], "expected": 26.5}, {"input": [26.5, -35.5], "expected": 26.5}, {"input": [26.5, -35.0], "expected": 26.5}, {"input": [26.5, -34.5], "expected": 26.5}, {"input": [26.5, -34.0], "expected": 26.5}, {"input": [26.5, -33.5], "expected": 26.5}, {"input": [26.5, -33.0], "expected": 26.5}, {"input": [26.5, -32.5], "expected": 26.5}, {"input": [26.5, -32.0], "expected": 26.5}, {"input": [26.5, -31.5], "expected": 26.5}, {"input": [26.5, -31.0], "expected": 26.5}, {"input": [26.5, -30.5], "expected": 26.5}, {"input": [26.5, -30.0], "expected": 26.5}, {"input": [26.5, -29.5], "expected": 26.5}, {"input": [26.5, -29.0], "expected": 26.5}, {"input": [26.5, -28.5], "expected": 26.5}, {"input": [26.5, -28.0], "expected": 26.5}, {"input": [26.5, -27.5], "expected": 26.5}, {"input": [26.5, -27.0], "expected": 26.5}, {"input": [26.5, -26.5], "expected": 26.5}, {"input": [26.5, -26.0], "expected": 26.5}, {"input": [26.5, -25.5], "expected": 26.5}, {"input": [26.5, -25.0], "expected": 26.5}, {"input": [26.5, -24.5], "expected": 26.5}, {"input": [26.5, -24.0], "expected": 26.5}, {"input": [26.5, -23.5], "expected": 26.5}, {"input": [26.5, -23.0], "expected": 26.5}, {"input": [26.5, -22.5], "expected": 26.5}, {"input": [26.5, -22.0], "expected": 26.5}, {"input": [26.5, -21.5], "expected": 26.5}, {"input": [26.5, -21.0], "expected": 26.5}, {"input": [26.5, -20.5], "expected": 26.5}, {"input": [26.5, -20.0], "expected": 26.5}, {"input": [26.5, -19.5], "expected": 26.5}, {"input": [26.5, -19.0], "expected": 26.5}, {"input": [26.5, -18.5], "expected": 26.5}, {"input": [26.5, -18.0], "expected": 26.5}, {"input": [26.5, -17.5], "expected": 26.5}, {"input": [26.5, -17.0], "expected": 26.5}, {"input": [26.5, -16.5], "expected": 26.5}, {"input": [26.5, -16.0], "expected": 26.5}, {"input": [26.5, -15.5], "expected": 26.5}, {"input": [26.5, -15.0], "expected": 26.5}, {"input": [26.5, -14.5], "expected": 26.5}, {"input": [26.5, -14.0], "expected": 26.5}, {"input": [26.5, -13.5], "expected": 26.5}, {"input": [26.5, -13.0], "expected": 26.5}, {"input": [26.5, -12.5], "expected": 26.5}, {"input": [26.5, -12.0], "expected": 26.5}, {"input": [26.5, -11.5], "expected": 26.5}, {"input": [26.5, -11.0], "expected": 26.5}, {"input": [26.5, -10.5], "expected": 26.5}, {"input": [26.5, -10.0], "expected": 26.5}, {"input": [26.5, -9.5], "expected": 26.5}, {"input": [26.5, -9.0], "expected": 26.5}, {"input": [26.5, -8.5], "expected": 26.5}, {"input": [26.5, -8.0], "expected": 26.5}, {"input": [26.5, -7.5], "expected": 26.5}, {"input": [26.5, -7.0], "expected": 26.500000000000004}, {"input": [26.5, -6.5], "expected": 26.500000000000004}, {"input": [26.5, -6.0], "expected": 26.500000000000007}, {"input": [26.5, -5.5], "expected": 26.500000000000014}, {"input": [26.5, -5.0], "expected": 26.50000000000002}, {"input": [26.5, -4.5], "expected": 26.500000000000036}, {"input": [26.5, -4.0], "expected": 26.500000000000057}, {"input": [26.5, -3.5], "expected": 26.500000000000092}, {"input": [26.5, -3.0], "expected": 26.500000000000153}, {"input": [26.5, -2.5], "expected": 26.500000000000256}, {"input": [26.5, -2.0], "expected": 26.50000000000042}, {"input": [26.5, -1.5], "expected": 26.500000000000693}, {"input": [26.5, -1.0], "expected": 26.50000000000114}, {"input": [26.5, -0.5], "expected": 26.50000000000188}, {"input": [26.5, 0.0], "expected": 26.500000000003098}, {"input": [26.5, 0.5], "expected": 26.50000000000511}, {"input": [26.5, 1.0], "expected": 26.500000000008423}, {"input": [26.5, 1.5], "expected": 26.500000000013888}, {"input": [26.5, 2.0], "expected": 26.500000000022897}, {"input": [26.5, 2.5], "expected": 26.50000000003775}, {"input": [26.5, 3.0], "expected": 26.50000000006224}, {"input": [26.5, 3.5], "expected": 26.50000000010262}, {"input": [26.5, 4.0], "expected": 26.50000000016919}, {"input": [26.5, 4.5], "expected": 26.50000000027895}, {"input": [26.5, 5.0], "expected": 26.500000000459906}, {"input": [26.5, 5.5], "expected": 26.500000000758256}, {"input": [26.5, 6.0], "expected": 26.500000001250154}, {"input": [26.5, 6.5], "expected": 26.500000002061153}, {"input": [26.5, 7.0], "expected": 26.500000003398267}, {"input": [26.5, 7.5], "expected": 26.500000005602796}, {"input": [26.5, 8.0], "expected": 26.50000000923745}, {"input": [26.5, 8.5], "expected": 26.50000001522998}, {"input": [26.5, 9.0], "expected": 26.50000002510999}, {"input": [26.5, 9.5], "expected": 26.500000041399375}, {"input": [26.5, 10.0], "expected": 26.500000068256032}, {"input": [26.5, 10.5], "expected": 26.50000011253517}, {"input": [26.5, 11.0], "expected": 26.50000018553912}, {"input": [26.5, 11.5], "expected": 26.500000305902272}, {"input": [26.5, 12.0], "expected": 26.500000504347536}, {"input": [26.5, 12.5], "expected": 26.500000831528375}, {"input": [26.5, 13.0], "expected": 26.500001370958145}, {"input": [26.5, 13.5], "expected": 26.500002260326852}, {"input": [26.5, 14.0], "expected": 26.500003726646227}, {"input": [26.5, 14.5], "expected": 26.500006144193478}, {"input": [26.5, 15.0], "expected": 26.50001013004229}, {"input": [26.5, 15.5], "expected": 26.500016701561318}, {"input": [26.5, 16.0], "expected": 26.500027536070228}, {"input": [26.5, 16.5], "expected": 26.500045398899218}, {"input": [26.5, 17.0], "expected": 26.50007484902863}, {"input": [26.5, 17.5], "expected": 26.500123402189722}, {"input": [26.5, 18.0], "expected": 26.500203447672128}, {"input": [26.5, 18.5], "expected": 26.500335406372894}, {"input": [26.5, 19.0], "expected": 26.50055293147536}, {"input": [26.5, 19.5], "expected": 26.500911466453775}, {"input": [26.5, 20.0], "expected": 26.501502310159754}, {"input": [26.5, 20.5], "expected": 26.502475685137732}, {"input": [26.5, 21.0], "expected": 26.504078443270572}, {"input": [26.5, 21.5], "expected": 26.506715348489116}, {"input": [26.5, 22.0], "expected": 26.511047744848593}, {"input": [26.5, 22.5], "expected": 26.51814992791781}, {"input": [26.5, 23.0], "expected": 26.52975041827262}, {"input": [26.5, 23.5], "expected": 26.548587351573744}, {"input": [26.5, 24.0], "expected": 26.57888973429255}, {"input": [26.5, 24.5], "expected": 26.626928011042974}, {"input": [26.5, 25.0], "expected": 26.701413277982752}, {"input": [26.5, 25.5], "expected": 26.813261687518224}, {"input": [26.5, 26.0], "expected": 26.97407698418011}, {"input": [26.5, 26.5], "expected": 27.193147180559944}, {"input": [26.5, 27.0], "expected": 27.47407698418011}, {"input": [26.5, 27.5], "expected": 27.813261687518224}, {"input": [26.5, 28.0], "expected": 28.201413277982752}, {"input": [26.5, 28.5], "expected": 28.626928011042974}, {"input": [26.5, 29.0], "expected": 29.07888973429255}, {"input": [26.5, 29.5], "expected": 29.548587351573744}, {"input": [26.5, 30.0], "expected": 30.02975041827262}, {"input": [26.5, 30.5], "expected": 30.51814992791781}, {"input": [26.5, 31.0], "expected": 31.011047744848593}, {"input": [26.5, 31.5], "expected": 31.506715348489116}, {"input": [26.5, 32.0], "expected": 32.00407844327057}, {"input": [26.5, 32.5], "expected": 32.50247568513773}, {"input": [26.5, 33.0], "expected": 33.00150231015976}, {"input": [26.5, 33.5], "expected": 33.50091146645377}, {"input": [26.5, 34.0], "expected": 34.00055293147536}, {"input": [26.5, 34.5], "expected": 34.5003354063729}, {"input": [26.5, 35.0], "expected": 35.00020344767213}, {"input": [26.5, 35.5], "expected": 35.50012340218972}, {"input": [26.5, 36.0], "expected": 36.00007484902863}, {"input": [26.5, 36.5], "expected": 36.50004539889922}, {"input": [26.5, 37.0], "expected": 37.00002753607023}, {"input": [26.5, 37.5], "expected": 37.50001670156132}, {"input": [26.5, 38.0], "expected": 38.00001013004229}, {"input": [26.5, 38.5], "expected": 38.50000614419348}, {"input": [26.5, 39.0], "expected": 39.00000372664623}, {"input": [26.5, 39.5], "expected": 39.50000226032685}, {"input": [26.5, 40.0], "expected": 40.000001370958145}, {"input": [26.5, 40.5], "expected": 40.500000831528375}, {"input": [26.5, 41.0], "expected": 41.00000050434753}, {"input": [26.5, 41.5], "expected": 41.500000305902276}, {"input": [26.5, 42.0], "expected": 42.00000018553912}, {"input": [26.5, 42.5], "expected": 42.50000011253517}, {"input": [26.5, 43.0], "expected": 43.00000006825603}, {"input": [26.5, 43.5], "expected": 43.500000041399375}, {"input": [26.5, 44.0], "expected": 44.00000002510999}, {"input": [26.5, 44.5], "expected": 44.50000001522998}, {"input": [26.5, 45.0], "expected": 45.000000009237446}, {"input": [26.5, 45.5], "expected": 45.50000000560279}, {"input": [26.5, 46.0], "expected": 46.00000000339827}, {"input": [26.5, 46.5], "expected": 46.50000000206116}, {"input": [26.5, 47.0], "expected": 47.00000000125015}, {"input": [26.5, 47.5], "expected": 47.500000000758256}, {"input": [26.5, 48.0], "expected": 48.000000000459906}, {"input": [26.5, 48.5], "expected": 48.500000000278945}, {"input": [26.5, 49.0], "expected": 49.00000000016919}, {"input": [26.5, 49.5], "expected": 49.50000000010262}, {"input": [26.5, 50.0], "expected": 50.00000000006224}, {"input": [26.5, 50.5], "expected": 50.50000000003775}, {"input": [26.5, 51.0], "expected": 51.0000000000229}, {"input": [26.5, 51.5], "expected": 51.50000000001389}, {"input": [26.5, 52.0], "expected": 52.00000000000842}, {"input": [26.5, 52.5], "expected": 52.50000000000511}, {"input": [26.5, 53.0], "expected": 53.0000000000031}, {"input": [26.5, 53.5], "expected": 53.50000000000188}, {"input": [26.5, 54.0], "expected": 54.00000000000114}, {"input": [26.5, 54.5], "expected": 54.50000000000069}, {"input": [26.5, 55.0], "expected": 55.00000000000042}, {"input": [26.5, 55.5], "expected": 55.500000000000256}, {"input": [26.5, 56.0], "expected": 56.000000000000156}, {"input": [26.5, 56.5], "expected": 56.50000000000009}, {"input": [26.5, 57.0], "expected": 57.00000000000006}, {"input": [26.5, 57.5], "expected": 57.500000000000036}, {"input": [26.5, 58.0], "expected": 58.00000000000002}, {"input": [26.5, 58.5], "expected": 58.500000000000014}, {"input": [26.5, 59.0], "expected": 59.00000000000001}, {"input": [26.5, 59.5], "expected": 59.50000000000001}, {"input": [26.5, 60.0], "expected": 60.0}, {"input": [26.5, 60.5], "expected": 60.5}, {"input": [26.5, 61.0], "expected": 61.0}, {"input": [26.5, 61.5], "expected": 61.5}, {"input": [26.5, 62.0], "expected": 62.0}, {"input": [26.5, 62.5], "expected": 62.5}, {"input": [26.5, 63.0], "expected": 63.0}, {"input": [26.5, 63.5], "expected": 63.5}, {"input": [26.5, 64.0], "expected": 64.0}, {"input": [26.5, 64.5], "expected": 64.5}, {"input": [26.5, 65.0], "expected": 65.0}, {"input": [26.5, 65.5], "expected": 65.5}, {"input": [26.5, 66.0], "expected": 66.0}, {"input": [26.5, 66.5], "expected": 66.5}, {"input": [26.5, 67.0], "expected": 67.0}, {"input": [26.5, 67.5], "expected": 67.5}, {"input": [26.5, 68.0], "expected": 68.0}, {"input": [26.5, 68.5], "expected": 68.5}, {"input": [26.5, 69.0], "expected": 69.0}, {"input": [26.5, 69.5], "expected": 69.5}, {"input": [26.5, 70.0], "expected": 70.0}, {"input": [26.5, 70.5], "expected": 70.5}, {"input": [26.5, 71.0], "expected": 71.0}, {"input": [26.5, 71.5], "expected": 71.5}, {"input": [26.5, 72.0], "expected": 72.0}, {"input": [26.5, 72.5], "expected": 72.5}, {"input": [26.5, 73.0], "expected": 73.0}, {"input": [26.5, 73.5], "expected": 73.5}, {"input": [26.5, 74.0], "expected": 74.0}, {"input": [26.5, 74.5], "expected": 74.5}, {"input": [26.5, 75.0], "expected": 75.0}, {"input": [26.5, 75.5], "expected": 75.5}, {"input": [26.5, 76.0], "expected": 76.0}, {"input": [26.5, 76.5], "expected": 76.5}, {"input": [26.5, 77.0], "expected": 77.0}, {"input": [26.5, 77.5], "expected": 77.5}, {"input": [26.5, 78.0], "expected": 78.0}, {"input": [26.5, 78.5], "expected": 78.5}, {"input": [26.5, 79.0], "expected": 79.0}, {"input": [26.5, 79.5], "expected": 79.5}, {"input": [26.5, 80.0], "expected": 80.0}, {"input": [26.5, 80.5], "expected": 80.5}, {"input": [26.5, 81.0], "expected": 81.0}, {"input": [26.5, 81.5], "expected": 81.5}, {"input": [26.5, 82.0], "expected": 82.0}, {"input": [26.5, 82.5], "expected": 82.5}, {"input": [26.5, 83.0], "expected": 83.0}, {"input": [26.5, 83.5], "expected": 83.5}, {"input": [26.5, 84.0], "expected": 84.0}, {"input": [26.5, 84.5], "expected": 84.5}, {"input": [26.5, 85.0], "expected": 85.0}, {"input": [26.5, 85.5], "expected": 85.5}, {"input": [26.5, 86.0], "expected": 86.0}, {"input": [26.5, 86.5], "expected": 86.5}, {"input": [26.5, 87.0], "expected": 87.0}, {"input": [26.5, 87.5], "expected": 87.5}, {"input": [26.5, 88.0], "expected": 88.0}, {"input": [26.5, 88.5], "expected": 88.5}, {"input": [26.5, 89.0], "expected": 89.0}, {"input": [26.5, 89.5], "expected": 89.5}, {"input": [26.5, 90.0], "expected": 90.0}, {"input": [26.5, 90.5], "expected": 90.5}, {"input": [26.5, 91.0], "expected": 91.0}, {"input": [26.5, 91.5], "expected": 91.5}, {"input": [26.5, 92.0], "expected": 92.0}, {"input": [26.5, 92.5], "expected": 92.5}, {"input": [26.5, 93.0], "expected": 93.0}, {"input": [26.5, 93.5], "expected": 93.5}, {"input": [26.5, 94.0], "expected": 94.0}, {"input": [26.5, 94.5], "expected": 94.5}, {"input": [26.5, 95.0], "expected": 95.0}, {"input": [26.5, 95.5], "expected": 95.5}, {"input": [26.5, 96.0], "expected": 96.0}, {"input": [26.5, 96.5], "expected": 96.5}, {"input": [26.5, 97.0], "expected": 97.0}, {"input": [26.5, 97.5], "expected": 97.5}, {"input": [26.5, 98.0], "expected": 98.0}, {"input": [26.5, 98.5], "expected": 98.5}, {"input": [26.5, 99.0], "expected": 99.0}, {"input": [26.5, 99.5], "expected": 99.5}, {"input": [27.0, -100.0], "expected": 27.0}, {"input": [27.0, -99.5], "expected": 27.0}, {"input": [27.0, -99.0], "expected": 27.0}, {"input": [27.0, -98.5], "expected": 27.0}, {"input": [27.0, -98.0], "expected": 27.0}, {"input": [27.0, -97.5], "expected": 27.0}, {"input": [27.0, -97.0], "expected": 27.0}, {"input": [27.0, -96.5], "expected": 27.0}, {"input": [27.0, -96.0], "expected": 27.0}, {"input": [27.0, -95.5], "expected": 27.0}, {"input": [27.0, -95.0], "expected": 27.0}, {"input": [27.0, -94.5], "expected": 27.0}, {"input": [27.0, -94.0], "expected": 27.0}, {"input": [27.0, -93.5], "expected": 27.0}, {"input": [27.0, -93.0], "expected": 27.0}, {"input": [27.0, -92.5], "expected": 27.0}, {"input": [27.0, -92.0], "expected": 27.0}, {"input": [27.0, -91.5], "expected": 27.0}, {"input": [27.0, -91.0], "expected": 27.0}, {"input": [27.0, -90.5], "expected": 27.0}, {"input": [27.0, -90.0], "expected": 27.0}, {"input": [27.0, -89.5], "expected": 27.0}, {"input": [27.0, -89.0], "expected": 27.0}, {"input": [27.0, -88.5], "expected": 27.0}, {"input": [27.0, -88.0], "expected": 27.0}, {"input": [27.0, -87.5], "expected": 27.0}, {"input": [27.0, -87.0], "expected": 27.0}, {"input": [27.0, -86.5], "expected": 27.0}, {"input": [27.0, -86.0], "expected": 27.0}, {"input": [27.0, -85.5], "expected": 27.0}, {"input": [27.0, -85.0], "expected": 27.0}, {"input": [27.0, -84.5], "expected": 27.0}, {"input": [27.0, -84.0], "expected": 27.0}, {"input": [27.0, -83.5], "expected": 27.0}, {"input": [27.0, -83.0], "expected": 27.0}, {"input": [27.0, -82.5], "expected": 27.0}, {"input": [27.0, -82.0], "expected": 27.0}, {"input": [27.0, -81.5], "expected": 27.0}, {"input": [27.0, -81.0], "expected": 27.0}, {"input": [27.0, -80.5], "expected": 27.0}, {"input": [27.0, -80.0], "expected": 27.0}, {"input": [27.0, -79.5], "expected": 27.0}, {"input": [27.0, -79.0], "expected": 27.0}, {"input": [27.0, -78.5], "expected": 27.0}, {"input": [27.0, -78.0], "expected": 27.0}, {"input": [27.0, -77.5], "expected": 27.0}, {"input": [27.0, -77.0], "expected": 27.0}, {"input": [27.0, -76.5], "expected": 27.0}, {"input": [27.0, -76.0], "expected": 27.0}, {"input": [27.0, -75.5], "expected": 27.0}, {"input": [27.0, -75.0], "expected": 27.0}, {"input": [27.0, -74.5], "expected": 27.0}, {"input": [27.0, -74.0], "expected": 27.0}, {"input": [27.0, -73.5], "expected": 27.0}, {"input": [27.0, -73.0], "expected": 27.0}, {"input": [27.0, -72.5], "expected": 27.0}, {"input": [27.0, -72.0], "expected": 27.0}, {"input": [27.0, -71.5], "expected": 27.0}, {"input": [27.0, -71.0], "expected": 27.0}, {"input": [27.0, -70.5], "expected": 27.0}, {"input": [27.0, -70.0], "expected": 27.0}, {"input": [27.0, -69.5], "expected": 27.0}, {"input": [27.0, -69.0], "expected": 27.0}, {"input": [27.0, -68.5], "expected": 27.0}, {"input": [27.0, -68.0], "expected": 27.0}, {"input": [27.0, -67.5], "expected": 27.0}, {"input": [27.0, -67.0], "expected": 27.0}, {"input": [27.0, -66.5], "expected": 27.0}, {"input": [27.0, -66.0], "expected": 27.0}, {"input": [27.0, -65.5], "expected": 27.0}, {"input": [27.0, -65.0], "expected": 27.0}, {"input": [27.0, -64.5], "expected": 27.0}, {"input": [27.0, -64.0], "expected": 27.0}, {"input": [27.0, -63.5], "expected": 27.0}, {"input": [27.0, -63.0], "expected": 27.0}, {"input": [27.0, -62.5], "expected": 27.0}, {"input": [27.0, -62.0], "expected": 27.0}, {"input": [27.0, -61.5], "expected": 27.0}, {"input": [27.0, -61.0], "expected": 27.0}, {"input": [27.0, -60.5], "expected": 27.0}, {"input": [27.0, -60.0], "expected": 27.0}, {"input": [27.0, -59.5], "expected": 27.0}, {"input": [27.0, -59.0], "expected": 27.0}, {"input": [27.0, -58.5], "expected": 27.0}, {"input": [27.0, -58.0], "expected": 27.0}, {"input": [27.0, -57.5], "expected": 27.0}, {"input": [27.0, -57.0], "expected": 27.0}, {"input": [27.0, -56.5], "expected": 27.0}, {"input": [27.0, -56.0], "expected": 27.0}, {"input": [27.0, -55.5], "expected": 27.0}, {"input": [27.0, -55.0], "expected": 27.0}, {"input": [27.0, -54.5], "expected": 27.0}, {"input": [27.0, -54.0], "expected": 27.0}, {"input": [27.0, -53.5], "expected": 27.0}, {"input": [27.0, -53.0], "expected": 27.0}, {"input": [27.0, -52.5], "expected": 27.0}, {"input": [27.0, -52.0], "expected": 27.0}, {"input": [27.0, -51.5], "expected": 27.0}, {"input": [27.0, -51.0], "expected": 27.0}, {"input": [27.0, -50.5], "expected": 27.0}, {"input": [27.0, -50.0], "expected": 27.0}, {"input": [27.0, -49.5], "expected": 27.0}, {"input": [27.0, -49.0], "expected": 27.0}, {"input": [27.0, -48.5], "expected": 27.0}, {"input": [27.0, -48.0], "expected": 27.0}, {"input": [27.0, -47.5], "expected": 27.0}, {"input": [27.0, -47.0], "expected": 27.0}, {"input": [27.0, -46.5], "expected": 27.0}, {"input": [27.0, -46.0], "expected": 27.0}, {"input": [27.0, -45.5], "expected": 27.0}, {"input": [27.0, -45.0], "expected": 27.0}, {"input": [27.0, -44.5], "expected": 27.0}, {"input": [27.0, -44.0], "expected": 27.0}, {"input": [27.0, -43.5], "expected": 27.0}, {"input": [27.0, -43.0], "expected": 27.0}, {"input": [27.0, -42.5], "expected": 27.0}, {"input": [27.0, -42.0], "expected": 27.0}, {"input": [27.0, -41.5], "expected": 27.0}, {"input": [27.0, -41.0], "expected": 27.0}, {"input": [27.0, -40.5], "expected": 27.0}, {"input": [27.0, -40.0], "expected": 27.0}, {"input": [27.0, -39.5], "expected": 27.0}, {"input": [27.0, -39.0], "expected": 27.0}, {"input": [27.0, -38.5], "expected": 27.0}, {"input": [27.0, -38.0], "expected": 27.0}, {"input": [27.0, -37.5], "expected": 27.0}, {"input": [27.0, -37.0], "expected": 27.0}, {"input": [27.0, -36.5], "expected": 27.0}, {"input": [27.0, -36.0], "expected": 27.0}, {"input": [27.0, -35.5], "expected": 27.0}, {"input": [27.0, -35.0], "expected": 27.0}, {"input": [27.0, -34.5], "expected": 27.0}, {"input": [27.0, -34.0], "expected": 27.0}, {"input": [27.0, -33.5], "expected": 27.0}, {"input": [27.0, -33.0], "expected": 27.0}, {"input": [27.0, -32.5], "expected": 27.0}, {"input": [27.0, -32.0], "expected": 27.0}, {"input": [27.0, -31.5], "expected": 27.0}, {"input": [27.0, -31.0], "expected": 27.0}, {"input": [27.0, -30.5], "expected": 27.0}, {"input": [27.0, -30.0], "expected": 27.0}, {"input": [27.0, -29.5], "expected": 27.0}, {"input": [27.0, -29.0], "expected": 27.0}, {"input": [27.0, -28.5], "expected": 27.0}, {"input": [27.0, -28.0], "expected": 27.0}, {"input": [27.0, -27.5], "expected": 27.0}, {"input": [27.0, -27.0], "expected": 27.0}, {"input": [27.0, -26.5], "expected": 27.0}, {"input": [27.0, -26.0], "expected": 27.0}, {"input": [27.0, -25.5], "expected": 27.0}, {"input": [27.0, -25.0], "expected": 27.0}, {"input": [27.0, -24.5], "expected": 27.0}, {"input": [27.0, -24.0], "expected": 27.0}, {"input": [27.0, -23.5], "expected": 27.0}, {"input": [27.0, -23.0], "expected": 27.0}, {"input": [27.0, -22.5], "expected": 27.0}, {"input": [27.0, -22.0], "expected": 27.0}, {"input": [27.0, -21.5], "expected": 27.0}, {"input": [27.0, -21.0], "expected": 27.0}, {"input": [27.0, -20.5], "expected": 27.0}, {"input": [27.0, -20.0], "expected": 27.0}, {"input": [27.0, -19.5], "expected": 27.0}, {"input": [27.0, -19.0], "expected": 27.0}, {"input": [27.0, -18.5], "expected": 27.0}, {"input": [27.0, -18.0], "expected": 27.0}, {"input": [27.0, -17.5], "expected": 27.0}, {"input": [27.0, -17.0], "expected": 27.0}, {"input": [27.0, -16.5], "expected": 27.0}, {"input": [27.0, -16.0], "expected": 27.0}, {"input": [27.0, -15.5], "expected": 27.0}, {"input": [27.0, -15.0], "expected": 27.0}, {"input": [27.0, -14.5], "expected": 27.0}, {"input": [27.0, -14.0], "expected": 27.0}, {"input": [27.0, -13.5], "expected": 27.0}, {"input": [27.0, -13.0], "expected": 27.0}, {"input": [27.0, -12.5], "expected": 27.0}, {"input": [27.0, -12.0], "expected": 27.0}, {"input": [27.0, -11.5], "expected": 27.0}, {"input": [27.0, -11.0], "expected": 27.0}, {"input": [27.0, -10.5], "expected": 27.0}, {"input": [27.0, -10.0], "expected": 27.0}, {"input": [27.0, -9.5], "expected": 27.0}, {"input": [27.0, -9.0], "expected": 27.0}, {"input": [27.0, -8.5], "expected": 27.0}, {"input": [27.0, -8.0], "expected": 27.0}, {"input": [27.0, -7.5], "expected": 27.0}, {"input": [27.0, -7.0], "expected": 27.0}, {"input": [27.0, -6.5], "expected": 27.000000000000004}, {"input": [27.0, -6.0], "expected": 27.000000000000004}, {"input": [27.0, -5.5], "expected": 27.000000000000007}, {"input": [27.0, -5.0], "expected": 27.000000000000014}, {"input": [27.0, -4.5], "expected": 27.00000000000002}, {"input": [27.0, -4.0], "expected": 27.000000000000036}, {"input": [27.0, -3.5], "expected": 27.000000000000057}, {"input": [27.0, -3.0], "expected": 27.000000000000092}, {"input": [27.0, -2.5], "expected": 27.000000000000153}, {"input": [27.0, -2.0], "expected": 27.000000000000256}, {"input": [27.0, -1.5], "expected": 27.00000000000042}, {"input": [27.0, -1.0], "expected": 27.000000000000693}, {"input": [27.0, -0.5], "expected": 27.00000000000114}, {"input": [27.0, 0.0], "expected": 27.00000000000188}, {"input": [27.0, 0.5], "expected": 27.000000000003098}, {"input": [27.0, 1.0], "expected": 27.00000000000511}, {"input": [27.0, 1.5], "expected": 27.000000000008423}, {"input": [27.0, 2.0], "expected": 27.000000000013888}, {"input": [27.0, 2.5], "expected": 27.000000000022897}, {"input": [27.0, 3.0], "expected": 27.00000000003775}, {"input": [27.0, 3.5], "expected": 27.00000000006224}, {"input": [27.0, 4.0], "expected": 27.00000000010262}, {"input": [27.0, 4.5], "expected": 27.00000000016919}, {"input": [27.0, 5.0], "expected": 27.00000000027895}, {"input": [27.0, 5.5], "expected": 27.000000000459906}, {"input": [27.0, 6.0], "expected": 27.000000000758256}, {"input": [27.0, 6.5], "expected": 27.000000001250154}, {"input": [27.0, 7.0], "expected": 27.000000002061153}, {"input": [27.0, 7.5], "expected": 27.000000003398267}, {"input": [27.0, 8.0], "expected": 27.000000005602796}, {"input": [27.0, 8.5], "expected": 27.00000000923745}, {"input": [27.0, 9.0], "expected": 27.00000001522998}, {"input": [27.0, 9.5], "expected": 27.00000002510999}, {"input": [27.0, 10.0], "expected": 27.000000041399375}, {"input": [27.0, 10.5], "expected": 27.000000068256032}, {"input": [27.0, 11.0], "expected": 27.00000011253517}, {"input": [27.0, 11.5], "expected": 27.00000018553912}, {"input": [27.0, 12.0], "expected": 27.000000305902272}, {"input": [27.0, 12.5], "expected": 27.000000504347536}, {"input": [27.0, 13.0], "expected": 27.000000831528375}, {"input": [27.0, 13.5], "expected": 27.000001370958145}, {"input": [27.0, 14.0], "expected": 27.000002260326852}, {"input": [27.0, 14.5], "expected": 27.000003726646227}, {"input": [27.0, 15.0], "expected": 27.000006144193478}, {"input": [27.0, 15.5], "expected": 27.00001013004229}, {"input": [27.0, 16.0], "expected": 27.000016701561318}, {"input": [27.0, 16.5], "expected": 27.000027536070228}, {"input": [27.0, 17.0], "expected": 27.000045398899218}, {"input": [27.0, 17.5], "expected": 27.00007484902863}, {"input": [27.0, 18.0], "expected": 27.000123402189722}, {"input": [27.0, 18.5], "expected": 27.000203447672128}, {"input": [27.0, 19.0], "expected": 27.000335406372894}, {"input": [27.0, 19.5], "expected": 27.00055293147536}, {"input": [27.0, 20.0], "expected": 27.000911466453775}, {"input": [27.0, 20.5], "expected": 27.001502310159754}, {"input": [27.0, 21.0], "expected": 27.002475685137732}, {"input": [27.0, 21.5], "expected": 27.004078443270572}, {"input": [27.0, 22.0], "expected": 27.006715348489116}, {"input": [27.0, 22.5], "expected": 27.011047744848593}, {"input": [27.0, 23.0], "expected": 27.01814992791781}, {"input": [27.0, 23.5], "expected": 27.02975041827262}, {"input": [27.0, 24.0], "expected": 27.048587351573744}, {"input": [27.0, 24.5], "expected": 27.07888973429255}, {"input": [27.0, 25.0], "expected": 27.126928011042974}, {"input": [27.0, 25.5], "expected": 27.201413277982752}, {"input": [27.0, 26.0], "expected": 27.313261687518224}, {"input": [27.0, 26.5], "expected": 27.47407698418011}, {"input": [27.0, 27.0], "expected": 27.693147180559944}, {"input": [27.0, 27.5], "expected": 27.97407698418011}, {"input": [27.0, 28.0], "expected": 28.313261687518224}, {"input": [27.0, 28.5], "expected": 28.701413277982752}, {"input": [27.0, 29.0], "expected": 29.126928011042974}, {"input": [27.0, 29.5], "expected": 29.57888973429255}, {"input": [27.0, 30.0], "expected": 30.048587351573744}, {"input": [27.0, 30.5], "expected": 30.52975041827262}, {"input": [27.0, 31.0], "expected": 31.01814992791781}, {"input": [27.0, 31.5], "expected": 31.511047744848593}, {"input": [27.0, 32.0], "expected": 32.00671534848912}, {"input": [27.0, 32.5], "expected": 32.50407844327057}, {"input": [27.0, 33.0], "expected": 33.00247568513773}, {"input": [27.0, 33.5], "expected": 33.50150231015976}, {"input": [27.0, 34.0], "expected": 34.00091146645377}, {"input": [27.0, 34.5], "expected": 34.50055293147536}, {"input": [27.0, 35.0], "expected": 35.0003354063729}, {"input": [27.0, 35.5], "expected": 35.50020344767213}, {"input": [27.0, 36.0], "expected": 36.00012340218972}, {"input": [27.0, 36.5], "expected": 36.50007484902863}, {"input": [27.0, 37.0], "expected": 37.00004539889922}, {"input": [27.0, 37.5], "expected": 37.50002753607023}, {"input": [27.0, 38.0], "expected": 38.00001670156132}, {"input": [27.0, 38.5], "expected": 38.50001013004229}, {"input": [27.0, 39.0], "expected": 39.00000614419348}, {"input": [27.0, 39.5], "expected": 39.50000372664623}, {"input": [27.0, 40.0], "expected": 40.00000226032685}, {"input": [27.0, 40.5], "expected": 40.500001370958145}, {"input": [27.0, 41.0], "expected": 41.000000831528375}, {"input": [27.0, 41.5], "expected": 41.50000050434753}, {"input": [27.0, 42.0], "expected": 42.000000305902276}, {"input": [27.0, 42.5], "expected": 42.50000018553912}, {"input": [27.0, 43.0], "expected": 43.00000011253517}, {"input": [27.0, 43.5], "expected": 43.50000006825603}, {"input": [27.0, 44.0], "expected": 44.000000041399375}, {"input": [27.0, 44.5], "expected": 44.50000002510999}, {"input": [27.0, 45.0], "expected": 45.00000001522998}, {"input": [27.0, 45.5], "expected": 45.500000009237446}, {"input": [27.0, 46.0], "expected": 46.00000000560279}, {"input": [27.0, 46.5], "expected": 46.50000000339827}, {"input": [27.0, 47.0], "expected": 47.00000000206116}, {"input": [27.0, 47.5], "expected": 47.50000000125015}, {"input": [27.0, 48.0], "expected": 48.000000000758256}, {"input": [27.0, 48.5], "expected": 48.500000000459906}, {"input": [27.0, 49.0], "expected": 49.000000000278945}, {"input": [27.0, 49.5], "expected": 49.50000000016919}, {"input": [27.0, 50.0], "expected": 50.00000000010262}, {"input": [27.0, 50.5], "expected": 50.50000000006224}, {"input": [27.0, 51.0], "expected": 51.00000000003775}, {"input": [27.0, 51.5], "expected": 51.5000000000229}, {"input": [27.0, 52.0], "expected": 52.00000000001389}, {"input": [27.0, 52.5], "expected": 52.50000000000842}, {"input": [27.0, 53.0], "expected": 53.00000000000511}, {"input": [27.0, 53.5], "expected": 53.5000000000031}, {"input": [27.0, 54.0], "expected": 54.00000000000188}, {"input": [27.0, 54.5], "expected": 54.50000000000114}, {"input": [27.0, 55.0], "expected": 55.00000000000069}, {"input": [27.0, 55.5], "expected": 55.50000000000042}, {"input": [27.0, 56.0], "expected": 56.000000000000256}, {"input": [27.0, 56.5], "expected": 56.500000000000156}, {"input": [27.0, 57.0], "expected": 57.00000000000009}, {"input": [27.0, 57.5], "expected": 57.50000000000006}, {"input": [27.0, 58.0], "expected": 58.000000000000036}, {"input": [27.0, 58.5], "expected": 58.50000000000002}, {"input": [27.0, 59.0], "expected": 59.000000000000014}, {"input": [27.0, 59.5], "expected": 59.50000000000001}, {"input": [27.0, 60.0], "expected": 60.00000000000001}, {"input": [27.0, 60.5], "expected": 60.5}, {"input": [27.0, 61.0], "expected": 61.0}, {"input": [27.0, 61.5], "expected": 61.5}, {"input": [27.0, 62.0], "expected": 62.0}, {"input": [27.0, 62.5], "expected": 62.5}, {"input": [27.0, 63.0], "expected": 63.0}, {"input": [27.0, 63.5], "expected": 63.5}, {"input": [27.0, 64.0], "expected": 64.0}, {"input": [27.0, 64.5], "expected": 64.5}, {"input": [27.0, 65.0], "expected": 65.0}, {"input": [27.0, 65.5], "expected": 65.5}, {"input": [27.0, 66.0], "expected": 66.0}, {"input": [27.0, 66.5], "expected": 66.5}, {"input": [27.0, 67.0], "expected": 67.0}, {"input": [27.0, 67.5], "expected": 67.5}, {"input": [27.0, 68.0], "expected": 68.0}, {"input": [27.0, 68.5], "expected": 68.5}, {"input": [27.0, 69.0], "expected": 69.0}, {"input": [27.0, 69.5], "expected": 69.5}, {"input": [27.0, 70.0], "expected": 70.0}, {"input": [27.0, 70.5], "expected": 70.5}, {"input": [27.0, 71.0], "expected": 71.0}, {"input": [27.0, 71.5], "expected": 71.5}, {"input": [27.0, 72.0], "expected": 72.0}, {"input": [27.0, 72.5], "expected": 72.5}, {"input": [27.0, 73.0], "expected": 73.0}, {"input": [27.0, 73.5], "expected": 73.5}, {"input": [27.0, 74.0], "expected": 74.0}, {"input": [27.0, 74.5], "expected": 74.5}, {"input": [27.0, 75.0], "expected": 75.0}, {"input": [27.0, 75.5], "expected": 75.5}, {"input": [27.0, 76.0], "expected": 76.0}, {"input": [27.0, 76.5], "expected": 76.5}, {"input": [27.0, 77.0], "expected": 77.0}, {"input": [27.0, 77.5], "expected": 77.5}, {"input": [27.0, 78.0], "expected": 78.0}, {"input": [27.0, 78.5], "expected": 78.5}, {"input": [27.0, 79.0], "expected": 79.0}, {"input": [27.0, 79.5], "expected": 79.5}, {"input": [27.0, 80.0], "expected": 80.0}, {"input": [27.0, 80.5], "expected": 80.5}, {"input": [27.0, 81.0], "expected": 81.0}, {"input": [27.0, 81.5], "expected": 81.5}, {"input": [27.0, 82.0], "expected": 82.0}, {"input": [27.0, 82.5], "expected": 82.5}, {"input": [27.0, 83.0], "expected": 83.0}, {"input": [27.0, 83.5], "expected": 83.5}, {"input": [27.0, 84.0], "expected": 84.0}, {"input": [27.0, 84.5], "expected": 84.5}, {"input": [27.0, 85.0], "expected": 85.0}, {"input": [27.0, 85.5], "expected": 85.5}, {"input": [27.0, 86.0], "expected": 86.0}, {"input": [27.0, 86.5], "expected": 86.5}, {"input": [27.0, 87.0], "expected": 87.0}, {"input": [27.0, 87.5], "expected": 87.5}, {"input": [27.0, 88.0], "expected": 88.0}, {"input": [27.0, 88.5], "expected": 88.5}, {"input": [27.0, 89.0], "expected": 89.0}, {"input": [27.0, 89.5], "expected": 89.5}, {"input": [27.0, 90.0], "expected": 90.0}, {"input": [27.0, 90.5], "expected": 90.5}, {"input": [27.0, 91.0], "expected": 91.0}, {"input": [27.0, 91.5], "expected": 91.5}, {"input": [27.0, 92.0], "expected": 92.0}, {"input": [27.0, 92.5], "expected": 92.5}, {"input": [27.0, 93.0], "expected": 93.0}, {"input": [27.0, 93.5], "expected": 93.5}, {"input": [27.0, 94.0], "expected": 94.0}, {"input": [27.0, 94.5], "expected": 94.5}, {"input": [27.0, 95.0], "expected": 95.0}, {"input": [27.0, 95.5], "expected": 95.5}, {"input": [27.0, 96.0], "expected": 96.0}, {"input": [27.0, 96.5], "expected": 96.5}, {"input": [27.0, 97.0], "expected": 97.0}, {"input": [27.0, 97.5], "expected": 97.5}, {"input": [27.0, 98.0], "expected": 98.0}, {"input": [27.0, 98.5], "expected": 98.5}, {"input": [27.0, 99.0], "expected": 99.0}, {"input": [27.0, 99.5], "expected": 99.5}, {"input": [27.5, -100.0], "expected": 27.5}, {"input": [27.5, -99.5], "expected": 27.5}, {"input": [27.5, -99.0], "expected": 27.5}, {"input": [27.5, -98.5], "expected": 27.5}, {"input": [27.5, -98.0], "expected": 27.5}, {"input": [27.5, -97.5], "expected": 27.5}, {"input": [27.5, -97.0], "expected": 27.5}, {"input": [27.5, -96.5], "expected": 27.5}, {"input": [27.5, -96.0], "expected": 27.5}, {"input": [27.5, -95.5], "expected": 27.5}, {"input": [27.5, -95.0], "expected": 27.5}, {"input": [27.5, -94.5], "expected": 27.5}, {"input": [27.5, -94.0], "expected": 27.5}, {"input": [27.5, -93.5], "expected": 27.5}, {"input": [27.5, -93.0], "expected": 27.5}, {"input": [27.5, -92.5], "expected": 27.5}, {"input": [27.5, -92.0], "expected": 27.5}, {"input": [27.5, -91.5], "expected": 27.5}, {"input": [27.5, -91.0], "expected": 27.5}, {"input": [27.5, -90.5], "expected": 27.5}, {"input": [27.5, -90.0], "expected": 27.5}, {"input": [27.5, -89.5], "expected": 27.5}, {"input": [27.5, -89.0], "expected": 27.5}, {"input": [27.5, -88.5], "expected": 27.5}, {"input": [27.5, -88.0], "expected": 27.5}, {"input": [27.5, -87.5], "expected": 27.5}, {"input": [27.5, -87.0], "expected": 27.5}, {"input": [27.5, -86.5], "expected": 27.5}, {"input": [27.5, -86.0], "expected": 27.5}, {"input": [27.5, -85.5], "expected": 27.5}, {"input": [27.5, -85.0], "expected": 27.5}, {"input": [27.5, -84.5], "expected": 27.5}, {"input": [27.5, -84.0], "expected": 27.5}, {"input": [27.5, -83.5], "expected": 27.5}, {"input": [27.5, -83.0], "expected": 27.5}, {"input": [27.5, -82.5], "expected": 27.5}, {"input": [27.5, -82.0], "expected": 27.5}, {"input": [27.5, -81.5], "expected": 27.5}, {"input": [27.5, -81.0], "expected": 27.5}, {"input": [27.5, -80.5], "expected": 27.5}, {"input": [27.5, -80.0], "expected": 27.5}, {"input": [27.5, -79.5], "expected": 27.5}, {"input": [27.5, -79.0], "expected": 27.5}, {"input": [27.5, -78.5], "expected": 27.5}, {"input": [27.5, -78.0], "expected": 27.5}, {"input": [27.5, -77.5], "expected": 27.5}, {"input": [27.5, -77.0], "expected": 27.5}, {"input": [27.5, -76.5], "expected": 27.5}, {"input": [27.5, -76.0], "expected": 27.5}, {"input": [27.5, -75.5], "expected": 27.5}, {"input": [27.5, -75.0], "expected": 27.5}, {"input": [27.5, -74.5], "expected": 27.5}, {"input": [27.5, -74.0], "expected": 27.5}, {"input": [27.5, -73.5], "expected": 27.5}, {"input": [27.5, -73.0], "expected": 27.5}, {"input": [27.5, -72.5], "expected": 27.5}, {"input": [27.5, -72.0], "expected": 27.5}, {"input": [27.5, -71.5], "expected": 27.5}, {"input": [27.5, -71.0], "expected": 27.5}, {"input": [27.5, -70.5], "expected": 27.5}, {"input": [27.5, -70.0], "expected": 27.5}, {"input": [27.5, -69.5], "expected": 27.5}, {"input": [27.5, -69.0], "expected": 27.5}, {"input": [27.5, -68.5], "expected": 27.5}, {"input": [27.5, -68.0], "expected": 27.5}, {"input": [27.5, -67.5], "expected": 27.5}, {"input": [27.5, -67.0], "expected": 27.5}, {"input": [27.5, -66.5], "expected": 27.5}, {"input": [27.5, -66.0], "expected": 27.5}, {"input": [27.5, -65.5], "expected": 27.5}, {"input": [27.5, -65.0], "expected": 27.5}, {"input": [27.5, -64.5], "expected": 27.5}, {"input": [27.5, -64.0], "expected": 27.5}, {"input": [27.5, -63.5], "expected": 27.5}, {"input": [27.5, -63.0], "expected": 27.5}, {"input": [27.5, -62.5], "expected": 27.5}, {"input": [27.5, -62.0], "expected": 27.5}, {"input": [27.5, -61.5], "expected": 27.5}, {"input": [27.5, -61.0], "expected": 27.5}, {"input": [27.5, -60.5], "expected": 27.5}, {"input": [27.5, -60.0], "expected": 27.5}, {"input": [27.5, -59.5], "expected": 27.5}, {"input": [27.5, -59.0], "expected": 27.5}, {"input": [27.5, -58.5], "expected": 27.5}, {"input": [27.5, -58.0], "expected": 27.5}, {"input": [27.5, -57.5], "expected": 27.5}, {"input": [27.5, -57.0], "expected": 27.5}, {"input": [27.5, -56.5], "expected": 27.5}, {"input": [27.5, -56.0], "expected": 27.5}, {"input": [27.5, -55.5], "expected": 27.5}, {"input": [27.5, -55.0], "expected": 27.5}, {"input": [27.5, -54.5], "expected": 27.5}, {"input": [27.5, -54.0], "expected": 27.5}, {"input": [27.5, -53.5], "expected": 27.5}, {"input": [27.5, -53.0], "expected": 27.5}, {"input": [27.5, -52.5], "expected": 27.5}, {"input": [27.5, -52.0], "expected": 27.5}, {"input": [27.5, -51.5], "expected": 27.5}, {"input": [27.5, -51.0], "expected": 27.5}, {"input": [27.5, -50.5], "expected": 27.5}, {"input": [27.5, -50.0], "expected": 27.5}, {"input": [27.5, -49.5], "expected": 27.5}, {"input": [27.5, -49.0], "expected": 27.5}, {"input": [27.5, -48.5], "expected": 27.5}, {"input": [27.5, -48.0], "expected": 27.5}, {"input": [27.5, -47.5], "expected": 27.5}, {"input": [27.5, -47.0], "expected": 27.5}, {"input": [27.5, -46.5], "expected": 27.5}, {"input": [27.5, -46.0], "expected": 27.5}, {"input": [27.5, -45.5], "expected": 27.5}, {"input": [27.5, -45.0], "expected": 27.5}, {"input": [27.5, -44.5], "expected": 27.5}, {"input": [27.5, -44.0], "expected": 27.5}, {"input": [27.5, -43.5], "expected": 27.5}, {"input": [27.5, -43.0], "expected": 27.5}, {"input": [27.5, -42.5], "expected": 27.5}, {"input": [27.5, -42.0], "expected": 27.5}, {"input": [27.5, -41.5], "expected": 27.5}, {"input": [27.5, -41.0], "expected": 27.5}, {"input": [27.5, -40.5], "expected": 27.5}, {"input": [27.5, -40.0], "expected": 27.5}, {"input": [27.5, -39.5], "expected": 27.5}, {"input": [27.5, -39.0], "expected": 27.5}, {"input": [27.5, -38.5], "expected": 27.5}, {"input": [27.5, -38.0], "expected": 27.5}, {"input": [27.5, -37.5], "expected": 27.5}, {"input": [27.5, -37.0], "expected": 27.5}, {"input": [27.5, -36.5], "expected": 27.5}, {"input": [27.5, -36.0], "expected": 27.5}, {"input": [27.5, -35.5], "expected": 27.5}, {"input": [27.5, -35.0], "expected": 27.5}, {"input": [27.5, -34.5], "expected": 27.5}, {"input": [27.5, -34.0], "expected": 27.5}, {"input": [27.5, -33.5], "expected": 27.5}, {"input": [27.5, -33.0], "expected": 27.5}, {"input": [27.5, -32.5], "expected": 27.5}, {"input": [27.5, -32.0], "expected": 27.5}, {"input": [27.5, -31.5], "expected": 27.5}, {"input": [27.5, -31.0], "expected": 27.5}, {"input": [27.5, -30.5], "expected": 27.5}, {"input": [27.5, -30.0], "expected": 27.5}, {"input": [27.5, -29.5], "expected": 27.5}, {"input": [27.5, -29.0], "expected": 27.5}, {"input": [27.5, -28.5], "expected": 27.5}, {"input": [27.5, -28.0], "expected": 27.5}, {"input": [27.5, -27.5], "expected": 27.5}, {"input": [27.5, -27.0], "expected": 27.5}, {"input": [27.5, -26.5], "expected": 27.5}, {"input": [27.5, -26.0], "expected": 27.5}, {"input": [27.5, -25.5], "expected": 27.5}, {"input": [27.5, -25.0], "expected": 27.5}, {"input": [27.5, -24.5], "expected": 27.5}, {"input": [27.5, -24.0], "expected": 27.5}, {"input": [27.5, -23.5], "expected": 27.5}, {"input": [27.5, -23.0], "expected": 27.5}, {"input": [27.5, -22.5], "expected": 27.5}, {"input": [27.5, -22.0], "expected": 27.5}, {"input": [27.5, -21.5], "expected": 27.5}, {"input": [27.5, -21.0], "expected": 27.5}, {"input": [27.5, -20.5], "expected": 27.5}, {"input": [27.5, -20.0], "expected": 27.5}, {"input": [27.5, -19.5], "expected": 27.5}, {"input": [27.5, -19.0], "expected": 27.5}, {"input": [27.5, -18.5], "expected": 27.5}, {"input": [27.5, -18.0], "expected": 27.5}, {"input": [27.5, -17.5], "expected": 27.5}, {"input": [27.5, -17.0], "expected": 27.5}, {"input": [27.5, -16.5], "expected": 27.5}, {"input": [27.5, -16.0], "expected": 27.5}, {"input": [27.5, -15.5], "expected": 27.5}, {"input": [27.5, -15.0], "expected": 27.5}, {"input": [27.5, -14.5], "expected": 27.5}, {"input": [27.5, -14.0], "expected": 27.5}, {"input": [27.5, -13.5], "expected": 27.5}, {"input": [27.5, -13.0], "expected": 27.5}, {"input": [27.5, -12.5], "expected": 27.5}, {"input": [27.5, -12.0], "expected": 27.5}, {"input": [27.5, -11.5], "expected": 27.5}, {"input": [27.5, -11.0], "expected": 27.5}, {"input": [27.5, -10.5], "expected": 27.5}, {"input": [27.5, -10.0], "expected": 27.5}, {"input": [27.5, -9.5], "expected": 27.5}, {"input": [27.5, -9.0], "expected": 27.5}, {"input": [27.5, -8.5], "expected": 27.5}, {"input": [27.5, -8.0], "expected": 27.5}, {"input": [27.5, -7.5], "expected": 27.5}, {"input": [27.5, -7.0], "expected": 27.5}, {"input": [27.5, -6.5], "expected": 27.5}, {"input": [27.5, -6.0], "expected": 27.500000000000004}, {"input": [27.5, -5.5], "expected": 27.500000000000004}, {"input": [27.5, -5.0], "expected": 27.500000000000007}, {"input": [27.5, -4.5], "expected": 27.500000000000014}, {"input": [27.5, -4.0], "expected": 27.50000000000002}, {"input": [27.5, -3.5], "expected": 27.500000000000036}, {"input": [27.5, -3.0], "expected": 27.500000000000057}, {"input": [27.5, -2.5], "expected": 27.500000000000092}, {"input": [27.5, -2.0], "expected": 27.500000000000153}, {"input": [27.5, -1.5], "expected": 27.500000000000256}, {"input": [27.5, -1.0], "expected": 27.50000000000042}, {"input": [27.5, -0.5], "expected": 27.500000000000693}, {"input": [27.5, 0.0], "expected": 27.50000000000114}, {"input": [27.5, 0.5], "expected": 27.50000000000188}, {"input": [27.5, 1.0], "expected": 27.500000000003098}, {"input": [27.5, 1.5], "expected": 27.50000000000511}, {"input": [27.5, 2.0], "expected": 27.500000000008423}, {"input": [27.5, 2.5], "expected": 27.500000000013888}, {"input": [27.5, 3.0], "expected": 27.500000000022897}, {"input": [27.5, 3.5], "expected": 27.50000000003775}, {"input": [27.5, 4.0], "expected": 27.50000000006224}, {"input": [27.5, 4.5], "expected": 27.50000000010262}, {"input": [27.5, 5.0], "expected": 27.50000000016919}, {"input": [27.5, 5.5], "expected": 27.50000000027895}, {"input": [27.5, 6.0], "expected": 27.500000000459906}, {"input": [27.5, 6.5], "expected": 27.500000000758256}, {"input": [27.5, 7.0], "expected": 27.500000001250154}, {"input": [27.5, 7.5], "expected": 27.500000002061153}, {"input": [27.5, 8.0], "expected": 27.500000003398267}, {"input": [27.5, 8.5], "expected": 27.500000005602796}, {"input": [27.5, 9.0], "expected": 27.50000000923745}, {"input": [27.5, 9.5], "expected": 27.50000001522998}, {"input": [27.5, 10.0], "expected": 27.50000002510999}, {"input": [27.5, 10.5], "expected": 27.500000041399375}, {"input": [27.5, 11.0], "expected": 27.500000068256032}, {"input": [27.5, 11.5], "expected": 27.50000011253517}, {"input": [27.5, 12.0], "expected": 27.50000018553912}, {"input": [27.5, 12.5], "expected": 27.500000305902272}, {"input": [27.5, 13.0], "expected": 27.500000504347536}, {"input": [27.5, 13.5], "expected": 27.500000831528375}, {"input": [27.5, 14.0], "expected": 27.500001370958145}, {"input": [27.5, 14.5], "expected": 27.500002260326852}, {"input": [27.5, 15.0], "expected": 27.500003726646227}, {"input": [27.5, 15.5], "expected": 27.500006144193478}, {"input": [27.5, 16.0], "expected": 27.50001013004229}, {"input": [27.5, 16.5], "expected": 27.500016701561318}, {"input": [27.5, 17.0], "expected": 27.500027536070228}, {"input": [27.5, 17.5], "expected": 27.500045398899218}, {"input": [27.5, 18.0], "expected": 27.50007484902863}, {"input": [27.5, 18.5], "expected": 27.500123402189722}, {"input": [27.5, 19.0], "expected": 27.500203447672128}, {"input": [27.5, 19.5], "expected": 27.500335406372894}, {"input": [27.5, 20.0], "expected": 27.50055293147536}, {"input": [27.5, 20.5], "expected": 27.500911466453775}, {"input": [27.5, 21.0], "expected": 27.501502310159754}, {"input": [27.5, 21.5], "expected": 27.502475685137732}, {"input": [27.5, 22.0], "expected": 27.504078443270572}, {"input": [27.5, 22.5], "expected": 27.506715348489116}, {"input": [27.5, 23.0], "expected": 27.511047744848593}, {"input": [27.5, 23.5], "expected": 27.51814992791781}, {"input": [27.5, 24.0], "expected": 27.52975041827262}, {"input": [27.5, 24.5], "expected": 27.548587351573744}, {"input": [27.5, 25.0], "expected": 27.57888973429255}, {"input": [27.5, 25.5], "expected": 27.626928011042974}, {"input": [27.5, 26.0], "expected": 27.701413277982752}, {"input": [27.5, 26.5], "expected": 27.813261687518224}, {"input": [27.5, 27.0], "expected": 27.97407698418011}, {"input": [27.5, 27.5], "expected": 28.193147180559944}, {"input": [27.5, 28.0], "expected": 28.47407698418011}, {"input": [27.5, 28.5], "expected": 28.813261687518224}, {"input": [27.5, 29.0], "expected": 29.201413277982752}, {"input": [27.5, 29.5], "expected": 29.626928011042974}, {"input": [27.5, 30.0], "expected": 30.07888973429255}, {"input": [27.5, 30.5], "expected": 30.548587351573744}, {"input": [27.5, 31.0], "expected": 31.02975041827262}, {"input": [27.5, 31.5], "expected": 31.51814992791781}, {"input": [27.5, 32.0], "expected": 32.0110477448486}, {"input": [27.5, 32.5], "expected": 32.50671534848912}, {"input": [27.5, 33.0], "expected": 33.00407844327057}, {"input": [27.5, 33.5], "expected": 33.50247568513773}, {"input": [27.5, 34.0], "expected": 34.00150231015976}, {"input": [27.5, 34.5], "expected": 34.50091146645377}, {"input": [27.5, 35.0], "expected": 35.00055293147536}, {"input": [27.5, 35.5], "expected": 35.5003354063729}, {"input": [27.5, 36.0], "expected": 36.00020344767213}, {"input": [27.5, 36.5], "expected": 36.50012340218972}, {"input": [27.5, 37.0], "expected": 37.00007484902863}, {"input": [27.5, 37.5], "expected": 37.50004539889922}, {"input": [27.5, 38.0], "expected": 38.00002753607023}, {"input": [27.5, 38.5], "expected": 38.50001670156132}, {"input": [27.5, 39.0], "expected": 39.00001013004229}, {"input": [27.5, 39.5], "expected": 39.50000614419348}, {"input": [27.5, 40.0], "expected": 40.00000372664623}, {"input": [27.5, 40.5], "expected": 40.50000226032685}, {"input": [27.5, 41.0], "expected": 41.000001370958145}, {"input": [27.5, 41.5], "expected": 41.500000831528375}, {"input": [27.5, 42.0], "expected": 42.00000050434753}, {"input": [27.5, 42.5], "expected": 42.500000305902276}, {"input": [27.5, 43.0], "expected": 43.00000018553912}, {"input": [27.5, 43.5], "expected": 43.50000011253517}, {"input": [27.5, 44.0], "expected": 44.00000006825603}, {"input": [27.5, 44.5], "expected": 44.500000041399375}, {"input": [27.5, 45.0], "expected": 45.00000002510999}, {"input": [27.5, 45.5], "expected": 45.50000001522998}, {"input": [27.5, 46.0], "expected": 46.000000009237446}, {"input": [27.5, 46.5], "expected": 46.50000000560279}, {"input": [27.5, 47.0], "expected": 47.00000000339827}, {"input": [27.5, 47.5], "expected": 47.50000000206116}, {"input": [27.5, 48.0], "expected": 48.00000000125015}, {"input": [27.5, 48.5], "expected": 48.500000000758256}, {"input": [27.5, 49.0], "expected": 49.000000000459906}, {"input": [27.5, 49.5], "expected": 49.500000000278945}, {"input": [27.5, 50.0], "expected": 50.00000000016919}, {"input": [27.5, 50.5], "expected": 50.50000000010262}, {"input": [27.5, 51.0], "expected": 51.00000000006224}, {"input": [27.5, 51.5], "expected": 51.50000000003775}, {"input": [27.5, 52.0], "expected": 52.0000000000229}, {"input": [27.5, 52.5], "expected": 52.50000000001389}, {"input": [27.5, 53.0], "expected": 53.00000000000842}, {"input": [27.5, 53.5], "expected": 53.50000000000511}, {"input": [27.5, 54.0], "expected": 54.0000000000031}, {"input": [27.5, 54.5], "expected": 54.50000000000188}, {"input": [27.5, 55.0], "expected": 55.00000000000114}, {"input": [27.5, 55.5], "expected": 55.50000000000069}, {"input": [27.5, 56.0], "expected": 56.00000000000042}, {"input": [27.5, 56.5], "expected": 56.500000000000256}, {"input": [27.5, 57.0], "expected": 57.000000000000156}, {"input": [27.5, 57.5], "expected": 57.50000000000009}, {"input": [27.5, 58.0], "expected": 58.00000000000006}, {"input": [27.5, 58.5], "expected": 58.500000000000036}, {"input": [27.5, 59.0], "expected": 59.00000000000002}, {"input": [27.5, 59.5], "expected": 59.500000000000014}, {"input": [27.5, 60.0], "expected": 60.00000000000001}, {"input": [27.5, 60.5], "expected": 60.50000000000001}, {"input": [27.5, 61.0], "expected": 61.0}, {"input": [27.5, 61.5], "expected": 61.5}, {"input": [27.5, 62.0], "expected": 62.0}, {"input": [27.5, 62.5], "expected": 62.5}, {"input": [27.5, 63.0], "expected": 63.0}, {"input": [27.5, 63.5], "expected": 63.5}, {"input": [27.5, 64.0], "expected": 64.0}, {"input": [27.5, 64.5], "expected": 64.5}, {"input": [27.5, 65.0], "expected": 65.0}, {"input": [27.5, 65.5], "expected": 65.5}, {"input": [27.5, 66.0], "expected": 66.0}, {"input": [27.5, 66.5], "expected": 66.5}, {"input": [27.5, 67.0], "expected": 67.0}, {"input": [27.5, 67.5], "expected": 67.5}, {"input": [27.5, 68.0], "expected": 68.0}, {"input": [27.5, 68.5], "expected": 68.5}, {"input": [27.5, 69.0], "expected": 69.0}, {"input": [27.5, 69.5], "expected": 69.5}, {"input": [27.5, 70.0], "expected": 70.0}, {"input": [27.5, 70.5], "expected": 70.5}, {"input": [27.5, 71.0], "expected": 71.0}, {"input": [27.5, 71.5], "expected": 71.5}, {"input": [27.5, 72.0], "expected": 72.0}, {"input": [27.5, 72.5], "expected": 72.5}, {"input": [27.5, 73.0], "expected": 73.0}, {"input": [27.5, 73.5], "expected": 73.5}, {"input": [27.5, 74.0], "expected": 74.0}, {"input": [27.5, 74.5], "expected": 74.5}, {"input": [27.5, 75.0], "expected": 75.0}, {"input": [27.5, 75.5], "expected": 75.5}, {"input": [27.5, 76.0], "expected": 76.0}, {"input": [27.5, 76.5], "expected": 76.5}, {"input": [27.5, 77.0], "expected": 77.0}, {"input": [27.5, 77.5], "expected": 77.5}, {"input": [27.5, 78.0], "expected": 78.0}, {"input": [27.5, 78.5], "expected": 78.5}, {"input": [27.5, 79.0], "expected": 79.0}, {"input": [27.5, 79.5], "expected": 79.5}, {"input": [27.5, 80.0], "expected": 80.0}, {"input": [27.5, 80.5], "expected": 80.5}, {"input": [27.5, 81.0], "expected": 81.0}, {"input": [27.5, 81.5], "expected": 81.5}, {"input": [27.5, 82.0], "expected": 82.0}, {"input": [27.5, 82.5], "expected": 82.5}, {"input": [27.5, 83.0], "expected": 83.0}, {"input": [27.5, 83.5], "expected": 83.5}, {"input": [27.5, 84.0], "expected": 84.0}, {"input": [27.5, 84.5], "expected": 84.5}, {"input": [27.5, 85.0], "expected": 85.0}, {"input": [27.5, 85.5], "expected": 85.5}, {"input": [27.5, 86.0], "expected": 86.0}, {"input": [27.5, 86.5], "expected": 86.5}, {"input": [27.5, 87.0], "expected": 87.0}, {"input": [27.5, 87.5], "expected": 87.5}, {"input": [27.5, 88.0], "expected": 88.0}, {"input": [27.5, 88.5], "expected": 88.5}, {"input": [27.5, 89.0], "expected": 89.0}, {"input": [27.5, 89.5], "expected": 89.5}, {"input": [27.5, 90.0], "expected": 90.0}, {"input": [27.5, 90.5], "expected": 90.5}, {"input": [27.5, 91.0], "expected": 91.0}, {"input": [27.5, 91.5], "expected": 91.5}, {"input": [27.5, 92.0], "expected": 92.0}, {"input": [27.5, 92.5], "expected": 92.5}, {"input": [27.5, 93.0], "expected": 93.0}, {"input": [27.5, 93.5], "expected": 93.5}, {"input": [27.5, 94.0], "expected": 94.0}, {"input": [27.5, 94.5], "expected": 94.5}, {"input": [27.5, 95.0], "expected": 95.0}, {"input": [27.5, 95.5], "expected": 95.5}, {"input": [27.5, 96.0], "expected": 96.0}, {"input": [27.5, 96.5], "expected": 96.5}, {"input": [27.5, 97.0], "expected": 97.0}, {"input": [27.5, 97.5], "expected": 97.5}, {"input": [27.5, 98.0], "expected": 98.0}, {"input": [27.5, 98.5], "expected": 98.5}, {"input": [27.5, 99.0], "expected": 99.0}, {"input": [27.5, 99.5], "expected": 99.5}, {"input": [28.0, -100.0], "expected": 28.0}, {"input": [28.0, -99.5], "expected": 28.0}, {"input": [28.0, -99.0], "expected": 28.0}, {"input": [28.0, -98.5], "expected": 28.0}, {"input": [28.0, -98.0], "expected": 28.0}, {"input": [28.0, -97.5], "expected": 28.0}, {"input": [28.0, -97.0], "expected": 28.0}, {"input": [28.0, -96.5], "expected": 28.0}, {"input": [28.0, -96.0], "expected": 28.0}, {"input": [28.0, -95.5], "expected": 28.0}, {"input": [28.0, -95.0], "expected": 28.0}, {"input": [28.0, -94.5], "expected": 28.0}, {"input": [28.0, -94.0], "expected": 28.0}, {"input": [28.0, -93.5], "expected": 28.0}, {"input": [28.0, -93.0], "expected": 28.0}, {"input": [28.0, -92.5], "expected": 28.0}, {"input": [28.0, -92.0], "expected": 28.0}, {"input": [28.0, -91.5], "expected": 28.0}, {"input": [28.0, -91.0], "expected": 28.0}, {"input": [28.0, -90.5], "expected": 28.0}, {"input": [28.0, -90.0], "expected": 28.0}, {"input": [28.0, -89.5], "expected": 28.0}, {"input": [28.0, -89.0], "expected": 28.0}, {"input": [28.0, -88.5], "expected": 28.0}, {"input": [28.0, -88.0], "expected": 28.0}, {"input": [28.0, -87.5], "expected": 28.0}, {"input": [28.0, -87.0], "expected": 28.0}, {"input": [28.0, -86.5], "expected": 28.0}, {"input": [28.0, -86.0], "expected": 28.0}, {"input": [28.0, -85.5], "expected": 28.0}, {"input": [28.0, -85.0], "expected": 28.0}, {"input": [28.0, -84.5], "expected": 28.0}, {"input": [28.0, -84.0], "expected": 28.0}, {"input": [28.0, -83.5], "expected": 28.0}, {"input": [28.0, -83.0], "expected": 28.0}, {"input": [28.0, -82.5], "expected": 28.0}, {"input": [28.0, -82.0], "expected": 28.0}, {"input": [28.0, -81.5], "expected": 28.0}, {"input": [28.0, -81.0], "expected": 28.0}, {"input": [28.0, -80.5], "expected": 28.0}, {"input": [28.0, -80.0], "expected": 28.0}, {"input": [28.0, -79.5], "expected": 28.0}, {"input": [28.0, -79.0], "expected": 28.0}, {"input": [28.0, -78.5], "expected": 28.0}, {"input": [28.0, -78.0], "expected": 28.0}, {"input": [28.0, -77.5], "expected": 28.0}, {"input": [28.0, -77.0], "expected": 28.0}, {"input": [28.0, -76.5], "expected": 28.0}, {"input": [28.0, -76.0], "expected": 28.0}, {"input": [28.0, -75.5], "expected": 28.0}, {"input": [28.0, -75.0], "expected": 28.0}, {"input": [28.0, -74.5], "expected": 28.0}, {"input": [28.0, -74.0], "expected": 28.0}, {"input": [28.0, -73.5], "expected": 28.0}, {"input": [28.0, -73.0], "expected": 28.0}, {"input": [28.0, -72.5], "expected": 28.0}, {"input": [28.0, -72.0], "expected": 28.0}, {"input": [28.0, -71.5], "expected": 28.0}, {"input": [28.0, -71.0], "expected": 28.0}, {"input": [28.0, -70.5], "expected": 28.0}, {"input": [28.0, -70.0], "expected": 28.0}, {"input": [28.0, -69.5], "expected": 28.0}, {"input": [28.0, -69.0], "expected": 28.0}, {"input": [28.0, -68.5], "expected": 28.0}, {"input": [28.0, -68.0], "expected": 28.0}, {"input": [28.0, -67.5], "expected": 28.0}, {"input": [28.0, -67.0], "expected": 28.0}, {"input": [28.0, -66.5], "expected": 28.0}, {"input": [28.0, -66.0], "expected": 28.0}, {"input": [28.0, -65.5], "expected": 28.0}, {"input": [28.0, -65.0], "expected": 28.0}, {"input": [28.0, -64.5], "expected": 28.0}, {"input": [28.0, -64.0], "expected": 28.0}, {"input": [28.0, -63.5], "expected": 28.0}, {"input": [28.0, -63.0], "expected": 28.0}, {"input": [28.0, -62.5], "expected": 28.0}, {"input": [28.0, -62.0], "expected": 28.0}, {"input": [28.0, -61.5], "expected": 28.0}, {"input": [28.0, -61.0], "expected": 28.0}, {"input": [28.0, -60.5], "expected": 28.0}, {"input": [28.0, -60.0], "expected": 28.0}, {"input": [28.0, -59.5], "expected": 28.0}, {"input": [28.0, -59.0], "expected": 28.0}, {"input": [28.0, -58.5], "expected": 28.0}, {"input": [28.0, -58.0], "expected": 28.0}, {"input": [28.0, -57.5], "expected": 28.0}, {"input": [28.0, -57.0], "expected": 28.0}, {"input": [28.0, -56.5], "expected": 28.0}, {"input": [28.0, -56.0], "expected": 28.0}, {"input": [28.0, -55.5], "expected": 28.0}, {"input": [28.0, -55.0], "expected": 28.0}, {"input": [28.0, -54.5], "expected": 28.0}, {"input": [28.0, -54.0], "expected": 28.0}, {"input": [28.0, -53.5], "expected": 28.0}, {"input": [28.0, -53.0], "expected": 28.0}, {"input": [28.0, -52.5], "expected": 28.0}, {"input": [28.0, -52.0], "expected": 28.0}, {"input": [28.0, -51.5], "expected": 28.0}, {"input": [28.0, -51.0], "expected": 28.0}, {"input": [28.0, -50.5], "expected": 28.0}, {"input": [28.0, -50.0], "expected": 28.0}, {"input": [28.0, -49.5], "expected": 28.0}, {"input": [28.0, -49.0], "expected": 28.0}, {"input": [28.0, -48.5], "expected": 28.0}, {"input": [28.0, -48.0], "expected": 28.0}, {"input": [28.0, -47.5], "expected": 28.0}, {"input": [28.0, -47.0], "expected": 28.0}, {"input": [28.0, -46.5], "expected": 28.0}, {"input": [28.0, -46.0], "expected": 28.0}, {"input": [28.0, -45.5], "expected": 28.0}, {"input": [28.0, -45.0], "expected": 28.0}, {"input": [28.0, -44.5], "expected": 28.0}, {"input": [28.0, -44.0], "expected": 28.0}, {"input": [28.0, -43.5], "expected": 28.0}, {"input": [28.0, -43.0], "expected": 28.0}, {"input": [28.0, -42.5], "expected": 28.0}, {"input": [28.0, -42.0], "expected": 28.0}, {"input": [28.0, -41.5], "expected": 28.0}, {"input": [28.0, -41.0], "expected": 28.0}, {"input": [28.0, -40.5], "expected": 28.0}, {"input": [28.0, -40.0], "expected": 28.0}, {"input": [28.0, -39.5], "expected": 28.0}, {"input": [28.0, -39.0], "expected": 28.0}, {"input": [28.0, -38.5], "expected": 28.0}, {"input": [28.0, -38.0], "expected": 28.0}, {"input": [28.0, -37.5], "expected": 28.0}, {"input": [28.0, -37.0], "expected": 28.0}, {"input": [28.0, -36.5], "expected": 28.0}, {"input": [28.0, -36.0], "expected": 28.0}, {"input": [28.0, -35.5], "expected": 28.0}, {"input": [28.0, -35.0], "expected": 28.0}, {"input": [28.0, -34.5], "expected": 28.0}, {"input": [28.0, -34.0], "expected": 28.0}, {"input": [28.0, -33.5], "expected": 28.0}, {"input": [28.0, -33.0], "expected": 28.0}, {"input": [28.0, -32.5], "expected": 28.0}, {"input": [28.0, -32.0], "expected": 28.0}, {"input": [28.0, -31.5], "expected": 28.0}, {"input": [28.0, -31.0], "expected": 28.0}, {"input": [28.0, -30.5], "expected": 28.0}, {"input": [28.0, -30.0], "expected": 28.0}, {"input": [28.0, -29.5], "expected": 28.0}, {"input": [28.0, -29.0], "expected": 28.0}, {"input": [28.0, -28.5], "expected": 28.0}, {"input": [28.0, -28.0], "expected": 28.0}, {"input": [28.0, -27.5], "expected": 28.0}, {"input": [28.0, -27.0], "expected": 28.0}, {"input": [28.0, -26.5], "expected": 28.0}, {"input": [28.0, -26.0], "expected": 28.0}, {"input": [28.0, -25.5], "expected": 28.0}, {"input": [28.0, -25.0], "expected": 28.0}, {"input": [28.0, -24.5], "expected": 28.0}, {"input": [28.0, -24.0], "expected": 28.0}, {"input": [28.0, -23.5], "expected": 28.0}, {"input": [28.0, -23.0], "expected": 28.0}, {"input": [28.0, -22.5], "expected": 28.0}, {"input": [28.0, -22.0], "expected": 28.0}, {"input": [28.0, -21.5], "expected": 28.0}, {"input": [28.0, -21.0], "expected": 28.0}, {"input": [28.0, -20.5], "expected": 28.0}, {"input": [28.0, -20.0], "expected": 28.0}, {"input": [28.0, -19.5], "expected": 28.0}, {"input": [28.0, -19.0], "expected": 28.0}, {"input": [28.0, -18.5], "expected": 28.0}, {"input": [28.0, -18.0], "expected": 28.0}, {"input": [28.0, -17.5], "expected": 28.0}, {"input": [28.0, -17.0], "expected": 28.0}, {"input": [28.0, -16.5], "expected": 28.0}, {"input": [28.0, -16.0], "expected": 28.0}, {"input": [28.0, -15.5], "expected": 28.0}, {"input": [28.0, -15.0], "expected": 28.0}, {"input": [28.0, -14.5], "expected": 28.0}, {"input": [28.0, -14.0], "expected": 28.0}, {"input": [28.0, -13.5], "expected": 28.0}, {"input": [28.0, -13.0], "expected": 28.0}, {"input": [28.0, -12.5], "expected": 28.0}, {"input": [28.0, -12.0], "expected": 28.0}, {"input": [28.0, -11.5], "expected": 28.0}, {"input": [28.0, -11.0], "expected": 28.0}, {"input": [28.0, -10.5], "expected": 28.0}, {"input": [28.0, -10.0], "expected": 28.0}, {"input": [28.0, -9.5], "expected": 28.0}, {"input": [28.0, -9.0], "expected": 28.0}, {"input": [28.0, -8.5], "expected": 28.0}, {"input": [28.0, -8.0], "expected": 28.0}, {"input": [28.0, -7.5], "expected": 28.0}, {"input": [28.0, -7.0], "expected": 28.0}, {"input": [28.0, -6.5], "expected": 28.0}, {"input": [28.0, -6.0], "expected": 28.0}, {"input": [28.0, -5.5], "expected": 28.000000000000004}, {"input": [28.0, -5.0], "expected": 28.000000000000004}, {"input": [28.0, -4.5], "expected": 28.000000000000007}, {"input": [28.0, -4.0], "expected": 28.000000000000014}, {"input": [28.0, -3.5], "expected": 28.00000000000002}, {"input": [28.0, -3.0], "expected": 28.000000000000036}, {"input": [28.0, -2.5], "expected": 28.000000000000057}, {"input": [28.0, -2.0], "expected": 28.000000000000092}, {"input": [28.0, -1.5], "expected": 28.000000000000153}, {"input": [28.0, -1.0], "expected": 28.000000000000256}, {"input": [28.0, -0.5], "expected": 28.00000000000042}, {"input": [28.0, 0.0], "expected": 28.000000000000693}, {"input": [28.0, 0.5], "expected": 28.00000000000114}, {"input": [28.0, 1.0], "expected": 28.00000000000188}, {"input": [28.0, 1.5], "expected": 28.000000000003098}, {"input": [28.0, 2.0], "expected": 28.00000000000511}, {"input": [28.0, 2.5], "expected": 28.000000000008423}, {"input": [28.0, 3.0], "expected": 28.000000000013888}, {"input": [28.0, 3.5], "expected": 28.000000000022897}, {"input": [28.0, 4.0], "expected": 28.00000000003775}, {"input": [28.0, 4.5], "expected": 28.00000000006224}, {"input": [28.0, 5.0], "expected": 28.00000000010262}, {"input": [28.0, 5.5], "expected": 28.00000000016919}, {"input": [28.0, 6.0], "expected": 28.00000000027895}, {"input": [28.0, 6.5], "expected": 28.000000000459906}, {"input": [28.0, 7.0], "expected": 28.000000000758256}, {"input": [28.0, 7.5], "expected": 28.000000001250154}, {"input": [28.0, 8.0], "expected": 28.000000002061153}, {"input": [28.0, 8.5], "expected": 28.000000003398267}, {"input": [28.0, 9.0], "expected": 28.000000005602796}, {"input": [28.0, 9.5], "expected": 28.00000000923745}, {"input": [28.0, 10.0], "expected": 28.00000001522998}, {"input": [28.0, 10.5], "expected": 28.00000002510999}, {"input": [28.0, 11.0], "expected": 28.000000041399375}, {"input": [28.0, 11.5], "expected": 28.000000068256032}, {"input": [28.0, 12.0], "expected": 28.00000011253517}, {"input": [28.0, 12.5], "expected": 28.00000018553912}, {"input": [28.0, 13.0], "expected": 28.000000305902272}, {"input": [28.0, 13.5], "expected": 28.000000504347536}, {"input": [28.0, 14.0], "expected": 28.000000831528375}, {"input": [28.0, 14.5], "expected": 28.000001370958145}, {"input": [28.0, 15.0], "expected": 28.000002260326852}, {"input": [28.0, 15.5], "expected": 28.000003726646227}, {"input": [28.0, 16.0], "expected": 28.000006144193478}, {"input": [28.0, 16.5], "expected": 28.00001013004229}, {"input": [28.0, 17.0], "expected": 28.000016701561318}, {"input": [28.0, 17.5], "expected": 28.000027536070228}, {"input": [28.0, 18.0], "expected": 28.000045398899218}, {"input": [28.0, 18.5], "expected": 28.00007484902863}, {"input": [28.0, 19.0], "expected": 28.000123402189722}, {"input": [28.0, 19.5], "expected": 28.000203447672128}, {"input": [28.0, 20.0], "expected": 28.000335406372894}, {"input": [28.0, 20.5], "expected": 28.00055293147536}, {"input": [28.0, 21.0], "expected": 28.000911466453775}, {"input": [28.0, 21.5], "expected": 28.001502310159754}, {"input": [28.0, 22.0], "expected": 28.002475685137732}, {"input": [28.0, 22.5], "expected": 28.004078443270572}, {"input": [28.0, 23.0], "expected": 28.006715348489116}, {"input": [28.0, 23.5], "expected": 28.011047744848593}, {"input": [28.0, 24.0], "expected": 28.01814992791781}, {"input": [28.0, 24.5], "expected": 28.02975041827262}, {"input": [28.0, 25.0], "expected": 28.048587351573744}, {"input": [28.0, 25.5], "expected": 28.07888973429255}, {"input": [28.0, 26.0], "expected": 28.126928011042974}, {"input": [28.0, 26.5], "expected": 28.201413277982752}, {"input": [28.0, 27.0], "expected": 28.313261687518224}, {"input": [28.0, 27.5], "expected": 28.47407698418011}, {"input": [28.0, 28.0], "expected": 28.693147180559944}, {"input": [28.0, 28.5], "expected": 28.97407698418011}, {"input": [28.0, 29.0], "expected": 29.313261687518224}, {"input": [28.0, 29.5], "expected": 29.701413277982752}, {"input": [28.0, 30.0], "expected": 30.126928011042974}, {"input": [28.0, 30.5], "expected": 30.57888973429255}, {"input": [28.0, 31.0], "expected": 31.048587351573744}, {"input": [28.0, 31.5], "expected": 31.52975041827262}, {"input": [28.0, 32.0], "expected": 32.01814992791781}, {"input": [28.0, 32.5], "expected": 32.5110477448486}, {"input": [28.0, 33.0], "expected": 33.00671534848912}, {"input": [28.0, 33.5], "expected": 33.50407844327057}, {"input": [28.0, 34.0], "expected": 34.00247568513773}, {"input": [28.0, 34.5], "expected": 34.50150231015976}, {"input": [28.0, 35.0], "expected": 35.00091146645377}, {"input": [28.0, 35.5], "expected": 35.50055293147536}, {"input": [28.0, 36.0], "expected": 36.0003354063729}, {"input": [28.0, 36.5], "expected": 36.50020344767213}, {"input": [28.0, 37.0], "expected": 37.00012340218972}, {"input": [28.0, 37.5], "expected": 37.50007484902863}, {"input": [28.0, 38.0], "expected": 38.00004539889922}, {"input": [28.0, 38.5], "expected": 38.50002753607023}, {"input": [28.0, 39.0], "expected": 39.00001670156132}, {"input": [28.0, 39.5], "expected": 39.50001013004229}, {"input": [28.0, 40.0], "expected": 40.00000614419348}, {"input": [28.0, 40.5], "expected": 40.50000372664623}, {"input": [28.0, 41.0], "expected": 41.00000226032685}, {"input": [28.0, 41.5], "expected": 41.500001370958145}, {"input": [28.0, 42.0], "expected": 42.000000831528375}, {"input": [28.0, 42.5], "expected": 42.50000050434753}, {"input": [28.0, 43.0], "expected": 43.000000305902276}, {"input": [28.0, 43.5], "expected": 43.50000018553912}, {"input": [28.0, 44.0], "expected": 44.00000011253517}, {"input": [28.0, 44.5], "expected": 44.50000006825603}, {"input": [28.0, 45.0], "expected": 45.000000041399375}, {"input": [28.0, 45.5], "expected": 45.50000002510999}, {"input": [28.0, 46.0], "expected": 46.00000001522998}, {"input": [28.0, 46.5], "expected": 46.500000009237446}, {"input": [28.0, 47.0], "expected": 47.00000000560279}, {"input": [28.0, 47.5], "expected": 47.50000000339827}, {"input": [28.0, 48.0], "expected": 48.00000000206116}, {"input": [28.0, 48.5], "expected": 48.50000000125015}, {"input": [28.0, 49.0], "expected": 49.000000000758256}, {"input": [28.0, 49.5], "expected": 49.500000000459906}, {"input": [28.0, 50.0], "expected": 50.000000000278945}, {"input": [28.0, 50.5], "expected": 50.50000000016919}, {"input": [28.0, 51.0], "expected": 51.00000000010262}, {"input": [28.0, 51.5], "expected": 51.50000000006224}, {"input": [28.0, 52.0], "expected": 52.00000000003775}, {"input": [28.0, 52.5], "expected": 52.5000000000229}, {"input": [28.0, 53.0], "expected": 53.00000000001389}, {"input": [28.0, 53.5], "expected": 53.50000000000842}, {"input": [28.0, 54.0], "expected": 54.00000000000511}, {"input": [28.0, 54.5], "expected": 54.5000000000031}, {"input": [28.0, 55.0], "expected": 55.00000000000188}, {"input": [28.0, 55.5], "expected": 55.50000000000114}, {"input": [28.0, 56.0], "expected": 56.00000000000069}, {"input": [28.0, 56.5], "expected": 56.50000000000042}, {"input": [28.0, 57.0], "expected": 57.000000000000256}, {"input": [28.0, 57.5], "expected": 57.500000000000156}, {"input": [28.0, 58.0], "expected": 58.00000000000009}, {"input": [28.0, 58.5], "expected": 58.50000000000006}, {"input": [28.0, 59.0], "expected": 59.000000000000036}, {"input": [28.0, 59.5], "expected": 59.50000000000002}, {"input": [28.0, 60.0], "expected": 60.000000000000014}, {"input": [28.0, 60.5], "expected": 60.50000000000001}, {"input": [28.0, 61.0], "expected": 61.00000000000001}, {"input": [28.0, 61.5], "expected": 61.5}, {"input": [28.0, 62.0], "expected": 62.0}, {"input": [28.0, 62.5], "expected": 62.5}, {"input": [28.0, 63.0], "expected": 63.0}, {"input": [28.0, 63.5], "expected": 63.5}, {"input": [28.0, 64.0], "expected": 64.0}, {"input": [28.0, 64.5], "expected": 64.5}, {"input": [28.0, 65.0], "expected": 65.0}, {"input": [28.0, 65.5], "expected": 65.5}, {"input": [28.0, 66.0], "expected": 66.0}, {"input": [28.0, 66.5], "expected": 66.5}, {"input": [28.0, 67.0], "expected": 67.0}, {"input": [28.0, 67.5], "expected": 67.5}, {"input": [28.0, 68.0], "expected": 68.0}, {"input": [28.0, 68.5], "expected": 68.5}, {"input": [28.0, 69.0], "expected": 69.0}, {"input": [28.0, 69.5], "expected": 69.5}, {"input": [28.0, 70.0], "expected": 70.0}, {"input": [28.0, 70.5], "expected": 70.5}, {"input": [28.0, 71.0], "expected": 71.0}, {"input": [28.0, 71.5], "expected": 71.5}, {"input": [28.0, 72.0], "expected": 72.0}, {"input": [28.0, 72.5], "expected": 72.5}, {"input": [28.0, 73.0], "expected": 73.0}, {"input": [28.0, 73.5], "expected": 73.5}, {"input": [28.0, 74.0], "expected": 74.0}, {"input": [28.0, 74.5], "expected": 74.5}, {"input": [28.0, 75.0], "expected": 75.0}, {"input": [28.0, 75.5], "expected": 75.5}, {"input": [28.0, 76.0], "expected": 76.0}, {"input": [28.0, 76.5], "expected": 76.5}, {"input": [28.0, 77.0], "expected": 77.0}, {"input": [28.0, 77.5], "expected": 77.5}, {"input": [28.0, 78.0], "expected": 78.0}, {"input": [28.0, 78.5], "expected": 78.5}, {"input": [28.0, 79.0], "expected": 79.0}, {"input": [28.0, 79.5], "expected": 79.5}, {"input": [28.0, 80.0], "expected": 80.0}, {"input": [28.0, 80.5], "expected": 80.5}, {"input": [28.0, 81.0], "expected": 81.0}, {"input": [28.0, 81.5], "expected": 81.5}, {"input": [28.0, 82.0], "expected": 82.0}, {"input": [28.0, 82.5], "expected": 82.5}, {"input": [28.0, 83.0], "expected": 83.0}, {"input": [28.0, 83.5], "expected": 83.5}, {"input": [28.0, 84.0], "expected": 84.0}, {"input": [28.0, 84.5], "expected": 84.5}, {"input": [28.0, 85.0], "expected": 85.0}, {"input": [28.0, 85.5], "expected": 85.5}, {"input": [28.0, 86.0], "expected": 86.0}, {"input": [28.0, 86.5], "expected": 86.5}, {"input": [28.0, 87.0], "expected": 87.0}, {"input": [28.0, 87.5], "expected": 87.5}, {"input": [28.0, 88.0], "expected": 88.0}, {"input": [28.0, 88.5], "expected": 88.5}, {"input": [28.0, 89.0], "expected": 89.0}, {"input": [28.0, 89.5], "expected": 89.5}, {"input": [28.0, 90.0], "expected": 90.0}, {"input": [28.0, 90.5], "expected": 90.5}, {"input": [28.0, 91.0], "expected": 91.0}, {"input": [28.0, 91.5], "expected": 91.5}, {"input": [28.0, 92.0], "expected": 92.0}, {"input": [28.0, 92.5], "expected": 92.5}, {"input": [28.0, 93.0], "expected": 93.0}, {"input": [28.0, 93.5], "expected": 93.5}, {"input": [28.0, 94.0], "expected": 94.0}, {"input": [28.0, 94.5], "expected": 94.5}, {"input": [28.0, 95.0], "expected": 95.0}, {"input": [28.0, 95.5], "expected": 95.5}, {"input": [28.0, 96.0], "expected": 96.0}, {"input": [28.0, 96.5], "expected": 96.5}, {"input": [28.0, 97.0], "expected": 97.0}, {"input": [28.0, 97.5], "expected": 97.5}, {"input": [28.0, 98.0], "expected": 98.0}, {"input": [28.0, 98.5], "expected": 98.5}, {"input": [28.0, 99.0], "expected": 99.0}, {"input": [28.0, 99.5], "expected": 99.5}, {"input": [28.5, -100.0], "expected": 28.5}, {"input": [28.5, -99.5], "expected": 28.5}, {"input": [28.5, -99.0], "expected": 28.5}, {"input": [28.5, -98.5], "expected": 28.5}, {"input": [28.5, -98.0], "expected": 28.5}, {"input": [28.5, -97.5], "expected": 28.5}, {"input": [28.5, -97.0], "expected": 28.5}, {"input": [28.5, -96.5], "expected": 28.5}, {"input": [28.5, -96.0], "expected": 28.5}, {"input": [28.5, -95.5], "expected": 28.5}, {"input": [28.5, -95.0], "expected": 28.5}, {"input": [28.5, -94.5], "expected": 28.5}, {"input": [28.5, -94.0], "expected": 28.5}, {"input": [28.5, -93.5], "expected": 28.5}, {"input": [28.5, -93.0], "expected": 28.5}, {"input": [28.5, -92.5], "expected": 28.5}, {"input": [28.5, -92.0], "expected": 28.5}, {"input": [28.5, -91.5], "expected": 28.5}, {"input": [28.5, -91.0], "expected": 28.5}, {"input": [28.5, -90.5], "expected": 28.5}, {"input": [28.5, -90.0], "expected": 28.5}, {"input": [28.5, -89.5], "expected": 28.5}, {"input": [28.5, -89.0], "expected": 28.5}, {"input": [28.5, -88.5], "expected": 28.5}, {"input": [28.5, -88.0], "expected": 28.5}, {"input": [28.5, -87.5], "expected": 28.5}, {"input": [28.5, -87.0], "expected": 28.5}, {"input": [28.5, -86.5], "expected": 28.5}, {"input": [28.5, -86.0], "expected": 28.5}, {"input": [28.5, -85.5], "expected": 28.5}, {"input": [28.5, -85.0], "expected": 28.5}, {"input": [28.5, -84.5], "expected": 28.5}, {"input": [28.5, -84.0], "expected": 28.5}, {"input": [28.5, -83.5], "expected": 28.5}, {"input": [28.5, -83.0], "expected": 28.5}, {"input": [28.5, -82.5], "expected": 28.5}, {"input": [28.5, -82.0], "expected": 28.5}, {"input": [28.5, -81.5], "expected": 28.5}, {"input": [28.5, -81.0], "expected": 28.5}, {"input": [28.5, -80.5], "expected": 28.5}, {"input": [28.5, -80.0], "expected": 28.5}, {"input": [28.5, -79.5], "expected": 28.5}, {"input": [28.5, -79.0], "expected": 28.5}, {"input": [28.5, -78.5], "expected": 28.5}, {"input": [28.5, -78.0], "expected": 28.5}, {"input": [28.5, -77.5], "expected": 28.5}, {"input": [28.5, -77.0], "expected": 28.5}, {"input": [28.5, -76.5], "expected": 28.5}, {"input": [28.5, -76.0], "expected": 28.5}, {"input": [28.5, -75.5], "expected": 28.5}, {"input": [28.5, -75.0], "expected": 28.5}, {"input": [28.5, -74.5], "expected": 28.5}, {"input": [28.5, -74.0], "expected": 28.5}, {"input": [28.5, -73.5], "expected": 28.5}, {"input": [28.5, -73.0], "expected": 28.5}, {"input": [28.5, -72.5], "expected": 28.5}, {"input": [28.5, -72.0], "expected": 28.5}, {"input": [28.5, -71.5], "expected": 28.5}, {"input": [28.5, -71.0], "expected": 28.5}, {"input": [28.5, -70.5], "expected": 28.5}, {"input": [28.5, -70.0], "expected": 28.5}, {"input": [28.5, -69.5], "expected": 28.5}, {"input": [28.5, -69.0], "expected": 28.5}, {"input": [28.5, -68.5], "expected": 28.5}, {"input": [28.5, -68.0], "expected": 28.5}, {"input": [28.5, -67.5], "expected": 28.5}, {"input": [28.5, -67.0], "expected": 28.5}, {"input": [28.5, -66.5], "expected": 28.5}, {"input": [28.5, -66.0], "expected": 28.5}, {"input": [28.5, -65.5], "expected": 28.5}, {"input": [28.5, -65.0], "expected": 28.5}, {"input": [28.5, -64.5], "expected": 28.5}, {"input": [28.5, -64.0], "expected": 28.5}, {"input": [28.5, -63.5], "expected": 28.5}, {"input": [28.5, -63.0], "expected": 28.5}, {"input": [28.5, -62.5], "expected": 28.5}, {"input": [28.5, -62.0], "expected": 28.5}, {"input": [28.5, -61.5], "expected": 28.5}, {"input": [28.5, -61.0], "expected": 28.5}, {"input": [28.5, -60.5], "expected": 28.5}, {"input": [28.5, -60.0], "expected": 28.5}, {"input": [28.5, -59.5], "expected": 28.5}, {"input": [28.5, -59.0], "expected": 28.5}, {"input": [28.5, -58.5], "expected": 28.5}, {"input": [28.5, -58.0], "expected": 28.5}, {"input": [28.5, -57.5], "expected": 28.5}, {"input": [28.5, -57.0], "expected": 28.5}, {"input": [28.5, -56.5], "expected": 28.5}, {"input": [28.5, -56.0], "expected": 28.5}, {"input": [28.5, -55.5], "expected": 28.5}, {"input": [28.5, -55.0], "expected": 28.5}, {"input": [28.5, -54.5], "expected": 28.5}, {"input": [28.5, -54.0], "expected": 28.5}, {"input": [28.5, -53.5], "expected": 28.5}, {"input": [28.5, -53.0], "expected": 28.5}, {"input": [28.5, -52.5], "expected": 28.5}, {"input": [28.5, -52.0], "expected": 28.5}, {"input": [28.5, -51.5], "expected": 28.5}, {"input": [28.5, -51.0], "expected": 28.5}, {"input": [28.5, -50.5], "expected": 28.5}, {"input": [28.5, -50.0], "expected": 28.5}, {"input": [28.5, -49.5], "expected": 28.5}, {"input": [28.5, -49.0], "expected": 28.5}, {"input": [28.5, -48.5], "expected": 28.5}, {"input": [28.5, -48.0], "expected": 28.5}, {"input": [28.5, -47.5], "expected": 28.5}, {"input": [28.5, -47.0], "expected": 28.5}, {"input": [28.5, -46.5], "expected": 28.5}, {"input": [28.5, -46.0], "expected": 28.5}, {"input": [28.5, -45.5], "expected": 28.5}, {"input": [28.5, -45.0], "expected": 28.5}, {"input": [28.5, -44.5], "expected": 28.5}, {"input": [28.5, -44.0], "expected": 28.5}, {"input": [28.5, -43.5], "expected": 28.5}, {"input": [28.5, -43.0], "expected": 28.5}, {"input": [28.5, -42.5], "expected": 28.5}, {"input": [28.5, -42.0], "expected": 28.5}, {"input": [28.5, -41.5], "expected": 28.5}, {"input": [28.5, -41.0], "expected": 28.5}, {"input": [28.5, -40.5], "expected": 28.5}, {"input": [28.5, -40.0], "expected": 28.5}, {"input": [28.5, -39.5], "expected": 28.5}, {"input": [28.5, -39.0], "expected": 28.5}, {"input": [28.5, -38.5], "expected": 28.5}, {"input": [28.5, -38.0], "expected": 28.5}, {"input": [28.5, -37.5], "expected": 28.5}, {"input": [28.5, -37.0], "expected": 28.5}, {"input": [28.5, -36.5], "expected": 28.5}, {"input": [28.5, -36.0], "expected": 28.5}, {"input": [28.5, -35.5], "expected": 28.5}, {"input": [28.5, -35.0], "expected": 28.5}, {"input": [28.5, -34.5], "expected": 28.5}, {"input": [28.5, -34.0], "expected": 28.5}, {"input": [28.5, -33.5], "expected": 28.5}, {"input": [28.5, -33.0], "expected": 28.5}, {"input": [28.5, -32.5], "expected": 28.5}, {"input": [28.5, -32.0], "expected": 28.5}, {"input": [28.5, -31.5], "expected": 28.5}, {"input": [28.5, -31.0], "expected": 28.5}, {"input": [28.5, -30.5], "expected": 28.5}, {"input": [28.5, -30.0], "expected": 28.5}, {"input": [28.5, -29.5], "expected": 28.5}, {"input": [28.5, -29.0], "expected": 28.5}, {"input": [28.5, -28.5], "expected": 28.5}, {"input": [28.5, -28.0], "expected": 28.5}, {"input": [28.5, -27.5], "expected": 28.5}, {"input": [28.5, -27.0], "expected": 28.5}, {"input": [28.5, -26.5], "expected": 28.5}, {"input": [28.5, -26.0], "expected": 28.5}, {"input": [28.5, -25.5], "expected": 28.5}, {"input": [28.5, -25.0], "expected": 28.5}, {"input": [28.5, -24.5], "expected": 28.5}, {"input": [28.5, -24.0], "expected": 28.5}, {"input": [28.5, -23.5], "expected": 28.5}, {"input": [28.5, -23.0], "expected": 28.5}, {"input": [28.5, -22.5], "expected": 28.5}, {"input": [28.5, -22.0], "expected": 28.5}, {"input": [28.5, -21.5], "expected": 28.5}, {"input": [28.5, -21.0], "expected": 28.5}, {"input": [28.5, -20.5], "expected": 28.5}, {"input": [28.5, -20.0], "expected": 28.5}, {"input": [28.5, -19.5], "expected": 28.5}, {"input": [28.5, -19.0], "expected": 28.5}, {"input": [28.5, -18.5], "expected": 28.5}, {"input": [28.5, -18.0], "expected": 28.5}, {"input": [28.5, -17.5], "expected": 28.5}, {"input": [28.5, -17.0], "expected": 28.5}, {"input": [28.5, -16.5], "expected": 28.5}, {"input": [28.5, -16.0], "expected": 28.5}, {"input": [28.5, -15.5], "expected": 28.5}, {"input": [28.5, -15.0], "expected": 28.5}, {"input": [28.5, -14.5], "expected": 28.5}, {"input": [28.5, -14.0], "expected": 28.5}, {"input": [28.5, -13.5], "expected": 28.5}, {"input": [28.5, -13.0], "expected": 28.5}, {"input": [28.5, -12.5], "expected": 28.5}, {"input": [28.5, -12.0], "expected": 28.5}, {"input": [28.5, -11.5], "expected": 28.5}, {"input": [28.5, -11.0], "expected": 28.5}, {"input": [28.5, -10.5], "expected": 28.5}, {"input": [28.5, -10.0], "expected": 28.5}, {"input": [28.5, -9.5], "expected": 28.5}, {"input": [28.5, -9.0], "expected": 28.5}, {"input": [28.5, -8.5], "expected": 28.5}, {"input": [28.5, -8.0], "expected": 28.5}, {"input": [28.5, -7.5], "expected": 28.5}, {"input": [28.5, -7.0], "expected": 28.5}, {"input": [28.5, -6.5], "expected": 28.5}, {"input": [28.5, -6.0], "expected": 28.5}, {"input": [28.5, -5.5], "expected": 28.5}, {"input": [28.5, -5.0], "expected": 28.500000000000004}, {"input": [28.5, -4.5], "expected": 28.500000000000004}, {"input": [28.5, -4.0], "expected": 28.500000000000007}, {"input": [28.5, -3.5], "expected": 28.500000000000014}, {"input": [28.5, -3.0], "expected": 28.50000000000002}, {"input": [28.5, -2.5], "expected": 28.500000000000036}, {"input": [28.5, -2.0], "expected": 28.500000000000057}, {"input": [28.5, -1.5], "expected": 28.500000000000092}, {"input": [28.5, -1.0], "expected": 28.500000000000153}, {"input": [28.5, -0.5], "expected": 28.500000000000256}, {"input": [28.5, 0.0], "expected": 28.50000000000042}, {"input": [28.5, 0.5], "expected": 28.500000000000693}, {"input": [28.5, 1.0], "expected": 28.50000000000114}, {"input": [28.5, 1.5], "expected": 28.50000000000188}, {"input": [28.5, 2.0], "expected": 28.500000000003098}, {"input": [28.5, 2.5], "expected": 28.50000000000511}, {"input": [28.5, 3.0], "expected": 28.500000000008423}, {"input": [28.5, 3.5], "expected": 28.500000000013888}, {"input": [28.5, 4.0], "expected": 28.500000000022897}, {"input": [28.5, 4.5], "expected": 28.50000000003775}, {"input": [28.5, 5.0], "expected": 28.50000000006224}, {"input": [28.5, 5.5], "expected": 28.50000000010262}, {"input": [28.5, 6.0], "expected": 28.50000000016919}, {"input": [28.5, 6.5], "expected": 28.50000000027895}, {"input": [28.5, 7.0], "expected": 28.500000000459906}, {"input": [28.5, 7.5], "expected": 28.500000000758256}, {"input": [28.5, 8.0], "expected": 28.500000001250154}, {"input": [28.5, 8.5], "expected": 28.500000002061153}, {"input": [28.5, 9.0], "expected": 28.500000003398267}, {"input": [28.5, 9.5], "expected": 28.500000005602796}, {"input": [28.5, 10.0], "expected": 28.50000000923745}, {"input": [28.5, 10.5], "expected": 28.50000001522998}, {"input": [28.5, 11.0], "expected": 28.50000002510999}, {"input": [28.5, 11.5], "expected": 28.500000041399375}, {"input": [28.5, 12.0], "expected": 28.500000068256032}, {"input": [28.5, 12.5], "expected": 28.50000011253517}, {"input": [28.5, 13.0], "expected": 28.50000018553912}, {"input": [28.5, 13.5], "expected": 28.500000305902272}, {"input": [28.5, 14.0], "expected": 28.500000504347536}, {"input": [28.5, 14.5], "expected": 28.500000831528375}, {"input": [28.5, 15.0], "expected": 28.500001370958145}, {"input": [28.5, 15.5], "expected": 28.500002260326852}, {"input": [28.5, 16.0], "expected": 28.500003726646227}, {"input": [28.5, 16.5], "expected": 28.500006144193478}, {"input": [28.5, 17.0], "expected": 28.50001013004229}, {"input": [28.5, 17.5], "expected": 28.500016701561318}, {"input": [28.5, 18.0], "expected": 28.500027536070228}, {"input": [28.5, 18.5], "expected": 28.500045398899218}, {"input": [28.5, 19.0], "expected": 28.50007484902863}, {"input": [28.5, 19.5], "expected": 28.500123402189722}, {"input": [28.5, 20.0], "expected": 28.500203447672128}, {"input": [28.5, 20.5], "expected": 28.500335406372894}, {"input": [28.5, 21.0], "expected": 28.50055293147536}, {"input": [28.5, 21.5], "expected": 28.500911466453775}, {"input": [28.5, 22.0], "expected": 28.501502310159754}, {"input": [28.5, 22.5], "expected": 28.502475685137732}, {"input": [28.5, 23.0], "expected": 28.504078443270572}, {"input": [28.5, 23.5], "expected": 28.506715348489116}, {"input": [28.5, 24.0], "expected": 28.511047744848593}, {"input": [28.5, 24.5], "expected": 28.51814992791781}, {"input": [28.5, 25.0], "expected": 28.52975041827262}, {"input": [28.5, 25.5], "expected": 28.548587351573744}, {"input": [28.5, 26.0], "expected": 28.57888973429255}, {"input": [28.5, 26.5], "expected": 28.626928011042974}, {"input": [28.5, 27.0], "expected": 28.701413277982752}, {"input": [28.5, 27.5], "expected": 28.813261687518224}, {"input": [28.5, 28.0], "expected": 28.97407698418011}, {"input": [28.5, 28.5], "expected": 29.193147180559944}, {"input": [28.5, 29.0], "expected": 29.47407698418011}, {"input": [28.5, 29.5], "expected": 29.813261687518224}, {"input": [28.5, 30.0], "expected": 30.201413277982752}, {"input": [28.5, 30.5], "expected": 30.626928011042974}, {"input": [28.5, 31.0], "expected": 31.07888973429255}, {"input": [28.5, 31.5], "expected": 31.548587351573744}, {"input": [28.5, 32.0], "expected": 32.02975041827262}, {"input": [28.5, 32.5], "expected": 32.51814992791781}, {"input": [28.5, 33.0], "expected": 33.0110477448486}, {"input": [28.5, 33.5], "expected": 33.50671534848912}, {"input": [28.5, 34.0], "expected": 34.00407844327057}, {"input": [28.5, 34.5], "expected": 34.50247568513773}, {"input": [28.5, 35.0], "expected": 35.00150231015976}, {"input": [28.5, 35.5], "expected": 35.50091146645377}, {"input": [28.5, 36.0], "expected": 36.00055293147536}, {"input": [28.5, 36.5], "expected": 36.5003354063729}, {"input": [28.5, 37.0], "expected": 37.00020344767213}, {"input": [28.5, 37.5], "expected": 37.50012340218972}, {"input": [28.5, 38.0], "expected": 38.00007484902863}, {"input": [28.5, 38.5], "expected": 38.50004539889922}, {"input": [28.5, 39.0], "expected": 39.00002753607023}, {"input": [28.5, 39.5], "expected": 39.50001670156132}, {"input": [28.5, 40.0], "expected": 40.00001013004229}, {"input": [28.5, 40.5], "expected": 40.50000614419348}, {"input": [28.5, 41.0], "expected": 41.00000372664623}, {"input": [28.5, 41.5], "expected": 41.50000226032685}, {"input": [28.5, 42.0], "expected": 42.000001370958145}, {"input": [28.5, 42.5], "expected": 42.500000831528375}, {"input": [28.5, 43.0], "expected": 43.00000050434753}, {"input": [28.5, 43.5], "expected": 43.500000305902276}, {"input": [28.5, 44.0], "expected": 44.00000018553912}, {"input": [28.5, 44.5], "expected": 44.50000011253517}, {"input": [28.5, 45.0], "expected": 45.00000006825603}, {"input": [28.5, 45.5], "expected": 45.500000041399375}, {"input": [28.5, 46.0], "expected": 46.00000002510999}, {"input": [28.5, 46.5], "expected": 46.50000001522998}, {"input": [28.5, 47.0], "expected": 47.000000009237446}, {"input": [28.5, 47.5], "expected": 47.50000000560279}, {"input": [28.5, 48.0], "expected": 48.00000000339827}, {"input": [28.5, 48.5], "expected": 48.50000000206116}, {"input": [28.5, 49.0], "expected": 49.00000000125015}, {"input": [28.5, 49.5], "expected": 49.500000000758256}, {"input": [28.5, 50.0], "expected": 50.000000000459906}, {"input": [28.5, 50.5], "expected": 50.500000000278945}, {"input": [28.5, 51.0], "expected": 51.00000000016919}, {"input": [28.5, 51.5], "expected": 51.50000000010262}, {"input": [28.5, 52.0], "expected": 52.00000000006224}, {"input": [28.5, 52.5], "expected": 52.50000000003775}, {"input": [28.5, 53.0], "expected": 53.0000000000229}, {"input": [28.5, 53.5], "expected": 53.50000000001389}, {"input": [28.5, 54.0], "expected": 54.00000000000842}, {"input": [28.5, 54.5], "expected": 54.50000000000511}, {"input": [28.5, 55.0], "expected": 55.0000000000031}, {"input": [28.5, 55.5], "expected": 55.50000000000188}, {"input": [28.5, 56.0], "expected": 56.00000000000114}, {"input": [28.5, 56.5], "expected": 56.50000000000069}, {"input": [28.5, 57.0], "expected": 57.00000000000042}, {"input": [28.5, 57.5], "expected": 57.500000000000256}, {"input": [28.5, 58.0], "expected": 58.000000000000156}, {"input": [28.5, 58.5], "expected": 58.50000000000009}, {"input": [28.5, 59.0], "expected": 59.00000000000006}, {"input": [28.5, 59.5], "expected": 59.500000000000036}, {"input": [28.5, 60.0], "expected": 60.00000000000002}, {"input": [28.5, 60.5], "expected": 60.500000000000014}, {"input": [28.5, 61.0], "expected": 61.00000000000001}, {"input": [28.5, 61.5], "expected": 61.50000000000001}, {"input": [28.5, 62.0], "expected": 62.0}, {"input": [28.5, 62.5], "expected": 62.5}, {"input": [28.5, 63.0], "expected": 63.0}, {"input": [28.5, 63.5], "expected": 63.5}, {"input": [28.5, 64.0], "expected": 64.0}, {"input": [28.5, 64.5], "expected": 64.5}, {"input": [28.5, 65.0], "expected": 65.0}, {"input": [28.5, 65.5], "expected": 65.5}, {"input": [28.5, 66.0], "expected": 66.0}, {"input": [28.5, 66.5], "expected": 66.5}, {"input": [28.5, 67.0], "expected": 67.0}, {"input": [28.5, 67.5], "expected": 67.5}, {"input": [28.5, 68.0], "expected": 68.0}, {"input": [28.5, 68.5], "expected": 68.5}, {"input": [28.5, 69.0], "expected": 69.0}, {"input": [28.5, 69.5], "expected": 69.5}, {"input": [28.5, 70.0], "expected": 70.0}, {"input": [28.5, 70.5], "expected": 70.5}, {"input": [28.5, 71.0], "expected": 71.0}, {"input": [28.5, 71.5], "expected": 71.5}, {"input": [28.5, 72.0], "expected": 72.0}, {"input": [28.5, 72.5], "expected": 72.5}, {"input": [28.5, 73.0], "expected": 73.0}, {"input": [28.5, 73.5], "expected": 73.5}, {"input": [28.5, 74.0], "expected": 74.0}, {"input": [28.5, 74.5], "expected": 74.5}, {"input": [28.5, 75.0], "expected": 75.0}, {"input": [28.5, 75.5], "expected": 75.5}, {"input": [28.5, 76.0], "expected": 76.0}, {"input": [28.5, 76.5], "expected": 76.5}, {"input": [28.5, 77.0], "expected": 77.0}, {"input": [28.5, 77.5], "expected": 77.5}, {"input": [28.5, 78.0], "expected": 78.0}, {"input": [28.5, 78.5], "expected": 78.5}, {"input": [28.5, 79.0], "expected": 79.0}, {"input": [28.5, 79.5], "expected": 79.5}, {"input": [28.5, 80.0], "expected": 80.0}, {"input": [28.5, 80.5], "expected": 80.5}, {"input": [28.5, 81.0], "expected": 81.0}, {"input": [28.5, 81.5], "expected": 81.5}, {"input": [28.5, 82.0], "expected": 82.0}, {"input": [28.5, 82.5], "expected": 82.5}, {"input": [28.5, 83.0], "expected": 83.0}, {"input": [28.5, 83.5], "expected": 83.5}, {"input": [28.5, 84.0], "expected": 84.0}, {"input": [28.5, 84.5], "expected": 84.5}, {"input": [28.5, 85.0], "expected": 85.0}, {"input": [28.5, 85.5], "expected": 85.5}, {"input": [28.5, 86.0], "expected": 86.0}, {"input": [28.5, 86.5], "expected": 86.5}, {"input": [28.5, 87.0], "expected": 87.0}, {"input": [28.5, 87.5], "expected": 87.5}, {"input": [28.5, 88.0], "expected": 88.0}, {"input": [28.5, 88.5], "expected": 88.5}, {"input": [28.5, 89.0], "expected": 89.0}, {"input": [28.5, 89.5], "expected": 89.5}, {"input": [28.5, 90.0], "expected": 90.0}, {"input": [28.5, 90.5], "expected": 90.5}, {"input": [28.5, 91.0], "expected": 91.0}, {"input": [28.5, 91.5], "expected": 91.5}, {"input": [28.5, 92.0], "expected": 92.0}, {"input": [28.5, 92.5], "expected": 92.5}, {"input": [28.5, 93.0], "expected": 93.0}, {"input": [28.5, 93.5], "expected": 93.5}, {"input": [28.5, 94.0], "expected": 94.0}, {"input": [28.5, 94.5], "expected": 94.5}, {"input": [28.5, 95.0], "expected": 95.0}, {"input": [28.5, 95.5], "expected": 95.5}, {"input": [28.5, 96.0], "expected": 96.0}, {"input": [28.5, 96.5], "expected": 96.5}, {"input": [28.5, 97.0], "expected": 97.0}, {"input": [28.5, 97.5], "expected": 97.5}, {"input": [28.5, 98.0], "expected": 98.0}, {"input": [28.5, 98.5], "expected": 98.5}, {"input": [28.5, 99.0], "expected": 99.0}, {"input": [28.5, 99.5], "expected": 99.5}, {"input": [29.0, -100.0], "expected": 29.0}, {"input": [29.0, -99.5], "expected": 29.0}, {"input": [29.0, -99.0], "expected": 29.0}, {"input": [29.0, -98.5], "expected": 29.0}, {"input": [29.0, -98.0], "expected": 29.0}, {"input": [29.0, -97.5], "expected": 29.0}, {"input": [29.0, -97.0], "expected": 29.0}, {"input": [29.0, -96.5], "expected": 29.0}, {"input": [29.0, -96.0], "expected": 29.0}, {"input": [29.0, -95.5], "expected": 29.0}, {"input": [29.0, -95.0], "expected": 29.0}, {"input": [29.0, -94.5], "expected": 29.0}, {"input": [29.0, -94.0], "expected": 29.0}, {"input": [29.0, -93.5], "expected": 29.0}, {"input": [29.0, -93.0], "expected": 29.0}, {"input": [29.0, -92.5], "expected": 29.0}, {"input": [29.0, -92.0], "expected": 29.0}, {"input": [29.0, -91.5], "expected": 29.0}, {"input": [29.0, -91.0], "expected": 29.0}, {"input": [29.0, -90.5], "expected": 29.0}, {"input": [29.0, -90.0], "expected": 29.0}, {"input": [29.0, -89.5], "expected": 29.0}, {"input": [29.0, -89.0], "expected": 29.0}, {"input": [29.0, -88.5], "expected": 29.0}, {"input": [29.0, -88.0], "expected": 29.0}, {"input": [29.0, -87.5], "expected": 29.0}, {"input": [29.0, -87.0], "expected": 29.0}, {"input": [29.0, -86.5], "expected": 29.0}, {"input": [29.0, -86.0], "expected": 29.0}, {"input": [29.0, -85.5], "expected": 29.0}, {"input": [29.0, -85.0], "expected": 29.0}, {"input": [29.0, -84.5], "expected": 29.0}, {"input": [29.0, -84.0], "expected": 29.0}, {"input": [29.0, -83.5], "expected": 29.0}, {"input": [29.0, -83.0], "expected": 29.0}, {"input": [29.0, -82.5], "expected": 29.0}, {"input": [29.0, -82.0], "expected": 29.0}, {"input": [29.0, -81.5], "expected": 29.0}, {"input": [29.0, -81.0], "expected": 29.0}, {"input": [29.0, -80.5], "expected": 29.0}, {"input": [29.0, -80.0], "expected": 29.0}, {"input": [29.0, -79.5], "expected": 29.0}, {"input": [29.0, -79.0], "expected": 29.0}, {"input": [29.0, -78.5], "expected": 29.0}, {"input": [29.0, -78.0], "expected": 29.0}, {"input": [29.0, -77.5], "expected": 29.0}, {"input": [29.0, -77.0], "expected": 29.0}, {"input": [29.0, -76.5], "expected": 29.0}, {"input": [29.0, -76.0], "expected": 29.0}, {"input": [29.0, -75.5], "expected": 29.0}, {"input": [29.0, -75.0], "expected": 29.0}, {"input": [29.0, -74.5], "expected": 29.0}, {"input": [29.0, -74.0], "expected": 29.0}, {"input": [29.0, -73.5], "expected": 29.0}, {"input": [29.0, -73.0], "expected": 29.0}, {"input": [29.0, -72.5], "expected": 29.0}, {"input": [29.0, -72.0], "expected": 29.0}, {"input": [29.0, -71.5], "expected": 29.0}, {"input": [29.0, -71.0], "expected": 29.0}, {"input": [29.0, -70.5], "expected": 29.0}, {"input": [29.0, -70.0], "expected": 29.0}, {"input": [29.0, -69.5], "expected": 29.0}, {"input": [29.0, -69.0], "expected": 29.0}, {"input": [29.0, -68.5], "expected": 29.0}, {"input": [29.0, -68.0], "expected": 29.0}, {"input": [29.0, -67.5], "expected": 29.0}, {"input": [29.0, -67.0], "expected": 29.0}, {"input": [29.0, -66.5], "expected": 29.0}, {"input": [29.0, -66.0], "expected": 29.0}, {"input": [29.0, -65.5], "expected": 29.0}, {"input": [29.0, -65.0], "expected": 29.0}, {"input": [29.0, -64.5], "expected": 29.0}, {"input": [29.0, -64.0], "expected": 29.0}, {"input": [29.0, -63.5], "expected": 29.0}, {"input": [29.0, -63.0], "expected": 29.0}, {"input": [29.0, -62.5], "expected": 29.0}, {"input": [29.0, -62.0], "expected": 29.0}, {"input": [29.0, -61.5], "expected": 29.0}, {"input": [29.0, -61.0], "expected": 29.0}, {"input": [29.0, -60.5], "expected": 29.0}, {"input": [29.0, -60.0], "expected": 29.0}, {"input": [29.0, -59.5], "expected": 29.0}, {"input": [29.0, -59.0], "expected": 29.0}, {"input": [29.0, -58.5], "expected": 29.0}, {"input": [29.0, -58.0], "expected": 29.0}, {"input": [29.0, -57.5], "expected": 29.0}, {"input": [29.0, -57.0], "expected": 29.0}, {"input": [29.0, -56.5], "expected": 29.0}, {"input": [29.0, -56.0], "expected": 29.0}, {"input": [29.0, -55.5], "expected": 29.0}, {"input": [29.0, -55.0], "expected": 29.0}, {"input": [29.0, -54.5], "expected": 29.0}, {"input": [29.0, -54.0], "expected": 29.0}, {"input": [29.0, -53.5], "expected": 29.0}, {"input": [29.0, -53.0], "expected": 29.0}, {"input": [29.0, -52.5], "expected": 29.0}, {"input": [29.0, -52.0], "expected": 29.0}, {"input": [29.0, -51.5], "expected": 29.0}, {"input": [29.0, -51.0], "expected": 29.0}, {"input": [29.0, -50.5], "expected": 29.0}, {"input": [29.0, -50.0], "expected": 29.0}, {"input": [29.0, -49.5], "expected": 29.0}, {"input": [29.0, -49.0], "expected": 29.0}, {"input": [29.0, -48.5], "expected": 29.0}, {"input": [29.0, -48.0], "expected": 29.0}, {"input": [29.0, -47.5], "expected": 29.0}, {"input": [29.0, -47.0], "expected": 29.0}, {"input": [29.0, -46.5], "expected": 29.0}, {"input": [29.0, -46.0], "expected": 29.0}, {"input": [29.0, -45.5], "expected": 29.0}, {"input": [29.0, -45.0], "expected": 29.0}, {"input": [29.0, -44.5], "expected": 29.0}, {"input": [29.0, -44.0], "expected": 29.0}, {"input": [29.0, -43.5], "expected": 29.0}, {"input": [29.0, -43.0], "expected": 29.0}, {"input": [29.0, -42.5], "expected": 29.0}, {"input": [29.0, -42.0], "expected": 29.0}, {"input": [29.0, -41.5], "expected": 29.0}, {"input": [29.0, -41.0], "expected": 29.0}, {"input": [29.0, -40.5], "expected": 29.0}, {"input": [29.0, -40.0], "expected": 29.0}, {"input": [29.0, -39.5], "expected": 29.0}, {"input": [29.0, -39.0], "expected": 29.0}, {"input": [29.0, -38.5], "expected": 29.0}, {"input": [29.0, -38.0], "expected": 29.0}, {"input": [29.0, -37.5], "expected": 29.0}, {"input": [29.0, -37.0], "expected": 29.0}, {"input": [29.0, -36.5], "expected": 29.0}, {"input": [29.0, -36.0], "expected": 29.0}, {"input": [29.0, -35.5], "expected": 29.0}, {"input": [29.0, -35.0], "expected": 29.0}, {"input": [29.0, -34.5], "expected": 29.0}, {"input": [29.0, -34.0], "expected": 29.0}, {"input": [29.0, -33.5], "expected": 29.0}, {"input": [29.0, -33.0], "expected": 29.0}, {"input": [29.0, -32.5], "expected": 29.0}, {"input": [29.0, -32.0], "expected": 29.0}, {"input": [29.0, -31.5], "expected": 29.0}, {"input": [29.0, -31.0], "expected": 29.0}, {"input": [29.0, -30.5], "expected": 29.0}, {"input": [29.0, -30.0], "expected": 29.0}, {"input": [29.0, -29.5], "expected": 29.0}, {"input": [29.0, -29.0], "expected": 29.0}, {"input": [29.0, -28.5], "expected": 29.0}, {"input": [29.0, -28.0], "expected": 29.0}, {"input": [29.0, -27.5], "expected": 29.0}, {"input": [29.0, -27.0], "expected": 29.0}, {"input": [29.0, -26.5], "expected": 29.0}, {"input": [29.0, -26.0], "expected": 29.0}, {"input": [29.0, -25.5], "expected": 29.0}, {"input": [29.0, -25.0], "expected": 29.0}, {"input": [29.0, -24.5], "expected": 29.0}, {"input": [29.0, -24.0], "expected": 29.0}, {"input": [29.0, -23.5], "expected": 29.0}, {"input": [29.0, -23.0], "expected": 29.0}, {"input": [29.0, -22.5], "expected": 29.0}, {"input": [29.0, -22.0], "expected": 29.0}, {"input": [29.0, -21.5], "expected": 29.0}, {"input": [29.0, -21.0], "expected": 29.0}, {"input": [29.0, -20.5], "expected": 29.0}, {"input": [29.0, -20.0], "expected": 29.0}, {"input": [29.0, -19.5], "expected": 29.0}, {"input": [29.0, -19.0], "expected": 29.0}, {"input": [29.0, -18.5], "expected": 29.0}, {"input": [29.0, -18.0], "expected": 29.0}, {"input": [29.0, -17.5], "expected": 29.0}, {"input": [29.0, -17.0], "expected": 29.0}, {"input": [29.0, -16.5], "expected": 29.0}, {"input": [29.0, -16.0], "expected": 29.0}, {"input": [29.0, -15.5], "expected": 29.0}, {"input": [29.0, -15.0], "expected": 29.0}, {"input": [29.0, -14.5], "expected": 29.0}, {"input": [29.0, -14.0], "expected": 29.0}, {"input": [29.0, -13.5], "expected": 29.0}, {"input": [29.0, -13.0], "expected": 29.0}, {"input": [29.0, -12.5], "expected": 29.0}, {"input": [29.0, -12.0], "expected": 29.0}, {"input": [29.0, -11.5], "expected": 29.0}, {"input": [29.0, -11.0], "expected": 29.0}, {"input": [29.0, -10.5], "expected": 29.0}, {"input": [29.0, -10.0], "expected": 29.0}, {"input": [29.0, -9.5], "expected": 29.0}, {"input": [29.0, -9.0], "expected": 29.0}, {"input": [29.0, -8.5], "expected": 29.0}, {"input": [29.0, -8.0], "expected": 29.0}, {"input": [29.0, -7.5], "expected": 29.0}, {"input": [29.0, -7.0], "expected": 29.0}, {"input": [29.0, -6.5], "expected": 29.0}, {"input": [29.0, -6.0], "expected": 29.0}, {"input": [29.0, -5.5], "expected": 29.0}, {"input": [29.0, -5.0], "expected": 29.0}, {"input": [29.0, -4.5], "expected": 29.000000000000004}, {"input": [29.0, -4.0], "expected": 29.000000000000004}, {"input": [29.0, -3.5], "expected": 29.000000000000007}, {"input": [29.0, -3.0], "expected": 29.000000000000014}, {"input": [29.0, -2.5], "expected": 29.00000000000002}, {"input": [29.0, -2.0], "expected": 29.000000000000036}, {"input": [29.0, -1.5], "expected": 29.000000000000057}, {"input": [29.0, -1.0], "expected": 29.000000000000092}, {"input": [29.0, -0.5], "expected": 29.000000000000153}, {"input": [29.0, 0.0], "expected": 29.000000000000256}, {"input": [29.0, 0.5], "expected": 29.00000000000042}, {"input": [29.0, 1.0], "expected": 29.000000000000693}, {"input": [29.0, 1.5], "expected": 29.00000000000114}, {"input": [29.0, 2.0], "expected": 29.00000000000188}, {"input": [29.0, 2.5], "expected": 29.000000000003098}, {"input": [29.0, 3.0], "expected": 29.00000000000511}, {"input": [29.0, 3.5], "expected": 29.000000000008423}, {"input": [29.0, 4.0], "expected": 29.000000000013888}, {"input": [29.0, 4.5], "expected": 29.000000000022897}, {"input": [29.0, 5.0], "expected": 29.00000000003775}, {"input": [29.0, 5.5], "expected": 29.00000000006224}, {"input": [29.0, 6.0], "expected": 29.00000000010262}, {"input": [29.0, 6.5], "expected": 29.00000000016919}, {"input": [29.0, 7.0], "expected": 29.00000000027895}, {"input": [29.0, 7.5], "expected": 29.000000000459906}, {"input": [29.0, 8.0], "expected": 29.000000000758256}, {"input": [29.0, 8.5], "expected": 29.000000001250154}, {"input": [29.0, 9.0], "expected": 29.000000002061153}, {"input": [29.0, 9.5], "expected": 29.000000003398267}, {"input": [29.0, 10.0], "expected": 29.000000005602796}, {"input": [29.0, 10.5], "expected": 29.00000000923745}, {"input": [29.0, 11.0], "expected": 29.00000001522998}, {"input": [29.0, 11.5], "expected": 29.00000002510999}, {"input": [29.0, 12.0], "expected": 29.000000041399375}, {"input": [29.0, 12.5], "expected": 29.000000068256032}, {"input": [29.0, 13.0], "expected": 29.00000011253517}, {"input": [29.0, 13.5], "expected": 29.00000018553912}, {"input": [29.0, 14.0], "expected": 29.000000305902272}, {"input": [29.0, 14.5], "expected": 29.000000504347536}, {"input": [29.0, 15.0], "expected": 29.000000831528375}, {"input": [29.0, 15.5], "expected": 29.000001370958145}, {"input": [29.0, 16.0], "expected": 29.000002260326852}, {"input": [29.0, 16.5], "expected": 29.000003726646227}, {"input": [29.0, 17.0], "expected": 29.000006144193478}, {"input": [29.0, 17.5], "expected": 29.00001013004229}, {"input": [29.0, 18.0], "expected": 29.000016701561318}, {"input": [29.0, 18.5], "expected": 29.000027536070228}, {"input": [29.0, 19.0], "expected": 29.000045398899218}, {"input": [29.0, 19.5], "expected": 29.00007484902863}, {"input": [29.0, 20.0], "expected": 29.000123402189722}, {"input": [29.0, 20.5], "expected": 29.000203447672128}, {"input": [29.0, 21.0], "expected": 29.000335406372894}, {"input": [29.0, 21.5], "expected": 29.00055293147536}, {"input": [29.0, 22.0], "expected": 29.000911466453775}, {"input": [29.0, 22.5], "expected": 29.001502310159754}, {"input": [29.0, 23.0], "expected": 29.002475685137732}, {"input": [29.0, 23.5], "expected": 29.004078443270572}, {"input": [29.0, 24.0], "expected": 29.006715348489116}, {"input": [29.0, 24.5], "expected": 29.011047744848593}, {"input": [29.0, 25.0], "expected": 29.01814992791781}, {"input": [29.0, 25.5], "expected": 29.02975041827262}, {"input": [29.0, 26.0], "expected": 29.048587351573744}, {"input": [29.0, 26.5], "expected": 29.07888973429255}, {"input": [29.0, 27.0], "expected": 29.126928011042974}, {"input": [29.0, 27.5], "expected": 29.201413277982752}, {"input": [29.0, 28.0], "expected": 29.313261687518224}, {"input": [29.0, 28.5], "expected": 29.47407698418011}, {"input": [29.0, 29.0], "expected": 29.693147180559944}, {"input": [29.0, 29.5], "expected": 29.97407698418011}, {"input": [29.0, 30.0], "expected": 30.313261687518224}, {"input": [29.0, 30.5], "expected": 30.701413277982752}, {"input": [29.0, 31.0], "expected": 31.126928011042974}, {"input": [29.0, 31.5], "expected": 31.57888973429255}, {"input": [29.0, 32.0], "expected": 32.048587351573744}, {"input": [29.0, 32.5], "expected": 32.52975041827262}, {"input": [29.0, 33.0], "expected": 33.01814992791781}, {"input": [29.0, 33.5], "expected": 33.5110477448486}, {"input": [29.0, 34.0], "expected": 34.00671534848912}, {"input": [29.0, 34.5], "expected": 34.50407844327057}, {"input": [29.0, 35.0], "expected": 35.00247568513773}, {"input": [29.0, 35.5], "expected": 35.50150231015976}, {"input": [29.0, 36.0], "expected": 36.00091146645377}, {"input": [29.0, 36.5], "expected": 36.50055293147536}, {"input": [29.0, 37.0], "expected": 37.0003354063729}, {"input": [29.0, 37.5], "expected": 37.50020344767213}, {"input": [29.0, 38.0], "expected": 38.00012340218972}, {"input": [29.0, 38.5], "expected": 38.50007484902863}, {"input": [29.0, 39.0], "expected": 39.00004539889922}, {"input": [29.0, 39.5], "expected": 39.50002753607023}, {"input": [29.0, 40.0], "expected": 40.00001670156132}, {"input": [29.0, 40.5], "expected": 40.50001013004229}, {"input": [29.0, 41.0], "expected": 41.00000614419348}, {"input": [29.0, 41.5], "expected": 41.50000372664623}, {"input": [29.0, 42.0], "expected": 42.00000226032685}, {"input": [29.0, 42.5], "expected": 42.500001370958145}, {"input": [29.0, 43.0], "expected": 43.000000831528375}, {"input": [29.0, 43.5], "expected": 43.50000050434753}, {"input": [29.0, 44.0], "expected": 44.000000305902276}, {"input": [29.0, 44.5], "expected": 44.50000018553912}, {"input": [29.0, 45.0], "expected": 45.00000011253517}, {"input": [29.0, 45.5], "expected": 45.50000006825603}, {"input": [29.0, 46.0], "expected": 46.000000041399375}, {"input": [29.0, 46.5], "expected": 46.50000002510999}, {"input": [29.0, 47.0], "expected": 47.00000001522998}, {"input": [29.0, 47.5], "expected": 47.500000009237446}, {"input": [29.0, 48.0], "expected": 48.00000000560279}, {"input": [29.0, 48.5], "expected": 48.50000000339827}, {"input": [29.0, 49.0], "expected": 49.00000000206116}, {"input": [29.0, 49.5], "expected": 49.50000000125015}, {"input": [29.0, 50.0], "expected": 50.000000000758256}, {"input": [29.0, 50.5], "expected": 50.500000000459906}, {"input": [29.0, 51.0], "expected": 51.000000000278945}, {"input": [29.0, 51.5], "expected": 51.50000000016919}, {"input": [29.0, 52.0], "expected": 52.00000000010262}, {"input": [29.0, 52.5], "expected": 52.50000000006224}, {"input": [29.0, 53.0], "expected": 53.00000000003775}, {"input": [29.0, 53.5], "expected": 53.5000000000229}, {"input": [29.0, 54.0], "expected": 54.00000000001389}, {"input": [29.0, 54.5], "expected": 54.50000000000842}, {"input": [29.0, 55.0], "expected": 55.00000000000511}, {"input": [29.0, 55.5], "expected": 55.5000000000031}, {"input": [29.0, 56.0], "expected": 56.00000000000188}, {"input": [29.0, 56.5], "expected": 56.50000000000114}, {"input": [29.0, 57.0], "expected": 57.00000000000069}, {"input": [29.0, 57.5], "expected": 57.50000000000042}, {"input": [29.0, 58.0], "expected": 58.000000000000256}, {"input": [29.0, 58.5], "expected": 58.500000000000156}, {"input": [29.0, 59.0], "expected": 59.00000000000009}, {"input": [29.0, 59.5], "expected": 59.50000000000006}, {"input": [29.0, 60.0], "expected": 60.000000000000036}, {"input": [29.0, 60.5], "expected": 60.50000000000002}, {"input": [29.0, 61.0], "expected": 61.000000000000014}, {"input": [29.0, 61.5], "expected": 61.50000000000001}, {"input": [29.0, 62.0], "expected": 62.00000000000001}, {"input": [29.0, 62.5], "expected": 62.5}, {"input": [29.0, 63.0], "expected": 63.0}, {"input": [29.0, 63.5], "expected": 63.5}, {"input": [29.0, 64.0], "expected": 64.0}, {"input": [29.0, 64.5], "expected": 64.5}, {"input": [29.0, 65.0], "expected": 65.0}, {"input": [29.0, 65.5], "expected": 65.5}, {"input": [29.0, 66.0], "expected": 66.0}, {"input": [29.0, 66.5], "expected": 66.5}, {"input": [29.0, 67.0], "expected": 67.0}, {"input": [29.0, 67.5], "expected": 67.5}, {"input": [29.0, 68.0], "expected": 68.0}, {"input": [29.0, 68.5], "expected": 68.5}, {"input": [29.0, 69.0], "expected": 69.0}, {"input": [29.0, 69.5], "expected": 69.5}, {"input": [29.0, 70.0], "expected": 70.0}, {"input": [29.0, 70.5], "expected": 70.5}, {"input": [29.0, 71.0], "expected": 71.0}, {"input": [29.0, 71.5], "expected": 71.5}, {"input": [29.0, 72.0], "expected": 72.0}, {"input": [29.0, 72.5], "expected": 72.5}, {"input": [29.0, 73.0], "expected": 73.0}, {"input": [29.0, 73.5], "expected": 73.5}, {"input": [29.0, 74.0], "expected": 74.0}, {"input": [29.0, 74.5], "expected": 74.5}, {"input": [29.0, 75.0], "expected": 75.0}, {"input": [29.0, 75.5], "expected": 75.5}, {"input": [29.0, 76.0], "expected": 76.0}, {"input": [29.0, 76.5], "expected": 76.5}, {"input": [29.0, 77.0], "expected": 77.0}, {"input": [29.0, 77.5], "expected": 77.5}, {"input": [29.0, 78.0], "expected": 78.0}, {"input": [29.0, 78.5], "expected": 78.5}, {"input": [29.0, 79.0], "expected": 79.0}, {"input": [29.0, 79.5], "expected": 79.5}, {"input": [29.0, 80.0], "expected": 80.0}, {"input": [29.0, 80.5], "expected": 80.5}, {"input": [29.0, 81.0], "expected": 81.0}, {"input": [29.0, 81.5], "expected": 81.5}, {"input": [29.0, 82.0], "expected": 82.0}, {"input": [29.0, 82.5], "expected": 82.5}, {"input": [29.0, 83.0], "expected": 83.0}, {"input": [29.0, 83.5], "expected": 83.5}, {"input": [29.0, 84.0], "expected": 84.0}, {"input": [29.0, 84.5], "expected": 84.5}, {"input": [29.0, 85.0], "expected": 85.0}, {"input": [29.0, 85.5], "expected": 85.5}, {"input": [29.0, 86.0], "expected": 86.0}, {"input": [29.0, 86.5], "expected": 86.5}, {"input": [29.0, 87.0], "expected": 87.0}, {"input": [29.0, 87.5], "expected": 87.5}, {"input": [29.0, 88.0], "expected": 88.0}, {"input": [29.0, 88.5], "expected": 88.5}, {"input": [29.0, 89.0], "expected": 89.0}, {"input": [29.0, 89.5], "expected": 89.5}, {"input": [29.0, 90.0], "expected": 90.0}, {"input": [29.0, 90.5], "expected": 90.5}, {"input": [29.0, 91.0], "expected": 91.0}, {"input": [29.0, 91.5], "expected": 91.5}, {"input": [29.0, 92.0], "expected": 92.0}, {"input": [29.0, 92.5], "expected": 92.5}, {"input": [29.0, 93.0], "expected": 93.0}, {"input": [29.0, 93.5], "expected": 93.5}, {"input": [29.0, 94.0], "expected": 94.0}, {"input": [29.0, 94.5], "expected": 94.5}, {"input": [29.0, 95.0], "expected": 95.0}, {"input": [29.0, 95.5], "expected": 95.5}, {"input": [29.0, 96.0], "expected": 96.0}, {"input": [29.0, 96.5], "expected": 96.5}, {"input": [29.0, 97.0], "expected": 97.0}, {"input": [29.0, 97.5], "expected": 97.5}, {"input": [29.0, 98.0], "expected": 98.0}, {"input": [29.0, 98.5], "expected": 98.5}, {"input": [29.0, 99.0], "expected": 99.0}, {"input": [29.0, 99.5], "expected": 99.5}, {"input": [29.5, -100.0], "expected": 29.5}, {"input": [29.5, -99.5], "expected": 29.5}, {"input": [29.5, -99.0], "expected": 29.5}, {"input": [29.5, -98.5], "expected": 29.5}, {"input": [29.5, -98.0], "expected": 29.5}, {"input": [29.5, -97.5], "expected": 29.5}, {"input": [29.5, -97.0], "expected": 29.5}, {"input": [29.5, -96.5], "expected": 29.5}, {"input": [29.5, -96.0], "expected": 29.5}, {"input": [29.5, -95.5], "expected": 29.5}, {"input": [29.5, -95.0], "expected": 29.5}, {"input": [29.5, -94.5], "expected": 29.5}, {"input": [29.5, -94.0], "expected": 29.5}, {"input": [29.5, -93.5], "expected": 29.5}, {"input": [29.5, -93.0], "expected": 29.5}, {"input": [29.5, -92.5], "expected": 29.5}, {"input": [29.5, -92.0], "expected": 29.5}, {"input": [29.5, -91.5], "expected": 29.5}, {"input": [29.5, -91.0], "expected": 29.5}, {"input": [29.5, -90.5], "expected": 29.5}, {"input": [29.5, -90.0], "expected": 29.5}, {"input": [29.5, -89.5], "expected": 29.5}, {"input": [29.5, -89.0], "expected": 29.5}, {"input": [29.5, -88.5], "expected": 29.5}, {"input": [29.5, -88.0], "expected": 29.5}, {"input": [29.5, -87.5], "expected": 29.5}, {"input": [29.5, -87.0], "expected": 29.5}, {"input": [29.5, -86.5], "expected": 29.5}, {"input": [29.5, -86.0], "expected": 29.5}, {"input": [29.5, -85.5], "expected": 29.5}, {"input": [29.5, -85.0], "expected": 29.5}, {"input": [29.5, -84.5], "expected": 29.5}, {"input": [29.5, -84.0], "expected": 29.5}, {"input": [29.5, -83.5], "expected": 29.5}, {"input": [29.5, -83.0], "expected": 29.5}, {"input": [29.5, -82.5], "expected": 29.5}, {"input": [29.5, -82.0], "expected": 29.5}, {"input": [29.5, -81.5], "expected": 29.5}, {"input": [29.5, -81.0], "expected": 29.5}, {"input": [29.5, -80.5], "expected": 29.5}, {"input": [29.5, -80.0], "expected": 29.5}, {"input": [29.5, -79.5], "expected": 29.5}, {"input": [29.5, -79.0], "expected": 29.5}, {"input": [29.5, -78.5], "expected": 29.5}, {"input": [29.5, -78.0], "expected": 29.5}, {"input": [29.5, -77.5], "expected": 29.5}, {"input": [29.5, -77.0], "expected": 29.5}, {"input": [29.5, -76.5], "expected": 29.5}, {"input": [29.5, -76.0], "expected": 29.5}, {"input": [29.5, -75.5], "expected": 29.5}, {"input": [29.5, -75.0], "expected": 29.5}, {"input": [29.5, -74.5], "expected": 29.5}, {"input": [29.5, -74.0], "expected": 29.5}, {"input": [29.5, -73.5], "expected": 29.5}, {"input": [29.5, -73.0], "expected": 29.5}, {"input": [29.5, -72.5], "expected": 29.5}, {"input": [29.5, -72.0], "expected": 29.5}, {"input": [29.5, -71.5], "expected": 29.5}, {"input": [29.5, -71.0], "expected": 29.5}, {"input": [29.5, -70.5], "expected": 29.5}, {"input": [29.5, -70.0], "expected": 29.5}, {"input": [29.5, -69.5], "expected": 29.5}, {"input": [29.5, -69.0], "expected": 29.5}, {"input": [29.5, -68.5], "expected": 29.5}, {"input": [29.5, -68.0], "expected": 29.5}, {"input": [29.5, -67.5], "expected": 29.5}, {"input": [29.5, -67.0], "expected": 29.5}, {"input": [29.5, -66.5], "expected": 29.5}, {"input": [29.5, -66.0], "expected": 29.5}, {"input": [29.5, -65.5], "expected": 29.5}, {"input": [29.5, -65.0], "expected": 29.5}, {"input": [29.5, -64.5], "expected": 29.5}, {"input": [29.5, -64.0], "expected": 29.5}, {"input": [29.5, -63.5], "expected": 29.5}, {"input": [29.5, -63.0], "expected": 29.5}, {"input": [29.5, -62.5], "expected": 29.5}, {"input": [29.5, -62.0], "expected": 29.5}, {"input": [29.5, -61.5], "expected": 29.5}, {"input": [29.5, -61.0], "expected": 29.5}, {"input": [29.5, -60.5], "expected": 29.5}, {"input": [29.5, -60.0], "expected": 29.5}, {"input": [29.5, -59.5], "expected": 29.5}, {"input": [29.5, -59.0], "expected": 29.5}, {"input": [29.5, -58.5], "expected": 29.5}, {"input": [29.5, -58.0], "expected": 29.5}, {"input": [29.5, -57.5], "expected": 29.5}, {"input": [29.5, -57.0], "expected": 29.5}, {"input": [29.5, -56.5], "expected": 29.5}, {"input": [29.5, -56.0], "expected": 29.5}, {"input": [29.5, -55.5], "expected": 29.5}, {"input": [29.5, -55.0], "expected": 29.5}, {"input": [29.5, -54.5], "expected": 29.5}, {"input": [29.5, -54.0], "expected": 29.5}, {"input": [29.5, -53.5], "expected": 29.5}, {"input": [29.5, -53.0], "expected": 29.5}, {"input": [29.5, -52.5], "expected": 29.5}, {"input": [29.5, -52.0], "expected": 29.5}, {"input": [29.5, -51.5], "expected": 29.5}, {"input": [29.5, -51.0], "expected": 29.5}, {"input": [29.5, -50.5], "expected": 29.5}, {"input": [29.5, -50.0], "expected": 29.5}, {"input": [29.5, -49.5], "expected": 29.5}, {"input": [29.5, -49.0], "expected": 29.5}, {"input": [29.5, -48.5], "expected": 29.5}, {"input": [29.5, -48.0], "expected": 29.5}, {"input": [29.5, -47.5], "expected": 29.5}, {"input": [29.5, -47.0], "expected": 29.5}, {"input": [29.5, -46.5], "expected": 29.5}, {"input": [29.5, -46.0], "expected": 29.5}, {"input": [29.5, -45.5], "expected": 29.5}, {"input": [29.5, -45.0], "expected": 29.5}, {"input": [29.5, -44.5], "expected": 29.5}, {"input": [29.5, -44.0], "expected": 29.5}, {"input": [29.5, -43.5], "expected": 29.5}, {"input": [29.5, -43.0], "expected": 29.5}, {"input": [29.5, -42.5], "expected": 29.5}, {"input": [29.5, -42.0], "expected": 29.5}, {"input": [29.5, -41.5], "expected": 29.5}, {"input": [29.5, -41.0], "expected": 29.5}, {"input": [29.5, -40.5], "expected": 29.5}, {"input": [29.5, -40.0], "expected": 29.5}, {"input": [29.5, -39.5], "expected": 29.5}, {"input": [29.5, -39.0], "expected": 29.5}, {"input": [29.5, -38.5], "expected": 29.5}, {"input": [29.5, -38.0], "expected": 29.5}, {"input": [29.5, -37.5], "expected": 29.5}, {"input": [29.5, -37.0], "expected": 29.5}, {"input": [29.5, -36.5], "expected": 29.5}, {"input": [29.5, -36.0], "expected": 29.5}, {"input": [29.5, -35.5], "expected": 29.5}, {"input": [29.5, -35.0], "expected": 29.5}, {"input": [29.5, -34.5], "expected": 29.5}, {"input": [29.5, -34.0], "expected": 29.5}, {"input": [29.5, -33.5], "expected": 29.5}, {"input": [29.5, -33.0], "expected": 29.5}, {"input": [29.5, -32.5], "expected": 29.5}, {"input": [29.5, -32.0], "expected": 29.5}, {"input": [29.5, -31.5], "expected": 29.5}, {"input": [29.5, -31.0], "expected": 29.5}, {"input": [29.5, -30.5], "expected": 29.5}, {"input": [29.5, -30.0], "expected": 29.5}, {"input": [29.5, -29.5], "expected": 29.5}, {"input": [29.5, -29.0], "expected": 29.5}, {"input": [29.5, -28.5], "expected": 29.5}, {"input": [29.5, -28.0], "expected": 29.5}, {"input": [29.5, -27.5], "expected": 29.5}, {"input": [29.5, -27.0], "expected": 29.5}, {"input": [29.5, -26.5], "expected": 29.5}, {"input": [29.5, -26.0], "expected": 29.5}, {"input": [29.5, -25.5], "expected": 29.5}, {"input": [29.5, -25.0], "expected": 29.5}, {"input": [29.5, -24.5], "expected": 29.5}, {"input": [29.5, -24.0], "expected": 29.5}, {"input": [29.5, -23.5], "expected": 29.5}, {"input": [29.5, -23.0], "expected": 29.5}, {"input": [29.5, -22.5], "expected": 29.5}, {"input": [29.5, -22.0], "expected": 29.5}, {"input": [29.5, -21.5], "expected": 29.5}, {"input": [29.5, -21.0], "expected": 29.5}, {"input": [29.5, -20.5], "expected": 29.5}, {"input": [29.5, -20.0], "expected": 29.5}, {"input": [29.5, -19.5], "expected": 29.5}, {"input": [29.5, -19.0], "expected": 29.5}, {"input": [29.5, -18.5], "expected": 29.5}, {"input": [29.5, -18.0], "expected": 29.5}, {"input": [29.5, -17.5], "expected": 29.5}, {"input": [29.5, -17.0], "expected": 29.5}, {"input": [29.5, -16.5], "expected": 29.5}, {"input": [29.5, -16.0], "expected": 29.5}, {"input": [29.5, -15.5], "expected": 29.5}, {"input": [29.5, -15.0], "expected": 29.5}, {"input": [29.5, -14.5], "expected": 29.5}, {"input": [29.5, -14.0], "expected": 29.5}, {"input": [29.5, -13.5], "expected": 29.5}, {"input": [29.5, -13.0], "expected": 29.5}, {"input": [29.5, -12.5], "expected": 29.5}, {"input": [29.5, -12.0], "expected": 29.5}, {"input": [29.5, -11.5], "expected": 29.5}, {"input": [29.5, -11.0], "expected": 29.5}, {"input": [29.5, -10.5], "expected": 29.5}, {"input": [29.5, -10.0], "expected": 29.5}, {"input": [29.5, -9.5], "expected": 29.5}, {"input": [29.5, -9.0], "expected": 29.5}, {"input": [29.5, -8.5], "expected": 29.5}, {"input": [29.5, -8.0], "expected": 29.5}, {"input": [29.5, -7.5], "expected": 29.5}, {"input": [29.5, -7.0], "expected": 29.5}, {"input": [29.5, -6.5], "expected": 29.5}, {"input": [29.5, -6.0], "expected": 29.5}, {"input": [29.5, -5.5], "expected": 29.5}, {"input": [29.5, -5.0], "expected": 29.5}, {"input": [29.5, -4.5], "expected": 29.5}, {"input": [29.5, -4.0], "expected": 29.500000000000004}, {"input": [29.5, -3.5], "expected": 29.500000000000004}, {"input": [29.5, -3.0], "expected": 29.500000000000007}, {"input": [29.5, -2.5], "expected": 29.500000000000014}, {"input": [29.5, -2.0], "expected": 29.50000000000002}, {"input": [29.5, -1.5], "expected": 29.500000000000036}, {"input": [29.5, -1.0], "expected": 29.500000000000057}, {"input": [29.5, -0.5], "expected": 29.500000000000092}, {"input": [29.5, 0.0], "expected": 29.500000000000153}, {"input": [29.5, 0.5], "expected": 29.500000000000256}, {"input": [29.5, 1.0], "expected": 29.50000000000042}, {"input": [29.5, 1.5], "expected": 29.500000000000693}, {"input": [29.5, 2.0], "expected": 29.50000000000114}, {"input": [29.5, 2.5], "expected": 29.50000000000188}, {"input": [29.5, 3.0], "expected": 29.500000000003098}, {"input": [29.5, 3.5], "expected": 29.50000000000511}, {"input": [29.5, 4.0], "expected": 29.500000000008423}, {"input": [29.5, 4.5], "expected": 29.500000000013888}, {"input": [29.5, 5.0], "expected": 29.500000000022897}, {"input": [29.5, 5.5], "expected": 29.50000000003775}, {"input": [29.5, 6.0], "expected": 29.50000000006224}, {"input": [29.5, 6.5], "expected": 29.50000000010262}, {"input": [29.5, 7.0], "expected": 29.50000000016919}, {"input": [29.5, 7.5], "expected": 29.50000000027895}, {"input": [29.5, 8.0], "expected": 29.500000000459906}, {"input": [29.5, 8.5], "expected": 29.500000000758256}, {"input": [29.5, 9.0], "expected": 29.500000001250154}, {"input": [29.5, 9.5], "expected": 29.500000002061153}, {"input": [29.5, 10.0], "expected": 29.500000003398267}, {"input": [29.5, 10.5], "expected": 29.500000005602796}, {"input": [29.5, 11.0], "expected": 29.50000000923745}, {"input": [29.5, 11.5], "expected": 29.50000001522998}, {"input": [29.5, 12.0], "expected": 29.50000002510999}, {"input": [29.5, 12.5], "expected": 29.500000041399375}, {"input": [29.5, 13.0], "expected": 29.500000068256032}, {"input": [29.5, 13.5], "expected": 29.50000011253517}, {"input": [29.5, 14.0], "expected": 29.50000018553912}, {"input": [29.5, 14.5], "expected": 29.500000305902272}, {"input": [29.5, 15.0], "expected": 29.500000504347536}, {"input": [29.5, 15.5], "expected": 29.500000831528375}, {"input": [29.5, 16.0], "expected": 29.500001370958145}, {"input": [29.5, 16.5], "expected": 29.500002260326852}, {"input": [29.5, 17.0], "expected": 29.500003726646227}, {"input": [29.5, 17.5], "expected": 29.500006144193478}, {"input": [29.5, 18.0], "expected": 29.50001013004229}, {"input": [29.5, 18.5], "expected": 29.500016701561318}, {"input": [29.5, 19.0], "expected": 29.500027536070228}, {"input": [29.5, 19.5], "expected": 29.500045398899218}, {"input": [29.5, 20.0], "expected": 29.50007484902863}, {"input": [29.5, 20.5], "expected": 29.500123402189722}, {"input": [29.5, 21.0], "expected": 29.500203447672128}, {"input": [29.5, 21.5], "expected": 29.500335406372894}, {"input": [29.5, 22.0], "expected": 29.50055293147536}, {"input": [29.5, 22.5], "expected": 29.500911466453775}, {"input": [29.5, 23.0], "expected": 29.501502310159754}, {"input": [29.5, 23.5], "expected": 29.502475685137732}, {"input": [29.5, 24.0], "expected": 29.504078443270572}, {"input": [29.5, 24.5], "expected": 29.506715348489116}, {"input": [29.5, 25.0], "expected": 29.511047744848593}, {"input": [29.5, 25.5], "expected": 29.51814992791781}, {"input": [29.5, 26.0], "expected": 29.52975041827262}, {"input": [29.5, 26.5], "expected": 29.548587351573744}, {"input": [29.5, 27.0], "expected": 29.57888973429255}, {"input": [29.5, 27.5], "expected": 29.626928011042974}, {"input": [29.5, 28.0], "expected": 29.701413277982752}, {"input": [29.5, 28.5], "expected": 29.813261687518224}, {"input": [29.5, 29.0], "expected": 29.97407698418011}, {"input": [29.5, 29.5], "expected": 30.193147180559944}, {"input": [29.5, 30.0], "expected": 30.47407698418011}, {"input": [29.5, 30.5], "expected": 30.813261687518224}, {"input": [29.5, 31.0], "expected": 31.201413277982752}, {"input": [29.5, 31.5], "expected": 31.626928011042974}, {"input": [29.5, 32.0], "expected": 32.07888973429255}, {"input": [29.5, 32.5], "expected": 32.548587351573744}, {"input": [29.5, 33.0], "expected": 33.02975041827262}, {"input": [29.5, 33.5], "expected": 33.51814992791781}, {"input": [29.5, 34.0], "expected": 34.0110477448486}, {"input": [29.5, 34.5], "expected": 34.50671534848912}, {"input": [29.5, 35.0], "expected": 35.00407844327057}, {"input": [29.5, 35.5], "expected": 35.50247568513773}, {"input": [29.5, 36.0], "expected": 36.00150231015976}, {"input": [29.5, 36.5], "expected": 36.50091146645377}, {"input": [29.5, 37.0], "expected": 37.00055293147536}, {"input": [29.5, 37.5], "expected": 37.5003354063729}, {"input": [29.5, 38.0], "expected": 38.00020344767213}, {"input": [29.5, 38.5], "expected": 38.50012340218972}, {"input": [29.5, 39.0], "expected": 39.00007484902863}, {"input": [29.5, 39.5], "expected": 39.50004539889922}, {"input": [29.5, 40.0], "expected": 40.00002753607023}, {"input": [29.5, 40.5], "expected": 40.50001670156132}, {"input": [29.5, 41.0], "expected": 41.00001013004229}, {"input": [29.5, 41.5], "expected": 41.50000614419348}, {"input": [29.5, 42.0], "expected": 42.00000372664623}, {"input": [29.5, 42.5], "expected": 42.50000226032685}, {"input": [29.5, 43.0], "expected": 43.000001370958145}, {"input": [29.5, 43.5], "expected": 43.500000831528375}, {"input": [29.5, 44.0], "expected": 44.00000050434753}, {"input": [29.5, 44.5], "expected": 44.500000305902276}, {"input": [29.5, 45.0], "expected": 45.00000018553912}, {"input": [29.5, 45.5], "expected": 45.50000011253517}, {"input": [29.5, 46.0], "expected": 46.00000006825603}, {"input": [29.5, 46.5], "expected": 46.500000041399375}, {"input": [29.5, 47.0], "expected": 47.00000002510999}, {"input": [29.5, 47.5], "expected": 47.50000001522998}, {"input": [29.5, 48.0], "expected": 48.000000009237446}, {"input": [29.5, 48.5], "expected": 48.50000000560279}, {"input": [29.5, 49.0], "expected": 49.00000000339827}, {"input": [29.5, 49.5], "expected": 49.50000000206116}, {"input": [29.5, 50.0], "expected": 50.00000000125015}, {"input": [29.5, 50.5], "expected": 50.500000000758256}, {"input": [29.5, 51.0], "expected": 51.000000000459906}, {"input": [29.5, 51.5], "expected": 51.500000000278945}, {"input": [29.5, 52.0], "expected": 52.00000000016919}, {"input": [29.5, 52.5], "expected": 52.50000000010262}, {"input": [29.5, 53.0], "expected": 53.00000000006224}, {"input": [29.5, 53.5], "expected": 53.50000000003775}, {"input": [29.5, 54.0], "expected": 54.0000000000229}, {"input": [29.5, 54.5], "expected": 54.50000000001389}, {"input": [29.5, 55.0], "expected": 55.00000000000842}, {"input": [29.5, 55.5], "expected": 55.50000000000511}, {"input": [29.5, 56.0], "expected": 56.0000000000031}, {"input": [29.5, 56.5], "expected": 56.50000000000188}, {"input": [29.5, 57.0], "expected": 57.00000000000114}, {"input": [29.5, 57.5], "expected": 57.50000000000069}, {"input": [29.5, 58.0], "expected": 58.00000000000042}, {"input": [29.5, 58.5], "expected": 58.500000000000256}, {"input": [29.5, 59.0], "expected": 59.000000000000156}, {"input": [29.5, 59.5], "expected": 59.50000000000009}, {"input": [29.5, 60.0], "expected": 60.00000000000006}, {"input": [29.5, 60.5], "expected": 60.500000000000036}, {"input": [29.5, 61.0], "expected": 61.00000000000002}, {"input": [29.5, 61.5], "expected": 61.500000000000014}, {"input": [29.5, 62.0], "expected": 62.00000000000001}, {"input": [29.5, 62.5], "expected": 62.50000000000001}, {"input": [29.5, 63.0], "expected": 63.0}, {"input": [29.5, 63.5], "expected": 63.5}, {"input": [29.5, 64.0], "expected": 64.0}, {"input": [29.5, 64.5], "expected": 64.5}, {"input": [29.5, 65.0], "expected": 65.0}, {"input": [29.5, 65.5], "expected": 65.5}, {"input": [29.5, 66.0], "expected": 66.0}, {"input": [29.5, 66.5], "expected": 66.5}, {"input": [29.5, 67.0], "expected": 67.0}, {"input": [29.5, 67.5], "expected": 67.5}, {"input": [29.5, 68.0], "expected": 68.0}, {"input": [29.5, 68.5], "expected": 68.5}, {"input": [29.5, 69.0], "expected": 69.0}, {"input": [29.5, 69.5], "expected": 69.5}, {"input": [29.5, 70.0], "expected": 70.0}, {"input": [29.5, 70.5], "expected": 70.5}, {"input": [29.5, 71.0], "expected": 71.0}, {"input": [29.5, 71.5], "expected": 71.5}, {"input": [29.5, 72.0], "expected": 72.0}, {"input": [29.5, 72.5], "expected": 72.5}, {"input": [29.5, 73.0], "expected": 73.0}, {"input": [29.5, 73.5], "expected": 73.5}, {"input": [29.5, 74.0], "expected": 74.0}, {"input": [29.5, 74.5], "expected": 74.5}, {"input": [29.5, 75.0], "expected": 75.0}, {"input": [29.5, 75.5], "expected": 75.5}, {"input": [29.5, 76.0], "expected": 76.0}, {"input": [29.5, 76.5], "expected": 76.5}, {"input": [29.5, 77.0], "expected": 77.0}, {"input": [29.5, 77.5], "expected": 77.5}, {"input": [29.5, 78.0], "expected": 78.0}, {"input": [29.5, 78.5], "expected": 78.5}, {"input": [29.5, 79.0], "expected": 79.0}, {"input": [29.5, 79.5], "expected": 79.5}, {"input": [29.5, 80.0], "expected": 80.0}, {"input": [29.5, 80.5], "expected": 80.5}, {"input": [29.5, 81.0], "expected": 81.0}, {"input": [29.5, 81.5], "expected": 81.5}, {"input": [29.5, 82.0], "expected": 82.0}, {"input": [29.5, 82.5], "expected": 82.5}, {"input": [29.5, 83.0], "expected": 83.0}, {"input": [29.5, 83.5], "expected": 83.5}, {"input": [29.5, 84.0], "expected": 84.0}, {"input": [29.5, 84.5], "expected": 84.5}, {"input": [29.5, 85.0], "expected": 85.0}, {"input": [29.5, 85.5], "expected": 85.5}, {"input": [29.5, 86.0], "expected": 86.0}, {"input": [29.5, 86.5], "expected": 86.5}, {"input": [29.5, 87.0], "expected": 87.0}, {"input": [29.5, 87.5], "expected": 87.5}, {"input": [29.5, 88.0], "expected": 88.0}, {"input": [29.5, 88.5], "expected": 88.5}, {"input": [29.5, 89.0], "expected": 89.0}, {"input": [29.5, 89.5], "expected": 89.5}, {"input": [29.5, 90.0], "expected": 90.0}, {"input": [29.5, 90.5], "expected": 90.5}, {"input": [29.5, 91.0], "expected": 91.0}, {"input": [29.5, 91.5], "expected": 91.5}, {"input": [29.5, 92.0], "expected": 92.0}, {"input": [29.5, 92.5], "expected": 92.5}, {"input": [29.5, 93.0], "expected": 93.0}, {"input": [29.5, 93.5], "expected": 93.5}, {"input": [29.5, 94.0], "expected": 94.0}, {"input": [29.5, 94.5], "expected": 94.5}, {"input": [29.5, 95.0], "expected": 95.0}, {"input": [29.5, 95.5], "expected": 95.5}, {"input": [29.5, 96.0], "expected": 96.0}, {"input": [29.5, 96.5], "expected": 96.5}, {"input": [29.5, 97.0], "expected": 97.0}, {"input": [29.5, 97.5], "expected": 97.5}, {"input": [29.5, 98.0], "expected": 98.0}, {"input": [29.5, 98.5], "expected": 98.5}, {"input": [29.5, 99.0], "expected": 99.0}, {"input": [29.5, 99.5], "expected": 99.5}, {"input": [30.0, -100.0], "expected": 30.0}, {"input": [30.0, -99.5], "expected": 30.0}, {"input": [30.0, -99.0], "expected": 30.0}, {"input": [30.0, -98.5], "expected": 30.0}, {"input": [30.0, -98.0], "expected": 30.0}, {"input": [30.0, -97.5], "expected": 30.0}, {"input": [30.0, -97.0], "expected": 30.0}, {"input": [30.0, -96.5], "expected": 30.0}, {"input": [30.0, -96.0], "expected": 30.0}, {"input": [30.0, -95.5], "expected": 30.0}, {"input": [30.0, -95.0], "expected": 30.0}, {"input": [30.0, -94.5], "expected": 30.0}, {"input": [30.0, -94.0], "expected": 30.0}, {"input": [30.0, -93.5], "expected": 30.0}, {"input": [30.0, -93.0], "expected": 30.0}, {"input": [30.0, -92.5], "expected": 30.0}, {"input": [30.0, -92.0], "expected": 30.0}, {"input": [30.0, -91.5], "expected": 30.0}, {"input": [30.0, -91.0], "expected": 30.0}, {"input": [30.0, -90.5], "expected": 30.0}, {"input": [30.0, -90.0], "expected": 30.0}, {"input": [30.0, -89.5], "expected": 30.0}, {"input": [30.0, -89.0], "expected": 30.0}, {"input": [30.0, -88.5], "expected": 30.0}, {"input": [30.0, -88.0], "expected": 30.0}, {"input": [30.0, -87.5], "expected": 30.0}, {"input": [30.0, -87.0], "expected": 30.0}, {"input": [30.0, -86.5], "expected": 30.0}, {"input": [30.0, -86.0], "expected": 30.0}, {"input": [30.0, -85.5], "expected": 30.0}, {"input": [30.0, -85.0], "expected": 30.0}, {"input": [30.0, -84.5], "expected": 30.0}, {"input": [30.0, -84.0], "expected": 30.0}, {"input": [30.0, -83.5], "expected": 30.0}, {"input": [30.0, -83.0], "expected": 30.0}, {"input": [30.0, -82.5], "expected": 30.0}, {"input": [30.0, -82.0], "expected": 30.0}, {"input": [30.0, -81.5], "expected": 30.0}, {"input": [30.0, -81.0], "expected": 30.0}, {"input": [30.0, -80.5], "expected": 30.0}, {"input": [30.0, -80.0], "expected": 30.0}, {"input": [30.0, -79.5], "expected": 30.0}, {"input": [30.0, -79.0], "expected": 30.0}, {"input": [30.0, -78.5], "expected": 30.0}, {"input": [30.0, -78.0], "expected": 30.0}, {"input": [30.0, -77.5], "expected": 30.0}, {"input": [30.0, -77.0], "expected": 30.0}, {"input": [30.0, -76.5], "expected": 30.0}, {"input": [30.0, -76.0], "expected": 30.0}, {"input": [30.0, -75.5], "expected": 30.0}, {"input": [30.0, -75.0], "expected": 30.0}, {"input": [30.0, -74.5], "expected": 30.0}, {"input": [30.0, -74.0], "expected": 30.0}, {"input": [30.0, -73.5], "expected": 30.0}, {"input": [30.0, -73.0], "expected": 30.0}, {"input": [30.0, -72.5], "expected": 30.0}, {"input": [30.0, -72.0], "expected": 30.0}, {"input": [30.0, -71.5], "expected": 30.0}, {"input": [30.0, -71.0], "expected": 30.0}, {"input": [30.0, -70.5], "expected": 30.0}, {"input": [30.0, -70.0], "expected": 30.0}, {"input": [30.0, -69.5], "expected": 30.0}, {"input": [30.0, -69.0], "expected": 30.0}, {"input": [30.0, -68.5], "expected": 30.0}, {"input": [30.0, -68.0], "expected": 30.0}, {"input": [30.0, -67.5], "expected": 30.0}, {"input": [30.0, -67.0], "expected": 30.0}, {"input": [30.0, -66.5], "expected": 30.0}, {"input": [30.0, -66.0], "expected": 30.0}, {"input": [30.0, -65.5], "expected": 30.0}, {"input": [30.0, -65.0], "expected": 30.0}, {"input": [30.0, -64.5], "expected": 30.0}, {"input": [30.0, -64.0], "expected": 30.0}, {"input": [30.0, -63.5], "expected": 30.0}, {"input": [30.0, -63.0], "expected": 30.0}, {"input": [30.0, -62.5], "expected": 30.0}, {"input": [30.0, -62.0], "expected": 30.0}, {"input": [30.0, -61.5], "expected": 30.0}, {"input": [30.0, -61.0], "expected": 30.0}, {"input": [30.0, -60.5], "expected": 30.0}, {"input": [30.0, -60.0], "expected": 30.0}, {"input": [30.0, -59.5], "expected": 30.0}, {"input": [30.0, -59.0], "expected": 30.0}, {"input": [30.0, -58.5], "expected": 30.0}, {"input": [30.0, -58.0], "expected": 30.0}, {"input": [30.0, -57.5], "expected": 30.0}, {"input": [30.0, -57.0], "expected": 30.0}, {"input": [30.0, -56.5], "expected": 30.0}, {"input": [30.0, -56.0], "expected": 30.0}, {"input": [30.0, -55.5], "expected": 30.0}, {"input": [30.0, -55.0], "expected": 30.0}, {"input": [30.0, -54.5], "expected": 30.0}, {"input": [30.0, -54.0], "expected": 30.0}, {"input": [30.0, -53.5], "expected": 30.0}, {"input": [30.0, -53.0], "expected": 30.0}, {"input": [30.0, -52.5], "expected": 30.0}, {"input": [30.0, -52.0], "expected": 30.0}, {"input": [30.0, -51.5], "expected": 30.0}, {"input": [30.0, -51.0], "expected": 30.0}, {"input": [30.0, -50.5], "expected": 30.0}, {"input": [30.0, -50.0], "expected": 30.0}, {"input": [30.0, -49.5], "expected": 30.0}, {"input": [30.0, -49.0], "expected": 30.0}, {"input": [30.0, -48.5], "expected": 30.0}, {"input": [30.0, -48.0], "expected": 30.0}, {"input": [30.0, -47.5], "expected": 30.0}, {"input": [30.0, -47.0], "expected": 30.0}, {"input": [30.0, -46.5], "expected": 30.0}, {"input": [30.0, -46.0], "expected": 30.0}, {"input": [30.0, -45.5], "expected": 30.0}, {"input": [30.0, -45.0], "expected": 30.0}, {"input": [30.0, -44.5], "expected": 30.0}, {"input": [30.0, -44.0], "expected": 30.0}, {"input": [30.0, -43.5], "expected": 30.0}, {"input": [30.0, -43.0], "expected": 30.0}, {"input": [30.0, -42.5], "expected": 30.0}, {"input": [30.0, -42.0], "expected": 30.0}, {"input": [30.0, -41.5], "expected": 30.0}, {"input": [30.0, -41.0], "expected": 30.0}, {"input": [30.0, -40.5], "expected": 30.0}, {"input": [30.0, -40.0], "expected": 30.0}, {"input": [30.0, -39.5], "expected": 30.0}, {"input": [30.0, -39.0], "expected": 30.0}, {"input": [30.0, -38.5], "expected": 30.0}, {"input": [30.0, -38.0], "expected": 30.0}, {"input": [30.0, -37.5], "expected": 30.0}, {"input": [30.0, -37.0], "expected": 30.0}, {"input": [30.0, -36.5], "expected": 30.0}, {"input": [30.0, -36.0], "expected": 30.0}, {"input": [30.0, -35.5], "expected": 30.0}, {"input": [30.0, -35.0], "expected": 30.0}, {"input": [30.0, -34.5], "expected": 30.0}, {"input": [30.0, -34.0], "expected": 30.0}, {"input": [30.0, -33.5], "expected": 30.0}, {"input": [30.0, -33.0], "expected": 30.0}, {"input": [30.0, -32.5], "expected": 30.0}, {"input": [30.0, -32.0], "expected": 30.0}, {"input": [30.0, -31.5], "expected": 30.0}, {"input": [30.0, -31.0], "expected": 30.0}, {"input": [30.0, -30.5], "expected": 30.0}, {"input": [30.0, -30.0], "expected": 30.0}, {"input": [30.0, -29.5], "expected": 30.0}, {"input": [30.0, -29.0], "expected": 30.0}, {"input": [30.0, -28.5], "expected": 30.0}, {"input": [30.0, -28.0], "expected": 30.0}, {"input": [30.0, -27.5], "expected": 30.0}, {"input": [30.0, -27.0], "expected": 30.0}, {"input": [30.0, -26.5], "expected": 30.0}, {"input": [30.0, -26.0], "expected": 30.0}, {"input": [30.0, -25.5], "expected": 30.0}, {"input": [30.0, -25.0], "expected": 30.0}, {"input": [30.0, -24.5], "expected": 30.0}, {"input": [30.0, -24.0], "expected": 30.0}, {"input": [30.0, -23.5], "expected": 30.0}, {"input": [30.0, -23.0], "expected": 30.0}, {"input": [30.0, -22.5], "expected": 30.0}, {"input": [30.0, -22.0], "expected": 30.0}, {"input": [30.0, -21.5], "expected": 30.0}, {"input": [30.0, -21.0], "expected": 30.0}, {"input": [30.0, -20.5], "expected": 30.0}, {"input": [30.0, -20.0], "expected": 30.0}, {"input": [30.0, -19.5], "expected": 30.0}, {"input": [30.0, -19.0], "expected": 30.0}, {"input": [30.0, -18.5], "expected": 30.0}, {"input": [30.0, -18.0], "expected": 30.0}, {"input": [30.0, -17.5], "expected": 30.0}, {"input": [30.0, -17.0], "expected": 30.0}, {"input": [30.0, -16.5], "expected": 30.0}, {"input": [30.0, -16.0], "expected": 30.0}, {"input": [30.0, -15.5], "expected": 30.0}, {"input": [30.0, -15.0], "expected": 30.0}, {"input": [30.0, -14.5], "expected": 30.0}, {"input": [30.0, -14.0], "expected": 30.0}, {"input": [30.0, -13.5], "expected": 30.0}, {"input": [30.0, -13.0], "expected": 30.0}, {"input": [30.0, -12.5], "expected": 30.0}, {"input": [30.0, -12.0], "expected": 30.0}, {"input": [30.0, -11.5], "expected": 30.0}, {"input": [30.0, -11.0], "expected": 30.0}, {"input": [30.0, -10.5], "expected": 30.0}, {"input": [30.0, -10.0], "expected": 30.0}, {"input": [30.0, -9.5], "expected": 30.0}, {"input": [30.0, -9.0], "expected": 30.0}, {"input": [30.0, -8.5], "expected": 30.0}, {"input": [30.0, -8.0], "expected": 30.0}, {"input": [30.0, -7.5], "expected": 30.0}, {"input": [30.0, -7.0], "expected": 30.0}, {"input": [30.0, -6.5], "expected": 30.0}, {"input": [30.0, -6.0], "expected": 30.0}, {"input": [30.0, -5.5], "expected": 30.0}, {"input": [30.0, -5.0], "expected": 30.0}, {"input": [30.0, -4.5], "expected": 30.0}, {"input": [30.0, -4.0], "expected": 30.0}, {"input": [30.0, -3.5], "expected": 30.000000000000004}, {"input": [30.0, -3.0], "expected": 30.000000000000004}, {"input": [30.0, -2.5], "expected": 30.000000000000007}, {"input": [30.0, -2.0], "expected": 30.000000000000014}, {"input": [30.0, -1.5], "expected": 30.00000000000002}, {"input": [30.0, -1.0], "expected": 30.000000000000036}, {"input": [30.0, -0.5], "expected": 30.000000000000057}, {"input": [30.0, 0.0], "expected": 30.000000000000092}, {"input": [30.0, 0.5], "expected": 30.000000000000153}, {"input": [30.0, 1.0], "expected": 30.000000000000256}, {"input": [30.0, 1.5], "expected": 30.00000000000042}, {"input": [30.0, 2.0], "expected": 30.000000000000693}, {"input": [30.0, 2.5], "expected": 30.00000000000114}, {"input": [30.0, 3.0], "expected": 30.00000000000188}, {"input": [30.0, 3.5], "expected": 30.000000000003098}, {"input": [30.0, 4.0], "expected": 30.00000000000511}, {"input": [30.0, 4.5], "expected": 30.000000000008423}, {"input": [30.0, 5.0], "expected": 30.000000000013888}, {"input": [30.0, 5.5], "expected": 30.000000000022897}, {"input": [30.0, 6.0], "expected": 30.00000000003775}, {"input": [30.0, 6.5], "expected": 30.00000000006224}, {"input": [30.0, 7.0], "expected": 30.00000000010262}, {"input": [30.0, 7.5], "expected": 30.00000000016919}, {"input": [30.0, 8.0], "expected": 30.00000000027895}, {"input": [30.0, 8.5], "expected": 30.000000000459906}, {"input": [30.0, 9.0], "expected": 30.000000000758256}, {"input": [30.0, 9.5], "expected": 30.000000001250154}, {"input": [30.0, 10.0], "expected": 30.000000002061153}, {"input": [30.0, 10.5], "expected": 30.000000003398267}, {"input": [30.0, 11.0], "expected": 30.000000005602796}, {"input": [30.0, 11.5], "expected": 30.00000000923745}, {"input": [30.0, 12.0], "expected": 30.00000001522998}, {"input": [30.0, 12.5], "expected": 30.00000002510999}, {"input": [30.0, 13.0], "expected": 30.000000041399375}, {"input": [30.0, 13.5], "expected": 30.000000068256032}, {"input": [30.0, 14.0], "expected": 30.00000011253517}, {"input": [30.0, 14.5], "expected": 30.00000018553912}, {"input": [30.0, 15.0], "expected": 30.000000305902272}, {"input": [30.0, 15.5], "expected": 30.000000504347536}, {"input": [30.0, 16.0], "expected": 30.000000831528375}, {"input": [30.0, 16.5], "expected": 30.000001370958145}, {"input": [30.0, 17.0], "expected": 30.000002260326852}, {"input": [30.0, 17.5], "expected": 30.000003726646227}, {"input": [30.0, 18.0], "expected": 30.000006144193478}, {"input": [30.0, 18.5], "expected": 30.00001013004229}, {"input": [30.0, 19.0], "expected": 30.000016701561318}, {"input": [30.0, 19.5], "expected": 30.000027536070228}, {"input": [30.0, 20.0], "expected": 30.000045398899218}, {"input": [30.0, 20.5], "expected": 30.00007484902863}, {"input": [30.0, 21.0], "expected": 30.000123402189722}, {"input": [30.0, 21.5], "expected": 30.000203447672128}, {"input": [30.0, 22.0], "expected": 30.000335406372894}, {"input": [30.0, 22.5], "expected": 30.00055293147536}, {"input": [30.0, 23.0], "expected": 30.000911466453775}, {"input": [30.0, 23.5], "expected": 30.001502310159754}, {"input": [30.0, 24.0], "expected": 30.002475685137732}, {"input": [30.0, 24.5], "expected": 30.004078443270572}, {"input": [30.0, 25.0], "expected": 30.006715348489116}, {"input": [30.0, 25.5], "expected": 30.011047744848593}, {"input": [30.0, 26.0], "expected": 30.01814992791781}, {"input": [30.0, 26.5], "expected": 30.02975041827262}, {"input": [30.0, 27.0], "expected": 30.048587351573744}, {"input": [30.0, 27.5], "expected": 30.07888973429255}, {"input": [30.0, 28.0], "expected": 30.126928011042974}, {"input": [30.0, 28.5], "expected": 30.201413277982752}, {"input": [30.0, 29.0], "expected": 30.313261687518224}, {"input": [30.0, 29.5], "expected": 30.47407698418011}, {"input": [30.0, 30.0], "expected": 30.693147180559944}, {"input": [30.0, 30.5], "expected": 30.97407698418011}, {"input": [30.0, 31.0], "expected": 31.313261687518224}, {"input": [30.0, 31.5], "expected": 31.701413277982752}, {"input": [30.0, 32.0], "expected": 32.12692801104297}, {"input": [30.0, 32.5], "expected": 32.57888973429255}, {"input": [30.0, 33.0], "expected": 33.048587351573744}, {"input": [30.0, 33.5], "expected": 33.52975041827262}, {"input": [30.0, 34.0], "expected": 34.01814992791781}, {"input": [30.0, 34.5], "expected": 34.5110477448486}, {"input": [30.0, 35.0], "expected": 35.00671534848912}, {"input": [30.0, 35.5], "expected": 35.50407844327057}, {"input": [30.0, 36.0], "expected": 36.00247568513773}, {"input": [30.0, 36.5], "expected": 36.50150231015976}, {"input": [30.0, 37.0], "expected": 37.00091146645377}, {"input": [30.0, 37.5], "expected": 37.50055293147536}, {"input": [30.0, 38.0], "expected": 38.0003354063729}, {"input": [30.0, 38.5], "expected": 38.50020344767213}, {"input": [30.0, 39.0], "expected": 39.00012340218972}, {"input": [30.0, 39.5], "expected": 39.50007484902863}, {"input": [30.0, 40.0], "expected": 40.00004539889922}, {"input": [30.0, 40.5], "expected": 40.50002753607023}, {"input": [30.0, 41.0], "expected": 41.00001670156132}, {"input": [30.0, 41.5], "expected": 41.50001013004229}, {"input": [30.0, 42.0], "expected": 42.00000614419348}, {"input": [30.0, 42.5], "expected": 42.50000372664623}, {"input": [30.0, 43.0], "expected": 43.00000226032685}, {"input": [30.0, 43.5], "expected": 43.500001370958145}, {"input": [30.0, 44.0], "expected": 44.000000831528375}, {"input": [30.0, 44.5], "expected": 44.50000050434753}, {"input": [30.0, 45.0], "expected": 45.000000305902276}, {"input": [30.0, 45.5], "expected": 45.50000018553912}, {"input": [30.0, 46.0], "expected": 46.00000011253517}, {"input": [30.0, 46.5], "expected": 46.50000006825603}, {"input": [30.0, 47.0], "expected": 47.000000041399375}, {"input": [30.0, 47.5], "expected": 47.50000002510999}, {"input": [30.0, 48.0], "expected": 48.00000001522998}, {"input": [30.0, 48.5], "expected": 48.500000009237446}, {"input": [30.0, 49.0], "expected": 49.00000000560279}, {"input": [30.0, 49.5], "expected": 49.50000000339827}, {"input": [30.0, 50.0], "expected": 50.00000000206116}, {"input": [30.0, 50.5], "expected": 50.50000000125015}, {"input": [30.0, 51.0], "expected": 51.000000000758256}, {"input": [30.0, 51.5], "expected": 51.500000000459906}, {"input": [30.0, 52.0], "expected": 52.000000000278945}, {"input": [30.0, 52.5], "expected": 52.50000000016919}, {"input": [30.0, 53.0], "expected": 53.00000000010262}, {"input": [30.0, 53.5], "expected": 53.50000000006224}, {"input": [30.0, 54.0], "expected": 54.00000000003775}, {"input": [30.0, 54.5], "expected": 54.5000000000229}, {"input": [30.0, 55.0], "expected": 55.00000000001389}, {"input": [30.0, 55.5], "expected": 55.50000000000842}, {"input": [30.0, 56.0], "expected": 56.00000000000511}, {"input": [30.0, 56.5], "expected": 56.5000000000031}, {"input": [30.0, 57.0], "expected": 57.00000000000188}, {"input": [30.0, 57.5], "expected": 57.50000000000114}, {"input": [30.0, 58.0], "expected": 58.00000000000069}, {"input": [30.0, 58.5], "expected": 58.50000000000042}, {"input": [30.0, 59.0], "expected": 59.000000000000256}, {"input": [30.0, 59.5], "expected": 59.500000000000156}, {"input": [30.0, 60.0], "expected": 60.00000000000009}, {"input": [30.0, 60.5], "expected": 60.50000000000006}, {"input": [30.0, 61.0], "expected": 61.000000000000036}, {"input": [30.0, 61.5], "expected": 61.50000000000002}, {"input": [30.0, 62.0], "expected": 62.000000000000014}, {"input": [30.0, 62.5], "expected": 62.50000000000001}, {"input": [30.0, 63.0], "expected": 63.00000000000001}, {"input": [30.0, 63.5], "expected": 63.5}, {"input": [30.0, 64.0], "expected": 64.0}, {"input": [30.0, 64.5], "expected": 64.5}, {"input": [30.0, 65.0], "expected": 65.0}, {"input": [30.0, 65.5], "expected": 65.5}, {"input": [30.0, 66.0], "expected": 66.0}, {"input": [30.0, 66.5], "expected": 66.5}, {"input": [30.0, 67.0], "expected": 67.0}, {"input": [30.0, 67.5], "expected": 67.5}, {"input": [30.0, 68.0], "expected": 68.0}, {"input": [30.0, 68.5], "expected": 68.5}, {"input": [30.0, 69.0], "expected": 69.0}, {"input": [30.0, 69.5], "expected": 69.5}, {"input": [30.0, 70.0], "expected": 70.0}, {"input": [30.0, 70.5], "expected": 70.5}, {"input": [30.0, 71.0], "expected": 71.0}, {"input": [30.0, 71.5], "expected": 71.5}, {"input": [30.0, 72.0], "expected": 72.0}, {"input": [30.0, 72.5], "expected": 72.5}, {"input": [30.0, 73.0], "expected": 73.0}, {"input": [30.0, 73.5], "expected": 73.5}, {"input": [30.0, 74.0], "expected": 74.0}, {"input": [30.0, 74.5], "expected": 74.5}, {"input": [30.0, 75.0], "expected": 75.0}, {"input": [30.0, 75.5], "expected": 75.5}, {"input": [30.0, 76.0], "expected": 76.0}, {"input": [30.0, 76.5], "expected": 76.5}, {"input": [30.0, 77.0], "expected": 77.0}, {"input": [30.0, 77.5], "expected": 77.5}, {"input": [30.0, 78.0], "expected": 78.0}, {"input": [30.0, 78.5], "expected": 78.5}, {"input": [30.0, 79.0], "expected": 79.0}, {"input": [30.0, 79.5], "expected": 79.5}, {"input": [30.0, 80.0], "expected": 80.0}, {"input": [30.0, 80.5], "expected": 80.5}, {"input": [30.0, 81.0], "expected": 81.0}, {"input": [30.0, 81.5], "expected": 81.5}, {"input": [30.0, 82.0], "expected": 82.0}, {"input": [30.0, 82.5], "expected": 82.5}, {"input": [30.0, 83.0], "expected": 83.0}, {"input": [30.0, 83.5], "expected": 83.5}, {"input": [30.0, 84.0], "expected": 84.0}, {"input": [30.0, 84.5], "expected": 84.5}, {"input": [30.0, 85.0], "expected": 85.0}, {"input": [30.0, 85.5], "expected": 85.5}, {"input": [30.0, 86.0], "expected": 86.0}, {"input": [30.0, 86.5], "expected": 86.5}, {"input": [30.0, 87.0], "expected": 87.0}, {"input": [30.0, 87.5], "expected": 87.5}, {"input": [30.0, 88.0], "expected": 88.0}, {"input": [30.0, 88.5], "expected": 88.5}, {"input": [30.0, 89.0], "expected": 89.0}, {"input": [30.0, 89.5], "expected": 89.5}, {"input": [30.0, 90.0], "expected": 90.0}, {"input": [30.0, 90.5], "expected": 90.5}, {"input": [30.0, 91.0], "expected": 91.0}, {"input": [30.0, 91.5], "expected": 91.5}, {"input": [30.0, 92.0], "expected": 92.0}, {"input": [30.0, 92.5], "expected": 92.5}, {"input": [30.0, 93.0], "expected": 93.0}, {"input": [30.0, 93.5], "expected": 93.5}, {"input": [30.0, 94.0], "expected": 94.0}, {"input": [30.0, 94.5], "expected": 94.5}, {"input": [30.0, 95.0], "expected": 95.0}, {"input": [30.0, 95.5], "expected": 95.5}, {"input": [30.0, 96.0], "expected": 96.0}, {"input": [30.0, 96.5], "expected": 96.5}, {"input": [30.0, 97.0], "expected": 97.0}, {"input": [30.0, 97.5], "expected": 97.5}, {"input": [30.0, 98.0], "expected": 98.0}, {"input": [30.0, 98.5], "expected": 98.5}, {"input": [30.0, 99.0], "expected": 99.0}, {"input": [30.0, 99.5], "expected": 99.5}, {"input": [30.5, -100.0], "expected": 30.5}, {"input": [30.5, -99.5], "expected": 30.5}, {"input": [30.5, -99.0], "expected": 30.5}, {"input": [30.5, -98.5], "expected": 30.5}, {"input": [30.5, -98.0], "expected": 30.5}, {"input": [30.5, -97.5], "expected": 30.5}, {"input": [30.5, -97.0], "expected": 30.5}, {"input": [30.5, -96.5], "expected": 30.5}, {"input": [30.5, -96.0], "expected": 30.5}, {"input": [30.5, -95.5], "expected": 30.5}, {"input": [30.5, -95.0], "expected": 30.5}, {"input": [30.5, -94.5], "expected": 30.5}, {"input": [30.5, -94.0], "expected": 30.5}, {"input": [30.5, -93.5], "expected": 30.5}, {"input": [30.5, -93.0], "expected": 30.5}, {"input": [30.5, -92.5], "expected": 30.5}, {"input": [30.5, -92.0], "expected": 30.5}, {"input": [30.5, -91.5], "expected": 30.5}, {"input": [30.5, -91.0], "expected": 30.5}, {"input": [30.5, -90.5], "expected": 30.5}, {"input": [30.5, -90.0], "expected": 30.5}, {"input": [30.5, -89.5], "expected": 30.5}, {"input": [30.5, -89.0], "expected": 30.5}, {"input": [30.5, -88.5], "expected": 30.5}, {"input": [30.5, -88.0], "expected": 30.5}, {"input": [30.5, -87.5], "expected": 30.5}, {"input": [30.5, -87.0], "expected": 30.5}, {"input": [30.5, -86.5], "expected": 30.5}, {"input": [30.5, -86.0], "expected": 30.5}, {"input": [30.5, -85.5], "expected": 30.5}, {"input": [30.5, -85.0], "expected": 30.5}, {"input": [30.5, -84.5], "expected": 30.5}, {"input": [30.5, -84.0], "expected": 30.5}, {"input": [30.5, -83.5], "expected": 30.5}, {"input": [30.5, -83.0], "expected": 30.5}, {"input": [30.5, -82.5], "expected": 30.5}, {"input": [30.5, -82.0], "expected": 30.5}, {"input": [30.5, -81.5], "expected": 30.5}, {"input": [30.5, -81.0], "expected": 30.5}, {"input": [30.5, -80.5], "expected": 30.5}, {"input": [30.5, -80.0], "expected": 30.5}, {"input": [30.5, -79.5], "expected": 30.5}, {"input": [30.5, -79.0], "expected": 30.5}, {"input": [30.5, -78.5], "expected": 30.5}, {"input": [30.5, -78.0], "expected": 30.5}, {"input": [30.5, -77.5], "expected": 30.5}, {"input": [30.5, -77.0], "expected": 30.5}, {"input": [30.5, -76.5], "expected": 30.5}, {"input": [30.5, -76.0], "expected": 30.5}, {"input": [30.5, -75.5], "expected": 30.5}, {"input": [30.5, -75.0], "expected": 30.5}, {"input": [30.5, -74.5], "expected": 30.5}, {"input": [30.5, -74.0], "expected": 30.5}, {"input": [30.5, -73.5], "expected": 30.5}, {"input": [30.5, -73.0], "expected": 30.5}, {"input": [30.5, -72.5], "expected": 30.5}, {"input": [30.5, -72.0], "expected": 30.5}, {"input": [30.5, -71.5], "expected": 30.5}, {"input": [30.5, -71.0], "expected": 30.5}, {"input": [30.5, -70.5], "expected": 30.5}, {"input": [30.5, -70.0], "expected": 30.5}, {"input": [30.5, -69.5], "expected": 30.5}, {"input": [30.5, -69.0], "expected": 30.5}, {"input": [30.5, -68.5], "expected": 30.5}, {"input": [30.5, -68.0], "expected": 30.5}, {"input": [30.5, -67.5], "expected": 30.5}, {"input": [30.5, -67.0], "expected": 30.5}, {"input": [30.5, -66.5], "expected": 30.5}, {"input": [30.5, -66.0], "expected": 30.5}, {"input": [30.5, -65.5], "expected": 30.5}, {"input": [30.5, -65.0], "expected": 30.5}, {"input": [30.5, -64.5], "expected": 30.5}, {"input": [30.5, -64.0], "expected": 30.5}, {"input": [30.5, -63.5], "expected": 30.5}, {"input": [30.5, -63.0], "expected": 30.5}, {"input": [30.5, -62.5], "expected": 30.5}, {"input": [30.5, -62.0], "expected": 30.5}, {"input": [30.5, -61.5], "expected": 30.5}, {"input": [30.5, -61.0], "expected": 30.5}, {"input": [30.5, -60.5], "expected": 30.5}, {"input": [30.5, -60.0], "expected": 30.5}, {"input": [30.5, -59.5], "expected": 30.5}, {"input": [30.5, -59.0], "expected": 30.5}, {"input": [30.5, -58.5], "expected": 30.5}, {"input": [30.5, -58.0], "expected": 30.5}, {"input": [30.5, -57.5], "expected": 30.5}, {"input": [30.5, -57.0], "expected": 30.5}, {"input": [30.5, -56.5], "expected": 30.5}, {"input": [30.5, -56.0], "expected": 30.5}, {"input": [30.5, -55.5], "expected": 30.5}, {"input": [30.5, -55.0], "expected": 30.5}, {"input": [30.5, -54.5], "expected": 30.5}, {"input": [30.5, -54.0], "expected": 30.5}, {"input": [30.5, -53.5], "expected": 30.5}, {"input": [30.5, -53.0], "expected": 30.5}, {"input": [30.5, -52.5], "expected": 30.5}, {"input": [30.5, -52.0], "expected": 30.5}, {"input": [30.5, -51.5], "expected": 30.5}, {"input": [30.5, -51.0], "expected": 30.5}, {"input": [30.5, -50.5], "expected": 30.5}, {"input": [30.5, -50.0], "expected": 30.5}, {"input": [30.5, -49.5], "expected": 30.5}, {"input": [30.5, -49.0], "expected": 30.5}, {"input": [30.5, -48.5], "expected": 30.5}, {"input": [30.5, -48.0], "expected": 30.5}, {"input": [30.5, -47.5], "expected": 30.5}, {"input": [30.5, -47.0], "expected": 30.5}, {"input": [30.5, -46.5], "expected": 30.5}, {"input": [30.5, -46.0], "expected": 30.5}, {"input": [30.5, -45.5], "expected": 30.5}, {"input": [30.5, -45.0], "expected": 30.5}, {"input": [30.5, -44.5], "expected": 30.5}, {"input": [30.5, -44.0], "expected": 30.5}, {"input": [30.5, -43.5], "expected": 30.5}, {"input": [30.5, -43.0], "expected": 30.5}, {"input": [30.5, -42.5], "expected": 30.5}, {"input": [30.5, -42.0], "expected": 30.5}, {"input": [30.5, -41.5], "expected": 30.5}, {"input": [30.5, -41.0], "expected": 30.5}, {"input": [30.5, -40.5], "expected": 30.5}, {"input": [30.5, -40.0], "expected": 30.5}, {"input": [30.5, -39.5], "expected": 30.5}, {"input": [30.5, -39.0], "expected": 30.5}, {"input": [30.5, -38.5], "expected": 30.5}, {"input": [30.5, -38.0], "expected": 30.5}, {"input": [30.5, -37.5], "expected": 30.5}, {"input": [30.5, -37.0], "expected": 30.5}, {"input": [30.5, -36.5], "expected": 30.5}, {"input": [30.5, -36.0], "expected": 30.5}, {"input": [30.5, -35.5], "expected": 30.5}, {"input": [30.5, -35.0], "expected": 30.5}, {"input": [30.5, -34.5], "expected": 30.5}, {"input": [30.5, -34.0], "expected": 30.5}, {"input": [30.5, -33.5], "expected": 30.5}, {"input": [30.5, -33.0], "expected": 30.5}, {"input": [30.5, -32.5], "expected": 30.5}, {"input": [30.5, -32.0], "expected": 30.5}, {"input": [30.5, -31.5], "expected": 30.5}, {"input": [30.5, -31.0], "expected": 30.5}, {"input": [30.5, -30.5], "expected": 30.5}, {"input": [30.5, -30.0], "expected": 30.5}, {"input": [30.5, -29.5], "expected": 30.5}, {"input": [30.5, -29.0], "expected": 30.5}, {"input": [30.5, -28.5], "expected": 30.5}, {"input": [30.5, -28.0], "expected": 30.5}, {"input": [30.5, -27.5], "expected": 30.5}, {"input": [30.5, -27.0], "expected": 30.5}, {"input": [30.5, -26.5], "expected": 30.5}, {"input": [30.5, -26.0], "expected": 30.5}, {"input": [30.5, -25.5], "expected": 30.5}, {"input": [30.5, -25.0], "expected": 30.5}, {"input": [30.5, -24.5], "expected": 30.5}, {"input": [30.5, -24.0], "expected": 30.5}, {"input": [30.5, -23.5], "expected": 30.5}, {"input": [30.5, -23.0], "expected": 30.5}, {"input": [30.5, -22.5], "expected": 30.5}, {"input": [30.5, -22.0], "expected": 30.5}, {"input": [30.5, -21.5], "expected": 30.5}, {"input": [30.5, -21.0], "expected": 30.5}, {"input": [30.5, -20.5], "expected": 30.5}, {"input": [30.5, -20.0], "expected": 30.5}, {"input": [30.5, -19.5], "expected": 30.5}, {"input": [30.5, -19.0], "expected": 30.5}, {"input": [30.5, -18.5], "expected": 30.5}, {"input": [30.5, -18.0], "expected": 30.5}, {"input": [30.5, -17.5], "expected": 30.5}, {"input": [30.5, -17.0], "expected": 30.5}, {"input": [30.5, -16.5], "expected": 30.5}, {"input": [30.5, -16.0], "expected": 30.5}, {"input": [30.5, -15.5], "expected": 30.5}, {"input": [30.5, -15.0], "expected": 30.5}, {"input": [30.5, -14.5], "expected": 30.5}, {"input": [30.5, -14.0], "expected": 30.5}, {"input": [30.5, -13.5], "expected": 30.5}, {"input": [30.5, -13.0], "expected": 30.5}, {"input": [30.5, -12.5], "expected": 30.5}, {"input": [30.5, -12.0], "expected": 30.5}, {"input": [30.5, -11.5], "expected": 30.5}, {"input": [30.5, -11.0], "expected": 30.5}, {"input": [30.5, -10.5], "expected": 30.5}, {"input": [30.5, -10.0], "expected": 30.5}, {"input": [30.5, -9.5], "expected": 30.5}, {"input": [30.5, -9.0], "expected": 30.5}, {"input": [30.5, -8.5], "expected": 30.5}, {"input": [30.5, -8.0], "expected": 30.5}, {"input": [30.5, -7.5], "expected": 30.5}, {"input": [30.5, -7.0], "expected": 30.5}, {"input": [30.5, -6.5], "expected": 30.5}, {"input": [30.5, -6.0], "expected": 30.5}, {"input": [30.5, -5.5], "expected": 30.5}, {"input": [30.5, -5.0], "expected": 30.5}, {"input": [30.5, -4.5], "expected": 30.5}, {"input": [30.5, -4.0], "expected": 30.5}, {"input": [30.5, -3.5], "expected": 30.5}, {"input": [30.5, -3.0], "expected": 30.500000000000004}, {"input": [30.5, -2.5], "expected": 30.500000000000004}, {"input": [30.5, -2.0], "expected": 30.500000000000007}, {"input": [30.5, -1.5], "expected": 30.500000000000014}, {"input": [30.5, -1.0], "expected": 30.50000000000002}, {"input": [30.5, -0.5], "expected": 30.500000000000036}, {"input": [30.5, 0.0], "expected": 30.500000000000057}, {"input": [30.5, 0.5], "expected": 30.500000000000092}, {"input": [30.5, 1.0], "expected": 30.500000000000153}, {"input": [30.5, 1.5], "expected": 30.500000000000256}, {"input": [30.5, 2.0], "expected": 30.50000000000042}, {"input": [30.5, 2.5], "expected": 30.500000000000693}, {"input": [30.5, 3.0], "expected": 30.50000000000114}, {"input": [30.5, 3.5], "expected": 30.50000000000188}, {"input": [30.5, 4.0], "expected": 30.500000000003098}, {"input": [30.5, 4.5], "expected": 30.50000000000511}, {"input": [30.5, 5.0], "expected": 30.500000000008423}, {"input": [30.5, 5.5], "expected": 30.500000000013888}, {"input": [30.5, 6.0], "expected": 30.500000000022897}, {"input": [30.5, 6.5], "expected": 30.50000000003775}, {"input": [30.5, 7.0], "expected": 30.50000000006224}, {"input": [30.5, 7.5], "expected": 30.50000000010262}, {"input": [30.5, 8.0], "expected": 30.50000000016919}, {"input": [30.5, 8.5], "expected": 30.50000000027895}, {"input": [30.5, 9.0], "expected": 30.500000000459906}, {"input": [30.5, 9.5], "expected": 30.500000000758256}, {"input": [30.5, 10.0], "expected": 30.500000001250154}, {"input": [30.5, 10.5], "expected": 30.500000002061153}, {"input": [30.5, 11.0], "expected": 30.500000003398267}, {"input": [30.5, 11.5], "expected": 30.500000005602796}, {"input": [30.5, 12.0], "expected": 30.50000000923745}, {"input": [30.5, 12.5], "expected": 30.50000001522998}, {"input": [30.5, 13.0], "expected": 30.50000002510999}, {"input": [30.5, 13.5], "expected": 30.500000041399375}, {"input": [30.5, 14.0], "expected": 30.500000068256032}, {"input": [30.5, 14.5], "expected": 30.50000011253517}, {"input": [30.5, 15.0], "expected": 30.50000018553912}, {"input": [30.5, 15.5], "expected": 30.500000305902272}, {"input": [30.5, 16.0], "expected": 30.500000504347536}, {"input": [30.5, 16.5], "expected": 30.500000831528375}, {"input": [30.5, 17.0], "expected": 30.500001370958145}, {"input": [30.5, 17.5], "expected": 30.500002260326852}, {"input": [30.5, 18.0], "expected": 30.500003726646227}, {"input": [30.5, 18.5], "expected": 30.500006144193478}, {"input": [30.5, 19.0], "expected": 30.50001013004229}, {"input": [30.5, 19.5], "expected": 30.500016701561318}, {"input": [30.5, 20.0], "expected": 30.500027536070228}, {"input": [30.5, 20.5], "expected": 30.500045398899218}, {"input": [30.5, 21.0], "expected": 30.50007484902863}, {"input": [30.5, 21.5], "expected": 30.500123402189722}, {"input": [30.5, 22.0], "expected": 30.500203447672128}, {"input": [30.5, 22.5], "expected": 30.500335406372894}, {"input": [30.5, 23.0], "expected": 30.50055293147536}, {"input": [30.5, 23.5], "expected": 30.500911466453775}, {"input": [30.5, 24.0], "expected": 30.501502310159754}, {"input": [30.5, 24.5], "expected": 30.502475685137732}, {"input": [30.5, 25.0], "expected": 30.504078443270572}, {"input": [30.5, 25.5], "expected": 30.506715348489116}, {"input": [30.5, 26.0], "expected": 30.511047744848593}, {"input": [30.5, 26.5], "expected": 30.51814992791781}, {"input": [30.5, 27.0], "expected": 30.52975041827262}, {"input": [30.5, 27.5], "expected": 30.548587351573744}, {"input": [30.5, 28.0], "expected": 30.57888973429255}, {"input": [30.5, 28.5], "expected": 30.626928011042974}, {"input": [30.5, 29.0], "expected": 30.701413277982752}, {"input": [30.5, 29.5], "expected": 30.813261687518224}, {"input": [30.5, 30.0], "expected": 30.97407698418011}, {"input": [30.5, 30.5], "expected": 31.193147180559944}, {"input": [30.5, 31.0], "expected": 31.47407698418011}, {"input": [30.5, 31.5], "expected": 31.813261687518224}, {"input": [30.5, 32.0], "expected": 32.20141327798275}, {"input": [30.5, 32.5], "expected": 32.62692801104297}, {"input": [30.5, 33.0], "expected": 33.07888973429255}, {"input": [30.5, 33.5], "expected": 33.548587351573744}, {"input": [30.5, 34.0], "expected": 34.02975041827262}, {"input": [30.5, 34.5], "expected": 34.51814992791781}, {"input": [30.5, 35.0], "expected": 35.0110477448486}, {"input": [30.5, 35.5], "expected": 35.50671534848912}, {"input": [30.5, 36.0], "expected": 36.00407844327057}, {"input": [30.5, 36.5], "expected": 36.50247568513773}, {"input": [30.5, 37.0], "expected": 37.00150231015976}, {"input": [30.5, 37.5], "expected": 37.50091146645377}, {"input": [30.5, 38.0], "expected": 38.00055293147536}, {"input": [30.5, 38.5], "expected": 38.5003354063729}, {"input": [30.5, 39.0], "expected": 39.00020344767213}, {"input": [30.5, 39.5], "expected": 39.50012340218972}, {"input": [30.5, 40.0], "expected": 40.00007484902863}, {"input": [30.5, 40.5], "expected": 40.50004539889922}, {"input": [30.5, 41.0], "expected": 41.00002753607023}, {"input": [30.5, 41.5], "expected": 41.50001670156132}, {"input": [30.5, 42.0], "expected": 42.00001013004229}, {"input": [30.5, 42.5], "expected": 42.50000614419348}, {"input": [30.5, 43.0], "expected": 43.00000372664623}, {"input": [30.5, 43.5], "expected": 43.50000226032685}, {"input": [30.5, 44.0], "expected": 44.000001370958145}, {"input": [30.5, 44.5], "expected": 44.500000831528375}, {"input": [30.5, 45.0], "expected": 45.00000050434753}, {"input": [30.5, 45.5], "expected": 45.500000305902276}, {"input": [30.5, 46.0], "expected": 46.00000018553912}, {"input": [30.5, 46.5], "expected": 46.50000011253517}, {"input": [30.5, 47.0], "expected": 47.00000006825603}, {"input": [30.5, 47.5], "expected": 47.500000041399375}, {"input": [30.5, 48.0], "expected": 48.00000002510999}, {"input": [30.5, 48.5], "expected": 48.50000001522998}, {"input": [30.5, 49.0], "expected": 49.000000009237446}, {"input": [30.5, 49.5], "expected": 49.50000000560279}, {"input": [30.5, 50.0], "expected": 50.00000000339827}, {"input": [30.5, 50.5], "expected": 50.50000000206116}, {"input": [30.5, 51.0], "expected": 51.00000000125015}, {"input": [30.5, 51.5], "expected": 51.500000000758256}, {"input": [30.5, 52.0], "expected": 52.000000000459906}, {"input": [30.5, 52.5], "expected": 52.500000000278945}, {"input": [30.5, 53.0], "expected": 53.00000000016919}, {"input": [30.5, 53.5], "expected": 53.50000000010262}, {"input": [30.5, 54.0], "expected": 54.00000000006224}, {"input": [30.5, 54.5], "expected": 54.50000000003775}, {"input": [30.5, 55.0], "expected": 55.0000000000229}, {"input": [30.5, 55.5], "expected": 55.50000000001389}, {"input": [30.5, 56.0], "expected": 56.00000000000842}, {"input": [30.5, 56.5], "expected": 56.50000000000511}, {"input": [30.5, 57.0], "expected": 57.0000000000031}, {"input": [30.5, 57.5], "expected": 57.50000000000188}, {"input": [30.5, 58.0], "expected": 58.00000000000114}, {"input": [30.5, 58.5], "expected": 58.50000000000069}, {"input": [30.5, 59.0], "expected": 59.00000000000042}, {"input": [30.5, 59.5], "expected": 59.500000000000256}, {"input": [30.5, 60.0], "expected": 60.000000000000156}, {"input": [30.5, 60.5], "expected": 60.50000000000009}, {"input": [30.5, 61.0], "expected": 61.00000000000006}, {"input": [30.5, 61.5], "expected": 61.500000000000036}, {"input": [30.5, 62.0], "expected": 62.00000000000002}, {"input": [30.5, 62.5], "expected": 62.500000000000014}, {"input": [30.5, 63.0], "expected": 63.00000000000001}, {"input": [30.5, 63.5], "expected": 63.50000000000001}, {"input": [30.5, 64.0], "expected": 64.0}, {"input": [30.5, 64.5], "expected": 64.5}, {"input": [30.5, 65.0], "expected": 65.0}, {"input": [30.5, 65.5], "expected": 65.5}, {"input": [30.5, 66.0], "expected": 66.0}, {"input": [30.5, 66.5], "expected": 66.5}, {"input": [30.5, 67.0], "expected": 67.0}, {"input": [30.5, 67.5], "expected": 67.5}, {"input": [30.5, 68.0], "expected": 68.0}, {"input": [30.5, 68.5], "expected": 68.5}, {"input": [30.5, 69.0], "expected": 69.0}, {"input": [30.5, 69.5], "expected": 69.5}, {"input": [30.5, 70.0], "expected": 70.0}, {"input": [30.5, 70.5], "expected": 70.5}, {"input": [30.5, 71.0], "expected": 71.0}, {"input": [30.5, 71.5], "expected": 71.5}, {"input": [30.5, 72.0], "expected": 72.0}, {"input": [30.5, 72.5], "expected": 72.5}, {"input": [30.5, 73.0], "expected": 73.0}, {"input": [30.5, 73.5], "expected": 73.5}, {"input": [30.5, 74.0], "expected": 74.0}, {"input": [30.5, 74.5], "expected": 74.5}, {"input": [30.5, 75.0], "expected": 75.0}, {"input": [30.5, 75.5], "expected": 75.5}, {"input": [30.5, 76.0], "expected": 76.0}, {"input": [30.5, 76.5], "expected": 76.5}, {"input": [30.5, 77.0], "expected": 77.0}, {"input": [30.5, 77.5], "expected": 77.5}, {"input": [30.5, 78.0], "expected": 78.0}, {"input": [30.5, 78.5], "expected": 78.5}, {"input": [30.5, 79.0], "expected": 79.0}, {"input": [30.5, 79.5], "expected": 79.5}, {"input": [30.5, 80.0], "expected": 80.0}, {"input": [30.5, 80.5], "expected": 80.5}, {"input": [30.5, 81.0], "expected": 81.0}, {"input": [30.5, 81.5], "expected": 81.5}, {"input": [30.5, 82.0], "expected": 82.0}, {"input": [30.5, 82.5], "expected": 82.5}, {"input": [30.5, 83.0], "expected": 83.0}, {"input": [30.5, 83.5], "expected": 83.5}, {"input": [30.5, 84.0], "expected": 84.0}, {"input": [30.5, 84.5], "expected": 84.5}, {"input": [30.5, 85.0], "expected": 85.0}, {"input": [30.5, 85.5], "expected": 85.5}, {"input": [30.5, 86.0], "expected": 86.0}, {"input": [30.5, 86.5], "expected": 86.5}, {"input": [30.5, 87.0], "expected": 87.0}, {"input": [30.5, 87.5], "expected": 87.5}, {"input": [30.5, 88.0], "expected": 88.0}, {"input": [30.5, 88.5], "expected": 88.5}, {"input": [30.5, 89.0], "expected": 89.0}, {"input": [30.5, 89.5], "expected": 89.5}, {"input": [30.5, 90.0], "expected": 90.0}, {"input": [30.5, 90.5], "expected": 90.5}, {"input": [30.5, 91.0], "expected": 91.0}, {"input": [30.5, 91.5], "expected": 91.5}, {"input": [30.5, 92.0], "expected": 92.0}, {"input": [30.5, 92.5], "expected": 92.5}, {"input": [30.5, 93.0], "expected": 93.0}, {"input": [30.5, 93.5], "expected": 93.5}, {"input": [30.5, 94.0], "expected": 94.0}, {"input": [30.5, 94.5], "expected": 94.5}, {"input": [30.5, 95.0], "expected": 95.0}, {"input": [30.5, 95.5], "expected": 95.5}, {"input": [30.5, 96.0], "expected": 96.0}, {"input": [30.5, 96.5], "expected": 96.5}, {"input": [30.5, 97.0], "expected": 97.0}, {"input": [30.5, 97.5], "expected": 97.5}, {"input": [30.5, 98.0], "expected": 98.0}, {"input": [30.5, 98.5], "expected": 98.5}, {"input": [30.5, 99.0], "expected": 99.0}, {"input": [30.5, 99.5], "expected": 99.5}, {"input": [31.0, -100.0], "expected": 31.0}, {"input": [31.0, -99.5], "expected": 31.0}, {"input": [31.0, -99.0], "expected": 31.0}, {"input": [31.0, -98.5], "expected": 31.0}, {"input": [31.0, -98.0], "expected": 31.0}, {"input": [31.0, -97.5], "expected": 31.0}, {"input": [31.0, -97.0], "expected": 31.0}, {"input": [31.0, -96.5], "expected": 31.0}, {"input": [31.0, -96.0], "expected": 31.0}, {"input": [31.0, -95.5], "expected": 31.0}, {"input": [31.0, -95.0], "expected": 31.0}, {"input": [31.0, -94.5], "expected": 31.0}, {"input": [31.0, -94.0], "expected": 31.0}, {"input": [31.0, -93.5], "expected": 31.0}, {"input": [31.0, -93.0], "expected": 31.0}, {"input": [31.0, -92.5], "expected": 31.0}, {"input": [31.0, -92.0], "expected": 31.0}, {"input": [31.0, -91.5], "expected": 31.0}, {"input": [31.0, -91.0], "expected": 31.0}, {"input": [31.0, -90.5], "expected": 31.0}, {"input": [31.0, -90.0], "expected": 31.0}, {"input": [31.0, -89.5], "expected": 31.0}, {"input": [31.0, -89.0], "expected": 31.0}, {"input": [31.0, -88.5], "expected": 31.0}, {"input": [31.0, -88.0], "expected": 31.0}, {"input": [31.0, -87.5], "expected": 31.0}, {"input": [31.0, -87.0], "expected": 31.0}, {"input": [31.0, -86.5], "expected": 31.0}, {"input": [31.0, -86.0], "expected": 31.0}, {"input": [31.0, -85.5], "expected": 31.0}, {"input": [31.0, -85.0], "expected": 31.0}, {"input": [31.0, -84.5], "expected": 31.0}, {"input": [31.0, -84.0], "expected": 31.0}, {"input": [31.0, -83.5], "expected": 31.0}, {"input": [31.0, -83.0], "expected": 31.0}, {"input": [31.0, -82.5], "expected": 31.0}, {"input": [31.0, -82.0], "expected": 31.0}, {"input": [31.0, -81.5], "expected": 31.0}, {"input": [31.0, -81.0], "expected": 31.0}, {"input": [31.0, -80.5], "expected": 31.0}, {"input": [31.0, -80.0], "expected": 31.0}, {"input": [31.0, -79.5], "expected": 31.0}, {"input": [31.0, -79.0], "expected": 31.0}, {"input": [31.0, -78.5], "expected": 31.0}, {"input": [31.0, -78.0], "expected": 31.0}, {"input": [31.0, -77.5], "expected": 31.0}, {"input": [31.0, -77.0], "expected": 31.0}, {"input": [31.0, -76.5], "expected": 31.0}, {"input": [31.0, -76.0], "expected": 31.0}, {"input": [31.0, -75.5], "expected": 31.0}, {"input": [31.0, -75.0], "expected": 31.0}, {"input": [31.0, -74.5], "expected": 31.0}, {"input": [31.0, -74.0], "expected": 31.0}, {"input": [31.0, -73.5], "expected": 31.0}, {"input": [31.0, -73.0], "expected": 31.0}, {"input": [31.0, -72.5], "expected": 31.0}, {"input": [31.0, -72.0], "expected": 31.0}, {"input": [31.0, -71.5], "expected": 31.0}, {"input": [31.0, -71.0], "expected": 31.0}, {"input": [31.0, -70.5], "expected": 31.0}, {"input": [31.0, -70.0], "expected": 31.0}, {"input": [31.0, -69.5], "expected": 31.0}, {"input": [31.0, -69.0], "expected": 31.0}, {"input": [31.0, -68.5], "expected": 31.0}, {"input": [31.0, -68.0], "expected": 31.0}, {"input": [31.0, -67.5], "expected": 31.0}, {"input": [31.0, -67.0], "expected": 31.0}, {"input": [31.0, -66.5], "expected": 31.0}, {"input": [31.0, -66.0], "expected": 31.0}, {"input": [31.0, -65.5], "expected": 31.0}, {"input": [31.0, -65.0], "expected": 31.0}, {"input": [31.0, -64.5], "expected": 31.0}, {"input": [31.0, -64.0], "expected": 31.0}, {"input": [31.0, -63.5], "expected": 31.0}, {"input": [31.0, -63.0], "expected": 31.0}, {"input": [31.0, -62.5], "expected": 31.0}, {"input": [31.0, -62.0], "expected": 31.0}, {"input": [31.0, -61.5], "expected": 31.0}, {"input": [31.0, -61.0], "expected": 31.0}, {"input": [31.0, -60.5], "expected": 31.0}, {"input": [31.0, -60.0], "expected": 31.0}, {"input": [31.0, -59.5], "expected": 31.0}, {"input": [31.0, -59.0], "expected": 31.0}, {"input": [31.0, -58.5], "expected": 31.0}, {"input": [31.0, -58.0], "expected": 31.0}, {"input": [31.0, -57.5], "expected": 31.0}, {"input": [31.0, -57.0], "expected": 31.0}, {"input": [31.0, -56.5], "expected": 31.0}, {"input": [31.0, -56.0], "expected": 31.0}, {"input": [31.0, -55.5], "expected": 31.0}, {"input": [31.0, -55.0], "expected": 31.0}, {"input": [31.0, -54.5], "expected": 31.0}, {"input": [31.0, -54.0], "expected": 31.0}, {"input": [31.0, -53.5], "expected": 31.0}, {"input": [31.0, -53.0], "expected": 31.0}, {"input": [31.0, -52.5], "expected": 31.0}, {"input": [31.0, -52.0], "expected": 31.0}, {"input": [31.0, -51.5], "expected": 31.0}, {"input": [31.0, -51.0], "expected": 31.0}, {"input": [31.0, -50.5], "expected": 31.0}, {"input": [31.0, -50.0], "expected": 31.0}, {"input": [31.0, -49.5], "expected": 31.0}, {"input": [31.0, -49.0], "expected": 31.0}, {"input": [31.0, -48.5], "expected": 31.0}, {"input": [31.0, -48.0], "expected": 31.0}, {"input": [31.0, -47.5], "expected": 31.0}, {"input": [31.0, -47.0], "expected": 31.0}, {"input": [31.0, -46.5], "expected": 31.0}, {"input": [31.0, -46.0], "expected": 31.0}, {"input": [31.0, -45.5], "expected": 31.0}, {"input": [31.0, -45.0], "expected": 31.0}, {"input": [31.0, -44.5], "expected": 31.0}, {"input": [31.0, -44.0], "expected": 31.0}, {"input": [31.0, -43.5], "expected": 31.0}, {"input": [31.0, -43.0], "expected": 31.0}, {"input": [31.0, -42.5], "expected": 31.0}, {"input": [31.0, -42.0], "expected": 31.0}, {"input": [31.0, -41.5], "expected": 31.0}, {"input": [31.0, -41.0], "expected": 31.0}, {"input": [31.0, -40.5], "expected": 31.0}, {"input": [31.0, -40.0], "expected": 31.0}, {"input": [31.0, -39.5], "expected": 31.0}, {"input": [31.0, -39.0], "expected": 31.0}, {"input": [31.0, -38.5], "expected": 31.0}, {"input": [31.0, -38.0], "expected": 31.0}, {"input": [31.0, -37.5], "expected": 31.0}, {"input": [31.0, -37.0], "expected": 31.0}, {"input": [31.0, -36.5], "expected": 31.0}, {"input": [31.0, -36.0], "expected": 31.0}, {"input": [31.0, -35.5], "expected": 31.0}, {"input": [31.0, -35.0], "expected": 31.0}, {"input": [31.0, -34.5], "expected": 31.0}, {"input": [31.0, -34.0], "expected": 31.0}, {"input": [31.0, -33.5], "expected": 31.0}, {"input": [31.0, -33.0], "expected": 31.0}, {"input": [31.0, -32.5], "expected": 31.0}, {"input": [31.0, -32.0], "expected": 31.0}, {"input": [31.0, -31.5], "expected": 31.0}, {"input": [31.0, -31.0], "expected": 31.0}, {"input": [31.0, -30.5], "expected": 31.0}, {"input": [31.0, -30.0], "expected": 31.0}, {"input": [31.0, -29.5], "expected": 31.0}, {"input": [31.0, -29.0], "expected": 31.0}, {"input": [31.0, -28.5], "expected": 31.0}, {"input": [31.0, -28.0], "expected": 31.0}, {"input": [31.0, -27.5], "expected": 31.0}, {"input": [31.0, -27.0], "expected": 31.0}, {"input": [31.0, -26.5], "expected": 31.0}, {"input": [31.0, -26.0], "expected": 31.0}, {"input": [31.0, -25.5], "expected": 31.0}, {"input": [31.0, -25.0], "expected": 31.0}, {"input": [31.0, -24.5], "expected": 31.0}, {"input": [31.0, -24.0], "expected": 31.0}, {"input": [31.0, -23.5], "expected": 31.0}, {"input": [31.0, -23.0], "expected": 31.0}, {"input": [31.0, -22.5], "expected": 31.0}, {"input": [31.0, -22.0], "expected": 31.0}, {"input": [31.0, -21.5], "expected": 31.0}, {"input": [31.0, -21.0], "expected": 31.0}, {"input": [31.0, -20.5], "expected": 31.0}, {"input": [31.0, -20.0], "expected": 31.0}, {"input": [31.0, -19.5], "expected": 31.0}, {"input": [31.0, -19.0], "expected": 31.0}, {"input": [31.0, -18.5], "expected": 31.0}, {"input": [31.0, -18.0], "expected": 31.0}, {"input": [31.0, -17.5], "expected": 31.0}, {"input": [31.0, -17.0], "expected": 31.0}, {"input": [31.0, -16.5], "expected": 31.0}, {"input": [31.0, -16.0], "expected": 31.0}, {"input": [31.0, -15.5], "expected": 31.0}, {"input": [31.0, -15.0], "expected": 31.0}, {"input": [31.0, -14.5], "expected": 31.0}, {"input": [31.0, -14.0], "expected": 31.0}, {"input": [31.0, -13.5], "expected": 31.0}, {"input": [31.0, -13.0], "expected": 31.0}, {"input": [31.0, -12.5], "expected": 31.0}, {"input": [31.0, -12.0], "expected": 31.0}, {"input": [31.0, -11.5], "expected": 31.0}, {"input": [31.0, -11.0], "expected": 31.0}, {"input": [31.0, -10.5], "expected": 31.0}, {"input": [31.0, -10.0], "expected": 31.0}, {"input": [31.0, -9.5], "expected": 31.0}, {"input": [31.0, -9.0], "expected": 31.0}, {"input": [31.0, -8.5], "expected": 31.0}, {"input": [31.0, -8.0], "expected": 31.0}, {"input": [31.0, -7.5], "expected": 31.0}, {"input": [31.0, -7.0], "expected": 31.0}, {"input": [31.0, -6.5], "expected": 31.0}, {"input": [31.0, -6.0], "expected": 31.0}, {"input": [31.0, -5.5], "expected": 31.0}, {"input": [31.0, -5.0], "expected": 31.0}, {"input": [31.0, -4.5], "expected": 31.0}, {"input": [31.0, -4.0], "expected": 31.0}, {"input": [31.0, -3.5], "expected": 31.0}, {"input": [31.0, -3.0], "expected": 31.0}, {"input": [31.0, -2.5], "expected": 31.000000000000004}, {"input": [31.0, -2.0], "expected": 31.000000000000004}, {"input": [31.0, -1.5], "expected": 31.000000000000007}, {"input": [31.0, -1.0], "expected": 31.000000000000014}, {"input": [31.0, -0.5], "expected": 31.00000000000002}, {"input": [31.0, 0.0], "expected": 31.000000000000036}, {"input": [31.0, 0.5], "expected": 31.000000000000057}, {"input": [31.0, 1.0], "expected": 31.000000000000092}, {"input": [31.0, 1.5], "expected": 31.000000000000153}, {"input": [31.0, 2.0], "expected": 31.000000000000256}, {"input": [31.0, 2.5], "expected": 31.00000000000042}, {"input": [31.0, 3.0], "expected": 31.000000000000693}, {"input": [31.0, 3.5], "expected": 31.00000000000114}, {"input": [31.0, 4.0], "expected": 31.00000000000188}, {"input": [31.0, 4.5], "expected": 31.000000000003098}, {"input": [31.0, 5.0], "expected": 31.00000000000511}, {"input": [31.0, 5.5], "expected": 31.000000000008423}, {"input": [31.0, 6.0], "expected": 31.000000000013888}, {"input": [31.0, 6.5], "expected": 31.000000000022897}, {"input": [31.0, 7.0], "expected": 31.00000000003775}, {"input": [31.0, 7.5], "expected": 31.00000000006224}, {"input": [31.0, 8.0], "expected": 31.00000000010262}, {"input": [31.0, 8.5], "expected": 31.00000000016919}, {"input": [31.0, 9.0], "expected": 31.00000000027895}, {"input": [31.0, 9.5], "expected": 31.000000000459906}, {"input": [31.0, 10.0], "expected": 31.000000000758256}, {"input": [31.0, 10.5], "expected": 31.000000001250154}, {"input": [31.0, 11.0], "expected": 31.000000002061153}, {"input": [31.0, 11.5], "expected": 31.000000003398267}, {"input": [31.0, 12.0], "expected": 31.000000005602796}, {"input": [31.0, 12.5], "expected": 31.00000000923745}, {"input": [31.0, 13.0], "expected": 31.00000001522998}, {"input": [31.0, 13.5], "expected": 31.00000002510999}, {"input": [31.0, 14.0], "expected": 31.000000041399375}, {"input": [31.0, 14.5], "expected": 31.000000068256032}, {"input": [31.0, 15.0], "expected": 31.00000011253517}, {"input": [31.0, 15.5], "expected": 31.00000018553912}, {"input": [31.0, 16.0], "expected": 31.000000305902272}, {"input": [31.0, 16.5], "expected": 31.000000504347536}, {"input": [31.0, 17.0], "expected": 31.000000831528375}, {"input": [31.0, 17.5], "expected": 31.000001370958145}, {"input": [31.0, 18.0], "expected": 31.000002260326852}, {"input": [31.0, 18.5], "expected": 31.000003726646227}, {"input": [31.0, 19.0], "expected": 31.000006144193478}, {"input": [31.0, 19.5], "expected": 31.00001013004229}, {"input": [31.0, 20.0], "expected": 31.000016701561318}, {"input": [31.0, 20.5], "expected": 31.000027536070228}, {"input": [31.0, 21.0], "expected": 31.000045398899218}, {"input": [31.0, 21.5], "expected": 31.00007484902863}, {"input": [31.0, 22.0], "expected": 31.000123402189722}, {"input": [31.0, 22.5], "expected": 31.000203447672128}, {"input": [31.0, 23.0], "expected": 31.000335406372894}, {"input": [31.0, 23.5], "expected": 31.00055293147536}, {"input": [31.0, 24.0], "expected": 31.000911466453775}, {"input": [31.0, 24.5], "expected": 31.001502310159754}, {"input": [31.0, 25.0], "expected": 31.002475685137732}, {"input": [31.0, 25.5], "expected": 31.004078443270572}, {"input": [31.0, 26.0], "expected": 31.006715348489116}, {"input": [31.0, 26.5], "expected": 31.011047744848593}, {"input": [31.0, 27.0], "expected": 31.01814992791781}, {"input": [31.0, 27.5], "expected": 31.02975041827262}, {"input": [31.0, 28.0], "expected": 31.048587351573744}, {"input": [31.0, 28.5], "expected": 31.07888973429255}, {"input": [31.0, 29.0], "expected": 31.126928011042974}, {"input": [31.0, 29.5], "expected": 31.201413277982752}, {"input": [31.0, 30.0], "expected": 31.313261687518224}, {"input": [31.0, 30.5], "expected": 31.47407698418011}, {"input": [31.0, 31.0], "expected": 31.693147180559944}, {"input": [31.0, 31.5], "expected": 31.97407698418011}, {"input": [31.0, 32.0], "expected": 32.31326168751822}, {"input": [31.0, 32.5], "expected": 32.70141327798275}, {"input": [31.0, 33.0], "expected": 33.12692801104297}, {"input": [31.0, 33.5], "expected": 33.57888973429255}, {"input": [31.0, 34.0], "expected": 34.048587351573744}, {"input": [31.0, 34.5], "expected": 34.52975041827262}, {"input": [31.0, 35.0], "expected": 35.01814992791781}, {"input": [31.0, 35.5], "expected": 35.5110477448486}, {"input": [31.0, 36.0], "expected": 36.00671534848912}, {"input": [31.0, 36.5], "expected": 36.50407844327057}, {"input": [31.0, 37.0], "expected": 37.00247568513773}, {"input": [31.0, 37.5], "expected": 37.50150231015976}, {"input": [31.0, 38.0], "expected": 38.00091146645377}, {"input": [31.0, 38.5], "expected": 38.50055293147536}, {"input": [31.0, 39.0], "expected": 39.0003354063729}, {"input": [31.0, 39.5], "expected": 39.50020344767213}, {"input": [31.0, 40.0], "expected": 40.00012340218972}, {"input": [31.0, 40.5], "expected": 40.50007484902863}, {"input": [31.0, 41.0], "expected": 41.00004539889922}, {"input": [31.0, 41.5], "expected": 41.50002753607023}, {"input": [31.0, 42.0], "expected": 42.00001670156132}, {"input": [31.0, 42.5], "expected": 42.50001013004229}, {"input": [31.0, 43.0], "expected": 43.00000614419348}, {"input": [31.0, 43.5], "expected": 43.50000372664623}, {"input": [31.0, 44.0], "expected": 44.00000226032685}, {"input": [31.0, 44.5], "expected": 44.500001370958145}, {"input": [31.0, 45.0], "expected": 45.000000831528375}, {"input": [31.0, 45.5], "expected": 45.50000050434753}, {"input": [31.0, 46.0], "expected": 46.000000305902276}, {"input": [31.0, 46.5], "expected": 46.50000018553912}, {"input": [31.0, 47.0], "expected": 47.00000011253517}, {"input": [31.0, 47.5], "expected": 47.50000006825603}, {"input": [31.0, 48.0], "expected": 48.000000041399375}, {"input": [31.0, 48.5], "expected": 48.50000002510999}, {"input": [31.0, 49.0], "expected": 49.00000001522998}, {"input": [31.0, 49.5], "expected": 49.500000009237446}, {"input": [31.0, 50.0], "expected": 50.00000000560279}, {"input": [31.0, 50.5], "expected": 50.50000000339827}, {"input": [31.0, 51.0], "expected": 51.00000000206116}, {"input": [31.0, 51.5], "expected": 51.50000000125015}, {"input": [31.0, 52.0], "expected": 52.000000000758256}, {"input": [31.0, 52.5], "expected": 52.500000000459906}, {"input": [31.0, 53.0], "expected": 53.000000000278945}, {"input": [31.0, 53.5], "expected": 53.50000000016919}, {"input": [31.0, 54.0], "expected": 54.00000000010262}, {"input": [31.0, 54.5], "expected": 54.50000000006224}, {"input": [31.0, 55.0], "expected": 55.00000000003775}, {"input": [31.0, 55.5], "expected": 55.5000000000229}, {"input": [31.0, 56.0], "expected": 56.00000000001389}, {"input": [31.0, 56.5], "expected": 56.50000000000842}, {"input": [31.0, 57.0], "expected": 57.00000000000511}, {"input": [31.0, 57.5], "expected": 57.5000000000031}, {"input": [31.0, 58.0], "expected": 58.00000000000188}, {"input": [31.0, 58.5], "expected": 58.50000000000114}, {"input": [31.0, 59.0], "expected": 59.00000000000069}, {"input": [31.0, 59.5], "expected": 59.50000000000042}, {"input": [31.0, 60.0], "expected": 60.000000000000256}, {"input": [31.0, 60.5], "expected": 60.500000000000156}, {"input": [31.0, 61.0], "expected": 61.00000000000009}, {"input": [31.0, 61.5], "expected": 61.50000000000006}, {"input": [31.0, 62.0], "expected": 62.000000000000036}, {"input": [31.0, 62.5], "expected": 62.50000000000002}, {"input": [31.0, 63.0], "expected": 63.000000000000014}, {"input": [31.0, 63.5], "expected": 63.50000000000001}, {"input": [31.0, 64.0], "expected": 64.0}, {"input": [31.0, 64.5], "expected": 64.5}, {"input": [31.0, 65.0], "expected": 65.0}, {"input": [31.0, 65.5], "expected": 65.5}, {"input": [31.0, 66.0], "expected": 66.0}, {"input": [31.0, 66.5], "expected": 66.5}, {"input": [31.0, 67.0], "expected": 67.0}, {"input": [31.0, 67.5], "expected": 67.5}, {"input": [31.0, 68.0], "expected": 68.0}, {"input": [31.0, 68.5], "expected": 68.5}, {"input": [31.0, 69.0], "expected": 69.0}, {"input": [31.0, 69.5], "expected": 69.5}, {"input": [31.0, 70.0], "expected": 70.0}, {"input": [31.0, 70.5], "expected": 70.5}, {"input": [31.0, 71.0], "expected": 71.0}, {"input": [31.0, 71.5], "expected": 71.5}, {"input": [31.0, 72.0], "expected": 72.0}, {"input": [31.0, 72.5], "expected": 72.5}, {"input": [31.0, 73.0], "expected": 73.0}, {"input": [31.0, 73.5], "expected": 73.5}, {"input": [31.0, 74.0], "expected": 74.0}, {"input": [31.0, 74.5], "expected": 74.5}, {"input": [31.0, 75.0], "expected": 75.0}, {"input": [31.0, 75.5], "expected": 75.5}, {"input": [31.0, 76.0], "expected": 76.0}, {"input": [31.0, 76.5], "expected": 76.5}, {"input": [31.0, 77.0], "expected": 77.0}, {"input": [31.0, 77.5], "expected": 77.5}, {"input": [31.0, 78.0], "expected": 78.0}, {"input": [31.0, 78.5], "expected": 78.5}, {"input": [31.0, 79.0], "expected": 79.0}, {"input": [31.0, 79.5], "expected": 79.5}, {"input": [31.0, 80.0], "expected": 80.0}, {"input": [31.0, 80.5], "expected": 80.5}, {"input": [31.0, 81.0], "expected": 81.0}, {"input": [31.0, 81.5], "expected": 81.5}, {"input": [31.0, 82.0], "expected": 82.0}, {"input": [31.0, 82.5], "expected": 82.5}, {"input": [31.0, 83.0], "expected": 83.0}, {"input": [31.0, 83.5], "expected": 83.5}, {"input": [31.0, 84.0], "expected": 84.0}, {"input": [31.0, 84.5], "expected": 84.5}, {"input": [31.0, 85.0], "expected": 85.0}, {"input": [31.0, 85.5], "expected": 85.5}, {"input": [31.0, 86.0], "expected": 86.0}, {"input": [31.0, 86.5], "expected": 86.5}, {"input": [31.0, 87.0], "expected": 87.0}, {"input": [31.0, 87.5], "expected": 87.5}, {"input": [31.0, 88.0], "expected": 88.0}, {"input": [31.0, 88.5], "expected": 88.5}, {"input": [31.0, 89.0], "expected": 89.0}, {"input": [31.0, 89.5], "expected": 89.5}, {"input": [31.0, 90.0], "expected": 90.0}, {"input": [31.0, 90.5], "expected": 90.5}, {"input": [31.0, 91.0], "expected": 91.0}, {"input": [31.0, 91.5], "expected": 91.5}, {"input": [31.0, 92.0], "expected": 92.0}, {"input": [31.0, 92.5], "expected": 92.5}, {"input": [31.0, 93.0], "expected": 93.0}, {"input": [31.0, 93.5], "expected": 93.5}, {"input": [31.0, 94.0], "expected": 94.0}, {"input": [31.0, 94.5], "expected": 94.5}, {"input": [31.0, 95.0], "expected": 95.0}, {"input": [31.0, 95.5], "expected": 95.5}, {"input": [31.0, 96.0], "expected": 96.0}, {"input": [31.0, 96.5], "expected": 96.5}, {"input": [31.0, 97.0], "expected": 97.0}, {"input": [31.0, 97.5], "expected": 97.5}, {"input": [31.0, 98.0], "expected": 98.0}, {"input": [31.0, 98.5], "expected": 98.5}, {"input": [31.0, 99.0], "expected": 99.0}, {"input": [31.0, 99.5], "expected": 99.5}, {"input": [31.5, -100.0], "expected": 31.5}, {"input": [31.5, -99.5], "expected": 31.5}, {"input": [31.5, -99.0], "expected": 31.5}, {"input": [31.5, -98.5], "expected": 31.5}, {"input": [31.5, -98.0], "expected": 31.5}, {"input": [31.5, -97.5], "expected": 31.5}, {"input": [31.5, -97.0], "expected": 31.5}, {"input": [31.5, -96.5], "expected": 31.5}, {"input": [31.5, -96.0], "expected": 31.5}, {"input": [31.5, -95.5], "expected": 31.5}, {"input": [31.5, -95.0], "expected": 31.5}, {"input": [31.5, -94.5], "expected": 31.5}, {"input": [31.5, -94.0], "expected": 31.5}, {"input": [31.5, -93.5], "expected": 31.5}, {"input": [31.5, -93.0], "expected": 31.5}, {"input": [31.5, -92.5], "expected": 31.5}, {"input": [31.5, -92.0], "expected": 31.5}, {"input": [31.5, -91.5], "expected": 31.5}, {"input": [31.5, -91.0], "expected": 31.5}, {"input": [31.5, -90.5], "expected": 31.5}, {"input": [31.5, -90.0], "expected": 31.5}, {"input": [31.5, -89.5], "expected": 31.5}, {"input": [31.5, -89.0], "expected": 31.5}, {"input": [31.5, -88.5], "expected": 31.5}, {"input": [31.5, -88.0], "expected": 31.5}, {"input": [31.5, -87.5], "expected": 31.5}, {"input": [31.5, -87.0], "expected": 31.5}, {"input": [31.5, -86.5], "expected": 31.5}, {"input": [31.5, -86.0], "expected": 31.5}, {"input": [31.5, -85.5], "expected": 31.5}, {"input": [31.5, -85.0], "expected": 31.5}, {"input": [31.5, -84.5], "expected": 31.5}, {"input": [31.5, -84.0], "expected": 31.5}, {"input": [31.5, -83.5], "expected": 31.5}, {"input": [31.5, -83.0], "expected": 31.5}, {"input": [31.5, -82.5], "expected": 31.5}, {"input": [31.5, -82.0], "expected": 31.5}, {"input": [31.5, -81.5], "expected": 31.5}, {"input": [31.5, -81.0], "expected": 31.5}, {"input": [31.5, -80.5], "expected": 31.5}, {"input": [31.5, -80.0], "expected": 31.5}, {"input": [31.5, -79.5], "expected": 31.5}, {"input": [31.5, -79.0], "expected": 31.5}, {"input": [31.5, -78.5], "expected": 31.5}, {"input": [31.5, -78.0], "expected": 31.5}, {"input": [31.5, -77.5], "expected": 31.5}, {"input": [31.5, -77.0], "expected": 31.5}, {"input": [31.5, -76.5], "expected": 31.5}, {"input": [31.5, -76.0], "expected": 31.5}, {"input": [31.5, -75.5], "expected": 31.5}, {"input": [31.5, -75.0], "expected": 31.5}, {"input": [31.5, -74.5], "expected": 31.5}, {"input": [31.5, -74.0], "expected": 31.5}, {"input": [31.5, -73.5], "expected": 31.5}, {"input": [31.5, -73.0], "expected": 31.5}, {"input": [31.5, -72.5], "expected": 31.5}, {"input": [31.5, -72.0], "expected": 31.5}, {"input": [31.5, -71.5], "expected": 31.5}, {"input": [31.5, -71.0], "expected": 31.5}, {"input": [31.5, -70.5], "expected": 31.5}, {"input": [31.5, -70.0], "expected": 31.5}, {"input": [31.5, -69.5], "expected": 31.5}, {"input": [31.5, -69.0], "expected": 31.5}, {"input": [31.5, -68.5], "expected": 31.5}, {"input": [31.5, -68.0], "expected": 31.5}, {"input": [31.5, -67.5], "expected": 31.5}, {"input": [31.5, -67.0], "expected": 31.5}, {"input": [31.5, -66.5], "expected": 31.5}, {"input": [31.5, -66.0], "expected": 31.5}, {"input": [31.5, -65.5], "expected": 31.5}, {"input": [31.5, -65.0], "expected": 31.5}, {"input": [31.5, -64.5], "expected": 31.5}, {"input": [31.5, -64.0], "expected": 31.5}, {"input": [31.5, -63.5], "expected": 31.5}, {"input": [31.5, -63.0], "expected": 31.5}, {"input": [31.5, -62.5], "expected": 31.5}, {"input": [31.5, -62.0], "expected": 31.5}, {"input": [31.5, -61.5], "expected": 31.5}, {"input": [31.5, -61.0], "expected": 31.5}, {"input": [31.5, -60.5], "expected": 31.5}, {"input": [31.5, -60.0], "expected": 31.5}, {"input": [31.5, -59.5], "expected": 31.5}, {"input": [31.5, -59.0], "expected": 31.5}, {"input": [31.5, -58.5], "expected": 31.5}, {"input": [31.5, -58.0], "expected": 31.5}, {"input": [31.5, -57.5], "expected": 31.5}, {"input": [31.5, -57.0], "expected": 31.5}, {"input": [31.5, -56.5], "expected": 31.5}, {"input": [31.5, -56.0], "expected": 31.5}, {"input": [31.5, -55.5], "expected": 31.5}, {"input": [31.5, -55.0], "expected": 31.5}, {"input": [31.5, -54.5], "expected": 31.5}, {"input": [31.5, -54.0], "expected": 31.5}, {"input": [31.5, -53.5], "expected": 31.5}, {"input": [31.5, -53.0], "expected": 31.5}, {"input": [31.5, -52.5], "expected": 31.5}, {"input": [31.5, -52.0], "expected": 31.5}, {"input": [31.5, -51.5], "expected": 31.5}, {"input": [31.5, -51.0], "expected": 31.5}, {"input": [31.5, -50.5], "expected": 31.5}, {"input": [31.5, -50.0], "expected": 31.5}, {"input": [31.5, -49.5], "expected": 31.5}, {"input": [31.5, -49.0], "expected": 31.5}, {"input": [31.5, -48.5], "expected": 31.5}, {"input": [31.5, -48.0], "expected": 31.5}, {"input": [31.5, -47.5], "expected": 31.5}, {"input": [31.5, -47.0], "expected": 31.5}, {"input": [31.5, -46.5], "expected": 31.5}, {"input": [31.5, -46.0], "expected": 31.5}, {"input": [31.5, -45.5], "expected": 31.5}, {"input": [31.5, -45.0], "expected": 31.5}, {"input": [31.5, -44.5], "expected": 31.5}, {"input": [31.5, -44.0], "expected": 31.5}, {"input": [31.5, -43.5], "expected": 31.5}, {"input": [31.5, -43.0], "expected": 31.5}, {"input": [31.5, -42.5], "expected": 31.5}, {"input": [31.5, -42.0], "expected": 31.5}, {"input": [31.5, -41.5], "expected": 31.5}, {"input": [31.5, -41.0], "expected": 31.5}, {"input": [31.5, -40.5], "expected": 31.5}, {"input": [31.5, -40.0], "expected": 31.5}, {"input": [31.5, -39.5], "expected": 31.5}, {"input": [31.5, -39.0], "expected": 31.5}, {"input": [31.5, -38.5], "expected": 31.5}, {"input": [31.5, -38.0], "expected": 31.5}, {"input": [31.5, -37.5], "expected": 31.5}, {"input": [31.5, -37.0], "expected": 31.5}, {"input": [31.5, -36.5], "expected": 31.5}, {"input": [31.5, -36.0], "expected": 31.5}, {"input": [31.5, -35.5], "expected": 31.5}, {"input": [31.5, -35.0], "expected": 31.5}, {"input": [31.5, -34.5], "expected": 31.5}, {"input": [31.5, -34.0], "expected": 31.5}, {"input": [31.5, -33.5], "expected": 31.5}, {"input": [31.5, -33.0], "expected": 31.5}, {"input": [31.5, -32.5], "expected": 31.5}, {"input": [31.5, -32.0], "expected": 31.5}, {"input": [31.5, -31.5], "expected": 31.5}, {"input": [31.5, -31.0], "expected": 31.5}, {"input": [31.5, -30.5], "expected": 31.5}, {"input": [31.5, -30.0], "expected": 31.5}, {"input": [31.5, -29.5], "expected": 31.5}, {"input": [31.5, -29.0], "expected": 31.5}, {"input": [31.5, -28.5], "expected": 31.5}, {"input": [31.5, -28.0], "expected": 31.5}, {"input": [31.5, -27.5], "expected": 31.5}, {"input": [31.5, -27.0], "expected": 31.5}, {"input": [31.5, -26.5], "expected": 31.5}, {"input": [31.5, -26.0], "expected": 31.5}, {"input": [31.5, -25.5], "expected": 31.5}, {"input": [31.5, -25.0], "expected": 31.5}, {"input": [31.5, -24.5], "expected": 31.5}, {"input": [31.5, -24.0], "expected": 31.5}, {"input": [31.5, -23.5], "expected": 31.5}, {"input": [31.5, -23.0], "expected": 31.5}, {"input": [31.5, -22.5], "expected": 31.5}, {"input": [31.5, -22.0], "expected": 31.5}, {"input": [31.5, -21.5], "expected": 31.5}, {"input": [31.5, -21.0], "expected": 31.5}, {"input": [31.5, -20.5], "expected": 31.5}, {"input": [31.5, -20.0], "expected": 31.5}, {"input": [31.5, -19.5], "expected": 31.5}, {"input": [31.5, -19.0], "expected": 31.5}, {"input": [31.5, -18.5], "expected": 31.5}, {"input": [31.5, -18.0], "expected": 31.5}, {"input": [31.5, -17.5], "expected": 31.5}, {"input": [31.5, -17.0], "expected": 31.5}, {"input": [31.5, -16.5], "expected": 31.5}, {"input": [31.5, -16.0], "expected": 31.5}, {"input": [31.5, -15.5], "expected": 31.5}, {"input": [31.5, -15.0], "expected": 31.5}, {"input": [31.5, -14.5], "expected": 31.5}, {"input": [31.5, -14.0], "expected": 31.5}, {"input": [31.5, -13.5], "expected": 31.5}, {"input": [31.5, -13.0], "expected": 31.5}, {"input": [31.5, -12.5], "expected": 31.5}, {"input": [31.5, -12.0], "expected": 31.5}, {"input": [31.5, -11.5], "expected": 31.5}, {"input": [31.5, -11.0], "expected": 31.5}, {"input": [31.5, -10.5], "expected": 31.5}, {"input": [31.5, -10.0], "expected": 31.5}, {"input": [31.5, -9.5], "expected": 31.5}, {"input": [31.5, -9.0], "expected": 31.5}, {"input": [31.5, -8.5], "expected": 31.5}, {"input": [31.5, -8.0], "expected": 31.5}, {"input": [31.5, -7.5], "expected": 31.5}, {"input": [31.5, -7.0], "expected": 31.5}, {"input": [31.5, -6.5], "expected": 31.5}, {"input": [31.5, -6.0], "expected": 31.5}, {"input": [31.5, -5.5], "expected": 31.5}, {"input": [31.5, -5.0], "expected": 31.5}, {"input": [31.5, -4.5], "expected": 31.5}, {"input": [31.5, -4.0], "expected": 31.5}, {"input": [31.5, -3.5], "expected": 31.5}, {"input": [31.5, -3.0], "expected": 31.5}, {"input": [31.5, -2.5], "expected": 31.5}, {"input": [31.5, -2.0], "expected": 31.500000000000004}, {"input": [31.5, -1.5], "expected": 31.500000000000004}, {"input": [31.5, -1.0], "expected": 31.500000000000007}, {"input": [31.5, -0.5], "expected": 31.500000000000014}, {"input": [31.5, 0.0], "expected": 31.50000000000002}, {"input": [31.5, 0.5], "expected": 31.500000000000036}, {"input": [31.5, 1.0], "expected": 31.500000000000057}, {"input": [31.5, 1.5], "expected": 31.500000000000092}, {"input": [31.5, 2.0], "expected": 31.500000000000153}, {"input": [31.5, 2.5], "expected": 31.500000000000256}, {"input": [31.5, 3.0], "expected": 31.50000000000042}, {"input": [31.5, 3.5], "expected": 31.500000000000693}, {"input": [31.5, 4.0], "expected": 31.50000000000114}, {"input": [31.5, 4.5], "expected": 31.50000000000188}, {"input": [31.5, 5.0], "expected": 31.500000000003098}, {"input": [31.5, 5.5], "expected": 31.50000000000511}, {"input": [31.5, 6.0], "expected": 31.500000000008423}, {"input": [31.5, 6.5], "expected": 31.500000000013888}, {"input": [31.5, 7.0], "expected": 31.500000000022897}, {"input": [31.5, 7.5], "expected": 31.50000000003775}, {"input": [31.5, 8.0], "expected": 31.50000000006224}, {"input": [31.5, 8.5], "expected": 31.50000000010262}, {"input": [31.5, 9.0], "expected": 31.50000000016919}, {"input": [31.5, 9.5], "expected": 31.50000000027895}, {"input": [31.5, 10.0], "expected": 31.500000000459906}, {"input": [31.5, 10.5], "expected": 31.500000000758256}, {"input": [31.5, 11.0], "expected": 31.500000001250154}, {"input": [31.5, 11.5], "expected": 31.500000002061153}, {"input": [31.5, 12.0], "expected": 31.500000003398267}, {"input": [31.5, 12.5], "expected": 31.500000005602796}, {"input": [31.5, 13.0], "expected": 31.50000000923745}, {"input": [31.5, 13.5], "expected": 31.50000001522998}, {"input": [31.5, 14.0], "expected": 31.50000002510999}, {"input": [31.5, 14.5], "expected": 31.500000041399375}, {"input": [31.5, 15.0], "expected": 31.500000068256032}, {"input": [31.5, 15.5], "expected": 31.50000011253517}, {"input": [31.5, 16.0], "expected": 31.50000018553912}, {"input": [31.5, 16.5], "expected": 31.500000305902272}, {"input": [31.5, 17.0], "expected": 31.500000504347536}, {"input": [31.5, 17.5], "expected": 31.500000831528375}, {"input": [31.5, 18.0], "expected": 31.500001370958145}, {"input": [31.5, 18.5], "expected": 31.500002260326852}, {"input": [31.5, 19.0], "expected": 31.500003726646227}, {"input": [31.5, 19.5], "expected": 31.500006144193478}, {"input": [31.5, 20.0], "expected": 31.50001013004229}, {"input": [31.5, 20.5], "expected": 31.500016701561318}, {"input": [31.5, 21.0], "expected": 31.500027536070228}, {"input": [31.5, 21.5], "expected": 31.500045398899218}, {"input": [31.5, 22.0], "expected": 31.50007484902863}, {"input": [31.5, 22.5], "expected": 31.500123402189722}, {"input": [31.5, 23.0], "expected": 31.500203447672128}, {"input": [31.5, 23.5], "expected": 31.500335406372894}, {"input": [31.5, 24.0], "expected": 31.50055293147536}, {"input": [31.5, 24.5], "expected": 31.500911466453775}, {"input": [31.5, 25.0], "expected": 31.501502310159754}, {"input": [31.5, 25.5], "expected": 31.502475685137732}, {"input": [31.5, 26.0], "expected": 31.504078443270572}, {"input": [31.5, 26.5], "expected": 31.506715348489116}, {"input": [31.5, 27.0], "expected": 31.511047744848593}, {"input": [31.5, 27.5], "expected": 31.51814992791781}, {"input": [31.5, 28.0], "expected": 31.52975041827262}, {"input": [31.5, 28.5], "expected": 31.548587351573744}, {"input": [31.5, 29.0], "expected": 31.57888973429255}, {"input": [31.5, 29.5], "expected": 31.626928011042974}, {"input": [31.5, 30.0], "expected": 31.701413277982752}, {"input": [31.5, 30.5], "expected": 31.813261687518224}, {"input": [31.5, 31.0], "expected": 31.97407698418011}, {"input": [31.5, 31.5], "expected": 32.19314718055995}, {"input": [31.5, 32.0], "expected": 32.47407698418011}, {"input": [31.5, 32.5], "expected": 32.81326168751822}, {"input": [31.5, 33.0], "expected": 33.20141327798275}, {"input": [31.5, 33.5], "expected": 33.62692801104297}, {"input": [31.5, 34.0], "expected": 34.07888973429255}, {"input": [31.5, 34.5], "expected": 34.548587351573744}, {"input": [31.5, 35.0], "expected": 35.02975041827262}, {"input": [31.5, 35.5], "expected": 35.51814992791781}, {"input": [31.5, 36.0], "expected": 36.0110477448486}, {"input": [31.5, 36.5], "expected": 36.50671534848912}, {"input": [31.5, 37.0], "expected": 37.00407844327057}, {"input": [31.5, 37.5], "expected": 37.50247568513773}, {"input": [31.5, 38.0], "expected": 38.00150231015976}, {"input": [31.5, 38.5], "expected": 38.50091146645377}, {"input": [31.5, 39.0], "expected": 39.00055293147536}, {"input": [31.5, 39.5], "expected": 39.5003354063729}, {"input": [31.5, 40.0], "expected": 40.00020344767213}, {"input": [31.5, 40.5], "expected": 40.50012340218972}, {"input": [31.5, 41.0], "expected": 41.00007484902863}, {"input": [31.5, 41.5], "expected": 41.50004539889922}, {"input": [31.5, 42.0], "expected": 42.00002753607023}, {"input": [31.5, 42.5], "expected": 42.50001670156132}, {"input": [31.5, 43.0], "expected": 43.00001013004229}, {"input": [31.5, 43.5], "expected": 43.50000614419348}, {"input": [31.5, 44.0], "expected": 44.00000372664623}, {"input": [31.5, 44.5], "expected": 44.50000226032685}, {"input": [31.5, 45.0], "expected": 45.000001370958145}, {"input": [31.5, 45.5], "expected": 45.500000831528375}, {"input": [31.5, 46.0], "expected": 46.00000050434753}, {"input": [31.5, 46.5], "expected": 46.500000305902276}, {"input": [31.5, 47.0], "expected": 47.00000018553912}, {"input": [31.5, 47.5], "expected": 47.50000011253517}, {"input": [31.5, 48.0], "expected": 48.00000006825603}, {"input": [31.5, 48.5], "expected": 48.500000041399375}, {"input": [31.5, 49.0], "expected": 49.00000002510999}, {"input": [31.5, 49.5], "expected": 49.50000001522998}, {"input": [31.5, 50.0], "expected": 50.000000009237446}, {"input": [31.5, 50.5], "expected": 50.50000000560279}, {"input": [31.5, 51.0], "expected": 51.00000000339827}, {"input": [31.5, 51.5], "expected": 51.50000000206116}, {"input": [31.5, 52.0], "expected": 52.00000000125015}, {"input": [31.5, 52.5], "expected": 52.500000000758256}, {"input": [31.5, 53.0], "expected": 53.000000000459906}, {"input": [31.5, 53.5], "expected": 53.500000000278945}, {"input": [31.5, 54.0], "expected": 54.00000000016919}, {"input": [31.5, 54.5], "expected": 54.50000000010262}, {"input": [31.5, 55.0], "expected": 55.00000000006224}, {"input": [31.5, 55.5], "expected": 55.50000000003775}, {"input": [31.5, 56.0], "expected": 56.0000000000229}, {"input": [31.5, 56.5], "expected": 56.50000000001389}, {"input": [31.5, 57.0], "expected": 57.00000000000842}, {"input": [31.5, 57.5], "expected": 57.50000000000511}, {"input": [31.5, 58.0], "expected": 58.0000000000031}, {"input": [31.5, 58.5], "expected": 58.50000000000188}, {"input": [31.5, 59.0], "expected": 59.00000000000114}, {"input": [31.5, 59.5], "expected": 59.50000000000069}, {"input": [31.5, 60.0], "expected": 60.00000000000042}, {"input": [31.5, 60.5], "expected": 60.500000000000256}, {"input": [31.5, 61.0], "expected": 61.000000000000156}, {"input": [31.5, 61.5], "expected": 61.50000000000009}, {"input": [31.5, 62.0], "expected": 62.00000000000006}, {"input": [31.5, 62.5], "expected": 62.500000000000036}, {"input": [31.5, 63.0], "expected": 63.00000000000002}, {"input": [31.5, 63.5], "expected": 63.500000000000014}, {"input": [31.5, 64.0], "expected": 64.00000000000001}, {"input": [31.5, 64.5], "expected": 64.5}, {"input": [31.5, 65.0], "expected": 65.0}, {"input": [31.5, 65.5], "expected": 65.5}, {"input": [31.5, 66.0], "expected": 66.0}, {"input": [31.5, 66.5], "expected": 66.5}, {"input": [31.5, 67.0], "expected": 67.0}, {"input": [31.5, 67.5], "expected": 67.5}, {"input": [31.5, 68.0], "expected": 68.0}, {"input": [31.5, 68.5], "expected": 68.5}, {"input": [31.5, 69.0], "expected": 69.0}, {"input": [31.5, 69.5], "expected": 69.5}, {"input": [31.5, 70.0], "expected": 70.0}, {"input": [31.5, 70.5], "expected": 70.5}, {"input": [31.5, 71.0], "expected": 71.0}, {"input": [31.5, 71.5], "expected": 71.5}, {"input": [31.5, 72.0], "expected": 72.0}, {"input": [31.5, 72.5], "expected": 72.5}, {"input": [31.5, 73.0], "expected": 73.0}, {"input": [31.5, 73.5], "expected": 73.5}, {"input": [31.5, 74.0], "expected": 74.0}, {"input": [31.5, 74.5], "expected": 74.5}, {"input": [31.5, 75.0], "expected": 75.0}, {"input": [31.5, 75.5], "expected": 75.5}, {"input": [31.5, 76.0], "expected": 76.0}, {"input": [31.5, 76.5], "expected": 76.5}, {"input": [31.5, 77.0], "expected": 77.0}, {"input": [31.5, 77.5], "expected": 77.5}, {"input": [31.5, 78.0], "expected": 78.0}, {"input": [31.5, 78.5], "expected": 78.5}, {"input": [31.5, 79.0], "expected": 79.0}, {"input": [31.5, 79.5], "expected": 79.5}, {"input": [31.5, 80.0], "expected": 80.0}, {"input": [31.5, 80.5], "expected": 80.5}, {"input": [31.5, 81.0], "expected": 81.0}, {"input": [31.5, 81.5], "expected": 81.5}, {"input": [31.5, 82.0], "expected": 82.0}, {"input": [31.5, 82.5], "expected": 82.5}, {"input": [31.5, 83.0], "expected": 83.0}, {"input": [31.5, 83.5], "expected": 83.5}, {"input": [31.5, 84.0], "expected": 84.0}, {"input": [31.5, 84.5], "expected": 84.5}, {"input": [31.5, 85.0], "expected": 85.0}, {"input": [31.5, 85.5], "expected": 85.5}, {"input": [31.5, 86.0], "expected": 86.0}, {"input": [31.5, 86.5], "expected": 86.5}, {"input": [31.5, 87.0], "expected": 87.0}, {"input": [31.5, 87.5], "expected": 87.5}, {"input": [31.5, 88.0], "expected": 88.0}, {"input": [31.5, 88.5], "expected": 88.5}, {"input": [31.5, 89.0], "expected": 89.0}, {"input": [31.5, 89.5], "expected": 89.5}, {"input": [31.5, 90.0], "expected": 90.0}, {"input": [31.5, 90.5], "expected": 90.5}, {"input": [31.5, 91.0], "expected": 91.0}, {"input": [31.5, 91.5], "expected": 91.5}, {"input": [31.5, 92.0], "expected": 92.0}, {"input": [31.5, 92.5], "expected": 92.5}, {"input": [31.5, 93.0], "expected": 93.0}, {"input": [31.5, 93.5], "expected": 93.5}, {"input": [31.5, 94.0], "expected": 94.0}, {"input": [31.5, 94.5], "expected": 94.5}, {"input": [31.5, 95.0], "expected": 95.0}, {"input": [31.5, 95.5], "expected": 95.5}, {"input": [31.5, 96.0], "expected": 96.0}, {"input": [31.5, 96.5], "expected": 96.5}, {"input": [31.5, 97.0], "expected": 97.0}, {"input": [31.5, 97.5], "expected": 97.5}, {"input": [31.5, 98.0], "expected": 98.0}, {"input": [31.5, 98.5], "expected": 98.5}, {"input": [31.5, 99.0], "expected": 99.0}, {"input": [31.5, 99.5], "expected": 99.5}, {"input": [32.0, -100.0], "expected": 32.0}, {"input": [32.0, -99.5], "expected": 32.0}, {"input": [32.0, -99.0], "expected": 32.0}, {"input": [32.0, -98.5], "expected": 32.0}, {"input": [32.0, -98.0], "expected": 32.0}, {"input": [32.0, -97.5], "expected": 32.0}, {"input": [32.0, -97.0], "expected": 32.0}, {"input": [32.0, -96.5], "expected": 32.0}, {"input": [32.0, -96.0], "expected": 32.0}, {"input": [32.0, -95.5], "expected": 32.0}, {"input": [32.0, -95.0], "expected": 32.0}, {"input": [32.0, -94.5], "expected": 32.0}, {"input": [32.0, -94.0], "expected": 32.0}, {"input": [32.0, -93.5], "expected": 32.0}, {"input": [32.0, -93.0], "expected": 32.0}, {"input": [32.0, -92.5], "expected": 32.0}, {"input": [32.0, -92.0], "expected": 32.0}, {"input": [32.0, -91.5], "expected": 32.0}, {"input": [32.0, -91.0], "expected": 32.0}, {"input": [32.0, -90.5], "expected": 32.0}, {"input": [32.0, -90.0], "expected": 32.0}, {"input": [32.0, -89.5], "expected": 32.0}, {"input": [32.0, -89.0], "expected": 32.0}, {"input": [32.0, -88.5], "expected": 32.0}, {"input": [32.0, -88.0], "expected": 32.0}, {"input": [32.0, -87.5], "expected": 32.0}, {"input": [32.0, -87.0], "expected": 32.0}, {"input": [32.0, -86.5], "expected": 32.0}, {"input": [32.0, -86.0], "expected": 32.0}, {"input": [32.0, -85.5], "expected": 32.0}, {"input": [32.0, -85.0], "expected": 32.0}, {"input": [32.0, -84.5], "expected": 32.0}, {"input": [32.0, -84.0], "expected": 32.0}, {"input": [32.0, -83.5], "expected": 32.0}, {"input": [32.0, -83.0], "expected": 32.0}, {"input": [32.0, -82.5], "expected": 32.0}, {"input": [32.0, -82.0], "expected": 32.0}, {"input": [32.0, -81.5], "expected": 32.0}, {"input": [32.0, -81.0], "expected": 32.0}, {"input": [32.0, -80.5], "expected": 32.0}, {"input": [32.0, -80.0], "expected": 32.0}, {"input": [32.0, -79.5], "expected": 32.0}, {"input": [32.0, -79.0], "expected": 32.0}, {"input": [32.0, -78.5], "expected": 32.0}, {"input": [32.0, -78.0], "expected": 32.0}, {"input": [32.0, -77.5], "expected": 32.0}, {"input": [32.0, -77.0], "expected": 32.0}, {"input": [32.0, -76.5], "expected": 32.0}, {"input": [32.0, -76.0], "expected": 32.0}, {"input": [32.0, -75.5], "expected": 32.0}, {"input": [32.0, -75.0], "expected": 32.0}, {"input": [32.0, -74.5], "expected": 32.0}, {"input": [32.0, -74.0], "expected": 32.0}, {"input": [32.0, -73.5], "expected": 32.0}, {"input": [32.0, -73.0], "expected": 32.0}, {"input": [32.0, -72.5], "expected": 32.0}, {"input": [32.0, -72.0], "expected": 32.0}, {"input": [32.0, -71.5], "expected": 32.0}, {"input": [32.0, -71.0], "expected": 32.0}, {"input": [32.0, -70.5], "expected": 32.0}, {"input": [32.0, -70.0], "expected": 32.0}, {"input": [32.0, -69.5], "expected": 32.0}, {"input": [32.0, -69.0], "expected": 32.0}, {"input": [32.0, -68.5], "expected": 32.0}, {"input": [32.0, -68.0], "expected": 32.0}, {"input": [32.0, -67.5], "expected": 32.0}, {"input": [32.0, -67.0], "expected": 32.0}, {"input": [32.0, -66.5], "expected": 32.0}, {"input": [32.0, -66.0], "expected": 32.0}, {"input": [32.0, -65.5], "expected": 32.0}, {"input": [32.0, -65.0], "expected": 32.0}, {"input": [32.0, -64.5], "expected": 32.0}, {"input": [32.0, -64.0], "expected": 32.0}, {"input": [32.0, -63.5], "expected": 32.0}, {"input": [32.0, -63.0], "expected": 32.0}, {"input": [32.0, -62.5], "expected": 32.0}, {"input": [32.0, -62.0], "expected": 32.0}, {"input": [32.0, -61.5], "expected": 32.0}, {"input": [32.0, -61.0], "expected": 32.0}, {"input": [32.0, -60.5], "expected": 32.0}, {"input": [32.0, -60.0], "expected": 32.0}, {"input": [32.0, -59.5], "expected": 32.0}, {"input": [32.0, -59.0], "expected": 32.0}, {"input": [32.0, -58.5], "expected": 32.0}, {"input": [32.0, -58.0], "expected": 32.0}, {"input": [32.0, -57.5], "expected": 32.0}, {"input": [32.0, -57.0], "expected": 32.0}, {"input": [32.0, -56.5], "expected": 32.0}, {"input": [32.0, -56.0], "expected": 32.0}, {"input": [32.0, -55.5], "expected": 32.0}, {"input": [32.0, -55.0], "expected": 32.0}, {"input": [32.0, -54.5], "expected": 32.0}, {"input": [32.0, -54.0], "expected": 32.0}, {"input": [32.0, -53.5], "expected": 32.0}, {"input": [32.0, -53.0], "expected": 32.0}, {"input": [32.0, -52.5], "expected": 32.0}, {"input": [32.0, -52.0], "expected": 32.0}, {"input": [32.0, -51.5], "expected": 32.0}, {"input": [32.0, -51.0], "expected": 32.0}, {"input": [32.0, -50.5], "expected": 32.0}, {"input": [32.0, -50.0], "expected": 32.0}, {"input": [32.0, -49.5], "expected": 32.0}, {"input": [32.0, -49.0], "expected": 32.0}, {"input": [32.0, -48.5], "expected": 32.0}, {"input": [32.0, -48.0], "expected": 32.0}, {"input": [32.0, -47.5], "expected": 32.0}, {"input": [32.0, -47.0], "expected": 32.0}, {"input": [32.0, -46.5], "expected": 32.0}, {"input": [32.0, -46.0], "expected": 32.0}, {"input": [32.0, -45.5], "expected": 32.0}, {"input": [32.0, -45.0], "expected": 32.0}, {"input": [32.0, -44.5], "expected": 32.0}, {"input": [32.0, -44.0], "expected": 32.0}, {"input": [32.0, -43.5], "expected": 32.0}, {"input": [32.0, -43.0], "expected": 32.0}, {"input": [32.0, -42.5], "expected": 32.0}, {"input": [32.0, -42.0], "expected": 32.0}, {"input": [32.0, -41.5], "expected": 32.0}, {"input": [32.0, -41.0], "expected": 32.0}, {"input": [32.0, -40.5], "expected": 32.0}, {"input": [32.0, -40.0], "expected": 32.0}, {"input": [32.0, -39.5], "expected": 32.0}, {"input": [32.0, -39.0], "expected": 32.0}, {"input": [32.0, -38.5], "expected": 32.0}, {"input": [32.0, -38.0], "expected": 32.0}, {"input": [32.0, -37.5], "expected": 32.0}, {"input": [32.0, -37.0], "expected": 32.0}, {"input": [32.0, -36.5], "expected": 32.0}, {"input": [32.0, -36.0], "expected": 32.0}, {"input": [32.0, -35.5], "expected": 32.0}, {"input": [32.0, -35.0], "expected": 32.0}, {"input": [32.0, -34.5], "expected": 32.0}, {"input": [32.0, -34.0], "expected": 32.0}, {"input": [32.0, -33.5], "expected": 32.0}, {"input": [32.0, -33.0], "expected": 32.0}, {"input": [32.0, -32.5], "expected": 32.0}, {"input": [32.0, -32.0], "expected": 32.0}, {"input": [32.0, -31.5], "expected": 32.0}, {"input": [32.0, -31.0], "expected": 32.0}, {"input": [32.0, -30.5], "expected": 32.0}, {"input": [32.0, -30.0], "expected": 32.0}, {"input": [32.0, -29.5], "expected": 32.0}, {"input": [32.0, -29.0], "expected": 32.0}, {"input": [32.0, -28.5], "expected": 32.0}, {"input": [32.0, -28.0], "expected": 32.0}, {"input": [32.0, -27.5], "expected": 32.0}, {"input": [32.0, -27.0], "expected": 32.0}, {"input": [32.0, -26.5], "expected": 32.0}, {"input": [32.0, -26.0], "expected": 32.0}, {"input": [32.0, -25.5], "expected": 32.0}, {"input": [32.0, -25.0], "expected": 32.0}, {"input": [32.0, -24.5], "expected": 32.0}, {"input": [32.0, -24.0], "expected": 32.0}, {"input": [32.0, -23.5], "expected": 32.0}, {"input": [32.0, -23.0], "expected": 32.0}, {"input": [32.0, -22.5], "expected": 32.0}, {"input": [32.0, -22.0], "expected": 32.0}, {"input": [32.0, -21.5], "expected": 32.0}, {"input": [32.0, -21.0], "expected": 32.0}, {"input": [32.0, -20.5], "expected": 32.0}, {"input": [32.0, -20.0], "expected": 32.0}, {"input": [32.0, -19.5], "expected": 32.0}, {"input": [32.0, -19.0], "expected": 32.0}, {"input": [32.0, -18.5], "expected": 32.0}, {"input": [32.0, -18.0], "expected": 32.0}, {"input": [32.0, -17.5], "expected": 32.0}, {"input": [32.0, -17.0], "expected": 32.0}, {"input": [32.0, -16.5], "expected": 32.0}, {"input": [32.0, -16.0], "expected": 32.0}, {"input": [32.0, -15.5], "expected": 32.0}, {"input": [32.0, -15.0], "expected": 32.0}, {"input": [32.0, -14.5], "expected": 32.0}, {"input": [32.0, -14.0], "expected": 32.0}, {"input": [32.0, -13.5], "expected": 32.0}, {"input": [32.0, -13.0], "expected": 32.0}, {"input": [32.0, -12.5], "expected": 32.0}, {"input": [32.0, -12.0], "expected": 32.0}, {"input": [32.0, -11.5], "expected": 32.0}, {"input": [32.0, -11.0], "expected": 32.0}, {"input": [32.0, -10.5], "expected": 32.0}, {"input": [32.0, -10.0], "expected": 32.0}, {"input": [32.0, -9.5], "expected": 32.0}, {"input": [32.0, -9.0], "expected": 32.0}, {"input": [32.0, -8.5], "expected": 32.0}, {"input": [32.0, -8.0], "expected": 32.0}, {"input": [32.0, -7.5], "expected": 32.0}, {"input": [32.0, -7.0], "expected": 32.0}, {"input": [32.0, -6.5], "expected": 32.0}, {"input": [32.0, -6.0], "expected": 32.0}, {"input": [32.0, -5.5], "expected": 32.0}, {"input": [32.0, -5.0], "expected": 32.0}, {"input": [32.0, -4.5], "expected": 32.0}, {"input": [32.0, -4.0], "expected": 32.0}, {"input": [32.0, -3.5], "expected": 32.0}, {"input": [32.0, -3.0], "expected": 32.0}, {"input": [32.0, -2.5], "expected": 32.0}, {"input": [32.0, -2.0], "expected": 32.0}, {"input": [32.0, -1.5], "expected": 32.0}, {"input": [32.0, -1.0], "expected": 32.00000000000001}, {"input": [32.0, -0.5], "expected": 32.00000000000001}, {"input": [32.0, 0.0], "expected": 32.000000000000014}, {"input": [32.0, 0.5], "expected": 32.00000000000002}, {"input": [32.0, 1.0], "expected": 32.000000000000036}, {"input": [32.0, 1.5], "expected": 32.00000000000006}, {"input": [32.0, 2.0], "expected": 32.00000000000009}, {"input": [32.0, 2.5], "expected": 32.000000000000156}, {"input": [32.0, 3.0], "expected": 32.000000000000256}, {"input": [32.0, 3.5], "expected": 32.00000000000042}, {"input": [32.0, 4.0], "expected": 32.00000000000069}, {"input": [32.0, 4.5], "expected": 32.00000000000114}, {"input": [32.0, 5.0], "expected": 32.00000000000188}, {"input": [32.0, 5.5], "expected": 32.0000000000031}, {"input": [32.0, 6.0], "expected": 32.00000000000511}, {"input": [32.0, 6.5], "expected": 32.00000000000842}, {"input": [32.0, 7.0], "expected": 32.00000000001389}, {"input": [32.0, 7.5], "expected": 32.0000000000229}, {"input": [32.0, 8.0], "expected": 32.00000000003775}, {"input": [32.0, 8.5], "expected": 32.00000000006224}, {"input": [32.0, 9.0], "expected": 32.00000000010262}, {"input": [32.0, 9.5], "expected": 32.00000000016919}, {"input": [32.0, 10.0], "expected": 32.000000000278945}, {"input": [32.0, 10.5], "expected": 32.000000000459906}, {"input": [32.0, 11.0], "expected": 32.000000000758256}, {"input": [32.0, 11.5], "expected": 32.00000000125015}, {"input": [32.0, 12.0], "expected": 32.00000000206116}, {"input": [32.0, 12.5], "expected": 32.00000000339827}, {"input": [32.0, 13.0], "expected": 32.00000000560279}, {"input": [32.0, 13.5], "expected": 32.000000009237446}, {"input": [32.0, 14.0], "expected": 32.00000001522998}, {"input": [32.0, 14.5], "expected": 32.00000002510999}, {"input": [32.0, 15.0], "expected": 32.000000041399375}, {"input": [32.0, 15.5], "expected": 32.00000006825603}, {"input": [32.0, 16.0], "expected": 32.00000011253517}, {"input": [32.0, 16.5], "expected": 32.00000018553912}, {"input": [32.0, 17.0], "expected": 32.000000305902276}, {"input": [32.0, 17.5], "expected": 32.00000050434753}, {"input": [32.0, 18.0], "expected": 32.000000831528375}, {"input": [32.0, 18.5], "expected": 32.000001370958145}, {"input": [32.0, 19.0], "expected": 32.00000226032685}, {"input": [32.0, 19.5], "expected": 32.00000372664623}, {"input": [32.0, 20.0], "expected": 32.00000614419348}, {"input": [32.0, 20.5], "expected": 32.00001013004229}, {"input": [32.0, 21.0], "expected": 32.00001670156132}, {"input": [32.0, 21.5], "expected": 32.00002753607023}, {"input": [32.0, 22.0], "expected": 32.00004539889922}, {"input": [32.0, 22.5], "expected": 32.00007484902863}, {"input": [32.0, 23.0], "expected": 32.00012340218972}, {"input": [32.0, 23.5], "expected": 32.00020344767213}, {"input": [32.0, 24.0], "expected": 32.0003354063729}, {"input": [32.0, 24.5], "expected": 32.00055293147536}, {"input": [32.0, 25.0], "expected": 32.00091146645377}, {"input": [32.0, 25.5], "expected": 32.00150231015976}, {"input": [32.0, 26.0], "expected": 32.00247568513773}, {"input": [32.0, 26.5], "expected": 32.00407844327057}, {"input": [32.0, 27.0], "expected": 32.00671534848912}, {"input": [32.0, 27.5], "expected": 32.0110477448486}, {"input": [32.0, 28.0], "expected": 32.01814992791781}, {"input": [32.0, 28.5], "expected": 32.02975041827262}, {"input": [32.0, 29.0], "expected": 32.048587351573744}, {"input": [32.0, 29.5], "expected": 32.07888973429255}, {"input": [32.0, 30.0], "expected": 32.12692801104297}, {"input": [32.0, 30.5], "expected": 32.20141327798275}, {"input": [32.0, 31.0], "expected": 32.31326168751822}, {"input": [32.0, 31.5], "expected": 32.47407698418011}, {"input": [32.0, 32.0], "expected": 32.69314718055995}, {"input": [32.0, 32.5], "expected": 32.97407698418011}, {"input": [32.0, 33.0], "expected": 33.31326168751822}, {"input": [32.0, 33.5], "expected": 33.70141327798275}, {"input": [32.0, 34.0], "expected": 34.12692801104297}, {"input": [32.0, 34.5], "expected": 34.57888973429255}, {"input": [32.0, 35.0], "expected": 35.048587351573744}, {"input": [32.0, 35.5], "expected": 35.52975041827262}, {"input": [32.0, 36.0], "expected": 36.01814992791781}, {"input": [32.0, 36.5], "expected": 36.5110477448486}, {"input": [32.0, 37.0], "expected": 37.00671534848912}, {"input": [32.0, 37.5], "expected": 37.50407844327057}, {"input": [32.0, 38.0], "expected": 38.00247568513773}, {"input": [32.0, 38.5], "expected": 38.50150231015976}, {"input": [32.0, 39.0], "expected": 39.00091146645377}, {"input": [32.0, 39.5], "expected": 39.50055293147536}, {"input": [32.0, 40.0], "expected": 40.0003354063729}, {"input": [32.0, 40.5], "expected": 40.50020344767213}, {"input": [32.0, 41.0], "expected": 41.00012340218972}, {"input": [32.0, 41.5], "expected": 41.50007484902863}, {"input": [32.0, 42.0], "expected": 42.00004539889922}, {"input": [32.0, 42.5], "expected": 42.50002753607023}, {"input": [32.0, 43.0], "expected": 43.00001670156132}, {"input": [32.0, 43.5], "expected": 43.50001013004229}, {"input": [32.0, 44.0], "expected": 44.00000614419348}, {"input": [32.0, 44.5], "expected": 44.50000372664623}, {"input": [32.0, 45.0], "expected": 45.00000226032685}, {"input": [32.0, 45.5], "expected": 45.500001370958145}, {"input": [32.0, 46.0], "expected": 46.000000831528375}, {"input": [32.0, 46.5], "expected": 46.50000050434753}, {"input": [32.0, 47.0], "expected": 47.000000305902276}, {"input": [32.0, 47.5], "expected": 47.50000018553912}, {"input": [32.0, 48.0], "expected": 48.00000011253517}, {"input": [32.0, 48.5], "expected": 48.50000006825603}, {"input": [32.0, 49.0], "expected": 49.000000041399375}, {"input": [32.0, 49.5], "expected": 49.50000002510999}, {"input": [32.0, 50.0], "expected": 50.00000001522998}, {"input": [32.0, 50.5], "expected": 50.500000009237446}, {"input": [32.0, 51.0], "expected": 51.00000000560279}, {"input": [32.0, 51.5], "expected": 51.50000000339827}, {"input": [32.0, 52.0], "expected": 52.00000000206116}, {"input": [32.0, 52.5], "expected": 52.50000000125015}, {"input": [32.0, 53.0], "expected": 53.000000000758256}, {"input": [32.0, 53.5], "expected": 53.500000000459906}, {"input": [32.0, 54.0], "expected": 54.000000000278945}, {"input": [32.0, 54.5], "expected": 54.50000000016919}, {"input": [32.0, 55.0], "expected": 55.00000000010262}, {"input": [32.0, 55.5], "expected": 55.50000000006224}, {"input": [32.0, 56.0], "expected": 56.00000000003775}, {"input": [32.0, 56.5], "expected": 56.5000000000229}, {"input": [32.0, 57.0], "expected": 57.00000000001389}, {"input": [32.0, 57.5], "expected": 57.50000000000842}, {"input": [32.0, 58.0], "expected": 58.00000000000511}, {"input": [32.0, 58.5], "expected": 58.5000000000031}, {"input": [32.0, 59.0], "expected": 59.00000000000188}, {"input": [32.0, 59.5], "expected": 59.50000000000114}, {"input": [32.0, 60.0], "expected": 60.00000000000069}, {"input": [32.0, 60.5], "expected": 60.50000000000042}, {"input": [32.0, 61.0], "expected": 61.000000000000256}, {"input": [32.0, 61.5], "expected": 61.500000000000156}, {"input": [32.0, 62.0], "expected": 62.00000000000009}, {"input": [32.0, 62.5], "expected": 62.50000000000006}, {"input": [32.0, 63.0], "expected": 63.000000000000036}, {"input": [32.0, 63.5], "expected": 63.50000000000002}, {"input": [32.0, 64.0], "expected": 64.00000000000001}, {"input": [32.0, 64.5], "expected": 64.50000000000001}, {"input": [32.0, 65.0], "expected": 65.0}, {"input": [32.0, 65.5], "expected": 65.5}, {"input": [32.0, 66.0], "expected": 66.0}, {"input": [32.0, 66.5], "expected": 66.5}, {"input": [32.0, 67.0], "expected": 67.0}, {"input": [32.0, 67.5], "expected": 67.5}, {"input": [32.0, 68.0], "expected": 68.0}, {"input": [32.0, 68.5], "expected": 68.5}, {"input": [32.0, 69.0], "expected": 69.0}, {"input": [32.0, 69.5], "expected": 69.5}, {"input": [32.0, 70.0], "expected": 70.0}, {"input": [32.0, 70.5], "expected": 70.5}, {"input": [32.0, 71.0], "expected": 71.0}, {"input": [32.0, 71.5], "expected": 71.5}, {"input": [32.0, 72.0], "expected": 72.0}, {"input": [32.0, 72.5], "expected": 72.5}, {"input": [32.0, 73.0], "expected": 73.0}, {"input": [32.0, 73.5], "expected": 73.5}, {"input": [32.0, 74.0], "expected": 74.0}, {"input": [32.0, 74.5], "expected": 74.5}, {"input": [32.0, 75.0], "expected": 75.0}, {"input": [32.0, 75.5], "expected": 75.5}, {"input": [32.0, 76.0], "expected": 76.0}, {"input": [32.0, 76.5], "expected": 76.5}, {"input": [32.0, 77.0], "expected": 77.0}, {"input": [32.0, 77.5], "expected": 77.5}, {"input": [32.0, 78.0], "expected": 78.0}, {"input": [32.0, 78.5], "expected": 78.5}, {"input": [32.0, 79.0], "expected": 79.0}, {"input": [32.0, 79.5], "expected": 79.5}, {"input": [32.0, 80.0], "expected": 80.0}, {"input": [32.0, 80.5], "expected": 80.5}, {"input": [32.0, 81.0], "expected": 81.0}, {"input": [32.0, 81.5], "expected": 81.5}, {"input": [32.0, 82.0], "expected": 82.0}, {"input": [32.0, 82.5], "expected": 82.5}, {"input": [32.0, 83.0], "expected": 83.0}, {"input": [32.0, 83.5], "expected": 83.5}, {"input": [32.0, 84.0], "expected": 84.0}, {"input": [32.0, 84.5], "expected": 84.5}, {"input": [32.0, 85.0], "expected": 85.0}, {"input": [32.0, 85.5], "expected": 85.5}, {"input": [32.0, 86.0], "expected": 86.0}, {"input": [32.0, 86.5], "expected": 86.5}, {"input": [32.0, 87.0], "expected": 87.0}, {"input": [32.0, 87.5], "expected": 87.5}, {"input": [32.0, 88.0], "expected": 88.0}, {"input": [32.0, 88.5], "expected": 88.5}, {"input": [32.0, 89.0], "expected": 89.0}, {"input": [32.0, 89.5], "expected": 89.5}, {"input": [32.0, 90.0], "expected": 90.0}, {"input": [32.0, 90.5], "expected": 90.5}, {"input": [32.0, 91.0], "expected": 91.0}, {"input": [32.0, 91.5], "expected": 91.5}, {"input": [32.0, 92.0], "expected": 92.0}, {"input": [32.0, 92.5], "expected": 92.5}, {"input": [32.0, 93.0], "expected": 93.0}, {"input": [32.0, 93.5], "expected": 93.5}, {"input": [32.0, 94.0], "expected": 94.0}, {"input": [32.0, 94.5], "expected": 94.5}, {"input": [32.0, 95.0], "expected": 95.0}, {"input": [32.0, 95.5], "expected": 95.5}, {"input": [32.0, 96.0], "expected": 96.0}, {"input": [32.0, 96.5], "expected": 96.5}, {"input": [32.0, 97.0], "expected": 97.0}, {"input": [32.0, 97.5], "expected": 97.5}, {"input": [32.0, 98.0], "expected": 98.0}, {"input": [32.0, 98.5], "expected": 98.5}, {"input": [32.0, 99.0], "expected": 99.0}, {"input": [32.0, 99.5], "expected": 99.5}, {"input": [32.5, -100.0], "expected": 32.5}, {"input": [32.5, -99.5], "expected": 32.5}, {"input": [32.5, -99.0], "expected": 32.5}, {"input": [32.5, -98.5], "expected": 32.5}, {"input": [32.5, -98.0], "expected": 32.5}, {"input": [32.5, -97.5], "expected": 32.5}, {"input": [32.5, -97.0], "expected": 32.5}, {"input": [32.5, -96.5], "expected": 32.5}, {"input": [32.5, -96.0], "expected": 32.5}, {"input": [32.5, -95.5], "expected": 32.5}, {"input": [32.5, -95.0], "expected": 32.5}, {"input": [32.5, -94.5], "expected": 32.5}, {"input": [32.5, -94.0], "expected": 32.5}, {"input": [32.5, -93.5], "expected": 32.5}, {"input": [32.5, -93.0], "expected": 32.5}, {"input": [32.5, -92.5], "expected": 32.5}, {"input": [32.5, -92.0], "expected": 32.5}, {"input": [32.5, -91.5], "expected": 32.5}, {"input": [32.5, -91.0], "expected": 32.5}, {"input": [32.5, -90.5], "expected": 32.5}, {"input": [32.5, -90.0], "expected": 32.5}, {"input": [32.5, -89.5], "expected": 32.5}, {"input": [32.5, -89.0], "expected": 32.5}, {"input": [32.5, -88.5], "expected": 32.5}, {"input": [32.5, -88.0], "expected": 32.5}, {"input": [32.5, -87.5], "expected": 32.5}, {"input": [32.5, -87.0], "expected": 32.5}, {"input": [32.5, -86.5], "expected": 32.5}, {"input": [32.5, -86.0], "expected": 32.5}, {"input": [32.5, -85.5], "expected": 32.5}, {"input": [32.5, -85.0], "expected": 32.5}, {"input": [32.5, -84.5], "expected": 32.5}, {"input": [32.5, -84.0], "expected": 32.5}, {"input": [32.5, -83.5], "expected": 32.5}, {"input": [32.5, -83.0], "expected": 32.5}, {"input": [32.5, -82.5], "expected": 32.5}, {"input": [32.5, -82.0], "expected": 32.5}, {"input": [32.5, -81.5], "expected": 32.5}, {"input": [32.5, -81.0], "expected": 32.5}, {"input": [32.5, -80.5], "expected": 32.5}, {"input": [32.5, -80.0], "expected": 32.5}, {"input": [32.5, -79.5], "expected": 32.5}, {"input": [32.5, -79.0], "expected": 32.5}, {"input": [32.5, -78.5], "expected": 32.5}, {"input": [32.5, -78.0], "expected": 32.5}, {"input": [32.5, -77.5], "expected": 32.5}, {"input": [32.5, -77.0], "expected": 32.5}, {"input": [32.5, -76.5], "expected": 32.5}, {"input": [32.5, -76.0], "expected": 32.5}, {"input": [32.5, -75.5], "expected": 32.5}, {"input": [32.5, -75.0], "expected": 32.5}, {"input": [32.5, -74.5], "expected": 32.5}, {"input": [32.5, -74.0], "expected": 32.5}, {"input": [32.5, -73.5], "expected": 32.5}, {"input": [32.5, -73.0], "expected": 32.5}, {"input": [32.5, -72.5], "expected": 32.5}, {"input": [32.5, -72.0], "expected": 32.5}, {"input": [32.5, -71.5], "expected": 32.5}, {"input": [32.5, -71.0], "expected": 32.5}, {"input": [32.5, -70.5], "expected": 32.5}, {"input": [32.5, -70.0], "expected": 32.5}, {"input": [32.5, -69.5], "expected": 32.5}, {"input": [32.5, -69.0], "expected": 32.5}, {"input": [32.5, -68.5], "expected": 32.5}, {"input": [32.5, -68.0], "expected": 32.5}, {"input": [32.5, -67.5], "expected": 32.5}, {"input": [32.5, -67.0], "expected": 32.5}, {"input": [32.5, -66.5], "expected": 32.5}, {"input": [32.5, -66.0], "expected": 32.5}, {"input": [32.5, -65.5], "expected": 32.5}, {"input": [32.5, -65.0], "expected": 32.5}, {"input": [32.5, -64.5], "expected": 32.5}, {"input": [32.5, -64.0], "expected": 32.5}, {"input": [32.5, -63.5], "expected": 32.5}, {"input": [32.5, -63.0], "expected": 32.5}, {"input": [32.5, -62.5], "expected": 32.5}, {"input": [32.5, -62.0], "expected": 32.5}, {"input": [32.5, -61.5], "expected": 32.5}, {"input": [32.5, -61.0], "expected": 32.5}, {"input": [32.5, -60.5], "expected": 32.5}, {"input": [32.5, -60.0], "expected": 32.5}, {"input": [32.5, -59.5], "expected": 32.5}, {"input": [32.5, -59.0], "expected": 32.5}, {"input": [32.5, -58.5], "expected": 32.5}, {"input": [32.5, -58.0], "expected": 32.5}, {"input": [32.5, -57.5], "expected": 32.5}, {"input": [32.5, -57.0], "expected": 32.5}, {"input": [32.5, -56.5], "expected": 32.5}, {"input": [32.5, -56.0], "expected": 32.5}, {"input": [32.5, -55.5], "expected": 32.5}, {"input": [32.5, -55.0], "expected": 32.5}, {"input": [32.5, -54.5], "expected": 32.5}, {"input": [32.5, -54.0], "expected": 32.5}, {"input": [32.5, -53.5], "expected": 32.5}, {"input": [32.5, -53.0], "expected": 32.5}, {"input": [32.5, -52.5], "expected": 32.5}, {"input": [32.5, -52.0], "expected": 32.5}, {"input": [32.5, -51.5], "expected": 32.5}, {"input": [32.5, -51.0], "expected": 32.5}, {"input": [32.5, -50.5], "expected": 32.5}, {"input": [32.5, -50.0], "expected": 32.5}, {"input": [32.5, -49.5], "expected": 32.5}, {"input": [32.5, -49.0], "expected": 32.5}, {"input": [32.5, -48.5], "expected": 32.5}, {"input": [32.5, -48.0], "expected": 32.5}, {"input": [32.5, -47.5], "expected": 32.5}, {"input": [32.5, -47.0], "expected": 32.5}, {"input": [32.5, -46.5], "expected": 32.5}, {"input": [32.5, -46.0], "expected": 32.5}, {"input": [32.5, -45.5], "expected": 32.5}, {"input": [32.5, -45.0], "expected": 32.5}, {"input": [32.5, -44.5], "expected": 32.5}, {"input": [32.5, -44.0], "expected": 32.5}, {"input": [32.5, -43.5], "expected": 32.5}, {"input": [32.5, -43.0], "expected": 32.5}, {"input": [32.5, -42.5], "expected": 32.5}, {"input": [32.5, -42.0], "expected": 32.5}, {"input": [32.5, -41.5], "expected": 32.5}, {"input": [32.5, -41.0], "expected": 32.5}, {"input": [32.5, -40.5], "expected": 32.5}, {"input": [32.5, -40.0], "expected": 32.5}, {"input": [32.5, -39.5], "expected": 32.5}, {"input": [32.5, -39.0], "expected": 32.5}, {"input": [32.5, -38.5], "expected": 32.5}, {"input": [32.5, -38.0], "expected": 32.5}, {"input": [32.5, -37.5], "expected": 32.5}, {"input": [32.5, -37.0], "expected": 32.5}, {"input": [32.5, -36.5], "expected": 32.5}, {"input": [32.5, -36.0], "expected": 32.5}, {"input": [32.5, -35.5], "expected": 32.5}, {"input": [32.5, -35.0], "expected": 32.5}, {"input": [32.5, -34.5], "expected": 32.5}, {"input": [32.5, -34.0], "expected": 32.5}, {"input": [32.5, -33.5], "expected": 32.5}, {"input": [32.5, -33.0], "expected": 32.5}, {"input": [32.5, -32.5], "expected": 32.5}, {"input": [32.5, -32.0], "expected": 32.5}, {"input": [32.5, -31.5], "expected": 32.5}, {"input": [32.5, -31.0], "expected": 32.5}, {"input": [32.5, -30.5], "expected": 32.5}, {"input": [32.5, -30.0], "expected": 32.5}, {"input": [32.5, -29.5], "expected": 32.5}, {"input": [32.5, -29.0], "expected": 32.5}, {"input": [32.5, -28.5], "expected": 32.5}, {"input": [32.5, -28.0], "expected": 32.5}, {"input": [32.5, -27.5], "expected": 32.5}, {"input": [32.5, -27.0], "expected": 32.5}, {"input": [32.5, -26.5], "expected": 32.5}, {"input": [32.5, -26.0], "expected": 32.5}, {"input": [32.5, -25.5], "expected": 32.5}, {"input": [32.5, -25.0], "expected": 32.5}, {"input": [32.5, -24.5], "expected": 32.5}, {"input": [32.5, -24.0], "expected": 32.5}, {"input": [32.5, -23.5], "expected": 32.5}, {"input": [32.5, -23.0], "expected": 32.5}, {"input": [32.5, -22.5], "expected": 32.5}, {"input": [32.5, -22.0], "expected": 32.5}, {"input": [32.5, -21.5], "expected": 32.5}, {"input": [32.5, -21.0], "expected": 32.5}, {"input": [32.5, -20.5], "expected": 32.5}, {"input": [32.5, -20.0], "expected": 32.5}, {"input": [32.5, -19.5], "expected": 32.5}, {"input": [32.5, -19.0], "expected": 32.5}, {"input": [32.5, -18.5], "expected": 32.5}, {"input": [32.5, -18.0], "expected": 32.5}, {"input": [32.5, -17.5], "expected": 32.5}, {"input": [32.5, -17.0], "expected": 32.5}, {"input": [32.5, -16.5], "expected": 32.5}, {"input": [32.5, -16.0], "expected": 32.5}, {"input": [32.5, -15.5], "expected": 32.5}, {"input": [32.5, -15.0], "expected": 32.5}, {"input": [32.5, -14.5], "expected": 32.5}, {"input": [32.5, -14.0], "expected": 32.5}, {"input": [32.5, -13.5], "expected": 32.5}, {"input": [32.5, -13.0], "expected": 32.5}, {"input": [32.5, -12.5], "expected": 32.5}, {"input": [32.5, -12.0], "expected": 32.5}, {"input": [32.5, -11.5], "expected": 32.5}, {"input": [32.5, -11.0], "expected": 32.5}, {"input": [32.5, -10.5], "expected": 32.5}, {"input": [32.5, -10.0], "expected": 32.5}, {"input": [32.5, -9.5], "expected": 32.5}, {"input": [32.5, -9.0], "expected": 32.5}, {"input": [32.5, -8.5], "expected": 32.5}, {"input": [32.5, -8.0], "expected": 32.5}, {"input": [32.5, -7.5], "expected": 32.5}, {"input": [32.5, -7.0], "expected": 32.5}, {"input": [32.5, -6.5], "expected": 32.5}, {"input": [32.5, -6.0], "expected": 32.5}, {"input": [32.5, -5.5], "expected": 32.5}, {"input": [32.5, -5.0], "expected": 32.5}, {"input": [32.5, -4.5], "expected": 32.5}, {"input": [32.5, -4.0], "expected": 32.5}, {"input": [32.5, -3.5], "expected": 32.5}, {"input": [32.5, -3.0], "expected": 32.5}, {"input": [32.5, -2.5], "expected": 32.5}, {"input": [32.5, -2.0], "expected": 32.5}, {"input": [32.5, -1.5], "expected": 32.5}, {"input": [32.5, -1.0], "expected": 32.5}, {"input": [32.5, -0.5], "expected": 32.50000000000001}, {"input": [32.5, 0.0], "expected": 32.50000000000001}, {"input": [32.5, 0.5], "expected": 32.500000000000014}, {"input": [32.5, 1.0], "expected": 32.50000000000002}, {"input": [32.5, 1.5], "expected": 32.500000000000036}, {"input": [32.5, 2.0], "expected": 32.50000000000006}, {"input": [32.5, 2.5], "expected": 32.50000000000009}, {"input": [32.5, 3.0], "expected": 32.500000000000156}, {"input": [32.5, 3.5], "expected": 32.500000000000256}, {"input": [32.5, 4.0], "expected": 32.50000000000042}, {"input": [32.5, 4.5], "expected": 32.50000000000069}, {"input": [32.5, 5.0], "expected": 32.50000000000114}, {"input": [32.5, 5.5], "expected": 32.50000000000188}, {"input": [32.5, 6.0], "expected": 32.5000000000031}, {"input": [32.5, 6.5], "expected": 32.50000000000511}, {"input": [32.5, 7.0], "expected": 32.50000000000842}, {"input": [32.5, 7.5], "expected": 32.50000000001389}, {"input": [32.5, 8.0], "expected": 32.5000000000229}, {"input": [32.5, 8.5], "expected": 32.50000000003775}, {"input": [32.5, 9.0], "expected": 32.50000000006224}, {"input": [32.5, 9.5], "expected": 32.50000000010262}, {"input": [32.5, 10.0], "expected": 32.50000000016919}, {"input": [32.5, 10.5], "expected": 32.500000000278945}, {"input": [32.5, 11.0], "expected": 32.500000000459906}, {"input": [32.5, 11.5], "expected": 32.500000000758256}, {"input": [32.5, 12.0], "expected": 32.50000000125015}, {"input": [32.5, 12.5], "expected": 32.50000000206116}, {"input": [32.5, 13.0], "expected": 32.50000000339827}, {"input": [32.5, 13.5], "expected": 32.50000000560279}, {"input": [32.5, 14.0], "expected": 32.500000009237446}, {"input": [32.5, 14.5], "expected": 32.50000001522998}, {"input": [32.5, 15.0], "expected": 32.50000002510999}, {"input": [32.5, 15.5], "expected": 32.500000041399375}, {"input": [32.5, 16.0], "expected": 32.50000006825603}, {"input": [32.5, 16.5], "expected": 32.50000011253517}, {"input": [32.5, 17.0], "expected": 32.50000018553912}, {"input": [32.5, 17.5], "expected": 32.500000305902276}, {"input": [32.5, 18.0], "expected": 32.50000050434753}, {"input": [32.5, 18.5], "expected": 32.500000831528375}, {"input": [32.5, 19.0], "expected": 32.500001370958145}, {"input": [32.5, 19.5], "expected": 32.50000226032685}, {"input": [32.5, 20.0], "expected": 32.50000372664623}, {"input": [32.5, 20.5], "expected": 32.50000614419348}, {"input": [32.5, 21.0], "expected": 32.50001013004229}, {"input": [32.5, 21.5], "expected": 32.50001670156132}, {"input": [32.5, 22.0], "expected": 32.50002753607023}, {"input": [32.5, 22.5], "expected": 32.50004539889922}, {"input": [32.5, 23.0], "expected": 32.50007484902863}, {"input": [32.5, 23.5], "expected": 32.50012340218972}, {"input": [32.5, 24.0], "expected": 32.50020344767213}, {"input": [32.5, 24.5], "expected": 32.5003354063729}, {"input": [32.5, 25.0], "expected": 32.50055293147536}, {"input": [32.5, 25.5], "expected": 32.50091146645377}, {"input": [32.5, 26.0], "expected": 32.50150231015976}, {"input": [32.5, 26.5], "expected": 32.50247568513773}, {"input": [32.5, 27.0], "expected": 32.50407844327057}, {"input": [32.5, 27.5], "expected": 32.50671534848912}, {"input": [32.5, 28.0], "expected": 32.5110477448486}, {"input": [32.5, 28.5], "expected": 32.51814992791781}, {"input": [32.5, 29.0], "expected": 32.52975041827262}, {"input": [32.5, 29.5], "expected": 32.548587351573744}, {"input": [32.5, 30.0], "expected": 32.57888973429255}, {"input": [32.5, 30.5], "expected": 32.62692801104297}, {"input": [32.5, 31.0], "expected": 32.70141327798275}, {"input": [32.5, 31.5], "expected": 32.81326168751822}, {"input": [32.5, 32.0], "expected": 32.97407698418011}, {"input": [32.5, 32.5], "expected": 33.19314718055995}, {"input": [32.5, 33.0], "expected": 33.47407698418011}, {"input": [32.5, 33.5], "expected": 33.81326168751822}, {"input": [32.5, 34.0], "expected": 34.20141327798275}, {"input": [32.5, 34.5], "expected": 34.62692801104297}, {"input": [32.5, 35.0], "expected": 35.07888973429255}, {"input": [32.5, 35.5], "expected": 35.548587351573744}, {"input": [32.5, 36.0], "expected": 36.02975041827262}, {"input": [32.5, 36.5], "expected": 36.51814992791781}, {"input": [32.5, 37.0], "expected": 37.0110477448486}, {"input": [32.5, 37.5], "expected": 37.50671534848912}, {"input": [32.5, 38.0], "expected": 38.00407844327057}, {"input": [32.5, 38.5], "expected": 38.50247568513773}, {"input": [32.5, 39.0], "expected": 39.00150231015976}, {"input": [32.5, 39.5], "expected": 39.50091146645377}, {"input": [32.5, 40.0], "expected": 40.00055293147536}, {"input": [32.5, 40.5], "expected": 40.5003354063729}, {"input": [32.5, 41.0], "expected": 41.00020344767213}, {"input": [32.5, 41.5], "expected": 41.50012340218972}, {"input": [32.5, 42.0], "expected": 42.00007484902863}, {"input": [32.5, 42.5], "expected": 42.50004539889922}, {"input": [32.5, 43.0], "expected": 43.00002753607023}, {"input": [32.5, 43.5], "expected": 43.50001670156132}, {"input": [32.5, 44.0], "expected": 44.00001013004229}, {"input": [32.5, 44.5], "expected": 44.50000614419348}, {"input": [32.5, 45.0], "expected": 45.00000372664623}, {"input": [32.5, 45.5], "expected": 45.50000226032685}, {"input": [32.5, 46.0], "expected": 46.000001370958145}, {"input": [32.5, 46.5], "expected": 46.500000831528375}, {"input": [32.5, 47.0], "expected": 47.00000050434753}, {"input": [32.5, 47.5], "expected": 47.500000305902276}, {"input": [32.5, 48.0], "expected": 48.00000018553912}, {"input": [32.5, 48.5], "expected": 48.50000011253517}, {"input": [32.5, 49.0], "expected": 49.00000006825603}, {"input": [32.5, 49.5], "expected": 49.500000041399375}, {"input": [32.5, 50.0], "expected": 50.00000002510999}, {"input": [32.5, 50.5], "expected": 50.50000001522998}, {"input": [32.5, 51.0], "expected": 51.000000009237446}, {"input": [32.5, 51.5], "expected": 51.50000000560279}, {"input": [32.5, 52.0], "expected": 52.00000000339827}, {"input": [32.5, 52.5], "expected": 52.50000000206116}, {"input": [32.5, 53.0], "expected": 53.00000000125015}, {"input": [32.5, 53.5], "expected": 53.500000000758256}, {"input": [32.5, 54.0], "expected": 54.000000000459906}, {"input": [32.5, 54.5], "expected": 54.500000000278945}, {"input": [32.5, 55.0], "expected": 55.00000000016919}, {"input": [32.5, 55.5], "expected": 55.50000000010262}, {"input": [32.5, 56.0], "expected": 56.00000000006224}, {"input": [32.5, 56.5], "expected": 56.50000000003775}, {"input": [32.5, 57.0], "expected": 57.0000000000229}, {"input": [32.5, 57.5], "expected": 57.50000000001389}, {"input": [32.5, 58.0], "expected": 58.00000000000842}, {"input": [32.5, 58.5], "expected": 58.50000000000511}, {"input": [32.5, 59.0], "expected": 59.0000000000031}, {"input": [32.5, 59.5], "expected": 59.50000000000188}, {"input": [32.5, 60.0], "expected": 60.00000000000114}, {"input": [32.5, 60.5], "expected": 60.50000000000069}, {"input": [32.5, 61.0], "expected": 61.00000000000042}, {"input": [32.5, 61.5], "expected": 61.500000000000256}, {"input": [32.5, 62.0], "expected": 62.000000000000156}, {"input": [32.5, 62.5], "expected": 62.50000000000009}, {"input": [32.5, 63.0], "expected": 63.00000000000006}, {"input": [32.5, 63.5], "expected": 63.500000000000036}, {"input": [32.5, 64.0], "expected": 64.00000000000001}, {"input": [32.5, 64.5], "expected": 64.50000000000001}, {"input": [32.5, 65.0], "expected": 65.00000000000001}, {"input": [32.5, 65.5], "expected": 65.5}, {"input": [32.5, 66.0], "expected": 66.0}, {"input": [32.5, 66.5], "expected": 66.5}, {"input": [32.5, 67.0], "expected": 67.0}, {"input": [32.5, 67.5], "expected": 67.5}, {"input": [32.5, 68.0], "expected": 68.0}, {"input": [32.5, 68.5], "expected": 68.5}, {"input": [32.5, 69.0], "expected": 69.0}, {"input": [32.5, 69.5], "expected": 69.5}, {"input": [32.5, 70.0], "expected": 70.0}, {"input": [32.5, 70.5], "expected": 70.5}, {"input": [32.5, 71.0], "expected": 71.0}, {"input": [32.5, 71.5], "expected": 71.5}, {"input": [32.5, 72.0], "expected": 72.0}, {"input": [32.5, 72.5], "expected": 72.5}, {"input": [32.5, 73.0], "expected": 73.0}, {"input": [32.5, 73.5], "expected": 73.5}, {"input": [32.5, 74.0], "expected": 74.0}, {"input": [32.5, 74.5], "expected": 74.5}, {"input": [32.5, 75.0], "expected": 75.0}, {"input": [32.5, 75.5], "expected": 75.5}, {"input": [32.5, 76.0], "expected": 76.0}, {"input": [32.5, 76.5], "expected": 76.5}, {"input": [32.5, 77.0], "expected": 77.0}, {"input": [32.5, 77.5], "expected": 77.5}, {"input": [32.5, 78.0], "expected": 78.0}, {"input": [32.5, 78.5], "expected": 78.5}, {"input": [32.5, 79.0], "expected": 79.0}, {"input": [32.5, 79.5], "expected": 79.5}, {"input": [32.5, 80.0], "expected": 80.0}, {"input": [32.5, 80.5], "expected": 80.5}, {"input": [32.5, 81.0], "expected": 81.0}, {"input": [32.5, 81.5], "expected": 81.5}, {"input": [32.5, 82.0], "expected": 82.0}, {"input": [32.5, 82.5], "expected": 82.5}, {"input": [32.5, 83.0], "expected": 83.0}, {"input": [32.5, 83.5], "expected": 83.5}, {"input": [32.5, 84.0], "expected": 84.0}, {"input": [32.5, 84.5], "expected": 84.5}, {"input": [32.5, 85.0], "expected": 85.0}, {"input": [32.5, 85.5], "expected": 85.5}, {"input": [32.5, 86.0], "expected": 86.0}, {"input": [32.5, 86.5], "expected": 86.5}, {"input": [32.5, 87.0], "expected": 87.0}, {"input": [32.5, 87.5], "expected": 87.5}, {"input": [32.5, 88.0], "expected": 88.0}, {"input": [32.5, 88.5], "expected": 88.5}, {"input": [32.5, 89.0], "expected": 89.0}, {"input": [32.5, 89.5], "expected": 89.5}, {"input": [32.5, 90.0], "expected": 90.0}, {"input": [32.5, 90.5], "expected": 90.5}, {"input": [32.5, 91.0], "expected": 91.0}, {"input": [32.5, 91.5], "expected": 91.5}, {"input": [32.5, 92.0], "expected": 92.0}, {"input": [32.5, 92.5], "expected": 92.5}, {"input": [32.5, 93.0], "expected": 93.0}, {"input": [32.5, 93.5], "expected": 93.5}, {"input": [32.5, 94.0], "expected": 94.0}, {"input": [32.5, 94.5], "expected": 94.5}, {"input": [32.5, 95.0], "expected": 95.0}, {"input": [32.5, 95.5], "expected": 95.5}, {"input": [32.5, 96.0], "expected": 96.0}, {"input": [32.5, 96.5], "expected": 96.5}, {"input": [32.5, 97.0], "expected": 97.0}, {"input": [32.5, 97.5], "expected": 97.5}, {"input": [32.5, 98.0], "expected": 98.0}, {"input": [32.5, 98.5], "expected": 98.5}, {"input": [32.5, 99.0], "expected": 99.0}, {"input": [32.5, 99.5], "expected": 99.5}, {"input": [33.0, -100.0], "expected": 33.0}, {"input": [33.0, -99.5], "expected": 33.0}, {"input": [33.0, -99.0], "expected": 33.0}, {"input": [33.0, -98.5], "expected": 33.0}, {"input": [33.0, -98.0], "expected": 33.0}, {"input": [33.0, -97.5], "expected": 33.0}, {"input": [33.0, -97.0], "expected": 33.0}, {"input": [33.0, -96.5], "expected": 33.0}, {"input": [33.0, -96.0], "expected": 33.0}, {"input": [33.0, -95.5], "expected": 33.0}, {"input": [33.0, -95.0], "expected": 33.0}, {"input": [33.0, -94.5], "expected": 33.0}, {"input": [33.0, -94.0], "expected": 33.0}, {"input": [33.0, -93.5], "expected": 33.0}, {"input": [33.0, -93.0], "expected": 33.0}, {"input": [33.0, -92.5], "expected": 33.0}, {"input": [33.0, -92.0], "expected": 33.0}, {"input": [33.0, -91.5], "expected": 33.0}, {"input": [33.0, -91.0], "expected": 33.0}, {"input": [33.0, -90.5], "expected": 33.0}, {"input": [33.0, -90.0], "expected": 33.0}, {"input": [33.0, -89.5], "expected": 33.0}, {"input": [33.0, -89.0], "expected": 33.0}, {"input": [33.0, -88.5], "expected": 33.0}, {"input": [33.0, -88.0], "expected": 33.0}, {"input": [33.0, -87.5], "expected": 33.0}, {"input": [33.0, -87.0], "expected": 33.0}, {"input": [33.0, -86.5], "expected": 33.0}, {"input": [33.0, -86.0], "expected": 33.0}, {"input": [33.0, -85.5], "expected": 33.0}, {"input": [33.0, -85.0], "expected": 33.0}, {"input": [33.0, -84.5], "expected": 33.0}, {"input": [33.0, -84.0], "expected": 33.0}, {"input": [33.0, -83.5], "expected": 33.0}, {"input": [33.0, -83.0], "expected": 33.0}, {"input": [33.0, -82.5], "expected": 33.0}, {"input": [33.0, -82.0], "expected": 33.0}, {"input": [33.0, -81.5], "expected": 33.0}, {"input": [33.0, -81.0], "expected": 33.0}, {"input": [33.0, -80.5], "expected": 33.0}, {"input": [33.0, -80.0], "expected": 33.0}, {"input": [33.0, -79.5], "expected": 33.0}, {"input": [33.0, -79.0], "expected": 33.0}, {"input": [33.0, -78.5], "expected": 33.0}, {"input": [33.0, -78.0], "expected": 33.0}, {"input": [33.0, -77.5], "expected": 33.0}, {"input": [33.0, -77.0], "expected": 33.0}, {"input": [33.0, -76.5], "expected": 33.0}, {"input": [33.0, -76.0], "expected": 33.0}, {"input": [33.0, -75.5], "expected": 33.0}, {"input": [33.0, -75.0], "expected": 33.0}, {"input": [33.0, -74.5], "expected": 33.0}, {"input": [33.0, -74.0], "expected": 33.0}, {"input": [33.0, -73.5], "expected": 33.0}, {"input": [33.0, -73.0], "expected": 33.0}, {"input": [33.0, -72.5], "expected": 33.0}, {"input": [33.0, -72.0], "expected": 33.0}, {"input": [33.0, -71.5], "expected": 33.0}, {"input": [33.0, -71.0], "expected": 33.0}, {"input": [33.0, -70.5], "expected": 33.0}, {"input": [33.0, -70.0], "expected": 33.0}, {"input": [33.0, -69.5], "expected": 33.0}, {"input": [33.0, -69.0], "expected": 33.0}, {"input": [33.0, -68.5], "expected": 33.0}, {"input": [33.0, -68.0], "expected": 33.0}, {"input": [33.0, -67.5], "expected": 33.0}, {"input": [33.0, -67.0], "expected": 33.0}, {"input": [33.0, -66.5], "expected": 33.0}, {"input": [33.0, -66.0], "expected": 33.0}, {"input": [33.0, -65.5], "expected": 33.0}, {"input": [33.0, -65.0], "expected": 33.0}, {"input": [33.0, -64.5], "expected": 33.0}, {"input": [33.0, -64.0], "expected": 33.0}, {"input": [33.0, -63.5], "expected": 33.0}, {"input": [33.0, -63.0], "expected": 33.0}, {"input": [33.0, -62.5], "expected": 33.0}, {"input": [33.0, -62.0], "expected": 33.0}, {"input": [33.0, -61.5], "expected": 33.0}, {"input": [33.0, -61.0], "expected": 33.0}, {"input": [33.0, -60.5], "expected": 33.0}, {"input": [33.0, -60.0], "expected": 33.0}, {"input": [33.0, -59.5], "expected": 33.0}, {"input": [33.0, -59.0], "expected": 33.0}, {"input": [33.0, -58.5], "expected": 33.0}, {"input": [33.0, -58.0], "expected": 33.0}, {"input": [33.0, -57.5], "expected": 33.0}, {"input": [33.0, -57.0], "expected": 33.0}, {"input": [33.0, -56.5], "expected": 33.0}, {"input": [33.0, -56.0], "expected": 33.0}, {"input": [33.0, -55.5], "expected": 33.0}, {"input": [33.0, -55.0], "expected": 33.0}, {"input": [33.0, -54.5], "expected": 33.0}, {"input": [33.0, -54.0], "expected": 33.0}, {"input": [33.0, -53.5], "expected": 33.0}, {"input": [33.0, -53.0], "expected": 33.0}, {"input": [33.0, -52.5], "expected": 33.0}, {"input": [33.0, -52.0], "expected": 33.0}, {"input": [33.0, -51.5], "expected": 33.0}, {"input": [33.0, -51.0], "expected": 33.0}, {"input": [33.0, -50.5], "expected": 33.0}, {"input": [33.0, -50.0], "expected": 33.0}, {"input": [33.0, -49.5], "expected": 33.0}, {"input": [33.0, -49.0], "expected": 33.0}, {"input": [33.0, -48.5], "expected": 33.0}, {"input": [33.0, -48.0], "expected": 33.0}, {"input": [33.0, -47.5], "expected": 33.0}, {"input": [33.0, -47.0], "expected": 33.0}, {"input": [33.0, -46.5], "expected": 33.0}, {"input": [33.0, -46.0], "expected": 33.0}, {"input": [33.0, -45.5], "expected": 33.0}, {"input": [33.0, -45.0], "expected": 33.0}, {"input": [33.0, -44.5], "expected": 33.0}, {"input": [33.0, -44.0], "expected": 33.0}, {"input": [33.0, -43.5], "expected": 33.0}, {"input": [33.0, -43.0], "expected": 33.0}, {"input": [33.0, -42.5], "expected": 33.0}, {"input": [33.0, -42.0], "expected": 33.0}, {"input": [33.0, -41.5], "expected": 33.0}, {"input": [33.0, -41.0], "expected": 33.0}, {"input": [33.0, -40.5], "expected": 33.0}, {"input": [33.0, -40.0], "expected": 33.0}, {"input": [33.0, -39.5], "expected": 33.0}, {"input": [33.0, -39.0], "expected": 33.0}, {"input": [33.0, -38.5], "expected": 33.0}, {"input": [33.0, -38.0], "expected": 33.0}, {"input": [33.0, -37.5], "expected": 33.0}, {"input": [33.0, -37.0], "expected": 33.0}, {"input": [33.0, -36.5], "expected": 33.0}, {"input": [33.0, -36.0], "expected": 33.0}, {"input": [33.0, -35.5], "expected": 33.0}, {"input": [33.0, -35.0], "expected": 33.0}, {"input": [33.0, -34.5], "expected": 33.0}, {"input": [33.0, -34.0], "expected": 33.0}, {"input": [33.0, -33.5], "expected": 33.0}, {"input": [33.0, -33.0], "expected": 33.0}, {"input": [33.0, -32.5], "expected": 33.0}, {"input": [33.0, -32.0], "expected": 33.0}, {"input": [33.0, -31.5], "expected": 33.0}, {"input": [33.0, -31.0], "expected": 33.0}, {"input": [33.0, -30.5], "expected": 33.0}, {"input": [33.0, -30.0], "expected": 33.0}, {"input": [33.0, -29.5], "expected": 33.0}, {"input": [33.0, -29.0], "expected": 33.0}, {"input": [33.0, -28.5], "expected": 33.0}, {"input": [33.0, -28.0], "expected": 33.0}, {"input": [33.0, -27.5], "expected": 33.0}, {"input": [33.0, -27.0], "expected": 33.0}, {"input": [33.0, -26.5], "expected": 33.0}, {"input": [33.0, -26.0], "expected": 33.0}, {"input": [33.0, -25.5], "expected": 33.0}, {"input": [33.0, -25.0], "expected": 33.0}, {"input": [33.0, -24.5], "expected": 33.0}, {"input": [33.0, -24.0], "expected": 33.0}, {"input": [33.0, -23.5], "expected": 33.0}, {"input": [33.0, -23.0], "expected": 33.0}, {"input": [33.0, -22.5], "expected": 33.0}, {"input": [33.0, -22.0], "expected": 33.0}, {"input": [33.0, -21.5], "expected": 33.0}, {"input": [33.0, -21.0], "expected": 33.0}, {"input": [33.0, -20.5], "expected": 33.0}, {"input": [33.0, -20.0], "expected": 33.0}, {"input": [33.0, -19.5], "expected": 33.0}, {"input": [33.0, -19.0], "expected": 33.0}, {"input": [33.0, -18.5], "expected": 33.0}, {"input": [33.0, -18.0], "expected": 33.0}, {"input": [33.0, -17.5], "expected": 33.0}, {"input": [33.0, -17.0], "expected": 33.0}, {"input": [33.0, -16.5], "expected": 33.0}, {"input": [33.0, -16.0], "expected": 33.0}, {"input": [33.0, -15.5], "expected": 33.0}, {"input": [33.0, -15.0], "expected": 33.0}, {"input": [33.0, -14.5], "expected": 33.0}, {"input": [33.0, -14.0], "expected": 33.0}, {"input": [33.0, -13.5], "expected": 33.0}, {"input": [33.0, -13.0], "expected": 33.0}, {"input": [33.0, -12.5], "expected": 33.0}, {"input": [33.0, -12.0], "expected": 33.0}, {"input": [33.0, -11.5], "expected": 33.0}, {"input": [33.0, -11.0], "expected": 33.0}, {"input": [33.0, -10.5], "expected": 33.0}, {"input": [33.0, -10.0], "expected": 33.0}, {"input": [33.0, -9.5], "expected": 33.0}, {"input": [33.0, -9.0], "expected": 33.0}, {"input": [33.0, -8.5], "expected": 33.0}, {"input": [33.0, -8.0], "expected": 33.0}, {"input": [33.0, -7.5], "expected": 33.0}, {"input": [33.0, -7.0], "expected": 33.0}, {"input": [33.0, -6.5], "expected": 33.0}, {"input": [33.0, -6.0], "expected": 33.0}, {"input": [33.0, -5.5], "expected": 33.0}, {"input": [33.0, -5.0], "expected": 33.0}, {"input": [33.0, -4.5], "expected": 33.0}, {"input": [33.0, -4.0], "expected": 33.0}, {"input": [33.0, -3.5], "expected": 33.0}, {"input": [33.0, -3.0], "expected": 33.0}, {"input": [33.0, -2.5], "expected": 33.0}, {"input": [33.0, -2.0], "expected": 33.0}, {"input": [33.0, -1.5], "expected": 33.0}, {"input": [33.0, -1.0], "expected": 33.0}, {"input": [33.0, -0.5], "expected": 33.0}, {"input": [33.0, 0.0], "expected": 33.00000000000001}, {"input": [33.0, 0.5], "expected": 33.00000000000001}, {"input": [33.0, 1.0], "expected": 33.000000000000014}, {"input": [33.0, 1.5], "expected": 33.00000000000002}, {"input": [33.0, 2.0], "expected": 33.000000000000036}, {"input": [33.0, 2.5], "expected": 33.00000000000006}, {"input": [33.0, 3.0], "expected": 33.00000000000009}, {"input": [33.0, 3.5], "expected": 33.000000000000156}, {"input": [33.0, 4.0], "expected": 33.000000000000256}, {"input": [33.0, 4.5], "expected": 33.00000000000042}, {"input": [33.0, 5.0], "expected": 33.00000000000069}, {"input": [33.0, 5.5], "expected": 33.00000000000114}, {"input": [33.0, 6.0], "expected": 33.00000000000188}, {"input": [33.0, 6.5], "expected": 33.0000000000031}, {"input": [33.0, 7.0], "expected": 33.00000000000511}, {"input": [33.0, 7.5], "expected": 33.00000000000842}, {"input": [33.0, 8.0], "expected": 33.00000000001389}, {"input": [33.0, 8.5], "expected": 33.0000000000229}, {"input": [33.0, 9.0], "expected": 33.00000000003775}, {"input": [33.0, 9.5], "expected": 33.00000000006224}, {"input": [33.0, 10.0], "expected": 33.00000000010262}, {"input": [33.0, 10.5], "expected": 33.00000000016919}, {"input": [33.0, 11.0], "expected": 33.000000000278945}, {"input": [33.0, 11.5], "expected": 33.000000000459906}, {"input": [33.0, 12.0], "expected": 33.000000000758256}, {"input": [33.0, 12.5], "expected": 33.00000000125015}, {"input": [33.0, 13.0], "expected": 33.00000000206116}, {"input": [33.0, 13.5], "expected": 33.00000000339827}, {"input": [33.0, 14.0], "expected": 33.00000000560279}, {"input": [33.0, 14.5], "expected": 33.000000009237446}, {"input": [33.0, 15.0], "expected": 33.00000001522998}, {"input": [33.0, 15.5], "expected": 33.00000002510999}, {"input": [33.0, 16.0], "expected": 33.000000041399375}, {"input": [33.0, 16.5], "expected": 33.00000006825603}, {"input": [33.0, 17.0], "expected": 33.00000011253517}, {"input": [33.0, 17.5], "expected": 33.00000018553912}, {"input": [33.0, 18.0], "expected": 33.000000305902276}, {"input": [33.0, 18.5], "expected": 33.00000050434753}, {"input": [33.0, 19.0], "expected": 33.000000831528375}, {"input": [33.0, 19.5], "expected": 33.000001370958145}, {"input": [33.0, 20.0], "expected": 33.00000226032685}, {"input": [33.0, 20.5], "expected": 33.00000372664623}, {"input": [33.0, 21.0], "expected": 33.00000614419348}, {"input": [33.0, 21.5], "expected": 33.00001013004229}, {"input": [33.0, 22.0], "expected": 33.00001670156132}, {"input": [33.0, 22.5], "expected": 33.00002753607023}, {"input": [33.0, 23.0], "expected": 33.00004539889922}, {"input": [33.0, 23.5], "expected": 33.00007484902863}, {"input": [33.0, 24.0], "expected": 33.00012340218972}, {"input": [33.0, 24.5], "expected": 33.00020344767213}, {"input": [33.0, 25.0], "expected": 33.0003354063729}, {"input": [33.0, 25.5], "expected": 33.00055293147536}, {"input": [33.0, 26.0], "expected": 33.00091146645377}, {"input": [33.0, 26.5], "expected": 33.00150231015976}, {"input": [33.0, 27.0], "expected": 33.00247568513773}, {"input": [33.0, 27.5], "expected": 33.00407844327057}, {"input": [33.0, 28.0], "expected": 33.00671534848912}, {"input": [33.0, 28.5], "expected": 33.0110477448486}, {"input": [33.0, 29.0], "expected": 33.01814992791781}, {"input": [33.0, 29.5], "expected": 33.02975041827262}, {"input": [33.0, 30.0], "expected": 33.048587351573744}, {"input": [33.0, 30.5], "expected": 33.07888973429255}, {"input": [33.0, 31.0], "expected": 33.12692801104297}, {"input": [33.0, 31.5], "expected": 33.20141327798275}, {"input": [33.0, 32.0], "expected": 33.31326168751822}, {"input": [33.0, 32.5], "expected": 33.47407698418011}, {"input": [33.0, 33.0], "expected": 33.69314718055995}, {"input": [33.0, 33.5], "expected": 33.97407698418011}, {"input": [33.0, 34.0], "expected": 34.31326168751822}, {"input": [33.0, 34.5], "expected": 34.70141327798275}, {"input": [33.0, 35.0], "expected": 35.12692801104297}, {"input": [33.0, 35.5], "expected": 35.57888973429255}, {"input": [33.0, 36.0], "expected": 36.048587351573744}, {"input": [33.0, 36.5], "expected": 36.52975041827262}, {"input": [33.0, 37.0], "expected": 37.01814992791781}, {"input": [33.0, 37.5], "expected": 37.5110477448486}, {"input": [33.0, 38.0], "expected": 38.00671534848912}, {"input": [33.0, 38.5], "expected": 38.50407844327057}, {"input": [33.0, 39.0], "expected": 39.00247568513773}, {"input": [33.0, 39.5], "expected": 39.50150231015976}, {"input": [33.0, 40.0], "expected": 40.00091146645377}, {"input": [33.0, 40.5], "expected": 40.50055293147536}, {"input": [33.0, 41.0], "expected": 41.0003354063729}, {"input": [33.0, 41.5], "expected": 41.50020344767213}, {"input": [33.0, 42.0], "expected": 42.00012340218972}, {"input": [33.0, 42.5], "expected": 42.50007484902863}, {"input": [33.0, 43.0], "expected": 43.00004539889922}, {"input": [33.0, 43.5], "expected": 43.50002753607023}, {"input": [33.0, 44.0], "expected": 44.00001670156132}, {"input": [33.0, 44.5], "expected": 44.50001013004229}, {"input": [33.0, 45.0], "expected": 45.00000614419348}, {"input": [33.0, 45.5], "expected": 45.50000372664623}, {"input": [33.0, 46.0], "expected": 46.00000226032685}, {"input": [33.0, 46.5], "expected": 46.500001370958145}, {"input": [33.0, 47.0], "expected": 47.000000831528375}, {"input": [33.0, 47.5], "expected": 47.50000050434753}, {"input": [33.0, 48.0], "expected": 48.000000305902276}, {"input": [33.0, 48.5], "expected": 48.50000018553912}, {"input": [33.0, 49.0], "expected": 49.00000011253517}, {"input": [33.0, 49.5], "expected": 49.50000006825603}, {"input": [33.0, 50.0], "expected": 50.000000041399375}, {"input": [33.0, 50.5], "expected": 50.50000002510999}, {"input": [33.0, 51.0], "expected": 51.00000001522998}, {"input": [33.0, 51.5], "expected": 51.500000009237446}, {"input": [33.0, 52.0], "expected": 52.00000000560279}, {"input": [33.0, 52.5], "expected": 52.50000000339827}, {"input": [33.0, 53.0], "expected": 53.00000000206116}, {"input": [33.0, 53.5], "expected": 53.50000000125015}, {"input": [33.0, 54.0], "expected": 54.000000000758256}, {"input": [33.0, 54.5], "expected": 54.500000000459906}, {"input": [33.0, 55.0], "expected": 55.000000000278945}, {"input": [33.0, 55.5], "expected": 55.50000000016919}, {"input": [33.0, 56.0], "expected": 56.00000000010262}, {"input": [33.0, 56.5], "expected": 56.50000000006224}, {"input": [33.0, 57.0], "expected": 57.00000000003775}, {"input": [33.0, 57.5], "expected": 57.5000000000229}, {"input": [33.0, 58.0], "expected": 58.00000000001389}, {"input": [33.0, 58.5], "expected": 58.50000000000842}, {"input": [33.0, 59.0], "expected": 59.00000000000511}, {"input": [33.0, 59.5], "expected": 59.5000000000031}, {"input": [33.0, 60.0], "expected": 60.00000000000188}, {"input": [33.0, 60.5], "expected": 60.50000000000114}, {"input": [33.0, 61.0], "expected": 61.00000000000069}, {"input": [33.0, 61.5], "expected": 61.50000000000042}, {"input": [33.0, 62.0], "expected": 62.000000000000256}, {"input": [33.0, 62.5], "expected": 62.500000000000156}, {"input": [33.0, 63.0], "expected": 63.00000000000009}, {"input": [33.0, 63.5], "expected": 63.50000000000006}, {"input": [33.0, 64.0], "expected": 64.00000000000003}, {"input": [33.0, 64.5], "expected": 64.50000000000001}, {"input": [33.0, 65.0], "expected": 65.00000000000001}, {"input": [33.0, 65.5], "expected": 65.50000000000001}, {"input": [33.0, 66.0], "expected": 66.0}, {"input": [33.0, 66.5], "expected": 66.5}, {"input": [33.0, 67.0], "expected": 67.0}, {"input": [33.0, 67.5], "expected": 67.5}, {"input": [33.0, 68.0], "expected": 68.0}, {"input": [33.0, 68.5], "expected": 68.5}, {"input": [33.0, 69.0], "expected": 69.0}, {"input": [33.0, 69.5], "expected": 69.5}, {"input": [33.0, 70.0], "expected": 70.0}, {"input": [33.0, 70.5], "expected": 70.5}, {"input": [33.0, 71.0], "expected": 71.0}, {"input": [33.0, 71.5], "expected": 71.5}, {"input": [33.0, 72.0], "expected": 72.0}, {"input": [33.0, 72.5], "expected": 72.5}, {"input": [33.0, 73.0], "expected": 73.0}, {"input": [33.0, 73.5], "expected": 73.5}, {"input": [33.0, 74.0], "expected": 74.0}, {"input": [33.0, 74.5], "expected": 74.5}, {"input": [33.0, 75.0], "expected": 75.0}, {"input": [33.0, 75.5], "expected": 75.5}, {"input": [33.0, 76.0], "expected": 76.0}, {"input": [33.0, 76.5], "expected": 76.5}, {"input": [33.0, 77.0], "expected": 77.0}, {"input": [33.0, 77.5], "expected": 77.5}, {"input": [33.0, 78.0], "expected": 78.0}, {"input": [33.0, 78.5], "expected": 78.5}, {"input": [33.0, 79.0], "expected": 79.0}, {"input": [33.0, 79.5], "expected": 79.5}, {"input": [33.0, 80.0], "expected": 80.0}, {"input": [33.0, 80.5], "expected": 80.5}, {"input": [33.0, 81.0], "expected": 81.0}, {"input": [33.0, 81.5], "expected": 81.5}, {"input": [33.0, 82.0], "expected": 82.0}, {"input": [33.0, 82.5], "expected": 82.5}, {"input": [33.0, 83.0], "expected": 83.0}, {"input": [33.0, 83.5], "expected": 83.5}, {"input": [33.0, 84.0], "expected": 84.0}, {"input": [33.0, 84.5], "expected": 84.5}, {"input": [33.0, 85.0], "expected": 85.0}, {"input": [33.0, 85.5], "expected": 85.5}, {"input": [33.0, 86.0], "expected": 86.0}, {"input": [33.0, 86.5], "expected": 86.5}, {"input": [33.0, 87.0], "expected": 87.0}, {"input": [33.0, 87.5], "expected": 87.5}, {"input": [33.0, 88.0], "expected": 88.0}, {"input": [33.0, 88.5], "expected": 88.5}, {"input": [33.0, 89.0], "expected": 89.0}, {"input": [33.0, 89.5], "expected": 89.5}, {"input": [33.0, 90.0], "expected": 90.0}, {"input": [33.0, 90.5], "expected": 90.5}, {"input": [33.0, 91.0], "expected": 91.0}, {"input": [33.0, 91.5], "expected": 91.5}, {"input": [33.0, 92.0], "expected": 92.0}, {"input": [33.0, 92.5], "expected": 92.5}, {"input": [33.0, 93.0], "expected": 93.0}, {"input": [33.0, 93.5], "expected": 93.5}, {"input": [33.0, 94.0], "expected": 94.0}, {"input": [33.0, 94.5], "expected": 94.5}, {"input": [33.0, 95.0], "expected": 95.0}, {"input": [33.0, 95.5], "expected": 95.5}, {"input": [33.0, 96.0], "expected": 96.0}, {"input": [33.0, 96.5], "expected": 96.5}, {"input": [33.0, 97.0], "expected": 97.0}, {"input": [33.0, 97.5], "expected": 97.5}, {"input": [33.0, 98.0], "expected": 98.0}, {"input": [33.0, 98.5], "expected": 98.5}, {"input": [33.0, 99.0], "expected": 99.0}, {"input": [33.0, 99.5], "expected": 99.5}, {"input": [33.5, -100.0], "expected": 33.5}, {"input": [33.5, -99.5], "expected": 33.5}, {"input": [33.5, -99.0], "expected": 33.5}, {"input": [33.5, -98.5], "expected": 33.5}, {"input": [33.5, -98.0], "expected": 33.5}, {"input": [33.5, -97.5], "expected": 33.5}, {"input": [33.5, -97.0], "expected": 33.5}, {"input": [33.5, -96.5], "expected": 33.5}, {"input": [33.5, -96.0], "expected": 33.5}, {"input": [33.5, -95.5], "expected": 33.5}, {"input": [33.5, -95.0], "expected": 33.5}, {"input": [33.5, -94.5], "expected": 33.5}, {"input": [33.5, -94.0], "expected": 33.5}, {"input": [33.5, -93.5], "expected": 33.5}, {"input": [33.5, -93.0], "expected": 33.5}, {"input": [33.5, -92.5], "expected": 33.5}, {"input": [33.5, -92.0], "expected": 33.5}, {"input": [33.5, -91.5], "expected": 33.5}, {"input": [33.5, -91.0], "expected": 33.5}, {"input": [33.5, -90.5], "expected": 33.5}, {"input": [33.5, -90.0], "expected": 33.5}, {"input": [33.5, -89.5], "expected": 33.5}, {"input": [33.5, -89.0], "expected": 33.5}, {"input": [33.5, -88.5], "expected": 33.5}, {"input": [33.5, -88.0], "expected": 33.5}, {"input": [33.5, -87.5], "expected": 33.5}, {"input": [33.5, -87.0], "expected": 33.5}, {"input": [33.5, -86.5], "expected": 33.5}, {"input": [33.5, -86.0], "expected": 33.5}, {"input": [33.5, -85.5], "expected": 33.5}, {"input": [33.5, -85.0], "expected": 33.5}, {"input": [33.5, -84.5], "expected": 33.5}, {"input": [33.5, -84.0], "expected": 33.5}, {"input": [33.5, -83.5], "expected": 33.5}, {"input": [33.5, -83.0], "expected": 33.5}, {"input": [33.5, -82.5], "expected": 33.5}, {"input": [33.5, -82.0], "expected": 33.5}, {"input": [33.5, -81.5], "expected": 33.5}, {"input": [33.5, -81.0], "expected": 33.5}, {"input": [33.5, -80.5], "expected": 33.5}, {"input": [33.5, -80.0], "expected": 33.5}, {"input": [33.5, -79.5], "expected": 33.5}, {"input": [33.5, -79.0], "expected": 33.5}, {"input": [33.5, -78.5], "expected": 33.5}, {"input": [33.5, -78.0], "expected": 33.5}, {"input": [33.5, -77.5], "expected": 33.5}, {"input": [33.5, -77.0], "expected": 33.5}, {"input": [33.5, -76.5], "expected": 33.5}, {"input": [33.5, -76.0], "expected": 33.5}, {"input": [33.5, -75.5], "expected": 33.5}, {"input": [33.5, -75.0], "expected": 33.5}, {"input": [33.5, -74.5], "expected": 33.5}, {"input": [33.5, -74.0], "expected": 33.5}, {"input": [33.5, -73.5], "expected": 33.5}, {"input": [33.5, -73.0], "expected": 33.5}, {"input": [33.5, -72.5], "expected": 33.5}, {"input": [33.5, -72.0], "expected": 33.5}, {"input": [33.5, -71.5], "expected": 33.5}, {"input": [33.5, -71.0], "expected": 33.5}, {"input": [33.5, -70.5], "expected": 33.5}, {"input": [33.5, -70.0], "expected": 33.5}, {"input": [33.5, -69.5], "expected": 33.5}, {"input": [33.5, -69.0], "expected": 33.5}, {"input": [33.5, -68.5], "expected": 33.5}, {"input": [33.5, -68.0], "expected": 33.5}, {"input": [33.5, -67.5], "expected": 33.5}, {"input": [33.5, -67.0], "expected": 33.5}, {"input": [33.5, -66.5], "expected": 33.5}, {"input": [33.5, -66.0], "expected": 33.5}, {"input": [33.5, -65.5], "expected": 33.5}, {"input": [33.5, -65.0], "expected": 33.5}, {"input": [33.5, -64.5], "expected": 33.5}, {"input": [33.5, -64.0], "expected": 33.5}, {"input": [33.5, -63.5], "expected": 33.5}, {"input": [33.5, -63.0], "expected": 33.5}, {"input": [33.5, -62.5], "expected": 33.5}, {"input": [33.5, -62.0], "expected": 33.5}, {"input": [33.5, -61.5], "expected": 33.5}, {"input": [33.5, -61.0], "expected": 33.5}, {"input": [33.5, -60.5], "expected": 33.5}, {"input": [33.5, -60.0], "expected": 33.5}, {"input": [33.5, -59.5], "expected": 33.5}, {"input": [33.5, -59.0], "expected": 33.5}, {"input": [33.5, -58.5], "expected": 33.5}, {"input": [33.5, -58.0], "expected": 33.5}, {"input": [33.5, -57.5], "expected": 33.5}, {"input": [33.5, -57.0], "expected": 33.5}, {"input": [33.5, -56.5], "expected": 33.5}, {"input": [33.5, -56.0], "expected": 33.5}, {"input": [33.5, -55.5], "expected": 33.5}, {"input": [33.5, -55.0], "expected": 33.5}, {"input": [33.5, -54.5], "expected": 33.5}, {"input": [33.5, -54.0], "expected": 33.5}, {"input": [33.5, -53.5], "expected": 33.5}, {"input": [33.5, -53.0], "expected": 33.5}, {"input": [33.5, -52.5], "expected": 33.5}, {"input": [33.5, -52.0], "expected": 33.5}, {"input": [33.5, -51.5], "expected": 33.5}, {"input": [33.5, -51.0], "expected": 33.5}, {"input": [33.5, -50.5], "expected": 33.5}, {"input": [33.5, -50.0], "expected": 33.5}, {"input": [33.5, -49.5], "expected": 33.5}, {"input": [33.5, -49.0], "expected": 33.5}, {"input": [33.5, -48.5], "expected": 33.5}, {"input": [33.5, -48.0], "expected": 33.5}, {"input": [33.5, -47.5], "expected": 33.5}, {"input": [33.5, -47.0], "expected": 33.5}, {"input": [33.5, -46.5], "expected": 33.5}, {"input": [33.5, -46.0], "expected": 33.5}, {"input": [33.5, -45.5], "expected": 33.5}, {"input": [33.5, -45.0], "expected": 33.5}, {"input": [33.5, -44.5], "expected": 33.5}, {"input": [33.5, -44.0], "expected": 33.5}, {"input": [33.5, -43.5], "expected": 33.5}, {"input": [33.5, -43.0], "expected": 33.5}, {"input": [33.5, -42.5], "expected": 33.5}, {"input": [33.5, -42.0], "expected": 33.5}, {"input": [33.5, -41.5], "expected": 33.5}, {"input": [33.5, -41.0], "expected": 33.5}, {"input": [33.5, -40.5], "expected": 33.5}, {"input": [33.5, -40.0], "expected": 33.5}, {"input": [33.5, -39.5], "expected": 33.5}, {"input": [33.5, -39.0], "expected": 33.5}, {"input": [33.5, -38.5], "expected": 33.5}, {"input": [33.5, -38.0], "expected": 33.5}, {"input": [33.5, -37.5], "expected": 33.5}, {"input": [33.5, -37.0], "expected": 33.5}, {"input": [33.5, -36.5], "expected": 33.5}, {"input": [33.5, -36.0], "expected": 33.5}, {"input": [33.5, -35.5], "expected": 33.5}, {"input": [33.5, -35.0], "expected": 33.5}, {"input": [33.5, -34.5], "expected": 33.5}, {"input": [33.5, -34.0], "expected": 33.5}, {"input": [33.5, -33.5], "expected": 33.5}, {"input": [33.5, -33.0], "expected": 33.5}, {"input": [33.5, -32.5], "expected": 33.5}, {"input": [33.5, -32.0], "expected": 33.5}, {"input": [33.5, -31.5], "expected": 33.5}, {"input": [33.5, -31.0], "expected": 33.5}, {"input": [33.5, -30.5], "expected": 33.5}, {"input": [33.5, -30.0], "expected": 33.5}, {"input": [33.5, -29.5], "expected": 33.5}, {"input": [33.5, -29.0], "expected": 33.5}, {"input": [33.5, -28.5], "expected": 33.5}, {"input": [33.5, -28.0], "expected": 33.5}, {"input": [33.5, -27.5], "expected": 33.5}, {"input": [33.5, -27.0], "expected": 33.5}, {"input": [33.5, -26.5], "expected": 33.5}, {"input": [33.5, -26.0], "expected": 33.5}, {"input": [33.5, -25.5], "expected": 33.5}, {"input": [33.5, -25.0], "expected": 33.5}, {"input": [33.5, -24.5], "expected": 33.5}, {"input": [33.5, -24.0], "expected": 33.5}, {"input": [33.5, -23.5], "expected": 33.5}, {"input": [33.5, -23.0], "expected": 33.5}, {"input": [33.5, -22.5], "expected": 33.5}, {"input": [33.5, -22.0], "expected": 33.5}, {"input": [33.5, -21.5], "expected": 33.5}, {"input": [33.5, -21.0], "expected": 33.5}, {"input": [33.5, -20.5], "expected": 33.5}, {"input": [33.5, -20.0], "expected": 33.5}, {"input": [33.5, -19.5], "expected": 33.5}, {"input": [33.5, -19.0], "expected": 33.5}, {"input": [33.5, -18.5], "expected": 33.5}, {"input": [33.5, -18.0], "expected": 33.5}, {"input": [33.5, -17.5], "expected": 33.5}, {"input": [33.5, -17.0], "expected": 33.5}, {"input": [33.5, -16.5], "expected": 33.5}, {"input": [33.5, -16.0], "expected": 33.5}, {"input": [33.5, -15.5], "expected": 33.5}, {"input": [33.5, -15.0], "expected": 33.5}, {"input": [33.5, -14.5], "expected": 33.5}, {"input": [33.5, -14.0], "expected": 33.5}, {"input": [33.5, -13.5], "expected": 33.5}, {"input": [33.5, -13.0], "expected": 33.5}, {"input": [33.5, -12.5], "expected": 33.5}, {"input": [33.5, -12.0], "expected": 33.5}, {"input": [33.5, -11.5], "expected": 33.5}, {"input": [33.5, -11.0], "expected": 33.5}, {"input": [33.5, -10.5], "expected": 33.5}, {"input": [33.5, -10.0], "expected": 33.5}, {"input": [33.5, -9.5], "expected": 33.5}, {"input": [33.5, -9.0], "expected": 33.5}, {"input": [33.5, -8.5], "expected": 33.5}, {"input": [33.5, -8.0], "expected": 33.5}, {"input": [33.5, -7.5], "expected": 33.5}, {"input": [33.5, -7.0], "expected": 33.5}, {"input": [33.5, -6.5], "expected": 33.5}, {"input": [33.5, -6.0], "expected": 33.5}, {"input": [33.5, -5.5], "expected": 33.5}, {"input": [33.5, -5.0], "expected": 33.5}, {"input": [33.5, -4.5], "expected": 33.5}, {"input": [33.5, -4.0], "expected": 33.5}, {"input": [33.5, -3.5], "expected": 33.5}, {"input": [33.5, -3.0], "expected": 33.5}, {"input": [33.5, -2.5], "expected": 33.5}, {"input": [33.5, -2.0], "expected": 33.5}, {"input": [33.5, -1.5], "expected": 33.5}, {"input": [33.5, -1.0], "expected": 33.5}, {"input": [33.5, -0.5], "expected": 33.5}, {"input": [33.5, 0.0], "expected": 33.5}, {"input": [33.5, 0.5], "expected": 33.50000000000001}, {"input": [33.5, 1.0], "expected": 33.50000000000001}, {"input": [33.5, 1.5], "expected": 33.500000000000014}, {"input": [33.5, 2.0], "expected": 33.50000000000002}, {"input": [33.5, 2.5], "expected": 33.500000000000036}, {"input": [33.5, 3.0], "expected": 33.50000000000006}, {"input": [33.5, 3.5], "expected": 33.50000000000009}, {"input": [33.5, 4.0], "expected": 33.500000000000156}, {"input": [33.5, 4.5], "expected": 33.500000000000256}, {"input": [33.5, 5.0], "expected": 33.50000000000042}, {"input": [33.5, 5.5], "expected": 33.50000000000069}, {"input": [33.5, 6.0], "expected": 33.50000000000114}, {"input": [33.5, 6.5], "expected": 33.50000000000188}, {"input": [33.5, 7.0], "expected": 33.5000000000031}, {"input": [33.5, 7.5], "expected": 33.50000000000511}, {"input": [33.5, 8.0], "expected": 33.50000000000842}, {"input": [33.5, 8.5], "expected": 33.50000000001389}, {"input": [33.5, 9.0], "expected": 33.5000000000229}, {"input": [33.5, 9.5], "expected": 33.50000000003775}, {"input": [33.5, 10.0], "expected": 33.50000000006224}, {"input": [33.5, 10.5], "expected": 33.50000000010262}, {"input": [33.5, 11.0], "expected": 33.50000000016919}, {"input": [33.5, 11.5], "expected": 33.500000000278945}, {"input": [33.5, 12.0], "expected": 33.500000000459906}, {"input": [33.5, 12.5], "expected": 33.500000000758256}, {"input": [33.5, 13.0], "expected": 33.50000000125015}, {"input": [33.5, 13.5], "expected": 33.50000000206116}, {"input": [33.5, 14.0], "expected": 33.50000000339827}, {"input": [33.5, 14.5], "expected": 33.50000000560279}, {"input": [33.5, 15.0], "expected": 33.500000009237446}, {"input": [33.5, 15.5], "expected": 33.50000001522998}, {"input": [33.5, 16.0], "expected": 33.50000002510999}, {"input": [33.5, 16.5], "expected": 33.500000041399375}, {"input": [33.5, 17.0], "expected": 33.50000006825603}, {"input": [33.5, 17.5], "expected": 33.50000011253517}, {"input": [33.5, 18.0], "expected": 33.50000018553912}, {"input": [33.5, 18.5], "expected": 33.500000305902276}, {"input": [33.5, 19.0], "expected": 33.50000050434753}, {"input": [33.5, 19.5], "expected": 33.500000831528375}, {"input": [33.5, 20.0], "expected": 33.500001370958145}, {"input": [33.5, 20.5], "expected": 33.50000226032685}, {"input": [33.5, 21.0], "expected": 33.50000372664623}, {"input": [33.5, 21.5], "expected": 33.50000614419348}, {"input": [33.5, 22.0], "expected": 33.50001013004229}, {"input": [33.5, 22.5], "expected": 33.50001670156132}, {"input": [33.5, 23.0], "expected": 33.50002753607023}, {"input": [33.5, 23.5], "expected": 33.50004539889922}, {"input": [33.5, 24.0], "expected": 33.50007484902863}, {"input": [33.5, 24.5], "expected": 33.50012340218972}, {"input": [33.5, 25.0], "expected": 33.50020344767213}, {"input": [33.5, 25.5], "expected": 33.5003354063729}, {"input": [33.5, 26.0], "expected": 33.50055293147536}, {"input": [33.5, 26.5], "expected": 33.50091146645377}, {"input": [33.5, 27.0], "expected": 33.50150231015976}, {"input": [33.5, 27.5], "expected": 33.50247568513773}, {"input": [33.5, 28.0], "expected": 33.50407844327057}, {"input": [33.5, 28.5], "expected": 33.50671534848912}, {"input": [33.5, 29.0], "expected": 33.5110477448486}, {"input": [33.5, 29.5], "expected": 33.51814992791781}, {"input": [33.5, 30.0], "expected": 33.52975041827262}, {"input": [33.5, 30.5], "expected": 33.548587351573744}, {"input": [33.5, 31.0], "expected": 33.57888973429255}, {"input": [33.5, 31.5], "expected": 33.62692801104297}, {"input": [33.5, 32.0], "expected": 33.70141327798275}, {"input": [33.5, 32.5], "expected": 33.81326168751822}, {"input": [33.5, 33.0], "expected": 33.97407698418011}, {"input": [33.5, 33.5], "expected": 34.19314718055995}, {"input": [33.5, 34.0], "expected": 34.47407698418011}, {"input": [33.5, 34.5], "expected": 34.81326168751822}, {"input": [33.5, 35.0], "expected": 35.20141327798275}, {"input": [33.5, 35.5], "expected": 35.62692801104297}, {"input": [33.5, 36.0], "expected": 36.07888973429255}, {"input": [33.5, 36.5], "expected": 36.548587351573744}, {"input": [33.5, 37.0], "expected": 37.02975041827262}, {"input": [33.5, 37.5], "expected": 37.51814992791781}, {"input": [33.5, 38.0], "expected": 38.0110477448486}, {"input": [33.5, 38.5], "expected": 38.50671534848912}, {"input": [33.5, 39.0], "expected": 39.00407844327057}, {"input": [33.5, 39.5], "expected": 39.50247568513773}, {"input": [33.5, 40.0], "expected": 40.00150231015976}, {"input": [33.5, 40.5], "expected": 40.50091146645377}, {"input": [33.5, 41.0], "expected": 41.00055293147536}, {"input": [33.5, 41.5], "expected": 41.5003354063729}, {"input": [33.5, 42.0], "expected": 42.00020344767213}, {"input": [33.5, 42.5], "expected": 42.50012340218972}, {"input": [33.5, 43.0], "expected": 43.00007484902863}, {"input": [33.5, 43.5], "expected": 43.50004539889922}, {"input": [33.5, 44.0], "expected": 44.00002753607023}, {"input": [33.5, 44.5], "expected": 44.50001670156132}, {"input": [33.5, 45.0], "expected": 45.00001013004229}, {"input": [33.5, 45.5], "expected": 45.50000614419348}, {"input": [33.5, 46.0], "expected": 46.00000372664623}, {"input": [33.5, 46.5], "expected": 46.50000226032685}, {"input": [33.5, 47.0], "expected": 47.000001370958145}, {"input": [33.5, 47.5], "expected": 47.500000831528375}, {"input": [33.5, 48.0], "expected": 48.00000050434753}, {"input": [33.5, 48.5], "expected": 48.500000305902276}, {"input": [33.5, 49.0], "expected": 49.00000018553912}, {"input": [33.5, 49.5], "expected": 49.50000011253517}, {"input": [33.5, 50.0], "expected": 50.00000006825603}, {"input": [33.5, 50.5], "expected": 50.500000041399375}, {"input": [33.5, 51.0], "expected": 51.00000002510999}, {"input": [33.5, 51.5], "expected": 51.50000001522998}, {"input": [33.5, 52.0], "expected": 52.000000009237446}, {"input": [33.5, 52.5], "expected": 52.50000000560279}, {"input": [33.5, 53.0], "expected": 53.00000000339827}, {"input": [33.5, 53.5], "expected": 53.50000000206116}, {"input": [33.5, 54.0], "expected": 54.00000000125015}, {"input": [33.5, 54.5], "expected": 54.500000000758256}, {"input": [33.5, 55.0], "expected": 55.000000000459906}, {"input": [33.5, 55.5], "expected": 55.500000000278945}, {"input": [33.5, 56.0], "expected": 56.00000000016919}, {"input": [33.5, 56.5], "expected": 56.50000000010262}, {"input": [33.5, 57.0], "expected": 57.00000000006224}, {"input": [33.5, 57.5], "expected": 57.50000000003775}, {"input": [33.5, 58.0], "expected": 58.0000000000229}, {"input": [33.5, 58.5], "expected": 58.50000000001389}, {"input": [33.5, 59.0], "expected": 59.00000000000842}, {"input": [33.5, 59.5], "expected": 59.50000000000511}, {"input": [33.5, 60.0], "expected": 60.0000000000031}, {"input": [33.5, 60.5], "expected": 60.50000000000188}, {"input": [33.5, 61.0], "expected": 61.00000000000114}, {"input": [33.5, 61.5], "expected": 61.50000000000069}, {"input": [33.5, 62.0], "expected": 62.00000000000042}, {"input": [33.5, 62.5], "expected": 62.500000000000256}, {"input": [33.5, 63.0], "expected": 63.000000000000156}, {"input": [33.5, 63.5], "expected": 63.50000000000009}, {"input": [33.5, 64.0], "expected": 64.00000000000006}, {"input": [33.5, 64.5], "expected": 64.50000000000003}, {"input": [33.5, 65.0], "expected": 65.00000000000001}, {"input": [33.5, 65.5], "expected": 65.50000000000001}, {"input": [33.5, 66.0], "expected": 66.00000000000001}, {"input": [33.5, 66.5], "expected": 66.5}, {"input": [33.5, 67.0], "expected": 67.0}, {"input": [33.5, 67.5], "expected": 67.5}, {"input": [33.5, 68.0], "expected": 68.0}, {"input": [33.5, 68.5], "expected": 68.5}, {"input": [33.5, 69.0], "expected": 69.0}, {"input": [33.5, 69.5], "expected": 69.5}, {"input": [33.5, 70.0], "expected": 70.0}, {"input": [33.5, 70.5], "expected": 70.5}, {"input": [33.5, 71.0], "expected": 71.0}, {"input": [33.5, 71.5], "expected": 71.5}, {"input": [33.5, 72.0], "expected": 72.0}, {"input": [33.5, 72.5], "expected": 72.5}, {"input": [33.5, 73.0], "expected": 73.0}, {"input": [33.5, 73.5], "expected": 73.5}, {"input": [33.5, 74.0], "expected": 74.0}, {"input": [33.5, 74.5], "expected": 74.5}, {"input": [33.5, 75.0], "expected": 75.0}, {"input": [33.5, 75.5], "expected": 75.5}, {"input": [33.5, 76.0], "expected": 76.0}, {"input": [33.5, 76.5], "expected": 76.5}, {"input": [33.5, 77.0], "expected": 77.0}, {"input": [33.5, 77.5], "expected": 77.5}, {"input": [33.5, 78.0], "expected": 78.0}, {"input": [33.5, 78.5], "expected": 78.5}, {"input": [33.5, 79.0], "expected": 79.0}, {"input": [33.5, 79.5], "expected": 79.5}, {"input": [33.5, 80.0], "expected": 80.0}, {"input": [33.5, 80.5], "expected": 80.5}, {"input": [33.5, 81.0], "expected": 81.0}, {"input": [33.5, 81.5], "expected": 81.5}, {"input": [33.5, 82.0], "expected": 82.0}, {"input": [33.5, 82.5], "expected": 82.5}, {"input": [33.5, 83.0], "expected": 83.0}, {"input": [33.5, 83.5], "expected": 83.5}, {"input": [33.5, 84.0], "expected": 84.0}, {"input": [33.5, 84.5], "expected": 84.5}, {"input": [33.5, 85.0], "expected": 85.0}, {"input": [33.5, 85.5], "expected": 85.5}, {"input": [33.5, 86.0], "expected": 86.0}, {"input": [33.5, 86.5], "expected": 86.5}, {"input": [33.5, 87.0], "expected": 87.0}, {"input": [33.5, 87.5], "expected": 87.5}, {"input": [33.5, 88.0], "expected": 88.0}, {"input": [33.5, 88.5], "expected": 88.5}, {"input": [33.5, 89.0], "expected": 89.0}, {"input": [33.5, 89.5], "expected": 89.5}, {"input": [33.5, 90.0], "expected": 90.0}, {"input": [33.5, 90.5], "expected": 90.5}, {"input": [33.5, 91.0], "expected": 91.0}, {"input": [33.5, 91.5], "expected": 91.5}, {"input": [33.5, 92.0], "expected": 92.0}, {"input": [33.5, 92.5], "expected": 92.5}, {"input": [33.5, 93.0], "expected": 93.0}, {"input": [33.5, 93.5], "expected": 93.5}, {"input": [33.5, 94.0], "expected": 94.0}, {"input": [33.5, 94.5], "expected": 94.5}, {"input": [33.5, 95.0], "expected": 95.0}, {"input": [33.5, 95.5], "expected": 95.5}, {"input": [33.5, 96.0], "expected": 96.0}, {"input": [33.5, 96.5], "expected": 96.5}, {"input": [33.5, 97.0], "expected": 97.0}, {"input": [33.5, 97.5], "expected": 97.5}, {"input": [33.5, 98.0], "expected": 98.0}, {"input": [33.5, 98.5], "expected": 98.5}, {"input": [33.5, 99.0], "expected": 99.0}, {"input": [33.5, 99.5], "expected": 99.5}, {"input": [34.0, -100.0], "expected": 34.0}, {"input": [34.0, -99.5], "expected": 34.0}, {"input": [34.0, -99.0], "expected": 34.0}, {"input": [34.0, -98.5], "expected": 34.0}, {"input": [34.0, -98.0], "expected": 34.0}, {"input": [34.0, -97.5], "expected": 34.0}, {"input": [34.0, -97.0], "expected": 34.0}, {"input": [34.0, -96.5], "expected": 34.0}, {"input": [34.0, -96.0], "expected": 34.0}, {"input": [34.0, -95.5], "expected": 34.0}, {"input": [34.0, -95.0], "expected": 34.0}, {"input": [34.0, -94.5], "expected": 34.0}, {"input": [34.0, -94.0], "expected": 34.0}, {"input": [34.0, -93.5], "expected": 34.0}, {"input": [34.0, -93.0], "expected": 34.0}, {"input": [34.0, -92.5], "expected": 34.0}, {"input": [34.0, -92.0], "expected": 34.0}, {"input": [34.0, -91.5], "expected": 34.0}, {"input": [34.0, -91.0], "expected": 34.0}, {"input": [34.0, -90.5], "expected": 34.0}, {"input": [34.0, -90.0], "expected": 34.0}, {"input": [34.0, -89.5], "expected": 34.0}, {"input": [34.0, -89.0], "expected": 34.0}, {"input": [34.0, -88.5], "expected": 34.0}, {"input": [34.0, -88.0], "expected": 34.0}, {"input": [34.0, -87.5], "expected": 34.0}, {"input": [34.0, -87.0], "expected": 34.0}, {"input": [34.0, -86.5], "expected": 34.0}, {"input": [34.0, -86.0], "expected": 34.0}, {"input": [34.0, -85.5], "expected": 34.0}, {"input": [34.0, -85.0], "expected": 34.0}, {"input": [34.0, -84.5], "expected": 34.0}, {"input": [34.0, -84.0], "expected": 34.0}, {"input": [34.0, -83.5], "expected": 34.0}, {"input": [34.0, -83.0], "expected": 34.0}, {"input": [34.0, -82.5], "expected": 34.0}, {"input": [34.0, -82.0], "expected": 34.0}, {"input": [34.0, -81.5], "expected": 34.0}, {"input": [34.0, -81.0], "expected": 34.0}, {"input": [34.0, -80.5], "expected": 34.0}, {"input": [34.0, -80.0], "expected": 34.0}, {"input": [34.0, -79.5], "expected": 34.0}, {"input": [34.0, -79.0], "expected": 34.0}, {"input": [34.0, -78.5], "expected": 34.0}, {"input": [34.0, -78.0], "expected": 34.0}, {"input": [34.0, -77.5], "expected": 34.0}, {"input": [34.0, -77.0], "expected": 34.0}, {"input": [34.0, -76.5], "expected": 34.0}, {"input": [34.0, -76.0], "expected": 34.0}, {"input": [34.0, -75.5], "expected": 34.0}, {"input": [34.0, -75.0], "expected": 34.0}, {"input": [34.0, -74.5], "expected": 34.0}, {"input": [34.0, -74.0], "expected": 34.0}, {"input": [34.0, -73.5], "expected": 34.0}, {"input": [34.0, -73.0], "expected": 34.0}, {"input": [34.0, -72.5], "expected": 34.0}, {"input": [34.0, -72.0], "expected": 34.0}, {"input": [34.0, -71.5], "expected": 34.0}, {"input": [34.0, -71.0], "expected": 34.0}, {"input": [34.0, -70.5], "expected": 34.0}, {"input": [34.0, -70.0], "expected": 34.0}, {"input": [34.0, -69.5], "expected": 34.0}, {"input": [34.0, -69.0], "expected": 34.0}, {"input": [34.0, -68.5], "expected": 34.0}, {"input": [34.0, -68.0], "expected": 34.0}, {"input": [34.0, -67.5], "expected": 34.0}, {"input": [34.0, -67.0], "expected": 34.0}, {"input": [34.0, -66.5], "expected": 34.0}, {"input": [34.0, -66.0], "expected": 34.0}, {"input": [34.0, -65.5], "expected": 34.0}, {"input": [34.0, -65.0], "expected": 34.0}, {"input": [34.0, -64.5], "expected": 34.0}, {"input": [34.0, -64.0], "expected": 34.0}, {"input": [34.0, -63.5], "expected": 34.0}, {"input": [34.0, -63.0], "expected": 34.0}, {"input": [34.0, -62.5], "expected": 34.0}, {"input": [34.0, -62.0], "expected": 34.0}, {"input": [34.0, -61.5], "expected": 34.0}, {"input": [34.0, -61.0], "expected": 34.0}, {"input": [34.0, -60.5], "expected": 34.0}, {"input": [34.0, -60.0], "expected": 34.0}, {"input": [34.0, -59.5], "expected": 34.0}, {"input": [34.0, -59.0], "expected": 34.0}, {"input": [34.0, -58.5], "expected": 34.0}, {"input": [34.0, -58.0], "expected": 34.0}, {"input": [34.0, -57.5], "expected": 34.0}, {"input": [34.0, -57.0], "expected": 34.0}, {"input": [34.0, -56.5], "expected": 34.0}, {"input": [34.0, -56.0], "expected": 34.0}, {"input": [34.0, -55.5], "expected": 34.0}, {"input": [34.0, -55.0], "expected": 34.0}, {"input": [34.0, -54.5], "expected": 34.0}, {"input": [34.0, -54.0], "expected": 34.0}, {"input": [34.0, -53.5], "expected": 34.0}, {"input": [34.0, -53.0], "expected": 34.0}, {"input": [34.0, -52.5], "expected": 34.0}, {"input": [34.0, -52.0], "expected": 34.0}, {"input": [34.0, -51.5], "expected": 34.0}, {"input": [34.0, -51.0], "expected": 34.0}, {"input": [34.0, -50.5], "expected": 34.0}, {"input": [34.0, -50.0], "expected": 34.0}, {"input": [34.0, -49.5], "expected": 34.0}, {"input": [34.0, -49.0], "expected": 34.0}, {"input": [34.0, -48.5], "expected": 34.0}, {"input": [34.0, -48.0], "expected": 34.0}, {"input": [34.0, -47.5], "expected": 34.0}, {"input": [34.0, -47.0], "expected": 34.0}, {"input": [34.0, -46.5], "expected": 34.0}, {"input": [34.0, -46.0], "expected": 34.0}, {"input": [34.0, -45.5], "expected": 34.0}, {"input": [34.0, -45.0], "expected": 34.0}, {"input": [34.0, -44.5], "expected": 34.0}, {"input": [34.0, -44.0], "expected": 34.0}, {"input": [34.0, -43.5], "expected": 34.0}, {"input": [34.0, -43.0], "expected": 34.0}, {"input": [34.0, -42.5], "expected": 34.0}, {"input": [34.0, -42.0], "expected": 34.0}, {"input": [34.0, -41.5], "expected": 34.0}, {"input": [34.0, -41.0], "expected": 34.0}, {"input": [34.0, -40.5], "expected": 34.0}, {"input": [34.0, -40.0], "expected": 34.0}, {"input": [34.0, -39.5], "expected": 34.0}, {"input": [34.0, -39.0], "expected": 34.0}, {"input": [34.0, -38.5], "expected": 34.0}, {"input": [34.0, -38.0], "expected": 34.0}, {"input": [34.0, -37.5], "expected": 34.0}, {"input": [34.0, -37.0], "expected": 34.0}, {"input": [34.0, -36.5], "expected": 34.0}, {"input": [34.0, -36.0], "expected": 34.0}, {"input": [34.0, -35.5], "expected": 34.0}, {"input": [34.0, -35.0], "expected": 34.0}, {"input": [34.0, -34.5], "expected": 34.0}, {"input": [34.0, -34.0], "expected": 34.0}, {"input": [34.0, -33.5], "expected": 34.0}, {"input": [34.0, -33.0], "expected": 34.0}, {"input": [34.0, -32.5], "expected": 34.0}, {"input": [34.0, -32.0], "expected": 34.0}, {"input": [34.0, -31.5], "expected": 34.0}, {"input": [34.0, -31.0], "expected": 34.0}, {"input": [34.0, -30.5], "expected": 34.0}, {"input": [34.0, -30.0], "expected": 34.0}, {"input": [34.0, -29.5], "expected": 34.0}, {"input": [34.0, -29.0], "expected": 34.0}, {"input": [34.0, -28.5], "expected": 34.0}, {"input": [34.0, -28.0], "expected": 34.0}, {"input": [34.0, -27.5], "expected": 34.0}, {"input": [34.0, -27.0], "expected": 34.0}, {"input": [34.0, -26.5], "expected": 34.0}, {"input": [34.0, -26.0], "expected": 34.0}, {"input": [34.0, -25.5], "expected": 34.0}, {"input": [34.0, -25.0], "expected": 34.0}, {"input": [34.0, -24.5], "expected": 34.0}, {"input": [34.0, -24.0], "expected": 34.0}, {"input": [34.0, -23.5], "expected": 34.0}, {"input": [34.0, -23.0], "expected": 34.0}, {"input": [34.0, -22.5], "expected": 34.0}, {"input": [34.0, -22.0], "expected": 34.0}, {"input": [34.0, -21.5], "expected": 34.0}, {"input": [34.0, -21.0], "expected": 34.0}, {"input": [34.0, -20.5], "expected": 34.0}, {"input": [34.0, -20.0], "expected": 34.0}, {"input": [34.0, -19.5], "expected": 34.0}, {"input": [34.0, -19.0], "expected": 34.0}, {"input": [34.0, -18.5], "expected": 34.0}, {"input": [34.0, -18.0], "expected": 34.0}, {"input": [34.0, -17.5], "expected": 34.0}, {"input": [34.0, -17.0], "expected": 34.0}, {"input": [34.0, -16.5], "expected": 34.0}, {"input": [34.0, -16.0], "expected": 34.0}, {"input": [34.0, -15.5], "expected": 34.0}, {"input": [34.0, -15.0], "expected": 34.0}, {"input": [34.0, -14.5], "expected": 34.0}, {"input": [34.0, -14.0], "expected": 34.0}, {"input": [34.0, -13.5], "expected": 34.0}, {"input": [34.0, -13.0], "expected": 34.0}, {"input": [34.0, -12.5], "expected": 34.0}, {"input": [34.0, -12.0], "expected": 34.0}, {"input": [34.0, -11.5], "expected": 34.0}, {"input": [34.0, -11.0], "expected": 34.0}, {"input": [34.0, -10.5], "expected": 34.0}, {"input": [34.0, -10.0], "expected": 34.0}, {"input": [34.0, -9.5], "expected": 34.0}, {"input": [34.0, -9.0], "expected": 34.0}, {"input": [34.0, -8.5], "expected": 34.0}, {"input": [34.0, -8.0], "expected": 34.0}, {"input": [34.0, -7.5], "expected": 34.0}, {"input": [34.0, -7.0], "expected": 34.0}, {"input": [34.0, -6.5], "expected": 34.0}, {"input": [34.0, -6.0], "expected": 34.0}, {"input": [34.0, -5.5], "expected": 34.0}, {"input": [34.0, -5.0], "expected": 34.0}, {"input": [34.0, -4.5], "expected": 34.0}, {"input": [34.0, -4.0], "expected": 34.0}, {"input": [34.0, -3.5], "expected": 34.0}, {"input": [34.0, -3.0], "expected": 34.0}, {"input": [34.0, -2.5], "expected": 34.0}, {"input": [34.0, -2.0], "expected": 34.0}, {"input": [34.0, -1.5], "expected": 34.0}, {"input": [34.0, -1.0], "expected": 34.0}, {"input": [34.0, -0.5], "expected": 34.0}, {"input": [34.0, 0.0], "expected": 34.0}, {"input": [34.0, 0.5], "expected": 34.0}, {"input": [34.0, 1.0], "expected": 34.00000000000001}, {"input": [34.0, 1.5], "expected": 34.00000000000001}, {"input": [34.0, 2.0], "expected": 34.000000000000014}, {"input": [34.0, 2.5], "expected": 34.00000000000002}, {"input": [34.0, 3.0], "expected": 34.000000000000036}, {"input": [34.0, 3.5], "expected": 34.00000000000006}, {"input": [34.0, 4.0], "expected": 34.00000000000009}, {"input": [34.0, 4.5], "expected": 34.000000000000156}, {"input": [34.0, 5.0], "expected": 34.000000000000256}, {"input": [34.0, 5.5], "expected": 34.00000000000042}, {"input": [34.0, 6.0], "expected": 34.00000000000069}, {"input": [34.0, 6.5], "expected": 34.00000000000114}, {"input": [34.0, 7.0], "expected": 34.00000000000188}, {"input": [34.0, 7.5], "expected": 34.0000000000031}, {"input": [34.0, 8.0], "expected": 34.00000000000511}, {"input": [34.0, 8.5], "expected": 34.00000000000842}, {"input": [34.0, 9.0], "expected": 34.00000000001389}, {"input": [34.0, 9.5], "expected": 34.0000000000229}, {"input": [34.0, 10.0], "expected": 34.00000000003775}, {"input": [34.0, 10.5], "expected": 34.00000000006224}, {"input": [34.0, 11.0], "expected": 34.00000000010262}, {"input": [34.0, 11.5], "expected": 34.00000000016919}, {"input": [34.0, 12.0], "expected": 34.000000000278945}, {"input": [34.0, 12.5], "expected": 34.000000000459906}, {"input": [34.0, 13.0], "expected": 34.000000000758256}, {"input": [34.0, 13.5], "expected": 34.00000000125015}, {"input": [34.0, 14.0], "expected": 34.00000000206116}, {"input": [34.0, 14.5], "expected": 34.00000000339827}, {"input": [34.0, 15.0], "expected": 34.00000000560279}, {"input": [34.0, 15.5], "expected": 34.000000009237446}, {"input": [34.0, 16.0], "expected": 34.00000001522998}, {"input": [34.0, 16.5], "expected": 34.00000002510999}, {"input": [34.0, 17.0], "expected": 34.000000041399375}, {"input": [34.0, 17.5], "expected": 34.00000006825603}, {"input": [34.0, 18.0], "expected": 34.00000011253517}, {"input": [34.0, 18.5], "expected": 34.00000018553912}, {"input": [34.0, 19.0], "expected": 34.000000305902276}, {"input": [34.0, 19.5], "expected": 34.00000050434753}, {"input": [34.0, 20.0], "expected": 34.000000831528375}, {"input": [34.0, 20.5], "expected": 34.000001370958145}, {"input": [34.0, 21.0], "expected": 34.00000226032685}, {"input": [34.0, 21.5], "expected": 34.00000372664623}, {"input": [34.0, 22.0], "expected": 34.00000614419348}, {"input": [34.0, 22.5], "expected": 34.00001013004229}, {"input": [34.0, 23.0], "expected": 34.00001670156132}, {"input": [34.0, 23.5], "expected": 34.00002753607023}, {"input": [34.0, 24.0], "expected": 34.00004539889922}, {"input": [34.0, 24.5], "expected": 34.00007484902863}, {"input": [34.0, 25.0], "expected": 34.00012340218972}, {"input": [34.0, 25.5], "expected": 34.00020344767213}, {"input": [34.0, 26.0], "expected": 34.0003354063729}, {"input": [34.0, 26.5], "expected": 34.00055293147536}, {"input": [34.0, 27.0], "expected": 34.00091146645377}, {"input": [34.0, 27.5], "expected": 34.00150231015976}, {"input": [34.0, 28.0], "expected": 34.00247568513773}, {"input": [34.0, 28.5], "expected": 34.00407844327057}, {"input": [34.0, 29.0], "expected": 34.00671534848912}, {"input": [34.0, 29.5], "expected": 34.0110477448486}, {"input": [34.0, 30.0], "expected": 34.01814992791781}, {"input": [34.0, 30.5], "expected": 34.02975041827262}, {"input": [34.0, 31.0], "expected": 34.048587351573744}, {"input": [34.0, 31.5], "expected": 34.07888973429255}, {"input": [34.0, 32.0], "expected": 34.12692801104297}, {"input": [34.0, 32.5], "expected": 34.20141327798275}, {"input": [34.0, 33.0], "expected": 34.31326168751822}, {"input": [34.0, 33.5], "expected": 34.47407698418011}, {"input": [34.0, 34.0], "expected": 34.69314718055995}, {"input": [34.0, 34.5], "expected": 34.97407698418011}, {"input": [34.0, 35.0], "expected": 35.31326168751822}, {"input": [34.0, 35.5], "expected": 35.70141327798275}, {"input": [34.0, 36.0], "expected": 36.12692801104297}, {"input": [34.0, 36.5], "expected": 36.57888973429255}, {"input": [34.0, 37.0], "expected": 37.048587351573744}, {"input": [34.0, 37.5], "expected": 37.52975041827262}, {"input": [34.0, 38.0], "expected": 38.01814992791781}, {"input": [34.0, 38.5], "expected": 38.5110477448486}, {"input": [34.0, 39.0], "expected": 39.00671534848912}, {"input": [34.0, 39.5], "expected": 39.50407844327057}, {"input": [34.0, 40.0], "expected": 40.00247568513773}, {"input": [34.0, 40.5], "expected": 40.50150231015976}, {"input": [34.0, 41.0], "expected": 41.00091146645377}, {"input": [34.0, 41.5], "expected": 41.50055293147536}, {"input": [34.0, 42.0], "expected": 42.0003354063729}, {"input": [34.0, 42.5], "expected": 42.50020344767213}, {"input": [34.0, 43.0], "expected": 43.00012340218972}, {"input": [34.0, 43.5], "expected": 43.50007484902863}, {"input": [34.0, 44.0], "expected": 44.00004539889922}, {"input": [34.0, 44.5], "expected": 44.50002753607023}, {"input": [34.0, 45.0], "expected": 45.00001670156132}, {"input": [34.0, 45.5], "expected": 45.50001013004229}, {"input": [34.0, 46.0], "expected": 46.00000614419348}, {"input": [34.0, 46.5], "expected": 46.50000372664623}, {"input": [34.0, 47.0], "expected": 47.00000226032685}, {"input": [34.0, 47.5], "expected": 47.500001370958145}, {"input": [34.0, 48.0], "expected": 48.000000831528375}, {"input": [34.0, 48.5], "expected": 48.50000050434753}, {"input": [34.0, 49.0], "expected": 49.000000305902276}, {"input": [34.0, 49.5], "expected": 49.50000018553912}, {"input": [34.0, 50.0], "expected": 50.00000011253517}, {"input": [34.0, 50.5], "expected": 50.50000006825603}, {"input": [34.0, 51.0], "expected": 51.000000041399375}, {"input": [34.0, 51.5], "expected": 51.50000002510999}, {"input": [34.0, 52.0], "expected": 52.00000001522998}, {"input": [34.0, 52.5], "expected": 52.500000009237446}, {"input": [34.0, 53.0], "expected": 53.00000000560279}, {"input": [34.0, 53.5], "expected": 53.50000000339827}, {"input": [34.0, 54.0], "expected": 54.00000000206116}, {"input": [34.0, 54.5], "expected": 54.50000000125015}, {"input": [34.0, 55.0], "expected": 55.000000000758256}, {"input": [34.0, 55.5], "expected": 55.500000000459906}, {"input": [34.0, 56.0], "expected": 56.000000000278945}, {"input": [34.0, 56.5], "expected": 56.50000000016919}, {"input": [34.0, 57.0], "expected": 57.00000000010262}, {"input": [34.0, 57.5], "expected": 57.50000000006224}, {"input": [34.0, 58.0], "expected": 58.00000000003775}, {"input": [34.0, 58.5], "expected": 58.5000000000229}, {"input": [34.0, 59.0], "expected": 59.00000000001389}, {"input": [34.0, 59.5], "expected": 59.50000000000842}, {"input": [34.0, 60.0], "expected": 60.00000000000511}, {"input": [34.0, 60.5], "expected": 60.5000000000031}, {"input": [34.0, 61.0], "expected": 61.00000000000188}, {"input": [34.0, 61.5], "expected": 61.50000000000114}, {"input": [34.0, 62.0], "expected": 62.00000000000069}, {"input": [34.0, 62.5], "expected": 62.50000000000042}, {"input": [34.0, 63.0], "expected": 63.000000000000256}, {"input": [34.0, 63.5], "expected": 63.500000000000156}, {"input": [34.0, 64.0], "expected": 64.0000000000001}, {"input": [34.0, 64.5], "expected": 64.50000000000006}, {"input": [34.0, 65.0], "expected": 65.00000000000003}, {"input": [34.0, 65.5], "expected": 65.50000000000001}, {"input": [34.0, 66.0], "expected": 66.00000000000001}, {"input": [34.0, 66.5], "expected": 66.50000000000001}, {"input": [34.0, 67.0], "expected": 67.0}, {"input": [34.0, 67.5], "expected": 67.5}, {"input": [34.0, 68.0], "expected": 68.0}, {"input": [34.0, 68.5], "expected": 68.5}, {"input": [34.0, 69.0], "expected": 69.0}, {"input": [34.0, 69.5], "expected": 69.5}, {"input": [34.0, 70.0], "expected": 70.0}, {"input": [34.0, 70.5], "expected": 70.5}, {"input": [34.0, 71.0], "expected": 71.0}, {"input": [34.0, 71.5], "expected": 71.5}, {"input": [34.0, 72.0], "expected": 72.0}, {"input": [34.0, 72.5], "expected": 72.5}, {"input": [34.0, 73.0], "expected": 73.0}, {"input": [34.0, 73.5], "expected": 73.5}, {"input": [34.0, 74.0], "expected": 74.0}, {"input": [34.0, 74.5], "expected": 74.5}, {"input": [34.0, 75.0], "expected": 75.0}, {"input": [34.0, 75.5], "expected": 75.5}, {"input": [34.0, 76.0], "expected": 76.0}, {"input": [34.0, 76.5], "expected": 76.5}, {"input": [34.0, 77.0], "expected": 77.0}, {"input": [34.0, 77.5], "expected": 77.5}, {"input": [34.0, 78.0], "expected": 78.0}, {"input": [34.0, 78.5], "expected": 78.5}, {"input": [34.0, 79.0], "expected": 79.0}, {"input": [34.0, 79.5], "expected": 79.5}, {"input": [34.0, 80.0], "expected": 80.0}, {"input": [34.0, 80.5], "expected": 80.5}, {"input": [34.0, 81.0], "expected": 81.0}, {"input": [34.0, 81.5], "expected": 81.5}, {"input": [34.0, 82.0], "expected": 82.0}, {"input": [34.0, 82.5], "expected": 82.5}, {"input": [34.0, 83.0], "expected": 83.0}, {"input": [34.0, 83.5], "expected": 83.5}, {"input": [34.0, 84.0], "expected": 84.0}, {"input": [34.0, 84.5], "expected": 84.5}, {"input": [34.0, 85.0], "expected": 85.0}, {"input": [34.0, 85.5], "expected": 85.5}, {"input": [34.0, 86.0], "expected": 86.0}, {"input": [34.0, 86.5], "expected": 86.5}, {"input": [34.0, 87.0], "expected": 87.0}, {"input": [34.0, 87.5], "expected": 87.5}, {"input": [34.0, 88.0], "expected": 88.0}, {"input": [34.0, 88.5], "expected": 88.5}, {"input": [34.0, 89.0], "expected": 89.0}, {"input": [34.0, 89.5], "expected": 89.5}, {"input": [34.0, 90.0], "expected": 90.0}, {"input": [34.0, 90.5], "expected": 90.5}, {"input": [34.0, 91.0], "expected": 91.0}, {"input": [34.0, 91.5], "expected": 91.5}, {"input": [34.0, 92.0], "expected": 92.0}, {"input": [34.0, 92.5], "expected": 92.5}, {"input": [34.0, 93.0], "expected": 93.0}, {"input": [34.0, 93.5], "expected": 93.5}, {"input": [34.0, 94.0], "expected": 94.0}, {"input": [34.0, 94.5], "expected": 94.5}, {"input": [34.0, 95.0], "expected": 95.0}, {"input": [34.0, 95.5], "expected": 95.5}, {"input": [34.0, 96.0], "expected": 96.0}, {"input": [34.0, 96.5], "expected": 96.5}, {"input": [34.0, 97.0], "expected": 97.0}, {"input": [34.0, 97.5], "expected": 97.5}, {"input": [34.0, 98.0], "expected": 98.0}, {"input": [34.0, 98.5], "expected": 98.5}, {"input": [34.0, 99.0], "expected": 99.0}, {"input": [34.0, 99.5], "expected": 99.5}, {"input": [34.5, -100.0], "expected": 34.5}, {"input": [34.5, -99.5], "expected": 34.5}, {"input": [34.5, -99.0], "expected": 34.5}, {"input": [34.5, -98.5], "expected": 34.5}, {"input": [34.5, -98.0], "expected": 34.5}, {"input": [34.5, -97.5], "expected": 34.5}, {"input": [34.5, -97.0], "expected": 34.5}, {"input": [34.5, -96.5], "expected": 34.5}, {"input": [34.5, -96.0], "expected": 34.5}, {"input": [34.5, -95.5], "expected": 34.5}, {"input": [34.5, -95.0], "expected": 34.5}, {"input": [34.5, -94.5], "expected": 34.5}, {"input": [34.5, -94.0], "expected": 34.5}, {"input": [34.5, -93.5], "expected": 34.5}, {"input": [34.5, -93.0], "expected": 34.5}, {"input": [34.5, -92.5], "expected": 34.5}, {"input": [34.5, -92.0], "expected": 34.5}, {"input": [34.5, -91.5], "expected": 34.5}, {"input": [34.5, -91.0], "expected": 34.5}, {"input": [34.5, -90.5], "expected": 34.5}, {"input": [34.5, -90.0], "expected": 34.5}, {"input": [34.5, -89.5], "expected": 34.5}, {"input": [34.5, -89.0], "expected": 34.5}, {"input": [34.5, -88.5], "expected": 34.5}, {"input": [34.5, -88.0], "expected": 34.5}, {"input": [34.5, -87.5], "expected": 34.5}, {"input": [34.5, -87.0], "expected": 34.5}, {"input": [34.5, -86.5], "expected": 34.5}, {"input": [34.5, -86.0], "expected": 34.5}, {"input": [34.5, -85.5], "expected": 34.5}, {"input": [34.5, -85.0], "expected": 34.5}, {"input": [34.5, -84.5], "expected": 34.5}, {"input": [34.5, -84.0], "expected": 34.5}, {"input": [34.5, -83.5], "expected": 34.5}, {"input": [34.5, -83.0], "expected": 34.5}, {"input": [34.5, -82.5], "expected": 34.5}, {"input": [34.5, -82.0], "expected": 34.5}, {"input": [34.5, -81.5], "expected": 34.5}, {"input": [34.5, -81.0], "expected": 34.5}, {"input": [34.5, -80.5], "expected": 34.5}, {"input": [34.5, -80.0], "expected": 34.5}, {"input": [34.5, -79.5], "expected": 34.5}, {"input": [34.5, -79.0], "expected": 34.5}, {"input": [34.5, -78.5], "expected": 34.5}, {"input": [34.5, -78.0], "expected": 34.5}, {"input": [34.5, -77.5], "expected": 34.5}, {"input": [34.5, -77.0], "expected": 34.5}, {"input": [34.5, -76.5], "expected": 34.5}, {"input": [34.5, -76.0], "expected": 34.5}, {"input": [34.5, -75.5], "expected": 34.5}, {"input": [34.5, -75.0], "expected": 34.5}, {"input": [34.5, -74.5], "expected": 34.5}, {"input": [34.5, -74.0], "expected": 34.5}, {"input": [34.5, -73.5], "expected": 34.5}, {"input": [34.5, -73.0], "expected": 34.5}, {"input": [34.5, -72.5], "expected": 34.5}, {"input": [34.5, -72.0], "expected": 34.5}, {"input": [34.5, -71.5], "expected": 34.5}, {"input": [34.5, -71.0], "expected": 34.5}, {"input": [34.5, -70.5], "expected": 34.5}, {"input": [34.5, -70.0], "expected": 34.5}, {"input": [34.5, -69.5], "expected": 34.5}, {"input": [34.5, -69.0], "expected": 34.5}, {"input": [34.5, -68.5], "expected": 34.5}, {"input": [34.5, -68.0], "expected": 34.5}, {"input": [34.5, -67.5], "expected": 34.5}, {"input": [34.5, -67.0], "expected": 34.5}, {"input": [34.5, -66.5], "expected": 34.5}, {"input": [34.5, -66.0], "expected": 34.5}, {"input": [34.5, -65.5], "expected": 34.5}, {"input": [34.5, -65.0], "expected": 34.5}, {"input": [34.5, -64.5], "expected": 34.5}, {"input": [34.5, -64.0], "expected": 34.5}, {"input": [34.5, -63.5], "expected": 34.5}, {"input": [34.5, -63.0], "expected": 34.5}, {"input": [34.5, -62.5], "expected": 34.5}, {"input": [34.5, -62.0], "expected": 34.5}, {"input": [34.5, -61.5], "expected": 34.5}, {"input": [34.5, -61.0], "expected": 34.5}, {"input": [34.5, -60.5], "expected": 34.5}, {"input": [34.5, -60.0], "expected": 34.5}, {"input": [34.5, -59.5], "expected": 34.5}, {"input": [34.5, -59.0], "expected": 34.5}, {"input": [34.5, -58.5], "expected": 34.5}, {"input": [34.5, -58.0], "expected": 34.5}, {"input": [34.5, -57.5], "expected": 34.5}, {"input": [34.5, -57.0], "expected": 34.5}, {"input": [34.5, -56.5], "expected": 34.5}, {"input": [34.5, -56.0], "expected": 34.5}, {"input": [34.5, -55.5], "expected": 34.5}, {"input": [34.5, -55.0], "expected": 34.5}, {"input": [34.5, -54.5], "expected": 34.5}, {"input": [34.5, -54.0], "expected": 34.5}, {"input": [34.5, -53.5], "expected": 34.5}, {"input": [34.5, -53.0], "expected": 34.5}, {"input": [34.5, -52.5], "expected": 34.5}, {"input": [34.5, -52.0], "expected": 34.5}, {"input": [34.5, -51.5], "expected": 34.5}, {"input": [34.5, -51.0], "expected": 34.5}, {"input": [34.5, -50.5], "expected": 34.5}, {"input": [34.5, -50.0], "expected": 34.5}, {"input": [34.5, -49.5], "expected": 34.5}, {"input": [34.5, -49.0], "expected": 34.5}, {"input": [34.5, -48.5], "expected": 34.5}, {"input": [34.5, -48.0], "expected": 34.5}, {"input": [34.5, -47.5], "expected": 34.5}, {"input": [34.5, -47.0], "expected": 34.5}, {"input": [34.5, -46.5], "expected": 34.5}, {"input": [34.5, -46.0], "expected": 34.5}, {"input": [34.5, -45.5], "expected": 34.5}, {"input": [34.5, -45.0], "expected": 34.5}, {"input": [34.5, -44.5], "expected": 34.5}, {"input": [34.5, -44.0], "expected": 34.5}, {"input": [34.5, -43.5], "expected": 34.5}, {"input": [34.5, -43.0], "expected": 34.5}, {"input": [34.5, -42.5], "expected": 34.5}, {"input": [34.5, -42.0], "expected": 34.5}, {"input": [34.5, -41.5], "expected": 34.5}, {"input": [34.5, -41.0], "expected": 34.5}, {"input": [34.5, -40.5], "expected": 34.5}, {"input": [34.5, -40.0], "expected": 34.5}, {"input": [34.5, -39.5], "expected": 34.5}, {"input": [34.5, -39.0], "expected": 34.5}, {"input": [34.5, -38.5], "expected": 34.5}, {"input": [34.5, -38.0], "expected": 34.5}, {"input": [34.5, -37.5], "expected": 34.5}, {"input": [34.5, -37.0], "expected": 34.5}, {"input": [34.5, -36.5], "expected": 34.5}, {"input": [34.5, -36.0], "expected": 34.5}, {"input": [34.5, -35.5], "expected": 34.5}, {"input": [34.5, -35.0], "expected": 34.5}, {"input": [34.5, -34.5], "expected": 34.5}, {"input": [34.5, -34.0], "expected": 34.5}, {"input": [34.5, -33.5], "expected": 34.5}, {"input": [34.5, -33.0], "expected": 34.5}, {"input": [34.5, -32.5], "expected": 34.5}, {"input": [34.5, -32.0], "expected": 34.5}, {"input": [34.5, -31.5], "expected": 34.5}, {"input": [34.5, -31.0], "expected": 34.5}, {"input": [34.5, -30.5], "expected": 34.5}, {"input": [34.5, -30.0], "expected": 34.5}, {"input": [34.5, -29.5], "expected": 34.5}, {"input": [34.5, -29.0], "expected": 34.5}, {"input": [34.5, -28.5], "expected": 34.5}, {"input": [34.5, -28.0], "expected": 34.5}, {"input": [34.5, -27.5], "expected": 34.5}, {"input": [34.5, -27.0], "expected": 34.5}, {"input": [34.5, -26.5], "expected": 34.5}, {"input": [34.5, -26.0], "expected": 34.5}, {"input": [34.5, -25.5], "expected": 34.5}, {"input": [34.5, -25.0], "expected": 34.5}, {"input": [34.5, -24.5], "expected": 34.5}, {"input": [34.5, -24.0], "expected": 34.5}, {"input": [34.5, -23.5], "expected": 34.5}, {"input": [34.5, -23.0], "expected": 34.5}, {"input": [34.5, -22.5], "expected": 34.5}, {"input": [34.5, -22.0], "expected": 34.5}, {"input": [34.5, -21.5], "expected": 34.5}, {"input": [34.5, -21.0], "expected": 34.5}, {"input": [34.5, -20.5], "expected": 34.5}, {"input": [34.5, -20.0], "expected": 34.5}, {"input": [34.5, -19.5], "expected": 34.5}, {"input": [34.5, -19.0], "expected": 34.5}, {"input": [34.5, -18.5], "expected": 34.5}, {"input": [34.5, -18.0], "expected": 34.5}, {"input": [34.5, -17.5], "expected": 34.5}, {"input": [34.5, -17.0], "expected": 34.5}, {"input": [34.5, -16.5], "expected": 34.5}, {"input": [34.5, -16.0], "expected": 34.5}, {"input": [34.5, -15.5], "expected": 34.5}, {"input": [34.5, -15.0], "expected": 34.5}, {"input": [34.5, -14.5], "expected": 34.5}, {"input": [34.5, -14.0], "expected": 34.5}, {"input": [34.5, -13.5], "expected": 34.5}, {"input": [34.5, -13.0], "expected": 34.5}, {"input": [34.5, -12.5], "expected": 34.5}, {"input": [34.5, -12.0], "expected": 34.5}, {"input": [34.5, -11.5], "expected": 34.5}, {"input": [34.5, -11.0], "expected": 34.5}, {"input": [34.5, -10.5], "expected": 34.5}, {"input": [34.5, -10.0], "expected": 34.5}, {"input": [34.5, -9.5], "expected": 34.5}, {"input": [34.5, -9.0], "expected": 34.5}, {"input": [34.5, -8.5], "expected": 34.5}, {"input": [34.5, -8.0], "expected": 34.5}, {"input": [34.5, -7.5], "expected": 34.5}, {"input": [34.5, -7.0], "expected": 34.5}, {"input": [34.5, -6.5], "expected": 34.5}, {"input": [34.5, -6.0], "expected": 34.5}, {"input": [34.5, -5.5], "expected": 34.5}, {"input": [34.5, -5.0], "expected": 34.5}, {"input": [34.5, -4.5], "expected": 34.5}, {"input": [34.5, -4.0], "expected": 34.5}, {"input": [34.5, -3.5], "expected": 34.5}, {"input": [34.5, -3.0], "expected": 34.5}, {"input": [34.5, -2.5], "expected": 34.5}, {"input": [34.5, -2.0], "expected": 34.5}, {"input": [34.5, -1.5], "expected": 34.5}, {"input": [34.5, -1.0], "expected": 34.5}, {"input": [34.5, -0.5], "expected": 34.5}, {"input": [34.5, 0.0], "expected": 34.5}, {"input": [34.5, 0.5], "expected": 34.5}, {"input": [34.5, 1.0], "expected": 34.5}, {"input": [34.5, 1.5], "expected": 34.50000000000001}, {"input": [34.5, 2.0], "expected": 34.50000000000001}, {"input": [34.5, 2.5], "expected": 34.500000000000014}, {"input": [34.5, 3.0], "expected": 34.50000000000002}, {"input": [34.5, 3.5], "expected": 34.500000000000036}, {"input": [34.5, 4.0], "expected": 34.50000000000006}, {"input": [34.5, 4.5], "expected": 34.50000000000009}, {"input": [34.5, 5.0], "expected": 34.500000000000156}, {"input": [34.5, 5.5], "expected": 34.500000000000256}, {"input": [34.5, 6.0], "expected": 34.50000000000042}, {"input": [34.5, 6.5], "expected": 34.50000000000069}, {"input": [34.5, 7.0], "expected": 34.50000000000114}, {"input": [34.5, 7.5], "expected": 34.50000000000188}, {"input": [34.5, 8.0], "expected": 34.5000000000031}, {"input": [34.5, 8.5], "expected": 34.50000000000511}, {"input": [34.5, 9.0], "expected": 34.50000000000842}, {"input": [34.5, 9.5], "expected": 34.50000000001389}, {"input": [34.5, 10.0], "expected": 34.5000000000229}, {"input": [34.5, 10.5], "expected": 34.50000000003775}, {"input": [34.5, 11.0], "expected": 34.50000000006224}, {"input": [34.5, 11.5], "expected": 34.50000000010262}, {"input": [34.5, 12.0], "expected": 34.50000000016919}, {"input": [34.5, 12.5], "expected": 34.500000000278945}, {"input": [34.5, 13.0], "expected": 34.500000000459906}, {"input": [34.5, 13.5], "expected": 34.500000000758256}, {"input": [34.5, 14.0], "expected": 34.50000000125015}, {"input": [34.5, 14.5], "expected": 34.50000000206116}, {"input": [34.5, 15.0], "expected": 34.50000000339827}, {"input": [34.5, 15.5], "expected": 34.50000000560279}, {"input": [34.5, 16.0], "expected": 34.500000009237446}, {"input": [34.5, 16.5], "expected": 34.50000001522998}, {"input": [34.5, 17.0], "expected": 34.50000002510999}, {"input": [34.5, 17.5], "expected": 34.500000041399375}, {"input": [34.5, 18.0], "expected": 34.50000006825603}, {"input": [34.5, 18.5], "expected": 34.50000011253517}, {"input": [34.5, 19.0], "expected": 34.50000018553912}, {"input": [34.5, 19.5], "expected": 34.500000305902276}, {"input": [34.5, 20.0], "expected": 34.50000050434753}, {"input": [34.5, 20.5], "expected": 34.500000831528375}, {"input": [34.5, 21.0], "expected": 34.500001370958145}, {"input": [34.5, 21.5], "expected": 34.50000226032685}, {"input": [34.5, 22.0], "expected": 34.50000372664623}, {"input": [34.5, 22.5], "expected": 34.50000614419348}, {"input": [34.5, 23.0], "expected": 34.50001013004229}, {"input": [34.5, 23.5], "expected": 34.50001670156132}, {"input": [34.5, 24.0], "expected": 34.50002753607023}, {"input": [34.5, 24.5], "expected": 34.50004539889922}, {"input": [34.5, 25.0], "expected": 34.50007484902863}, {"input": [34.5, 25.5], "expected": 34.50012340218972}, {"input": [34.5, 26.0], "expected": 34.50020344767213}, {"input": [34.5, 26.5], "expected": 34.5003354063729}, {"input": [34.5, 27.0], "expected": 34.50055293147536}, {"input": [34.5, 27.5], "expected": 34.50091146645377}, {"input": [34.5, 28.0], "expected": 34.50150231015976}, {"input": [34.5, 28.5], "expected": 34.50247568513773}, {"input": [34.5, 29.0], "expected": 34.50407844327057}, {"input": [34.5, 29.5], "expected": 34.50671534848912}, {"input": [34.5, 30.0], "expected": 34.5110477448486}, {"input": [34.5, 30.5], "expected": 34.51814992791781}, {"input": [34.5, 31.0], "expected": 34.52975041827262}, {"input": [34.5, 31.5], "expected": 34.548587351573744}, {"input": [34.5, 32.0], "expected": 34.57888973429255}, {"input": [34.5, 32.5], "expected": 34.62692801104297}, {"input": [34.5, 33.0], "expected": 34.70141327798275}, {"input": [34.5, 33.5], "expected": 34.81326168751822}, {"input": [34.5, 34.0], "expected": 34.97407698418011}, {"input": [34.5, 34.5], "expected": 35.19314718055995}, {"input": [34.5, 35.0], "expected": 35.47407698418011}, {"input": [34.5, 35.5], "expected": 35.81326168751822}, {"input": [34.5, 36.0], "expected": 36.20141327798275}, {"input": [34.5, 36.5], "expected": 36.62692801104297}, {"input": [34.5, 37.0], "expected": 37.07888973429255}, {"input": [34.5, 37.5], "expected": 37.548587351573744}, {"input": [34.5, 38.0], "expected": 38.02975041827262}, {"input": [34.5, 38.5], "expected": 38.51814992791781}, {"input": [34.5, 39.0], "expected": 39.0110477448486}, {"input": [34.5, 39.5], "expected": 39.50671534848912}, {"input": [34.5, 40.0], "expected": 40.00407844327057}, {"input": [34.5, 40.5], "expected": 40.50247568513773}, {"input": [34.5, 41.0], "expected": 41.00150231015976}, {"input": [34.5, 41.5], "expected": 41.50091146645377}, {"input": [34.5, 42.0], "expected": 42.00055293147536}, {"input": [34.5, 42.5], "expected": 42.5003354063729}, {"input": [34.5, 43.0], "expected": 43.00020344767213}, {"input": [34.5, 43.5], "expected": 43.50012340218972}, {"input": [34.5, 44.0], "expected": 44.00007484902863}, {"input": [34.5, 44.5], "expected": 44.50004539889922}, {"input": [34.5, 45.0], "expected": 45.00002753607023}, {"input": [34.5, 45.5], "expected": 45.50001670156132}, {"input": [34.5, 46.0], "expected": 46.00001013004229}, {"input": [34.5, 46.5], "expected": 46.50000614419348}, {"input": [34.5, 47.0], "expected": 47.00000372664623}, {"input": [34.5, 47.5], "expected": 47.50000226032685}, {"input": [34.5, 48.0], "expected": 48.000001370958145}, {"input": [34.5, 48.5], "expected": 48.500000831528375}, {"input": [34.5, 49.0], "expected": 49.00000050434753}, {"input": [34.5, 49.5], "expected": 49.500000305902276}, {"input": [34.5, 50.0], "expected": 50.00000018553912}, {"input": [34.5, 50.5], "expected": 50.50000011253517}, {"input": [34.5, 51.0], "expected": 51.00000006825603}, {"input": [34.5, 51.5], "expected": 51.500000041399375}, {"input": [34.5, 52.0], "expected": 52.00000002510999}, {"input": [34.5, 52.5], "expected": 52.50000001522998}, {"input": [34.5, 53.0], "expected": 53.000000009237446}, {"input": [34.5, 53.5], "expected": 53.50000000560279}, {"input": [34.5, 54.0], "expected": 54.00000000339827}, {"input": [34.5, 54.5], "expected": 54.50000000206116}, {"input": [34.5, 55.0], "expected": 55.00000000125015}, {"input": [34.5, 55.5], "expected": 55.500000000758256}, {"input": [34.5, 56.0], "expected": 56.000000000459906}, {"input": [34.5, 56.5], "expected": 56.500000000278945}, {"input": [34.5, 57.0], "expected": 57.00000000016919}, {"input": [34.5, 57.5], "expected": 57.50000000010262}, {"input": [34.5, 58.0], "expected": 58.00000000006224}, {"input": [34.5, 58.5], "expected": 58.50000000003775}, {"input": [34.5, 59.0], "expected": 59.0000000000229}, {"input": [34.5, 59.5], "expected": 59.50000000001389}, {"input": [34.5, 60.0], "expected": 60.00000000000842}, {"input": [34.5, 60.5], "expected": 60.50000000000511}, {"input": [34.5, 61.0], "expected": 61.0000000000031}, {"input": [34.5, 61.5], "expected": 61.50000000000188}, {"input": [34.5, 62.0], "expected": 62.00000000000114}, {"input": [34.5, 62.5], "expected": 62.50000000000069}, {"input": [34.5, 63.0], "expected": 63.00000000000042}, {"input": [34.5, 63.5], "expected": 63.500000000000256}, {"input": [34.5, 64.0], "expected": 64.00000000000016}, {"input": [34.5, 64.5], "expected": 64.5000000000001}, {"input": [34.5, 65.0], "expected": 65.00000000000006}, {"input": [34.5, 65.5], "expected": 65.50000000000003}, {"input": [34.5, 66.0], "expected": 66.00000000000001}, {"input": [34.5, 66.5], "expected": 66.50000000000001}, {"input": [34.5, 67.0], "expected": 67.00000000000001}, {"input": [34.5, 67.5], "expected": 67.5}, {"input": [34.5, 68.0], "expected": 68.0}, {"input": [34.5, 68.5], "expected": 68.5}, {"input": [34.5, 69.0], "expected": 69.0}, {"input": [34.5, 69.5], "expected": 69.5}, {"input": [34.5, 70.0], "expected": 70.0}, {"input": [34.5, 70.5], "expected": 70.5}, {"input": [34.5, 71.0], "expected": 71.0}, {"input": [34.5, 71.5], "expected": 71.5}, {"input": [34.5, 72.0], "expected": 72.0}, {"input": [34.5, 72.5], "expected": 72.5}, {"input": [34.5, 73.0], "expected": 73.0}, {"input": [34.5, 73.5], "expected": 73.5}, {"input": [34.5, 74.0], "expected": 74.0}, {"input": [34.5, 74.5], "expected": 74.5}, {"input": [34.5, 75.0], "expected": 75.0}, {"input": [34.5, 75.5], "expected": 75.5}, {"input": [34.5, 76.0], "expected": 76.0}, {"input": [34.5, 76.5], "expected": 76.5}, {"input": [34.5, 77.0], "expected": 77.0}, {"input": [34.5, 77.5], "expected": 77.5}, {"input": [34.5, 78.0], "expected": 78.0}, {"input": [34.5, 78.5], "expected": 78.5}, {"input": [34.5, 79.0], "expected": 79.0}, {"input": [34.5, 79.5], "expected": 79.5}, {"input": [34.5, 80.0], "expected": 80.0}, {"input": [34.5, 80.5], "expected": 80.5}, {"input": [34.5, 81.0], "expected": 81.0}, {"input": [34.5, 81.5], "expected": 81.5}, {"input": [34.5, 82.0], "expected": 82.0}, {"input": [34.5, 82.5], "expected": 82.5}, {"input": [34.5, 83.0], "expected": 83.0}, {"input": [34.5, 83.5], "expected": 83.5}, {"input": [34.5, 84.0], "expected": 84.0}, {"input": [34.5, 84.5], "expected": 84.5}, {"input": [34.5, 85.0], "expected": 85.0}, {"input": [34.5, 85.5], "expected": 85.5}, {"input": [34.5, 86.0], "expected": 86.0}, {"input": [34.5, 86.5], "expected": 86.5}, {"input": [34.5, 87.0], "expected": 87.0}, {"input": [34.5, 87.5], "expected": 87.5}, {"input": [34.5, 88.0], "expected": 88.0}, {"input": [34.5, 88.5], "expected": 88.5}, {"input": [34.5, 89.0], "expected": 89.0}, {"input": [34.5, 89.5], "expected": 89.5}, {"input": [34.5, 90.0], "expected": 90.0}, {"input": [34.5, 90.5], "expected": 90.5}, {"input": [34.5, 91.0], "expected": 91.0}, {"input": [34.5, 91.5], "expected": 91.5}, {"input": [34.5, 92.0], "expected": 92.0}, {"input": [34.5, 92.5], "expected": 92.5}, {"input": [34.5, 93.0], "expected": 93.0}, {"input": [34.5, 93.5], "expected": 93.5}, {"input": [34.5, 94.0], "expected": 94.0}, {"input": [34.5, 94.5], "expected": 94.5}, {"input": [34.5, 95.0], "expected": 95.0}, {"input": [34.5, 95.5], "expected": 95.5}, {"input": [34.5, 96.0], "expected": 96.0}, {"input": [34.5, 96.5], "expected": 96.5}, {"input": [34.5, 97.0], "expected": 97.0}, {"input": [34.5, 97.5], "expected": 97.5}, {"input": [34.5, 98.0], "expected": 98.0}, {"input": [34.5, 98.5], "expected": 98.5}, {"input": [34.5, 99.0], "expected": 99.0}, {"input": [34.5, 99.5], "expected": 99.5}, {"input": [35.0, -100.0], "expected": 35.0}, {"input": [35.0, -99.5], "expected": 35.0}, {"input": [35.0, -99.0], "expected": 35.0}, {"input": [35.0, -98.5], "expected": 35.0}, {"input": [35.0, -98.0], "expected": 35.0}, {"input": [35.0, -97.5], "expected": 35.0}, {"input": [35.0, -97.0], "expected": 35.0}, {"input": [35.0, -96.5], "expected": 35.0}, {"input": [35.0, -96.0], "expected": 35.0}, {"input": [35.0, -95.5], "expected": 35.0}, {"input": [35.0, -95.0], "expected": 35.0}, {"input": [35.0, -94.5], "expected": 35.0}, {"input": [35.0, -94.0], "expected": 35.0}, {"input": [35.0, -93.5], "expected": 35.0}, {"input": [35.0, -93.0], "expected": 35.0}, {"input": [35.0, -92.5], "expected": 35.0}, {"input": [35.0, -92.0], "expected": 35.0}, {"input": [35.0, -91.5], "expected": 35.0}, {"input": [35.0, -91.0], "expected": 35.0}, {"input": [35.0, -90.5], "expected": 35.0}, {"input": [35.0, -90.0], "expected": 35.0}, {"input": [35.0, -89.5], "expected": 35.0}, {"input": [35.0, -89.0], "expected": 35.0}, {"input": [35.0, -88.5], "expected": 35.0}, {"input": [35.0, -88.0], "expected": 35.0}, {"input": [35.0, -87.5], "expected": 35.0}, {"input": [35.0, -87.0], "expected": 35.0}, {"input": [35.0, -86.5], "expected": 35.0}, {"input": [35.0, -86.0], "expected": 35.0}, {"input": [35.0, -85.5], "expected": 35.0}, {"input": [35.0, -85.0], "expected": 35.0}, {"input": [35.0, -84.5], "expected": 35.0}, {"input": [35.0, -84.0], "expected": 35.0}, {"input": [35.0, -83.5], "expected": 35.0}, {"input": [35.0, -83.0], "expected": 35.0}, {"input": [35.0, -82.5], "expected": 35.0}, {"input": [35.0, -82.0], "expected": 35.0}, {"input": [35.0, -81.5], "expected": 35.0}, {"input": [35.0, -81.0], "expected": 35.0}, {"input": [35.0, -80.5], "expected": 35.0}, {"input": [35.0, -80.0], "expected": 35.0}, {"input": [35.0, -79.5], "expected": 35.0}, {"input": [35.0, -79.0], "expected": 35.0}, {"input": [35.0, -78.5], "expected": 35.0}, {"input": [35.0, -78.0], "expected": 35.0}, {"input": [35.0, -77.5], "expected": 35.0}, {"input": [35.0, -77.0], "expected": 35.0}, {"input": [35.0, -76.5], "expected": 35.0}, {"input": [35.0, -76.0], "expected": 35.0}, {"input": [35.0, -75.5], "expected": 35.0}, {"input": [35.0, -75.0], "expected": 35.0}, {"input": [35.0, -74.5], "expected": 35.0}, {"input": [35.0, -74.0], "expected": 35.0}, {"input": [35.0, -73.5], "expected": 35.0}, {"input": [35.0, -73.0], "expected": 35.0}, {"input": [35.0, -72.5], "expected": 35.0}, {"input": [35.0, -72.0], "expected": 35.0}, {"input": [35.0, -71.5], "expected": 35.0}, {"input": [35.0, -71.0], "expected": 35.0}, {"input": [35.0, -70.5], "expected": 35.0}, {"input": [35.0, -70.0], "expected": 35.0}, {"input": [35.0, -69.5], "expected": 35.0}, {"input": [35.0, -69.0], "expected": 35.0}, {"input": [35.0, -68.5], "expected": 35.0}, {"input": [35.0, -68.0], "expected": 35.0}, {"input": [35.0, -67.5], "expected": 35.0}, {"input": [35.0, -67.0], "expected": 35.0}, {"input": [35.0, -66.5], "expected": 35.0}, {"input": [35.0, -66.0], "expected": 35.0}, {"input": [35.0, -65.5], "expected": 35.0}, {"input": [35.0, -65.0], "expected": 35.0}, {"input": [35.0, -64.5], "expected": 35.0}, {"input": [35.0, -64.0], "expected": 35.0}, {"input": [35.0, -63.5], "expected": 35.0}, {"input": [35.0, -63.0], "expected": 35.0}, {"input": [35.0, -62.5], "expected": 35.0}, {"input": [35.0, -62.0], "expected": 35.0}, {"input": [35.0, -61.5], "expected": 35.0}, {"input": [35.0, -61.0], "expected": 35.0}, {"input": [35.0, -60.5], "expected": 35.0}, {"input": [35.0, -60.0], "expected": 35.0}, {"input": [35.0, -59.5], "expected": 35.0}, {"input": [35.0, -59.0], "expected": 35.0}, {"input": [35.0, -58.5], "expected": 35.0}, {"input": [35.0, -58.0], "expected": 35.0}, {"input": [35.0, -57.5], "expected": 35.0}, {"input": [35.0, -57.0], "expected": 35.0}, {"input": [35.0, -56.5], "expected": 35.0}, {"input": [35.0, -56.0], "expected": 35.0}, {"input": [35.0, -55.5], "expected": 35.0}, {"input": [35.0, -55.0], "expected": 35.0}, {"input": [35.0, -54.5], "expected": 35.0}, {"input": [35.0, -54.0], "expected": 35.0}, {"input": [35.0, -53.5], "expected": 35.0}, {"input": [35.0, -53.0], "expected": 35.0}, {"input": [35.0, -52.5], "expected": 35.0}, {"input": [35.0, -52.0], "expected": 35.0}, {"input": [35.0, -51.5], "expected": 35.0}, {"input": [35.0, -51.0], "expected": 35.0}, {"input": [35.0, -50.5], "expected": 35.0}, {"input": [35.0, -50.0], "expected": 35.0}, {"input": [35.0, -49.5], "expected": 35.0}, {"input": [35.0, -49.0], "expected": 35.0}, {"input": [35.0, -48.5], "expected": 35.0}, {"input": [35.0, -48.0], "expected": 35.0}, {"input": [35.0, -47.5], "expected": 35.0}, {"input": [35.0, -47.0], "expected": 35.0}, {"input": [35.0, -46.5], "expected": 35.0}, {"input": [35.0, -46.0], "expected": 35.0}, {"input": [35.0, -45.5], "expected": 35.0}, {"input": [35.0, -45.0], "expected": 35.0}, {"input": [35.0, -44.5], "expected": 35.0}, {"input": [35.0, -44.0], "expected": 35.0}, {"input": [35.0, -43.5], "expected": 35.0}, {"input": [35.0, -43.0], "expected": 35.0}, {"input": [35.0, -42.5], "expected": 35.0}, {"input": [35.0, -42.0], "expected": 35.0}, {"input": [35.0, -41.5], "expected": 35.0}, {"input": [35.0, -41.0], "expected": 35.0}, {"input": [35.0, -40.5], "expected": 35.0}, {"input": [35.0, -40.0], "expected": 35.0}, {"input": [35.0, -39.5], "expected": 35.0}, {"input": [35.0, -39.0], "expected": 35.0}, {"input": [35.0, -38.5], "expected": 35.0}, {"input": [35.0, -38.0], "expected": 35.0}, {"input": [35.0, -37.5], "expected": 35.0}, {"input": [35.0, -37.0], "expected": 35.0}, {"input": [35.0, -36.5], "expected": 35.0}, {"input": [35.0, -36.0], "expected": 35.0}, {"input": [35.0, -35.5], "expected": 35.0}, {"input": [35.0, -35.0], "expected": 35.0}, {"input": [35.0, -34.5], "expected": 35.0}, {"input": [35.0, -34.0], "expected": 35.0}, {"input": [35.0, -33.5], "expected": 35.0}, {"input": [35.0, -33.0], "expected": 35.0}, {"input": [35.0, -32.5], "expected": 35.0}, {"input": [35.0, -32.0], "expected": 35.0}, {"input": [35.0, -31.5], "expected": 35.0}, {"input": [35.0, -31.0], "expected": 35.0}, {"input": [35.0, -30.5], "expected": 35.0}, {"input": [35.0, -30.0], "expected": 35.0}, {"input": [35.0, -29.5], "expected": 35.0}, {"input": [35.0, -29.0], "expected": 35.0}, {"input": [35.0, -28.5], "expected": 35.0}, {"input": [35.0, -28.0], "expected": 35.0}, {"input": [35.0, -27.5], "expected": 35.0}, {"input": [35.0, -27.0], "expected": 35.0}, {"input": [35.0, -26.5], "expected": 35.0}, {"input": [35.0, -26.0], "expected": 35.0}, {"input": [35.0, -25.5], "expected": 35.0}, {"input": [35.0, -25.0], "expected": 35.0}, {"input": [35.0, -24.5], "expected": 35.0}, {"input": [35.0, -24.0], "expected": 35.0}, {"input": [35.0, -23.5], "expected": 35.0}, {"input": [35.0, -23.0], "expected": 35.0}, {"input": [35.0, -22.5], "expected": 35.0}, {"input": [35.0, -22.0], "expected": 35.0}, {"input": [35.0, -21.5], "expected": 35.0}, {"input": [35.0, -21.0], "expected": 35.0}, {"input": [35.0, -20.5], "expected": 35.0}, {"input": [35.0, -20.0], "expected": 35.0}, {"input": [35.0, -19.5], "expected": 35.0}, {"input": [35.0, -19.0], "expected": 35.0}, {"input": [35.0, -18.5], "expected": 35.0}, {"input": [35.0, -18.0], "expected": 35.0}, {"input": [35.0, -17.5], "expected": 35.0}, {"input": [35.0, -17.0], "expected": 35.0}, {"input": [35.0, -16.5], "expected": 35.0}, {"input": [35.0, -16.0], "expected": 35.0}, {"input": [35.0, -15.5], "expected": 35.0}, {"input": [35.0, -15.0], "expected": 35.0}, {"input": [35.0, -14.5], "expected": 35.0}, {"input": [35.0, -14.0], "expected": 35.0}, {"input": [35.0, -13.5], "expected": 35.0}, {"input": [35.0, -13.0], "expected": 35.0}, {"input": [35.0, -12.5], "expected": 35.0}, {"input": [35.0, -12.0], "expected": 35.0}, {"input": [35.0, -11.5], "expected": 35.0}, {"input": [35.0, -11.0], "expected": 35.0}, {"input": [35.0, -10.5], "expected": 35.0}, {"input": [35.0, -10.0], "expected": 35.0}, {"input": [35.0, -9.5], "expected": 35.0}, {"input": [35.0, -9.0], "expected": 35.0}, {"input": [35.0, -8.5], "expected": 35.0}, {"input": [35.0, -8.0], "expected": 35.0}, {"input": [35.0, -7.5], "expected": 35.0}, {"input": [35.0, -7.0], "expected": 35.0}, {"input": [35.0, -6.5], "expected": 35.0}, {"input": [35.0, -6.0], "expected": 35.0}, {"input": [35.0, -5.5], "expected": 35.0}, {"input": [35.0, -5.0], "expected": 35.0}, {"input": [35.0, -4.5], "expected": 35.0}, {"input": [35.0, -4.0], "expected": 35.0}, {"input": [35.0, -3.5], "expected": 35.0}, {"input": [35.0, -3.0], "expected": 35.0}, {"input": [35.0, -2.5], "expected": 35.0}, {"input": [35.0, -2.0], "expected": 35.0}, {"input": [35.0, -1.5], "expected": 35.0}, {"input": [35.0, -1.0], "expected": 35.0}, {"input": [35.0, -0.5], "expected": 35.0}, {"input": [35.0, 0.0], "expected": 35.0}, {"input": [35.0, 0.5], "expected": 35.0}, {"input": [35.0, 1.0], "expected": 35.0}, {"input": [35.0, 1.5], "expected": 35.0}, {"input": [35.0, 2.0], "expected": 35.00000000000001}, {"input": [35.0, 2.5], "expected": 35.00000000000001}, {"input": [35.0, 3.0], "expected": 35.000000000000014}, {"input": [35.0, 3.5], "expected": 35.00000000000002}, {"input": [35.0, 4.0], "expected": 35.000000000000036}, {"input": [35.0, 4.5], "expected": 35.00000000000006}, {"input": [35.0, 5.0], "expected": 35.00000000000009}, {"input": [35.0, 5.5], "expected": 35.000000000000156}, {"input": [35.0, 6.0], "expected": 35.000000000000256}, {"input": [35.0, 6.5], "expected": 35.00000000000042}, {"input": [35.0, 7.0], "expected": 35.00000000000069}, {"input": [35.0, 7.5], "expected": 35.00000000000114}, {"input": [35.0, 8.0], "expected": 35.00000000000188}, {"input": [35.0, 8.5], "expected": 35.0000000000031}, {"input": [35.0, 9.0], "expected": 35.00000000000511}, {"input": [35.0, 9.5], "expected": 35.00000000000842}, {"input": [35.0, 10.0], "expected": 35.00000000001389}, {"input": [35.0, 10.5], "expected": 35.0000000000229}, {"input": [35.0, 11.0], "expected": 35.00000000003775}, {"input": [35.0, 11.5], "expected": 35.00000000006224}, {"input": [35.0, 12.0], "expected": 35.00000000010262}, {"input": [35.0, 12.5], "expected": 35.00000000016919}, {"input": [35.0, 13.0], "expected": 35.000000000278945}, {"input": [35.0, 13.5], "expected": 35.000000000459906}, {"input": [35.0, 14.0], "expected": 35.000000000758256}, {"input": [35.0, 14.5], "expected": 35.00000000125015}, {"input": [35.0, 15.0], "expected": 35.00000000206116}, {"input": [35.0, 15.5], "expected": 35.00000000339827}, {"input": [35.0, 16.0], "expected": 35.00000000560279}, {"input": [35.0, 16.5], "expected": 35.000000009237446}, {"input": [35.0, 17.0], "expected": 35.00000001522998}, {"input": [35.0, 17.5], "expected": 35.00000002510999}, {"input": [35.0, 18.0], "expected": 35.000000041399375}, {"input": [35.0, 18.5], "expected": 35.00000006825603}, {"input": [35.0, 19.0], "expected": 35.00000011253517}, {"input": [35.0, 19.5], "expected": 35.00000018553912}, {"input": [35.0, 20.0], "expected": 35.000000305902276}, {"input": [35.0, 20.5], "expected": 35.00000050434753}, {"input": [35.0, 21.0], "expected": 35.000000831528375}, {"input": [35.0, 21.5], "expected": 35.000001370958145}, {"input": [35.0, 22.0], "expected": 35.00000226032685}, {"input": [35.0, 22.5], "expected": 35.00000372664623}, {"input": [35.0, 23.0], "expected": 35.00000614419348}, {"input": [35.0, 23.5], "expected": 35.00001013004229}, {"input": [35.0, 24.0], "expected": 35.00001670156132}, {"input": [35.0, 24.5], "expected": 35.00002753607023}, {"input": [35.0, 25.0], "expected": 35.00004539889922}, {"input": [35.0, 25.5], "expected": 35.00007484902863}, {"input": [35.0, 26.0], "expected": 35.00012340218972}, {"input": [35.0, 26.5], "expected": 35.00020344767213}, {"input": [35.0, 27.0], "expected": 35.0003354063729}, {"input": [35.0, 27.5], "expected": 35.00055293147536}, {"input": [35.0, 28.0], "expected": 35.00091146645377}, {"input": [35.0, 28.5], "expected": 35.00150231015976}, {"input": [35.0, 29.0], "expected": 35.00247568513773}, {"input": [35.0, 29.5], "expected": 35.00407844327057}, {"input": [35.0, 30.0], "expected": 35.00671534848912}, {"input": [35.0, 30.5], "expected": 35.0110477448486}, {"input": [35.0, 31.0], "expected": 35.01814992791781}, {"input": [35.0, 31.5], "expected": 35.02975041827262}, {"input": [35.0, 32.0], "expected": 35.048587351573744}, {"input": [35.0, 32.5], "expected": 35.07888973429255}, {"input": [35.0, 33.0], "expected": 35.12692801104297}, {"input": [35.0, 33.5], "expected": 35.20141327798275}, {"input": [35.0, 34.0], "expected": 35.31326168751822}, {"input": [35.0, 34.5], "expected": 35.47407698418011}, {"input": [35.0, 35.0], "expected": 35.69314718055995}, {"input": [35.0, 35.5], "expected": 35.97407698418011}, {"input": [35.0, 36.0], "expected": 36.31326168751822}, {"input": [35.0, 36.5], "expected": 36.70141327798275}, {"input": [35.0, 37.0], "expected": 37.12692801104297}, {"input": [35.0, 37.5], "expected": 37.57888973429255}, {"input": [35.0, 38.0], "expected": 38.048587351573744}, {"input": [35.0, 38.5], "expected": 38.52975041827262}, {"input": [35.0, 39.0], "expected": 39.01814992791781}, {"input": [35.0, 39.5], "expected": 39.5110477448486}, {"input": [35.0, 40.0], "expected": 40.00671534848912}, {"input": [35.0, 40.5], "expected": 40.50407844327057}, {"input": [35.0, 41.0], "expected": 41.00247568513773}, {"input": [35.0, 41.5], "expected": 41.50150231015976}, {"input": [35.0, 42.0], "expected": 42.00091146645377}, {"input": [35.0, 42.5], "expected": 42.50055293147536}, {"input": [35.0, 43.0], "expected": 43.0003354063729}, {"input": [35.0, 43.5], "expected": 43.50020344767213}, {"input": [35.0, 44.0], "expected": 44.00012340218972}, {"input": [35.0, 44.5], "expected": 44.50007484902863}, {"input": [35.0, 45.0], "expected": 45.00004539889922}, {"input": [35.0, 45.5], "expected": 45.50002753607023}, {"input": [35.0, 46.0], "expected": 46.00001670156132}, {"input": [35.0, 46.5], "expected": 46.50001013004229}, {"input": [35.0, 47.0], "expected": 47.00000614419348}, {"input": [35.0, 47.5], "expected": 47.50000372664623}, {"input": [35.0, 48.0], "expected": 48.00000226032685}, {"input": [35.0, 48.5], "expected": 48.500001370958145}, {"input": [35.0, 49.0], "expected": 49.000000831528375}, {"input": [35.0, 49.5], "expected": 49.50000050434753}, {"input": [35.0, 50.0], "expected": 50.000000305902276}, {"input": [35.0, 50.5], "expected": 50.50000018553912}, {"input": [35.0, 51.0], "expected": 51.00000011253517}, {"input": [35.0, 51.5], "expected": 51.50000006825603}, {"input": [35.0, 52.0], "expected": 52.000000041399375}, {"input": [35.0, 52.5], "expected": 52.50000002510999}, {"input": [35.0, 53.0], "expected": 53.00000001522998}, {"input": [35.0, 53.5], "expected": 53.500000009237446}, {"input": [35.0, 54.0], "expected": 54.00000000560279}, {"input": [35.0, 54.5], "expected": 54.50000000339827}, {"input": [35.0, 55.0], "expected": 55.00000000206116}, {"input": [35.0, 55.5], "expected": 55.50000000125015}, {"input": [35.0, 56.0], "expected": 56.000000000758256}, {"input": [35.0, 56.5], "expected": 56.500000000459906}, {"input": [35.0, 57.0], "expected": 57.000000000278945}, {"input": [35.0, 57.5], "expected": 57.50000000016919}, {"input": [35.0, 58.0], "expected": 58.00000000010262}, {"input": [35.0, 58.5], "expected": 58.50000000006224}, {"input": [35.0, 59.0], "expected": 59.00000000003775}, {"input": [35.0, 59.5], "expected": 59.5000000000229}, {"input": [35.0, 60.0], "expected": 60.00000000001389}, {"input": [35.0, 60.5], "expected": 60.50000000000842}, {"input": [35.0, 61.0], "expected": 61.00000000000511}, {"input": [35.0, 61.5], "expected": 61.5000000000031}, {"input": [35.0, 62.0], "expected": 62.00000000000188}, {"input": [35.0, 62.5], "expected": 62.50000000000114}, {"input": [35.0, 63.0], "expected": 63.00000000000069}, {"input": [35.0, 63.5], "expected": 63.50000000000042}, {"input": [35.0, 64.0], "expected": 64.00000000000026}, {"input": [35.0, 64.5], "expected": 64.50000000000016}, {"input": [35.0, 65.0], "expected": 65.0000000000001}, {"input": [35.0, 65.5], "expected": 65.50000000000006}, {"input": [35.0, 66.0], "expected": 66.00000000000003}, {"input": [35.0, 66.5], "expected": 66.50000000000001}, {"input": [35.0, 67.0], "expected": 67.00000000000001}, {"input": [35.0, 67.5], "expected": 67.50000000000001}, {"input": [35.0, 68.0], "expected": 68.0}, {"input": [35.0, 68.5], "expected": 68.5}, {"input": [35.0, 69.0], "expected": 69.0}, {"input": [35.0, 69.5], "expected": 69.5}, {"input": [35.0, 70.0], "expected": 70.0}, {"input": [35.0, 70.5], "expected": 70.5}, {"input": [35.0, 71.0], "expected": 71.0}, {"input": [35.0, 71.5], "expected": 71.5}, {"input": [35.0, 72.0], "expected": 72.0}, {"input": [35.0, 72.5], "expected": 72.5}, {"input": [35.0, 73.0], "expected": 73.0}, {"input": [35.0, 73.5], "expected": 73.5}, {"input": [35.0, 74.0], "expected": 74.0}, {"input": [35.0, 74.5], "expected": 74.5}, {"input": [35.0, 75.0], "expected": 75.0}, {"input": [35.0, 75.5], "expected": 75.5}, {"input": [35.0, 76.0], "expected": 76.0}, {"input": [35.0, 76.5], "expected": 76.5}, {"input": [35.0, 77.0], "expected": 77.0}, {"input": [35.0, 77.5], "expected": 77.5}, {"input": [35.0, 78.0], "expected": 78.0}, {"input": [35.0, 78.5], "expected": 78.5}, {"input": [35.0, 79.0], "expected": 79.0}, {"input": [35.0, 79.5], "expected": 79.5}, {"input": [35.0, 80.0], "expected": 80.0}, {"input": [35.0, 80.5], "expected": 80.5}, {"input": [35.0, 81.0], "expected": 81.0}, {"input": [35.0, 81.5], "expected": 81.5}, {"input": [35.0, 82.0], "expected": 82.0}, {"input": [35.0, 82.5], "expected": 82.5}, {"input": [35.0, 83.0], "expected": 83.0}, {"input": [35.0, 83.5], "expected": 83.5}, {"input": [35.0, 84.0], "expected": 84.0}, {"input": [35.0, 84.5], "expected": 84.5}, {"input": [35.0, 85.0], "expected": 85.0}, {"input": [35.0, 85.5], "expected": 85.5}, {"input": [35.0, 86.0], "expected": 86.0}, {"input": [35.0, 86.5], "expected": 86.5}, {"input": [35.0, 87.0], "expected": 87.0}, {"input": [35.0, 87.5], "expected": 87.5}, {"input": [35.0, 88.0], "expected": 88.0}, {"input": [35.0, 88.5], "expected": 88.5}, {"input": [35.0, 89.0], "expected": 89.0}, {"input": [35.0, 89.5], "expected": 89.5}, {"input": [35.0, 90.0], "expected": 90.0}, {"input": [35.0, 90.5], "expected": 90.5}, {"input": [35.0, 91.0], "expected": 91.0}, {"input": [35.0, 91.5], "expected": 91.5}, {"input": [35.0, 92.0], "expected": 92.0}, {"input": [35.0, 92.5], "expected": 92.5}, {"input": [35.0, 93.0], "expected": 93.0}, {"input": [35.0, 93.5], "expected": 93.5}, {"input": [35.0, 94.0], "expected": 94.0}, {"input": [35.0, 94.5], "expected": 94.5}, {"input": [35.0, 95.0], "expected": 95.0}, {"input": [35.0, 95.5], "expected": 95.5}, {"input": [35.0, 96.0], "expected": 96.0}, {"input": [35.0, 96.5], "expected": 96.5}, {"input": [35.0, 97.0], "expected": 97.0}, {"input": [35.0, 97.5], "expected": 97.5}, {"input": [35.0, 98.0], "expected": 98.0}, {"input": [35.0, 98.5], "expected": 98.5}, {"input": [35.0, 99.0], "expected": 99.0}, {"input": [35.0, 99.5], "expected": 99.5}, {"input": [35.5, -100.0], "expected": 35.5}, {"input": [35.5, -99.5], "expected": 35.5}, {"input": [35.5, -99.0], "expected": 35.5}, {"input": [35.5, -98.5], "expected": 35.5}, {"input": [35.5, -98.0], "expected": 35.5}, {"input": [35.5, -97.5], "expected": 35.5}, {"input": [35.5, -97.0], "expected": 35.5}, {"input": [35.5, -96.5], "expected": 35.5}, {"input": [35.5, -96.0], "expected": 35.5}, {"input": [35.5, -95.5], "expected": 35.5}, {"input": [35.5, -95.0], "expected": 35.5}, {"input": [35.5, -94.5], "expected": 35.5}, {"input": [35.5, -94.0], "expected": 35.5}, {"input": [35.5, -93.5], "expected": 35.5}, {"input": [35.5, -93.0], "expected": 35.5}, {"input": [35.5, -92.5], "expected": 35.5}, {"input": [35.5, -92.0], "expected": 35.5}, {"input": [35.5, -91.5], "expected": 35.5}, {"input": [35.5, -91.0], "expected": 35.5}, {"input": [35.5, -90.5], "expected": 35.5}, {"input": [35.5, -90.0], "expected": 35.5}, {"input": [35.5, -89.5], "expected": 35.5}, {"input": [35.5, -89.0], "expected": 35.5}, {"input": [35.5, -88.5], "expected": 35.5}, {"input": [35.5, -88.0], "expected": 35.5}, {"input": [35.5, -87.5], "expected": 35.5}, {"input": [35.5, -87.0], "expected": 35.5}, {"input": [35.5, -86.5], "expected": 35.5}, {"input": [35.5, -86.0], "expected": 35.5}, {"input": [35.5, -85.5], "expected": 35.5}, {"input": [35.5, -85.0], "expected": 35.5}, {"input": [35.5, -84.5], "expected": 35.5}, {"input": [35.5, -84.0], "expected": 35.5}, {"input": [35.5, -83.5], "expected": 35.5}, {"input": [35.5, -83.0], "expected": 35.5}, {"input": [35.5, -82.5], "expected": 35.5}, {"input": [35.5, -82.0], "expected": 35.5}, {"input": [35.5, -81.5], "expected": 35.5}, {"input": [35.5, -81.0], "expected": 35.5}, {"input": [35.5, -80.5], "expected": 35.5}, {"input": [35.5, -80.0], "expected": 35.5}, {"input": [35.5, -79.5], "expected": 35.5}, {"input": [35.5, -79.0], "expected": 35.5}, {"input": [35.5, -78.5], "expected": 35.5}, {"input": [35.5, -78.0], "expected": 35.5}, {"input": [35.5, -77.5], "expected": 35.5}, {"input": [35.5, -77.0], "expected": 35.5}, {"input": [35.5, -76.5], "expected": 35.5}, {"input": [35.5, -76.0], "expected": 35.5}, {"input": [35.5, -75.5], "expected": 35.5}, {"input": [35.5, -75.0], "expected": 35.5}, {"input": [35.5, -74.5], "expected": 35.5}, {"input": [35.5, -74.0], "expected": 35.5}, {"input": [35.5, -73.5], "expected": 35.5}, {"input": [35.5, -73.0], "expected": 35.5}, {"input": [35.5, -72.5], "expected": 35.5}, {"input": [35.5, -72.0], "expected": 35.5}, {"input": [35.5, -71.5], "expected": 35.5}, {"input": [35.5, -71.0], "expected": 35.5}, {"input": [35.5, -70.5], "expected": 35.5}, {"input": [35.5, -70.0], "expected": 35.5}, {"input": [35.5, -69.5], "expected": 35.5}, {"input": [35.5, -69.0], "expected": 35.5}, {"input": [35.5, -68.5], "expected": 35.5}, {"input": [35.5, -68.0], "expected": 35.5}, {"input": [35.5, -67.5], "expected": 35.5}, {"input": [35.5, -67.0], "expected": 35.5}, {"input": [35.5, -66.5], "expected": 35.5}, {"input": [35.5, -66.0], "expected": 35.5}, {"input": [35.5, -65.5], "expected": 35.5}, {"input": [35.5, -65.0], "expected": 35.5}, {"input": [35.5, -64.5], "expected": 35.5}, {"input": [35.5, -64.0], "expected": 35.5}, {"input": [35.5, -63.5], "expected": 35.5}, {"input": [35.5, -63.0], "expected": 35.5}, {"input": [35.5, -62.5], "expected": 35.5}, {"input": [35.5, -62.0], "expected": 35.5}, {"input": [35.5, -61.5], "expected": 35.5}, {"input": [35.5, -61.0], "expected": 35.5}, {"input": [35.5, -60.5], "expected": 35.5}, {"input": [35.5, -60.0], "expected": 35.5}, {"input": [35.5, -59.5], "expected": 35.5}, {"input": [35.5, -59.0], "expected": 35.5}, {"input": [35.5, -58.5], "expected": 35.5}, {"input": [35.5, -58.0], "expected": 35.5}, {"input": [35.5, -57.5], "expected": 35.5}, {"input": [35.5, -57.0], "expected": 35.5}, {"input": [35.5, -56.5], "expected": 35.5}, {"input": [35.5, -56.0], "expected": 35.5}, {"input": [35.5, -55.5], "expected": 35.5}, {"input": [35.5, -55.0], "expected": 35.5}, {"input": [35.5, -54.5], "expected": 35.5}, {"input": [35.5, -54.0], "expected": 35.5}, {"input": [35.5, -53.5], "expected": 35.5}, {"input": [35.5, -53.0], "expected": 35.5}, {"input": [35.5, -52.5], "expected": 35.5}, {"input": [35.5, -52.0], "expected": 35.5}, {"input": [35.5, -51.5], "expected": 35.5}, {"input": [35.5, -51.0], "expected": 35.5}, {"input": [35.5, -50.5], "expected": 35.5}, {"input": [35.5, -50.0], "expected": 35.5}, {"input": [35.5, -49.5], "expected": 35.5}, {"input": [35.5, -49.0], "expected": 35.5}, {"input": [35.5, -48.5], "expected": 35.5}, {"input": [35.5, -48.0], "expected": 35.5}, {"input": [35.5, -47.5], "expected": 35.5}, {"input": [35.5, -47.0], "expected": 35.5}, {"input": [35.5, -46.5], "expected": 35.5}, {"input": [35.5, -46.0], "expected": 35.5}, {"input": [35.5, -45.5], "expected": 35.5}, {"input": [35.5, -45.0], "expected": 35.5}, {"input": [35.5, -44.5], "expected": 35.5}, {"input": [35.5, -44.0], "expected": 35.5}, {"input": [35.5, -43.5], "expected": 35.5}, {"input": [35.5, -43.0], "expected": 35.5}, {"input": [35.5, -42.5], "expected": 35.5}, {"input": [35.5, -42.0], "expected": 35.5}, {"input": [35.5, -41.5], "expected": 35.5}, {"input": [35.5, -41.0], "expected": 35.5}, {"input": [35.5, -40.5], "expected": 35.5}, {"input": [35.5, -40.0], "expected": 35.5}, {"input": [35.5, -39.5], "expected": 35.5}, {"input": [35.5, -39.0], "expected": 35.5}, {"input": [35.5, -38.5], "expected": 35.5}, {"input": [35.5, -38.0], "expected": 35.5}, {"input": [35.5, -37.5], "expected": 35.5}, {"input": [35.5, -37.0], "expected": 35.5}, {"input": [35.5, -36.5], "expected": 35.5}, {"input": [35.5, -36.0], "expected": 35.5}, {"input": [35.5, -35.5], "expected": 35.5}, {"input": [35.5, -35.0], "expected": 35.5}, {"input": [35.5, -34.5], "expected": 35.5}, {"input": [35.5, -34.0], "expected": 35.5}, {"input": [35.5, -33.5], "expected": 35.5}, {"input": [35.5, -33.0], "expected": 35.5}, {"input": [35.5, -32.5], "expected": 35.5}, {"input": [35.5, -32.0], "expected": 35.5}, {"input": [35.5, -31.5], "expected": 35.5}, {"input": [35.5, -31.0], "expected": 35.5}, {"input": [35.5, -30.5], "expected": 35.5}, {"input": [35.5, -30.0], "expected": 35.5}, {"input": [35.5, -29.5], "expected": 35.5}, {"input": [35.5, -29.0], "expected": 35.5}, {"input": [35.5, -28.5], "expected": 35.5}, {"input": [35.5, -28.0], "expected": 35.5}, {"input": [35.5, -27.5], "expected": 35.5}, {"input": [35.5, -27.0], "expected": 35.5}, {"input": [35.5, -26.5], "expected": 35.5}, {"input": [35.5, -26.0], "expected": 35.5}, {"input": [35.5, -25.5], "expected": 35.5}, {"input": [35.5, -25.0], "expected": 35.5}, {"input": [35.5, -24.5], "expected": 35.5}, {"input": [35.5, -24.0], "expected": 35.5}, {"input": [35.5, -23.5], "expected": 35.5}, {"input": [35.5, -23.0], "expected": 35.5}, {"input": [35.5, -22.5], "expected": 35.5}, {"input": [35.5, -22.0], "expected": 35.5}, {"input": [35.5, -21.5], "expected": 35.5}, {"input": [35.5, -21.0], "expected": 35.5}, {"input": [35.5, -20.5], "expected": 35.5}, {"input": [35.5, -20.0], "expected": 35.5}, {"input": [35.5, -19.5], "expected": 35.5}, {"input": [35.5, -19.0], "expected": 35.5}, {"input": [35.5, -18.5], "expected": 35.5}, {"input": [35.5, -18.0], "expected": 35.5}, {"input": [35.5, -17.5], "expected": 35.5}, {"input": [35.5, -17.0], "expected": 35.5}, {"input": [35.5, -16.5], "expected": 35.5}, {"input": [35.5, -16.0], "expected": 35.5}, {"input": [35.5, -15.5], "expected": 35.5}, {"input": [35.5, -15.0], "expected": 35.5}, {"input": [35.5, -14.5], "expected": 35.5}, {"input": [35.5, -14.0], "expected": 35.5}, {"input": [35.5, -13.5], "expected": 35.5}, {"input": [35.5, -13.0], "expected": 35.5}, {"input": [35.5, -12.5], "expected": 35.5}, {"input": [35.5, -12.0], "expected": 35.5}, {"input": [35.5, -11.5], "expected": 35.5}, {"input": [35.5, -11.0], "expected": 35.5}, {"input": [35.5, -10.5], "expected": 35.5}, {"input": [35.5, -10.0], "expected": 35.5}, {"input": [35.5, -9.5], "expected": 35.5}, {"input": [35.5, -9.0], "expected": 35.5}, {"input": [35.5, -8.5], "expected": 35.5}, {"input": [35.5, -8.0], "expected": 35.5}, {"input": [35.5, -7.5], "expected": 35.5}, {"input": [35.5, -7.0], "expected": 35.5}, {"input": [35.5, -6.5], "expected": 35.5}, {"input": [35.5, -6.0], "expected": 35.5}, {"input": [35.5, -5.5], "expected": 35.5}, {"input": [35.5, -5.0], "expected": 35.5}, {"input": [35.5, -4.5], "expected": 35.5}, {"input": [35.5, -4.0], "expected": 35.5}, {"input": [35.5, -3.5], "expected": 35.5}, {"input": [35.5, -3.0], "expected": 35.5}, {"input": [35.5, -2.5], "expected": 35.5}, {"input": [35.5, -2.0], "expected": 35.5}, {"input": [35.5, -1.5], "expected": 35.5}, {"input": [35.5, -1.0], "expected": 35.5}, {"input": [35.5, -0.5], "expected": 35.5}, {"input": [35.5, 0.0], "expected": 35.5}, {"input": [35.5, 0.5], "expected": 35.5}, {"input": [35.5, 1.0], "expected": 35.5}, {"input": [35.5, 1.5], "expected": 35.5}, {"input": [35.5, 2.0], "expected": 35.5}, {"input": [35.5, 2.5], "expected": 35.50000000000001}, {"input": [35.5, 3.0], "expected": 35.50000000000001}, {"input": [35.5, 3.5], "expected": 35.500000000000014}, {"input": [35.5, 4.0], "expected": 35.50000000000002}, {"input": [35.5, 4.5], "expected": 35.500000000000036}, {"input": [35.5, 5.0], "expected": 35.50000000000006}, {"input": [35.5, 5.5], "expected": 35.50000000000009}, {"input": [35.5, 6.0], "expected": 35.500000000000156}, {"input": [35.5, 6.5], "expected": 35.500000000000256}, {"input": [35.5, 7.0], "expected": 35.50000000000042}, {"input": [35.5, 7.5], "expected": 35.50000000000069}, {"input": [35.5, 8.0], "expected": 35.50000000000114}, {"input": [35.5, 8.5], "expected": 35.50000000000188}, {"input": [35.5, 9.0], "expected": 35.5000000000031}, {"input": [35.5, 9.5], "expected": 35.50000000000511}, {"input": [35.5, 10.0], "expected": 35.50000000000842}, {"input": [35.5, 10.5], "expected": 35.50000000001389}, {"input": [35.5, 11.0], "expected": 35.5000000000229}, {"input": [35.5, 11.5], "expected": 35.50000000003775}, {"input": [35.5, 12.0], "expected": 35.50000000006224}, {"input": [35.5, 12.5], "expected": 35.50000000010262}, {"input": [35.5, 13.0], "expected": 35.50000000016919}, {"input": [35.5, 13.5], "expected": 35.500000000278945}, {"input": [35.5, 14.0], "expected": 35.500000000459906}, {"input": [35.5, 14.5], "expected": 35.500000000758256}, {"input": [35.5, 15.0], "expected": 35.50000000125015}, {"input": [35.5, 15.5], "expected": 35.50000000206116}, {"input": [35.5, 16.0], "expected": 35.50000000339827}, {"input": [35.5, 16.5], "expected": 35.50000000560279}, {"input": [35.5, 17.0], "expected": 35.500000009237446}, {"input": [35.5, 17.5], "expected": 35.50000001522998}, {"input": [35.5, 18.0], "expected": 35.50000002510999}, {"input": [35.5, 18.5], "expected": 35.500000041399375}, {"input": [35.5, 19.0], "expected": 35.50000006825603}, {"input": [35.5, 19.5], "expected": 35.50000011253517}, {"input": [35.5, 20.0], "expected": 35.50000018553912}, {"input": [35.5, 20.5], "expected": 35.500000305902276}, {"input": [35.5, 21.0], "expected": 35.50000050434753}, {"input": [35.5, 21.5], "expected": 35.500000831528375}, {"input": [35.5, 22.0], "expected": 35.500001370958145}, {"input": [35.5, 22.5], "expected": 35.50000226032685}, {"input": [35.5, 23.0], "expected": 35.50000372664623}, {"input": [35.5, 23.5], "expected": 35.50000614419348}, {"input": [35.5, 24.0], "expected": 35.50001013004229}, {"input": [35.5, 24.5], "expected": 35.50001670156132}, {"input": [35.5, 25.0], "expected": 35.50002753607023}, {"input": [35.5, 25.5], "expected": 35.50004539889922}, {"input": [35.5, 26.0], "expected": 35.50007484902863}, {"input": [35.5, 26.5], "expected": 35.50012340218972}, {"input": [35.5, 27.0], "expected": 35.50020344767213}, {"input": [35.5, 27.5], "expected": 35.5003354063729}, {"input": [35.5, 28.0], "expected": 35.50055293147536}, {"input": [35.5, 28.5], "expected": 35.50091146645377}, {"input": [35.5, 29.0], "expected": 35.50150231015976}, {"input": [35.5, 29.5], "expected": 35.50247568513773}, {"input": [35.5, 30.0], "expected": 35.50407844327057}, {"input": [35.5, 30.5], "expected": 35.50671534848912}, {"input": [35.5, 31.0], "expected": 35.5110477448486}, {"input": [35.5, 31.5], "expected": 35.51814992791781}, {"input": [35.5, 32.0], "expected": 35.52975041827262}, {"input": [35.5, 32.5], "expected": 35.548587351573744}, {"input": [35.5, 33.0], "expected": 35.57888973429255}, {"input": [35.5, 33.5], "expected": 35.62692801104297}, {"input": [35.5, 34.0], "expected": 35.70141327798275}, {"input": [35.5, 34.5], "expected": 35.81326168751822}, {"input": [35.5, 35.0], "expected": 35.97407698418011}, {"input": [35.5, 35.5], "expected": 36.19314718055995}, {"input": [35.5, 36.0], "expected": 36.47407698418011}, {"input": [35.5, 36.5], "expected": 36.81326168751822}, {"input": [35.5, 37.0], "expected": 37.20141327798275}, {"input": [35.5, 37.5], "expected": 37.62692801104297}, {"input": [35.5, 38.0], "expected": 38.07888973429255}, {"input": [35.5, 38.5], "expected": 38.548587351573744}, {"input": [35.5, 39.0], "expected": 39.02975041827262}, {"input": [35.5, 39.5], "expected": 39.51814992791781}, {"input": [35.5, 40.0], "expected": 40.0110477448486}, {"input": [35.5, 40.5], "expected": 40.50671534848912}, {"input": [35.5, 41.0], "expected": 41.00407844327057}, {"input": [35.5, 41.5], "expected": 41.50247568513773}, {"input": [35.5, 42.0], "expected": 42.00150231015976}, {"input": [35.5, 42.5], "expected": 42.50091146645377}, {"input": [35.5, 43.0], "expected": 43.00055293147536}, {"input": [35.5, 43.5], "expected": 43.5003354063729}, {"input": [35.5, 44.0], "expected": 44.00020344767213}, {"input": [35.5, 44.5], "expected": 44.50012340218972}, {"input": [35.5, 45.0], "expected": 45.00007484902863}, {"input": [35.5, 45.5], "expected": 45.50004539889922}, {"input": [35.5, 46.0], "expected": 46.00002753607023}, {"input": [35.5, 46.5], "expected": 46.50001670156132}, {"input": [35.5, 47.0], "expected": 47.00001013004229}, {"input": [35.5, 47.5], "expected": 47.50000614419348}, {"input": [35.5, 48.0], "expected": 48.00000372664623}, {"input": [35.5, 48.5], "expected": 48.50000226032685}, {"input": [35.5, 49.0], "expected": 49.000001370958145}, {"input": [35.5, 49.5], "expected": 49.500000831528375}, {"input": [35.5, 50.0], "expected": 50.00000050434753}, {"input": [35.5, 50.5], "expected": 50.500000305902276}, {"input": [35.5, 51.0], "expected": 51.00000018553912}, {"input": [35.5, 51.5], "expected": 51.50000011253517}, {"input": [35.5, 52.0], "expected": 52.00000006825603}, {"input": [35.5, 52.5], "expected": 52.500000041399375}, {"input": [35.5, 53.0], "expected": 53.00000002510999}, {"input": [35.5, 53.5], "expected": 53.50000001522998}, {"input": [35.5, 54.0], "expected": 54.000000009237446}, {"input": [35.5, 54.5], "expected": 54.50000000560279}, {"input": [35.5, 55.0], "expected": 55.00000000339827}, {"input": [35.5, 55.5], "expected": 55.50000000206116}, {"input": [35.5, 56.0], "expected": 56.00000000125015}, {"input": [35.5, 56.5], "expected": 56.500000000758256}, {"input": [35.5, 57.0], "expected": 57.000000000459906}, {"input": [35.5, 57.5], "expected": 57.500000000278945}, {"input": [35.5, 58.0], "expected": 58.00000000016919}, {"input": [35.5, 58.5], "expected": 58.50000000010262}, {"input": [35.5, 59.0], "expected": 59.00000000006224}, {"input": [35.5, 59.5], "expected": 59.50000000003775}, {"input": [35.5, 60.0], "expected": 60.0000000000229}, {"input": [35.5, 60.5], "expected": 60.50000000001389}, {"input": [35.5, 61.0], "expected": 61.00000000000842}, {"input": [35.5, 61.5], "expected": 61.50000000000511}, {"input": [35.5, 62.0], "expected": 62.0000000000031}, {"input": [35.5, 62.5], "expected": 62.50000000000188}, {"input": [35.5, 63.0], "expected": 63.00000000000114}, {"input": [35.5, 63.5], "expected": 63.50000000000069}, {"input": [35.5, 64.0], "expected": 64.00000000000043}, {"input": [35.5, 64.5], "expected": 64.50000000000026}, {"input": [35.5, 65.0], "expected": 65.00000000000016}, {"input": [35.5, 65.5], "expected": 65.5000000000001}, {"input": [35.5, 66.0], "expected": 66.00000000000006}, {"input": [35.5, 66.5], "expected": 66.50000000000003}, {"input": [35.5, 67.0], "expected": 67.00000000000001}, {"input": [35.5, 67.5], "expected": 67.50000000000001}, {"input": [35.5, 68.0], "expected": 68.00000000000001}, {"input": [35.5, 68.5], "expected": 68.5}, {"input": [35.5, 69.0], "expected": 69.0}, {"input": [35.5, 69.5], "expected": 69.5}, {"input": [35.5, 70.0], "expected": 70.0}, {"input": [35.5, 70.5], "expected": 70.5}, {"input": [35.5, 71.0], "expected": 71.0}, {"input": [35.5, 71.5], "expected": 71.5}, {"input": [35.5, 72.0], "expected": 72.0}, {"input": [35.5, 72.5], "expected": 72.5}, {"input": [35.5, 73.0], "expected": 73.0}, {"input": [35.5, 73.5], "expected": 73.5}, {"input": [35.5, 74.0], "expected": 74.0}, {"input": [35.5, 74.5], "expected": 74.5}, {"input": [35.5, 75.0], "expected": 75.0}, {"input": [35.5, 75.5], "expected": 75.5}, {"input": [35.5, 76.0], "expected": 76.0}, {"input": [35.5, 76.5], "expected": 76.5}, {"input": [35.5, 77.0], "expected": 77.0}, {"input": [35.5, 77.5], "expected": 77.5}, {"input": [35.5, 78.0], "expected": 78.0}, {"input": [35.5, 78.5], "expected": 78.5}, {"input": [35.5, 79.0], "expected": 79.0}, {"input": [35.5, 79.5], "expected": 79.5}, {"input": [35.5, 80.0], "expected": 80.0}, {"input": [35.5, 80.5], "expected": 80.5}, {"input": [35.5, 81.0], "expected": 81.0}, {"input": [35.5, 81.5], "expected": 81.5}, {"input": [35.5, 82.0], "expected": 82.0}, {"input": [35.5, 82.5], "expected": 82.5}, {"input": [35.5, 83.0], "expected": 83.0}, {"input": [35.5, 83.5], "expected": 83.5}, {"input": [35.5, 84.0], "expected": 84.0}, {"input": [35.5, 84.5], "expected": 84.5}, {"input": [35.5, 85.0], "expected": 85.0}, {"input": [35.5, 85.5], "expected": 85.5}, {"input": [35.5, 86.0], "expected": 86.0}, {"input": [35.5, 86.5], "expected": 86.5}, {"input": [35.5, 87.0], "expected": 87.0}, {"input": [35.5, 87.5], "expected": 87.5}, {"input": [35.5, 88.0], "expected": 88.0}, {"input": [35.5, 88.5], "expected": 88.5}, {"input": [35.5, 89.0], "expected": 89.0}, {"input": [35.5, 89.5], "expected": 89.5}, {"input": [35.5, 90.0], "expected": 90.0}, {"input": [35.5, 90.5], "expected": 90.5}, {"input": [35.5, 91.0], "expected": 91.0}, {"input": [35.5, 91.5], "expected": 91.5}, {"input": [35.5, 92.0], "expected": 92.0}, {"input": [35.5, 92.5], "expected": 92.5}, {"input": [35.5, 93.0], "expected": 93.0}, {"input": [35.5, 93.5], "expected": 93.5}, {"input": [35.5, 94.0], "expected": 94.0}, {"input": [35.5, 94.5], "expected": 94.5}, {"input": [35.5, 95.0], "expected": 95.0}, {"input": [35.5, 95.5], "expected": 95.5}, {"input": [35.5, 96.0], "expected": 96.0}, {"input": [35.5, 96.5], "expected": 96.5}, {"input": [35.5, 97.0], "expected": 97.0}, {"input": [35.5, 97.5], "expected": 97.5}, {"input": [35.5, 98.0], "expected": 98.0}, {"input": [35.5, 98.5], "expected": 98.5}, {"input": [35.5, 99.0], "expected": 99.0}, {"input": [35.5, 99.5], "expected": 99.5}, {"input": [36.0, -100.0], "expected": 36.0}, {"input": [36.0, -99.5], "expected": 36.0}, {"input": [36.0, -99.0], "expected": 36.0}, {"input": [36.0, -98.5], "expected": 36.0}, {"input": [36.0, -98.0], "expected": 36.0}, {"input": [36.0, -97.5], "expected": 36.0}, {"input": [36.0, -97.0], "expected": 36.0}, {"input": [36.0, -96.5], "expected": 36.0}, {"input": [36.0, -96.0], "expected": 36.0}, {"input": [36.0, -95.5], "expected": 36.0}, {"input": [36.0, -95.0], "expected": 36.0}, {"input": [36.0, -94.5], "expected": 36.0}, {"input": [36.0, -94.0], "expected": 36.0}, {"input": [36.0, -93.5], "expected": 36.0}, {"input": [36.0, -93.0], "expected": 36.0}, {"input": [36.0, -92.5], "expected": 36.0}, {"input": [36.0, -92.0], "expected": 36.0}, {"input": [36.0, -91.5], "expected": 36.0}, {"input": [36.0, -91.0], "expected": 36.0}, {"input": [36.0, -90.5], "expected": 36.0}, {"input": [36.0, -90.0], "expected": 36.0}, {"input": [36.0, -89.5], "expected": 36.0}, {"input": [36.0, -89.0], "expected": 36.0}, {"input": [36.0, -88.5], "expected": 36.0}, {"input": [36.0, -88.0], "expected": 36.0}, {"input": [36.0, -87.5], "expected": 36.0}, {"input": [36.0, -87.0], "expected": 36.0}, {"input": [36.0, -86.5], "expected": 36.0}, {"input": [36.0, -86.0], "expected": 36.0}, {"input": [36.0, -85.5], "expected": 36.0}, {"input": [36.0, -85.0], "expected": 36.0}, {"input": [36.0, -84.5], "expected": 36.0}, {"input": [36.0, -84.0], "expected": 36.0}, {"input": [36.0, -83.5], "expected": 36.0}, {"input": [36.0, -83.0], "expected": 36.0}, {"input": [36.0, -82.5], "expected": 36.0}, {"input": [36.0, -82.0], "expected": 36.0}, {"input": [36.0, -81.5], "expected": 36.0}, {"input": [36.0, -81.0], "expected": 36.0}, {"input": [36.0, -80.5], "expected": 36.0}, {"input": [36.0, -80.0], "expected": 36.0}, {"input": [36.0, -79.5], "expected": 36.0}, {"input": [36.0, -79.0], "expected": 36.0}, {"input": [36.0, -78.5], "expected": 36.0}, {"input": [36.0, -78.0], "expected": 36.0}, {"input": [36.0, -77.5], "expected": 36.0}, {"input": [36.0, -77.0], "expected": 36.0}, {"input": [36.0, -76.5], "expected": 36.0}, {"input": [36.0, -76.0], "expected": 36.0}, {"input": [36.0, -75.5], "expected": 36.0}, {"input": [36.0, -75.0], "expected": 36.0}, {"input": [36.0, -74.5], "expected": 36.0}, {"input": [36.0, -74.0], "expected": 36.0}, {"input": [36.0, -73.5], "expected": 36.0}, {"input": [36.0, -73.0], "expected": 36.0}, {"input": [36.0, -72.5], "expected": 36.0}, {"input": [36.0, -72.0], "expected": 36.0}, {"input": [36.0, -71.5], "expected": 36.0}, {"input": [36.0, -71.0], "expected": 36.0}, {"input": [36.0, -70.5], "expected": 36.0}, {"input": [36.0, -70.0], "expected": 36.0}, {"input": [36.0, -69.5], "expected": 36.0}, {"input": [36.0, -69.0], "expected": 36.0}, {"input": [36.0, -68.5], "expected": 36.0}, {"input": [36.0, -68.0], "expected": 36.0}, {"input": [36.0, -67.5], "expected": 36.0}, {"input": [36.0, -67.0], "expected": 36.0}, {"input": [36.0, -66.5], "expected": 36.0}, {"input": [36.0, -66.0], "expected": 36.0}, {"input": [36.0, -65.5], "expected": 36.0}, {"input": [36.0, -65.0], "expected": 36.0}, {"input": [36.0, -64.5], "expected": 36.0}, {"input": [36.0, -64.0], "expected": 36.0}, {"input": [36.0, -63.5], "expected": 36.0}, {"input": [36.0, -63.0], "expected": 36.0}, {"input": [36.0, -62.5], "expected": 36.0}, {"input": [36.0, -62.0], "expected": 36.0}, {"input": [36.0, -61.5], "expected": 36.0}, {"input": [36.0, -61.0], "expected": 36.0}, {"input": [36.0, -60.5], "expected": 36.0}, {"input": [36.0, -60.0], "expected": 36.0}, {"input": [36.0, -59.5], "expected": 36.0}, {"input": [36.0, -59.0], "expected": 36.0}, {"input": [36.0, -58.5], "expected": 36.0}, {"input": [36.0, -58.0], "expected": 36.0}, {"input": [36.0, -57.5], "expected": 36.0}, {"input": [36.0, -57.0], "expected": 36.0}, {"input": [36.0, -56.5], "expected": 36.0}, {"input": [36.0, -56.0], "expected": 36.0}, {"input": [36.0, -55.5], "expected": 36.0}, {"input": [36.0, -55.0], "expected": 36.0}, {"input": [36.0, -54.5], "expected": 36.0}, {"input": [36.0, -54.0], "expected": 36.0}, {"input": [36.0, -53.5], "expected": 36.0}, {"input": [36.0, -53.0], "expected": 36.0}, {"input": [36.0, -52.5], "expected": 36.0}, {"input": [36.0, -52.0], "expected": 36.0}, {"input": [36.0, -51.5], "expected": 36.0}, {"input": [36.0, -51.0], "expected": 36.0}, {"input": [36.0, -50.5], "expected": 36.0}, {"input": [36.0, -50.0], "expected": 36.0}, {"input": [36.0, -49.5], "expected": 36.0}, {"input": [36.0, -49.0], "expected": 36.0}, {"input": [36.0, -48.5], "expected": 36.0}, {"input": [36.0, -48.0], "expected": 36.0}, {"input": [36.0, -47.5], "expected": 36.0}, {"input": [36.0, -47.0], "expected": 36.0}, {"input": [36.0, -46.5], "expected": 36.0}, {"input": [36.0, -46.0], "expected": 36.0}, {"input": [36.0, -45.5], "expected": 36.0}, {"input": [36.0, -45.0], "expected": 36.0}, {"input": [36.0, -44.5], "expected": 36.0}, {"input": [36.0, -44.0], "expected": 36.0}, {"input": [36.0, -43.5], "expected": 36.0}, {"input": [36.0, -43.0], "expected": 36.0}, {"input": [36.0, -42.5], "expected": 36.0}, {"input": [36.0, -42.0], "expected": 36.0}, {"input": [36.0, -41.5], "expected": 36.0}, {"input": [36.0, -41.0], "expected": 36.0}, {"input": [36.0, -40.5], "expected": 36.0}, {"input": [36.0, -40.0], "expected": 36.0}, {"input": [36.0, -39.5], "expected": 36.0}, {"input": [36.0, -39.0], "expected": 36.0}, {"input": [36.0, -38.5], "expected": 36.0}, {"input": [36.0, -38.0], "expected": 36.0}, {"input": [36.0, -37.5], "expected": 36.0}, {"input": [36.0, -37.0], "expected": 36.0}, {"input": [36.0, -36.5], "expected": 36.0}, {"input": [36.0, -36.0], "expected": 36.0}, {"input": [36.0, -35.5], "expected": 36.0}, {"input": [36.0, -35.0], "expected": 36.0}, {"input": [36.0, -34.5], "expected": 36.0}, {"input": [36.0, -34.0], "expected": 36.0}, {"input": [36.0, -33.5], "expected": 36.0}, {"input": [36.0, -33.0], "expected": 36.0}, {"input": [36.0, -32.5], "expected": 36.0}, {"input": [36.0, -32.0], "expected": 36.0}, {"input": [36.0, -31.5], "expected": 36.0}, {"input": [36.0, -31.0], "expected": 36.0}, {"input": [36.0, -30.5], "expected": 36.0}, {"input": [36.0, -30.0], "expected": 36.0}, {"input": [36.0, -29.5], "expected": 36.0}, {"input": [36.0, -29.0], "expected": 36.0}, {"input": [36.0, -28.5], "expected": 36.0}, {"input": [36.0, -28.0], "expected": 36.0}, {"input": [36.0, -27.5], "expected": 36.0}, {"input": [36.0, -27.0], "expected": 36.0}, {"input": [36.0, -26.5], "expected": 36.0}, {"input": [36.0, -26.0], "expected": 36.0}, {"input": [36.0, -25.5], "expected": 36.0}, {"input": [36.0, -25.0], "expected": 36.0}, {"input": [36.0, -24.5], "expected": 36.0}, {"input": [36.0, -24.0], "expected": 36.0}, {"input": [36.0, -23.5], "expected": 36.0}, {"input": [36.0, -23.0], "expected": 36.0}, {"input": [36.0, -22.5], "expected": 36.0}, {"input": [36.0, -22.0], "expected": 36.0}, {"input": [36.0, -21.5], "expected": 36.0}, {"input": [36.0, -21.0], "expected": 36.0}, {"input": [36.0, -20.5], "expected": 36.0}, {"input": [36.0, -20.0], "expected": 36.0}, {"input": [36.0, -19.5], "expected": 36.0}, {"input": [36.0, -19.0], "expected": 36.0}, {"input": [36.0, -18.5], "expected": 36.0}, {"input": [36.0, -18.0], "expected": 36.0}, {"input": [36.0, -17.5], "expected": 36.0}, {"input": [36.0, -17.0], "expected": 36.0}, {"input": [36.0, -16.5], "expected": 36.0}, {"input": [36.0, -16.0], "expected": 36.0}, {"input": [36.0, -15.5], "expected": 36.0}, {"input": [36.0, -15.0], "expected": 36.0}, {"input": [36.0, -14.5], "expected": 36.0}, {"input": [36.0, -14.0], "expected": 36.0}, {"input": [36.0, -13.5], "expected": 36.0}, {"input": [36.0, -13.0], "expected": 36.0}, {"input": [36.0, -12.5], "expected": 36.0}, {"input": [36.0, -12.0], "expected": 36.0}, {"input": [36.0, -11.5], "expected": 36.0}, {"input": [36.0, -11.0], "expected": 36.0}, {"input": [36.0, -10.5], "expected": 36.0}, {"input": [36.0, -10.0], "expected": 36.0}, {"input": [36.0, -9.5], "expected": 36.0}, {"input": [36.0, -9.0], "expected": 36.0}, {"input": [36.0, -8.5], "expected": 36.0}, {"input": [36.0, -8.0], "expected": 36.0}, {"input": [36.0, -7.5], "expected": 36.0}, {"input": [36.0, -7.0], "expected": 36.0}, {"input": [36.0, -6.5], "expected": 36.0}, {"input": [36.0, -6.0], "expected": 36.0}, {"input": [36.0, -5.5], "expected": 36.0}, {"input": [36.0, -5.0], "expected": 36.0}, {"input": [36.0, -4.5], "expected": 36.0}, {"input": [36.0, -4.0], "expected": 36.0}, {"input": [36.0, -3.5], "expected": 36.0}, {"input": [36.0, -3.0], "expected": 36.0}, {"input": [36.0, -2.5], "expected": 36.0}, {"input": [36.0, -2.0], "expected": 36.0}, {"input": [36.0, -1.5], "expected": 36.0}, {"input": [36.0, -1.0], "expected": 36.0}, {"input": [36.0, -0.5], "expected": 36.0}, {"input": [36.0, 0.0], "expected": 36.0}, {"input": [36.0, 0.5], "expected": 36.0}, {"input": [36.0, 1.0], "expected": 36.0}, {"input": [36.0, 1.5], "expected": 36.0}, {"input": [36.0, 2.0], "expected": 36.0}, {"input": [36.0, 2.5], "expected": 36.0}, {"input": [36.0, 3.0], "expected": 36.00000000000001}, {"input": [36.0, 3.5], "expected": 36.00000000000001}, {"input": [36.0, 4.0], "expected": 36.000000000000014}, {"input": [36.0, 4.5], "expected": 36.00000000000002}, {"input": [36.0, 5.0], "expected": 36.000000000000036}, {"input": [36.0, 5.5], "expected": 36.00000000000006}, {"input": [36.0, 6.0], "expected": 36.00000000000009}, {"input": [36.0, 6.5], "expected": 36.000000000000156}, {"input": [36.0, 7.0], "expected": 36.000000000000256}, {"input": [36.0, 7.5], "expected": 36.00000000000042}, {"input": [36.0, 8.0], "expected": 36.00000000000069}, {"input": [36.0, 8.5], "expected": 36.00000000000114}, {"input": [36.0, 9.0], "expected": 36.00000000000188}, {"input": [36.0, 9.5], "expected": 36.0000000000031}, {"input": [36.0, 10.0], "expected": 36.00000000000511}, {"input": [36.0, 10.5], "expected": 36.00000000000842}, {"input": [36.0, 11.0], "expected": 36.00000000001389}, {"input": [36.0, 11.5], "expected": 36.0000000000229}, {"input": [36.0, 12.0], "expected": 36.00000000003775}, {"input": [36.0, 12.5], "expected": 36.00000000006224}, {"input": [36.0, 13.0], "expected": 36.00000000010262}, {"input": [36.0, 13.5], "expected": 36.00000000016919}, {"input": [36.0, 14.0], "expected": 36.000000000278945}, {"input": [36.0, 14.5], "expected": 36.000000000459906}, {"input": [36.0, 15.0], "expected": 36.000000000758256}, {"input": [36.0, 15.5], "expected": 36.00000000125015}, {"input": [36.0, 16.0], "expected": 36.00000000206116}, {"input": [36.0, 16.5], "expected": 36.00000000339827}, {"input": [36.0, 17.0], "expected": 36.00000000560279}, {"input": [36.0, 17.5], "expected": 36.000000009237446}, {"input": [36.0, 18.0], "expected": 36.00000001522998}, {"input": [36.0, 18.5], "expected": 36.00000002510999}, {"input": [36.0, 19.0], "expected": 36.000000041399375}, {"input": [36.0, 19.5], "expected": 36.00000006825603}, {"input": [36.0, 20.0], "expected": 36.00000011253517}, {"input": [36.0, 20.5], "expected": 36.00000018553912}, {"input": [36.0, 21.0], "expected": 36.000000305902276}, {"input": [36.0, 21.5], "expected": 36.00000050434753}, {"input": [36.0, 22.0], "expected": 36.000000831528375}, {"input": [36.0, 22.5], "expected": 36.000001370958145}, {"input": [36.0, 23.0], "expected": 36.00000226032685}, {"input": [36.0, 23.5], "expected": 36.00000372664623}, {"input": [36.0, 24.0], "expected": 36.00000614419348}, {"input": [36.0, 24.5], "expected": 36.00001013004229}, {"input": [36.0, 25.0], "expected": 36.00001670156132}, {"input": [36.0, 25.5], "expected": 36.00002753607023}, {"input": [36.0, 26.0], "expected": 36.00004539889922}, {"input": [36.0, 26.5], "expected": 36.00007484902863}, {"input": [36.0, 27.0], "expected": 36.00012340218972}, {"input": [36.0, 27.5], "expected": 36.00020344767213}, {"input": [36.0, 28.0], "expected": 36.0003354063729}, {"input": [36.0, 28.5], "expected": 36.00055293147536}, {"input": [36.0, 29.0], "expected": 36.00091146645377}, {"input": [36.0, 29.5], "expected": 36.00150231015976}, {"input": [36.0, 30.0], "expected": 36.00247568513773}, {"input": [36.0, 30.5], "expected": 36.00407844327057}, {"input": [36.0, 31.0], "expected": 36.00671534848912}, {"input": [36.0, 31.5], "expected": 36.0110477448486}, {"input": [36.0, 32.0], "expected": 36.01814992791781}, {"input": [36.0, 32.5], "expected": 36.02975041827262}, {"input": [36.0, 33.0], "expected": 36.048587351573744}, {"input": [36.0, 33.5], "expected": 36.07888973429255}, {"input": [36.0, 34.0], "expected": 36.12692801104297}, {"input": [36.0, 34.5], "expected": 36.20141327798275}, {"input": [36.0, 35.0], "expected": 36.31326168751822}, {"input": [36.0, 35.5], "expected": 36.47407698418011}, {"input": [36.0, 36.0], "expected": 36.69314718055995}, {"input": [36.0, 36.5], "expected": 36.97407698418011}, {"input": [36.0, 37.0], "expected": 37.31326168751822}, {"input": [36.0, 37.5], "expected": 37.70141327798275}, {"input": [36.0, 38.0], "expected": 38.12692801104297}, {"input": [36.0, 38.5], "expected": 38.57888973429255}, {"input": [36.0, 39.0], "expected": 39.048587351573744}, {"input": [36.0, 39.5], "expected": 39.52975041827262}, {"input": [36.0, 40.0], "expected": 40.01814992791781}, {"input": [36.0, 40.5], "expected": 40.5110477448486}, {"input": [36.0, 41.0], "expected": 41.00671534848912}, {"input": [36.0, 41.5], "expected": 41.50407844327057}, {"input": [36.0, 42.0], "expected": 42.00247568513773}, {"input": [36.0, 42.5], "expected": 42.50150231015976}, {"input": [36.0, 43.0], "expected": 43.00091146645377}, {"input": [36.0, 43.5], "expected": 43.50055293147536}, {"input": [36.0, 44.0], "expected": 44.0003354063729}, {"input": [36.0, 44.5], "expected": 44.50020344767213}, {"input": [36.0, 45.0], "expected": 45.00012340218972}, {"input": [36.0, 45.5], "expected": 45.50007484902863}, {"input": [36.0, 46.0], "expected": 46.00004539889922}, {"input": [36.0, 46.5], "expected": 46.50002753607023}, {"input": [36.0, 47.0], "expected": 47.00001670156132}, {"input": [36.0, 47.5], "expected": 47.50001013004229}, {"input": [36.0, 48.0], "expected": 48.00000614419348}, {"input": [36.0, 48.5], "expected": 48.50000372664623}, {"input": [36.0, 49.0], "expected": 49.00000226032685}, {"input": [36.0, 49.5], "expected": 49.500001370958145}, {"input": [36.0, 50.0], "expected": 50.000000831528375}, {"input": [36.0, 50.5], "expected": 50.50000050434753}, {"input": [36.0, 51.0], "expected": 51.000000305902276}, {"input": [36.0, 51.5], "expected": 51.50000018553912}, {"input": [36.0, 52.0], "expected": 52.00000011253517}, {"input": [36.0, 52.5], "expected": 52.50000006825603}, {"input": [36.0, 53.0], "expected": 53.000000041399375}, {"input": [36.0, 53.5], "expected": 53.50000002510999}, {"input": [36.0, 54.0], "expected": 54.00000001522998}, {"input": [36.0, 54.5], "expected": 54.500000009237446}, {"input": [36.0, 55.0], "expected": 55.00000000560279}, {"input": [36.0, 55.5], "expected": 55.50000000339827}, {"input": [36.0, 56.0], "expected": 56.00000000206116}, {"input": [36.0, 56.5], "expected": 56.50000000125015}, {"input": [36.0, 57.0], "expected": 57.000000000758256}, {"input": [36.0, 57.5], "expected": 57.500000000459906}, {"input": [36.0, 58.0], "expected": 58.000000000278945}, {"input": [36.0, 58.5], "expected": 58.50000000016919}, {"input": [36.0, 59.0], "expected": 59.00000000010262}, {"input": [36.0, 59.5], "expected": 59.50000000006224}, {"input": [36.0, 60.0], "expected": 60.00000000003775}, {"input": [36.0, 60.5], "expected": 60.5000000000229}, {"input": [36.0, 61.0], "expected": 61.00000000001389}, {"input": [36.0, 61.5], "expected": 61.50000000000842}, {"input": [36.0, 62.0], "expected": 62.00000000000511}, {"input": [36.0, 62.5], "expected": 62.5000000000031}, {"input": [36.0, 63.0], "expected": 63.00000000000188}, {"input": [36.0, 63.5], "expected": 63.50000000000114}, {"input": [36.0, 64.0], "expected": 64.0000000000007}, {"input": [36.0, 64.5], "expected": 64.50000000000043}, {"input": [36.0, 65.0], "expected": 65.00000000000026}, {"input": [36.0, 65.5], "expected": 65.50000000000016}, {"input": [36.0, 66.0], "expected": 66.0000000000001}, {"input": [36.0, 66.5], "expected": 66.50000000000006}, {"input": [36.0, 67.0], "expected": 67.00000000000003}, {"input": [36.0, 67.5], "expected": 67.50000000000001}, {"input": [36.0, 68.0], "expected": 68.00000000000001}, {"input": [36.0, 68.5], "expected": 68.50000000000001}, {"input": [36.0, 69.0], "expected": 69.0}, {"input": [36.0, 69.5], "expected": 69.5}, {"input": [36.0, 70.0], "expected": 70.0}, {"input": [36.0, 70.5], "expected": 70.5}, {"input": [36.0, 71.0], "expected": 71.0}, {"input": [36.0, 71.5], "expected": 71.5}, {"input": [36.0, 72.0], "expected": 72.0}, {"input": [36.0, 72.5], "expected": 72.5}, {"input": [36.0, 73.0], "expected": 73.0}, {"input": [36.0, 73.5], "expected": 73.5}, {"input": [36.0, 74.0], "expected": 74.0}, {"input": [36.0, 74.5], "expected": 74.5}, {"input": [36.0, 75.0], "expected": 75.0}, {"input": [36.0, 75.5], "expected": 75.5}, {"input": [36.0, 76.0], "expected": 76.0}, {"input": [36.0, 76.5], "expected": 76.5}, {"input": [36.0, 77.0], "expected": 77.0}, {"input": [36.0, 77.5], "expected": 77.5}, {"input": [36.0, 78.0], "expected": 78.0}, {"input": [36.0, 78.5], "expected": 78.5}, {"input": [36.0, 79.0], "expected": 79.0}, {"input": [36.0, 79.5], "expected": 79.5}, {"input": [36.0, 80.0], "expected": 80.0}, {"input": [36.0, 80.5], "expected": 80.5}, {"input": [36.0, 81.0], "expected": 81.0}, {"input": [36.0, 81.5], "expected": 81.5}, {"input": [36.0, 82.0], "expected": 82.0}, {"input": [36.0, 82.5], "expected": 82.5}, {"input": [36.0, 83.0], "expected": 83.0}, {"input": [36.0, 83.5], "expected": 83.5}, {"input": [36.0, 84.0], "expected": 84.0}, {"input": [36.0, 84.5], "expected": 84.5}, {"input": [36.0, 85.0], "expected": 85.0}, {"input": [36.0, 85.5], "expected": 85.5}, {"input": [36.0, 86.0], "expected": 86.0}, {"input": [36.0, 86.5], "expected": 86.5}, {"input": [36.0, 87.0], "expected": 87.0}, {"input": [36.0, 87.5], "expected": 87.5}, {"input": [36.0, 88.0], "expected": 88.0}, {"input": [36.0, 88.5], "expected": 88.5}, {"input": [36.0, 89.0], "expected": 89.0}, {"input": [36.0, 89.5], "expected": 89.5}, {"input": [36.0, 90.0], "expected": 90.0}, {"input": [36.0, 90.5], "expected": 90.5}, {"input": [36.0, 91.0], "expected": 91.0}, {"input": [36.0, 91.5], "expected": 91.5}, {"input": [36.0, 92.0], "expected": 92.0}, {"input": [36.0, 92.5], "expected": 92.5}, {"input": [36.0, 93.0], "expected": 93.0}, {"input": [36.0, 93.5], "expected": 93.5}, {"input": [36.0, 94.0], "expected": 94.0}, {"input": [36.0, 94.5], "expected": 94.5}, {"input": [36.0, 95.0], "expected": 95.0}, {"input": [36.0, 95.5], "expected": 95.5}, {"input": [36.0, 96.0], "expected": 96.0}, {"input": [36.0, 96.5], "expected": 96.5}, {"input": [36.0, 97.0], "expected": 97.0}, {"input": [36.0, 97.5], "expected": 97.5}, {"input": [36.0, 98.0], "expected": 98.0}, {"input": [36.0, 98.5], "expected": 98.5}, {"input": [36.0, 99.0], "expected": 99.0}, {"input": [36.0, 99.5], "expected": 99.5}, {"input": [36.5, -100.0], "expected": 36.5}, {"input": [36.5, -99.5], "expected": 36.5}, {"input": [36.5, -99.0], "expected": 36.5}, {"input": [36.5, -98.5], "expected": 36.5}, {"input": [36.5, -98.0], "expected": 36.5}, {"input": [36.5, -97.5], "expected": 36.5}, {"input": [36.5, -97.0], "expected": 36.5}, {"input": [36.5, -96.5], "expected": 36.5}, {"input": [36.5, -96.0], "expected": 36.5}, {"input": [36.5, -95.5], "expected": 36.5}, {"input": [36.5, -95.0], "expected": 36.5}, {"input": [36.5, -94.5], "expected": 36.5}, {"input": [36.5, -94.0], "expected": 36.5}, {"input": [36.5, -93.5], "expected": 36.5}, {"input": [36.5, -93.0], "expected": 36.5}, {"input": [36.5, -92.5], "expected": 36.5}, {"input": [36.5, -92.0], "expected": 36.5}, {"input": [36.5, -91.5], "expected": 36.5}, {"input": [36.5, -91.0], "expected": 36.5}, {"input": [36.5, -90.5], "expected": 36.5}, {"input": [36.5, -90.0], "expected": 36.5}, {"input": [36.5, -89.5], "expected": 36.5}, {"input": [36.5, -89.0], "expected": 36.5}, {"input": [36.5, -88.5], "expected": 36.5}, {"input": [36.5, -88.0], "expected": 36.5}, {"input": [36.5, -87.5], "expected": 36.5}, {"input": [36.5, -87.0], "expected": 36.5}, {"input": [36.5, -86.5], "expected": 36.5}, {"input": [36.5, -86.0], "expected": 36.5}, {"input": [36.5, -85.5], "expected": 36.5}, {"input": [36.5, -85.0], "expected": 36.5}, {"input": [36.5, -84.5], "expected": 36.5}, {"input": [36.5, -84.0], "expected": 36.5}, {"input": [36.5, -83.5], "expected": 36.5}, {"input": [36.5, -83.0], "expected": 36.5}, {"input": [36.5, -82.5], "expected": 36.5}, {"input": [36.5, -82.0], "expected": 36.5}, {"input": [36.5, -81.5], "expected": 36.5}, {"input": [36.5, -81.0], "expected": 36.5}, {"input": [36.5, -80.5], "expected": 36.5}, {"input": [36.5, -80.0], "expected": 36.5}, {"input": [36.5, -79.5], "expected": 36.5}, {"input": [36.5, -79.0], "expected": 36.5}, {"input": [36.5, -78.5], "expected": 36.5}, {"input": [36.5, -78.0], "expected": 36.5}, {"input": [36.5, -77.5], "expected": 36.5}, {"input": [36.5, -77.0], "expected": 36.5}, {"input": [36.5, -76.5], "expected": 36.5}, {"input": [36.5, -76.0], "expected": 36.5}, {"input": [36.5, -75.5], "expected": 36.5}, {"input": [36.5, -75.0], "expected": 36.5}, {"input": [36.5, -74.5], "expected": 36.5}, {"input": [36.5, -74.0], "expected": 36.5}, {"input": [36.5, -73.5], "expected": 36.5}, {"input": [36.5, -73.0], "expected": 36.5}, {"input": [36.5, -72.5], "expected": 36.5}, {"input": [36.5, -72.0], "expected": 36.5}, {"input": [36.5, -71.5], "expected": 36.5}, {"input": [36.5, -71.0], "expected": 36.5}, {"input": [36.5, -70.5], "expected": 36.5}, {"input": [36.5, -70.0], "expected": 36.5}, {"input": [36.5, -69.5], "expected": 36.5}, {"input": [36.5, -69.0], "expected": 36.5}, {"input": [36.5, -68.5], "expected": 36.5}, {"input": [36.5, -68.0], "expected": 36.5}, {"input": [36.5, -67.5], "expected": 36.5}, {"input": [36.5, -67.0], "expected": 36.5}, {"input": [36.5, -66.5], "expected": 36.5}, {"input": [36.5, -66.0], "expected": 36.5}, {"input": [36.5, -65.5], "expected": 36.5}, {"input": [36.5, -65.0], "expected": 36.5}, {"input": [36.5, -64.5], "expected": 36.5}, {"input": [36.5, -64.0], "expected": 36.5}, {"input": [36.5, -63.5], "expected": 36.5}, {"input": [36.5, -63.0], "expected": 36.5}, {"input": [36.5, -62.5], "expected": 36.5}, {"input": [36.5, -62.0], "expected": 36.5}, {"input": [36.5, -61.5], "expected": 36.5}, {"input": [36.5, -61.0], "expected": 36.5}, {"input": [36.5, -60.5], "expected": 36.5}, {"input": [36.5, -60.0], "expected": 36.5}, {"input": [36.5, -59.5], "expected": 36.5}, {"input": [36.5, -59.0], "expected": 36.5}, {"input": [36.5, -58.5], "expected": 36.5}, {"input": [36.5, -58.0], "expected": 36.5}, {"input": [36.5, -57.5], "expected": 36.5}, {"input": [36.5, -57.0], "expected": 36.5}, {"input": [36.5, -56.5], "expected": 36.5}, {"input": [36.5, -56.0], "expected": 36.5}, {"input": [36.5, -55.5], "expected": 36.5}, {"input": [36.5, -55.0], "expected": 36.5}, {"input": [36.5, -54.5], "expected": 36.5}, {"input": [36.5, -54.0], "expected": 36.5}, {"input": [36.5, -53.5], "expected": 36.5}, {"input": [36.5, -53.0], "expected": 36.5}, {"input": [36.5, -52.5], "expected": 36.5}, {"input": [36.5, -52.0], "expected": 36.5}, {"input": [36.5, -51.5], "expected": 36.5}, {"input": [36.5, -51.0], "expected": 36.5}, {"input": [36.5, -50.5], "expected": 36.5}, {"input": [36.5, -50.0], "expected": 36.5}, {"input": [36.5, -49.5], "expected": 36.5}, {"input": [36.5, -49.0], "expected": 36.5}, {"input": [36.5, -48.5], "expected": 36.5}, {"input": [36.5, -48.0], "expected": 36.5}, {"input": [36.5, -47.5], "expected": 36.5}, {"input": [36.5, -47.0], "expected": 36.5}, {"input": [36.5, -46.5], "expected": 36.5}, {"input": [36.5, -46.0], "expected": 36.5}, {"input": [36.5, -45.5], "expected": 36.5}, {"input": [36.5, -45.0], "expected": 36.5}, {"input": [36.5, -44.5], "expected": 36.5}, {"input": [36.5, -44.0], "expected": 36.5}, {"input": [36.5, -43.5], "expected": 36.5}, {"input": [36.5, -43.0], "expected": 36.5}, {"input": [36.5, -42.5], "expected": 36.5}, {"input": [36.5, -42.0], "expected": 36.5}, {"input": [36.5, -41.5], "expected": 36.5}, {"input": [36.5, -41.0], "expected": 36.5}, {"input": [36.5, -40.5], "expected": 36.5}, {"input": [36.5, -40.0], "expected": 36.5}, {"input": [36.5, -39.5], "expected": 36.5}, {"input": [36.5, -39.0], "expected": 36.5}, {"input": [36.5, -38.5], "expected": 36.5}, {"input": [36.5, -38.0], "expected": 36.5}, {"input": [36.5, -37.5], "expected": 36.5}, {"input": [36.5, -37.0], "expected": 36.5}, {"input": [36.5, -36.5], "expected": 36.5}, {"input": [36.5, -36.0], "expected": 36.5}, {"input": [36.5, -35.5], "expected": 36.5}, {"input": [36.5, -35.0], "expected": 36.5}, {"input": [36.5, -34.5], "expected": 36.5}, {"input": [36.5, -34.0], "expected": 36.5}, {"input": [36.5, -33.5], "expected": 36.5}, {"input": [36.5, -33.0], "expected": 36.5}, {"input": [36.5, -32.5], "expected": 36.5}, {"input": [36.5, -32.0], "expected": 36.5}, {"input": [36.5, -31.5], "expected": 36.5}, {"input": [36.5, -31.0], "expected": 36.5}, {"input": [36.5, -30.5], "expected": 36.5}, {"input": [36.5, -30.0], "expected": 36.5}, {"input": [36.5, -29.5], "expected": 36.5}, {"input": [36.5, -29.0], "expected": 36.5}, {"input": [36.5, -28.5], "expected": 36.5}, {"input": [36.5, -28.0], "expected": 36.5}, {"input": [36.5, -27.5], "expected": 36.5}, {"input": [36.5, -27.0], "expected": 36.5}, {"input": [36.5, -26.5], "expected": 36.5}, {"input": [36.5, -26.0], "expected": 36.5}, {"input": [36.5, -25.5], "expected": 36.5}, {"input": [36.5, -25.0], "expected": 36.5}, {"input": [36.5, -24.5], "expected": 36.5}, {"input": [36.5, -24.0], "expected": 36.5}, {"input": [36.5, -23.5], "expected": 36.5}, {"input": [36.5, -23.0], "expected": 36.5}, {"input": [36.5, -22.5], "expected": 36.5}, {"input": [36.5, -22.0], "expected": 36.5}, {"input": [36.5, -21.5], "expected": 36.5}, {"input": [36.5, -21.0], "expected": 36.5}, {"input": [36.5, -20.5], "expected": 36.5}, {"input": [36.5, -20.0], "expected": 36.5}, {"input": [36.5, -19.5], "expected": 36.5}, {"input": [36.5, -19.0], "expected": 36.5}, {"input": [36.5, -18.5], "expected": 36.5}, {"input": [36.5, -18.0], "expected": 36.5}, {"input": [36.5, -17.5], "expected": 36.5}, {"input": [36.5, -17.0], "expected": 36.5}, {"input": [36.5, -16.5], "expected": 36.5}, {"input": [36.5, -16.0], "expected": 36.5}, {"input": [36.5, -15.5], "expected": 36.5}, {"input": [36.5, -15.0], "expected": 36.5}, {"input": [36.5, -14.5], "expected": 36.5}, {"input": [36.5, -14.0], "expected": 36.5}, {"input": [36.5, -13.5], "expected": 36.5}, {"input": [36.5, -13.0], "expected": 36.5}, {"input": [36.5, -12.5], "expected": 36.5}, {"input": [36.5, -12.0], "expected": 36.5}, {"input": [36.5, -11.5], "expected": 36.5}, {"input": [36.5, -11.0], "expected": 36.5}, {"input": [36.5, -10.5], "expected": 36.5}, {"input": [36.5, -10.0], "expected": 36.5}, {"input": [36.5, -9.5], "expected": 36.5}, {"input": [36.5, -9.0], "expected": 36.5}, {"input": [36.5, -8.5], "expected": 36.5}, {"input": [36.5, -8.0], "expected": 36.5}, {"input": [36.5, -7.5], "expected": 36.5}, {"input": [36.5, -7.0], "expected": 36.5}, {"input": [36.5, -6.5], "expected": 36.5}, {"input": [36.5, -6.0], "expected": 36.5}, {"input": [36.5, -5.5], "expected": 36.5}, {"input": [36.5, -5.0], "expected": 36.5}, {"input": [36.5, -4.5], "expected": 36.5}, {"input": [36.5, -4.0], "expected": 36.5}, {"input": [36.5, -3.5], "expected": 36.5}, {"input": [36.5, -3.0], "expected": 36.5}, {"input": [36.5, -2.5], "expected": 36.5}, {"input": [36.5, -2.0], "expected": 36.5}, {"input": [36.5, -1.5], "expected": 36.5}, {"input": [36.5, -1.0], "expected": 36.5}, {"input": [36.5, -0.5], "expected": 36.5}, {"input": [36.5, 0.0], "expected": 36.5}, {"input": [36.5, 0.5], "expected": 36.5}, {"input": [36.5, 1.0], "expected": 36.5}, {"input": [36.5, 1.5], "expected": 36.5}, {"input": [36.5, 2.0], "expected": 36.5}, {"input": [36.5, 2.5], "expected": 36.5}, {"input": [36.5, 3.0], "expected": 36.5}, {"input": [36.5, 3.5], "expected": 36.50000000000001}, {"input": [36.5, 4.0], "expected": 36.50000000000001}, {"input": [36.5, 4.5], "expected": 36.500000000000014}, {"input": [36.5, 5.0], "expected": 36.50000000000002}, {"input": [36.5, 5.5], "expected": 36.500000000000036}, {"input": [36.5, 6.0], "expected": 36.50000000000006}, {"input": [36.5, 6.5], "expected": 36.50000000000009}, {"input": [36.5, 7.0], "expected": 36.500000000000156}, {"input": [36.5, 7.5], "expected": 36.500000000000256}, {"input": [36.5, 8.0], "expected": 36.50000000000042}, {"input": [36.5, 8.5], "expected": 36.50000000000069}, {"input": [36.5, 9.0], "expected": 36.50000000000114}, {"input": [36.5, 9.5], "expected": 36.50000000000188}, {"input": [36.5, 10.0], "expected": 36.5000000000031}, {"input": [36.5, 10.5], "expected": 36.50000000000511}, {"input": [36.5, 11.0], "expected": 36.50000000000842}, {"input": [36.5, 11.5], "expected": 36.50000000001389}, {"input": [36.5, 12.0], "expected": 36.5000000000229}, {"input": [36.5, 12.5], "expected": 36.50000000003775}, {"input": [36.5, 13.0], "expected": 36.50000000006224}, {"input": [36.5, 13.5], "expected": 36.50000000010262}, {"input": [36.5, 14.0], "expected": 36.50000000016919}, {"input": [36.5, 14.5], "expected": 36.500000000278945}, {"input": [36.5, 15.0], "expected": 36.500000000459906}, {"input": [36.5, 15.5], "expected": 36.500000000758256}, {"input": [36.5, 16.0], "expected": 36.50000000125015}, {"input": [36.5, 16.5], "expected": 36.50000000206116}, {"input": [36.5, 17.0], "expected": 36.50000000339827}, {"input": [36.5, 17.5], "expected": 36.50000000560279}, {"input": [36.5, 18.0], "expected": 36.500000009237446}, {"input": [36.5, 18.5], "expected": 36.50000001522998}, {"input": [36.5, 19.0], "expected": 36.50000002510999}, {"input": [36.5, 19.5], "expected": 36.500000041399375}, {"input": [36.5, 20.0], "expected": 36.50000006825603}, {"input": [36.5, 20.5], "expected": 36.50000011253517}, {"input": [36.5, 21.0], "expected": 36.50000018553912}, {"input": [36.5, 21.5], "expected": 36.500000305902276}, {"input": [36.5, 22.0], "expected": 36.50000050434753}, {"input": [36.5, 22.5], "expected": 36.500000831528375}, {"input": [36.5, 23.0], "expected": 36.500001370958145}, {"input": [36.5, 23.5], "expected": 36.50000226032685}, {"input": [36.5, 24.0], "expected": 36.50000372664623}, {"input": [36.5, 24.5], "expected": 36.50000614419348}, {"input": [36.5, 25.0], "expected": 36.50001013004229}, {"input": [36.5, 25.5], "expected": 36.50001670156132}, {"input": [36.5, 26.0], "expected": 36.50002753607023}, {"input": [36.5, 26.5], "expected": 36.50004539889922}, {"input": [36.5, 27.0], "expected": 36.50007484902863}, {"input": [36.5, 27.5], "expected": 36.50012340218972}, {"input": [36.5, 28.0], "expected": 36.50020344767213}, {"input": [36.5, 28.5], "expected": 36.5003354063729}, {"input": [36.5, 29.0], "expected": 36.50055293147536}, {"input": [36.5, 29.5], "expected": 36.50091146645377}, {"input": [36.5, 30.0], "expected": 36.50150231015976}, {"input": [36.5, 30.5], "expected": 36.50247568513773}, {"input": [36.5, 31.0], "expected": 36.50407844327057}, {"input": [36.5, 31.5], "expected": 36.50671534848912}, {"input": [36.5, 32.0], "expected": 36.5110477448486}, {"input": [36.5, 32.5], "expected": 36.51814992791781}, {"input": [36.5, 33.0], "expected": 36.52975041827262}, {"input": [36.5, 33.5], "expected": 36.548587351573744}, {"input": [36.5, 34.0], "expected": 36.57888973429255}, {"input": [36.5, 34.5], "expected": 36.62692801104297}, {"input": [36.5, 35.0], "expected": 36.70141327798275}, {"input": [36.5, 35.5], "expected": 36.81326168751822}, {"input": [36.5, 36.0], "expected": 36.97407698418011}, {"input": [36.5, 36.5], "expected": 37.19314718055995}, {"input": [36.5, 37.0], "expected": 37.47407698418011}, {"input": [36.5, 37.5], "expected": 37.81326168751822}, {"input": [36.5, 38.0], "expected": 38.20141327798275}, {"input": [36.5, 38.5], "expected": 38.62692801104297}, {"input": [36.5, 39.0], "expected": 39.07888973429255}, {"input": [36.5, 39.5], "expected": 39.548587351573744}, {"input": [36.5, 40.0], "expected": 40.02975041827262}, {"input": [36.5, 40.5], "expected": 40.51814992791781}, {"input": [36.5, 41.0], "expected": 41.0110477448486}, {"input": [36.5, 41.5], "expected": 41.50671534848912}, {"input": [36.5, 42.0], "expected": 42.00407844327057}, {"input": [36.5, 42.5], "expected": 42.50247568513773}, {"input": [36.5, 43.0], "expected": 43.00150231015976}, {"input": [36.5, 43.5], "expected": 43.50091146645377}, {"input": [36.5, 44.0], "expected": 44.00055293147536}, {"input": [36.5, 44.5], "expected": 44.5003354063729}, {"input": [36.5, 45.0], "expected": 45.00020344767213}, {"input": [36.5, 45.5], "expected": 45.50012340218972}, {"input": [36.5, 46.0], "expected": 46.00007484902863}, {"input": [36.5, 46.5], "expected": 46.50004539889922}, {"input": [36.5, 47.0], "expected": 47.00002753607023}, {"input": [36.5, 47.5], "expected": 47.50001670156132}, {"input": [36.5, 48.0], "expected": 48.00001013004229}, {"input": [36.5, 48.5], "expected": 48.50000614419348}, {"input": [36.5, 49.0], "expected": 49.00000372664623}, {"input": [36.5, 49.5], "expected": 49.50000226032685}, {"input": [36.5, 50.0], "expected": 50.000001370958145}, {"input": [36.5, 50.5], "expected": 50.500000831528375}, {"input": [36.5, 51.0], "expected": 51.00000050434753}, {"input": [36.5, 51.5], "expected": 51.500000305902276}, {"input": [36.5, 52.0], "expected": 52.00000018553912}, {"input": [36.5, 52.5], "expected": 52.50000011253517}, {"input": [36.5, 53.0], "expected": 53.00000006825603}, {"input": [36.5, 53.5], "expected": 53.500000041399375}, {"input": [36.5, 54.0], "expected": 54.00000002510999}, {"input": [36.5, 54.5], "expected": 54.50000001522998}, {"input": [36.5, 55.0], "expected": 55.000000009237446}, {"input": [36.5, 55.5], "expected": 55.50000000560279}, {"input": [36.5, 56.0], "expected": 56.00000000339827}, {"input": [36.5, 56.5], "expected": 56.50000000206116}, {"input": [36.5, 57.0], "expected": 57.00000000125015}, {"input": [36.5, 57.5], "expected": 57.500000000758256}, {"input": [36.5, 58.0], "expected": 58.000000000459906}, {"input": [36.5, 58.5], "expected": 58.500000000278945}, {"input": [36.5, 59.0], "expected": 59.00000000016919}, {"input": [36.5, 59.5], "expected": 59.50000000010262}, {"input": [36.5, 60.0], "expected": 60.00000000006224}, {"input": [36.5, 60.5], "expected": 60.50000000003775}, {"input": [36.5, 61.0], "expected": 61.0000000000229}, {"input": [36.5, 61.5], "expected": 61.50000000001389}, {"input": [36.5, 62.0], "expected": 62.00000000000842}, {"input": [36.5, 62.5], "expected": 62.50000000000511}, {"input": [36.5, 63.0], "expected": 63.0000000000031}, {"input": [36.5, 63.5], "expected": 63.50000000000188}, {"input": [36.5, 64.0], "expected": 64.00000000000114}, {"input": [36.5, 64.5], "expected": 64.5000000000007}, {"input": [36.5, 65.0], "expected": 65.00000000000043}, {"input": [36.5, 65.5], "expected": 65.50000000000026}, {"input": [36.5, 66.0], "expected": 66.00000000000016}, {"input": [36.5, 66.5], "expected": 66.5000000000001}, {"input": [36.5, 67.0], "expected": 67.00000000000006}, {"input": [36.5, 67.5], "expected": 67.50000000000003}, {"input": [36.5, 68.0], "expected": 68.00000000000001}, {"input": [36.5, 68.5], "expected": 68.50000000000001}, {"input": [36.5, 69.0], "expected": 69.00000000000001}, {"input": [36.5, 69.5], "expected": 69.5}, {"input": [36.5, 70.0], "expected": 70.0}, {"input": [36.5, 70.5], "expected": 70.5}, {"input": [36.5, 71.0], "expected": 71.0}, {"input": [36.5, 71.5], "expected": 71.5}, {"input": [36.5, 72.0], "expected": 72.0}, {"input": [36.5, 72.5], "expected": 72.5}, {"input": [36.5, 73.0], "expected": 73.0}, {"input": [36.5, 73.5], "expected": 73.5}, {"input": [36.5, 74.0], "expected": 74.0}, {"input": [36.5, 74.5], "expected": 74.5}, {"input": [36.5, 75.0], "expected": 75.0}, {"input": [36.5, 75.5], "expected": 75.5}, {"input": [36.5, 76.0], "expected": 76.0}, {"input": [36.5, 76.5], "expected": 76.5}, {"input": [36.5, 77.0], "expected": 77.0}, {"input": [36.5, 77.5], "expected": 77.5}, {"input": [36.5, 78.0], "expected": 78.0}, {"input": [36.5, 78.5], "expected": 78.5}, {"input": [36.5, 79.0], "expected": 79.0}, {"input": [36.5, 79.5], "expected": 79.5}, {"input": [36.5, 80.0], "expected": 80.0}, {"input": [36.5, 80.5], "expected": 80.5}, {"input": [36.5, 81.0], "expected": 81.0}, {"input": [36.5, 81.5], "expected": 81.5}, {"input": [36.5, 82.0], "expected": 82.0}, {"input": [36.5, 82.5], "expected": 82.5}, {"input": [36.5, 83.0], "expected": 83.0}, {"input": [36.5, 83.5], "expected": 83.5}, {"input": [36.5, 84.0], "expected": 84.0}, {"input": [36.5, 84.5], "expected": 84.5}, {"input": [36.5, 85.0], "expected": 85.0}, {"input": [36.5, 85.5], "expected": 85.5}, {"input": [36.5, 86.0], "expected": 86.0}, {"input": [36.5, 86.5], "expected": 86.5}, {"input": [36.5, 87.0], "expected": 87.0}, {"input": [36.5, 87.5], "expected": 87.5}, {"input": [36.5, 88.0], "expected": 88.0}, {"input": [36.5, 88.5], "expected": 88.5}, {"input": [36.5, 89.0], "expected": 89.0}, {"input": [36.5, 89.5], "expected": 89.5}, {"input": [36.5, 90.0], "expected": 90.0}, {"input": [36.5, 90.5], "expected": 90.5}, {"input": [36.5, 91.0], "expected": 91.0}, {"input": [36.5, 91.5], "expected": 91.5}, {"input": [36.5, 92.0], "expected": 92.0}, {"input": [36.5, 92.5], "expected": 92.5}, {"input": [36.5, 93.0], "expected": 93.0}, {"input": [36.5, 93.5], "expected": 93.5}, {"input": [36.5, 94.0], "expected": 94.0}, {"input": [36.5, 94.5], "expected": 94.5}, {"input": [36.5, 95.0], "expected": 95.0}, {"input": [36.5, 95.5], "expected": 95.5}, {"input": [36.5, 96.0], "expected": 96.0}, {"input": [36.5, 96.5], "expected": 96.5}, {"input": [36.5, 97.0], "expected": 97.0}, {"input": [36.5, 97.5], "expected": 97.5}, {"input": [36.5, 98.0], "expected": 98.0}, {"input": [36.5, 98.5], "expected": 98.5}, {"input": [36.5, 99.0], "expected": 99.0}, {"input": [36.5, 99.5], "expected": 99.5}, {"input": [37.0, -100.0], "expected": 37.0}, {"input": [37.0, -99.5], "expected": 37.0}, {"input": [37.0, -99.0], "expected": 37.0}, {"input": [37.0, -98.5], "expected": 37.0}, {"input": [37.0, -98.0], "expected": 37.0}, {"input": [37.0, -97.5], "expected": 37.0}, {"input": [37.0, -97.0], "expected": 37.0}, {"input": [37.0, -96.5], "expected": 37.0}, {"input": [37.0, -96.0], "expected": 37.0}, {"input": [37.0, -95.5], "expected": 37.0}, {"input": [37.0, -95.0], "expected": 37.0}, {"input": [37.0, -94.5], "expected": 37.0}, {"input": [37.0, -94.0], "expected": 37.0}, {"input": [37.0, -93.5], "expected": 37.0}, {"input": [37.0, -93.0], "expected": 37.0}, {"input": [37.0, -92.5], "expected": 37.0}, {"input": [37.0, -92.0], "expected": 37.0}, {"input": [37.0, -91.5], "expected": 37.0}, {"input": [37.0, -91.0], "expected": 37.0}, {"input": [37.0, -90.5], "expected": 37.0}, {"input": [37.0, -90.0], "expected": 37.0}, {"input": [37.0, -89.5], "expected": 37.0}, {"input": [37.0, -89.0], "expected": 37.0}, {"input": [37.0, -88.5], "expected": 37.0}, {"input": [37.0, -88.0], "expected": 37.0}, {"input": [37.0, -87.5], "expected": 37.0}, {"input": [37.0, -87.0], "expected": 37.0}, {"input": [37.0, -86.5], "expected": 37.0}, {"input": [37.0, -86.0], "expected": 37.0}, {"input": [37.0, -85.5], "expected": 37.0}, {"input": [37.0, -85.0], "expected": 37.0}, {"input": [37.0, -84.5], "expected": 37.0}, {"input": [37.0, -84.0], "expected": 37.0}, {"input": [37.0, -83.5], "expected": 37.0}, {"input": [37.0, -83.0], "expected": 37.0}, {"input": [37.0, -82.5], "expected": 37.0}, {"input": [37.0, -82.0], "expected": 37.0}, {"input": [37.0, -81.5], "expected": 37.0}, {"input": [37.0, -81.0], "expected": 37.0}, {"input": [37.0, -80.5], "expected": 37.0}, {"input": [37.0, -80.0], "expected": 37.0}, {"input": [37.0, -79.5], "expected": 37.0}, {"input": [37.0, -79.0], "expected": 37.0}, {"input": [37.0, -78.5], "expected": 37.0}, {"input": [37.0, -78.0], "expected": 37.0}, {"input": [37.0, -77.5], "expected": 37.0}, {"input": [37.0, -77.0], "expected": 37.0}, {"input": [37.0, -76.5], "expected": 37.0}, {"input": [37.0, -76.0], "expected": 37.0}, {"input": [37.0, -75.5], "expected": 37.0}, {"input": [37.0, -75.0], "expected": 37.0}, {"input": [37.0, -74.5], "expected": 37.0}, {"input": [37.0, -74.0], "expected": 37.0}, {"input": [37.0, -73.5], "expected": 37.0}, {"input": [37.0, -73.0], "expected": 37.0}, {"input": [37.0, -72.5], "expected": 37.0}, {"input": [37.0, -72.0], "expected": 37.0}, {"input": [37.0, -71.5], "expected": 37.0}, {"input": [37.0, -71.0], "expected": 37.0}, {"input": [37.0, -70.5], "expected": 37.0}, {"input": [37.0, -70.0], "expected": 37.0}, {"input": [37.0, -69.5], "expected": 37.0}, {"input": [37.0, -69.0], "expected": 37.0}, {"input": [37.0, -68.5], "expected": 37.0}, {"input": [37.0, -68.0], "expected": 37.0}, {"input": [37.0, -67.5], "expected": 37.0}, {"input": [37.0, -67.0], "expected": 37.0}, {"input": [37.0, -66.5], "expected": 37.0}, {"input": [37.0, -66.0], "expected": 37.0}, {"input": [37.0, -65.5], "expected": 37.0}, {"input": [37.0, -65.0], "expected": 37.0}, {"input": [37.0, -64.5], "expected": 37.0}, {"input": [37.0, -64.0], "expected": 37.0}, {"input": [37.0, -63.5], "expected": 37.0}, {"input": [37.0, -63.0], "expected": 37.0}, {"input": [37.0, -62.5], "expected": 37.0}, {"input": [37.0, -62.0], "expected": 37.0}, {"input": [37.0, -61.5], "expected": 37.0}, {"input": [37.0, -61.0], "expected": 37.0}, {"input": [37.0, -60.5], "expected": 37.0}, {"input": [37.0, -60.0], "expected": 37.0}, {"input": [37.0, -59.5], "expected": 37.0}, {"input": [37.0, -59.0], "expected": 37.0}, {"input": [37.0, -58.5], "expected": 37.0}, {"input": [37.0, -58.0], "expected": 37.0}, {"input": [37.0, -57.5], "expected": 37.0}, {"input": [37.0, -57.0], "expected": 37.0}, {"input": [37.0, -56.5], "expected": 37.0}, {"input": [37.0, -56.0], "expected": 37.0}, {"input": [37.0, -55.5], "expected": 37.0}, {"input": [37.0, -55.0], "expected": 37.0}, {"input": [37.0, -54.5], "expected": 37.0}, {"input": [37.0, -54.0], "expected": 37.0}, {"input": [37.0, -53.5], "expected": 37.0}, {"input": [37.0, -53.0], "expected": 37.0}, {"input": [37.0, -52.5], "expected": 37.0}, {"input": [37.0, -52.0], "expected": 37.0}, {"input": [37.0, -51.5], "expected": 37.0}, {"input": [37.0, -51.0], "expected": 37.0}, {"input": [37.0, -50.5], "expected": 37.0}, {"input": [37.0, -50.0], "expected": 37.0}, {"input": [37.0, -49.5], "expected": 37.0}, {"input": [37.0, -49.0], "expected": 37.0}, {"input": [37.0, -48.5], "expected": 37.0}, {"input": [37.0, -48.0], "expected": 37.0}, {"input": [37.0, -47.5], "expected": 37.0}, {"input": [37.0, -47.0], "expected": 37.0}, {"input": [37.0, -46.5], "expected": 37.0}, {"input": [37.0, -46.0], "expected": 37.0}, {"input": [37.0, -45.5], "expected": 37.0}, {"input": [37.0, -45.0], "expected": 37.0}, {"input": [37.0, -44.5], "expected": 37.0}, {"input": [37.0, -44.0], "expected": 37.0}, {"input": [37.0, -43.5], "expected": 37.0}, {"input": [37.0, -43.0], "expected": 37.0}, {"input": [37.0, -42.5], "expected": 37.0}, {"input": [37.0, -42.0], "expected": 37.0}, {"input": [37.0, -41.5], "expected": 37.0}, {"input": [37.0, -41.0], "expected": 37.0}, {"input": [37.0, -40.5], "expected": 37.0}, {"input": [37.0, -40.0], "expected": 37.0}, {"input": [37.0, -39.5], "expected": 37.0}, {"input": [37.0, -39.0], "expected": 37.0}, {"input": [37.0, -38.5], "expected": 37.0}, {"input": [37.0, -38.0], "expected": 37.0}, {"input": [37.0, -37.5], "expected": 37.0}, {"input": [37.0, -37.0], "expected": 37.0}, {"input": [37.0, -36.5], "expected": 37.0}, {"input": [37.0, -36.0], "expected": 37.0}, {"input": [37.0, -35.5], "expected": 37.0}, {"input": [37.0, -35.0], "expected": 37.0}, {"input": [37.0, -34.5], "expected": 37.0}, {"input": [37.0, -34.0], "expected": 37.0}, {"input": [37.0, -33.5], "expected": 37.0}, {"input": [37.0, -33.0], "expected": 37.0}, {"input": [37.0, -32.5], "expected": 37.0}, {"input": [37.0, -32.0], "expected": 37.0}, {"input": [37.0, -31.5], "expected": 37.0}, {"input": [37.0, -31.0], "expected": 37.0}, {"input": [37.0, -30.5], "expected": 37.0}, {"input": [37.0, -30.0], "expected": 37.0}, {"input": [37.0, -29.5], "expected": 37.0}, {"input": [37.0, -29.0], "expected": 37.0}, {"input": [37.0, -28.5], "expected": 37.0}, {"input": [37.0, -28.0], "expected": 37.0}, {"input": [37.0, -27.5], "expected": 37.0}, {"input": [37.0, -27.0], "expected": 37.0}, {"input": [37.0, -26.5], "expected": 37.0}, {"input": [37.0, -26.0], "expected": 37.0}, {"input": [37.0, -25.5], "expected": 37.0}, {"input": [37.0, -25.0], "expected": 37.0}, {"input": [37.0, -24.5], "expected": 37.0}, {"input": [37.0, -24.0], "expected": 37.0}, {"input": [37.0, -23.5], "expected": 37.0}, {"input": [37.0, -23.0], "expected": 37.0}, {"input": [37.0, -22.5], "expected": 37.0}, {"input": [37.0, -22.0], "expected": 37.0}, {"input": [37.0, -21.5], "expected": 37.0}, {"input": [37.0, -21.0], "expected": 37.0}, {"input": [37.0, -20.5], "expected": 37.0}, {"input": [37.0, -20.0], "expected": 37.0}, {"input": [37.0, -19.5], "expected": 37.0}, {"input": [37.0, -19.0], "expected": 37.0}, {"input": [37.0, -18.5], "expected": 37.0}, {"input": [37.0, -18.0], "expected": 37.0}, {"input": [37.0, -17.5], "expected": 37.0}, {"input": [37.0, -17.0], "expected": 37.0}, {"input": [37.0, -16.5], "expected": 37.0}, {"input": [37.0, -16.0], "expected": 37.0}, {"input": [37.0, -15.5], "expected": 37.0}, {"input": [37.0, -15.0], "expected": 37.0}, {"input": [37.0, -14.5], "expected": 37.0}, {"input": [37.0, -14.0], "expected": 37.0}, {"input": [37.0, -13.5], "expected": 37.0}, {"input": [37.0, -13.0], "expected": 37.0}, {"input": [37.0, -12.5], "expected": 37.0}, {"input": [37.0, -12.0], "expected": 37.0}, {"input": [37.0, -11.5], "expected": 37.0}, {"input": [37.0, -11.0], "expected": 37.0}, {"input": [37.0, -10.5], "expected": 37.0}, {"input": [37.0, -10.0], "expected": 37.0}, {"input": [37.0, -9.5], "expected": 37.0}, {"input": [37.0, -9.0], "expected": 37.0}, {"input": [37.0, -8.5], "expected": 37.0}, {"input": [37.0, -8.0], "expected": 37.0}, {"input": [37.0, -7.5], "expected": 37.0}, {"input": [37.0, -7.0], "expected": 37.0}, {"input": [37.0, -6.5], "expected": 37.0}, {"input": [37.0, -6.0], "expected": 37.0}, {"input": [37.0, -5.5], "expected": 37.0}, {"input": [37.0, -5.0], "expected": 37.0}, {"input": [37.0, -4.5], "expected": 37.0}, {"input": [37.0, -4.0], "expected": 37.0}, {"input": [37.0, -3.5], "expected": 37.0}, {"input": [37.0, -3.0], "expected": 37.0}, {"input": [37.0, -2.5], "expected": 37.0}, {"input": [37.0, -2.0], "expected": 37.0}, {"input": [37.0, -1.5], "expected": 37.0}, {"input": [37.0, -1.0], "expected": 37.0}, {"input": [37.0, -0.5], "expected": 37.0}, {"input": [37.0, 0.0], "expected": 37.0}, {"input": [37.0, 0.5], "expected": 37.0}, {"input": [37.0, 1.0], "expected": 37.0}, {"input": [37.0, 1.5], "expected": 37.0}, {"input": [37.0, 2.0], "expected": 37.0}, {"input": [37.0, 2.5], "expected": 37.0}, {"input": [37.0, 3.0], "expected": 37.0}, {"input": [37.0, 3.5], "expected": 37.0}, {"input": [37.0, 4.0], "expected": 37.00000000000001}, {"input": [37.0, 4.5], "expected": 37.00000000000001}, {"input": [37.0, 5.0], "expected": 37.000000000000014}, {"input": [37.0, 5.5], "expected": 37.00000000000002}, {"input": [37.0, 6.0], "expected": 37.000000000000036}, {"input": [37.0, 6.5], "expected": 37.00000000000006}, {"input": [37.0, 7.0], "expected": 37.00000000000009}, {"input": [37.0, 7.5], "expected": 37.000000000000156}, {"input": [37.0, 8.0], "expected": 37.000000000000256}, {"input": [37.0, 8.5], "expected": 37.00000000000042}, {"input": [37.0, 9.0], "expected": 37.00000000000069}, {"input": [37.0, 9.5], "expected": 37.00000000000114}, {"input": [37.0, 10.0], "expected": 37.00000000000188}, {"input": [37.0, 10.5], "expected": 37.0000000000031}, {"input": [37.0, 11.0], "expected": 37.00000000000511}, {"input": [37.0, 11.5], "expected": 37.00000000000842}, {"input": [37.0, 12.0], "expected": 37.00000000001389}, {"input": [37.0, 12.5], "expected": 37.0000000000229}, {"input": [37.0, 13.0], "expected": 37.00000000003775}, {"input": [37.0, 13.5], "expected": 37.00000000006224}, {"input": [37.0, 14.0], "expected": 37.00000000010262}, {"input": [37.0, 14.5], "expected": 37.00000000016919}, {"input": [37.0, 15.0], "expected": 37.000000000278945}, {"input": [37.0, 15.5], "expected": 37.000000000459906}, {"input": [37.0, 16.0], "expected": 37.000000000758256}, {"input": [37.0, 16.5], "expected": 37.00000000125015}, {"input": [37.0, 17.0], "expected": 37.00000000206116}, {"input": [37.0, 17.5], "expected": 37.00000000339827}, {"input": [37.0, 18.0], "expected": 37.00000000560279}, {"input": [37.0, 18.5], "expected": 37.000000009237446}, {"input": [37.0, 19.0], "expected": 37.00000001522998}, {"input": [37.0, 19.5], "expected": 37.00000002510999}, {"input": [37.0, 20.0], "expected": 37.000000041399375}, {"input": [37.0, 20.5], "expected": 37.00000006825603}, {"input": [37.0, 21.0], "expected": 37.00000011253517}, {"input": [37.0, 21.5], "expected": 37.00000018553912}, {"input": [37.0, 22.0], "expected": 37.000000305902276}, {"input": [37.0, 22.5], "expected": 37.00000050434753}, {"input": [37.0, 23.0], "expected": 37.000000831528375}, {"input": [37.0, 23.5], "expected": 37.000001370958145}, {"input": [37.0, 24.0], "expected": 37.00000226032685}, {"input": [37.0, 24.5], "expected": 37.00000372664623}, {"input": [37.0, 25.0], "expected": 37.00000614419348}, {"input": [37.0, 25.5], "expected": 37.00001013004229}, {"input": [37.0, 26.0], "expected": 37.00001670156132}, {"input": [37.0, 26.5], "expected": 37.00002753607023}, {"input": [37.0, 27.0], "expected": 37.00004539889922}, {"input": [37.0, 27.5], "expected": 37.00007484902863}, {"input": [37.0, 28.0], "expected": 37.00012340218972}, {"input": [37.0, 28.5], "expected": 37.00020344767213}, {"input": [37.0, 29.0], "expected": 37.0003354063729}, {"input": [37.0, 29.5], "expected": 37.00055293147536}, {"input": [37.0, 30.0], "expected": 37.00091146645377}, {"input": [37.0, 30.5], "expected": 37.00150231015976}, {"input": [37.0, 31.0], "expected": 37.00247568513773}, {"input": [37.0, 31.5], "expected": 37.00407844327057}, {"input": [37.0, 32.0], "expected": 37.00671534848912}, {"input": [37.0, 32.5], "expected": 37.0110477448486}, {"input": [37.0, 33.0], "expected": 37.01814992791781}, {"input": [37.0, 33.5], "expected": 37.02975041827262}, {"input": [37.0, 34.0], "expected": 37.048587351573744}, {"input": [37.0, 34.5], "expected": 37.07888973429255}, {"input": [37.0, 35.0], "expected": 37.12692801104297}, {"input": [37.0, 35.5], "expected": 37.20141327798275}, {"input": [37.0, 36.0], "expected": 37.31326168751822}, {"input": [37.0, 36.5], "expected": 37.47407698418011}, {"input": [37.0, 37.0], "expected": 37.69314718055995}, {"input": [37.0, 37.5], "expected": 37.97407698418011}, {"input": [37.0, 38.0], "expected": 38.31326168751822}, {"input": [37.0, 38.5], "expected": 38.70141327798275}, {"input": [37.0, 39.0], "expected": 39.12692801104297}, {"input": [37.0, 39.5], "expected": 39.57888973429255}, {"input": [37.0, 40.0], "expected": 40.048587351573744}, {"input": [37.0, 40.5], "expected": 40.52975041827262}, {"input": [37.0, 41.0], "expected": 41.01814992791781}, {"input": [37.0, 41.5], "expected": 41.5110477448486}, {"input": [37.0, 42.0], "expected": 42.00671534848912}, {"input": [37.0, 42.5], "expected": 42.50407844327057}, {"input": [37.0, 43.0], "expected": 43.00247568513773}, {"input": [37.0, 43.5], "expected": 43.50150231015976}, {"input": [37.0, 44.0], "expected": 44.00091146645377}, {"input": [37.0, 44.5], "expected": 44.50055293147536}, {"input": [37.0, 45.0], "expected": 45.0003354063729}, {"input": [37.0, 45.5], "expected": 45.50020344767213}, {"input": [37.0, 46.0], "expected": 46.00012340218972}, {"input": [37.0, 46.5], "expected": 46.50007484902863}, {"input": [37.0, 47.0], "expected": 47.00004539889922}, {"input": [37.0, 47.5], "expected": 47.50002753607023}, {"input": [37.0, 48.0], "expected": 48.00001670156132}, {"input": [37.0, 48.5], "expected": 48.50001013004229}, {"input": [37.0, 49.0], "expected": 49.00000614419348}, {"input": [37.0, 49.5], "expected": 49.50000372664623}, {"input": [37.0, 50.0], "expected": 50.00000226032685}, {"input": [37.0, 50.5], "expected": 50.500001370958145}, {"input": [37.0, 51.0], "expected": 51.000000831528375}, {"input": [37.0, 51.5], "expected": 51.50000050434753}, {"input": [37.0, 52.0], "expected": 52.000000305902276}, {"input": [37.0, 52.5], "expected": 52.50000018553912}, {"input": [37.0, 53.0], "expected": 53.00000011253517}, {"input": [37.0, 53.5], "expected": 53.50000006825603}, {"input": [37.0, 54.0], "expected": 54.000000041399375}, {"input": [37.0, 54.5], "expected": 54.50000002510999}, {"input": [37.0, 55.0], "expected": 55.00000001522998}, {"input": [37.0, 55.5], "expected": 55.500000009237446}, {"input": [37.0, 56.0], "expected": 56.00000000560279}, {"input": [37.0, 56.5], "expected": 56.50000000339827}, {"input": [37.0, 57.0], "expected": 57.00000000206116}, {"input": [37.0, 57.5], "expected": 57.50000000125015}, {"input": [37.0, 58.0], "expected": 58.000000000758256}, {"input": [37.0, 58.5], "expected": 58.500000000459906}, {"input": [37.0, 59.0], "expected": 59.000000000278945}, {"input": [37.0, 59.5], "expected": 59.50000000016919}, {"input": [37.0, 60.0], "expected": 60.00000000010262}, {"input": [37.0, 60.5], "expected": 60.50000000006224}, {"input": [37.0, 61.0], "expected": 61.00000000003775}, {"input": [37.0, 61.5], "expected": 61.5000000000229}, {"input": [37.0, 62.0], "expected": 62.00000000001389}, {"input": [37.0, 62.5], "expected": 62.50000000000842}, {"input": [37.0, 63.0], "expected": 63.00000000000511}, {"input": [37.0, 63.5], "expected": 63.5000000000031}, {"input": [37.0, 64.0], "expected": 64.00000000000188}, {"input": [37.0, 64.5], "expected": 64.50000000000114}, {"input": [37.0, 65.0], "expected": 65.0000000000007}, {"input": [37.0, 65.5], "expected": 65.50000000000043}, {"input": [37.0, 66.0], "expected": 66.00000000000026}, {"input": [37.0, 66.5], "expected": 66.50000000000016}, {"input": [37.0, 67.0], "expected": 67.0000000000001}, {"input": [37.0, 67.5], "expected": 67.50000000000006}, {"input": [37.0, 68.0], "expected": 68.00000000000003}, {"input": [37.0, 68.5], "expected": 68.50000000000001}, {"input": [37.0, 69.0], "expected": 69.00000000000001}, {"input": [37.0, 69.5], "expected": 69.50000000000001}, {"input": [37.0, 70.0], "expected": 70.0}, {"input": [37.0, 70.5], "expected": 70.5}, {"input": [37.0, 71.0], "expected": 71.0}, {"input": [37.0, 71.5], "expected": 71.5}, {"input": [37.0, 72.0], "expected": 72.0}, {"input": [37.0, 72.5], "expected": 72.5}, {"input": [37.0, 73.0], "expected": 73.0}, {"input": [37.0, 73.5], "expected": 73.5}, {"input": [37.0, 74.0], "expected": 74.0}, {"input": [37.0, 74.5], "expected": 74.5}, {"input": [37.0, 75.0], "expected": 75.0}, {"input": [37.0, 75.5], "expected": 75.5}, {"input": [37.0, 76.0], "expected": 76.0}, {"input": [37.0, 76.5], "expected": 76.5}, {"input": [37.0, 77.0], "expected": 77.0}, {"input": [37.0, 77.5], "expected": 77.5}, {"input": [37.0, 78.0], "expected": 78.0}, {"input": [37.0, 78.5], "expected": 78.5}, {"input": [37.0, 79.0], "expected": 79.0}, {"input": [37.0, 79.5], "expected": 79.5}, {"input": [37.0, 80.0], "expected": 80.0}, {"input": [37.0, 80.5], "expected": 80.5}, {"input": [37.0, 81.0], "expected": 81.0}, {"input": [37.0, 81.5], "expected": 81.5}, {"input": [37.0, 82.0], "expected": 82.0}, {"input": [37.0, 82.5], "expected": 82.5}, {"input": [37.0, 83.0], "expected": 83.0}, {"input": [37.0, 83.5], "expected": 83.5}, {"input": [37.0, 84.0], "expected": 84.0}, {"input": [37.0, 84.5], "expected": 84.5}, {"input": [37.0, 85.0], "expected": 85.0}, {"input": [37.0, 85.5], "expected": 85.5}, {"input": [37.0, 86.0], "expected": 86.0}, {"input": [37.0, 86.5], "expected": 86.5}, {"input": [37.0, 87.0], "expected": 87.0}, {"input": [37.0, 87.5], "expected": 87.5}, {"input": [37.0, 88.0], "expected": 88.0}, {"input": [37.0, 88.5], "expected": 88.5}, {"input": [37.0, 89.0], "expected": 89.0}, {"input": [37.0, 89.5], "expected": 89.5}, {"input": [37.0, 90.0], "expected": 90.0}, {"input": [37.0, 90.5], "expected": 90.5}, {"input": [37.0, 91.0], "expected": 91.0}, {"input": [37.0, 91.5], "expected": 91.5}, {"input": [37.0, 92.0], "expected": 92.0}, {"input": [37.0, 92.5], "expected": 92.5}, {"input": [37.0, 93.0], "expected": 93.0}, {"input": [37.0, 93.5], "expected": 93.5}, {"input": [37.0, 94.0], "expected": 94.0}, {"input": [37.0, 94.5], "expected": 94.5}, {"input": [37.0, 95.0], "expected": 95.0}, {"input": [37.0, 95.5], "expected": 95.5}, {"input": [37.0, 96.0], "expected": 96.0}, {"input": [37.0, 96.5], "expected": 96.5}, {"input": [37.0, 97.0], "expected": 97.0}, {"input": [37.0, 97.5], "expected": 97.5}, {"input": [37.0, 98.0], "expected": 98.0}, {"input": [37.0, 98.5], "expected": 98.5}, {"input": [37.0, 99.0], "expected": 99.0}, {"input": [37.0, 99.5], "expected": 99.5}, {"input": [37.5, -100.0], "expected": 37.5}, {"input": [37.5, -99.5], "expected": 37.5}, {"input": [37.5, -99.0], "expected": 37.5}, {"input": [37.5, -98.5], "expected": 37.5}, {"input": [37.5, -98.0], "expected": 37.5}, {"input": [37.5, -97.5], "expected": 37.5}, {"input": [37.5, -97.0], "expected": 37.5}, {"input": [37.5, -96.5], "expected": 37.5}, {"input": [37.5, -96.0], "expected": 37.5}, {"input": [37.5, -95.5], "expected": 37.5}, {"input": [37.5, -95.0], "expected": 37.5}, {"input": [37.5, -94.5], "expected": 37.5}, {"input": [37.5, -94.0], "expected": 37.5}, {"input": [37.5, -93.5], "expected": 37.5}, {"input": [37.5, -93.0], "expected": 37.5}, {"input": [37.5, -92.5], "expected": 37.5}, {"input": [37.5, -92.0], "expected": 37.5}, {"input": [37.5, -91.5], "expected": 37.5}, {"input": [37.5, -91.0], "expected": 37.5}, {"input": [37.5, -90.5], "expected": 37.5}, {"input": [37.5, -90.0], "expected": 37.5}, {"input": [37.5, -89.5], "expected": 37.5}, {"input": [37.5, -89.0], "expected": 37.5}, {"input": [37.5, -88.5], "expected": 37.5}, {"input": [37.5, -88.0], "expected": 37.5}, {"input": [37.5, -87.5], "expected": 37.5}, {"input": [37.5, -87.0], "expected": 37.5}, {"input": [37.5, -86.5], "expected": 37.5}, {"input": [37.5, -86.0], "expected": 37.5}, {"input": [37.5, -85.5], "expected": 37.5}, {"input": [37.5, -85.0], "expected": 37.5}, {"input": [37.5, -84.5], "expected": 37.5}, {"input": [37.5, -84.0], "expected": 37.5}, {"input": [37.5, -83.5], "expected": 37.5}, {"input": [37.5, -83.0], "expected": 37.5}, {"input": [37.5, -82.5], "expected": 37.5}, {"input": [37.5, -82.0], "expected": 37.5}, {"input": [37.5, -81.5], "expected": 37.5}, {"input": [37.5, -81.0], "expected": 37.5}, {"input": [37.5, -80.5], "expected": 37.5}, {"input": [37.5, -80.0], "expected": 37.5}, {"input": [37.5, -79.5], "expected": 37.5}, {"input": [37.5, -79.0], "expected": 37.5}, {"input": [37.5, -78.5], "expected": 37.5}, {"input": [37.5, -78.0], "expected": 37.5}, {"input": [37.5, -77.5], "expected": 37.5}, {"input": [37.5, -77.0], "expected": 37.5}, {"input": [37.5, -76.5], "expected": 37.5}, {"input": [37.5, -76.0], "expected": 37.5}, {"input": [37.5, -75.5], "expected": 37.5}, {"input": [37.5, -75.0], "expected": 37.5}, {"input": [37.5, -74.5], "expected": 37.5}, {"input": [37.5, -74.0], "expected": 37.5}, {"input": [37.5, -73.5], "expected": 37.5}, {"input": [37.5, -73.0], "expected": 37.5}, {"input": [37.5, -72.5], "expected": 37.5}, {"input": [37.5, -72.0], "expected": 37.5}, {"input": [37.5, -71.5], "expected": 37.5}, {"input": [37.5, -71.0], "expected": 37.5}, {"input": [37.5, -70.5], "expected": 37.5}, {"input": [37.5, -70.0], "expected": 37.5}, {"input": [37.5, -69.5], "expected": 37.5}, {"input": [37.5, -69.0], "expected": 37.5}, {"input": [37.5, -68.5], "expected": 37.5}, {"input": [37.5, -68.0], "expected": 37.5}, {"input": [37.5, -67.5], "expected": 37.5}, {"input": [37.5, -67.0], "expected": 37.5}, {"input": [37.5, -66.5], "expected": 37.5}, {"input": [37.5, -66.0], "expected": 37.5}, {"input": [37.5, -65.5], "expected": 37.5}, {"input": [37.5, -65.0], "expected": 37.5}, {"input": [37.5, -64.5], "expected": 37.5}, {"input": [37.5, -64.0], "expected": 37.5}, {"input": [37.5, -63.5], "expected": 37.5}, {"input": [37.5, -63.0], "expected": 37.5}, {"input": [37.5, -62.5], "expected": 37.5}, {"input": [37.5, -62.0], "expected": 37.5}, {"input": [37.5, -61.5], "expected": 37.5}, {"input": [37.5, -61.0], "expected": 37.5}, {"input": [37.5, -60.5], "expected": 37.5}, {"input": [37.5, -60.0], "expected": 37.5}, {"input": [37.5, -59.5], "expected": 37.5}, {"input": [37.5, -59.0], "expected": 37.5}, {"input": [37.5, -58.5], "expected": 37.5}, {"input": [37.5, -58.0], "expected": 37.5}, {"input": [37.5, -57.5], "expected": 37.5}, {"input": [37.5, -57.0], "expected": 37.5}, {"input": [37.5, -56.5], "expected": 37.5}, {"input": [37.5, -56.0], "expected": 37.5}, {"input": [37.5, -55.5], "expected": 37.5}, {"input": [37.5, -55.0], "expected": 37.5}, {"input": [37.5, -54.5], "expected": 37.5}, {"input": [37.5, -54.0], "expected": 37.5}, {"input": [37.5, -53.5], "expected": 37.5}, {"input": [37.5, -53.0], "expected": 37.5}, {"input": [37.5, -52.5], "expected": 37.5}, {"input": [37.5, -52.0], "expected": 37.5}, {"input": [37.5, -51.5], "expected": 37.5}, {"input": [37.5, -51.0], "expected": 37.5}, {"input": [37.5, -50.5], "expected": 37.5}, {"input": [37.5, -50.0], "expected": 37.5}, {"input": [37.5, -49.5], "expected": 37.5}, {"input": [37.5, -49.0], "expected": 37.5}, {"input": [37.5, -48.5], "expected": 37.5}, {"input": [37.5, -48.0], "expected": 37.5}, {"input": [37.5, -47.5], "expected": 37.5}, {"input": [37.5, -47.0], "expected": 37.5}, {"input": [37.5, -46.5], "expected": 37.5}, {"input": [37.5, -46.0], "expected": 37.5}, {"input": [37.5, -45.5], "expected": 37.5}, {"input": [37.5, -45.0], "expected": 37.5}, {"input": [37.5, -44.5], "expected": 37.5}, {"input": [37.5, -44.0], "expected": 37.5}, {"input": [37.5, -43.5], "expected": 37.5}, {"input": [37.5, -43.0], "expected": 37.5}, {"input": [37.5, -42.5], "expected": 37.5}, {"input": [37.5, -42.0], "expected": 37.5}, {"input": [37.5, -41.5], "expected": 37.5}, {"input": [37.5, -41.0], "expected": 37.5}, {"input": [37.5, -40.5], "expected": 37.5}, {"input": [37.5, -40.0], "expected": 37.5}, {"input": [37.5, -39.5], "expected": 37.5}, {"input": [37.5, -39.0], "expected": 37.5}, {"input": [37.5, -38.5], "expected": 37.5}, {"input": [37.5, -38.0], "expected": 37.5}, {"input": [37.5, -37.5], "expected": 37.5}, {"input": [37.5, -37.0], "expected": 37.5}, {"input": [37.5, -36.5], "expected": 37.5}, {"input": [37.5, -36.0], "expected": 37.5}, {"input": [37.5, -35.5], "expected": 37.5}, {"input": [37.5, -35.0], "expected": 37.5}, {"input": [37.5, -34.5], "expected": 37.5}, {"input": [37.5, -34.0], "expected": 37.5}, {"input": [37.5, -33.5], "expected": 37.5}, {"input": [37.5, -33.0], "expected": 37.5}, {"input": [37.5, -32.5], "expected": 37.5}, {"input": [37.5, -32.0], "expected": 37.5}, {"input": [37.5, -31.5], "expected": 37.5}, {"input": [37.5, -31.0], "expected": 37.5}, {"input": [37.5, -30.5], "expected": 37.5}, {"input": [37.5, -30.0], "expected": 37.5}, {"input": [37.5, -29.5], "expected": 37.5}, {"input": [37.5, -29.0], "expected": 37.5}, {"input": [37.5, -28.5], "expected": 37.5}, {"input": [37.5, -28.0], "expected": 37.5}, {"input": [37.5, -27.5], "expected": 37.5}, {"input": [37.5, -27.0], "expected": 37.5}, {"input": [37.5, -26.5], "expected": 37.5}, {"input": [37.5, -26.0], "expected": 37.5}, {"input": [37.5, -25.5], "expected": 37.5}, {"input": [37.5, -25.0], "expected": 37.5}, {"input": [37.5, -24.5], "expected": 37.5}, {"input": [37.5, -24.0], "expected": 37.5}, {"input": [37.5, -23.5], "expected": 37.5}, {"input": [37.5, -23.0], "expected": 37.5}, {"input": [37.5, -22.5], "expected": 37.5}, {"input": [37.5, -22.0], "expected": 37.5}, {"input": [37.5, -21.5], "expected": 37.5}, {"input": [37.5, -21.0], "expected": 37.5}, {"input": [37.5, -20.5], "expected": 37.5}, {"input": [37.5, -20.0], "expected": 37.5}, {"input": [37.5, -19.5], "expected": 37.5}, {"input": [37.5, -19.0], "expected": 37.5}, {"input": [37.5, -18.5], "expected": 37.5}, {"input": [37.5, -18.0], "expected": 37.5}, {"input": [37.5, -17.5], "expected": 37.5}, {"input": [37.5, -17.0], "expected": 37.5}, {"input": [37.5, -16.5], "expected": 37.5}, {"input": [37.5, -16.0], "expected": 37.5}, {"input": [37.5, -15.5], "expected": 37.5}, {"input": [37.5, -15.0], "expected": 37.5}, {"input": [37.5, -14.5], "expected": 37.5}, {"input": [37.5, -14.0], "expected": 37.5}, {"input": [37.5, -13.5], "expected": 37.5}, {"input": [37.5, -13.0], "expected": 37.5}, {"input": [37.5, -12.5], "expected": 37.5}, {"input": [37.5, -12.0], "expected": 37.5}, {"input": [37.5, -11.5], "expected": 37.5}, {"input": [37.5, -11.0], "expected": 37.5}, {"input": [37.5, -10.5], "expected": 37.5}, {"input": [37.5, -10.0], "expected": 37.5}, {"input": [37.5, -9.5], "expected": 37.5}, {"input": [37.5, -9.0], "expected": 37.5}, {"input": [37.5, -8.5], "expected": 37.5}, {"input": [37.5, -8.0], "expected": 37.5}, {"input": [37.5, -7.5], "expected": 37.5}, {"input": [37.5, -7.0], "expected": 37.5}, {"input": [37.5, -6.5], "expected": 37.5}, {"input": [37.5, -6.0], "expected": 37.5}, {"input": [37.5, -5.5], "expected": 37.5}, {"input": [37.5, -5.0], "expected": 37.5}, {"input": [37.5, -4.5], "expected": 37.5}, {"input": [37.5, -4.0], "expected": 37.5}, {"input": [37.5, -3.5], "expected": 37.5}, {"input": [37.5, -3.0], "expected": 37.5}, {"input": [37.5, -2.5], "expected": 37.5}, {"input": [37.5, -2.0], "expected": 37.5}, {"input": [37.5, -1.5], "expected": 37.5}, {"input": [37.5, -1.0], "expected": 37.5}, {"input": [37.5, -0.5], "expected": 37.5}, {"input": [37.5, 0.0], "expected": 37.5}, {"input": [37.5, 0.5], "expected": 37.5}, {"input": [37.5, 1.0], "expected": 37.5}, {"input": [37.5, 1.5], "expected": 37.5}, {"input": [37.5, 2.0], "expected": 37.5}, {"input": [37.5, 2.5], "expected": 37.5}, {"input": [37.5, 3.0], "expected": 37.5}, {"input": [37.5, 3.5], "expected": 37.5}, {"input": [37.5, 4.0], "expected": 37.5}, {"input": [37.5, 4.5], "expected": 37.50000000000001}, {"input": [37.5, 5.0], "expected": 37.50000000000001}, {"input": [37.5, 5.5], "expected": 37.500000000000014}, {"input": [37.5, 6.0], "expected": 37.50000000000002}, {"input": [37.5, 6.5], "expected": 37.500000000000036}, {"input": [37.5, 7.0], "expected": 37.50000000000006}, {"input": [37.5, 7.5], "expected": 37.50000000000009}, {"input": [37.5, 8.0], "expected": 37.500000000000156}, {"input": [37.5, 8.5], "expected": 37.500000000000256}, {"input": [37.5, 9.0], "expected": 37.50000000000042}, {"input": [37.5, 9.5], "expected": 37.50000000000069}, {"input": [37.5, 10.0], "expected": 37.50000000000114}, {"input": [37.5, 10.5], "expected": 37.50000000000188}, {"input": [37.5, 11.0], "expected": 37.5000000000031}, {"input": [37.5, 11.5], "expected": 37.50000000000511}, {"input": [37.5, 12.0], "expected": 37.50000000000842}, {"input": [37.5, 12.5], "expected": 37.50000000001389}, {"input": [37.5, 13.0], "expected": 37.5000000000229}, {"input": [37.5, 13.5], "expected": 37.50000000003775}, {"input": [37.5, 14.0], "expected": 37.50000000006224}, {"input": [37.5, 14.5], "expected": 37.50000000010262}, {"input": [37.5, 15.0], "expected": 37.50000000016919}, {"input": [37.5, 15.5], "expected": 37.500000000278945}, {"input": [37.5, 16.0], "expected": 37.500000000459906}, {"input": [37.5, 16.5], "expected": 37.500000000758256}, {"input": [37.5, 17.0], "expected": 37.50000000125015}, {"input": [37.5, 17.5], "expected": 37.50000000206116}, {"input": [37.5, 18.0], "expected": 37.50000000339827}, {"input": [37.5, 18.5], "expected": 37.50000000560279}, {"input": [37.5, 19.0], "expected": 37.500000009237446}, {"input": [37.5, 19.5], "expected": 37.50000001522998}, {"input": [37.5, 20.0], "expected": 37.50000002510999}, {"input": [37.5, 20.5], "expected": 37.500000041399375}, {"input": [37.5, 21.0], "expected": 37.50000006825603}, {"input": [37.5, 21.5], "expected": 37.50000011253517}, {"input": [37.5, 22.0], "expected": 37.50000018553912}, {"input": [37.5, 22.5], "expected": 37.500000305902276}, {"input": [37.5, 23.0], "expected": 37.50000050434753}, {"input": [37.5, 23.5], "expected": 37.500000831528375}, {"input": [37.5, 24.0], "expected": 37.500001370958145}, {"input": [37.5, 24.5], "expected": 37.50000226032685}, {"input": [37.5, 25.0], "expected": 37.50000372664623}, {"input": [37.5, 25.5], "expected": 37.50000614419348}, {"input": [37.5, 26.0], "expected": 37.50001013004229}, {"input": [37.5, 26.5], "expected": 37.50001670156132}, {"input": [37.5, 27.0], "expected": 37.50002753607023}, {"input": [37.5, 27.5], "expected": 37.50004539889922}, {"input": [37.5, 28.0], "expected": 37.50007484902863}, {"input": [37.5, 28.5], "expected": 37.50012340218972}, {"input": [37.5, 29.0], "expected": 37.50020344767213}, {"input": [37.5, 29.5], "expected": 37.5003354063729}, {"input": [37.5, 30.0], "expected": 37.50055293147536}, {"input": [37.5, 30.5], "expected": 37.50091146645377}, {"input": [37.5, 31.0], "expected": 37.50150231015976}, {"input": [37.5, 31.5], "expected": 37.50247568513773}, {"input": [37.5, 32.0], "expected": 37.50407844327057}, {"input": [37.5, 32.5], "expected": 37.50671534848912}, {"input": [37.5, 33.0], "expected": 37.5110477448486}, {"input": [37.5, 33.5], "expected": 37.51814992791781}, {"input": [37.5, 34.0], "expected": 37.52975041827262}, {"input": [37.5, 34.5], "expected": 37.548587351573744}, {"input": [37.5, 35.0], "expected": 37.57888973429255}, {"input": [37.5, 35.5], "expected": 37.62692801104297}, {"input": [37.5, 36.0], "expected": 37.70141327798275}, {"input": [37.5, 36.5], "expected": 37.81326168751822}, {"input": [37.5, 37.0], "expected": 37.97407698418011}, {"input": [37.5, 37.5], "expected": 38.19314718055995}, {"input": [37.5, 38.0], "expected": 38.47407698418011}, {"input": [37.5, 38.5], "expected": 38.81326168751822}, {"input": [37.5, 39.0], "expected": 39.20141327798275}, {"input": [37.5, 39.5], "expected": 39.62692801104297}, {"input": [37.5, 40.0], "expected": 40.07888973429255}, {"input": [37.5, 40.5], "expected": 40.548587351573744}, {"input": [37.5, 41.0], "expected": 41.02975041827262}, {"input": [37.5, 41.5], "expected": 41.51814992791781}, {"input": [37.5, 42.0], "expected": 42.0110477448486}, {"input": [37.5, 42.5], "expected": 42.50671534848912}, {"input": [37.5, 43.0], "expected": 43.00407844327057}, {"input": [37.5, 43.5], "expected": 43.50247568513773}, {"input": [37.5, 44.0], "expected": 44.00150231015976}, {"input": [37.5, 44.5], "expected": 44.50091146645377}, {"input": [37.5, 45.0], "expected": 45.00055293147536}, {"input": [37.5, 45.5], "expected": 45.5003354063729}, {"input": [37.5, 46.0], "expected": 46.00020344767213}, {"input": [37.5, 46.5], "expected": 46.50012340218972}, {"input": [37.5, 47.0], "expected": 47.00007484902863}, {"input": [37.5, 47.5], "expected": 47.50004539889922}, {"input": [37.5, 48.0], "expected": 48.00002753607023}, {"input": [37.5, 48.5], "expected": 48.50001670156132}, {"input": [37.5, 49.0], "expected": 49.00001013004229}, {"input": [37.5, 49.5], "expected": 49.50000614419348}, {"input": [37.5, 50.0], "expected": 50.00000372664623}, {"input": [37.5, 50.5], "expected": 50.50000226032685}, {"input": [37.5, 51.0], "expected": 51.000001370958145}, {"input": [37.5, 51.5], "expected": 51.500000831528375}, {"input": [37.5, 52.0], "expected": 52.00000050434753}, {"input": [37.5, 52.5], "expected": 52.500000305902276}, {"input": [37.5, 53.0], "expected": 53.00000018553912}, {"input": [37.5, 53.5], "expected": 53.50000011253517}, {"input": [37.5, 54.0], "expected": 54.00000006825603}, {"input": [37.5, 54.5], "expected": 54.500000041399375}, {"input": [37.5, 55.0], "expected": 55.00000002510999}, {"input": [37.5, 55.5], "expected": 55.50000001522998}, {"input": [37.5, 56.0], "expected": 56.000000009237446}, {"input": [37.5, 56.5], "expected": 56.50000000560279}, {"input": [37.5, 57.0], "expected": 57.00000000339827}, {"input": [37.5, 57.5], "expected": 57.50000000206116}, {"input": [37.5, 58.0], "expected": 58.00000000125015}, {"input": [37.5, 58.5], "expected": 58.500000000758256}, {"input": [37.5, 59.0], "expected": 59.000000000459906}, {"input": [37.5, 59.5], "expected": 59.500000000278945}, {"input": [37.5, 60.0], "expected": 60.00000000016919}, {"input": [37.5, 60.5], "expected": 60.50000000010262}, {"input": [37.5, 61.0], "expected": 61.00000000006224}, {"input": [37.5, 61.5], "expected": 61.50000000003775}, {"input": [37.5, 62.0], "expected": 62.0000000000229}, {"input": [37.5, 62.5], "expected": 62.50000000001389}, {"input": [37.5, 63.0], "expected": 63.00000000000842}, {"input": [37.5, 63.5], "expected": 63.50000000000511}, {"input": [37.5, 64.0], "expected": 64.0000000000031}, {"input": [37.5, 64.5], "expected": 64.50000000000188}, {"input": [37.5, 65.0], "expected": 65.00000000000114}, {"input": [37.5, 65.5], "expected": 65.5000000000007}, {"input": [37.5, 66.0], "expected": 66.00000000000043}, {"input": [37.5, 66.5], "expected": 66.50000000000026}, {"input": [37.5, 67.0], "expected": 67.00000000000016}, {"input": [37.5, 67.5], "expected": 67.5000000000001}, {"input": [37.5, 68.0], "expected": 68.00000000000006}, {"input": [37.5, 68.5], "expected": 68.50000000000003}, {"input": [37.5, 69.0], "expected": 69.00000000000001}, {"input": [37.5, 69.5], "expected": 69.50000000000001}, {"input": [37.5, 70.0], "expected": 70.00000000000001}, {"input": [37.5, 70.5], "expected": 70.5}, {"input": [37.5, 71.0], "expected": 71.0}, {"input": [37.5, 71.5], "expected": 71.5}, {"input": [37.5, 72.0], "expected": 72.0}, {"input": [37.5, 72.5], "expected": 72.5}, {"input": [37.5, 73.0], "expected": 73.0}, {"input": [37.5, 73.5], "expected": 73.5}, {"input": [37.5, 74.0], "expected": 74.0}, {"input": [37.5, 74.5], "expected": 74.5}, {"input": [37.5, 75.0], "expected": 75.0}, {"input": [37.5, 75.5], "expected": 75.5}, {"input": [37.5, 76.0], "expected": 76.0}, {"input": [37.5, 76.5], "expected": 76.5}, {"input": [37.5, 77.0], "expected": 77.0}, {"input": [37.5, 77.5], "expected": 77.5}, {"input": [37.5, 78.0], "expected": 78.0}, {"input": [37.5, 78.5], "expected": 78.5}, {"input": [37.5, 79.0], "expected": 79.0}, {"input": [37.5, 79.5], "expected": 79.5}, {"input": [37.5, 80.0], "expected": 80.0}, {"input": [37.5, 80.5], "expected": 80.5}, {"input": [37.5, 81.0], "expected": 81.0}, {"input": [37.5, 81.5], "expected": 81.5}, {"input": [37.5, 82.0], "expected": 82.0}, {"input": [37.5, 82.5], "expected": 82.5}, {"input": [37.5, 83.0], "expected": 83.0}, {"input": [37.5, 83.5], "expected": 83.5}, {"input": [37.5, 84.0], "expected": 84.0}, {"input": [37.5, 84.5], "expected": 84.5}, {"input": [37.5, 85.0], "expected": 85.0}, {"input": [37.5, 85.5], "expected": 85.5}, {"input": [37.5, 86.0], "expected": 86.0}, {"input": [37.5, 86.5], "expected": 86.5}, {"input": [37.5, 87.0], "expected": 87.0}, {"input": [37.5, 87.5], "expected": 87.5}, {"input": [37.5, 88.0], "expected": 88.0}, {"input": [37.5, 88.5], "expected": 88.5}, {"input": [37.5, 89.0], "expected": 89.0}, {"input": [37.5, 89.5], "expected": 89.5}, {"input": [37.5, 90.0], "expected": 90.0}, {"input": [37.5, 90.5], "expected": 90.5}, {"input": [37.5, 91.0], "expected": 91.0}, {"input": [37.5, 91.5], "expected": 91.5}, {"input": [37.5, 92.0], "expected": 92.0}, {"input": [37.5, 92.5], "expected": 92.5}, {"input": [37.5, 93.0], "expected": 93.0}, {"input": [37.5, 93.5], "expected": 93.5}, {"input": [37.5, 94.0], "expected": 94.0}, {"input": [37.5, 94.5], "expected": 94.5}, {"input": [37.5, 95.0], "expected": 95.0}, {"input": [37.5, 95.5], "expected": 95.5}, {"input": [37.5, 96.0], "expected": 96.0}, {"input": [37.5, 96.5], "expected": 96.5}, {"input": [37.5, 97.0], "expected": 97.0}, {"input": [37.5, 97.5], "expected": 97.5}, {"input": [37.5, 98.0], "expected": 98.0}, {"input": [37.5, 98.5], "expected": 98.5}, {"input": [37.5, 99.0], "expected": 99.0}, {"input": [37.5, 99.5], "expected": 99.5}, {"input": [38.0, -100.0], "expected": 38.0}, {"input": [38.0, -99.5], "expected": 38.0}, {"input": [38.0, -99.0], "expected": 38.0}, {"input": [38.0, -98.5], "expected": 38.0}, {"input": [38.0, -98.0], "expected": 38.0}, {"input": [38.0, -97.5], "expected": 38.0}, {"input": [38.0, -97.0], "expected": 38.0}, {"input": [38.0, -96.5], "expected": 38.0}, {"input": [38.0, -96.0], "expected": 38.0}, {"input": [38.0, -95.5], "expected": 38.0}, {"input": [38.0, -95.0], "expected": 38.0}, {"input": [38.0, -94.5], "expected": 38.0}, {"input": [38.0, -94.0], "expected": 38.0}, {"input": [38.0, -93.5], "expected": 38.0}, {"input": [38.0, -93.0], "expected": 38.0}, {"input": [38.0, -92.5], "expected": 38.0}, {"input": [38.0, -92.0], "expected": 38.0}, {"input": [38.0, -91.5], "expected": 38.0}, {"input": [38.0, -91.0], "expected": 38.0}, {"input": [38.0, -90.5], "expected": 38.0}, {"input": [38.0, -90.0], "expected": 38.0}, {"input": [38.0, -89.5], "expected": 38.0}, {"input": [38.0, -89.0], "expected": 38.0}, {"input": [38.0, -88.5], "expected": 38.0}, {"input": [38.0, -88.0], "expected": 38.0}, {"input": [38.0, -87.5], "expected": 38.0}, {"input": [38.0, -87.0], "expected": 38.0}, {"input": [38.0, -86.5], "expected": 38.0}, {"input": [38.0, -86.0], "expected": 38.0}, {"input": [38.0, -85.5], "expected": 38.0}, {"input": [38.0, -85.0], "expected": 38.0}, {"input": [38.0, -84.5], "expected": 38.0}, {"input": [38.0, -84.0], "expected": 38.0}, {"input": [38.0, -83.5], "expected": 38.0}, {"input": [38.0, -83.0], "expected": 38.0}, {"input": [38.0, -82.5], "expected": 38.0}, {"input": [38.0, -82.0], "expected": 38.0}, {"input": [38.0, -81.5], "expected": 38.0}, {"input": [38.0, -81.0], "expected": 38.0}, {"input": [38.0, -80.5], "expected": 38.0}, {"input": [38.0, -80.0], "expected": 38.0}, {"input": [38.0, -79.5], "expected": 38.0}, {"input": [38.0, -79.0], "expected": 38.0}, {"input": [38.0, -78.5], "expected": 38.0}, {"input": [38.0, -78.0], "expected": 38.0}, {"input": [38.0, -77.5], "expected": 38.0}, {"input": [38.0, -77.0], "expected": 38.0}, {"input": [38.0, -76.5], "expected": 38.0}, {"input": [38.0, -76.0], "expected": 38.0}, {"input": [38.0, -75.5], "expected": 38.0}, {"input": [38.0, -75.0], "expected": 38.0}, {"input": [38.0, -74.5], "expected": 38.0}, {"input": [38.0, -74.0], "expected": 38.0}, {"input": [38.0, -73.5], "expected": 38.0}, {"input": [38.0, -73.0], "expected": 38.0}, {"input": [38.0, -72.5], "expected": 38.0}, {"input": [38.0, -72.0], "expected": 38.0}, {"input": [38.0, -71.5], "expected": 38.0}, {"input": [38.0, -71.0], "expected": 38.0}, {"input": [38.0, -70.5], "expected": 38.0}, {"input": [38.0, -70.0], "expected": 38.0}, {"input": [38.0, -69.5], "expected": 38.0}, {"input": [38.0, -69.0], "expected": 38.0}, {"input": [38.0, -68.5], "expected": 38.0}, {"input": [38.0, -68.0], "expected": 38.0}, {"input": [38.0, -67.5], "expected": 38.0}, {"input": [38.0, -67.0], "expected": 38.0}, {"input": [38.0, -66.5], "expected": 38.0}, {"input": [38.0, -66.0], "expected": 38.0}, {"input": [38.0, -65.5], "expected": 38.0}, {"input": [38.0, -65.0], "expected": 38.0}, {"input": [38.0, -64.5], "expected": 38.0}, {"input": [38.0, -64.0], "expected": 38.0}, {"input": [38.0, -63.5], "expected": 38.0}, {"input": [38.0, -63.0], "expected": 38.0}, {"input": [38.0, -62.5], "expected": 38.0}, {"input": [38.0, -62.0], "expected": 38.0}, {"input": [38.0, -61.5], "expected": 38.0}, {"input": [38.0, -61.0], "expected": 38.0}, {"input": [38.0, -60.5], "expected": 38.0}, {"input": [38.0, -60.0], "expected": 38.0}, {"input": [38.0, -59.5], "expected": 38.0}, {"input": [38.0, -59.0], "expected": 38.0}, {"input": [38.0, -58.5], "expected": 38.0}, {"input": [38.0, -58.0], "expected": 38.0}, {"input": [38.0, -57.5], "expected": 38.0}, {"input": [38.0, -57.0], "expected": 38.0}, {"input": [38.0, -56.5], "expected": 38.0}, {"input": [38.0, -56.0], "expected": 38.0}, {"input": [38.0, -55.5], "expected": 38.0}, {"input": [38.0, -55.0], "expected": 38.0}, {"input": [38.0, -54.5], "expected": 38.0}, {"input": [38.0, -54.0], "expected": 38.0}, {"input": [38.0, -53.5], "expected": 38.0}, {"input": [38.0, -53.0], "expected": 38.0}, {"input": [38.0, -52.5], "expected": 38.0}, {"input": [38.0, -52.0], "expected": 38.0}, {"input": [38.0, -51.5], "expected": 38.0}, {"input": [38.0, -51.0], "expected": 38.0}, {"input": [38.0, -50.5], "expected": 38.0}, {"input": [38.0, -50.0], "expected": 38.0}, {"input": [38.0, -49.5], "expected": 38.0}, {"input": [38.0, -49.0], "expected": 38.0}, {"input": [38.0, -48.5], "expected": 38.0}, {"input": [38.0, -48.0], "expected": 38.0}, {"input": [38.0, -47.5], "expected": 38.0}, {"input": [38.0, -47.0], "expected": 38.0}, {"input": [38.0, -46.5], "expected": 38.0}, {"input": [38.0, -46.0], "expected": 38.0}, {"input": [38.0, -45.5], "expected": 38.0}, {"input": [38.0, -45.0], "expected": 38.0}, {"input": [38.0, -44.5], "expected": 38.0}, {"input": [38.0, -44.0], "expected": 38.0}, {"input": [38.0, -43.5], "expected": 38.0}, {"input": [38.0, -43.0], "expected": 38.0}, {"input": [38.0, -42.5], "expected": 38.0}, {"input": [38.0, -42.0], "expected": 38.0}, {"input": [38.0, -41.5], "expected": 38.0}, {"input": [38.0, -41.0], "expected": 38.0}, {"input": [38.0, -40.5], "expected": 38.0}, {"input": [38.0, -40.0], "expected": 38.0}, {"input": [38.0, -39.5], "expected": 38.0}, {"input": [38.0, -39.0], "expected": 38.0}, {"input": [38.0, -38.5], "expected": 38.0}, {"input": [38.0, -38.0], "expected": 38.0}, {"input": [38.0, -37.5], "expected": 38.0}, {"input": [38.0, -37.0], "expected": 38.0}, {"input": [38.0, -36.5], "expected": 38.0}, {"input": [38.0, -36.0], "expected": 38.0}, {"input": [38.0, -35.5], "expected": 38.0}, {"input": [38.0, -35.0], "expected": 38.0}, {"input": [38.0, -34.5], "expected": 38.0}, {"input": [38.0, -34.0], "expected": 38.0}, {"input": [38.0, -33.5], "expected": 38.0}, {"input": [38.0, -33.0], "expected": 38.0}, {"input": [38.0, -32.5], "expected": 38.0}, {"input": [38.0, -32.0], "expected": 38.0}, {"input": [38.0, -31.5], "expected": 38.0}, {"input": [38.0, -31.0], "expected": 38.0}, {"input": [38.0, -30.5], "expected": 38.0}, {"input": [38.0, -30.0], "expected": 38.0}, {"input": [38.0, -29.5], "expected": 38.0}, {"input": [38.0, -29.0], "expected": 38.0}, {"input": [38.0, -28.5], "expected": 38.0}, {"input": [38.0, -28.0], "expected": 38.0}, {"input": [38.0, -27.5], "expected": 38.0}, {"input": [38.0, -27.0], "expected": 38.0}, {"input": [38.0, -26.5], "expected": 38.0}, {"input": [38.0, -26.0], "expected": 38.0}, {"input": [38.0, -25.5], "expected": 38.0}, {"input": [38.0, -25.0], "expected": 38.0}, {"input": [38.0, -24.5], "expected": 38.0}, {"input": [38.0, -24.0], "expected": 38.0}, {"input": [38.0, -23.5], "expected": 38.0}, {"input": [38.0, -23.0], "expected": 38.0}, {"input": [38.0, -22.5], "expected": 38.0}, {"input": [38.0, -22.0], "expected": 38.0}, {"input": [38.0, -21.5], "expected": 38.0}, {"input": [38.0, -21.0], "expected": 38.0}, {"input": [38.0, -20.5], "expected": 38.0}, {"input": [38.0, -20.0], "expected": 38.0}, {"input": [38.0, -19.5], "expected": 38.0}, {"input": [38.0, -19.0], "expected": 38.0}, {"input": [38.0, -18.5], "expected": 38.0}, {"input": [38.0, -18.0], "expected": 38.0}, {"input": [38.0, -17.5], "expected": 38.0}, {"input": [38.0, -17.0], "expected": 38.0}, {"input": [38.0, -16.5], "expected": 38.0}, {"input": [38.0, -16.0], "expected": 38.0}, {"input": [38.0, -15.5], "expected": 38.0}, {"input": [38.0, -15.0], "expected": 38.0}, {"input": [38.0, -14.5], "expected": 38.0}, {"input": [38.0, -14.0], "expected": 38.0}, {"input": [38.0, -13.5], "expected": 38.0}, {"input": [38.0, -13.0], "expected": 38.0}, {"input": [38.0, -12.5], "expected": 38.0}, {"input": [38.0, -12.0], "expected": 38.0}, {"input": [38.0, -11.5], "expected": 38.0}, {"input": [38.0, -11.0], "expected": 38.0}, {"input": [38.0, -10.5], "expected": 38.0}, {"input": [38.0, -10.0], "expected": 38.0}, {"input": [38.0, -9.5], "expected": 38.0}, {"input": [38.0, -9.0], "expected": 38.0}, {"input": [38.0, -8.5], "expected": 38.0}, {"input": [38.0, -8.0], "expected": 38.0}, {"input": [38.0, -7.5], "expected": 38.0}, {"input": [38.0, -7.0], "expected": 38.0}, {"input": [38.0, -6.5], "expected": 38.0}, {"input": [38.0, -6.0], "expected": 38.0}, {"input": [38.0, -5.5], "expected": 38.0}, {"input": [38.0, -5.0], "expected": 38.0}, {"input": [38.0, -4.5], "expected": 38.0}, {"input": [38.0, -4.0], "expected": 38.0}, {"input": [38.0, -3.5], "expected": 38.0}, {"input": [38.0, -3.0], "expected": 38.0}, {"input": [38.0, -2.5], "expected": 38.0}, {"input": [38.0, -2.0], "expected": 38.0}, {"input": [38.0, -1.5], "expected": 38.0}, {"input": [38.0, -1.0], "expected": 38.0}, {"input": [38.0, -0.5], "expected": 38.0}, {"input": [38.0, 0.0], "expected": 38.0}, {"input": [38.0, 0.5], "expected": 38.0}, {"input": [38.0, 1.0], "expected": 38.0}, {"input": [38.0, 1.5], "expected": 38.0}, {"input": [38.0, 2.0], "expected": 38.0}, {"input": [38.0, 2.5], "expected": 38.0}, {"input": [38.0, 3.0], "expected": 38.0}, {"input": [38.0, 3.5], "expected": 38.0}, {"input": [38.0, 4.0], "expected": 38.0}, {"input": [38.0, 4.5], "expected": 38.0}, {"input": [38.0, 5.0], "expected": 38.00000000000001}, {"input": [38.0, 5.5], "expected": 38.00000000000001}, {"input": [38.0, 6.0], "expected": 38.000000000000014}, {"input": [38.0, 6.5], "expected": 38.00000000000002}, {"input": [38.0, 7.0], "expected": 38.000000000000036}, {"input": [38.0, 7.5], "expected": 38.00000000000006}, {"input": [38.0, 8.0], "expected": 38.00000000000009}, {"input": [38.0, 8.5], "expected": 38.000000000000156}, {"input": [38.0, 9.0], "expected": 38.000000000000256}, {"input": [38.0, 9.5], "expected": 38.00000000000042}, {"input": [38.0, 10.0], "expected": 38.00000000000069}, {"input": [38.0, 10.5], "expected": 38.00000000000114}, {"input": [38.0, 11.0], "expected": 38.00000000000188}, {"input": [38.0, 11.5], "expected": 38.0000000000031}, {"input": [38.0, 12.0], "expected": 38.00000000000511}, {"input": [38.0, 12.5], "expected": 38.00000000000842}, {"input": [38.0, 13.0], "expected": 38.00000000001389}, {"input": [38.0, 13.5], "expected": 38.0000000000229}, {"input": [38.0, 14.0], "expected": 38.00000000003775}, {"input": [38.0, 14.5], "expected": 38.00000000006224}, {"input": [38.0, 15.0], "expected": 38.00000000010262}, {"input": [38.0, 15.5], "expected": 38.00000000016919}, {"input": [38.0, 16.0], "expected": 38.000000000278945}, {"input": [38.0, 16.5], "expected": 38.000000000459906}, {"input": [38.0, 17.0], "expected": 38.000000000758256}, {"input": [38.0, 17.5], "expected": 38.00000000125015}, {"input": [38.0, 18.0], "expected": 38.00000000206116}, {"input": [38.0, 18.5], "expected": 38.00000000339827}, {"input": [38.0, 19.0], "expected": 38.00000000560279}, {"input": [38.0, 19.5], "expected": 38.000000009237446}, {"input": [38.0, 20.0], "expected": 38.00000001522998}, {"input": [38.0, 20.5], "expected": 38.00000002510999}, {"input": [38.0, 21.0], "expected": 38.000000041399375}, {"input": [38.0, 21.5], "expected": 38.00000006825603}, {"input": [38.0, 22.0], "expected": 38.00000011253517}, {"input": [38.0, 22.5], "expected": 38.00000018553912}, {"input": [38.0, 23.0], "expected": 38.000000305902276}, {"input": [38.0, 23.5], "expected": 38.00000050434753}, {"input": [38.0, 24.0], "expected": 38.000000831528375}, {"input": [38.0, 24.5], "expected": 38.000001370958145}, {"input": [38.0, 25.0], "expected": 38.00000226032685}, {"input": [38.0, 25.5], "expected": 38.00000372664623}, {"input": [38.0, 26.0], "expected": 38.00000614419348}, {"input": [38.0, 26.5], "expected": 38.00001013004229}, {"input": [38.0, 27.0], "expected": 38.00001670156132}, {"input": [38.0, 27.5], "expected": 38.00002753607023}, {"input": [38.0, 28.0], "expected": 38.00004539889922}, {"input": [38.0, 28.5], "expected": 38.00007484902863}, {"input": [38.0, 29.0], "expected": 38.00012340218972}, {"input": [38.0, 29.5], "expected": 38.00020344767213}, {"input": [38.0, 30.0], "expected": 38.0003354063729}, {"input": [38.0, 30.5], "expected": 38.00055293147536}, {"input": [38.0, 31.0], "expected": 38.00091146645377}, {"input": [38.0, 31.5], "expected": 38.00150231015976}, {"input": [38.0, 32.0], "expected": 38.00247568513773}, {"input": [38.0, 32.5], "expected": 38.00407844327057}, {"input": [38.0, 33.0], "expected": 38.00671534848912}, {"input": [38.0, 33.5], "expected": 38.0110477448486}, {"input": [38.0, 34.0], "expected": 38.01814992791781}, {"input": [38.0, 34.5], "expected": 38.02975041827262}, {"input": [38.0, 35.0], "expected": 38.048587351573744}, {"input": [38.0, 35.5], "expected": 38.07888973429255}, {"input": [38.0, 36.0], "expected": 38.12692801104297}, {"input": [38.0, 36.5], "expected": 38.20141327798275}, {"input": [38.0, 37.0], "expected": 38.31326168751822}, {"input": [38.0, 37.5], "expected": 38.47407698418011}, {"input": [38.0, 38.0], "expected": 38.69314718055995}, {"input": [38.0, 38.5], "expected": 38.97407698418011}, {"input": [38.0, 39.0], "expected": 39.31326168751822}, {"input": [38.0, 39.5], "expected": 39.70141327798275}, {"input": [38.0, 40.0], "expected": 40.12692801104297}, {"input": [38.0, 40.5], "expected": 40.57888973429255}, {"input": [38.0, 41.0], "expected": 41.048587351573744}, {"input": [38.0, 41.5], "expected": 41.52975041827262}, {"input": [38.0, 42.0], "expected": 42.01814992791781}, {"input": [38.0, 42.5], "expected": 42.5110477448486}, {"input": [38.0, 43.0], "expected": 43.00671534848912}, {"input": [38.0, 43.5], "expected": 43.50407844327057}, {"input": [38.0, 44.0], "expected": 44.00247568513773}, {"input": [38.0, 44.5], "expected": 44.50150231015976}, {"input": [38.0, 45.0], "expected": 45.00091146645377}, {"input": [38.0, 45.5], "expected": 45.50055293147536}, {"input": [38.0, 46.0], "expected": 46.0003354063729}, {"input": [38.0, 46.5], "expected": 46.50020344767213}, {"input": [38.0, 47.0], "expected": 47.00012340218972}, {"input": [38.0, 47.5], "expected": 47.50007484902863}, {"input": [38.0, 48.0], "expected": 48.00004539889922}, {"input": [38.0, 48.5], "expected": 48.50002753607023}, {"input": [38.0, 49.0], "expected": 49.00001670156132}, {"input": [38.0, 49.5], "expected": 49.50001013004229}, {"input": [38.0, 50.0], "expected": 50.00000614419348}, {"input": [38.0, 50.5], "expected": 50.50000372664623}, {"input": [38.0, 51.0], "expected": 51.00000226032685}, {"input": [38.0, 51.5], "expected": 51.500001370958145}, {"input": [38.0, 52.0], "expected": 52.000000831528375}, {"input": [38.0, 52.5], "expected": 52.50000050434753}, {"input": [38.0, 53.0], "expected": 53.000000305902276}, {"input": [38.0, 53.5], "expected": 53.50000018553912}, {"input": [38.0, 54.0], "expected": 54.00000011253517}, {"input": [38.0, 54.5], "expected": 54.50000006825603}, {"input": [38.0, 55.0], "expected": 55.000000041399375}, {"input": [38.0, 55.5], "expected": 55.50000002510999}, {"input": [38.0, 56.0], "expected": 56.00000001522998}, {"input": [38.0, 56.5], "expected": 56.500000009237446}, {"input": [38.0, 57.0], "expected": 57.00000000560279}, {"input": [38.0, 57.5], "expected": 57.50000000339827}, {"input": [38.0, 58.0], "expected": 58.00000000206116}, {"input": [38.0, 58.5], "expected": 58.50000000125015}, {"input": [38.0, 59.0], "expected": 59.000000000758256}, {"input": [38.0, 59.5], "expected": 59.500000000459906}, {"input": [38.0, 60.0], "expected": 60.000000000278945}, {"input": [38.0, 60.5], "expected": 60.50000000016919}, {"input": [38.0, 61.0], "expected": 61.00000000010262}, {"input": [38.0, 61.5], "expected": 61.50000000006224}, {"input": [38.0, 62.0], "expected": 62.00000000003775}, {"input": [38.0, 62.5], "expected": 62.5000000000229}, {"input": [38.0, 63.0], "expected": 63.00000000001389}, {"input": [38.0, 63.5], "expected": 63.50000000000842}, {"input": [38.0, 64.0], "expected": 64.00000000000512}, {"input": [38.0, 64.5], "expected": 64.5000000000031}, {"input": [38.0, 65.0], "expected": 65.00000000000188}, {"input": [38.0, 65.5], "expected": 65.50000000000114}, {"input": [38.0, 66.0], "expected": 66.0000000000007}, {"input": [38.0, 66.5], "expected": 66.50000000000043}, {"input": [38.0, 67.0], "expected": 67.00000000000026}, {"input": [38.0, 67.5], "expected": 67.50000000000016}, {"input": [38.0, 68.0], "expected": 68.0000000000001}, {"input": [38.0, 68.5], "expected": 68.50000000000006}, {"input": [38.0, 69.0], "expected": 69.00000000000003}, {"input": [38.0, 69.5], "expected": 69.50000000000001}, {"input": [38.0, 70.0], "expected": 70.00000000000001}, {"input": [38.0, 70.5], "expected": 70.50000000000001}, {"input": [38.0, 71.0], "expected": 71.0}, {"input": [38.0, 71.5], "expected": 71.5}, {"input": [38.0, 72.0], "expected": 72.0}, {"input": [38.0, 72.5], "expected": 72.5}, {"input": [38.0, 73.0], "expected": 73.0}, {"input": [38.0, 73.5], "expected": 73.5}, {"input": [38.0, 74.0], "expected": 74.0}, {"input": [38.0, 74.5], "expected": 74.5}, {"input": [38.0, 75.0], "expected": 75.0}, {"input": [38.0, 75.5], "expected": 75.5}, {"input": [38.0, 76.0], "expected": 76.0}, {"input": [38.0, 76.5], "expected": 76.5}, {"input": [38.0, 77.0], "expected": 77.0}, {"input": [38.0, 77.5], "expected": 77.5}, {"input": [38.0, 78.0], "expected": 78.0}, {"input": [38.0, 78.5], "expected": 78.5}, {"input": [38.0, 79.0], "expected": 79.0}, {"input": [38.0, 79.5], "expected": 79.5}, {"input": [38.0, 80.0], "expected": 80.0}, {"input": [38.0, 80.5], "expected": 80.5}, {"input": [38.0, 81.0], "expected": 81.0}, {"input": [38.0, 81.5], "expected": 81.5}, {"input": [38.0, 82.0], "expected": 82.0}, {"input": [38.0, 82.5], "expected": 82.5}, {"input": [38.0, 83.0], "expected": 83.0}, {"input": [38.0, 83.5], "expected": 83.5}, {"input": [38.0, 84.0], "expected": 84.0}, {"input": [38.0, 84.5], "expected": 84.5}, {"input": [38.0, 85.0], "expected": 85.0}, {"input": [38.0, 85.5], "expected": 85.5}, {"input": [38.0, 86.0], "expected": 86.0}, {"input": [38.0, 86.5], "expected": 86.5}, {"input": [38.0, 87.0], "expected": 87.0}, {"input": [38.0, 87.5], "expected": 87.5}, {"input": [38.0, 88.0], "expected": 88.0}, {"input": [38.0, 88.5], "expected": 88.5}, {"input": [38.0, 89.0], "expected": 89.0}, {"input": [38.0, 89.5], "expected": 89.5}, {"input": [38.0, 90.0], "expected": 90.0}, {"input": [38.0, 90.5], "expected": 90.5}, {"input": [38.0, 91.0], "expected": 91.0}, {"input": [38.0, 91.5], "expected": 91.5}, {"input": [38.0, 92.0], "expected": 92.0}, {"input": [38.0, 92.5], "expected": 92.5}, {"input": [38.0, 93.0], "expected": 93.0}, {"input": [38.0, 93.5], "expected": 93.5}, {"input": [38.0, 94.0], "expected": 94.0}, {"input": [38.0, 94.5], "expected": 94.5}, {"input": [38.0, 95.0], "expected": 95.0}, {"input": [38.0, 95.5], "expected": 95.5}, {"input": [38.0, 96.0], "expected": 96.0}, {"input": [38.0, 96.5], "expected": 96.5}, {"input": [38.0, 97.0], "expected": 97.0}, {"input": [38.0, 97.5], "expected": 97.5}, {"input": [38.0, 98.0], "expected": 98.0}, {"input": [38.0, 98.5], "expected": 98.5}, {"input": [38.0, 99.0], "expected": 99.0}, {"input": [38.0, 99.5], "expected": 99.5}, {"input": [38.5, -100.0], "expected": 38.5}, {"input": [38.5, -99.5], "expected": 38.5}, {"input": [38.5, -99.0], "expected": 38.5}, {"input": [38.5, -98.5], "expected": 38.5}, {"input": [38.5, -98.0], "expected": 38.5}, {"input": [38.5, -97.5], "expected": 38.5}, {"input": [38.5, -97.0], "expected": 38.5}, {"input": [38.5, -96.5], "expected": 38.5}, {"input": [38.5, -96.0], "expected": 38.5}, {"input": [38.5, -95.5], "expected": 38.5}, {"input": [38.5, -95.0], "expected": 38.5}, {"input": [38.5, -94.5], "expected": 38.5}, {"input": [38.5, -94.0], "expected": 38.5}, {"input": [38.5, -93.5], "expected": 38.5}, {"input": [38.5, -93.0], "expected": 38.5}, {"input": [38.5, -92.5], "expected": 38.5}, {"input": [38.5, -92.0], "expected": 38.5}, {"input": [38.5, -91.5], "expected": 38.5}, {"input": [38.5, -91.0], "expected": 38.5}, {"input": [38.5, -90.5], "expected": 38.5}, {"input": [38.5, -90.0], "expected": 38.5}, {"input": [38.5, -89.5], "expected": 38.5}, {"input": [38.5, -89.0], "expected": 38.5}, {"input": [38.5, -88.5], "expected": 38.5}, {"input": [38.5, -88.0], "expected": 38.5}, {"input": [38.5, -87.5], "expected": 38.5}, {"input": [38.5, -87.0], "expected": 38.5}, {"input": [38.5, -86.5], "expected": 38.5}, {"input": [38.5, -86.0], "expected": 38.5}, {"input": [38.5, -85.5], "expected": 38.5}, {"input": [38.5, -85.0], "expected": 38.5}, {"input": [38.5, -84.5], "expected": 38.5}, {"input": [38.5, -84.0], "expected": 38.5}, {"input": [38.5, -83.5], "expected": 38.5}, {"input": [38.5, -83.0], "expected": 38.5}, {"input": [38.5, -82.5], "expected": 38.5}, {"input": [38.5, -82.0], "expected": 38.5}, {"input": [38.5, -81.5], "expected": 38.5}, {"input": [38.5, -81.0], "expected": 38.5}, {"input": [38.5, -80.5], "expected": 38.5}, {"input": [38.5, -80.0], "expected": 38.5}, {"input": [38.5, -79.5], "expected": 38.5}, {"input": [38.5, -79.0], "expected": 38.5}, {"input": [38.5, -78.5], "expected": 38.5}, {"input": [38.5, -78.0], "expected": 38.5}, {"input": [38.5, -77.5], "expected": 38.5}, {"input": [38.5, -77.0], "expected": 38.5}, {"input": [38.5, -76.5], "expected": 38.5}, {"input": [38.5, -76.0], "expected": 38.5}, {"input": [38.5, -75.5], "expected": 38.5}, {"input": [38.5, -75.0], "expected": 38.5}, {"input": [38.5, -74.5], "expected": 38.5}, {"input": [38.5, -74.0], "expected": 38.5}, {"input": [38.5, -73.5], "expected": 38.5}, {"input": [38.5, -73.0], "expected": 38.5}, {"input": [38.5, -72.5], "expected": 38.5}, {"input": [38.5, -72.0], "expected": 38.5}, {"input": [38.5, -71.5], "expected": 38.5}, {"input": [38.5, -71.0], "expected": 38.5}, {"input": [38.5, -70.5], "expected": 38.5}, {"input": [38.5, -70.0], "expected": 38.5}, {"input": [38.5, -69.5], "expected": 38.5}, {"input": [38.5, -69.0], "expected": 38.5}, {"input": [38.5, -68.5], "expected": 38.5}, {"input": [38.5, -68.0], "expected": 38.5}, {"input": [38.5, -67.5], "expected": 38.5}, {"input": [38.5, -67.0], "expected": 38.5}, {"input": [38.5, -66.5], "expected": 38.5}, {"input": [38.5, -66.0], "expected": 38.5}, {"input": [38.5, -65.5], "expected": 38.5}, {"input": [38.5, -65.0], "expected": 38.5}, {"input": [38.5, -64.5], "expected": 38.5}, {"input": [38.5, -64.0], "expected": 38.5}, {"input": [38.5, -63.5], "expected": 38.5}, {"input": [38.5, -63.0], "expected": 38.5}, {"input": [38.5, -62.5], "expected": 38.5}, {"input": [38.5, -62.0], "expected": 38.5}, {"input": [38.5, -61.5], "expected": 38.5}, {"input": [38.5, -61.0], "expected": 38.5}, {"input": [38.5, -60.5], "expected": 38.5}, {"input": [38.5, -60.0], "expected": 38.5}, {"input": [38.5, -59.5], "expected": 38.5}, {"input": [38.5, -59.0], "expected": 38.5}, {"input": [38.5, -58.5], "expected": 38.5}, {"input": [38.5, -58.0], "expected": 38.5}, {"input": [38.5, -57.5], "expected": 38.5}, {"input": [38.5, -57.0], "expected": 38.5}, {"input": [38.5, -56.5], "expected": 38.5}, {"input": [38.5, -56.0], "expected": 38.5}, {"input": [38.5, -55.5], "expected": 38.5}, {"input": [38.5, -55.0], "expected": 38.5}, {"input": [38.5, -54.5], "expected": 38.5}, {"input": [38.5, -54.0], "expected": 38.5}, {"input": [38.5, -53.5], "expected": 38.5}, {"input": [38.5, -53.0], "expected": 38.5}, {"input": [38.5, -52.5], "expected": 38.5}, {"input": [38.5, -52.0], "expected": 38.5}, {"input": [38.5, -51.5], "expected": 38.5}, {"input": [38.5, -51.0], "expected": 38.5}, {"input": [38.5, -50.5], "expected": 38.5}, {"input": [38.5, -50.0], "expected": 38.5}, {"input": [38.5, -49.5], "expected": 38.5}, {"input": [38.5, -49.0], "expected": 38.5}, {"input": [38.5, -48.5], "expected": 38.5}, {"input": [38.5, -48.0], "expected": 38.5}, {"input": [38.5, -47.5], "expected": 38.5}, {"input": [38.5, -47.0], "expected": 38.5}, {"input": [38.5, -46.5], "expected": 38.5}, {"input": [38.5, -46.0], "expected": 38.5}, {"input": [38.5, -45.5], "expected": 38.5}, {"input": [38.5, -45.0], "expected": 38.5}, {"input": [38.5, -44.5], "expected": 38.5}, {"input": [38.5, -44.0], "expected": 38.5}, {"input": [38.5, -43.5], "expected": 38.5}, {"input": [38.5, -43.0], "expected": 38.5}, {"input": [38.5, -42.5], "expected": 38.5}, {"input": [38.5, -42.0], "expected": 38.5}, {"input": [38.5, -41.5], "expected": 38.5}, {"input": [38.5, -41.0], "expected": 38.5}, {"input": [38.5, -40.5], "expected": 38.5}, {"input": [38.5, -40.0], "expected": 38.5}, {"input": [38.5, -39.5], "expected": 38.5}, {"input": [38.5, -39.0], "expected": 38.5}, {"input": [38.5, -38.5], "expected": 38.5}, {"input": [38.5, -38.0], "expected": 38.5}, {"input": [38.5, -37.5], "expected": 38.5}, {"input": [38.5, -37.0], "expected": 38.5}, {"input": [38.5, -36.5], "expected": 38.5}, {"input": [38.5, -36.0], "expected": 38.5}, {"input": [38.5, -35.5], "expected": 38.5}, {"input": [38.5, -35.0], "expected": 38.5}, {"input": [38.5, -34.5], "expected": 38.5}, {"input": [38.5, -34.0], "expected": 38.5}, {"input": [38.5, -33.5], "expected": 38.5}, {"input": [38.5, -33.0], "expected": 38.5}, {"input": [38.5, -32.5], "expected": 38.5}, {"input": [38.5, -32.0], "expected": 38.5}, {"input": [38.5, -31.5], "expected": 38.5}, {"input": [38.5, -31.0], "expected": 38.5}, {"input": [38.5, -30.5], "expected": 38.5}, {"input": [38.5, -30.0], "expected": 38.5}, {"input": [38.5, -29.5], "expected": 38.5}, {"input": [38.5, -29.0], "expected": 38.5}, {"input": [38.5, -28.5], "expected": 38.5}, {"input": [38.5, -28.0], "expected": 38.5}, {"input": [38.5, -27.5], "expected": 38.5}, {"input": [38.5, -27.0], "expected": 38.5}, {"input": [38.5, -26.5], "expected": 38.5}, {"input": [38.5, -26.0], "expected": 38.5}, {"input": [38.5, -25.5], "expected": 38.5}, {"input": [38.5, -25.0], "expected": 38.5}, {"input": [38.5, -24.5], "expected": 38.5}, {"input": [38.5, -24.0], "expected": 38.5}, {"input": [38.5, -23.5], "expected": 38.5}, {"input": [38.5, -23.0], "expected": 38.5}, {"input": [38.5, -22.5], "expected": 38.5}, {"input": [38.5, -22.0], "expected": 38.5}, {"input": [38.5, -21.5], "expected": 38.5}, {"input": [38.5, -21.0], "expected": 38.5}, {"input": [38.5, -20.5], "expected": 38.5}, {"input": [38.5, -20.0], "expected": 38.5}, {"input": [38.5, -19.5], "expected": 38.5}, {"input": [38.5, -19.0], "expected": 38.5}, {"input": [38.5, -18.5], "expected": 38.5}, {"input": [38.5, -18.0], "expected": 38.5}, {"input": [38.5, -17.5], "expected": 38.5}, {"input": [38.5, -17.0], "expected": 38.5}, {"input": [38.5, -16.5], "expected": 38.5}, {"input": [38.5, -16.0], "expected": 38.5}, {"input": [38.5, -15.5], "expected": 38.5}, {"input": [38.5, -15.0], "expected": 38.5}, {"input": [38.5, -14.5], "expected": 38.5}, {"input": [38.5, -14.0], "expected": 38.5}, {"input": [38.5, -13.5], "expected": 38.5}, {"input": [38.5, -13.0], "expected": 38.5}, {"input": [38.5, -12.5], "expected": 38.5}, {"input": [38.5, -12.0], "expected": 38.5}, {"input": [38.5, -11.5], "expected": 38.5}, {"input": [38.5, -11.0], "expected": 38.5}, {"input": [38.5, -10.5], "expected": 38.5}, {"input": [38.5, -10.0], "expected": 38.5}, {"input": [38.5, -9.5], "expected": 38.5}, {"input": [38.5, -9.0], "expected": 38.5}, {"input": [38.5, -8.5], "expected": 38.5}, {"input": [38.5, -8.0], "expected": 38.5}, {"input": [38.5, -7.5], "expected": 38.5}, {"input": [38.5, -7.0], "expected": 38.5}, {"input": [38.5, -6.5], "expected": 38.5}, {"input": [38.5, -6.0], "expected": 38.5}, {"input": [38.5, -5.5], "expected": 38.5}, {"input": [38.5, -5.0], "expected": 38.5}, {"input": [38.5, -4.5], "expected": 38.5}, {"input": [38.5, -4.0], "expected": 38.5}, {"input": [38.5, -3.5], "expected": 38.5}, {"input": [38.5, -3.0], "expected": 38.5}, {"input": [38.5, -2.5], "expected": 38.5}, {"input": [38.5, -2.0], "expected": 38.5}, {"input": [38.5, -1.5], "expected": 38.5}, {"input": [38.5, -1.0], "expected": 38.5}, {"input": [38.5, -0.5], "expected": 38.5}, {"input": [38.5, 0.0], "expected": 38.5}, {"input": [38.5, 0.5], "expected": 38.5}, {"input": [38.5, 1.0], "expected": 38.5}, {"input": [38.5, 1.5], "expected": 38.5}, {"input": [38.5, 2.0], "expected": 38.5}, {"input": [38.5, 2.5], "expected": 38.5}, {"input": [38.5, 3.0], "expected": 38.5}, {"input": [38.5, 3.5], "expected": 38.5}, {"input": [38.5, 4.0], "expected": 38.5}, {"input": [38.5, 4.5], "expected": 38.5}, {"input": [38.5, 5.0], "expected": 38.5}, {"input": [38.5, 5.5], "expected": 38.50000000000001}, {"input": [38.5, 6.0], "expected": 38.50000000000001}, {"input": [38.5, 6.5], "expected": 38.500000000000014}, {"input": [38.5, 7.0], "expected": 38.50000000000002}, {"input": [38.5, 7.5], "expected": 38.500000000000036}, {"input": [38.5, 8.0], "expected": 38.50000000000006}, {"input": [38.5, 8.5], "expected": 38.50000000000009}, {"input": [38.5, 9.0], "expected": 38.500000000000156}, {"input": [38.5, 9.5], "expected": 38.500000000000256}, {"input": [38.5, 10.0], "expected": 38.50000000000042}, {"input": [38.5, 10.5], "expected": 38.50000000000069}, {"input": [38.5, 11.0], "expected": 38.50000000000114}, {"input": [38.5, 11.5], "expected": 38.50000000000188}, {"input": [38.5, 12.0], "expected": 38.5000000000031}, {"input": [38.5, 12.5], "expected": 38.50000000000511}, {"input": [38.5, 13.0], "expected": 38.50000000000842}, {"input": [38.5, 13.5], "expected": 38.50000000001389}, {"input": [38.5, 14.0], "expected": 38.5000000000229}, {"input": [38.5, 14.5], "expected": 38.50000000003775}, {"input": [38.5, 15.0], "expected": 38.50000000006224}, {"input": [38.5, 15.5], "expected": 38.50000000010262}, {"input": [38.5, 16.0], "expected": 38.50000000016919}, {"input": [38.5, 16.5], "expected": 38.500000000278945}, {"input": [38.5, 17.0], "expected": 38.500000000459906}, {"input": [38.5, 17.5], "expected": 38.500000000758256}, {"input": [38.5, 18.0], "expected": 38.50000000125015}, {"input": [38.5, 18.5], "expected": 38.50000000206116}, {"input": [38.5, 19.0], "expected": 38.50000000339827}, {"input": [38.5, 19.5], "expected": 38.50000000560279}, {"input": [38.5, 20.0], "expected": 38.500000009237446}, {"input": [38.5, 20.5], "expected": 38.50000001522998}, {"input": [38.5, 21.0], "expected": 38.50000002510999}, {"input": [38.5, 21.5], "expected": 38.500000041399375}, {"input": [38.5, 22.0], "expected": 38.50000006825603}, {"input": [38.5, 22.5], "expected": 38.50000011253517}, {"input": [38.5, 23.0], "expected": 38.50000018553912}, {"input": [38.5, 23.5], "expected": 38.500000305902276}, {"input": [38.5, 24.0], "expected": 38.50000050434753}, {"input": [38.5, 24.5], "expected": 38.500000831528375}, {"input": [38.5, 25.0], "expected": 38.500001370958145}, {"input": [38.5, 25.5], "expected": 38.50000226032685}, {"input": [38.5, 26.0], "expected": 38.50000372664623}, {"input": [38.5, 26.5], "expected": 38.50000614419348}, {"input": [38.5, 27.0], "expected": 38.50001013004229}, {"input": [38.5, 27.5], "expected": 38.50001670156132}, {"input": [38.5, 28.0], "expected": 38.50002753607023}, {"input": [38.5, 28.5], "expected": 38.50004539889922}, {"input": [38.5, 29.0], "expected": 38.50007484902863}, {"input": [38.5, 29.5], "expected": 38.50012340218972}, {"input": [38.5, 30.0], "expected": 38.50020344767213}, {"input": [38.5, 30.5], "expected": 38.5003354063729}, {"input": [38.5, 31.0], "expected": 38.50055293147536}, {"input": [38.5, 31.5], "expected": 38.50091146645377}, {"input": [38.5, 32.0], "expected": 38.50150231015976}, {"input": [38.5, 32.5], "expected": 38.50247568513773}, {"input": [38.5, 33.0], "expected": 38.50407844327057}, {"input": [38.5, 33.5], "expected": 38.50671534848912}, {"input": [38.5, 34.0], "expected": 38.5110477448486}, {"input": [38.5, 34.5], "expected": 38.51814992791781}, {"input": [38.5, 35.0], "expected": 38.52975041827262}, {"input": [38.5, 35.5], "expected": 38.548587351573744}, {"input": [38.5, 36.0], "expected": 38.57888973429255}, {"input": [38.5, 36.5], "expected": 38.62692801104297}, {"input": [38.5, 37.0], "expected": 38.70141327798275}, {"input": [38.5, 37.5], "expected": 38.81326168751822}, {"input": [38.5, 38.0], "expected": 38.97407698418011}, {"input": [38.5, 38.5], "expected": 39.19314718055995}, {"input": [38.5, 39.0], "expected": 39.47407698418011}, {"input": [38.5, 39.5], "expected": 39.81326168751822}, {"input": [38.5, 40.0], "expected": 40.20141327798275}, {"input": [38.5, 40.5], "expected": 40.62692801104297}, {"input": [38.5, 41.0], "expected": 41.07888973429255}, {"input": [38.5, 41.5], "expected": 41.548587351573744}, {"input": [38.5, 42.0], "expected": 42.02975041827262}, {"input": [38.5, 42.5], "expected": 42.51814992791781}, {"input": [38.5, 43.0], "expected": 43.0110477448486}, {"input": [38.5, 43.5], "expected": 43.50671534848912}, {"input": [38.5, 44.0], "expected": 44.00407844327057}, {"input": [38.5, 44.5], "expected": 44.50247568513773}, {"input": [38.5, 45.0], "expected": 45.00150231015976}, {"input": [38.5, 45.5], "expected": 45.50091146645377}, {"input": [38.5, 46.0], "expected": 46.00055293147536}, {"input": [38.5, 46.5], "expected": 46.5003354063729}, {"input": [38.5, 47.0], "expected": 47.00020344767213}, {"input": [38.5, 47.5], "expected": 47.50012340218972}, {"input": [38.5, 48.0], "expected": 48.00007484902863}, {"input": [38.5, 48.5], "expected": 48.50004539889922}, {"input": [38.5, 49.0], "expected": 49.00002753607023}, {"input": [38.5, 49.5], "expected": 49.50001670156132}, {"input": [38.5, 50.0], "expected": 50.00001013004229}, {"input": [38.5, 50.5], "expected": 50.50000614419348}, {"input": [38.5, 51.0], "expected": 51.00000372664623}, {"input": [38.5, 51.5], "expected": 51.50000226032685}, {"input": [38.5, 52.0], "expected": 52.000001370958145}, {"input": [38.5, 52.5], "expected": 52.500000831528375}, {"input": [38.5, 53.0], "expected": 53.00000050434753}, {"input": [38.5, 53.5], "expected": 53.500000305902276}, {"input": [38.5, 54.0], "expected": 54.00000018553912}, {"input": [38.5, 54.5], "expected": 54.50000011253517}, {"input": [38.5, 55.0], "expected": 55.00000006825603}, {"input": [38.5, 55.5], "expected": 55.500000041399375}, {"input": [38.5, 56.0], "expected": 56.00000002510999}, {"input": [38.5, 56.5], "expected": 56.50000001522998}, {"input": [38.5, 57.0], "expected": 57.000000009237446}, {"input": [38.5, 57.5], "expected": 57.50000000560279}, {"input": [38.5, 58.0], "expected": 58.00000000339827}, {"input": [38.5, 58.5], "expected": 58.50000000206116}, {"input": [38.5, 59.0], "expected": 59.00000000125015}, {"input": [38.5, 59.5], "expected": 59.500000000758256}, {"input": [38.5, 60.0], "expected": 60.000000000459906}, {"input": [38.5, 60.5], "expected": 60.500000000278945}, {"input": [38.5, 61.0], "expected": 61.00000000016919}, {"input": [38.5, 61.5], "expected": 61.50000000010262}, {"input": [38.5, 62.0], "expected": 62.00000000006224}, {"input": [38.5, 62.5], "expected": 62.50000000003775}, {"input": [38.5, 63.0], "expected": 63.0000000000229}, {"input": [38.5, 63.5], "expected": 63.50000000001389}, {"input": [38.5, 64.0], "expected": 64.00000000000843}, {"input": [38.5, 64.5], "expected": 64.50000000000512}, {"input": [38.5, 65.0], "expected": 65.0000000000031}, {"input": [38.5, 65.5], "expected": 65.50000000000188}, {"input": [38.5, 66.0], "expected": 66.00000000000114}, {"input": [38.5, 66.5], "expected": 66.5000000000007}, {"input": [38.5, 67.0], "expected": 67.00000000000043}, {"input": [38.5, 67.5], "expected": 67.50000000000026}, {"input": [38.5, 68.0], "expected": 68.00000000000016}, {"input": [38.5, 68.5], "expected": 68.5000000000001}, {"input": [38.5, 69.0], "expected": 69.00000000000006}, {"input": [38.5, 69.5], "expected": 69.50000000000003}, {"input": [38.5, 70.0], "expected": 70.00000000000001}, {"input": [38.5, 70.5], "expected": 70.50000000000001}, {"input": [38.5, 71.0], "expected": 71.00000000000001}, {"input": [38.5, 71.5], "expected": 71.5}, {"input": [38.5, 72.0], "expected": 72.0}, {"input": [38.5, 72.5], "expected": 72.5}, {"input": [38.5, 73.0], "expected": 73.0}, {"input": [38.5, 73.5], "expected": 73.5}, {"input": [38.5, 74.0], "expected": 74.0}, {"input": [38.5, 74.5], "expected": 74.5}, {"input": [38.5, 75.0], "expected": 75.0}, {"input": [38.5, 75.5], "expected": 75.5}, {"input": [38.5, 76.0], "expected": 76.0}, {"input": [38.5, 76.5], "expected": 76.5}, {"input": [38.5, 77.0], "expected": 77.0}, {"input": [38.5, 77.5], "expected": 77.5}, {"input": [38.5, 78.0], "expected": 78.0}, {"input": [38.5, 78.5], "expected": 78.5}, {"input": [38.5, 79.0], "expected": 79.0}, {"input": [38.5, 79.5], "expected": 79.5}, {"input": [38.5, 80.0], "expected": 80.0}, {"input": [38.5, 80.5], "expected": 80.5}, {"input": [38.5, 81.0], "expected": 81.0}, {"input": [38.5, 81.5], "expected": 81.5}, {"input": [38.5, 82.0], "expected": 82.0}, {"input": [38.5, 82.5], "expected": 82.5}, {"input": [38.5, 83.0], "expected": 83.0}, {"input": [38.5, 83.5], "expected": 83.5}, {"input": [38.5, 84.0], "expected": 84.0}, {"input": [38.5, 84.5], "expected": 84.5}, {"input": [38.5, 85.0], "expected": 85.0}, {"input": [38.5, 85.5], "expected": 85.5}, {"input": [38.5, 86.0], "expected": 86.0}, {"input": [38.5, 86.5], "expected": 86.5}, {"input": [38.5, 87.0], "expected": 87.0}, {"input": [38.5, 87.5], "expected": 87.5}, {"input": [38.5, 88.0], "expected": 88.0}, {"input": [38.5, 88.5], "expected": 88.5}, {"input": [38.5, 89.0], "expected": 89.0}, {"input": [38.5, 89.5], "expected": 89.5}, {"input": [38.5, 90.0], "expected": 90.0}, {"input": [38.5, 90.5], "expected": 90.5}, {"input": [38.5, 91.0], "expected": 91.0}, {"input": [38.5, 91.5], "expected": 91.5}, {"input": [38.5, 92.0], "expected": 92.0}, {"input": [38.5, 92.5], "expected": 92.5}, {"input": [38.5, 93.0], "expected": 93.0}, {"input": [38.5, 93.5], "expected": 93.5}, {"input": [38.5, 94.0], "expected": 94.0}, {"input": [38.5, 94.5], "expected": 94.5}, {"input": [38.5, 95.0], "expected": 95.0}, {"input": [38.5, 95.5], "expected": 95.5}, {"input": [38.5, 96.0], "expected": 96.0}, {"input": [38.5, 96.5], "expected": 96.5}, {"input": [38.5, 97.0], "expected": 97.0}, {"input": [38.5, 97.5], "expected": 97.5}, {"input": [38.5, 98.0], "expected": 98.0}, {"input": [38.5, 98.5], "expected": 98.5}, {"input": [38.5, 99.0], "expected": 99.0}, {"input": [38.5, 99.5], "expected": 99.5}, {"input": [39.0, -100.0], "expected": 39.0}, {"input": [39.0, -99.5], "expected": 39.0}, {"input": [39.0, -99.0], "expected": 39.0}, {"input": [39.0, -98.5], "expected": 39.0}, {"input": [39.0, -98.0], "expected": 39.0}, {"input": [39.0, -97.5], "expected": 39.0}, {"input": [39.0, -97.0], "expected": 39.0}, {"input": [39.0, -96.5], "expected": 39.0}, {"input": [39.0, -96.0], "expected": 39.0}, {"input": [39.0, -95.5], "expected": 39.0}, {"input": [39.0, -95.0], "expected": 39.0}, {"input": [39.0, -94.5], "expected": 39.0}, {"input": [39.0, -94.0], "expected": 39.0}, {"input": [39.0, -93.5], "expected": 39.0}, {"input": [39.0, -93.0], "expected": 39.0}, {"input": [39.0, -92.5], "expected": 39.0}, {"input": [39.0, -92.0], "expected": 39.0}, {"input": [39.0, -91.5], "expected": 39.0}, {"input": [39.0, -91.0], "expected": 39.0}, {"input": [39.0, -90.5], "expected": 39.0}, {"input": [39.0, -90.0], "expected": 39.0}, {"input": [39.0, -89.5], "expected": 39.0}, {"input": [39.0, -89.0], "expected": 39.0}, {"input": [39.0, -88.5], "expected": 39.0}, {"input": [39.0, -88.0], "expected": 39.0}, {"input": [39.0, -87.5], "expected": 39.0}, {"input": [39.0, -87.0], "expected": 39.0}, {"input": [39.0, -86.5], "expected": 39.0}, {"input": [39.0, -86.0], "expected": 39.0}, {"input": [39.0, -85.5], "expected": 39.0}, {"input": [39.0, -85.0], "expected": 39.0}, {"input": [39.0, -84.5], "expected": 39.0}, {"input": [39.0, -84.0], "expected": 39.0}, {"input": [39.0, -83.5], "expected": 39.0}, {"input": [39.0, -83.0], "expected": 39.0}, {"input": [39.0, -82.5], "expected": 39.0}, {"input": [39.0, -82.0], "expected": 39.0}, {"input": [39.0, -81.5], "expected": 39.0}, {"input": [39.0, -81.0], "expected": 39.0}, {"input": [39.0, -80.5], "expected": 39.0}, {"input": [39.0, -80.0], "expected": 39.0}, {"input": [39.0, -79.5], "expected": 39.0}, {"input": [39.0, -79.0], "expected": 39.0}, {"input": [39.0, -78.5], "expected": 39.0}, {"input": [39.0, -78.0], "expected": 39.0}, {"input": [39.0, -77.5], "expected": 39.0}, {"input": [39.0, -77.0], "expected": 39.0}, {"input": [39.0, -76.5], "expected": 39.0}, {"input": [39.0, -76.0], "expected": 39.0}, {"input": [39.0, -75.5], "expected": 39.0}, {"input": [39.0, -75.0], "expected": 39.0}, {"input": [39.0, -74.5], "expected": 39.0}, {"input": [39.0, -74.0], "expected": 39.0}, {"input": [39.0, -73.5], "expected": 39.0}, {"input": [39.0, -73.0], "expected": 39.0}, {"input": [39.0, -72.5], "expected": 39.0}, {"input": [39.0, -72.0], "expected": 39.0}, {"input": [39.0, -71.5], "expected": 39.0}, {"input": [39.0, -71.0], "expected": 39.0}, {"input": [39.0, -70.5], "expected": 39.0}, {"input": [39.0, -70.0], "expected": 39.0}, {"input": [39.0, -69.5], "expected": 39.0}, {"input": [39.0, -69.0], "expected": 39.0}, {"input": [39.0, -68.5], "expected": 39.0}, {"input": [39.0, -68.0], "expected": 39.0}, {"input": [39.0, -67.5], "expected": 39.0}, {"input": [39.0, -67.0], "expected": 39.0}, {"input": [39.0, -66.5], "expected": 39.0}, {"input": [39.0, -66.0], "expected": 39.0}, {"input": [39.0, -65.5], "expected": 39.0}, {"input": [39.0, -65.0], "expected": 39.0}, {"input": [39.0, -64.5], "expected": 39.0}, {"input": [39.0, -64.0], "expected": 39.0}, {"input": [39.0, -63.5], "expected": 39.0}, {"input": [39.0, -63.0], "expected": 39.0}, {"input": [39.0, -62.5], "expected": 39.0}, {"input": [39.0, -62.0], "expected": 39.0}, {"input": [39.0, -61.5], "expected": 39.0}, {"input": [39.0, -61.0], "expected": 39.0}, {"input": [39.0, -60.5], "expected": 39.0}, {"input": [39.0, -60.0], "expected": 39.0}, {"input": [39.0, -59.5], "expected": 39.0}, {"input": [39.0, -59.0], "expected": 39.0}, {"input": [39.0, -58.5], "expected": 39.0}, {"input": [39.0, -58.0], "expected": 39.0}, {"input": [39.0, -57.5], "expected": 39.0}, {"input": [39.0, -57.0], "expected": 39.0}, {"input": [39.0, -56.5], "expected": 39.0}, {"input": [39.0, -56.0], "expected": 39.0}, {"input": [39.0, -55.5], "expected": 39.0}, {"input": [39.0, -55.0], "expected": 39.0}, {"input": [39.0, -54.5], "expected": 39.0}, {"input": [39.0, -54.0], "expected": 39.0}, {"input": [39.0, -53.5], "expected": 39.0}, {"input": [39.0, -53.0], "expected": 39.0}, {"input": [39.0, -52.5], "expected": 39.0}, {"input": [39.0, -52.0], "expected": 39.0}, {"input": [39.0, -51.5], "expected": 39.0}, {"input": [39.0, -51.0], "expected": 39.0}, {"input": [39.0, -50.5], "expected": 39.0}, {"input": [39.0, -50.0], "expected": 39.0}, {"input": [39.0, -49.5], "expected": 39.0}, {"input": [39.0, -49.0], "expected": 39.0}, {"input": [39.0, -48.5], "expected": 39.0}, {"input": [39.0, -48.0], "expected": 39.0}, {"input": [39.0, -47.5], "expected": 39.0}, {"input": [39.0, -47.0], "expected": 39.0}, {"input": [39.0, -46.5], "expected": 39.0}, {"input": [39.0, -46.0], "expected": 39.0}, {"input": [39.0, -45.5], "expected": 39.0}, {"input": [39.0, -45.0], "expected": 39.0}, {"input": [39.0, -44.5], "expected": 39.0}, {"input": [39.0, -44.0], "expected": 39.0}, {"input": [39.0, -43.5], "expected": 39.0}, {"input": [39.0, -43.0], "expected": 39.0}, {"input": [39.0, -42.5], "expected": 39.0}, {"input": [39.0, -42.0], "expected": 39.0}, {"input": [39.0, -41.5], "expected": 39.0}, {"input": [39.0, -41.0], "expected": 39.0}, {"input": [39.0, -40.5], "expected": 39.0}, {"input": [39.0, -40.0], "expected": 39.0}, {"input": [39.0, -39.5], "expected": 39.0}, {"input": [39.0, -39.0], "expected": 39.0}, {"input": [39.0, -38.5], "expected": 39.0}, {"input": [39.0, -38.0], "expected": 39.0}, {"input": [39.0, -37.5], "expected": 39.0}, {"input": [39.0, -37.0], "expected": 39.0}, {"input": [39.0, -36.5], "expected": 39.0}, {"input": [39.0, -36.0], "expected": 39.0}, {"input": [39.0, -35.5], "expected": 39.0}, {"input": [39.0, -35.0], "expected": 39.0}, {"input": [39.0, -34.5], "expected": 39.0}, {"input": [39.0, -34.0], "expected": 39.0}, {"input": [39.0, -33.5], "expected": 39.0}, {"input": [39.0, -33.0], "expected": 39.0}, {"input": [39.0, -32.5], "expected": 39.0}, {"input": [39.0, -32.0], "expected": 39.0}, {"input": [39.0, -31.5], "expected": 39.0}, {"input": [39.0, -31.0], "expected": 39.0}, {"input": [39.0, -30.5], "expected": 39.0}, {"input": [39.0, -30.0], "expected": 39.0}, {"input": [39.0, -29.5], "expected": 39.0}, {"input": [39.0, -29.0], "expected": 39.0}, {"input": [39.0, -28.5], "expected": 39.0}, {"input": [39.0, -28.0], "expected": 39.0}, {"input": [39.0, -27.5], "expected": 39.0}, {"input": [39.0, -27.0], "expected": 39.0}, {"input": [39.0, -26.5], "expected": 39.0}, {"input": [39.0, -26.0], "expected": 39.0}, {"input": [39.0, -25.5], "expected": 39.0}, {"input": [39.0, -25.0], "expected": 39.0}, {"input": [39.0, -24.5], "expected": 39.0}, {"input": [39.0, -24.0], "expected": 39.0}, {"input": [39.0, -23.5], "expected": 39.0}, {"input": [39.0, -23.0], "expected": 39.0}, {"input": [39.0, -22.5], "expected": 39.0}, {"input": [39.0, -22.0], "expected": 39.0}, {"input": [39.0, -21.5], "expected": 39.0}, {"input": [39.0, -21.0], "expected": 39.0}, {"input": [39.0, -20.5], "expected": 39.0}, {"input": [39.0, -20.0], "expected": 39.0}, {"input": [39.0, -19.5], "expected": 39.0}, {"input": [39.0, -19.0], "expected": 39.0}, {"input": [39.0, -18.5], "expected": 39.0}, {"input": [39.0, -18.0], "expected": 39.0}, {"input": [39.0, -17.5], "expected": 39.0}, {"input": [39.0, -17.0], "expected": 39.0}, {"input": [39.0, -16.5], "expected": 39.0}, {"input": [39.0, -16.0], "expected": 39.0}, {"input": [39.0, -15.5], "expected": 39.0}, {"input": [39.0, -15.0], "expected": 39.0}, {"input": [39.0, -14.5], "expected": 39.0}, {"input": [39.0, -14.0], "expected": 39.0}, {"input": [39.0, -13.5], "expected": 39.0}, {"input": [39.0, -13.0], "expected": 39.0}, {"input": [39.0, -12.5], "expected": 39.0}, {"input": [39.0, -12.0], "expected": 39.0}, {"input": [39.0, -11.5], "expected": 39.0}, {"input": [39.0, -11.0], "expected": 39.0}, {"input": [39.0, -10.5], "expected": 39.0}, {"input": [39.0, -10.0], "expected": 39.0}, {"input": [39.0, -9.5], "expected": 39.0}, {"input": [39.0, -9.0], "expected": 39.0}, {"input": [39.0, -8.5], "expected": 39.0}, {"input": [39.0, -8.0], "expected": 39.0}, {"input": [39.0, -7.5], "expected": 39.0}, {"input": [39.0, -7.0], "expected": 39.0}, {"input": [39.0, -6.5], "expected": 39.0}, {"input": [39.0, -6.0], "expected": 39.0}, {"input": [39.0, -5.5], "expected": 39.0}, {"input": [39.0, -5.0], "expected": 39.0}, {"input": [39.0, -4.5], "expected": 39.0}, {"input": [39.0, -4.0], "expected": 39.0}, {"input": [39.0, -3.5], "expected": 39.0}, {"input": [39.0, -3.0], "expected": 39.0}, {"input": [39.0, -2.5], "expected": 39.0}, {"input": [39.0, -2.0], "expected": 39.0}, {"input": [39.0, -1.5], "expected": 39.0}, {"input": [39.0, -1.0], "expected": 39.0}, {"input": [39.0, -0.5], "expected": 39.0}, {"input": [39.0, 0.0], "expected": 39.0}, {"input": [39.0, 0.5], "expected": 39.0}, {"input": [39.0, 1.0], "expected": 39.0}, {"input": [39.0, 1.5], "expected": 39.0}, {"input": [39.0, 2.0], "expected": 39.0}, {"input": [39.0, 2.5], "expected": 39.0}, {"input": [39.0, 3.0], "expected": 39.0}, {"input": [39.0, 3.5], "expected": 39.0}, {"input": [39.0, 4.0], "expected": 39.0}, {"input": [39.0, 4.5], "expected": 39.0}, {"input": [39.0, 5.0], "expected": 39.0}, {"input": [39.0, 5.5], "expected": 39.0}, {"input": [39.0, 6.0], "expected": 39.00000000000001}, {"input": [39.0, 6.5], "expected": 39.00000000000001}, {"input": [39.0, 7.0], "expected": 39.000000000000014}, {"input": [39.0, 7.5], "expected": 39.00000000000002}, {"input": [39.0, 8.0], "expected": 39.000000000000036}, {"input": [39.0, 8.5], "expected": 39.00000000000006}, {"input": [39.0, 9.0], "expected": 39.00000000000009}, {"input": [39.0, 9.5], "expected": 39.000000000000156}, {"input": [39.0, 10.0], "expected": 39.000000000000256}, {"input": [39.0, 10.5], "expected": 39.00000000000042}, {"input": [39.0, 11.0], "expected": 39.00000000000069}, {"input": [39.0, 11.5], "expected": 39.00000000000114}, {"input": [39.0, 12.0], "expected": 39.00000000000188}, {"input": [39.0, 12.5], "expected": 39.0000000000031}, {"input": [39.0, 13.0], "expected": 39.00000000000511}, {"input": [39.0, 13.5], "expected": 39.00000000000842}, {"input": [39.0, 14.0], "expected": 39.00000000001389}, {"input": [39.0, 14.5], "expected": 39.0000000000229}, {"input": [39.0, 15.0], "expected": 39.00000000003775}, {"input": [39.0, 15.5], "expected": 39.00000000006224}, {"input": [39.0, 16.0], "expected": 39.00000000010262}, {"input": [39.0, 16.5], "expected": 39.00000000016919}, {"input": [39.0, 17.0], "expected": 39.000000000278945}, {"input": [39.0, 17.5], "expected": 39.000000000459906}, {"input": [39.0, 18.0], "expected": 39.000000000758256}, {"input": [39.0, 18.5], "expected": 39.00000000125015}, {"input": [39.0, 19.0], "expected": 39.00000000206116}, {"input": [39.0, 19.5], "expected": 39.00000000339827}, {"input": [39.0, 20.0], "expected": 39.00000000560279}, {"input": [39.0, 20.5], "expected": 39.000000009237446}, {"input": [39.0, 21.0], "expected": 39.00000001522998}, {"input": [39.0, 21.5], "expected": 39.00000002510999}, {"input": [39.0, 22.0], "expected": 39.000000041399375}, {"input": [39.0, 22.5], "expected": 39.00000006825603}, {"input": [39.0, 23.0], "expected": 39.00000011253517}, {"input": [39.0, 23.5], "expected": 39.00000018553912}, {"input": [39.0, 24.0], "expected": 39.000000305902276}, {"input": [39.0, 24.5], "expected": 39.00000050434753}, {"input": [39.0, 25.0], "expected": 39.000000831528375}, {"input": [39.0, 25.5], "expected": 39.000001370958145}, {"input": [39.0, 26.0], "expected": 39.00000226032685}, {"input": [39.0, 26.5], "expected": 39.00000372664623}, {"input": [39.0, 27.0], "expected": 39.00000614419348}, {"input": [39.0, 27.5], "expected": 39.00001013004229}, {"input": [39.0, 28.0], "expected": 39.00001670156132}, {"input": [39.0, 28.5], "expected": 39.00002753607023}, {"input": [39.0, 29.0], "expected": 39.00004539889922}, {"input": [39.0, 29.5], "expected": 39.00007484902863}, {"input": [39.0, 30.0], "expected": 39.00012340218972}, {"input": [39.0, 30.5], "expected": 39.00020344767213}, {"input": [39.0, 31.0], "expected": 39.0003354063729}, {"input": [39.0, 31.5], "expected": 39.00055293147536}, {"input": [39.0, 32.0], "expected": 39.00091146645377}, {"input": [39.0, 32.5], "expected": 39.00150231015976}, {"input": [39.0, 33.0], "expected": 39.00247568513773}, {"input": [39.0, 33.5], "expected": 39.00407844327057}, {"input": [39.0, 34.0], "expected": 39.00671534848912}, {"input": [39.0, 34.5], "expected": 39.0110477448486}, {"input": [39.0, 35.0], "expected": 39.01814992791781}, {"input": [39.0, 35.5], "expected": 39.02975041827262}, {"input": [39.0, 36.0], "expected": 39.048587351573744}, {"input": [39.0, 36.5], "expected": 39.07888973429255}, {"input": [39.0, 37.0], "expected": 39.12692801104297}, {"input": [39.0, 37.5], "expected": 39.20141327798275}, {"input": [39.0, 38.0], "expected": 39.31326168751822}, {"input": [39.0, 38.5], "expected": 39.47407698418011}, {"input": [39.0, 39.0], "expected": 39.69314718055995}, {"input": [39.0, 39.5], "expected": 39.97407698418011}, {"input": [39.0, 40.0], "expected": 40.31326168751822}, {"input": [39.0, 40.5], "expected": 40.70141327798275}, {"input": [39.0, 41.0], "expected": 41.12692801104297}, {"input": [39.0, 41.5], "expected": 41.57888973429255}, {"input": [39.0, 42.0], "expected": 42.048587351573744}, {"input": [39.0, 42.5], "expected": 42.52975041827262}, {"input": [39.0, 43.0], "expected": 43.01814992791781}, {"input": [39.0, 43.5], "expected": 43.5110477448486}, {"input": [39.0, 44.0], "expected": 44.00671534848912}, {"input": [39.0, 44.5], "expected": 44.50407844327057}, {"input": [39.0, 45.0], "expected": 45.00247568513773}, {"input": [39.0, 45.5], "expected": 45.50150231015976}, {"input": [39.0, 46.0], "expected": 46.00091146645377}, {"input": [39.0, 46.5], "expected": 46.50055293147536}, {"input": [39.0, 47.0], "expected": 47.0003354063729}, {"input": [39.0, 47.5], "expected": 47.50020344767213}, {"input": [39.0, 48.0], "expected": 48.00012340218972}, {"input": [39.0, 48.5], "expected": 48.50007484902863}, {"input": [39.0, 49.0], "expected": 49.00004539889922}, {"input": [39.0, 49.5], "expected": 49.50002753607023}, {"input": [39.0, 50.0], "expected": 50.00001670156132}, {"input": [39.0, 50.5], "expected": 50.50001013004229}, {"input": [39.0, 51.0], "expected": 51.00000614419348}, {"input": [39.0, 51.5], "expected": 51.50000372664623}, {"input": [39.0, 52.0], "expected": 52.00000226032685}, {"input": [39.0, 52.5], "expected": 52.500001370958145}, {"input": [39.0, 53.0], "expected": 53.000000831528375}, {"input": [39.0, 53.5], "expected": 53.50000050434753}, {"input": [39.0, 54.0], "expected": 54.000000305902276}, {"input": [39.0, 54.5], "expected": 54.50000018553912}, {"input": [39.0, 55.0], "expected": 55.00000011253517}, {"input": [39.0, 55.5], "expected": 55.50000006825603}, {"input": [39.0, 56.0], "expected": 56.000000041399375}, {"input": [39.0, 56.5], "expected": 56.50000002510999}, {"input": [39.0, 57.0], "expected": 57.00000001522998}, {"input": [39.0, 57.5], "expected": 57.500000009237446}, {"input": [39.0, 58.0], "expected": 58.00000000560279}, {"input": [39.0, 58.5], "expected": 58.50000000339827}, {"input": [39.0, 59.0], "expected": 59.00000000206116}, {"input": [39.0, 59.5], "expected": 59.50000000125015}, {"input": [39.0, 60.0], "expected": 60.000000000758256}, {"input": [39.0, 60.5], "expected": 60.500000000459906}, {"input": [39.0, 61.0], "expected": 61.000000000278945}, {"input": [39.0, 61.5], "expected": 61.50000000016919}, {"input": [39.0, 62.0], "expected": 62.00000000010262}, {"input": [39.0, 62.5], "expected": 62.50000000006224}, {"input": [39.0, 63.0], "expected": 63.00000000003775}, {"input": [39.0, 63.5], "expected": 63.5000000000229}, {"input": [39.0, 64.0], "expected": 64.00000000001388}, {"input": [39.0, 64.5], "expected": 64.50000000000843}, {"input": [39.0, 65.0], "expected": 65.00000000000512}, {"input": [39.0, 65.5], "expected": 65.5000000000031}, {"input": [39.0, 66.0], "expected": 66.00000000000188}, {"input": [39.0, 66.5], "expected": 66.50000000000114}, {"input": [39.0, 67.0], "expected": 67.0000000000007}, {"input": [39.0, 67.5], "expected": 67.50000000000043}, {"input": [39.0, 68.0], "expected": 68.00000000000026}, {"input": [39.0, 68.5], "expected": 68.50000000000016}, {"input": [39.0, 69.0], "expected": 69.0000000000001}, {"input": [39.0, 69.5], "expected": 69.50000000000006}, {"input": [39.0, 70.0], "expected": 70.00000000000003}, {"input": [39.0, 70.5], "expected": 70.50000000000001}, {"input": [39.0, 71.0], "expected": 71.00000000000001}, {"input": [39.0, 71.5], "expected": 71.50000000000001}, {"input": [39.0, 72.0], "expected": 72.0}, {"input": [39.0, 72.5], "expected": 72.5}, {"input": [39.0, 73.0], "expected": 73.0}, {"input": [39.0, 73.5], "expected": 73.5}, {"input": [39.0, 74.0], "expected": 74.0}, {"input": [39.0, 74.5], "expected": 74.5}, {"input": [39.0, 75.0], "expected": 75.0}, {"input": [39.0, 75.5], "expected": 75.5}, {"input": [39.0, 76.0], "expected": 76.0}, {"input": [39.0, 76.5], "expected": 76.5}, {"input": [39.0, 77.0], "expected": 77.0}, {"input": [39.0, 77.5], "expected": 77.5}, {"input": [39.0, 78.0], "expected": 78.0}, {"input": [39.0, 78.5], "expected": 78.5}, {"input": [39.0, 79.0], "expected": 79.0}, {"input": [39.0, 79.5], "expected": 79.5}, {"input": [39.0, 80.0], "expected": 80.0}, {"input": [39.0, 80.5], "expected": 80.5}, {"input": [39.0, 81.0], "expected": 81.0}, {"input": [39.0, 81.5], "expected": 81.5}, {"input": [39.0, 82.0], "expected": 82.0}, {"input": [39.0, 82.5], "expected": 82.5}, {"input": [39.0, 83.0], "expected": 83.0}, {"input": [39.0, 83.5], "expected": 83.5}, {"input": [39.0, 84.0], "expected": 84.0}, {"input": [39.0, 84.5], "expected": 84.5}, {"input": [39.0, 85.0], "expected": 85.0}, {"input": [39.0, 85.5], "expected": 85.5}, {"input": [39.0, 86.0], "expected": 86.0}, {"input": [39.0, 86.5], "expected": 86.5}, {"input": [39.0, 87.0], "expected": 87.0}, {"input": [39.0, 87.5], "expected": 87.5}, {"input": [39.0, 88.0], "expected": 88.0}, {"input": [39.0, 88.5], "expected": 88.5}, {"input": [39.0, 89.0], "expected": 89.0}, {"input": [39.0, 89.5], "expected": 89.5}, {"input": [39.0, 90.0], "expected": 90.0}, {"input": [39.0, 90.5], "expected": 90.5}, {"input": [39.0, 91.0], "expected": 91.0}, {"input": [39.0, 91.5], "expected": 91.5}, {"input": [39.0, 92.0], "expected": 92.0}, {"input": [39.0, 92.5], "expected": 92.5}, {"input": [39.0, 93.0], "expected": 93.0}, {"input": [39.0, 93.5], "expected": 93.5}, {"input": [39.0, 94.0], "expected": 94.0}, {"input": [39.0, 94.5], "expected": 94.5}, {"input": [39.0, 95.0], "expected": 95.0}, {"input": [39.0, 95.5], "expected": 95.5}, {"input": [39.0, 96.0], "expected": 96.0}, {"input": [39.0, 96.5], "expected": 96.5}, {"input": [39.0, 97.0], "expected": 97.0}, {"input": [39.0, 97.5], "expected": 97.5}, {"input": [39.0, 98.0], "expected": 98.0}, {"input": [39.0, 98.5], "expected": 98.5}, {"input": [39.0, 99.0], "expected": 99.0}, {"input": [39.0, 99.5], "expected": 99.5}, {"input": [39.5, -100.0], "expected": 39.5}, {"input": [39.5, -99.5], "expected": 39.5}, {"input": [39.5, -99.0], "expected": 39.5}, {"input": [39.5, -98.5], "expected": 39.5}, {"input": [39.5, -98.0], "expected": 39.5}, {"input": [39.5, -97.5], "expected": 39.5}, {"input": [39.5, -97.0], "expected": 39.5}, {"input": [39.5, -96.5], "expected": 39.5}, {"input": [39.5, -96.0], "expected": 39.5}, {"input": [39.5, -95.5], "expected": 39.5}, {"input": [39.5, -95.0], "expected": 39.5}, {"input": [39.5, -94.5], "expected": 39.5}, {"input": [39.5, -94.0], "expected": 39.5}, {"input": [39.5, -93.5], "expected": 39.5}, {"input": [39.5, -93.0], "expected": 39.5}, {"input": [39.5, -92.5], "expected": 39.5}, {"input": [39.5, -92.0], "expected": 39.5}, {"input": [39.5, -91.5], "expected": 39.5}, {"input": [39.5, -91.0], "expected": 39.5}, {"input": [39.5, -90.5], "expected": 39.5}, {"input": [39.5, -90.0], "expected": 39.5}, {"input": [39.5, -89.5], "expected": 39.5}, {"input": [39.5, -89.0], "expected": 39.5}, {"input": [39.5, -88.5], "expected": 39.5}, {"input": [39.5, -88.0], "expected": 39.5}, {"input": [39.5, -87.5], "expected": 39.5}, {"input": [39.5, -87.0], "expected": 39.5}, {"input": [39.5, -86.5], "expected": 39.5}, {"input": [39.5, -86.0], "expected": 39.5}, {"input": [39.5, -85.5], "expected": 39.5}, {"input": [39.5, -85.0], "expected": 39.5}, {"input": [39.5, -84.5], "expected": 39.5}, {"input": [39.5, -84.0], "expected": 39.5}, {"input": [39.5, -83.5], "expected": 39.5}, {"input": [39.5, -83.0], "expected": 39.5}, {"input": [39.5, -82.5], "expected": 39.5}, {"input": [39.5, -82.0], "expected": 39.5}, {"input": [39.5, -81.5], "expected": 39.5}, {"input": [39.5, -81.0], "expected": 39.5}, {"input": [39.5, -80.5], "expected": 39.5}, {"input": [39.5, -80.0], "expected": 39.5}, {"input": [39.5, -79.5], "expected": 39.5}, {"input": [39.5, -79.0], "expected": 39.5}, {"input": [39.5, -78.5], "expected": 39.5}, {"input": [39.5, -78.0], "expected": 39.5}, {"input": [39.5, -77.5], "expected": 39.5}, {"input": [39.5, -77.0], "expected": 39.5}, {"input": [39.5, -76.5], "expected": 39.5}, {"input": [39.5, -76.0], "expected": 39.5}, {"input": [39.5, -75.5], "expected": 39.5}, {"input": [39.5, -75.0], "expected": 39.5}, {"input": [39.5, -74.5], "expected": 39.5}, {"input": [39.5, -74.0], "expected": 39.5}, {"input": [39.5, -73.5], "expected": 39.5}, {"input": [39.5, -73.0], "expected": 39.5}, {"input": [39.5, -72.5], "expected": 39.5}, {"input": [39.5, -72.0], "expected": 39.5}, {"input": [39.5, -71.5], "expected": 39.5}, {"input": [39.5, -71.0], "expected": 39.5}, {"input": [39.5, -70.5], "expected": 39.5}, {"input": [39.5, -70.0], "expected": 39.5}, {"input": [39.5, -69.5], "expected": 39.5}, {"input": [39.5, -69.0], "expected": 39.5}, {"input": [39.5, -68.5], "expected": 39.5}, {"input": [39.5, -68.0], "expected": 39.5}, {"input": [39.5, -67.5], "expected": 39.5}, {"input": [39.5, -67.0], "expected": 39.5}, {"input": [39.5, -66.5], "expected": 39.5}, {"input": [39.5, -66.0], "expected": 39.5}, {"input": [39.5, -65.5], "expected": 39.5}, {"input": [39.5, -65.0], "expected": 39.5}, {"input": [39.5, -64.5], "expected": 39.5}, {"input": [39.5, -64.0], "expected": 39.5}, {"input": [39.5, -63.5], "expected": 39.5}, {"input": [39.5, -63.0], "expected": 39.5}, {"input": [39.5, -62.5], "expected": 39.5}, {"input": [39.5, -62.0], "expected": 39.5}, {"input": [39.5, -61.5], "expected": 39.5}, {"input": [39.5, -61.0], "expected": 39.5}, {"input": [39.5, -60.5], "expected": 39.5}, {"input": [39.5, -60.0], "expected": 39.5}, {"input": [39.5, -59.5], "expected": 39.5}, {"input": [39.5, -59.0], "expected": 39.5}, {"input": [39.5, -58.5], "expected": 39.5}, {"input": [39.5, -58.0], "expected": 39.5}, {"input": [39.5, -57.5], "expected": 39.5}, {"input": [39.5, -57.0], "expected": 39.5}, {"input": [39.5, -56.5], "expected": 39.5}, {"input": [39.5, -56.0], "expected": 39.5}, {"input": [39.5, -55.5], "expected": 39.5}, {"input": [39.5, -55.0], "expected": 39.5}, {"input": [39.5, -54.5], "expected": 39.5}, {"input": [39.5, -54.0], "expected": 39.5}, {"input": [39.5, -53.5], "expected": 39.5}, {"input": [39.5, -53.0], "expected": 39.5}, {"input": [39.5, -52.5], "expected": 39.5}, {"input": [39.5, -52.0], "expected": 39.5}, {"input": [39.5, -51.5], "expected": 39.5}, {"input": [39.5, -51.0], "expected": 39.5}, {"input": [39.5, -50.5], "expected": 39.5}, {"input": [39.5, -50.0], "expected": 39.5}, {"input": [39.5, -49.5], "expected": 39.5}, {"input": [39.5, -49.0], "expected": 39.5}, {"input": [39.5, -48.5], "expected": 39.5}, {"input": [39.5, -48.0], "expected": 39.5}, {"input": [39.5, -47.5], "expected": 39.5}, {"input": [39.5, -47.0], "expected": 39.5}, {"input": [39.5, -46.5], "expected": 39.5}, {"input": [39.5, -46.0], "expected": 39.5}, {"input": [39.5, -45.5], "expected": 39.5}, {"input": [39.5, -45.0], "expected": 39.5}, {"input": [39.5, -44.5], "expected": 39.5}, {"input": [39.5, -44.0], "expected": 39.5}, {"input": [39.5, -43.5], "expected": 39.5}, {"input": [39.5, -43.0], "expected": 39.5}, {"input": [39.5, -42.5], "expected": 39.5}, {"input": [39.5, -42.0], "expected": 39.5}, {"input": [39.5, -41.5], "expected": 39.5}, {"input": [39.5, -41.0], "expected": 39.5}, {"input": [39.5, -40.5], "expected": 39.5}, {"input": [39.5, -40.0], "expected": 39.5}, {"input": [39.5, -39.5], "expected": 39.5}, {"input": [39.5, -39.0], "expected": 39.5}, {"input": [39.5, -38.5], "expected": 39.5}, {"input": [39.5, -38.0], "expected": 39.5}, {"input": [39.5, -37.5], "expected": 39.5}, {"input": [39.5, -37.0], "expected": 39.5}, {"input": [39.5, -36.5], "expected": 39.5}, {"input": [39.5, -36.0], "expected": 39.5}, {"input": [39.5, -35.5], "expected": 39.5}, {"input": [39.5, -35.0], "expected": 39.5}, {"input": [39.5, -34.5], "expected": 39.5}, {"input": [39.5, -34.0], "expected": 39.5}, {"input": [39.5, -33.5], "expected": 39.5}, {"input": [39.5, -33.0], "expected": 39.5}, {"input": [39.5, -32.5], "expected": 39.5}, {"input": [39.5, -32.0], "expected": 39.5}, {"input": [39.5, -31.5], "expected": 39.5}, {"input": [39.5, -31.0], "expected": 39.5}, {"input": [39.5, -30.5], "expected": 39.5}, {"input": [39.5, -30.0], "expected": 39.5}, {"input": [39.5, -29.5], "expected": 39.5}, {"input": [39.5, -29.0], "expected": 39.5}, {"input": [39.5, -28.5], "expected": 39.5}, {"input": [39.5, -28.0], "expected": 39.5}, {"input": [39.5, -27.5], "expected": 39.5}, {"input": [39.5, -27.0], "expected": 39.5}, {"input": [39.5, -26.5], "expected": 39.5}, {"input": [39.5, -26.0], "expected": 39.5}, {"input": [39.5, -25.5], "expected": 39.5}, {"input": [39.5, -25.0], "expected": 39.5}, {"input": [39.5, -24.5], "expected": 39.5}, {"input": [39.5, -24.0], "expected": 39.5}, {"input": [39.5, -23.5], "expected": 39.5}, {"input": [39.5, -23.0], "expected": 39.5}, {"input": [39.5, -22.5], "expected": 39.5}, {"input": [39.5, -22.0], "expected": 39.5}, {"input": [39.5, -21.5], "expected": 39.5}, {"input": [39.5, -21.0], "expected": 39.5}, {"input": [39.5, -20.5], "expected": 39.5}, {"input": [39.5, -20.0], "expected": 39.5}, {"input": [39.5, -19.5], "expected": 39.5}, {"input": [39.5, -19.0], "expected": 39.5}, {"input": [39.5, -18.5], "expected": 39.5}, {"input": [39.5, -18.0], "expected": 39.5}, {"input": [39.5, -17.5], "expected": 39.5}, {"input": [39.5, -17.0], "expected": 39.5}, {"input": [39.5, -16.5], "expected": 39.5}, {"input": [39.5, -16.0], "expected": 39.5}, {"input": [39.5, -15.5], "expected": 39.5}, {"input": [39.5, -15.0], "expected": 39.5}, {"input": [39.5, -14.5], "expected": 39.5}, {"input": [39.5, -14.0], "expected": 39.5}, {"input": [39.5, -13.5], "expected": 39.5}, {"input": [39.5, -13.0], "expected": 39.5}, {"input": [39.5, -12.5], "expected": 39.5}, {"input": [39.5, -12.0], "expected": 39.5}, {"input": [39.5, -11.5], "expected": 39.5}, {"input": [39.5, -11.0], "expected": 39.5}, {"input": [39.5, -10.5], "expected": 39.5}, {"input": [39.5, -10.0], "expected": 39.5}, {"input": [39.5, -9.5], "expected": 39.5}, {"input": [39.5, -9.0], "expected": 39.5}, {"input": [39.5, -8.5], "expected": 39.5}, {"input": [39.5, -8.0], "expected": 39.5}, {"input": [39.5, -7.5], "expected": 39.5}, {"input": [39.5, -7.0], "expected": 39.5}, {"input": [39.5, -6.5], "expected": 39.5}, {"input": [39.5, -6.0], "expected": 39.5}, {"input": [39.5, -5.5], "expected": 39.5}, {"input": [39.5, -5.0], "expected": 39.5}, {"input": [39.5, -4.5], "expected": 39.5}, {"input": [39.5, -4.0], "expected": 39.5}, {"input": [39.5, -3.5], "expected": 39.5}, {"input": [39.5, -3.0], "expected": 39.5}, {"input": [39.5, -2.5], "expected": 39.5}, {"input": [39.5, -2.0], "expected": 39.5}, {"input": [39.5, -1.5], "expected": 39.5}, {"input": [39.5, -1.0], "expected": 39.5}, {"input": [39.5, -0.5], "expected": 39.5}, {"input": [39.5, 0.0], "expected": 39.5}, {"input": [39.5, 0.5], "expected": 39.5}, {"input": [39.5, 1.0], "expected": 39.5}, {"input": [39.5, 1.5], "expected": 39.5}, {"input": [39.5, 2.0], "expected": 39.5}, {"input": [39.5, 2.5], "expected": 39.5}, {"input": [39.5, 3.0], "expected": 39.5}, {"input": [39.5, 3.5], "expected": 39.5}, {"input": [39.5, 4.0], "expected": 39.5}, {"input": [39.5, 4.5], "expected": 39.5}, {"input": [39.5, 5.0], "expected": 39.5}, {"input": [39.5, 5.5], "expected": 39.5}, {"input": [39.5, 6.0], "expected": 39.5}, {"input": [39.5, 6.5], "expected": 39.50000000000001}, {"input": [39.5, 7.0], "expected": 39.50000000000001}, {"input": [39.5, 7.5], "expected": 39.500000000000014}, {"input": [39.5, 8.0], "expected": 39.50000000000002}, {"input": [39.5, 8.5], "expected": 39.500000000000036}, {"input": [39.5, 9.0], "expected": 39.50000000000006}, {"input": [39.5, 9.5], "expected": 39.50000000000009}, {"input": [39.5, 10.0], "expected": 39.500000000000156}, {"input": [39.5, 10.5], "expected": 39.500000000000256}, {"input": [39.5, 11.0], "expected": 39.50000000000042}, {"input": [39.5, 11.5], "expected": 39.50000000000069}, {"input": [39.5, 12.0], "expected": 39.50000000000114}, {"input": [39.5, 12.5], "expected": 39.50000000000188}, {"input": [39.5, 13.0], "expected": 39.5000000000031}, {"input": [39.5, 13.5], "expected": 39.50000000000511}, {"input": [39.5, 14.0], "expected": 39.50000000000842}, {"input": [39.5, 14.5], "expected": 39.50000000001389}, {"input": [39.5, 15.0], "expected": 39.5000000000229}, {"input": [39.5, 15.5], "expected": 39.50000000003775}, {"input": [39.5, 16.0], "expected": 39.50000000006224}, {"input": [39.5, 16.5], "expected": 39.50000000010262}, {"input": [39.5, 17.0], "expected": 39.50000000016919}, {"input": [39.5, 17.5], "expected": 39.500000000278945}, {"input": [39.5, 18.0], "expected": 39.500000000459906}, {"input": [39.5, 18.5], "expected": 39.500000000758256}, {"input": [39.5, 19.0], "expected": 39.50000000125015}, {"input": [39.5, 19.5], "expected": 39.50000000206116}, {"input": [39.5, 20.0], "expected": 39.50000000339827}, {"input": [39.5, 20.5], "expected": 39.50000000560279}, {"input": [39.5, 21.0], "expected": 39.500000009237446}, {"input": [39.5, 21.5], "expected": 39.50000001522998}, {"input": [39.5, 22.0], "expected": 39.50000002510999}, {"input": [39.5, 22.5], "expected": 39.500000041399375}, {"input": [39.5, 23.0], "expected": 39.50000006825603}, {"input": [39.5, 23.5], "expected": 39.50000011253517}, {"input": [39.5, 24.0], "expected": 39.50000018553912}, {"input": [39.5, 24.5], "expected": 39.500000305902276}, {"input": [39.5, 25.0], "expected": 39.50000050434753}, {"input": [39.5, 25.5], "expected": 39.500000831528375}, {"input": [39.5, 26.0], "expected": 39.500001370958145}, {"input": [39.5, 26.5], "expected": 39.50000226032685}, {"input": [39.5, 27.0], "expected": 39.50000372664623}, {"input": [39.5, 27.5], "expected": 39.50000614419348}, {"input": [39.5, 28.0], "expected": 39.50001013004229}, {"input": [39.5, 28.5], "expected": 39.50001670156132}, {"input": [39.5, 29.0], "expected": 39.50002753607023}, {"input": [39.5, 29.5], "expected": 39.50004539889922}, {"input": [39.5, 30.0], "expected": 39.50007484902863}, {"input": [39.5, 30.5], "expected": 39.50012340218972}, {"input": [39.5, 31.0], "expected": 39.50020344767213}, {"input": [39.5, 31.5], "expected": 39.5003354063729}, {"input": [39.5, 32.0], "expected": 39.50055293147536}, {"input": [39.5, 32.5], "expected": 39.50091146645377}, {"input": [39.5, 33.0], "expected": 39.50150231015976}, {"input": [39.5, 33.5], "expected": 39.50247568513773}, {"input": [39.5, 34.0], "expected": 39.50407844327057}, {"input": [39.5, 34.5], "expected": 39.50671534848912}, {"input": [39.5, 35.0], "expected": 39.5110477448486}, {"input": [39.5, 35.5], "expected": 39.51814992791781}, {"input": [39.5, 36.0], "expected": 39.52975041827262}, {"input": [39.5, 36.5], "expected": 39.548587351573744}, {"input": [39.5, 37.0], "expected": 39.57888973429255}, {"input": [39.5, 37.5], "expected": 39.62692801104297}, {"input": [39.5, 38.0], "expected": 39.70141327798275}, {"input": [39.5, 38.5], "expected": 39.81326168751822}, {"input": [39.5, 39.0], "expected": 39.97407698418011}, {"input": [39.5, 39.5], "expected": 40.19314718055995}, {"input": [39.5, 40.0], "expected": 40.47407698418011}, {"input": [39.5, 40.5], "expected": 40.81326168751822}, {"input": [39.5, 41.0], "expected": 41.20141327798275}, {"input": [39.5, 41.5], "expected": 41.62692801104297}, {"input": [39.5, 42.0], "expected": 42.07888973429255}, {"input": [39.5, 42.5], "expected": 42.548587351573744}, {"input": [39.5, 43.0], "expected": 43.02975041827262}, {"input": [39.5, 43.5], "expected": 43.51814992791781}, {"input": [39.5, 44.0], "expected": 44.0110477448486}, {"input": [39.5, 44.5], "expected": 44.50671534848912}, {"input": [39.5, 45.0], "expected": 45.00407844327057}, {"input": [39.5, 45.5], "expected": 45.50247568513773}, {"input": [39.5, 46.0], "expected": 46.00150231015976}, {"input": [39.5, 46.5], "expected": 46.50091146645377}, {"input": [39.5, 47.0], "expected": 47.00055293147536}, {"input": [39.5, 47.5], "expected": 47.5003354063729}, {"input": [39.5, 48.0], "expected": 48.00020344767213}, {"input": [39.5, 48.5], "expected": 48.50012340218972}, {"input": [39.5, 49.0], "expected": 49.00007484902863}, {"input": [39.5, 49.5], "expected": 49.50004539889922}, {"input": [39.5, 50.0], "expected": 50.00002753607023}, {"input": [39.5, 50.5], "expected": 50.50001670156132}, {"input": [39.5, 51.0], "expected": 51.00001013004229}, {"input": [39.5, 51.5], "expected": 51.50000614419348}, {"input": [39.5, 52.0], "expected": 52.00000372664623}, {"input": [39.5, 52.5], "expected": 52.50000226032685}, {"input": [39.5, 53.0], "expected": 53.000001370958145}, {"input": [39.5, 53.5], "expected": 53.500000831528375}, {"input": [39.5, 54.0], "expected": 54.00000050434753}, {"input": [39.5, 54.5], "expected": 54.500000305902276}, {"input": [39.5, 55.0], "expected": 55.00000018553912}, {"input": [39.5, 55.5], "expected": 55.50000011253517}, {"input": [39.5, 56.0], "expected": 56.00000006825603}, {"input": [39.5, 56.5], "expected": 56.500000041399375}, {"input": [39.5, 57.0], "expected": 57.00000002510999}, {"input": [39.5, 57.5], "expected": 57.50000001522998}, {"input": [39.5, 58.0], "expected": 58.000000009237446}, {"input": [39.5, 58.5], "expected": 58.50000000560279}, {"input": [39.5, 59.0], "expected": 59.00000000339827}, {"input": [39.5, 59.5], "expected": 59.50000000206116}, {"input": [39.5, 60.0], "expected": 60.00000000125015}, {"input": [39.5, 60.5], "expected": 60.500000000758256}, {"input": [39.5, 61.0], "expected": 61.000000000459906}, {"input": [39.5, 61.5], "expected": 61.500000000278945}, {"input": [39.5, 62.0], "expected": 62.00000000016919}, {"input": [39.5, 62.5], "expected": 62.50000000010262}, {"input": [39.5, 63.0], "expected": 63.00000000006224}, {"input": [39.5, 63.5], "expected": 63.50000000003775}, {"input": [39.5, 64.0], "expected": 64.0000000000229}, {"input": [39.5, 64.5], "expected": 64.50000000001388}, {"input": [39.5, 65.0], "expected": 65.00000000000843}, {"input": [39.5, 65.5], "expected": 65.50000000000512}, {"input": [39.5, 66.0], "expected": 66.0000000000031}, {"input": [39.5, 66.5], "expected": 66.50000000000188}, {"input": [39.5, 67.0], "expected": 67.00000000000114}, {"input": [39.5, 67.5], "expected": 67.5000000000007}, {"input": [39.5, 68.0], "expected": 68.00000000000043}, {"input": [39.5, 68.5], "expected": 68.50000000000026}, {"input": [39.5, 69.0], "expected": 69.00000000000016}, {"input": [39.5, 69.5], "expected": 69.5000000000001}, {"input": [39.5, 70.0], "expected": 70.00000000000006}, {"input": [39.5, 70.5], "expected": 70.50000000000003}, {"input": [39.5, 71.0], "expected": 71.00000000000001}, {"input": [39.5, 71.5], "expected": 71.50000000000001}, {"input": [39.5, 72.0], "expected": 72.00000000000001}, {"input": [39.5, 72.5], "expected": 72.5}, {"input": [39.5, 73.0], "expected": 73.0}, {"input": [39.5, 73.5], "expected": 73.5}, {"input": [39.5, 74.0], "expected": 74.0}, {"input": [39.5, 74.5], "expected": 74.5}, {"input": [39.5, 75.0], "expected": 75.0}, {"input": [39.5, 75.5], "expected": 75.5}, {"input": [39.5, 76.0], "expected": 76.0}, {"input": [39.5, 76.5], "expected": 76.5}, {"input": [39.5, 77.0], "expected": 77.0}, {"input": [39.5, 77.5], "expected": 77.5}, {"input": [39.5, 78.0], "expected": 78.0}, {"input": [39.5, 78.5], "expected": 78.5}, {"input": [39.5, 79.0], "expected": 79.0}, {"input": [39.5, 79.5], "expected": 79.5}, {"input": [39.5, 80.0], "expected": 80.0}, {"input": [39.5, 80.5], "expected": 80.5}, {"input": [39.5, 81.0], "expected": 81.0}, {"input": [39.5, 81.5], "expected": 81.5}, {"input": [39.5, 82.0], "expected": 82.0}, {"input": [39.5, 82.5], "expected": 82.5}, {"input": [39.5, 83.0], "expected": 83.0}, {"input": [39.5, 83.5], "expected": 83.5}, {"input": [39.5, 84.0], "expected": 84.0}, {"input": [39.5, 84.5], "expected": 84.5}, {"input": [39.5, 85.0], "expected": 85.0}, {"input": [39.5, 85.5], "expected": 85.5}, {"input": [39.5, 86.0], "expected": 86.0}, {"input": [39.5, 86.5], "expected": 86.5}, {"input": [39.5, 87.0], "expected": 87.0}, {"input": [39.5, 87.5], "expected": 87.5}, {"input": [39.5, 88.0], "expected": 88.0}, {"input": [39.5, 88.5], "expected": 88.5}, {"input": [39.5, 89.0], "expected": 89.0}, {"input": [39.5, 89.5], "expected": 89.5}, {"input": [39.5, 90.0], "expected": 90.0}, {"input": [39.5, 90.5], "expected": 90.5}, {"input": [39.5, 91.0], "expected": 91.0}, {"input": [39.5, 91.5], "expected": 91.5}, {"input": [39.5, 92.0], "expected": 92.0}, {"input": [39.5, 92.5], "expected": 92.5}, {"input": [39.5, 93.0], "expected": 93.0}, {"input": [39.5, 93.5], "expected": 93.5}, {"input": [39.5, 94.0], "expected": 94.0}, {"input": [39.5, 94.5], "expected": 94.5}, {"input": [39.5, 95.0], "expected": 95.0}, {"input": [39.5, 95.5], "expected": 95.5}, {"input": [39.5, 96.0], "expected": 96.0}, {"input": [39.5, 96.5], "expected": 96.5}, {"input": [39.5, 97.0], "expected": 97.0}, {"input": [39.5, 97.5], "expected": 97.5}, {"input": [39.5, 98.0], "expected": 98.0}, {"input": [39.5, 98.5], "expected": 98.5}, {"input": [39.5, 99.0], "expected": 99.0}, {"input": [39.5, 99.5], "expected": 99.5}, {"input": [40.0, -100.0], "expected": 40.0}, {"input": [40.0, -99.5], "expected": 40.0}, {"input": [40.0, -99.0], "expected": 40.0}, {"input": [40.0, -98.5], "expected": 40.0}, {"input": [40.0, -98.0], "expected": 40.0}, {"input": [40.0, -97.5], "expected": 40.0}, {"input": [40.0, -97.0], "expected": 40.0}, {"input": [40.0, -96.5], "expected": 40.0}, {"input": [40.0, -96.0], "expected": 40.0}, {"input": [40.0, -95.5], "expected": 40.0}, {"input": [40.0, -95.0], "expected": 40.0}, {"input": [40.0, -94.5], "expected": 40.0}, {"input": [40.0, -94.0], "expected": 40.0}, {"input": [40.0, -93.5], "expected": 40.0}, {"input": [40.0, -93.0], "expected": 40.0}, {"input": [40.0, -92.5], "expected": 40.0}, {"input": [40.0, -92.0], "expected": 40.0}, {"input": [40.0, -91.5], "expected": 40.0}, {"input": [40.0, -91.0], "expected": 40.0}, {"input": [40.0, -90.5], "expected": 40.0}, {"input": [40.0, -90.0], "expected": 40.0}, {"input": [40.0, -89.5], "expected": 40.0}, {"input": [40.0, -89.0], "expected": 40.0}, {"input": [40.0, -88.5], "expected": 40.0}, {"input": [40.0, -88.0], "expected": 40.0}, {"input": [40.0, -87.5], "expected": 40.0}, {"input": [40.0, -87.0], "expected": 40.0}, {"input": [40.0, -86.5], "expected": 40.0}, {"input": [40.0, -86.0], "expected": 40.0}, {"input": [40.0, -85.5], "expected": 40.0}, {"input": [40.0, -85.0], "expected": 40.0}, {"input": [40.0, -84.5], "expected": 40.0}, {"input": [40.0, -84.0], "expected": 40.0}, {"input": [40.0, -83.5], "expected": 40.0}, {"input": [40.0, -83.0], "expected": 40.0}, {"input": [40.0, -82.5], "expected": 40.0}, {"input": [40.0, -82.0], "expected": 40.0}, {"input": [40.0, -81.5], "expected": 40.0}, {"input": [40.0, -81.0], "expected": 40.0}, {"input": [40.0, -80.5], "expected": 40.0}, {"input": [40.0, -80.0], "expected": 40.0}, {"input": [40.0, -79.5], "expected": 40.0}, {"input": [40.0, -79.0], "expected": 40.0}, {"input": [40.0, -78.5], "expected": 40.0}, {"input": [40.0, -78.0], "expected": 40.0}, {"input": [40.0, -77.5], "expected": 40.0}, {"input": [40.0, -77.0], "expected": 40.0}, {"input": [40.0, -76.5], "expected": 40.0}, {"input": [40.0, -76.0], "expected": 40.0}, {"input": [40.0, -75.5], "expected": 40.0}, {"input": [40.0, -75.0], "expected": 40.0}, {"input": [40.0, -74.5], "expected": 40.0}, {"input": [40.0, -74.0], "expected": 40.0}, {"input": [40.0, -73.5], "expected": 40.0}, {"input": [40.0, -73.0], "expected": 40.0}, {"input": [40.0, -72.5], "expected": 40.0}, {"input": [40.0, -72.0], "expected": 40.0}, {"input": [40.0, -71.5], "expected": 40.0}, {"input": [40.0, -71.0], "expected": 40.0}, {"input": [40.0, -70.5], "expected": 40.0}, {"input": [40.0, -70.0], "expected": 40.0}, {"input": [40.0, -69.5], "expected": 40.0}, {"input": [40.0, -69.0], "expected": 40.0}, {"input": [40.0, -68.5], "expected": 40.0}, {"input": [40.0, -68.0], "expected": 40.0}, {"input": [40.0, -67.5], "expected": 40.0}, {"input": [40.0, -67.0], "expected": 40.0}, {"input": [40.0, -66.5], "expected": 40.0}, {"input": [40.0, -66.0], "expected": 40.0}, {"input": [40.0, -65.5], "expected": 40.0}, {"input": [40.0, -65.0], "expected": 40.0}, {"input": [40.0, -64.5], "expected": 40.0}, {"input": [40.0, -64.0], "expected": 40.0}, {"input": [40.0, -63.5], "expected": 40.0}, {"input": [40.0, -63.0], "expected": 40.0}, {"input": [40.0, -62.5], "expected": 40.0}, {"input": [40.0, -62.0], "expected": 40.0}, {"input": [40.0, -61.5], "expected": 40.0}, {"input": [40.0, -61.0], "expected": 40.0}, {"input": [40.0, -60.5], "expected": 40.0}, {"input": [40.0, -60.0], "expected": 40.0}, {"input": [40.0, -59.5], "expected": 40.0}, {"input": [40.0, -59.0], "expected": 40.0}, {"input": [40.0, -58.5], "expected": 40.0}, {"input": [40.0, -58.0], "expected": 40.0}, {"input": [40.0, -57.5], "expected": 40.0}, {"input": [40.0, -57.0], "expected": 40.0}, {"input": [40.0, -56.5], "expected": 40.0}, {"input": [40.0, -56.0], "expected": 40.0}, {"input": [40.0, -55.5], "expected": 40.0}, {"input": [40.0, -55.0], "expected": 40.0}, {"input": [40.0, -54.5], "expected": 40.0}, {"input": [40.0, -54.0], "expected": 40.0}, {"input": [40.0, -53.5], "expected": 40.0}, {"input": [40.0, -53.0], "expected": 40.0}, {"input": [40.0, -52.5], "expected": 40.0}, {"input": [40.0, -52.0], "expected": 40.0}, {"input": [40.0, -51.5], "expected": 40.0}, {"input": [40.0, -51.0], "expected": 40.0}, {"input": [40.0, -50.5], "expected": 40.0}, {"input": [40.0, -50.0], "expected": 40.0}, {"input": [40.0, -49.5], "expected": 40.0}, {"input": [40.0, -49.0], "expected": 40.0}, {"input": [40.0, -48.5], "expected": 40.0}, {"input": [40.0, -48.0], "expected": 40.0}, {"input": [40.0, -47.5], "expected": 40.0}, {"input": [40.0, -47.0], "expected": 40.0}, {"input": [40.0, -46.5], "expected": 40.0}, {"input": [40.0, -46.0], "expected": 40.0}, {"input": [40.0, -45.5], "expected": 40.0}, {"input": [40.0, -45.0], "expected": 40.0}, {"input": [40.0, -44.5], "expected": 40.0}, {"input": [40.0, -44.0], "expected": 40.0}, {"input": [40.0, -43.5], "expected": 40.0}, {"input": [40.0, -43.0], "expected": 40.0}, {"input": [40.0, -42.5], "expected": 40.0}, {"input": [40.0, -42.0], "expected": 40.0}, {"input": [40.0, -41.5], "expected": 40.0}, {"input": [40.0, -41.0], "expected": 40.0}, {"input": [40.0, -40.5], "expected": 40.0}, {"input": [40.0, -40.0], "expected": 40.0}, {"input": [40.0, -39.5], "expected": 40.0}, {"input": [40.0, -39.0], "expected": 40.0}, {"input": [40.0, -38.5], "expected": 40.0}, {"input": [40.0, -38.0], "expected": 40.0}, {"input": [40.0, -37.5], "expected": 40.0}, {"input": [40.0, -37.0], "expected": 40.0}, {"input": [40.0, -36.5], "expected": 40.0}, {"input": [40.0, -36.0], "expected": 40.0}, {"input": [40.0, -35.5], "expected": 40.0}, {"input": [40.0, -35.0], "expected": 40.0}, {"input": [40.0, -34.5], "expected": 40.0}, {"input": [40.0, -34.0], "expected": 40.0}, {"input": [40.0, -33.5], "expected": 40.0}, {"input": [40.0, -33.0], "expected": 40.0}, {"input": [40.0, -32.5], "expected": 40.0}, {"input": [40.0, -32.0], "expected": 40.0}, {"input": [40.0, -31.5], "expected": 40.0}, {"input": [40.0, -31.0], "expected": 40.0}, {"input": [40.0, -30.5], "expected": 40.0}, {"input": [40.0, -30.0], "expected": 40.0}, {"input": [40.0, -29.5], "expected": 40.0}, {"input": [40.0, -29.0], "expected": 40.0}, {"input": [40.0, -28.5], "expected": 40.0}, {"input": [40.0, -28.0], "expected": 40.0}, {"input": [40.0, -27.5], "expected": 40.0}, {"input": [40.0, -27.0], "expected": 40.0}, {"input": [40.0, -26.5], "expected": 40.0}, {"input": [40.0, -26.0], "expected": 40.0}, {"input": [40.0, -25.5], "expected": 40.0}, {"input": [40.0, -25.0], "expected": 40.0}, {"input": [40.0, -24.5], "expected": 40.0}, {"input": [40.0, -24.0], "expected": 40.0}, {"input": [40.0, -23.5], "expected": 40.0}, {"input": [40.0, -23.0], "expected": 40.0}, {"input": [40.0, -22.5], "expected": 40.0}, {"input": [40.0, -22.0], "expected": 40.0}, {"input": [40.0, -21.5], "expected": 40.0}, {"input": [40.0, -21.0], "expected": 40.0}, {"input": [40.0, -20.5], "expected": 40.0}, {"input": [40.0, -20.0], "expected": 40.0}, {"input": [40.0, -19.5], "expected": 40.0}, {"input": [40.0, -19.0], "expected": 40.0}, {"input": [40.0, -18.5], "expected": 40.0}, {"input": [40.0, -18.0], "expected": 40.0}, {"input": [40.0, -17.5], "expected": 40.0}, {"input": [40.0, -17.0], "expected": 40.0}, {"input": [40.0, -16.5], "expected": 40.0}, {"input": [40.0, -16.0], "expected": 40.0}, {"input": [40.0, -15.5], "expected": 40.0}, {"input": [40.0, -15.0], "expected": 40.0}, {"input": [40.0, -14.5], "expected": 40.0}, {"input": [40.0, -14.0], "expected": 40.0}, {"input": [40.0, -13.5], "expected": 40.0}, {"input": [40.0, -13.0], "expected": 40.0}, {"input": [40.0, -12.5], "expected": 40.0}, {"input": [40.0, -12.0], "expected": 40.0}, {"input": [40.0, -11.5], "expected": 40.0}, {"input": [40.0, -11.0], "expected": 40.0}, {"input": [40.0, -10.5], "expected": 40.0}, {"input": [40.0, -10.0], "expected": 40.0}, {"input": [40.0, -9.5], "expected": 40.0}, {"input": [40.0, -9.0], "expected": 40.0}, {"input": [40.0, -8.5], "expected": 40.0}, {"input": [40.0, -8.0], "expected": 40.0}, {"input": [40.0, -7.5], "expected": 40.0}, {"input": [40.0, -7.0], "expected": 40.0}, {"input": [40.0, -6.5], "expected": 40.0}, {"input": [40.0, -6.0], "expected": 40.0}, {"input": [40.0, -5.5], "expected": 40.0}, {"input": [40.0, -5.0], "expected": 40.0}, {"input": [40.0, -4.5], "expected": 40.0}, {"input": [40.0, -4.0], "expected": 40.0}, {"input": [40.0, -3.5], "expected": 40.0}, {"input": [40.0, -3.0], "expected": 40.0}, {"input": [40.0, -2.5], "expected": 40.0}, {"input": [40.0, -2.0], "expected": 40.0}, {"input": [40.0, -1.5], "expected": 40.0}, {"input": [40.0, -1.0], "expected": 40.0}, {"input": [40.0, -0.5], "expected": 40.0}, {"input": [40.0, 0.0], "expected": 40.0}, {"input": [40.0, 0.5], "expected": 40.0}, {"input": [40.0, 1.0], "expected": 40.0}, {"input": [40.0, 1.5], "expected": 40.0}, {"input": [40.0, 2.0], "expected": 40.0}, {"input": [40.0, 2.5], "expected": 40.0}, {"input": [40.0, 3.0], "expected": 40.0}, {"input": [40.0, 3.5], "expected": 40.0}, {"input": [40.0, 4.0], "expected": 40.0}, {"input": [40.0, 4.5], "expected": 40.0}, {"input": [40.0, 5.0], "expected": 40.0}, {"input": [40.0, 5.5], "expected": 40.0}, {"input": [40.0, 6.0], "expected": 40.0}, {"input": [40.0, 6.5], "expected": 40.0}, {"input": [40.0, 7.0], "expected": 40.00000000000001}, {"input": [40.0, 7.5], "expected": 40.00000000000001}, {"input": [40.0, 8.0], "expected": 40.000000000000014}, {"input": [40.0, 8.5], "expected": 40.00000000000002}, {"input": [40.0, 9.0], "expected": 40.000000000000036}, {"input": [40.0, 9.5], "expected": 40.00000000000006}, {"input": [40.0, 10.0], "expected": 40.00000000000009}, {"input": [40.0, 10.5], "expected": 40.000000000000156}, {"input": [40.0, 11.0], "expected": 40.000000000000256}, {"input": [40.0, 11.5], "expected": 40.00000000000042}, {"input": [40.0, 12.0], "expected": 40.00000000000069}, {"input": [40.0, 12.5], "expected": 40.00000000000114}, {"input": [40.0, 13.0], "expected": 40.00000000000188}, {"input": [40.0, 13.5], "expected": 40.0000000000031}, {"input": [40.0, 14.0], "expected": 40.00000000000511}, {"input": [40.0, 14.5], "expected": 40.00000000000842}, {"input": [40.0, 15.0], "expected": 40.00000000001389}, {"input": [40.0, 15.5], "expected": 40.0000000000229}, {"input": [40.0, 16.0], "expected": 40.00000000003775}, {"input": [40.0, 16.5], "expected": 40.00000000006224}, {"input": [40.0, 17.0], "expected": 40.00000000010262}, {"input": [40.0, 17.5], "expected": 40.00000000016919}, {"input": [40.0, 18.0], "expected": 40.000000000278945}, {"input": [40.0, 18.5], "expected": 40.000000000459906}, {"input": [40.0, 19.0], "expected": 40.000000000758256}, {"input": [40.0, 19.5], "expected": 40.00000000125015}, {"input": [40.0, 20.0], "expected": 40.00000000206116}, {"input": [40.0, 20.5], "expected": 40.00000000339827}, {"input": [40.0, 21.0], "expected": 40.00000000560279}, {"input": [40.0, 21.5], "expected": 40.000000009237446}, {"input": [40.0, 22.0], "expected": 40.00000001522998}, {"input": [40.0, 22.5], "expected": 40.00000002510999}, {"input": [40.0, 23.0], "expected": 40.000000041399375}, {"input": [40.0, 23.5], "expected": 40.00000006825603}, {"input": [40.0, 24.0], "expected": 40.00000011253517}, {"input": [40.0, 24.5], "expected": 40.00000018553912}, {"input": [40.0, 25.0], "expected": 40.000000305902276}, {"input": [40.0, 25.5], "expected": 40.00000050434753}, {"input": [40.0, 26.0], "expected": 40.000000831528375}, {"input": [40.0, 26.5], "expected": 40.000001370958145}, {"input": [40.0, 27.0], "expected": 40.00000226032685}, {"input": [40.0, 27.5], "expected": 40.00000372664623}, {"input": [40.0, 28.0], "expected": 40.00000614419348}, {"input": [40.0, 28.5], "expected": 40.00001013004229}, {"input": [40.0, 29.0], "expected": 40.00001670156132}, {"input": [40.0, 29.5], "expected": 40.00002753607023}, {"input": [40.0, 30.0], "expected": 40.00004539889922}, {"input": [40.0, 30.5], "expected": 40.00007484902863}, {"input": [40.0, 31.0], "expected": 40.00012340218972}, {"input": [40.0, 31.5], "expected": 40.00020344767213}, {"input": [40.0, 32.0], "expected": 40.0003354063729}, {"input": [40.0, 32.5], "expected": 40.00055293147536}, {"input": [40.0, 33.0], "expected": 40.00091146645377}, {"input": [40.0, 33.5], "expected": 40.00150231015976}, {"input": [40.0, 34.0], "expected": 40.00247568513773}, {"input": [40.0, 34.5], "expected": 40.00407844327057}, {"input": [40.0, 35.0], "expected": 40.00671534848912}, {"input": [40.0, 35.5], "expected": 40.0110477448486}, {"input": [40.0, 36.0], "expected": 40.01814992791781}, {"input": [40.0, 36.5], "expected": 40.02975041827262}, {"input": [40.0, 37.0], "expected": 40.048587351573744}, {"input": [40.0, 37.5], "expected": 40.07888973429255}, {"input": [40.0, 38.0], "expected": 40.12692801104297}, {"input": [40.0, 38.5], "expected": 40.20141327798275}, {"input": [40.0, 39.0], "expected": 40.31326168751822}, {"input": [40.0, 39.5], "expected": 40.47407698418011}, {"input": [40.0, 40.0], "expected": 40.69314718055995}, {"input": [40.0, 40.5], "expected": 40.97407698418011}, {"input": [40.0, 41.0], "expected": 41.31326168751822}, {"input": [40.0, 41.5], "expected": 41.70141327798275}, {"input": [40.0, 42.0], "expected": 42.12692801104297}, {"input": [40.0, 42.5], "expected": 42.57888973429255}, {"input": [40.0, 43.0], "expected": 43.048587351573744}, {"input": [40.0, 43.5], "expected": 43.52975041827262}, {"input": [40.0, 44.0], "expected": 44.01814992791781}, {"input": [40.0, 44.5], "expected": 44.5110477448486}, {"input": [40.0, 45.0], "expected": 45.00671534848912}, {"input": [40.0, 45.5], "expected": 45.50407844327057}, {"input": [40.0, 46.0], "expected": 46.00247568513773}, {"input": [40.0, 46.5], "expected": 46.50150231015976}, {"input": [40.0, 47.0], "expected": 47.00091146645377}, {"input": [40.0, 47.5], "expected": 47.50055293147536}, {"input": [40.0, 48.0], "expected": 48.0003354063729}, {"input": [40.0, 48.5], "expected": 48.50020344767213}, {"input": [40.0, 49.0], "expected": 49.00012340218972}, {"input": [40.0, 49.5], "expected": 49.50007484902863}, {"input": [40.0, 50.0], "expected": 50.00004539889922}, {"input": [40.0, 50.5], "expected": 50.50002753607023}, {"input": [40.0, 51.0], "expected": 51.00001670156132}, {"input": [40.0, 51.5], "expected": 51.50001013004229}, {"input": [40.0, 52.0], "expected": 52.00000614419348}, {"input": [40.0, 52.5], "expected": 52.50000372664623}, {"input": [40.0, 53.0], "expected": 53.00000226032685}, {"input": [40.0, 53.5], "expected": 53.500001370958145}, {"input": [40.0, 54.0], "expected": 54.000000831528375}, {"input": [40.0, 54.5], "expected": 54.50000050434753}, {"input": [40.0, 55.0], "expected": 55.000000305902276}, {"input": [40.0, 55.5], "expected": 55.50000018553912}, {"input": [40.0, 56.0], "expected": 56.00000011253517}, {"input": [40.0, 56.5], "expected": 56.50000006825603}, {"input": [40.0, 57.0], "expected": 57.000000041399375}, {"input": [40.0, 57.5], "expected": 57.50000002510999}, {"input": [40.0, 58.0], "expected": 58.00000001522998}, {"input": [40.0, 58.5], "expected": 58.500000009237446}, {"input": [40.0, 59.0], "expected": 59.00000000560279}, {"input": [40.0, 59.5], "expected": 59.50000000339827}, {"input": [40.0, 60.0], "expected": 60.00000000206116}, {"input": [40.0, 60.5], "expected": 60.50000000125015}, {"input": [40.0, 61.0], "expected": 61.000000000758256}, {"input": [40.0, 61.5], "expected": 61.500000000459906}, {"input": [40.0, 62.0], "expected": 62.000000000278945}, {"input": [40.0, 62.5], "expected": 62.50000000016919}, {"input": [40.0, 63.0], "expected": 63.00000000010262}, {"input": [40.0, 63.5], "expected": 63.50000000006224}, {"input": [40.0, 64.0], "expected": 64.00000000003776}, {"input": [40.0, 64.5], "expected": 64.5000000000229}, {"input": [40.0, 65.0], "expected": 65.00000000001388}, {"input": [40.0, 65.5], "expected": 65.50000000000843}, {"input": [40.0, 66.0], "expected": 66.00000000000512}, {"input": [40.0, 66.5], "expected": 66.5000000000031}, {"input": [40.0, 67.0], "expected": 67.00000000000188}, {"input": [40.0, 67.5], "expected": 67.50000000000114}, {"input": [40.0, 68.0], "expected": 68.0000000000007}, {"input": [40.0, 68.5], "expected": 68.50000000000043}, {"input": [40.0, 69.0], "expected": 69.00000000000026}, {"input": [40.0, 69.5], "expected": 69.50000000000016}, {"input": [40.0, 70.0], "expected": 70.0000000000001}, {"input": [40.0, 70.5], "expected": 70.50000000000006}, {"input": [40.0, 71.0], "expected": 71.00000000000003}, {"input": [40.0, 71.5], "expected": 71.50000000000001}, {"input": [40.0, 72.0], "expected": 72.00000000000001}, {"input": [40.0, 72.5], "expected": 72.50000000000001}, {"input": [40.0, 73.0], "expected": 73.0}, {"input": [40.0, 73.5], "expected": 73.5}, {"input": [40.0, 74.0], "expected": 74.0}, {"input": [40.0, 74.5], "expected": 74.5}, {"input": [40.0, 75.0], "expected": 75.0}, {"input": [40.0, 75.5], "expected": 75.5}, {"input": [40.0, 76.0], "expected": 76.0}, {"input": [40.0, 76.5], "expected": 76.5}, {"input": [40.0, 77.0], "expected": 77.0}, {"input": [40.0, 77.5], "expected": 77.5}, {"input": [40.0, 78.0], "expected": 78.0}, {"input": [40.0, 78.5], "expected": 78.5}, {"input": [40.0, 79.0], "expected": 79.0}, {"input": [40.0, 79.5], "expected": 79.5}, {"input": [40.0, 80.0], "expected": 80.0}, {"input": [40.0, 80.5], "expected": 80.5}, {"input": [40.0, 81.0], "expected": 81.0}, {"input": [40.0, 81.5], "expected": 81.5}, {"input": [40.0, 82.0], "expected": 82.0}, {"input": [40.0, 82.5], "expected": 82.5}, {"input": [40.0, 83.0], "expected": 83.0}, {"input": [40.0, 83.5], "expected": 83.5}, {"input": [40.0, 84.0], "expected": 84.0}, {"input": [40.0, 84.5], "expected": 84.5}, {"input": [40.0, 85.0], "expected": 85.0}, {"input": [40.0, 85.5], "expected": 85.5}, {"input": [40.0, 86.0], "expected": 86.0}, {"input": [40.0, 86.5], "expected": 86.5}, {"input": [40.0, 87.0], "expected": 87.0}, {"input": [40.0, 87.5], "expected": 87.5}, {"input": [40.0, 88.0], "expected": 88.0}, {"input": [40.0, 88.5], "expected": 88.5}, {"input": [40.0, 89.0], "expected": 89.0}, {"input": [40.0, 89.5], "expected": 89.5}, {"input": [40.0, 90.0], "expected": 90.0}, {"input": [40.0, 90.5], "expected": 90.5}, {"input": [40.0, 91.0], "expected": 91.0}, {"input": [40.0, 91.5], "expected": 91.5}, {"input": [40.0, 92.0], "expected": 92.0}, {"input": [40.0, 92.5], "expected": 92.5}, {"input": [40.0, 93.0], "expected": 93.0}, {"input": [40.0, 93.5], "expected": 93.5}, {"input": [40.0, 94.0], "expected": 94.0}, {"input": [40.0, 94.5], "expected": 94.5}, {"input": [40.0, 95.0], "expected": 95.0}, {"input": [40.0, 95.5], "expected": 95.5}, {"input": [40.0, 96.0], "expected": 96.0}, {"input": [40.0, 96.5], "expected": 96.5}, {"input": [40.0, 97.0], "expected": 97.0}, {"input": [40.0, 97.5], "expected": 97.5}, {"input": [40.0, 98.0], "expected": 98.0}, {"input": [40.0, 98.5], "expected": 98.5}, {"input": [40.0, 99.0], "expected": 99.0}, {"input": [40.0, 99.5], "expected": 99.5}, {"input": [40.5, -100.0], "expected": 40.5}, {"input": [40.5, -99.5], "expected": 40.5}, {"input": [40.5, -99.0], "expected": 40.5}, {"input": [40.5, -98.5], "expected": 40.5}, {"input": [40.5, -98.0], "expected": 40.5}, {"input": [40.5, -97.5], "expected": 40.5}, {"input": [40.5, -97.0], "expected": 40.5}, {"input": [40.5, -96.5], "expected": 40.5}, {"input": [40.5, -96.0], "expected": 40.5}, {"input": [40.5, -95.5], "expected": 40.5}, {"input": [40.5, -95.0], "expected": 40.5}, {"input": [40.5, -94.5], "expected": 40.5}, {"input": [40.5, -94.0], "expected": 40.5}, {"input": [40.5, -93.5], "expected": 40.5}, {"input": [40.5, -93.0], "expected": 40.5}, {"input": [40.5, -92.5], "expected": 40.5}, {"input": [40.5, -92.0], "expected": 40.5}, {"input": [40.5, -91.5], "expected": 40.5}, {"input": [40.5, -91.0], "expected": 40.5}, {"input": [40.5, -90.5], "expected": 40.5}, {"input": [40.5, -90.0], "expected": 40.5}, {"input": [40.5, -89.5], "expected": 40.5}, {"input": [40.5, -89.0], "expected": 40.5}, {"input": [40.5, -88.5], "expected": 40.5}, {"input": [40.5, -88.0], "expected": 40.5}, {"input": [40.5, -87.5], "expected": 40.5}, {"input": [40.5, -87.0], "expected": 40.5}, {"input": [40.5, -86.5], "expected": 40.5}, {"input": [40.5, -86.0], "expected": 40.5}, {"input": [40.5, -85.5], "expected": 40.5}, {"input": [40.5, -85.0], "expected": 40.5}, {"input": [40.5, -84.5], "expected": 40.5}, {"input": [40.5, -84.0], "expected": 40.5}, {"input": [40.5, -83.5], "expected": 40.5}, {"input": [40.5, -83.0], "expected": 40.5}, {"input": [40.5, -82.5], "expected": 40.5}, {"input": [40.5, -82.0], "expected": 40.5}, {"input": [40.5, -81.5], "expected": 40.5}, {"input": [40.5, -81.0], "expected": 40.5}, {"input": [40.5, -80.5], "expected": 40.5}, {"input": [40.5, -80.0], "expected": 40.5}, {"input": [40.5, -79.5], "expected": 40.5}, {"input": [40.5, -79.0], "expected": 40.5}, {"input": [40.5, -78.5], "expected": 40.5}, {"input": [40.5, -78.0], "expected": 40.5}, {"input": [40.5, -77.5], "expected": 40.5}, {"input": [40.5, -77.0], "expected": 40.5}, {"input": [40.5, -76.5], "expected": 40.5}, {"input": [40.5, -76.0], "expected": 40.5}, {"input": [40.5, -75.5], "expected": 40.5}, {"input": [40.5, -75.0], "expected": 40.5}, {"input": [40.5, -74.5], "expected": 40.5}, {"input": [40.5, -74.0], "expected": 40.5}, {"input": [40.5, -73.5], "expected": 40.5}, {"input": [40.5, -73.0], "expected": 40.5}, {"input": [40.5, -72.5], "expected": 40.5}, {"input": [40.5, -72.0], "expected": 40.5}, {"input": [40.5, -71.5], "expected": 40.5}, {"input": [40.5, -71.0], "expected": 40.5}, {"input": [40.5, -70.5], "expected": 40.5}, {"input": [40.5, -70.0], "expected": 40.5}, {"input": [40.5, -69.5], "expected": 40.5}, {"input": [40.5, -69.0], "expected": 40.5}, {"input": [40.5, -68.5], "expected": 40.5}, {"input": [40.5, -68.0], "expected": 40.5}, {"input": [40.5, -67.5], "expected": 40.5}, {"input": [40.5, -67.0], "expected": 40.5}, {"input": [40.5, -66.5], "expected": 40.5}, {"input": [40.5, -66.0], "expected": 40.5}, {"input": [40.5, -65.5], "expected": 40.5}, {"input": [40.5, -65.0], "expected": 40.5}, {"input": [40.5, -64.5], "expected": 40.5}, {"input": [40.5, -64.0], "expected": 40.5}, {"input": [40.5, -63.5], "expected": 40.5}, {"input": [40.5, -63.0], "expected": 40.5}, {"input": [40.5, -62.5], "expected": 40.5}, {"input": [40.5, -62.0], "expected": 40.5}, {"input": [40.5, -61.5], "expected": 40.5}, {"input": [40.5, -61.0], "expected": 40.5}, {"input": [40.5, -60.5], "expected": 40.5}, {"input": [40.5, -60.0], "expected": 40.5}, {"input": [40.5, -59.5], "expected": 40.5}, {"input": [40.5, -59.0], "expected": 40.5}, {"input": [40.5, -58.5], "expected": 40.5}, {"input": [40.5, -58.0], "expected": 40.5}, {"input": [40.5, -57.5], "expected": 40.5}, {"input": [40.5, -57.0], "expected": 40.5}, {"input": [40.5, -56.5], "expected": 40.5}, {"input": [40.5, -56.0], "expected": 40.5}, {"input": [40.5, -55.5], "expected": 40.5}, {"input": [40.5, -55.0], "expected": 40.5}, {"input": [40.5, -54.5], "expected": 40.5}, {"input": [40.5, -54.0], "expected": 40.5}, {"input": [40.5, -53.5], "expected": 40.5}, {"input": [40.5, -53.0], "expected": 40.5}, {"input": [40.5, -52.5], "expected": 40.5}, {"input": [40.5, -52.0], "expected": 40.5}, {"input": [40.5, -51.5], "expected": 40.5}, {"input": [40.5, -51.0], "expected": 40.5}, {"input": [40.5, -50.5], "expected": 40.5}, {"input": [40.5, -50.0], "expected": 40.5}, {"input": [40.5, -49.5], "expected": 40.5}, {"input": [40.5, -49.0], "expected": 40.5}, {"input": [40.5, -48.5], "expected": 40.5}, {"input": [40.5, -48.0], "expected": 40.5}, {"input": [40.5, -47.5], "expected": 40.5}, {"input": [40.5, -47.0], "expected": 40.5}, {"input": [40.5, -46.5], "expected": 40.5}, {"input": [40.5, -46.0], "expected": 40.5}, {"input": [40.5, -45.5], "expected": 40.5}, {"input": [40.5, -45.0], "expected": 40.5}, {"input": [40.5, -44.5], "expected": 40.5}, {"input": [40.5, -44.0], "expected": 40.5}, {"input": [40.5, -43.5], "expected": 40.5}, {"input": [40.5, -43.0], "expected": 40.5}, {"input": [40.5, -42.5], "expected": 40.5}, {"input": [40.5, -42.0], "expected": 40.5}, {"input": [40.5, -41.5], "expected": 40.5}, {"input": [40.5, -41.0], "expected": 40.5}, {"input": [40.5, -40.5], "expected": 40.5}, {"input": [40.5, -40.0], "expected": 40.5}, {"input": [40.5, -39.5], "expected": 40.5}, {"input": [40.5, -39.0], "expected": 40.5}, {"input": [40.5, -38.5], "expected": 40.5}, {"input": [40.5, -38.0], "expected": 40.5}, {"input": [40.5, -37.5], "expected": 40.5}, {"input": [40.5, -37.0], "expected": 40.5}, {"input": [40.5, -36.5], "expected": 40.5}, {"input": [40.5, -36.0], "expected": 40.5}, {"input": [40.5, -35.5], "expected": 40.5}, {"input": [40.5, -35.0], "expected": 40.5}, {"input": [40.5, -34.5], "expected": 40.5}, {"input": [40.5, -34.0], "expected": 40.5}, {"input": [40.5, -33.5], "expected": 40.5}, {"input": [40.5, -33.0], "expected": 40.5}, {"input": [40.5, -32.5], "expected": 40.5}, {"input": [40.5, -32.0], "expected": 40.5}, {"input": [40.5, -31.5], "expected": 40.5}, {"input": [40.5, -31.0], "expected": 40.5}, {"input": [40.5, -30.5], "expected": 40.5}, {"input": [40.5, -30.0], "expected": 40.5}, {"input": [40.5, -29.5], "expected": 40.5}, {"input": [40.5, -29.0], "expected": 40.5}, {"input": [40.5, -28.5], "expected": 40.5}, {"input": [40.5, -28.0], "expected": 40.5}, {"input": [40.5, -27.5], "expected": 40.5}, {"input": [40.5, -27.0], "expected": 40.5}, {"input": [40.5, -26.5], "expected": 40.5}, {"input": [40.5, -26.0], "expected": 40.5}, {"input": [40.5, -25.5], "expected": 40.5}, {"input": [40.5, -25.0], "expected": 40.5}, {"input": [40.5, -24.5], "expected": 40.5}, {"input": [40.5, -24.0], "expected": 40.5}, {"input": [40.5, -23.5], "expected": 40.5}, {"input": [40.5, -23.0], "expected": 40.5}, {"input": [40.5, -22.5], "expected": 40.5}, {"input": [40.5, -22.0], "expected": 40.5}, {"input": [40.5, -21.5], "expected": 40.5}, {"input": [40.5, -21.0], "expected": 40.5}, {"input": [40.5, -20.5], "expected": 40.5}, {"input": [40.5, -20.0], "expected": 40.5}, {"input": [40.5, -19.5], "expected": 40.5}, {"input": [40.5, -19.0], "expected": 40.5}, {"input": [40.5, -18.5], "expected": 40.5}, {"input": [40.5, -18.0], "expected": 40.5}, {"input": [40.5, -17.5], "expected": 40.5}, {"input": [40.5, -17.0], "expected": 40.5}, {"input": [40.5, -16.5], "expected": 40.5}, {"input": [40.5, -16.0], "expected": 40.5}, {"input": [40.5, -15.5], "expected": 40.5}, {"input": [40.5, -15.0], "expected": 40.5}, {"input": [40.5, -14.5], "expected": 40.5}, {"input": [40.5, -14.0], "expected": 40.5}, {"input": [40.5, -13.5], "expected": 40.5}, {"input": [40.5, -13.0], "expected": 40.5}, {"input": [40.5, -12.5], "expected": 40.5}, {"input": [40.5, -12.0], "expected": 40.5}, {"input": [40.5, -11.5], "expected": 40.5}, {"input": [40.5, -11.0], "expected": 40.5}, {"input": [40.5, -10.5], "expected": 40.5}, {"input": [40.5, -10.0], "expected": 40.5}, {"input": [40.5, -9.5], "expected": 40.5}, {"input": [40.5, -9.0], "expected": 40.5}, {"input": [40.5, -8.5], "expected": 40.5}, {"input": [40.5, -8.0], "expected": 40.5}, {"input": [40.5, -7.5], "expected": 40.5}, {"input": [40.5, -7.0], "expected": 40.5}, {"input": [40.5, -6.5], "expected": 40.5}, {"input": [40.5, -6.0], "expected": 40.5}, {"input": [40.5, -5.5], "expected": 40.5}, {"input": [40.5, -5.0], "expected": 40.5}, {"input": [40.5, -4.5], "expected": 40.5}, {"input": [40.5, -4.0], "expected": 40.5}, {"input": [40.5, -3.5], "expected": 40.5}, {"input": [40.5, -3.0], "expected": 40.5}, {"input": [40.5, -2.5], "expected": 40.5}, {"input": [40.5, -2.0], "expected": 40.5}, {"input": [40.5, -1.5], "expected": 40.5}, {"input": [40.5, -1.0], "expected": 40.5}, {"input": [40.5, -0.5], "expected": 40.5}, {"input": [40.5, 0.0], "expected": 40.5}, {"input": [40.5, 0.5], "expected": 40.5}, {"input": [40.5, 1.0], "expected": 40.5}, {"input": [40.5, 1.5], "expected": 40.5}, {"input": [40.5, 2.0], "expected": 40.5}, {"input": [40.5, 2.5], "expected": 40.5}, {"input": [40.5, 3.0], "expected": 40.5}, {"input": [40.5, 3.5], "expected": 40.5}, {"input": [40.5, 4.0], "expected": 40.5}, {"input": [40.5, 4.5], "expected": 40.5}, {"input": [40.5, 5.0], "expected": 40.5}, {"input": [40.5, 5.5], "expected": 40.5}, {"input": [40.5, 6.0], "expected": 40.5}, {"input": [40.5, 6.5], "expected": 40.5}, {"input": [40.5, 7.0], "expected": 40.5}, {"input": [40.5, 7.5], "expected": 40.50000000000001}, {"input": [40.5, 8.0], "expected": 40.50000000000001}, {"input": [40.5, 8.5], "expected": 40.500000000000014}, {"input": [40.5, 9.0], "expected": 40.50000000000002}, {"input": [40.5, 9.5], "expected": 40.500000000000036}, {"input": [40.5, 10.0], "expected": 40.50000000000006}, {"input": [40.5, 10.5], "expected": 40.50000000000009}, {"input": [40.5, 11.0], "expected": 40.500000000000156}, {"input": [40.5, 11.5], "expected": 40.500000000000256}, {"input": [40.5, 12.0], "expected": 40.50000000000042}, {"input": [40.5, 12.5], "expected": 40.50000000000069}, {"input": [40.5, 13.0], "expected": 40.50000000000114}, {"input": [40.5, 13.5], "expected": 40.50000000000188}, {"input": [40.5, 14.0], "expected": 40.5000000000031}, {"input": [40.5, 14.5], "expected": 40.50000000000511}, {"input": [40.5, 15.0], "expected": 40.50000000000842}, {"input": [40.5, 15.5], "expected": 40.50000000001389}, {"input": [40.5, 16.0], "expected": 40.5000000000229}, {"input": [40.5, 16.5], "expected": 40.50000000003775}, {"input": [40.5, 17.0], "expected": 40.50000000006224}, {"input": [40.5, 17.5], "expected": 40.50000000010262}, {"input": [40.5, 18.0], "expected": 40.50000000016919}, {"input": [40.5, 18.5], "expected": 40.500000000278945}, {"input": [40.5, 19.0], "expected": 40.500000000459906}, {"input": [40.5, 19.5], "expected": 40.500000000758256}, {"input": [40.5, 20.0], "expected": 40.50000000125015}, {"input": [40.5, 20.5], "expected": 40.50000000206116}, {"input": [40.5, 21.0], "expected": 40.50000000339827}, {"input": [40.5, 21.5], "expected": 40.50000000560279}, {"input": [40.5, 22.0], "expected": 40.500000009237446}, {"input": [40.5, 22.5], "expected": 40.50000001522998}, {"input": [40.5, 23.0], "expected": 40.50000002510999}, {"input": [40.5, 23.5], "expected": 40.500000041399375}, {"input": [40.5, 24.0], "expected": 40.50000006825603}, {"input": [40.5, 24.5], "expected": 40.50000011253517}, {"input": [40.5, 25.0], "expected": 40.50000018553912}, {"input": [40.5, 25.5], "expected": 40.500000305902276}, {"input": [40.5, 26.0], "expected": 40.50000050434753}, {"input": [40.5, 26.5], "expected": 40.500000831528375}, {"input": [40.5, 27.0], "expected": 40.500001370958145}, {"input": [40.5, 27.5], "expected": 40.50000226032685}, {"input": [40.5, 28.0], "expected": 40.50000372664623}, {"input": [40.5, 28.5], "expected": 40.50000614419348}, {"input": [40.5, 29.0], "expected": 40.50001013004229}, {"input": [40.5, 29.5], "expected": 40.50001670156132}, {"input": [40.5, 30.0], "expected": 40.50002753607023}, {"input": [40.5, 30.5], "expected": 40.50004539889922}, {"input": [40.5, 31.0], "expected": 40.50007484902863}, {"input": [40.5, 31.5], "expected": 40.50012340218972}, {"input": [40.5, 32.0], "expected": 40.50020344767213}, {"input": [40.5, 32.5], "expected": 40.5003354063729}, {"input": [40.5, 33.0], "expected": 40.50055293147536}, {"input": [40.5, 33.5], "expected": 40.50091146645377}, {"input": [40.5, 34.0], "expected": 40.50150231015976}, {"input": [40.5, 34.5], "expected": 40.50247568513773}, {"input": [40.5, 35.0], "expected": 40.50407844327057}, {"input": [40.5, 35.5], "expected": 40.50671534848912}, {"input": [40.5, 36.0], "expected": 40.5110477448486}, {"input": [40.5, 36.5], "expected": 40.51814992791781}, {"input": [40.5, 37.0], "expected": 40.52975041827262}, {"input": [40.5, 37.5], "expected": 40.548587351573744}, {"input": [40.5, 38.0], "expected": 40.57888973429255}, {"input": [40.5, 38.5], "expected": 40.62692801104297}, {"input": [40.5, 39.0], "expected": 40.70141327798275}, {"input": [40.5, 39.5], "expected": 40.81326168751822}, {"input": [40.5, 40.0], "expected": 40.97407698418011}, {"input": [40.5, 40.5], "expected": 41.19314718055995}, {"input": [40.5, 41.0], "expected": 41.47407698418011}, {"input": [40.5, 41.5], "expected": 41.81326168751822}, {"input": [40.5, 42.0], "expected": 42.20141327798275}, {"input": [40.5, 42.5], "expected": 42.62692801104297}, {"input": [40.5, 43.0], "expected": 43.07888973429255}, {"input": [40.5, 43.5], "expected": 43.548587351573744}, {"input": [40.5, 44.0], "expected": 44.02975041827262}, {"input": [40.5, 44.5], "expected": 44.51814992791781}, {"input": [40.5, 45.0], "expected": 45.0110477448486}, {"input": [40.5, 45.5], "expected": 45.50671534848912}, {"input": [40.5, 46.0], "expected": 46.00407844327057}, {"input": [40.5, 46.5], "expected": 46.50247568513773}, {"input": [40.5, 47.0], "expected": 47.00150231015976}, {"input": [40.5, 47.5], "expected": 47.50091146645377}, {"input": [40.5, 48.0], "expected": 48.00055293147536}, {"input": [40.5, 48.5], "expected": 48.5003354063729}, {"input": [40.5, 49.0], "expected": 49.00020344767213}, {"input": [40.5, 49.5], "expected": 49.50012340218972}, {"input": [40.5, 50.0], "expected": 50.00007484902863}, {"input": [40.5, 50.5], "expected": 50.50004539889922}, {"input": [40.5, 51.0], "expected": 51.00002753607023}, {"input": [40.5, 51.5], "expected": 51.50001670156132}, {"input": [40.5, 52.0], "expected": 52.00001013004229}, {"input": [40.5, 52.5], "expected": 52.50000614419348}, {"input": [40.5, 53.0], "expected": 53.00000372664623}, {"input": [40.5, 53.5], "expected": 53.50000226032685}, {"input": [40.5, 54.0], "expected": 54.000001370958145}, {"input": [40.5, 54.5], "expected": 54.500000831528375}, {"input": [40.5, 55.0], "expected": 55.00000050434753}, {"input": [40.5, 55.5], "expected": 55.500000305902276}, {"input": [40.5, 56.0], "expected": 56.00000018553912}, {"input": [40.5, 56.5], "expected": 56.50000011253517}, {"input": [40.5, 57.0], "expected": 57.00000006825603}, {"input": [40.5, 57.5], "expected": 57.500000041399375}, {"input": [40.5, 58.0], "expected": 58.00000002510999}, {"input": [40.5, 58.5], "expected": 58.50000001522998}, {"input": [40.5, 59.0], "expected": 59.000000009237446}, {"input": [40.5, 59.5], "expected": 59.50000000560279}, {"input": [40.5, 60.0], "expected": 60.00000000339827}, {"input": [40.5, 60.5], "expected": 60.50000000206116}, {"input": [40.5, 61.0], "expected": 61.00000000125015}, {"input": [40.5, 61.5], "expected": 61.500000000758256}, {"input": [40.5, 62.0], "expected": 62.000000000459906}, {"input": [40.5, 62.5], "expected": 62.500000000278945}, {"input": [40.5, 63.0], "expected": 63.00000000016919}, {"input": [40.5, 63.5], "expected": 63.50000000010262}, {"input": [40.5, 64.0], "expected": 64.00000000006224}, {"input": [40.5, 64.5], "expected": 64.50000000003776}, {"input": [40.5, 65.0], "expected": 65.0000000000229}, {"input": [40.5, 65.5], "expected": 65.50000000001388}, {"input": [40.5, 66.0], "expected": 66.00000000000843}, {"input": [40.5, 66.5], "expected": 66.50000000000512}, {"input": [40.5, 67.0], "expected": 67.0000000000031}, {"input": [40.5, 67.5], "expected": 67.50000000000188}, {"input": [40.5, 68.0], "expected": 68.00000000000114}, {"input": [40.5, 68.5], "expected": 68.5000000000007}, {"input": [40.5, 69.0], "expected": 69.00000000000043}, {"input": [40.5, 69.5], "expected": 69.50000000000026}, {"input": [40.5, 70.0], "expected": 70.00000000000016}, {"input": [40.5, 70.5], "expected": 70.5000000000001}, {"input": [40.5, 71.0], "expected": 71.00000000000006}, {"input": [40.5, 71.5], "expected": 71.50000000000003}, {"input": [40.5, 72.0], "expected": 72.00000000000001}, {"input": [40.5, 72.5], "expected": 72.50000000000001}, {"input": [40.5, 73.0], "expected": 73.00000000000001}, {"input": [40.5, 73.5], "expected": 73.5}, {"input": [40.5, 74.0], "expected": 74.0}, {"input": [40.5, 74.5], "expected": 74.5}, {"input": [40.5, 75.0], "expected": 75.0}, {"input": [40.5, 75.5], "expected": 75.5}, {"input": [40.5, 76.0], "expected": 76.0}, {"input": [40.5, 76.5], "expected": 76.5}, {"input": [40.5, 77.0], "expected": 77.0}, {"input": [40.5, 77.5], "expected": 77.5}, {"input": [40.5, 78.0], "expected": 78.0}, {"input": [40.5, 78.5], "expected": 78.5}, {"input": [40.5, 79.0], "expected": 79.0}, {"input": [40.5, 79.5], "expected": 79.5}, {"input": [40.5, 80.0], "expected": 80.0}, {"input": [40.5, 80.5], "expected": 80.5}, {"input": [40.5, 81.0], "expected": 81.0}, {"input": [40.5, 81.5], "expected": 81.5}, {"input": [40.5, 82.0], "expected": 82.0}, {"input": [40.5, 82.5], "expected": 82.5}, {"input": [40.5, 83.0], "expected": 83.0}, {"input": [40.5, 83.5], "expected": 83.5}, {"input": [40.5, 84.0], "expected": 84.0}, {"input": [40.5, 84.5], "expected": 84.5}, {"input": [40.5, 85.0], "expected": 85.0}, {"input": [40.5, 85.5], "expected": 85.5}, {"input": [40.5, 86.0], "expected": 86.0}, {"input": [40.5, 86.5], "expected": 86.5}, {"input": [40.5, 87.0], "expected": 87.0}, {"input": [40.5, 87.5], "expected": 87.5}, {"input": [40.5, 88.0], "expected": 88.0}, {"input": [40.5, 88.5], "expected": 88.5}, {"input": [40.5, 89.0], "expected": 89.0}, {"input": [40.5, 89.5], "expected": 89.5}, {"input": [40.5, 90.0], "expected": 90.0}, {"input": [40.5, 90.5], "expected": 90.5}, {"input": [40.5, 91.0], "expected": 91.0}, {"input": [40.5, 91.5], "expected": 91.5}, {"input": [40.5, 92.0], "expected": 92.0}, {"input": [40.5, 92.5], "expected": 92.5}, {"input": [40.5, 93.0], "expected": 93.0}, {"input": [40.5, 93.5], "expected": 93.5}, {"input": [40.5, 94.0], "expected": 94.0}, {"input": [40.5, 94.5], "expected": 94.5}, {"input": [40.5, 95.0], "expected": 95.0}, {"input": [40.5, 95.5], "expected": 95.5}, {"input": [40.5, 96.0], "expected": 96.0}, {"input": [40.5, 96.5], "expected": 96.5}, {"input": [40.5, 97.0], "expected": 97.0}, {"input": [40.5, 97.5], "expected": 97.5}, {"input": [40.5, 98.0], "expected": 98.0}, {"input": [40.5, 98.5], "expected": 98.5}, {"input": [40.5, 99.0], "expected": 99.0}, {"input": [40.5, 99.5], "expected": 99.5}, {"input": [41.0, -100.0], "expected": 41.0}, {"input": [41.0, -99.5], "expected": 41.0}, {"input": [41.0, -99.0], "expected": 41.0}, {"input": [41.0, -98.5], "expected": 41.0}, {"input": [41.0, -98.0], "expected": 41.0}, {"input": [41.0, -97.5], "expected": 41.0}, {"input": [41.0, -97.0], "expected": 41.0}, {"input": [41.0, -96.5], "expected": 41.0}, {"input": [41.0, -96.0], "expected": 41.0}, {"input": [41.0, -95.5], "expected": 41.0}, {"input": [41.0, -95.0], "expected": 41.0}, {"input": [41.0, -94.5], "expected": 41.0}, {"input": [41.0, -94.0], "expected": 41.0}, {"input": [41.0, -93.5], "expected": 41.0}, {"input": [41.0, -93.0], "expected": 41.0}, {"input": [41.0, -92.5], "expected": 41.0}, {"input": [41.0, -92.0], "expected": 41.0}, {"input": [41.0, -91.5], "expected": 41.0}, {"input": [41.0, -91.0], "expected": 41.0}, {"input": [41.0, -90.5], "expected": 41.0}, {"input": [41.0, -90.0], "expected": 41.0}, {"input": [41.0, -89.5], "expected": 41.0}, {"input": [41.0, -89.0], "expected": 41.0}, {"input": [41.0, -88.5], "expected": 41.0}, {"input": [41.0, -88.0], "expected": 41.0}, {"input": [41.0, -87.5], "expected": 41.0}, {"input": [41.0, -87.0], "expected": 41.0}, {"input": [41.0, -86.5], "expected": 41.0}, {"input": [41.0, -86.0], "expected": 41.0}, {"input": [41.0, -85.5], "expected": 41.0}, {"input": [41.0, -85.0], "expected": 41.0}, {"input": [41.0, -84.5], "expected": 41.0}, {"input": [41.0, -84.0], "expected": 41.0}, {"input": [41.0, -83.5], "expected": 41.0}, {"input": [41.0, -83.0], "expected": 41.0}, {"input": [41.0, -82.5], "expected": 41.0}, {"input": [41.0, -82.0], "expected": 41.0}, {"input": [41.0, -81.5], "expected": 41.0}, {"input": [41.0, -81.0], "expected": 41.0}, {"input": [41.0, -80.5], "expected": 41.0}, {"input": [41.0, -80.0], "expected": 41.0}, {"input": [41.0, -79.5], "expected": 41.0}, {"input": [41.0, -79.0], "expected": 41.0}, {"input": [41.0, -78.5], "expected": 41.0}, {"input": [41.0, -78.0], "expected": 41.0}, {"input": [41.0, -77.5], "expected": 41.0}, {"input": [41.0, -77.0], "expected": 41.0}, {"input": [41.0, -76.5], "expected": 41.0}, {"input": [41.0, -76.0], "expected": 41.0}, {"input": [41.0, -75.5], "expected": 41.0}, {"input": [41.0, -75.0], "expected": 41.0}, {"input": [41.0, -74.5], "expected": 41.0}, {"input": [41.0, -74.0], "expected": 41.0}, {"input": [41.0, -73.5], "expected": 41.0}, {"input": [41.0, -73.0], "expected": 41.0}, {"input": [41.0, -72.5], "expected": 41.0}, {"input": [41.0, -72.0], "expected": 41.0}, {"input": [41.0, -71.5], "expected": 41.0}, {"input": [41.0, -71.0], "expected": 41.0}, {"input": [41.0, -70.5], "expected": 41.0}, {"input": [41.0, -70.0], "expected": 41.0}, {"input": [41.0, -69.5], "expected": 41.0}, {"input": [41.0, -69.0], "expected": 41.0}, {"input": [41.0, -68.5], "expected": 41.0}, {"input": [41.0, -68.0], "expected": 41.0}, {"input": [41.0, -67.5], "expected": 41.0}, {"input": [41.0, -67.0], "expected": 41.0}, {"input": [41.0, -66.5], "expected": 41.0}, {"input": [41.0, -66.0], "expected": 41.0}, {"input": [41.0, -65.5], "expected": 41.0}, {"input": [41.0, -65.0], "expected": 41.0}, {"input": [41.0, -64.5], "expected": 41.0}, {"input": [41.0, -64.0], "expected": 41.0}, {"input": [41.0, -63.5], "expected": 41.0}, {"input": [41.0, -63.0], "expected": 41.0}, {"input": [41.0, -62.5], "expected": 41.0}, {"input": [41.0, -62.0], "expected": 41.0}, {"input": [41.0, -61.5], "expected": 41.0}, {"input": [41.0, -61.0], "expected": 41.0}, {"input": [41.0, -60.5], "expected": 41.0}, {"input": [41.0, -60.0], "expected": 41.0}, {"input": [41.0, -59.5], "expected": 41.0}, {"input": [41.0, -59.0], "expected": 41.0}, {"input": [41.0, -58.5], "expected": 41.0}, {"input": [41.0, -58.0], "expected": 41.0}, {"input": [41.0, -57.5], "expected": 41.0}, {"input": [41.0, -57.0], "expected": 41.0}, {"input": [41.0, -56.5], "expected": 41.0}, {"input": [41.0, -56.0], "expected": 41.0}, {"input": [41.0, -55.5], "expected": 41.0}, {"input": [41.0, -55.0], "expected": 41.0}, {"input": [41.0, -54.5], "expected": 41.0}, {"input": [41.0, -54.0], "expected": 41.0}, {"input": [41.0, -53.5], "expected": 41.0}, {"input": [41.0, -53.0], "expected": 41.0}, {"input": [41.0, -52.5], "expected": 41.0}, {"input": [41.0, -52.0], "expected": 41.0}, {"input": [41.0, -51.5], "expected": 41.0}, {"input": [41.0, -51.0], "expected": 41.0}, {"input": [41.0, -50.5], "expected": 41.0}, {"input": [41.0, -50.0], "expected": 41.0}, {"input": [41.0, -49.5], "expected": 41.0}, {"input": [41.0, -49.0], "expected": 41.0}, {"input": [41.0, -48.5], "expected": 41.0}, {"input": [41.0, -48.0], "expected": 41.0}, {"input": [41.0, -47.5], "expected": 41.0}, {"input": [41.0, -47.0], "expected": 41.0}, {"input": [41.0, -46.5], "expected": 41.0}, {"input": [41.0, -46.0], "expected": 41.0}, {"input": [41.0, -45.5], "expected": 41.0}, {"input": [41.0, -45.0], "expected": 41.0}, {"input": [41.0, -44.5], "expected": 41.0}, {"input": [41.0, -44.0], "expected": 41.0}, {"input": [41.0, -43.5], "expected": 41.0}, {"input": [41.0, -43.0], "expected": 41.0}, {"input": [41.0, -42.5], "expected": 41.0}, {"input": [41.0, -42.0], "expected": 41.0}, {"input": [41.0, -41.5], "expected": 41.0}, {"input": [41.0, -41.0], "expected": 41.0}, {"input": [41.0, -40.5], "expected": 41.0}, {"input": [41.0, -40.0], "expected": 41.0}, {"input": [41.0, -39.5], "expected": 41.0}, {"input": [41.0, -39.0], "expected": 41.0}, {"input": [41.0, -38.5], "expected": 41.0}, {"input": [41.0, -38.0], "expected": 41.0}, {"input": [41.0, -37.5], "expected": 41.0}, {"input": [41.0, -37.0], "expected": 41.0}, {"input": [41.0, -36.5], "expected": 41.0}, {"input": [41.0, -36.0], "expected": 41.0}, {"input": [41.0, -35.5], "expected": 41.0}, {"input": [41.0, -35.0], "expected": 41.0}, {"input": [41.0, -34.5], "expected": 41.0}, {"input": [41.0, -34.0], "expected": 41.0}, {"input": [41.0, -33.5], "expected": 41.0}, {"input": [41.0, -33.0], "expected": 41.0}, {"input": [41.0, -32.5], "expected": 41.0}, {"input": [41.0, -32.0], "expected": 41.0}, {"input": [41.0, -31.5], "expected": 41.0}, {"input": [41.0, -31.0], "expected": 41.0}, {"input": [41.0, -30.5], "expected": 41.0}, {"input": [41.0, -30.0], "expected": 41.0}, {"input": [41.0, -29.5], "expected": 41.0}, {"input": [41.0, -29.0], "expected": 41.0}, {"input": [41.0, -28.5], "expected": 41.0}, {"input": [41.0, -28.0], "expected": 41.0}, {"input": [41.0, -27.5], "expected": 41.0}, {"input": [41.0, -27.0], "expected": 41.0}, {"input": [41.0, -26.5], "expected": 41.0}, {"input": [41.0, -26.0], "expected": 41.0}, {"input": [41.0, -25.5], "expected": 41.0}, {"input": [41.0, -25.0], "expected": 41.0}, {"input": [41.0, -24.5], "expected": 41.0}, {"input": [41.0, -24.0], "expected": 41.0}, {"input": [41.0, -23.5], "expected": 41.0}, {"input": [41.0, -23.0], "expected": 41.0}, {"input": [41.0, -22.5], "expected": 41.0}, {"input": [41.0, -22.0], "expected": 41.0}, {"input": [41.0, -21.5], "expected": 41.0}, {"input": [41.0, -21.0], "expected": 41.0}, {"input": [41.0, -20.5], "expected": 41.0}, {"input": [41.0, -20.0], "expected": 41.0}, {"input": [41.0, -19.5], "expected": 41.0}, {"input": [41.0, -19.0], "expected": 41.0}, {"input": [41.0, -18.5], "expected": 41.0}, {"input": [41.0, -18.0], "expected": 41.0}, {"input": [41.0, -17.5], "expected": 41.0}, {"input": [41.0, -17.0], "expected": 41.0}, {"input": [41.0, -16.5], "expected": 41.0}, {"input": [41.0, -16.0], "expected": 41.0}, {"input": [41.0, -15.5], "expected": 41.0}, {"input": [41.0, -15.0], "expected": 41.0}, {"input": [41.0, -14.5], "expected": 41.0}, {"input": [41.0, -14.0], "expected": 41.0}, {"input": [41.0, -13.5], "expected": 41.0}, {"input": [41.0, -13.0], "expected": 41.0}, {"input": [41.0, -12.5], "expected": 41.0}, {"input": [41.0, -12.0], "expected": 41.0}, {"input": [41.0, -11.5], "expected": 41.0}, {"input": [41.0, -11.0], "expected": 41.0}, {"input": [41.0, -10.5], "expected": 41.0}, {"input": [41.0, -10.0], "expected": 41.0}, {"input": [41.0, -9.5], "expected": 41.0}, {"input": [41.0, -9.0], "expected": 41.0}, {"input": [41.0, -8.5], "expected": 41.0}, {"input": [41.0, -8.0], "expected": 41.0}, {"input": [41.0, -7.5], "expected": 41.0}, {"input": [41.0, -7.0], "expected": 41.0}, {"input": [41.0, -6.5], "expected": 41.0}, {"input": [41.0, -6.0], "expected": 41.0}, {"input": [41.0, -5.5], "expected": 41.0}, {"input": [41.0, -5.0], "expected": 41.0}, {"input": [41.0, -4.5], "expected": 41.0}, {"input": [41.0, -4.0], "expected": 41.0}, {"input": [41.0, -3.5], "expected": 41.0}, {"input": [41.0, -3.0], "expected": 41.0}, {"input": [41.0, -2.5], "expected": 41.0}, {"input": [41.0, -2.0], "expected": 41.0}, {"input": [41.0, -1.5], "expected": 41.0}, {"input": [41.0, -1.0], "expected": 41.0}, {"input": [41.0, -0.5], "expected": 41.0}, {"input": [41.0, 0.0], "expected": 41.0}, {"input": [41.0, 0.5], "expected": 41.0}, {"input": [41.0, 1.0], "expected": 41.0}, {"input": [41.0, 1.5], "expected": 41.0}, {"input": [41.0, 2.0], "expected": 41.0}, {"input": [41.0, 2.5], "expected": 41.0}, {"input": [41.0, 3.0], "expected": 41.0}, {"input": [41.0, 3.5], "expected": 41.0}, {"input": [41.0, 4.0], "expected": 41.0}, {"input": [41.0, 4.5], "expected": 41.0}, {"input": [41.0, 5.0], "expected": 41.0}, {"input": [41.0, 5.5], "expected": 41.0}, {"input": [41.0, 6.0], "expected": 41.0}, {"input": [41.0, 6.5], "expected": 41.0}, {"input": [41.0, 7.0], "expected": 41.0}, {"input": [41.0, 7.5], "expected": 41.0}, {"input": [41.0, 8.0], "expected": 41.00000000000001}, {"input": [41.0, 8.5], "expected": 41.00000000000001}, {"input": [41.0, 9.0], "expected": 41.000000000000014}, {"input": [41.0, 9.5], "expected": 41.00000000000002}, {"input": [41.0, 10.0], "expected": 41.000000000000036}, {"input": [41.0, 10.5], "expected": 41.00000000000006}, {"input": [41.0, 11.0], "expected": 41.00000000000009}, {"input": [41.0, 11.5], "expected": 41.000000000000156}, {"input": [41.0, 12.0], "expected": 41.000000000000256}, {"input": [41.0, 12.5], "expected": 41.00000000000042}, {"input": [41.0, 13.0], "expected": 41.00000000000069}, {"input": [41.0, 13.5], "expected": 41.00000000000114}, {"input": [41.0, 14.0], "expected": 41.00000000000188}, {"input": [41.0, 14.5], "expected": 41.0000000000031}, {"input": [41.0, 15.0], "expected": 41.00000000000511}, {"input": [41.0, 15.5], "expected": 41.00000000000842}, {"input": [41.0, 16.0], "expected": 41.00000000001389}, {"input": [41.0, 16.5], "expected": 41.0000000000229}, {"input": [41.0, 17.0], "expected": 41.00000000003775}, {"input": [41.0, 17.5], "expected": 41.00000000006224}, {"input": [41.0, 18.0], "expected": 41.00000000010262}, {"input": [41.0, 18.5], "expected": 41.00000000016919}, {"input": [41.0, 19.0], "expected": 41.000000000278945}, {"input": [41.0, 19.5], "expected": 41.000000000459906}, {"input": [41.0, 20.0], "expected": 41.000000000758256}, {"input": [41.0, 20.5], "expected": 41.00000000125015}, {"input": [41.0, 21.0], "expected": 41.00000000206116}, {"input": [41.0, 21.5], "expected": 41.00000000339827}, {"input": [41.0, 22.0], "expected": 41.00000000560279}, {"input": [41.0, 22.5], "expected": 41.000000009237446}, {"input": [41.0, 23.0], "expected": 41.00000001522998}, {"input": [41.0, 23.5], "expected": 41.00000002510999}, {"input": [41.0, 24.0], "expected": 41.000000041399375}, {"input": [41.0, 24.5], "expected": 41.00000006825603}, {"input": [41.0, 25.0], "expected": 41.00000011253517}, {"input": [41.0, 25.5], "expected": 41.00000018553912}, {"input": [41.0, 26.0], "expected": 41.000000305902276}, {"input": [41.0, 26.5], "expected": 41.00000050434753}, {"input": [41.0, 27.0], "expected": 41.000000831528375}, {"input": [41.0, 27.5], "expected": 41.000001370958145}, {"input": [41.0, 28.0], "expected": 41.00000226032685}, {"input": [41.0, 28.5], "expected": 41.00000372664623}, {"input": [41.0, 29.0], "expected": 41.00000614419348}, {"input": [41.0, 29.5], "expected": 41.00001013004229}, {"input": [41.0, 30.0], "expected": 41.00001670156132}, {"input": [41.0, 30.5], "expected": 41.00002753607023}, {"input": [41.0, 31.0], "expected": 41.00004539889922}, {"input": [41.0, 31.5], "expected": 41.00007484902863}, {"input": [41.0, 32.0], "expected": 41.00012340218972}, {"input": [41.0, 32.5], "expected": 41.00020344767213}, {"input": [41.0, 33.0], "expected": 41.0003354063729}, {"input": [41.0, 33.5], "expected": 41.00055293147536}, {"input": [41.0, 34.0], "expected": 41.00091146645377}, {"input": [41.0, 34.5], "expected": 41.00150231015976}, {"input": [41.0, 35.0], "expected": 41.00247568513773}, {"input": [41.0, 35.5], "expected": 41.00407844327057}, {"input": [41.0, 36.0], "expected": 41.00671534848912}, {"input": [41.0, 36.5], "expected": 41.0110477448486}, {"input": [41.0, 37.0], "expected": 41.01814992791781}, {"input": [41.0, 37.5], "expected": 41.02975041827262}, {"input": [41.0, 38.0], "expected": 41.048587351573744}, {"input": [41.0, 38.5], "expected": 41.07888973429255}, {"input": [41.0, 39.0], "expected": 41.12692801104297}, {"input": [41.0, 39.5], "expected": 41.20141327798275}, {"input": [41.0, 40.0], "expected": 41.31326168751822}, {"input": [41.0, 40.5], "expected": 41.47407698418011}, {"input": [41.0, 41.0], "expected": 41.69314718055995}, {"input": [41.0, 41.5], "expected": 41.97407698418011}, {"input": [41.0, 42.0], "expected": 42.31326168751822}, {"input": [41.0, 42.5], "expected": 42.70141327798275}, {"input": [41.0, 43.0], "expected": 43.12692801104297}, {"input": [41.0, 43.5], "expected": 43.57888973429255}, {"input": [41.0, 44.0], "expected": 44.048587351573744}, {"input": [41.0, 44.5], "expected": 44.52975041827262}, {"input": [41.0, 45.0], "expected": 45.01814992791781}, {"input": [41.0, 45.5], "expected": 45.5110477448486}, {"input": [41.0, 46.0], "expected": 46.00671534848912}, {"input": [41.0, 46.5], "expected": 46.50407844327057}, {"input": [41.0, 47.0], "expected": 47.00247568513773}, {"input": [41.0, 47.5], "expected": 47.50150231015976}, {"input": [41.0, 48.0], "expected": 48.00091146645377}, {"input": [41.0, 48.5], "expected": 48.50055293147536}, {"input": [41.0, 49.0], "expected": 49.0003354063729}, {"input": [41.0, 49.5], "expected": 49.50020344767213}, {"input": [41.0, 50.0], "expected": 50.00012340218972}, {"input": [41.0, 50.5], "expected": 50.50007484902863}, {"input": [41.0, 51.0], "expected": 51.00004539889922}, {"input": [41.0, 51.5], "expected": 51.50002753607023}, {"input": [41.0, 52.0], "expected": 52.00001670156132}, {"input": [41.0, 52.5], "expected": 52.50001013004229}, {"input": [41.0, 53.0], "expected": 53.00000614419348}, {"input": [41.0, 53.5], "expected": 53.50000372664623}, {"input": [41.0, 54.0], "expected": 54.00000226032685}, {"input": [41.0, 54.5], "expected": 54.500001370958145}, {"input": [41.0, 55.0], "expected": 55.000000831528375}, {"input": [41.0, 55.5], "expected": 55.50000050434753}, {"input": [41.0, 56.0], "expected": 56.000000305902276}, {"input": [41.0, 56.5], "expected": 56.50000018553912}, {"input": [41.0, 57.0], "expected": 57.00000011253517}, {"input": [41.0, 57.5], "expected": 57.50000006825603}, {"input": [41.0, 58.0], "expected": 58.000000041399375}, {"input": [41.0, 58.5], "expected": 58.50000002510999}, {"input": [41.0, 59.0], "expected": 59.00000001522998}, {"input": [41.0, 59.5], "expected": 59.500000009237446}, {"input": [41.0, 60.0], "expected": 60.00000000560279}, {"input": [41.0, 60.5], "expected": 60.50000000339827}, {"input": [41.0, 61.0], "expected": 61.00000000206116}, {"input": [41.0, 61.5], "expected": 61.50000000125015}, {"input": [41.0, 62.0], "expected": 62.000000000758256}, {"input": [41.0, 62.5], "expected": 62.500000000459906}, {"input": [41.0, 63.0], "expected": 63.000000000278945}, {"input": [41.0, 63.5], "expected": 63.50000000016919}, {"input": [41.0, 64.0], "expected": 64.00000000010262}, {"input": [41.0, 64.5], "expected": 64.50000000006224}, {"input": [41.0, 65.0], "expected": 65.00000000003776}, {"input": [41.0, 65.5], "expected": 65.5000000000229}, {"input": [41.0, 66.0], "expected": 66.00000000001388}, {"input": [41.0, 66.5], "expected": 66.50000000000843}, {"input": [41.0, 67.0], "expected": 67.00000000000512}, {"input": [41.0, 67.5], "expected": 67.5000000000031}, {"input": [41.0, 68.0], "expected": 68.00000000000188}, {"input": [41.0, 68.5], "expected": 68.50000000000114}, {"input": [41.0, 69.0], "expected": 69.0000000000007}, {"input": [41.0, 69.5], "expected": 69.50000000000043}, {"input": [41.0, 70.0], "expected": 70.00000000000026}, {"input": [41.0, 70.5], "expected": 70.50000000000016}, {"input": [41.0, 71.0], "expected": 71.0000000000001}, {"input": [41.0, 71.5], "expected": 71.50000000000006}, {"input": [41.0, 72.0], "expected": 72.00000000000003}, {"input": [41.0, 72.5], "expected": 72.50000000000001}, {"input": [41.0, 73.0], "expected": 73.00000000000001}, {"input": [41.0, 73.5], "expected": 73.50000000000001}, {"input": [41.0, 74.0], "expected": 74.0}, {"input": [41.0, 74.5], "expected": 74.5}, {"input": [41.0, 75.0], "expected": 75.0}, {"input": [41.0, 75.5], "expected": 75.5}, {"input": [41.0, 76.0], "expected": 76.0}, {"input": [41.0, 76.5], "expected": 76.5}, {"input": [41.0, 77.0], "expected": 77.0}, {"input": [41.0, 77.5], "expected": 77.5}, {"input": [41.0, 78.0], "expected": 78.0}, {"input": [41.0, 78.5], "expected": 78.5}, {"input": [41.0, 79.0], "expected": 79.0}, {"input": [41.0, 79.5], "expected": 79.5}, {"input": [41.0, 80.0], "expected": 80.0}, {"input": [41.0, 80.5], "expected": 80.5}, {"input": [41.0, 81.0], "expected": 81.0}, {"input": [41.0, 81.5], "expected": 81.5}, {"input": [41.0, 82.0], "expected": 82.0}, {"input": [41.0, 82.5], "expected": 82.5}, {"input": [41.0, 83.0], "expected": 83.0}, {"input": [41.0, 83.5], "expected": 83.5}, {"input": [41.0, 84.0], "expected": 84.0}, {"input": [41.0, 84.5], "expected": 84.5}, {"input": [41.0, 85.0], "expected": 85.0}, {"input": [41.0, 85.5], "expected": 85.5}, {"input": [41.0, 86.0], "expected": 86.0}, {"input": [41.0, 86.5], "expected": 86.5}, {"input": [41.0, 87.0], "expected": 87.0}, {"input": [41.0, 87.5], "expected": 87.5}, {"input": [41.0, 88.0], "expected": 88.0}, {"input": [41.0, 88.5], "expected": 88.5}, {"input": [41.0, 89.0], "expected": 89.0}, {"input": [41.0, 89.5], "expected": 89.5}, {"input": [41.0, 90.0], "expected": 90.0}, {"input": [41.0, 90.5], "expected": 90.5}, {"input": [41.0, 91.0], "expected": 91.0}, {"input": [41.0, 91.5], "expected": 91.5}, {"input": [41.0, 92.0], "expected": 92.0}, {"input": [41.0, 92.5], "expected": 92.5}, {"input": [41.0, 93.0], "expected": 93.0}, {"input": [41.0, 93.5], "expected": 93.5}, {"input": [41.0, 94.0], "expected": 94.0}, {"input": [41.0, 94.5], "expected": 94.5}, {"input": [41.0, 95.0], "expected": 95.0}, {"input": [41.0, 95.5], "expected": 95.5}, {"input": [41.0, 96.0], "expected": 96.0}, {"input": [41.0, 96.5], "expected": 96.5}, {"input": [41.0, 97.0], "expected": 97.0}, {"input": [41.0, 97.5], "expected": 97.5}, {"input": [41.0, 98.0], "expected": 98.0}, {"input": [41.0, 98.5], "expected": 98.5}, {"input": [41.0, 99.0], "expected": 99.0}, {"input": [41.0, 99.5], "expected": 99.5}, {"input": [41.5, -100.0], "expected": 41.5}, {"input": [41.5, -99.5], "expected": 41.5}, {"input": [41.5, -99.0], "expected": 41.5}, {"input": [41.5, -98.5], "expected": 41.5}, {"input": [41.5, -98.0], "expected": 41.5}, {"input": [41.5, -97.5], "expected": 41.5}, {"input": [41.5, -97.0], "expected": 41.5}, {"input": [41.5, -96.5], "expected": 41.5}, {"input": [41.5, -96.0], "expected": 41.5}, {"input": [41.5, -95.5], "expected": 41.5}, {"input": [41.5, -95.0], "expected": 41.5}, {"input": [41.5, -94.5], "expected": 41.5}, {"input": [41.5, -94.0], "expected": 41.5}, {"input": [41.5, -93.5], "expected": 41.5}, {"input": [41.5, -93.0], "expected": 41.5}, {"input": [41.5, -92.5], "expected": 41.5}, {"input": [41.5, -92.0], "expected": 41.5}, {"input": [41.5, -91.5], "expected": 41.5}, {"input": [41.5, -91.0], "expected": 41.5}, {"input": [41.5, -90.5], "expected": 41.5}, {"input": [41.5, -90.0], "expected": 41.5}, {"input": [41.5, -89.5], "expected": 41.5}, {"input": [41.5, -89.0], "expected": 41.5}, {"input": [41.5, -88.5], "expected": 41.5}, {"input": [41.5, -88.0], "expected": 41.5}, {"input": [41.5, -87.5], "expected": 41.5}, {"input": [41.5, -87.0], "expected": 41.5}, {"input": [41.5, -86.5], "expected": 41.5}, {"input": [41.5, -86.0], "expected": 41.5}, {"input": [41.5, -85.5], "expected": 41.5}, {"input": [41.5, -85.0], "expected": 41.5}, {"input": [41.5, -84.5], "expected": 41.5}, {"input": [41.5, -84.0], "expected": 41.5}, {"input": [41.5, -83.5], "expected": 41.5}, {"input": [41.5, -83.0], "expected": 41.5}, {"input": [41.5, -82.5], "expected": 41.5}, {"input": [41.5, -82.0], "expected": 41.5}, {"input": [41.5, -81.5], "expected": 41.5}, {"input": [41.5, -81.0], "expected": 41.5}, {"input": [41.5, -80.5], "expected": 41.5}, {"input": [41.5, -80.0], "expected": 41.5}, {"input": [41.5, -79.5], "expected": 41.5}, {"input": [41.5, -79.0], "expected": 41.5}, {"input": [41.5, -78.5], "expected": 41.5}, {"input": [41.5, -78.0], "expected": 41.5}, {"input": [41.5, -77.5], "expected": 41.5}, {"input": [41.5, -77.0], "expected": 41.5}, {"input": [41.5, -76.5], "expected": 41.5}, {"input": [41.5, -76.0], "expected": 41.5}, {"input": [41.5, -75.5], "expected": 41.5}, {"input": [41.5, -75.0], "expected": 41.5}, {"input": [41.5, -74.5], "expected": 41.5}, {"input": [41.5, -74.0], "expected": 41.5}, {"input": [41.5, -73.5], "expected": 41.5}, {"input": [41.5, -73.0], "expected": 41.5}, {"input": [41.5, -72.5], "expected": 41.5}, {"input": [41.5, -72.0], "expected": 41.5}, {"input": [41.5, -71.5], "expected": 41.5}, {"input": [41.5, -71.0], "expected": 41.5}, {"input": [41.5, -70.5], "expected": 41.5}, {"input": [41.5, -70.0], "expected": 41.5}, {"input": [41.5, -69.5], "expected": 41.5}, {"input": [41.5, -69.0], "expected": 41.5}, {"input": [41.5, -68.5], "expected": 41.5}, {"input": [41.5, -68.0], "expected": 41.5}, {"input": [41.5, -67.5], "expected": 41.5}, {"input": [41.5, -67.0], "expected": 41.5}, {"input": [41.5, -66.5], "expected": 41.5}, {"input": [41.5, -66.0], "expected": 41.5}, {"input": [41.5, -65.5], "expected": 41.5}, {"input": [41.5, -65.0], "expected": 41.5}, {"input": [41.5, -64.5], "expected": 41.5}, {"input": [41.5, -64.0], "expected": 41.5}, {"input": [41.5, -63.5], "expected": 41.5}, {"input": [41.5, -63.0], "expected": 41.5}, {"input": [41.5, -62.5], "expected": 41.5}, {"input": [41.5, -62.0], "expected": 41.5}, {"input": [41.5, -61.5], "expected": 41.5}, {"input": [41.5, -61.0], "expected": 41.5}, {"input": [41.5, -60.5], "expected": 41.5}, {"input": [41.5, -60.0], "expected": 41.5}, {"input": [41.5, -59.5], "expected": 41.5}, {"input": [41.5, -59.0], "expected": 41.5}, {"input": [41.5, -58.5], "expected": 41.5}, {"input": [41.5, -58.0], "expected": 41.5}, {"input": [41.5, -57.5], "expected": 41.5}, {"input": [41.5, -57.0], "expected": 41.5}, {"input": [41.5, -56.5], "expected": 41.5}, {"input": [41.5, -56.0], "expected": 41.5}, {"input": [41.5, -55.5], "expected": 41.5}, {"input": [41.5, -55.0], "expected": 41.5}, {"input": [41.5, -54.5], "expected": 41.5}, {"input": [41.5, -54.0], "expected": 41.5}, {"input": [41.5, -53.5], "expected": 41.5}, {"input": [41.5, -53.0], "expected": 41.5}, {"input": [41.5, -52.5], "expected": 41.5}, {"input": [41.5, -52.0], "expected": 41.5}, {"input": [41.5, -51.5], "expected": 41.5}, {"input": [41.5, -51.0], "expected": 41.5}, {"input": [41.5, -50.5], "expected": 41.5}, {"input": [41.5, -50.0], "expected": 41.5}, {"input": [41.5, -49.5], "expected": 41.5}, {"input": [41.5, -49.0], "expected": 41.5}, {"input": [41.5, -48.5], "expected": 41.5}, {"input": [41.5, -48.0], "expected": 41.5}, {"input": [41.5, -47.5], "expected": 41.5}, {"input": [41.5, -47.0], "expected": 41.5}, {"input": [41.5, -46.5], "expected": 41.5}, {"input": [41.5, -46.0], "expected": 41.5}, {"input": [41.5, -45.5], "expected": 41.5}, {"input": [41.5, -45.0], "expected": 41.5}, {"input": [41.5, -44.5], "expected": 41.5}, {"input": [41.5, -44.0], "expected": 41.5}, {"input": [41.5, -43.5], "expected": 41.5}, {"input": [41.5, -43.0], "expected": 41.5}, {"input": [41.5, -42.5], "expected": 41.5}, {"input": [41.5, -42.0], "expected": 41.5}, {"input": [41.5, -41.5], "expected": 41.5}, {"input": [41.5, -41.0], "expected": 41.5}, {"input": [41.5, -40.5], "expected": 41.5}, {"input": [41.5, -40.0], "expected": 41.5}, {"input": [41.5, -39.5], "expected": 41.5}, {"input": [41.5, -39.0], "expected": 41.5}, {"input": [41.5, -38.5], "expected": 41.5}, {"input": [41.5, -38.0], "expected": 41.5}, {"input": [41.5, -37.5], "expected": 41.5}, {"input": [41.5, -37.0], "expected": 41.5}, {"input": [41.5, -36.5], "expected": 41.5}, {"input": [41.5, -36.0], "expected": 41.5}, {"input": [41.5, -35.5], "expected": 41.5}, {"input": [41.5, -35.0], "expected": 41.5}, {"input": [41.5, -34.5], "expected": 41.5}, {"input": [41.5, -34.0], "expected": 41.5}, {"input": [41.5, -33.5], "expected": 41.5}, {"input": [41.5, -33.0], "expected": 41.5}, {"input": [41.5, -32.5], "expected": 41.5}, {"input": [41.5, -32.0], "expected": 41.5}, {"input": [41.5, -31.5], "expected": 41.5}, {"input": [41.5, -31.0], "expected": 41.5}, {"input": [41.5, -30.5], "expected": 41.5}, {"input": [41.5, -30.0], "expected": 41.5}, {"input": [41.5, -29.5], "expected": 41.5}, {"input": [41.5, -29.0], "expected": 41.5}, {"input": [41.5, -28.5], "expected": 41.5}, {"input": [41.5, -28.0], "expected": 41.5}, {"input": [41.5, -27.5], "expected": 41.5}, {"input": [41.5, -27.0], "expected": 41.5}, {"input": [41.5, -26.5], "expected": 41.5}, {"input": [41.5, -26.0], "expected": 41.5}, {"input": [41.5, -25.5], "expected": 41.5}, {"input": [41.5, -25.0], "expected": 41.5}, {"input": [41.5, -24.5], "expected": 41.5}, {"input": [41.5, -24.0], "expected": 41.5}, {"input": [41.5, -23.5], "expected": 41.5}, {"input": [41.5, -23.0], "expected": 41.5}, {"input": [41.5, -22.5], "expected": 41.5}, {"input": [41.5, -22.0], "expected": 41.5}, {"input": [41.5, -21.5], "expected": 41.5}, {"input": [41.5, -21.0], "expected": 41.5}, {"input": [41.5, -20.5], "expected": 41.5}, {"input": [41.5, -20.0], "expected": 41.5}, {"input": [41.5, -19.5], "expected": 41.5}, {"input": [41.5, -19.0], "expected": 41.5}, {"input": [41.5, -18.5], "expected": 41.5}, {"input": [41.5, -18.0], "expected": 41.5}, {"input": [41.5, -17.5], "expected": 41.5}, {"input": [41.5, -17.0], "expected": 41.5}, {"input": [41.5, -16.5], "expected": 41.5}, {"input": [41.5, -16.0], "expected": 41.5}, {"input": [41.5, -15.5], "expected": 41.5}, {"input": [41.5, -15.0], "expected": 41.5}, {"input": [41.5, -14.5], "expected": 41.5}, {"input": [41.5, -14.0], "expected": 41.5}, {"input": [41.5, -13.5], "expected": 41.5}, {"input": [41.5, -13.0], "expected": 41.5}, {"input": [41.5, -12.5], "expected": 41.5}, {"input": [41.5, -12.0], "expected": 41.5}, {"input": [41.5, -11.5], "expected": 41.5}, {"input": [41.5, -11.0], "expected": 41.5}, {"input": [41.5, -10.5], "expected": 41.5}, {"input": [41.5, -10.0], "expected": 41.5}, {"input": [41.5, -9.5], "expected": 41.5}, {"input": [41.5, -9.0], "expected": 41.5}, {"input": [41.5, -8.5], "expected": 41.5}, {"input": [41.5, -8.0], "expected": 41.5}, {"input": [41.5, -7.5], "expected": 41.5}, {"input": [41.5, -7.0], "expected": 41.5}, {"input": [41.5, -6.5], "expected": 41.5}, {"input": [41.5, -6.0], "expected": 41.5}, {"input": [41.5, -5.5], "expected": 41.5}, {"input": [41.5, -5.0], "expected": 41.5}, {"input": [41.5, -4.5], "expected": 41.5}, {"input": [41.5, -4.0], "expected": 41.5}, {"input": [41.5, -3.5], "expected": 41.5}, {"input": [41.5, -3.0], "expected": 41.5}, {"input": [41.5, -2.5], "expected": 41.5}, {"input": [41.5, -2.0], "expected": 41.5}, {"input": [41.5, -1.5], "expected": 41.5}, {"input": [41.5, -1.0], "expected": 41.5}, {"input": [41.5, -0.5], "expected": 41.5}, {"input": [41.5, 0.0], "expected": 41.5}, {"input": [41.5, 0.5], "expected": 41.5}, {"input": [41.5, 1.0], "expected": 41.5}, {"input": [41.5, 1.5], "expected": 41.5}, {"input": [41.5, 2.0], "expected": 41.5}, {"input": [41.5, 2.5], "expected": 41.5}, {"input": [41.5, 3.0], "expected": 41.5}, {"input": [41.5, 3.5], "expected": 41.5}, {"input": [41.5, 4.0], "expected": 41.5}, {"input": [41.5, 4.5], "expected": 41.5}, {"input": [41.5, 5.0], "expected": 41.5}, {"input": [41.5, 5.5], "expected": 41.5}, {"input": [41.5, 6.0], "expected": 41.5}, {"input": [41.5, 6.5], "expected": 41.5}, {"input": [41.5, 7.0], "expected": 41.5}, {"input": [41.5, 7.5], "expected": 41.5}, {"input": [41.5, 8.0], "expected": 41.5}, {"input": [41.5, 8.5], "expected": 41.50000000000001}, {"input": [41.5, 9.0], "expected": 41.50000000000001}, {"input": [41.5, 9.5], "expected": 41.500000000000014}, {"input": [41.5, 10.0], "expected": 41.50000000000002}, {"input": [41.5, 10.5], "expected": 41.500000000000036}, {"input": [41.5, 11.0], "expected": 41.50000000000006}, {"input": [41.5, 11.5], "expected": 41.50000000000009}, {"input": [41.5, 12.0], "expected": 41.500000000000156}, {"input": [41.5, 12.5], "expected": 41.500000000000256}, {"input": [41.5, 13.0], "expected": 41.50000000000042}, {"input": [41.5, 13.5], "expected": 41.50000000000069}, {"input": [41.5, 14.0], "expected": 41.50000000000114}, {"input": [41.5, 14.5], "expected": 41.50000000000188}, {"input": [41.5, 15.0], "expected": 41.5000000000031}, {"input": [41.5, 15.5], "expected": 41.50000000000511}, {"input": [41.5, 16.0], "expected": 41.50000000000842}, {"input": [41.5, 16.5], "expected": 41.50000000001389}, {"input": [41.5, 17.0], "expected": 41.5000000000229}, {"input": [41.5, 17.5], "expected": 41.50000000003775}, {"input": [41.5, 18.0], "expected": 41.50000000006224}, {"input": [41.5, 18.5], "expected": 41.50000000010262}, {"input": [41.5, 19.0], "expected": 41.50000000016919}, {"input": [41.5, 19.5], "expected": 41.500000000278945}, {"input": [41.5, 20.0], "expected": 41.500000000459906}, {"input": [41.5, 20.5], "expected": 41.500000000758256}, {"input": [41.5, 21.0], "expected": 41.50000000125015}, {"input": [41.5, 21.5], "expected": 41.50000000206116}, {"input": [41.5, 22.0], "expected": 41.50000000339827}, {"input": [41.5, 22.5], "expected": 41.50000000560279}, {"input": [41.5, 23.0], "expected": 41.500000009237446}, {"input": [41.5, 23.5], "expected": 41.50000001522998}, {"input": [41.5, 24.0], "expected": 41.50000002510999}, {"input": [41.5, 24.5], "expected": 41.500000041399375}, {"input": [41.5, 25.0], "expected": 41.50000006825603}, {"input": [41.5, 25.5], "expected": 41.50000011253517}, {"input": [41.5, 26.0], "expected": 41.50000018553912}, {"input": [41.5, 26.5], "expected": 41.500000305902276}, {"input": [41.5, 27.0], "expected": 41.50000050434753}, {"input": [41.5, 27.5], "expected": 41.500000831528375}, {"input": [41.5, 28.0], "expected": 41.500001370958145}, {"input": [41.5, 28.5], "expected": 41.50000226032685}, {"input": [41.5, 29.0], "expected": 41.50000372664623}, {"input": [41.5, 29.5], "expected": 41.50000614419348}, {"input": [41.5, 30.0], "expected": 41.50001013004229}, {"input": [41.5, 30.5], "expected": 41.50001670156132}, {"input": [41.5, 31.0], "expected": 41.50002753607023}, {"input": [41.5, 31.5], "expected": 41.50004539889922}, {"input": [41.5, 32.0], "expected": 41.50007484902863}, {"input": [41.5, 32.5], "expected": 41.50012340218972}, {"input": [41.5, 33.0], "expected": 41.50020344767213}, {"input": [41.5, 33.5], "expected": 41.5003354063729}, {"input": [41.5, 34.0], "expected": 41.50055293147536}, {"input": [41.5, 34.5], "expected": 41.50091146645377}, {"input": [41.5, 35.0], "expected": 41.50150231015976}, {"input": [41.5, 35.5], "expected": 41.50247568513773}, {"input": [41.5, 36.0], "expected": 41.50407844327057}, {"input": [41.5, 36.5], "expected": 41.50671534848912}, {"input": [41.5, 37.0], "expected": 41.5110477448486}, {"input": [41.5, 37.5], "expected": 41.51814992791781}, {"input": [41.5, 38.0], "expected": 41.52975041827262}, {"input": [41.5, 38.5], "expected": 41.548587351573744}, {"input": [41.5, 39.0], "expected": 41.57888973429255}, {"input": [41.5, 39.5], "expected": 41.62692801104297}, {"input": [41.5, 40.0], "expected": 41.70141327798275}, {"input": [41.5, 40.5], "expected": 41.81326168751822}, {"input": [41.5, 41.0], "expected": 41.97407698418011}, {"input": [41.5, 41.5], "expected": 42.19314718055995}, {"input": [41.5, 42.0], "expected": 42.47407698418011}, {"input": [41.5, 42.5], "expected": 42.81326168751822}, {"input": [41.5, 43.0], "expected": 43.20141327798275}, {"input": [41.5, 43.5], "expected": 43.62692801104297}, {"input": [41.5, 44.0], "expected": 44.07888973429255}, {"input": [41.5, 44.5], "expected": 44.548587351573744}, {"input": [41.5, 45.0], "expected": 45.02975041827262}, {"input": [41.5, 45.5], "expected": 45.51814992791781}, {"input": [41.5, 46.0], "expected": 46.0110477448486}, {"input": [41.5, 46.5], "expected": 46.50671534848912}, {"input": [41.5, 47.0], "expected": 47.00407844327057}, {"input": [41.5, 47.5], "expected": 47.50247568513773}, {"input": [41.5, 48.0], "expected": 48.00150231015976}, {"input": [41.5, 48.5], "expected": 48.50091146645377}, {"input": [41.5, 49.0], "expected": 49.00055293147536}, {"input": [41.5, 49.5], "expected": 49.5003354063729}, {"input": [41.5, 50.0], "expected": 50.00020344767213}, {"input": [41.5, 50.5], "expected": 50.50012340218972}, {"input": [41.5, 51.0], "expected": 51.00007484902863}, {"input": [41.5, 51.5], "expected": 51.50004539889922}, {"input": [41.5, 52.0], "expected": 52.00002753607023}, {"input": [41.5, 52.5], "expected": 52.50001670156132}, {"input": [41.5, 53.0], "expected": 53.00001013004229}, {"input": [41.5, 53.5], "expected": 53.50000614419348}, {"input": [41.5, 54.0], "expected": 54.00000372664623}, {"input": [41.5, 54.5], "expected": 54.50000226032685}, {"input": [41.5, 55.0], "expected": 55.000001370958145}, {"input": [41.5, 55.5], "expected": 55.500000831528375}, {"input": [41.5, 56.0], "expected": 56.00000050434753}, {"input": [41.5, 56.5], "expected": 56.500000305902276}, {"input": [41.5, 57.0], "expected": 57.00000018553912}, {"input": [41.5, 57.5], "expected": 57.50000011253517}, {"input": [41.5, 58.0], "expected": 58.00000006825603}, {"input": [41.5, 58.5], "expected": 58.500000041399375}, {"input": [41.5, 59.0], "expected": 59.00000002510999}, {"input": [41.5, 59.5], "expected": 59.50000001522998}, {"input": [41.5, 60.0], "expected": 60.000000009237446}, {"input": [41.5, 60.5], "expected": 60.50000000560279}, {"input": [41.5, 61.0], "expected": 61.00000000339827}, {"input": [41.5, 61.5], "expected": 61.50000000206116}, {"input": [41.5, 62.0], "expected": 62.00000000125015}, {"input": [41.5, 62.5], "expected": 62.500000000758256}, {"input": [41.5, 63.0], "expected": 63.000000000459906}, {"input": [41.5, 63.5], "expected": 63.500000000278945}, {"input": [41.5, 64.0], "expected": 64.0000000001692}, {"input": [41.5, 64.5], "expected": 64.50000000010262}, {"input": [41.5, 65.0], "expected": 65.00000000006224}, {"input": [41.5, 65.5], "expected": 65.50000000003776}, {"input": [41.5, 66.0], "expected": 66.0000000000229}, {"input": [41.5, 66.5], "expected": 66.50000000001388}, {"input": [41.5, 67.0], "expected": 67.00000000000843}, {"input": [41.5, 67.5], "expected": 67.50000000000512}, {"input": [41.5, 68.0], "expected": 68.0000000000031}, {"input": [41.5, 68.5], "expected": 68.50000000000188}, {"input": [41.5, 69.0], "expected": 69.00000000000114}, {"input": [41.5, 69.5], "expected": 69.5000000000007}, {"input": [41.5, 70.0], "expected": 70.00000000000043}, {"input": [41.5, 70.5], "expected": 70.50000000000026}, {"input": [41.5, 71.0], "expected": 71.00000000000016}, {"input": [41.5, 71.5], "expected": 71.5000000000001}, {"input": [41.5, 72.0], "expected": 72.00000000000006}, {"input": [41.5, 72.5], "expected": 72.50000000000003}, {"input": [41.5, 73.0], "expected": 73.00000000000001}, {"input": [41.5, 73.5], "expected": 73.50000000000001}, {"input": [41.5, 74.0], "expected": 74.00000000000001}, {"input": [41.5, 74.5], "expected": 74.5}, {"input": [41.5, 75.0], "expected": 75.0}, {"input": [41.5, 75.5], "expected": 75.5}, {"input": [41.5, 76.0], "expected": 76.0}, {"input": [41.5, 76.5], "expected": 76.5}, {"input": [41.5, 77.0], "expected": 77.0}, {"input": [41.5, 77.5], "expected": 77.5}, {"input": [41.5, 78.0], "expected": 78.0}, {"input": [41.5, 78.5], "expected": 78.5}, {"input": [41.5, 79.0], "expected": 79.0}, {"input": [41.5, 79.5], "expected": 79.5}, {"input": [41.5, 80.0], "expected": 80.0}, {"input": [41.5, 80.5], "expected": 80.5}, {"input": [41.5, 81.0], "expected": 81.0}, {"input": [41.5, 81.5], "expected": 81.5}, {"input": [41.5, 82.0], "expected": 82.0}, {"input": [41.5, 82.5], "expected": 82.5}, {"input": [41.5, 83.0], "expected": 83.0}, {"input": [41.5, 83.5], "expected": 83.5}, {"input": [41.5, 84.0], "expected": 84.0}, {"input": [41.5, 84.5], "expected": 84.5}, {"input": [41.5, 85.0], "expected": 85.0}, {"input": [41.5, 85.5], "expected": 85.5}, {"input": [41.5, 86.0], "expected": 86.0}, {"input": [41.5, 86.5], "expected": 86.5}, {"input": [41.5, 87.0], "expected": 87.0}, {"input": [41.5, 87.5], "expected": 87.5}, {"input": [41.5, 88.0], "expected": 88.0}, {"input": [41.5, 88.5], "expected": 88.5}, {"input": [41.5, 89.0], "expected": 89.0}, {"input": [41.5, 89.5], "expected": 89.5}, {"input": [41.5, 90.0], "expected": 90.0}, {"input": [41.5, 90.5], "expected": 90.5}, {"input": [41.5, 91.0], "expected": 91.0}, {"input": [41.5, 91.5], "expected": 91.5}, {"input": [41.5, 92.0], "expected": 92.0}, {"input": [41.5, 92.5], "expected": 92.5}, {"input": [41.5, 93.0], "expected": 93.0}, {"input": [41.5, 93.5], "expected": 93.5}, {"input": [41.5, 94.0], "expected": 94.0}, {"input": [41.5, 94.5], "expected": 94.5}, {"input": [41.5, 95.0], "expected": 95.0}, {"input": [41.5, 95.5], "expected": 95.5}, {"input": [41.5, 96.0], "expected": 96.0}, {"input": [41.5, 96.5], "expected": 96.5}, {"input": [41.5, 97.0], "expected": 97.0}, {"input": [41.5, 97.5], "expected": 97.5}, {"input": [41.5, 98.0], "expected": 98.0}, {"input": [41.5, 98.5], "expected": 98.5}, {"input": [41.5, 99.0], "expected": 99.0}, {"input": [41.5, 99.5], "expected": 99.5}, {"input": [42.0, -100.0], "expected": 42.0}, {"input": [42.0, -99.5], "expected": 42.0}, {"input": [42.0, -99.0], "expected": 42.0}, {"input": [42.0, -98.5], "expected": 42.0}, {"input": [42.0, -98.0], "expected": 42.0}, {"input": [42.0, -97.5], "expected": 42.0}, {"input": [42.0, -97.0], "expected": 42.0}, {"input": [42.0, -96.5], "expected": 42.0}, {"input": [42.0, -96.0], "expected": 42.0}, {"input": [42.0, -95.5], "expected": 42.0}, {"input": [42.0, -95.0], "expected": 42.0}, {"input": [42.0, -94.5], "expected": 42.0}, {"input": [42.0, -94.0], "expected": 42.0}, {"input": [42.0, -93.5], "expected": 42.0}, {"input": [42.0, -93.0], "expected": 42.0}, {"input": [42.0, -92.5], "expected": 42.0}, {"input": [42.0, -92.0], "expected": 42.0}, {"input": [42.0, -91.5], "expected": 42.0}, {"input": [42.0, -91.0], "expected": 42.0}, {"input": [42.0, -90.5], "expected": 42.0}, {"input": [42.0, -90.0], "expected": 42.0}, {"input": [42.0, -89.5], "expected": 42.0}, {"input": [42.0, -89.0], "expected": 42.0}, {"input": [42.0, -88.5], "expected": 42.0}, {"input": [42.0, -88.0], "expected": 42.0}, {"input": [42.0, -87.5], "expected": 42.0}, {"input": [42.0, -87.0], "expected": 42.0}, {"input": [42.0, -86.5], "expected": 42.0}, {"input": [42.0, -86.0], "expected": 42.0}, {"input": [42.0, -85.5], "expected": 42.0}, {"input": [42.0, -85.0], "expected": 42.0}, {"input": [42.0, -84.5], "expected": 42.0}, {"input": [42.0, -84.0], "expected": 42.0}, {"input": [42.0, -83.5], "expected": 42.0}, {"input": [42.0, -83.0], "expected": 42.0}, {"input": [42.0, -82.5], "expected": 42.0}, {"input": [42.0, -82.0], "expected": 42.0}, {"input": [42.0, -81.5], "expected": 42.0}, {"input": [42.0, -81.0], "expected": 42.0}, {"input": [42.0, -80.5], "expected": 42.0}, {"input": [42.0, -80.0], "expected": 42.0}, {"input": [42.0, -79.5], "expected": 42.0}, {"input": [42.0, -79.0], "expected": 42.0}, {"input": [42.0, -78.5], "expected": 42.0}, {"input": [42.0, -78.0], "expected": 42.0}, {"input": [42.0, -77.5], "expected": 42.0}, {"input": [42.0, -77.0], "expected": 42.0}, {"input": [42.0, -76.5], "expected": 42.0}, {"input": [42.0, -76.0], "expected": 42.0}, {"input": [42.0, -75.5], "expected": 42.0}, {"input": [42.0, -75.0], "expected": 42.0}, {"input": [42.0, -74.5], "expected": 42.0}, {"input": [42.0, -74.0], "expected": 42.0}, {"input": [42.0, -73.5], "expected": 42.0}, {"input": [42.0, -73.0], "expected": 42.0}, {"input": [42.0, -72.5], "expected": 42.0}, {"input": [42.0, -72.0], "expected": 42.0}, {"input": [42.0, -71.5], "expected": 42.0}, {"input": [42.0, -71.0], "expected": 42.0}, {"input": [42.0, -70.5], "expected": 42.0}, {"input": [42.0, -70.0], "expected": 42.0}, {"input": [42.0, -69.5], "expected": 42.0}, {"input": [42.0, -69.0], "expected": 42.0}, {"input": [42.0, -68.5], "expected": 42.0}, {"input": [42.0, -68.0], "expected": 42.0}, {"input": [42.0, -67.5], "expected": 42.0}, {"input": [42.0, -67.0], "expected": 42.0}, {"input": [42.0, -66.5], "expected": 42.0}, {"input": [42.0, -66.0], "expected": 42.0}, {"input": [42.0, -65.5], "expected": 42.0}, {"input": [42.0, -65.0], "expected": 42.0}, {"input": [42.0, -64.5], "expected": 42.0}, {"input": [42.0, -64.0], "expected": 42.0}, {"input": [42.0, -63.5], "expected": 42.0}, {"input": [42.0, -63.0], "expected": 42.0}, {"input": [42.0, -62.5], "expected": 42.0}, {"input": [42.0, -62.0], "expected": 42.0}, {"input": [42.0, -61.5], "expected": 42.0}, {"input": [42.0, -61.0], "expected": 42.0}, {"input": [42.0, -60.5], "expected": 42.0}, {"input": [42.0, -60.0], "expected": 42.0}, {"input": [42.0, -59.5], "expected": 42.0}, {"input": [42.0, -59.0], "expected": 42.0}, {"input": [42.0, -58.5], "expected": 42.0}, {"input": [42.0, -58.0], "expected": 42.0}, {"input": [42.0, -57.5], "expected": 42.0}, {"input": [42.0, -57.0], "expected": 42.0}, {"input": [42.0, -56.5], "expected": 42.0}, {"input": [42.0, -56.0], "expected": 42.0}, {"input": [42.0, -55.5], "expected": 42.0}, {"input": [42.0, -55.0], "expected": 42.0}, {"input": [42.0, -54.5], "expected": 42.0}, {"input": [42.0, -54.0], "expected": 42.0}, {"input": [42.0, -53.5], "expected": 42.0}, {"input": [42.0, -53.0], "expected": 42.0}, {"input": [42.0, -52.5], "expected": 42.0}, {"input": [42.0, -52.0], "expected": 42.0}, {"input": [42.0, -51.5], "expected": 42.0}, {"input": [42.0, -51.0], "expected": 42.0}, {"input": [42.0, -50.5], "expected": 42.0}, {"input": [42.0, -50.0], "expected": 42.0}, {"input": [42.0, -49.5], "expected": 42.0}, {"input": [42.0, -49.0], "expected": 42.0}, {"input": [42.0, -48.5], "expected": 42.0}, {"input": [42.0, -48.0], "expected": 42.0}, {"input": [42.0, -47.5], "expected": 42.0}, {"input": [42.0, -47.0], "expected": 42.0}, {"input": [42.0, -46.5], "expected": 42.0}, {"input": [42.0, -46.0], "expected": 42.0}, {"input": [42.0, -45.5], "expected": 42.0}, {"input": [42.0, -45.0], "expected": 42.0}, {"input": [42.0, -44.5], "expected": 42.0}, {"input": [42.0, -44.0], "expected": 42.0}, {"input": [42.0, -43.5], "expected": 42.0}, {"input": [42.0, -43.0], "expected": 42.0}, {"input": [42.0, -42.5], "expected": 42.0}, {"input": [42.0, -42.0], "expected": 42.0}, {"input": [42.0, -41.5], "expected": 42.0}, {"input": [42.0, -41.0], "expected": 42.0}, {"input": [42.0, -40.5], "expected": 42.0}, {"input": [42.0, -40.0], "expected": 42.0}, {"input": [42.0, -39.5], "expected": 42.0}, {"input": [42.0, -39.0], "expected": 42.0}, {"input": [42.0, -38.5], "expected": 42.0}, {"input": [42.0, -38.0], "expected": 42.0}, {"input": [42.0, -37.5], "expected": 42.0}, {"input": [42.0, -37.0], "expected": 42.0}, {"input": [42.0, -36.5], "expected": 42.0}, {"input": [42.0, -36.0], "expected": 42.0}, {"input": [42.0, -35.5], "expected": 42.0}, {"input": [42.0, -35.0], "expected": 42.0}, {"input": [42.0, -34.5], "expected": 42.0}, {"input": [42.0, -34.0], "expected": 42.0}, {"input": [42.0, -33.5], "expected": 42.0}, {"input": [42.0, -33.0], "expected": 42.0}, {"input": [42.0, -32.5], "expected": 42.0}, {"input": [42.0, -32.0], "expected": 42.0}, {"input": [42.0, -31.5], "expected": 42.0}, {"input": [42.0, -31.0], "expected": 42.0}, {"input": [42.0, -30.5], "expected": 42.0}, {"input": [42.0, -30.0], "expected": 42.0}, {"input": [42.0, -29.5], "expected": 42.0}, {"input": [42.0, -29.0], "expected": 42.0}, {"input": [42.0, -28.5], "expected": 42.0}, {"input": [42.0, -28.0], "expected": 42.0}, {"input": [42.0, -27.5], "expected": 42.0}, {"input": [42.0, -27.0], "expected": 42.0}, {"input": [42.0, -26.5], "expected": 42.0}, {"input": [42.0, -26.0], "expected": 42.0}, {"input": [42.0, -25.5], "expected": 42.0}, {"input": [42.0, -25.0], "expected": 42.0}, {"input": [42.0, -24.5], "expected": 42.0}, {"input": [42.0, -24.0], "expected": 42.0}, {"input": [42.0, -23.5], "expected": 42.0}, {"input": [42.0, -23.0], "expected": 42.0}, {"input": [42.0, -22.5], "expected": 42.0}, {"input": [42.0, -22.0], "expected": 42.0}, {"input": [42.0, -21.5], "expected": 42.0}, {"input": [42.0, -21.0], "expected": 42.0}, {"input": [42.0, -20.5], "expected": 42.0}, {"input": [42.0, -20.0], "expected": 42.0}, {"input": [42.0, -19.5], "expected": 42.0}, {"input": [42.0, -19.0], "expected": 42.0}, {"input": [42.0, -18.5], "expected": 42.0}, {"input": [42.0, -18.0], "expected": 42.0}, {"input": [42.0, -17.5], "expected": 42.0}, {"input": [42.0, -17.0], "expected": 42.0}, {"input": [42.0, -16.5], "expected": 42.0}, {"input": [42.0, -16.0], "expected": 42.0}, {"input": [42.0, -15.5], "expected": 42.0}, {"input": [42.0, -15.0], "expected": 42.0}, {"input": [42.0, -14.5], "expected": 42.0}, {"input": [42.0, -14.0], "expected": 42.0}, {"input": [42.0, -13.5], "expected": 42.0}, {"input": [42.0, -13.0], "expected": 42.0}, {"input": [42.0, -12.5], "expected": 42.0}, {"input": [42.0, -12.0], "expected": 42.0}, {"input": [42.0, -11.5], "expected": 42.0}, {"input": [42.0, -11.0], "expected": 42.0}, {"input": [42.0, -10.5], "expected": 42.0}, {"input": [42.0, -10.0], "expected": 42.0}, {"input": [42.0, -9.5], "expected": 42.0}, {"input": [42.0, -9.0], "expected": 42.0}, {"input": [42.0, -8.5], "expected": 42.0}, {"input": [42.0, -8.0], "expected": 42.0}, {"input": [42.0, -7.5], "expected": 42.0}, {"input": [42.0, -7.0], "expected": 42.0}, {"input": [42.0, -6.5], "expected": 42.0}, {"input": [42.0, -6.0], "expected": 42.0}, {"input": [42.0, -5.5], "expected": 42.0}, {"input": [42.0, -5.0], "expected": 42.0}, {"input": [42.0, -4.5], "expected": 42.0}, {"input": [42.0, -4.0], "expected": 42.0}, {"input": [42.0, -3.5], "expected": 42.0}, {"input": [42.0, -3.0], "expected": 42.0}, {"input": [42.0, -2.5], "expected": 42.0}, {"input": [42.0, -2.0], "expected": 42.0}, {"input": [42.0, -1.5], "expected": 42.0}, {"input": [42.0, -1.0], "expected": 42.0}, {"input": [42.0, -0.5], "expected": 42.0}, {"input": [42.0, 0.0], "expected": 42.0}, {"input": [42.0, 0.5], "expected": 42.0}, {"input": [42.0, 1.0], "expected": 42.0}, {"input": [42.0, 1.5], "expected": 42.0}, {"input": [42.0, 2.0], "expected": 42.0}, {"input": [42.0, 2.5], "expected": 42.0}, {"input": [42.0, 3.0], "expected": 42.0}, {"input": [42.0, 3.5], "expected": 42.0}, {"input": [42.0, 4.0], "expected": 42.0}, {"input": [42.0, 4.5], "expected": 42.0}, {"input": [42.0, 5.0], "expected": 42.0}, {"input": [42.0, 5.5], "expected": 42.0}, {"input": [42.0, 6.0], "expected": 42.0}, {"input": [42.0, 6.5], "expected": 42.0}, {"input": [42.0, 7.0], "expected": 42.0}, {"input": [42.0, 7.5], "expected": 42.0}, {"input": [42.0, 8.0], "expected": 42.0}, {"input": [42.0, 8.5], "expected": 42.0}, {"input": [42.0, 9.0], "expected": 42.00000000000001}, {"input": [42.0, 9.5], "expected": 42.00000000000001}, {"input": [42.0, 10.0], "expected": 42.000000000000014}, {"input": [42.0, 10.5], "expected": 42.00000000000002}, {"input": [42.0, 11.0], "expected": 42.000000000000036}, {"input": [42.0, 11.5], "expected": 42.00000000000006}, {"input": [42.0, 12.0], "expected": 42.00000000000009}, {"input": [42.0, 12.5], "expected": 42.000000000000156}, {"input": [42.0, 13.0], "expected": 42.000000000000256}, {"input": [42.0, 13.5], "expected": 42.00000000000042}, {"input": [42.0, 14.0], "expected": 42.00000000000069}, {"input": [42.0, 14.5], "expected": 42.00000000000114}, {"input": [42.0, 15.0], "expected": 42.00000000000188}, {"input": [42.0, 15.5], "expected": 42.0000000000031}, {"input": [42.0, 16.0], "expected": 42.00000000000511}, {"input": [42.0, 16.5], "expected": 42.00000000000842}, {"input": [42.0, 17.0], "expected": 42.00000000001389}, {"input": [42.0, 17.5], "expected": 42.0000000000229}, {"input": [42.0, 18.0], "expected": 42.00000000003775}, {"input": [42.0, 18.5], "expected": 42.00000000006224}, {"input": [42.0, 19.0], "expected": 42.00000000010262}, {"input": [42.0, 19.5], "expected": 42.00000000016919}, {"input": [42.0, 20.0], "expected": 42.000000000278945}, {"input": [42.0, 20.5], "expected": 42.000000000459906}, {"input": [42.0, 21.0], "expected": 42.000000000758256}, {"input": [42.0, 21.5], "expected": 42.00000000125015}, {"input": [42.0, 22.0], "expected": 42.00000000206116}, {"input": [42.0, 22.5], "expected": 42.00000000339827}, {"input": [42.0, 23.0], "expected": 42.00000000560279}, {"input": [42.0, 23.5], "expected": 42.000000009237446}, {"input": [42.0, 24.0], "expected": 42.00000001522998}, {"input": [42.0, 24.5], "expected": 42.00000002510999}, {"input": [42.0, 25.0], "expected": 42.000000041399375}, {"input": [42.0, 25.5], "expected": 42.00000006825603}, {"input": [42.0, 26.0], "expected": 42.00000011253517}, {"input": [42.0, 26.5], "expected": 42.00000018553912}, {"input": [42.0, 27.0], "expected": 42.000000305902276}, {"input": [42.0, 27.5], "expected": 42.00000050434753}, {"input": [42.0, 28.0], "expected": 42.000000831528375}, {"input": [42.0, 28.5], "expected": 42.000001370958145}, {"input": [42.0, 29.0], "expected": 42.00000226032685}, {"input": [42.0, 29.5], "expected": 42.00000372664623}, {"input": [42.0, 30.0], "expected": 42.00000614419348}, {"input": [42.0, 30.5], "expected": 42.00001013004229}, {"input": [42.0, 31.0], "expected": 42.00001670156132}, {"input": [42.0, 31.5], "expected": 42.00002753607023}, {"input": [42.0, 32.0], "expected": 42.00004539889922}, {"input": [42.0, 32.5], "expected": 42.00007484902863}, {"input": [42.0, 33.0], "expected": 42.00012340218972}, {"input": [42.0, 33.5], "expected": 42.00020344767213}, {"input": [42.0, 34.0], "expected": 42.0003354063729}, {"input": [42.0, 34.5], "expected": 42.00055293147536}, {"input": [42.0, 35.0], "expected": 42.00091146645377}, {"input": [42.0, 35.5], "expected": 42.00150231015976}, {"input": [42.0, 36.0], "expected": 42.00247568513773}, {"input": [42.0, 36.5], "expected": 42.00407844327057}, {"input": [42.0, 37.0], "expected": 42.00671534848912}, {"input": [42.0, 37.5], "expected": 42.0110477448486}, {"input": [42.0, 38.0], "expected": 42.01814992791781}, {"input": [42.0, 38.5], "expected": 42.02975041827262}, {"input": [42.0, 39.0], "expected": 42.048587351573744}, {"input": [42.0, 39.5], "expected": 42.07888973429255}, {"input": [42.0, 40.0], "expected": 42.12692801104297}, {"input": [42.0, 40.5], "expected": 42.20141327798275}, {"input": [42.0, 41.0], "expected": 42.31326168751822}, {"input": [42.0, 41.5], "expected": 42.47407698418011}, {"input": [42.0, 42.0], "expected": 42.69314718055995}, {"input": [42.0, 42.5], "expected": 42.97407698418011}, {"input": [42.0, 43.0], "expected": 43.31326168751822}, {"input": [42.0, 43.5], "expected": 43.70141327798275}, {"input": [42.0, 44.0], "expected": 44.12692801104297}, {"input": [42.0, 44.5], "expected": 44.57888973429255}, {"input": [42.0, 45.0], "expected": 45.048587351573744}, {"input": [42.0, 45.5], "expected": 45.52975041827262}, {"input": [42.0, 46.0], "expected": 46.01814992791781}, {"input": [42.0, 46.5], "expected": 46.5110477448486}, {"input": [42.0, 47.0], "expected": 47.00671534848912}, {"input": [42.0, 47.5], "expected": 47.50407844327057}, {"input": [42.0, 48.0], "expected": 48.00247568513773}, {"input": [42.0, 48.5], "expected": 48.50150231015976}, {"input": [42.0, 49.0], "expected": 49.00091146645377}, {"input": [42.0, 49.5], "expected": 49.50055293147536}, {"input": [42.0, 50.0], "expected": 50.0003354063729}, {"input": [42.0, 50.5], "expected": 50.50020344767213}, {"input": [42.0, 51.0], "expected": 51.00012340218972}, {"input": [42.0, 51.5], "expected": 51.50007484902863}, {"input": [42.0, 52.0], "expected": 52.00004539889922}, {"input": [42.0, 52.5], "expected": 52.50002753607023}, {"input": [42.0, 53.0], "expected": 53.00001670156132}, {"input": [42.0, 53.5], "expected": 53.50001013004229}, {"input": [42.0, 54.0], "expected": 54.00000614419348}, {"input": [42.0, 54.5], "expected": 54.50000372664623}, {"input": [42.0, 55.0], "expected": 55.00000226032685}, {"input": [42.0, 55.5], "expected": 55.500001370958145}, {"input": [42.0, 56.0], "expected": 56.000000831528375}, {"input": [42.0, 56.5], "expected": 56.50000050434753}, {"input": [42.0, 57.0], "expected": 57.000000305902276}, {"input": [42.0, 57.5], "expected": 57.50000018553912}, {"input": [42.0, 58.0], "expected": 58.00000011253517}, {"input": [42.0, 58.5], "expected": 58.50000006825603}, {"input": [42.0, 59.0], "expected": 59.000000041399375}, {"input": [42.0, 59.5], "expected": 59.50000002510999}, {"input": [42.0, 60.0], "expected": 60.00000001522998}, {"input": [42.0, 60.5], "expected": 60.500000009237446}, {"input": [42.0, 61.0], "expected": 61.00000000560279}, {"input": [42.0, 61.5], "expected": 61.50000000339827}, {"input": [42.0, 62.0], "expected": 62.00000000206116}, {"input": [42.0, 62.5], "expected": 62.50000000125015}, {"input": [42.0, 63.0], "expected": 63.000000000758256}, {"input": [42.0, 63.5], "expected": 63.500000000459906}, {"input": [42.0, 64.0], "expected": 64.00000000027894}, {"input": [42.0, 64.5], "expected": 64.5000000001692}, {"input": [42.0, 65.0], "expected": 65.00000000010262}, {"input": [42.0, 65.5], "expected": 65.50000000006224}, {"input": [42.0, 66.0], "expected": 66.00000000003776}, {"input": [42.0, 66.5], "expected": 66.5000000000229}, {"input": [42.0, 67.0], "expected": 67.00000000001388}, {"input": [42.0, 67.5], "expected": 67.50000000000843}, {"input": [42.0, 68.0], "expected": 68.00000000000512}, {"input": [42.0, 68.5], "expected": 68.5000000000031}, {"input": [42.0, 69.0], "expected": 69.00000000000188}, {"input": [42.0, 69.5], "expected": 69.50000000000114}, {"input": [42.0, 70.0], "expected": 70.0000000000007}, {"input": [42.0, 70.5], "expected": 70.50000000000043}, {"input": [42.0, 71.0], "expected": 71.00000000000026}, {"input": [42.0, 71.5], "expected": 71.50000000000016}, {"input": [42.0, 72.0], "expected": 72.0000000000001}, {"input": [42.0, 72.5], "expected": 72.50000000000006}, {"input": [42.0, 73.0], "expected": 73.00000000000003}, {"input": [42.0, 73.5], "expected": 73.50000000000001}, {"input": [42.0, 74.0], "expected": 74.00000000000001}, {"input": [42.0, 74.5], "expected": 74.50000000000001}, {"input": [42.0, 75.0], "expected": 75.0}, {"input": [42.0, 75.5], "expected": 75.5}, {"input": [42.0, 76.0], "expected": 76.0}, {"input": [42.0, 76.5], "expected": 76.5}, {"input": [42.0, 77.0], "expected": 77.0}, {"input": [42.0, 77.5], "expected": 77.5}, {"input": [42.0, 78.0], "expected": 78.0}, {"input": [42.0, 78.5], "expected": 78.5}, {"input": [42.0, 79.0], "expected": 79.0}, {"input": [42.0, 79.5], "expected": 79.5}, {"input": [42.0, 80.0], "expected": 80.0}, {"input": [42.0, 80.5], "expected": 80.5}, {"input": [42.0, 81.0], "expected": 81.0}, {"input": [42.0, 81.5], "expected": 81.5}, {"input": [42.0, 82.0], "expected": 82.0}, {"input": [42.0, 82.5], "expected": 82.5}, {"input": [42.0, 83.0], "expected": 83.0}, {"input": [42.0, 83.5], "expected": 83.5}, {"input": [42.0, 84.0], "expected": 84.0}, {"input": [42.0, 84.5], "expected": 84.5}, {"input": [42.0, 85.0], "expected": 85.0}, {"input": [42.0, 85.5], "expected": 85.5}, {"input": [42.0, 86.0], "expected": 86.0}, {"input": [42.0, 86.5], "expected": 86.5}, {"input": [42.0, 87.0], "expected": 87.0}, {"input": [42.0, 87.5], "expected": 87.5}, {"input": [42.0, 88.0], "expected": 88.0}, {"input": [42.0, 88.5], "expected": 88.5}, {"input": [42.0, 89.0], "expected": 89.0}, {"input": [42.0, 89.5], "expected": 89.5}, {"input": [42.0, 90.0], "expected": 90.0}, {"input": [42.0, 90.5], "expected": 90.5}, {"input": [42.0, 91.0], "expected": 91.0}, {"input": [42.0, 91.5], "expected": 91.5}, {"input": [42.0, 92.0], "expected": 92.0}, {"input": [42.0, 92.5], "expected": 92.5}, {"input": [42.0, 93.0], "expected": 93.0}, {"input": [42.0, 93.5], "expected": 93.5}, {"input": [42.0, 94.0], "expected": 94.0}, {"input": [42.0, 94.5], "expected": 94.5}, {"input": [42.0, 95.0], "expected": 95.0}, {"input": [42.0, 95.5], "expected": 95.5}, {"input": [42.0, 96.0], "expected": 96.0}, {"input": [42.0, 96.5], "expected": 96.5}, {"input": [42.0, 97.0], "expected": 97.0}, {"input": [42.0, 97.5], "expected": 97.5}, {"input": [42.0, 98.0], "expected": 98.0}, {"input": [42.0, 98.5], "expected": 98.5}, {"input": [42.0, 99.0], "expected": 99.0}, {"input": [42.0, 99.5], "expected": 99.5}, {"input": [42.5, -100.0], "expected": 42.5}, {"input": [42.5, -99.5], "expected": 42.5}, {"input": [42.5, -99.0], "expected": 42.5}, {"input": [42.5, -98.5], "expected": 42.5}, {"input": [42.5, -98.0], "expected": 42.5}, {"input": [42.5, -97.5], "expected": 42.5}, {"input": [42.5, -97.0], "expected": 42.5}, {"input": [42.5, -96.5], "expected": 42.5}, {"input": [42.5, -96.0], "expected": 42.5}, {"input": [42.5, -95.5], "expected": 42.5}, {"input": [42.5, -95.0], "expected": 42.5}, {"input": [42.5, -94.5], "expected": 42.5}, {"input": [42.5, -94.0], "expected": 42.5}, {"input": [42.5, -93.5], "expected": 42.5}, {"input": [42.5, -93.0], "expected": 42.5}, {"input": [42.5, -92.5], "expected": 42.5}, {"input": [42.5, -92.0], "expected": 42.5}, {"input": [42.5, -91.5], "expected": 42.5}, {"input": [42.5, -91.0], "expected": 42.5}, {"input": [42.5, -90.5], "expected": 42.5}, {"input": [42.5, -90.0], "expected": 42.5}, {"input": [42.5, -89.5], "expected": 42.5}, {"input": [42.5, -89.0], "expected": 42.5}, {"input": [42.5, -88.5], "expected": 42.5}, {"input": [42.5, -88.0], "expected": 42.5}, {"input": [42.5, -87.5], "expected": 42.5}, {"input": [42.5, -87.0], "expected": 42.5}, {"input": [42.5, -86.5], "expected": 42.5}, {"input": [42.5, -86.0], "expected": 42.5}, {"input": [42.5, -85.5], "expected": 42.5}, {"input": [42.5, -85.0], "expected": 42.5}, {"input": [42.5, -84.5], "expected": 42.5}, {"input": [42.5, -84.0], "expected": 42.5}, {"input": [42.5, -83.5], "expected": 42.5}, {"input": [42.5, -83.0], "expected": 42.5}, {"input": [42.5, -82.5], "expected": 42.5}, {"input": [42.5, -82.0], "expected": 42.5}, {"input": [42.5, -81.5], "expected": 42.5}, {"input": [42.5, -81.0], "expected": 42.5}, {"input": [42.5, -80.5], "expected": 42.5}, {"input": [42.5, -80.0], "expected": 42.5}, {"input": [42.5, -79.5], "expected": 42.5}, {"input": [42.5, -79.0], "expected": 42.5}, {"input": [42.5, -78.5], "expected": 42.5}, {"input": [42.5, -78.0], "expected": 42.5}, {"input": [42.5, -77.5], "expected": 42.5}, {"input": [42.5, -77.0], "expected": 42.5}, {"input": [42.5, -76.5], "expected": 42.5}, {"input": [42.5, -76.0], "expected": 42.5}, {"input": [42.5, -75.5], "expected": 42.5}, {"input": [42.5, -75.0], "expected": 42.5}, {"input": [42.5, -74.5], "expected": 42.5}, {"input": [42.5, -74.0], "expected": 42.5}, {"input": [42.5, -73.5], "expected": 42.5}, {"input": [42.5, -73.0], "expected": 42.5}, {"input": [42.5, -72.5], "expected": 42.5}, {"input": [42.5, -72.0], "expected": 42.5}, {"input": [42.5, -71.5], "expected": 42.5}, {"input": [42.5, -71.0], "expected": 42.5}, {"input": [42.5, -70.5], "expected": 42.5}, {"input": [42.5, -70.0], "expected": 42.5}, {"input": [42.5, -69.5], "expected": 42.5}, {"input": [42.5, -69.0], "expected": 42.5}, {"input": [42.5, -68.5], "expected": 42.5}, {"input": [42.5, -68.0], "expected": 42.5}, {"input": [42.5, -67.5], "expected": 42.5}, {"input": [42.5, -67.0], "expected": 42.5}, {"input": [42.5, -66.5], "expected": 42.5}, {"input": [42.5, -66.0], "expected": 42.5}, {"input": [42.5, -65.5], "expected": 42.5}, {"input": [42.5, -65.0], "expected": 42.5}, {"input": [42.5, -64.5], "expected": 42.5}, {"input": [42.5, -64.0], "expected": 42.5}, {"input": [42.5, -63.5], "expected": 42.5}, {"input": [42.5, -63.0], "expected": 42.5}, {"input": [42.5, -62.5], "expected": 42.5}, {"input": [42.5, -62.0], "expected": 42.5}, {"input": [42.5, -61.5], "expected": 42.5}, {"input": [42.5, -61.0], "expected": 42.5}, {"input": [42.5, -60.5], "expected": 42.5}, {"input": [42.5, -60.0], "expected": 42.5}, {"input": [42.5, -59.5], "expected": 42.5}, {"input": [42.5, -59.0], "expected": 42.5}, {"input": [42.5, -58.5], "expected": 42.5}, {"input": [42.5, -58.0], "expected": 42.5}, {"input": [42.5, -57.5], "expected": 42.5}, {"input": [42.5, -57.0], "expected": 42.5}, {"input": [42.5, -56.5], "expected": 42.5}, {"input": [42.5, -56.0], "expected": 42.5}, {"input": [42.5, -55.5], "expected": 42.5}, {"input": [42.5, -55.0], "expected": 42.5}, {"input": [42.5, -54.5], "expected": 42.5}, {"input": [42.5, -54.0], "expected": 42.5}, {"input": [42.5, -53.5], "expected": 42.5}, {"input": [42.5, -53.0], "expected": 42.5}, {"input": [42.5, -52.5], "expected": 42.5}, {"input": [42.5, -52.0], "expected": 42.5}, {"input": [42.5, -51.5], "expected": 42.5}, {"input": [42.5, -51.0], "expected": 42.5}, {"input": [42.5, -50.5], "expected": 42.5}, {"input": [42.5, -50.0], "expected": 42.5}, {"input": [42.5, -49.5], "expected": 42.5}, {"input": [42.5, -49.0], "expected": 42.5}, {"input": [42.5, -48.5], "expected": 42.5}, {"input": [42.5, -48.0], "expected": 42.5}, {"input": [42.5, -47.5], "expected": 42.5}, {"input": [42.5, -47.0], "expected": 42.5}, {"input": [42.5, -46.5], "expected": 42.5}, {"input": [42.5, -46.0], "expected": 42.5}, {"input": [42.5, -45.5], "expected": 42.5}, {"input": [42.5, -45.0], "expected": 42.5}, {"input": [42.5, -44.5], "expected": 42.5}, {"input": [42.5, -44.0], "expected": 42.5}, {"input": [42.5, -43.5], "expected": 42.5}, {"input": [42.5, -43.0], "expected": 42.5}, {"input": [42.5, -42.5], "expected": 42.5}, {"input": [42.5, -42.0], "expected": 42.5}, {"input": [42.5, -41.5], "expected": 42.5}, {"input": [42.5, -41.0], "expected": 42.5}, {"input": [42.5, -40.5], "expected": 42.5}, {"input": [42.5, -40.0], "expected": 42.5}, {"input": [42.5, -39.5], "expected": 42.5}, {"input": [42.5, -39.0], "expected": 42.5}, {"input": [42.5, -38.5], "expected": 42.5}, {"input": [42.5, -38.0], "expected": 42.5}, {"input": [42.5, -37.5], "expected": 42.5}, {"input": [42.5, -37.0], "expected": 42.5}, {"input": [42.5, -36.5], "expected": 42.5}, {"input": [42.5, -36.0], "expected": 42.5}, {"input": [42.5, -35.5], "expected": 42.5}, {"input": [42.5, -35.0], "expected": 42.5}, {"input": [42.5, -34.5], "expected": 42.5}, {"input": [42.5, -34.0], "expected": 42.5}, {"input": [42.5, -33.5], "expected": 42.5}, {"input": [42.5, -33.0], "expected": 42.5}, {"input": [42.5, -32.5], "expected": 42.5}, {"input": [42.5, -32.0], "expected": 42.5}, {"input": [42.5, -31.5], "expected": 42.5}, {"input": [42.5, -31.0], "expected": 42.5}, {"input": [42.5, -30.5], "expected": 42.5}, {"input": [42.5, -30.0], "expected": 42.5}, {"input": [42.5, -29.5], "expected": 42.5}, {"input": [42.5, -29.0], "expected": 42.5}, {"input": [42.5, -28.5], "expected": 42.5}, {"input": [42.5, -28.0], "expected": 42.5}, {"input": [42.5, -27.5], "expected": 42.5}, {"input": [42.5, -27.0], "expected": 42.5}, {"input": [42.5, -26.5], "expected": 42.5}, {"input": [42.5, -26.0], "expected": 42.5}, {"input": [42.5, -25.5], "expected": 42.5}, {"input": [42.5, -25.0], "expected": 42.5}, {"input": [42.5, -24.5], "expected": 42.5}, {"input": [42.5, -24.0], "expected": 42.5}, {"input": [42.5, -23.5], "expected": 42.5}, {"input": [42.5, -23.0], "expected": 42.5}, {"input": [42.5, -22.5], "expected": 42.5}, {"input": [42.5, -22.0], "expected": 42.5}, {"input": [42.5, -21.5], "expected": 42.5}, {"input": [42.5, -21.0], "expected": 42.5}, {"input": [42.5, -20.5], "expected": 42.5}, {"input": [42.5, -20.0], "expected": 42.5}, {"input": [42.5, -19.5], "expected": 42.5}, {"input": [42.5, -19.0], "expected": 42.5}, {"input": [42.5, -18.5], "expected": 42.5}, {"input": [42.5, -18.0], "expected": 42.5}, {"input": [42.5, -17.5], "expected": 42.5}, {"input": [42.5, -17.0], "expected": 42.5}, {"input": [42.5, -16.5], "expected": 42.5}, {"input": [42.5, -16.0], "expected": 42.5}, {"input": [42.5, -15.5], "expected": 42.5}, {"input": [42.5, -15.0], "expected": 42.5}, {"input": [42.5, -14.5], "expected": 42.5}, {"input": [42.5, -14.0], "expected": 42.5}, {"input": [42.5, -13.5], "expected": 42.5}, {"input": [42.5, -13.0], "expected": 42.5}, {"input": [42.5, -12.5], "expected": 42.5}, {"input": [42.5, -12.0], "expected": 42.5}, {"input": [42.5, -11.5], "expected": 42.5}, {"input": [42.5, -11.0], "expected": 42.5}, {"input": [42.5, -10.5], "expected": 42.5}, {"input": [42.5, -10.0], "expected": 42.5}, {"input": [42.5, -9.5], "expected": 42.5}, {"input": [42.5, -9.0], "expected": 42.5}, {"input": [42.5, -8.5], "expected": 42.5}, {"input": [42.5, -8.0], "expected": 42.5}, {"input": [42.5, -7.5], "expected": 42.5}, {"input": [42.5, -7.0], "expected": 42.5}, {"input": [42.5, -6.5], "expected": 42.5}, {"input": [42.5, -6.0], "expected": 42.5}, {"input": [42.5, -5.5], "expected": 42.5}, {"input": [42.5, -5.0], "expected": 42.5}, {"input": [42.5, -4.5], "expected": 42.5}, {"input": [42.5, -4.0], "expected": 42.5}, {"input": [42.5, -3.5], "expected": 42.5}, {"input": [42.5, -3.0], "expected": 42.5}, {"input": [42.5, -2.5], "expected": 42.5}, {"input": [42.5, -2.0], "expected": 42.5}, {"input": [42.5, -1.5], "expected": 42.5}, {"input": [42.5, -1.0], "expected": 42.5}, {"input": [42.5, -0.5], "expected": 42.5}, {"input": [42.5, 0.0], "expected": 42.5}, {"input": [42.5, 0.5], "expected": 42.5}, {"input": [42.5, 1.0], "expected": 42.5}, {"input": [42.5, 1.5], "expected": 42.5}, {"input": [42.5, 2.0], "expected": 42.5}, {"input": [42.5, 2.5], "expected": 42.5}, {"input": [42.5, 3.0], "expected": 42.5}, {"input": [42.5, 3.5], "expected": 42.5}, {"input": [42.5, 4.0], "expected": 42.5}, {"input": [42.5, 4.5], "expected": 42.5}, {"input": [42.5, 5.0], "expected": 42.5}, {"input": [42.5, 5.5], "expected": 42.5}, {"input": [42.5, 6.0], "expected": 42.5}, {"input": [42.5, 6.5], "expected": 42.5}, {"input": [42.5, 7.0], "expected": 42.5}, {"input": [42.5, 7.5], "expected": 42.5}, {"input": [42.5, 8.0], "expected": 42.5}, {"input": [42.5, 8.5], "expected": 42.5}, {"input": [42.5, 9.0], "expected": 42.5}, {"input": [42.5, 9.5], "expected": 42.50000000000001}, {"input": [42.5, 10.0], "expected": 42.50000000000001}, {"input": [42.5, 10.5], "expected": 42.500000000000014}, {"input": [42.5, 11.0], "expected": 42.50000000000002}, {"input": [42.5, 11.5], "expected": 42.500000000000036}, {"input": [42.5, 12.0], "expected": 42.50000000000006}, {"input": [42.5, 12.5], "expected": 42.50000000000009}, {"input": [42.5, 13.0], "expected": 42.500000000000156}, {"input": [42.5, 13.5], "expected": 42.500000000000256}, {"input": [42.5, 14.0], "expected": 42.50000000000042}, {"input": [42.5, 14.5], "expected": 42.50000000000069}, {"input": [42.5, 15.0], "expected": 42.50000000000114}, {"input": [42.5, 15.5], "expected": 42.50000000000188}, {"input": [42.5, 16.0], "expected": 42.5000000000031}, {"input": [42.5, 16.5], "expected": 42.50000000000511}, {"input": [42.5, 17.0], "expected": 42.50000000000842}, {"input": [42.5, 17.5], "expected": 42.50000000001389}, {"input": [42.5, 18.0], "expected": 42.5000000000229}, {"input": [42.5, 18.5], "expected": 42.50000000003775}, {"input": [42.5, 19.0], "expected": 42.50000000006224}, {"input": [42.5, 19.5], "expected": 42.50000000010262}, {"input": [42.5, 20.0], "expected": 42.50000000016919}, {"input": [42.5, 20.5], "expected": 42.500000000278945}, {"input": [42.5, 21.0], "expected": 42.500000000459906}, {"input": [42.5, 21.5], "expected": 42.500000000758256}, {"input": [42.5, 22.0], "expected": 42.50000000125015}, {"input": [42.5, 22.5], "expected": 42.50000000206116}, {"input": [42.5, 23.0], "expected": 42.50000000339827}, {"input": [42.5, 23.5], "expected": 42.50000000560279}, {"input": [42.5, 24.0], "expected": 42.500000009237446}, {"input": [42.5, 24.5], "expected": 42.50000001522998}, {"input": [42.5, 25.0], "expected": 42.50000002510999}, {"input": [42.5, 25.5], "expected": 42.500000041399375}, {"input": [42.5, 26.0], "expected": 42.50000006825603}, {"input": [42.5, 26.5], "expected": 42.50000011253517}, {"input": [42.5, 27.0], "expected": 42.50000018553912}, {"input": [42.5, 27.5], "expected": 42.500000305902276}, {"input": [42.5, 28.0], "expected": 42.50000050434753}, {"input": [42.5, 28.5], "expected": 42.500000831528375}, {"input": [42.5, 29.0], "expected": 42.500001370958145}, {"input": [42.5, 29.5], "expected": 42.50000226032685}, {"input": [42.5, 30.0], "expected": 42.50000372664623}, {"input": [42.5, 30.5], "expected": 42.50000614419348}, {"input": [42.5, 31.0], "expected": 42.50001013004229}, {"input": [42.5, 31.5], "expected": 42.50001670156132}, {"input": [42.5, 32.0], "expected": 42.50002753607023}, {"input": [42.5, 32.5], "expected": 42.50004539889922}, {"input": [42.5, 33.0], "expected": 42.50007484902863}, {"input": [42.5, 33.5], "expected": 42.50012340218972}, {"input": [42.5, 34.0], "expected": 42.50020344767213}, {"input": [42.5, 34.5], "expected": 42.5003354063729}, {"input": [42.5, 35.0], "expected": 42.50055293147536}, {"input": [42.5, 35.5], "expected": 42.50091146645377}, {"input": [42.5, 36.0], "expected": 42.50150231015976}, {"input": [42.5, 36.5], "expected": 42.50247568513773}, {"input": [42.5, 37.0], "expected": 42.50407844327057}, {"input": [42.5, 37.5], "expected": 42.50671534848912}, {"input": [42.5, 38.0], "expected": 42.5110477448486}, {"input": [42.5, 38.5], "expected": 42.51814992791781}, {"input": [42.5, 39.0], "expected": 42.52975041827262}, {"input": [42.5, 39.5], "expected": 42.548587351573744}, {"input": [42.5, 40.0], "expected": 42.57888973429255}, {"input": [42.5, 40.5], "expected": 42.62692801104297}, {"input": [42.5, 41.0], "expected": 42.70141327798275}, {"input": [42.5, 41.5], "expected": 42.81326168751822}, {"input": [42.5, 42.0], "expected": 42.97407698418011}, {"input": [42.5, 42.5], "expected": 43.19314718055995}, {"input": [42.5, 43.0], "expected": 43.47407698418011}, {"input": [42.5, 43.5], "expected": 43.81326168751822}, {"input": [42.5, 44.0], "expected": 44.20141327798275}, {"input": [42.5, 44.5], "expected": 44.62692801104297}, {"input": [42.5, 45.0], "expected": 45.07888973429255}, {"input": [42.5, 45.5], "expected": 45.548587351573744}, {"input": [42.5, 46.0], "expected": 46.02975041827262}, {"input": [42.5, 46.5], "expected": 46.51814992791781}, {"input": [42.5, 47.0], "expected": 47.0110477448486}, {"input": [42.5, 47.5], "expected": 47.50671534848912}, {"input": [42.5, 48.0], "expected": 48.00407844327057}, {"input": [42.5, 48.5], "expected": 48.50247568513773}, {"input": [42.5, 49.0], "expected": 49.00150231015976}, {"input": [42.5, 49.5], "expected": 49.50091146645377}, {"input": [42.5, 50.0], "expected": 50.00055293147536}, {"input": [42.5, 50.5], "expected": 50.5003354063729}, {"input": [42.5, 51.0], "expected": 51.00020344767213}, {"input": [42.5, 51.5], "expected": 51.50012340218972}, {"input": [42.5, 52.0], "expected": 52.00007484902863}, {"input": [42.5, 52.5], "expected": 52.50004539889922}, {"input": [42.5, 53.0], "expected": 53.00002753607023}, {"input": [42.5, 53.5], "expected": 53.50001670156132}, {"input": [42.5, 54.0], "expected": 54.00001013004229}, {"input": [42.5, 54.5], "expected": 54.50000614419348}, {"input": [42.5, 55.0], "expected": 55.00000372664623}, {"input": [42.5, 55.5], "expected": 55.50000226032685}, {"input": [42.5, 56.0], "expected": 56.000001370958145}, {"input": [42.5, 56.5], "expected": 56.500000831528375}, {"input": [42.5, 57.0], "expected": 57.00000050434753}, {"input": [42.5, 57.5], "expected": 57.500000305902276}, {"input": [42.5, 58.0], "expected": 58.00000018553912}, {"input": [42.5, 58.5], "expected": 58.50000011253517}, {"input": [42.5, 59.0], "expected": 59.00000006825603}, {"input": [42.5, 59.5], "expected": 59.500000041399375}, {"input": [42.5, 60.0], "expected": 60.00000002510999}, {"input": [42.5, 60.5], "expected": 60.50000001522998}, {"input": [42.5, 61.0], "expected": 61.000000009237446}, {"input": [42.5, 61.5], "expected": 61.50000000560279}, {"input": [42.5, 62.0], "expected": 62.00000000339827}, {"input": [42.5, 62.5], "expected": 62.50000000206116}, {"input": [42.5, 63.0], "expected": 63.00000000125015}, {"input": [42.5, 63.5], "expected": 63.500000000758256}, {"input": [42.5, 64.0], "expected": 64.0000000004599}, {"input": [42.5, 64.5], "expected": 64.50000000027894}, {"input": [42.5, 65.0], "expected": 65.0000000001692}, {"input": [42.5, 65.5], "expected": 65.50000000010262}, {"input": [42.5, 66.0], "expected": 66.00000000006224}, {"input": [42.5, 66.5], "expected": 66.50000000003776}, {"input": [42.5, 67.0], "expected": 67.0000000000229}, {"input": [42.5, 67.5], "expected": 67.50000000001388}, {"input": [42.5, 68.0], "expected": 68.00000000000843}, {"input": [42.5, 68.5], "expected": 68.50000000000512}, {"input": [42.5, 69.0], "expected": 69.0000000000031}, {"input": [42.5, 69.5], "expected": 69.50000000000188}, {"input": [42.5, 70.0], "expected": 70.00000000000114}, {"input": [42.5, 70.5], "expected": 70.5000000000007}, {"input": [42.5, 71.0], "expected": 71.00000000000043}, {"input": [42.5, 71.5], "expected": 71.50000000000026}, {"input": [42.5, 72.0], "expected": 72.00000000000016}, {"input": [42.5, 72.5], "expected": 72.5000000000001}, {"input": [42.5, 73.0], "expected": 73.00000000000006}, {"input": [42.5, 73.5], "expected": 73.50000000000003}, {"input": [42.5, 74.0], "expected": 74.00000000000001}, {"input": [42.5, 74.5], "expected": 74.50000000000001}, {"input": [42.5, 75.0], "expected": 75.00000000000001}, {"input": [42.5, 75.5], "expected": 75.5}, {"input": [42.5, 76.0], "expected": 76.0}, {"input": [42.5, 76.5], "expected": 76.5}, {"input": [42.5, 77.0], "expected": 77.0}, {"input": [42.5, 77.5], "expected": 77.5}, {"input": [42.5, 78.0], "expected": 78.0}, {"input": [42.5, 78.5], "expected": 78.5}, {"input": [42.5, 79.0], "expected": 79.0}, {"input": [42.5, 79.5], "expected": 79.5}, {"input": [42.5, 80.0], "expected": 80.0}, {"input": [42.5, 80.5], "expected": 80.5}, {"input": [42.5, 81.0], "expected": 81.0}, {"input": [42.5, 81.5], "expected": 81.5}, {"input": [42.5, 82.0], "expected": 82.0}, {"input": [42.5, 82.5], "expected": 82.5}, {"input": [42.5, 83.0], "expected": 83.0}, {"input": [42.5, 83.5], "expected": 83.5}, {"input": [42.5, 84.0], "expected": 84.0}, {"input": [42.5, 84.5], "expected": 84.5}, {"input": [42.5, 85.0], "expected": 85.0}, {"input": [42.5, 85.5], "expected": 85.5}, {"input": [42.5, 86.0], "expected": 86.0}, {"input": [42.5, 86.5], "expected": 86.5}, {"input": [42.5, 87.0], "expected": 87.0}, {"input": [42.5, 87.5], "expected": 87.5}, {"input": [42.5, 88.0], "expected": 88.0}, {"input": [42.5, 88.5], "expected": 88.5}, {"input": [42.5, 89.0], "expected": 89.0}, {"input": [42.5, 89.5], "expected": 89.5}, {"input": [42.5, 90.0], "expected": 90.0}, {"input": [42.5, 90.5], "expected": 90.5}, {"input": [42.5, 91.0], "expected": 91.0}, {"input": [42.5, 91.5], "expected": 91.5}, {"input": [42.5, 92.0], "expected": 92.0}, {"input": [42.5, 92.5], "expected": 92.5}, {"input": [42.5, 93.0], "expected": 93.0}, {"input": [42.5, 93.5], "expected": 93.5}, {"input": [42.5, 94.0], "expected": 94.0}, {"input": [42.5, 94.5], "expected": 94.5}, {"input": [42.5, 95.0], "expected": 95.0}, {"input": [42.5, 95.5], "expected": 95.5}, {"input": [42.5, 96.0], "expected": 96.0}, {"input": [42.5, 96.5], "expected": 96.5}, {"input": [42.5, 97.0], "expected": 97.0}, {"input": [42.5, 97.5], "expected": 97.5}, {"input": [42.5, 98.0], "expected": 98.0}, {"input": [42.5, 98.5], "expected": 98.5}, {"input": [42.5, 99.0], "expected": 99.0}, {"input": [42.5, 99.5], "expected": 99.5}, {"input": [43.0, -100.0], "expected": 43.0}, {"input": [43.0, -99.5], "expected": 43.0}, {"input": [43.0, -99.0], "expected": 43.0}, {"input": [43.0, -98.5], "expected": 43.0}, {"input": [43.0, -98.0], "expected": 43.0}, {"input": [43.0, -97.5], "expected": 43.0}, {"input": [43.0, -97.0], "expected": 43.0}, {"input": [43.0, -96.5], "expected": 43.0}, {"input": [43.0, -96.0], "expected": 43.0}, {"input": [43.0, -95.5], "expected": 43.0}, {"input": [43.0, -95.0], "expected": 43.0}, {"input": [43.0, -94.5], "expected": 43.0}, {"input": [43.0, -94.0], "expected": 43.0}, {"input": [43.0, -93.5], "expected": 43.0}, {"input": [43.0, -93.0], "expected": 43.0}, {"input": [43.0, -92.5], "expected": 43.0}, {"input": [43.0, -92.0], "expected": 43.0}, {"input": [43.0, -91.5], "expected": 43.0}, {"input": [43.0, -91.0], "expected": 43.0}, {"input": [43.0, -90.5], "expected": 43.0}, {"input": [43.0, -90.0], "expected": 43.0}, {"input": [43.0, -89.5], "expected": 43.0}, {"input": [43.0, -89.0], "expected": 43.0}, {"input": [43.0, -88.5], "expected": 43.0}, {"input": [43.0, -88.0], "expected": 43.0}, {"input": [43.0, -87.5], "expected": 43.0}, {"input": [43.0, -87.0], "expected": 43.0}, {"input": [43.0, -86.5], "expected": 43.0}, {"input": [43.0, -86.0], "expected": 43.0}, {"input": [43.0, -85.5], "expected": 43.0}, {"input": [43.0, -85.0], "expected": 43.0}, {"input": [43.0, -84.5], "expected": 43.0}, {"input": [43.0, -84.0], "expected": 43.0}, {"input": [43.0, -83.5], "expected": 43.0}, {"input": [43.0, -83.0], "expected": 43.0}, {"input": [43.0, -82.5], "expected": 43.0}, {"input": [43.0, -82.0], "expected": 43.0}, {"input": [43.0, -81.5], "expected": 43.0}, {"input": [43.0, -81.0], "expected": 43.0}, {"input": [43.0, -80.5], "expected": 43.0}, {"input": [43.0, -80.0], "expected": 43.0}, {"input": [43.0, -79.5], "expected": 43.0}, {"input": [43.0, -79.0], "expected": 43.0}, {"input": [43.0, -78.5], "expected": 43.0}, {"input": [43.0, -78.0], "expected": 43.0}, {"input": [43.0, -77.5], "expected": 43.0}, {"input": [43.0, -77.0], "expected": 43.0}, {"input": [43.0, -76.5], "expected": 43.0}, {"input": [43.0, -76.0], "expected": 43.0}, {"input": [43.0, -75.5], "expected": 43.0}, {"input": [43.0, -75.0], "expected": 43.0}, {"input": [43.0, -74.5], "expected": 43.0}, {"input": [43.0, -74.0], "expected": 43.0}, {"input": [43.0, -73.5], "expected": 43.0}, {"input": [43.0, -73.0], "expected": 43.0}, {"input": [43.0, -72.5], "expected": 43.0}, {"input": [43.0, -72.0], "expected": 43.0}, {"input": [43.0, -71.5], "expected": 43.0}, {"input": [43.0, -71.0], "expected": 43.0}, {"input": [43.0, -70.5], "expected": 43.0}, {"input": [43.0, -70.0], "expected": 43.0}, {"input": [43.0, -69.5], "expected": 43.0}, {"input": [43.0, -69.0], "expected": 43.0}, {"input": [43.0, -68.5], "expected": 43.0}, {"input": [43.0, -68.0], "expected": 43.0}, {"input": [43.0, -67.5], "expected": 43.0}, {"input": [43.0, -67.0], "expected": 43.0}, {"input": [43.0, -66.5], "expected": 43.0}, {"input": [43.0, -66.0], "expected": 43.0}, {"input": [43.0, -65.5], "expected": 43.0}, {"input": [43.0, -65.0], "expected": 43.0}, {"input": [43.0, -64.5], "expected": 43.0}, {"input": [43.0, -64.0], "expected": 43.0}, {"input": [43.0, -63.5], "expected": 43.0}, {"input": [43.0, -63.0], "expected": 43.0}, {"input": [43.0, -62.5], "expected": 43.0}, {"input": [43.0, -62.0], "expected": 43.0}, {"input": [43.0, -61.5], "expected": 43.0}, {"input": [43.0, -61.0], "expected": 43.0}, {"input": [43.0, -60.5], "expected": 43.0}, {"input": [43.0, -60.0], "expected": 43.0}, {"input": [43.0, -59.5], "expected": 43.0}, {"input": [43.0, -59.0], "expected": 43.0}, {"input": [43.0, -58.5], "expected": 43.0}, {"input": [43.0, -58.0], "expected": 43.0}, {"input": [43.0, -57.5], "expected": 43.0}, {"input": [43.0, -57.0], "expected": 43.0}, {"input": [43.0, -56.5], "expected": 43.0}, {"input": [43.0, -56.0], "expected": 43.0}, {"input": [43.0, -55.5], "expected": 43.0}, {"input": [43.0, -55.0], "expected": 43.0}, {"input": [43.0, -54.5], "expected": 43.0}, {"input": [43.0, -54.0], "expected": 43.0}, {"input": [43.0, -53.5], "expected": 43.0}, {"input": [43.0, -53.0], "expected": 43.0}, {"input": [43.0, -52.5], "expected": 43.0}, {"input": [43.0, -52.0], "expected": 43.0}, {"input": [43.0, -51.5], "expected": 43.0}, {"input": [43.0, -51.0], "expected": 43.0}, {"input": [43.0, -50.5], "expected": 43.0}, {"input": [43.0, -50.0], "expected": 43.0}, {"input": [43.0, -49.5], "expected": 43.0}, {"input": [43.0, -49.0], "expected": 43.0}, {"input": [43.0, -48.5], "expected": 43.0}, {"input": [43.0, -48.0], "expected": 43.0}, {"input": [43.0, -47.5], "expected": 43.0}, {"input": [43.0, -47.0], "expected": 43.0}, {"input": [43.0, -46.5], "expected": 43.0}, {"input": [43.0, -46.0], "expected": 43.0}, {"input": [43.0, -45.5], "expected": 43.0}, {"input": [43.0, -45.0], "expected": 43.0}, {"input": [43.0, -44.5], "expected": 43.0}, {"input": [43.0, -44.0], "expected": 43.0}, {"input": [43.0, -43.5], "expected": 43.0}, {"input": [43.0, -43.0], "expected": 43.0}, {"input": [43.0, -42.5], "expected": 43.0}, {"input": [43.0, -42.0], "expected": 43.0}, {"input": [43.0, -41.5], "expected": 43.0}, {"input": [43.0, -41.0], "expected": 43.0}, {"input": [43.0, -40.5], "expected": 43.0}, {"input": [43.0, -40.0], "expected": 43.0}, {"input": [43.0, -39.5], "expected": 43.0}, {"input": [43.0, -39.0], "expected": 43.0}, {"input": [43.0, -38.5], "expected": 43.0}, {"input": [43.0, -38.0], "expected": 43.0}, {"input": [43.0, -37.5], "expected": 43.0}, {"input": [43.0, -37.0], "expected": 43.0}, {"input": [43.0, -36.5], "expected": 43.0}, {"input": [43.0, -36.0], "expected": 43.0}, {"input": [43.0, -35.5], "expected": 43.0}, {"input": [43.0, -35.0], "expected": 43.0}, {"input": [43.0, -34.5], "expected": 43.0}, {"input": [43.0, -34.0], "expected": 43.0}, {"input": [43.0, -33.5], "expected": 43.0}, {"input": [43.0, -33.0], "expected": 43.0}, {"input": [43.0, -32.5], "expected": 43.0}, {"input": [43.0, -32.0], "expected": 43.0}, {"input": [43.0, -31.5], "expected": 43.0}, {"input": [43.0, -31.0], "expected": 43.0}, {"input": [43.0, -30.5], "expected": 43.0}, {"input": [43.0, -30.0], "expected": 43.0}, {"input": [43.0, -29.5], "expected": 43.0}, {"input": [43.0, -29.0], "expected": 43.0}, {"input": [43.0, -28.5], "expected": 43.0}, {"input": [43.0, -28.0], "expected": 43.0}, {"input": [43.0, -27.5], "expected": 43.0}, {"input": [43.0, -27.0], "expected": 43.0}, {"input": [43.0, -26.5], "expected": 43.0}, {"input": [43.0, -26.0], "expected": 43.0}, {"input": [43.0, -25.5], "expected": 43.0}, {"input": [43.0, -25.0], "expected": 43.0}, {"input": [43.0, -24.5], "expected": 43.0}, {"input": [43.0, -24.0], "expected": 43.0}, {"input": [43.0, -23.5], "expected": 43.0}, {"input": [43.0, -23.0], "expected": 43.0}, {"input": [43.0, -22.5], "expected": 43.0}, {"input": [43.0, -22.0], "expected": 43.0}, {"input": [43.0, -21.5], "expected": 43.0}, {"input": [43.0, -21.0], "expected": 43.0}, {"input": [43.0, -20.5], "expected": 43.0}, {"input": [43.0, -20.0], "expected": 43.0}, {"input": [43.0, -19.5], "expected": 43.0}, {"input": [43.0, -19.0], "expected": 43.0}, {"input": [43.0, -18.5], "expected": 43.0}, {"input": [43.0, -18.0], "expected": 43.0}, {"input": [43.0, -17.5], "expected": 43.0}, {"input": [43.0, -17.0], "expected": 43.0}, {"input": [43.0, -16.5], "expected": 43.0}, {"input": [43.0, -16.0], "expected": 43.0}, {"input": [43.0, -15.5], "expected": 43.0}, {"input": [43.0, -15.0], "expected": 43.0}, {"input": [43.0, -14.5], "expected": 43.0}, {"input": [43.0, -14.0], "expected": 43.0}, {"input": [43.0, -13.5], "expected": 43.0}, {"input": [43.0, -13.0], "expected": 43.0}, {"input": [43.0, -12.5], "expected": 43.0}, {"input": [43.0, -12.0], "expected": 43.0}, {"input": [43.0, -11.5], "expected": 43.0}, {"input": [43.0, -11.0], "expected": 43.0}, {"input": [43.0, -10.5], "expected": 43.0}, {"input": [43.0, -10.0], "expected": 43.0}, {"input": [43.0, -9.5], "expected": 43.0}, {"input": [43.0, -9.0], "expected": 43.0}, {"input": [43.0, -8.5], "expected": 43.0}, {"input": [43.0, -8.0], "expected": 43.0}, {"input": [43.0, -7.5], "expected": 43.0}, {"input": [43.0, -7.0], "expected": 43.0}, {"input": [43.0, -6.5], "expected": 43.0}, {"input": [43.0, -6.0], "expected": 43.0}, {"input": [43.0, -5.5], "expected": 43.0}, {"input": [43.0, -5.0], "expected": 43.0}, {"input": [43.0, -4.5], "expected": 43.0}, {"input": [43.0, -4.0], "expected": 43.0}, {"input": [43.0, -3.5], "expected": 43.0}, {"input": [43.0, -3.0], "expected": 43.0}, {"input": [43.0, -2.5], "expected": 43.0}, {"input": [43.0, -2.0], "expected": 43.0}, {"input": [43.0, -1.5], "expected": 43.0}, {"input": [43.0, -1.0], "expected": 43.0}, {"input": [43.0, -0.5], "expected": 43.0}, {"input": [43.0, 0.0], "expected": 43.0}, {"input": [43.0, 0.5], "expected": 43.0}, {"input": [43.0, 1.0], "expected": 43.0}, {"input": [43.0, 1.5], "expected": 43.0}, {"input": [43.0, 2.0], "expected": 43.0}, {"input": [43.0, 2.5], "expected": 43.0}, {"input": [43.0, 3.0], "expected": 43.0}, {"input": [43.0, 3.5], "expected": 43.0}, {"input": [43.0, 4.0], "expected": 43.0}, {"input": [43.0, 4.5], "expected": 43.0}, {"input": [43.0, 5.0], "expected": 43.0}, {"input": [43.0, 5.5], "expected": 43.0}, {"input": [43.0, 6.0], "expected": 43.0}, {"input": [43.0, 6.5], "expected": 43.0}, {"input": [43.0, 7.0], "expected": 43.0}, {"input": [43.0, 7.5], "expected": 43.0}, {"input": [43.0, 8.0], "expected": 43.0}, {"input": [43.0, 8.5], "expected": 43.0}, {"input": [43.0, 9.0], "expected": 43.0}, {"input": [43.0, 9.5], "expected": 43.0}, {"input": [43.0, 10.0], "expected": 43.00000000000001}, {"input": [43.0, 10.5], "expected": 43.00000000000001}, {"input": [43.0, 11.0], "expected": 43.000000000000014}, {"input": [43.0, 11.5], "expected": 43.00000000000002}, {"input": [43.0, 12.0], "expected": 43.000000000000036}, {"input": [43.0, 12.5], "expected": 43.00000000000006}, {"input": [43.0, 13.0], "expected": 43.00000000000009}, {"input": [43.0, 13.5], "expected": 43.000000000000156}, {"input": [43.0, 14.0], "expected": 43.000000000000256}, {"input": [43.0, 14.5], "expected": 43.00000000000042}, {"input": [43.0, 15.0], "expected": 43.00000000000069}, {"input": [43.0, 15.5], "expected": 43.00000000000114}, {"input": [43.0, 16.0], "expected": 43.00000000000188}, {"input": [43.0, 16.5], "expected": 43.0000000000031}, {"input": [43.0, 17.0], "expected": 43.00000000000511}, {"input": [43.0, 17.5], "expected": 43.00000000000842}, {"input": [43.0, 18.0], "expected": 43.00000000001389}, {"input": [43.0, 18.5], "expected": 43.0000000000229}, {"input": [43.0, 19.0], "expected": 43.00000000003775}, {"input": [43.0, 19.5], "expected": 43.00000000006224}, {"input": [43.0, 20.0], "expected": 43.00000000010262}, {"input": [43.0, 20.5], "expected": 43.00000000016919}, {"input": [43.0, 21.0], "expected": 43.000000000278945}, {"input": [43.0, 21.5], "expected": 43.000000000459906}, {"input": [43.0, 22.0], "expected": 43.000000000758256}, {"input": [43.0, 22.5], "expected": 43.00000000125015}, {"input": [43.0, 23.0], "expected": 43.00000000206116}, {"input": [43.0, 23.5], "expected": 43.00000000339827}, {"input": [43.0, 24.0], "expected": 43.00000000560279}, {"input": [43.0, 24.5], "expected": 43.000000009237446}, {"input": [43.0, 25.0], "expected": 43.00000001522998}, {"input": [43.0, 25.5], "expected": 43.00000002510999}, {"input": [43.0, 26.0], "expected": 43.000000041399375}, {"input": [43.0, 26.5], "expected": 43.00000006825603}, {"input": [43.0, 27.0], "expected": 43.00000011253517}, {"input": [43.0, 27.5], "expected": 43.00000018553912}, {"input": [43.0, 28.0], "expected": 43.000000305902276}, {"input": [43.0, 28.5], "expected": 43.00000050434753}, {"input": [43.0, 29.0], "expected": 43.000000831528375}, {"input": [43.0, 29.5], "expected": 43.000001370958145}, {"input": [43.0, 30.0], "expected": 43.00000226032685}, {"input": [43.0, 30.5], "expected": 43.00000372664623}, {"input": [43.0, 31.0], "expected": 43.00000614419348}, {"input": [43.0, 31.5], "expected": 43.00001013004229}, {"input": [43.0, 32.0], "expected": 43.00001670156132}, {"input": [43.0, 32.5], "expected": 43.00002753607023}, {"input": [43.0, 33.0], "expected": 43.00004539889922}, {"input": [43.0, 33.5], "expected": 43.00007484902863}, {"input": [43.0, 34.0], "expected": 43.00012340218972}, {"input": [43.0, 34.5], "expected": 43.00020344767213}, {"input": [43.0, 35.0], "expected": 43.0003354063729}, {"input": [43.0, 35.5], "expected": 43.00055293147536}, {"input": [43.0, 36.0], "expected": 43.00091146645377}, {"input": [43.0, 36.5], "expected": 43.00150231015976}, {"input": [43.0, 37.0], "expected": 43.00247568513773}, {"input": [43.0, 37.5], "expected": 43.00407844327057}, {"input": [43.0, 38.0], "expected": 43.00671534848912}, {"input": [43.0, 38.5], "expected": 43.0110477448486}, {"input": [43.0, 39.0], "expected": 43.01814992791781}, {"input": [43.0, 39.5], "expected": 43.02975041827262}, {"input": [43.0, 40.0], "expected": 43.048587351573744}, {"input": [43.0, 40.5], "expected": 43.07888973429255}, {"input": [43.0, 41.0], "expected": 43.12692801104297}, {"input": [43.0, 41.5], "expected": 43.20141327798275}, {"input": [43.0, 42.0], "expected": 43.31326168751822}, {"input": [43.0, 42.5], "expected": 43.47407698418011}, {"input": [43.0, 43.0], "expected": 43.69314718055995}, {"input": [43.0, 43.5], "expected": 43.97407698418011}, {"input": [43.0, 44.0], "expected": 44.31326168751822}, {"input": [43.0, 44.5], "expected": 44.70141327798275}, {"input": [43.0, 45.0], "expected": 45.12692801104297}, {"input": [43.0, 45.5], "expected": 45.57888973429255}, {"input": [43.0, 46.0], "expected": 46.048587351573744}, {"input": [43.0, 46.5], "expected": 46.52975041827262}, {"input": [43.0, 47.0], "expected": 47.01814992791781}, {"input": [43.0, 47.5], "expected": 47.5110477448486}, {"input": [43.0, 48.0], "expected": 48.00671534848912}, {"input": [43.0, 48.5], "expected": 48.50407844327057}, {"input": [43.0, 49.0], "expected": 49.00247568513773}, {"input": [43.0, 49.5], "expected": 49.50150231015976}, {"input": [43.0, 50.0], "expected": 50.00091146645377}, {"input": [43.0, 50.5], "expected": 50.50055293147536}, {"input": [43.0, 51.0], "expected": 51.0003354063729}, {"input": [43.0, 51.5], "expected": 51.50020344767213}, {"input": [43.0, 52.0], "expected": 52.00012340218972}, {"input": [43.0, 52.5], "expected": 52.50007484902863}, {"input": [43.0, 53.0], "expected": 53.00004539889922}, {"input": [43.0, 53.5], "expected": 53.50002753607023}, {"input": [43.0, 54.0], "expected": 54.00001670156132}, {"input": [43.0, 54.5], "expected": 54.50001013004229}, {"input": [43.0, 55.0], "expected": 55.00000614419348}, {"input": [43.0, 55.5], "expected": 55.50000372664623}, {"input": [43.0, 56.0], "expected": 56.00000226032685}, {"input": [43.0, 56.5], "expected": 56.500001370958145}, {"input": [43.0, 57.0], "expected": 57.000000831528375}, {"input": [43.0, 57.5], "expected": 57.50000050434753}, {"input": [43.0, 58.0], "expected": 58.000000305902276}, {"input": [43.0, 58.5], "expected": 58.50000018553912}, {"input": [43.0, 59.0], "expected": 59.00000011253517}, {"input": [43.0, 59.5], "expected": 59.50000006825603}, {"input": [43.0, 60.0], "expected": 60.000000041399375}, {"input": [43.0, 60.5], "expected": 60.50000002510999}, {"input": [43.0, 61.0], "expected": 61.00000001522998}, {"input": [43.0, 61.5], "expected": 61.500000009237446}, {"input": [43.0, 62.0], "expected": 62.00000000560279}, {"input": [43.0, 62.5], "expected": 62.50000000339827}, {"input": [43.0, 63.0], "expected": 63.00000000206116}, {"input": [43.0, 63.5], "expected": 63.50000000125015}, {"input": [43.0, 64.0], "expected": 64.00000000075826}, {"input": [43.0, 64.5], "expected": 64.5000000004599}, {"input": [43.0, 65.0], "expected": 65.00000000027894}, {"input": [43.0, 65.5], "expected": 65.5000000001692}, {"input": [43.0, 66.0], "expected": 66.00000000010262}, {"input": [43.0, 66.5], "expected": 66.50000000006224}, {"input": [43.0, 67.0], "expected": 67.00000000003776}, {"input": [43.0, 67.5], "expected": 67.5000000000229}, {"input": [43.0, 68.0], "expected": 68.00000000001388}, {"input": [43.0, 68.5], "expected": 68.50000000000843}, {"input": [43.0, 69.0], "expected": 69.00000000000512}, {"input": [43.0, 69.5], "expected": 69.5000000000031}, {"input": [43.0, 70.0], "expected": 70.00000000000188}, {"input": [43.0, 70.5], "expected": 70.50000000000114}, {"input": [43.0, 71.0], "expected": 71.0000000000007}, {"input": [43.0, 71.5], "expected": 71.50000000000043}, {"input": [43.0, 72.0], "expected": 72.00000000000026}, {"input": [43.0, 72.5], "expected": 72.50000000000016}, {"input": [43.0, 73.0], "expected": 73.0000000000001}, {"input": [43.0, 73.5], "expected": 73.50000000000006}, {"input": [43.0, 74.0], "expected": 74.00000000000003}, {"input": [43.0, 74.5], "expected": 74.50000000000001}, {"input": [43.0, 75.0], "expected": 75.00000000000001}, {"input": [43.0, 75.5], "expected": 75.50000000000001}, {"input": [43.0, 76.0], "expected": 76.0}, {"input": [43.0, 76.5], "expected": 76.5}, {"input": [43.0, 77.0], "expected": 77.0}, {"input": [43.0, 77.5], "expected": 77.5}, {"input": [43.0, 78.0], "expected": 78.0}, {"input": [43.0, 78.5], "expected": 78.5}, {"input": [43.0, 79.0], "expected": 79.0}, {"input": [43.0, 79.5], "expected": 79.5}, {"input": [43.0, 80.0], "expected": 80.0}, {"input": [43.0, 80.5], "expected": 80.5}, {"input": [43.0, 81.0], "expected": 81.0}, {"input": [43.0, 81.5], "expected": 81.5}, {"input": [43.0, 82.0], "expected": 82.0}, {"input": [43.0, 82.5], "expected": 82.5}, {"input": [43.0, 83.0], "expected": 83.0}, {"input": [43.0, 83.5], "expected": 83.5}, {"input": [43.0, 84.0], "expected": 84.0}, {"input": [43.0, 84.5], "expected": 84.5}, {"input": [43.0, 85.0], "expected": 85.0}, {"input": [43.0, 85.5], "expected": 85.5}, {"input": [43.0, 86.0], "expected": 86.0}, {"input": [43.0, 86.5], "expected": 86.5}, {"input": [43.0, 87.0], "expected": 87.0}, {"input": [43.0, 87.5], "expected": 87.5}, {"input": [43.0, 88.0], "expected": 88.0}, {"input": [43.0, 88.5], "expected": 88.5}, {"input": [43.0, 89.0], "expected": 89.0}, {"input": [43.0, 89.5], "expected": 89.5}, {"input": [43.0, 90.0], "expected": 90.0}, {"input": [43.0, 90.5], "expected": 90.5}, {"input": [43.0, 91.0], "expected": 91.0}, {"input": [43.0, 91.5], "expected": 91.5}, {"input": [43.0, 92.0], "expected": 92.0}, {"input": [43.0, 92.5], "expected": 92.5}, {"input": [43.0, 93.0], "expected": 93.0}, {"input": [43.0, 93.5], "expected": 93.5}, {"input": [43.0, 94.0], "expected": 94.0}, {"input": [43.0, 94.5], "expected": 94.5}, {"input": [43.0, 95.0], "expected": 95.0}, {"input": [43.0, 95.5], "expected": 95.5}, {"input": [43.0, 96.0], "expected": 96.0}, {"input": [43.0, 96.5], "expected": 96.5}, {"input": [43.0, 97.0], "expected": 97.0}, {"input": [43.0, 97.5], "expected": 97.5}, {"input": [43.0, 98.0], "expected": 98.0}, {"input": [43.0, 98.5], "expected": 98.5}, {"input": [43.0, 99.0], "expected": 99.0}, {"input": [43.0, 99.5], "expected": 99.5}, {"input": [43.5, -100.0], "expected": 43.5}, {"input": [43.5, -99.5], "expected": 43.5}, {"input": [43.5, -99.0], "expected": 43.5}, {"input": [43.5, -98.5], "expected": 43.5}, {"input": [43.5, -98.0], "expected": 43.5}, {"input": [43.5, -97.5], "expected": 43.5}, {"input": [43.5, -97.0], "expected": 43.5}, {"input": [43.5, -96.5], "expected": 43.5}, {"input": [43.5, -96.0], "expected": 43.5}, {"input": [43.5, -95.5], "expected": 43.5}, {"input": [43.5, -95.0], "expected": 43.5}, {"input": [43.5, -94.5], "expected": 43.5}, {"input": [43.5, -94.0], "expected": 43.5}, {"input": [43.5, -93.5], "expected": 43.5}, {"input": [43.5, -93.0], "expected": 43.5}, {"input": [43.5, -92.5], "expected": 43.5}, {"input": [43.5, -92.0], "expected": 43.5}, {"input": [43.5, -91.5], "expected": 43.5}, {"input": [43.5, -91.0], "expected": 43.5}, {"input": [43.5, -90.5], "expected": 43.5}, {"input": [43.5, -90.0], "expected": 43.5}, {"input": [43.5, -89.5], "expected": 43.5}, {"input": [43.5, -89.0], "expected": 43.5}, {"input": [43.5, -88.5], "expected": 43.5}, {"input": [43.5, -88.0], "expected": 43.5}, {"input": [43.5, -87.5], "expected": 43.5}, {"input": [43.5, -87.0], "expected": 43.5}, {"input": [43.5, -86.5], "expected": 43.5}, {"input": [43.5, -86.0], "expected": 43.5}, {"input": [43.5, -85.5], "expected": 43.5}, {"input": [43.5, -85.0], "expected": 43.5}, {"input": [43.5, -84.5], "expected": 43.5}, {"input": [43.5, -84.0], "expected": 43.5}, {"input": [43.5, -83.5], "expected": 43.5}, {"input": [43.5, -83.0], "expected": 43.5}, {"input": [43.5, -82.5], "expected": 43.5}, {"input": [43.5, -82.0], "expected": 43.5}, {"input": [43.5, -81.5], "expected": 43.5}, {"input": [43.5, -81.0], "expected": 43.5}, {"input": [43.5, -80.5], "expected": 43.5}, {"input": [43.5, -80.0], "expected": 43.5}, {"input": [43.5, -79.5], "expected": 43.5}, {"input": [43.5, -79.0], "expected": 43.5}, {"input": [43.5, -78.5], "expected": 43.5}, {"input": [43.5, -78.0], "expected": 43.5}, {"input": [43.5, -77.5], "expected": 43.5}, {"input": [43.5, -77.0], "expected": 43.5}, {"input": [43.5, -76.5], "expected": 43.5}, {"input": [43.5, -76.0], "expected": 43.5}, {"input": [43.5, -75.5], "expected": 43.5}, {"input": [43.5, -75.0], "expected": 43.5}, {"input": [43.5, -74.5], "expected": 43.5}, {"input": [43.5, -74.0], "expected": 43.5}, {"input": [43.5, -73.5], "expected": 43.5}, {"input": [43.5, -73.0], "expected": 43.5}, {"input": [43.5, -72.5], "expected": 43.5}, {"input": [43.5, -72.0], "expected": 43.5}, {"input": [43.5, -71.5], "expected": 43.5}, {"input": [43.5, -71.0], "expected": 43.5}, {"input": [43.5, -70.5], "expected": 43.5}, {"input": [43.5, -70.0], "expected": 43.5}, {"input": [43.5, -69.5], "expected": 43.5}, {"input": [43.5, -69.0], "expected": 43.5}, {"input": [43.5, -68.5], "expected": 43.5}, {"input": [43.5, -68.0], "expected": 43.5}, {"input": [43.5, -67.5], "expected": 43.5}, {"input": [43.5, -67.0], "expected": 43.5}, {"input": [43.5, -66.5], "expected": 43.5}, {"input": [43.5, -66.0], "expected": 43.5}, {"input": [43.5, -65.5], "expected": 43.5}, {"input": [43.5, -65.0], "expected": 43.5}, {"input": [43.5, -64.5], "expected": 43.5}, {"input": [43.5, -64.0], "expected": 43.5}, {"input": [43.5, -63.5], "expected": 43.5}, {"input": [43.5, -63.0], "expected": 43.5}, {"input": [43.5, -62.5], "expected": 43.5}, {"input": [43.5, -62.0], "expected": 43.5}, {"input": [43.5, -61.5], "expected": 43.5}, {"input": [43.5, -61.0], "expected": 43.5}, {"input": [43.5, -60.5], "expected": 43.5}, {"input": [43.5, -60.0], "expected": 43.5}, {"input": [43.5, -59.5], "expected": 43.5}, {"input": [43.5, -59.0], "expected": 43.5}, {"input": [43.5, -58.5], "expected": 43.5}, {"input": [43.5, -58.0], "expected": 43.5}, {"input": [43.5, -57.5], "expected": 43.5}, {"input": [43.5, -57.0], "expected": 43.5}, {"input": [43.5, -56.5], "expected": 43.5}, {"input": [43.5, -56.0], "expected": 43.5}, {"input": [43.5, -55.5], "expected": 43.5}, {"input": [43.5, -55.0], "expected": 43.5}, {"input": [43.5, -54.5], "expected": 43.5}, {"input": [43.5, -54.0], "expected": 43.5}, {"input": [43.5, -53.5], "expected": 43.5}, {"input": [43.5, -53.0], "expected": 43.5}, {"input": [43.5, -52.5], "expected": 43.5}, {"input": [43.5, -52.0], "expected": 43.5}, {"input": [43.5, -51.5], "expected": 43.5}, {"input": [43.5, -51.0], "expected": 43.5}, {"input": [43.5, -50.5], "expected": 43.5}, {"input": [43.5, -50.0], "expected": 43.5}, {"input": [43.5, -49.5], "expected": 43.5}, {"input": [43.5, -49.0], "expected": 43.5}, {"input": [43.5, -48.5], "expected": 43.5}, {"input": [43.5, -48.0], "expected": 43.5}, {"input": [43.5, -47.5], "expected": 43.5}, {"input": [43.5, -47.0], "expected": 43.5}, {"input": [43.5, -46.5], "expected": 43.5}, {"input": [43.5, -46.0], "expected": 43.5}, {"input": [43.5, -45.5], "expected": 43.5}, {"input": [43.5, -45.0], "expected": 43.5}, {"input": [43.5, -44.5], "expected": 43.5}, {"input": [43.5, -44.0], "expected": 43.5}, {"input": [43.5, -43.5], "expected": 43.5}, {"input": [43.5, -43.0], "expected": 43.5}, {"input": [43.5, -42.5], "expected": 43.5}, {"input": [43.5, -42.0], "expected": 43.5}, {"input": [43.5, -41.5], "expected": 43.5}, {"input": [43.5, -41.0], "expected": 43.5}, {"input": [43.5, -40.5], "expected": 43.5}, {"input": [43.5, -40.0], "expected": 43.5}, {"input": [43.5, -39.5], "expected": 43.5}, {"input": [43.5, -39.0], "expected": 43.5}, {"input": [43.5, -38.5], "expected": 43.5}, {"input": [43.5, -38.0], "expected": 43.5}, {"input": [43.5, -37.5], "expected": 43.5}, {"input": [43.5, -37.0], "expected": 43.5}, {"input": [43.5, -36.5], "expected": 43.5}, {"input": [43.5, -36.0], "expected": 43.5}, {"input": [43.5, -35.5], "expected": 43.5}, {"input": [43.5, -35.0], "expected": 43.5}, {"input": [43.5, -34.5], "expected": 43.5}, {"input": [43.5, -34.0], "expected": 43.5}, {"input": [43.5, -33.5], "expected": 43.5}, {"input": [43.5, -33.0], "expected": 43.5}, {"input": [43.5, -32.5], "expected": 43.5}, {"input": [43.5, -32.0], "expected": 43.5}, {"input": [43.5, -31.5], "expected": 43.5}, {"input": [43.5, -31.0], "expected": 43.5}, {"input": [43.5, -30.5], "expected": 43.5}, {"input": [43.5, -30.0], "expected": 43.5}, {"input": [43.5, -29.5], "expected": 43.5}, {"input": [43.5, -29.0], "expected": 43.5}, {"input": [43.5, -28.5], "expected": 43.5}, {"input": [43.5, -28.0], "expected": 43.5}, {"input": [43.5, -27.5], "expected": 43.5}, {"input": [43.5, -27.0], "expected": 43.5}, {"input": [43.5, -26.5], "expected": 43.5}, {"input": [43.5, -26.0], "expected": 43.5}, {"input": [43.5, -25.5], "expected": 43.5}, {"input": [43.5, -25.0], "expected": 43.5}, {"input": [43.5, -24.5], "expected": 43.5}, {"input": [43.5, -24.0], "expected": 43.5}, {"input": [43.5, -23.5], "expected": 43.5}, {"input": [43.5, -23.0], "expected": 43.5}, {"input": [43.5, -22.5], "expected": 43.5}, {"input": [43.5, -22.0], "expected": 43.5}, {"input": [43.5, -21.5], "expected": 43.5}, {"input": [43.5, -21.0], "expected": 43.5}, {"input": [43.5, -20.5], "expected": 43.5}, {"input": [43.5, -20.0], "expected": 43.5}, {"input": [43.5, -19.5], "expected": 43.5}, {"input": [43.5, -19.0], "expected": 43.5}, {"input": [43.5, -18.5], "expected": 43.5}, {"input": [43.5, -18.0], "expected": 43.5}, {"input": [43.5, -17.5], "expected": 43.5}, {"input": [43.5, -17.0], "expected": 43.5}, {"input": [43.5, -16.5], "expected": 43.5}, {"input": [43.5, -16.0], "expected": 43.5}, {"input": [43.5, -15.5], "expected": 43.5}, {"input": [43.5, -15.0], "expected": 43.5}, {"input": [43.5, -14.5], "expected": 43.5}, {"input": [43.5, -14.0], "expected": 43.5}, {"input": [43.5, -13.5], "expected": 43.5}, {"input": [43.5, -13.0], "expected": 43.5}, {"input": [43.5, -12.5], "expected": 43.5}, {"input": [43.5, -12.0], "expected": 43.5}, {"input": [43.5, -11.5], "expected": 43.5}, {"input": [43.5, -11.0], "expected": 43.5}, {"input": [43.5, -10.5], "expected": 43.5}, {"input": [43.5, -10.0], "expected": 43.5}, {"input": [43.5, -9.5], "expected": 43.5}, {"input": [43.5, -9.0], "expected": 43.5}, {"input": [43.5, -8.5], "expected": 43.5}, {"input": [43.5, -8.0], "expected": 43.5}, {"input": [43.5, -7.5], "expected": 43.5}, {"input": [43.5, -7.0], "expected": 43.5}, {"input": [43.5, -6.5], "expected": 43.5}, {"input": [43.5, -6.0], "expected": 43.5}, {"input": [43.5, -5.5], "expected": 43.5}, {"input": [43.5, -5.0], "expected": 43.5}, {"input": [43.5, -4.5], "expected": 43.5}, {"input": [43.5, -4.0], "expected": 43.5}, {"input": [43.5, -3.5], "expected": 43.5}, {"input": [43.5, -3.0], "expected": 43.5}, {"input": [43.5, -2.5], "expected": 43.5}, {"input": [43.5, -2.0], "expected": 43.5}, {"input": [43.5, -1.5], "expected": 43.5}, {"input": [43.5, -1.0], "expected": 43.5}, {"input": [43.5, -0.5], "expected": 43.5}, {"input": [43.5, 0.0], "expected": 43.5}, {"input": [43.5, 0.5], "expected": 43.5}, {"input": [43.5, 1.0], "expected": 43.5}, {"input": [43.5, 1.5], "expected": 43.5}, {"input": [43.5, 2.0], "expected": 43.5}, {"input": [43.5, 2.5], "expected": 43.5}, {"input": [43.5, 3.0], "expected": 43.5}, {"input": [43.5, 3.5], "expected": 43.5}, {"input": [43.5, 4.0], "expected": 43.5}, {"input": [43.5, 4.5], "expected": 43.5}, {"input": [43.5, 5.0], "expected": 43.5}, {"input": [43.5, 5.5], "expected": 43.5}, {"input": [43.5, 6.0], "expected": 43.5}, {"input": [43.5, 6.5], "expected": 43.5}, {"input": [43.5, 7.0], "expected": 43.5}, {"input": [43.5, 7.5], "expected": 43.5}, {"input": [43.5, 8.0], "expected": 43.5}, {"input": [43.5, 8.5], "expected": 43.5}, {"input": [43.5, 9.0], "expected": 43.5}, {"input": [43.5, 9.5], "expected": 43.5}, {"input": [43.5, 10.0], "expected": 43.5}, {"input": [43.5, 10.5], "expected": 43.50000000000001}, {"input": [43.5, 11.0], "expected": 43.50000000000001}, {"input": [43.5, 11.5], "expected": 43.500000000000014}, {"input": [43.5, 12.0], "expected": 43.50000000000002}, {"input": [43.5, 12.5], "expected": 43.500000000000036}, {"input": [43.5, 13.0], "expected": 43.50000000000006}, {"input": [43.5, 13.5], "expected": 43.50000000000009}, {"input": [43.5, 14.0], "expected": 43.500000000000156}, {"input": [43.5, 14.5], "expected": 43.500000000000256}, {"input": [43.5, 15.0], "expected": 43.50000000000042}, {"input": [43.5, 15.5], "expected": 43.50000000000069}, {"input": [43.5, 16.0], "expected": 43.50000000000114}, {"input": [43.5, 16.5], "expected": 43.50000000000188}, {"input": [43.5, 17.0], "expected": 43.5000000000031}, {"input": [43.5, 17.5], "expected": 43.50000000000511}, {"input": [43.5, 18.0], "expected": 43.50000000000842}, {"input": [43.5, 18.5], "expected": 43.50000000001389}, {"input": [43.5, 19.0], "expected": 43.5000000000229}, {"input": [43.5, 19.5], "expected": 43.50000000003775}, {"input": [43.5, 20.0], "expected": 43.50000000006224}, {"input": [43.5, 20.5], "expected": 43.50000000010262}, {"input": [43.5, 21.0], "expected": 43.50000000016919}, {"input": [43.5, 21.5], "expected": 43.500000000278945}, {"input": [43.5, 22.0], "expected": 43.500000000459906}, {"input": [43.5, 22.5], "expected": 43.500000000758256}, {"input": [43.5, 23.0], "expected": 43.50000000125015}, {"input": [43.5, 23.5], "expected": 43.50000000206116}, {"input": [43.5, 24.0], "expected": 43.50000000339827}, {"input": [43.5, 24.5], "expected": 43.50000000560279}, {"input": [43.5, 25.0], "expected": 43.500000009237446}, {"input": [43.5, 25.5], "expected": 43.50000001522998}, {"input": [43.5, 26.0], "expected": 43.50000002510999}, {"input": [43.5, 26.5], "expected": 43.500000041399375}, {"input": [43.5, 27.0], "expected": 43.50000006825603}, {"input": [43.5, 27.5], "expected": 43.50000011253517}, {"input": [43.5, 28.0], "expected": 43.50000018553912}, {"input": [43.5, 28.5], "expected": 43.500000305902276}, {"input": [43.5, 29.0], "expected": 43.50000050434753}, {"input": [43.5, 29.5], "expected": 43.500000831528375}, {"input": [43.5, 30.0], "expected": 43.500001370958145}, {"input": [43.5, 30.5], "expected": 43.50000226032685}, {"input": [43.5, 31.0], "expected": 43.50000372664623}, {"input": [43.5, 31.5], "expected": 43.50000614419348}, {"input": [43.5, 32.0], "expected": 43.50001013004229}, {"input": [43.5, 32.5], "expected": 43.50001670156132}, {"input": [43.5, 33.0], "expected": 43.50002753607023}, {"input": [43.5, 33.5], "expected": 43.50004539889922}, {"input": [43.5, 34.0], "expected": 43.50007484902863}, {"input": [43.5, 34.5], "expected": 43.50012340218972}, {"input": [43.5, 35.0], "expected": 43.50020344767213}, {"input": [43.5, 35.5], "expected": 43.5003354063729}, {"input": [43.5, 36.0], "expected": 43.50055293147536}, {"input": [43.5, 36.5], "expected": 43.50091146645377}, {"input": [43.5, 37.0], "expected": 43.50150231015976}, {"input": [43.5, 37.5], "expected": 43.50247568513773}, {"input": [43.5, 38.0], "expected": 43.50407844327057}, {"input": [43.5, 38.5], "expected": 43.50671534848912}, {"input": [43.5, 39.0], "expected": 43.5110477448486}, {"input": [43.5, 39.5], "expected": 43.51814992791781}, {"input": [43.5, 40.0], "expected": 43.52975041827262}, {"input": [43.5, 40.5], "expected": 43.548587351573744}, {"input": [43.5, 41.0], "expected": 43.57888973429255}, {"input": [43.5, 41.5], "expected": 43.62692801104297}, {"input": [43.5, 42.0], "expected": 43.70141327798275}, {"input": [43.5, 42.5], "expected": 43.81326168751822}, {"input": [43.5, 43.0], "expected": 43.97407698418011}, {"input": [43.5, 43.5], "expected": 44.19314718055995}, {"input": [43.5, 44.0], "expected": 44.47407698418011}, {"input": [43.5, 44.5], "expected": 44.81326168751822}, {"input": [43.5, 45.0], "expected": 45.20141327798275}, {"input": [43.5, 45.5], "expected": 45.62692801104297}, {"input": [43.5, 46.0], "expected": 46.07888973429255}, {"input": [43.5, 46.5], "expected": 46.548587351573744}, {"input": [43.5, 47.0], "expected": 47.02975041827262}, {"input": [43.5, 47.5], "expected": 47.51814992791781}, {"input": [43.5, 48.0], "expected": 48.0110477448486}, {"input": [43.5, 48.5], "expected": 48.50671534848912}, {"input": [43.5, 49.0], "expected": 49.00407844327057}, {"input": [43.5, 49.5], "expected": 49.50247568513773}, {"input": [43.5, 50.0], "expected": 50.00150231015976}, {"input": [43.5, 50.5], "expected": 50.50091146645377}, {"input": [43.5, 51.0], "expected": 51.00055293147536}, {"input": [43.5, 51.5], "expected": 51.5003354063729}, {"input": [43.5, 52.0], "expected": 52.00020344767213}, {"input": [43.5, 52.5], "expected": 52.50012340218972}, {"input": [43.5, 53.0], "expected": 53.00007484902863}, {"input": [43.5, 53.5], "expected": 53.50004539889922}, {"input": [43.5, 54.0], "expected": 54.00002753607023}, {"input": [43.5, 54.5], "expected": 54.50001670156132}, {"input": [43.5, 55.0], "expected": 55.00001013004229}, {"input": [43.5, 55.5], "expected": 55.50000614419348}, {"input": [43.5, 56.0], "expected": 56.00000372664623}, {"input": [43.5, 56.5], "expected": 56.50000226032685}, {"input": [43.5, 57.0], "expected": 57.000001370958145}, {"input": [43.5, 57.5], "expected": 57.500000831528375}, {"input": [43.5, 58.0], "expected": 58.00000050434753}, {"input": [43.5, 58.5], "expected": 58.500000305902276}, {"input": [43.5, 59.0], "expected": 59.00000018553912}, {"input": [43.5, 59.5], "expected": 59.50000011253517}, {"input": [43.5, 60.0], "expected": 60.00000006825603}, {"input": [43.5, 60.5], "expected": 60.500000041399375}, {"input": [43.5, 61.0], "expected": 61.00000002510999}, {"input": [43.5, 61.5], "expected": 61.50000001522998}, {"input": [43.5, 62.0], "expected": 62.000000009237446}, {"input": [43.5, 62.5], "expected": 62.50000000560279}, {"input": [43.5, 63.0], "expected": 63.00000000339827}, {"input": [43.5, 63.5], "expected": 63.50000000206116}, {"input": [43.5, 64.0], "expected": 64.00000000125016}, {"input": [43.5, 64.5], "expected": 64.50000000075826}, {"input": [43.5, 65.0], "expected": 65.0000000004599}, {"input": [43.5, 65.5], "expected": 65.50000000027894}, {"input": [43.5, 66.0], "expected": 66.0000000001692}, {"input": [43.5, 66.5], "expected": 66.50000000010262}, {"input": [43.5, 67.0], "expected": 67.00000000006224}, {"input": [43.5, 67.5], "expected": 67.50000000003776}, {"input": [43.5, 68.0], "expected": 68.0000000000229}, {"input": [43.5, 68.5], "expected": 68.50000000001388}, {"input": [43.5, 69.0], "expected": 69.00000000000843}, {"input": [43.5, 69.5], "expected": 69.50000000000512}, {"input": [43.5, 70.0], "expected": 70.0000000000031}, {"input": [43.5, 70.5], "expected": 70.50000000000188}, {"input": [43.5, 71.0], "expected": 71.00000000000114}, {"input": [43.5, 71.5], "expected": 71.5000000000007}, {"input": [43.5, 72.0], "expected": 72.00000000000043}, {"input": [43.5, 72.5], "expected": 72.50000000000026}, {"input": [43.5, 73.0], "expected": 73.00000000000016}, {"input": [43.5, 73.5], "expected": 73.5000000000001}, {"input": [43.5, 74.0], "expected": 74.00000000000006}, {"input": [43.5, 74.5], "expected": 74.50000000000003}, {"input": [43.5, 75.0], "expected": 75.00000000000001}, {"input": [43.5, 75.5], "expected": 75.50000000000001}, {"input": [43.5, 76.0], "expected": 76.00000000000001}, {"input": [43.5, 76.5], "expected": 76.5}, {"input": [43.5, 77.0], "expected": 77.0}, {"input": [43.5, 77.5], "expected": 77.5}, {"input": [43.5, 78.0], "expected": 78.0}, {"input": [43.5, 78.5], "expected": 78.5}, {"input": [43.5, 79.0], "expected": 79.0}, {"input": [43.5, 79.5], "expected": 79.5}, {"input": [43.5, 80.0], "expected": 80.0}, {"input": [43.5, 80.5], "expected": 80.5}, {"input": [43.5, 81.0], "expected": 81.0}, {"input": [43.5, 81.5], "expected": 81.5}, {"input": [43.5, 82.0], "expected": 82.0}, {"input": [43.5, 82.5], "expected": 82.5}, {"input": [43.5, 83.0], "expected": 83.0}, {"input": [43.5, 83.5], "expected": 83.5}, {"input": [43.5, 84.0], "expected": 84.0}, {"input": [43.5, 84.5], "expected": 84.5}, {"input": [43.5, 85.0], "expected": 85.0}, {"input": [43.5, 85.5], "expected": 85.5}, {"input": [43.5, 86.0], "expected": 86.0}, {"input": [43.5, 86.5], "expected": 86.5}, {"input": [43.5, 87.0], "expected": 87.0}, {"input": [43.5, 87.5], "expected": 87.5}, {"input": [43.5, 88.0], "expected": 88.0}, {"input": [43.5, 88.5], "expected": 88.5}, {"input": [43.5, 89.0], "expected": 89.0}, {"input": [43.5, 89.5], "expected": 89.5}, {"input": [43.5, 90.0], "expected": 90.0}, {"input": [43.5, 90.5], "expected": 90.5}, {"input": [43.5, 91.0], "expected": 91.0}, {"input": [43.5, 91.5], "expected": 91.5}, {"input": [43.5, 92.0], "expected": 92.0}, {"input": [43.5, 92.5], "expected": 92.5}, {"input": [43.5, 93.0], "expected": 93.0}, {"input": [43.5, 93.5], "expected": 93.5}, {"input": [43.5, 94.0], "expected": 94.0}, {"input": [43.5, 94.5], "expected": 94.5}, {"input": [43.5, 95.0], "expected": 95.0}, {"input": [43.5, 95.5], "expected": 95.5}, {"input": [43.5, 96.0], "expected": 96.0}, {"input": [43.5, 96.5], "expected": 96.5}, {"input": [43.5, 97.0], "expected": 97.0}, {"input": [43.5, 97.5], "expected": 97.5}, {"input": [43.5, 98.0], "expected": 98.0}, {"input": [43.5, 98.5], "expected": 98.5}, {"input": [43.5, 99.0], "expected": 99.0}, {"input": [43.5, 99.5], "expected": 99.5}, {"input": [44.0, -100.0], "expected": 44.0}, {"input": [44.0, -99.5], "expected": 44.0}, {"input": [44.0, -99.0], "expected": 44.0}, {"input": [44.0, -98.5], "expected": 44.0}, {"input": [44.0, -98.0], "expected": 44.0}, {"input": [44.0, -97.5], "expected": 44.0}, {"input": [44.0, -97.0], "expected": 44.0}, {"input": [44.0, -96.5], "expected": 44.0}, {"input": [44.0, -96.0], "expected": 44.0}, {"input": [44.0, -95.5], "expected": 44.0}, {"input": [44.0, -95.0], "expected": 44.0}, {"input": [44.0, -94.5], "expected": 44.0}, {"input": [44.0, -94.0], "expected": 44.0}, {"input": [44.0, -93.5], "expected": 44.0}, {"input": [44.0, -93.0], "expected": 44.0}, {"input": [44.0, -92.5], "expected": 44.0}, {"input": [44.0, -92.0], "expected": 44.0}, {"input": [44.0, -91.5], "expected": 44.0}, {"input": [44.0, -91.0], "expected": 44.0}, {"input": [44.0, -90.5], "expected": 44.0}, {"input": [44.0, -90.0], "expected": 44.0}, {"input": [44.0, -89.5], "expected": 44.0}, {"input": [44.0, -89.0], "expected": 44.0}, {"input": [44.0, -88.5], "expected": 44.0}, {"input": [44.0, -88.0], "expected": 44.0}, {"input": [44.0, -87.5], "expected": 44.0}, {"input": [44.0, -87.0], "expected": 44.0}, {"input": [44.0, -86.5], "expected": 44.0}, {"input": [44.0, -86.0], "expected": 44.0}, {"input": [44.0, -85.5], "expected": 44.0}, {"input": [44.0, -85.0], "expected": 44.0}, {"input": [44.0, -84.5], "expected": 44.0}, {"input": [44.0, -84.0], "expected": 44.0}, {"input": [44.0, -83.5], "expected": 44.0}, {"input": [44.0, -83.0], "expected": 44.0}, {"input": [44.0, -82.5], "expected": 44.0}, {"input": [44.0, -82.0], "expected": 44.0}, {"input": [44.0, -81.5], "expected": 44.0}, {"input": [44.0, -81.0], "expected": 44.0}, {"input": [44.0, -80.5], "expected": 44.0}, {"input": [44.0, -80.0], "expected": 44.0}, {"input": [44.0, -79.5], "expected": 44.0}, {"input": [44.0, -79.0], "expected": 44.0}, {"input": [44.0, -78.5], "expected": 44.0}, {"input": [44.0, -78.0], "expected": 44.0}, {"input": [44.0, -77.5], "expected": 44.0}, {"input": [44.0, -77.0], "expected": 44.0}, {"input": [44.0, -76.5], "expected": 44.0}, {"input": [44.0, -76.0], "expected": 44.0}, {"input": [44.0, -75.5], "expected": 44.0}, {"input": [44.0, -75.0], "expected": 44.0}, {"input": [44.0, -74.5], "expected": 44.0}, {"input": [44.0, -74.0], "expected": 44.0}, {"input": [44.0, -73.5], "expected": 44.0}, {"input": [44.0, -73.0], "expected": 44.0}, {"input": [44.0, -72.5], "expected": 44.0}, {"input": [44.0, -72.0], "expected": 44.0}, {"input": [44.0, -71.5], "expected": 44.0}, {"input": [44.0, -71.0], "expected": 44.0}, {"input": [44.0, -70.5], "expected": 44.0}, {"input": [44.0, -70.0], "expected": 44.0}, {"input": [44.0, -69.5], "expected": 44.0}, {"input": [44.0, -69.0], "expected": 44.0}, {"input": [44.0, -68.5], "expected": 44.0}, {"input": [44.0, -68.0], "expected": 44.0}, {"input": [44.0, -67.5], "expected": 44.0}, {"input": [44.0, -67.0], "expected": 44.0}, {"input": [44.0, -66.5], "expected": 44.0}, {"input": [44.0, -66.0], "expected": 44.0}, {"input": [44.0, -65.5], "expected": 44.0}, {"input": [44.0, -65.0], "expected": 44.0}, {"input": [44.0, -64.5], "expected": 44.0}, {"input": [44.0, -64.0], "expected": 44.0}, {"input": [44.0, -63.5], "expected": 44.0}, {"input": [44.0, -63.0], "expected": 44.0}, {"input": [44.0, -62.5], "expected": 44.0}, {"input": [44.0, -62.0], "expected": 44.0}, {"input": [44.0, -61.5], "expected": 44.0}, {"input": [44.0, -61.0], "expected": 44.0}, {"input": [44.0, -60.5], "expected": 44.0}, {"input": [44.0, -60.0], "expected": 44.0}, {"input": [44.0, -59.5], "expected": 44.0}, {"input": [44.0, -59.0], "expected": 44.0}, {"input": [44.0, -58.5], "expected": 44.0}, {"input": [44.0, -58.0], "expected": 44.0}, {"input": [44.0, -57.5], "expected": 44.0}, {"input": [44.0, -57.0], "expected": 44.0}, {"input": [44.0, -56.5], "expected": 44.0}, {"input": [44.0, -56.0], "expected": 44.0}, {"input": [44.0, -55.5], "expected": 44.0}, {"input": [44.0, -55.0], "expected": 44.0}, {"input": [44.0, -54.5], "expected": 44.0}, {"input": [44.0, -54.0], "expected": 44.0}, {"input": [44.0, -53.5], "expected": 44.0}, {"input": [44.0, -53.0], "expected": 44.0}, {"input": [44.0, -52.5], "expected": 44.0}, {"input": [44.0, -52.0], "expected": 44.0}, {"input": [44.0, -51.5], "expected": 44.0}, {"input": [44.0, -51.0], "expected": 44.0}, {"input": [44.0, -50.5], "expected": 44.0}, {"input": [44.0, -50.0], "expected": 44.0}, {"input": [44.0, -49.5], "expected": 44.0}, {"input": [44.0, -49.0], "expected": 44.0}, {"input": [44.0, -48.5], "expected": 44.0}, {"input": [44.0, -48.0], "expected": 44.0}, {"input": [44.0, -47.5], "expected": 44.0}, {"input": [44.0, -47.0], "expected": 44.0}, {"input": [44.0, -46.5], "expected": 44.0}, {"input": [44.0, -46.0], "expected": 44.0}, {"input": [44.0, -45.5], "expected": 44.0}, {"input": [44.0, -45.0], "expected": 44.0}, {"input": [44.0, -44.5], "expected": 44.0}, {"input": [44.0, -44.0], "expected": 44.0}, {"input": [44.0, -43.5], "expected": 44.0}, {"input": [44.0, -43.0], "expected": 44.0}, {"input": [44.0, -42.5], "expected": 44.0}, {"input": [44.0, -42.0], "expected": 44.0}, {"input": [44.0, -41.5], "expected": 44.0}, {"input": [44.0, -41.0], "expected": 44.0}, {"input": [44.0, -40.5], "expected": 44.0}, {"input": [44.0, -40.0], "expected": 44.0}, {"input": [44.0, -39.5], "expected": 44.0}, {"input": [44.0, -39.0], "expected": 44.0}, {"input": [44.0, -38.5], "expected": 44.0}, {"input": [44.0, -38.0], "expected": 44.0}, {"input": [44.0, -37.5], "expected": 44.0}, {"input": [44.0, -37.0], "expected": 44.0}, {"input": [44.0, -36.5], "expected": 44.0}, {"input": [44.0, -36.0], "expected": 44.0}, {"input": [44.0, -35.5], "expected": 44.0}, {"input": [44.0, -35.0], "expected": 44.0}, {"input": [44.0, -34.5], "expected": 44.0}, {"input": [44.0, -34.0], "expected": 44.0}, {"input": [44.0, -33.5], "expected": 44.0}, {"input": [44.0, -33.0], "expected": 44.0}, {"input": [44.0, -32.5], "expected": 44.0}, {"input": [44.0, -32.0], "expected": 44.0}, {"input": [44.0, -31.5], "expected": 44.0}, {"input": [44.0, -31.0], "expected": 44.0}, {"input": [44.0, -30.5], "expected": 44.0}, {"input": [44.0, -30.0], "expected": 44.0}, {"input": [44.0, -29.5], "expected": 44.0}, {"input": [44.0, -29.0], "expected": 44.0}, {"input": [44.0, -28.5], "expected": 44.0}, {"input": [44.0, -28.0], "expected": 44.0}, {"input": [44.0, -27.5], "expected": 44.0}, {"input": [44.0, -27.0], "expected": 44.0}, {"input": [44.0, -26.5], "expected": 44.0}, {"input": [44.0, -26.0], "expected": 44.0}, {"input": [44.0, -25.5], "expected": 44.0}, {"input": [44.0, -25.0], "expected": 44.0}, {"input": [44.0, -24.5], "expected": 44.0}, {"input": [44.0, -24.0], "expected": 44.0}, {"input": [44.0, -23.5], "expected": 44.0}, {"input": [44.0, -23.0], "expected": 44.0}, {"input": [44.0, -22.5], "expected": 44.0}, {"input": [44.0, -22.0], "expected": 44.0}, {"input": [44.0, -21.5], "expected": 44.0}, {"input": [44.0, -21.0], "expected": 44.0}, {"input": [44.0, -20.5], "expected": 44.0}, {"input": [44.0, -20.0], "expected": 44.0}, {"input": [44.0, -19.5], "expected": 44.0}, {"input": [44.0, -19.0], "expected": 44.0}, {"input": [44.0, -18.5], "expected": 44.0}, {"input": [44.0, -18.0], "expected": 44.0}, {"input": [44.0, -17.5], "expected": 44.0}, {"input": [44.0, -17.0], "expected": 44.0}, {"input": [44.0, -16.5], "expected": 44.0}, {"input": [44.0, -16.0], "expected": 44.0}, {"input": [44.0, -15.5], "expected": 44.0}, {"input": [44.0, -15.0], "expected": 44.0}, {"input": [44.0, -14.5], "expected": 44.0}, {"input": [44.0, -14.0], "expected": 44.0}, {"input": [44.0, -13.5], "expected": 44.0}, {"input": [44.0, -13.0], "expected": 44.0}, {"input": [44.0, -12.5], "expected": 44.0}, {"input": [44.0, -12.0], "expected": 44.0}, {"input": [44.0, -11.5], "expected": 44.0}, {"input": [44.0, -11.0], "expected": 44.0}, {"input": [44.0, -10.5], "expected": 44.0}, {"input": [44.0, -10.0], "expected": 44.0}, {"input": [44.0, -9.5], "expected": 44.0}, {"input": [44.0, -9.0], "expected": 44.0}, {"input": [44.0, -8.5], "expected": 44.0}, {"input": [44.0, -8.0], "expected": 44.0}, {"input": [44.0, -7.5], "expected": 44.0}, {"input": [44.0, -7.0], "expected": 44.0}, {"input": [44.0, -6.5], "expected": 44.0}, {"input": [44.0, -6.0], "expected": 44.0}, {"input": [44.0, -5.5], "expected": 44.0}, {"input": [44.0, -5.0], "expected": 44.0}, {"input": [44.0, -4.5], "expected": 44.0}, {"input": [44.0, -4.0], "expected": 44.0}, {"input": [44.0, -3.5], "expected": 44.0}, {"input": [44.0, -3.0], "expected": 44.0}, {"input": [44.0, -2.5], "expected": 44.0}, {"input": [44.0, -2.0], "expected": 44.0}, {"input": [44.0, -1.5], "expected": 44.0}, {"input": [44.0, -1.0], "expected": 44.0}, {"input": [44.0, -0.5], "expected": 44.0}, {"input": [44.0, 0.0], "expected": 44.0}, {"input": [44.0, 0.5], "expected": 44.0}, {"input": [44.0, 1.0], "expected": 44.0}, {"input": [44.0, 1.5], "expected": 44.0}, {"input": [44.0, 2.0], "expected": 44.0}, {"input": [44.0, 2.5], "expected": 44.0}, {"input": [44.0, 3.0], "expected": 44.0}, {"input": [44.0, 3.5], "expected": 44.0}, {"input": [44.0, 4.0], "expected": 44.0}, {"input": [44.0, 4.5], "expected": 44.0}, {"input": [44.0, 5.0], "expected": 44.0}, {"input": [44.0, 5.5], "expected": 44.0}, {"input": [44.0, 6.0], "expected": 44.0}, {"input": [44.0, 6.5], "expected": 44.0}, {"input": [44.0, 7.0], "expected": 44.0}, {"input": [44.0, 7.5], "expected": 44.0}, {"input": [44.0, 8.0], "expected": 44.0}, {"input": [44.0, 8.5], "expected": 44.0}, {"input": [44.0, 9.0], "expected": 44.0}, {"input": [44.0, 9.5], "expected": 44.0}, {"input": [44.0, 10.0], "expected": 44.0}, {"input": [44.0, 10.5], "expected": 44.0}, {"input": [44.0, 11.0], "expected": 44.00000000000001}, {"input": [44.0, 11.5], "expected": 44.00000000000001}, {"input": [44.0, 12.0], "expected": 44.000000000000014}, {"input": [44.0, 12.5], "expected": 44.00000000000002}, {"input": [44.0, 13.0], "expected": 44.000000000000036}, {"input": [44.0, 13.5], "expected": 44.00000000000006}, {"input": [44.0, 14.0], "expected": 44.00000000000009}, {"input": [44.0, 14.5], "expected": 44.000000000000156}, {"input": [44.0, 15.0], "expected": 44.000000000000256}, {"input": [44.0, 15.5], "expected": 44.00000000000042}, {"input": [44.0, 16.0], "expected": 44.00000000000069}, {"input": [44.0, 16.5], "expected": 44.00000000000114}, {"input": [44.0, 17.0], "expected": 44.00000000000188}, {"input": [44.0, 17.5], "expected": 44.0000000000031}, {"input": [44.0, 18.0], "expected": 44.00000000000511}, {"input": [44.0, 18.5], "expected": 44.00000000000842}, {"input": [44.0, 19.0], "expected": 44.00000000001389}, {"input": [44.0, 19.5], "expected": 44.0000000000229}, {"input": [44.0, 20.0], "expected": 44.00000000003775}, {"input": [44.0, 20.5], "expected": 44.00000000006224}, {"input": [44.0, 21.0], "expected": 44.00000000010262}, {"input": [44.0, 21.5], "expected": 44.00000000016919}, {"input": [44.0, 22.0], "expected": 44.000000000278945}, {"input": [44.0, 22.5], "expected": 44.000000000459906}, {"input": [44.0, 23.0], "expected": 44.000000000758256}, {"input": [44.0, 23.5], "expected": 44.00000000125015}, {"input": [44.0, 24.0], "expected": 44.00000000206116}, {"input": [44.0, 24.5], "expected": 44.00000000339827}, {"input": [44.0, 25.0], "expected": 44.00000000560279}, {"input": [44.0, 25.5], "expected": 44.000000009237446}, {"input": [44.0, 26.0], "expected": 44.00000001522998}, {"input": [44.0, 26.5], "expected": 44.00000002510999}, {"input": [44.0, 27.0], "expected": 44.000000041399375}, {"input": [44.0, 27.5], "expected": 44.00000006825603}, {"input": [44.0, 28.0], "expected": 44.00000011253517}, {"input": [44.0, 28.5], "expected": 44.00000018553912}, {"input": [44.0, 29.0], "expected": 44.000000305902276}, {"input": [44.0, 29.5], "expected": 44.00000050434753}, {"input": [44.0, 30.0], "expected": 44.000000831528375}, {"input": [44.0, 30.5], "expected": 44.000001370958145}, {"input": [44.0, 31.0], "expected": 44.00000226032685}, {"input": [44.0, 31.5], "expected": 44.00000372664623}, {"input": [44.0, 32.0], "expected": 44.00000614419348}, {"input": [44.0, 32.5], "expected": 44.00001013004229}, {"input": [44.0, 33.0], "expected": 44.00001670156132}, {"input": [44.0, 33.5], "expected": 44.00002753607023}, {"input": [44.0, 34.0], "expected": 44.00004539889922}, {"input": [44.0, 34.5], "expected": 44.00007484902863}, {"input": [44.0, 35.0], "expected": 44.00012340218972}, {"input": [44.0, 35.5], "expected": 44.00020344767213}, {"input": [44.0, 36.0], "expected": 44.0003354063729}, {"input": [44.0, 36.5], "expected": 44.00055293147536}, {"input": [44.0, 37.0], "expected": 44.00091146645377}, {"input": [44.0, 37.5], "expected": 44.00150231015976}, {"input": [44.0, 38.0], "expected": 44.00247568513773}, {"input": [44.0, 38.5], "expected": 44.00407844327057}, {"input": [44.0, 39.0], "expected": 44.00671534848912}, {"input": [44.0, 39.5], "expected": 44.0110477448486}, {"input": [44.0, 40.0], "expected": 44.01814992791781}, {"input": [44.0, 40.5], "expected": 44.02975041827262}, {"input": [44.0, 41.0], "expected": 44.048587351573744}, {"input": [44.0, 41.5], "expected": 44.07888973429255}, {"input": [44.0, 42.0], "expected": 44.12692801104297}, {"input": [44.0, 42.5], "expected": 44.20141327798275}, {"input": [44.0, 43.0], "expected": 44.31326168751822}, {"input": [44.0, 43.5], "expected": 44.47407698418011}, {"input": [44.0, 44.0], "expected": 44.69314718055995}, {"input": [44.0, 44.5], "expected": 44.97407698418011}, {"input": [44.0, 45.0], "expected": 45.31326168751822}, {"input": [44.0, 45.5], "expected": 45.70141327798275}, {"input": [44.0, 46.0], "expected": 46.12692801104297}, {"input": [44.0, 46.5], "expected": 46.57888973429255}, {"input": [44.0, 47.0], "expected": 47.048587351573744}, {"input": [44.0, 47.5], "expected": 47.52975041827262}, {"input": [44.0, 48.0], "expected": 48.01814992791781}, {"input": [44.0, 48.5], "expected": 48.5110477448486}, {"input": [44.0, 49.0], "expected": 49.00671534848912}, {"input": [44.0, 49.5], "expected": 49.50407844327057}, {"input": [44.0, 50.0], "expected": 50.00247568513773}, {"input": [44.0, 50.5], "expected": 50.50150231015976}, {"input": [44.0, 51.0], "expected": 51.00091146645377}, {"input": [44.0, 51.5], "expected": 51.50055293147536}, {"input": [44.0, 52.0], "expected": 52.0003354063729}, {"input": [44.0, 52.5], "expected": 52.50020344767213}, {"input": [44.0, 53.0], "expected": 53.00012340218972}, {"input": [44.0, 53.5], "expected": 53.50007484902863}, {"input": [44.0, 54.0], "expected": 54.00004539889922}, {"input": [44.0, 54.5], "expected": 54.50002753607023}, {"input": [44.0, 55.0], "expected": 55.00001670156132}, {"input": [44.0, 55.5], "expected": 55.50001013004229}, {"input": [44.0, 56.0], "expected": 56.00000614419348}, {"input": [44.0, 56.5], "expected": 56.50000372664623}, {"input": [44.0, 57.0], "expected": 57.00000226032685}, {"input": [44.0, 57.5], "expected": 57.500001370958145}, {"input": [44.0, 58.0], "expected": 58.000000831528375}, {"input": [44.0, 58.5], "expected": 58.50000050434753}, {"input": [44.0, 59.0], "expected": 59.000000305902276}, {"input": [44.0, 59.5], "expected": 59.50000018553912}, {"input": [44.0, 60.0], "expected": 60.00000011253517}, {"input": [44.0, 60.5], "expected": 60.50000006825603}, {"input": [44.0, 61.0], "expected": 61.000000041399375}, {"input": [44.0, 61.5], "expected": 61.50000002510999}, {"input": [44.0, 62.0], "expected": 62.00000001522998}, {"input": [44.0, 62.5], "expected": 62.500000009237446}, {"input": [44.0, 63.0], "expected": 63.00000000560279}, {"input": [44.0, 63.5], "expected": 63.50000000339827}, {"input": [44.0, 64.0], "expected": 64.00000000206116}, {"input": [44.0, 64.5], "expected": 64.50000000125016}, {"input": [44.0, 65.0], "expected": 65.00000000075826}, {"input": [44.0, 65.5], "expected": 65.5000000004599}, {"input": [44.0, 66.0], "expected": 66.00000000027894}, {"input": [44.0, 66.5], "expected": 66.5000000001692}, {"input": [44.0, 67.0], "expected": 67.00000000010262}, {"input": [44.0, 67.5], "expected": 67.50000000006224}, {"input": [44.0, 68.0], "expected": 68.00000000003776}, {"input": [44.0, 68.5], "expected": 68.5000000000229}, {"input": [44.0, 69.0], "expected": 69.00000000001388}, {"input": [44.0, 69.5], "expected": 69.50000000000843}, {"input": [44.0, 70.0], "expected": 70.00000000000512}, {"input": [44.0, 70.5], "expected": 70.5000000000031}, {"input": [44.0, 71.0], "expected": 71.00000000000188}, {"input": [44.0, 71.5], "expected": 71.50000000000114}, {"input": [44.0, 72.0], "expected": 72.0000000000007}, {"input": [44.0, 72.5], "expected": 72.50000000000043}, {"input": [44.0, 73.0], "expected": 73.00000000000026}, {"input": [44.0, 73.5], "expected": 73.50000000000016}, {"input": [44.0, 74.0], "expected": 74.0000000000001}, {"input": [44.0, 74.5], "expected": 74.50000000000006}, {"input": [44.0, 75.0], "expected": 75.00000000000003}, {"input": [44.0, 75.5], "expected": 75.50000000000001}, {"input": [44.0, 76.0], "expected": 76.00000000000001}, {"input": [44.0, 76.5], "expected": 76.50000000000001}, {"input": [44.0, 77.0], "expected": 77.0}, {"input": [44.0, 77.5], "expected": 77.5}, {"input": [44.0, 78.0], "expected": 78.0}, {"input": [44.0, 78.5], "expected": 78.5}, {"input": [44.0, 79.0], "expected": 79.0}, {"input": [44.0, 79.5], "expected": 79.5}, {"input": [44.0, 80.0], "expected": 80.0}, {"input": [44.0, 80.5], "expected": 80.5}, {"input": [44.0, 81.0], "expected": 81.0}, {"input": [44.0, 81.5], "expected": 81.5}, {"input": [44.0, 82.0], "expected": 82.0}, {"input": [44.0, 82.5], "expected": 82.5}, {"input": [44.0, 83.0], "expected": 83.0}, {"input": [44.0, 83.5], "expected": 83.5}, {"input": [44.0, 84.0], "expected": 84.0}, {"input": [44.0, 84.5], "expected": 84.5}, {"input": [44.0, 85.0], "expected": 85.0}, {"input": [44.0, 85.5], "expected": 85.5}, {"input": [44.0, 86.0], "expected": 86.0}, {"input": [44.0, 86.5], "expected": 86.5}, {"input": [44.0, 87.0], "expected": 87.0}, {"input": [44.0, 87.5], "expected": 87.5}, {"input": [44.0, 88.0], "expected": 88.0}, {"input": [44.0, 88.5], "expected": 88.5}, {"input": [44.0, 89.0], "expected": 89.0}, {"input": [44.0, 89.5], "expected": 89.5}, {"input": [44.0, 90.0], "expected": 90.0}, {"input": [44.0, 90.5], "expected": 90.5}, {"input": [44.0, 91.0], "expected": 91.0}, {"input": [44.0, 91.5], "expected": 91.5}, {"input": [44.0, 92.0], "expected": 92.0}, {"input": [44.0, 92.5], "expected": 92.5}, {"input": [44.0, 93.0], "expected": 93.0}, {"input": [44.0, 93.5], "expected": 93.5}, {"input": [44.0, 94.0], "expected": 94.0}, {"input": [44.0, 94.5], "expected": 94.5}, {"input": [44.0, 95.0], "expected": 95.0}, {"input": [44.0, 95.5], "expected": 95.5}, {"input": [44.0, 96.0], "expected": 96.0}, {"input": [44.0, 96.5], "expected": 96.5}, {"input": [44.0, 97.0], "expected": 97.0}, {"input": [44.0, 97.5], "expected": 97.5}, {"input": [44.0, 98.0], "expected": 98.0}, {"input": [44.0, 98.5], "expected": 98.5}, {"input": [44.0, 99.0], "expected": 99.0}, {"input": [44.0, 99.5], "expected": 99.5}, {"input": [44.5, -100.0], "expected": 44.5}, {"input": [44.5, -99.5], "expected": 44.5}, {"input": [44.5, -99.0], "expected": 44.5}, {"input": [44.5, -98.5], "expected": 44.5}, {"input": [44.5, -98.0], "expected": 44.5}, {"input": [44.5, -97.5], "expected": 44.5}, {"input": [44.5, -97.0], "expected": 44.5}, {"input": [44.5, -96.5], "expected": 44.5}, {"input": [44.5, -96.0], "expected": 44.5}, {"input": [44.5, -95.5], "expected": 44.5}, {"input": [44.5, -95.0], "expected": 44.5}, {"input": [44.5, -94.5], "expected": 44.5}, {"input": [44.5, -94.0], "expected": 44.5}, {"input": [44.5, -93.5], "expected": 44.5}, {"input": [44.5, -93.0], "expected": 44.5}, {"input": [44.5, -92.5], "expected": 44.5}, {"input": [44.5, -92.0], "expected": 44.5}, {"input": [44.5, -91.5], "expected": 44.5}, {"input": [44.5, -91.0], "expected": 44.5}, {"input": [44.5, -90.5], "expected": 44.5}, {"input": [44.5, -90.0], "expected": 44.5}, {"input": [44.5, -89.5], "expected": 44.5}, {"input": [44.5, -89.0], "expected": 44.5}, {"input": [44.5, -88.5], "expected": 44.5}, {"input": [44.5, -88.0], "expected": 44.5}, {"input": [44.5, -87.5], "expected": 44.5}, {"input": [44.5, -87.0], "expected": 44.5}, {"input": [44.5, -86.5], "expected": 44.5}, {"input": [44.5, -86.0], "expected": 44.5}, {"input": [44.5, -85.5], "expected": 44.5}, {"input": [44.5, -85.0], "expected": 44.5}, {"input": [44.5, -84.5], "expected": 44.5}, {"input": [44.5, -84.0], "expected": 44.5}, {"input": [44.5, -83.5], "expected": 44.5}, {"input": [44.5, -83.0], "expected": 44.5}, {"input": [44.5, -82.5], "expected": 44.5}, {"input": [44.5, -82.0], "expected": 44.5}, {"input": [44.5, -81.5], "expected": 44.5}, {"input": [44.5, -81.0], "expected": 44.5}, {"input": [44.5, -80.5], "expected": 44.5}, {"input": [44.5, -80.0], "expected": 44.5}, {"input": [44.5, -79.5], "expected": 44.5}, {"input": [44.5, -79.0], "expected": 44.5}, {"input": [44.5, -78.5], "expected": 44.5}, {"input": [44.5, -78.0], "expected": 44.5}, {"input": [44.5, -77.5], "expected": 44.5}, {"input": [44.5, -77.0], "expected": 44.5}, {"input": [44.5, -76.5], "expected": 44.5}, {"input": [44.5, -76.0], "expected": 44.5}, {"input": [44.5, -75.5], "expected": 44.5}, {"input": [44.5, -75.0], "expected": 44.5}, {"input": [44.5, -74.5], "expected": 44.5}, {"input": [44.5, -74.0], "expected": 44.5}, {"input": [44.5, -73.5], "expected": 44.5}, {"input": [44.5, -73.0], "expected": 44.5}, {"input": [44.5, -72.5], "expected": 44.5}, {"input": [44.5, -72.0], "expected": 44.5}, {"input": [44.5, -71.5], "expected": 44.5}, {"input": [44.5, -71.0], "expected": 44.5}, {"input": [44.5, -70.5], "expected": 44.5}, {"input": [44.5, -70.0], "expected": 44.5}, {"input": [44.5, -69.5], "expected": 44.5}, {"input": [44.5, -69.0], "expected": 44.5}, {"input": [44.5, -68.5], "expected": 44.5}, {"input": [44.5, -68.0], "expected": 44.5}, {"input": [44.5, -67.5], "expected": 44.5}, {"input": [44.5, -67.0], "expected": 44.5}, {"input": [44.5, -66.5], "expected": 44.5}, {"input": [44.5, -66.0], "expected": 44.5}, {"input": [44.5, -65.5], "expected": 44.5}, {"input": [44.5, -65.0], "expected": 44.5}, {"input": [44.5, -64.5], "expected": 44.5}, {"input": [44.5, -64.0], "expected": 44.5}, {"input": [44.5, -63.5], "expected": 44.5}, {"input": [44.5, -63.0], "expected": 44.5}, {"input": [44.5, -62.5], "expected": 44.5}, {"input": [44.5, -62.0], "expected": 44.5}, {"input": [44.5, -61.5], "expected": 44.5}, {"input": [44.5, -61.0], "expected": 44.5}, {"input": [44.5, -60.5], "expected": 44.5}, {"input": [44.5, -60.0], "expected": 44.5}, {"input": [44.5, -59.5], "expected": 44.5}, {"input": [44.5, -59.0], "expected": 44.5}, {"input": [44.5, -58.5], "expected": 44.5}, {"input": [44.5, -58.0], "expected": 44.5}, {"input": [44.5, -57.5], "expected": 44.5}, {"input": [44.5, -57.0], "expected": 44.5}, {"input": [44.5, -56.5], "expected": 44.5}, {"input": [44.5, -56.0], "expected": 44.5}, {"input": [44.5, -55.5], "expected": 44.5}, {"input": [44.5, -55.0], "expected": 44.5}, {"input": [44.5, -54.5], "expected": 44.5}, {"input": [44.5, -54.0], "expected": 44.5}, {"input": [44.5, -53.5], "expected": 44.5}, {"input": [44.5, -53.0], "expected": 44.5}, {"input": [44.5, -52.5], "expected": 44.5}, {"input": [44.5, -52.0], "expected": 44.5}, {"input": [44.5, -51.5], "expected": 44.5}, {"input": [44.5, -51.0], "expected": 44.5}, {"input": [44.5, -50.5], "expected": 44.5}, {"input": [44.5, -50.0], "expected": 44.5}, {"input": [44.5, -49.5], "expected": 44.5}, {"input": [44.5, -49.0], "expected": 44.5}, {"input": [44.5, -48.5], "expected": 44.5}, {"input": [44.5, -48.0], "expected": 44.5}, {"input": [44.5, -47.5], "expected": 44.5}, {"input": [44.5, -47.0], "expected": 44.5}, {"input": [44.5, -46.5], "expected": 44.5}, {"input": [44.5, -46.0], "expected": 44.5}, {"input": [44.5, -45.5], "expected": 44.5}, {"input": [44.5, -45.0], "expected": 44.5}, {"input": [44.5, -44.5], "expected": 44.5}, {"input": [44.5, -44.0], "expected": 44.5}, {"input": [44.5, -43.5], "expected": 44.5}, {"input": [44.5, -43.0], "expected": 44.5}, {"input": [44.5, -42.5], "expected": 44.5}, {"input": [44.5, -42.0], "expected": 44.5}, {"input": [44.5, -41.5], "expected": 44.5}, {"input": [44.5, -41.0], "expected": 44.5}, {"input": [44.5, -40.5], "expected": 44.5}, {"input": [44.5, -40.0], "expected": 44.5}, {"input": [44.5, -39.5], "expected": 44.5}, {"input": [44.5, -39.0], "expected": 44.5}, {"input": [44.5, -38.5], "expected": 44.5}, {"input": [44.5, -38.0], "expected": 44.5}, {"input": [44.5, -37.5], "expected": 44.5}, {"input": [44.5, -37.0], "expected": 44.5}, {"input": [44.5, -36.5], "expected": 44.5}, {"input": [44.5, -36.0], "expected": 44.5}, {"input": [44.5, -35.5], "expected": 44.5}, {"input": [44.5, -35.0], "expected": 44.5}, {"input": [44.5, -34.5], "expected": 44.5}, {"input": [44.5, -34.0], "expected": 44.5}, {"input": [44.5, -33.5], "expected": 44.5}, {"input": [44.5, -33.0], "expected": 44.5}, {"input": [44.5, -32.5], "expected": 44.5}, {"input": [44.5, -32.0], "expected": 44.5}, {"input": [44.5, -31.5], "expected": 44.5}, {"input": [44.5, -31.0], "expected": 44.5}, {"input": [44.5, -30.5], "expected": 44.5}, {"input": [44.5, -30.0], "expected": 44.5}, {"input": [44.5, -29.5], "expected": 44.5}, {"input": [44.5, -29.0], "expected": 44.5}, {"input": [44.5, -28.5], "expected": 44.5}, {"input": [44.5, -28.0], "expected": 44.5}, {"input": [44.5, -27.5], "expected": 44.5}, {"input": [44.5, -27.0], "expected": 44.5}, {"input": [44.5, -26.5], "expected": 44.5}, {"input": [44.5, -26.0], "expected": 44.5}, {"input": [44.5, -25.5], "expected": 44.5}, {"input": [44.5, -25.0], "expected": 44.5}, {"input": [44.5, -24.5], "expected": 44.5}, {"input": [44.5, -24.0], "expected": 44.5}, {"input": [44.5, -23.5], "expected": 44.5}, {"input": [44.5, -23.0], "expected": 44.5}, {"input": [44.5, -22.5], "expected": 44.5}, {"input": [44.5, -22.0], "expected": 44.5}, {"input": [44.5, -21.5], "expected": 44.5}, {"input": [44.5, -21.0], "expected": 44.5}, {"input": [44.5, -20.5], "expected": 44.5}, {"input": [44.5, -20.0], "expected": 44.5}, {"input": [44.5, -19.5], "expected": 44.5}, {"input": [44.5, -19.0], "expected": 44.5}, {"input": [44.5, -18.5], "expected": 44.5}, {"input": [44.5, -18.0], "expected": 44.5}, {"input": [44.5, -17.5], "expected": 44.5}, {"input": [44.5, -17.0], "expected": 44.5}, {"input": [44.5, -16.5], "expected": 44.5}, {"input": [44.5, -16.0], "expected": 44.5}, {"input": [44.5, -15.5], "expected": 44.5}, {"input": [44.5, -15.0], "expected": 44.5}, {"input": [44.5, -14.5], "expected": 44.5}, {"input": [44.5, -14.0], "expected": 44.5}, {"input": [44.5, -13.5], "expected": 44.5}, {"input": [44.5, -13.0], "expected": 44.5}, {"input": [44.5, -12.5], "expected": 44.5}, {"input": [44.5, -12.0], "expected": 44.5}, {"input": [44.5, -11.5], "expected": 44.5}, {"input": [44.5, -11.0], "expected": 44.5}, {"input": [44.5, -10.5], "expected": 44.5}, {"input": [44.5, -10.0], "expected": 44.5}, {"input": [44.5, -9.5], "expected": 44.5}, {"input": [44.5, -9.0], "expected": 44.5}, {"input": [44.5, -8.5], "expected": 44.5}, {"input": [44.5, -8.0], "expected": 44.5}, {"input": [44.5, -7.5], "expected": 44.5}, {"input": [44.5, -7.0], "expected": 44.5}, {"input": [44.5, -6.5], "expected": 44.5}, {"input": [44.5, -6.0], "expected": 44.5}, {"input": [44.5, -5.5], "expected": 44.5}, {"input": [44.5, -5.0], "expected": 44.5}, {"input": [44.5, -4.5], "expected": 44.5}, {"input": [44.5, -4.0], "expected": 44.5}, {"input": [44.5, -3.5], "expected": 44.5}, {"input": [44.5, -3.0], "expected": 44.5}, {"input": [44.5, -2.5], "expected": 44.5}, {"input": [44.5, -2.0], "expected": 44.5}, {"input": [44.5, -1.5], "expected": 44.5}, {"input": [44.5, -1.0], "expected": 44.5}, {"input": [44.5, -0.5], "expected": 44.5}, {"input": [44.5, 0.0], "expected": 44.5}, {"input": [44.5, 0.5], "expected": 44.5}, {"input": [44.5, 1.0], "expected": 44.5}, {"input": [44.5, 1.5], "expected": 44.5}, {"input": [44.5, 2.0], "expected": 44.5}, {"input": [44.5, 2.5], "expected": 44.5}, {"input": [44.5, 3.0], "expected": 44.5}, {"input": [44.5, 3.5], "expected": 44.5}, {"input": [44.5, 4.0], "expected": 44.5}, {"input": [44.5, 4.5], "expected": 44.5}, {"input": [44.5, 5.0], "expected": 44.5}, {"input": [44.5, 5.5], "expected": 44.5}, {"input": [44.5, 6.0], "expected": 44.5}, {"input": [44.5, 6.5], "expected": 44.5}, {"input": [44.5, 7.0], "expected": 44.5}, {"input": [44.5, 7.5], "expected": 44.5}, {"input": [44.5, 8.0], "expected": 44.5}, {"input": [44.5, 8.5], "expected": 44.5}, {"input": [44.5, 9.0], "expected": 44.5}, {"input": [44.5, 9.5], "expected": 44.5}, {"input": [44.5, 10.0], "expected": 44.5}, {"input": [44.5, 10.5], "expected": 44.5}, {"input": [44.5, 11.0], "expected": 44.5}, {"input": [44.5, 11.5], "expected": 44.50000000000001}, {"input": [44.5, 12.0], "expected": 44.50000000000001}, {"input": [44.5, 12.5], "expected": 44.500000000000014}, {"input": [44.5, 13.0], "expected": 44.50000000000002}, {"input": [44.5, 13.5], "expected": 44.500000000000036}, {"input": [44.5, 14.0], "expected": 44.50000000000006}, {"input": [44.5, 14.5], "expected": 44.50000000000009}, {"input": [44.5, 15.0], "expected": 44.500000000000156}, {"input": [44.5, 15.5], "expected": 44.500000000000256}, {"input": [44.5, 16.0], "expected": 44.50000000000042}, {"input": [44.5, 16.5], "expected": 44.50000000000069}, {"input": [44.5, 17.0], "expected": 44.50000000000114}, {"input": [44.5, 17.5], "expected": 44.50000000000188}, {"input": [44.5, 18.0], "expected": 44.5000000000031}, {"input": [44.5, 18.5], "expected": 44.50000000000511}, {"input": [44.5, 19.0], "expected": 44.50000000000842}, {"input": [44.5, 19.5], "expected": 44.50000000001389}, {"input": [44.5, 20.0], "expected": 44.5000000000229}, {"input": [44.5, 20.5], "expected": 44.50000000003775}, {"input": [44.5, 21.0], "expected": 44.50000000006224}, {"input": [44.5, 21.5], "expected": 44.50000000010262}, {"input": [44.5, 22.0], "expected": 44.50000000016919}, {"input": [44.5, 22.5], "expected": 44.500000000278945}, {"input": [44.5, 23.0], "expected": 44.500000000459906}, {"input": [44.5, 23.5], "expected": 44.500000000758256}, {"input": [44.5, 24.0], "expected": 44.50000000125015}, {"input": [44.5, 24.5], "expected": 44.50000000206116}, {"input": [44.5, 25.0], "expected": 44.50000000339827}, {"input": [44.5, 25.5], "expected": 44.50000000560279}, {"input": [44.5, 26.0], "expected": 44.500000009237446}, {"input": [44.5, 26.5], "expected": 44.50000001522998}, {"input": [44.5, 27.0], "expected": 44.50000002510999}, {"input": [44.5, 27.5], "expected": 44.500000041399375}, {"input": [44.5, 28.0], "expected": 44.50000006825603}, {"input": [44.5, 28.5], "expected": 44.50000011253517}, {"input": [44.5, 29.0], "expected": 44.50000018553912}, {"input": [44.5, 29.5], "expected": 44.500000305902276}, {"input": [44.5, 30.0], "expected": 44.50000050434753}, {"input": [44.5, 30.5], "expected": 44.500000831528375}, {"input": [44.5, 31.0], "expected": 44.500001370958145}, {"input": [44.5, 31.5], "expected": 44.50000226032685}, {"input": [44.5, 32.0], "expected": 44.50000372664623}, {"input": [44.5, 32.5], "expected": 44.50000614419348}, {"input": [44.5, 33.0], "expected": 44.50001013004229}, {"input": [44.5, 33.5], "expected": 44.50001670156132}, {"input": [44.5, 34.0], "expected": 44.50002753607023}, {"input": [44.5, 34.5], "expected": 44.50004539889922}, {"input": [44.5, 35.0], "expected": 44.50007484902863}, {"input": [44.5, 35.5], "expected": 44.50012340218972}, {"input": [44.5, 36.0], "expected": 44.50020344767213}, {"input": [44.5, 36.5], "expected": 44.5003354063729}, {"input": [44.5, 37.0], "expected": 44.50055293147536}, {"input": [44.5, 37.5], "expected": 44.50091146645377}, {"input": [44.5, 38.0], "expected": 44.50150231015976}, {"input": [44.5, 38.5], "expected": 44.50247568513773}, {"input": [44.5, 39.0], "expected": 44.50407844327057}, {"input": [44.5, 39.5], "expected": 44.50671534848912}, {"input": [44.5, 40.0], "expected": 44.5110477448486}, {"input": [44.5, 40.5], "expected": 44.51814992791781}, {"input": [44.5, 41.0], "expected": 44.52975041827262}, {"input": [44.5, 41.5], "expected": 44.548587351573744}, {"input": [44.5, 42.0], "expected": 44.57888973429255}, {"input": [44.5, 42.5], "expected": 44.62692801104297}, {"input": [44.5, 43.0], "expected": 44.70141327798275}, {"input": [44.5, 43.5], "expected": 44.81326168751822}, {"input": [44.5, 44.0], "expected": 44.97407698418011}, {"input": [44.5, 44.5], "expected": 45.19314718055995}, {"input": [44.5, 45.0], "expected": 45.47407698418011}, {"input": [44.5, 45.5], "expected": 45.81326168751822}, {"input": [44.5, 46.0], "expected": 46.20141327798275}, {"input": [44.5, 46.5], "expected": 46.62692801104297}, {"input": [44.5, 47.0], "expected": 47.07888973429255}, {"input": [44.5, 47.5], "expected": 47.548587351573744}, {"input": [44.5, 48.0], "expected": 48.02975041827262}, {"input": [44.5, 48.5], "expected": 48.51814992791781}, {"input": [44.5, 49.0], "expected": 49.0110477448486}, {"input": [44.5, 49.5], "expected": 49.50671534848912}, {"input": [44.5, 50.0], "expected": 50.00407844327057}, {"input": [44.5, 50.5], "expected": 50.50247568513773}, {"input": [44.5, 51.0], "expected": 51.00150231015976}, {"input": [44.5, 51.5], "expected": 51.50091146645377}, {"input": [44.5, 52.0], "expected": 52.00055293147536}, {"input": [44.5, 52.5], "expected": 52.5003354063729}, {"input": [44.5, 53.0], "expected": 53.00020344767213}, {"input": [44.5, 53.5], "expected": 53.50012340218972}, {"input": [44.5, 54.0], "expected": 54.00007484902863}, {"input": [44.5, 54.5], "expected": 54.50004539889922}, {"input": [44.5, 55.0], "expected": 55.00002753607023}, {"input": [44.5, 55.5], "expected": 55.50001670156132}, {"input": [44.5, 56.0], "expected": 56.00001013004229}, {"input": [44.5, 56.5], "expected": 56.50000614419348}, {"input": [44.5, 57.0], "expected": 57.00000372664623}, {"input": [44.5, 57.5], "expected": 57.50000226032685}, {"input": [44.5, 58.0], "expected": 58.000001370958145}, {"input": [44.5, 58.5], "expected": 58.500000831528375}, {"input": [44.5, 59.0], "expected": 59.00000050434753}, {"input": [44.5, 59.5], "expected": 59.500000305902276}, {"input": [44.5, 60.0], "expected": 60.00000018553912}, {"input": [44.5, 60.5], "expected": 60.50000011253517}, {"input": [44.5, 61.0], "expected": 61.00000006825603}, {"input": [44.5, 61.5], "expected": 61.500000041399375}, {"input": [44.5, 62.0], "expected": 62.00000002510999}, {"input": [44.5, 62.5], "expected": 62.50000001522998}, {"input": [44.5, 63.0], "expected": 63.000000009237446}, {"input": [44.5, 63.5], "expected": 63.50000000560279}, {"input": [44.5, 64.0], "expected": 64.00000000339827}, {"input": [44.5, 64.5], "expected": 64.50000000206116}, {"input": [44.5, 65.0], "expected": 65.00000000125016}, {"input": [44.5, 65.5], "expected": 65.50000000075826}, {"input": [44.5, 66.0], "expected": 66.0000000004599}, {"input": [44.5, 66.5], "expected": 66.50000000027894}, {"input": [44.5, 67.0], "expected": 67.0000000001692}, {"input": [44.5, 67.5], "expected": 67.50000000010262}, {"input": [44.5, 68.0], "expected": 68.00000000006224}, {"input": [44.5, 68.5], "expected": 68.50000000003776}, {"input": [44.5, 69.0], "expected": 69.0000000000229}, {"input": [44.5, 69.5], "expected": 69.50000000001388}, {"input": [44.5, 70.0], "expected": 70.00000000000843}, {"input": [44.5, 70.5], "expected": 70.50000000000512}, {"input": [44.5, 71.0], "expected": 71.0000000000031}, {"input": [44.5, 71.5], "expected": 71.50000000000188}, {"input": [44.5, 72.0], "expected": 72.00000000000114}, {"input": [44.5, 72.5], "expected": 72.5000000000007}, {"input": [44.5, 73.0], "expected": 73.00000000000043}, {"input": [44.5, 73.5], "expected": 73.50000000000026}, {"input": [44.5, 74.0], "expected": 74.00000000000016}, {"input": [44.5, 74.5], "expected": 74.5000000000001}, {"input": [44.5, 75.0], "expected": 75.00000000000006}, {"input": [44.5, 75.5], "expected": 75.50000000000003}, {"input": [44.5, 76.0], "expected": 76.00000000000001}, {"input": [44.5, 76.5], "expected": 76.50000000000001}, {"input": [44.5, 77.0], "expected": 77.00000000000001}, {"input": [44.5, 77.5], "expected": 77.5}, {"input": [44.5, 78.0], "expected": 78.0}, {"input": [44.5, 78.5], "expected": 78.5}, {"input": [44.5, 79.0], "expected": 79.0}, {"input": [44.5, 79.5], "expected": 79.5}, {"input": [44.5, 80.0], "expected": 80.0}, {"input": [44.5, 80.5], "expected": 80.5}, {"input": [44.5, 81.0], "expected": 81.0}, {"input": [44.5, 81.5], "expected": 81.5}, {"input": [44.5, 82.0], "expected": 82.0}, {"input": [44.5, 82.5], "expected": 82.5}, {"input": [44.5, 83.0], "expected": 83.0}, {"input": [44.5, 83.5], "expected": 83.5}, {"input": [44.5, 84.0], "expected": 84.0}, {"input": [44.5, 84.5], "expected": 84.5}, {"input": [44.5, 85.0], "expected": 85.0}, {"input": [44.5, 85.5], "expected": 85.5}, {"input": [44.5, 86.0], "expected": 86.0}, {"input": [44.5, 86.5], "expected": 86.5}, {"input": [44.5, 87.0], "expected": 87.0}, {"input": [44.5, 87.5], "expected": 87.5}, {"input": [44.5, 88.0], "expected": 88.0}, {"input": [44.5, 88.5], "expected": 88.5}, {"input": [44.5, 89.0], "expected": 89.0}, {"input": [44.5, 89.5], "expected": 89.5}, {"input": [44.5, 90.0], "expected": 90.0}, {"input": [44.5, 90.5], "expected": 90.5}, {"input": [44.5, 91.0], "expected": 91.0}, {"input": [44.5, 91.5], "expected": 91.5}, {"input": [44.5, 92.0], "expected": 92.0}, {"input": [44.5, 92.5], "expected": 92.5}, {"input": [44.5, 93.0], "expected": 93.0}, {"input": [44.5, 93.5], "expected": 93.5}, {"input": [44.5, 94.0], "expected": 94.0}, {"input": [44.5, 94.5], "expected": 94.5}, {"input": [44.5, 95.0], "expected": 95.0}, {"input": [44.5, 95.5], "expected": 95.5}, {"input": [44.5, 96.0], "expected": 96.0}, {"input": [44.5, 96.5], "expected": 96.5}, {"input": [44.5, 97.0], "expected": 97.0}, {"input": [44.5, 97.5], "expected": 97.5}, {"input": [44.5, 98.0], "expected": 98.0}, {"input": [44.5, 98.5], "expected": 98.5}, {"input": [44.5, 99.0], "expected": 99.0}, {"input": [44.5, 99.5], "expected": 99.5}, {"input": [45.0, -100.0], "expected": 45.0}, {"input": [45.0, -99.5], "expected": 45.0}, {"input": [45.0, -99.0], "expected": 45.0}, {"input": [45.0, -98.5], "expected": 45.0}, {"input": [45.0, -98.0], "expected": 45.0}, {"input": [45.0, -97.5], "expected": 45.0}, {"input": [45.0, -97.0], "expected": 45.0}, {"input": [45.0, -96.5], "expected": 45.0}, {"input": [45.0, -96.0], "expected": 45.0}, {"input": [45.0, -95.5], "expected": 45.0}, {"input": [45.0, -95.0], "expected": 45.0}, {"input": [45.0, -94.5], "expected": 45.0}, {"input": [45.0, -94.0], "expected": 45.0}, {"input": [45.0, -93.5], "expected": 45.0}, {"input": [45.0, -93.0], "expected": 45.0}, {"input": [45.0, -92.5], "expected": 45.0}, {"input": [45.0, -92.0], "expected": 45.0}, {"input": [45.0, -91.5], "expected": 45.0}, {"input": [45.0, -91.0], "expected": 45.0}, {"input": [45.0, -90.5], "expected": 45.0}, {"input": [45.0, -90.0], "expected": 45.0}, {"input": [45.0, -89.5], "expected": 45.0}, {"input": [45.0, -89.0], "expected": 45.0}, {"input": [45.0, -88.5], "expected": 45.0}, {"input": [45.0, -88.0], "expected": 45.0}, {"input": [45.0, -87.5], "expected": 45.0}, {"input": [45.0, -87.0], "expected": 45.0}, {"input": [45.0, -86.5], "expected": 45.0}, {"input": [45.0, -86.0], "expected": 45.0}, {"input": [45.0, -85.5], "expected": 45.0}, {"input": [45.0, -85.0], "expected": 45.0}, {"input": [45.0, -84.5], "expected": 45.0}, {"input": [45.0, -84.0], "expected": 45.0}, {"input": [45.0, -83.5], "expected": 45.0}, {"input": [45.0, -83.0], "expected": 45.0}, {"input": [45.0, -82.5], "expected": 45.0}, {"input": [45.0, -82.0], "expected": 45.0}, {"input": [45.0, -81.5], "expected": 45.0}, {"input": [45.0, -81.0], "expected": 45.0}, {"input": [45.0, -80.5], "expected": 45.0}, {"input": [45.0, -80.0], "expected": 45.0}, {"input": [45.0, -79.5], "expected": 45.0}, {"input": [45.0, -79.0], "expected": 45.0}, {"input": [45.0, -78.5], "expected": 45.0}, {"input": [45.0, -78.0], "expected": 45.0}, {"input": [45.0, -77.5], "expected": 45.0}, {"input": [45.0, -77.0], "expected": 45.0}, {"input": [45.0, -76.5], "expected": 45.0}, {"input": [45.0, -76.0], "expected": 45.0}, {"input": [45.0, -75.5], "expected": 45.0}, {"input": [45.0, -75.0], "expected": 45.0}, {"input": [45.0, -74.5], "expected": 45.0}, {"input": [45.0, -74.0], "expected": 45.0}, {"input": [45.0, -73.5], "expected": 45.0}, {"input": [45.0, -73.0], "expected": 45.0}, {"input": [45.0, -72.5], "expected": 45.0}, {"input": [45.0, -72.0], "expected": 45.0}, {"input": [45.0, -71.5], "expected": 45.0}, {"input": [45.0, -71.0], "expected": 45.0}, {"input": [45.0, -70.5], "expected": 45.0}, {"input": [45.0, -70.0], "expected": 45.0}, {"input": [45.0, -69.5], "expected": 45.0}, {"input": [45.0, -69.0], "expected": 45.0}, {"input": [45.0, -68.5], "expected": 45.0}, {"input": [45.0, -68.0], "expected": 45.0}, {"input": [45.0, -67.5], "expected": 45.0}, {"input": [45.0, -67.0], "expected": 45.0}, {"input": [45.0, -66.5], "expected": 45.0}, {"input": [45.0, -66.0], "expected": 45.0}, {"input": [45.0, -65.5], "expected": 45.0}, {"input": [45.0, -65.0], "expected": 45.0}, {"input": [45.0, -64.5], "expected": 45.0}, {"input": [45.0, -64.0], "expected": 45.0}, {"input": [45.0, -63.5], "expected": 45.0}, {"input": [45.0, -63.0], "expected": 45.0}, {"input": [45.0, -62.5], "expected": 45.0}, {"input": [45.0, -62.0], "expected": 45.0}, {"input": [45.0, -61.5], "expected": 45.0}, {"input": [45.0, -61.0], "expected": 45.0}, {"input": [45.0, -60.5], "expected": 45.0}, {"input": [45.0, -60.0], "expected": 45.0}, {"input": [45.0, -59.5], "expected": 45.0}, {"input": [45.0, -59.0], "expected": 45.0}, {"input": [45.0, -58.5], "expected": 45.0}, {"input": [45.0, -58.0], "expected": 45.0}, {"input": [45.0, -57.5], "expected": 45.0}, {"input": [45.0, -57.0], "expected": 45.0}, {"input": [45.0, -56.5], "expected": 45.0}, {"input": [45.0, -56.0], "expected": 45.0}, {"input": [45.0, -55.5], "expected": 45.0}, {"input": [45.0, -55.0], "expected": 45.0}, {"input": [45.0, -54.5], "expected": 45.0}, {"input": [45.0, -54.0], "expected": 45.0}, {"input": [45.0, -53.5], "expected": 45.0}, {"input": [45.0, -53.0], "expected": 45.0}, {"input": [45.0, -52.5], "expected": 45.0}, {"input": [45.0, -52.0], "expected": 45.0}, {"input": [45.0, -51.5], "expected": 45.0}, {"input": [45.0, -51.0], "expected": 45.0}, {"input": [45.0, -50.5], "expected": 45.0}, {"input": [45.0, -50.0], "expected": 45.0}, {"input": [45.0, -49.5], "expected": 45.0}, {"input": [45.0, -49.0], "expected": 45.0}, {"input": [45.0, -48.5], "expected": 45.0}, {"input": [45.0, -48.0], "expected": 45.0}, {"input": [45.0, -47.5], "expected": 45.0}, {"input": [45.0, -47.0], "expected": 45.0}, {"input": [45.0, -46.5], "expected": 45.0}, {"input": [45.0, -46.0], "expected": 45.0}, {"input": [45.0, -45.5], "expected": 45.0}, {"input": [45.0, -45.0], "expected": 45.0}, {"input": [45.0, -44.5], "expected": 45.0}, {"input": [45.0, -44.0], "expected": 45.0}, {"input": [45.0, -43.5], "expected": 45.0}, {"input": [45.0, -43.0], "expected": 45.0}, {"input": [45.0, -42.5], "expected": 45.0}, {"input": [45.0, -42.0], "expected": 45.0}, {"input": [45.0, -41.5], "expected": 45.0}, {"input": [45.0, -41.0], "expected": 45.0}, {"input": [45.0, -40.5], "expected": 45.0}, {"input": [45.0, -40.0], "expected": 45.0}, {"input": [45.0, -39.5], "expected": 45.0}, {"input": [45.0, -39.0], "expected": 45.0}, {"input": [45.0, -38.5], "expected": 45.0}, {"input": [45.0, -38.0], "expected": 45.0}, {"input": [45.0, -37.5], "expected": 45.0}, {"input": [45.0, -37.0], "expected": 45.0}, {"input": [45.0, -36.5], "expected": 45.0}, {"input": [45.0, -36.0], "expected": 45.0}, {"input": [45.0, -35.5], "expected": 45.0}, {"input": [45.0, -35.0], "expected": 45.0}, {"input": [45.0, -34.5], "expected": 45.0}, {"input": [45.0, -34.0], "expected": 45.0}, {"input": [45.0, -33.5], "expected": 45.0}, {"input": [45.0, -33.0], "expected": 45.0}, {"input": [45.0, -32.5], "expected": 45.0}, {"input": [45.0, -32.0], "expected": 45.0}, {"input": [45.0, -31.5], "expected": 45.0}, {"input": [45.0, -31.0], "expected": 45.0}, {"input": [45.0, -30.5], "expected": 45.0}, {"input": [45.0, -30.0], "expected": 45.0}, {"input": [45.0, -29.5], "expected": 45.0}, {"input": [45.0, -29.0], "expected": 45.0}, {"input": [45.0, -28.5], "expected": 45.0}, {"input": [45.0, -28.0], "expected": 45.0}, {"input": [45.0, -27.5], "expected": 45.0}, {"input": [45.0, -27.0], "expected": 45.0}, {"input": [45.0, -26.5], "expected": 45.0}, {"input": [45.0, -26.0], "expected": 45.0}, {"input": [45.0, -25.5], "expected": 45.0}, {"input": [45.0, -25.0], "expected": 45.0}, {"input": [45.0, -24.5], "expected": 45.0}, {"input": [45.0, -24.0], "expected": 45.0}, {"input": [45.0, -23.5], "expected": 45.0}, {"input": [45.0, -23.0], "expected": 45.0}, {"input": [45.0, -22.5], "expected": 45.0}, {"input": [45.0, -22.0], "expected": 45.0}, {"input": [45.0, -21.5], "expected": 45.0}, {"input": [45.0, -21.0], "expected": 45.0}, {"input": [45.0, -20.5], "expected": 45.0}, {"input": [45.0, -20.0], "expected": 45.0}, {"input": [45.0, -19.5], "expected": 45.0}, {"input": [45.0, -19.0], "expected": 45.0}, {"input": [45.0, -18.5], "expected": 45.0}, {"input": [45.0, -18.0], "expected": 45.0}, {"input": [45.0, -17.5], "expected": 45.0}, {"input": [45.0, -17.0], "expected": 45.0}, {"input": [45.0, -16.5], "expected": 45.0}, {"input": [45.0, -16.0], "expected": 45.0}, {"input": [45.0, -15.5], "expected": 45.0}, {"input": [45.0, -15.0], "expected": 45.0}, {"input": [45.0, -14.5], "expected": 45.0}, {"input": [45.0, -14.0], "expected": 45.0}, {"input": [45.0, -13.5], "expected": 45.0}, {"input": [45.0, -13.0], "expected": 45.0}, {"input": [45.0, -12.5], "expected": 45.0}, {"input": [45.0, -12.0], "expected": 45.0}, {"input": [45.0, -11.5], "expected": 45.0}, {"input": [45.0, -11.0], "expected": 45.0}, {"input": [45.0, -10.5], "expected": 45.0}, {"input": [45.0, -10.0], "expected": 45.0}, {"input": [45.0, -9.5], "expected": 45.0}, {"input": [45.0, -9.0], "expected": 45.0}, {"input": [45.0, -8.5], "expected": 45.0}, {"input": [45.0, -8.0], "expected": 45.0}, {"input": [45.0, -7.5], "expected": 45.0}, {"input": [45.0, -7.0], "expected": 45.0}, {"input": [45.0, -6.5], "expected": 45.0}, {"input": [45.0, -6.0], "expected": 45.0}, {"input": [45.0, -5.5], "expected": 45.0}, {"input": [45.0, -5.0], "expected": 45.0}, {"input": [45.0, -4.5], "expected": 45.0}, {"input": [45.0, -4.0], "expected": 45.0}, {"input": [45.0, -3.5], "expected": 45.0}, {"input": [45.0, -3.0], "expected": 45.0}, {"input": [45.0, -2.5], "expected": 45.0}, {"input": [45.0, -2.0], "expected": 45.0}, {"input": [45.0, -1.5], "expected": 45.0}, {"input": [45.0, -1.0], "expected": 45.0}, {"input": [45.0, -0.5], "expected": 45.0}, {"input": [45.0, 0.0], "expected": 45.0}, {"input": [45.0, 0.5], "expected": 45.0}, {"input": [45.0, 1.0], "expected": 45.0}, {"input": [45.0, 1.5], "expected": 45.0}, {"input": [45.0, 2.0], "expected": 45.0}, {"input": [45.0, 2.5], "expected": 45.0}, {"input": [45.0, 3.0], "expected": 45.0}, {"input": [45.0, 3.5], "expected": 45.0}, {"input": [45.0, 4.0], "expected": 45.0}, {"input": [45.0, 4.5], "expected": 45.0}, {"input": [45.0, 5.0], "expected": 45.0}, {"input": [45.0, 5.5], "expected": 45.0}, {"input": [45.0, 6.0], "expected": 45.0}, {"input": [45.0, 6.5], "expected": 45.0}, {"input": [45.0, 7.0], "expected": 45.0}, {"input": [45.0, 7.5], "expected": 45.0}, {"input": [45.0, 8.0], "expected": 45.0}, {"input": [45.0, 8.5], "expected": 45.0}, {"input": [45.0, 9.0], "expected": 45.0}, {"input": [45.0, 9.5], "expected": 45.0}, {"input": [45.0, 10.0], "expected": 45.0}, {"input": [45.0, 10.5], "expected": 45.0}, {"input": [45.0, 11.0], "expected": 45.0}, {"input": [45.0, 11.5], "expected": 45.0}, {"input": [45.0, 12.0], "expected": 45.00000000000001}, {"input": [45.0, 12.5], "expected": 45.00000000000001}, {"input": [45.0, 13.0], "expected": 45.000000000000014}, {"input": [45.0, 13.5], "expected": 45.00000000000002}, {"input": [45.0, 14.0], "expected": 45.000000000000036}, {"input": [45.0, 14.5], "expected": 45.00000000000006}, {"input": [45.0, 15.0], "expected": 45.00000000000009}, {"input": [45.0, 15.5], "expected": 45.000000000000156}, {"input": [45.0, 16.0], "expected": 45.000000000000256}, {"input": [45.0, 16.5], "expected": 45.00000000000042}, {"input": [45.0, 17.0], "expected": 45.00000000000069}, {"input": [45.0, 17.5], "expected": 45.00000000000114}, {"input": [45.0, 18.0], "expected": 45.00000000000188}, {"input": [45.0, 18.5], "expected": 45.0000000000031}, {"input": [45.0, 19.0], "expected": 45.00000000000511}, {"input": [45.0, 19.5], "expected": 45.00000000000842}, {"input": [45.0, 20.0], "expected": 45.00000000001389}, {"input": [45.0, 20.5], "expected": 45.0000000000229}, {"input": [45.0, 21.0], "expected": 45.00000000003775}, {"input": [45.0, 21.5], "expected": 45.00000000006224}, {"input": [45.0, 22.0], "expected": 45.00000000010262}, {"input": [45.0, 22.5], "expected": 45.00000000016919}, {"input": [45.0, 23.0], "expected": 45.000000000278945}, {"input": [45.0, 23.5], "expected": 45.000000000459906}, {"input": [45.0, 24.0], "expected": 45.000000000758256}, {"input": [45.0, 24.5], "expected": 45.00000000125015}, {"input": [45.0, 25.0], "expected": 45.00000000206116}, {"input": [45.0, 25.5], "expected": 45.00000000339827}, {"input": [45.0, 26.0], "expected": 45.00000000560279}, {"input": [45.0, 26.5], "expected": 45.000000009237446}, {"input": [45.0, 27.0], "expected": 45.00000001522998}, {"input": [45.0, 27.5], "expected": 45.00000002510999}, {"input": [45.0, 28.0], "expected": 45.000000041399375}, {"input": [45.0, 28.5], "expected": 45.00000006825603}, {"input": [45.0, 29.0], "expected": 45.00000011253517}, {"input": [45.0, 29.5], "expected": 45.00000018553912}, {"input": [45.0, 30.0], "expected": 45.000000305902276}, {"input": [45.0, 30.5], "expected": 45.00000050434753}, {"input": [45.0, 31.0], "expected": 45.000000831528375}, {"input": [45.0, 31.5], "expected": 45.000001370958145}, {"input": [45.0, 32.0], "expected": 45.00000226032685}, {"input": [45.0, 32.5], "expected": 45.00000372664623}, {"input": [45.0, 33.0], "expected": 45.00000614419348}, {"input": [45.0, 33.5], "expected": 45.00001013004229}, {"input": [45.0, 34.0], "expected": 45.00001670156132}, {"input": [45.0, 34.5], "expected": 45.00002753607023}, {"input": [45.0, 35.0], "expected": 45.00004539889922}, {"input": [45.0, 35.5], "expected": 45.00007484902863}, {"input": [45.0, 36.0], "expected": 45.00012340218972}, {"input": [45.0, 36.5], "expected": 45.00020344767213}, {"input": [45.0, 37.0], "expected": 45.0003354063729}, {"input": [45.0, 37.5], "expected": 45.00055293147536}, {"input": [45.0, 38.0], "expected": 45.00091146645377}, {"input": [45.0, 38.5], "expected": 45.00150231015976}, {"input": [45.0, 39.0], "expected": 45.00247568513773}, {"input": [45.0, 39.5], "expected": 45.00407844327057}, {"input": [45.0, 40.0], "expected": 45.00671534848912}, {"input": [45.0, 40.5], "expected": 45.0110477448486}, {"input": [45.0, 41.0], "expected": 45.01814992791781}, {"input": [45.0, 41.5], "expected": 45.02975041827262}, {"input": [45.0, 42.0], "expected": 45.048587351573744}, {"input": [45.0, 42.5], "expected": 45.07888973429255}, {"input": [45.0, 43.0], "expected": 45.12692801104297}, {"input": [45.0, 43.5], "expected": 45.20141327798275}, {"input": [45.0, 44.0], "expected": 45.31326168751822}, {"input": [45.0, 44.5], "expected": 45.47407698418011}, {"input": [45.0, 45.0], "expected": 45.69314718055995}, {"input": [45.0, 45.5], "expected": 45.97407698418011}, {"input": [45.0, 46.0], "expected": 46.31326168751822}, {"input": [45.0, 46.5], "expected": 46.70141327798275}, {"input": [45.0, 47.0], "expected": 47.12692801104297}, {"input": [45.0, 47.5], "expected": 47.57888973429255}, {"input": [45.0, 48.0], "expected": 48.048587351573744}, {"input": [45.0, 48.5], "expected": 48.52975041827262}, {"input": [45.0, 49.0], "expected": 49.01814992791781}, {"input": [45.0, 49.5], "expected": 49.5110477448486}, {"input": [45.0, 50.0], "expected": 50.00671534848912}, {"input": [45.0, 50.5], "expected": 50.50407844327057}, {"input": [45.0, 51.0], "expected": 51.00247568513773}, {"input": [45.0, 51.5], "expected": 51.50150231015976}, {"input": [45.0, 52.0], "expected": 52.00091146645377}, {"input": [45.0, 52.5], "expected": 52.50055293147536}, {"input": [45.0, 53.0], "expected": 53.0003354063729}, {"input": [45.0, 53.5], "expected": 53.50020344767213}, {"input": [45.0, 54.0], "expected": 54.00012340218972}, {"input": [45.0, 54.5], "expected": 54.50007484902863}, {"input": [45.0, 55.0], "expected": 55.00004539889922}, {"input": [45.0, 55.5], "expected": 55.50002753607023}, {"input": [45.0, 56.0], "expected": 56.00001670156132}, {"input": [45.0, 56.5], "expected": 56.50001013004229}, {"input": [45.0, 57.0], "expected": 57.00000614419348}, {"input": [45.0, 57.5], "expected": 57.50000372664623}, {"input": [45.0, 58.0], "expected": 58.00000226032685}, {"input": [45.0, 58.5], "expected": 58.500001370958145}, {"input": [45.0, 59.0], "expected": 59.000000831528375}, {"input": [45.0, 59.5], "expected": 59.50000050434753}, {"input": [45.0, 60.0], "expected": 60.000000305902276}, {"input": [45.0, 60.5], "expected": 60.50000018553912}, {"input": [45.0, 61.0], "expected": 61.00000011253517}, {"input": [45.0, 61.5], "expected": 61.50000006825603}, {"input": [45.0, 62.0], "expected": 62.000000041399375}, {"input": [45.0, 62.5], "expected": 62.50000002510999}, {"input": [45.0, 63.0], "expected": 63.00000001522998}, {"input": [45.0, 63.5], "expected": 63.500000009237446}, {"input": [45.0, 64.0], "expected": 64.0000000056028}, {"input": [45.0, 64.5], "expected": 64.50000000339827}, {"input": [45.0, 65.0], "expected": 65.00000000206116}, {"input": [45.0, 65.5], "expected": 65.50000000125016}, {"input": [45.0, 66.0], "expected": 66.00000000075826}, {"input": [45.0, 66.5], "expected": 66.5000000004599}, {"input": [45.0, 67.0], "expected": 67.00000000027894}, {"input": [45.0, 67.5], "expected": 67.5000000001692}, {"input": [45.0, 68.0], "expected": 68.00000000010262}, {"input": [45.0, 68.5], "expected": 68.50000000006224}, {"input": [45.0, 69.0], "expected": 69.00000000003776}, {"input": [45.0, 69.5], "expected": 69.5000000000229}, {"input": [45.0, 70.0], "expected": 70.00000000001388}, {"input": [45.0, 70.5], "expected": 70.50000000000843}, {"input": [45.0, 71.0], "expected": 71.00000000000512}, {"input": [45.0, 71.5], "expected": 71.5000000000031}, {"input": [45.0, 72.0], "expected": 72.00000000000188}, {"input": [45.0, 72.5], "expected": 72.50000000000114}, {"input": [45.0, 73.0], "expected": 73.0000000000007}, {"input": [45.0, 73.5], "expected": 73.50000000000043}, {"input": [45.0, 74.0], "expected": 74.00000000000026}, {"input": [45.0, 74.5], "expected": 74.50000000000016}, {"input": [45.0, 75.0], "expected": 75.0000000000001}, {"input": [45.0, 75.5], "expected": 75.50000000000006}, {"input": [45.0, 76.0], "expected": 76.00000000000003}, {"input": [45.0, 76.5], "expected": 76.50000000000001}, {"input": [45.0, 77.0], "expected": 77.00000000000001}, {"input": [45.0, 77.5], "expected": 77.50000000000001}, {"input": [45.0, 78.0], "expected": 78.0}, {"input": [45.0, 78.5], "expected": 78.5}, {"input": [45.0, 79.0], "expected": 79.0}, {"input": [45.0, 79.5], "expected": 79.5}, {"input": [45.0, 80.0], "expected": 80.0}, {"input": [45.0, 80.5], "expected": 80.5}, {"input": [45.0, 81.0], "expected": 81.0}, {"input": [45.0, 81.5], "expected": 81.5}, {"input": [45.0, 82.0], "expected": 82.0}, {"input": [45.0, 82.5], "expected": 82.5}, {"input": [45.0, 83.0], "expected": 83.0}, {"input": [45.0, 83.5], "expected": 83.5}, {"input": [45.0, 84.0], "expected": 84.0}, {"input": [45.0, 84.5], "expected": 84.5}, {"input": [45.0, 85.0], "expected": 85.0}, {"input": [45.0, 85.5], "expected": 85.5}, {"input": [45.0, 86.0], "expected": 86.0}, {"input": [45.0, 86.5], "expected": 86.5}, {"input": [45.0, 87.0], "expected": 87.0}, {"input": [45.0, 87.5], "expected": 87.5}, {"input": [45.0, 88.0], "expected": 88.0}, {"input": [45.0, 88.5], "expected": 88.5}, {"input": [45.0, 89.0], "expected": 89.0}, {"input": [45.0, 89.5], "expected": 89.5}, {"input": [45.0, 90.0], "expected": 90.0}, {"input": [45.0, 90.5], "expected": 90.5}, {"input": [45.0, 91.0], "expected": 91.0}, {"input": [45.0, 91.5], "expected": 91.5}, {"input": [45.0, 92.0], "expected": 92.0}, {"input": [45.0, 92.5], "expected": 92.5}, {"input": [45.0, 93.0], "expected": 93.0}, {"input": [45.0, 93.5], "expected": 93.5}, {"input": [45.0, 94.0], "expected": 94.0}, {"input": [45.0, 94.5], "expected": 94.5}, {"input": [45.0, 95.0], "expected": 95.0}, {"input": [45.0, 95.5], "expected": 95.5}, {"input": [45.0, 96.0], "expected": 96.0}, {"input": [45.0, 96.5], "expected": 96.5}, {"input": [45.0, 97.0], "expected": 97.0}, {"input": [45.0, 97.5], "expected": 97.5}, {"input": [45.0, 98.0], "expected": 98.0}, {"input": [45.0, 98.5], "expected": 98.5}, {"input": [45.0, 99.0], "expected": 99.0}, {"input": [45.0, 99.5], "expected": 99.5}, {"input": [45.5, -100.0], "expected": 45.5}, {"input": [45.5, -99.5], "expected": 45.5}, {"input": [45.5, -99.0], "expected": 45.5}, {"input": [45.5, -98.5], "expected": 45.5}, {"input": [45.5, -98.0], "expected": 45.5}, {"input": [45.5, -97.5], "expected": 45.5}, {"input": [45.5, -97.0], "expected": 45.5}, {"input": [45.5, -96.5], "expected": 45.5}, {"input": [45.5, -96.0], "expected": 45.5}, {"input": [45.5, -95.5], "expected": 45.5}, {"input": [45.5, -95.0], "expected": 45.5}, {"input": [45.5, -94.5], "expected": 45.5}, {"input": [45.5, -94.0], "expected": 45.5}, {"input": [45.5, -93.5], "expected": 45.5}, {"input": [45.5, -93.0], "expected": 45.5}, {"input": [45.5, -92.5], "expected": 45.5}, {"input": [45.5, -92.0], "expected": 45.5}, {"input": [45.5, -91.5], "expected": 45.5}, {"input": [45.5, -91.0], "expected": 45.5}, {"input": [45.5, -90.5], "expected": 45.5}, {"input": [45.5, -90.0], "expected": 45.5}, {"input": [45.5, -89.5], "expected": 45.5}, {"input": [45.5, -89.0], "expected": 45.5}, {"input": [45.5, -88.5], "expected": 45.5}, {"input": [45.5, -88.0], "expected": 45.5}, {"input": [45.5, -87.5], "expected": 45.5}, {"input": [45.5, -87.0], "expected": 45.5}, {"input": [45.5, -86.5], "expected": 45.5}, {"input": [45.5, -86.0], "expected": 45.5}, {"input": [45.5, -85.5], "expected": 45.5}, {"input": [45.5, -85.0], "expected": 45.5}, {"input": [45.5, -84.5], "expected": 45.5}, {"input": [45.5, -84.0], "expected": 45.5}, {"input": [45.5, -83.5], "expected": 45.5}, {"input": [45.5, -83.0], "expected": 45.5}, {"input": [45.5, -82.5], "expected": 45.5}, {"input": [45.5, -82.0], "expected": 45.5}, {"input": [45.5, -81.5], "expected": 45.5}, {"input": [45.5, -81.0], "expected": 45.5}, {"input": [45.5, -80.5], "expected": 45.5}, {"input": [45.5, -80.0], "expected": 45.5}, {"input": [45.5, -79.5], "expected": 45.5}, {"input": [45.5, -79.0], "expected": 45.5}, {"input": [45.5, -78.5], "expected": 45.5}, {"input": [45.5, -78.0], "expected": 45.5}, {"input": [45.5, -77.5], "expected": 45.5}, {"input": [45.5, -77.0], "expected": 45.5}, {"input": [45.5, -76.5], "expected": 45.5}, {"input": [45.5, -76.0], "expected": 45.5}, {"input": [45.5, -75.5], "expected": 45.5}, {"input": [45.5, -75.0], "expected": 45.5}, {"input": [45.5, -74.5], "expected": 45.5}, {"input": [45.5, -74.0], "expected": 45.5}, {"input": [45.5, -73.5], "expected": 45.5}, {"input": [45.5, -73.0], "expected": 45.5}, {"input": [45.5, -72.5], "expected": 45.5}, {"input": [45.5, -72.0], "expected": 45.5}, {"input": [45.5, -71.5], "expected": 45.5}, {"input": [45.5, -71.0], "expected": 45.5}, {"input": [45.5, -70.5], "expected": 45.5}, {"input": [45.5, -70.0], "expected": 45.5}, {"input": [45.5, -69.5], "expected": 45.5}, {"input": [45.5, -69.0], "expected": 45.5}, {"input": [45.5, -68.5], "expected": 45.5}, {"input": [45.5, -68.0], "expected": 45.5}, {"input": [45.5, -67.5], "expected": 45.5}, {"input": [45.5, -67.0], "expected": 45.5}, {"input": [45.5, -66.5], "expected": 45.5}, {"input": [45.5, -66.0], "expected": 45.5}, {"input": [45.5, -65.5], "expected": 45.5}, {"input": [45.5, -65.0], "expected": 45.5}, {"input": [45.5, -64.5], "expected": 45.5}, {"input": [45.5, -64.0], "expected": 45.5}, {"input": [45.5, -63.5], "expected": 45.5}, {"input": [45.5, -63.0], "expected": 45.5}, {"input": [45.5, -62.5], "expected": 45.5}, {"input": [45.5, -62.0], "expected": 45.5}, {"input": [45.5, -61.5], "expected": 45.5}, {"input": [45.5, -61.0], "expected": 45.5}, {"input": [45.5, -60.5], "expected": 45.5}, {"input": [45.5, -60.0], "expected": 45.5}, {"input": [45.5, -59.5], "expected": 45.5}, {"input": [45.5, -59.0], "expected": 45.5}, {"input": [45.5, -58.5], "expected": 45.5}, {"input": [45.5, -58.0], "expected": 45.5}, {"input": [45.5, -57.5], "expected": 45.5}, {"input": [45.5, -57.0], "expected": 45.5}, {"input": [45.5, -56.5], "expected": 45.5}, {"input": [45.5, -56.0], "expected": 45.5}, {"input": [45.5, -55.5], "expected": 45.5}, {"input": [45.5, -55.0], "expected": 45.5}, {"input": [45.5, -54.5], "expected": 45.5}, {"input": [45.5, -54.0], "expected": 45.5}, {"input": [45.5, -53.5], "expected": 45.5}, {"input": [45.5, -53.0], "expected": 45.5}, {"input": [45.5, -52.5], "expected": 45.5}, {"input": [45.5, -52.0], "expected": 45.5}, {"input": [45.5, -51.5], "expected": 45.5}, {"input": [45.5, -51.0], "expected": 45.5}, {"input": [45.5, -50.5], "expected": 45.5}, {"input": [45.5, -50.0], "expected": 45.5}, {"input": [45.5, -49.5], "expected": 45.5}, {"input": [45.5, -49.0], "expected": 45.5}, {"input": [45.5, -48.5], "expected": 45.5}, {"input": [45.5, -48.0], "expected": 45.5}, {"input": [45.5, -47.5], "expected": 45.5}, {"input": [45.5, -47.0], "expected": 45.5}, {"input": [45.5, -46.5], "expected": 45.5}, {"input": [45.5, -46.0], "expected": 45.5}, {"input": [45.5, -45.5], "expected": 45.5}, {"input": [45.5, -45.0], "expected": 45.5}, {"input": [45.5, -44.5], "expected": 45.5}, {"input": [45.5, -44.0], "expected": 45.5}, {"input": [45.5, -43.5], "expected": 45.5}, {"input": [45.5, -43.0], "expected": 45.5}, {"input": [45.5, -42.5], "expected": 45.5}, {"input": [45.5, -42.0], "expected": 45.5}, {"input": [45.5, -41.5], "expected": 45.5}, {"input": [45.5, -41.0], "expected": 45.5}, {"input": [45.5, -40.5], "expected": 45.5}, {"input": [45.5, -40.0], "expected": 45.5}, {"input": [45.5, -39.5], "expected": 45.5}, {"input": [45.5, -39.0], "expected": 45.5}, {"input": [45.5, -38.5], "expected": 45.5}, {"input": [45.5, -38.0], "expected": 45.5}, {"input": [45.5, -37.5], "expected": 45.5}, {"input": [45.5, -37.0], "expected": 45.5}, {"input": [45.5, -36.5], "expected": 45.5}, {"input": [45.5, -36.0], "expected": 45.5}, {"input": [45.5, -35.5], "expected": 45.5}, {"input": [45.5, -35.0], "expected": 45.5}, {"input": [45.5, -34.5], "expected": 45.5}, {"input": [45.5, -34.0], "expected": 45.5}, {"input": [45.5, -33.5], "expected": 45.5}, {"input": [45.5, -33.0], "expected": 45.5}, {"input": [45.5, -32.5], "expected": 45.5}, {"input": [45.5, -32.0], "expected": 45.5}, {"input": [45.5, -31.5], "expected": 45.5}, {"input": [45.5, -31.0], "expected": 45.5}, {"input": [45.5, -30.5], "expected": 45.5}, {"input": [45.5, -30.0], "expected": 45.5}, {"input": [45.5, -29.5], "expected": 45.5}, {"input": [45.5, -29.0], "expected": 45.5}, {"input": [45.5, -28.5], "expected": 45.5}, {"input": [45.5, -28.0], "expected": 45.5}, {"input": [45.5, -27.5], "expected": 45.5}, {"input": [45.5, -27.0], "expected": 45.5}, {"input": [45.5, -26.5], "expected": 45.5}, {"input": [45.5, -26.0], "expected": 45.5}, {"input": [45.5, -25.5], "expected": 45.5}, {"input": [45.5, -25.0], "expected": 45.5}, {"input": [45.5, -24.5], "expected": 45.5}, {"input": [45.5, -24.0], "expected": 45.5}, {"input": [45.5, -23.5], "expected": 45.5}, {"input": [45.5, -23.0], "expected": 45.5}, {"input": [45.5, -22.5], "expected": 45.5}, {"input": [45.5, -22.0], "expected": 45.5}, {"input": [45.5, -21.5], "expected": 45.5}, {"input": [45.5, -21.0], "expected": 45.5}, {"input": [45.5, -20.5], "expected": 45.5}, {"input": [45.5, -20.0], "expected": 45.5}, {"input": [45.5, -19.5], "expected": 45.5}, {"input": [45.5, -19.0], "expected": 45.5}, {"input": [45.5, -18.5], "expected": 45.5}, {"input": [45.5, -18.0], "expected": 45.5}, {"input": [45.5, -17.5], "expected": 45.5}, {"input": [45.5, -17.0], "expected": 45.5}, {"input": [45.5, -16.5], "expected": 45.5}, {"input": [45.5, -16.0], "expected": 45.5}, {"input": [45.5, -15.5], "expected": 45.5}, {"input": [45.5, -15.0], "expected": 45.5}, {"input": [45.5, -14.5], "expected": 45.5}, {"input": [45.5, -14.0], "expected": 45.5}, {"input": [45.5, -13.5], "expected": 45.5}, {"input": [45.5, -13.0], "expected": 45.5}, {"input": [45.5, -12.5], "expected": 45.5}, {"input": [45.5, -12.0], "expected": 45.5}, {"input": [45.5, -11.5], "expected": 45.5}, {"input": [45.5, -11.0], "expected": 45.5}, {"input": [45.5, -10.5], "expected": 45.5}, {"input": [45.5, -10.0], "expected": 45.5}, {"input": [45.5, -9.5], "expected": 45.5}, {"input": [45.5, -9.0], "expected": 45.5}, {"input": [45.5, -8.5], "expected": 45.5}, {"input": [45.5, -8.0], "expected": 45.5}, {"input": [45.5, -7.5], "expected": 45.5}, {"input": [45.5, -7.0], "expected": 45.5}, {"input": [45.5, -6.5], "expected": 45.5}, {"input": [45.5, -6.0], "expected": 45.5}, {"input": [45.5, -5.5], "expected": 45.5}, {"input": [45.5, -5.0], "expected": 45.5}, {"input": [45.5, -4.5], "expected": 45.5}, {"input": [45.5, -4.0], "expected": 45.5}, {"input": [45.5, -3.5], "expected": 45.5}, {"input": [45.5, -3.0], "expected": 45.5}, {"input": [45.5, -2.5], "expected": 45.5}, {"input": [45.5, -2.0], "expected": 45.5}, {"input": [45.5, -1.5], "expected": 45.5}, {"input": [45.5, -1.0], "expected": 45.5}, {"input": [45.5, -0.5], "expected": 45.5}, {"input": [45.5, 0.0], "expected": 45.5}, {"input": [45.5, 0.5], "expected": 45.5}, {"input": [45.5, 1.0], "expected": 45.5}, {"input": [45.5, 1.5], "expected": 45.5}, {"input": [45.5, 2.0], "expected": 45.5}, {"input": [45.5, 2.5], "expected": 45.5}, {"input": [45.5, 3.0], "expected": 45.5}, {"input": [45.5, 3.5], "expected": 45.5}, {"input": [45.5, 4.0], "expected": 45.5}, {"input": [45.5, 4.5], "expected": 45.5}, {"input": [45.5, 5.0], "expected": 45.5}, {"input": [45.5, 5.5], "expected": 45.5}, {"input": [45.5, 6.0], "expected": 45.5}, {"input": [45.5, 6.5], "expected": 45.5}, {"input": [45.5, 7.0], "expected": 45.5}, {"input": [45.5, 7.5], "expected": 45.5}, {"input": [45.5, 8.0], "expected": 45.5}, {"input": [45.5, 8.5], "expected": 45.5}, {"input": [45.5, 9.0], "expected": 45.5}, {"input": [45.5, 9.5], "expected": 45.5}, {"input": [45.5, 10.0], "expected": 45.5}, {"input": [45.5, 10.5], "expected": 45.5}, {"input": [45.5, 11.0], "expected": 45.5}, {"input": [45.5, 11.5], "expected": 45.5}, {"input": [45.5, 12.0], "expected": 45.5}, {"input": [45.5, 12.5], "expected": 45.50000000000001}, {"input": [45.5, 13.0], "expected": 45.50000000000001}, {"input": [45.5, 13.5], "expected": 45.500000000000014}, {"input": [45.5, 14.0], "expected": 45.50000000000002}, {"input": [45.5, 14.5], "expected": 45.500000000000036}, {"input": [45.5, 15.0], "expected": 45.50000000000006}, {"input": [45.5, 15.5], "expected": 45.50000000000009}, {"input": [45.5, 16.0], "expected": 45.500000000000156}, {"input": [45.5, 16.5], "expected": 45.500000000000256}, {"input": [45.5, 17.0], "expected": 45.50000000000042}, {"input": [45.5, 17.5], "expected": 45.50000000000069}, {"input": [45.5, 18.0], "expected": 45.50000000000114}, {"input": [45.5, 18.5], "expected": 45.50000000000188}, {"input": [45.5, 19.0], "expected": 45.5000000000031}, {"input": [45.5, 19.5], "expected": 45.50000000000511}, {"input": [45.5, 20.0], "expected": 45.50000000000842}, {"input": [45.5, 20.5], "expected": 45.50000000001389}, {"input": [45.5, 21.0], "expected": 45.5000000000229}, {"input": [45.5, 21.5], "expected": 45.50000000003775}, {"input": [45.5, 22.0], "expected": 45.50000000006224}, {"input": [45.5, 22.5], "expected": 45.50000000010262}, {"input": [45.5, 23.0], "expected": 45.50000000016919}, {"input": [45.5, 23.5], "expected": 45.500000000278945}, {"input": [45.5, 24.0], "expected": 45.500000000459906}, {"input": [45.5, 24.5], "expected": 45.500000000758256}, {"input": [45.5, 25.0], "expected": 45.50000000125015}, {"input": [45.5, 25.5], "expected": 45.50000000206116}, {"input": [45.5, 26.0], "expected": 45.50000000339827}, {"input": [45.5, 26.5], "expected": 45.50000000560279}, {"input": [45.5, 27.0], "expected": 45.500000009237446}, {"input": [45.5, 27.5], "expected": 45.50000001522998}, {"input": [45.5, 28.0], "expected": 45.50000002510999}, {"input": [45.5, 28.5], "expected": 45.500000041399375}, {"input": [45.5, 29.0], "expected": 45.50000006825603}, {"input": [45.5, 29.5], "expected": 45.50000011253517}, {"input": [45.5, 30.0], "expected": 45.50000018553912}, {"input": [45.5, 30.5], "expected": 45.500000305902276}, {"input": [45.5, 31.0], "expected": 45.50000050434753}, {"input": [45.5, 31.5], "expected": 45.500000831528375}, {"input": [45.5, 32.0], "expected": 45.500001370958145}, {"input": [45.5, 32.5], "expected": 45.50000226032685}, {"input": [45.5, 33.0], "expected": 45.50000372664623}, {"input": [45.5, 33.5], "expected": 45.50000614419348}, {"input": [45.5, 34.0], "expected": 45.50001013004229}, {"input": [45.5, 34.5], "expected": 45.50001670156132}, {"input": [45.5, 35.0], "expected": 45.50002753607023}, {"input": [45.5, 35.5], "expected": 45.50004539889922}, {"input": [45.5, 36.0], "expected": 45.50007484902863}, {"input": [45.5, 36.5], "expected": 45.50012340218972}, {"input": [45.5, 37.0], "expected": 45.50020344767213}, {"input": [45.5, 37.5], "expected": 45.5003354063729}, {"input": [45.5, 38.0], "expected": 45.50055293147536}, {"input": [45.5, 38.5], "expected": 45.50091146645377}, {"input": [45.5, 39.0], "expected": 45.50150231015976}, {"input": [45.5, 39.5], "expected": 45.50247568513773}, {"input": [45.5, 40.0], "expected": 45.50407844327057}, {"input": [45.5, 40.5], "expected": 45.50671534848912}, {"input": [45.5, 41.0], "expected": 45.5110477448486}, {"input": [45.5, 41.5], "expected": 45.51814992791781}, {"input": [45.5, 42.0], "expected": 45.52975041827262}, {"input": [45.5, 42.5], "expected": 45.548587351573744}, {"input": [45.5, 43.0], "expected": 45.57888973429255}, {"input": [45.5, 43.5], "expected": 45.62692801104297}, {"input": [45.5, 44.0], "expected": 45.70141327798275}, {"input": [45.5, 44.5], "expected": 45.81326168751822}, {"input": [45.5, 45.0], "expected": 45.97407698418011}, {"input": [45.5, 45.5], "expected": 46.19314718055995}, {"input": [45.5, 46.0], "expected": 46.47407698418011}, {"input": [45.5, 46.5], "expected": 46.81326168751822}, {"input": [45.5, 47.0], "expected": 47.20141327798275}, {"input": [45.5, 47.5], "expected": 47.62692801104297}, {"input": [45.5, 48.0], "expected": 48.07888973429255}, {"input": [45.5, 48.5], "expected": 48.548587351573744}, {"input": [45.5, 49.0], "expected": 49.02975041827262}, {"input": [45.5, 49.5], "expected": 49.51814992791781}, {"input": [45.5, 50.0], "expected": 50.0110477448486}, {"input": [45.5, 50.5], "expected": 50.50671534848912}, {"input": [45.5, 51.0], "expected": 51.00407844327057}, {"input": [45.5, 51.5], "expected": 51.50247568513773}, {"input": [45.5, 52.0], "expected": 52.00150231015976}, {"input": [45.5, 52.5], "expected": 52.50091146645377}, {"input": [45.5, 53.0], "expected": 53.00055293147536}, {"input": [45.5, 53.5], "expected": 53.5003354063729}, {"input": [45.5, 54.0], "expected": 54.00020344767213}, {"input": [45.5, 54.5], "expected": 54.50012340218972}, {"input": [45.5, 55.0], "expected": 55.00007484902863}, {"input": [45.5, 55.5], "expected": 55.50004539889922}, {"input": [45.5, 56.0], "expected": 56.00002753607023}, {"input": [45.5, 56.5], "expected": 56.50001670156132}, {"input": [45.5, 57.0], "expected": 57.00001013004229}, {"input": [45.5, 57.5], "expected": 57.50000614419348}, {"input": [45.5, 58.0], "expected": 58.00000372664623}, {"input": [45.5, 58.5], "expected": 58.50000226032685}, {"input": [45.5, 59.0], "expected": 59.000001370958145}, {"input": [45.5, 59.5], "expected": 59.500000831528375}, {"input": [45.5, 60.0], "expected": 60.00000050434753}, {"input": [45.5, 60.5], "expected": 60.500000305902276}, {"input": [45.5, 61.0], "expected": 61.00000018553912}, {"input": [45.5, 61.5], "expected": 61.50000011253517}, {"input": [45.5, 62.0], "expected": 62.00000006825603}, {"input": [45.5, 62.5], "expected": 62.500000041399375}, {"input": [45.5, 63.0], "expected": 63.00000002510999}, {"input": [45.5, 63.5], "expected": 63.50000001522998}, {"input": [45.5, 64.0], "expected": 64.00000000923745}, {"input": [45.5, 64.5], "expected": 64.5000000056028}, {"input": [45.5, 65.0], "expected": 65.00000000339827}, {"input": [45.5, 65.5], "expected": 65.50000000206116}, {"input": [45.5, 66.0], "expected": 66.00000000125016}, {"input": [45.5, 66.5], "expected": 66.50000000075826}, {"input": [45.5, 67.0], "expected": 67.0000000004599}, {"input": [45.5, 67.5], "expected": 67.50000000027894}, {"input": [45.5, 68.0], "expected": 68.0000000001692}, {"input": [45.5, 68.5], "expected": 68.50000000010262}, {"input": [45.5, 69.0], "expected": 69.00000000006224}, {"input": [45.5, 69.5], "expected": 69.50000000003776}, {"input": [45.5, 70.0], "expected": 70.0000000000229}, {"input": [45.5, 70.5], "expected": 70.50000000001388}, {"input": [45.5, 71.0], "expected": 71.00000000000843}, {"input": [45.5, 71.5], "expected": 71.50000000000512}, {"input": [45.5, 72.0], "expected": 72.0000000000031}, {"input": [45.5, 72.5], "expected": 72.50000000000188}, {"input": [45.5, 73.0], "expected": 73.00000000000114}, {"input": [45.5, 73.5], "expected": 73.5000000000007}, {"input": [45.5, 74.0], "expected": 74.00000000000043}, {"input": [45.5, 74.5], "expected": 74.50000000000026}, {"input": [45.5, 75.0], "expected": 75.00000000000016}, {"input": [45.5, 75.5], "expected": 75.5000000000001}, {"input": [45.5, 76.0], "expected": 76.00000000000006}, {"input": [45.5, 76.5], "expected": 76.50000000000003}, {"input": [45.5, 77.0], "expected": 77.00000000000001}, {"input": [45.5, 77.5], "expected": 77.50000000000001}, {"input": [45.5, 78.0], "expected": 78.00000000000001}, {"input": [45.5, 78.5], "expected": 78.5}, {"input": [45.5, 79.0], "expected": 79.0}, {"input": [45.5, 79.5], "expected": 79.5}, {"input": [45.5, 80.0], "expected": 80.0}, {"input": [45.5, 80.5], "expected": 80.5}, {"input": [45.5, 81.0], "expected": 81.0}, {"input": [45.5, 81.5], "expected": 81.5}, {"input": [45.5, 82.0], "expected": 82.0}, {"input": [45.5, 82.5], "expected": 82.5}, {"input": [45.5, 83.0], "expected": 83.0}, {"input": [45.5, 83.5], "expected": 83.5}, {"input": [45.5, 84.0], "expected": 84.0}, {"input": [45.5, 84.5], "expected": 84.5}, {"input": [45.5, 85.0], "expected": 85.0}, {"input": [45.5, 85.5], "expected": 85.5}, {"input": [45.5, 86.0], "expected": 86.0}, {"input": [45.5, 86.5], "expected": 86.5}, {"input": [45.5, 87.0], "expected": 87.0}, {"input": [45.5, 87.5], "expected": 87.5}, {"input": [45.5, 88.0], "expected": 88.0}, {"input": [45.5, 88.5], "expected": 88.5}, {"input": [45.5, 89.0], "expected": 89.0}, {"input": [45.5, 89.5], "expected": 89.5}, {"input": [45.5, 90.0], "expected": 90.0}, {"input": [45.5, 90.5], "expected": 90.5}, {"input": [45.5, 91.0], "expected": 91.0}, {"input": [45.5, 91.5], "expected": 91.5}, {"input": [45.5, 92.0], "expected": 92.0}, {"input": [45.5, 92.5], "expected": 92.5}, {"input": [45.5, 93.0], "expected": 93.0}, {"input": [45.5, 93.5], "expected": 93.5}, {"input": [45.5, 94.0], "expected": 94.0}, {"input": [45.5, 94.5], "expected": 94.5}, {"input": [45.5, 95.0], "expected": 95.0}, {"input": [45.5, 95.5], "expected": 95.5}, {"input": [45.5, 96.0], "expected": 96.0}, {"input": [45.5, 96.5], "expected": 96.5}, {"input": [45.5, 97.0], "expected": 97.0}, {"input": [45.5, 97.5], "expected": 97.5}, {"input": [45.5, 98.0], "expected": 98.0}, {"input": [45.5, 98.5], "expected": 98.5}, {"input": [45.5, 99.0], "expected": 99.0}, {"input": [45.5, 99.5], "expected": 99.5}, {"input": [46.0, -100.0], "expected": 46.0}, {"input": [46.0, -99.5], "expected": 46.0}, {"input": [46.0, -99.0], "expected": 46.0}, {"input": [46.0, -98.5], "expected": 46.0}, {"input": [46.0, -98.0], "expected": 46.0}, {"input": [46.0, -97.5], "expected": 46.0}, {"input": [46.0, -97.0], "expected": 46.0}, {"input": [46.0, -96.5], "expected": 46.0}, {"input": [46.0, -96.0], "expected": 46.0}, {"input": [46.0, -95.5], "expected": 46.0}, {"input": [46.0, -95.0], "expected": 46.0}, {"input": [46.0, -94.5], "expected": 46.0}, {"input": [46.0, -94.0], "expected": 46.0}, {"input": [46.0, -93.5], "expected": 46.0}, {"input": [46.0, -93.0], "expected": 46.0}, {"input": [46.0, -92.5], "expected": 46.0}, {"input": [46.0, -92.0], "expected": 46.0}, {"input": [46.0, -91.5], "expected": 46.0}, {"input": [46.0, -91.0], "expected": 46.0}, {"input": [46.0, -90.5], "expected": 46.0}, {"input": [46.0, -90.0], "expected": 46.0}, {"input": [46.0, -89.5], "expected": 46.0}, {"input": [46.0, -89.0], "expected": 46.0}, {"input": [46.0, -88.5], "expected": 46.0}, {"input": [46.0, -88.0], "expected": 46.0}, {"input": [46.0, -87.5], "expected": 46.0}, {"input": [46.0, -87.0], "expected": 46.0}, {"input": [46.0, -86.5], "expected": 46.0}, {"input": [46.0, -86.0], "expected": 46.0}, {"input": [46.0, -85.5], "expected": 46.0}, {"input": [46.0, -85.0], "expected": 46.0}, {"input": [46.0, -84.5], "expected": 46.0}, {"input": [46.0, -84.0], "expected": 46.0}, {"input": [46.0, -83.5], "expected": 46.0}, {"input": [46.0, -83.0], "expected": 46.0}, {"input": [46.0, -82.5], "expected": 46.0}, {"input": [46.0, -82.0], "expected": 46.0}, {"input": [46.0, -81.5], "expected": 46.0}, {"input": [46.0, -81.0], "expected": 46.0}, {"input": [46.0, -80.5], "expected": 46.0}, {"input": [46.0, -80.0], "expected": 46.0}, {"input": [46.0, -79.5], "expected": 46.0}, {"input": [46.0, -79.0], "expected": 46.0}, {"input": [46.0, -78.5], "expected": 46.0}, {"input": [46.0, -78.0], "expected": 46.0}, {"input": [46.0, -77.5], "expected": 46.0}, {"input": [46.0, -77.0], "expected": 46.0}, {"input": [46.0, -76.5], "expected": 46.0}, {"input": [46.0, -76.0], "expected": 46.0}, {"input": [46.0, -75.5], "expected": 46.0}, {"input": [46.0, -75.0], "expected": 46.0}, {"input": [46.0, -74.5], "expected": 46.0}, {"input": [46.0, -74.0], "expected": 46.0}, {"input": [46.0, -73.5], "expected": 46.0}, {"input": [46.0, -73.0], "expected": 46.0}, {"input": [46.0, -72.5], "expected": 46.0}, {"input": [46.0, -72.0], "expected": 46.0}, {"input": [46.0, -71.5], "expected": 46.0}, {"input": [46.0, -71.0], "expected": 46.0}, {"input": [46.0, -70.5], "expected": 46.0}, {"input": [46.0, -70.0], "expected": 46.0}, {"input": [46.0, -69.5], "expected": 46.0}, {"input": [46.0, -69.0], "expected": 46.0}, {"input": [46.0, -68.5], "expected": 46.0}, {"input": [46.0, -68.0], "expected": 46.0}, {"input": [46.0, -67.5], "expected": 46.0}, {"input": [46.0, -67.0], "expected": 46.0}, {"input": [46.0, -66.5], "expected": 46.0}, {"input": [46.0, -66.0], "expected": 46.0}, {"input": [46.0, -65.5], "expected": 46.0}, {"input": [46.0, -65.0], "expected": 46.0}, {"input": [46.0, -64.5], "expected": 46.0}, {"input": [46.0, -64.0], "expected": 46.0}, {"input": [46.0, -63.5], "expected": 46.0}, {"input": [46.0, -63.0], "expected": 46.0}, {"input": [46.0, -62.5], "expected": 46.0}, {"input": [46.0, -62.0], "expected": 46.0}, {"input": [46.0, -61.5], "expected": 46.0}, {"input": [46.0, -61.0], "expected": 46.0}, {"input": [46.0, -60.5], "expected": 46.0}, {"input": [46.0, -60.0], "expected": 46.0}, {"input": [46.0, -59.5], "expected": 46.0}, {"input": [46.0, -59.0], "expected": 46.0}, {"input": [46.0, -58.5], "expected": 46.0}, {"input": [46.0, -58.0], "expected": 46.0}, {"input": [46.0, -57.5], "expected": 46.0}, {"input": [46.0, -57.0], "expected": 46.0}, {"input": [46.0, -56.5], "expected": 46.0}, {"input": [46.0, -56.0], "expected": 46.0}, {"input": [46.0, -55.5], "expected": 46.0}, {"input": [46.0, -55.0], "expected": 46.0}, {"input": [46.0, -54.5], "expected": 46.0}, {"input": [46.0, -54.0], "expected": 46.0}, {"input": [46.0, -53.5], "expected": 46.0}, {"input": [46.0, -53.0], "expected": 46.0}, {"input": [46.0, -52.5], "expected": 46.0}, {"input": [46.0, -52.0], "expected": 46.0}, {"input": [46.0, -51.5], "expected": 46.0}, {"input": [46.0, -51.0], "expected": 46.0}, {"input": [46.0, -50.5], "expected": 46.0}, {"input": [46.0, -50.0], "expected": 46.0}, {"input": [46.0, -49.5], "expected": 46.0}, {"input": [46.0, -49.0], "expected": 46.0}, {"input": [46.0, -48.5], "expected": 46.0}, {"input": [46.0, -48.0], "expected": 46.0}, {"input": [46.0, -47.5], "expected": 46.0}, {"input": [46.0, -47.0], "expected": 46.0}, {"input": [46.0, -46.5], "expected": 46.0}, {"input": [46.0, -46.0], "expected": 46.0}, {"input": [46.0, -45.5], "expected": 46.0}, {"input": [46.0, -45.0], "expected": 46.0}, {"input": [46.0, -44.5], "expected": 46.0}, {"input": [46.0, -44.0], "expected": 46.0}, {"input": [46.0, -43.5], "expected": 46.0}, {"input": [46.0, -43.0], "expected": 46.0}, {"input": [46.0, -42.5], "expected": 46.0}, {"input": [46.0, -42.0], "expected": 46.0}, {"input": [46.0, -41.5], "expected": 46.0}, {"input": [46.0, -41.0], "expected": 46.0}, {"input": [46.0, -40.5], "expected": 46.0}, {"input": [46.0, -40.0], "expected": 46.0}, {"input": [46.0, -39.5], "expected": 46.0}, {"input": [46.0, -39.0], "expected": 46.0}, {"input": [46.0, -38.5], "expected": 46.0}, {"input": [46.0, -38.0], "expected": 46.0}, {"input": [46.0, -37.5], "expected": 46.0}, {"input": [46.0, -37.0], "expected": 46.0}, {"input": [46.0, -36.5], "expected": 46.0}, {"input": [46.0, -36.0], "expected": 46.0}, {"input": [46.0, -35.5], "expected": 46.0}, {"input": [46.0, -35.0], "expected": 46.0}, {"input": [46.0, -34.5], "expected": 46.0}, {"input": [46.0, -34.0], "expected": 46.0}, {"input": [46.0, -33.5], "expected": 46.0}, {"input": [46.0, -33.0], "expected": 46.0}, {"input": [46.0, -32.5], "expected": 46.0}, {"input": [46.0, -32.0], "expected": 46.0}, {"input": [46.0, -31.5], "expected": 46.0}, {"input": [46.0, -31.0], "expected": 46.0}, {"input": [46.0, -30.5], "expected": 46.0}, {"input": [46.0, -30.0], "expected": 46.0}, {"input": [46.0, -29.5], "expected": 46.0}, {"input": [46.0, -29.0], "expected": 46.0}, {"input": [46.0, -28.5], "expected": 46.0}, {"input": [46.0, -28.0], "expected": 46.0}, {"input": [46.0, -27.5], "expected": 46.0}, {"input": [46.0, -27.0], "expected": 46.0}, {"input": [46.0, -26.5], "expected": 46.0}, {"input": [46.0, -26.0], "expected": 46.0}, {"input": [46.0, -25.5], "expected": 46.0}, {"input": [46.0, -25.0], "expected": 46.0}, {"input": [46.0, -24.5], "expected": 46.0}, {"input": [46.0, -24.0], "expected": 46.0}, {"input": [46.0, -23.5], "expected": 46.0}, {"input": [46.0, -23.0], "expected": 46.0}, {"input": [46.0, -22.5], "expected": 46.0}, {"input": [46.0, -22.0], "expected": 46.0}, {"input": [46.0, -21.5], "expected": 46.0}, {"input": [46.0, -21.0], "expected": 46.0}, {"input": [46.0, -20.5], "expected": 46.0}, {"input": [46.0, -20.0], "expected": 46.0}, {"input": [46.0, -19.5], "expected": 46.0}, {"input": [46.0, -19.0], "expected": 46.0}, {"input": [46.0, -18.5], "expected": 46.0}, {"input": [46.0, -18.0], "expected": 46.0}, {"input": [46.0, -17.5], "expected": 46.0}, {"input": [46.0, -17.0], "expected": 46.0}, {"input": [46.0, -16.5], "expected": 46.0}, {"input": [46.0, -16.0], "expected": 46.0}, {"input": [46.0, -15.5], "expected": 46.0}, {"input": [46.0, -15.0], "expected": 46.0}, {"input": [46.0, -14.5], "expected": 46.0}, {"input": [46.0, -14.0], "expected": 46.0}, {"input": [46.0, -13.5], "expected": 46.0}, {"input": [46.0, -13.0], "expected": 46.0}, {"input": [46.0, -12.5], "expected": 46.0}, {"input": [46.0, -12.0], "expected": 46.0}, {"input": [46.0, -11.5], "expected": 46.0}, {"input": [46.0, -11.0], "expected": 46.0}, {"input": [46.0, -10.5], "expected": 46.0}, {"input": [46.0, -10.0], "expected": 46.0}, {"input": [46.0, -9.5], "expected": 46.0}, {"input": [46.0, -9.0], "expected": 46.0}, {"input": [46.0, -8.5], "expected": 46.0}, {"input": [46.0, -8.0], "expected": 46.0}, {"input": [46.0, -7.5], "expected": 46.0}, {"input": [46.0, -7.0], "expected": 46.0}, {"input": [46.0, -6.5], "expected": 46.0}, {"input": [46.0, -6.0], "expected": 46.0}, {"input": [46.0, -5.5], "expected": 46.0}, {"input": [46.0, -5.0], "expected": 46.0}, {"input": [46.0, -4.5], "expected": 46.0}, {"input": [46.0, -4.0], "expected": 46.0}, {"input": [46.0, -3.5], "expected": 46.0}, {"input": [46.0, -3.0], "expected": 46.0}, {"input": [46.0, -2.5], "expected": 46.0}, {"input": [46.0, -2.0], "expected": 46.0}, {"input": [46.0, -1.5], "expected": 46.0}, {"input": [46.0, -1.0], "expected": 46.0}, {"input": [46.0, -0.5], "expected": 46.0}, {"input": [46.0, 0.0], "expected": 46.0}, {"input": [46.0, 0.5], "expected": 46.0}, {"input": [46.0, 1.0], "expected": 46.0}, {"input": [46.0, 1.5], "expected": 46.0}, {"input": [46.0, 2.0], "expected": 46.0}, {"input": [46.0, 2.5], "expected": 46.0}, {"input": [46.0, 3.0], "expected": 46.0}, {"input": [46.0, 3.5], "expected": 46.0}, {"input": [46.0, 4.0], "expected": 46.0}, {"input": [46.0, 4.5], "expected": 46.0}, {"input": [46.0, 5.0], "expected": 46.0}, {"input": [46.0, 5.5], "expected": 46.0}, {"input": [46.0, 6.0], "expected": 46.0}, {"input": [46.0, 6.5], "expected": 46.0}, {"input": [46.0, 7.0], "expected": 46.0}, {"input": [46.0, 7.5], "expected": 46.0}, {"input": [46.0, 8.0], "expected": 46.0}, {"input": [46.0, 8.5], "expected": 46.0}, {"input": [46.0, 9.0], "expected": 46.0}, {"input": [46.0, 9.5], "expected": 46.0}, {"input": [46.0, 10.0], "expected": 46.0}, {"input": [46.0, 10.5], "expected": 46.0}, {"input": [46.0, 11.0], "expected": 46.0}, {"input": [46.0, 11.5], "expected": 46.0}, {"input": [46.0, 12.0], "expected": 46.0}, {"input": [46.0, 12.5], "expected": 46.0}, {"input": [46.0, 13.0], "expected": 46.00000000000001}, {"input": [46.0, 13.5], "expected": 46.00000000000001}, {"input": [46.0, 14.0], "expected": 46.000000000000014}, {"input": [46.0, 14.5], "expected": 46.00000000000002}, {"input": [46.0, 15.0], "expected": 46.000000000000036}, {"input": [46.0, 15.5], "expected": 46.00000000000006}, {"input": [46.0, 16.0], "expected": 46.00000000000009}, {"input": [46.0, 16.5], "expected": 46.000000000000156}, {"input": [46.0, 17.0], "expected": 46.000000000000256}, {"input": [46.0, 17.5], "expected": 46.00000000000042}, {"input": [46.0, 18.0], "expected": 46.00000000000069}, {"input": [46.0, 18.5], "expected": 46.00000000000114}, {"input": [46.0, 19.0], "expected": 46.00000000000188}, {"input": [46.0, 19.5], "expected": 46.0000000000031}, {"input": [46.0, 20.0], "expected": 46.00000000000511}, {"input": [46.0, 20.5], "expected": 46.00000000000842}, {"input": [46.0, 21.0], "expected": 46.00000000001389}, {"input": [46.0, 21.5], "expected": 46.0000000000229}, {"input": [46.0, 22.0], "expected": 46.00000000003775}, {"input": [46.0, 22.5], "expected": 46.00000000006224}, {"input": [46.0, 23.0], "expected": 46.00000000010262}, {"input": [46.0, 23.5], "expected": 46.00000000016919}, {"input": [46.0, 24.0], "expected": 46.000000000278945}, {"input": [46.0, 24.5], "expected": 46.000000000459906}, {"input": [46.0, 25.0], "expected": 46.000000000758256}, {"input": [46.0, 25.5], "expected": 46.00000000125015}, {"input": [46.0, 26.0], "expected": 46.00000000206116}, {"input": [46.0, 26.5], "expected": 46.00000000339827}, {"input": [46.0, 27.0], "expected": 46.00000000560279}, {"input": [46.0, 27.5], "expected": 46.000000009237446}, {"input": [46.0, 28.0], "expected": 46.00000001522998}, {"input": [46.0, 28.5], "expected": 46.00000002510999}, {"input": [46.0, 29.0], "expected": 46.000000041399375}, {"input": [46.0, 29.5], "expected": 46.00000006825603}, {"input": [46.0, 30.0], "expected": 46.00000011253517}, {"input": [46.0, 30.5], "expected": 46.00000018553912}, {"input": [46.0, 31.0], "expected": 46.000000305902276}, {"input": [46.0, 31.5], "expected": 46.00000050434753}, {"input": [46.0, 32.0], "expected": 46.000000831528375}, {"input": [46.0, 32.5], "expected": 46.000001370958145}, {"input": [46.0, 33.0], "expected": 46.00000226032685}, {"input": [46.0, 33.5], "expected": 46.00000372664623}, {"input": [46.0, 34.0], "expected": 46.00000614419348}, {"input": [46.0, 34.5], "expected": 46.00001013004229}, {"input": [46.0, 35.0], "expected": 46.00001670156132}, {"input": [46.0, 35.5], "expected": 46.00002753607023}, {"input": [46.0, 36.0], "expected": 46.00004539889922}, {"input": [46.0, 36.5], "expected": 46.00007484902863}, {"input": [46.0, 37.0], "expected": 46.00012340218972}, {"input": [46.0, 37.5], "expected": 46.00020344767213}, {"input": [46.0, 38.0], "expected": 46.0003354063729}, {"input": [46.0, 38.5], "expected": 46.00055293147536}, {"input": [46.0, 39.0], "expected": 46.00091146645377}, {"input": [46.0, 39.5], "expected": 46.00150231015976}, {"input": [46.0, 40.0], "expected": 46.00247568513773}, {"input": [46.0, 40.5], "expected": 46.00407844327057}, {"input": [46.0, 41.0], "expected": 46.00671534848912}, {"input": [46.0, 41.5], "expected": 46.0110477448486}, {"input": [46.0, 42.0], "expected": 46.01814992791781}, {"input": [46.0, 42.5], "expected": 46.02975041827262}, {"input": [46.0, 43.0], "expected": 46.048587351573744}, {"input": [46.0, 43.5], "expected": 46.07888973429255}, {"input": [46.0, 44.0], "expected": 46.12692801104297}, {"input": [46.0, 44.5], "expected": 46.20141327798275}, {"input": [46.0, 45.0], "expected": 46.31326168751822}, {"input": [46.0, 45.5], "expected": 46.47407698418011}, {"input": [46.0, 46.0], "expected": 46.69314718055995}, {"input": [46.0, 46.5], "expected": 46.97407698418011}, {"input": [46.0, 47.0], "expected": 47.31326168751822}, {"input": [46.0, 47.5], "expected": 47.70141327798275}, {"input": [46.0, 48.0], "expected": 48.12692801104297}, {"input": [46.0, 48.5], "expected": 48.57888973429255}, {"input": [46.0, 49.0], "expected": 49.048587351573744}, {"input": [46.0, 49.5], "expected": 49.52975041827262}, {"input": [46.0, 50.0], "expected": 50.01814992791781}, {"input": [46.0, 50.5], "expected": 50.5110477448486}, {"input": [46.0, 51.0], "expected": 51.00671534848912}, {"input": [46.0, 51.5], "expected": 51.50407844327057}, {"input": [46.0, 52.0], "expected": 52.00247568513773}, {"input": [46.0, 52.5], "expected": 52.50150231015976}, {"input": [46.0, 53.0], "expected": 53.00091146645377}, {"input": [46.0, 53.5], "expected": 53.50055293147536}, {"input": [46.0, 54.0], "expected": 54.0003354063729}, {"input": [46.0, 54.5], "expected": 54.50020344767213}, {"input": [46.0, 55.0], "expected": 55.00012340218972}, {"input": [46.0, 55.5], "expected": 55.50007484902863}, {"input": [46.0, 56.0], "expected": 56.00004539889922}, {"input": [46.0, 56.5], "expected": 56.50002753607023}, {"input": [46.0, 57.0], "expected": 57.00001670156132}, {"input": [46.0, 57.5], "expected": 57.50001013004229}, {"input": [46.0, 58.0], "expected": 58.00000614419348}, {"input": [46.0, 58.5], "expected": 58.50000372664623}, {"input": [46.0, 59.0], "expected": 59.00000226032685}, {"input": [46.0, 59.5], "expected": 59.500001370958145}, {"input": [46.0, 60.0], "expected": 60.000000831528375}, {"input": [46.0, 60.5], "expected": 60.50000050434753}, {"input": [46.0, 61.0], "expected": 61.000000305902276}, {"input": [46.0, 61.5], "expected": 61.50000018553912}, {"input": [46.0, 62.0], "expected": 62.00000011253517}, {"input": [46.0, 62.5], "expected": 62.50000006825603}, {"input": [46.0, 63.0], "expected": 63.000000041399375}, {"input": [46.0, 63.5], "expected": 63.50000002510999}, {"input": [46.0, 64.0], "expected": 64.00000001522999}, {"input": [46.0, 64.5], "expected": 64.50000000923745}, {"input": [46.0, 65.0], "expected": 65.0000000056028}, {"input": [46.0, 65.5], "expected": 65.50000000339827}, {"input": [46.0, 66.0], "expected": 66.00000000206116}, {"input": [46.0, 66.5], "expected": 66.50000000125016}, {"input": [46.0, 67.0], "expected": 67.00000000075826}, {"input": [46.0, 67.5], "expected": 67.5000000004599}, {"input": [46.0, 68.0], "expected": 68.00000000027894}, {"input": [46.0, 68.5], "expected": 68.5000000001692}, {"input": [46.0, 69.0], "expected": 69.00000000010262}, {"input": [46.0, 69.5], "expected": 69.50000000006224}, {"input": [46.0, 70.0], "expected": 70.00000000003776}, {"input": [46.0, 70.5], "expected": 70.5000000000229}, {"input": [46.0, 71.0], "expected": 71.00000000001388}, {"input": [46.0, 71.5], "expected": 71.50000000000843}, {"input": [46.0, 72.0], "expected": 72.00000000000512}, {"input": [46.0, 72.5], "expected": 72.5000000000031}, {"input": [46.0, 73.0], "expected": 73.00000000000188}, {"input": [46.0, 73.5], "expected": 73.50000000000114}, {"input": [46.0, 74.0], "expected": 74.0000000000007}, {"input": [46.0, 74.5], "expected": 74.50000000000043}, {"input": [46.0, 75.0], "expected": 75.00000000000026}, {"input": [46.0, 75.5], "expected": 75.50000000000016}, {"input": [46.0, 76.0], "expected": 76.0000000000001}, {"input": [46.0, 76.5], "expected": 76.50000000000006}, {"input": [46.0, 77.0], "expected": 77.00000000000003}, {"input": [46.0, 77.5], "expected": 77.50000000000001}, {"input": [46.0, 78.0], "expected": 78.00000000000001}, {"input": [46.0, 78.5], "expected": 78.50000000000001}, {"input": [46.0, 79.0], "expected": 79.0}, {"input": [46.0, 79.5], "expected": 79.5}, {"input": [46.0, 80.0], "expected": 80.0}, {"input": [46.0, 80.5], "expected": 80.5}, {"input": [46.0, 81.0], "expected": 81.0}, {"input": [46.0, 81.5], "expected": 81.5}, {"input": [46.0, 82.0], "expected": 82.0}, {"input": [46.0, 82.5], "expected": 82.5}, {"input": [46.0, 83.0], "expected": 83.0}, {"input": [46.0, 83.5], "expected": 83.5}, {"input": [46.0, 84.0], "expected": 84.0}, {"input": [46.0, 84.5], "expected": 84.5}, {"input": [46.0, 85.0], "expected": 85.0}, {"input": [46.0, 85.5], "expected": 85.5}, {"input": [46.0, 86.0], "expected": 86.0}, {"input": [46.0, 86.5], "expected": 86.5}, {"input": [46.0, 87.0], "expected": 87.0}, {"input": [46.0, 87.5], "expected": 87.5}, {"input": [46.0, 88.0], "expected": 88.0}, {"input": [46.0, 88.5], "expected": 88.5}, {"input": [46.0, 89.0], "expected": 89.0}, {"input": [46.0, 89.5], "expected": 89.5}, {"input": [46.0, 90.0], "expected": 90.0}, {"input": [46.0, 90.5], "expected": 90.5}, {"input": [46.0, 91.0], "expected": 91.0}, {"input": [46.0, 91.5], "expected": 91.5}, {"input": [46.0, 92.0], "expected": 92.0}, {"input": [46.0, 92.5], "expected": 92.5}, {"input": [46.0, 93.0], "expected": 93.0}, {"input": [46.0, 93.5], "expected": 93.5}, {"input": [46.0, 94.0], "expected": 94.0}, {"input": [46.0, 94.5], "expected": 94.5}, {"input": [46.0, 95.0], "expected": 95.0}, {"input": [46.0, 95.5], "expected": 95.5}, {"input": [46.0, 96.0], "expected": 96.0}, {"input": [46.0, 96.5], "expected": 96.5}, {"input": [46.0, 97.0], "expected": 97.0}, {"input": [46.0, 97.5], "expected": 97.5}, {"input": [46.0, 98.0], "expected": 98.0}, {"input": [46.0, 98.5], "expected": 98.5}, {"input": [46.0, 99.0], "expected": 99.0}, {"input": [46.0, 99.5], "expected": 99.5}, {"input": [46.5, -100.0], "expected": 46.5}, {"input": [46.5, -99.5], "expected": 46.5}, {"input": [46.5, -99.0], "expected": 46.5}, {"input": [46.5, -98.5], "expected": 46.5}, {"input": [46.5, -98.0], "expected": 46.5}, {"input": [46.5, -97.5], "expected": 46.5}, {"input": [46.5, -97.0], "expected": 46.5}, {"input": [46.5, -96.5], "expected": 46.5}, {"input": [46.5, -96.0], "expected": 46.5}, {"input": [46.5, -95.5], "expected": 46.5}, {"input": [46.5, -95.0], "expected": 46.5}, {"input": [46.5, -94.5], "expected": 46.5}, {"input": [46.5, -94.0], "expected": 46.5}, {"input": [46.5, -93.5], "expected": 46.5}, {"input": [46.5, -93.0], "expected": 46.5}, {"input": [46.5, -92.5], "expected": 46.5}, {"input": [46.5, -92.0], "expected": 46.5}, {"input": [46.5, -91.5], "expected": 46.5}, {"input": [46.5, -91.0], "expected": 46.5}, {"input": [46.5, -90.5], "expected": 46.5}, {"input": [46.5, -90.0], "expected": 46.5}, {"input": [46.5, -89.5], "expected": 46.5}, {"input": [46.5, -89.0], "expected": 46.5}, {"input": [46.5, -88.5], "expected": 46.5}, {"input": [46.5, -88.0], "expected": 46.5}, {"input": [46.5, -87.5], "expected": 46.5}, {"input": [46.5, -87.0], "expected": 46.5}, {"input": [46.5, -86.5], "expected": 46.5}, {"input": [46.5, -86.0], "expected": 46.5}, {"input": [46.5, -85.5], "expected": 46.5}, {"input": [46.5, -85.0], "expected": 46.5}, {"input": [46.5, -84.5], "expected": 46.5}, {"input": [46.5, -84.0], "expected": 46.5}, {"input": [46.5, -83.5], "expected": 46.5}, {"input": [46.5, -83.0], "expected": 46.5}, {"input": [46.5, -82.5], "expected": 46.5}, {"input": [46.5, -82.0], "expected": 46.5}, {"input": [46.5, -81.5], "expected": 46.5}, {"input": [46.5, -81.0], "expected": 46.5}, {"input": [46.5, -80.5], "expected": 46.5}, {"input": [46.5, -80.0], "expected": 46.5}, {"input": [46.5, -79.5], "expected": 46.5}, {"input": [46.5, -79.0], "expected": 46.5}, {"input": [46.5, -78.5], "expected": 46.5}, {"input": [46.5, -78.0], "expected": 46.5}, {"input": [46.5, -77.5], "expected": 46.5}, {"input": [46.5, -77.0], "expected": 46.5}, {"input": [46.5, -76.5], "expected": 46.5}, {"input": [46.5, -76.0], "expected": 46.5}, {"input": [46.5, -75.5], "expected": 46.5}, {"input": [46.5, -75.0], "expected": 46.5}, {"input": [46.5, -74.5], "expected": 46.5}, {"input": [46.5, -74.0], "expected": 46.5}, {"input": [46.5, -73.5], "expected": 46.5}, {"input": [46.5, -73.0], "expected": 46.5}, {"input": [46.5, -72.5], "expected": 46.5}, {"input": [46.5, -72.0], "expected": 46.5}, {"input": [46.5, -71.5], "expected": 46.5}, {"input": [46.5, -71.0], "expected": 46.5}, {"input": [46.5, -70.5], "expected": 46.5}, {"input": [46.5, -70.0], "expected": 46.5}, {"input": [46.5, -69.5], "expected": 46.5}, {"input": [46.5, -69.0], "expected": 46.5}, {"input": [46.5, -68.5], "expected": 46.5}, {"input": [46.5, -68.0], "expected": 46.5}, {"input": [46.5, -67.5], "expected": 46.5}, {"input": [46.5, -67.0], "expected": 46.5}, {"input": [46.5, -66.5], "expected": 46.5}, {"input": [46.5, -66.0], "expected": 46.5}, {"input": [46.5, -65.5], "expected": 46.5}, {"input": [46.5, -65.0], "expected": 46.5}, {"input": [46.5, -64.5], "expected": 46.5}, {"input": [46.5, -64.0], "expected": 46.5}, {"input": [46.5, -63.5], "expected": 46.5}, {"input": [46.5, -63.0], "expected": 46.5}, {"input": [46.5, -62.5], "expected": 46.5}, {"input": [46.5, -62.0], "expected": 46.5}, {"input": [46.5, -61.5], "expected": 46.5}, {"input": [46.5, -61.0], "expected": 46.5}, {"input": [46.5, -60.5], "expected": 46.5}, {"input": [46.5, -60.0], "expected": 46.5}, {"input": [46.5, -59.5], "expected": 46.5}, {"input": [46.5, -59.0], "expected": 46.5}, {"input": [46.5, -58.5], "expected": 46.5}, {"input": [46.5, -58.0], "expected": 46.5}, {"input": [46.5, -57.5], "expected": 46.5}, {"input": [46.5, -57.0], "expected": 46.5}, {"input": [46.5, -56.5], "expected": 46.5}, {"input": [46.5, -56.0], "expected": 46.5}, {"input": [46.5, -55.5], "expected": 46.5}, {"input": [46.5, -55.0], "expected": 46.5}, {"input": [46.5, -54.5], "expected": 46.5}, {"input": [46.5, -54.0], "expected": 46.5}, {"input": [46.5, -53.5], "expected": 46.5}, {"input": [46.5, -53.0], "expected": 46.5}, {"input": [46.5, -52.5], "expected": 46.5}, {"input": [46.5, -52.0], "expected": 46.5}, {"input": [46.5, -51.5], "expected": 46.5}, {"input": [46.5, -51.0], "expected": 46.5}, {"input": [46.5, -50.5], "expected": 46.5}, {"input": [46.5, -50.0], "expected": 46.5}, {"input": [46.5, -49.5], "expected": 46.5}, {"input": [46.5, -49.0], "expected": 46.5}, {"input": [46.5, -48.5], "expected": 46.5}, {"input": [46.5, -48.0], "expected": 46.5}, {"input": [46.5, -47.5], "expected": 46.5}, {"input": [46.5, -47.0], "expected": 46.5}, {"input": [46.5, -46.5], "expected": 46.5}, {"input": [46.5, -46.0], "expected": 46.5}, {"input": [46.5, -45.5], "expected": 46.5}, {"input": [46.5, -45.0], "expected": 46.5}, {"input": [46.5, -44.5], "expected": 46.5}, {"input": [46.5, -44.0], "expected": 46.5}, {"input": [46.5, -43.5], "expected": 46.5}, {"input": [46.5, -43.0], "expected": 46.5}, {"input": [46.5, -42.5], "expected": 46.5}, {"input": [46.5, -42.0], "expected": 46.5}, {"input": [46.5, -41.5], "expected": 46.5}, {"input": [46.5, -41.0], "expected": 46.5}, {"input": [46.5, -40.5], "expected": 46.5}, {"input": [46.5, -40.0], "expected": 46.5}, {"input": [46.5, -39.5], "expected": 46.5}, {"input": [46.5, -39.0], "expected": 46.5}, {"input": [46.5, -38.5], "expected": 46.5}, {"input": [46.5, -38.0], "expected": 46.5}, {"input": [46.5, -37.5], "expected": 46.5}, {"input": [46.5, -37.0], "expected": 46.5}, {"input": [46.5, -36.5], "expected": 46.5}, {"input": [46.5, -36.0], "expected": 46.5}, {"input": [46.5, -35.5], "expected": 46.5}, {"input": [46.5, -35.0], "expected": 46.5}, {"input": [46.5, -34.5], "expected": 46.5}, {"input": [46.5, -34.0], "expected": 46.5}, {"input": [46.5, -33.5], "expected": 46.5}, {"input": [46.5, -33.0], "expected": 46.5}, {"input": [46.5, -32.5], "expected": 46.5}, {"input": [46.5, -32.0], "expected": 46.5}, {"input": [46.5, -31.5], "expected": 46.5}, {"input": [46.5, -31.0], "expected": 46.5}, {"input": [46.5, -30.5], "expected": 46.5}, {"input": [46.5, -30.0], "expected": 46.5}, {"input": [46.5, -29.5], "expected": 46.5}, {"input": [46.5, -29.0], "expected": 46.5}, {"input": [46.5, -28.5], "expected": 46.5}, {"input": [46.5, -28.0], "expected": 46.5}, {"input": [46.5, -27.5], "expected": 46.5}, {"input": [46.5, -27.0], "expected": 46.5}, {"input": [46.5, -26.5], "expected": 46.5}, {"input": [46.5, -26.0], "expected": 46.5}, {"input": [46.5, -25.5], "expected": 46.5}, {"input": [46.5, -25.0], "expected": 46.5}, {"input": [46.5, -24.5], "expected": 46.5}, {"input": [46.5, -24.0], "expected": 46.5}, {"input": [46.5, -23.5], "expected": 46.5}, {"input": [46.5, -23.0], "expected": 46.5}, {"input": [46.5, -22.5], "expected": 46.5}, {"input": [46.5, -22.0], "expected": 46.5}, {"input": [46.5, -21.5], "expected": 46.5}, {"input": [46.5, -21.0], "expected": 46.5}, {"input": [46.5, -20.5], "expected": 46.5}, {"input": [46.5, -20.0], "expected": 46.5}, {"input": [46.5, -19.5], "expected": 46.5}, {"input": [46.5, -19.0], "expected": 46.5}, {"input": [46.5, -18.5], "expected": 46.5}, {"input": [46.5, -18.0], "expected": 46.5}, {"input": [46.5, -17.5], "expected": 46.5}, {"input": [46.5, -17.0], "expected": 46.5}, {"input": [46.5, -16.5], "expected": 46.5}, {"input": [46.5, -16.0], "expected": 46.5}, {"input": [46.5, -15.5], "expected": 46.5}, {"input": [46.5, -15.0], "expected": 46.5}, {"input": [46.5, -14.5], "expected": 46.5}, {"input": [46.5, -14.0], "expected": 46.5}, {"input": [46.5, -13.5], "expected": 46.5}, {"input": [46.5, -13.0], "expected": 46.5}, {"input": [46.5, -12.5], "expected": 46.5}, {"input": [46.5, -12.0], "expected": 46.5}, {"input": [46.5, -11.5], "expected": 46.5}, {"input": [46.5, -11.0], "expected": 46.5}, {"input": [46.5, -10.5], "expected": 46.5}, {"input": [46.5, -10.0], "expected": 46.5}, {"input": [46.5, -9.5], "expected": 46.5}, {"input": [46.5, -9.0], "expected": 46.5}, {"input": [46.5, -8.5], "expected": 46.5}, {"input": [46.5, -8.0], "expected": 46.5}, {"input": [46.5, -7.5], "expected": 46.5}, {"input": [46.5, -7.0], "expected": 46.5}, {"input": [46.5, -6.5], "expected": 46.5}, {"input": [46.5, -6.0], "expected": 46.5}, {"input": [46.5, -5.5], "expected": 46.5}, {"input": [46.5, -5.0], "expected": 46.5}, {"input": [46.5, -4.5], "expected": 46.5}, {"input": [46.5, -4.0], "expected": 46.5}, {"input": [46.5, -3.5], "expected": 46.5}, {"input": [46.5, -3.0], "expected": 46.5}, {"input": [46.5, -2.5], "expected": 46.5}, {"input": [46.5, -2.0], "expected": 46.5}, {"input": [46.5, -1.5], "expected": 46.5}, {"input": [46.5, -1.0], "expected": 46.5}, {"input": [46.5, -0.5], "expected": 46.5}, {"input": [46.5, 0.0], "expected": 46.5}, {"input": [46.5, 0.5], "expected": 46.5}, {"input": [46.5, 1.0], "expected": 46.5}, {"input": [46.5, 1.5], "expected": 46.5}, {"input": [46.5, 2.0], "expected": 46.5}, {"input": [46.5, 2.5], "expected": 46.5}, {"input": [46.5, 3.0], "expected": 46.5}, {"input": [46.5, 3.5], "expected": 46.5}, {"input": [46.5, 4.0], "expected": 46.5}, {"input": [46.5, 4.5], "expected": 46.5}, {"input": [46.5, 5.0], "expected": 46.5}, {"input": [46.5, 5.5], "expected": 46.5}, {"input": [46.5, 6.0], "expected": 46.5}, {"input": [46.5, 6.5], "expected": 46.5}, {"input": [46.5, 7.0], "expected": 46.5}, {"input": [46.5, 7.5], "expected": 46.5}, {"input": [46.5, 8.0], "expected": 46.5}, {"input": [46.5, 8.5], "expected": 46.5}, {"input": [46.5, 9.0], "expected": 46.5}, {"input": [46.5, 9.5], "expected": 46.5}, {"input": [46.5, 10.0], "expected": 46.5}, {"input": [46.5, 10.5], "expected": 46.5}, {"input": [46.5, 11.0], "expected": 46.5}, {"input": [46.5, 11.5], "expected": 46.5}, {"input": [46.5, 12.0], "expected": 46.5}, {"input": [46.5, 12.5], "expected": 46.5}, {"input": [46.5, 13.0], "expected": 46.5}, {"input": [46.5, 13.5], "expected": 46.50000000000001}, {"input": [46.5, 14.0], "expected": 46.50000000000001}, {"input": [46.5, 14.5], "expected": 46.500000000000014}, {"input": [46.5, 15.0], "expected": 46.50000000000002}, {"input": [46.5, 15.5], "expected": 46.500000000000036}, {"input": [46.5, 16.0], "expected": 46.50000000000006}, {"input": [46.5, 16.5], "expected": 46.50000000000009}, {"input": [46.5, 17.0], "expected": 46.500000000000156}, {"input": [46.5, 17.5], "expected": 46.500000000000256}, {"input": [46.5, 18.0], "expected": 46.50000000000042}, {"input": [46.5, 18.5], "expected": 46.50000000000069}, {"input": [46.5, 19.0], "expected": 46.50000000000114}, {"input": [46.5, 19.5], "expected": 46.50000000000188}, {"input": [46.5, 20.0], "expected": 46.5000000000031}, {"input": [46.5, 20.5], "expected": 46.50000000000511}, {"input": [46.5, 21.0], "expected": 46.50000000000842}, {"input": [46.5, 21.5], "expected": 46.50000000001389}, {"input": [46.5, 22.0], "expected": 46.5000000000229}, {"input": [46.5, 22.5], "expected": 46.50000000003775}, {"input": [46.5, 23.0], "expected": 46.50000000006224}, {"input": [46.5, 23.5], "expected": 46.50000000010262}, {"input": [46.5, 24.0], "expected": 46.50000000016919}, {"input": [46.5, 24.5], "expected": 46.500000000278945}, {"input": [46.5, 25.0], "expected": 46.500000000459906}, {"input": [46.5, 25.5], "expected": 46.500000000758256}, {"input": [46.5, 26.0], "expected": 46.50000000125015}, {"input": [46.5, 26.5], "expected": 46.50000000206116}, {"input": [46.5, 27.0], "expected": 46.50000000339827}, {"input": [46.5, 27.5], "expected": 46.50000000560279}, {"input": [46.5, 28.0], "expected": 46.500000009237446}, {"input": [46.5, 28.5], "expected": 46.50000001522998}, {"input": [46.5, 29.0], "expected": 46.50000002510999}, {"input": [46.5, 29.5], "expected": 46.500000041399375}, {"input": [46.5, 30.0], "expected": 46.50000006825603}, {"input": [46.5, 30.5], "expected": 46.50000011253517}, {"input": [46.5, 31.0], "expected": 46.50000018553912}, {"input": [46.5, 31.5], "expected": 46.500000305902276}, {"input": [46.5, 32.0], "expected": 46.50000050434753}, {"input": [46.5, 32.5], "expected": 46.500000831528375}, {"input": [46.5, 33.0], "expected": 46.500001370958145}, {"input": [46.5, 33.5], "expected": 46.50000226032685}, {"input": [46.5, 34.0], "expected": 46.50000372664623}, {"input": [46.5, 34.5], "expected": 46.50000614419348}, {"input": [46.5, 35.0], "expected": 46.50001013004229}, {"input": [46.5, 35.5], "expected": 46.50001670156132}, {"input": [46.5, 36.0], "expected": 46.50002753607023}, {"input": [46.5, 36.5], "expected": 46.50004539889922}, {"input": [46.5, 37.0], "expected": 46.50007484902863}, {"input": [46.5, 37.5], "expected": 46.50012340218972}, {"input": [46.5, 38.0], "expected": 46.50020344767213}, {"input": [46.5, 38.5], "expected": 46.5003354063729}, {"input": [46.5, 39.0], "expected": 46.50055293147536}, {"input": [46.5, 39.5], "expected": 46.50091146645377}, {"input": [46.5, 40.0], "expected": 46.50150231015976}, {"input": [46.5, 40.5], "expected": 46.50247568513773}, {"input": [46.5, 41.0], "expected": 46.50407844327057}, {"input": [46.5, 41.5], "expected": 46.50671534848912}, {"input": [46.5, 42.0], "expected": 46.5110477448486}, {"input": [46.5, 42.5], "expected": 46.51814992791781}, {"input": [46.5, 43.0], "expected": 46.52975041827262}, {"input": [46.5, 43.5], "expected": 46.548587351573744}, {"input": [46.5, 44.0], "expected": 46.57888973429255}, {"input": [46.5, 44.5], "expected": 46.62692801104297}, {"input": [46.5, 45.0], "expected": 46.70141327798275}, {"input": [46.5, 45.5], "expected": 46.81326168751822}, {"input": [46.5, 46.0], "expected": 46.97407698418011}, {"input": [46.5, 46.5], "expected": 47.19314718055995}, {"input": [46.5, 47.0], "expected": 47.47407698418011}, {"input": [46.5, 47.5], "expected": 47.81326168751822}, {"input": [46.5, 48.0], "expected": 48.20141327798275}, {"input": [46.5, 48.5], "expected": 48.62692801104297}, {"input": [46.5, 49.0], "expected": 49.07888973429255}, {"input": [46.5, 49.5], "expected": 49.548587351573744}, {"input": [46.5, 50.0], "expected": 50.02975041827262}, {"input": [46.5, 50.5], "expected": 50.51814992791781}, {"input": [46.5, 51.0], "expected": 51.0110477448486}, {"input": [46.5, 51.5], "expected": 51.50671534848912}, {"input": [46.5, 52.0], "expected": 52.00407844327057}, {"input": [46.5, 52.5], "expected": 52.50247568513773}, {"input": [46.5, 53.0], "expected": 53.00150231015976}, {"input": [46.5, 53.5], "expected": 53.50091146645377}, {"input": [46.5, 54.0], "expected": 54.00055293147536}, {"input": [46.5, 54.5], "expected": 54.5003354063729}, {"input": [46.5, 55.0], "expected": 55.00020344767213}, {"input": [46.5, 55.5], "expected": 55.50012340218972}, {"input": [46.5, 56.0], "expected": 56.00007484902863}, {"input": [46.5, 56.5], "expected": 56.50004539889922}, {"input": [46.5, 57.0], "expected": 57.00002753607023}, {"input": [46.5, 57.5], "expected": 57.50001670156132}, {"input": [46.5, 58.0], "expected": 58.00001013004229}, {"input": [46.5, 58.5], "expected": 58.50000614419348}, {"input": [46.5, 59.0], "expected": 59.00000372664623}, {"input": [46.5, 59.5], "expected": 59.50000226032685}, {"input": [46.5, 60.0], "expected": 60.000001370958145}, {"input": [46.5, 60.5], "expected": 60.500000831528375}, {"input": [46.5, 61.0], "expected": 61.00000050434753}, {"input": [46.5, 61.5], "expected": 61.500000305902276}, {"input": [46.5, 62.0], "expected": 62.00000018553912}, {"input": [46.5, 62.5], "expected": 62.50000011253517}, {"input": [46.5, 63.0], "expected": 63.00000006825603}, {"input": [46.5, 63.5], "expected": 63.500000041399375}, {"input": [46.5, 64.0], "expected": 64.00000002511}, {"input": [46.5, 64.5], "expected": 64.50000001522999}, {"input": [46.5, 65.0], "expected": 65.00000000923745}, {"input": [46.5, 65.5], "expected": 65.5000000056028}, {"input": [46.5, 66.0], "expected": 66.00000000339827}, {"input": [46.5, 66.5], "expected": 66.50000000206116}, {"input": [46.5, 67.0], "expected": 67.00000000125016}, {"input": [46.5, 67.5], "expected": 67.50000000075826}, {"input": [46.5, 68.0], "expected": 68.0000000004599}, {"input": [46.5, 68.5], "expected": 68.50000000027894}, {"input": [46.5, 69.0], "expected": 69.0000000001692}, {"input": [46.5, 69.5], "expected": 69.50000000010262}, {"input": [46.5, 70.0], "expected": 70.00000000006224}, {"input": [46.5, 70.5], "expected": 70.50000000003776}, {"input": [46.5, 71.0], "expected": 71.0000000000229}, {"input": [46.5, 71.5], "expected": 71.50000000001388}, {"input": [46.5, 72.0], "expected": 72.00000000000843}, {"input": [46.5, 72.5], "expected": 72.50000000000512}, {"input": [46.5, 73.0], "expected": 73.0000000000031}, {"input": [46.5, 73.5], "expected": 73.50000000000188}, {"input": [46.5, 74.0], "expected": 74.00000000000114}, {"input": [46.5, 74.5], "expected": 74.5000000000007}, {"input": [46.5, 75.0], "expected": 75.00000000000043}, {"input": [46.5, 75.5], "expected": 75.50000000000026}, {"input": [46.5, 76.0], "expected": 76.00000000000016}, {"input": [46.5, 76.5], "expected": 76.5000000000001}, {"input": [46.5, 77.0], "expected": 77.00000000000006}, {"input": [46.5, 77.5], "expected": 77.50000000000003}, {"input": [46.5, 78.0], "expected": 78.00000000000001}, {"input": [46.5, 78.5], "expected": 78.50000000000001}, {"input": [46.5, 79.0], "expected": 79.00000000000001}, {"input": [46.5, 79.5], "expected": 79.5}, {"input": [46.5, 80.0], "expected": 80.0}, {"input": [46.5, 80.5], "expected": 80.5}, {"input": [46.5, 81.0], "expected": 81.0}, {"input": [46.5, 81.5], "expected": 81.5}, {"input": [46.5, 82.0], "expected": 82.0}, {"input": [46.5, 82.5], "expected": 82.5}, {"input": [46.5, 83.0], "expected": 83.0}, {"input": [46.5, 83.5], "expected": 83.5}, {"input": [46.5, 84.0], "expected": 84.0}, {"input": [46.5, 84.5], "expected": 84.5}, {"input": [46.5, 85.0], "expected": 85.0}, {"input": [46.5, 85.5], "expected": 85.5}, {"input": [46.5, 86.0], "expected": 86.0}, {"input": [46.5, 86.5], "expected": 86.5}, {"input": [46.5, 87.0], "expected": 87.0}, {"input": [46.5, 87.5], "expected": 87.5}, {"input": [46.5, 88.0], "expected": 88.0}, {"input": [46.5, 88.5], "expected": 88.5}, {"input": [46.5, 89.0], "expected": 89.0}, {"input": [46.5, 89.5], "expected": 89.5}, {"input": [46.5, 90.0], "expected": 90.0}, {"input": [46.5, 90.5], "expected": 90.5}, {"input": [46.5, 91.0], "expected": 91.0}, {"input": [46.5, 91.5], "expected": 91.5}, {"input": [46.5, 92.0], "expected": 92.0}, {"input": [46.5, 92.5], "expected": 92.5}, {"input": [46.5, 93.0], "expected": 93.0}, {"input": [46.5, 93.5], "expected": 93.5}, {"input": [46.5, 94.0], "expected": 94.0}, {"input": [46.5, 94.5], "expected": 94.5}, {"input": [46.5, 95.0], "expected": 95.0}, {"input": [46.5, 95.5], "expected": 95.5}, {"input": [46.5, 96.0], "expected": 96.0}, {"input": [46.5, 96.5], "expected": 96.5}, {"input": [46.5, 97.0], "expected": 97.0}, {"input": [46.5, 97.5], "expected": 97.5}, {"input": [46.5, 98.0], "expected": 98.0}, {"input": [46.5, 98.5], "expected": 98.5}, {"input": [46.5, 99.0], "expected": 99.0}, {"input": [46.5, 99.5], "expected": 99.5}, {"input": [47.0, -100.0], "expected": 47.0}, {"input": [47.0, -99.5], "expected": 47.0}, {"input": [47.0, -99.0], "expected": 47.0}, {"input": [47.0, -98.5], "expected": 47.0}, {"input": [47.0, -98.0], "expected": 47.0}, {"input": [47.0, -97.5], "expected": 47.0}, {"input": [47.0, -97.0], "expected": 47.0}, {"input": [47.0, -96.5], "expected": 47.0}, {"input": [47.0, -96.0], "expected": 47.0}, {"input": [47.0, -95.5], "expected": 47.0}, {"input": [47.0, -95.0], "expected": 47.0}, {"input": [47.0, -94.5], "expected": 47.0}, {"input": [47.0, -94.0], "expected": 47.0}, {"input": [47.0, -93.5], "expected": 47.0}, {"input": [47.0, -93.0], "expected": 47.0}, {"input": [47.0, -92.5], "expected": 47.0}, {"input": [47.0, -92.0], "expected": 47.0}, {"input": [47.0, -91.5], "expected": 47.0}, {"input": [47.0, -91.0], "expected": 47.0}, {"input": [47.0, -90.5], "expected": 47.0}, {"input": [47.0, -90.0], "expected": 47.0}, {"input": [47.0, -89.5], "expected": 47.0}, {"input": [47.0, -89.0], "expected": 47.0}, {"input": [47.0, -88.5], "expected": 47.0}, {"input": [47.0, -88.0], "expected": 47.0}, {"input": [47.0, -87.5], "expected": 47.0}, {"input": [47.0, -87.0], "expected": 47.0}, {"input": [47.0, -86.5], "expected": 47.0}, {"input": [47.0, -86.0], "expected": 47.0}, {"input": [47.0, -85.5], "expected": 47.0}, {"input": [47.0, -85.0], "expected": 47.0}, {"input": [47.0, -84.5], "expected": 47.0}, {"input": [47.0, -84.0], "expected": 47.0}, {"input": [47.0, -83.5], "expected": 47.0}, {"input": [47.0, -83.0], "expected": 47.0}, {"input": [47.0, -82.5], "expected": 47.0}, {"input": [47.0, -82.0], "expected": 47.0}, {"input": [47.0, -81.5], "expected": 47.0}, {"input": [47.0, -81.0], "expected": 47.0}, {"input": [47.0, -80.5], "expected": 47.0}, {"input": [47.0, -80.0], "expected": 47.0}, {"input": [47.0, -79.5], "expected": 47.0}, {"input": [47.0, -79.0], "expected": 47.0}, {"input": [47.0, -78.5], "expected": 47.0}, {"input": [47.0, -78.0], "expected": 47.0}, {"input": [47.0, -77.5], "expected": 47.0}, {"input": [47.0, -77.0], "expected": 47.0}, {"input": [47.0, -76.5], "expected": 47.0}, {"input": [47.0, -76.0], "expected": 47.0}, {"input": [47.0, -75.5], "expected": 47.0}, {"input": [47.0, -75.0], "expected": 47.0}, {"input": [47.0, -74.5], "expected": 47.0}, {"input": [47.0, -74.0], "expected": 47.0}, {"input": [47.0, -73.5], "expected": 47.0}, {"input": [47.0, -73.0], "expected": 47.0}, {"input": [47.0, -72.5], "expected": 47.0}, {"input": [47.0, -72.0], "expected": 47.0}, {"input": [47.0, -71.5], "expected": 47.0}, {"input": [47.0, -71.0], "expected": 47.0}, {"input": [47.0, -70.5], "expected": 47.0}, {"input": [47.0, -70.0], "expected": 47.0}, {"input": [47.0, -69.5], "expected": 47.0}, {"input": [47.0, -69.0], "expected": 47.0}, {"input": [47.0, -68.5], "expected": 47.0}, {"input": [47.0, -68.0], "expected": 47.0}, {"input": [47.0, -67.5], "expected": 47.0}, {"input": [47.0, -67.0], "expected": 47.0}, {"input": [47.0, -66.5], "expected": 47.0}, {"input": [47.0, -66.0], "expected": 47.0}, {"input": [47.0, -65.5], "expected": 47.0}, {"input": [47.0, -65.0], "expected": 47.0}, {"input": [47.0, -64.5], "expected": 47.0}, {"input": [47.0, -64.0], "expected": 47.0}, {"input": [47.0, -63.5], "expected": 47.0}, {"input": [47.0, -63.0], "expected": 47.0}, {"input": [47.0, -62.5], "expected": 47.0}, {"input": [47.0, -62.0], "expected": 47.0}, {"input": [47.0, -61.5], "expected": 47.0}, {"input": [47.0, -61.0], "expected": 47.0}, {"input": [47.0, -60.5], "expected": 47.0}, {"input": [47.0, -60.0], "expected": 47.0}, {"input": [47.0, -59.5], "expected": 47.0}, {"input": [47.0, -59.0], "expected": 47.0}, {"input": [47.0, -58.5], "expected": 47.0}, {"input": [47.0, -58.0], "expected": 47.0}, {"input": [47.0, -57.5], "expected": 47.0}, {"input": [47.0, -57.0], "expected": 47.0}, {"input": [47.0, -56.5], "expected": 47.0}, {"input": [47.0, -56.0], "expected": 47.0}, {"input": [47.0, -55.5], "expected": 47.0}, {"input": [47.0, -55.0], "expected": 47.0}, {"input": [47.0, -54.5], "expected": 47.0}, {"input": [47.0, -54.0], "expected": 47.0}, {"input": [47.0, -53.5], "expected": 47.0}, {"input": [47.0, -53.0], "expected": 47.0}, {"input": [47.0, -52.5], "expected": 47.0}, {"input": [47.0, -52.0], "expected": 47.0}, {"input": [47.0, -51.5], "expected": 47.0}, {"input": [47.0, -51.0], "expected": 47.0}, {"input": [47.0, -50.5], "expected": 47.0}, {"input": [47.0, -50.0], "expected": 47.0}, {"input": [47.0, -49.5], "expected": 47.0}, {"input": [47.0, -49.0], "expected": 47.0}, {"input": [47.0, -48.5], "expected": 47.0}, {"input": [47.0, -48.0], "expected": 47.0}, {"input": [47.0, -47.5], "expected": 47.0}, {"input": [47.0, -47.0], "expected": 47.0}, {"input": [47.0, -46.5], "expected": 47.0}, {"input": [47.0, -46.0], "expected": 47.0}, {"input": [47.0, -45.5], "expected": 47.0}, {"input": [47.0, -45.0], "expected": 47.0}, {"input": [47.0, -44.5], "expected": 47.0}, {"input": [47.0, -44.0], "expected": 47.0}, {"input": [47.0, -43.5], "expected": 47.0}, {"input": [47.0, -43.0], "expected": 47.0}, {"input": [47.0, -42.5], "expected": 47.0}, {"input": [47.0, -42.0], "expected": 47.0}, {"input": [47.0, -41.5], "expected": 47.0}, {"input": [47.0, -41.0], "expected": 47.0}, {"input": [47.0, -40.5], "expected": 47.0}, {"input": [47.0, -40.0], "expected": 47.0}, {"input": [47.0, -39.5], "expected": 47.0}, {"input": [47.0, -39.0], "expected": 47.0}, {"input": [47.0, -38.5], "expected": 47.0}, {"input": [47.0, -38.0], "expected": 47.0}, {"input": [47.0, -37.5], "expected": 47.0}, {"input": [47.0, -37.0], "expected": 47.0}, {"input": [47.0, -36.5], "expected": 47.0}, {"input": [47.0, -36.0], "expected": 47.0}, {"input": [47.0, -35.5], "expected": 47.0}, {"input": [47.0, -35.0], "expected": 47.0}, {"input": [47.0, -34.5], "expected": 47.0}, {"input": [47.0, -34.0], "expected": 47.0}, {"input": [47.0, -33.5], "expected": 47.0}, {"input": [47.0, -33.0], "expected": 47.0}, {"input": [47.0, -32.5], "expected": 47.0}, {"input": [47.0, -32.0], "expected": 47.0}, {"input": [47.0, -31.5], "expected": 47.0}, {"input": [47.0, -31.0], "expected": 47.0}, {"input": [47.0, -30.5], "expected": 47.0}, {"input": [47.0, -30.0], "expected": 47.0}, {"input": [47.0, -29.5], "expected": 47.0}, {"input": [47.0, -29.0], "expected": 47.0}, {"input": [47.0, -28.5], "expected": 47.0}, {"input": [47.0, -28.0], "expected": 47.0}, {"input": [47.0, -27.5], "expected": 47.0}, {"input": [47.0, -27.0], "expected": 47.0}, {"input": [47.0, -26.5], "expected": 47.0}, {"input": [47.0, -26.0], "expected": 47.0}, {"input": [47.0, -25.5], "expected": 47.0}, {"input": [47.0, -25.0], "expected": 47.0}, {"input": [47.0, -24.5], "expected": 47.0}, {"input": [47.0, -24.0], "expected": 47.0}, {"input": [47.0, -23.5], "expected": 47.0}, {"input": [47.0, -23.0], "expected": 47.0}, {"input": [47.0, -22.5], "expected": 47.0}, {"input": [47.0, -22.0], "expected": 47.0}, {"input": [47.0, -21.5], "expected": 47.0}, {"input": [47.0, -21.0], "expected": 47.0}, {"input": [47.0, -20.5], "expected": 47.0}, {"input": [47.0, -20.0], "expected": 47.0}, {"input": [47.0, -19.5], "expected": 47.0}, {"input": [47.0, -19.0], "expected": 47.0}, {"input": [47.0, -18.5], "expected": 47.0}, {"input": [47.0, -18.0], "expected": 47.0}, {"input": [47.0, -17.5], "expected": 47.0}, {"input": [47.0, -17.0], "expected": 47.0}, {"input": [47.0, -16.5], "expected": 47.0}, {"input": [47.0, -16.0], "expected": 47.0}, {"input": [47.0, -15.5], "expected": 47.0}, {"input": [47.0, -15.0], "expected": 47.0}, {"input": [47.0, -14.5], "expected": 47.0}, {"input": [47.0, -14.0], "expected": 47.0}, {"input": [47.0, -13.5], "expected": 47.0}, {"input": [47.0, -13.0], "expected": 47.0}, {"input": [47.0, -12.5], "expected": 47.0}, {"input": [47.0, -12.0], "expected": 47.0}, {"input": [47.0, -11.5], "expected": 47.0}, {"input": [47.0, -11.0], "expected": 47.0}, {"input": [47.0, -10.5], "expected": 47.0}, {"input": [47.0, -10.0], "expected": 47.0}, {"input": [47.0, -9.5], "expected": 47.0}, {"input": [47.0, -9.0], "expected": 47.0}, {"input": [47.0, -8.5], "expected": 47.0}, {"input": [47.0, -8.0], "expected": 47.0}, {"input": [47.0, -7.5], "expected": 47.0}, {"input": [47.0, -7.0], "expected": 47.0}, {"input": [47.0, -6.5], "expected": 47.0}, {"input": [47.0, -6.0], "expected": 47.0}, {"input": [47.0, -5.5], "expected": 47.0}, {"input": [47.0, -5.0], "expected": 47.0}, {"input": [47.0, -4.5], "expected": 47.0}, {"input": [47.0, -4.0], "expected": 47.0}, {"input": [47.0, -3.5], "expected": 47.0}, {"input": [47.0, -3.0], "expected": 47.0}, {"input": [47.0, -2.5], "expected": 47.0}, {"input": [47.0, -2.0], "expected": 47.0}, {"input": [47.0, -1.5], "expected": 47.0}, {"input": [47.0, -1.0], "expected": 47.0}, {"input": [47.0, -0.5], "expected": 47.0}, {"input": [47.0, 0.0], "expected": 47.0}, {"input": [47.0, 0.5], "expected": 47.0}, {"input": [47.0, 1.0], "expected": 47.0}, {"input": [47.0, 1.5], "expected": 47.0}, {"input": [47.0, 2.0], "expected": 47.0}, {"input": [47.0, 2.5], "expected": 47.0}, {"input": [47.0, 3.0], "expected": 47.0}, {"input": [47.0, 3.5], "expected": 47.0}, {"input": [47.0, 4.0], "expected": 47.0}, {"input": [47.0, 4.5], "expected": 47.0}, {"input": [47.0, 5.0], "expected": 47.0}, {"input": [47.0, 5.5], "expected": 47.0}, {"input": [47.0, 6.0], "expected": 47.0}, {"input": [47.0, 6.5], "expected": 47.0}, {"input": [47.0, 7.0], "expected": 47.0}, {"input": [47.0, 7.5], "expected": 47.0}, {"input": [47.0, 8.0], "expected": 47.0}, {"input": [47.0, 8.5], "expected": 47.0}, {"input": [47.0, 9.0], "expected": 47.0}, {"input": [47.0, 9.5], "expected": 47.0}, {"input": [47.0, 10.0], "expected": 47.0}, {"input": [47.0, 10.5], "expected": 47.0}, {"input": [47.0, 11.0], "expected": 47.0}, {"input": [47.0, 11.5], "expected": 47.0}, {"input": [47.0, 12.0], "expected": 47.0}, {"input": [47.0, 12.5], "expected": 47.0}, {"input": [47.0, 13.0], "expected": 47.0}, {"input": [47.0, 13.5], "expected": 47.0}, {"input": [47.0, 14.0], "expected": 47.00000000000001}, {"input": [47.0, 14.5], "expected": 47.00000000000001}, {"input": [47.0, 15.0], "expected": 47.000000000000014}, {"input": [47.0, 15.5], "expected": 47.00000000000002}, {"input": [47.0, 16.0], "expected": 47.000000000000036}, {"input": [47.0, 16.5], "expected": 47.00000000000006}, {"input": [47.0, 17.0], "expected": 47.00000000000009}, {"input": [47.0, 17.5], "expected": 47.000000000000156}, {"input": [47.0, 18.0], "expected": 47.000000000000256}, {"input": [47.0, 18.5], "expected": 47.00000000000042}, {"input": [47.0, 19.0], "expected": 47.00000000000069}, {"input": [47.0, 19.5], "expected": 47.00000000000114}, {"input": [47.0, 20.0], "expected": 47.00000000000188}, {"input": [47.0, 20.5], "expected": 47.0000000000031}, {"input": [47.0, 21.0], "expected": 47.00000000000511}, {"input": [47.0, 21.5], "expected": 47.00000000000842}, {"input": [47.0, 22.0], "expected": 47.00000000001389}, {"input": [47.0, 22.5], "expected": 47.0000000000229}, {"input": [47.0, 23.0], "expected": 47.00000000003775}, {"input": [47.0, 23.5], "expected": 47.00000000006224}, {"input": [47.0, 24.0], "expected": 47.00000000010262}, {"input": [47.0, 24.5], "expected": 47.00000000016919}, {"input": [47.0, 25.0], "expected": 47.000000000278945}, {"input": [47.0, 25.5], "expected": 47.000000000459906}, {"input": [47.0, 26.0], "expected": 47.000000000758256}, {"input": [47.0, 26.5], "expected": 47.00000000125015}, {"input": [47.0, 27.0], "expected": 47.00000000206116}, {"input": [47.0, 27.5], "expected": 47.00000000339827}, {"input": [47.0, 28.0], "expected": 47.00000000560279}, {"input": [47.0, 28.5], "expected": 47.000000009237446}, {"input": [47.0, 29.0], "expected": 47.00000001522998}, {"input": [47.0, 29.5], "expected": 47.00000002510999}, {"input": [47.0, 30.0], "expected": 47.000000041399375}, {"input": [47.0, 30.5], "expected": 47.00000006825603}, {"input": [47.0, 31.0], "expected": 47.00000011253517}, {"input": [47.0, 31.5], "expected": 47.00000018553912}, {"input": [47.0, 32.0], "expected": 47.000000305902276}, {"input": [47.0, 32.5], "expected": 47.00000050434753}, {"input": [47.0, 33.0], "expected": 47.000000831528375}, {"input": [47.0, 33.5], "expected": 47.000001370958145}, {"input": [47.0, 34.0], "expected": 47.00000226032685}, {"input": [47.0, 34.5], "expected": 47.00000372664623}, {"input": [47.0, 35.0], "expected": 47.00000614419348}, {"input": [47.0, 35.5], "expected": 47.00001013004229}, {"input": [47.0, 36.0], "expected": 47.00001670156132}, {"input": [47.0, 36.5], "expected": 47.00002753607023}, {"input": [47.0, 37.0], "expected": 47.00004539889922}, {"input": [47.0, 37.5], "expected": 47.00007484902863}, {"input": [47.0, 38.0], "expected": 47.00012340218972}, {"input": [47.0, 38.5], "expected": 47.00020344767213}, {"input": [47.0, 39.0], "expected": 47.0003354063729}, {"input": [47.0, 39.5], "expected": 47.00055293147536}, {"input": [47.0, 40.0], "expected": 47.00091146645377}, {"input": [47.0, 40.5], "expected": 47.00150231015976}, {"input": [47.0, 41.0], "expected": 47.00247568513773}, {"input": [47.0, 41.5], "expected": 47.00407844327057}, {"input": [47.0, 42.0], "expected": 47.00671534848912}, {"input": [47.0, 42.5], "expected": 47.0110477448486}, {"input": [47.0, 43.0], "expected": 47.01814992791781}, {"input": [47.0, 43.5], "expected": 47.02975041827262}, {"input": [47.0, 44.0], "expected": 47.048587351573744}, {"input": [47.0, 44.5], "expected": 47.07888973429255}, {"input": [47.0, 45.0], "expected": 47.12692801104297}, {"input": [47.0, 45.5], "expected": 47.20141327798275}, {"input": [47.0, 46.0], "expected": 47.31326168751822}, {"input": [47.0, 46.5], "expected": 47.47407698418011}, {"input": [47.0, 47.0], "expected": 47.69314718055995}, {"input": [47.0, 47.5], "expected": 47.97407698418011}, {"input": [47.0, 48.0], "expected": 48.31326168751822}, {"input": [47.0, 48.5], "expected": 48.70141327798275}, {"input": [47.0, 49.0], "expected": 49.12692801104297}, {"input": [47.0, 49.5], "expected": 49.57888973429255}, {"input": [47.0, 50.0], "expected": 50.048587351573744}, {"input": [47.0, 50.5], "expected": 50.52975041827262}, {"input": [47.0, 51.0], "expected": 51.01814992791781}, {"input": [47.0, 51.5], "expected": 51.5110477448486}, {"input": [47.0, 52.0], "expected": 52.00671534848912}, {"input": [47.0, 52.5], "expected": 52.50407844327057}, {"input": [47.0, 53.0], "expected": 53.00247568513773}, {"input": [47.0, 53.5], "expected": 53.50150231015976}, {"input": [47.0, 54.0], "expected": 54.00091146645377}, {"input": [47.0, 54.5], "expected": 54.50055293147536}, {"input": [47.0, 55.0], "expected": 55.0003354063729}, {"input": [47.0, 55.5], "expected": 55.50020344767213}, {"input": [47.0, 56.0], "expected": 56.00012340218972}, {"input": [47.0, 56.5], "expected": 56.50007484902863}, {"input": [47.0, 57.0], "expected": 57.00004539889922}, {"input": [47.0, 57.5], "expected": 57.50002753607023}, {"input": [47.0, 58.0], "expected": 58.00001670156132}, {"input": [47.0, 58.5], "expected": 58.50001013004229}, {"input": [47.0, 59.0], "expected": 59.00000614419348}, {"input": [47.0, 59.5], "expected": 59.50000372664623}, {"input": [47.0, 60.0], "expected": 60.00000226032685}, {"input": [47.0, 60.5], "expected": 60.500001370958145}, {"input": [47.0, 61.0], "expected": 61.000000831528375}, {"input": [47.0, 61.5], "expected": 61.50000050434753}, {"input": [47.0, 62.0], "expected": 62.000000305902276}, {"input": [47.0, 62.5], "expected": 62.50000018553912}, {"input": [47.0, 63.0], "expected": 63.00000011253517}, {"input": [47.0, 63.5], "expected": 63.50000006825603}, {"input": [47.0, 64.0], "expected": 64.00000004139937}, {"input": [47.0, 64.5], "expected": 64.50000002511}, {"input": [47.0, 65.0], "expected": 65.00000001522999}, {"input": [47.0, 65.5], "expected": 65.50000000923745}, {"input": [47.0, 66.0], "expected": 66.0000000056028}, {"input": [47.0, 66.5], "expected": 66.50000000339827}, {"input": [47.0, 67.0], "expected": 67.00000000206116}, {"input": [47.0, 67.5], "expected": 67.50000000125016}, {"input": [47.0, 68.0], "expected": 68.00000000075826}, {"input": [47.0, 68.5], "expected": 68.5000000004599}, {"input": [47.0, 69.0], "expected": 69.00000000027894}, {"input": [47.0, 69.5], "expected": 69.5000000001692}, {"input": [47.0, 70.0], "expected": 70.00000000010262}, {"input": [47.0, 70.5], "expected": 70.50000000006224}, {"input": [47.0, 71.0], "expected": 71.00000000003776}, {"input": [47.0, 71.5], "expected": 71.5000000000229}, {"input": [47.0, 72.0], "expected": 72.00000000001388}, {"input": [47.0, 72.5], "expected": 72.50000000000843}, {"input": [47.0, 73.0], "expected": 73.00000000000512}, {"input": [47.0, 73.5], "expected": 73.5000000000031}, {"input": [47.0, 74.0], "expected": 74.00000000000188}, {"input": [47.0, 74.5], "expected": 74.50000000000114}, {"input": [47.0, 75.0], "expected": 75.0000000000007}, {"input": [47.0, 75.5], "expected": 75.50000000000043}, {"input": [47.0, 76.0], "expected": 76.00000000000026}, {"input": [47.0, 76.5], "expected": 76.50000000000016}, {"input": [47.0, 77.0], "expected": 77.0000000000001}, {"input": [47.0, 77.5], "expected": 77.50000000000006}, {"input": [47.0, 78.0], "expected": 78.00000000000003}, {"input": [47.0, 78.5], "expected": 78.50000000000001}, {"input": [47.0, 79.0], "expected": 79.00000000000001}, {"input": [47.0, 79.5], "expected": 79.50000000000001}, {"input": [47.0, 80.0], "expected": 80.0}, {"input": [47.0, 80.5], "expected": 80.5}, {"input": [47.0, 81.0], "expected": 81.0}, {"input": [47.0, 81.5], "expected": 81.5}, {"input": [47.0, 82.0], "expected": 82.0}, {"input": [47.0, 82.5], "expected": 82.5}, {"input": [47.0, 83.0], "expected": 83.0}, {"input": [47.0, 83.5], "expected": 83.5}, {"input": [47.0, 84.0], "expected": 84.0}, {"input": [47.0, 84.5], "expected": 84.5}, {"input": [47.0, 85.0], "expected": 85.0}, {"input": [47.0, 85.5], "expected": 85.5}, {"input": [47.0, 86.0], "expected": 86.0}, {"input": [47.0, 86.5], "expected": 86.5}, {"input": [47.0, 87.0], "expected": 87.0}, {"input": [47.0, 87.5], "expected": 87.5}, {"input": [47.0, 88.0], "expected": 88.0}, {"input": [47.0, 88.5], "expected": 88.5}, {"input": [47.0, 89.0], "expected": 89.0}, {"input": [47.0, 89.5], "expected": 89.5}, {"input": [47.0, 90.0], "expected": 90.0}, {"input": [47.0, 90.5], "expected": 90.5}, {"input": [47.0, 91.0], "expected": 91.0}, {"input": [47.0, 91.5], "expected": 91.5}, {"input": [47.0, 92.0], "expected": 92.0}, {"input": [47.0, 92.5], "expected": 92.5}, {"input": [47.0, 93.0], "expected": 93.0}, {"input": [47.0, 93.5], "expected": 93.5}, {"input": [47.0, 94.0], "expected": 94.0}, {"input": [47.0, 94.5], "expected": 94.5}, {"input": [47.0, 95.0], "expected": 95.0}, {"input": [47.0, 95.5], "expected": 95.5}, {"input": [47.0, 96.0], "expected": 96.0}, {"input": [47.0, 96.5], "expected": 96.5}, {"input": [47.0, 97.0], "expected": 97.0}, {"input": [47.0, 97.5], "expected": 97.5}, {"input": [47.0, 98.0], "expected": 98.0}, {"input": [47.0, 98.5], "expected": 98.5}, {"input": [47.0, 99.0], "expected": 99.0}, {"input": [47.0, 99.5], "expected": 99.5}, {"input": [47.5, -100.0], "expected": 47.5}, {"input": [47.5, -99.5], "expected": 47.5}, {"input": [47.5, -99.0], "expected": 47.5}, {"input": [47.5, -98.5], "expected": 47.5}, {"input": [47.5, -98.0], "expected": 47.5}, {"input": [47.5, -97.5], "expected": 47.5}, {"input": [47.5, -97.0], "expected": 47.5}, {"input": [47.5, -96.5], "expected": 47.5}, {"input": [47.5, -96.0], "expected": 47.5}, {"input": [47.5, -95.5], "expected": 47.5}, {"input": [47.5, -95.0], "expected": 47.5}, {"input": [47.5, -94.5], "expected": 47.5}, {"input": [47.5, -94.0], "expected": 47.5}, {"input": [47.5, -93.5], "expected": 47.5}, {"input": [47.5, -93.0], "expected": 47.5}, {"input": [47.5, -92.5], "expected": 47.5}, {"input": [47.5, -92.0], "expected": 47.5}, {"input": [47.5, -91.5], "expected": 47.5}, {"input": [47.5, -91.0], "expected": 47.5}, {"input": [47.5, -90.5], "expected": 47.5}, {"input": [47.5, -90.0], "expected": 47.5}, {"input": [47.5, -89.5], "expected": 47.5}, {"input": [47.5, -89.0], "expected": 47.5}, {"input": [47.5, -88.5], "expected": 47.5}, {"input": [47.5, -88.0], "expected": 47.5}, {"input": [47.5, -87.5], "expected": 47.5}, {"input": [47.5, -87.0], "expected": 47.5}, {"input": [47.5, -86.5], "expected": 47.5}, {"input": [47.5, -86.0], "expected": 47.5}, {"input": [47.5, -85.5], "expected": 47.5}, {"input": [47.5, -85.0], "expected": 47.5}, {"input": [47.5, -84.5], "expected": 47.5}, {"input": [47.5, -84.0], "expected": 47.5}, {"input": [47.5, -83.5], "expected": 47.5}, {"input": [47.5, -83.0], "expected": 47.5}, {"input": [47.5, -82.5], "expected": 47.5}, {"input": [47.5, -82.0], "expected": 47.5}, {"input": [47.5, -81.5], "expected": 47.5}, {"input": [47.5, -81.0], "expected": 47.5}, {"input": [47.5, -80.5], "expected": 47.5}, {"input": [47.5, -80.0], "expected": 47.5}, {"input": [47.5, -79.5], "expected": 47.5}, {"input": [47.5, -79.0], "expected": 47.5}, {"input": [47.5, -78.5], "expected": 47.5}, {"input": [47.5, -78.0], "expected": 47.5}, {"input": [47.5, -77.5], "expected": 47.5}, {"input": [47.5, -77.0], "expected": 47.5}, {"input": [47.5, -76.5], "expected": 47.5}, {"input": [47.5, -76.0], "expected": 47.5}, {"input": [47.5, -75.5], "expected": 47.5}, {"input": [47.5, -75.0], "expected": 47.5}, {"input": [47.5, -74.5], "expected": 47.5}, {"input": [47.5, -74.0], "expected": 47.5}, {"input": [47.5, -73.5], "expected": 47.5}, {"input": [47.5, -73.0], "expected": 47.5}, {"input": [47.5, -72.5], "expected": 47.5}, {"input": [47.5, -72.0], "expected": 47.5}, {"input": [47.5, -71.5], "expected": 47.5}, {"input": [47.5, -71.0], "expected": 47.5}, {"input": [47.5, -70.5], "expected": 47.5}, {"input": [47.5, -70.0], "expected": 47.5}, {"input": [47.5, -69.5], "expected": 47.5}, {"input": [47.5, -69.0], "expected": 47.5}, {"input": [47.5, -68.5], "expected": 47.5}, {"input": [47.5, -68.0], "expected": 47.5}, {"input": [47.5, -67.5], "expected": 47.5}, {"input": [47.5, -67.0], "expected": 47.5}, {"input": [47.5, -66.5], "expected": 47.5}, {"input": [47.5, -66.0], "expected": 47.5}, {"input": [47.5, -65.5], "expected": 47.5}, {"input": [47.5, -65.0], "expected": 47.5}, {"input": [47.5, -64.5], "expected": 47.5}, {"input": [47.5, -64.0], "expected": 47.5}, {"input": [47.5, -63.5], "expected": 47.5}, {"input": [47.5, -63.0], "expected": 47.5}, {"input": [47.5, -62.5], "expected": 47.5}, {"input": [47.5, -62.0], "expected": 47.5}, {"input": [47.5, -61.5], "expected": 47.5}, {"input": [47.5, -61.0], "expected": 47.5}, {"input": [47.5, -60.5], "expected": 47.5}, {"input": [47.5, -60.0], "expected": 47.5}, {"input": [47.5, -59.5], "expected": 47.5}, {"input": [47.5, -59.0], "expected": 47.5}, {"input": [47.5, -58.5], "expected": 47.5}, {"input": [47.5, -58.0], "expected": 47.5}, {"input": [47.5, -57.5], "expected": 47.5}, {"input": [47.5, -57.0], "expected": 47.5}, {"input": [47.5, -56.5], "expected": 47.5}, {"input": [47.5, -56.0], "expected": 47.5}, {"input": [47.5, -55.5], "expected": 47.5}, {"input": [47.5, -55.0], "expected": 47.5}, {"input": [47.5, -54.5], "expected": 47.5}, {"input": [47.5, -54.0], "expected": 47.5}, {"input": [47.5, -53.5], "expected": 47.5}, {"input": [47.5, -53.0], "expected": 47.5}, {"input": [47.5, -52.5], "expected": 47.5}, {"input": [47.5, -52.0], "expected": 47.5}, {"input": [47.5, -51.5], "expected": 47.5}, {"input": [47.5, -51.0], "expected": 47.5}, {"input": [47.5, -50.5], "expected": 47.5}, {"input": [47.5, -50.0], "expected": 47.5}, {"input": [47.5, -49.5], "expected": 47.5}, {"input": [47.5, -49.0], "expected": 47.5}, {"input": [47.5, -48.5], "expected": 47.5}, {"input": [47.5, -48.0], "expected": 47.5}, {"input": [47.5, -47.5], "expected": 47.5}, {"input": [47.5, -47.0], "expected": 47.5}, {"input": [47.5, -46.5], "expected": 47.5}, {"input": [47.5, -46.0], "expected": 47.5}, {"input": [47.5, -45.5], "expected": 47.5}, {"input": [47.5, -45.0], "expected": 47.5}, {"input": [47.5, -44.5], "expected": 47.5}, {"input": [47.5, -44.0], "expected": 47.5}, {"input": [47.5, -43.5], "expected": 47.5}, {"input": [47.5, -43.0], "expected": 47.5}, {"input": [47.5, -42.5], "expected": 47.5}, {"input": [47.5, -42.0], "expected": 47.5}, {"input": [47.5, -41.5], "expected": 47.5}, {"input": [47.5, -41.0], "expected": 47.5}, {"input": [47.5, -40.5], "expected": 47.5}, {"input": [47.5, -40.0], "expected": 47.5}, {"input": [47.5, -39.5], "expected": 47.5}, {"input": [47.5, -39.0], "expected": 47.5}, {"input": [47.5, -38.5], "expected": 47.5}, {"input": [47.5, -38.0], "expected": 47.5}, {"input": [47.5, -37.5], "expected": 47.5}, {"input": [47.5, -37.0], "expected": 47.5}, {"input": [47.5, -36.5], "expected": 47.5}, {"input": [47.5, -36.0], "expected": 47.5}, {"input": [47.5, -35.5], "expected": 47.5}, {"input": [47.5, -35.0], "expected": 47.5}, {"input": [47.5, -34.5], "expected": 47.5}, {"input": [47.5, -34.0], "expected": 47.5}, {"input": [47.5, -33.5], "expected": 47.5}, {"input": [47.5, -33.0], "expected": 47.5}, {"input": [47.5, -32.5], "expected": 47.5}, {"input": [47.5, -32.0], "expected": 47.5}, {"input": [47.5, -31.5], "expected": 47.5}, {"input": [47.5, -31.0], "expected": 47.5}, {"input": [47.5, -30.5], "expected": 47.5}, {"input": [47.5, -30.0], "expected": 47.5}, {"input": [47.5, -29.5], "expected": 47.5}, {"input": [47.5, -29.0], "expected": 47.5}, {"input": [47.5, -28.5], "expected": 47.5}, {"input": [47.5, -28.0], "expected": 47.5}, {"input": [47.5, -27.5], "expected": 47.5}, {"input": [47.5, -27.0], "expected": 47.5}, {"input": [47.5, -26.5], "expected": 47.5}, {"input": [47.5, -26.0], "expected": 47.5}, {"input": [47.5, -25.5], "expected": 47.5}, {"input": [47.5, -25.0], "expected": 47.5}, {"input": [47.5, -24.5], "expected": 47.5}, {"input": [47.5, -24.0], "expected": 47.5}, {"input": [47.5, -23.5], "expected": 47.5}, {"input": [47.5, -23.0], "expected": 47.5}, {"input": [47.5, -22.5], "expected": 47.5}, {"input": [47.5, -22.0], "expected": 47.5}, {"input": [47.5, -21.5], "expected": 47.5}, {"input": [47.5, -21.0], "expected": 47.5}, {"input": [47.5, -20.5], "expected": 47.5}, {"input": [47.5, -20.0], "expected": 47.5}, {"input": [47.5, -19.5], "expected": 47.5}, {"input": [47.5, -19.0], "expected": 47.5}, {"input": [47.5, -18.5], "expected": 47.5}, {"input": [47.5, -18.0], "expected": 47.5}, {"input": [47.5, -17.5], "expected": 47.5}, {"input": [47.5, -17.0], "expected": 47.5}, {"input": [47.5, -16.5], "expected": 47.5}, {"input": [47.5, -16.0], "expected": 47.5}, {"input": [47.5, -15.5], "expected": 47.5}, {"input": [47.5, -15.0], "expected": 47.5}, {"input": [47.5, -14.5], "expected": 47.5}, {"input": [47.5, -14.0], "expected": 47.5}, {"input": [47.5, -13.5], "expected": 47.5}, {"input": [47.5, -13.0], "expected": 47.5}, {"input": [47.5, -12.5], "expected": 47.5}, {"input": [47.5, -12.0], "expected": 47.5}, {"input": [47.5, -11.5], "expected": 47.5}, {"input": [47.5, -11.0], "expected": 47.5}, {"input": [47.5, -10.5], "expected": 47.5}, {"input": [47.5, -10.0], "expected": 47.5}, {"input": [47.5, -9.5], "expected": 47.5}, {"input": [47.5, -9.0], "expected": 47.5}, {"input": [47.5, -8.5], "expected": 47.5}, {"input": [47.5, -8.0], "expected": 47.5}, {"input": [47.5, -7.5], "expected": 47.5}, {"input": [47.5, -7.0], "expected": 47.5}, {"input": [47.5, -6.5], "expected": 47.5}, {"input": [47.5, -6.0], "expected": 47.5}, {"input": [47.5, -5.5], "expected": 47.5}, {"input": [47.5, -5.0], "expected": 47.5}, {"input": [47.5, -4.5], "expected": 47.5}, {"input": [47.5, -4.0], "expected": 47.5}, {"input": [47.5, -3.5], "expected": 47.5}, {"input": [47.5, -3.0], "expected": 47.5}, {"input": [47.5, -2.5], "expected": 47.5}, {"input": [47.5, -2.0], "expected": 47.5}, {"input": [47.5, -1.5], "expected": 47.5}, {"input": [47.5, -1.0], "expected": 47.5}, {"input": [47.5, -0.5], "expected": 47.5}, {"input": [47.5, 0.0], "expected": 47.5}, {"input": [47.5, 0.5], "expected": 47.5}, {"input": [47.5, 1.0], "expected": 47.5}, {"input": [47.5, 1.5], "expected": 47.5}, {"input": [47.5, 2.0], "expected": 47.5}, {"input": [47.5, 2.5], "expected": 47.5}, {"input": [47.5, 3.0], "expected": 47.5}, {"input": [47.5, 3.5], "expected": 47.5}, {"input": [47.5, 4.0], "expected": 47.5}, {"input": [47.5, 4.5], "expected": 47.5}, {"input": [47.5, 5.0], "expected": 47.5}, {"input": [47.5, 5.5], "expected": 47.5}, {"input": [47.5, 6.0], "expected": 47.5}, {"input": [47.5, 6.5], "expected": 47.5}, {"input": [47.5, 7.0], "expected": 47.5}, {"input": [47.5, 7.5], "expected": 47.5}, {"input": [47.5, 8.0], "expected": 47.5}, {"input": [47.5, 8.5], "expected": 47.5}, {"input": [47.5, 9.0], "expected": 47.5}, {"input": [47.5, 9.5], "expected": 47.5}, {"input": [47.5, 10.0], "expected": 47.5}, {"input": [47.5, 10.5], "expected": 47.5}, {"input": [47.5, 11.0], "expected": 47.5}, {"input": [47.5, 11.5], "expected": 47.5}, {"input": [47.5, 12.0], "expected": 47.5}, {"input": [47.5, 12.5], "expected": 47.5}, {"input": [47.5, 13.0], "expected": 47.5}, {"input": [47.5, 13.5], "expected": 47.5}, {"input": [47.5, 14.0], "expected": 47.5}, {"input": [47.5, 14.5], "expected": 47.50000000000001}, {"input": [47.5, 15.0], "expected": 47.50000000000001}, {"input": [47.5, 15.5], "expected": 47.500000000000014}, {"input": [47.5, 16.0], "expected": 47.50000000000002}, {"input": [47.5, 16.5], "expected": 47.500000000000036}, {"input": [47.5, 17.0], "expected": 47.50000000000006}, {"input": [47.5, 17.5], "expected": 47.50000000000009}, {"input": [47.5, 18.0], "expected": 47.500000000000156}, {"input": [47.5, 18.5], "expected": 47.500000000000256}, {"input": [47.5, 19.0], "expected": 47.50000000000042}, {"input": [47.5, 19.5], "expected": 47.50000000000069}, {"input": [47.5, 20.0], "expected": 47.50000000000114}, {"input": [47.5, 20.5], "expected": 47.50000000000188}, {"input": [47.5, 21.0], "expected": 47.5000000000031}, {"input": [47.5, 21.5], "expected": 47.50000000000511}, {"input": [47.5, 22.0], "expected": 47.50000000000842}, {"input": [47.5, 22.5], "expected": 47.50000000001389}, {"input": [47.5, 23.0], "expected": 47.5000000000229}, {"input": [47.5, 23.5], "expected": 47.50000000003775}, {"input": [47.5, 24.0], "expected": 47.50000000006224}, {"input": [47.5, 24.5], "expected": 47.50000000010262}, {"input": [47.5, 25.0], "expected": 47.50000000016919}, {"input": [47.5, 25.5], "expected": 47.500000000278945}, {"input": [47.5, 26.0], "expected": 47.500000000459906}, {"input": [47.5, 26.5], "expected": 47.500000000758256}, {"input": [47.5, 27.0], "expected": 47.50000000125015}, {"input": [47.5, 27.5], "expected": 47.50000000206116}, {"input": [47.5, 28.0], "expected": 47.50000000339827}, {"input": [47.5, 28.5], "expected": 47.50000000560279}, {"input": [47.5, 29.0], "expected": 47.500000009237446}, {"input": [47.5, 29.5], "expected": 47.50000001522998}, {"input": [47.5, 30.0], "expected": 47.50000002510999}, {"input": [47.5, 30.5], "expected": 47.500000041399375}, {"input": [47.5, 31.0], "expected": 47.50000006825603}, {"input": [47.5, 31.5], "expected": 47.50000011253517}, {"input": [47.5, 32.0], "expected": 47.50000018553912}, {"input": [47.5, 32.5], "expected": 47.500000305902276}, {"input": [47.5, 33.0], "expected": 47.50000050434753}, {"input": [47.5, 33.5], "expected": 47.500000831528375}, {"input": [47.5, 34.0], "expected": 47.500001370958145}, {"input": [47.5, 34.5], "expected": 47.50000226032685}, {"input": [47.5, 35.0], "expected": 47.50000372664623}, {"input": [47.5, 35.5], "expected": 47.50000614419348}, {"input": [47.5, 36.0], "expected": 47.50001013004229}, {"input": [47.5, 36.5], "expected": 47.50001670156132}, {"input": [47.5, 37.0], "expected": 47.50002753607023}, {"input": [47.5, 37.5], "expected": 47.50004539889922}, {"input": [47.5, 38.0], "expected": 47.50007484902863}, {"input": [47.5, 38.5], "expected": 47.50012340218972}, {"input": [47.5, 39.0], "expected": 47.50020344767213}, {"input": [47.5, 39.5], "expected": 47.5003354063729}, {"input": [47.5, 40.0], "expected": 47.50055293147536}, {"input": [47.5, 40.5], "expected": 47.50091146645377}, {"input": [47.5, 41.0], "expected": 47.50150231015976}, {"input": [47.5, 41.5], "expected": 47.50247568513773}, {"input": [47.5, 42.0], "expected": 47.50407844327057}, {"input": [47.5, 42.5], "expected": 47.50671534848912}, {"input": [47.5, 43.0], "expected": 47.5110477448486}, {"input": [47.5, 43.5], "expected": 47.51814992791781}, {"input": [47.5, 44.0], "expected": 47.52975041827262}, {"input": [47.5, 44.5], "expected": 47.548587351573744}, {"input": [47.5, 45.0], "expected": 47.57888973429255}, {"input": [47.5, 45.5], "expected": 47.62692801104297}, {"input": [47.5, 46.0], "expected": 47.70141327798275}, {"input": [47.5, 46.5], "expected": 47.81326168751822}, {"input": [47.5, 47.0], "expected": 47.97407698418011}, {"input": [47.5, 47.5], "expected": 48.19314718055995}, {"input": [47.5, 48.0], "expected": 48.47407698418011}, {"input": [47.5, 48.5], "expected": 48.81326168751822}, {"input": [47.5, 49.0], "expected": 49.20141327798275}, {"input": [47.5, 49.5], "expected": 49.62692801104297}, {"input": [47.5, 50.0], "expected": 50.07888973429255}, {"input": [47.5, 50.5], "expected": 50.548587351573744}, {"input": [47.5, 51.0], "expected": 51.02975041827262}, {"input": [47.5, 51.5], "expected": 51.51814992791781}, {"input": [47.5, 52.0], "expected": 52.0110477448486}, {"input": [47.5, 52.5], "expected": 52.50671534848912}, {"input": [47.5, 53.0], "expected": 53.00407844327057}, {"input": [47.5, 53.5], "expected": 53.50247568513773}, {"input": [47.5, 54.0], "expected": 54.00150231015976}, {"input": [47.5, 54.5], "expected": 54.50091146645377}, {"input": [47.5, 55.0], "expected": 55.00055293147536}, {"input": [47.5, 55.5], "expected": 55.5003354063729}, {"input": [47.5, 56.0], "expected": 56.00020344767213}, {"input": [47.5, 56.5], "expected": 56.50012340218972}, {"input": [47.5, 57.0], "expected": 57.00007484902863}, {"input": [47.5, 57.5], "expected": 57.50004539889922}, {"input": [47.5, 58.0], "expected": 58.00002753607023}, {"input": [47.5, 58.5], "expected": 58.50001670156132}, {"input": [47.5, 59.0], "expected": 59.00001013004229}, {"input": [47.5, 59.5], "expected": 59.50000614419348}, {"input": [47.5, 60.0], "expected": 60.00000372664623}, {"input": [47.5, 60.5], "expected": 60.50000226032685}, {"input": [47.5, 61.0], "expected": 61.000001370958145}, {"input": [47.5, 61.5], "expected": 61.500000831528375}, {"input": [47.5, 62.0], "expected": 62.00000050434753}, {"input": [47.5, 62.5], "expected": 62.500000305902276}, {"input": [47.5, 63.0], "expected": 63.00000018553912}, {"input": [47.5, 63.5], "expected": 63.50000011253517}, {"input": [47.5, 64.0], "expected": 64.00000006825603}, {"input": [47.5, 64.5], "expected": 64.50000004139937}, {"input": [47.5, 65.0], "expected": 65.00000002511}, {"input": [47.5, 65.5], "expected": 65.50000001522999}, {"input": [47.5, 66.0], "expected": 66.00000000923745}, {"input": [47.5, 66.5], "expected": 66.5000000056028}, {"input": [47.5, 67.0], "expected": 67.00000000339827}, {"input": [47.5, 67.5], "expected": 67.50000000206116}, {"input": [47.5, 68.0], "expected": 68.00000000125016}, {"input": [47.5, 68.5], "expected": 68.50000000075826}, {"input": [47.5, 69.0], "expected": 69.0000000004599}, {"input": [47.5, 69.5], "expected": 69.50000000027894}, {"input": [47.5, 70.0], "expected": 70.0000000001692}, {"input": [47.5, 70.5], "expected": 70.50000000010262}, {"input": [47.5, 71.0], "expected": 71.00000000006224}, {"input": [47.5, 71.5], "expected": 71.50000000003776}, {"input": [47.5, 72.0], "expected": 72.0000000000229}, {"input": [47.5, 72.5], "expected": 72.50000000001388}, {"input": [47.5, 73.0], "expected": 73.00000000000843}, {"input": [47.5, 73.5], "expected": 73.50000000000512}, {"input": [47.5, 74.0], "expected": 74.0000000000031}, {"input": [47.5, 74.5], "expected": 74.50000000000188}, {"input": [47.5, 75.0], "expected": 75.00000000000114}, {"input": [47.5, 75.5], "expected": 75.5000000000007}, {"input": [47.5, 76.0], "expected": 76.00000000000043}, {"input": [47.5, 76.5], "expected": 76.50000000000026}, {"input": [47.5, 77.0], "expected": 77.00000000000016}, {"input": [47.5, 77.5], "expected": 77.5000000000001}, {"input": [47.5, 78.0], "expected": 78.00000000000006}, {"input": [47.5, 78.5], "expected": 78.50000000000003}, {"input": [47.5, 79.0], "expected": 79.00000000000001}, {"input": [47.5, 79.5], "expected": 79.50000000000001}, {"input": [47.5, 80.0], "expected": 80.00000000000001}, {"input": [47.5, 80.5], "expected": 80.5}, {"input": [47.5, 81.0], "expected": 81.0}, {"input": [47.5, 81.5], "expected": 81.5}, {"input": [47.5, 82.0], "expected": 82.0}, {"input": [47.5, 82.5], "expected": 82.5}, {"input": [47.5, 83.0], "expected": 83.0}, {"input": [47.5, 83.5], "expected": 83.5}, {"input": [47.5, 84.0], "expected": 84.0}, {"input": [47.5, 84.5], "expected": 84.5}, {"input": [47.5, 85.0], "expected": 85.0}, {"input": [47.5, 85.5], "expected": 85.5}, {"input": [47.5, 86.0], "expected": 86.0}, {"input": [47.5, 86.5], "expected": 86.5}, {"input": [47.5, 87.0], "expected": 87.0}, {"input": [47.5, 87.5], "expected": 87.5}, {"input": [47.5, 88.0], "expected": 88.0}, {"input": [47.5, 88.5], "expected": 88.5}, {"input": [47.5, 89.0], "expected": 89.0}, {"input": [47.5, 89.5], "expected": 89.5}, {"input": [47.5, 90.0], "expected": 90.0}, {"input": [47.5, 90.5], "expected": 90.5}, {"input": [47.5, 91.0], "expected": 91.0}, {"input": [47.5, 91.5], "expected": 91.5}, {"input": [47.5, 92.0], "expected": 92.0}, {"input": [47.5, 92.5], "expected": 92.5}, {"input": [47.5, 93.0], "expected": 93.0}, {"input": [47.5, 93.5], "expected": 93.5}, {"input": [47.5, 94.0], "expected": 94.0}, {"input": [47.5, 94.5], "expected": 94.5}, {"input": [47.5, 95.0], "expected": 95.0}, {"input": [47.5, 95.5], "expected": 95.5}, {"input": [47.5, 96.0], "expected": 96.0}, {"input": [47.5, 96.5], "expected": 96.5}, {"input": [47.5, 97.0], "expected": 97.0}, {"input": [47.5, 97.5], "expected": 97.5}, {"input": [47.5, 98.0], "expected": 98.0}, {"input": [47.5, 98.5], "expected": 98.5}, {"input": [47.5, 99.0], "expected": 99.0}, {"input": [47.5, 99.5], "expected": 99.5}, {"input": [48.0, -100.0], "expected": 48.0}, {"input": [48.0, -99.5], "expected": 48.0}, {"input": [48.0, -99.0], "expected": 48.0}, {"input": [48.0, -98.5], "expected": 48.0}, {"input": [48.0, -98.0], "expected": 48.0}, {"input": [48.0, -97.5], "expected": 48.0}, {"input": [48.0, -97.0], "expected": 48.0}, {"input": [48.0, -96.5], "expected": 48.0}, {"input": [48.0, -96.0], "expected": 48.0}, {"input": [48.0, -95.5], "expected": 48.0}, {"input": [48.0, -95.0], "expected": 48.0}, {"input": [48.0, -94.5], "expected": 48.0}, {"input": [48.0, -94.0], "expected": 48.0}, {"input": [48.0, -93.5], "expected": 48.0}, {"input": [48.0, -93.0], "expected": 48.0}, {"input": [48.0, -92.5], "expected": 48.0}, {"input": [48.0, -92.0], "expected": 48.0}, {"input": [48.0, -91.5], "expected": 48.0}, {"input": [48.0, -91.0], "expected": 48.0}, {"input": [48.0, -90.5], "expected": 48.0}, {"input": [48.0, -90.0], "expected": 48.0}, {"input": [48.0, -89.5], "expected": 48.0}, {"input": [48.0, -89.0], "expected": 48.0}, {"input": [48.0, -88.5], "expected": 48.0}, {"input": [48.0, -88.0], "expected": 48.0}, {"input": [48.0, -87.5], "expected": 48.0}, {"input": [48.0, -87.0], "expected": 48.0}, {"input": [48.0, -86.5], "expected": 48.0}, {"input": [48.0, -86.0], "expected": 48.0}, {"input": [48.0, -85.5], "expected": 48.0}, {"input": [48.0, -85.0], "expected": 48.0}, {"input": [48.0, -84.5], "expected": 48.0}, {"input": [48.0, -84.0], "expected": 48.0}, {"input": [48.0, -83.5], "expected": 48.0}, {"input": [48.0, -83.0], "expected": 48.0}, {"input": [48.0, -82.5], "expected": 48.0}, {"input": [48.0, -82.0], "expected": 48.0}, {"input": [48.0, -81.5], "expected": 48.0}, {"input": [48.0, -81.0], "expected": 48.0}, {"input": [48.0, -80.5], "expected": 48.0}, {"input": [48.0, -80.0], "expected": 48.0}, {"input": [48.0, -79.5], "expected": 48.0}, {"input": [48.0, -79.0], "expected": 48.0}, {"input": [48.0, -78.5], "expected": 48.0}, {"input": [48.0, -78.0], "expected": 48.0}, {"input": [48.0, -77.5], "expected": 48.0}, {"input": [48.0, -77.0], "expected": 48.0}, {"input": [48.0, -76.5], "expected": 48.0}, {"input": [48.0, -76.0], "expected": 48.0}, {"input": [48.0, -75.5], "expected": 48.0}, {"input": [48.0, -75.0], "expected": 48.0}, {"input": [48.0, -74.5], "expected": 48.0}, {"input": [48.0, -74.0], "expected": 48.0}, {"input": [48.0, -73.5], "expected": 48.0}, {"input": [48.0, -73.0], "expected": 48.0}, {"input": [48.0, -72.5], "expected": 48.0}, {"input": [48.0, -72.0], "expected": 48.0}, {"input": [48.0, -71.5], "expected": 48.0}, {"input": [48.0, -71.0], "expected": 48.0}, {"input": [48.0, -70.5], "expected": 48.0}, {"input": [48.0, -70.0], "expected": 48.0}, {"input": [48.0, -69.5], "expected": 48.0}, {"input": [48.0, -69.0], "expected": 48.0}, {"input": [48.0, -68.5], "expected": 48.0}, {"input": [48.0, -68.0], "expected": 48.0}, {"input": [48.0, -67.5], "expected": 48.0}, {"input": [48.0, -67.0], "expected": 48.0}, {"input": [48.0, -66.5], "expected": 48.0}, {"input": [48.0, -66.0], "expected": 48.0}, {"input": [48.0, -65.5], "expected": 48.0}, {"input": [48.0, -65.0], "expected": 48.0}, {"input": [48.0, -64.5], "expected": 48.0}, {"input": [48.0, -64.0], "expected": 48.0}, {"input": [48.0, -63.5], "expected": 48.0}, {"input": [48.0, -63.0], "expected": 48.0}, {"input": [48.0, -62.5], "expected": 48.0}, {"input": [48.0, -62.0], "expected": 48.0}, {"input": [48.0, -61.5], "expected": 48.0}, {"input": [48.0, -61.0], "expected": 48.0}, {"input": [48.0, -60.5], "expected": 48.0}, {"input": [48.0, -60.0], "expected": 48.0}, {"input": [48.0, -59.5], "expected": 48.0}, {"input": [48.0, -59.0], "expected": 48.0}, {"input": [48.0, -58.5], "expected": 48.0}, {"input": [48.0, -58.0], "expected": 48.0}, {"input": [48.0, -57.5], "expected": 48.0}, {"input": [48.0, -57.0], "expected": 48.0}, {"input": [48.0, -56.5], "expected": 48.0}, {"input": [48.0, -56.0], "expected": 48.0}, {"input": [48.0, -55.5], "expected": 48.0}, {"input": [48.0, -55.0], "expected": 48.0}, {"input": [48.0, -54.5], "expected": 48.0}, {"input": [48.0, -54.0], "expected": 48.0}, {"input": [48.0, -53.5], "expected": 48.0}, {"input": [48.0, -53.0], "expected": 48.0}, {"input": [48.0, -52.5], "expected": 48.0}, {"input": [48.0, -52.0], "expected": 48.0}, {"input": [48.0, -51.5], "expected": 48.0}, {"input": [48.0, -51.0], "expected": 48.0}, {"input": [48.0, -50.5], "expected": 48.0}, {"input": [48.0, -50.0], "expected": 48.0}, {"input": [48.0, -49.5], "expected": 48.0}, {"input": [48.0, -49.0], "expected": 48.0}, {"input": [48.0, -48.5], "expected": 48.0}, {"input": [48.0, -48.0], "expected": 48.0}, {"input": [48.0, -47.5], "expected": 48.0}, {"input": [48.0, -47.0], "expected": 48.0}, {"input": [48.0, -46.5], "expected": 48.0}, {"input": [48.0, -46.0], "expected": 48.0}, {"input": [48.0, -45.5], "expected": 48.0}, {"input": [48.0, -45.0], "expected": 48.0}, {"input": [48.0, -44.5], "expected": 48.0}, {"input": [48.0, -44.0], "expected": 48.0}, {"input": [48.0, -43.5], "expected": 48.0}, {"input": [48.0, -43.0], "expected": 48.0}, {"input": [48.0, -42.5], "expected": 48.0}, {"input": [48.0, -42.0], "expected": 48.0}, {"input": [48.0, -41.5], "expected": 48.0}, {"input": [48.0, -41.0], "expected": 48.0}, {"input": [48.0, -40.5], "expected": 48.0}, {"input": [48.0, -40.0], "expected": 48.0}, {"input": [48.0, -39.5], "expected": 48.0}, {"input": [48.0, -39.0], "expected": 48.0}, {"input": [48.0, -38.5], "expected": 48.0}, {"input": [48.0, -38.0], "expected": 48.0}, {"input": [48.0, -37.5], "expected": 48.0}, {"input": [48.0, -37.0], "expected": 48.0}, {"input": [48.0, -36.5], "expected": 48.0}, {"input": [48.0, -36.0], "expected": 48.0}, {"input": [48.0, -35.5], "expected": 48.0}, {"input": [48.0, -35.0], "expected": 48.0}, {"input": [48.0, -34.5], "expected": 48.0}, {"input": [48.0, -34.0], "expected": 48.0}, {"input": [48.0, -33.5], "expected": 48.0}, {"input": [48.0, -33.0], "expected": 48.0}, {"input": [48.0, -32.5], "expected": 48.0}, {"input": [48.0, -32.0], "expected": 48.0}, {"input": [48.0, -31.5], "expected": 48.0}, {"input": [48.0, -31.0], "expected": 48.0}, {"input": [48.0, -30.5], "expected": 48.0}, {"input": [48.0, -30.0], "expected": 48.0}, {"input": [48.0, -29.5], "expected": 48.0}, {"input": [48.0, -29.0], "expected": 48.0}, {"input": [48.0, -28.5], "expected": 48.0}, {"input": [48.0, -28.0], "expected": 48.0}, {"input": [48.0, -27.5], "expected": 48.0}, {"input": [48.0, -27.0], "expected": 48.0}, {"input": [48.0, -26.5], "expected": 48.0}, {"input": [48.0, -26.0], "expected": 48.0}, {"input": [48.0, -25.5], "expected": 48.0}, {"input": [48.0, -25.0], "expected": 48.0}, {"input": [48.0, -24.5], "expected": 48.0}, {"input": [48.0, -24.0], "expected": 48.0}, {"input": [48.0, -23.5], "expected": 48.0}, {"input": [48.0, -23.0], "expected": 48.0}, {"input": [48.0, -22.5], "expected": 48.0}, {"input": [48.0, -22.0], "expected": 48.0}, {"input": [48.0, -21.5], "expected": 48.0}, {"input": [48.0, -21.0], "expected": 48.0}, {"input": [48.0, -20.5], "expected": 48.0}, {"input": [48.0, -20.0], "expected": 48.0}, {"input": [48.0, -19.5], "expected": 48.0}, {"input": [48.0, -19.0], "expected": 48.0}, {"input": [48.0, -18.5], "expected": 48.0}, {"input": [48.0, -18.0], "expected": 48.0}, {"input": [48.0, -17.5], "expected": 48.0}, {"input": [48.0, -17.0], "expected": 48.0}, {"input": [48.0, -16.5], "expected": 48.0}, {"input": [48.0, -16.0], "expected": 48.0}, {"input": [48.0, -15.5], "expected": 48.0}, {"input": [48.0, -15.0], "expected": 48.0}, {"input": [48.0, -14.5], "expected": 48.0}, {"input": [48.0, -14.0], "expected": 48.0}, {"input": [48.0, -13.5], "expected": 48.0}, {"input": [48.0, -13.0], "expected": 48.0}, {"input": [48.0, -12.5], "expected": 48.0}, {"input": [48.0, -12.0], "expected": 48.0}, {"input": [48.0, -11.5], "expected": 48.0}, {"input": [48.0, -11.0], "expected": 48.0}, {"input": [48.0, -10.5], "expected": 48.0}, {"input": [48.0, -10.0], "expected": 48.0}, {"input": [48.0, -9.5], "expected": 48.0}, {"input": [48.0, -9.0], "expected": 48.0}, {"input": [48.0, -8.5], "expected": 48.0}, {"input": [48.0, -8.0], "expected": 48.0}, {"input": [48.0, -7.5], "expected": 48.0}, {"input": [48.0, -7.0], "expected": 48.0}, {"input": [48.0, -6.5], "expected": 48.0}, {"input": [48.0, -6.0], "expected": 48.0}, {"input": [48.0, -5.5], "expected": 48.0}, {"input": [48.0, -5.0], "expected": 48.0}, {"input": [48.0, -4.5], "expected": 48.0}, {"input": [48.0, -4.0], "expected": 48.0}, {"input": [48.0, -3.5], "expected": 48.0}, {"input": [48.0, -3.0], "expected": 48.0}, {"input": [48.0, -2.5], "expected": 48.0}, {"input": [48.0, -2.0], "expected": 48.0}, {"input": [48.0, -1.5], "expected": 48.0}, {"input": [48.0, -1.0], "expected": 48.0}, {"input": [48.0, -0.5], "expected": 48.0}, {"input": [48.0, 0.0], "expected": 48.0}, {"input": [48.0, 0.5], "expected": 48.0}, {"input": [48.0, 1.0], "expected": 48.0}, {"input": [48.0, 1.5], "expected": 48.0}, {"input": [48.0, 2.0], "expected": 48.0}, {"input": [48.0, 2.5], "expected": 48.0}, {"input": [48.0, 3.0], "expected": 48.0}, {"input": [48.0, 3.5], "expected": 48.0}, {"input": [48.0, 4.0], "expected": 48.0}, {"input": [48.0, 4.5], "expected": 48.0}, {"input": [48.0, 5.0], "expected": 48.0}, {"input": [48.0, 5.5], "expected": 48.0}, {"input": [48.0, 6.0], "expected": 48.0}, {"input": [48.0, 6.5], "expected": 48.0}, {"input": [48.0, 7.0], "expected": 48.0}, {"input": [48.0, 7.5], "expected": 48.0}, {"input": [48.0, 8.0], "expected": 48.0}, {"input": [48.0, 8.5], "expected": 48.0}, {"input": [48.0, 9.0], "expected": 48.0}, {"input": [48.0, 9.5], "expected": 48.0}, {"input": [48.0, 10.0], "expected": 48.0}, {"input": [48.0, 10.5], "expected": 48.0}, {"input": [48.0, 11.0], "expected": 48.0}, {"input": [48.0, 11.5], "expected": 48.0}, {"input": [48.0, 12.0], "expected": 48.0}, {"input": [48.0, 12.5], "expected": 48.0}, {"input": [48.0, 13.0], "expected": 48.0}, {"input": [48.0, 13.5], "expected": 48.0}, {"input": [48.0, 14.0], "expected": 48.0}, {"input": [48.0, 14.5], "expected": 48.0}, {"input": [48.0, 15.0], "expected": 48.00000000000001}, {"input": [48.0, 15.5], "expected": 48.00000000000001}, {"input": [48.0, 16.0], "expected": 48.000000000000014}, {"input": [48.0, 16.5], "expected": 48.00000000000002}, {"input": [48.0, 17.0], "expected": 48.000000000000036}, {"input": [48.0, 17.5], "expected": 48.00000000000006}, {"input": [48.0, 18.0], "expected": 48.00000000000009}, {"input": [48.0, 18.5], "expected": 48.000000000000156}, {"input": [48.0, 19.0], "expected": 48.000000000000256}, {"input": [48.0, 19.5], "expected": 48.00000000000042}, {"input": [48.0, 20.0], "expected": 48.00000000000069}, {"input": [48.0, 20.5], "expected": 48.00000000000114}, {"input": [48.0, 21.0], "expected": 48.00000000000188}, {"input": [48.0, 21.5], "expected": 48.0000000000031}, {"input": [48.0, 22.0], "expected": 48.00000000000511}, {"input": [48.0, 22.5], "expected": 48.00000000000842}, {"input": [48.0, 23.0], "expected": 48.00000000001389}, {"input": [48.0, 23.5], "expected": 48.0000000000229}, {"input": [48.0, 24.0], "expected": 48.00000000003775}, {"input": [48.0, 24.5], "expected": 48.00000000006224}, {"input": [48.0, 25.0], "expected": 48.00000000010262}, {"input": [48.0, 25.5], "expected": 48.00000000016919}, {"input": [48.0, 26.0], "expected": 48.000000000278945}, {"input": [48.0, 26.5], "expected": 48.000000000459906}, {"input": [48.0, 27.0], "expected": 48.000000000758256}, {"input": [48.0, 27.5], "expected": 48.00000000125015}, {"input": [48.0, 28.0], "expected": 48.00000000206116}, {"input": [48.0, 28.5], "expected": 48.00000000339827}, {"input": [48.0, 29.0], "expected": 48.00000000560279}, {"input": [48.0, 29.5], "expected": 48.000000009237446}, {"input": [48.0, 30.0], "expected": 48.00000001522998}, {"input": [48.0, 30.5], "expected": 48.00000002510999}, {"input": [48.0, 31.0], "expected": 48.000000041399375}, {"input": [48.0, 31.5], "expected": 48.00000006825603}, {"input": [48.0, 32.0], "expected": 48.00000011253517}, {"input": [48.0, 32.5], "expected": 48.00000018553912}, {"input": [48.0, 33.0], "expected": 48.000000305902276}, {"input": [48.0, 33.5], "expected": 48.00000050434753}, {"input": [48.0, 34.0], "expected": 48.000000831528375}, {"input": [48.0, 34.5], "expected": 48.000001370958145}, {"input": [48.0, 35.0], "expected": 48.00000226032685}, {"input": [48.0, 35.5], "expected": 48.00000372664623}, {"input": [48.0, 36.0], "expected": 48.00000614419348}, {"input": [48.0, 36.5], "expected": 48.00001013004229}, {"input": [48.0, 37.0], "expected": 48.00001670156132}, {"input": [48.0, 37.5], "expected": 48.00002753607023}, {"input": [48.0, 38.0], "expected": 48.00004539889922}, {"input": [48.0, 38.5], "expected": 48.00007484902863}, {"input": [48.0, 39.0], "expected": 48.00012340218972}, {"input": [48.0, 39.5], "expected": 48.00020344767213}, {"input": [48.0, 40.0], "expected": 48.0003354063729}, {"input": [48.0, 40.5], "expected": 48.00055293147536}, {"input": [48.0, 41.0], "expected": 48.00091146645377}, {"input": [48.0, 41.5], "expected": 48.00150231015976}, {"input": [48.0, 42.0], "expected": 48.00247568513773}, {"input": [48.0, 42.5], "expected": 48.00407844327057}, {"input": [48.0, 43.0], "expected": 48.00671534848912}, {"input": [48.0, 43.5], "expected": 48.0110477448486}, {"input": [48.0, 44.0], "expected": 48.01814992791781}, {"input": [48.0, 44.5], "expected": 48.02975041827262}, {"input": [48.0, 45.0], "expected": 48.048587351573744}, {"input": [48.0, 45.5], "expected": 48.07888973429255}, {"input": [48.0, 46.0], "expected": 48.12692801104297}, {"input": [48.0, 46.5], "expected": 48.20141327798275}, {"input": [48.0, 47.0], "expected": 48.31326168751822}, {"input": [48.0, 47.5], "expected": 48.47407698418011}, {"input": [48.0, 48.0], "expected": 48.69314718055995}, {"input": [48.0, 48.5], "expected": 48.97407698418011}, {"input": [48.0, 49.0], "expected": 49.31326168751822}, {"input": [48.0, 49.5], "expected": 49.70141327798275}, {"input": [48.0, 50.0], "expected": 50.12692801104297}, {"input": [48.0, 50.5], "expected": 50.57888973429255}, {"input": [48.0, 51.0], "expected": 51.048587351573744}, {"input": [48.0, 51.5], "expected": 51.52975041827262}, {"input": [48.0, 52.0], "expected": 52.01814992791781}, {"input": [48.0, 52.5], "expected": 52.5110477448486}, {"input": [48.0, 53.0], "expected": 53.00671534848912}, {"input": [48.0, 53.5], "expected": 53.50407844327057}, {"input": [48.0, 54.0], "expected": 54.00247568513773}, {"input": [48.0, 54.5], "expected": 54.50150231015976}, {"input": [48.0, 55.0], "expected": 55.00091146645377}, {"input": [48.0, 55.5], "expected": 55.50055293147536}, {"input": [48.0, 56.0], "expected": 56.0003354063729}, {"input": [48.0, 56.5], "expected": 56.50020344767213}, {"input": [48.0, 57.0], "expected": 57.00012340218972}, {"input": [48.0, 57.5], "expected": 57.50007484902863}, {"input": [48.0, 58.0], "expected": 58.00004539889922}, {"input": [48.0, 58.5], "expected": 58.50002753607023}, {"input": [48.0, 59.0], "expected": 59.00001670156132}, {"input": [48.0, 59.5], "expected": 59.50001013004229}, {"input": [48.0, 60.0], "expected": 60.00000614419348}, {"input": [48.0, 60.5], "expected": 60.50000372664623}, {"input": [48.0, 61.0], "expected": 61.00000226032685}, {"input": [48.0, 61.5], "expected": 61.500001370958145}, {"input": [48.0, 62.0], "expected": 62.000000831528375}, {"input": [48.0, 62.5], "expected": 62.50000050434753}, {"input": [48.0, 63.0], "expected": 63.000000305902276}, {"input": [48.0, 63.5], "expected": 63.50000018553912}, {"input": [48.0, 64.0], "expected": 64.00000011253516}, {"input": [48.0, 64.5], "expected": 64.50000006825603}, {"input": [48.0, 65.0], "expected": 65.00000004139937}, {"input": [48.0, 65.5], "expected": 65.50000002511}, {"input": [48.0, 66.0], "expected": 66.00000001522999}, {"input": [48.0, 66.5], "expected": 66.50000000923745}, {"input": [48.0, 67.0], "expected": 67.0000000056028}, {"input": [48.0, 67.5], "expected": 67.50000000339827}, {"input": [48.0, 68.0], "expected": 68.00000000206116}, {"input": [48.0, 68.5], "expected": 68.50000000125016}, {"input": [48.0, 69.0], "expected": 69.00000000075826}, {"input": [48.0, 69.5], "expected": 69.5000000004599}, {"input": [48.0, 70.0], "expected": 70.00000000027894}, {"input": [48.0, 70.5], "expected": 70.5000000001692}, {"input": [48.0, 71.0], "expected": 71.00000000010262}, {"input": [48.0, 71.5], "expected": 71.50000000006224}, {"input": [48.0, 72.0], "expected": 72.00000000003776}, {"input": [48.0, 72.5], "expected": 72.5000000000229}, {"input": [48.0, 73.0], "expected": 73.00000000001388}, {"input": [48.0, 73.5], "expected": 73.50000000000843}, {"input": [48.0, 74.0], "expected": 74.00000000000512}, {"input": [48.0, 74.5], "expected": 74.5000000000031}, {"input": [48.0, 75.0], "expected": 75.00000000000188}, {"input": [48.0, 75.5], "expected": 75.50000000000114}, {"input": [48.0, 76.0], "expected": 76.0000000000007}, {"input": [48.0, 76.5], "expected": 76.50000000000043}, {"input": [48.0, 77.0], "expected": 77.00000000000026}, {"input": [48.0, 77.5], "expected": 77.50000000000016}, {"input": [48.0, 78.0], "expected": 78.0000000000001}, {"input": [48.0, 78.5], "expected": 78.50000000000006}, {"input": [48.0, 79.0], "expected": 79.00000000000003}, {"input": [48.0, 79.5], "expected": 79.50000000000001}, {"input": [48.0, 80.0], "expected": 80.00000000000001}, {"input": [48.0, 80.5], "expected": 80.50000000000001}, {"input": [48.0, 81.0], "expected": 81.0}, {"input": [48.0, 81.5], "expected": 81.5}, {"input": [48.0, 82.0], "expected": 82.0}, {"input": [48.0, 82.5], "expected": 82.5}, {"input": [48.0, 83.0], "expected": 83.0}, {"input": [48.0, 83.5], "expected": 83.5}, {"input": [48.0, 84.0], "expected": 84.0}, {"input": [48.0, 84.5], "expected": 84.5}, {"input": [48.0, 85.0], "expected": 85.0}, {"input": [48.0, 85.5], "expected": 85.5}, {"input": [48.0, 86.0], "expected": 86.0}, {"input": [48.0, 86.5], "expected": 86.5}, {"input": [48.0, 87.0], "expected": 87.0}, {"input": [48.0, 87.5], "expected": 87.5}, {"input": [48.0, 88.0], "expected": 88.0}, {"input": [48.0, 88.5], "expected": 88.5}, {"input": [48.0, 89.0], "expected": 89.0}, {"input": [48.0, 89.5], "expected": 89.5}, {"input": [48.0, 90.0], "expected": 90.0}, {"input": [48.0, 90.5], "expected": 90.5}, {"input": [48.0, 91.0], "expected": 91.0}, {"input": [48.0, 91.5], "expected": 91.5}, {"input": [48.0, 92.0], "expected": 92.0}, {"input": [48.0, 92.5], "expected": 92.5}, {"input": [48.0, 93.0], "expected": 93.0}, {"input": [48.0, 93.5], "expected": 93.5}, {"input": [48.0, 94.0], "expected": 94.0}, {"input": [48.0, 94.5], "expected": 94.5}, {"input": [48.0, 95.0], "expected": 95.0}, {"input": [48.0, 95.5], "expected": 95.5}, {"input": [48.0, 96.0], "expected": 96.0}, {"input": [48.0, 96.5], "expected": 96.5}, {"input": [48.0, 97.0], "expected": 97.0}, {"input": [48.0, 97.5], "expected": 97.5}, {"input": [48.0, 98.0], "expected": 98.0}, {"input": [48.0, 98.5], "expected": 98.5}, {"input": [48.0, 99.0], "expected": 99.0}, {"input": [48.0, 99.5], "expected": 99.5}, {"input": [48.5, -100.0], "expected": 48.5}, {"input": [48.5, -99.5], "expected": 48.5}, {"input": [48.5, -99.0], "expected": 48.5}, {"input": [48.5, -98.5], "expected": 48.5}, {"input": [48.5, -98.0], "expected": 48.5}, {"input": [48.5, -97.5], "expected": 48.5}, {"input": [48.5, -97.0], "expected": 48.5}, {"input": [48.5, -96.5], "expected": 48.5}, {"input": [48.5, -96.0], "expected": 48.5}, {"input": [48.5, -95.5], "expected": 48.5}, {"input": [48.5, -95.0], "expected": 48.5}, {"input": [48.5, -94.5], "expected": 48.5}, {"input": [48.5, -94.0], "expected": 48.5}, {"input": [48.5, -93.5], "expected": 48.5}, {"input": [48.5, -93.0], "expected": 48.5}, {"input": [48.5, -92.5], "expected": 48.5}, {"input": [48.5, -92.0], "expected": 48.5}, {"input": [48.5, -91.5], "expected": 48.5}, {"input": [48.5, -91.0], "expected": 48.5}, {"input": [48.5, -90.5], "expected": 48.5}, {"input": [48.5, -90.0], "expected": 48.5}, {"input": [48.5, -89.5], "expected": 48.5}, {"input": [48.5, -89.0], "expected": 48.5}, {"input": [48.5, -88.5], "expected": 48.5}, {"input": [48.5, -88.0], "expected": 48.5}, {"input": [48.5, -87.5], "expected": 48.5}, {"input": [48.5, -87.0], "expected": 48.5}, {"input": [48.5, -86.5], "expected": 48.5}, {"input": [48.5, -86.0], "expected": 48.5}, {"input": [48.5, -85.5], "expected": 48.5}, {"input": [48.5, -85.0], "expected": 48.5}, {"input": [48.5, -84.5], "expected": 48.5}, {"input": [48.5, -84.0], "expected": 48.5}, {"input": [48.5, -83.5], "expected": 48.5}, {"input": [48.5, -83.0], "expected": 48.5}, {"input": [48.5, -82.5], "expected": 48.5}, {"input": [48.5, -82.0], "expected": 48.5}, {"input": [48.5, -81.5], "expected": 48.5}, {"input": [48.5, -81.0], "expected": 48.5}, {"input": [48.5, -80.5], "expected": 48.5}, {"input": [48.5, -80.0], "expected": 48.5}, {"input": [48.5, -79.5], "expected": 48.5}, {"input": [48.5, -79.0], "expected": 48.5}, {"input": [48.5, -78.5], "expected": 48.5}, {"input": [48.5, -78.0], "expected": 48.5}, {"input": [48.5, -77.5], "expected": 48.5}, {"input": [48.5, -77.0], "expected": 48.5}, {"input": [48.5, -76.5], "expected": 48.5}, {"input": [48.5, -76.0], "expected": 48.5}, {"input": [48.5, -75.5], "expected": 48.5}, {"input": [48.5, -75.0], "expected": 48.5}, {"input": [48.5, -74.5], "expected": 48.5}, {"input": [48.5, -74.0], "expected": 48.5}, {"input": [48.5, -73.5], "expected": 48.5}, {"input": [48.5, -73.0], "expected": 48.5}, {"input": [48.5, -72.5], "expected": 48.5}, {"input": [48.5, -72.0], "expected": 48.5}, {"input": [48.5, -71.5], "expected": 48.5}, {"input": [48.5, -71.0], "expected": 48.5}, {"input": [48.5, -70.5], "expected": 48.5}, {"input": [48.5, -70.0], "expected": 48.5}, {"input": [48.5, -69.5], "expected": 48.5}, {"input": [48.5, -69.0], "expected": 48.5}, {"input": [48.5, -68.5], "expected": 48.5}, {"input": [48.5, -68.0], "expected": 48.5}, {"input": [48.5, -67.5], "expected": 48.5}, {"input": [48.5, -67.0], "expected": 48.5}, {"input": [48.5, -66.5], "expected": 48.5}, {"input": [48.5, -66.0], "expected": 48.5}, {"input": [48.5, -65.5], "expected": 48.5}, {"input": [48.5, -65.0], "expected": 48.5}, {"input": [48.5, -64.5], "expected": 48.5}, {"input": [48.5, -64.0], "expected": 48.5}, {"input": [48.5, -63.5], "expected": 48.5}, {"input": [48.5, -63.0], "expected": 48.5}, {"input": [48.5, -62.5], "expected": 48.5}, {"input": [48.5, -62.0], "expected": 48.5}, {"input": [48.5, -61.5], "expected": 48.5}, {"input": [48.5, -61.0], "expected": 48.5}, {"input": [48.5, -60.5], "expected": 48.5}, {"input": [48.5, -60.0], "expected": 48.5}, {"input": [48.5, -59.5], "expected": 48.5}, {"input": [48.5, -59.0], "expected": 48.5}, {"input": [48.5, -58.5], "expected": 48.5}, {"input": [48.5, -58.0], "expected": 48.5}, {"input": [48.5, -57.5], "expected": 48.5}, {"input": [48.5, -57.0], "expected": 48.5}, {"input": [48.5, -56.5], "expected": 48.5}, {"input": [48.5, -56.0], "expected": 48.5}, {"input": [48.5, -55.5], "expected": 48.5}, {"input": [48.5, -55.0], "expected": 48.5}, {"input": [48.5, -54.5], "expected": 48.5}, {"input": [48.5, -54.0], "expected": 48.5}, {"input": [48.5, -53.5], "expected": 48.5}, {"input": [48.5, -53.0], "expected": 48.5}, {"input": [48.5, -52.5], "expected": 48.5}, {"input": [48.5, -52.0], "expected": 48.5}, {"input": [48.5, -51.5], "expected": 48.5}, {"input": [48.5, -51.0], "expected": 48.5}, {"input": [48.5, -50.5], "expected": 48.5}, {"input": [48.5, -50.0], "expected": 48.5}, {"input": [48.5, -49.5], "expected": 48.5}, {"input": [48.5, -49.0], "expected": 48.5}, {"input": [48.5, -48.5], "expected": 48.5}, {"input": [48.5, -48.0], "expected": 48.5}, {"input": [48.5, -47.5], "expected": 48.5}, {"input": [48.5, -47.0], "expected": 48.5}, {"input": [48.5, -46.5], "expected": 48.5}, {"input": [48.5, -46.0], "expected": 48.5}, {"input": [48.5, -45.5], "expected": 48.5}, {"input": [48.5, -45.0], "expected": 48.5}, {"input": [48.5, -44.5], "expected": 48.5}, {"input": [48.5, -44.0], "expected": 48.5}, {"input": [48.5, -43.5], "expected": 48.5}, {"input": [48.5, -43.0], "expected": 48.5}, {"input": [48.5, -42.5], "expected": 48.5}, {"input": [48.5, -42.0], "expected": 48.5}, {"input": [48.5, -41.5], "expected": 48.5}, {"input": [48.5, -41.0], "expected": 48.5}, {"input": [48.5, -40.5], "expected": 48.5}, {"input": [48.5, -40.0], "expected": 48.5}, {"input": [48.5, -39.5], "expected": 48.5}, {"input": [48.5, -39.0], "expected": 48.5}, {"input": [48.5, -38.5], "expected": 48.5}, {"input": [48.5, -38.0], "expected": 48.5}, {"input": [48.5, -37.5], "expected": 48.5}, {"input": [48.5, -37.0], "expected": 48.5}, {"input": [48.5, -36.5], "expected": 48.5}, {"input": [48.5, -36.0], "expected": 48.5}, {"input": [48.5, -35.5], "expected": 48.5}, {"input": [48.5, -35.0], "expected": 48.5}, {"input": [48.5, -34.5], "expected": 48.5}, {"input": [48.5, -34.0], "expected": 48.5}, {"input": [48.5, -33.5], "expected": 48.5}, {"input": [48.5, -33.0], "expected": 48.5}, {"input": [48.5, -32.5], "expected": 48.5}, {"input": [48.5, -32.0], "expected": 48.5}, {"input": [48.5, -31.5], "expected": 48.5}, {"input": [48.5, -31.0], "expected": 48.5}, {"input": [48.5, -30.5], "expected": 48.5}, {"input": [48.5, -30.0], "expected": 48.5}, {"input": [48.5, -29.5], "expected": 48.5}, {"input": [48.5, -29.0], "expected": 48.5}, {"input": [48.5, -28.5], "expected": 48.5}, {"input": [48.5, -28.0], "expected": 48.5}, {"input": [48.5, -27.5], "expected": 48.5}, {"input": [48.5, -27.0], "expected": 48.5}, {"input": [48.5, -26.5], "expected": 48.5}, {"input": [48.5, -26.0], "expected": 48.5}, {"input": [48.5, -25.5], "expected": 48.5}, {"input": [48.5, -25.0], "expected": 48.5}, {"input": [48.5, -24.5], "expected": 48.5}, {"input": [48.5, -24.0], "expected": 48.5}, {"input": [48.5, -23.5], "expected": 48.5}, {"input": [48.5, -23.0], "expected": 48.5}, {"input": [48.5, -22.5], "expected": 48.5}, {"input": [48.5, -22.0], "expected": 48.5}, {"input": [48.5, -21.5], "expected": 48.5}, {"input": [48.5, -21.0], "expected": 48.5}, {"input": [48.5, -20.5], "expected": 48.5}, {"input": [48.5, -20.0], "expected": 48.5}, {"input": [48.5, -19.5], "expected": 48.5}, {"input": [48.5, -19.0], "expected": 48.5}, {"input": [48.5, -18.5], "expected": 48.5}, {"input": [48.5, -18.0], "expected": 48.5}, {"input": [48.5, -17.5], "expected": 48.5}, {"input": [48.5, -17.0], "expected": 48.5}, {"input": [48.5, -16.5], "expected": 48.5}, {"input": [48.5, -16.0], "expected": 48.5}, {"input": [48.5, -15.5], "expected": 48.5}, {"input": [48.5, -15.0], "expected": 48.5}, {"input": [48.5, -14.5], "expected": 48.5}, {"input": [48.5, -14.0], "expected": 48.5}, {"input": [48.5, -13.5], "expected": 48.5}, {"input": [48.5, -13.0], "expected": 48.5}, {"input": [48.5, -12.5], "expected": 48.5}, {"input": [48.5, -12.0], "expected": 48.5}, {"input": [48.5, -11.5], "expected": 48.5}, {"input": [48.5, -11.0], "expected": 48.5}, {"input": [48.5, -10.5], "expected": 48.5}, {"input": [48.5, -10.0], "expected": 48.5}, {"input": [48.5, -9.5], "expected": 48.5}, {"input": [48.5, -9.0], "expected": 48.5}, {"input": [48.5, -8.5], "expected": 48.5}, {"input": [48.5, -8.0], "expected": 48.5}, {"input": [48.5, -7.5], "expected": 48.5}, {"input": [48.5, -7.0], "expected": 48.5}, {"input": [48.5, -6.5], "expected": 48.5}, {"input": [48.5, -6.0], "expected": 48.5}, {"input": [48.5, -5.5], "expected": 48.5}, {"input": [48.5, -5.0], "expected": 48.5}, {"input": [48.5, -4.5], "expected": 48.5}, {"input": [48.5, -4.0], "expected": 48.5}, {"input": [48.5, -3.5], "expected": 48.5}, {"input": [48.5, -3.0], "expected": 48.5}, {"input": [48.5, -2.5], "expected": 48.5}, {"input": [48.5, -2.0], "expected": 48.5}, {"input": [48.5, -1.5], "expected": 48.5}, {"input": [48.5, -1.0], "expected": 48.5}, {"input": [48.5, -0.5], "expected": 48.5}, {"input": [48.5, 0.0], "expected": 48.5}, {"input": [48.5, 0.5], "expected": 48.5}, {"input": [48.5, 1.0], "expected": 48.5}, {"input": [48.5, 1.5], "expected": 48.5}, {"input": [48.5, 2.0], "expected": 48.5}, {"input": [48.5, 2.5], "expected": 48.5}, {"input": [48.5, 3.0], "expected": 48.5}, {"input": [48.5, 3.5], "expected": 48.5}, {"input": [48.5, 4.0], "expected": 48.5}, {"input": [48.5, 4.5], "expected": 48.5}, {"input": [48.5, 5.0], "expected": 48.5}, {"input": [48.5, 5.5], "expected": 48.5}, {"input": [48.5, 6.0], "expected": 48.5}, {"input": [48.5, 6.5], "expected": 48.5}, {"input": [48.5, 7.0], "expected": 48.5}, {"input": [48.5, 7.5], "expected": 48.5}, {"input": [48.5, 8.0], "expected": 48.5}, {"input": [48.5, 8.5], "expected": 48.5}, {"input": [48.5, 9.0], "expected": 48.5}, {"input": [48.5, 9.5], "expected": 48.5}, {"input": [48.5, 10.0], "expected": 48.5}, {"input": [48.5, 10.5], "expected": 48.5}, {"input": [48.5, 11.0], "expected": 48.5}, {"input": [48.5, 11.5], "expected": 48.5}, {"input": [48.5, 12.0], "expected": 48.5}, {"input": [48.5, 12.5], "expected": 48.5}, {"input": [48.5, 13.0], "expected": 48.5}, {"input": [48.5, 13.5], "expected": 48.5}, {"input": [48.5, 14.0], "expected": 48.5}, {"input": [48.5, 14.5], "expected": 48.5}, {"input": [48.5, 15.0], "expected": 48.5}, {"input": [48.5, 15.5], "expected": 48.50000000000001}, {"input": [48.5, 16.0], "expected": 48.50000000000001}, {"input": [48.5, 16.5], "expected": 48.500000000000014}, {"input": [48.5, 17.0], "expected": 48.50000000000002}, {"input": [48.5, 17.5], "expected": 48.500000000000036}, {"input": [48.5, 18.0], "expected": 48.50000000000006}, {"input": [48.5, 18.5], "expected": 48.50000000000009}, {"input": [48.5, 19.0], "expected": 48.500000000000156}, {"input": [48.5, 19.5], "expected": 48.500000000000256}, {"input": [48.5, 20.0], "expected": 48.50000000000042}, {"input": [48.5, 20.5], "expected": 48.50000000000069}, {"input": [48.5, 21.0], "expected": 48.50000000000114}, {"input": [48.5, 21.5], "expected": 48.50000000000188}, {"input": [48.5, 22.0], "expected": 48.5000000000031}, {"input": [48.5, 22.5], "expected": 48.50000000000511}, {"input": [48.5, 23.0], "expected": 48.50000000000842}, {"input": [48.5, 23.5], "expected": 48.50000000001389}, {"input": [48.5, 24.0], "expected": 48.5000000000229}, {"input": [48.5, 24.5], "expected": 48.50000000003775}, {"input": [48.5, 25.0], "expected": 48.50000000006224}, {"input": [48.5, 25.5], "expected": 48.50000000010262}, {"input": [48.5, 26.0], "expected": 48.50000000016919}, {"input": [48.5, 26.5], "expected": 48.500000000278945}, {"input": [48.5, 27.0], "expected": 48.500000000459906}, {"input": [48.5, 27.5], "expected": 48.500000000758256}, {"input": [48.5, 28.0], "expected": 48.50000000125015}, {"input": [48.5, 28.5], "expected": 48.50000000206116}, {"input": [48.5, 29.0], "expected": 48.50000000339827}, {"input": [48.5, 29.5], "expected": 48.50000000560279}, {"input": [48.5, 30.0], "expected": 48.500000009237446}, {"input": [48.5, 30.5], "expected": 48.50000001522998}, {"input": [48.5, 31.0], "expected": 48.50000002510999}, {"input": [48.5, 31.5], "expected": 48.500000041399375}, {"input": [48.5, 32.0], "expected": 48.50000006825603}, {"input": [48.5, 32.5], "expected": 48.50000011253517}, {"input": [48.5, 33.0], "expected": 48.50000018553912}, {"input": [48.5, 33.5], "expected": 48.500000305902276}, {"input": [48.5, 34.0], "expected": 48.50000050434753}, {"input": [48.5, 34.5], "expected": 48.500000831528375}, {"input": [48.5, 35.0], "expected": 48.500001370958145}, {"input": [48.5, 35.5], "expected": 48.50000226032685}, {"input": [48.5, 36.0], "expected": 48.50000372664623}, {"input": [48.5, 36.5], "expected": 48.50000614419348}, {"input": [48.5, 37.0], "expected": 48.50001013004229}, {"input": [48.5, 37.5], "expected": 48.50001670156132}, {"input": [48.5, 38.0], "expected": 48.50002753607023}, {"input": [48.5, 38.5], "expected": 48.50004539889922}, {"input": [48.5, 39.0], "expected": 48.50007484902863}, {"input": [48.5, 39.5], "expected": 48.50012340218972}, {"input": [48.5, 40.0], "expected": 48.50020344767213}, {"input": [48.5, 40.5], "expected": 48.5003354063729}, {"input": [48.5, 41.0], "expected": 48.50055293147536}, {"input": [48.5, 41.5], "expected": 48.50091146645377}, {"input": [48.5, 42.0], "expected": 48.50150231015976}, {"input": [48.5, 42.5], "expected": 48.50247568513773}, {"input": [48.5, 43.0], "expected": 48.50407844327057}, {"input": [48.5, 43.5], "expected": 48.50671534848912}, {"input": [48.5, 44.0], "expected": 48.5110477448486}, {"input": [48.5, 44.5], "expected": 48.51814992791781}, {"input": [48.5, 45.0], "expected": 48.52975041827262}, {"input": [48.5, 45.5], "expected": 48.548587351573744}, {"input": [48.5, 46.0], "expected": 48.57888973429255}, {"input": [48.5, 46.5], "expected": 48.62692801104297}, {"input": [48.5, 47.0], "expected": 48.70141327798275}, {"input": [48.5, 47.5], "expected": 48.81326168751822}, {"input": [48.5, 48.0], "expected": 48.97407698418011}, {"input": [48.5, 48.5], "expected": 49.19314718055995}, {"input": [48.5, 49.0], "expected": 49.47407698418011}, {"input": [48.5, 49.5], "expected": 49.81326168751822}, {"input": [48.5, 50.0], "expected": 50.20141327798275}, {"input": [48.5, 50.5], "expected": 50.62692801104297}, {"input": [48.5, 51.0], "expected": 51.07888973429255}, {"input": [48.5, 51.5], "expected": 51.548587351573744}, {"input": [48.5, 52.0], "expected": 52.02975041827262}, {"input": [48.5, 52.5], "expected": 52.51814992791781}, {"input": [48.5, 53.0], "expected": 53.0110477448486}, {"input": [48.5, 53.5], "expected": 53.50671534848912}, {"input": [48.5, 54.0], "expected": 54.00407844327057}, {"input": [48.5, 54.5], "expected": 54.50247568513773}, {"input": [48.5, 55.0], "expected": 55.00150231015976}, {"input": [48.5, 55.5], "expected": 55.50091146645377}, {"input": [48.5, 56.0], "expected": 56.00055293147536}, {"input": [48.5, 56.5], "expected": 56.5003354063729}, {"input": [48.5, 57.0], "expected": 57.00020344767213}, {"input": [48.5, 57.5], "expected": 57.50012340218972}, {"input": [48.5, 58.0], "expected": 58.00007484902863}, {"input": [48.5, 58.5], "expected": 58.50004539889922}, {"input": [48.5, 59.0], "expected": 59.00002753607023}, {"input": [48.5, 59.5], "expected": 59.50001670156132}, {"input": [48.5, 60.0], "expected": 60.00001013004229}, {"input": [48.5, 60.5], "expected": 60.50000614419348}, {"input": [48.5, 61.0], "expected": 61.00000372664623}, {"input": [48.5, 61.5], "expected": 61.50000226032685}, {"input": [48.5, 62.0], "expected": 62.000001370958145}, {"input": [48.5, 62.5], "expected": 62.500000831528375}, {"input": [48.5, 63.0], "expected": 63.00000050434753}, {"input": [48.5, 63.5], "expected": 63.500000305902276}, {"input": [48.5, 64.0], "expected": 64.00000018553912}, {"input": [48.5, 64.5], "expected": 64.50000011253516}, {"input": [48.5, 65.0], "expected": 65.00000006825603}, {"input": [48.5, 65.5], "expected": 65.50000004139937}, {"input": [48.5, 66.0], "expected": 66.00000002511}, {"input": [48.5, 66.5], "expected": 66.50000001522999}, {"input": [48.5, 67.0], "expected": 67.00000000923745}, {"input": [48.5, 67.5], "expected": 67.5000000056028}, {"input": [48.5, 68.0], "expected": 68.00000000339827}, {"input": [48.5, 68.5], "expected": 68.50000000206116}, {"input": [48.5, 69.0], "expected": 69.00000000125016}, {"input": [48.5, 69.5], "expected": 69.50000000075826}, {"input": [48.5, 70.0], "expected": 70.0000000004599}, {"input": [48.5, 70.5], "expected": 70.50000000027894}, {"input": [48.5, 71.0], "expected": 71.0000000001692}, {"input": [48.5, 71.5], "expected": 71.50000000010262}, {"input": [48.5, 72.0], "expected": 72.00000000006224}, {"input": [48.5, 72.5], "expected": 72.50000000003776}, {"input": [48.5, 73.0], "expected": 73.0000000000229}, {"input": [48.5, 73.5], "expected": 73.50000000001388}, {"input": [48.5, 74.0], "expected": 74.00000000000843}, {"input": [48.5, 74.5], "expected": 74.50000000000512}, {"input": [48.5, 75.0], "expected": 75.0000000000031}, {"input": [48.5, 75.5], "expected": 75.50000000000188}, {"input": [48.5, 76.0], "expected": 76.00000000000114}, {"input": [48.5, 76.5], "expected": 76.5000000000007}, {"input": [48.5, 77.0], "expected": 77.00000000000043}, {"input": [48.5, 77.5], "expected": 77.50000000000026}, {"input": [48.5, 78.0], "expected": 78.00000000000016}, {"input": [48.5, 78.5], "expected": 78.5000000000001}, {"input": [48.5, 79.0], "expected": 79.00000000000006}, {"input": [48.5, 79.5], "expected": 79.50000000000003}, {"input": [48.5, 80.0], "expected": 80.00000000000001}, {"input": [48.5, 80.5], "expected": 80.50000000000001}, {"input": [48.5, 81.0], "expected": 81.00000000000001}, {"input": [48.5, 81.5], "expected": 81.5}, {"input": [48.5, 82.0], "expected": 82.0}, {"input": [48.5, 82.5], "expected": 82.5}, {"input": [48.5, 83.0], "expected": 83.0}, {"input": [48.5, 83.5], "expected": 83.5}, {"input": [48.5, 84.0], "expected": 84.0}, {"input": [48.5, 84.5], "expected": 84.5}, {"input": [48.5, 85.0], "expected": 85.0}, {"input": [48.5, 85.5], "expected": 85.5}, {"input": [48.5, 86.0], "expected": 86.0}, {"input": [48.5, 86.5], "expected": 86.5}, {"input": [48.5, 87.0], "expected": 87.0}, {"input": [48.5, 87.5], "expected": 87.5}, {"input": [48.5, 88.0], "expected": 88.0}, {"input": [48.5, 88.5], "expected": 88.5}, {"input": [48.5, 89.0], "expected": 89.0}, {"input": [48.5, 89.5], "expected": 89.5}, {"input": [48.5, 90.0], "expected": 90.0}, {"input": [48.5, 90.5], "expected": 90.5}, {"input": [48.5, 91.0], "expected": 91.0}, {"input": [48.5, 91.5], "expected": 91.5}, {"input": [48.5, 92.0], "expected": 92.0}, {"input": [48.5, 92.5], "expected": 92.5}, {"input": [48.5, 93.0], "expected": 93.0}, {"input": [48.5, 93.5], "expected": 93.5}, {"input": [48.5, 94.0], "expected": 94.0}, {"input": [48.5, 94.5], "expected": 94.5}, {"input": [48.5, 95.0], "expected": 95.0}, {"input": [48.5, 95.5], "expected": 95.5}, {"input": [48.5, 96.0], "expected": 96.0}, {"input": [48.5, 96.5], "expected": 96.5}, {"input": [48.5, 97.0], "expected": 97.0}, {"input": [48.5, 97.5], "expected": 97.5}, {"input": [48.5, 98.0], "expected": 98.0}, {"input": [48.5, 98.5], "expected": 98.5}, {"input": [48.5, 99.0], "expected": 99.0}, {"input": [48.5, 99.5], "expected": 99.5}, {"input": [49.0, -100.0], "expected": 49.0}, {"input": [49.0, -99.5], "expected": 49.0}, {"input": [49.0, -99.0], "expected": 49.0}, {"input": [49.0, -98.5], "expected": 49.0}, {"input": [49.0, -98.0], "expected": 49.0}, {"input": [49.0, -97.5], "expected": 49.0}, {"input": [49.0, -97.0], "expected": 49.0}, {"input": [49.0, -96.5], "expected": 49.0}, {"input": [49.0, -96.0], "expected": 49.0}, {"input": [49.0, -95.5], "expected": 49.0}, {"input": [49.0, -95.0], "expected": 49.0}, {"input": [49.0, -94.5], "expected": 49.0}, {"input": [49.0, -94.0], "expected": 49.0}, {"input": [49.0, -93.5], "expected": 49.0}, {"input": [49.0, -93.0], "expected": 49.0}, {"input": [49.0, -92.5], "expected": 49.0}, {"input": [49.0, -92.0], "expected": 49.0}, {"input": [49.0, -91.5], "expected": 49.0}, {"input": [49.0, -91.0], "expected": 49.0}, {"input": [49.0, -90.5], "expected": 49.0}, {"input": [49.0, -90.0], "expected": 49.0}, {"input": [49.0, -89.5], "expected": 49.0}, {"input": [49.0, -89.0], "expected": 49.0}, {"input": [49.0, -88.5], "expected": 49.0}, {"input": [49.0, -88.0], "expected": 49.0}, {"input": [49.0, -87.5], "expected": 49.0}, {"input": [49.0, -87.0], "expected": 49.0}, {"input": [49.0, -86.5], "expected": 49.0}, {"input": [49.0, -86.0], "expected": 49.0}, {"input": [49.0, -85.5], "expected": 49.0}, {"input": [49.0, -85.0], "expected": 49.0}, {"input": [49.0, -84.5], "expected": 49.0}, {"input": [49.0, -84.0], "expected": 49.0}, {"input": [49.0, -83.5], "expected": 49.0}, {"input": [49.0, -83.0], "expected": 49.0}, {"input": [49.0, -82.5], "expected": 49.0}, {"input": [49.0, -82.0], "expected": 49.0}, {"input": [49.0, -81.5], "expected": 49.0}, {"input": [49.0, -81.0], "expected": 49.0}, {"input": [49.0, -80.5], "expected": 49.0}, {"input": [49.0, -80.0], "expected": 49.0}, {"input": [49.0, -79.5], "expected": 49.0}, {"input": [49.0, -79.0], "expected": 49.0}, {"input": [49.0, -78.5], "expected": 49.0}, {"input": [49.0, -78.0], "expected": 49.0}, {"input": [49.0, -77.5], "expected": 49.0}, {"input": [49.0, -77.0], "expected": 49.0}, {"input": [49.0, -76.5], "expected": 49.0}, {"input": [49.0, -76.0], "expected": 49.0}, {"input": [49.0, -75.5], "expected": 49.0}, {"input": [49.0, -75.0], "expected": 49.0}, {"input": [49.0, -74.5], "expected": 49.0}, {"input": [49.0, -74.0], "expected": 49.0}, {"input": [49.0, -73.5], "expected": 49.0}, {"input": [49.0, -73.0], "expected": 49.0}, {"input": [49.0, -72.5], "expected": 49.0}, {"input": [49.0, -72.0], "expected": 49.0}, {"input": [49.0, -71.5], "expected": 49.0}, {"input": [49.0, -71.0], "expected": 49.0}, {"input": [49.0, -70.5], "expected": 49.0}, {"input": [49.0, -70.0], "expected": 49.0}, {"input": [49.0, -69.5], "expected": 49.0}, {"input": [49.0, -69.0], "expected": 49.0}, {"input": [49.0, -68.5], "expected": 49.0}, {"input": [49.0, -68.0], "expected": 49.0}, {"input": [49.0, -67.5], "expected": 49.0}, {"input": [49.0, -67.0], "expected": 49.0}, {"input": [49.0, -66.5], "expected": 49.0}, {"input": [49.0, -66.0], "expected": 49.0}, {"input": [49.0, -65.5], "expected": 49.0}, {"input": [49.0, -65.0], "expected": 49.0}, {"input": [49.0, -64.5], "expected": 49.0}, {"input": [49.0, -64.0], "expected": 49.0}, {"input": [49.0, -63.5], "expected": 49.0}, {"input": [49.0, -63.0], "expected": 49.0}, {"input": [49.0, -62.5], "expected": 49.0}, {"input": [49.0, -62.0], "expected": 49.0}, {"input": [49.0, -61.5], "expected": 49.0}, {"input": [49.0, -61.0], "expected": 49.0}, {"input": [49.0, -60.5], "expected": 49.0}, {"input": [49.0, -60.0], "expected": 49.0}, {"input": [49.0, -59.5], "expected": 49.0}, {"input": [49.0, -59.0], "expected": 49.0}, {"input": [49.0, -58.5], "expected": 49.0}, {"input": [49.0, -58.0], "expected": 49.0}, {"input": [49.0, -57.5], "expected": 49.0}, {"input": [49.0, -57.0], "expected": 49.0}, {"input": [49.0, -56.5], "expected": 49.0}, {"input": [49.0, -56.0], "expected": 49.0}, {"input": [49.0, -55.5], "expected": 49.0}, {"input": [49.0, -55.0], "expected": 49.0}, {"input": [49.0, -54.5], "expected": 49.0}, {"input": [49.0, -54.0], "expected": 49.0}, {"input": [49.0, -53.5], "expected": 49.0}, {"input": [49.0, -53.0], "expected": 49.0}, {"input": [49.0, -52.5], "expected": 49.0}, {"input": [49.0, -52.0], "expected": 49.0}, {"input": [49.0, -51.5], "expected": 49.0}, {"input": [49.0, -51.0], "expected": 49.0}, {"input": [49.0, -50.5], "expected": 49.0}, {"input": [49.0, -50.0], "expected": 49.0}, {"input": [49.0, -49.5], "expected": 49.0}, {"input": [49.0, -49.0], "expected": 49.0}, {"input": [49.0, -48.5], "expected": 49.0}, {"input": [49.0, -48.0], "expected": 49.0}, {"input": [49.0, -47.5], "expected": 49.0}, {"input": [49.0, -47.0], "expected": 49.0}, {"input": [49.0, -46.5], "expected": 49.0}, {"input": [49.0, -46.0], "expected": 49.0}, {"input": [49.0, -45.5], "expected": 49.0}, {"input": [49.0, -45.0], "expected": 49.0}, {"input": [49.0, -44.5], "expected": 49.0}, {"input": [49.0, -44.0], "expected": 49.0}, {"input": [49.0, -43.5], "expected": 49.0}, {"input": [49.0, -43.0], "expected": 49.0}, {"input": [49.0, -42.5], "expected": 49.0}, {"input": [49.0, -42.0], "expected": 49.0}, {"input": [49.0, -41.5], "expected": 49.0}, {"input": [49.0, -41.0], "expected": 49.0}, {"input": [49.0, -40.5], "expected": 49.0}, {"input": [49.0, -40.0], "expected": 49.0}, {"input": [49.0, -39.5], "expected": 49.0}, {"input": [49.0, -39.0], "expected": 49.0}, {"input": [49.0, -38.5], "expected": 49.0}, {"input": [49.0, -38.0], "expected": 49.0}, {"input": [49.0, -37.5], "expected": 49.0}, {"input": [49.0, -37.0], "expected": 49.0}, {"input": [49.0, -36.5], "expected": 49.0}, {"input": [49.0, -36.0], "expected": 49.0}, {"input": [49.0, -35.5], "expected": 49.0}, {"input": [49.0, -35.0], "expected": 49.0}, {"input": [49.0, -34.5], "expected": 49.0}, {"input": [49.0, -34.0], "expected": 49.0}, {"input": [49.0, -33.5], "expected": 49.0}, {"input": [49.0, -33.0], "expected": 49.0}, {"input": [49.0, -32.5], "expected": 49.0}, {"input": [49.0, -32.0], "expected": 49.0}, {"input": [49.0, -31.5], "expected": 49.0}, {"input": [49.0, -31.0], "expected": 49.0}, {"input": [49.0, -30.5], "expected": 49.0}, {"input": [49.0, -30.0], "expected": 49.0}, {"input": [49.0, -29.5], "expected": 49.0}, {"input": [49.0, -29.0], "expected": 49.0}, {"input": [49.0, -28.5], "expected": 49.0}, {"input": [49.0, -28.0], "expected": 49.0}, {"input": [49.0, -27.5], "expected": 49.0}, {"input": [49.0, -27.0], "expected": 49.0}, {"input": [49.0, -26.5], "expected": 49.0}, {"input": [49.0, -26.0], "expected": 49.0}, {"input": [49.0, -25.5], "expected": 49.0}, {"input": [49.0, -25.0], "expected": 49.0}, {"input": [49.0, -24.5], "expected": 49.0}, {"input": [49.0, -24.0], "expected": 49.0}, {"input": [49.0, -23.5], "expected": 49.0}, {"input": [49.0, -23.0], "expected": 49.0}, {"input": [49.0, -22.5], "expected": 49.0}, {"input": [49.0, -22.0], "expected": 49.0}, {"input": [49.0, -21.5], "expected": 49.0}, {"input": [49.0, -21.0], "expected": 49.0}, {"input": [49.0, -20.5], "expected": 49.0}, {"input": [49.0, -20.0], "expected": 49.0}, {"input": [49.0, -19.5], "expected": 49.0}, {"input": [49.0, -19.0], "expected": 49.0}, {"input": [49.0, -18.5], "expected": 49.0}, {"input": [49.0, -18.0], "expected": 49.0}, {"input": [49.0, -17.5], "expected": 49.0}, {"input": [49.0, -17.0], "expected": 49.0}, {"input": [49.0, -16.5], "expected": 49.0}, {"input": [49.0, -16.0], "expected": 49.0}, {"input": [49.0, -15.5], "expected": 49.0}, {"input": [49.0, -15.0], "expected": 49.0}, {"input": [49.0, -14.5], "expected": 49.0}, {"input": [49.0, -14.0], "expected": 49.0}, {"input": [49.0, -13.5], "expected": 49.0}, {"input": [49.0, -13.0], "expected": 49.0}, {"input": [49.0, -12.5], "expected": 49.0}, {"input": [49.0, -12.0], "expected": 49.0}, {"input": [49.0, -11.5], "expected": 49.0}, {"input": [49.0, -11.0], "expected": 49.0}, {"input": [49.0, -10.5], "expected": 49.0}, {"input": [49.0, -10.0], "expected": 49.0}, {"input": [49.0, -9.5], "expected": 49.0}, {"input": [49.0, -9.0], "expected": 49.0}, {"input": [49.0, -8.5], "expected": 49.0}, {"input": [49.0, -8.0], "expected": 49.0}, {"input": [49.0, -7.5], "expected": 49.0}, {"input": [49.0, -7.0], "expected": 49.0}, {"input": [49.0, -6.5], "expected": 49.0}, {"input": [49.0, -6.0], "expected": 49.0}, {"input": [49.0, -5.5], "expected": 49.0}, {"input": [49.0, -5.0], "expected": 49.0}, {"input": [49.0, -4.5], "expected": 49.0}, {"input": [49.0, -4.0], "expected": 49.0}, {"input": [49.0, -3.5], "expected": 49.0}, {"input": [49.0, -3.0], "expected": 49.0}, {"input": [49.0, -2.5], "expected": 49.0}, {"input": [49.0, -2.0], "expected": 49.0}, {"input": [49.0, -1.5], "expected": 49.0}, {"input": [49.0, -1.0], "expected": 49.0}, {"input": [49.0, -0.5], "expected": 49.0}, {"input": [49.0, 0.0], "expected": 49.0}, {"input": [49.0, 0.5], "expected": 49.0}, {"input": [49.0, 1.0], "expected": 49.0}, {"input": [49.0, 1.5], "expected": 49.0}, {"input": [49.0, 2.0], "expected": 49.0}, {"input": [49.0, 2.5], "expected": 49.0}, {"input": [49.0, 3.0], "expected": 49.0}, {"input": [49.0, 3.5], "expected": 49.0}, {"input": [49.0, 4.0], "expected": 49.0}, {"input": [49.0, 4.5], "expected": 49.0}, {"input": [49.0, 5.0], "expected": 49.0}, {"input": [49.0, 5.5], "expected": 49.0}, {"input": [49.0, 6.0], "expected": 49.0}, {"input": [49.0, 6.5], "expected": 49.0}, {"input": [49.0, 7.0], "expected": 49.0}, {"input": [49.0, 7.5], "expected": 49.0}, {"input": [49.0, 8.0], "expected": 49.0}, {"input": [49.0, 8.5], "expected": 49.0}, {"input": [49.0, 9.0], "expected": 49.0}, {"input": [49.0, 9.5], "expected": 49.0}, {"input": [49.0, 10.0], "expected": 49.0}, {"input": [49.0, 10.5], "expected": 49.0}, {"input": [49.0, 11.0], "expected": 49.0}, {"input": [49.0, 11.5], "expected": 49.0}, {"input": [49.0, 12.0], "expected": 49.0}, {"input": [49.0, 12.5], "expected": 49.0}, {"input": [49.0, 13.0], "expected": 49.0}, {"input": [49.0, 13.5], "expected": 49.0}, {"input": [49.0, 14.0], "expected": 49.0}, {"input": [49.0, 14.5], "expected": 49.0}, {"input": [49.0, 15.0], "expected": 49.0}, {"input": [49.0, 15.5], "expected": 49.0}, {"input": [49.0, 16.0], "expected": 49.00000000000001}, {"input": [49.0, 16.5], "expected": 49.00000000000001}, {"input": [49.0, 17.0], "expected": 49.000000000000014}, {"input": [49.0, 17.5], "expected": 49.00000000000002}, {"input": [49.0, 18.0], "expected": 49.000000000000036}, {"input": [49.0, 18.5], "expected": 49.00000000000006}, {"input": [49.0, 19.0], "expected": 49.00000000000009}, {"input": [49.0, 19.5], "expected": 49.000000000000156}, {"input": [49.0, 20.0], "expected": 49.000000000000256}, {"input": [49.0, 20.5], "expected": 49.00000000000042}, {"input": [49.0, 21.0], "expected": 49.00000000000069}, {"input": [49.0, 21.5], "expected": 49.00000000000114}, {"input": [49.0, 22.0], "expected": 49.00000000000188}, {"input": [49.0, 22.5], "expected": 49.0000000000031}, {"input": [49.0, 23.0], "expected": 49.00000000000511}, {"input": [49.0, 23.5], "expected": 49.00000000000842}, {"input": [49.0, 24.0], "expected": 49.00000000001389}, {"input": [49.0, 24.5], "expected": 49.0000000000229}, {"input": [49.0, 25.0], "expected": 49.00000000003775}, {"input": [49.0, 25.5], "expected": 49.00000000006224}, {"input": [49.0, 26.0], "expected": 49.00000000010262}, {"input": [49.0, 26.5], "expected": 49.00000000016919}, {"input": [49.0, 27.0], "expected": 49.000000000278945}, {"input": [49.0, 27.5], "expected": 49.000000000459906}, {"input": [49.0, 28.0], "expected": 49.000000000758256}, {"input": [49.0, 28.5], "expected": 49.00000000125015}, {"input": [49.0, 29.0], "expected": 49.00000000206116}, {"input": [49.0, 29.5], "expected": 49.00000000339827}, {"input": [49.0, 30.0], "expected": 49.00000000560279}, {"input": [49.0, 30.5], "expected": 49.000000009237446}, {"input": [49.0, 31.0], "expected": 49.00000001522998}, {"input": [49.0, 31.5], "expected": 49.00000002510999}, {"input": [49.0, 32.0], "expected": 49.000000041399375}, {"input": [49.0, 32.5], "expected": 49.00000006825603}, {"input": [49.0, 33.0], "expected": 49.00000011253517}, {"input": [49.0, 33.5], "expected": 49.00000018553912}, {"input": [49.0, 34.0], "expected": 49.000000305902276}, {"input": [49.0, 34.5], "expected": 49.00000050434753}, {"input": [49.0, 35.0], "expected": 49.000000831528375}, {"input": [49.0, 35.5], "expected": 49.000001370958145}, {"input": [49.0, 36.0], "expected": 49.00000226032685}, {"input": [49.0, 36.5], "expected": 49.00000372664623}, {"input": [49.0, 37.0], "expected": 49.00000614419348}, {"input": [49.0, 37.5], "expected": 49.00001013004229}, {"input": [49.0, 38.0], "expected": 49.00001670156132}, {"input": [49.0, 38.5], "expected": 49.00002753607023}, {"input": [49.0, 39.0], "expected": 49.00004539889922}, {"input": [49.0, 39.5], "expected": 49.00007484902863}, {"input": [49.0, 40.0], "expected": 49.00012340218972}, {"input": [49.0, 40.5], "expected": 49.00020344767213}, {"input": [49.0, 41.0], "expected": 49.0003354063729}, {"input": [49.0, 41.5], "expected": 49.00055293147536}, {"input": [49.0, 42.0], "expected": 49.00091146645377}, {"input": [49.0, 42.5], "expected": 49.00150231015976}, {"input": [49.0, 43.0], "expected": 49.00247568513773}, {"input": [49.0, 43.5], "expected": 49.00407844327057}, {"input": [49.0, 44.0], "expected": 49.00671534848912}, {"input": [49.0, 44.5], "expected": 49.0110477448486}, {"input": [49.0, 45.0], "expected": 49.01814992791781}, {"input": [49.0, 45.5], "expected": 49.02975041827262}, {"input": [49.0, 46.0], "expected": 49.048587351573744}, {"input": [49.0, 46.5], "expected": 49.07888973429255}, {"input": [49.0, 47.0], "expected": 49.12692801104297}, {"input": [49.0, 47.5], "expected": 49.20141327798275}, {"input": [49.0, 48.0], "expected": 49.31326168751822}, {"input": [49.0, 48.5], "expected": 49.47407698418011}, {"input": [49.0, 49.0], "expected": 49.69314718055995}, {"input": [49.0, 49.5], "expected": 49.97407698418011}, {"input": [49.0, 50.0], "expected": 50.31326168751822}, {"input": [49.0, 50.5], "expected": 50.70141327798275}, {"input": [49.0, 51.0], "expected": 51.12692801104297}, {"input": [49.0, 51.5], "expected": 51.57888973429255}, {"input": [49.0, 52.0], "expected": 52.048587351573744}, {"input": [49.0, 52.5], "expected": 52.52975041827262}, {"input": [49.0, 53.0], "expected": 53.01814992791781}, {"input": [49.0, 53.5], "expected": 53.5110477448486}, {"input": [49.0, 54.0], "expected": 54.00671534848912}, {"input": [49.0, 54.5], "expected": 54.50407844327057}, {"input": [49.0, 55.0], "expected": 55.00247568513773}, {"input": [49.0, 55.5], "expected": 55.50150231015976}, {"input": [49.0, 56.0], "expected": 56.00091146645377}, {"input": [49.0, 56.5], "expected": 56.50055293147536}, {"input": [49.0, 57.0], "expected": 57.0003354063729}, {"input": [49.0, 57.5], "expected": 57.50020344767213}, {"input": [49.0, 58.0], "expected": 58.00012340218972}, {"input": [49.0, 58.5], "expected": 58.50007484902863}, {"input": [49.0, 59.0], "expected": 59.00004539889922}, {"input": [49.0, 59.5], "expected": 59.50002753607023}, {"input": [49.0, 60.0], "expected": 60.00001670156132}, {"input": [49.0, 60.5], "expected": 60.50001013004229}, {"input": [49.0, 61.0], "expected": 61.00000614419348}, {"input": [49.0, 61.5], "expected": 61.50000372664623}, {"input": [49.0, 62.0], "expected": 62.00000226032685}, {"input": [49.0, 62.5], "expected": 62.500001370958145}, {"input": [49.0, 63.0], "expected": 63.000000831528375}, {"input": [49.0, 63.5], "expected": 63.50000050434753}, {"input": [49.0, 64.0], "expected": 64.00000030590228}, {"input": [49.0, 64.5], "expected": 64.50000018553912}, {"input": [49.0, 65.0], "expected": 65.00000011253516}, {"input": [49.0, 65.5], "expected": 65.50000006825603}, {"input": [49.0, 66.0], "expected": 66.00000004139937}, {"input": [49.0, 66.5], "expected": 66.50000002511}, {"input": [49.0, 67.0], "expected": 67.00000001522999}, {"input": [49.0, 67.5], "expected": 67.50000000923745}, {"input": [49.0, 68.0], "expected": 68.0000000056028}, {"input": [49.0, 68.5], "expected": 68.50000000339827}, {"input": [49.0, 69.0], "expected": 69.00000000206116}, {"input": [49.0, 69.5], "expected": 69.50000000125016}, {"input": [49.0, 70.0], "expected": 70.00000000075826}, {"input": [49.0, 70.5], "expected": 70.5000000004599}, {"input": [49.0, 71.0], "expected": 71.00000000027894}, {"input": [49.0, 71.5], "expected": 71.5000000001692}, {"input": [49.0, 72.0], "expected": 72.00000000010262}, {"input": [49.0, 72.5], "expected": 72.50000000006224}, {"input": [49.0, 73.0], "expected": 73.00000000003776}, {"input": [49.0, 73.5], "expected": 73.5000000000229}, {"input": [49.0, 74.0], "expected": 74.00000000001388}, {"input": [49.0, 74.5], "expected": 74.50000000000843}, {"input": [49.0, 75.0], "expected": 75.00000000000512}, {"input": [49.0, 75.5], "expected": 75.5000000000031}, {"input": [49.0, 76.0], "expected": 76.00000000000188}, {"input": [49.0, 76.5], "expected": 76.50000000000114}, {"input": [49.0, 77.0], "expected": 77.0000000000007}, {"input": [49.0, 77.5], "expected": 77.50000000000043}, {"input": [49.0, 78.0], "expected": 78.00000000000026}, {"input": [49.0, 78.5], "expected": 78.50000000000016}, {"input": [49.0, 79.0], "expected": 79.0000000000001}, {"input": [49.0, 79.5], "expected": 79.50000000000006}, {"input": [49.0, 80.0], "expected": 80.00000000000003}, {"input": [49.0, 80.5], "expected": 80.50000000000001}, {"input": [49.0, 81.0], "expected": 81.00000000000001}, {"input": [49.0, 81.5], "expected": 81.50000000000001}, {"input": [49.0, 82.0], "expected": 82.0}, {"input": [49.0, 82.5], "expected": 82.5}, {"input": [49.0, 83.0], "expected": 83.0}, {"input": [49.0, 83.5], "expected": 83.5}, {"input": [49.0, 84.0], "expected": 84.0}, {"input": [49.0, 84.5], "expected": 84.5}, {"input": [49.0, 85.0], "expected": 85.0}, {"input": [49.0, 85.5], "expected": 85.5}, {"input": [49.0, 86.0], "expected": 86.0}, {"input": [49.0, 86.5], "expected": 86.5}, {"input": [49.0, 87.0], "expected": 87.0}, {"input": [49.0, 87.5], "expected": 87.5}, {"input": [49.0, 88.0], "expected": 88.0}, {"input": [49.0, 88.5], "expected": 88.5}, {"input": [49.0, 89.0], "expected": 89.0}, {"input": [49.0, 89.5], "expected": 89.5}, {"input": [49.0, 90.0], "expected": 90.0}, {"input": [49.0, 90.5], "expected": 90.5}, {"input": [49.0, 91.0], "expected": 91.0}, {"input": [49.0, 91.5], "expected": 91.5}, {"input": [49.0, 92.0], "expected": 92.0}, {"input": [49.0, 92.5], "expected": 92.5}, {"input": [49.0, 93.0], "expected": 93.0}, {"input": [49.0, 93.5], "expected": 93.5}, {"input": [49.0, 94.0], "expected": 94.0}, {"input": [49.0, 94.5], "expected": 94.5}, {"input": [49.0, 95.0], "expected": 95.0}, {"input": [49.0, 95.5], "expected": 95.5}, {"input": [49.0, 96.0], "expected": 96.0}, {"input": [49.0, 96.5], "expected": 96.5}, {"input": [49.0, 97.0], "expected": 97.0}, {"input": [49.0, 97.5], "expected": 97.5}, {"input": [49.0, 98.0], "expected": 98.0}, {"input": [49.0, 98.5], "expected": 98.5}, {"input": [49.0, 99.0], "expected": 99.0}, {"input": [49.0, 99.5], "expected": 99.5}, {"input": [49.5, -100.0], "expected": 49.5}, {"input": [49.5, -99.5], "expected": 49.5}, {"input": [49.5, -99.0], "expected": 49.5}, {"input": [49.5, -98.5], "expected": 49.5}, {"input": [49.5, -98.0], "expected": 49.5}, {"input": [49.5, -97.5], "expected": 49.5}, {"input": [49.5, -97.0], "expected": 49.5}, {"input": [49.5, -96.5], "expected": 49.5}, {"input": [49.5, -96.0], "expected": 49.5}, {"input": [49.5, -95.5], "expected": 49.5}, {"input": [49.5, -95.0], "expected": 49.5}, {"input": [49.5, -94.5], "expected": 49.5}, {"input": [49.5, -94.0], "expected": 49.5}, {"input": [49.5, -93.5], "expected": 49.5}, {"input": [49.5, -93.0], "expected": 49.5}, {"input": [49.5, -92.5], "expected": 49.5}, {"input": [49.5, -92.0], "expected": 49.5}, {"input": [49.5, -91.5], "expected": 49.5}, {"input": [49.5, -91.0], "expected": 49.5}, {"input": [49.5, -90.5], "expected": 49.5}, {"input": [49.5, -90.0], "expected": 49.5}, {"input": [49.5, -89.5], "expected": 49.5}, {"input": [49.5, -89.0], "expected": 49.5}, {"input": [49.5, -88.5], "expected": 49.5}, {"input": [49.5, -88.0], "expected": 49.5}, {"input": [49.5, -87.5], "expected": 49.5}, {"input": [49.5, -87.0], "expected": 49.5}, {"input": [49.5, -86.5], "expected": 49.5}, {"input": [49.5, -86.0], "expected": 49.5}, {"input": [49.5, -85.5], "expected": 49.5}, {"input": [49.5, -85.0], "expected": 49.5}, {"input": [49.5, -84.5], "expected": 49.5}, {"input": [49.5, -84.0], "expected": 49.5}, {"input": [49.5, -83.5], "expected": 49.5}, {"input": [49.5, -83.0], "expected": 49.5}, {"input": [49.5, -82.5], "expected": 49.5}, {"input": [49.5, -82.0], "expected": 49.5}, {"input": [49.5, -81.5], "expected": 49.5}, {"input": [49.5, -81.0], "expected": 49.5}, {"input": [49.5, -80.5], "expected": 49.5}, {"input": [49.5, -80.0], "expected": 49.5}, {"input": [49.5, -79.5], "expected": 49.5}, {"input": [49.5, -79.0], "expected": 49.5}, {"input": [49.5, -78.5], "expected": 49.5}, {"input": [49.5, -78.0], "expected": 49.5}, {"input": [49.5, -77.5], "expected": 49.5}, {"input": [49.5, -77.0], "expected": 49.5}, {"input": [49.5, -76.5], "expected": 49.5}, {"input": [49.5, -76.0], "expected": 49.5}, {"input": [49.5, -75.5], "expected": 49.5}, {"input": [49.5, -75.0], "expected": 49.5}, {"input": [49.5, -74.5], "expected": 49.5}, {"input": [49.5, -74.0], "expected": 49.5}, {"input": [49.5, -73.5], "expected": 49.5}, {"input": [49.5, -73.0], "expected": 49.5}, {"input": [49.5, -72.5], "expected": 49.5}, {"input": [49.5, -72.0], "expected": 49.5}, {"input": [49.5, -71.5], "expected": 49.5}, {"input": [49.5, -71.0], "expected": 49.5}, {"input": [49.5, -70.5], "expected": 49.5}, {"input": [49.5, -70.0], "expected": 49.5}, {"input": [49.5, -69.5], "expected": 49.5}, {"input": [49.5, -69.0], "expected": 49.5}, {"input": [49.5, -68.5], "expected": 49.5}, {"input": [49.5, -68.0], "expected": 49.5}, {"input": [49.5, -67.5], "expected": 49.5}, {"input": [49.5, -67.0], "expected": 49.5}, {"input": [49.5, -66.5], "expected": 49.5}, {"input": [49.5, -66.0], "expected": 49.5}, {"input": [49.5, -65.5], "expected": 49.5}, {"input": [49.5, -65.0], "expected": 49.5}, {"input": [49.5, -64.5], "expected": 49.5}, {"input": [49.5, -64.0], "expected": 49.5}, {"input": [49.5, -63.5], "expected": 49.5}, {"input": [49.5, -63.0], "expected": 49.5}, {"input": [49.5, -62.5], "expected": 49.5}, {"input": [49.5, -62.0], "expected": 49.5}, {"input": [49.5, -61.5], "expected": 49.5}, {"input": [49.5, -61.0], "expected": 49.5}, {"input": [49.5, -60.5], "expected": 49.5}, {"input": [49.5, -60.0], "expected": 49.5}, {"input": [49.5, -59.5], "expected": 49.5}, {"input": [49.5, -59.0], "expected": 49.5}, {"input": [49.5, -58.5], "expected": 49.5}, {"input": [49.5, -58.0], "expected": 49.5}, {"input": [49.5, -57.5], "expected": 49.5}, {"input": [49.5, -57.0], "expected": 49.5}, {"input": [49.5, -56.5], "expected": 49.5}, {"input": [49.5, -56.0], "expected": 49.5}, {"input": [49.5, -55.5], "expected": 49.5}, {"input": [49.5, -55.0], "expected": 49.5}, {"input": [49.5, -54.5], "expected": 49.5}, {"input": [49.5, -54.0], "expected": 49.5}, {"input": [49.5, -53.5], "expected": 49.5}, {"input": [49.5, -53.0], "expected": 49.5}, {"input": [49.5, -52.5], "expected": 49.5}, {"input": [49.5, -52.0], "expected": 49.5}, {"input": [49.5, -51.5], "expected": 49.5}, {"input": [49.5, -51.0], "expected": 49.5}, {"input": [49.5, -50.5], "expected": 49.5}, {"input": [49.5, -50.0], "expected": 49.5}, {"input": [49.5, -49.5], "expected": 49.5}, {"input": [49.5, -49.0], "expected": 49.5}, {"input": [49.5, -48.5], "expected": 49.5}, {"input": [49.5, -48.0], "expected": 49.5}, {"input": [49.5, -47.5], "expected": 49.5}, {"input": [49.5, -47.0], "expected": 49.5}, {"input": [49.5, -46.5], "expected": 49.5}, {"input": [49.5, -46.0], "expected": 49.5}, {"input": [49.5, -45.5], "expected": 49.5}, {"input": [49.5, -45.0], "expected": 49.5}, {"input": [49.5, -44.5], "expected": 49.5}, {"input": [49.5, -44.0], "expected": 49.5}, {"input": [49.5, -43.5], "expected": 49.5}, {"input": [49.5, -43.0], "expected": 49.5}, {"input": [49.5, -42.5], "expected": 49.5}, {"input": [49.5, -42.0], "expected": 49.5}, {"input": [49.5, -41.5], "expected": 49.5}, {"input": [49.5, -41.0], "expected": 49.5}, {"input": [49.5, -40.5], "expected": 49.5}, {"input": [49.5, -40.0], "expected": 49.5}, {"input": [49.5, -39.5], "expected": 49.5}, {"input": [49.5, -39.0], "expected": 49.5}, {"input": [49.5, -38.5], "expected": 49.5}, {"input": [49.5, -38.0], "expected": 49.5}, {"input": [49.5, -37.5], "expected": 49.5}, {"input": [49.5, -37.0], "expected": 49.5}, {"input": [49.5, -36.5], "expected": 49.5}, {"input": [49.5, -36.0], "expected": 49.5}, {"input": [49.5, -35.5], "expected": 49.5}, {"input": [49.5, -35.0], "expected": 49.5}, {"input": [49.5, -34.5], "expected": 49.5}, {"input": [49.5, -34.0], "expected": 49.5}, {"input": [49.5, -33.5], "expected": 49.5}, {"input": [49.5, -33.0], "expected": 49.5}, {"input": [49.5, -32.5], "expected": 49.5}, {"input": [49.5, -32.0], "expected": 49.5}, {"input": [49.5, -31.5], "expected": 49.5}, {"input": [49.5, -31.0], "expected": 49.5}, {"input": [49.5, -30.5], "expected": 49.5}, {"input": [49.5, -30.0], "expected": 49.5}, {"input": [49.5, -29.5], "expected": 49.5}, {"input": [49.5, -29.0], "expected": 49.5}, {"input": [49.5, -28.5], "expected": 49.5}, {"input": [49.5, -28.0], "expected": 49.5}, {"input": [49.5, -27.5], "expected": 49.5}, {"input": [49.5, -27.0], "expected": 49.5}, {"input": [49.5, -26.5], "expected": 49.5}, {"input": [49.5, -26.0], "expected": 49.5}, {"input": [49.5, -25.5], "expected": 49.5}, {"input": [49.5, -25.0], "expected": 49.5}, {"input": [49.5, -24.5], "expected": 49.5}, {"input": [49.5, -24.0], "expected": 49.5}, {"input": [49.5, -23.5], "expected": 49.5}, {"input": [49.5, -23.0], "expected": 49.5}, {"input": [49.5, -22.5], "expected": 49.5}, {"input": [49.5, -22.0], "expected": 49.5}, {"input": [49.5, -21.5], "expected": 49.5}, {"input": [49.5, -21.0], "expected": 49.5}, {"input": [49.5, -20.5], "expected": 49.5}, {"input": [49.5, -20.0], "expected": 49.5}, {"input": [49.5, -19.5], "expected": 49.5}, {"input": [49.5, -19.0], "expected": 49.5}, {"input": [49.5, -18.5], "expected": 49.5}, {"input": [49.5, -18.0], "expected": 49.5}, {"input": [49.5, -17.5], "expected": 49.5}, {"input": [49.5, -17.0], "expected": 49.5}, {"input": [49.5, -16.5], "expected": 49.5}, {"input": [49.5, -16.0], "expected": 49.5}, {"input": [49.5, -15.5], "expected": 49.5}, {"input": [49.5, -15.0], "expected": 49.5}, {"input": [49.5, -14.5], "expected": 49.5}, {"input": [49.5, -14.0], "expected": 49.5}, {"input": [49.5, -13.5], "expected": 49.5}, {"input": [49.5, -13.0], "expected": 49.5}, {"input": [49.5, -12.5], "expected": 49.5}, {"input": [49.5, -12.0], "expected": 49.5}, {"input": [49.5, -11.5], "expected": 49.5}, {"input": [49.5, -11.0], "expected": 49.5}, {"input": [49.5, -10.5], "expected": 49.5}, {"input": [49.5, -10.0], "expected": 49.5}, {"input": [49.5, -9.5], "expected": 49.5}, {"input": [49.5, -9.0], "expected": 49.5}, {"input": [49.5, -8.5], "expected": 49.5}, {"input": [49.5, -8.0], "expected": 49.5}, {"input": [49.5, -7.5], "expected": 49.5}, {"input": [49.5, -7.0], "expected": 49.5}, {"input": [49.5, -6.5], "expected": 49.5}, {"input": [49.5, -6.0], "expected": 49.5}, {"input": [49.5, -5.5], "expected": 49.5}, {"input": [49.5, -5.0], "expected": 49.5}, {"input": [49.5, -4.5], "expected": 49.5}, {"input": [49.5, -4.0], "expected": 49.5}, {"input": [49.5, -3.5], "expected": 49.5}, {"input": [49.5, -3.0], "expected": 49.5}, {"input": [49.5, -2.5], "expected": 49.5}, {"input": [49.5, -2.0], "expected": 49.5}, {"input": [49.5, -1.5], "expected": 49.5}, {"input": [49.5, -1.0], "expected": 49.5}, {"input": [49.5, -0.5], "expected": 49.5}, {"input": [49.5, 0.0], "expected": 49.5}, {"input": [49.5, 0.5], "expected": 49.5}, {"input": [49.5, 1.0], "expected": 49.5}, {"input": [49.5, 1.5], "expected": 49.5}, {"input": [49.5, 2.0], "expected": 49.5}, {"input": [49.5, 2.5], "expected": 49.5}, {"input": [49.5, 3.0], "expected": 49.5}, {"input": [49.5, 3.5], "expected": 49.5}, {"input": [49.5, 4.0], "expected": 49.5}, {"input": [49.5, 4.5], "expected": 49.5}, {"input": [49.5, 5.0], "expected": 49.5}, {"input": [49.5, 5.5], "expected": 49.5}, {"input": [49.5, 6.0], "expected": 49.5}, {"input": [49.5, 6.5], "expected": 49.5}, {"input": [49.5, 7.0], "expected": 49.5}, {"input": [49.5, 7.5], "expected": 49.5}, {"input": [49.5, 8.0], "expected": 49.5}, {"input": [49.5, 8.5], "expected": 49.5}, {"input": [49.5, 9.0], "expected": 49.5}, {"input": [49.5, 9.5], "expected": 49.5}, {"input": [49.5, 10.0], "expected": 49.5}, {"input": [49.5, 10.5], "expected": 49.5}, {"input": [49.5, 11.0], "expected": 49.5}, {"input": [49.5, 11.5], "expected": 49.5}, {"input": [49.5, 12.0], "expected": 49.5}, {"input": [49.5, 12.5], "expected": 49.5}, {"input": [49.5, 13.0], "expected": 49.5}, {"input": [49.5, 13.5], "expected": 49.5}, {"input": [49.5, 14.0], "expected": 49.5}, {"input": [49.5, 14.5], "expected": 49.5}, {"input": [49.5, 15.0], "expected": 49.5}, {"input": [49.5, 15.5], "expected": 49.5}, {"input": [49.5, 16.0], "expected": 49.5}, {"input": [49.5, 16.5], "expected": 49.50000000000001}, {"input": [49.5, 17.0], "expected": 49.50000000000001}, {"input": [49.5, 17.5], "expected": 49.500000000000014}, {"input": [49.5, 18.0], "expected": 49.50000000000002}, {"input": [49.5, 18.5], "expected": 49.500000000000036}, {"input": [49.5, 19.0], "expected": 49.50000000000006}, {"input": [49.5, 19.5], "expected": 49.50000000000009}, {"input": [49.5, 20.0], "expected": 49.500000000000156}, {"input": [49.5, 20.5], "expected": 49.500000000000256}, {"input": [49.5, 21.0], "expected": 49.50000000000042}, {"input": [49.5, 21.5], "expected": 49.50000000000069}, {"input": [49.5, 22.0], "expected": 49.50000000000114}, {"input": [49.5, 22.5], "expected": 49.50000000000188}, {"input": [49.5, 23.0], "expected": 49.5000000000031}, {"input": [49.5, 23.5], "expected": 49.50000000000511}, {"input": [49.5, 24.0], "expected": 49.50000000000842}, {"input": [49.5, 24.5], "expected": 49.50000000001389}, {"input": [49.5, 25.0], "expected": 49.5000000000229}, {"input": [49.5, 25.5], "expected": 49.50000000003775}, {"input": [49.5, 26.0], "expected": 49.50000000006224}, {"input": [49.5, 26.5], "expected": 49.50000000010262}, {"input": [49.5, 27.0], "expected": 49.50000000016919}, {"input": [49.5, 27.5], "expected": 49.500000000278945}, {"input": [49.5, 28.0], "expected": 49.500000000459906}, {"input": [49.5, 28.5], "expected": 49.500000000758256}, {"input": [49.5, 29.0], "expected": 49.50000000125015}, {"input": [49.5, 29.5], "expected": 49.50000000206116}, {"input": [49.5, 30.0], "expected": 49.50000000339827}, {"input": [49.5, 30.5], "expected": 49.50000000560279}, {"input": [49.5, 31.0], "expected": 49.500000009237446}, {"input": [49.5, 31.5], "expected": 49.50000001522998}, {"input": [49.5, 32.0], "expected": 49.50000002510999}, {"input": [49.5, 32.5], "expected": 49.500000041399375}, {"input": [49.5, 33.0], "expected": 49.50000006825603}, {"input": [49.5, 33.5], "expected": 49.50000011253517}, {"input": [49.5, 34.0], "expected": 49.50000018553912}, {"input": [49.5, 34.5], "expected": 49.500000305902276}, {"input": [49.5, 35.0], "expected": 49.50000050434753}, {"input": [49.5, 35.5], "expected": 49.500000831528375}, {"input": [49.5, 36.0], "expected": 49.500001370958145}, {"input": [49.5, 36.5], "expected": 49.50000226032685}, {"input": [49.5, 37.0], "expected": 49.50000372664623}, {"input": [49.5, 37.5], "expected": 49.50000614419348}, {"input": [49.5, 38.0], "expected": 49.50001013004229}, {"input": [49.5, 38.5], "expected": 49.50001670156132}, {"input": [49.5, 39.0], "expected": 49.50002753607023}, {"input": [49.5, 39.5], "expected": 49.50004539889922}, {"input": [49.5, 40.0], "expected": 49.50007484902863}, {"input": [49.5, 40.5], "expected": 49.50012340218972}, {"input": [49.5, 41.0], "expected": 49.50020344767213}, {"input": [49.5, 41.5], "expected": 49.5003354063729}, {"input": [49.5, 42.0], "expected": 49.50055293147536}, {"input": [49.5, 42.5], "expected": 49.50091146645377}, {"input": [49.5, 43.0], "expected": 49.50150231015976}, {"input": [49.5, 43.5], "expected": 49.50247568513773}, {"input": [49.5, 44.0], "expected": 49.50407844327057}, {"input": [49.5, 44.5], "expected": 49.50671534848912}, {"input": [49.5, 45.0], "expected": 49.5110477448486}, {"input": [49.5, 45.5], "expected": 49.51814992791781}, {"input": [49.5, 46.0], "expected": 49.52975041827262}, {"input": [49.5, 46.5], "expected": 49.548587351573744}, {"input": [49.5, 47.0], "expected": 49.57888973429255}, {"input": [49.5, 47.5], "expected": 49.62692801104297}, {"input": [49.5, 48.0], "expected": 49.70141327798275}, {"input": [49.5, 48.5], "expected": 49.81326168751822}, {"input": [49.5, 49.0], "expected": 49.97407698418011}, {"input": [49.5, 49.5], "expected": 50.19314718055995}, {"input": [49.5, 50.0], "expected": 50.47407698418011}, {"input": [49.5, 50.5], "expected": 50.81326168751822}, {"input": [49.5, 51.0], "expected": 51.20141327798275}, {"input": [49.5, 51.5], "expected": 51.62692801104297}, {"input": [49.5, 52.0], "expected": 52.07888973429255}, {"input": [49.5, 52.5], "expected": 52.548587351573744}, {"input": [49.5, 53.0], "expected": 53.02975041827262}, {"input": [49.5, 53.5], "expected": 53.51814992791781}, {"input": [49.5, 54.0], "expected": 54.0110477448486}, {"input": [49.5, 54.5], "expected": 54.50671534848912}, {"input": [49.5, 55.0], "expected": 55.00407844327057}, {"input": [49.5, 55.5], "expected": 55.50247568513773}, {"input": [49.5, 56.0], "expected": 56.00150231015976}, {"input": [49.5, 56.5], "expected": 56.50091146645377}, {"input": [49.5, 57.0], "expected": 57.00055293147536}, {"input": [49.5, 57.5], "expected": 57.5003354063729}, {"input": [49.5, 58.0], "expected": 58.00020344767213}, {"input": [49.5, 58.5], "expected": 58.50012340218972}, {"input": [49.5, 59.0], "expected": 59.00007484902863}, {"input": [49.5, 59.5], "expected": 59.50004539889922}, {"input": [49.5, 60.0], "expected": 60.00002753607023}, {"input": [49.5, 60.5], "expected": 60.50001670156132}, {"input": [49.5, 61.0], "expected": 61.00001013004229}, {"input": [49.5, 61.5], "expected": 61.50000614419348}, {"input": [49.5, 62.0], "expected": 62.00000372664623}, {"input": [49.5, 62.5], "expected": 62.50000226032685}, {"input": [49.5, 63.0], "expected": 63.000001370958145}, {"input": [49.5, 63.5], "expected": 63.500000831528375}, {"input": [49.5, 64.0], "expected": 64.00000050434754}, {"input": [49.5, 64.5], "expected": 64.50000030590228}, {"input": [49.5, 65.0], "expected": 65.00000018553912}, {"input": [49.5, 65.5], "expected": 65.50000011253516}, {"input": [49.5, 66.0], "expected": 66.00000006825603}, {"input": [49.5, 66.5], "expected": 66.50000004139937}, {"input": [49.5, 67.0], "expected": 67.00000002511}, {"input": [49.5, 67.5], "expected": 67.50000001522999}, {"input": [49.5, 68.0], "expected": 68.00000000923745}, {"input": [49.5, 68.5], "expected": 68.5000000056028}, {"input": [49.5, 69.0], "expected": 69.00000000339827}, {"input": [49.5, 69.5], "expected": 69.50000000206116}, {"input": [49.5, 70.0], "expected": 70.00000000125016}, {"input": [49.5, 70.5], "expected": 70.50000000075826}, {"input": [49.5, 71.0], "expected": 71.0000000004599}, {"input": [49.5, 71.5], "expected": 71.50000000027894}, {"input": [49.5, 72.0], "expected": 72.0000000001692}, {"input": [49.5, 72.5], "expected": 72.50000000010262}, {"input": [49.5, 73.0], "expected": 73.00000000006224}, {"input": [49.5, 73.5], "expected": 73.50000000003776}, {"input": [49.5, 74.0], "expected": 74.0000000000229}, {"input": [49.5, 74.5], "expected": 74.50000000001388}, {"input": [49.5, 75.0], "expected": 75.00000000000843}, {"input": [49.5, 75.5], "expected": 75.50000000000512}, {"input": [49.5, 76.0], "expected": 76.0000000000031}, {"input": [49.5, 76.5], "expected": 76.50000000000188}, {"input": [49.5, 77.0], "expected": 77.00000000000114}, {"input": [49.5, 77.5], "expected": 77.5000000000007}, {"input": [49.5, 78.0], "expected": 78.00000000000043}, {"input": [49.5, 78.5], "expected": 78.50000000000026}, {"input": [49.5, 79.0], "expected": 79.00000000000016}, {"input": [49.5, 79.5], "expected": 79.5000000000001}, {"input": [49.5, 80.0], "expected": 80.00000000000006}, {"input": [49.5, 80.5], "expected": 80.50000000000003}, {"input": [49.5, 81.0], "expected": 81.00000000000001}, {"input": [49.5, 81.5], "expected": 81.50000000000001}, {"input": [49.5, 82.0], "expected": 82.00000000000001}, {"input": [49.5, 82.5], "expected": 82.5}, {"input": [49.5, 83.0], "expected": 83.0}, {"input": [49.5, 83.5], "expected": 83.5}, {"input": [49.5, 84.0], "expected": 84.0}, {"input": [49.5, 84.5], "expected": 84.5}, {"input": [49.5, 85.0], "expected": 85.0}, {"input": [49.5, 85.5], "expected": 85.5}, {"input": [49.5, 86.0], "expected": 86.0}, {"input": [49.5, 86.5], "expected": 86.5}, {"input": [49.5, 87.0], "expected": 87.0}, {"input": [49.5, 87.5], "expected": 87.5}, {"input": [49.5, 88.0], "expected": 88.0}, {"input": [49.5, 88.5], "expected": 88.5}, {"input": [49.5, 89.0], "expected": 89.0}, {"input": [49.5, 89.5], "expected": 89.5}, {"input": [49.5, 90.0], "expected": 90.0}, {"input": [49.5, 90.5], "expected": 90.5}, {"input": [49.5, 91.0], "expected": 91.0}, {"input": [49.5, 91.5], "expected": 91.5}, {"input": [49.5, 92.0], "expected": 92.0}, {"input": [49.5, 92.5], "expected": 92.5}, {"input": [49.5, 93.0], "expected": 93.0}, {"input": [49.5, 93.5], "expected": 93.5}, {"input": [49.5, 94.0], "expected": 94.0}, {"input": [49.5, 94.5], "expected": 94.5}, {"input": [49.5, 95.0], "expected": 95.0}, {"input": [49.5, 95.5], "expected": 95.5}, {"input": [49.5, 96.0], "expected": 96.0}, {"input": [49.5, 96.5], "expected": 96.5}, {"input": [49.5, 97.0], "expected": 97.0}, {"input": [49.5, 97.5], "expected": 97.5}, {"input": [49.5, 98.0], "expected": 98.0}, {"input": [49.5, 98.5], "expected": 98.5}, {"input": [49.5, 99.0], "expected": 99.0}, {"input": [49.5, 99.5], "expected": 99.5}, {"input": [50.0, -100.0], "expected": 50.0}, {"input": [50.0, -99.5], "expected": 50.0}, {"input": [50.0, -99.0], "expected": 50.0}, {"input": [50.0, -98.5], "expected": 50.0}, {"input": [50.0, -98.0], "expected": 50.0}, {"input": [50.0, -97.5], "expected": 50.0}, {"input": [50.0, -97.0], "expected": 50.0}, {"input": [50.0, -96.5], "expected": 50.0}, {"input": [50.0, -96.0], "expected": 50.0}, {"input": [50.0, -95.5], "expected": 50.0}, {"input": [50.0, -95.0], "expected": 50.0}, {"input": [50.0, -94.5], "expected": 50.0}, {"input": [50.0, -94.0], "expected": 50.0}, {"input": [50.0, -93.5], "expected": 50.0}, {"input": [50.0, -93.0], "expected": 50.0}, {"input": [50.0, -92.5], "expected": 50.0}, {"input": [50.0, -92.0], "expected": 50.0}, {"input": [50.0, -91.5], "expected": 50.0}, {"input": [50.0, -91.0], "expected": 50.0}, {"input": [50.0, -90.5], "expected": 50.0}, {"input": [50.0, -90.0], "expected": 50.0}, {"input": [50.0, -89.5], "expected": 50.0}, {"input": [50.0, -89.0], "expected": 50.0}, {"input": [50.0, -88.5], "expected": 50.0}, {"input": [50.0, -88.0], "expected": 50.0}, {"input": [50.0, -87.5], "expected": 50.0}, {"input": [50.0, -87.0], "expected": 50.0}, {"input": [50.0, -86.5], "expected": 50.0}, {"input": [50.0, -86.0], "expected": 50.0}, {"input": [50.0, -85.5], "expected": 50.0}, {"input": [50.0, -85.0], "expected": 50.0}, {"input": [50.0, -84.5], "expected": 50.0}, {"input": [50.0, -84.0], "expected": 50.0}, {"input": [50.0, -83.5], "expected": 50.0}, {"input": [50.0, -83.0], "expected": 50.0}, {"input": [50.0, -82.5], "expected": 50.0}, {"input": [50.0, -82.0], "expected": 50.0}, {"input": [50.0, -81.5], "expected": 50.0}, {"input": [50.0, -81.0], "expected": 50.0}, {"input": [50.0, -80.5], "expected": 50.0}, {"input": [50.0, -80.0], "expected": 50.0}, {"input": [50.0, -79.5], "expected": 50.0}, {"input": [50.0, -79.0], "expected": 50.0}, {"input": [50.0, -78.5], "expected": 50.0}, {"input": [50.0, -78.0], "expected": 50.0}, {"input": [50.0, -77.5], "expected": 50.0}, {"input": [50.0, -77.0], "expected": 50.0}, {"input": [50.0, -76.5], "expected": 50.0}, {"input": [50.0, -76.0], "expected": 50.0}, {"input": [50.0, -75.5], "expected": 50.0}, {"input": [50.0, -75.0], "expected": 50.0}, {"input": [50.0, -74.5], "expected": 50.0}, {"input": [50.0, -74.0], "expected": 50.0}, {"input": [50.0, -73.5], "expected": 50.0}, {"input": [50.0, -73.0], "expected": 50.0}, {"input": [50.0, -72.5], "expected": 50.0}, {"input": [50.0, -72.0], "expected": 50.0}, {"input": [50.0, -71.5], "expected": 50.0}, {"input": [50.0, -71.0], "expected": 50.0}, {"input": [50.0, -70.5], "expected": 50.0}, {"input": [50.0, -70.0], "expected": 50.0}, {"input": [50.0, -69.5], "expected": 50.0}, {"input": [50.0, -69.0], "expected": 50.0}, {"input": [50.0, -68.5], "expected": 50.0}, {"input": [50.0, -68.0], "expected": 50.0}, {"input": [50.0, -67.5], "expected": 50.0}, {"input": [50.0, -67.0], "expected": 50.0}, {"input": [50.0, -66.5], "expected": 50.0}, {"input": [50.0, -66.0], "expected": 50.0}, {"input": [50.0, -65.5], "expected": 50.0}, {"input": [50.0, -65.0], "expected": 50.0}, {"input": [50.0, -64.5], "expected": 50.0}, {"input": [50.0, -64.0], "expected": 50.0}, {"input": [50.0, -63.5], "expected": 50.0}, {"input": [50.0, -63.0], "expected": 50.0}, {"input": [50.0, -62.5], "expected": 50.0}, {"input": [50.0, -62.0], "expected": 50.0}, {"input": [50.0, -61.5], "expected": 50.0}, {"input": [50.0, -61.0], "expected": 50.0}, {"input": [50.0, -60.5], "expected": 50.0}, {"input": [50.0, -60.0], "expected": 50.0}, {"input": [50.0, -59.5], "expected": 50.0}, {"input": [50.0, -59.0], "expected": 50.0}, {"input": [50.0, -58.5], "expected": 50.0}, {"input": [50.0, -58.0], "expected": 50.0}, {"input": [50.0, -57.5], "expected": 50.0}, {"input": [50.0, -57.0], "expected": 50.0}, {"input": [50.0, -56.5], "expected": 50.0}, {"input": [50.0, -56.0], "expected": 50.0}, {"input": [50.0, -55.5], "expected": 50.0}, {"input": [50.0, -55.0], "expected": 50.0}, {"input": [50.0, -54.5], "expected": 50.0}, {"input": [50.0, -54.0], "expected": 50.0}, {"input": [50.0, -53.5], "expected": 50.0}, {"input": [50.0, -53.0], "expected": 50.0}, {"input": [50.0, -52.5], "expected": 50.0}, {"input": [50.0, -52.0], "expected": 50.0}, {"input": [50.0, -51.5], "expected": 50.0}, {"input": [50.0, -51.0], "expected": 50.0}, {"input": [50.0, -50.5], "expected": 50.0}, {"input": [50.0, -50.0], "expected": 50.0}, {"input": [50.0, -49.5], "expected": 50.0}, {"input": [50.0, -49.0], "expected": 50.0}, {"input": [50.0, -48.5], "expected": 50.0}, {"input": [50.0, -48.0], "expected": 50.0}, {"input": [50.0, -47.5], "expected": 50.0}, {"input": [50.0, -47.0], "expected": 50.0}, {"input": [50.0, -46.5], "expected": 50.0}, {"input": [50.0, -46.0], "expected": 50.0}, {"input": [50.0, -45.5], "expected": 50.0}, {"input": [50.0, -45.0], "expected": 50.0}, {"input": [50.0, -44.5], "expected": 50.0}, {"input": [50.0, -44.0], "expected": 50.0}, {"input": [50.0, -43.5], "expected": 50.0}, {"input": [50.0, -43.0], "expected": 50.0}, {"input": [50.0, -42.5], "expected": 50.0}, {"input": [50.0, -42.0], "expected": 50.0}, {"input": [50.0, -41.5], "expected": 50.0}, {"input": [50.0, -41.0], "expected": 50.0}, {"input": [50.0, -40.5], "expected": 50.0}, {"input": [50.0, -40.0], "expected": 50.0}, {"input": [50.0, -39.5], "expected": 50.0}, {"input": [50.0, -39.0], "expected": 50.0}, {"input": [50.0, -38.5], "expected": 50.0}, {"input": [50.0, -38.0], "expected": 50.0}, {"input": [50.0, -37.5], "expected": 50.0}, {"input": [50.0, -37.0], "expected": 50.0}, {"input": [50.0, -36.5], "expected": 50.0}, {"input": [50.0, -36.0], "expected": 50.0}, {"input": [50.0, -35.5], "expected": 50.0}, {"input": [50.0, -35.0], "expected": 50.0}, {"input": [50.0, -34.5], "expected": 50.0}, {"input": [50.0, -34.0], "expected": 50.0}, {"input": [50.0, -33.5], "expected": 50.0}, {"input": [50.0, -33.0], "expected": 50.0}, {"input": [50.0, -32.5], "expected": 50.0}, {"input": [50.0, -32.0], "expected": 50.0}, {"input": [50.0, -31.5], "expected": 50.0}, {"input": [50.0, -31.0], "expected": 50.0}, {"input": [50.0, -30.5], "expected": 50.0}, {"input": [50.0, -30.0], "expected": 50.0}, {"input": [50.0, -29.5], "expected": 50.0}, {"input": [50.0, -29.0], "expected": 50.0}, {"input": [50.0, -28.5], "expected": 50.0}, {"input": [50.0, -28.0], "expected": 50.0}, {"input": [50.0, -27.5], "expected": 50.0}, {"input": [50.0, -27.0], "expected": 50.0}, {"input": [50.0, -26.5], "expected": 50.0}, {"input": [50.0, -26.0], "expected": 50.0}, {"input": [50.0, -25.5], "expected": 50.0}, {"input": [50.0, -25.0], "expected": 50.0}, {"input": [50.0, -24.5], "expected": 50.0}, {"input": [50.0, -24.0], "expected": 50.0}, {"input": [50.0, -23.5], "expected": 50.0}, {"input": [50.0, -23.0], "expected": 50.0}, {"input": [50.0, -22.5], "expected": 50.0}, {"input": [50.0, -22.0], "expected": 50.0}, {"input": [50.0, -21.5], "expected": 50.0}, {"input": [50.0, -21.0], "expected": 50.0}, {"input": [50.0, -20.5], "expected": 50.0}, {"input": [50.0, -20.0], "expected": 50.0}, {"input": [50.0, -19.5], "expected": 50.0}, {"input": [50.0, -19.0], "expected": 50.0}, {"input": [50.0, -18.5], "expected": 50.0}, {"input": [50.0, -18.0], "expected": 50.0}, {"input": [50.0, -17.5], "expected": 50.0}, {"input": [50.0, -17.0], "expected": 50.0}, {"input": [50.0, -16.5], "expected": 50.0}, {"input": [50.0, -16.0], "expected": 50.0}, {"input": [50.0, -15.5], "expected": 50.0}, {"input": [50.0, -15.0], "expected": 50.0}, {"input": [50.0, -14.5], "expected": 50.0}, {"input": [50.0, -14.0], "expected": 50.0}, {"input": [50.0, -13.5], "expected": 50.0}, {"input": [50.0, -13.0], "expected": 50.0}, {"input": [50.0, -12.5], "expected": 50.0}, {"input": [50.0, -12.0], "expected": 50.0}, {"input": [50.0, -11.5], "expected": 50.0}, {"input": [50.0, -11.0], "expected": 50.0}, {"input": [50.0, -10.5], "expected": 50.0}, {"input": [50.0, -10.0], "expected": 50.0}, {"input": [50.0, -9.5], "expected": 50.0}, {"input": [50.0, -9.0], "expected": 50.0}, {"input": [50.0, -8.5], "expected": 50.0}, {"input": [50.0, -8.0], "expected": 50.0}, {"input": [50.0, -7.5], "expected": 50.0}, {"input": [50.0, -7.0], "expected": 50.0}, {"input": [50.0, -6.5], "expected": 50.0}, {"input": [50.0, -6.0], "expected": 50.0}, {"input": [50.0, -5.5], "expected": 50.0}, {"input": [50.0, -5.0], "expected": 50.0}, {"input": [50.0, -4.5], "expected": 50.0}, {"input": [50.0, -4.0], "expected": 50.0}, {"input": [50.0, -3.5], "expected": 50.0}, {"input": [50.0, -3.0], "expected": 50.0}, {"input": [50.0, -2.5], "expected": 50.0}, {"input": [50.0, -2.0], "expected": 50.0}, {"input": [50.0, -1.5], "expected": 50.0}, {"input": [50.0, -1.0], "expected": 50.0}, {"input": [50.0, -0.5], "expected": 50.0}, {"input": [50.0, 0.0], "expected": 50.0}, {"input": [50.0, 0.5], "expected": 50.0}, {"input": [50.0, 1.0], "expected": 50.0}, {"input": [50.0, 1.5], "expected": 50.0}, {"input": [50.0, 2.0], "expected": 50.0}, {"input": [50.0, 2.5], "expected": 50.0}, {"input": [50.0, 3.0], "expected": 50.0}, {"input": [50.0, 3.5], "expected": 50.0}, {"input": [50.0, 4.0], "expected": 50.0}, {"input": [50.0, 4.5], "expected": 50.0}, {"input": [50.0, 5.0], "expected": 50.0}, {"input": [50.0, 5.5], "expected": 50.0}, {"input": [50.0, 6.0], "expected": 50.0}, {"input": [50.0, 6.5], "expected": 50.0}, {"input": [50.0, 7.0], "expected": 50.0}, {"input": [50.0, 7.5], "expected": 50.0}, {"input": [50.0, 8.0], "expected": 50.0}, {"input": [50.0, 8.5], "expected": 50.0}, {"input": [50.0, 9.0], "expected": 50.0}, {"input": [50.0, 9.5], "expected": 50.0}, {"input": [50.0, 10.0], "expected": 50.0}, {"input": [50.0, 10.5], "expected": 50.0}, {"input": [50.0, 11.0], "expected": 50.0}, {"input": [50.0, 11.5], "expected": 50.0}, {"input": [50.0, 12.0], "expected": 50.0}, {"input": [50.0, 12.5], "expected": 50.0}, {"input": [50.0, 13.0], "expected": 50.0}, {"input": [50.0, 13.5], "expected": 50.0}, {"input": [50.0, 14.0], "expected": 50.0}, {"input": [50.0, 14.5], "expected": 50.0}, {"input": [50.0, 15.0], "expected": 50.0}, {"input": [50.0, 15.5], "expected": 50.0}, {"input": [50.0, 16.0], "expected": 50.0}, {"input": [50.0, 16.5], "expected": 50.0}, {"input": [50.0, 17.0], "expected": 50.00000000000001}, {"input": [50.0, 17.5], "expected": 50.00000000000001}, {"input": [50.0, 18.0], "expected": 50.000000000000014}, {"input": [50.0, 18.5], "expected": 50.00000000000002}, {"input": [50.0, 19.0], "expected": 50.000000000000036}, {"input": [50.0, 19.5], "expected": 50.00000000000006}, {"input": [50.0, 20.0], "expected": 50.00000000000009}, {"input": [50.0, 20.5], "expected": 50.000000000000156}, {"input": [50.0, 21.0], "expected": 50.000000000000256}, {"input": [50.0, 21.5], "expected": 50.00000000000042}, {"input": [50.0, 22.0], "expected": 50.00000000000069}, {"input": [50.0, 22.5], "expected": 50.00000000000114}, {"input": [50.0, 23.0], "expected": 50.00000000000188}, {"input": [50.0, 23.5], "expected": 50.0000000000031}, {"input": [50.0, 24.0], "expected": 50.00000000000511}, {"input": [50.0, 24.5], "expected": 50.00000000000842}, {"input": [50.0, 25.0], "expected": 50.00000000001389}, {"input": [50.0, 25.5], "expected": 50.0000000000229}, {"input": [50.0, 26.0], "expected": 50.00000000003775}, {"input": [50.0, 26.5], "expected": 50.00000000006224}, {"input": [50.0, 27.0], "expected": 50.00000000010262}, {"input": [50.0, 27.5], "expected": 50.00000000016919}, {"input": [50.0, 28.0], "expected": 50.000000000278945}, {"input": [50.0, 28.5], "expected": 50.000000000459906}, {"input": [50.0, 29.0], "expected": 50.000000000758256}, {"input": [50.0, 29.5], "expected": 50.00000000125015}, {"input": [50.0, 30.0], "expected": 50.00000000206116}, {"input": [50.0, 30.5], "expected": 50.00000000339827}, {"input": [50.0, 31.0], "expected": 50.00000000560279}, {"input": [50.0, 31.5], "expected": 50.000000009237446}, {"input": [50.0, 32.0], "expected": 50.00000001522998}, {"input": [50.0, 32.5], "expected": 50.00000002510999}, {"input": [50.0, 33.0], "expected": 50.000000041399375}, {"input": [50.0, 33.5], "expected": 50.00000006825603}, {"input": [50.0, 34.0], "expected": 50.00000011253517}, {"input": [50.0, 34.5], "expected": 50.00000018553912}, {"input": [50.0, 35.0], "expected": 50.000000305902276}, {"input": [50.0, 35.5], "expected": 50.00000050434753}, {"input": [50.0, 36.0], "expected": 50.000000831528375}, {"input": [50.0, 36.5], "expected": 50.000001370958145}, {"input": [50.0, 37.0], "expected": 50.00000226032685}, {"input": [50.0, 37.5], "expected": 50.00000372664623}, {"input": [50.0, 38.0], "expected": 50.00000614419348}, {"input": [50.0, 38.5], "expected": 50.00001013004229}, {"input": [50.0, 39.0], "expected": 50.00001670156132}, {"input": [50.0, 39.5], "expected": 50.00002753607023}, {"input": [50.0, 40.0], "expected": 50.00004539889922}, {"input": [50.0, 40.5], "expected": 50.00007484902863}, {"input": [50.0, 41.0], "expected": 50.00012340218972}, {"input": [50.0, 41.5], "expected": 50.00020344767213}, {"input": [50.0, 42.0], "expected": 50.0003354063729}, {"input": [50.0, 42.5], "expected": 50.00055293147536}, {"input": [50.0, 43.0], "expected": 50.00091146645377}, {"input": [50.0, 43.5], "expected": 50.00150231015976}, {"input": [50.0, 44.0], "expected": 50.00247568513773}, {"input": [50.0, 44.5], "expected": 50.00407844327057}, {"input": [50.0, 45.0], "expected": 50.00671534848912}, {"input": [50.0, 45.5], "expected": 50.0110477448486}, {"input": [50.0, 46.0], "expected": 50.01814992791781}, {"input": [50.0, 46.5], "expected": 50.02975041827262}, {"input": [50.0, 47.0], "expected": 50.048587351573744}, {"input": [50.0, 47.5], "expected": 50.07888973429255}, {"input": [50.0, 48.0], "expected": 50.12692801104297}, {"input": [50.0, 48.5], "expected": 50.20141327798275}, {"input": [50.0, 49.0], "expected": 50.31326168751822}, {"input": [50.0, 49.5], "expected": 50.47407698418011}, {"input": [50.0, 50.0], "expected": 50.69314718055995}, {"input": [50.0, 50.5], "expected": 50.97407698418011}, {"input": [50.0, 51.0], "expected": 51.31326168751822}, {"input": [50.0, 51.5], "expected": 51.70141327798275}, {"input": [50.0, 52.0], "expected": 52.12692801104297}, {"input": [50.0, 52.5], "expected": 52.57888973429255}, {"input": [50.0, 53.0], "expected": 53.048587351573744}, {"input": [50.0, 53.5], "expected": 53.52975041827262}, {"input": [50.0, 54.0], "expected": 54.01814992791781}, {"input": [50.0, 54.5], "expected": 54.5110477448486}, {"input": [50.0, 55.0], "expected": 55.00671534848912}, {"input": [50.0, 55.5], "expected": 55.50407844327057}, {"input": [50.0, 56.0], "expected": 56.00247568513773}, {"input": [50.0, 56.5], "expected": 56.50150231015976}, {"input": [50.0, 57.0], "expected": 57.00091146645377}, {"input": [50.0, 57.5], "expected": 57.50055293147536}, {"input": [50.0, 58.0], "expected": 58.0003354063729}, {"input": [50.0, 58.5], "expected": 58.50020344767213}, {"input": [50.0, 59.0], "expected": 59.00012340218972}, {"input": [50.0, 59.5], "expected": 59.50007484902863}, {"input": [50.0, 60.0], "expected": 60.00004539889922}, {"input": [50.0, 60.5], "expected": 60.50002753607023}, {"input": [50.0, 61.0], "expected": 61.00001670156132}, {"input": [50.0, 61.5], "expected": 61.50001013004229}, {"input": [50.0, 62.0], "expected": 62.00000614419348}, {"input": [50.0, 62.5], "expected": 62.50000372664623}, {"input": [50.0, 63.0], "expected": 63.00000226032685}, {"input": [50.0, 63.5], "expected": 63.500001370958145}, {"input": [50.0, 64.0], "expected": 64.00000083152837}, {"input": [50.0, 64.5], "expected": 64.50000050434754}, {"input": [50.0, 65.0], "expected": 65.00000030590228}, {"input": [50.0, 65.5], "expected": 65.50000018553912}, {"input": [50.0, 66.0], "expected": 66.00000011253516}, {"input": [50.0, 66.5], "expected": 66.50000006825603}, {"input": [50.0, 67.0], "expected": 67.00000004139937}, {"input": [50.0, 67.5], "expected": 67.50000002511}, {"input": [50.0, 68.0], "expected": 68.00000001522999}, {"input": [50.0, 68.5], "expected": 68.50000000923745}, {"input": [50.0, 69.0], "expected": 69.0000000056028}, {"input": [50.0, 69.5], "expected": 69.50000000339827}, {"input": [50.0, 70.0], "expected": 70.00000000206116}, {"input": [50.0, 70.5], "expected": 70.50000000125016}, {"input": [50.0, 71.0], "expected": 71.00000000075826}, {"input": [50.0, 71.5], "expected": 71.5000000004599}, {"input": [50.0, 72.0], "expected": 72.00000000027894}, {"input": [50.0, 72.5], "expected": 72.5000000001692}, {"input": [50.0, 73.0], "expected": 73.00000000010262}, {"input": [50.0, 73.5], "expected": 73.50000000006224}, {"input": [50.0, 74.0], "expected": 74.00000000003776}, {"input": [50.0, 74.5], "expected": 74.5000000000229}, {"input": [50.0, 75.0], "expected": 75.00000000001388}, {"input": [50.0, 75.5], "expected": 75.50000000000843}, {"input": [50.0, 76.0], "expected": 76.00000000000512}, {"input": [50.0, 76.5], "expected": 76.5000000000031}, {"input": [50.0, 77.0], "expected": 77.00000000000188}, {"input": [50.0, 77.5], "expected": 77.50000000000114}, {"input": [50.0, 78.0], "expected": 78.0000000000007}, {"input": [50.0, 78.5], "expected": 78.50000000000043}, {"input": [50.0, 79.0], "expected": 79.00000000000026}, {"input": [50.0, 79.5], "expected": 79.50000000000016}, {"input": [50.0, 80.0], "expected": 80.0000000000001}, {"input": [50.0, 80.5], "expected": 80.50000000000006}, {"input": [50.0, 81.0], "expected": 81.00000000000003}, {"input": [50.0, 81.5], "expected": 81.50000000000001}, {"input": [50.0, 82.0], "expected": 82.00000000000001}, {"input": [50.0, 82.5], "expected": 82.50000000000001}, {"input": [50.0, 83.0], "expected": 83.0}, {"input": [50.0, 83.5], "expected": 83.5}, {"input": [50.0, 84.0], "expected": 84.0}, {"input": [50.0, 84.5], "expected": 84.5}, {"input": [50.0, 85.0], "expected": 85.0}, {"input": [50.0, 85.5], "expected": 85.5}, {"input": [50.0, 86.0], "expected": 86.0}, {"input": [50.0, 86.5], "expected": 86.5}, {"input": [50.0, 87.0], "expected": 87.0}, {"input": [50.0, 87.5], "expected": 87.5}, {"input": [50.0, 88.0], "expected": 88.0}, {"input": [50.0, 88.5], "expected": 88.5}, {"input": [50.0, 89.0], "expected": 89.0}, {"input": [50.0, 89.5], "expected": 89.5}, {"input": [50.0, 90.0], "expected": 90.0}, {"input": [50.0, 90.5], "expected": 90.5}, {"input": [50.0, 91.0], "expected": 91.0}, {"input": [50.0, 91.5], "expected": 91.5}, {"input": [50.0, 92.0], "expected": 92.0}, {"input": [50.0, 92.5], "expected": 92.5}, {"input": [50.0, 93.0], "expected": 93.0}, {"input": [50.0, 93.5], "expected": 93.5}, {"input": [50.0, 94.0], "expected": 94.0}, {"input": [50.0, 94.5], "expected": 94.5}, {"input": [50.0, 95.0], "expected": 95.0}, {"input": [50.0, 95.5], "expected": 95.5}, {"input": [50.0, 96.0], "expected": 96.0}, {"input": [50.0, 96.5], "expected": 96.5}, {"input": [50.0, 97.0], "expected": 97.0}, {"input": [50.0, 97.5], "expected": 97.5}, {"input": [50.0, 98.0], "expected": 98.0}, {"input": [50.0, 98.5], "expected": 98.5}, {"input": [50.0, 99.0], "expected": 99.0}, {"input": [50.0, 99.5], "expected": 99.5}, {"input": [50.5, -100.0], "expected": 50.5}, {"input": [50.5, -99.5], "expected": 50.5}, {"input": [50.5, -99.0], "expected": 50.5}, {"input": [50.5, -98.5], "expected": 50.5}, {"input": [50.5, -98.0], "expected": 50.5}, {"input": [50.5, -97.5], "expected": 50.5}, {"input": [50.5, -97.0], "expected": 50.5}, {"input": [50.5, -96.5], "expected": 50.5}, {"input": [50.5, -96.0], "expected": 50.5}, {"input": [50.5, -95.5], "expected": 50.5}, {"input": [50.5, -95.0], "expected": 50.5}, {"input": [50.5, -94.5], "expected": 50.5}, {"input": [50.5, -94.0], "expected": 50.5}, {"input": [50.5, -93.5], "expected": 50.5}, {"input": [50.5, -93.0], "expected": 50.5}, {"input": [50.5, -92.5], "expected": 50.5}, {"input": [50.5, -92.0], "expected": 50.5}, {"input": [50.5, -91.5], "expected": 50.5}, {"input": [50.5, -91.0], "expected": 50.5}, {"input": [50.5, -90.5], "expected": 50.5}, {"input": [50.5, -90.0], "expected": 50.5}, {"input": [50.5, -89.5], "expected": 50.5}, {"input": [50.5, -89.0], "expected": 50.5}, {"input": [50.5, -88.5], "expected": 50.5}, {"input": [50.5, -88.0], "expected": 50.5}, {"input": [50.5, -87.5], "expected": 50.5}, {"input": [50.5, -87.0], "expected": 50.5}, {"input": [50.5, -86.5], "expected": 50.5}, {"input": [50.5, -86.0], "expected": 50.5}, {"input": [50.5, -85.5], "expected": 50.5}, {"input": [50.5, -85.0], "expected": 50.5}, {"input": [50.5, -84.5], "expected": 50.5}, {"input": [50.5, -84.0], "expected": 50.5}, {"input": [50.5, -83.5], "expected": 50.5}, {"input": [50.5, -83.0], "expected": 50.5}, {"input": [50.5, -82.5], "expected": 50.5}, {"input": [50.5, -82.0], "expected": 50.5}, {"input": [50.5, -81.5], "expected": 50.5}, {"input": [50.5, -81.0], "expected": 50.5}, {"input": [50.5, -80.5], "expected": 50.5}, {"input": [50.5, -80.0], "expected": 50.5}, {"input": [50.5, -79.5], "expected": 50.5}, {"input": [50.5, -79.0], "expected": 50.5}, {"input": [50.5, -78.5], "expected": 50.5}, {"input": [50.5, -78.0], "expected": 50.5}, {"input": [50.5, -77.5], "expected": 50.5}, {"input": [50.5, -77.0], "expected": 50.5}, {"input": [50.5, -76.5], "expected": 50.5}, {"input": [50.5, -76.0], "expected": 50.5}, {"input": [50.5, -75.5], "expected": 50.5}, {"input": [50.5, -75.0], "expected": 50.5}, {"input": [50.5, -74.5], "expected": 50.5}, {"input": [50.5, -74.0], "expected": 50.5}, {"input": [50.5, -73.5], "expected": 50.5}, {"input": [50.5, -73.0], "expected": 50.5}, {"input": [50.5, -72.5], "expected": 50.5}, {"input": [50.5, -72.0], "expected": 50.5}, {"input": [50.5, -71.5], "expected": 50.5}, {"input": [50.5, -71.0], "expected": 50.5}, {"input": [50.5, -70.5], "expected": 50.5}, {"input": [50.5, -70.0], "expected": 50.5}, {"input": [50.5, -69.5], "expected": 50.5}, {"input": [50.5, -69.0], "expected": 50.5}, {"input": [50.5, -68.5], "expected": 50.5}, {"input": [50.5, -68.0], "expected": 50.5}, {"input": [50.5, -67.5], "expected": 50.5}, {"input": [50.5, -67.0], "expected": 50.5}, {"input": [50.5, -66.5], "expected": 50.5}, {"input": [50.5, -66.0], "expected": 50.5}, {"input": [50.5, -65.5], "expected": 50.5}, {"input": [50.5, -65.0], "expected": 50.5}, {"input": [50.5, -64.5], "expected": 50.5}, {"input": [50.5, -64.0], "expected": 50.5}, {"input": [50.5, -63.5], "expected": 50.5}, {"input": [50.5, -63.0], "expected": 50.5}, {"input": [50.5, -62.5], "expected": 50.5}, {"input": [50.5, -62.0], "expected": 50.5}, {"input": [50.5, -61.5], "expected": 50.5}, {"input": [50.5, -61.0], "expected": 50.5}, {"input": [50.5, -60.5], "expected": 50.5}, {"input": [50.5, -60.0], "expected": 50.5}, {"input": [50.5, -59.5], "expected": 50.5}, {"input": [50.5, -59.0], "expected": 50.5}, {"input": [50.5, -58.5], "expected": 50.5}, {"input": [50.5, -58.0], "expected": 50.5}, {"input": [50.5, -57.5], "expected": 50.5}, {"input": [50.5, -57.0], "expected": 50.5}, {"input": [50.5, -56.5], "expected": 50.5}, {"input": [50.5, -56.0], "expected": 50.5}, {"input": [50.5, -55.5], "expected": 50.5}, {"input": [50.5, -55.0], "expected": 50.5}, {"input": [50.5, -54.5], "expected": 50.5}, {"input": [50.5, -54.0], "expected": 50.5}, {"input": [50.5, -53.5], "expected": 50.5}, {"input": [50.5, -53.0], "expected": 50.5}, {"input": [50.5, -52.5], "expected": 50.5}, {"input": [50.5, -52.0], "expected": 50.5}, {"input": [50.5, -51.5], "expected": 50.5}, {"input": [50.5, -51.0], "expected": 50.5}, {"input": [50.5, -50.5], "expected": 50.5}, {"input": [50.5, -50.0], "expected": 50.5}, {"input": [50.5, -49.5], "expected": 50.5}, {"input": [50.5, -49.0], "expected": 50.5}, {"input": [50.5, -48.5], "expected": 50.5}, {"input": [50.5, -48.0], "expected": 50.5}, {"input": [50.5, -47.5], "expected": 50.5}, {"input": [50.5, -47.0], "expected": 50.5}, {"input": [50.5, -46.5], "expected": 50.5}, {"input": [50.5, -46.0], "expected": 50.5}, {"input": [50.5, -45.5], "expected": 50.5}, {"input": [50.5, -45.0], "expected": 50.5}, {"input": [50.5, -44.5], "expected": 50.5}, {"input": [50.5, -44.0], "expected": 50.5}, {"input": [50.5, -43.5], "expected": 50.5}, {"input": [50.5, -43.0], "expected": 50.5}, {"input": [50.5, -42.5], "expected": 50.5}, {"input": [50.5, -42.0], "expected": 50.5}, {"input": [50.5, -41.5], "expected": 50.5}, {"input": [50.5, -41.0], "expected": 50.5}, {"input": [50.5, -40.5], "expected": 50.5}, {"input": [50.5, -40.0], "expected": 50.5}, {"input": [50.5, -39.5], "expected": 50.5}, {"input": [50.5, -39.0], "expected": 50.5}, {"input": [50.5, -38.5], "expected": 50.5}, {"input": [50.5, -38.0], "expected": 50.5}, {"input": [50.5, -37.5], "expected": 50.5}, {"input": [50.5, -37.0], "expected": 50.5}, {"input": [50.5, -36.5], "expected": 50.5}, {"input": [50.5, -36.0], "expected": 50.5}, {"input": [50.5, -35.5], "expected": 50.5}, {"input": [50.5, -35.0], "expected": 50.5}, {"input": [50.5, -34.5], "expected": 50.5}, {"input": [50.5, -34.0], "expected": 50.5}, {"input": [50.5, -33.5], "expected": 50.5}, {"input": [50.5, -33.0], "expected": 50.5}, {"input": [50.5, -32.5], "expected": 50.5}, {"input": [50.5, -32.0], "expected": 50.5}, {"input": [50.5, -31.5], "expected": 50.5}, {"input": [50.5, -31.0], "expected": 50.5}, {"input": [50.5, -30.5], "expected": 50.5}, {"input": [50.5, -30.0], "expected": 50.5}, {"input": [50.5, -29.5], "expected": 50.5}, {"input": [50.5, -29.0], "expected": 50.5}, {"input": [50.5, -28.5], "expected": 50.5}, {"input": [50.5, -28.0], "expected": 50.5}, {"input": [50.5, -27.5], "expected": 50.5}, {"input": [50.5, -27.0], "expected": 50.5}, {"input": [50.5, -26.5], "expected": 50.5}, {"input": [50.5, -26.0], "expected": 50.5}, {"input": [50.5, -25.5], "expected": 50.5}, {"input": [50.5, -25.0], "expected": 50.5}, {"input": [50.5, -24.5], "expected": 50.5}, {"input": [50.5, -24.0], "expected": 50.5}, {"input": [50.5, -23.5], "expected": 50.5}, {"input": [50.5, -23.0], "expected": 50.5}, {"input": [50.5, -22.5], "expected": 50.5}, {"input": [50.5, -22.0], "expected": 50.5}, {"input": [50.5, -21.5], "expected": 50.5}, {"input": [50.5, -21.0], "expected": 50.5}, {"input": [50.5, -20.5], "expected": 50.5}, {"input": [50.5, -20.0], "expected": 50.5}, {"input": [50.5, -19.5], "expected": 50.5}, {"input": [50.5, -19.0], "expected": 50.5}, {"input": [50.5, -18.5], "expected": 50.5}, {"input": [50.5, -18.0], "expected": 50.5}, {"input": [50.5, -17.5], "expected": 50.5}, {"input": [50.5, -17.0], "expected": 50.5}, {"input": [50.5, -16.5], "expected": 50.5}, {"input": [50.5, -16.0], "expected": 50.5}, {"input": [50.5, -15.5], "expected": 50.5}, {"input": [50.5, -15.0], "expected": 50.5}, {"input": [50.5, -14.5], "expected": 50.5}, {"input": [50.5, -14.0], "expected": 50.5}, {"input": [50.5, -13.5], "expected": 50.5}, {"input": [50.5, -13.0], "expected": 50.5}, {"input": [50.5, -12.5], "expected": 50.5}, {"input": [50.5, -12.0], "expected": 50.5}, {"input": [50.5, -11.5], "expected": 50.5}, {"input": [50.5, -11.0], "expected": 50.5}, {"input": [50.5, -10.5], "expected": 50.5}, {"input": [50.5, -10.0], "expected": 50.5}, {"input": [50.5, -9.5], "expected": 50.5}, {"input": [50.5, -9.0], "expected": 50.5}, {"input": [50.5, -8.5], "expected": 50.5}, {"input": [50.5, -8.0], "expected": 50.5}, {"input": [50.5, -7.5], "expected": 50.5}, {"input": [50.5, -7.0], "expected": 50.5}, {"input": [50.5, -6.5], "expected": 50.5}, {"input": [50.5, -6.0], "expected": 50.5}, {"input": [50.5, -5.5], "expected": 50.5}, {"input": [50.5, -5.0], "expected": 50.5}, {"input": [50.5, -4.5], "expected": 50.5}, {"input": [50.5, -4.0], "expected": 50.5}, {"input": [50.5, -3.5], "expected": 50.5}, {"input": [50.5, -3.0], "expected": 50.5}, {"input": [50.5, -2.5], "expected": 50.5}, {"input": [50.5, -2.0], "expected": 50.5}, {"input": [50.5, -1.5], "expected": 50.5}, {"input": [50.5, -1.0], "expected": 50.5}, {"input": [50.5, -0.5], "expected": 50.5}, {"input": [50.5, 0.0], "expected": 50.5}, {"input": [50.5, 0.5], "expected": 50.5}, {"input": [50.5, 1.0], "expected": 50.5}, {"input": [50.5, 1.5], "expected": 50.5}, {"input": [50.5, 2.0], "expected": 50.5}, {"input": [50.5, 2.5], "expected": 50.5}, {"input": [50.5, 3.0], "expected": 50.5}, {"input": [50.5, 3.5], "expected": 50.5}, {"input": [50.5, 4.0], "expected": 50.5}, {"input": [50.5, 4.5], "expected": 50.5}, {"input": [50.5, 5.0], "expected": 50.5}, {"input": [50.5, 5.5], "expected": 50.5}, {"input": [50.5, 6.0], "expected": 50.5}, {"input": [50.5, 6.5], "expected": 50.5}, {"input": [50.5, 7.0], "expected": 50.5}, {"input": [50.5, 7.5], "expected": 50.5}, {"input": [50.5, 8.0], "expected": 50.5}, {"input": [50.5, 8.5], "expected": 50.5}, {"input": [50.5, 9.0], "expected": 50.5}, {"input": [50.5, 9.5], "expected": 50.5}, {"input": [50.5, 10.0], "expected": 50.5}, {"input": [50.5, 10.5], "expected": 50.5}, {"input": [50.5, 11.0], "expected": 50.5}, {"input": [50.5, 11.5], "expected": 50.5}, {"input": [50.5, 12.0], "expected": 50.5}, {"input": [50.5, 12.5], "expected": 50.5}, {"input": [50.5, 13.0], "expected": 50.5}, {"input": [50.5, 13.5], "expected": 50.5}, {"input": [50.5, 14.0], "expected": 50.5}, {"input": [50.5, 14.5], "expected": 50.5}, {"input": [50.5, 15.0], "expected": 50.5}, {"input": [50.5, 15.5], "expected": 50.5}, {"input": [50.5, 16.0], "expected": 50.5}, {"input": [50.5, 16.5], "expected": 50.5}, {"input": [50.5, 17.0], "expected": 50.5}, {"input": [50.5, 17.5], "expected": 50.50000000000001}, {"input": [50.5, 18.0], "expected": 50.50000000000001}, {"input": [50.5, 18.5], "expected": 50.500000000000014}, {"input": [50.5, 19.0], "expected": 50.50000000000002}, {"input": [50.5, 19.5], "expected": 50.500000000000036}, {"input": [50.5, 20.0], "expected": 50.50000000000006}, {"input": [50.5, 20.5], "expected": 50.50000000000009}, {"input": [50.5, 21.0], "expected": 50.500000000000156}, {"input": [50.5, 21.5], "expected": 50.500000000000256}, {"input": [50.5, 22.0], "expected": 50.50000000000042}, {"input": [50.5, 22.5], "expected": 50.50000000000069}, {"input": [50.5, 23.0], "expected": 50.50000000000114}, {"input": [50.5, 23.5], "expected": 50.50000000000188}, {"input": [50.5, 24.0], "expected": 50.5000000000031}, {"input": [50.5, 24.5], "expected": 50.50000000000511}, {"input": [50.5, 25.0], "expected": 50.50000000000842}, {"input": [50.5, 25.5], "expected": 50.50000000001389}, {"input": [50.5, 26.0], "expected": 50.5000000000229}, {"input": [50.5, 26.5], "expected": 50.50000000003775}, {"input": [50.5, 27.0], "expected": 50.50000000006224}, {"input": [50.5, 27.5], "expected": 50.50000000010262}, {"input": [50.5, 28.0], "expected": 50.50000000016919}, {"input": [50.5, 28.5], "expected": 50.500000000278945}, {"input": [50.5, 29.0], "expected": 50.500000000459906}, {"input": [50.5, 29.5], "expected": 50.500000000758256}, {"input": [50.5, 30.0], "expected": 50.50000000125015}, {"input": [50.5, 30.5], "expected": 50.50000000206116}, {"input": [50.5, 31.0], "expected": 50.50000000339827}, {"input": [50.5, 31.5], "expected": 50.50000000560279}, {"input": [50.5, 32.0], "expected": 50.500000009237446}, {"input": [50.5, 32.5], "expected": 50.50000001522998}, {"input": [50.5, 33.0], "expected": 50.50000002510999}, {"input": [50.5, 33.5], "expected": 50.500000041399375}, {"input": [50.5, 34.0], "expected": 50.50000006825603}, {"input": [50.5, 34.5], "expected": 50.50000011253517}, {"input": [50.5, 35.0], "expected": 50.50000018553912}, {"input": [50.5, 35.5], "expected": 50.500000305902276}, {"input": [50.5, 36.0], "expected": 50.50000050434753}, {"input": [50.5, 36.5], "expected": 50.500000831528375}, {"input": [50.5, 37.0], "expected": 50.500001370958145}, {"input": [50.5, 37.5], "expected": 50.50000226032685}, {"input": [50.5, 38.0], "expected": 50.50000372664623}, {"input": [50.5, 38.5], "expected": 50.50000614419348}, {"input": [50.5, 39.0], "expected": 50.50001013004229}, {"input": [50.5, 39.5], "expected": 50.50001670156132}, {"input": [50.5, 40.0], "expected": 50.50002753607023}, {"input": [50.5, 40.5], "expected": 50.50004539889922}, {"input": [50.5, 41.0], "expected": 50.50007484902863}, {"input": [50.5, 41.5], "expected": 50.50012340218972}, {"input": [50.5, 42.0], "expected": 50.50020344767213}, {"input": [50.5, 42.5], "expected": 50.5003354063729}, {"input": [50.5, 43.0], "expected": 50.50055293147536}, {"input": [50.5, 43.5], "expected": 50.50091146645377}, {"input": [50.5, 44.0], "expected": 50.50150231015976}, {"input": [50.5, 44.5], "expected": 50.50247568513773}, {"input": [50.5, 45.0], "expected": 50.50407844327057}, {"input": [50.5, 45.5], "expected": 50.50671534848912}, {"input": [50.5, 46.0], "expected": 50.5110477448486}, {"input": [50.5, 46.5], "expected": 50.51814992791781}, {"input": [50.5, 47.0], "expected": 50.52975041827262}, {"input": [50.5, 47.5], "expected": 50.548587351573744}, {"input": [50.5, 48.0], "expected": 50.57888973429255}, {"input": [50.5, 48.5], "expected": 50.62692801104297}, {"input": [50.5, 49.0], "expected": 50.70141327798275}, {"input": [50.5, 49.5], "expected": 50.81326168751822}, {"input": [50.5, 50.0], "expected": 50.97407698418011}, {"input": [50.5, 50.5], "expected": 51.19314718055995}, {"input": [50.5, 51.0], "expected": 51.47407698418011}, {"input": [50.5, 51.5], "expected": 51.81326168751822}, {"input": [50.5, 52.0], "expected": 52.20141327798275}, {"input": [50.5, 52.5], "expected": 52.62692801104297}, {"input": [50.5, 53.0], "expected": 53.07888973429255}, {"input": [50.5, 53.5], "expected": 53.548587351573744}, {"input": [50.5, 54.0], "expected": 54.02975041827262}, {"input": [50.5, 54.5], "expected": 54.51814992791781}, {"input": [50.5, 55.0], "expected": 55.0110477448486}, {"input": [50.5, 55.5], "expected": 55.50671534848912}, {"input": [50.5, 56.0], "expected": 56.00407844327057}, {"input": [50.5, 56.5], "expected": 56.50247568513773}, {"input": [50.5, 57.0], "expected": 57.00150231015976}, {"input": [50.5, 57.5], "expected": 57.50091146645377}, {"input": [50.5, 58.0], "expected": 58.00055293147536}, {"input": [50.5, 58.5], "expected": 58.5003354063729}, {"input": [50.5, 59.0], "expected": 59.00020344767213}, {"input": [50.5, 59.5], "expected": 59.50012340218972}, {"input": [50.5, 60.0], "expected": 60.00007484902863}, {"input": [50.5, 60.5], "expected": 60.50004539889922}, {"input": [50.5, 61.0], "expected": 61.00002753607023}, {"input": [50.5, 61.5], "expected": 61.50001670156132}, {"input": [50.5, 62.0], "expected": 62.00001013004229}, {"input": [50.5, 62.5], "expected": 62.50000614419348}, {"input": [50.5, 63.0], "expected": 63.00000372664623}, {"input": [50.5, 63.5], "expected": 63.50000226032685}, {"input": [50.5, 64.0], "expected": 64.00000137095815}, {"input": [50.5, 64.5], "expected": 64.50000083152837}, {"input": [50.5, 65.0], "expected": 65.00000050434754}, {"input": [50.5, 65.5], "expected": 65.50000030590228}, {"input": [50.5, 66.0], "expected": 66.00000018553912}, {"input": [50.5, 66.5], "expected": 66.50000011253516}, {"input": [50.5, 67.0], "expected": 67.00000006825603}, {"input": [50.5, 67.5], "expected": 67.50000004139937}, {"input": [50.5, 68.0], "expected": 68.00000002511}, {"input": [50.5, 68.5], "expected": 68.50000001522999}, {"input": [50.5, 69.0], "expected": 69.00000000923745}, {"input": [50.5, 69.5], "expected": 69.5000000056028}, {"input": [50.5, 70.0], "expected": 70.00000000339827}, {"input": [50.5, 70.5], "expected": 70.50000000206116}, {"input": [50.5, 71.0], "expected": 71.00000000125016}, {"input": [50.5, 71.5], "expected": 71.50000000075826}, {"input": [50.5, 72.0], "expected": 72.0000000004599}, {"input": [50.5, 72.5], "expected": 72.50000000027894}, {"input": [50.5, 73.0], "expected": 73.0000000001692}, {"input": [50.5, 73.5], "expected": 73.50000000010262}, {"input": [50.5, 74.0], "expected": 74.00000000006224}, {"input": [50.5, 74.5], "expected": 74.50000000003776}, {"input": [50.5, 75.0], "expected": 75.0000000000229}, {"input": [50.5, 75.5], "expected": 75.50000000001388}, {"input": [50.5, 76.0], "expected": 76.00000000000843}, {"input": [50.5, 76.5], "expected": 76.50000000000512}, {"input": [50.5, 77.0], "expected": 77.0000000000031}, {"input": [50.5, 77.5], "expected": 77.50000000000188}, {"input": [50.5, 78.0], "expected": 78.00000000000114}, {"input": [50.5, 78.5], "expected": 78.5000000000007}, {"input": [50.5, 79.0], "expected": 79.00000000000043}, {"input": [50.5, 79.5], "expected": 79.50000000000026}, {"input": [50.5, 80.0], "expected": 80.00000000000016}, {"input": [50.5, 80.5], "expected": 80.5000000000001}, {"input": [50.5, 81.0], "expected": 81.00000000000006}, {"input": [50.5, 81.5], "expected": 81.50000000000003}, {"input": [50.5, 82.0], "expected": 82.00000000000001}, {"input": [50.5, 82.5], "expected": 82.50000000000001}, {"input": [50.5, 83.0], "expected": 83.00000000000001}, {"input": [50.5, 83.5], "expected": 83.5}, {"input": [50.5, 84.0], "expected": 84.0}, {"input": [50.5, 84.5], "expected": 84.5}, {"input": [50.5, 85.0], "expected": 85.0}, {"input": [50.5, 85.5], "expected": 85.5}, {"input": [50.5, 86.0], "expected": 86.0}, {"input": [50.5, 86.5], "expected": 86.5}, {"input": [50.5, 87.0], "expected": 87.0}, {"input": [50.5, 87.5], "expected": 87.5}, {"input": [50.5, 88.0], "expected": 88.0}, {"input": [50.5, 88.5], "expected": 88.5}, {"input": [50.5, 89.0], "expected": 89.0}, {"input": [50.5, 89.5], "expected": 89.5}, {"input": [50.5, 90.0], "expected": 90.0}, {"input": [50.5, 90.5], "expected": 90.5}, {"input": [50.5, 91.0], "expected": 91.0}, {"input": [50.5, 91.5], "expected": 91.5}, {"input": [50.5, 92.0], "expected": 92.0}, {"input": [50.5, 92.5], "expected": 92.5}, {"input": [50.5, 93.0], "expected": 93.0}, {"input": [50.5, 93.5], "expected": 93.5}, {"input": [50.5, 94.0], "expected": 94.0}, {"input": [50.5, 94.5], "expected": 94.5}, {"input": [50.5, 95.0], "expected": 95.0}, {"input": [50.5, 95.5], "expected": 95.5}, {"input": [50.5, 96.0], "expected": 96.0}, {"input": [50.5, 96.5], "expected": 96.5}, {"input": [50.5, 97.0], "expected": 97.0}, {"input": [50.5, 97.5], "expected": 97.5}, {"input": [50.5, 98.0], "expected": 98.0}, {"input": [50.5, 98.5], "expected": 98.5}, {"input": [50.5, 99.0], "expected": 99.0}, {"input": [50.5, 99.5], "expected": 99.5}, {"input": [51.0, -100.0], "expected": 51.0}, {"input": [51.0, -99.5], "expected": 51.0}, {"input": [51.0, -99.0], "expected": 51.0}, {"input": [51.0, -98.5], "expected": 51.0}, {"input": [51.0, -98.0], "expected": 51.0}, {"input": [51.0, -97.5], "expected": 51.0}, {"input": [51.0, -97.0], "expected": 51.0}, {"input": [51.0, -96.5], "expected": 51.0}, {"input": [51.0, -96.0], "expected": 51.0}, {"input": [51.0, -95.5], "expected": 51.0}, {"input": [51.0, -95.0], "expected": 51.0}, {"input": [51.0, -94.5], "expected": 51.0}, {"input": [51.0, -94.0], "expected": 51.0}, {"input": [51.0, -93.5], "expected": 51.0}, {"input": [51.0, -93.0], "expected": 51.0}, {"input": [51.0, -92.5], "expected": 51.0}, {"input": [51.0, -92.0], "expected": 51.0}, {"input": [51.0, -91.5], "expected": 51.0}, {"input": [51.0, -91.0], "expected": 51.0}, {"input": [51.0, -90.5], "expected": 51.0}, {"input": [51.0, -90.0], "expected": 51.0}, {"input": [51.0, -89.5], "expected": 51.0}, {"input": [51.0, -89.0], "expected": 51.0}, {"input": [51.0, -88.5], "expected": 51.0}, {"input": [51.0, -88.0], "expected": 51.0}, {"input": [51.0, -87.5], "expected": 51.0}, {"input": [51.0, -87.0], "expected": 51.0}, {"input": [51.0, -86.5], "expected": 51.0}, {"input": [51.0, -86.0], "expected": 51.0}, {"input": [51.0, -85.5], "expected": 51.0}, {"input": [51.0, -85.0], "expected": 51.0}, {"input": [51.0, -84.5], "expected": 51.0}, {"input": [51.0, -84.0], "expected": 51.0}, {"input": [51.0, -83.5], "expected": 51.0}, {"input": [51.0, -83.0], "expected": 51.0}, {"input": [51.0, -82.5], "expected": 51.0}, {"input": [51.0, -82.0], "expected": 51.0}, {"input": [51.0, -81.5], "expected": 51.0}, {"input": [51.0, -81.0], "expected": 51.0}, {"input": [51.0, -80.5], "expected": 51.0}, {"input": [51.0, -80.0], "expected": 51.0}, {"input": [51.0, -79.5], "expected": 51.0}, {"input": [51.0, -79.0], "expected": 51.0}, {"input": [51.0, -78.5], "expected": 51.0}, {"input": [51.0, -78.0], "expected": 51.0}, {"input": [51.0, -77.5], "expected": 51.0}, {"input": [51.0, -77.0], "expected": 51.0}, {"input": [51.0, -76.5], "expected": 51.0}, {"input": [51.0, -76.0], "expected": 51.0}, {"input": [51.0, -75.5], "expected": 51.0}, {"input": [51.0, -75.0], "expected": 51.0}, {"input": [51.0, -74.5], "expected": 51.0}, {"input": [51.0, -74.0], "expected": 51.0}, {"input": [51.0, -73.5], "expected": 51.0}, {"input": [51.0, -73.0], "expected": 51.0}, {"input": [51.0, -72.5], "expected": 51.0}, {"input": [51.0, -72.0], "expected": 51.0}, {"input": [51.0, -71.5], "expected": 51.0}, {"input": [51.0, -71.0], "expected": 51.0}, {"input": [51.0, -70.5], "expected": 51.0}, {"input": [51.0, -70.0], "expected": 51.0}, {"input": [51.0, -69.5], "expected": 51.0}, {"input": [51.0, -69.0], "expected": 51.0}, {"input": [51.0, -68.5], "expected": 51.0}, {"input": [51.0, -68.0], "expected": 51.0}, {"input": [51.0, -67.5], "expected": 51.0}, {"input": [51.0, -67.0], "expected": 51.0}, {"input": [51.0, -66.5], "expected": 51.0}, {"input": [51.0, -66.0], "expected": 51.0}, {"input": [51.0, -65.5], "expected": 51.0}, {"input": [51.0, -65.0], "expected": 51.0}, {"input": [51.0, -64.5], "expected": 51.0}, {"input": [51.0, -64.0], "expected": 51.0}, {"input": [51.0, -63.5], "expected": 51.0}, {"input": [51.0, -63.0], "expected": 51.0}, {"input": [51.0, -62.5], "expected": 51.0}, {"input": [51.0, -62.0], "expected": 51.0}, {"input": [51.0, -61.5], "expected": 51.0}, {"input": [51.0, -61.0], "expected": 51.0}, {"input": [51.0, -60.5], "expected": 51.0}, {"input": [51.0, -60.0], "expected": 51.0}, {"input": [51.0, -59.5], "expected": 51.0}, {"input": [51.0, -59.0], "expected": 51.0}, {"input": [51.0, -58.5], "expected": 51.0}, {"input": [51.0, -58.0], "expected": 51.0}, {"input": [51.0, -57.5], "expected": 51.0}, {"input": [51.0, -57.0], "expected": 51.0}, {"input": [51.0, -56.5], "expected": 51.0}, {"input": [51.0, -56.0], "expected": 51.0}, {"input": [51.0, -55.5], "expected": 51.0}, {"input": [51.0, -55.0], "expected": 51.0}, {"input": [51.0, -54.5], "expected": 51.0}, {"input": [51.0, -54.0], "expected": 51.0}, {"input": [51.0, -53.5], "expected": 51.0}, {"input": [51.0, -53.0], "expected": 51.0}, {"input": [51.0, -52.5], "expected": 51.0}, {"input": [51.0, -52.0], "expected": 51.0}, {"input": [51.0, -51.5], "expected": 51.0}, {"input": [51.0, -51.0], "expected": 51.0}, {"input": [51.0, -50.5], "expected": 51.0}, {"input": [51.0, -50.0], "expected": 51.0}, {"input": [51.0, -49.5], "expected": 51.0}, {"input": [51.0, -49.0], "expected": 51.0}, {"input": [51.0, -48.5], "expected": 51.0}, {"input": [51.0, -48.0], "expected": 51.0}, {"input": [51.0, -47.5], "expected": 51.0}, {"input": [51.0, -47.0], "expected": 51.0}, {"input": [51.0, -46.5], "expected": 51.0}, {"input": [51.0, -46.0], "expected": 51.0}, {"input": [51.0, -45.5], "expected": 51.0}, {"input": [51.0, -45.0], "expected": 51.0}, {"input": [51.0, -44.5], "expected": 51.0}, {"input": [51.0, -44.0], "expected": 51.0}, {"input": [51.0, -43.5], "expected": 51.0}, {"input": [51.0, -43.0], "expected": 51.0}, {"input": [51.0, -42.5], "expected": 51.0}, {"input": [51.0, -42.0], "expected": 51.0}, {"input": [51.0, -41.5], "expected": 51.0}, {"input": [51.0, -41.0], "expected": 51.0}, {"input": [51.0, -40.5], "expected": 51.0}, {"input": [51.0, -40.0], "expected": 51.0}, {"input": [51.0, -39.5], "expected": 51.0}, {"input": [51.0, -39.0], "expected": 51.0}, {"input": [51.0, -38.5], "expected": 51.0}, {"input": [51.0, -38.0], "expected": 51.0}, {"input": [51.0, -37.5], "expected": 51.0}, {"input": [51.0, -37.0], "expected": 51.0}, {"input": [51.0, -36.5], "expected": 51.0}, {"input": [51.0, -36.0], "expected": 51.0}, {"input": [51.0, -35.5], "expected": 51.0}, {"input": [51.0, -35.0], "expected": 51.0}, {"input": [51.0, -34.5], "expected": 51.0}, {"input": [51.0, -34.0], "expected": 51.0}, {"input": [51.0, -33.5], "expected": 51.0}, {"input": [51.0, -33.0], "expected": 51.0}, {"input": [51.0, -32.5], "expected": 51.0}, {"input": [51.0, -32.0], "expected": 51.0}, {"input": [51.0, -31.5], "expected": 51.0}, {"input": [51.0, -31.0], "expected": 51.0}, {"input": [51.0, -30.5], "expected": 51.0}, {"input": [51.0, -30.0], "expected": 51.0}, {"input": [51.0, -29.5], "expected": 51.0}, {"input": [51.0, -29.0], "expected": 51.0}, {"input": [51.0, -28.5], "expected": 51.0}, {"input": [51.0, -28.0], "expected": 51.0}, {"input": [51.0, -27.5], "expected": 51.0}, {"input": [51.0, -27.0], "expected": 51.0}, {"input": [51.0, -26.5], "expected": 51.0}, {"input": [51.0, -26.0], "expected": 51.0}, {"input": [51.0, -25.5], "expected": 51.0}, {"input": [51.0, -25.0], "expected": 51.0}, {"input": [51.0, -24.5], "expected": 51.0}, {"input": [51.0, -24.0], "expected": 51.0}, {"input": [51.0, -23.5], "expected": 51.0}, {"input": [51.0, -23.0], "expected": 51.0}, {"input": [51.0, -22.5], "expected": 51.0}, {"input": [51.0, -22.0], "expected": 51.0}, {"input": [51.0, -21.5], "expected": 51.0}, {"input": [51.0, -21.0], "expected": 51.0}, {"input": [51.0, -20.5], "expected": 51.0}, {"input": [51.0, -20.0], "expected": 51.0}, {"input": [51.0, -19.5], "expected": 51.0}, {"input": [51.0, -19.0], "expected": 51.0}, {"input": [51.0, -18.5], "expected": 51.0}, {"input": [51.0, -18.0], "expected": 51.0}, {"input": [51.0, -17.5], "expected": 51.0}, {"input": [51.0, -17.0], "expected": 51.0}, {"input": [51.0, -16.5], "expected": 51.0}, {"input": [51.0, -16.0], "expected": 51.0}, {"input": [51.0, -15.5], "expected": 51.0}, {"input": [51.0, -15.0], "expected": 51.0}, {"input": [51.0, -14.5], "expected": 51.0}, {"input": [51.0, -14.0], "expected": 51.0}, {"input": [51.0, -13.5], "expected": 51.0}, {"input": [51.0, -13.0], "expected": 51.0}, {"input": [51.0, -12.5], "expected": 51.0}, {"input": [51.0, -12.0], "expected": 51.0}, {"input": [51.0, -11.5], "expected": 51.0}, {"input": [51.0, -11.0], "expected": 51.0}, {"input": [51.0, -10.5], "expected": 51.0}, {"input": [51.0, -10.0], "expected": 51.0}, {"input": [51.0, -9.5], "expected": 51.0}, {"input": [51.0, -9.0], "expected": 51.0}, {"input": [51.0, -8.5], "expected": 51.0}, {"input": [51.0, -8.0], "expected": 51.0}, {"input": [51.0, -7.5], "expected": 51.0}, {"input": [51.0, -7.0], "expected": 51.0}, {"input": [51.0, -6.5], "expected": 51.0}, {"input": [51.0, -6.0], "expected": 51.0}, {"input": [51.0, -5.5], "expected": 51.0}, {"input": [51.0, -5.0], "expected": 51.0}, {"input": [51.0, -4.5], "expected": 51.0}, {"input": [51.0, -4.0], "expected": 51.0}, {"input": [51.0, -3.5], "expected": 51.0}, {"input": [51.0, -3.0], "expected": 51.0}, {"input": [51.0, -2.5], "expected": 51.0}, {"input": [51.0, -2.0], "expected": 51.0}, {"input": [51.0, -1.5], "expected": 51.0}, {"input": [51.0, -1.0], "expected": 51.0}, {"input": [51.0, -0.5], "expected": 51.0}, {"input": [51.0, 0.0], "expected": 51.0}, {"input": [51.0, 0.5], "expected": 51.0}, {"input": [51.0, 1.0], "expected": 51.0}, {"input": [51.0, 1.5], "expected": 51.0}, {"input": [51.0, 2.0], "expected": 51.0}, {"input": [51.0, 2.5], "expected": 51.0}, {"input": [51.0, 3.0], "expected": 51.0}, {"input": [51.0, 3.5], "expected": 51.0}, {"input": [51.0, 4.0], "expected": 51.0}, {"input": [51.0, 4.5], "expected": 51.0}, {"input": [51.0, 5.0], "expected": 51.0}, {"input": [51.0, 5.5], "expected": 51.0}, {"input": [51.0, 6.0], "expected": 51.0}, {"input": [51.0, 6.5], "expected": 51.0}, {"input": [51.0, 7.0], "expected": 51.0}, {"input": [51.0, 7.5], "expected": 51.0}, {"input": [51.0, 8.0], "expected": 51.0}, {"input": [51.0, 8.5], "expected": 51.0}, {"input": [51.0, 9.0], "expected": 51.0}, {"input": [51.0, 9.5], "expected": 51.0}, {"input": [51.0, 10.0], "expected": 51.0}, {"input": [51.0, 10.5], "expected": 51.0}, {"input": [51.0, 11.0], "expected": 51.0}, {"input": [51.0, 11.5], "expected": 51.0}, {"input": [51.0, 12.0], "expected": 51.0}, {"input": [51.0, 12.5], "expected": 51.0}, {"input": [51.0, 13.0], "expected": 51.0}, {"input": [51.0, 13.5], "expected": 51.0}, {"input": [51.0, 14.0], "expected": 51.0}, {"input": [51.0, 14.5], "expected": 51.0}, {"input": [51.0, 15.0], "expected": 51.0}, {"input": [51.0, 15.5], "expected": 51.0}, {"input": [51.0, 16.0], "expected": 51.0}, {"input": [51.0, 16.5], "expected": 51.0}, {"input": [51.0, 17.0], "expected": 51.0}, {"input": [51.0, 17.5], "expected": 51.0}, {"input": [51.0, 18.0], "expected": 51.00000000000001}, {"input": [51.0, 18.5], "expected": 51.00000000000001}, {"input": [51.0, 19.0], "expected": 51.000000000000014}, {"input": [51.0, 19.5], "expected": 51.00000000000002}, {"input": [51.0, 20.0], "expected": 51.000000000000036}, {"input": [51.0, 20.5], "expected": 51.00000000000006}, {"input": [51.0, 21.0], "expected": 51.00000000000009}, {"input": [51.0, 21.5], "expected": 51.000000000000156}, {"input": [51.0, 22.0], "expected": 51.000000000000256}, {"input": [51.0, 22.5], "expected": 51.00000000000042}, {"input": [51.0, 23.0], "expected": 51.00000000000069}, {"input": [51.0, 23.5], "expected": 51.00000000000114}, {"input": [51.0, 24.0], "expected": 51.00000000000188}, {"input": [51.0, 24.5], "expected": 51.0000000000031}, {"input": [51.0, 25.0], "expected": 51.00000000000511}, {"input": [51.0, 25.5], "expected": 51.00000000000842}, {"input": [51.0, 26.0], "expected": 51.00000000001389}, {"input": [51.0, 26.5], "expected": 51.0000000000229}, {"input": [51.0, 27.0], "expected": 51.00000000003775}, {"input": [51.0, 27.5], "expected": 51.00000000006224}, {"input": [51.0, 28.0], "expected": 51.00000000010262}, {"input": [51.0, 28.5], "expected": 51.00000000016919}, {"input": [51.0, 29.0], "expected": 51.000000000278945}, {"input": [51.0, 29.5], "expected": 51.000000000459906}, {"input": [51.0, 30.0], "expected": 51.000000000758256}, {"input": [51.0, 30.5], "expected": 51.00000000125015}, {"input": [51.0, 31.0], "expected": 51.00000000206116}, {"input": [51.0, 31.5], "expected": 51.00000000339827}, {"input": [51.0, 32.0], "expected": 51.00000000560279}, {"input": [51.0, 32.5], "expected": 51.000000009237446}, {"input": [51.0, 33.0], "expected": 51.00000001522998}, {"input": [51.0, 33.5], "expected": 51.00000002510999}, {"input": [51.0, 34.0], "expected": 51.000000041399375}, {"input": [51.0, 34.5], "expected": 51.00000006825603}, {"input": [51.0, 35.0], "expected": 51.00000011253517}, {"input": [51.0, 35.5], "expected": 51.00000018553912}, {"input": [51.0, 36.0], "expected": 51.000000305902276}, {"input": [51.0, 36.5], "expected": 51.00000050434753}, {"input": [51.0, 37.0], "expected": 51.000000831528375}, {"input": [51.0, 37.5], "expected": 51.000001370958145}, {"input": [51.0, 38.0], "expected": 51.00000226032685}, {"input": [51.0, 38.5], "expected": 51.00000372664623}, {"input": [51.0, 39.0], "expected": 51.00000614419348}, {"input": [51.0, 39.5], "expected": 51.00001013004229}, {"input": [51.0, 40.0], "expected": 51.00001670156132}, {"input": [51.0, 40.5], "expected": 51.00002753607023}, {"input": [51.0, 41.0], "expected": 51.00004539889922}, {"input": [51.0, 41.5], "expected": 51.00007484902863}, {"input": [51.0, 42.0], "expected": 51.00012340218972}, {"input": [51.0, 42.5], "expected": 51.00020344767213}, {"input": [51.0, 43.0], "expected": 51.0003354063729}, {"input": [51.0, 43.5], "expected": 51.00055293147536}, {"input": [51.0, 44.0], "expected": 51.00091146645377}, {"input": [51.0, 44.5], "expected": 51.00150231015976}, {"input": [51.0, 45.0], "expected": 51.00247568513773}, {"input": [51.0, 45.5], "expected": 51.00407844327057}, {"input": [51.0, 46.0], "expected": 51.00671534848912}, {"input": [51.0, 46.5], "expected": 51.0110477448486}, {"input": [51.0, 47.0], "expected": 51.01814992791781}, {"input": [51.0, 47.5], "expected": 51.02975041827262}, {"input": [51.0, 48.0], "expected": 51.048587351573744}, {"input": [51.0, 48.5], "expected": 51.07888973429255}, {"input": [51.0, 49.0], "expected": 51.12692801104297}, {"input": [51.0, 49.5], "expected": 51.20141327798275}, {"input": [51.0, 50.0], "expected": 51.31326168751822}, {"input": [51.0, 50.5], "expected": 51.47407698418011}, {"input": [51.0, 51.0], "expected": 51.69314718055995}, {"input": [51.0, 51.5], "expected": 51.97407698418011}, {"input": [51.0, 52.0], "expected": 52.31326168751822}, {"input": [51.0, 52.5], "expected": 52.70141327798275}, {"input": [51.0, 53.0], "expected": 53.12692801104297}, {"input": [51.0, 53.5], "expected": 53.57888973429255}, {"input": [51.0, 54.0], "expected": 54.048587351573744}, {"input": [51.0, 54.5], "expected": 54.52975041827262}, {"input": [51.0, 55.0], "expected": 55.01814992791781}, {"input": [51.0, 55.5], "expected": 55.5110477448486}, {"input": [51.0, 56.0], "expected": 56.00671534848912}, {"input": [51.0, 56.5], "expected": 56.50407844327057}, {"input": [51.0, 57.0], "expected": 57.00247568513773}, {"input": [51.0, 57.5], "expected": 57.50150231015976}, {"input": [51.0, 58.0], "expected": 58.00091146645377}, {"input": [51.0, 58.5], "expected": 58.50055293147536}, {"input": [51.0, 59.0], "expected": 59.0003354063729}, {"input": [51.0, 59.5], "expected": 59.50020344767213}, {"input": [51.0, 60.0], "expected": 60.00012340218972}, {"input": [51.0, 60.5], "expected": 60.50007484902863}, {"input": [51.0, 61.0], "expected": 61.00004539889922}, {"input": [51.0, 61.5], "expected": 61.50002753607023}, {"input": [51.0, 62.0], "expected": 62.00001670156132}, {"input": [51.0, 62.5], "expected": 62.50001013004229}, {"input": [51.0, 63.0], "expected": 63.00000614419348}, {"input": [51.0, 63.5], "expected": 63.50000372664623}, {"input": [51.0, 64.0], "expected": 64.00000226032685}, {"input": [51.0, 64.5], "expected": 64.50000137095815}, {"input": [51.0, 65.0], "expected": 65.00000083152837}, {"input": [51.0, 65.5], "expected": 65.50000050434754}, {"input": [51.0, 66.0], "expected": 66.00000030590228}, {"input": [51.0, 66.5], "expected": 66.50000018553912}, {"input": [51.0, 67.0], "expected": 67.00000011253516}, {"input": [51.0, 67.5], "expected": 67.50000006825603}, {"input": [51.0, 68.0], "expected": 68.00000004139937}, {"input": [51.0, 68.5], "expected": 68.50000002511}, {"input": [51.0, 69.0], "expected": 69.00000001522999}, {"input": [51.0, 69.5], "expected": 69.50000000923745}, {"input": [51.0, 70.0], "expected": 70.0000000056028}, {"input": [51.0, 70.5], "expected": 70.50000000339827}, {"input": [51.0, 71.0], "expected": 71.00000000206116}, {"input": [51.0, 71.5], "expected": 71.50000000125016}, {"input": [51.0, 72.0], "expected": 72.00000000075826}, {"input": [51.0, 72.5], "expected": 72.5000000004599}, {"input": [51.0, 73.0], "expected": 73.00000000027894}, {"input": [51.0, 73.5], "expected": 73.5000000001692}, {"input": [51.0, 74.0], "expected": 74.00000000010262}, {"input": [51.0, 74.5], "expected": 74.50000000006224}, {"input": [51.0, 75.0], "expected": 75.00000000003776}, {"input": [51.0, 75.5], "expected": 75.5000000000229}, {"input": [51.0, 76.0], "expected": 76.00000000001388}, {"input": [51.0, 76.5], "expected": 76.50000000000843}, {"input": [51.0, 77.0], "expected": 77.00000000000512}, {"input": [51.0, 77.5], "expected": 77.5000000000031}, {"input": [51.0, 78.0], "expected": 78.00000000000188}, {"input": [51.0, 78.5], "expected": 78.50000000000114}, {"input": [51.0, 79.0], "expected": 79.0000000000007}, {"input": [51.0, 79.5], "expected": 79.50000000000043}, {"input": [51.0, 80.0], "expected": 80.00000000000026}, {"input": [51.0, 80.5], "expected": 80.50000000000016}, {"input": [51.0, 81.0], "expected": 81.0000000000001}, {"input": [51.0, 81.5], "expected": 81.50000000000006}, {"input": [51.0, 82.0], "expected": 82.00000000000003}, {"input": [51.0, 82.5], "expected": 82.50000000000001}, {"input": [51.0, 83.0], "expected": 83.00000000000001}, {"input": [51.0, 83.5], "expected": 83.50000000000001}, {"input": [51.0, 84.0], "expected": 84.0}, {"input": [51.0, 84.5], "expected": 84.5}, {"input": [51.0, 85.0], "expected": 85.0}, {"input": [51.0, 85.5], "expected": 85.5}, {"input": [51.0, 86.0], "expected": 86.0}, {"input": [51.0, 86.5], "expected": 86.5}, {"input": [51.0, 87.0], "expected": 87.0}, {"input": [51.0, 87.5], "expected": 87.5}, {"input": [51.0, 88.0], "expected": 88.0}, {"input": [51.0, 88.5], "expected": 88.5}, {"input": [51.0, 89.0], "expected": 89.0}, {"input": [51.0, 89.5], "expected": 89.5}, {"input": [51.0, 90.0], "expected": 90.0}, {"input": [51.0, 90.5], "expected": 90.5}, {"input": [51.0, 91.0], "expected": 91.0}, {"input": [51.0, 91.5], "expected": 91.5}, {"input": [51.0, 92.0], "expected": 92.0}, {"input": [51.0, 92.5], "expected": 92.5}, {"input": [51.0, 93.0], "expected": 93.0}, {"input": [51.0, 93.5], "expected": 93.5}, {"input": [51.0, 94.0], "expected": 94.0}, {"input": [51.0, 94.5], "expected": 94.5}, {"input": [51.0, 95.0], "expected": 95.0}, {"input": [51.0, 95.5], "expected": 95.5}, {"input": [51.0, 96.0], "expected": 96.0}, {"input": [51.0, 96.5], "expected": 96.5}, {"input": [51.0, 97.0], "expected": 97.0}, {"input": [51.0, 97.5], "expected": 97.5}, {"input": [51.0, 98.0], "expected": 98.0}, {"input": [51.0, 98.5], "expected": 98.5}, {"input": [51.0, 99.0], "expected": 99.0}, {"input": [51.0, 99.5], "expected": 99.5}, {"input": [51.5, -100.0], "expected": 51.5}, {"input": [51.5, -99.5], "expected": 51.5}, {"input": [51.5, -99.0], "expected": 51.5}, {"input": [51.5, -98.5], "expected": 51.5}, {"input": [51.5, -98.0], "expected": 51.5}, {"input": [51.5, -97.5], "expected": 51.5}, {"input": [51.5, -97.0], "expected": 51.5}, {"input": [51.5, -96.5], "expected": 51.5}, {"input": [51.5, -96.0], "expected": 51.5}, {"input": [51.5, -95.5], "expected": 51.5}, {"input": [51.5, -95.0], "expected": 51.5}, {"input": [51.5, -94.5], "expected": 51.5}, {"input": [51.5, -94.0], "expected": 51.5}, {"input": [51.5, -93.5], "expected": 51.5}, {"input": [51.5, -93.0], "expected": 51.5}, {"input": [51.5, -92.5], "expected": 51.5}, {"input": [51.5, -92.0], "expected": 51.5}, {"input": [51.5, -91.5], "expected": 51.5}, {"input": [51.5, -91.0], "expected": 51.5}, {"input": [51.5, -90.5], "expected": 51.5}, {"input": [51.5, -90.0], "expected": 51.5}, {"input": [51.5, -89.5], "expected": 51.5}, {"input": [51.5, -89.0], "expected": 51.5}, {"input": [51.5, -88.5], "expected": 51.5}, {"input": [51.5, -88.0], "expected": 51.5}, {"input": [51.5, -87.5], "expected": 51.5}, {"input": [51.5, -87.0], "expected": 51.5}, {"input": [51.5, -86.5], "expected": 51.5}, {"input": [51.5, -86.0], "expected": 51.5}, {"input": [51.5, -85.5], "expected": 51.5}, {"input": [51.5, -85.0], "expected": 51.5}, {"input": [51.5, -84.5], "expected": 51.5}, {"input": [51.5, -84.0], "expected": 51.5}, {"input": [51.5, -83.5], "expected": 51.5}, {"input": [51.5, -83.0], "expected": 51.5}, {"input": [51.5, -82.5], "expected": 51.5}, {"input": [51.5, -82.0], "expected": 51.5}, {"input": [51.5, -81.5], "expected": 51.5}, {"input": [51.5, -81.0], "expected": 51.5}, {"input": [51.5, -80.5], "expected": 51.5}, {"input": [51.5, -80.0], "expected": 51.5}, {"input": [51.5, -79.5], "expected": 51.5}, {"input": [51.5, -79.0], "expected": 51.5}, {"input": [51.5, -78.5], "expected": 51.5}, {"input": [51.5, -78.0], "expected": 51.5}, {"input": [51.5, -77.5], "expected": 51.5}, {"input": [51.5, -77.0], "expected": 51.5}, {"input": [51.5, -76.5], "expected": 51.5}, {"input": [51.5, -76.0], "expected": 51.5}, {"input": [51.5, -75.5], "expected": 51.5}, {"input": [51.5, -75.0], "expected": 51.5}, {"input": [51.5, -74.5], "expected": 51.5}, {"input": [51.5, -74.0], "expected": 51.5}, {"input": [51.5, -73.5], "expected": 51.5}, {"input": [51.5, -73.0], "expected": 51.5}, {"input": [51.5, -72.5], "expected": 51.5}, {"input": [51.5, -72.0], "expected": 51.5}, {"input": [51.5, -71.5], "expected": 51.5}, {"input": [51.5, -71.0], "expected": 51.5}, {"input": [51.5, -70.5], "expected": 51.5}, {"input": [51.5, -70.0], "expected": 51.5}, {"input": [51.5, -69.5], "expected": 51.5}, {"input": [51.5, -69.0], "expected": 51.5}, {"input": [51.5, -68.5], "expected": 51.5}, {"input": [51.5, -68.0], "expected": 51.5}, {"input": [51.5, -67.5], "expected": 51.5}, {"input": [51.5, -67.0], "expected": 51.5}, {"input": [51.5, -66.5], "expected": 51.5}, {"input": [51.5, -66.0], "expected": 51.5}, {"input": [51.5, -65.5], "expected": 51.5}, {"input": [51.5, -65.0], "expected": 51.5}, {"input": [51.5, -64.5], "expected": 51.5}, {"input": [51.5, -64.0], "expected": 51.5}, {"input": [51.5, -63.5], "expected": 51.5}, {"input": [51.5, -63.0], "expected": 51.5}, {"input": [51.5, -62.5], "expected": 51.5}, {"input": [51.5, -62.0], "expected": 51.5}, {"input": [51.5, -61.5], "expected": 51.5}, {"input": [51.5, -61.0], "expected": 51.5}, {"input": [51.5, -60.5], "expected": 51.5}, {"input": [51.5, -60.0], "expected": 51.5}, {"input": [51.5, -59.5], "expected": 51.5}, {"input": [51.5, -59.0], "expected": 51.5}, {"input": [51.5, -58.5], "expected": 51.5}, {"input": [51.5, -58.0], "expected": 51.5}, {"input": [51.5, -57.5], "expected": 51.5}, {"input": [51.5, -57.0], "expected": 51.5}, {"input": [51.5, -56.5], "expected": 51.5}, {"input": [51.5, -56.0], "expected": 51.5}, {"input": [51.5, -55.5], "expected": 51.5}, {"input": [51.5, -55.0], "expected": 51.5}, {"input": [51.5, -54.5], "expected": 51.5}, {"input": [51.5, -54.0], "expected": 51.5}, {"input": [51.5, -53.5], "expected": 51.5}, {"input": [51.5, -53.0], "expected": 51.5}, {"input": [51.5, -52.5], "expected": 51.5}, {"input": [51.5, -52.0], "expected": 51.5}, {"input": [51.5, -51.5], "expected": 51.5}, {"input": [51.5, -51.0], "expected": 51.5}, {"input": [51.5, -50.5], "expected": 51.5}, {"input": [51.5, -50.0], "expected": 51.5}, {"input": [51.5, -49.5], "expected": 51.5}, {"input": [51.5, -49.0], "expected": 51.5}, {"input": [51.5, -48.5], "expected": 51.5}, {"input": [51.5, -48.0], "expected": 51.5}, {"input": [51.5, -47.5], "expected": 51.5}, {"input": [51.5, -47.0], "expected": 51.5}, {"input": [51.5, -46.5], "expected": 51.5}, {"input": [51.5, -46.0], "expected": 51.5}, {"input": [51.5, -45.5], "expected": 51.5}, {"input": [51.5, -45.0], "expected": 51.5}, {"input": [51.5, -44.5], "expected": 51.5}, {"input": [51.5, -44.0], "expected": 51.5}, {"input": [51.5, -43.5], "expected": 51.5}, {"input": [51.5, -43.0], "expected": 51.5}, {"input": [51.5, -42.5], "expected": 51.5}, {"input": [51.5, -42.0], "expected": 51.5}, {"input": [51.5, -41.5], "expected": 51.5}, {"input": [51.5, -41.0], "expected": 51.5}, {"input": [51.5, -40.5], "expected": 51.5}, {"input": [51.5, -40.0], "expected": 51.5}, {"input": [51.5, -39.5], "expected": 51.5}, {"input": [51.5, -39.0], "expected": 51.5}, {"input": [51.5, -38.5], "expected": 51.5}, {"input": [51.5, -38.0], "expected": 51.5}, {"input": [51.5, -37.5], "expected": 51.5}, {"input": [51.5, -37.0], "expected": 51.5}, {"input": [51.5, -36.5], "expected": 51.5}, {"input": [51.5, -36.0], "expected": 51.5}, {"input": [51.5, -35.5], "expected": 51.5}, {"input": [51.5, -35.0], "expected": 51.5}, {"input": [51.5, -34.5], "expected": 51.5}, {"input": [51.5, -34.0], "expected": 51.5}, {"input": [51.5, -33.5], "expected": 51.5}, {"input": [51.5, -33.0], "expected": 51.5}, {"input": [51.5, -32.5], "expected": 51.5}, {"input": [51.5, -32.0], "expected": 51.5}, {"input": [51.5, -31.5], "expected": 51.5}, {"input": [51.5, -31.0], "expected": 51.5}, {"input": [51.5, -30.5], "expected": 51.5}, {"input": [51.5, -30.0], "expected": 51.5}, {"input": [51.5, -29.5], "expected": 51.5}, {"input": [51.5, -29.0], "expected": 51.5}, {"input": [51.5, -28.5], "expected": 51.5}, {"input": [51.5, -28.0], "expected": 51.5}, {"input": [51.5, -27.5], "expected": 51.5}, {"input": [51.5, -27.0], "expected": 51.5}, {"input": [51.5, -26.5], "expected": 51.5}, {"input": [51.5, -26.0], "expected": 51.5}, {"input": [51.5, -25.5], "expected": 51.5}, {"input": [51.5, -25.0], "expected": 51.5}, {"input": [51.5, -24.5], "expected": 51.5}, {"input": [51.5, -24.0], "expected": 51.5}, {"input": [51.5, -23.5], "expected": 51.5}, {"input": [51.5, -23.0], "expected": 51.5}, {"input": [51.5, -22.5], "expected": 51.5}, {"input": [51.5, -22.0], "expected": 51.5}, {"input": [51.5, -21.5], "expected": 51.5}, {"input": [51.5, -21.0], "expected": 51.5}, {"input": [51.5, -20.5], "expected": 51.5}, {"input": [51.5, -20.0], "expected": 51.5}, {"input": [51.5, -19.5], "expected": 51.5}, {"input": [51.5, -19.0], "expected": 51.5}, {"input": [51.5, -18.5], "expected": 51.5}, {"input": [51.5, -18.0], "expected": 51.5}, {"input": [51.5, -17.5], "expected": 51.5}, {"input": [51.5, -17.0], "expected": 51.5}, {"input": [51.5, -16.5], "expected": 51.5}, {"input": [51.5, -16.0], "expected": 51.5}, {"input": [51.5, -15.5], "expected": 51.5}, {"input": [51.5, -15.0], "expected": 51.5}, {"input": [51.5, -14.5], "expected": 51.5}, {"input": [51.5, -14.0], "expected": 51.5}, {"input": [51.5, -13.5], "expected": 51.5}, {"input": [51.5, -13.0], "expected": 51.5}, {"input": [51.5, -12.5], "expected": 51.5}, {"input": [51.5, -12.0], "expected": 51.5}, {"input": [51.5, -11.5], "expected": 51.5}, {"input": [51.5, -11.0], "expected": 51.5}, {"input": [51.5, -10.5], "expected": 51.5}, {"input": [51.5, -10.0], "expected": 51.5}, {"input": [51.5, -9.5], "expected": 51.5}, {"input": [51.5, -9.0], "expected": 51.5}, {"input": [51.5, -8.5], "expected": 51.5}, {"input": [51.5, -8.0], "expected": 51.5}, {"input": [51.5, -7.5], "expected": 51.5}, {"input": [51.5, -7.0], "expected": 51.5}, {"input": [51.5, -6.5], "expected": 51.5}, {"input": [51.5, -6.0], "expected": 51.5}, {"input": [51.5, -5.5], "expected": 51.5}, {"input": [51.5, -5.0], "expected": 51.5}, {"input": [51.5, -4.5], "expected": 51.5}, {"input": [51.5, -4.0], "expected": 51.5}, {"input": [51.5, -3.5], "expected": 51.5}, {"input": [51.5, -3.0], "expected": 51.5}, {"input": [51.5, -2.5], "expected": 51.5}, {"input": [51.5, -2.0], "expected": 51.5}, {"input": [51.5, -1.5], "expected": 51.5}, {"input": [51.5, -1.0], "expected": 51.5}, {"input": [51.5, -0.5], "expected": 51.5}, {"input": [51.5, 0.0], "expected": 51.5}, {"input": [51.5, 0.5], "expected": 51.5}, {"input": [51.5, 1.0], "expected": 51.5}, {"input": [51.5, 1.5], "expected": 51.5}, {"input": [51.5, 2.0], "expected": 51.5}, {"input": [51.5, 2.5], "expected": 51.5}, {"input": [51.5, 3.0], "expected": 51.5}, {"input": [51.5, 3.5], "expected": 51.5}, {"input": [51.5, 4.0], "expected": 51.5}, {"input": [51.5, 4.5], "expected": 51.5}, {"input": [51.5, 5.0], "expected": 51.5}, {"input": [51.5, 5.5], "expected": 51.5}, {"input": [51.5, 6.0], "expected": 51.5}, {"input": [51.5, 6.5], "expected": 51.5}, {"input": [51.5, 7.0], "expected": 51.5}, {"input": [51.5, 7.5], "expected": 51.5}, {"input": [51.5, 8.0], "expected": 51.5}, {"input": [51.5, 8.5], "expected": 51.5}, {"input": [51.5, 9.0], "expected": 51.5}, {"input": [51.5, 9.5], "expected": 51.5}, {"input": [51.5, 10.0], "expected": 51.5}, {"input": [51.5, 10.5], "expected": 51.5}, {"input": [51.5, 11.0], "expected": 51.5}, {"input": [51.5, 11.5], "expected": 51.5}, {"input": [51.5, 12.0], "expected": 51.5}, {"input": [51.5, 12.5], "expected": 51.5}, {"input": [51.5, 13.0], "expected": 51.5}, {"input": [51.5, 13.5], "expected": 51.5}, {"input": [51.5, 14.0], "expected": 51.5}, {"input": [51.5, 14.5], "expected": 51.5}, {"input": [51.5, 15.0], "expected": 51.5}, {"input": [51.5, 15.5], "expected": 51.5}, {"input": [51.5, 16.0], "expected": 51.5}, {"input": [51.5, 16.5], "expected": 51.5}, {"input": [51.5, 17.0], "expected": 51.5}, {"input": [51.5, 17.5], "expected": 51.5}, {"input": [51.5, 18.0], "expected": 51.5}, {"input": [51.5, 18.5], "expected": 51.50000000000001}, {"input": [51.5, 19.0], "expected": 51.50000000000001}, {"input": [51.5, 19.5], "expected": 51.500000000000014}, {"input": [51.5, 20.0], "expected": 51.50000000000002}, {"input": [51.5, 20.5], "expected": 51.500000000000036}, {"input": [51.5, 21.0], "expected": 51.50000000000006}, {"input": [51.5, 21.5], "expected": 51.50000000000009}, {"input": [51.5, 22.0], "expected": 51.500000000000156}, {"input": [51.5, 22.5], "expected": 51.500000000000256}, {"input": [51.5, 23.0], "expected": 51.50000000000042}, {"input": [51.5, 23.5], "expected": 51.50000000000069}, {"input": [51.5, 24.0], "expected": 51.50000000000114}, {"input": [51.5, 24.5], "expected": 51.50000000000188}, {"input": [51.5, 25.0], "expected": 51.5000000000031}, {"input": [51.5, 25.5], "expected": 51.50000000000511}, {"input": [51.5, 26.0], "expected": 51.50000000000842}, {"input": [51.5, 26.5], "expected": 51.50000000001389}, {"input": [51.5, 27.0], "expected": 51.5000000000229}, {"input": [51.5, 27.5], "expected": 51.50000000003775}, {"input": [51.5, 28.0], "expected": 51.50000000006224}, {"input": [51.5, 28.5], "expected": 51.50000000010262}, {"input": [51.5, 29.0], "expected": 51.50000000016919}, {"input": [51.5, 29.5], "expected": 51.500000000278945}, {"input": [51.5, 30.0], "expected": 51.500000000459906}, {"input": [51.5, 30.5], "expected": 51.500000000758256}, {"input": [51.5, 31.0], "expected": 51.50000000125015}, {"input": [51.5, 31.5], "expected": 51.50000000206116}, {"input": [51.5, 32.0], "expected": 51.50000000339827}, {"input": [51.5, 32.5], "expected": 51.50000000560279}, {"input": [51.5, 33.0], "expected": 51.500000009237446}, {"input": [51.5, 33.5], "expected": 51.50000001522998}, {"input": [51.5, 34.0], "expected": 51.50000002510999}, {"input": [51.5, 34.5], "expected": 51.500000041399375}, {"input": [51.5, 35.0], "expected": 51.50000006825603}, {"input": [51.5, 35.5], "expected": 51.50000011253517}, {"input": [51.5, 36.0], "expected": 51.50000018553912}, {"input": [51.5, 36.5], "expected": 51.500000305902276}, {"input": [51.5, 37.0], "expected": 51.50000050434753}, {"input": [51.5, 37.5], "expected": 51.500000831528375}, {"input": [51.5, 38.0], "expected": 51.500001370958145}, {"input": [51.5, 38.5], "expected": 51.50000226032685}, {"input": [51.5, 39.0], "expected": 51.50000372664623}, {"input": [51.5, 39.5], "expected": 51.50000614419348}, {"input": [51.5, 40.0], "expected": 51.50001013004229}, {"input": [51.5, 40.5], "expected": 51.50001670156132}, {"input": [51.5, 41.0], "expected": 51.50002753607023}, {"input": [51.5, 41.5], "expected": 51.50004539889922}, {"input": [51.5, 42.0], "expected": 51.50007484902863}, {"input": [51.5, 42.5], "expected": 51.50012340218972}, {"input": [51.5, 43.0], "expected": 51.50020344767213}, {"input": [51.5, 43.5], "expected": 51.5003354063729}, {"input": [51.5, 44.0], "expected": 51.50055293147536}, {"input": [51.5, 44.5], "expected": 51.50091146645377}, {"input": [51.5, 45.0], "expected": 51.50150231015976}, {"input": [51.5, 45.5], "expected": 51.50247568513773}, {"input": [51.5, 46.0], "expected": 51.50407844327057}, {"input": [51.5, 46.5], "expected": 51.50671534848912}, {"input": [51.5, 47.0], "expected": 51.5110477448486}, {"input": [51.5, 47.5], "expected": 51.51814992791781}, {"input": [51.5, 48.0], "expected": 51.52975041827262}, {"input": [51.5, 48.5], "expected": 51.548587351573744}, {"input": [51.5, 49.0], "expected": 51.57888973429255}, {"input": [51.5, 49.5], "expected": 51.62692801104297}, {"input": [51.5, 50.0], "expected": 51.70141327798275}, {"input": [51.5, 50.5], "expected": 51.81326168751822}, {"input": [51.5, 51.0], "expected": 51.97407698418011}, {"input": [51.5, 51.5], "expected": 52.19314718055995}, {"input": [51.5, 52.0], "expected": 52.47407698418011}, {"input": [51.5, 52.5], "expected": 52.81326168751822}, {"input": [51.5, 53.0], "expected": 53.20141327798275}, {"input": [51.5, 53.5], "expected": 53.62692801104297}, {"input": [51.5, 54.0], "expected": 54.07888973429255}, {"input": [51.5, 54.5], "expected": 54.548587351573744}, {"input": [51.5, 55.0], "expected": 55.02975041827262}, {"input": [51.5, 55.5], "expected": 55.51814992791781}, {"input": [51.5, 56.0], "expected": 56.0110477448486}, {"input": [51.5, 56.5], "expected": 56.50671534848912}, {"input": [51.5, 57.0], "expected": 57.00407844327057}, {"input": [51.5, 57.5], "expected": 57.50247568513773}, {"input": [51.5, 58.0], "expected": 58.00150231015976}, {"input": [51.5, 58.5], "expected": 58.50091146645377}, {"input": [51.5, 59.0], "expected": 59.00055293147536}, {"input": [51.5, 59.5], "expected": 59.5003354063729}, {"input": [51.5, 60.0], "expected": 60.00020344767213}, {"input": [51.5, 60.5], "expected": 60.50012340218972}, {"input": [51.5, 61.0], "expected": 61.00007484902863}, {"input": [51.5, 61.5], "expected": 61.50004539889922}, {"input": [51.5, 62.0], "expected": 62.00002753607023}, {"input": [51.5, 62.5], "expected": 62.50001670156132}, {"input": [51.5, 63.0], "expected": 63.00001013004229}, {"input": [51.5, 63.5], "expected": 63.50000614419348}, {"input": [51.5, 64.0], "expected": 64.00000372664623}, {"input": [51.5, 64.5], "expected": 64.50000226032685}, {"input": [51.5, 65.0], "expected": 65.00000137095815}, {"input": [51.5, 65.5], "expected": 65.50000083152837}, {"input": [51.5, 66.0], "expected": 66.00000050434754}, {"input": [51.5, 66.5], "expected": 66.50000030590228}, {"input": [51.5, 67.0], "expected": 67.00000018553912}, {"input": [51.5, 67.5], "expected": 67.50000011253516}, {"input": [51.5, 68.0], "expected": 68.00000006825603}, {"input": [51.5, 68.5], "expected": 68.50000004139937}, {"input": [51.5, 69.0], "expected": 69.00000002511}, {"input": [51.5, 69.5], "expected": 69.50000001522999}, {"input": [51.5, 70.0], "expected": 70.00000000923745}, {"input": [51.5, 70.5], "expected": 70.5000000056028}, {"input": [51.5, 71.0], "expected": 71.00000000339827}, {"input": [51.5, 71.5], "expected": 71.50000000206116}, {"input": [51.5, 72.0], "expected": 72.00000000125016}, {"input": [51.5, 72.5], "expected": 72.50000000075826}, {"input": [51.5, 73.0], "expected": 73.0000000004599}, {"input": [51.5, 73.5], "expected": 73.50000000027894}, {"input": [51.5, 74.0], "expected": 74.0000000001692}, {"input": [51.5, 74.5], "expected": 74.50000000010262}, {"input": [51.5, 75.0], "expected": 75.00000000006224}, {"input": [51.5, 75.5], "expected": 75.50000000003776}, {"input": [51.5, 76.0], "expected": 76.0000000000229}, {"input": [51.5, 76.5], "expected": 76.50000000001388}, {"input": [51.5, 77.0], "expected": 77.00000000000843}, {"input": [51.5, 77.5], "expected": 77.50000000000512}, {"input": [51.5, 78.0], "expected": 78.0000000000031}, {"input": [51.5, 78.5], "expected": 78.50000000000188}, {"input": [51.5, 79.0], "expected": 79.00000000000114}, {"input": [51.5, 79.5], "expected": 79.5000000000007}, {"input": [51.5, 80.0], "expected": 80.00000000000043}, {"input": [51.5, 80.5], "expected": 80.50000000000026}, {"input": [51.5, 81.0], "expected": 81.00000000000016}, {"input": [51.5, 81.5], "expected": 81.5000000000001}, {"input": [51.5, 82.0], "expected": 82.00000000000006}, {"input": [51.5, 82.5], "expected": 82.50000000000003}, {"input": [51.5, 83.0], "expected": 83.00000000000001}, {"input": [51.5, 83.5], "expected": 83.50000000000001}, {"input": [51.5, 84.0], "expected": 84.00000000000001}, {"input": [51.5, 84.5], "expected": 84.5}, {"input": [51.5, 85.0], "expected": 85.0}, {"input": [51.5, 85.5], "expected": 85.5}, {"input": [51.5, 86.0], "expected": 86.0}, {"input": [51.5, 86.5], "expected": 86.5}, {"input": [51.5, 87.0], "expected": 87.0}, {"input": [51.5, 87.5], "expected": 87.5}, {"input": [51.5, 88.0], "expected": 88.0}, {"input": [51.5, 88.5], "expected": 88.5}, {"input": [51.5, 89.0], "expected": 89.0}, {"input": [51.5, 89.5], "expected": 89.5}, {"input": [51.5, 90.0], "expected": 90.0}, {"input": [51.5, 90.5], "expected": 90.5}, {"input": [51.5, 91.0], "expected": 91.0}, {"input": [51.5, 91.5], "expected": 91.5}, {"input": [51.5, 92.0], "expected": 92.0}, {"input": [51.5, 92.5], "expected": 92.5}, {"input": [51.5, 93.0], "expected": 93.0}, {"input": [51.5, 93.5], "expected": 93.5}, {"input": [51.5, 94.0], "expected": 94.0}, {"input": [51.5, 94.5], "expected": 94.5}, {"input": [51.5, 95.0], "expected": 95.0}, {"input": [51.5, 95.5], "expected": 95.5}, {"input": [51.5, 96.0], "expected": 96.0}, {"input": [51.5, 96.5], "expected": 96.5}, {"input": [51.5, 97.0], "expected": 97.0}, {"input": [51.5, 97.5], "expected": 97.5}, {"input": [51.5, 98.0], "expected": 98.0}, {"input": [51.5, 98.5], "expected": 98.5}, {"input": [51.5, 99.0], "expected": 99.0}, {"input": [51.5, 99.5], "expected": 99.5}, {"input": [52.0, -100.0], "expected": 52.0}, {"input": [52.0, -99.5], "expected": 52.0}, {"input": [52.0, -99.0], "expected": 52.0}, {"input": [52.0, -98.5], "expected": 52.0}, {"input": [52.0, -98.0], "expected": 52.0}, {"input": [52.0, -97.5], "expected": 52.0}, {"input": [52.0, -97.0], "expected": 52.0}, {"input": [52.0, -96.5], "expected": 52.0}, {"input": [52.0, -96.0], "expected": 52.0}, {"input": [52.0, -95.5], "expected": 52.0}, {"input": [52.0, -95.0], "expected": 52.0}, {"input": [52.0, -94.5], "expected": 52.0}, {"input": [52.0, -94.0], "expected": 52.0}, {"input": [52.0, -93.5], "expected": 52.0}, {"input": [52.0, -93.0], "expected": 52.0}, {"input": [52.0, -92.5], "expected": 52.0}, {"input": [52.0, -92.0], "expected": 52.0}, {"input": [52.0, -91.5], "expected": 52.0}, {"input": [52.0, -91.0], "expected": 52.0}, {"input": [52.0, -90.5], "expected": 52.0}, {"input": [52.0, -90.0], "expected": 52.0}, {"input": [52.0, -89.5], "expected": 52.0}, {"input": [52.0, -89.0], "expected": 52.0}, {"input": [52.0, -88.5], "expected": 52.0}, {"input": [52.0, -88.0], "expected": 52.0}, {"input": [52.0, -87.5], "expected": 52.0}, {"input": [52.0, -87.0], "expected": 52.0}, {"input": [52.0, -86.5], "expected": 52.0}, {"input": [52.0, -86.0], "expected": 52.0}, {"input": [52.0, -85.5], "expected": 52.0}, {"input": [52.0, -85.0], "expected": 52.0}, {"input": [52.0, -84.5], "expected": 52.0}, {"input": [52.0, -84.0], "expected": 52.0}, {"input": [52.0, -83.5], "expected": 52.0}, {"input": [52.0, -83.0], "expected": 52.0}, {"input": [52.0, -82.5], "expected": 52.0}, {"input": [52.0, -82.0], "expected": 52.0}, {"input": [52.0, -81.5], "expected": 52.0}, {"input": [52.0, -81.0], "expected": 52.0}, {"input": [52.0, -80.5], "expected": 52.0}, {"input": [52.0, -80.0], "expected": 52.0}, {"input": [52.0, -79.5], "expected": 52.0}, {"input": [52.0, -79.0], "expected": 52.0}, {"input": [52.0, -78.5], "expected": 52.0}, {"input": [52.0, -78.0], "expected": 52.0}, {"input": [52.0, -77.5], "expected": 52.0}, {"input": [52.0, -77.0], "expected": 52.0}, {"input": [52.0, -76.5], "expected": 52.0}, {"input": [52.0, -76.0], "expected": 52.0}, {"input": [52.0, -75.5], "expected": 52.0}, {"input": [52.0, -75.0], "expected": 52.0}, {"input": [52.0, -74.5], "expected": 52.0}, {"input": [52.0, -74.0], "expected": 52.0}, {"input": [52.0, -73.5], "expected": 52.0}, {"input": [52.0, -73.0], "expected": 52.0}, {"input": [52.0, -72.5], "expected": 52.0}, {"input": [52.0, -72.0], "expected": 52.0}, {"input": [52.0, -71.5], "expected": 52.0}, {"input": [52.0, -71.0], "expected": 52.0}, {"input": [52.0, -70.5], "expected": 52.0}, {"input": [52.0, -70.0], "expected": 52.0}, {"input": [52.0, -69.5], "expected": 52.0}, {"input": [52.0, -69.0], "expected": 52.0}, {"input": [52.0, -68.5], "expected": 52.0}, {"input": [52.0, -68.0], "expected": 52.0}, {"input": [52.0, -67.5], "expected": 52.0}, {"input": [52.0, -67.0], "expected": 52.0}, {"input": [52.0, -66.5], "expected": 52.0}, {"input": [52.0, -66.0], "expected": 52.0}, {"input": [52.0, -65.5], "expected": 52.0}, {"input": [52.0, -65.0], "expected": 52.0}, {"input": [52.0, -64.5], "expected": 52.0}, {"input": [52.0, -64.0], "expected": 52.0}, {"input": [52.0, -63.5], "expected": 52.0}, {"input": [52.0, -63.0], "expected": 52.0}, {"input": [52.0, -62.5], "expected": 52.0}, {"input": [52.0, -62.0], "expected": 52.0}, {"input": [52.0, -61.5], "expected": 52.0}, {"input": [52.0, -61.0], "expected": 52.0}, {"input": [52.0, -60.5], "expected": 52.0}, {"input": [52.0, -60.0], "expected": 52.0}, {"input": [52.0, -59.5], "expected": 52.0}, {"input": [52.0, -59.0], "expected": 52.0}, {"input": [52.0, -58.5], "expected": 52.0}, {"input": [52.0, -58.0], "expected": 52.0}, {"input": [52.0, -57.5], "expected": 52.0}, {"input": [52.0, -57.0], "expected": 52.0}, {"input": [52.0, -56.5], "expected": 52.0}, {"input": [52.0, -56.0], "expected": 52.0}, {"input": [52.0, -55.5], "expected": 52.0}, {"input": [52.0, -55.0], "expected": 52.0}, {"input": [52.0, -54.5], "expected": 52.0}, {"input": [52.0, -54.0], "expected": 52.0}, {"input": [52.0, -53.5], "expected": 52.0}, {"input": [52.0, -53.0], "expected": 52.0}, {"input": [52.0, -52.5], "expected": 52.0}, {"input": [52.0, -52.0], "expected": 52.0}, {"input": [52.0, -51.5], "expected": 52.0}, {"input": [52.0, -51.0], "expected": 52.0}, {"input": [52.0, -50.5], "expected": 52.0}, {"input": [52.0, -50.0], "expected": 52.0}, {"input": [52.0, -49.5], "expected": 52.0}, {"input": [52.0, -49.0], "expected": 52.0}, {"input": [52.0, -48.5], "expected": 52.0}, {"input": [52.0, -48.0], "expected": 52.0}, {"input": [52.0, -47.5], "expected": 52.0}, {"input": [52.0, -47.0], "expected": 52.0}, {"input": [52.0, -46.5], "expected": 52.0}, {"input": [52.0, -46.0], "expected": 52.0}, {"input": [52.0, -45.5], "expected": 52.0}, {"input": [52.0, -45.0], "expected": 52.0}, {"input": [52.0, -44.5], "expected": 52.0}, {"input": [52.0, -44.0], "expected": 52.0}, {"input": [52.0, -43.5], "expected": 52.0}, {"input": [52.0, -43.0], "expected": 52.0}, {"input": [52.0, -42.5], "expected": 52.0}, {"input": [52.0, -42.0], "expected": 52.0}, {"input": [52.0, -41.5], "expected": 52.0}, {"input": [52.0, -41.0], "expected": 52.0}, {"input": [52.0, -40.5], "expected": 52.0}, {"input": [52.0, -40.0], "expected": 52.0}, {"input": [52.0, -39.5], "expected": 52.0}, {"input": [52.0, -39.0], "expected": 52.0}, {"input": [52.0, -38.5], "expected": 52.0}, {"input": [52.0, -38.0], "expected": 52.0}, {"input": [52.0, -37.5], "expected": 52.0}, {"input": [52.0, -37.0], "expected": 52.0}, {"input": [52.0, -36.5], "expected": 52.0}, {"input": [52.0, -36.0], "expected": 52.0}, {"input": [52.0, -35.5], "expected": 52.0}, {"input": [52.0, -35.0], "expected": 52.0}, {"input": [52.0, -34.5], "expected": 52.0}, {"input": [52.0, -34.0], "expected": 52.0}, {"input": [52.0, -33.5], "expected": 52.0}, {"input": [52.0, -33.0], "expected": 52.0}, {"input": [52.0, -32.5], "expected": 52.0}, {"input": [52.0, -32.0], "expected": 52.0}, {"input": [52.0, -31.5], "expected": 52.0}, {"input": [52.0, -31.0], "expected": 52.0}, {"input": [52.0, -30.5], "expected": 52.0}, {"input": [52.0, -30.0], "expected": 52.0}, {"input": [52.0, -29.5], "expected": 52.0}, {"input": [52.0, -29.0], "expected": 52.0}, {"input": [52.0, -28.5], "expected": 52.0}, {"input": [52.0, -28.0], "expected": 52.0}, {"input": [52.0, -27.5], "expected": 52.0}, {"input": [52.0, -27.0], "expected": 52.0}, {"input": [52.0, -26.5], "expected": 52.0}, {"input": [52.0, -26.0], "expected": 52.0}, {"input": [52.0, -25.5], "expected": 52.0}, {"input": [52.0, -25.0], "expected": 52.0}, {"input": [52.0, -24.5], "expected": 52.0}, {"input": [52.0, -24.0], "expected": 52.0}, {"input": [52.0, -23.5], "expected": 52.0}, {"input": [52.0, -23.0], "expected": 52.0}, {"input": [52.0, -22.5], "expected": 52.0}, {"input": [52.0, -22.0], "expected": 52.0}, {"input": [52.0, -21.5], "expected": 52.0}, {"input": [52.0, -21.0], "expected": 52.0}, {"input": [52.0, -20.5], "expected": 52.0}, {"input": [52.0, -20.0], "expected": 52.0}, {"input": [52.0, -19.5], "expected": 52.0}, {"input": [52.0, -19.0], "expected": 52.0}, {"input": [52.0, -18.5], "expected": 52.0}, {"input": [52.0, -18.0], "expected": 52.0}, {"input": [52.0, -17.5], "expected": 52.0}, {"input": [52.0, -17.0], "expected": 52.0}, {"input": [52.0, -16.5], "expected": 52.0}, {"input": [52.0, -16.0], "expected": 52.0}, {"input": [52.0, -15.5], "expected": 52.0}, {"input": [52.0, -15.0], "expected": 52.0}, {"input": [52.0, -14.5], "expected": 52.0}, {"input": [52.0, -14.0], "expected": 52.0}, {"input": [52.0, -13.5], "expected": 52.0}, {"input": [52.0, -13.0], "expected": 52.0}, {"input": [52.0, -12.5], "expected": 52.0}, {"input": [52.0, -12.0], "expected": 52.0}, {"input": [52.0, -11.5], "expected": 52.0}, {"input": [52.0, -11.0], "expected": 52.0}, {"input": [52.0, -10.5], "expected": 52.0}, {"input": [52.0, -10.0], "expected": 52.0}, {"input": [52.0, -9.5], "expected": 52.0}, {"input": [52.0, -9.0], "expected": 52.0}, {"input": [52.0, -8.5], "expected": 52.0}, {"input": [52.0, -8.0], "expected": 52.0}, {"input": [52.0, -7.5], "expected": 52.0}, {"input": [52.0, -7.0], "expected": 52.0}, {"input": [52.0, -6.5], "expected": 52.0}, {"input": [52.0, -6.0], "expected": 52.0}, {"input": [52.0, -5.5], "expected": 52.0}, {"input": [52.0, -5.0], "expected": 52.0}, {"input": [52.0, -4.5], "expected": 52.0}, {"input": [52.0, -4.0], "expected": 52.0}, {"input": [52.0, -3.5], "expected": 52.0}, {"input": [52.0, -3.0], "expected": 52.0}, {"input": [52.0, -2.5], "expected": 52.0}, {"input": [52.0, -2.0], "expected": 52.0}, {"input": [52.0, -1.5], "expected": 52.0}, {"input": [52.0, -1.0], "expected": 52.0}, {"input": [52.0, -0.5], "expected": 52.0}, {"input": [52.0, 0.0], "expected": 52.0}, {"input": [52.0, 0.5], "expected": 52.0}, {"input": [52.0, 1.0], "expected": 52.0}, {"input": [52.0, 1.5], "expected": 52.0}, {"input": [52.0, 2.0], "expected": 52.0}, {"input": [52.0, 2.5], "expected": 52.0}, {"input": [52.0, 3.0], "expected": 52.0}, {"input": [52.0, 3.5], "expected": 52.0}, {"input": [52.0, 4.0], "expected": 52.0}, {"input": [52.0, 4.5], "expected": 52.0}, {"input": [52.0, 5.0], "expected": 52.0}, {"input": [52.0, 5.5], "expected": 52.0}, {"input": [52.0, 6.0], "expected": 52.0}, {"input": [52.0, 6.5], "expected": 52.0}, {"input": [52.0, 7.0], "expected": 52.0}, {"input": [52.0, 7.5], "expected": 52.0}, {"input": [52.0, 8.0], "expected": 52.0}, {"input": [52.0, 8.5], "expected": 52.0}, {"input": [52.0, 9.0], "expected": 52.0}, {"input": [52.0, 9.5], "expected": 52.0}, {"input": [52.0, 10.0], "expected": 52.0}, {"input": [52.0, 10.5], "expected": 52.0}, {"input": [52.0, 11.0], "expected": 52.0}, {"input": [52.0, 11.5], "expected": 52.0}, {"input": [52.0, 12.0], "expected": 52.0}, {"input": [52.0, 12.5], "expected": 52.0}, {"input": [52.0, 13.0], "expected": 52.0}, {"input": [52.0, 13.5], "expected": 52.0}, {"input": [52.0, 14.0], "expected": 52.0}, {"input": [52.0, 14.5], "expected": 52.0}, {"input": [52.0, 15.0], "expected": 52.0}, {"input": [52.0, 15.5], "expected": 52.0}, {"input": [52.0, 16.0], "expected": 52.0}, {"input": [52.0, 16.5], "expected": 52.0}, {"input": [52.0, 17.0], "expected": 52.0}, {"input": [52.0, 17.5], "expected": 52.0}, {"input": [52.0, 18.0], "expected": 52.0}, {"input": [52.0, 18.5], "expected": 52.0}, {"input": [52.0, 19.0], "expected": 52.00000000000001}, {"input": [52.0, 19.5], "expected": 52.00000000000001}, {"input": [52.0, 20.0], "expected": 52.000000000000014}, {"input": [52.0, 20.5], "expected": 52.00000000000002}, {"input": [52.0, 21.0], "expected": 52.000000000000036}, {"input": [52.0, 21.5], "expected": 52.00000000000006}, {"input": [52.0, 22.0], "expected": 52.00000000000009}, {"input": [52.0, 22.5], "expected": 52.000000000000156}, {"input": [52.0, 23.0], "expected": 52.000000000000256}, {"input": [52.0, 23.5], "expected": 52.00000000000042}, {"input": [52.0, 24.0], "expected": 52.00000000000069}, {"input": [52.0, 24.5], "expected": 52.00000000000114}, {"input": [52.0, 25.0], "expected": 52.00000000000188}, {"input": [52.0, 25.5], "expected": 52.0000000000031}, {"input": [52.0, 26.0], "expected": 52.00000000000511}, {"input": [52.0, 26.5], "expected": 52.00000000000842}, {"input": [52.0, 27.0], "expected": 52.00000000001389}, {"input": [52.0, 27.5], "expected": 52.0000000000229}, {"input": [52.0, 28.0], "expected": 52.00000000003775}, {"input": [52.0, 28.5], "expected": 52.00000000006224}, {"input": [52.0, 29.0], "expected": 52.00000000010262}, {"input": [52.0, 29.5], "expected": 52.00000000016919}, {"input": [52.0, 30.0], "expected": 52.000000000278945}, {"input": [52.0, 30.5], "expected": 52.000000000459906}, {"input": [52.0, 31.0], "expected": 52.000000000758256}, {"input": [52.0, 31.5], "expected": 52.00000000125015}, {"input": [52.0, 32.0], "expected": 52.00000000206116}, {"input": [52.0, 32.5], "expected": 52.00000000339827}, {"input": [52.0, 33.0], "expected": 52.00000000560279}, {"input": [52.0, 33.5], "expected": 52.000000009237446}, {"input": [52.0, 34.0], "expected": 52.00000001522998}, {"input": [52.0, 34.5], "expected": 52.00000002510999}, {"input": [52.0, 35.0], "expected": 52.000000041399375}, {"input": [52.0, 35.5], "expected": 52.00000006825603}, {"input": [52.0, 36.0], "expected": 52.00000011253517}, {"input": [52.0, 36.5], "expected": 52.00000018553912}, {"input": [52.0, 37.0], "expected": 52.000000305902276}, {"input": [52.0, 37.5], "expected": 52.00000050434753}, {"input": [52.0, 38.0], "expected": 52.000000831528375}, {"input": [52.0, 38.5], "expected": 52.000001370958145}, {"input": [52.0, 39.0], "expected": 52.00000226032685}, {"input": [52.0, 39.5], "expected": 52.00000372664623}, {"input": [52.0, 40.0], "expected": 52.00000614419348}, {"input": [52.0, 40.5], "expected": 52.00001013004229}, {"input": [52.0, 41.0], "expected": 52.00001670156132}, {"input": [52.0, 41.5], "expected": 52.00002753607023}, {"input": [52.0, 42.0], "expected": 52.00004539889922}, {"input": [52.0, 42.5], "expected": 52.00007484902863}, {"input": [52.0, 43.0], "expected": 52.00012340218972}, {"input": [52.0, 43.5], "expected": 52.00020344767213}, {"input": [52.0, 44.0], "expected": 52.0003354063729}, {"input": [52.0, 44.5], "expected": 52.00055293147536}, {"input": [52.0, 45.0], "expected": 52.00091146645377}, {"input": [52.0, 45.5], "expected": 52.00150231015976}, {"input": [52.0, 46.0], "expected": 52.00247568513773}, {"input": [52.0, 46.5], "expected": 52.00407844327057}, {"input": [52.0, 47.0], "expected": 52.00671534848912}, {"input": [52.0, 47.5], "expected": 52.0110477448486}, {"input": [52.0, 48.0], "expected": 52.01814992791781}, {"input": [52.0, 48.5], "expected": 52.02975041827262}, {"input": [52.0, 49.0], "expected": 52.048587351573744}, {"input": [52.0, 49.5], "expected": 52.07888973429255}, {"input": [52.0, 50.0], "expected": 52.12692801104297}, {"input": [52.0, 50.5], "expected": 52.20141327798275}, {"input": [52.0, 51.0], "expected": 52.31326168751822}, {"input": [52.0, 51.5], "expected": 52.47407698418011}, {"input": [52.0, 52.0], "expected": 52.69314718055995}, {"input": [52.0, 52.5], "expected": 52.97407698418011}, {"input": [52.0, 53.0], "expected": 53.31326168751822}, {"input": [52.0, 53.5], "expected": 53.70141327798275}, {"input": [52.0, 54.0], "expected": 54.12692801104297}, {"input": [52.0, 54.5], "expected": 54.57888973429255}, {"input": [52.0, 55.0], "expected": 55.048587351573744}, {"input": [52.0, 55.5], "expected": 55.52975041827262}, {"input": [52.0, 56.0], "expected": 56.01814992791781}, {"input": [52.0, 56.5], "expected": 56.5110477448486}, {"input": [52.0, 57.0], "expected": 57.00671534848912}, {"input": [52.0, 57.5], "expected": 57.50407844327057}, {"input": [52.0, 58.0], "expected": 58.00247568513773}, {"input": [52.0, 58.5], "expected": 58.50150231015976}, {"input": [52.0, 59.0], "expected": 59.00091146645377}, {"input": [52.0, 59.5], "expected": 59.50055293147536}, {"input": [52.0, 60.0], "expected": 60.0003354063729}, {"input": [52.0, 60.5], "expected": 60.50020344767213}, {"input": [52.0, 61.0], "expected": 61.00012340218972}, {"input": [52.0, 61.5], "expected": 61.50007484902863}, {"input": [52.0, 62.0], "expected": 62.00004539889922}, {"input": [52.0, 62.5], "expected": 62.50002753607023}, {"input": [52.0, 63.0], "expected": 63.00001670156132}, {"input": [52.0, 63.5], "expected": 63.50001013004229}, {"input": [52.0, 64.0], "expected": 64.00000614419348}, {"input": [52.0, 64.5], "expected": 64.50000372664623}, {"input": [52.0, 65.0], "expected": 65.00000226032685}, {"input": [52.0, 65.5], "expected": 65.50000137095815}, {"input": [52.0, 66.0], "expected": 66.00000083152837}, {"input": [52.0, 66.5], "expected": 66.50000050434754}, {"input": [52.0, 67.0], "expected": 67.00000030590228}, {"input": [52.0, 67.5], "expected": 67.50000018553912}, {"input": [52.0, 68.0], "expected": 68.00000011253516}, {"input": [52.0, 68.5], "expected": 68.50000006825603}, {"input": [52.0, 69.0], "expected": 69.00000004139937}, {"input": [52.0, 69.5], "expected": 69.50000002511}, {"input": [52.0, 70.0], "expected": 70.00000001522999}, {"input": [52.0, 70.5], "expected": 70.50000000923745}, {"input": [52.0, 71.0], "expected": 71.0000000056028}, {"input": [52.0, 71.5], "expected": 71.50000000339827}, {"input": [52.0, 72.0], "expected": 72.00000000206116}, {"input": [52.0, 72.5], "expected": 72.50000000125016}, {"input": [52.0, 73.0], "expected": 73.00000000075826}, {"input": [52.0, 73.5], "expected": 73.5000000004599}, {"input": [52.0, 74.0], "expected": 74.00000000027894}, {"input": [52.0, 74.5], "expected": 74.5000000001692}, {"input": [52.0, 75.0], "expected": 75.00000000010262}, {"input": [52.0, 75.5], "expected": 75.50000000006224}, {"input": [52.0, 76.0], "expected": 76.00000000003776}, {"input": [52.0, 76.5], "expected": 76.5000000000229}, {"input": [52.0, 77.0], "expected": 77.00000000001388}, {"input": [52.0, 77.5], "expected": 77.50000000000843}, {"input": [52.0, 78.0], "expected": 78.00000000000512}, {"input": [52.0, 78.5], "expected": 78.5000000000031}, {"input": [52.0, 79.0], "expected": 79.00000000000188}, {"input": [52.0, 79.5], "expected": 79.50000000000114}, {"input": [52.0, 80.0], "expected": 80.0000000000007}, {"input": [52.0, 80.5], "expected": 80.50000000000043}, {"input": [52.0, 81.0], "expected": 81.00000000000026}, {"input": [52.0, 81.5], "expected": 81.50000000000016}, {"input": [52.0, 82.0], "expected": 82.0000000000001}, {"input": [52.0, 82.5], "expected": 82.50000000000006}, {"input": [52.0, 83.0], "expected": 83.00000000000003}, {"input": [52.0, 83.5], "expected": 83.50000000000001}, {"input": [52.0, 84.0], "expected": 84.00000000000001}, {"input": [52.0, 84.5], "expected": 84.50000000000001}, {"input": [52.0, 85.0], "expected": 85.0}, {"input": [52.0, 85.5], "expected": 85.5}, {"input": [52.0, 86.0], "expected": 86.0}, {"input": [52.0, 86.5], "expected": 86.5}, {"input": [52.0, 87.0], "expected": 87.0}, {"input": [52.0, 87.5], "expected": 87.5}, {"input": [52.0, 88.0], "expected": 88.0}, {"input": [52.0, 88.5], "expected": 88.5}, {"input": [52.0, 89.0], "expected": 89.0}, {"input": [52.0, 89.5], "expected": 89.5}, {"input": [52.0, 90.0], "expected": 90.0}, {"input": [52.0, 90.5], "expected": 90.5}, {"input": [52.0, 91.0], "expected": 91.0}, {"input": [52.0, 91.5], "expected": 91.5}, {"input": [52.0, 92.0], "expected": 92.0}, {"input": [52.0, 92.5], "expected": 92.5}, {"input": [52.0, 93.0], "expected": 93.0}, {"input": [52.0, 93.5], "expected": 93.5}, {"input": [52.0, 94.0], "expected": 94.0}, {"input": [52.0, 94.5], "expected": 94.5}, {"input": [52.0, 95.0], "expected": 95.0}, {"input": [52.0, 95.5], "expected": 95.5}, {"input": [52.0, 96.0], "expected": 96.0}, {"input": [52.0, 96.5], "expected": 96.5}, {"input": [52.0, 97.0], "expected": 97.0}, {"input": [52.0, 97.5], "expected": 97.5}, {"input": [52.0, 98.0], "expected": 98.0}, {"input": [52.0, 98.5], "expected": 98.5}, {"input": [52.0, 99.0], "expected": 99.0}, {"input": [52.0, 99.5], "expected": 99.5}, {"input": [52.5, -100.0], "expected": 52.5}, {"input": [52.5, -99.5], "expected": 52.5}, {"input": [52.5, -99.0], "expected": 52.5}, {"input": [52.5, -98.5], "expected": 52.5}, {"input": [52.5, -98.0], "expected": 52.5}, {"input": [52.5, -97.5], "expected": 52.5}, {"input": [52.5, -97.0], "expected": 52.5}, {"input": [52.5, -96.5], "expected": 52.5}, {"input": [52.5, -96.0], "expected": 52.5}, {"input": [52.5, -95.5], "expected": 52.5}, {"input": [52.5, -95.0], "expected": 52.5}, {"input": [52.5, -94.5], "expected": 52.5}, {"input": [52.5, -94.0], "expected": 52.5}, {"input": [52.5, -93.5], "expected": 52.5}, {"input": [52.5, -93.0], "expected": 52.5}, {"input": [52.5, -92.5], "expected": 52.5}, {"input": [52.5, -92.0], "expected": 52.5}, {"input": [52.5, -91.5], "expected": 52.5}, {"input": [52.5, -91.0], "expected": 52.5}, {"input": [52.5, -90.5], "expected": 52.5}, {"input": [52.5, -90.0], "expected": 52.5}, {"input": [52.5, -89.5], "expected": 52.5}, {"input": [52.5, -89.0], "expected": 52.5}, {"input": [52.5, -88.5], "expected": 52.5}, {"input": [52.5, -88.0], "expected": 52.5}, {"input": [52.5, -87.5], "expected": 52.5}, {"input": [52.5, -87.0], "expected": 52.5}, {"input": [52.5, -86.5], "expected": 52.5}, {"input": [52.5, -86.0], "expected": 52.5}, {"input": [52.5, -85.5], "expected": 52.5}, {"input": [52.5, -85.0], "expected": 52.5}, {"input": [52.5, -84.5], "expected": 52.5}, {"input": [52.5, -84.0], "expected": 52.5}, {"input": [52.5, -83.5], "expected": 52.5}, {"input": [52.5, -83.0], "expected": 52.5}, {"input": [52.5, -82.5], "expected": 52.5}, {"input": [52.5, -82.0], "expected": 52.5}, {"input": [52.5, -81.5], "expected": 52.5}, {"input": [52.5, -81.0], "expected": 52.5}, {"input": [52.5, -80.5], "expected": 52.5}, {"input": [52.5, -80.0], "expected": 52.5}, {"input": [52.5, -79.5], "expected": 52.5}, {"input": [52.5, -79.0], "expected": 52.5}, {"input": [52.5, -78.5], "expected": 52.5}, {"input": [52.5, -78.0], "expected": 52.5}, {"input": [52.5, -77.5], "expected": 52.5}, {"input": [52.5, -77.0], "expected": 52.5}, {"input": [52.5, -76.5], "expected": 52.5}, {"input": [52.5, -76.0], "expected": 52.5}, {"input": [52.5, -75.5], "expected": 52.5}, {"input": [52.5, -75.0], "expected": 52.5}, {"input": [52.5, -74.5], "expected": 52.5}, {"input": [52.5, -74.0], "expected": 52.5}, {"input": [52.5, -73.5], "expected": 52.5}, {"input": [52.5, -73.0], "expected": 52.5}, {"input": [52.5, -72.5], "expected": 52.5}, {"input": [52.5, -72.0], "expected": 52.5}, {"input": [52.5, -71.5], "expected": 52.5}, {"input": [52.5, -71.0], "expected": 52.5}, {"input": [52.5, -70.5], "expected": 52.5}, {"input": [52.5, -70.0], "expected": 52.5}, {"input": [52.5, -69.5], "expected": 52.5}, {"input": [52.5, -69.0], "expected": 52.5}, {"input": [52.5, -68.5], "expected": 52.5}, {"input": [52.5, -68.0], "expected": 52.5}, {"input": [52.5, -67.5], "expected": 52.5}, {"input": [52.5, -67.0], "expected": 52.5}, {"input": [52.5, -66.5], "expected": 52.5}, {"input": [52.5, -66.0], "expected": 52.5}, {"input": [52.5, -65.5], "expected": 52.5}, {"input": [52.5, -65.0], "expected": 52.5}, {"input": [52.5, -64.5], "expected": 52.5}, {"input": [52.5, -64.0], "expected": 52.5}, {"input": [52.5, -63.5], "expected": 52.5}, {"input": [52.5, -63.0], "expected": 52.5}, {"input": [52.5, -62.5], "expected": 52.5}, {"input": [52.5, -62.0], "expected": 52.5}, {"input": [52.5, -61.5], "expected": 52.5}, {"input": [52.5, -61.0], "expected": 52.5}, {"input": [52.5, -60.5], "expected": 52.5}, {"input": [52.5, -60.0], "expected": 52.5}, {"input": [52.5, -59.5], "expected": 52.5}, {"input": [52.5, -59.0], "expected": 52.5}, {"input": [52.5, -58.5], "expected": 52.5}, {"input": [52.5, -58.0], "expected": 52.5}, {"input": [52.5, -57.5], "expected": 52.5}, {"input": [52.5, -57.0], "expected": 52.5}, {"input": [52.5, -56.5], "expected": 52.5}, {"input": [52.5, -56.0], "expected": 52.5}, {"input": [52.5, -55.5], "expected": 52.5}, {"input": [52.5, -55.0], "expected": 52.5}, {"input": [52.5, -54.5], "expected": 52.5}, {"input": [52.5, -54.0], "expected": 52.5}, {"input": [52.5, -53.5], "expected": 52.5}, {"input": [52.5, -53.0], "expected": 52.5}, {"input": [52.5, -52.5], "expected": 52.5}, {"input": [52.5, -52.0], "expected": 52.5}, {"input": [52.5, -51.5], "expected": 52.5}, {"input": [52.5, -51.0], "expected": 52.5}, {"input": [52.5, -50.5], "expected": 52.5}, {"input": [52.5, -50.0], "expected": 52.5}, {"input": [52.5, -49.5], "expected": 52.5}, {"input": [52.5, -49.0], "expected": 52.5}, {"input": [52.5, -48.5], "expected": 52.5}, {"input": [52.5, -48.0], "expected": 52.5}, {"input": [52.5, -47.5], "expected": 52.5}, {"input": [52.5, -47.0], "expected": 52.5}, {"input": [52.5, -46.5], "expected": 52.5}, {"input": [52.5, -46.0], "expected": 52.5}, {"input": [52.5, -45.5], "expected": 52.5}, {"input": [52.5, -45.0], "expected": 52.5}, {"input": [52.5, -44.5], "expected": 52.5}, {"input": [52.5, -44.0], "expected": 52.5}, {"input": [52.5, -43.5], "expected": 52.5}, {"input": [52.5, -43.0], "expected": 52.5}, {"input": [52.5, -42.5], "expected": 52.5}, {"input": [52.5, -42.0], "expected": 52.5}, {"input": [52.5, -41.5], "expected": 52.5}, {"input": [52.5, -41.0], "expected": 52.5}, {"input": [52.5, -40.5], "expected": 52.5}, {"input": [52.5, -40.0], "expected": 52.5}, {"input": [52.5, -39.5], "expected": 52.5}, {"input": [52.5, -39.0], "expected": 52.5}, {"input": [52.5, -38.5], "expected": 52.5}, {"input": [52.5, -38.0], "expected": 52.5}, {"input": [52.5, -37.5], "expected": 52.5}, {"input": [52.5, -37.0], "expected": 52.5}, {"input": [52.5, -36.5], "expected": 52.5}, {"input": [52.5, -36.0], "expected": 52.5}, {"input": [52.5, -35.5], "expected": 52.5}, {"input": [52.5, -35.0], "expected": 52.5}, {"input": [52.5, -34.5], "expected": 52.5}, {"input": [52.5, -34.0], "expected": 52.5}, {"input": [52.5, -33.5], "expected": 52.5}, {"input": [52.5, -33.0], "expected": 52.5}, {"input": [52.5, -32.5], "expected": 52.5}, {"input": [52.5, -32.0], "expected": 52.5}, {"input": [52.5, -31.5], "expected": 52.5}, {"input": [52.5, -31.0], "expected": 52.5}, {"input": [52.5, -30.5], "expected": 52.5}, {"input": [52.5, -30.0], "expected": 52.5}, {"input": [52.5, -29.5], "expected": 52.5}, {"input": [52.5, -29.0], "expected": 52.5}, {"input": [52.5, -28.5], "expected": 52.5}, {"input": [52.5, -28.0], "expected": 52.5}, {"input": [52.5, -27.5], "expected": 52.5}, {"input": [52.5, -27.0], "expected": 52.5}, {"input": [52.5, -26.5], "expected": 52.5}, {"input": [52.5, -26.0], "expected": 52.5}, {"input": [52.5, -25.5], "expected": 52.5}, {"input": [52.5, -25.0], "expected": 52.5}, {"input": [52.5, -24.5], "expected": 52.5}, {"input": [52.5, -24.0], "expected": 52.5}, {"input": [52.5, -23.5], "expected": 52.5}, {"input": [52.5, -23.0], "expected": 52.5}, {"input": [52.5, -22.5], "expected": 52.5}, {"input": [52.5, -22.0], "expected": 52.5}, {"input": [52.5, -21.5], "expected": 52.5}, {"input": [52.5, -21.0], "expected": 52.5}, {"input": [52.5, -20.5], "expected": 52.5}, {"input": [52.5, -20.0], "expected": 52.5}, {"input": [52.5, -19.5], "expected": 52.5}, {"input": [52.5, -19.0], "expected": 52.5}, {"input": [52.5, -18.5], "expected": 52.5}, {"input": [52.5, -18.0], "expected": 52.5}, {"input": [52.5, -17.5], "expected": 52.5}, {"input": [52.5, -17.0], "expected": 52.5}, {"input": [52.5, -16.5], "expected": 52.5}, {"input": [52.5, -16.0], "expected": 52.5}, {"input": [52.5, -15.5], "expected": 52.5}, {"input": [52.5, -15.0], "expected": 52.5}, {"input": [52.5, -14.5], "expected": 52.5}, {"input": [52.5, -14.0], "expected": 52.5}, {"input": [52.5, -13.5], "expected": 52.5}, {"input": [52.5, -13.0], "expected": 52.5}, {"input": [52.5, -12.5], "expected": 52.5}, {"input": [52.5, -12.0], "expected": 52.5}, {"input": [52.5, -11.5], "expected": 52.5}, {"input": [52.5, -11.0], "expected": 52.5}, {"input": [52.5, -10.5], "expected": 52.5}, {"input": [52.5, -10.0], "expected": 52.5}, {"input": [52.5, -9.5], "expected": 52.5}, {"input": [52.5, -9.0], "expected": 52.5}, {"input": [52.5, -8.5], "expected": 52.5}, {"input": [52.5, -8.0], "expected": 52.5}, {"input": [52.5, -7.5], "expected": 52.5}, {"input": [52.5, -7.0], "expected": 52.5}, {"input": [52.5, -6.5], "expected": 52.5}, {"input": [52.5, -6.0], "expected": 52.5}, {"input": [52.5, -5.5], "expected": 52.5}, {"input": [52.5, -5.0], "expected": 52.5}, {"input": [52.5, -4.5], "expected": 52.5}, {"input": [52.5, -4.0], "expected": 52.5}, {"input": [52.5, -3.5], "expected": 52.5}, {"input": [52.5, -3.0], "expected": 52.5}, {"input": [52.5, -2.5], "expected": 52.5}, {"input": [52.5, -2.0], "expected": 52.5}, {"input": [52.5, -1.5], "expected": 52.5}, {"input": [52.5, -1.0], "expected": 52.5}, {"input": [52.5, -0.5], "expected": 52.5}, {"input": [52.5, 0.0], "expected": 52.5}, {"input": [52.5, 0.5], "expected": 52.5}, {"input": [52.5, 1.0], "expected": 52.5}, {"input": [52.5, 1.5], "expected": 52.5}, {"input": [52.5, 2.0], "expected": 52.5}, {"input": [52.5, 2.5], "expected": 52.5}, {"input": [52.5, 3.0], "expected": 52.5}, {"input": [52.5, 3.5], "expected": 52.5}, {"input": [52.5, 4.0], "expected": 52.5}, {"input": [52.5, 4.5], "expected": 52.5}, {"input": [52.5, 5.0], "expected": 52.5}, {"input": [52.5, 5.5], "expected": 52.5}, {"input": [52.5, 6.0], "expected": 52.5}, {"input": [52.5, 6.5], "expected": 52.5}, {"input": [52.5, 7.0], "expected": 52.5}, {"input": [52.5, 7.5], "expected": 52.5}, {"input": [52.5, 8.0], "expected": 52.5}, {"input": [52.5, 8.5], "expected": 52.5}, {"input": [52.5, 9.0], "expected": 52.5}, {"input": [52.5, 9.5], "expected": 52.5}, {"input": [52.5, 10.0], "expected": 52.5}, {"input": [52.5, 10.5], "expected": 52.5}, {"input": [52.5, 11.0], "expected": 52.5}, {"input": [52.5, 11.5], "expected": 52.5}, {"input": [52.5, 12.0], "expected": 52.5}, {"input": [52.5, 12.5], "expected": 52.5}, {"input": [52.5, 13.0], "expected": 52.5}, {"input": [52.5, 13.5], "expected": 52.5}, {"input": [52.5, 14.0], "expected": 52.5}, {"input": [52.5, 14.5], "expected": 52.5}, {"input": [52.5, 15.0], "expected": 52.5}, {"input": [52.5, 15.5], "expected": 52.5}, {"input": [52.5, 16.0], "expected": 52.5}, {"input": [52.5, 16.5], "expected": 52.5}, {"input": [52.5, 17.0], "expected": 52.5}, {"input": [52.5, 17.5], "expected": 52.5}, {"input": [52.5, 18.0], "expected": 52.5}, {"input": [52.5, 18.5], "expected": 52.5}, {"input": [52.5, 19.0], "expected": 52.5}, {"input": [52.5, 19.5], "expected": 52.50000000000001}, {"input": [52.5, 20.0], "expected": 52.50000000000001}, {"input": [52.5, 20.5], "expected": 52.500000000000014}, {"input": [52.5, 21.0], "expected": 52.50000000000002}, {"input": [52.5, 21.5], "expected": 52.500000000000036}, {"input": [52.5, 22.0], "expected": 52.50000000000006}, {"input": [52.5, 22.5], "expected": 52.50000000000009}, {"input": [52.5, 23.0], "expected": 52.500000000000156}, {"input": [52.5, 23.5], "expected": 52.500000000000256}, {"input": [52.5, 24.0], "expected": 52.50000000000042}, {"input": [52.5, 24.5], "expected": 52.50000000000069}, {"input": [52.5, 25.0], "expected": 52.50000000000114}, {"input": [52.5, 25.5], "expected": 52.50000000000188}, {"input": [52.5, 26.0], "expected": 52.5000000000031}, {"input": [52.5, 26.5], "expected": 52.50000000000511}, {"input": [52.5, 27.0], "expected": 52.50000000000842}, {"input": [52.5, 27.5], "expected": 52.50000000001389}, {"input": [52.5, 28.0], "expected": 52.5000000000229}, {"input": [52.5, 28.5], "expected": 52.50000000003775}, {"input": [52.5, 29.0], "expected": 52.50000000006224}, {"input": [52.5, 29.5], "expected": 52.50000000010262}, {"input": [52.5, 30.0], "expected": 52.50000000016919}, {"input": [52.5, 30.5], "expected": 52.500000000278945}, {"input": [52.5, 31.0], "expected": 52.500000000459906}, {"input": [52.5, 31.5], "expected": 52.500000000758256}, {"input": [52.5, 32.0], "expected": 52.50000000125015}, {"input": [52.5, 32.5], "expected": 52.50000000206116}, {"input": [52.5, 33.0], "expected": 52.50000000339827}, {"input": [52.5, 33.5], "expected": 52.50000000560279}, {"input": [52.5, 34.0], "expected": 52.500000009237446}, {"input": [52.5, 34.5], "expected": 52.50000001522998}, {"input": [52.5, 35.0], "expected": 52.50000002510999}, {"input": [52.5, 35.5], "expected": 52.500000041399375}, {"input": [52.5, 36.0], "expected": 52.50000006825603}, {"input": [52.5, 36.5], "expected": 52.50000011253517}, {"input": [52.5, 37.0], "expected": 52.50000018553912}, {"input": [52.5, 37.5], "expected": 52.500000305902276}, {"input": [52.5, 38.0], "expected": 52.50000050434753}, {"input": [52.5, 38.5], "expected": 52.500000831528375}, {"input": [52.5, 39.0], "expected": 52.500001370958145}, {"input": [52.5, 39.5], "expected": 52.50000226032685}, {"input": [52.5, 40.0], "expected": 52.50000372664623}, {"input": [52.5, 40.5], "expected": 52.50000614419348}, {"input": [52.5, 41.0], "expected": 52.50001013004229}, {"input": [52.5, 41.5], "expected": 52.50001670156132}, {"input": [52.5, 42.0], "expected": 52.50002753607023}, {"input": [52.5, 42.5], "expected": 52.50004539889922}, {"input": [52.5, 43.0], "expected": 52.50007484902863}, {"input": [52.5, 43.5], "expected": 52.50012340218972}, {"input": [52.5, 44.0], "expected": 52.50020344767213}, {"input": [52.5, 44.5], "expected": 52.5003354063729}, {"input": [52.5, 45.0], "expected": 52.50055293147536}, {"input": [52.5, 45.5], "expected": 52.50091146645377}, {"input": [52.5, 46.0], "expected": 52.50150231015976}, {"input": [52.5, 46.5], "expected": 52.50247568513773}, {"input": [52.5, 47.0], "expected": 52.50407844327057}, {"input": [52.5, 47.5], "expected": 52.50671534848912}, {"input": [52.5, 48.0], "expected": 52.5110477448486}, {"input": [52.5, 48.5], "expected": 52.51814992791781}, {"input": [52.5, 49.0], "expected": 52.52975041827262}, {"input": [52.5, 49.5], "expected": 52.548587351573744}, {"input": [52.5, 50.0], "expected": 52.57888973429255}, {"input": [52.5, 50.5], "expected": 52.62692801104297}, {"input": [52.5, 51.0], "expected": 52.70141327798275}, {"input": [52.5, 51.5], "expected": 52.81326168751822}, {"input": [52.5, 52.0], "expected": 52.97407698418011}, {"input": [52.5, 52.5], "expected": 53.19314718055995}, {"input": [52.5, 53.0], "expected": 53.47407698418011}, {"input": [52.5, 53.5], "expected": 53.81326168751822}, {"input": [52.5, 54.0], "expected": 54.20141327798275}, {"input": [52.5, 54.5], "expected": 54.62692801104297}, {"input": [52.5, 55.0], "expected": 55.07888973429255}, {"input": [52.5, 55.5], "expected": 55.548587351573744}, {"input": [52.5, 56.0], "expected": 56.02975041827262}, {"input": [52.5, 56.5], "expected": 56.51814992791781}, {"input": [52.5, 57.0], "expected": 57.0110477448486}, {"input": [52.5, 57.5], "expected": 57.50671534848912}, {"input": [52.5, 58.0], "expected": 58.00407844327057}, {"input": [52.5, 58.5], "expected": 58.50247568513773}, {"input": [52.5, 59.0], "expected": 59.00150231015976}, {"input": [52.5, 59.5], "expected": 59.50091146645377}, {"input": [52.5, 60.0], "expected": 60.00055293147536}, {"input": [52.5, 60.5], "expected": 60.5003354063729}, {"input": [52.5, 61.0], "expected": 61.00020344767213}, {"input": [52.5, 61.5], "expected": 61.50012340218972}, {"input": [52.5, 62.0], "expected": 62.00007484902863}, {"input": [52.5, 62.5], "expected": 62.50004539889922}, {"input": [52.5, 63.0], "expected": 63.00002753607023}, {"input": [52.5, 63.5], "expected": 63.50001670156132}, {"input": [52.5, 64.0], "expected": 64.00001013004228}, {"input": [52.5, 64.5], "expected": 64.50000614419348}, {"input": [52.5, 65.0], "expected": 65.00000372664623}, {"input": [52.5, 65.5], "expected": 65.50000226032685}, {"input": [52.5, 66.0], "expected": 66.00000137095815}, {"input": [52.5, 66.5], "expected": 66.50000083152837}, {"input": [52.5, 67.0], "expected": 67.00000050434754}, {"input": [52.5, 67.5], "expected": 67.50000030590228}, {"input": [52.5, 68.0], "expected": 68.00000018553912}, {"input": [52.5, 68.5], "expected": 68.50000011253516}, {"input": [52.5, 69.0], "expected": 69.00000006825603}, {"input": [52.5, 69.5], "expected": 69.50000004139937}, {"input": [52.5, 70.0], "expected": 70.00000002511}, {"input": [52.5, 70.5], "expected": 70.50000001522999}, {"input": [52.5, 71.0], "expected": 71.00000000923745}, {"input": [52.5, 71.5], "expected": 71.5000000056028}, {"input": [52.5, 72.0], "expected": 72.00000000339827}, {"input": [52.5, 72.5], "expected": 72.50000000206116}, {"input": [52.5, 73.0], "expected": 73.00000000125016}, {"input": [52.5, 73.5], "expected": 73.50000000075826}, {"input": [52.5, 74.0], "expected": 74.0000000004599}, {"input": [52.5, 74.5], "expected": 74.50000000027894}, {"input": [52.5, 75.0], "expected": 75.0000000001692}, {"input": [52.5, 75.5], "expected": 75.50000000010262}, {"input": [52.5, 76.0], "expected": 76.00000000006224}, {"input": [52.5, 76.5], "expected": 76.50000000003776}, {"input": [52.5, 77.0], "expected": 77.0000000000229}, {"input": [52.5, 77.5], "expected": 77.50000000001388}, {"input": [52.5, 78.0], "expected": 78.00000000000843}, {"input": [52.5, 78.5], "expected": 78.50000000000512}, {"input": [52.5, 79.0], "expected": 79.0000000000031}, {"input": [52.5, 79.5], "expected": 79.50000000000188}, {"input": [52.5, 80.0], "expected": 80.00000000000114}, {"input": [52.5, 80.5], "expected": 80.5000000000007}, {"input": [52.5, 81.0], "expected": 81.00000000000043}, {"input": [52.5, 81.5], "expected": 81.50000000000026}, {"input": [52.5, 82.0], "expected": 82.00000000000016}, {"input": [52.5, 82.5], "expected": 82.5000000000001}, {"input": [52.5, 83.0], "expected": 83.00000000000006}, {"input": [52.5, 83.5], "expected": 83.50000000000003}, {"input": [52.5, 84.0], "expected": 84.00000000000001}, {"input": [52.5, 84.5], "expected": 84.50000000000001}, {"input": [52.5, 85.0], "expected": 85.00000000000001}, {"input": [52.5, 85.5], "expected": 85.5}, {"input": [52.5, 86.0], "expected": 86.0}, {"input": [52.5, 86.5], "expected": 86.5}, {"input": [52.5, 87.0], "expected": 87.0}, {"input": [52.5, 87.5], "expected": 87.5}, {"input": [52.5, 88.0], "expected": 88.0}, {"input": [52.5, 88.5], "expected": 88.5}, {"input": [52.5, 89.0], "expected": 89.0}, {"input": [52.5, 89.5], "expected": 89.5}, {"input": [52.5, 90.0], "expected": 90.0}, {"input": [52.5, 90.5], "expected": 90.5}, {"input": [52.5, 91.0], "expected": 91.0}, {"input": [52.5, 91.5], "expected": 91.5}, {"input": [52.5, 92.0], "expected": 92.0}, {"input": [52.5, 92.5], "expected": 92.5}, {"input": [52.5, 93.0], "expected": 93.0}, {"input": [52.5, 93.5], "expected": 93.5}, {"input": [52.5, 94.0], "expected": 94.0}, {"input": [52.5, 94.5], "expected": 94.5}, {"input": [52.5, 95.0], "expected": 95.0}, {"input": [52.5, 95.5], "expected": 95.5}, {"input": [52.5, 96.0], "expected": 96.0}, {"input": [52.5, 96.5], "expected": 96.5}, {"input": [52.5, 97.0], "expected": 97.0}, {"input": [52.5, 97.5], "expected": 97.5}, {"input": [52.5, 98.0], "expected": 98.0}, {"input": [52.5, 98.5], "expected": 98.5}, {"input": [52.5, 99.0], "expected": 99.0}, {"input": [52.5, 99.5], "expected": 99.5}, {"input": [53.0, -100.0], "expected": 53.0}, {"input": [53.0, -99.5], "expected": 53.0}, {"input": [53.0, -99.0], "expected": 53.0}, {"input": [53.0, -98.5], "expected": 53.0}, {"input": [53.0, -98.0], "expected": 53.0}, {"input": [53.0, -97.5], "expected": 53.0}, {"input": [53.0, -97.0], "expected": 53.0}, {"input": [53.0, -96.5], "expected": 53.0}, {"input": [53.0, -96.0], "expected": 53.0}, {"input": [53.0, -95.5], "expected": 53.0}, {"input": [53.0, -95.0], "expected": 53.0}, {"input": [53.0, -94.5], "expected": 53.0}, {"input": [53.0, -94.0], "expected": 53.0}, {"input": [53.0, -93.5], "expected": 53.0}, {"input": [53.0, -93.0], "expected": 53.0}, {"input": [53.0, -92.5], "expected": 53.0}, {"input": [53.0, -92.0], "expected": 53.0}, {"input": [53.0, -91.5], "expected": 53.0}, {"input": [53.0, -91.0], "expected": 53.0}, {"input": [53.0, -90.5], "expected": 53.0}, {"input": [53.0, -90.0], "expected": 53.0}, {"input": [53.0, -89.5], "expected": 53.0}, {"input": [53.0, -89.0], "expected": 53.0}, {"input": [53.0, -88.5], "expected": 53.0}, {"input": [53.0, -88.0], "expected": 53.0}, {"input": [53.0, -87.5], "expected": 53.0}, {"input": [53.0, -87.0], "expected": 53.0}, {"input": [53.0, -86.5], "expected": 53.0}, {"input": [53.0, -86.0], "expected": 53.0}, {"input": [53.0, -85.5], "expected": 53.0}, {"input": [53.0, -85.0], "expected": 53.0}, {"input": [53.0, -84.5], "expected": 53.0}, {"input": [53.0, -84.0], "expected": 53.0}, {"input": [53.0, -83.5], "expected": 53.0}, {"input": [53.0, -83.0], "expected": 53.0}, {"input": [53.0, -82.5], "expected": 53.0}, {"input": [53.0, -82.0], "expected": 53.0}, {"input": [53.0, -81.5], "expected": 53.0}, {"input": [53.0, -81.0], "expected": 53.0}, {"input": [53.0, -80.5], "expected": 53.0}, {"input": [53.0, -80.0], "expected": 53.0}, {"input": [53.0, -79.5], "expected": 53.0}, {"input": [53.0, -79.0], "expected": 53.0}, {"input": [53.0, -78.5], "expected": 53.0}, {"input": [53.0, -78.0], "expected": 53.0}, {"input": [53.0, -77.5], "expected": 53.0}, {"input": [53.0, -77.0], "expected": 53.0}, {"input": [53.0, -76.5], "expected": 53.0}, {"input": [53.0, -76.0], "expected": 53.0}, {"input": [53.0, -75.5], "expected": 53.0}, {"input": [53.0, -75.0], "expected": 53.0}, {"input": [53.0, -74.5], "expected": 53.0}, {"input": [53.0, -74.0], "expected": 53.0}, {"input": [53.0, -73.5], "expected": 53.0}, {"input": [53.0, -73.0], "expected": 53.0}, {"input": [53.0, -72.5], "expected": 53.0}, {"input": [53.0, -72.0], "expected": 53.0}, {"input": [53.0, -71.5], "expected": 53.0}, {"input": [53.0, -71.0], "expected": 53.0}, {"input": [53.0, -70.5], "expected": 53.0}, {"input": [53.0, -70.0], "expected": 53.0}, {"input": [53.0, -69.5], "expected": 53.0}, {"input": [53.0, -69.0], "expected": 53.0}, {"input": [53.0, -68.5], "expected": 53.0}, {"input": [53.0, -68.0], "expected": 53.0}, {"input": [53.0, -67.5], "expected": 53.0}, {"input": [53.0, -67.0], "expected": 53.0}, {"input": [53.0, -66.5], "expected": 53.0}, {"input": [53.0, -66.0], "expected": 53.0}, {"input": [53.0, -65.5], "expected": 53.0}, {"input": [53.0, -65.0], "expected": 53.0}, {"input": [53.0, -64.5], "expected": 53.0}, {"input": [53.0, -64.0], "expected": 53.0}, {"input": [53.0, -63.5], "expected": 53.0}, {"input": [53.0, -63.0], "expected": 53.0}, {"input": [53.0, -62.5], "expected": 53.0}, {"input": [53.0, -62.0], "expected": 53.0}, {"input": [53.0, -61.5], "expected": 53.0}, {"input": [53.0, -61.0], "expected": 53.0}, {"input": [53.0, -60.5], "expected": 53.0}, {"input": [53.0, -60.0], "expected": 53.0}, {"input": [53.0, -59.5], "expected": 53.0}, {"input": [53.0, -59.0], "expected": 53.0}, {"input": [53.0, -58.5], "expected": 53.0}, {"input": [53.0, -58.0], "expected": 53.0}, {"input": [53.0, -57.5], "expected": 53.0}, {"input": [53.0, -57.0], "expected": 53.0}, {"input": [53.0, -56.5], "expected": 53.0}, {"input": [53.0, -56.0], "expected": 53.0}, {"input": [53.0, -55.5], "expected": 53.0}, {"input": [53.0, -55.0], "expected": 53.0}, {"input": [53.0, -54.5], "expected": 53.0}, {"input": [53.0, -54.0], "expected": 53.0}, {"input": [53.0, -53.5], "expected": 53.0}, {"input": [53.0, -53.0], "expected": 53.0}, {"input": [53.0, -52.5], "expected": 53.0}, {"input": [53.0, -52.0], "expected": 53.0}, {"input": [53.0, -51.5], "expected": 53.0}, {"input": [53.0, -51.0], "expected": 53.0}, {"input": [53.0, -50.5], "expected": 53.0}, {"input": [53.0, -50.0], "expected": 53.0}, {"input": [53.0, -49.5], "expected": 53.0}, {"input": [53.0, -49.0], "expected": 53.0}, {"input": [53.0, -48.5], "expected": 53.0}, {"input": [53.0, -48.0], "expected": 53.0}, {"input": [53.0, -47.5], "expected": 53.0}, {"input": [53.0, -47.0], "expected": 53.0}, {"input": [53.0, -46.5], "expected": 53.0}, {"input": [53.0, -46.0], "expected": 53.0}, {"input": [53.0, -45.5], "expected": 53.0}, {"input": [53.0, -45.0], "expected": 53.0}, {"input": [53.0, -44.5], "expected": 53.0}, {"input": [53.0, -44.0], "expected": 53.0}, {"input": [53.0, -43.5], "expected": 53.0}, {"input": [53.0, -43.0], "expected": 53.0}, {"input": [53.0, -42.5], "expected": 53.0}, {"input": [53.0, -42.0], "expected": 53.0}, {"input": [53.0, -41.5], "expected": 53.0}, {"input": [53.0, -41.0], "expected": 53.0}, {"input": [53.0, -40.5], "expected": 53.0}, {"input": [53.0, -40.0], "expected": 53.0}, {"input": [53.0, -39.5], "expected": 53.0}, {"input": [53.0, -39.0], "expected": 53.0}, {"input": [53.0, -38.5], "expected": 53.0}, {"input": [53.0, -38.0], "expected": 53.0}, {"input": [53.0, -37.5], "expected": 53.0}, {"input": [53.0, -37.0], "expected": 53.0}, {"input": [53.0, -36.5], "expected": 53.0}, {"input": [53.0, -36.0], "expected": 53.0}, {"input": [53.0, -35.5], "expected": 53.0}, {"input": [53.0, -35.0], "expected": 53.0}, {"input": [53.0, -34.5], "expected": 53.0}, {"input": [53.0, -34.0], "expected": 53.0}, {"input": [53.0, -33.5], "expected": 53.0}, {"input": [53.0, -33.0], "expected": 53.0}, {"input": [53.0, -32.5], "expected": 53.0}, {"input": [53.0, -32.0], "expected": 53.0}, {"input": [53.0, -31.5], "expected": 53.0}, {"input": [53.0, -31.0], "expected": 53.0}, {"input": [53.0, -30.5], "expected": 53.0}, {"input": [53.0, -30.0], "expected": 53.0}, {"input": [53.0, -29.5], "expected": 53.0}, {"input": [53.0, -29.0], "expected": 53.0}, {"input": [53.0, -28.5], "expected": 53.0}, {"input": [53.0, -28.0], "expected": 53.0}, {"input": [53.0, -27.5], "expected": 53.0}, {"input": [53.0, -27.0], "expected": 53.0}, {"input": [53.0, -26.5], "expected": 53.0}, {"input": [53.0, -26.0], "expected": 53.0}, {"input": [53.0, -25.5], "expected": 53.0}, {"input": [53.0, -25.0], "expected": 53.0}, {"input": [53.0, -24.5], "expected": 53.0}, {"input": [53.0, -24.0], "expected": 53.0}, {"input": [53.0, -23.5], "expected": 53.0}, {"input": [53.0, -23.0], "expected": 53.0}, {"input": [53.0, -22.5], "expected": 53.0}, {"input": [53.0, -22.0], "expected": 53.0}, {"input": [53.0, -21.5], "expected": 53.0}, {"input": [53.0, -21.0], "expected": 53.0}, {"input": [53.0, -20.5], "expected": 53.0}, {"input": [53.0, -20.0], "expected": 53.0}, {"input": [53.0, -19.5], "expected": 53.0}, {"input": [53.0, -19.0], "expected": 53.0}, {"input": [53.0, -18.5], "expected": 53.0}, {"input": [53.0, -18.0], "expected": 53.0}, {"input": [53.0, -17.5], "expected": 53.0}, {"input": [53.0, -17.0], "expected": 53.0}, {"input": [53.0, -16.5], "expected": 53.0}, {"input": [53.0, -16.0], "expected": 53.0}, {"input": [53.0, -15.5], "expected": 53.0}, {"input": [53.0, -15.0], "expected": 53.0}, {"input": [53.0, -14.5], "expected": 53.0}, {"input": [53.0, -14.0], "expected": 53.0}, {"input": [53.0, -13.5], "expected": 53.0}, {"input": [53.0, -13.0], "expected": 53.0}, {"input": [53.0, -12.5], "expected": 53.0}, {"input": [53.0, -12.0], "expected": 53.0}, {"input": [53.0, -11.5], "expected": 53.0}, {"input": [53.0, -11.0], "expected": 53.0}, {"input": [53.0, -10.5], "expected": 53.0}, {"input": [53.0, -10.0], "expected": 53.0}, {"input": [53.0, -9.5], "expected": 53.0}, {"input": [53.0, -9.0], "expected": 53.0}, {"input": [53.0, -8.5], "expected": 53.0}, {"input": [53.0, -8.0], "expected": 53.0}, {"input": [53.0, -7.5], "expected": 53.0}, {"input": [53.0, -7.0], "expected": 53.0}, {"input": [53.0, -6.5], "expected": 53.0}, {"input": [53.0, -6.0], "expected": 53.0}, {"input": [53.0, -5.5], "expected": 53.0}, {"input": [53.0, -5.0], "expected": 53.0}, {"input": [53.0, -4.5], "expected": 53.0}, {"input": [53.0, -4.0], "expected": 53.0}, {"input": [53.0, -3.5], "expected": 53.0}, {"input": [53.0, -3.0], "expected": 53.0}, {"input": [53.0, -2.5], "expected": 53.0}, {"input": [53.0, -2.0], "expected": 53.0}, {"input": [53.0, -1.5], "expected": 53.0}, {"input": [53.0, -1.0], "expected": 53.0}, {"input": [53.0, -0.5], "expected": 53.0}, {"input": [53.0, 0.0], "expected": 53.0}, {"input": [53.0, 0.5], "expected": 53.0}, {"input": [53.0, 1.0], "expected": 53.0}, {"input": [53.0, 1.5], "expected": 53.0}, {"input": [53.0, 2.0], "expected": 53.0}, {"input": [53.0, 2.5], "expected": 53.0}, {"input": [53.0, 3.0], "expected": 53.0}, {"input": [53.0, 3.5], "expected": 53.0}, {"input": [53.0, 4.0], "expected": 53.0}, {"input": [53.0, 4.5], "expected": 53.0}, {"input": [53.0, 5.0], "expected": 53.0}, {"input": [53.0, 5.5], "expected": 53.0}, {"input": [53.0, 6.0], "expected": 53.0}, {"input": [53.0, 6.5], "expected": 53.0}, {"input": [53.0, 7.0], "expected": 53.0}, {"input": [53.0, 7.5], "expected": 53.0}, {"input": [53.0, 8.0], "expected": 53.0}, {"input": [53.0, 8.5], "expected": 53.0}, {"input": [53.0, 9.0], "expected": 53.0}, {"input": [53.0, 9.5], "expected": 53.0}, {"input": [53.0, 10.0], "expected": 53.0}, {"input": [53.0, 10.5], "expected": 53.0}, {"input": [53.0, 11.0], "expected": 53.0}, {"input": [53.0, 11.5], "expected": 53.0}, {"input": [53.0, 12.0], "expected": 53.0}, {"input": [53.0, 12.5], "expected": 53.0}, {"input": [53.0, 13.0], "expected": 53.0}, {"input": [53.0, 13.5], "expected": 53.0}, {"input": [53.0, 14.0], "expected": 53.0}, {"input": [53.0, 14.5], "expected": 53.0}, {"input": [53.0, 15.0], "expected": 53.0}, {"input": [53.0, 15.5], "expected": 53.0}, {"input": [53.0, 16.0], "expected": 53.0}, {"input": [53.0, 16.5], "expected": 53.0}, {"input": [53.0, 17.0], "expected": 53.0}, {"input": [53.0, 17.5], "expected": 53.0}, {"input": [53.0, 18.0], "expected": 53.0}, {"input": [53.0, 18.5], "expected": 53.0}, {"input": [53.0, 19.0], "expected": 53.0}, {"input": [53.0, 19.5], "expected": 53.0}, {"input": [53.0, 20.0], "expected": 53.00000000000001}, {"input": [53.0, 20.5], "expected": 53.00000000000001}, {"input": [53.0, 21.0], "expected": 53.000000000000014}, {"input": [53.0, 21.5], "expected": 53.00000000000002}, {"input": [53.0, 22.0], "expected": 53.000000000000036}, {"input": [53.0, 22.5], "expected": 53.00000000000006}, {"input": [53.0, 23.0], "expected": 53.00000000000009}, {"input": [53.0, 23.5], "expected": 53.000000000000156}, {"input": [53.0, 24.0], "expected": 53.000000000000256}, {"input": [53.0, 24.5], "expected": 53.00000000000042}, {"input": [53.0, 25.0], "expected": 53.00000000000069}, {"input": [53.0, 25.5], "expected": 53.00000000000114}, {"input": [53.0, 26.0], "expected": 53.00000000000188}, {"input": [53.0, 26.5], "expected": 53.0000000000031}, {"input": [53.0, 27.0], "expected": 53.00000000000511}, {"input": [53.0, 27.5], "expected": 53.00000000000842}, {"input": [53.0, 28.0], "expected": 53.00000000001389}, {"input": [53.0, 28.5], "expected": 53.0000000000229}, {"input": [53.0, 29.0], "expected": 53.00000000003775}, {"input": [53.0, 29.5], "expected": 53.00000000006224}, {"input": [53.0, 30.0], "expected": 53.00000000010262}, {"input": [53.0, 30.5], "expected": 53.00000000016919}, {"input": [53.0, 31.0], "expected": 53.000000000278945}, {"input": [53.0, 31.5], "expected": 53.000000000459906}, {"input": [53.0, 32.0], "expected": 53.000000000758256}, {"input": [53.0, 32.5], "expected": 53.00000000125015}, {"input": [53.0, 33.0], "expected": 53.00000000206116}, {"input": [53.0, 33.5], "expected": 53.00000000339827}, {"input": [53.0, 34.0], "expected": 53.00000000560279}, {"input": [53.0, 34.5], "expected": 53.000000009237446}, {"input": [53.0, 35.0], "expected": 53.00000001522998}, {"input": [53.0, 35.5], "expected": 53.00000002510999}, {"input": [53.0, 36.0], "expected": 53.000000041399375}, {"input": [53.0, 36.5], "expected": 53.00000006825603}, {"input": [53.0, 37.0], "expected": 53.00000011253517}, {"input": [53.0, 37.5], "expected": 53.00000018553912}, {"input": [53.0, 38.0], "expected": 53.000000305902276}, {"input": [53.0, 38.5], "expected": 53.00000050434753}, {"input": [53.0, 39.0], "expected": 53.000000831528375}, {"input": [53.0, 39.5], "expected": 53.000001370958145}, {"input": [53.0, 40.0], "expected": 53.00000226032685}, {"input": [53.0, 40.5], "expected": 53.00000372664623}, {"input": [53.0, 41.0], "expected": 53.00000614419348}, {"input": [53.0, 41.5], "expected": 53.00001013004229}, {"input": [53.0, 42.0], "expected": 53.00001670156132}, {"input": [53.0, 42.5], "expected": 53.00002753607023}, {"input": [53.0, 43.0], "expected": 53.00004539889922}, {"input": [53.0, 43.5], "expected": 53.00007484902863}, {"input": [53.0, 44.0], "expected": 53.00012340218972}, {"input": [53.0, 44.5], "expected": 53.00020344767213}, {"input": [53.0, 45.0], "expected": 53.0003354063729}, {"input": [53.0, 45.5], "expected": 53.00055293147536}, {"input": [53.0, 46.0], "expected": 53.00091146645377}, {"input": [53.0, 46.5], "expected": 53.00150231015976}, {"input": [53.0, 47.0], "expected": 53.00247568513773}, {"input": [53.0, 47.5], "expected": 53.00407844327057}, {"input": [53.0, 48.0], "expected": 53.00671534848912}, {"input": [53.0, 48.5], "expected": 53.0110477448486}, {"input": [53.0, 49.0], "expected": 53.01814992791781}, {"input": [53.0, 49.5], "expected": 53.02975041827262}, {"input": [53.0, 50.0], "expected": 53.048587351573744}, {"input": [53.0, 50.5], "expected": 53.07888973429255}, {"input": [53.0, 51.0], "expected": 53.12692801104297}, {"input": [53.0, 51.5], "expected": 53.20141327798275}, {"input": [53.0, 52.0], "expected": 53.31326168751822}, {"input": [53.0, 52.5], "expected": 53.47407698418011}, {"input": [53.0, 53.0], "expected": 53.69314718055995}, {"input": [53.0, 53.5], "expected": 53.97407698418011}, {"input": [53.0, 54.0], "expected": 54.31326168751822}, {"input": [53.0, 54.5], "expected": 54.70141327798275}, {"input": [53.0, 55.0], "expected": 55.12692801104297}, {"input": [53.0, 55.5], "expected": 55.57888973429255}, {"input": [53.0, 56.0], "expected": 56.048587351573744}, {"input": [53.0, 56.5], "expected": 56.52975041827262}, {"input": [53.0, 57.0], "expected": 57.01814992791781}, {"input": [53.0, 57.5], "expected": 57.5110477448486}, {"input": [53.0, 58.0], "expected": 58.00671534848912}, {"input": [53.0, 58.5], "expected": 58.50407844327057}, {"input": [53.0, 59.0], "expected": 59.00247568513773}, {"input": [53.0, 59.5], "expected": 59.50150231015976}, {"input": [53.0, 60.0], "expected": 60.00091146645377}, {"input": [53.0, 60.5], "expected": 60.50055293147536}, {"input": [53.0, 61.0], "expected": 61.0003354063729}, {"input": [53.0, 61.5], "expected": 61.50020344767213}, {"input": [53.0, 62.0], "expected": 62.00012340218972}, {"input": [53.0, 62.5], "expected": 62.50007484902863}, {"input": [53.0, 63.0], "expected": 63.00004539889922}, {"input": [53.0, 63.5], "expected": 63.50002753607023}, {"input": [53.0, 64.0], "expected": 64.00001670156132}, {"input": [53.0, 64.5], "expected": 64.50001013004228}, {"input": [53.0, 65.0], "expected": 65.00000614419348}, {"input": [53.0, 65.5], "expected": 65.50000372664623}, {"input": [53.0, 66.0], "expected": 66.00000226032685}, {"input": [53.0, 66.5], "expected": 66.50000137095815}, {"input": [53.0, 67.0], "expected": 67.00000083152837}, {"input": [53.0, 67.5], "expected": 67.50000050434754}, {"input": [53.0, 68.0], "expected": 68.00000030590228}, {"input": [53.0, 68.5], "expected": 68.50000018553912}, {"input": [53.0, 69.0], "expected": 69.00000011253516}, {"input": [53.0, 69.5], "expected": 69.50000006825603}, {"input": [53.0, 70.0], "expected": 70.00000004139937}, {"input": [53.0, 70.5], "expected": 70.50000002511}, {"input": [53.0, 71.0], "expected": 71.00000001522999}, {"input": [53.0, 71.5], "expected": 71.50000000923745}, {"input": [53.0, 72.0], "expected": 72.0000000056028}, {"input": [53.0, 72.5], "expected": 72.50000000339827}, {"input": [53.0, 73.0], "expected": 73.00000000206116}, {"input": [53.0, 73.5], "expected": 73.50000000125016}, {"input": [53.0, 74.0], "expected": 74.00000000075826}, {"input": [53.0, 74.5], "expected": 74.5000000004599}, {"input": [53.0, 75.0], "expected": 75.00000000027894}, {"input": [53.0, 75.5], "expected": 75.5000000001692}, {"input": [53.0, 76.0], "expected": 76.00000000010262}, {"input": [53.0, 76.5], "expected": 76.50000000006224}, {"input": [53.0, 77.0], "expected": 77.00000000003776}, {"input": [53.0, 77.5], "expected": 77.5000000000229}, {"input": [53.0, 78.0], "expected": 78.00000000001388}, {"input": [53.0, 78.5], "expected": 78.50000000000843}, {"input": [53.0, 79.0], "expected": 79.00000000000512}, {"input": [53.0, 79.5], "expected": 79.5000000000031}, {"input": [53.0, 80.0], "expected": 80.00000000000188}, {"input": [53.0, 80.5], "expected": 80.50000000000114}, {"input": [53.0, 81.0], "expected": 81.0000000000007}, {"input": [53.0, 81.5], "expected": 81.50000000000043}, {"input": [53.0, 82.0], "expected": 82.00000000000026}, {"input": [53.0, 82.5], "expected": 82.50000000000016}, {"input": [53.0, 83.0], "expected": 83.0000000000001}, {"input": [53.0, 83.5], "expected": 83.50000000000006}, {"input": [53.0, 84.0], "expected": 84.00000000000003}, {"input": [53.0, 84.5], "expected": 84.50000000000001}, {"input": [53.0, 85.0], "expected": 85.00000000000001}, {"input": [53.0, 85.5], "expected": 85.50000000000001}, {"input": [53.0, 86.0], "expected": 86.0}, {"input": [53.0, 86.5], "expected": 86.5}, {"input": [53.0, 87.0], "expected": 87.0}, {"input": [53.0, 87.5], "expected": 87.5}, {"input": [53.0, 88.0], "expected": 88.0}, {"input": [53.0, 88.5], "expected": 88.5}, {"input": [53.0, 89.0], "expected": 89.0}, {"input": [53.0, 89.5], "expected": 89.5}, {"input": [53.0, 90.0], "expected": 90.0}, {"input": [53.0, 90.5], "expected": 90.5}, {"input": [53.0, 91.0], "expected": 91.0}, {"input": [53.0, 91.5], "expected": 91.5}, {"input": [53.0, 92.0], "expected": 92.0}, {"input": [53.0, 92.5], "expected": 92.5}, {"input": [53.0, 93.0], "expected": 93.0}, {"input": [53.0, 93.5], "expected": 93.5}, {"input": [53.0, 94.0], "expected": 94.0}, {"input": [53.0, 94.5], "expected": 94.5}, {"input": [53.0, 95.0], "expected": 95.0}, {"input": [53.0, 95.5], "expected": 95.5}, {"input": [53.0, 96.0], "expected": 96.0}, {"input": [53.0, 96.5], "expected": 96.5}, {"input": [53.0, 97.0], "expected": 97.0}, {"input": [53.0, 97.5], "expected": 97.5}, {"input": [53.0, 98.0], "expected": 98.0}, {"input": [53.0, 98.5], "expected": 98.5}, {"input": [53.0, 99.0], "expected": 99.0}, {"input": [53.0, 99.5], "expected": 99.5}, {"input": [53.5, -100.0], "expected": 53.5}, {"input": [53.5, -99.5], "expected": 53.5}, {"input": [53.5, -99.0], "expected": 53.5}, {"input": [53.5, -98.5], "expected": 53.5}, {"input": [53.5, -98.0], "expected": 53.5}, {"input": [53.5, -97.5], "expected": 53.5}, {"input": [53.5, -97.0], "expected": 53.5}, {"input": [53.5, -96.5], "expected": 53.5}, {"input": [53.5, -96.0], "expected": 53.5}, {"input": [53.5, -95.5], "expected": 53.5}, {"input": [53.5, -95.0], "expected": 53.5}, {"input": [53.5, -94.5], "expected": 53.5}, {"input": [53.5, -94.0], "expected": 53.5}, {"input": [53.5, -93.5], "expected": 53.5}, {"input": [53.5, -93.0], "expected": 53.5}, {"input": [53.5, -92.5], "expected": 53.5}, {"input": [53.5, -92.0], "expected": 53.5}, {"input": [53.5, -91.5], "expected": 53.5}, {"input": [53.5, -91.0], "expected": 53.5}, {"input": [53.5, -90.5], "expected": 53.5}, {"input": [53.5, -90.0], "expected": 53.5}, {"input": [53.5, -89.5], "expected": 53.5}, {"input": [53.5, -89.0], "expected": 53.5}, {"input": [53.5, -88.5], "expected": 53.5}, {"input": [53.5, -88.0], "expected": 53.5}, {"input": [53.5, -87.5], "expected": 53.5}, {"input": [53.5, -87.0], "expected": 53.5}, {"input": [53.5, -86.5], "expected": 53.5}, {"input": [53.5, -86.0], "expected": 53.5}, {"input": [53.5, -85.5], "expected": 53.5}, {"input": [53.5, -85.0], "expected": 53.5}, {"input": [53.5, -84.5], "expected": 53.5}, {"input": [53.5, -84.0], "expected": 53.5}, {"input": [53.5, -83.5], "expected": 53.5}, {"input": [53.5, -83.0], "expected": 53.5}, {"input": [53.5, -82.5], "expected": 53.5}, {"input": [53.5, -82.0], "expected": 53.5}, {"input": [53.5, -81.5], "expected": 53.5}, {"input": [53.5, -81.0], "expected": 53.5}, {"input": [53.5, -80.5], "expected": 53.5}, {"input": [53.5, -80.0], "expected": 53.5}, {"input": [53.5, -79.5], "expected": 53.5}, {"input": [53.5, -79.0], "expected": 53.5}, {"input": [53.5, -78.5], "expected": 53.5}, {"input": [53.5, -78.0], "expected": 53.5}, {"input": [53.5, -77.5], "expected": 53.5}, {"input": [53.5, -77.0], "expected": 53.5}, {"input": [53.5, -76.5], "expected": 53.5}, {"input": [53.5, -76.0], "expected": 53.5}, {"input": [53.5, -75.5], "expected": 53.5}, {"input": [53.5, -75.0], "expected": 53.5}, {"input": [53.5, -74.5], "expected": 53.5}, {"input": [53.5, -74.0], "expected": 53.5}, {"input": [53.5, -73.5], "expected": 53.5}, {"input": [53.5, -73.0], "expected": 53.5}, {"input": [53.5, -72.5], "expected": 53.5}, {"input": [53.5, -72.0], "expected": 53.5}, {"input": [53.5, -71.5], "expected": 53.5}, {"input": [53.5, -71.0], "expected": 53.5}, {"input": [53.5, -70.5], "expected": 53.5}, {"input": [53.5, -70.0], "expected": 53.5}, {"input": [53.5, -69.5], "expected": 53.5}, {"input": [53.5, -69.0], "expected": 53.5}, {"input": [53.5, -68.5], "expected": 53.5}, {"input": [53.5, -68.0], "expected": 53.5}, {"input": [53.5, -67.5], "expected": 53.5}, {"input": [53.5, -67.0], "expected": 53.5}, {"input": [53.5, -66.5], "expected": 53.5}, {"input": [53.5, -66.0], "expected": 53.5}, {"input": [53.5, -65.5], "expected": 53.5}, {"input": [53.5, -65.0], "expected": 53.5}, {"input": [53.5, -64.5], "expected": 53.5}, {"input": [53.5, -64.0], "expected": 53.5}, {"input": [53.5, -63.5], "expected": 53.5}, {"input": [53.5, -63.0], "expected": 53.5}, {"input": [53.5, -62.5], "expected": 53.5}, {"input": [53.5, -62.0], "expected": 53.5}, {"input": [53.5, -61.5], "expected": 53.5}, {"input": [53.5, -61.0], "expected": 53.5}, {"input": [53.5, -60.5], "expected": 53.5}, {"input": [53.5, -60.0], "expected": 53.5}, {"input": [53.5, -59.5], "expected": 53.5}, {"input": [53.5, -59.0], "expected": 53.5}, {"input": [53.5, -58.5], "expected": 53.5}, {"input": [53.5, -58.0], "expected": 53.5}, {"input": [53.5, -57.5], "expected": 53.5}, {"input": [53.5, -57.0], "expected": 53.5}, {"input": [53.5, -56.5], "expected": 53.5}, {"input": [53.5, -56.0], "expected": 53.5}, {"input": [53.5, -55.5], "expected": 53.5}, {"input": [53.5, -55.0], "expected": 53.5}, {"input": [53.5, -54.5], "expected": 53.5}, {"input": [53.5, -54.0], "expected": 53.5}, {"input": [53.5, -53.5], "expected": 53.5}, {"input": [53.5, -53.0], "expected": 53.5}, {"input": [53.5, -52.5], "expected": 53.5}, {"input": [53.5, -52.0], "expected": 53.5}, {"input": [53.5, -51.5], "expected": 53.5}, {"input": [53.5, -51.0], "expected": 53.5}, {"input": [53.5, -50.5], "expected": 53.5}, {"input": [53.5, -50.0], "expected": 53.5}, {"input": [53.5, -49.5], "expected": 53.5}, {"input": [53.5, -49.0], "expected": 53.5}, {"input": [53.5, -48.5], "expected": 53.5}, {"input": [53.5, -48.0], "expected": 53.5}, {"input": [53.5, -47.5], "expected": 53.5}, {"input": [53.5, -47.0], "expected": 53.5}, {"input": [53.5, -46.5], "expected": 53.5}, {"input": [53.5, -46.0], "expected": 53.5}, {"input": [53.5, -45.5], "expected": 53.5}, {"input": [53.5, -45.0], "expected": 53.5}, {"input": [53.5, -44.5], "expected": 53.5}, {"input": [53.5, -44.0], "expected": 53.5}, {"input": [53.5, -43.5], "expected": 53.5}, {"input": [53.5, -43.0], "expected": 53.5}, {"input": [53.5, -42.5], "expected": 53.5}, {"input": [53.5, -42.0], "expected": 53.5}, {"input": [53.5, -41.5], "expected": 53.5}, {"input": [53.5, -41.0], "expected": 53.5}, {"input": [53.5, -40.5], "expected": 53.5}, {"input": [53.5, -40.0], "expected": 53.5}, {"input": [53.5, -39.5], "expected": 53.5}, {"input": [53.5, -39.0], "expected": 53.5}, {"input": [53.5, -38.5], "expected": 53.5}, {"input": [53.5, -38.0], "expected": 53.5}, {"input": [53.5, -37.5], "expected": 53.5}, {"input": [53.5, -37.0], "expected": 53.5}, {"input": [53.5, -36.5], "expected": 53.5}, {"input": [53.5, -36.0], "expected": 53.5}, {"input": [53.5, -35.5], "expected": 53.5}, {"input": [53.5, -35.0], "expected": 53.5}, {"input": [53.5, -34.5], "expected": 53.5}, {"input": [53.5, -34.0], "expected": 53.5}, {"input": [53.5, -33.5], "expected": 53.5}, {"input": [53.5, -33.0], "expected": 53.5}, {"input": [53.5, -32.5], "expected": 53.5}, {"input": [53.5, -32.0], "expected": 53.5}, {"input": [53.5, -31.5], "expected": 53.5}, {"input": [53.5, -31.0], "expected": 53.5}, {"input": [53.5, -30.5], "expected": 53.5}, {"input": [53.5, -30.0], "expected": 53.5}, {"input": [53.5, -29.5], "expected": 53.5}, {"input": [53.5, -29.0], "expected": 53.5}, {"input": [53.5, -28.5], "expected": 53.5}, {"input": [53.5, -28.0], "expected": 53.5}, {"input": [53.5, -27.5], "expected": 53.5}, {"input": [53.5, -27.0], "expected": 53.5}, {"input": [53.5, -26.5], "expected": 53.5}, {"input": [53.5, -26.0], "expected": 53.5}, {"input": [53.5, -25.5], "expected": 53.5}, {"input": [53.5, -25.0], "expected": 53.5}, {"input": [53.5, -24.5], "expected": 53.5}, {"input": [53.5, -24.0], "expected": 53.5}, {"input": [53.5, -23.5], "expected": 53.5}, {"input": [53.5, -23.0], "expected": 53.5}, {"input": [53.5, -22.5], "expected": 53.5}, {"input": [53.5, -22.0], "expected": 53.5}, {"input": [53.5, -21.5], "expected": 53.5}, {"input": [53.5, -21.0], "expected": 53.5}, {"input": [53.5, -20.5], "expected": 53.5}, {"input": [53.5, -20.0], "expected": 53.5}, {"input": [53.5, -19.5], "expected": 53.5}, {"input": [53.5, -19.0], "expected": 53.5}, {"input": [53.5, -18.5], "expected": 53.5}, {"input": [53.5, -18.0], "expected": 53.5}, {"input": [53.5, -17.5], "expected": 53.5}, {"input": [53.5, -17.0], "expected": 53.5}, {"input": [53.5, -16.5], "expected": 53.5}, {"input": [53.5, -16.0], "expected": 53.5}, {"input": [53.5, -15.5], "expected": 53.5}, {"input": [53.5, -15.0], "expected": 53.5}, {"input": [53.5, -14.5], "expected": 53.5}, {"input": [53.5, -14.0], "expected": 53.5}, {"input": [53.5, -13.5], "expected": 53.5}, {"input": [53.5, -13.0], "expected": 53.5}, {"input": [53.5, -12.5], "expected": 53.5}, {"input": [53.5, -12.0], "expected": 53.5}, {"input": [53.5, -11.5], "expected": 53.5}, {"input": [53.5, -11.0], "expected": 53.5}, {"input": [53.5, -10.5], "expected": 53.5}, {"input": [53.5, -10.0], "expected": 53.5}, {"input": [53.5, -9.5], "expected": 53.5}, {"input": [53.5, -9.0], "expected": 53.5}, {"input": [53.5, -8.5], "expected": 53.5}, {"input": [53.5, -8.0], "expected": 53.5}, {"input": [53.5, -7.5], "expected": 53.5}, {"input": [53.5, -7.0], "expected": 53.5}, {"input": [53.5, -6.5], "expected": 53.5}, {"input": [53.5, -6.0], "expected": 53.5}, {"input": [53.5, -5.5], "expected": 53.5}, {"input": [53.5, -5.0], "expected": 53.5}, {"input": [53.5, -4.5], "expected": 53.5}, {"input": [53.5, -4.0], "expected": 53.5}, {"input": [53.5, -3.5], "expected": 53.5}, {"input": [53.5, -3.0], "expected": 53.5}, {"input": [53.5, -2.5], "expected": 53.5}, {"input": [53.5, -2.0], "expected": 53.5}, {"input": [53.5, -1.5], "expected": 53.5}, {"input": [53.5, -1.0], "expected": 53.5}, {"input": [53.5, -0.5], "expected": 53.5}, {"input": [53.5, 0.0], "expected": 53.5}, {"input": [53.5, 0.5], "expected": 53.5}, {"input": [53.5, 1.0], "expected": 53.5}, {"input": [53.5, 1.5], "expected": 53.5}, {"input": [53.5, 2.0], "expected": 53.5}, {"input": [53.5, 2.5], "expected": 53.5}, {"input": [53.5, 3.0], "expected": 53.5}, {"input": [53.5, 3.5], "expected": 53.5}, {"input": [53.5, 4.0], "expected": 53.5}, {"input": [53.5, 4.5], "expected": 53.5}, {"input": [53.5, 5.0], "expected": 53.5}, {"input": [53.5, 5.5], "expected": 53.5}, {"input": [53.5, 6.0], "expected": 53.5}, {"input": [53.5, 6.5], "expected": 53.5}, {"input": [53.5, 7.0], "expected": 53.5}, {"input": [53.5, 7.5], "expected": 53.5}, {"input": [53.5, 8.0], "expected": 53.5}, {"input": [53.5, 8.5], "expected": 53.5}, {"input": [53.5, 9.0], "expected": 53.5}, {"input": [53.5, 9.5], "expected": 53.5}, {"input": [53.5, 10.0], "expected": 53.5}, {"input": [53.5, 10.5], "expected": 53.5}, {"input": [53.5, 11.0], "expected": 53.5}, {"input": [53.5, 11.5], "expected": 53.5}, {"input": [53.5, 12.0], "expected": 53.5}, {"input": [53.5, 12.5], "expected": 53.5}, {"input": [53.5, 13.0], "expected": 53.5}, {"input": [53.5, 13.5], "expected": 53.5}, {"input": [53.5, 14.0], "expected": 53.5}, {"input": [53.5, 14.5], "expected": 53.5}, {"input": [53.5, 15.0], "expected": 53.5}, {"input": [53.5, 15.5], "expected": 53.5}, {"input": [53.5, 16.0], "expected": 53.5}, {"input": [53.5, 16.5], "expected": 53.5}, {"input": [53.5, 17.0], "expected": 53.5}, {"input": [53.5, 17.5], "expected": 53.5}, {"input": [53.5, 18.0], "expected": 53.5}, {"input": [53.5, 18.5], "expected": 53.5}, {"input": [53.5, 19.0], "expected": 53.5}, {"input": [53.5, 19.5], "expected": 53.5}, {"input": [53.5, 20.0], "expected": 53.5}, {"input": [53.5, 20.5], "expected": 53.50000000000001}, {"input": [53.5, 21.0], "expected": 53.50000000000001}, {"input": [53.5, 21.5], "expected": 53.500000000000014}, {"input": [53.5, 22.0], "expected": 53.50000000000002}, {"input": [53.5, 22.5], "expected": 53.500000000000036}, {"input": [53.5, 23.0], "expected": 53.50000000000006}, {"input": [53.5, 23.5], "expected": 53.50000000000009}, {"input": [53.5, 24.0], "expected": 53.500000000000156}, {"input": [53.5, 24.5], "expected": 53.500000000000256}, {"input": [53.5, 25.0], "expected": 53.50000000000042}, {"input": [53.5, 25.5], "expected": 53.50000000000069}, {"input": [53.5, 26.0], "expected": 53.50000000000114}, {"input": [53.5, 26.5], "expected": 53.50000000000188}, {"input": [53.5, 27.0], "expected": 53.5000000000031}, {"input": [53.5, 27.5], "expected": 53.50000000000511}, {"input": [53.5, 28.0], "expected": 53.50000000000842}, {"input": [53.5, 28.5], "expected": 53.50000000001389}, {"input": [53.5, 29.0], "expected": 53.5000000000229}, {"input": [53.5, 29.5], "expected": 53.50000000003775}, {"input": [53.5, 30.0], "expected": 53.50000000006224}, {"input": [53.5, 30.5], "expected": 53.50000000010262}, {"input": [53.5, 31.0], "expected": 53.50000000016919}, {"input": [53.5, 31.5], "expected": 53.500000000278945}, {"input": [53.5, 32.0], "expected": 53.500000000459906}, {"input": [53.5, 32.5], "expected": 53.500000000758256}, {"input": [53.5, 33.0], "expected": 53.50000000125015}, {"input": [53.5, 33.5], "expected": 53.50000000206116}, {"input": [53.5, 34.0], "expected": 53.50000000339827}, {"input": [53.5, 34.5], "expected": 53.50000000560279}, {"input": [53.5, 35.0], "expected": 53.500000009237446}, {"input": [53.5, 35.5], "expected": 53.50000001522998}, {"input": [53.5, 36.0], "expected": 53.50000002510999}, {"input": [53.5, 36.5], "expected": 53.500000041399375}, {"input": [53.5, 37.0], "expected": 53.50000006825603}, {"input": [53.5, 37.5], "expected": 53.50000011253517}, {"input": [53.5, 38.0], "expected": 53.50000018553912}, {"input": [53.5, 38.5], "expected": 53.500000305902276}, {"input": [53.5, 39.0], "expected": 53.50000050434753}, {"input": [53.5, 39.5], "expected": 53.500000831528375}, {"input": [53.5, 40.0], "expected": 53.500001370958145}, {"input": [53.5, 40.5], "expected": 53.50000226032685}, {"input": [53.5, 41.0], "expected": 53.50000372664623}, {"input": [53.5, 41.5], "expected": 53.50000614419348}, {"input": [53.5, 42.0], "expected": 53.50001013004229}, {"input": [53.5, 42.5], "expected": 53.50001670156132}, {"input": [53.5, 43.0], "expected": 53.50002753607023}, {"input": [53.5, 43.5], "expected": 53.50004539889922}, {"input": [53.5, 44.0], "expected": 53.50007484902863}, {"input": [53.5, 44.5], "expected": 53.50012340218972}, {"input": [53.5, 45.0], "expected": 53.50020344767213}, {"input": [53.5, 45.5], "expected": 53.5003354063729}, {"input": [53.5, 46.0], "expected": 53.50055293147536}, {"input": [53.5, 46.5], "expected": 53.50091146645377}, {"input": [53.5, 47.0], "expected": 53.50150231015976}, {"input": [53.5, 47.5], "expected": 53.50247568513773}, {"input": [53.5, 48.0], "expected": 53.50407844327057}, {"input": [53.5, 48.5], "expected": 53.50671534848912}, {"input": [53.5, 49.0], "expected": 53.5110477448486}, {"input": [53.5, 49.5], "expected": 53.51814992791781}, {"input": [53.5, 50.0], "expected": 53.52975041827262}, {"input": [53.5, 50.5], "expected": 53.548587351573744}, {"input": [53.5, 51.0], "expected": 53.57888973429255}, {"input": [53.5, 51.5], "expected": 53.62692801104297}, {"input": [53.5, 52.0], "expected": 53.70141327798275}, {"input": [53.5, 52.5], "expected": 53.81326168751822}, {"input": [53.5, 53.0], "expected": 53.97407698418011}, {"input": [53.5, 53.5], "expected": 54.19314718055995}, {"input": [53.5, 54.0], "expected": 54.47407698418011}, {"input": [53.5, 54.5], "expected": 54.81326168751822}, {"input": [53.5, 55.0], "expected": 55.20141327798275}, {"input": [53.5, 55.5], "expected": 55.62692801104297}, {"input": [53.5, 56.0], "expected": 56.07888973429255}, {"input": [53.5, 56.5], "expected": 56.548587351573744}, {"input": [53.5, 57.0], "expected": 57.02975041827262}, {"input": [53.5, 57.5], "expected": 57.51814992791781}, {"input": [53.5, 58.0], "expected": 58.0110477448486}, {"input": [53.5, 58.5], "expected": 58.50671534848912}, {"input": [53.5, 59.0], "expected": 59.00407844327057}, {"input": [53.5, 59.5], "expected": 59.50247568513773}, {"input": [53.5, 60.0], "expected": 60.00150231015976}, {"input": [53.5, 60.5], "expected": 60.50091146645377}, {"input": [53.5, 61.0], "expected": 61.00055293147536}, {"input": [53.5, 61.5], "expected": 61.5003354063729}, {"input": [53.5, 62.0], "expected": 62.00020344767213}, {"input": [53.5, 62.5], "expected": 62.50012340218972}, {"input": [53.5, 63.0], "expected": 63.00007484902863}, {"input": [53.5, 63.5], "expected": 63.50004539889922}, {"input": [53.5, 64.0], "expected": 64.00002753607023}, {"input": [53.5, 64.5], "expected": 64.50001670156132}, {"input": [53.5, 65.0], "expected": 65.00001013004228}, {"input": [53.5, 65.5], "expected": 65.50000614419348}, {"input": [53.5, 66.0], "expected": 66.00000372664623}, {"input": [53.5, 66.5], "expected": 66.50000226032685}, {"input": [53.5, 67.0], "expected": 67.00000137095815}, {"input": [53.5, 67.5], "expected": 67.50000083152837}, {"input": [53.5, 68.0], "expected": 68.00000050434754}, {"input": [53.5, 68.5], "expected": 68.50000030590228}, {"input": [53.5, 69.0], "expected": 69.00000018553912}, {"input": [53.5, 69.5], "expected": 69.50000011253516}, {"input": [53.5, 70.0], "expected": 70.00000006825603}, {"input": [53.5, 70.5], "expected": 70.50000004139937}, {"input": [53.5, 71.0], "expected": 71.00000002511}, {"input": [53.5, 71.5], "expected": 71.50000001522999}, {"input": [53.5, 72.0], "expected": 72.00000000923745}, {"input": [53.5, 72.5], "expected": 72.5000000056028}, {"input": [53.5, 73.0], "expected": 73.00000000339827}, {"input": [53.5, 73.5], "expected": 73.50000000206116}, {"input": [53.5, 74.0], "expected": 74.00000000125016}, {"input": [53.5, 74.5], "expected": 74.50000000075826}, {"input": [53.5, 75.0], "expected": 75.0000000004599}, {"input": [53.5, 75.5], "expected": 75.50000000027894}, {"input": [53.5, 76.0], "expected": 76.0000000001692}, {"input": [53.5, 76.5], "expected": 76.50000000010262}, {"input": [53.5, 77.0], "expected": 77.00000000006224}, {"input": [53.5, 77.5], "expected": 77.50000000003776}, {"input": [53.5, 78.0], "expected": 78.0000000000229}, {"input": [53.5, 78.5], "expected": 78.50000000001388}, {"input": [53.5, 79.0], "expected": 79.00000000000843}, {"input": [53.5, 79.5], "expected": 79.50000000000512}, {"input": [53.5, 80.0], "expected": 80.0000000000031}, {"input": [53.5, 80.5], "expected": 80.50000000000188}, {"input": [53.5, 81.0], "expected": 81.00000000000114}, {"input": [53.5, 81.5], "expected": 81.5000000000007}, {"input": [53.5, 82.0], "expected": 82.00000000000043}, {"input": [53.5, 82.5], "expected": 82.50000000000026}, {"input": [53.5, 83.0], "expected": 83.00000000000016}, {"input": [53.5, 83.5], "expected": 83.5000000000001}, {"input": [53.5, 84.0], "expected": 84.00000000000006}, {"input": [53.5, 84.5], "expected": 84.50000000000003}, {"input": [53.5, 85.0], "expected": 85.00000000000001}, {"input": [53.5, 85.5], "expected": 85.50000000000001}, {"input": [53.5, 86.0], "expected": 86.00000000000001}, {"input": [53.5, 86.5], "expected": 86.5}, {"input": [53.5, 87.0], "expected": 87.0}, {"input": [53.5, 87.5], "expected": 87.5}, {"input": [53.5, 88.0], "expected": 88.0}, {"input": [53.5, 88.5], "expected": 88.5}, {"input": [53.5, 89.0], "expected": 89.0}, {"input": [53.5, 89.5], "expected": 89.5}, {"input": [53.5, 90.0], "expected": 90.0}, {"input": [53.5, 90.5], "expected": 90.5}, {"input": [53.5, 91.0], "expected": 91.0}, {"input": [53.5, 91.5], "expected": 91.5}, {"input": [53.5, 92.0], "expected": 92.0}, {"input": [53.5, 92.5], "expected": 92.5}, {"input": [53.5, 93.0], "expected": 93.0}, {"input": [53.5, 93.5], "expected": 93.5}, {"input": [53.5, 94.0], "expected": 94.0}, {"input": [53.5, 94.5], "expected": 94.5}, {"input": [53.5, 95.0], "expected": 95.0}, {"input": [53.5, 95.5], "expected": 95.5}, {"input": [53.5, 96.0], "expected": 96.0}, {"input": [53.5, 96.5], "expected": 96.5}, {"input": [53.5, 97.0], "expected": 97.0}, {"input": [53.5, 97.5], "expected": 97.5}, {"input": [53.5, 98.0], "expected": 98.0}, {"input": [53.5, 98.5], "expected": 98.5}, {"input": [53.5, 99.0], "expected": 99.0}, {"input": [53.5, 99.5], "expected": 99.5}, {"input": [54.0, -100.0], "expected": 54.0}, {"input": [54.0, -99.5], "expected": 54.0}, {"input": [54.0, -99.0], "expected": 54.0}, {"input": [54.0, -98.5], "expected": 54.0}, {"input": [54.0, -98.0], "expected": 54.0}, {"input": [54.0, -97.5], "expected": 54.0}, {"input": [54.0, -97.0], "expected": 54.0}, {"input": [54.0, -96.5], "expected": 54.0}, {"input": [54.0, -96.0], "expected": 54.0}, {"input": [54.0, -95.5], "expected": 54.0}, {"input": [54.0, -95.0], "expected": 54.0}, {"input": [54.0, -94.5], "expected": 54.0}, {"input": [54.0, -94.0], "expected": 54.0}, {"input": [54.0, -93.5], "expected": 54.0}, {"input": [54.0, -93.0], "expected": 54.0}, {"input": [54.0, -92.5], "expected": 54.0}, {"input": [54.0, -92.0], "expected": 54.0}, {"input": [54.0, -91.5], "expected": 54.0}, {"input": [54.0, -91.0], "expected": 54.0}, {"input": [54.0, -90.5], "expected": 54.0}, {"input": [54.0, -90.0], "expected": 54.0}, {"input": [54.0, -89.5], "expected": 54.0}, {"input": [54.0, -89.0], "expected": 54.0}, {"input": [54.0, -88.5], "expected": 54.0}, {"input": [54.0, -88.0], "expected": 54.0}, {"input": [54.0, -87.5], "expected": 54.0}, {"input": [54.0, -87.0], "expected": 54.0}, {"input": [54.0, -86.5], "expected": 54.0}, {"input": [54.0, -86.0], "expected": 54.0}, {"input": [54.0, -85.5], "expected": 54.0}, {"input": [54.0, -85.0], "expected": 54.0}, {"input": [54.0, -84.5], "expected": 54.0}, {"input": [54.0, -84.0], "expected": 54.0}, {"input": [54.0, -83.5], "expected": 54.0}, {"input": [54.0, -83.0], "expected": 54.0}, {"input": [54.0, -82.5], "expected": 54.0}, {"input": [54.0, -82.0], "expected": 54.0}, {"input": [54.0, -81.5], "expected": 54.0}, {"input": [54.0, -81.0], "expected": 54.0}, {"input": [54.0, -80.5], "expected": 54.0}, {"input": [54.0, -80.0], "expected": 54.0}, {"input": [54.0, -79.5], "expected": 54.0}, {"input": [54.0, -79.0], "expected": 54.0}, {"input": [54.0, -78.5], "expected": 54.0}, {"input": [54.0, -78.0], "expected": 54.0}, {"input": [54.0, -77.5], "expected": 54.0}, {"input": [54.0, -77.0], "expected": 54.0}, {"input": [54.0, -76.5], "expected": 54.0}, {"input": [54.0, -76.0], "expected": 54.0}, {"input": [54.0, -75.5], "expected": 54.0}, {"input": [54.0, -75.0], "expected": 54.0}, {"input": [54.0, -74.5], "expected": 54.0}, {"input": [54.0, -74.0], "expected": 54.0}, {"input": [54.0, -73.5], "expected": 54.0}, {"input": [54.0, -73.0], "expected": 54.0}, {"input": [54.0, -72.5], "expected": 54.0}, {"input": [54.0, -72.0], "expected": 54.0}, {"input": [54.0, -71.5], "expected": 54.0}, {"input": [54.0, -71.0], "expected": 54.0}, {"input": [54.0, -70.5], "expected": 54.0}, {"input": [54.0, -70.0], "expected": 54.0}, {"input": [54.0, -69.5], "expected": 54.0}, {"input": [54.0, -69.0], "expected": 54.0}, {"input": [54.0, -68.5], "expected": 54.0}, {"input": [54.0, -68.0], "expected": 54.0}, {"input": [54.0, -67.5], "expected": 54.0}, {"input": [54.0, -67.0], "expected": 54.0}, {"input": [54.0, -66.5], "expected": 54.0}, {"input": [54.0, -66.0], "expected": 54.0}, {"input": [54.0, -65.5], "expected": 54.0}, {"input": [54.0, -65.0], "expected": 54.0}, {"input": [54.0, -64.5], "expected": 54.0}, {"input": [54.0, -64.0], "expected": 54.0}, {"input": [54.0, -63.5], "expected": 54.0}, {"input": [54.0, -63.0], "expected": 54.0}, {"input": [54.0, -62.5], "expected": 54.0}, {"input": [54.0, -62.0], "expected": 54.0}, {"input": [54.0, -61.5], "expected": 54.0}, {"input": [54.0, -61.0], "expected": 54.0}, {"input": [54.0, -60.5], "expected": 54.0}, {"input": [54.0, -60.0], "expected": 54.0}, {"input": [54.0, -59.5], "expected": 54.0}, {"input": [54.0, -59.0], "expected": 54.0}, {"input": [54.0, -58.5], "expected": 54.0}, {"input": [54.0, -58.0], "expected": 54.0}, {"input": [54.0, -57.5], "expected": 54.0}, {"input": [54.0, -57.0], "expected": 54.0}, {"input": [54.0, -56.5], "expected": 54.0}, {"input": [54.0, -56.0], "expected": 54.0}, {"input": [54.0, -55.5], "expected": 54.0}, {"input": [54.0, -55.0], "expected": 54.0}, {"input": [54.0, -54.5], "expected": 54.0}, {"input": [54.0, -54.0], "expected": 54.0}, {"input": [54.0, -53.5], "expected": 54.0}, {"input": [54.0, -53.0], "expected": 54.0}, {"input": [54.0, -52.5], "expected": 54.0}, {"input": [54.0, -52.0], "expected": 54.0}, {"input": [54.0, -51.5], "expected": 54.0}, {"input": [54.0, -51.0], "expected": 54.0}, {"input": [54.0, -50.5], "expected": 54.0}, {"input": [54.0, -50.0], "expected": 54.0}, {"input": [54.0, -49.5], "expected": 54.0}, {"input": [54.0, -49.0], "expected": 54.0}, {"input": [54.0, -48.5], "expected": 54.0}, {"input": [54.0, -48.0], "expected": 54.0}, {"input": [54.0, -47.5], "expected": 54.0}, {"input": [54.0, -47.0], "expected": 54.0}, {"input": [54.0, -46.5], "expected": 54.0}, {"input": [54.0, -46.0], "expected": 54.0}, {"input": [54.0, -45.5], "expected": 54.0}, {"input": [54.0, -45.0], "expected": 54.0}, {"input": [54.0, -44.5], "expected": 54.0}, {"input": [54.0, -44.0], "expected": 54.0}, {"input": [54.0, -43.5], "expected": 54.0}, {"input": [54.0, -43.0], "expected": 54.0}, {"input": [54.0, -42.5], "expected": 54.0}, {"input": [54.0, -42.0], "expected": 54.0}, {"input": [54.0, -41.5], "expected": 54.0}, {"input": [54.0, -41.0], "expected": 54.0}, {"input": [54.0, -40.5], "expected": 54.0}, {"input": [54.0, -40.0], "expected": 54.0}, {"input": [54.0, -39.5], "expected": 54.0}, {"input": [54.0, -39.0], "expected": 54.0}, {"input": [54.0, -38.5], "expected": 54.0}, {"input": [54.0, -38.0], "expected": 54.0}, {"input": [54.0, -37.5], "expected": 54.0}, {"input": [54.0, -37.0], "expected": 54.0}, {"input": [54.0, -36.5], "expected": 54.0}, {"input": [54.0, -36.0], "expected": 54.0}, {"input": [54.0, -35.5], "expected": 54.0}, {"input": [54.0, -35.0], "expected": 54.0}, {"input": [54.0, -34.5], "expected": 54.0}, {"input": [54.0, -34.0], "expected": 54.0}, {"input": [54.0, -33.5], "expected": 54.0}, {"input": [54.0, -33.0], "expected": 54.0}, {"input": [54.0, -32.5], "expected": 54.0}, {"input": [54.0, -32.0], "expected": 54.0}, {"input": [54.0, -31.5], "expected": 54.0}, {"input": [54.0, -31.0], "expected": 54.0}, {"input": [54.0, -30.5], "expected": 54.0}, {"input": [54.0, -30.0], "expected": 54.0}, {"input": [54.0, -29.5], "expected": 54.0}, {"input": [54.0, -29.0], "expected": 54.0}, {"input": [54.0, -28.5], "expected": 54.0}, {"input": [54.0, -28.0], "expected": 54.0}, {"input": [54.0, -27.5], "expected": 54.0}, {"input": [54.0, -27.0], "expected": 54.0}, {"input": [54.0, -26.5], "expected": 54.0}, {"input": [54.0, -26.0], "expected": 54.0}, {"input": [54.0, -25.5], "expected": 54.0}, {"input": [54.0, -25.0], "expected": 54.0}, {"input": [54.0, -24.5], "expected": 54.0}, {"input": [54.0, -24.0], "expected": 54.0}, {"input": [54.0, -23.5], "expected": 54.0}, {"input": [54.0, -23.0], "expected": 54.0}, {"input": [54.0, -22.5], "expected": 54.0}, {"input": [54.0, -22.0], "expected": 54.0}, {"input": [54.0, -21.5], "expected": 54.0}, {"input": [54.0, -21.0], "expected": 54.0}, {"input": [54.0, -20.5], "expected": 54.0}, {"input": [54.0, -20.0], "expected": 54.0}, {"input": [54.0, -19.5], "expected": 54.0}, {"input": [54.0, -19.0], "expected": 54.0}, {"input": [54.0, -18.5], "expected": 54.0}, {"input": [54.0, -18.0], "expected": 54.0}, {"input": [54.0, -17.5], "expected": 54.0}, {"input": [54.0, -17.0], "expected": 54.0}, {"input": [54.0, -16.5], "expected": 54.0}, {"input": [54.0, -16.0], "expected": 54.0}, {"input": [54.0, -15.5], "expected": 54.0}, {"input": [54.0, -15.0], "expected": 54.0}, {"input": [54.0, -14.5], "expected": 54.0}, {"input": [54.0, -14.0], "expected": 54.0}, {"input": [54.0, -13.5], "expected": 54.0}, {"input": [54.0, -13.0], "expected": 54.0}, {"input": [54.0, -12.5], "expected": 54.0}, {"input": [54.0, -12.0], "expected": 54.0}, {"input": [54.0, -11.5], "expected": 54.0}, {"input": [54.0, -11.0], "expected": 54.0}, {"input": [54.0, -10.5], "expected": 54.0}, {"input": [54.0, -10.0], "expected": 54.0}, {"input": [54.0, -9.5], "expected": 54.0}, {"input": [54.0, -9.0], "expected": 54.0}, {"input": [54.0, -8.5], "expected": 54.0}, {"input": [54.0, -8.0], "expected": 54.0}, {"input": [54.0, -7.5], "expected": 54.0}, {"input": [54.0, -7.0], "expected": 54.0}, {"input": [54.0, -6.5], "expected": 54.0}, {"input": [54.0, -6.0], "expected": 54.0}, {"input": [54.0, -5.5], "expected": 54.0}, {"input": [54.0, -5.0], "expected": 54.0}, {"input": [54.0, -4.5], "expected": 54.0}, {"input": [54.0, -4.0], "expected": 54.0}, {"input": [54.0, -3.5], "expected": 54.0}, {"input": [54.0, -3.0], "expected": 54.0}, {"input": [54.0, -2.5], "expected": 54.0}, {"input": [54.0, -2.0], "expected": 54.0}, {"input": [54.0, -1.5], "expected": 54.0}, {"input": [54.0, -1.0], "expected": 54.0}, {"input": [54.0, -0.5], "expected": 54.0}, {"input": [54.0, 0.0], "expected": 54.0}, {"input": [54.0, 0.5], "expected": 54.0}, {"input": [54.0, 1.0], "expected": 54.0}, {"input": [54.0, 1.5], "expected": 54.0}, {"input": [54.0, 2.0], "expected": 54.0}, {"input": [54.0, 2.5], "expected": 54.0}, {"input": [54.0, 3.0], "expected": 54.0}, {"input": [54.0, 3.5], "expected": 54.0}, {"input": [54.0, 4.0], "expected": 54.0}, {"input": [54.0, 4.5], "expected": 54.0}, {"input": [54.0, 5.0], "expected": 54.0}, {"input": [54.0, 5.5], "expected": 54.0}, {"input": [54.0, 6.0], "expected": 54.0}, {"input": [54.0, 6.5], "expected": 54.0}, {"input": [54.0, 7.0], "expected": 54.0}, {"input": [54.0, 7.5], "expected": 54.0}, {"input": [54.0, 8.0], "expected": 54.0}, {"input": [54.0, 8.5], "expected": 54.0}, {"input": [54.0, 9.0], "expected": 54.0}, {"input": [54.0, 9.5], "expected": 54.0}, {"input": [54.0, 10.0], "expected": 54.0}, {"input": [54.0, 10.5], "expected": 54.0}, {"input": [54.0, 11.0], "expected": 54.0}, {"input": [54.0, 11.5], "expected": 54.0}, {"input": [54.0, 12.0], "expected": 54.0}, {"input": [54.0, 12.5], "expected": 54.0}, {"input": [54.0, 13.0], "expected": 54.0}, {"input": [54.0, 13.5], "expected": 54.0}, {"input": [54.0, 14.0], "expected": 54.0}, {"input": [54.0, 14.5], "expected": 54.0}, {"input": [54.0, 15.0], "expected": 54.0}, {"input": [54.0, 15.5], "expected": 54.0}, {"input": [54.0, 16.0], "expected": 54.0}, {"input": [54.0, 16.5], "expected": 54.0}, {"input": [54.0, 17.0], "expected": 54.0}, {"input": [54.0, 17.5], "expected": 54.0}, {"input": [54.0, 18.0], "expected": 54.0}, {"input": [54.0, 18.5], "expected": 54.0}, {"input": [54.0, 19.0], "expected": 54.0}, {"input": [54.0, 19.5], "expected": 54.0}, {"input": [54.0, 20.0], "expected": 54.0}, {"input": [54.0, 20.5], "expected": 54.0}, {"input": [54.0, 21.0], "expected": 54.00000000000001}, {"input": [54.0, 21.5], "expected": 54.00000000000001}, {"input": [54.0, 22.0], "expected": 54.000000000000014}, {"input": [54.0, 22.5], "expected": 54.00000000000002}, {"input": [54.0, 23.0], "expected": 54.000000000000036}, {"input": [54.0, 23.5], "expected": 54.00000000000006}, {"input": [54.0, 24.0], "expected": 54.00000000000009}, {"input": [54.0, 24.5], "expected": 54.000000000000156}, {"input": [54.0, 25.0], "expected": 54.000000000000256}, {"input": [54.0, 25.5], "expected": 54.00000000000042}, {"input": [54.0, 26.0], "expected": 54.00000000000069}, {"input": [54.0, 26.5], "expected": 54.00000000000114}, {"input": [54.0, 27.0], "expected": 54.00000000000188}, {"input": [54.0, 27.5], "expected": 54.0000000000031}, {"input": [54.0, 28.0], "expected": 54.00000000000511}, {"input": [54.0, 28.5], "expected": 54.00000000000842}, {"input": [54.0, 29.0], "expected": 54.00000000001389}, {"input": [54.0, 29.5], "expected": 54.0000000000229}, {"input": [54.0, 30.0], "expected": 54.00000000003775}, {"input": [54.0, 30.5], "expected": 54.00000000006224}, {"input": [54.0, 31.0], "expected": 54.00000000010262}, {"input": [54.0, 31.5], "expected": 54.00000000016919}, {"input": [54.0, 32.0], "expected": 54.000000000278945}, {"input": [54.0, 32.5], "expected": 54.000000000459906}, {"input": [54.0, 33.0], "expected": 54.000000000758256}, {"input": [54.0, 33.5], "expected": 54.00000000125015}, {"input": [54.0, 34.0], "expected": 54.00000000206116}, {"input": [54.0, 34.5], "expected": 54.00000000339827}, {"input": [54.0, 35.0], "expected": 54.00000000560279}, {"input": [54.0, 35.5], "expected": 54.000000009237446}, {"input": [54.0, 36.0], "expected": 54.00000001522998}, {"input": [54.0, 36.5], "expected": 54.00000002510999}, {"input": [54.0, 37.0], "expected": 54.000000041399375}, {"input": [54.0, 37.5], "expected": 54.00000006825603}, {"input": [54.0, 38.0], "expected": 54.00000011253517}, {"input": [54.0, 38.5], "expected": 54.00000018553912}, {"input": [54.0, 39.0], "expected": 54.000000305902276}, {"input": [54.0, 39.5], "expected": 54.00000050434753}, {"input": [54.0, 40.0], "expected": 54.000000831528375}, {"input": [54.0, 40.5], "expected": 54.000001370958145}, {"input": [54.0, 41.0], "expected": 54.00000226032685}, {"input": [54.0, 41.5], "expected": 54.00000372664623}, {"input": [54.0, 42.0], "expected": 54.00000614419348}, {"input": [54.0, 42.5], "expected": 54.00001013004229}, {"input": [54.0, 43.0], "expected": 54.00001670156132}, {"input": [54.0, 43.5], "expected": 54.00002753607023}, {"input": [54.0, 44.0], "expected": 54.00004539889922}, {"input": [54.0, 44.5], "expected": 54.00007484902863}, {"input": [54.0, 45.0], "expected": 54.00012340218972}, {"input": [54.0, 45.5], "expected": 54.00020344767213}, {"input": [54.0, 46.0], "expected": 54.0003354063729}, {"input": [54.0, 46.5], "expected": 54.00055293147536}, {"input": [54.0, 47.0], "expected": 54.00091146645377}, {"input": [54.0, 47.5], "expected": 54.00150231015976}, {"input": [54.0, 48.0], "expected": 54.00247568513773}, {"input": [54.0, 48.5], "expected": 54.00407844327057}, {"input": [54.0, 49.0], "expected": 54.00671534848912}, {"input": [54.0, 49.5], "expected": 54.0110477448486}, {"input": [54.0, 50.0], "expected": 54.01814992791781}, {"input": [54.0, 50.5], "expected": 54.02975041827262}, {"input": [54.0, 51.0], "expected": 54.048587351573744}, {"input": [54.0, 51.5], "expected": 54.07888973429255}, {"input": [54.0, 52.0], "expected": 54.12692801104297}, {"input": [54.0, 52.5], "expected": 54.20141327798275}, {"input": [54.0, 53.0], "expected": 54.31326168751822}, {"input": [54.0, 53.5], "expected": 54.47407698418011}, {"input": [54.0, 54.0], "expected": 54.69314718055995}, {"input": [54.0, 54.5], "expected": 54.97407698418011}, {"input": [54.0, 55.0], "expected": 55.31326168751822}, {"input": [54.0, 55.5], "expected": 55.70141327798275}, {"input": [54.0, 56.0], "expected": 56.12692801104297}, {"input": [54.0, 56.5], "expected": 56.57888973429255}, {"input": [54.0, 57.0], "expected": 57.048587351573744}, {"input": [54.0, 57.5], "expected": 57.52975041827262}, {"input": [54.0, 58.0], "expected": 58.01814992791781}, {"input": [54.0, 58.5], "expected": 58.5110477448486}, {"input": [54.0, 59.0], "expected": 59.00671534848912}, {"input": [54.0, 59.5], "expected": 59.50407844327057}, {"input": [54.0, 60.0], "expected": 60.00247568513773}, {"input": [54.0, 60.5], "expected": 60.50150231015976}, {"input": [54.0, 61.0], "expected": 61.00091146645377}, {"input": [54.0, 61.5], "expected": 61.50055293147536}, {"input": [54.0, 62.0], "expected": 62.0003354063729}, {"input": [54.0, 62.5], "expected": 62.50020344767213}, {"input": [54.0, 63.0], "expected": 63.00012340218972}, {"input": [54.0, 63.5], "expected": 63.50007484902863}, {"input": [54.0, 64.0], "expected": 64.00004539889922}, {"input": [54.0, 64.5], "expected": 64.50002753607023}, {"input": [54.0, 65.0], "expected": 65.00001670156132}, {"input": [54.0, 65.5], "expected": 65.50001013004228}, {"input": [54.0, 66.0], "expected": 66.00000614419348}, {"input": [54.0, 66.5], "expected": 66.50000372664623}, {"input": [54.0, 67.0], "expected": 67.00000226032685}, {"input": [54.0, 67.5], "expected": 67.50000137095815}, {"input": [54.0, 68.0], "expected": 68.00000083152837}, {"input": [54.0, 68.5], "expected": 68.50000050434754}, {"input": [54.0, 69.0], "expected": 69.00000030590228}, {"input": [54.0, 69.5], "expected": 69.50000018553912}, {"input": [54.0, 70.0], "expected": 70.00000011253516}, {"input": [54.0, 70.5], "expected": 70.50000006825603}, {"input": [54.0, 71.0], "expected": 71.00000004139937}, {"input": [54.0, 71.5], "expected": 71.50000002511}, {"input": [54.0, 72.0], "expected": 72.00000001522999}, {"input": [54.0, 72.5], "expected": 72.50000000923745}, {"input": [54.0, 73.0], "expected": 73.0000000056028}, {"input": [54.0, 73.5], "expected": 73.50000000339827}, {"input": [54.0, 74.0], "expected": 74.00000000206116}, {"input": [54.0, 74.5], "expected": 74.50000000125016}, {"input": [54.0, 75.0], "expected": 75.00000000075826}, {"input": [54.0, 75.5], "expected": 75.5000000004599}, {"input": [54.0, 76.0], "expected": 76.00000000027894}, {"input": [54.0, 76.5], "expected": 76.5000000001692}, {"input": [54.0, 77.0], "expected": 77.00000000010262}, {"input": [54.0, 77.5], "expected": 77.50000000006224}, {"input": [54.0, 78.0], "expected": 78.00000000003776}, {"input": [54.0, 78.5], "expected": 78.5000000000229}, {"input": [54.0, 79.0], "expected": 79.00000000001388}, {"input": [54.0, 79.5], "expected": 79.50000000000843}, {"input": [54.0, 80.0], "expected": 80.00000000000512}, {"input": [54.0, 80.5], "expected": 80.5000000000031}, {"input": [54.0, 81.0], "expected": 81.00000000000188}, {"input": [54.0, 81.5], "expected": 81.50000000000114}, {"input": [54.0, 82.0], "expected": 82.0000000000007}, {"input": [54.0, 82.5], "expected": 82.50000000000043}, {"input": [54.0, 83.0], "expected": 83.00000000000026}, {"input": [54.0, 83.5], "expected": 83.50000000000016}, {"input": [54.0, 84.0], "expected": 84.0000000000001}, {"input": [54.0, 84.5], "expected": 84.50000000000006}, {"input": [54.0, 85.0], "expected": 85.00000000000003}, {"input": [54.0, 85.5], "expected": 85.50000000000001}, {"input": [54.0, 86.0], "expected": 86.00000000000001}, {"input": [54.0, 86.5], "expected": 86.50000000000001}, {"input": [54.0, 87.0], "expected": 87.0}, {"input": [54.0, 87.5], "expected": 87.5}, {"input": [54.0, 88.0], "expected": 88.0}, {"input": [54.0, 88.5], "expected": 88.5}, {"input": [54.0, 89.0], "expected": 89.0}, {"input": [54.0, 89.5], "expected": 89.5}, {"input": [54.0, 90.0], "expected": 90.0}, {"input": [54.0, 90.5], "expected": 90.5}, {"input": [54.0, 91.0], "expected": 91.0}, {"input": [54.0, 91.5], "expected": 91.5}, {"input": [54.0, 92.0], "expected": 92.0}, {"input": [54.0, 92.5], "expected": 92.5}, {"input": [54.0, 93.0], "expected": 93.0}, {"input": [54.0, 93.5], "expected": 93.5}, {"input": [54.0, 94.0], "expected": 94.0}, {"input": [54.0, 94.5], "expected": 94.5}, {"input": [54.0, 95.0], "expected": 95.0}, {"input": [54.0, 95.5], "expected": 95.5}, {"input": [54.0, 96.0], "expected": 96.0}, {"input": [54.0, 96.5], "expected": 96.5}, {"input": [54.0, 97.0], "expected": 97.0}, {"input": [54.0, 97.5], "expected": 97.5}, {"input": [54.0, 98.0], "expected": 98.0}, {"input": [54.0, 98.5], "expected": 98.5}, {"input": [54.0, 99.0], "expected": 99.0}, {"input": [54.0, 99.5], "expected": 99.5}, {"input": [54.5, -100.0], "expected": 54.5}, {"input": [54.5, -99.5], "expected": 54.5}, {"input": [54.5, -99.0], "expected": 54.5}, {"input": [54.5, -98.5], "expected": 54.5}, {"input": [54.5, -98.0], "expected": 54.5}, {"input": [54.5, -97.5], "expected": 54.5}, {"input": [54.5, -97.0], "expected": 54.5}, {"input": [54.5, -96.5], "expected": 54.5}, {"input": [54.5, -96.0], "expected": 54.5}, {"input": [54.5, -95.5], "expected": 54.5}, {"input": [54.5, -95.0], "expected": 54.5}, {"input": [54.5, -94.5], "expected": 54.5}, {"input": [54.5, -94.0], "expected": 54.5}, {"input": [54.5, -93.5], "expected": 54.5}, {"input": [54.5, -93.0], "expected": 54.5}, {"input": [54.5, -92.5], "expected": 54.5}, {"input": [54.5, -92.0], "expected": 54.5}, {"input": [54.5, -91.5], "expected": 54.5}, {"input": [54.5, -91.0], "expected": 54.5}, {"input": [54.5, -90.5], "expected": 54.5}, {"input": [54.5, -90.0], "expected": 54.5}, {"input": [54.5, -89.5], "expected": 54.5}, {"input": [54.5, -89.0], "expected": 54.5}, {"input": [54.5, -88.5], "expected": 54.5}, {"input": [54.5, -88.0], "expected": 54.5}, {"input": [54.5, -87.5], "expected": 54.5}, {"input": [54.5, -87.0], "expected": 54.5}, {"input": [54.5, -86.5], "expected": 54.5}, {"input": [54.5, -86.0], "expected": 54.5}, {"input": [54.5, -85.5], "expected": 54.5}, {"input": [54.5, -85.0], "expected": 54.5}, {"input": [54.5, -84.5], "expected": 54.5}, {"input": [54.5, -84.0], "expected": 54.5}, {"input": [54.5, -83.5], "expected": 54.5}, {"input": [54.5, -83.0], "expected": 54.5}, {"input": [54.5, -82.5], "expected": 54.5}, {"input": [54.5, -82.0], "expected": 54.5}, {"input": [54.5, -81.5], "expected": 54.5}, {"input": [54.5, -81.0], "expected": 54.5}, {"input": [54.5, -80.5], "expected": 54.5}, {"input": [54.5, -80.0], "expected": 54.5}, {"input": [54.5, -79.5], "expected": 54.5}, {"input": [54.5, -79.0], "expected": 54.5}, {"input": [54.5, -78.5], "expected": 54.5}, {"input": [54.5, -78.0], "expected": 54.5}, {"input": [54.5, -77.5], "expected": 54.5}, {"input": [54.5, -77.0], "expected": 54.5}, {"input": [54.5, -76.5], "expected": 54.5}, {"input": [54.5, -76.0], "expected": 54.5}, {"input": [54.5, -75.5], "expected": 54.5}, {"input": [54.5, -75.0], "expected": 54.5}, {"input": [54.5, -74.5], "expected": 54.5}, {"input": [54.5, -74.0], "expected": 54.5}, {"input": [54.5, -73.5], "expected": 54.5}, {"input": [54.5, -73.0], "expected": 54.5}, {"input": [54.5, -72.5], "expected": 54.5}, {"input": [54.5, -72.0], "expected": 54.5}, {"input": [54.5, -71.5], "expected": 54.5}, {"input": [54.5, -71.0], "expected": 54.5}, {"input": [54.5, -70.5], "expected": 54.5}, {"input": [54.5, -70.0], "expected": 54.5}, {"input": [54.5, -69.5], "expected": 54.5}, {"input": [54.5, -69.0], "expected": 54.5}, {"input": [54.5, -68.5], "expected": 54.5}, {"input": [54.5, -68.0], "expected": 54.5}, {"input": [54.5, -67.5], "expected": 54.5}, {"input": [54.5, -67.0], "expected": 54.5}, {"input": [54.5, -66.5], "expected": 54.5}, {"input": [54.5, -66.0], "expected": 54.5}, {"input": [54.5, -65.5], "expected": 54.5}, {"input": [54.5, -65.0], "expected": 54.5}, {"input": [54.5, -64.5], "expected": 54.5}, {"input": [54.5, -64.0], "expected": 54.5}, {"input": [54.5, -63.5], "expected": 54.5}, {"input": [54.5, -63.0], "expected": 54.5}, {"input": [54.5, -62.5], "expected": 54.5}, {"input": [54.5, -62.0], "expected": 54.5}, {"input": [54.5, -61.5], "expected": 54.5}, {"input": [54.5, -61.0], "expected": 54.5}, {"input": [54.5, -60.5], "expected": 54.5}, {"input": [54.5, -60.0], "expected": 54.5}, {"input": [54.5, -59.5], "expected": 54.5}, {"input": [54.5, -59.0], "expected": 54.5}, {"input": [54.5, -58.5], "expected": 54.5}, {"input": [54.5, -58.0], "expected": 54.5}, {"input": [54.5, -57.5], "expected": 54.5}, {"input": [54.5, -57.0], "expected": 54.5}, {"input": [54.5, -56.5], "expected": 54.5}, {"input": [54.5, -56.0], "expected": 54.5}, {"input": [54.5, -55.5], "expected": 54.5}, {"input": [54.5, -55.0], "expected": 54.5}, {"input": [54.5, -54.5], "expected": 54.5}, {"input": [54.5, -54.0], "expected": 54.5}, {"input": [54.5, -53.5], "expected": 54.5}, {"input": [54.5, -53.0], "expected": 54.5}, {"input": [54.5, -52.5], "expected": 54.5}, {"input": [54.5, -52.0], "expected": 54.5}, {"input": [54.5, -51.5], "expected": 54.5}, {"input": [54.5, -51.0], "expected": 54.5}, {"input": [54.5, -50.5], "expected": 54.5}, {"input": [54.5, -50.0], "expected": 54.5}, {"input": [54.5, -49.5], "expected": 54.5}, {"input": [54.5, -49.0], "expected": 54.5}, {"input": [54.5, -48.5], "expected": 54.5}, {"input": [54.5, -48.0], "expected": 54.5}, {"input": [54.5, -47.5], "expected": 54.5}, {"input": [54.5, -47.0], "expected": 54.5}, {"input": [54.5, -46.5], "expected": 54.5}, {"input": [54.5, -46.0], "expected": 54.5}, {"input": [54.5, -45.5], "expected": 54.5}, {"input": [54.5, -45.0], "expected": 54.5}, {"input": [54.5, -44.5], "expected": 54.5}, {"input": [54.5, -44.0], "expected": 54.5}, {"input": [54.5, -43.5], "expected": 54.5}, {"input": [54.5, -43.0], "expected": 54.5}, {"input": [54.5, -42.5], "expected": 54.5}, {"input": [54.5, -42.0], "expected": 54.5}, {"input": [54.5, -41.5], "expected": 54.5}, {"input": [54.5, -41.0], "expected": 54.5}, {"input": [54.5, -40.5], "expected": 54.5}, {"input": [54.5, -40.0], "expected": 54.5}, {"input": [54.5, -39.5], "expected": 54.5}, {"input": [54.5, -39.0], "expected": 54.5}, {"input": [54.5, -38.5], "expected": 54.5}, {"input": [54.5, -38.0], "expected": 54.5}, {"input": [54.5, -37.5], "expected": 54.5}, {"input": [54.5, -37.0], "expected": 54.5}, {"input": [54.5, -36.5], "expected": 54.5}, {"input": [54.5, -36.0], "expected": 54.5}, {"input": [54.5, -35.5], "expected": 54.5}, {"input": [54.5, -35.0], "expected": 54.5}, {"input": [54.5, -34.5], "expected": 54.5}, {"input": [54.5, -34.0], "expected": 54.5}, {"input": [54.5, -33.5], "expected": 54.5}, {"input": [54.5, -33.0], "expected": 54.5}, {"input": [54.5, -32.5], "expected": 54.5}, {"input": [54.5, -32.0], "expected": 54.5}, {"input": [54.5, -31.5], "expected": 54.5}, {"input": [54.5, -31.0], "expected": 54.5}, {"input": [54.5, -30.5], "expected": 54.5}, {"input": [54.5, -30.0], "expected": 54.5}, {"input": [54.5, -29.5], "expected": 54.5}, {"input": [54.5, -29.0], "expected": 54.5}, {"input": [54.5, -28.5], "expected": 54.5}, {"input": [54.5, -28.0], "expected": 54.5}, {"input": [54.5, -27.5], "expected": 54.5}, {"input": [54.5, -27.0], "expected": 54.5}, {"input": [54.5, -26.5], "expected": 54.5}, {"input": [54.5, -26.0], "expected": 54.5}, {"input": [54.5, -25.5], "expected": 54.5}, {"input": [54.5, -25.0], "expected": 54.5}, {"input": [54.5, -24.5], "expected": 54.5}, {"input": [54.5, -24.0], "expected": 54.5}, {"input": [54.5, -23.5], "expected": 54.5}, {"input": [54.5, -23.0], "expected": 54.5}, {"input": [54.5, -22.5], "expected": 54.5}, {"input": [54.5, -22.0], "expected": 54.5}, {"input": [54.5, -21.5], "expected": 54.5}, {"input": [54.5, -21.0], "expected": 54.5}, {"input": [54.5, -20.5], "expected": 54.5}, {"input": [54.5, -20.0], "expected": 54.5}, {"input": [54.5, -19.5], "expected": 54.5}, {"input": [54.5, -19.0], "expected": 54.5}, {"input": [54.5, -18.5], "expected": 54.5}, {"input": [54.5, -18.0], "expected": 54.5}, {"input": [54.5, -17.5], "expected": 54.5}, {"input": [54.5, -17.0], "expected": 54.5}, {"input": [54.5, -16.5], "expected": 54.5}, {"input": [54.5, -16.0], "expected": 54.5}, {"input": [54.5, -15.5], "expected": 54.5}, {"input": [54.5, -15.0], "expected": 54.5}, {"input": [54.5, -14.5], "expected": 54.5}, {"input": [54.5, -14.0], "expected": 54.5}, {"input": [54.5, -13.5], "expected": 54.5}, {"input": [54.5, -13.0], "expected": 54.5}, {"input": [54.5, -12.5], "expected": 54.5}, {"input": [54.5, -12.0], "expected": 54.5}, {"input": [54.5, -11.5], "expected": 54.5}, {"input": [54.5, -11.0], "expected": 54.5}, {"input": [54.5, -10.5], "expected": 54.5}, {"input": [54.5, -10.0], "expected": 54.5}, {"input": [54.5, -9.5], "expected": 54.5}, {"input": [54.5, -9.0], "expected": 54.5}, {"input": [54.5, -8.5], "expected": 54.5}, {"input": [54.5, -8.0], "expected": 54.5}, {"input": [54.5, -7.5], "expected": 54.5}, {"input": [54.5, -7.0], "expected": 54.5}, {"input": [54.5, -6.5], "expected": 54.5}, {"input": [54.5, -6.0], "expected": 54.5}, {"input": [54.5, -5.5], "expected": 54.5}, {"input": [54.5, -5.0], "expected": 54.5}, {"input": [54.5, -4.5], "expected": 54.5}, {"input": [54.5, -4.0], "expected": 54.5}, {"input": [54.5, -3.5], "expected": 54.5}, {"input": [54.5, -3.0], "expected": 54.5}, {"input": [54.5, -2.5], "expected": 54.5}, {"input": [54.5, -2.0], "expected": 54.5}, {"input": [54.5, -1.5], "expected": 54.5}, {"input": [54.5, -1.0], "expected": 54.5}, {"input": [54.5, -0.5], "expected": 54.5}, {"input": [54.5, 0.0], "expected": 54.5}, {"input": [54.5, 0.5], "expected": 54.5}, {"input": [54.5, 1.0], "expected": 54.5}, {"input": [54.5, 1.5], "expected": 54.5}, {"input": [54.5, 2.0], "expected": 54.5}, {"input": [54.5, 2.5], "expected": 54.5}, {"input": [54.5, 3.0], "expected": 54.5}, {"input": [54.5, 3.5], "expected": 54.5}, {"input": [54.5, 4.0], "expected": 54.5}, {"input": [54.5, 4.5], "expected": 54.5}, {"input": [54.5, 5.0], "expected": 54.5}, {"input": [54.5, 5.5], "expected": 54.5}, {"input": [54.5, 6.0], "expected": 54.5}, {"input": [54.5, 6.5], "expected": 54.5}, {"input": [54.5, 7.0], "expected": 54.5}, {"input": [54.5, 7.5], "expected": 54.5}, {"input": [54.5, 8.0], "expected": 54.5}, {"input": [54.5, 8.5], "expected": 54.5}, {"input": [54.5, 9.0], "expected": 54.5}, {"input": [54.5, 9.5], "expected": 54.5}, {"input": [54.5, 10.0], "expected": 54.5}, {"input": [54.5, 10.5], "expected": 54.5}, {"input": [54.5, 11.0], "expected": 54.5}, {"input": [54.5, 11.5], "expected": 54.5}, {"input": [54.5, 12.0], "expected": 54.5}, {"input": [54.5, 12.5], "expected": 54.5}, {"input": [54.5, 13.0], "expected": 54.5}, {"input": [54.5, 13.5], "expected": 54.5}, {"input": [54.5, 14.0], "expected": 54.5}, {"input": [54.5, 14.5], "expected": 54.5}, {"input": [54.5, 15.0], "expected": 54.5}, {"input": [54.5, 15.5], "expected": 54.5}, {"input": [54.5, 16.0], "expected": 54.5}, {"input": [54.5, 16.5], "expected": 54.5}, {"input": [54.5, 17.0], "expected": 54.5}, {"input": [54.5, 17.5], "expected": 54.5}, {"input": [54.5, 18.0], "expected": 54.5}, {"input": [54.5, 18.5], "expected": 54.5}, {"input": [54.5, 19.0], "expected": 54.5}, {"input": [54.5, 19.5], "expected": 54.5}, {"input": [54.5, 20.0], "expected": 54.5}, {"input": [54.5, 20.5], "expected": 54.5}, {"input": [54.5, 21.0], "expected": 54.5}, {"input": [54.5, 21.5], "expected": 54.50000000000001}, {"input": [54.5, 22.0], "expected": 54.50000000000001}, {"input": [54.5, 22.5], "expected": 54.500000000000014}, {"input": [54.5, 23.0], "expected": 54.50000000000002}, {"input": [54.5, 23.5], "expected": 54.500000000000036}, {"input": [54.5, 24.0], "expected": 54.50000000000006}, {"input": [54.5, 24.5], "expected": 54.50000000000009}, {"input": [54.5, 25.0], "expected": 54.500000000000156}, {"input": [54.5, 25.5], "expected": 54.500000000000256}, {"input": [54.5, 26.0], "expected": 54.50000000000042}, {"input": [54.5, 26.5], "expected": 54.50000000000069}, {"input": [54.5, 27.0], "expected": 54.50000000000114}, {"input": [54.5, 27.5], "expected": 54.50000000000188}, {"input": [54.5, 28.0], "expected": 54.5000000000031}, {"input": [54.5, 28.5], "expected": 54.50000000000511}, {"input": [54.5, 29.0], "expected": 54.50000000000842}, {"input": [54.5, 29.5], "expected": 54.50000000001389}, {"input": [54.5, 30.0], "expected": 54.5000000000229}, {"input": [54.5, 30.5], "expected": 54.50000000003775}, {"input": [54.5, 31.0], "expected": 54.50000000006224}, {"input": [54.5, 31.5], "expected": 54.50000000010262}, {"input": [54.5, 32.0], "expected": 54.50000000016919}, {"input": [54.5, 32.5], "expected": 54.500000000278945}, {"input": [54.5, 33.0], "expected": 54.500000000459906}, {"input": [54.5, 33.5], "expected": 54.500000000758256}, {"input": [54.5, 34.0], "expected": 54.50000000125015}, {"input": [54.5, 34.5], "expected": 54.50000000206116}, {"input": [54.5, 35.0], "expected": 54.50000000339827}, {"input": [54.5, 35.5], "expected": 54.50000000560279}, {"input": [54.5, 36.0], "expected": 54.500000009237446}, {"input": [54.5, 36.5], "expected": 54.50000001522998}, {"input": [54.5, 37.0], "expected": 54.50000002510999}, {"input": [54.5, 37.5], "expected": 54.500000041399375}, {"input": [54.5, 38.0], "expected": 54.50000006825603}, {"input": [54.5, 38.5], "expected": 54.50000011253517}, {"input": [54.5, 39.0], "expected": 54.50000018553912}, {"input": [54.5, 39.5], "expected": 54.500000305902276}, {"input": [54.5, 40.0], "expected": 54.50000050434753}, {"input": [54.5, 40.5], "expected": 54.500000831528375}, {"input": [54.5, 41.0], "expected": 54.500001370958145}, {"input": [54.5, 41.5], "expected": 54.50000226032685}, {"input": [54.5, 42.0], "expected": 54.50000372664623}, {"input": [54.5, 42.5], "expected": 54.50000614419348}, {"input": [54.5, 43.0], "expected": 54.50001013004229}, {"input": [54.5, 43.5], "expected": 54.50001670156132}, {"input": [54.5, 44.0], "expected": 54.50002753607023}, {"input": [54.5, 44.5], "expected": 54.50004539889922}, {"input": [54.5, 45.0], "expected": 54.50007484902863}, {"input": [54.5, 45.5], "expected": 54.50012340218972}, {"input": [54.5, 46.0], "expected": 54.50020344767213}, {"input": [54.5, 46.5], "expected": 54.5003354063729}, {"input": [54.5, 47.0], "expected": 54.50055293147536}, {"input": [54.5, 47.5], "expected": 54.50091146645377}, {"input": [54.5, 48.0], "expected": 54.50150231015976}, {"input": [54.5, 48.5], "expected": 54.50247568513773}, {"input": [54.5, 49.0], "expected": 54.50407844327057}, {"input": [54.5, 49.5], "expected": 54.50671534848912}, {"input": [54.5, 50.0], "expected": 54.5110477448486}, {"input": [54.5, 50.5], "expected": 54.51814992791781}, {"input": [54.5, 51.0], "expected": 54.52975041827262}, {"input": [54.5, 51.5], "expected": 54.548587351573744}, {"input": [54.5, 52.0], "expected": 54.57888973429255}, {"input": [54.5, 52.5], "expected": 54.62692801104297}, {"input": [54.5, 53.0], "expected": 54.70141327798275}, {"input": [54.5, 53.5], "expected": 54.81326168751822}, {"input": [54.5, 54.0], "expected": 54.97407698418011}, {"input": [54.5, 54.5], "expected": 55.19314718055995}, {"input": [54.5, 55.0], "expected": 55.47407698418011}, {"input": [54.5, 55.5], "expected": 55.81326168751822}, {"input": [54.5, 56.0], "expected": 56.20141327798275}, {"input": [54.5, 56.5], "expected": 56.62692801104297}, {"input": [54.5, 57.0], "expected": 57.07888973429255}, {"input": [54.5, 57.5], "expected": 57.548587351573744}, {"input": [54.5, 58.0], "expected": 58.02975041827262}, {"input": [54.5, 58.5], "expected": 58.51814992791781}, {"input": [54.5, 59.0], "expected": 59.0110477448486}, {"input": [54.5, 59.5], "expected": 59.50671534848912}, {"input": [54.5, 60.0], "expected": 60.00407844327057}, {"input": [54.5, 60.5], "expected": 60.50247568513773}, {"input": [54.5, 61.0], "expected": 61.00150231015976}, {"input": [54.5, 61.5], "expected": 61.50091146645377}, {"input": [54.5, 62.0], "expected": 62.00055293147536}, {"input": [54.5, 62.5], "expected": 62.5003354063729}, {"input": [54.5, 63.0], "expected": 63.00020344767213}, {"input": [54.5, 63.5], "expected": 63.50012340218972}, {"input": [54.5, 64.0], "expected": 64.00007484902864}, {"input": [54.5, 64.5], "expected": 64.50004539889922}, {"input": [54.5, 65.0], "expected": 65.00002753607023}, {"input": [54.5, 65.5], "expected": 65.50001670156132}, {"input": [54.5, 66.0], "expected": 66.00001013004228}, {"input": [54.5, 66.5], "expected": 66.50000614419348}, {"input": [54.5, 67.0], "expected": 67.00000372664623}, {"input": [54.5, 67.5], "expected": 67.50000226032685}, {"input": [54.5, 68.0], "expected": 68.00000137095815}, {"input": [54.5, 68.5], "expected": 68.50000083152837}, {"input": [54.5, 69.0], "expected": 69.00000050434754}, {"input": [54.5, 69.5], "expected": 69.50000030590228}, {"input": [54.5, 70.0], "expected": 70.00000018553912}, {"input": [54.5, 70.5], "expected": 70.50000011253516}, {"input": [54.5, 71.0], "expected": 71.00000006825603}, {"input": [54.5, 71.5], "expected": 71.50000004139937}, {"input": [54.5, 72.0], "expected": 72.00000002511}, {"input": [54.5, 72.5], "expected": 72.50000001522999}, {"input": [54.5, 73.0], "expected": 73.00000000923745}, {"input": [54.5, 73.5], "expected": 73.5000000056028}, {"input": [54.5, 74.0], "expected": 74.00000000339827}, {"input": [54.5, 74.5], "expected": 74.50000000206116}, {"input": [54.5, 75.0], "expected": 75.00000000125016}, {"input": [54.5, 75.5], "expected": 75.50000000075826}, {"input": [54.5, 76.0], "expected": 76.0000000004599}, {"input": [54.5, 76.5], "expected": 76.50000000027894}, {"input": [54.5, 77.0], "expected": 77.0000000001692}, {"input": [54.5, 77.5], "expected": 77.50000000010262}, {"input": [54.5, 78.0], "expected": 78.00000000006224}, {"input": [54.5, 78.5], "expected": 78.50000000003776}, {"input": [54.5, 79.0], "expected": 79.0000000000229}, {"input": [54.5, 79.5], "expected": 79.50000000001388}, {"input": [54.5, 80.0], "expected": 80.00000000000843}, {"input": [54.5, 80.5], "expected": 80.50000000000512}, {"input": [54.5, 81.0], "expected": 81.0000000000031}, {"input": [54.5, 81.5], "expected": 81.50000000000188}, {"input": [54.5, 82.0], "expected": 82.00000000000114}, {"input": [54.5, 82.5], "expected": 82.5000000000007}, {"input": [54.5, 83.0], "expected": 83.00000000000043}, {"input": [54.5, 83.5], "expected": 83.50000000000026}, {"input": [54.5, 84.0], "expected": 84.00000000000016}, {"input": [54.5, 84.5], "expected": 84.5000000000001}, {"input": [54.5, 85.0], "expected": 85.00000000000006}, {"input": [54.5, 85.5], "expected": 85.50000000000003}, {"input": [54.5, 86.0], "expected": 86.00000000000001}, {"input": [54.5, 86.5], "expected": 86.50000000000001}, {"input": [54.5, 87.0], "expected": 87.00000000000001}, {"input": [54.5, 87.5], "expected": 87.5}, {"input": [54.5, 88.0], "expected": 88.0}, {"input": [54.5, 88.5], "expected": 88.5}, {"input": [54.5, 89.0], "expected": 89.0}, {"input": [54.5, 89.5], "expected": 89.5}, {"input": [54.5, 90.0], "expected": 90.0}, {"input": [54.5, 90.5], "expected": 90.5}, {"input": [54.5, 91.0], "expected": 91.0}, {"input": [54.5, 91.5], "expected": 91.5}, {"input": [54.5, 92.0], "expected": 92.0}, {"input": [54.5, 92.5], "expected": 92.5}, {"input": [54.5, 93.0], "expected": 93.0}, {"input": [54.5, 93.5], "expected": 93.5}, {"input": [54.5, 94.0], "expected": 94.0}, {"input": [54.5, 94.5], "expected": 94.5}, {"input": [54.5, 95.0], "expected": 95.0}, {"input": [54.5, 95.5], "expected": 95.5}, {"input": [54.5, 96.0], "expected": 96.0}, {"input": [54.5, 96.5], "expected": 96.5}, {"input": [54.5, 97.0], "expected": 97.0}, {"input": [54.5, 97.5], "expected": 97.5}, {"input": [54.5, 98.0], "expected": 98.0}, {"input": [54.5, 98.5], "expected": 98.5}, {"input": [54.5, 99.0], "expected": 99.0}, {"input": [54.5, 99.5], "expected": 99.5}, {"input": [55.0, -100.0], "expected": 55.0}, {"input": [55.0, -99.5], "expected": 55.0}, {"input": [55.0, -99.0], "expected": 55.0}, {"input": [55.0, -98.5], "expected": 55.0}, {"input": [55.0, -98.0], "expected": 55.0}, {"input": [55.0, -97.5], "expected": 55.0}, {"input": [55.0, -97.0], "expected": 55.0}, {"input": [55.0, -96.5], "expected": 55.0}, {"input": [55.0, -96.0], "expected": 55.0}, {"input": [55.0, -95.5], "expected": 55.0}, {"input": [55.0, -95.0], "expected": 55.0}, {"input": [55.0, -94.5], "expected": 55.0}, {"input": [55.0, -94.0], "expected": 55.0}, {"input": [55.0, -93.5], "expected": 55.0}, {"input": [55.0, -93.0], "expected": 55.0}, {"input": [55.0, -92.5], "expected": 55.0}, {"input": [55.0, -92.0], "expected": 55.0}, {"input": [55.0, -91.5], "expected": 55.0}, {"input": [55.0, -91.0], "expected": 55.0}, {"input": [55.0, -90.5], "expected": 55.0}, {"input": [55.0, -90.0], "expected": 55.0}, {"input": [55.0, -89.5], "expected": 55.0}, {"input": [55.0, -89.0], "expected": 55.0}, {"input": [55.0, -88.5], "expected": 55.0}, {"input": [55.0, -88.0], "expected": 55.0}, {"input": [55.0, -87.5], "expected": 55.0}, {"input": [55.0, -87.0], "expected": 55.0}, {"input": [55.0, -86.5], "expected": 55.0}, {"input": [55.0, -86.0], "expected": 55.0}, {"input": [55.0, -85.5], "expected": 55.0}, {"input": [55.0, -85.0], "expected": 55.0}, {"input": [55.0, -84.5], "expected": 55.0}, {"input": [55.0, -84.0], "expected": 55.0}, {"input": [55.0, -83.5], "expected": 55.0}, {"input": [55.0, -83.0], "expected": 55.0}, {"input": [55.0, -82.5], "expected": 55.0}, {"input": [55.0, -82.0], "expected": 55.0}, {"input": [55.0, -81.5], "expected": 55.0}, {"input": [55.0, -81.0], "expected": 55.0}, {"input": [55.0, -80.5], "expected": 55.0}, {"input": [55.0, -80.0], "expected": 55.0}, {"input": [55.0, -79.5], "expected": 55.0}, {"input": [55.0, -79.0], "expected": 55.0}, {"input": [55.0, -78.5], "expected": 55.0}, {"input": [55.0, -78.0], "expected": 55.0}, {"input": [55.0, -77.5], "expected": 55.0}, {"input": [55.0, -77.0], "expected": 55.0}, {"input": [55.0, -76.5], "expected": 55.0}, {"input": [55.0, -76.0], "expected": 55.0}, {"input": [55.0, -75.5], "expected": 55.0}, {"input": [55.0, -75.0], "expected": 55.0}, {"input": [55.0, -74.5], "expected": 55.0}, {"input": [55.0, -74.0], "expected": 55.0}, {"input": [55.0, -73.5], "expected": 55.0}, {"input": [55.0, -73.0], "expected": 55.0}, {"input": [55.0, -72.5], "expected": 55.0}, {"input": [55.0, -72.0], "expected": 55.0}, {"input": [55.0, -71.5], "expected": 55.0}, {"input": [55.0, -71.0], "expected": 55.0}, {"input": [55.0, -70.5], "expected": 55.0}, {"input": [55.0, -70.0], "expected": 55.0}, {"input": [55.0, -69.5], "expected": 55.0}, {"input": [55.0, -69.0], "expected": 55.0}, {"input": [55.0, -68.5], "expected": 55.0}, {"input": [55.0, -68.0], "expected": 55.0}, {"input": [55.0, -67.5], "expected": 55.0}, {"input": [55.0, -67.0], "expected": 55.0}, {"input": [55.0, -66.5], "expected": 55.0}, {"input": [55.0, -66.0], "expected": 55.0}, {"input": [55.0, -65.5], "expected": 55.0}, {"input": [55.0, -65.0], "expected": 55.0}, {"input": [55.0, -64.5], "expected": 55.0}, {"input": [55.0, -64.0], "expected": 55.0}, {"input": [55.0, -63.5], "expected": 55.0}, {"input": [55.0, -63.0], "expected": 55.0}, {"input": [55.0, -62.5], "expected": 55.0}, {"input": [55.0, -62.0], "expected": 55.0}, {"input": [55.0, -61.5], "expected": 55.0}, {"input": [55.0, -61.0], "expected": 55.0}, {"input": [55.0, -60.5], "expected": 55.0}, {"input": [55.0, -60.0], "expected": 55.0}, {"input": [55.0, -59.5], "expected": 55.0}, {"input": [55.0, -59.0], "expected": 55.0}, {"input": [55.0, -58.5], "expected": 55.0}, {"input": [55.0, -58.0], "expected": 55.0}, {"input": [55.0, -57.5], "expected": 55.0}, {"input": [55.0, -57.0], "expected": 55.0}, {"input": [55.0, -56.5], "expected": 55.0}, {"input": [55.0, -56.0], "expected": 55.0}, {"input": [55.0, -55.5], "expected": 55.0}, {"input": [55.0, -55.0], "expected": 55.0}, {"input": [55.0, -54.5], "expected": 55.0}, {"input": [55.0, -54.0], "expected": 55.0}, {"input": [55.0, -53.5], "expected": 55.0}, {"input": [55.0, -53.0], "expected": 55.0}, {"input": [55.0, -52.5], "expected": 55.0}, {"input": [55.0, -52.0], "expected": 55.0}, {"input": [55.0, -51.5], "expected": 55.0}, {"input": [55.0, -51.0], "expected": 55.0}, {"input": [55.0, -50.5], "expected": 55.0}, {"input": [55.0, -50.0], "expected": 55.0}, {"input": [55.0, -49.5], "expected": 55.0}, {"input": [55.0, -49.0], "expected": 55.0}, {"input": [55.0, -48.5], "expected": 55.0}, {"input": [55.0, -48.0], "expected": 55.0}, {"input": [55.0, -47.5], "expected": 55.0}, {"input": [55.0, -47.0], "expected": 55.0}, {"input": [55.0, -46.5], "expected": 55.0}, {"input": [55.0, -46.0], "expected": 55.0}, {"input": [55.0, -45.5], "expected": 55.0}, {"input": [55.0, -45.0], "expected": 55.0}, {"input": [55.0, -44.5], "expected": 55.0}, {"input": [55.0, -44.0], "expected": 55.0}, {"input": [55.0, -43.5], "expected": 55.0}, {"input": [55.0, -43.0], "expected": 55.0}, {"input": [55.0, -42.5], "expected": 55.0}, {"input": [55.0, -42.0], "expected": 55.0}, {"input": [55.0, -41.5], "expected": 55.0}, {"input": [55.0, -41.0], "expected": 55.0}, {"input": [55.0, -40.5], "expected": 55.0}, {"input": [55.0, -40.0], "expected": 55.0}, {"input": [55.0, -39.5], "expected": 55.0}, {"input": [55.0, -39.0], "expected": 55.0}, {"input": [55.0, -38.5], "expected": 55.0}, {"input": [55.0, -38.0], "expected": 55.0}, {"input": [55.0, -37.5], "expected": 55.0}, {"input": [55.0, -37.0], "expected": 55.0}, {"input": [55.0, -36.5], "expected": 55.0}, {"input": [55.0, -36.0], "expected": 55.0}, {"input": [55.0, -35.5], "expected": 55.0}, {"input": [55.0, -35.0], "expected": 55.0}, {"input": [55.0, -34.5], "expected": 55.0}, {"input": [55.0, -34.0], "expected": 55.0}, {"input": [55.0, -33.5], "expected": 55.0}, {"input": [55.0, -33.0], "expected": 55.0}, {"input": [55.0, -32.5], "expected": 55.0}, {"input": [55.0, -32.0], "expected": 55.0}, {"input": [55.0, -31.5], "expected": 55.0}, {"input": [55.0, -31.0], "expected": 55.0}, {"input": [55.0, -30.5], "expected": 55.0}, {"input": [55.0, -30.0], "expected": 55.0}, {"input": [55.0, -29.5], "expected": 55.0}, {"input": [55.0, -29.0], "expected": 55.0}, {"input": [55.0, -28.5], "expected": 55.0}, {"input": [55.0, -28.0], "expected": 55.0}, {"input": [55.0, -27.5], "expected": 55.0}, {"input": [55.0, -27.0], "expected": 55.0}, {"input": [55.0, -26.5], "expected": 55.0}, {"input": [55.0, -26.0], "expected": 55.0}, {"input": [55.0, -25.5], "expected": 55.0}, {"input": [55.0, -25.0], "expected": 55.0}, {"input": [55.0, -24.5], "expected": 55.0}, {"input": [55.0, -24.0], "expected": 55.0}, {"input": [55.0, -23.5], "expected": 55.0}, {"input": [55.0, -23.0], "expected": 55.0}, {"input": [55.0, -22.5], "expected": 55.0}, {"input": [55.0, -22.0], "expected": 55.0}, {"input": [55.0, -21.5], "expected": 55.0}, {"input": [55.0, -21.0], "expected": 55.0}, {"input": [55.0, -20.5], "expected": 55.0}, {"input": [55.0, -20.0], "expected": 55.0}, {"input": [55.0, -19.5], "expected": 55.0}, {"input": [55.0, -19.0], "expected": 55.0}, {"input": [55.0, -18.5], "expected": 55.0}, {"input": [55.0, -18.0], "expected": 55.0}, {"input": [55.0, -17.5], "expected": 55.0}, {"input": [55.0, -17.0], "expected": 55.0}, {"input": [55.0, -16.5], "expected": 55.0}, {"input": [55.0, -16.0], "expected": 55.0}, {"input": [55.0, -15.5], "expected": 55.0}, {"input": [55.0, -15.0], "expected": 55.0}, {"input": [55.0, -14.5], "expected": 55.0}, {"input": [55.0, -14.0], "expected": 55.0}, {"input": [55.0, -13.5], "expected": 55.0}, {"input": [55.0, -13.0], "expected": 55.0}, {"input": [55.0, -12.5], "expected": 55.0}, {"input": [55.0, -12.0], "expected": 55.0}, {"input": [55.0, -11.5], "expected": 55.0}, {"input": [55.0, -11.0], "expected": 55.0}, {"input": [55.0, -10.5], "expected": 55.0}, {"input": [55.0, -10.0], "expected": 55.0}, {"input": [55.0, -9.5], "expected": 55.0}, {"input": [55.0, -9.0], "expected": 55.0}, {"input": [55.0, -8.5], "expected": 55.0}, {"input": [55.0, -8.0], "expected": 55.0}, {"input": [55.0, -7.5], "expected": 55.0}, {"input": [55.0, -7.0], "expected": 55.0}, {"input": [55.0, -6.5], "expected": 55.0}, {"input": [55.0, -6.0], "expected": 55.0}, {"input": [55.0, -5.5], "expected": 55.0}, {"input": [55.0, -5.0], "expected": 55.0}, {"input": [55.0, -4.5], "expected": 55.0}, {"input": [55.0, -4.0], "expected": 55.0}, {"input": [55.0, -3.5], "expected": 55.0}, {"input": [55.0, -3.0], "expected": 55.0}, {"input": [55.0, -2.5], "expected": 55.0}, {"input": [55.0, -2.0], "expected": 55.0}, {"input": [55.0, -1.5], "expected": 55.0}, {"input": [55.0, -1.0], "expected": 55.0}, {"input": [55.0, -0.5], "expected": 55.0}, {"input": [55.0, 0.0], "expected": 55.0}, {"input": [55.0, 0.5], "expected": 55.0}, {"input": [55.0, 1.0], "expected": 55.0}, {"input": [55.0, 1.5], "expected": 55.0}, {"input": [55.0, 2.0], "expected": 55.0}, {"input": [55.0, 2.5], "expected": 55.0}, {"input": [55.0, 3.0], "expected": 55.0}, {"input": [55.0, 3.5], "expected": 55.0}, {"input": [55.0, 4.0], "expected": 55.0}, {"input": [55.0, 4.5], "expected": 55.0}, {"input": [55.0, 5.0], "expected": 55.0}, {"input": [55.0, 5.5], "expected": 55.0}, {"input": [55.0, 6.0], "expected": 55.0}, {"input": [55.0, 6.5], "expected": 55.0}, {"input": [55.0, 7.0], "expected": 55.0}, {"input": [55.0, 7.5], "expected": 55.0}, {"input": [55.0, 8.0], "expected": 55.0}, {"input": [55.0, 8.5], "expected": 55.0}, {"input": [55.0, 9.0], "expected": 55.0}, {"input": [55.0, 9.5], "expected": 55.0}, {"input": [55.0, 10.0], "expected": 55.0}, {"input": [55.0, 10.5], "expected": 55.0}, {"input": [55.0, 11.0], "expected": 55.0}, {"input": [55.0, 11.5], "expected": 55.0}, {"input": [55.0, 12.0], "expected": 55.0}, {"input": [55.0, 12.5], "expected": 55.0}, {"input": [55.0, 13.0], "expected": 55.0}, {"input": [55.0, 13.5], "expected": 55.0}, {"input": [55.0, 14.0], "expected": 55.0}, {"input": [55.0, 14.5], "expected": 55.0}, {"input": [55.0, 15.0], "expected": 55.0}, {"input": [55.0, 15.5], "expected": 55.0}, {"input": [55.0, 16.0], "expected": 55.0}, {"input": [55.0, 16.5], "expected": 55.0}, {"input": [55.0, 17.0], "expected": 55.0}, {"input": [55.0, 17.5], "expected": 55.0}, {"input": [55.0, 18.0], "expected": 55.0}, {"input": [55.0, 18.5], "expected": 55.0}, {"input": [55.0, 19.0], "expected": 55.0}, {"input": [55.0, 19.5], "expected": 55.0}, {"input": [55.0, 20.0], "expected": 55.0}, {"input": [55.0, 20.5], "expected": 55.0}, {"input": [55.0, 21.0], "expected": 55.0}, {"input": [55.0, 21.5], "expected": 55.0}, {"input": [55.0, 22.0], "expected": 55.00000000000001}, {"input": [55.0, 22.5], "expected": 55.00000000000001}, {"input": [55.0, 23.0], "expected": 55.000000000000014}, {"input": [55.0, 23.5], "expected": 55.00000000000002}, {"input": [55.0, 24.0], "expected": 55.000000000000036}, {"input": [55.0, 24.5], "expected": 55.00000000000006}, {"input": [55.0, 25.0], "expected": 55.00000000000009}, {"input": [55.0, 25.5], "expected": 55.000000000000156}, {"input": [55.0, 26.0], "expected": 55.000000000000256}, {"input": [55.0, 26.5], "expected": 55.00000000000042}, {"input": [55.0, 27.0], "expected": 55.00000000000069}, {"input": [55.0, 27.5], "expected": 55.00000000000114}, {"input": [55.0, 28.0], "expected": 55.00000000000188}, {"input": [55.0, 28.5], "expected": 55.0000000000031}, {"input": [55.0, 29.0], "expected": 55.00000000000511}, {"input": [55.0, 29.5], "expected": 55.00000000000842}, {"input": [55.0, 30.0], "expected": 55.00000000001389}, {"input": [55.0, 30.5], "expected": 55.0000000000229}, {"input": [55.0, 31.0], "expected": 55.00000000003775}, {"input": [55.0, 31.5], "expected": 55.00000000006224}, {"input": [55.0, 32.0], "expected": 55.00000000010262}, {"input": [55.0, 32.5], "expected": 55.00000000016919}, {"input": [55.0, 33.0], "expected": 55.000000000278945}, {"input": [55.0, 33.5], "expected": 55.000000000459906}, {"input": [55.0, 34.0], "expected": 55.000000000758256}, {"input": [55.0, 34.5], "expected": 55.00000000125015}, {"input": [55.0, 35.0], "expected": 55.00000000206116}, {"input": [55.0, 35.5], "expected": 55.00000000339827}, {"input": [55.0, 36.0], "expected": 55.00000000560279}, {"input": [55.0, 36.5], "expected": 55.000000009237446}, {"input": [55.0, 37.0], "expected": 55.00000001522998}, {"input": [55.0, 37.5], "expected": 55.00000002510999}, {"input": [55.0, 38.0], "expected": 55.000000041399375}, {"input": [55.0, 38.5], "expected": 55.00000006825603}, {"input": [55.0, 39.0], "expected": 55.00000011253517}, {"input": [55.0, 39.5], "expected": 55.00000018553912}, {"input": [55.0, 40.0], "expected": 55.000000305902276}, {"input": [55.0, 40.5], "expected": 55.00000050434753}, {"input": [55.0, 41.0], "expected": 55.000000831528375}, {"input": [55.0, 41.5], "expected": 55.000001370958145}, {"input": [55.0, 42.0], "expected": 55.00000226032685}, {"input": [55.0, 42.5], "expected": 55.00000372664623}, {"input": [55.0, 43.0], "expected": 55.00000614419348}, {"input": [55.0, 43.5], "expected": 55.00001013004229}, {"input": [55.0, 44.0], "expected": 55.00001670156132}, {"input": [55.0, 44.5], "expected": 55.00002753607023}, {"input": [55.0, 45.0], "expected": 55.00004539889922}, {"input": [55.0, 45.5], "expected": 55.00007484902863}, {"input": [55.0, 46.0], "expected": 55.00012340218972}, {"input": [55.0, 46.5], "expected": 55.00020344767213}, {"input": [55.0, 47.0], "expected": 55.0003354063729}, {"input": [55.0, 47.5], "expected": 55.00055293147536}, {"input": [55.0, 48.0], "expected": 55.00091146645377}, {"input": [55.0, 48.5], "expected": 55.00150231015976}, {"input": [55.0, 49.0], "expected": 55.00247568513773}, {"input": [55.0, 49.5], "expected": 55.00407844327057}, {"input": [55.0, 50.0], "expected": 55.00671534848912}, {"input": [55.0, 50.5], "expected": 55.0110477448486}, {"input": [55.0, 51.0], "expected": 55.01814992791781}, {"input": [55.0, 51.5], "expected": 55.02975041827262}, {"input": [55.0, 52.0], "expected": 55.048587351573744}, {"input": [55.0, 52.5], "expected": 55.07888973429255}, {"input": [55.0, 53.0], "expected": 55.12692801104297}, {"input": [55.0, 53.5], "expected": 55.20141327798275}, {"input": [55.0, 54.0], "expected": 55.31326168751822}, {"input": [55.0, 54.5], "expected": 55.47407698418011}, {"input": [55.0, 55.0], "expected": 55.69314718055995}, {"input": [55.0, 55.5], "expected": 55.97407698418011}, {"input": [55.0, 56.0], "expected": 56.31326168751822}, {"input": [55.0, 56.5], "expected": 56.70141327798275}, {"input": [55.0, 57.0], "expected": 57.12692801104297}, {"input": [55.0, 57.5], "expected": 57.57888973429255}, {"input": [55.0, 58.0], "expected": 58.048587351573744}, {"input": [55.0, 58.5], "expected": 58.52975041827262}, {"input": [55.0, 59.0], "expected": 59.01814992791781}, {"input": [55.0, 59.5], "expected": 59.5110477448486}, {"input": [55.0, 60.0], "expected": 60.00671534848912}, {"input": [55.0, 60.5], "expected": 60.50407844327057}, {"input": [55.0, 61.0], "expected": 61.00247568513773}, {"input": [55.0, 61.5], "expected": 61.50150231015976}, {"input": [55.0, 62.0], "expected": 62.00091146645377}, {"input": [55.0, 62.5], "expected": 62.50055293147536}, {"input": [55.0, 63.0], "expected": 63.0003354063729}, {"input": [55.0, 63.5], "expected": 63.50020344767213}, {"input": [55.0, 64.0], "expected": 64.00012340218973}, {"input": [55.0, 64.5], "expected": 64.50007484902864}, {"input": [55.0, 65.0], "expected": 65.00004539889922}, {"input": [55.0, 65.5], "expected": 65.50002753607023}, {"input": [55.0, 66.0], "expected": 66.00001670156132}, {"input": [55.0, 66.5], "expected": 66.50001013004228}, {"input": [55.0, 67.0], "expected": 67.00000614419348}, {"input": [55.0, 67.5], "expected": 67.50000372664623}, {"input": [55.0, 68.0], "expected": 68.00000226032685}, {"input": [55.0, 68.5], "expected": 68.50000137095815}, {"input": [55.0, 69.0], "expected": 69.00000083152837}, {"input": [55.0, 69.5], "expected": 69.50000050434754}, {"input": [55.0, 70.0], "expected": 70.00000030590228}, {"input": [55.0, 70.5], "expected": 70.50000018553912}, {"input": [55.0, 71.0], "expected": 71.00000011253516}, {"input": [55.0, 71.5], "expected": 71.50000006825603}, {"input": [55.0, 72.0], "expected": 72.00000004139937}, {"input": [55.0, 72.5], "expected": 72.50000002511}, {"input": [55.0, 73.0], "expected": 73.00000001522999}, {"input": [55.0, 73.5], "expected": 73.50000000923745}, {"input": [55.0, 74.0], "expected": 74.0000000056028}, {"input": [55.0, 74.5], "expected": 74.50000000339827}, {"input": [55.0, 75.0], "expected": 75.00000000206116}, {"input": [55.0, 75.5], "expected": 75.50000000125016}, {"input": [55.0, 76.0], "expected": 76.00000000075826}, {"input": [55.0, 76.5], "expected": 76.5000000004599}, {"input": [55.0, 77.0], "expected": 77.00000000027894}, {"input": [55.0, 77.5], "expected": 77.5000000001692}, {"input": [55.0, 78.0], "expected": 78.00000000010262}, {"input": [55.0, 78.5], "expected": 78.50000000006224}, {"input": [55.0, 79.0], "expected": 79.00000000003776}, {"input": [55.0, 79.5], "expected": 79.5000000000229}, {"input": [55.0, 80.0], "expected": 80.00000000001388}, {"input": [55.0, 80.5], "expected": 80.50000000000843}, {"input": [55.0, 81.0], "expected": 81.00000000000512}, {"input": [55.0, 81.5], "expected": 81.5000000000031}, {"input": [55.0, 82.0], "expected": 82.00000000000188}, {"input": [55.0, 82.5], "expected": 82.50000000000114}, {"input": [55.0, 83.0], "expected": 83.0000000000007}, {"input": [55.0, 83.5], "expected": 83.50000000000043}, {"input": [55.0, 84.0], "expected": 84.00000000000026}, {"input": [55.0, 84.5], "expected": 84.50000000000016}, {"input": [55.0, 85.0], "expected": 85.0000000000001}, {"input": [55.0, 85.5], "expected": 85.50000000000006}, {"input": [55.0, 86.0], "expected": 86.00000000000003}, {"input": [55.0, 86.5], "expected": 86.50000000000001}, {"input": [55.0, 87.0], "expected": 87.00000000000001}, {"input": [55.0, 87.5], "expected": 87.50000000000001}, {"input": [55.0, 88.0], "expected": 88.0}, {"input": [55.0, 88.5], "expected": 88.5}, {"input": [55.0, 89.0], "expected": 89.0}, {"input": [55.0, 89.5], "expected": 89.5}, {"input": [55.0, 90.0], "expected": 90.0}, {"input": [55.0, 90.5], "expected": 90.5}, {"input": [55.0, 91.0], "expected": 91.0}, {"input": [55.0, 91.5], "expected": 91.5}, {"input": [55.0, 92.0], "expected": 92.0}, {"input": [55.0, 92.5], "expected": 92.5}, {"input": [55.0, 93.0], "expected": 93.0}, {"input": [55.0, 93.5], "expected": 93.5}, {"input": [55.0, 94.0], "expected": 94.0}, {"input": [55.0, 94.5], "expected": 94.5}, {"input": [55.0, 95.0], "expected": 95.0}, {"input": [55.0, 95.5], "expected": 95.5}, {"input": [55.0, 96.0], "expected": 96.0}, {"input": [55.0, 96.5], "expected": 96.5}, {"input": [55.0, 97.0], "expected": 97.0}, {"input": [55.0, 97.5], "expected": 97.5}, {"input": [55.0, 98.0], "expected": 98.0}, {"input": [55.0, 98.5], "expected": 98.5}, {"input": [55.0, 99.0], "expected": 99.0}, {"input": [55.0, 99.5], "expected": 99.5}, {"input": [55.5, -100.0], "expected": 55.5}, {"input": [55.5, -99.5], "expected": 55.5}, {"input": [55.5, -99.0], "expected": 55.5}, {"input": [55.5, -98.5], "expected": 55.5}, {"input": [55.5, -98.0], "expected": 55.5}, {"input": [55.5, -97.5], "expected": 55.5}, {"input": [55.5, -97.0], "expected": 55.5}, {"input": [55.5, -96.5], "expected": 55.5}, {"input": [55.5, -96.0], "expected": 55.5}, {"input": [55.5, -95.5], "expected": 55.5}, {"input": [55.5, -95.0], "expected": 55.5}, {"input": [55.5, -94.5], "expected": 55.5}, {"input": [55.5, -94.0], "expected": 55.5}, {"input": [55.5, -93.5], "expected": 55.5}, {"input": [55.5, -93.0], "expected": 55.5}, {"input": [55.5, -92.5], "expected": 55.5}, {"input": [55.5, -92.0], "expected": 55.5}, {"input": [55.5, -91.5], "expected": 55.5}, {"input": [55.5, -91.0], "expected": 55.5}, {"input": [55.5, -90.5], "expected": 55.5}, {"input": [55.5, -90.0], "expected": 55.5}, {"input": [55.5, -89.5], "expected": 55.5}, {"input": [55.5, -89.0], "expected": 55.5}, {"input": [55.5, -88.5], "expected": 55.5}, {"input": [55.5, -88.0], "expected": 55.5}, {"input": [55.5, -87.5], "expected": 55.5}, {"input": [55.5, -87.0], "expected": 55.5}, {"input": [55.5, -86.5], "expected": 55.5}, {"input": [55.5, -86.0], "expected": 55.5}, {"input": [55.5, -85.5], "expected": 55.5}, {"input": [55.5, -85.0], "expected": 55.5}, {"input": [55.5, -84.5], "expected": 55.5}, {"input": [55.5, -84.0], "expected": 55.5}, {"input": [55.5, -83.5], "expected": 55.5}, {"input": [55.5, -83.0], "expected": 55.5}, {"input": [55.5, -82.5], "expected": 55.5}, {"input": [55.5, -82.0], "expected": 55.5}, {"input": [55.5, -81.5], "expected": 55.5}, {"input": [55.5, -81.0], "expected": 55.5}, {"input": [55.5, -80.5], "expected": 55.5}, {"input": [55.5, -80.0], "expected": 55.5}, {"input": [55.5, -79.5], "expected": 55.5}, {"input": [55.5, -79.0], "expected": 55.5}, {"input": [55.5, -78.5], "expected": 55.5}, {"input": [55.5, -78.0], "expected": 55.5}, {"input": [55.5, -77.5], "expected": 55.5}, {"input": [55.5, -77.0], "expected": 55.5}, {"input": [55.5, -76.5], "expected": 55.5}, {"input": [55.5, -76.0], "expected": 55.5}, {"input": [55.5, -75.5], "expected": 55.5}, {"input": [55.5, -75.0], "expected": 55.5}, {"input": [55.5, -74.5], "expected": 55.5}, {"input": [55.5, -74.0], "expected": 55.5}, {"input": [55.5, -73.5], "expected": 55.5}, {"input": [55.5, -73.0], "expected": 55.5}, {"input": [55.5, -72.5], "expected": 55.5}, {"input": [55.5, -72.0], "expected": 55.5}, {"input": [55.5, -71.5], "expected": 55.5}, {"input": [55.5, -71.0], "expected": 55.5}, {"input": [55.5, -70.5], "expected": 55.5}, {"input": [55.5, -70.0], "expected": 55.5}, {"input": [55.5, -69.5], "expected": 55.5}, {"input": [55.5, -69.0], "expected": 55.5}, {"input": [55.5, -68.5], "expected": 55.5}, {"input": [55.5, -68.0], "expected": 55.5}, {"input": [55.5, -67.5], "expected": 55.5}, {"input": [55.5, -67.0], "expected": 55.5}, {"input": [55.5, -66.5], "expected": 55.5}, {"input": [55.5, -66.0], "expected": 55.5}, {"input": [55.5, -65.5], "expected": 55.5}, {"input": [55.5, -65.0], "expected": 55.5}, {"input": [55.5, -64.5], "expected": 55.5}, {"input": [55.5, -64.0], "expected": 55.5}, {"input": [55.5, -63.5], "expected": 55.5}, {"input": [55.5, -63.0], "expected": 55.5}, {"input": [55.5, -62.5], "expected": 55.5}, {"input": [55.5, -62.0], "expected": 55.5}, {"input": [55.5, -61.5], "expected": 55.5}, {"input": [55.5, -61.0], "expected": 55.5}, {"input": [55.5, -60.5], "expected": 55.5}, {"input": [55.5, -60.0], "expected": 55.5}, {"input": [55.5, -59.5], "expected": 55.5}, {"input": [55.5, -59.0], "expected": 55.5}, {"input": [55.5, -58.5], "expected": 55.5}, {"input": [55.5, -58.0], "expected": 55.5}, {"input": [55.5, -57.5], "expected": 55.5}, {"input": [55.5, -57.0], "expected": 55.5}, {"input": [55.5, -56.5], "expected": 55.5}, {"input": [55.5, -56.0], "expected": 55.5}, {"input": [55.5, -55.5], "expected": 55.5}, {"input": [55.5, -55.0], "expected": 55.5}, {"input": [55.5, -54.5], "expected": 55.5}, {"input": [55.5, -54.0], "expected": 55.5}, {"input": [55.5, -53.5], "expected": 55.5}, {"input": [55.5, -53.0], "expected": 55.5}, {"input": [55.5, -52.5], "expected": 55.5}, {"input": [55.5, -52.0], "expected": 55.5}, {"input": [55.5, -51.5], "expected": 55.5}, {"input": [55.5, -51.0], "expected": 55.5}, {"input": [55.5, -50.5], "expected": 55.5}, {"input": [55.5, -50.0], "expected": 55.5}, {"input": [55.5, -49.5], "expected": 55.5}, {"input": [55.5, -49.0], "expected": 55.5}, {"input": [55.5, -48.5], "expected": 55.5}, {"input": [55.5, -48.0], "expected": 55.5}, {"input": [55.5, -47.5], "expected": 55.5}, {"input": [55.5, -47.0], "expected": 55.5}, {"input": [55.5, -46.5], "expected": 55.5}, {"input": [55.5, -46.0], "expected": 55.5}, {"input": [55.5, -45.5], "expected": 55.5}, {"input": [55.5, -45.0], "expected": 55.5}, {"input": [55.5, -44.5], "expected": 55.5}, {"input": [55.5, -44.0], "expected": 55.5}, {"input": [55.5, -43.5], "expected": 55.5}, {"input": [55.5, -43.0], "expected": 55.5}, {"input": [55.5, -42.5], "expected": 55.5}, {"input": [55.5, -42.0], "expected": 55.5}, {"input": [55.5, -41.5], "expected": 55.5}, {"input": [55.5, -41.0], "expected": 55.5}, {"input": [55.5, -40.5], "expected": 55.5}, {"input": [55.5, -40.0], "expected": 55.5}, {"input": [55.5, -39.5], "expected": 55.5}, {"input": [55.5, -39.0], "expected": 55.5}, {"input": [55.5, -38.5], "expected": 55.5}, {"input": [55.5, -38.0], "expected": 55.5}, {"input": [55.5, -37.5], "expected": 55.5}, {"input": [55.5, -37.0], "expected": 55.5}, {"input": [55.5, -36.5], "expected": 55.5}, {"input": [55.5, -36.0], "expected": 55.5}, {"input": [55.5, -35.5], "expected": 55.5}, {"input": [55.5, -35.0], "expected": 55.5}, {"input": [55.5, -34.5], "expected": 55.5}, {"input": [55.5, -34.0], "expected": 55.5}, {"input": [55.5, -33.5], "expected": 55.5}, {"input": [55.5, -33.0], "expected": 55.5}, {"input": [55.5, -32.5], "expected": 55.5}, {"input": [55.5, -32.0], "expected": 55.5}, {"input": [55.5, -31.5], "expected": 55.5}, {"input": [55.5, -31.0], "expected": 55.5}, {"input": [55.5, -30.5], "expected": 55.5}, {"input": [55.5, -30.0], "expected": 55.5}, {"input": [55.5, -29.5], "expected": 55.5}, {"input": [55.5, -29.0], "expected": 55.5}, {"input": [55.5, -28.5], "expected": 55.5}, {"input": [55.5, -28.0], "expected": 55.5}, {"input": [55.5, -27.5], "expected": 55.5}, {"input": [55.5, -27.0], "expected": 55.5}, {"input": [55.5, -26.5], "expected": 55.5}, {"input": [55.5, -26.0], "expected": 55.5}, {"input": [55.5, -25.5], "expected": 55.5}, {"input": [55.5, -25.0], "expected": 55.5}, {"input": [55.5, -24.5], "expected": 55.5}, {"input": [55.5, -24.0], "expected": 55.5}, {"input": [55.5, -23.5], "expected": 55.5}, {"input": [55.5, -23.0], "expected": 55.5}, {"input": [55.5, -22.5], "expected": 55.5}, {"input": [55.5, -22.0], "expected": 55.5}, {"input": [55.5, -21.5], "expected": 55.5}, {"input": [55.5, -21.0], "expected": 55.5}, {"input": [55.5, -20.5], "expected": 55.5}, {"input": [55.5, -20.0], "expected": 55.5}, {"input": [55.5, -19.5], "expected": 55.5}, {"input": [55.5, -19.0], "expected": 55.5}, {"input": [55.5, -18.5], "expected": 55.5}, {"input": [55.5, -18.0], "expected": 55.5}, {"input": [55.5, -17.5], "expected": 55.5}, {"input": [55.5, -17.0], "expected": 55.5}, {"input": [55.5, -16.5], "expected": 55.5}, {"input": [55.5, -16.0], "expected": 55.5}, {"input": [55.5, -15.5], "expected": 55.5}, {"input": [55.5, -15.0], "expected": 55.5}, {"input": [55.5, -14.5], "expected": 55.5}, {"input": [55.5, -14.0], "expected": 55.5}, {"input": [55.5, -13.5], "expected": 55.5}, {"input": [55.5, -13.0], "expected": 55.5}, {"input": [55.5, -12.5], "expected": 55.5}, {"input": [55.5, -12.0], "expected": 55.5}, {"input": [55.5, -11.5], "expected": 55.5}, {"input": [55.5, -11.0], "expected": 55.5}, {"input": [55.5, -10.5], "expected": 55.5}, {"input": [55.5, -10.0], "expected": 55.5}, {"input": [55.5, -9.5], "expected": 55.5}, {"input": [55.5, -9.0], "expected": 55.5}, {"input": [55.5, -8.5], "expected": 55.5}, {"input": [55.5, -8.0], "expected": 55.5}, {"input": [55.5, -7.5], "expected": 55.5}, {"input": [55.5, -7.0], "expected": 55.5}, {"input": [55.5, -6.5], "expected": 55.5}, {"input": [55.5, -6.0], "expected": 55.5}, {"input": [55.5, -5.5], "expected": 55.5}, {"input": [55.5, -5.0], "expected": 55.5}, {"input": [55.5, -4.5], "expected": 55.5}, {"input": [55.5, -4.0], "expected": 55.5}, {"input": [55.5, -3.5], "expected": 55.5}, {"input": [55.5, -3.0], "expected": 55.5}, {"input": [55.5, -2.5], "expected": 55.5}, {"input": [55.5, -2.0], "expected": 55.5}, {"input": [55.5, -1.5], "expected": 55.5}, {"input": [55.5, -1.0], "expected": 55.5}, {"input": [55.5, -0.5], "expected": 55.5}, {"input": [55.5, 0.0], "expected": 55.5}, {"input": [55.5, 0.5], "expected": 55.5}, {"input": [55.5, 1.0], "expected": 55.5}, {"input": [55.5, 1.5], "expected": 55.5}, {"input": [55.5, 2.0], "expected": 55.5}, {"input": [55.5, 2.5], "expected": 55.5}, {"input": [55.5, 3.0], "expected": 55.5}, {"input": [55.5, 3.5], "expected": 55.5}, {"input": [55.5, 4.0], "expected": 55.5}, {"input": [55.5, 4.5], "expected": 55.5}, {"input": [55.5, 5.0], "expected": 55.5}, {"input": [55.5, 5.5], "expected": 55.5}, {"input": [55.5, 6.0], "expected": 55.5}, {"input": [55.5, 6.5], "expected": 55.5}, {"input": [55.5, 7.0], "expected": 55.5}, {"input": [55.5, 7.5], "expected": 55.5}, {"input": [55.5, 8.0], "expected": 55.5}, {"input": [55.5, 8.5], "expected": 55.5}, {"input": [55.5, 9.0], "expected": 55.5}, {"input": [55.5, 9.5], "expected": 55.5}, {"input": [55.5, 10.0], "expected": 55.5}, {"input": [55.5, 10.5], "expected": 55.5}, {"input": [55.5, 11.0], "expected": 55.5}, {"input": [55.5, 11.5], "expected": 55.5}, {"input": [55.5, 12.0], "expected": 55.5}, {"input": [55.5, 12.5], "expected": 55.5}, {"input": [55.5, 13.0], "expected": 55.5}, {"input": [55.5, 13.5], "expected": 55.5}, {"input": [55.5, 14.0], "expected": 55.5}, {"input": [55.5, 14.5], "expected": 55.5}, {"input": [55.5, 15.0], "expected": 55.5}, {"input": [55.5, 15.5], "expected": 55.5}, {"input": [55.5, 16.0], "expected": 55.5}, {"input": [55.5, 16.5], "expected": 55.5}, {"input": [55.5, 17.0], "expected": 55.5}, {"input": [55.5, 17.5], "expected": 55.5}, {"input": [55.5, 18.0], "expected": 55.5}, {"input": [55.5, 18.5], "expected": 55.5}, {"input": [55.5, 19.0], "expected": 55.5}, {"input": [55.5, 19.5], "expected": 55.5}, {"input": [55.5, 20.0], "expected": 55.5}, {"input": [55.5, 20.5], "expected": 55.5}, {"input": [55.5, 21.0], "expected": 55.5}, {"input": [55.5, 21.5], "expected": 55.5}, {"input": [55.5, 22.0], "expected": 55.5}, {"input": [55.5, 22.5], "expected": 55.50000000000001}, {"input": [55.5, 23.0], "expected": 55.50000000000001}, {"input": [55.5, 23.5], "expected": 55.500000000000014}, {"input": [55.5, 24.0], "expected": 55.50000000000002}, {"input": [55.5, 24.5], "expected": 55.500000000000036}, {"input": [55.5, 25.0], "expected": 55.50000000000006}, {"input": [55.5, 25.5], "expected": 55.50000000000009}, {"input": [55.5, 26.0], "expected": 55.500000000000156}, {"input": [55.5, 26.5], "expected": 55.500000000000256}, {"input": [55.5, 27.0], "expected": 55.50000000000042}, {"input": [55.5, 27.5], "expected": 55.50000000000069}, {"input": [55.5, 28.0], "expected": 55.50000000000114}, {"input": [55.5, 28.5], "expected": 55.50000000000188}, {"input": [55.5, 29.0], "expected": 55.5000000000031}, {"input": [55.5, 29.5], "expected": 55.50000000000511}, {"input": [55.5, 30.0], "expected": 55.50000000000842}, {"input": [55.5, 30.5], "expected": 55.50000000001389}, {"input": [55.5, 31.0], "expected": 55.5000000000229}, {"input": [55.5, 31.5], "expected": 55.50000000003775}, {"input": [55.5, 32.0], "expected": 55.50000000006224}, {"input": [55.5, 32.5], "expected": 55.50000000010262}, {"input": [55.5, 33.0], "expected": 55.50000000016919}, {"input": [55.5, 33.5], "expected": 55.500000000278945}, {"input": [55.5, 34.0], "expected": 55.500000000459906}, {"input": [55.5, 34.5], "expected": 55.500000000758256}, {"input": [55.5, 35.0], "expected": 55.50000000125015}, {"input": [55.5, 35.5], "expected": 55.50000000206116}, {"input": [55.5, 36.0], "expected": 55.50000000339827}, {"input": [55.5, 36.5], "expected": 55.50000000560279}, {"input": [55.5, 37.0], "expected": 55.500000009237446}, {"input": [55.5, 37.5], "expected": 55.50000001522998}, {"input": [55.5, 38.0], "expected": 55.50000002510999}, {"input": [55.5, 38.5], "expected": 55.500000041399375}, {"input": [55.5, 39.0], "expected": 55.50000006825603}, {"input": [55.5, 39.5], "expected": 55.50000011253517}, {"input": [55.5, 40.0], "expected": 55.50000018553912}, {"input": [55.5, 40.5], "expected": 55.500000305902276}, {"input": [55.5, 41.0], "expected": 55.50000050434753}, {"input": [55.5, 41.5], "expected": 55.500000831528375}, {"input": [55.5, 42.0], "expected": 55.500001370958145}, {"input": [55.5, 42.5], "expected": 55.50000226032685}, {"input": [55.5, 43.0], "expected": 55.50000372664623}, {"input": [55.5, 43.5], "expected": 55.50000614419348}, {"input": [55.5, 44.0], "expected": 55.50001013004229}, {"input": [55.5, 44.5], "expected": 55.50001670156132}, {"input": [55.5, 45.0], "expected": 55.50002753607023}, {"input": [55.5, 45.5], "expected": 55.50004539889922}, {"input": [55.5, 46.0], "expected": 55.50007484902863}, {"input": [55.5, 46.5], "expected": 55.50012340218972}, {"input": [55.5, 47.0], "expected": 55.50020344767213}, {"input": [55.5, 47.5], "expected": 55.5003354063729}, {"input": [55.5, 48.0], "expected": 55.50055293147536}, {"input": [55.5, 48.5], "expected": 55.50091146645377}, {"input": [55.5, 49.0], "expected": 55.50150231015976}, {"input": [55.5, 49.5], "expected": 55.50247568513773}, {"input": [55.5, 50.0], "expected": 55.50407844327057}, {"input": [55.5, 50.5], "expected": 55.50671534848912}, {"input": [55.5, 51.0], "expected": 55.5110477448486}, {"input": [55.5, 51.5], "expected": 55.51814992791781}, {"input": [55.5, 52.0], "expected": 55.52975041827262}, {"input": [55.5, 52.5], "expected": 55.548587351573744}, {"input": [55.5, 53.0], "expected": 55.57888973429255}, {"input": [55.5, 53.5], "expected": 55.62692801104297}, {"input": [55.5, 54.0], "expected": 55.70141327798275}, {"input": [55.5, 54.5], "expected": 55.81326168751822}, {"input": [55.5, 55.0], "expected": 55.97407698418011}, {"input": [55.5, 55.5], "expected": 56.19314718055995}, {"input": [55.5, 56.0], "expected": 56.47407698418011}, {"input": [55.5, 56.5], "expected": 56.81326168751822}, {"input": [55.5, 57.0], "expected": 57.20141327798275}, {"input": [55.5, 57.5], "expected": 57.62692801104297}, {"input": [55.5, 58.0], "expected": 58.07888973429255}, {"input": [55.5, 58.5], "expected": 58.548587351573744}, {"input": [55.5, 59.0], "expected": 59.02975041827262}, {"input": [55.5, 59.5], "expected": 59.51814992791781}, {"input": [55.5, 60.0], "expected": 60.0110477448486}, {"input": [55.5, 60.5], "expected": 60.50671534848912}, {"input": [55.5, 61.0], "expected": 61.00407844327057}, {"input": [55.5, 61.5], "expected": 61.50247568513773}, {"input": [55.5, 62.0], "expected": 62.00150231015976}, {"input": [55.5, 62.5], "expected": 62.50091146645377}, {"input": [55.5, 63.0], "expected": 63.00055293147536}, {"input": [55.5, 63.5], "expected": 63.5003354063729}, {"input": [55.5, 64.0], "expected": 64.00020344767213}, {"input": [55.5, 64.5], "expected": 64.50012340218973}, {"input": [55.5, 65.0], "expected": 65.00007484902864}, {"input": [55.5, 65.5], "expected": 65.50004539889922}, {"input": [55.5, 66.0], "expected": 66.00002753607023}, {"input": [55.5, 66.5], "expected": 66.50001670156132}, {"input": [55.5, 67.0], "expected": 67.00001013004228}, {"input": [55.5, 67.5], "expected": 67.50000614419348}, {"input": [55.5, 68.0], "expected": 68.00000372664623}, {"input": [55.5, 68.5], "expected": 68.50000226032685}, {"input": [55.5, 69.0], "expected": 69.00000137095815}, {"input": [55.5, 69.5], "expected": 69.50000083152837}, {"input": [55.5, 70.0], "expected": 70.00000050434754}, {"input": [55.5, 70.5], "expected": 70.50000030590228}, {"input": [55.5, 71.0], "expected": 71.00000018553912}, {"input": [55.5, 71.5], "expected": 71.50000011253516}, {"input": [55.5, 72.0], "expected": 72.00000006825603}, {"input": [55.5, 72.5], "expected": 72.50000004139937}, {"input": [55.5, 73.0], "expected": 73.00000002511}, {"input": [55.5, 73.5], "expected": 73.50000001522999}, {"input": [55.5, 74.0], "expected": 74.00000000923745}, {"input": [55.5, 74.5], "expected": 74.5000000056028}, {"input": [55.5, 75.0], "expected": 75.00000000339827}, {"input": [55.5, 75.5], "expected": 75.50000000206116}, {"input": [55.5, 76.0], "expected": 76.00000000125016}, {"input": [55.5, 76.5], "expected": 76.50000000075826}, {"input": [55.5, 77.0], "expected": 77.0000000004599}, {"input": [55.5, 77.5], "expected": 77.50000000027894}, {"input": [55.5, 78.0], "expected": 78.0000000001692}, {"input": [55.5, 78.5], "expected": 78.50000000010262}, {"input": [55.5, 79.0], "expected": 79.00000000006224}, {"input": [55.5, 79.5], "expected": 79.50000000003776}, {"input": [55.5, 80.0], "expected": 80.0000000000229}, {"input": [55.5, 80.5], "expected": 80.50000000001388}, {"input": [55.5, 81.0], "expected": 81.00000000000843}, {"input": [55.5, 81.5], "expected": 81.50000000000512}, {"input": [55.5, 82.0], "expected": 82.0000000000031}, {"input": [55.5, 82.5], "expected": 82.50000000000188}, {"input": [55.5, 83.0], "expected": 83.00000000000114}, {"input": [55.5, 83.5], "expected": 83.5000000000007}, {"input": [55.5, 84.0], "expected": 84.00000000000043}, {"input": [55.5, 84.5], "expected": 84.50000000000026}, {"input": [55.5, 85.0], "expected": 85.00000000000016}, {"input": [55.5, 85.5], "expected": 85.5000000000001}, {"input": [55.5, 86.0], "expected": 86.00000000000006}, {"input": [55.5, 86.5], "expected": 86.50000000000003}, {"input": [55.5, 87.0], "expected": 87.00000000000001}, {"input": [55.5, 87.5], "expected": 87.50000000000001}, {"input": [55.5, 88.0], "expected": 88.00000000000001}, {"input": [55.5, 88.5], "expected": 88.5}, {"input": [55.5, 89.0], "expected": 89.0}, {"input": [55.5, 89.5], "expected": 89.5}, {"input": [55.5, 90.0], "expected": 90.0}, {"input": [55.5, 90.5], "expected": 90.5}, {"input": [55.5, 91.0], "expected": 91.0}, {"input": [55.5, 91.5], "expected": 91.5}, {"input": [55.5, 92.0], "expected": 92.0}, {"input": [55.5, 92.5], "expected": 92.5}, {"input": [55.5, 93.0], "expected": 93.0}, {"input": [55.5, 93.5], "expected": 93.5}, {"input": [55.5, 94.0], "expected": 94.0}, {"input": [55.5, 94.5], "expected": 94.5}, {"input": [55.5, 95.0], "expected": 95.0}, {"input": [55.5, 95.5], "expected": 95.5}, {"input": [55.5, 96.0], "expected": 96.0}, {"input": [55.5, 96.5], "expected": 96.5}, {"input": [55.5, 97.0], "expected": 97.0}, {"input": [55.5, 97.5], "expected": 97.5}, {"input": [55.5, 98.0], "expected": 98.0}, {"input": [55.5, 98.5], "expected": 98.5}, {"input": [55.5, 99.0], "expected": 99.0}, {"input": [55.5, 99.5], "expected": 99.5}, {"input": [56.0, -100.0], "expected": 56.0}, {"input": [56.0, -99.5], "expected": 56.0}, {"input": [56.0, -99.0], "expected": 56.0}, {"input": [56.0, -98.5], "expected": 56.0}, {"input": [56.0, -98.0], "expected": 56.0}, {"input": [56.0, -97.5], "expected": 56.0}, {"input": [56.0, -97.0], "expected": 56.0}, {"input": [56.0, -96.5], "expected": 56.0}, {"input": [56.0, -96.0], "expected": 56.0}, {"input": [56.0, -95.5], "expected": 56.0}, {"input": [56.0, -95.0], "expected": 56.0}, {"input": [56.0, -94.5], "expected": 56.0}, {"input": [56.0, -94.0], "expected": 56.0}, {"input": [56.0, -93.5], "expected": 56.0}, {"input": [56.0, -93.0], "expected": 56.0}, {"input": [56.0, -92.5], "expected": 56.0}, {"input": [56.0, -92.0], "expected": 56.0}, {"input": [56.0, -91.5], "expected": 56.0}, {"input": [56.0, -91.0], "expected": 56.0}, {"input": [56.0, -90.5], "expected": 56.0}, {"input": [56.0, -90.0], "expected": 56.0}, {"input": [56.0, -89.5], "expected": 56.0}, {"input": [56.0, -89.0], "expected": 56.0}, {"input": [56.0, -88.5], "expected": 56.0}, {"input": [56.0, -88.0], "expected": 56.0}, {"input": [56.0, -87.5], "expected": 56.0}, {"input": [56.0, -87.0], "expected": 56.0}, {"input": [56.0, -86.5], "expected": 56.0}, {"input": [56.0, -86.0], "expected": 56.0}, {"input": [56.0, -85.5], "expected": 56.0}, {"input": [56.0, -85.0], "expected": 56.0}, {"input": [56.0, -84.5], "expected": 56.0}, {"input": [56.0, -84.0], "expected": 56.0}, {"input": [56.0, -83.5], "expected": 56.0}, {"input": [56.0, -83.0], "expected": 56.0}, {"input": [56.0, -82.5], "expected": 56.0}, {"input": [56.0, -82.0], "expected": 56.0}, {"input": [56.0, -81.5], "expected": 56.0}, {"input": [56.0, -81.0], "expected": 56.0}, {"input": [56.0, -80.5], "expected": 56.0}, {"input": [56.0, -80.0], "expected": 56.0}, {"input": [56.0, -79.5], "expected": 56.0}, {"input": [56.0, -79.0], "expected": 56.0}, {"input": [56.0, -78.5], "expected": 56.0}, {"input": [56.0, -78.0], "expected": 56.0}, {"input": [56.0, -77.5], "expected": 56.0}, {"input": [56.0, -77.0], "expected": 56.0}, {"input": [56.0, -76.5], "expected": 56.0}, {"input": [56.0, -76.0], "expected": 56.0}, {"input": [56.0, -75.5], "expected": 56.0}, {"input": [56.0, -75.0], "expected": 56.0}, {"input": [56.0, -74.5], "expected": 56.0}, {"input": [56.0, -74.0], "expected": 56.0}, {"input": [56.0, -73.5], "expected": 56.0}, {"input": [56.0, -73.0], "expected": 56.0}, {"input": [56.0, -72.5], "expected": 56.0}, {"input": [56.0, -72.0], "expected": 56.0}, {"input": [56.0, -71.5], "expected": 56.0}, {"input": [56.0, -71.0], "expected": 56.0}, {"input": [56.0, -70.5], "expected": 56.0}, {"input": [56.0, -70.0], "expected": 56.0}, {"input": [56.0, -69.5], "expected": 56.0}, {"input": [56.0, -69.0], "expected": 56.0}, {"input": [56.0, -68.5], "expected": 56.0}, {"input": [56.0, -68.0], "expected": 56.0}, {"input": [56.0, -67.5], "expected": 56.0}, {"input": [56.0, -67.0], "expected": 56.0}, {"input": [56.0, -66.5], "expected": 56.0}, {"input": [56.0, -66.0], "expected": 56.0}, {"input": [56.0, -65.5], "expected": 56.0}, {"input": [56.0, -65.0], "expected": 56.0}, {"input": [56.0, -64.5], "expected": 56.0}, {"input": [56.0, -64.0], "expected": 56.0}, {"input": [56.0, -63.5], "expected": 56.0}, {"input": [56.0, -63.0], "expected": 56.0}, {"input": [56.0, -62.5], "expected": 56.0}, {"input": [56.0, -62.0], "expected": 56.0}, {"input": [56.0, -61.5], "expected": 56.0}, {"input": [56.0, -61.0], "expected": 56.0}, {"input": [56.0, -60.5], "expected": 56.0}, {"input": [56.0, -60.0], "expected": 56.0}, {"input": [56.0, -59.5], "expected": 56.0}, {"input": [56.0, -59.0], "expected": 56.0}, {"input": [56.0, -58.5], "expected": 56.0}, {"input": [56.0, -58.0], "expected": 56.0}, {"input": [56.0, -57.5], "expected": 56.0}, {"input": [56.0, -57.0], "expected": 56.0}, {"input": [56.0, -56.5], "expected": 56.0}, {"input": [56.0, -56.0], "expected": 56.0}, {"input": [56.0, -55.5], "expected": 56.0}, {"input": [56.0, -55.0], "expected": 56.0}, {"input": [56.0, -54.5], "expected": 56.0}, {"input": [56.0, -54.0], "expected": 56.0}, {"input": [56.0, -53.5], "expected": 56.0}, {"input": [56.0, -53.0], "expected": 56.0}, {"input": [56.0, -52.5], "expected": 56.0}, {"input": [56.0, -52.0], "expected": 56.0}, {"input": [56.0, -51.5], "expected": 56.0}, {"input": [56.0, -51.0], "expected": 56.0}, {"input": [56.0, -50.5], "expected": 56.0}, {"input": [56.0, -50.0], "expected": 56.0}, {"input": [56.0, -49.5], "expected": 56.0}, {"input": [56.0, -49.0], "expected": 56.0}, {"input": [56.0, -48.5], "expected": 56.0}, {"input": [56.0, -48.0], "expected": 56.0}, {"input": [56.0, -47.5], "expected": 56.0}, {"input": [56.0, -47.0], "expected": 56.0}, {"input": [56.0, -46.5], "expected": 56.0}, {"input": [56.0, -46.0], "expected": 56.0}, {"input": [56.0, -45.5], "expected": 56.0}, {"input": [56.0, -45.0], "expected": 56.0}, {"input": [56.0, -44.5], "expected": 56.0}, {"input": [56.0, -44.0], "expected": 56.0}, {"input": [56.0, -43.5], "expected": 56.0}, {"input": [56.0, -43.0], "expected": 56.0}, {"input": [56.0, -42.5], "expected": 56.0}, {"input": [56.0, -42.0], "expected": 56.0}, {"input": [56.0, -41.5], "expected": 56.0}, {"input": [56.0, -41.0], "expected": 56.0}, {"input": [56.0, -40.5], "expected": 56.0}, {"input": [56.0, -40.0], "expected": 56.0}, {"input": [56.0, -39.5], "expected": 56.0}, {"input": [56.0, -39.0], "expected": 56.0}, {"input": [56.0, -38.5], "expected": 56.0}, {"input": [56.0, -38.0], "expected": 56.0}, {"input": [56.0, -37.5], "expected": 56.0}, {"input": [56.0, -37.0], "expected": 56.0}, {"input": [56.0, -36.5], "expected": 56.0}, {"input": [56.0, -36.0], "expected": 56.0}, {"input": [56.0, -35.5], "expected": 56.0}, {"input": [56.0, -35.0], "expected": 56.0}, {"input": [56.0, -34.5], "expected": 56.0}, {"input": [56.0, -34.0], "expected": 56.0}, {"input": [56.0, -33.5], "expected": 56.0}, {"input": [56.0, -33.0], "expected": 56.0}, {"input": [56.0, -32.5], "expected": 56.0}, {"input": [56.0, -32.0], "expected": 56.0}, {"input": [56.0, -31.5], "expected": 56.0}, {"input": [56.0, -31.0], "expected": 56.0}, {"input": [56.0, -30.5], "expected": 56.0}, {"input": [56.0, -30.0], "expected": 56.0}, {"input": [56.0, -29.5], "expected": 56.0}, {"input": [56.0, -29.0], "expected": 56.0}, {"input": [56.0, -28.5], "expected": 56.0}, {"input": [56.0, -28.0], "expected": 56.0}, {"input": [56.0, -27.5], "expected": 56.0}, {"input": [56.0, -27.0], "expected": 56.0}, {"input": [56.0, -26.5], "expected": 56.0}, {"input": [56.0, -26.0], "expected": 56.0}, {"input": [56.0, -25.5], "expected": 56.0}, {"input": [56.0, -25.0], "expected": 56.0}, {"input": [56.0, -24.5], "expected": 56.0}, {"input": [56.0, -24.0], "expected": 56.0}, {"input": [56.0, -23.5], "expected": 56.0}, {"input": [56.0, -23.0], "expected": 56.0}, {"input": [56.0, -22.5], "expected": 56.0}, {"input": [56.0, -22.0], "expected": 56.0}, {"input": [56.0, -21.5], "expected": 56.0}, {"input": [56.0, -21.0], "expected": 56.0}, {"input": [56.0, -20.5], "expected": 56.0}, {"input": [56.0, -20.0], "expected": 56.0}, {"input": [56.0, -19.5], "expected": 56.0}, {"input": [56.0, -19.0], "expected": 56.0}, {"input": [56.0, -18.5], "expected": 56.0}, {"input": [56.0, -18.0], "expected": 56.0}, {"input": [56.0, -17.5], "expected": 56.0}, {"input": [56.0, -17.0], "expected": 56.0}, {"input": [56.0, -16.5], "expected": 56.0}, {"input": [56.0, -16.0], "expected": 56.0}, {"input": [56.0, -15.5], "expected": 56.0}, {"input": [56.0, -15.0], "expected": 56.0}, {"input": [56.0, -14.5], "expected": 56.0}, {"input": [56.0, -14.0], "expected": 56.0}, {"input": [56.0, -13.5], "expected": 56.0}, {"input": [56.0, -13.0], "expected": 56.0}, {"input": [56.0, -12.5], "expected": 56.0}, {"input": [56.0, -12.0], "expected": 56.0}, {"input": [56.0, -11.5], "expected": 56.0}, {"input": [56.0, -11.0], "expected": 56.0}, {"input": [56.0, -10.5], "expected": 56.0}, {"input": [56.0, -10.0], "expected": 56.0}, {"input": [56.0, -9.5], "expected": 56.0}, {"input": [56.0, -9.0], "expected": 56.0}, {"input": [56.0, -8.5], "expected": 56.0}, {"input": [56.0, -8.0], "expected": 56.0}, {"input": [56.0, -7.5], "expected": 56.0}, {"input": [56.0, -7.0], "expected": 56.0}, {"input": [56.0, -6.5], "expected": 56.0}, {"input": [56.0, -6.0], "expected": 56.0}, {"input": [56.0, -5.5], "expected": 56.0}, {"input": [56.0, -5.0], "expected": 56.0}, {"input": [56.0, -4.5], "expected": 56.0}, {"input": [56.0, -4.0], "expected": 56.0}, {"input": [56.0, -3.5], "expected": 56.0}, {"input": [56.0, -3.0], "expected": 56.0}, {"input": [56.0, -2.5], "expected": 56.0}, {"input": [56.0, -2.0], "expected": 56.0}, {"input": [56.0, -1.5], "expected": 56.0}, {"input": [56.0, -1.0], "expected": 56.0}, {"input": [56.0, -0.5], "expected": 56.0}, {"input": [56.0, 0.0], "expected": 56.0}, {"input": [56.0, 0.5], "expected": 56.0}, {"input": [56.0, 1.0], "expected": 56.0}, {"input": [56.0, 1.5], "expected": 56.0}, {"input": [56.0, 2.0], "expected": 56.0}, {"input": [56.0, 2.5], "expected": 56.0}, {"input": [56.0, 3.0], "expected": 56.0}, {"input": [56.0, 3.5], "expected": 56.0}, {"input": [56.0, 4.0], "expected": 56.0}, {"input": [56.0, 4.5], "expected": 56.0}, {"input": [56.0, 5.0], "expected": 56.0}, {"input": [56.0, 5.5], "expected": 56.0}, {"input": [56.0, 6.0], "expected": 56.0}, {"input": [56.0, 6.5], "expected": 56.0}, {"input": [56.0, 7.0], "expected": 56.0}, {"input": [56.0, 7.5], "expected": 56.0}, {"input": [56.0, 8.0], "expected": 56.0}, {"input": [56.0, 8.5], "expected": 56.0}, {"input": [56.0, 9.0], "expected": 56.0}, {"input": [56.0, 9.5], "expected": 56.0}, {"input": [56.0, 10.0], "expected": 56.0}, {"input": [56.0, 10.5], "expected": 56.0}, {"input": [56.0, 11.0], "expected": 56.0}, {"input": [56.0, 11.5], "expected": 56.0}, {"input": [56.0, 12.0], "expected": 56.0}, {"input": [56.0, 12.5], "expected": 56.0}, {"input": [56.0, 13.0], "expected": 56.0}, {"input": [56.0, 13.5], "expected": 56.0}, {"input": [56.0, 14.0], "expected": 56.0}, {"input": [56.0, 14.5], "expected": 56.0}, {"input": [56.0, 15.0], "expected": 56.0}, {"input": [56.0, 15.5], "expected": 56.0}, {"input": [56.0, 16.0], "expected": 56.0}, {"input": [56.0, 16.5], "expected": 56.0}, {"input": [56.0, 17.0], "expected": 56.0}, {"input": [56.0, 17.5], "expected": 56.0}, {"input": [56.0, 18.0], "expected": 56.0}, {"input": [56.0, 18.5], "expected": 56.0}, {"input": [56.0, 19.0], "expected": 56.0}, {"input": [56.0, 19.5], "expected": 56.0}, {"input": [56.0, 20.0], "expected": 56.0}, {"input": [56.0, 20.5], "expected": 56.0}, {"input": [56.0, 21.0], "expected": 56.0}, {"input": [56.0, 21.5], "expected": 56.0}, {"input": [56.0, 22.0], "expected": 56.0}, {"input": [56.0, 22.5], "expected": 56.0}, {"input": [56.0, 23.0], "expected": 56.00000000000001}, {"input": [56.0, 23.5], "expected": 56.00000000000001}, {"input": [56.0, 24.0], "expected": 56.000000000000014}, {"input": [56.0, 24.5], "expected": 56.00000000000002}, {"input": [56.0, 25.0], "expected": 56.000000000000036}, {"input": [56.0, 25.5], "expected": 56.00000000000006}, {"input": [56.0, 26.0], "expected": 56.00000000000009}, {"input": [56.0, 26.5], "expected": 56.000000000000156}, {"input": [56.0, 27.0], "expected": 56.000000000000256}, {"input": [56.0, 27.5], "expected": 56.00000000000042}, {"input": [56.0, 28.0], "expected": 56.00000000000069}, {"input": [56.0, 28.5], "expected": 56.00000000000114}, {"input": [56.0, 29.0], "expected": 56.00000000000188}, {"input": [56.0, 29.5], "expected": 56.0000000000031}, {"input": [56.0, 30.0], "expected": 56.00000000000511}, {"input": [56.0, 30.5], "expected": 56.00000000000842}, {"input": [56.0, 31.0], "expected": 56.00000000001389}, {"input": [56.0, 31.5], "expected": 56.0000000000229}, {"input": [56.0, 32.0], "expected": 56.00000000003775}, {"input": [56.0, 32.5], "expected": 56.00000000006224}, {"input": [56.0, 33.0], "expected": 56.00000000010262}, {"input": [56.0, 33.5], "expected": 56.00000000016919}, {"input": [56.0, 34.0], "expected": 56.000000000278945}, {"input": [56.0, 34.5], "expected": 56.000000000459906}, {"input": [56.0, 35.0], "expected": 56.000000000758256}, {"input": [56.0, 35.5], "expected": 56.00000000125015}, {"input": [56.0, 36.0], "expected": 56.00000000206116}, {"input": [56.0, 36.5], "expected": 56.00000000339827}, {"input": [56.0, 37.0], "expected": 56.00000000560279}, {"input": [56.0, 37.5], "expected": 56.000000009237446}, {"input": [56.0, 38.0], "expected": 56.00000001522998}, {"input": [56.0, 38.5], "expected": 56.00000002510999}, {"input": [56.0, 39.0], "expected": 56.000000041399375}, {"input": [56.0, 39.5], "expected": 56.00000006825603}, {"input": [56.0, 40.0], "expected": 56.00000011253517}, {"input": [56.0, 40.5], "expected": 56.00000018553912}, {"input": [56.0, 41.0], "expected": 56.000000305902276}, {"input": [56.0, 41.5], "expected": 56.00000050434753}, {"input": [56.0, 42.0], "expected": 56.000000831528375}, {"input": [56.0, 42.5], "expected": 56.000001370958145}, {"input": [56.0, 43.0], "expected": 56.00000226032685}, {"input": [56.0, 43.5], "expected": 56.00000372664623}, {"input": [56.0, 44.0], "expected": 56.00000614419348}, {"input": [56.0, 44.5], "expected": 56.00001013004229}, {"input": [56.0, 45.0], "expected": 56.00001670156132}, {"input": [56.0, 45.5], "expected": 56.00002753607023}, {"input": [56.0, 46.0], "expected": 56.00004539889922}, {"input": [56.0, 46.5], "expected": 56.00007484902863}, {"input": [56.0, 47.0], "expected": 56.00012340218972}, {"input": [56.0, 47.5], "expected": 56.00020344767213}, {"input": [56.0, 48.0], "expected": 56.0003354063729}, {"input": [56.0, 48.5], "expected": 56.00055293147536}, {"input": [56.0, 49.0], "expected": 56.00091146645377}, {"input": [56.0, 49.5], "expected": 56.00150231015976}, {"input": [56.0, 50.0], "expected": 56.00247568513773}, {"input": [56.0, 50.5], "expected": 56.00407844327057}, {"input": [56.0, 51.0], "expected": 56.00671534848912}, {"input": [56.0, 51.5], "expected": 56.0110477448486}, {"input": [56.0, 52.0], "expected": 56.01814992791781}, {"input": [56.0, 52.5], "expected": 56.02975041827262}, {"input": [56.0, 53.0], "expected": 56.048587351573744}, {"input": [56.0, 53.5], "expected": 56.07888973429255}, {"input": [56.0, 54.0], "expected": 56.12692801104297}, {"input": [56.0, 54.5], "expected": 56.20141327798275}, {"input": [56.0, 55.0], "expected": 56.31326168751822}, {"input": [56.0, 55.5], "expected": 56.47407698418011}, {"input": [56.0, 56.0], "expected": 56.69314718055995}, {"input": [56.0, 56.5], "expected": 56.97407698418011}, {"input": [56.0, 57.0], "expected": 57.31326168751822}, {"input": [56.0, 57.5], "expected": 57.70141327798275}, {"input": [56.0, 58.0], "expected": 58.12692801104297}, {"input": [56.0, 58.5], "expected": 58.57888973429255}, {"input": [56.0, 59.0], "expected": 59.048587351573744}, {"input": [56.0, 59.5], "expected": 59.52975041827262}, {"input": [56.0, 60.0], "expected": 60.01814992791781}, {"input": [56.0, 60.5], "expected": 60.5110477448486}, {"input": [56.0, 61.0], "expected": 61.00671534848912}, {"input": [56.0, 61.5], "expected": 61.50407844327057}, {"input": [56.0, 62.0], "expected": 62.00247568513773}, {"input": [56.0, 62.5], "expected": 62.50150231015976}, {"input": [56.0, 63.0], "expected": 63.00091146645377}, {"input": [56.0, 63.5], "expected": 63.50055293147536}, {"input": [56.0, 64.0], "expected": 64.0003354063729}, {"input": [56.0, 64.5], "expected": 64.50020344767213}, {"input": [56.0, 65.0], "expected": 65.00012340218973}, {"input": [56.0, 65.5], "expected": 65.50007484902864}, {"input": [56.0, 66.0], "expected": 66.00004539889922}, {"input": [56.0, 66.5], "expected": 66.50002753607023}, {"input": [56.0, 67.0], "expected": 67.00001670156132}, {"input": [56.0, 67.5], "expected": 67.50001013004228}, {"input": [56.0, 68.0], "expected": 68.00000614419348}, {"input": [56.0, 68.5], "expected": 68.50000372664623}, {"input": [56.0, 69.0], "expected": 69.00000226032685}, {"input": [56.0, 69.5], "expected": 69.50000137095815}, {"input": [56.0, 70.0], "expected": 70.00000083152837}, {"input": [56.0, 70.5], "expected": 70.50000050434754}, {"input": [56.0, 71.0], "expected": 71.00000030590228}, {"input": [56.0, 71.5], "expected": 71.50000018553912}, {"input": [56.0, 72.0], "expected": 72.00000011253516}, {"input": [56.0, 72.5], "expected": 72.50000006825603}, {"input": [56.0, 73.0], "expected": 73.00000004139937}, {"input": [56.0, 73.5], "expected": 73.50000002511}, {"input": [56.0, 74.0], "expected": 74.00000001522999}, {"input": [56.0, 74.5], "expected": 74.50000000923745}, {"input": [56.0, 75.0], "expected": 75.0000000056028}, {"input": [56.0, 75.5], "expected": 75.50000000339827}, {"input": [56.0, 76.0], "expected": 76.00000000206116}, {"input": [56.0, 76.5], "expected": 76.50000000125016}, {"input": [56.0, 77.0], "expected": 77.00000000075826}, {"input": [56.0, 77.5], "expected": 77.5000000004599}, {"input": [56.0, 78.0], "expected": 78.00000000027894}, {"input": [56.0, 78.5], "expected": 78.5000000001692}, {"input": [56.0, 79.0], "expected": 79.00000000010262}, {"input": [56.0, 79.5], "expected": 79.50000000006224}, {"input": [56.0, 80.0], "expected": 80.00000000003776}, {"input": [56.0, 80.5], "expected": 80.5000000000229}, {"input": [56.0, 81.0], "expected": 81.00000000001388}, {"input": [56.0, 81.5], "expected": 81.50000000000843}, {"input": [56.0, 82.0], "expected": 82.00000000000512}, {"input": [56.0, 82.5], "expected": 82.5000000000031}, {"input": [56.0, 83.0], "expected": 83.00000000000188}, {"input": [56.0, 83.5], "expected": 83.50000000000114}, {"input": [56.0, 84.0], "expected": 84.0000000000007}, {"input": [56.0, 84.5], "expected": 84.50000000000043}, {"input": [56.0, 85.0], "expected": 85.00000000000026}, {"input": [56.0, 85.5], "expected": 85.50000000000016}, {"input": [56.0, 86.0], "expected": 86.0000000000001}, {"input": [56.0, 86.5], "expected": 86.50000000000006}, {"input": [56.0, 87.0], "expected": 87.00000000000003}, {"input": [56.0, 87.5], "expected": 87.50000000000001}, {"input": [56.0, 88.0], "expected": 88.00000000000001}, {"input": [56.0, 88.5], "expected": 88.50000000000001}, {"input": [56.0, 89.0], "expected": 89.0}, {"input": [56.0, 89.5], "expected": 89.5}, {"input": [56.0, 90.0], "expected": 90.0}, {"input": [56.0, 90.5], "expected": 90.5}, {"input": [56.0, 91.0], "expected": 91.0}, {"input": [56.0, 91.5], "expected": 91.5}, {"input": [56.0, 92.0], "expected": 92.0}, {"input": [56.0, 92.5], "expected": 92.5}, {"input": [56.0, 93.0], "expected": 93.0}, {"input": [56.0, 93.5], "expected": 93.5}, {"input": [56.0, 94.0], "expected": 94.0}, {"input": [56.0, 94.5], "expected": 94.5}, {"input": [56.0, 95.0], "expected": 95.0}, {"input": [56.0, 95.5], "expected": 95.5}, {"input": [56.0, 96.0], "expected": 96.0}, {"input": [56.0, 96.5], "expected": 96.5}, {"input": [56.0, 97.0], "expected": 97.0}, {"input": [56.0, 97.5], "expected": 97.5}, {"input": [56.0, 98.0], "expected": 98.0}, {"input": [56.0, 98.5], "expected": 98.5}, {"input": [56.0, 99.0], "expected": 99.0}, {"input": [56.0, 99.5], "expected": 99.5}, {"input": [56.5, -100.0], "expected": 56.5}, {"input": [56.5, -99.5], "expected": 56.5}, {"input": [56.5, -99.0], "expected": 56.5}, {"input": [56.5, -98.5], "expected": 56.5}, {"input": [56.5, -98.0], "expected": 56.5}, {"input": [56.5, -97.5], "expected": 56.5}, {"input": [56.5, -97.0], "expected": 56.5}, {"input": [56.5, -96.5], "expected": 56.5}, {"input": [56.5, -96.0], "expected": 56.5}, {"input": [56.5, -95.5], "expected": 56.5}, {"input": [56.5, -95.0], "expected": 56.5}, {"input": [56.5, -94.5], "expected": 56.5}, {"input": [56.5, -94.0], "expected": 56.5}, {"input": [56.5, -93.5], "expected": 56.5}, {"input": [56.5, -93.0], "expected": 56.5}, {"input": [56.5, -92.5], "expected": 56.5}, {"input": [56.5, -92.0], "expected": 56.5}, {"input": [56.5, -91.5], "expected": 56.5}, {"input": [56.5, -91.0], "expected": 56.5}, {"input": [56.5, -90.5], "expected": 56.5}, {"input": [56.5, -90.0], "expected": 56.5}, {"input": [56.5, -89.5], "expected": 56.5}, {"input": [56.5, -89.0], "expected": 56.5}, {"input": [56.5, -88.5], "expected": 56.5}, {"input": [56.5, -88.0], "expected": 56.5}, {"input": [56.5, -87.5], "expected": 56.5}, {"input": [56.5, -87.0], "expected": 56.5}, {"input": [56.5, -86.5], "expected": 56.5}, {"input": [56.5, -86.0], "expected": 56.5}, {"input": [56.5, -85.5], "expected": 56.5}, {"input": [56.5, -85.0], "expected": 56.5}, {"input": [56.5, -84.5], "expected": 56.5}, {"input": [56.5, -84.0], "expected": 56.5}, {"input": [56.5, -83.5], "expected": 56.5}, {"input": [56.5, -83.0], "expected": 56.5}, {"input": [56.5, -82.5], "expected": 56.5}, {"input": [56.5, -82.0], "expected": 56.5}, {"input": [56.5, -81.5], "expected": 56.5}, {"input": [56.5, -81.0], "expected": 56.5}, {"input": [56.5, -80.5], "expected": 56.5}, {"input": [56.5, -80.0], "expected": 56.5}, {"input": [56.5, -79.5], "expected": 56.5}, {"input": [56.5, -79.0], "expected": 56.5}, {"input": [56.5, -78.5], "expected": 56.5}, {"input": [56.5, -78.0], "expected": 56.5}, {"input": [56.5, -77.5], "expected": 56.5}, {"input": [56.5, -77.0], "expected": 56.5}, {"input": [56.5, -76.5], "expected": 56.5}, {"input": [56.5, -76.0], "expected": 56.5}, {"input": [56.5, -75.5], "expected": 56.5}, {"input": [56.5, -75.0], "expected": 56.5}, {"input": [56.5, -74.5], "expected": 56.5}, {"input": [56.5, -74.0], "expected": 56.5}, {"input": [56.5, -73.5], "expected": 56.5}, {"input": [56.5, -73.0], "expected": 56.5}, {"input": [56.5, -72.5], "expected": 56.5}, {"input": [56.5, -72.0], "expected": 56.5}, {"input": [56.5, -71.5], "expected": 56.5}, {"input": [56.5, -71.0], "expected": 56.5}, {"input": [56.5, -70.5], "expected": 56.5}, {"input": [56.5, -70.0], "expected": 56.5}, {"input": [56.5, -69.5], "expected": 56.5}, {"input": [56.5, -69.0], "expected": 56.5}, {"input": [56.5, -68.5], "expected": 56.5}, {"input": [56.5, -68.0], "expected": 56.5}, {"input": [56.5, -67.5], "expected": 56.5}, {"input": [56.5, -67.0], "expected": 56.5}, {"input": [56.5, -66.5], "expected": 56.5}, {"input": [56.5, -66.0], "expected": 56.5}, {"input": [56.5, -65.5], "expected": 56.5}, {"input": [56.5, -65.0], "expected": 56.5}, {"input": [56.5, -64.5], "expected": 56.5}, {"input": [56.5, -64.0], "expected": 56.5}, {"input": [56.5, -63.5], "expected": 56.5}, {"input": [56.5, -63.0], "expected": 56.5}, {"input": [56.5, -62.5], "expected": 56.5}, {"input": [56.5, -62.0], "expected": 56.5}, {"input": [56.5, -61.5], "expected": 56.5}, {"input": [56.5, -61.0], "expected": 56.5}, {"input": [56.5, -60.5], "expected": 56.5}, {"input": [56.5, -60.0], "expected": 56.5}, {"input": [56.5, -59.5], "expected": 56.5}, {"input": [56.5, -59.0], "expected": 56.5}, {"input": [56.5, -58.5], "expected": 56.5}, {"input": [56.5, -58.0], "expected": 56.5}, {"input": [56.5, -57.5], "expected": 56.5}, {"input": [56.5, -57.0], "expected": 56.5}, {"input": [56.5, -56.5], "expected": 56.5}, {"input": [56.5, -56.0], "expected": 56.5}, {"input": [56.5, -55.5], "expected": 56.5}, {"input": [56.5, -55.0], "expected": 56.5}, {"input": [56.5, -54.5], "expected": 56.5}, {"input": [56.5, -54.0], "expected": 56.5}, {"input": [56.5, -53.5], "expected": 56.5}, {"input": [56.5, -53.0], "expected": 56.5}, {"input": [56.5, -52.5], "expected": 56.5}, {"input": [56.5, -52.0], "expected": 56.5}, {"input": [56.5, -51.5], "expected": 56.5}, {"input": [56.5, -51.0], "expected": 56.5}, {"input": [56.5, -50.5], "expected": 56.5}, {"input": [56.5, -50.0], "expected": 56.5}, {"input": [56.5, -49.5], "expected": 56.5}, {"input": [56.5, -49.0], "expected": 56.5}, {"input": [56.5, -48.5], "expected": 56.5}, {"input": [56.5, -48.0], "expected": 56.5}, {"input": [56.5, -47.5], "expected": 56.5}, {"input": [56.5, -47.0], "expected": 56.5}, {"input": [56.5, -46.5], "expected": 56.5}, {"input": [56.5, -46.0], "expected": 56.5}, {"input": [56.5, -45.5], "expected": 56.5}, {"input": [56.5, -45.0], "expected": 56.5}, {"input": [56.5, -44.5], "expected": 56.5}, {"input": [56.5, -44.0], "expected": 56.5}, {"input": [56.5, -43.5], "expected": 56.5}, {"input": [56.5, -43.0], "expected": 56.5}, {"input": [56.5, -42.5], "expected": 56.5}, {"input": [56.5, -42.0], "expected": 56.5}, {"input": [56.5, -41.5], "expected": 56.5}, {"input": [56.5, -41.0], "expected": 56.5}, {"input": [56.5, -40.5], "expected": 56.5}, {"input": [56.5, -40.0], "expected": 56.5}, {"input": [56.5, -39.5], "expected": 56.5}, {"input": [56.5, -39.0], "expected": 56.5}, {"input": [56.5, -38.5], "expected": 56.5}, {"input": [56.5, -38.0], "expected": 56.5}, {"input": [56.5, -37.5], "expected": 56.5}, {"input": [56.5, -37.0], "expected": 56.5}, {"input": [56.5, -36.5], "expected": 56.5}, {"input": [56.5, -36.0], "expected": 56.5}, {"input": [56.5, -35.5], "expected": 56.5}, {"input": [56.5, -35.0], "expected": 56.5}, {"input": [56.5, -34.5], "expected": 56.5}, {"input": [56.5, -34.0], "expected": 56.5}, {"input": [56.5, -33.5], "expected": 56.5}, {"input": [56.5, -33.0], "expected": 56.5}, {"input": [56.5, -32.5], "expected": 56.5}, {"input": [56.5, -32.0], "expected": 56.5}, {"input": [56.5, -31.5], "expected": 56.5}, {"input": [56.5, -31.0], "expected": 56.5}, {"input": [56.5, -30.5], "expected": 56.5}, {"input": [56.5, -30.0], "expected": 56.5}, {"input": [56.5, -29.5], "expected": 56.5}, {"input": [56.5, -29.0], "expected": 56.5}, {"input": [56.5, -28.5], "expected": 56.5}, {"input": [56.5, -28.0], "expected": 56.5}, {"input": [56.5, -27.5], "expected": 56.5}, {"input": [56.5, -27.0], "expected": 56.5}, {"input": [56.5, -26.5], "expected": 56.5}, {"input": [56.5, -26.0], "expected": 56.5}, {"input": [56.5, -25.5], "expected": 56.5}, {"input": [56.5, -25.0], "expected": 56.5}, {"input": [56.5, -24.5], "expected": 56.5}, {"input": [56.5, -24.0], "expected": 56.5}, {"input": [56.5, -23.5], "expected": 56.5}, {"input": [56.5, -23.0], "expected": 56.5}, {"input": [56.5, -22.5], "expected": 56.5}, {"input": [56.5, -22.0], "expected": 56.5}, {"input": [56.5, -21.5], "expected": 56.5}, {"input": [56.5, -21.0], "expected": 56.5}, {"input": [56.5, -20.5], "expected": 56.5}, {"input": [56.5, -20.0], "expected": 56.5}, {"input": [56.5, -19.5], "expected": 56.5}, {"input": [56.5, -19.0], "expected": 56.5}, {"input": [56.5, -18.5], "expected": 56.5}, {"input": [56.5, -18.0], "expected": 56.5}, {"input": [56.5, -17.5], "expected": 56.5}, {"input": [56.5, -17.0], "expected": 56.5}, {"input": [56.5, -16.5], "expected": 56.5}, {"input": [56.5, -16.0], "expected": 56.5}, {"input": [56.5, -15.5], "expected": 56.5}, {"input": [56.5, -15.0], "expected": 56.5}, {"input": [56.5, -14.5], "expected": 56.5}, {"input": [56.5, -14.0], "expected": 56.5}, {"input": [56.5, -13.5], "expected": 56.5}, {"input": [56.5, -13.0], "expected": 56.5}, {"input": [56.5, -12.5], "expected": 56.5}, {"input": [56.5, -12.0], "expected": 56.5}, {"input": [56.5, -11.5], "expected": 56.5}, {"input": [56.5, -11.0], "expected": 56.5}, {"input": [56.5, -10.5], "expected": 56.5}, {"input": [56.5, -10.0], "expected": 56.5}, {"input": [56.5, -9.5], "expected": 56.5}, {"input": [56.5, -9.0], "expected": 56.5}, {"input": [56.5, -8.5], "expected": 56.5}, {"input": [56.5, -8.0], "expected": 56.5}, {"input": [56.5, -7.5], "expected": 56.5}, {"input": [56.5, -7.0], "expected": 56.5}, {"input": [56.5, -6.5], "expected": 56.5}, {"input": [56.5, -6.0], "expected": 56.5}, {"input": [56.5, -5.5], "expected": 56.5}, {"input": [56.5, -5.0], "expected": 56.5}, {"input": [56.5, -4.5], "expected": 56.5}, {"input": [56.5, -4.0], "expected": 56.5}, {"input": [56.5, -3.5], "expected": 56.5}, {"input": [56.5, -3.0], "expected": 56.5}, {"input": [56.5, -2.5], "expected": 56.5}, {"input": [56.5, -2.0], "expected": 56.5}, {"input": [56.5, -1.5], "expected": 56.5}, {"input": [56.5, -1.0], "expected": 56.5}, {"input": [56.5, -0.5], "expected": 56.5}, {"input": [56.5, 0.0], "expected": 56.5}, {"input": [56.5, 0.5], "expected": 56.5}, {"input": [56.5, 1.0], "expected": 56.5}, {"input": [56.5, 1.5], "expected": 56.5}, {"input": [56.5, 2.0], "expected": 56.5}, {"input": [56.5, 2.5], "expected": 56.5}, {"input": [56.5, 3.0], "expected": 56.5}, {"input": [56.5, 3.5], "expected": 56.5}, {"input": [56.5, 4.0], "expected": 56.5}, {"input": [56.5, 4.5], "expected": 56.5}, {"input": [56.5, 5.0], "expected": 56.5}, {"input": [56.5, 5.5], "expected": 56.5}, {"input": [56.5, 6.0], "expected": 56.5}, {"input": [56.5, 6.5], "expected": 56.5}, {"input": [56.5, 7.0], "expected": 56.5}, {"input": [56.5, 7.5], "expected": 56.5}, {"input": [56.5, 8.0], "expected": 56.5}, {"input": [56.5, 8.5], "expected": 56.5}, {"input": [56.5, 9.0], "expected": 56.5}, {"input": [56.5, 9.5], "expected": 56.5}, {"input": [56.5, 10.0], "expected": 56.5}, {"input": [56.5, 10.5], "expected": 56.5}, {"input": [56.5, 11.0], "expected": 56.5}, {"input": [56.5, 11.5], "expected": 56.5}, {"input": [56.5, 12.0], "expected": 56.5}, {"input": [56.5, 12.5], "expected": 56.5}, {"input": [56.5, 13.0], "expected": 56.5}, {"input": [56.5, 13.5], "expected": 56.5}, {"input": [56.5, 14.0], "expected": 56.5}, {"input": [56.5, 14.5], "expected": 56.5}, {"input": [56.5, 15.0], "expected": 56.5}, {"input": [56.5, 15.5], "expected": 56.5}, {"input": [56.5, 16.0], "expected": 56.5}, {"input": [56.5, 16.5], "expected": 56.5}, {"input": [56.5, 17.0], "expected": 56.5}, {"input": [56.5, 17.5], "expected": 56.5}, {"input": [56.5, 18.0], "expected": 56.5}, {"input": [56.5, 18.5], "expected": 56.5}, {"input": [56.5, 19.0], "expected": 56.5}, {"input": [56.5, 19.5], "expected": 56.5}, {"input": [56.5, 20.0], "expected": 56.5}, {"input": [56.5, 20.5], "expected": 56.5}, {"input": [56.5, 21.0], "expected": 56.5}, {"input": [56.5, 21.5], "expected": 56.5}, {"input": [56.5, 22.0], "expected": 56.5}, {"input": [56.5, 22.5], "expected": 56.5}, {"input": [56.5, 23.0], "expected": 56.5}, {"input": [56.5, 23.5], "expected": 56.50000000000001}, {"input": [56.5, 24.0], "expected": 56.50000000000001}, {"input": [56.5, 24.5], "expected": 56.500000000000014}, {"input": [56.5, 25.0], "expected": 56.50000000000002}, {"input": [56.5, 25.5], "expected": 56.500000000000036}, {"input": [56.5, 26.0], "expected": 56.50000000000006}, {"input": [56.5, 26.5], "expected": 56.50000000000009}, {"input": [56.5, 27.0], "expected": 56.500000000000156}, {"input": [56.5, 27.5], "expected": 56.500000000000256}, {"input": [56.5, 28.0], "expected": 56.50000000000042}, {"input": [56.5, 28.5], "expected": 56.50000000000069}, {"input": [56.5, 29.0], "expected": 56.50000000000114}, {"input": [56.5, 29.5], "expected": 56.50000000000188}, {"input": [56.5, 30.0], "expected": 56.5000000000031}, {"input": [56.5, 30.5], "expected": 56.50000000000511}, {"input": [56.5, 31.0], "expected": 56.50000000000842}, {"input": [56.5, 31.5], "expected": 56.50000000001389}, {"input": [56.5, 32.0], "expected": 56.5000000000229}, {"input": [56.5, 32.5], "expected": 56.50000000003775}, {"input": [56.5, 33.0], "expected": 56.50000000006224}, {"input": [56.5, 33.5], "expected": 56.50000000010262}, {"input": [56.5, 34.0], "expected": 56.50000000016919}, {"input": [56.5, 34.5], "expected": 56.500000000278945}, {"input": [56.5, 35.0], "expected": 56.500000000459906}, {"input": [56.5, 35.5], "expected": 56.500000000758256}, {"input": [56.5, 36.0], "expected": 56.50000000125015}, {"input": [56.5, 36.5], "expected": 56.50000000206116}, {"input": [56.5, 37.0], "expected": 56.50000000339827}, {"input": [56.5, 37.5], "expected": 56.50000000560279}, {"input": [56.5, 38.0], "expected": 56.500000009237446}, {"input": [56.5, 38.5], "expected": 56.50000001522998}, {"input": [56.5, 39.0], "expected": 56.50000002510999}, {"input": [56.5, 39.5], "expected": 56.500000041399375}, {"input": [56.5, 40.0], "expected": 56.50000006825603}, {"input": [56.5, 40.5], "expected": 56.50000011253517}, {"input": [56.5, 41.0], "expected": 56.50000018553912}, {"input": [56.5, 41.5], "expected": 56.500000305902276}, {"input": [56.5, 42.0], "expected": 56.50000050434753}, {"input": [56.5, 42.5], "expected": 56.500000831528375}, {"input": [56.5, 43.0], "expected": 56.500001370958145}, {"input": [56.5, 43.5], "expected": 56.50000226032685}, {"input": [56.5, 44.0], "expected": 56.50000372664623}, {"input": [56.5, 44.5], "expected": 56.50000614419348}, {"input": [56.5, 45.0], "expected": 56.50001013004229}, {"input": [56.5, 45.5], "expected": 56.50001670156132}, {"input": [56.5, 46.0], "expected": 56.50002753607023}, {"input": [56.5, 46.5], "expected": 56.50004539889922}, {"input": [56.5, 47.0], "expected": 56.50007484902863}, {"input": [56.5, 47.5], "expected": 56.50012340218972}, {"input": [56.5, 48.0], "expected": 56.50020344767213}, {"input": [56.5, 48.5], "expected": 56.5003354063729}, {"input": [56.5, 49.0], "expected": 56.50055293147536}, {"input": [56.5, 49.5], "expected": 56.50091146645377}, {"input": [56.5, 50.0], "expected": 56.50150231015976}, {"input": [56.5, 50.5], "expected": 56.50247568513773}, {"input": [56.5, 51.0], "expected": 56.50407844327057}, {"input": [56.5, 51.5], "expected": 56.50671534848912}, {"input": [56.5, 52.0], "expected": 56.5110477448486}, {"input": [56.5, 52.5], "expected": 56.51814992791781}, {"input": [56.5, 53.0], "expected": 56.52975041827262}, {"input": [56.5, 53.5], "expected": 56.548587351573744}, {"input": [56.5, 54.0], "expected": 56.57888973429255}, {"input": [56.5, 54.5], "expected": 56.62692801104297}, {"input": [56.5, 55.0], "expected": 56.70141327798275}, {"input": [56.5, 55.5], "expected": 56.81326168751822}, {"input": [56.5, 56.0], "expected": 56.97407698418011}, {"input": [56.5, 56.5], "expected": 57.19314718055995}, {"input": [56.5, 57.0], "expected": 57.47407698418011}, {"input": [56.5, 57.5], "expected": 57.81326168751822}, {"input": [56.5, 58.0], "expected": 58.20141327798275}, {"input": [56.5, 58.5], "expected": 58.62692801104297}, {"input": [56.5, 59.0], "expected": 59.07888973429255}, {"input": [56.5, 59.5], "expected": 59.548587351573744}, {"input": [56.5, 60.0], "expected": 60.02975041827262}, {"input": [56.5, 60.5], "expected": 60.51814992791781}, {"input": [56.5, 61.0], "expected": 61.0110477448486}, {"input": [56.5, 61.5], "expected": 61.50671534848912}, {"input": [56.5, 62.0], "expected": 62.00407844327057}, {"input": [56.5, 62.5], "expected": 62.50247568513773}, {"input": [56.5, 63.0], "expected": 63.00150231015976}, {"input": [56.5, 63.5], "expected": 63.50091146645377}, {"input": [56.5, 64.0], "expected": 64.00055293147535}, {"input": [56.5, 64.5], "expected": 64.5003354063729}, {"input": [56.5, 65.0], "expected": 65.00020344767213}, {"input": [56.5, 65.5], "expected": 65.50012340218973}, {"input": [56.5, 66.0], "expected": 66.00007484902864}, {"input": [56.5, 66.5], "expected": 66.50004539889922}, {"input": [56.5, 67.0], "expected": 67.00002753607023}, {"input": [56.5, 67.5], "expected": 67.50001670156132}, {"input": [56.5, 68.0], "expected": 68.00001013004228}, {"input": [56.5, 68.5], "expected": 68.50000614419348}, {"input": [56.5, 69.0], "expected": 69.00000372664623}, {"input": [56.5, 69.5], "expected": 69.50000226032685}, {"input": [56.5, 70.0], "expected": 70.00000137095815}, {"input": [56.5, 70.5], "expected": 70.50000083152837}, {"input": [56.5, 71.0], "expected": 71.00000050434754}, {"input": [56.5, 71.5], "expected": 71.50000030590228}, {"input": [56.5, 72.0], "expected": 72.00000018553912}, {"input": [56.5, 72.5], "expected": 72.50000011253516}, {"input": [56.5, 73.0], "expected": 73.00000006825603}, {"input": [56.5, 73.5], "expected": 73.50000004139937}, {"input": [56.5, 74.0], "expected": 74.00000002511}, {"input": [56.5, 74.5], "expected": 74.50000001522999}, {"input": [56.5, 75.0], "expected": 75.00000000923745}, {"input": [56.5, 75.5], "expected": 75.5000000056028}, {"input": [56.5, 76.0], "expected": 76.00000000339827}, {"input": [56.5, 76.5], "expected": 76.50000000206116}, {"input": [56.5, 77.0], "expected": 77.00000000125016}, {"input": [56.5, 77.5], "expected": 77.50000000075826}, {"input": [56.5, 78.0], "expected": 78.0000000004599}, {"input": [56.5, 78.5], "expected": 78.50000000027894}, {"input": [56.5, 79.0], "expected": 79.0000000001692}, {"input": [56.5, 79.5], "expected": 79.50000000010262}, {"input": [56.5, 80.0], "expected": 80.00000000006224}, {"input": [56.5, 80.5], "expected": 80.50000000003776}, {"input": [56.5, 81.0], "expected": 81.0000000000229}, {"input": [56.5, 81.5], "expected": 81.50000000001388}, {"input": [56.5, 82.0], "expected": 82.00000000000843}, {"input": [56.5, 82.5], "expected": 82.50000000000512}, {"input": [56.5, 83.0], "expected": 83.0000000000031}, {"input": [56.5, 83.5], "expected": 83.50000000000188}, {"input": [56.5, 84.0], "expected": 84.00000000000114}, {"input": [56.5, 84.5], "expected": 84.5000000000007}, {"input": [56.5, 85.0], "expected": 85.00000000000043}, {"input": [56.5, 85.5], "expected": 85.50000000000026}, {"input": [56.5, 86.0], "expected": 86.00000000000016}, {"input": [56.5, 86.5], "expected": 86.5000000000001}, {"input": [56.5, 87.0], "expected": 87.00000000000006}, {"input": [56.5, 87.5], "expected": 87.50000000000003}, {"input": [56.5, 88.0], "expected": 88.00000000000001}, {"input": [56.5, 88.5], "expected": 88.50000000000001}, {"input": [56.5, 89.0], "expected": 89.00000000000001}, {"input": [56.5, 89.5], "expected": 89.5}, {"input": [56.5, 90.0], "expected": 90.0}, {"input": [56.5, 90.5], "expected": 90.5}, {"input": [56.5, 91.0], "expected": 91.0}, {"input": [56.5, 91.5], "expected": 91.5}, {"input": [56.5, 92.0], "expected": 92.0}, {"input": [56.5, 92.5], "expected": 92.5}, {"input": [56.5, 93.0], "expected": 93.0}, {"input": [56.5, 93.5], "expected": 93.5}, {"input": [56.5, 94.0], "expected": 94.0}, {"input": [56.5, 94.5], "expected": 94.5}, {"input": [56.5, 95.0], "expected": 95.0}, {"input": [56.5, 95.5], "expected": 95.5}, {"input": [56.5, 96.0], "expected": 96.0}, {"input": [56.5, 96.5], "expected": 96.5}, {"input": [56.5, 97.0], "expected": 97.0}, {"input": [56.5, 97.5], "expected": 97.5}, {"input": [56.5, 98.0], "expected": 98.0}, {"input": [56.5, 98.5], "expected": 98.5}, {"input": [56.5, 99.0], "expected": 99.0}, {"input": [56.5, 99.5], "expected": 99.5}, {"input": [57.0, -100.0], "expected": 57.0}, {"input": [57.0, -99.5], "expected": 57.0}, {"input": [57.0, -99.0], "expected": 57.0}, {"input": [57.0, -98.5], "expected": 57.0}, {"input": [57.0, -98.0], "expected": 57.0}, {"input": [57.0, -97.5], "expected": 57.0}, {"input": [57.0, -97.0], "expected": 57.0}, {"input": [57.0, -96.5], "expected": 57.0}, {"input": [57.0, -96.0], "expected": 57.0}, {"input": [57.0, -95.5], "expected": 57.0}, {"input": [57.0, -95.0], "expected": 57.0}, {"input": [57.0, -94.5], "expected": 57.0}, {"input": [57.0, -94.0], "expected": 57.0}, {"input": [57.0, -93.5], "expected": 57.0}, {"input": [57.0, -93.0], "expected": 57.0}, {"input": [57.0, -92.5], "expected": 57.0}, {"input": [57.0, -92.0], "expected": 57.0}, {"input": [57.0, -91.5], "expected": 57.0}, {"input": [57.0, -91.0], "expected": 57.0}, {"input": [57.0, -90.5], "expected": 57.0}, {"input": [57.0, -90.0], "expected": 57.0}, {"input": [57.0, -89.5], "expected": 57.0}, {"input": [57.0, -89.0], "expected": 57.0}, {"input": [57.0, -88.5], "expected": 57.0}, {"input": [57.0, -88.0], "expected": 57.0}, {"input": [57.0, -87.5], "expected": 57.0}, {"input": [57.0, -87.0], "expected": 57.0}, {"input": [57.0, -86.5], "expected": 57.0}, {"input": [57.0, -86.0], "expected": 57.0}, {"input": [57.0, -85.5], "expected": 57.0}, {"input": [57.0, -85.0], "expected": 57.0}, {"input": [57.0, -84.5], "expected": 57.0}, {"input": [57.0, -84.0], "expected": 57.0}, {"input": [57.0, -83.5], "expected": 57.0}, {"input": [57.0, -83.0], "expected": 57.0}, {"input": [57.0, -82.5], "expected": 57.0}, {"input": [57.0, -82.0], "expected": 57.0}, {"input": [57.0, -81.5], "expected": 57.0}, {"input": [57.0, -81.0], "expected": 57.0}, {"input": [57.0, -80.5], "expected": 57.0}, {"input": [57.0, -80.0], "expected": 57.0}, {"input": [57.0, -79.5], "expected": 57.0}, {"input": [57.0, -79.0], "expected": 57.0}, {"input": [57.0, -78.5], "expected": 57.0}, {"input": [57.0, -78.0], "expected": 57.0}, {"input": [57.0, -77.5], "expected": 57.0}, {"input": [57.0, -77.0], "expected": 57.0}, {"input": [57.0, -76.5], "expected": 57.0}, {"input": [57.0, -76.0], "expected": 57.0}, {"input": [57.0, -75.5], "expected": 57.0}, {"input": [57.0, -75.0], "expected": 57.0}, {"input": [57.0, -74.5], "expected": 57.0}, {"input": [57.0, -74.0], "expected": 57.0}, {"input": [57.0, -73.5], "expected": 57.0}, {"input": [57.0, -73.0], "expected": 57.0}, {"input": [57.0, -72.5], "expected": 57.0}, {"input": [57.0, -72.0], "expected": 57.0}, {"input": [57.0, -71.5], "expected": 57.0}, {"input": [57.0, -71.0], "expected": 57.0}, {"input": [57.0, -70.5], "expected": 57.0}, {"input": [57.0, -70.0], "expected": 57.0}, {"input": [57.0, -69.5], "expected": 57.0}, {"input": [57.0, -69.0], "expected": 57.0}, {"input": [57.0, -68.5], "expected": 57.0}, {"input": [57.0, -68.0], "expected": 57.0}, {"input": [57.0, -67.5], "expected": 57.0}, {"input": [57.0, -67.0], "expected": 57.0}, {"input": [57.0, -66.5], "expected": 57.0}, {"input": [57.0, -66.0], "expected": 57.0}, {"input": [57.0, -65.5], "expected": 57.0}, {"input": [57.0, -65.0], "expected": 57.0}, {"input": [57.0, -64.5], "expected": 57.0}, {"input": [57.0, -64.0], "expected": 57.0}, {"input": [57.0, -63.5], "expected": 57.0}, {"input": [57.0, -63.0], "expected": 57.0}, {"input": [57.0, -62.5], "expected": 57.0}, {"input": [57.0, -62.0], "expected": 57.0}, {"input": [57.0, -61.5], "expected": 57.0}, {"input": [57.0, -61.0], "expected": 57.0}, {"input": [57.0, -60.5], "expected": 57.0}, {"input": [57.0, -60.0], "expected": 57.0}, {"input": [57.0, -59.5], "expected": 57.0}, {"input": [57.0, -59.0], "expected": 57.0}, {"input": [57.0, -58.5], "expected": 57.0}, {"input": [57.0, -58.0], "expected": 57.0}, {"input": [57.0, -57.5], "expected": 57.0}, {"input": [57.0, -57.0], "expected": 57.0}, {"input": [57.0, -56.5], "expected": 57.0}, {"input": [57.0, -56.0], "expected": 57.0}, {"input": [57.0, -55.5], "expected": 57.0}, {"input": [57.0, -55.0], "expected": 57.0}, {"input": [57.0, -54.5], "expected": 57.0}, {"input": [57.0, -54.0], "expected": 57.0}, {"input": [57.0, -53.5], "expected": 57.0}, {"input": [57.0, -53.0], "expected": 57.0}, {"input": [57.0, -52.5], "expected": 57.0}, {"input": [57.0, -52.0], "expected": 57.0}, {"input": [57.0, -51.5], "expected": 57.0}, {"input": [57.0, -51.0], "expected": 57.0}, {"input": [57.0, -50.5], "expected": 57.0}, {"input": [57.0, -50.0], "expected": 57.0}, {"input": [57.0, -49.5], "expected": 57.0}, {"input": [57.0, -49.0], "expected": 57.0}, {"input": [57.0, -48.5], "expected": 57.0}, {"input": [57.0, -48.0], "expected": 57.0}, {"input": [57.0, -47.5], "expected": 57.0}, {"input": [57.0, -47.0], "expected": 57.0}, {"input": [57.0, -46.5], "expected": 57.0}, {"input": [57.0, -46.0], "expected": 57.0}, {"input": [57.0, -45.5], "expected": 57.0}, {"input": [57.0, -45.0], "expected": 57.0}, {"input": [57.0, -44.5], "expected": 57.0}, {"input": [57.0, -44.0], "expected": 57.0}, {"input": [57.0, -43.5], "expected": 57.0}, {"input": [57.0, -43.0], "expected": 57.0}, {"input": [57.0, -42.5], "expected": 57.0}, {"input": [57.0, -42.0], "expected": 57.0}, {"input": [57.0, -41.5], "expected": 57.0}, {"input": [57.0, -41.0], "expected": 57.0}, {"input": [57.0, -40.5], "expected": 57.0}, {"input": [57.0, -40.0], "expected": 57.0}, {"input": [57.0, -39.5], "expected": 57.0}, {"input": [57.0, -39.0], "expected": 57.0}, {"input": [57.0, -38.5], "expected": 57.0}, {"input": [57.0, -38.0], "expected": 57.0}, {"input": [57.0, -37.5], "expected": 57.0}, {"input": [57.0, -37.0], "expected": 57.0}, {"input": [57.0, -36.5], "expected": 57.0}, {"input": [57.0, -36.0], "expected": 57.0}, {"input": [57.0, -35.5], "expected": 57.0}, {"input": [57.0, -35.0], "expected": 57.0}, {"input": [57.0, -34.5], "expected": 57.0}, {"input": [57.0, -34.0], "expected": 57.0}, {"input": [57.0, -33.5], "expected": 57.0}, {"input": [57.0, -33.0], "expected": 57.0}, {"input": [57.0, -32.5], "expected": 57.0}, {"input": [57.0, -32.0], "expected": 57.0}, {"input": [57.0, -31.5], "expected": 57.0}, {"input": [57.0, -31.0], "expected": 57.0}, {"input": [57.0, -30.5], "expected": 57.0}, {"input": [57.0, -30.0], "expected": 57.0}, {"input": [57.0, -29.5], "expected": 57.0}, {"input": [57.0, -29.0], "expected": 57.0}, {"input": [57.0, -28.5], "expected": 57.0}, {"input": [57.0, -28.0], "expected": 57.0}, {"input": [57.0, -27.5], "expected": 57.0}, {"input": [57.0, -27.0], "expected": 57.0}, {"input": [57.0, -26.5], "expected": 57.0}, {"input": [57.0, -26.0], "expected": 57.0}, {"input": [57.0, -25.5], "expected": 57.0}, {"input": [57.0, -25.0], "expected": 57.0}, {"input": [57.0, -24.5], "expected": 57.0}, {"input": [57.0, -24.0], "expected": 57.0}, {"input": [57.0, -23.5], "expected": 57.0}, {"input": [57.0, -23.0], "expected": 57.0}, {"input": [57.0, -22.5], "expected": 57.0}, {"input": [57.0, -22.0], "expected": 57.0}, {"input": [57.0, -21.5], "expected": 57.0}, {"input": [57.0, -21.0], "expected": 57.0}, {"input": [57.0, -20.5], "expected": 57.0}, {"input": [57.0, -20.0], "expected": 57.0}, {"input": [57.0, -19.5], "expected": 57.0}, {"input": [57.0, -19.0], "expected": 57.0}, {"input": [57.0, -18.5], "expected": 57.0}, {"input": [57.0, -18.0], "expected": 57.0}, {"input": [57.0, -17.5], "expected": 57.0}, {"input": [57.0, -17.0], "expected": 57.0}, {"input": [57.0, -16.5], "expected": 57.0}, {"input": [57.0, -16.0], "expected": 57.0}, {"input": [57.0, -15.5], "expected": 57.0}, {"input": [57.0, -15.0], "expected": 57.0}, {"input": [57.0, -14.5], "expected": 57.0}, {"input": [57.0, -14.0], "expected": 57.0}, {"input": [57.0, -13.5], "expected": 57.0}, {"input": [57.0, -13.0], "expected": 57.0}, {"input": [57.0, -12.5], "expected": 57.0}, {"input": [57.0, -12.0], "expected": 57.0}, {"input": [57.0, -11.5], "expected": 57.0}, {"input": [57.0, -11.0], "expected": 57.0}, {"input": [57.0, -10.5], "expected": 57.0}, {"input": [57.0, -10.0], "expected": 57.0}, {"input": [57.0, -9.5], "expected": 57.0}, {"input": [57.0, -9.0], "expected": 57.0}, {"input": [57.0, -8.5], "expected": 57.0}, {"input": [57.0, -8.0], "expected": 57.0}, {"input": [57.0, -7.5], "expected": 57.0}, {"input": [57.0, -7.0], "expected": 57.0}, {"input": [57.0, -6.5], "expected": 57.0}, {"input": [57.0, -6.0], "expected": 57.0}, {"input": [57.0, -5.5], "expected": 57.0}, {"input": [57.0, -5.0], "expected": 57.0}, {"input": [57.0, -4.5], "expected": 57.0}, {"input": [57.0, -4.0], "expected": 57.0}, {"input": [57.0, -3.5], "expected": 57.0}, {"input": [57.0, -3.0], "expected": 57.0}, {"input": [57.0, -2.5], "expected": 57.0}, {"input": [57.0, -2.0], "expected": 57.0}, {"input": [57.0, -1.5], "expected": 57.0}, {"input": [57.0, -1.0], "expected": 57.0}, {"input": [57.0, -0.5], "expected": 57.0}, {"input": [57.0, 0.0], "expected": 57.0}, {"input": [57.0, 0.5], "expected": 57.0}, {"input": [57.0, 1.0], "expected": 57.0}, {"input": [57.0, 1.5], "expected": 57.0}, {"input": [57.0, 2.0], "expected": 57.0}, {"input": [57.0, 2.5], "expected": 57.0}, {"input": [57.0, 3.0], "expected": 57.0}, {"input": [57.0, 3.5], "expected": 57.0}, {"input": [57.0, 4.0], "expected": 57.0}, {"input": [57.0, 4.5], "expected": 57.0}, {"input": [57.0, 5.0], "expected": 57.0}, {"input": [57.0, 5.5], "expected": 57.0}, {"input": [57.0, 6.0], "expected": 57.0}, {"input": [57.0, 6.5], "expected": 57.0}, {"input": [57.0, 7.0], "expected": 57.0}, {"input": [57.0, 7.5], "expected": 57.0}, {"input": [57.0, 8.0], "expected": 57.0}, {"input": [57.0, 8.5], "expected": 57.0}, {"input": [57.0, 9.0], "expected": 57.0}, {"input": [57.0, 9.5], "expected": 57.0}, {"input": [57.0, 10.0], "expected": 57.0}, {"input": [57.0, 10.5], "expected": 57.0}, {"input": [57.0, 11.0], "expected": 57.0}, {"input": [57.0, 11.5], "expected": 57.0}, {"input": [57.0, 12.0], "expected": 57.0}, {"input": [57.0, 12.5], "expected": 57.0}, {"input": [57.0, 13.0], "expected": 57.0}, {"input": [57.0, 13.5], "expected": 57.0}, {"input": [57.0, 14.0], "expected": 57.0}, {"input": [57.0, 14.5], "expected": 57.0}, {"input": [57.0, 15.0], "expected": 57.0}, {"input": [57.0, 15.5], "expected": 57.0}, {"input": [57.0, 16.0], "expected": 57.0}, {"input": [57.0, 16.5], "expected": 57.0}, {"input": [57.0, 17.0], "expected": 57.0}, {"input": [57.0, 17.5], "expected": 57.0}, {"input": [57.0, 18.0], "expected": 57.0}, {"input": [57.0, 18.5], "expected": 57.0}, {"input": [57.0, 19.0], "expected": 57.0}, {"input": [57.0, 19.5], "expected": 57.0}, {"input": [57.0, 20.0], "expected": 57.0}, {"input": [57.0, 20.5], "expected": 57.0}, {"input": [57.0, 21.0], "expected": 57.0}, {"input": [57.0, 21.5], "expected": 57.0}, {"input": [57.0, 22.0], "expected": 57.0}, {"input": [57.0, 22.5], "expected": 57.0}, {"input": [57.0, 23.0], "expected": 57.0}, {"input": [57.0, 23.5], "expected": 57.0}, {"input": [57.0, 24.0], "expected": 57.00000000000001}, {"input": [57.0, 24.5], "expected": 57.00000000000001}, {"input": [57.0, 25.0], "expected": 57.000000000000014}, {"input": [57.0, 25.5], "expected": 57.00000000000002}, {"input": [57.0, 26.0], "expected": 57.000000000000036}, {"input": [57.0, 26.5], "expected": 57.00000000000006}, {"input": [57.0, 27.0], "expected": 57.00000000000009}, {"input": [57.0, 27.5], "expected": 57.000000000000156}, {"input": [57.0, 28.0], "expected": 57.000000000000256}, {"input": [57.0, 28.5], "expected": 57.00000000000042}, {"input": [57.0, 29.0], "expected": 57.00000000000069}, {"input": [57.0, 29.5], "expected": 57.00000000000114}, {"input": [57.0, 30.0], "expected": 57.00000000000188}, {"input": [57.0, 30.5], "expected": 57.0000000000031}, {"input": [57.0, 31.0], "expected": 57.00000000000511}, {"input": [57.0, 31.5], "expected": 57.00000000000842}, {"input": [57.0, 32.0], "expected": 57.00000000001389}, {"input": [57.0, 32.5], "expected": 57.0000000000229}, {"input": [57.0, 33.0], "expected": 57.00000000003775}, {"input": [57.0, 33.5], "expected": 57.00000000006224}, {"input": [57.0, 34.0], "expected": 57.00000000010262}, {"input": [57.0, 34.5], "expected": 57.00000000016919}, {"input": [57.0, 35.0], "expected": 57.000000000278945}, {"input": [57.0, 35.5], "expected": 57.000000000459906}, {"input": [57.0, 36.0], "expected": 57.000000000758256}, {"input": [57.0, 36.5], "expected": 57.00000000125015}, {"input": [57.0, 37.0], "expected": 57.00000000206116}, {"input": [57.0, 37.5], "expected": 57.00000000339827}, {"input": [57.0, 38.0], "expected": 57.00000000560279}, {"input": [57.0, 38.5], "expected": 57.000000009237446}, {"input": [57.0, 39.0], "expected": 57.00000001522998}, {"input": [57.0, 39.5], "expected": 57.00000002510999}, {"input": [57.0, 40.0], "expected": 57.000000041399375}, {"input": [57.0, 40.5], "expected": 57.00000006825603}, {"input": [57.0, 41.0], "expected": 57.00000011253517}, {"input": [57.0, 41.5], "expected": 57.00000018553912}, {"input": [57.0, 42.0], "expected": 57.000000305902276}, {"input": [57.0, 42.5], "expected": 57.00000050434753}, {"input": [57.0, 43.0], "expected": 57.000000831528375}, {"input": [57.0, 43.5], "expected": 57.000001370958145}, {"input": [57.0, 44.0], "expected": 57.00000226032685}, {"input": [57.0, 44.5], "expected": 57.00000372664623}, {"input": [57.0, 45.0], "expected": 57.00000614419348}, {"input": [57.0, 45.5], "expected": 57.00001013004229}, {"input": [57.0, 46.0], "expected": 57.00001670156132}, {"input": [57.0, 46.5], "expected": 57.00002753607023}, {"input": [57.0, 47.0], "expected": 57.00004539889922}, {"input": [57.0, 47.5], "expected": 57.00007484902863}, {"input": [57.0, 48.0], "expected": 57.00012340218972}, {"input": [57.0, 48.5], "expected": 57.00020344767213}, {"input": [57.0, 49.0], "expected": 57.0003354063729}, {"input": [57.0, 49.5], "expected": 57.00055293147536}, {"input": [57.0, 50.0], "expected": 57.00091146645377}, {"input": [57.0, 50.5], "expected": 57.00150231015976}, {"input": [57.0, 51.0], "expected": 57.00247568513773}, {"input": [57.0, 51.5], "expected": 57.00407844327057}, {"input": [57.0, 52.0], "expected": 57.00671534848912}, {"input": [57.0, 52.5], "expected": 57.0110477448486}, {"input": [57.0, 53.0], "expected": 57.01814992791781}, {"input": [57.0, 53.5], "expected": 57.02975041827262}, {"input": [57.0, 54.0], "expected": 57.048587351573744}, {"input": [57.0, 54.5], "expected": 57.07888973429255}, {"input": [57.0, 55.0], "expected": 57.12692801104297}, {"input": [57.0, 55.5], "expected": 57.20141327798275}, {"input": [57.0, 56.0], "expected": 57.31326168751822}, {"input": [57.0, 56.5], "expected": 57.47407698418011}, {"input": [57.0, 57.0], "expected": 57.69314718055995}, {"input": [57.0, 57.5], "expected": 57.97407698418011}, {"input": [57.0, 58.0], "expected": 58.31326168751822}, {"input": [57.0, 58.5], "expected": 58.70141327798275}, {"input": [57.0, 59.0], "expected": 59.12692801104297}, {"input": [57.0, 59.5], "expected": 59.57888973429255}, {"input": [57.0, 60.0], "expected": 60.048587351573744}, {"input": [57.0, 60.5], "expected": 60.52975041827262}, {"input": [57.0, 61.0], "expected": 61.01814992791781}, {"input": [57.0, 61.5], "expected": 61.5110477448486}, {"input": [57.0, 62.0], "expected": 62.00671534848912}, {"input": [57.0, 62.5], "expected": 62.50407844327057}, {"input": [57.0, 63.0], "expected": 63.00247568513773}, {"input": [57.0, 63.5], "expected": 63.50150231015976}, {"input": [57.0, 64.0], "expected": 64.00091146645377}, {"input": [57.0, 64.5], "expected": 64.50055293147535}, {"input": [57.0, 65.0], "expected": 65.0003354063729}, {"input": [57.0, 65.5], "expected": 65.50020344767213}, {"input": [57.0, 66.0], "expected": 66.00012340218973}, {"input": [57.0, 66.5], "expected": 66.50007484902864}, {"input": [57.0, 67.0], "expected": 67.00004539889922}, {"input": [57.0, 67.5], "expected": 67.50002753607023}, {"input": [57.0, 68.0], "expected": 68.00001670156132}, {"input": [57.0, 68.5], "expected": 68.50001013004228}, {"input": [57.0, 69.0], "expected": 69.00000614419348}, {"input": [57.0, 69.5], "expected": 69.50000372664623}, {"input": [57.0, 70.0], "expected": 70.00000226032685}, {"input": [57.0, 70.5], "expected": 70.50000137095815}, {"input": [57.0, 71.0], "expected": 71.00000083152837}, {"input": [57.0, 71.5], "expected": 71.50000050434754}, {"input": [57.0, 72.0], "expected": 72.00000030590228}, {"input": [57.0, 72.5], "expected": 72.50000018553912}, {"input": [57.0, 73.0], "expected": 73.00000011253516}, {"input": [57.0, 73.5], "expected": 73.50000006825603}, {"input": [57.0, 74.0], "expected": 74.00000004139937}, {"input": [57.0, 74.5], "expected": 74.50000002511}, {"input": [57.0, 75.0], "expected": 75.00000001522999}, {"input": [57.0, 75.5], "expected": 75.50000000923745}, {"input": [57.0, 76.0], "expected": 76.0000000056028}, {"input": [57.0, 76.5], "expected": 76.50000000339827}, {"input": [57.0, 77.0], "expected": 77.00000000206116}, {"input": [57.0, 77.5], "expected": 77.50000000125016}, {"input": [57.0, 78.0], "expected": 78.00000000075826}, {"input": [57.0, 78.5], "expected": 78.5000000004599}, {"input": [57.0, 79.0], "expected": 79.00000000027894}, {"input": [57.0, 79.5], "expected": 79.5000000001692}, {"input": [57.0, 80.0], "expected": 80.00000000010262}, {"input": [57.0, 80.5], "expected": 80.50000000006224}, {"input": [57.0, 81.0], "expected": 81.00000000003776}, {"input": [57.0, 81.5], "expected": 81.5000000000229}, {"input": [57.0, 82.0], "expected": 82.00000000001388}, {"input": [57.0, 82.5], "expected": 82.50000000000843}, {"input": [57.0, 83.0], "expected": 83.00000000000512}, {"input": [57.0, 83.5], "expected": 83.5000000000031}, {"input": [57.0, 84.0], "expected": 84.00000000000188}, {"input": [57.0, 84.5], "expected": 84.50000000000114}, {"input": [57.0, 85.0], "expected": 85.0000000000007}, {"input": [57.0, 85.5], "expected": 85.50000000000043}, {"input": [57.0, 86.0], "expected": 86.00000000000026}, {"input": [57.0, 86.5], "expected": 86.50000000000016}, {"input": [57.0, 87.0], "expected": 87.0000000000001}, {"input": [57.0, 87.5], "expected": 87.50000000000006}, {"input": [57.0, 88.0], "expected": 88.00000000000003}, {"input": [57.0, 88.5], "expected": 88.50000000000001}, {"input": [57.0, 89.0], "expected": 89.00000000000001}, {"input": [57.0, 89.5], "expected": 89.50000000000001}, {"input": [57.0, 90.0], "expected": 90.0}, {"input": [57.0, 90.5], "expected": 90.5}, {"input": [57.0, 91.0], "expected": 91.0}, {"input": [57.0, 91.5], "expected": 91.5}, {"input": [57.0, 92.0], "expected": 92.0}, {"input": [57.0, 92.5], "expected": 92.5}, {"input": [57.0, 93.0], "expected": 93.0}, {"input": [57.0, 93.5], "expected": 93.5}, {"input": [57.0, 94.0], "expected": 94.0}, {"input": [57.0, 94.5], "expected": 94.5}, {"input": [57.0, 95.0], "expected": 95.0}, {"input": [57.0, 95.5], "expected": 95.5}, {"input": [57.0, 96.0], "expected": 96.0}, {"input": [57.0, 96.5], "expected": 96.5}, {"input": [57.0, 97.0], "expected": 97.0}, {"input": [57.0, 97.5], "expected": 97.5}, {"input": [57.0, 98.0], "expected": 98.0}, {"input": [57.0, 98.5], "expected": 98.5}, {"input": [57.0, 99.0], "expected": 99.0}, {"input": [57.0, 99.5], "expected": 99.5}, {"input": [57.5, -100.0], "expected": 57.5}, {"input": [57.5, -99.5], "expected": 57.5}, {"input": [57.5, -99.0], "expected": 57.5}, {"input": [57.5, -98.5], "expected": 57.5}, {"input": [57.5, -98.0], "expected": 57.5}, {"input": [57.5, -97.5], "expected": 57.5}, {"input": [57.5, -97.0], "expected": 57.5}, {"input": [57.5, -96.5], "expected": 57.5}, {"input": [57.5, -96.0], "expected": 57.5}, {"input": [57.5, -95.5], "expected": 57.5}, {"input": [57.5, -95.0], "expected": 57.5}, {"input": [57.5, -94.5], "expected": 57.5}, {"input": [57.5, -94.0], "expected": 57.5}, {"input": [57.5, -93.5], "expected": 57.5}, {"input": [57.5, -93.0], "expected": 57.5}, {"input": [57.5, -92.5], "expected": 57.5}, {"input": [57.5, -92.0], "expected": 57.5}, {"input": [57.5, -91.5], "expected": 57.5}, {"input": [57.5, -91.0], "expected": 57.5}, {"input": [57.5, -90.5], "expected": 57.5}, {"input": [57.5, -90.0], "expected": 57.5}, {"input": [57.5, -89.5], "expected": 57.5}, {"input": [57.5, -89.0], "expected": 57.5}, {"input": [57.5, -88.5], "expected": 57.5}, {"input": [57.5, -88.0], "expected": 57.5}, {"input": [57.5, -87.5], "expected": 57.5}, {"input": [57.5, -87.0], "expected": 57.5}, {"input": [57.5, -86.5], "expected": 57.5}, {"input": [57.5, -86.0], "expected": 57.5}, {"input": [57.5, -85.5], "expected": 57.5}, {"input": [57.5, -85.0], "expected": 57.5}, {"input": [57.5, -84.5], "expected": 57.5}, {"input": [57.5, -84.0], "expected": 57.5}, {"input": [57.5, -83.5], "expected": 57.5}, {"input": [57.5, -83.0], "expected": 57.5}, {"input": [57.5, -82.5], "expected": 57.5}, {"input": [57.5, -82.0], "expected": 57.5}, {"input": [57.5, -81.5], "expected": 57.5}, {"input": [57.5, -81.0], "expected": 57.5}, {"input": [57.5, -80.5], "expected": 57.5}, {"input": [57.5, -80.0], "expected": 57.5}, {"input": [57.5, -79.5], "expected": 57.5}, {"input": [57.5, -79.0], "expected": 57.5}, {"input": [57.5, -78.5], "expected": 57.5}, {"input": [57.5, -78.0], "expected": 57.5}, {"input": [57.5, -77.5], "expected": 57.5}, {"input": [57.5, -77.0], "expected": 57.5}, {"input": [57.5, -76.5], "expected": 57.5}, {"input": [57.5, -76.0], "expected": 57.5}, {"input": [57.5, -75.5], "expected": 57.5}, {"input": [57.5, -75.0], "expected": 57.5}, {"input": [57.5, -74.5], "expected": 57.5}, {"input": [57.5, -74.0], "expected": 57.5}, {"input": [57.5, -73.5], "expected": 57.5}, {"input": [57.5, -73.0], "expected": 57.5}, {"input": [57.5, -72.5], "expected": 57.5}, {"input": [57.5, -72.0], "expected": 57.5}, {"input": [57.5, -71.5], "expected": 57.5}, {"input": [57.5, -71.0], "expected": 57.5}, {"input": [57.5, -70.5], "expected": 57.5}, {"input": [57.5, -70.0], "expected": 57.5}, {"input": [57.5, -69.5], "expected": 57.5}, {"input": [57.5, -69.0], "expected": 57.5}, {"input": [57.5, -68.5], "expected": 57.5}, {"input": [57.5, -68.0], "expected": 57.5}, {"input": [57.5, -67.5], "expected": 57.5}, {"input": [57.5, -67.0], "expected": 57.5}, {"input": [57.5, -66.5], "expected": 57.5}, {"input": [57.5, -66.0], "expected": 57.5}, {"input": [57.5, -65.5], "expected": 57.5}, {"input": [57.5, -65.0], "expected": 57.5}, {"input": [57.5, -64.5], "expected": 57.5}, {"input": [57.5, -64.0], "expected": 57.5}, {"input": [57.5, -63.5], "expected": 57.5}, {"input": [57.5, -63.0], "expected": 57.5}, {"input": [57.5, -62.5], "expected": 57.5}, {"input": [57.5, -62.0], "expected": 57.5}, {"input": [57.5, -61.5], "expected": 57.5}, {"input": [57.5, -61.0], "expected": 57.5}, {"input": [57.5, -60.5], "expected": 57.5}, {"input": [57.5, -60.0], "expected": 57.5}, {"input": [57.5, -59.5], "expected": 57.5}, {"input": [57.5, -59.0], "expected": 57.5}, {"input": [57.5, -58.5], "expected": 57.5}, {"input": [57.5, -58.0], "expected": 57.5}, {"input": [57.5, -57.5], "expected": 57.5}, {"input": [57.5, -57.0], "expected": 57.5}, {"input": [57.5, -56.5], "expected": 57.5}, {"input": [57.5, -56.0], "expected": 57.5}, {"input": [57.5, -55.5], "expected": 57.5}, {"input": [57.5, -55.0], "expected": 57.5}, {"input": [57.5, -54.5], "expected": 57.5}, {"input": [57.5, -54.0], "expected": 57.5}, {"input": [57.5, -53.5], "expected": 57.5}, {"input": [57.5, -53.0], "expected": 57.5}, {"input": [57.5, -52.5], "expected": 57.5}, {"input": [57.5, -52.0], "expected": 57.5}, {"input": [57.5, -51.5], "expected": 57.5}, {"input": [57.5, -51.0], "expected": 57.5}, {"input": [57.5, -50.5], "expected": 57.5}, {"input": [57.5, -50.0], "expected": 57.5}, {"input": [57.5, -49.5], "expected": 57.5}, {"input": [57.5, -49.0], "expected": 57.5}, {"input": [57.5, -48.5], "expected": 57.5}, {"input": [57.5, -48.0], "expected": 57.5}, {"input": [57.5, -47.5], "expected": 57.5}, {"input": [57.5, -47.0], "expected": 57.5}, {"input": [57.5, -46.5], "expected": 57.5}, {"input": [57.5, -46.0], "expected": 57.5}, {"input": [57.5, -45.5], "expected": 57.5}, {"input": [57.5, -45.0], "expected": 57.5}, {"input": [57.5, -44.5], "expected": 57.5}, {"input": [57.5, -44.0], "expected": 57.5}, {"input": [57.5, -43.5], "expected": 57.5}, {"input": [57.5, -43.0], "expected": 57.5}, {"input": [57.5, -42.5], "expected": 57.5}, {"input": [57.5, -42.0], "expected": 57.5}, {"input": [57.5, -41.5], "expected": 57.5}, {"input": [57.5, -41.0], "expected": 57.5}, {"input": [57.5, -40.5], "expected": 57.5}, {"input": [57.5, -40.0], "expected": 57.5}, {"input": [57.5, -39.5], "expected": 57.5}, {"input": [57.5, -39.0], "expected": 57.5}, {"input": [57.5, -38.5], "expected": 57.5}, {"input": [57.5, -38.0], "expected": 57.5}, {"input": [57.5, -37.5], "expected": 57.5}, {"input": [57.5, -37.0], "expected": 57.5}, {"input": [57.5, -36.5], "expected": 57.5}, {"input": [57.5, -36.0], "expected": 57.5}, {"input": [57.5, -35.5], "expected": 57.5}, {"input": [57.5, -35.0], "expected": 57.5}, {"input": [57.5, -34.5], "expected": 57.5}, {"input": [57.5, -34.0], "expected": 57.5}, {"input": [57.5, -33.5], "expected": 57.5}, {"input": [57.5, -33.0], "expected": 57.5}, {"input": [57.5, -32.5], "expected": 57.5}, {"input": [57.5, -32.0], "expected": 57.5}, {"input": [57.5, -31.5], "expected": 57.5}, {"input": [57.5, -31.0], "expected": 57.5}, {"input": [57.5, -30.5], "expected": 57.5}, {"input": [57.5, -30.0], "expected": 57.5}, {"input": [57.5, -29.5], "expected": 57.5}, {"input": [57.5, -29.0], "expected": 57.5}, {"input": [57.5, -28.5], "expected": 57.5}, {"input": [57.5, -28.0], "expected": 57.5}, {"input": [57.5, -27.5], "expected": 57.5}, {"input": [57.5, -27.0], "expected": 57.5}, {"input": [57.5, -26.5], "expected": 57.5}, {"input": [57.5, -26.0], "expected": 57.5}, {"input": [57.5, -25.5], "expected": 57.5}, {"input": [57.5, -25.0], "expected": 57.5}, {"input": [57.5, -24.5], "expected": 57.5}, {"input": [57.5, -24.0], "expected": 57.5}, {"input": [57.5, -23.5], "expected": 57.5}, {"input": [57.5, -23.0], "expected": 57.5}, {"input": [57.5, -22.5], "expected": 57.5}, {"input": [57.5, -22.0], "expected": 57.5}, {"input": [57.5, -21.5], "expected": 57.5}, {"input": [57.5, -21.0], "expected": 57.5}, {"input": [57.5, -20.5], "expected": 57.5}, {"input": [57.5, -20.0], "expected": 57.5}, {"input": [57.5, -19.5], "expected": 57.5}, {"input": [57.5, -19.0], "expected": 57.5}, {"input": [57.5, -18.5], "expected": 57.5}, {"input": [57.5, -18.0], "expected": 57.5}, {"input": [57.5, -17.5], "expected": 57.5}, {"input": [57.5, -17.0], "expected": 57.5}, {"input": [57.5, -16.5], "expected": 57.5}, {"input": [57.5, -16.0], "expected": 57.5}, {"input": [57.5, -15.5], "expected": 57.5}, {"input": [57.5, -15.0], "expected": 57.5}, {"input": [57.5, -14.5], "expected": 57.5}, {"input": [57.5, -14.0], "expected": 57.5}, {"input": [57.5, -13.5], "expected": 57.5}, {"input": [57.5, -13.0], "expected": 57.5}, {"input": [57.5, -12.5], "expected": 57.5}, {"input": [57.5, -12.0], "expected": 57.5}, {"input": [57.5, -11.5], "expected": 57.5}, {"input": [57.5, -11.0], "expected": 57.5}, {"input": [57.5, -10.5], "expected": 57.5}, {"input": [57.5, -10.0], "expected": 57.5}, {"input": [57.5, -9.5], "expected": 57.5}, {"input": [57.5, -9.0], "expected": 57.5}, {"input": [57.5, -8.5], "expected": 57.5}, {"input": [57.5, -8.0], "expected": 57.5}, {"input": [57.5, -7.5], "expected": 57.5}, {"input": [57.5, -7.0], "expected": 57.5}, {"input": [57.5, -6.5], "expected": 57.5}, {"input": [57.5, -6.0], "expected": 57.5}, {"input": [57.5, -5.5], "expected": 57.5}, {"input": [57.5, -5.0], "expected": 57.5}, {"input": [57.5, -4.5], "expected": 57.5}, {"input": [57.5, -4.0], "expected": 57.5}, {"input": [57.5, -3.5], "expected": 57.5}, {"input": [57.5, -3.0], "expected": 57.5}, {"input": [57.5, -2.5], "expected": 57.5}, {"input": [57.5, -2.0], "expected": 57.5}, {"input": [57.5, -1.5], "expected": 57.5}, {"input": [57.5, -1.0], "expected": 57.5}, {"input": [57.5, -0.5], "expected": 57.5}, {"input": [57.5, 0.0], "expected": 57.5}, {"input": [57.5, 0.5], "expected": 57.5}, {"input": [57.5, 1.0], "expected": 57.5}, {"input": [57.5, 1.5], "expected": 57.5}, {"input": [57.5, 2.0], "expected": 57.5}, {"input": [57.5, 2.5], "expected": 57.5}, {"input": [57.5, 3.0], "expected": 57.5}, {"input": [57.5, 3.5], "expected": 57.5}, {"input": [57.5, 4.0], "expected": 57.5}, {"input": [57.5, 4.5], "expected": 57.5}, {"input": [57.5, 5.0], "expected": 57.5}, {"input": [57.5, 5.5], "expected": 57.5}, {"input": [57.5, 6.0], "expected": 57.5}, {"input": [57.5, 6.5], "expected": 57.5}, {"input": [57.5, 7.0], "expected": 57.5}, {"input": [57.5, 7.5], "expected": 57.5}, {"input": [57.5, 8.0], "expected": 57.5}, {"input": [57.5, 8.5], "expected": 57.5}, {"input": [57.5, 9.0], "expected": 57.5}, {"input": [57.5, 9.5], "expected": 57.5}, {"input": [57.5, 10.0], "expected": 57.5}, {"input": [57.5, 10.5], "expected": 57.5}, {"input": [57.5, 11.0], "expected": 57.5}, {"input": [57.5, 11.5], "expected": 57.5}, {"input": [57.5, 12.0], "expected": 57.5}, {"input": [57.5, 12.5], "expected": 57.5}, {"input": [57.5, 13.0], "expected": 57.5}, {"input": [57.5, 13.5], "expected": 57.5}, {"input": [57.5, 14.0], "expected": 57.5}, {"input": [57.5, 14.5], "expected": 57.5}, {"input": [57.5, 15.0], "expected": 57.5}, {"input": [57.5, 15.5], "expected": 57.5}, {"input": [57.5, 16.0], "expected": 57.5}, {"input": [57.5, 16.5], "expected": 57.5}, {"input": [57.5, 17.0], "expected": 57.5}, {"input": [57.5, 17.5], "expected": 57.5}, {"input": [57.5, 18.0], "expected": 57.5}, {"input": [57.5, 18.5], "expected": 57.5}, {"input": [57.5, 19.0], "expected": 57.5}, {"input": [57.5, 19.5], "expected": 57.5}, {"input": [57.5, 20.0], "expected": 57.5}, {"input": [57.5, 20.5], "expected": 57.5}, {"input": [57.5, 21.0], "expected": 57.5}, {"input": [57.5, 21.5], "expected": 57.5}, {"input": [57.5, 22.0], "expected": 57.5}, {"input": [57.5, 22.5], "expected": 57.5}, {"input": [57.5, 23.0], "expected": 57.5}, {"input": [57.5, 23.5], "expected": 57.5}, {"input": [57.5, 24.0], "expected": 57.5}, {"input": [57.5, 24.5], "expected": 57.50000000000001}, {"input": [57.5, 25.0], "expected": 57.50000000000001}, {"input": [57.5, 25.5], "expected": 57.500000000000014}, {"input": [57.5, 26.0], "expected": 57.50000000000002}, {"input": [57.5, 26.5], "expected": 57.500000000000036}, {"input": [57.5, 27.0], "expected": 57.50000000000006}, {"input": [57.5, 27.5], "expected": 57.50000000000009}, {"input": [57.5, 28.0], "expected": 57.500000000000156}, {"input": [57.5, 28.5], "expected": 57.500000000000256}, {"input": [57.5, 29.0], "expected": 57.50000000000042}, {"input": [57.5, 29.5], "expected": 57.50000000000069}, {"input": [57.5, 30.0], "expected": 57.50000000000114}, {"input": [57.5, 30.5], "expected": 57.50000000000188}, {"input": [57.5, 31.0], "expected": 57.5000000000031}, {"input": [57.5, 31.5], "expected": 57.50000000000511}, {"input": [57.5, 32.0], "expected": 57.50000000000842}, {"input": [57.5, 32.5], "expected": 57.50000000001389}, {"input": [57.5, 33.0], "expected": 57.5000000000229}, {"input": [57.5, 33.5], "expected": 57.50000000003775}, {"input": [57.5, 34.0], "expected": 57.50000000006224}, {"input": [57.5, 34.5], "expected": 57.50000000010262}, {"input": [57.5, 35.0], "expected": 57.50000000016919}, {"input": [57.5, 35.5], "expected": 57.500000000278945}, {"input": [57.5, 36.0], "expected": 57.500000000459906}, {"input": [57.5, 36.5], "expected": 57.500000000758256}, {"input": [57.5, 37.0], "expected": 57.50000000125015}, {"input": [57.5, 37.5], "expected": 57.50000000206116}, {"input": [57.5, 38.0], "expected": 57.50000000339827}, {"input": [57.5, 38.5], "expected": 57.50000000560279}, {"input": [57.5, 39.0], "expected": 57.500000009237446}, {"input": [57.5, 39.5], "expected": 57.50000001522998}, {"input": [57.5, 40.0], "expected": 57.50000002510999}, {"input": [57.5, 40.5], "expected": 57.500000041399375}, {"input": [57.5, 41.0], "expected": 57.50000006825603}, {"input": [57.5, 41.5], "expected": 57.50000011253517}, {"input": [57.5, 42.0], "expected": 57.50000018553912}, {"input": [57.5, 42.5], "expected": 57.500000305902276}, {"input": [57.5, 43.0], "expected": 57.50000050434753}, {"input": [57.5, 43.5], "expected": 57.500000831528375}, {"input": [57.5, 44.0], "expected": 57.500001370958145}, {"input": [57.5, 44.5], "expected": 57.50000226032685}, {"input": [57.5, 45.0], "expected": 57.50000372664623}, {"input": [57.5, 45.5], "expected": 57.50000614419348}, {"input": [57.5, 46.0], "expected": 57.50001013004229}, {"input": [57.5, 46.5], "expected": 57.50001670156132}, {"input": [57.5, 47.0], "expected": 57.50002753607023}, {"input": [57.5, 47.5], "expected": 57.50004539889922}, {"input": [57.5, 48.0], "expected": 57.50007484902863}, {"input": [57.5, 48.5], "expected": 57.50012340218972}, {"input": [57.5, 49.0], "expected": 57.50020344767213}, {"input": [57.5, 49.5], "expected": 57.5003354063729}, {"input": [57.5, 50.0], "expected": 57.50055293147536}, {"input": [57.5, 50.5], "expected": 57.50091146645377}, {"input": [57.5, 51.0], "expected": 57.50150231015976}, {"input": [57.5, 51.5], "expected": 57.50247568513773}, {"input": [57.5, 52.0], "expected": 57.50407844327057}, {"input": [57.5, 52.5], "expected": 57.50671534848912}, {"input": [57.5, 53.0], "expected": 57.5110477448486}, {"input": [57.5, 53.5], "expected": 57.51814992791781}, {"input": [57.5, 54.0], "expected": 57.52975041827262}, {"input": [57.5, 54.5], "expected": 57.548587351573744}, {"input": [57.5, 55.0], "expected": 57.57888973429255}, {"input": [57.5, 55.5], "expected": 57.62692801104297}, {"input": [57.5, 56.0], "expected": 57.70141327798275}, {"input": [57.5, 56.5], "expected": 57.81326168751822}, {"input": [57.5, 57.0], "expected": 57.97407698418011}, {"input": [57.5, 57.5], "expected": 58.19314718055995}, {"input": [57.5, 58.0], "expected": 58.47407698418011}, {"input": [57.5, 58.5], "expected": 58.81326168751822}, {"input": [57.5, 59.0], "expected": 59.20141327798275}, {"input": [57.5, 59.5], "expected": 59.62692801104297}, {"input": [57.5, 60.0], "expected": 60.07888973429255}, {"input": [57.5, 60.5], "expected": 60.548587351573744}, {"input": [57.5, 61.0], "expected": 61.02975041827262}, {"input": [57.5, 61.5], "expected": 61.51814992791781}, {"input": [57.5, 62.0], "expected": 62.0110477448486}, {"input": [57.5, 62.5], "expected": 62.50671534848912}, {"input": [57.5, 63.0], "expected": 63.00407844327057}, {"input": [57.5, 63.5], "expected": 63.50247568513773}, {"input": [57.5, 64.0], "expected": 64.00150231015975}, {"input": [57.5, 64.5], "expected": 64.50091146645377}, {"input": [57.5, 65.0], "expected": 65.00055293147535}, {"input": [57.5, 65.5], "expected": 65.5003354063729}, {"input": [57.5, 66.0], "expected": 66.00020344767213}, {"input": [57.5, 66.5], "expected": 66.50012340218973}, {"input": [57.5, 67.0], "expected": 67.00007484902864}, {"input": [57.5, 67.5], "expected": 67.50004539889922}, {"input": [57.5, 68.0], "expected": 68.00002753607023}, {"input": [57.5, 68.5], "expected": 68.50001670156132}, {"input": [57.5, 69.0], "expected": 69.00001013004228}, {"input": [57.5, 69.5], "expected": 69.50000614419348}, {"input": [57.5, 70.0], "expected": 70.00000372664623}, {"input": [57.5, 70.5], "expected": 70.50000226032685}, {"input": [57.5, 71.0], "expected": 71.00000137095815}, {"input": [57.5, 71.5], "expected": 71.50000083152837}, {"input": [57.5, 72.0], "expected": 72.00000050434754}, {"input": [57.5, 72.5], "expected": 72.50000030590228}, {"input": [57.5, 73.0], "expected": 73.00000018553912}, {"input": [57.5, 73.5], "expected": 73.50000011253516}, {"input": [57.5, 74.0], "expected": 74.00000006825603}, {"input": [57.5, 74.5], "expected": 74.50000004139937}, {"input": [57.5, 75.0], "expected": 75.00000002511}, {"input": [57.5, 75.5], "expected": 75.50000001522999}, {"input": [57.5, 76.0], "expected": 76.00000000923745}, {"input": [57.5, 76.5], "expected": 76.5000000056028}, {"input": [57.5, 77.0], "expected": 77.00000000339827}, {"input": [57.5, 77.5], "expected": 77.50000000206116}, {"input": [57.5, 78.0], "expected": 78.00000000125016}, {"input": [57.5, 78.5], "expected": 78.50000000075826}, {"input": [57.5, 79.0], "expected": 79.0000000004599}, {"input": [57.5, 79.5], "expected": 79.50000000027894}, {"input": [57.5, 80.0], "expected": 80.0000000001692}, {"input": [57.5, 80.5], "expected": 80.50000000010262}, {"input": [57.5, 81.0], "expected": 81.00000000006224}, {"input": [57.5, 81.5], "expected": 81.50000000003776}, {"input": [57.5, 82.0], "expected": 82.0000000000229}, {"input": [57.5, 82.5], "expected": 82.50000000001388}, {"input": [57.5, 83.0], "expected": 83.00000000000843}, {"input": [57.5, 83.5], "expected": 83.50000000000512}, {"input": [57.5, 84.0], "expected": 84.0000000000031}, {"input": [57.5, 84.5], "expected": 84.50000000000188}, {"input": [57.5, 85.0], "expected": 85.00000000000114}, {"input": [57.5, 85.5], "expected": 85.5000000000007}, {"input": [57.5, 86.0], "expected": 86.00000000000043}, {"input": [57.5, 86.5], "expected": 86.50000000000026}, {"input": [57.5, 87.0], "expected": 87.00000000000016}, {"input": [57.5, 87.5], "expected": 87.5000000000001}, {"input": [57.5, 88.0], "expected": 88.00000000000006}, {"input": [57.5, 88.5], "expected": 88.50000000000003}, {"input": [57.5, 89.0], "expected": 89.00000000000001}, {"input": [57.5, 89.5], "expected": 89.50000000000001}, {"input": [57.5, 90.0], "expected": 90.00000000000001}, {"input": [57.5, 90.5], "expected": 90.5}, {"input": [57.5, 91.0], "expected": 91.0}, {"input": [57.5, 91.5], "expected": 91.5}, {"input": [57.5, 92.0], "expected": 92.0}, {"input": [57.5, 92.5], "expected": 92.5}, {"input": [57.5, 93.0], "expected": 93.0}, {"input": [57.5, 93.5], "expected": 93.5}, {"input": [57.5, 94.0], "expected": 94.0}, {"input": [57.5, 94.5], "expected": 94.5}, {"input": [57.5, 95.0], "expected": 95.0}, {"input": [57.5, 95.5], "expected": 95.5}, {"input": [57.5, 96.0], "expected": 96.0}, {"input": [57.5, 96.5], "expected": 96.5}, {"input": [57.5, 97.0], "expected": 97.0}, {"input": [57.5, 97.5], "expected": 97.5}, {"input": [57.5, 98.0], "expected": 98.0}, {"input": [57.5, 98.5], "expected": 98.5}, {"input": [57.5, 99.0], "expected": 99.0}, {"input": [57.5, 99.5], "expected": 99.5}, {"input": [58.0, -100.0], "expected": 58.0}, {"input": [58.0, -99.5], "expected": 58.0}, {"input": [58.0, -99.0], "expected": 58.0}, {"input": [58.0, -98.5], "expected": 58.0}, {"input": [58.0, -98.0], "expected": 58.0}, {"input": [58.0, -97.5], "expected": 58.0}, {"input": [58.0, -97.0], "expected": 58.0}, {"input": [58.0, -96.5], "expected": 58.0}, {"input": [58.0, -96.0], "expected": 58.0}, {"input": [58.0, -95.5], "expected": 58.0}, {"input": [58.0, -95.0], "expected": 58.0}, {"input": [58.0, -94.5], "expected": 58.0}, {"input": [58.0, -94.0], "expected": 58.0}, {"input": [58.0, -93.5], "expected": 58.0}, {"input": [58.0, -93.0], "expected": 58.0}, {"input": [58.0, -92.5], "expected": 58.0}, {"input": [58.0, -92.0], "expected": 58.0}, {"input": [58.0, -91.5], "expected": 58.0}, {"input": [58.0, -91.0], "expected": 58.0}, {"input": [58.0, -90.5], "expected": 58.0}, {"input": [58.0, -90.0], "expected": 58.0}, {"input": [58.0, -89.5], "expected": 58.0}, {"input": [58.0, -89.0], "expected": 58.0}, {"input": [58.0, -88.5], "expected": 58.0}, {"input": [58.0, -88.0], "expected": 58.0}, {"input": [58.0, -87.5], "expected": 58.0}, {"input": [58.0, -87.0], "expected": 58.0}, {"input": [58.0, -86.5], "expected": 58.0}, {"input": [58.0, -86.0], "expected": 58.0}, {"input": [58.0, -85.5], "expected": 58.0}, {"input": [58.0, -85.0], "expected": 58.0}, {"input": [58.0, -84.5], "expected": 58.0}, {"input": [58.0, -84.0], "expected": 58.0}, {"input": [58.0, -83.5], "expected": 58.0}, {"input": [58.0, -83.0], "expected": 58.0}, {"input": [58.0, -82.5], "expected": 58.0}, {"input": [58.0, -82.0], "expected": 58.0}, {"input": [58.0, -81.5], "expected": 58.0}, {"input": [58.0, -81.0], "expected": 58.0}, {"input": [58.0, -80.5], "expected": 58.0}, {"input": [58.0, -80.0], "expected": 58.0}, {"input": [58.0, -79.5], "expected": 58.0}, {"input": [58.0, -79.0], "expected": 58.0}, {"input": [58.0, -78.5], "expected": 58.0}, {"input": [58.0, -78.0], "expected": 58.0}, {"input": [58.0, -77.5], "expected": 58.0}, {"input": [58.0, -77.0], "expected": 58.0}, {"input": [58.0, -76.5], "expected": 58.0}, {"input": [58.0, -76.0], "expected": 58.0}, {"input": [58.0, -75.5], "expected": 58.0}, {"input": [58.0, -75.0], "expected": 58.0}, {"input": [58.0, -74.5], "expected": 58.0}, {"input": [58.0, -74.0], "expected": 58.0}, {"input": [58.0, -73.5], "expected": 58.0}, {"input": [58.0, -73.0], "expected": 58.0}, {"input": [58.0, -72.5], "expected": 58.0}, {"input": [58.0, -72.0], "expected": 58.0}, {"input": [58.0, -71.5], "expected": 58.0}, {"input": [58.0, -71.0], "expected": 58.0}, {"input": [58.0, -70.5], "expected": 58.0}, {"input": [58.0, -70.0], "expected": 58.0}, {"input": [58.0, -69.5], "expected": 58.0}, {"input": [58.0, -69.0], "expected": 58.0}, {"input": [58.0, -68.5], "expected": 58.0}, {"input": [58.0, -68.0], "expected": 58.0}, {"input": [58.0, -67.5], "expected": 58.0}, {"input": [58.0, -67.0], "expected": 58.0}, {"input": [58.0, -66.5], "expected": 58.0}, {"input": [58.0, -66.0], "expected": 58.0}, {"input": [58.0, -65.5], "expected": 58.0}, {"input": [58.0, -65.0], "expected": 58.0}, {"input": [58.0, -64.5], "expected": 58.0}, {"input": [58.0, -64.0], "expected": 58.0}, {"input": [58.0, -63.5], "expected": 58.0}, {"input": [58.0, -63.0], "expected": 58.0}, {"input": [58.0, -62.5], "expected": 58.0}, {"input": [58.0, -62.0], "expected": 58.0}, {"input": [58.0, -61.5], "expected": 58.0}, {"input": [58.0, -61.0], "expected": 58.0}, {"input": [58.0, -60.5], "expected": 58.0}, {"input": [58.0, -60.0], "expected": 58.0}, {"input": [58.0, -59.5], "expected": 58.0}, {"input": [58.0, -59.0], "expected": 58.0}, {"input": [58.0, -58.5], "expected": 58.0}, {"input": [58.0, -58.0], "expected": 58.0}, {"input": [58.0, -57.5], "expected": 58.0}, {"input": [58.0, -57.0], "expected": 58.0}, {"input": [58.0, -56.5], "expected": 58.0}, {"input": [58.0, -56.0], "expected": 58.0}, {"input": [58.0, -55.5], "expected": 58.0}, {"input": [58.0, -55.0], "expected": 58.0}, {"input": [58.0, -54.5], "expected": 58.0}, {"input": [58.0, -54.0], "expected": 58.0}, {"input": [58.0, -53.5], "expected": 58.0}, {"input": [58.0, -53.0], "expected": 58.0}, {"input": [58.0, -52.5], "expected": 58.0}, {"input": [58.0, -52.0], "expected": 58.0}, {"input": [58.0, -51.5], "expected": 58.0}, {"input": [58.0, -51.0], "expected": 58.0}, {"input": [58.0, -50.5], "expected": 58.0}, {"input": [58.0, -50.0], "expected": 58.0}, {"input": [58.0, -49.5], "expected": 58.0}, {"input": [58.0, -49.0], "expected": 58.0}, {"input": [58.0, -48.5], "expected": 58.0}, {"input": [58.0, -48.0], "expected": 58.0}, {"input": [58.0, -47.5], "expected": 58.0}, {"input": [58.0, -47.0], "expected": 58.0}, {"input": [58.0, -46.5], "expected": 58.0}, {"input": [58.0, -46.0], "expected": 58.0}, {"input": [58.0, -45.5], "expected": 58.0}, {"input": [58.0, -45.0], "expected": 58.0}, {"input": [58.0, -44.5], "expected": 58.0}, {"input": [58.0, -44.0], "expected": 58.0}, {"input": [58.0, -43.5], "expected": 58.0}, {"input": [58.0, -43.0], "expected": 58.0}, {"input": [58.0, -42.5], "expected": 58.0}, {"input": [58.0, -42.0], "expected": 58.0}, {"input": [58.0, -41.5], "expected": 58.0}, {"input": [58.0, -41.0], "expected": 58.0}, {"input": [58.0, -40.5], "expected": 58.0}, {"input": [58.0, -40.0], "expected": 58.0}, {"input": [58.0, -39.5], "expected": 58.0}, {"input": [58.0, -39.0], "expected": 58.0}, {"input": [58.0, -38.5], "expected": 58.0}, {"input": [58.0, -38.0], "expected": 58.0}, {"input": [58.0, -37.5], "expected": 58.0}, {"input": [58.0, -37.0], "expected": 58.0}, {"input": [58.0, -36.5], "expected": 58.0}, {"input": [58.0, -36.0], "expected": 58.0}, {"input": [58.0, -35.5], "expected": 58.0}, {"input": [58.0, -35.0], "expected": 58.0}, {"input": [58.0, -34.5], "expected": 58.0}, {"input": [58.0, -34.0], "expected": 58.0}, {"input": [58.0, -33.5], "expected": 58.0}, {"input": [58.0, -33.0], "expected": 58.0}, {"input": [58.0, -32.5], "expected": 58.0}, {"input": [58.0, -32.0], "expected": 58.0}, {"input": [58.0, -31.5], "expected": 58.0}, {"input": [58.0, -31.0], "expected": 58.0}, {"input": [58.0, -30.5], "expected": 58.0}, {"input": [58.0, -30.0], "expected": 58.0}, {"input": [58.0, -29.5], "expected": 58.0}, {"input": [58.0, -29.0], "expected": 58.0}, {"input": [58.0, -28.5], "expected": 58.0}, {"input": [58.0, -28.0], "expected": 58.0}, {"input": [58.0, -27.5], "expected": 58.0}, {"input": [58.0, -27.0], "expected": 58.0}, {"input": [58.0, -26.5], "expected": 58.0}, {"input": [58.0, -26.0], "expected": 58.0}, {"input": [58.0, -25.5], "expected": 58.0}, {"input": [58.0, -25.0], "expected": 58.0}, {"input": [58.0, -24.5], "expected": 58.0}, {"input": [58.0, -24.0], "expected": 58.0}, {"input": [58.0, -23.5], "expected": 58.0}, {"input": [58.0, -23.0], "expected": 58.0}, {"input": [58.0, -22.5], "expected": 58.0}, {"input": [58.0, -22.0], "expected": 58.0}, {"input": [58.0, -21.5], "expected": 58.0}, {"input": [58.0, -21.0], "expected": 58.0}, {"input": [58.0, -20.5], "expected": 58.0}, {"input": [58.0, -20.0], "expected": 58.0}, {"input": [58.0, -19.5], "expected": 58.0}, {"input": [58.0, -19.0], "expected": 58.0}, {"input": [58.0, -18.5], "expected": 58.0}, {"input": [58.0, -18.0], "expected": 58.0}, {"input": [58.0, -17.5], "expected": 58.0}, {"input": [58.0, -17.0], "expected": 58.0}, {"input": [58.0, -16.5], "expected": 58.0}, {"input": [58.0, -16.0], "expected": 58.0}, {"input": [58.0, -15.5], "expected": 58.0}, {"input": [58.0, -15.0], "expected": 58.0}, {"input": [58.0, -14.5], "expected": 58.0}, {"input": [58.0, -14.0], "expected": 58.0}, {"input": [58.0, -13.5], "expected": 58.0}, {"input": [58.0, -13.0], "expected": 58.0}, {"input": [58.0, -12.5], "expected": 58.0}, {"input": [58.0, -12.0], "expected": 58.0}, {"input": [58.0, -11.5], "expected": 58.0}, {"input": [58.0, -11.0], "expected": 58.0}, {"input": [58.0, -10.5], "expected": 58.0}, {"input": [58.0, -10.0], "expected": 58.0}, {"input": [58.0, -9.5], "expected": 58.0}, {"input": [58.0, -9.0], "expected": 58.0}, {"input": [58.0, -8.5], "expected": 58.0}, {"input": [58.0, -8.0], "expected": 58.0}, {"input": [58.0, -7.5], "expected": 58.0}, {"input": [58.0, -7.0], "expected": 58.0}, {"input": [58.0, -6.5], "expected": 58.0}, {"input": [58.0, -6.0], "expected": 58.0}, {"input": [58.0, -5.5], "expected": 58.0}, {"input": [58.0, -5.0], "expected": 58.0}, {"input": [58.0, -4.5], "expected": 58.0}, {"input": [58.0, -4.0], "expected": 58.0}, {"input": [58.0, -3.5], "expected": 58.0}, {"input": [58.0, -3.0], "expected": 58.0}, {"input": [58.0, -2.5], "expected": 58.0}, {"input": [58.0, -2.0], "expected": 58.0}, {"input": [58.0, -1.5], "expected": 58.0}, {"input": [58.0, -1.0], "expected": 58.0}, {"input": [58.0, -0.5], "expected": 58.0}, {"input": [58.0, 0.0], "expected": 58.0}, {"input": [58.0, 0.5], "expected": 58.0}, {"input": [58.0, 1.0], "expected": 58.0}, {"input": [58.0, 1.5], "expected": 58.0}, {"input": [58.0, 2.0], "expected": 58.0}, {"input": [58.0, 2.5], "expected": 58.0}, {"input": [58.0, 3.0], "expected": 58.0}, {"input": [58.0, 3.5], "expected": 58.0}, {"input": [58.0, 4.0], "expected": 58.0}, {"input": [58.0, 4.5], "expected": 58.0}, {"input": [58.0, 5.0], "expected": 58.0}, {"input": [58.0, 5.5], "expected": 58.0}, {"input": [58.0, 6.0], "expected": 58.0}, {"input": [58.0, 6.5], "expected": 58.0}, {"input": [58.0, 7.0], "expected": 58.0}, {"input": [58.0, 7.5], "expected": 58.0}, {"input": [58.0, 8.0], "expected": 58.0}, {"input": [58.0, 8.5], "expected": 58.0}, {"input": [58.0, 9.0], "expected": 58.0}, {"input": [58.0, 9.5], "expected": 58.0}, {"input": [58.0, 10.0], "expected": 58.0}, {"input": [58.0, 10.5], "expected": 58.0}, {"input": [58.0, 11.0], "expected": 58.0}, {"input": [58.0, 11.5], "expected": 58.0}, {"input": [58.0, 12.0], "expected": 58.0}, {"input": [58.0, 12.5], "expected": 58.0}, {"input": [58.0, 13.0], "expected": 58.0}, {"input": [58.0, 13.5], "expected": 58.0}, {"input": [58.0, 14.0], "expected": 58.0}, {"input": [58.0, 14.5], "expected": 58.0}, {"input": [58.0, 15.0], "expected": 58.0}, {"input": [58.0, 15.5], "expected": 58.0}, {"input": [58.0, 16.0], "expected": 58.0}, {"input": [58.0, 16.5], "expected": 58.0}, {"input": [58.0, 17.0], "expected": 58.0}, {"input": [58.0, 17.5], "expected": 58.0}, {"input": [58.0, 18.0], "expected": 58.0}, {"input": [58.0, 18.5], "expected": 58.0}, {"input": [58.0, 19.0], "expected": 58.0}, {"input": [58.0, 19.5], "expected": 58.0}, {"input": [58.0, 20.0], "expected": 58.0}, {"input": [58.0, 20.5], "expected": 58.0}, {"input": [58.0, 21.0], "expected": 58.0}, {"input": [58.0, 21.5], "expected": 58.0}, {"input": [58.0, 22.0], "expected": 58.0}, {"input": [58.0, 22.5], "expected": 58.0}, {"input": [58.0, 23.0], "expected": 58.0}, {"input": [58.0, 23.5], "expected": 58.0}, {"input": [58.0, 24.0], "expected": 58.0}, {"input": [58.0, 24.5], "expected": 58.0}, {"input": [58.0, 25.0], "expected": 58.00000000000001}, {"input": [58.0, 25.5], "expected": 58.00000000000001}, {"input": [58.0, 26.0], "expected": 58.000000000000014}, {"input": [58.0, 26.5], "expected": 58.00000000000002}, {"input": [58.0, 27.0], "expected": 58.000000000000036}, {"input": [58.0, 27.5], "expected": 58.00000000000006}, {"input": [58.0, 28.0], "expected": 58.00000000000009}, {"input": [58.0, 28.5], "expected": 58.000000000000156}, {"input": [58.0, 29.0], "expected": 58.000000000000256}, {"input": [58.0, 29.5], "expected": 58.00000000000042}, {"input": [58.0, 30.0], "expected": 58.00000000000069}, {"input": [58.0, 30.5], "expected": 58.00000000000114}, {"input": [58.0, 31.0], "expected": 58.00000000000188}, {"input": [58.0, 31.5], "expected": 58.0000000000031}, {"input": [58.0, 32.0], "expected": 58.00000000000511}, {"input": [58.0, 32.5], "expected": 58.00000000000842}, {"input": [58.0, 33.0], "expected": 58.00000000001389}, {"input": [58.0, 33.5], "expected": 58.0000000000229}, {"input": [58.0, 34.0], "expected": 58.00000000003775}, {"input": [58.0, 34.5], "expected": 58.00000000006224}, {"input": [58.0, 35.0], "expected": 58.00000000010262}, {"input": [58.0, 35.5], "expected": 58.00000000016919}, {"input": [58.0, 36.0], "expected": 58.000000000278945}, {"input": [58.0, 36.5], "expected": 58.000000000459906}, {"input": [58.0, 37.0], "expected": 58.000000000758256}, {"input": [58.0, 37.5], "expected": 58.00000000125015}, {"input": [58.0, 38.0], "expected": 58.00000000206116}, {"input": [58.0, 38.5], "expected": 58.00000000339827}, {"input": [58.0, 39.0], "expected": 58.00000000560279}, {"input": [58.0, 39.5], "expected": 58.000000009237446}, {"input": [58.0, 40.0], "expected": 58.00000001522998}, {"input": [58.0, 40.5], "expected": 58.00000002510999}, {"input": [58.0, 41.0], "expected": 58.000000041399375}, {"input": [58.0, 41.5], "expected": 58.00000006825603}, {"input": [58.0, 42.0], "expected": 58.00000011253517}, {"input": [58.0, 42.5], "expected": 58.00000018553912}, {"input": [58.0, 43.0], "expected": 58.000000305902276}, {"input": [58.0, 43.5], "expected": 58.00000050434753}, {"input": [58.0, 44.0], "expected": 58.000000831528375}, {"input": [58.0, 44.5], "expected": 58.000001370958145}, {"input": [58.0, 45.0], "expected": 58.00000226032685}, {"input": [58.0, 45.5], "expected": 58.00000372664623}, {"input": [58.0, 46.0], "expected": 58.00000614419348}, {"input": [58.0, 46.5], "expected": 58.00001013004229}, {"input": [58.0, 47.0], "expected": 58.00001670156132}, {"input": [58.0, 47.5], "expected": 58.00002753607023}, {"input": [58.0, 48.0], "expected": 58.00004539889922}, {"input": [58.0, 48.5], "expected": 58.00007484902863}, {"input": [58.0, 49.0], "expected": 58.00012340218972}, {"input": [58.0, 49.5], "expected": 58.00020344767213}, {"input": [58.0, 50.0], "expected": 58.0003354063729}, {"input": [58.0, 50.5], "expected": 58.00055293147536}, {"input": [58.0, 51.0], "expected": 58.00091146645377}, {"input": [58.0, 51.5], "expected": 58.00150231015976}, {"input": [58.0, 52.0], "expected": 58.00247568513773}, {"input": [58.0, 52.5], "expected": 58.00407844327057}, {"input": [58.0, 53.0], "expected": 58.00671534848912}, {"input": [58.0, 53.5], "expected": 58.0110477448486}, {"input": [58.0, 54.0], "expected": 58.01814992791781}, {"input": [58.0, 54.5], "expected": 58.02975041827262}, {"input": [58.0, 55.0], "expected": 58.048587351573744}, {"input": [58.0, 55.5], "expected": 58.07888973429255}, {"input": [58.0, 56.0], "expected": 58.12692801104297}, {"input": [58.0, 56.5], "expected": 58.20141327798275}, {"input": [58.0, 57.0], "expected": 58.31326168751822}, {"input": [58.0, 57.5], "expected": 58.47407698418011}, {"input": [58.0, 58.0], "expected": 58.69314718055995}, {"input": [58.0, 58.5], "expected": 58.97407698418011}, {"input": [58.0, 59.0], "expected": 59.31326168751822}, {"input": [58.0, 59.5], "expected": 59.70141327798275}, {"input": [58.0, 60.0], "expected": 60.12692801104297}, {"input": [58.0, 60.5], "expected": 60.57888973429255}, {"input": [58.0, 61.0], "expected": 61.048587351573744}, {"input": [58.0, 61.5], "expected": 61.52975041827262}, {"input": [58.0, 62.0], "expected": 62.01814992791781}, {"input": [58.0, 62.5], "expected": 62.5110477448486}, {"input": [58.0, 63.0], "expected": 63.00671534848912}, {"input": [58.0, 63.5], "expected": 63.50407844327057}, {"input": [58.0, 64.0], "expected": 64.00247568513772}, {"input": [58.0, 64.5], "expected": 64.50150231015975}, {"input": [58.0, 65.0], "expected": 65.00091146645377}, {"input": [58.0, 65.5], "expected": 65.50055293147535}, {"input": [58.0, 66.0], "expected": 66.0003354063729}, {"input": [58.0, 66.5], "expected": 66.50020344767213}, {"input": [58.0, 67.0], "expected": 67.00012340218973}, {"input": [58.0, 67.5], "expected": 67.50007484902864}, {"input": [58.0, 68.0], "expected": 68.00004539889922}, {"input": [58.0, 68.5], "expected": 68.50002753607023}, {"input": [58.0, 69.0], "expected": 69.00001670156132}, {"input": [58.0, 69.5], "expected": 69.50001013004228}, {"input": [58.0, 70.0], "expected": 70.00000614419348}, {"input": [58.0, 70.5], "expected": 70.50000372664623}, {"input": [58.0, 71.0], "expected": 71.00000226032685}, {"input": [58.0, 71.5], "expected": 71.50000137095815}, {"input": [58.0, 72.0], "expected": 72.00000083152837}, {"input": [58.0, 72.5], "expected": 72.50000050434754}, {"input": [58.0, 73.0], "expected": 73.00000030590228}, {"input": [58.0, 73.5], "expected": 73.50000018553912}, {"input": [58.0, 74.0], "expected": 74.00000011253516}, {"input": [58.0, 74.5], "expected": 74.50000006825603}, {"input": [58.0, 75.0], "expected": 75.00000004139937}, {"input": [58.0, 75.5], "expected": 75.50000002511}, {"input": [58.0, 76.0], "expected": 76.00000001522999}, {"input": [58.0, 76.5], "expected": 76.50000000923745}, {"input": [58.0, 77.0], "expected": 77.0000000056028}, {"input": [58.0, 77.5], "expected": 77.50000000339827}, {"input": [58.0, 78.0], "expected": 78.00000000206116}, {"input": [58.0, 78.5], "expected": 78.50000000125016}, {"input": [58.0, 79.0], "expected": 79.00000000075826}, {"input": [58.0, 79.5], "expected": 79.5000000004599}, {"input": [58.0, 80.0], "expected": 80.00000000027894}, {"input": [58.0, 80.5], "expected": 80.5000000001692}, {"input": [58.0, 81.0], "expected": 81.00000000010262}, {"input": [58.0, 81.5], "expected": 81.50000000006224}, {"input": [58.0, 82.0], "expected": 82.00000000003776}, {"input": [58.0, 82.5], "expected": 82.5000000000229}, {"input": [58.0, 83.0], "expected": 83.00000000001388}, {"input": [58.0, 83.5], "expected": 83.50000000000843}, {"input": [58.0, 84.0], "expected": 84.00000000000512}, {"input": [58.0, 84.5], "expected": 84.5000000000031}, {"input": [58.0, 85.0], "expected": 85.00000000000188}, {"input": [58.0, 85.5], "expected": 85.50000000000114}, {"input": [58.0, 86.0], "expected": 86.0000000000007}, {"input": [58.0, 86.5], "expected": 86.50000000000043}, {"input": [58.0, 87.0], "expected": 87.00000000000026}, {"input": [58.0, 87.5], "expected": 87.50000000000016}, {"input": [58.0, 88.0], "expected": 88.0000000000001}, {"input": [58.0, 88.5], "expected": 88.50000000000006}, {"input": [58.0, 89.0], "expected": 89.00000000000003}, {"input": [58.0, 89.5], "expected": 89.50000000000001}, {"input": [58.0, 90.0], "expected": 90.00000000000001}, {"input": [58.0, 90.5], "expected": 90.50000000000001}, {"input": [58.0, 91.0], "expected": 91.0}, {"input": [58.0, 91.5], "expected": 91.5}, {"input": [58.0, 92.0], "expected": 92.0}, {"input": [58.0, 92.5], "expected": 92.5}, {"input": [58.0, 93.0], "expected": 93.0}, {"input": [58.0, 93.5], "expected": 93.5}, {"input": [58.0, 94.0], "expected": 94.0}, {"input": [58.0, 94.5], "expected": 94.5}, {"input": [58.0, 95.0], "expected": 95.0}, {"input": [58.0, 95.5], "expected": 95.5}, {"input": [58.0, 96.0], "expected": 96.0}, {"input": [58.0, 96.5], "expected": 96.5}, {"input": [58.0, 97.0], "expected": 97.0}, {"input": [58.0, 97.5], "expected": 97.5}, {"input": [58.0, 98.0], "expected": 98.0}, {"input": [58.0, 98.5], "expected": 98.5}, {"input": [58.0, 99.0], "expected": 99.0}, {"input": [58.0, 99.5], "expected": 99.5}, {"input": [58.5, -100.0], "expected": 58.5}, {"input": [58.5, -99.5], "expected": 58.5}, {"input": [58.5, -99.0], "expected": 58.5}, {"input": [58.5, -98.5], "expected": 58.5}, {"input": [58.5, -98.0], "expected": 58.5}, {"input": [58.5, -97.5], "expected": 58.5}, {"input": [58.5, -97.0], "expected": 58.5}, {"input": [58.5, -96.5], "expected": 58.5}, {"input": [58.5, -96.0], "expected": 58.5}, {"input": [58.5, -95.5], "expected": 58.5}, {"input": [58.5, -95.0], "expected": 58.5}, {"input": [58.5, -94.5], "expected": 58.5}, {"input": [58.5, -94.0], "expected": 58.5}, {"input": [58.5, -93.5], "expected": 58.5}, {"input": [58.5, -93.0], "expected": 58.5}, {"input": [58.5, -92.5], "expected": 58.5}, {"input": [58.5, -92.0], "expected": 58.5}, {"input": [58.5, -91.5], "expected": 58.5}, {"input": [58.5, -91.0], "expected": 58.5}, {"input": [58.5, -90.5], "expected": 58.5}, {"input": [58.5, -90.0], "expected": 58.5}, {"input": [58.5, -89.5], "expected": 58.5}, {"input": [58.5, -89.0], "expected": 58.5}, {"input": [58.5, -88.5], "expected": 58.5}, {"input": [58.5, -88.0], "expected": 58.5}, {"input": [58.5, -87.5], "expected": 58.5}, {"input": [58.5, -87.0], "expected": 58.5}, {"input": [58.5, -86.5], "expected": 58.5}, {"input": [58.5, -86.0], "expected": 58.5}, {"input": [58.5, -85.5], "expected": 58.5}, {"input": [58.5, -85.0], "expected": 58.5}, {"input": [58.5, -84.5], "expected": 58.5}, {"input": [58.5, -84.0], "expected": 58.5}, {"input": [58.5, -83.5], "expected": 58.5}, {"input": [58.5, -83.0], "expected": 58.5}, {"input": [58.5, -82.5], "expected": 58.5}, {"input": [58.5, -82.0], "expected": 58.5}, {"input": [58.5, -81.5], "expected": 58.5}, {"input": [58.5, -81.0], "expected": 58.5}, {"input": [58.5, -80.5], "expected": 58.5}, {"input": [58.5, -80.0], "expected": 58.5}, {"input": [58.5, -79.5], "expected": 58.5}, {"input": [58.5, -79.0], "expected": 58.5}, {"input": [58.5, -78.5], "expected": 58.5}, {"input": [58.5, -78.0], "expected": 58.5}, {"input": [58.5, -77.5], "expected": 58.5}, {"input": [58.5, -77.0], "expected": 58.5}, {"input": [58.5, -76.5], "expected": 58.5}, {"input": [58.5, -76.0], "expected": 58.5}, {"input": [58.5, -75.5], "expected": 58.5}, {"input": [58.5, -75.0], "expected": 58.5}, {"input": [58.5, -74.5], "expected": 58.5}, {"input": [58.5, -74.0], "expected": 58.5}, {"input": [58.5, -73.5], "expected": 58.5}, {"input": [58.5, -73.0], "expected": 58.5}, {"input": [58.5, -72.5], "expected": 58.5}, {"input": [58.5, -72.0], "expected": 58.5}, {"input": [58.5, -71.5], "expected": 58.5}, {"input": [58.5, -71.0], "expected": 58.5}, {"input": [58.5, -70.5], "expected": 58.5}, {"input": [58.5, -70.0], "expected": 58.5}, {"input": [58.5, -69.5], "expected": 58.5}, {"input": [58.5, -69.0], "expected": 58.5}, {"input": [58.5, -68.5], "expected": 58.5}, {"input": [58.5, -68.0], "expected": 58.5}, {"input": [58.5, -67.5], "expected": 58.5}, {"input": [58.5, -67.0], "expected": 58.5}, {"input": [58.5, -66.5], "expected": 58.5}, {"input": [58.5, -66.0], "expected": 58.5}, {"input": [58.5, -65.5], "expected": 58.5}, {"input": [58.5, -65.0], "expected": 58.5}, {"input": [58.5, -64.5], "expected": 58.5}, {"input": [58.5, -64.0], "expected": 58.5}, {"input": [58.5, -63.5], "expected": 58.5}, {"input": [58.5, -63.0], "expected": 58.5}, {"input": [58.5, -62.5], "expected": 58.5}, {"input": [58.5, -62.0], "expected": 58.5}, {"input": [58.5, -61.5], "expected": 58.5}, {"input": [58.5, -61.0], "expected": 58.5}, {"input": [58.5, -60.5], "expected": 58.5}, {"input": [58.5, -60.0], "expected": 58.5}, {"input": [58.5, -59.5], "expected": 58.5}, {"input": [58.5, -59.0], "expected": 58.5}, {"input": [58.5, -58.5], "expected": 58.5}, {"input": [58.5, -58.0], "expected": 58.5}, {"input": [58.5, -57.5], "expected": 58.5}, {"input": [58.5, -57.0], "expected": 58.5}, {"input": [58.5, -56.5], "expected": 58.5}, {"input": [58.5, -56.0], "expected": 58.5}, {"input": [58.5, -55.5], "expected": 58.5}, {"input": [58.5, -55.0], "expected": 58.5}, {"input": [58.5, -54.5], "expected": 58.5}, {"input": [58.5, -54.0], "expected": 58.5}, {"input": [58.5, -53.5], "expected": 58.5}, {"input": [58.5, -53.0], "expected": 58.5}, {"input": [58.5, -52.5], "expected": 58.5}, {"input": [58.5, -52.0], "expected": 58.5}, {"input": [58.5, -51.5], "expected": 58.5}, {"input": [58.5, -51.0], "expected": 58.5}, {"input": [58.5, -50.5], "expected": 58.5}, {"input": [58.5, -50.0], "expected": 58.5}, {"input": [58.5, -49.5], "expected": 58.5}, {"input": [58.5, -49.0], "expected": 58.5}, {"input": [58.5, -48.5], "expected": 58.5}, {"input": [58.5, -48.0], "expected": 58.5}, {"input": [58.5, -47.5], "expected": 58.5}, {"input": [58.5, -47.0], "expected": 58.5}, {"input": [58.5, -46.5], "expected": 58.5}, {"input": [58.5, -46.0], "expected": 58.5}, {"input": [58.5, -45.5], "expected": 58.5}, {"input": [58.5, -45.0], "expected": 58.5}, {"input": [58.5, -44.5], "expected": 58.5}, {"input": [58.5, -44.0], "expected": 58.5}, {"input": [58.5, -43.5], "expected": 58.5}, {"input": [58.5, -43.0], "expected": 58.5}, {"input": [58.5, -42.5], "expected": 58.5}, {"input": [58.5, -42.0], "expected": 58.5}, {"input": [58.5, -41.5], "expected": 58.5}, {"input": [58.5, -41.0], "expected": 58.5}, {"input": [58.5, -40.5], "expected": 58.5}, {"input": [58.5, -40.0], "expected": 58.5}, {"input": [58.5, -39.5], "expected": 58.5}, {"input": [58.5, -39.0], "expected": 58.5}, {"input": [58.5, -38.5], "expected": 58.5}, {"input": [58.5, -38.0], "expected": 58.5}, {"input": [58.5, -37.5], "expected": 58.5}, {"input": [58.5, -37.0], "expected": 58.5}, {"input": [58.5, -36.5], "expected": 58.5}, {"input": [58.5, -36.0], "expected": 58.5}, {"input": [58.5, -35.5], "expected": 58.5}, {"input": [58.5, -35.0], "expected": 58.5}, {"input": [58.5, -34.5], "expected": 58.5}, {"input": [58.5, -34.0], "expected": 58.5}, {"input": [58.5, -33.5], "expected": 58.5}, {"input": [58.5, -33.0], "expected": 58.5}, {"input": [58.5, -32.5], "expected": 58.5}, {"input": [58.5, -32.0], "expected": 58.5}, {"input": [58.5, -31.5], "expected": 58.5}, {"input": [58.5, -31.0], "expected": 58.5}, {"input": [58.5, -30.5], "expected": 58.5}, {"input": [58.5, -30.0], "expected": 58.5}, {"input": [58.5, -29.5], "expected": 58.5}, {"input": [58.5, -29.0], "expected": 58.5}, {"input": [58.5, -28.5], "expected": 58.5}, {"input": [58.5, -28.0], "expected": 58.5}, {"input": [58.5, -27.5], "expected": 58.5}, {"input": [58.5, -27.0], "expected": 58.5}, {"input": [58.5, -26.5], "expected": 58.5}, {"input": [58.5, -26.0], "expected": 58.5}, {"input": [58.5, -25.5], "expected": 58.5}, {"input": [58.5, -25.0], "expected": 58.5}, {"input": [58.5, -24.5], "expected": 58.5}, {"input": [58.5, -24.0], "expected": 58.5}, {"input": [58.5, -23.5], "expected": 58.5}, {"input": [58.5, -23.0], "expected": 58.5}, {"input": [58.5, -22.5], "expected": 58.5}, {"input": [58.5, -22.0], "expected": 58.5}, {"input": [58.5, -21.5], "expected": 58.5}, {"input": [58.5, -21.0], "expected": 58.5}, {"input": [58.5, -20.5], "expected": 58.5}, {"input": [58.5, -20.0], "expected": 58.5}, {"input": [58.5, -19.5], "expected": 58.5}, {"input": [58.5, -19.0], "expected": 58.5}, {"input": [58.5, -18.5], "expected": 58.5}, {"input": [58.5, -18.0], "expected": 58.5}, {"input": [58.5, -17.5], "expected": 58.5}, {"input": [58.5, -17.0], "expected": 58.5}, {"input": [58.5, -16.5], "expected": 58.5}, {"input": [58.5, -16.0], "expected": 58.5}, {"input": [58.5, -15.5], "expected": 58.5}, {"input": [58.5, -15.0], "expected": 58.5}, {"input": [58.5, -14.5], "expected": 58.5}, {"input": [58.5, -14.0], "expected": 58.5}, {"input": [58.5, -13.5], "expected": 58.5}, {"input": [58.5, -13.0], "expected": 58.5}, {"input": [58.5, -12.5], "expected": 58.5}, {"input": [58.5, -12.0], "expected": 58.5}, {"input": [58.5, -11.5], "expected": 58.5}, {"input": [58.5, -11.0], "expected": 58.5}, {"input": [58.5, -10.5], "expected": 58.5}, {"input": [58.5, -10.0], "expected": 58.5}, {"input": [58.5, -9.5], "expected": 58.5}, {"input": [58.5, -9.0], "expected": 58.5}, {"input": [58.5, -8.5], "expected": 58.5}, {"input": [58.5, -8.0], "expected": 58.5}, {"input": [58.5, -7.5], "expected": 58.5}, {"input": [58.5, -7.0], "expected": 58.5}, {"input": [58.5, -6.5], "expected": 58.5}, {"input": [58.5, -6.0], "expected": 58.5}, {"input": [58.5, -5.5], "expected": 58.5}, {"input": [58.5, -5.0], "expected": 58.5}, {"input": [58.5, -4.5], "expected": 58.5}, {"input": [58.5, -4.0], "expected": 58.5}, {"input": [58.5, -3.5], "expected": 58.5}, {"input": [58.5, -3.0], "expected": 58.5}, {"input": [58.5, -2.5], "expected": 58.5}, {"input": [58.5, -2.0], "expected": 58.5}, {"input": [58.5, -1.5], "expected": 58.5}, {"input": [58.5, -1.0], "expected": 58.5}, {"input": [58.5, -0.5], "expected": 58.5}, {"input": [58.5, 0.0], "expected": 58.5}, {"input": [58.5, 0.5], "expected": 58.5}, {"input": [58.5, 1.0], "expected": 58.5}, {"input": [58.5, 1.5], "expected": 58.5}, {"input": [58.5, 2.0], "expected": 58.5}, {"input": [58.5, 2.5], "expected": 58.5}, {"input": [58.5, 3.0], "expected": 58.5}, {"input": [58.5, 3.5], "expected": 58.5}, {"input": [58.5, 4.0], "expected": 58.5}, {"input": [58.5, 4.5], "expected": 58.5}, {"input": [58.5, 5.0], "expected": 58.5}, {"input": [58.5, 5.5], "expected": 58.5}, {"input": [58.5, 6.0], "expected": 58.5}, {"input": [58.5, 6.5], "expected": 58.5}, {"input": [58.5, 7.0], "expected": 58.5}, {"input": [58.5, 7.5], "expected": 58.5}, {"input": [58.5, 8.0], "expected": 58.5}, {"input": [58.5, 8.5], "expected": 58.5}, {"input": [58.5, 9.0], "expected": 58.5}, {"input": [58.5, 9.5], "expected": 58.5}, {"input": [58.5, 10.0], "expected": 58.5}, {"input": [58.5, 10.5], "expected": 58.5}, {"input": [58.5, 11.0], "expected": 58.5}, {"input": [58.5, 11.5], "expected": 58.5}, {"input": [58.5, 12.0], "expected": 58.5}, {"input": [58.5, 12.5], "expected": 58.5}, {"input": [58.5, 13.0], "expected": 58.5}, {"input": [58.5, 13.5], "expected": 58.5}, {"input": [58.5, 14.0], "expected": 58.5}, {"input": [58.5, 14.5], "expected": 58.5}, {"input": [58.5, 15.0], "expected": 58.5}, {"input": [58.5, 15.5], "expected": 58.5}, {"input": [58.5, 16.0], "expected": 58.5}, {"input": [58.5, 16.5], "expected": 58.5}, {"input": [58.5, 17.0], "expected": 58.5}, {"input": [58.5, 17.5], "expected": 58.5}, {"input": [58.5, 18.0], "expected": 58.5}, {"input": [58.5, 18.5], "expected": 58.5}, {"input": [58.5, 19.0], "expected": 58.5}, {"input": [58.5, 19.5], "expected": 58.5}, {"input": [58.5, 20.0], "expected": 58.5}, {"input": [58.5, 20.5], "expected": 58.5}, {"input": [58.5, 21.0], "expected": 58.5}, {"input": [58.5, 21.5], "expected": 58.5}, {"input": [58.5, 22.0], "expected": 58.5}, {"input": [58.5, 22.5], "expected": 58.5}, {"input": [58.5, 23.0], "expected": 58.5}, {"input": [58.5, 23.5], "expected": 58.5}, {"input": [58.5, 24.0], "expected": 58.5}, {"input": [58.5, 24.5], "expected": 58.5}, {"input": [58.5, 25.0], "expected": 58.5}, {"input": [58.5, 25.5], "expected": 58.50000000000001}, {"input": [58.5, 26.0], "expected": 58.50000000000001}, {"input": [58.5, 26.5], "expected": 58.500000000000014}, {"input": [58.5, 27.0], "expected": 58.50000000000002}, {"input": [58.5, 27.5], "expected": 58.500000000000036}, {"input": [58.5, 28.0], "expected": 58.50000000000006}, {"input": [58.5, 28.5], "expected": 58.50000000000009}, {"input": [58.5, 29.0], "expected": 58.500000000000156}, {"input": [58.5, 29.5], "expected": 58.500000000000256}, {"input": [58.5, 30.0], "expected": 58.50000000000042}, {"input": [58.5, 30.5], "expected": 58.50000000000069}, {"input": [58.5, 31.0], "expected": 58.50000000000114}, {"input": [58.5, 31.5], "expected": 58.50000000000188}, {"input": [58.5, 32.0], "expected": 58.5000000000031}, {"input": [58.5, 32.5], "expected": 58.50000000000511}, {"input": [58.5, 33.0], "expected": 58.50000000000842}, {"input": [58.5, 33.5], "expected": 58.50000000001389}, {"input": [58.5, 34.0], "expected": 58.5000000000229}, {"input": [58.5, 34.5], "expected": 58.50000000003775}, {"input": [58.5, 35.0], "expected": 58.50000000006224}, {"input": [58.5, 35.5], "expected": 58.50000000010262}, {"input": [58.5, 36.0], "expected": 58.50000000016919}, {"input": [58.5, 36.5], "expected": 58.500000000278945}, {"input": [58.5, 37.0], "expected": 58.500000000459906}, {"input": [58.5, 37.5], "expected": 58.500000000758256}, {"input": [58.5, 38.0], "expected": 58.50000000125015}, {"input": [58.5, 38.5], "expected": 58.50000000206116}, {"input": [58.5, 39.0], "expected": 58.50000000339827}, {"input": [58.5, 39.5], "expected": 58.50000000560279}, {"input": [58.5, 40.0], "expected": 58.500000009237446}, {"input": [58.5, 40.5], "expected": 58.50000001522998}, {"input": [58.5, 41.0], "expected": 58.50000002510999}, {"input": [58.5, 41.5], "expected": 58.500000041399375}, {"input": [58.5, 42.0], "expected": 58.50000006825603}, {"input": [58.5, 42.5], "expected": 58.50000011253517}, {"input": [58.5, 43.0], "expected": 58.50000018553912}, {"input": [58.5, 43.5], "expected": 58.500000305902276}, {"input": [58.5, 44.0], "expected": 58.50000050434753}, {"input": [58.5, 44.5], "expected": 58.500000831528375}, {"input": [58.5, 45.0], "expected": 58.500001370958145}, {"input": [58.5, 45.5], "expected": 58.50000226032685}, {"input": [58.5, 46.0], "expected": 58.50000372664623}, {"input": [58.5, 46.5], "expected": 58.50000614419348}, {"input": [58.5, 47.0], "expected": 58.50001013004229}, {"input": [58.5, 47.5], "expected": 58.50001670156132}, {"input": [58.5, 48.0], "expected": 58.50002753607023}, {"input": [58.5, 48.5], "expected": 58.50004539889922}, {"input": [58.5, 49.0], "expected": 58.50007484902863}, {"input": [58.5, 49.5], "expected": 58.50012340218972}, {"input": [58.5, 50.0], "expected": 58.50020344767213}, {"input": [58.5, 50.5], "expected": 58.5003354063729}, {"input": [58.5, 51.0], "expected": 58.50055293147536}, {"input": [58.5, 51.5], "expected": 58.50091146645377}, {"input": [58.5, 52.0], "expected": 58.50150231015976}, {"input": [58.5, 52.5], "expected": 58.50247568513773}, {"input": [58.5, 53.0], "expected": 58.50407844327057}, {"input": [58.5, 53.5], "expected": 58.50671534848912}, {"input": [58.5, 54.0], "expected": 58.5110477448486}, {"input": [58.5, 54.5], "expected": 58.51814992791781}, {"input": [58.5, 55.0], "expected": 58.52975041827262}, {"input": [58.5, 55.5], "expected": 58.548587351573744}, {"input": [58.5, 56.0], "expected": 58.57888973429255}, {"input": [58.5, 56.5], "expected": 58.62692801104297}, {"input": [58.5, 57.0], "expected": 58.70141327798275}, {"input": [58.5, 57.5], "expected": 58.81326168751822}, {"input": [58.5, 58.0], "expected": 58.97407698418011}, {"input": [58.5, 58.5], "expected": 59.19314718055995}, {"input": [58.5, 59.0], "expected": 59.47407698418011}, {"input": [58.5, 59.5], "expected": 59.81326168751822}, {"input": [58.5, 60.0], "expected": 60.20141327798275}, {"input": [58.5, 60.5], "expected": 60.62692801104297}, {"input": [58.5, 61.0], "expected": 61.07888973429255}, {"input": [58.5, 61.5], "expected": 61.548587351573744}, {"input": [58.5, 62.0], "expected": 62.02975041827262}, {"input": [58.5, 62.5], "expected": 62.51814992791781}, {"input": [58.5, 63.0], "expected": 63.0110477448486}, {"input": [58.5, 63.5], "expected": 63.50671534848912}, {"input": [58.5, 64.0], "expected": 64.00407844327057}, {"input": [58.5, 64.5], "expected": 64.50247568513772}, {"input": [58.5, 65.0], "expected": 65.00150231015975}, {"input": [58.5, 65.5], "expected": 65.50091146645377}, {"input": [58.5, 66.0], "expected": 66.00055293147535}, {"input": [58.5, 66.5], "expected": 66.5003354063729}, {"input": [58.5, 67.0], "expected": 67.00020344767213}, {"input": [58.5, 67.5], "expected": 67.50012340218973}, {"input": [58.5, 68.0], "expected": 68.00007484902864}, {"input": [58.5, 68.5], "expected": 68.50004539889922}, {"input": [58.5, 69.0], "expected": 69.00002753607023}, {"input": [58.5, 69.5], "expected": 69.50001670156132}, {"input": [58.5, 70.0], "expected": 70.00001013004228}, {"input": [58.5, 70.5], "expected": 70.50000614419348}, {"input": [58.5, 71.0], "expected": 71.00000372664623}, {"input": [58.5, 71.5], "expected": 71.50000226032685}, {"input": [58.5, 72.0], "expected": 72.00000137095815}, {"input": [58.5, 72.5], "expected": 72.50000083152837}, {"input": [58.5, 73.0], "expected": 73.00000050434754}, {"input": [58.5, 73.5], "expected": 73.50000030590228}, {"input": [58.5, 74.0], "expected": 74.00000018553912}, {"input": [58.5, 74.5], "expected": 74.50000011253516}, {"input": [58.5, 75.0], "expected": 75.00000006825603}, {"input": [58.5, 75.5], "expected": 75.50000004139937}, {"input": [58.5, 76.0], "expected": 76.00000002511}, {"input": [58.5, 76.5], "expected": 76.50000001522999}, {"input": [58.5, 77.0], "expected": 77.00000000923745}, {"input": [58.5, 77.5], "expected": 77.5000000056028}, {"input": [58.5, 78.0], "expected": 78.00000000339827}, {"input": [58.5, 78.5], "expected": 78.50000000206116}, {"input": [58.5, 79.0], "expected": 79.00000000125016}, {"input": [58.5, 79.5], "expected": 79.50000000075826}, {"input": [58.5, 80.0], "expected": 80.0000000004599}, {"input": [58.5, 80.5], "expected": 80.50000000027894}, {"input": [58.5, 81.0], "expected": 81.0000000001692}, {"input": [58.5, 81.5], "expected": 81.50000000010262}, {"input": [58.5, 82.0], "expected": 82.00000000006224}, {"input": [58.5, 82.5], "expected": 82.50000000003776}, {"input": [58.5, 83.0], "expected": 83.0000000000229}, {"input": [58.5, 83.5], "expected": 83.50000000001388}, {"input": [58.5, 84.0], "expected": 84.00000000000843}, {"input": [58.5, 84.5], "expected": 84.50000000000512}, {"input": [58.5, 85.0], "expected": 85.0000000000031}, {"input": [58.5, 85.5], "expected": 85.50000000000188}, {"input": [58.5, 86.0], "expected": 86.00000000000114}, {"input": [58.5, 86.5], "expected": 86.5000000000007}, {"input": [58.5, 87.0], "expected": 87.00000000000043}, {"input": [58.5, 87.5], "expected": 87.50000000000026}, {"input": [58.5, 88.0], "expected": 88.00000000000016}, {"input": [58.5, 88.5], "expected": 88.5000000000001}, {"input": [58.5, 89.0], "expected": 89.00000000000006}, {"input": [58.5, 89.5], "expected": 89.50000000000003}, {"input": [58.5, 90.0], "expected": 90.00000000000001}, {"input": [58.5, 90.5], "expected": 90.50000000000001}, {"input": [58.5, 91.0], "expected": 91.00000000000001}, {"input": [58.5, 91.5], "expected": 91.5}, {"input": [58.5, 92.0], "expected": 92.0}, {"input": [58.5, 92.5], "expected": 92.5}, {"input": [58.5, 93.0], "expected": 93.0}, {"input": [58.5, 93.5], "expected": 93.5}, {"input": [58.5, 94.0], "expected": 94.0}, {"input": [58.5, 94.5], "expected": 94.5}, {"input": [58.5, 95.0], "expected": 95.0}, {"input": [58.5, 95.5], "expected": 95.5}, {"input": [58.5, 96.0], "expected": 96.0}, {"input": [58.5, 96.5], "expected": 96.5}, {"input": [58.5, 97.0], "expected": 97.0}, {"input": [58.5, 97.5], "expected": 97.5}, {"input": [58.5, 98.0], "expected": 98.0}, {"input": [58.5, 98.5], "expected": 98.5}, {"input": [58.5, 99.0], "expected": 99.0}, {"input": [58.5, 99.5], "expected": 99.5}, {"input": [59.0, -100.0], "expected": 59.0}, {"input": [59.0, -99.5], "expected": 59.0}, {"input": [59.0, -99.0], "expected": 59.0}, {"input": [59.0, -98.5], "expected": 59.0}, {"input": [59.0, -98.0], "expected": 59.0}, {"input": [59.0, -97.5], "expected": 59.0}, {"input": [59.0, -97.0], "expected": 59.0}, {"input": [59.0, -96.5], "expected": 59.0}, {"input": [59.0, -96.0], "expected": 59.0}, {"input": [59.0, -95.5], "expected": 59.0}, {"input": [59.0, -95.0], "expected": 59.0}, {"input": [59.0, -94.5], "expected": 59.0}, {"input": [59.0, -94.0], "expected": 59.0}, {"input": [59.0, -93.5], "expected": 59.0}, {"input": [59.0, -93.0], "expected": 59.0}, {"input": [59.0, -92.5], "expected": 59.0}, {"input": [59.0, -92.0], "expected": 59.0}, {"input": [59.0, -91.5], "expected": 59.0}, {"input": [59.0, -91.0], "expected": 59.0}, {"input": [59.0, -90.5], "expected": 59.0}, {"input": [59.0, -90.0], "expected": 59.0}, {"input": [59.0, -89.5], "expected": 59.0}, {"input": [59.0, -89.0], "expected": 59.0}, {"input": [59.0, -88.5], "expected": 59.0}, {"input": [59.0, -88.0], "expected": 59.0}, {"input": [59.0, -87.5], "expected": 59.0}, {"input": [59.0, -87.0], "expected": 59.0}, {"input": [59.0, -86.5], "expected": 59.0}, {"input": [59.0, -86.0], "expected": 59.0}, {"input": [59.0, -85.5], "expected": 59.0}, {"input": [59.0, -85.0], "expected": 59.0}, {"input": [59.0, -84.5], "expected": 59.0}, {"input": [59.0, -84.0], "expected": 59.0}, {"input": [59.0, -83.5], "expected": 59.0}, {"input": [59.0, -83.0], "expected": 59.0}, {"input": [59.0, -82.5], "expected": 59.0}, {"input": [59.0, -82.0], "expected": 59.0}, {"input": [59.0, -81.5], "expected": 59.0}, {"input": [59.0, -81.0], "expected": 59.0}, {"input": [59.0, -80.5], "expected": 59.0}, {"input": [59.0, -80.0], "expected": 59.0}, {"input": [59.0, -79.5], "expected": 59.0}, {"input": [59.0, -79.0], "expected": 59.0}, {"input": [59.0, -78.5], "expected": 59.0}, {"input": [59.0, -78.0], "expected": 59.0}, {"input": [59.0, -77.5], "expected": 59.0}, {"input": [59.0, -77.0], "expected": 59.0}, {"input": [59.0, -76.5], "expected": 59.0}, {"input": [59.0, -76.0], "expected": 59.0}, {"input": [59.0, -75.5], "expected": 59.0}, {"input": [59.0, -75.0], "expected": 59.0}, {"input": [59.0, -74.5], "expected": 59.0}, {"input": [59.0, -74.0], "expected": 59.0}, {"input": [59.0, -73.5], "expected": 59.0}, {"input": [59.0, -73.0], "expected": 59.0}, {"input": [59.0, -72.5], "expected": 59.0}, {"input": [59.0, -72.0], "expected": 59.0}, {"input": [59.0, -71.5], "expected": 59.0}, {"input": [59.0, -71.0], "expected": 59.0}, {"input": [59.0, -70.5], "expected": 59.0}, {"input": [59.0, -70.0], "expected": 59.0}, {"input": [59.0, -69.5], "expected": 59.0}, {"input": [59.0, -69.0], "expected": 59.0}, {"input": [59.0, -68.5], "expected": 59.0}, {"input": [59.0, -68.0], "expected": 59.0}, {"input": [59.0, -67.5], "expected": 59.0}, {"input": [59.0, -67.0], "expected": 59.0}, {"input": [59.0, -66.5], "expected": 59.0}, {"input": [59.0, -66.0], "expected": 59.0}, {"input": [59.0, -65.5], "expected": 59.0}, {"input": [59.0, -65.0], "expected": 59.0}, {"input": [59.0, -64.5], "expected": 59.0}, {"input": [59.0, -64.0], "expected": 59.0}, {"input": [59.0, -63.5], "expected": 59.0}, {"input": [59.0, -63.0], "expected": 59.0}, {"input": [59.0, -62.5], "expected": 59.0}, {"input": [59.0, -62.0], "expected": 59.0}, {"input": [59.0, -61.5], "expected": 59.0}, {"input": [59.0, -61.0], "expected": 59.0}, {"input": [59.0, -60.5], "expected": 59.0}, {"input": [59.0, -60.0], "expected": 59.0}, {"input": [59.0, -59.5], "expected": 59.0}, {"input": [59.0, -59.0], "expected": 59.0}, {"input": [59.0, -58.5], "expected": 59.0}, {"input": [59.0, -58.0], "expected": 59.0}, {"input": [59.0, -57.5], "expected": 59.0}, {"input": [59.0, -57.0], "expected": 59.0}, {"input": [59.0, -56.5], "expected": 59.0}, {"input": [59.0, -56.0], "expected": 59.0}, {"input": [59.0, -55.5], "expected": 59.0}, {"input": [59.0, -55.0], "expected": 59.0}, {"input": [59.0, -54.5], "expected": 59.0}, {"input": [59.0, -54.0], "expected": 59.0}, {"input": [59.0, -53.5], "expected": 59.0}, {"input": [59.0, -53.0], "expected": 59.0}, {"input": [59.0, -52.5], "expected": 59.0}, {"input": [59.0, -52.0], "expected": 59.0}, {"input": [59.0, -51.5], "expected": 59.0}, {"input": [59.0, -51.0], "expected": 59.0}, {"input": [59.0, -50.5], "expected": 59.0}, {"input": [59.0, -50.0], "expected": 59.0}, {"input": [59.0, -49.5], "expected": 59.0}, {"input": [59.0, -49.0], "expected": 59.0}, {"input": [59.0, -48.5], "expected": 59.0}, {"input": [59.0, -48.0], "expected": 59.0}, {"input": [59.0, -47.5], "expected": 59.0}, {"input": [59.0, -47.0], "expected": 59.0}, {"input": [59.0, -46.5], "expected": 59.0}, {"input": [59.0, -46.0], "expected": 59.0}, {"input": [59.0, -45.5], "expected": 59.0}, {"input": [59.0, -45.0], "expected": 59.0}, {"input": [59.0, -44.5], "expected": 59.0}, {"input": [59.0, -44.0], "expected": 59.0}, {"input": [59.0, -43.5], "expected": 59.0}, {"input": [59.0, -43.0], "expected": 59.0}, {"input": [59.0, -42.5], "expected": 59.0}, {"input": [59.0, -42.0], "expected": 59.0}, {"input": [59.0, -41.5], "expected": 59.0}, {"input": [59.0, -41.0], "expected": 59.0}, {"input": [59.0, -40.5], "expected": 59.0}, {"input": [59.0, -40.0], "expected": 59.0}, {"input": [59.0, -39.5], "expected": 59.0}, {"input": [59.0, -39.0], "expected": 59.0}, {"input": [59.0, -38.5], "expected": 59.0}, {"input": [59.0, -38.0], "expected": 59.0}, {"input": [59.0, -37.5], "expected": 59.0}, {"input": [59.0, -37.0], "expected": 59.0}, {"input": [59.0, -36.5], "expected": 59.0}, {"input": [59.0, -36.0], "expected": 59.0}, {"input": [59.0, -35.5], "expected": 59.0}, {"input": [59.0, -35.0], "expected": 59.0}, {"input": [59.0, -34.5], "expected": 59.0}, {"input": [59.0, -34.0], "expected": 59.0}, {"input": [59.0, -33.5], "expected": 59.0}, {"input": [59.0, -33.0], "expected": 59.0}, {"input": [59.0, -32.5], "expected": 59.0}, {"input": [59.0, -32.0], "expected": 59.0}, {"input": [59.0, -31.5], "expected": 59.0}, {"input": [59.0, -31.0], "expected": 59.0}, {"input": [59.0, -30.5], "expected": 59.0}, {"input": [59.0, -30.0], "expected": 59.0}, {"input": [59.0, -29.5], "expected": 59.0}, {"input": [59.0, -29.0], "expected": 59.0}, {"input": [59.0, -28.5], "expected": 59.0}, {"input": [59.0, -28.0], "expected": 59.0}, {"input": [59.0, -27.5], "expected": 59.0}, {"input": [59.0, -27.0], "expected": 59.0}, {"input": [59.0, -26.5], "expected": 59.0}, {"input": [59.0, -26.0], "expected": 59.0}, {"input": [59.0, -25.5], "expected": 59.0}, {"input": [59.0, -25.0], "expected": 59.0}, {"input": [59.0, -24.5], "expected": 59.0}, {"input": [59.0, -24.0], "expected": 59.0}, {"input": [59.0, -23.5], "expected": 59.0}, {"input": [59.0, -23.0], "expected": 59.0}, {"input": [59.0, -22.5], "expected": 59.0}, {"input": [59.0, -22.0], "expected": 59.0}, {"input": [59.0, -21.5], "expected": 59.0}, {"input": [59.0, -21.0], "expected": 59.0}, {"input": [59.0, -20.5], "expected": 59.0}, {"input": [59.0, -20.0], "expected": 59.0}, {"input": [59.0, -19.5], "expected": 59.0}, {"input": [59.0, -19.0], "expected": 59.0}, {"input": [59.0, -18.5], "expected": 59.0}, {"input": [59.0, -18.0], "expected": 59.0}, {"input": [59.0, -17.5], "expected": 59.0}, {"input": [59.0, -17.0], "expected": 59.0}, {"input": [59.0, -16.5], "expected": 59.0}, {"input": [59.0, -16.0], "expected": 59.0}, {"input": [59.0, -15.5], "expected": 59.0}, {"input": [59.0, -15.0], "expected": 59.0}, {"input": [59.0, -14.5], "expected": 59.0}, {"input": [59.0, -14.0], "expected": 59.0}, {"input": [59.0, -13.5], "expected": 59.0}, {"input": [59.0, -13.0], "expected": 59.0}, {"input": [59.0, -12.5], "expected": 59.0}, {"input": [59.0, -12.0], "expected": 59.0}, {"input": [59.0, -11.5], "expected": 59.0}, {"input": [59.0, -11.0], "expected": 59.0}, {"input": [59.0, -10.5], "expected": 59.0}, {"input": [59.0, -10.0], "expected": 59.0}, {"input": [59.0, -9.5], "expected": 59.0}, {"input": [59.0, -9.0], "expected": 59.0}, {"input": [59.0, -8.5], "expected": 59.0}, {"input": [59.0, -8.0], "expected": 59.0}, {"input": [59.0, -7.5], "expected": 59.0}, {"input": [59.0, -7.0], "expected": 59.0}, {"input": [59.0, -6.5], "expected": 59.0}, {"input": [59.0, -6.0], "expected": 59.0}, {"input": [59.0, -5.5], "expected": 59.0}, {"input": [59.0, -5.0], "expected": 59.0}, {"input": [59.0, -4.5], "expected": 59.0}, {"input": [59.0, -4.0], "expected": 59.0}, {"input": [59.0, -3.5], "expected": 59.0}, {"input": [59.0, -3.0], "expected": 59.0}, {"input": [59.0, -2.5], "expected": 59.0}, {"input": [59.0, -2.0], "expected": 59.0}, {"input": [59.0, -1.5], "expected": 59.0}, {"input": [59.0, -1.0], "expected": 59.0}, {"input": [59.0, -0.5], "expected": 59.0}, {"input": [59.0, 0.0], "expected": 59.0}, {"input": [59.0, 0.5], "expected": 59.0}, {"input": [59.0, 1.0], "expected": 59.0}, {"input": [59.0, 1.5], "expected": 59.0}, {"input": [59.0, 2.0], "expected": 59.0}, {"input": [59.0, 2.5], "expected": 59.0}, {"input": [59.0, 3.0], "expected": 59.0}, {"input": [59.0, 3.5], "expected": 59.0}, {"input": [59.0, 4.0], "expected": 59.0}, {"input": [59.0, 4.5], "expected": 59.0}, {"input": [59.0, 5.0], "expected": 59.0}, {"input": [59.0, 5.5], "expected": 59.0}, {"input": [59.0, 6.0], "expected": 59.0}, {"input": [59.0, 6.5], "expected": 59.0}, {"input": [59.0, 7.0], "expected": 59.0}, {"input": [59.0, 7.5], "expected": 59.0}, {"input": [59.0, 8.0], "expected": 59.0}, {"input": [59.0, 8.5], "expected": 59.0}, {"input": [59.0, 9.0], "expected": 59.0}, {"input": [59.0, 9.5], "expected": 59.0}, {"input": [59.0, 10.0], "expected": 59.0}, {"input": [59.0, 10.5], "expected": 59.0}, {"input": [59.0, 11.0], "expected": 59.0}, {"input": [59.0, 11.5], "expected": 59.0}, {"input": [59.0, 12.0], "expected": 59.0}, {"input": [59.0, 12.5], "expected": 59.0}, {"input": [59.0, 13.0], "expected": 59.0}, {"input": [59.0, 13.5], "expected": 59.0}, {"input": [59.0, 14.0], "expected": 59.0}, {"input": [59.0, 14.5], "expected": 59.0}, {"input": [59.0, 15.0], "expected": 59.0}, {"input": [59.0, 15.5], "expected": 59.0}, {"input": [59.0, 16.0], "expected": 59.0}, {"input": [59.0, 16.5], "expected": 59.0}, {"input": [59.0, 17.0], "expected": 59.0}, {"input": [59.0, 17.5], "expected": 59.0}, {"input": [59.0, 18.0], "expected": 59.0}, {"input": [59.0, 18.5], "expected": 59.0}, {"input": [59.0, 19.0], "expected": 59.0}, {"input": [59.0, 19.5], "expected": 59.0}, {"input": [59.0, 20.0], "expected": 59.0}, {"input": [59.0, 20.5], "expected": 59.0}, {"input": [59.0, 21.0], "expected": 59.0}, {"input": [59.0, 21.5], "expected": 59.0}, {"input": [59.0, 22.0], "expected": 59.0}, {"input": [59.0, 22.5], "expected": 59.0}, {"input": [59.0, 23.0], "expected": 59.0}, {"input": [59.0, 23.5], "expected": 59.0}, {"input": [59.0, 24.0], "expected": 59.0}, {"input": [59.0, 24.5], "expected": 59.0}, {"input": [59.0, 25.0], "expected": 59.0}, {"input": [59.0, 25.5], "expected": 59.0}, {"input": [59.0, 26.0], "expected": 59.00000000000001}, {"input": [59.0, 26.5], "expected": 59.00000000000001}, {"input": [59.0, 27.0], "expected": 59.000000000000014}, {"input": [59.0, 27.5], "expected": 59.00000000000002}, {"input": [59.0, 28.0], "expected": 59.000000000000036}, {"input": [59.0, 28.5], "expected": 59.00000000000006}, {"input": [59.0, 29.0], "expected": 59.00000000000009}, {"input": [59.0, 29.5], "expected": 59.000000000000156}, {"input": [59.0, 30.0], "expected": 59.000000000000256}, {"input": [59.0, 30.5], "expected": 59.00000000000042}, {"input": [59.0, 31.0], "expected": 59.00000000000069}, {"input": [59.0, 31.5], "expected": 59.00000000000114}, {"input": [59.0, 32.0], "expected": 59.00000000000188}, {"input": [59.0, 32.5], "expected": 59.0000000000031}, {"input": [59.0, 33.0], "expected": 59.00000000000511}, {"input": [59.0, 33.5], "expected": 59.00000000000842}, {"input": [59.0, 34.0], "expected": 59.00000000001389}, {"input": [59.0, 34.5], "expected": 59.0000000000229}, {"input": [59.0, 35.0], "expected": 59.00000000003775}, {"input": [59.0, 35.5], "expected": 59.00000000006224}, {"input": [59.0, 36.0], "expected": 59.00000000010262}, {"input": [59.0, 36.5], "expected": 59.00000000016919}, {"input": [59.0, 37.0], "expected": 59.000000000278945}, {"input": [59.0, 37.5], "expected": 59.000000000459906}, {"input": [59.0, 38.0], "expected": 59.000000000758256}, {"input": [59.0, 38.5], "expected": 59.00000000125015}, {"input": [59.0, 39.0], "expected": 59.00000000206116}, {"input": [59.0, 39.5], "expected": 59.00000000339827}, {"input": [59.0, 40.0], "expected": 59.00000000560279}, {"input": [59.0, 40.5], "expected": 59.000000009237446}, {"input": [59.0, 41.0], "expected": 59.00000001522998}, {"input": [59.0, 41.5], "expected": 59.00000002510999}, {"input": [59.0, 42.0], "expected": 59.000000041399375}, {"input": [59.0, 42.5], "expected": 59.00000006825603}, {"input": [59.0, 43.0], "expected": 59.00000011253517}, {"input": [59.0, 43.5], "expected": 59.00000018553912}, {"input": [59.0, 44.0], "expected": 59.000000305902276}, {"input": [59.0, 44.5], "expected": 59.00000050434753}, {"input": [59.0, 45.0], "expected": 59.000000831528375}, {"input": [59.0, 45.5], "expected": 59.000001370958145}, {"input": [59.0, 46.0], "expected": 59.00000226032685}, {"input": [59.0, 46.5], "expected": 59.00000372664623}, {"input": [59.0, 47.0], "expected": 59.00000614419348}, {"input": [59.0, 47.5], "expected": 59.00001013004229}, {"input": [59.0, 48.0], "expected": 59.00001670156132}, {"input": [59.0, 48.5], "expected": 59.00002753607023}, {"input": [59.0, 49.0], "expected": 59.00004539889922}, {"input": [59.0, 49.5], "expected": 59.00007484902863}, {"input": [59.0, 50.0], "expected": 59.00012340218972}, {"input": [59.0, 50.5], "expected": 59.00020344767213}, {"input": [59.0, 51.0], "expected": 59.0003354063729}, {"input": [59.0, 51.5], "expected": 59.00055293147536}, {"input": [59.0, 52.0], "expected": 59.00091146645377}, {"input": [59.0, 52.5], "expected": 59.00150231015976}, {"input": [59.0, 53.0], "expected": 59.00247568513773}, {"input": [59.0, 53.5], "expected": 59.00407844327057}, {"input": [59.0, 54.0], "expected": 59.00671534848912}, {"input": [59.0, 54.5], "expected": 59.0110477448486}, {"input": [59.0, 55.0], "expected": 59.01814992791781}, {"input": [59.0, 55.5], "expected": 59.02975041827262}, {"input": [59.0, 56.0], "expected": 59.048587351573744}, {"input": [59.0, 56.5], "expected": 59.07888973429255}, {"input": [59.0, 57.0], "expected": 59.12692801104297}, {"input": [59.0, 57.5], "expected": 59.20141327798275}, {"input": [59.0, 58.0], "expected": 59.31326168751822}, {"input": [59.0, 58.5], "expected": 59.47407698418011}, {"input": [59.0, 59.0], "expected": 59.69314718055995}, {"input": [59.0, 59.5], "expected": 59.97407698418011}, {"input": [59.0, 60.0], "expected": 60.31326168751822}, {"input": [59.0, 60.5], "expected": 60.70141327798275}, {"input": [59.0, 61.0], "expected": 61.12692801104297}, {"input": [59.0, 61.5], "expected": 61.57888973429255}, {"input": [59.0, 62.0], "expected": 62.048587351573744}, {"input": [59.0, 62.5], "expected": 62.52975041827262}, {"input": [59.0, 63.0], "expected": 63.01814992791781}, {"input": [59.0, 63.5], "expected": 63.5110477448486}, {"input": [59.0, 64.0], "expected": 64.00671534848912}, {"input": [59.0, 64.5], "expected": 64.50407844327057}, {"input": [59.0, 65.0], "expected": 65.00247568513772}, {"input": [59.0, 65.5], "expected": 65.50150231015975}, {"input": [59.0, 66.0], "expected": 66.00091146645377}, {"input": [59.0, 66.5], "expected": 66.50055293147535}, {"input": [59.0, 67.0], "expected": 67.0003354063729}, {"input": [59.0, 67.5], "expected": 67.50020344767213}, {"input": [59.0, 68.0], "expected": 68.00012340218973}, {"input": [59.0, 68.5], "expected": 68.50007484902864}, {"input": [59.0, 69.0], "expected": 69.00004539889922}, {"input": [59.0, 69.5], "expected": 69.50002753607023}, {"input": [59.0, 70.0], "expected": 70.00001670156132}, {"input": [59.0, 70.5], "expected": 70.50001013004228}, {"input": [59.0, 71.0], "expected": 71.00000614419348}, {"input": [59.0, 71.5], "expected": 71.50000372664623}, {"input": [59.0, 72.0], "expected": 72.00000226032685}, {"input": [59.0, 72.5], "expected": 72.50000137095815}, {"input": [59.0, 73.0], "expected": 73.00000083152837}, {"input": [59.0, 73.5], "expected": 73.50000050434754}, {"input": [59.0, 74.0], "expected": 74.00000030590228}, {"input": [59.0, 74.5], "expected": 74.50000018553912}, {"input": [59.0, 75.0], "expected": 75.00000011253516}, {"input": [59.0, 75.5], "expected": 75.50000006825603}, {"input": [59.0, 76.0], "expected": 76.00000004139937}, {"input": [59.0, 76.5], "expected": 76.50000002511}, {"input": [59.0, 77.0], "expected": 77.00000001522999}, {"input": [59.0, 77.5], "expected": 77.50000000923745}, {"input": [59.0, 78.0], "expected": 78.0000000056028}, {"input": [59.0, 78.5], "expected": 78.50000000339827}, {"input": [59.0, 79.0], "expected": 79.00000000206116}, {"input": [59.0, 79.5], "expected": 79.50000000125016}, {"input": [59.0, 80.0], "expected": 80.00000000075826}, {"input": [59.0, 80.5], "expected": 80.5000000004599}, {"input": [59.0, 81.0], "expected": 81.00000000027894}, {"input": [59.0, 81.5], "expected": 81.5000000001692}, {"input": [59.0, 82.0], "expected": 82.00000000010262}, {"input": [59.0, 82.5], "expected": 82.50000000006224}, {"input": [59.0, 83.0], "expected": 83.00000000003776}, {"input": [59.0, 83.5], "expected": 83.5000000000229}, {"input": [59.0, 84.0], "expected": 84.00000000001388}, {"input": [59.0, 84.5], "expected": 84.50000000000843}, {"input": [59.0, 85.0], "expected": 85.00000000000512}, {"input": [59.0, 85.5], "expected": 85.5000000000031}, {"input": [59.0, 86.0], "expected": 86.00000000000188}, {"input": [59.0, 86.5], "expected": 86.50000000000114}, {"input": [59.0, 87.0], "expected": 87.0000000000007}, {"input": [59.0, 87.5], "expected": 87.50000000000043}, {"input": [59.0, 88.0], "expected": 88.00000000000026}, {"input": [59.0, 88.5], "expected": 88.50000000000016}, {"input": [59.0, 89.0], "expected": 89.0000000000001}, {"input": [59.0, 89.5], "expected": 89.50000000000006}, {"input": [59.0, 90.0], "expected": 90.00000000000003}, {"input": [59.0, 90.5], "expected": 90.50000000000001}, {"input": [59.0, 91.0], "expected": 91.00000000000001}, {"input": [59.0, 91.5], "expected": 91.50000000000001}, {"input": [59.0, 92.0], "expected": 92.0}, {"input": [59.0, 92.5], "expected": 92.5}, {"input": [59.0, 93.0], "expected": 93.0}, {"input": [59.0, 93.5], "expected": 93.5}, {"input": [59.0, 94.0], "expected": 94.0}, {"input": [59.0, 94.5], "expected": 94.5}, {"input": [59.0, 95.0], "expected": 95.0}, {"input": [59.0, 95.5], "expected": 95.5}, {"input": [59.0, 96.0], "expected": 96.0}, {"input": [59.0, 96.5], "expected": 96.5}, {"input": [59.0, 97.0], "expected": 97.0}, {"input": [59.0, 97.5], "expected": 97.5}, {"input": [59.0, 98.0], "expected": 98.0}, {"input": [59.0, 98.5], "expected": 98.5}, {"input": [59.0, 99.0], "expected": 99.0}, {"input": [59.0, 99.5], "expected": 99.5}, {"input": [59.5, -100.0], "expected": 59.5}, {"input": [59.5, -99.5], "expected": 59.5}, {"input": [59.5, -99.0], "expected": 59.5}, {"input": [59.5, -98.5], "expected": 59.5}, {"input": [59.5, -98.0], "expected": 59.5}, {"input": [59.5, -97.5], "expected": 59.5}, {"input": [59.5, -97.0], "expected": 59.5}, {"input": [59.5, -96.5], "expected": 59.5}, {"input": [59.5, -96.0], "expected": 59.5}, {"input": [59.5, -95.5], "expected": 59.5}, {"input": [59.5, -95.0], "expected": 59.5}, {"input": [59.5, -94.5], "expected": 59.5}, {"input": [59.5, -94.0], "expected": 59.5}, {"input": [59.5, -93.5], "expected": 59.5}, {"input": [59.5, -93.0], "expected": 59.5}, {"input": [59.5, -92.5], "expected": 59.5}, {"input": [59.5, -92.0], "expected": 59.5}, {"input": [59.5, -91.5], "expected": 59.5}, {"input": [59.5, -91.0], "expected": 59.5}, {"input": [59.5, -90.5], "expected": 59.5}, {"input": [59.5, -90.0], "expected": 59.5}, {"input": [59.5, -89.5], "expected": 59.5}, {"input": [59.5, -89.0], "expected": 59.5}, {"input": [59.5, -88.5], "expected": 59.5}, {"input": [59.5, -88.0], "expected": 59.5}, {"input": [59.5, -87.5], "expected": 59.5}, {"input": [59.5, -87.0], "expected": 59.5}, {"input": [59.5, -86.5], "expected": 59.5}, {"input": [59.5, -86.0], "expected": 59.5}, {"input": [59.5, -85.5], "expected": 59.5}, {"input": [59.5, -85.0], "expected": 59.5}, {"input": [59.5, -84.5], "expected": 59.5}, {"input": [59.5, -84.0], "expected": 59.5}, {"input": [59.5, -83.5], "expected": 59.5}, {"input": [59.5, -83.0], "expected": 59.5}, {"input": [59.5, -82.5], "expected": 59.5}, {"input": [59.5, -82.0], "expected": 59.5}, {"input": [59.5, -81.5], "expected": 59.5}, {"input": [59.5, -81.0], "expected": 59.5}, {"input": [59.5, -80.5], "expected": 59.5}, {"input": [59.5, -80.0], "expected": 59.5}, {"input": [59.5, -79.5], "expected": 59.5}, {"input": [59.5, -79.0], "expected": 59.5}, {"input": [59.5, -78.5], "expected": 59.5}, {"input": [59.5, -78.0], "expected": 59.5}, {"input": [59.5, -77.5], "expected": 59.5}, {"input": [59.5, -77.0], "expected": 59.5}, {"input": [59.5, -76.5], "expected": 59.5}, {"input": [59.5, -76.0], "expected": 59.5}, {"input": [59.5, -75.5], "expected": 59.5}, {"input": [59.5, -75.0], "expected": 59.5}, {"input": [59.5, -74.5], "expected": 59.5}, {"input": [59.5, -74.0], "expected": 59.5}, {"input": [59.5, -73.5], "expected": 59.5}, {"input": [59.5, -73.0], "expected": 59.5}, {"input": [59.5, -72.5], "expected": 59.5}, {"input": [59.5, -72.0], "expected": 59.5}, {"input": [59.5, -71.5], "expected": 59.5}, {"input": [59.5, -71.0], "expected": 59.5}, {"input": [59.5, -70.5], "expected": 59.5}, {"input": [59.5, -70.0], "expected": 59.5}, {"input": [59.5, -69.5], "expected": 59.5}, {"input": [59.5, -69.0], "expected": 59.5}, {"input": [59.5, -68.5], "expected": 59.5}, {"input": [59.5, -68.0], "expected": 59.5}, {"input": [59.5, -67.5], "expected": 59.5}, {"input": [59.5, -67.0], "expected": 59.5}, {"input": [59.5, -66.5], "expected": 59.5}, {"input": [59.5, -66.0], "expected": 59.5}, {"input": [59.5, -65.5], "expected": 59.5}, {"input": [59.5, -65.0], "expected": 59.5}, {"input": [59.5, -64.5], "expected": 59.5}, {"input": [59.5, -64.0], "expected": 59.5}, {"input": [59.5, -63.5], "expected": 59.5}, {"input": [59.5, -63.0], "expected": 59.5}, {"input": [59.5, -62.5], "expected": 59.5}, {"input": [59.5, -62.0], "expected": 59.5}, {"input": [59.5, -61.5], "expected": 59.5}, {"input": [59.5, -61.0], "expected": 59.5}, {"input": [59.5, -60.5], "expected": 59.5}, {"input": [59.5, -60.0], "expected": 59.5}, {"input": [59.5, -59.5], "expected": 59.5}, {"input": [59.5, -59.0], "expected": 59.5}, {"input": [59.5, -58.5], "expected": 59.5}, {"input": [59.5, -58.0], "expected": 59.5}, {"input": [59.5, -57.5], "expected": 59.5}, {"input": [59.5, -57.0], "expected": 59.5}, {"input": [59.5, -56.5], "expected": 59.5}, {"input": [59.5, -56.0], "expected": 59.5}, {"input": [59.5, -55.5], "expected": 59.5}, {"input": [59.5, -55.0], "expected": 59.5}, {"input": [59.5, -54.5], "expected": 59.5}, {"input": [59.5, -54.0], "expected": 59.5}, {"input": [59.5, -53.5], "expected": 59.5}, {"input": [59.5, -53.0], "expected": 59.5}, {"input": [59.5, -52.5], "expected": 59.5}, {"input": [59.5, -52.0], "expected": 59.5}, {"input": [59.5, -51.5], "expected": 59.5}, {"input": [59.5, -51.0], "expected": 59.5}, {"input": [59.5, -50.5], "expected": 59.5}, {"input": [59.5, -50.0], "expected": 59.5}, {"input": [59.5, -49.5], "expected": 59.5}, {"input": [59.5, -49.0], "expected": 59.5}, {"input": [59.5, -48.5], "expected": 59.5}, {"input": [59.5, -48.0], "expected": 59.5}, {"input": [59.5, -47.5], "expected": 59.5}, {"input": [59.5, -47.0], "expected": 59.5}, {"input": [59.5, -46.5], "expected": 59.5}, {"input": [59.5, -46.0], "expected": 59.5}, {"input": [59.5, -45.5], "expected": 59.5}, {"input": [59.5, -45.0], "expected": 59.5}, {"input": [59.5, -44.5], "expected": 59.5}, {"input": [59.5, -44.0], "expected": 59.5}, {"input": [59.5, -43.5], "expected": 59.5}, {"input": [59.5, -43.0], "expected": 59.5}, {"input": [59.5, -42.5], "expected": 59.5}, {"input": [59.5, -42.0], "expected": 59.5}, {"input": [59.5, -41.5], "expected": 59.5}, {"input": [59.5, -41.0], "expected": 59.5}, {"input": [59.5, -40.5], "expected": 59.5}, {"input": [59.5, -40.0], "expected": 59.5}, {"input": [59.5, -39.5], "expected": 59.5}, {"input": [59.5, -39.0], "expected": 59.5}, {"input": [59.5, -38.5], "expected": 59.5}, {"input": [59.5, -38.0], "expected": 59.5}, {"input": [59.5, -37.5], "expected": 59.5}, {"input": [59.5, -37.0], "expected": 59.5}, {"input": [59.5, -36.5], "expected": 59.5}, {"input": [59.5, -36.0], "expected": 59.5}, {"input": [59.5, -35.5], "expected": 59.5}, {"input": [59.5, -35.0], "expected": 59.5}, {"input": [59.5, -34.5], "expected": 59.5}, {"input": [59.5, -34.0], "expected": 59.5}, {"input": [59.5, -33.5], "expected": 59.5}, {"input": [59.5, -33.0], "expected": 59.5}, {"input": [59.5, -32.5], "expected": 59.5}, {"input": [59.5, -32.0], "expected": 59.5}, {"input": [59.5, -31.5], "expected": 59.5}, {"input": [59.5, -31.0], "expected": 59.5}, {"input": [59.5, -30.5], "expected": 59.5}, {"input": [59.5, -30.0], "expected": 59.5}, {"input": [59.5, -29.5], "expected": 59.5}, {"input": [59.5, -29.0], "expected": 59.5}, {"input": [59.5, -28.5], "expected": 59.5}, {"input": [59.5, -28.0], "expected": 59.5}, {"input": [59.5, -27.5], "expected": 59.5}, {"input": [59.5, -27.0], "expected": 59.5}, {"input": [59.5, -26.5], "expected": 59.5}, {"input": [59.5, -26.0], "expected": 59.5}, {"input": [59.5, -25.5], "expected": 59.5}, {"input": [59.5, -25.0], "expected": 59.5}, {"input": [59.5, -24.5], "expected": 59.5}, {"input": [59.5, -24.0], "expected": 59.5}, {"input": [59.5, -23.5], "expected": 59.5}, {"input": [59.5, -23.0], "expected": 59.5}, {"input": [59.5, -22.5], "expected": 59.5}, {"input": [59.5, -22.0], "expected": 59.5}, {"input": [59.5, -21.5], "expected": 59.5}, {"input": [59.5, -21.0], "expected": 59.5}, {"input": [59.5, -20.5], "expected": 59.5}, {"input": [59.5, -20.0], "expected": 59.5}, {"input": [59.5, -19.5], "expected": 59.5}, {"input": [59.5, -19.0], "expected": 59.5}, {"input": [59.5, -18.5], "expected": 59.5}, {"input": [59.5, -18.0], "expected": 59.5}, {"input": [59.5, -17.5], "expected": 59.5}, {"input": [59.5, -17.0], "expected": 59.5}, {"input": [59.5, -16.5], "expected": 59.5}, {"input": [59.5, -16.0], "expected": 59.5}, {"input": [59.5, -15.5], "expected": 59.5}, {"input": [59.5, -15.0], "expected": 59.5}, {"input": [59.5, -14.5], "expected": 59.5}, {"input": [59.5, -14.0], "expected": 59.5}, {"input": [59.5, -13.5], "expected": 59.5}, {"input": [59.5, -13.0], "expected": 59.5}, {"input": [59.5, -12.5], "expected": 59.5}, {"input": [59.5, -12.0], "expected": 59.5}, {"input": [59.5, -11.5], "expected": 59.5}, {"input": [59.5, -11.0], "expected": 59.5}, {"input": [59.5, -10.5], "expected": 59.5}, {"input": [59.5, -10.0], "expected": 59.5}, {"input": [59.5, -9.5], "expected": 59.5}, {"input": [59.5, -9.0], "expected": 59.5}, {"input": [59.5, -8.5], "expected": 59.5}, {"input": [59.5, -8.0], "expected": 59.5}, {"input": [59.5, -7.5], "expected": 59.5}, {"input": [59.5, -7.0], "expected": 59.5}, {"input": [59.5, -6.5], "expected": 59.5}, {"input": [59.5, -6.0], "expected": 59.5}, {"input": [59.5, -5.5], "expected": 59.5}, {"input": [59.5, -5.0], "expected": 59.5}, {"input": [59.5, -4.5], "expected": 59.5}, {"input": [59.5, -4.0], "expected": 59.5}, {"input": [59.5, -3.5], "expected": 59.5}, {"input": [59.5, -3.0], "expected": 59.5}, {"input": [59.5, -2.5], "expected": 59.5}, {"input": [59.5, -2.0], "expected": 59.5}, {"input": [59.5, -1.5], "expected": 59.5}, {"input": [59.5, -1.0], "expected": 59.5}, {"input": [59.5, -0.5], "expected": 59.5}, {"input": [59.5, 0.0], "expected": 59.5}, {"input": [59.5, 0.5], "expected": 59.5}, {"input": [59.5, 1.0], "expected": 59.5}, {"input": [59.5, 1.5], "expected": 59.5}, {"input": [59.5, 2.0], "expected": 59.5}, {"input": [59.5, 2.5], "expected": 59.5}, {"input": [59.5, 3.0], "expected": 59.5}, {"input": [59.5, 3.5], "expected": 59.5}, {"input": [59.5, 4.0], "expected": 59.5}, {"input": [59.5, 4.5], "expected": 59.5}, {"input": [59.5, 5.0], "expected": 59.5}, {"input": [59.5, 5.5], "expected": 59.5}, {"input": [59.5, 6.0], "expected": 59.5}, {"input": [59.5, 6.5], "expected": 59.5}, {"input": [59.5, 7.0], "expected": 59.5}, {"input": [59.5, 7.5], "expected": 59.5}, {"input": [59.5, 8.0], "expected": 59.5}, {"input": [59.5, 8.5], "expected": 59.5}, {"input": [59.5, 9.0], "expected": 59.5}, {"input": [59.5, 9.5], "expected": 59.5}, {"input": [59.5, 10.0], "expected": 59.5}, {"input": [59.5, 10.5], "expected": 59.5}, {"input": [59.5, 11.0], "expected": 59.5}, {"input": [59.5, 11.5], "expected": 59.5}, {"input": [59.5, 12.0], "expected": 59.5}, {"input": [59.5, 12.5], "expected": 59.5}, {"input": [59.5, 13.0], "expected": 59.5}, {"input": [59.5, 13.5], "expected": 59.5}, {"input": [59.5, 14.0], "expected": 59.5}, {"input": [59.5, 14.5], "expected": 59.5}, {"input": [59.5, 15.0], "expected": 59.5}, {"input": [59.5, 15.5], "expected": 59.5}, {"input": [59.5, 16.0], "expected": 59.5}, {"input": [59.5, 16.5], "expected": 59.5}, {"input": [59.5, 17.0], "expected": 59.5}, {"input": [59.5, 17.5], "expected": 59.5}, {"input": [59.5, 18.0], "expected": 59.5}, {"input": [59.5, 18.5], "expected": 59.5}, {"input": [59.5, 19.0], "expected": 59.5}, {"input": [59.5, 19.5], "expected": 59.5}, {"input": [59.5, 20.0], "expected": 59.5}, {"input": [59.5, 20.5], "expected": 59.5}, {"input": [59.5, 21.0], "expected": 59.5}, {"input": [59.5, 21.5], "expected": 59.5}, {"input": [59.5, 22.0], "expected": 59.5}, {"input": [59.5, 22.5], "expected": 59.5}, {"input": [59.5, 23.0], "expected": 59.5}, {"input": [59.5, 23.5], "expected": 59.5}, {"input": [59.5, 24.0], "expected": 59.5}, {"input": [59.5, 24.5], "expected": 59.5}, {"input": [59.5, 25.0], "expected": 59.5}, {"input": [59.5, 25.5], "expected": 59.5}, {"input": [59.5, 26.0], "expected": 59.5}, {"input": [59.5, 26.5], "expected": 59.50000000000001}, {"input": [59.5, 27.0], "expected": 59.50000000000001}, {"input": [59.5, 27.5], "expected": 59.500000000000014}, {"input": [59.5, 28.0], "expected": 59.50000000000002}, {"input": [59.5, 28.5], "expected": 59.500000000000036}, {"input": [59.5, 29.0], "expected": 59.50000000000006}, {"input": [59.5, 29.5], "expected": 59.50000000000009}, {"input": [59.5, 30.0], "expected": 59.500000000000156}, {"input": [59.5, 30.5], "expected": 59.500000000000256}, {"input": [59.5, 31.0], "expected": 59.50000000000042}, {"input": [59.5, 31.5], "expected": 59.50000000000069}, {"input": [59.5, 32.0], "expected": 59.50000000000114}, {"input": [59.5, 32.5], "expected": 59.50000000000188}, {"input": [59.5, 33.0], "expected": 59.5000000000031}, {"input": [59.5, 33.5], "expected": 59.50000000000511}, {"input": [59.5, 34.0], "expected": 59.50000000000842}, {"input": [59.5, 34.5], "expected": 59.50000000001389}, {"input": [59.5, 35.0], "expected": 59.5000000000229}, {"input": [59.5, 35.5], "expected": 59.50000000003775}, {"input": [59.5, 36.0], "expected": 59.50000000006224}, {"input": [59.5, 36.5], "expected": 59.50000000010262}, {"input": [59.5, 37.0], "expected": 59.50000000016919}, {"input": [59.5, 37.5], "expected": 59.500000000278945}, {"input": [59.5, 38.0], "expected": 59.500000000459906}, {"input": [59.5, 38.5], "expected": 59.500000000758256}, {"input": [59.5, 39.0], "expected": 59.50000000125015}, {"input": [59.5, 39.5], "expected": 59.50000000206116}, {"input": [59.5, 40.0], "expected": 59.50000000339827}, {"input": [59.5, 40.5], "expected": 59.50000000560279}, {"input": [59.5, 41.0], "expected": 59.500000009237446}, {"input": [59.5, 41.5], "expected": 59.50000001522998}, {"input": [59.5, 42.0], "expected": 59.50000002510999}, {"input": [59.5, 42.5], "expected": 59.500000041399375}, {"input": [59.5, 43.0], "expected": 59.50000006825603}, {"input": [59.5, 43.5], "expected": 59.50000011253517}, {"input": [59.5, 44.0], "expected": 59.50000018553912}, {"input": [59.5, 44.5], "expected": 59.500000305902276}, {"input": [59.5, 45.0], "expected": 59.50000050434753}, {"input": [59.5, 45.5], "expected": 59.500000831528375}, {"input": [59.5, 46.0], "expected": 59.500001370958145}, {"input": [59.5, 46.5], "expected": 59.50000226032685}, {"input": [59.5, 47.0], "expected": 59.50000372664623}, {"input": [59.5, 47.5], "expected": 59.50000614419348}, {"input": [59.5, 48.0], "expected": 59.50001013004229}, {"input": [59.5, 48.5], "expected": 59.50001670156132}, {"input": [59.5, 49.0], "expected": 59.50002753607023}, {"input": [59.5, 49.5], "expected": 59.50004539889922}, {"input": [59.5, 50.0], "expected": 59.50007484902863}, {"input": [59.5, 50.5], "expected": 59.50012340218972}, {"input": [59.5, 51.0], "expected": 59.50020344767213}, {"input": [59.5, 51.5], "expected": 59.5003354063729}, {"input": [59.5, 52.0], "expected": 59.50055293147536}, {"input": [59.5, 52.5], "expected": 59.50091146645377}, {"input": [59.5, 53.0], "expected": 59.50150231015976}, {"input": [59.5, 53.5], "expected": 59.50247568513773}, {"input": [59.5, 54.0], "expected": 59.50407844327057}, {"input": [59.5, 54.5], "expected": 59.50671534848912}, {"input": [59.5, 55.0], "expected": 59.5110477448486}, {"input": [59.5, 55.5], "expected": 59.51814992791781}, {"input": [59.5, 56.0], "expected": 59.52975041827262}, {"input": [59.5, 56.5], "expected": 59.548587351573744}, {"input": [59.5, 57.0], "expected": 59.57888973429255}, {"input": [59.5, 57.5], "expected": 59.62692801104297}, {"input": [59.5, 58.0], "expected": 59.70141327798275}, {"input": [59.5, 58.5], "expected": 59.81326168751822}, {"input": [59.5, 59.0], "expected": 59.97407698418011}, {"input": [59.5, 59.5], "expected": 60.19314718055995}, {"input": [59.5, 60.0], "expected": 60.47407698418011}, {"input": [59.5, 60.5], "expected": 60.81326168751822}, {"input": [59.5, 61.0], "expected": 61.20141327798275}, {"input": [59.5, 61.5], "expected": 61.62692801104297}, {"input": [59.5, 62.0], "expected": 62.07888973429255}, {"input": [59.5, 62.5], "expected": 62.548587351573744}, {"input": [59.5, 63.0], "expected": 63.02975041827262}, {"input": [59.5, 63.5], "expected": 63.51814992791781}, {"input": [59.5, 64.0], "expected": 64.0110477448486}, {"input": [59.5, 64.5], "expected": 64.50671534848912}, {"input": [59.5, 65.0], "expected": 65.00407844327057}, {"input": [59.5, 65.5], "expected": 65.50247568513772}, {"input": [59.5, 66.0], "expected": 66.00150231015975}, {"input": [59.5, 66.5], "expected": 66.50091146645377}, {"input": [59.5, 67.0], "expected": 67.00055293147535}, {"input": [59.5, 67.5], "expected": 67.5003354063729}, {"input": [59.5, 68.0], "expected": 68.00020344767213}, {"input": [59.5, 68.5], "expected": 68.50012340218973}, {"input": [59.5, 69.0], "expected": 69.00007484902864}, {"input": [59.5, 69.5], "expected": 69.50004539889922}, {"input": [59.5, 70.0], "expected": 70.00002753607023}, {"input": [59.5, 70.5], "expected": 70.50001670156132}, {"input": [59.5, 71.0], "expected": 71.00001013004228}, {"input": [59.5, 71.5], "expected": 71.50000614419348}, {"input": [59.5, 72.0], "expected": 72.00000372664623}, {"input": [59.5, 72.5], "expected": 72.50000226032685}, {"input": [59.5, 73.0], "expected": 73.00000137095815}, {"input": [59.5, 73.5], "expected": 73.50000083152837}, {"input": [59.5, 74.0], "expected": 74.00000050434754}, {"input": [59.5, 74.5], "expected": 74.50000030590228}, {"input": [59.5, 75.0], "expected": 75.00000018553912}, {"input": [59.5, 75.5], "expected": 75.50000011253516}, {"input": [59.5, 76.0], "expected": 76.00000006825603}, {"input": [59.5, 76.5], "expected": 76.50000004139937}, {"input": [59.5, 77.0], "expected": 77.00000002511}, {"input": [59.5, 77.5], "expected": 77.50000001522999}, {"input": [59.5, 78.0], "expected": 78.00000000923745}, {"input": [59.5, 78.5], "expected": 78.5000000056028}, {"input": [59.5, 79.0], "expected": 79.00000000339827}, {"input": [59.5, 79.5], "expected": 79.50000000206116}, {"input": [59.5, 80.0], "expected": 80.00000000125016}, {"input": [59.5, 80.5], "expected": 80.50000000075826}, {"input": [59.5, 81.0], "expected": 81.0000000004599}, {"input": [59.5, 81.5], "expected": 81.50000000027894}, {"input": [59.5, 82.0], "expected": 82.0000000001692}, {"input": [59.5, 82.5], "expected": 82.50000000010262}, {"input": [59.5, 83.0], "expected": 83.00000000006224}, {"input": [59.5, 83.5], "expected": 83.50000000003776}, {"input": [59.5, 84.0], "expected": 84.0000000000229}, {"input": [59.5, 84.5], "expected": 84.50000000001388}, {"input": [59.5, 85.0], "expected": 85.00000000000843}, {"input": [59.5, 85.5], "expected": 85.50000000000512}, {"input": [59.5, 86.0], "expected": 86.0000000000031}, {"input": [59.5, 86.5], "expected": 86.50000000000188}, {"input": [59.5, 87.0], "expected": 87.00000000000114}, {"input": [59.5, 87.5], "expected": 87.5000000000007}, {"input": [59.5, 88.0], "expected": 88.00000000000043}, {"input": [59.5, 88.5], "expected": 88.50000000000026}, {"input": [59.5, 89.0], "expected": 89.00000000000016}, {"input": [59.5, 89.5], "expected": 89.5000000000001}, {"input": [59.5, 90.0], "expected": 90.00000000000006}, {"input": [59.5, 90.5], "expected": 90.50000000000003}, {"input": [59.5, 91.0], "expected": 91.00000000000001}, {"input": [59.5, 91.5], "expected": 91.50000000000001}, {"input": [59.5, 92.0], "expected": 92.00000000000001}, {"input": [59.5, 92.5], "expected": 92.5}, {"input": [59.5, 93.0], "expected": 93.0}, {"input": [59.5, 93.5], "expected": 93.5}, {"input": [59.5, 94.0], "expected": 94.0}, {"input": [59.5, 94.5], "expected": 94.5}, {"input": [59.5, 95.0], "expected": 95.0}, {"input": [59.5, 95.5], "expected": 95.5}, {"input": [59.5, 96.0], "expected": 96.0}, {"input": [59.5, 96.5], "expected": 96.5}, {"input": [59.5, 97.0], "expected": 97.0}, {"input": [59.5, 97.5], "expected": 97.5}, {"input": [59.5, 98.0], "expected": 98.0}, {"input": [59.5, 98.5], "expected": 98.5}, {"input": [59.5, 99.0], "expected": 99.0}, {"input": [59.5, 99.5], "expected": 99.5}, {"input": [60.0, -100.0], "expected": 60.0}, {"input": [60.0, -99.5], "expected": 60.0}, {"input": [60.0, -99.0], "expected": 60.0}, {"input": [60.0, -98.5], "expected": 60.0}, {"input": [60.0, -98.0], "expected": 60.0}, {"input": [60.0, -97.5], "expected": 60.0}, {"input": [60.0, -97.0], "expected": 60.0}, {"input": [60.0, -96.5], "expected": 60.0}, {"input": [60.0, -96.0], "expected": 60.0}, {"input": [60.0, -95.5], "expected": 60.0}, {"input": [60.0, -95.0], "expected": 60.0}, {"input": [60.0, -94.5], "expected": 60.0}, {"input": [60.0, -94.0], "expected": 60.0}, {"input": [60.0, -93.5], "expected": 60.0}, {"input": [60.0, -93.0], "expected": 60.0}, {"input": [60.0, -92.5], "expected": 60.0}, {"input": [60.0, -92.0], "expected": 60.0}, {"input": [60.0, -91.5], "expected": 60.0}, {"input": [60.0, -91.0], "expected": 60.0}, {"input": [60.0, -90.5], "expected": 60.0}, {"input": [60.0, -90.0], "expected": 60.0}, {"input": [60.0, -89.5], "expected": 60.0}, {"input": [60.0, -89.0], "expected": 60.0}, {"input": [60.0, -88.5], "expected": 60.0}, {"input": [60.0, -88.0], "expected": 60.0}, {"input": [60.0, -87.5], "expected": 60.0}, {"input": [60.0, -87.0], "expected": 60.0}, {"input": [60.0, -86.5], "expected": 60.0}, {"input": [60.0, -86.0], "expected": 60.0}, {"input": [60.0, -85.5], "expected": 60.0}, {"input": [60.0, -85.0], "expected": 60.0}, {"input": [60.0, -84.5], "expected": 60.0}, {"input": [60.0, -84.0], "expected": 60.0}, {"input": [60.0, -83.5], "expected": 60.0}, {"input": [60.0, -83.0], "expected": 60.0}, {"input": [60.0, -82.5], "expected": 60.0}, {"input": [60.0, -82.0], "expected": 60.0}, {"input": [60.0, -81.5], "expected": 60.0}, {"input": [60.0, -81.0], "expected": 60.0}, {"input": [60.0, -80.5], "expected": 60.0}, {"input": [60.0, -80.0], "expected": 60.0}, {"input": [60.0, -79.5], "expected": 60.0}, {"input": [60.0, -79.0], "expected": 60.0}, {"input": [60.0, -78.5], "expected": 60.0}, {"input": [60.0, -78.0], "expected": 60.0}, {"input": [60.0, -77.5], "expected": 60.0}, {"input": [60.0, -77.0], "expected": 60.0}, {"input": [60.0, -76.5], "expected": 60.0}, {"input": [60.0, -76.0], "expected": 60.0}, {"input": [60.0, -75.5], "expected": 60.0}, {"input": [60.0, -75.0], "expected": 60.0}, {"input": [60.0, -74.5], "expected": 60.0}, {"input": [60.0, -74.0], "expected": 60.0}, {"input": [60.0, -73.5], "expected": 60.0}, {"input": [60.0, -73.0], "expected": 60.0}, {"input": [60.0, -72.5], "expected": 60.0}, {"input": [60.0, -72.0], "expected": 60.0}, {"input": [60.0, -71.5], "expected": 60.0}, {"input": [60.0, -71.0], "expected": 60.0}, {"input": [60.0, -70.5], "expected": 60.0}, {"input": [60.0, -70.0], "expected": 60.0}, {"input": [60.0, -69.5], "expected": 60.0}, {"input": [60.0, -69.0], "expected": 60.0}, {"input": [60.0, -68.5], "expected": 60.0}, {"input": [60.0, -68.0], "expected": 60.0}, {"input": [60.0, -67.5], "expected": 60.0}, {"input": [60.0, -67.0], "expected": 60.0}, {"input": [60.0, -66.5], "expected": 60.0}, {"input": [60.0, -66.0], "expected": 60.0}, {"input": [60.0, -65.5], "expected": 60.0}, {"input": [60.0, -65.0], "expected": 60.0}, {"input": [60.0, -64.5], "expected": 60.0}, {"input": [60.0, -64.0], "expected": 60.0}, {"input": [60.0, -63.5], "expected": 60.0}, {"input": [60.0, -63.0], "expected": 60.0}, {"input": [60.0, -62.5], "expected": 60.0}, {"input": [60.0, -62.0], "expected": 60.0}, {"input": [60.0, -61.5], "expected": 60.0}, {"input": [60.0, -61.0], "expected": 60.0}, {"input": [60.0, -60.5], "expected": 60.0}, {"input": [60.0, -60.0], "expected": 60.0}, {"input": [60.0, -59.5], "expected": 60.0}, {"input": [60.0, -59.0], "expected": 60.0}, {"input": [60.0, -58.5], "expected": 60.0}, {"input": [60.0, -58.0], "expected": 60.0}, {"input": [60.0, -57.5], "expected": 60.0}, {"input": [60.0, -57.0], "expected": 60.0}, {"input": [60.0, -56.5], "expected": 60.0}, {"input": [60.0, -56.0], "expected": 60.0}, {"input": [60.0, -55.5], "expected": 60.0}, {"input": [60.0, -55.0], "expected": 60.0}, {"input": [60.0, -54.5], "expected": 60.0}, {"input": [60.0, -54.0], "expected": 60.0}, {"input": [60.0, -53.5], "expected": 60.0}, {"input": [60.0, -53.0], "expected": 60.0}, {"input": [60.0, -52.5], "expected": 60.0}, {"input": [60.0, -52.0], "expected": 60.0}, {"input": [60.0, -51.5], "expected": 60.0}, {"input": [60.0, -51.0], "expected": 60.0}, {"input": [60.0, -50.5], "expected": 60.0}, {"input": [60.0, -50.0], "expected": 60.0}, {"input": [60.0, -49.5], "expected": 60.0}, {"input": [60.0, -49.0], "expected": 60.0}, {"input": [60.0, -48.5], "expected": 60.0}, {"input": [60.0, -48.0], "expected": 60.0}, {"input": [60.0, -47.5], "expected": 60.0}, {"input": [60.0, -47.0], "expected": 60.0}, {"input": [60.0, -46.5], "expected": 60.0}, {"input": [60.0, -46.0], "expected": 60.0}, {"input": [60.0, -45.5], "expected": 60.0}, {"input": [60.0, -45.0], "expected": 60.0}, {"input": [60.0, -44.5], "expected": 60.0}, {"input": [60.0, -44.0], "expected": 60.0}, {"input": [60.0, -43.5], "expected": 60.0}, {"input": [60.0, -43.0], "expected": 60.0}, {"input": [60.0, -42.5], "expected": 60.0}, {"input": [60.0, -42.0], "expected": 60.0}, {"input": [60.0, -41.5], "expected": 60.0}, {"input": [60.0, -41.0], "expected": 60.0}, {"input": [60.0, -40.5], "expected": 60.0}, {"input": [60.0, -40.0], "expected": 60.0}, {"input": [60.0, -39.5], "expected": 60.0}, {"input": [60.0, -39.0], "expected": 60.0}, {"input": [60.0, -38.5], "expected": 60.0}, {"input": [60.0, -38.0], "expected": 60.0}, {"input": [60.0, -37.5], "expected": 60.0}, {"input": [60.0, -37.0], "expected": 60.0}, {"input": [60.0, -36.5], "expected": 60.0}, {"input": [60.0, -36.0], "expected": 60.0}, {"input": [60.0, -35.5], "expected": 60.0}, {"input": [60.0, -35.0], "expected": 60.0}, {"input": [60.0, -34.5], "expected": 60.0}, {"input": [60.0, -34.0], "expected": 60.0}, {"input": [60.0, -33.5], "expected": 60.0}, {"input": [60.0, -33.0], "expected": 60.0}, {"input": [60.0, -32.5], "expected": 60.0}, {"input": [60.0, -32.0], "expected": 60.0}, {"input": [60.0, -31.5], "expected": 60.0}, {"input": [60.0, -31.0], "expected": 60.0}, {"input": [60.0, -30.5], "expected": 60.0}, {"input": [60.0, -30.0], "expected": 60.0}, {"input": [60.0, -29.5], "expected": 60.0}, {"input": [60.0, -29.0], "expected": 60.0}, {"input": [60.0, -28.5], "expected": 60.0}, {"input": [60.0, -28.0], "expected": 60.0}, {"input": [60.0, -27.5], "expected": 60.0}, {"input": [60.0, -27.0], "expected": 60.0}, {"input": [60.0, -26.5], "expected": 60.0}, {"input": [60.0, -26.0], "expected": 60.0}, {"input": [60.0, -25.5], "expected": 60.0}, {"input": [60.0, -25.0], "expected": 60.0}, {"input": [60.0, -24.5], "expected": 60.0}, {"input": [60.0, -24.0], "expected": 60.0}, {"input": [60.0, -23.5], "expected": 60.0}, {"input": [60.0, -23.0], "expected": 60.0}, {"input": [60.0, -22.5], "expected": 60.0}, {"input": [60.0, -22.0], "expected": 60.0}, {"input": [60.0, -21.5], "expected": 60.0}, {"input": [60.0, -21.0], "expected": 60.0}, {"input": [60.0, -20.5], "expected": 60.0}, {"input": [60.0, -20.0], "expected": 60.0}, {"input": [60.0, -19.5], "expected": 60.0}, {"input": [60.0, -19.0], "expected": 60.0}, {"input": [60.0, -18.5], "expected": 60.0}, {"input": [60.0, -18.0], "expected": 60.0}, {"input": [60.0, -17.5], "expected": 60.0}, {"input": [60.0, -17.0], "expected": 60.0}, {"input": [60.0, -16.5], "expected": 60.0}, {"input": [60.0, -16.0], "expected": 60.0}, {"input": [60.0, -15.5], "expected": 60.0}, {"input": [60.0, -15.0], "expected": 60.0}, {"input": [60.0, -14.5], "expected": 60.0}, {"input": [60.0, -14.0], "expected": 60.0}, {"input": [60.0, -13.5], "expected": 60.0}, {"input": [60.0, -13.0], "expected": 60.0}, {"input": [60.0, -12.5], "expected": 60.0}, {"input": [60.0, -12.0], "expected": 60.0}, {"input": [60.0, -11.5], "expected": 60.0}, {"input": [60.0, -11.0], "expected": 60.0}, {"input": [60.0, -10.5], "expected": 60.0}, {"input": [60.0, -10.0], "expected": 60.0}, {"input": [60.0, -9.5], "expected": 60.0}, {"input": [60.0, -9.0], "expected": 60.0}, {"input": [60.0, -8.5], "expected": 60.0}, {"input": [60.0, -8.0], "expected": 60.0}, {"input": [60.0, -7.5], "expected": 60.0}, {"input": [60.0, -7.0], "expected": 60.0}, {"input": [60.0, -6.5], "expected": 60.0}, {"input": [60.0, -6.0], "expected": 60.0}, {"input": [60.0, -5.5], "expected": 60.0}, {"input": [60.0, -5.0], "expected": 60.0}, {"input": [60.0, -4.5], "expected": 60.0}, {"input": [60.0, -4.0], "expected": 60.0}, {"input": [60.0, -3.5], "expected": 60.0}, {"input": [60.0, -3.0], "expected": 60.0}, {"input": [60.0, -2.5], "expected": 60.0}, {"input": [60.0, -2.0], "expected": 60.0}, {"input": [60.0, -1.5], "expected": 60.0}, {"input": [60.0, -1.0], "expected": 60.0}, {"input": [60.0, -0.5], "expected": 60.0}, {"input": [60.0, 0.0], "expected": 60.0}, {"input": [60.0, 0.5], "expected": 60.0}, {"input": [60.0, 1.0], "expected": 60.0}, {"input": [60.0, 1.5], "expected": 60.0}, {"input": [60.0, 2.0], "expected": 60.0}, {"input": [60.0, 2.5], "expected": 60.0}, {"input": [60.0, 3.0], "expected": 60.0}, {"input": [60.0, 3.5], "expected": 60.0}, {"input": [60.0, 4.0], "expected": 60.0}, {"input": [60.0, 4.5], "expected": 60.0}, {"input": [60.0, 5.0], "expected": 60.0}, {"input": [60.0, 5.5], "expected": 60.0}, {"input": [60.0, 6.0], "expected": 60.0}, {"input": [60.0, 6.5], "expected": 60.0}, {"input": [60.0, 7.0], "expected": 60.0}, {"input": [60.0, 7.5], "expected": 60.0}, {"input": [60.0, 8.0], "expected": 60.0}, {"input": [60.0, 8.5], "expected": 60.0}, {"input": [60.0, 9.0], "expected": 60.0}, {"input": [60.0, 9.5], "expected": 60.0}, {"input": [60.0, 10.0], "expected": 60.0}, {"input": [60.0, 10.5], "expected": 60.0}, {"input": [60.0, 11.0], "expected": 60.0}, {"input": [60.0, 11.5], "expected": 60.0}, {"input": [60.0, 12.0], "expected": 60.0}, {"input": [60.0, 12.5], "expected": 60.0}, {"input": [60.0, 13.0], "expected": 60.0}, {"input": [60.0, 13.5], "expected": 60.0}, {"input": [60.0, 14.0], "expected": 60.0}, {"input": [60.0, 14.5], "expected": 60.0}, {"input": [60.0, 15.0], "expected": 60.0}, {"input": [60.0, 15.5], "expected": 60.0}, {"input": [60.0, 16.0], "expected": 60.0}, {"input": [60.0, 16.5], "expected": 60.0}, {"input": [60.0, 17.0], "expected": 60.0}, {"input": [60.0, 17.5], "expected": 60.0}, {"input": [60.0, 18.0], "expected": 60.0}, {"input": [60.0, 18.5], "expected": 60.0}, {"input": [60.0, 19.0], "expected": 60.0}, {"input": [60.0, 19.5], "expected": 60.0}, {"input": [60.0, 20.0], "expected": 60.0}, {"input": [60.0, 20.5], "expected": 60.0}, {"input": [60.0, 21.0], "expected": 60.0}, {"input": [60.0, 21.5], "expected": 60.0}, {"input": [60.0, 22.0], "expected": 60.0}, {"input": [60.0, 22.5], "expected": 60.0}, {"input": [60.0, 23.0], "expected": 60.0}, {"input": [60.0, 23.5], "expected": 60.0}, {"input": [60.0, 24.0], "expected": 60.0}, {"input": [60.0, 24.5], "expected": 60.0}, {"input": [60.0, 25.0], "expected": 60.0}, {"input": [60.0, 25.5], "expected": 60.0}, {"input": [60.0, 26.0], "expected": 60.0}, {"input": [60.0, 26.5], "expected": 60.0}, {"input": [60.0, 27.0], "expected": 60.00000000000001}, {"input": [60.0, 27.5], "expected": 60.00000000000001}, {"input": [60.0, 28.0], "expected": 60.000000000000014}, {"input": [60.0, 28.5], "expected": 60.00000000000002}, {"input": [60.0, 29.0], "expected": 60.000000000000036}, {"input": [60.0, 29.5], "expected": 60.00000000000006}, {"input": [60.0, 30.0], "expected": 60.00000000000009}, {"input": [60.0, 30.5], "expected": 60.000000000000156}, {"input": [60.0, 31.0], "expected": 60.000000000000256}, {"input": [60.0, 31.5], "expected": 60.00000000000042}, {"input": [60.0, 32.0], "expected": 60.00000000000069}, {"input": [60.0, 32.5], "expected": 60.00000000000114}, {"input": [60.0, 33.0], "expected": 60.00000000000188}, {"input": [60.0, 33.5], "expected": 60.0000000000031}, {"input": [60.0, 34.0], "expected": 60.00000000000511}, {"input": [60.0, 34.5], "expected": 60.00000000000842}, {"input": [60.0, 35.0], "expected": 60.00000000001389}, {"input": [60.0, 35.5], "expected": 60.0000000000229}, {"input": [60.0, 36.0], "expected": 60.00000000003775}, {"input": [60.0, 36.5], "expected": 60.00000000006224}, {"input": [60.0, 37.0], "expected": 60.00000000010262}, {"input": [60.0, 37.5], "expected": 60.00000000016919}, {"input": [60.0, 38.0], "expected": 60.000000000278945}, {"input": [60.0, 38.5], "expected": 60.000000000459906}, {"input": [60.0, 39.0], "expected": 60.000000000758256}, {"input": [60.0, 39.5], "expected": 60.00000000125015}, {"input": [60.0, 40.0], "expected": 60.00000000206116}, {"input": [60.0, 40.5], "expected": 60.00000000339827}, {"input": [60.0, 41.0], "expected": 60.00000000560279}, {"input": [60.0, 41.5], "expected": 60.000000009237446}, {"input": [60.0, 42.0], "expected": 60.00000001522998}, {"input": [60.0, 42.5], "expected": 60.00000002510999}, {"input": [60.0, 43.0], "expected": 60.000000041399375}, {"input": [60.0, 43.5], "expected": 60.00000006825603}, {"input": [60.0, 44.0], "expected": 60.00000011253517}, {"input": [60.0, 44.5], "expected": 60.00000018553912}, {"input": [60.0, 45.0], "expected": 60.000000305902276}, {"input": [60.0, 45.5], "expected": 60.00000050434753}, {"input": [60.0, 46.0], "expected": 60.000000831528375}, {"input": [60.0, 46.5], "expected": 60.000001370958145}, {"input": [60.0, 47.0], "expected": 60.00000226032685}, {"input": [60.0, 47.5], "expected": 60.00000372664623}, {"input": [60.0, 48.0], "expected": 60.00000614419348}, {"input": [60.0, 48.5], "expected": 60.00001013004229}, {"input": [60.0, 49.0], "expected": 60.00001670156132}, {"input": [60.0, 49.5], "expected": 60.00002753607023}, {"input": [60.0, 50.0], "expected": 60.00004539889922}, {"input": [60.0, 50.5], "expected": 60.00007484902863}, {"input": [60.0, 51.0], "expected": 60.00012340218972}, {"input": [60.0, 51.5], "expected": 60.00020344767213}, {"input": [60.0, 52.0], "expected": 60.0003354063729}, {"input": [60.0, 52.5], "expected": 60.00055293147536}, {"input": [60.0, 53.0], "expected": 60.00091146645377}, {"input": [60.0, 53.5], "expected": 60.00150231015976}, {"input": [60.0, 54.0], "expected": 60.00247568513773}, {"input": [60.0, 54.5], "expected": 60.00407844327057}, {"input": [60.0, 55.0], "expected": 60.00671534848912}, {"input": [60.0, 55.5], "expected": 60.0110477448486}, {"input": [60.0, 56.0], "expected": 60.01814992791781}, {"input": [60.0, 56.5], "expected": 60.02975041827262}, {"input": [60.0, 57.0], "expected": 60.048587351573744}, {"input": [60.0, 57.5], "expected": 60.07888973429255}, {"input": [60.0, 58.0], "expected": 60.12692801104297}, {"input": [60.0, 58.5], "expected": 60.20141327798275}, {"input": [60.0, 59.0], "expected": 60.31326168751822}, {"input": [60.0, 59.5], "expected": 60.47407698418011}, {"input": [60.0, 60.0], "expected": 60.69314718055995}, {"input": [60.0, 60.5], "expected": 60.97407698418011}, {"input": [60.0, 61.0], "expected": 61.31326168751822}, {"input": [60.0, 61.5], "expected": 61.70141327798275}, {"input": [60.0, 62.0], "expected": 62.12692801104297}, {"input": [60.0, 62.5], "expected": 62.57888973429255}, {"input": [60.0, 63.0], "expected": 63.048587351573744}, {"input": [60.0, 63.5], "expected": 63.52975041827262}, {"input": [60.0, 64.0], "expected": 64.0181499279178}, {"input": [60.0, 64.5], "expected": 64.5110477448486}, {"input": [60.0, 65.0], "expected": 65.00671534848912}, {"input": [60.0, 65.5], "expected": 65.50407844327057}, {"input": [60.0, 66.0], "expected": 66.00247568513772}, {"input": [60.0, 66.5], "expected": 66.50150231015975}, {"input": [60.0, 67.0], "expected": 67.00091146645377}, {"input": [60.0, 67.5], "expected": 67.50055293147535}, {"input": [60.0, 68.0], "expected": 68.0003354063729}, {"input": [60.0, 68.5], "expected": 68.50020344767213}, {"input": [60.0, 69.0], "expected": 69.00012340218973}, {"input": [60.0, 69.5], "expected": 69.50007484902864}, {"input": [60.0, 70.0], "expected": 70.00004539889922}, {"input": [60.0, 70.5], "expected": 70.50002753607023}, {"input": [60.0, 71.0], "expected": 71.00001670156132}, {"input": [60.0, 71.5], "expected": 71.50001013004228}, {"input": [60.0, 72.0], "expected": 72.00000614419348}, {"input": [60.0, 72.5], "expected": 72.50000372664623}, {"input": [60.0, 73.0], "expected": 73.00000226032685}, {"input": [60.0, 73.5], "expected": 73.50000137095815}, {"input": [60.0, 74.0], "expected": 74.00000083152837}, {"input": [60.0, 74.5], "expected": 74.50000050434754}, {"input": [60.0, 75.0], "expected": 75.00000030590228}, {"input": [60.0, 75.5], "expected": 75.50000018553912}, {"input": [60.0, 76.0], "expected": 76.00000011253516}, {"input": [60.0, 76.5], "expected": 76.50000006825603}, {"input": [60.0, 77.0], "expected": 77.00000004139937}, {"input": [60.0, 77.5], "expected": 77.50000002511}, {"input": [60.0, 78.0], "expected": 78.00000001522999}, {"input": [60.0, 78.5], "expected": 78.50000000923745}, {"input": [60.0, 79.0], "expected": 79.0000000056028}, {"input": [60.0, 79.5], "expected": 79.50000000339827}, {"input": [60.0, 80.0], "expected": 80.00000000206116}, {"input": [60.0, 80.5], "expected": 80.50000000125016}, {"input": [60.0, 81.0], "expected": 81.00000000075826}, {"input": [60.0, 81.5], "expected": 81.5000000004599}, {"input": [60.0, 82.0], "expected": 82.00000000027894}, {"input": [60.0, 82.5], "expected": 82.5000000001692}, {"input": [60.0, 83.0], "expected": 83.00000000010262}, {"input": [60.0, 83.5], "expected": 83.50000000006224}, {"input": [60.0, 84.0], "expected": 84.00000000003776}, {"input": [60.0, 84.5], "expected": 84.5000000000229}, {"input": [60.0, 85.0], "expected": 85.00000000001388}, {"input": [60.0, 85.5], "expected": 85.50000000000843}, {"input": [60.0, 86.0], "expected": 86.00000000000512}, {"input": [60.0, 86.5], "expected": 86.5000000000031}, {"input": [60.0, 87.0], "expected": 87.00000000000188}, {"input": [60.0, 87.5], "expected": 87.50000000000114}, {"input": [60.0, 88.0], "expected": 88.0000000000007}, {"input": [60.0, 88.5], "expected": 88.50000000000043}, {"input": [60.0, 89.0], "expected": 89.00000000000026}, {"input": [60.0, 89.5], "expected": 89.50000000000016}, {"input": [60.0, 90.0], "expected": 90.0000000000001}, {"input": [60.0, 90.5], "expected": 90.50000000000006}, {"input": [60.0, 91.0], "expected": 91.00000000000003}, {"input": [60.0, 91.5], "expected": 91.50000000000001}, {"input": [60.0, 92.0], "expected": 92.00000000000001}, {"input": [60.0, 92.5], "expected": 92.50000000000001}, {"input": [60.0, 93.0], "expected": 93.0}, {"input": [60.0, 93.5], "expected": 93.5}, {"input": [60.0, 94.0], "expected": 94.0}, {"input": [60.0, 94.5], "expected": 94.5}, {"input": [60.0, 95.0], "expected": 95.0}, {"input": [60.0, 95.5], "expected": 95.5}, {"input": [60.0, 96.0], "expected": 96.0}, {"input": [60.0, 96.5], "expected": 96.5}, {"input": [60.0, 97.0], "expected": 97.0}, {"input": [60.0, 97.5], "expected": 97.5}, {"input": [60.0, 98.0], "expected": 98.0}, {"input": [60.0, 98.5], "expected": 98.5}, {"input": [60.0, 99.0], "expected": 99.0}, {"input": [60.0, 99.5], "expected": 99.5}, {"input": [60.5, -100.0], "expected": 60.5}, {"input": [60.5, -99.5], "expected": 60.5}, {"input": [60.5, -99.0], "expected": 60.5}, {"input": [60.5, -98.5], "expected": 60.5}, {"input": [60.5, -98.0], "expected": 60.5}, {"input": [60.5, -97.5], "expected": 60.5}, {"input": [60.5, -97.0], "expected": 60.5}, {"input": [60.5, -96.5], "expected": 60.5}, {"input": [60.5, -96.0], "expected": 60.5}, {"input": [60.5, -95.5], "expected": 60.5}, {"input": [60.5, -95.0], "expected": 60.5}, {"input": [60.5, -94.5], "expected": 60.5}, {"input": [60.5, -94.0], "expected": 60.5}, {"input": [60.5, -93.5], "expected": 60.5}, {"input": [60.5, -93.0], "expected": 60.5}, {"input": [60.5, -92.5], "expected": 60.5}, {"input": [60.5, -92.0], "expected": 60.5}, {"input": [60.5, -91.5], "expected": 60.5}, {"input": [60.5, -91.0], "expected": 60.5}, {"input": [60.5, -90.5], "expected": 60.5}, {"input": [60.5, -90.0], "expected": 60.5}, {"input": [60.5, -89.5], "expected": 60.5}, {"input": [60.5, -89.0], "expected": 60.5}, {"input": [60.5, -88.5], "expected": 60.5}, {"input": [60.5, -88.0], "expected": 60.5}, {"input": [60.5, -87.5], "expected": 60.5}, {"input": [60.5, -87.0], "expected": 60.5}, {"input": [60.5, -86.5], "expected": 60.5}, {"input": [60.5, -86.0], "expected": 60.5}, {"input": [60.5, -85.5], "expected": 60.5}, {"input": [60.5, -85.0], "expected": 60.5}, {"input": [60.5, -84.5], "expected": 60.5}, {"input": [60.5, -84.0], "expected": 60.5}, {"input": [60.5, -83.5], "expected": 60.5}, {"input": [60.5, -83.0], "expected": 60.5}, {"input": [60.5, -82.5], "expected": 60.5}, {"input": [60.5, -82.0], "expected": 60.5}, {"input": [60.5, -81.5], "expected": 60.5}, {"input": [60.5, -81.0], "expected": 60.5}, {"input": [60.5, -80.5], "expected": 60.5}, {"input": [60.5, -80.0], "expected": 60.5}, {"input": [60.5, -79.5], "expected": 60.5}, {"input": [60.5, -79.0], "expected": 60.5}, {"input": [60.5, -78.5], "expected": 60.5}, {"input": [60.5, -78.0], "expected": 60.5}, {"input": [60.5, -77.5], "expected": 60.5}, {"input": [60.5, -77.0], "expected": 60.5}, {"input": [60.5, -76.5], "expected": 60.5}, {"input": [60.5, -76.0], "expected": 60.5}, {"input": [60.5, -75.5], "expected": 60.5}, {"input": [60.5, -75.0], "expected": 60.5}, {"input": [60.5, -74.5], "expected": 60.5}, {"input": [60.5, -74.0], "expected": 60.5}, {"input": [60.5, -73.5], "expected": 60.5}, {"input": [60.5, -73.0], "expected": 60.5}, {"input": [60.5, -72.5], "expected": 60.5}, {"input": [60.5, -72.0], "expected": 60.5}, {"input": [60.5, -71.5], "expected": 60.5}, {"input": [60.5, -71.0], "expected": 60.5}, {"input": [60.5, -70.5], "expected": 60.5}, {"input": [60.5, -70.0], "expected": 60.5}, {"input": [60.5, -69.5], "expected": 60.5}, {"input": [60.5, -69.0], "expected": 60.5}, {"input": [60.5, -68.5], "expected": 60.5}, {"input": [60.5, -68.0], "expected": 60.5}, {"input": [60.5, -67.5], "expected": 60.5}, {"input": [60.5, -67.0], "expected": 60.5}, {"input": [60.5, -66.5], "expected": 60.5}, {"input": [60.5, -66.0], "expected": 60.5}, {"input": [60.5, -65.5], "expected": 60.5}, {"input": [60.5, -65.0], "expected": 60.5}, {"input": [60.5, -64.5], "expected": 60.5}, {"input": [60.5, -64.0], "expected": 60.5}, {"input": [60.5, -63.5], "expected": 60.5}, {"input": [60.5, -63.0], "expected": 60.5}, {"input": [60.5, -62.5], "expected": 60.5}, {"input": [60.5, -62.0], "expected": 60.5}, {"input": [60.5, -61.5], "expected": 60.5}, {"input": [60.5, -61.0], "expected": 60.5}, {"input": [60.5, -60.5], "expected": 60.5}, {"input": [60.5, -60.0], "expected": 60.5}, {"input": [60.5, -59.5], "expected": 60.5}, {"input": [60.5, -59.0], "expected": 60.5}, {"input": [60.5, -58.5], "expected": 60.5}, {"input": [60.5, -58.0], "expected": 60.5}, {"input": [60.5, -57.5], "expected": 60.5}, {"input": [60.5, -57.0], "expected": 60.5}, {"input": [60.5, -56.5], "expected": 60.5}, {"input": [60.5, -56.0], "expected": 60.5}, {"input": [60.5, -55.5], "expected": 60.5}, {"input": [60.5, -55.0], "expected": 60.5}, {"input": [60.5, -54.5], "expected": 60.5}, {"input": [60.5, -54.0], "expected": 60.5}, {"input": [60.5, -53.5], "expected": 60.5}, {"input": [60.5, -53.0], "expected": 60.5}, {"input": [60.5, -52.5], "expected": 60.5}, {"input": [60.5, -52.0], "expected": 60.5}, {"input": [60.5, -51.5], "expected": 60.5}, {"input": [60.5, -51.0], "expected": 60.5}, {"input": [60.5, -50.5], "expected": 60.5}, {"input": [60.5, -50.0], "expected": 60.5}, {"input": [60.5, -49.5], "expected": 60.5}, {"input": [60.5, -49.0], "expected": 60.5}, {"input": [60.5, -48.5], "expected": 60.5}, {"input": [60.5, -48.0], "expected": 60.5}, {"input": [60.5, -47.5], "expected": 60.5}, {"input": [60.5, -47.0], "expected": 60.5}, {"input": [60.5, -46.5], "expected": 60.5}, {"input": [60.5, -46.0], "expected": 60.5}, {"input": [60.5, -45.5], "expected": 60.5}, {"input": [60.5, -45.0], "expected": 60.5}, {"input": [60.5, -44.5], "expected": 60.5}, {"input": [60.5, -44.0], "expected": 60.5}, {"input": [60.5, -43.5], "expected": 60.5}, {"input": [60.5, -43.0], "expected": 60.5}, {"input": [60.5, -42.5], "expected": 60.5}, {"input": [60.5, -42.0], "expected": 60.5}, {"input": [60.5, -41.5], "expected": 60.5}, {"input": [60.5, -41.0], "expected": 60.5}, {"input": [60.5, -40.5], "expected": 60.5}, {"input": [60.5, -40.0], "expected": 60.5}, {"input": [60.5, -39.5], "expected": 60.5}, {"input": [60.5, -39.0], "expected": 60.5}, {"input": [60.5, -38.5], "expected": 60.5}, {"input": [60.5, -38.0], "expected": 60.5}, {"input": [60.5, -37.5], "expected": 60.5}, {"input": [60.5, -37.0], "expected": 60.5}, {"input": [60.5, -36.5], "expected": 60.5}, {"input": [60.5, -36.0], "expected": 60.5}, {"input": [60.5, -35.5], "expected": 60.5}, {"input": [60.5, -35.0], "expected": 60.5}, {"input": [60.5, -34.5], "expected": 60.5}, {"input": [60.5, -34.0], "expected": 60.5}, {"input": [60.5, -33.5], "expected": 60.5}, {"input": [60.5, -33.0], "expected": 60.5}, {"input": [60.5, -32.5], "expected": 60.5}, {"input": [60.5, -32.0], "expected": 60.5}, {"input": [60.5, -31.5], "expected": 60.5}, {"input": [60.5, -31.0], "expected": 60.5}, {"input": [60.5, -30.5], "expected": 60.5}, {"input": [60.5, -30.0], "expected": 60.5}, {"input": [60.5, -29.5], "expected": 60.5}, {"input": [60.5, -29.0], "expected": 60.5}, {"input": [60.5, -28.5], "expected": 60.5}, {"input": [60.5, -28.0], "expected": 60.5}, {"input": [60.5, -27.5], "expected": 60.5}, {"input": [60.5, -27.0], "expected": 60.5}, {"input": [60.5, -26.5], "expected": 60.5}, {"input": [60.5, -26.0], "expected": 60.5}, {"input": [60.5, -25.5], "expected": 60.5}, {"input": [60.5, -25.0], "expected": 60.5}, {"input": [60.5, -24.5], "expected": 60.5}, {"input": [60.5, -24.0], "expected": 60.5}, {"input": [60.5, -23.5], "expected": 60.5}, {"input": [60.5, -23.0], "expected": 60.5}, {"input": [60.5, -22.5], "expected": 60.5}, {"input": [60.5, -22.0], "expected": 60.5}, {"input": [60.5, -21.5], "expected": 60.5}, {"input": [60.5, -21.0], "expected": 60.5}, {"input": [60.5, -20.5], "expected": 60.5}, {"input": [60.5, -20.0], "expected": 60.5}, {"input": [60.5, -19.5], "expected": 60.5}, {"input": [60.5, -19.0], "expected": 60.5}, {"input": [60.5, -18.5], "expected": 60.5}, {"input": [60.5, -18.0], "expected": 60.5}, {"input": [60.5, -17.5], "expected": 60.5}, {"input": [60.5, -17.0], "expected": 60.5}, {"input": [60.5, -16.5], "expected": 60.5}, {"input": [60.5, -16.0], "expected": 60.5}, {"input": [60.5, -15.5], "expected": 60.5}, {"input": [60.5, -15.0], "expected": 60.5}, {"input": [60.5, -14.5], "expected": 60.5}, {"input": [60.5, -14.0], "expected": 60.5}, {"input": [60.5, -13.5], "expected": 60.5}, {"input": [60.5, -13.0], "expected": 60.5}, {"input": [60.5, -12.5], "expected": 60.5}, {"input": [60.5, -12.0], "expected": 60.5}, {"input": [60.5, -11.5], "expected": 60.5}, {"input": [60.5, -11.0], "expected": 60.5}, {"input": [60.5, -10.5], "expected": 60.5}, {"input": [60.5, -10.0], "expected": 60.5}, {"input": [60.5, -9.5], "expected": 60.5}, {"input": [60.5, -9.0], "expected": 60.5}, {"input": [60.5, -8.5], "expected": 60.5}, {"input": [60.5, -8.0], "expected": 60.5}, {"input": [60.5, -7.5], "expected": 60.5}, {"input": [60.5, -7.0], "expected": 60.5}, {"input": [60.5, -6.5], "expected": 60.5}, {"input": [60.5, -6.0], "expected": 60.5}, {"input": [60.5, -5.5], "expected": 60.5}, {"input": [60.5, -5.0], "expected": 60.5}, {"input": [60.5, -4.5], "expected": 60.5}, {"input": [60.5, -4.0], "expected": 60.5}, {"input": [60.5, -3.5], "expected": 60.5}, {"input": [60.5, -3.0], "expected": 60.5}, {"input": [60.5, -2.5], "expected": 60.5}, {"input": [60.5, -2.0], "expected": 60.5}, {"input": [60.5, -1.5], "expected": 60.5}, {"input": [60.5, -1.0], "expected": 60.5}, {"input": [60.5, -0.5], "expected": 60.5}, {"input": [60.5, 0.0], "expected": 60.5}, {"input": [60.5, 0.5], "expected": 60.5}, {"input": [60.5, 1.0], "expected": 60.5}, {"input": [60.5, 1.5], "expected": 60.5}, {"input": [60.5, 2.0], "expected": 60.5}, {"input": [60.5, 2.5], "expected": 60.5}, {"input": [60.5, 3.0], "expected": 60.5}, {"input": [60.5, 3.5], "expected": 60.5}, {"input": [60.5, 4.0], "expected": 60.5}, {"input": [60.5, 4.5], "expected": 60.5}, {"input": [60.5, 5.0], "expected": 60.5}, {"input": [60.5, 5.5], "expected": 60.5}, {"input": [60.5, 6.0], "expected": 60.5}, {"input": [60.5, 6.5], "expected": 60.5}, {"input": [60.5, 7.0], "expected": 60.5}, {"input": [60.5, 7.5], "expected": 60.5}, {"input": [60.5, 8.0], "expected": 60.5}, {"input": [60.5, 8.5], "expected": 60.5}, {"input": [60.5, 9.0], "expected": 60.5}, {"input": [60.5, 9.5], "expected": 60.5}, {"input": [60.5, 10.0], "expected": 60.5}, {"input": [60.5, 10.5], "expected": 60.5}, {"input": [60.5, 11.0], "expected": 60.5}, {"input": [60.5, 11.5], "expected": 60.5}, {"input": [60.5, 12.0], "expected": 60.5}, {"input": [60.5, 12.5], "expected": 60.5}, {"input": [60.5, 13.0], "expected": 60.5}, {"input": [60.5, 13.5], "expected": 60.5}, {"input": [60.5, 14.0], "expected": 60.5}, {"input": [60.5, 14.5], "expected": 60.5}, {"input": [60.5, 15.0], "expected": 60.5}, {"input": [60.5, 15.5], "expected": 60.5}, {"input": [60.5, 16.0], "expected": 60.5}, {"input": [60.5, 16.5], "expected": 60.5}, {"input": [60.5, 17.0], "expected": 60.5}, {"input": [60.5, 17.5], "expected": 60.5}, {"input": [60.5, 18.0], "expected": 60.5}, {"input": [60.5, 18.5], "expected": 60.5}, {"input": [60.5, 19.0], "expected": 60.5}, {"input": [60.5, 19.5], "expected": 60.5}, {"input": [60.5, 20.0], "expected": 60.5}, {"input": [60.5, 20.5], "expected": 60.5}, {"input": [60.5, 21.0], "expected": 60.5}, {"input": [60.5, 21.5], "expected": 60.5}, {"input": [60.5, 22.0], "expected": 60.5}, {"input": [60.5, 22.5], "expected": 60.5}, {"input": [60.5, 23.0], "expected": 60.5}, {"input": [60.5, 23.5], "expected": 60.5}, {"input": [60.5, 24.0], "expected": 60.5}, {"input": [60.5, 24.5], "expected": 60.5}, {"input": [60.5, 25.0], "expected": 60.5}, {"input": [60.5, 25.5], "expected": 60.5}, {"input": [60.5, 26.0], "expected": 60.5}, {"input": [60.5, 26.5], "expected": 60.5}, {"input": [60.5, 27.0], "expected": 60.5}, {"input": [60.5, 27.5], "expected": 60.50000000000001}, {"input": [60.5, 28.0], "expected": 60.50000000000001}, {"input": [60.5, 28.5], "expected": 60.500000000000014}, {"input": [60.5, 29.0], "expected": 60.50000000000002}, {"input": [60.5, 29.5], "expected": 60.500000000000036}, {"input": [60.5, 30.0], "expected": 60.50000000000006}, {"input": [60.5, 30.5], "expected": 60.50000000000009}, {"input": [60.5, 31.0], "expected": 60.500000000000156}, {"input": [60.5, 31.5], "expected": 60.500000000000256}, {"input": [60.5, 32.0], "expected": 60.50000000000042}, {"input": [60.5, 32.5], "expected": 60.50000000000069}, {"input": [60.5, 33.0], "expected": 60.50000000000114}, {"input": [60.5, 33.5], "expected": 60.50000000000188}, {"input": [60.5, 34.0], "expected": 60.5000000000031}, {"input": [60.5, 34.5], "expected": 60.50000000000511}, {"input": [60.5, 35.0], "expected": 60.50000000000842}, {"input": [60.5, 35.5], "expected": 60.50000000001389}, {"input": [60.5, 36.0], "expected": 60.5000000000229}, {"input": [60.5, 36.5], "expected": 60.50000000003775}, {"input": [60.5, 37.0], "expected": 60.50000000006224}, {"input": [60.5, 37.5], "expected": 60.50000000010262}, {"input": [60.5, 38.0], "expected": 60.50000000016919}, {"input": [60.5, 38.5], "expected": 60.500000000278945}, {"input": [60.5, 39.0], "expected": 60.500000000459906}, {"input": [60.5, 39.5], "expected": 60.500000000758256}, {"input": [60.5, 40.0], "expected": 60.50000000125015}, {"input": [60.5, 40.5], "expected": 60.50000000206116}, {"input": [60.5, 41.0], "expected": 60.50000000339827}, {"input": [60.5, 41.5], "expected": 60.50000000560279}, {"input": [60.5, 42.0], "expected": 60.500000009237446}, {"input": [60.5, 42.5], "expected": 60.50000001522998}, {"input": [60.5, 43.0], "expected": 60.50000002510999}, {"input": [60.5, 43.5], "expected": 60.500000041399375}, {"input": [60.5, 44.0], "expected": 60.50000006825603}, {"input": [60.5, 44.5], "expected": 60.50000011253517}, {"input": [60.5, 45.0], "expected": 60.50000018553912}, {"input": [60.5, 45.5], "expected": 60.500000305902276}, {"input": [60.5, 46.0], "expected": 60.50000050434753}, {"input": [60.5, 46.5], "expected": 60.500000831528375}, {"input": [60.5, 47.0], "expected": 60.500001370958145}, {"input": [60.5, 47.5], "expected": 60.50000226032685}, {"input": [60.5, 48.0], "expected": 60.50000372664623}, {"input": [60.5, 48.5], "expected": 60.50000614419348}, {"input": [60.5, 49.0], "expected": 60.50001013004229}, {"input": [60.5, 49.5], "expected": 60.50001670156132}, {"input": [60.5, 50.0], "expected": 60.50002753607023}, {"input": [60.5, 50.5], "expected": 60.50004539889922}, {"input": [60.5, 51.0], "expected": 60.50007484902863}, {"input": [60.5, 51.5], "expected": 60.50012340218972}, {"input": [60.5, 52.0], "expected": 60.50020344767213}, {"input": [60.5, 52.5], "expected": 60.5003354063729}, {"input": [60.5, 53.0], "expected": 60.50055293147536}, {"input": [60.5, 53.5], "expected": 60.50091146645377}, {"input": [60.5, 54.0], "expected": 60.50150231015976}, {"input": [60.5, 54.5], "expected": 60.50247568513773}, {"input": [60.5, 55.0], "expected": 60.50407844327057}, {"input": [60.5, 55.5], "expected": 60.50671534848912}, {"input": [60.5, 56.0], "expected": 60.5110477448486}, {"input": [60.5, 56.5], "expected": 60.51814992791781}, {"input": [60.5, 57.0], "expected": 60.52975041827262}, {"input": [60.5, 57.5], "expected": 60.548587351573744}, {"input": [60.5, 58.0], "expected": 60.57888973429255}, {"input": [60.5, 58.5], "expected": 60.62692801104297}, {"input": [60.5, 59.0], "expected": 60.70141327798275}, {"input": [60.5, 59.5], "expected": 60.81326168751822}, {"input": [60.5, 60.0], "expected": 60.97407698418011}, {"input": [60.5, 60.5], "expected": 61.19314718055995}, {"input": [60.5, 61.0], "expected": 61.47407698418011}, {"input": [60.5, 61.5], "expected": 61.81326168751822}, {"input": [60.5, 62.0], "expected": 62.20141327798275}, {"input": [60.5, 62.5], "expected": 62.62692801104297}, {"input": [60.5, 63.0], "expected": 63.07888973429255}, {"input": [60.5, 63.5], "expected": 63.548587351573744}, {"input": [60.5, 64.0], "expected": 64.02975041827263}, {"input": [60.5, 64.5], "expected": 64.5181499279178}, {"input": [60.5, 65.0], "expected": 65.0110477448486}, {"input": [60.5, 65.5], "expected": 65.50671534848912}, {"input": [60.5, 66.0], "expected": 66.00407844327057}, {"input": [60.5, 66.5], "expected": 66.50247568513772}, {"input": [60.5, 67.0], "expected": 67.00150231015975}, {"input": [60.5, 67.5], "expected": 67.50091146645377}, {"input": [60.5, 68.0], "expected": 68.00055293147535}, {"input": [60.5, 68.5], "expected": 68.5003354063729}, {"input": [60.5, 69.0], "expected": 69.00020344767213}, {"input": [60.5, 69.5], "expected": 69.50012340218973}, {"input": [60.5, 70.0], "expected": 70.00007484902864}, {"input": [60.5, 70.5], "expected": 70.50004539889922}, {"input": [60.5, 71.0], "expected": 71.00002753607023}, {"input": [60.5, 71.5], "expected": 71.50001670156132}, {"input": [60.5, 72.0], "expected": 72.00001013004228}, {"input": [60.5, 72.5], "expected": 72.50000614419348}, {"input": [60.5, 73.0], "expected": 73.00000372664623}, {"input": [60.5, 73.5], "expected": 73.50000226032685}, {"input": [60.5, 74.0], "expected": 74.00000137095815}, {"input": [60.5, 74.5], "expected": 74.50000083152837}, {"input": [60.5, 75.0], "expected": 75.00000050434754}, {"input": [60.5, 75.5], "expected": 75.50000030590228}, {"input": [60.5, 76.0], "expected": 76.00000018553912}, {"input": [60.5, 76.5], "expected": 76.50000011253516}, {"input": [60.5, 77.0], "expected": 77.00000006825603}, {"input": [60.5, 77.5], "expected": 77.50000004139937}, {"input": [60.5, 78.0], "expected": 78.00000002511}, {"input": [60.5, 78.5], "expected": 78.50000001522999}, {"input": [60.5, 79.0], "expected": 79.00000000923745}, {"input": [60.5, 79.5], "expected": 79.5000000056028}, {"input": [60.5, 80.0], "expected": 80.00000000339827}, {"input": [60.5, 80.5], "expected": 80.50000000206116}, {"input": [60.5, 81.0], "expected": 81.00000000125016}, {"input": [60.5, 81.5], "expected": 81.50000000075826}, {"input": [60.5, 82.0], "expected": 82.0000000004599}, {"input": [60.5, 82.5], "expected": 82.50000000027894}, {"input": [60.5, 83.0], "expected": 83.0000000001692}, {"input": [60.5, 83.5], "expected": 83.50000000010262}, {"input": [60.5, 84.0], "expected": 84.00000000006224}, {"input": [60.5, 84.5], "expected": 84.50000000003776}, {"input": [60.5, 85.0], "expected": 85.0000000000229}, {"input": [60.5, 85.5], "expected": 85.50000000001388}, {"input": [60.5, 86.0], "expected": 86.00000000000843}, {"input": [60.5, 86.5], "expected": 86.50000000000512}, {"input": [60.5, 87.0], "expected": 87.0000000000031}, {"input": [60.5, 87.5], "expected": 87.50000000000188}, {"input": [60.5, 88.0], "expected": 88.00000000000114}, {"input": [60.5, 88.5], "expected": 88.5000000000007}, {"input": [60.5, 89.0], "expected": 89.00000000000043}, {"input": [60.5, 89.5], "expected": 89.50000000000026}, {"input": [60.5, 90.0], "expected": 90.00000000000016}, {"input": [60.5, 90.5], "expected": 90.5000000000001}, {"input": [60.5, 91.0], "expected": 91.00000000000006}, {"input": [60.5, 91.5], "expected": 91.50000000000003}, {"input": [60.5, 92.0], "expected": 92.00000000000001}, {"input": [60.5, 92.5], "expected": 92.50000000000001}, {"input": [60.5, 93.0], "expected": 93.00000000000001}, {"input": [60.5, 93.5], "expected": 93.5}, {"input": [60.5, 94.0], "expected": 94.0}, {"input": [60.5, 94.5], "expected": 94.5}, {"input": [60.5, 95.0], "expected": 95.0}, {"input": [60.5, 95.5], "expected": 95.5}, {"input": [60.5, 96.0], "expected": 96.0}, {"input": [60.5, 96.5], "expected": 96.5}, {"input": [60.5, 97.0], "expected": 97.0}, {"input": [60.5, 97.5], "expected": 97.5}, {"input": [60.5, 98.0], "expected": 98.0}, {"input": [60.5, 98.5], "expected": 98.5}, {"input": [60.5, 99.0], "expected": 99.0}, {"input": [60.5, 99.5], "expected": 99.5}, {"input": [61.0, -100.0], "expected": 61.0}, {"input": [61.0, -99.5], "expected": 61.0}, {"input": [61.0, -99.0], "expected": 61.0}, {"input": [61.0, -98.5], "expected": 61.0}, {"input": [61.0, -98.0], "expected": 61.0}, {"input": [61.0, -97.5], "expected": 61.0}, {"input": [61.0, -97.0], "expected": 61.0}, {"input": [61.0, -96.5], "expected": 61.0}, {"input": [61.0, -96.0], "expected": 61.0}, {"input": [61.0, -95.5], "expected": 61.0}, {"input": [61.0, -95.0], "expected": 61.0}, {"input": [61.0, -94.5], "expected": 61.0}, {"input": [61.0, -94.0], "expected": 61.0}, {"input": [61.0, -93.5], "expected": 61.0}, {"input": [61.0, -93.0], "expected": 61.0}, {"input": [61.0, -92.5], "expected": 61.0}, {"input": [61.0, -92.0], "expected": 61.0}, {"input": [61.0, -91.5], "expected": 61.0}, {"input": [61.0, -91.0], "expected": 61.0}, {"input": [61.0, -90.5], "expected": 61.0}, {"input": [61.0, -90.0], "expected": 61.0}, {"input": [61.0, -89.5], "expected": 61.0}, {"input": [61.0, -89.0], "expected": 61.0}, {"input": [61.0, -88.5], "expected": 61.0}, {"input": [61.0, -88.0], "expected": 61.0}, {"input": [61.0, -87.5], "expected": 61.0}, {"input": [61.0, -87.0], "expected": 61.0}, {"input": [61.0, -86.5], "expected": 61.0}, {"input": [61.0, -86.0], "expected": 61.0}, {"input": [61.0, -85.5], "expected": 61.0}, {"input": [61.0, -85.0], "expected": 61.0}, {"input": [61.0, -84.5], "expected": 61.0}, {"input": [61.0, -84.0], "expected": 61.0}, {"input": [61.0, -83.5], "expected": 61.0}, {"input": [61.0, -83.0], "expected": 61.0}, {"input": [61.0, -82.5], "expected": 61.0}, {"input": [61.0, -82.0], "expected": 61.0}, {"input": [61.0, -81.5], "expected": 61.0}, {"input": [61.0, -81.0], "expected": 61.0}, {"input": [61.0, -80.5], "expected": 61.0}, {"input": [61.0, -80.0], "expected": 61.0}, {"input": [61.0, -79.5], "expected": 61.0}, {"input": [61.0, -79.0], "expected": 61.0}, {"input": [61.0, -78.5], "expected": 61.0}, {"input": [61.0, -78.0], "expected": 61.0}, {"input": [61.0, -77.5], "expected": 61.0}, {"input": [61.0, -77.0], "expected": 61.0}, {"input": [61.0, -76.5], "expected": 61.0}, {"input": [61.0, -76.0], "expected": 61.0}, {"input": [61.0, -75.5], "expected": 61.0}, {"input": [61.0, -75.0], "expected": 61.0}, {"input": [61.0, -74.5], "expected": 61.0}, {"input": [61.0, -74.0], "expected": 61.0}, {"input": [61.0, -73.5], "expected": 61.0}, {"input": [61.0, -73.0], "expected": 61.0}, {"input": [61.0, -72.5], "expected": 61.0}, {"input": [61.0, -72.0], "expected": 61.0}, {"input": [61.0, -71.5], "expected": 61.0}, {"input": [61.0, -71.0], "expected": 61.0}, {"input": [61.0, -70.5], "expected": 61.0}, {"input": [61.0, -70.0], "expected": 61.0}, {"input": [61.0, -69.5], "expected": 61.0}, {"input": [61.0, -69.0], "expected": 61.0}, {"input": [61.0, -68.5], "expected": 61.0}, {"input": [61.0, -68.0], "expected": 61.0}, {"input": [61.0, -67.5], "expected": 61.0}, {"input": [61.0, -67.0], "expected": 61.0}, {"input": [61.0, -66.5], "expected": 61.0}, {"input": [61.0, -66.0], "expected": 61.0}, {"input": [61.0, -65.5], "expected": 61.0}, {"input": [61.0, -65.0], "expected": 61.0}, {"input": [61.0, -64.5], "expected": 61.0}, {"input": [61.0, -64.0], "expected": 61.0}, {"input": [61.0, -63.5], "expected": 61.0}, {"input": [61.0, -63.0], "expected": 61.0}, {"input": [61.0, -62.5], "expected": 61.0}, {"input": [61.0, -62.0], "expected": 61.0}, {"input": [61.0, -61.5], "expected": 61.0}, {"input": [61.0, -61.0], "expected": 61.0}, {"input": [61.0, -60.5], "expected": 61.0}, {"input": [61.0, -60.0], "expected": 61.0}, {"input": [61.0, -59.5], "expected": 61.0}, {"input": [61.0, -59.0], "expected": 61.0}, {"input": [61.0, -58.5], "expected": 61.0}, {"input": [61.0, -58.0], "expected": 61.0}, {"input": [61.0, -57.5], "expected": 61.0}, {"input": [61.0, -57.0], "expected": 61.0}, {"input": [61.0, -56.5], "expected": 61.0}, {"input": [61.0, -56.0], "expected": 61.0}, {"input": [61.0, -55.5], "expected": 61.0}, {"input": [61.0, -55.0], "expected": 61.0}, {"input": [61.0, -54.5], "expected": 61.0}, {"input": [61.0, -54.0], "expected": 61.0}, {"input": [61.0, -53.5], "expected": 61.0}, {"input": [61.0, -53.0], "expected": 61.0}, {"input": [61.0, -52.5], "expected": 61.0}, {"input": [61.0, -52.0], "expected": 61.0}, {"input": [61.0, -51.5], "expected": 61.0}, {"input": [61.0, -51.0], "expected": 61.0}, {"input": [61.0, -50.5], "expected": 61.0}, {"input": [61.0, -50.0], "expected": 61.0}, {"input": [61.0, -49.5], "expected": 61.0}, {"input": [61.0, -49.0], "expected": 61.0}, {"input": [61.0, -48.5], "expected": 61.0}, {"input": [61.0, -48.0], "expected": 61.0}, {"input": [61.0, -47.5], "expected": 61.0}, {"input": [61.0, -47.0], "expected": 61.0}, {"input": [61.0, -46.5], "expected": 61.0}, {"input": [61.0, -46.0], "expected": 61.0}, {"input": [61.0, -45.5], "expected": 61.0}, {"input": [61.0, -45.0], "expected": 61.0}, {"input": [61.0, -44.5], "expected": 61.0}, {"input": [61.0, -44.0], "expected": 61.0}, {"input": [61.0, -43.5], "expected": 61.0}, {"input": [61.0, -43.0], "expected": 61.0}, {"input": [61.0, -42.5], "expected": 61.0}, {"input": [61.0, -42.0], "expected": 61.0}, {"input": [61.0, -41.5], "expected": 61.0}, {"input": [61.0, -41.0], "expected": 61.0}, {"input": [61.0, -40.5], "expected": 61.0}, {"input": [61.0, -40.0], "expected": 61.0}, {"input": [61.0, -39.5], "expected": 61.0}, {"input": [61.0, -39.0], "expected": 61.0}, {"input": [61.0, -38.5], "expected": 61.0}, {"input": [61.0, -38.0], "expected": 61.0}, {"input": [61.0, -37.5], "expected": 61.0}, {"input": [61.0, -37.0], "expected": 61.0}, {"input": [61.0, -36.5], "expected": 61.0}, {"input": [61.0, -36.0], "expected": 61.0}, {"input": [61.0, -35.5], "expected": 61.0}, {"input": [61.0, -35.0], "expected": 61.0}, {"input": [61.0, -34.5], "expected": 61.0}, {"input": [61.0, -34.0], "expected": 61.0}, {"input": [61.0, -33.5], "expected": 61.0}, {"input": [61.0, -33.0], "expected": 61.0}, {"input": [61.0, -32.5], "expected": 61.0}, {"input": [61.0, -32.0], "expected": 61.0}, {"input": [61.0, -31.5], "expected": 61.0}, {"input": [61.0, -31.0], "expected": 61.0}, {"input": [61.0, -30.5], "expected": 61.0}, {"input": [61.0, -30.0], "expected": 61.0}, {"input": [61.0, -29.5], "expected": 61.0}, {"input": [61.0, -29.0], "expected": 61.0}, {"input": [61.0, -28.5], "expected": 61.0}, {"input": [61.0, -28.0], "expected": 61.0}, {"input": [61.0, -27.5], "expected": 61.0}, {"input": [61.0, -27.0], "expected": 61.0}, {"input": [61.0, -26.5], "expected": 61.0}, {"input": [61.0, -26.0], "expected": 61.0}, {"input": [61.0, -25.5], "expected": 61.0}, {"input": [61.0, -25.0], "expected": 61.0}, {"input": [61.0, -24.5], "expected": 61.0}, {"input": [61.0, -24.0], "expected": 61.0}, {"input": [61.0, -23.5], "expected": 61.0}, {"input": [61.0, -23.0], "expected": 61.0}, {"input": [61.0, -22.5], "expected": 61.0}, {"input": [61.0, -22.0], "expected": 61.0}, {"input": [61.0, -21.5], "expected": 61.0}, {"input": [61.0, -21.0], "expected": 61.0}, {"input": [61.0, -20.5], "expected": 61.0}, {"input": [61.0, -20.0], "expected": 61.0}, {"input": [61.0, -19.5], "expected": 61.0}, {"input": [61.0, -19.0], "expected": 61.0}, {"input": [61.0, -18.5], "expected": 61.0}, {"input": [61.0, -18.0], "expected": 61.0}, {"input": [61.0, -17.5], "expected": 61.0}, {"input": [61.0, -17.0], "expected": 61.0}, {"input": [61.0, -16.5], "expected": 61.0}, {"input": [61.0, -16.0], "expected": 61.0}, {"input": [61.0, -15.5], "expected": 61.0}, {"input": [61.0, -15.0], "expected": 61.0}, {"input": [61.0, -14.5], "expected": 61.0}, {"input": [61.0, -14.0], "expected": 61.0}, {"input": [61.0, -13.5], "expected": 61.0}, {"input": [61.0, -13.0], "expected": 61.0}, {"input": [61.0, -12.5], "expected": 61.0}, {"input": [61.0, -12.0], "expected": 61.0}, {"input": [61.0, -11.5], "expected": 61.0}, {"input": [61.0, -11.0], "expected": 61.0}, {"input": [61.0, -10.5], "expected": 61.0}, {"input": [61.0, -10.0], "expected": 61.0}, {"input": [61.0, -9.5], "expected": 61.0}, {"input": [61.0, -9.0], "expected": 61.0}, {"input": [61.0, -8.5], "expected": 61.0}, {"input": [61.0, -8.0], "expected": 61.0}, {"input": [61.0, -7.5], "expected": 61.0}, {"input": [61.0, -7.0], "expected": 61.0}, {"input": [61.0, -6.5], "expected": 61.0}, {"input": [61.0, -6.0], "expected": 61.0}, {"input": [61.0, -5.5], "expected": 61.0}, {"input": [61.0, -5.0], "expected": 61.0}, {"input": [61.0, -4.5], "expected": 61.0}, {"input": [61.0, -4.0], "expected": 61.0}, {"input": [61.0, -3.5], "expected": 61.0}, {"input": [61.0, -3.0], "expected": 61.0}, {"input": [61.0, -2.5], "expected": 61.0}, {"input": [61.0, -2.0], "expected": 61.0}, {"input": [61.0, -1.5], "expected": 61.0}, {"input": [61.0, -1.0], "expected": 61.0}, {"input": [61.0, -0.5], "expected": 61.0}, {"input": [61.0, 0.0], "expected": 61.0}, {"input": [61.0, 0.5], "expected": 61.0}, {"input": [61.0, 1.0], "expected": 61.0}, {"input": [61.0, 1.5], "expected": 61.0}, {"input": [61.0, 2.0], "expected": 61.0}, {"input": [61.0, 2.5], "expected": 61.0}, {"input": [61.0, 3.0], "expected": 61.0}, {"input": [61.0, 3.5], "expected": 61.0}, {"input": [61.0, 4.0], "expected": 61.0}, {"input": [61.0, 4.5], "expected": 61.0}, {"input": [61.0, 5.0], "expected": 61.0}, {"input": [61.0, 5.5], "expected": 61.0}, {"input": [61.0, 6.0], "expected": 61.0}, {"input": [61.0, 6.5], "expected": 61.0}, {"input": [61.0, 7.0], "expected": 61.0}, {"input": [61.0, 7.5], "expected": 61.0}, {"input": [61.0, 8.0], "expected": 61.0}, {"input": [61.0, 8.5], "expected": 61.0}, {"input": [61.0, 9.0], "expected": 61.0}, {"input": [61.0, 9.5], "expected": 61.0}, {"input": [61.0, 10.0], "expected": 61.0}, {"input": [61.0, 10.5], "expected": 61.0}, {"input": [61.0, 11.0], "expected": 61.0}, {"input": [61.0, 11.5], "expected": 61.0}, {"input": [61.0, 12.0], "expected": 61.0}, {"input": [61.0, 12.5], "expected": 61.0}, {"input": [61.0, 13.0], "expected": 61.0}, {"input": [61.0, 13.5], "expected": 61.0}, {"input": [61.0, 14.0], "expected": 61.0}, {"input": [61.0, 14.5], "expected": 61.0}, {"input": [61.0, 15.0], "expected": 61.0}, {"input": [61.0, 15.5], "expected": 61.0}, {"input": [61.0, 16.0], "expected": 61.0}, {"input": [61.0, 16.5], "expected": 61.0}, {"input": [61.0, 17.0], "expected": 61.0}, {"input": [61.0, 17.5], "expected": 61.0}, {"input": [61.0, 18.0], "expected": 61.0}, {"input": [61.0, 18.5], "expected": 61.0}, {"input": [61.0, 19.0], "expected": 61.0}, {"input": [61.0, 19.5], "expected": 61.0}, {"input": [61.0, 20.0], "expected": 61.0}, {"input": [61.0, 20.5], "expected": 61.0}, {"input": [61.0, 21.0], "expected": 61.0}, {"input": [61.0, 21.5], "expected": 61.0}, {"input": [61.0, 22.0], "expected": 61.0}, {"input": [61.0, 22.5], "expected": 61.0}, {"input": [61.0, 23.0], "expected": 61.0}, {"input": [61.0, 23.5], "expected": 61.0}, {"input": [61.0, 24.0], "expected": 61.0}, {"input": [61.0, 24.5], "expected": 61.0}, {"input": [61.0, 25.0], "expected": 61.0}, {"input": [61.0, 25.5], "expected": 61.0}, {"input": [61.0, 26.0], "expected": 61.0}, {"input": [61.0, 26.5], "expected": 61.0}, {"input": [61.0, 27.0], "expected": 61.0}, {"input": [61.0, 27.5], "expected": 61.0}, {"input": [61.0, 28.0], "expected": 61.00000000000001}, {"input": [61.0, 28.5], "expected": 61.00000000000001}, {"input": [61.0, 29.0], "expected": 61.000000000000014}, {"input": [61.0, 29.5], "expected": 61.00000000000002}, {"input": [61.0, 30.0], "expected": 61.000000000000036}, {"input": [61.0, 30.5], "expected": 61.00000000000006}, {"input": [61.0, 31.0], "expected": 61.00000000000009}, {"input": [61.0, 31.5], "expected": 61.000000000000156}, {"input": [61.0, 32.0], "expected": 61.000000000000256}, {"input": [61.0, 32.5], "expected": 61.00000000000042}, {"input": [61.0, 33.0], "expected": 61.00000000000069}, {"input": [61.0, 33.5], "expected": 61.00000000000114}, {"input": [61.0, 34.0], "expected": 61.00000000000188}, {"input": [61.0, 34.5], "expected": 61.0000000000031}, {"input": [61.0, 35.0], "expected": 61.00000000000511}, {"input": [61.0, 35.5], "expected": 61.00000000000842}, {"input": [61.0, 36.0], "expected": 61.00000000001389}, {"input": [61.0, 36.5], "expected": 61.0000000000229}, {"input": [61.0, 37.0], "expected": 61.00000000003775}, {"input": [61.0, 37.5], "expected": 61.00000000006224}, {"input": [61.0, 38.0], "expected": 61.00000000010262}, {"input": [61.0, 38.5], "expected": 61.00000000016919}, {"input": [61.0, 39.0], "expected": 61.000000000278945}, {"input": [61.0, 39.5], "expected": 61.000000000459906}, {"input": [61.0, 40.0], "expected": 61.000000000758256}, {"input": [61.0, 40.5], "expected": 61.00000000125015}, {"input": [61.0, 41.0], "expected": 61.00000000206116}, {"input": [61.0, 41.5], "expected": 61.00000000339827}, {"input": [61.0, 42.0], "expected": 61.00000000560279}, {"input": [61.0, 42.5], "expected": 61.000000009237446}, {"input": [61.0, 43.0], "expected": 61.00000001522998}, {"input": [61.0, 43.5], "expected": 61.00000002510999}, {"input": [61.0, 44.0], "expected": 61.000000041399375}, {"input": [61.0, 44.5], "expected": 61.00000006825603}, {"input": [61.0, 45.0], "expected": 61.00000011253517}, {"input": [61.0, 45.5], "expected": 61.00000018553912}, {"input": [61.0, 46.0], "expected": 61.000000305902276}, {"input": [61.0, 46.5], "expected": 61.00000050434753}, {"input": [61.0, 47.0], "expected": 61.000000831528375}, {"input": [61.0, 47.5], "expected": 61.000001370958145}, {"input": [61.0, 48.0], "expected": 61.00000226032685}, {"input": [61.0, 48.5], "expected": 61.00000372664623}, {"input": [61.0, 49.0], "expected": 61.00000614419348}, {"input": [61.0, 49.5], "expected": 61.00001013004229}, {"input": [61.0, 50.0], "expected": 61.00001670156132}, {"input": [61.0, 50.5], "expected": 61.00002753607023}, {"input": [61.0, 51.0], "expected": 61.00004539889922}, {"input": [61.0, 51.5], "expected": 61.00007484902863}, {"input": [61.0, 52.0], "expected": 61.00012340218972}, {"input": [61.0, 52.5], "expected": 61.00020344767213}, {"input": [61.0, 53.0], "expected": 61.0003354063729}, {"input": [61.0, 53.5], "expected": 61.00055293147536}, {"input": [61.0, 54.0], "expected": 61.00091146645377}, {"input": [61.0, 54.5], "expected": 61.00150231015976}, {"input": [61.0, 55.0], "expected": 61.00247568513773}, {"input": [61.0, 55.5], "expected": 61.00407844327057}, {"input": [61.0, 56.0], "expected": 61.00671534848912}, {"input": [61.0, 56.5], "expected": 61.0110477448486}, {"input": [61.0, 57.0], "expected": 61.01814992791781}, {"input": [61.0, 57.5], "expected": 61.02975041827262}, {"input": [61.0, 58.0], "expected": 61.048587351573744}, {"input": [61.0, 58.5], "expected": 61.07888973429255}, {"input": [61.0, 59.0], "expected": 61.12692801104297}, {"input": [61.0, 59.5], "expected": 61.20141327798275}, {"input": [61.0, 60.0], "expected": 61.31326168751822}, {"input": [61.0, 60.5], "expected": 61.47407698418011}, {"input": [61.0, 61.0], "expected": 61.69314718055995}, {"input": [61.0, 61.5], "expected": 61.97407698418011}, {"input": [61.0, 62.0], "expected": 62.31326168751822}, {"input": [61.0, 62.5], "expected": 62.70141327798275}, {"input": [61.0, 63.0], "expected": 63.12692801104297}, {"input": [61.0, 63.5], "expected": 63.57888973429255}, {"input": [61.0, 64.0], "expected": 64.04858735157374}, {"input": [61.0, 64.5], "expected": 64.52975041827263}, {"input": [61.0, 65.0], "expected": 65.0181499279178}, {"input": [61.0, 65.5], "expected": 65.5110477448486}, {"input": [61.0, 66.0], "expected": 66.00671534848912}, {"input": [61.0, 66.5], "expected": 66.50407844327057}, {"input": [61.0, 67.0], "expected": 67.00247568513772}, {"input": [61.0, 67.5], "expected": 67.50150231015975}, {"input": [61.0, 68.0], "expected": 68.00091146645377}, {"input": [61.0, 68.5], "expected": 68.50055293147535}, {"input": [61.0, 69.0], "expected": 69.0003354063729}, {"input": [61.0, 69.5], "expected": 69.50020344767213}, {"input": [61.0, 70.0], "expected": 70.00012340218973}, {"input": [61.0, 70.5], "expected": 70.50007484902864}, {"input": [61.0, 71.0], "expected": 71.00004539889922}, {"input": [61.0, 71.5], "expected": 71.50002753607023}, {"input": [61.0, 72.0], "expected": 72.00001670156132}, {"input": [61.0, 72.5], "expected": 72.50001013004228}, {"input": [61.0, 73.0], "expected": 73.00000614419348}, {"input": [61.0, 73.5], "expected": 73.50000372664623}, {"input": [61.0, 74.0], "expected": 74.00000226032685}, {"input": [61.0, 74.5], "expected": 74.50000137095815}, {"input": [61.0, 75.0], "expected": 75.00000083152837}, {"input": [61.0, 75.5], "expected": 75.50000050434754}, {"input": [61.0, 76.0], "expected": 76.00000030590228}, {"input": [61.0, 76.5], "expected": 76.50000018553912}, {"input": [61.0, 77.0], "expected": 77.00000011253516}, {"input": [61.0, 77.5], "expected": 77.50000006825603}, {"input": [61.0, 78.0], "expected": 78.00000004139937}, {"input": [61.0, 78.5], "expected": 78.50000002511}, {"input": [61.0, 79.0], "expected": 79.00000001522999}, {"input": [61.0, 79.5], "expected": 79.50000000923745}, {"input": [61.0, 80.0], "expected": 80.0000000056028}, {"input": [61.0, 80.5], "expected": 80.50000000339827}, {"input": [61.0, 81.0], "expected": 81.00000000206116}, {"input": [61.0, 81.5], "expected": 81.50000000125016}, {"input": [61.0, 82.0], "expected": 82.00000000075826}, {"input": [61.0, 82.5], "expected": 82.5000000004599}, {"input": [61.0, 83.0], "expected": 83.00000000027894}, {"input": [61.0, 83.5], "expected": 83.5000000001692}, {"input": [61.0, 84.0], "expected": 84.00000000010262}, {"input": [61.0, 84.5], "expected": 84.50000000006224}, {"input": [61.0, 85.0], "expected": 85.00000000003776}, {"input": [61.0, 85.5], "expected": 85.5000000000229}, {"input": [61.0, 86.0], "expected": 86.00000000001388}, {"input": [61.0, 86.5], "expected": 86.50000000000843}, {"input": [61.0, 87.0], "expected": 87.00000000000512}, {"input": [61.0, 87.5], "expected": 87.5000000000031}, {"input": [61.0, 88.0], "expected": 88.00000000000188}, {"input": [61.0, 88.5], "expected": 88.50000000000114}, {"input": [61.0, 89.0], "expected": 89.0000000000007}, {"input": [61.0, 89.5], "expected": 89.50000000000043}, {"input": [61.0, 90.0], "expected": 90.00000000000026}, {"input": [61.0, 90.5], "expected": 90.50000000000016}, {"input": [61.0, 91.0], "expected": 91.0000000000001}, {"input": [61.0, 91.5], "expected": 91.50000000000006}, {"input": [61.0, 92.0], "expected": 92.00000000000003}, {"input": [61.0, 92.5], "expected": 92.50000000000001}, {"input": [61.0, 93.0], "expected": 93.00000000000001}, {"input": [61.0, 93.5], "expected": 93.50000000000001}, {"input": [61.0, 94.0], "expected": 94.0}, {"input": [61.0, 94.5], "expected": 94.5}, {"input": [61.0, 95.0], "expected": 95.0}, {"input": [61.0, 95.5], "expected": 95.5}, {"input": [61.0, 96.0], "expected": 96.0}, {"input": [61.0, 96.5], "expected": 96.5}, {"input": [61.0, 97.0], "expected": 97.0}, {"input": [61.0, 97.5], "expected": 97.5}, {"input": [61.0, 98.0], "expected": 98.0}, {"input": [61.0, 98.5], "expected": 98.5}, {"input": [61.0, 99.0], "expected": 99.0}, {"input": [61.0, 99.5], "expected": 99.5}, {"input": [61.5, -100.0], "expected": 61.5}, {"input": [61.5, -99.5], "expected": 61.5}, {"input": [61.5, -99.0], "expected": 61.5}, {"input": [61.5, -98.5], "expected": 61.5}, {"input": [61.5, -98.0], "expected": 61.5}, {"input": [61.5, -97.5], "expected": 61.5}, {"input": [61.5, -97.0], "expected": 61.5}, {"input": [61.5, -96.5], "expected": 61.5}, {"input": [61.5, -96.0], "expected": 61.5}, {"input": [61.5, -95.5], "expected": 61.5}, {"input": [61.5, -95.0], "expected": 61.5}, {"input": [61.5, -94.5], "expected": 61.5}, {"input": [61.5, -94.0], "expected": 61.5}, {"input": [61.5, -93.5], "expected": 61.5}, {"input": [61.5, -93.0], "expected": 61.5}, {"input": [61.5, -92.5], "expected": 61.5}, {"input": [61.5, -92.0], "expected": 61.5}, {"input": [61.5, -91.5], "expected": 61.5}, {"input": [61.5, -91.0], "expected": 61.5}, {"input": [61.5, -90.5], "expected": 61.5}, {"input": [61.5, -90.0], "expected": 61.5}, {"input": [61.5, -89.5], "expected": 61.5}, {"input": [61.5, -89.0], "expected": 61.5}, {"input": [61.5, -88.5], "expected": 61.5}, {"input": [61.5, -88.0], "expected": 61.5}, {"input": [61.5, -87.5], "expected": 61.5}, {"input": [61.5, -87.0], "expected": 61.5}, {"input": [61.5, -86.5], "expected": 61.5}, {"input": [61.5, -86.0], "expected": 61.5}, {"input": [61.5, -85.5], "expected": 61.5}, {"input": [61.5, -85.0], "expected": 61.5}, {"input": [61.5, -84.5], "expected": 61.5}, {"input": [61.5, -84.0], "expected": 61.5}, {"input": [61.5, -83.5], "expected": 61.5}, {"input": [61.5, -83.0], "expected": 61.5}, {"input": [61.5, -82.5], "expected": 61.5}, {"input": [61.5, -82.0], "expected": 61.5}, {"input": [61.5, -81.5], "expected": 61.5}, {"input": [61.5, -81.0], "expected": 61.5}, {"input": [61.5, -80.5], "expected": 61.5}, {"input": [61.5, -80.0], "expected": 61.5}, {"input": [61.5, -79.5], "expected": 61.5}, {"input": [61.5, -79.0], "expected": 61.5}, {"input": [61.5, -78.5], "expected": 61.5}, {"input": [61.5, -78.0], "expected": 61.5}, {"input": [61.5, -77.5], "expected": 61.5}, {"input": [61.5, -77.0], "expected": 61.5}, {"input": [61.5, -76.5], "expected": 61.5}, {"input": [61.5, -76.0], "expected": 61.5}, {"input": [61.5, -75.5], "expected": 61.5}, {"input": [61.5, -75.0], "expected": 61.5}, {"input": [61.5, -74.5], "expected": 61.5}, {"input": [61.5, -74.0], "expected": 61.5}, {"input": [61.5, -73.5], "expected": 61.5}, {"input": [61.5, -73.0], "expected": 61.5}, {"input": [61.5, -72.5], "expected": 61.5}, {"input": [61.5, -72.0], "expected": 61.5}, {"input": [61.5, -71.5], "expected": 61.5}, {"input": [61.5, -71.0], "expected": 61.5}, {"input": [61.5, -70.5], "expected": 61.5}, {"input": [61.5, -70.0], "expected": 61.5}, {"input": [61.5, -69.5], "expected": 61.5}, {"input": [61.5, -69.0], "expected": 61.5}, {"input": [61.5, -68.5], "expected": 61.5}, {"input": [61.5, -68.0], "expected": 61.5}, {"input": [61.5, -67.5], "expected": 61.5}, {"input": [61.5, -67.0], "expected": 61.5}, {"input": [61.5, -66.5], "expected": 61.5}, {"input": [61.5, -66.0], "expected": 61.5}, {"input": [61.5, -65.5], "expected": 61.5}, {"input": [61.5, -65.0], "expected": 61.5}, {"input": [61.5, -64.5], "expected": 61.5}, {"input": [61.5, -64.0], "expected": 61.5}, {"input": [61.5, -63.5], "expected": 61.5}, {"input": [61.5, -63.0], "expected": 61.5}, {"input": [61.5, -62.5], "expected": 61.5}, {"input": [61.5, -62.0], "expected": 61.5}, {"input": [61.5, -61.5], "expected": 61.5}, {"input": [61.5, -61.0], "expected": 61.5}, {"input": [61.5, -60.5], "expected": 61.5}, {"input": [61.5, -60.0], "expected": 61.5}, {"input": [61.5, -59.5], "expected": 61.5}, {"input": [61.5, -59.0], "expected": 61.5}, {"input": [61.5, -58.5], "expected": 61.5}, {"input": [61.5, -58.0], "expected": 61.5}, {"input": [61.5, -57.5], "expected": 61.5}, {"input": [61.5, -57.0], "expected": 61.5}, {"input": [61.5, -56.5], "expected": 61.5}, {"input": [61.5, -56.0], "expected": 61.5}, {"input": [61.5, -55.5], "expected": 61.5}, {"input": [61.5, -55.0], "expected": 61.5}, {"input": [61.5, -54.5], "expected": 61.5}, {"input": [61.5, -54.0], "expected": 61.5}, {"input": [61.5, -53.5], "expected": 61.5}, {"input": [61.5, -53.0], "expected": 61.5}, {"input": [61.5, -52.5], "expected": 61.5}, {"input": [61.5, -52.0], "expected": 61.5}, {"input": [61.5, -51.5], "expected": 61.5}, {"input": [61.5, -51.0], "expected": 61.5}, {"input": [61.5, -50.5], "expected": 61.5}, {"input": [61.5, -50.0], "expected": 61.5}, {"input": [61.5, -49.5], "expected": 61.5}, {"input": [61.5, -49.0], "expected": 61.5}, {"input": [61.5, -48.5], "expected": 61.5}, {"input": [61.5, -48.0], "expected": 61.5}, {"input": [61.5, -47.5], "expected": 61.5}, {"input": [61.5, -47.0], "expected": 61.5}, {"input": [61.5, -46.5], "expected": 61.5}, {"input": [61.5, -46.0], "expected": 61.5}, {"input": [61.5, -45.5], "expected": 61.5}, {"input": [61.5, -45.0], "expected": 61.5}, {"input": [61.5, -44.5], "expected": 61.5}, {"input": [61.5, -44.0], "expected": 61.5}, {"input": [61.5, -43.5], "expected": 61.5}, {"input": [61.5, -43.0], "expected": 61.5}, {"input": [61.5, -42.5], "expected": 61.5}, {"input": [61.5, -42.0], "expected": 61.5}, {"input": [61.5, -41.5], "expected": 61.5}, {"input": [61.5, -41.0], "expected": 61.5}, {"input": [61.5, -40.5], "expected": 61.5}, {"input": [61.5, -40.0], "expected": 61.5}, {"input": [61.5, -39.5], "expected": 61.5}, {"input": [61.5, -39.0], "expected": 61.5}, {"input": [61.5, -38.5], "expected": 61.5}, {"input": [61.5, -38.0], "expected": 61.5}, {"input": [61.5, -37.5], "expected": 61.5}, {"input": [61.5, -37.0], "expected": 61.5}, {"input": [61.5, -36.5], "expected": 61.5}, {"input": [61.5, -36.0], "expected": 61.5}, {"input": [61.5, -35.5], "expected": 61.5}, {"input": [61.5, -35.0], "expected": 61.5}, {"input": [61.5, -34.5], "expected": 61.5}, {"input": [61.5, -34.0], "expected": 61.5}, {"input": [61.5, -33.5], "expected": 61.5}, {"input": [61.5, -33.0], "expected": 61.5}, {"input": [61.5, -32.5], "expected": 61.5}, {"input": [61.5, -32.0], "expected": 61.5}, {"input": [61.5, -31.5], "expected": 61.5}, {"input": [61.5, -31.0], "expected": 61.5}, {"input": [61.5, -30.5], "expected": 61.5}, {"input": [61.5, -30.0], "expected": 61.5}, {"input": [61.5, -29.5], "expected": 61.5}, {"input": [61.5, -29.0], "expected": 61.5}, {"input": [61.5, -28.5], "expected": 61.5}, {"input": [61.5, -28.0], "expected": 61.5}, {"input": [61.5, -27.5], "expected": 61.5}, {"input": [61.5, -27.0], "expected": 61.5}, {"input": [61.5, -26.5], "expected": 61.5}, {"input": [61.5, -26.0], "expected": 61.5}, {"input": [61.5, -25.5], "expected": 61.5}, {"input": [61.5, -25.0], "expected": 61.5}, {"input": [61.5, -24.5], "expected": 61.5}, {"input": [61.5, -24.0], "expected": 61.5}, {"input": [61.5, -23.5], "expected": 61.5}, {"input": [61.5, -23.0], "expected": 61.5}, {"input": [61.5, -22.5], "expected": 61.5}, {"input": [61.5, -22.0], "expected": 61.5}, {"input": [61.5, -21.5], "expected": 61.5}, {"input": [61.5, -21.0], "expected": 61.5}, {"input": [61.5, -20.5], "expected": 61.5}, {"input": [61.5, -20.0], "expected": 61.5}, {"input": [61.5, -19.5], "expected": 61.5}, {"input": [61.5, -19.0], "expected": 61.5}, {"input": [61.5, -18.5], "expected": 61.5}, {"input": [61.5, -18.0], "expected": 61.5}, {"input": [61.5, -17.5], "expected": 61.5}, {"input": [61.5, -17.0], "expected": 61.5}, {"input": [61.5, -16.5], "expected": 61.5}, {"input": [61.5, -16.0], "expected": 61.5}, {"input": [61.5, -15.5], "expected": 61.5}, {"input": [61.5, -15.0], "expected": 61.5}, {"input": [61.5, -14.5], "expected": 61.5}, {"input": [61.5, -14.0], "expected": 61.5}, {"input": [61.5, -13.5], "expected": 61.5}, {"input": [61.5, -13.0], "expected": 61.5}, {"input": [61.5, -12.5], "expected": 61.5}, {"input": [61.5, -12.0], "expected": 61.5}, {"input": [61.5, -11.5], "expected": 61.5}, {"input": [61.5, -11.0], "expected": 61.5}, {"input": [61.5, -10.5], "expected": 61.5}, {"input": [61.5, -10.0], "expected": 61.5}, {"input": [61.5, -9.5], "expected": 61.5}, {"input": [61.5, -9.0], "expected": 61.5}, {"input": [61.5, -8.5], "expected": 61.5}, {"input": [61.5, -8.0], "expected": 61.5}, {"input": [61.5, -7.5], "expected": 61.5}, {"input": [61.5, -7.0], "expected": 61.5}, {"input": [61.5, -6.5], "expected": 61.5}, {"input": [61.5, -6.0], "expected": 61.5}, {"input": [61.5, -5.5], "expected": 61.5}, {"input": [61.5, -5.0], "expected": 61.5}, {"input": [61.5, -4.5], "expected": 61.5}, {"input": [61.5, -4.0], "expected": 61.5}, {"input": [61.5, -3.5], "expected": 61.5}, {"input": [61.5, -3.0], "expected": 61.5}, {"input": [61.5, -2.5], "expected": 61.5}, {"input": [61.5, -2.0], "expected": 61.5}, {"input": [61.5, -1.5], "expected": 61.5}, {"input": [61.5, -1.0], "expected": 61.5}, {"input": [61.5, -0.5], "expected": 61.5}, {"input": [61.5, 0.0], "expected": 61.5}, {"input": [61.5, 0.5], "expected": 61.5}, {"input": [61.5, 1.0], "expected": 61.5}, {"input": [61.5, 1.5], "expected": 61.5}, {"input": [61.5, 2.0], "expected": 61.5}, {"input": [61.5, 2.5], "expected": 61.5}, {"input": [61.5, 3.0], "expected": 61.5}, {"input": [61.5, 3.5], "expected": 61.5}, {"input": [61.5, 4.0], "expected": 61.5}, {"input": [61.5, 4.5], "expected": 61.5}, {"input": [61.5, 5.0], "expected": 61.5}, {"input": [61.5, 5.5], "expected": 61.5}, {"input": [61.5, 6.0], "expected": 61.5}, {"input": [61.5, 6.5], "expected": 61.5}, {"input": [61.5, 7.0], "expected": 61.5}, {"input": [61.5, 7.5], "expected": 61.5}, {"input": [61.5, 8.0], "expected": 61.5}, {"input": [61.5, 8.5], "expected": 61.5}, {"input": [61.5, 9.0], "expected": 61.5}, {"input": [61.5, 9.5], "expected": 61.5}, {"input": [61.5, 10.0], "expected": 61.5}, {"input": [61.5, 10.5], "expected": 61.5}, {"input": [61.5, 11.0], "expected": 61.5}, {"input": [61.5, 11.5], "expected": 61.5}, {"input": [61.5, 12.0], "expected": 61.5}, {"input": [61.5, 12.5], "expected": 61.5}, {"input": [61.5, 13.0], "expected": 61.5}, {"input": [61.5, 13.5], "expected": 61.5}, {"input": [61.5, 14.0], "expected": 61.5}, {"input": [61.5, 14.5], "expected": 61.5}, {"input": [61.5, 15.0], "expected": 61.5}, {"input": [61.5, 15.5], "expected": 61.5}, {"input": [61.5, 16.0], "expected": 61.5}, {"input": [61.5, 16.5], "expected": 61.5}, {"input": [61.5, 17.0], "expected": 61.5}, {"input": [61.5, 17.5], "expected": 61.5}, {"input": [61.5, 18.0], "expected": 61.5}, {"input": [61.5, 18.5], "expected": 61.5}, {"input": [61.5, 19.0], "expected": 61.5}, {"input": [61.5, 19.5], "expected": 61.5}, {"input": [61.5, 20.0], "expected": 61.5}, {"input": [61.5, 20.5], "expected": 61.5}, {"input": [61.5, 21.0], "expected": 61.5}, {"input": [61.5, 21.5], "expected": 61.5}, {"input": [61.5, 22.0], "expected": 61.5}, {"input": [61.5, 22.5], "expected": 61.5}, {"input": [61.5, 23.0], "expected": 61.5}, {"input": [61.5, 23.5], "expected": 61.5}, {"input": [61.5, 24.0], "expected": 61.5}, {"input": [61.5, 24.5], "expected": 61.5}, {"input": [61.5, 25.0], "expected": 61.5}, {"input": [61.5, 25.5], "expected": 61.5}, {"input": [61.5, 26.0], "expected": 61.5}, {"input": [61.5, 26.5], "expected": 61.5}, {"input": [61.5, 27.0], "expected": 61.5}, {"input": [61.5, 27.5], "expected": 61.5}, {"input": [61.5, 28.0], "expected": 61.5}, {"input": [61.5, 28.5], "expected": 61.50000000000001}, {"input": [61.5, 29.0], "expected": 61.50000000000001}, {"input": [61.5, 29.5], "expected": 61.500000000000014}, {"input": [61.5, 30.0], "expected": 61.50000000000002}, {"input": [61.5, 30.5], "expected": 61.500000000000036}, {"input": [61.5, 31.0], "expected": 61.50000000000006}, {"input": [61.5, 31.5], "expected": 61.50000000000009}, {"input": [61.5, 32.0], "expected": 61.500000000000156}, {"input": [61.5, 32.5], "expected": 61.500000000000256}, {"input": [61.5, 33.0], "expected": 61.50000000000042}, {"input": [61.5, 33.5], "expected": 61.50000000000069}, {"input": [61.5, 34.0], "expected": 61.50000000000114}, {"input": [61.5, 34.5], "expected": 61.50000000000188}, {"input": [61.5, 35.0], "expected": 61.5000000000031}, {"input": [61.5, 35.5], "expected": 61.50000000000511}, {"input": [61.5, 36.0], "expected": 61.50000000000842}, {"input": [61.5, 36.5], "expected": 61.50000000001389}, {"input": [61.5, 37.0], "expected": 61.5000000000229}, {"input": [61.5, 37.5], "expected": 61.50000000003775}, {"input": [61.5, 38.0], "expected": 61.50000000006224}, {"input": [61.5, 38.5], "expected": 61.50000000010262}, {"input": [61.5, 39.0], "expected": 61.50000000016919}, {"input": [61.5, 39.5], "expected": 61.500000000278945}, {"input": [61.5, 40.0], "expected": 61.500000000459906}, {"input": [61.5, 40.5], "expected": 61.500000000758256}, {"input": [61.5, 41.0], "expected": 61.50000000125015}, {"input": [61.5, 41.5], "expected": 61.50000000206116}, {"input": [61.5, 42.0], "expected": 61.50000000339827}, {"input": [61.5, 42.5], "expected": 61.50000000560279}, {"input": [61.5, 43.0], "expected": 61.500000009237446}, {"input": [61.5, 43.5], "expected": 61.50000001522998}, {"input": [61.5, 44.0], "expected": 61.50000002510999}, {"input": [61.5, 44.5], "expected": 61.500000041399375}, {"input": [61.5, 45.0], "expected": 61.50000006825603}, {"input": [61.5, 45.5], "expected": 61.50000011253517}, {"input": [61.5, 46.0], "expected": 61.50000018553912}, {"input": [61.5, 46.5], "expected": 61.500000305902276}, {"input": [61.5, 47.0], "expected": 61.50000050434753}, {"input": [61.5, 47.5], "expected": 61.500000831528375}, {"input": [61.5, 48.0], "expected": 61.500001370958145}, {"input": [61.5, 48.5], "expected": 61.50000226032685}, {"input": [61.5, 49.0], "expected": 61.50000372664623}, {"input": [61.5, 49.5], "expected": 61.50000614419348}, {"input": [61.5, 50.0], "expected": 61.50001013004229}, {"input": [61.5, 50.5], "expected": 61.50001670156132}, {"input": [61.5, 51.0], "expected": 61.50002753607023}, {"input": [61.5, 51.5], "expected": 61.50004539889922}, {"input": [61.5, 52.0], "expected": 61.50007484902863}, {"input": [61.5, 52.5], "expected": 61.50012340218972}, {"input": [61.5, 53.0], "expected": 61.50020344767213}, {"input": [61.5, 53.5], "expected": 61.5003354063729}, {"input": [61.5, 54.0], "expected": 61.50055293147536}, {"input": [61.5, 54.5], "expected": 61.50091146645377}, {"input": [61.5, 55.0], "expected": 61.50150231015976}, {"input": [61.5, 55.5], "expected": 61.50247568513773}, {"input": [61.5, 56.0], "expected": 61.50407844327057}, {"input": [61.5, 56.5], "expected": 61.50671534848912}, {"input": [61.5, 57.0], "expected": 61.5110477448486}, {"input": [61.5, 57.5], "expected": 61.51814992791781}, {"input": [61.5, 58.0], "expected": 61.52975041827262}, {"input": [61.5, 58.5], "expected": 61.548587351573744}, {"input": [61.5, 59.0], "expected": 61.57888973429255}, {"input": [61.5, 59.5], "expected": 61.62692801104297}, {"input": [61.5, 60.0], "expected": 61.70141327798275}, {"input": [61.5, 60.5], "expected": 61.81326168751822}, {"input": [61.5, 61.0], "expected": 61.97407698418011}, {"input": [61.5, 61.5], "expected": 62.19314718055995}, {"input": [61.5, 62.0], "expected": 62.47407698418011}, {"input": [61.5, 62.5], "expected": 62.81326168751822}, {"input": [61.5, 63.0], "expected": 63.20141327798275}, {"input": [61.5, 63.5], "expected": 63.62692801104297}, {"input": [61.5, 64.0], "expected": 64.07888973429255}, {"input": [61.5, 64.5], "expected": 64.54858735157374}, {"input": [61.5, 65.0], "expected": 65.02975041827263}, {"input": [61.5, 65.5], "expected": 65.5181499279178}, {"input": [61.5, 66.0], "expected": 66.0110477448486}, {"input": [61.5, 66.5], "expected": 66.50671534848912}, {"input": [61.5, 67.0], "expected": 67.00407844327057}, {"input": [61.5, 67.5], "expected": 67.50247568513772}, {"input": [61.5, 68.0], "expected": 68.00150231015975}, {"input": [61.5, 68.5], "expected": 68.50091146645377}, {"input": [61.5, 69.0], "expected": 69.00055293147535}, {"input": [61.5, 69.5], "expected": 69.5003354063729}, {"input": [61.5, 70.0], "expected": 70.00020344767213}, {"input": [61.5, 70.5], "expected": 70.50012340218973}, {"input": [61.5, 71.0], "expected": 71.00007484902864}, {"input": [61.5, 71.5], "expected": 71.50004539889922}, {"input": [61.5, 72.0], "expected": 72.00002753607023}, {"input": [61.5, 72.5], "expected": 72.50001670156132}, {"input": [61.5, 73.0], "expected": 73.00001013004228}, {"input": [61.5, 73.5], "expected": 73.50000614419348}, {"input": [61.5, 74.0], "expected": 74.00000372664623}, {"input": [61.5, 74.5], "expected": 74.50000226032685}, {"input": [61.5, 75.0], "expected": 75.00000137095815}, {"input": [61.5, 75.5], "expected": 75.50000083152837}, {"input": [61.5, 76.0], "expected": 76.00000050434754}, {"input": [61.5, 76.5], "expected": 76.50000030590228}, {"input": [61.5, 77.0], "expected": 77.00000018553912}, {"input": [61.5, 77.5], "expected": 77.50000011253516}, {"input": [61.5, 78.0], "expected": 78.00000006825603}, {"input": [61.5, 78.5], "expected": 78.50000004139937}, {"input": [61.5, 79.0], "expected": 79.00000002511}, {"input": [61.5, 79.5], "expected": 79.50000001522999}, {"input": [61.5, 80.0], "expected": 80.00000000923745}, {"input": [61.5, 80.5], "expected": 80.5000000056028}, {"input": [61.5, 81.0], "expected": 81.00000000339827}, {"input": [61.5, 81.5], "expected": 81.50000000206116}, {"input": [61.5, 82.0], "expected": 82.00000000125016}, {"input": [61.5, 82.5], "expected": 82.50000000075826}, {"input": [61.5, 83.0], "expected": 83.0000000004599}, {"input": [61.5, 83.5], "expected": 83.50000000027894}, {"input": [61.5, 84.0], "expected": 84.0000000001692}, {"input": [61.5, 84.5], "expected": 84.50000000010262}, {"input": [61.5, 85.0], "expected": 85.00000000006224}, {"input": [61.5, 85.5], "expected": 85.50000000003776}, {"input": [61.5, 86.0], "expected": 86.0000000000229}, {"input": [61.5, 86.5], "expected": 86.50000000001388}, {"input": [61.5, 87.0], "expected": 87.00000000000843}, {"input": [61.5, 87.5], "expected": 87.50000000000512}, {"input": [61.5, 88.0], "expected": 88.0000000000031}, {"input": [61.5, 88.5], "expected": 88.50000000000188}, {"input": [61.5, 89.0], "expected": 89.00000000000114}, {"input": [61.5, 89.5], "expected": 89.5000000000007}, {"input": [61.5, 90.0], "expected": 90.00000000000043}, {"input": [61.5, 90.5], "expected": 90.50000000000026}, {"input": [61.5, 91.0], "expected": 91.00000000000016}, {"input": [61.5, 91.5], "expected": 91.5000000000001}, {"input": [61.5, 92.0], "expected": 92.00000000000006}, {"input": [61.5, 92.5], "expected": 92.50000000000003}, {"input": [61.5, 93.0], "expected": 93.00000000000001}, {"input": [61.5, 93.5], "expected": 93.50000000000001}, {"input": [61.5, 94.0], "expected": 94.00000000000001}, {"input": [61.5, 94.5], "expected": 94.5}, {"input": [61.5, 95.0], "expected": 95.0}, {"input": [61.5, 95.5], "expected": 95.5}, {"input": [61.5, 96.0], "expected": 96.0}, {"input": [61.5, 96.5], "expected": 96.5}, {"input": [61.5, 97.0], "expected": 97.0}, {"input": [61.5, 97.5], "expected": 97.5}, {"input": [61.5, 98.0], "expected": 98.0}, {"input": [61.5, 98.5], "expected": 98.5}, {"input": [61.5, 99.0], "expected": 99.0}, {"input": [61.5, 99.5], "expected": 99.5}, {"input": [62.0, -100.0], "expected": 62.0}, {"input": [62.0, -99.5], "expected": 62.0}, {"input": [62.0, -99.0], "expected": 62.0}, {"input": [62.0, -98.5], "expected": 62.0}, {"input": [62.0, -98.0], "expected": 62.0}, {"input": [62.0, -97.5], "expected": 62.0}, {"input": [62.0, -97.0], "expected": 62.0}, {"input": [62.0, -96.5], "expected": 62.0}, {"input": [62.0, -96.0], "expected": 62.0}, {"input": [62.0, -95.5], "expected": 62.0}, {"input": [62.0, -95.0], "expected": 62.0}, {"input": [62.0, -94.5], "expected": 62.0}, {"input": [62.0, -94.0], "expected": 62.0}, {"input": [62.0, -93.5], "expected": 62.0}, {"input": [62.0, -93.0], "expected": 62.0}, {"input": [62.0, -92.5], "expected": 62.0}, {"input": [62.0, -92.0], "expected": 62.0}, {"input": [62.0, -91.5], "expected": 62.0}, {"input": [62.0, -91.0], "expected": 62.0}, {"input": [62.0, -90.5], "expected": 62.0}, {"input": [62.0, -90.0], "expected": 62.0}, {"input": [62.0, -89.5], "expected": 62.0}, {"input": [62.0, -89.0], "expected": 62.0}, {"input": [62.0, -88.5], "expected": 62.0}, {"input": [62.0, -88.0], "expected": 62.0}, {"input": [62.0, -87.5], "expected": 62.0}, {"input": [62.0, -87.0], "expected": 62.0}, {"input": [62.0, -86.5], "expected": 62.0}, {"input": [62.0, -86.0], "expected": 62.0}, {"input": [62.0, -85.5], "expected": 62.0}, {"input": [62.0, -85.0], "expected": 62.0}, {"input": [62.0, -84.5], "expected": 62.0}, {"input": [62.0, -84.0], "expected": 62.0}, {"input": [62.0, -83.5], "expected": 62.0}, {"input": [62.0, -83.0], "expected": 62.0}, {"input": [62.0, -82.5], "expected": 62.0}, {"input": [62.0, -82.0], "expected": 62.0}, {"input": [62.0, -81.5], "expected": 62.0}, {"input": [62.0, -81.0], "expected": 62.0}, {"input": [62.0, -80.5], "expected": 62.0}, {"input": [62.0, -80.0], "expected": 62.0}, {"input": [62.0, -79.5], "expected": 62.0}, {"input": [62.0, -79.0], "expected": 62.0}, {"input": [62.0, -78.5], "expected": 62.0}, {"input": [62.0, -78.0], "expected": 62.0}, {"input": [62.0, -77.5], "expected": 62.0}, {"input": [62.0, -77.0], "expected": 62.0}, {"input": [62.0, -76.5], "expected": 62.0}, {"input": [62.0, -76.0], "expected": 62.0}, {"input": [62.0, -75.5], "expected": 62.0}, {"input": [62.0, -75.0], "expected": 62.0}, {"input": [62.0, -74.5], "expected": 62.0}, {"input": [62.0, -74.0], "expected": 62.0}, {"input": [62.0, -73.5], "expected": 62.0}, {"input": [62.0, -73.0], "expected": 62.0}, {"input": [62.0, -72.5], "expected": 62.0}, {"input": [62.0, -72.0], "expected": 62.0}, {"input": [62.0, -71.5], "expected": 62.0}, {"input": [62.0, -71.0], "expected": 62.0}, {"input": [62.0, -70.5], "expected": 62.0}, {"input": [62.0, -70.0], "expected": 62.0}, {"input": [62.0, -69.5], "expected": 62.0}, {"input": [62.0, -69.0], "expected": 62.0}, {"input": [62.0, -68.5], "expected": 62.0}, {"input": [62.0, -68.0], "expected": 62.0}, {"input": [62.0, -67.5], "expected": 62.0}, {"input": [62.0, -67.0], "expected": 62.0}, {"input": [62.0, -66.5], "expected": 62.0}, {"input": [62.0, -66.0], "expected": 62.0}, {"input": [62.0, -65.5], "expected": 62.0}, {"input": [62.0, -65.0], "expected": 62.0}, {"input": [62.0, -64.5], "expected": 62.0}, {"input": [62.0, -64.0], "expected": 62.0}, {"input": [62.0, -63.5], "expected": 62.0}, {"input": [62.0, -63.0], "expected": 62.0}, {"input": [62.0, -62.5], "expected": 62.0}, {"input": [62.0, -62.0], "expected": 62.0}, {"input": [62.0, -61.5], "expected": 62.0}, {"input": [62.0, -61.0], "expected": 62.0}, {"input": [62.0, -60.5], "expected": 62.0}, {"input": [62.0, -60.0], "expected": 62.0}, {"input": [62.0, -59.5], "expected": 62.0}, {"input": [62.0, -59.0], "expected": 62.0}, {"input": [62.0, -58.5], "expected": 62.0}, {"input": [62.0, -58.0], "expected": 62.0}, {"input": [62.0, -57.5], "expected": 62.0}, {"input": [62.0, -57.0], "expected": 62.0}, {"input": [62.0, -56.5], "expected": 62.0}, {"input": [62.0, -56.0], "expected": 62.0}, {"input": [62.0, -55.5], "expected": 62.0}, {"input": [62.0, -55.0], "expected": 62.0}, {"input": [62.0, -54.5], "expected": 62.0}, {"input": [62.0, -54.0], "expected": 62.0}, {"input": [62.0, -53.5], "expected": 62.0}, {"input": [62.0, -53.0], "expected": 62.0}, {"input": [62.0, -52.5], "expected": 62.0}, {"input": [62.0, -52.0], "expected": 62.0}, {"input": [62.0, -51.5], "expected": 62.0}, {"input": [62.0, -51.0], "expected": 62.0}, {"input": [62.0, -50.5], "expected": 62.0}, {"input": [62.0, -50.0], "expected": 62.0}, {"input": [62.0, -49.5], "expected": 62.0}, {"input": [62.0, -49.0], "expected": 62.0}, {"input": [62.0, -48.5], "expected": 62.0}, {"input": [62.0, -48.0], "expected": 62.0}, {"input": [62.0, -47.5], "expected": 62.0}, {"input": [62.0, -47.0], "expected": 62.0}, {"input": [62.0, -46.5], "expected": 62.0}, {"input": [62.0, -46.0], "expected": 62.0}, {"input": [62.0, -45.5], "expected": 62.0}, {"input": [62.0, -45.0], "expected": 62.0}, {"input": [62.0, -44.5], "expected": 62.0}, {"input": [62.0, -44.0], "expected": 62.0}, {"input": [62.0, -43.5], "expected": 62.0}, {"input": [62.0, -43.0], "expected": 62.0}, {"input": [62.0, -42.5], "expected": 62.0}, {"input": [62.0, -42.0], "expected": 62.0}, {"input": [62.0, -41.5], "expected": 62.0}, {"input": [62.0, -41.0], "expected": 62.0}, {"input": [62.0, -40.5], "expected": 62.0}, {"input": [62.0, -40.0], "expected": 62.0}, {"input": [62.0, -39.5], "expected": 62.0}, {"input": [62.0, -39.0], "expected": 62.0}, {"input": [62.0, -38.5], "expected": 62.0}, {"input": [62.0, -38.0], "expected": 62.0}, {"input": [62.0, -37.5], "expected": 62.0}, {"input": [62.0, -37.0], "expected": 62.0}, {"input": [62.0, -36.5], "expected": 62.0}, {"input": [62.0, -36.0], "expected": 62.0}, {"input": [62.0, -35.5], "expected": 62.0}, {"input": [62.0, -35.0], "expected": 62.0}, {"input": [62.0, -34.5], "expected": 62.0}, {"input": [62.0, -34.0], "expected": 62.0}, {"input": [62.0, -33.5], "expected": 62.0}, {"input": [62.0, -33.0], "expected": 62.0}, {"input": [62.0, -32.5], "expected": 62.0}, {"input": [62.0, -32.0], "expected": 62.0}, {"input": [62.0, -31.5], "expected": 62.0}, {"input": [62.0, -31.0], "expected": 62.0}, {"input": [62.0, -30.5], "expected": 62.0}, {"input": [62.0, -30.0], "expected": 62.0}, {"input": [62.0, -29.5], "expected": 62.0}, {"input": [62.0, -29.0], "expected": 62.0}, {"input": [62.0, -28.5], "expected": 62.0}, {"input": [62.0, -28.0], "expected": 62.0}, {"input": [62.0, -27.5], "expected": 62.0}, {"input": [62.0, -27.0], "expected": 62.0}, {"input": [62.0, -26.5], "expected": 62.0}, {"input": [62.0, -26.0], "expected": 62.0}, {"input": [62.0, -25.5], "expected": 62.0}, {"input": [62.0, -25.0], "expected": 62.0}, {"input": [62.0, -24.5], "expected": 62.0}, {"input": [62.0, -24.0], "expected": 62.0}, {"input": [62.0, -23.5], "expected": 62.0}, {"input": [62.0, -23.0], "expected": 62.0}, {"input": [62.0, -22.5], "expected": 62.0}, {"input": [62.0, -22.0], "expected": 62.0}, {"input": [62.0, -21.5], "expected": 62.0}, {"input": [62.0, -21.0], "expected": 62.0}, {"input": [62.0, -20.5], "expected": 62.0}, {"input": [62.0, -20.0], "expected": 62.0}, {"input": [62.0, -19.5], "expected": 62.0}, {"input": [62.0, -19.0], "expected": 62.0}, {"input": [62.0, -18.5], "expected": 62.0}, {"input": [62.0, -18.0], "expected": 62.0}, {"input": [62.0, -17.5], "expected": 62.0}, {"input": [62.0, -17.0], "expected": 62.0}, {"input": [62.0, -16.5], "expected": 62.0}, {"input": [62.0, -16.0], "expected": 62.0}, {"input": [62.0, -15.5], "expected": 62.0}, {"input": [62.0, -15.0], "expected": 62.0}, {"input": [62.0, -14.5], "expected": 62.0}, {"input": [62.0, -14.0], "expected": 62.0}, {"input": [62.0, -13.5], "expected": 62.0}, {"input": [62.0, -13.0], "expected": 62.0}, {"input": [62.0, -12.5], "expected": 62.0}, {"input": [62.0, -12.0], "expected": 62.0}, {"input": [62.0, -11.5], "expected": 62.0}, {"input": [62.0, -11.0], "expected": 62.0}, {"input": [62.0, -10.5], "expected": 62.0}, {"input": [62.0, -10.0], "expected": 62.0}, {"input": [62.0, -9.5], "expected": 62.0}, {"input": [62.0, -9.0], "expected": 62.0}, {"input": [62.0, -8.5], "expected": 62.0}, {"input": [62.0, -8.0], "expected": 62.0}, {"input": [62.0, -7.5], "expected": 62.0}, {"input": [62.0, -7.0], "expected": 62.0}, {"input": [62.0, -6.5], "expected": 62.0}, {"input": [62.0, -6.0], "expected": 62.0}, {"input": [62.0, -5.5], "expected": 62.0}, {"input": [62.0, -5.0], "expected": 62.0}, {"input": [62.0, -4.5], "expected": 62.0}, {"input": [62.0, -4.0], "expected": 62.0}, {"input": [62.0, -3.5], "expected": 62.0}, {"input": [62.0, -3.0], "expected": 62.0}, {"input": [62.0, -2.5], "expected": 62.0}, {"input": [62.0, -2.0], "expected": 62.0}, {"input": [62.0, -1.5], "expected": 62.0}, {"input": [62.0, -1.0], "expected": 62.0}, {"input": [62.0, -0.5], "expected": 62.0}, {"input": [62.0, 0.0], "expected": 62.0}, {"input": [62.0, 0.5], "expected": 62.0}, {"input": [62.0, 1.0], "expected": 62.0}, {"input": [62.0, 1.5], "expected": 62.0}, {"input": [62.0, 2.0], "expected": 62.0}, {"input": [62.0, 2.5], "expected": 62.0}, {"input": [62.0, 3.0], "expected": 62.0}, {"input": [62.0, 3.5], "expected": 62.0}, {"input": [62.0, 4.0], "expected": 62.0}, {"input": [62.0, 4.5], "expected": 62.0}, {"input": [62.0, 5.0], "expected": 62.0}, {"input": [62.0, 5.5], "expected": 62.0}, {"input": [62.0, 6.0], "expected": 62.0}, {"input": [62.0, 6.5], "expected": 62.0}, {"input": [62.0, 7.0], "expected": 62.0}, {"input": [62.0, 7.5], "expected": 62.0}, {"input": [62.0, 8.0], "expected": 62.0}, {"input": [62.0, 8.5], "expected": 62.0}, {"input": [62.0, 9.0], "expected": 62.0}, {"input": [62.0, 9.5], "expected": 62.0}, {"input": [62.0, 10.0], "expected": 62.0}, {"input": [62.0, 10.5], "expected": 62.0}, {"input": [62.0, 11.0], "expected": 62.0}, {"input": [62.0, 11.5], "expected": 62.0}, {"input": [62.0, 12.0], "expected": 62.0}, {"input": [62.0, 12.5], "expected": 62.0}, {"input": [62.0, 13.0], "expected": 62.0}, {"input": [62.0, 13.5], "expected": 62.0}, {"input": [62.0, 14.0], "expected": 62.0}, {"input": [62.0, 14.5], "expected": 62.0}, {"input": [62.0, 15.0], "expected": 62.0}, {"input": [62.0, 15.5], "expected": 62.0}, {"input": [62.0, 16.0], "expected": 62.0}, {"input": [62.0, 16.5], "expected": 62.0}, {"input": [62.0, 17.0], "expected": 62.0}, {"input": [62.0, 17.5], "expected": 62.0}, {"input": [62.0, 18.0], "expected": 62.0}, {"input": [62.0, 18.5], "expected": 62.0}, {"input": [62.0, 19.0], "expected": 62.0}, {"input": [62.0, 19.5], "expected": 62.0}, {"input": [62.0, 20.0], "expected": 62.0}, {"input": [62.0, 20.5], "expected": 62.0}, {"input": [62.0, 21.0], "expected": 62.0}, {"input": [62.0, 21.5], "expected": 62.0}, {"input": [62.0, 22.0], "expected": 62.0}, {"input": [62.0, 22.5], "expected": 62.0}, {"input": [62.0, 23.0], "expected": 62.0}, {"input": [62.0, 23.5], "expected": 62.0}, {"input": [62.0, 24.0], "expected": 62.0}, {"input": [62.0, 24.5], "expected": 62.0}, {"input": [62.0, 25.0], "expected": 62.0}, {"input": [62.0, 25.5], "expected": 62.0}, {"input": [62.0, 26.0], "expected": 62.0}, {"input": [62.0, 26.5], "expected": 62.0}, {"input": [62.0, 27.0], "expected": 62.0}, {"input": [62.0, 27.5], "expected": 62.0}, {"input": [62.0, 28.0], "expected": 62.0}, {"input": [62.0, 28.5], "expected": 62.0}, {"input": [62.0, 29.0], "expected": 62.00000000000001}, {"input": [62.0, 29.5], "expected": 62.00000000000001}, {"input": [62.0, 30.0], "expected": 62.000000000000014}, {"input": [62.0, 30.5], "expected": 62.00000000000002}, {"input": [62.0, 31.0], "expected": 62.000000000000036}, {"input": [62.0, 31.5], "expected": 62.00000000000006}, {"input": [62.0, 32.0], "expected": 62.00000000000009}, {"input": [62.0, 32.5], "expected": 62.000000000000156}, {"input": [62.0, 33.0], "expected": 62.000000000000256}, {"input": [62.0, 33.5], "expected": 62.00000000000042}, {"input": [62.0, 34.0], "expected": 62.00000000000069}, {"input": [62.0, 34.5], "expected": 62.00000000000114}, {"input": [62.0, 35.0], "expected": 62.00000000000188}, {"input": [62.0, 35.5], "expected": 62.0000000000031}, {"input": [62.0, 36.0], "expected": 62.00000000000511}, {"input": [62.0, 36.5], "expected": 62.00000000000842}, {"input": [62.0, 37.0], "expected": 62.00000000001389}, {"input": [62.0, 37.5], "expected": 62.0000000000229}, {"input": [62.0, 38.0], "expected": 62.00000000003775}, {"input": [62.0, 38.5], "expected": 62.00000000006224}, {"input": [62.0, 39.0], "expected": 62.00000000010262}, {"input": [62.0, 39.5], "expected": 62.00000000016919}, {"input": [62.0, 40.0], "expected": 62.000000000278945}, {"input": [62.0, 40.5], "expected": 62.000000000459906}, {"input": [62.0, 41.0], "expected": 62.000000000758256}, {"input": [62.0, 41.5], "expected": 62.00000000125015}, {"input": [62.0, 42.0], "expected": 62.00000000206116}, {"input": [62.0, 42.5], "expected": 62.00000000339827}, {"input": [62.0, 43.0], "expected": 62.00000000560279}, {"input": [62.0, 43.5], "expected": 62.000000009237446}, {"input": [62.0, 44.0], "expected": 62.00000001522998}, {"input": [62.0, 44.5], "expected": 62.00000002510999}, {"input": [62.0, 45.0], "expected": 62.000000041399375}, {"input": [62.0, 45.5], "expected": 62.00000006825603}, {"input": [62.0, 46.0], "expected": 62.00000011253517}, {"input": [62.0, 46.5], "expected": 62.00000018553912}, {"input": [62.0, 47.0], "expected": 62.000000305902276}, {"input": [62.0, 47.5], "expected": 62.00000050434753}, {"input": [62.0, 48.0], "expected": 62.000000831528375}, {"input": [62.0, 48.5], "expected": 62.000001370958145}, {"input": [62.0, 49.0], "expected": 62.00000226032685}, {"input": [62.0, 49.5], "expected": 62.00000372664623}, {"input": [62.0, 50.0], "expected": 62.00000614419348}, {"input": [62.0, 50.5], "expected": 62.00001013004229}, {"input": [62.0, 51.0], "expected": 62.00001670156132}, {"input": [62.0, 51.5], "expected": 62.00002753607023}, {"input": [62.0, 52.0], "expected": 62.00004539889922}, {"input": [62.0, 52.5], "expected": 62.00007484902863}, {"input": [62.0, 53.0], "expected": 62.00012340218972}, {"input": [62.0, 53.5], "expected": 62.00020344767213}, {"input": [62.0, 54.0], "expected": 62.0003354063729}, {"input": [62.0, 54.5], "expected": 62.00055293147536}, {"input": [62.0, 55.0], "expected": 62.00091146645377}, {"input": [62.0, 55.5], "expected": 62.00150231015976}, {"input": [62.0, 56.0], "expected": 62.00247568513773}, {"input": [62.0, 56.5], "expected": 62.00407844327057}, {"input": [62.0, 57.0], "expected": 62.00671534848912}, {"input": [62.0, 57.5], "expected": 62.0110477448486}, {"input": [62.0, 58.0], "expected": 62.01814992791781}, {"input": [62.0, 58.5], "expected": 62.02975041827262}, {"input": [62.0, 59.0], "expected": 62.048587351573744}, {"input": [62.0, 59.5], "expected": 62.07888973429255}, {"input": [62.0, 60.0], "expected": 62.12692801104297}, {"input": [62.0, 60.5], "expected": 62.20141327798275}, {"input": [62.0, 61.0], "expected": 62.31326168751822}, {"input": [62.0, 61.5], "expected": 62.47407698418011}, {"input": [62.0, 62.0], "expected": 62.69314718055995}, {"input": [62.0, 62.5], "expected": 62.97407698418011}, {"input": [62.0, 63.0], "expected": 63.31326168751822}, {"input": [62.0, 63.5], "expected": 63.70141327798275}, {"input": [62.0, 64.0], "expected": 64.12692801104298}, {"input": [62.0, 64.5], "expected": 64.57888973429255}, {"input": [62.0, 65.0], "expected": 65.04858735157374}, {"input": [62.0, 65.5], "expected": 65.52975041827263}, {"input": [62.0, 66.0], "expected": 66.0181499279178}, {"input": [62.0, 66.5], "expected": 66.5110477448486}, {"input": [62.0, 67.0], "expected": 67.00671534848912}, {"input": [62.0, 67.5], "expected": 67.50407844327057}, {"input": [62.0, 68.0], "expected": 68.00247568513772}, {"input": [62.0, 68.5], "expected": 68.50150231015975}, {"input": [62.0, 69.0], "expected": 69.00091146645377}, {"input": [62.0, 69.5], "expected": 69.50055293147535}, {"input": [62.0, 70.0], "expected": 70.0003354063729}, {"input": [62.0, 70.5], "expected": 70.50020344767213}, {"input": [62.0, 71.0], "expected": 71.00012340218973}, {"input": [62.0, 71.5], "expected": 71.50007484902864}, {"input": [62.0, 72.0], "expected": 72.00004539889922}, {"input": [62.0, 72.5], "expected": 72.50002753607023}, {"input": [62.0, 73.0], "expected": 73.00001670156132}, {"input": [62.0, 73.5], "expected": 73.50001013004228}, {"input": [62.0, 74.0], "expected": 74.00000614419348}, {"input": [62.0, 74.5], "expected": 74.50000372664623}, {"input": [62.0, 75.0], "expected": 75.00000226032685}, {"input": [62.0, 75.5], "expected": 75.50000137095815}, {"input": [62.0, 76.0], "expected": 76.00000083152837}, {"input": [62.0, 76.5], "expected": 76.50000050434754}, {"input": [62.0, 77.0], "expected": 77.00000030590228}, {"input": [62.0, 77.5], "expected": 77.50000018553912}, {"input": [62.0, 78.0], "expected": 78.00000011253516}, {"input": [62.0, 78.5], "expected": 78.50000006825603}, {"input": [62.0, 79.0], "expected": 79.00000004139937}, {"input": [62.0, 79.5], "expected": 79.50000002511}, {"input": [62.0, 80.0], "expected": 80.00000001522999}, {"input": [62.0, 80.5], "expected": 80.50000000923745}, {"input": [62.0, 81.0], "expected": 81.0000000056028}, {"input": [62.0, 81.5], "expected": 81.50000000339827}, {"input": [62.0, 82.0], "expected": 82.00000000206116}, {"input": [62.0, 82.5], "expected": 82.50000000125016}, {"input": [62.0, 83.0], "expected": 83.00000000075826}, {"input": [62.0, 83.5], "expected": 83.5000000004599}, {"input": [62.0, 84.0], "expected": 84.00000000027894}, {"input": [62.0, 84.5], "expected": 84.5000000001692}, {"input": [62.0, 85.0], "expected": 85.00000000010262}, {"input": [62.0, 85.5], "expected": 85.50000000006224}, {"input": [62.0, 86.0], "expected": 86.00000000003776}, {"input": [62.0, 86.5], "expected": 86.5000000000229}, {"input": [62.0, 87.0], "expected": 87.00000000001388}, {"input": [62.0, 87.5], "expected": 87.50000000000843}, {"input": [62.0, 88.0], "expected": 88.00000000000512}, {"input": [62.0, 88.5], "expected": 88.5000000000031}, {"input": [62.0, 89.0], "expected": 89.00000000000188}, {"input": [62.0, 89.5], "expected": 89.50000000000114}, {"input": [62.0, 90.0], "expected": 90.0000000000007}, {"input": [62.0, 90.5], "expected": 90.50000000000043}, {"input": [62.0, 91.0], "expected": 91.00000000000026}, {"input": [62.0, 91.5], "expected": 91.50000000000016}, {"input": [62.0, 92.0], "expected": 92.0000000000001}, {"input": [62.0, 92.5], "expected": 92.50000000000006}, {"input": [62.0, 93.0], "expected": 93.00000000000003}, {"input": [62.0, 93.5], "expected": 93.50000000000001}, {"input": [62.0, 94.0], "expected": 94.00000000000001}, {"input": [62.0, 94.5], "expected": 94.50000000000001}, {"input": [62.0, 95.0], "expected": 95.0}, {"input": [62.0, 95.5], "expected": 95.5}, {"input": [62.0, 96.0], "expected": 96.0}, {"input": [62.0, 96.5], "expected": 96.5}, {"input": [62.0, 97.0], "expected": 97.0}, {"input": [62.0, 97.5], "expected": 97.5}, {"input": [62.0, 98.0], "expected": 98.0}, {"input": [62.0, 98.5], "expected": 98.5}, {"input": [62.0, 99.0], "expected": 99.0}, {"input": [62.0, 99.5], "expected": 99.5}, {"input": [62.5, -100.0], "expected": 62.5}, {"input": [62.5, -99.5], "expected": 62.5}, {"input": [62.5, -99.0], "expected": 62.5}, {"input": [62.5, -98.5], "expected": 62.5}, {"input": [62.5, -98.0], "expected": 62.5}, {"input": [62.5, -97.5], "expected": 62.5}, {"input": [62.5, -97.0], "expected": 62.5}, {"input": [62.5, -96.5], "expected": 62.5}, {"input": [62.5, -96.0], "expected": 62.5}, {"input": [62.5, -95.5], "expected": 62.5}, {"input": [62.5, -95.0], "expected": 62.5}, {"input": [62.5, -94.5], "expected": 62.5}, {"input": [62.5, -94.0], "expected": 62.5}, {"input": [62.5, -93.5], "expected": 62.5}, {"input": [62.5, -93.0], "expected": 62.5}, {"input": [62.5, -92.5], "expected": 62.5}, {"input": [62.5, -92.0], "expected": 62.5}, {"input": [62.5, -91.5], "expected": 62.5}, {"input": [62.5, -91.0], "expected": 62.5}, {"input": [62.5, -90.5], "expected": 62.5}, {"input": [62.5, -90.0], "expected": 62.5}, {"input": [62.5, -89.5], "expected": 62.5}, {"input": [62.5, -89.0], "expected": 62.5}, {"input": [62.5, -88.5], "expected": 62.5}, {"input": [62.5, -88.0], "expected": 62.5}, {"input": [62.5, -87.5], "expected": 62.5}, {"input": [62.5, -87.0], "expected": 62.5}, {"input": [62.5, -86.5], "expected": 62.5}, {"input": [62.5, -86.0], "expected": 62.5}, {"input": [62.5, -85.5], "expected": 62.5}, {"input": [62.5, -85.0], "expected": 62.5}, {"input": [62.5, -84.5], "expected": 62.5}, {"input": [62.5, -84.0], "expected": 62.5}, {"input": [62.5, -83.5], "expected": 62.5}, {"input": [62.5, -83.0], "expected": 62.5}, {"input": [62.5, -82.5], "expected": 62.5}, {"input": [62.5, -82.0], "expected": 62.5}, {"input": [62.5, -81.5], "expected": 62.5}, {"input": [62.5, -81.0], "expected": 62.5}, {"input": [62.5, -80.5], "expected": 62.5}, {"input": [62.5, -80.0], "expected": 62.5}, {"input": [62.5, -79.5], "expected": 62.5}, {"input": [62.5, -79.0], "expected": 62.5}, {"input": [62.5, -78.5], "expected": 62.5}, {"input": [62.5, -78.0], "expected": 62.5}, {"input": [62.5, -77.5], "expected": 62.5}, {"input": [62.5, -77.0], "expected": 62.5}, {"input": [62.5, -76.5], "expected": 62.5}, {"input": [62.5, -76.0], "expected": 62.5}, {"input": [62.5, -75.5], "expected": 62.5}, {"input": [62.5, -75.0], "expected": 62.5}, {"input": [62.5, -74.5], "expected": 62.5}, {"input": [62.5, -74.0], "expected": 62.5}, {"input": [62.5, -73.5], "expected": 62.5}, {"input": [62.5, -73.0], "expected": 62.5}, {"input": [62.5, -72.5], "expected": 62.5}, {"input": [62.5, -72.0], "expected": 62.5}, {"input": [62.5, -71.5], "expected": 62.5}, {"input": [62.5, -71.0], "expected": 62.5}, {"input": [62.5, -70.5], "expected": 62.5}, {"input": [62.5, -70.0], "expected": 62.5}, {"input": [62.5, -69.5], "expected": 62.5}, {"input": [62.5, -69.0], "expected": 62.5}, {"input": [62.5, -68.5], "expected": 62.5}, {"input": [62.5, -68.0], "expected": 62.5}, {"input": [62.5, -67.5], "expected": 62.5}, {"input": [62.5, -67.0], "expected": 62.5}, {"input": [62.5, -66.5], "expected": 62.5}, {"input": [62.5, -66.0], "expected": 62.5}, {"input": [62.5, -65.5], "expected": 62.5}, {"input": [62.5, -65.0], "expected": 62.5}, {"input": [62.5, -64.5], "expected": 62.5}, {"input": [62.5, -64.0], "expected": 62.5}, {"input": [62.5, -63.5], "expected": 62.5}, {"input": [62.5, -63.0], "expected": 62.5}, {"input": [62.5, -62.5], "expected": 62.5}, {"input": [62.5, -62.0], "expected": 62.5}, {"input": [62.5, -61.5], "expected": 62.5}, {"input": [62.5, -61.0], "expected": 62.5}, {"input": [62.5, -60.5], "expected": 62.5}, {"input": [62.5, -60.0], "expected": 62.5}, {"input": [62.5, -59.5], "expected": 62.5}, {"input": [62.5, -59.0], "expected": 62.5}, {"input": [62.5, -58.5], "expected": 62.5}, {"input": [62.5, -58.0], "expected": 62.5}, {"input": [62.5, -57.5], "expected": 62.5}, {"input": [62.5, -57.0], "expected": 62.5}, {"input": [62.5, -56.5], "expected": 62.5}, {"input": [62.5, -56.0], "expected": 62.5}, {"input": [62.5, -55.5], "expected": 62.5}, {"input": [62.5, -55.0], "expected": 62.5}, {"input": [62.5, -54.5], "expected": 62.5}, {"input": [62.5, -54.0], "expected": 62.5}, {"input": [62.5, -53.5], "expected": 62.5}, {"input": [62.5, -53.0], "expected": 62.5}, {"input": [62.5, -52.5], "expected": 62.5}, {"input": [62.5, -52.0], "expected": 62.5}, {"input": [62.5, -51.5], "expected": 62.5}, {"input": [62.5, -51.0], "expected": 62.5}, {"input": [62.5, -50.5], "expected": 62.5}, {"input": [62.5, -50.0], "expected": 62.5}, {"input": [62.5, -49.5], "expected": 62.5}, {"input": [62.5, -49.0], "expected": 62.5}, {"input": [62.5, -48.5], "expected": 62.5}, {"input": [62.5, -48.0], "expected": 62.5}, {"input": [62.5, -47.5], "expected": 62.5}, {"input": [62.5, -47.0], "expected": 62.5}, {"input": [62.5, -46.5], "expected": 62.5}, {"input": [62.5, -46.0], "expected": 62.5}, {"input": [62.5, -45.5], "expected": 62.5}, {"input": [62.5, -45.0], "expected": 62.5}, {"input": [62.5, -44.5], "expected": 62.5}, {"input": [62.5, -44.0], "expected": 62.5}, {"input": [62.5, -43.5], "expected": 62.5}, {"input": [62.5, -43.0], "expected": 62.5}, {"input": [62.5, -42.5], "expected": 62.5}, {"input": [62.5, -42.0], "expected": 62.5}, {"input": [62.5, -41.5], "expected": 62.5}, {"input": [62.5, -41.0], "expected": 62.5}, {"input": [62.5, -40.5], "expected": 62.5}, {"input": [62.5, -40.0], "expected": 62.5}, {"input": [62.5, -39.5], "expected": 62.5}, {"input": [62.5, -39.0], "expected": 62.5}, {"input": [62.5, -38.5], "expected": 62.5}, {"input": [62.5, -38.0], "expected": 62.5}, {"input": [62.5, -37.5], "expected": 62.5}, {"input": [62.5, -37.0], "expected": 62.5}, {"input": [62.5, -36.5], "expected": 62.5}, {"input": [62.5, -36.0], "expected": 62.5}, {"input": [62.5, -35.5], "expected": 62.5}, {"input": [62.5, -35.0], "expected": 62.5}, {"input": [62.5, -34.5], "expected": 62.5}, {"input": [62.5, -34.0], "expected": 62.5}, {"input": [62.5, -33.5], "expected": 62.5}, {"input": [62.5, -33.0], "expected": 62.5}, {"input": [62.5, -32.5], "expected": 62.5}, {"input": [62.5, -32.0], "expected": 62.5}, {"input": [62.5, -31.5], "expected": 62.5}, {"input": [62.5, -31.0], "expected": 62.5}, {"input": [62.5, -30.5], "expected": 62.5}, {"input": [62.5, -30.0], "expected": 62.5}, {"input": [62.5, -29.5], "expected": 62.5}, {"input": [62.5, -29.0], "expected": 62.5}, {"input": [62.5, -28.5], "expected": 62.5}, {"input": [62.5, -28.0], "expected": 62.5}, {"input": [62.5, -27.5], "expected": 62.5}, {"input": [62.5, -27.0], "expected": 62.5}, {"input": [62.5, -26.5], "expected": 62.5}, {"input": [62.5, -26.0], "expected": 62.5}, {"input": [62.5, -25.5], "expected": 62.5}, {"input": [62.5, -25.0], "expected": 62.5}, {"input": [62.5, -24.5], "expected": 62.5}, {"input": [62.5, -24.0], "expected": 62.5}, {"input": [62.5, -23.5], "expected": 62.5}, {"input": [62.5, -23.0], "expected": 62.5}, {"input": [62.5, -22.5], "expected": 62.5}, {"input": [62.5, -22.0], "expected": 62.5}, {"input": [62.5, -21.5], "expected": 62.5}, {"input": [62.5, -21.0], "expected": 62.5}, {"input": [62.5, -20.5], "expected": 62.5}, {"input": [62.5, -20.0], "expected": 62.5}, {"input": [62.5, -19.5], "expected": 62.5}, {"input": [62.5, -19.0], "expected": 62.5}, {"input": [62.5, -18.5], "expected": 62.5}, {"input": [62.5, -18.0], "expected": 62.5}, {"input": [62.5, -17.5], "expected": 62.5}, {"input": [62.5, -17.0], "expected": 62.5}, {"input": [62.5, -16.5], "expected": 62.5}, {"input": [62.5, -16.0], "expected": 62.5}, {"input": [62.5, -15.5], "expected": 62.5}, {"input": [62.5, -15.0], "expected": 62.5}, {"input": [62.5, -14.5], "expected": 62.5}, {"input": [62.5, -14.0], "expected": 62.5}, {"input": [62.5, -13.5], "expected": 62.5}, {"input": [62.5, -13.0], "expected": 62.5}, {"input": [62.5, -12.5], "expected": 62.5}, {"input": [62.5, -12.0], "expected": 62.5}, {"input": [62.5, -11.5], "expected": 62.5}, {"input": [62.5, -11.0], "expected": 62.5}, {"input": [62.5, -10.5], "expected": 62.5}, {"input": [62.5, -10.0], "expected": 62.5}, {"input": [62.5, -9.5], "expected": 62.5}, {"input": [62.5, -9.0], "expected": 62.5}, {"input": [62.5, -8.5], "expected": 62.5}, {"input": [62.5, -8.0], "expected": 62.5}, {"input": [62.5, -7.5], "expected": 62.5}, {"input": [62.5, -7.0], "expected": 62.5}, {"input": [62.5, -6.5], "expected": 62.5}, {"input": [62.5, -6.0], "expected": 62.5}, {"input": [62.5, -5.5], "expected": 62.5}, {"input": [62.5, -5.0], "expected": 62.5}, {"input": [62.5, -4.5], "expected": 62.5}, {"input": [62.5, -4.0], "expected": 62.5}, {"input": [62.5, -3.5], "expected": 62.5}, {"input": [62.5, -3.0], "expected": 62.5}, {"input": [62.5, -2.5], "expected": 62.5}, {"input": [62.5, -2.0], "expected": 62.5}, {"input": [62.5, -1.5], "expected": 62.5}, {"input": [62.5, -1.0], "expected": 62.5}, {"input": [62.5, -0.5], "expected": 62.5}, {"input": [62.5, 0.0], "expected": 62.5}, {"input": [62.5, 0.5], "expected": 62.5}, {"input": [62.5, 1.0], "expected": 62.5}, {"input": [62.5, 1.5], "expected": 62.5}, {"input": [62.5, 2.0], "expected": 62.5}, {"input": [62.5, 2.5], "expected": 62.5}, {"input": [62.5, 3.0], "expected": 62.5}, {"input": [62.5, 3.5], "expected": 62.5}, {"input": [62.5, 4.0], "expected": 62.5}, {"input": [62.5, 4.5], "expected": 62.5}, {"input": [62.5, 5.0], "expected": 62.5}, {"input": [62.5, 5.5], "expected": 62.5}, {"input": [62.5, 6.0], "expected": 62.5}, {"input": [62.5, 6.5], "expected": 62.5}, {"input": [62.5, 7.0], "expected": 62.5}, {"input": [62.5, 7.5], "expected": 62.5}, {"input": [62.5, 8.0], "expected": 62.5}, {"input": [62.5, 8.5], "expected": 62.5}, {"input": [62.5, 9.0], "expected": 62.5}, {"input": [62.5, 9.5], "expected": 62.5}, {"input": [62.5, 10.0], "expected": 62.5}, {"input": [62.5, 10.5], "expected": 62.5}, {"input": [62.5, 11.0], "expected": 62.5}, {"input": [62.5, 11.5], "expected": 62.5}, {"input": [62.5, 12.0], "expected": 62.5}, {"input": [62.5, 12.5], "expected": 62.5}, {"input": [62.5, 13.0], "expected": 62.5}, {"input": [62.5, 13.5], "expected": 62.5}, {"input": [62.5, 14.0], "expected": 62.5}, {"input": [62.5, 14.5], "expected": 62.5}, {"input": [62.5, 15.0], "expected": 62.5}, {"input": [62.5, 15.5], "expected": 62.5}, {"input": [62.5, 16.0], "expected": 62.5}, {"input": [62.5, 16.5], "expected": 62.5}, {"input": [62.5, 17.0], "expected": 62.5}, {"input": [62.5, 17.5], "expected": 62.5}, {"input": [62.5, 18.0], "expected": 62.5}, {"input": [62.5, 18.5], "expected": 62.5}, {"input": [62.5, 19.0], "expected": 62.5}, {"input": [62.5, 19.5], "expected": 62.5}, {"input": [62.5, 20.0], "expected": 62.5}, {"input": [62.5, 20.5], "expected": 62.5}, {"input": [62.5, 21.0], "expected": 62.5}, {"input": [62.5, 21.5], "expected": 62.5}, {"input": [62.5, 22.0], "expected": 62.5}, {"input": [62.5, 22.5], "expected": 62.5}, {"input": [62.5, 23.0], "expected": 62.5}, {"input": [62.5, 23.5], "expected": 62.5}, {"input": [62.5, 24.0], "expected": 62.5}, {"input": [62.5, 24.5], "expected": 62.5}, {"input": [62.5, 25.0], "expected": 62.5}, {"input": [62.5, 25.5], "expected": 62.5}, {"input": [62.5, 26.0], "expected": 62.5}, {"input": [62.5, 26.5], "expected": 62.5}, {"input": [62.5, 27.0], "expected": 62.5}, {"input": [62.5, 27.5], "expected": 62.5}, {"input": [62.5, 28.0], "expected": 62.5}, {"input": [62.5, 28.5], "expected": 62.5}, {"input": [62.5, 29.0], "expected": 62.5}, {"input": [62.5, 29.5], "expected": 62.50000000000001}, {"input": [62.5, 30.0], "expected": 62.50000000000001}, {"input": [62.5, 30.5], "expected": 62.500000000000014}, {"input": [62.5, 31.0], "expected": 62.50000000000002}, {"input": [62.5, 31.5], "expected": 62.500000000000036}, {"input": [62.5, 32.0], "expected": 62.50000000000006}, {"input": [62.5, 32.5], "expected": 62.50000000000009}, {"input": [62.5, 33.0], "expected": 62.500000000000156}, {"input": [62.5, 33.5], "expected": 62.500000000000256}, {"input": [62.5, 34.0], "expected": 62.50000000000042}, {"input": [62.5, 34.5], "expected": 62.50000000000069}, {"input": [62.5, 35.0], "expected": 62.50000000000114}, {"input": [62.5, 35.5], "expected": 62.50000000000188}, {"input": [62.5, 36.0], "expected": 62.5000000000031}, {"input": [62.5, 36.5], "expected": 62.50000000000511}, {"input": [62.5, 37.0], "expected": 62.50000000000842}, {"input": [62.5, 37.5], "expected": 62.50000000001389}, {"input": [62.5, 38.0], "expected": 62.5000000000229}, {"input": [62.5, 38.5], "expected": 62.50000000003775}, {"input": [62.5, 39.0], "expected": 62.50000000006224}, {"input": [62.5, 39.5], "expected": 62.50000000010262}, {"input": [62.5, 40.0], "expected": 62.50000000016919}, {"input": [62.5, 40.5], "expected": 62.500000000278945}, {"input": [62.5, 41.0], "expected": 62.500000000459906}, {"input": [62.5, 41.5], "expected": 62.500000000758256}, {"input": [62.5, 42.0], "expected": 62.50000000125015}, {"input": [62.5, 42.5], "expected": 62.50000000206116}, {"input": [62.5, 43.0], "expected": 62.50000000339827}, {"input": [62.5, 43.5], "expected": 62.50000000560279}, {"input": [62.5, 44.0], "expected": 62.500000009237446}, {"input": [62.5, 44.5], "expected": 62.50000001522998}, {"input": [62.5, 45.0], "expected": 62.50000002510999}, {"input": [62.5, 45.5], "expected": 62.500000041399375}, {"input": [62.5, 46.0], "expected": 62.50000006825603}, {"input": [62.5, 46.5], "expected": 62.50000011253517}, {"input": [62.5, 47.0], "expected": 62.50000018553912}, {"input": [62.5, 47.5], "expected": 62.500000305902276}, {"input": [62.5, 48.0], "expected": 62.50000050434753}, {"input": [62.5, 48.5], "expected": 62.500000831528375}, {"input": [62.5, 49.0], "expected": 62.500001370958145}, {"input": [62.5, 49.5], "expected": 62.50000226032685}, {"input": [62.5, 50.0], "expected": 62.50000372664623}, {"input": [62.5, 50.5], "expected": 62.50000614419348}, {"input": [62.5, 51.0], "expected": 62.50001013004229}, {"input": [62.5, 51.5], "expected": 62.50001670156132}, {"input": [62.5, 52.0], "expected": 62.50002753607023}, {"input": [62.5, 52.5], "expected": 62.50004539889922}, {"input": [62.5, 53.0], "expected": 62.50007484902863}, {"input": [62.5, 53.5], "expected": 62.50012340218972}, {"input": [62.5, 54.0], "expected": 62.50020344767213}, {"input": [62.5, 54.5], "expected": 62.5003354063729}, {"input": [62.5, 55.0], "expected": 62.50055293147536}, {"input": [62.5, 55.5], "expected": 62.50091146645377}, {"input": [62.5, 56.0], "expected": 62.50150231015976}, {"input": [62.5, 56.5], "expected": 62.50247568513773}, {"input": [62.5, 57.0], "expected": 62.50407844327057}, {"input": [62.5, 57.5], "expected": 62.50671534848912}, {"input": [62.5, 58.0], "expected": 62.5110477448486}, {"input": [62.5, 58.5], "expected": 62.51814992791781}, {"input": [62.5, 59.0], "expected": 62.52975041827262}, {"input": [62.5, 59.5], "expected": 62.548587351573744}, {"input": [62.5, 60.0], "expected": 62.57888973429255}, {"input": [62.5, 60.5], "expected": 62.62692801104297}, {"input": [62.5, 61.0], "expected": 62.70141327798275}, {"input": [62.5, 61.5], "expected": 62.81326168751822}, {"input": [62.5, 62.0], "expected": 62.97407698418011}, {"input": [62.5, 62.5], "expected": 63.19314718055995}, {"input": [62.5, 63.0], "expected": 63.47407698418011}, {"input": [62.5, 63.5], "expected": 63.81326168751822}, {"input": [62.5, 64.0], "expected": 64.20141327798275}, {"input": [62.5, 64.5], "expected": 64.62692801104298}, {"input": [62.5, 65.0], "expected": 65.07888973429255}, {"input": [62.5, 65.5], "expected": 65.54858735157374}, {"input": [62.5, 66.0], "expected": 66.02975041827263}, {"input": [62.5, 66.5], "expected": 66.5181499279178}, {"input": [62.5, 67.0], "expected": 67.0110477448486}, {"input": [62.5, 67.5], "expected": 67.50671534848912}, {"input": [62.5, 68.0], "expected": 68.00407844327057}, {"input": [62.5, 68.5], "expected": 68.50247568513772}, {"input": [62.5, 69.0], "expected": 69.00150231015975}, {"input": [62.5, 69.5], "expected": 69.50091146645377}, {"input": [62.5, 70.0], "expected": 70.00055293147535}, {"input": [62.5, 70.5], "expected": 70.5003354063729}, {"input": [62.5, 71.0], "expected": 71.00020344767213}, {"input": [62.5, 71.5], "expected": 71.50012340218973}, {"input": [62.5, 72.0], "expected": 72.00007484902864}, {"input": [62.5, 72.5], "expected": 72.50004539889922}, {"input": [62.5, 73.0], "expected": 73.00002753607023}, {"input": [62.5, 73.5], "expected": 73.50001670156132}, {"input": [62.5, 74.0], "expected": 74.00001013004228}, {"input": [62.5, 74.5], "expected": 74.50000614419348}, {"input": [62.5, 75.0], "expected": 75.00000372664623}, {"input": [62.5, 75.5], "expected": 75.50000226032685}, {"input": [62.5, 76.0], "expected": 76.00000137095815}, {"input": [62.5, 76.5], "expected": 76.50000083152837}, {"input": [62.5, 77.0], "expected": 77.00000050434754}, {"input": [62.5, 77.5], "expected": 77.50000030590228}, {"input": [62.5, 78.0], "expected": 78.00000018553912}, {"input": [62.5, 78.5], "expected": 78.50000011253516}, {"input": [62.5, 79.0], "expected": 79.00000006825603}, {"input": [62.5, 79.5], "expected": 79.50000004139937}, {"input": [62.5, 80.0], "expected": 80.00000002511}, {"input": [62.5, 80.5], "expected": 80.50000001522999}, {"input": [62.5, 81.0], "expected": 81.00000000923745}, {"input": [62.5, 81.5], "expected": 81.5000000056028}, {"input": [62.5, 82.0], "expected": 82.00000000339827}, {"input": [62.5, 82.5], "expected": 82.50000000206116}, {"input": [62.5, 83.0], "expected": 83.00000000125016}, {"input": [62.5, 83.5], "expected": 83.50000000075826}, {"input": [62.5, 84.0], "expected": 84.0000000004599}, {"input": [62.5, 84.5], "expected": 84.50000000027894}, {"input": [62.5, 85.0], "expected": 85.0000000001692}, {"input": [62.5, 85.5], "expected": 85.50000000010262}, {"input": [62.5, 86.0], "expected": 86.00000000006224}, {"input": [62.5, 86.5], "expected": 86.50000000003776}, {"input": [62.5, 87.0], "expected": 87.0000000000229}, {"input": [62.5, 87.5], "expected": 87.50000000001388}, {"input": [62.5, 88.0], "expected": 88.00000000000843}, {"input": [62.5, 88.5], "expected": 88.50000000000512}, {"input": [62.5, 89.0], "expected": 89.0000000000031}, {"input": [62.5, 89.5], "expected": 89.50000000000188}, {"input": [62.5, 90.0], "expected": 90.00000000000114}, {"input": [62.5, 90.5], "expected": 90.5000000000007}, {"input": [62.5, 91.0], "expected": 91.00000000000043}, {"input": [62.5, 91.5], "expected": 91.50000000000026}, {"input": [62.5, 92.0], "expected": 92.00000000000016}, {"input": [62.5, 92.5], "expected": 92.5000000000001}, {"input": [62.5, 93.0], "expected": 93.00000000000006}, {"input": [62.5, 93.5], "expected": 93.50000000000003}, {"input": [62.5, 94.0], "expected": 94.00000000000001}, {"input": [62.5, 94.5], "expected": 94.50000000000001}, {"input": [62.5, 95.0], "expected": 95.00000000000001}, {"input": [62.5, 95.5], "expected": 95.5}, {"input": [62.5, 96.0], "expected": 96.0}, {"input": [62.5, 96.5], "expected": 96.5}, {"input": [62.5, 97.0], "expected": 97.0}, {"input": [62.5, 97.5], "expected": 97.5}, {"input": [62.5, 98.0], "expected": 98.0}, {"input": [62.5, 98.5], "expected": 98.5}, {"input": [62.5, 99.0], "expected": 99.0}, {"input": [62.5, 99.5], "expected": 99.5}, {"input": [63.0, -100.0], "expected": 63.0}, {"input": [63.0, -99.5], "expected": 63.0}, {"input": [63.0, -99.0], "expected": 63.0}, {"input": [63.0, -98.5], "expected": 63.0}, {"input": [63.0, -98.0], "expected": 63.0}, {"input": [63.0, -97.5], "expected": 63.0}, {"input": [63.0, -97.0], "expected": 63.0}, {"input": [63.0, -96.5], "expected": 63.0}, {"input": [63.0, -96.0], "expected": 63.0}, {"input": [63.0, -95.5], "expected": 63.0}, {"input": [63.0, -95.0], "expected": 63.0}, {"input": [63.0, -94.5], "expected": 63.0}, {"input": [63.0, -94.0], "expected": 63.0}, {"input": [63.0, -93.5], "expected": 63.0}, {"input": [63.0, -93.0], "expected": 63.0}, {"input": [63.0, -92.5], "expected": 63.0}, {"input": [63.0, -92.0], "expected": 63.0}, {"input": [63.0, -91.5], "expected": 63.0}, {"input": [63.0, -91.0], "expected": 63.0}, {"input": [63.0, -90.5], "expected": 63.0}, {"input": [63.0, -90.0], "expected": 63.0}, {"input": [63.0, -89.5], "expected": 63.0}, {"input": [63.0, -89.0], "expected": 63.0}, {"input": [63.0, -88.5], "expected": 63.0}, {"input": [63.0, -88.0], "expected": 63.0}, {"input": [63.0, -87.5], "expected": 63.0}, {"input": [63.0, -87.0], "expected": 63.0}, {"input": [63.0, -86.5], "expected": 63.0}, {"input": [63.0, -86.0], "expected": 63.0}, {"input": [63.0, -85.5], "expected": 63.0}, {"input": [63.0, -85.0], "expected": 63.0}, {"input": [63.0, -84.5], "expected": 63.0}, {"input": [63.0, -84.0], "expected": 63.0}, {"input": [63.0, -83.5], "expected": 63.0}, {"input": [63.0, -83.0], "expected": 63.0}, {"input": [63.0, -82.5], "expected": 63.0}, {"input": [63.0, -82.0], "expected": 63.0}, {"input": [63.0, -81.5], "expected": 63.0}, {"input": [63.0, -81.0], "expected": 63.0}, {"input": [63.0, -80.5], "expected": 63.0}, {"input": [63.0, -80.0], "expected": 63.0}, {"input": [63.0, -79.5], "expected": 63.0}, {"input": [63.0, -79.0], "expected": 63.0}, {"input": [63.0, -78.5], "expected": 63.0}, {"input": [63.0, -78.0], "expected": 63.0}, {"input": [63.0, -77.5], "expected": 63.0}, {"input": [63.0, -77.0], "expected": 63.0}, {"input": [63.0, -76.5], "expected": 63.0}, {"input": [63.0, -76.0], "expected": 63.0}, {"input": [63.0, -75.5], "expected": 63.0}, {"input": [63.0, -75.0], "expected": 63.0}, {"input": [63.0, -74.5], "expected": 63.0}, {"input": [63.0, -74.0], "expected": 63.0}, {"input": [63.0, -73.5], "expected": 63.0}, {"input": [63.0, -73.0], "expected": 63.0}, {"input": [63.0, -72.5], "expected": 63.0}, {"input": [63.0, -72.0], "expected": 63.0}, {"input": [63.0, -71.5], "expected": 63.0}, {"input": [63.0, -71.0], "expected": 63.0}, {"input": [63.0, -70.5], "expected": 63.0}, {"input": [63.0, -70.0], "expected": 63.0}, {"input": [63.0, -69.5], "expected": 63.0}, {"input": [63.0, -69.0], "expected": 63.0}, {"input": [63.0, -68.5], "expected": 63.0}, {"input": [63.0, -68.0], "expected": 63.0}, {"input": [63.0, -67.5], "expected": 63.0}, {"input": [63.0, -67.0], "expected": 63.0}, {"input": [63.0, -66.5], "expected": 63.0}, {"input": [63.0, -66.0], "expected": 63.0}, {"input": [63.0, -65.5], "expected": 63.0}, {"input": [63.0, -65.0], "expected": 63.0}, {"input": [63.0, -64.5], "expected": 63.0}, {"input": [63.0, -64.0], "expected": 63.0}, {"input": [63.0, -63.5], "expected": 63.0}, {"input": [63.0, -63.0], "expected": 63.0}, {"input": [63.0, -62.5], "expected": 63.0}, {"input": [63.0, -62.0], "expected": 63.0}, {"input": [63.0, -61.5], "expected": 63.0}, {"input": [63.0, -61.0], "expected": 63.0}, {"input": [63.0, -60.5], "expected": 63.0}, {"input": [63.0, -60.0], "expected": 63.0}, {"input": [63.0, -59.5], "expected": 63.0}, {"input": [63.0, -59.0], "expected": 63.0}, {"input": [63.0, -58.5], "expected": 63.0}, {"input": [63.0, -58.0], "expected": 63.0}, {"input": [63.0, -57.5], "expected": 63.0}, {"input": [63.0, -57.0], "expected": 63.0}, {"input": [63.0, -56.5], "expected": 63.0}, {"input": [63.0, -56.0], "expected": 63.0}, {"input": [63.0, -55.5], "expected": 63.0}, {"input": [63.0, -55.0], "expected": 63.0}, {"input": [63.0, -54.5], "expected": 63.0}, {"input": [63.0, -54.0], "expected": 63.0}, {"input": [63.0, -53.5], "expected": 63.0}, {"input": [63.0, -53.0], "expected": 63.0}, {"input": [63.0, -52.5], "expected": 63.0}, {"input": [63.0, -52.0], "expected": 63.0}, {"input": [63.0, -51.5], "expected": 63.0}, {"input": [63.0, -51.0], "expected": 63.0}, {"input": [63.0, -50.5], "expected": 63.0}, {"input": [63.0, -50.0], "expected": 63.0}, {"input": [63.0, -49.5], "expected": 63.0}, {"input": [63.0, -49.0], "expected": 63.0}, {"input": [63.0, -48.5], "expected": 63.0}, {"input": [63.0, -48.0], "expected": 63.0}, {"input": [63.0, -47.5], "expected": 63.0}, {"input": [63.0, -47.0], "expected": 63.0}, {"input": [63.0, -46.5], "expected": 63.0}, {"input": [63.0, -46.0], "expected": 63.0}, {"input": [63.0, -45.5], "expected": 63.0}, {"input": [63.0, -45.0], "expected": 63.0}, {"input": [63.0, -44.5], "expected": 63.0}, {"input": [63.0, -44.0], "expected": 63.0}, {"input": [63.0, -43.5], "expected": 63.0}, {"input": [63.0, -43.0], "expected": 63.0}, {"input": [63.0, -42.5], "expected": 63.0}, {"input": [63.0, -42.0], "expected": 63.0}, {"input": [63.0, -41.5], "expected": 63.0}, {"input": [63.0, -41.0], "expected": 63.0}, {"input": [63.0, -40.5], "expected": 63.0}, {"input": [63.0, -40.0], "expected": 63.0}, {"input": [63.0, -39.5], "expected": 63.0}, {"input": [63.0, -39.0], "expected": 63.0}, {"input": [63.0, -38.5], "expected": 63.0}, {"input": [63.0, -38.0], "expected": 63.0}, {"input": [63.0, -37.5], "expected": 63.0}, {"input": [63.0, -37.0], "expected": 63.0}, {"input": [63.0, -36.5], "expected": 63.0}, {"input": [63.0, -36.0], "expected": 63.0}, {"input": [63.0, -35.5], "expected": 63.0}, {"input": [63.0, -35.0], "expected": 63.0}, {"input": [63.0, -34.5], "expected": 63.0}, {"input": [63.0, -34.0], "expected": 63.0}, {"input": [63.0, -33.5], "expected": 63.0}, {"input": [63.0, -33.0], "expected": 63.0}, {"input": [63.0, -32.5], "expected": 63.0}, {"input": [63.0, -32.0], "expected": 63.0}, {"input": [63.0, -31.5], "expected": 63.0}, {"input": [63.0, -31.0], "expected": 63.0}, {"input": [63.0, -30.5], "expected": 63.0}, {"input": [63.0, -30.0], "expected": 63.0}, {"input": [63.0, -29.5], "expected": 63.0}, {"input": [63.0, -29.0], "expected": 63.0}, {"input": [63.0, -28.5], "expected": 63.0}, {"input": [63.0, -28.0], "expected": 63.0}, {"input": [63.0, -27.5], "expected": 63.0}, {"input": [63.0, -27.0], "expected": 63.0}, {"input": [63.0, -26.5], "expected": 63.0}, {"input": [63.0, -26.0], "expected": 63.0}, {"input": [63.0, -25.5], "expected": 63.0}, {"input": [63.0, -25.0], "expected": 63.0}, {"input": [63.0, -24.5], "expected": 63.0}, {"input": [63.0, -24.0], "expected": 63.0}, {"input": [63.0, -23.5], "expected": 63.0}, {"input": [63.0, -23.0], "expected": 63.0}, {"input": [63.0, -22.5], "expected": 63.0}, {"input": [63.0, -22.0], "expected": 63.0}, {"input": [63.0, -21.5], "expected": 63.0}, {"input": [63.0, -21.0], "expected": 63.0}, {"input": [63.0, -20.5], "expected": 63.0}, {"input": [63.0, -20.0], "expected": 63.0}, {"input": [63.0, -19.5], "expected": 63.0}, {"input": [63.0, -19.0], "expected": 63.0}, {"input": [63.0, -18.5], "expected": 63.0}, {"input": [63.0, -18.0], "expected": 63.0}, {"input": [63.0, -17.5], "expected": 63.0}, {"input": [63.0, -17.0], "expected": 63.0}, {"input": [63.0, -16.5], "expected": 63.0}, {"input": [63.0, -16.0], "expected": 63.0}, {"input": [63.0, -15.5], "expected": 63.0}, {"input": [63.0, -15.0], "expected": 63.0}, {"input": [63.0, -14.5], "expected": 63.0}, {"input": [63.0, -14.0], "expected": 63.0}, {"input": [63.0, -13.5], "expected": 63.0}, {"input": [63.0, -13.0], "expected": 63.0}, {"input": [63.0, -12.5], "expected": 63.0}, {"input": [63.0, -12.0], "expected": 63.0}, {"input": [63.0, -11.5], "expected": 63.0}, {"input": [63.0, -11.0], "expected": 63.0}, {"input": [63.0, -10.5], "expected": 63.0}, {"input": [63.0, -10.0], "expected": 63.0}, {"input": [63.0, -9.5], "expected": 63.0}, {"input": [63.0, -9.0], "expected": 63.0}, {"input": [63.0, -8.5], "expected": 63.0}, {"input": [63.0, -8.0], "expected": 63.0}, {"input": [63.0, -7.5], "expected": 63.0}, {"input": [63.0, -7.0], "expected": 63.0}, {"input": [63.0, -6.5], "expected": 63.0}, {"input": [63.0, -6.0], "expected": 63.0}, {"input": [63.0, -5.5], "expected": 63.0}, {"input": [63.0, -5.0], "expected": 63.0}, {"input": [63.0, -4.5], "expected": 63.0}, {"input": [63.0, -4.0], "expected": 63.0}, {"input": [63.0, -3.5], "expected": 63.0}, {"input": [63.0, -3.0], "expected": 63.0}, {"input": [63.0, -2.5], "expected": 63.0}, {"input": [63.0, -2.0], "expected": 63.0}, {"input": [63.0, -1.5], "expected": 63.0}, {"input": [63.0, -1.0], "expected": 63.0}, {"input": [63.0, -0.5], "expected": 63.0}, {"input": [63.0, 0.0], "expected": 63.0}, {"input": [63.0, 0.5], "expected": 63.0}, {"input": [63.0, 1.0], "expected": 63.0}, {"input": [63.0, 1.5], "expected": 63.0}, {"input": [63.0, 2.0], "expected": 63.0}, {"input": [63.0, 2.5], "expected": 63.0}, {"input": [63.0, 3.0], "expected": 63.0}, {"input": [63.0, 3.5], "expected": 63.0}, {"input": [63.0, 4.0], "expected": 63.0}, {"input": [63.0, 4.5], "expected": 63.0}, {"input": [63.0, 5.0], "expected": 63.0}, {"input": [63.0, 5.5], "expected": 63.0}, {"input": [63.0, 6.0], "expected": 63.0}, {"input": [63.0, 6.5], "expected": 63.0}, {"input": [63.0, 7.0], "expected": 63.0}, {"input": [63.0, 7.5], "expected": 63.0}, {"input": [63.0, 8.0], "expected": 63.0}, {"input": [63.0, 8.5], "expected": 63.0}, {"input": [63.0, 9.0], "expected": 63.0}, {"input": [63.0, 9.5], "expected": 63.0}, {"input": [63.0, 10.0], "expected": 63.0}, {"input": [63.0, 10.5], "expected": 63.0}, {"input": [63.0, 11.0], "expected": 63.0}, {"input": [63.0, 11.5], "expected": 63.0}, {"input": [63.0, 12.0], "expected": 63.0}, {"input": [63.0, 12.5], "expected": 63.0}, {"input": [63.0, 13.0], "expected": 63.0}, {"input": [63.0, 13.5], "expected": 63.0}, {"input": [63.0, 14.0], "expected": 63.0}, {"input": [63.0, 14.5], "expected": 63.0}, {"input": [63.0, 15.0], "expected": 63.0}, {"input": [63.0, 15.5], "expected": 63.0}, {"input": [63.0, 16.0], "expected": 63.0}, {"input": [63.0, 16.5], "expected": 63.0}, {"input": [63.0, 17.0], "expected": 63.0}, {"input": [63.0, 17.5], "expected": 63.0}, {"input": [63.0, 18.0], "expected": 63.0}, {"input": [63.0, 18.5], "expected": 63.0}, {"input": [63.0, 19.0], "expected": 63.0}, {"input": [63.0, 19.5], "expected": 63.0}, {"input": [63.0, 20.0], "expected": 63.0}, {"input": [63.0, 20.5], "expected": 63.0}, {"input": [63.0, 21.0], "expected": 63.0}, {"input": [63.0, 21.5], "expected": 63.0}, {"input": [63.0, 22.0], "expected": 63.0}, {"input": [63.0, 22.5], "expected": 63.0}, {"input": [63.0, 23.0], "expected": 63.0}, {"input": [63.0, 23.5], "expected": 63.0}, {"input": [63.0, 24.0], "expected": 63.0}, {"input": [63.0, 24.5], "expected": 63.0}, {"input": [63.0, 25.0], "expected": 63.0}, {"input": [63.0, 25.5], "expected": 63.0}, {"input": [63.0, 26.0], "expected": 63.0}, {"input": [63.0, 26.5], "expected": 63.0}, {"input": [63.0, 27.0], "expected": 63.0}, {"input": [63.0, 27.5], "expected": 63.0}, {"input": [63.0, 28.0], "expected": 63.0}, {"input": [63.0, 28.5], "expected": 63.0}, {"input": [63.0, 29.0], "expected": 63.0}, {"input": [63.0, 29.5], "expected": 63.0}, {"input": [63.0, 30.0], "expected": 63.00000000000001}, {"input": [63.0, 30.5], "expected": 63.00000000000001}, {"input": [63.0, 31.0], "expected": 63.000000000000014}, {"input": [63.0, 31.5], "expected": 63.00000000000002}, {"input": [63.0, 32.0], "expected": 63.000000000000036}, {"input": [63.0, 32.5], "expected": 63.00000000000006}, {"input": [63.0, 33.0], "expected": 63.00000000000009}, {"input": [63.0, 33.5], "expected": 63.000000000000156}, {"input": [63.0, 34.0], "expected": 63.000000000000256}, {"input": [63.0, 34.5], "expected": 63.00000000000042}, {"input": [63.0, 35.0], "expected": 63.00000000000069}, {"input": [63.0, 35.5], "expected": 63.00000000000114}, {"input": [63.0, 36.0], "expected": 63.00000000000188}, {"input": [63.0, 36.5], "expected": 63.0000000000031}, {"input": [63.0, 37.0], "expected": 63.00000000000511}, {"input": [63.0, 37.5], "expected": 63.00000000000842}, {"input": [63.0, 38.0], "expected": 63.00000000001389}, {"input": [63.0, 38.5], "expected": 63.0000000000229}, {"input": [63.0, 39.0], "expected": 63.00000000003775}, {"input": [63.0, 39.5], "expected": 63.00000000006224}, {"input": [63.0, 40.0], "expected": 63.00000000010262}, {"input": [63.0, 40.5], "expected": 63.00000000016919}, {"input": [63.0, 41.0], "expected": 63.000000000278945}, {"input": [63.0, 41.5], "expected": 63.000000000459906}, {"input": [63.0, 42.0], "expected": 63.000000000758256}, {"input": [63.0, 42.5], "expected": 63.00000000125015}, {"input": [63.0, 43.0], "expected": 63.00000000206116}, {"input": [63.0, 43.5], "expected": 63.00000000339827}, {"input": [63.0, 44.0], "expected": 63.00000000560279}, {"input": [63.0, 44.5], "expected": 63.000000009237446}, {"input": [63.0, 45.0], "expected": 63.00000001522998}, {"input": [63.0, 45.5], "expected": 63.00000002510999}, {"input": [63.0, 46.0], "expected": 63.000000041399375}, {"input": [63.0, 46.5], "expected": 63.00000006825603}, {"input": [63.0, 47.0], "expected": 63.00000011253517}, {"input": [63.0, 47.5], "expected": 63.00000018553912}, {"input": [63.0, 48.0], "expected": 63.000000305902276}, {"input": [63.0, 48.5], "expected": 63.00000050434753}, {"input": [63.0, 49.0], "expected": 63.000000831528375}, {"input": [63.0, 49.5], "expected": 63.000001370958145}, {"input": [63.0, 50.0], "expected": 63.00000226032685}, {"input": [63.0, 50.5], "expected": 63.00000372664623}, {"input": [63.0, 51.0], "expected": 63.00000614419348}, {"input": [63.0, 51.5], "expected": 63.00001013004229}, {"input": [63.0, 52.0], "expected": 63.00001670156132}, {"input": [63.0, 52.5], "expected": 63.00002753607023}, {"input": [63.0, 53.0], "expected": 63.00004539889922}, {"input": [63.0, 53.5], "expected": 63.00007484902863}, {"input": [63.0, 54.0], "expected": 63.00012340218972}, {"input": [63.0, 54.5], "expected": 63.00020344767213}, {"input": [63.0, 55.0], "expected": 63.0003354063729}, {"input": [63.0, 55.5], "expected": 63.00055293147536}, {"input": [63.0, 56.0], "expected": 63.00091146645377}, {"input": [63.0, 56.5], "expected": 63.00150231015976}, {"input": [63.0, 57.0], "expected": 63.00247568513773}, {"input": [63.0, 57.5], "expected": 63.00407844327057}, {"input": [63.0, 58.0], "expected": 63.00671534848912}, {"input": [63.0, 58.5], "expected": 63.0110477448486}, {"input": [63.0, 59.0], "expected": 63.01814992791781}, {"input": [63.0, 59.5], "expected": 63.02975041827262}, {"input": [63.0, 60.0], "expected": 63.048587351573744}, {"input": [63.0, 60.5], "expected": 63.07888973429255}, {"input": [63.0, 61.0], "expected": 63.12692801104297}, {"input": [63.0, 61.5], "expected": 63.20141327798275}, {"input": [63.0, 62.0], "expected": 63.31326168751822}, {"input": [63.0, 62.5], "expected": 63.47407698418011}, {"input": [63.0, 63.0], "expected": 63.69314718055995}, {"input": [63.0, 63.5], "expected": 63.97407698418011}, {"input": [63.0, 64.0], "expected": 64.31326168751822}, {"input": [63.0, 64.5], "expected": 64.70141327798275}, {"input": [63.0, 65.0], "expected": 65.12692801104298}, {"input": [63.0, 65.5], "expected": 65.57888973429255}, {"input": [63.0, 66.0], "expected": 66.04858735157374}, {"input": [63.0, 66.5], "expected": 66.52975041827263}, {"input": [63.0, 67.0], "expected": 67.0181499279178}, {"input": [63.0, 67.5], "expected": 67.5110477448486}, {"input": [63.0, 68.0], "expected": 68.00671534848912}, {"input": [63.0, 68.5], "expected": 68.50407844327057}, {"input": [63.0, 69.0], "expected": 69.00247568513772}, {"input": [63.0, 69.5], "expected": 69.50150231015975}, {"input": [63.0, 70.0], "expected": 70.00091146645377}, {"input": [63.0, 70.5], "expected": 70.50055293147535}, {"input": [63.0, 71.0], "expected": 71.0003354063729}, {"input": [63.0, 71.5], "expected": 71.50020344767213}, {"input": [63.0, 72.0], "expected": 72.00012340218973}, {"input": [63.0, 72.5], "expected": 72.50007484902864}, {"input": [63.0, 73.0], "expected": 73.00004539889922}, {"input": [63.0, 73.5], "expected": 73.50002753607023}, {"input": [63.0, 74.0], "expected": 74.00001670156132}, {"input": [63.0, 74.5], "expected": 74.50001013004228}, {"input": [63.0, 75.0], "expected": 75.00000614419348}, {"input": [63.0, 75.5], "expected": 75.50000372664623}, {"input": [63.0, 76.0], "expected": 76.00000226032685}, {"input": [63.0, 76.5], "expected": 76.50000137095815}, {"input": [63.0, 77.0], "expected": 77.00000083152837}, {"input": [63.0, 77.5], "expected": 77.50000050434754}, {"input": [63.0, 78.0], "expected": 78.00000030590228}, {"input": [63.0, 78.5], "expected": 78.50000018553912}, {"input": [63.0, 79.0], "expected": 79.00000011253516}, {"input": [63.0, 79.5], "expected": 79.50000006825603}, {"input": [63.0, 80.0], "expected": 80.00000004139937}, {"input": [63.0, 80.5], "expected": 80.50000002511}, {"input": [63.0, 81.0], "expected": 81.00000001522999}, {"input": [63.0, 81.5], "expected": 81.50000000923745}, {"input": [63.0, 82.0], "expected": 82.0000000056028}, {"input": [63.0, 82.5], "expected": 82.50000000339827}, {"input": [63.0, 83.0], "expected": 83.00000000206116}, {"input": [63.0, 83.5], "expected": 83.50000000125016}, {"input": [63.0, 84.0], "expected": 84.00000000075826}, {"input": [63.0, 84.5], "expected": 84.5000000004599}, {"input": [63.0, 85.0], "expected": 85.00000000027894}, {"input": [63.0, 85.5], "expected": 85.5000000001692}, {"input": [63.0, 86.0], "expected": 86.00000000010262}, {"input": [63.0, 86.5], "expected": 86.50000000006224}, {"input": [63.0, 87.0], "expected": 87.00000000003776}, {"input": [63.0, 87.5], "expected": 87.5000000000229}, {"input": [63.0, 88.0], "expected": 88.00000000001388}, {"input": [63.0, 88.5], "expected": 88.50000000000843}, {"input": [63.0, 89.0], "expected": 89.00000000000512}, {"input": [63.0, 89.5], "expected": 89.5000000000031}, {"input": [63.0, 90.0], "expected": 90.00000000000188}, {"input": [63.0, 90.5], "expected": 90.50000000000114}, {"input": [63.0, 91.0], "expected": 91.0000000000007}, {"input": [63.0, 91.5], "expected": 91.50000000000043}, {"input": [63.0, 92.0], "expected": 92.00000000000026}, {"input": [63.0, 92.5], "expected": 92.50000000000016}, {"input": [63.0, 93.0], "expected": 93.0000000000001}, {"input": [63.0, 93.5], "expected": 93.50000000000006}, {"input": [63.0, 94.0], "expected": 94.00000000000003}, {"input": [63.0, 94.5], "expected": 94.50000000000001}, {"input": [63.0, 95.0], "expected": 95.00000000000001}, {"input": [63.0, 95.5], "expected": 95.50000000000001}, {"input": [63.0, 96.0], "expected": 96.0}, {"input": [63.0, 96.5], "expected": 96.5}, {"input": [63.0, 97.0], "expected": 97.0}, {"input": [63.0, 97.5], "expected": 97.5}, {"input": [63.0, 98.0], "expected": 98.0}, {"input": [63.0, 98.5], "expected": 98.5}, {"input": [63.0, 99.0], "expected": 99.0}, {"input": [63.0, 99.5], "expected": 99.5}, {"input": [63.5, -100.0], "expected": 63.5}, {"input": [63.5, -99.5], "expected": 63.5}, {"input": [63.5, -99.0], "expected": 63.5}, {"input": [63.5, -98.5], "expected": 63.5}, {"input": [63.5, -98.0], "expected": 63.5}, {"input": [63.5, -97.5], "expected": 63.5}, {"input": [63.5, -97.0], "expected": 63.5}, {"input": [63.5, -96.5], "expected": 63.5}, {"input": [63.5, -96.0], "expected": 63.5}, {"input": [63.5, -95.5], "expected": 63.5}, {"input": [63.5, -95.0], "expected": 63.5}, {"input": [63.5, -94.5], "expected": 63.5}, {"input": [63.5, -94.0], "expected": 63.5}, {"input": [63.5, -93.5], "expected": 63.5}, {"input": [63.5, -93.0], "expected": 63.5}, {"input": [63.5, -92.5], "expected": 63.5}, {"input": [63.5, -92.0], "expected": 63.5}, {"input": [63.5, -91.5], "expected": 63.5}, {"input": [63.5, -91.0], "expected": 63.5}, {"input": [63.5, -90.5], "expected": 63.5}, {"input": [63.5, -90.0], "expected": 63.5}, {"input": [63.5, -89.5], "expected": 63.5}, {"input": [63.5, -89.0], "expected": 63.5}, {"input": [63.5, -88.5], "expected": 63.5}, {"input": [63.5, -88.0], "expected": 63.5}, {"input": [63.5, -87.5], "expected": 63.5}, {"input": [63.5, -87.0], "expected": 63.5}, {"input": [63.5, -86.5], "expected": 63.5}, {"input": [63.5, -86.0], "expected": 63.5}, {"input": [63.5, -85.5], "expected": 63.5}, {"input": [63.5, -85.0], "expected": 63.5}, {"input": [63.5, -84.5], "expected": 63.5}, {"input": [63.5, -84.0], "expected": 63.5}, {"input": [63.5, -83.5], "expected": 63.5}, {"input": [63.5, -83.0], "expected": 63.5}, {"input": [63.5, -82.5], "expected": 63.5}, {"input": [63.5, -82.0], "expected": 63.5}, {"input": [63.5, -81.5], "expected": 63.5}, {"input": [63.5, -81.0], "expected": 63.5}, {"input": [63.5, -80.5], "expected": 63.5}, {"input": [63.5, -80.0], "expected": 63.5}, {"input": [63.5, -79.5], "expected": 63.5}, {"input": [63.5, -79.0], "expected": 63.5}, {"input": [63.5, -78.5], "expected": 63.5}, {"input": [63.5, -78.0], "expected": 63.5}, {"input": [63.5, -77.5], "expected": 63.5}, {"input": [63.5, -77.0], "expected": 63.5}, {"input": [63.5, -76.5], "expected": 63.5}, {"input": [63.5, -76.0], "expected": 63.5}, {"input": [63.5, -75.5], "expected": 63.5}, {"input": [63.5, -75.0], "expected": 63.5}, {"input": [63.5, -74.5], "expected": 63.5}, {"input": [63.5, -74.0], "expected": 63.5}, {"input": [63.5, -73.5], "expected": 63.5}, {"input": [63.5, -73.0], "expected": 63.5}, {"input": [63.5, -72.5], "expected": 63.5}, {"input": [63.5, -72.0], "expected": 63.5}, {"input": [63.5, -71.5], "expected": 63.5}, {"input": [63.5, -71.0], "expected": 63.5}, {"input": [63.5, -70.5], "expected": 63.5}, {"input": [63.5, -70.0], "expected": 63.5}, {"input": [63.5, -69.5], "expected": 63.5}, {"input": [63.5, -69.0], "expected": 63.5}, {"input": [63.5, -68.5], "expected": 63.5}, {"input": [63.5, -68.0], "expected": 63.5}, {"input": [63.5, -67.5], "expected": 63.5}, {"input": [63.5, -67.0], "expected": 63.5}, {"input": [63.5, -66.5], "expected": 63.5}, {"input": [63.5, -66.0], "expected": 63.5}, {"input": [63.5, -65.5], "expected": 63.5}, {"input": [63.5, -65.0], "expected": 63.5}, {"input": [63.5, -64.5], "expected": 63.5}, {"input": [63.5, -64.0], "expected": 63.5}, {"input": [63.5, -63.5], "expected": 63.5}, {"input": [63.5, -63.0], "expected": 63.5}, {"input": [63.5, -62.5], "expected": 63.5}, {"input": [63.5, -62.0], "expected": 63.5}, {"input": [63.5, -61.5], "expected": 63.5}, {"input": [63.5, -61.0], "expected": 63.5}, {"input": [63.5, -60.5], "expected": 63.5}, {"input": [63.5, -60.0], "expected": 63.5}, {"input": [63.5, -59.5], "expected": 63.5}, {"input": [63.5, -59.0], "expected": 63.5}, {"input": [63.5, -58.5], "expected": 63.5}, {"input": [63.5, -58.0], "expected": 63.5}, {"input": [63.5, -57.5], "expected": 63.5}, {"input": [63.5, -57.0], "expected": 63.5}, {"input": [63.5, -56.5], "expected": 63.5}, {"input": [63.5, -56.0], "expected": 63.5}, {"input": [63.5, -55.5], "expected": 63.5}, {"input": [63.5, -55.0], "expected": 63.5}, {"input": [63.5, -54.5], "expected": 63.5}, {"input": [63.5, -54.0], "expected": 63.5}, {"input": [63.5, -53.5], "expected": 63.5}, {"input": [63.5, -53.0], "expected": 63.5}, {"input": [63.5, -52.5], "expected": 63.5}, {"input": [63.5, -52.0], "expected": 63.5}, {"input": [63.5, -51.5], "expected": 63.5}, {"input": [63.5, -51.0], "expected": 63.5}, {"input": [63.5, -50.5], "expected": 63.5}, {"input": [63.5, -50.0], "expected": 63.5}, {"input": [63.5, -49.5], "expected": 63.5}, {"input": [63.5, -49.0], "expected": 63.5}, {"input": [63.5, -48.5], "expected": 63.5}, {"input": [63.5, -48.0], "expected": 63.5}, {"input": [63.5, -47.5], "expected": 63.5}, {"input": [63.5, -47.0], "expected": 63.5}, {"input": [63.5, -46.5], "expected": 63.5}, {"input": [63.5, -46.0], "expected": 63.5}, {"input": [63.5, -45.5], "expected": 63.5}, {"input": [63.5, -45.0], "expected": 63.5}, {"input": [63.5, -44.5], "expected": 63.5}, {"input": [63.5, -44.0], "expected": 63.5}, {"input": [63.5, -43.5], "expected": 63.5}, {"input": [63.5, -43.0], "expected": 63.5}, {"input": [63.5, -42.5], "expected": 63.5}, {"input": [63.5, -42.0], "expected": 63.5}, {"input": [63.5, -41.5], "expected": 63.5}, {"input": [63.5, -41.0], "expected": 63.5}, {"input": [63.5, -40.5], "expected": 63.5}, {"input": [63.5, -40.0], "expected": 63.5}, {"input": [63.5, -39.5], "expected": 63.5}, {"input": [63.5, -39.0], "expected": 63.5}, {"input": [63.5, -38.5], "expected": 63.5}, {"input": [63.5, -38.0], "expected": 63.5}, {"input": [63.5, -37.5], "expected": 63.5}, {"input": [63.5, -37.0], "expected": 63.5}, {"input": [63.5, -36.5], "expected": 63.5}, {"input": [63.5, -36.0], "expected": 63.5}, {"input": [63.5, -35.5], "expected": 63.5}, {"input": [63.5, -35.0], "expected": 63.5}, {"input": [63.5, -34.5], "expected": 63.5}, {"input": [63.5, -34.0], "expected": 63.5}, {"input": [63.5, -33.5], "expected": 63.5}, {"input": [63.5, -33.0], "expected": 63.5}, {"input": [63.5, -32.5], "expected": 63.5}, {"input": [63.5, -32.0], "expected": 63.5}, {"input": [63.5, -31.5], "expected": 63.5}, {"input": [63.5, -31.0], "expected": 63.5}, {"input": [63.5, -30.5], "expected": 63.5}, {"input": [63.5, -30.0], "expected": 63.5}, {"input": [63.5, -29.5], "expected": 63.5}, {"input": [63.5, -29.0], "expected": 63.5}, {"input": [63.5, -28.5], "expected": 63.5}, {"input": [63.5, -28.0], "expected": 63.5}, {"input": [63.5, -27.5], "expected": 63.5}, {"input": [63.5, -27.0], "expected": 63.5}, {"input": [63.5, -26.5], "expected": 63.5}, {"input": [63.5, -26.0], "expected": 63.5}, {"input": [63.5, -25.5], "expected": 63.5}, {"input": [63.5, -25.0], "expected": 63.5}, {"input": [63.5, -24.5], "expected": 63.5}, {"input": [63.5, -24.0], "expected": 63.5}, {"input": [63.5, -23.5], "expected": 63.5}, {"input": [63.5, -23.0], "expected": 63.5}, {"input": [63.5, -22.5], "expected": 63.5}, {"input": [63.5, -22.0], "expected": 63.5}, {"input": [63.5, -21.5], "expected": 63.5}, {"input": [63.5, -21.0], "expected": 63.5}, {"input": [63.5, -20.5], "expected": 63.5}, {"input": [63.5, -20.0], "expected": 63.5}, {"input": [63.5, -19.5], "expected": 63.5}, {"input": [63.5, -19.0], "expected": 63.5}, {"input": [63.5, -18.5], "expected": 63.5}, {"input": [63.5, -18.0], "expected": 63.5}, {"input": [63.5, -17.5], "expected": 63.5}, {"input": [63.5, -17.0], "expected": 63.5}, {"input": [63.5, -16.5], "expected": 63.5}, {"input": [63.5, -16.0], "expected": 63.5}, {"input": [63.5, -15.5], "expected": 63.5}, {"input": [63.5, -15.0], "expected": 63.5}, {"input": [63.5, -14.5], "expected": 63.5}, {"input": [63.5, -14.0], "expected": 63.5}, {"input": [63.5, -13.5], "expected": 63.5}, {"input": [63.5, -13.0], "expected": 63.5}, {"input": [63.5, -12.5], "expected": 63.5}, {"input": [63.5, -12.0], "expected": 63.5}, {"input": [63.5, -11.5], "expected": 63.5}, {"input": [63.5, -11.0], "expected": 63.5}, {"input": [63.5, -10.5], "expected": 63.5}, {"input": [63.5, -10.0], "expected": 63.5}, {"input": [63.5, -9.5], "expected": 63.5}, {"input": [63.5, -9.0], "expected": 63.5}, {"input": [63.5, -8.5], "expected": 63.5}, {"input": [63.5, -8.0], "expected": 63.5}, {"input": [63.5, -7.5], "expected": 63.5}, {"input": [63.5, -7.0], "expected": 63.5}, {"input": [63.5, -6.5], "expected": 63.5}, {"input": [63.5, -6.0], "expected": 63.5}, {"input": [63.5, -5.5], "expected": 63.5}, {"input": [63.5, -5.0], "expected": 63.5}, {"input": [63.5, -4.5], "expected": 63.5}, {"input": [63.5, -4.0], "expected": 63.5}, {"input": [63.5, -3.5], "expected": 63.5}, {"input": [63.5, -3.0], "expected": 63.5}, {"input": [63.5, -2.5], "expected": 63.5}, {"input": [63.5, -2.0], "expected": 63.5}, {"input": [63.5, -1.5], "expected": 63.5}, {"input": [63.5, -1.0], "expected": 63.5}, {"input": [63.5, -0.5], "expected": 63.5}, {"input": [63.5, 0.0], "expected": 63.5}, {"input": [63.5, 0.5], "expected": 63.5}, {"input": [63.5, 1.0], "expected": 63.5}, {"input": [63.5, 1.5], "expected": 63.5}, {"input": [63.5, 2.0], "expected": 63.5}, {"input": [63.5, 2.5], "expected": 63.5}, {"input": [63.5, 3.0], "expected": 63.5}, {"input": [63.5, 3.5], "expected": 63.5}, {"input": [63.5, 4.0], "expected": 63.5}, {"input": [63.5, 4.5], "expected": 63.5}, {"input": [63.5, 5.0], "expected": 63.5}, {"input": [63.5, 5.5], "expected": 63.5}, {"input": [63.5, 6.0], "expected": 63.5}, {"input": [63.5, 6.5], "expected": 63.5}, {"input": [63.5, 7.0], "expected": 63.5}, {"input": [63.5, 7.5], "expected": 63.5}, {"input": [63.5, 8.0], "expected": 63.5}, {"input": [63.5, 8.5], "expected": 63.5}, {"input": [63.5, 9.0], "expected": 63.5}, {"input": [63.5, 9.5], "expected": 63.5}, {"input": [63.5, 10.0], "expected": 63.5}, {"input": [63.5, 10.5], "expected": 63.5}, {"input": [63.5, 11.0], "expected": 63.5}, {"input": [63.5, 11.5], "expected": 63.5}, {"input": [63.5, 12.0], "expected": 63.5}, {"input": [63.5, 12.5], "expected": 63.5}, {"input": [63.5, 13.0], "expected": 63.5}, {"input": [63.5, 13.5], "expected": 63.5}, {"input": [63.5, 14.0], "expected": 63.5}, {"input": [63.5, 14.5], "expected": 63.5}, {"input": [63.5, 15.0], "expected": 63.5}, {"input": [63.5, 15.5], "expected": 63.5}, {"input": [63.5, 16.0], "expected": 63.5}, {"input": [63.5, 16.5], "expected": 63.5}, {"input": [63.5, 17.0], "expected": 63.5}, {"input": [63.5, 17.5], "expected": 63.5}, {"input": [63.5, 18.0], "expected": 63.5}, {"input": [63.5, 18.5], "expected": 63.5}, {"input": [63.5, 19.0], "expected": 63.5}, {"input": [63.5, 19.5], "expected": 63.5}, {"input": [63.5, 20.0], "expected": 63.5}, {"input": [63.5, 20.5], "expected": 63.5}, {"input": [63.5, 21.0], "expected": 63.5}, {"input": [63.5, 21.5], "expected": 63.5}, {"input": [63.5, 22.0], "expected": 63.5}, {"input": [63.5, 22.5], "expected": 63.5}, {"input": [63.5, 23.0], "expected": 63.5}, {"input": [63.5, 23.5], "expected": 63.5}, {"input": [63.5, 24.0], "expected": 63.5}, {"input": [63.5, 24.5], "expected": 63.5}, {"input": [63.5, 25.0], "expected": 63.5}, {"input": [63.5, 25.5], "expected": 63.5}, {"input": [63.5, 26.0], "expected": 63.5}, {"input": [63.5, 26.5], "expected": 63.5}, {"input": [63.5, 27.0], "expected": 63.5}, {"input": [63.5, 27.5], "expected": 63.5}, {"input": [63.5, 28.0], "expected": 63.5}, {"input": [63.5, 28.5], "expected": 63.5}, {"input": [63.5, 29.0], "expected": 63.5}, {"input": [63.5, 29.5], "expected": 63.5}, {"input": [63.5, 30.0], "expected": 63.5}, {"input": [63.5, 30.5], "expected": 63.50000000000001}, {"input": [63.5, 31.0], "expected": 63.50000000000001}, {"input": [63.5, 31.5], "expected": 63.500000000000014}, {"input": [63.5, 32.0], "expected": 63.50000000000002}, {"input": [63.5, 32.5], "expected": 63.500000000000036}, {"input": [63.5, 33.0], "expected": 63.50000000000006}, {"input": [63.5, 33.5], "expected": 63.50000000000009}, {"input": [63.5, 34.0], "expected": 63.500000000000156}, {"input": [63.5, 34.5], "expected": 63.500000000000256}, {"input": [63.5, 35.0], "expected": 63.50000000000042}, {"input": [63.5, 35.5], "expected": 63.50000000000069}, {"input": [63.5, 36.0], "expected": 63.50000000000114}, {"input": [63.5, 36.5], "expected": 63.50000000000188}, {"input": [63.5, 37.0], "expected": 63.5000000000031}, {"input": [63.5, 37.5], "expected": 63.50000000000511}, {"input": [63.5, 38.0], "expected": 63.50000000000842}, {"input": [63.5, 38.5], "expected": 63.50000000001389}, {"input": [63.5, 39.0], "expected": 63.5000000000229}, {"input": [63.5, 39.5], "expected": 63.50000000003775}, {"input": [63.5, 40.0], "expected": 63.50000000006224}, {"input": [63.5, 40.5], "expected": 63.50000000010262}, {"input": [63.5, 41.0], "expected": 63.50000000016919}, {"input": [63.5, 41.5], "expected": 63.500000000278945}, {"input": [63.5, 42.0], "expected": 63.500000000459906}, {"input": [63.5, 42.5], "expected": 63.500000000758256}, {"input": [63.5, 43.0], "expected": 63.50000000125015}, {"input": [63.5, 43.5], "expected": 63.50000000206116}, {"input": [63.5, 44.0], "expected": 63.50000000339827}, {"input": [63.5, 44.5], "expected": 63.50000000560279}, {"input": [63.5, 45.0], "expected": 63.500000009237446}, {"input": [63.5, 45.5], "expected": 63.50000001522998}, {"input": [63.5, 46.0], "expected": 63.50000002510999}, {"input": [63.5, 46.5], "expected": 63.500000041399375}, {"input": [63.5, 47.0], "expected": 63.50000006825603}, {"input": [63.5, 47.5], "expected": 63.50000011253517}, {"input": [63.5, 48.0], "expected": 63.50000018553912}, {"input": [63.5, 48.5], "expected": 63.500000305902276}, {"input": [63.5, 49.0], "expected": 63.50000050434753}, {"input": [63.5, 49.5], "expected": 63.500000831528375}, {"input": [63.5, 50.0], "expected": 63.500001370958145}, {"input": [63.5, 50.5], "expected": 63.50000226032685}, {"input": [63.5, 51.0], "expected": 63.50000372664623}, {"input": [63.5, 51.5], "expected": 63.50000614419348}, {"input": [63.5, 52.0], "expected": 63.50001013004229}, {"input": [63.5, 52.5], "expected": 63.50001670156132}, {"input": [63.5, 53.0], "expected": 63.50002753607023}, {"input": [63.5, 53.5], "expected": 63.50004539889922}, {"input": [63.5, 54.0], "expected": 63.50007484902863}, {"input": [63.5, 54.5], "expected": 63.50012340218972}, {"input": [63.5, 55.0], "expected": 63.50020344767213}, {"input": [63.5, 55.5], "expected": 63.5003354063729}, {"input": [63.5, 56.0], "expected": 63.50055293147536}, {"input": [63.5, 56.5], "expected": 63.50091146645377}, {"input": [63.5, 57.0], "expected": 63.50150231015976}, {"input": [63.5, 57.5], "expected": 63.50247568513773}, {"input": [63.5, 58.0], "expected": 63.50407844327057}, {"input": [63.5, 58.5], "expected": 63.50671534848912}, {"input": [63.5, 59.0], "expected": 63.5110477448486}, {"input": [63.5, 59.5], "expected": 63.51814992791781}, {"input": [63.5, 60.0], "expected": 63.52975041827262}, {"input": [63.5, 60.5], "expected": 63.548587351573744}, {"input": [63.5, 61.0], "expected": 63.57888973429255}, {"input": [63.5, 61.5], "expected": 63.62692801104297}, {"input": [63.5, 62.0], "expected": 63.70141327798275}, {"input": [63.5, 62.5], "expected": 63.81326168751822}, {"input": [63.5, 63.0], "expected": 63.97407698418011}, {"input": [63.5, 63.5], "expected": 64.19314718055995}, {"input": [63.5, 64.0], "expected": 64.4740769841801}, {"input": [63.5, 64.5], "expected": 64.81326168751822}, {"input": [63.5, 65.0], "expected": 65.20141327798275}, {"input": [63.5, 65.5], "expected": 65.62692801104298}, {"input": [63.5, 66.0], "expected": 66.07888973429255}, {"input": [63.5, 66.5], "expected": 66.54858735157374}, {"input": [63.5, 67.0], "expected": 67.02975041827263}, {"input": [63.5, 67.5], "expected": 67.5181499279178}, {"input": [63.5, 68.0], "expected": 68.0110477448486}, {"input": [63.5, 68.5], "expected": 68.50671534848912}, {"input": [63.5, 69.0], "expected": 69.00407844327057}, {"input": [63.5, 69.5], "expected": 69.50247568513772}, {"input": [63.5, 70.0], "expected": 70.00150231015975}, {"input": [63.5, 70.5], "expected": 70.50091146645377}, {"input": [63.5, 71.0], "expected": 71.00055293147535}, {"input": [63.5, 71.5], "expected": 71.5003354063729}, {"input": [63.5, 72.0], "expected": 72.00020344767213}, {"input": [63.5, 72.5], "expected": 72.50012340218973}, {"input": [63.5, 73.0], "expected": 73.00007484902864}, {"input": [63.5, 73.5], "expected": 73.50004539889922}, {"input": [63.5, 74.0], "expected": 74.00002753607023}, {"input": [63.5, 74.5], "expected": 74.50001670156132}, {"input": [63.5, 75.0], "expected": 75.00001013004228}, {"input": [63.5, 75.5], "expected": 75.50000614419348}, {"input": [63.5, 76.0], "expected": 76.00000372664623}, {"input": [63.5, 76.5], "expected": 76.50000226032685}, {"input": [63.5, 77.0], "expected": 77.00000137095815}, {"input": [63.5, 77.5], "expected": 77.50000083152837}, {"input": [63.5, 78.0], "expected": 78.00000050434754}, {"input": [63.5, 78.5], "expected": 78.50000030590228}, {"input": [63.5, 79.0], "expected": 79.00000018553912}, {"input": [63.5, 79.5], "expected": 79.50000011253516}, {"input": [63.5, 80.0], "expected": 80.00000006825603}, {"input": [63.5, 80.5], "expected": 80.50000004139937}, {"input": [63.5, 81.0], "expected": 81.00000002511}, {"input": [63.5, 81.5], "expected": 81.50000001522999}, {"input": [63.5, 82.0], "expected": 82.00000000923745}, {"input": [63.5, 82.5], "expected": 82.5000000056028}, {"input": [63.5, 83.0], "expected": 83.00000000339827}, {"input": [63.5, 83.5], "expected": 83.50000000206116}, {"input": [63.5, 84.0], "expected": 84.00000000125016}, {"input": [63.5, 84.5], "expected": 84.50000000075826}, {"input": [63.5, 85.0], "expected": 85.0000000004599}, {"input": [63.5, 85.5], "expected": 85.50000000027894}, {"input": [63.5, 86.0], "expected": 86.0000000001692}, {"input": [63.5, 86.5], "expected": 86.50000000010262}, {"input": [63.5, 87.0], "expected": 87.00000000006224}, {"input": [63.5, 87.5], "expected": 87.50000000003776}, {"input": [63.5, 88.0], "expected": 88.0000000000229}, {"input": [63.5, 88.5], "expected": 88.50000000001388}, {"input": [63.5, 89.0], "expected": 89.00000000000843}, {"input": [63.5, 89.5], "expected": 89.50000000000512}, {"input": [63.5, 90.0], "expected": 90.0000000000031}, {"input": [63.5, 90.5], "expected": 90.50000000000188}, {"input": [63.5, 91.0], "expected": 91.00000000000114}, {"input": [63.5, 91.5], "expected": 91.5000000000007}, {"input": [63.5, 92.0], "expected": 92.00000000000043}, {"input": [63.5, 92.5], "expected": 92.50000000000026}, {"input": [63.5, 93.0], "expected": 93.00000000000016}, {"input": [63.5, 93.5], "expected": 93.5000000000001}, {"input": [63.5, 94.0], "expected": 94.00000000000006}, {"input": [63.5, 94.5], "expected": 94.50000000000003}, {"input": [63.5, 95.0], "expected": 95.00000000000001}, {"input": [63.5, 95.5], "expected": 95.50000000000001}, {"input": [63.5, 96.0], "expected": 96.00000000000001}, {"input": [63.5, 96.5], "expected": 96.5}, {"input": [63.5, 97.0], "expected": 97.0}, {"input": [63.5, 97.5], "expected": 97.5}, {"input": [63.5, 98.0], "expected": 98.0}, {"input": [63.5, 98.5], "expected": 98.5}, {"input": [63.5, 99.0], "expected": 99.0}, {"input": [63.5, 99.5], "expected": 99.5}, {"input": [64.0, -100.0], "expected": 64.0}, {"input": [64.0, -99.5], "expected": 64.0}, {"input": [64.0, -99.0], "expected": 64.0}, {"input": [64.0, -98.5], "expected": 64.0}, {"input": [64.0, -98.0], "expected": 64.0}, {"input": [64.0, -97.5], "expected": 64.0}, {"input": [64.0, -97.0], "expected": 64.0}, {"input": [64.0, -96.5], "expected": 64.0}, {"input": [64.0, -96.0], "expected": 64.0}, {"input": [64.0, -95.5], "expected": 64.0}, {"input": [64.0, -95.0], "expected": 64.0}, {"input": [64.0, -94.5], "expected": 64.0}, {"input": [64.0, -94.0], "expected": 64.0}, {"input": [64.0, -93.5], "expected": 64.0}, {"input": [64.0, -93.0], "expected": 64.0}, {"input": [64.0, -92.5], "expected": 64.0}, {"input": [64.0, -92.0], "expected": 64.0}, {"input": [64.0, -91.5], "expected": 64.0}, {"input": [64.0, -91.0], "expected": 64.0}, {"input": [64.0, -90.5], "expected": 64.0}, {"input": [64.0, -90.0], "expected": 64.0}, {"input": [64.0, -89.5], "expected": 64.0}, {"input": [64.0, -89.0], "expected": 64.0}, {"input": [64.0, -88.5], "expected": 64.0}, {"input": [64.0, -88.0], "expected": 64.0}, {"input": [64.0, -87.5], "expected": 64.0}, {"input": [64.0, -87.0], "expected": 64.0}, {"input": [64.0, -86.5], "expected": 64.0}, {"input": [64.0, -86.0], "expected": 64.0}, {"input": [64.0, -85.5], "expected": 64.0}, {"input": [64.0, -85.0], "expected": 64.0}, {"input": [64.0, -84.5], "expected": 64.0}, {"input": [64.0, -84.0], "expected": 64.0}, {"input": [64.0, -83.5], "expected": 64.0}, {"input": [64.0, -83.0], "expected": 64.0}, {"input": [64.0, -82.5], "expected": 64.0}, {"input": [64.0, -82.0], "expected": 64.0}, {"input": [64.0, -81.5], "expected": 64.0}, {"input": [64.0, -81.0], "expected": 64.0}, {"input": [64.0, -80.5], "expected": 64.0}, {"input": [64.0, -80.0], "expected": 64.0}, {"input": [64.0, -79.5], "expected": 64.0}, {"input": [64.0, -79.0], "expected": 64.0}, {"input": [64.0, -78.5], "expected": 64.0}, {"input": [64.0, -78.0], "expected": 64.0}, {"input": [64.0, -77.5], "expected": 64.0}, {"input": [64.0, -77.0], "expected": 64.0}, {"input": [64.0, -76.5], "expected": 64.0}, {"input": [64.0, -76.0], "expected": 64.0}, {"input": [64.0, -75.5], "expected": 64.0}, {"input": [64.0, -75.0], "expected": 64.0}, {"input": [64.0, -74.5], "expected": 64.0}, {"input": [64.0, -74.0], "expected": 64.0}, {"input": [64.0, -73.5], "expected": 64.0}, {"input": [64.0, -73.0], "expected": 64.0}, {"input": [64.0, -72.5], "expected": 64.0}, {"input": [64.0, -72.0], "expected": 64.0}, {"input": [64.0, -71.5], "expected": 64.0}, {"input": [64.0, -71.0], "expected": 64.0}, {"input": [64.0, -70.5], "expected": 64.0}, {"input": [64.0, -70.0], "expected": 64.0}, {"input": [64.0, -69.5], "expected": 64.0}, {"input": [64.0, -69.0], "expected": 64.0}, {"input": [64.0, -68.5], "expected": 64.0}, {"input": [64.0, -68.0], "expected": 64.0}, {"input": [64.0, -67.5], "expected": 64.0}, {"input": [64.0, -67.0], "expected": 64.0}, {"input": [64.0, -66.5], "expected": 64.0}, {"input": [64.0, -66.0], "expected": 64.0}, {"input": [64.0, -65.5], "expected": 64.0}, {"input": [64.0, -65.0], "expected": 64.0}, {"input": [64.0, -64.5], "expected": 64.0}, {"input": [64.0, -64.0], "expected": 64.0}, {"input": [64.0, -63.5], "expected": 64.0}, {"input": [64.0, -63.0], "expected": 64.0}, {"input": [64.0, -62.5], "expected": 64.0}, {"input": [64.0, -62.0], "expected": 64.0}, {"input": [64.0, -61.5], "expected": 64.0}, {"input": [64.0, -61.0], "expected": 64.0}, {"input": [64.0, -60.5], "expected": 64.0}, {"input": [64.0, -60.0], "expected": 64.0}, {"input": [64.0, -59.5], "expected": 64.0}, {"input": [64.0, -59.0], "expected": 64.0}, {"input": [64.0, -58.5], "expected": 64.0}, {"input": [64.0, -58.0], "expected": 64.0}, {"input": [64.0, -57.5], "expected": 64.0}, {"input": [64.0, -57.0], "expected": 64.0}, {"input": [64.0, -56.5], "expected": 64.0}, {"input": [64.0, -56.0], "expected": 64.0}, {"input": [64.0, -55.5], "expected": 64.0}, {"input": [64.0, -55.0], "expected": 64.0}, {"input": [64.0, -54.5], "expected": 64.0}, {"input": [64.0, -54.0], "expected": 64.0}, {"input": [64.0, -53.5], "expected": 64.0}, {"input": [64.0, -53.0], "expected": 64.0}, {"input": [64.0, -52.5], "expected": 64.0}, {"input": [64.0, -52.0], "expected": 64.0}, {"input": [64.0, -51.5], "expected": 64.0}, {"input": [64.0, -51.0], "expected": 64.0}, {"input": [64.0, -50.5], "expected": 64.0}, {"input": [64.0, -50.0], "expected": 64.0}, {"input": [64.0, -49.5], "expected": 64.0}, {"input": [64.0, -49.0], "expected": 64.0}, {"input": [64.0, -48.5], "expected": 64.0}, {"input": [64.0, -48.0], "expected": 64.0}, {"input": [64.0, -47.5], "expected": 64.0}, {"input": [64.0, -47.0], "expected": 64.0}, {"input": [64.0, -46.5], "expected": 64.0}, {"input": [64.0, -46.0], "expected": 64.0}, {"input": [64.0, -45.5], "expected": 64.0}, {"input": [64.0, -45.0], "expected": 64.0}, {"input": [64.0, -44.5], "expected": 64.0}, {"input": [64.0, -44.0], "expected": 64.0}, {"input": [64.0, -43.5], "expected": 64.0}, {"input": [64.0, -43.0], "expected": 64.0}, {"input": [64.0, -42.5], "expected": 64.0}, {"input": [64.0, -42.0], "expected": 64.0}, {"input": [64.0, -41.5], "expected": 64.0}, {"input": [64.0, -41.0], "expected": 64.0}, {"input": [64.0, -40.5], "expected": 64.0}, {"input": [64.0, -40.0], "expected": 64.0}, {"input": [64.0, -39.5], "expected": 64.0}, {"input": [64.0, -39.0], "expected": 64.0}, {"input": [64.0, -38.5], "expected": 64.0}, {"input": [64.0, -38.0], "expected": 64.0}, {"input": [64.0, -37.5], "expected": 64.0}, {"input": [64.0, -37.0], "expected": 64.0}, {"input": [64.0, -36.5], "expected": 64.0}, {"input": [64.0, -36.0], "expected": 64.0}, {"input": [64.0, -35.5], "expected": 64.0}, {"input": [64.0, -35.0], "expected": 64.0}, {"input": [64.0, -34.5], "expected": 64.0}, {"input": [64.0, -34.0], "expected": 64.0}, {"input": [64.0, -33.5], "expected": 64.0}, {"input": [64.0, -33.0], "expected": 64.0}, {"input": [64.0, -32.5], "expected": 64.0}, {"input": [64.0, -32.0], "expected": 64.0}, {"input": [64.0, -31.5], "expected": 64.0}, {"input": [64.0, -31.0], "expected": 64.0}, {"input": [64.0, -30.5], "expected": 64.0}, {"input": [64.0, -30.0], "expected": 64.0}, {"input": [64.0, -29.5], "expected": 64.0}, {"input": [64.0, -29.0], "expected": 64.0}, {"input": [64.0, -28.5], "expected": 64.0}, {"input": [64.0, -28.0], "expected": 64.0}, {"input": [64.0, -27.5], "expected": 64.0}, {"input": [64.0, -27.0], "expected": 64.0}, {"input": [64.0, -26.5], "expected": 64.0}, {"input": [64.0, -26.0], "expected": 64.0}, {"input": [64.0, -25.5], "expected": 64.0}, {"input": [64.0, -25.0], "expected": 64.0}, {"input": [64.0, -24.5], "expected": 64.0}, {"input": [64.0, -24.0], "expected": 64.0}, {"input": [64.0, -23.5], "expected": 64.0}, {"input": [64.0, -23.0], "expected": 64.0}, {"input": [64.0, -22.5], "expected": 64.0}, {"input": [64.0, -22.0], "expected": 64.0}, {"input": [64.0, -21.5], "expected": 64.0}, {"input": [64.0, -21.0], "expected": 64.0}, {"input": [64.0, -20.5], "expected": 64.0}, {"input": [64.0, -20.0], "expected": 64.0}, {"input": [64.0, -19.5], "expected": 64.0}, {"input": [64.0, -19.0], "expected": 64.0}, {"input": [64.0, -18.5], "expected": 64.0}, {"input": [64.0, -18.0], "expected": 64.0}, {"input": [64.0, -17.5], "expected": 64.0}, {"input": [64.0, -17.0], "expected": 64.0}, {"input": [64.0, -16.5], "expected": 64.0}, {"input": [64.0, -16.0], "expected": 64.0}, {"input": [64.0, -15.5], "expected": 64.0}, {"input": [64.0, -15.0], "expected": 64.0}, {"input": [64.0, -14.5], "expected": 64.0}, {"input": [64.0, -14.0], "expected": 64.0}, {"input": [64.0, -13.5], "expected": 64.0}, {"input": [64.0, -13.0], "expected": 64.0}, {"input": [64.0, -12.5], "expected": 64.0}, {"input": [64.0, -12.0], "expected": 64.0}, {"input": [64.0, -11.5], "expected": 64.0}, {"input": [64.0, -11.0], "expected": 64.0}, {"input": [64.0, -10.5], "expected": 64.0}, {"input": [64.0, -10.0], "expected": 64.0}, {"input": [64.0, -9.5], "expected": 64.0}, {"input": [64.0, -9.0], "expected": 64.0}, {"input": [64.0, -8.5], "expected": 64.0}, {"input": [64.0, -8.0], "expected": 64.0}, {"input": [64.0, -7.5], "expected": 64.0}, {"input": [64.0, -7.0], "expected": 64.0}, {"input": [64.0, -6.5], "expected": 64.0}, {"input": [64.0, -6.0], "expected": 64.0}, {"input": [64.0, -5.5], "expected": 64.0}, {"input": [64.0, -5.0], "expected": 64.0}, {"input": [64.0, -4.5], "expected": 64.0}, {"input": [64.0, -4.0], "expected": 64.0}, {"input": [64.0, -3.5], "expected": 64.0}, {"input": [64.0, -3.0], "expected": 64.0}, {"input": [64.0, -2.5], "expected": 64.0}, {"input": [64.0, -2.0], "expected": 64.0}, {"input": [64.0, -1.5], "expected": 64.0}, {"input": [64.0, -1.0], "expected": 64.0}, {"input": [64.0, -0.5], "expected": 64.0}, {"input": [64.0, 0.0], "expected": 64.0}, {"input": [64.0, 0.5], "expected": 64.0}, {"input": [64.0, 1.0], "expected": 64.0}, {"input": [64.0, 1.5], "expected": 64.0}, {"input": [64.0, 2.0], "expected": 64.0}, {"input": [64.0, 2.5], "expected": 64.0}, {"input": [64.0, 3.0], "expected": 64.0}, {"input": [64.0, 3.5], "expected": 64.0}, {"input": [64.0, 4.0], "expected": 64.0}, {"input": [64.0, 4.5], "expected": 64.0}, {"input": [64.0, 5.0], "expected": 64.0}, {"input": [64.0, 5.5], "expected": 64.0}, {"input": [64.0, 6.0], "expected": 64.0}, {"input": [64.0, 6.5], "expected": 64.0}, {"input": [64.0, 7.0], "expected": 64.0}, {"input": [64.0, 7.5], "expected": 64.0}, {"input": [64.0, 8.0], "expected": 64.0}, {"input": [64.0, 8.5], "expected": 64.0}, {"input": [64.0, 9.0], "expected": 64.0}, {"input": [64.0, 9.5], "expected": 64.0}, {"input": [64.0, 10.0], "expected": 64.0}, {"input": [64.0, 10.5], "expected": 64.0}, {"input": [64.0, 11.0], "expected": 64.0}, {"input": [64.0, 11.5], "expected": 64.0}, {"input": [64.0, 12.0], "expected": 64.0}, {"input": [64.0, 12.5], "expected": 64.0}, {"input": [64.0, 13.0], "expected": 64.0}, {"input": [64.0, 13.5], "expected": 64.0}, {"input": [64.0, 14.0], "expected": 64.0}, {"input": [64.0, 14.5], "expected": 64.0}, {"input": [64.0, 15.0], "expected": 64.0}, {"input": [64.0, 15.5], "expected": 64.0}, {"input": [64.0, 16.0], "expected": 64.0}, {"input": [64.0, 16.5], "expected": 64.0}, {"input": [64.0, 17.0], "expected": 64.0}, {"input": [64.0, 17.5], "expected": 64.0}, {"input": [64.0, 18.0], "expected": 64.0}, {"input": [64.0, 18.5], "expected": 64.0}, {"input": [64.0, 19.0], "expected": 64.0}, {"input": [64.0, 19.5], "expected": 64.0}, {"input": [64.0, 20.0], "expected": 64.0}, {"input": [64.0, 20.5], "expected": 64.0}, {"input": [64.0, 21.0], "expected": 64.0}, {"input": [64.0, 21.5], "expected": 64.0}, {"input": [64.0, 22.0], "expected": 64.0}, {"input": [64.0, 22.5], "expected": 64.0}, {"input": [64.0, 23.0], "expected": 64.0}, {"input": [64.0, 23.5], "expected": 64.0}, {"input": [64.0, 24.0], "expected": 64.0}, {"input": [64.0, 24.5], "expected": 64.0}, {"input": [64.0, 25.0], "expected": 64.0}, {"input": [64.0, 25.5], "expected": 64.0}, {"input": [64.0, 26.0], "expected": 64.0}, {"input": [64.0, 26.5], "expected": 64.0}, {"input": [64.0, 27.0], "expected": 64.0}, {"input": [64.0, 27.5], "expected": 64.0}, {"input": [64.0, 28.0], "expected": 64.0}, {"input": [64.0, 28.5], "expected": 64.0}, {"input": [64.0, 29.0], "expected": 64.0}, {"input": [64.0, 29.5], "expected": 64.0}, {"input": [64.0, 30.0], "expected": 64.0}, {"input": [64.0, 30.5], "expected": 64.0}, {"input": [64.0, 31.0], "expected": 64.0}, {"input": [64.0, 31.5], "expected": 64.00000000000001}, {"input": [64.0, 32.0], "expected": 64.00000000000001}, {"input": [64.0, 32.5], "expected": 64.00000000000001}, {"input": [64.0, 33.0], "expected": 64.00000000000003}, {"input": [64.0, 33.5], "expected": 64.00000000000006}, {"input": [64.0, 34.0], "expected": 64.0000000000001}, {"input": [64.0, 34.5], "expected": 64.00000000000016}, {"input": [64.0, 35.0], "expected": 64.00000000000026}, {"input": [64.0, 35.5], "expected": 64.00000000000043}, {"input": [64.0, 36.0], "expected": 64.0000000000007}, {"input": [64.0, 36.5], "expected": 64.00000000000114}, {"input": [64.0, 37.0], "expected": 64.00000000000188}, {"input": [64.0, 37.5], "expected": 64.0000000000031}, {"input": [64.0, 38.0], "expected": 64.00000000000512}, {"input": [64.0, 38.5], "expected": 64.00000000000843}, {"input": [64.0, 39.0], "expected": 64.00000000001388}, {"input": [64.0, 39.5], "expected": 64.0000000000229}, {"input": [64.0, 40.0], "expected": 64.00000000003776}, {"input": [64.0, 40.5], "expected": 64.00000000006224}, {"input": [64.0, 41.0], "expected": 64.00000000010262}, {"input": [64.0, 41.5], "expected": 64.0000000001692}, {"input": [64.0, 42.0], "expected": 64.00000000027894}, {"input": [64.0, 42.5], "expected": 64.0000000004599}, {"input": [64.0, 43.0], "expected": 64.00000000075826}, {"input": [64.0, 43.5], "expected": 64.00000000125016}, {"input": [64.0, 44.0], "expected": 64.00000000206116}, {"input": [64.0, 44.5], "expected": 64.00000000339827}, {"input": [64.0, 45.0], "expected": 64.0000000056028}, {"input": [64.0, 45.5], "expected": 64.00000000923745}, {"input": [64.0, 46.0], "expected": 64.00000001522999}, {"input": [64.0, 46.5], "expected": 64.00000002511}, {"input": [64.0, 47.0], "expected": 64.00000004139937}, {"input": [64.0, 47.5], "expected": 64.00000006825603}, {"input": [64.0, 48.0], "expected": 64.00000011253516}, {"input": [64.0, 48.5], "expected": 64.00000018553912}, {"input": [64.0, 49.0], "expected": 64.00000030590228}, {"input": [64.0, 49.5], "expected": 64.00000050434754}, {"input": [64.0, 50.0], "expected": 64.00000083152837}, {"input": [64.0, 50.5], "expected": 64.00000137095815}, {"input": [64.0, 51.0], "expected": 64.00000226032685}, {"input": [64.0, 51.5], "expected": 64.00000372664623}, {"input": [64.0, 52.0], "expected": 64.00000614419348}, {"input": [64.0, 52.5], "expected": 64.00001013004228}, {"input": [64.0, 53.0], "expected": 64.00001670156132}, {"input": [64.0, 53.5], "expected": 64.00002753607023}, {"input": [64.0, 54.0], "expected": 64.00004539889922}, {"input": [64.0, 54.5], "expected": 64.00007484902864}, {"input": [64.0, 55.0], "expected": 64.00012340218973}, {"input": [64.0, 55.5], "expected": 64.00020344767213}, {"input": [64.0, 56.0], "expected": 64.0003354063729}, {"input": [64.0, 56.5], "expected": 64.00055293147535}, {"input": [64.0, 57.0], "expected": 64.00091146645377}, {"input": [64.0, 57.5], "expected": 64.00150231015975}, {"input": [64.0, 58.0], "expected": 64.00247568513772}, {"input": [64.0, 58.5], "expected": 64.00407844327057}, {"input": [64.0, 59.0], "expected": 64.00671534848912}, {"input": [64.0, 59.5], "expected": 64.0110477448486}, {"input": [64.0, 60.0], "expected": 64.0181499279178}, {"input": [64.0, 60.5], "expected": 64.02975041827263}, {"input": [64.0, 61.0], "expected": 64.04858735157374}, {"input": [64.0, 61.5], "expected": 64.07888973429255}, {"input": [64.0, 62.0], "expected": 64.12692801104298}, {"input": [64.0, 62.5], "expected": 64.20141327798275}, {"input": [64.0, 63.0], "expected": 64.31326168751822}, {"input": [64.0, 63.5], "expected": 64.4740769841801}, {"input": [64.0, 64.0], "expected": 64.69314718055995}, {"input": [64.0, 64.5], "expected": 64.9740769841801}, {"input": [64.0, 65.0], "expected": 65.31326168751822}, {"input": [64.0, 65.5], "expected": 65.70141327798275}, {"input": [64.0, 66.0], "expected": 66.12692801104298}, {"input": [64.0, 66.5], "expected": 66.57888973429255}, {"input": [64.0, 67.0], "expected": 67.04858735157374}, {"input": [64.0, 67.5], "expected": 67.52975041827263}, {"input": [64.0, 68.0], "expected": 68.0181499279178}, {"input": [64.0, 68.5], "expected": 68.5110477448486}, {"input": [64.0, 69.0], "expected": 69.00671534848912}, {"input": [64.0, 69.5], "expected": 69.50407844327057}, {"input": [64.0, 70.0], "expected": 70.00247568513772}, {"input": [64.0, 70.5], "expected": 70.50150231015975}, {"input": [64.0, 71.0], "expected": 71.00091146645377}, {"input": [64.0, 71.5], "expected": 71.50055293147535}, {"input": [64.0, 72.0], "expected": 72.0003354063729}, {"input": [64.0, 72.5], "expected": 72.50020344767213}, {"input": [64.0, 73.0], "expected": 73.00012340218973}, {"input": [64.0, 73.5], "expected": 73.50007484902864}, {"input": [64.0, 74.0], "expected": 74.00004539889922}, {"input": [64.0, 74.5], "expected": 74.50002753607023}, {"input": [64.0, 75.0], "expected": 75.00001670156132}, {"input": [64.0, 75.5], "expected": 75.50001013004228}, {"input": [64.0, 76.0], "expected": 76.00000614419348}, {"input": [64.0, 76.5], "expected": 76.50000372664623}, {"input": [64.0, 77.0], "expected": 77.00000226032685}, {"input": [64.0, 77.5], "expected": 77.50000137095815}, {"input": [64.0, 78.0], "expected": 78.00000083152837}, {"input": [64.0, 78.5], "expected": 78.50000050434754}, {"input": [64.0, 79.0], "expected": 79.00000030590228}, {"input": [64.0, 79.5], "expected": 79.50000018553912}, {"input": [64.0, 80.0], "expected": 80.00000011253516}, {"input": [64.0, 80.5], "expected": 80.50000006825603}, {"input": [64.0, 81.0], "expected": 81.00000004139937}, {"input": [64.0, 81.5], "expected": 81.50000002511}, {"input": [64.0, 82.0], "expected": 82.00000001522999}, {"input": [64.0, 82.5], "expected": 82.50000000923745}, {"input": [64.0, 83.0], "expected": 83.0000000056028}, {"input": [64.0, 83.5], "expected": 83.50000000339827}, {"input": [64.0, 84.0], "expected": 84.00000000206116}, {"input": [64.0, 84.5], "expected": 84.50000000125016}, {"input": [64.0, 85.0], "expected": 85.00000000075826}, {"input": [64.0, 85.5], "expected": 85.5000000004599}, {"input": [64.0, 86.0], "expected": 86.00000000027894}, {"input": [64.0, 86.5], "expected": 86.5000000001692}, {"input": [64.0, 87.0], "expected": 87.00000000010262}, {"input": [64.0, 87.5], "expected": 87.50000000006224}, {"input": [64.0, 88.0], "expected": 88.00000000003776}, {"input": [64.0, 88.5], "expected": 88.5000000000229}, {"input": [64.0, 89.0], "expected": 89.00000000001388}, {"input": [64.0, 89.5], "expected": 89.50000000000843}, {"input": [64.0, 90.0], "expected": 90.00000000000512}, {"input": [64.0, 90.5], "expected": 90.5000000000031}, {"input": [64.0, 91.0], "expected": 91.00000000000188}, {"input": [64.0, 91.5], "expected": 91.50000000000114}, {"input": [64.0, 92.0], "expected": 92.0000000000007}, {"input": [64.0, 92.5], "expected": 92.50000000000043}, {"input": [64.0, 93.0], "expected": 93.00000000000026}, {"input": [64.0, 93.5], "expected": 93.50000000000016}, {"input": [64.0, 94.0], "expected": 94.0000000000001}, {"input": [64.0, 94.5], "expected": 94.50000000000006}, {"input": [64.0, 95.0], "expected": 95.00000000000003}, {"input": [64.0, 95.5], "expected": 95.50000000000001}, {"input": [64.0, 96.0], "expected": 96.00000000000001}, {"input": [64.0, 96.5], "expected": 96.50000000000001}, {"input": [64.0, 97.0], "expected": 97.0}, {"input": [64.0, 97.5], "expected": 97.5}, {"input": [64.0, 98.0], "expected": 98.0}, {"input": [64.0, 98.5], "expected": 98.5}, {"input": [64.0, 99.0], "expected": 99.0}, {"input": [64.0, 99.5], "expected": 99.5}, {"input": [64.5, -100.0], "expected": 64.5}, {"input": [64.5, -99.5], "expected": 64.5}, {"input": [64.5, -99.0], "expected": 64.5}, {"input": [64.5, -98.5], "expected": 64.5}, {"input": [64.5, -98.0], "expected": 64.5}, {"input": [64.5, -97.5], "expected": 64.5}, {"input": [64.5, -97.0], "expected": 64.5}, {"input": [64.5, -96.5], "expected": 64.5}, {"input": [64.5, -96.0], "expected": 64.5}, {"input": [64.5, -95.5], "expected": 64.5}, {"input": [64.5, -95.0], "expected": 64.5}, {"input": [64.5, -94.5], "expected": 64.5}, {"input": [64.5, -94.0], "expected": 64.5}, {"input": [64.5, -93.5], "expected": 64.5}, {"input": [64.5, -93.0], "expected": 64.5}, {"input": [64.5, -92.5], "expected": 64.5}, {"input": [64.5, -92.0], "expected": 64.5}, {"input": [64.5, -91.5], "expected": 64.5}, {"input": [64.5, -91.0], "expected": 64.5}, {"input": [64.5, -90.5], "expected": 64.5}, {"input": [64.5, -90.0], "expected": 64.5}, {"input": [64.5, -89.5], "expected": 64.5}, {"input": [64.5, -89.0], "expected": 64.5}, {"input": [64.5, -88.5], "expected": 64.5}, {"input": [64.5, -88.0], "expected": 64.5}, {"input": [64.5, -87.5], "expected": 64.5}, {"input": [64.5, -87.0], "expected": 64.5}, {"input": [64.5, -86.5], "expected": 64.5}, {"input": [64.5, -86.0], "expected": 64.5}, {"input": [64.5, -85.5], "expected": 64.5}, {"input": [64.5, -85.0], "expected": 64.5}, {"input": [64.5, -84.5], "expected": 64.5}, {"input": [64.5, -84.0], "expected": 64.5}, {"input": [64.5, -83.5], "expected": 64.5}, {"input": [64.5, -83.0], "expected": 64.5}, {"input": [64.5, -82.5], "expected": 64.5}, {"input": [64.5, -82.0], "expected": 64.5}, {"input": [64.5, -81.5], "expected": 64.5}, {"input": [64.5, -81.0], "expected": 64.5}, {"input": [64.5, -80.5], "expected": 64.5}, {"input": [64.5, -80.0], "expected": 64.5}, {"input": [64.5, -79.5], "expected": 64.5}, {"input": [64.5, -79.0], "expected": 64.5}, {"input": [64.5, -78.5], "expected": 64.5}, {"input": [64.5, -78.0], "expected": 64.5}, {"input": [64.5, -77.5], "expected": 64.5}, {"input": [64.5, -77.0], "expected": 64.5}, {"input": [64.5, -76.5], "expected": 64.5}, {"input": [64.5, -76.0], "expected": 64.5}, {"input": [64.5, -75.5], "expected": 64.5}, {"input": [64.5, -75.0], "expected": 64.5}, {"input": [64.5, -74.5], "expected": 64.5}, {"input": [64.5, -74.0], "expected": 64.5}, {"input": [64.5, -73.5], "expected": 64.5}, {"input": [64.5, -73.0], "expected": 64.5}, {"input": [64.5, -72.5], "expected": 64.5}, {"input": [64.5, -72.0], "expected": 64.5}, {"input": [64.5, -71.5], "expected": 64.5}, {"input": [64.5, -71.0], "expected": 64.5}, {"input": [64.5, -70.5], "expected": 64.5}, {"input": [64.5, -70.0], "expected": 64.5}, {"input": [64.5, -69.5], "expected": 64.5}, {"input": [64.5, -69.0], "expected": 64.5}, {"input": [64.5, -68.5], "expected": 64.5}, {"input": [64.5, -68.0], "expected": 64.5}, {"input": [64.5, -67.5], "expected": 64.5}, {"input": [64.5, -67.0], "expected": 64.5}, {"input": [64.5, -66.5], "expected": 64.5}, {"input": [64.5, -66.0], "expected": 64.5}, {"input": [64.5, -65.5], "expected": 64.5}, {"input": [64.5, -65.0], "expected": 64.5}, {"input": [64.5, -64.5], "expected": 64.5}, {"input": [64.5, -64.0], "expected": 64.5}, {"input": [64.5, -63.5], "expected": 64.5}, {"input": [64.5, -63.0], "expected": 64.5}, {"input": [64.5, -62.5], "expected": 64.5}, {"input": [64.5, -62.0], "expected": 64.5}, {"input": [64.5, -61.5], "expected": 64.5}, {"input": [64.5, -61.0], "expected": 64.5}, {"input": [64.5, -60.5], "expected": 64.5}, {"input": [64.5, -60.0], "expected": 64.5}, {"input": [64.5, -59.5], "expected": 64.5}, {"input": [64.5, -59.0], "expected": 64.5}, {"input": [64.5, -58.5], "expected": 64.5}, {"input": [64.5, -58.0], "expected": 64.5}, {"input": [64.5, -57.5], "expected": 64.5}, {"input": [64.5, -57.0], "expected": 64.5}, {"input": [64.5, -56.5], "expected": 64.5}, {"input": [64.5, -56.0], "expected": 64.5}, {"input": [64.5, -55.5], "expected": 64.5}, {"input": [64.5, -55.0], "expected": 64.5}, {"input": [64.5, -54.5], "expected": 64.5}, {"input": [64.5, -54.0], "expected": 64.5}, {"input": [64.5, -53.5], "expected": 64.5}, {"input": [64.5, -53.0], "expected": 64.5}, {"input": [64.5, -52.5], "expected": 64.5}, {"input": [64.5, -52.0], "expected": 64.5}, {"input": [64.5, -51.5], "expected": 64.5}, {"input": [64.5, -51.0], "expected": 64.5}, {"input": [64.5, -50.5], "expected": 64.5}, {"input": [64.5, -50.0], "expected": 64.5}, {"input": [64.5, -49.5], "expected": 64.5}, {"input": [64.5, -49.0], "expected": 64.5}, {"input": [64.5, -48.5], "expected": 64.5}, {"input": [64.5, -48.0], "expected": 64.5}, {"input": [64.5, -47.5], "expected": 64.5}, {"input": [64.5, -47.0], "expected": 64.5}, {"input": [64.5, -46.5], "expected": 64.5}, {"input": [64.5, -46.0], "expected": 64.5}, {"input": [64.5, -45.5], "expected": 64.5}, {"input": [64.5, -45.0], "expected": 64.5}, {"input": [64.5, -44.5], "expected": 64.5}, {"input": [64.5, -44.0], "expected": 64.5}, {"input": [64.5, -43.5], "expected": 64.5}, {"input": [64.5, -43.0], "expected": 64.5}, {"input": [64.5, -42.5], "expected": 64.5}, {"input": [64.5, -42.0], "expected": 64.5}, {"input": [64.5, -41.5], "expected": 64.5}, {"input": [64.5, -41.0], "expected": 64.5}, {"input": [64.5, -40.5], "expected": 64.5}, {"input": [64.5, -40.0], "expected": 64.5}, {"input": [64.5, -39.5], "expected": 64.5}, {"input": [64.5, -39.0], "expected": 64.5}, {"input": [64.5, -38.5], "expected": 64.5}, {"input": [64.5, -38.0], "expected": 64.5}, {"input": [64.5, -37.5], "expected": 64.5}, {"input": [64.5, -37.0], "expected": 64.5}, {"input": [64.5, -36.5], "expected": 64.5}, {"input": [64.5, -36.0], "expected": 64.5}, {"input": [64.5, -35.5], "expected": 64.5}, {"input": [64.5, -35.0], "expected": 64.5}, {"input": [64.5, -34.5], "expected": 64.5}, {"input": [64.5, -34.0], "expected": 64.5}, {"input": [64.5, -33.5], "expected": 64.5}, {"input": [64.5, -33.0], "expected": 64.5}, {"input": [64.5, -32.5], "expected": 64.5}, {"input": [64.5, -32.0], "expected": 64.5}, {"input": [64.5, -31.5], "expected": 64.5}, {"input": [64.5, -31.0], "expected": 64.5}, {"input": [64.5, -30.5], "expected": 64.5}, {"input": [64.5, -30.0], "expected": 64.5}, {"input": [64.5, -29.5], "expected": 64.5}, {"input": [64.5, -29.0], "expected": 64.5}, {"input": [64.5, -28.5], "expected": 64.5}, {"input": [64.5, -28.0], "expected": 64.5}, {"input": [64.5, -27.5], "expected": 64.5}, {"input": [64.5, -27.0], "expected": 64.5}, {"input": [64.5, -26.5], "expected": 64.5}, {"input": [64.5, -26.0], "expected": 64.5}, {"input": [64.5, -25.5], "expected": 64.5}, {"input": [64.5, -25.0], "expected": 64.5}, {"input": [64.5, -24.5], "expected": 64.5}, {"input": [64.5, -24.0], "expected": 64.5}, {"input": [64.5, -23.5], "expected": 64.5}, {"input": [64.5, -23.0], "expected": 64.5}, {"input": [64.5, -22.5], "expected": 64.5}, {"input": [64.5, -22.0], "expected": 64.5}, {"input": [64.5, -21.5], "expected": 64.5}, {"input": [64.5, -21.0], "expected": 64.5}, {"input": [64.5, -20.5], "expected": 64.5}, {"input": [64.5, -20.0], "expected": 64.5}, {"input": [64.5, -19.5], "expected": 64.5}, {"input": [64.5, -19.0], "expected": 64.5}, {"input": [64.5, -18.5], "expected": 64.5}, {"input": [64.5, -18.0], "expected": 64.5}, {"input": [64.5, -17.5], "expected": 64.5}, {"input": [64.5, -17.0], "expected": 64.5}, {"input": [64.5, -16.5], "expected": 64.5}, {"input": [64.5, -16.0], "expected": 64.5}, {"input": [64.5, -15.5], "expected": 64.5}, {"input": [64.5, -15.0], "expected": 64.5}, {"input": [64.5, -14.5], "expected": 64.5}, {"input": [64.5, -14.0], "expected": 64.5}, {"input": [64.5, -13.5], "expected": 64.5}, {"input": [64.5, -13.0], "expected": 64.5}, {"input": [64.5, -12.5], "expected": 64.5}, {"input": [64.5, -12.0], "expected": 64.5}, {"input": [64.5, -11.5], "expected": 64.5}, {"input": [64.5, -11.0], "expected": 64.5}, {"input": [64.5, -10.5], "expected": 64.5}, {"input": [64.5, -10.0], "expected": 64.5}, {"input": [64.5, -9.5], "expected": 64.5}, {"input": [64.5, -9.0], "expected": 64.5}, {"input": [64.5, -8.5], "expected": 64.5}, {"input": [64.5, -8.0], "expected": 64.5}, {"input": [64.5, -7.5], "expected": 64.5}, {"input": [64.5, -7.0], "expected": 64.5}, {"input": [64.5, -6.5], "expected": 64.5}, {"input": [64.5, -6.0], "expected": 64.5}, {"input": [64.5, -5.5], "expected": 64.5}, {"input": [64.5, -5.0], "expected": 64.5}, {"input": [64.5, -4.5], "expected": 64.5}, {"input": [64.5, -4.0], "expected": 64.5}, {"input": [64.5, -3.5], "expected": 64.5}, {"input": [64.5, -3.0], "expected": 64.5}, {"input": [64.5, -2.5], "expected": 64.5}, {"input": [64.5, -2.0], "expected": 64.5}, {"input": [64.5, -1.5], "expected": 64.5}, {"input": [64.5, -1.0], "expected": 64.5}, {"input": [64.5, -0.5], "expected": 64.5}, {"input": [64.5, 0.0], "expected": 64.5}, {"input": [64.5, 0.5], "expected": 64.5}, {"input": [64.5, 1.0], "expected": 64.5}, {"input": [64.5, 1.5], "expected": 64.5}, {"input": [64.5, 2.0], "expected": 64.5}, {"input": [64.5, 2.5], "expected": 64.5}, {"input": [64.5, 3.0], "expected": 64.5}, {"input": [64.5, 3.5], "expected": 64.5}, {"input": [64.5, 4.0], "expected": 64.5}, {"input": [64.5, 4.5], "expected": 64.5}, {"input": [64.5, 5.0], "expected": 64.5}, {"input": [64.5, 5.5], "expected": 64.5}, {"input": [64.5, 6.0], "expected": 64.5}, {"input": [64.5, 6.5], "expected": 64.5}, {"input": [64.5, 7.0], "expected": 64.5}, {"input": [64.5, 7.5], "expected": 64.5}, {"input": [64.5, 8.0], "expected": 64.5}, {"input": [64.5, 8.5], "expected": 64.5}, {"input": [64.5, 9.0], "expected": 64.5}, {"input": [64.5, 9.5], "expected": 64.5}, {"input": [64.5, 10.0], "expected": 64.5}, {"input": [64.5, 10.5], "expected": 64.5}, {"input": [64.5, 11.0], "expected": 64.5}, {"input": [64.5, 11.5], "expected": 64.5}, {"input": [64.5, 12.0], "expected": 64.5}, {"input": [64.5, 12.5], "expected": 64.5}, {"input": [64.5, 13.0], "expected": 64.5}, {"input": [64.5, 13.5], "expected": 64.5}, {"input": [64.5, 14.0], "expected": 64.5}, {"input": [64.5, 14.5], "expected": 64.5}, {"input": [64.5, 15.0], "expected": 64.5}, {"input": [64.5, 15.5], "expected": 64.5}, {"input": [64.5, 16.0], "expected": 64.5}, {"input": [64.5, 16.5], "expected": 64.5}, {"input": [64.5, 17.0], "expected": 64.5}, {"input": [64.5, 17.5], "expected": 64.5}, {"input": [64.5, 18.0], "expected": 64.5}, {"input": [64.5, 18.5], "expected": 64.5}, {"input": [64.5, 19.0], "expected": 64.5}, {"input": [64.5, 19.5], "expected": 64.5}, {"input": [64.5, 20.0], "expected": 64.5}, {"input": [64.5, 20.5], "expected": 64.5}, {"input": [64.5, 21.0], "expected": 64.5}, {"input": [64.5, 21.5], "expected": 64.5}, {"input": [64.5, 22.0], "expected": 64.5}, {"input": [64.5, 22.5], "expected": 64.5}, {"input": [64.5, 23.0], "expected": 64.5}, {"input": [64.5, 23.5], "expected": 64.5}, {"input": [64.5, 24.0], "expected": 64.5}, {"input": [64.5, 24.5], "expected": 64.5}, {"input": [64.5, 25.0], "expected": 64.5}, {"input": [64.5, 25.5], "expected": 64.5}, {"input": [64.5, 26.0], "expected": 64.5}, {"input": [64.5, 26.5], "expected": 64.5}, {"input": [64.5, 27.0], "expected": 64.5}, {"input": [64.5, 27.5], "expected": 64.5}, {"input": [64.5, 28.0], "expected": 64.5}, {"input": [64.5, 28.5], "expected": 64.5}, {"input": [64.5, 29.0], "expected": 64.5}, {"input": [64.5, 29.5], "expected": 64.5}, {"input": [64.5, 30.0], "expected": 64.5}, {"input": [64.5, 30.5], "expected": 64.5}, {"input": [64.5, 31.0], "expected": 64.5}, {"input": [64.5, 31.5], "expected": 64.5}, {"input": [64.5, 32.0], "expected": 64.50000000000001}, {"input": [64.5, 32.5], "expected": 64.50000000000001}, {"input": [64.5, 33.0], "expected": 64.50000000000001}, {"input": [64.5, 33.5], "expected": 64.50000000000003}, {"input": [64.5, 34.0], "expected": 64.50000000000006}, {"input": [64.5, 34.5], "expected": 64.5000000000001}, {"input": [64.5, 35.0], "expected": 64.50000000000016}, {"input": [64.5, 35.5], "expected": 64.50000000000026}, {"input": [64.5, 36.0], "expected": 64.50000000000043}, {"input": [64.5, 36.5], "expected": 64.5000000000007}, {"input": [64.5, 37.0], "expected": 64.50000000000114}, {"input": [64.5, 37.5], "expected": 64.50000000000188}, {"input": [64.5, 38.0], "expected": 64.5000000000031}, {"input": [64.5, 38.5], "expected": 64.50000000000512}, {"input": [64.5, 39.0], "expected": 64.50000000000843}, {"input": [64.5, 39.5], "expected": 64.50000000001388}, {"input": [64.5, 40.0], "expected": 64.5000000000229}, {"input": [64.5, 40.5], "expected": 64.50000000003776}, {"input": [64.5, 41.0], "expected": 64.50000000006224}, {"input": [64.5, 41.5], "expected": 64.50000000010262}, {"input": [64.5, 42.0], "expected": 64.5000000001692}, {"input": [64.5, 42.5], "expected": 64.50000000027894}, {"input": [64.5, 43.0], "expected": 64.5000000004599}, {"input": [64.5, 43.5], "expected": 64.50000000075826}, {"input": [64.5, 44.0], "expected": 64.50000000125016}, {"input": [64.5, 44.5], "expected": 64.50000000206116}, {"input": [64.5, 45.0], "expected": 64.50000000339827}, {"input": [64.5, 45.5], "expected": 64.5000000056028}, {"input": [64.5, 46.0], "expected": 64.50000000923745}, {"input": [64.5, 46.5], "expected": 64.50000001522999}, {"input": [64.5, 47.0], "expected": 64.50000002511}, {"input": [64.5, 47.5], "expected": 64.50000004139937}, {"input": [64.5, 48.0], "expected": 64.50000006825603}, {"input": [64.5, 48.5], "expected": 64.50000011253516}, {"input": [64.5, 49.0], "expected": 64.50000018553912}, {"input": [64.5, 49.5], "expected": 64.50000030590228}, {"input": [64.5, 50.0], "expected": 64.50000050434754}, {"input": [64.5, 50.5], "expected": 64.50000083152837}, {"input": [64.5, 51.0], "expected": 64.50000137095815}, {"input": [64.5, 51.5], "expected": 64.50000226032685}, {"input": [64.5, 52.0], "expected": 64.50000372664623}, {"input": [64.5, 52.5], "expected": 64.50000614419348}, {"input": [64.5, 53.0], "expected": 64.50001013004228}, {"input": [64.5, 53.5], "expected": 64.50001670156132}, {"input": [64.5, 54.0], "expected": 64.50002753607023}, {"input": [64.5, 54.5], "expected": 64.50004539889922}, {"input": [64.5, 55.0], "expected": 64.50007484902864}, {"input": [64.5, 55.5], "expected": 64.50012340218973}, {"input": [64.5, 56.0], "expected": 64.50020344767213}, {"input": [64.5, 56.5], "expected": 64.5003354063729}, {"input": [64.5, 57.0], "expected": 64.50055293147535}, {"input": [64.5, 57.5], "expected": 64.50091146645377}, {"input": [64.5, 58.0], "expected": 64.50150231015975}, {"input": [64.5, 58.5], "expected": 64.50247568513772}, {"input": [64.5, 59.0], "expected": 64.50407844327057}, {"input": [64.5, 59.5], "expected": 64.50671534848912}, {"input": [64.5, 60.0], "expected": 64.5110477448486}, {"input": [64.5, 60.5], "expected": 64.5181499279178}, {"input": [64.5, 61.0], "expected": 64.52975041827263}, {"input": [64.5, 61.5], "expected": 64.54858735157374}, {"input": [64.5, 62.0], "expected": 64.57888973429255}, {"input": [64.5, 62.5], "expected": 64.62692801104298}, {"input": [64.5, 63.0], "expected": 64.70141327798275}, {"input": [64.5, 63.5], "expected": 64.81326168751822}, {"input": [64.5, 64.0], "expected": 64.9740769841801}, {"input": [64.5, 64.5], "expected": 65.19314718055995}, {"input": [64.5, 65.0], "expected": 65.4740769841801}, {"input": [64.5, 65.5], "expected": 65.81326168751822}, {"input": [64.5, 66.0], "expected": 66.20141327798275}, {"input": [64.5, 66.5], "expected": 66.62692801104298}, {"input": [64.5, 67.0], "expected": 67.07888973429255}, {"input": [64.5, 67.5], "expected": 67.54858735157374}, {"input": [64.5, 68.0], "expected": 68.02975041827263}, {"input": [64.5, 68.5], "expected": 68.5181499279178}, {"input": [64.5, 69.0], "expected": 69.0110477448486}, {"input": [64.5, 69.5], "expected": 69.50671534848912}, {"input": [64.5, 70.0], "expected": 70.00407844327057}, {"input": [64.5, 70.5], "expected": 70.50247568513772}, {"input": [64.5, 71.0], "expected": 71.00150231015975}, {"input": [64.5, 71.5], "expected": 71.50091146645377}, {"input": [64.5, 72.0], "expected": 72.00055293147535}, {"input": [64.5, 72.5], "expected": 72.5003354063729}, {"input": [64.5, 73.0], "expected": 73.00020344767213}, {"input": [64.5, 73.5], "expected": 73.50012340218973}, {"input": [64.5, 74.0], "expected": 74.00007484902864}, {"input": [64.5, 74.5], "expected": 74.50004539889922}, {"input": [64.5, 75.0], "expected": 75.00002753607023}, {"input": [64.5, 75.5], "expected": 75.50001670156132}, {"input": [64.5, 76.0], "expected": 76.00001013004228}, {"input": [64.5, 76.5], "expected": 76.50000614419348}, {"input": [64.5, 77.0], "expected": 77.00000372664623}, {"input": [64.5, 77.5], "expected": 77.50000226032685}, {"input": [64.5, 78.0], "expected": 78.00000137095815}, {"input": [64.5, 78.5], "expected": 78.50000083152837}, {"input": [64.5, 79.0], "expected": 79.00000050434754}, {"input": [64.5, 79.5], "expected": 79.50000030590228}, {"input": [64.5, 80.0], "expected": 80.00000018553912}, {"input": [64.5, 80.5], "expected": 80.50000011253516}, {"input": [64.5, 81.0], "expected": 81.00000006825603}, {"input": [64.5, 81.5], "expected": 81.50000004139937}, {"input": [64.5, 82.0], "expected": 82.00000002511}, {"input": [64.5, 82.5], "expected": 82.50000001522999}, {"input": [64.5, 83.0], "expected": 83.00000000923745}, {"input": [64.5, 83.5], "expected": 83.5000000056028}, {"input": [64.5, 84.0], "expected": 84.00000000339827}, {"input": [64.5, 84.5], "expected": 84.50000000206116}, {"input": [64.5, 85.0], "expected": 85.00000000125016}, {"input": [64.5, 85.5], "expected": 85.50000000075826}, {"input": [64.5, 86.0], "expected": 86.0000000004599}, {"input": [64.5, 86.5], "expected": 86.50000000027894}, {"input": [64.5, 87.0], "expected": 87.0000000001692}, {"input": [64.5, 87.5], "expected": 87.50000000010262}, {"input": [64.5, 88.0], "expected": 88.00000000006224}, {"input": [64.5, 88.5], "expected": 88.50000000003776}, {"input": [64.5, 89.0], "expected": 89.0000000000229}, {"input": [64.5, 89.5], "expected": 89.50000000001388}, {"input": [64.5, 90.0], "expected": 90.00000000000843}, {"input": [64.5, 90.5], "expected": 90.50000000000512}, {"input": [64.5, 91.0], "expected": 91.0000000000031}, {"input": [64.5, 91.5], "expected": 91.50000000000188}, {"input": [64.5, 92.0], "expected": 92.00000000000114}, {"input": [64.5, 92.5], "expected": 92.5000000000007}, {"input": [64.5, 93.0], "expected": 93.00000000000043}, {"input": [64.5, 93.5], "expected": 93.50000000000026}, {"input": [64.5, 94.0], "expected": 94.00000000000016}, {"input": [64.5, 94.5], "expected": 94.5000000000001}, {"input": [64.5, 95.0], "expected": 95.00000000000006}, {"input": [64.5, 95.5], "expected": 95.50000000000003}, {"input": [64.5, 96.0], "expected": 96.00000000000001}, {"input": [64.5, 96.5], "expected": 96.50000000000001}, {"input": [64.5, 97.0], "expected": 97.00000000000001}, {"input": [64.5, 97.5], "expected": 97.5}, {"input": [64.5, 98.0], "expected": 98.0}, {"input": [64.5, 98.5], "expected": 98.5}, {"input": [64.5, 99.0], "expected": 99.0}, {"input": [64.5, 99.5], "expected": 99.5}, {"input": [65.0, -100.0], "expected": 65.0}, {"input": [65.0, -99.5], "expected": 65.0}, {"input": [65.0, -99.0], "expected": 65.0}, {"input": [65.0, -98.5], "expected": 65.0}, {"input": [65.0, -98.0], "expected": 65.0}, {"input": [65.0, -97.5], "expected": 65.0}, {"input": [65.0, -97.0], "expected": 65.0}, {"input": [65.0, -96.5], "expected": 65.0}, {"input": [65.0, -96.0], "expected": 65.0}, {"input": [65.0, -95.5], "expected": 65.0}, {"input": [65.0, -95.0], "expected": 65.0}, {"input": [65.0, -94.5], "expected": 65.0}, {"input": [65.0, -94.0], "expected": 65.0}, {"input": [65.0, -93.5], "expected": 65.0}, {"input": [65.0, -93.0], "expected": 65.0}, {"input": [65.0, -92.5], "expected": 65.0}, {"input": [65.0, -92.0], "expected": 65.0}, {"input": [65.0, -91.5], "expected": 65.0}, {"input": [65.0, -91.0], "expected": 65.0}, {"input": [65.0, -90.5], "expected": 65.0}, {"input": [65.0, -90.0], "expected": 65.0}, {"input": [65.0, -89.5], "expected": 65.0}, {"input": [65.0, -89.0], "expected": 65.0}, {"input": [65.0, -88.5], "expected": 65.0}, {"input": [65.0, -88.0], "expected": 65.0}, {"input": [65.0, -87.5], "expected": 65.0}, {"input": [65.0, -87.0], "expected": 65.0}, {"input": [65.0, -86.5], "expected": 65.0}, {"input": [65.0, -86.0], "expected": 65.0}, {"input": [65.0, -85.5], "expected": 65.0}, {"input": [65.0, -85.0], "expected": 65.0}, {"input": [65.0, -84.5], "expected": 65.0}, {"input": [65.0, -84.0], "expected": 65.0}, {"input": [65.0, -83.5], "expected": 65.0}, {"input": [65.0, -83.0], "expected": 65.0}, {"input": [65.0, -82.5], "expected": 65.0}, {"input": [65.0, -82.0], "expected": 65.0}, {"input": [65.0, -81.5], "expected": 65.0}, {"input": [65.0, -81.0], "expected": 65.0}, {"input": [65.0, -80.5], "expected": 65.0}, {"input": [65.0, -80.0], "expected": 65.0}, {"input": [65.0, -79.5], "expected": 65.0}, {"input": [65.0, -79.0], "expected": 65.0}, {"input": [65.0, -78.5], "expected": 65.0}, {"input": [65.0, -78.0], "expected": 65.0}, {"input": [65.0, -77.5], "expected": 65.0}, {"input": [65.0, -77.0], "expected": 65.0}, {"input": [65.0, -76.5], "expected": 65.0}, {"input": [65.0, -76.0], "expected": 65.0}, {"input": [65.0, -75.5], "expected": 65.0}, {"input": [65.0, -75.0], "expected": 65.0}, {"input": [65.0, -74.5], "expected": 65.0}, {"input": [65.0, -74.0], "expected": 65.0}, {"input": [65.0, -73.5], "expected": 65.0}, {"input": [65.0, -73.0], "expected": 65.0}, {"input": [65.0, -72.5], "expected": 65.0}, {"input": [65.0, -72.0], "expected": 65.0}, {"input": [65.0, -71.5], "expected": 65.0}, {"input": [65.0, -71.0], "expected": 65.0}, {"input": [65.0, -70.5], "expected": 65.0}, {"input": [65.0, -70.0], "expected": 65.0}, {"input": [65.0, -69.5], "expected": 65.0}, {"input": [65.0, -69.0], "expected": 65.0}, {"input": [65.0, -68.5], "expected": 65.0}, {"input": [65.0, -68.0], "expected": 65.0}, {"input": [65.0, -67.5], "expected": 65.0}, {"input": [65.0, -67.0], "expected": 65.0}, {"input": [65.0, -66.5], "expected": 65.0}, {"input": [65.0, -66.0], "expected": 65.0}, {"input": [65.0, -65.5], "expected": 65.0}, {"input": [65.0, -65.0], "expected": 65.0}, {"input": [65.0, -64.5], "expected": 65.0}, {"input": [65.0, -64.0], "expected": 65.0}, {"input": [65.0, -63.5], "expected": 65.0}, {"input": [65.0, -63.0], "expected": 65.0}, {"input": [65.0, -62.5], "expected": 65.0}, {"input": [65.0, -62.0], "expected": 65.0}, {"input": [65.0, -61.5], "expected": 65.0}, {"input": [65.0, -61.0], "expected": 65.0}, {"input": [65.0, -60.5], "expected": 65.0}, {"input": [65.0, -60.0], "expected": 65.0}, {"input": [65.0, -59.5], "expected": 65.0}, {"input": [65.0, -59.0], "expected": 65.0}, {"input": [65.0, -58.5], "expected": 65.0}, {"input": [65.0, -58.0], "expected": 65.0}, {"input": [65.0, -57.5], "expected": 65.0}, {"input": [65.0, -57.0], "expected": 65.0}, {"input": [65.0, -56.5], "expected": 65.0}, {"input": [65.0, -56.0], "expected": 65.0}, {"input": [65.0, -55.5], "expected": 65.0}, {"input": [65.0, -55.0], "expected": 65.0}, {"input": [65.0, -54.5], "expected": 65.0}, {"input": [65.0, -54.0], "expected": 65.0}, {"input": [65.0, -53.5], "expected": 65.0}, {"input": [65.0, -53.0], "expected": 65.0}, {"input": [65.0, -52.5], "expected": 65.0}, {"input": [65.0, -52.0], "expected": 65.0}, {"input": [65.0, -51.5], "expected": 65.0}, {"input": [65.0, -51.0], "expected": 65.0}, {"input": [65.0, -50.5], "expected": 65.0}, {"input": [65.0, -50.0], "expected": 65.0}, {"input": [65.0, -49.5], "expected": 65.0}, {"input": [65.0, -49.0], "expected": 65.0}, {"input": [65.0, -48.5], "expected": 65.0}, {"input": [65.0, -48.0], "expected": 65.0}, {"input": [65.0, -47.5], "expected": 65.0}, {"input": [65.0, -47.0], "expected": 65.0}, {"input": [65.0, -46.5], "expected": 65.0}, {"input": [65.0, -46.0], "expected": 65.0}, {"input": [65.0, -45.5], "expected": 65.0}, {"input": [65.0, -45.0], "expected": 65.0}, {"input": [65.0, -44.5], "expected": 65.0}, {"input": [65.0, -44.0], "expected": 65.0}, {"input": [65.0, -43.5], "expected": 65.0}, {"input": [65.0, -43.0], "expected": 65.0}, {"input": [65.0, -42.5], "expected": 65.0}, {"input": [65.0, -42.0], "expected": 65.0}, {"input": [65.0, -41.5], "expected": 65.0}, {"input": [65.0, -41.0], "expected": 65.0}, {"input": [65.0, -40.5], "expected": 65.0}, {"input": [65.0, -40.0], "expected": 65.0}, {"input": [65.0, -39.5], "expected": 65.0}, {"input": [65.0, -39.0], "expected": 65.0}, {"input": [65.0, -38.5], "expected": 65.0}, {"input": [65.0, -38.0], "expected": 65.0}, {"input": [65.0, -37.5], "expected": 65.0}, {"input": [65.0, -37.0], "expected": 65.0}, {"input": [65.0, -36.5], "expected": 65.0}, {"input": [65.0, -36.0], "expected": 65.0}, {"input": [65.0, -35.5], "expected": 65.0}, {"input": [65.0, -35.0], "expected": 65.0}, {"input": [65.0, -34.5], "expected": 65.0}, {"input": [65.0, -34.0], "expected": 65.0}, {"input": [65.0, -33.5], "expected": 65.0}, {"input": [65.0, -33.0], "expected": 65.0}, {"input": [65.0, -32.5], "expected": 65.0}, {"input": [65.0, -32.0], "expected": 65.0}, {"input": [65.0, -31.5], "expected": 65.0}, {"input": [65.0, -31.0], "expected": 65.0}, {"input": [65.0, -30.5], "expected": 65.0}, {"input": [65.0, -30.0], "expected": 65.0}, {"input": [65.0, -29.5], "expected": 65.0}, {"input": [65.0, -29.0], "expected": 65.0}, {"input": [65.0, -28.5], "expected": 65.0}, {"input": [65.0, -28.0], "expected": 65.0}, {"input": [65.0, -27.5], "expected": 65.0}, {"input": [65.0, -27.0], "expected": 65.0}, {"input": [65.0, -26.5], "expected": 65.0}, {"input": [65.0, -26.0], "expected": 65.0}, {"input": [65.0, -25.5], "expected": 65.0}, {"input": [65.0, -25.0], "expected": 65.0}, {"input": [65.0, -24.5], "expected": 65.0}, {"input": [65.0, -24.0], "expected": 65.0}, {"input": [65.0, -23.5], "expected": 65.0}, {"input": [65.0, -23.0], "expected": 65.0}, {"input": [65.0, -22.5], "expected": 65.0}, {"input": [65.0, -22.0], "expected": 65.0}, {"input": [65.0, -21.5], "expected": 65.0}, {"input": [65.0, -21.0], "expected": 65.0}, {"input": [65.0, -20.5], "expected": 65.0}, {"input": [65.0, -20.0], "expected": 65.0}, {"input": [65.0, -19.5], "expected": 65.0}, {"input": [65.0, -19.0], "expected": 65.0}, {"input": [65.0, -18.5], "expected": 65.0}, {"input": [65.0, -18.0], "expected": 65.0}, {"input": [65.0, -17.5], "expected": 65.0}, {"input": [65.0, -17.0], "expected": 65.0}, {"input": [65.0, -16.5], "expected": 65.0}, {"input": [65.0, -16.0], "expected": 65.0}, {"input": [65.0, -15.5], "expected": 65.0}, {"input": [65.0, -15.0], "expected": 65.0}, {"input": [65.0, -14.5], "expected": 65.0}, {"input": [65.0, -14.0], "expected": 65.0}, {"input": [65.0, -13.5], "expected": 65.0}, {"input": [65.0, -13.0], "expected": 65.0}, {"input": [65.0, -12.5], "expected": 65.0}, {"input": [65.0, -12.0], "expected": 65.0}, {"input": [65.0, -11.5], "expected": 65.0}, {"input": [65.0, -11.0], "expected": 65.0}, {"input": [65.0, -10.5], "expected": 65.0}, {"input": [65.0, -10.0], "expected": 65.0}, {"input": [65.0, -9.5], "expected": 65.0}, {"input": [65.0, -9.0], "expected": 65.0}, {"input": [65.0, -8.5], "expected": 65.0}, {"input": [65.0, -8.0], "expected": 65.0}, {"input": [65.0, -7.5], "expected": 65.0}, {"input": [65.0, -7.0], "expected": 65.0}, {"input": [65.0, -6.5], "expected": 65.0}, {"input": [65.0, -6.0], "expected": 65.0}, {"input": [65.0, -5.5], "expected": 65.0}, {"input": [65.0, -5.0], "expected": 65.0}, {"input": [65.0, -4.5], "expected": 65.0}, {"input": [65.0, -4.0], "expected": 65.0}, {"input": [65.0, -3.5], "expected": 65.0}, {"input": [65.0, -3.0], "expected": 65.0}, {"input": [65.0, -2.5], "expected": 65.0}, {"input": [65.0, -2.0], "expected": 65.0}, {"input": [65.0, -1.5], "expected": 65.0}, {"input": [65.0, -1.0], "expected": 65.0}, {"input": [65.0, -0.5], "expected": 65.0}, {"input": [65.0, 0.0], "expected": 65.0}, {"input": [65.0, 0.5], "expected": 65.0}, {"input": [65.0, 1.0], "expected": 65.0}, {"input": [65.0, 1.5], "expected": 65.0}, {"input": [65.0, 2.0], "expected": 65.0}, {"input": [65.0, 2.5], "expected": 65.0}, {"input": [65.0, 3.0], "expected": 65.0}, {"input": [65.0, 3.5], "expected": 65.0}, {"input": [65.0, 4.0], "expected": 65.0}, {"input": [65.0, 4.5], "expected": 65.0}, {"input": [65.0, 5.0], "expected": 65.0}, {"input": [65.0, 5.5], "expected": 65.0}, {"input": [65.0, 6.0], "expected": 65.0}, {"input": [65.0, 6.5], "expected": 65.0}, {"input": [65.0, 7.0], "expected": 65.0}, {"input": [65.0, 7.5], "expected": 65.0}, {"input": [65.0, 8.0], "expected": 65.0}, {"input": [65.0, 8.5], "expected": 65.0}, {"input": [65.0, 9.0], "expected": 65.0}, {"input": [65.0, 9.5], "expected": 65.0}, {"input": [65.0, 10.0], "expected": 65.0}, {"input": [65.0, 10.5], "expected": 65.0}, {"input": [65.0, 11.0], "expected": 65.0}, {"input": [65.0, 11.5], "expected": 65.0}, {"input": [65.0, 12.0], "expected": 65.0}, {"input": [65.0, 12.5], "expected": 65.0}, {"input": [65.0, 13.0], "expected": 65.0}, {"input": [65.0, 13.5], "expected": 65.0}, {"input": [65.0, 14.0], "expected": 65.0}, {"input": [65.0, 14.5], "expected": 65.0}, {"input": [65.0, 15.0], "expected": 65.0}, {"input": [65.0, 15.5], "expected": 65.0}, {"input": [65.0, 16.0], "expected": 65.0}, {"input": [65.0, 16.5], "expected": 65.0}, {"input": [65.0, 17.0], "expected": 65.0}, {"input": [65.0, 17.5], "expected": 65.0}, {"input": [65.0, 18.0], "expected": 65.0}, {"input": [65.0, 18.5], "expected": 65.0}, {"input": [65.0, 19.0], "expected": 65.0}, {"input": [65.0, 19.5], "expected": 65.0}, {"input": [65.0, 20.0], "expected": 65.0}, {"input": [65.0, 20.5], "expected": 65.0}, {"input": [65.0, 21.0], "expected": 65.0}, {"input": [65.0, 21.5], "expected": 65.0}, {"input": [65.0, 22.0], "expected": 65.0}, {"input": [65.0, 22.5], "expected": 65.0}, {"input": [65.0, 23.0], "expected": 65.0}, {"input": [65.0, 23.5], "expected": 65.0}, {"input": [65.0, 24.0], "expected": 65.0}, {"input": [65.0, 24.5], "expected": 65.0}, {"input": [65.0, 25.0], "expected": 65.0}, {"input": [65.0, 25.5], "expected": 65.0}, {"input": [65.0, 26.0], "expected": 65.0}, {"input": [65.0, 26.5], "expected": 65.0}, {"input": [65.0, 27.0], "expected": 65.0}, {"input": [65.0, 27.5], "expected": 65.0}, {"input": [65.0, 28.0], "expected": 65.0}, {"input": [65.0, 28.5], "expected": 65.0}, {"input": [65.0, 29.0], "expected": 65.0}, {"input": [65.0, 29.5], "expected": 65.0}, {"input": [65.0, 30.0], "expected": 65.0}, {"input": [65.0, 30.5], "expected": 65.0}, {"input": [65.0, 31.0], "expected": 65.0}, {"input": [65.0, 31.5], "expected": 65.0}, {"input": [65.0, 32.0], "expected": 65.0}, {"input": [65.0, 32.5], "expected": 65.00000000000001}, {"input": [65.0, 33.0], "expected": 65.00000000000001}, {"input": [65.0, 33.5], "expected": 65.00000000000001}, {"input": [65.0, 34.0], "expected": 65.00000000000003}, {"input": [65.0, 34.5], "expected": 65.00000000000006}, {"input": [65.0, 35.0], "expected": 65.0000000000001}, {"input": [65.0, 35.5], "expected": 65.00000000000016}, {"input": [65.0, 36.0], "expected": 65.00000000000026}, {"input": [65.0, 36.5], "expected": 65.00000000000043}, {"input": [65.0, 37.0], "expected": 65.0000000000007}, {"input": [65.0, 37.5], "expected": 65.00000000000114}, {"input": [65.0, 38.0], "expected": 65.00000000000188}, {"input": [65.0, 38.5], "expected": 65.0000000000031}, {"input": [65.0, 39.0], "expected": 65.00000000000512}, {"input": [65.0, 39.5], "expected": 65.00000000000843}, {"input": [65.0, 40.0], "expected": 65.00000000001388}, {"input": [65.0, 40.5], "expected": 65.0000000000229}, {"input": [65.0, 41.0], "expected": 65.00000000003776}, {"input": [65.0, 41.5], "expected": 65.00000000006224}, {"input": [65.0, 42.0], "expected": 65.00000000010262}, {"input": [65.0, 42.5], "expected": 65.0000000001692}, {"input": [65.0, 43.0], "expected": 65.00000000027894}, {"input": [65.0, 43.5], "expected": 65.0000000004599}, {"input": [65.0, 44.0], "expected": 65.00000000075826}, {"input": [65.0, 44.5], "expected": 65.00000000125016}, {"input": [65.0, 45.0], "expected": 65.00000000206116}, {"input": [65.0, 45.5], "expected": 65.00000000339827}, {"input": [65.0, 46.0], "expected": 65.0000000056028}, {"input": [65.0, 46.5], "expected": 65.00000000923745}, {"input": [65.0, 47.0], "expected": 65.00000001522999}, {"input": [65.0, 47.5], "expected": 65.00000002511}, {"input": [65.0, 48.0], "expected": 65.00000004139937}, {"input": [65.0, 48.5], "expected": 65.00000006825603}, {"input": [65.0, 49.0], "expected": 65.00000011253516}, {"input": [65.0, 49.5], "expected": 65.00000018553912}, {"input": [65.0, 50.0], "expected": 65.00000030590228}, {"input": [65.0, 50.5], "expected": 65.00000050434754}, {"input": [65.0, 51.0], "expected": 65.00000083152837}, {"input": [65.0, 51.5], "expected": 65.00000137095815}, {"input": [65.0, 52.0], "expected": 65.00000226032685}, {"input": [65.0, 52.5], "expected": 65.00000372664623}, {"input": [65.0, 53.0], "expected": 65.00000614419348}, {"input": [65.0, 53.5], "expected": 65.00001013004228}, {"input": [65.0, 54.0], "expected": 65.00001670156132}, {"input": [65.0, 54.5], "expected": 65.00002753607023}, {"input": [65.0, 55.0], "expected": 65.00004539889922}, {"input": [65.0, 55.5], "expected": 65.00007484902864}, {"input": [65.0, 56.0], "expected": 65.00012340218973}, {"input": [65.0, 56.5], "expected": 65.00020344767213}, {"input": [65.0, 57.0], "expected": 65.0003354063729}, {"input": [65.0, 57.5], "expected": 65.00055293147535}, {"input": [65.0, 58.0], "expected": 65.00091146645377}, {"input": [65.0, 58.5], "expected": 65.00150231015975}, {"input": [65.0, 59.0], "expected": 65.00247568513772}, {"input": [65.0, 59.5], "expected": 65.00407844327057}, {"input": [65.0, 60.0], "expected": 65.00671534848912}, {"input": [65.0, 60.5], "expected": 65.0110477448486}, {"input": [65.0, 61.0], "expected": 65.0181499279178}, {"input": [65.0, 61.5], "expected": 65.02975041827263}, {"input": [65.0, 62.0], "expected": 65.04858735157374}, {"input": [65.0, 62.5], "expected": 65.07888973429255}, {"input": [65.0, 63.0], "expected": 65.12692801104298}, {"input": [65.0, 63.5], "expected": 65.20141327798275}, {"input": [65.0, 64.0], "expected": 65.31326168751822}, {"input": [65.0, 64.5], "expected": 65.4740769841801}, {"input": [65.0, 65.0], "expected": 65.69314718055995}, {"input": [65.0, 65.5], "expected": 65.9740769841801}, {"input": [65.0, 66.0], "expected": 66.31326168751822}, {"input": [65.0, 66.5], "expected": 66.70141327798275}, {"input": [65.0, 67.0], "expected": 67.12692801104298}, {"input": [65.0, 67.5], "expected": 67.57888973429255}, {"input": [65.0, 68.0], "expected": 68.04858735157374}, {"input": [65.0, 68.5], "expected": 68.52975041827263}, {"input": [65.0, 69.0], "expected": 69.0181499279178}, {"input": [65.0, 69.5], "expected": 69.5110477448486}, {"input": [65.0, 70.0], "expected": 70.00671534848912}, {"input": [65.0, 70.5], "expected": 70.50407844327057}, {"input": [65.0, 71.0], "expected": 71.00247568513772}, {"input": [65.0, 71.5], "expected": 71.50150231015975}, {"input": [65.0, 72.0], "expected": 72.00091146645377}, {"input": [65.0, 72.5], "expected": 72.50055293147535}, {"input": [65.0, 73.0], "expected": 73.0003354063729}, {"input": [65.0, 73.5], "expected": 73.50020344767213}, {"input": [65.0, 74.0], "expected": 74.00012340218973}, {"input": [65.0, 74.5], "expected": 74.50007484902864}, {"input": [65.0, 75.0], "expected": 75.00004539889922}, {"input": [65.0, 75.5], "expected": 75.50002753607023}, {"input": [65.0, 76.0], "expected": 76.00001670156132}, {"input": [65.0, 76.5], "expected": 76.50001013004228}, {"input": [65.0, 77.0], "expected": 77.00000614419348}, {"input": [65.0, 77.5], "expected": 77.50000372664623}, {"input": [65.0, 78.0], "expected": 78.00000226032685}, {"input": [65.0, 78.5], "expected": 78.50000137095815}, {"input": [65.0, 79.0], "expected": 79.00000083152837}, {"input": [65.0, 79.5], "expected": 79.50000050434754}, {"input": [65.0, 80.0], "expected": 80.00000030590228}, {"input": [65.0, 80.5], "expected": 80.50000018553912}, {"input": [65.0, 81.0], "expected": 81.00000011253516}, {"input": [65.0, 81.5], "expected": 81.50000006825603}, {"input": [65.0, 82.0], "expected": 82.00000004139937}, {"input": [65.0, 82.5], "expected": 82.50000002511}, {"input": [65.0, 83.0], "expected": 83.00000001522999}, {"input": [65.0, 83.5], "expected": 83.50000000923745}, {"input": [65.0, 84.0], "expected": 84.0000000056028}, {"input": [65.0, 84.5], "expected": 84.50000000339827}, {"input": [65.0, 85.0], "expected": 85.00000000206116}, {"input": [65.0, 85.5], "expected": 85.50000000125016}, {"input": [65.0, 86.0], "expected": 86.00000000075826}, {"input": [65.0, 86.5], "expected": 86.5000000004599}, {"input": [65.0, 87.0], "expected": 87.00000000027894}, {"input": [65.0, 87.5], "expected": 87.5000000001692}, {"input": [65.0, 88.0], "expected": 88.00000000010262}, {"input": [65.0, 88.5], "expected": 88.50000000006224}, {"input": [65.0, 89.0], "expected": 89.00000000003776}, {"input": [65.0, 89.5], "expected": 89.5000000000229}, {"input": [65.0, 90.0], "expected": 90.00000000001388}, {"input": [65.0, 90.5], "expected": 90.50000000000843}, {"input": [65.0, 91.0], "expected": 91.00000000000512}, {"input": [65.0, 91.5], "expected": 91.5000000000031}, {"input": [65.0, 92.0], "expected": 92.00000000000188}, {"input": [65.0, 92.5], "expected": 92.50000000000114}, {"input": [65.0, 93.0], "expected": 93.0000000000007}, {"input": [65.0, 93.5], "expected": 93.50000000000043}, {"input": [65.0, 94.0], "expected": 94.00000000000026}, {"input": [65.0, 94.5], "expected": 94.50000000000016}, {"input": [65.0, 95.0], "expected": 95.0000000000001}, {"input": [65.0, 95.5], "expected": 95.50000000000006}, {"input": [65.0, 96.0], "expected": 96.00000000000003}, {"input": [65.0, 96.5], "expected": 96.50000000000001}, {"input": [65.0, 97.0], "expected": 97.00000000000001}, {"input": [65.0, 97.5], "expected": 97.50000000000001}, {"input": [65.0, 98.0], "expected": 98.0}, {"input": [65.0, 98.5], "expected": 98.5}, {"input": [65.0, 99.0], "expected": 99.0}, {"input": [65.0, 99.5], "expected": 99.5}, {"input": [65.5, -100.0], "expected": 65.5}, {"input": [65.5, -99.5], "expected": 65.5}, {"input": [65.5, -99.0], "expected": 65.5}, {"input": [65.5, -98.5], "expected": 65.5}, {"input": [65.5, -98.0], "expected": 65.5}, {"input": [65.5, -97.5], "expected": 65.5}, {"input": [65.5, -97.0], "expected": 65.5}, {"input": [65.5, -96.5], "expected": 65.5}, {"input": [65.5, -96.0], "expected": 65.5}, {"input": [65.5, -95.5], "expected": 65.5}, {"input": [65.5, -95.0], "expected": 65.5}, {"input": [65.5, -94.5], "expected": 65.5}, {"input": [65.5, -94.0], "expected": 65.5}, {"input": [65.5, -93.5], "expected": 65.5}, {"input": [65.5, -93.0], "expected": 65.5}, {"input": [65.5, -92.5], "expected": 65.5}, {"input": [65.5, -92.0], "expected": 65.5}, {"input": [65.5, -91.5], "expected": 65.5}, {"input": [65.5, -91.0], "expected": 65.5}, {"input": [65.5, -90.5], "expected": 65.5}, {"input": [65.5, -90.0], "expected": 65.5}, {"input": [65.5, -89.5], "expected": 65.5}, {"input": [65.5, -89.0], "expected": 65.5}, {"input": [65.5, -88.5], "expected": 65.5}, {"input": [65.5, -88.0], "expected": 65.5}, {"input": [65.5, -87.5], "expected": 65.5}, {"input": [65.5, -87.0], "expected": 65.5}, {"input": [65.5, -86.5], "expected": 65.5}, {"input": [65.5, -86.0], "expected": 65.5}, {"input": [65.5, -85.5], "expected": 65.5}, {"input": [65.5, -85.0], "expected": 65.5}, {"input": [65.5, -84.5], "expected": 65.5}, {"input": [65.5, -84.0], "expected": 65.5}, {"input": [65.5, -83.5], "expected": 65.5}, {"input": [65.5, -83.0], "expected": 65.5}, {"input": [65.5, -82.5], "expected": 65.5}, {"input": [65.5, -82.0], "expected": 65.5}, {"input": [65.5, -81.5], "expected": 65.5}, {"input": [65.5, -81.0], "expected": 65.5}, {"input": [65.5, -80.5], "expected": 65.5}, {"input": [65.5, -80.0], "expected": 65.5}, {"input": [65.5, -79.5], "expected": 65.5}, {"input": [65.5, -79.0], "expected": 65.5}, {"input": [65.5, -78.5], "expected": 65.5}, {"input": [65.5, -78.0], "expected": 65.5}, {"input": [65.5, -77.5], "expected": 65.5}, {"input": [65.5, -77.0], "expected": 65.5}, {"input": [65.5, -76.5], "expected": 65.5}, {"input": [65.5, -76.0], "expected": 65.5}, {"input": [65.5, -75.5], "expected": 65.5}, {"input": [65.5, -75.0], "expected": 65.5}, {"input": [65.5, -74.5], "expected": 65.5}, {"input": [65.5, -74.0], "expected": 65.5}, {"input": [65.5, -73.5], "expected": 65.5}, {"input": [65.5, -73.0], "expected": 65.5}, {"input": [65.5, -72.5], "expected": 65.5}, {"input": [65.5, -72.0], "expected": 65.5}, {"input": [65.5, -71.5], "expected": 65.5}, {"input": [65.5, -71.0], "expected": 65.5}, {"input": [65.5, -70.5], "expected": 65.5}, {"input": [65.5, -70.0], "expected": 65.5}, {"input": [65.5, -69.5], "expected": 65.5}, {"input": [65.5, -69.0], "expected": 65.5}, {"input": [65.5, -68.5], "expected": 65.5}, {"input": [65.5, -68.0], "expected": 65.5}, {"input": [65.5, -67.5], "expected": 65.5}, {"input": [65.5, -67.0], "expected": 65.5}, {"input": [65.5, -66.5], "expected": 65.5}, {"input": [65.5, -66.0], "expected": 65.5}, {"input": [65.5, -65.5], "expected": 65.5}, {"input": [65.5, -65.0], "expected": 65.5}, {"input": [65.5, -64.5], "expected": 65.5}, {"input": [65.5, -64.0], "expected": 65.5}, {"input": [65.5, -63.5], "expected": 65.5}, {"input": [65.5, -63.0], "expected": 65.5}, {"input": [65.5, -62.5], "expected": 65.5}, {"input": [65.5, -62.0], "expected": 65.5}, {"input": [65.5, -61.5], "expected": 65.5}, {"input": [65.5, -61.0], "expected": 65.5}, {"input": [65.5, -60.5], "expected": 65.5}, {"input": [65.5, -60.0], "expected": 65.5}, {"input": [65.5, -59.5], "expected": 65.5}, {"input": [65.5, -59.0], "expected": 65.5}, {"input": [65.5, -58.5], "expected": 65.5}, {"input": [65.5, -58.0], "expected": 65.5}, {"input": [65.5, -57.5], "expected": 65.5}, {"input": [65.5, -57.0], "expected": 65.5}, {"input": [65.5, -56.5], "expected": 65.5}, {"input": [65.5, -56.0], "expected": 65.5}, {"input": [65.5, -55.5], "expected": 65.5}, {"input": [65.5, -55.0], "expected": 65.5}, {"input": [65.5, -54.5], "expected": 65.5}, {"input": [65.5, -54.0], "expected": 65.5}, {"input": [65.5, -53.5], "expected": 65.5}, {"input": [65.5, -53.0], "expected": 65.5}, {"input": [65.5, -52.5], "expected": 65.5}, {"input": [65.5, -52.0], "expected": 65.5}, {"input": [65.5, -51.5], "expected": 65.5}, {"input": [65.5, -51.0], "expected": 65.5}, {"input": [65.5, -50.5], "expected": 65.5}, {"input": [65.5, -50.0], "expected": 65.5}, {"input": [65.5, -49.5], "expected": 65.5}, {"input": [65.5, -49.0], "expected": 65.5}, {"input": [65.5, -48.5], "expected": 65.5}, {"input": [65.5, -48.0], "expected": 65.5}, {"input": [65.5, -47.5], "expected": 65.5}, {"input": [65.5, -47.0], "expected": 65.5}, {"input": [65.5, -46.5], "expected": 65.5}, {"input": [65.5, -46.0], "expected": 65.5}, {"input": [65.5, -45.5], "expected": 65.5}, {"input": [65.5, -45.0], "expected": 65.5}, {"input": [65.5, -44.5], "expected": 65.5}, {"input": [65.5, -44.0], "expected": 65.5}, {"input": [65.5, -43.5], "expected": 65.5}, {"input": [65.5, -43.0], "expected": 65.5}, {"input": [65.5, -42.5], "expected": 65.5}, {"input": [65.5, -42.0], "expected": 65.5}, {"input": [65.5, -41.5], "expected": 65.5}, {"input": [65.5, -41.0], "expected": 65.5}, {"input": [65.5, -40.5], "expected": 65.5}, {"input": [65.5, -40.0], "expected": 65.5}, {"input": [65.5, -39.5], "expected": 65.5}, {"input": [65.5, -39.0], "expected": 65.5}, {"input": [65.5, -38.5], "expected": 65.5}, {"input": [65.5, -38.0], "expected": 65.5}, {"input": [65.5, -37.5], "expected": 65.5}, {"input": [65.5, -37.0], "expected": 65.5}, {"input": [65.5, -36.5], "expected": 65.5}, {"input": [65.5, -36.0], "expected": 65.5}, {"input": [65.5, -35.5], "expected": 65.5}, {"input": [65.5, -35.0], "expected": 65.5}, {"input": [65.5, -34.5], "expected": 65.5}, {"input": [65.5, -34.0], "expected": 65.5}, {"input": [65.5, -33.5], "expected": 65.5}, {"input": [65.5, -33.0], "expected": 65.5}, {"input": [65.5, -32.5], "expected": 65.5}, {"input": [65.5, -32.0], "expected": 65.5}, {"input": [65.5, -31.5], "expected": 65.5}, {"input": [65.5, -31.0], "expected": 65.5}, {"input": [65.5, -30.5], "expected": 65.5}, {"input": [65.5, -30.0], "expected": 65.5}, {"input": [65.5, -29.5], "expected": 65.5}, {"input": [65.5, -29.0], "expected": 65.5}, {"input": [65.5, -28.5], "expected": 65.5}, {"input": [65.5, -28.0], "expected": 65.5}, {"input": [65.5, -27.5], "expected": 65.5}, {"input": [65.5, -27.0], "expected": 65.5}, {"input": [65.5, -26.5], "expected": 65.5}, {"input": [65.5, -26.0], "expected": 65.5}, {"input": [65.5, -25.5], "expected": 65.5}, {"input": [65.5, -25.0], "expected": 65.5}, {"input": [65.5, -24.5], "expected": 65.5}, {"input": [65.5, -24.0], "expected": 65.5}, {"input": [65.5, -23.5], "expected": 65.5}, {"input": [65.5, -23.0], "expected": 65.5}, {"input": [65.5, -22.5], "expected": 65.5}, {"input": [65.5, -22.0], "expected": 65.5}, {"input": [65.5, -21.5], "expected": 65.5}, {"input": [65.5, -21.0], "expected": 65.5}, {"input": [65.5, -20.5], "expected": 65.5}, {"input": [65.5, -20.0], "expected": 65.5}, {"input": [65.5, -19.5], "expected": 65.5}, {"input": [65.5, -19.0], "expected": 65.5}, {"input": [65.5, -18.5], "expected": 65.5}, {"input": [65.5, -18.0], "expected": 65.5}, {"input": [65.5, -17.5], "expected": 65.5}, {"input": [65.5, -17.0], "expected": 65.5}, {"input": [65.5, -16.5], "expected": 65.5}, {"input": [65.5, -16.0], "expected": 65.5}, {"input": [65.5, -15.5], "expected": 65.5}, {"input": [65.5, -15.0], "expected": 65.5}, {"input": [65.5, -14.5], "expected": 65.5}, {"input": [65.5, -14.0], "expected": 65.5}, {"input": [65.5, -13.5], "expected": 65.5}, {"input": [65.5, -13.0], "expected": 65.5}, {"input": [65.5, -12.5], "expected": 65.5}, {"input": [65.5, -12.0], "expected": 65.5}, {"input": [65.5, -11.5], "expected": 65.5}, {"input": [65.5, -11.0], "expected": 65.5}, {"input": [65.5, -10.5], "expected": 65.5}, {"input": [65.5, -10.0], "expected": 65.5}, {"input": [65.5, -9.5], "expected": 65.5}, {"input": [65.5, -9.0], "expected": 65.5}, {"input": [65.5, -8.5], "expected": 65.5}, {"input": [65.5, -8.0], "expected": 65.5}, {"input": [65.5, -7.5], "expected": 65.5}, {"input": [65.5, -7.0], "expected": 65.5}, {"input": [65.5, -6.5], "expected": 65.5}, {"input": [65.5, -6.0], "expected": 65.5}, {"input": [65.5, -5.5], "expected": 65.5}, {"input": [65.5, -5.0], "expected": 65.5}, {"input": [65.5, -4.5], "expected": 65.5}, {"input": [65.5, -4.0], "expected": 65.5}, {"input": [65.5, -3.5], "expected": 65.5}, {"input": [65.5, -3.0], "expected": 65.5}, {"input": [65.5, -2.5], "expected": 65.5}, {"input": [65.5, -2.0], "expected": 65.5}, {"input": [65.5, -1.5], "expected": 65.5}, {"input": [65.5, -1.0], "expected": 65.5}, {"input": [65.5, -0.5], "expected": 65.5}, {"input": [65.5, 0.0], "expected": 65.5}, {"input": [65.5, 0.5], "expected": 65.5}, {"input": [65.5, 1.0], "expected": 65.5}, {"input": [65.5, 1.5], "expected": 65.5}, {"input": [65.5, 2.0], "expected": 65.5}, {"input": [65.5, 2.5], "expected": 65.5}, {"input": [65.5, 3.0], "expected": 65.5}, {"input": [65.5, 3.5], "expected": 65.5}, {"input": [65.5, 4.0], "expected": 65.5}, {"input": [65.5, 4.5], "expected": 65.5}, {"input": [65.5, 5.0], "expected": 65.5}, {"input": [65.5, 5.5], "expected": 65.5}, {"input": [65.5, 6.0], "expected": 65.5}, {"input": [65.5, 6.5], "expected": 65.5}, {"input": [65.5, 7.0], "expected": 65.5}, {"input": [65.5, 7.5], "expected": 65.5}, {"input": [65.5, 8.0], "expected": 65.5}, {"input": [65.5, 8.5], "expected": 65.5}, {"input": [65.5, 9.0], "expected": 65.5}, {"input": [65.5, 9.5], "expected": 65.5}, {"input": [65.5, 10.0], "expected": 65.5}, {"input": [65.5, 10.5], "expected": 65.5}, {"input": [65.5, 11.0], "expected": 65.5}, {"input": [65.5, 11.5], "expected": 65.5}, {"input": [65.5, 12.0], "expected": 65.5}, {"input": [65.5, 12.5], "expected": 65.5}, {"input": [65.5, 13.0], "expected": 65.5}, {"input": [65.5, 13.5], "expected": 65.5}, {"input": [65.5, 14.0], "expected": 65.5}, {"input": [65.5, 14.5], "expected": 65.5}, {"input": [65.5, 15.0], "expected": 65.5}, {"input": [65.5, 15.5], "expected": 65.5}, {"input": [65.5, 16.0], "expected": 65.5}, {"input": [65.5, 16.5], "expected": 65.5}, {"input": [65.5, 17.0], "expected": 65.5}, {"input": [65.5, 17.5], "expected": 65.5}, {"input": [65.5, 18.0], "expected": 65.5}, {"input": [65.5, 18.5], "expected": 65.5}, {"input": [65.5, 19.0], "expected": 65.5}, {"input": [65.5, 19.5], "expected": 65.5}, {"input": [65.5, 20.0], "expected": 65.5}, {"input": [65.5, 20.5], "expected": 65.5}, {"input": [65.5, 21.0], "expected": 65.5}, {"input": [65.5, 21.5], "expected": 65.5}, {"input": [65.5, 22.0], "expected": 65.5}, {"input": [65.5, 22.5], "expected": 65.5}, {"input": [65.5, 23.0], "expected": 65.5}, {"input": [65.5, 23.5], "expected": 65.5}, {"input": [65.5, 24.0], "expected": 65.5}, {"input": [65.5, 24.5], "expected": 65.5}, {"input": [65.5, 25.0], "expected": 65.5}, {"input": [65.5, 25.5], "expected": 65.5}, {"input": [65.5, 26.0], "expected": 65.5}, {"input": [65.5, 26.5], "expected": 65.5}, {"input": [65.5, 27.0], "expected": 65.5}, {"input": [65.5, 27.5], "expected": 65.5}, {"input": [65.5, 28.0], "expected": 65.5}, {"input": [65.5, 28.5], "expected": 65.5}, {"input": [65.5, 29.0], "expected": 65.5}, {"input": [65.5, 29.5], "expected": 65.5}, {"input": [65.5, 30.0], "expected": 65.5}, {"input": [65.5, 30.5], "expected": 65.5}, {"input": [65.5, 31.0], "expected": 65.5}, {"input": [65.5, 31.5], "expected": 65.5}, {"input": [65.5, 32.0], "expected": 65.5}, {"input": [65.5, 32.5], "expected": 65.5}, {"input": [65.5, 33.0], "expected": 65.50000000000001}, {"input": [65.5, 33.5], "expected": 65.50000000000001}, {"input": [65.5, 34.0], "expected": 65.50000000000001}, {"input": [65.5, 34.5], "expected": 65.50000000000003}, {"input": [65.5, 35.0], "expected": 65.50000000000006}, {"input": [65.5, 35.5], "expected": 65.5000000000001}, {"input": [65.5, 36.0], "expected": 65.50000000000016}, {"input": [65.5, 36.5], "expected": 65.50000000000026}, {"input": [65.5, 37.0], "expected": 65.50000000000043}, {"input": [65.5, 37.5], "expected": 65.5000000000007}, {"input": [65.5, 38.0], "expected": 65.50000000000114}, {"input": [65.5, 38.5], "expected": 65.50000000000188}, {"input": [65.5, 39.0], "expected": 65.5000000000031}, {"input": [65.5, 39.5], "expected": 65.50000000000512}, {"input": [65.5, 40.0], "expected": 65.50000000000843}, {"input": [65.5, 40.5], "expected": 65.50000000001388}, {"input": [65.5, 41.0], "expected": 65.5000000000229}, {"input": [65.5, 41.5], "expected": 65.50000000003776}, {"input": [65.5, 42.0], "expected": 65.50000000006224}, {"input": [65.5, 42.5], "expected": 65.50000000010262}, {"input": [65.5, 43.0], "expected": 65.5000000001692}, {"input": [65.5, 43.5], "expected": 65.50000000027894}, {"input": [65.5, 44.0], "expected": 65.5000000004599}, {"input": [65.5, 44.5], "expected": 65.50000000075826}, {"input": [65.5, 45.0], "expected": 65.50000000125016}, {"input": [65.5, 45.5], "expected": 65.50000000206116}, {"input": [65.5, 46.0], "expected": 65.50000000339827}, {"input": [65.5, 46.5], "expected": 65.5000000056028}, {"input": [65.5, 47.0], "expected": 65.50000000923745}, {"input": [65.5, 47.5], "expected": 65.50000001522999}, {"input": [65.5, 48.0], "expected": 65.50000002511}, {"input": [65.5, 48.5], "expected": 65.50000004139937}, {"input": [65.5, 49.0], "expected": 65.50000006825603}, {"input": [65.5, 49.5], "expected": 65.50000011253516}, {"input": [65.5, 50.0], "expected": 65.50000018553912}, {"input": [65.5, 50.5], "expected": 65.50000030590228}, {"input": [65.5, 51.0], "expected": 65.50000050434754}, {"input": [65.5, 51.5], "expected": 65.50000083152837}, {"input": [65.5, 52.0], "expected": 65.50000137095815}, {"input": [65.5, 52.5], "expected": 65.50000226032685}, {"input": [65.5, 53.0], "expected": 65.50000372664623}, {"input": [65.5, 53.5], "expected": 65.50000614419348}, {"input": [65.5, 54.0], "expected": 65.50001013004228}, {"input": [65.5, 54.5], "expected": 65.50001670156132}, {"input": [65.5, 55.0], "expected": 65.50002753607023}, {"input": [65.5, 55.5], "expected": 65.50004539889922}, {"input": [65.5, 56.0], "expected": 65.50007484902864}, {"input": [65.5, 56.5], "expected": 65.50012340218973}, {"input": [65.5, 57.0], "expected": 65.50020344767213}, {"input": [65.5, 57.5], "expected": 65.5003354063729}, {"input": [65.5, 58.0], "expected": 65.50055293147535}, {"input": [65.5, 58.5], "expected": 65.50091146645377}, {"input": [65.5, 59.0], "expected": 65.50150231015975}, {"input": [65.5, 59.5], "expected": 65.50247568513772}, {"input": [65.5, 60.0], "expected": 65.50407844327057}, {"input": [65.5, 60.5], "expected": 65.50671534848912}, {"input": [65.5, 61.0], "expected": 65.5110477448486}, {"input": [65.5, 61.5], "expected": 65.5181499279178}, {"input": [65.5, 62.0], "expected": 65.52975041827263}, {"input": [65.5, 62.5], "expected": 65.54858735157374}, {"input": [65.5, 63.0], "expected": 65.57888973429255}, {"input": [65.5, 63.5], "expected": 65.62692801104298}, {"input": [65.5, 64.0], "expected": 65.70141327798275}, {"input": [65.5, 64.5], "expected": 65.81326168751822}, {"input": [65.5, 65.0], "expected": 65.9740769841801}, {"input": [65.5, 65.5], "expected": 66.19314718055995}, {"input": [65.5, 66.0], "expected": 66.4740769841801}, {"input": [65.5, 66.5], "expected": 66.81326168751822}, {"input": [65.5, 67.0], "expected": 67.20141327798275}, {"input": [65.5, 67.5], "expected": 67.62692801104298}, {"input": [65.5, 68.0], "expected": 68.07888973429255}, {"input": [65.5, 68.5], "expected": 68.54858735157374}, {"input": [65.5, 69.0], "expected": 69.02975041827263}, {"input": [65.5, 69.5], "expected": 69.5181499279178}, {"input": [65.5, 70.0], "expected": 70.0110477448486}, {"input": [65.5, 70.5], "expected": 70.50671534848912}, {"input": [65.5, 71.0], "expected": 71.00407844327057}, {"input": [65.5, 71.5], "expected": 71.50247568513772}, {"input": [65.5, 72.0], "expected": 72.00150231015975}, {"input": [65.5, 72.5], "expected": 72.50091146645377}, {"input": [65.5, 73.0], "expected": 73.00055293147535}, {"input": [65.5, 73.5], "expected": 73.5003354063729}, {"input": [65.5, 74.0], "expected": 74.00020344767213}, {"input": [65.5, 74.5], "expected": 74.50012340218973}, {"input": [65.5, 75.0], "expected": 75.00007484902864}, {"input": [65.5, 75.5], "expected": 75.50004539889922}, {"input": [65.5, 76.0], "expected": 76.00002753607023}, {"input": [65.5, 76.5], "expected": 76.50001670156132}, {"input": [65.5, 77.0], "expected": 77.00001013004228}, {"input": [65.5, 77.5], "expected": 77.50000614419348}, {"input": [65.5, 78.0], "expected": 78.00000372664623}, {"input": [65.5, 78.5], "expected": 78.50000226032685}, {"input": [65.5, 79.0], "expected": 79.00000137095815}, {"input": [65.5, 79.5], "expected": 79.50000083152837}, {"input": [65.5, 80.0], "expected": 80.00000050434754}, {"input": [65.5, 80.5], "expected": 80.50000030590228}, {"input": [65.5, 81.0], "expected": 81.00000018553912}, {"input": [65.5, 81.5], "expected": 81.50000011253516}, {"input": [65.5, 82.0], "expected": 82.00000006825603}, {"input": [65.5, 82.5], "expected": 82.50000004139937}, {"input": [65.5, 83.0], "expected": 83.00000002511}, {"input": [65.5, 83.5], "expected": 83.50000001522999}, {"input": [65.5, 84.0], "expected": 84.00000000923745}, {"input": [65.5, 84.5], "expected": 84.5000000056028}, {"input": [65.5, 85.0], "expected": 85.00000000339827}, {"input": [65.5, 85.5], "expected": 85.50000000206116}, {"input": [65.5, 86.0], "expected": 86.00000000125016}, {"input": [65.5, 86.5], "expected": 86.50000000075826}, {"input": [65.5, 87.0], "expected": 87.0000000004599}, {"input": [65.5, 87.5], "expected": 87.50000000027894}, {"input": [65.5, 88.0], "expected": 88.0000000001692}, {"input": [65.5, 88.5], "expected": 88.50000000010262}, {"input": [65.5, 89.0], "expected": 89.00000000006224}, {"input": [65.5, 89.5], "expected": 89.50000000003776}, {"input": [65.5, 90.0], "expected": 90.0000000000229}, {"input": [65.5, 90.5], "expected": 90.50000000001388}, {"input": [65.5, 91.0], "expected": 91.00000000000843}, {"input": [65.5, 91.5], "expected": 91.50000000000512}, {"input": [65.5, 92.0], "expected": 92.0000000000031}, {"input": [65.5, 92.5], "expected": 92.50000000000188}, {"input": [65.5, 93.0], "expected": 93.00000000000114}, {"input": [65.5, 93.5], "expected": 93.5000000000007}, {"input": [65.5, 94.0], "expected": 94.00000000000043}, {"input": [65.5, 94.5], "expected": 94.50000000000026}, {"input": [65.5, 95.0], "expected": 95.00000000000016}, {"input": [65.5, 95.5], "expected": 95.5000000000001}, {"input": [65.5, 96.0], "expected": 96.00000000000006}, {"input": [65.5, 96.5], "expected": 96.50000000000003}, {"input": [65.5, 97.0], "expected": 97.00000000000001}, {"input": [65.5, 97.5], "expected": 97.50000000000001}, {"input": [65.5, 98.0], "expected": 98.00000000000001}, {"input": [65.5, 98.5], "expected": 98.5}, {"input": [65.5, 99.0], "expected": 99.0}, {"input": [65.5, 99.5], "expected": 99.5}, {"input": [66.0, -100.0], "expected": 66.0}, {"input": [66.0, -99.5], "expected": 66.0}, {"input": [66.0, -99.0], "expected": 66.0}, {"input": [66.0, -98.5], "expected": 66.0}, {"input": [66.0, -98.0], "expected": 66.0}, {"input": [66.0, -97.5], "expected": 66.0}, {"input": [66.0, -97.0], "expected": 66.0}, {"input": [66.0, -96.5], "expected": 66.0}, {"input": [66.0, -96.0], "expected": 66.0}, {"input": [66.0, -95.5], "expected": 66.0}, {"input": [66.0, -95.0], "expected": 66.0}, {"input": [66.0, -94.5], "expected": 66.0}, {"input": [66.0, -94.0], "expected": 66.0}, {"input": [66.0, -93.5], "expected": 66.0}, {"input": [66.0, -93.0], "expected": 66.0}, {"input": [66.0, -92.5], "expected": 66.0}, {"input": [66.0, -92.0], "expected": 66.0}, {"input": [66.0, -91.5], "expected": 66.0}, {"input": [66.0, -91.0], "expected": 66.0}, {"input": [66.0, -90.5], "expected": 66.0}, {"input": [66.0, -90.0], "expected": 66.0}, {"input": [66.0, -89.5], "expected": 66.0}, {"input": [66.0, -89.0], "expected": 66.0}, {"input": [66.0, -88.5], "expected": 66.0}, {"input": [66.0, -88.0], "expected": 66.0}, {"input": [66.0, -87.5], "expected": 66.0}, {"input": [66.0, -87.0], "expected": 66.0}, {"input": [66.0, -86.5], "expected": 66.0}, {"input": [66.0, -86.0], "expected": 66.0}, {"input": [66.0, -85.5], "expected": 66.0}, {"input": [66.0, -85.0], "expected": 66.0}, {"input": [66.0, -84.5], "expected": 66.0}, {"input": [66.0, -84.0], "expected": 66.0}, {"input": [66.0, -83.5], "expected": 66.0}, {"input": [66.0, -83.0], "expected": 66.0}, {"input": [66.0, -82.5], "expected": 66.0}, {"input": [66.0, -82.0], "expected": 66.0}, {"input": [66.0, -81.5], "expected": 66.0}, {"input": [66.0, -81.0], "expected": 66.0}, {"input": [66.0, -80.5], "expected": 66.0}, {"input": [66.0, -80.0], "expected": 66.0}, {"input": [66.0, -79.5], "expected": 66.0}, {"input": [66.0, -79.0], "expected": 66.0}, {"input": [66.0, -78.5], "expected": 66.0}, {"input": [66.0, -78.0], "expected": 66.0}, {"input": [66.0, -77.5], "expected": 66.0}, {"input": [66.0, -77.0], "expected": 66.0}, {"input": [66.0, -76.5], "expected": 66.0}, {"input": [66.0, -76.0], "expected": 66.0}, {"input": [66.0, -75.5], "expected": 66.0}, {"input": [66.0, -75.0], "expected": 66.0}, {"input": [66.0, -74.5], "expected": 66.0}, {"input": [66.0, -74.0], "expected": 66.0}, {"input": [66.0, -73.5], "expected": 66.0}, {"input": [66.0, -73.0], "expected": 66.0}, {"input": [66.0, -72.5], "expected": 66.0}, {"input": [66.0, -72.0], "expected": 66.0}, {"input": [66.0, -71.5], "expected": 66.0}, {"input": [66.0, -71.0], "expected": 66.0}, {"input": [66.0, -70.5], "expected": 66.0}, {"input": [66.0, -70.0], "expected": 66.0}, {"input": [66.0, -69.5], "expected": 66.0}, {"input": [66.0, -69.0], "expected": 66.0}, {"input": [66.0, -68.5], "expected": 66.0}, {"input": [66.0, -68.0], "expected": 66.0}, {"input": [66.0, -67.5], "expected": 66.0}, {"input": [66.0, -67.0], "expected": 66.0}, {"input": [66.0, -66.5], "expected": 66.0}, {"input": [66.0, -66.0], "expected": 66.0}, {"input": [66.0, -65.5], "expected": 66.0}, {"input": [66.0, -65.0], "expected": 66.0}, {"input": [66.0, -64.5], "expected": 66.0}, {"input": [66.0, -64.0], "expected": 66.0}, {"input": [66.0, -63.5], "expected": 66.0}, {"input": [66.0, -63.0], "expected": 66.0}, {"input": [66.0, -62.5], "expected": 66.0}, {"input": [66.0, -62.0], "expected": 66.0}, {"input": [66.0, -61.5], "expected": 66.0}, {"input": [66.0, -61.0], "expected": 66.0}, {"input": [66.0, -60.5], "expected": 66.0}, {"input": [66.0, -60.0], "expected": 66.0}, {"input": [66.0, -59.5], "expected": 66.0}, {"input": [66.0, -59.0], "expected": 66.0}, {"input": [66.0, -58.5], "expected": 66.0}, {"input": [66.0, -58.0], "expected": 66.0}, {"input": [66.0, -57.5], "expected": 66.0}, {"input": [66.0, -57.0], "expected": 66.0}, {"input": [66.0, -56.5], "expected": 66.0}, {"input": [66.0, -56.0], "expected": 66.0}, {"input": [66.0, -55.5], "expected": 66.0}, {"input": [66.0, -55.0], "expected": 66.0}, {"input": [66.0, -54.5], "expected": 66.0}, {"input": [66.0, -54.0], "expected": 66.0}, {"input": [66.0, -53.5], "expected": 66.0}, {"input": [66.0, -53.0], "expected": 66.0}, {"input": [66.0, -52.5], "expected": 66.0}, {"input": [66.0, -52.0], "expected": 66.0}, {"input": [66.0, -51.5], "expected": 66.0}, {"input": [66.0, -51.0], "expected": 66.0}, {"input": [66.0, -50.5], "expected": 66.0}, {"input": [66.0, -50.0], "expected": 66.0}, {"input": [66.0, -49.5], "expected": 66.0}, {"input": [66.0, -49.0], "expected": 66.0}, {"input": [66.0, -48.5], "expected": 66.0}, {"input": [66.0, -48.0], "expected": 66.0}, {"input": [66.0, -47.5], "expected": 66.0}, {"input": [66.0, -47.0], "expected": 66.0}, {"input": [66.0, -46.5], "expected": 66.0}, {"input": [66.0, -46.0], "expected": 66.0}, {"input": [66.0, -45.5], "expected": 66.0}, {"input": [66.0, -45.0], "expected": 66.0}, {"input": [66.0, -44.5], "expected": 66.0}, {"input": [66.0, -44.0], "expected": 66.0}, {"input": [66.0, -43.5], "expected": 66.0}, {"input": [66.0, -43.0], "expected": 66.0}, {"input": [66.0, -42.5], "expected": 66.0}, {"input": [66.0, -42.0], "expected": 66.0}, {"input": [66.0, -41.5], "expected": 66.0}, {"input": [66.0, -41.0], "expected": 66.0}, {"input": [66.0, -40.5], "expected": 66.0}, {"input": [66.0, -40.0], "expected": 66.0}, {"input": [66.0, -39.5], "expected": 66.0}, {"input": [66.0, -39.0], "expected": 66.0}, {"input": [66.0, -38.5], "expected": 66.0}, {"input": [66.0, -38.0], "expected": 66.0}, {"input": [66.0, -37.5], "expected": 66.0}, {"input": [66.0, -37.0], "expected": 66.0}, {"input": [66.0, -36.5], "expected": 66.0}, {"input": [66.0, -36.0], "expected": 66.0}, {"input": [66.0, -35.5], "expected": 66.0}, {"input": [66.0, -35.0], "expected": 66.0}, {"input": [66.0, -34.5], "expected": 66.0}, {"input": [66.0, -34.0], "expected": 66.0}, {"input": [66.0, -33.5], "expected": 66.0}, {"input": [66.0, -33.0], "expected": 66.0}, {"input": [66.0, -32.5], "expected": 66.0}, {"input": [66.0, -32.0], "expected": 66.0}, {"input": [66.0, -31.5], "expected": 66.0}, {"input": [66.0, -31.0], "expected": 66.0}, {"input": [66.0, -30.5], "expected": 66.0}, {"input": [66.0, -30.0], "expected": 66.0}, {"input": [66.0, -29.5], "expected": 66.0}, {"input": [66.0, -29.0], "expected": 66.0}, {"input": [66.0, -28.5], "expected": 66.0}, {"input": [66.0, -28.0], "expected": 66.0}, {"input": [66.0, -27.5], "expected": 66.0}, {"input": [66.0, -27.0], "expected": 66.0}, {"input": [66.0, -26.5], "expected": 66.0}, {"input": [66.0, -26.0], "expected": 66.0}, {"input": [66.0, -25.5], "expected": 66.0}, {"input": [66.0, -25.0], "expected": 66.0}, {"input": [66.0, -24.5], "expected": 66.0}, {"input": [66.0, -24.0], "expected": 66.0}, {"input": [66.0, -23.5], "expected": 66.0}, {"input": [66.0, -23.0], "expected": 66.0}, {"input": [66.0, -22.5], "expected": 66.0}, {"input": [66.0, -22.0], "expected": 66.0}, {"input": [66.0, -21.5], "expected": 66.0}, {"input": [66.0, -21.0], "expected": 66.0}, {"input": [66.0, -20.5], "expected": 66.0}, {"input": [66.0, -20.0], "expected": 66.0}, {"input": [66.0, -19.5], "expected": 66.0}, {"input": [66.0, -19.0], "expected": 66.0}, {"input": [66.0, -18.5], "expected": 66.0}, {"input": [66.0, -18.0], "expected": 66.0}, {"input": [66.0, -17.5], "expected": 66.0}, {"input": [66.0, -17.0], "expected": 66.0}, {"input": [66.0, -16.5], "expected": 66.0}, {"input": [66.0, -16.0], "expected": 66.0}, {"input": [66.0, -15.5], "expected": 66.0}, {"input": [66.0, -15.0], "expected": 66.0}, {"input": [66.0, -14.5], "expected": 66.0}, {"input": [66.0, -14.0], "expected": 66.0}, {"input": [66.0, -13.5], "expected": 66.0}, {"input": [66.0, -13.0], "expected": 66.0}, {"input": [66.0, -12.5], "expected": 66.0}, {"input": [66.0, -12.0], "expected": 66.0}, {"input": [66.0, -11.5], "expected": 66.0}, {"input": [66.0, -11.0], "expected": 66.0}, {"input": [66.0, -10.5], "expected": 66.0}, {"input": [66.0, -10.0], "expected": 66.0}, {"input": [66.0, -9.5], "expected": 66.0}, {"input": [66.0, -9.0], "expected": 66.0}, {"input": [66.0, -8.5], "expected": 66.0}, {"input": [66.0, -8.0], "expected": 66.0}, {"input": [66.0, -7.5], "expected": 66.0}, {"input": [66.0, -7.0], "expected": 66.0}, {"input": [66.0, -6.5], "expected": 66.0}, {"input": [66.0, -6.0], "expected": 66.0}, {"input": [66.0, -5.5], "expected": 66.0}, {"input": [66.0, -5.0], "expected": 66.0}, {"input": [66.0, -4.5], "expected": 66.0}, {"input": [66.0, -4.0], "expected": 66.0}, {"input": [66.0, -3.5], "expected": 66.0}, {"input": [66.0, -3.0], "expected": 66.0}, {"input": [66.0, -2.5], "expected": 66.0}, {"input": [66.0, -2.0], "expected": 66.0}, {"input": [66.0, -1.5], "expected": 66.0}, {"input": [66.0, -1.0], "expected": 66.0}, {"input": [66.0, -0.5], "expected": 66.0}, {"input": [66.0, 0.0], "expected": 66.0}, {"input": [66.0, 0.5], "expected": 66.0}, {"input": [66.0, 1.0], "expected": 66.0}, {"input": [66.0, 1.5], "expected": 66.0}, {"input": [66.0, 2.0], "expected": 66.0}, {"input": [66.0, 2.5], "expected": 66.0}, {"input": [66.0, 3.0], "expected": 66.0}, {"input": [66.0, 3.5], "expected": 66.0}, {"input": [66.0, 4.0], "expected": 66.0}, {"input": [66.0, 4.5], "expected": 66.0}, {"input": [66.0, 5.0], "expected": 66.0}, {"input": [66.0, 5.5], "expected": 66.0}, {"input": [66.0, 6.0], "expected": 66.0}, {"input": [66.0, 6.5], "expected": 66.0}, {"input": [66.0, 7.0], "expected": 66.0}, {"input": [66.0, 7.5], "expected": 66.0}, {"input": [66.0, 8.0], "expected": 66.0}, {"input": [66.0, 8.5], "expected": 66.0}, {"input": [66.0, 9.0], "expected": 66.0}, {"input": [66.0, 9.5], "expected": 66.0}, {"input": [66.0, 10.0], "expected": 66.0}, {"input": [66.0, 10.5], "expected": 66.0}, {"input": [66.0, 11.0], "expected": 66.0}, {"input": [66.0, 11.5], "expected": 66.0}, {"input": [66.0, 12.0], "expected": 66.0}, {"input": [66.0, 12.5], "expected": 66.0}, {"input": [66.0, 13.0], "expected": 66.0}, {"input": [66.0, 13.5], "expected": 66.0}, {"input": [66.0, 14.0], "expected": 66.0}, {"input": [66.0, 14.5], "expected": 66.0}, {"input": [66.0, 15.0], "expected": 66.0}, {"input": [66.0, 15.5], "expected": 66.0}, {"input": [66.0, 16.0], "expected": 66.0}, {"input": [66.0, 16.5], "expected": 66.0}, {"input": [66.0, 17.0], "expected": 66.0}, {"input": [66.0, 17.5], "expected": 66.0}, {"input": [66.0, 18.0], "expected": 66.0}, {"input": [66.0, 18.5], "expected": 66.0}, {"input": [66.0, 19.0], "expected": 66.0}, {"input": [66.0, 19.5], "expected": 66.0}, {"input": [66.0, 20.0], "expected": 66.0}, {"input": [66.0, 20.5], "expected": 66.0}, {"input": [66.0, 21.0], "expected": 66.0}, {"input": [66.0, 21.5], "expected": 66.0}, {"input": [66.0, 22.0], "expected": 66.0}, {"input": [66.0, 22.5], "expected": 66.0}, {"input": [66.0, 23.0], "expected": 66.0}, {"input": [66.0, 23.5], "expected": 66.0}, {"input": [66.0, 24.0], "expected": 66.0}, {"input": [66.0, 24.5], "expected": 66.0}, {"input": [66.0, 25.0], "expected": 66.0}, {"input": [66.0, 25.5], "expected": 66.0}, {"input": [66.0, 26.0], "expected": 66.0}, {"input": [66.0, 26.5], "expected": 66.0}, {"input": [66.0, 27.0], "expected": 66.0}, {"input": [66.0, 27.5], "expected": 66.0}, {"input": [66.0, 28.0], "expected": 66.0}, {"input": [66.0, 28.5], "expected": 66.0}, {"input": [66.0, 29.0], "expected": 66.0}, {"input": [66.0, 29.5], "expected": 66.0}, {"input": [66.0, 30.0], "expected": 66.0}, {"input": [66.0, 30.5], "expected": 66.0}, {"input": [66.0, 31.0], "expected": 66.0}, {"input": [66.0, 31.5], "expected": 66.0}, {"input": [66.0, 32.0], "expected": 66.0}, {"input": [66.0, 32.5], "expected": 66.0}, {"input": [66.0, 33.0], "expected": 66.0}, {"input": [66.0, 33.5], "expected": 66.00000000000001}, {"input": [66.0, 34.0], "expected": 66.00000000000001}, {"input": [66.0, 34.5], "expected": 66.00000000000001}, {"input": [66.0, 35.0], "expected": 66.00000000000003}, {"input": [66.0, 35.5], "expected": 66.00000000000006}, {"input": [66.0, 36.0], "expected": 66.0000000000001}, {"input": [66.0, 36.5], "expected": 66.00000000000016}, {"input": [66.0, 37.0], "expected": 66.00000000000026}, {"input": [66.0, 37.5], "expected": 66.00000000000043}, {"input": [66.0, 38.0], "expected": 66.0000000000007}, {"input": [66.0, 38.5], "expected": 66.00000000000114}, {"input": [66.0, 39.0], "expected": 66.00000000000188}, {"input": [66.0, 39.5], "expected": 66.0000000000031}, {"input": [66.0, 40.0], "expected": 66.00000000000512}, {"input": [66.0, 40.5], "expected": 66.00000000000843}, {"input": [66.0, 41.0], "expected": 66.00000000001388}, {"input": [66.0, 41.5], "expected": 66.0000000000229}, {"input": [66.0, 42.0], "expected": 66.00000000003776}, {"input": [66.0, 42.5], "expected": 66.00000000006224}, {"input": [66.0, 43.0], "expected": 66.00000000010262}, {"input": [66.0, 43.5], "expected": 66.0000000001692}, {"input": [66.0, 44.0], "expected": 66.00000000027894}, {"input": [66.0, 44.5], "expected": 66.0000000004599}, {"input": [66.0, 45.0], "expected": 66.00000000075826}, {"input": [66.0, 45.5], "expected": 66.00000000125016}, {"input": [66.0, 46.0], "expected": 66.00000000206116}, {"input": [66.0, 46.5], "expected": 66.00000000339827}, {"input": [66.0, 47.0], "expected": 66.0000000056028}, {"input": [66.0, 47.5], "expected": 66.00000000923745}, {"input": [66.0, 48.0], "expected": 66.00000001522999}, {"input": [66.0, 48.5], "expected": 66.00000002511}, {"input": [66.0, 49.0], "expected": 66.00000004139937}, {"input": [66.0, 49.5], "expected": 66.00000006825603}, {"input": [66.0, 50.0], "expected": 66.00000011253516}, {"input": [66.0, 50.5], "expected": 66.00000018553912}, {"input": [66.0, 51.0], "expected": 66.00000030590228}, {"input": [66.0, 51.5], "expected": 66.00000050434754}, {"input": [66.0, 52.0], "expected": 66.00000083152837}, {"input": [66.0, 52.5], "expected": 66.00000137095815}, {"input": [66.0, 53.0], "expected": 66.00000226032685}, {"input": [66.0, 53.5], "expected": 66.00000372664623}, {"input": [66.0, 54.0], "expected": 66.00000614419348}, {"input": [66.0, 54.5], "expected": 66.00001013004228}, {"input": [66.0, 55.0], "expected": 66.00001670156132}, {"input": [66.0, 55.5], "expected": 66.00002753607023}, {"input": [66.0, 56.0], "expected": 66.00004539889922}, {"input": [66.0, 56.5], "expected": 66.00007484902864}, {"input": [66.0, 57.0], "expected": 66.00012340218973}, {"input": [66.0, 57.5], "expected": 66.00020344767213}, {"input": [66.0, 58.0], "expected": 66.0003354063729}, {"input": [66.0, 58.5], "expected": 66.00055293147535}, {"input": [66.0, 59.0], "expected": 66.00091146645377}, {"input": [66.0, 59.5], "expected": 66.00150231015975}, {"input": [66.0, 60.0], "expected": 66.00247568513772}, {"input": [66.0, 60.5], "expected": 66.00407844327057}, {"input": [66.0, 61.0], "expected": 66.00671534848912}, {"input": [66.0, 61.5], "expected": 66.0110477448486}, {"input": [66.0, 62.0], "expected": 66.0181499279178}, {"input": [66.0, 62.5], "expected": 66.02975041827263}, {"input": [66.0, 63.0], "expected": 66.04858735157374}, {"input": [66.0, 63.5], "expected": 66.07888973429255}, {"input": [66.0, 64.0], "expected": 66.12692801104298}, {"input": [66.0, 64.5], "expected": 66.20141327798275}, {"input": [66.0, 65.0], "expected": 66.31326168751822}, {"input": [66.0, 65.5], "expected": 66.4740769841801}, {"input": [66.0, 66.0], "expected": 66.69314718055995}, {"input": [66.0, 66.5], "expected": 66.9740769841801}, {"input": [66.0, 67.0], "expected": 67.31326168751822}, {"input": [66.0, 67.5], "expected": 67.70141327798275}, {"input": [66.0, 68.0], "expected": 68.12692801104298}, {"input": [66.0, 68.5], "expected": 68.57888973429255}, {"input": [66.0, 69.0], "expected": 69.04858735157374}, {"input": [66.0, 69.5], "expected": 69.52975041827263}, {"input": [66.0, 70.0], "expected": 70.0181499279178}, {"input": [66.0, 70.5], "expected": 70.5110477448486}, {"input": [66.0, 71.0], "expected": 71.00671534848912}, {"input": [66.0, 71.5], "expected": 71.50407844327057}, {"input": [66.0, 72.0], "expected": 72.00247568513772}, {"input": [66.0, 72.5], "expected": 72.50150231015975}, {"input": [66.0, 73.0], "expected": 73.00091146645377}, {"input": [66.0, 73.5], "expected": 73.50055293147535}, {"input": [66.0, 74.0], "expected": 74.0003354063729}, {"input": [66.0, 74.5], "expected": 74.50020344767213}, {"input": [66.0, 75.0], "expected": 75.00012340218973}, {"input": [66.0, 75.5], "expected": 75.50007484902864}, {"input": [66.0, 76.0], "expected": 76.00004539889922}, {"input": [66.0, 76.5], "expected": 76.50002753607023}, {"input": [66.0, 77.0], "expected": 77.00001670156132}, {"input": [66.0, 77.5], "expected": 77.50001013004228}, {"input": [66.0, 78.0], "expected": 78.00000614419348}, {"input": [66.0, 78.5], "expected": 78.50000372664623}, {"input": [66.0, 79.0], "expected": 79.00000226032685}, {"input": [66.0, 79.5], "expected": 79.50000137095815}, {"input": [66.0, 80.0], "expected": 80.00000083152837}, {"input": [66.0, 80.5], "expected": 80.50000050434754}, {"input": [66.0, 81.0], "expected": 81.00000030590228}, {"input": [66.0, 81.5], "expected": 81.50000018553912}, {"input": [66.0, 82.0], "expected": 82.00000011253516}, {"input": [66.0, 82.5], "expected": 82.50000006825603}, {"input": [66.0, 83.0], "expected": 83.00000004139937}, {"input": [66.0, 83.5], "expected": 83.50000002511}, {"input": [66.0, 84.0], "expected": 84.00000001522999}, {"input": [66.0, 84.5], "expected": 84.50000000923745}, {"input": [66.0, 85.0], "expected": 85.0000000056028}, {"input": [66.0, 85.5], "expected": 85.50000000339827}, {"input": [66.0, 86.0], "expected": 86.00000000206116}, {"input": [66.0, 86.5], "expected": 86.50000000125016}, {"input": [66.0, 87.0], "expected": 87.00000000075826}, {"input": [66.0, 87.5], "expected": 87.5000000004599}, {"input": [66.0, 88.0], "expected": 88.00000000027894}, {"input": [66.0, 88.5], "expected": 88.5000000001692}, {"input": [66.0, 89.0], "expected": 89.00000000010262}, {"input": [66.0, 89.5], "expected": 89.50000000006224}, {"input": [66.0, 90.0], "expected": 90.00000000003776}, {"input": [66.0, 90.5], "expected": 90.5000000000229}, {"input": [66.0, 91.0], "expected": 91.00000000001388}, {"input": [66.0, 91.5], "expected": 91.50000000000843}, {"input": [66.0, 92.0], "expected": 92.00000000000512}, {"input": [66.0, 92.5], "expected": 92.5000000000031}, {"input": [66.0, 93.0], "expected": 93.00000000000188}, {"input": [66.0, 93.5], "expected": 93.50000000000114}, {"input": [66.0, 94.0], "expected": 94.0000000000007}, {"input": [66.0, 94.5], "expected": 94.50000000000043}, {"input": [66.0, 95.0], "expected": 95.00000000000026}, {"input": [66.0, 95.5], "expected": 95.50000000000016}, {"input": [66.0, 96.0], "expected": 96.0000000000001}, {"input": [66.0, 96.5], "expected": 96.50000000000006}, {"input": [66.0, 97.0], "expected": 97.00000000000003}, {"input": [66.0, 97.5], "expected": 97.50000000000001}, {"input": [66.0, 98.0], "expected": 98.00000000000001}, {"input": [66.0, 98.5], "expected": 98.50000000000001}, {"input": [66.0, 99.0], "expected": 99.0}, {"input": [66.0, 99.5], "expected": 99.5}, {"input": [66.5, -100.0], "expected": 66.5}, {"input": [66.5, -99.5], "expected": 66.5}, {"input": [66.5, -99.0], "expected": 66.5}, {"input": [66.5, -98.5], "expected": 66.5}, {"input": [66.5, -98.0], "expected": 66.5}, {"input": [66.5, -97.5], "expected": 66.5}, {"input": [66.5, -97.0], "expected": 66.5}, {"input": [66.5, -96.5], "expected": 66.5}, {"input": [66.5, -96.0], "expected": 66.5}, {"input": [66.5, -95.5], "expected": 66.5}, {"input": [66.5, -95.0], "expected": 66.5}, {"input": [66.5, -94.5], "expected": 66.5}, {"input": [66.5, -94.0], "expected": 66.5}, {"input": [66.5, -93.5], "expected": 66.5}, {"input": [66.5, -93.0], "expected": 66.5}, {"input": [66.5, -92.5], "expected": 66.5}, {"input": [66.5, -92.0], "expected": 66.5}, {"input": [66.5, -91.5], "expected": 66.5}, {"input": [66.5, -91.0], "expected": 66.5}, {"input": [66.5, -90.5], "expected": 66.5}, {"input": [66.5, -90.0], "expected": 66.5}, {"input": [66.5, -89.5], "expected": 66.5}, {"input": [66.5, -89.0], "expected": 66.5}, {"input": [66.5, -88.5], "expected": 66.5}, {"input": [66.5, -88.0], "expected": 66.5}, {"input": [66.5, -87.5], "expected": 66.5}, {"input": [66.5, -87.0], "expected": 66.5}, {"input": [66.5, -86.5], "expected": 66.5}, {"input": [66.5, -86.0], "expected": 66.5}, {"input": [66.5, -85.5], "expected": 66.5}, {"input": [66.5, -85.0], "expected": 66.5}, {"input": [66.5, -84.5], "expected": 66.5}, {"input": [66.5, -84.0], "expected": 66.5}, {"input": [66.5, -83.5], "expected": 66.5}, {"input": [66.5, -83.0], "expected": 66.5}, {"input": [66.5, -82.5], "expected": 66.5}, {"input": [66.5, -82.0], "expected": 66.5}, {"input": [66.5, -81.5], "expected": 66.5}, {"input": [66.5, -81.0], "expected": 66.5}, {"input": [66.5, -80.5], "expected": 66.5}, {"input": [66.5, -80.0], "expected": 66.5}, {"input": [66.5, -79.5], "expected": 66.5}, {"input": [66.5, -79.0], "expected": 66.5}, {"input": [66.5, -78.5], "expected": 66.5}, {"input": [66.5, -78.0], "expected": 66.5}, {"input": [66.5, -77.5], "expected": 66.5}, {"input": [66.5, -77.0], "expected": 66.5}, {"input": [66.5, -76.5], "expected": 66.5}, {"input": [66.5, -76.0], "expected": 66.5}, {"input": [66.5, -75.5], "expected": 66.5}, {"input": [66.5, -75.0], "expected": 66.5}, {"input": [66.5, -74.5], "expected": 66.5}, {"input": [66.5, -74.0], "expected": 66.5}, {"input": [66.5, -73.5], "expected": 66.5}, {"input": [66.5, -73.0], "expected": 66.5}, {"input": [66.5, -72.5], "expected": 66.5}, {"input": [66.5, -72.0], "expected": 66.5}, {"input": [66.5, -71.5], "expected": 66.5}, {"input": [66.5, -71.0], "expected": 66.5}, {"input": [66.5, -70.5], "expected": 66.5}, {"input": [66.5, -70.0], "expected": 66.5}, {"input": [66.5, -69.5], "expected": 66.5}, {"input": [66.5, -69.0], "expected": 66.5}, {"input": [66.5, -68.5], "expected": 66.5}, {"input": [66.5, -68.0], "expected": 66.5}, {"input": [66.5, -67.5], "expected": 66.5}, {"input": [66.5, -67.0], "expected": 66.5}, {"input": [66.5, -66.5], "expected": 66.5}, {"input": [66.5, -66.0], "expected": 66.5}, {"input": [66.5, -65.5], "expected": 66.5}, {"input": [66.5, -65.0], "expected": 66.5}, {"input": [66.5, -64.5], "expected": 66.5}, {"input": [66.5, -64.0], "expected": 66.5}, {"input": [66.5, -63.5], "expected": 66.5}, {"input": [66.5, -63.0], "expected": 66.5}, {"input": [66.5, -62.5], "expected": 66.5}, {"input": [66.5, -62.0], "expected": 66.5}, {"input": [66.5, -61.5], "expected": 66.5}, {"input": [66.5, -61.0], "expected": 66.5}, {"input": [66.5, -60.5], "expected": 66.5}, {"input": [66.5, -60.0], "expected": 66.5}, {"input": [66.5, -59.5], "expected": 66.5}, {"input": [66.5, -59.0], "expected": 66.5}, {"input": [66.5, -58.5], "expected": 66.5}, {"input": [66.5, -58.0], "expected": 66.5}, {"input": [66.5, -57.5], "expected": 66.5}, {"input": [66.5, -57.0], "expected": 66.5}, {"input": [66.5, -56.5], "expected": 66.5}, {"input": [66.5, -56.0], "expected": 66.5}, {"input": [66.5, -55.5], "expected": 66.5}, {"input": [66.5, -55.0], "expected": 66.5}, {"input": [66.5, -54.5], "expected": 66.5}, {"input": [66.5, -54.0], "expected": 66.5}, {"input": [66.5, -53.5], "expected": 66.5}, {"input": [66.5, -53.0], "expected": 66.5}, {"input": [66.5, -52.5], "expected": 66.5}, {"input": [66.5, -52.0], "expected": 66.5}, {"input": [66.5, -51.5], "expected": 66.5}, {"input": [66.5, -51.0], "expected": 66.5}, {"input": [66.5, -50.5], "expected": 66.5}, {"input": [66.5, -50.0], "expected": 66.5}, {"input": [66.5, -49.5], "expected": 66.5}, {"input": [66.5, -49.0], "expected": 66.5}, {"input": [66.5, -48.5], "expected": 66.5}, {"input": [66.5, -48.0], "expected": 66.5}, {"input": [66.5, -47.5], "expected": 66.5}, {"input": [66.5, -47.0], "expected": 66.5}, {"input": [66.5, -46.5], "expected": 66.5}, {"input": [66.5, -46.0], "expected": 66.5}, {"input": [66.5, -45.5], "expected": 66.5}, {"input": [66.5, -45.0], "expected": 66.5}, {"input": [66.5, -44.5], "expected": 66.5}, {"input": [66.5, -44.0], "expected": 66.5}, {"input": [66.5, -43.5], "expected": 66.5}, {"input": [66.5, -43.0], "expected": 66.5}, {"input": [66.5, -42.5], "expected": 66.5}, {"input": [66.5, -42.0], "expected": 66.5}, {"input": [66.5, -41.5], "expected": 66.5}, {"input": [66.5, -41.0], "expected": 66.5}, {"input": [66.5, -40.5], "expected": 66.5}, {"input": [66.5, -40.0], "expected": 66.5}, {"input": [66.5, -39.5], "expected": 66.5}, {"input": [66.5, -39.0], "expected": 66.5}, {"input": [66.5, -38.5], "expected": 66.5}, {"input": [66.5, -38.0], "expected": 66.5}, {"input": [66.5, -37.5], "expected": 66.5}, {"input": [66.5, -37.0], "expected": 66.5}, {"input": [66.5, -36.5], "expected": 66.5}, {"input": [66.5, -36.0], "expected": 66.5}, {"input": [66.5, -35.5], "expected": 66.5}, {"input": [66.5, -35.0], "expected": 66.5}, {"input": [66.5, -34.5], "expected": 66.5}, {"input": [66.5, -34.0], "expected": 66.5}, {"input": [66.5, -33.5], "expected": 66.5}, {"input": [66.5, -33.0], "expected": 66.5}, {"input": [66.5, -32.5], "expected": 66.5}, {"input": [66.5, -32.0], "expected": 66.5}, {"input": [66.5, -31.5], "expected": 66.5}, {"input": [66.5, -31.0], "expected": 66.5}, {"input": [66.5, -30.5], "expected": 66.5}, {"input": [66.5, -30.0], "expected": 66.5}, {"input": [66.5, -29.5], "expected": 66.5}, {"input": [66.5, -29.0], "expected": 66.5}, {"input": [66.5, -28.5], "expected": 66.5}, {"input": [66.5, -28.0], "expected": 66.5}, {"input": [66.5, -27.5], "expected": 66.5}, {"input": [66.5, -27.0], "expected": 66.5}, {"input": [66.5, -26.5], "expected": 66.5}, {"input": [66.5, -26.0], "expected": 66.5}, {"input": [66.5, -25.5], "expected": 66.5}, {"input": [66.5, -25.0], "expected": 66.5}, {"input": [66.5, -24.5], "expected": 66.5}, {"input": [66.5, -24.0], "expected": 66.5}, {"input": [66.5, -23.5], "expected": 66.5}, {"input": [66.5, -23.0], "expected": 66.5}, {"input": [66.5, -22.5], "expected": 66.5}, {"input": [66.5, -22.0], "expected": 66.5}, {"input": [66.5, -21.5], "expected": 66.5}, {"input": [66.5, -21.0], "expected": 66.5}, {"input": [66.5, -20.5], "expected": 66.5}, {"input": [66.5, -20.0], "expected": 66.5}, {"input": [66.5, -19.5], "expected": 66.5}, {"input": [66.5, -19.0], "expected": 66.5}, {"input": [66.5, -18.5], "expected": 66.5}, {"input": [66.5, -18.0], "expected": 66.5}, {"input": [66.5, -17.5], "expected": 66.5}, {"input": [66.5, -17.0], "expected": 66.5}, {"input": [66.5, -16.5], "expected": 66.5}, {"input": [66.5, -16.0], "expected": 66.5}, {"input": [66.5, -15.5], "expected": 66.5}, {"input": [66.5, -15.0], "expected": 66.5}, {"input": [66.5, -14.5], "expected": 66.5}, {"input": [66.5, -14.0], "expected": 66.5}, {"input": [66.5, -13.5], "expected": 66.5}, {"input": [66.5, -13.0], "expected": 66.5}, {"input": [66.5, -12.5], "expected": 66.5}, {"input": [66.5, -12.0], "expected": 66.5}, {"input": [66.5, -11.5], "expected": 66.5}, {"input": [66.5, -11.0], "expected": 66.5}, {"input": [66.5, -10.5], "expected": 66.5}, {"input": [66.5, -10.0], "expected": 66.5}, {"input": [66.5, -9.5], "expected": 66.5}, {"input": [66.5, -9.0], "expected": 66.5}, {"input": [66.5, -8.5], "expected": 66.5}, {"input": [66.5, -8.0], "expected": 66.5}, {"input": [66.5, -7.5], "expected": 66.5}, {"input": [66.5, -7.0], "expected": 66.5}, {"input": [66.5, -6.5], "expected": 66.5}, {"input": [66.5, -6.0], "expected": 66.5}, {"input": [66.5, -5.5], "expected": 66.5}, {"input": [66.5, -5.0], "expected": 66.5}, {"input": [66.5, -4.5], "expected": 66.5}, {"input": [66.5, -4.0], "expected": 66.5}, {"input": [66.5, -3.5], "expected": 66.5}, {"input": [66.5, -3.0], "expected": 66.5}, {"input": [66.5, -2.5], "expected": 66.5}, {"input": [66.5, -2.0], "expected": 66.5}, {"input": [66.5, -1.5], "expected": 66.5}, {"input": [66.5, -1.0], "expected": 66.5}, {"input": [66.5, -0.5], "expected": 66.5}, {"input": [66.5, 0.0], "expected": 66.5}, {"input": [66.5, 0.5], "expected": 66.5}, {"input": [66.5, 1.0], "expected": 66.5}, {"input": [66.5, 1.5], "expected": 66.5}, {"input": [66.5, 2.0], "expected": 66.5}, {"input": [66.5, 2.5], "expected": 66.5}, {"input": [66.5, 3.0], "expected": 66.5}, {"input": [66.5, 3.5], "expected": 66.5}, {"input": [66.5, 4.0], "expected": 66.5}, {"input": [66.5, 4.5], "expected": 66.5}, {"input": [66.5, 5.0], "expected": 66.5}, {"input": [66.5, 5.5], "expected": 66.5}, {"input": [66.5, 6.0], "expected": 66.5}, {"input": [66.5, 6.5], "expected": 66.5}, {"input": [66.5, 7.0], "expected": 66.5}, {"input": [66.5, 7.5], "expected": 66.5}, {"input": [66.5, 8.0], "expected": 66.5}, {"input": [66.5, 8.5], "expected": 66.5}, {"input": [66.5, 9.0], "expected": 66.5}, {"input": [66.5, 9.5], "expected": 66.5}, {"input": [66.5, 10.0], "expected": 66.5}, {"input": [66.5, 10.5], "expected": 66.5}, {"input": [66.5, 11.0], "expected": 66.5}, {"input": [66.5, 11.5], "expected": 66.5}, {"input": [66.5, 12.0], "expected": 66.5}, {"input": [66.5, 12.5], "expected": 66.5}, {"input": [66.5, 13.0], "expected": 66.5}, {"input": [66.5, 13.5], "expected": 66.5}, {"input": [66.5, 14.0], "expected": 66.5}, {"input": [66.5, 14.5], "expected": 66.5}, {"input": [66.5, 15.0], "expected": 66.5}, {"input": [66.5, 15.5], "expected": 66.5}, {"input": [66.5, 16.0], "expected": 66.5}, {"input": [66.5, 16.5], "expected": 66.5}, {"input": [66.5, 17.0], "expected": 66.5}, {"input": [66.5, 17.5], "expected": 66.5}, {"input": [66.5, 18.0], "expected": 66.5}, {"input": [66.5, 18.5], "expected": 66.5}, {"input": [66.5, 19.0], "expected": 66.5}, {"input": [66.5, 19.5], "expected": 66.5}, {"input": [66.5, 20.0], "expected": 66.5}, {"input": [66.5, 20.5], "expected": 66.5}, {"input": [66.5, 21.0], "expected": 66.5}, {"input": [66.5, 21.5], "expected": 66.5}, {"input": [66.5, 22.0], "expected": 66.5}, {"input": [66.5, 22.5], "expected": 66.5}, {"input": [66.5, 23.0], "expected": 66.5}, {"input": [66.5, 23.5], "expected": 66.5}, {"input": [66.5, 24.0], "expected": 66.5}, {"input": [66.5, 24.5], "expected": 66.5}, {"input": [66.5, 25.0], "expected": 66.5}, {"input": [66.5, 25.5], "expected": 66.5}, {"input": [66.5, 26.0], "expected": 66.5}, {"input": [66.5, 26.5], "expected": 66.5}, {"input": [66.5, 27.0], "expected": 66.5}, {"input": [66.5, 27.5], "expected": 66.5}, {"input": [66.5, 28.0], "expected": 66.5}, {"input": [66.5, 28.5], "expected": 66.5}, {"input": [66.5, 29.0], "expected": 66.5}, {"input": [66.5, 29.5], "expected": 66.5}, {"input": [66.5, 30.0], "expected": 66.5}, {"input": [66.5, 30.5], "expected": 66.5}, {"input": [66.5, 31.0], "expected": 66.5}, {"input": [66.5, 31.5], "expected": 66.5}, {"input": [66.5, 32.0], "expected": 66.5}, {"input": [66.5, 32.5], "expected": 66.5}, {"input": [66.5, 33.0], "expected": 66.5}, {"input": [66.5, 33.5], "expected": 66.5}, {"input": [66.5, 34.0], "expected": 66.50000000000001}, {"input": [66.5, 34.5], "expected": 66.50000000000001}, {"input": [66.5, 35.0], "expected": 66.50000000000001}, {"input": [66.5, 35.5], "expected": 66.50000000000003}, {"input": [66.5, 36.0], "expected": 66.50000000000006}, {"input": [66.5, 36.5], "expected": 66.5000000000001}, {"input": [66.5, 37.0], "expected": 66.50000000000016}, {"input": [66.5, 37.5], "expected": 66.50000000000026}, {"input": [66.5, 38.0], "expected": 66.50000000000043}, {"input": [66.5, 38.5], "expected": 66.5000000000007}, {"input": [66.5, 39.0], "expected": 66.50000000000114}, {"input": [66.5, 39.5], "expected": 66.50000000000188}, {"input": [66.5, 40.0], "expected": 66.5000000000031}, {"input": [66.5, 40.5], "expected": 66.50000000000512}, {"input": [66.5, 41.0], "expected": 66.50000000000843}, {"input": [66.5, 41.5], "expected": 66.50000000001388}, {"input": [66.5, 42.0], "expected": 66.5000000000229}, {"input": [66.5, 42.5], "expected": 66.50000000003776}, {"input": [66.5, 43.0], "expected": 66.50000000006224}, {"input": [66.5, 43.5], "expected": 66.50000000010262}, {"input": [66.5, 44.0], "expected": 66.5000000001692}, {"input": [66.5, 44.5], "expected": 66.50000000027894}, {"input": [66.5, 45.0], "expected": 66.5000000004599}, {"input": [66.5, 45.5], "expected": 66.50000000075826}, {"input": [66.5, 46.0], "expected": 66.50000000125016}, {"input": [66.5, 46.5], "expected": 66.50000000206116}, {"input": [66.5, 47.0], "expected": 66.50000000339827}, {"input": [66.5, 47.5], "expected": 66.5000000056028}, {"input": [66.5, 48.0], "expected": 66.50000000923745}, {"input": [66.5, 48.5], "expected": 66.50000001522999}, {"input": [66.5, 49.0], "expected": 66.50000002511}, {"input": [66.5, 49.5], "expected": 66.50000004139937}, {"input": [66.5, 50.0], "expected": 66.50000006825603}, {"input": [66.5, 50.5], "expected": 66.50000011253516}, {"input": [66.5, 51.0], "expected": 66.50000018553912}, {"input": [66.5, 51.5], "expected": 66.50000030590228}, {"input": [66.5, 52.0], "expected": 66.50000050434754}, {"input": [66.5, 52.5], "expected": 66.50000083152837}, {"input": [66.5, 53.0], "expected": 66.50000137095815}, {"input": [66.5, 53.5], "expected": 66.50000226032685}, {"input": [66.5, 54.0], "expected": 66.50000372664623}, {"input": [66.5, 54.5], "expected": 66.50000614419348}, {"input": [66.5, 55.0], "expected": 66.50001013004228}, {"input": [66.5, 55.5], "expected": 66.50001670156132}, {"input": [66.5, 56.0], "expected": 66.50002753607023}, {"input": [66.5, 56.5], "expected": 66.50004539889922}, {"input": [66.5, 57.0], "expected": 66.50007484902864}, {"input": [66.5, 57.5], "expected": 66.50012340218973}, {"input": [66.5, 58.0], "expected": 66.50020344767213}, {"input": [66.5, 58.5], "expected": 66.5003354063729}, {"input": [66.5, 59.0], "expected": 66.50055293147535}, {"input": [66.5, 59.5], "expected": 66.50091146645377}, {"input": [66.5, 60.0], "expected": 66.50150231015975}, {"input": [66.5, 60.5], "expected": 66.50247568513772}, {"input": [66.5, 61.0], "expected": 66.50407844327057}, {"input": [66.5, 61.5], "expected": 66.50671534848912}, {"input": [66.5, 62.0], "expected": 66.5110477448486}, {"input": [66.5, 62.5], "expected": 66.5181499279178}, {"input": [66.5, 63.0], "expected": 66.52975041827263}, {"input": [66.5, 63.5], "expected": 66.54858735157374}, {"input": [66.5, 64.0], "expected": 66.57888973429255}, {"input": [66.5, 64.5], "expected": 66.62692801104298}, {"input": [66.5, 65.0], "expected": 66.70141327798275}, {"input": [66.5, 65.5], "expected": 66.81326168751822}, {"input": [66.5, 66.0], "expected": 66.9740769841801}, {"input": [66.5, 66.5], "expected": 67.19314718055995}, {"input": [66.5, 67.0], "expected": 67.4740769841801}, {"input": [66.5, 67.5], "expected": 67.81326168751822}, {"input": [66.5, 68.0], "expected": 68.20141327798275}, {"input": [66.5, 68.5], "expected": 68.62692801104298}, {"input": [66.5, 69.0], "expected": 69.07888973429255}, {"input": [66.5, 69.5], "expected": 69.54858735157374}, {"input": [66.5, 70.0], "expected": 70.02975041827263}, {"input": [66.5, 70.5], "expected": 70.5181499279178}, {"input": [66.5, 71.0], "expected": 71.0110477448486}, {"input": [66.5, 71.5], "expected": 71.50671534848912}, {"input": [66.5, 72.0], "expected": 72.00407844327057}, {"input": [66.5, 72.5], "expected": 72.50247568513772}, {"input": [66.5, 73.0], "expected": 73.00150231015975}, {"input": [66.5, 73.5], "expected": 73.50091146645377}, {"input": [66.5, 74.0], "expected": 74.00055293147535}, {"input": [66.5, 74.5], "expected": 74.5003354063729}, {"input": [66.5, 75.0], "expected": 75.00020344767213}, {"input": [66.5, 75.5], "expected": 75.50012340218973}, {"input": [66.5, 76.0], "expected": 76.00007484902864}, {"input": [66.5, 76.5], "expected": 76.50004539889922}, {"input": [66.5, 77.0], "expected": 77.00002753607023}, {"input": [66.5, 77.5], "expected": 77.50001670156132}, {"input": [66.5, 78.0], "expected": 78.00001013004228}, {"input": [66.5, 78.5], "expected": 78.50000614419348}, {"input": [66.5, 79.0], "expected": 79.00000372664623}, {"input": [66.5, 79.5], "expected": 79.50000226032685}, {"input": [66.5, 80.0], "expected": 80.00000137095815}, {"input": [66.5, 80.5], "expected": 80.50000083152837}, {"input": [66.5, 81.0], "expected": 81.00000050434754}, {"input": [66.5, 81.5], "expected": 81.50000030590228}, {"input": [66.5, 82.0], "expected": 82.00000018553912}, {"input": [66.5, 82.5], "expected": 82.50000011253516}, {"input": [66.5, 83.0], "expected": 83.00000006825603}, {"input": [66.5, 83.5], "expected": 83.50000004139937}, {"input": [66.5, 84.0], "expected": 84.00000002511}, {"input": [66.5, 84.5], "expected": 84.50000001522999}, {"input": [66.5, 85.0], "expected": 85.00000000923745}, {"input": [66.5, 85.5], "expected": 85.5000000056028}, {"input": [66.5, 86.0], "expected": 86.00000000339827}, {"input": [66.5, 86.5], "expected": 86.50000000206116}, {"input": [66.5, 87.0], "expected": 87.00000000125016}, {"input": [66.5, 87.5], "expected": 87.50000000075826}, {"input": [66.5, 88.0], "expected": 88.0000000004599}, {"input": [66.5, 88.5], "expected": 88.50000000027894}, {"input": [66.5, 89.0], "expected": 89.0000000001692}, {"input": [66.5, 89.5], "expected": 89.50000000010262}, {"input": [66.5, 90.0], "expected": 90.00000000006224}, {"input": [66.5, 90.5], "expected": 90.50000000003776}, {"input": [66.5, 91.0], "expected": 91.0000000000229}, {"input": [66.5, 91.5], "expected": 91.50000000001388}, {"input": [66.5, 92.0], "expected": 92.00000000000843}, {"input": [66.5, 92.5], "expected": 92.50000000000512}, {"input": [66.5, 93.0], "expected": 93.0000000000031}, {"input": [66.5, 93.5], "expected": 93.50000000000188}, {"input": [66.5, 94.0], "expected": 94.00000000000114}, {"input": [66.5, 94.5], "expected": 94.5000000000007}, {"input": [66.5, 95.0], "expected": 95.00000000000043}, {"input": [66.5, 95.5], "expected": 95.50000000000026}, {"input": [66.5, 96.0], "expected": 96.00000000000016}, {"input": [66.5, 96.5], "expected": 96.5000000000001}, {"input": [66.5, 97.0], "expected": 97.00000000000006}, {"input": [66.5, 97.5], "expected": 97.50000000000003}, {"input": [66.5, 98.0], "expected": 98.00000000000001}, {"input": [66.5, 98.5], "expected": 98.50000000000001}, {"input": [66.5, 99.0], "expected": 99.00000000000001}, {"input": [66.5, 99.5], "expected": 99.5}, {"input": [67.0, -100.0], "expected": 67.0}, {"input": [67.0, -99.5], "expected": 67.0}, {"input": [67.0, -99.0], "expected": 67.0}, {"input": [67.0, -98.5], "expected": 67.0}, {"input": [67.0, -98.0], "expected": 67.0}, {"input": [67.0, -97.5], "expected": 67.0}, {"input": [67.0, -97.0], "expected": 67.0}, {"input": [67.0, -96.5], "expected": 67.0}, {"input": [67.0, -96.0], "expected": 67.0}, {"input": [67.0, -95.5], "expected": 67.0}, {"input": [67.0, -95.0], "expected": 67.0}, {"input": [67.0, -94.5], "expected": 67.0}, {"input": [67.0, -94.0], "expected": 67.0}, {"input": [67.0, -93.5], "expected": 67.0}, {"input": [67.0, -93.0], "expected": 67.0}, {"input": [67.0, -92.5], "expected": 67.0}, {"input": [67.0, -92.0], "expected": 67.0}, {"input": [67.0, -91.5], "expected": 67.0}, {"input": [67.0, -91.0], "expected": 67.0}, {"input": [67.0, -90.5], "expected": 67.0}, {"input": [67.0, -90.0], "expected": 67.0}, {"input": [67.0, -89.5], "expected": 67.0}, {"input": [67.0, -89.0], "expected": 67.0}, {"input": [67.0, -88.5], "expected": 67.0}, {"input": [67.0, -88.0], "expected": 67.0}, {"input": [67.0, -87.5], "expected": 67.0}, {"input": [67.0, -87.0], "expected": 67.0}, {"input": [67.0, -86.5], "expected": 67.0}, {"input": [67.0, -86.0], "expected": 67.0}, {"input": [67.0, -85.5], "expected": 67.0}, {"input": [67.0, -85.0], "expected": 67.0}, {"input": [67.0, -84.5], "expected": 67.0}, {"input": [67.0, -84.0], "expected": 67.0}, {"input": [67.0, -83.5], "expected": 67.0}, {"input": [67.0, -83.0], "expected": 67.0}, {"input": [67.0, -82.5], "expected": 67.0}, {"input": [67.0, -82.0], "expected": 67.0}, {"input": [67.0, -81.5], "expected": 67.0}, {"input": [67.0, -81.0], "expected": 67.0}, {"input": [67.0, -80.5], "expected": 67.0}, {"input": [67.0, -80.0], "expected": 67.0}, {"input": [67.0, -79.5], "expected": 67.0}, {"input": [67.0, -79.0], "expected": 67.0}, {"input": [67.0, -78.5], "expected": 67.0}, {"input": [67.0, -78.0], "expected": 67.0}, {"input": [67.0, -77.5], "expected": 67.0}, {"input": [67.0, -77.0], "expected": 67.0}, {"input": [67.0, -76.5], "expected": 67.0}, {"input": [67.0, -76.0], "expected": 67.0}, {"input": [67.0, -75.5], "expected": 67.0}, {"input": [67.0, -75.0], "expected": 67.0}, {"input": [67.0, -74.5], "expected": 67.0}, {"input": [67.0, -74.0], "expected": 67.0}, {"input": [67.0, -73.5], "expected": 67.0}, {"input": [67.0, -73.0], "expected": 67.0}, {"input": [67.0, -72.5], "expected": 67.0}, {"input": [67.0, -72.0], "expected": 67.0}, {"input": [67.0, -71.5], "expected": 67.0}, {"input": [67.0, -71.0], "expected": 67.0}, {"input": [67.0, -70.5], "expected": 67.0}, {"input": [67.0, -70.0], "expected": 67.0}, {"input": [67.0, -69.5], "expected": 67.0}, {"input": [67.0, -69.0], "expected": 67.0}, {"input": [67.0, -68.5], "expected": 67.0}, {"input": [67.0, -68.0], "expected": 67.0}, {"input": [67.0, -67.5], "expected": 67.0}, {"input": [67.0, -67.0], "expected": 67.0}, {"input": [67.0, -66.5], "expected": 67.0}, {"input": [67.0, -66.0], "expected": 67.0}, {"input": [67.0, -65.5], "expected": 67.0}, {"input": [67.0, -65.0], "expected": 67.0}, {"input": [67.0, -64.5], "expected": 67.0}, {"input": [67.0, -64.0], "expected": 67.0}, {"input": [67.0, -63.5], "expected": 67.0}, {"input": [67.0, -63.0], "expected": 67.0}, {"input": [67.0, -62.5], "expected": 67.0}, {"input": [67.0, -62.0], "expected": 67.0}, {"input": [67.0, -61.5], "expected": 67.0}, {"input": [67.0, -61.0], "expected": 67.0}, {"input": [67.0, -60.5], "expected": 67.0}, {"input": [67.0, -60.0], "expected": 67.0}, {"input": [67.0, -59.5], "expected": 67.0}, {"input": [67.0, -59.0], "expected": 67.0}, {"input": [67.0, -58.5], "expected": 67.0}, {"input": [67.0, -58.0], "expected": 67.0}, {"input": [67.0, -57.5], "expected": 67.0}, {"input": [67.0, -57.0], "expected": 67.0}, {"input": [67.0, -56.5], "expected": 67.0}, {"input": [67.0, -56.0], "expected": 67.0}, {"input": [67.0, -55.5], "expected": 67.0}, {"input": [67.0, -55.0], "expected": 67.0}, {"input": [67.0, -54.5], "expected": 67.0}, {"input": [67.0, -54.0], "expected": 67.0}, {"input": [67.0, -53.5], "expected": 67.0}, {"input": [67.0, -53.0], "expected": 67.0}, {"input": [67.0, -52.5], "expected": 67.0}, {"input": [67.0, -52.0], "expected": 67.0}, {"input": [67.0, -51.5], "expected": 67.0}, {"input": [67.0, -51.0], "expected": 67.0}, {"input": [67.0, -50.5], "expected": 67.0}, {"input": [67.0, -50.0], "expected": 67.0}, {"input": [67.0, -49.5], "expected": 67.0}, {"input": [67.0, -49.0], "expected": 67.0}, {"input": [67.0, -48.5], "expected": 67.0}, {"input": [67.0, -48.0], "expected": 67.0}, {"input": [67.0, -47.5], "expected": 67.0}, {"input": [67.0, -47.0], "expected": 67.0}, {"input": [67.0, -46.5], "expected": 67.0}, {"input": [67.0, -46.0], "expected": 67.0}, {"input": [67.0, -45.5], "expected": 67.0}, {"input": [67.0, -45.0], "expected": 67.0}, {"input": [67.0, -44.5], "expected": 67.0}, {"input": [67.0, -44.0], "expected": 67.0}, {"input": [67.0, -43.5], "expected": 67.0}, {"input": [67.0, -43.0], "expected": 67.0}, {"input": [67.0, -42.5], "expected": 67.0}, {"input": [67.0, -42.0], "expected": 67.0}, {"input": [67.0, -41.5], "expected": 67.0}, {"input": [67.0, -41.0], "expected": 67.0}, {"input": [67.0, -40.5], "expected": 67.0}, {"input": [67.0, -40.0], "expected": 67.0}, {"input": [67.0, -39.5], "expected": 67.0}, {"input": [67.0, -39.0], "expected": 67.0}, {"input": [67.0, -38.5], "expected": 67.0}, {"input": [67.0, -38.0], "expected": 67.0}, {"input": [67.0, -37.5], "expected": 67.0}, {"input": [67.0, -37.0], "expected": 67.0}, {"input": [67.0, -36.5], "expected": 67.0}, {"input": [67.0, -36.0], "expected": 67.0}, {"input": [67.0, -35.5], "expected": 67.0}, {"input": [67.0, -35.0], "expected": 67.0}, {"input": [67.0, -34.5], "expected": 67.0}, {"input": [67.0, -34.0], "expected": 67.0}, {"input": [67.0, -33.5], "expected": 67.0}, {"input": [67.0, -33.0], "expected": 67.0}, {"input": [67.0, -32.5], "expected": 67.0}, {"input": [67.0, -32.0], "expected": 67.0}, {"input": [67.0, -31.5], "expected": 67.0}, {"input": [67.0, -31.0], "expected": 67.0}, {"input": [67.0, -30.5], "expected": 67.0}, {"input": [67.0, -30.0], "expected": 67.0}, {"input": [67.0, -29.5], "expected": 67.0}, {"input": [67.0, -29.0], "expected": 67.0}, {"input": [67.0, -28.5], "expected": 67.0}, {"input": [67.0, -28.0], "expected": 67.0}, {"input": [67.0, -27.5], "expected": 67.0}, {"input": [67.0, -27.0], "expected": 67.0}, {"input": [67.0, -26.5], "expected": 67.0}, {"input": [67.0, -26.0], "expected": 67.0}, {"input": [67.0, -25.5], "expected": 67.0}, {"input": [67.0, -25.0], "expected": 67.0}, {"input": [67.0, -24.5], "expected": 67.0}, {"input": [67.0, -24.0], "expected": 67.0}, {"input": [67.0, -23.5], "expected": 67.0}, {"input": [67.0, -23.0], "expected": 67.0}, {"input": [67.0, -22.5], "expected": 67.0}, {"input": [67.0, -22.0], "expected": 67.0}, {"input": [67.0, -21.5], "expected": 67.0}, {"input": [67.0, -21.0], "expected": 67.0}, {"input": [67.0, -20.5], "expected": 67.0}, {"input": [67.0, -20.0], "expected": 67.0}, {"input": [67.0, -19.5], "expected": 67.0}, {"input": [67.0, -19.0], "expected": 67.0}, {"input": [67.0, -18.5], "expected": 67.0}, {"input": [67.0, -18.0], "expected": 67.0}, {"input": [67.0, -17.5], "expected": 67.0}, {"input": [67.0, -17.0], "expected": 67.0}, {"input": [67.0, -16.5], "expected": 67.0}, {"input": [67.0, -16.0], "expected": 67.0}, {"input": [67.0, -15.5], "expected": 67.0}, {"input": [67.0, -15.0], "expected": 67.0}, {"input": [67.0, -14.5], "expected": 67.0}, {"input": [67.0, -14.0], "expected": 67.0}, {"input": [67.0, -13.5], "expected": 67.0}, {"input": [67.0, -13.0], "expected": 67.0}, {"input": [67.0, -12.5], "expected": 67.0}, {"input": [67.0, -12.0], "expected": 67.0}, {"input": [67.0, -11.5], "expected": 67.0}, {"input": [67.0, -11.0], "expected": 67.0}, {"input": [67.0, -10.5], "expected": 67.0}, {"input": [67.0, -10.0], "expected": 67.0}, {"input": [67.0, -9.5], "expected": 67.0}, {"input": [67.0, -9.0], "expected": 67.0}, {"input": [67.0, -8.5], "expected": 67.0}, {"input": [67.0, -8.0], "expected": 67.0}, {"input": [67.0, -7.5], "expected": 67.0}, {"input": [67.0, -7.0], "expected": 67.0}, {"input": [67.0, -6.5], "expected": 67.0}, {"input": [67.0, -6.0], "expected": 67.0}, {"input": [67.0, -5.5], "expected": 67.0}, {"input": [67.0, -5.0], "expected": 67.0}, {"input": [67.0, -4.5], "expected": 67.0}, {"input": [67.0, -4.0], "expected": 67.0}, {"input": [67.0, -3.5], "expected": 67.0}, {"input": [67.0, -3.0], "expected": 67.0}, {"input": [67.0, -2.5], "expected": 67.0}, {"input": [67.0, -2.0], "expected": 67.0}, {"input": [67.0, -1.5], "expected": 67.0}, {"input": [67.0, -1.0], "expected": 67.0}, {"input": [67.0, -0.5], "expected": 67.0}, {"input": [67.0, 0.0], "expected": 67.0}, {"input": [67.0, 0.5], "expected": 67.0}, {"input": [67.0, 1.0], "expected": 67.0}, {"input": [67.0, 1.5], "expected": 67.0}, {"input": [67.0, 2.0], "expected": 67.0}, {"input": [67.0, 2.5], "expected": 67.0}, {"input": [67.0, 3.0], "expected": 67.0}, {"input": [67.0, 3.5], "expected": 67.0}, {"input": [67.0, 4.0], "expected": 67.0}, {"input": [67.0, 4.5], "expected": 67.0}, {"input": [67.0, 5.0], "expected": 67.0}, {"input": [67.0, 5.5], "expected": 67.0}, {"input": [67.0, 6.0], "expected": 67.0}, {"input": [67.0, 6.5], "expected": 67.0}, {"input": [67.0, 7.0], "expected": 67.0}, {"input": [67.0, 7.5], "expected": 67.0}, {"input": [67.0, 8.0], "expected": 67.0}, {"input": [67.0, 8.5], "expected": 67.0}, {"input": [67.0, 9.0], "expected": 67.0}, {"input": [67.0, 9.5], "expected": 67.0}, {"input": [67.0, 10.0], "expected": 67.0}, {"input": [67.0, 10.5], "expected": 67.0}, {"input": [67.0, 11.0], "expected": 67.0}, {"input": [67.0, 11.5], "expected": 67.0}, {"input": [67.0, 12.0], "expected": 67.0}, {"input": [67.0, 12.5], "expected": 67.0}, {"input": [67.0, 13.0], "expected": 67.0}, {"input": [67.0, 13.5], "expected": 67.0}, {"input": [67.0, 14.0], "expected": 67.0}, {"input": [67.0, 14.5], "expected": 67.0}, {"input": [67.0, 15.0], "expected": 67.0}, {"input": [67.0, 15.5], "expected": 67.0}, {"input": [67.0, 16.0], "expected": 67.0}, {"input": [67.0, 16.5], "expected": 67.0}, {"input": [67.0, 17.0], "expected": 67.0}, {"input": [67.0, 17.5], "expected": 67.0}, {"input": [67.0, 18.0], "expected": 67.0}, {"input": [67.0, 18.5], "expected": 67.0}, {"input": [67.0, 19.0], "expected": 67.0}, {"input": [67.0, 19.5], "expected": 67.0}, {"input": [67.0, 20.0], "expected": 67.0}, {"input": [67.0, 20.5], "expected": 67.0}, {"input": [67.0, 21.0], "expected": 67.0}, {"input": [67.0, 21.5], "expected": 67.0}, {"input": [67.0, 22.0], "expected": 67.0}, {"input": [67.0, 22.5], "expected": 67.0}, {"input": [67.0, 23.0], "expected": 67.0}, {"input": [67.0, 23.5], "expected": 67.0}, {"input": [67.0, 24.0], "expected": 67.0}, {"input": [67.0, 24.5], "expected": 67.0}, {"input": [67.0, 25.0], "expected": 67.0}, {"input": [67.0, 25.5], "expected": 67.0}, {"input": [67.0, 26.0], "expected": 67.0}, {"input": [67.0, 26.5], "expected": 67.0}, {"input": [67.0, 27.0], "expected": 67.0}, {"input": [67.0, 27.5], "expected": 67.0}, {"input": [67.0, 28.0], "expected": 67.0}, {"input": [67.0, 28.5], "expected": 67.0}, {"input": [67.0, 29.0], "expected": 67.0}, {"input": [67.0, 29.5], "expected": 67.0}, {"input": [67.0, 30.0], "expected": 67.0}, {"input": [67.0, 30.5], "expected": 67.0}, {"input": [67.0, 31.0], "expected": 67.0}, {"input": [67.0, 31.5], "expected": 67.0}, {"input": [67.0, 32.0], "expected": 67.0}, {"input": [67.0, 32.5], "expected": 67.0}, {"input": [67.0, 33.0], "expected": 67.0}, {"input": [67.0, 33.5], "expected": 67.0}, {"input": [67.0, 34.0], "expected": 67.0}, {"input": [67.0, 34.5], "expected": 67.00000000000001}, {"input": [67.0, 35.0], "expected": 67.00000000000001}, {"input": [67.0, 35.5], "expected": 67.00000000000001}, {"input": [67.0, 36.0], "expected": 67.00000000000003}, {"input": [67.0, 36.5], "expected": 67.00000000000006}, {"input": [67.0, 37.0], "expected": 67.0000000000001}, {"input": [67.0, 37.5], "expected": 67.00000000000016}, {"input": [67.0, 38.0], "expected": 67.00000000000026}, {"input": [67.0, 38.5], "expected": 67.00000000000043}, {"input": [67.0, 39.0], "expected": 67.0000000000007}, {"input": [67.0, 39.5], "expected": 67.00000000000114}, {"input": [67.0, 40.0], "expected": 67.00000000000188}, {"input": [67.0, 40.5], "expected": 67.0000000000031}, {"input": [67.0, 41.0], "expected": 67.00000000000512}, {"input": [67.0, 41.5], "expected": 67.00000000000843}, {"input": [67.0, 42.0], "expected": 67.00000000001388}, {"input": [67.0, 42.5], "expected": 67.0000000000229}, {"input": [67.0, 43.0], "expected": 67.00000000003776}, {"input": [67.0, 43.5], "expected": 67.00000000006224}, {"input": [67.0, 44.0], "expected": 67.00000000010262}, {"input": [67.0, 44.5], "expected": 67.0000000001692}, {"input": [67.0, 45.0], "expected": 67.00000000027894}, {"input": [67.0, 45.5], "expected": 67.0000000004599}, {"input": [67.0, 46.0], "expected": 67.00000000075826}, {"input": [67.0, 46.5], "expected": 67.00000000125016}, {"input": [67.0, 47.0], "expected": 67.00000000206116}, {"input": [67.0, 47.5], "expected": 67.00000000339827}, {"input": [67.0, 48.0], "expected": 67.0000000056028}, {"input": [67.0, 48.5], "expected": 67.00000000923745}, {"input": [67.0, 49.0], "expected": 67.00000001522999}, {"input": [67.0, 49.5], "expected": 67.00000002511}, {"input": [67.0, 50.0], "expected": 67.00000004139937}, {"input": [67.0, 50.5], "expected": 67.00000006825603}, {"input": [67.0, 51.0], "expected": 67.00000011253516}, {"input": [67.0, 51.5], "expected": 67.00000018553912}, {"input": [67.0, 52.0], "expected": 67.00000030590228}, {"input": [67.0, 52.5], "expected": 67.00000050434754}, {"input": [67.0, 53.0], "expected": 67.00000083152837}, {"input": [67.0, 53.5], "expected": 67.00000137095815}, {"input": [67.0, 54.0], "expected": 67.00000226032685}, {"input": [67.0, 54.5], "expected": 67.00000372664623}, {"input": [67.0, 55.0], "expected": 67.00000614419348}, {"input": [67.0, 55.5], "expected": 67.00001013004228}, {"input": [67.0, 56.0], "expected": 67.00001670156132}, {"input": [67.0, 56.5], "expected": 67.00002753607023}, {"input": [67.0, 57.0], "expected": 67.00004539889922}, {"input": [67.0, 57.5], "expected": 67.00007484902864}, {"input": [67.0, 58.0], "expected": 67.00012340218973}, {"input": [67.0, 58.5], "expected": 67.00020344767213}, {"input": [67.0, 59.0], "expected": 67.0003354063729}, {"input": [67.0, 59.5], "expected": 67.00055293147535}, {"input": [67.0, 60.0], "expected": 67.00091146645377}, {"input": [67.0, 60.5], "expected": 67.00150231015975}, {"input": [67.0, 61.0], "expected": 67.00247568513772}, {"input": [67.0, 61.5], "expected": 67.00407844327057}, {"input": [67.0, 62.0], "expected": 67.00671534848912}, {"input": [67.0, 62.5], "expected": 67.0110477448486}, {"input": [67.0, 63.0], "expected": 67.0181499279178}, {"input": [67.0, 63.5], "expected": 67.02975041827263}, {"input": [67.0, 64.0], "expected": 67.04858735157374}, {"input": [67.0, 64.5], "expected": 67.07888973429255}, {"input": [67.0, 65.0], "expected": 67.12692801104298}, {"input": [67.0, 65.5], "expected": 67.20141327798275}, {"input": [67.0, 66.0], "expected": 67.31326168751822}, {"input": [67.0, 66.5], "expected": 67.4740769841801}, {"input": [67.0, 67.0], "expected": 67.69314718055995}, {"input": [67.0, 67.5], "expected": 67.9740769841801}, {"input": [67.0, 68.0], "expected": 68.31326168751822}, {"input": [67.0, 68.5], "expected": 68.70141327798275}, {"input": [67.0, 69.0], "expected": 69.12692801104298}, {"input": [67.0, 69.5], "expected": 69.57888973429255}, {"input": [67.0, 70.0], "expected": 70.04858735157374}, {"input": [67.0, 70.5], "expected": 70.52975041827263}, {"input": [67.0, 71.0], "expected": 71.0181499279178}, {"input": [67.0, 71.5], "expected": 71.5110477448486}, {"input": [67.0, 72.0], "expected": 72.00671534848912}, {"input": [67.0, 72.5], "expected": 72.50407844327057}, {"input": [67.0, 73.0], "expected": 73.00247568513772}, {"input": [67.0, 73.5], "expected": 73.50150231015975}, {"input": [67.0, 74.0], "expected": 74.00091146645377}, {"input": [67.0, 74.5], "expected": 74.50055293147535}, {"input": [67.0, 75.0], "expected": 75.0003354063729}, {"input": [67.0, 75.5], "expected": 75.50020344767213}, {"input": [67.0, 76.0], "expected": 76.00012340218973}, {"input": [67.0, 76.5], "expected": 76.50007484902864}, {"input": [67.0, 77.0], "expected": 77.00004539889922}, {"input": [67.0, 77.5], "expected": 77.50002753607023}, {"input": [67.0, 78.0], "expected": 78.00001670156132}, {"input": [67.0, 78.5], "expected": 78.50001013004228}, {"input": [67.0, 79.0], "expected": 79.00000614419348}, {"input": [67.0, 79.5], "expected": 79.50000372664623}, {"input": [67.0, 80.0], "expected": 80.00000226032685}, {"input": [67.0, 80.5], "expected": 80.50000137095815}, {"input": [67.0, 81.0], "expected": 81.00000083152837}, {"input": [67.0, 81.5], "expected": 81.50000050434754}, {"input": [67.0, 82.0], "expected": 82.00000030590228}, {"input": [67.0, 82.5], "expected": 82.50000018553912}, {"input": [67.0, 83.0], "expected": 83.00000011253516}, {"input": [67.0, 83.5], "expected": 83.50000006825603}, {"input": [67.0, 84.0], "expected": 84.00000004139937}, {"input": [67.0, 84.5], "expected": 84.50000002511}, {"input": [67.0, 85.0], "expected": 85.00000001522999}, {"input": [67.0, 85.5], "expected": 85.50000000923745}, {"input": [67.0, 86.0], "expected": 86.0000000056028}, {"input": [67.0, 86.5], "expected": 86.50000000339827}, {"input": [67.0, 87.0], "expected": 87.00000000206116}, {"input": [67.0, 87.5], "expected": 87.50000000125016}, {"input": [67.0, 88.0], "expected": 88.00000000075826}, {"input": [67.0, 88.5], "expected": 88.5000000004599}, {"input": [67.0, 89.0], "expected": 89.00000000027894}, {"input": [67.0, 89.5], "expected": 89.5000000001692}, {"input": [67.0, 90.0], "expected": 90.00000000010262}, {"input": [67.0, 90.5], "expected": 90.50000000006224}, {"input": [67.0, 91.0], "expected": 91.00000000003776}, {"input": [67.0, 91.5], "expected": 91.5000000000229}, {"input": [67.0, 92.0], "expected": 92.00000000001388}, {"input": [67.0, 92.5], "expected": 92.50000000000843}, {"input": [67.0, 93.0], "expected": 93.00000000000512}, {"input": [67.0, 93.5], "expected": 93.5000000000031}, {"input": [67.0, 94.0], "expected": 94.00000000000188}, {"input": [67.0, 94.5], "expected": 94.50000000000114}, {"input": [67.0, 95.0], "expected": 95.0000000000007}, {"input": [67.0, 95.5], "expected": 95.50000000000043}, {"input": [67.0, 96.0], "expected": 96.00000000000026}, {"input": [67.0, 96.5], "expected": 96.50000000000016}, {"input": [67.0, 97.0], "expected": 97.0000000000001}, {"input": [67.0, 97.5], "expected": 97.50000000000006}, {"input": [67.0, 98.0], "expected": 98.00000000000003}, {"input": [67.0, 98.5], "expected": 98.50000000000001}, {"input": [67.0, 99.0], "expected": 99.00000000000001}, {"input": [67.0, 99.5], "expected": 99.50000000000001}, {"input": [67.5, -100.0], "expected": 67.5}, {"input": [67.5, -99.5], "expected": 67.5}, {"input": [67.5, -99.0], "expected": 67.5}, {"input": [67.5, -98.5], "expected": 67.5}, {"input": [67.5, -98.0], "expected": 67.5}, {"input": [67.5, -97.5], "expected": 67.5}, {"input": [67.5, -97.0], "expected": 67.5}, {"input": [67.5, -96.5], "expected": 67.5}, {"input": [67.5, -96.0], "expected": 67.5}, {"input": [67.5, -95.5], "expected": 67.5}, {"input": [67.5, -95.0], "expected": 67.5}, {"input": [67.5, -94.5], "expected": 67.5}, {"input": [67.5, -94.0], "expected": 67.5}, {"input": [67.5, -93.5], "expected": 67.5}, {"input": [67.5, -93.0], "expected": 67.5}, {"input": [67.5, -92.5], "expected": 67.5}, {"input": [67.5, -92.0], "expected": 67.5}, {"input": [67.5, -91.5], "expected": 67.5}, {"input": [67.5, -91.0], "expected": 67.5}, {"input": [67.5, -90.5], "expected": 67.5}, {"input": [67.5, -90.0], "expected": 67.5}, {"input": [67.5, -89.5], "expected": 67.5}, {"input": [67.5, -89.0], "expected": 67.5}, {"input": [67.5, -88.5], "expected": 67.5}, {"input": [67.5, -88.0], "expected": 67.5}, {"input": [67.5, -87.5], "expected": 67.5}, {"input": [67.5, -87.0], "expected": 67.5}, {"input": [67.5, -86.5], "expected": 67.5}, {"input": [67.5, -86.0], "expected": 67.5}, {"input": [67.5, -85.5], "expected": 67.5}, {"input": [67.5, -85.0], "expected": 67.5}, {"input": [67.5, -84.5], "expected": 67.5}, {"input": [67.5, -84.0], "expected": 67.5}, {"input": [67.5, -83.5], "expected": 67.5}, {"input": [67.5, -83.0], "expected": 67.5}, {"input": [67.5, -82.5], "expected": 67.5}, {"input": [67.5, -82.0], "expected": 67.5}, {"input": [67.5, -81.5], "expected": 67.5}, {"input": [67.5, -81.0], "expected": 67.5}, {"input": [67.5, -80.5], "expected": 67.5}, {"input": [67.5, -80.0], "expected": 67.5}, {"input": [67.5, -79.5], "expected": 67.5}, {"input": [67.5, -79.0], "expected": 67.5}, {"input": [67.5, -78.5], "expected": 67.5}, {"input": [67.5, -78.0], "expected": 67.5}, {"input": [67.5, -77.5], "expected": 67.5}, {"input": [67.5, -77.0], "expected": 67.5}, {"input": [67.5, -76.5], "expected": 67.5}, {"input": [67.5, -76.0], "expected": 67.5}, {"input": [67.5, -75.5], "expected": 67.5}, {"input": [67.5, -75.0], "expected": 67.5}, {"input": [67.5, -74.5], "expected": 67.5}, {"input": [67.5, -74.0], "expected": 67.5}, {"input": [67.5, -73.5], "expected": 67.5}, {"input": [67.5, -73.0], "expected": 67.5}, {"input": [67.5, -72.5], "expected": 67.5}, {"input": [67.5, -72.0], "expected": 67.5}, {"input": [67.5, -71.5], "expected": 67.5}, {"input": [67.5, -71.0], "expected": 67.5}, {"input": [67.5, -70.5], "expected": 67.5}, {"input": [67.5, -70.0], "expected": 67.5}, {"input": [67.5, -69.5], "expected": 67.5}, {"input": [67.5, -69.0], "expected": 67.5}, {"input": [67.5, -68.5], "expected": 67.5}, {"input": [67.5, -68.0], "expected": 67.5}, {"input": [67.5, -67.5], "expected": 67.5}, {"input": [67.5, -67.0], "expected": 67.5}, {"input": [67.5, -66.5], "expected": 67.5}, {"input": [67.5, -66.0], "expected": 67.5}, {"input": [67.5, -65.5], "expected": 67.5}, {"input": [67.5, -65.0], "expected": 67.5}, {"input": [67.5, -64.5], "expected": 67.5}, {"input": [67.5, -64.0], "expected": 67.5}, {"input": [67.5, -63.5], "expected": 67.5}, {"input": [67.5, -63.0], "expected": 67.5}, {"input": [67.5, -62.5], "expected": 67.5}, {"input": [67.5, -62.0], "expected": 67.5}, {"input": [67.5, -61.5], "expected": 67.5}, {"input": [67.5, -61.0], "expected": 67.5}, {"input": [67.5, -60.5], "expected": 67.5}, {"input": [67.5, -60.0], "expected": 67.5}, {"input": [67.5, -59.5], "expected": 67.5}, {"input": [67.5, -59.0], "expected": 67.5}, {"input": [67.5, -58.5], "expected": 67.5}, {"input": [67.5, -58.0], "expected": 67.5}, {"input": [67.5, -57.5], "expected": 67.5}, {"input": [67.5, -57.0], "expected": 67.5}, {"input": [67.5, -56.5], "expected": 67.5}, {"input": [67.5, -56.0], "expected": 67.5}, {"input": [67.5, -55.5], "expected": 67.5}, {"input": [67.5, -55.0], "expected": 67.5}, {"input": [67.5, -54.5], "expected": 67.5}, {"input": [67.5, -54.0], "expected": 67.5}, {"input": [67.5, -53.5], "expected": 67.5}, {"input": [67.5, -53.0], "expected": 67.5}, {"input": [67.5, -52.5], "expected": 67.5}, {"input": [67.5, -52.0], "expected": 67.5}, {"input": [67.5, -51.5], "expected": 67.5}, {"input": [67.5, -51.0], "expected": 67.5}, {"input": [67.5, -50.5], "expected": 67.5}, {"input": [67.5, -50.0], "expected": 67.5}, {"input": [67.5, -49.5], "expected": 67.5}, {"input": [67.5, -49.0], "expected": 67.5}, {"input": [67.5, -48.5], "expected": 67.5}, {"input": [67.5, -48.0], "expected": 67.5}, {"input": [67.5, -47.5], "expected": 67.5}, {"input": [67.5, -47.0], "expected": 67.5}, {"input": [67.5, -46.5], "expected": 67.5}, {"input": [67.5, -46.0], "expected": 67.5}, {"input": [67.5, -45.5], "expected": 67.5}, {"input": [67.5, -45.0], "expected": 67.5}, {"input": [67.5, -44.5], "expected": 67.5}, {"input": [67.5, -44.0], "expected": 67.5}, {"input": [67.5, -43.5], "expected": 67.5}, {"input": [67.5, -43.0], "expected": 67.5}, {"input": [67.5, -42.5], "expected": 67.5}, {"input": [67.5, -42.0], "expected": 67.5}, {"input": [67.5, -41.5], "expected": 67.5}, {"input": [67.5, -41.0], "expected": 67.5}, {"input": [67.5, -40.5], "expected": 67.5}, {"input": [67.5, -40.0], "expected": 67.5}, {"input": [67.5, -39.5], "expected": 67.5}, {"input": [67.5, -39.0], "expected": 67.5}, {"input": [67.5, -38.5], "expected": 67.5}, {"input": [67.5, -38.0], "expected": 67.5}, {"input": [67.5, -37.5], "expected": 67.5}, {"input": [67.5, -37.0], "expected": 67.5}, {"input": [67.5, -36.5], "expected": 67.5}, {"input": [67.5, -36.0], "expected": 67.5}, {"input": [67.5, -35.5], "expected": 67.5}, {"input": [67.5, -35.0], "expected": 67.5}, {"input": [67.5, -34.5], "expected": 67.5}, {"input": [67.5, -34.0], "expected": 67.5}, {"input": [67.5, -33.5], "expected": 67.5}, {"input": [67.5, -33.0], "expected": 67.5}, {"input": [67.5, -32.5], "expected": 67.5}, {"input": [67.5, -32.0], "expected": 67.5}, {"input": [67.5, -31.5], "expected": 67.5}, {"input": [67.5, -31.0], "expected": 67.5}, {"input": [67.5, -30.5], "expected": 67.5}, {"input": [67.5, -30.0], "expected": 67.5}, {"input": [67.5, -29.5], "expected": 67.5}, {"input": [67.5, -29.0], "expected": 67.5}, {"input": [67.5, -28.5], "expected": 67.5}, {"input": [67.5, -28.0], "expected": 67.5}, {"input": [67.5, -27.5], "expected": 67.5}, {"input": [67.5, -27.0], "expected": 67.5}, {"input": [67.5, -26.5], "expected": 67.5}, {"input": [67.5, -26.0], "expected": 67.5}, {"input": [67.5, -25.5], "expected": 67.5}, {"input": [67.5, -25.0], "expected": 67.5}, {"input": [67.5, -24.5], "expected": 67.5}, {"input": [67.5, -24.0], "expected": 67.5}, {"input": [67.5, -23.5], "expected": 67.5}, {"input": [67.5, -23.0], "expected": 67.5}, {"input": [67.5, -22.5], "expected": 67.5}, {"input": [67.5, -22.0], "expected": 67.5}, {"input": [67.5, -21.5], "expected": 67.5}, {"input": [67.5, -21.0], "expected": 67.5}, {"input": [67.5, -20.5], "expected": 67.5}, {"input": [67.5, -20.0], "expected": 67.5}, {"input": [67.5, -19.5], "expected": 67.5}, {"input": [67.5, -19.0], "expected": 67.5}, {"input": [67.5, -18.5], "expected": 67.5}, {"input": [67.5, -18.0], "expected": 67.5}, {"input": [67.5, -17.5], "expected": 67.5}, {"input": [67.5, -17.0], "expected": 67.5}, {"input": [67.5, -16.5], "expected": 67.5}, {"input": [67.5, -16.0], "expected": 67.5}, {"input": [67.5, -15.5], "expected": 67.5}, {"input": [67.5, -15.0], "expected": 67.5}, {"input": [67.5, -14.5], "expected": 67.5}, {"input": [67.5, -14.0], "expected": 67.5}, {"input": [67.5, -13.5], "expected": 67.5}, {"input": [67.5, -13.0], "expected": 67.5}, {"input": [67.5, -12.5], "expected": 67.5}, {"input": [67.5, -12.0], "expected": 67.5}, {"input": [67.5, -11.5], "expected": 67.5}, {"input": [67.5, -11.0], "expected": 67.5}, {"input": [67.5, -10.5], "expected": 67.5}, {"input": [67.5, -10.0], "expected": 67.5}, {"input": [67.5, -9.5], "expected": 67.5}, {"input": [67.5, -9.0], "expected": 67.5}, {"input": [67.5, -8.5], "expected": 67.5}, {"input": [67.5, -8.0], "expected": 67.5}, {"input": [67.5, -7.5], "expected": 67.5}, {"input": [67.5, -7.0], "expected": 67.5}, {"input": [67.5, -6.5], "expected": 67.5}, {"input": [67.5, -6.0], "expected": 67.5}, {"input": [67.5, -5.5], "expected": 67.5}, {"input": [67.5, -5.0], "expected": 67.5}, {"input": [67.5, -4.5], "expected": 67.5}, {"input": [67.5, -4.0], "expected": 67.5}, {"input": [67.5, -3.5], "expected": 67.5}, {"input": [67.5, -3.0], "expected": 67.5}, {"input": [67.5, -2.5], "expected": 67.5}, {"input": [67.5, -2.0], "expected": 67.5}, {"input": [67.5, -1.5], "expected": 67.5}, {"input": [67.5, -1.0], "expected": 67.5}, {"input": [67.5, -0.5], "expected": 67.5}, {"input": [67.5, 0.0], "expected": 67.5}, {"input": [67.5, 0.5], "expected": 67.5}, {"input": [67.5, 1.0], "expected": 67.5}, {"input": [67.5, 1.5], "expected": 67.5}, {"input": [67.5, 2.0], "expected": 67.5}, {"input": [67.5, 2.5], "expected": 67.5}, {"input": [67.5, 3.0], "expected": 67.5}, {"input": [67.5, 3.5], "expected": 67.5}, {"input": [67.5, 4.0], "expected": 67.5}, {"input": [67.5, 4.5], "expected": 67.5}, {"input": [67.5, 5.0], "expected": 67.5}, {"input": [67.5, 5.5], "expected": 67.5}, {"input": [67.5, 6.0], "expected": 67.5}, {"input": [67.5, 6.5], "expected": 67.5}, {"input": [67.5, 7.0], "expected": 67.5}, {"input": [67.5, 7.5], "expected": 67.5}, {"input": [67.5, 8.0], "expected": 67.5}, {"input": [67.5, 8.5], "expected": 67.5}, {"input": [67.5, 9.0], "expected": 67.5}, {"input": [67.5, 9.5], "expected": 67.5}, {"input": [67.5, 10.0], "expected": 67.5}, {"input": [67.5, 10.5], "expected": 67.5}, {"input": [67.5, 11.0], "expected": 67.5}, {"input": [67.5, 11.5], "expected": 67.5}, {"input": [67.5, 12.0], "expected": 67.5}, {"input": [67.5, 12.5], "expected": 67.5}, {"input": [67.5, 13.0], "expected": 67.5}, {"input": [67.5, 13.5], "expected": 67.5}, {"input": [67.5, 14.0], "expected": 67.5}, {"input": [67.5, 14.5], "expected": 67.5}, {"input": [67.5, 15.0], "expected": 67.5}, {"input": [67.5, 15.5], "expected": 67.5}, {"input": [67.5, 16.0], "expected": 67.5}, {"input": [67.5, 16.5], "expected": 67.5}, {"input": [67.5, 17.0], "expected": 67.5}, {"input": [67.5, 17.5], "expected": 67.5}, {"input": [67.5, 18.0], "expected": 67.5}, {"input": [67.5, 18.5], "expected": 67.5}, {"input": [67.5, 19.0], "expected": 67.5}, {"input": [67.5, 19.5], "expected": 67.5}, {"input": [67.5, 20.0], "expected": 67.5}, {"input": [67.5, 20.5], "expected": 67.5}, {"input": [67.5, 21.0], "expected": 67.5}, {"input": [67.5, 21.5], "expected": 67.5}, {"input": [67.5, 22.0], "expected": 67.5}, {"input": [67.5, 22.5], "expected": 67.5}, {"input": [67.5, 23.0], "expected": 67.5}, {"input": [67.5, 23.5], "expected": 67.5}, {"input": [67.5, 24.0], "expected": 67.5}, {"input": [67.5, 24.5], "expected": 67.5}, {"input": [67.5, 25.0], "expected": 67.5}, {"input": [67.5, 25.5], "expected": 67.5}, {"input": [67.5, 26.0], "expected": 67.5}, {"input": [67.5, 26.5], "expected": 67.5}, {"input": [67.5, 27.0], "expected": 67.5}, {"input": [67.5, 27.5], "expected": 67.5}, {"input": [67.5, 28.0], "expected": 67.5}, {"input": [67.5, 28.5], "expected": 67.5}, {"input": [67.5, 29.0], "expected": 67.5}, {"input": [67.5, 29.5], "expected": 67.5}, {"input": [67.5, 30.0], "expected": 67.5}, {"input": [67.5, 30.5], "expected": 67.5}, {"input": [67.5, 31.0], "expected": 67.5}, {"input": [67.5, 31.5], "expected": 67.5}, {"input": [67.5, 32.0], "expected": 67.5}, {"input": [67.5, 32.5], "expected": 67.5}, {"input": [67.5, 33.0], "expected": 67.5}, {"input": [67.5, 33.5], "expected": 67.5}, {"input": [67.5, 34.0], "expected": 67.5}, {"input": [67.5, 34.5], "expected": 67.5}, {"input": [67.5, 35.0], "expected": 67.50000000000001}, {"input": [67.5, 35.5], "expected": 67.50000000000001}, {"input": [67.5, 36.0], "expected": 67.50000000000001}, {"input": [67.5, 36.5], "expected": 67.50000000000003}, {"input": [67.5, 37.0], "expected": 67.50000000000006}, {"input": [67.5, 37.5], "expected": 67.5000000000001}, {"input": [67.5, 38.0], "expected": 67.50000000000016}, {"input": [67.5, 38.5], "expected": 67.50000000000026}, {"input": [67.5, 39.0], "expected": 67.50000000000043}, {"input": [67.5, 39.5], "expected": 67.5000000000007}, {"input": [67.5, 40.0], "expected": 67.50000000000114}, {"input": [67.5, 40.5], "expected": 67.50000000000188}, {"input": [67.5, 41.0], "expected": 67.5000000000031}, {"input": [67.5, 41.5], "expected": 67.50000000000512}, {"input": [67.5, 42.0], "expected": 67.50000000000843}, {"input": [67.5, 42.5], "expected": 67.50000000001388}, {"input": [67.5, 43.0], "expected": 67.5000000000229}, {"input": [67.5, 43.5], "expected": 67.50000000003776}, {"input": [67.5, 44.0], "expected": 67.50000000006224}, {"input": [67.5, 44.5], "expected": 67.50000000010262}, {"input": [67.5, 45.0], "expected": 67.5000000001692}, {"input": [67.5, 45.5], "expected": 67.50000000027894}, {"input": [67.5, 46.0], "expected": 67.5000000004599}, {"input": [67.5, 46.5], "expected": 67.50000000075826}, {"input": [67.5, 47.0], "expected": 67.50000000125016}, {"input": [67.5, 47.5], "expected": 67.50000000206116}, {"input": [67.5, 48.0], "expected": 67.50000000339827}, {"input": [67.5, 48.5], "expected": 67.5000000056028}, {"input": [67.5, 49.0], "expected": 67.50000000923745}, {"input": [67.5, 49.5], "expected": 67.50000001522999}, {"input": [67.5, 50.0], "expected": 67.50000002511}, {"input": [67.5, 50.5], "expected": 67.50000004139937}, {"input": [67.5, 51.0], "expected": 67.50000006825603}, {"input": [67.5, 51.5], "expected": 67.50000011253516}, {"input": [67.5, 52.0], "expected": 67.50000018553912}, {"input": [67.5, 52.5], "expected": 67.50000030590228}, {"input": [67.5, 53.0], "expected": 67.50000050434754}, {"input": [67.5, 53.5], "expected": 67.50000083152837}, {"input": [67.5, 54.0], "expected": 67.50000137095815}, {"input": [67.5, 54.5], "expected": 67.50000226032685}, {"input": [67.5, 55.0], "expected": 67.50000372664623}, {"input": [67.5, 55.5], "expected": 67.50000614419348}, {"input": [67.5, 56.0], "expected": 67.50001013004228}, {"input": [67.5, 56.5], "expected": 67.50001670156132}, {"input": [67.5, 57.0], "expected": 67.50002753607023}, {"input": [67.5, 57.5], "expected": 67.50004539889922}, {"input": [67.5, 58.0], "expected": 67.50007484902864}, {"input": [67.5, 58.5], "expected": 67.50012340218973}, {"input": [67.5, 59.0], "expected": 67.50020344767213}, {"input": [67.5, 59.5], "expected": 67.5003354063729}, {"input": [67.5, 60.0], "expected": 67.50055293147535}, {"input": [67.5, 60.5], "expected": 67.50091146645377}, {"input": [67.5, 61.0], "expected": 67.50150231015975}, {"input": [67.5, 61.5], "expected": 67.50247568513772}, {"input": [67.5, 62.0], "expected": 67.50407844327057}, {"input": [67.5, 62.5], "expected": 67.50671534848912}, {"input": [67.5, 63.0], "expected": 67.5110477448486}, {"input": [67.5, 63.5], "expected": 67.5181499279178}, {"input": [67.5, 64.0], "expected": 67.52975041827263}, {"input": [67.5, 64.5], "expected": 67.54858735157374}, {"input": [67.5, 65.0], "expected": 67.57888973429255}, {"input": [67.5, 65.5], "expected": 67.62692801104298}, {"input": [67.5, 66.0], "expected": 67.70141327798275}, {"input": [67.5, 66.5], "expected": 67.81326168751822}, {"input": [67.5, 67.0], "expected": 67.9740769841801}, {"input": [67.5, 67.5], "expected": 68.19314718055995}, {"input": [67.5, 68.0], "expected": 68.4740769841801}, {"input": [67.5, 68.5], "expected": 68.81326168751822}, {"input": [67.5, 69.0], "expected": 69.20141327798275}, {"input": [67.5, 69.5], "expected": 69.62692801104298}, {"input": [67.5, 70.0], "expected": 70.07888973429255}, {"input": [67.5, 70.5], "expected": 70.54858735157374}, {"input": [67.5, 71.0], "expected": 71.02975041827263}, {"input": [67.5, 71.5], "expected": 71.5181499279178}, {"input": [67.5, 72.0], "expected": 72.0110477448486}, {"input": [67.5, 72.5], "expected": 72.50671534848912}, {"input": [67.5, 73.0], "expected": 73.00407844327057}, {"input": [67.5, 73.5], "expected": 73.50247568513772}, {"input": [67.5, 74.0], "expected": 74.00150231015975}, {"input": [67.5, 74.5], "expected": 74.50091146645377}, {"input": [67.5, 75.0], "expected": 75.00055293147535}, {"input": [67.5, 75.5], "expected": 75.5003354063729}, {"input": [67.5, 76.0], "expected": 76.00020344767213}, {"input": [67.5, 76.5], "expected": 76.50012340218973}, {"input": [67.5, 77.0], "expected": 77.00007484902864}, {"input": [67.5, 77.5], "expected": 77.50004539889922}, {"input": [67.5, 78.0], "expected": 78.00002753607023}, {"input": [67.5, 78.5], "expected": 78.50001670156132}, {"input": [67.5, 79.0], "expected": 79.00001013004228}, {"input": [67.5, 79.5], "expected": 79.50000614419348}, {"input": [67.5, 80.0], "expected": 80.00000372664623}, {"input": [67.5, 80.5], "expected": 80.50000226032685}, {"input": [67.5, 81.0], "expected": 81.00000137095815}, {"input": [67.5, 81.5], "expected": 81.50000083152837}, {"input": [67.5, 82.0], "expected": 82.00000050434754}, {"input": [67.5, 82.5], "expected": 82.50000030590228}, {"input": [67.5, 83.0], "expected": 83.00000018553912}, {"input": [67.5, 83.5], "expected": 83.50000011253516}, {"input": [67.5, 84.0], "expected": 84.00000006825603}, {"input": [67.5, 84.5], "expected": 84.50000004139937}, {"input": [67.5, 85.0], "expected": 85.00000002511}, {"input": [67.5, 85.5], "expected": 85.50000001522999}, {"input": [67.5, 86.0], "expected": 86.00000000923745}, {"input": [67.5, 86.5], "expected": 86.5000000056028}, {"input": [67.5, 87.0], "expected": 87.00000000339827}, {"input": [67.5, 87.5], "expected": 87.50000000206116}, {"input": [67.5, 88.0], "expected": 88.00000000125016}, {"input": [67.5, 88.5], "expected": 88.50000000075826}, {"input": [67.5, 89.0], "expected": 89.0000000004599}, {"input": [67.5, 89.5], "expected": 89.50000000027894}, {"input": [67.5, 90.0], "expected": 90.0000000001692}, {"input": [67.5, 90.5], "expected": 90.50000000010262}, {"input": [67.5, 91.0], "expected": 91.00000000006224}, {"input": [67.5, 91.5], "expected": 91.50000000003776}, {"input": [67.5, 92.0], "expected": 92.0000000000229}, {"input": [67.5, 92.5], "expected": 92.50000000001388}, {"input": [67.5, 93.0], "expected": 93.00000000000843}, {"input": [67.5, 93.5], "expected": 93.50000000000512}, {"input": [67.5, 94.0], "expected": 94.0000000000031}, {"input": [67.5, 94.5], "expected": 94.50000000000188}, {"input": [67.5, 95.0], "expected": 95.00000000000114}, {"input": [67.5, 95.5], "expected": 95.5000000000007}, {"input": [67.5, 96.0], "expected": 96.00000000000043}, {"input": [67.5, 96.5], "expected": 96.50000000000026}, {"input": [67.5, 97.0], "expected": 97.00000000000016}, {"input": [67.5, 97.5], "expected": 97.5000000000001}, {"input": [67.5, 98.0], "expected": 98.00000000000006}, {"input": [67.5, 98.5], "expected": 98.50000000000003}, {"input": [67.5, 99.0], "expected": 99.00000000000001}, {"input": [67.5, 99.5], "expected": 99.50000000000001}, {"input": [68.0, -100.0], "expected": 68.0}, {"input": [68.0, -99.5], "expected": 68.0}, {"input": [68.0, -99.0], "expected": 68.0}, {"input": [68.0, -98.5], "expected": 68.0}, {"input": [68.0, -98.0], "expected": 68.0}, {"input": [68.0, -97.5], "expected": 68.0}, {"input": [68.0, -97.0], "expected": 68.0}, {"input": [68.0, -96.5], "expected": 68.0}, {"input": [68.0, -96.0], "expected": 68.0}, {"input": [68.0, -95.5], "expected": 68.0}, {"input": [68.0, -95.0], "expected": 68.0}, {"input": [68.0, -94.5], "expected": 68.0}, {"input": [68.0, -94.0], "expected": 68.0}, {"input": [68.0, -93.5], "expected": 68.0}, {"input": [68.0, -93.0], "expected": 68.0}, {"input": [68.0, -92.5], "expected": 68.0}, {"input": [68.0, -92.0], "expected": 68.0}, {"input": [68.0, -91.5], "expected": 68.0}, {"input": [68.0, -91.0], "expected": 68.0}, {"input": [68.0, -90.5], "expected": 68.0}, {"input": [68.0, -90.0], "expected": 68.0}, {"input": [68.0, -89.5], "expected": 68.0}, {"input": [68.0, -89.0], "expected": 68.0}, {"input": [68.0, -88.5], "expected": 68.0}, {"input": [68.0, -88.0], "expected": 68.0}, {"input": [68.0, -87.5], "expected": 68.0}, {"input": [68.0, -87.0], "expected": 68.0}, {"input": [68.0, -86.5], "expected": 68.0}, {"input": [68.0, -86.0], "expected": 68.0}, {"input": [68.0, -85.5], "expected": 68.0}, {"input": [68.0, -85.0], "expected": 68.0}, {"input": [68.0, -84.5], "expected": 68.0}, {"input": [68.0, -84.0], "expected": 68.0}, {"input": [68.0, -83.5], "expected": 68.0}, {"input": [68.0, -83.0], "expected": 68.0}, {"input": [68.0, -82.5], "expected": 68.0}, {"input": [68.0, -82.0], "expected": 68.0}, {"input": [68.0, -81.5], "expected": 68.0}, {"input": [68.0, -81.0], "expected": 68.0}, {"input": [68.0, -80.5], "expected": 68.0}, {"input": [68.0, -80.0], "expected": 68.0}, {"input": [68.0, -79.5], "expected": 68.0}, {"input": [68.0, -79.0], "expected": 68.0}, {"input": [68.0, -78.5], "expected": 68.0}, {"input": [68.0, -78.0], "expected": 68.0}, {"input": [68.0, -77.5], "expected": 68.0}, {"input": [68.0, -77.0], "expected": 68.0}, {"input": [68.0, -76.5], "expected": 68.0}, {"input": [68.0, -76.0], "expected": 68.0}, {"input": [68.0, -75.5], "expected": 68.0}, {"input": [68.0, -75.0], "expected": 68.0}, {"input": [68.0, -74.5], "expected": 68.0}, {"input": [68.0, -74.0], "expected": 68.0}, {"input": [68.0, -73.5], "expected": 68.0}, {"input": [68.0, -73.0], "expected": 68.0}, {"input": [68.0, -72.5], "expected": 68.0}, {"input": [68.0, -72.0], "expected": 68.0}, {"input": [68.0, -71.5], "expected": 68.0}, {"input": [68.0, -71.0], "expected": 68.0}, {"input": [68.0, -70.5], "expected": 68.0}, {"input": [68.0, -70.0], "expected": 68.0}, {"input": [68.0, -69.5], "expected": 68.0}, {"input": [68.0, -69.0], "expected": 68.0}, {"input": [68.0, -68.5], "expected": 68.0}, {"input": [68.0, -68.0], "expected": 68.0}, {"input": [68.0, -67.5], "expected": 68.0}, {"input": [68.0, -67.0], "expected": 68.0}, {"input": [68.0, -66.5], "expected": 68.0}, {"input": [68.0, -66.0], "expected": 68.0}, {"input": [68.0, -65.5], "expected": 68.0}, {"input": [68.0, -65.0], "expected": 68.0}, {"input": [68.0, -64.5], "expected": 68.0}, {"input": [68.0, -64.0], "expected": 68.0}, {"input": [68.0, -63.5], "expected": 68.0}, {"input": [68.0, -63.0], "expected": 68.0}, {"input": [68.0, -62.5], "expected": 68.0}, {"input": [68.0, -62.0], "expected": 68.0}, {"input": [68.0, -61.5], "expected": 68.0}, {"input": [68.0, -61.0], "expected": 68.0}, {"input": [68.0, -60.5], "expected": 68.0}, {"input": [68.0, -60.0], "expected": 68.0}, {"input": [68.0, -59.5], "expected": 68.0}, {"input": [68.0, -59.0], "expected": 68.0}, {"input": [68.0, -58.5], "expected": 68.0}, {"input": [68.0, -58.0], "expected": 68.0}, {"input": [68.0, -57.5], "expected": 68.0}, {"input": [68.0, -57.0], "expected": 68.0}, {"input": [68.0, -56.5], "expected": 68.0}, {"input": [68.0, -56.0], "expected": 68.0}, {"input": [68.0, -55.5], "expected": 68.0}, {"input": [68.0, -55.0], "expected": 68.0}, {"input": [68.0, -54.5], "expected": 68.0}, {"input": [68.0, -54.0], "expected": 68.0}, {"input": [68.0, -53.5], "expected": 68.0}, {"input": [68.0, -53.0], "expected": 68.0}, {"input": [68.0, -52.5], "expected": 68.0}, {"input": [68.0, -52.0], "expected": 68.0}, {"input": [68.0, -51.5], "expected": 68.0}, {"input": [68.0, -51.0], "expected": 68.0}, {"input": [68.0, -50.5], "expected": 68.0}, {"input": [68.0, -50.0], "expected": 68.0}, {"input": [68.0, -49.5], "expected": 68.0}, {"input": [68.0, -49.0], "expected": 68.0}, {"input": [68.0, -48.5], "expected": 68.0}, {"input": [68.0, -48.0], "expected": 68.0}, {"input": [68.0, -47.5], "expected": 68.0}, {"input": [68.0, -47.0], "expected": 68.0}, {"input": [68.0, -46.5], "expected": 68.0}, {"input": [68.0, -46.0], "expected": 68.0}, {"input": [68.0, -45.5], "expected": 68.0}, {"input": [68.0, -45.0], "expected": 68.0}, {"input": [68.0, -44.5], "expected": 68.0}, {"input": [68.0, -44.0], "expected": 68.0}, {"input": [68.0, -43.5], "expected": 68.0}, {"input": [68.0, -43.0], "expected": 68.0}, {"input": [68.0, -42.5], "expected": 68.0}, {"input": [68.0, -42.0], "expected": 68.0}, {"input": [68.0, -41.5], "expected": 68.0}, {"input": [68.0, -41.0], "expected": 68.0}, {"input": [68.0, -40.5], "expected": 68.0}, {"input": [68.0, -40.0], "expected": 68.0}, {"input": [68.0, -39.5], "expected": 68.0}, {"input": [68.0, -39.0], "expected": 68.0}, {"input": [68.0, -38.5], "expected": 68.0}, {"input": [68.0, -38.0], "expected": 68.0}, {"input": [68.0, -37.5], "expected": 68.0}, {"input": [68.0, -37.0], "expected": 68.0}, {"input": [68.0, -36.5], "expected": 68.0}, {"input": [68.0, -36.0], "expected": 68.0}, {"input": [68.0, -35.5], "expected": 68.0}, {"input": [68.0, -35.0], "expected": 68.0}, {"input": [68.0, -34.5], "expected": 68.0}, {"input": [68.0, -34.0], "expected": 68.0}, {"input": [68.0, -33.5], "expected": 68.0}, {"input": [68.0, -33.0], "expected": 68.0}, {"input": [68.0, -32.5], "expected": 68.0}, {"input": [68.0, -32.0], "expected": 68.0}, {"input": [68.0, -31.5], "expected": 68.0}, {"input": [68.0, -31.0], "expected": 68.0}, {"input": [68.0, -30.5], "expected": 68.0}, {"input": [68.0, -30.0], "expected": 68.0}, {"input": [68.0, -29.5], "expected": 68.0}, {"input": [68.0, -29.0], "expected": 68.0}, {"input": [68.0, -28.5], "expected": 68.0}, {"input": [68.0, -28.0], "expected": 68.0}, {"input": [68.0, -27.5], "expected": 68.0}, {"input": [68.0, -27.0], "expected": 68.0}, {"input": [68.0, -26.5], "expected": 68.0}, {"input": [68.0, -26.0], "expected": 68.0}, {"input": [68.0, -25.5], "expected": 68.0}, {"input": [68.0, -25.0], "expected": 68.0}, {"input": [68.0, -24.5], "expected": 68.0}, {"input": [68.0, -24.0], "expected": 68.0}, {"input": [68.0, -23.5], "expected": 68.0}, {"input": [68.0, -23.0], "expected": 68.0}, {"input": [68.0, -22.5], "expected": 68.0}, {"input": [68.0, -22.0], "expected": 68.0}, {"input": [68.0, -21.5], "expected": 68.0}, {"input": [68.0, -21.0], "expected": 68.0}, {"input": [68.0, -20.5], "expected": 68.0}, {"input": [68.0, -20.0], "expected": 68.0}, {"input": [68.0, -19.5], "expected": 68.0}, {"input": [68.0, -19.0], "expected": 68.0}, {"input": [68.0, -18.5], "expected": 68.0}, {"input": [68.0, -18.0], "expected": 68.0}, {"input": [68.0, -17.5], "expected": 68.0}, {"input": [68.0, -17.0], "expected": 68.0}, {"input": [68.0, -16.5], "expected": 68.0}, {"input": [68.0, -16.0], "expected": 68.0}, {"input": [68.0, -15.5], "expected": 68.0}, {"input": [68.0, -15.0], "expected": 68.0}, {"input": [68.0, -14.5], "expected": 68.0}, {"input": [68.0, -14.0], "expected": 68.0}, {"input": [68.0, -13.5], "expected": 68.0}, {"input": [68.0, -13.0], "expected": 68.0}, {"input": [68.0, -12.5], "expected": 68.0}, {"input": [68.0, -12.0], "expected": 68.0}, {"input": [68.0, -11.5], "expected": 68.0}, {"input": [68.0, -11.0], "expected": 68.0}, {"input": [68.0, -10.5], "expected": 68.0}, {"input": [68.0, -10.0], "expected": 68.0}, {"input": [68.0, -9.5], "expected": 68.0}, {"input": [68.0, -9.0], "expected": 68.0}, {"input": [68.0, -8.5], "expected": 68.0}, {"input": [68.0, -8.0], "expected": 68.0}, {"input": [68.0, -7.5], "expected": 68.0}, {"input": [68.0, -7.0], "expected": 68.0}, {"input": [68.0, -6.5], "expected": 68.0}, {"input": [68.0, -6.0], "expected": 68.0}, {"input": [68.0, -5.5], "expected": 68.0}, {"input": [68.0, -5.0], "expected": 68.0}, {"input": [68.0, -4.5], "expected": 68.0}, {"input": [68.0, -4.0], "expected": 68.0}, {"input": [68.0, -3.5], "expected": 68.0}, {"input": [68.0, -3.0], "expected": 68.0}, {"input": [68.0, -2.5], "expected": 68.0}, {"input": [68.0, -2.0], "expected": 68.0}, {"input": [68.0, -1.5], "expected": 68.0}, {"input": [68.0, -1.0], "expected": 68.0}, {"input": [68.0, -0.5], "expected": 68.0}, {"input": [68.0, 0.0], "expected": 68.0}, {"input": [68.0, 0.5], "expected": 68.0}, {"input": [68.0, 1.0], "expected": 68.0}, {"input": [68.0, 1.5], "expected": 68.0}, {"input": [68.0, 2.0], "expected": 68.0}, {"input": [68.0, 2.5], "expected": 68.0}, {"input": [68.0, 3.0], "expected": 68.0}, {"input": [68.0, 3.5], "expected": 68.0}, {"input": [68.0, 4.0], "expected": 68.0}, {"input": [68.0, 4.5], "expected": 68.0}, {"input": [68.0, 5.0], "expected": 68.0}, {"input": [68.0, 5.5], "expected": 68.0}, {"input": [68.0, 6.0], "expected": 68.0}, {"input": [68.0, 6.5], "expected": 68.0}, {"input": [68.0, 7.0], "expected": 68.0}, {"input": [68.0, 7.5], "expected": 68.0}, {"input": [68.0, 8.0], "expected": 68.0}, {"input": [68.0, 8.5], "expected": 68.0}, {"input": [68.0, 9.0], "expected": 68.0}, {"input": [68.0, 9.5], "expected": 68.0}, {"input": [68.0, 10.0], "expected": 68.0}, {"input": [68.0, 10.5], "expected": 68.0}, {"input": [68.0, 11.0], "expected": 68.0}, {"input": [68.0, 11.5], "expected": 68.0}, {"input": [68.0, 12.0], "expected": 68.0}, {"input": [68.0, 12.5], "expected": 68.0}, {"input": [68.0, 13.0], "expected": 68.0}, {"input": [68.0, 13.5], "expected": 68.0}, {"input": [68.0, 14.0], "expected": 68.0}, {"input": [68.0, 14.5], "expected": 68.0}, {"input": [68.0, 15.0], "expected": 68.0}, {"input": [68.0, 15.5], "expected": 68.0}, {"input": [68.0, 16.0], "expected": 68.0}, {"input": [68.0, 16.5], "expected": 68.0}, {"input": [68.0, 17.0], "expected": 68.0}, {"input": [68.0, 17.5], "expected": 68.0}, {"input": [68.0, 18.0], "expected": 68.0}, {"input": [68.0, 18.5], "expected": 68.0}, {"input": [68.0, 19.0], "expected": 68.0}, {"input": [68.0, 19.5], "expected": 68.0}, {"input": [68.0, 20.0], "expected": 68.0}, {"input": [68.0, 20.5], "expected": 68.0}, {"input": [68.0, 21.0], "expected": 68.0}, {"input": [68.0, 21.5], "expected": 68.0}, {"input": [68.0, 22.0], "expected": 68.0}, {"input": [68.0, 22.5], "expected": 68.0}, {"input": [68.0, 23.0], "expected": 68.0}, {"input": [68.0, 23.5], "expected": 68.0}, {"input": [68.0, 24.0], "expected": 68.0}, {"input": [68.0, 24.5], "expected": 68.0}, {"input": [68.0, 25.0], "expected": 68.0}, {"input": [68.0, 25.5], "expected": 68.0}, {"input": [68.0, 26.0], "expected": 68.0}, {"input": [68.0, 26.5], "expected": 68.0}, {"input": [68.0, 27.0], "expected": 68.0}, {"input": [68.0, 27.5], "expected": 68.0}, {"input": [68.0, 28.0], "expected": 68.0}, {"input": [68.0, 28.5], "expected": 68.0}, {"input": [68.0, 29.0], "expected": 68.0}, {"input": [68.0, 29.5], "expected": 68.0}, {"input": [68.0, 30.0], "expected": 68.0}, {"input": [68.0, 30.5], "expected": 68.0}, {"input": [68.0, 31.0], "expected": 68.0}, {"input": [68.0, 31.5], "expected": 68.0}, {"input": [68.0, 32.0], "expected": 68.0}, {"input": [68.0, 32.5], "expected": 68.0}, {"input": [68.0, 33.0], "expected": 68.0}, {"input": [68.0, 33.5], "expected": 68.0}, {"input": [68.0, 34.0], "expected": 68.0}, {"input": [68.0, 34.5], "expected": 68.0}, {"input": [68.0, 35.0], "expected": 68.0}, {"input": [68.0, 35.5], "expected": 68.00000000000001}, {"input": [68.0, 36.0], "expected": 68.00000000000001}, {"input": [68.0, 36.5], "expected": 68.00000000000001}, {"input": [68.0, 37.0], "expected": 68.00000000000003}, {"input": [68.0, 37.5], "expected": 68.00000000000006}, {"input": [68.0, 38.0], "expected": 68.0000000000001}, {"input": [68.0, 38.5], "expected": 68.00000000000016}, {"input": [68.0, 39.0], "expected": 68.00000000000026}, {"input": [68.0, 39.5], "expected": 68.00000000000043}, {"input": [68.0, 40.0], "expected": 68.0000000000007}, {"input": [68.0, 40.5], "expected": 68.00000000000114}, {"input": [68.0, 41.0], "expected": 68.00000000000188}, {"input": [68.0, 41.5], "expected": 68.0000000000031}, {"input": [68.0, 42.0], "expected": 68.00000000000512}, {"input": [68.0, 42.5], "expected": 68.00000000000843}, {"input": [68.0, 43.0], "expected": 68.00000000001388}, {"input": [68.0, 43.5], "expected": 68.0000000000229}, {"input": [68.0, 44.0], "expected": 68.00000000003776}, {"input": [68.0, 44.5], "expected": 68.00000000006224}, {"input": [68.0, 45.0], "expected": 68.00000000010262}, {"input": [68.0, 45.5], "expected": 68.0000000001692}, {"input": [68.0, 46.0], "expected": 68.00000000027894}, {"input": [68.0, 46.5], "expected": 68.0000000004599}, {"input": [68.0, 47.0], "expected": 68.00000000075826}, {"input": [68.0, 47.5], "expected": 68.00000000125016}, {"input": [68.0, 48.0], "expected": 68.00000000206116}, {"input": [68.0, 48.5], "expected": 68.00000000339827}, {"input": [68.0, 49.0], "expected": 68.0000000056028}, {"input": [68.0, 49.5], "expected": 68.00000000923745}, {"input": [68.0, 50.0], "expected": 68.00000001522999}, {"input": [68.0, 50.5], "expected": 68.00000002511}, {"input": [68.0, 51.0], "expected": 68.00000004139937}, {"input": [68.0, 51.5], "expected": 68.00000006825603}, {"input": [68.0, 52.0], "expected": 68.00000011253516}, {"input": [68.0, 52.5], "expected": 68.00000018553912}, {"input": [68.0, 53.0], "expected": 68.00000030590228}, {"input": [68.0, 53.5], "expected": 68.00000050434754}, {"input": [68.0, 54.0], "expected": 68.00000083152837}, {"input": [68.0, 54.5], "expected": 68.00000137095815}, {"input": [68.0, 55.0], "expected": 68.00000226032685}, {"input": [68.0, 55.5], "expected": 68.00000372664623}, {"input": [68.0, 56.0], "expected": 68.00000614419348}, {"input": [68.0, 56.5], "expected": 68.00001013004228}, {"input": [68.0, 57.0], "expected": 68.00001670156132}, {"input": [68.0, 57.5], "expected": 68.00002753607023}, {"input": [68.0, 58.0], "expected": 68.00004539889922}, {"input": [68.0, 58.5], "expected": 68.00007484902864}, {"input": [68.0, 59.0], "expected": 68.00012340218973}, {"input": [68.0, 59.5], "expected": 68.00020344767213}, {"input": [68.0, 60.0], "expected": 68.0003354063729}, {"input": [68.0, 60.5], "expected": 68.00055293147535}, {"input": [68.0, 61.0], "expected": 68.00091146645377}, {"input": [68.0, 61.5], "expected": 68.00150231015975}, {"input": [68.0, 62.0], "expected": 68.00247568513772}, {"input": [68.0, 62.5], "expected": 68.00407844327057}, {"input": [68.0, 63.0], "expected": 68.00671534848912}, {"input": [68.0, 63.5], "expected": 68.0110477448486}, {"input": [68.0, 64.0], "expected": 68.0181499279178}, {"input": [68.0, 64.5], "expected": 68.02975041827263}, {"input": [68.0, 65.0], "expected": 68.04858735157374}, {"input": [68.0, 65.5], "expected": 68.07888973429255}, {"input": [68.0, 66.0], "expected": 68.12692801104298}, {"input": [68.0, 66.5], "expected": 68.20141327798275}, {"input": [68.0, 67.0], "expected": 68.31326168751822}, {"input": [68.0, 67.5], "expected": 68.4740769841801}, {"input": [68.0, 68.0], "expected": 68.69314718055995}, {"input": [68.0, 68.5], "expected": 68.9740769841801}, {"input": [68.0, 69.0], "expected": 69.31326168751822}, {"input": [68.0, 69.5], "expected": 69.70141327798275}, {"input": [68.0, 70.0], "expected": 70.12692801104298}, {"input": [68.0, 70.5], "expected": 70.57888973429255}, {"input": [68.0, 71.0], "expected": 71.04858735157374}, {"input": [68.0, 71.5], "expected": 71.52975041827263}, {"input": [68.0, 72.0], "expected": 72.0181499279178}, {"input": [68.0, 72.5], "expected": 72.5110477448486}, {"input": [68.0, 73.0], "expected": 73.00671534848912}, {"input": [68.0, 73.5], "expected": 73.50407844327057}, {"input": [68.0, 74.0], "expected": 74.00247568513772}, {"input": [68.0, 74.5], "expected": 74.50150231015975}, {"input": [68.0, 75.0], "expected": 75.00091146645377}, {"input": [68.0, 75.5], "expected": 75.50055293147535}, {"input": [68.0, 76.0], "expected": 76.0003354063729}, {"input": [68.0, 76.5], "expected": 76.50020344767213}, {"input": [68.0, 77.0], "expected": 77.00012340218973}, {"input": [68.0, 77.5], "expected": 77.50007484902864}, {"input": [68.0, 78.0], "expected": 78.00004539889922}, {"input": [68.0, 78.5], "expected": 78.50002753607023}, {"input": [68.0, 79.0], "expected": 79.00001670156132}, {"input": [68.0, 79.5], "expected": 79.50001013004228}, {"input": [68.0, 80.0], "expected": 80.00000614419348}, {"input": [68.0, 80.5], "expected": 80.50000372664623}, {"input": [68.0, 81.0], "expected": 81.00000226032685}, {"input": [68.0, 81.5], "expected": 81.50000137095815}, {"input": [68.0, 82.0], "expected": 82.00000083152837}, {"input": [68.0, 82.5], "expected": 82.50000050434754}, {"input": [68.0, 83.0], "expected": 83.00000030590228}, {"input": [68.0, 83.5], "expected": 83.50000018553912}, {"input": [68.0, 84.0], "expected": 84.00000011253516}, {"input": [68.0, 84.5], "expected": 84.50000006825603}, {"input": [68.0, 85.0], "expected": 85.00000004139937}, {"input": [68.0, 85.5], "expected": 85.50000002511}, {"input": [68.0, 86.0], "expected": 86.00000001522999}, {"input": [68.0, 86.5], "expected": 86.50000000923745}, {"input": [68.0, 87.0], "expected": 87.0000000056028}, {"input": [68.0, 87.5], "expected": 87.50000000339827}, {"input": [68.0, 88.0], "expected": 88.00000000206116}, {"input": [68.0, 88.5], "expected": 88.50000000125016}, {"input": [68.0, 89.0], "expected": 89.00000000075826}, {"input": [68.0, 89.5], "expected": 89.5000000004599}, {"input": [68.0, 90.0], "expected": 90.00000000027894}, {"input": [68.0, 90.5], "expected": 90.5000000001692}, {"input": [68.0, 91.0], "expected": 91.00000000010262}, {"input": [68.0, 91.5], "expected": 91.50000000006224}, {"input": [68.0, 92.0], "expected": 92.00000000003776}, {"input": [68.0, 92.5], "expected": 92.5000000000229}, {"input": [68.0, 93.0], "expected": 93.00000000001388}, {"input": [68.0, 93.5], "expected": 93.50000000000843}, {"input": [68.0, 94.0], "expected": 94.00000000000512}, {"input": [68.0, 94.5], "expected": 94.5000000000031}, {"input": [68.0, 95.0], "expected": 95.00000000000188}, {"input": [68.0, 95.5], "expected": 95.50000000000114}, {"input": [68.0, 96.0], "expected": 96.0000000000007}, {"input": [68.0, 96.5], "expected": 96.50000000000043}, {"input": [68.0, 97.0], "expected": 97.00000000000026}, {"input": [68.0, 97.5], "expected": 97.50000000000016}, {"input": [68.0, 98.0], "expected": 98.0000000000001}, {"input": [68.0, 98.5], "expected": 98.50000000000006}, {"input": [68.0, 99.0], "expected": 99.00000000000003}, {"input": [68.0, 99.5], "expected": 99.50000000000001}, {"input": [68.5, -100.0], "expected": 68.5}, {"input": [68.5, -99.5], "expected": 68.5}, {"input": [68.5, -99.0], "expected": 68.5}, {"input": [68.5, -98.5], "expected": 68.5}, {"input": [68.5, -98.0], "expected": 68.5}, {"input": [68.5, -97.5], "expected": 68.5}, {"input": [68.5, -97.0], "expected": 68.5}, {"input": [68.5, -96.5], "expected": 68.5}, {"input": [68.5, -96.0], "expected": 68.5}, {"input": [68.5, -95.5], "expected": 68.5}, {"input": [68.5, -95.0], "expected": 68.5}, {"input": [68.5, -94.5], "expected": 68.5}, {"input": [68.5, -94.0], "expected": 68.5}, {"input": [68.5, -93.5], "expected": 68.5}, {"input": [68.5, -93.0], "expected": 68.5}, {"input": [68.5, -92.5], "expected": 68.5}, {"input": [68.5, -92.0], "expected": 68.5}, {"input": [68.5, -91.5], "expected": 68.5}, {"input": [68.5, -91.0], "expected": 68.5}, {"input": [68.5, -90.5], "expected": 68.5}, {"input": [68.5, -90.0], "expected": 68.5}, {"input": [68.5, -89.5], "expected": 68.5}, {"input": [68.5, -89.0], "expected": 68.5}, {"input": [68.5, -88.5], "expected": 68.5}, {"input": [68.5, -88.0], "expected": 68.5}, {"input": [68.5, -87.5], "expected": 68.5}, {"input": [68.5, -87.0], "expected": 68.5}, {"input": [68.5, -86.5], "expected": 68.5}, {"input": [68.5, -86.0], "expected": 68.5}, {"input": [68.5, -85.5], "expected": 68.5}, {"input": [68.5, -85.0], "expected": 68.5}, {"input": [68.5, -84.5], "expected": 68.5}, {"input": [68.5, -84.0], "expected": 68.5}, {"input": [68.5, -83.5], "expected": 68.5}, {"input": [68.5, -83.0], "expected": 68.5}, {"input": [68.5, -82.5], "expected": 68.5}, {"input": [68.5, -82.0], "expected": 68.5}, {"input": [68.5, -81.5], "expected": 68.5}, {"input": [68.5, -81.0], "expected": 68.5}, {"input": [68.5, -80.5], "expected": 68.5}, {"input": [68.5, -80.0], "expected": 68.5}, {"input": [68.5, -79.5], "expected": 68.5}, {"input": [68.5, -79.0], "expected": 68.5}, {"input": [68.5, -78.5], "expected": 68.5}, {"input": [68.5, -78.0], "expected": 68.5}, {"input": [68.5, -77.5], "expected": 68.5}, {"input": [68.5, -77.0], "expected": 68.5}, {"input": [68.5, -76.5], "expected": 68.5}, {"input": [68.5, -76.0], "expected": 68.5}, {"input": [68.5, -75.5], "expected": 68.5}, {"input": [68.5, -75.0], "expected": 68.5}, {"input": [68.5, -74.5], "expected": 68.5}, {"input": [68.5, -74.0], "expected": 68.5}, {"input": [68.5, -73.5], "expected": 68.5}, {"input": [68.5, -73.0], "expected": 68.5}, {"input": [68.5, -72.5], "expected": 68.5}, {"input": [68.5, -72.0], "expected": 68.5}, {"input": [68.5, -71.5], "expected": 68.5}, {"input": [68.5, -71.0], "expected": 68.5}, {"input": [68.5, -70.5], "expected": 68.5}, {"input": [68.5, -70.0], "expected": 68.5}, {"input": [68.5, -69.5], "expected": 68.5}, {"input": [68.5, -69.0], "expected": 68.5}, {"input": [68.5, -68.5], "expected": 68.5}, {"input": [68.5, -68.0], "expected": 68.5}, {"input": [68.5, -67.5], "expected": 68.5}, {"input": [68.5, -67.0], "expected": 68.5}, {"input": [68.5, -66.5], "expected": 68.5}, {"input": [68.5, -66.0], "expected": 68.5}, {"input": [68.5, -65.5], "expected": 68.5}, {"input": [68.5, -65.0], "expected": 68.5}, {"input": [68.5, -64.5], "expected": 68.5}, {"input": [68.5, -64.0], "expected": 68.5}, {"input": [68.5, -63.5], "expected": 68.5}, {"input": [68.5, -63.0], "expected": 68.5}, {"input": [68.5, -62.5], "expected": 68.5}, {"input": [68.5, -62.0], "expected": 68.5}, {"input": [68.5, -61.5], "expected": 68.5}, {"input": [68.5, -61.0], "expected": 68.5}, {"input": [68.5, -60.5], "expected": 68.5}, {"input": [68.5, -60.0], "expected": 68.5}, {"input": [68.5, -59.5], "expected": 68.5}, {"input": [68.5, -59.0], "expected": 68.5}, {"input": [68.5, -58.5], "expected": 68.5}, {"input": [68.5, -58.0], "expected": 68.5}, {"input": [68.5, -57.5], "expected": 68.5}, {"input": [68.5, -57.0], "expected": 68.5}, {"input": [68.5, -56.5], "expected": 68.5}, {"input": [68.5, -56.0], "expected": 68.5}, {"input": [68.5, -55.5], "expected": 68.5}, {"input": [68.5, -55.0], "expected": 68.5}, {"input": [68.5, -54.5], "expected": 68.5}, {"input": [68.5, -54.0], "expected": 68.5}, {"input": [68.5, -53.5], "expected": 68.5}, {"input": [68.5, -53.0], "expected": 68.5}, {"input": [68.5, -52.5], "expected": 68.5}, {"input": [68.5, -52.0], "expected": 68.5}, {"input": [68.5, -51.5], "expected": 68.5}, {"input": [68.5, -51.0], "expected": 68.5}, {"input": [68.5, -50.5], "expected": 68.5}, {"input": [68.5, -50.0], "expected": 68.5}, {"input": [68.5, -49.5], "expected": 68.5}, {"input": [68.5, -49.0], "expected": 68.5}, {"input": [68.5, -48.5], "expected": 68.5}, {"input": [68.5, -48.0], "expected": 68.5}, {"input": [68.5, -47.5], "expected": 68.5}, {"input": [68.5, -47.0], "expected": 68.5}, {"input": [68.5, -46.5], "expected": 68.5}, {"input": [68.5, -46.0], "expected": 68.5}, {"input": [68.5, -45.5], "expected": 68.5}, {"input": [68.5, -45.0], "expected": 68.5}, {"input": [68.5, -44.5], "expected": 68.5}, {"input": [68.5, -44.0], "expected": 68.5}, {"input": [68.5, -43.5], "expected": 68.5}, {"input": [68.5, -43.0], "expected": 68.5}, {"input": [68.5, -42.5], "expected": 68.5}, {"input": [68.5, -42.0], "expected": 68.5}, {"input": [68.5, -41.5], "expected": 68.5}, {"input": [68.5, -41.0], "expected": 68.5}, {"input": [68.5, -40.5], "expected": 68.5}, {"input": [68.5, -40.0], "expected": 68.5}, {"input": [68.5, -39.5], "expected": 68.5}, {"input": [68.5, -39.0], "expected": 68.5}, {"input": [68.5, -38.5], "expected": 68.5}, {"input": [68.5, -38.0], "expected": 68.5}, {"input": [68.5, -37.5], "expected": 68.5}, {"input": [68.5, -37.0], "expected": 68.5}, {"input": [68.5, -36.5], "expected": 68.5}, {"input": [68.5, -36.0], "expected": 68.5}, {"input": [68.5, -35.5], "expected": 68.5}, {"input": [68.5, -35.0], "expected": 68.5}, {"input": [68.5, -34.5], "expected": 68.5}, {"input": [68.5, -34.0], "expected": 68.5}, {"input": [68.5, -33.5], "expected": 68.5}, {"input": [68.5, -33.0], "expected": 68.5}, {"input": [68.5, -32.5], "expected": 68.5}, {"input": [68.5, -32.0], "expected": 68.5}, {"input": [68.5, -31.5], "expected": 68.5}, {"input": [68.5, -31.0], "expected": 68.5}, {"input": [68.5, -30.5], "expected": 68.5}, {"input": [68.5, -30.0], "expected": 68.5}, {"input": [68.5, -29.5], "expected": 68.5}, {"input": [68.5, -29.0], "expected": 68.5}, {"input": [68.5, -28.5], "expected": 68.5}, {"input": [68.5, -28.0], "expected": 68.5}, {"input": [68.5, -27.5], "expected": 68.5}, {"input": [68.5, -27.0], "expected": 68.5}, {"input": [68.5, -26.5], "expected": 68.5}, {"input": [68.5, -26.0], "expected": 68.5}, {"input": [68.5, -25.5], "expected": 68.5}, {"input": [68.5, -25.0], "expected": 68.5}, {"input": [68.5, -24.5], "expected": 68.5}, {"input": [68.5, -24.0], "expected": 68.5}, {"input": [68.5, -23.5], "expected": 68.5}, {"input": [68.5, -23.0], "expected": 68.5}, {"input": [68.5, -22.5], "expected": 68.5}, {"input": [68.5, -22.0], "expected": 68.5}, {"input": [68.5, -21.5], "expected": 68.5}, {"input": [68.5, -21.0], "expected": 68.5}, {"input": [68.5, -20.5], "expected": 68.5}, {"input": [68.5, -20.0], "expected": 68.5}, {"input": [68.5, -19.5], "expected": 68.5}, {"input": [68.5, -19.0], "expected": 68.5}, {"input": [68.5, -18.5], "expected": 68.5}, {"input": [68.5, -18.0], "expected": 68.5}, {"input": [68.5, -17.5], "expected": 68.5}, {"input": [68.5, -17.0], "expected": 68.5}, {"input": [68.5, -16.5], "expected": 68.5}, {"input": [68.5, -16.0], "expected": 68.5}, {"input": [68.5, -15.5], "expected": 68.5}, {"input": [68.5, -15.0], "expected": 68.5}, {"input": [68.5, -14.5], "expected": 68.5}, {"input": [68.5, -14.0], "expected": 68.5}, {"input": [68.5, -13.5], "expected": 68.5}, {"input": [68.5, -13.0], "expected": 68.5}, {"input": [68.5, -12.5], "expected": 68.5}, {"input": [68.5, -12.0], "expected": 68.5}, {"input": [68.5, -11.5], "expected": 68.5}, {"input": [68.5, -11.0], "expected": 68.5}, {"input": [68.5, -10.5], "expected": 68.5}, {"input": [68.5, -10.0], "expected": 68.5}, {"input": [68.5, -9.5], "expected": 68.5}, {"input": [68.5, -9.0], "expected": 68.5}, {"input": [68.5, -8.5], "expected": 68.5}, {"input": [68.5, -8.0], "expected": 68.5}, {"input": [68.5, -7.5], "expected": 68.5}, {"input": [68.5, -7.0], "expected": 68.5}, {"input": [68.5, -6.5], "expected": 68.5}, {"input": [68.5, -6.0], "expected": 68.5}, {"input": [68.5, -5.5], "expected": 68.5}, {"input": [68.5, -5.0], "expected": 68.5}, {"input": [68.5, -4.5], "expected": 68.5}, {"input": [68.5, -4.0], "expected": 68.5}, {"input": [68.5, -3.5], "expected": 68.5}, {"input": [68.5, -3.0], "expected": 68.5}, {"input": [68.5, -2.5], "expected": 68.5}, {"input": [68.5, -2.0], "expected": 68.5}, {"input": [68.5, -1.5], "expected": 68.5}, {"input": [68.5, -1.0], "expected": 68.5}, {"input": [68.5, -0.5], "expected": 68.5}, {"input": [68.5, 0.0], "expected": 68.5}, {"input": [68.5, 0.5], "expected": 68.5}, {"input": [68.5, 1.0], "expected": 68.5}, {"input": [68.5, 1.5], "expected": 68.5}, {"input": [68.5, 2.0], "expected": 68.5}, {"input": [68.5, 2.5], "expected": 68.5}, {"input": [68.5, 3.0], "expected": 68.5}, {"input": [68.5, 3.5], "expected": 68.5}, {"input": [68.5, 4.0], "expected": 68.5}, {"input": [68.5, 4.5], "expected": 68.5}, {"input": [68.5, 5.0], "expected": 68.5}, {"input": [68.5, 5.5], "expected": 68.5}, {"input": [68.5, 6.0], "expected": 68.5}, {"input": [68.5, 6.5], "expected": 68.5}, {"input": [68.5, 7.0], "expected": 68.5}, {"input": [68.5, 7.5], "expected": 68.5}, {"input": [68.5, 8.0], "expected": 68.5}, {"input": [68.5, 8.5], "expected": 68.5}, {"input": [68.5, 9.0], "expected": 68.5}, {"input": [68.5, 9.5], "expected": 68.5}, {"input": [68.5, 10.0], "expected": 68.5}, {"input": [68.5, 10.5], "expected": 68.5}, {"input": [68.5, 11.0], "expected": 68.5}, {"input": [68.5, 11.5], "expected": 68.5}, {"input": [68.5, 12.0], "expected": 68.5}, {"input": [68.5, 12.5], "expected": 68.5}, {"input": [68.5, 13.0], "expected": 68.5}, {"input": [68.5, 13.5], "expected": 68.5}, {"input": [68.5, 14.0], "expected": 68.5}, {"input": [68.5, 14.5], "expected": 68.5}, {"input": [68.5, 15.0], "expected": 68.5}, {"input": [68.5, 15.5], "expected": 68.5}, {"input": [68.5, 16.0], "expected": 68.5}, {"input": [68.5, 16.5], "expected": 68.5}, {"input": [68.5, 17.0], "expected": 68.5}, {"input": [68.5, 17.5], "expected": 68.5}, {"input": [68.5, 18.0], "expected": 68.5}, {"input": [68.5, 18.5], "expected": 68.5}, {"input": [68.5, 19.0], "expected": 68.5}, {"input": [68.5, 19.5], "expected": 68.5}, {"input": [68.5, 20.0], "expected": 68.5}, {"input": [68.5, 20.5], "expected": 68.5}, {"input": [68.5, 21.0], "expected": 68.5}, {"input": [68.5, 21.5], "expected": 68.5}, {"input": [68.5, 22.0], "expected": 68.5}, {"input": [68.5, 22.5], "expected": 68.5}, {"input": [68.5, 23.0], "expected": 68.5}, {"input": [68.5, 23.5], "expected": 68.5}, {"input": [68.5, 24.0], "expected": 68.5}, {"input": [68.5, 24.5], "expected": 68.5}, {"input": [68.5, 25.0], "expected": 68.5}, {"input": [68.5, 25.5], "expected": 68.5}, {"input": [68.5, 26.0], "expected": 68.5}, {"input": [68.5, 26.5], "expected": 68.5}, {"input": [68.5, 27.0], "expected": 68.5}, {"input": [68.5, 27.5], "expected": 68.5}, {"input": [68.5, 28.0], "expected": 68.5}, {"input": [68.5, 28.5], "expected": 68.5}, {"input": [68.5, 29.0], "expected": 68.5}, {"input": [68.5, 29.5], "expected": 68.5}, {"input": [68.5, 30.0], "expected": 68.5}, {"input": [68.5, 30.5], "expected": 68.5}, {"input": [68.5, 31.0], "expected": 68.5}, {"input": [68.5, 31.5], "expected": 68.5}, {"input": [68.5, 32.0], "expected": 68.5}, {"input": [68.5, 32.5], "expected": 68.5}, {"input": [68.5, 33.0], "expected": 68.5}, {"input": [68.5, 33.5], "expected": 68.5}, {"input": [68.5, 34.0], "expected": 68.5}, {"input": [68.5, 34.5], "expected": 68.5}, {"input": [68.5, 35.0], "expected": 68.5}, {"input": [68.5, 35.5], "expected": 68.5}, {"input": [68.5, 36.0], "expected": 68.50000000000001}, {"input": [68.5, 36.5], "expected": 68.50000000000001}, {"input": [68.5, 37.0], "expected": 68.50000000000001}, {"input": [68.5, 37.5], "expected": 68.50000000000003}, {"input": [68.5, 38.0], "expected": 68.50000000000006}, {"input": [68.5, 38.5], "expected": 68.5000000000001}, {"input": [68.5, 39.0], "expected": 68.50000000000016}, {"input": [68.5, 39.5], "expected": 68.50000000000026}, {"input": [68.5, 40.0], "expected": 68.50000000000043}, {"input": [68.5, 40.5], "expected": 68.5000000000007}, {"input": [68.5, 41.0], "expected": 68.50000000000114}, {"input": [68.5, 41.5], "expected": 68.50000000000188}, {"input": [68.5, 42.0], "expected": 68.5000000000031}, {"input": [68.5, 42.5], "expected": 68.50000000000512}, {"input": [68.5, 43.0], "expected": 68.50000000000843}, {"input": [68.5, 43.5], "expected": 68.50000000001388}, {"input": [68.5, 44.0], "expected": 68.5000000000229}, {"input": [68.5, 44.5], "expected": 68.50000000003776}, {"input": [68.5, 45.0], "expected": 68.50000000006224}, {"input": [68.5, 45.5], "expected": 68.50000000010262}, {"input": [68.5, 46.0], "expected": 68.5000000001692}, {"input": [68.5, 46.5], "expected": 68.50000000027894}, {"input": [68.5, 47.0], "expected": 68.5000000004599}, {"input": [68.5, 47.5], "expected": 68.50000000075826}, {"input": [68.5, 48.0], "expected": 68.50000000125016}, {"input": [68.5, 48.5], "expected": 68.50000000206116}, {"input": [68.5, 49.0], "expected": 68.50000000339827}, {"input": [68.5, 49.5], "expected": 68.5000000056028}, {"input": [68.5, 50.0], "expected": 68.50000000923745}, {"input": [68.5, 50.5], "expected": 68.50000001522999}, {"input": [68.5, 51.0], "expected": 68.50000002511}, {"input": [68.5, 51.5], "expected": 68.50000004139937}, {"input": [68.5, 52.0], "expected": 68.50000006825603}, {"input": [68.5, 52.5], "expected": 68.50000011253516}, {"input": [68.5, 53.0], "expected": 68.50000018553912}, {"input": [68.5, 53.5], "expected": 68.50000030590228}, {"input": [68.5, 54.0], "expected": 68.50000050434754}, {"input": [68.5, 54.5], "expected": 68.50000083152837}, {"input": [68.5, 55.0], "expected": 68.50000137095815}, {"input": [68.5, 55.5], "expected": 68.50000226032685}, {"input": [68.5, 56.0], "expected": 68.50000372664623}, {"input": [68.5, 56.5], "expected": 68.50000614419348}, {"input": [68.5, 57.0], "expected": 68.50001013004228}, {"input": [68.5, 57.5], "expected": 68.50001670156132}, {"input": [68.5, 58.0], "expected": 68.50002753607023}, {"input": [68.5, 58.5], "expected": 68.50004539889922}, {"input": [68.5, 59.0], "expected": 68.50007484902864}, {"input": [68.5, 59.5], "expected": 68.50012340218973}, {"input": [68.5, 60.0], "expected": 68.50020344767213}, {"input": [68.5, 60.5], "expected": 68.5003354063729}, {"input": [68.5, 61.0], "expected": 68.50055293147535}, {"input": [68.5, 61.5], "expected": 68.50091146645377}, {"input": [68.5, 62.0], "expected": 68.50150231015975}, {"input": [68.5, 62.5], "expected": 68.50247568513772}, {"input": [68.5, 63.0], "expected": 68.50407844327057}, {"input": [68.5, 63.5], "expected": 68.50671534848912}, {"input": [68.5, 64.0], "expected": 68.5110477448486}, {"input": [68.5, 64.5], "expected": 68.5181499279178}, {"input": [68.5, 65.0], "expected": 68.52975041827263}, {"input": [68.5, 65.5], "expected": 68.54858735157374}, {"input": [68.5, 66.0], "expected": 68.57888973429255}, {"input": [68.5, 66.5], "expected": 68.62692801104298}, {"input": [68.5, 67.0], "expected": 68.70141327798275}, {"input": [68.5, 67.5], "expected": 68.81326168751822}, {"input": [68.5, 68.0], "expected": 68.9740769841801}, {"input": [68.5, 68.5], "expected": 69.19314718055995}, {"input": [68.5, 69.0], "expected": 69.4740769841801}, {"input": [68.5, 69.5], "expected": 69.81326168751822}, {"input": [68.5, 70.0], "expected": 70.20141327798275}, {"input": [68.5, 70.5], "expected": 70.62692801104298}, {"input": [68.5, 71.0], "expected": 71.07888973429255}, {"input": [68.5, 71.5], "expected": 71.54858735157374}, {"input": [68.5, 72.0], "expected": 72.02975041827263}, {"input": [68.5, 72.5], "expected": 72.5181499279178}, {"input": [68.5, 73.0], "expected": 73.0110477448486}, {"input": [68.5, 73.5], "expected": 73.50671534848912}, {"input": [68.5, 74.0], "expected": 74.00407844327057}, {"input": [68.5, 74.5], "expected": 74.50247568513772}, {"input": [68.5, 75.0], "expected": 75.00150231015975}, {"input": [68.5, 75.5], "expected": 75.50091146645377}, {"input": [68.5, 76.0], "expected": 76.00055293147535}, {"input": [68.5, 76.5], "expected": 76.5003354063729}, {"input": [68.5, 77.0], "expected": 77.00020344767213}, {"input": [68.5, 77.5], "expected": 77.50012340218973}, {"input": [68.5, 78.0], "expected": 78.00007484902864}, {"input": [68.5, 78.5], "expected": 78.50004539889922}, {"input": [68.5, 79.0], "expected": 79.00002753607023}, {"input": [68.5, 79.5], "expected": 79.50001670156132}, {"input": [68.5, 80.0], "expected": 80.00001013004228}, {"input": [68.5, 80.5], "expected": 80.50000614419348}, {"input": [68.5, 81.0], "expected": 81.00000372664623}, {"input": [68.5, 81.5], "expected": 81.50000226032685}, {"input": [68.5, 82.0], "expected": 82.00000137095815}, {"input": [68.5, 82.5], "expected": 82.50000083152837}, {"input": [68.5, 83.0], "expected": 83.00000050434754}, {"input": [68.5, 83.5], "expected": 83.50000030590228}, {"input": [68.5, 84.0], "expected": 84.00000018553912}, {"input": [68.5, 84.5], "expected": 84.50000011253516}, {"input": [68.5, 85.0], "expected": 85.00000006825603}, {"input": [68.5, 85.5], "expected": 85.50000004139937}, {"input": [68.5, 86.0], "expected": 86.00000002511}, {"input": [68.5, 86.5], "expected": 86.50000001522999}, {"input": [68.5, 87.0], "expected": 87.00000000923745}, {"input": [68.5, 87.5], "expected": 87.5000000056028}, {"input": [68.5, 88.0], "expected": 88.00000000339827}, {"input": [68.5, 88.5], "expected": 88.50000000206116}, {"input": [68.5, 89.0], "expected": 89.00000000125016}, {"input": [68.5, 89.5], "expected": 89.50000000075826}, {"input": [68.5, 90.0], "expected": 90.0000000004599}, {"input": [68.5, 90.5], "expected": 90.50000000027894}, {"input": [68.5, 91.0], "expected": 91.0000000001692}, {"input": [68.5, 91.5], "expected": 91.50000000010262}, {"input": [68.5, 92.0], "expected": 92.00000000006224}, {"input": [68.5, 92.5], "expected": 92.50000000003776}, {"input": [68.5, 93.0], "expected": 93.0000000000229}, {"input": [68.5, 93.5], "expected": 93.50000000001388}, {"input": [68.5, 94.0], "expected": 94.00000000000843}, {"input": [68.5, 94.5], "expected": 94.50000000000512}, {"input": [68.5, 95.0], "expected": 95.0000000000031}, {"input": [68.5, 95.5], "expected": 95.50000000000188}, {"input": [68.5, 96.0], "expected": 96.00000000000114}, {"input": [68.5, 96.5], "expected": 96.5000000000007}, {"input": [68.5, 97.0], "expected": 97.00000000000043}, {"input": [68.5, 97.5], "expected": 97.50000000000026}, {"input": [68.5, 98.0], "expected": 98.00000000000016}, {"input": [68.5, 98.5], "expected": 98.5000000000001}, {"input": [68.5, 99.0], "expected": 99.00000000000006}, {"input": [68.5, 99.5], "expected": 99.50000000000003}, {"input": [69.0, -100.0], "expected": 69.0}, {"input": [69.0, -99.5], "expected": 69.0}, {"input": [69.0, -99.0], "expected": 69.0}, {"input": [69.0, -98.5], "expected": 69.0}, {"input": [69.0, -98.0], "expected": 69.0}, {"input": [69.0, -97.5], "expected": 69.0}, {"input": [69.0, -97.0], "expected": 69.0}, {"input": [69.0, -96.5], "expected": 69.0}, {"input": [69.0, -96.0], "expected": 69.0}, {"input": [69.0, -95.5], "expected": 69.0}, {"input": [69.0, -95.0], "expected": 69.0}, {"input": [69.0, -94.5], "expected": 69.0}, {"input": [69.0, -94.0], "expected": 69.0}, {"input": [69.0, -93.5], "expected": 69.0}, {"input": [69.0, -93.0], "expected": 69.0}, {"input": [69.0, -92.5], "expected": 69.0}, {"input": [69.0, -92.0], "expected": 69.0}, {"input": [69.0, -91.5], "expected": 69.0}, {"input": [69.0, -91.0], "expected": 69.0}, {"input": [69.0, -90.5], "expected": 69.0}, {"input": [69.0, -90.0], "expected": 69.0}, {"input": [69.0, -89.5], "expected": 69.0}, {"input": [69.0, -89.0], "expected": 69.0}, {"input": [69.0, -88.5], "expected": 69.0}, {"input": [69.0, -88.0], "expected": 69.0}, {"input": [69.0, -87.5], "expected": 69.0}, {"input": [69.0, -87.0], "expected": 69.0}, {"input": [69.0, -86.5], "expected": 69.0}, {"input": [69.0, -86.0], "expected": 69.0}, {"input": [69.0, -85.5], "expected": 69.0}, {"input": [69.0, -85.0], "expected": 69.0}, {"input": [69.0, -84.5], "expected": 69.0}, {"input": [69.0, -84.0], "expected": 69.0}, {"input": [69.0, -83.5], "expected": 69.0}, {"input": [69.0, -83.0], "expected": 69.0}, {"input": [69.0, -82.5], "expected": 69.0}, {"input": [69.0, -82.0], "expected": 69.0}, {"input": [69.0, -81.5], "expected": 69.0}, {"input": [69.0, -81.0], "expected": 69.0}, {"input": [69.0, -80.5], "expected": 69.0}, {"input": [69.0, -80.0], "expected": 69.0}, {"input": [69.0, -79.5], "expected": 69.0}, {"input": [69.0, -79.0], "expected": 69.0}, {"input": [69.0, -78.5], "expected": 69.0}, {"input": [69.0, -78.0], "expected": 69.0}, {"input": [69.0, -77.5], "expected": 69.0}, {"input": [69.0, -77.0], "expected": 69.0}, {"input": [69.0, -76.5], "expected": 69.0}, {"input": [69.0, -76.0], "expected": 69.0}, {"input": [69.0, -75.5], "expected": 69.0}, {"input": [69.0, -75.0], "expected": 69.0}, {"input": [69.0, -74.5], "expected": 69.0}, {"input": [69.0, -74.0], "expected": 69.0}, {"input": [69.0, -73.5], "expected": 69.0}, {"input": [69.0, -73.0], "expected": 69.0}, {"input": [69.0, -72.5], "expected": 69.0}, {"input": [69.0, -72.0], "expected": 69.0}, {"input": [69.0, -71.5], "expected": 69.0}, {"input": [69.0, -71.0], "expected": 69.0}, {"input": [69.0, -70.5], "expected": 69.0}, {"input": [69.0, -70.0], "expected": 69.0}, {"input": [69.0, -69.5], "expected": 69.0}, {"input": [69.0, -69.0], "expected": 69.0}, {"input": [69.0, -68.5], "expected": 69.0}, {"input": [69.0, -68.0], "expected": 69.0}, {"input": [69.0, -67.5], "expected": 69.0}, {"input": [69.0, -67.0], "expected": 69.0}, {"input": [69.0, -66.5], "expected": 69.0}, {"input": [69.0, -66.0], "expected": 69.0}, {"input": [69.0, -65.5], "expected": 69.0}, {"input": [69.0, -65.0], "expected": 69.0}, {"input": [69.0, -64.5], "expected": 69.0}, {"input": [69.0, -64.0], "expected": 69.0}, {"input": [69.0, -63.5], "expected": 69.0}, {"input": [69.0, -63.0], "expected": 69.0}, {"input": [69.0, -62.5], "expected": 69.0}, {"input": [69.0, -62.0], "expected": 69.0}, {"input": [69.0, -61.5], "expected": 69.0}, {"input": [69.0, -61.0], "expected": 69.0}, {"input": [69.0, -60.5], "expected": 69.0}, {"input": [69.0, -60.0], "expected": 69.0}, {"input": [69.0, -59.5], "expected": 69.0}, {"input": [69.0, -59.0], "expected": 69.0}, {"input": [69.0, -58.5], "expected": 69.0}, {"input": [69.0, -58.0], "expected": 69.0}, {"input": [69.0, -57.5], "expected": 69.0}, {"input": [69.0, -57.0], "expected": 69.0}, {"input": [69.0, -56.5], "expected": 69.0}, {"input": [69.0, -56.0], "expected": 69.0}, {"input": [69.0, -55.5], "expected": 69.0}, {"input": [69.0, -55.0], "expected": 69.0}, {"input": [69.0, -54.5], "expected": 69.0}, {"input": [69.0, -54.0], "expected": 69.0}, {"input": [69.0, -53.5], "expected": 69.0}, {"input": [69.0, -53.0], "expected": 69.0}, {"input": [69.0, -52.5], "expected": 69.0}, {"input": [69.0, -52.0], "expected": 69.0}, {"input": [69.0, -51.5], "expected": 69.0}, {"input": [69.0, -51.0], "expected": 69.0}, {"input": [69.0, -50.5], "expected": 69.0}, {"input": [69.0, -50.0], "expected": 69.0}, {"input": [69.0, -49.5], "expected": 69.0}, {"input": [69.0, -49.0], "expected": 69.0}, {"input": [69.0, -48.5], "expected": 69.0}, {"input": [69.0, -48.0], "expected": 69.0}, {"input": [69.0, -47.5], "expected": 69.0}, {"input": [69.0, -47.0], "expected": 69.0}, {"input": [69.0, -46.5], "expected": 69.0}, {"input": [69.0, -46.0], "expected": 69.0}, {"input": [69.0, -45.5], "expected": 69.0}, {"input": [69.0, -45.0], "expected": 69.0}, {"input": [69.0, -44.5], "expected": 69.0}, {"input": [69.0, -44.0], "expected": 69.0}, {"input": [69.0, -43.5], "expected": 69.0}, {"input": [69.0, -43.0], "expected": 69.0}, {"input": [69.0, -42.5], "expected": 69.0}, {"input": [69.0, -42.0], "expected": 69.0}, {"input": [69.0, -41.5], "expected": 69.0}, {"input": [69.0, -41.0], "expected": 69.0}, {"input": [69.0, -40.5], "expected": 69.0}, {"input": [69.0, -40.0], "expected": 69.0}, {"input": [69.0, -39.5], "expected": 69.0}, {"input": [69.0, -39.0], "expected": 69.0}, {"input": [69.0, -38.5], "expected": 69.0}, {"input": [69.0, -38.0], "expected": 69.0}, {"input": [69.0, -37.5], "expected": 69.0}, {"input": [69.0, -37.0], "expected": 69.0}, {"input": [69.0, -36.5], "expected": 69.0}, {"input": [69.0, -36.0], "expected": 69.0}, {"input": [69.0, -35.5], "expected": 69.0}, {"input": [69.0, -35.0], "expected": 69.0}, {"input": [69.0, -34.5], "expected": 69.0}, {"input": [69.0, -34.0], "expected": 69.0}, {"input": [69.0, -33.5], "expected": 69.0}, {"input": [69.0, -33.0], "expected": 69.0}, {"input": [69.0, -32.5], "expected": 69.0}, {"input": [69.0, -32.0], "expected": 69.0}, {"input": [69.0, -31.5], "expected": 69.0}, {"input": [69.0, -31.0], "expected": 69.0}, {"input": [69.0, -30.5], "expected": 69.0}, {"input": [69.0, -30.0], "expected": 69.0}, {"input": [69.0, -29.5], "expected": 69.0}, {"input": [69.0, -29.0], "expected": 69.0}, {"input": [69.0, -28.5], "expected": 69.0}, {"input": [69.0, -28.0], "expected": 69.0}, {"input": [69.0, -27.5], "expected": 69.0}, {"input": [69.0, -27.0], "expected": 69.0}, {"input": [69.0, -26.5], "expected": 69.0}, {"input": [69.0, -26.0], "expected": 69.0}, {"input": [69.0, -25.5], "expected": 69.0}, {"input": [69.0, -25.0], "expected": 69.0}, {"input": [69.0, -24.5], "expected": 69.0}, {"input": [69.0, -24.0], "expected": 69.0}, {"input": [69.0, -23.5], "expected": 69.0}, {"input": [69.0, -23.0], "expected": 69.0}, {"input": [69.0, -22.5], "expected": 69.0}, {"input": [69.0, -22.0], "expected": 69.0}, {"input": [69.0, -21.5], "expected": 69.0}, {"input": [69.0, -21.0], "expected": 69.0}, {"input": [69.0, -20.5], "expected": 69.0}, {"input": [69.0, -20.0], "expected": 69.0}, {"input": [69.0, -19.5], "expected": 69.0}, {"input": [69.0, -19.0], "expected": 69.0}, {"input": [69.0, -18.5], "expected": 69.0}, {"input": [69.0, -18.0], "expected": 69.0}, {"input": [69.0, -17.5], "expected": 69.0}, {"input": [69.0, -17.0], "expected": 69.0}, {"input": [69.0, -16.5], "expected": 69.0}, {"input": [69.0, -16.0], "expected": 69.0}, {"input": [69.0, -15.5], "expected": 69.0}, {"input": [69.0, -15.0], "expected": 69.0}, {"input": [69.0, -14.5], "expected": 69.0}, {"input": [69.0, -14.0], "expected": 69.0}, {"input": [69.0, -13.5], "expected": 69.0}, {"input": [69.0, -13.0], "expected": 69.0}, {"input": [69.0, -12.5], "expected": 69.0}, {"input": [69.0, -12.0], "expected": 69.0}, {"input": [69.0, -11.5], "expected": 69.0}, {"input": [69.0, -11.0], "expected": 69.0}, {"input": [69.0, -10.5], "expected": 69.0}, {"input": [69.0, -10.0], "expected": 69.0}, {"input": [69.0, -9.5], "expected": 69.0}, {"input": [69.0, -9.0], "expected": 69.0}, {"input": [69.0, -8.5], "expected": 69.0}, {"input": [69.0, -8.0], "expected": 69.0}, {"input": [69.0, -7.5], "expected": 69.0}, {"input": [69.0, -7.0], "expected": 69.0}, {"input": [69.0, -6.5], "expected": 69.0}, {"input": [69.0, -6.0], "expected": 69.0}, {"input": [69.0, -5.5], "expected": 69.0}, {"input": [69.0, -5.0], "expected": 69.0}, {"input": [69.0, -4.5], "expected": 69.0}, {"input": [69.0, -4.0], "expected": 69.0}, {"input": [69.0, -3.5], "expected": 69.0}, {"input": [69.0, -3.0], "expected": 69.0}, {"input": [69.0, -2.5], "expected": 69.0}, {"input": [69.0, -2.0], "expected": 69.0}, {"input": [69.0, -1.5], "expected": 69.0}, {"input": [69.0, -1.0], "expected": 69.0}, {"input": [69.0, -0.5], "expected": 69.0}, {"input": [69.0, 0.0], "expected": 69.0}, {"input": [69.0, 0.5], "expected": 69.0}, {"input": [69.0, 1.0], "expected": 69.0}, {"input": [69.0, 1.5], "expected": 69.0}, {"input": [69.0, 2.0], "expected": 69.0}, {"input": [69.0, 2.5], "expected": 69.0}, {"input": [69.0, 3.0], "expected": 69.0}, {"input": [69.0, 3.5], "expected": 69.0}, {"input": [69.0, 4.0], "expected": 69.0}, {"input": [69.0, 4.5], "expected": 69.0}, {"input": [69.0, 5.0], "expected": 69.0}, {"input": [69.0, 5.5], "expected": 69.0}, {"input": [69.0, 6.0], "expected": 69.0}, {"input": [69.0, 6.5], "expected": 69.0}, {"input": [69.0, 7.0], "expected": 69.0}, {"input": [69.0, 7.5], "expected": 69.0}, {"input": [69.0, 8.0], "expected": 69.0}, {"input": [69.0, 8.5], "expected": 69.0}, {"input": [69.0, 9.0], "expected": 69.0}, {"input": [69.0, 9.5], "expected": 69.0}, {"input": [69.0, 10.0], "expected": 69.0}, {"input": [69.0, 10.5], "expected": 69.0}, {"input": [69.0, 11.0], "expected": 69.0}, {"input": [69.0, 11.5], "expected": 69.0}, {"input": [69.0, 12.0], "expected": 69.0}, {"input": [69.0, 12.5], "expected": 69.0}, {"input": [69.0, 13.0], "expected": 69.0}, {"input": [69.0, 13.5], "expected": 69.0}, {"input": [69.0, 14.0], "expected": 69.0}, {"input": [69.0, 14.5], "expected": 69.0}, {"input": [69.0, 15.0], "expected": 69.0}, {"input": [69.0, 15.5], "expected": 69.0}, {"input": [69.0, 16.0], "expected": 69.0}, {"input": [69.0, 16.5], "expected": 69.0}, {"input": [69.0, 17.0], "expected": 69.0}, {"input": [69.0, 17.5], "expected": 69.0}, {"input": [69.0, 18.0], "expected": 69.0}, {"input": [69.0, 18.5], "expected": 69.0}, {"input": [69.0, 19.0], "expected": 69.0}, {"input": [69.0, 19.5], "expected": 69.0}, {"input": [69.0, 20.0], "expected": 69.0}, {"input": [69.0, 20.5], "expected": 69.0}, {"input": [69.0, 21.0], "expected": 69.0}, {"input": [69.0, 21.5], "expected": 69.0}, {"input": [69.0, 22.0], "expected": 69.0}, {"input": [69.0, 22.5], "expected": 69.0}, {"input": [69.0, 23.0], "expected": 69.0}, {"input": [69.0, 23.5], "expected": 69.0}, {"input": [69.0, 24.0], "expected": 69.0}, {"input": [69.0, 24.5], "expected": 69.0}, {"input": [69.0, 25.0], "expected": 69.0}, {"input": [69.0, 25.5], "expected": 69.0}, {"input": [69.0, 26.0], "expected": 69.0}, {"input": [69.0, 26.5], "expected": 69.0}, {"input": [69.0, 27.0], "expected": 69.0}, {"input": [69.0, 27.5], "expected": 69.0}, {"input": [69.0, 28.0], "expected": 69.0}, {"input": [69.0, 28.5], "expected": 69.0}, {"input": [69.0, 29.0], "expected": 69.0}, {"input": [69.0, 29.5], "expected": 69.0}, {"input": [69.0, 30.0], "expected": 69.0}, {"input": [69.0, 30.5], "expected": 69.0}, {"input": [69.0, 31.0], "expected": 69.0}, {"input": [69.0, 31.5], "expected": 69.0}, {"input": [69.0, 32.0], "expected": 69.0}, {"input": [69.0, 32.5], "expected": 69.0}, {"input": [69.0, 33.0], "expected": 69.0}, {"input": [69.0, 33.5], "expected": 69.0}, {"input": [69.0, 34.0], "expected": 69.0}, {"input": [69.0, 34.5], "expected": 69.0}, {"input": [69.0, 35.0], "expected": 69.0}, {"input": [69.0, 35.5], "expected": 69.0}, {"input": [69.0, 36.0], "expected": 69.0}, {"input": [69.0, 36.5], "expected": 69.00000000000001}, {"input": [69.0, 37.0], "expected": 69.00000000000001}, {"input": [69.0, 37.5], "expected": 69.00000000000001}, {"input": [69.0, 38.0], "expected": 69.00000000000003}, {"input": [69.0, 38.5], "expected": 69.00000000000006}, {"input": [69.0, 39.0], "expected": 69.0000000000001}, {"input": [69.0, 39.5], "expected": 69.00000000000016}, {"input": [69.0, 40.0], "expected": 69.00000000000026}, {"input": [69.0, 40.5], "expected": 69.00000000000043}, {"input": [69.0, 41.0], "expected": 69.0000000000007}, {"input": [69.0, 41.5], "expected": 69.00000000000114}, {"input": [69.0, 42.0], "expected": 69.00000000000188}, {"input": [69.0, 42.5], "expected": 69.0000000000031}, {"input": [69.0, 43.0], "expected": 69.00000000000512}, {"input": [69.0, 43.5], "expected": 69.00000000000843}, {"input": [69.0, 44.0], "expected": 69.00000000001388}, {"input": [69.0, 44.5], "expected": 69.0000000000229}, {"input": [69.0, 45.0], "expected": 69.00000000003776}, {"input": [69.0, 45.5], "expected": 69.00000000006224}, {"input": [69.0, 46.0], "expected": 69.00000000010262}, {"input": [69.0, 46.5], "expected": 69.0000000001692}, {"input": [69.0, 47.0], "expected": 69.00000000027894}, {"input": [69.0, 47.5], "expected": 69.0000000004599}, {"input": [69.0, 48.0], "expected": 69.00000000075826}, {"input": [69.0, 48.5], "expected": 69.00000000125016}, {"input": [69.0, 49.0], "expected": 69.00000000206116}, {"input": [69.0, 49.5], "expected": 69.00000000339827}, {"input": [69.0, 50.0], "expected": 69.0000000056028}, {"input": [69.0, 50.5], "expected": 69.00000000923745}, {"input": [69.0, 51.0], "expected": 69.00000001522999}, {"input": [69.0, 51.5], "expected": 69.00000002511}, {"input": [69.0, 52.0], "expected": 69.00000004139937}, {"input": [69.0, 52.5], "expected": 69.00000006825603}, {"input": [69.0, 53.0], "expected": 69.00000011253516}, {"input": [69.0, 53.5], "expected": 69.00000018553912}, {"input": [69.0, 54.0], "expected": 69.00000030590228}, {"input": [69.0, 54.5], "expected": 69.00000050434754}, {"input": [69.0, 55.0], "expected": 69.00000083152837}, {"input": [69.0, 55.5], "expected": 69.00000137095815}, {"input": [69.0, 56.0], "expected": 69.00000226032685}, {"input": [69.0, 56.5], "expected": 69.00000372664623}, {"input": [69.0, 57.0], "expected": 69.00000614419348}, {"input": [69.0, 57.5], "expected": 69.00001013004228}, {"input": [69.0, 58.0], "expected": 69.00001670156132}, {"input": [69.0, 58.5], "expected": 69.00002753607023}, {"input": [69.0, 59.0], "expected": 69.00004539889922}, {"input": [69.0, 59.5], "expected": 69.00007484902864}, {"input": [69.0, 60.0], "expected": 69.00012340218973}, {"input": [69.0, 60.5], "expected": 69.00020344767213}, {"input": [69.0, 61.0], "expected": 69.0003354063729}, {"input": [69.0, 61.5], "expected": 69.00055293147535}, {"input": [69.0, 62.0], "expected": 69.00091146645377}, {"input": [69.0, 62.5], "expected": 69.00150231015975}, {"input": [69.0, 63.0], "expected": 69.00247568513772}, {"input": [69.0, 63.5], "expected": 69.00407844327057}, {"input": [69.0, 64.0], "expected": 69.00671534848912}, {"input": [69.0, 64.5], "expected": 69.0110477448486}, {"input": [69.0, 65.0], "expected": 69.0181499279178}, {"input": [69.0, 65.5], "expected": 69.02975041827263}, {"input": [69.0, 66.0], "expected": 69.04858735157374}, {"input": [69.0, 66.5], "expected": 69.07888973429255}, {"input": [69.0, 67.0], "expected": 69.12692801104298}, {"input": [69.0, 67.5], "expected": 69.20141327798275}, {"input": [69.0, 68.0], "expected": 69.31326168751822}, {"input": [69.0, 68.5], "expected": 69.4740769841801}, {"input": [69.0, 69.0], "expected": 69.69314718055995}, {"input": [69.0, 69.5], "expected": 69.9740769841801}, {"input": [69.0, 70.0], "expected": 70.31326168751822}, {"input": [69.0, 70.5], "expected": 70.70141327798275}, {"input": [69.0, 71.0], "expected": 71.12692801104298}, {"input": [69.0, 71.5], "expected": 71.57888973429255}, {"input": [69.0, 72.0], "expected": 72.04858735157374}, {"input": [69.0, 72.5], "expected": 72.52975041827263}, {"input": [69.0, 73.0], "expected": 73.0181499279178}, {"input": [69.0, 73.5], "expected": 73.5110477448486}, {"input": [69.0, 74.0], "expected": 74.00671534848912}, {"input": [69.0, 74.5], "expected": 74.50407844327057}, {"input": [69.0, 75.0], "expected": 75.00247568513772}, {"input": [69.0, 75.5], "expected": 75.50150231015975}, {"input": [69.0, 76.0], "expected": 76.00091146645377}, {"input": [69.0, 76.5], "expected": 76.50055293147535}, {"input": [69.0, 77.0], "expected": 77.0003354063729}, {"input": [69.0, 77.5], "expected": 77.50020344767213}, {"input": [69.0, 78.0], "expected": 78.00012340218973}, {"input": [69.0, 78.5], "expected": 78.50007484902864}, {"input": [69.0, 79.0], "expected": 79.00004539889922}, {"input": [69.0, 79.5], "expected": 79.50002753607023}, {"input": [69.0, 80.0], "expected": 80.00001670156132}, {"input": [69.0, 80.5], "expected": 80.50001013004228}, {"input": [69.0, 81.0], "expected": 81.00000614419348}, {"input": [69.0, 81.5], "expected": 81.50000372664623}, {"input": [69.0, 82.0], "expected": 82.00000226032685}, {"input": [69.0, 82.5], "expected": 82.50000137095815}, {"input": [69.0, 83.0], "expected": 83.00000083152837}, {"input": [69.0, 83.5], "expected": 83.50000050434754}, {"input": [69.0, 84.0], "expected": 84.00000030590228}, {"input": [69.0, 84.5], "expected": 84.50000018553912}, {"input": [69.0, 85.0], "expected": 85.00000011253516}, {"input": [69.0, 85.5], "expected": 85.50000006825603}, {"input": [69.0, 86.0], "expected": 86.00000004139937}, {"input": [69.0, 86.5], "expected": 86.50000002511}, {"input": [69.0, 87.0], "expected": 87.00000001522999}, {"input": [69.0, 87.5], "expected": 87.50000000923745}, {"input": [69.0, 88.0], "expected": 88.0000000056028}, {"input": [69.0, 88.5], "expected": 88.50000000339827}, {"input": [69.0, 89.0], "expected": 89.00000000206116}, {"input": [69.0, 89.5], "expected": 89.50000000125016}, {"input": [69.0, 90.0], "expected": 90.00000000075826}, {"input": [69.0, 90.5], "expected": 90.5000000004599}, {"input": [69.0, 91.0], "expected": 91.00000000027894}, {"input": [69.0, 91.5], "expected": 91.5000000001692}, {"input": [69.0, 92.0], "expected": 92.00000000010262}, {"input": [69.0, 92.5], "expected": 92.50000000006224}, {"input": [69.0, 93.0], "expected": 93.00000000003776}, {"input": [69.0, 93.5], "expected": 93.5000000000229}, {"input": [69.0, 94.0], "expected": 94.00000000001388}, {"input": [69.0, 94.5], "expected": 94.50000000000843}, {"input": [69.0, 95.0], "expected": 95.00000000000512}, {"input": [69.0, 95.5], "expected": 95.5000000000031}, {"input": [69.0, 96.0], "expected": 96.00000000000188}, {"input": [69.0, 96.5], "expected": 96.50000000000114}, {"input": [69.0, 97.0], "expected": 97.0000000000007}, {"input": [69.0, 97.5], "expected": 97.50000000000043}, {"input": [69.0, 98.0], "expected": 98.00000000000026}, {"input": [69.0, 98.5], "expected": 98.50000000000016}, {"input": [69.0, 99.0], "expected": 99.0000000000001}, {"input": [69.0, 99.5], "expected": 99.50000000000006}, {"input": [69.5, -100.0], "expected": 69.5}, {"input": [69.5, -99.5], "expected": 69.5}, {"input": [69.5, -99.0], "expected": 69.5}, {"input": [69.5, -98.5], "expected": 69.5}, {"input": [69.5, -98.0], "expected": 69.5}, {"input": [69.5, -97.5], "expected": 69.5}, {"input": [69.5, -97.0], "expected": 69.5}, {"input": [69.5, -96.5], "expected": 69.5}, {"input": [69.5, -96.0], "expected": 69.5}, {"input": [69.5, -95.5], "expected": 69.5}, {"input": [69.5, -95.0], "expected": 69.5}, {"input": [69.5, -94.5], "expected": 69.5}, {"input": [69.5, -94.0], "expected": 69.5}, {"input": [69.5, -93.5], "expected": 69.5}, {"input": [69.5, -93.0], "expected": 69.5}, {"input": [69.5, -92.5], "expected": 69.5}, {"input": [69.5, -92.0], "expected": 69.5}, {"input": [69.5, -91.5], "expected": 69.5}, {"input": [69.5, -91.0], "expected": 69.5}, {"input": [69.5, -90.5], "expected": 69.5}, {"input": [69.5, -90.0], "expected": 69.5}, {"input": [69.5, -89.5], "expected": 69.5}, {"input": [69.5, -89.0], "expected": 69.5}, {"input": [69.5, -88.5], "expected": 69.5}, {"input": [69.5, -88.0], "expected": 69.5}, {"input": [69.5, -87.5], "expected": 69.5}, {"input": [69.5, -87.0], "expected": 69.5}, {"input": [69.5, -86.5], "expected": 69.5}, {"input": [69.5, -86.0], "expected": 69.5}, {"input": [69.5, -85.5], "expected": 69.5}, {"input": [69.5, -85.0], "expected": 69.5}, {"input": [69.5, -84.5], "expected": 69.5}, {"input": [69.5, -84.0], "expected": 69.5}, {"input": [69.5, -83.5], "expected": 69.5}, {"input": [69.5, -83.0], "expected": 69.5}, {"input": [69.5, -82.5], "expected": 69.5}, {"input": [69.5, -82.0], "expected": 69.5}, {"input": [69.5, -81.5], "expected": 69.5}, {"input": [69.5, -81.0], "expected": 69.5}, {"input": [69.5, -80.5], "expected": 69.5}, {"input": [69.5, -80.0], "expected": 69.5}, {"input": [69.5, -79.5], "expected": 69.5}, {"input": [69.5, -79.0], "expected": 69.5}, {"input": [69.5, -78.5], "expected": 69.5}, {"input": [69.5, -78.0], "expected": 69.5}, {"input": [69.5, -77.5], "expected": 69.5}, {"input": [69.5, -77.0], "expected": 69.5}, {"input": [69.5, -76.5], "expected": 69.5}, {"input": [69.5, -76.0], "expected": 69.5}, {"input": [69.5, -75.5], "expected": 69.5}, {"input": [69.5, -75.0], "expected": 69.5}, {"input": [69.5, -74.5], "expected": 69.5}, {"input": [69.5, -74.0], "expected": 69.5}, {"input": [69.5, -73.5], "expected": 69.5}, {"input": [69.5, -73.0], "expected": 69.5}, {"input": [69.5, -72.5], "expected": 69.5}, {"input": [69.5, -72.0], "expected": 69.5}, {"input": [69.5, -71.5], "expected": 69.5}, {"input": [69.5, -71.0], "expected": 69.5}, {"input": [69.5, -70.5], "expected": 69.5}, {"input": [69.5, -70.0], "expected": 69.5}, {"input": [69.5, -69.5], "expected": 69.5}, {"input": [69.5, -69.0], "expected": 69.5}, {"input": [69.5, -68.5], "expected": 69.5}, {"input": [69.5, -68.0], "expected": 69.5}, {"input": [69.5, -67.5], "expected": 69.5}, {"input": [69.5, -67.0], "expected": 69.5}, {"input": [69.5, -66.5], "expected": 69.5}, {"input": [69.5, -66.0], "expected": 69.5}, {"input": [69.5, -65.5], "expected": 69.5}, {"input": [69.5, -65.0], "expected": 69.5}, {"input": [69.5, -64.5], "expected": 69.5}, {"input": [69.5, -64.0], "expected": 69.5}, {"input": [69.5, -63.5], "expected": 69.5}, {"input": [69.5, -63.0], "expected": 69.5}, {"input": [69.5, -62.5], "expected": 69.5}, {"input": [69.5, -62.0], "expected": 69.5}, {"input": [69.5, -61.5], "expected": 69.5}, {"input": [69.5, -61.0], "expected": 69.5}, {"input": [69.5, -60.5], "expected": 69.5}, {"input": [69.5, -60.0], "expected": 69.5}, {"input": [69.5, -59.5], "expected": 69.5}, {"input": [69.5, -59.0], "expected": 69.5}, {"input": [69.5, -58.5], "expected": 69.5}, {"input": [69.5, -58.0], "expected": 69.5}, {"input": [69.5, -57.5], "expected": 69.5}, {"input": [69.5, -57.0], "expected": 69.5}, {"input": [69.5, -56.5], "expected": 69.5}, {"input": [69.5, -56.0], "expected": 69.5}, {"input": [69.5, -55.5], "expected": 69.5}, {"input": [69.5, -55.0], "expected": 69.5}, {"input": [69.5, -54.5], "expected": 69.5}, {"input": [69.5, -54.0], "expected": 69.5}, {"input": [69.5, -53.5], "expected": 69.5}, {"input": [69.5, -53.0], "expected": 69.5}, {"input": [69.5, -52.5], "expected": 69.5}, {"input": [69.5, -52.0], "expected": 69.5}, {"input": [69.5, -51.5], "expected": 69.5}, {"input": [69.5, -51.0], "expected": 69.5}, {"input": [69.5, -50.5], "expected": 69.5}, {"input": [69.5, -50.0], "expected": 69.5}, {"input": [69.5, -49.5], "expected": 69.5}, {"input": [69.5, -49.0], "expected": 69.5}, {"input": [69.5, -48.5], "expected": 69.5}, {"input": [69.5, -48.0], "expected": 69.5}, {"input": [69.5, -47.5], "expected": 69.5}, {"input": [69.5, -47.0], "expected": 69.5}, {"input": [69.5, -46.5], "expected": 69.5}, {"input": [69.5, -46.0], "expected": 69.5}, {"input": [69.5, -45.5], "expected": 69.5}, {"input": [69.5, -45.0], "expected": 69.5}, {"input": [69.5, -44.5], "expected": 69.5}, {"input": [69.5, -44.0], "expected": 69.5}, {"input": [69.5, -43.5], "expected": 69.5}, {"input": [69.5, -43.0], "expected": 69.5}, {"input": [69.5, -42.5], "expected": 69.5}, {"input": [69.5, -42.0], "expected": 69.5}, {"input": [69.5, -41.5], "expected": 69.5}, {"input": [69.5, -41.0], "expected": 69.5}, {"input": [69.5, -40.5], "expected": 69.5}, {"input": [69.5, -40.0], "expected": 69.5}, {"input": [69.5, -39.5], "expected": 69.5}, {"input": [69.5, -39.0], "expected": 69.5}, {"input": [69.5, -38.5], "expected": 69.5}, {"input": [69.5, -38.0], "expected": 69.5}, {"input": [69.5, -37.5], "expected": 69.5}, {"input": [69.5, -37.0], "expected": 69.5}, {"input": [69.5, -36.5], "expected": 69.5}, {"input": [69.5, -36.0], "expected": 69.5}, {"input": [69.5, -35.5], "expected": 69.5}, {"input": [69.5, -35.0], "expected": 69.5}, {"input": [69.5, -34.5], "expected": 69.5}, {"input": [69.5, -34.0], "expected": 69.5}, {"input": [69.5, -33.5], "expected": 69.5}, {"input": [69.5, -33.0], "expected": 69.5}, {"input": [69.5, -32.5], "expected": 69.5}, {"input": [69.5, -32.0], "expected": 69.5}, {"input": [69.5, -31.5], "expected": 69.5}, {"input": [69.5, -31.0], "expected": 69.5}, {"input": [69.5, -30.5], "expected": 69.5}, {"input": [69.5, -30.0], "expected": 69.5}, {"input": [69.5, -29.5], "expected": 69.5}, {"input": [69.5, -29.0], "expected": 69.5}, {"input": [69.5, -28.5], "expected": 69.5}, {"input": [69.5, -28.0], "expected": 69.5}, {"input": [69.5, -27.5], "expected": 69.5}, {"input": [69.5, -27.0], "expected": 69.5}, {"input": [69.5, -26.5], "expected": 69.5}, {"input": [69.5, -26.0], "expected": 69.5}, {"input": [69.5, -25.5], "expected": 69.5}, {"input": [69.5, -25.0], "expected": 69.5}, {"input": [69.5, -24.5], "expected": 69.5}, {"input": [69.5, -24.0], "expected": 69.5}, {"input": [69.5, -23.5], "expected": 69.5}, {"input": [69.5, -23.0], "expected": 69.5}, {"input": [69.5, -22.5], "expected": 69.5}, {"input": [69.5, -22.0], "expected": 69.5}, {"input": [69.5, -21.5], "expected": 69.5}, {"input": [69.5, -21.0], "expected": 69.5}, {"input": [69.5, -20.5], "expected": 69.5}, {"input": [69.5, -20.0], "expected": 69.5}, {"input": [69.5, -19.5], "expected": 69.5}, {"input": [69.5, -19.0], "expected": 69.5}, {"input": [69.5, -18.5], "expected": 69.5}, {"input": [69.5, -18.0], "expected": 69.5}, {"input": [69.5, -17.5], "expected": 69.5}, {"input": [69.5, -17.0], "expected": 69.5}, {"input": [69.5, -16.5], "expected": 69.5}, {"input": [69.5, -16.0], "expected": 69.5}, {"input": [69.5, -15.5], "expected": 69.5}, {"input": [69.5, -15.0], "expected": 69.5}, {"input": [69.5, -14.5], "expected": 69.5}, {"input": [69.5, -14.0], "expected": 69.5}, {"input": [69.5, -13.5], "expected": 69.5}, {"input": [69.5, -13.0], "expected": 69.5}, {"input": [69.5, -12.5], "expected": 69.5}, {"input": [69.5, -12.0], "expected": 69.5}, {"input": [69.5, -11.5], "expected": 69.5}, {"input": [69.5, -11.0], "expected": 69.5}, {"input": [69.5, -10.5], "expected": 69.5}, {"input": [69.5, -10.0], "expected": 69.5}, {"input": [69.5, -9.5], "expected": 69.5}, {"input": [69.5, -9.0], "expected": 69.5}, {"input": [69.5, -8.5], "expected": 69.5}, {"input": [69.5, -8.0], "expected": 69.5}, {"input": [69.5, -7.5], "expected": 69.5}, {"input": [69.5, -7.0], "expected": 69.5}, {"input": [69.5, -6.5], "expected": 69.5}, {"input": [69.5, -6.0], "expected": 69.5}, {"input": [69.5, -5.5], "expected": 69.5}, {"input": [69.5, -5.0], "expected": 69.5}, {"input": [69.5, -4.5], "expected": 69.5}, {"input": [69.5, -4.0], "expected": 69.5}, {"input": [69.5, -3.5], "expected": 69.5}, {"input": [69.5, -3.0], "expected": 69.5}, {"input": [69.5, -2.5], "expected": 69.5}, {"input": [69.5, -2.0], "expected": 69.5}, {"input": [69.5, -1.5], "expected": 69.5}, {"input": [69.5, -1.0], "expected": 69.5}, {"input": [69.5, -0.5], "expected": 69.5}, {"input": [69.5, 0.0], "expected": 69.5}, {"input": [69.5, 0.5], "expected": 69.5}, {"input": [69.5, 1.0], "expected": 69.5}, {"input": [69.5, 1.5], "expected": 69.5}, {"input": [69.5, 2.0], "expected": 69.5}, {"input": [69.5, 2.5], "expected": 69.5}, {"input": [69.5, 3.0], "expected": 69.5}, {"input": [69.5, 3.5], "expected": 69.5}, {"input": [69.5, 4.0], "expected": 69.5}, {"input": [69.5, 4.5], "expected": 69.5}, {"input": [69.5, 5.0], "expected": 69.5}, {"input": [69.5, 5.5], "expected": 69.5}, {"input": [69.5, 6.0], "expected": 69.5}, {"input": [69.5, 6.5], "expected": 69.5}, {"input": [69.5, 7.0], "expected": 69.5}, {"input": [69.5, 7.5], "expected": 69.5}, {"input": [69.5, 8.0], "expected": 69.5}, {"input": [69.5, 8.5], "expected": 69.5}, {"input": [69.5, 9.0], "expected": 69.5}, {"input": [69.5, 9.5], "expected": 69.5}, {"input": [69.5, 10.0], "expected": 69.5}, {"input": [69.5, 10.5], "expected": 69.5}, {"input": [69.5, 11.0], "expected": 69.5}, {"input": [69.5, 11.5], "expected": 69.5}, {"input": [69.5, 12.0], "expected": 69.5}, {"input": [69.5, 12.5], "expected": 69.5}, {"input": [69.5, 13.0], "expected": 69.5}, {"input": [69.5, 13.5], "expected": 69.5}, {"input": [69.5, 14.0], "expected": 69.5}, {"input": [69.5, 14.5], "expected": 69.5}, {"input": [69.5, 15.0], "expected": 69.5}, {"input": [69.5, 15.5], "expected": 69.5}, {"input": [69.5, 16.0], "expected": 69.5}, {"input": [69.5, 16.5], "expected": 69.5}, {"input": [69.5, 17.0], "expected": 69.5}, {"input": [69.5, 17.5], "expected": 69.5}, {"input": [69.5, 18.0], "expected": 69.5}, {"input": [69.5, 18.5], "expected": 69.5}, {"input": [69.5, 19.0], "expected": 69.5}, {"input": [69.5, 19.5], "expected": 69.5}, {"input": [69.5, 20.0], "expected": 69.5}, {"input": [69.5, 20.5], "expected": 69.5}, {"input": [69.5, 21.0], "expected": 69.5}, {"input": [69.5, 21.5], "expected": 69.5}, {"input": [69.5, 22.0], "expected": 69.5}, {"input": [69.5, 22.5], "expected": 69.5}, {"input": [69.5, 23.0], "expected": 69.5}, {"input": [69.5, 23.5], "expected": 69.5}, {"input": [69.5, 24.0], "expected": 69.5}, {"input": [69.5, 24.5], "expected": 69.5}, {"input": [69.5, 25.0], "expected": 69.5}, {"input": [69.5, 25.5], "expected": 69.5}, {"input": [69.5, 26.0], "expected": 69.5}, {"input": [69.5, 26.5], "expected": 69.5}, {"input": [69.5, 27.0], "expected": 69.5}, {"input": [69.5, 27.5], "expected": 69.5}, {"input": [69.5, 28.0], "expected": 69.5}, {"input": [69.5, 28.5], "expected": 69.5}, {"input": [69.5, 29.0], "expected": 69.5}, {"input": [69.5, 29.5], "expected": 69.5}, {"input": [69.5, 30.0], "expected": 69.5}, {"input": [69.5, 30.5], "expected": 69.5}, {"input": [69.5, 31.0], "expected": 69.5}, {"input": [69.5, 31.5], "expected": 69.5}, {"input": [69.5, 32.0], "expected": 69.5}, {"input": [69.5, 32.5], "expected": 69.5}, {"input": [69.5, 33.0], "expected": 69.5}, {"input": [69.5, 33.5], "expected": 69.5}, {"input": [69.5, 34.0], "expected": 69.5}, {"input": [69.5, 34.5], "expected": 69.5}, {"input": [69.5, 35.0], "expected": 69.5}, {"input": [69.5, 35.5], "expected": 69.5}, {"input": [69.5, 36.0], "expected": 69.5}, {"input": [69.5, 36.5], "expected": 69.5}, {"input": [69.5, 37.0], "expected": 69.50000000000001}, {"input": [69.5, 37.5], "expected": 69.50000000000001}, {"input": [69.5, 38.0], "expected": 69.50000000000001}, {"input": [69.5, 38.5], "expected": 69.50000000000003}, {"input": [69.5, 39.0], "expected": 69.50000000000006}, {"input": [69.5, 39.5], "expected": 69.5000000000001}, {"input": [69.5, 40.0], "expected": 69.50000000000016}, {"input": [69.5, 40.5], "expected": 69.50000000000026}, {"input": [69.5, 41.0], "expected": 69.50000000000043}, {"input": [69.5, 41.5], "expected": 69.5000000000007}, {"input": [69.5, 42.0], "expected": 69.50000000000114}, {"input": [69.5, 42.5], "expected": 69.50000000000188}, {"input": [69.5, 43.0], "expected": 69.5000000000031}, {"input": [69.5, 43.5], "expected": 69.50000000000512}, {"input": [69.5, 44.0], "expected": 69.50000000000843}, {"input": [69.5, 44.5], "expected": 69.50000000001388}, {"input": [69.5, 45.0], "expected": 69.5000000000229}, {"input": [69.5, 45.5], "expected": 69.50000000003776}, {"input": [69.5, 46.0], "expected": 69.50000000006224}, {"input": [69.5, 46.5], "expected": 69.50000000010262}, {"input": [69.5, 47.0], "expected": 69.5000000001692}, {"input": [69.5, 47.5], "expected": 69.50000000027894}, {"input": [69.5, 48.0], "expected": 69.5000000004599}, {"input": [69.5, 48.5], "expected": 69.50000000075826}, {"input": [69.5, 49.0], "expected": 69.50000000125016}, {"input": [69.5, 49.5], "expected": 69.50000000206116}, {"input": [69.5, 50.0], "expected": 69.50000000339827}, {"input": [69.5, 50.5], "expected": 69.5000000056028}, {"input": [69.5, 51.0], "expected": 69.50000000923745}, {"input": [69.5, 51.5], "expected": 69.50000001522999}, {"input": [69.5, 52.0], "expected": 69.50000002511}, {"input": [69.5, 52.5], "expected": 69.50000004139937}, {"input": [69.5, 53.0], "expected": 69.50000006825603}, {"input": [69.5, 53.5], "expected": 69.50000011253516}, {"input": [69.5, 54.0], "expected": 69.50000018553912}, {"input": [69.5, 54.5], "expected": 69.50000030590228}, {"input": [69.5, 55.0], "expected": 69.50000050434754}, {"input": [69.5, 55.5], "expected": 69.50000083152837}, {"input": [69.5, 56.0], "expected": 69.50000137095815}, {"input": [69.5, 56.5], "expected": 69.50000226032685}, {"input": [69.5, 57.0], "expected": 69.50000372664623}, {"input": [69.5, 57.5], "expected": 69.50000614419348}, {"input": [69.5, 58.0], "expected": 69.50001013004228}, {"input": [69.5, 58.5], "expected": 69.50001670156132}, {"input": [69.5, 59.0], "expected": 69.50002753607023}, {"input": [69.5, 59.5], "expected": 69.50004539889922}, {"input": [69.5, 60.0], "expected": 69.50007484902864}, {"input": [69.5, 60.5], "expected": 69.50012340218973}, {"input": [69.5, 61.0], "expected": 69.50020344767213}, {"input": [69.5, 61.5], "expected": 69.5003354063729}, {"input": [69.5, 62.0], "expected": 69.50055293147535}, {"input": [69.5, 62.5], "expected": 69.50091146645377}, {"input": [69.5, 63.0], "expected": 69.50150231015975}, {"input": [69.5, 63.5], "expected": 69.50247568513772}, {"input": [69.5, 64.0], "expected": 69.50407844327057}, {"input": [69.5, 64.5], "expected": 69.50671534848912}, {"input": [69.5, 65.0], "expected": 69.5110477448486}, {"input": [69.5, 65.5], "expected": 69.5181499279178}, {"input": [69.5, 66.0], "expected": 69.52975041827263}, {"input": [69.5, 66.5], "expected": 69.54858735157374}, {"input": [69.5, 67.0], "expected": 69.57888973429255}, {"input": [69.5, 67.5], "expected": 69.62692801104298}, {"input": [69.5, 68.0], "expected": 69.70141327798275}, {"input": [69.5, 68.5], "expected": 69.81326168751822}, {"input": [69.5, 69.0], "expected": 69.9740769841801}, {"input": [69.5, 69.5], "expected": 70.19314718055995}, {"input": [69.5, 70.0], "expected": 70.4740769841801}, {"input": [69.5, 70.5], "expected": 70.81326168751822}, {"input": [69.5, 71.0], "expected": 71.20141327798275}, {"input": [69.5, 71.5], "expected": 71.62692801104298}, {"input": [69.5, 72.0], "expected": 72.07888973429255}, {"input": [69.5, 72.5], "expected": 72.54858735157374}, {"input": [69.5, 73.0], "expected": 73.02975041827263}, {"input": [69.5, 73.5], "expected": 73.5181499279178}, {"input": [69.5, 74.0], "expected": 74.0110477448486}, {"input": [69.5, 74.5], "expected": 74.50671534848912}, {"input": [69.5, 75.0], "expected": 75.00407844327057}, {"input": [69.5, 75.5], "expected": 75.50247568513772}, {"input": [69.5, 76.0], "expected": 76.00150231015975}, {"input": [69.5, 76.5], "expected": 76.50091146645377}, {"input": [69.5, 77.0], "expected": 77.00055293147535}, {"input": [69.5, 77.5], "expected": 77.5003354063729}, {"input": [69.5, 78.0], "expected": 78.00020344767213}, {"input": [69.5, 78.5], "expected": 78.50012340218973}, {"input": [69.5, 79.0], "expected": 79.00007484902864}, {"input": [69.5, 79.5], "expected": 79.50004539889922}, {"input": [69.5, 80.0], "expected": 80.00002753607023}, {"input": [69.5, 80.5], "expected": 80.50001670156132}, {"input": [69.5, 81.0], "expected": 81.00001013004228}, {"input": [69.5, 81.5], "expected": 81.50000614419348}, {"input": [69.5, 82.0], "expected": 82.00000372664623}, {"input": [69.5, 82.5], "expected": 82.50000226032685}, {"input": [69.5, 83.0], "expected": 83.00000137095815}, {"input": [69.5, 83.5], "expected": 83.50000083152837}, {"input": [69.5, 84.0], "expected": 84.00000050434754}, {"input": [69.5, 84.5], "expected": 84.50000030590228}, {"input": [69.5, 85.0], "expected": 85.00000018553912}, {"input": [69.5, 85.5], "expected": 85.50000011253516}, {"input": [69.5, 86.0], "expected": 86.00000006825603}, {"input": [69.5, 86.5], "expected": 86.50000004139937}, {"input": [69.5, 87.0], "expected": 87.00000002511}, {"input": [69.5, 87.5], "expected": 87.50000001522999}, {"input": [69.5, 88.0], "expected": 88.00000000923745}, {"input": [69.5, 88.5], "expected": 88.5000000056028}, {"input": [69.5, 89.0], "expected": 89.00000000339827}, {"input": [69.5, 89.5], "expected": 89.50000000206116}, {"input": [69.5, 90.0], "expected": 90.00000000125016}, {"input": [69.5, 90.5], "expected": 90.50000000075826}, {"input": [69.5, 91.0], "expected": 91.0000000004599}, {"input": [69.5, 91.5], "expected": 91.50000000027894}, {"input": [69.5, 92.0], "expected": 92.0000000001692}, {"input": [69.5, 92.5], "expected": 92.50000000010262}, {"input": [69.5, 93.0], "expected": 93.00000000006224}, {"input": [69.5, 93.5], "expected": 93.50000000003776}, {"input": [69.5, 94.0], "expected": 94.0000000000229}, {"input": [69.5, 94.5], "expected": 94.50000000001388}, {"input": [69.5, 95.0], "expected": 95.00000000000843}, {"input": [69.5, 95.5], "expected": 95.50000000000512}, {"input": [69.5, 96.0], "expected": 96.0000000000031}, {"input": [69.5, 96.5], "expected": 96.50000000000188}, {"input": [69.5, 97.0], "expected": 97.00000000000114}, {"input": [69.5, 97.5], "expected": 97.5000000000007}, {"input": [69.5, 98.0], "expected": 98.00000000000043}, {"input": [69.5, 98.5], "expected": 98.50000000000026}, {"input": [69.5, 99.0], "expected": 99.00000000000016}, {"input": [69.5, 99.5], "expected": 99.5000000000001}, {"input": [70.0, -100.0], "expected": 70.0}, {"input": [70.0, -99.5], "expected": 70.0}, {"input": [70.0, -99.0], "expected": 70.0}, {"input": [70.0, -98.5], "expected": 70.0}, {"input": [70.0, -98.0], "expected": 70.0}, {"input": [70.0, -97.5], "expected": 70.0}, {"input": [70.0, -97.0], "expected": 70.0}, {"input": [70.0, -96.5], "expected": 70.0}, {"input": [70.0, -96.0], "expected": 70.0}, {"input": [70.0, -95.5], "expected": 70.0}, {"input": [70.0, -95.0], "expected": 70.0}, {"input": [70.0, -94.5], "expected": 70.0}, {"input": [70.0, -94.0], "expected": 70.0}, {"input": [70.0, -93.5], "expected": 70.0}, {"input": [70.0, -93.0], "expected": 70.0}, {"input": [70.0, -92.5], "expected": 70.0}, {"input": [70.0, -92.0], "expected": 70.0}, {"input": [70.0, -91.5], "expected": 70.0}, {"input": [70.0, -91.0], "expected": 70.0}, {"input": [70.0, -90.5], "expected": 70.0}, {"input": [70.0, -90.0], "expected": 70.0}, {"input": [70.0, -89.5], "expected": 70.0}, {"input": [70.0, -89.0], "expected": 70.0}, {"input": [70.0, -88.5], "expected": 70.0}, {"input": [70.0, -88.0], "expected": 70.0}, {"input": [70.0, -87.5], "expected": 70.0}, {"input": [70.0, -87.0], "expected": 70.0}, {"input": [70.0, -86.5], "expected": 70.0}, {"input": [70.0, -86.0], "expected": 70.0}, {"input": [70.0, -85.5], "expected": 70.0}, {"input": [70.0, -85.0], "expected": 70.0}, {"input": [70.0, -84.5], "expected": 70.0}, {"input": [70.0, -84.0], "expected": 70.0}, {"input": [70.0, -83.5], "expected": 70.0}, {"input": [70.0, -83.0], "expected": 70.0}, {"input": [70.0, -82.5], "expected": 70.0}, {"input": [70.0, -82.0], "expected": 70.0}, {"input": [70.0, -81.5], "expected": 70.0}, {"input": [70.0, -81.0], "expected": 70.0}, {"input": [70.0, -80.5], "expected": 70.0}, {"input": [70.0, -80.0], "expected": 70.0}, {"input": [70.0, -79.5], "expected": 70.0}, {"input": [70.0, -79.0], "expected": 70.0}, {"input": [70.0, -78.5], "expected": 70.0}, {"input": [70.0, -78.0], "expected": 70.0}, {"input": [70.0, -77.5], "expected": 70.0}, {"input": [70.0, -77.0], "expected": 70.0}, {"input": [70.0, -76.5], "expected": 70.0}, {"input": [70.0, -76.0], "expected": 70.0}, {"input": [70.0, -75.5], "expected": 70.0}, {"input": [70.0, -75.0], "expected": 70.0}, {"input": [70.0, -74.5], "expected": 70.0}, {"input": [70.0, -74.0], "expected": 70.0}, {"input": [70.0, -73.5], "expected": 70.0}, {"input": [70.0, -73.0], "expected": 70.0}, {"input": [70.0, -72.5], "expected": 70.0}, {"input": [70.0, -72.0], "expected": 70.0}, {"input": [70.0, -71.5], "expected": 70.0}, {"input": [70.0, -71.0], "expected": 70.0}, {"input": [70.0, -70.5], "expected": 70.0}, {"input": [70.0, -70.0], "expected": 70.0}, {"input": [70.0, -69.5], "expected": 70.0}, {"input": [70.0, -69.0], "expected": 70.0}, {"input": [70.0, -68.5], "expected": 70.0}, {"input": [70.0, -68.0], "expected": 70.0}, {"input": [70.0, -67.5], "expected": 70.0}, {"input": [70.0, -67.0], "expected": 70.0}, {"input": [70.0, -66.5], "expected": 70.0}, {"input": [70.0, -66.0], "expected": 70.0}, {"input": [70.0, -65.5], "expected": 70.0}, {"input": [70.0, -65.0], "expected": 70.0}, {"input": [70.0, -64.5], "expected": 70.0}, {"input": [70.0, -64.0], "expected": 70.0}, {"input": [70.0, -63.5], "expected": 70.0}, {"input": [70.0, -63.0], "expected": 70.0}, {"input": [70.0, -62.5], "expected": 70.0}, {"input": [70.0, -62.0], "expected": 70.0}, {"input": [70.0, -61.5], "expected": 70.0}, {"input": [70.0, -61.0], "expected": 70.0}, {"input": [70.0, -60.5], "expected": 70.0}, {"input": [70.0, -60.0], "expected": 70.0}, {"input": [70.0, -59.5], "expected": 70.0}, {"input": [70.0, -59.0], "expected": 70.0}, {"input": [70.0, -58.5], "expected": 70.0}, {"input": [70.0, -58.0], "expected": 70.0}, {"input": [70.0, -57.5], "expected": 70.0}, {"input": [70.0, -57.0], "expected": 70.0}, {"input": [70.0, -56.5], "expected": 70.0}, {"input": [70.0, -56.0], "expected": 70.0}, {"input": [70.0, -55.5], "expected": 70.0}, {"input": [70.0, -55.0], "expected": 70.0}, {"input": [70.0, -54.5], "expected": 70.0}, {"input": [70.0, -54.0], "expected": 70.0}, {"input": [70.0, -53.5], "expected": 70.0}, {"input": [70.0, -53.0], "expected": 70.0}, {"input": [70.0, -52.5], "expected": 70.0}, {"input": [70.0, -52.0], "expected": 70.0}, {"input": [70.0, -51.5], "expected": 70.0}, {"input": [70.0, -51.0], "expected": 70.0}, {"input": [70.0, -50.5], "expected": 70.0}, {"input": [70.0, -50.0], "expected": 70.0}, {"input": [70.0, -49.5], "expected": 70.0}, {"input": [70.0, -49.0], "expected": 70.0}, {"input": [70.0, -48.5], "expected": 70.0}, {"input": [70.0, -48.0], "expected": 70.0}, {"input": [70.0, -47.5], "expected": 70.0}, {"input": [70.0, -47.0], "expected": 70.0}, {"input": [70.0, -46.5], "expected": 70.0}, {"input": [70.0, -46.0], "expected": 70.0}, {"input": [70.0, -45.5], "expected": 70.0}, {"input": [70.0, -45.0], "expected": 70.0}, {"input": [70.0, -44.5], "expected": 70.0}, {"input": [70.0, -44.0], "expected": 70.0}, {"input": [70.0, -43.5], "expected": 70.0}, {"input": [70.0, -43.0], "expected": 70.0}, {"input": [70.0, -42.5], "expected": 70.0}, {"input": [70.0, -42.0], "expected": 70.0}, {"input": [70.0, -41.5], "expected": 70.0}, {"input": [70.0, -41.0], "expected": 70.0}, {"input": [70.0, -40.5], "expected": 70.0}, {"input": [70.0, -40.0], "expected": 70.0}, {"input": [70.0, -39.5], "expected": 70.0}, {"input": [70.0, -39.0], "expected": 70.0}, {"input": [70.0, -38.5], "expected": 70.0}, {"input": [70.0, -38.0], "expected": 70.0}, {"input": [70.0, -37.5], "expected": 70.0}, {"input": [70.0, -37.0], "expected": 70.0}, {"input": [70.0, -36.5], "expected": 70.0}, {"input": [70.0, -36.0], "expected": 70.0}, {"input": [70.0, -35.5], "expected": 70.0}, {"input": [70.0, -35.0], "expected": 70.0}, {"input": [70.0, -34.5], "expected": 70.0}, {"input": [70.0, -34.0], "expected": 70.0}, {"input": [70.0, -33.5], "expected": 70.0}, {"input": [70.0, -33.0], "expected": 70.0}, {"input": [70.0, -32.5], "expected": 70.0}, {"input": [70.0, -32.0], "expected": 70.0}, {"input": [70.0, -31.5], "expected": 70.0}, {"input": [70.0, -31.0], "expected": 70.0}, {"input": [70.0, -30.5], "expected": 70.0}, {"input": [70.0, -30.0], "expected": 70.0}, {"input": [70.0, -29.5], "expected": 70.0}, {"input": [70.0, -29.0], "expected": 70.0}, {"input": [70.0, -28.5], "expected": 70.0}, {"input": [70.0, -28.0], "expected": 70.0}, {"input": [70.0, -27.5], "expected": 70.0}, {"input": [70.0, -27.0], "expected": 70.0}, {"input": [70.0, -26.5], "expected": 70.0}, {"input": [70.0, -26.0], "expected": 70.0}, {"input": [70.0, -25.5], "expected": 70.0}, {"input": [70.0, -25.0], "expected": 70.0}, {"input": [70.0, -24.5], "expected": 70.0}, {"input": [70.0, -24.0], "expected": 70.0}, {"input": [70.0, -23.5], "expected": 70.0}, {"input": [70.0, -23.0], "expected": 70.0}, {"input": [70.0, -22.5], "expected": 70.0}, {"input": [70.0, -22.0], "expected": 70.0}, {"input": [70.0, -21.5], "expected": 70.0}, {"input": [70.0, -21.0], "expected": 70.0}, {"input": [70.0, -20.5], "expected": 70.0}, {"input": [70.0, -20.0], "expected": 70.0}, {"input": [70.0, -19.5], "expected": 70.0}, {"input": [70.0, -19.0], "expected": 70.0}, {"input": [70.0, -18.5], "expected": 70.0}, {"input": [70.0, -18.0], "expected": 70.0}, {"input": [70.0, -17.5], "expected": 70.0}, {"input": [70.0, -17.0], "expected": 70.0}, {"input": [70.0, -16.5], "expected": 70.0}, {"input": [70.0, -16.0], "expected": 70.0}, {"input": [70.0, -15.5], "expected": 70.0}, {"input": [70.0, -15.0], "expected": 70.0}, {"input": [70.0, -14.5], "expected": 70.0}, {"input": [70.0, -14.0], "expected": 70.0}, {"input": [70.0, -13.5], "expected": 70.0}, {"input": [70.0, -13.0], "expected": 70.0}, {"input": [70.0, -12.5], "expected": 70.0}, {"input": [70.0, -12.0], "expected": 70.0}, {"input": [70.0, -11.5], "expected": 70.0}, {"input": [70.0, -11.0], "expected": 70.0}, {"input": [70.0, -10.5], "expected": 70.0}, {"input": [70.0, -10.0], "expected": 70.0}, {"input": [70.0, -9.5], "expected": 70.0}, {"input": [70.0, -9.0], "expected": 70.0}, {"input": [70.0, -8.5], "expected": 70.0}, {"input": [70.0, -8.0], "expected": 70.0}, {"input": [70.0, -7.5], "expected": 70.0}, {"input": [70.0, -7.0], "expected": 70.0}, {"input": [70.0, -6.5], "expected": 70.0}, {"input": [70.0, -6.0], "expected": 70.0}, {"input": [70.0, -5.5], "expected": 70.0}, {"input": [70.0, -5.0], "expected": 70.0}, {"input": [70.0, -4.5], "expected": 70.0}, {"input": [70.0, -4.0], "expected": 70.0}, {"input": [70.0, -3.5], "expected": 70.0}, {"input": [70.0, -3.0], "expected": 70.0}, {"input": [70.0, -2.5], "expected": 70.0}, {"input": [70.0, -2.0], "expected": 70.0}, {"input": [70.0, -1.5], "expected": 70.0}, {"input": [70.0, -1.0], "expected": 70.0}, {"input": [70.0, -0.5], "expected": 70.0}, {"input": [70.0, 0.0], "expected": 70.0}, {"input": [70.0, 0.5], "expected": 70.0}, {"input": [70.0, 1.0], "expected": 70.0}, {"input": [70.0, 1.5], "expected": 70.0}, {"input": [70.0, 2.0], "expected": 70.0}, {"input": [70.0, 2.5], "expected": 70.0}, {"input": [70.0, 3.0], "expected": 70.0}, {"input": [70.0, 3.5], "expected": 70.0}, {"input": [70.0, 4.0], "expected": 70.0}, {"input": [70.0, 4.5], "expected": 70.0}, {"input": [70.0, 5.0], "expected": 70.0}, {"input": [70.0, 5.5], "expected": 70.0}, {"input": [70.0, 6.0], "expected": 70.0}, {"input": [70.0, 6.5], "expected": 70.0}, {"input": [70.0, 7.0], "expected": 70.0}, {"input": [70.0, 7.5], "expected": 70.0}, {"input": [70.0, 8.0], "expected": 70.0}, {"input": [70.0, 8.5], "expected": 70.0}, {"input": [70.0, 9.0], "expected": 70.0}, {"input": [70.0, 9.5], "expected": 70.0}, {"input": [70.0, 10.0], "expected": 70.0}, {"input": [70.0, 10.5], "expected": 70.0}, {"input": [70.0, 11.0], "expected": 70.0}, {"input": [70.0, 11.5], "expected": 70.0}, {"input": [70.0, 12.0], "expected": 70.0}, {"input": [70.0, 12.5], "expected": 70.0}, {"input": [70.0, 13.0], "expected": 70.0}, {"input": [70.0, 13.5], "expected": 70.0}, {"input": [70.0, 14.0], "expected": 70.0}, {"input": [70.0, 14.5], "expected": 70.0}, {"input": [70.0, 15.0], "expected": 70.0}, {"input": [70.0, 15.5], "expected": 70.0}, {"input": [70.0, 16.0], "expected": 70.0}, {"input": [70.0, 16.5], "expected": 70.0}, {"input": [70.0, 17.0], "expected": 70.0}, {"input": [70.0, 17.5], "expected": 70.0}, {"input": [70.0, 18.0], "expected": 70.0}, {"input": [70.0, 18.5], "expected": 70.0}, {"input": [70.0, 19.0], "expected": 70.0}, {"input": [70.0, 19.5], "expected": 70.0}, {"input": [70.0, 20.0], "expected": 70.0}, {"input": [70.0, 20.5], "expected": 70.0}, {"input": [70.0, 21.0], "expected": 70.0}, {"input": [70.0, 21.5], "expected": 70.0}, {"input": [70.0, 22.0], "expected": 70.0}, {"input": [70.0, 22.5], "expected": 70.0}, {"input": [70.0, 23.0], "expected": 70.0}, {"input": [70.0, 23.5], "expected": 70.0}, {"input": [70.0, 24.0], "expected": 70.0}, {"input": [70.0, 24.5], "expected": 70.0}, {"input": [70.0, 25.0], "expected": 70.0}, {"input": [70.0, 25.5], "expected": 70.0}, {"input": [70.0, 26.0], "expected": 70.0}, {"input": [70.0, 26.5], "expected": 70.0}, {"input": [70.0, 27.0], "expected": 70.0}, {"input": [70.0, 27.5], "expected": 70.0}, {"input": [70.0, 28.0], "expected": 70.0}, {"input": [70.0, 28.5], "expected": 70.0}, {"input": [70.0, 29.0], "expected": 70.0}, {"input": [70.0, 29.5], "expected": 70.0}, {"input": [70.0, 30.0], "expected": 70.0}, {"input": [70.0, 30.5], "expected": 70.0}, {"input": [70.0, 31.0], "expected": 70.0}, {"input": [70.0, 31.5], "expected": 70.0}, {"input": [70.0, 32.0], "expected": 70.0}, {"input": [70.0, 32.5], "expected": 70.0}, {"input": [70.0, 33.0], "expected": 70.0}, {"input": [70.0, 33.5], "expected": 70.0}, {"input": [70.0, 34.0], "expected": 70.0}, {"input": [70.0, 34.5], "expected": 70.0}, {"input": [70.0, 35.0], "expected": 70.0}, {"input": [70.0, 35.5], "expected": 70.0}, {"input": [70.0, 36.0], "expected": 70.0}, {"input": [70.0, 36.5], "expected": 70.0}, {"input": [70.0, 37.0], "expected": 70.0}, {"input": [70.0, 37.5], "expected": 70.00000000000001}, {"input": [70.0, 38.0], "expected": 70.00000000000001}, {"input": [70.0, 38.5], "expected": 70.00000000000001}, {"input": [70.0, 39.0], "expected": 70.00000000000003}, {"input": [70.0, 39.5], "expected": 70.00000000000006}, {"input": [70.0, 40.0], "expected": 70.0000000000001}, {"input": [70.0, 40.5], "expected": 70.00000000000016}, {"input": [70.0, 41.0], "expected": 70.00000000000026}, {"input": [70.0, 41.5], "expected": 70.00000000000043}, {"input": [70.0, 42.0], "expected": 70.0000000000007}, {"input": [70.0, 42.5], "expected": 70.00000000000114}, {"input": [70.0, 43.0], "expected": 70.00000000000188}, {"input": [70.0, 43.5], "expected": 70.0000000000031}, {"input": [70.0, 44.0], "expected": 70.00000000000512}, {"input": [70.0, 44.5], "expected": 70.00000000000843}, {"input": [70.0, 45.0], "expected": 70.00000000001388}, {"input": [70.0, 45.5], "expected": 70.0000000000229}, {"input": [70.0, 46.0], "expected": 70.00000000003776}, {"input": [70.0, 46.5], "expected": 70.00000000006224}, {"input": [70.0, 47.0], "expected": 70.00000000010262}, {"input": [70.0, 47.5], "expected": 70.0000000001692}, {"input": [70.0, 48.0], "expected": 70.00000000027894}, {"input": [70.0, 48.5], "expected": 70.0000000004599}, {"input": [70.0, 49.0], "expected": 70.00000000075826}, {"input": [70.0, 49.5], "expected": 70.00000000125016}, {"input": [70.0, 50.0], "expected": 70.00000000206116}, {"input": [70.0, 50.5], "expected": 70.00000000339827}, {"input": [70.0, 51.0], "expected": 70.0000000056028}, {"input": [70.0, 51.5], "expected": 70.00000000923745}, {"input": [70.0, 52.0], "expected": 70.00000001522999}, {"input": [70.0, 52.5], "expected": 70.00000002511}, {"input": [70.0, 53.0], "expected": 70.00000004139937}, {"input": [70.0, 53.5], "expected": 70.00000006825603}, {"input": [70.0, 54.0], "expected": 70.00000011253516}, {"input": [70.0, 54.5], "expected": 70.00000018553912}, {"input": [70.0, 55.0], "expected": 70.00000030590228}, {"input": [70.0, 55.5], "expected": 70.00000050434754}, {"input": [70.0, 56.0], "expected": 70.00000083152837}, {"input": [70.0, 56.5], "expected": 70.00000137095815}, {"input": [70.0, 57.0], "expected": 70.00000226032685}, {"input": [70.0, 57.5], "expected": 70.00000372664623}, {"input": [70.0, 58.0], "expected": 70.00000614419348}, {"input": [70.0, 58.5], "expected": 70.00001013004228}, {"input": [70.0, 59.0], "expected": 70.00001670156132}, {"input": [70.0, 59.5], "expected": 70.00002753607023}, {"input": [70.0, 60.0], "expected": 70.00004539889922}, {"input": [70.0, 60.5], "expected": 70.00007484902864}, {"input": [70.0, 61.0], "expected": 70.00012340218973}, {"input": [70.0, 61.5], "expected": 70.00020344767213}, {"input": [70.0, 62.0], "expected": 70.0003354063729}, {"input": [70.0, 62.5], "expected": 70.00055293147535}, {"input": [70.0, 63.0], "expected": 70.00091146645377}, {"input": [70.0, 63.5], "expected": 70.00150231015975}, {"input": [70.0, 64.0], "expected": 70.00247568513772}, {"input": [70.0, 64.5], "expected": 70.00407844327057}, {"input": [70.0, 65.0], "expected": 70.00671534848912}, {"input": [70.0, 65.5], "expected": 70.0110477448486}, {"input": [70.0, 66.0], "expected": 70.0181499279178}, {"input": [70.0, 66.5], "expected": 70.02975041827263}, {"input": [70.0, 67.0], "expected": 70.04858735157374}, {"input": [70.0, 67.5], "expected": 70.07888973429255}, {"input": [70.0, 68.0], "expected": 70.12692801104298}, {"input": [70.0, 68.5], "expected": 70.20141327798275}, {"input": [70.0, 69.0], "expected": 70.31326168751822}, {"input": [70.0, 69.5], "expected": 70.4740769841801}, {"input": [70.0, 70.0], "expected": 70.69314718055995}, {"input": [70.0, 70.5], "expected": 70.9740769841801}, {"input": [70.0, 71.0], "expected": 71.31326168751822}, {"input": [70.0, 71.5], "expected": 71.70141327798275}, {"input": [70.0, 72.0], "expected": 72.12692801104298}, {"input": [70.0, 72.5], "expected": 72.57888973429255}, {"input": [70.0, 73.0], "expected": 73.04858735157374}, {"input": [70.0, 73.5], "expected": 73.52975041827263}, {"input": [70.0, 74.0], "expected": 74.0181499279178}, {"input": [70.0, 74.5], "expected": 74.5110477448486}, {"input": [70.0, 75.0], "expected": 75.00671534848912}, {"input": [70.0, 75.5], "expected": 75.50407844327057}, {"input": [70.0, 76.0], "expected": 76.00247568513772}, {"input": [70.0, 76.5], "expected": 76.50150231015975}, {"input": [70.0, 77.0], "expected": 77.00091146645377}, {"input": [70.0, 77.5], "expected": 77.50055293147535}, {"input": [70.0, 78.0], "expected": 78.0003354063729}, {"input": [70.0, 78.5], "expected": 78.50020344767213}, {"input": [70.0, 79.0], "expected": 79.00012340218973}, {"input": [70.0, 79.5], "expected": 79.50007484902864}, {"input": [70.0, 80.0], "expected": 80.00004539889922}, {"input": [70.0, 80.5], "expected": 80.50002753607023}, {"input": [70.0, 81.0], "expected": 81.00001670156132}, {"input": [70.0, 81.5], "expected": 81.50001013004228}, {"input": [70.0, 82.0], "expected": 82.00000614419348}, {"input": [70.0, 82.5], "expected": 82.50000372664623}, {"input": [70.0, 83.0], "expected": 83.00000226032685}, {"input": [70.0, 83.5], "expected": 83.50000137095815}, {"input": [70.0, 84.0], "expected": 84.00000083152837}, {"input": [70.0, 84.5], "expected": 84.50000050434754}, {"input": [70.0, 85.0], "expected": 85.00000030590228}, {"input": [70.0, 85.5], "expected": 85.50000018553912}, {"input": [70.0, 86.0], "expected": 86.00000011253516}, {"input": [70.0, 86.5], "expected": 86.50000006825603}, {"input": [70.0, 87.0], "expected": 87.00000004139937}, {"input": [70.0, 87.5], "expected": 87.50000002511}, {"input": [70.0, 88.0], "expected": 88.00000001522999}, {"input": [70.0, 88.5], "expected": 88.50000000923745}, {"input": [70.0, 89.0], "expected": 89.0000000056028}, {"input": [70.0, 89.5], "expected": 89.50000000339827}, {"input": [70.0, 90.0], "expected": 90.00000000206116}, {"input": [70.0, 90.5], "expected": 90.50000000125016}, {"input": [70.0, 91.0], "expected": 91.00000000075826}, {"input": [70.0, 91.5], "expected": 91.5000000004599}, {"input": [70.0, 92.0], "expected": 92.00000000027894}, {"input": [70.0, 92.5], "expected": 92.5000000001692}, {"input": [70.0, 93.0], "expected": 93.00000000010262}, {"input": [70.0, 93.5], "expected": 93.50000000006224}, {"input": [70.0, 94.0], "expected": 94.00000000003776}, {"input": [70.0, 94.5], "expected": 94.5000000000229}, {"input": [70.0, 95.0], "expected": 95.00000000001388}, {"input": [70.0, 95.5], "expected": 95.50000000000843}, {"input": [70.0, 96.0], "expected": 96.00000000000512}, {"input": [70.0, 96.5], "expected": 96.5000000000031}, {"input": [70.0, 97.0], "expected": 97.00000000000188}, {"input": [70.0, 97.5], "expected": 97.50000000000114}, {"input": [70.0, 98.0], "expected": 98.0000000000007}, {"input": [70.0, 98.5], "expected": 98.50000000000043}, {"input": [70.0, 99.0], "expected": 99.00000000000026}, {"input": [70.0, 99.5], "expected": 99.50000000000016}, {"input": [70.5, -100.0], "expected": 70.5}, {"input": [70.5, -99.5], "expected": 70.5}, {"input": [70.5, -99.0], "expected": 70.5}, {"input": [70.5, -98.5], "expected": 70.5}, {"input": [70.5, -98.0], "expected": 70.5}, {"input": [70.5, -97.5], "expected": 70.5}, {"input": [70.5, -97.0], "expected": 70.5}, {"input": [70.5, -96.5], "expected": 70.5}, {"input": [70.5, -96.0], "expected": 70.5}, {"input": [70.5, -95.5], "expected": 70.5}, {"input": [70.5, -95.0], "expected": 70.5}, {"input": [70.5, -94.5], "expected": 70.5}, {"input": [70.5, -94.0], "expected": 70.5}, {"input": [70.5, -93.5], "expected": 70.5}, {"input": [70.5, -93.0], "expected": 70.5}, {"input": [70.5, -92.5], "expected": 70.5}, {"input": [70.5, -92.0], "expected": 70.5}, {"input": [70.5, -91.5], "expected": 70.5}, {"input": [70.5, -91.0], "expected": 70.5}, {"input": [70.5, -90.5], "expected": 70.5}, {"input": [70.5, -90.0], "expected": 70.5}, {"input": [70.5, -89.5], "expected": 70.5}, {"input": [70.5, -89.0], "expected": 70.5}, {"input": [70.5, -88.5], "expected": 70.5}, {"input": [70.5, -88.0], "expected": 70.5}, {"input": [70.5, -87.5], "expected": 70.5}, {"input": [70.5, -87.0], "expected": 70.5}, {"input": [70.5, -86.5], "expected": 70.5}, {"input": [70.5, -86.0], "expected": 70.5}, {"input": [70.5, -85.5], "expected": 70.5}, {"input": [70.5, -85.0], "expected": 70.5}, {"input": [70.5, -84.5], "expected": 70.5}, {"input": [70.5, -84.0], "expected": 70.5}, {"input": [70.5, -83.5], "expected": 70.5}, {"input": [70.5, -83.0], "expected": 70.5}, {"input": [70.5, -82.5], "expected": 70.5}, {"input": [70.5, -82.0], "expected": 70.5}, {"input": [70.5, -81.5], "expected": 70.5}, {"input": [70.5, -81.0], "expected": 70.5}, {"input": [70.5, -80.5], "expected": 70.5}, {"input": [70.5, -80.0], "expected": 70.5}, {"input": [70.5, -79.5], "expected": 70.5}, {"input": [70.5, -79.0], "expected": 70.5}, {"input": [70.5, -78.5], "expected": 70.5}, {"input": [70.5, -78.0], "expected": 70.5}, {"input": [70.5, -77.5], "expected": 70.5}, {"input": [70.5, -77.0], "expected": 70.5}, {"input": [70.5, -76.5], "expected": 70.5}, {"input": [70.5, -76.0], "expected": 70.5}, {"input": [70.5, -75.5], "expected": 70.5}, {"input": [70.5, -75.0], "expected": 70.5}, {"input": [70.5, -74.5], "expected": 70.5}, {"input": [70.5, -74.0], "expected": 70.5}, {"input": [70.5, -73.5], "expected": 70.5}, {"input": [70.5, -73.0], "expected": 70.5}, {"input": [70.5, -72.5], "expected": 70.5}, {"input": [70.5, -72.0], "expected": 70.5}, {"input": [70.5, -71.5], "expected": 70.5}, {"input": [70.5, -71.0], "expected": 70.5}, {"input": [70.5, -70.5], "expected": 70.5}, {"input": [70.5, -70.0], "expected": 70.5}, {"input": [70.5, -69.5], "expected": 70.5}, {"input": [70.5, -69.0], "expected": 70.5}, {"input": [70.5, -68.5], "expected": 70.5}, {"input": [70.5, -68.0], "expected": 70.5}, {"input": [70.5, -67.5], "expected": 70.5}, {"input": [70.5, -67.0], "expected": 70.5}, {"input": [70.5, -66.5], "expected": 70.5}, {"input": [70.5, -66.0], "expected": 70.5}, {"input": [70.5, -65.5], "expected": 70.5}, {"input": [70.5, -65.0], "expected": 70.5}, {"input": [70.5, -64.5], "expected": 70.5}, {"input": [70.5, -64.0], "expected": 70.5}, {"input": [70.5, -63.5], "expected": 70.5}, {"input": [70.5, -63.0], "expected": 70.5}, {"input": [70.5, -62.5], "expected": 70.5}, {"input": [70.5, -62.0], "expected": 70.5}, {"input": [70.5, -61.5], "expected": 70.5}, {"input": [70.5, -61.0], "expected": 70.5}, {"input": [70.5, -60.5], "expected": 70.5}, {"input": [70.5, -60.0], "expected": 70.5}, {"input": [70.5, -59.5], "expected": 70.5}, {"input": [70.5, -59.0], "expected": 70.5}, {"input": [70.5, -58.5], "expected": 70.5}, {"input": [70.5, -58.0], "expected": 70.5}, {"input": [70.5, -57.5], "expected": 70.5}, {"input": [70.5, -57.0], "expected": 70.5}, {"input": [70.5, -56.5], "expected": 70.5}, {"input": [70.5, -56.0], "expected": 70.5}, {"input": [70.5, -55.5], "expected": 70.5}, {"input": [70.5, -55.0], "expected": 70.5}, {"input": [70.5, -54.5], "expected": 70.5}, {"input": [70.5, -54.0], "expected": 70.5}, {"input": [70.5, -53.5], "expected": 70.5}, {"input": [70.5, -53.0], "expected": 70.5}, {"input": [70.5, -52.5], "expected": 70.5}, {"input": [70.5, -52.0], "expected": 70.5}, {"input": [70.5, -51.5], "expected": 70.5}, {"input": [70.5, -51.0], "expected": 70.5}, {"input": [70.5, -50.5], "expected": 70.5}, {"input": [70.5, -50.0], "expected": 70.5}, {"input": [70.5, -49.5], "expected": 70.5}, {"input": [70.5, -49.0], "expected": 70.5}, {"input": [70.5, -48.5], "expected": 70.5}, {"input": [70.5, -48.0], "expected": 70.5}, {"input": [70.5, -47.5], "expected": 70.5}, {"input": [70.5, -47.0], "expected": 70.5}, {"input": [70.5, -46.5], "expected": 70.5}, {"input": [70.5, -46.0], "expected": 70.5}, {"input": [70.5, -45.5], "expected": 70.5}, {"input": [70.5, -45.0], "expected": 70.5}, {"input": [70.5, -44.5], "expected": 70.5}, {"input": [70.5, -44.0], "expected": 70.5}, {"input": [70.5, -43.5], "expected": 70.5}, {"input": [70.5, -43.0], "expected": 70.5}, {"input": [70.5, -42.5], "expected": 70.5}, {"input": [70.5, -42.0], "expected": 70.5}, {"input": [70.5, -41.5], "expected": 70.5}, {"input": [70.5, -41.0], "expected": 70.5}, {"input": [70.5, -40.5], "expected": 70.5}, {"input": [70.5, -40.0], "expected": 70.5}, {"input": [70.5, -39.5], "expected": 70.5}, {"input": [70.5, -39.0], "expected": 70.5}, {"input": [70.5, -38.5], "expected": 70.5}, {"input": [70.5, -38.0], "expected": 70.5}, {"input": [70.5, -37.5], "expected": 70.5}, {"input": [70.5, -37.0], "expected": 70.5}, {"input": [70.5, -36.5], "expected": 70.5}, {"input": [70.5, -36.0], "expected": 70.5}, {"input": [70.5, -35.5], "expected": 70.5}, {"input": [70.5, -35.0], "expected": 70.5}, {"input": [70.5, -34.5], "expected": 70.5}, {"input": [70.5, -34.0], "expected": 70.5}, {"input": [70.5, -33.5], "expected": 70.5}, {"input": [70.5, -33.0], "expected": 70.5}, {"input": [70.5, -32.5], "expected": 70.5}, {"input": [70.5, -32.0], "expected": 70.5}, {"input": [70.5, -31.5], "expected": 70.5}, {"input": [70.5, -31.0], "expected": 70.5}, {"input": [70.5, -30.5], "expected": 70.5}, {"input": [70.5, -30.0], "expected": 70.5}, {"input": [70.5, -29.5], "expected": 70.5}, {"input": [70.5, -29.0], "expected": 70.5}, {"input": [70.5, -28.5], "expected": 70.5}, {"input": [70.5, -28.0], "expected": 70.5}, {"input": [70.5, -27.5], "expected": 70.5}, {"input": [70.5, -27.0], "expected": 70.5}, {"input": [70.5, -26.5], "expected": 70.5}, {"input": [70.5, -26.0], "expected": 70.5}, {"input": [70.5, -25.5], "expected": 70.5}, {"input": [70.5, -25.0], "expected": 70.5}, {"input": [70.5, -24.5], "expected": 70.5}, {"input": [70.5, -24.0], "expected": 70.5}, {"input": [70.5, -23.5], "expected": 70.5}, {"input": [70.5, -23.0], "expected": 70.5}, {"input": [70.5, -22.5], "expected": 70.5}, {"input": [70.5, -22.0], "expected": 70.5}, {"input": [70.5, -21.5], "expected": 70.5}, {"input": [70.5, -21.0], "expected": 70.5}, {"input": [70.5, -20.5], "expected": 70.5}, {"input": [70.5, -20.0], "expected": 70.5}, {"input": [70.5, -19.5], "expected": 70.5}, {"input": [70.5, -19.0], "expected": 70.5}, {"input": [70.5, -18.5], "expected": 70.5}, {"input": [70.5, -18.0], "expected": 70.5}, {"input": [70.5, -17.5], "expected": 70.5}, {"input": [70.5, -17.0], "expected": 70.5}, {"input": [70.5, -16.5], "expected": 70.5}, {"input": [70.5, -16.0], "expected": 70.5}, {"input": [70.5, -15.5], "expected": 70.5}, {"input": [70.5, -15.0], "expected": 70.5}, {"input": [70.5, -14.5], "expected": 70.5}, {"input": [70.5, -14.0], "expected": 70.5}, {"input": [70.5, -13.5], "expected": 70.5}, {"input": [70.5, -13.0], "expected": 70.5}, {"input": [70.5, -12.5], "expected": 70.5}, {"input": [70.5, -12.0], "expected": 70.5}, {"input": [70.5, -11.5], "expected": 70.5}, {"input": [70.5, -11.0], "expected": 70.5}, {"input": [70.5, -10.5], "expected": 70.5}, {"input": [70.5, -10.0], "expected": 70.5}, {"input": [70.5, -9.5], "expected": 70.5}, {"input": [70.5, -9.0], "expected": 70.5}, {"input": [70.5, -8.5], "expected": 70.5}, {"input": [70.5, -8.0], "expected": 70.5}, {"input": [70.5, -7.5], "expected": 70.5}, {"input": [70.5, -7.0], "expected": 70.5}, {"input": [70.5, -6.5], "expected": 70.5}, {"input": [70.5, -6.0], "expected": 70.5}, {"input": [70.5, -5.5], "expected": 70.5}, {"input": [70.5, -5.0], "expected": 70.5}, {"input": [70.5, -4.5], "expected": 70.5}, {"input": [70.5, -4.0], "expected": 70.5}, {"input": [70.5, -3.5], "expected": 70.5}, {"input": [70.5, -3.0], "expected": 70.5}, {"input": [70.5, -2.5], "expected": 70.5}, {"input": [70.5, -2.0], "expected": 70.5}, {"input": [70.5, -1.5], "expected": 70.5}, {"input": [70.5, -1.0], "expected": 70.5}, {"input": [70.5, -0.5], "expected": 70.5}, {"input": [70.5, 0.0], "expected": 70.5}, {"input": [70.5, 0.5], "expected": 70.5}, {"input": [70.5, 1.0], "expected": 70.5}, {"input": [70.5, 1.5], "expected": 70.5}, {"input": [70.5, 2.0], "expected": 70.5}, {"input": [70.5, 2.5], "expected": 70.5}, {"input": [70.5, 3.0], "expected": 70.5}, {"input": [70.5, 3.5], "expected": 70.5}, {"input": [70.5, 4.0], "expected": 70.5}, {"input": [70.5, 4.5], "expected": 70.5}, {"input": [70.5, 5.0], "expected": 70.5}, {"input": [70.5, 5.5], "expected": 70.5}, {"input": [70.5, 6.0], "expected": 70.5}, {"input": [70.5, 6.5], "expected": 70.5}, {"input": [70.5, 7.0], "expected": 70.5}, {"input": [70.5, 7.5], "expected": 70.5}, {"input": [70.5, 8.0], "expected": 70.5}, {"input": [70.5, 8.5], "expected": 70.5}, {"input": [70.5, 9.0], "expected": 70.5}, {"input": [70.5, 9.5], "expected": 70.5}, {"input": [70.5, 10.0], "expected": 70.5}, {"input": [70.5, 10.5], "expected": 70.5}, {"input": [70.5, 11.0], "expected": 70.5}, {"input": [70.5, 11.5], "expected": 70.5}, {"input": [70.5, 12.0], "expected": 70.5}, {"input": [70.5, 12.5], "expected": 70.5}, {"input": [70.5, 13.0], "expected": 70.5}, {"input": [70.5, 13.5], "expected": 70.5}, {"input": [70.5, 14.0], "expected": 70.5}, {"input": [70.5, 14.5], "expected": 70.5}, {"input": [70.5, 15.0], "expected": 70.5}, {"input": [70.5, 15.5], "expected": 70.5}, {"input": [70.5, 16.0], "expected": 70.5}, {"input": [70.5, 16.5], "expected": 70.5}, {"input": [70.5, 17.0], "expected": 70.5}, {"input": [70.5, 17.5], "expected": 70.5}, {"input": [70.5, 18.0], "expected": 70.5}, {"input": [70.5, 18.5], "expected": 70.5}, {"input": [70.5, 19.0], "expected": 70.5}, {"input": [70.5, 19.5], "expected": 70.5}, {"input": [70.5, 20.0], "expected": 70.5}, {"input": [70.5, 20.5], "expected": 70.5}, {"input": [70.5, 21.0], "expected": 70.5}, {"input": [70.5, 21.5], "expected": 70.5}, {"input": [70.5, 22.0], "expected": 70.5}, {"input": [70.5, 22.5], "expected": 70.5}, {"input": [70.5, 23.0], "expected": 70.5}, {"input": [70.5, 23.5], "expected": 70.5}, {"input": [70.5, 24.0], "expected": 70.5}, {"input": [70.5, 24.5], "expected": 70.5}, {"input": [70.5, 25.0], "expected": 70.5}, {"input": [70.5, 25.5], "expected": 70.5}, {"input": [70.5, 26.0], "expected": 70.5}, {"input": [70.5, 26.5], "expected": 70.5}, {"input": [70.5, 27.0], "expected": 70.5}, {"input": [70.5, 27.5], "expected": 70.5}, {"input": [70.5, 28.0], "expected": 70.5}, {"input": [70.5, 28.5], "expected": 70.5}, {"input": [70.5, 29.0], "expected": 70.5}, {"input": [70.5, 29.5], "expected": 70.5}, {"input": [70.5, 30.0], "expected": 70.5}, {"input": [70.5, 30.5], "expected": 70.5}, {"input": [70.5, 31.0], "expected": 70.5}, {"input": [70.5, 31.5], "expected": 70.5}, {"input": [70.5, 32.0], "expected": 70.5}, {"input": [70.5, 32.5], "expected": 70.5}, {"input": [70.5, 33.0], "expected": 70.5}, {"input": [70.5, 33.5], "expected": 70.5}, {"input": [70.5, 34.0], "expected": 70.5}, {"input": [70.5, 34.5], "expected": 70.5}, {"input": [70.5, 35.0], "expected": 70.5}, {"input": [70.5, 35.5], "expected": 70.5}, {"input": [70.5, 36.0], "expected": 70.5}, {"input": [70.5, 36.5], "expected": 70.5}, {"input": [70.5, 37.0], "expected": 70.5}, {"input": [70.5, 37.5], "expected": 70.5}, {"input": [70.5, 38.0], "expected": 70.50000000000001}, {"input": [70.5, 38.5], "expected": 70.50000000000001}, {"input": [70.5, 39.0], "expected": 70.50000000000001}, {"input": [70.5, 39.5], "expected": 70.50000000000003}, {"input": [70.5, 40.0], "expected": 70.50000000000006}, {"input": [70.5, 40.5], "expected": 70.5000000000001}, {"input": [70.5, 41.0], "expected": 70.50000000000016}, {"input": [70.5, 41.5], "expected": 70.50000000000026}, {"input": [70.5, 42.0], "expected": 70.50000000000043}, {"input": [70.5, 42.5], "expected": 70.5000000000007}, {"input": [70.5, 43.0], "expected": 70.50000000000114}, {"input": [70.5, 43.5], "expected": 70.50000000000188}, {"input": [70.5, 44.0], "expected": 70.5000000000031}, {"input": [70.5, 44.5], "expected": 70.50000000000512}, {"input": [70.5, 45.0], "expected": 70.50000000000843}, {"input": [70.5, 45.5], "expected": 70.50000000001388}, {"input": [70.5, 46.0], "expected": 70.5000000000229}, {"input": [70.5, 46.5], "expected": 70.50000000003776}, {"input": [70.5, 47.0], "expected": 70.50000000006224}, {"input": [70.5, 47.5], "expected": 70.50000000010262}, {"input": [70.5, 48.0], "expected": 70.5000000001692}, {"input": [70.5, 48.5], "expected": 70.50000000027894}, {"input": [70.5, 49.0], "expected": 70.5000000004599}, {"input": [70.5, 49.5], "expected": 70.50000000075826}, {"input": [70.5, 50.0], "expected": 70.50000000125016}, {"input": [70.5, 50.5], "expected": 70.50000000206116}, {"input": [70.5, 51.0], "expected": 70.50000000339827}, {"input": [70.5, 51.5], "expected": 70.5000000056028}, {"input": [70.5, 52.0], "expected": 70.50000000923745}, {"input": [70.5, 52.5], "expected": 70.50000001522999}, {"input": [70.5, 53.0], "expected": 70.50000002511}, {"input": [70.5, 53.5], "expected": 70.50000004139937}, {"input": [70.5, 54.0], "expected": 70.50000006825603}, {"input": [70.5, 54.5], "expected": 70.50000011253516}, {"input": [70.5, 55.0], "expected": 70.50000018553912}, {"input": [70.5, 55.5], "expected": 70.50000030590228}, {"input": [70.5, 56.0], "expected": 70.50000050434754}, {"input": [70.5, 56.5], "expected": 70.50000083152837}, {"input": [70.5, 57.0], "expected": 70.50000137095815}, {"input": [70.5, 57.5], "expected": 70.50000226032685}, {"input": [70.5, 58.0], "expected": 70.50000372664623}, {"input": [70.5, 58.5], "expected": 70.50000614419348}, {"input": [70.5, 59.0], "expected": 70.50001013004228}, {"input": [70.5, 59.5], "expected": 70.50001670156132}, {"input": [70.5, 60.0], "expected": 70.50002753607023}, {"input": [70.5, 60.5], "expected": 70.50004539889922}, {"input": [70.5, 61.0], "expected": 70.50007484902864}, {"input": [70.5, 61.5], "expected": 70.50012340218973}, {"input": [70.5, 62.0], "expected": 70.50020344767213}, {"input": [70.5, 62.5], "expected": 70.5003354063729}, {"input": [70.5, 63.0], "expected": 70.50055293147535}, {"input": [70.5, 63.5], "expected": 70.50091146645377}, {"input": [70.5, 64.0], "expected": 70.50150231015975}, {"input": [70.5, 64.5], "expected": 70.50247568513772}, {"input": [70.5, 65.0], "expected": 70.50407844327057}, {"input": [70.5, 65.5], "expected": 70.50671534848912}, {"input": [70.5, 66.0], "expected": 70.5110477448486}, {"input": [70.5, 66.5], "expected": 70.5181499279178}, {"input": [70.5, 67.0], "expected": 70.52975041827263}, {"input": [70.5, 67.5], "expected": 70.54858735157374}, {"input": [70.5, 68.0], "expected": 70.57888973429255}, {"input": [70.5, 68.5], "expected": 70.62692801104298}, {"input": [70.5, 69.0], "expected": 70.70141327798275}, {"input": [70.5, 69.5], "expected": 70.81326168751822}, {"input": [70.5, 70.0], "expected": 70.9740769841801}, {"input": [70.5, 70.5], "expected": 71.19314718055995}, {"input": [70.5, 71.0], "expected": 71.4740769841801}, {"input": [70.5, 71.5], "expected": 71.81326168751822}, {"input": [70.5, 72.0], "expected": 72.20141327798275}, {"input": [70.5, 72.5], "expected": 72.62692801104298}, {"input": [70.5, 73.0], "expected": 73.07888973429255}, {"input": [70.5, 73.5], "expected": 73.54858735157374}, {"input": [70.5, 74.0], "expected": 74.02975041827263}, {"input": [70.5, 74.5], "expected": 74.5181499279178}, {"input": [70.5, 75.0], "expected": 75.0110477448486}, {"input": [70.5, 75.5], "expected": 75.50671534848912}, {"input": [70.5, 76.0], "expected": 76.00407844327057}, {"input": [70.5, 76.5], "expected": 76.50247568513772}, {"input": [70.5, 77.0], "expected": 77.00150231015975}, {"input": [70.5, 77.5], "expected": 77.50091146645377}, {"input": [70.5, 78.0], "expected": 78.00055293147535}, {"input": [70.5, 78.5], "expected": 78.5003354063729}, {"input": [70.5, 79.0], "expected": 79.00020344767213}, {"input": [70.5, 79.5], "expected": 79.50012340218973}, {"input": [70.5, 80.0], "expected": 80.00007484902864}, {"input": [70.5, 80.5], "expected": 80.50004539889922}, {"input": [70.5, 81.0], "expected": 81.00002753607023}, {"input": [70.5, 81.5], "expected": 81.50001670156132}, {"input": [70.5, 82.0], "expected": 82.00001013004228}, {"input": [70.5, 82.5], "expected": 82.50000614419348}, {"input": [70.5, 83.0], "expected": 83.00000372664623}, {"input": [70.5, 83.5], "expected": 83.50000226032685}, {"input": [70.5, 84.0], "expected": 84.00000137095815}, {"input": [70.5, 84.5], "expected": 84.50000083152837}, {"input": [70.5, 85.0], "expected": 85.00000050434754}, {"input": [70.5, 85.5], "expected": 85.50000030590228}, {"input": [70.5, 86.0], "expected": 86.00000018553912}, {"input": [70.5, 86.5], "expected": 86.50000011253516}, {"input": [70.5, 87.0], "expected": 87.00000006825603}, {"input": [70.5, 87.5], "expected": 87.50000004139937}, {"input": [70.5, 88.0], "expected": 88.00000002511}, {"input": [70.5, 88.5], "expected": 88.50000001522999}, {"input": [70.5, 89.0], "expected": 89.00000000923745}, {"input": [70.5, 89.5], "expected": 89.5000000056028}, {"input": [70.5, 90.0], "expected": 90.00000000339827}, {"input": [70.5, 90.5], "expected": 90.50000000206116}, {"input": [70.5, 91.0], "expected": 91.00000000125016}, {"input": [70.5, 91.5], "expected": 91.50000000075826}, {"input": [70.5, 92.0], "expected": 92.0000000004599}, {"input": [70.5, 92.5], "expected": 92.50000000027894}, {"input": [70.5, 93.0], "expected": 93.0000000001692}, {"input": [70.5, 93.5], "expected": 93.50000000010262}, {"input": [70.5, 94.0], "expected": 94.00000000006224}, {"input": [70.5, 94.5], "expected": 94.50000000003776}, {"input": [70.5, 95.0], "expected": 95.0000000000229}, {"input": [70.5, 95.5], "expected": 95.50000000001388}, {"input": [70.5, 96.0], "expected": 96.00000000000843}, {"input": [70.5, 96.5], "expected": 96.50000000000512}, {"input": [70.5, 97.0], "expected": 97.0000000000031}, {"input": [70.5, 97.5], "expected": 97.50000000000188}, {"input": [70.5, 98.0], "expected": 98.00000000000114}, {"input": [70.5, 98.5], "expected": 98.5000000000007}, {"input": [70.5, 99.0], "expected": 99.00000000000043}, {"input": [70.5, 99.5], "expected": 99.50000000000026}, {"input": [71.0, -100.0], "expected": 71.0}, {"input": [71.0, -99.5], "expected": 71.0}, {"input": [71.0, -99.0], "expected": 71.0}, {"input": [71.0, -98.5], "expected": 71.0}, {"input": [71.0, -98.0], "expected": 71.0}, {"input": [71.0, -97.5], "expected": 71.0}, {"input": [71.0, -97.0], "expected": 71.0}, {"input": [71.0, -96.5], "expected": 71.0}, {"input": [71.0, -96.0], "expected": 71.0}, {"input": [71.0, -95.5], "expected": 71.0}, {"input": [71.0, -95.0], "expected": 71.0}, {"input": [71.0, -94.5], "expected": 71.0}, {"input": [71.0, -94.0], "expected": 71.0}, {"input": [71.0, -93.5], "expected": 71.0}, {"input": [71.0, -93.0], "expected": 71.0}, {"input": [71.0, -92.5], "expected": 71.0}, {"input": [71.0, -92.0], "expected": 71.0}, {"input": [71.0, -91.5], "expected": 71.0}, {"input": [71.0, -91.0], "expected": 71.0}, {"input": [71.0, -90.5], "expected": 71.0}, {"input": [71.0, -90.0], "expected": 71.0}, {"input": [71.0, -89.5], "expected": 71.0}, {"input": [71.0, -89.0], "expected": 71.0}, {"input": [71.0, -88.5], "expected": 71.0}, {"input": [71.0, -88.0], "expected": 71.0}, {"input": [71.0, -87.5], "expected": 71.0}, {"input": [71.0, -87.0], "expected": 71.0}, {"input": [71.0, -86.5], "expected": 71.0}, {"input": [71.0, -86.0], "expected": 71.0}, {"input": [71.0, -85.5], "expected": 71.0}, {"input": [71.0, -85.0], "expected": 71.0}, {"input": [71.0, -84.5], "expected": 71.0}, {"input": [71.0, -84.0], "expected": 71.0}, {"input": [71.0, -83.5], "expected": 71.0}, {"input": [71.0, -83.0], "expected": 71.0}, {"input": [71.0, -82.5], "expected": 71.0}, {"input": [71.0, -82.0], "expected": 71.0}, {"input": [71.0, -81.5], "expected": 71.0}, {"input": [71.0, -81.0], "expected": 71.0}, {"input": [71.0, -80.5], "expected": 71.0}, {"input": [71.0, -80.0], "expected": 71.0}, {"input": [71.0, -79.5], "expected": 71.0}, {"input": [71.0, -79.0], "expected": 71.0}, {"input": [71.0, -78.5], "expected": 71.0}, {"input": [71.0, -78.0], "expected": 71.0}, {"input": [71.0, -77.5], "expected": 71.0}, {"input": [71.0, -77.0], "expected": 71.0}, {"input": [71.0, -76.5], "expected": 71.0}, {"input": [71.0, -76.0], "expected": 71.0}, {"input": [71.0, -75.5], "expected": 71.0}, {"input": [71.0, -75.0], "expected": 71.0}, {"input": [71.0, -74.5], "expected": 71.0}, {"input": [71.0, -74.0], "expected": 71.0}, {"input": [71.0, -73.5], "expected": 71.0}, {"input": [71.0, -73.0], "expected": 71.0}, {"input": [71.0, -72.5], "expected": 71.0}, {"input": [71.0, -72.0], "expected": 71.0}, {"input": [71.0, -71.5], "expected": 71.0}, {"input": [71.0, -71.0], "expected": 71.0}, {"input": [71.0, -70.5], "expected": 71.0}, {"input": [71.0, -70.0], "expected": 71.0}, {"input": [71.0, -69.5], "expected": 71.0}, {"input": [71.0, -69.0], "expected": 71.0}, {"input": [71.0, -68.5], "expected": 71.0}, {"input": [71.0, -68.0], "expected": 71.0}, {"input": [71.0, -67.5], "expected": 71.0}, {"input": [71.0, -67.0], "expected": 71.0}, {"input": [71.0, -66.5], "expected": 71.0}, {"input": [71.0, -66.0], "expected": 71.0}, {"input": [71.0, -65.5], "expected": 71.0}, {"input": [71.0, -65.0], "expected": 71.0}, {"input": [71.0, -64.5], "expected": 71.0}, {"input": [71.0, -64.0], "expected": 71.0}, {"input": [71.0, -63.5], "expected": 71.0}, {"input": [71.0, -63.0], "expected": 71.0}, {"input": [71.0, -62.5], "expected": 71.0}, {"input": [71.0, -62.0], "expected": 71.0}, {"input": [71.0, -61.5], "expected": 71.0}, {"input": [71.0, -61.0], "expected": 71.0}, {"input": [71.0, -60.5], "expected": 71.0}, {"input": [71.0, -60.0], "expected": 71.0}, {"input": [71.0, -59.5], "expected": 71.0}, {"input": [71.0, -59.0], "expected": 71.0}, {"input": [71.0, -58.5], "expected": 71.0}, {"input": [71.0, -58.0], "expected": 71.0}, {"input": [71.0, -57.5], "expected": 71.0}, {"input": [71.0, -57.0], "expected": 71.0}, {"input": [71.0, -56.5], "expected": 71.0}, {"input": [71.0, -56.0], "expected": 71.0}, {"input": [71.0, -55.5], "expected": 71.0}, {"input": [71.0, -55.0], "expected": 71.0}, {"input": [71.0, -54.5], "expected": 71.0}, {"input": [71.0, -54.0], "expected": 71.0}, {"input": [71.0, -53.5], "expected": 71.0}, {"input": [71.0, -53.0], "expected": 71.0}, {"input": [71.0, -52.5], "expected": 71.0}, {"input": [71.0, -52.0], "expected": 71.0}, {"input": [71.0, -51.5], "expected": 71.0}, {"input": [71.0, -51.0], "expected": 71.0}, {"input": [71.0, -50.5], "expected": 71.0}, {"input": [71.0, -50.0], "expected": 71.0}, {"input": [71.0, -49.5], "expected": 71.0}, {"input": [71.0, -49.0], "expected": 71.0}, {"input": [71.0, -48.5], "expected": 71.0}, {"input": [71.0, -48.0], "expected": 71.0}, {"input": [71.0, -47.5], "expected": 71.0}, {"input": [71.0, -47.0], "expected": 71.0}, {"input": [71.0, -46.5], "expected": 71.0}, {"input": [71.0, -46.0], "expected": 71.0}, {"input": [71.0, -45.5], "expected": 71.0}, {"input": [71.0, -45.0], "expected": 71.0}, {"input": [71.0, -44.5], "expected": 71.0}, {"input": [71.0, -44.0], "expected": 71.0}, {"input": [71.0, -43.5], "expected": 71.0}, {"input": [71.0, -43.0], "expected": 71.0}, {"input": [71.0, -42.5], "expected": 71.0}, {"input": [71.0, -42.0], "expected": 71.0}, {"input": [71.0, -41.5], "expected": 71.0}, {"input": [71.0, -41.0], "expected": 71.0}, {"input": [71.0, -40.5], "expected": 71.0}, {"input": [71.0, -40.0], "expected": 71.0}, {"input": [71.0, -39.5], "expected": 71.0}, {"input": [71.0, -39.0], "expected": 71.0}, {"input": [71.0, -38.5], "expected": 71.0}, {"input": [71.0, -38.0], "expected": 71.0}, {"input": [71.0, -37.5], "expected": 71.0}, {"input": [71.0, -37.0], "expected": 71.0}, {"input": [71.0, -36.5], "expected": 71.0}, {"input": [71.0, -36.0], "expected": 71.0}, {"input": [71.0, -35.5], "expected": 71.0}, {"input": [71.0, -35.0], "expected": 71.0}, {"input": [71.0, -34.5], "expected": 71.0}, {"input": [71.0, -34.0], "expected": 71.0}, {"input": [71.0, -33.5], "expected": 71.0}, {"input": [71.0, -33.0], "expected": 71.0}, {"input": [71.0, -32.5], "expected": 71.0}, {"input": [71.0, -32.0], "expected": 71.0}, {"input": [71.0, -31.5], "expected": 71.0}, {"input": [71.0, -31.0], "expected": 71.0}, {"input": [71.0, -30.5], "expected": 71.0}, {"input": [71.0, -30.0], "expected": 71.0}, {"input": [71.0, -29.5], "expected": 71.0}, {"input": [71.0, -29.0], "expected": 71.0}, {"input": [71.0, -28.5], "expected": 71.0}, {"input": [71.0, -28.0], "expected": 71.0}, {"input": [71.0, -27.5], "expected": 71.0}, {"input": [71.0, -27.0], "expected": 71.0}, {"input": [71.0, -26.5], "expected": 71.0}, {"input": [71.0, -26.0], "expected": 71.0}, {"input": [71.0, -25.5], "expected": 71.0}, {"input": [71.0, -25.0], "expected": 71.0}, {"input": [71.0, -24.5], "expected": 71.0}, {"input": [71.0, -24.0], "expected": 71.0}, {"input": [71.0, -23.5], "expected": 71.0}, {"input": [71.0, -23.0], "expected": 71.0}, {"input": [71.0, -22.5], "expected": 71.0}, {"input": [71.0, -22.0], "expected": 71.0}, {"input": [71.0, -21.5], "expected": 71.0}, {"input": [71.0, -21.0], "expected": 71.0}, {"input": [71.0, -20.5], "expected": 71.0}, {"input": [71.0, -20.0], "expected": 71.0}, {"input": [71.0, -19.5], "expected": 71.0}, {"input": [71.0, -19.0], "expected": 71.0}, {"input": [71.0, -18.5], "expected": 71.0}, {"input": [71.0, -18.0], "expected": 71.0}, {"input": [71.0, -17.5], "expected": 71.0}, {"input": [71.0, -17.0], "expected": 71.0}, {"input": [71.0, -16.5], "expected": 71.0}, {"input": [71.0, -16.0], "expected": 71.0}, {"input": [71.0, -15.5], "expected": 71.0}, {"input": [71.0, -15.0], "expected": 71.0}, {"input": [71.0, -14.5], "expected": 71.0}, {"input": [71.0, -14.0], "expected": 71.0}, {"input": [71.0, -13.5], "expected": 71.0}, {"input": [71.0, -13.0], "expected": 71.0}, {"input": [71.0, -12.5], "expected": 71.0}, {"input": [71.0, -12.0], "expected": 71.0}, {"input": [71.0, -11.5], "expected": 71.0}, {"input": [71.0, -11.0], "expected": 71.0}, {"input": [71.0, -10.5], "expected": 71.0}, {"input": [71.0, -10.0], "expected": 71.0}, {"input": [71.0, -9.5], "expected": 71.0}, {"input": [71.0, -9.0], "expected": 71.0}, {"input": [71.0, -8.5], "expected": 71.0}, {"input": [71.0, -8.0], "expected": 71.0}, {"input": [71.0, -7.5], "expected": 71.0}, {"input": [71.0, -7.0], "expected": 71.0}, {"input": [71.0, -6.5], "expected": 71.0}, {"input": [71.0, -6.0], "expected": 71.0}, {"input": [71.0, -5.5], "expected": 71.0}, {"input": [71.0, -5.0], "expected": 71.0}, {"input": [71.0, -4.5], "expected": 71.0}, {"input": [71.0, -4.0], "expected": 71.0}, {"input": [71.0, -3.5], "expected": 71.0}, {"input": [71.0, -3.0], "expected": 71.0}, {"input": [71.0, -2.5], "expected": 71.0}, {"input": [71.0, -2.0], "expected": 71.0}, {"input": [71.0, -1.5], "expected": 71.0}, {"input": [71.0, -1.0], "expected": 71.0}, {"input": [71.0, -0.5], "expected": 71.0}, {"input": [71.0, 0.0], "expected": 71.0}, {"input": [71.0, 0.5], "expected": 71.0}, {"input": [71.0, 1.0], "expected": 71.0}, {"input": [71.0, 1.5], "expected": 71.0}, {"input": [71.0, 2.0], "expected": 71.0}, {"input": [71.0, 2.5], "expected": 71.0}, {"input": [71.0, 3.0], "expected": 71.0}, {"input": [71.0, 3.5], "expected": 71.0}, {"input": [71.0, 4.0], "expected": 71.0}, {"input": [71.0, 4.5], "expected": 71.0}, {"input": [71.0, 5.0], "expected": 71.0}, {"input": [71.0, 5.5], "expected": 71.0}, {"input": [71.0, 6.0], "expected": 71.0}, {"input": [71.0, 6.5], "expected": 71.0}, {"input": [71.0, 7.0], "expected": 71.0}, {"input": [71.0, 7.5], "expected": 71.0}, {"input": [71.0, 8.0], "expected": 71.0}, {"input": [71.0, 8.5], "expected": 71.0}, {"input": [71.0, 9.0], "expected": 71.0}, {"input": [71.0, 9.5], "expected": 71.0}, {"input": [71.0, 10.0], "expected": 71.0}, {"input": [71.0, 10.5], "expected": 71.0}, {"input": [71.0, 11.0], "expected": 71.0}, {"input": [71.0, 11.5], "expected": 71.0}, {"input": [71.0, 12.0], "expected": 71.0}, {"input": [71.0, 12.5], "expected": 71.0}, {"input": [71.0, 13.0], "expected": 71.0}, {"input": [71.0, 13.5], "expected": 71.0}, {"input": [71.0, 14.0], "expected": 71.0}, {"input": [71.0, 14.5], "expected": 71.0}, {"input": [71.0, 15.0], "expected": 71.0}, {"input": [71.0, 15.5], "expected": 71.0}, {"input": [71.0, 16.0], "expected": 71.0}, {"input": [71.0, 16.5], "expected": 71.0}, {"input": [71.0, 17.0], "expected": 71.0}, {"input": [71.0, 17.5], "expected": 71.0}, {"input": [71.0, 18.0], "expected": 71.0}, {"input": [71.0, 18.5], "expected": 71.0}, {"input": [71.0, 19.0], "expected": 71.0}, {"input": [71.0, 19.5], "expected": 71.0}, {"input": [71.0, 20.0], "expected": 71.0}, {"input": [71.0, 20.5], "expected": 71.0}, {"input": [71.0, 21.0], "expected": 71.0}, {"input": [71.0, 21.5], "expected": 71.0}, {"input": [71.0, 22.0], "expected": 71.0}, {"input": [71.0, 22.5], "expected": 71.0}, {"input": [71.0, 23.0], "expected": 71.0}, {"input": [71.0, 23.5], "expected": 71.0}, {"input": [71.0, 24.0], "expected": 71.0}, {"input": [71.0, 24.5], "expected": 71.0}, {"input": [71.0, 25.0], "expected": 71.0}, {"input": [71.0, 25.5], "expected": 71.0}, {"input": [71.0, 26.0], "expected": 71.0}, {"input": [71.0, 26.5], "expected": 71.0}, {"input": [71.0, 27.0], "expected": 71.0}, {"input": [71.0, 27.5], "expected": 71.0}, {"input": [71.0, 28.0], "expected": 71.0}, {"input": [71.0, 28.5], "expected": 71.0}, {"input": [71.0, 29.0], "expected": 71.0}, {"input": [71.0, 29.5], "expected": 71.0}, {"input": [71.0, 30.0], "expected": 71.0}, {"input": [71.0, 30.5], "expected": 71.0}, {"input": [71.0, 31.0], "expected": 71.0}, {"input": [71.0, 31.5], "expected": 71.0}, {"input": [71.0, 32.0], "expected": 71.0}, {"input": [71.0, 32.5], "expected": 71.0}, {"input": [71.0, 33.0], "expected": 71.0}, {"input": [71.0, 33.5], "expected": 71.0}, {"input": [71.0, 34.0], "expected": 71.0}, {"input": [71.0, 34.5], "expected": 71.0}, {"input": [71.0, 35.0], "expected": 71.0}, {"input": [71.0, 35.5], "expected": 71.0}, {"input": [71.0, 36.0], "expected": 71.0}, {"input": [71.0, 36.5], "expected": 71.0}, {"input": [71.0, 37.0], "expected": 71.0}, {"input": [71.0, 37.5], "expected": 71.0}, {"input": [71.0, 38.0], "expected": 71.0}, {"input": [71.0, 38.5], "expected": 71.00000000000001}, {"input": [71.0, 39.0], "expected": 71.00000000000001}, {"input": [71.0, 39.5], "expected": 71.00000000000001}, {"input": [71.0, 40.0], "expected": 71.00000000000003}, {"input": [71.0, 40.5], "expected": 71.00000000000006}, {"input": [71.0, 41.0], "expected": 71.0000000000001}, {"input": [71.0, 41.5], "expected": 71.00000000000016}, {"input": [71.0, 42.0], "expected": 71.00000000000026}, {"input": [71.0, 42.5], "expected": 71.00000000000043}, {"input": [71.0, 43.0], "expected": 71.0000000000007}, {"input": [71.0, 43.5], "expected": 71.00000000000114}, {"input": [71.0, 44.0], "expected": 71.00000000000188}, {"input": [71.0, 44.5], "expected": 71.0000000000031}, {"input": [71.0, 45.0], "expected": 71.00000000000512}, {"input": [71.0, 45.5], "expected": 71.00000000000843}, {"input": [71.0, 46.0], "expected": 71.00000000001388}, {"input": [71.0, 46.5], "expected": 71.0000000000229}, {"input": [71.0, 47.0], "expected": 71.00000000003776}, {"input": [71.0, 47.5], "expected": 71.00000000006224}, {"input": [71.0, 48.0], "expected": 71.00000000010262}, {"input": [71.0, 48.5], "expected": 71.0000000001692}, {"input": [71.0, 49.0], "expected": 71.00000000027894}, {"input": [71.0, 49.5], "expected": 71.0000000004599}, {"input": [71.0, 50.0], "expected": 71.00000000075826}, {"input": [71.0, 50.5], "expected": 71.00000000125016}, {"input": [71.0, 51.0], "expected": 71.00000000206116}, {"input": [71.0, 51.5], "expected": 71.00000000339827}, {"input": [71.0, 52.0], "expected": 71.0000000056028}, {"input": [71.0, 52.5], "expected": 71.00000000923745}, {"input": [71.0, 53.0], "expected": 71.00000001522999}, {"input": [71.0, 53.5], "expected": 71.00000002511}, {"input": [71.0, 54.0], "expected": 71.00000004139937}, {"input": [71.0, 54.5], "expected": 71.00000006825603}, {"input": [71.0, 55.0], "expected": 71.00000011253516}, {"input": [71.0, 55.5], "expected": 71.00000018553912}, {"input": [71.0, 56.0], "expected": 71.00000030590228}, {"input": [71.0, 56.5], "expected": 71.00000050434754}, {"input": [71.0, 57.0], "expected": 71.00000083152837}, {"input": [71.0, 57.5], "expected": 71.00000137095815}, {"input": [71.0, 58.0], "expected": 71.00000226032685}, {"input": [71.0, 58.5], "expected": 71.00000372664623}, {"input": [71.0, 59.0], "expected": 71.00000614419348}, {"input": [71.0, 59.5], "expected": 71.00001013004228}, {"input": [71.0, 60.0], "expected": 71.00001670156132}, {"input": [71.0, 60.5], "expected": 71.00002753607023}, {"input": [71.0, 61.0], "expected": 71.00004539889922}, {"input": [71.0, 61.5], "expected": 71.00007484902864}, {"input": [71.0, 62.0], "expected": 71.00012340218973}, {"input": [71.0, 62.5], "expected": 71.00020344767213}, {"input": [71.0, 63.0], "expected": 71.0003354063729}, {"input": [71.0, 63.5], "expected": 71.00055293147535}, {"input": [71.0, 64.0], "expected": 71.00091146645377}, {"input": [71.0, 64.5], "expected": 71.00150231015975}, {"input": [71.0, 65.0], "expected": 71.00247568513772}, {"input": [71.0, 65.5], "expected": 71.00407844327057}, {"input": [71.0, 66.0], "expected": 71.00671534848912}, {"input": [71.0, 66.5], "expected": 71.0110477448486}, {"input": [71.0, 67.0], "expected": 71.0181499279178}, {"input": [71.0, 67.5], "expected": 71.02975041827263}, {"input": [71.0, 68.0], "expected": 71.04858735157374}, {"input": [71.0, 68.5], "expected": 71.07888973429255}, {"input": [71.0, 69.0], "expected": 71.12692801104298}, {"input": [71.0, 69.5], "expected": 71.20141327798275}, {"input": [71.0, 70.0], "expected": 71.31326168751822}, {"input": [71.0, 70.5], "expected": 71.4740769841801}, {"input": [71.0, 71.0], "expected": 71.69314718055995}, {"input": [71.0, 71.5], "expected": 71.9740769841801}, {"input": [71.0, 72.0], "expected": 72.31326168751822}, {"input": [71.0, 72.5], "expected": 72.70141327798275}, {"input": [71.0, 73.0], "expected": 73.12692801104298}, {"input": [71.0, 73.5], "expected": 73.57888973429255}, {"input": [71.0, 74.0], "expected": 74.04858735157374}, {"input": [71.0, 74.5], "expected": 74.52975041827263}, {"input": [71.0, 75.0], "expected": 75.0181499279178}, {"input": [71.0, 75.5], "expected": 75.5110477448486}, {"input": [71.0, 76.0], "expected": 76.00671534848912}, {"input": [71.0, 76.5], "expected": 76.50407844327057}, {"input": [71.0, 77.0], "expected": 77.00247568513772}, {"input": [71.0, 77.5], "expected": 77.50150231015975}, {"input": [71.0, 78.0], "expected": 78.00091146645377}, {"input": [71.0, 78.5], "expected": 78.50055293147535}, {"input": [71.0, 79.0], "expected": 79.0003354063729}, {"input": [71.0, 79.5], "expected": 79.50020344767213}, {"input": [71.0, 80.0], "expected": 80.00012340218973}, {"input": [71.0, 80.5], "expected": 80.50007484902864}, {"input": [71.0, 81.0], "expected": 81.00004539889922}, {"input": [71.0, 81.5], "expected": 81.50002753607023}, {"input": [71.0, 82.0], "expected": 82.00001670156132}, {"input": [71.0, 82.5], "expected": 82.50001013004228}, {"input": [71.0, 83.0], "expected": 83.00000614419348}, {"input": [71.0, 83.5], "expected": 83.50000372664623}, {"input": [71.0, 84.0], "expected": 84.00000226032685}, {"input": [71.0, 84.5], "expected": 84.50000137095815}, {"input": [71.0, 85.0], "expected": 85.00000083152837}, {"input": [71.0, 85.5], "expected": 85.50000050434754}, {"input": [71.0, 86.0], "expected": 86.00000030590228}, {"input": [71.0, 86.5], "expected": 86.50000018553912}, {"input": [71.0, 87.0], "expected": 87.00000011253516}, {"input": [71.0, 87.5], "expected": 87.50000006825603}, {"input": [71.0, 88.0], "expected": 88.00000004139937}, {"input": [71.0, 88.5], "expected": 88.50000002511}, {"input": [71.0, 89.0], "expected": 89.00000001522999}, {"input": [71.0, 89.5], "expected": 89.50000000923745}, {"input": [71.0, 90.0], "expected": 90.0000000056028}, {"input": [71.0, 90.5], "expected": 90.50000000339827}, {"input": [71.0, 91.0], "expected": 91.00000000206116}, {"input": [71.0, 91.5], "expected": 91.50000000125016}, {"input": [71.0, 92.0], "expected": 92.00000000075826}, {"input": [71.0, 92.5], "expected": 92.5000000004599}, {"input": [71.0, 93.0], "expected": 93.00000000027894}, {"input": [71.0, 93.5], "expected": 93.5000000001692}, {"input": [71.0, 94.0], "expected": 94.00000000010262}, {"input": [71.0, 94.5], "expected": 94.50000000006224}, {"input": [71.0, 95.0], "expected": 95.00000000003776}, {"input": [71.0, 95.5], "expected": 95.5000000000229}, {"input": [71.0, 96.0], "expected": 96.00000000001388}, {"input": [71.0, 96.5], "expected": 96.50000000000843}, {"input": [71.0, 97.0], "expected": 97.00000000000512}, {"input": [71.0, 97.5], "expected": 97.5000000000031}, {"input": [71.0, 98.0], "expected": 98.00000000000188}, {"input": [71.0, 98.5], "expected": 98.50000000000114}, {"input": [71.0, 99.0], "expected": 99.0000000000007}, {"input": [71.0, 99.5], "expected": 99.50000000000043}, {"input": [71.5, -100.0], "expected": 71.5}, {"input": [71.5, -99.5], "expected": 71.5}, {"input": [71.5, -99.0], "expected": 71.5}, {"input": [71.5, -98.5], "expected": 71.5}, {"input": [71.5, -98.0], "expected": 71.5}, {"input": [71.5, -97.5], "expected": 71.5}, {"input": [71.5, -97.0], "expected": 71.5}, {"input": [71.5, -96.5], "expected": 71.5}, {"input": [71.5, -96.0], "expected": 71.5}, {"input": [71.5, -95.5], "expected": 71.5}, {"input": [71.5, -95.0], "expected": 71.5}, {"input": [71.5, -94.5], "expected": 71.5}, {"input": [71.5, -94.0], "expected": 71.5}, {"input": [71.5, -93.5], "expected": 71.5}, {"input": [71.5, -93.0], "expected": 71.5}, {"input": [71.5, -92.5], "expected": 71.5}, {"input": [71.5, -92.0], "expected": 71.5}, {"input": [71.5, -91.5], "expected": 71.5}, {"input": [71.5, -91.0], "expected": 71.5}, {"input": [71.5, -90.5], "expected": 71.5}, {"input": [71.5, -90.0], "expected": 71.5}, {"input": [71.5, -89.5], "expected": 71.5}, {"input": [71.5, -89.0], "expected": 71.5}, {"input": [71.5, -88.5], "expected": 71.5}, {"input": [71.5, -88.0], "expected": 71.5}, {"input": [71.5, -87.5], "expected": 71.5}, {"input": [71.5, -87.0], "expected": 71.5}, {"input": [71.5, -86.5], "expected": 71.5}, {"input": [71.5, -86.0], "expected": 71.5}, {"input": [71.5, -85.5], "expected": 71.5}, {"input": [71.5, -85.0], "expected": 71.5}, {"input": [71.5, -84.5], "expected": 71.5}, {"input": [71.5, -84.0], "expected": 71.5}, {"input": [71.5, -83.5], "expected": 71.5}, {"input": [71.5, -83.0], "expected": 71.5}, {"input": [71.5, -82.5], "expected": 71.5}, {"input": [71.5, -82.0], "expected": 71.5}, {"input": [71.5, -81.5], "expected": 71.5}, {"input": [71.5, -81.0], "expected": 71.5}, {"input": [71.5, -80.5], "expected": 71.5}, {"input": [71.5, -80.0], "expected": 71.5}, {"input": [71.5, -79.5], "expected": 71.5}, {"input": [71.5, -79.0], "expected": 71.5}, {"input": [71.5, -78.5], "expected": 71.5}, {"input": [71.5, -78.0], "expected": 71.5}, {"input": [71.5, -77.5], "expected": 71.5}, {"input": [71.5, -77.0], "expected": 71.5}, {"input": [71.5, -76.5], "expected": 71.5}, {"input": [71.5, -76.0], "expected": 71.5}, {"input": [71.5, -75.5], "expected": 71.5}, {"input": [71.5, -75.0], "expected": 71.5}, {"input": [71.5, -74.5], "expected": 71.5}, {"input": [71.5, -74.0], "expected": 71.5}, {"input": [71.5, -73.5], "expected": 71.5}, {"input": [71.5, -73.0], "expected": 71.5}, {"input": [71.5, -72.5], "expected": 71.5}, {"input": [71.5, -72.0], "expected": 71.5}, {"input": [71.5, -71.5], "expected": 71.5}, {"input": [71.5, -71.0], "expected": 71.5}, {"input": [71.5, -70.5], "expected": 71.5}, {"input": [71.5, -70.0], "expected": 71.5}, {"input": [71.5, -69.5], "expected": 71.5}, {"input": [71.5, -69.0], "expected": 71.5}, {"input": [71.5, -68.5], "expected": 71.5}, {"input": [71.5, -68.0], "expected": 71.5}, {"input": [71.5, -67.5], "expected": 71.5}, {"input": [71.5, -67.0], "expected": 71.5}, {"input": [71.5, -66.5], "expected": 71.5}, {"input": [71.5, -66.0], "expected": 71.5}, {"input": [71.5, -65.5], "expected": 71.5}, {"input": [71.5, -65.0], "expected": 71.5}, {"input": [71.5, -64.5], "expected": 71.5}, {"input": [71.5, -64.0], "expected": 71.5}, {"input": [71.5, -63.5], "expected": 71.5}, {"input": [71.5, -63.0], "expected": 71.5}, {"input": [71.5, -62.5], "expected": 71.5}, {"input": [71.5, -62.0], "expected": 71.5}, {"input": [71.5, -61.5], "expected": 71.5}, {"input": [71.5, -61.0], "expected": 71.5}, {"input": [71.5, -60.5], "expected": 71.5}, {"input": [71.5, -60.0], "expected": 71.5}, {"input": [71.5, -59.5], "expected": 71.5}, {"input": [71.5, -59.0], "expected": 71.5}, {"input": [71.5, -58.5], "expected": 71.5}, {"input": [71.5, -58.0], "expected": 71.5}, {"input": [71.5, -57.5], "expected": 71.5}, {"input": [71.5, -57.0], "expected": 71.5}, {"input": [71.5, -56.5], "expected": 71.5}, {"input": [71.5, -56.0], "expected": 71.5}, {"input": [71.5, -55.5], "expected": 71.5}, {"input": [71.5, -55.0], "expected": 71.5}, {"input": [71.5, -54.5], "expected": 71.5}, {"input": [71.5, -54.0], "expected": 71.5}, {"input": [71.5, -53.5], "expected": 71.5}, {"input": [71.5, -53.0], "expected": 71.5}, {"input": [71.5, -52.5], "expected": 71.5}, {"input": [71.5, -52.0], "expected": 71.5}, {"input": [71.5, -51.5], "expected": 71.5}, {"input": [71.5, -51.0], "expected": 71.5}, {"input": [71.5, -50.5], "expected": 71.5}, {"input": [71.5, -50.0], "expected": 71.5}, {"input": [71.5, -49.5], "expected": 71.5}, {"input": [71.5, -49.0], "expected": 71.5}, {"input": [71.5, -48.5], "expected": 71.5}, {"input": [71.5, -48.0], "expected": 71.5}, {"input": [71.5, -47.5], "expected": 71.5}, {"input": [71.5, -47.0], "expected": 71.5}, {"input": [71.5, -46.5], "expected": 71.5}, {"input": [71.5, -46.0], "expected": 71.5}, {"input": [71.5, -45.5], "expected": 71.5}, {"input": [71.5, -45.0], "expected": 71.5}, {"input": [71.5, -44.5], "expected": 71.5}, {"input": [71.5, -44.0], "expected": 71.5}, {"input": [71.5, -43.5], "expected": 71.5}, {"input": [71.5, -43.0], "expected": 71.5}, {"input": [71.5, -42.5], "expected": 71.5}, {"input": [71.5, -42.0], "expected": 71.5}, {"input": [71.5, -41.5], "expected": 71.5}, {"input": [71.5, -41.0], "expected": 71.5}, {"input": [71.5, -40.5], "expected": 71.5}, {"input": [71.5, -40.0], "expected": 71.5}, {"input": [71.5, -39.5], "expected": 71.5}, {"input": [71.5, -39.0], "expected": 71.5}, {"input": [71.5, -38.5], "expected": 71.5}, {"input": [71.5, -38.0], "expected": 71.5}, {"input": [71.5, -37.5], "expected": 71.5}, {"input": [71.5, -37.0], "expected": 71.5}, {"input": [71.5, -36.5], "expected": 71.5}, {"input": [71.5, -36.0], "expected": 71.5}, {"input": [71.5, -35.5], "expected": 71.5}, {"input": [71.5, -35.0], "expected": 71.5}, {"input": [71.5, -34.5], "expected": 71.5}, {"input": [71.5, -34.0], "expected": 71.5}, {"input": [71.5, -33.5], "expected": 71.5}, {"input": [71.5, -33.0], "expected": 71.5}, {"input": [71.5, -32.5], "expected": 71.5}, {"input": [71.5, -32.0], "expected": 71.5}, {"input": [71.5, -31.5], "expected": 71.5}, {"input": [71.5, -31.0], "expected": 71.5}, {"input": [71.5, -30.5], "expected": 71.5}, {"input": [71.5, -30.0], "expected": 71.5}, {"input": [71.5, -29.5], "expected": 71.5}, {"input": [71.5, -29.0], "expected": 71.5}, {"input": [71.5, -28.5], "expected": 71.5}, {"input": [71.5, -28.0], "expected": 71.5}, {"input": [71.5, -27.5], "expected": 71.5}, {"input": [71.5, -27.0], "expected": 71.5}, {"input": [71.5, -26.5], "expected": 71.5}, {"input": [71.5, -26.0], "expected": 71.5}, {"input": [71.5, -25.5], "expected": 71.5}, {"input": [71.5, -25.0], "expected": 71.5}, {"input": [71.5, -24.5], "expected": 71.5}, {"input": [71.5, -24.0], "expected": 71.5}, {"input": [71.5, -23.5], "expected": 71.5}, {"input": [71.5, -23.0], "expected": 71.5}, {"input": [71.5, -22.5], "expected": 71.5}, {"input": [71.5, -22.0], "expected": 71.5}, {"input": [71.5, -21.5], "expected": 71.5}, {"input": [71.5, -21.0], "expected": 71.5}, {"input": [71.5, -20.5], "expected": 71.5}, {"input": [71.5, -20.0], "expected": 71.5}, {"input": [71.5, -19.5], "expected": 71.5}, {"input": [71.5, -19.0], "expected": 71.5}, {"input": [71.5, -18.5], "expected": 71.5}, {"input": [71.5, -18.0], "expected": 71.5}, {"input": [71.5, -17.5], "expected": 71.5}, {"input": [71.5, -17.0], "expected": 71.5}, {"input": [71.5, -16.5], "expected": 71.5}, {"input": [71.5, -16.0], "expected": 71.5}, {"input": [71.5, -15.5], "expected": 71.5}, {"input": [71.5, -15.0], "expected": 71.5}, {"input": [71.5, -14.5], "expected": 71.5}, {"input": [71.5, -14.0], "expected": 71.5}, {"input": [71.5, -13.5], "expected": 71.5}, {"input": [71.5, -13.0], "expected": 71.5}, {"input": [71.5, -12.5], "expected": 71.5}, {"input": [71.5, -12.0], "expected": 71.5}, {"input": [71.5, -11.5], "expected": 71.5}, {"input": [71.5, -11.0], "expected": 71.5}, {"input": [71.5, -10.5], "expected": 71.5}, {"input": [71.5, -10.0], "expected": 71.5}, {"input": [71.5, -9.5], "expected": 71.5}, {"input": [71.5, -9.0], "expected": 71.5}, {"input": [71.5, -8.5], "expected": 71.5}, {"input": [71.5, -8.0], "expected": 71.5}, {"input": [71.5, -7.5], "expected": 71.5}, {"input": [71.5, -7.0], "expected": 71.5}, {"input": [71.5, -6.5], "expected": 71.5}, {"input": [71.5, -6.0], "expected": 71.5}, {"input": [71.5, -5.5], "expected": 71.5}, {"input": [71.5, -5.0], "expected": 71.5}, {"input": [71.5, -4.5], "expected": 71.5}, {"input": [71.5, -4.0], "expected": 71.5}, {"input": [71.5, -3.5], "expected": 71.5}, {"input": [71.5, -3.0], "expected": 71.5}, {"input": [71.5, -2.5], "expected": 71.5}, {"input": [71.5, -2.0], "expected": 71.5}, {"input": [71.5, -1.5], "expected": 71.5}, {"input": [71.5, -1.0], "expected": 71.5}, {"input": [71.5, -0.5], "expected": 71.5}, {"input": [71.5, 0.0], "expected": 71.5}, {"input": [71.5, 0.5], "expected": 71.5}, {"input": [71.5, 1.0], "expected": 71.5}, {"input": [71.5, 1.5], "expected": 71.5}, {"input": [71.5, 2.0], "expected": 71.5}, {"input": [71.5, 2.5], "expected": 71.5}, {"input": [71.5, 3.0], "expected": 71.5}, {"input": [71.5, 3.5], "expected": 71.5}, {"input": [71.5, 4.0], "expected": 71.5}, {"input": [71.5, 4.5], "expected": 71.5}, {"input": [71.5, 5.0], "expected": 71.5}, {"input": [71.5, 5.5], "expected": 71.5}, {"input": [71.5, 6.0], "expected": 71.5}, {"input": [71.5, 6.5], "expected": 71.5}, {"input": [71.5, 7.0], "expected": 71.5}, {"input": [71.5, 7.5], "expected": 71.5}, {"input": [71.5, 8.0], "expected": 71.5}, {"input": [71.5, 8.5], "expected": 71.5}, {"input": [71.5, 9.0], "expected": 71.5}, {"input": [71.5, 9.5], "expected": 71.5}, {"input": [71.5, 10.0], "expected": 71.5}, {"input": [71.5, 10.5], "expected": 71.5}, {"input": [71.5, 11.0], "expected": 71.5}, {"input": [71.5, 11.5], "expected": 71.5}, {"input": [71.5, 12.0], "expected": 71.5}, {"input": [71.5, 12.5], "expected": 71.5}, {"input": [71.5, 13.0], "expected": 71.5}, {"input": [71.5, 13.5], "expected": 71.5}, {"input": [71.5, 14.0], "expected": 71.5}, {"input": [71.5, 14.5], "expected": 71.5}, {"input": [71.5, 15.0], "expected": 71.5}, {"input": [71.5, 15.5], "expected": 71.5}, {"input": [71.5, 16.0], "expected": 71.5}, {"input": [71.5, 16.5], "expected": 71.5}, {"input": [71.5, 17.0], "expected": 71.5}, {"input": [71.5, 17.5], "expected": 71.5}, {"input": [71.5, 18.0], "expected": 71.5}, {"input": [71.5, 18.5], "expected": 71.5}, {"input": [71.5, 19.0], "expected": 71.5}, {"input": [71.5, 19.5], "expected": 71.5}, {"input": [71.5, 20.0], "expected": 71.5}, {"input": [71.5, 20.5], "expected": 71.5}, {"input": [71.5, 21.0], "expected": 71.5}, {"input": [71.5, 21.5], "expected": 71.5}, {"input": [71.5, 22.0], "expected": 71.5}, {"input": [71.5, 22.5], "expected": 71.5}, {"input": [71.5, 23.0], "expected": 71.5}, {"input": [71.5, 23.5], "expected": 71.5}, {"input": [71.5, 24.0], "expected": 71.5}, {"input": [71.5, 24.5], "expected": 71.5}, {"input": [71.5, 25.0], "expected": 71.5}, {"input": [71.5, 25.5], "expected": 71.5}, {"input": [71.5, 26.0], "expected": 71.5}, {"input": [71.5, 26.5], "expected": 71.5}, {"input": [71.5, 27.0], "expected": 71.5}, {"input": [71.5, 27.5], "expected": 71.5}, {"input": [71.5, 28.0], "expected": 71.5}, {"input": [71.5, 28.5], "expected": 71.5}, {"input": [71.5, 29.0], "expected": 71.5}, {"input": [71.5, 29.5], "expected": 71.5}, {"input": [71.5, 30.0], "expected": 71.5}, {"input": [71.5, 30.5], "expected": 71.5}, {"input": [71.5, 31.0], "expected": 71.5}, {"input": [71.5, 31.5], "expected": 71.5}, {"input": [71.5, 32.0], "expected": 71.5}, {"input": [71.5, 32.5], "expected": 71.5}, {"input": [71.5, 33.0], "expected": 71.5}, {"input": [71.5, 33.5], "expected": 71.5}, {"input": [71.5, 34.0], "expected": 71.5}, {"input": [71.5, 34.5], "expected": 71.5}, {"input": [71.5, 35.0], "expected": 71.5}, {"input": [71.5, 35.5], "expected": 71.5}, {"input": [71.5, 36.0], "expected": 71.5}, {"input": [71.5, 36.5], "expected": 71.5}, {"input": [71.5, 37.0], "expected": 71.5}, {"input": [71.5, 37.5], "expected": 71.5}, {"input": [71.5, 38.0], "expected": 71.5}, {"input": [71.5, 38.5], "expected": 71.5}, {"input": [71.5, 39.0], "expected": 71.50000000000001}, {"input": [71.5, 39.5], "expected": 71.50000000000001}, {"input": [71.5, 40.0], "expected": 71.50000000000001}, {"input": [71.5, 40.5], "expected": 71.50000000000003}, {"input": [71.5, 41.0], "expected": 71.50000000000006}, {"input": [71.5, 41.5], "expected": 71.5000000000001}, {"input": [71.5, 42.0], "expected": 71.50000000000016}, {"input": [71.5, 42.5], "expected": 71.50000000000026}, {"input": [71.5, 43.0], "expected": 71.50000000000043}, {"input": [71.5, 43.5], "expected": 71.5000000000007}, {"input": [71.5, 44.0], "expected": 71.50000000000114}, {"input": [71.5, 44.5], "expected": 71.50000000000188}, {"input": [71.5, 45.0], "expected": 71.5000000000031}, {"input": [71.5, 45.5], "expected": 71.50000000000512}, {"input": [71.5, 46.0], "expected": 71.50000000000843}, {"input": [71.5, 46.5], "expected": 71.50000000001388}, {"input": [71.5, 47.0], "expected": 71.5000000000229}, {"input": [71.5, 47.5], "expected": 71.50000000003776}, {"input": [71.5, 48.0], "expected": 71.50000000006224}, {"input": [71.5, 48.5], "expected": 71.50000000010262}, {"input": [71.5, 49.0], "expected": 71.5000000001692}, {"input": [71.5, 49.5], "expected": 71.50000000027894}, {"input": [71.5, 50.0], "expected": 71.5000000004599}, {"input": [71.5, 50.5], "expected": 71.50000000075826}, {"input": [71.5, 51.0], "expected": 71.50000000125016}, {"input": [71.5, 51.5], "expected": 71.50000000206116}, {"input": [71.5, 52.0], "expected": 71.50000000339827}, {"input": [71.5, 52.5], "expected": 71.5000000056028}, {"input": [71.5, 53.0], "expected": 71.50000000923745}, {"input": [71.5, 53.5], "expected": 71.50000001522999}, {"input": [71.5, 54.0], "expected": 71.50000002511}, {"input": [71.5, 54.5], "expected": 71.50000004139937}, {"input": [71.5, 55.0], "expected": 71.50000006825603}, {"input": [71.5, 55.5], "expected": 71.50000011253516}, {"input": [71.5, 56.0], "expected": 71.50000018553912}, {"input": [71.5, 56.5], "expected": 71.50000030590228}, {"input": [71.5, 57.0], "expected": 71.50000050434754}, {"input": [71.5, 57.5], "expected": 71.50000083152837}, {"input": [71.5, 58.0], "expected": 71.50000137095815}, {"input": [71.5, 58.5], "expected": 71.50000226032685}, {"input": [71.5, 59.0], "expected": 71.50000372664623}, {"input": [71.5, 59.5], "expected": 71.50000614419348}, {"input": [71.5, 60.0], "expected": 71.50001013004228}, {"input": [71.5, 60.5], "expected": 71.50001670156132}, {"input": [71.5, 61.0], "expected": 71.50002753607023}, {"input": [71.5, 61.5], "expected": 71.50004539889922}, {"input": [71.5, 62.0], "expected": 71.50007484902864}, {"input": [71.5, 62.5], "expected": 71.50012340218973}, {"input": [71.5, 63.0], "expected": 71.50020344767213}, {"input": [71.5, 63.5], "expected": 71.5003354063729}, {"input": [71.5, 64.0], "expected": 71.50055293147535}, {"input": [71.5, 64.5], "expected": 71.50091146645377}, {"input": [71.5, 65.0], "expected": 71.50150231015975}, {"input": [71.5, 65.5], "expected": 71.50247568513772}, {"input": [71.5, 66.0], "expected": 71.50407844327057}, {"input": [71.5, 66.5], "expected": 71.50671534848912}, {"input": [71.5, 67.0], "expected": 71.5110477448486}, {"input": [71.5, 67.5], "expected": 71.5181499279178}, {"input": [71.5, 68.0], "expected": 71.52975041827263}, {"input": [71.5, 68.5], "expected": 71.54858735157374}, {"input": [71.5, 69.0], "expected": 71.57888973429255}, {"input": [71.5, 69.5], "expected": 71.62692801104298}, {"input": [71.5, 70.0], "expected": 71.70141327798275}, {"input": [71.5, 70.5], "expected": 71.81326168751822}, {"input": [71.5, 71.0], "expected": 71.9740769841801}, {"input": [71.5, 71.5], "expected": 72.19314718055995}, {"input": [71.5, 72.0], "expected": 72.4740769841801}, {"input": [71.5, 72.5], "expected": 72.81326168751822}, {"input": [71.5, 73.0], "expected": 73.20141327798275}, {"input": [71.5, 73.5], "expected": 73.62692801104298}, {"input": [71.5, 74.0], "expected": 74.07888973429255}, {"input": [71.5, 74.5], "expected": 74.54858735157374}, {"input": [71.5, 75.0], "expected": 75.02975041827263}, {"input": [71.5, 75.5], "expected": 75.5181499279178}, {"input": [71.5, 76.0], "expected": 76.0110477448486}, {"input": [71.5, 76.5], "expected": 76.50671534848912}, {"input": [71.5, 77.0], "expected": 77.00407844327057}, {"input": [71.5, 77.5], "expected": 77.50247568513772}, {"input": [71.5, 78.0], "expected": 78.00150231015975}, {"input": [71.5, 78.5], "expected": 78.50091146645377}, {"input": [71.5, 79.0], "expected": 79.00055293147535}, {"input": [71.5, 79.5], "expected": 79.5003354063729}, {"input": [71.5, 80.0], "expected": 80.00020344767213}, {"input": [71.5, 80.5], "expected": 80.50012340218973}, {"input": [71.5, 81.0], "expected": 81.00007484902864}, {"input": [71.5, 81.5], "expected": 81.50004539889922}, {"input": [71.5, 82.0], "expected": 82.00002753607023}, {"input": [71.5, 82.5], "expected": 82.50001670156132}, {"input": [71.5, 83.0], "expected": 83.00001013004228}, {"input": [71.5, 83.5], "expected": 83.50000614419348}, {"input": [71.5, 84.0], "expected": 84.00000372664623}, {"input": [71.5, 84.5], "expected": 84.50000226032685}, {"input": [71.5, 85.0], "expected": 85.00000137095815}, {"input": [71.5, 85.5], "expected": 85.50000083152837}, {"input": [71.5, 86.0], "expected": 86.00000050434754}, {"input": [71.5, 86.5], "expected": 86.50000030590228}, {"input": [71.5, 87.0], "expected": 87.00000018553912}, {"input": [71.5, 87.5], "expected": 87.50000011253516}, {"input": [71.5, 88.0], "expected": 88.00000006825603}, {"input": [71.5, 88.5], "expected": 88.50000004139937}, {"input": [71.5, 89.0], "expected": 89.00000002511}, {"input": [71.5, 89.5], "expected": 89.50000001522999}, {"input": [71.5, 90.0], "expected": 90.00000000923745}, {"input": [71.5, 90.5], "expected": 90.5000000056028}, {"input": [71.5, 91.0], "expected": 91.00000000339827}, {"input": [71.5, 91.5], "expected": 91.50000000206116}, {"input": [71.5, 92.0], "expected": 92.00000000125016}, {"input": [71.5, 92.5], "expected": 92.50000000075826}, {"input": [71.5, 93.0], "expected": 93.0000000004599}, {"input": [71.5, 93.5], "expected": 93.50000000027894}, {"input": [71.5, 94.0], "expected": 94.0000000001692}, {"input": [71.5, 94.5], "expected": 94.50000000010262}, {"input": [71.5, 95.0], "expected": 95.00000000006224}, {"input": [71.5, 95.5], "expected": 95.50000000003776}, {"input": [71.5, 96.0], "expected": 96.0000000000229}, {"input": [71.5, 96.5], "expected": 96.50000000001388}, {"input": [71.5, 97.0], "expected": 97.00000000000843}, {"input": [71.5, 97.5], "expected": 97.50000000000512}, {"input": [71.5, 98.0], "expected": 98.0000000000031}, {"input": [71.5, 98.5], "expected": 98.50000000000188}, {"input": [71.5, 99.0], "expected": 99.00000000000114}, {"input": [71.5, 99.5], "expected": 99.5000000000007}, {"input": [72.0, -100.0], "expected": 72.0}, {"input": [72.0, -99.5], "expected": 72.0}, {"input": [72.0, -99.0], "expected": 72.0}, {"input": [72.0, -98.5], "expected": 72.0}, {"input": [72.0, -98.0], "expected": 72.0}, {"input": [72.0, -97.5], "expected": 72.0}, {"input": [72.0, -97.0], "expected": 72.0}, {"input": [72.0, -96.5], "expected": 72.0}, {"input": [72.0, -96.0], "expected": 72.0}, {"input": [72.0, -95.5], "expected": 72.0}, {"input": [72.0, -95.0], "expected": 72.0}, {"input": [72.0, -94.5], "expected": 72.0}, {"input": [72.0, -94.0], "expected": 72.0}, {"input": [72.0, -93.5], "expected": 72.0}, {"input": [72.0, -93.0], "expected": 72.0}, {"input": [72.0, -92.5], "expected": 72.0}, {"input": [72.0, -92.0], "expected": 72.0}, {"input": [72.0, -91.5], "expected": 72.0}, {"input": [72.0, -91.0], "expected": 72.0}, {"input": [72.0, -90.5], "expected": 72.0}, {"input": [72.0, -90.0], "expected": 72.0}, {"input": [72.0, -89.5], "expected": 72.0}, {"input": [72.0, -89.0], "expected": 72.0}, {"input": [72.0, -88.5], "expected": 72.0}, {"input": [72.0, -88.0], "expected": 72.0}, {"input": [72.0, -87.5], "expected": 72.0}, {"input": [72.0, -87.0], "expected": 72.0}, {"input": [72.0, -86.5], "expected": 72.0}, {"input": [72.0, -86.0], "expected": 72.0}, {"input": [72.0, -85.5], "expected": 72.0}, {"input": [72.0, -85.0], "expected": 72.0}, {"input": [72.0, -84.5], "expected": 72.0}, {"input": [72.0, -84.0], "expected": 72.0}, {"input": [72.0, -83.5], "expected": 72.0}, {"input": [72.0, -83.0], "expected": 72.0}, {"input": [72.0, -82.5], "expected": 72.0}, {"input": [72.0, -82.0], "expected": 72.0}, {"input": [72.0, -81.5], "expected": 72.0}, {"input": [72.0, -81.0], "expected": 72.0}, {"input": [72.0, -80.5], "expected": 72.0}, {"input": [72.0, -80.0], "expected": 72.0}, {"input": [72.0, -79.5], "expected": 72.0}, {"input": [72.0, -79.0], "expected": 72.0}, {"input": [72.0, -78.5], "expected": 72.0}, {"input": [72.0, -78.0], "expected": 72.0}, {"input": [72.0, -77.5], "expected": 72.0}, {"input": [72.0, -77.0], "expected": 72.0}, {"input": [72.0, -76.5], "expected": 72.0}, {"input": [72.0, -76.0], "expected": 72.0}, {"input": [72.0, -75.5], "expected": 72.0}, {"input": [72.0, -75.0], "expected": 72.0}, {"input": [72.0, -74.5], "expected": 72.0}, {"input": [72.0, -74.0], "expected": 72.0}, {"input": [72.0, -73.5], "expected": 72.0}, {"input": [72.0, -73.0], "expected": 72.0}, {"input": [72.0, -72.5], "expected": 72.0}, {"input": [72.0, -72.0], "expected": 72.0}, {"input": [72.0, -71.5], "expected": 72.0}, {"input": [72.0, -71.0], "expected": 72.0}, {"input": [72.0, -70.5], "expected": 72.0}, {"input": [72.0, -70.0], "expected": 72.0}, {"input": [72.0, -69.5], "expected": 72.0}, {"input": [72.0, -69.0], "expected": 72.0}, {"input": [72.0, -68.5], "expected": 72.0}, {"input": [72.0, -68.0], "expected": 72.0}, {"input": [72.0, -67.5], "expected": 72.0}, {"input": [72.0, -67.0], "expected": 72.0}, {"input": [72.0, -66.5], "expected": 72.0}, {"input": [72.0, -66.0], "expected": 72.0}, {"input": [72.0, -65.5], "expected": 72.0}, {"input": [72.0, -65.0], "expected": 72.0}, {"input": [72.0, -64.5], "expected": 72.0}, {"input": [72.0, -64.0], "expected": 72.0}, {"input": [72.0, -63.5], "expected": 72.0}, {"input": [72.0, -63.0], "expected": 72.0}, {"input": [72.0, -62.5], "expected": 72.0}, {"input": [72.0, -62.0], "expected": 72.0}, {"input": [72.0, -61.5], "expected": 72.0}, {"input": [72.0, -61.0], "expected": 72.0}, {"input": [72.0, -60.5], "expected": 72.0}, {"input": [72.0, -60.0], "expected": 72.0}, {"input": [72.0, -59.5], "expected": 72.0}, {"input": [72.0, -59.0], "expected": 72.0}, {"input": [72.0, -58.5], "expected": 72.0}, {"input": [72.0, -58.0], "expected": 72.0}, {"input": [72.0, -57.5], "expected": 72.0}, {"input": [72.0, -57.0], "expected": 72.0}, {"input": [72.0, -56.5], "expected": 72.0}, {"input": [72.0, -56.0], "expected": 72.0}, {"input": [72.0, -55.5], "expected": 72.0}, {"input": [72.0, -55.0], "expected": 72.0}, {"input": [72.0, -54.5], "expected": 72.0}, {"input": [72.0, -54.0], "expected": 72.0}, {"input": [72.0, -53.5], "expected": 72.0}, {"input": [72.0, -53.0], "expected": 72.0}, {"input": [72.0, -52.5], "expected": 72.0}, {"input": [72.0, -52.0], "expected": 72.0}, {"input": [72.0, -51.5], "expected": 72.0}, {"input": [72.0, -51.0], "expected": 72.0}, {"input": [72.0, -50.5], "expected": 72.0}, {"input": [72.0, -50.0], "expected": 72.0}, {"input": [72.0, -49.5], "expected": 72.0}, {"input": [72.0, -49.0], "expected": 72.0}, {"input": [72.0, -48.5], "expected": 72.0}, {"input": [72.0, -48.0], "expected": 72.0}, {"input": [72.0, -47.5], "expected": 72.0}, {"input": [72.0, -47.0], "expected": 72.0}, {"input": [72.0, -46.5], "expected": 72.0}, {"input": [72.0, -46.0], "expected": 72.0}, {"input": [72.0, -45.5], "expected": 72.0}, {"input": [72.0, -45.0], "expected": 72.0}, {"input": [72.0, -44.5], "expected": 72.0}, {"input": [72.0, -44.0], "expected": 72.0}, {"input": [72.0, -43.5], "expected": 72.0}, {"input": [72.0, -43.0], "expected": 72.0}, {"input": [72.0, -42.5], "expected": 72.0}, {"input": [72.0, -42.0], "expected": 72.0}, {"input": [72.0, -41.5], "expected": 72.0}, {"input": [72.0, -41.0], "expected": 72.0}, {"input": [72.0, -40.5], "expected": 72.0}, {"input": [72.0, -40.0], "expected": 72.0}, {"input": [72.0, -39.5], "expected": 72.0}, {"input": [72.0, -39.0], "expected": 72.0}, {"input": [72.0, -38.5], "expected": 72.0}, {"input": [72.0, -38.0], "expected": 72.0}, {"input": [72.0, -37.5], "expected": 72.0}, {"input": [72.0, -37.0], "expected": 72.0}, {"input": [72.0, -36.5], "expected": 72.0}, {"input": [72.0, -36.0], "expected": 72.0}, {"input": [72.0, -35.5], "expected": 72.0}, {"input": [72.0, -35.0], "expected": 72.0}, {"input": [72.0, -34.5], "expected": 72.0}, {"input": [72.0, -34.0], "expected": 72.0}, {"input": [72.0, -33.5], "expected": 72.0}, {"input": [72.0, -33.0], "expected": 72.0}, {"input": [72.0, -32.5], "expected": 72.0}, {"input": [72.0, -32.0], "expected": 72.0}, {"input": [72.0, -31.5], "expected": 72.0}, {"input": [72.0, -31.0], "expected": 72.0}, {"input": [72.0, -30.5], "expected": 72.0}, {"input": [72.0, -30.0], "expected": 72.0}, {"input": [72.0, -29.5], "expected": 72.0}, {"input": [72.0, -29.0], "expected": 72.0}, {"input": [72.0, -28.5], "expected": 72.0}, {"input": [72.0, -28.0], "expected": 72.0}, {"input": [72.0, -27.5], "expected": 72.0}, {"input": [72.0, -27.0], "expected": 72.0}, {"input": [72.0, -26.5], "expected": 72.0}, {"input": [72.0, -26.0], "expected": 72.0}, {"input": [72.0, -25.5], "expected": 72.0}, {"input": [72.0, -25.0], "expected": 72.0}, {"input": [72.0, -24.5], "expected": 72.0}, {"input": [72.0, -24.0], "expected": 72.0}, {"input": [72.0, -23.5], "expected": 72.0}, {"input": [72.0, -23.0], "expected": 72.0}, {"input": [72.0, -22.5], "expected": 72.0}, {"input": [72.0, -22.0], "expected": 72.0}, {"input": [72.0, -21.5], "expected": 72.0}, {"input": [72.0, -21.0], "expected": 72.0}, {"input": [72.0, -20.5], "expected": 72.0}, {"input": [72.0, -20.0], "expected": 72.0}, {"input": [72.0, -19.5], "expected": 72.0}, {"input": [72.0, -19.0], "expected": 72.0}, {"input": [72.0, -18.5], "expected": 72.0}, {"input": [72.0, -18.0], "expected": 72.0}, {"input": [72.0, -17.5], "expected": 72.0}, {"input": [72.0, -17.0], "expected": 72.0}, {"input": [72.0, -16.5], "expected": 72.0}, {"input": [72.0, -16.0], "expected": 72.0}, {"input": [72.0, -15.5], "expected": 72.0}, {"input": [72.0, -15.0], "expected": 72.0}, {"input": [72.0, -14.5], "expected": 72.0}, {"input": [72.0, -14.0], "expected": 72.0}, {"input": [72.0, -13.5], "expected": 72.0}, {"input": [72.0, -13.0], "expected": 72.0}, {"input": [72.0, -12.5], "expected": 72.0}, {"input": [72.0, -12.0], "expected": 72.0}, {"input": [72.0, -11.5], "expected": 72.0}, {"input": [72.0, -11.0], "expected": 72.0}, {"input": [72.0, -10.5], "expected": 72.0}, {"input": [72.0, -10.0], "expected": 72.0}, {"input": [72.0, -9.5], "expected": 72.0}, {"input": [72.0, -9.0], "expected": 72.0}, {"input": [72.0, -8.5], "expected": 72.0}, {"input": [72.0, -8.0], "expected": 72.0}, {"input": [72.0, -7.5], "expected": 72.0}, {"input": [72.0, -7.0], "expected": 72.0}, {"input": [72.0, -6.5], "expected": 72.0}, {"input": [72.0, -6.0], "expected": 72.0}, {"input": [72.0, -5.5], "expected": 72.0}, {"input": [72.0, -5.0], "expected": 72.0}, {"input": [72.0, -4.5], "expected": 72.0}, {"input": [72.0, -4.0], "expected": 72.0}, {"input": [72.0, -3.5], "expected": 72.0}, {"input": [72.0, -3.0], "expected": 72.0}, {"input": [72.0, -2.5], "expected": 72.0}, {"input": [72.0, -2.0], "expected": 72.0}, {"input": [72.0, -1.5], "expected": 72.0}, {"input": [72.0, -1.0], "expected": 72.0}, {"input": [72.0, -0.5], "expected": 72.0}, {"input": [72.0, 0.0], "expected": 72.0}, {"input": [72.0, 0.5], "expected": 72.0}, {"input": [72.0, 1.0], "expected": 72.0}, {"input": [72.0, 1.5], "expected": 72.0}, {"input": [72.0, 2.0], "expected": 72.0}, {"input": [72.0, 2.5], "expected": 72.0}, {"input": [72.0, 3.0], "expected": 72.0}, {"input": [72.0, 3.5], "expected": 72.0}, {"input": [72.0, 4.0], "expected": 72.0}, {"input": [72.0, 4.5], "expected": 72.0}, {"input": [72.0, 5.0], "expected": 72.0}, {"input": [72.0, 5.5], "expected": 72.0}, {"input": [72.0, 6.0], "expected": 72.0}, {"input": [72.0, 6.5], "expected": 72.0}, {"input": [72.0, 7.0], "expected": 72.0}, {"input": [72.0, 7.5], "expected": 72.0}, {"input": [72.0, 8.0], "expected": 72.0}, {"input": [72.0, 8.5], "expected": 72.0}, {"input": [72.0, 9.0], "expected": 72.0}, {"input": [72.0, 9.5], "expected": 72.0}, {"input": [72.0, 10.0], "expected": 72.0}, {"input": [72.0, 10.5], "expected": 72.0}, {"input": [72.0, 11.0], "expected": 72.0}, {"input": [72.0, 11.5], "expected": 72.0}, {"input": [72.0, 12.0], "expected": 72.0}, {"input": [72.0, 12.5], "expected": 72.0}, {"input": [72.0, 13.0], "expected": 72.0}, {"input": [72.0, 13.5], "expected": 72.0}, {"input": [72.0, 14.0], "expected": 72.0}, {"input": [72.0, 14.5], "expected": 72.0}, {"input": [72.0, 15.0], "expected": 72.0}, {"input": [72.0, 15.5], "expected": 72.0}, {"input": [72.0, 16.0], "expected": 72.0}, {"input": [72.0, 16.5], "expected": 72.0}, {"input": [72.0, 17.0], "expected": 72.0}, {"input": [72.0, 17.5], "expected": 72.0}, {"input": [72.0, 18.0], "expected": 72.0}, {"input": [72.0, 18.5], "expected": 72.0}, {"input": [72.0, 19.0], "expected": 72.0}, {"input": [72.0, 19.5], "expected": 72.0}, {"input": [72.0, 20.0], "expected": 72.0}, {"input": [72.0, 20.5], "expected": 72.0}, {"input": [72.0, 21.0], "expected": 72.0}, {"input": [72.0, 21.5], "expected": 72.0}, {"input": [72.0, 22.0], "expected": 72.0}, {"input": [72.0, 22.5], "expected": 72.0}, {"input": [72.0, 23.0], "expected": 72.0}, {"input": [72.0, 23.5], "expected": 72.0}, {"input": [72.0, 24.0], "expected": 72.0}, {"input": [72.0, 24.5], "expected": 72.0}, {"input": [72.0, 25.0], "expected": 72.0}, {"input": [72.0, 25.5], "expected": 72.0}, {"input": [72.0, 26.0], "expected": 72.0}, {"input": [72.0, 26.5], "expected": 72.0}, {"input": [72.0, 27.0], "expected": 72.0}, {"input": [72.0, 27.5], "expected": 72.0}, {"input": [72.0, 28.0], "expected": 72.0}, {"input": [72.0, 28.5], "expected": 72.0}, {"input": [72.0, 29.0], "expected": 72.0}, {"input": [72.0, 29.5], "expected": 72.0}, {"input": [72.0, 30.0], "expected": 72.0}, {"input": [72.0, 30.5], "expected": 72.0}, {"input": [72.0, 31.0], "expected": 72.0}, {"input": [72.0, 31.5], "expected": 72.0}, {"input": [72.0, 32.0], "expected": 72.0}, {"input": [72.0, 32.5], "expected": 72.0}, {"input": [72.0, 33.0], "expected": 72.0}, {"input": [72.0, 33.5], "expected": 72.0}, {"input": [72.0, 34.0], "expected": 72.0}, {"input": [72.0, 34.5], "expected": 72.0}, {"input": [72.0, 35.0], "expected": 72.0}, {"input": [72.0, 35.5], "expected": 72.0}, {"input": [72.0, 36.0], "expected": 72.0}, {"input": [72.0, 36.5], "expected": 72.0}, {"input": [72.0, 37.0], "expected": 72.0}, {"input": [72.0, 37.5], "expected": 72.0}, {"input": [72.0, 38.0], "expected": 72.0}, {"input": [72.0, 38.5], "expected": 72.0}, {"input": [72.0, 39.0], "expected": 72.0}, {"input": [72.0, 39.5], "expected": 72.00000000000001}, {"input": [72.0, 40.0], "expected": 72.00000000000001}, {"input": [72.0, 40.5], "expected": 72.00000000000001}, {"input": [72.0, 41.0], "expected": 72.00000000000003}, {"input": [72.0, 41.5], "expected": 72.00000000000006}, {"input": [72.0, 42.0], "expected": 72.0000000000001}, {"input": [72.0, 42.5], "expected": 72.00000000000016}, {"input": [72.0, 43.0], "expected": 72.00000000000026}, {"input": [72.0, 43.5], "expected": 72.00000000000043}, {"input": [72.0, 44.0], "expected": 72.0000000000007}, {"input": [72.0, 44.5], "expected": 72.00000000000114}, {"input": [72.0, 45.0], "expected": 72.00000000000188}, {"input": [72.0, 45.5], "expected": 72.0000000000031}, {"input": [72.0, 46.0], "expected": 72.00000000000512}, {"input": [72.0, 46.5], "expected": 72.00000000000843}, {"input": [72.0, 47.0], "expected": 72.00000000001388}, {"input": [72.0, 47.5], "expected": 72.0000000000229}, {"input": [72.0, 48.0], "expected": 72.00000000003776}, {"input": [72.0, 48.5], "expected": 72.00000000006224}, {"input": [72.0, 49.0], "expected": 72.00000000010262}, {"input": [72.0, 49.5], "expected": 72.0000000001692}, {"input": [72.0, 50.0], "expected": 72.00000000027894}, {"input": [72.0, 50.5], "expected": 72.0000000004599}, {"input": [72.0, 51.0], "expected": 72.00000000075826}, {"input": [72.0, 51.5], "expected": 72.00000000125016}, {"input": [72.0, 52.0], "expected": 72.00000000206116}, {"input": [72.0, 52.5], "expected": 72.00000000339827}, {"input": [72.0, 53.0], "expected": 72.0000000056028}, {"input": [72.0, 53.5], "expected": 72.00000000923745}, {"input": [72.0, 54.0], "expected": 72.00000001522999}, {"input": [72.0, 54.5], "expected": 72.00000002511}, {"input": [72.0, 55.0], "expected": 72.00000004139937}, {"input": [72.0, 55.5], "expected": 72.00000006825603}, {"input": [72.0, 56.0], "expected": 72.00000011253516}, {"input": [72.0, 56.5], "expected": 72.00000018553912}, {"input": [72.0, 57.0], "expected": 72.00000030590228}, {"input": [72.0, 57.5], "expected": 72.00000050434754}, {"input": [72.0, 58.0], "expected": 72.00000083152837}, {"input": [72.0, 58.5], "expected": 72.00000137095815}, {"input": [72.0, 59.0], "expected": 72.00000226032685}, {"input": [72.0, 59.5], "expected": 72.00000372664623}, {"input": [72.0, 60.0], "expected": 72.00000614419348}, {"input": [72.0, 60.5], "expected": 72.00001013004228}, {"input": [72.0, 61.0], "expected": 72.00001670156132}, {"input": [72.0, 61.5], "expected": 72.00002753607023}, {"input": [72.0, 62.0], "expected": 72.00004539889922}, {"input": [72.0, 62.5], "expected": 72.00007484902864}, {"input": [72.0, 63.0], "expected": 72.00012340218973}, {"input": [72.0, 63.5], "expected": 72.00020344767213}, {"input": [72.0, 64.0], "expected": 72.0003354063729}, {"input": [72.0, 64.5], "expected": 72.00055293147535}, {"input": [72.0, 65.0], "expected": 72.00091146645377}, {"input": [72.0, 65.5], "expected": 72.00150231015975}, {"input": [72.0, 66.0], "expected": 72.00247568513772}, {"input": [72.0, 66.5], "expected": 72.00407844327057}, {"input": [72.0, 67.0], "expected": 72.00671534848912}, {"input": [72.0, 67.5], "expected": 72.0110477448486}, {"input": [72.0, 68.0], "expected": 72.0181499279178}, {"input": [72.0, 68.5], "expected": 72.02975041827263}, {"input": [72.0, 69.0], "expected": 72.04858735157374}, {"input": [72.0, 69.5], "expected": 72.07888973429255}, {"input": [72.0, 70.0], "expected": 72.12692801104298}, {"input": [72.0, 70.5], "expected": 72.20141327798275}, {"input": [72.0, 71.0], "expected": 72.31326168751822}, {"input": [72.0, 71.5], "expected": 72.4740769841801}, {"input": [72.0, 72.0], "expected": 72.69314718055995}, {"input": [72.0, 72.5], "expected": 72.9740769841801}, {"input": [72.0, 73.0], "expected": 73.31326168751822}, {"input": [72.0, 73.5], "expected": 73.70141327798275}, {"input": [72.0, 74.0], "expected": 74.12692801104298}, {"input": [72.0, 74.5], "expected": 74.57888973429255}, {"input": [72.0, 75.0], "expected": 75.04858735157374}, {"input": [72.0, 75.5], "expected": 75.52975041827263}, {"input": [72.0, 76.0], "expected": 76.0181499279178}, {"input": [72.0, 76.5], "expected": 76.5110477448486}, {"input": [72.0, 77.0], "expected": 77.00671534848912}, {"input": [72.0, 77.5], "expected": 77.50407844327057}, {"input": [72.0, 78.0], "expected": 78.00247568513772}, {"input": [72.0, 78.5], "expected": 78.50150231015975}, {"input": [72.0, 79.0], "expected": 79.00091146645377}, {"input": [72.0, 79.5], "expected": 79.50055293147535}, {"input": [72.0, 80.0], "expected": 80.0003354063729}, {"input": [72.0, 80.5], "expected": 80.50020344767213}, {"input": [72.0, 81.0], "expected": 81.00012340218973}, {"input": [72.0, 81.5], "expected": 81.50007484902864}, {"input": [72.0, 82.0], "expected": 82.00004539889922}, {"input": [72.0, 82.5], "expected": 82.50002753607023}, {"input": [72.0, 83.0], "expected": 83.00001670156132}, {"input": [72.0, 83.5], "expected": 83.50001013004228}, {"input": [72.0, 84.0], "expected": 84.00000614419348}, {"input": [72.0, 84.5], "expected": 84.50000372664623}, {"input": [72.0, 85.0], "expected": 85.00000226032685}, {"input": [72.0, 85.5], "expected": 85.50000137095815}, {"input": [72.0, 86.0], "expected": 86.00000083152837}, {"input": [72.0, 86.5], "expected": 86.50000050434754}, {"input": [72.0, 87.0], "expected": 87.00000030590228}, {"input": [72.0, 87.5], "expected": 87.50000018553912}, {"input": [72.0, 88.0], "expected": 88.00000011253516}, {"input": [72.0, 88.5], "expected": 88.50000006825603}, {"input": [72.0, 89.0], "expected": 89.00000004139937}, {"input": [72.0, 89.5], "expected": 89.50000002511}, {"input": [72.0, 90.0], "expected": 90.00000001522999}, {"input": [72.0, 90.5], "expected": 90.50000000923745}, {"input": [72.0, 91.0], "expected": 91.0000000056028}, {"input": [72.0, 91.5], "expected": 91.50000000339827}, {"input": [72.0, 92.0], "expected": 92.00000000206116}, {"input": [72.0, 92.5], "expected": 92.50000000125016}, {"input": [72.0, 93.0], "expected": 93.00000000075826}, {"input": [72.0, 93.5], "expected": 93.5000000004599}, {"input": [72.0, 94.0], "expected": 94.00000000027894}, {"input": [72.0, 94.5], "expected": 94.5000000001692}, {"input": [72.0, 95.0], "expected": 95.00000000010262}, {"input": [72.0, 95.5], "expected": 95.50000000006224}, {"input": [72.0, 96.0], "expected": 96.00000000003776}, {"input": [72.0, 96.5], "expected": 96.5000000000229}, {"input": [72.0, 97.0], "expected": 97.00000000001388}, {"input": [72.0, 97.5], "expected": 97.50000000000843}, {"input": [72.0, 98.0], "expected": 98.00000000000512}, {"input": [72.0, 98.5], "expected": 98.5000000000031}, {"input": [72.0, 99.0], "expected": 99.00000000000188}, {"input": [72.0, 99.5], "expected": 99.50000000000114}, {"input": [72.5, -100.0], "expected": 72.5}, {"input": [72.5, -99.5], "expected": 72.5}, {"input": [72.5, -99.0], "expected": 72.5}, {"input": [72.5, -98.5], "expected": 72.5}, {"input": [72.5, -98.0], "expected": 72.5}, {"input": [72.5, -97.5], "expected": 72.5}, {"input": [72.5, -97.0], "expected": 72.5}, {"input": [72.5, -96.5], "expected": 72.5}, {"input": [72.5, -96.0], "expected": 72.5}, {"input": [72.5, -95.5], "expected": 72.5}, {"input": [72.5, -95.0], "expected": 72.5}, {"input": [72.5, -94.5], "expected": 72.5}, {"input": [72.5, -94.0], "expected": 72.5}, {"input": [72.5, -93.5], "expected": 72.5}, {"input": [72.5, -93.0], "expected": 72.5}, {"input": [72.5, -92.5], "expected": 72.5}, {"input": [72.5, -92.0], "expected": 72.5}, {"input": [72.5, -91.5], "expected": 72.5}, {"input": [72.5, -91.0], "expected": 72.5}, {"input": [72.5, -90.5], "expected": 72.5}, {"input": [72.5, -90.0], "expected": 72.5}, {"input": [72.5, -89.5], "expected": 72.5}, {"input": [72.5, -89.0], "expected": 72.5}, {"input": [72.5, -88.5], "expected": 72.5}, {"input": [72.5, -88.0], "expected": 72.5}, {"input": [72.5, -87.5], "expected": 72.5}, {"input": [72.5, -87.0], "expected": 72.5}, {"input": [72.5, -86.5], "expected": 72.5}, {"input": [72.5, -86.0], "expected": 72.5}, {"input": [72.5, -85.5], "expected": 72.5}, {"input": [72.5, -85.0], "expected": 72.5}, {"input": [72.5, -84.5], "expected": 72.5}, {"input": [72.5, -84.0], "expected": 72.5}, {"input": [72.5, -83.5], "expected": 72.5}, {"input": [72.5, -83.0], "expected": 72.5}, {"input": [72.5, -82.5], "expected": 72.5}, {"input": [72.5, -82.0], "expected": 72.5}, {"input": [72.5, -81.5], "expected": 72.5}, {"input": [72.5, -81.0], "expected": 72.5}, {"input": [72.5, -80.5], "expected": 72.5}, {"input": [72.5, -80.0], "expected": 72.5}, {"input": [72.5, -79.5], "expected": 72.5}, {"input": [72.5, -79.0], "expected": 72.5}, {"input": [72.5, -78.5], "expected": 72.5}, {"input": [72.5, -78.0], "expected": 72.5}, {"input": [72.5, -77.5], "expected": 72.5}, {"input": [72.5, -77.0], "expected": 72.5}, {"input": [72.5, -76.5], "expected": 72.5}, {"input": [72.5, -76.0], "expected": 72.5}, {"input": [72.5, -75.5], "expected": 72.5}, {"input": [72.5, -75.0], "expected": 72.5}, {"input": [72.5, -74.5], "expected": 72.5}, {"input": [72.5, -74.0], "expected": 72.5}, {"input": [72.5, -73.5], "expected": 72.5}, {"input": [72.5, -73.0], "expected": 72.5}, {"input": [72.5, -72.5], "expected": 72.5}, {"input": [72.5, -72.0], "expected": 72.5}, {"input": [72.5, -71.5], "expected": 72.5}, {"input": [72.5, -71.0], "expected": 72.5}, {"input": [72.5, -70.5], "expected": 72.5}, {"input": [72.5, -70.0], "expected": 72.5}, {"input": [72.5, -69.5], "expected": 72.5}, {"input": [72.5, -69.0], "expected": 72.5}, {"input": [72.5, -68.5], "expected": 72.5}, {"input": [72.5, -68.0], "expected": 72.5}, {"input": [72.5, -67.5], "expected": 72.5}, {"input": [72.5, -67.0], "expected": 72.5}, {"input": [72.5, -66.5], "expected": 72.5}, {"input": [72.5, -66.0], "expected": 72.5}, {"input": [72.5, -65.5], "expected": 72.5}, {"input": [72.5, -65.0], "expected": 72.5}, {"input": [72.5, -64.5], "expected": 72.5}, {"input": [72.5, -64.0], "expected": 72.5}, {"input": [72.5, -63.5], "expected": 72.5}, {"input": [72.5, -63.0], "expected": 72.5}, {"input": [72.5, -62.5], "expected": 72.5}, {"input": [72.5, -62.0], "expected": 72.5}, {"input": [72.5, -61.5], "expected": 72.5}, {"input": [72.5, -61.0], "expected": 72.5}, {"input": [72.5, -60.5], "expected": 72.5}, {"input": [72.5, -60.0], "expected": 72.5}, {"input": [72.5, -59.5], "expected": 72.5}, {"input": [72.5, -59.0], "expected": 72.5}, {"input": [72.5, -58.5], "expected": 72.5}, {"input": [72.5, -58.0], "expected": 72.5}, {"input": [72.5, -57.5], "expected": 72.5}, {"input": [72.5, -57.0], "expected": 72.5}, {"input": [72.5, -56.5], "expected": 72.5}, {"input": [72.5, -56.0], "expected": 72.5}, {"input": [72.5, -55.5], "expected": 72.5}, {"input": [72.5, -55.0], "expected": 72.5}, {"input": [72.5, -54.5], "expected": 72.5}, {"input": [72.5, -54.0], "expected": 72.5}, {"input": [72.5, -53.5], "expected": 72.5}, {"input": [72.5, -53.0], "expected": 72.5}, {"input": [72.5, -52.5], "expected": 72.5}, {"input": [72.5, -52.0], "expected": 72.5}, {"input": [72.5, -51.5], "expected": 72.5}, {"input": [72.5, -51.0], "expected": 72.5}, {"input": [72.5, -50.5], "expected": 72.5}, {"input": [72.5, -50.0], "expected": 72.5}, {"input": [72.5, -49.5], "expected": 72.5}, {"input": [72.5, -49.0], "expected": 72.5}, {"input": [72.5, -48.5], "expected": 72.5}, {"input": [72.5, -48.0], "expected": 72.5}, {"input": [72.5, -47.5], "expected": 72.5}, {"input": [72.5, -47.0], "expected": 72.5}, {"input": [72.5, -46.5], "expected": 72.5}, {"input": [72.5, -46.0], "expected": 72.5}, {"input": [72.5, -45.5], "expected": 72.5}, {"input": [72.5, -45.0], "expected": 72.5}, {"input": [72.5, -44.5], "expected": 72.5}, {"input": [72.5, -44.0], "expected": 72.5}, {"input": [72.5, -43.5], "expected": 72.5}, {"input": [72.5, -43.0], "expected": 72.5}, {"input": [72.5, -42.5], "expected": 72.5}, {"input": [72.5, -42.0], "expected": 72.5}, {"input": [72.5, -41.5], "expected": 72.5}, {"input": [72.5, -41.0], "expected": 72.5}, {"input": [72.5, -40.5], "expected": 72.5}, {"input": [72.5, -40.0], "expected": 72.5}, {"input": [72.5, -39.5], "expected": 72.5}, {"input": [72.5, -39.0], "expected": 72.5}, {"input": [72.5, -38.5], "expected": 72.5}, {"input": [72.5, -38.0], "expected": 72.5}, {"input": [72.5, -37.5], "expected": 72.5}, {"input": [72.5, -37.0], "expected": 72.5}, {"input": [72.5, -36.5], "expected": 72.5}, {"input": [72.5, -36.0], "expected": 72.5}, {"input": [72.5, -35.5], "expected": 72.5}, {"input": [72.5, -35.0], "expected": 72.5}, {"input": [72.5, -34.5], "expected": 72.5}, {"input": [72.5, -34.0], "expected": 72.5}, {"input": [72.5, -33.5], "expected": 72.5}, {"input": [72.5, -33.0], "expected": 72.5}, {"input": [72.5, -32.5], "expected": 72.5}, {"input": [72.5, -32.0], "expected": 72.5}, {"input": [72.5, -31.5], "expected": 72.5}, {"input": [72.5, -31.0], "expected": 72.5}, {"input": [72.5, -30.5], "expected": 72.5}, {"input": [72.5, -30.0], "expected": 72.5}, {"input": [72.5, -29.5], "expected": 72.5}, {"input": [72.5, -29.0], "expected": 72.5}, {"input": [72.5, -28.5], "expected": 72.5}, {"input": [72.5, -28.0], "expected": 72.5}, {"input": [72.5, -27.5], "expected": 72.5}, {"input": [72.5, -27.0], "expected": 72.5}, {"input": [72.5, -26.5], "expected": 72.5}, {"input": [72.5, -26.0], "expected": 72.5}, {"input": [72.5, -25.5], "expected": 72.5}, {"input": [72.5, -25.0], "expected": 72.5}, {"input": [72.5, -24.5], "expected": 72.5}, {"input": [72.5, -24.0], "expected": 72.5}, {"input": [72.5, -23.5], "expected": 72.5}, {"input": [72.5, -23.0], "expected": 72.5}, {"input": [72.5, -22.5], "expected": 72.5}, {"input": [72.5, -22.0], "expected": 72.5}, {"input": [72.5, -21.5], "expected": 72.5}, {"input": [72.5, -21.0], "expected": 72.5}, {"input": [72.5, -20.5], "expected": 72.5}, {"input": [72.5, -20.0], "expected": 72.5}, {"input": [72.5, -19.5], "expected": 72.5}, {"input": [72.5, -19.0], "expected": 72.5}, {"input": [72.5, -18.5], "expected": 72.5}, {"input": [72.5, -18.0], "expected": 72.5}, {"input": [72.5, -17.5], "expected": 72.5}, {"input": [72.5, -17.0], "expected": 72.5}, {"input": [72.5, -16.5], "expected": 72.5}, {"input": [72.5, -16.0], "expected": 72.5}, {"input": [72.5, -15.5], "expected": 72.5}, {"input": [72.5, -15.0], "expected": 72.5}, {"input": [72.5, -14.5], "expected": 72.5}, {"input": [72.5, -14.0], "expected": 72.5}, {"input": [72.5, -13.5], "expected": 72.5}, {"input": [72.5, -13.0], "expected": 72.5}, {"input": [72.5, -12.5], "expected": 72.5}, {"input": [72.5, -12.0], "expected": 72.5}, {"input": [72.5, -11.5], "expected": 72.5}, {"input": [72.5, -11.0], "expected": 72.5}, {"input": [72.5, -10.5], "expected": 72.5}, {"input": [72.5, -10.0], "expected": 72.5}, {"input": [72.5, -9.5], "expected": 72.5}, {"input": [72.5, -9.0], "expected": 72.5}, {"input": [72.5, -8.5], "expected": 72.5}, {"input": [72.5, -8.0], "expected": 72.5}, {"input": [72.5, -7.5], "expected": 72.5}, {"input": [72.5, -7.0], "expected": 72.5}, {"input": [72.5, -6.5], "expected": 72.5}, {"input": [72.5, -6.0], "expected": 72.5}, {"input": [72.5, -5.5], "expected": 72.5}, {"input": [72.5, -5.0], "expected": 72.5}, {"input": [72.5, -4.5], "expected": 72.5}, {"input": [72.5, -4.0], "expected": 72.5}, {"input": [72.5, -3.5], "expected": 72.5}, {"input": [72.5, -3.0], "expected": 72.5}, {"input": [72.5, -2.5], "expected": 72.5}, {"input": [72.5, -2.0], "expected": 72.5}, {"input": [72.5, -1.5], "expected": 72.5}, {"input": [72.5, -1.0], "expected": 72.5}, {"input": [72.5, -0.5], "expected": 72.5}, {"input": [72.5, 0.0], "expected": 72.5}, {"input": [72.5, 0.5], "expected": 72.5}, {"input": [72.5, 1.0], "expected": 72.5}, {"input": [72.5, 1.5], "expected": 72.5}, {"input": [72.5, 2.0], "expected": 72.5}, {"input": [72.5, 2.5], "expected": 72.5}, {"input": [72.5, 3.0], "expected": 72.5}, {"input": [72.5, 3.5], "expected": 72.5}, {"input": [72.5, 4.0], "expected": 72.5}, {"input": [72.5, 4.5], "expected": 72.5}, {"input": [72.5, 5.0], "expected": 72.5}, {"input": [72.5, 5.5], "expected": 72.5}, {"input": [72.5, 6.0], "expected": 72.5}, {"input": [72.5, 6.5], "expected": 72.5}, {"input": [72.5, 7.0], "expected": 72.5}, {"input": [72.5, 7.5], "expected": 72.5}, {"input": [72.5, 8.0], "expected": 72.5}, {"input": [72.5, 8.5], "expected": 72.5}, {"input": [72.5, 9.0], "expected": 72.5}, {"input": [72.5, 9.5], "expected": 72.5}, {"input": [72.5, 10.0], "expected": 72.5}, {"input": [72.5, 10.5], "expected": 72.5}, {"input": [72.5, 11.0], "expected": 72.5}, {"input": [72.5, 11.5], "expected": 72.5}, {"input": [72.5, 12.0], "expected": 72.5}, {"input": [72.5, 12.5], "expected": 72.5}, {"input": [72.5, 13.0], "expected": 72.5}, {"input": [72.5, 13.5], "expected": 72.5}, {"input": [72.5, 14.0], "expected": 72.5}, {"input": [72.5, 14.5], "expected": 72.5}, {"input": [72.5, 15.0], "expected": 72.5}, {"input": [72.5, 15.5], "expected": 72.5}, {"input": [72.5, 16.0], "expected": 72.5}, {"input": [72.5, 16.5], "expected": 72.5}, {"input": [72.5, 17.0], "expected": 72.5}, {"input": [72.5, 17.5], "expected": 72.5}, {"input": [72.5, 18.0], "expected": 72.5}, {"input": [72.5, 18.5], "expected": 72.5}, {"input": [72.5, 19.0], "expected": 72.5}, {"input": [72.5, 19.5], "expected": 72.5}, {"input": [72.5, 20.0], "expected": 72.5}, {"input": [72.5, 20.5], "expected": 72.5}, {"input": [72.5, 21.0], "expected": 72.5}, {"input": [72.5, 21.5], "expected": 72.5}, {"input": [72.5, 22.0], "expected": 72.5}, {"input": [72.5, 22.5], "expected": 72.5}, {"input": [72.5, 23.0], "expected": 72.5}, {"input": [72.5, 23.5], "expected": 72.5}, {"input": [72.5, 24.0], "expected": 72.5}, {"input": [72.5, 24.5], "expected": 72.5}, {"input": [72.5, 25.0], "expected": 72.5}, {"input": [72.5, 25.5], "expected": 72.5}, {"input": [72.5, 26.0], "expected": 72.5}, {"input": [72.5, 26.5], "expected": 72.5}, {"input": [72.5, 27.0], "expected": 72.5}, {"input": [72.5, 27.5], "expected": 72.5}, {"input": [72.5, 28.0], "expected": 72.5}, {"input": [72.5, 28.5], "expected": 72.5}, {"input": [72.5, 29.0], "expected": 72.5}, {"input": [72.5, 29.5], "expected": 72.5}, {"input": [72.5, 30.0], "expected": 72.5}, {"input": [72.5, 30.5], "expected": 72.5}, {"input": [72.5, 31.0], "expected": 72.5}, {"input": [72.5, 31.5], "expected": 72.5}, {"input": [72.5, 32.0], "expected": 72.5}, {"input": [72.5, 32.5], "expected": 72.5}, {"input": [72.5, 33.0], "expected": 72.5}, {"input": [72.5, 33.5], "expected": 72.5}, {"input": [72.5, 34.0], "expected": 72.5}, {"input": [72.5, 34.5], "expected": 72.5}, {"input": [72.5, 35.0], "expected": 72.5}, {"input": [72.5, 35.5], "expected": 72.5}, {"input": [72.5, 36.0], "expected": 72.5}, {"input": [72.5, 36.5], "expected": 72.5}, {"input": [72.5, 37.0], "expected": 72.5}, {"input": [72.5, 37.5], "expected": 72.5}, {"input": [72.5, 38.0], "expected": 72.5}, {"input": [72.5, 38.5], "expected": 72.5}, {"input": [72.5, 39.0], "expected": 72.5}, {"input": [72.5, 39.5], "expected": 72.5}, {"input": [72.5, 40.0], "expected": 72.50000000000001}, {"input": [72.5, 40.5], "expected": 72.50000000000001}, {"input": [72.5, 41.0], "expected": 72.50000000000001}, {"input": [72.5, 41.5], "expected": 72.50000000000003}, {"input": [72.5, 42.0], "expected": 72.50000000000006}, {"input": [72.5, 42.5], "expected": 72.5000000000001}, {"input": [72.5, 43.0], "expected": 72.50000000000016}, {"input": [72.5, 43.5], "expected": 72.50000000000026}, {"input": [72.5, 44.0], "expected": 72.50000000000043}, {"input": [72.5, 44.5], "expected": 72.5000000000007}, {"input": [72.5, 45.0], "expected": 72.50000000000114}, {"input": [72.5, 45.5], "expected": 72.50000000000188}, {"input": [72.5, 46.0], "expected": 72.5000000000031}, {"input": [72.5, 46.5], "expected": 72.50000000000512}, {"input": [72.5, 47.0], "expected": 72.50000000000843}, {"input": [72.5, 47.5], "expected": 72.50000000001388}, {"input": [72.5, 48.0], "expected": 72.5000000000229}, {"input": [72.5, 48.5], "expected": 72.50000000003776}, {"input": [72.5, 49.0], "expected": 72.50000000006224}, {"input": [72.5, 49.5], "expected": 72.50000000010262}, {"input": [72.5, 50.0], "expected": 72.5000000001692}, {"input": [72.5, 50.5], "expected": 72.50000000027894}, {"input": [72.5, 51.0], "expected": 72.5000000004599}, {"input": [72.5, 51.5], "expected": 72.50000000075826}, {"input": [72.5, 52.0], "expected": 72.50000000125016}, {"input": [72.5, 52.5], "expected": 72.50000000206116}, {"input": [72.5, 53.0], "expected": 72.50000000339827}, {"input": [72.5, 53.5], "expected": 72.5000000056028}, {"input": [72.5, 54.0], "expected": 72.50000000923745}, {"input": [72.5, 54.5], "expected": 72.50000001522999}, {"input": [72.5, 55.0], "expected": 72.50000002511}, {"input": [72.5, 55.5], "expected": 72.50000004139937}, {"input": [72.5, 56.0], "expected": 72.50000006825603}, {"input": [72.5, 56.5], "expected": 72.50000011253516}, {"input": [72.5, 57.0], "expected": 72.50000018553912}, {"input": [72.5, 57.5], "expected": 72.50000030590228}, {"input": [72.5, 58.0], "expected": 72.50000050434754}, {"input": [72.5, 58.5], "expected": 72.50000083152837}, {"input": [72.5, 59.0], "expected": 72.50000137095815}, {"input": [72.5, 59.5], "expected": 72.50000226032685}, {"input": [72.5, 60.0], "expected": 72.50000372664623}, {"input": [72.5, 60.5], "expected": 72.50000614419348}, {"input": [72.5, 61.0], "expected": 72.50001013004228}, {"input": [72.5, 61.5], "expected": 72.50001670156132}, {"input": [72.5, 62.0], "expected": 72.50002753607023}, {"input": [72.5, 62.5], "expected": 72.50004539889922}, {"input": [72.5, 63.0], "expected": 72.50007484902864}, {"input": [72.5, 63.5], "expected": 72.50012340218973}, {"input": [72.5, 64.0], "expected": 72.50020344767213}, {"input": [72.5, 64.5], "expected": 72.5003354063729}, {"input": [72.5, 65.0], "expected": 72.50055293147535}, {"input": [72.5, 65.5], "expected": 72.50091146645377}, {"input": [72.5, 66.0], "expected": 72.50150231015975}, {"input": [72.5, 66.5], "expected": 72.50247568513772}, {"input": [72.5, 67.0], "expected": 72.50407844327057}, {"input": [72.5, 67.5], "expected": 72.50671534848912}, {"input": [72.5, 68.0], "expected": 72.5110477448486}, {"input": [72.5, 68.5], "expected": 72.5181499279178}, {"input": [72.5, 69.0], "expected": 72.52975041827263}, {"input": [72.5, 69.5], "expected": 72.54858735157374}, {"input": [72.5, 70.0], "expected": 72.57888973429255}, {"input": [72.5, 70.5], "expected": 72.62692801104298}, {"input": [72.5, 71.0], "expected": 72.70141327798275}, {"input": [72.5, 71.5], "expected": 72.81326168751822}, {"input": [72.5, 72.0], "expected": 72.9740769841801}, {"input": [72.5, 72.5], "expected": 73.19314718055995}, {"input": [72.5, 73.0], "expected": 73.4740769841801}, {"input": [72.5, 73.5], "expected": 73.81326168751822}, {"input": [72.5, 74.0], "expected": 74.20141327798275}, {"input": [72.5, 74.5], "expected": 74.62692801104298}, {"input": [72.5, 75.0], "expected": 75.07888973429255}, {"input": [72.5, 75.5], "expected": 75.54858735157374}, {"input": [72.5, 76.0], "expected": 76.02975041827263}, {"input": [72.5, 76.5], "expected": 76.5181499279178}, {"input": [72.5, 77.0], "expected": 77.0110477448486}, {"input": [72.5, 77.5], "expected": 77.50671534848912}, {"input": [72.5, 78.0], "expected": 78.00407844327057}, {"input": [72.5, 78.5], "expected": 78.50247568513772}, {"input": [72.5, 79.0], "expected": 79.00150231015975}, {"input": [72.5, 79.5], "expected": 79.50091146645377}, {"input": [72.5, 80.0], "expected": 80.00055293147535}, {"input": [72.5, 80.5], "expected": 80.5003354063729}, {"input": [72.5, 81.0], "expected": 81.00020344767213}, {"input": [72.5, 81.5], "expected": 81.50012340218973}, {"input": [72.5, 82.0], "expected": 82.00007484902864}, {"input": [72.5, 82.5], "expected": 82.50004539889922}, {"input": [72.5, 83.0], "expected": 83.00002753607023}, {"input": [72.5, 83.5], "expected": 83.50001670156132}, {"input": [72.5, 84.0], "expected": 84.00001013004228}, {"input": [72.5, 84.5], "expected": 84.50000614419348}, {"input": [72.5, 85.0], "expected": 85.00000372664623}, {"input": [72.5, 85.5], "expected": 85.50000226032685}, {"input": [72.5, 86.0], "expected": 86.00000137095815}, {"input": [72.5, 86.5], "expected": 86.50000083152837}, {"input": [72.5, 87.0], "expected": 87.00000050434754}, {"input": [72.5, 87.5], "expected": 87.50000030590228}, {"input": [72.5, 88.0], "expected": 88.00000018553912}, {"input": [72.5, 88.5], "expected": 88.50000011253516}, {"input": [72.5, 89.0], "expected": 89.00000006825603}, {"input": [72.5, 89.5], "expected": 89.50000004139937}, {"input": [72.5, 90.0], "expected": 90.00000002511}, {"input": [72.5, 90.5], "expected": 90.50000001522999}, {"input": [72.5, 91.0], "expected": 91.00000000923745}, {"input": [72.5, 91.5], "expected": 91.5000000056028}, {"input": [72.5, 92.0], "expected": 92.00000000339827}, {"input": [72.5, 92.5], "expected": 92.50000000206116}, {"input": [72.5, 93.0], "expected": 93.00000000125016}, {"input": [72.5, 93.5], "expected": 93.50000000075826}, {"input": [72.5, 94.0], "expected": 94.0000000004599}, {"input": [72.5, 94.5], "expected": 94.50000000027894}, {"input": [72.5, 95.0], "expected": 95.0000000001692}, {"input": [72.5, 95.5], "expected": 95.50000000010262}, {"input": [72.5, 96.0], "expected": 96.00000000006224}, {"input": [72.5, 96.5], "expected": 96.50000000003776}, {"input": [72.5, 97.0], "expected": 97.0000000000229}, {"input": [72.5, 97.5], "expected": 97.50000000001388}, {"input": [72.5, 98.0], "expected": 98.00000000000843}, {"input": [72.5, 98.5], "expected": 98.50000000000512}, {"input": [72.5, 99.0], "expected": 99.0000000000031}, {"input": [72.5, 99.5], "expected": 99.50000000000188}, {"input": [73.0, -100.0], "expected": 73.0}, {"input": [73.0, -99.5], "expected": 73.0}, {"input": [73.0, -99.0], "expected": 73.0}, {"input": [73.0, -98.5], "expected": 73.0}, {"input": [73.0, -98.0], "expected": 73.0}, {"input": [73.0, -97.5], "expected": 73.0}, {"input": [73.0, -97.0], "expected": 73.0}, {"input": [73.0, -96.5], "expected": 73.0}, {"input": [73.0, -96.0], "expected": 73.0}, {"input": [73.0, -95.5], "expected": 73.0}, {"input": [73.0, -95.0], "expected": 73.0}, {"input": [73.0, -94.5], "expected": 73.0}, {"input": [73.0, -94.0], "expected": 73.0}, {"input": [73.0, -93.5], "expected": 73.0}, {"input": [73.0, -93.0], "expected": 73.0}, {"input": [73.0, -92.5], "expected": 73.0}, {"input": [73.0, -92.0], "expected": 73.0}, {"input": [73.0, -91.5], "expected": 73.0}, {"input": [73.0, -91.0], "expected": 73.0}, {"input": [73.0, -90.5], "expected": 73.0}, {"input": [73.0, -90.0], "expected": 73.0}, {"input": [73.0, -89.5], "expected": 73.0}, {"input": [73.0, -89.0], "expected": 73.0}, {"input": [73.0, -88.5], "expected": 73.0}, {"input": [73.0, -88.0], "expected": 73.0}, {"input": [73.0, -87.5], "expected": 73.0}, {"input": [73.0, -87.0], "expected": 73.0}, {"input": [73.0, -86.5], "expected": 73.0}, {"input": [73.0, -86.0], "expected": 73.0}, {"input": [73.0, -85.5], "expected": 73.0}, {"input": [73.0, -85.0], "expected": 73.0}, {"input": [73.0, -84.5], "expected": 73.0}, {"input": [73.0, -84.0], "expected": 73.0}, {"input": [73.0, -83.5], "expected": 73.0}, {"input": [73.0, -83.0], "expected": 73.0}, {"input": [73.0, -82.5], "expected": 73.0}, {"input": [73.0, -82.0], "expected": 73.0}, {"input": [73.0, -81.5], "expected": 73.0}, {"input": [73.0, -81.0], "expected": 73.0}, {"input": [73.0, -80.5], "expected": 73.0}, {"input": [73.0, -80.0], "expected": 73.0}, {"input": [73.0, -79.5], "expected": 73.0}, {"input": [73.0, -79.0], "expected": 73.0}, {"input": [73.0, -78.5], "expected": 73.0}, {"input": [73.0, -78.0], "expected": 73.0}, {"input": [73.0, -77.5], "expected": 73.0}, {"input": [73.0, -77.0], "expected": 73.0}, {"input": [73.0, -76.5], "expected": 73.0}, {"input": [73.0, -76.0], "expected": 73.0}, {"input": [73.0, -75.5], "expected": 73.0}, {"input": [73.0, -75.0], "expected": 73.0}, {"input": [73.0, -74.5], "expected": 73.0}, {"input": [73.0, -74.0], "expected": 73.0}, {"input": [73.0, -73.5], "expected": 73.0}, {"input": [73.0, -73.0], "expected": 73.0}, {"input": [73.0, -72.5], "expected": 73.0}, {"input": [73.0, -72.0], "expected": 73.0}, {"input": [73.0, -71.5], "expected": 73.0}, {"input": [73.0, -71.0], "expected": 73.0}, {"input": [73.0, -70.5], "expected": 73.0}, {"input": [73.0, -70.0], "expected": 73.0}, {"input": [73.0, -69.5], "expected": 73.0}, {"input": [73.0, -69.0], "expected": 73.0}, {"input": [73.0, -68.5], "expected": 73.0}, {"input": [73.0, -68.0], "expected": 73.0}, {"input": [73.0, -67.5], "expected": 73.0}, {"input": [73.0, -67.0], "expected": 73.0}, {"input": [73.0, -66.5], "expected": 73.0}, {"input": [73.0, -66.0], "expected": 73.0}, {"input": [73.0, -65.5], "expected": 73.0}, {"input": [73.0, -65.0], "expected": 73.0}, {"input": [73.0, -64.5], "expected": 73.0}, {"input": [73.0, -64.0], "expected": 73.0}, {"input": [73.0, -63.5], "expected": 73.0}, {"input": [73.0, -63.0], "expected": 73.0}, {"input": [73.0, -62.5], "expected": 73.0}, {"input": [73.0, -62.0], "expected": 73.0}, {"input": [73.0, -61.5], "expected": 73.0}, {"input": [73.0, -61.0], "expected": 73.0}, {"input": [73.0, -60.5], "expected": 73.0}, {"input": [73.0, -60.0], "expected": 73.0}, {"input": [73.0, -59.5], "expected": 73.0}, {"input": [73.0, -59.0], "expected": 73.0}, {"input": [73.0, -58.5], "expected": 73.0}, {"input": [73.0, -58.0], "expected": 73.0}, {"input": [73.0, -57.5], "expected": 73.0}, {"input": [73.0, -57.0], "expected": 73.0}, {"input": [73.0, -56.5], "expected": 73.0}, {"input": [73.0, -56.0], "expected": 73.0}, {"input": [73.0, -55.5], "expected": 73.0}, {"input": [73.0, -55.0], "expected": 73.0}, {"input": [73.0, -54.5], "expected": 73.0}, {"input": [73.0, -54.0], "expected": 73.0}, {"input": [73.0, -53.5], "expected": 73.0}, {"input": [73.0, -53.0], "expected": 73.0}, {"input": [73.0, -52.5], "expected": 73.0}, {"input": [73.0, -52.0], "expected": 73.0}, {"input": [73.0, -51.5], "expected": 73.0}, {"input": [73.0, -51.0], "expected": 73.0}, {"input": [73.0, -50.5], "expected": 73.0}, {"input": [73.0, -50.0], "expected": 73.0}, {"input": [73.0, -49.5], "expected": 73.0}, {"input": [73.0, -49.0], "expected": 73.0}, {"input": [73.0, -48.5], "expected": 73.0}, {"input": [73.0, -48.0], "expected": 73.0}, {"input": [73.0, -47.5], "expected": 73.0}, {"input": [73.0, -47.0], "expected": 73.0}, {"input": [73.0, -46.5], "expected": 73.0}, {"input": [73.0, -46.0], "expected": 73.0}, {"input": [73.0, -45.5], "expected": 73.0}, {"input": [73.0, -45.0], "expected": 73.0}, {"input": [73.0, -44.5], "expected": 73.0}, {"input": [73.0, -44.0], "expected": 73.0}, {"input": [73.0, -43.5], "expected": 73.0}, {"input": [73.0, -43.0], "expected": 73.0}, {"input": [73.0, -42.5], "expected": 73.0}, {"input": [73.0, -42.0], "expected": 73.0}, {"input": [73.0, -41.5], "expected": 73.0}, {"input": [73.0, -41.0], "expected": 73.0}, {"input": [73.0, -40.5], "expected": 73.0}, {"input": [73.0, -40.0], "expected": 73.0}, {"input": [73.0, -39.5], "expected": 73.0}, {"input": [73.0, -39.0], "expected": 73.0}, {"input": [73.0, -38.5], "expected": 73.0}, {"input": [73.0, -38.0], "expected": 73.0}, {"input": [73.0, -37.5], "expected": 73.0}, {"input": [73.0, -37.0], "expected": 73.0}, {"input": [73.0, -36.5], "expected": 73.0}, {"input": [73.0, -36.0], "expected": 73.0}, {"input": [73.0, -35.5], "expected": 73.0}, {"input": [73.0, -35.0], "expected": 73.0}, {"input": [73.0, -34.5], "expected": 73.0}, {"input": [73.0, -34.0], "expected": 73.0}, {"input": [73.0, -33.5], "expected": 73.0}, {"input": [73.0, -33.0], "expected": 73.0}, {"input": [73.0, -32.5], "expected": 73.0}, {"input": [73.0, -32.0], "expected": 73.0}, {"input": [73.0, -31.5], "expected": 73.0}, {"input": [73.0, -31.0], "expected": 73.0}, {"input": [73.0, -30.5], "expected": 73.0}, {"input": [73.0, -30.0], "expected": 73.0}, {"input": [73.0, -29.5], "expected": 73.0}, {"input": [73.0, -29.0], "expected": 73.0}, {"input": [73.0, -28.5], "expected": 73.0}, {"input": [73.0, -28.0], "expected": 73.0}, {"input": [73.0, -27.5], "expected": 73.0}, {"input": [73.0, -27.0], "expected": 73.0}, {"input": [73.0, -26.5], "expected": 73.0}, {"input": [73.0, -26.0], "expected": 73.0}, {"input": [73.0, -25.5], "expected": 73.0}, {"input": [73.0, -25.0], "expected": 73.0}, {"input": [73.0, -24.5], "expected": 73.0}, {"input": [73.0, -24.0], "expected": 73.0}, {"input": [73.0, -23.5], "expected": 73.0}, {"input": [73.0, -23.0], "expected": 73.0}, {"input": [73.0, -22.5], "expected": 73.0}, {"input": [73.0, -22.0], "expected": 73.0}, {"input": [73.0, -21.5], "expected": 73.0}, {"input": [73.0, -21.0], "expected": 73.0}, {"input": [73.0, -20.5], "expected": 73.0}, {"input": [73.0, -20.0], "expected": 73.0}, {"input": [73.0, -19.5], "expected": 73.0}, {"input": [73.0, -19.0], "expected": 73.0}, {"input": [73.0, -18.5], "expected": 73.0}, {"input": [73.0, -18.0], "expected": 73.0}, {"input": [73.0, -17.5], "expected": 73.0}, {"input": [73.0, -17.0], "expected": 73.0}, {"input": [73.0, -16.5], "expected": 73.0}, {"input": [73.0, -16.0], "expected": 73.0}, {"input": [73.0, -15.5], "expected": 73.0}, {"input": [73.0, -15.0], "expected": 73.0}, {"input": [73.0, -14.5], "expected": 73.0}, {"input": [73.0, -14.0], "expected": 73.0}, {"input": [73.0, -13.5], "expected": 73.0}, {"input": [73.0, -13.0], "expected": 73.0}, {"input": [73.0, -12.5], "expected": 73.0}, {"input": [73.0, -12.0], "expected": 73.0}, {"input": [73.0, -11.5], "expected": 73.0}, {"input": [73.0, -11.0], "expected": 73.0}, {"input": [73.0, -10.5], "expected": 73.0}, {"input": [73.0, -10.0], "expected": 73.0}, {"input": [73.0, -9.5], "expected": 73.0}, {"input": [73.0, -9.0], "expected": 73.0}, {"input": [73.0, -8.5], "expected": 73.0}, {"input": [73.0, -8.0], "expected": 73.0}, {"input": [73.0, -7.5], "expected": 73.0}, {"input": [73.0, -7.0], "expected": 73.0}, {"input": [73.0, -6.5], "expected": 73.0}, {"input": [73.0, -6.0], "expected": 73.0}, {"input": [73.0, -5.5], "expected": 73.0}, {"input": [73.0, -5.0], "expected": 73.0}, {"input": [73.0, -4.5], "expected": 73.0}, {"input": [73.0, -4.0], "expected": 73.0}, {"input": [73.0, -3.5], "expected": 73.0}, {"input": [73.0, -3.0], "expected": 73.0}, {"input": [73.0, -2.5], "expected": 73.0}, {"input": [73.0, -2.0], "expected": 73.0}, {"input": [73.0, -1.5], "expected": 73.0}, {"input": [73.0, -1.0], "expected": 73.0}, {"input": [73.0, -0.5], "expected": 73.0}, {"input": [73.0, 0.0], "expected": 73.0}, {"input": [73.0, 0.5], "expected": 73.0}, {"input": [73.0, 1.0], "expected": 73.0}, {"input": [73.0, 1.5], "expected": 73.0}, {"input": [73.0, 2.0], "expected": 73.0}, {"input": [73.0, 2.5], "expected": 73.0}, {"input": [73.0, 3.0], "expected": 73.0}, {"input": [73.0, 3.5], "expected": 73.0}, {"input": [73.0, 4.0], "expected": 73.0}, {"input": [73.0, 4.5], "expected": 73.0}, {"input": [73.0, 5.0], "expected": 73.0}, {"input": [73.0, 5.5], "expected": 73.0}, {"input": [73.0, 6.0], "expected": 73.0}, {"input": [73.0, 6.5], "expected": 73.0}, {"input": [73.0, 7.0], "expected": 73.0}, {"input": [73.0, 7.5], "expected": 73.0}, {"input": [73.0, 8.0], "expected": 73.0}, {"input": [73.0, 8.5], "expected": 73.0}, {"input": [73.0, 9.0], "expected": 73.0}, {"input": [73.0, 9.5], "expected": 73.0}, {"input": [73.0, 10.0], "expected": 73.0}, {"input": [73.0, 10.5], "expected": 73.0}, {"input": [73.0, 11.0], "expected": 73.0}, {"input": [73.0, 11.5], "expected": 73.0}, {"input": [73.0, 12.0], "expected": 73.0}, {"input": [73.0, 12.5], "expected": 73.0}, {"input": [73.0, 13.0], "expected": 73.0}, {"input": [73.0, 13.5], "expected": 73.0}, {"input": [73.0, 14.0], "expected": 73.0}, {"input": [73.0, 14.5], "expected": 73.0}, {"input": [73.0, 15.0], "expected": 73.0}, {"input": [73.0, 15.5], "expected": 73.0}, {"input": [73.0, 16.0], "expected": 73.0}, {"input": [73.0, 16.5], "expected": 73.0}, {"input": [73.0, 17.0], "expected": 73.0}, {"input": [73.0, 17.5], "expected": 73.0}, {"input": [73.0, 18.0], "expected": 73.0}, {"input": [73.0, 18.5], "expected": 73.0}, {"input": [73.0, 19.0], "expected": 73.0}, {"input": [73.0, 19.5], "expected": 73.0}, {"input": [73.0, 20.0], "expected": 73.0}, {"input": [73.0, 20.5], "expected": 73.0}, {"input": [73.0, 21.0], "expected": 73.0}, {"input": [73.0, 21.5], "expected": 73.0}, {"input": [73.0, 22.0], "expected": 73.0}, {"input": [73.0, 22.5], "expected": 73.0}, {"input": [73.0, 23.0], "expected": 73.0}, {"input": [73.0, 23.5], "expected": 73.0}, {"input": [73.0, 24.0], "expected": 73.0}, {"input": [73.0, 24.5], "expected": 73.0}, {"input": [73.0, 25.0], "expected": 73.0}, {"input": [73.0, 25.5], "expected": 73.0}, {"input": [73.0, 26.0], "expected": 73.0}, {"input": [73.0, 26.5], "expected": 73.0}, {"input": [73.0, 27.0], "expected": 73.0}, {"input": [73.0, 27.5], "expected": 73.0}, {"input": [73.0, 28.0], "expected": 73.0}, {"input": [73.0, 28.5], "expected": 73.0}, {"input": [73.0, 29.0], "expected": 73.0}, {"input": [73.0, 29.5], "expected": 73.0}, {"input": [73.0, 30.0], "expected": 73.0}, {"input": [73.0, 30.5], "expected": 73.0}, {"input": [73.0, 31.0], "expected": 73.0}, {"input": [73.0, 31.5], "expected": 73.0}, {"input": [73.0, 32.0], "expected": 73.0}, {"input": [73.0, 32.5], "expected": 73.0}, {"input": [73.0, 33.0], "expected": 73.0}, {"input": [73.0, 33.5], "expected": 73.0}, {"input": [73.0, 34.0], "expected": 73.0}, {"input": [73.0, 34.5], "expected": 73.0}, {"input": [73.0, 35.0], "expected": 73.0}, {"input": [73.0, 35.5], "expected": 73.0}, {"input": [73.0, 36.0], "expected": 73.0}, {"input": [73.0, 36.5], "expected": 73.0}, {"input": [73.0, 37.0], "expected": 73.0}, {"input": [73.0, 37.5], "expected": 73.0}, {"input": [73.0, 38.0], "expected": 73.0}, {"input": [73.0, 38.5], "expected": 73.0}, {"input": [73.0, 39.0], "expected": 73.0}, {"input": [73.0, 39.5], "expected": 73.0}, {"input": [73.0, 40.0], "expected": 73.0}, {"input": [73.0, 40.5], "expected": 73.00000000000001}, {"input": [73.0, 41.0], "expected": 73.00000000000001}, {"input": [73.0, 41.5], "expected": 73.00000000000001}, {"input": [73.0, 42.0], "expected": 73.00000000000003}, {"input": [73.0, 42.5], "expected": 73.00000000000006}, {"input": [73.0, 43.0], "expected": 73.0000000000001}, {"input": [73.0, 43.5], "expected": 73.00000000000016}, {"input": [73.0, 44.0], "expected": 73.00000000000026}, {"input": [73.0, 44.5], "expected": 73.00000000000043}, {"input": [73.0, 45.0], "expected": 73.0000000000007}, {"input": [73.0, 45.5], "expected": 73.00000000000114}, {"input": [73.0, 46.0], "expected": 73.00000000000188}, {"input": [73.0, 46.5], "expected": 73.0000000000031}, {"input": [73.0, 47.0], "expected": 73.00000000000512}, {"input": [73.0, 47.5], "expected": 73.00000000000843}, {"input": [73.0, 48.0], "expected": 73.00000000001388}, {"input": [73.0, 48.5], "expected": 73.0000000000229}, {"input": [73.0, 49.0], "expected": 73.00000000003776}, {"input": [73.0, 49.5], "expected": 73.00000000006224}, {"input": [73.0, 50.0], "expected": 73.00000000010262}, {"input": [73.0, 50.5], "expected": 73.0000000001692}, {"input": [73.0, 51.0], "expected": 73.00000000027894}, {"input": [73.0, 51.5], "expected": 73.0000000004599}, {"input": [73.0, 52.0], "expected": 73.00000000075826}, {"input": [73.0, 52.5], "expected": 73.00000000125016}, {"input": [73.0, 53.0], "expected": 73.00000000206116}, {"input": [73.0, 53.5], "expected": 73.00000000339827}, {"input": [73.0, 54.0], "expected": 73.0000000056028}, {"input": [73.0, 54.5], "expected": 73.00000000923745}, {"input": [73.0, 55.0], "expected": 73.00000001522999}, {"input": [73.0, 55.5], "expected": 73.00000002511}, {"input": [73.0, 56.0], "expected": 73.00000004139937}, {"input": [73.0, 56.5], "expected": 73.00000006825603}, {"input": [73.0, 57.0], "expected": 73.00000011253516}, {"input": [73.0, 57.5], "expected": 73.00000018553912}, {"input": [73.0, 58.0], "expected": 73.00000030590228}, {"input": [73.0, 58.5], "expected": 73.00000050434754}, {"input": [73.0, 59.0], "expected": 73.00000083152837}, {"input": [73.0, 59.5], "expected": 73.00000137095815}, {"input": [73.0, 60.0], "expected": 73.00000226032685}, {"input": [73.0, 60.5], "expected": 73.00000372664623}, {"input": [73.0, 61.0], "expected": 73.00000614419348}, {"input": [73.0, 61.5], "expected": 73.00001013004228}, {"input": [73.0, 62.0], "expected": 73.00001670156132}, {"input": [73.0, 62.5], "expected": 73.00002753607023}, {"input": [73.0, 63.0], "expected": 73.00004539889922}, {"input": [73.0, 63.5], "expected": 73.00007484902864}, {"input": [73.0, 64.0], "expected": 73.00012340218973}, {"input": [73.0, 64.5], "expected": 73.00020344767213}, {"input": [73.0, 65.0], "expected": 73.0003354063729}, {"input": [73.0, 65.5], "expected": 73.00055293147535}, {"input": [73.0, 66.0], "expected": 73.00091146645377}, {"input": [73.0, 66.5], "expected": 73.00150231015975}, {"input": [73.0, 67.0], "expected": 73.00247568513772}, {"input": [73.0, 67.5], "expected": 73.00407844327057}, {"input": [73.0, 68.0], "expected": 73.00671534848912}, {"input": [73.0, 68.5], "expected": 73.0110477448486}, {"input": [73.0, 69.0], "expected": 73.0181499279178}, {"input": [73.0, 69.5], "expected": 73.02975041827263}, {"input": [73.0, 70.0], "expected": 73.04858735157374}, {"input": [73.0, 70.5], "expected": 73.07888973429255}, {"input": [73.0, 71.0], "expected": 73.12692801104298}, {"input": [73.0, 71.5], "expected": 73.20141327798275}, {"input": [73.0, 72.0], "expected": 73.31326168751822}, {"input": [73.0, 72.5], "expected": 73.4740769841801}, {"input": [73.0, 73.0], "expected": 73.69314718055995}, {"input": [73.0, 73.5], "expected": 73.9740769841801}, {"input": [73.0, 74.0], "expected": 74.31326168751822}, {"input": [73.0, 74.5], "expected": 74.70141327798275}, {"input": [73.0, 75.0], "expected": 75.12692801104298}, {"input": [73.0, 75.5], "expected": 75.57888973429255}, {"input": [73.0, 76.0], "expected": 76.04858735157374}, {"input": [73.0, 76.5], "expected": 76.52975041827263}, {"input": [73.0, 77.0], "expected": 77.0181499279178}, {"input": [73.0, 77.5], "expected": 77.5110477448486}, {"input": [73.0, 78.0], "expected": 78.00671534848912}, {"input": [73.0, 78.5], "expected": 78.50407844327057}, {"input": [73.0, 79.0], "expected": 79.00247568513772}, {"input": [73.0, 79.5], "expected": 79.50150231015975}, {"input": [73.0, 80.0], "expected": 80.00091146645377}, {"input": [73.0, 80.5], "expected": 80.50055293147535}, {"input": [73.0, 81.0], "expected": 81.0003354063729}, {"input": [73.0, 81.5], "expected": 81.50020344767213}, {"input": [73.0, 82.0], "expected": 82.00012340218973}, {"input": [73.0, 82.5], "expected": 82.50007484902864}, {"input": [73.0, 83.0], "expected": 83.00004539889922}, {"input": [73.0, 83.5], "expected": 83.50002753607023}, {"input": [73.0, 84.0], "expected": 84.00001670156132}, {"input": [73.0, 84.5], "expected": 84.50001013004228}, {"input": [73.0, 85.0], "expected": 85.00000614419348}, {"input": [73.0, 85.5], "expected": 85.50000372664623}, {"input": [73.0, 86.0], "expected": 86.00000226032685}, {"input": [73.0, 86.5], "expected": 86.50000137095815}, {"input": [73.0, 87.0], "expected": 87.00000083152837}, {"input": [73.0, 87.5], "expected": 87.50000050434754}, {"input": [73.0, 88.0], "expected": 88.00000030590228}, {"input": [73.0, 88.5], "expected": 88.50000018553912}, {"input": [73.0, 89.0], "expected": 89.00000011253516}, {"input": [73.0, 89.5], "expected": 89.50000006825603}, {"input": [73.0, 90.0], "expected": 90.00000004139937}, {"input": [73.0, 90.5], "expected": 90.50000002511}, {"input": [73.0, 91.0], "expected": 91.00000001522999}, {"input": [73.0, 91.5], "expected": 91.50000000923745}, {"input": [73.0, 92.0], "expected": 92.0000000056028}, {"input": [73.0, 92.5], "expected": 92.50000000339827}, {"input": [73.0, 93.0], "expected": 93.00000000206116}, {"input": [73.0, 93.5], "expected": 93.50000000125016}, {"input": [73.0, 94.0], "expected": 94.00000000075826}, {"input": [73.0, 94.5], "expected": 94.5000000004599}, {"input": [73.0, 95.0], "expected": 95.00000000027894}, {"input": [73.0, 95.5], "expected": 95.5000000001692}, {"input": [73.0, 96.0], "expected": 96.00000000010262}, {"input": [73.0, 96.5], "expected": 96.50000000006224}, {"input": [73.0, 97.0], "expected": 97.00000000003776}, {"input": [73.0, 97.5], "expected": 97.5000000000229}, {"input": [73.0, 98.0], "expected": 98.00000000001388}, {"input": [73.0, 98.5], "expected": 98.50000000000843}, {"input": [73.0, 99.0], "expected": 99.00000000000512}, {"input": [73.0, 99.5], "expected": 99.5000000000031}, {"input": [73.5, -100.0], "expected": 73.5}, {"input": [73.5, -99.5], "expected": 73.5}, {"input": [73.5, -99.0], "expected": 73.5}, {"input": [73.5, -98.5], "expected": 73.5}, {"input": [73.5, -98.0], "expected": 73.5}, {"input": [73.5, -97.5], "expected": 73.5}, {"input": [73.5, -97.0], "expected": 73.5}, {"input": [73.5, -96.5], "expected": 73.5}, {"input": [73.5, -96.0], "expected": 73.5}, {"input": [73.5, -95.5], "expected": 73.5}, {"input": [73.5, -95.0], "expected": 73.5}, {"input": [73.5, -94.5], "expected": 73.5}, {"input": [73.5, -94.0], "expected": 73.5}, {"input": [73.5, -93.5], "expected": 73.5}, {"input": [73.5, -93.0], "expected": 73.5}, {"input": [73.5, -92.5], "expected": 73.5}, {"input": [73.5, -92.0], "expected": 73.5}, {"input": [73.5, -91.5], "expected": 73.5}, {"input": [73.5, -91.0], "expected": 73.5}, {"input": [73.5, -90.5], "expected": 73.5}, {"input": [73.5, -90.0], "expected": 73.5}, {"input": [73.5, -89.5], "expected": 73.5}, {"input": [73.5, -89.0], "expected": 73.5}, {"input": [73.5, -88.5], "expected": 73.5}, {"input": [73.5, -88.0], "expected": 73.5}, {"input": [73.5, -87.5], "expected": 73.5}, {"input": [73.5, -87.0], "expected": 73.5}, {"input": [73.5, -86.5], "expected": 73.5}, {"input": [73.5, -86.0], "expected": 73.5}, {"input": [73.5, -85.5], "expected": 73.5}, {"input": [73.5, -85.0], "expected": 73.5}, {"input": [73.5, -84.5], "expected": 73.5}, {"input": [73.5, -84.0], "expected": 73.5}, {"input": [73.5, -83.5], "expected": 73.5}, {"input": [73.5, -83.0], "expected": 73.5}, {"input": [73.5, -82.5], "expected": 73.5}, {"input": [73.5, -82.0], "expected": 73.5}, {"input": [73.5, -81.5], "expected": 73.5}, {"input": [73.5, -81.0], "expected": 73.5}, {"input": [73.5, -80.5], "expected": 73.5}, {"input": [73.5, -80.0], "expected": 73.5}, {"input": [73.5, -79.5], "expected": 73.5}, {"input": [73.5, -79.0], "expected": 73.5}, {"input": [73.5, -78.5], "expected": 73.5}, {"input": [73.5, -78.0], "expected": 73.5}, {"input": [73.5, -77.5], "expected": 73.5}, {"input": [73.5, -77.0], "expected": 73.5}, {"input": [73.5, -76.5], "expected": 73.5}, {"input": [73.5, -76.0], "expected": 73.5}, {"input": [73.5, -75.5], "expected": 73.5}, {"input": [73.5, -75.0], "expected": 73.5}, {"input": [73.5, -74.5], "expected": 73.5}, {"input": [73.5, -74.0], "expected": 73.5}, {"input": [73.5, -73.5], "expected": 73.5}, {"input": [73.5, -73.0], "expected": 73.5}, {"input": [73.5, -72.5], "expected": 73.5}, {"input": [73.5, -72.0], "expected": 73.5}, {"input": [73.5, -71.5], "expected": 73.5}, {"input": [73.5, -71.0], "expected": 73.5}, {"input": [73.5, -70.5], "expected": 73.5}, {"input": [73.5, -70.0], "expected": 73.5}, {"input": [73.5, -69.5], "expected": 73.5}, {"input": [73.5, -69.0], "expected": 73.5}, {"input": [73.5, -68.5], "expected": 73.5}, {"input": [73.5, -68.0], "expected": 73.5}, {"input": [73.5, -67.5], "expected": 73.5}, {"input": [73.5, -67.0], "expected": 73.5}, {"input": [73.5, -66.5], "expected": 73.5}, {"input": [73.5, -66.0], "expected": 73.5}, {"input": [73.5, -65.5], "expected": 73.5}, {"input": [73.5, -65.0], "expected": 73.5}, {"input": [73.5, -64.5], "expected": 73.5}, {"input": [73.5, -64.0], "expected": 73.5}, {"input": [73.5, -63.5], "expected": 73.5}, {"input": [73.5, -63.0], "expected": 73.5}, {"input": [73.5, -62.5], "expected": 73.5}, {"input": [73.5, -62.0], "expected": 73.5}, {"input": [73.5, -61.5], "expected": 73.5}, {"input": [73.5, -61.0], "expected": 73.5}, {"input": [73.5, -60.5], "expected": 73.5}, {"input": [73.5, -60.0], "expected": 73.5}, {"input": [73.5, -59.5], "expected": 73.5}, {"input": [73.5, -59.0], "expected": 73.5}, {"input": [73.5, -58.5], "expected": 73.5}, {"input": [73.5, -58.0], "expected": 73.5}, {"input": [73.5, -57.5], "expected": 73.5}, {"input": [73.5, -57.0], "expected": 73.5}, {"input": [73.5, -56.5], "expected": 73.5}, {"input": [73.5, -56.0], "expected": 73.5}, {"input": [73.5, -55.5], "expected": 73.5}, {"input": [73.5, -55.0], "expected": 73.5}, {"input": [73.5, -54.5], "expected": 73.5}, {"input": [73.5, -54.0], "expected": 73.5}, {"input": [73.5, -53.5], "expected": 73.5}, {"input": [73.5, -53.0], "expected": 73.5}, {"input": [73.5, -52.5], "expected": 73.5}, {"input": [73.5, -52.0], "expected": 73.5}, {"input": [73.5, -51.5], "expected": 73.5}, {"input": [73.5, -51.0], "expected": 73.5}, {"input": [73.5, -50.5], "expected": 73.5}, {"input": [73.5, -50.0], "expected": 73.5}, {"input": [73.5, -49.5], "expected": 73.5}, {"input": [73.5, -49.0], "expected": 73.5}, {"input": [73.5, -48.5], "expected": 73.5}, {"input": [73.5, -48.0], "expected": 73.5}, {"input": [73.5, -47.5], "expected": 73.5}, {"input": [73.5, -47.0], "expected": 73.5}, {"input": [73.5, -46.5], "expected": 73.5}, {"input": [73.5, -46.0], "expected": 73.5}, {"input": [73.5, -45.5], "expected": 73.5}, {"input": [73.5, -45.0], "expected": 73.5}, {"input": [73.5, -44.5], "expected": 73.5}, {"input": [73.5, -44.0], "expected": 73.5}, {"input": [73.5, -43.5], "expected": 73.5}, {"input": [73.5, -43.0], "expected": 73.5}, {"input": [73.5, -42.5], "expected": 73.5}, {"input": [73.5, -42.0], "expected": 73.5}, {"input": [73.5, -41.5], "expected": 73.5}, {"input": [73.5, -41.0], "expected": 73.5}, {"input": [73.5, -40.5], "expected": 73.5}, {"input": [73.5, -40.0], "expected": 73.5}, {"input": [73.5, -39.5], "expected": 73.5}, {"input": [73.5, -39.0], "expected": 73.5}, {"input": [73.5, -38.5], "expected": 73.5}, {"input": [73.5, -38.0], "expected": 73.5}, {"input": [73.5, -37.5], "expected": 73.5}, {"input": [73.5, -37.0], "expected": 73.5}, {"input": [73.5, -36.5], "expected": 73.5}, {"input": [73.5, -36.0], "expected": 73.5}, {"input": [73.5, -35.5], "expected": 73.5}, {"input": [73.5, -35.0], "expected": 73.5}, {"input": [73.5, -34.5], "expected": 73.5}, {"input": [73.5, -34.0], "expected": 73.5}, {"input": [73.5, -33.5], "expected": 73.5}, {"input": [73.5, -33.0], "expected": 73.5}, {"input": [73.5, -32.5], "expected": 73.5}, {"input": [73.5, -32.0], "expected": 73.5}, {"input": [73.5, -31.5], "expected": 73.5}, {"input": [73.5, -31.0], "expected": 73.5}, {"input": [73.5, -30.5], "expected": 73.5}, {"input": [73.5, -30.0], "expected": 73.5}, {"input": [73.5, -29.5], "expected": 73.5}, {"input": [73.5, -29.0], "expected": 73.5}, {"input": [73.5, -28.5], "expected": 73.5}, {"input": [73.5, -28.0], "expected": 73.5}, {"input": [73.5, -27.5], "expected": 73.5}, {"input": [73.5, -27.0], "expected": 73.5}, {"input": [73.5, -26.5], "expected": 73.5}, {"input": [73.5, -26.0], "expected": 73.5}, {"input": [73.5, -25.5], "expected": 73.5}, {"input": [73.5, -25.0], "expected": 73.5}, {"input": [73.5, -24.5], "expected": 73.5}, {"input": [73.5, -24.0], "expected": 73.5}, {"input": [73.5, -23.5], "expected": 73.5}, {"input": [73.5, -23.0], "expected": 73.5}, {"input": [73.5, -22.5], "expected": 73.5}, {"input": [73.5, -22.0], "expected": 73.5}, {"input": [73.5, -21.5], "expected": 73.5}, {"input": [73.5, -21.0], "expected": 73.5}, {"input": [73.5, -20.5], "expected": 73.5}, {"input": [73.5, -20.0], "expected": 73.5}, {"input": [73.5, -19.5], "expected": 73.5}, {"input": [73.5, -19.0], "expected": 73.5}, {"input": [73.5, -18.5], "expected": 73.5}, {"input": [73.5, -18.0], "expected": 73.5}, {"input": [73.5, -17.5], "expected": 73.5}, {"input": [73.5, -17.0], "expected": 73.5}, {"input": [73.5, -16.5], "expected": 73.5}, {"input": [73.5, -16.0], "expected": 73.5}, {"input": [73.5, -15.5], "expected": 73.5}, {"input": [73.5, -15.0], "expected": 73.5}, {"input": [73.5, -14.5], "expected": 73.5}, {"input": [73.5, -14.0], "expected": 73.5}, {"input": [73.5, -13.5], "expected": 73.5}, {"input": [73.5, -13.0], "expected": 73.5}, {"input": [73.5, -12.5], "expected": 73.5}, {"input": [73.5, -12.0], "expected": 73.5}, {"input": [73.5, -11.5], "expected": 73.5}, {"input": [73.5, -11.0], "expected": 73.5}, {"input": [73.5, -10.5], "expected": 73.5}, {"input": [73.5, -10.0], "expected": 73.5}, {"input": [73.5, -9.5], "expected": 73.5}, {"input": [73.5, -9.0], "expected": 73.5}, {"input": [73.5, -8.5], "expected": 73.5}, {"input": [73.5, -8.0], "expected": 73.5}, {"input": [73.5, -7.5], "expected": 73.5}, {"input": [73.5, -7.0], "expected": 73.5}, {"input": [73.5, -6.5], "expected": 73.5}, {"input": [73.5, -6.0], "expected": 73.5}, {"input": [73.5, -5.5], "expected": 73.5}, {"input": [73.5, -5.0], "expected": 73.5}, {"input": [73.5, -4.5], "expected": 73.5}, {"input": [73.5, -4.0], "expected": 73.5}, {"input": [73.5, -3.5], "expected": 73.5}, {"input": [73.5, -3.0], "expected": 73.5}, {"input": [73.5, -2.5], "expected": 73.5}, {"input": [73.5, -2.0], "expected": 73.5}, {"input": [73.5, -1.5], "expected": 73.5}, {"input": [73.5, -1.0], "expected": 73.5}, {"input": [73.5, -0.5], "expected": 73.5}, {"input": [73.5, 0.0], "expected": 73.5}, {"input": [73.5, 0.5], "expected": 73.5}, {"input": [73.5, 1.0], "expected": 73.5}, {"input": [73.5, 1.5], "expected": 73.5}, {"input": [73.5, 2.0], "expected": 73.5}, {"input": [73.5, 2.5], "expected": 73.5}, {"input": [73.5, 3.0], "expected": 73.5}, {"input": [73.5, 3.5], "expected": 73.5}, {"input": [73.5, 4.0], "expected": 73.5}, {"input": [73.5, 4.5], "expected": 73.5}, {"input": [73.5, 5.0], "expected": 73.5}, {"input": [73.5, 5.5], "expected": 73.5}, {"input": [73.5, 6.0], "expected": 73.5}, {"input": [73.5, 6.5], "expected": 73.5}, {"input": [73.5, 7.0], "expected": 73.5}, {"input": [73.5, 7.5], "expected": 73.5}, {"input": [73.5, 8.0], "expected": 73.5}, {"input": [73.5, 8.5], "expected": 73.5}, {"input": [73.5, 9.0], "expected": 73.5}, {"input": [73.5, 9.5], "expected": 73.5}, {"input": [73.5, 10.0], "expected": 73.5}, {"input": [73.5, 10.5], "expected": 73.5}, {"input": [73.5, 11.0], "expected": 73.5}, {"input": [73.5, 11.5], "expected": 73.5}, {"input": [73.5, 12.0], "expected": 73.5}, {"input": [73.5, 12.5], "expected": 73.5}, {"input": [73.5, 13.0], "expected": 73.5}, {"input": [73.5, 13.5], "expected": 73.5}, {"input": [73.5, 14.0], "expected": 73.5}, {"input": [73.5, 14.5], "expected": 73.5}, {"input": [73.5, 15.0], "expected": 73.5}, {"input": [73.5, 15.5], "expected": 73.5}, {"input": [73.5, 16.0], "expected": 73.5}, {"input": [73.5, 16.5], "expected": 73.5}, {"input": [73.5, 17.0], "expected": 73.5}, {"input": [73.5, 17.5], "expected": 73.5}, {"input": [73.5, 18.0], "expected": 73.5}, {"input": [73.5, 18.5], "expected": 73.5}, {"input": [73.5, 19.0], "expected": 73.5}, {"input": [73.5, 19.5], "expected": 73.5}, {"input": [73.5, 20.0], "expected": 73.5}, {"input": [73.5, 20.5], "expected": 73.5}, {"input": [73.5, 21.0], "expected": 73.5}, {"input": [73.5, 21.5], "expected": 73.5}, {"input": [73.5, 22.0], "expected": 73.5}, {"input": [73.5, 22.5], "expected": 73.5}, {"input": [73.5, 23.0], "expected": 73.5}, {"input": [73.5, 23.5], "expected": 73.5}, {"input": [73.5, 24.0], "expected": 73.5}, {"input": [73.5, 24.5], "expected": 73.5}, {"input": [73.5, 25.0], "expected": 73.5}, {"input": [73.5, 25.5], "expected": 73.5}, {"input": [73.5, 26.0], "expected": 73.5}, {"input": [73.5, 26.5], "expected": 73.5}, {"input": [73.5, 27.0], "expected": 73.5}, {"input": [73.5, 27.5], "expected": 73.5}, {"input": [73.5, 28.0], "expected": 73.5}, {"input": [73.5, 28.5], "expected": 73.5}, {"input": [73.5, 29.0], "expected": 73.5}, {"input": [73.5, 29.5], "expected": 73.5}, {"input": [73.5, 30.0], "expected": 73.5}, {"input": [73.5, 30.5], "expected": 73.5}, {"input": [73.5, 31.0], "expected": 73.5}, {"input": [73.5, 31.5], "expected": 73.5}, {"input": [73.5, 32.0], "expected": 73.5}, {"input": [73.5, 32.5], "expected": 73.5}, {"input": [73.5, 33.0], "expected": 73.5}, {"input": [73.5, 33.5], "expected": 73.5}, {"input": [73.5, 34.0], "expected": 73.5}, {"input": [73.5, 34.5], "expected": 73.5}, {"input": [73.5, 35.0], "expected": 73.5}, {"input": [73.5, 35.5], "expected": 73.5}, {"input": [73.5, 36.0], "expected": 73.5}, {"input": [73.5, 36.5], "expected": 73.5}, {"input": [73.5, 37.0], "expected": 73.5}, {"input": [73.5, 37.5], "expected": 73.5}, {"input": [73.5, 38.0], "expected": 73.5}, {"input": [73.5, 38.5], "expected": 73.5}, {"input": [73.5, 39.0], "expected": 73.5}, {"input": [73.5, 39.5], "expected": 73.5}, {"input": [73.5, 40.0], "expected": 73.5}, {"input": [73.5, 40.5], "expected": 73.5}, {"input": [73.5, 41.0], "expected": 73.50000000000001}, {"input": [73.5, 41.5], "expected": 73.50000000000001}, {"input": [73.5, 42.0], "expected": 73.50000000000001}, {"input": [73.5, 42.5], "expected": 73.50000000000003}, {"input": [73.5, 43.0], "expected": 73.50000000000006}, {"input": [73.5, 43.5], "expected": 73.5000000000001}, {"input": [73.5, 44.0], "expected": 73.50000000000016}, {"input": [73.5, 44.5], "expected": 73.50000000000026}, {"input": [73.5, 45.0], "expected": 73.50000000000043}, {"input": [73.5, 45.5], "expected": 73.5000000000007}, {"input": [73.5, 46.0], "expected": 73.50000000000114}, {"input": [73.5, 46.5], "expected": 73.50000000000188}, {"input": [73.5, 47.0], "expected": 73.5000000000031}, {"input": [73.5, 47.5], "expected": 73.50000000000512}, {"input": [73.5, 48.0], "expected": 73.50000000000843}, {"input": [73.5, 48.5], "expected": 73.50000000001388}, {"input": [73.5, 49.0], "expected": 73.5000000000229}, {"input": [73.5, 49.5], "expected": 73.50000000003776}, {"input": [73.5, 50.0], "expected": 73.50000000006224}, {"input": [73.5, 50.5], "expected": 73.50000000010262}, {"input": [73.5, 51.0], "expected": 73.5000000001692}, {"input": [73.5, 51.5], "expected": 73.50000000027894}, {"input": [73.5, 52.0], "expected": 73.5000000004599}, {"input": [73.5, 52.5], "expected": 73.50000000075826}, {"input": [73.5, 53.0], "expected": 73.50000000125016}, {"input": [73.5, 53.5], "expected": 73.50000000206116}, {"input": [73.5, 54.0], "expected": 73.50000000339827}, {"input": [73.5, 54.5], "expected": 73.5000000056028}, {"input": [73.5, 55.0], "expected": 73.50000000923745}, {"input": [73.5, 55.5], "expected": 73.50000001522999}, {"input": [73.5, 56.0], "expected": 73.50000002511}, {"input": [73.5, 56.5], "expected": 73.50000004139937}, {"input": [73.5, 57.0], "expected": 73.50000006825603}, {"input": [73.5, 57.5], "expected": 73.50000011253516}, {"input": [73.5, 58.0], "expected": 73.50000018553912}, {"input": [73.5, 58.5], "expected": 73.50000030590228}, {"input": [73.5, 59.0], "expected": 73.50000050434754}, {"input": [73.5, 59.5], "expected": 73.50000083152837}, {"input": [73.5, 60.0], "expected": 73.50000137095815}, {"input": [73.5, 60.5], "expected": 73.50000226032685}, {"input": [73.5, 61.0], "expected": 73.50000372664623}, {"input": [73.5, 61.5], "expected": 73.50000614419348}, {"input": [73.5, 62.0], "expected": 73.50001013004228}, {"input": [73.5, 62.5], "expected": 73.50001670156132}, {"input": [73.5, 63.0], "expected": 73.50002753607023}, {"input": [73.5, 63.5], "expected": 73.50004539889922}, {"input": [73.5, 64.0], "expected": 73.50007484902864}, {"input": [73.5, 64.5], "expected": 73.50012340218973}, {"input": [73.5, 65.0], "expected": 73.50020344767213}, {"input": [73.5, 65.5], "expected": 73.5003354063729}, {"input": [73.5, 66.0], "expected": 73.50055293147535}, {"input": [73.5, 66.5], "expected": 73.50091146645377}, {"input": [73.5, 67.0], "expected": 73.50150231015975}, {"input": [73.5, 67.5], "expected": 73.50247568513772}, {"input": [73.5, 68.0], "expected": 73.50407844327057}, {"input": [73.5, 68.5], "expected": 73.50671534848912}, {"input": [73.5, 69.0], "expected": 73.5110477448486}, {"input": [73.5, 69.5], "expected": 73.5181499279178}, {"input": [73.5, 70.0], "expected": 73.52975041827263}, {"input": [73.5, 70.5], "expected": 73.54858735157374}, {"input": [73.5, 71.0], "expected": 73.57888973429255}, {"input": [73.5, 71.5], "expected": 73.62692801104298}, {"input": [73.5, 72.0], "expected": 73.70141327798275}, {"input": [73.5, 72.5], "expected": 73.81326168751822}, {"input": [73.5, 73.0], "expected": 73.9740769841801}, {"input": [73.5, 73.5], "expected": 74.19314718055995}, {"input": [73.5, 74.0], "expected": 74.4740769841801}, {"input": [73.5, 74.5], "expected": 74.81326168751822}, {"input": [73.5, 75.0], "expected": 75.20141327798275}, {"input": [73.5, 75.5], "expected": 75.62692801104298}, {"input": [73.5, 76.0], "expected": 76.07888973429255}, {"input": [73.5, 76.5], "expected": 76.54858735157374}, {"input": [73.5, 77.0], "expected": 77.02975041827263}, {"input": [73.5, 77.5], "expected": 77.5181499279178}, {"input": [73.5, 78.0], "expected": 78.0110477448486}, {"input": [73.5, 78.5], "expected": 78.50671534848912}, {"input": [73.5, 79.0], "expected": 79.00407844327057}, {"input": [73.5, 79.5], "expected": 79.50247568513772}, {"input": [73.5, 80.0], "expected": 80.00150231015975}, {"input": [73.5, 80.5], "expected": 80.50091146645377}, {"input": [73.5, 81.0], "expected": 81.00055293147535}, {"input": [73.5, 81.5], "expected": 81.5003354063729}, {"input": [73.5, 82.0], "expected": 82.00020344767213}, {"input": [73.5, 82.5], "expected": 82.50012340218973}, {"input": [73.5, 83.0], "expected": 83.00007484902864}, {"input": [73.5, 83.5], "expected": 83.50004539889922}, {"input": [73.5, 84.0], "expected": 84.00002753607023}, {"input": [73.5, 84.5], "expected": 84.50001670156132}, {"input": [73.5, 85.0], "expected": 85.00001013004228}, {"input": [73.5, 85.5], "expected": 85.50000614419348}, {"input": [73.5, 86.0], "expected": 86.00000372664623}, {"input": [73.5, 86.5], "expected": 86.50000226032685}, {"input": [73.5, 87.0], "expected": 87.00000137095815}, {"input": [73.5, 87.5], "expected": 87.50000083152837}, {"input": [73.5, 88.0], "expected": 88.00000050434754}, {"input": [73.5, 88.5], "expected": 88.50000030590228}, {"input": [73.5, 89.0], "expected": 89.00000018553912}, {"input": [73.5, 89.5], "expected": 89.50000011253516}, {"input": [73.5, 90.0], "expected": 90.00000006825603}, {"input": [73.5, 90.5], "expected": 90.50000004139937}, {"input": [73.5, 91.0], "expected": 91.00000002511}, {"input": [73.5, 91.5], "expected": 91.50000001522999}, {"input": [73.5, 92.0], "expected": 92.00000000923745}, {"input": [73.5, 92.5], "expected": 92.5000000056028}, {"input": [73.5, 93.0], "expected": 93.00000000339827}, {"input": [73.5, 93.5], "expected": 93.50000000206116}, {"input": [73.5, 94.0], "expected": 94.00000000125016}, {"input": [73.5, 94.5], "expected": 94.50000000075826}, {"input": [73.5, 95.0], "expected": 95.0000000004599}, {"input": [73.5, 95.5], "expected": 95.50000000027894}, {"input": [73.5, 96.0], "expected": 96.0000000001692}, {"input": [73.5, 96.5], "expected": 96.50000000010262}, {"input": [73.5, 97.0], "expected": 97.00000000006224}, {"input": [73.5, 97.5], "expected": 97.50000000003776}, {"input": [73.5, 98.0], "expected": 98.0000000000229}, {"input": [73.5, 98.5], "expected": 98.50000000001388}, {"input": [73.5, 99.0], "expected": 99.00000000000843}, {"input": [73.5, 99.5], "expected": 99.50000000000512}, {"input": [74.0, -100.0], "expected": 74.0}, {"input": [74.0, -99.5], "expected": 74.0}, {"input": [74.0, -99.0], "expected": 74.0}, {"input": [74.0, -98.5], "expected": 74.0}, {"input": [74.0, -98.0], "expected": 74.0}, {"input": [74.0, -97.5], "expected": 74.0}, {"input": [74.0, -97.0], "expected": 74.0}, {"input": [74.0, -96.5], "expected": 74.0}, {"input": [74.0, -96.0], "expected": 74.0}, {"input": [74.0, -95.5], "expected": 74.0}, {"input": [74.0, -95.0], "expected": 74.0}, {"input": [74.0, -94.5], "expected": 74.0}, {"input": [74.0, -94.0], "expected": 74.0}, {"input": [74.0, -93.5], "expected": 74.0}, {"input": [74.0, -93.0], "expected": 74.0}, {"input": [74.0, -92.5], "expected": 74.0}, {"input": [74.0, -92.0], "expected": 74.0}, {"input": [74.0, -91.5], "expected": 74.0}, {"input": [74.0, -91.0], "expected": 74.0}, {"input": [74.0, -90.5], "expected": 74.0}, {"input": [74.0, -90.0], "expected": 74.0}, {"input": [74.0, -89.5], "expected": 74.0}, {"input": [74.0, -89.0], "expected": 74.0}, {"input": [74.0, -88.5], "expected": 74.0}, {"input": [74.0, -88.0], "expected": 74.0}, {"input": [74.0, -87.5], "expected": 74.0}, {"input": [74.0, -87.0], "expected": 74.0}, {"input": [74.0, -86.5], "expected": 74.0}, {"input": [74.0, -86.0], "expected": 74.0}, {"input": [74.0, -85.5], "expected": 74.0}, {"input": [74.0, -85.0], "expected": 74.0}, {"input": [74.0, -84.5], "expected": 74.0}, {"input": [74.0, -84.0], "expected": 74.0}, {"input": [74.0, -83.5], "expected": 74.0}, {"input": [74.0, -83.0], "expected": 74.0}, {"input": [74.0, -82.5], "expected": 74.0}, {"input": [74.0, -82.0], "expected": 74.0}, {"input": [74.0, -81.5], "expected": 74.0}, {"input": [74.0, -81.0], "expected": 74.0}, {"input": [74.0, -80.5], "expected": 74.0}, {"input": [74.0, -80.0], "expected": 74.0}, {"input": [74.0, -79.5], "expected": 74.0}, {"input": [74.0, -79.0], "expected": 74.0}, {"input": [74.0, -78.5], "expected": 74.0}, {"input": [74.0, -78.0], "expected": 74.0}, {"input": [74.0, -77.5], "expected": 74.0}, {"input": [74.0, -77.0], "expected": 74.0}, {"input": [74.0, -76.5], "expected": 74.0}, {"input": [74.0, -76.0], "expected": 74.0}, {"input": [74.0, -75.5], "expected": 74.0}, {"input": [74.0, -75.0], "expected": 74.0}, {"input": [74.0, -74.5], "expected": 74.0}, {"input": [74.0, -74.0], "expected": 74.0}, {"input": [74.0, -73.5], "expected": 74.0}, {"input": [74.0, -73.0], "expected": 74.0}, {"input": [74.0, -72.5], "expected": 74.0}, {"input": [74.0, -72.0], "expected": 74.0}, {"input": [74.0, -71.5], "expected": 74.0}, {"input": [74.0, -71.0], "expected": 74.0}, {"input": [74.0, -70.5], "expected": 74.0}, {"input": [74.0, -70.0], "expected": 74.0}, {"input": [74.0, -69.5], "expected": 74.0}, {"input": [74.0, -69.0], "expected": 74.0}, {"input": [74.0, -68.5], "expected": 74.0}, {"input": [74.0, -68.0], "expected": 74.0}, {"input": [74.0, -67.5], "expected": 74.0}, {"input": [74.0, -67.0], "expected": 74.0}, {"input": [74.0, -66.5], "expected": 74.0}, {"input": [74.0, -66.0], "expected": 74.0}, {"input": [74.0, -65.5], "expected": 74.0}, {"input": [74.0, -65.0], "expected": 74.0}, {"input": [74.0, -64.5], "expected": 74.0}, {"input": [74.0, -64.0], "expected": 74.0}, {"input": [74.0, -63.5], "expected": 74.0}, {"input": [74.0, -63.0], "expected": 74.0}, {"input": [74.0, -62.5], "expected": 74.0}, {"input": [74.0, -62.0], "expected": 74.0}, {"input": [74.0, -61.5], "expected": 74.0}, {"input": [74.0, -61.0], "expected": 74.0}, {"input": [74.0, -60.5], "expected": 74.0}, {"input": [74.0, -60.0], "expected": 74.0}, {"input": [74.0, -59.5], "expected": 74.0}, {"input": [74.0, -59.0], "expected": 74.0}, {"input": [74.0, -58.5], "expected": 74.0}, {"input": [74.0, -58.0], "expected": 74.0}, {"input": [74.0, -57.5], "expected": 74.0}, {"input": [74.0, -57.0], "expected": 74.0}, {"input": [74.0, -56.5], "expected": 74.0}, {"input": [74.0, -56.0], "expected": 74.0}, {"input": [74.0, -55.5], "expected": 74.0}, {"input": [74.0, -55.0], "expected": 74.0}, {"input": [74.0, -54.5], "expected": 74.0}, {"input": [74.0, -54.0], "expected": 74.0}, {"input": [74.0, -53.5], "expected": 74.0}, {"input": [74.0, -53.0], "expected": 74.0}, {"input": [74.0, -52.5], "expected": 74.0}, {"input": [74.0, -52.0], "expected": 74.0}, {"input": [74.0, -51.5], "expected": 74.0}, {"input": [74.0, -51.0], "expected": 74.0}, {"input": [74.0, -50.5], "expected": 74.0}, {"input": [74.0, -50.0], "expected": 74.0}, {"input": [74.0, -49.5], "expected": 74.0}, {"input": [74.0, -49.0], "expected": 74.0}, {"input": [74.0, -48.5], "expected": 74.0}, {"input": [74.0, -48.0], "expected": 74.0}, {"input": [74.0, -47.5], "expected": 74.0}, {"input": [74.0, -47.0], "expected": 74.0}, {"input": [74.0, -46.5], "expected": 74.0}, {"input": [74.0, -46.0], "expected": 74.0}, {"input": [74.0, -45.5], "expected": 74.0}, {"input": [74.0, -45.0], "expected": 74.0}, {"input": [74.0, -44.5], "expected": 74.0}, {"input": [74.0, -44.0], "expected": 74.0}, {"input": [74.0, -43.5], "expected": 74.0}, {"input": [74.0, -43.0], "expected": 74.0}, {"input": [74.0, -42.5], "expected": 74.0}, {"input": [74.0, -42.0], "expected": 74.0}, {"input": [74.0, -41.5], "expected": 74.0}, {"input": [74.0, -41.0], "expected": 74.0}, {"input": [74.0, -40.5], "expected": 74.0}, {"input": [74.0, -40.0], "expected": 74.0}, {"input": [74.0, -39.5], "expected": 74.0}, {"input": [74.0, -39.0], "expected": 74.0}, {"input": [74.0, -38.5], "expected": 74.0}, {"input": [74.0, -38.0], "expected": 74.0}, {"input": [74.0, -37.5], "expected": 74.0}, {"input": [74.0, -37.0], "expected": 74.0}, {"input": [74.0, -36.5], "expected": 74.0}, {"input": [74.0, -36.0], "expected": 74.0}, {"input": [74.0, -35.5], "expected": 74.0}, {"input": [74.0, -35.0], "expected": 74.0}, {"input": [74.0, -34.5], "expected": 74.0}, {"input": [74.0, -34.0], "expected": 74.0}, {"input": [74.0, -33.5], "expected": 74.0}, {"input": [74.0, -33.0], "expected": 74.0}, {"input": [74.0, -32.5], "expected": 74.0}, {"input": [74.0, -32.0], "expected": 74.0}, {"input": [74.0, -31.5], "expected": 74.0}, {"input": [74.0, -31.0], "expected": 74.0}, {"input": [74.0, -30.5], "expected": 74.0}, {"input": [74.0, -30.0], "expected": 74.0}, {"input": [74.0, -29.5], "expected": 74.0}, {"input": [74.0, -29.0], "expected": 74.0}, {"input": [74.0, -28.5], "expected": 74.0}, {"input": [74.0, -28.0], "expected": 74.0}, {"input": [74.0, -27.5], "expected": 74.0}, {"input": [74.0, -27.0], "expected": 74.0}, {"input": [74.0, -26.5], "expected": 74.0}, {"input": [74.0, -26.0], "expected": 74.0}, {"input": [74.0, -25.5], "expected": 74.0}, {"input": [74.0, -25.0], "expected": 74.0}, {"input": [74.0, -24.5], "expected": 74.0}, {"input": [74.0, -24.0], "expected": 74.0}, {"input": [74.0, -23.5], "expected": 74.0}, {"input": [74.0, -23.0], "expected": 74.0}, {"input": [74.0, -22.5], "expected": 74.0}, {"input": [74.0, -22.0], "expected": 74.0}, {"input": [74.0, -21.5], "expected": 74.0}, {"input": [74.0, -21.0], "expected": 74.0}, {"input": [74.0, -20.5], "expected": 74.0}, {"input": [74.0, -20.0], "expected": 74.0}, {"input": [74.0, -19.5], "expected": 74.0}, {"input": [74.0, -19.0], "expected": 74.0}, {"input": [74.0, -18.5], "expected": 74.0}, {"input": [74.0, -18.0], "expected": 74.0}, {"input": [74.0, -17.5], "expected": 74.0}, {"input": [74.0, -17.0], "expected": 74.0}, {"input": [74.0, -16.5], "expected": 74.0}, {"input": [74.0, -16.0], "expected": 74.0}, {"input": [74.0, -15.5], "expected": 74.0}, {"input": [74.0, -15.0], "expected": 74.0}, {"input": [74.0, -14.5], "expected": 74.0}, {"input": [74.0, -14.0], "expected": 74.0}, {"input": [74.0, -13.5], "expected": 74.0}, {"input": [74.0, -13.0], "expected": 74.0}, {"input": [74.0, -12.5], "expected": 74.0}, {"input": [74.0, -12.0], "expected": 74.0}, {"input": [74.0, -11.5], "expected": 74.0}, {"input": [74.0, -11.0], "expected": 74.0}, {"input": [74.0, -10.5], "expected": 74.0}, {"input": [74.0, -10.0], "expected": 74.0}, {"input": [74.0, -9.5], "expected": 74.0}, {"input": [74.0, -9.0], "expected": 74.0}, {"input": [74.0, -8.5], "expected": 74.0}, {"input": [74.0, -8.0], "expected": 74.0}, {"input": [74.0, -7.5], "expected": 74.0}, {"input": [74.0, -7.0], "expected": 74.0}, {"input": [74.0, -6.5], "expected": 74.0}, {"input": [74.0, -6.0], "expected": 74.0}, {"input": [74.0, -5.5], "expected": 74.0}, {"input": [74.0, -5.0], "expected": 74.0}, {"input": [74.0, -4.5], "expected": 74.0}, {"input": [74.0, -4.0], "expected": 74.0}, {"input": [74.0, -3.5], "expected": 74.0}, {"input": [74.0, -3.0], "expected": 74.0}, {"input": [74.0, -2.5], "expected": 74.0}, {"input": [74.0, -2.0], "expected": 74.0}, {"input": [74.0, -1.5], "expected": 74.0}, {"input": [74.0, -1.0], "expected": 74.0}, {"input": [74.0, -0.5], "expected": 74.0}, {"input": [74.0, 0.0], "expected": 74.0}, {"input": [74.0, 0.5], "expected": 74.0}, {"input": [74.0, 1.0], "expected": 74.0}, {"input": [74.0, 1.5], "expected": 74.0}, {"input": [74.0, 2.0], "expected": 74.0}, {"input": [74.0, 2.5], "expected": 74.0}, {"input": [74.0, 3.0], "expected": 74.0}, {"input": [74.0, 3.5], "expected": 74.0}, {"input": [74.0, 4.0], "expected": 74.0}, {"input": [74.0, 4.5], "expected": 74.0}, {"input": [74.0, 5.0], "expected": 74.0}, {"input": [74.0, 5.5], "expected": 74.0}, {"input": [74.0, 6.0], "expected": 74.0}, {"input": [74.0, 6.5], "expected": 74.0}, {"input": [74.0, 7.0], "expected": 74.0}, {"input": [74.0, 7.5], "expected": 74.0}, {"input": [74.0, 8.0], "expected": 74.0}, {"input": [74.0, 8.5], "expected": 74.0}, {"input": [74.0, 9.0], "expected": 74.0}, {"input": [74.0, 9.5], "expected": 74.0}, {"input": [74.0, 10.0], "expected": 74.0}, {"input": [74.0, 10.5], "expected": 74.0}, {"input": [74.0, 11.0], "expected": 74.0}, {"input": [74.0, 11.5], "expected": 74.0}, {"input": [74.0, 12.0], "expected": 74.0}, {"input": [74.0, 12.5], "expected": 74.0}, {"input": [74.0, 13.0], "expected": 74.0}, {"input": [74.0, 13.5], "expected": 74.0}, {"input": [74.0, 14.0], "expected": 74.0}, {"input": [74.0, 14.5], "expected": 74.0}, {"input": [74.0, 15.0], "expected": 74.0}, {"input": [74.0, 15.5], "expected": 74.0}, {"input": [74.0, 16.0], "expected": 74.0}, {"input": [74.0, 16.5], "expected": 74.0}, {"input": [74.0, 17.0], "expected": 74.0}, {"input": [74.0, 17.5], "expected": 74.0}, {"input": [74.0, 18.0], "expected": 74.0}, {"input": [74.0, 18.5], "expected": 74.0}, {"input": [74.0, 19.0], "expected": 74.0}, {"input": [74.0, 19.5], "expected": 74.0}, {"input": [74.0, 20.0], "expected": 74.0}, {"input": [74.0, 20.5], "expected": 74.0}, {"input": [74.0, 21.0], "expected": 74.0}, {"input": [74.0, 21.5], "expected": 74.0}, {"input": [74.0, 22.0], "expected": 74.0}, {"input": [74.0, 22.5], "expected": 74.0}, {"input": [74.0, 23.0], "expected": 74.0}, {"input": [74.0, 23.5], "expected": 74.0}, {"input": [74.0, 24.0], "expected": 74.0}, {"input": [74.0, 24.5], "expected": 74.0}, {"input": [74.0, 25.0], "expected": 74.0}, {"input": [74.0, 25.5], "expected": 74.0}, {"input": [74.0, 26.0], "expected": 74.0}, {"input": [74.0, 26.5], "expected": 74.0}, {"input": [74.0, 27.0], "expected": 74.0}, {"input": [74.0, 27.5], "expected": 74.0}, {"input": [74.0, 28.0], "expected": 74.0}, {"input": [74.0, 28.5], "expected": 74.0}, {"input": [74.0, 29.0], "expected": 74.0}, {"input": [74.0, 29.5], "expected": 74.0}, {"input": [74.0, 30.0], "expected": 74.0}, {"input": [74.0, 30.5], "expected": 74.0}, {"input": [74.0, 31.0], "expected": 74.0}, {"input": [74.0, 31.5], "expected": 74.0}, {"input": [74.0, 32.0], "expected": 74.0}, {"input": [74.0, 32.5], "expected": 74.0}, {"input": [74.0, 33.0], "expected": 74.0}, {"input": [74.0, 33.5], "expected": 74.0}, {"input": [74.0, 34.0], "expected": 74.0}, {"input": [74.0, 34.5], "expected": 74.0}, {"input": [74.0, 35.0], "expected": 74.0}, {"input": [74.0, 35.5], "expected": 74.0}, {"input": [74.0, 36.0], "expected": 74.0}, {"input": [74.0, 36.5], "expected": 74.0}, {"input": [74.0, 37.0], "expected": 74.0}, {"input": [74.0, 37.5], "expected": 74.0}, {"input": [74.0, 38.0], "expected": 74.0}, {"input": [74.0, 38.5], "expected": 74.0}, {"input": [74.0, 39.0], "expected": 74.0}, {"input": [74.0, 39.5], "expected": 74.0}, {"input": [74.0, 40.0], "expected": 74.0}, {"input": [74.0, 40.5], "expected": 74.0}, {"input": [74.0, 41.0], "expected": 74.0}, {"input": [74.0, 41.5], "expected": 74.00000000000001}, {"input": [74.0, 42.0], "expected": 74.00000000000001}, {"input": [74.0, 42.5], "expected": 74.00000000000001}, {"input": [74.0, 43.0], "expected": 74.00000000000003}, {"input": [74.0, 43.5], "expected": 74.00000000000006}, {"input": [74.0, 44.0], "expected": 74.0000000000001}, {"input": [74.0, 44.5], "expected": 74.00000000000016}, {"input": [74.0, 45.0], "expected": 74.00000000000026}, {"input": [74.0, 45.5], "expected": 74.00000000000043}, {"input": [74.0, 46.0], "expected": 74.0000000000007}, {"input": [74.0, 46.5], "expected": 74.00000000000114}, {"input": [74.0, 47.0], "expected": 74.00000000000188}, {"input": [74.0, 47.5], "expected": 74.0000000000031}, {"input": [74.0, 48.0], "expected": 74.00000000000512}, {"input": [74.0, 48.5], "expected": 74.00000000000843}, {"input": [74.0, 49.0], "expected": 74.00000000001388}, {"input": [74.0, 49.5], "expected": 74.0000000000229}, {"input": [74.0, 50.0], "expected": 74.00000000003776}, {"input": [74.0, 50.5], "expected": 74.00000000006224}, {"input": [74.0, 51.0], "expected": 74.00000000010262}, {"input": [74.0, 51.5], "expected": 74.0000000001692}, {"input": [74.0, 52.0], "expected": 74.00000000027894}, {"input": [74.0, 52.5], "expected": 74.0000000004599}, {"input": [74.0, 53.0], "expected": 74.00000000075826}, {"input": [74.0, 53.5], "expected": 74.00000000125016}, {"input": [74.0, 54.0], "expected": 74.00000000206116}, {"input": [74.0, 54.5], "expected": 74.00000000339827}, {"input": [74.0, 55.0], "expected": 74.0000000056028}, {"input": [74.0, 55.5], "expected": 74.00000000923745}, {"input": [74.0, 56.0], "expected": 74.00000001522999}, {"input": [74.0, 56.5], "expected": 74.00000002511}, {"input": [74.0, 57.0], "expected": 74.00000004139937}, {"input": [74.0, 57.5], "expected": 74.00000006825603}, {"input": [74.0, 58.0], "expected": 74.00000011253516}, {"input": [74.0, 58.5], "expected": 74.00000018553912}, {"input": [74.0, 59.0], "expected": 74.00000030590228}, {"input": [74.0, 59.5], "expected": 74.00000050434754}, {"input": [74.0, 60.0], "expected": 74.00000083152837}, {"input": [74.0, 60.5], "expected": 74.00000137095815}, {"input": [74.0, 61.0], "expected": 74.00000226032685}, {"input": [74.0, 61.5], "expected": 74.00000372664623}, {"input": [74.0, 62.0], "expected": 74.00000614419348}, {"input": [74.0, 62.5], "expected": 74.00001013004228}, {"input": [74.0, 63.0], "expected": 74.00001670156132}, {"input": [74.0, 63.5], "expected": 74.00002753607023}, {"input": [74.0, 64.0], "expected": 74.00004539889922}, {"input": [74.0, 64.5], "expected": 74.00007484902864}, {"input": [74.0, 65.0], "expected": 74.00012340218973}, {"input": [74.0, 65.5], "expected": 74.00020344767213}, {"input": [74.0, 66.0], "expected": 74.0003354063729}, {"input": [74.0, 66.5], "expected": 74.00055293147535}, {"input": [74.0, 67.0], "expected": 74.00091146645377}, {"input": [74.0, 67.5], "expected": 74.00150231015975}, {"input": [74.0, 68.0], "expected": 74.00247568513772}, {"input": [74.0, 68.5], "expected": 74.00407844327057}, {"input": [74.0, 69.0], "expected": 74.00671534848912}, {"input": [74.0, 69.5], "expected": 74.0110477448486}, {"input": [74.0, 70.0], "expected": 74.0181499279178}, {"input": [74.0, 70.5], "expected": 74.02975041827263}, {"input": [74.0, 71.0], "expected": 74.04858735157374}, {"input": [74.0, 71.5], "expected": 74.07888973429255}, {"input": [74.0, 72.0], "expected": 74.12692801104298}, {"input": [74.0, 72.5], "expected": 74.20141327798275}, {"input": [74.0, 73.0], "expected": 74.31326168751822}, {"input": [74.0, 73.5], "expected": 74.4740769841801}, {"input": [74.0, 74.0], "expected": 74.69314718055995}, {"input": [74.0, 74.5], "expected": 74.9740769841801}, {"input": [74.0, 75.0], "expected": 75.31326168751822}, {"input": [74.0, 75.5], "expected": 75.70141327798275}, {"input": [74.0, 76.0], "expected": 76.12692801104298}, {"input": [74.0, 76.5], "expected": 76.57888973429255}, {"input": [74.0, 77.0], "expected": 77.04858735157374}, {"input": [74.0, 77.5], "expected": 77.52975041827263}, {"input": [74.0, 78.0], "expected": 78.0181499279178}, {"input": [74.0, 78.5], "expected": 78.5110477448486}, {"input": [74.0, 79.0], "expected": 79.00671534848912}, {"input": [74.0, 79.5], "expected": 79.50407844327057}, {"input": [74.0, 80.0], "expected": 80.00247568513772}, {"input": [74.0, 80.5], "expected": 80.50150231015975}, {"input": [74.0, 81.0], "expected": 81.00091146645377}, {"input": [74.0, 81.5], "expected": 81.50055293147535}, {"input": [74.0, 82.0], "expected": 82.0003354063729}, {"input": [74.0, 82.5], "expected": 82.50020344767213}, {"input": [74.0, 83.0], "expected": 83.00012340218973}, {"input": [74.0, 83.5], "expected": 83.50007484902864}, {"input": [74.0, 84.0], "expected": 84.00004539889922}, {"input": [74.0, 84.5], "expected": 84.50002753607023}, {"input": [74.0, 85.0], "expected": 85.00001670156132}, {"input": [74.0, 85.5], "expected": 85.50001013004228}, {"input": [74.0, 86.0], "expected": 86.00000614419348}, {"input": [74.0, 86.5], "expected": 86.50000372664623}, {"input": [74.0, 87.0], "expected": 87.00000226032685}, {"input": [74.0, 87.5], "expected": 87.50000137095815}, {"input": [74.0, 88.0], "expected": 88.00000083152837}, {"input": [74.0, 88.5], "expected": 88.50000050434754}, {"input": [74.0, 89.0], "expected": 89.00000030590228}, {"input": [74.0, 89.5], "expected": 89.50000018553912}, {"input": [74.0, 90.0], "expected": 90.00000011253516}, {"input": [74.0, 90.5], "expected": 90.50000006825603}, {"input": [74.0, 91.0], "expected": 91.00000004139937}, {"input": [74.0, 91.5], "expected": 91.50000002511}, {"input": [74.0, 92.0], "expected": 92.00000001522999}, {"input": [74.0, 92.5], "expected": 92.50000000923745}, {"input": [74.0, 93.0], "expected": 93.0000000056028}, {"input": [74.0, 93.5], "expected": 93.50000000339827}, {"input": [74.0, 94.0], "expected": 94.00000000206116}, {"input": [74.0, 94.5], "expected": 94.50000000125016}, {"input": [74.0, 95.0], "expected": 95.00000000075826}, {"input": [74.0, 95.5], "expected": 95.5000000004599}, {"input": [74.0, 96.0], "expected": 96.00000000027894}, {"input": [74.0, 96.5], "expected": 96.5000000001692}, {"input": [74.0, 97.0], "expected": 97.00000000010262}, {"input": [74.0, 97.5], "expected": 97.50000000006224}, {"input": [74.0, 98.0], "expected": 98.00000000003776}, {"input": [74.0, 98.5], "expected": 98.5000000000229}, {"input": [74.0, 99.0], "expected": 99.00000000001388}, {"input": [74.0, 99.5], "expected": 99.50000000000843}, {"input": [74.5, -100.0], "expected": 74.5}, {"input": [74.5, -99.5], "expected": 74.5}, {"input": [74.5, -99.0], "expected": 74.5}, {"input": [74.5, -98.5], "expected": 74.5}, {"input": [74.5, -98.0], "expected": 74.5}, {"input": [74.5, -97.5], "expected": 74.5}, {"input": [74.5, -97.0], "expected": 74.5}, {"input": [74.5, -96.5], "expected": 74.5}, {"input": [74.5, -96.0], "expected": 74.5}, {"input": [74.5, -95.5], "expected": 74.5}, {"input": [74.5, -95.0], "expected": 74.5}, {"input": [74.5, -94.5], "expected": 74.5}, {"input": [74.5, -94.0], "expected": 74.5}, {"input": [74.5, -93.5], "expected": 74.5}, {"input": [74.5, -93.0], "expected": 74.5}, {"input": [74.5, -92.5], "expected": 74.5}, {"input": [74.5, -92.0], "expected": 74.5}, {"input": [74.5, -91.5], "expected": 74.5}, {"input": [74.5, -91.0], "expected": 74.5}, {"input": [74.5, -90.5], "expected": 74.5}, {"input": [74.5, -90.0], "expected": 74.5}, {"input": [74.5, -89.5], "expected": 74.5}, {"input": [74.5, -89.0], "expected": 74.5}, {"input": [74.5, -88.5], "expected": 74.5}, {"input": [74.5, -88.0], "expected": 74.5}, {"input": [74.5, -87.5], "expected": 74.5}, {"input": [74.5, -87.0], "expected": 74.5}, {"input": [74.5, -86.5], "expected": 74.5}, {"input": [74.5, -86.0], "expected": 74.5}, {"input": [74.5, -85.5], "expected": 74.5}, {"input": [74.5, -85.0], "expected": 74.5}, {"input": [74.5, -84.5], "expected": 74.5}, {"input": [74.5, -84.0], "expected": 74.5}, {"input": [74.5, -83.5], "expected": 74.5}, {"input": [74.5, -83.0], "expected": 74.5}, {"input": [74.5, -82.5], "expected": 74.5}, {"input": [74.5, -82.0], "expected": 74.5}, {"input": [74.5, -81.5], "expected": 74.5}, {"input": [74.5, -81.0], "expected": 74.5}, {"input": [74.5, -80.5], "expected": 74.5}, {"input": [74.5, -80.0], "expected": 74.5}, {"input": [74.5, -79.5], "expected": 74.5}, {"input": [74.5, -79.0], "expected": 74.5}, {"input": [74.5, -78.5], "expected": 74.5}, {"input": [74.5, -78.0], "expected": 74.5}, {"input": [74.5, -77.5], "expected": 74.5}, {"input": [74.5, -77.0], "expected": 74.5}, {"input": [74.5, -76.5], "expected": 74.5}, {"input": [74.5, -76.0], "expected": 74.5}, {"input": [74.5, -75.5], "expected": 74.5}, {"input": [74.5, -75.0], "expected": 74.5}, {"input": [74.5, -74.5], "expected": 74.5}, {"input": [74.5, -74.0], "expected": 74.5}, {"input": [74.5, -73.5], "expected": 74.5}, {"input": [74.5, -73.0], "expected": 74.5}, {"input": [74.5, -72.5], "expected": 74.5}, {"input": [74.5, -72.0], "expected": 74.5}, {"input": [74.5, -71.5], "expected": 74.5}, {"input": [74.5, -71.0], "expected": 74.5}, {"input": [74.5, -70.5], "expected": 74.5}, {"input": [74.5, -70.0], "expected": 74.5}, {"input": [74.5, -69.5], "expected": 74.5}, {"input": [74.5, -69.0], "expected": 74.5}, {"input": [74.5, -68.5], "expected": 74.5}, {"input": [74.5, -68.0], "expected": 74.5}, {"input": [74.5, -67.5], "expected": 74.5}, {"input": [74.5, -67.0], "expected": 74.5}, {"input": [74.5, -66.5], "expected": 74.5}, {"input": [74.5, -66.0], "expected": 74.5}, {"input": [74.5, -65.5], "expected": 74.5}, {"input": [74.5, -65.0], "expected": 74.5}, {"input": [74.5, -64.5], "expected": 74.5}, {"input": [74.5, -64.0], "expected": 74.5}, {"input": [74.5, -63.5], "expected": 74.5}, {"input": [74.5, -63.0], "expected": 74.5}, {"input": [74.5, -62.5], "expected": 74.5}, {"input": [74.5, -62.0], "expected": 74.5}, {"input": [74.5, -61.5], "expected": 74.5}, {"input": [74.5, -61.0], "expected": 74.5}, {"input": [74.5, -60.5], "expected": 74.5}, {"input": [74.5, -60.0], "expected": 74.5}, {"input": [74.5, -59.5], "expected": 74.5}, {"input": [74.5, -59.0], "expected": 74.5}, {"input": [74.5, -58.5], "expected": 74.5}, {"input": [74.5, -58.0], "expected": 74.5}, {"input": [74.5, -57.5], "expected": 74.5}, {"input": [74.5, -57.0], "expected": 74.5}, {"input": [74.5, -56.5], "expected": 74.5}, {"input": [74.5, -56.0], "expected": 74.5}, {"input": [74.5, -55.5], "expected": 74.5}, {"input": [74.5, -55.0], "expected": 74.5}, {"input": [74.5, -54.5], "expected": 74.5}, {"input": [74.5, -54.0], "expected": 74.5}, {"input": [74.5, -53.5], "expected": 74.5}, {"input": [74.5, -53.0], "expected": 74.5}, {"input": [74.5, -52.5], "expected": 74.5}, {"input": [74.5, -52.0], "expected": 74.5}, {"input": [74.5, -51.5], "expected": 74.5}, {"input": [74.5, -51.0], "expected": 74.5}, {"input": [74.5, -50.5], "expected": 74.5}, {"input": [74.5, -50.0], "expected": 74.5}, {"input": [74.5, -49.5], "expected": 74.5}, {"input": [74.5, -49.0], "expected": 74.5}, {"input": [74.5, -48.5], "expected": 74.5}, {"input": [74.5, -48.0], "expected": 74.5}, {"input": [74.5, -47.5], "expected": 74.5}, {"input": [74.5, -47.0], "expected": 74.5}, {"input": [74.5, -46.5], "expected": 74.5}, {"input": [74.5, -46.0], "expected": 74.5}, {"input": [74.5, -45.5], "expected": 74.5}, {"input": [74.5, -45.0], "expected": 74.5}, {"input": [74.5, -44.5], "expected": 74.5}, {"input": [74.5, -44.0], "expected": 74.5}, {"input": [74.5, -43.5], "expected": 74.5}, {"input": [74.5, -43.0], "expected": 74.5}, {"input": [74.5, -42.5], "expected": 74.5}, {"input": [74.5, -42.0], "expected": 74.5}, {"input": [74.5, -41.5], "expected": 74.5}, {"input": [74.5, -41.0], "expected": 74.5}, {"input": [74.5, -40.5], "expected": 74.5}, {"input": [74.5, -40.0], "expected": 74.5}, {"input": [74.5, -39.5], "expected": 74.5}, {"input": [74.5, -39.0], "expected": 74.5}, {"input": [74.5, -38.5], "expected": 74.5}, {"input": [74.5, -38.0], "expected": 74.5}, {"input": [74.5, -37.5], "expected": 74.5}, {"input": [74.5, -37.0], "expected": 74.5}, {"input": [74.5, -36.5], "expected": 74.5}, {"input": [74.5, -36.0], "expected": 74.5}, {"input": [74.5, -35.5], "expected": 74.5}, {"input": [74.5, -35.0], "expected": 74.5}, {"input": [74.5, -34.5], "expected": 74.5}, {"input": [74.5, -34.0], "expected": 74.5}, {"input": [74.5, -33.5], "expected": 74.5}, {"input": [74.5, -33.0], "expected": 74.5}, {"input": [74.5, -32.5], "expected": 74.5}, {"input": [74.5, -32.0], "expected": 74.5}, {"input": [74.5, -31.5], "expected": 74.5}, {"input": [74.5, -31.0], "expected": 74.5}, {"input": [74.5, -30.5], "expected": 74.5}, {"input": [74.5, -30.0], "expected": 74.5}, {"input": [74.5, -29.5], "expected": 74.5}, {"input": [74.5, -29.0], "expected": 74.5}, {"input": [74.5, -28.5], "expected": 74.5}, {"input": [74.5, -28.0], "expected": 74.5}, {"input": [74.5, -27.5], "expected": 74.5}, {"input": [74.5, -27.0], "expected": 74.5}, {"input": [74.5, -26.5], "expected": 74.5}, {"input": [74.5, -26.0], "expected": 74.5}, {"input": [74.5, -25.5], "expected": 74.5}, {"input": [74.5, -25.0], "expected": 74.5}, {"input": [74.5, -24.5], "expected": 74.5}, {"input": [74.5, -24.0], "expected": 74.5}, {"input": [74.5, -23.5], "expected": 74.5}, {"input": [74.5, -23.0], "expected": 74.5}, {"input": [74.5, -22.5], "expected": 74.5}, {"input": [74.5, -22.0], "expected": 74.5}, {"input": [74.5, -21.5], "expected": 74.5}, {"input": [74.5, -21.0], "expected": 74.5}, {"input": [74.5, -20.5], "expected": 74.5}, {"input": [74.5, -20.0], "expected": 74.5}, {"input": [74.5, -19.5], "expected": 74.5}, {"input": [74.5, -19.0], "expected": 74.5}, {"input": [74.5, -18.5], "expected": 74.5}, {"input": [74.5, -18.0], "expected": 74.5}, {"input": [74.5, -17.5], "expected": 74.5}, {"input": [74.5, -17.0], "expected": 74.5}, {"input": [74.5, -16.5], "expected": 74.5}, {"input": [74.5, -16.0], "expected": 74.5}, {"input": [74.5, -15.5], "expected": 74.5}, {"input": [74.5, -15.0], "expected": 74.5}, {"input": [74.5, -14.5], "expected": 74.5}, {"input": [74.5, -14.0], "expected": 74.5}, {"input": [74.5, -13.5], "expected": 74.5}, {"input": [74.5, -13.0], "expected": 74.5}, {"input": [74.5, -12.5], "expected": 74.5}, {"input": [74.5, -12.0], "expected": 74.5}, {"input": [74.5, -11.5], "expected": 74.5}, {"input": [74.5, -11.0], "expected": 74.5}, {"input": [74.5, -10.5], "expected": 74.5}, {"input": [74.5, -10.0], "expected": 74.5}, {"input": [74.5, -9.5], "expected": 74.5}, {"input": [74.5, -9.0], "expected": 74.5}, {"input": [74.5, -8.5], "expected": 74.5}, {"input": [74.5, -8.0], "expected": 74.5}, {"input": [74.5, -7.5], "expected": 74.5}, {"input": [74.5, -7.0], "expected": 74.5}, {"input": [74.5, -6.5], "expected": 74.5}, {"input": [74.5, -6.0], "expected": 74.5}, {"input": [74.5, -5.5], "expected": 74.5}, {"input": [74.5, -5.0], "expected": 74.5}, {"input": [74.5, -4.5], "expected": 74.5}, {"input": [74.5, -4.0], "expected": 74.5}, {"input": [74.5, -3.5], "expected": 74.5}, {"input": [74.5, -3.0], "expected": 74.5}, {"input": [74.5, -2.5], "expected": 74.5}, {"input": [74.5, -2.0], "expected": 74.5}, {"input": [74.5, -1.5], "expected": 74.5}, {"input": [74.5, -1.0], "expected": 74.5}, {"input": [74.5, -0.5], "expected": 74.5}, {"input": [74.5, 0.0], "expected": 74.5}, {"input": [74.5, 0.5], "expected": 74.5}, {"input": [74.5, 1.0], "expected": 74.5}, {"input": [74.5, 1.5], "expected": 74.5}, {"input": [74.5, 2.0], "expected": 74.5}, {"input": [74.5, 2.5], "expected": 74.5}, {"input": [74.5, 3.0], "expected": 74.5}, {"input": [74.5, 3.5], "expected": 74.5}, {"input": [74.5, 4.0], "expected": 74.5}, {"input": [74.5, 4.5], "expected": 74.5}, {"input": [74.5, 5.0], "expected": 74.5}, {"input": [74.5, 5.5], "expected": 74.5}, {"input": [74.5, 6.0], "expected": 74.5}, {"input": [74.5, 6.5], "expected": 74.5}, {"input": [74.5, 7.0], "expected": 74.5}, {"input": [74.5, 7.5], "expected": 74.5}, {"input": [74.5, 8.0], "expected": 74.5}, {"input": [74.5, 8.5], "expected": 74.5}, {"input": [74.5, 9.0], "expected": 74.5}, {"input": [74.5, 9.5], "expected": 74.5}, {"input": [74.5, 10.0], "expected": 74.5}, {"input": [74.5, 10.5], "expected": 74.5}, {"input": [74.5, 11.0], "expected": 74.5}, {"input": [74.5, 11.5], "expected": 74.5}, {"input": [74.5, 12.0], "expected": 74.5}, {"input": [74.5, 12.5], "expected": 74.5}, {"input": [74.5, 13.0], "expected": 74.5}, {"input": [74.5, 13.5], "expected": 74.5}, {"input": [74.5, 14.0], "expected": 74.5}, {"input": [74.5, 14.5], "expected": 74.5}, {"input": [74.5, 15.0], "expected": 74.5}, {"input": [74.5, 15.5], "expected": 74.5}, {"input": [74.5, 16.0], "expected": 74.5}, {"input": [74.5, 16.5], "expected": 74.5}, {"input": [74.5, 17.0], "expected": 74.5}, {"input": [74.5, 17.5], "expected": 74.5}, {"input": [74.5, 18.0], "expected": 74.5}, {"input": [74.5, 18.5], "expected": 74.5}, {"input": [74.5, 19.0], "expected": 74.5}, {"input": [74.5, 19.5], "expected": 74.5}, {"input": [74.5, 20.0], "expected": 74.5}, {"input": [74.5, 20.5], "expected": 74.5}, {"input": [74.5, 21.0], "expected": 74.5}, {"input": [74.5, 21.5], "expected": 74.5}, {"input": [74.5, 22.0], "expected": 74.5}, {"input": [74.5, 22.5], "expected": 74.5}, {"input": [74.5, 23.0], "expected": 74.5}, {"input": [74.5, 23.5], "expected": 74.5}, {"input": [74.5, 24.0], "expected": 74.5}, {"input": [74.5, 24.5], "expected": 74.5}, {"input": [74.5, 25.0], "expected": 74.5}, {"input": [74.5, 25.5], "expected": 74.5}, {"input": [74.5, 26.0], "expected": 74.5}, {"input": [74.5, 26.5], "expected": 74.5}, {"input": [74.5, 27.0], "expected": 74.5}, {"input": [74.5, 27.5], "expected": 74.5}, {"input": [74.5, 28.0], "expected": 74.5}, {"input": [74.5, 28.5], "expected": 74.5}, {"input": [74.5, 29.0], "expected": 74.5}, {"input": [74.5, 29.5], "expected": 74.5}, {"input": [74.5, 30.0], "expected": 74.5}, {"input": [74.5, 30.5], "expected": 74.5}, {"input": [74.5, 31.0], "expected": 74.5}, {"input": [74.5, 31.5], "expected": 74.5}, {"input": [74.5, 32.0], "expected": 74.5}, {"input": [74.5, 32.5], "expected": 74.5}, {"input": [74.5, 33.0], "expected": 74.5}, {"input": [74.5, 33.5], "expected": 74.5}, {"input": [74.5, 34.0], "expected": 74.5}, {"input": [74.5, 34.5], "expected": 74.5}, {"input": [74.5, 35.0], "expected": 74.5}, {"input": [74.5, 35.5], "expected": 74.5}, {"input": [74.5, 36.0], "expected": 74.5}, {"input": [74.5, 36.5], "expected": 74.5}, {"input": [74.5, 37.0], "expected": 74.5}, {"input": [74.5, 37.5], "expected": 74.5}, {"input": [74.5, 38.0], "expected": 74.5}, {"input": [74.5, 38.5], "expected": 74.5}, {"input": [74.5, 39.0], "expected": 74.5}, {"input": [74.5, 39.5], "expected": 74.5}, {"input": [74.5, 40.0], "expected": 74.5}, {"input": [74.5, 40.5], "expected": 74.5}, {"input": [74.5, 41.0], "expected": 74.5}, {"input": [74.5, 41.5], "expected": 74.5}, {"input": [74.5, 42.0], "expected": 74.50000000000001}, {"input": [74.5, 42.5], "expected": 74.50000000000001}, {"input": [74.5, 43.0], "expected": 74.50000000000001}, {"input": [74.5, 43.5], "expected": 74.50000000000003}, {"input": [74.5, 44.0], "expected": 74.50000000000006}, {"input": [74.5, 44.5], "expected": 74.5000000000001}, {"input": [74.5, 45.0], "expected": 74.50000000000016}, {"input": [74.5, 45.5], "expected": 74.50000000000026}, {"input": [74.5, 46.0], "expected": 74.50000000000043}, {"input": [74.5, 46.5], "expected": 74.5000000000007}, {"input": [74.5, 47.0], "expected": 74.50000000000114}, {"input": [74.5, 47.5], "expected": 74.50000000000188}, {"input": [74.5, 48.0], "expected": 74.5000000000031}, {"input": [74.5, 48.5], "expected": 74.50000000000512}, {"input": [74.5, 49.0], "expected": 74.50000000000843}, {"input": [74.5, 49.5], "expected": 74.50000000001388}, {"input": [74.5, 50.0], "expected": 74.5000000000229}, {"input": [74.5, 50.5], "expected": 74.50000000003776}, {"input": [74.5, 51.0], "expected": 74.50000000006224}, {"input": [74.5, 51.5], "expected": 74.50000000010262}, {"input": [74.5, 52.0], "expected": 74.5000000001692}, {"input": [74.5, 52.5], "expected": 74.50000000027894}, {"input": [74.5, 53.0], "expected": 74.5000000004599}, {"input": [74.5, 53.5], "expected": 74.50000000075826}, {"input": [74.5, 54.0], "expected": 74.50000000125016}, {"input": [74.5, 54.5], "expected": 74.50000000206116}, {"input": [74.5, 55.0], "expected": 74.50000000339827}, {"input": [74.5, 55.5], "expected": 74.5000000056028}, {"input": [74.5, 56.0], "expected": 74.50000000923745}, {"input": [74.5, 56.5], "expected": 74.50000001522999}, {"input": [74.5, 57.0], "expected": 74.50000002511}, {"input": [74.5, 57.5], "expected": 74.50000004139937}, {"input": [74.5, 58.0], "expected": 74.50000006825603}, {"input": [74.5, 58.5], "expected": 74.50000011253516}, {"input": [74.5, 59.0], "expected": 74.50000018553912}, {"input": [74.5, 59.5], "expected": 74.50000030590228}, {"input": [74.5, 60.0], "expected": 74.50000050434754}, {"input": [74.5, 60.5], "expected": 74.50000083152837}, {"input": [74.5, 61.0], "expected": 74.50000137095815}, {"input": [74.5, 61.5], "expected": 74.50000226032685}, {"input": [74.5, 62.0], "expected": 74.50000372664623}, {"input": [74.5, 62.5], "expected": 74.50000614419348}, {"input": [74.5, 63.0], "expected": 74.50001013004228}, {"input": [74.5, 63.5], "expected": 74.50001670156132}, {"input": [74.5, 64.0], "expected": 74.50002753607023}, {"input": [74.5, 64.5], "expected": 74.50004539889922}, {"input": [74.5, 65.0], "expected": 74.50007484902864}, {"input": [74.5, 65.5], "expected": 74.50012340218973}, {"input": [74.5, 66.0], "expected": 74.50020344767213}, {"input": [74.5, 66.5], "expected": 74.5003354063729}, {"input": [74.5, 67.0], "expected": 74.50055293147535}, {"input": [74.5, 67.5], "expected": 74.50091146645377}, {"input": [74.5, 68.0], "expected": 74.50150231015975}, {"input": [74.5, 68.5], "expected": 74.50247568513772}, {"input": [74.5, 69.0], "expected": 74.50407844327057}, {"input": [74.5, 69.5], "expected": 74.50671534848912}, {"input": [74.5, 70.0], "expected": 74.5110477448486}, {"input": [74.5, 70.5], "expected": 74.5181499279178}, {"input": [74.5, 71.0], "expected": 74.52975041827263}, {"input": [74.5, 71.5], "expected": 74.54858735157374}, {"input": [74.5, 72.0], "expected": 74.57888973429255}, {"input": [74.5, 72.5], "expected": 74.62692801104298}, {"input": [74.5, 73.0], "expected": 74.70141327798275}, {"input": [74.5, 73.5], "expected": 74.81326168751822}, {"input": [74.5, 74.0], "expected": 74.9740769841801}, {"input": [74.5, 74.5], "expected": 75.19314718055995}, {"input": [74.5, 75.0], "expected": 75.4740769841801}, {"input": [74.5, 75.5], "expected": 75.81326168751822}, {"input": [74.5, 76.0], "expected": 76.20141327798275}, {"input": [74.5, 76.5], "expected": 76.62692801104298}, {"input": [74.5, 77.0], "expected": 77.07888973429255}, {"input": [74.5, 77.5], "expected": 77.54858735157374}, {"input": [74.5, 78.0], "expected": 78.02975041827263}, {"input": [74.5, 78.5], "expected": 78.5181499279178}, {"input": [74.5, 79.0], "expected": 79.0110477448486}, {"input": [74.5, 79.5], "expected": 79.50671534848912}, {"input": [74.5, 80.0], "expected": 80.00407844327057}, {"input": [74.5, 80.5], "expected": 80.50247568513772}, {"input": [74.5, 81.0], "expected": 81.00150231015975}, {"input": [74.5, 81.5], "expected": 81.50091146645377}, {"input": [74.5, 82.0], "expected": 82.00055293147535}, {"input": [74.5, 82.5], "expected": 82.5003354063729}, {"input": [74.5, 83.0], "expected": 83.00020344767213}, {"input": [74.5, 83.5], "expected": 83.50012340218973}, {"input": [74.5, 84.0], "expected": 84.00007484902864}, {"input": [74.5, 84.5], "expected": 84.50004539889922}, {"input": [74.5, 85.0], "expected": 85.00002753607023}, {"input": [74.5, 85.5], "expected": 85.50001670156132}, {"input": [74.5, 86.0], "expected": 86.00001013004228}, {"input": [74.5, 86.5], "expected": 86.50000614419348}, {"input": [74.5, 87.0], "expected": 87.00000372664623}, {"input": [74.5, 87.5], "expected": 87.50000226032685}, {"input": [74.5, 88.0], "expected": 88.00000137095815}, {"input": [74.5, 88.5], "expected": 88.50000083152837}, {"input": [74.5, 89.0], "expected": 89.00000050434754}, {"input": [74.5, 89.5], "expected": 89.50000030590228}, {"input": [74.5, 90.0], "expected": 90.00000018553912}, {"input": [74.5, 90.5], "expected": 90.50000011253516}, {"input": [74.5, 91.0], "expected": 91.00000006825603}, {"input": [74.5, 91.5], "expected": 91.50000004139937}, {"input": [74.5, 92.0], "expected": 92.00000002511}, {"input": [74.5, 92.5], "expected": 92.50000001522999}, {"input": [74.5, 93.0], "expected": 93.00000000923745}, {"input": [74.5, 93.5], "expected": 93.5000000056028}, {"input": [74.5, 94.0], "expected": 94.00000000339827}, {"input": [74.5, 94.5], "expected": 94.50000000206116}, {"input": [74.5, 95.0], "expected": 95.00000000125016}, {"input": [74.5, 95.5], "expected": 95.50000000075826}, {"input": [74.5, 96.0], "expected": 96.0000000004599}, {"input": [74.5, 96.5], "expected": 96.50000000027894}, {"input": [74.5, 97.0], "expected": 97.0000000001692}, {"input": [74.5, 97.5], "expected": 97.50000000010262}, {"input": [74.5, 98.0], "expected": 98.00000000006224}, {"input": [74.5, 98.5], "expected": 98.50000000003776}, {"input": [74.5, 99.0], "expected": 99.0000000000229}, {"input": [74.5, 99.5], "expected": 99.50000000001388}, {"input": [75.0, -100.0], "expected": 75.0}, {"input": [75.0, -99.5], "expected": 75.0}, {"input": [75.0, -99.0], "expected": 75.0}, {"input": [75.0, -98.5], "expected": 75.0}, {"input": [75.0, -98.0], "expected": 75.0}, {"input": [75.0, -97.5], "expected": 75.0}, {"input": [75.0, -97.0], "expected": 75.0}, {"input": [75.0, -96.5], "expected": 75.0}, {"input": [75.0, -96.0], "expected": 75.0}, {"input": [75.0, -95.5], "expected": 75.0}, {"input": [75.0, -95.0], "expected": 75.0}, {"input": [75.0, -94.5], "expected": 75.0}, {"input": [75.0, -94.0], "expected": 75.0}, {"input": [75.0, -93.5], "expected": 75.0}, {"input": [75.0, -93.0], "expected": 75.0}, {"input": [75.0, -92.5], "expected": 75.0}, {"input": [75.0, -92.0], "expected": 75.0}, {"input": [75.0, -91.5], "expected": 75.0}, {"input": [75.0, -91.0], "expected": 75.0}, {"input": [75.0, -90.5], "expected": 75.0}, {"input": [75.0, -90.0], "expected": 75.0}, {"input": [75.0, -89.5], "expected": 75.0}, {"input": [75.0, -89.0], "expected": 75.0}, {"input": [75.0, -88.5], "expected": 75.0}, {"input": [75.0, -88.0], "expected": 75.0}, {"input": [75.0, -87.5], "expected": 75.0}, {"input": [75.0, -87.0], "expected": 75.0}, {"input": [75.0, -86.5], "expected": 75.0}, {"input": [75.0, -86.0], "expected": 75.0}, {"input": [75.0, -85.5], "expected": 75.0}, {"input": [75.0, -85.0], "expected": 75.0}, {"input": [75.0, -84.5], "expected": 75.0}, {"input": [75.0, -84.0], "expected": 75.0}, {"input": [75.0, -83.5], "expected": 75.0}, {"input": [75.0, -83.0], "expected": 75.0}, {"input": [75.0, -82.5], "expected": 75.0}, {"input": [75.0, -82.0], "expected": 75.0}, {"input": [75.0, -81.5], "expected": 75.0}, {"input": [75.0, -81.0], "expected": 75.0}, {"input": [75.0, -80.5], "expected": 75.0}, {"input": [75.0, -80.0], "expected": 75.0}, {"input": [75.0, -79.5], "expected": 75.0}, {"input": [75.0, -79.0], "expected": 75.0}, {"input": [75.0, -78.5], "expected": 75.0}, {"input": [75.0, -78.0], "expected": 75.0}, {"input": [75.0, -77.5], "expected": 75.0}, {"input": [75.0, -77.0], "expected": 75.0}, {"input": [75.0, -76.5], "expected": 75.0}, {"input": [75.0, -76.0], "expected": 75.0}, {"input": [75.0, -75.5], "expected": 75.0}, {"input": [75.0, -75.0], "expected": 75.0}, {"input": [75.0, -74.5], "expected": 75.0}, {"input": [75.0, -74.0], "expected": 75.0}, {"input": [75.0, -73.5], "expected": 75.0}, {"input": [75.0, -73.0], "expected": 75.0}, {"input": [75.0, -72.5], "expected": 75.0}, {"input": [75.0, -72.0], "expected": 75.0}, {"input": [75.0, -71.5], "expected": 75.0}, {"input": [75.0, -71.0], "expected": 75.0}, {"input": [75.0, -70.5], "expected": 75.0}, {"input": [75.0, -70.0], "expected": 75.0}, {"input": [75.0, -69.5], "expected": 75.0}, {"input": [75.0, -69.0], "expected": 75.0}, {"input": [75.0, -68.5], "expected": 75.0}, {"input": [75.0, -68.0], "expected": 75.0}, {"input": [75.0, -67.5], "expected": 75.0}, {"input": [75.0, -67.0], "expected": 75.0}, {"input": [75.0, -66.5], "expected": 75.0}, {"input": [75.0, -66.0], "expected": 75.0}, {"input": [75.0, -65.5], "expected": 75.0}, {"input": [75.0, -65.0], "expected": 75.0}, {"input": [75.0, -64.5], "expected": 75.0}, {"input": [75.0, -64.0], "expected": 75.0}, {"input": [75.0, -63.5], "expected": 75.0}, {"input": [75.0, -63.0], "expected": 75.0}, {"input": [75.0, -62.5], "expected": 75.0}, {"input": [75.0, -62.0], "expected": 75.0}, {"input": [75.0, -61.5], "expected": 75.0}, {"input": [75.0, -61.0], "expected": 75.0}, {"input": [75.0, -60.5], "expected": 75.0}, {"input": [75.0, -60.0], "expected": 75.0}, {"input": [75.0, -59.5], "expected": 75.0}, {"input": [75.0, -59.0], "expected": 75.0}, {"input": [75.0, -58.5], "expected": 75.0}, {"input": [75.0, -58.0], "expected": 75.0}, {"input": [75.0, -57.5], "expected": 75.0}, {"input": [75.0, -57.0], "expected": 75.0}, {"input": [75.0, -56.5], "expected": 75.0}, {"input": [75.0, -56.0], "expected": 75.0}, {"input": [75.0, -55.5], "expected": 75.0}, {"input": [75.0, -55.0], "expected": 75.0}, {"input": [75.0, -54.5], "expected": 75.0}, {"input": [75.0, -54.0], "expected": 75.0}, {"input": [75.0, -53.5], "expected": 75.0}, {"input": [75.0, -53.0], "expected": 75.0}, {"input": [75.0, -52.5], "expected": 75.0}, {"input": [75.0, -52.0], "expected": 75.0}, {"input": [75.0, -51.5], "expected": 75.0}, {"input": [75.0, -51.0], "expected": 75.0}, {"input": [75.0, -50.5], "expected": 75.0}, {"input": [75.0, -50.0], "expected": 75.0}, {"input": [75.0, -49.5], "expected": 75.0}, {"input": [75.0, -49.0], "expected": 75.0}, {"input": [75.0, -48.5], "expected": 75.0}, {"input": [75.0, -48.0], "expected": 75.0}, {"input": [75.0, -47.5], "expected": 75.0}, {"input": [75.0, -47.0], "expected": 75.0}, {"input": [75.0, -46.5], "expected": 75.0}, {"input": [75.0, -46.0], "expected": 75.0}, {"input": [75.0, -45.5], "expected": 75.0}, {"input": [75.0, -45.0], "expected": 75.0}, {"input": [75.0, -44.5], "expected": 75.0}, {"input": [75.0, -44.0], "expected": 75.0}, {"input": [75.0, -43.5], "expected": 75.0}, {"input": [75.0, -43.0], "expected": 75.0}, {"input": [75.0, -42.5], "expected": 75.0}, {"input": [75.0, -42.0], "expected": 75.0}, {"input": [75.0, -41.5], "expected": 75.0}, {"input": [75.0, -41.0], "expected": 75.0}, {"input": [75.0, -40.5], "expected": 75.0}, {"input": [75.0, -40.0], "expected": 75.0}, {"input": [75.0, -39.5], "expected": 75.0}, {"input": [75.0, -39.0], "expected": 75.0}, {"input": [75.0, -38.5], "expected": 75.0}, {"input": [75.0, -38.0], "expected": 75.0}, {"input": [75.0, -37.5], "expected": 75.0}, {"input": [75.0, -37.0], "expected": 75.0}, {"input": [75.0, -36.5], "expected": 75.0}, {"input": [75.0, -36.0], "expected": 75.0}, {"input": [75.0, -35.5], "expected": 75.0}, {"input": [75.0, -35.0], "expected": 75.0}, {"input": [75.0, -34.5], "expected": 75.0}, {"input": [75.0, -34.0], "expected": 75.0}, {"input": [75.0, -33.5], "expected": 75.0}, {"input": [75.0, -33.0], "expected": 75.0}, {"input": [75.0, -32.5], "expected": 75.0}, {"input": [75.0, -32.0], "expected": 75.0}, {"input": [75.0, -31.5], "expected": 75.0}, {"input": [75.0, -31.0], "expected": 75.0}, {"input": [75.0, -30.5], "expected": 75.0}, {"input": [75.0, -30.0], "expected": 75.0}, {"input": [75.0, -29.5], "expected": 75.0}, {"input": [75.0, -29.0], "expected": 75.0}, {"input": [75.0, -28.5], "expected": 75.0}, {"input": [75.0, -28.0], "expected": 75.0}, {"input": [75.0, -27.5], "expected": 75.0}, {"input": [75.0, -27.0], "expected": 75.0}, {"input": [75.0, -26.5], "expected": 75.0}, {"input": [75.0, -26.0], "expected": 75.0}, {"input": [75.0, -25.5], "expected": 75.0}, {"input": [75.0, -25.0], "expected": 75.0}, {"input": [75.0, -24.5], "expected": 75.0}, {"input": [75.0, -24.0], "expected": 75.0}, {"input": [75.0, -23.5], "expected": 75.0}, {"input": [75.0, -23.0], "expected": 75.0}, {"input": [75.0, -22.5], "expected": 75.0}, {"input": [75.0, -22.0], "expected": 75.0}, {"input": [75.0, -21.5], "expected": 75.0}, {"input": [75.0, -21.0], "expected": 75.0}, {"input": [75.0, -20.5], "expected": 75.0}, {"input": [75.0, -20.0], "expected": 75.0}, {"input": [75.0, -19.5], "expected": 75.0}, {"input": [75.0, -19.0], "expected": 75.0}, {"input": [75.0, -18.5], "expected": 75.0}, {"input": [75.0, -18.0], "expected": 75.0}, {"input": [75.0, -17.5], "expected": 75.0}, {"input": [75.0, -17.0], "expected": 75.0}, {"input": [75.0, -16.5], "expected": 75.0}, {"input": [75.0, -16.0], "expected": 75.0}, {"input": [75.0, -15.5], "expected": 75.0}, {"input": [75.0, -15.0], "expected": 75.0}, {"input": [75.0, -14.5], "expected": 75.0}, {"input": [75.0, -14.0], "expected": 75.0}, {"input": [75.0, -13.5], "expected": 75.0}, {"input": [75.0, -13.0], "expected": 75.0}, {"input": [75.0, -12.5], "expected": 75.0}, {"input": [75.0, -12.0], "expected": 75.0}, {"input": [75.0, -11.5], "expected": 75.0}, {"input": [75.0, -11.0], "expected": 75.0}, {"input": [75.0, -10.5], "expected": 75.0}, {"input": [75.0, -10.0], "expected": 75.0}, {"input": [75.0, -9.5], "expected": 75.0}, {"input": [75.0, -9.0], "expected": 75.0}, {"input": [75.0, -8.5], "expected": 75.0}, {"input": [75.0, -8.0], "expected": 75.0}, {"input": [75.0, -7.5], "expected": 75.0}, {"input": [75.0, -7.0], "expected": 75.0}, {"input": [75.0, -6.5], "expected": 75.0}, {"input": [75.0, -6.0], "expected": 75.0}, {"input": [75.0, -5.5], "expected": 75.0}, {"input": [75.0, -5.0], "expected": 75.0}, {"input": [75.0, -4.5], "expected": 75.0}, {"input": [75.0, -4.0], "expected": 75.0}, {"input": [75.0, -3.5], "expected": 75.0}, {"input": [75.0, -3.0], "expected": 75.0}, {"input": [75.0, -2.5], "expected": 75.0}, {"input": [75.0, -2.0], "expected": 75.0}, {"input": [75.0, -1.5], "expected": 75.0}, {"input": [75.0, -1.0], "expected": 75.0}, {"input": [75.0, -0.5], "expected": 75.0}, {"input": [75.0, 0.0], "expected": 75.0}, {"input": [75.0, 0.5], "expected": 75.0}, {"input": [75.0, 1.0], "expected": 75.0}, {"input": [75.0, 1.5], "expected": 75.0}, {"input": [75.0, 2.0], "expected": 75.0}, {"input": [75.0, 2.5], "expected": 75.0}, {"input": [75.0, 3.0], "expected": 75.0}, {"input": [75.0, 3.5], "expected": 75.0}, {"input": [75.0, 4.0], "expected": 75.0}, {"input": [75.0, 4.5], "expected": 75.0}, {"input": [75.0, 5.0], "expected": 75.0}, {"input": [75.0, 5.5], "expected": 75.0}, {"input": [75.0, 6.0], "expected": 75.0}, {"input": [75.0, 6.5], "expected": 75.0}, {"input": [75.0, 7.0], "expected": 75.0}, {"input": [75.0, 7.5], "expected": 75.0}, {"input": [75.0, 8.0], "expected": 75.0}, {"input": [75.0, 8.5], "expected": 75.0}, {"input": [75.0, 9.0], "expected": 75.0}, {"input": [75.0, 9.5], "expected": 75.0}, {"input": [75.0, 10.0], "expected": 75.0}, {"input": [75.0, 10.5], "expected": 75.0}, {"input": [75.0, 11.0], "expected": 75.0}, {"input": [75.0, 11.5], "expected": 75.0}, {"input": [75.0, 12.0], "expected": 75.0}, {"input": [75.0, 12.5], "expected": 75.0}, {"input": [75.0, 13.0], "expected": 75.0}, {"input": [75.0, 13.5], "expected": 75.0}, {"input": [75.0, 14.0], "expected": 75.0}, {"input": [75.0, 14.5], "expected": 75.0}, {"input": [75.0, 15.0], "expected": 75.0}, {"input": [75.0, 15.5], "expected": 75.0}, {"input": [75.0, 16.0], "expected": 75.0}, {"input": [75.0, 16.5], "expected": 75.0}, {"input": [75.0, 17.0], "expected": 75.0}, {"input": [75.0, 17.5], "expected": 75.0}, {"input": [75.0, 18.0], "expected": 75.0}, {"input": [75.0, 18.5], "expected": 75.0}, {"input": [75.0, 19.0], "expected": 75.0}, {"input": [75.0, 19.5], "expected": 75.0}, {"input": [75.0, 20.0], "expected": 75.0}, {"input": [75.0, 20.5], "expected": 75.0}, {"input": [75.0, 21.0], "expected": 75.0}, {"input": [75.0, 21.5], "expected": 75.0}, {"input": [75.0, 22.0], "expected": 75.0}, {"input": [75.0, 22.5], "expected": 75.0}, {"input": [75.0, 23.0], "expected": 75.0}, {"input": [75.0, 23.5], "expected": 75.0}, {"input": [75.0, 24.0], "expected": 75.0}, {"input": [75.0, 24.5], "expected": 75.0}, {"input": [75.0, 25.0], "expected": 75.0}, {"input": [75.0, 25.5], "expected": 75.0}, {"input": [75.0, 26.0], "expected": 75.0}, {"input": [75.0, 26.5], "expected": 75.0}, {"input": [75.0, 27.0], "expected": 75.0}, {"input": [75.0, 27.5], "expected": 75.0}, {"input": [75.0, 28.0], "expected": 75.0}, {"input": [75.0, 28.5], "expected": 75.0}, {"input": [75.0, 29.0], "expected": 75.0}, {"input": [75.0, 29.5], "expected": 75.0}, {"input": [75.0, 30.0], "expected": 75.0}, {"input": [75.0, 30.5], "expected": 75.0}, {"input": [75.0, 31.0], "expected": 75.0}, {"input": [75.0, 31.5], "expected": 75.0}, {"input": [75.0, 32.0], "expected": 75.0}, {"input": [75.0, 32.5], "expected": 75.0}, {"input": [75.0, 33.0], "expected": 75.0}, {"input": [75.0, 33.5], "expected": 75.0}, {"input": [75.0, 34.0], "expected": 75.0}, {"input": [75.0, 34.5], "expected": 75.0}, {"input": [75.0, 35.0], "expected": 75.0}, {"input": [75.0, 35.5], "expected": 75.0}, {"input": [75.0, 36.0], "expected": 75.0}, {"input": [75.0, 36.5], "expected": 75.0}, {"input": [75.0, 37.0], "expected": 75.0}, {"input": [75.0, 37.5], "expected": 75.0}, {"input": [75.0, 38.0], "expected": 75.0}, {"input": [75.0, 38.5], "expected": 75.0}, {"input": [75.0, 39.0], "expected": 75.0}, {"input": [75.0, 39.5], "expected": 75.0}, {"input": [75.0, 40.0], "expected": 75.0}, {"input": [75.0, 40.5], "expected": 75.0}, {"input": [75.0, 41.0], "expected": 75.0}, {"input": [75.0, 41.5], "expected": 75.0}, {"input": [75.0, 42.0], "expected": 75.0}, {"input": [75.0, 42.5], "expected": 75.00000000000001}, {"input": [75.0, 43.0], "expected": 75.00000000000001}, {"input": [75.0, 43.5], "expected": 75.00000000000001}, {"input": [75.0, 44.0], "expected": 75.00000000000003}, {"input": [75.0, 44.5], "expected": 75.00000000000006}, {"input": [75.0, 45.0], "expected": 75.0000000000001}, {"input": [75.0, 45.5], "expected": 75.00000000000016}, {"input": [75.0, 46.0], "expected": 75.00000000000026}, {"input": [75.0, 46.5], "expected": 75.00000000000043}, {"input": [75.0, 47.0], "expected": 75.0000000000007}, {"input": [75.0, 47.5], "expected": 75.00000000000114}, {"input": [75.0, 48.0], "expected": 75.00000000000188}, {"input": [75.0, 48.5], "expected": 75.0000000000031}, {"input": [75.0, 49.0], "expected": 75.00000000000512}, {"input": [75.0, 49.5], "expected": 75.00000000000843}, {"input": [75.0, 50.0], "expected": 75.00000000001388}, {"input": [75.0, 50.5], "expected": 75.0000000000229}, {"input": [75.0, 51.0], "expected": 75.00000000003776}, {"input": [75.0, 51.5], "expected": 75.00000000006224}, {"input": [75.0, 52.0], "expected": 75.00000000010262}, {"input": [75.0, 52.5], "expected": 75.0000000001692}, {"input": [75.0, 53.0], "expected": 75.00000000027894}, {"input": [75.0, 53.5], "expected": 75.0000000004599}, {"input": [75.0, 54.0], "expected": 75.00000000075826}, {"input": [75.0, 54.5], "expected": 75.00000000125016}, {"input": [75.0, 55.0], "expected": 75.00000000206116}, {"input": [75.0, 55.5], "expected": 75.00000000339827}, {"input": [75.0, 56.0], "expected": 75.0000000056028}, {"input": [75.0, 56.5], "expected": 75.00000000923745}, {"input": [75.0, 57.0], "expected": 75.00000001522999}, {"input": [75.0, 57.5], "expected": 75.00000002511}, {"input": [75.0, 58.0], "expected": 75.00000004139937}, {"input": [75.0, 58.5], "expected": 75.00000006825603}, {"input": [75.0, 59.0], "expected": 75.00000011253516}, {"input": [75.0, 59.5], "expected": 75.00000018553912}, {"input": [75.0, 60.0], "expected": 75.00000030590228}, {"input": [75.0, 60.5], "expected": 75.00000050434754}, {"input": [75.0, 61.0], "expected": 75.00000083152837}, {"input": [75.0, 61.5], "expected": 75.00000137095815}, {"input": [75.0, 62.0], "expected": 75.00000226032685}, {"input": [75.0, 62.5], "expected": 75.00000372664623}, {"input": [75.0, 63.0], "expected": 75.00000614419348}, {"input": [75.0, 63.5], "expected": 75.00001013004228}, {"input": [75.0, 64.0], "expected": 75.00001670156132}, {"input": [75.0, 64.5], "expected": 75.00002753607023}, {"input": [75.0, 65.0], "expected": 75.00004539889922}, {"input": [75.0, 65.5], "expected": 75.00007484902864}, {"input": [75.0, 66.0], "expected": 75.00012340218973}, {"input": [75.0, 66.5], "expected": 75.00020344767213}, {"input": [75.0, 67.0], "expected": 75.0003354063729}, {"input": [75.0, 67.5], "expected": 75.00055293147535}, {"input": [75.0, 68.0], "expected": 75.00091146645377}, {"input": [75.0, 68.5], "expected": 75.00150231015975}, {"input": [75.0, 69.0], "expected": 75.00247568513772}, {"input": [75.0, 69.5], "expected": 75.00407844327057}, {"input": [75.0, 70.0], "expected": 75.00671534848912}, {"input": [75.0, 70.5], "expected": 75.0110477448486}, {"input": [75.0, 71.0], "expected": 75.0181499279178}, {"input": [75.0, 71.5], "expected": 75.02975041827263}, {"input": [75.0, 72.0], "expected": 75.04858735157374}, {"input": [75.0, 72.5], "expected": 75.07888973429255}, {"input": [75.0, 73.0], "expected": 75.12692801104298}, {"input": [75.0, 73.5], "expected": 75.20141327798275}, {"input": [75.0, 74.0], "expected": 75.31326168751822}, {"input": [75.0, 74.5], "expected": 75.4740769841801}, {"input": [75.0, 75.0], "expected": 75.69314718055995}, {"input": [75.0, 75.5], "expected": 75.9740769841801}, {"input": [75.0, 76.0], "expected": 76.31326168751822}, {"input": [75.0, 76.5], "expected": 76.70141327798275}, {"input": [75.0, 77.0], "expected": 77.12692801104298}, {"input": [75.0, 77.5], "expected": 77.57888973429255}, {"input": [75.0, 78.0], "expected": 78.04858735157374}, {"input": [75.0, 78.5], "expected": 78.52975041827263}, {"input": [75.0, 79.0], "expected": 79.0181499279178}, {"input": [75.0, 79.5], "expected": 79.5110477448486}, {"input": [75.0, 80.0], "expected": 80.00671534848912}, {"input": [75.0, 80.5], "expected": 80.50407844327057}, {"input": [75.0, 81.0], "expected": 81.00247568513772}, {"input": [75.0, 81.5], "expected": 81.50150231015975}, {"input": [75.0, 82.0], "expected": 82.00091146645377}, {"input": [75.0, 82.5], "expected": 82.50055293147535}, {"input": [75.0, 83.0], "expected": 83.0003354063729}, {"input": [75.0, 83.5], "expected": 83.50020344767213}, {"input": [75.0, 84.0], "expected": 84.00012340218973}, {"input": [75.0, 84.5], "expected": 84.50007484902864}, {"input": [75.0, 85.0], "expected": 85.00004539889922}, {"input": [75.0, 85.5], "expected": 85.50002753607023}, {"input": [75.0, 86.0], "expected": 86.00001670156132}, {"input": [75.0, 86.5], "expected": 86.50001013004228}, {"input": [75.0, 87.0], "expected": 87.00000614419348}, {"input": [75.0, 87.5], "expected": 87.50000372664623}, {"input": [75.0, 88.0], "expected": 88.00000226032685}, {"input": [75.0, 88.5], "expected": 88.50000137095815}, {"input": [75.0, 89.0], "expected": 89.00000083152837}, {"input": [75.0, 89.5], "expected": 89.50000050434754}, {"input": [75.0, 90.0], "expected": 90.00000030590228}, {"input": [75.0, 90.5], "expected": 90.50000018553912}, {"input": [75.0, 91.0], "expected": 91.00000011253516}, {"input": [75.0, 91.5], "expected": 91.50000006825603}, {"input": [75.0, 92.0], "expected": 92.00000004139937}, {"input": [75.0, 92.5], "expected": 92.50000002511}, {"input": [75.0, 93.0], "expected": 93.00000001522999}, {"input": [75.0, 93.5], "expected": 93.50000000923745}, {"input": [75.0, 94.0], "expected": 94.0000000056028}, {"input": [75.0, 94.5], "expected": 94.50000000339827}, {"input": [75.0, 95.0], "expected": 95.00000000206116}, {"input": [75.0, 95.5], "expected": 95.50000000125016}, {"input": [75.0, 96.0], "expected": 96.00000000075826}, {"input": [75.0, 96.5], "expected": 96.5000000004599}, {"input": [75.0, 97.0], "expected": 97.00000000027894}, {"input": [75.0, 97.5], "expected": 97.5000000001692}, {"input": [75.0, 98.0], "expected": 98.00000000010262}, {"input": [75.0, 98.5], "expected": 98.50000000006224}, {"input": [75.0, 99.0], "expected": 99.00000000003776}, {"input": [75.0, 99.5], "expected": 99.5000000000229}, {"input": [75.5, -100.0], "expected": 75.5}, {"input": [75.5, -99.5], "expected": 75.5}, {"input": [75.5, -99.0], "expected": 75.5}, {"input": [75.5, -98.5], "expected": 75.5}, {"input": [75.5, -98.0], "expected": 75.5}, {"input": [75.5, -97.5], "expected": 75.5}, {"input": [75.5, -97.0], "expected": 75.5}, {"input": [75.5, -96.5], "expected": 75.5}, {"input": [75.5, -96.0], "expected": 75.5}, {"input": [75.5, -95.5], "expected": 75.5}, {"input": [75.5, -95.0], "expected": 75.5}, {"input": [75.5, -94.5], "expected": 75.5}, {"input": [75.5, -94.0], "expected": 75.5}, {"input": [75.5, -93.5], "expected": 75.5}, {"input": [75.5, -93.0], "expected": 75.5}, {"input": [75.5, -92.5], "expected": 75.5}, {"input": [75.5, -92.0], "expected": 75.5}, {"input": [75.5, -91.5], "expected": 75.5}, {"input": [75.5, -91.0], "expected": 75.5}, {"input": [75.5, -90.5], "expected": 75.5}, {"input": [75.5, -90.0], "expected": 75.5}, {"input": [75.5, -89.5], "expected": 75.5}, {"input": [75.5, -89.0], "expected": 75.5}, {"input": [75.5, -88.5], "expected": 75.5}, {"input": [75.5, -88.0], "expected": 75.5}, {"input": [75.5, -87.5], "expected": 75.5}, {"input": [75.5, -87.0], "expected": 75.5}, {"input": [75.5, -86.5], "expected": 75.5}, {"input": [75.5, -86.0], "expected": 75.5}, {"input": [75.5, -85.5], "expected": 75.5}, {"input": [75.5, -85.0], "expected": 75.5}, {"input": [75.5, -84.5], "expected": 75.5}, {"input": [75.5, -84.0], "expected": 75.5}, {"input": [75.5, -83.5], "expected": 75.5}, {"input": [75.5, -83.0], "expected": 75.5}, {"input": [75.5, -82.5], "expected": 75.5}, {"input": [75.5, -82.0], "expected": 75.5}, {"input": [75.5, -81.5], "expected": 75.5}, {"input": [75.5, -81.0], "expected": 75.5}, {"input": [75.5, -80.5], "expected": 75.5}, {"input": [75.5, -80.0], "expected": 75.5}, {"input": [75.5, -79.5], "expected": 75.5}, {"input": [75.5, -79.0], "expected": 75.5}, {"input": [75.5, -78.5], "expected": 75.5}, {"input": [75.5, -78.0], "expected": 75.5}, {"input": [75.5, -77.5], "expected": 75.5}, {"input": [75.5, -77.0], "expected": 75.5}, {"input": [75.5, -76.5], "expected": 75.5}, {"input": [75.5, -76.0], "expected": 75.5}, {"input": [75.5, -75.5], "expected": 75.5}, {"input": [75.5, -75.0], "expected": 75.5}, {"input": [75.5, -74.5], "expected": 75.5}, {"input": [75.5, -74.0], "expected": 75.5}, {"input": [75.5, -73.5], "expected": 75.5}, {"input": [75.5, -73.0], "expected": 75.5}, {"input": [75.5, -72.5], "expected": 75.5}, {"input": [75.5, -72.0], "expected": 75.5}, {"input": [75.5, -71.5], "expected": 75.5}, {"input": [75.5, -71.0], "expected": 75.5}, {"input": [75.5, -70.5], "expected": 75.5}, {"input": [75.5, -70.0], "expected": 75.5}, {"input": [75.5, -69.5], "expected": 75.5}, {"input": [75.5, -69.0], "expected": 75.5}, {"input": [75.5, -68.5], "expected": 75.5}, {"input": [75.5, -68.0], "expected": 75.5}, {"input": [75.5, -67.5], "expected": 75.5}, {"input": [75.5, -67.0], "expected": 75.5}, {"input": [75.5, -66.5], "expected": 75.5}, {"input": [75.5, -66.0], "expected": 75.5}, {"input": [75.5, -65.5], "expected": 75.5}, {"input": [75.5, -65.0], "expected": 75.5}, {"input": [75.5, -64.5], "expected": 75.5}, {"input": [75.5, -64.0], "expected": 75.5}, {"input": [75.5, -63.5], "expected": 75.5}, {"input": [75.5, -63.0], "expected": 75.5}, {"input": [75.5, -62.5], "expected": 75.5}, {"input": [75.5, -62.0], "expected": 75.5}, {"input": [75.5, -61.5], "expected": 75.5}, {"input": [75.5, -61.0], "expected": 75.5}, {"input": [75.5, -60.5], "expected": 75.5}, {"input": [75.5, -60.0], "expected": 75.5}, {"input": [75.5, -59.5], "expected": 75.5}, {"input": [75.5, -59.0], "expected": 75.5}, {"input": [75.5, -58.5], "expected": 75.5}, {"input": [75.5, -58.0], "expected": 75.5}, {"input": [75.5, -57.5], "expected": 75.5}, {"input": [75.5, -57.0], "expected": 75.5}, {"input": [75.5, -56.5], "expected": 75.5}, {"input": [75.5, -56.0], "expected": 75.5}, {"input": [75.5, -55.5], "expected": 75.5}, {"input": [75.5, -55.0], "expected": 75.5}, {"input": [75.5, -54.5], "expected": 75.5}, {"input": [75.5, -54.0], "expected": 75.5}, {"input": [75.5, -53.5], "expected": 75.5}, {"input": [75.5, -53.0], "expected": 75.5}, {"input": [75.5, -52.5], "expected": 75.5}, {"input": [75.5, -52.0], "expected": 75.5}, {"input": [75.5, -51.5], "expected": 75.5}, {"input": [75.5, -51.0], "expected": 75.5}, {"input": [75.5, -50.5], "expected": 75.5}, {"input": [75.5, -50.0], "expected": 75.5}, {"input": [75.5, -49.5], "expected": 75.5}, {"input": [75.5, -49.0], "expected": 75.5}, {"input": [75.5, -48.5], "expected": 75.5}, {"input": [75.5, -48.0], "expected": 75.5}, {"input": [75.5, -47.5], "expected": 75.5}, {"input": [75.5, -47.0], "expected": 75.5}, {"input": [75.5, -46.5], "expected": 75.5}, {"input": [75.5, -46.0], "expected": 75.5}, {"input": [75.5, -45.5], "expected": 75.5}, {"input": [75.5, -45.0], "expected": 75.5}, {"input": [75.5, -44.5], "expected": 75.5}, {"input": [75.5, -44.0], "expected": 75.5}, {"input": [75.5, -43.5], "expected": 75.5}, {"input": [75.5, -43.0], "expected": 75.5}, {"input": [75.5, -42.5], "expected": 75.5}, {"input": [75.5, -42.0], "expected": 75.5}, {"input": [75.5, -41.5], "expected": 75.5}, {"input": [75.5, -41.0], "expected": 75.5}, {"input": [75.5, -40.5], "expected": 75.5}, {"input": [75.5, -40.0], "expected": 75.5}, {"input": [75.5, -39.5], "expected": 75.5}, {"input": [75.5, -39.0], "expected": 75.5}, {"input": [75.5, -38.5], "expected": 75.5}, {"input": [75.5, -38.0], "expected": 75.5}, {"input": [75.5, -37.5], "expected": 75.5}, {"input": [75.5, -37.0], "expected": 75.5}, {"input": [75.5, -36.5], "expected": 75.5}, {"input": [75.5, -36.0], "expected": 75.5}, {"input": [75.5, -35.5], "expected": 75.5}, {"input": [75.5, -35.0], "expected": 75.5}, {"input": [75.5, -34.5], "expected": 75.5}, {"input": [75.5, -34.0], "expected": 75.5}, {"input": [75.5, -33.5], "expected": 75.5}, {"input": [75.5, -33.0], "expected": 75.5}, {"input": [75.5, -32.5], "expected": 75.5}, {"input": [75.5, -32.0], "expected": 75.5}, {"input": [75.5, -31.5], "expected": 75.5}, {"input": [75.5, -31.0], "expected": 75.5}, {"input": [75.5, -30.5], "expected": 75.5}, {"input": [75.5, -30.0], "expected": 75.5}, {"input": [75.5, -29.5], "expected": 75.5}, {"input": [75.5, -29.0], "expected": 75.5}, {"input": [75.5, -28.5], "expected": 75.5}, {"input": [75.5, -28.0], "expected": 75.5}, {"input": [75.5, -27.5], "expected": 75.5}, {"input": [75.5, -27.0], "expected": 75.5}, {"input": [75.5, -26.5], "expected": 75.5}, {"input": [75.5, -26.0], "expected": 75.5}, {"input": [75.5, -25.5], "expected": 75.5}, {"input": [75.5, -25.0], "expected": 75.5}, {"input": [75.5, -24.5], "expected": 75.5}, {"input": [75.5, -24.0], "expected": 75.5}, {"input": [75.5, -23.5], "expected": 75.5}, {"input": [75.5, -23.0], "expected": 75.5}, {"input": [75.5, -22.5], "expected": 75.5}, {"input": [75.5, -22.0], "expected": 75.5}, {"input": [75.5, -21.5], "expected": 75.5}, {"input": [75.5, -21.0], "expected": 75.5}, {"input": [75.5, -20.5], "expected": 75.5}, {"input": [75.5, -20.0], "expected": 75.5}, {"input": [75.5, -19.5], "expected": 75.5}, {"input": [75.5, -19.0], "expected": 75.5}, {"input": [75.5, -18.5], "expected": 75.5}, {"input": [75.5, -18.0], "expected": 75.5}, {"input": [75.5, -17.5], "expected": 75.5}, {"input": [75.5, -17.0], "expected": 75.5}, {"input": [75.5, -16.5], "expected": 75.5}, {"input": [75.5, -16.0], "expected": 75.5}, {"input": [75.5, -15.5], "expected": 75.5}, {"input": [75.5, -15.0], "expected": 75.5}, {"input": [75.5, -14.5], "expected": 75.5}, {"input": [75.5, -14.0], "expected": 75.5}, {"input": [75.5, -13.5], "expected": 75.5}, {"input": [75.5, -13.0], "expected": 75.5}, {"input": [75.5, -12.5], "expected": 75.5}, {"input": [75.5, -12.0], "expected": 75.5}, {"input": [75.5, -11.5], "expected": 75.5}, {"input": [75.5, -11.0], "expected": 75.5}, {"input": [75.5, -10.5], "expected": 75.5}, {"input": [75.5, -10.0], "expected": 75.5}, {"input": [75.5, -9.5], "expected": 75.5}, {"input": [75.5, -9.0], "expected": 75.5}, {"input": [75.5, -8.5], "expected": 75.5}, {"input": [75.5, -8.0], "expected": 75.5}, {"input": [75.5, -7.5], "expected": 75.5}, {"input": [75.5, -7.0], "expected": 75.5}, {"input": [75.5, -6.5], "expected": 75.5}, {"input": [75.5, -6.0], "expected": 75.5}, {"input": [75.5, -5.5], "expected": 75.5}, {"input": [75.5, -5.0], "expected": 75.5}, {"input": [75.5, -4.5], "expected": 75.5}, {"input": [75.5, -4.0], "expected": 75.5}, {"input": [75.5, -3.5], "expected": 75.5}, {"input": [75.5, -3.0], "expected": 75.5}, {"input": [75.5, -2.5], "expected": 75.5}, {"input": [75.5, -2.0], "expected": 75.5}, {"input": [75.5, -1.5], "expected": 75.5}, {"input": [75.5, -1.0], "expected": 75.5}, {"input": [75.5, -0.5], "expected": 75.5}, {"input": [75.5, 0.0], "expected": 75.5}, {"input": [75.5, 0.5], "expected": 75.5}, {"input": [75.5, 1.0], "expected": 75.5}, {"input": [75.5, 1.5], "expected": 75.5}, {"input": [75.5, 2.0], "expected": 75.5}, {"input": [75.5, 2.5], "expected": 75.5}, {"input": [75.5, 3.0], "expected": 75.5}, {"input": [75.5, 3.5], "expected": 75.5}, {"input": [75.5, 4.0], "expected": 75.5}, {"input": [75.5, 4.5], "expected": 75.5}, {"input": [75.5, 5.0], "expected": 75.5}, {"input": [75.5, 5.5], "expected": 75.5}, {"input": [75.5, 6.0], "expected": 75.5}, {"input": [75.5, 6.5], "expected": 75.5}, {"input": [75.5, 7.0], "expected": 75.5}, {"input": [75.5, 7.5], "expected": 75.5}, {"input": [75.5, 8.0], "expected": 75.5}, {"input": [75.5, 8.5], "expected": 75.5}, {"input": [75.5, 9.0], "expected": 75.5}, {"input": [75.5, 9.5], "expected": 75.5}, {"input": [75.5, 10.0], "expected": 75.5}, {"input": [75.5, 10.5], "expected": 75.5}, {"input": [75.5, 11.0], "expected": 75.5}, {"input": [75.5, 11.5], "expected": 75.5}, {"input": [75.5, 12.0], "expected": 75.5}, {"input": [75.5, 12.5], "expected": 75.5}, {"input": [75.5, 13.0], "expected": 75.5}, {"input": [75.5, 13.5], "expected": 75.5}, {"input": [75.5, 14.0], "expected": 75.5}, {"input": [75.5, 14.5], "expected": 75.5}, {"input": [75.5, 15.0], "expected": 75.5}, {"input": [75.5, 15.5], "expected": 75.5}, {"input": [75.5, 16.0], "expected": 75.5}, {"input": [75.5, 16.5], "expected": 75.5}, {"input": [75.5, 17.0], "expected": 75.5}, {"input": [75.5, 17.5], "expected": 75.5}, {"input": [75.5, 18.0], "expected": 75.5}, {"input": [75.5, 18.5], "expected": 75.5}, {"input": [75.5, 19.0], "expected": 75.5}, {"input": [75.5, 19.5], "expected": 75.5}, {"input": [75.5, 20.0], "expected": 75.5}, {"input": [75.5, 20.5], "expected": 75.5}, {"input": [75.5, 21.0], "expected": 75.5}, {"input": [75.5, 21.5], "expected": 75.5}, {"input": [75.5, 22.0], "expected": 75.5}, {"input": [75.5, 22.5], "expected": 75.5}, {"input": [75.5, 23.0], "expected": 75.5}, {"input": [75.5, 23.5], "expected": 75.5}, {"input": [75.5, 24.0], "expected": 75.5}, {"input": [75.5, 24.5], "expected": 75.5}, {"input": [75.5, 25.0], "expected": 75.5}, {"input": [75.5, 25.5], "expected": 75.5}, {"input": [75.5, 26.0], "expected": 75.5}, {"input": [75.5, 26.5], "expected": 75.5}, {"input": [75.5, 27.0], "expected": 75.5}, {"input": [75.5, 27.5], "expected": 75.5}, {"input": [75.5, 28.0], "expected": 75.5}, {"input": [75.5, 28.5], "expected": 75.5}, {"input": [75.5, 29.0], "expected": 75.5}, {"input": [75.5, 29.5], "expected": 75.5}, {"input": [75.5, 30.0], "expected": 75.5}, {"input": [75.5, 30.5], "expected": 75.5}, {"input": [75.5, 31.0], "expected": 75.5}, {"input": [75.5, 31.5], "expected": 75.5}, {"input": [75.5, 32.0], "expected": 75.5}, {"input": [75.5, 32.5], "expected": 75.5}, {"input": [75.5, 33.0], "expected": 75.5}, {"input": [75.5, 33.5], "expected": 75.5}, {"input": [75.5, 34.0], "expected": 75.5}, {"input": [75.5, 34.5], "expected": 75.5}, {"input": [75.5, 35.0], "expected": 75.5}, {"input": [75.5, 35.5], "expected": 75.5}, {"input": [75.5, 36.0], "expected": 75.5}, {"input": [75.5, 36.5], "expected": 75.5}, {"input": [75.5, 37.0], "expected": 75.5}, {"input": [75.5, 37.5], "expected": 75.5}, {"input": [75.5, 38.0], "expected": 75.5}, {"input": [75.5, 38.5], "expected": 75.5}, {"input": [75.5, 39.0], "expected": 75.5}, {"input": [75.5, 39.5], "expected": 75.5}, {"input": [75.5, 40.0], "expected": 75.5}, {"input": [75.5, 40.5], "expected": 75.5}, {"input": [75.5, 41.0], "expected": 75.5}, {"input": [75.5, 41.5], "expected": 75.5}, {"input": [75.5, 42.0], "expected": 75.5}, {"input": [75.5, 42.5], "expected": 75.5}, {"input": [75.5, 43.0], "expected": 75.50000000000001}, {"input": [75.5, 43.5], "expected": 75.50000000000001}, {"input": [75.5, 44.0], "expected": 75.50000000000001}, {"input": [75.5, 44.5], "expected": 75.50000000000003}, {"input": [75.5, 45.0], "expected": 75.50000000000006}, {"input": [75.5, 45.5], "expected": 75.5000000000001}, {"input": [75.5, 46.0], "expected": 75.50000000000016}, {"input": [75.5, 46.5], "expected": 75.50000000000026}, {"input": [75.5, 47.0], "expected": 75.50000000000043}, {"input": [75.5, 47.5], "expected": 75.5000000000007}, {"input": [75.5, 48.0], "expected": 75.50000000000114}, {"input": [75.5, 48.5], "expected": 75.50000000000188}, {"input": [75.5, 49.0], "expected": 75.5000000000031}, {"input": [75.5, 49.5], "expected": 75.50000000000512}, {"input": [75.5, 50.0], "expected": 75.50000000000843}, {"input": [75.5, 50.5], "expected": 75.50000000001388}, {"input": [75.5, 51.0], "expected": 75.5000000000229}, {"input": [75.5, 51.5], "expected": 75.50000000003776}, {"input": [75.5, 52.0], "expected": 75.50000000006224}, {"input": [75.5, 52.5], "expected": 75.50000000010262}, {"input": [75.5, 53.0], "expected": 75.5000000001692}, {"input": [75.5, 53.5], "expected": 75.50000000027894}, {"input": [75.5, 54.0], "expected": 75.5000000004599}, {"input": [75.5, 54.5], "expected": 75.50000000075826}, {"input": [75.5, 55.0], "expected": 75.50000000125016}, {"input": [75.5, 55.5], "expected": 75.50000000206116}, {"input": [75.5, 56.0], "expected": 75.50000000339827}, {"input": [75.5, 56.5], "expected": 75.5000000056028}, {"input": [75.5, 57.0], "expected": 75.50000000923745}, {"input": [75.5, 57.5], "expected": 75.50000001522999}, {"input": [75.5, 58.0], "expected": 75.50000002511}, {"input": [75.5, 58.5], "expected": 75.50000004139937}, {"input": [75.5, 59.0], "expected": 75.50000006825603}, {"input": [75.5, 59.5], "expected": 75.50000011253516}, {"input": [75.5, 60.0], "expected": 75.50000018553912}, {"input": [75.5, 60.5], "expected": 75.50000030590228}, {"input": [75.5, 61.0], "expected": 75.50000050434754}, {"input": [75.5, 61.5], "expected": 75.50000083152837}, {"input": [75.5, 62.0], "expected": 75.50000137095815}, {"input": [75.5, 62.5], "expected": 75.50000226032685}, {"input": [75.5, 63.0], "expected": 75.50000372664623}, {"input": [75.5, 63.5], "expected": 75.50000614419348}, {"input": [75.5, 64.0], "expected": 75.50001013004228}, {"input": [75.5, 64.5], "expected": 75.50001670156132}, {"input": [75.5, 65.0], "expected": 75.50002753607023}, {"input": [75.5, 65.5], "expected": 75.50004539889922}, {"input": [75.5, 66.0], "expected": 75.50007484902864}, {"input": [75.5, 66.5], "expected": 75.50012340218973}, {"input": [75.5, 67.0], "expected": 75.50020344767213}, {"input": [75.5, 67.5], "expected": 75.5003354063729}, {"input": [75.5, 68.0], "expected": 75.50055293147535}, {"input": [75.5, 68.5], "expected": 75.50091146645377}, {"input": [75.5, 69.0], "expected": 75.50150231015975}, {"input": [75.5, 69.5], "expected": 75.50247568513772}, {"input": [75.5, 70.0], "expected": 75.50407844327057}, {"input": [75.5, 70.5], "expected": 75.50671534848912}, {"input": [75.5, 71.0], "expected": 75.5110477448486}, {"input": [75.5, 71.5], "expected": 75.5181499279178}, {"input": [75.5, 72.0], "expected": 75.52975041827263}, {"input": [75.5, 72.5], "expected": 75.54858735157374}, {"input": [75.5, 73.0], "expected": 75.57888973429255}, {"input": [75.5, 73.5], "expected": 75.62692801104298}, {"input": [75.5, 74.0], "expected": 75.70141327798275}, {"input": [75.5, 74.5], "expected": 75.81326168751822}, {"input": [75.5, 75.0], "expected": 75.9740769841801}, {"input": [75.5, 75.5], "expected": 76.19314718055995}, {"input": [75.5, 76.0], "expected": 76.4740769841801}, {"input": [75.5, 76.5], "expected": 76.81326168751822}, {"input": [75.5, 77.0], "expected": 77.20141327798275}, {"input": [75.5, 77.5], "expected": 77.62692801104298}, {"input": [75.5, 78.0], "expected": 78.07888973429255}, {"input": [75.5, 78.5], "expected": 78.54858735157374}, {"input": [75.5, 79.0], "expected": 79.02975041827263}, {"input": [75.5, 79.5], "expected": 79.5181499279178}, {"input": [75.5, 80.0], "expected": 80.0110477448486}, {"input": [75.5, 80.5], "expected": 80.50671534848912}, {"input": [75.5, 81.0], "expected": 81.00407844327057}, {"input": [75.5, 81.5], "expected": 81.50247568513772}, {"input": [75.5, 82.0], "expected": 82.00150231015975}, {"input": [75.5, 82.5], "expected": 82.50091146645377}, {"input": [75.5, 83.0], "expected": 83.00055293147535}, {"input": [75.5, 83.5], "expected": 83.5003354063729}, {"input": [75.5, 84.0], "expected": 84.00020344767213}, {"input": [75.5, 84.5], "expected": 84.50012340218973}, {"input": [75.5, 85.0], "expected": 85.00007484902864}, {"input": [75.5, 85.5], "expected": 85.50004539889922}, {"input": [75.5, 86.0], "expected": 86.00002753607023}, {"input": [75.5, 86.5], "expected": 86.50001670156132}, {"input": [75.5, 87.0], "expected": 87.00001013004228}, {"input": [75.5, 87.5], "expected": 87.50000614419348}, {"input": [75.5, 88.0], "expected": 88.00000372664623}, {"input": [75.5, 88.5], "expected": 88.50000226032685}, {"input": [75.5, 89.0], "expected": 89.00000137095815}, {"input": [75.5, 89.5], "expected": 89.50000083152837}, {"input": [75.5, 90.0], "expected": 90.00000050434754}, {"input": [75.5, 90.5], "expected": 90.50000030590228}, {"input": [75.5, 91.0], "expected": 91.00000018553912}, {"input": [75.5, 91.5], "expected": 91.50000011253516}, {"input": [75.5, 92.0], "expected": 92.00000006825603}, {"input": [75.5, 92.5], "expected": 92.50000004139937}, {"input": [75.5, 93.0], "expected": 93.00000002511}, {"input": [75.5, 93.5], "expected": 93.50000001522999}, {"input": [75.5, 94.0], "expected": 94.00000000923745}, {"input": [75.5, 94.5], "expected": 94.5000000056028}, {"input": [75.5, 95.0], "expected": 95.00000000339827}, {"input": [75.5, 95.5], "expected": 95.50000000206116}, {"input": [75.5, 96.0], "expected": 96.00000000125016}, {"input": [75.5, 96.5], "expected": 96.50000000075826}, {"input": [75.5, 97.0], "expected": 97.0000000004599}, {"input": [75.5, 97.5], "expected": 97.50000000027894}, {"input": [75.5, 98.0], "expected": 98.0000000001692}, {"input": [75.5, 98.5], "expected": 98.50000000010262}, {"input": [75.5, 99.0], "expected": 99.00000000006224}, {"input": [75.5, 99.5], "expected": 99.50000000003776}, {"input": [76.0, -100.0], "expected": 76.0}, {"input": [76.0, -99.5], "expected": 76.0}, {"input": [76.0, -99.0], "expected": 76.0}, {"input": [76.0, -98.5], "expected": 76.0}, {"input": [76.0, -98.0], "expected": 76.0}, {"input": [76.0, -97.5], "expected": 76.0}, {"input": [76.0, -97.0], "expected": 76.0}, {"input": [76.0, -96.5], "expected": 76.0}, {"input": [76.0, -96.0], "expected": 76.0}, {"input": [76.0, -95.5], "expected": 76.0}, {"input": [76.0, -95.0], "expected": 76.0}, {"input": [76.0, -94.5], "expected": 76.0}, {"input": [76.0, -94.0], "expected": 76.0}, {"input": [76.0, -93.5], "expected": 76.0}, {"input": [76.0, -93.0], "expected": 76.0}, {"input": [76.0, -92.5], "expected": 76.0}, {"input": [76.0, -92.0], "expected": 76.0}, {"input": [76.0, -91.5], "expected": 76.0}, {"input": [76.0, -91.0], "expected": 76.0}, {"input": [76.0, -90.5], "expected": 76.0}, {"input": [76.0, -90.0], "expected": 76.0}, {"input": [76.0, -89.5], "expected": 76.0}, {"input": [76.0, -89.0], "expected": 76.0}, {"input": [76.0, -88.5], "expected": 76.0}, {"input": [76.0, -88.0], "expected": 76.0}, {"input": [76.0, -87.5], "expected": 76.0}, {"input": [76.0, -87.0], "expected": 76.0}, {"input": [76.0, -86.5], "expected": 76.0}, {"input": [76.0, -86.0], "expected": 76.0}, {"input": [76.0, -85.5], "expected": 76.0}, {"input": [76.0, -85.0], "expected": 76.0}, {"input": [76.0, -84.5], "expected": 76.0}, {"input": [76.0, -84.0], "expected": 76.0}, {"input": [76.0, -83.5], "expected": 76.0}, {"input": [76.0, -83.0], "expected": 76.0}, {"input": [76.0, -82.5], "expected": 76.0}, {"input": [76.0, -82.0], "expected": 76.0}, {"input": [76.0, -81.5], "expected": 76.0}, {"input": [76.0, -81.0], "expected": 76.0}, {"input": [76.0, -80.5], "expected": 76.0}, {"input": [76.0, -80.0], "expected": 76.0}, {"input": [76.0, -79.5], "expected": 76.0}, {"input": [76.0, -79.0], "expected": 76.0}, {"input": [76.0, -78.5], "expected": 76.0}, {"input": [76.0, -78.0], "expected": 76.0}, {"input": [76.0, -77.5], "expected": 76.0}, {"input": [76.0, -77.0], "expected": 76.0}, {"input": [76.0, -76.5], "expected": 76.0}, {"input": [76.0, -76.0], "expected": 76.0}, {"input": [76.0, -75.5], "expected": 76.0}, {"input": [76.0, -75.0], "expected": 76.0}, {"input": [76.0, -74.5], "expected": 76.0}, {"input": [76.0, -74.0], "expected": 76.0}, {"input": [76.0, -73.5], "expected": 76.0}, {"input": [76.0, -73.0], "expected": 76.0}, {"input": [76.0, -72.5], "expected": 76.0}, {"input": [76.0, -72.0], "expected": 76.0}, {"input": [76.0, -71.5], "expected": 76.0}, {"input": [76.0, -71.0], "expected": 76.0}, {"input": [76.0, -70.5], "expected": 76.0}, {"input": [76.0, -70.0], "expected": 76.0}, {"input": [76.0, -69.5], "expected": 76.0}, {"input": [76.0, -69.0], "expected": 76.0}, {"input": [76.0, -68.5], "expected": 76.0}, {"input": [76.0, -68.0], "expected": 76.0}, {"input": [76.0, -67.5], "expected": 76.0}, {"input": [76.0, -67.0], "expected": 76.0}, {"input": [76.0, -66.5], "expected": 76.0}, {"input": [76.0, -66.0], "expected": 76.0}, {"input": [76.0, -65.5], "expected": 76.0}, {"input": [76.0, -65.0], "expected": 76.0}, {"input": [76.0, -64.5], "expected": 76.0}, {"input": [76.0, -64.0], "expected": 76.0}, {"input": [76.0, -63.5], "expected": 76.0}, {"input": [76.0, -63.0], "expected": 76.0}, {"input": [76.0, -62.5], "expected": 76.0}, {"input": [76.0, -62.0], "expected": 76.0}, {"input": [76.0, -61.5], "expected": 76.0}, {"input": [76.0, -61.0], "expected": 76.0}, {"input": [76.0, -60.5], "expected": 76.0}, {"input": [76.0, -60.0], "expected": 76.0}, {"input": [76.0, -59.5], "expected": 76.0}, {"input": [76.0, -59.0], "expected": 76.0}, {"input": [76.0, -58.5], "expected": 76.0}, {"input": [76.0, -58.0], "expected": 76.0}, {"input": [76.0, -57.5], "expected": 76.0}, {"input": [76.0, -57.0], "expected": 76.0}, {"input": [76.0, -56.5], "expected": 76.0}, {"input": [76.0, -56.0], "expected": 76.0}, {"input": [76.0, -55.5], "expected": 76.0}, {"input": [76.0, -55.0], "expected": 76.0}, {"input": [76.0, -54.5], "expected": 76.0}, {"input": [76.0, -54.0], "expected": 76.0}, {"input": [76.0, -53.5], "expected": 76.0}, {"input": [76.0, -53.0], "expected": 76.0}, {"input": [76.0, -52.5], "expected": 76.0}, {"input": [76.0, -52.0], "expected": 76.0}, {"input": [76.0, -51.5], "expected": 76.0}, {"input": [76.0, -51.0], "expected": 76.0}, {"input": [76.0, -50.5], "expected": 76.0}, {"input": [76.0, -50.0], "expected": 76.0}, {"input": [76.0, -49.5], "expected": 76.0}, {"input": [76.0, -49.0], "expected": 76.0}, {"input": [76.0, -48.5], "expected": 76.0}, {"input": [76.0, -48.0], "expected": 76.0}, {"input": [76.0, -47.5], "expected": 76.0}, {"input": [76.0, -47.0], "expected": 76.0}, {"input": [76.0, -46.5], "expected": 76.0}, {"input": [76.0, -46.0], "expected": 76.0}, {"input": [76.0, -45.5], "expected": 76.0}, {"input": [76.0, -45.0], "expected": 76.0}, {"input": [76.0, -44.5], "expected": 76.0}, {"input": [76.0, -44.0], "expected": 76.0}, {"input": [76.0, -43.5], "expected": 76.0}, {"input": [76.0, -43.0], "expected": 76.0}, {"input": [76.0, -42.5], "expected": 76.0}, {"input": [76.0, -42.0], "expected": 76.0}, {"input": [76.0, -41.5], "expected": 76.0}, {"input": [76.0, -41.0], "expected": 76.0}, {"input": [76.0, -40.5], "expected": 76.0}, {"input": [76.0, -40.0], "expected": 76.0}, {"input": [76.0, -39.5], "expected": 76.0}, {"input": [76.0, -39.0], "expected": 76.0}, {"input": [76.0, -38.5], "expected": 76.0}, {"input": [76.0, -38.0], "expected": 76.0}, {"input": [76.0, -37.5], "expected": 76.0}, {"input": [76.0, -37.0], "expected": 76.0}, {"input": [76.0, -36.5], "expected": 76.0}, {"input": [76.0, -36.0], "expected": 76.0}, {"input": [76.0, -35.5], "expected": 76.0}, {"input": [76.0, -35.0], "expected": 76.0}, {"input": [76.0, -34.5], "expected": 76.0}, {"input": [76.0, -34.0], "expected": 76.0}, {"input": [76.0, -33.5], "expected": 76.0}, {"input": [76.0, -33.0], "expected": 76.0}, {"input": [76.0, -32.5], "expected": 76.0}, {"input": [76.0, -32.0], "expected": 76.0}, {"input": [76.0, -31.5], "expected": 76.0}, {"input": [76.0, -31.0], "expected": 76.0}, {"input": [76.0, -30.5], "expected": 76.0}, {"input": [76.0, -30.0], "expected": 76.0}, {"input": [76.0, -29.5], "expected": 76.0}, {"input": [76.0, -29.0], "expected": 76.0}, {"input": [76.0, -28.5], "expected": 76.0}, {"input": [76.0, -28.0], "expected": 76.0}, {"input": [76.0, -27.5], "expected": 76.0}, {"input": [76.0, -27.0], "expected": 76.0}, {"input": [76.0, -26.5], "expected": 76.0}, {"input": [76.0, -26.0], "expected": 76.0}, {"input": [76.0, -25.5], "expected": 76.0}, {"input": [76.0, -25.0], "expected": 76.0}, {"input": [76.0, -24.5], "expected": 76.0}, {"input": [76.0, -24.0], "expected": 76.0}, {"input": [76.0, -23.5], "expected": 76.0}, {"input": [76.0, -23.0], "expected": 76.0}, {"input": [76.0, -22.5], "expected": 76.0}, {"input": [76.0, -22.0], "expected": 76.0}, {"input": [76.0, -21.5], "expected": 76.0}, {"input": [76.0, -21.0], "expected": 76.0}, {"input": [76.0, -20.5], "expected": 76.0}, {"input": [76.0, -20.0], "expected": 76.0}, {"input": [76.0, -19.5], "expected": 76.0}, {"input": [76.0, -19.0], "expected": 76.0}, {"input": [76.0, -18.5], "expected": 76.0}, {"input": [76.0, -18.0], "expected": 76.0}, {"input": [76.0, -17.5], "expected": 76.0}, {"input": [76.0, -17.0], "expected": 76.0}, {"input": [76.0, -16.5], "expected": 76.0}, {"input": [76.0, -16.0], "expected": 76.0}, {"input": [76.0, -15.5], "expected": 76.0}, {"input": [76.0, -15.0], "expected": 76.0}, {"input": [76.0, -14.5], "expected": 76.0}, {"input": [76.0, -14.0], "expected": 76.0}, {"input": [76.0, -13.5], "expected": 76.0}, {"input": [76.0, -13.0], "expected": 76.0}, {"input": [76.0, -12.5], "expected": 76.0}, {"input": [76.0, -12.0], "expected": 76.0}, {"input": [76.0, -11.5], "expected": 76.0}, {"input": [76.0, -11.0], "expected": 76.0}, {"input": [76.0, -10.5], "expected": 76.0}, {"input": [76.0, -10.0], "expected": 76.0}, {"input": [76.0, -9.5], "expected": 76.0}, {"input": [76.0, -9.0], "expected": 76.0}, {"input": [76.0, -8.5], "expected": 76.0}, {"input": [76.0, -8.0], "expected": 76.0}, {"input": [76.0, -7.5], "expected": 76.0}, {"input": [76.0, -7.0], "expected": 76.0}, {"input": [76.0, -6.5], "expected": 76.0}, {"input": [76.0, -6.0], "expected": 76.0}, {"input": [76.0, -5.5], "expected": 76.0}, {"input": [76.0, -5.0], "expected": 76.0}, {"input": [76.0, -4.5], "expected": 76.0}, {"input": [76.0, -4.0], "expected": 76.0}, {"input": [76.0, -3.5], "expected": 76.0}, {"input": [76.0, -3.0], "expected": 76.0}, {"input": [76.0, -2.5], "expected": 76.0}, {"input": [76.0, -2.0], "expected": 76.0}, {"input": [76.0, -1.5], "expected": 76.0}, {"input": [76.0, -1.0], "expected": 76.0}, {"input": [76.0, -0.5], "expected": 76.0}, {"input": [76.0, 0.0], "expected": 76.0}, {"input": [76.0, 0.5], "expected": 76.0}, {"input": [76.0, 1.0], "expected": 76.0}, {"input": [76.0, 1.5], "expected": 76.0}, {"input": [76.0, 2.0], "expected": 76.0}, {"input": [76.0, 2.5], "expected": 76.0}, {"input": [76.0, 3.0], "expected": 76.0}, {"input": [76.0, 3.5], "expected": 76.0}, {"input": [76.0, 4.0], "expected": 76.0}, {"input": [76.0, 4.5], "expected": 76.0}, {"input": [76.0, 5.0], "expected": 76.0}, {"input": [76.0, 5.5], "expected": 76.0}, {"input": [76.0, 6.0], "expected": 76.0}, {"input": [76.0, 6.5], "expected": 76.0}, {"input": [76.0, 7.0], "expected": 76.0}, {"input": [76.0, 7.5], "expected": 76.0}, {"input": [76.0, 8.0], "expected": 76.0}, {"input": [76.0, 8.5], "expected": 76.0}, {"input": [76.0, 9.0], "expected": 76.0}, {"input": [76.0, 9.5], "expected": 76.0}, {"input": [76.0, 10.0], "expected": 76.0}, {"input": [76.0, 10.5], "expected": 76.0}, {"input": [76.0, 11.0], "expected": 76.0}, {"input": [76.0, 11.5], "expected": 76.0}, {"input": [76.0, 12.0], "expected": 76.0}, {"input": [76.0, 12.5], "expected": 76.0}, {"input": [76.0, 13.0], "expected": 76.0}, {"input": [76.0, 13.5], "expected": 76.0}, {"input": [76.0, 14.0], "expected": 76.0}, {"input": [76.0, 14.5], "expected": 76.0}, {"input": [76.0, 15.0], "expected": 76.0}, {"input": [76.0, 15.5], "expected": 76.0}, {"input": [76.0, 16.0], "expected": 76.0}, {"input": [76.0, 16.5], "expected": 76.0}, {"input": [76.0, 17.0], "expected": 76.0}, {"input": [76.0, 17.5], "expected": 76.0}, {"input": [76.0, 18.0], "expected": 76.0}, {"input": [76.0, 18.5], "expected": 76.0}, {"input": [76.0, 19.0], "expected": 76.0}, {"input": [76.0, 19.5], "expected": 76.0}, {"input": [76.0, 20.0], "expected": 76.0}, {"input": [76.0, 20.5], "expected": 76.0}, {"input": [76.0, 21.0], "expected": 76.0}, {"input": [76.0, 21.5], "expected": 76.0}, {"input": [76.0, 22.0], "expected": 76.0}, {"input": [76.0, 22.5], "expected": 76.0}, {"input": [76.0, 23.0], "expected": 76.0}, {"input": [76.0, 23.5], "expected": 76.0}, {"input": [76.0, 24.0], "expected": 76.0}, {"input": [76.0, 24.5], "expected": 76.0}, {"input": [76.0, 25.0], "expected": 76.0}, {"input": [76.0, 25.5], "expected": 76.0}, {"input": [76.0, 26.0], "expected": 76.0}, {"input": [76.0, 26.5], "expected": 76.0}, {"input": [76.0, 27.0], "expected": 76.0}, {"input": [76.0, 27.5], "expected": 76.0}, {"input": [76.0, 28.0], "expected": 76.0}, {"input": [76.0, 28.5], "expected": 76.0}, {"input": [76.0, 29.0], "expected": 76.0}, {"input": [76.0, 29.5], "expected": 76.0}, {"input": [76.0, 30.0], "expected": 76.0}, {"input": [76.0, 30.5], "expected": 76.0}, {"input": [76.0, 31.0], "expected": 76.0}, {"input": [76.0, 31.5], "expected": 76.0}, {"input": [76.0, 32.0], "expected": 76.0}, {"input": [76.0, 32.5], "expected": 76.0}, {"input": [76.0, 33.0], "expected": 76.0}, {"input": [76.0, 33.5], "expected": 76.0}, {"input": [76.0, 34.0], "expected": 76.0}, {"input": [76.0, 34.5], "expected": 76.0}, {"input": [76.0, 35.0], "expected": 76.0}, {"input": [76.0, 35.5], "expected": 76.0}, {"input": [76.0, 36.0], "expected": 76.0}, {"input": [76.0, 36.5], "expected": 76.0}, {"input": [76.0, 37.0], "expected": 76.0}, {"input": [76.0, 37.5], "expected": 76.0}, {"input": [76.0, 38.0], "expected": 76.0}, {"input": [76.0, 38.5], "expected": 76.0}, {"input": [76.0, 39.0], "expected": 76.0}, {"input": [76.0, 39.5], "expected": 76.0}, {"input": [76.0, 40.0], "expected": 76.0}, {"input": [76.0, 40.5], "expected": 76.0}, {"input": [76.0, 41.0], "expected": 76.0}, {"input": [76.0, 41.5], "expected": 76.0}, {"input": [76.0, 42.0], "expected": 76.0}, {"input": [76.0, 42.5], "expected": 76.0}, {"input": [76.0, 43.0], "expected": 76.0}, {"input": [76.0, 43.5], "expected": 76.00000000000001}, {"input": [76.0, 44.0], "expected": 76.00000000000001}, {"input": [76.0, 44.5], "expected": 76.00000000000001}, {"input": [76.0, 45.0], "expected": 76.00000000000003}, {"input": [76.0, 45.5], "expected": 76.00000000000006}, {"input": [76.0, 46.0], "expected": 76.0000000000001}, {"input": [76.0, 46.5], "expected": 76.00000000000016}, {"input": [76.0, 47.0], "expected": 76.00000000000026}, {"input": [76.0, 47.5], "expected": 76.00000000000043}, {"input": [76.0, 48.0], "expected": 76.0000000000007}, {"input": [76.0, 48.5], "expected": 76.00000000000114}, {"input": [76.0, 49.0], "expected": 76.00000000000188}, {"input": [76.0, 49.5], "expected": 76.0000000000031}, {"input": [76.0, 50.0], "expected": 76.00000000000512}, {"input": [76.0, 50.5], "expected": 76.00000000000843}, {"input": [76.0, 51.0], "expected": 76.00000000001388}, {"input": [76.0, 51.5], "expected": 76.0000000000229}, {"input": [76.0, 52.0], "expected": 76.00000000003776}, {"input": [76.0, 52.5], "expected": 76.00000000006224}, {"input": [76.0, 53.0], "expected": 76.00000000010262}, {"input": [76.0, 53.5], "expected": 76.0000000001692}, {"input": [76.0, 54.0], "expected": 76.00000000027894}, {"input": [76.0, 54.5], "expected": 76.0000000004599}, {"input": [76.0, 55.0], "expected": 76.00000000075826}, {"input": [76.0, 55.5], "expected": 76.00000000125016}, {"input": [76.0, 56.0], "expected": 76.00000000206116}, {"input": [76.0, 56.5], "expected": 76.00000000339827}, {"input": [76.0, 57.0], "expected": 76.0000000056028}, {"input": [76.0, 57.5], "expected": 76.00000000923745}, {"input": [76.0, 58.0], "expected": 76.00000001522999}, {"input": [76.0, 58.5], "expected": 76.00000002511}, {"input": [76.0, 59.0], "expected": 76.00000004139937}, {"input": [76.0, 59.5], "expected": 76.00000006825603}, {"input": [76.0, 60.0], "expected": 76.00000011253516}, {"input": [76.0, 60.5], "expected": 76.00000018553912}, {"input": [76.0, 61.0], "expected": 76.00000030590228}, {"input": [76.0, 61.5], "expected": 76.00000050434754}, {"input": [76.0, 62.0], "expected": 76.00000083152837}, {"input": [76.0, 62.5], "expected": 76.00000137095815}, {"input": [76.0, 63.0], "expected": 76.00000226032685}, {"input": [76.0, 63.5], "expected": 76.00000372664623}, {"input": [76.0, 64.0], "expected": 76.00000614419348}, {"input": [76.0, 64.5], "expected": 76.00001013004228}, {"input": [76.0, 65.0], "expected": 76.00001670156132}, {"input": [76.0, 65.5], "expected": 76.00002753607023}, {"input": [76.0, 66.0], "expected": 76.00004539889922}, {"input": [76.0, 66.5], "expected": 76.00007484902864}, {"input": [76.0, 67.0], "expected": 76.00012340218973}, {"input": [76.0, 67.5], "expected": 76.00020344767213}, {"input": [76.0, 68.0], "expected": 76.0003354063729}, {"input": [76.0, 68.5], "expected": 76.00055293147535}, {"input": [76.0, 69.0], "expected": 76.00091146645377}, {"input": [76.0, 69.5], "expected": 76.00150231015975}, {"input": [76.0, 70.0], "expected": 76.00247568513772}, {"input": [76.0, 70.5], "expected": 76.00407844327057}, {"input": [76.0, 71.0], "expected": 76.00671534848912}, {"input": [76.0, 71.5], "expected": 76.0110477448486}, {"input": [76.0, 72.0], "expected": 76.0181499279178}, {"input": [76.0, 72.5], "expected": 76.02975041827263}, {"input": [76.0, 73.0], "expected": 76.04858735157374}, {"input": [76.0, 73.5], "expected": 76.07888973429255}, {"input": [76.0, 74.0], "expected": 76.12692801104298}, {"input": [76.0, 74.5], "expected": 76.20141327798275}, {"input": [76.0, 75.0], "expected": 76.31326168751822}, {"input": [76.0, 75.5], "expected": 76.4740769841801}, {"input": [76.0, 76.0], "expected": 76.69314718055995}, {"input": [76.0, 76.5], "expected": 76.9740769841801}, {"input": [76.0, 77.0], "expected": 77.31326168751822}, {"input": [76.0, 77.5], "expected": 77.70141327798275}, {"input": [76.0, 78.0], "expected": 78.12692801104298}, {"input": [76.0, 78.5], "expected": 78.57888973429255}, {"input": [76.0, 79.0], "expected": 79.04858735157374}, {"input": [76.0, 79.5], "expected": 79.52975041827263}, {"input": [76.0, 80.0], "expected": 80.0181499279178}, {"input": [76.0, 80.5], "expected": 80.5110477448486}, {"input": [76.0, 81.0], "expected": 81.00671534848912}, {"input": [76.0, 81.5], "expected": 81.50407844327057}, {"input": [76.0, 82.0], "expected": 82.00247568513772}, {"input": [76.0, 82.5], "expected": 82.50150231015975}, {"input": [76.0, 83.0], "expected": 83.00091146645377}, {"input": [76.0, 83.5], "expected": 83.50055293147535}, {"input": [76.0, 84.0], "expected": 84.0003354063729}, {"input": [76.0, 84.5], "expected": 84.50020344767213}, {"input": [76.0, 85.0], "expected": 85.00012340218973}, {"input": [76.0, 85.5], "expected": 85.50007484902864}, {"input": [76.0, 86.0], "expected": 86.00004539889922}, {"input": [76.0, 86.5], "expected": 86.50002753607023}, {"input": [76.0, 87.0], "expected": 87.00001670156132}, {"input": [76.0, 87.5], "expected": 87.50001013004228}, {"input": [76.0, 88.0], "expected": 88.00000614419348}, {"input": [76.0, 88.5], "expected": 88.50000372664623}, {"input": [76.0, 89.0], "expected": 89.00000226032685}, {"input": [76.0, 89.5], "expected": 89.50000137095815}, {"input": [76.0, 90.0], "expected": 90.00000083152837}, {"input": [76.0, 90.5], "expected": 90.50000050434754}, {"input": [76.0, 91.0], "expected": 91.00000030590228}, {"input": [76.0, 91.5], "expected": 91.50000018553912}, {"input": [76.0, 92.0], "expected": 92.00000011253516}, {"input": [76.0, 92.5], "expected": 92.50000006825603}, {"input": [76.0, 93.0], "expected": 93.00000004139937}, {"input": [76.0, 93.5], "expected": 93.50000002511}, {"input": [76.0, 94.0], "expected": 94.00000001522999}, {"input": [76.0, 94.5], "expected": 94.50000000923745}, {"input": [76.0, 95.0], "expected": 95.0000000056028}, {"input": [76.0, 95.5], "expected": 95.50000000339827}, {"input": [76.0, 96.0], "expected": 96.00000000206116}, {"input": [76.0, 96.5], "expected": 96.50000000125016}, {"input": [76.0, 97.0], "expected": 97.00000000075826}, {"input": [76.0, 97.5], "expected": 97.5000000004599}, {"input": [76.0, 98.0], "expected": 98.00000000027894}, {"input": [76.0, 98.5], "expected": 98.5000000001692}, {"input": [76.0, 99.0], "expected": 99.00000000010262}, {"input": [76.0, 99.5], "expected": 99.50000000006224}, {"input": [76.5, -100.0], "expected": 76.5}, {"input": [76.5, -99.5], "expected": 76.5}, {"input": [76.5, -99.0], "expected": 76.5}, {"input": [76.5, -98.5], "expected": 76.5}, {"input": [76.5, -98.0], "expected": 76.5}, {"input": [76.5, -97.5], "expected": 76.5}, {"input": [76.5, -97.0], "expected": 76.5}, {"input": [76.5, -96.5], "expected": 76.5}, {"input": [76.5, -96.0], "expected": 76.5}, {"input": [76.5, -95.5], "expected": 76.5}, {"input": [76.5, -95.0], "expected": 76.5}, {"input": [76.5, -94.5], "expected": 76.5}, {"input": [76.5, -94.0], "expected": 76.5}, {"input": [76.5, -93.5], "expected": 76.5}, {"input": [76.5, -93.0], "expected": 76.5}, {"input": [76.5, -92.5], "expected": 76.5}, {"input": [76.5, -92.0], "expected": 76.5}, {"input": [76.5, -91.5], "expected": 76.5}, {"input": [76.5, -91.0], "expected": 76.5}, {"input": [76.5, -90.5], "expected": 76.5}, {"input": [76.5, -90.0], "expected": 76.5}, {"input": [76.5, -89.5], "expected": 76.5}, {"input": [76.5, -89.0], "expected": 76.5}, {"input": [76.5, -88.5], "expected": 76.5}, {"input": [76.5, -88.0], "expected": 76.5}, {"input": [76.5, -87.5], "expected": 76.5}, {"input": [76.5, -87.0], "expected": 76.5}, {"input": [76.5, -86.5], "expected": 76.5}, {"input": [76.5, -86.0], "expected": 76.5}, {"input": [76.5, -85.5], "expected": 76.5}, {"input": [76.5, -85.0], "expected": 76.5}, {"input": [76.5, -84.5], "expected": 76.5}, {"input": [76.5, -84.0], "expected": 76.5}, {"input": [76.5, -83.5], "expected": 76.5}, {"input": [76.5, -83.0], "expected": 76.5}, {"input": [76.5, -82.5], "expected": 76.5}, {"input": [76.5, -82.0], "expected": 76.5}, {"input": [76.5, -81.5], "expected": 76.5}, {"input": [76.5, -81.0], "expected": 76.5}, {"input": [76.5, -80.5], "expected": 76.5}, {"input": [76.5, -80.0], "expected": 76.5}, {"input": [76.5, -79.5], "expected": 76.5}, {"input": [76.5, -79.0], "expected": 76.5}, {"input": [76.5, -78.5], "expected": 76.5}, {"input": [76.5, -78.0], "expected": 76.5}, {"input": [76.5, -77.5], "expected": 76.5}, {"input": [76.5, -77.0], "expected": 76.5}, {"input": [76.5, -76.5], "expected": 76.5}, {"input": [76.5, -76.0], "expected": 76.5}, {"input": [76.5, -75.5], "expected": 76.5}, {"input": [76.5, -75.0], "expected": 76.5}, {"input": [76.5, -74.5], "expected": 76.5}, {"input": [76.5, -74.0], "expected": 76.5}, {"input": [76.5, -73.5], "expected": 76.5}, {"input": [76.5, -73.0], "expected": 76.5}, {"input": [76.5, -72.5], "expected": 76.5}, {"input": [76.5, -72.0], "expected": 76.5}, {"input": [76.5, -71.5], "expected": 76.5}, {"input": [76.5, -71.0], "expected": 76.5}, {"input": [76.5, -70.5], "expected": 76.5}, {"input": [76.5, -70.0], "expected": 76.5}, {"input": [76.5, -69.5], "expected": 76.5}, {"input": [76.5, -69.0], "expected": 76.5}, {"input": [76.5, -68.5], "expected": 76.5}, {"input": [76.5, -68.0], "expected": 76.5}, {"input": [76.5, -67.5], "expected": 76.5}, {"input": [76.5, -67.0], "expected": 76.5}, {"input": [76.5, -66.5], "expected": 76.5}, {"input": [76.5, -66.0], "expected": 76.5}, {"input": [76.5, -65.5], "expected": 76.5}, {"input": [76.5, -65.0], "expected": 76.5}, {"input": [76.5, -64.5], "expected": 76.5}, {"input": [76.5, -64.0], "expected": 76.5}, {"input": [76.5, -63.5], "expected": 76.5}, {"input": [76.5, -63.0], "expected": 76.5}, {"input": [76.5, -62.5], "expected": 76.5}, {"input": [76.5, -62.0], "expected": 76.5}, {"input": [76.5, -61.5], "expected": 76.5}, {"input": [76.5, -61.0], "expected": 76.5}, {"input": [76.5, -60.5], "expected": 76.5}, {"input": [76.5, -60.0], "expected": 76.5}, {"input": [76.5, -59.5], "expected": 76.5}, {"input": [76.5, -59.0], "expected": 76.5}, {"input": [76.5, -58.5], "expected": 76.5}, {"input": [76.5, -58.0], "expected": 76.5}, {"input": [76.5, -57.5], "expected": 76.5}, {"input": [76.5, -57.0], "expected": 76.5}, {"input": [76.5, -56.5], "expected": 76.5}, {"input": [76.5, -56.0], "expected": 76.5}, {"input": [76.5, -55.5], "expected": 76.5}, {"input": [76.5, -55.0], "expected": 76.5}, {"input": [76.5, -54.5], "expected": 76.5}, {"input": [76.5, -54.0], "expected": 76.5}, {"input": [76.5, -53.5], "expected": 76.5}, {"input": [76.5, -53.0], "expected": 76.5}, {"input": [76.5, -52.5], "expected": 76.5}, {"input": [76.5, -52.0], "expected": 76.5}, {"input": [76.5, -51.5], "expected": 76.5}, {"input": [76.5, -51.0], "expected": 76.5}, {"input": [76.5, -50.5], "expected": 76.5}, {"input": [76.5, -50.0], "expected": 76.5}, {"input": [76.5, -49.5], "expected": 76.5}, {"input": [76.5, -49.0], "expected": 76.5}, {"input": [76.5, -48.5], "expected": 76.5}, {"input": [76.5, -48.0], "expected": 76.5}, {"input": [76.5, -47.5], "expected": 76.5}, {"input": [76.5, -47.0], "expected": 76.5}, {"input": [76.5, -46.5], "expected": 76.5}, {"input": [76.5, -46.0], "expected": 76.5}, {"input": [76.5, -45.5], "expected": 76.5}, {"input": [76.5, -45.0], "expected": 76.5}, {"input": [76.5, -44.5], "expected": 76.5}, {"input": [76.5, -44.0], "expected": 76.5}, {"input": [76.5, -43.5], "expected": 76.5}, {"input": [76.5, -43.0], "expected": 76.5}, {"input": [76.5, -42.5], "expected": 76.5}, {"input": [76.5, -42.0], "expected": 76.5}, {"input": [76.5, -41.5], "expected": 76.5}, {"input": [76.5, -41.0], "expected": 76.5}, {"input": [76.5, -40.5], "expected": 76.5}, {"input": [76.5, -40.0], "expected": 76.5}, {"input": [76.5, -39.5], "expected": 76.5}, {"input": [76.5, -39.0], "expected": 76.5}, {"input": [76.5, -38.5], "expected": 76.5}, {"input": [76.5, -38.0], "expected": 76.5}, {"input": [76.5, -37.5], "expected": 76.5}, {"input": [76.5, -37.0], "expected": 76.5}, {"input": [76.5, -36.5], "expected": 76.5}, {"input": [76.5, -36.0], "expected": 76.5}, {"input": [76.5, -35.5], "expected": 76.5}, {"input": [76.5, -35.0], "expected": 76.5}, {"input": [76.5, -34.5], "expected": 76.5}, {"input": [76.5, -34.0], "expected": 76.5}, {"input": [76.5, -33.5], "expected": 76.5}, {"input": [76.5, -33.0], "expected": 76.5}, {"input": [76.5, -32.5], "expected": 76.5}, {"input": [76.5, -32.0], "expected": 76.5}, {"input": [76.5, -31.5], "expected": 76.5}, {"input": [76.5, -31.0], "expected": 76.5}, {"input": [76.5, -30.5], "expected": 76.5}, {"input": [76.5, -30.0], "expected": 76.5}, {"input": [76.5, -29.5], "expected": 76.5}, {"input": [76.5, -29.0], "expected": 76.5}, {"input": [76.5, -28.5], "expected": 76.5}, {"input": [76.5, -28.0], "expected": 76.5}, {"input": [76.5, -27.5], "expected": 76.5}, {"input": [76.5, -27.0], "expected": 76.5}, {"input": [76.5, -26.5], "expected": 76.5}, {"input": [76.5, -26.0], "expected": 76.5}, {"input": [76.5, -25.5], "expected": 76.5}, {"input": [76.5, -25.0], "expected": 76.5}, {"input": [76.5, -24.5], "expected": 76.5}, {"input": [76.5, -24.0], "expected": 76.5}, {"input": [76.5, -23.5], "expected": 76.5}, {"input": [76.5, -23.0], "expected": 76.5}, {"input": [76.5, -22.5], "expected": 76.5}, {"input": [76.5, -22.0], "expected": 76.5}, {"input": [76.5, -21.5], "expected": 76.5}, {"input": [76.5, -21.0], "expected": 76.5}, {"input": [76.5, -20.5], "expected": 76.5}, {"input": [76.5, -20.0], "expected": 76.5}, {"input": [76.5, -19.5], "expected": 76.5}, {"input": [76.5, -19.0], "expected": 76.5}, {"input": [76.5, -18.5], "expected": 76.5}, {"input": [76.5, -18.0], "expected": 76.5}, {"input": [76.5, -17.5], "expected": 76.5}, {"input": [76.5, -17.0], "expected": 76.5}, {"input": [76.5, -16.5], "expected": 76.5}, {"input": [76.5, -16.0], "expected": 76.5}, {"input": [76.5, -15.5], "expected": 76.5}, {"input": [76.5, -15.0], "expected": 76.5}, {"input": [76.5, -14.5], "expected": 76.5}, {"input": [76.5, -14.0], "expected": 76.5}, {"input": [76.5, -13.5], "expected": 76.5}, {"input": [76.5, -13.0], "expected": 76.5}, {"input": [76.5, -12.5], "expected": 76.5}, {"input": [76.5, -12.0], "expected": 76.5}, {"input": [76.5, -11.5], "expected": 76.5}, {"input": [76.5, -11.0], "expected": 76.5}, {"input": [76.5, -10.5], "expected": 76.5}, {"input": [76.5, -10.0], "expected": 76.5}, {"input": [76.5, -9.5], "expected": 76.5}, {"input": [76.5, -9.0], "expected": 76.5}, {"input": [76.5, -8.5], "expected": 76.5}, {"input": [76.5, -8.0], "expected": 76.5}, {"input": [76.5, -7.5], "expected": 76.5}, {"input": [76.5, -7.0], "expected": 76.5}, {"input": [76.5, -6.5], "expected": 76.5}, {"input": [76.5, -6.0], "expected": 76.5}, {"input": [76.5, -5.5], "expected": 76.5}, {"input": [76.5, -5.0], "expected": 76.5}, {"input": [76.5, -4.5], "expected": 76.5}, {"input": [76.5, -4.0], "expected": 76.5}, {"input": [76.5, -3.5], "expected": 76.5}, {"input": [76.5, -3.0], "expected": 76.5}, {"input": [76.5, -2.5], "expected": 76.5}, {"input": [76.5, -2.0], "expected": 76.5}, {"input": [76.5, -1.5], "expected": 76.5}, {"input": [76.5, -1.0], "expected": 76.5}, {"input": [76.5, -0.5], "expected": 76.5}, {"input": [76.5, 0.0], "expected": 76.5}, {"input": [76.5, 0.5], "expected": 76.5}, {"input": [76.5, 1.0], "expected": 76.5}, {"input": [76.5, 1.5], "expected": 76.5}, {"input": [76.5, 2.0], "expected": 76.5}, {"input": [76.5, 2.5], "expected": 76.5}, {"input": [76.5, 3.0], "expected": 76.5}, {"input": [76.5, 3.5], "expected": 76.5}, {"input": [76.5, 4.0], "expected": 76.5}, {"input": [76.5, 4.5], "expected": 76.5}, {"input": [76.5, 5.0], "expected": 76.5}, {"input": [76.5, 5.5], "expected": 76.5}, {"input": [76.5, 6.0], "expected": 76.5}, {"input": [76.5, 6.5], "expected": 76.5}, {"input": [76.5, 7.0], "expected": 76.5}, {"input": [76.5, 7.5], "expected": 76.5}, {"input": [76.5, 8.0], "expected": 76.5}, {"input": [76.5, 8.5], "expected": 76.5}, {"input": [76.5, 9.0], "expected": 76.5}, {"input": [76.5, 9.5], "expected": 76.5}, {"input": [76.5, 10.0], "expected": 76.5}, {"input": [76.5, 10.5], "expected": 76.5}, {"input": [76.5, 11.0], "expected": 76.5}, {"input": [76.5, 11.5], "expected": 76.5}, {"input": [76.5, 12.0], "expected": 76.5}, {"input": [76.5, 12.5], "expected": 76.5}, {"input": [76.5, 13.0], "expected": 76.5}, {"input": [76.5, 13.5], "expected": 76.5}, {"input": [76.5, 14.0], "expected": 76.5}, {"input": [76.5, 14.5], "expected": 76.5}, {"input": [76.5, 15.0], "expected": 76.5}, {"input": [76.5, 15.5], "expected": 76.5}, {"input": [76.5, 16.0], "expected": 76.5}, {"input": [76.5, 16.5], "expected": 76.5}, {"input": [76.5, 17.0], "expected": 76.5}, {"input": [76.5, 17.5], "expected": 76.5}, {"input": [76.5, 18.0], "expected": 76.5}, {"input": [76.5, 18.5], "expected": 76.5}, {"input": [76.5, 19.0], "expected": 76.5}, {"input": [76.5, 19.5], "expected": 76.5}, {"input": [76.5, 20.0], "expected": 76.5}, {"input": [76.5, 20.5], "expected": 76.5}, {"input": [76.5, 21.0], "expected": 76.5}, {"input": [76.5, 21.5], "expected": 76.5}, {"input": [76.5, 22.0], "expected": 76.5}, {"input": [76.5, 22.5], "expected": 76.5}, {"input": [76.5, 23.0], "expected": 76.5}, {"input": [76.5, 23.5], "expected": 76.5}, {"input": [76.5, 24.0], "expected": 76.5}, {"input": [76.5, 24.5], "expected": 76.5}, {"input": [76.5, 25.0], "expected": 76.5}, {"input": [76.5, 25.5], "expected": 76.5}, {"input": [76.5, 26.0], "expected": 76.5}, {"input": [76.5, 26.5], "expected": 76.5}, {"input": [76.5, 27.0], "expected": 76.5}, {"input": [76.5, 27.5], "expected": 76.5}, {"input": [76.5, 28.0], "expected": 76.5}, {"input": [76.5, 28.5], "expected": 76.5}, {"input": [76.5, 29.0], "expected": 76.5}, {"input": [76.5, 29.5], "expected": 76.5}, {"input": [76.5, 30.0], "expected": 76.5}, {"input": [76.5, 30.5], "expected": 76.5}, {"input": [76.5, 31.0], "expected": 76.5}, {"input": [76.5, 31.5], "expected": 76.5}, {"input": [76.5, 32.0], "expected": 76.5}, {"input": [76.5, 32.5], "expected": 76.5}, {"input": [76.5, 33.0], "expected": 76.5}, {"input": [76.5, 33.5], "expected": 76.5}, {"input": [76.5, 34.0], "expected": 76.5}, {"input": [76.5, 34.5], "expected": 76.5}, {"input": [76.5, 35.0], "expected": 76.5}, {"input": [76.5, 35.5], "expected": 76.5}, {"input": [76.5, 36.0], "expected": 76.5}, {"input": [76.5, 36.5], "expected": 76.5}, {"input": [76.5, 37.0], "expected": 76.5}, {"input": [76.5, 37.5], "expected": 76.5}, {"input": [76.5, 38.0], "expected": 76.5}, {"input": [76.5, 38.5], "expected": 76.5}, {"input": [76.5, 39.0], "expected": 76.5}, {"input": [76.5, 39.5], "expected": 76.5}, {"input": [76.5, 40.0], "expected": 76.5}, {"input": [76.5, 40.5], "expected": 76.5}, {"input": [76.5, 41.0], "expected": 76.5}, {"input": [76.5, 41.5], "expected": 76.5}, {"input": [76.5, 42.0], "expected": 76.5}, {"input": [76.5, 42.5], "expected": 76.5}, {"input": [76.5, 43.0], "expected": 76.5}, {"input": [76.5, 43.5], "expected": 76.5}, {"input": [76.5, 44.0], "expected": 76.50000000000001}, {"input": [76.5, 44.5], "expected": 76.50000000000001}, {"input": [76.5, 45.0], "expected": 76.50000000000001}, {"input": [76.5, 45.5], "expected": 76.50000000000003}, {"input": [76.5, 46.0], "expected": 76.50000000000006}, {"input": [76.5, 46.5], "expected": 76.5000000000001}, {"input": [76.5, 47.0], "expected": 76.50000000000016}, {"input": [76.5, 47.5], "expected": 76.50000000000026}, {"input": [76.5, 48.0], "expected": 76.50000000000043}, {"input": [76.5, 48.5], "expected": 76.5000000000007}, {"input": [76.5, 49.0], "expected": 76.50000000000114}, {"input": [76.5, 49.5], "expected": 76.50000000000188}, {"input": [76.5, 50.0], "expected": 76.5000000000031}, {"input": [76.5, 50.5], "expected": 76.50000000000512}, {"input": [76.5, 51.0], "expected": 76.50000000000843}, {"input": [76.5, 51.5], "expected": 76.50000000001388}, {"input": [76.5, 52.0], "expected": 76.5000000000229}, {"input": [76.5, 52.5], "expected": 76.50000000003776}, {"input": [76.5, 53.0], "expected": 76.50000000006224}, {"input": [76.5, 53.5], "expected": 76.50000000010262}, {"input": [76.5, 54.0], "expected": 76.5000000001692}, {"input": [76.5, 54.5], "expected": 76.50000000027894}, {"input": [76.5, 55.0], "expected": 76.5000000004599}, {"input": [76.5, 55.5], "expected": 76.50000000075826}, {"input": [76.5, 56.0], "expected": 76.50000000125016}, {"input": [76.5, 56.5], "expected": 76.50000000206116}, {"input": [76.5, 57.0], "expected": 76.50000000339827}, {"input": [76.5, 57.5], "expected": 76.5000000056028}, {"input": [76.5, 58.0], "expected": 76.50000000923745}, {"input": [76.5, 58.5], "expected": 76.50000001522999}, {"input": [76.5, 59.0], "expected": 76.50000002511}, {"input": [76.5, 59.5], "expected": 76.50000004139937}, {"input": [76.5, 60.0], "expected": 76.50000006825603}, {"input": [76.5, 60.5], "expected": 76.50000011253516}, {"input": [76.5, 61.0], "expected": 76.50000018553912}, {"input": [76.5, 61.5], "expected": 76.50000030590228}, {"input": [76.5, 62.0], "expected": 76.50000050434754}, {"input": [76.5, 62.5], "expected": 76.50000083152837}, {"input": [76.5, 63.0], "expected": 76.50000137095815}, {"input": [76.5, 63.5], "expected": 76.50000226032685}, {"input": [76.5, 64.0], "expected": 76.50000372664623}, {"input": [76.5, 64.5], "expected": 76.50000614419348}, {"input": [76.5, 65.0], "expected": 76.50001013004228}, {"input": [76.5, 65.5], "expected": 76.50001670156132}, {"input": [76.5, 66.0], "expected": 76.50002753607023}, {"input": [76.5, 66.5], "expected": 76.50004539889922}, {"input": [76.5, 67.0], "expected": 76.50007484902864}, {"input": [76.5, 67.5], "expected": 76.50012340218973}, {"input": [76.5, 68.0], "expected": 76.50020344767213}, {"input": [76.5, 68.5], "expected": 76.5003354063729}, {"input": [76.5, 69.0], "expected": 76.50055293147535}, {"input": [76.5, 69.5], "expected": 76.50091146645377}, {"input": [76.5, 70.0], "expected": 76.50150231015975}, {"input": [76.5, 70.5], "expected": 76.50247568513772}, {"input": [76.5, 71.0], "expected": 76.50407844327057}, {"input": [76.5, 71.5], "expected": 76.50671534848912}, {"input": [76.5, 72.0], "expected": 76.5110477448486}, {"input": [76.5, 72.5], "expected": 76.5181499279178}, {"input": [76.5, 73.0], "expected": 76.52975041827263}, {"input": [76.5, 73.5], "expected": 76.54858735157374}, {"input": [76.5, 74.0], "expected": 76.57888973429255}, {"input": [76.5, 74.5], "expected": 76.62692801104298}, {"input": [76.5, 75.0], "expected": 76.70141327798275}, {"input": [76.5, 75.5], "expected": 76.81326168751822}, {"input": [76.5, 76.0], "expected": 76.9740769841801}, {"input": [76.5, 76.5], "expected": 77.19314718055995}, {"input": [76.5, 77.0], "expected": 77.4740769841801}, {"input": [76.5, 77.5], "expected": 77.81326168751822}, {"input": [76.5, 78.0], "expected": 78.20141327798275}, {"input": [76.5, 78.5], "expected": 78.62692801104298}, {"input": [76.5, 79.0], "expected": 79.07888973429255}, {"input": [76.5, 79.5], "expected": 79.54858735157374}, {"input": [76.5, 80.0], "expected": 80.02975041827263}, {"input": [76.5, 80.5], "expected": 80.5181499279178}, {"input": [76.5, 81.0], "expected": 81.0110477448486}, {"input": [76.5, 81.5], "expected": 81.50671534848912}, {"input": [76.5, 82.0], "expected": 82.00407844327057}, {"input": [76.5, 82.5], "expected": 82.50247568513772}, {"input": [76.5, 83.0], "expected": 83.00150231015975}, {"input": [76.5, 83.5], "expected": 83.50091146645377}, {"input": [76.5, 84.0], "expected": 84.00055293147535}, {"input": [76.5, 84.5], "expected": 84.5003354063729}, {"input": [76.5, 85.0], "expected": 85.00020344767213}, {"input": [76.5, 85.5], "expected": 85.50012340218973}, {"input": [76.5, 86.0], "expected": 86.00007484902864}, {"input": [76.5, 86.5], "expected": 86.50004539889922}, {"input": [76.5, 87.0], "expected": 87.00002753607023}, {"input": [76.5, 87.5], "expected": 87.50001670156132}, {"input": [76.5, 88.0], "expected": 88.00001013004228}, {"input": [76.5, 88.5], "expected": 88.50000614419348}, {"input": [76.5, 89.0], "expected": 89.00000372664623}, {"input": [76.5, 89.5], "expected": 89.50000226032685}, {"input": [76.5, 90.0], "expected": 90.00000137095815}, {"input": [76.5, 90.5], "expected": 90.50000083152837}, {"input": [76.5, 91.0], "expected": 91.00000050434754}, {"input": [76.5, 91.5], "expected": 91.50000030590228}, {"input": [76.5, 92.0], "expected": 92.00000018553912}, {"input": [76.5, 92.5], "expected": 92.50000011253516}, {"input": [76.5, 93.0], "expected": 93.00000006825603}, {"input": [76.5, 93.5], "expected": 93.50000004139937}, {"input": [76.5, 94.0], "expected": 94.00000002511}, {"input": [76.5, 94.5], "expected": 94.50000001522999}, {"input": [76.5, 95.0], "expected": 95.00000000923745}, {"input": [76.5, 95.5], "expected": 95.5000000056028}, {"input": [76.5, 96.0], "expected": 96.00000000339827}, {"input": [76.5, 96.5], "expected": 96.50000000206116}, {"input": [76.5, 97.0], "expected": 97.00000000125016}, {"input": [76.5, 97.5], "expected": 97.50000000075826}, {"input": [76.5, 98.0], "expected": 98.0000000004599}, {"input": [76.5, 98.5], "expected": 98.50000000027894}, {"input": [76.5, 99.0], "expected": 99.0000000001692}, {"input": [76.5, 99.5], "expected": 99.50000000010262}, {"input": [77.0, -100.0], "expected": 77.0}, {"input": [77.0, -99.5], "expected": 77.0}, {"input": [77.0, -99.0], "expected": 77.0}, {"input": [77.0, -98.5], "expected": 77.0}, {"input": [77.0, -98.0], "expected": 77.0}, {"input": [77.0, -97.5], "expected": 77.0}, {"input": [77.0, -97.0], "expected": 77.0}, {"input": [77.0, -96.5], "expected": 77.0}, {"input": [77.0, -96.0], "expected": 77.0}, {"input": [77.0, -95.5], "expected": 77.0}, {"input": [77.0, -95.0], "expected": 77.0}, {"input": [77.0, -94.5], "expected": 77.0}, {"input": [77.0, -94.0], "expected": 77.0}, {"input": [77.0, -93.5], "expected": 77.0}, {"input": [77.0, -93.0], "expected": 77.0}, {"input": [77.0, -92.5], "expected": 77.0}, {"input": [77.0, -92.0], "expected": 77.0}, {"input": [77.0, -91.5], "expected": 77.0}, {"input": [77.0, -91.0], "expected": 77.0}, {"input": [77.0, -90.5], "expected": 77.0}, {"input": [77.0, -90.0], "expected": 77.0}, {"input": [77.0, -89.5], "expected": 77.0}, {"input": [77.0, -89.0], "expected": 77.0}, {"input": [77.0, -88.5], "expected": 77.0}, {"input": [77.0, -88.0], "expected": 77.0}, {"input": [77.0, -87.5], "expected": 77.0}, {"input": [77.0, -87.0], "expected": 77.0}, {"input": [77.0, -86.5], "expected": 77.0}, {"input": [77.0, -86.0], "expected": 77.0}, {"input": [77.0, -85.5], "expected": 77.0}, {"input": [77.0, -85.0], "expected": 77.0}, {"input": [77.0, -84.5], "expected": 77.0}, {"input": [77.0, -84.0], "expected": 77.0}, {"input": [77.0, -83.5], "expected": 77.0}, {"input": [77.0, -83.0], "expected": 77.0}, {"input": [77.0, -82.5], "expected": 77.0}, {"input": [77.0, -82.0], "expected": 77.0}, {"input": [77.0, -81.5], "expected": 77.0}, {"input": [77.0, -81.0], "expected": 77.0}, {"input": [77.0, -80.5], "expected": 77.0}, {"input": [77.0, -80.0], "expected": 77.0}, {"input": [77.0, -79.5], "expected": 77.0}, {"input": [77.0, -79.0], "expected": 77.0}, {"input": [77.0, -78.5], "expected": 77.0}, {"input": [77.0, -78.0], "expected": 77.0}, {"input": [77.0, -77.5], "expected": 77.0}, {"input": [77.0, -77.0], "expected": 77.0}, {"input": [77.0, -76.5], "expected": 77.0}, {"input": [77.0, -76.0], "expected": 77.0}, {"input": [77.0, -75.5], "expected": 77.0}, {"input": [77.0, -75.0], "expected": 77.0}, {"input": [77.0, -74.5], "expected": 77.0}, {"input": [77.0, -74.0], "expected": 77.0}, {"input": [77.0, -73.5], "expected": 77.0}, {"input": [77.0, -73.0], "expected": 77.0}, {"input": [77.0, -72.5], "expected": 77.0}, {"input": [77.0, -72.0], "expected": 77.0}, {"input": [77.0, -71.5], "expected": 77.0}, {"input": [77.0, -71.0], "expected": 77.0}, {"input": [77.0, -70.5], "expected": 77.0}, {"input": [77.0, -70.0], "expected": 77.0}, {"input": [77.0, -69.5], "expected": 77.0}, {"input": [77.0, -69.0], "expected": 77.0}, {"input": [77.0, -68.5], "expected": 77.0}, {"input": [77.0, -68.0], "expected": 77.0}, {"input": [77.0, -67.5], "expected": 77.0}, {"input": [77.0, -67.0], "expected": 77.0}, {"input": [77.0, -66.5], "expected": 77.0}, {"input": [77.0, -66.0], "expected": 77.0}, {"input": [77.0, -65.5], "expected": 77.0}, {"input": [77.0, -65.0], "expected": 77.0}, {"input": [77.0, -64.5], "expected": 77.0}, {"input": [77.0, -64.0], "expected": 77.0}, {"input": [77.0, -63.5], "expected": 77.0}, {"input": [77.0, -63.0], "expected": 77.0}, {"input": [77.0, -62.5], "expected": 77.0}, {"input": [77.0, -62.0], "expected": 77.0}, {"input": [77.0, -61.5], "expected": 77.0}, {"input": [77.0, -61.0], "expected": 77.0}, {"input": [77.0, -60.5], "expected": 77.0}, {"input": [77.0, -60.0], "expected": 77.0}, {"input": [77.0, -59.5], "expected": 77.0}, {"input": [77.0, -59.0], "expected": 77.0}, {"input": [77.0, -58.5], "expected": 77.0}, {"input": [77.0, -58.0], "expected": 77.0}, {"input": [77.0, -57.5], "expected": 77.0}, {"input": [77.0, -57.0], "expected": 77.0}, {"input": [77.0, -56.5], "expected": 77.0}, {"input": [77.0, -56.0], "expected": 77.0}, {"input": [77.0, -55.5], "expected": 77.0}, {"input": [77.0, -55.0], "expected": 77.0}, {"input": [77.0, -54.5], "expected": 77.0}, {"input": [77.0, -54.0], "expected": 77.0}, {"input": [77.0, -53.5], "expected": 77.0}, {"input": [77.0, -53.0], "expected": 77.0}, {"input": [77.0, -52.5], "expected": 77.0}, {"input": [77.0, -52.0], "expected": 77.0}, {"input": [77.0, -51.5], "expected": 77.0}, {"input": [77.0, -51.0], "expected": 77.0}, {"input": [77.0, -50.5], "expected": 77.0}, {"input": [77.0, -50.0], "expected": 77.0}, {"input": [77.0, -49.5], "expected": 77.0}, {"input": [77.0, -49.0], "expected": 77.0}, {"input": [77.0, -48.5], "expected": 77.0}, {"input": [77.0, -48.0], "expected": 77.0}, {"input": [77.0, -47.5], "expected": 77.0}, {"input": [77.0, -47.0], "expected": 77.0}, {"input": [77.0, -46.5], "expected": 77.0}, {"input": [77.0, -46.0], "expected": 77.0}, {"input": [77.0, -45.5], "expected": 77.0}, {"input": [77.0, -45.0], "expected": 77.0}, {"input": [77.0, -44.5], "expected": 77.0}, {"input": [77.0, -44.0], "expected": 77.0}, {"input": [77.0, -43.5], "expected": 77.0}, {"input": [77.0, -43.0], "expected": 77.0}, {"input": [77.0, -42.5], "expected": 77.0}, {"input": [77.0, -42.0], "expected": 77.0}, {"input": [77.0, -41.5], "expected": 77.0}, {"input": [77.0, -41.0], "expected": 77.0}, {"input": [77.0, -40.5], "expected": 77.0}, {"input": [77.0, -40.0], "expected": 77.0}, {"input": [77.0, -39.5], "expected": 77.0}, {"input": [77.0, -39.0], "expected": 77.0}, {"input": [77.0, -38.5], "expected": 77.0}, {"input": [77.0, -38.0], "expected": 77.0}, {"input": [77.0, -37.5], "expected": 77.0}, {"input": [77.0, -37.0], "expected": 77.0}, {"input": [77.0, -36.5], "expected": 77.0}, {"input": [77.0, -36.0], "expected": 77.0}, {"input": [77.0, -35.5], "expected": 77.0}, {"input": [77.0, -35.0], "expected": 77.0}, {"input": [77.0, -34.5], "expected": 77.0}, {"input": [77.0, -34.0], "expected": 77.0}, {"input": [77.0, -33.5], "expected": 77.0}, {"input": [77.0, -33.0], "expected": 77.0}, {"input": [77.0, -32.5], "expected": 77.0}, {"input": [77.0, -32.0], "expected": 77.0}, {"input": [77.0, -31.5], "expected": 77.0}, {"input": [77.0, -31.0], "expected": 77.0}, {"input": [77.0, -30.5], "expected": 77.0}, {"input": [77.0, -30.0], "expected": 77.0}, {"input": [77.0, -29.5], "expected": 77.0}, {"input": [77.0, -29.0], "expected": 77.0}, {"input": [77.0, -28.5], "expected": 77.0}, {"input": [77.0, -28.0], "expected": 77.0}, {"input": [77.0, -27.5], "expected": 77.0}, {"input": [77.0, -27.0], "expected": 77.0}, {"input": [77.0, -26.5], "expected": 77.0}, {"input": [77.0, -26.0], "expected": 77.0}, {"input": [77.0, -25.5], "expected": 77.0}, {"input": [77.0, -25.0], "expected": 77.0}, {"input": [77.0, -24.5], "expected": 77.0}, {"input": [77.0, -24.0], "expected": 77.0}, {"input": [77.0, -23.5], "expected": 77.0}, {"input": [77.0, -23.0], "expected": 77.0}, {"input": [77.0, -22.5], "expected": 77.0}, {"input": [77.0, -22.0], "expected": 77.0}, {"input": [77.0, -21.5], "expected": 77.0}, {"input": [77.0, -21.0], "expected": 77.0}, {"input": [77.0, -20.5], "expected": 77.0}, {"input": [77.0, -20.0], "expected": 77.0}, {"input": [77.0, -19.5], "expected": 77.0}, {"input": [77.0, -19.0], "expected": 77.0}, {"input": [77.0, -18.5], "expected": 77.0}, {"input": [77.0, -18.0], "expected": 77.0}, {"input": [77.0, -17.5], "expected": 77.0}, {"input": [77.0, -17.0], "expected": 77.0}, {"input": [77.0, -16.5], "expected": 77.0}, {"input": [77.0, -16.0], "expected": 77.0}, {"input": [77.0, -15.5], "expected": 77.0}, {"input": [77.0, -15.0], "expected": 77.0}, {"input": [77.0, -14.5], "expected": 77.0}, {"input": [77.0, -14.0], "expected": 77.0}, {"input": [77.0, -13.5], "expected": 77.0}, {"input": [77.0, -13.0], "expected": 77.0}, {"input": [77.0, -12.5], "expected": 77.0}, {"input": [77.0, -12.0], "expected": 77.0}, {"input": [77.0, -11.5], "expected": 77.0}, {"input": [77.0, -11.0], "expected": 77.0}, {"input": [77.0, -10.5], "expected": 77.0}, {"input": [77.0, -10.0], "expected": 77.0}, {"input": [77.0, -9.5], "expected": 77.0}, {"input": [77.0, -9.0], "expected": 77.0}, {"input": [77.0, -8.5], "expected": 77.0}, {"input": [77.0, -8.0], "expected": 77.0}, {"input": [77.0, -7.5], "expected": 77.0}, {"input": [77.0, -7.0], "expected": 77.0}, {"input": [77.0, -6.5], "expected": 77.0}, {"input": [77.0, -6.0], "expected": 77.0}, {"input": [77.0, -5.5], "expected": 77.0}, {"input": [77.0, -5.0], "expected": 77.0}, {"input": [77.0, -4.5], "expected": 77.0}, {"input": [77.0, -4.0], "expected": 77.0}, {"input": [77.0, -3.5], "expected": 77.0}, {"input": [77.0, -3.0], "expected": 77.0}, {"input": [77.0, -2.5], "expected": 77.0}, {"input": [77.0, -2.0], "expected": 77.0}, {"input": [77.0, -1.5], "expected": 77.0}, {"input": [77.0, -1.0], "expected": 77.0}, {"input": [77.0, -0.5], "expected": 77.0}, {"input": [77.0, 0.0], "expected": 77.0}, {"input": [77.0, 0.5], "expected": 77.0}, {"input": [77.0, 1.0], "expected": 77.0}, {"input": [77.0, 1.5], "expected": 77.0}, {"input": [77.0, 2.0], "expected": 77.0}, {"input": [77.0, 2.5], "expected": 77.0}, {"input": [77.0, 3.0], "expected": 77.0}, {"input": [77.0, 3.5], "expected": 77.0}, {"input": [77.0, 4.0], "expected": 77.0}, {"input": [77.0, 4.5], "expected": 77.0}, {"input": [77.0, 5.0], "expected": 77.0}, {"input": [77.0, 5.5], "expected": 77.0}, {"input": [77.0, 6.0], "expected": 77.0}, {"input": [77.0, 6.5], "expected": 77.0}, {"input": [77.0, 7.0], "expected": 77.0}, {"input": [77.0, 7.5], "expected": 77.0}, {"input": [77.0, 8.0], "expected": 77.0}, {"input": [77.0, 8.5], "expected": 77.0}, {"input": [77.0, 9.0], "expected": 77.0}, {"input": [77.0, 9.5], "expected": 77.0}, {"input": [77.0, 10.0], "expected": 77.0}, {"input": [77.0, 10.5], "expected": 77.0}, {"input": [77.0, 11.0], "expected": 77.0}, {"input": [77.0, 11.5], "expected": 77.0}, {"input": [77.0, 12.0], "expected": 77.0}, {"input": [77.0, 12.5], "expected": 77.0}, {"input": [77.0, 13.0], "expected": 77.0}, {"input": [77.0, 13.5], "expected": 77.0}, {"input": [77.0, 14.0], "expected": 77.0}, {"input": [77.0, 14.5], "expected": 77.0}, {"input": [77.0, 15.0], "expected": 77.0}, {"input": [77.0, 15.5], "expected": 77.0}, {"input": [77.0, 16.0], "expected": 77.0}, {"input": [77.0, 16.5], "expected": 77.0}, {"input": [77.0, 17.0], "expected": 77.0}, {"input": [77.0, 17.5], "expected": 77.0}, {"input": [77.0, 18.0], "expected": 77.0}, {"input": [77.0, 18.5], "expected": 77.0}, {"input": [77.0, 19.0], "expected": 77.0}, {"input": [77.0, 19.5], "expected": 77.0}, {"input": [77.0, 20.0], "expected": 77.0}, {"input": [77.0, 20.5], "expected": 77.0}, {"input": [77.0, 21.0], "expected": 77.0}, {"input": [77.0, 21.5], "expected": 77.0}, {"input": [77.0, 22.0], "expected": 77.0}, {"input": [77.0, 22.5], "expected": 77.0}, {"input": [77.0, 23.0], "expected": 77.0}, {"input": [77.0, 23.5], "expected": 77.0}, {"input": [77.0, 24.0], "expected": 77.0}, {"input": [77.0, 24.5], "expected": 77.0}, {"input": [77.0, 25.0], "expected": 77.0}, {"input": [77.0, 25.5], "expected": 77.0}, {"input": [77.0, 26.0], "expected": 77.0}, {"input": [77.0, 26.5], "expected": 77.0}, {"input": [77.0, 27.0], "expected": 77.0}, {"input": [77.0, 27.5], "expected": 77.0}, {"input": [77.0, 28.0], "expected": 77.0}, {"input": [77.0, 28.5], "expected": 77.0}, {"input": [77.0, 29.0], "expected": 77.0}, {"input": [77.0, 29.5], "expected": 77.0}, {"input": [77.0, 30.0], "expected": 77.0}, {"input": [77.0, 30.5], "expected": 77.0}, {"input": [77.0, 31.0], "expected": 77.0}, {"input": [77.0, 31.5], "expected": 77.0}, {"input": [77.0, 32.0], "expected": 77.0}, {"input": [77.0, 32.5], "expected": 77.0}, {"input": [77.0, 33.0], "expected": 77.0}, {"input": [77.0, 33.5], "expected": 77.0}, {"input": [77.0, 34.0], "expected": 77.0}, {"input": [77.0, 34.5], "expected": 77.0}, {"input": [77.0, 35.0], "expected": 77.0}, {"input": [77.0, 35.5], "expected": 77.0}, {"input": [77.0, 36.0], "expected": 77.0}, {"input": [77.0, 36.5], "expected": 77.0}, {"input": [77.0, 37.0], "expected": 77.0}, {"input": [77.0, 37.5], "expected": 77.0}, {"input": [77.0, 38.0], "expected": 77.0}, {"input": [77.0, 38.5], "expected": 77.0}, {"input": [77.0, 39.0], "expected": 77.0}, {"input": [77.0, 39.5], "expected": 77.0}, {"input": [77.0, 40.0], "expected": 77.0}, {"input": [77.0, 40.5], "expected": 77.0}, {"input": [77.0, 41.0], "expected": 77.0}, {"input": [77.0, 41.5], "expected": 77.0}, {"input": [77.0, 42.0], "expected": 77.0}, {"input": [77.0, 42.5], "expected": 77.0}, {"input": [77.0, 43.0], "expected": 77.0}, {"input": [77.0, 43.5], "expected": 77.0}, {"input": [77.0, 44.0], "expected": 77.0}, {"input": [77.0, 44.5], "expected": 77.00000000000001}, {"input": [77.0, 45.0], "expected": 77.00000000000001}, {"input": [77.0, 45.5], "expected": 77.00000000000001}, {"input": [77.0, 46.0], "expected": 77.00000000000003}, {"input": [77.0, 46.5], "expected": 77.00000000000006}, {"input": [77.0, 47.0], "expected": 77.0000000000001}, {"input": [77.0, 47.5], "expected": 77.00000000000016}, {"input": [77.0, 48.0], "expected": 77.00000000000026}, {"input": [77.0, 48.5], "expected": 77.00000000000043}, {"input": [77.0, 49.0], "expected": 77.0000000000007}, {"input": [77.0, 49.5], "expected": 77.00000000000114}, {"input": [77.0, 50.0], "expected": 77.00000000000188}, {"input": [77.0, 50.5], "expected": 77.0000000000031}, {"input": [77.0, 51.0], "expected": 77.00000000000512}, {"input": [77.0, 51.5], "expected": 77.00000000000843}, {"input": [77.0, 52.0], "expected": 77.00000000001388}, {"input": [77.0, 52.5], "expected": 77.0000000000229}, {"input": [77.0, 53.0], "expected": 77.00000000003776}, {"input": [77.0, 53.5], "expected": 77.00000000006224}, {"input": [77.0, 54.0], "expected": 77.00000000010262}, {"input": [77.0, 54.5], "expected": 77.0000000001692}, {"input": [77.0, 55.0], "expected": 77.00000000027894}, {"input": [77.0, 55.5], "expected": 77.0000000004599}, {"input": [77.0, 56.0], "expected": 77.00000000075826}, {"input": [77.0, 56.5], "expected": 77.00000000125016}, {"input": [77.0, 57.0], "expected": 77.00000000206116}, {"input": [77.0, 57.5], "expected": 77.00000000339827}, {"input": [77.0, 58.0], "expected": 77.0000000056028}, {"input": [77.0, 58.5], "expected": 77.00000000923745}, {"input": [77.0, 59.0], "expected": 77.00000001522999}, {"input": [77.0, 59.5], "expected": 77.00000002511}, {"input": [77.0, 60.0], "expected": 77.00000004139937}, {"input": [77.0, 60.5], "expected": 77.00000006825603}, {"input": [77.0, 61.0], "expected": 77.00000011253516}, {"input": [77.0, 61.5], "expected": 77.00000018553912}, {"input": [77.0, 62.0], "expected": 77.00000030590228}, {"input": [77.0, 62.5], "expected": 77.00000050434754}, {"input": [77.0, 63.0], "expected": 77.00000083152837}, {"input": [77.0, 63.5], "expected": 77.00000137095815}, {"input": [77.0, 64.0], "expected": 77.00000226032685}, {"input": [77.0, 64.5], "expected": 77.00000372664623}, {"input": [77.0, 65.0], "expected": 77.00000614419348}, {"input": [77.0, 65.5], "expected": 77.00001013004228}, {"input": [77.0, 66.0], "expected": 77.00001670156132}, {"input": [77.0, 66.5], "expected": 77.00002753607023}, {"input": [77.0, 67.0], "expected": 77.00004539889922}, {"input": [77.0, 67.5], "expected": 77.00007484902864}, {"input": [77.0, 68.0], "expected": 77.00012340218973}, {"input": [77.0, 68.5], "expected": 77.00020344767213}, {"input": [77.0, 69.0], "expected": 77.0003354063729}, {"input": [77.0, 69.5], "expected": 77.00055293147535}, {"input": [77.0, 70.0], "expected": 77.00091146645377}, {"input": [77.0, 70.5], "expected": 77.00150231015975}, {"input": [77.0, 71.0], "expected": 77.00247568513772}, {"input": [77.0, 71.5], "expected": 77.00407844327057}, {"input": [77.0, 72.0], "expected": 77.00671534848912}, {"input": [77.0, 72.5], "expected": 77.0110477448486}, {"input": [77.0, 73.0], "expected": 77.0181499279178}, {"input": [77.0, 73.5], "expected": 77.02975041827263}, {"input": [77.0, 74.0], "expected": 77.04858735157374}, {"input": [77.0, 74.5], "expected": 77.07888973429255}, {"input": [77.0, 75.0], "expected": 77.12692801104298}, {"input": [77.0, 75.5], "expected": 77.20141327798275}, {"input": [77.0, 76.0], "expected": 77.31326168751822}, {"input": [77.0, 76.5], "expected": 77.4740769841801}, {"input": [77.0, 77.0], "expected": 77.69314718055995}, {"input": [77.0, 77.5], "expected": 77.9740769841801}, {"input": [77.0, 78.0], "expected": 78.31326168751822}, {"input": [77.0, 78.5], "expected": 78.70141327798275}, {"input": [77.0, 79.0], "expected": 79.12692801104298}, {"input": [77.0, 79.5], "expected": 79.57888973429255}, {"input": [77.0, 80.0], "expected": 80.04858735157374}, {"input": [77.0, 80.5], "expected": 80.52975041827263}, {"input": [77.0, 81.0], "expected": 81.0181499279178}, {"input": [77.0, 81.5], "expected": 81.5110477448486}, {"input": [77.0, 82.0], "expected": 82.00671534848912}, {"input": [77.0, 82.5], "expected": 82.50407844327057}, {"input": [77.0, 83.0], "expected": 83.00247568513772}, {"input": [77.0, 83.5], "expected": 83.50150231015975}, {"input": [77.0, 84.0], "expected": 84.00091146645377}, {"input": [77.0, 84.5], "expected": 84.50055293147535}, {"input": [77.0, 85.0], "expected": 85.0003354063729}, {"input": [77.0, 85.5], "expected": 85.50020344767213}, {"input": [77.0, 86.0], "expected": 86.00012340218973}, {"input": [77.0, 86.5], "expected": 86.50007484902864}, {"input": [77.0, 87.0], "expected": 87.00004539889922}, {"input": [77.0, 87.5], "expected": 87.50002753607023}, {"input": [77.0, 88.0], "expected": 88.00001670156132}, {"input": [77.0, 88.5], "expected": 88.50001013004228}, {"input": [77.0, 89.0], "expected": 89.00000614419348}, {"input": [77.0, 89.5], "expected": 89.50000372664623}, {"input": [77.0, 90.0], "expected": 90.00000226032685}, {"input": [77.0, 90.5], "expected": 90.50000137095815}, {"input": [77.0, 91.0], "expected": 91.00000083152837}, {"input": [77.0, 91.5], "expected": 91.50000050434754}, {"input": [77.0, 92.0], "expected": 92.00000030590228}, {"input": [77.0, 92.5], "expected": 92.50000018553912}, {"input": [77.0, 93.0], "expected": 93.00000011253516}, {"input": [77.0, 93.5], "expected": 93.50000006825603}, {"input": [77.0, 94.0], "expected": 94.00000004139937}, {"input": [77.0, 94.5], "expected": 94.50000002511}, {"input": [77.0, 95.0], "expected": 95.00000001522999}, {"input": [77.0, 95.5], "expected": 95.50000000923745}, {"input": [77.0, 96.0], "expected": 96.0000000056028}, {"input": [77.0, 96.5], "expected": 96.50000000339827}, {"input": [77.0, 97.0], "expected": 97.00000000206116}, {"input": [77.0, 97.5], "expected": 97.50000000125016}, {"input": [77.0, 98.0], "expected": 98.00000000075826}, {"input": [77.0, 98.5], "expected": 98.5000000004599}, {"input": [77.0, 99.0], "expected": 99.00000000027894}, {"input": [77.0, 99.5], "expected": 99.5000000001692}, {"input": [77.5, -100.0], "expected": 77.5}, {"input": [77.5, -99.5], "expected": 77.5}, {"input": [77.5, -99.0], "expected": 77.5}, {"input": [77.5, -98.5], "expected": 77.5}, {"input": [77.5, -98.0], "expected": 77.5}, {"input": [77.5, -97.5], "expected": 77.5}, {"input": [77.5, -97.0], "expected": 77.5}, {"input": [77.5, -96.5], "expected": 77.5}, {"input": [77.5, -96.0], "expected": 77.5}, {"input": [77.5, -95.5], "expected": 77.5}, {"input": [77.5, -95.0], "expected": 77.5}, {"input": [77.5, -94.5], "expected": 77.5}, {"input": [77.5, -94.0], "expected": 77.5}, {"input": [77.5, -93.5], "expected": 77.5}, {"input": [77.5, -93.0], "expected": 77.5}, {"input": [77.5, -92.5], "expected": 77.5}, {"input": [77.5, -92.0], "expected": 77.5}, {"input": [77.5, -91.5], "expected": 77.5}, {"input": [77.5, -91.0], "expected": 77.5}, {"input": [77.5, -90.5], "expected": 77.5}, {"input": [77.5, -90.0], "expected": 77.5}, {"input": [77.5, -89.5], "expected": 77.5}, {"input": [77.5, -89.0], "expected": 77.5}, {"input": [77.5, -88.5], "expected": 77.5}, {"input": [77.5, -88.0], "expected": 77.5}, {"input": [77.5, -87.5], "expected": 77.5}, {"input": [77.5, -87.0], "expected": 77.5}, {"input": [77.5, -86.5], "expected": 77.5}, {"input": [77.5, -86.0], "expected": 77.5}, {"input": [77.5, -85.5], "expected": 77.5}, {"input": [77.5, -85.0], "expected": 77.5}, {"input": [77.5, -84.5], "expected": 77.5}, {"input": [77.5, -84.0], "expected": 77.5}, {"input": [77.5, -83.5], "expected": 77.5}, {"input": [77.5, -83.0], "expected": 77.5}, {"input": [77.5, -82.5], "expected": 77.5}, {"input": [77.5, -82.0], "expected": 77.5}, {"input": [77.5, -81.5], "expected": 77.5}, {"input": [77.5, -81.0], "expected": 77.5}, {"input": [77.5, -80.5], "expected": 77.5}, {"input": [77.5, -80.0], "expected": 77.5}, {"input": [77.5, -79.5], "expected": 77.5}, {"input": [77.5, -79.0], "expected": 77.5}, {"input": [77.5, -78.5], "expected": 77.5}, {"input": [77.5, -78.0], "expected": 77.5}, {"input": [77.5, -77.5], "expected": 77.5}, {"input": [77.5, -77.0], "expected": 77.5}, {"input": [77.5, -76.5], "expected": 77.5}, {"input": [77.5, -76.0], "expected": 77.5}, {"input": [77.5, -75.5], "expected": 77.5}, {"input": [77.5, -75.0], "expected": 77.5}, {"input": [77.5, -74.5], "expected": 77.5}, {"input": [77.5, -74.0], "expected": 77.5}, {"input": [77.5, -73.5], "expected": 77.5}, {"input": [77.5, -73.0], "expected": 77.5}, {"input": [77.5, -72.5], "expected": 77.5}, {"input": [77.5, -72.0], "expected": 77.5}, {"input": [77.5, -71.5], "expected": 77.5}, {"input": [77.5, -71.0], "expected": 77.5}, {"input": [77.5, -70.5], "expected": 77.5}, {"input": [77.5, -70.0], "expected": 77.5}, {"input": [77.5, -69.5], "expected": 77.5}, {"input": [77.5, -69.0], "expected": 77.5}, {"input": [77.5, -68.5], "expected": 77.5}, {"input": [77.5, -68.0], "expected": 77.5}, {"input": [77.5, -67.5], "expected": 77.5}, {"input": [77.5, -67.0], "expected": 77.5}, {"input": [77.5, -66.5], "expected": 77.5}, {"input": [77.5, -66.0], "expected": 77.5}, {"input": [77.5, -65.5], "expected": 77.5}, {"input": [77.5, -65.0], "expected": 77.5}, {"input": [77.5, -64.5], "expected": 77.5}, {"input": [77.5, -64.0], "expected": 77.5}, {"input": [77.5, -63.5], "expected": 77.5}, {"input": [77.5, -63.0], "expected": 77.5}, {"input": [77.5, -62.5], "expected": 77.5}, {"input": [77.5, -62.0], "expected": 77.5}, {"input": [77.5, -61.5], "expected": 77.5}, {"input": [77.5, -61.0], "expected": 77.5}, {"input": [77.5, -60.5], "expected": 77.5}, {"input": [77.5, -60.0], "expected": 77.5}, {"input": [77.5, -59.5], "expected": 77.5}, {"input": [77.5, -59.0], "expected": 77.5}, {"input": [77.5, -58.5], "expected": 77.5}, {"input": [77.5, -58.0], "expected": 77.5}, {"input": [77.5, -57.5], "expected": 77.5}, {"input": [77.5, -57.0], "expected": 77.5}, {"input": [77.5, -56.5], "expected": 77.5}, {"input": [77.5, -56.0], "expected": 77.5}, {"input": [77.5, -55.5], "expected": 77.5}, {"input": [77.5, -55.0], "expected": 77.5}, {"input": [77.5, -54.5], "expected": 77.5}, {"input": [77.5, -54.0], "expected": 77.5}, {"input": [77.5, -53.5], "expected": 77.5}, {"input": [77.5, -53.0], "expected": 77.5}, {"input": [77.5, -52.5], "expected": 77.5}, {"input": [77.5, -52.0], "expected": 77.5}, {"input": [77.5, -51.5], "expected": 77.5}, {"input": [77.5, -51.0], "expected": 77.5}, {"input": [77.5, -50.5], "expected": 77.5}, {"input": [77.5, -50.0], "expected": 77.5}, {"input": [77.5, -49.5], "expected": 77.5}, {"input": [77.5, -49.0], "expected": 77.5}, {"input": [77.5, -48.5], "expected": 77.5}, {"input": [77.5, -48.0], "expected": 77.5}, {"input": [77.5, -47.5], "expected": 77.5}, {"input": [77.5, -47.0], "expected": 77.5}, {"input": [77.5, -46.5], "expected": 77.5}, {"input": [77.5, -46.0], "expected": 77.5}, {"input": [77.5, -45.5], "expected": 77.5}, {"input": [77.5, -45.0], "expected": 77.5}, {"input": [77.5, -44.5], "expected": 77.5}, {"input": [77.5, -44.0], "expected": 77.5}, {"input": [77.5, -43.5], "expected": 77.5}, {"input": [77.5, -43.0], "expected": 77.5}, {"input": [77.5, -42.5], "expected": 77.5}, {"input": [77.5, -42.0], "expected": 77.5}, {"input": [77.5, -41.5], "expected": 77.5}, {"input": [77.5, -41.0], "expected": 77.5}, {"input": [77.5, -40.5], "expected": 77.5}, {"input": [77.5, -40.0], "expected": 77.5}, {"input": [77.5, -39.5], "expected": 77.5}, {"input": [77.5, -39.0], "expected": 77.5}, {"input": [77.5, -38.5], "expected": 77.5}, {"input": [77.5, -38.0], "expected": 77.5}, {"input": [77.5, -37.5], "expected": 77.5}, {"input": [77.5, -37.0], "expected": 77.5}, {"input": [77.5, -36.5], "expected": 77.5}, {"input": [77.5, -36.0], "expected": 77.5}, {"input": [77.5, -35.5], "expected": 77.5}, {"input": [77.5, -35.0], "expected": 77.5}, {"input": [77.5, -34.5], "expected": 77.5}, {"input": [77.5, -34.0], "expected": 77.5}, {"input": [77.5, -33.5], "expected": 77.5}, {"input": [77.5, -33.0], "expected": 77.5}, {"input": [77.5, -32.5], "expected": 77.5}, {"input": [77.5, -32.0], "expected": 77.5}, {"input": [77.5, -31.5], "expected": 77.5}, {"input": [77.5, -31.0], "expected": 77.5}, {"input": [77.5, -30.5], "expected": 77.5}, {"input": [77.5, -30.0], "expected": 77.5}, {"input": [77.5, -29.5], "expected": 77.5}, {"input": [77.5, -29.0], "expected": 77.5}, {"input": [77.5, -28.5], "expected": 77.5}, {"input": [77.5, -28.0], "expected": 77.5}, {"input": [77.5, -27.5], "expected": 77.5}, {"input": [77.5, -27.0], "expected": 77.5}, {"input": [77.5, -26.5], "expected": 77.5}, {"input": [77.5, -26.0], "expected": 77.5}, {"input": [77.5, -25.5], "expected": 77.5}, {"input": [77.5, -25.0], "expected": 77.5}, {"input": [77.5, -24.5], "expected": 77.5}, {"input": [77.5, -24.0], "expected": 77.5}, {"input": [77.5, -23.5], "expected": 77.5}, {"input": [77.5, -23.0], "expected": 77.5}, {"input": [77.5, -22.5], "expected": 77.5}, {"input": [77.5, -22.0], "expected": 77.5}, {"input": [77.5, -21.5], "expected": 77.5}, {"input": [77.5, -21.0], "expected": 77.5}, {"input": [77.5, -20.5], "expected": 77.5}, {"input": [77.5, -20.0], "expected": 77.5}, {"input": [77.5, -19.5], "expected": 77.5}, {"input": [77.5, -19.0], "expected": 77.5}, {"input": [77.5, -18.5], "expected": 77.5}, {"input": [77.5, -18.0], "expected": 77.5}, {"input": [77.5, -17.5], "expected": 77.5}, {"input": [77.5, -17.0], "expected": 77.5}, {"input": [77.5, -16.5], "expected": 77.5}, {"input": [77.5, -16.0], "expected": 77.5}, {"input": [77.5, -15.5], "expected": 77.5}, {"input": [77.5, -15.0], "expected": 77.5}, {"input": [77.5, -14.5], "expected": 77.5}, {"input": [77.5, -14.0], "expected": 77.5}, {"input": [77.5, -13.5], "expected": 77.5}, {"input": [77.5, -13.0], "expected": 77.5}, {"input": [77.5, -12.5], "expected": 77.5}, {"input": [77.5, -12.0], "expected": 77.5}, {"input": [77.5, -11.5], "expected": 77.5}, {"input": [77.5, -11.0], "expected": 77.5}, {"input": [77.5, -10.5], "expected": 77.5}, {"input": [77.5, -10.0], "expected": 77.5}, {"input": [77.5, -9.5], "expected": 77.5}, {"input": [77.5, -9.0], "expected": 77.5}, {"input": [77.5, -8.5], "expected": 77.5}, {"input": [77.5, -8.0], "expected": 77.5}, {"input": [77.5, -7.5], "expected": 77.5}, {"input": [77.5, -7.0], "expected": 77.5}, {"input": [77.5, -6.5], "expected": 77.5}, {"input": [77.5, -6.0], "expected": 77.5}, {"input": [77.5, -5.5], "expected": 77.5}, {"input": [77.5, -5.0], "expected": 77.5}, {"input": [77.5, -4.5], "expected": 77.5}, {"input": [77.5, -4.0], "expected": 77.5}, {"input": [77.5, -3.5], "expected": 77.5}, {"input": [77.5, -3.0], "expected": 77.5}, {"input": [77.5, -2.5], "expected": 77.5}, {"input": [77.5, -2.0], "expected": 77.5}, {"input": [77.5, -1.5], "expected": 77.5}, {"input": [77.5, -1.0], "expected": 77.5}, {"input": [77.5, -0.5], "expected": 77.5}, {"input": [77.5, 0.0], "expected": 77.5}, {"input": [77.5, 0.5], "expected": 77.5}, {"input": [77.5, 1.0], "expected": 77.5}, {"input": [77.5, 1.5], "expected": 77.5}, {"input": [77.5, 2.0], "expected": 77.5}, {"input": [77.5, 2.5], "expected": 77.5}, {"input": [77.5, 3.0], "expected": 77.5}, {"input": [77.5, 3.5], "expected": 77.5}, {"input": [77.5, 4.0], "expected": 77.5}, {"input": [77.5, 4.5], "expected": 77.5}, {"input": [77.5, 5.0], "expected": 77.5}, {"input": [77.5, 5.5], "expected": 77.5}, {"input": [77.5, 6.0], "expected": 77.5}, {"input": [77.5, 6.5], "expected": 77.5}, {"input": [77.5, 7.0], "expected": 77.5}, {"input": [77.5, 7.5], "expected": 77.5}, {"input": [77.5, 8.0], "expected": 77.5}, {"input": [77.5, 8.5], "expected": 77.5}, {"input": [77.5, 9.0], "expected": 77.5}, {"input": [77.5, 9.5], "expected": 77.5}, {"input": [77.5, 10.0], "expected": 77.5}, {"input": [77.5, 10.5], "expected": 77.5}, {"input": [77.5, 11.0], "expected": 77.5}, {"input": [77.5, 11.5], "expected": 77.5}, {"input": [77.5, 12.0], "expected": 77.5}, {"input": [77.5, 12.5], "expected": 77.5}, {"input": [77.5, 13.0], "expected": 77.5}, {"input": [77.5, 13.5], "expected": 77.5}, {"input": [77.5, 14.0], "expected": 77.5}, {"input": [77.5, 14.5], "expected": 77.5}, {"input": [77.5, 15.0], "expected": 77.5}, {"input": [77.5, 15.5], "expected": 77.5}, {"input": [77.5, 16.0], "expected": 77.5}, {"input": [77.5, 16.5], "expected": 77.5}, {"input": [77.5, 17.0], "expected": 77.5}, {"input": [77.5, 17.5], "expected": 77.5}, {"input": [77.5, 18.0], "expected": 77.5}, {"input": [77.5, 18.5], "expected": 77.5}, {"input": [77.5, 19.0], "expected": 77.5}, {"input": [77.5, 19.5], "expected": 77.5}, {"input": [77.5, 20.0], "expected": 77.5}, {"input": [77.5, 20.5], "expected": 77.5}, {"input": [77.5, 21.0], "expected": 77.5}, {"input": [77.5, 21.5], "expected": 77.5}, {"input": [77.5, 22.0], "expected": 77.5}, {"input": [77.5, 22.5], "expected": 77.5}, {"input": [77.5, 23.0], "expected": 77.5}, {"input": [77.5, 23.5], "expected": 77.5}, {"input": [77.5, 24.0], "expected": 77.5}, {"input": [77.5, 24.5], "expected": 77.5}, {"input": [77.5, 25.0], "expected": 77.5}, {"input": [77.5, 25.5], "expected": 77.5}, {"input": [77.5, 26.0], "expected": 77.5}, {"input": [77.5, 26.5], "expected": 77.5}, {"input": [77.5, 27.0], "expected": 77.5}, {"input": [77.5, 27.5], "expected": 77.5}, {"input": [77.5, 28.0], "expected": 77.5}, {"input": [77.5, 28.5], "expected": 77.5}, {"input": [77.5, 29.0], "expected": 77.5}, {"input": [77.5, 29.5], "expected": 77.5}, {"input": [77.5, 30.0], "expected": 77.5}, {"input": [77.5, 30.5], "expected": 77.5}, {"input": [77.5, 31.0], "expected": 77.5}, {"input": [77.5, 31.5], "expected": 77.5}, {"input": [77.5, 32.0], "expected": 77.5}, {"input": [77.5, 32.5], "expected": 77.5}, {"input": [77.5, 33.0], "expected": 77.5}, {"input": [77.5, 33.5], "expected": 77.5}, {"input": [77.5, 34.0], "expected": 77.5}, {"input": [77.5, 34.5], "expected": 77.5}, {"input": [77.5, 35.0], "expected": 77.5}, {"input": [77.5, 35.5], "expected": 77.5}, {"input": [77.5, 36.0], "expected": 77.5}, {"input": [77.5, 36.5], "expected": 77.5}, {"input": [77.5, 37.0], "expected": 77.5}, {"input": [77.5, 37.5], "expected": 77.5}, {"input": [77.5, 38.0], "expected": 77.5}, {"input": [77.5, 38.5], "expected": 77.5}, {"input": [77.5, 39.0], "expected": 77.5}, {"input": [77.5, 39.5], "expected": 77.5}, {"input": [77.5, 40.0], "expected": 77.5}, {"input": [77.5, 40.5], "expected": 77.5}, {"input": [77.5, 41.0], "expected": 77.5}, {"input": [77.5, 41.5], "expected": 77.5}, {"input": [77.5, 42.0], "expected": 77.5}, {"input": [77.5, 42.5], "expected": 77.5}, {"input": [77.5, 43.0], "expected": 77.5}, {"input": [77.5, 43.5], "expected": 77.5}, {"input": [77.5, 44.0], "expected": 77.5}, {"input": [77.5, 44.5], "expected": 77.5}, {"input": [77.5, 45.0], "expected": 77.50000000000001}, {"input": [77.5, 45.5], "expected": 77.50000000000001}, {"input": [77.5, 46.0], "expected": 77.50000000000001}, {"input": [77.5, 46.5], "expected": 77.50000000000003}, {"input": [77.5, 47.0], "expected": 77.50000000000006}, {"input": [77.5, 47.5], "expected": 77.5000000000001}, {"input": [77.5, 48.0], "expected": 77.50000000000016}, {"input": [77.5, 48.5], "expected": 77.50000000000026}, {"input": [77.5, 49.0], "expected": 77.50000000000043}, {"input": [77.5, 49.5], "expected": 77.5000000000007}, {"input": [77.5, 50.0], "expected": 77.50000000000114}, {"input": [77.5, 50.5], "expected": 77.50000000000188}, {"input": [77.5, 51.0], "expected": 77.5000000000031}, {"input": [77.5, 51.5], "expected": 77.50000000000512}, {"input": [77.5, 52.0], "expected": 77.50000000000843}, {"input": [77.5, 52.5], "expected": 77.50000000001388}, {"input": [77.5, 53.0], "expected": 77.5000000000229}, {"input": [77.5, 53.5], "expected": 77.50000000003776}, {"input": [77.5, 54.0], "expected": 77.50000000006224}, {"input": [77.5, 54.5], "expected": 77.50000000010262}, {"input": [77.5, 55.0], "expected": 77.5000000001692}, {"input": [77.5, 55.5], "expected": 77.50000000027894}, {"input": [77.5, 56.0], "expected": 77.5000000004599}, {"input": [77.5, 56.5], "expected": 77.50000000075826}, {"input": [77.5, 57.0], "expected": 77.50000000125016}, {"input": [77.5, 57.5], "expected": 77.50000000206116}, {"input": [77.5, 58.0], "expected": 77.50000000339827}, {"input": [77.5, 58.5], "expected": 77.5000000056028}, {"input": [77.5, 59.0], "expected": 77.50000000923745}, {"input": [77.5, 59.5], "expected": 77.50000001522999}, {"input": [77.5, 60.0], "expected": 77.50000002511}, {"input": [77.5, 60.5], "expected": 77.50000004139937}, {"input": [77.5, 61.0], "expected": 77.50000006825603}, {"input": [77.5, 61.5], "expected": 77.50000011253516}, {"input": [77.5, 62.0], "expected": 77.50000018553912}, {"input": [77.5, 62.5], "expected": 77.50000030590228}, {"input": [77.5, 63.0], "expected": 77.50000050434754}, {"input": [77.5, 63.5], "expected": 77.50000083152837}, {"input": [77.5, 64.0], "expected": 77.50000137095815}, {"input": [77.5, 64.5], "expected": 77.50000226032685}, {"input": [77.5, 65.0], "expected": 77.50000372664623}, {"input": [77.5, 65.5], "expected": 77.50000614419348}, {"input": [77.5, 66.0], "expected": 77.50001013004228}, {"input": [77.5, 66.5], "expected": 77.50001670156132}, {"input": [77.5, 67.0], "expected": 77.50002753607023}, {"input": [77.5, 67.5], "expected": 77.50004539889922}, {"input": [77.5, 68.0], "expected": 77.50007484902864}, {"input": [77.5, 68.5], "expected": 77.50012340218973}, {"input": [77.5, 69.0], "expected": 77.50020344767213}, {"input": [77.5, 69.5], "expected": 77.5003354063729}, {"input": [77.5, 70.0], "expected": 77.50055293147535}, {"input": [77.5, 70.5], "expected": 77.50091146645377}, {"input": [77.5, 71.0], "expected": 77.50150231015975}, {"input": [77.5, 71.5], "expected": 77.50247568513772}, {"input": [77.5, 72.0], "expected": 77.50407844327057}, {"input": [77.5, 72.5], "expected": 77.50671534848912}, {"input": [77.5, 73.0], "expected": 77.5110477448486}, {"input": [77.5, 73.5], "expected": 77.5181499279178}, {"input": [77.5, 74.0], "expected": 77.52975041827263}, {"input": [77.5, 74.5], "expected": 77.54858735157374}, {"input": [77.5, 75.0], "expected": 77.57888973429255}, {"input": [77.5, 75.5], "expected": 77.62692801104298}, {"input": [77.5, 76.0], "expected": 77.70141327798275}, {"input": [77.5, 76.5], "expected": 77.81326168751822}, {"input": [77.5, 77.0], "expected": 77.9740769841801}, {"input": [77.5, 77.5], "expected": 78.19314718055995}, {"input": [77.5, 78.0], "expected": 78.4740769841801}, {"input": [77.5, 78.5], "expected": 78.81326168751822}, {"input": [77.5, 79.0], "expected": 79.20141327798275}, {"input": [77.5, 79.5], "expected": 79.62692801104298}, {"input": [77.5, 80.0], "expected": 80.07888973429255}, {"input": [77.5, 80.5], "expected": 80.54858735157374}, {"input": [77.5, 81.0], "expected": 81.02975041827263}, {"input": [77.5, 81.5], "expected": 81.5181499279178}, {"input": [77.5, 82.0], "expected": 82.0110477448486}, {"input": [77.5, 82.5], "expected": 82.50671534848912}, {"input": [77.5, 83.0], "expected": 83.00407844327057}, {"input": [77.5, 83.5], "expected": 83.50247568513772}, {"input": [77.5, 84.0], "expected": 84.00150231015975}, {"input": [77.5, 84.5], "expected": 84.50091146645377}, {"input": [77.5, 85.0], "expected": 85.00055293147535}, {"input": [77.5, 85.5], "expected": 85.5003354063729}, {"input": [77.5, 86.0], "expected": 86.00020344767213}, {"input": [77.5, 86.5], "expected": 86.50012340218973}, {"input": [77.5, 87.0], "expected": 87.00007484902864}, {"input": [77.5, 87.5], "expected": 87.50004539889922}, {"input": [77.5, 88.0], "expected": 88.00002753607023}, {"input": [77.5, 88.5], "expected": 88.50001670156132}, {"input": [77.5, 89.0], "expected": 89.00001013004228}, {"input": [77.5, 89.5], "expected": 89.50000614419348}, {"input": [77.5, 90.0], "expected": 90.00000372664623}, {"input": [77.5, 90.5], "expected": 90.50000226032685}, {"input": [77.5, 91.0], "expected": 91.00000137095815}, {"input": [77.5, 91.5], "expected": 91.50000083152837}, {"input": [77.5, 92.0], "expected": 92.00000050434754}, {"input": [77.5, 92.5], "expected": 92.50000030590228}, {"input": [77.5, 93.0], "expected": 93.00000018553912}, {"input": [77.5, 93.5], "expected": 93.50000011253516}, {"input": [77.5, 94.0], "expected": 94.00000006825603}, {"input": [77.5, 94.5], "expected": 94.50000004139937}, {"input": [77.5, 95.0], "expected": 95.00000002511}, {"input": [77.5, 95.5], "expected": 95.50000001522999}, {"input": [77.5, 96.0], "expected": 96.00000000923745}, {"input": [77.5, 96.5], "expected": 96.5000000056028}, {"input": [77.5, 97.0], "expected": 97.00000000339827}, {"input": [77.5, 97.5], "expected": 97.50000000206116}, {"input": [77.5, 98.0], "expected": 98.00000000125016}, {"input": [77.5, 98.5], "expected": 98.50000000075826}, {"input": [77.5, 99.0], "expected": 99.0000000004599}, {"input": [77.5, 99.5], "expected": 99.50000000027894}, {"input": [78.0, -100.0], "expected": 78.0}, {"input": [78.0, -99.5], "expected": 78.0}, {"input": [78.0, -99.0], "expected": 78.0}, {"input": [78.0, -98.5], "expected": 78.0}, {"input": [78.0, -98.0], "expected": 78.0}, {"input": [78.0, -97.5], "expected": 78.0}, {"input": [78.0, -97.0], "expected": 78.0}, {"input": [78.0, -96.5], "expected": 78.0}, {"input": [78.0, -96.0], "expected": 78.0}, {"input": [78.0, -95.5], "expected": 78.0}, {"input": [78.0, -95.0], "expected": 78.0}, {"input": [78.0, -94.5], "expected": 78.0}, {"input": [78.0, -94.0], "expected": 78.0}, {"input": [78.0, -93.5], "expected": 78.0}, {"input": [78.0, -93.0], "expected": 78.0}, {"input": [78.0, -92.5], "expected": 78.0}, {"input": [78.0, -92.0], "expected": 78.0}, {"input": [78.0, -91.5], "expected": 78.0}, {"input": [78.0, -91.0], "expected": 78.0}, {"input": [78.0, -90.5], "expected": 78.0}, {"input": [78.0, -90.0], "expected": 78.0}, {"input": [78.0, -89.5], "expected": 78.0}, {"input": [78.0, -89.0], "expected": 78.0}, {"input": [78.0, -88.5], "expected": 78.0}, {"input": [78.0, -88.0], "expected": 78.0}, {"input": [78.0, -87.5], "expected": 78.0}, {"input": [78.0, -87.0], "expected": 78.0}, {"input": [78.0, -86.5], "expected": 78.0}, {"input": [78.0, -86.0], "expected": 78.0}, {"input": [78.0, -85.5], "expected": 78.0}, {"input": [78.0, -85.0], "expected": 78.0}, {"input": [78.0, -84.5], "expected": 78.0}, {"input": [78.0, -84.0], "expected": 78.0}, {"input": [78.0, -83.5], "expected": 78.0}, {"input": [78.0, -83.0], "expected": 78.0}, {"input": [78.0, -82.5], "expected": 78.0}, {"input": [78.0, -82.0], "expected": 78.0}, {"input": [78.0, -81.5], "expected": 78.0}, {"input": [78.0, -81.0], "expected": 78.0}, {"input": [78.0, -80.5], "expected": 78.0}, {"input": [78.0, -80.0], "expected": 78.0}, {"input": [78.0, -79.5], "expected": 78.0}, {"input": [78.0, -79.0], "expected": 78.0}, {"input": [78.0, -78.5], "expected": 78.0}, {"input": [78.0, -78.0], "expected": 78.0}, {"input": [78.0, -77.5], "expected": 78.0}, {"input": [78.0, -77.0], "expected": 78.0}, {"input": [78.0, -76.5], "expected": 78.0}, {"input": [78.0, -76.0], "expected": 78.0}, {"input": [78.0, -75.5], "expected": 78.0}, {"input": [78.0, -75.0], "expected": 78.0}, {"input": [78.0, -74.5], "expected": 78.0}, {"input": [78.0, -74.0], "expected": 78.0}, {"input": [78.0, -73.5], "expected": 78.0}, {"input": [78.0, -73.0], "expected": 78.0}, {"input": [78.0, -72.5], "expected": 78.0}, {"input": [78.0, -72.0], "expected": 78.0}, {"input": [78.0, -71.5], "expected": 78.0}, {"input": [78.0, -71.0], "expected": 78.0}, {"input": [78.0, -70.5], "expected": 78.0}, {"input": [78.0, -70.0], "expected": 78.0}, {"input": [78.0, -69.5], "expected": 78.0}, {"input": [78.0, -69.0], "expected": 78.0}, {"input": [78.0, -68.5], "expected": 78.0}, {"input": [78.0, -68.0], "expected": 78.0}, {"input": [78.0, -67.5], "expected": 78.0}, {"input": [78.0, -67.0], "expected": 78.0}, {"input": [78.0, -66.5], "expected": 78.0}, {"input": [78.0, -66.0], "expected": 78.0}, {"input": [78.0, -65.5], "expected": 78.0}, {"input": [78.0, -65.0], "expected": 78.0}, {"input": [78.0, -64.5], "expected": 78.0}, {"input": [78.0, -64.0], "expected": 78.0}, {"input": [78.0, -63.5], "expected": 78.0}, {"input": [78.0, -63.0], "expected": 78.0}, {"input": [78.0, -62.5], "expected": 78.0}, {"input": [78.0, -62.0], "expected": 78.0}, {"input": [78.0, -61.5], "expected": 78.0}, {"input": [78.0, -61.0], "expected": 78.0}, {"input": [78.0, -60.5], "expected": 78.0}, {"input": [78.0, -60.0], "expected": 78.0}, {"input": [78.0, -59.5], "expected": 78.0}, {"input": [78.0, -59.0], "expected": 78.0}, {"input": [78.0, -58.5], "expected": 78.0}, {"input": [78.0, -58.0], "expected": 78.0}, {"input": [78.0, -57.5], "expected": 78.0}, {"input": [78.0, -57.0], "expected": 78.0}, {"input": [78.0, -56.5], "expected": 78.0}, {"input": [78.0, -56.0], "expected": 78.0}, {"input": [78.0, -55.5], "expected": 78.0}, {"input": [78.0, -55.0], "expected": 78.0}, {"input": [78.0, -54.5], "expected": 78.0}, {"input": [78.0, -54.0], "expected": 78.0}, {"input": [78.0, -53.5], "expected": 78.0}, {"input": [78.0, -53.0], "expected": 78.0}, {"input": [78.0, -52.5], "expected": 78.0}, {"input": [78.0, -52.0], "expected": 78.0}, {"input": [78.0, -51.5], "expected": 78.0}, {"input": [78.0, -51.0], "expected": 78.0}, {"input": [78.0, -50.5], "expected": 78.0}, {"input": [78.0, -50.0], "expected": 78.0}, {"input": [78.0, -49.5], "expected": 78.0}, {"input": [78.0, -49.0], "expected": 78.0}, {"input": [78.0, -48.5], "expected": 78.0}, {"input": [78.0, -48.0], "expected": 78.0}, {"input": [78.0, -47.5], "expected": 78.0}, {"input": [78.0, -47.0], "expected": 78.0}, {"input": [78.0, -46.5], "expected": 78.0}, {"input": [78.0, -46.0], "expected": 78.0}, {"input": [78.0, -45.5], "expected": 78.0}, {"input": [78.0, -45.0], "expected": 78.0}, {"input": [78.0, -44.5], "expected": 78.0}, {"input": [78.0, -44.0], "expected": 78.0}, {"input": [78.0, -43.5], "expected": 78.0}, {"input": [78.0, -43.0], "expected": 78.0}, {"input": [78.0, -42.5], "expected": 78.0}, {"input": [78.0, -42.0], "expected": 78.0}, {"input": [78.0, -41.5], "expected": 78.0}, {"input": [78.0, -41.0], "expected": 78.0}, {"input": [78.0, -40.5], "expected": 78.0}, {"input": [78.0, -40.0], "expected": 78.0}, {"input": [78.0, -39.5], "expected": 78.0}, {"input": [78.0, -39.0], "expected": 78.0}, {"input": [78.0, -38.5], "expected": 78.0}, {"input": [78.0, -38.0], "expected": 78.0}, {"input": [78.0, -37.5], "expected": 78.0}, {"input": [78.0, -37.0], "expected": 78.0}, {"input": [78.0, -36.5], "expected": 78.0}, {"input": [78.0, -36.0], "expected": 78.0}, {"input": [78.0, -35.5], "expected": 78.0}, {"input": [78.0, -35.0], "expected": 78.0}, {"input": [78.0, -34.5], "expected": 78.0}, {"input": [78.0, -34.0], "expected": 78.0}, {"input": [78.0, -33.5], "expected": 78.0}, {"input": [78.0, -33.0], "expected": 78.0}, {"input": [78.0, -32.5], "expected": 78.0}, {"input": [78.0, -32.0], "expected": 78.0}, {"input": [78.0, -31.5], "expected": 78.0}, {"input": [78.0, -31.0], "expected": 78.0}, {"input": [78.0, -30.5], "expected": 78.0}, {"input": [78.0, -30.0], "expected": 78.0}, {"input": [78.0, -29.5], "expected": 78.0}, {"input": [78.0, -29.0], "expected": 78.0}, {"input": [78.0, -28.5], "expected": 78.0}, {"input": [78.0, -28.0], "expected": 78.0}, {"input": [78.0, -27.5], "expected": 78.0}, {"input": [78.0, -27.0], "expected": 78.0}, {"input": [78.0, -26.5], "expected": 78.0}, {"input": [78.0, -26.0], "expected": 78.0}, {"input": [78.0, -25.5], "expected": 78.0}, {"input": [78.0, -25.0], "expected": 78.0}, {"input": [78.0, -24.5], "expected": 78.0}, {"input": [78.0, -24.0], "expected": 78.0}, {"input": [78.0, -23.5], "expected": 78.0}, {"input": [78.0, -23.0], "expected": 78.0}, {"input": [78.0, -22.5], "expected": 78.0}, {"input": [78.0, -22.0], "expected": 78.0}, {"input": [78.0, -21.5], "expected": 78.0}, {"input": [78.0, -21.0], "expected": 78.0}, {"input": [78.0, -20.5], "expected": 78.0}, {"input": [78.0, -20.0], "expected": 78.0}, {"input": [78.0, -19.5], "expected": 78.0}, {"input": [78.0, -19.0], "expected": 78.0}, {"input": [78.0, -18.5], "expected": 78.0}, {"input": [78.0, -18.0], "expected": 78.0}, {"input": [78.0, -17.5], "expected": 78.0}, {"input": [78.0, -17.0], "expected": 78.0}, {"input": [78.0, -16.5], "expected": 78.0}, {"input": [78.0, -16.0], "expected": 78.0}, {"input": [78.0, -15.5], "expected": 78.0}, {"input": [78.0, -15.0], "expected": 78.0}, {"input": [78.0, -14.5], "expected": 78.0}, {"input": [78.0, -14.0], "expected": 78.0}, {"input": [78.0, -13.5], "expected": 78.0}, {"input": [78.0, -13.0], "expected": 78.0}, {"input": [78.0, -12.5], "expected": 78.0}, {"input": [78.0, -12.0], "expected": 78.0}, {"input": [78.0, -11.5], "expected": 78.0}, {"input": [78.0, -11.0], "expected": 78.0}, {"input": [78.0, -10.5], "expected": 78.0}, {"input": [78.0, -10.0], "expected": 78.0}, {"input": [78.0, -9.5], "expected": 78.0}, {"input": [78.0, -9.0], "expected": 78.0}, {"input": [78.0, -8.5], "expected": 78.0}, {"input": [78.0, -8.0], "expected": 78.0}, {"input": [78.0, -7.5], "expected": 78.0}, {"input": [78.0, -7.0], "expected": 78.0}, {"input": [78.0, -6.5], "expected": 78.0}, {"input": [78.0, -6.0], "expected": 78.0}, {"input": [78.0, -5.5], "expected": 78.0}, {"input": [78.0, -5.0], "expected": 78.0}, {"input": [78.0, -4.5], "expected": 78.0}, {"input": [78.0, -4.0], "expected": 78.0}, {"input": [78.0, -3.5], "expected": 78.0}, {"input": [78.0, -3.0], "expected": 78.0}, {"input": [78.0, -2.5], "expected": 78.0}, {"input": [78.0, -2.0], "expected": 78.0}, {"input": [78.0, -1.5], "expected": 78.0}, {"input": [78.0, -1.0], "expected": 78.0}, {"input": [78.0, -0.5], "expected": 78.0}, {"input": [78.0, 0.0], "expected": 78.0}, {"input": [78.0, 0.5], "expected": 78.0}, {"input": [78.0, 1.0], "expected": 78.0}, {"input": [78.0, 1.5], "expected": 78.0}, {"input": [78.0, 2.0], "expected": 78.0}, {"input": [78.0, 2.5], "expected": 78.0}, {"input": [78.0, 3.0], "expected": 78.0}, {"input": [78.0, 3.5], "expected": 78.0}, {"input": [78.0, 4.0], "expected": 78.0}, {"input": [78.0, 4.5], "expected": 78.0}, {"input": [78.0, 5.0], "expected": 78.0}, {"input": [78.0, 5.5], "expected": 78.0}, {"input": [78.0, 6.0], "expected": 78.0}, {"input": [78.0, 6.5], "expected": 78.0}, {"input": [78.0, 7.0], "expected": 78.0}, {"input": [78.0, 7.5], "expected": 78.0}, {"input": [78.0, 8.0], "expected": 78.0}, {"input": [78.0, 8.5], "expected": 78.0}, {"input": [78.0, 9.0], "expected": 78.0}, {"input": [78.0, 9.5], "expected": 78.0}, {"input": [78.0, 10.0], "expected": 78.0}, {"input": [78.0, 10.5], "expected": 78.0}, {"input": [78.0, 11.0], "expected": 78.0}, {"input": [78.0, 11.5], "expected": 78.0}, {"input": [78.0, 12.0], "expected": 78.0}, {"input": [78.0, 12.5], "expected": 78.0}, {"input": [78.0, 13.0], "expected": 78.0}, {"input": [78.0, 13.5], "expected": 78.0}, {"input": [78.0, 14.0], "expected": 78.0}, {"input": [78.0, 14.5], "expected": 78.0}, {"input": [78.0, 15.0], "expected": 78.0}, {"input": [78.0, 15.5], "expected": 78.0}, {"input": [78.0, 16.0], "expected": 78.0}, {"input": [78.0, 16.5], "expected": 78.0}, {"input": [78.0, 17.0], "expected": 78.0}, {"input": [78.0, 17.5], "expected": 78.0}, {"input": [78.0, 18.0], "expected": 78.0}, {"input": [78.0, 18.5], "expected": 78.0}, {"input": [78.0, 19.0], "expected": 78.0}, {"input": [78.0, 19.5], "expected": 78.0}, {"input": [78.0, 20.0], "expected": 78.0}, {"input": [78.0, 20.5], "expected": 78.0}, {"input": [78.0, 21.0], "expected": 78.0}, {"input": [78.0, 21.5], "expected": 78.0}, {"input": [78.0, 22.0], "expected": 78.0}, {"input": [78.0, 22.5], "expected": 78.0}, {"input": [78.0, 23.0], "expected": 78.0}, {"input": [78.0, 23.5], "expected": 78.0}, {"input": [78.0, 24.0], "expected": 78.0}, {"input": [78.0, 24.5], "expected": 78.0}, {"input": [78.0, 25.0], "expected": 78.0}, {"input": [78.0, 25.5], "expected": 78.0}, {"input": [78.0, 26.0], "expected": 78.0}, {"input": [78.0, 26.5], "expected": 78.0}, {"input": [78.0, 27.0], "expected": 78.0}, {"input": [78.0, 27.5], "expected": 78.0}, {"input": [78.0, 28.0], "expected": 78.0}, {"input": [78.0, 28.5], "expected": 78.0}, {"input": [78.0, 29.0], "expected": 78.0}, {"input": [78.0, 29.5], "expected": 78.0}, {"input": [78.0, 30.0], "expected": 78.0}, {"input": [78.0, 30.5], "expected": 78.0}, {"input": [78.0, 31.0], "expected": 78.0}, {"input": [78.0, 31.5], "expected": 78.0}, {"input": [78.0, 32.0], "expected": 78.0}, {"input": [78.0, 32.5], "expected": 78.0}, {"input": [78.0, 33.0], "expected": 78.0}, {"input": [78.0, 33.5], "expected": 78.0}, {"input": [78.0, 34.0], "expected": 78.0}, {"input": [78.0, 34.5], "expected": 78.0}, {"input": [78.0, 35.0], "expected": 78.0}, {"input": [78.0, 35.5], "expected": 78.0}, {"input": [78.0, 36.0], "expected": 78.0}, {"input": [78.0, 36.5], "expected": 78.0}, {"input": [78.0, 37.0], "expected": 78.0}, {"input": [78.0, 37.5], "expected": 78.0}, {"input": [78.0, 38.0], "expected": 78.0}, {"input": [78.0, 38.5], "expected": 78.0}, {"input": [78.0, 39.0], "expected": 78.0}, {"input": [78.0, 39.5], "expected": 78.0}, {"input": [78.0, 40.0], "expected": 78.0}, {"input": [78.0, 40.5], "expected": 78.0}, {"input": [78.0, 41.0], "expected": 78.0}, {"input": [78.0, 41.5], "expected": 78.0}, {"input": [78.0, 42.0], "expected": 78.0}, {"input": [78.0, 42.5], "expected": 78.0}, {"input": [78.0, 43.0], "expected": 78.0}, {"input": [78.0, 43.5], "expected": 78.0}, {"input": [78.0, 44.0], "expected": 78.0}, {"input": [78.0, 44.5], "expected": 78.0}, {"input": [78.0, 45.0], "expected": 78.0}, {"input": [78.0, 45.5], "expected": 78.00000000000001}, {"input": [78.0, 46.0], "expected": 78.00000000000001}, {"input": [78.0, 46.5], "expected": 78.00000000000001}, {"input": [78.0, 47.0], "expected": 78.00000000000003}, {"input": [78.0, 47.5], "expected": 78.00000000000006}, {"input": [78.0, 48.0], "expected": 78.0000000000001}, {"input": [78.0, 48.5], "expected": 78.00000000000016}, {"input": [78.0, 49.0], "expected": 78.00000000000026}, {"input": [78.0, 49.5], "expected": 78.00000000000043}, {"input": [78.0, 50.0], "expected": 78.0000000000007}, {"input": [78.0, 50.5], "expected": 78.00000000000114}, {"input": [78.0, 51.0], "expected": 78.00000000000188}, {"input": [78.0, 51.5], "expected": 78.0000000000031}, {"input": [78.0, 52.0], "expected": 78.00000000000512}, {"input": [78.0, 52.5], "expected": 78.00000000000843}, {"input": [78.0, 53.0], "expected": 78.00000000001388}, {"input": [78.0, 53.5], "expected": 78.0000000000229}, {"input": [78.0, 54.0], "expected": 78.00000000003776}, {"input": [78.0, 54.5], "expected": 78.00000000006224}, {"input": [78.0, 55.0], "expected": 78.00000000010262}, {"input": [78.0, 55.5], "expected": 78.0000000001692}, {"input": [78.0, 56.0], "expected": 78.00000000027894}, {"input": [78.0, 56.5], "expected": 78.0000000004599}, {"input": [78.0, 57.0], "expected": 78.00000000075826}, {"input": [78.0, 57.5], "expected": 78.00000000125016}, {"input": [78.0, 58.0], "expected": 78.00000000206116}, {"input": [78.0, 58.5], "expected": 78.00000000339827}, {"input": [78.0, 59.0], "expected": 78.0000000056028}, {"input": [78.0, 59.5], "expected": 78.00000000923745}, {"input": [78.0, 60.0], "expected": 78.00000001522999}, {"input": [78.0, 60.5], "expected": 78.00000002511}, {"input": [78.0, 61.0], "expected": 78.00000004139937}, {"input": [78.0, 61.5], "expected": 78.00000006825603}, {"input": [78.0, 62.0], "expected": 78.00000011253516}, {"input": [78.0, 62.5], "expected": 78.00000018553912}, {"input": [78.0, 63.0], "expected": 78.00000030590228}, {"input": [78.0, 63.5], "expected": 78.00000050434754}, {"input": [78.0, 64.0], "expected": 78.00000083152837}, {"input": [78.0, 64.5], "expected": 78.00000137095815}, {"input": [78.0, 65.0], "expected": 78.00000226032685}, {"input": [78.0, 65.5], "expected": 78.00000372664623}, {"input": [78.0, 66.0], "expected": 78.00000614419348}, {"input": [78.0, 66.5], "expected": 78.00001013004228}, {"input": [78.0, 67.0], "expected": 78.00001670156132}, {"input": [78.0, 67.5], "expected": 78.00002753607023}, {"input": [78.0, 68.0], "expected": 78.00004539889922}, {"input": [78.0, 68.5], "expected": 78.00007484902864}, {"input": [78.0, 69.0], "expected": 78.00012340218973}, {"input": [78.0, 69.5], "expected": 78.00020344767213}, {"input": [78.0, 70.0], "expected": 78.0003354063729}, {"input": [78.0, 70.5], "expected": 78.00055293147535}, {"input": [78.0, 71.0], "expected": 78.00091146645377}, {"input": [78.0, 71.5], "expected": 78.00150231015975}, {"input": [78.0, 72.0], "expected": 78.00247568513772}, {"input": [78.0, 72.5], "expected": 78.00407844327057}, {"input": [78.0, 73.0], "expected": 78.00671534848912}, {"input": [78.0, 73.5], "expected": 78.0110477448486}, {"input": [78.0, 74.0], "expected": 78.0181499279178}, {"input": [78.0, 74.5], "expected": 78.02975041827263}, {"input": [78.0, 75.0], "expected": 78.04858735157374}, {"input": [78.0, 75.5], "expected": 78.07888973429255}, {"input": [78.0, 76.0], "expected": 78.12692801104298}, {"input": [78.0, 76.5], "expected": 78.20141327798275}, {"input": [78.0, 77.0], "expected": 78.31326168751822}, {"input": [78.0, 77.5], "expected": 78.4740769841801}, {"input": [78.0, 78.0], "expected": 78.69314718055995}, {"input": [78.0, 78.5], "expected": 78.9740769841801}, {"input": [78.0, 79.0], "expected": 79.31326168751822}, {"input": [78.0, 79.5], "expected": 79.70141327798275}, {"input": [78.0, 80.0], "expected": 80.12692801104298}, {"input": [78.0, 80.5], "expected": 80.57888973429255}, {"input": [78.0, 81.0], "expected": 81.04858735157374}, {"input": [78.0, 81.5], "expected": 81.52975041827263}, {"input": [78.0, 82.0], "expected": 82.0181499279178}, {"input": [78.0, 82.5], "expected": 82.5110477448486}, {"input": [78.0, 83.0], "expected": 83.00671534848912}, {"input": [78.0, 83.5], "expected": 83.50407844327057}, {"input": [78.0, 84.0], "expected": 84.00247568513772}, {"input": [78.0, 84.5], "expected": 84.50150231015975}, {"input": [78.0, 85.0], "expected": 85.00091146645377}, {"input": [78.0, 85.5], "expected": 85.50055293147535}, {"input": [78.0, 86.0], "expected": 86.0003354063729}, {"input": [78.0, 86.5], "expected": 86.50020344767213}, {"input": [78.0, 87.0], "expected": 87.00012340218973}, {"input": [78.0, 87.5], "expected": 87.50007484902864}, {"input": [78.0, 88.0], "expected": 88.00004539889922}, {"input": [78.0, 88.5], "expected": 88.50002753607023}, {"input": [78.0, 89.0], "expected": 89.00001670156132}, {"input": [78.0, 89.5], "expected": 89.50001013004228}, {"input": [78.0, 90.0], "expected": 90.00000614419348}, {"input": [78.0, 90.5], "expected": 90.50000372664623}, {"input": [78.0, 91.0], "expected": 91.00000226032685}, {"input": [78.0, 91.5], "expected": 91.50000137095815}, {"input": [78.0, 92.0], "expected": 92.00000083152837}, {"input": [78.0, 92.5], "expected": 92.50000050434754}, {"input": [78.0, 93.0], "expected": 93.00000030590228}, {"input": [78.0, 93.5], "expected": 93.50000018553912}, {"input": [78.0, 94.0], "expected": 94.00000011253516}, {"input": [78.0, 94.5], "expected": 94.50000006825603}, {"input": [78.0, 95.0], "expected": 95.00000004139937}, {"input": [78.0, 95.5], "expected": 95.50000002511}, {"input": [78.0, 96.0], "expected": 96.00000001522999}, {"input": [78.0, 96.5], "expected": 96.50000000923745}, {"input": [78.0, 97.0], "expected": 97.0000000056028}, {"input": [78.0, 97.5], "expected": 97.50000000339827}, {"input": [78.0, 98.0], "expected": 98.00000000206116}, {"input": [78.0, 98.5], "expected": 98.50000000125016}, {"input": [78.0, 99.0], "expected": 99.00000000075826}, {"input": [78.0, 99.5], "expected": 99.5000000004599}, {"input": [78.5, -100.0], "expected": 78.5}, {"input": [78.5, -99.5], "expected": 78.5}, {"input": [78.5, -99.0], "expected": 78.5}, {"input": [78.5, -98.5], "expected": 78.5}, {"input": [78.5, -98.0], "expected": 78.5}, {"input": [78.5, -97.5], "expected": 78.5}, {"input": [78.5, -97.0], "expected": 78.5}, {"input": [78.5, -96.5], "expected": 78.5}, {"input": [78.5, -96.0], "expected": 78.5}, {"input": [78.5, -95.5], "expected": 78.5}, {"input": [78.5, -95.0], "expected": 78.5}, {"input": [78.5, -94.5], "expected": 78.5}, {"input": [78.5, -94.0], "expected": 78.5}, {"input": [78.5, -93.5], "expected": 78.5}, {"input": [78.5, -93.0], "expected": 78.5}, {"input": [78.5, -92.5], "expected": 78.5}, {"input": [78.5, -92.0], "expected": 78.5}, {"input": [78.5, -91.5], "expected": 78.5}, {"input": [78.5, -91.0], "expected": 78.5}, {"input": [78.5, -90.5], "expected": 78.5}, {"input": [78.5, -90.0], "expected": 78.5}, {"input": [78.5, -89.5], "expected": 78.5}, {"input": [78.5, -89.0], "expected": 78.5}, {"input": [78.5, -88.5], "expected": 78.5}, {"input": [78.5, -88.0], "expected": 78.5}, {"input": [78.5, -87.5], "expected": 78.5}, {"input": [78.5, -87.0], "expected": 78.5}, {"input": [78.5, -86.5], "expected": 78.5}, {"input": [78.5, -86.0], "expected": 78.5}, {"input": [78.5, -85.5], "expected": 78.5}, {"input": [78.5, -85.0], "expected": 78.5}, {"input": [78.5, -84.5], "expected": 78.5}, {"input": [78.5, -84.0], "expected": 78.5}, {"input": [78.5, -83.5], "expected": 78.5}, {"input": [78.5, -83.0], "expected": 78.5}, {"input": [78.5, -82.5], "expected": 78.5}, {"input": [78.5, -82.0], "expected": 78.5}, {"input": [78.5, -81.5], "expected": 78.5}, {"input": [78.5, -81.0], "expected": 78.5}, {"input": [78.5, -80.5], "expected": 78.5}, {"input": [78.5, -80.0], "expected": 78.5}, {"input": [78.5, -79.5], "expected": 78.5}, {"input": [78.5, -79.0], "expected": 78.5}, {"input": [78.5, -78.5], "expected": 78.5}, {"input": [78.5, -78.0], "expected": 78.5}, {"input": [78.5, -77.5], "expected": 78.5}, {"input": [78.5, -77.0], "expected": 78.5}, {"input": [78.5, -76.5], "expected": 78.5}, {"input": [78.5, -76.0], "expected": 78.5}, {"input": [78.5, -75.5], "expected": 78.5}, {"input": [78.5, -75.0], "expected": 78.5}, {"input": [78.5, -74.5], "expected": 78.5}, {"input": [78.5, -74.0], "expected": 78.5}, {"input": [78.5, -73.5], "expected": 78.5}, {"input": [78.5, -73.0], "expected": 78.5}, {"input": [78.5, -72.5], "expected": 78.5}, {"input": [78.5, -72.0], "expected": 78.5}, {"input": [78.5, -71.5], "expected": 78.5}, {"input": [78.5, -71.0], "expected": 78.5}, {"input": [78.5, -70.5], "expected": 78.5}, {"input": [78.5, -70.0], "expected": 78.5}, {"input": [78.5, -69.5], "expected": 78.5}, {"input": [78.5, -69.0], "expected": 78.5}, {"input": [78.5, -68.5], "expected": 78.5}, {"input": [78.5, -68.0], "expected": 78.5}, {"input": [78.5, -67.5], "expected": 78.5}, {"input": [78.5, -67.0], "expected": 78.5}, {"input": [78.5, -66.5], "expected": 78.5}, {"input": [78.5, -66.0], "expected": 78.5}, {"input": [78.5, -65.5], "expected": 78.5}, {"input": [78.5, -65.0], "expected": 78.5}, {"input": [78.5, -64.5], "expected": 78.5}, {"input": [78.5, -64.0], "expected": 78.5}, {"input": [78.5, -63.5], "expected": 78.5}, {"input": [78.5, -63.0], "expected": 78.5}, {"input": [78.5, -62.5], "expected": 78.5}, {"input": [78.5, -62.0], "expected": 78.5}, {"input": [78.5, -61.5], "expected": 78.5}, {"input": [78.5, -61.0], "expected": 78.5}, {"input": [78.5, -60.5], "expected": 78.5}, {"input": [78.5, -60.0], "expected": 78.5}, {"input": [78.5, -59.5], "expected": 78.5}, {"input": [78.5, -59.0], "expected": 78.5}, {"input": [78.5, -58.5], "expected": 78.5}, {"input": [78.5, -58.0], "expected": 78.5}, {"input": [78.5, -57.5], "expected": 78.5}, {"input": [78.5, -57.0], "expected": 78.5}, {"input": [78.5, -56.5], "expected": 78.5}, {"input": [78.5, -56.0], "expected": 78.5}, {"input": [78.5, -55.5], "expected": 78.5}, {"input": [78.5, -55.0], "expected": 78.5}, {"input": [78.5, -54.5], "expected": 78.5}, {"input": [78.5, -54.0], "expected": 78.5}, {"input": [78.5, -53.5], "expected": 78.5}, {"input": [78.5, -53.0], "expected": 78.5}, {"input": [78.5, -52.5], "expected": 78.5}, {"input": [78.5, -52.0], "expected": 78.5}, {"input": [78.5, -51.5], "expected": 78.5}, {"input": [78.5, -51.0], "expected": 78.5}, {"input": [78.5, -50.5], "expected": 78.5}, {"input": [78.5, -50.0], "expected": 78.5}, {"input": [78.5, -49.5], "expected": 78.5}, {"input": [78.5, -49.0], "expected": 78.5}, {"input": [78.5, -48.5], "expected": 78.5}, {"input": [78.5, -48.0], "expected": 78.5}, {"input": [78.5, -47.5], "expected": 78.5}, {"input": [78.5, -47.0], "expected": 78.5}, {"input": [78.5, -46.5], "expected": 78.5}, {"input": [78.5, -46.0], "expected": 78.5}, {"input": [78.5, -45.5], "expected": 78.5}, {"input": [78.5, -45.0], "expected": 78.5}, {"input": [78.5, -44.5], "expected": 78.5}, {"input": [78.5, -44.0], "expected": 78.5}, {"input": [78.5, -43.5], "expected": 78.5}, {"input": [78.5, -43.0], "expected": 78.5}, {"input": [78.5, -42.5], "expected": 78.5}, {"input": [78.5, -42.0], "expected": 78.5}, {"input": [78.5, -41.5], "expected": 78.5}, {"input": [78.5, -41.0], "expected": 78.5}, {"input": [78.5, -40.5], "expected": 78.5}, {"input": [78.5, -40.0], "expected": 78.5}, {"input": [78.5, -39.5], "expected": 78.5}, {"input": [78.5, -39.0], "expected": 78.5}, {"input": [78.5, -38.5], "expected": 78.5}, {"input": [78.5, -38.0], "expected": 78.5}, {"input": [78.5, -37.5], "expected": 78.5}, {"input": [78.5, -37.0], "expected": 78.5}, {"input": [78.5, -36.5], "expected": 78.5}, {"input": [78.5, -36.0], "expected": 78.5}, {"input": [78.5, -35.5], "expected": 78.5}, {"input": [78.5, -35.0], "expected": 78.5}, {"input": [78.5, -34.5], "expected": 78.5}, {"input": [78.5, -34.0], "expected": 78.5}, {"input": [78.5, -33.5], "expected": 78.5}, {"input": [78.5, -33.0], "expected": 78.5}, {"input": [78.5, -32.5], "expected": 78.5}, {"input": [78.5, -32.0], "expected": 78.5}, {"input": [78.5, -31.5], "expected": 78.5}, {"input": [78.5, -31.0], "expected": 78.5}, {"input": [78.5, -30.5], "expected": 78.5}, {"input": [78.5, -30.0], "expected": 78.5}, {"input": [78.5, -29.5], "expected": 78.5}, {"input": [78.5, -29.0], "expected": 78.5}, {"input": [78.5, -28.5], "expected": 78.5}, {"input": [78.5, -28.0], "expected": 78.5}, {"input": [78.5, -27.5], "expected": 78.5}, {"input": [78.5, -27.0], "expected": 78.5}, {"input": [78.5, -26.5], "expected": 78.5}, {"input": [78.5, -26.0], "expected": 78.5}, {"input": [78.5, -25.5], "expected": 78.5}, {"input": [78.5, -25.0], "expected": 78.5}, {"input": [78.5, -24.5], "expected": 78.5}, {"input": [78.5, -24.0], "expected": 78.5}, {"input": [78.5, -23.5], "expected": 78.5}, {"input": [78.5, -23.0], "expected": 78.5}, {"input": [78.5, -22.5], "expected": 78.5}, {"input": [78.5, -22.0], "expected": 78.5}, {"input": [78.5, -21.5], "expected": 78.5}, {"input": [78.5, -21.0], "expected": 78.5}, {"input": [78.5, -20.5], "expected": 78.5}, {"input": [78.5, -20.0], "expected": 78.5}, {"input": [78.5, -19.5], "expected": 78.5}, {"input": [78.5, -19.0], "expected": 78.5}, {"input": [78.5, -18.5], "expected": 78.5}, {"input": [78.5, -18.0], "expected": 78.5}, {"input": [78.5, -17.5], "expected": 78.5}, {"input": [78.5, -17.0], "expected": 78.5}, {"input": [78.5, -16.5], "expected": 78.5}, {"input": [78.5, -16.0], "expected": 78.5}, {"input": [78.5, -15.5], "expected": 78.5}, {"input": [78.5, -15.0], "expected": 78.5}, {"input": [78.5, -14.5], "expected": 78.5}, {"input": [78.5, -14.0], "expected": 78.5}, {"input": [78.5, -13.5], "expected": 78.5}, {"input": [78.5, -13.0], "expected": 78.5}, {"input": [78.5, -12.5], "expected": 78.5}, {"input": [78.5, -12.0], "expected": 78.5}, {"input": [78.5, -11.5], "expected": 78.5}, {"input": [78.5, -11.0], "expected": 78.5}, {"input": [78.5, -10.5], "expected": 78.5}, {"input": [78.5, -10.0], "expected": 78.5}, {"input": [78.5, -9.5], "expected": 78.5}, {"input": [78.5, -9.0], "expected": 78.5}, {"input": [78.5, -8.5], "expected": 78.5}, {"input": [78.5, -8.0], "expected": 78.5}, {"input": [78.5, -7.5], "expected": 78.5}, {"input": [78.5, -7.0], "expected": 78.5}, {"input": [78.5, -6.5], "expected": 78.5}, {"input": [78.5, -6.0], "expected": 78.5}, {"input": [78.5, -5.5], "expected": 78.5}, {"input": [78.5, -5.0], "expected": 78.5}, {"input": [78.5, -4.5], "expected": 78.5}, {"input": [78.5, -4.0], "expected": 78.5}, {"input": [78.5, -3.5], "expected": 78.5}, {"input": [78.5, -3.0], "expected": 78.5}, {"input": [78.5, -2.5], "expected": 78.5}, {"input": [78.5, -2.0], "expected": 78.5}, {"input": [78.5, -1.5], "expected": 78.5}, {"input": [78.5, -1.0], "expected": 78.5}, {"input": [78.5, -0.5], "expected": 78.5}, {"input": [78.5, 0.0], "expected": 78.5}, {"input": [78.5, 0.5], "expected": 78.5}, {"input": [78.5, 1.0], "expected": 78.5}, {"input": [78.5, 1.5], "expected": 78.5}, {"input": [78.5, 2.0], "expected": 78.5}, {"input": [78.5, 2.5], "expected": 78.5}, {"input": [78.5, 3.0], "expected": 78.5}, {"input": [78.5, 3.5], "expected": 78.5}, {"input": [78.5, 4.0], "expected": 78.5}, {"input": [78.5, 4.5], "expected": 78.5}, {"input": [78.5, 5.0], "expected": 78.5}, {"input": [78.5, 5.5], "expected": 78.5}, {"input": [78.5, 6.0], "expected": 78.5}, {"input": [78.5, 6.5], "expected": 78.5}, {"input": [78.5, 7.0], "expected": 78.5}, {"input": [78.5, 7.5], "expected": 78.5}, {"input": [78.5, 8.0], "expected": 78.5}, {"input": [78.5, 8.5], "expected": 78.5}, {"input": [78.5, 9.0], "expected": 78.5}, {"input": [78.5, 9.5], "expected": 78.5}, {"input": [78.5, 10.0], "expected": 78.5}, {"input": [78.5, 10.5], "expected": 78.5}, {"input": [78.5, 11.0], "expected": 78.5}, {"input": [78.5, 11.5], "expected": 78.5}, {"input": [78.5, 12.0], "expected": 78.5}, {"input": [78.5, 12.5], "expected": 78.5}, {"input": [78.5, 13.0], "expected": 78.5}, {"input": [78.5, 13.5], "expected": 78.5}, {"input": [78.5, 14.0], "expected": 78.5}, {"input": [78.5, 14.5], "expected": 78.5}, {"input": [78.5, 15.0], "expected": 78.5}, {"input": [78.5, 15.5], "expected": 78.5}, {"input": [78.5, 16.0], "expected": 78.5}, {"input": [78.5, 16.5], "expected": 78.5}, {"input": [78.5, 17.0], "expected": 78.5}, {"input": [78.5, 17.5], "expected": 78.5}, {"input": [78.5, 18.0], "expected": 78.5}, {"input": [78.5, 18.5], "expected": 78.5}, {"input": [78.5, 19.0], "expected": 78.5}, {"input": [78.5, 19.5], "expected": 78.5}, {"input": [78.5, 20.0], "expected": 78.5}, {"input": [78.5, 20.5], "expected": 78.5}, {"input": [78.5, 21.0], "expected": 78.5}, {"input": [78.5, 21.5], "expected": 78.5}, {"input": [78.5, 22.0], "expected": 78.5}, {"input": [78.5, 22.5], "expected": 78.5}, {"input": [78.5, 23.0], "expected": 78.5}, {"input": [78.5, 23.5], "expected": 78.5}, {"input": [78.5, 24.0], "expected": 78.5}, {"input": [78.5, 24.5], "expected": 78.5}, {"input": [78.5, 25.0], "expected": 78.5}, {"input": [78.5, 25.5], "expected": 78.5}, {"input": [78.5, 26.0], "expected": 78.5}, {"input": [78.5, 26.5], "expected": 78.5}, {"input": [78.5, 27.0], "expected": 78.5}, {"input": [78.5, 27.5], "expected": 78.5}, {"input": [78.5, 28.0], "expected": 78.5}, {"input": [78.5, 28.5], "expected": 78.5}, {"input": [78.5, 29.0], "expected": 78.5}, {"input": [78.5, 29.5], "expected": 78.5}, {"input": [78.5, 30.0], "expected": 78.5}, {"input": [78.5, 30.5], "expected": 78.5}, {"input": [78.5, 31.0], "expected": 78.5}, {"input": [78.5, 31.5], "expected": 78.5}, {"input": [78.5, 32.0], "expected": 78.5}, {"input": [78.5, 32.5], "expected": 78.5}, {"input": [78.5, 33.0], "expected": 78.5}, {"input": [78.5, 33.5], "expected": 78.5}, {"input": [78.5, 34.0], "expected": 78.5}, {"input": [78.5, 34.5], "expected": 78.5}, {"input": [78.5, 35.0], "expected": 78.5}, {"input": [78.5, 35.5], "expected": 78.5}, {"input": [78.5, 36.0], "expected": 78.5}, {"input": [78.5, 36.5], "expected": 78.5}, {"input": [78.5, 37.0], "expected": 78.5}, {"input": [78.5, 37.5], "expected": 78.5}, {"input": [78.5, 38.0], "expected": 78.5}, {"input": [78.5, 38.5], "expected": 78.5}, {"input": [78.5, 39.0], "expected": 78.5}, {"input": [78.5, 39.5], "expected": 78.5}, {"input": [78.5, 40.0], "expected": 78.5}, {"input": [78.5, 40.5], "expected": 78.5}, {"input": [78.5, 41.0], "expected": 78.5}, {"input": [78.5, 41.5], "expected": 78.5}, {"input": [78.5, 42.0], "expected": 78.5}, {"input": [78.5, 42.5], "expected": 78.5}, {"input": [78.5, 43.0], "expected": 78.5}, {"input": [78.5, 43.5], "expected": 78.5}, {"input": [78.5, 44.0], "expected": 78.5}, {"input": [78.5, 44.5], "expected": 78.5}, {"input": [78.5, 45.0], "expected": 78.5}, {"input": [78.5, 45.5], "expected": 78.5}, {"input": [78.5, 46.0], "expected": 78.50000000000001}, {"input": [78.5, 46.5], "expected": 78.50000000000001}, {"input": [78.5, 47.0], "expected": 78.50000000000001}, {"input": [78.5, 47.5], "expected": 78.50000000000003}, {"input": [78.5, 48.0], "expected": 78.50000000000006}, {"input": [78.5, 48.5], "expected": 78.5000000000001}, {"input": [78.5, 49.0], "expected": 78.50000000000016}, {"input": [78.5, 49.5], "expected": 78.50000000000026}, {"input": [78.5, 50.0], "expected": 78.50000000000043}, {"input": [78.5, 50.5], "expected": 78.5000000000007}, {"input": [78.5, 51.0], "expected": 78.50000000000114}, {"input": [78.5, 51.5], "expected": 78.50000000000188}, {"input": [78.5, 52.0], "expected": 78.5000000000031}, {"input": [78.5, 52.5], "expected": 78.50000000000512}, {"input": [78.5, 53.0], "expected": 78.50000000000843}, {"input": [78.5, 53.5], "expected": 78.50000000001388}, {"input": [78.5, 54.0], "expected": 78.5000000000229}, {"input": [78.5, 54.5], "expected": 78.50000000003776}, {"input": [78.5, 55.0], "expected": 78.50000000006224}, {"input": [78.5, 55.5], "expected": 78.50000000010262}, {"input": [78.5, 56.0], "expected": 78.5000000001692}, {"input": [78.5, 56.5], "expected": 78.50000000027894}, {"input": [78.5, 57.0], "expected": 78.5000000004599}, {"input": [78.5, 57.5], "expected": 78.50000000075826}, {"input": [78.5, 58.0], "expected": 78.50000000125016}, {"input": [78.5, 58.5], "expected": 78.50000000206116}, {"input": [78.5, 59.0], "expected": 78.50000000339827}, {"input": [78.5, 59.5], "expected": 78.5000000056028}, {"input": [78.5, 60.0], "expected": 78.50000000923745}, {"input": [78.5, 60.5], "expected": 78.50000001522999}, {"input": [78.5, 61.0], "expected": 78.50000002511}, {"input": [78.5, 61.5], "expected": 78.50000004139937}, {"input": [78.5, 62.0], "expected": 78.50000006825603}, {"input": [78.5, 62.5], "expected": 78.50000011253516}, {"input": [78.5, 63.0], "expected": 78.50000018553912}, {"input": [78.5, 63.5], "expected": 78.50000030590228}, {"input": [78.5, 64.0], "expected": 78.50000050434754}, {"input": [78.5, 64.5], "expected": 78.50000083152837}, {"input": [78.5, 65.0], "expected": 78.50000137095815}, {"input": [78.5, 65.5], "expected": 78.50000226032685}, {"input": [78.5, 66.0], "expected": 78.50000372664623}, {"input": [78.5, 66.5], "expected": 78.50000614419348}, {"input": [78.5, 67.0], "expected": 78.50001013004228}, {"input": [78.5, 67.5], "expected": 78.50001670156132}, {"input": [78.5, 68.0], "expected": 78.50002753607023}, {"input": [78.5, 68.5], "expected": 78.50004539889922}, {"input": [78.5, 69.0], "expected": 78.50007484902864}, {"input": [78.5, 69.5], "expected": 78.50012340218973}, {"input": [78.5, 70.0], "expected": 78.50020344767213}, {"input": [78.5, 70.5], "expected": 78.5003354063729}, {"input": [78.5, 71.0], "expected": 78.50055293147535}, {"input": [78.5, 71.5], "expected": 78.50091146645377}, {"input": [78.5, 72.0], "expected": 78.50150231015975}, {"input": [78.5, 72.5], "expected": 78.50247568513772}, {"input": [78.5, 73.0], "expected": 78.50407844327057}, {"input": [78.5, 73.5], "expected": 78.50671534848912}, {"input": [78.5, 74.0], "expected": 78.5110477448486}, {"input": [78.5, 74.5], "expected": 78.5181499279178}, {"input": [78.5, 75.0], "expected": 78.52975041827263}, {"input": [78.5, 75.5], "expected": 78.54858735157374}, {"input": [78.5, 76.0], "expected": 78.57888973429255}, {"input": [78.5, 76.5], "expected": 78.62692801104298}, {"input": [78.5, 77.0], "expected": 78.70141327798275}, {"input": [78.5, 77.5], "expected": 78.81326168751822}, {"input": [78.5, 78.0], "expected": 78.9740769841801}, {"input": [78.5, 78.5], "expected": 79.19314718055995}, {"input": [78.5, 79.0], "expected": 79.4740769841801}, {"input": [78.5, 79.5], "expected": 79.81326168751822}, {"input": [78.5, 80.0], "expected": 80.20141327798275}, {"input": [78.5, 80.5], "expected": 80.62692801104298}, {"input": [78.5, 81.0], "expected": 81.07888973429255}, {"input": [78.5, 81.5], "expected": 81.54858735157374}, {"input": [78.5, 82.0], "expected": 82.02975041827263}, {"input": [78.5, 82.5], "expected": 82.5181499279178}, {"input": [78.5, 83.0], "expected": 83.0110477448486}, {"input": [78.5, 83.5], "expected": 83.50671534848912}, {"input": [78.5, 84.0], "expected": 84.00407844327057}, {"input": [78.5, 84.5], "expected": 84.50247568513772}, {"input": [78.5, 85.0], "expected": 85.00150231015975}, {"input": [78.5, 85.5], "expected": 85.50091146645377}, {"input": [78.5, 86.0], "expected": 86.00055293147535}, {"input": [78.5, 86.5], "expected": 86.5003354063729}, {"input": [78.5, 87.0], "expected": 87.00020344767213}, {"input": [78.5, 87.5], "expected": 87.50012340218973}, {"input": [78.5, 88.0], "expected": 88.00007484902864}, {"input": [78.5, 88.5], "expected": 88.50004539889922}, {"input": [78.5, 89.0], "expected": 89.00002753607023}, {"input": [78.5, 89.5], "expected": 89.50001670156132}, {"input": [78.5, 90.0], "expected": 90.00001013004228}, {"input": [78.5, 90.5], "expected": 90.50000614419348}, {"input": [78.5, 91.0], "expected": 91.00000372664623}, {"input": [78.5, 91.5], "expected": 91.50000226032685}, {"input": [78.5, 92.0], "expected": 92.00000137095815}, {"input": [78.5, 92.5], "expected": 92.50000083152837}, {"input": [78.5, 93.0], "expected": 93.00000050434754}, {"input": [78.5, 93.5], "expected": 93.50000030590228}, {"input": [78.5, 94.0], "expected": 94.00000018553912}, {"input": [78.5, 94.5], "expected": 94.50000011253516}, {"input": [78.5, 95.0], "expected": 95.00000006825603}, {"input": [78.5, 95.5], "expected": 95.50000004139937}, {"input": [78.5, 96.0], "expected": 96.00000002511}, {"input": [78.5, 96.5], "expected": 96.50000001522999}, {"input": [78.5, 97.0], "expected": 97.00000000923745}, {"input": [78.5, 97.5], "expected": 97.5000000056028}, {"input": [78.5, 98.0], "expected": 98.00000000339827}, {"input": [78.5, 98.5], "expected": 98.50000000206116}, {"input": [78.5, 99.0], "expected": 99.00000000125016}, {"input": [78.5, 99.5], "expected": 99.50000000075826}, {"input": [79.0, -100.0], "expected": 79.0}, {"input": [79.0, -99.5], "expected": 79.0}, {"input": [79.0, -99.0], "expected": 79.0}, {"input": [79.0, -98.5], "expected": 79.0}, {"input": [79.0, -98.0], "expected": 79.0}, {"input": [79.0, -97.5], "expected": 79.0}, {"input": [79.0, -97.0], "expected": 79.0}, {"input": [79.0, -96.5], "expected": 79.0}, {"input": [79.0, -96.0], "expected": 79.0}, {"input": [79.0, -95.5], "expected": 79.0}, {"input": [79.0, -95.0], "expected": 79.0}, {"input": [79.0, -94.5], "expected": 79.0}, {"input": [79.0, -94.0], "expected": 79.0}, {"input": [79.0, -93.5], "expected": 79.0}, {"input": [79.0, -93.0], "expected": 79.0}, {"input": [79.0, -92.5], "expected": 79.0}, {"input": [79.0, -92.0], "expected": 79.0}, {"input": [79.0, -91.5], "expected": 79.0}, {"input": [79.0, -91.0], "expected": 79.0}, {"input": [79.0, -90.5], "expected": 79.0}, {"input": [79.0, -90.0], "expected": 79.0}, {"input": [79.0, -89.5], "expected": 79.0}, {"input": [79.0, -89.0], "expected": 79.0}, {"input": [79.0, -88.5], "expected": 79.0}, {"input": [79.0, -88.0], "expected": 79.0}, {"input": [79.0, -87.5], "expected": 79.0}, {"input": [79.0, -87.0], "expected": 79.0}, {"input": [79.0, -86.5], "expected": 79.0}, {"input": [79.0, -86.0], "expected": 79.0}, {"input": [79.0, -85.5], "expected": 79.0}, {"input": [79.0, -85.0], "expected": 79.0}, {"input": [79.0, -84.5], "expected": 79.0}, {"input": [79.0, -84.0], "expected": 79.0}, {"input": [79.0, -83.5], "expected": 79.0}, {"input": [79.0, -83.0], "expected": 79.0}, {"input": [79.0, -82.5], "expected": 79.0}, {"input": [79.0, -82.0], "expected": 79.0}, {"input": [79.0, -81.5], "expected": 79.0}, {"input": [79.0, -81.0], "expected": 79.0}, {"input": [79.0, -80.5], "expected": 79.0}, {"input": [79.0, -80.0], "expected": 79.0}, {"input": [79.0, -79.5], "expected": 79.0}, {"input": [79.0, -79.0], "expected": 79.0}, {"input": [79.0, -78.5], "expected": 79.0}, {"input": [79.0, -78.0], "expected": 79.0}, {"input": [79.0, -77.5], "expected": 79.0}, {"input": [79.0, -77.0], "expected": 79.0}, {"input": [79.0, -76.5], "expected": 79.0}, {"input": [79.0, -76.0], "expected": 79.0}, {"input": [79.0, -75.5], "expected": 79.0}, {"input": [79.0, -75.0], "expected": 79.0}, {"input": [79.0, -74.5], "expected": 79.0}, {"input": [79.0, -74.0], "expected": 79.0}, {"input": [79.0, -73.5], "expected": 79.0}, {"input": [79.0, -73.0], "expected": 79.0}, {"input": [79.0, -72.5], "expected": 79.0}, {"input": [79.0, -72.0], "expected": 79.0}, {"input": [79.0, -71.5], "expected": 79.0}, {"input": [79.0, -71.0], "expected": 79.0}, {"input": [79.0, -70.5], "expected": 79.0}, {"input": [79.0, -70.0], "expected": 79.0}, {"input": [79.0, -69.5], "expected": 79.0}, {"input": [79.0, -69.0], "expected": 79.0}, {"input": [79.0, -68.5], "expected": 79.0}, {"input": [79.0, -68.0], "expected": 79.0}, {"input": [79.0, -67.5], "expected": 79.0}, {"input": [79.0, -67.0], "expected": 79.0}, {"input": [79.0, -66.5], "expected": 79.0}, {"input": [79.0, -66.0], "expected": 79.0}, {"input": [79.0, -65.5], "expected": 79.0}, {"input": [79.0, -65.0], "expected": 79.0}, {"input": [79.0, -64.5], "expected": 79.0}, {"input": [79.0, -64.0], "expected": 79.0}, {"input": [79.0, -63.5], "expected": 79.0}, {"input": [79.0, -63.0], "expected": 79.0}, {"input": [79.0, -62.5], "expected": 79.0}, {"input": [79.0, -62.0], "expected": 79.0}, {"input": [79.0, -61.5], "expected": 79.0}, {"input": [79.0, -61.0], "expected": 79.0}, {"input": [79.0, -60.5], "expected": 79.0}, {"input": [79.0, -60.0], "expected": 79.0}, {"input": [79.0, -59.5], "expected": 79.0}, {"input": [79.0, -59.0], "expected": 79.0}, {"input": [79.0, -58.5], "expected": 79.0}, {"input": [79.0, -58.0], "expected": 79.0}, {"input": [79.0, -57.5], "expected": 79.0}, {"input": [79.0, -57.0], "expected": 79.0}, {"input": [79.0, -56.5], "expected": 79.0}, {"input": [79.0, -56.0], "expected": 79.0}, {"input": [79.0, -55.5], "expected": 79.0}, {"input": [79.0, -55.0], "expected": 79.0}, {"input": [79.0, -54.5], "expected": 79.0}, {"input": [79.0, -54.0], "expected": 79.0}, {"input": [79.0, -53.5], "expected": 79.0}, {"input": [79.0, -53.0], "expected": 79.0}, {"input": [79.0, -52.5], "expected": 79.0}, {"input": [79.0, -52.0], "expected": 79.0}, {"input": [79.0, -51.5], "expected": 79.0}, {"input": [79.0, -51.0], "expected": 79.0}, {"input": [79.0, -50.5], "expected": 79.0}, {"input": [79.0, -50.0], "expected": 79.0}, {"input": [79.0, -49.5], "expected": 79.0}, {"input": [79.0, -49.0], "expected": 79.0}, {"input": [79.0, -48.5], "expected": 79.0}, {"input": [79.0, -48.0], "expected": 79.0}, {"input": [79.0, -47.5], "expected": 79.0}, {"input": [79.0, -47.0], "expected": 79.0}, {"input": [79.0, -46.5], "expected": 79.0}, {"input": [79.0, -46.0], "expected": 79.0}, {"input": [79.0, -45.5], "expected": 79.0}, {"input": [79.0, -45.0], "expected": 79.0}, {"input": [79.0, -44.5], "expected": 79.0}, {"input": [79.0, -44.0], "expected": 79.0}, {"input": [79.0, -43.5], "expected": 79.0}, {"input": [79.0, -43.0], "expected": 79.0}, {"input": [79.0, -42.5], "expected": 79.0}, {"input": [79.0, -42.0], "expected": 79.0}, {"input": [79.0, -41.5], "expected": 79.0}, {"input": [79.0, -41.0], "expected": 79.0}, {"input": [79.0, -40.5], "expected": 79.0}, {"input": [79.0, -40.0], "expected": 79.0}, {"input": [79.0, -39.5], "expected": 79.0}, {"input": [79.0, -39.0], "expected": 79.0}, {"input": [79.0, -38.5], "expected": 79.0}, {"input": [79.0, -38.0], "expected": 79.0}, {"input": [79.0, -37.5], "expected": 79.0}, {"input": [79.0, -37.0], "expected": 79.0}, {"input": [79.0, -36.5], "expected": 79.0}, {"input": [79.0, -36.0], "expected": 79.0}, {"input": [79.0, -35.5], "expected": 79.0}, {"input": [79.0, -35.0], "expected": 79.0}, {"input": [79.0, -34.5], "expected": 79.0}, {"input": [79.0, -34.0], "expected": 79.0}, {"input": [79.0, -33.5], "expected": 79.0}, {"input": [79.0, -33.0], "expected": 79.0}, {"input": [79.0, -32.5], "expected": 79.0}, {"input": [79.0, -32.0], "expected": 79.0}, {"input": [79.0, -31.5], "expected": 79.0}, {"input": [79.0, -31.0], "expected": 79.0}, {"input": [79.0, -30.5], "expected": 79.0}, {"input": [79.0, -30.0], "expected": 79.0}, {"input": [79.0, -29.5], "expected": 79.0}, {"input": [79.0, -29.0], "expected": 79.0}, {"input": [79.0, -28.5], "expected": 79.0}, {"input": [79.0, -28.0], "expected": 79.0}, {"input": [79.0, -27.5], "expected": 79.0}, {"input": [79.0, -27.0], "expected": 79.0}, {"input": [79.0, -26.5], "expected": 79.0}, {"input": [79.0, -26.0], "expected": 79.0}, {"input": [79.0, -25.5], "expected": 79.0}, {"input": [79.0, -25.0], "expected": 79.0}, {"input": [79.0, -24.5], "expected": 79.0}, {"input": [79.0, -24.0], "expected": 79.0}, {"input": [79.0, -23.5], "expected": 79.0}, {"input": [79.0, -23.0], "expected": 79.0}, {"input": [79.0, -22.5], "expected": 79.0}, {"input": [79.0, -22.0], "expected": 79.0}, {"input": [79.0, -21.5], "expected": 79.0}, {"input": [79.0, -21.0], "expected": 79.0}, {"input": [79.0, -20.5], "expected": 79.0}, {"input": [79.0, -20.0], "expected": 79.0}, {"input": [79.0, -19.5], "expected": 79.0}, {"input": [79.0, -19.0], "expected": 79.0}, {"input": [79.0, -18.5], "expected": 79.0}, {"input": [79.0, -18.0], "expected": 79.0}, {"input": [79.0, -17.5], "expected": 79.0}, {"input": [79.0, -17.0], "expected": 79.0}, {"input": [79.0, -16.5], "expected": 79.0}, {"input": [79.0, -16.0], "expected": 79.0}, {"input": [79.0, -15.5], "expected": 79.0}, {"input": [79.0, -15.0], "expected": 79.0}, {"input": [79.0, -14.5], "expected": 79.0}, {"input": [79.0, -14.0], "expected": 79.0}, {"input": [79.0, -13.5], "expected": 79.0}, {"input": [79.0, -13.0], "expected": 79.0}, {"input": [79.0, -12.5], "expected": 79.0}, {"input": [79.0, -12.0], "expected": 79.0}, {"input": [79.0, -11.5], "expected": 79.0}, {"input": [79.0, -11.0], "expected": 79.0}, {"input": [79.0, -10.5], "expected": 79.0}, {"input": [79.0, -10.0], "expected": 79.0}, {"input": [79.0, -9.5], "expected": 79.0}, {"input": [79.0, -9.0], "expected": 79.0}, {"input": [79.0, -8.5], "expected": 79.0}, {"input": [79.0, -8.0], "expected": 79.0}, {"input": [79.0, -7.5], "expected": 79.0}, {"input": [79.0, -7.0], "expected": 79.0}, {"input": [79.0, -6.5], "expected": 79.0}, {"input": [79.0, -6.0], "expected": 79.0}, {"input": [79.0, -5.5], "expected": 79.0}, {"input": [79.0, -5.0], "expected": 79.0}, {"input": [79.0, -4.5], "expected": 79.0}, {"input": [79.0, -4.0], "expected": 79.0}, {"input": [79.0, -3.5], "expected": 79.0}, {"input": [79.0, -3.0], "expected": 79.0}, {"input": [79.0, -2.5], "expected": 79.0}, {"input": [79.0, -2.0], "expected": 79.0}, {"input": [79.0, -1.5], "expected": 79.0}, {"input": [79.0, -1.0], "expected": 79.0}, {"input": [79.0, -0.5], "expected": 79.0}, {"input": [79.0, 0.0], "expected": 79.0}, {"input": [79.0, 0.5], "expected": 79.0}, {"input": [79.0, 1.0], "expected": 79.0}, {"input": [79.0, 1.5], "expected": 79.0}, {"input": [79.0, 2.0], "expected": 79.0}, {"input": [79.0, 2.5], "expected": 79.0}, {"input": [79.0, 3.0], "expected": 79.0}, {"input": [79.0, 3.5], "expected": 79.0}, {"input": [79.0, 4.0], "expected": 79.0}, {"input": [79.0, 4.5], "expected": 79.0}, {"input": [79.0, 5.0], "expected": 79.0}, {"input": [79.0, 5.5], "expected": 79.0}, {"input": [79.0, 6.0], "expected": 79.0}, {"input": [79.0, 6.5], "expected": 79.0}, {"input": [79.0, 7.0], "expected": 79.0}, {"input": [79.0, 7.5], "expected": 79.0}, {"input": [79.0, 8.0], "expected": 79.0}, {"input": [79.0, 8.5], "expected": 79.0}, {"input": [79.0, 9.0], "expected": 79.0}, {"input": [79.0, 9.5], "expected": 79.0}, {"input": [79.0, 10.0], "expected": 79.0}, {"input": [79.0, 10.5], "expected": 79.0}, {"input": [79.0, 11.0], "expected": 79.0}, {"input": [79.0, 11.5], "expected": 79.0}, {"input": [79.0, 12.0], "expected": 79.0}, {"input": [79.0, 12.5], "expected": 79.0}, {"input": [79.0, 13.0], "expected": 79.0}, {"input": [79.0, 13.5], "expected": 79.0}, {"input": [79.0, 14.0], "expected": 79.0}, {"input": [79.0, 14.5], "expected": 79.0}, {"input": [79.0, 15.0], "expected": 79.0}, {"input": [79.0, 15.5], "expected": 79.0}, {"input": [79.0, 16.0], "expected": 79.0}, {"input": [79.0, 16.5], "expected": 79.0}, {"input": [79.0, 17.0], "expected": 79.0}, {"input": [79.0, 17.5], "expected": 79.0}, {"input": [79.0, 18.0], "expected": 79.0}, {"input": [79.0, 18.5], "expected": 79.0}, {"input": [79.0, 19.0], "expected": 79.0}, {"input": [79.0, 19.5], "expected": 79.0}, {"input": [79.0, 20.0], "expected": 79.0}, {"input": [79.0, 20.5], "expected": 79.0}, {"input": [79.0, 21.0], "expected": 79.0}, {"input": [79.0, 21.5], "expected": 79.0}, {"input": [79.0, 22.0], "expected": 79.0}, {"input": [79.0, 22.5], "expected": 79.0}, {"input": [79.0, 23.0], "expected": 79.0}, {"input": [79.0, 23.5], "expected": 79.0}, {"input": [79.0, 24.0], "expected": 79.0}, {"input": [79.0, 24.5], "expected": 79.0}, {"input": [79.0, 25.0], "expected": 79.0}, {"input": [79.0, 25.5], "expected": 79.0}, {"input": [79.0, 26.0], "expected": 79.0}, {"input": [79.0, 26.5], "expected": 79.0}, {"input": [79.0, 27.0], "expected": 79.0}, {"input": [79.0, 27.5], "expected": 79.0}, {"input": [79.0, 28.0], "expected": 79.0}, {"input": [79.0, 28.5], "expected": 79.0}, {"input": [79.0, 29.0], "expected": 79.0}, {"input": [79.0, 29.5], "expected": 79.0}, {"input": [79.0, 30.0], "expected": 79.0}, {"input": [79.0, 30.5], "expected": 79.0}, {"input": [79.0, 31.0], "expected": 79.0}, {"input": [79.0, 31.5], "expected": 79.0}, {"input": [79.0, 32.0], "expected": 79.0}, {"input": [79.0, 32.5], "expected": 79.0}, {"input": [79.0, 33.0], "expected": 79.0}, {"input": [79.0, 33.5], "expected": 79.0}, {"input": [79.0, 34.0], "expected": 79.0}, {"input": [79.0, 34.5], "expected": 79.0}, {"input": [79.0, 35.0], "expected": 79.0}, {"input": [79.0, 35.5], "expected": 79.0}, {"input": [79.0, 36.0], "expected": 79.0}, {"input": [79.0, 36.5], "expected": 79.0}, {"input": [79.0, 37.0], "expected": 79.0}, {"input": [79.0, 37.5], "expected": 79.0}, {"input": [79.0, 38.0], "expected": 79.0}, {"input": [79.0, 38.5], "expected": 79.0}, {"input": [79.0, 39.0], "expected": 79.0}, {"input": [79.0, 39.5], "expected": 79.0}, {"input": [79.0, 40.0], "expected": 79.0}, {"input": [79.0, 40.5], "expected": 79.0}, {"input": [79.0, 41.0], "expected": 79.0}, {"input": [79.0, 41.5], "expected": 79.0}, {"input": [79.0, 42.0], "expected": 79.0}, {"input": [79.0, 42.5], "expected": 79.0}, {"input": [79.0, 43.0], "expected": 79.0}, {"input": [79.0, 43.5], "expected": 79.0}, {"input": [79.0, 44.0], "expected": 79.0}, {"input": [79.0, 44.5], "expected": 79.0}, {"input": [79.0, 45.0], "expected": 79.0}, {"input": [79.0, 45.5], "expected": 79.0}, {"input": [79.0, 46.0], "expected": 79.0}, {"input": [79.0, 46.5], "expected": 79.00000000000001}, {"input": [79.0, 47.0], "expected": 79.00000000000001}, {"input": [79.0, 47.5], "expected": 79.00000000000001}, {"input": [79.0, 48.0], "expected": 79.00000000000003}, {"input": [79.0, 48.5], "expected": 79.00000000000006}, {"input": [79.0, 49.0], "expected": 79.0000000000001}, {"input": [79.0, 49.5], "expected": 79.00000000000016}, {"input": [79.0, 50.0], "expected": 79.00000000000026}, {"input": [79.0, 50.5], "expected": 79.00000000000043}, {"input": [79.0, 51.0], "expected": 79.0000000000007}, {"input": [79.0, 51.5], "expected": 79.00000000000114}, {"input": [79.0, 52.0], "expected": 79.00000000000188}, {"input": [79.0, 52.5], "expected": 79.0000000000031}, {"input": [79.0, 53.0], "expected": 79.00000000000512}, {"input": [79.0, 53.5], "expected": 79.00000000000843}, {"input": [79.0, 54.0], "expected": 79.00000000001388}, {"input": [79.0, 54.5], "expected": 79.0000000000229}, {"input": [79.0, 55.0], "expected": 79.00000000003776}, {"input": [79.0, 55.5], "expected": 79.00000000006224}, {"input": [79.0, 56.0], "expected": 79.00000000010262}, {"input": [79.0, 56.5], "expected": 79.0000000001692}, {"input": [79.0, 57.0], "expected": 79.00000000027894}, {"input": [79.0, 57.5], "expected": 79.0000000004599}, {"input": [79.0, 58.0], "expected": 79.00000000075826}, {"input": [79.0, 58.5], "expected": 79.00000000125016}, {"input": [79.0, 59.0], "expected": 79.00000000206116}, {"input": [79.0, 59.5], "expected": 79.00000000339827}, {"input": [79.0, 60.0], "expected": 79.0000000056028}, {"input": [79.0, 60.5], "expected": 79.00000000923745}, {"input": [79.0, 61.0], "expected": 79.00000001522999}, {"input": [79.0, 61.5], "expected": 79.00000002511}, {"input": [79.0, 62.0], "expected": 79.00000004139937}, {"input": [79.0, 62.5], "expected": 79.00000006825603}, {"input": [79.0, 63.0], "expected": 79.00000011253516}, {"input": [79.0, 63.5], "expected": 79.00000018553912}, {"input": [79.0, 64.0], "expected": 79.00000030590228}, {"input": [79.0, 64.5], "expected": 79.00000050434754}, {"input": [79.0, 65.0], "expected": 79.00000083152837}, {"input": [79.0, 65.5], "expected": 79.00000137095815}, {"input": [79.0, 66.0], "expected": 79.00000226032685}, {"input": [79.0, 66.5], "expected": 79.00000372664623}, {"input": [79.0, 67.0], "expected": 79.00000614419348}, {"input": [79.0, 67.5], "expected": 79.00001013004228}, {"input": [79.0, 68.0], "expected": 79.00001670156132}, {"input": [79.0, 68.5], "expected": 79.00002753607023}, {"input": [79.0, 69.0], "expected": 79.00004539889922}, {"input": [79.0, 69.5], "expected": 79.00007484902864}, {"input": [79.0, 70.0], "expected": 79.00012340218973}, {"input": [79.0, 70.5], "expected": 79.00020344767213}, {"input": [79.0, 71.0], "expected": 79.0003354063729}, {"input": [79.0, 71.5], "expected": 79.00055293147535}, {"input": [79.0, 72.0], "expected": 79.00091146645377}, {"input": [79.0, 72.5], "expected": 79.00150231015975}, {"input": [79.0, 73.0], "expected": 79.00247568513772}, {"input": [79.0, 73.5], "expected": 79.00407844327057}, {"input": [79.0, 74.0], "expected": 79.00671534848912}, {"input": [79.0, 74.5], "expected": 79.0110477448486}, {"input": [79.0, 75.0], "expected": 79.0181499279178}, {"input": [79.0, 75.5], "expected": 79.02975041827263}, {"input": [79.0, 76.0], "expected": 79.04858735157374}, {"input": [79.0, 76.5], "expected": 79.07888973429255}, {"input": [79.0, 77.0], "expected": 79.12692801104298}, {"input": [79.0, 77.5], "expected": 79.20141327798275}, {"input": [79.0, 78.0], "expected": 79.31326168751822}, {"input": [79.0, 78.5], "expected": 79.4740769841801}, {"input": [79.0, 79.0], "expected": 79.69314718055995}, {"input": [79.0, 79.5], "expected": 79.9740769841801}, {"input": [79.0, 80.0], "expected": 80.31326168751822}, {"input": [79.0, 80.5], "expected": 80.70141327798275}, {"input": [79.0, 81.0], "expected": 81.12692801104298}, {"input": [79.0, 81.5], "expected": 81.57888973429255}, {"input": [79.0, 82.0], "expected": 82.04858735157374}, {"input": [79.0, 82.5], "expected": 82.52975041827263}, {"input": [79.0, 83.0], "expected": 83.0181499279178}, {"input": [79.0, 83.5], "expected": 83.5110477448486}, {"input": [79.0, 84.0], "expected": 84.00671534848912}, {"input": [79.0, 84.5], "expected": 84.50407844327057}, {"input": [79.0, 85.0], "expected": 85.00247568513772}, {"input": [79.0, 85.5], "expected": 85.50150231015975}, {"input": [79.0, 86.0], "expected": 86.00091146645377}, {"input": [79.0, 86.5], "expected": 86.50055293147535}, {"input": [79.0, 87.0], "expected": 87.0003354063729}, {"input": [79.0, 87.5], "expected": 87.50020344767213}, {"input": [79.0, 88.0], "expected": 88.00012340218973}, {"input": [79.0, 88.5], "expected": 88.50007484902864}, {"input": [79.0, 89.0], "expected": 89.00004539889922}, {"input": [79.0, 89.5], "expected": 89.50002753607023}, {"input": [79.0, 90.0], "expected": 90.00001670156132}, {"input": [79.0, 90.5], "expected": 90.50001013004228}, {"input": [79.0, 91.0], "expected": 91.00000614419348}, {"input": [79.0, 91.5], "expected": 91.50000372664623}, {"input": [79.0, 92.0], "expected": 92.00000226032685}, {"input": [79.0, 92.5], "expected": 92.50000137095815}, {"input": [79.0, 93.0], "expected": 93.00000083152837}, {"input": [79.0, 93.5], "expected": 93.50000050434754}, {"input": [79.0, 94.0], "expected": 94.00000030590228}, {"input": [79.0, 94.5], "expected": 94.50000018553912}, {"input": [79.0, 95.0], "expected": 95.00000011253516}, {"input": [79.0, 95.5], "expected": 95.50000006825603}, {"input": [79.0, 96.0], "expected": 96.00000004139937}, {"input": [79.0, 96.5], "expected": 96.50000002511}, {"input": [79.0, 97.0], "expected": 97.00000001522999}, {"input": [79.0, 97.5], "expected": 97.50000000923745}, {"input": [79.0, 98.0], "expected": 98.0000000056028}, {"input": [79.0, 98.5], "expected": 98.50000000339827}, {"input": [79.0, 99.0], "expected": 99.00000000206116}, {"input": [79.0, 99.5], "expected": 99.50000000125016}, {"input": [79.5, -100.0], "expected": 79.5}, {"input": [79.5, -99.5], "expected": 79.5}, {"input": [79.5, -99.0], "expected": 79.5}, {"input": [79.5, -98.5], "expected": 79.5}, {"input": [79.5, -98.0], "expected": 79.5}, {"input": [79.5, -97.5], "expected": 79.5}, {"input": [79.5, -97.0], "expected": 79.5}, {"input": [79.5, -96.5], "expected": 79.5}, {"input": [79.5, -96.0], "expected": 79.5}, {"input": [79.5, -95.5], "expected": 79.5}, {"input": [79.5, -95.0], "expected": 79.5}, {"input": [79.5, -94.5], "expected": 79.5}, {"input": [79.5, -94.0], "expected": 79.5}, {"input": [79.5, -93.5], "expected": 79.5}, {"input": [79.5, -93.0], "expected": 79.5}, {"input": [79.5, -92.5], "expected": 79.5}, {"input": [79.5, -92.0], "expected": 79.5}, {"input": [79.5, -91.5], "expected": 79.5}, {"input": [79.5, -91.0], "expected": 79.5}, {"input": [79.5, -90.5], "expected": 79.5}, {"input": [79.5, -90.0], "expected": 79.5}, {"input": [79.5, -89.5], "expected": 79.5}, {"input": [79.5, -89.0], "expected": 79.5}, {"input": [79.5, -88.5], "expected": 79.5}, {"input": [79.5, -88.0], "expected": 79.5}, {"input": [79.5, -87.5], "expected": 79.5}, {"input": [79.5, -87.0], "expected": 79.5}, {"input": [79.5, -86.5], "expected": 79.5}, {"input": [79.5, -86.0], "expected": 79.5}, {"input": [79.5, -85.5], "expected": 79.5}, {"input": [79.5, -85.0], "expected": 79.5}, {"input": [79.5, -84.5], "expected": 79.5}, {"input": [79.5, -84.0], "expected": 79.5}, {"input": [79.5, -83.5], "expected": 79.5}, {"input": [79.5, -83.0], "expected": 79.5}, {"input": [79.5, -82.5], "expected": 79.5}, {"input": [79.5, -82.0], "expected": 79.5}, {"input": [79.5, -81.5], "expected": 79.5}, {"input": [79.5, -81.0], "expected": 79.5}, {"input": [79.5, -80.5], "expected": 79.5}, {"input": [79.5, -80.0], "expected": 79.5}, {"input": [79.5, -79.5], "expected": 79.5}, {"input": [79.5, -79.0], "expected": 79.5}, {"input": [79.5, -78.5], "expected": 79.5}, {"input": [79.5, -78.0], "expected": 79.5}, {"input": [79.5, -77.5], "expected": 79.5}, {"input": [79.5, -77.0], "expected": 79.5}, {"input": [79.5, -76.5], "expected": 79.5}, {"input": [79.5, -76.0], "expected": 79.5}, {"input": [79.5, -75.5], "expected": 79.5}, {"input": [79.5, -75.0], "expected": 79.5}, {"input": [79.5, -74.5], "expected": 79.5}, {"input": [79.5, -74.0], "expected": 79.5}, {"input": [79.5, -73.5], "expected": 79.5}, {"input": [79.5, -73.0], "expected": 79.5}, {"input": [79.5, -72.5], "expected": 79.5}, {"input": [79.5, -72.0], "expected": 79.5}, {"input": [79.5, -71.5], "expected": 79.5}, {"input": [79.5, -71.0], "expected": 79.5}, {"input": [79.5, -70.5], "expected": 79.5}, {"input": [79.5, -70.0], "expected": 79.5}, {"input": [79.5, -69.5], "expected": 79.5}, {"input": [79.5, -69.0], "expected": 79.5}, {"input": [79.5, -68.5], "expected": 79.5}, {"input": [79.5, -68.0], "expected": 79.5}, {"input": [79.5, -67.5], "expected": 79.5}, {"input": [79.5, -67.0], "expected": 79.5}, {"input": [79.5, -66.5], "expected": 79.5}, {"input": [79.5, -66.0], "expected": 79.5}, {"input": [79.5, -65.5], "expected": 79.5}, {"input": [79.5, -65.0], "expected": 79.5}, {"input": [79.5, -64.5], "expected": 79.5}, {"input": [79.5, -64.0], "expected": 79.5}, {"input": [79.5, -63.5], "expected": 79.5}, {"input": [79.5, -63.0], "expected": 79.5}, {"input": [79.5, -62.5], "expected": 79.5}, {"input": [79.5, -62.0], "expected": 79.5}, {"input": [79.5, -61.5], "expected": 79.5}, {"input": [79.5, -61.0], "expected": 79.5}, {"input": [79.5, -60.5], "expected": 79.5}, {"input": [79.5, -60.0], "expected": 79.5}, {"input": [79.5, -59.5], "expected": 79.5}, {"input": [79.5, -59.0], "expected": 79.5}, {"input": [79.5, -58.5], "expected": 79.5}, {"input": [79.5, -58.0], "expected": 79.5}, {"input": [79.5, -57.5], "expected": 79.5}, {"input": [79.5, -57.0], "expected": 79.5}, {"input": [79.5, -56.5], "expected": 79.5}, {"input": [79.5, -56.0], "expected": 79.5}, {"input": [79.5, -55.5], "expected": 79.5}, {"input": [79.5, -55.0], "expected": 79.5}, {"input": [79.5, -54.5], "expected": 79.5}, {"input": [79.5, -54.0], "expected": 79.5}, {"input": [79.5, -53.5], "expected": 79.5}, {"input": [79.5, -53.0], "expected": 79.5}, {"input": [79.5, -52.5], "expected": 79.5}, {"input": [79.5, -52.0], "expected": 79.5}, {"input": [79.5, -51.5], "expected": 79.5}, {"input": [79.5, -51.0], "expected": 79.5}, {"input": [79.5, -50.5], "expected": 79.5}, {"input": [79.5, -50.0], "expected": 79.5}, {"input": [79.5, -49.5], "expected": 79.5}, {"input": [79.5, -49.0], "expected": 79.5}, {"input": [79.5, -48.5], "expected": 79.5}, {"input": [79.5, -48.0], "expected": 79.5}, {"input": [79.5, -47.5], "expected": 79.5}, {"input": [79.5, -47.0], "expected": 79.5}, {"input": [79.5, -46.5], "expected": 79.5}, {"input": [79.5, -46.0], "expected": 79.5}, {"input": [79.5, -45.5], "expected": 79.5}, {"input": [79.5, -45.0], "expected": 79.5}, {"input": [79.5, -44.5], "expected": 79.5}, {"input": [79.5, -44.0], "expected": 79.5}, {"input": [79.5, -43.5], "expected": 79.5}, {"input": [79.5, -43.0], "expected": 79.5}, {"input": [79.5, -42.5], "expected": 79.5}, {"input": [79.5, -42.0], "expected": 79.5}, {"input": [79.5, -41.5], "expected": 79.5}, {"input": [79.5, -41.0], "expected": 79.5}, {"input": [79.5, -40.5], "expected": 79.5}, {"input": [79.5, -40.0], "expected": 79.5}, {"input": [79.5, -39.5], "expected": 79.5}, {"input": [79.5, -39.0], "expected": 79.5}, {"input": [79.5, -38.5], "expected": 79.5}, {"input": [79.5, -38.0], "expected": 79.5}, {"input": [79.5, -37.5], "expected": 79.5}, {"input": [79.5, -37.0], "expected": 79.5}, {"input": [79.5, -36.5], "expected": 79.5}, {"input": [79.5, -36.0], "expected": 79.5}, {"input": [79.5, -35.5], "expected": 79.5}, {"input": [79.5, -35.0], "expected": 79.5}, {"input": [79.5, -34.5], "expected": 79.5}, {"input": [79.5, -34.0], "expected": 79.5}, {"input": [79.5, -33.5], "expected": 79.5}, {"input": [79.5, -33.0], "expected": 79.5}, {"input": [79.5, -32.5], "expected": 79.5}, {"input": [79.5, -32.0], "expected": 79.5}, {"input": [79.5, -31.5], "expected": 79.5}, {"input": [79.5, -31.0], "expected": 79.5}, {"input": [79.5, -30.5], "expected": 79.5}, {"input": [79.5, -30.0], "expected": 79.5}, {"input": [79.5, -29.5], "expected": 79.5}, {"input": [79.5, -29.0], "expected": 79.5}, {"input": [79.5, -28.5], "expected": 79.5}, {"input": [79.5, -28.0], "expected": 79.5}, {"input": [79.5, -27.5], "expected": 79.5}, {"input": [79.5, -27.0], "expected": 79.5}, {"input": [79.5, -26.5], "expected": 79.5}, {"input": [79.5, -26.0], "expected": 79.5}, {"input": [79.5, -25.5], "expected": 79.5}, {"input": [79.5, -25.0], "expected": 79.5}, {"input": [79.5, -24.5], "expected": 79.5}, {"input": [79.5, -24.0], "expected": 79.5}, {"input": [79.5, -23.5], "expected": 79.5}, {"input": [79.5, -23.0], "expected": 79.5}, {"input": [79.5, -22.5], "expected": 79.5}, {"input": [79.5, -22.0], "expected": 79.5}, {"input": [79.5, -21.5], "expected": 79.5}, {"input": [79.5, -21.0], "expected": 79.5}, {"input": [79.5, -20.5], "expected": 79.5}, {"input": [79.5, -20.0], "expected": 79.5}, {"input": [79.5, -19.5], "expected": 79.5}, {"input": [79.5, -19.0], "expected": 79.5}, {"input": [79.5, -18.5], "expected": 79.5}, {"input": [79.5, -18.0], "expected": 79.5}, {"input": [79.5, -17.5], "expected": 79.5}, {"input": [79.5, -17.0], "expected": 79.5}, {"input": [79.5, -16.5], "expected": 79.5}, {"input": [79.5, -16.0], "expected": 79.5}, {"input": [79.5, -15.5], "expected": 79.5}, {"input": [79.5, -15.0], "expected": 79.5}, {"input": [79.5, -14.5], "expected": 79.5}, {"input": [79.5, -14.0], "expected": 79.5}, {"input": [79.5, -13.5], "expected": 79.5}, {"input": [79.5, -13.0], "expected": 79.5}, {"input": [79.5, -12.5], "expected": 79.5}, {"input": [79.5, -12.0], "expected": 79.5}, {"input": [79.5, -11.5], "expected": 79.5}, {"input": [79.5, -11.0], "expected": 79.5}, {"input": [79.5, -10.5], "expected": 79.5}, {"input": [79.5, -10.0], "expected": 79.5}, {"input": [79.5, -9.5], "expected": 79.5}, {"input": [79.5, -9.0], "expected": 79.5}, {"input": [79.5, -8.5], "expected": 79.5}, {"input": [79.5, -8.0], "expected": 79.5}, {"input": [79.5, -7.5], "expected": 79.5}, {"input": [79.5, -7.0], "expected": 79.5}, {"input": [79.5, -6.5], "expected": 79.5}, {"input": [79.5, -6.0], "expected": 79.5}, {"input": [79.5, -5.5], "expected": 79.5}, {"input": [79.5, -5.0], "expected": 79.5}, {"input": [79.5, -4.5], "expected": 79.5}, {"input": [79.5, -4.0], "expected": 79.5}, {"input": [79.5, -3.5], "expected": 79.5}, {"input": [79.5, -3.0], "expected": 79.5}, {"input": [79.5, -2.5], "expected": 79.5}, {"input": [79.5, -2.0], "expected": 79.5}, {"input": [79.5, -1.5], "expected": 79.5}, {"input": [79.5, -1.0], "expected": 79.5}, {"input": [79.5, -0.5], "expected": 79.5}, {"input": [79.5, 0.0], "expected": 79.5}, {"input": [79.5, 0.5], "expected": 79.5}, {"input": [79.5, 1.0], "expected": 79.5}, {"input": [79.5, 1.5], "expected": 79.5}, {"input": [79.5, 2.0], "expected": 79.5}, {"input": [79.5, 2.5], "expected": 79.5}, {"input": [79.5, 3.0], "expected": 79.5}, {"input": [79.5, 3.5], "expected": 79.5}, {"input": [79.5, 4.0], "expected": 79.5}, {"input": [79.5, 4.5], "expected": 79.5}, {"input": [79.5, 5.0], "expected": 79.5}, {"input": [79.5, 5.5], "expected": 79.5}, {"input": [79.5, 6.0], "expected": 79.5}, {"input": [79.5, 6.5], "expected": 79.5}, {"input": [79.5, 7.0], "expected": 79.5}, {"input": [79.5, 7.5], "expected": 79.5}, {"input": [79.5, 8.0], "expected": 79.5}, {"input": [79.5, 8.5], "expected": 79.5}, {"input": [79.5, 9.0], "expected": 79.5}, {"input": [79.5, 9.5], "expected": 79.5}, {"input": [79.5, 10.0], "expected": 79.5}, {"input": [79.5, 10.5], "expected": 79.5}, {"input": [79.5, 11.0], "expected": 79.5}, {"input": [79.5, 11.5], "expected": 79.5}, {"input": [79.5, 12.0], "expected": 79.5}, {"input": [79.5, 12.5], "expected": 79.5}, {"input": [79.5, 13.0], "expected": 79.5}, {"input": [79.5, 13.5], "expected": 79.5}, {"input": [79.5, 14.0], "expected": 79.5}, {"input": [79.5, 14.5], "expected": 79.5}, {"input": [79.5, 15.0], "expected": 79.5}, {"input": [79.5, 15.5], "expected": 79.5}, {"input": [79.5, 16.0], "expected": 79.5}, {"input": [79.5, 16.5], "expected": 79.5}, {"input": [79.5, 17.0], "expected": 79.5}, {"input": [79.5, 17.5], "expected": 79.5}, {"input": [79.5, 18.0], "expected": 79.5}, {"input": [79.5, 18.5], "expected": 79.5}, {"input": [79.5, 19.0], "expected": 79.5}, {"input": [79.5, 19.5], "expected": 79.5}, {"input": [79.5, 20.0], "expected": 79.5}, {"input": [79.5, 20.5], "expected": 79.5}, {"input": [79.5, 21.0], "expected": 79.5}, {"input": [79.5, 21.5], "expected": 79.5}, {"input": [79.5, 22.0], "expected": 79.5}, {"input": [79.5, 22.5], "expected": 79.5}, {"input": [79.5, 23.0], "expected": 79.5}, {"input": [79.5, 23.5], "expected": 79.5}, {"input": [79.5, 24.0], "expected": 79.5}, {"input": [79.5, 24.5], "expected": 79.5}, {"input": [79.5, 25.0], "expected": 79.5}, {"input": [79.5, 25.5], "expected": 79.5}, {"input": [79.5, 26.0], "expected": 79.5}, {"input": [79.5, 26.5], "expected": 79.5}, {"input": [79.5, 27.0], "expected": 79.5}, {"input": [79.5, 27.5], "expected": 79.5}, {"input": [79.5, 28.0], "expected": 79.5}, {"input": [79.5, 28.5], "expected": 79.5}, {"input": [79.5, 29.0], "expected": 79.5}, {"input": [79.5, 29.5], "expected": 79.5}, {"input": [79.5, 30.0], "expected": 79.5}, {"input": [79.5, 30.5], "expected": 79.5}, {"input": [79.5, 31.0], "expected": 79.5}, {"input": [79.5, 31.5], "expected": 79.5}, {"input": [79.5, 32.0], "expected": 79.5}, {"input": [79.5, 32.5], "expected": 79.5}, {"input": [79.5, 33.0], "expected": 79.5}, {"input": [79.5, 33.5], "expected": 79.5}, {"input": [79.5, 34.0], "expected": 79.5}, {"input": [79.5, 34.5], "expected": 79.5}, {"input": [79.5, 35.0], "expected": 79.5}, {"input": [79.5, 35.5], "expected": 79.5}, {"input": [79.5, 36.0], "expected": 79.5}, {"input": [79.5, 36.5], "expected": 79.5}, {"input": [79.5, 37.0], "expected": 79.5}, {"input": [79.5, 37.5], "expected": 79.5}, {"input": [79.5, 38.0], "expected": 79.5}, {"input": [79.5, 38.5], "expected": 79.5}, {"input": [79.5, 39.0], "expected": 79.5}, {"input": [79.5, 39.5], "expected": 79.5}, {"input": [79.5, 40.0], "expected": 79.5}, {"input": [79.5, 40.5], "expected": 79.5}, {"input": [79.5, 41.0], "expected": 79.5}, {"input": [79.5, 41.5], "expected": 79.5}, {"input": [79.5, 42.0], "expected": 79.5}, {"input": [79.5, 42.5], "expected": 79.5}, {"input": [79.5, 43.0], "expected": 79.5}, {"input": [79.5, 43.5], "expected": 79.5}, {"input": [79.5, 44.0], "expected": 79.5}, {"input": [79.5, 44.5], "expected": 79.5}, {"input": [79.5, 45.0], "expected": 79.5}, {"input": [79.5, 45.5], "expected": 79.5}, {"input": [79.5, 46.0], "expected": 79.5}, {"input": [79.5, 46.5], "expected": 79.5}, {"input": [79.5, 47.0], "expected": 79.50000000000001}, {"input": [79.5, 47.5], "expected": 79.50000000000001}, {"input": [79.5, 48.0], "expected": 79.50000000000001}, {"input": [79.5, 48.5], "expected": 79.50000000000003}, {"input": [79.5, 49.0], "expected": 79.50000000000006}, {"input": [79.5, 49.5], "expected": 79.5000000000001}, {"input": [79.5, 50.0], "expected": 79.50000000000016}, {"input": [79.5, 50.5], "expected": 79.50000000000026}, {"input": [79.5, 51.0], "expected": 79.50000000000043}, {"input": [79.5, 51.5], "expected": 79.5000000000007}, {"input": [79.5, 52.0], "expected": 79.50000000000114}, {"input": [79.5, 52.5], "expected": 79.50000000000188}, {"input": [79.5, 53.0], "expected": 79.5000000000031}, {"input": [79.5, 53.5], "expected": 79.50000000000512}, {"input": [79.5, 54.0], "expected": 79.50000000000843}, {"input": [79.5, 54.5], "expected": 79.50000000001388}, {"input": [79.5, 55.0], "expected": 79.5000000000229}, {"input": [79.5, 55.5], "expected": 79.50000000003776}, {"input": [79.5, 56.0], "expected": 79.50000000006224}, {"input": [79.5, 56.5], "expected": 79.50000000010262}, {"input": [79.5, 57.0], "expected": 79.5000000001692}, {"input": [79.5, 57.5], "expected": 79.50000000027894}, {"input": [79.5, 58.0], "expected": 79.5000000004599}, {"input": [79.5, 58.5], "expected": 79.50000000075826}, {"input": [79.5, 59.0], "expected": 79.50000000125016}, {"input": [79.5, 59.5], "expected": 79.50000000206116}, {"input": [79.5, 60.0], "expected": 79.50000000339827}, {"input": [79.5, 60.5], "expected": 79.5000000056028}, {"input": [79.5, 61.0], "expected": 79.50000000923745}, {"input": [79.5, 61.5], "expected": 79.50000001522999}, {"input": [79.5, 62.0], "expected": 79.50000002511}, {"input": [79.5, 62.5], "expected": 79.50000004139937}, {"input": [79.5, 63.0], "expected": 79.50000006825603}, {"input": [79.5, 63.5], "expected": 79.50000011253516}, {"input": [79.5, 64.0], "expected": 79.50000018553912}, {"input": [79.5, 64.5], "expected": 79.50000030590228}, {"input": [79.5, 65.0], "expected": 79.50000050434754}, {"input": [79.5, 65.5], "expected": 79.50000083152837}, {"input": [79.5, 66.0], "expected": 79.50000137095815}, {"input": [79.5, 66.5], "expected": 79.50000226032685}, {"input": [79.5, 67.0], "expected": 79.50000372664623}, {"input": [79.5, 67.5], "expected": 79.50000614419348}, {"input": [79.5, 68.0], "expected": 79.50001013004228}, {"input": [79.5, 68.5], "expected": 79.50001670156132}, {"input": [79.5, 69.0], "expected": 79.50002753607023}, {"input": [79.5, 69.5], "expected": 79.50004539889922}, {"input": [79.5, 70.0], "expected": 79.50007484902864}, {"input": [79.5, 70.5], "expected": 79.50012340218973}, {"input": [79.5, 71.0], "expected": 79.50020344767213}, {"input": [79.5, 71.5], "expected": 79.5003354063729}, {"input": [79.5, 72.0], "expected": 79.50055293147535}, {"input": [79.5, 72.5], "expected": 79.50091146645377}, {"input": [79.5, 73.0], "expected": 79.50150231015975}, {"input": [79.5, 73.5], "expected": 79.50247568513772}, {"input": [79.5, 74.0], "expected": 79.50407844327057}, {"input": [79.5, 74.5], "expected": 79.50671534848912}, {"input": [79.5, 75.0], "expected": 79.5110477448486}, {"input": [79.5, 75.5], "expected": 79.5181499279178}, {"input": [79.5, 76.0], "expected": 79.52975041827263}, {"input": [79.5, 76.5], "expected": 79.54858735157374}, {"input": [79.5, 77.0], "expected": 79.57888973429255}, {"input": [79.5, 77.5], "expected": 79.62692801104298}, {"input": [79.5, 78.0], "expected": 79.70141327798275}, {"input": [79.5, 78.5], "expected": 79.81326168751822}, {"input": [79.5, 79.0], "expected": 79.9740769841801}, {"input": [79.5, 79.5], "expected": 80.19314718055995}, {"input": [79.5, 80.0], "expected": 80.4740769841801}, {"input": [79.5, 80.5], "expected": 80.81326168751822}, {"input": [79.5, 81.0], "expected": 81.20141327798275}, {"input": [79.5, 81.5], "expected": 81.62692801104298}, {"input": [79.5, 82.0], "expected": 82.07888973429255}, {"input": [79.5, 82.5], "expected": 82.54858735157374}, {"input": [79.5, 83.0], "expected": 83.02975041827263}, {"input": [79.5, 83.5], "expected": 83.5181499279178}, {"input": [79.5, 84.0], "expected": 84.0110477448486}, {"input": [79.5, 84.5], "expected": 84.50671534848912}, {"input": [79.5, 85.0], "expected": 85.00407844327057}, {"input": [79.5, 85.5], "expected": 85.50247568513772}, {"input": [79.5, 86.0], "expected": 86.00150231015975}, {"input": [79.5, 86.5], "expected": 86.50091146645377}, {"input": [79.5, 87.0], "expected": 87.00055293147535}, {"input": [79.5, 87.5], "expected": 87.5003354063729}, {"input": [79.5, 88.0], "expected": 88.00020344767213}, {"input": [79.5, 88.5], "expected": 88.50012340218973}, {"input": [79.5, 89.0], "expected": 89.00007484902864}, {"input": [79.5, 89.5], "expected": 89.50004539889922}, {"input": [79.5, 90.0], "expected": 90.00002753607023}, {"input": [79.5, 90.5], "expected": 90.50001670156132}, {"input": [79.5, 91.0], "expected": 91.00001013004228}, {"input": [79.5, 91.5], "expected": 91.50000614419348}, {"input": [79.5, 92.0], "expected": 92.00000372664623}, {"input": [79.5, 92.5], "expected": 92.50000226032685}, {"input": [79.5, 93.0], "expected": 93.00000137095815}, {"input": [79.5, 93.5], "expected": 93.50000083152837}, {"input": [79.5, 94.0], "expected": 94.00000050434754}, {"input": [79.5, 94.5], "expected": 94.50000030590228}, {"input": [79.5, 95.0], "expected": 95.00000018553912}, {"input": [79.5, 95.5], "expected": 95.50000011253516}, {"input": [79.5, 96.0], "expected": 96.00000006825603}, {"input": [79.5, 96.5], "expected": 96.50000004139937}, {"input": [79.5, 97.0], "expected": 97.00000002511}, {"input": [79.5, 97.5], "expected": 97.50000001522999}, {"input": [79.5, 98.0], "expected": 98.00000000923745}, {"input": [79.5, 98.5], "expected": 98.5000000056028}, {"input": [79.5, 99.0], "expected": 99.00000000339827}, {"input": [79.5, 99.5], "expected": 99.50000000206116}, {"input": [80.0, -100.0], "expected": 80.0}, {"input": [80.0, -99.5], "expected": 80.0}, {"input": [80.0, -99.0], "expected": 80.0}, {"input": [80.0, -98.5], "expected": 80.0}, {"input": [80.0, -98.0], "expected": 80.0}, {"input": [80.0, -97.5], "expected": 80.0}, {"input": [80.0, -97.0], "expected": 80.0}, {"input": [80.0, -96.5], "expected": 80.0}, {"input": [80.0, -96.0], "expected": 80.0}, {"input": [80.0, -95.5], "expected": 80.0}, {"input": [80.0, -95.0], "expected": 80.0}, {"input": [80.0, -94.5], "expected": 80.0}, {"input": [80.0, -94.0], "expected": 80.0}, {"input": [80.0, -93.5], "expected": 80.0}, {"input": [80.0, -93.0], "expected": 80.0}, {"input": [80.0, -92.5], "expected": 80.0}, {"input": [80.0, -92.0], "expected": 80.0}, {"input": [80.0, -91.5], "expected": 80.0}, {"input": [80.0, -91.0], "expected": 80.0}, {"input": [80.0, -90.5], "expected": 80.0}, {"input": [80.0, -90.0], "expected": 80.0}, {"input": [80.0, -89.5], "expected": 80.0}, {"input": [80.0, -89.0], "expected": 80.0}, {"input": [80.0, -88.5], "expected": 80.0}, {"input": [80.0, -88.0], "expected": 80.0}, {"input": [80.0, -87.5], "expected": 80.0}, {"input": [80.0, -87.0], "expected": 80.0}, {"input": [80.0, -86.5], "expected": 80.0}, {"input": [80.0, -86.0], "expected": 80.0}, {"input": [80.0, -85.5], "expected": 80.0}, {"input": [80.0, -85.0], "expected": 80.0}, {"input": [80.0, -84.5], "expected": 80.0}, {"input": [80.0, -84.0], "expected": 80.0}, {"input": [80.0, -83.5], "expected": 80.0}, {"input": [80.0, -83.0], "expected": 80.0}, {"input": [80.0, -82.5], "expected": 80.0}, {"input": [80.0, -82.0], "expected": 80.0}, {"input": [80.0, -81.5], "expected": 80.0}, {"input": [80.0, -81.0], "expected": 80.0}, {"input": [80.0, -80.5], "expected": 80.0}, {"input": [80.0, -80.0], "expected": 80.0}, {"input": [80.0, -79.5], "expected": 80.0}, {"input": [80.0, -79.0], "expected": 80.0}, {"input": [80.0, -78.5], "expected": 80.0}, {"input": [80.0, -78.0], "expected": 80.0}, {"input": [80.0, -77.5], "expected": 80.0}, {"input": [80.0, -77.0], "expected": 80.0}, {"input": [80.0, -76.5], "expected": 80.0}, {"input": [80.0, -76.0], "expected": 80.0}, {"input": [80.0, -75.5], "expected": 80.0}, {"input": [80.0, -75.0], "expected": 80.0}, {"input": [80.0, -74.5], "expected": 80.0}, {"input": [80.0, -74.0], "expected": 80.0}, {"input": [80.0, -73.5], "expected": 80.0}, {"input": [80.0, -73.0], "expected": 80.0}, {"input": [80.0, -72.5], "expected": 80.0}, {"input": [80.0, -72.0], "expected": 80.0}, {"input": [80.0, -71.5], "expected": 80.0}, {"input": [80.0, -71.0], "expected": 80.0}, {"input": [80.0, -70.5], "expected": 80.0}, {"input": [80.0, -70.0], "expected": 80.0}, {"input": [80.0, -69.5], "expected": 80.0}, {"input": [80.0, -69.0], "expected": 80.0}, {"input": [80.0, -68.5], "expected": 80.0}, {"input": [80.0, -68.0], "expected": 80.0}, {"input": [80.0, -67.5], "expected": 80.0}, {"input": [80.0, -67.0], "expected": 80.0}, {"input": [80.0, -66.5], "expected": 80.0}, {"input": [80.0, -66.0], "expected": 80.0}, {"input": [80.0, -65.5], "expected": 80.0}, {"input": [80.0, -65.0], "expected": 80.0}, {"input": [80.0, -64.5], "expected": 80.0}, {"input": [80.0, -64.0], "expected": 80.0}, {"input": [80.0, -63.5], "expected": 80.0}, {"input": [80.0, -63.0], "expected": 80.0}, {"input": [80.0, -62.5], "expected": 80.0}, {"input": [80.0, -62.0], "expected": 80.0}, {"input": [80.0, -61.5], "expected": 80.0}, {"input": [80.0, -61.0], "expected": 80.0}, {"input": [80.0, -60.5], "expected": 80.0}, {"input": [80.0, -60.0], "expected": 80.0}, {"input": [80.0, -59.5], "expected": 80.0}, {"input": [80.0, -59.0], "expected": 80.0}, {"input": [80.0, -58.5], "expected": 80.0}, {"input": [80.0, -58.0], "expected": 80.0}, {"input": [80.0, -57.5], "expected": 80.0}, {"input": [80.0, -57.0], "expected": 80.0}, {"input": [80.0, -56.5], "expected": 80.0}, {"input": [80.0, -56.0], "expected": 80.0}, {"input": [80.0, -55.5], "expected": 80.0}, {"input": [80.0, -55.0], "expected": 80.0}, {"input": [80.0, -54.5], "expected": 80.0}, {"input": [80.0, -54.0], "expected": 80.0}, {"input": [80.0, -53.5], "expected": 80.0}, {"input": [80.0, -53.0], "expected": 80.0}, {"input": [80.0, -52.5], "expected": 80.0}, {"input": [80.0, -52.0], "expected": 80.0}, {"input": [80.0, -51.5], "expected": 80.0}, {"input": [80.0, -51.0], "expected": 80.0}, {"input": [80.0, -50.5], "expected": 80.0}, {"input": [80.0, -50.0], "expected": 80.0}, {"input": [80.0, -49.5], "expected": 80.0}, {"input": [80.0, -49.0], "expected": 80.0}, {"input": [80.0, -48.5], "expected": 80.0}, {"input": [80.0, -48.0], "expected": 80.0}, {"input": [80.0, -47.5], "expected": 80.0}, {"input": [80.0, -47.0], "expected": 80.0}, {"input": [80.0, -46.5], "expected": 80.0}, {"input": [80.0, -46.0], "expected": 80.0}, {"input": [80.0, -45.5], "expected": 80.0}, {"input": [80.0, -45.0], "expected": 80.0}, {"input": [80.0, -44.5], "expected": 80.0}, {"input": [80.0, -44.0], "expected": 80.0}, {"input": [80.0, -43.5], "expected": 80.0}, {"input": [80.0, -43.0], "expected": 80.0}, {"input": [80.0, -42.5], "expected": 80.0}, {"input": [80.0, -42.0], "expected": 80.0}, {"input": [80.0, -41.5], "expected": 80.0}, {"input": [80.0, -41.0], "expected": 80.0}, {"input": [80.0, -40.5], "expected": 80.0}, {"input": [80.0, -40.0], "expected": 80.0}, {"input": [80.0, -39.5], "expected": 80.0}, {"input": [80.0, -39.0], "expected": 80.0}, {"input": [80.0, -38.5], "expected": 80.0}, {"input": [80.0, -38.0], "expected": 80.0}, {"input": [80.0, -37.5], "expected": 80.0}, {"input": [80.0, -37.0], "expected": 80.0}, {"input": [80.0, -36.5], "expected": 80.0}, {"input": [80.0, -36.0], "expected": 80.0}, {"input": [80.0, -35.5], "expected": 80.0}, {"input": [80.0, -35.0], "expected": 80.0}, {"input": [80.0, -34.5], "expected": 80.0}, {"input": [80.0, -34.0], "expected": 80.0}, {"input": [80.0, -33.5], "expected": 80.0}, {"input": [80.0, -33.0], "expected": 80.0}, {"input": [80.0, -32.5], "expected": 80.0}, {"input": [80.0, -32.0], "expected": 80.0}, {"input": [80.0, -31.5], "expected": 80.0}, {"input": [80.0, -31.0], "expected": 80.0}, {"input": [80.0, -30.5], "expected": 80.0}, {"input": [80.0, -30.0], "expected": 80.0}, {"input": [80.0, -29.5], "expected": 80.0}, {"input": [80.0, -29.0], "expected": 80.0}, {"input": [80.0, -28.5], "expected": 80.0}, {"input": [80.0, -28.0], "expected": 80.0}, {"input": [80.0, -27.5], "expected": 80.0}, {"input": [80.0, -27.0], "expected": 80.0}, {"input": [80.0, -26.5], "expected": 80.0}, {"input": [80.0, -26.0], "expected": 80.0}, {"input": [80.0, -25.5], "expected": 80.0}, {"input": [80.0, -25.0], "expected": 80.0}, {"input": [80.0, -24.5], "expected": 80.0}, {"input": [80.0, -24.0], "expected": 80.0}, {"input": [80.0, -23.5], "expected": 80.0}, {"input": [80.0, -23.0], "expected": 80.0}, {"input": [80.0, -22.5], "expected": 80.0}, {"input": [80.0, -22.0], "expected": 80.0}, {"input": [80.0, -21.5], "expected": 80.0}, {"input": [80.0, -21.0], "expected": 80.0}, {"input": [80.0, -20.5], "expected": 80.0}, {"input": [80.0, -20.0], "expected": 80.0}, {"input": [80.0, -19.5], "expected": 80.0}, {"input": [80.0, -19.0], "expected": 80.0}, {"input": [80.0, -18.5], "expected": 80.0}, {"input": [80.0, -18.0], "expected": 80.0}, {"input": [80.0, -17.5], "expected": 80.0}, {"input": [80.0, -17.0], "expected": 80.0}, {"input": [80.0, -16.5], "expected": 80.0}, {"input": [80.0, -16.0], "expected": 80.0}, {"input": [80.0, -15.5], "expected": 80.0}, {"input": [80.0, -15.0], "expected": 80.0}, {"input": [80.0, -14.5], "expected": 80.0}, {"input": [80.0, -14.0], "expected": 80.0}, {"input": [80.0, -13.5], "expected": 80.0}, {"input": [80.0, -13.0], "expected": 80.0}, {"input": [80.0, -12.5], "expected": 80.0}, {"input": [80.0, -12.0], "expected": 80.0}, {"input": [80.0, -11.5], "expected": 80.0}, {"input": [80.0, -11.0], "expected": 80.0}, {"input": [80.0, -10.5], "expected": 80.0}, {"input": [80.0, -10.0], "expected": 80.0}, {"input": [80.0, -9.5], "expected": 80.0}, {"input": [80.0, -9.0], "expected": 80.0}, {"input": [80.0, -8.5], "expected": 80.0}, {"input": [80.0, -8.0], "expected": 80.0}, {"input": [80.0, -7.5], "expected": 80.0}, {"input": [80.0, -7.0], "expected": 80.0}, {"input": [80.0, -6.5], "expected": 80.0}, {"input": [80.0, -6.0], "expected": 80.0}, {"input": [80.0, -5.5], "expected": 80.0}, {"input": [80.0, -5.0], "expected": 80.0}, {"input": [80.0, -4.5], "expected": 80.0}, {"input": [80.0, -4.0], "expected": 80.0}, {"input": [80.0, -3.5], "expected": 80.0}, {"input": [80.0, -3.0], "expected": 80.0}, {"input": [80.0, -2.5], "expected": 80.0}, {"input": [80.0, -2.0], "expected": 80.0}, {"input": [80.0, -1.5], "expected": 80.0}, {"input": [80.0, -1.0], "expected": 80.0}, {"input": [80.0, -0.5], "expected": 80.0}, {"input": [80.0, 0.0], "expected": 80.0}, {"input": [80.0, 0.5], "expected": 80.0}, {"input": [80.0, 1.0], "expected": 80.0}, {"input": [80.0, 1.5], "expected": 80.0}, {"input": [80.0, 2.0], "expected": 80.0}, {"input": [80.0, 2.5], "expected": 80.0}, {"input": [80.0, 3.0], "expected": 80.0}, {"input": [80.0, 3.5], "expected": 80.0}, {"input": [80.0, 4.0], "expected": 80.0}, {"input": [80.0, 4.5], "expected": 80.0}, {"input": [80.0, 5.0], "expected": 80.0}, {"input": [80.0, 5.5], "expected": 80.0}, {"input": [80.0, 6.0], "expected": 80.0}, {"input": [80.0, 6.5], "expected": 80.0}, {"input": [80.0, 7.0], "expected": 80.0}, {"input": [80.0, 7.5], "expected": 80.0}, {"input": [80.0, 8.0], "expected": 80.0}, {"input": [80.0, 8.5], "expected": 80.0}, {"input": [80.0, 9.0], "expected": 80.0}, {"input": [80.0, 9.5], "expected": 80.0}, {"input": [80.0, 10.0], "expected": 80.0}, {"input": [80.0, 10.5], "expected": 80.0}, {"input": [80.0, 11.0], "expected": 80.0}, {"input": [80.0, 11.5], "expected": 80.0}, {"input": [80.0, 12.0], "expected": 80.0}, {"input": [80.0, 12.5], "expected": 80.0}, {"input": [80.0, 13.0], "expected": 80.0}, {"input": [80.0, 13.5], "expected": 80.0}, {"input": [80.0, 14.0], "expected": 80.0}, {"input": [80.0, 14.5], "expected": 80.0}, {"input": [80.0, 15.0], "expected": 80.0}, {"input": [80.0, 15.5], "expected": 80.0}, {"input": [80.0, 16.0], "expected": 80.0}, {"input": [80.0, 16.5], "expected": 80.0}, {"input": [80.0, 17.0], "expected": 80.0}, {"input": [80.0, 17.5], "expected": 80.0}, {"input": [80.0, 18.0], "expected": 80.0}, {"input": [80.0, 18.5], "expected": 80.0}, {"input": [80.0, 19.0], "expected": 80.0}, {"input": [80.0, 19.5], "expected": 80.0}, {"input": [80.0, 20.0], "expected": 80.0}, {"input": [80.0, 20.5], "expected": 80.0}, {"input": [80.0, 21.0], "expected": 80.0}, {"input": [80.0, 21.5], "expected": 80.0}, {"input": [80.0, 22.0], "expected": 80.0}, {"input": [80.0, 22.5], "expected": 80.0}, {"input": [80.0, 23.0], "expected": 80.0}, {"input": [80.0, 23.5], "expected": 80.0}, {"input": [80.0, 24.0], "expected": 80.0}, {"input": [80.0, 24.5], "expected": 80.0}, {"input": [80.0, 25.0], "expected": 80.0}, {"input": [80.0, 25.5], "expected": 80.0}, {"input": [80.0, 26.0], "expected": 80.0}, {"input": [80.0, 26.5], "expected": 80.0}, {"input": [80.0, 27.0], "expected": 80.0}, {"input": [80.0, 27.5], "expected": 80.0}, {"input": [80.0, 28.0], "expected": 80.0}, {"input": [80.0, 28.5], "expected": 80.0}, {"input": [80.0, 29.0], "expected": 80.0}, {"input": [80.0, 29.5], "expected": 80.0}, {"input": [80.0, 30.0], "expected": 80.0}, {"input": [80.0, 30.5], "expected": 80.0}, {"input": [80.0, 31.0], "expected": 80.0}, {"input": [80.0, 31.5], "expected": 80.0}, {"input": [80.0, 32.0], "expected": 80.0}, {"input": [80.0, 32.5], "expected": 80.0}, {"input": [80.0, 33.0], "expected": 80.0}, {"input": [80.0, 33.5], "expected": 80.0}, {"input": [80.0, 34.0], "expected": 80.0}, {"input": [80.0, 34.5], "expected": 80.0}, {"input": [80.0, 35.0], "expected": 80.0}, {"input": [80.0, 35.5], "expected": 80.0}, {"input": [80.0, 36.0], "expected": 80.0}, {"input": [80.0, 36.5], "expected": 80.0}, {"input": [80.0, 37.0], "expected": 80.0}, {"input": [80.0, 37.5], "expected": 80.0}, {"input": [80.0, 38.0], "expected": 80.0}, {"input": [80.0, 38.5], "expected": 80.0}, {"input": [80.0, 39.0], "expected": 80.0}, {"input": [80.0, 39.5], "expected": 80.0}, {"input": [80.0, 40.0], "expected": 80.0}, {"input": [80.0, 40.5], "expected": 80.0}, {"input": [80.0, 41.0], "expected": 80.0}, {"input": [80.0, 41.5], "expected": 80.0}, {"input": [80.0, 42.0], "expected": 80.0}, {"input": [80.0, 42.5], "expected": 80.0}, {"input": [80.0, 43.0], "expected": 80.0}, {"input": [80.0, 43.5], "expected": 80.0}, {"input": [80.0, 44.0], "expected": 80.0}, {"input": [80.0, 44.5], "expected": 80.0}, {"input": [80.0, 45.0], "expected": 80.0}, {"input": [80.0, 45.5], "expected": 80.0}, {"input": [80.0, 46.0], "expected": 80.0}, {"input": [80.0, 46.5], "expected": 80.0}, {"input": [80.0, 47.0], "expected": 80.0}, {"input": [80.0, 47.5], "expected": 80.00000000000001}, {"input": [80.0, 48.0], "expected": 80.00000000000001}, {"input": [80.0, 48.5], "expected": 80.00000000000001}, {"input": [80.0, 49.0], "expected": 80.00000000000003}, {"input": [80.0, 49.5], "expected": 80.00000000000006}, {"input": [80.0, 50.0], "expected": 80.0000000000001}, {"input": [80.0, 50.5], "expected": 80.00000000000016}, {"input": [80.0, 51.0], "expected": 80.00000000000026}, {"input": [80.0, 51.5], "expected": 80.00000000000043}, {"input": [80.0, 52.0], "expected": 80.0000000000007}, {"input": [80.0, 52.5], "expected": 80.00000000000114}, {"input": [80.0, 53.0], "expected": 80.00000000000188}, {"input": [80.0, 53.5], "expected": 80.0000000000031}, {"input": [80.0, 54.0], "expected": 80.00000000000512}, {"input": [80.0, 54.5], "expected": 80.00000000000843}, {"input": [80.0, 55.0], "expected": 80.00000000001388}, {"input": [80.0, 55.5], "expected": 80.0000000000229}, {"input": [80.0, 56.0], "expected": 80.00000000003776}, {"input": [80.0, 56.5], "expected": 80.00000000006224}, {"input": [80.0, 57.0], "expected": 80.00000000010262}, {"input": [80.0, 57.5], "expected": 80.0000000001692}, {"input": [80.0, 58.0], "expected": 80.00000000027894}, {"input": [80.0, 58.5], "expected": 80.0000000004599}, {"input": [80.0, 59.0], "expected": 80.00000000075826}, {"input": [80.0, 59.5], "expected": 80.00000000125016}, {"input": [80.0, 60.0], "expected": 80.00000000206116}, {"input": [80.0, 60.5], "expected": 80.00000000339827}, {"input": [80.0, 61.0], "expected": 80.0000000056028}, {"input": [80.0, 61.5], "expected": 80.00000000923745}, {"input": [80.0, 62.0], "expected": 80.00000001522999}, {"input": [80.0, 62.5], "expected": 80.00000002511}, {"input": [80.0, 63.0], "expected": 80.00000004139937}, {"input": [80.0, 63.5], "expected": 80.00000006825603}, {"input": [80.0, 64.0], "expected": 80.00000011253516}, {"input": [80.0, 64.5], "expected": 80.00000018553912}, {"input": [80.0, 65.0], "expected": 80.00000030590228}, {"input": [80.0, 65.5], "expected": 80.00000050434754}, {"input": [80.0, 66.0], "expected": 80.00000083152837}, {"input": [80.0, 66.5], "expected": 80.00000137095815}, {"input": [80.0, 67.0], "expected": 80.00000226032685}, {"input": [80.0, 67.5], "expected": 80.00000372664623}, {"input": [80.0, 68.0], "expected": 80.00000614419348}, {"input": [80.0, 68.5], "expected": 80.00001013004228}, {"input": [80.0, 69.0], "expected": 80.00001670156132}, {"input": [80.0, 69.5], "expected": 80.00002753607023}, {"input": [80.0, 70.0], "expected": 80.00004539889922}, {"input": [80.0, 70.5], "expected": 80.00007484902864}, {"input": [80.0, 71.0], "expected": 80.00012340218973}, {"input": [80.0, 71.5], "expected": 80.00020344767213}, {"input": [80.0, 72.0], "expected": 80.0003354063729}, {"input": [80.0, 72.5], "expected": 80.00055293147535}, {"input": [80.0, 73.0], "expected": 80.00091146645377}, {"input": [80.0, 73.5], "expected": 80.00150231015975}, {"input": [80.0, 74.0], "expected": 80.00247568513772}, {"input": [80.0, 74.5], "expected": 80.00407844327057}, {"input": [80.0, 75.0], "expected": 80.00671534848912}, {"input": [80.0, 75.5], "expected": 80.0110477448486}, {"input": [80.0, 76.0], "expected": 80.0181499279178}, {"input": [80.0, 76.5], "expected": 80.02975041827263}, {"input": [80.0, 77.0], "expected": 80.04858735157374}, {"input": [80.0, 77.5], "expected": 80.07888973429255}, {"input": [80.0, 78.0], "expected": 80.12692801104298}, {"input": [80.0, 78.5], "expected": 80.20141327798275}, {"input": [80.0, 79.0], "expected": 80.31326168751822}, {"input": [80.0, 79.5], "expected": 80.4740769841801}, {"input": [80.0, 80.0], "expected": 80.69314718055995}, {"input": [80.0, 80.5], "expected": 80.9740769841801}, {"input": [80.0, 81.0], "expected": 81.31326168751822}, {"input": [80.0, 81.5], "expected": 81.70141327798275}, {"input": [80.0, 82.0], "expected": 82.12692801104298}, {"input": [80.0, 82.5], "expected": 82.57888973429255}, {"input": [80.0, 83.0], "expected": 83.04858735157374}, {"input": [80.0, 83.5], "expected": 83.52975041827263}, {"input": [80.0, 84.0], "expected": 84.0181499279178}, {"input": [80.0, 84.5], "expected": 84.5110477448486}, {"input": [80.0, 85.0], "expected": 85.00671534848912}, {"input": [80.0, 85.5], "expected": 85.50407844327057}, {"input": [80.0, 86.0], "expected": 86.00247568513772}, {"input": [80.0, 86.5], "expected": 86.50150231015975}, {"input": [80.0, 87.0], "expected": 87.00091146645377}, {"input": [80.0, 87.5], "expected": 87.50055293147535}, {"input": [80.0, 88.0], "expected": 88.0003354063729}, {"input": [80.0, 88.5], "expected": 88.50020344767213}, {"input": [80.0, 89.0], "expected": 89.00012340218973}, {"input": [80.0, 89.5], "expected": 89.50007484902864}, {"input": [80.0, 90.0], "expected": 90.00004539889922}, {"input": [80.0, 90.5], "expected": 90.50002753607023}, {"input": [80.0, 91.0], "expected": 91.00001670156132}, {"input": [80.0, 91.5], "expected": 91.50001013004228}, {"input": [80.0, 92.0], "expected": 92.00000614419348}, {"input": [80.0, 92.5], "expected": 92.50000372664623}, {"input": [80.0, 93.0], "expected": 93.00000226032685}, {"input": [80.0, 93.5], "expected": 93.50000137095815}, {"input": [80.0, 94.0], "expected": 94.00000083152837}, {"input": [80.0, 94.5], "expected": 94.50000050434754}, {"input": [80.0, 95.0], "expected": 95.00000030590228}, {"input": [80.0, 95.5], "expected": 95.50000018553912}, {"input": [80.0, 96.0], "expected": 96.00000011253516}, {"input": [80.0, 96.5], "expected": 96.50000006825603}, {"input": [80.0, 97.0], "expected": 97.00000004139937}, {"input": [80.0, 97.5], "expected": 97.50000002511}, {"input": [80.0, 98.0], "expected": 98.00000001522999}, {"input": [80.0, 98.5], "expected": 98.50000000923745}, {"input": [80.0, 99.0], "expected": 99.0000000056028}, {"input": [80.0, 99.5], "expected": 99.50000000339827}, {"input": [80.5, -100.0], "expected": 80.5}, {"input": [80.5, -99.5], "expected": 80.5}, {"input": [80.5, -99.0], "expected": 80.5}, {"input": [80.5, -98.5], "expected": 80.5}, {"input": [80.5, -98.0], "expected": 80.5}, {"input": [80.5, -97.5], "expected": 80.5}, {"input": [80.5, -97.0], "expected": 80.5}, {"input": [80.5, -96.5], "expected": 80.5}, {"input": [80.5, -96.0], "expected": 80.5}, {"input": [80.5, -95.5], "expected": 80.5}, {"input": [80.5, -95.0], "expected": 80.5}, {"input": [80.5, -94.5], "expected": 80.5}, {"input": [80.5, -94.0], "expected": 80.5}, {"input": [80.5, -93.5], "expected": 80.5}, {"input": [80.5, -93.0], "expected": 80.5}, {"input": [80.5, -92.5], "expected": 80.5}, {"input": [80.5, -92.0], "expected": 80.5}, {"input": [80.5, -91.5], "expected": 80.5}, {"input": [80.5, -91.0], "expected": 80.5}, {"input": [80.5, -90.5], "expected": 80.5}, {"input": [80.5, -90.0], "expected": 80.5}, {"input": [80.5, -89.5], "expected": 80.5}, {"input": [80.5, -89.0], "expected": 80.5}, {"input": [80.5, -88.5], "expected": 80.5}, {"input": [80.5, -88.0], "expected": 80.5}, {"input": [80.5, -87.5], "expected": 80.5}, {"input": [80.5, -87.0], "expected": 80.5}, {"input": [80.5, -86.5], "expected": 80.5}, {"input": [80.5, -86.0], "expected": 80.5}, {"input": [80.5, -85.5], "expected": 80.5}, {"input": [80.5, -85.0], "expected": 80.5}, {"input": [80.5, -84.5], "expected": 80.5}, {"input": [80.5, -84.0], "expected": 80.5}, {"input": [80.5, -83.5], "expected": 80.5}, {"input": [80.5, -83.0], "expected": 80.5}, {"input": [80.5, -82.5], "expected": 80.5}, {"input": [80.5, -82.0], "expected": 80.5}, {"input": [80.5, -81.5], "expected": 80.5}, {"input": [80.5, -81.0], "expected": 80.5}, {"input": [80.5, -80.5], "expected": 80.5}, {"input": [80.5, -80.0], "expected": 80.5}, {"input": [80.5, -79.5], "expected": 80.5}, {"input": [80.5, -79.0], "expected": 80.5}, {"input": [80.5, -78.5], "expected": 80.5}, {"input": [80.5, -78.0], "expected": 80.5}, {"input": [80.5, -77.5], "expected": 80.5}, {"input": [80.5, -77.0], "expected": 80.5}, {"input": [80.5, -76.5], "expected": 80.5}, {"input": [80.5, -76.0], "expected": 80.5}, {"input": [80.5, -75.5], "expected": 80.5}, {"input": [80.5, -75.0], "expected": 80.5}, {"input": [80.5, -74.5], "expected": 80.5}, {"input": [80.5, -74.0], "expected": 80.5}, {"input": [80.5, -73.5], "expected": 80.5}, {"input": [80.5, -73.0], "expected": 80.5}, {"input": [80.5, -72.5], "expected": 80.5}, {"input": [80.5, -72.0], "expected": 80.5}, {"input": [80.5, -71.5], "expected": 80.5}, {"input": [80.5, -71.0], "expected": 80.5}, {"input": [80.5, -70.5], "expected": 80.5}, {"input": [80.5, -70.0], "expected": 80.5}, {"input": [80.5, -69.5], "expected": 80.5}, {"input": [80.5, -69.0], "expected": 80.5}, {"input": [80.5, -68.5], "expected": 80.5}, {"input": [80.5, -68.0], "expected": 80.5}, {"input": [80.5, -67.5], "expected": 80.5}, {"input": [80.5, -67.0], "expected": 80.5}, {"input": [80.5, -66.5], "expected": 80.5}, {"input": [80.5, -66.0], "expected": 80.5}, {"input": [80.5, -65.5], "expected": 80.5}, {"input": [80.5, -65.0], "expected": 80.5}, {"input": [80.5, -64.5], "expected": 80.5}, {"input": [80.5, -64.0], "expected": 80.5}, {"input": [80.5, -63.5], "expected": 80.5}, {"input": [80.5, -63.0], "expected": 80.5}, {"input": [80.5, -62.5], "expected": 80.5}, {"input": [80.5, -62.0], "expected": 80.5}, {"input": [80.5, -61.5], "expected": 80.5}, {"input": [80.5, -61.0], "expected": 80.5}, {"input": [80.5, -60.5], "expected": 80.5}, {"input": [80.5, -60.0], "expected": 80.5}, {"input": [80.5, -59.5], "expected": 80.5}, {"input": [80.5, -59.0], "expected": 80.5}, {"input": [80.5, -58.5], "expected": 80.5}, {"input": [80.5, -58.0], "expected": 80.5}, {"input": [80.5, -57.5], "expected": 80.5}, {"input": [80.5, -57.0], "expected": 80.5}, {"input": [80.5, -56.5], "expected": 80.5}, {"input": [80.5, -56.0], "expected": 80.5}, {"input": [80.5, -55.5], "expected": 80.5}, {"input": [80.5, -55.0], "expected": 80.5}, {"input": [80.5, -54.5], "expected": 80.5}, {"input": [80.5, -54.0], "expected": 80.5}, {"input": [80.5, -53.5], "expected": 80.5}, {"input": [80.5, -53.0], "expected": 80.5}, {"input": [80.5, -52.5], "expected": 80.5}, {"input": [80.5, -52.0], "expected": 80.5}, {"input": [80.5, -51.5], "expected": 80.5}, {"input": [80.5, -51.0], "expected": 80.5}, {"input": [80.5, -50.5], "expected": 80.5}, {"input": [80.5, -50.0], "expected": 80.5}, {"input": [80.5, -49.5], "expected": 80.5}, {"input": [80.5, -49.0], "expected": 80.5}, {"input": [80.5, -48.5], "expected": 80.5}, {"input": [80.5, -48.0], "expected": 80.5}, {"input": [80.5, -47.5], "expected": 80.5}, {"input": [80.5, -47.0], "expected": 80.5}, {"input": [80.5, -46.5], "expected": 80.5}, {"input": [80.5, -46.0], "expected": 80.5}, {"input": [80.5, -45.5], "expected": 80.5}, {"input": [80.5, -45.0], "expected": 80.5}, {"input": [80.5, -44.5], "expected": 80.5}, {"input": [80.5, -44.0], "expected": 80.5}, {"input": [80.5, -43.5], "expected": 80.5}, {"input": [80.5, -43.0], "expected": 80.5}, {"input": [80.5, -42.5], "expected": 80.5}, {"input": [80.5, -42.0], "expected": 80.5}, {"input": [80.5, -41.5], "expected": 80.5}, {"input": [80.5, -41.0], "expected": 80.5}, {"input": [80.5, -40.5], "expected": 80.5}, {"input": [80.5, -40.0], "expected": 80.5}, {"input": [80.5, -39.5], "expected": 80.5}, {"input": [80.5, -39.0], "expected": 80.5}, {"input": [80.5, -38.5], "expected": 80.5}, {"input": [80.5, -38.0], "expected": 80.5}, {"input": [80.5, -37.5], "expected": 80.5}, {"input": [80.5, -37.0], "expected": 80.5}, {"input": [80.5, -36.5], "expected": 80.5}, {"input": [80.5, -36.0], "expected": 80.5}, {"input": [80.5, -35.5], "expected": 80.5}, {"input": [80.5, -35.0], "expected": 80.5}, {"input": [80.5, -34.5], "expected": 80.5}, {"input": [80.5, -34.0], "expected": 80.5}, {"input": [80.5, -33.5], "expected": 80.5}, {"input": [80.5, -33.0], "expected": 80.5}, {"input": [80.5, -32.5], "expected": 80.5}, {"input": [80.5, -32.0], "expected": 80.5}, {"input": [80.5, -31.5], "expected": 80.5}, {"input": [80.5, -31.0], "expected": 80.5}, {"input": [80.5, -30.5], "expected": 80.5}, {"input": [80.5, -30.0], "expected": 80.5}, {"input": [80.5, -29.5], "expected": 80.5}, {"input": [80.5, -29.0], "expected": 80.5}, {"input": [80.5, -28.5], "expected": 80.5}, {"input": [80.5, -28.0], "expected": 80.5}, {"input": [80.5, -27.5], "expected": 80.5}, {"input": [80.5, -27.0], "expected": 80.5}, {"input": [80.5, -26.5], "expected": 80.5}, {"input": [80.5, -26.0], "expected": 80.5}, {"input": [80.5, -25.5], "expected": 80.5}, {"input": [80.5, -25.0], "expected": 80.5}, {"input": [80.5, -24.5], "expected": 80.5}, {"input": [80.5, -24.0], "expected": 80.5}, {"input": [80.5, -23.5], "expected": 80.5}, {"input": [80.5, -23.0], "expected": 80.5}, {"input": [80.5, -22.5], "expected": 80.5}, {"input": [80.5, -22.0], "expected": 80.5}, {"input": [80.5, -21.5], "expected": 80.5}, {"input": [80.5, -21.0], "expected": 80.5}, {"input": [80.5, -20.5], "expected": 80.5}, {"input": [80.5, -20.0], "expected": 80.5}, {"input": [80.5, -19.5], "expected": 80.5}, {"input": [80.5, -19.0], "expected": 80.5}, {"input": [80.5, -18.5], "expected": 80.5}, {"input": [80.5, -18.0], "expected": 80.5}, {"input": [80.5, -17.5], "expected": 80.5}, {"input": [80.5, -17.0], "expected": 80.5}, {"input": [80.5, -16.5], "expected": 80.5}, {"input": [80.5, -16.0], "expected": 80.5}, {"input": [80.5, -15.5], "expected": 80.5}, {"input": [80.5, -15.0], "expected": 80.5}, {"input": [80.5, -14.5], "expected": 80.5}, {"input": [80.5, -14.0], "expected": 80.5}, {"input": [80.5, -13.5], "expected": 80.5}, {"input": [80.5, -13.0], "expected": 80.5}, {"input": [80.5, -12.5], "expected": 80.5}, {"input": [80.5, -12.0], "expected": 80.5}, {"input": [80.5, -11.5], "expected": 80.5}, {"input": [80.5, -11.0], "expected": 80.5}, {"input": [80.5, -10.5], "expected": 80.5}, {"input": [80.5, -10.0], "expected": 80.5}, {"input": [80.5, -9.5], "expected": 80.5}, {"input": [80.5, -9.0], "expected": 80.5}, {"input": [80.5, -8.5], "expected": 80.5}, {"input": [80.5, -8.0], "expected": 80.5}, {"input": [80.5, -7.5], "expected": 80.5}, {"input": [80.5, -7.0], "expected": 80.5}, {"input": [80.5, -6.5], "expected": 80.5}, {"input": [80.5, -6.0], "expected": 80.5}, {"input": [80.5, -5.5], "expected": 80.5}, {"input": [80.5, -5.0], "expected": 80.5}, {"input": [80.5, -4.5], "expected": 80.5}, {"input": [80.5, -4.0], "expected": 80.5}, {"input": [80.5, -3.5], "expected": 80.5}, {"input": [80.5, -3.0], "expected": 80.5}, {"input": [80.5, -2.5], "expected": 80.5}, {"input": [80.5, -2.0], "expected": 80.5}, {"input": [80.5, -1.5], "expected": 80.5}, {"input": [80.5, -1.0], "expected": 80.5}, {"input": [80.5, -0.5], "expected": 80.5}, {"input": [80.5, 0.0], "expected": 80.5}, {"input": [80.5, 0.5], "expected": 80.5}, {"input": [80.5, 1.0], "expected": 80.5}, {"input": [80.5, 1.5], "expected": 80.5}, {"input": [80.5, 2.0], "expected": 80.5}, {"input": [80.5, 2.5], "expected": 80.5}, {"input": [80.5, 3.0], "expected": 80.5}, {"input": [80.5, 3.5], "expected": 80.5}, {"input": [80.5, 4.0], "expected": 80.5}, {"input": [80.5, 4.5], "expected": 80.5}, {"input": [80.5, 5.0], "expected": 80.5}, {"input": [80.5, 5.5], "expected": 80.5}, {"input": [80.5, 6.0], "expected": 80.5}, {"input": [80.5, 6.5], "expected": 80.5}, {"input": [80.5, 7.0], "expected": 80.5}, {"input": [80.5, 7.5], "expected": 80.5}, {"input": [80.5, 8.0], "expected": 80.5}, {"input": [80.5, 8.5], "expected": 80.5}, {"input": [80.5, 9.0], "expected": 80.5}, {"input": [80.5, 9.5], "expected": 80.5}, {"input": [80.5, 10.0], "expected": 80.5}, {"input": [80.5, 10.5], "expected": 80.5}, {"input": [80.5, 11.0], "expected": 80.5}, {"input": [80.5, 11.5], "expected": 80.5}, {"input": [80.5, 12.0], "expected": 80.5}, {"input": [80.5, 12.5], "expected": 80.5}, {"input": [80.5, 13.0], "expected": 80.5}, {"input": [80.5, 13.5], "expected": 80.5}, {"input": [80.5, 14.0], "expected": 80.5}, {"input": [80.5, 14.5], "expected": 80.5}, {"input": [80.5, 15.0], "expected": 80.5}, {"input": [80.5, 15.5], "expected": 80.5}, {"input": [80.5, 16.0], "expected": 80.5}, {"input": [80.5, 16.5], "expected": 80.5}, {"input": [80.5, 17.0], "expected": 80.5}, {"input": [80.5, 17.5], "expected": 80.5}, {"input": [80.5, 18.0], "expected": 80.5}, {"input": [80.5, 18.5], "expected": 80.5}, {"input": [80.5, 19.0], "expected": 80.5}, {"input": [80.5, 19.5], "expected": 80.5}, {"input": [80.5, 20.0], "expected": 80.5}, {"input": [80.5, 20.5], "expected": 80.5}, {"input": [80.5, 21.0], "expected": 80.5}, {"input": [80.5, 21.5], "expected": 80.5}, {"input": [80.5, 22.0], "expected": 80.5}, {"input": [80.5, 22.5], "expected": 80.5}, {"input": [80.5, 23.0], "expected": 80.5}, {"input": [80.5, 23.5], "expected": 80.5}, {"input": [80.5, 24.0], "expected": 80.5}, {"input": [80.5, 24.5], "expected": 80.5}, {"input": [80.5, 25.0], "expected": 80.5}, {"input": [80.5, 25.5], "expected": 80.5}, {"input": [80.5, 26.0], "expected": 80.5}, {"input": [80.5, 26.5], "expected": 80.5}, {"input": [80.5, 27.0], "expected": 80.5}, {"input": [80.5, 27.5], "expected": 80.5}, {"input": [80.5, 28.0], "expected": 80.5}, {"input": [80.5, 28.5], "expected": 80.5}, {"input": [80.5, 29.0], "expected": 80.5}, {"input": [80.5, 29.5], "expected": 80.5}, {"input": [80.5, 30.0], "expected": 80.5}, {"input": [80.5, 30.5], "expected": 80.5}, {"input": [80.5, 31.0], "expected": 80.5}, {"input": [80.5, 31.5], "expected": 80.5}, {"input": [80.5, 32.0], "expected": 80.5}, {"input": [80.5, 32.5], "expected": 80.5}, {"input": [80.5, 33.0], "expected": 80.5}, {"input": [80.5, 33.5], "expected": 80.5}, {"input": [80.5, 34.0], "expected": 80.5}, {"input": [80.5, 34.5], "expected": 80.5}, {"input": [80.5, 35.0], "expected": 80.5}, {"input": [80.5, 35.5], "expected": 80.5}, {"input": [80.5, 36.0], "expected": 80.5}, {"input": [80.5, 36.5], "expected": 80.5}, {"input": [80.5, 37.0], "expected": 80.5}, {"input": [80.5, 37.5], "expected": 80.5}, {"input": [80.5, 38.0], "expected": 80.5}, {"input": [80.5, 38.5], "expected": 80.5}, {"input": [80.5, 39.0], "expected": 80.5}, {"input": [80.5, 39.5], "expected": 80.5}, {"input": [80.5, 40.0], "expected": 80.5}, {"input": [80.5, 40.5], "expected": 80.5}, {"input": [80.5, 41.0], "expected": 80.5}, {"input": [80.5, 41.5], "expected": 80.5}, {"input": [80.5, 42.0], "expected": 80.5}, {"input": [80.5, 42.5], "expected": 80.5}, {"input": [80.5, 43.0], "expected": 80.5}, {"input": [80.5, 43.5], "expected": 80.5}, {"input": [80.5, 44.0], "expected": 80.5}, {"input": [80.5, 44.5], "expected": 80.5}, {"input": [80.5, 45.0], "expected": 80.5}, {"input": [80.5, 45.5], "expected": 80.5}, {"input": [80.5, 46.0], "expected": 80.5}, {"input": [80.5, 46.5], "expected": 80.5}, {"input": [80.5, 47.0], "expected": 80.5}, {"input": [80.5, 47.5], "expected": 80.5}, {"input": [80.5, 48.0], "expected": 80.50000000000001}, {"input": [80.5, 48.5], "expected": 80.50000000000001}, {"input": [80.5, 49.0], "expected": 80.50000000000001}, {"input": [80.5, 49.5], "expected": 80.50000000000003}, {"input": [80.5, 50.0], "expected": 80.50000000000006}, {"input": [80.5, 50.5], "expected": 80.5000000000001}, {"input": [80.5, 51.0], "expected": 80.50000000000016}, {"input": [80.5, 51.5], "expected": 80.50000000000026}, {"input": [80.5, 52.0], "expected": 80.50000000000043}, {"input": [80.5, 52.5], "expected": 80.5000000000007}, {"input": [80.5, 53.0], "expected": 80.50000000000114}, {"input": [80.5, 53.5], "expected": 80.50000000000188}, {"input": [80.5, 54.0], "expected": 80.5000000000031}, {"input": [80.5, 54.5], "expected": 80.50000000000512}, {"input": [80.5, 55.0], "expected": 80.50000000000843}, {"input": [80.5, 55.5], "expected": 80.50000000001388}, {"input": [80.5, 56.0], "expected": 80.5000000000229}, {"input": [80.5, 56.5], "expected": 80.50000000003776}, {"input": [80.5, 57.0], "expected": 80.50000000006224}, {"input": [80.5, 57.5], "expected": 80.50000000010262}, {"input": [80.5, 58.0], "expected": 80.5000000001692}, {"input": [80.5, 58.5], "expected": 80.50000000027894}, {"input": [80.5, 59.0], "expected": 80.5000000004599}, {"input": [80.5, 59.5], "expected": 80.50000000075826}, {"input": [80.5, 60.0], "expected": 80.50000000125016}, {"input": [80.5, 60.5], "expected": 80.50000000206116}, {"input": [80.5, 61.0], "expected": 80.50000000339827}, {"input": [80.5, 61.5], "expected": 80.5000000056028}, {"input": [80.5, 62.0], "expected": 80.50000000923745}, {"input": [80.5, 62.5], "expected": 80.50000001522999}, {"input": [80.5, 63.0], "expected": 80.50000002511}, {"input": [80.5, 63.5], "expected": 80.50000004139937}, {"input": [80.5, 64.0], "expected": 80.50000006825603}, {"input": [80.5, 64.5], "expected": 80.50000011253516}, {"input": [80.5, 65.0], "expected": 80.50000018553912}, {"input": [80.5, 65.5], "expected": 80.50000030590228}, {"input": [80.5, 66.0], "expected": 80.50000050434754}, {"input": [80.5, 66.5], "expected": 80.50000083152837}, {"input": [80.5, 67.0], "expected": 80.50000137095815}, {"input": [80.5, 67.5], "expected": 80.50000226032685}, {"input": [80.5, 68.0], "expected": 80.50000372664623}, {"input": [80.5, 68.5], "expected": 80.50000614419348}, {"input": [80.5, 69.0], "expected": 80.50001013004228}, {"input": [80.5, 69.5], "expected": 80.50001670156132}, {"input": [80.5, 70.0], "expected": 80.50002753607023}, {"input": [80.5, 70.5], "expected": 80.50004539889922}, {"input": [80.5, 71.0], "expected": 80.50007484902864}, {"input": [80.5, 71.5], "expected": 80.50012340218973}, {"input": [80.5, 72.0], "expected": 80.50020344767213}, {"input": [80.5, 72.5], "expected": 80.5003354063729}, {"input": [80.5, 73.0], "expected": 80.50055293147535}, {"input": [80.5, 73.5], "expected": 80.50091146645377}, {"input": [80.5, 74.0], "expected": 80.50150231015975}, {"input": [80.5, 74.5], "expected": 80.50247568513772}, {"input": [80.5, 75.0], "expected": 80.50407844327057}, {"input": [80.5, 75.5], "expected": 80.50671534848912}, {"input": [80.5, 76.0], "expected": 80.5110477448486}, {"input": [80.5, 76.5], "expected": 80.5181499279178}, {"input": [80.5, 77.0], "expected": 80.52975041827263}, {"input": [80.5, 77.5], "expected": 80.54858735157374}, {"input": [80.5, 78.0], "expected": 80.57888973429255}, {"input": [80.5, 78.5], "expected": 80.62692801104298}, {"input": [80.5, 79.0], "expected": 80.70141327798275}, {"input": [80.5, 79.5], "expected": 80.81326168751822}, {"input": [80.5, 80.0], "expected": 80.9740769841801}, {"input": [80.5, 80.5], "expected": 81.19314718055995}, {"input": [80.5, 81.0], "expected": 81.4740769841801}, {"input": [80.5, 81.5], "expected": 81.81326168751822}, {"input": [80.5, 82.0], "expected": 82.20141327798275}, {"input": [80.5, 82.5], "expected": 82.62692801104298}, {"input": [80.5, 83.0], "expected": 83.07888973429255}, {"input": [80.5, 83.5], "expected": 83.54858735157374}, {"input": [80.5, 84.0], "expected": 84.02975041827263}, {"input": [80.5, 84.5], "expected": 84.5181499279178}, {"input": [80.5, 85.0], "expected": 85.0110477448486}, {"input": [80.5, 85.5], "expected": 85.50671534848912}, {"input": [80.5, 86.0], "expected": 86.00407844327057}, {"input": [80.5, 86.5], "expected": 86.50247568513772}, {"input": [80.5, 87.0], "expected": 87.00150231015975}, {"input": [80.5, 87.5], "expected": 87.50091146645377}, {"input": [80.5, 88.0], "expected": 88.00055293147535}, {"input": [80.5, 88.5], "expected": 88.5003354063729}, {"input": [80.5, 89.0], "expected": 89.00020344767213}, {"input": [80.5, 89.5], "expected": 89.50012340218973}, {"input": [80.5, 90.0], "expected": 90.00007484902864}, {"input": [80.5, 90.5], "expected": 90.50004539889922}, {"input": [80.5, 91.0], "expected": 91.00002753607023}, {"input": [80.5, 91.5], "expected": 91.50001670156132}, {"input": [80.5, 92.0], "expected": 92.00001013004228}, {"input": [80.5, 92.5], "expected": 92.50000614419348}, {"input": [80.5, 93.0], "expected": 93.00000372664623}, {"input": [80.5, 93.5], "expected": 93.50000226032685}, {"input": [80.5, 94.0], "expected": 94.00000137095815}, {"input": [80.5, 94.5], "expected": 94.50000083152837}, {"input": [80.5, 95.0], "expected": 95.00000050434754}, {"input": [80.5, 95.5], "expected": 95.50000030590228}, {"input": [80.5, 96.0], "expected": 96.00000018553912}, {"input": [80.5, 96.5], "expected": 96.50000011253516}, {"input": [80.5, 97.0], "expected": 97.00000006825603}, {"input": [80.5, 97.5], "expected": 97.50000004139937}, {"input": [80.5, 98.0], "expected": 98.00000002511}, {"input": [80.5, 98.5], "expected": 98.50000001522999}, {"input": [80.5, 99.0], "expected": 99.00000000923745}, {"input": [80.5, 99.5], "expected": 99.5000000056028}, {"input": [81.0, -100.0], "expected": 81.0}, {"input": [81.0, -99.5], "expected": 81.0}, {"input": [81.0, -99.0], "expected": 81.0}, {"input": [81.0, -98.5], "expected": 81.0}, {"input": [81.0, -98.0], "expected": 81.0}, {"input": [81.0, -97.5], "expected": 81.0}, {"input": [81.0, -97.0], "expected": 81.0}, {"input": [81.0, -96.5], "expected": 81.0}, {"input": [81.0, -96.0], "expected": 81.0}, {"input": [81.0, -95.5], "expected": 81.0}, {"input": [81.0, -95.0], "expected": 81.0}, {"input": [81.0, -94.5], "expected": 81.0}, {"input": [81.0, -94.0], "expected": 81.0}, {"input": [81.0, -93.5], "expected": 81.0}, {"input": [81.0, -93.0], "expected": 81.0}, {"input": [81.0, -92.5], "expected": 81.0}, {"input": [81.0, -92.0], "expected": 81.0}, {"input": [81.0, -91.5], "expected": 81.0}, {"input": [81.0, -91.0], "expected": 81.0}, {"input": [81.0, -90.5], "expected": 81.0}, {"input": [81.0, -90.0], "expected": 81.0}, {"input": [81.0, -89.5], "expected": 81.0}, {"input": [81.0, -89.0], "expected": 81.0}, {"input": [81.0, -88.5], "expected": 81.0}, {"input": [81.0, -88.0], "expected": 81.0}, {"input": [81.0, -87.5], "expected": 81.0}, {"input": [81.0, -87.0], "expected": 81.0}, {"input": [81.0, -86.5], "expected": 81.0}, {"input": [81.0, -86.0], "expected": 81.0}, {"input": [81.0, -85.5], "expected": 81.0}, {"input": [81.0, -85.0], "expected": 81.0}, {"input": [81.0, -84.5], "expected": 81.0}, {"input": [81.0, -84.0], "expected": 81.0}, {"input": [81.0, -83.5], "expected": 81.0}, {"input": [81.0, -83.0], "expected": 81.0}, {"input": [81.0, -82.5], "expected": 81.0}, {"input": [81.0, -82.0], "expected": 81.0}, {"input": [81.0, -81.5], "expected": 81.0}, {"input": [81.0, -81.0], "expected": 81.0}, {"input": [81.0, -80.5], "expected": 81.0}, {"input": [81.0, -80.0], "expected": 81.0}, {"input": [81.0, -79.5], "expected": 81.0}, {"input": [81.0, -79.0], "expected": 81.0}, {"input": [81.0, -78.5], "expected": 81.0}, {"input": [81.0, -78.0], "expected": 81.0}, {"input": [81.0, -77.5], "expected": 81.0}, {"input": [81.0, -77.0], "expected": 81.0}, {"input": [81.0, -76.5], "expected": 81.0}, {"input": [81.0, -76.0], "expected": 81.0}, {"input": [81.0, -75.5], "expected": 81.0}, {"input": [81.0, -75.0], "expected": 81.0}, {"input": [81.0, -74.5], "expected": 81.0}, {"input": [81.0, -74.0], "expected": 81.0}, {"input": [81.0, -73.5], "expected": 81.0}, {"input": [81.0, -73.0], "expected": 81.0}, {"input": [81.0, -72.5], "expected": 81.0}, {"input": [81.0, -72.0], "expected": 81.0}, {"input": [81.0, -71.5], "expected": 81.0}, {"input": [81.0, -71.0], "expected": 81.0}, {"input": [81.0, -70.5], "expected": 81.0}, {"input": [81.0, -70.0], "expected": 81.0}, {"input": [81.0, -69.5], "expected": 81.0}, {"input": [81.0, -69.0], "expected": 81.0}, {"input": [81.0, -68.5], "expected": 81.0}, {"input": [81.0, -68.0], "expected": 81.0}, {"input": [81.0, -67.5], "expected": 81.0}, {"input": [81.0, -67.0], "expected": 81.0}, {"input": [81.0, -66.5], "expected": 81.0}, {"input": [81.0, -66.0], "expected": 81.0}, {"input": [81.0, -65.5], "expected": 81.0}, {"input": [81.0, -65.0], "expected": 81.0}, {"input": [81.0, -64.5], "expected": 81.0}, {"input": [81.0, -64.0], "expected": 81.0}, {"input": [81.0, -63.5], "expected": 81.0}, {"input": [81.0, -63.0], "expected": 81.0}, {"input": [81.0, -62.5], "expected": 81.0}, {"input": [81.0, -62.0], "expected": 81.0}, {"input": [81.0, -61.5], "expected": 81.0}, {"input": [81.0, -61.0], "expected": 81.0}, {"input": [81.0, -60.5], "expected": 81.0}, {"input": [81.0, -60.0], "expected": 81.0}, {"input": [81.0, -59.5], "expected": 81.0}, {"input": [81.0, -59.0], "expected": 81.0}, {"input": [81.0, -58.5], "expected": 81.0}, {"input": [81.0, -58.0], "expected": 81.0}, {"input": [81.0, -57.5], "expected": 81.0}, {"input": [81.0, -57.0], "expected": 81.0}, {"input": [81.0, -56.5], "expected": 81.0}, {"input": [81.0, -56.0], "expected": 81.0}, {"input": [81.0, -55.5], "expected": 81.0}, {"input": [81.0, -55.0], "expected": 81.0}, {"input": [81.0, -54.5], "expected": 81.0}, {"input": [81.0, -54.0], "expected": 81.0}, {"input": [81.0, -53.5], "expected": 81.0}, {"input": [81.0, -53.0], "expected": 81.0}, {"input": [81.0, -52.5], "expected": 81.0}, {"input": [81.0, -52.0], "expected": 81.0}, {"input": [81.0, -51.5], "expected": 81.0}, {"input": [81.0, -51.0], "expected": 81.0}, {"input": [81.0, -50.5], "expected": 81.0}, {"input": [81.0, -50.0], "expected": 81.0}, {"input": [81.0, -49.5], "expected": 81.0}, {"input": [81.0, -49.0], "expected": 81.0}, {"input": [81.0, -48.5], "expected": 81.0}, {"input": [81.0, -48.0], "expected": 81.0}, {"input": [81.0, -47.5], "expected": 81.0}, {"input": [81.0, -47.0], "expected": 81.0}, {"input": [81.0, -46.5], "expected": 81.0}, {"input": [81.0, -46.0], "expected": 81.0}, {"input": [81.0, -45.5], "expected": 81.0}, {"input": [81.0, -45.0], "expected": 81.0}, {"input": [81.0, -44.5], "expected": 81.0}, {"input": [81.0, -44.0], "expected": 81.0}, {"input": [81.0, -43.5], "expected": 81.0}, {"input": [81.0, -43.0], "expected": 81.0}, {"input": [81.0, -42.5], "expected": 81.0}, {"input": [81.0, -42.0], "expected": 81.0}, {"input": [81.0, -41.5], "expected": 81.0}, {"input": [81.0, -41.0], "expected": 81.0}, {"input": [81.0, -40.5], "expected": 81.0}, {"input": [81.0, -40.0], "expected": 81.0}, {"input": [81.0, -39.5], "expected": 81.0}, {"input": [81.0, -39.0], "expected": 81.0}, {"input": [81.0, -38.5], "expected": 81.0}, {"input": [81.0, -38.0], "expected": 81.0}, {"input": [81.0, -37.5], "expected": 81.0}, {"input": [81.0, -37.0], "expected": 81.0}, {"input": [81.0, -36.5], "expected": 81.0}, {"input": [81.0, -36.0], "expected": 81.0}, {"input": [81.0, -35.5], "expected": 81.0}, {"input": [81.0, -35.0], "expected": 81.0}, {"input": [81.0, -34.5], "expected": 81.0}, {"input": [81.0, -34.0], "expected": 81.0}, {"input": [81.0, -33.5], "expected": 81.0}, {"input": [81.0, -33.0], "expected": 81.0}, {"input": [81.0, -32.5], "expected": 81.0}, {"input": [81.0, -32.0], "expected": 81.0}, {"input": [81.0, -31.5], "expected": 81.0}, {"input": [81.0, -31.0], "expected": 81.0}, {"input": [81.0, -30.5], "expected": 81.0}, {"input": [81.0, -30.0], "expected": 81.0}, {"input": [81.0, -29.5], "expected": 81.0}, {"input": [81.0, -29.0], "expected": 81.0}, {"input": [81.0, -28.5], "expected": 81.0}, {"input": [81.0, -28.0], "expected": 81.0}, {"input": [81.0, -27.5], "expected": 81.0}, {"input": [81.0, -27.0], "expected": 81.0}, {"input": [81.0, -26.5], "expected": 81.0}, {"input": [81.0, -26.0], "expected": 81.0}, {"input": [81.0, -25.5], "expected": 81.0}, {"input": [81.0, -25.0], "expected": 81.0}, {"input": [81.0, -24.5], "expected": 81.0}, {"input": [81.0, -24.0], "expected": 81.0}, {"input": [81.0, -23.5], "expected": 81.0}, {"input": [81.0, -23.0], "expected": 81.0}, {"input": [81.0, -22.5], "expected": 81.0}, {"input": [81.0, -22.0], "expected": 81.0}, {"input": [81.0, -21.5], "expected": 81.0}, {"input": [81.0, -21.0], "expected": 81.0}, {"input": [81.0, -20.5], "expected": 81.0}, {"input": [81.0, -20.0], "expected": 81.0}, {"input": [81.0, -19.5], "expected": 81.0}, {"input": [81.0, -19.0], "expected": 81.0}, {"input": [81.0, -18.5], "expected": 81.0}, {"input": [81.0, -18.0], "expected": 81.0}, {"input": [81.0, -17.5], "expected": 81.0}, {"input": [81.0, -17.0], "expected": 81.0}, {"input": [81.0, -16.5], "expected": 81.0}, {"input": [81.0, -16.0], "expected": 81.0}, {"input": [81.0, -15.5], "expected": 81.0}, {"input": [81.0, -15.0], "expected": 81.0}, {"input": [81.0, -14.5], "expected": 81.0}, {"input": [81.0, -14.0], "expected": 81.0}, {"input": [81.0, -13.5], "expected": 81.0}, {"input": [81.0, -13.0], "expected": 81.0}, {"input": [81.0, -12.5], "expected": 81.0}, {"input": [81.0, -12.0], "expected": 81.0}, {"input": [81.0, -11.5], "expected": 81.0}, {"input": [81.0, -11.0], "expected": 81.0}, {"input": [81.0, -10.5], "expected": 81.0}, {"input": [81.0, -10.0], "expected": 81.0}, {"input": [81.0, -9.5], "expected": 81.0}, {"input": [81.0, -9.0], "expected": 81.0}, {"input": [81.0, -8.5], "expected": 81.0}, {"input": [81.0, -8.0], "expected": 81.0}, {"input": [81.0, -7.5], "expected": 81.0}, {"input": [81.0, -7.0], "expected": 81.0}, {"input": [81.0, -6.5], "expected": 81.0}, {"input": [81.0, -6.0], "expected": 81.0}, {"input": [81.0, -5.5], "expected": 81.0}, {"input": [81.0, -5.0], "expected": 81.0}, {"input": [81.0, -4.5], "expected": 81.0}, {"input": [81.0, -4.0], "expected": 81.0}, {"input": [81.0, -3.5], "expected": 81.0}, {"input": [81.0, -3.0], "expected": 81.0}, {"input": [81.0, -2.5], "expected": 81.0}, {"input": [81.0, -2.0], "expected": 81.0}, {"input": [81.0, -1.5], "expected": 81.0}, {"input": [81.0, -1.0], "expected": 81.0}, {"input": [81.0, -0.5], "expected": 81.0}, {"input": [81.0, 0.0], "expected": 81.0}, {"input": [81.0, 0.5], "expected": 81.0}, {"input": [81.0, 1.0], "expected": 81.0}, {"input": [81.0, 1.5], "expected": 81.0}, {"input": [81.0, 2.0], "expected": 81.0}, {"input": [81.0, 2.5], "expected": 81.0}, {"input": [81.0, 3.0], "expected": 81.0}, {"input": [81.0, 3.5], "expected": 81.0}, {"input": [81.0, 4.0], "expected": 81.0}, {"input": [81.0, 4.5], "expected": 81.0}, {"input": [81.0, 5.0], "expected": 81.0}, {"input": [81.0, 5.5], "expected": 81.0}, {"input": [81.0, 6.0], "expected": 81.0}, {"input": [81.0, 6.5], "expected": 81.0}, {"input": [81.0, 7.0], "expected": 81.0}, {"input": [81.0, 7.5], "expected": 81.0}, {"input": [81.0, 8.0], "expected": 81.0}, {"input": [81.0, 8.5], "expected": 81.0}, {"input": [81.0, 9.0], "expected": 81.0}, {"input": [81.0, 9.5], "expected": 81.0}, {"input": [81.0, 10.0], "expected": 81.0}, {"input": [81.0, 10.5], "expected": 81.0}, {"input": [81.0, 11.0], "expected": 81.0}, {"input": [81.0, 11.5], "expected": 81.0}, {"input": [81.0, 12.0], "expected": 81.0}, {"input": [81.0, 12.5], "expected": 81.0}, {"input": [81.0, 13.0], "expected": 81.0}, {"input": [81.0, 13.5], "expected": 81.0}, {"input": [81.0, 14.0], "expected": 81.0}, {"input": [81.0, 14.5], "expected": 81.0}, {"input": [81.0, 15.0], "expected": 81.0}, {"input": [81.0, 15.5], "expected": 81.0}, {"input": [81.0, 16.0], "expected": 81.0}, {"input": [81.0, 16.5], "expected": 81.0}, {"input": [81.0, 17.0], "expected": 81.0}, {"input": [81.0, 17.5], "expected": 81.0}, {"input": [81.0, 18.0], "expected": 81.0}, {"input": [81.0, 18.5], "expected": 81.0}, {"input": [81.0, 19.0], "expected": 81.0}, {"input": [81.0, 19.5], "expected": 81.0}, {"input": [81.0, 20.0], "expected": 81.0}, {"input": [81.0, 20.5], "expected": 81.0}, {"input": [81.0, 21.0], "expected": 81.0}, {"input": [81.0, 21.5], "expected": 81.0}, {"input": [81.0, 22.0], "expected": 81.0}, {"input": [81.0, 22.5], "expected": 81.0}, {"input": [81.0, 23.0], "expected": 81.0}, {"input": [81.0, 23.5], "expected": 81.0}, {"input": [81.0, 24.0], "expected": 81.0}, {"input": [81.0, 24.5], "expected": 81.0}, {"input": [81.0, 25.0], "expected": 81.0}, {"input": [81.0, 25.5], "expected": 81.0}, {"input": [81.0, 26.0], "expected": 81.0}, {"input": [81.0, 26.5], "expected": 81.0}, {"input": [81.0, 27.0], "expected": 81.0}, {"input": [81.0, 27.5], "expected": 81.0}, {"input": [81.0, 28.0], "expected": 81.0}, {"input": [81.0, 28.5], "expected": 81.0}, {"input": [81.0, 29.0], "expected": 81.0}, {"input": [81.0, 29.5], "expected": 81.0}, {"input": [81.0, 30.0], "expected": 81.0}, {"input": [81.0, 30.5], "expected": 81.0}, {"input": [81.0, 31.0], "expected": 81.0}, {"input": [81.0, 31.5], "expected": 81.0}, {"input": [81.0, 32.0], "expected": 81.0}, {"input": [81.0, 32.5], "expected": 81.0}, {"input": [81.0, 33.0], "expected": 81.0}, {"input": [81.0, 33.5], "expected": 81.0}, {"input": [81.0, 34.0], "expected": 81.0}, {"input": [81.0, 34.5], "expected": 81.0}, {"input": [81.0, 35.0], "expected": 81.0}, {"input": [81.0, 35.5], "expected": 81.0}, {"input": [81.0, 36.0], "expected": 81.0}, {"input": [81.0, 36.5], "expected": 81.0}, {"input": [81.0, 37.0], "expected": 81.0}, {"input": [81.0, 37.5], "expected": 81.0}, {"input": [81.0, 38.0], "expected": 81.0}, {"input": [81.0, 38.5], "expected": 81.0}, {"input": [81.0, 39.0], "expected": 81.0}, {"input": [81.0, 39.5], "expected": 81.0}, {"input": [81.0, 40.0], "expected": 81.0}, {"input": [81.0, 40.5], "expected": 81.0}, {"input": [81.0, 41.0], "expected": 81.0}, {"input": [81.0, 41.5], "expected": 81.0}, {"input": [81.0, 42.0], "expected": 81.0}, {"input": [81.0, 42.5], "expected": 81.0}, {"input": [81.0, 43.0], "expected": 81.0}, {"input": [81.0, 43.5], "expected": 81.0}, {"input": [81.0, 44.0], "expected": 81.0}, {"input": [81.0, 44.5], "expected": 81.0}, {"input": [81.0, 45.0], "expected": 81.0}, {"input": [81.0, 45.5], "expected": 81.0}, {"input": [81.0, 46.0], "expected": 81.0}, {"input": [81.0, 46.5], "expected": 81.0}, {"input": [81.0, 47.0], "expected": 81.0}, {"input": [81.0, 47.5], "expected": 81.0}, {"input": [81.0, 48.0], "expected": 81.0}, {"input": [81.0, 48.5], "expected": 81.00000000000001}, {"input": [81.0, 49.0], "expected": 81.00000000000001}, {"input": [81.0, 49.5], "expected": 81.00000000000001}, {"input": [81.0, 50.0], "expected": 81.00000000000003}, {"input": [81.0, 50.5], "expected": 81.00000000000006}, {"input": [81.0, 51.0], "expected": 81.0000000000001}, {"input": [81.0, 51.5], "expected": 81.00000000000016}, {"input": [81.0, 52.0], "expected": 81.00000000000026}, {"input": [81.0, 52.5], "expected": 81.00000000000043}, {"input": [81.0, 53.0], "expected": 81.0000000000007}, {"input": [81.0, 53.5], "expected": 81.00000000000114}, {"input": [81.0, 54.0], "expected": 81.00000000000188}, {"input": [81.0, 54.5], "expected": 81.0000000000031}, {"input": [81.0, 55.0], "expected": 81.00000000000512}, {"input": [81.0, 55.5], "expected": 81.00000000000843}, {"input": [81.0, 56.0], "expected": 81.00000000001388}, {"input": [81.0, 56.5], "expected": 81.0000000000229}, {"input": [81.0, 57.0], "expected": 81.00000000003776}, {"input": [81.0, 57.5], "expected": 81.00000000006224}, {"input": [81.0, 58.0], "expected": 81.00000000010262}, {"input": [81.0, 58.5], "expected": 81.0000000001692}, {"input": [81.0, 59.0], "expected": 81.00000000027894}, {"input": [81.0, 59.5], "expected": 81.0000000004599}, {"input": [81.0, 60.0], "expected": 81.00000000075826}, {"input": [81.0, 60.5], "expected": 81.00000000125016}, {"input": [81.0, 61.0], "expected": 81.00000000206116}, {"input": [81.0, 61.5], "expected": 81.00000000339827}, {"input": [81.0, 62.0], "expected": 81.0000000056028}, {"input": [81.0, 62.5], "expected": 81.00000000923745}, {"input": [81.0, 63.0], "expected": 81.00000001522999}, {"input": [81.0, 63.5], "expected": 81.00000002511}, {"input": [81.0, 64.0], "expected": 81.00000004139937}, {"input": [81.0, 64.5], "expected": 81.00000006825603}, {"input": [81.0, 65.0], "expected": 81.00000011253516}, {"input": [81.0, 65.5], "expected": 81.00000018553912}, {"input": [81.0, 66.0], "expected": 81.00000030590228}, {"input": [81.0, 66.5], "expected": 81.00000050434754}, {"input": [81.0, 67.0], "expected": 81.00000083152837}, {"input": [81.0, 67.5], "expected": 81.00000137095815}, {"input": [81.0, 68.0], "expected": 81.00000226032685}, {"input": [81.0, 68.5], "expected": 81.00000372664623}, {"input": [81.0, 69.0], "expected": 81.00000614419348}, {"input": [81.0, 69.5], "expected": 81.00001013004228}, {"input": [81.0, 70.0], "expected": 81.00001670156132}, {"input": [81.0, 70.5], "expected": 81.00002753607023}, {"input": [81.0, 71.0], "expected": 81.00004539889922}, {"input": [81.0, 71.5], "expected": 81.00007484902864}, {"input": [81.0, 72.0], "expected": 81.00012340218973}, {"input": [81.0, 72.5], "expected": 81.00020344767213}, {"input": [81.0, 73.0], "expected": 81.0003354063729}, {"input": [81.0, 73.5], "expected": 81.00055293147535}, {"input": [81.0, 74.0], "expected": 81.00091146645377}, {"input": [81.0, 74.5], "expected": 81.00150231015975}, {"input": [81.0, 75.0], "expected": 81.00247568513772}, {"input": [81.0, 75.5], "expected": 81.00407844327057}, {"input": [81.0, 76.0], "expected": 81.00671534848912}, {"input": [81.0, 76.5], "expected": 81.0110477448486}, {"input": [81.0, 77.0], "expected": 81.0181499279178}, {"input": [81.0, 77.5], "expected": 81.02975041827263}, {"input": [81.0, 78.0], "expected": 81.04858735157374}, {"input": [81.0, 78.5], "expected": 81.07888973429255}, {"input": [81.0, 79.0], "expected": 81.12692801104298}, {"input": [81.0, 79.5], "expected": 81.20141327798275}, {"input": [81.0, 80.0], "expected": 81.31326168751822}, {"input": [81.0, 80.5], "expected": 81.4740769841801}, {"input": [81.0, 81.0], "expected": 81.69314718055995}, {"input": [81.0, 81.5], "expected": 81.9740769841801}, {"input": [81.0, 82.0], "expected": 82.31326168751822}, {"input": [81.0, 82.5], "expected": 82.70141327798275}, {"input": [81.0, 83.0], "expected": 83.12692801104298}, {"input": [81.0, 83.5], "expected": 83.57888973429255}, {"input": [81.0, 84.0], "expected": 84.04858735157374}, {"input": [81.0, 84.5], "expected": 84.52975041827263}, {"input": [81.0, 85.0], "expected": 85.0181499279178}, {"input": [81.0, 85.5], "expected": 85.5110477448486}, {"input": [81.0, 86.0], "expected": 86.00671534848912}, {"input": [81.0, 86.5], "expected": 86.50407844327057}, {"input": [81.0, 87.0], "expected": 87.00247568513772}, {"input": [81.0, 87.5], "expected": 87.50150231015975}, {"input": [81.0, 88.0], "expected": 88.00091146645377}, {"input": [81.0, 88.5], "expected": 88.50055293147535}, {"input": [81.0, 89.0], "expected": 89.0003354063729}, {"input": [81.0, 89.5], "expected": 89.50020344767213}, {"input": [81.0, 90.0], "expected": 90.00012340218973}, {"input": [81.0, 90.5], "expected": 90.50007484902864}, {"input": [81.0, 91.0], "expected": 91.00004539889922}, {"input": [81.0, 91.5], "expected": 91.50002753607023}, {"input": [81.0, 92.0], "expected": 92.00001670156132}, {"input": [81.0, 92.5], "expected": 92.50001013004228}, {"input": [81.0, 93.0], "expected": 93.00000614419348}, {"input": [81.0, 93.5], "expected": 93.50000372664623}, {"input": [81.0, 94.0], "expected": 94.00000226032685}, {"input": [81.0, 94.5], "expected": 94.50000137095815}, {"input": [81.0, 95.0], "expected": 95.00000083152837}, {"input": [81.0, 95.5], "expected": 95.50000050434754}, {"input": [81.0, 96.0], "expected": 96.00000030590228}, {"input": [81.0, 96.5], "expected": 96.50000018553912}, {"input": [81.0, 97.0], "expected": 97.00000011253516}, {"input": [81.0, 97.5], "expected": 97.50000006825603}, {"input": [81.0, 98.0], "expected": 98.00000004139937}, {"input": [81.0, 98.5], "expected": 98.50000002511}, {"input": [81.0, 99.0], "expected": 99.00000001522999}, {"input": [81.0, 99.5], "expected": 99.50000000923745}, {"input": [81.5, -100.0], "expected": 81.5}, {"input": [81.5, -99.5], "expected": 81.5}, {"input": [81.5, -99.0], "expected": 81.5}, {"input": [81.5, -98.5], "expected": 81.5}, {"input": [81.5, -98.0], "expected": 81.5}, {"input": [81.5, -97.5], "expected": 81.5}, {"input": [81.5, -97.0], "expected": 81.5}, {"input": [81.5, -96.5], "expected": 81.5}, {"input": [81.5, -96.0], "expected": 81.5}, {"input": [81.5, -95.5], "expected": 81.5}, {"input": [81.5, -95.0], "expected": 81.5}, {"input": [81.5, -94.5], "expected": 81.5}, {"input": [81.5, -94.0], "expected": 81.5}, {"input": [81.5, -93.5], "expected": 81.5}, {"input": [81.5, -93.0], "expected": 81.5}, {"input": [81.5, -92.5], "expected": 81.5}, {"input": [81.5, -92.0], "expected": 81.5}, {"input": [81.5, -91.5], "expected": 81.5}, {"input": [81.5, -91.0], "expected": 81.5}, {"input": [81.5, -90.5], "expected": 81.5}, {"input": [81.5, -90.0], "expected": 81.5}, {"input": [81.5, -89.5], "expected": 81.5}, {"input": [81.5, -89.0], "expected": 81.5}, {"input": [81.5, -88.5], "expected": 81.5}, {"input": [81.5, -88.0], "expected": 81.5}, {"input": [81.5, -87.5], "expected": 81.5}, {"input": [81.5, -87.0], "expected": 81.5}, {"input": [81.5, -86.5], "expected": 81.5}, {"input": [81.5, -86.0], "expected": 81.5}, {"input": [81.5, -85.5], "expected": 81.5}, {"input": [81.5, -85.0], "expected": 81.5}, {"input": [81.5, -84.5], "expected": 81.5}, {"input": [81.5, -84.0], "expected": 81.5}, {"input": [81.5, -83.5], "expected": 81.5}, {"input": [81.5, -83.0], "expected": 81.5}, {"input": [81.5, -82.5], "expected": 81.5}, {"input": [81.5, -82.0], "expected": 81.5}, {"input": [81.5, -81.5], "expected": 81.5}, {"input": [81.5, -81.0], "expected": 81.5}, {"input": [81.5, -80.5], "expected": 81.5}, {"input": [81.5, -80.0], "expected": 81.5}, {"input": [81.5, -79.5], "expected": 81.5}, {"input": [81.5, -79.0], "expected": 81.5}, {"input": [81.5, -78.5], "expected": 81.5}, {"input": [81.5, -78.0], "expected": 81.5}, {"input": [81.5, -77.5], "expected": 81.5}, {"input": [81.5, -77.0], "expected": 81.5}, {"input": [81.5, -76.5], "expected": 81.5}, {"input": [81.5, -76.0], "expected": 81.5}, {"input": [81.5, -75.5], "expected": 81.5}, {"input": [81.5, -75.0], "expected": 81.5}, {"input": [81.5, -74.5], "expected": 81.5}, {"input": [81.5, -74.0], "expected": 81.5}, {"input": [81.5, -73.5], "expected": 81.5}, {"input": [81.5, -73.0], "expected": 81.5}, {"input": [81.5, -72.5], "expected": 81.5}, {"input": [81.5, -72.0], "expected": 81.5}, {"input": [81.5, -71.5], "expected": 81.5}, {"input": [81.5, -71.0], "expected": 81.5}, {"input": [81.5, -70.5], "expected": 81.5}, {"input": [81.5, -70.0], "expected": 81.5}, {"input": [81.5, -69.5], "expected": 81.5}, {"input": [81.5, -69.0], "expected": 81.5}, {"input": [81.5, -68.5], "expected": 81.5}, {"input": [81.5, -68.0], "expected": 81.5}, {"input": [81.5, -67.5], "expected": 81.5}, {"input": [81.5, -67.0], "expected": 81.5}, {"input": [81.5, -66.5], "expected": 81.5}, {"input": [81.5, -66.0], "expected": 81.5}, {"input": [81.5, -65.5], "expected": 81.5}, {"input": [81.5, -65.0], "expected": 81.5}, {"input": [81.5, -64.5], "expected": 81.5}, {"input": [81.5, -64.0], "expected": 81.5}, {"input": [81.5, -63.5], "expected": 81.5}, {"input": [81.5, -63.0], "expected": 81.5}, {"input": [81.5, -62.5], "expected": 81.5}, {"input": [81.5, -62.0], "expected": 81.5}, {"input": [81.5, -61.5], "expected": 81.5}, {"input": [81.5, -61.0], "expected": 81.5}, {"input": [81.5, -60.5], "expected": 81.5}, {"input": [81.5, -60.0], "expected": 81.5}, {"input": [81.5, -59.5], "expected": 81.5}, {"input": [81.5, -59.0], "expected": 81.5}, {"input": [81.5, -58.5], "expected": 81.5}, {"input": [81.5, -58.0], "expected": 81.5}, {"input": [81.5, -57.5], "expected": 81.5}, {"input": [81.5, -57.0], "expected": 81.5}, {"input": [81.5, -56.5], "expected": 81.5}, {"input": [81.5, -56.0], "expected": 81.5}, {"input": [81.5, -55.5], "expected": 81.5}, {"input": [81.5, -55.0], "expected": 81.5}, {"input": [81.5, -54.5], "expected": 81.5}, {"input": [81.5, -54.0], "expected": 81.5}, {"input": [81.5, -53.5], "expected": 81.5}, {"input": [81.5, -53.0], "expected": 81.5}, {"input": [81.5, -52.5], "expected": 81.5}, {"input": [81.5, -52.0], "expected": 81.5}, {"input": [81.5, -51.5], "expected": 81.5}, {"input": [81.5, -51.0], "expected": 81.5}, {"input": [81.5, -50.5], "expected": 81.5}, {"input": [81.5, -50.0], "expected": 81.5}, {"input": [81.5, -49.5], "expected": 81.5}, {"input": [81.5, -49.0], "expected": 81.5}, {"input": [81.5, -48.5], "expected": 81.5}, {"input": [81.5, -48.0], "expected": 81.5}, {"input": [81.5, -47.5], "expected": 81.5}, {"input": [81.5, -47.0], "expected": 81.5}, {"input": [81.5, -46.5], "expected": 81.5}, {"input": [81.5, -46.0], "expected": 81.5}, {"input": [81.5, -45.5], "expected": 81.5}, {"input": [81.5, -45.0], "expected": 81.5}, {"input": [81.5, -44.5], "expected": 81.5}, {"input": [81.5, -44.0], "expected": 81.5}, {"input": [81.5, -43.5], "expected": 81.5}, {"input": [81.5, -43.0], "expected": 81.5}, {"input": [81.5, -42.5], "expected": 81.5}, {"input": [81.5, -42.0], "expected": 81.5}, {"input": [81.5, -41.5], "expected": 81.5}, {"input": [81.5, -41.0], "expected": 81.5}, {"input": [81.5, -40.5], "expected": 81.5}, {"input": [81.5, -40.0], "expected": 81.5}, {"input": [81.5, -39.5], "expected": 81.5}, {"input": [81.5, -39.0], "expected": 81.5}, {"input": [81.5, -38.5], "expected": 81.5}, {"input": [81.5, -38.0], "expected": 81.5}, {"input": [81.5, -37.5], "expected": 81.5}, {"input": [81.5, -37.0], "expected": 81.5}, {"input": [81.5, -36.5], "expected": 81.5}, {"input": [81.5, -36.0], "expected": 81.5}, {"input": [81.5, -35.5], "expected": 81.5}, {"input": [81.5, -35.0], "expected": 81.5}, {"input": [81.5, -34.5], "expected": 81.5}, {"input": [81.5, -34.0], "expected": 81.5}, {"input": [81.5, -33.5], "expected": 81.5}, {"input": [81.5, -33.0], "expected": 81.5}, {"input": [81.5, -32.5], "expected": 81.5}, {"input": [81.5, -32.0], "expected": 81.5}, {"input": [81.5, -31.5], "expected": 81.5}, {"input": [81.5, -31.0], "expected": 81.5}, {"input": [81.5, -30.5], "expected": 81.5}, {"input": [81.5, -30.0], "expected": 81.5}, {"input": [81.5, -29.5], "expected": 81.5}, {"input": [81.5, -29.0], "expected": 81.5}, {"input": [81.5, -28.5], "expected": 81.5}, {"input": [81.5, -28.0], "expected": 81.5}, {"input": [81.5, -27.5], "expected": 81.5}, {"input": [81.5, -27.0], "expected": 81.5}, {"input": [81.5, -26.5], "expected": 81.5}, {"input": [81.5, -26.0], "expected": 81.5}, {"input": [81.5, -25.5], "expected": 81.5}, {"input": [81.5, -25.0], "expected": 81.5}, {"input": [81.5, -24.5], "expected": 81.5}, {"input": [81.5, -24.0], "expected": 81.5}, {"input": [81.5, -23.5], "expected": 81.5}, {"input": [81.5, -23.0], "expected": 81.5}, {"input": [81.5, -22.5], "expected": 81.5}, {"input": [81.5, -22.0], "expected": 81.5}, {"input": [81.5, -21.5], "expected": 81.5}, {"input": [81.5, -21.0], "expected": 81.5}, {"input": [81.5, -20.5], "expected": 81.5}, {"input": [81.5, -20.0], "expected": 81.5}, {"input": [81.5, -19.5], "expected": 81.5}, {"input": [81.5, -19.0], "expected": 81.5}, {"input": [81.5, -18.5], "expected": 81.5}, {"input": [81.5, -18.0], "expected": 81.5}, {"input": [81.5, -17.5], "expected": 81.5}, {"input": [81.5, -17.0], "expected": 81.5}, {"input": [81.5, -16.5], "expected": 81.5}, {"input": [81.5, -16.0], "expected": 81.5}, {"input": [81.5, -15.5], "expected": 81.5}, {"input": [81.5, -15.0], "expected": 81.5}, {"input": [81.5, -14.5], "expected": 81.5}, {"input": [81.5, -14.0], "expected": 81.5}, {"input": [81.5, -13.5], "expected": 81.5}, {"input": [81.5, -13.0], "expected": 81.5}, {"input": [81.5, -12.5], "expected": 81.5}, {"input": [81.5, -12.0], "expected": 81.5}, {"input": [81.5, -11.5], "expected": 81.5}, {"input": [81.5, -11.0], "expected": 81.5}, {"input": [81.5, -10.5], "expected": 81.5}, {"input": [81.5, -10.0], "expected": 81.5}, {"input": [81.5, -9.5], "expected": 81.5}, {"input": [81.5, -9.0], "expected": 81.5}, {"input": [81.5, -8.5], "expected": 81.5}, {"input": [81.5, -8.0], "expected": 81.5}, {"input": [81.5, -7.5], "expected": 81.5}, {"input": [81.5, -7.0], "expected": 81.5}, {"input": [81.5, -6.5], "expected": 81.5}, {"input": [81.5, -6.0], "expected": 81.5}, {"input": [81.5, -5.5], "expected": 81.5}, {"input": [81.5, -5.0], "expected": 81.5}, {"input": [81.5, -4.5], "expected": 81.5}, {"input": [81.5, -4.0], "expected": 81.5}, {"input": [81.5, -3.5], "expected": 81.5}, {"input": [81.5, -3.0], "expected": 81.5}, {"input": [81.5, -2.5], "expected": 81.5}, {"input": [81.5, -2.0], "expected": 81.5}, {"input": [81.5, -1.5], "expected": 81.5}, {"input": [81.5, -1.0], "expected": 81.5}, {"input": [81.5, -0.5], "expected": 81.5}, {"input": [81.5, 0.0], "expected": 81.5}, {"input": [81.5, 0.5], "expected": 81.5}, {"input": [81.5, 1.0], "expected": 81.5}, {"input": [81.5, 1.5], "expected": 81.5}, {"input": [81.5, 2.0], "expected": 81.5}, {"input": [81.5, 2.5], "expected": 81.5}, {"input": [81.5, 3.0], "expected": 81.5}, {"input": [81.5, 3.5], "expected": 81.5}, {"input": [81.5, 4.0], "expected": 81.5}, {"input": [81.5, 4.5], "expected": 81.5}, {"input": [81.5, 5.0], "expected": 81.5}, {"input": [81.5, 5.5], "expected": 81.5}, {"input": [81.5, 6.0], "expected": 81.5}, {"input": [81.5, 6.5], "expected": 81.5}, {"input": [81.5, 7.0], "expected": 81.5}, {"input": [81.5, 7.5], "expected": 81.5}, {"input": [81.5, 8.0], "expected": 81.5}, {"input": [81.5, 8.5], "expected": 81.5}, {"input": [81.5, 9.0], "expected": 81.5}, {"input": [81.5, 9.5], "expected": 81.5}, {"input": [81.5, 10.0], "expected": 81.5}, {"input": [81.5, 10.5], "expected": 81.5}, {"input": [81.5, 11.0], "expected": 81.5}, {"input": [81.5, 11.5], "expected": 81.5}, {"input": [81.5, 12.0], "expected": 81.5}, {"input": [81.5, 12.5], "expected": 81.5}, {"input": [81.5, 13.0], "expected": 81.5}, {"input": [81.5, 13.5], "expected": 81.5}, {"input": [81.5, 14.0], "expected": 81.5}, {"input": [81.5, 14.5], "expected": 81.5}, {"input": [81.5, 15.0], "expected": 81.5}, {"input": [81.5, 15.5], "expected": 81.5}, {"input": [81.5, 16.0], "expected": 81.5}, {"input": [81.5, 16.5], "expected": 81.5}, {"input": [81.5, 17.0], "expected": 81.5}, {"input": [81.5, 17.5], "expected": 81.5}, {"input": [81.5, 18.0], "expected": 81.5}, {"input": [81.5, 18.5], "expected": 81.5}, {"input": [81.5, 19.0], "expected": 81.5}, {"input": [81.5, 19.5], "expected": 81.5}, {"input": [81.5, 20.0], "expected": 81.5}, {"input": [81.5, 20.5], "expected": 81.5}, {"input": [81.5, 21.0], "expected": 81.5}, {"input": [81.5, 21.5], "expected": 81.5}, {"input": [81.5, 22.0], "expected": 81.5}, {"input": [81.5, 22.5], "expected": 81.5}, {"input": [81.5, 23.0], "expected": 81.5}, {"input": [81.5, 23.5], "expected": 81.5}, {"input": [81.5, 24.0], "expected": 81.5}, {"input": [81.5, 24.5], "expected": 81.5}, {"input": [81.5, 25.0], "expected": 81.5}, {"input": [81.5, 25.5], "expected": 81.5}, {"input": [81.5, 26.0], "expected": 81.5}, {"input": [81.5, 26.5], "expected": 81.5}, {"input": [81.5, 27.0], "expected": 81.5}, {"input": [81.5, 27.5], "expected": 81.5}, {"input": [81.5, 28.0], "expected": 81.5}, {"input": [81.5, 28.5], "expected": 81.5}, {"input": [81.5, 29.0], "expected": 81.5}, {"input": [81.5, 29.5], "expected": 81.5}, {"input": [81.5, 30.0], "expected": 81.5}, {"input": [81.5, 30.5], "expected": 81.5}, {"input": [81.5, 31.0], "expected": 81.5}, {"input": [81.5, 31.5], "expected": 81.5}, {"input": [81.5, 32.0], "expected": 81.5}, {"input": [81.5, 32.5], "expected": 81.5}, {"input": [81.5, 33.0], "expected": 81.5}, {"input": [81.5, 33.5], "expected": 81.5}, {"input": [81.5, 34.0], "expected": 81.5}, {"input": [81.5, 34.5], "expected": 81.5}, {"input": [81.5, 35.0], "expected": 81.5}, {"input": [81.5, 35.5], "expected": 81.5}, {"input": [81.5, 36.0], "expected": 81.5}, {"input": [81.5, 36.5], "expected": 81.5}, {"input": [81.5, 37.0], "expected": 81.5}, {"input": [81.5, 37.5], "expected": 81.5}, {"input": [81.5, 38.0], "expected": 81.5}, {"input": [81.5, 38.5], "expected": 81.5}, {"input": [81.5, 39.0], "expected": 81.5}, {"input": [81.5, 39.5], "expected": 81.5}, {"input": [81.5, 40.0], "expected": 81.5}, {"input": [81.5, 40.5], "expected": 81.5}, {"input": [81.5, 41.0], "expected": 81.5}, {"input": [81.5, 41.5], "expected": 81.5}, {"input": [81.5, 42.0], "expected": 81.5}, {"input": [81.5, 42.5], "expected": 81.5}, {"input": [81.5, 43.0], "expected": 81.5}, {"input": [81.5, 43.5], "expected": 81.5}, {"input": [81.5, 44.0], "expected": 81.5}, {"input": [81.5, 44.5], "expected": 81.5}, {"input": [81.5, 45.0], "expected": 81.5}, {"input": [81.5, 45.5], "expected": 81.5}, {"input": [81.5, 46.0], "expected": 81.5}, {"input": [81.5, 46.5], "expected": 81.5}, {"input": [81.5, 47.0], "expected": 81.5}, {"input": [81.5, 47.5], "expected": 81.5}, {"input": [81.5, 48.0], "expected": 81.5}, {"input": [81.5, 48.5], "expected": 81.5}, {"input": [81.5, 49.0], "expected": 81.50000000000001}, {"input": [81.5, 49.5], "expected": 81.50000000000001}, {"input": [81.5, 50.0], "expected": 81.50000000000001}, {"input": [81.5, 50.5], "expected": 81.50000000000003}, {"input": [81.5, 51.0], "expected": 81.50000000000006}, {"input": [81.5, 51.5], "expected": 81.5000000000001}, {"input": [81.5, 52.0], "expected": 81.50000000000016}, {"input": [81.5, 52.5], "expected": 81.50000000000026}, {"input": [81.5, 53.0], "expected": 81.50000000000043}, {"input": [81.5, 53.5], "expected": 81.5000000000007}, {"input": [81.5, 54.0], "expected": 81.50000000000114}, {"input": [81.5, 54.5], "expected": 81.50000000000188}, {"input": [81.5, 55.0], "expected": 81.5000000000031}, {"input": [81.5, 55.5], "expected": 81.50000000000512}, {"input": [81.5, 56.0], "expected": 81.50000000000843}, {"input": [81.5, 56.5], "expected": 81.50000000001388}, {"input": [81.5, 57.0], "expected": 81.5000000000229}, {"input": [81.5, 57.5], "expected": 81.50000000003776}, {"input": [81.5, 58.0], "expected": 81.50000000006224}, {"input": [81.5, 58.5], "expected": 81.50000000010262}, {"input": [81.5, 59.0], "expected": 81.5000000001692}, {"input": [81.5, 59.5], "expected": 81.50000000027894}, {"input": [81.5, 60.0], "expected": 81.5000000004599}, {"input": [81.5, 60.5], "expected": 81.50000000075826}, {"input": [81.5, 61.0], "expected": 81.50000000125016}, {"input": [81.5, 61.5], "expected": 81.50000000206116}, {"input": [81.5, 62.0], "expected": 81.50000000339827}, {"input": [81.5, 62.5], "expected": 81.5000000056028}, {"input": [81.5, 63.0], "expected": 81.50000000923745}, {"input": [81.5, 63.5], "expected": 81.50000001522999}, {"input": [81.5, 64.0], "expected": 81.50000002511}, {"input": [81.5, 64.5], "expected": 81.50000004139937}, {"input": [81.5, 65.0], "expected": 81.50000006825603}, {"input": [81.5, 65.5], "expected": 81.50000011253516}, {"input": [81.5, 66.0], "expected": 81.50000018553912}, {"input": [81.5, 66.5], "expected": 81.50000030590228}, {"input": [81.5, 67.0], "expected": 81.50000050434754}, {"input": [81.5, 67.5], "expected": 81.50000083152837}, {"input": [81.5, 68.0], "expected": 81.50000137095815}, {"input": [81.5, 68.5], "expected": 81.50000226032685}, {"input": [81.5, 69.0], "expected": 81.50000372664623}, {"input": [81.5, 69.5], "expected": 81.50000614419348}, {"input": [81.5, 70.0], "expected": 81.50001013004228}, {"input": [81.5, 70.5], "expected": 81.50001670156132}, {"input": [81.5, 71.0], "expected": 81.50002753607023}, {"input": [81.5, 71.5], "expected": 81.50004539889922}, {"input": [81.5, 72.0], "expected": 81.50007484902864}, {"input": [81.5, 72.5], "expected": 81.50012340218973}, {"input": [81.5, 73.0], "expected": 81.50020344767213}, {"input": [81.5, 73.5], "expected": 81.5003354063729}, {"input": [81.5, 74.0], "expected": 81.50055293147535}, {"input": [81.5, 74.5], "expected": 81.50091146645377}, {"input": [81.5, 75.0], "expected": 81.50150231015975}, {"input": [81.5, 75.5], "expected": 81.50247568513772}, {"input": [81.5, 76.0], "expected": 81.50407844327057}, {"input": [81.5, 76.5], "expected": 81.50671534848912}, {"input": [81.5, 77.0], "expected": 81.5110477448486}, {"input": [81.5, 77.5], "expected": 81.5181499279178}, {"input": [81.5, 78.0], "expected": 81.52975041827263}, {"input": [81.5, 78.5], "expected": 81.54858735157374}, {"input": [81.5, 79.0], "expected": 81.57888973429255}, {"input": [81.5, 79.5], "expected": 81.62692801104298}, {"input": [81.5, 80.0], "expected": 81.70141327798275}, {"input": [81.5, 80.5], "expected": 81.81326168751822}, {"input": [81.5, 81.0], "expected": 81.9740769841801}, {"input": [81.5, 81.5], "expected": 82.19314718055995}, {"input": [81.5, 82.0], "expected": 82.4740769841801}, {"input": [81.5, 82.5], "expected": 82.81326168751822}, {"input": [81.5, 83.0], "expected": 83.20141327798275}, {"input": [81.5, 83.5], "expected": 83.62692801104298}, {"input": [81.5, 84.0], "expected": 84.07888973429255}, {"input": [81.5, 84.5], "expected": 84.54858735157374}, {"input": [81.5, 85.0], "expected": 85.02975041827263}, {"input": [81.5, 85.5], "expected": 85.5181499279178}, {"input": [81.5, 86.0], "expected": 86.0110477448486}, {"input": [81.5, 86.5], "expected": 86.50671534848912}, {"input": [81.5, 87.0], "expected": 87.00407844327057}, {"input": [81.5, 87.5], "expected": 87.50247568513772}, {"input": [81.5, 88.0], "expected": 88.00150231015975}, {"input": [81.5, 88.5], "expected": 88.50091146645377}, {"input": [81.5, 89.0], "expected": 89.00055293147535}, {"input": [81.5, 89.5], "expected": 89.5003354063729}, {"input": [81.5, 90.0], "expected": 90.00020344767213}, {"input": [81.5, 90.5], "expected": 90.50012340218973}, {"input": [81.5, 91.0], "expected": 91.00007484902864}, {"input": [81.5, 91.5], "expected": 91.50004539889922}, {"input": [81.5, 92.0], "expected": 92.00002753607023}, {"input": [81.5, 92.5], "expected": 92.50001670156132}, {"input": [81.5, 93.0], "expected": 93.00001013004228}, {"input": [81.5, 93.5], "expected": 93.50000614419348}, {"input": [81.5, 94.0], "expected": 94.00000372664623}, {"input": [81.5, 94.5], "expected": 94.50000226032685}, {"input": [81.5, 95.0], "expected": 95.00000137095815}, {"input": [81.5, 95.5], "expected": 95.50000083152837}, {"input": [81.5, 96.0], "expected": 96.00000050434754}, {"input": [81.5, 96.5], "expected": 96.50000030590228}, {"input": [81.5, 97.0], "expected": 97.00000018553912}, {"input": [81.5, 97.5], "expected": 97.50000011253516}, {"input": [81.5, 98.0], "expected": 98.00000006825603}, {"input": [81.5, 98.5], "expected": 98.50000004139937}, {"input": [81.5, 99.0], "expected": 99.00000002511}, {"input": [81.5, 99.5], "expected": 99.50000001522999}, {"input": [82.0, -100.0], "expected": 82.0}, {"input": [82.0, -99.5], "expected": 82.0}, {"input": [82.0, -99.0], "expected": 82.0}, {"input": [82.0, -98.5], "expected": 82.0}, {"input": [82.0, -98.0], "expected": 82.0}, {"input": [82.0, -97.5], "expected": 82.0}, {"input": [82.0, -97.0], "expected": 82.0}, {"input": [82.0, -96.5], "expected": 82.0}, {"input": [82.0, -96.0], "expected": 82.0}, {"input": [82.0, -95.5], "expected": 82.0}, {"input": [82.0, -95.0], "expected": 82.0}, {"input": [82.0, -94.5], "expected": 82.0}, {"input": [82.0, -94.0], "expected": 82.0}, {"input": [82.0, -93.5], "expected": 82.0}, {"input": [82.0, -93.0], "expected": 82.0}, {"input": [82.0, -92.5], "expected": 82.0}, {"input": [82.0, -92.0], "expected": 82.0}, {"input": [82.0, -91.5], "expected": 82.0}, {"input": [82.0, -91.0], "expected": 82.0}, {"input": [82.0, -90.5], "expected": 82.0}, {"input": [82.0, -90.0], "expected": 82.0}, {"input": [82.0, -89.5], "expected": 82.0}, {"input": [82.0, -89.0], "expected": 82.0}, {"input": [82.0, -88.5], "expected": 82.0}, {"input": [82.0, -88.0], "expected": 82.0}, {"input": [82.0, -87.5], "expected": 82.0}, {"input": [82.0, -87.0], "expected": 82.0}, {"input": [82.0, -86.5], "expected": 82.0}, {"input": [82.0, -86.0], "expected": 82.0}, {"input": [82.0, -85.5], "expected": 82.0}, {"input": [82.0, -85.0], "expected": 82.0}, {"input": [82.0, -84.5], "expected": 82.0}, {"input": [82.0, -84.0], "expected": 82.0}, {"input": [82.0, -83.5], "expected": 82.0}, {"input": [82.0, -83.0], "expected": 82.0}, {"input": [82.0, -82.5], "expected": 82.0}, {"input": [82.0, -82.0], "expected": 82.0}, {"input": [82.0, -81.5], "expected": 82.0}, {"input": [82.0, -81.0], "expected": 82.0}, {"input": [82.0, -80.5], "expected": 82.0}, {"input": [82.0, -80.0], "expected": 82.0}, {"input": [82.0, -79.5], "expected": 82.0}, {"input": [82.0, -79.0], "expected": 82.0}, {"input": [82.0, -78.5], "expected": 82.0}, {"input": [82.0, -78.0], "expected": 82.0}, {"input": [82.0, -77.5], "expected": 82.0}, {"input": [82.0, -77.0], "expected": 82.0}, {"input": [82.0, -76.5], "expected": 82.0}, {"input": [82.0, -76.0], "expected": 82.0}, {"input": [82.0, -75.5], "expected": 82.0}, {"input": [82.0, -75.0], "expected": 82.0}, {"input": [82.0, -74.5], "expected": 82.0}, {"input": [82.0, -74.0], "expected": 82.0}, {"input": [82.0, -73.5], "expected": 82.0}, {"input": [82.0, -73.0], "expected": 82.0}, {"input": [82.0, -72.5], "expected": 82.0}, {"input": [82.0, -72.0], "expected": 82.0}, {"input": [82.0, -71.5], "expected": 82.0}, {"input": [82.0, -71.0], "expected": 82.0}, {"input": [82.0, -70.5], "expected": 82.0}, {"input": [82.0, -70.0], "expected": 82.0}, {"input": [82.0, -69.5], "expected": 82.0}, {"input": [82.0, -69.0], "expected": 82.0}, {"input": [82.0, -68.5], "expected": 82.0}, {"input": [82.0, -68.0], "expected": 82.0}, {"input": [82.0, -67.5], "expected": 82.0}, {"input": [82.0, -67.0], "expected": 82.0}, {"input": [82.0, -66.5], "expected": 82.0}, {"input": [82.0, -66.0], "expected": 82.0}, {"input": [82.0, -65.5], "expected": 82.0}, {"input": [82.0, -65.0], "expected": 82.0}, {"input": [82.0, -64.5], "expected": 82.0}, {"input": [82.0, -64.0], "expected": 82.0}, {"input": [82.0, -63.5], "expected": 82.0}, {"input": [82.0, -63.0], "expected": 82.0}, {"input": [82.0, -62.5], "expected": 82.0}, {"input": [82.0, -62.0], "expected": 82.0}, {"input": [82.0, -61.5], "expected": 82.0}, {"input": [82.0, -61.0], "expected": 82.0}, {"input": [82.0, -60.5], "expected": 82.0}, {"input": [82.0, -60.0], "expected": 82.0}, {"input": [82.0, -59.5], "expected": 82.0}, {"input": [82.0, -59.0], "expected": 82.0}, {"input": [82.0, -58.5], "expected": 82.0}, {"input": [82.0, -58.0], "expected": 82.0}, {"input": [82.0, -57.5], "expected": 82.0}, {"input": [82.0, -57.0], "expected": 82.0}, {"input": [82.0, -56.5], "expected": 82.0}, {"input": [82.0, -56.0], "expected": 82.0}, {"input": [82.0, -55.5], "expected": 82.0}, {"input": [82.0, -55.0], "expected": 82.0}, {"input": [82.0, -54.5], "expected": 82.0}, {"input": [82.0, -54.0], "expected": 82.0}, {"input": [82.0, -53.5], "expected": 82.0}, {"input": [82.0, -53.0], "expected": 82.0}, {"input": [82.0, -52.5], "expected": 82.0}, {"input": [82.0, -52.0], "expected": 82.0}, {"input": [82.0, -51.5], "expected": 82.0}, {"input": [82.0, -51.0], "expected": 82.0}, {"input": [82.0, -50.5], "expected": 82.0}, {"input": [82.0, -50.0], "expected": 82.0}, {"input": [82.0, -49.5], "expected": 82.0}, {"input": [82.0, -49.0], "expected": 82.0}, {"input": [82.0, -48.5], "expected": 82.0}, {"input": [82.0, -48.0], "expected": 82.0}, {"input": [82.0, -47.5], "expected": 82.0}, {"input": [82.0, -47.0], "expected": 82.0}, {"input": [82.0, -46.5], "expected": 82.0}, {"input": [82.0, -46.0], "expected": 82.0}, {"input": [82.0, -45.5], "expected": 82.0}, {"input": [82.0, -45.0], "expected": 82.0}, {"input": [82.0, -44.5], "expected": 82.0}, {"input": [82.0, -44.0], "expected": 82.0}, {"input": [82.0, -43.5], "expected": 82.0}, {"input": [82.0, -43.0], "expected": 82.0}, {"input": [82.0, -42.5], "expected": 82.0}, {"input": [82.0, -42.0], "expected": 82.0}, {"input": [82.0, -41.5], "expected": 82.0}, {"input": [82.0, -41.0], "expected": 82.0}, {"input": [82.0, -40.5], "expected": 82.0}, {"input": [82.0, -40.0], "expected": 82.0}, {"input": [82.0, -39.5], "expected": 82.0}, {"input": [82.0, -39.0], "expected": 82.0}, {"input": [82.0, -38.5], "expected": 82.0}, {"input": [82.0, -38.0], "expected": 82.0}, {"input": [82.0, -37.5], "expected": 82.0}, {"input": [82.0, -37.0], "expected": 82.0}, {"input": [82.0, -36.5], "expected": 82.0}, {"input": [82.0, -36.0], "expected": 82.0}, {"input": [82.0, -35.5], "expected": 82.0}, {"input": [82.0, -35.0], "expected": 82.0}, {"input": [82.0, -34.5], "expected": 82.0}, {"input": [82.0, -34.0], "expected": 82.0}, {"input": [82.0, -33.5], "expected": 82.0}, {"input": [82.0, -33.0], "expected": 82.0}, {"input": [82.0, -32.5], "expected": 82.0}, {"input": [82.0, -32.0], "expected": 82.0}, {"input": [82.0, -31.5], "expected": 82.0}, {"input": [82.0, -31.0], "expected": 82.0}, {"input": [82.0, -30.5], "expected": 82.0}, {"input": [82.0, -30.0], "expected": 82.0}, {"input": [82.0, -29.5], "expected": 82.0}, {"input": [82.0, -29.0], "expected": 82.0}, {"input": [82.0, -28.5], "expected": 82.0}, {"input": [82.0, -28.0], "expected": 82.0}, {"input": [82.0, -27.5], "expected": 82.0}, {"input": [82.0, -27.0], "expected": 82.0}, {"input": [82.0, -26.5], "expected": 82.0}, {"input": [82.0, -26.0], "expected": 82.0}, {"input": [82.0, -25.5], "expected": 82.0}, {"input": [82.0, -25.0], "expected": 82.0}, {"input": [82.0, -24.5], "expected": 82.0}, {"input": [82.0, -24.0], "expected": 82.0}, {"input": [82.0, -23.5], "expected": 82.0}, {"input": [82.0, -23.0], "expected": 82.0}, {"input": [82.0, -22.5], "expected": 82.0}, {"input": [82.0, -22.0], "expected": 82.0}, {"input": [82.0, -21.5], "expected": 82.0}, {"input": [82.0, -21.0], "expected": 82.0}, {"input": [82.0, -20.5], "expected": 82.0}, {"input": [82.0, -20.0], "expected": 82.0}, {"input": [82.0, -19.5], "expected": 82.0}, {"input": [82.0, -19.0], "expected": 82.0}, {"input": [82.0, -18.5], "expected": 82.0}, {"input": [82.0, -18.0], "expected": 82.0}, {"input": [82.0, -17.5], "expected": 82.0}, {"input": [82.0, -17.0], "expected": 82.0}, {"input": [82.0, -16.5], "expected": 82.0}, {"input": [82.0, -16.0], "expected": 82.0}, {"input": [82.0, -15.5], "expected": 82.0}, {"input": [82.0, -15.0], "expected": 82.0}, {"input": [82.0, -14.5], "expected": 82.0}, {"input": [82.0, -14.0], "expected": 82.0}, {"input": [82.0, -13.5], "expected": 82.0}, {"input": [82.0, -13.0], "expected": 82.0}, {"input": [82.0, -12.5], "expected": 82.0}, {"input": [82.0, -12.0], "expected": 82.0}, {"input": [82.0, -11.5], "expected": 82.0}, {"input": [82.0, -11.0], "expected": 82.0}, {"input": [82.0, -10.5], "expected": 82.0}, {"input": [82.0, -10.0], "expected": 82.0}, {"input": [82.0, -9.5], "expected": 82.0}, {"input": [82.0, -9.0], "expected": 82.0}, {"input": [82.0, -8.5], "expected": 82.0}, {"input": [82.0, -8.0], "expected": 82.0}, {"input": [82.0, -7.5], "expected": 82.0}, {"input": [82.0, -7.0], "expected": 82.0}, {"input": [82.0, -6.5], "expected": 82.0}, {"input": [82.0, -6.0], "expected": 82.0}, {"input": [82.0, -5.5], "expected": 82.0}, {"input": [82.0, -5.0], "expected": 82.0}, {"input": [82.0, -4.5], "expected": 82.0}, {"input": [82.0, -4.0], "expected": 82.0}, {"input": [82.0, -3.5], "expected": 82.0}, {"input": [82.0, -3.0], "expected": 82.0}, {"input": [82.0, -2.5], "expected": 82.0}, {"input": [82.0, -2.0], "expected": 82.0}, {"input": [82.0, -1.5], "expected": 82.0}, {"input": [82.0, -1.0], "expected": 82.0}, {"input": [82.0, -0.5], "expected": 82.0}, {"input": [82.0, 0.0], "expected": 82.0}, {"input": [82.0, 0.5], "expected": 82.0}, {"input": [82.0, 1.0], "expected": 82.0}, {"input": [82.0, 1.5], "expected": 82.0}, {"input": [82.0, 2.0], "expected": 82.0}, {"input": [82.0, 2.5], "expected": 82.0}, {"input": [82.0, 3.0], "expected": 82.0}, {"input": [82.0, 3.5], "expected": 82.0}, {"input": [82.0, 4.0], "expected": 82.0}, {"input": [82.0, 4.5], "expected": 82.0}, {"input": [82.0, 5.0], "expected": 82.0}, {"input": [82.0, 5.5], "expected": 82.0}, {"input": [82.0, 6.0], "expected": 82.0}, {"input": [82.0, 6.5], "expected": 82.0}, {"input": [82.0, 7.0], "expected": 82.0}, {"input": [82.0, 7.5], "expected": 82.0}, {"input": [82.0, 8.0], "expected": 82.0}, {"input": [82.0, 8.5], "expected": 82.0}, {"input": [82.0, 9.0], "expected": 82.0}, {"input": [82.0, 9.5], "expected": 82.0}, {"input": [82.0, 10.0], "expected": 82.0}, {"input": [82.0, 10.5], "expected": 82.0}, {"input": [82.0, 11.0], "expected": 82.0}, {"input": [82.0, 11.5], "expected": 82.0}, {"input": [82.0, 12.0], "expected": 82.0}, {"input": [82.0, 12.5], "expected": 82.0}, {"input": [82.0, 13.0], "expected": 82.0}, {"input": [82.0, 13.5], "expected": 82.0}, {"input": [82.0, 14.0], "expected": 82.0}, {"input": [82.0, 14.5], "expected": 82.0}, {"input": [82.0, 15.0], "expected": 82.0}, {"input": [82.0, 15.5], "expected": 82.0}, {"input": [82.0, 16.0], "expected": 82.0}, {"input": [82.0, 16.5], "expected": 82.0}, {"input": [82.0, 17.0], "expected": 82.0}, {"input": [82.0, 17.5], "expected": 82.0}, {"input": [82.0, 18.0], "expected": 82.0}, {"input": [82.0, 18.5], "expected": 82.0}, {"input": [82.0, 19.0], "expected": 82.0}, {"input": [82.0, 19.5], "expected": 82.0}, {"input": [82.0, 20.0], "expected": 82.0}, {"input": [82.0, 20.5], "expected": 82.0}, {"input": [82.0, 21.0], "expected": 82.0}, {"input": [82.0, 21.5], "expected": 82.0}, {"input": [82.0, 22.0], "expected": 82.0}, {"input": [82.0, 22.5], "expected": 82.0}, {"input": [82.0, 23.0], "expected": 82.0}, {"input": [82.0, 23.5], "expected": 82.0}, {"input": [82.0, 24.0], "expected": 82.0}, {"input": [82.0, 24.5], "expected": 82.0}, {"input": [82.0, 25.0], "expected": 82.0}, {"input": [82.0, 25.5], "expected": 82.0}, {"input": [82.0, 26.0], "expected": 82.0}, {"input": [82.0, 26.5], "expected": 82.0}, {"input": [82.0, 27.0], "expected": 82.0}, {"input": [82.0, 27.5], "expected": 82.0}, {"input": [82.0, 28.0], "expected": 82.0}, {"input": [82.0, 28.5], "expected": 82.0}, {"input": [82.0, 29.0], "expected": 82.0}, {"input": [82.0, 29.5], "expected": 82.0}, {"input": [82.0, 30.0], "expected": 82.0}, {"input": [82.0, 30.5], "expected": 82.0}, {"input": [82.0, 31.0], "expected": 82.0}, {"input": [82.0, 31.5], "expected": 82.0}, {"input": [82.0, 32.0], "expected": 82.0}, {"input": [82.0, 32.5], "expected": 82.0}, {"input": [82.0, 33.0], "expected": 82.0}, {"input": [82.0, 33.5], "expected": 82.0}, {"input": [82.0, 34.0], "expected": 82.0}, {"input": [82.0, 34.5], "expected": 82.0}, {"input": [82.0, 35.0], "expected": 82.0}, {"input": [82.0, 35.5], "expected": 82.0}, {"input": [82.0, 36.0], "expected": 82.0}, {"input": [82.0, 36.5], "expected": 82.0}, {"input": [82.0, 37.0], "expected": 82.0}, {"input": [82.0, 37.5], "expected": 82.0}, {"input": [82.0, 38.0], "expected": 82.0}, {"input": [82.0, 38.5], "expected": 82.0}, {"input": [82.0, 39.0], "expected": 82.0}, {"input": [82.0, 39.5], "expected": 82.0}, {"input": [82.0, 40.0], "expected": 82.0}, {"input": [82.0, 40.5], "expected": 82.0}, {"input": [82.0, 41.0], "expected": 82.0}, {"input": [82.0, 41.5], "expected": 82.0}, {"input": [82.0, 42.0], "expected": 82.0}, {"input": [82.0, 42.5], "expected": 82.0}, {"input": [82.0, 43.0], "expected": 82.0}, {"input": [82.0, 43.5], "expected": 82.0}, {"input": [82.0, 44.0], "expected": 82.0}, {"input": [82.0, 44.5], "expected": 82.0}, {"input": [82.0, 45.0], "expected": 82.0}, {"input": [82.0, 45.5], "expected": 82.0}, {"input": [82.0, 46.0], "expected": 82.0}, {"input": [82.0, 46.5], "expected": 82.0}, {"input": [82.0, 47.0], "expected": 82.0}, {"input": [82.0, 47.5], "expected": 82.0}, {"input": [82.0, 48.0], "expected": 82.0}, {"input": [82.0, 48.5], "expected": 82.0}, {"input": [82.0, 49.0], "expected": 82.0}, {"input": [82.0, 49.5], "expected": 82.00000000000001}, {"input": [82.0, 50.0], "expected": 82.00000000000001}, {"input": [82.0, 50.5], "expected": 82.00000000000001}, {"input": [82.0, 51.0], "expected": 82.00000000000003}, {"input": [82.0, 51.5], "expected": 82.00000000000006}, {"input": [82.0, 52.0], "expected": 82.0000000000001}, {"input": [82.0, 52.5], "expected": 82.00000000000016}, {"input": [82.0, 53.0], "expected": 82.00000000000026}, {"input": [82.0, 53.5], "expected": 82.00000000000043}, {"input": [82.0, 54.0], "expected": 82.0000000000007}, {"input": [82.0, 54.5], "expected": 82.00000000000114}, {"input": [82.0, 55.0], "expected": 82.00000000000188}, {"input": [82.0, 55.5], "expected": 82.0000000000031}, {"input": [82.0, 56.0], "expected": 82.00000000000512}, {"input": [82.0, 56.5], "expected": 82.00000000000843}, {"input": [82.0, 57.0], "expected": 82.00000000001388}, {"input": [82.0, 57.5], "expected": 82.0000000000229}, {"input": [82.0, 58.0], "expected": 82.00000000003776}, {"input": [82.0, 58.5], "expected": 82.00000000006224}, {"input": [82.0, 59.0], "expected": 82.00000000010262}, {"input": [82.0, 59.5], "expected": 82.0000000001692}, {"input": [82.0, 60.0], "expected": 82.00000000027894}, {"input": [82.0, 60.5], "expected": 82.0000000004599}, {"input": [82.0, 61.0], "expected": 82.00000000075826}, {"input": [82.0, 61.5], "expected": 82.00000000125016}, {"input": [82.0, 62.0], "expected": 82.00000000206116}, {"input": [82.0, 62.5], "expected": 82.00000000339827}, {"input": [82.0, 63.0], "expected": 82.0000000056028}, {"input": [82.0, 63.5], "expected": 82.00000000923745}, {"input": [82.0, 64.0], "expected": 82.00000001522999}, {"input": [82.0, 64.5], "expected": 82.00000002511}, {"input": [82.0, 65.0], "expected": 82.00000004139937}, {"input": [82.0, 65.5], "expected": 82.00000006825603}, {"input": [82.0, 66.0], "expected": 82.00000011253516}, {"input": [82.0, 66.5], "expected": 82.00000018553912}, {"input": [82.0, 67.0], "expected": 82.00000030590228}, {"input": [82.0, 67.5], "expected": 82.00000050434754}, {"input": [82.0, 68.0], "expected": 82.00000083152837}, {"input": [82.0, 68.5], "expected": 82.00000137095815}, {"input": [82.0, 69.0], "expected": 82.00000226032685}, {"input": [82.0, 69.5], "expected": 82.00000372664623}, {"input": [82.0, 70.0], "expected": 82.00000614419348}, {"input": [82.0, 70.5], "expected": 82.00001013004228}, {"input": [82.0, 71.0], "expected": 82.00001670156132}, {"input": [82.0, 71.5], "expected": 82.00002753607023}, {"input": [82.0, 72.0], "expected": 82.00004539889922}, {"input": [82.0, 72.5], "expected": 82.00007484902864}, {"input": [82.0, 73.0], "expected": 82.00012340218973}, {"input": [82.0, 73.5], "expected": 82.00020344767213}, {"input": [82.0, 74.0], "expected": 82.0003354063729}, {"input": [82.0, 74.5], "expected": 82.00055293147535}, {"input": [82.0, 75.0], "expected": 82.00091146645377}, {"input": [82.0, 75.5], "expected": 82.00150231015975}, {"input": [82.0, 76.0], "expected": 82.00247568513772}, {"input": [82.0, 76.5], "expected": 82.00407844327057}, {"input": [82.0, 77.0], "expected": 82.00671534848912}, {"input": [82.0, 77.5], "expected": 82.0110477448486}, {"input": [82.0, 78.0], "expected": 82.0181499279178}, {"input": [82.0, 78.5], "expected": 82.02975041827263}, {"input": [82.0, 79.0], "expected": 82.04858735157374}, {"input": [82.0, 79.5], "expected": 82.07888973429255}, {"input": [82.0, 80.0], "expected": 82.12692801104298}, {"input": [82.0, 80.5], "expected": 82.20141327798275}, {"input": [82.0, 81.0], "expected": 82.31326168751822}, {"input": [82.0, 81.5], "expected": 82.4740769841801}, {"input": [82.0, 82.0], "expected": 82.69314718055995}, {"input": [82.0, 82.5], "expected": 82.9740769841801}, {"input": [82.0, 83.0], "expected": 83.31326168751822}, {"input": [82.0, 83.5], "expected": 83.70141327798275}, {"input": [82.0, 84.0], "expected": 84.12692801104298}, {"input": [82.0, 84.5], "expected": 84.57888973429255}, {"input": [82.0, 85.0], "expected": 85.04858735157374}, {"input": [82.0, 85.5], "expected": 85.52975041827263}, {"input": [82.0, 86.0], "expected": 86.0181499279178}, {"input": [82.0, 86.5], "expected": 86.5110477448486}, {"input": [82.0, 87.0], "expected": 87.00671534848912}, {"input": [82.0, 87.5], "expected": 87.50407844327057}, {"input": [82.0, 88.0], "expected": 88.00247568513772}, {"input": [82.0, 88.5], "expected": 88.50150231015975}, {"input": [82.0, 89.0], "expected": 89.00091146645377}, {"input": [82.0, 89.5], "expected": 89.50055293147535}, {"input": [82.0, 90.0], "expected": 90.0003354063729}, {"input": [82.0, 90.5], "expected": 90.50020344767213}, {"input": [82.0, 91.0], "expected": 91.00012340218973}, {"input": [82.0, 91.5], "expected": 91.50007484902864}, {"input": [82.0, 92.0], "expected": 92.00004539889922}, {"input": [82.0, 92.5], "expected": 92.50002753607023}, {"input": [82.0, 93.0], "expected": 93.00001670156132}, {"input": [82.0, 93.5], "expected": 93.50001013004228}, {"input": [82.0, 94.0], "expected": 94.00000614419348}, {"input": [82.0, 94.5], "expected": 94.50000372664623}, {"input": [82.0, 95.0], "expected": 95.00000226032685}, {"input": [82.0, 95.5], "expected": 95.50000137095815}, {"input": [82.0, 96.0], "expected": 96.00000083152837}, {"input": [82.0, 96.5], "expected": 96.50000050434754}, {"input": [82.0, 97.0], "expected": 97.00000030590228}, {"input": [82.0, 97.5], "expected": 97.50000018553912}, {"input": [82.0, 98.0], "expected": 98.00000011253516}, {"input": [82.0, 98.5], "expected": 98.50000006825603}, {"input": [82.0, 99.0], "expected": 99.00000004139937}, {"input": [82.0, 99.5], "expected": 99.50000002511}, {"input": [82.5, -100.0], "expected": 82.5}, {"input": [82.5, -99.5], "expected": 82.5}, {"input": [82.5, -99.0], "expected": 82.5}, {"input": [82.5, -98.5], "expected": 82.5}, {"input": [82.5, -98.0], "expected": 82.5}, {"input": [82.5, -97.5], "expected": 82.5}, {"input": [82.5, -97.0], "expected": 82.5}, {"input": [82.5, -96.5], "expected": 82.5}, {"input": [82.5, -96.0], "expected": 82.5}, {"input": [82.5, -95.5], "expected": 82.5}, {"input": [82.5, -95.0], "expected": 82.5}, {"input": [82.5, -94.5], "expected": 82.5}, {"input": [82.5, -94.0], "expected": 82.5}, {"input": [82.5, -93.5], "expected": 82.5}, {"input": [82.5, -93.0], "expected": 82.5}, {"input": [82.5, -92.5], "expected": 82.5}, {"input": [82.5, -92.0], "expected": 82.5}, {"input": [82.5, -91.5], "expected": 82.5}, {"input": [82.5, -91.0], "expected": 82.5}, {"input": [82.5, -90.5], "expected": 82.5}, {"input": [82.5, -90.0], "expected": 82.5}, {"input": [82.5, -89.5], "expected": 82.5}, {"input": [82.5, -89.0], "expected": 82.5}, {"input": [82.5, -88.5], "expected": 82.5}, {"input": [82.5, -88.0], "expected": 82.5}, {"input": [82.5, -87.5], "expected": 82.5}, {"input": [82.5, -87.0], "expected": 82.5}, {"input": [82.5, -86.5], "expected": 82.5}, {"input": [82.5, -86.0], "expected": 82.5}, {"input": [82.5, -85.5], "expected": 82.5}, {"input": [82.5, -85.0], "expected": 82.5}, {"input": [82.5, -84.5], "expected": 82.5}, {"input": [82.5, -84.0], "expected": 82.5}, {"input": [82.5, -83.5], "expected": 82.5}, {"input": [82.5, -83.0], "expected": 82.5}, {"input": [82.5, -82.5], "expected": 82.5}, {"input": [82.5, -82.0], "expected": 82.5}, {"input": [82.5, -81.5], "expected": 82.5}, {"input": [82.5, -81.0], "expected": 82.5}, {"input": [82.5, -80.5], "expected": 82.5}, {"input": [82.5, -80.0], "expected": 82.5}, {"input": [82.5, -79.5], "expected": 82.5}, {"input": [82.5, -79.0], "expected": 82.5}, {"input": [82.5, -78.5], "expected": 82.5}, {"input": [82.5, -78.0], "expected": 82.5}, {"input": [82.5, -77.5], "expected": 82.5}, {"input": [82.5, -77.0], "expected": 82.5}, {"input": [82.5, -76.5], "expected": 82.5}, {"input": [82.5, -76.0], "expected": 82.5}, {"input": [82.5, -75.5], "expected": 82.5}, {"input": [82.5, -75.0], "expected": 82.5}, {"input": [82.5, -74.5], "expected": 82.5}, {"input": [82.5, -74.0], "expected": 82.5}, {"input": [82.5, -73.5], "expected": 82.5}, {"input": [82.5, -73.0], "expected": 82.5}, {"input": [82.5, -72.5], "expected": 82.5}, {"input": [82.5, -72.0], "expected": 82.5}, {"input": [82.5, -71.5], "expected": 82.5}, {"input": [82.5, -71.0], "expected": 82.5}, {"input": [82.5, -70.5], "expected": 82.5}, {"input": [82.5, -70.0], "expected": 82.5}, {"input": [82.5, -69.5], "expected": 82.5}, {"input": [82.5, -69.0], "expected": 82.5}, {"input": [82.5, -68.5], "expected": 82.5}, {"input": [82.5, -68.0], "expected": 82.5}, {"input": [82.5, -67.5], "expected": 82.5}, {"input": [82.5, -67.0], "expected": 82.5}, {"input": [82.5, -66.5], "expected": 82.5}, {"input": [82.5, -66.0], "expected": 82.5}, {"input": [82.5, -65.5], "expected": 82.5}, {"input": [82.5, -65.0], "expected": 82.5}, {"input": [82.5, -64.5], "expected": 82.5}, {"input": [82.5, -64.0], "expected": 82.5}, {"input": [82.5, -63.5], "expected": 82.5}, {"input": [82.5, -63.0], "expected": 82.5}, {"input": [82.5, -62.5], "expected": 82.5}, {"input": [82.5, -62.0], "expected": 82.5}, {"input": [82.5, -61.5], "expected": 82.5}, {"input": [82.5, -61.0], "expected": 82.5}, {"input": [82.5, -60.5], "expected": 82.5}, {"input": [82.5, -60.0], "expected": 82.5}, {"input": [82.5, -59.5], "expected": 82.5}, {"input": [82.5, -59.0], "expected": 82.5}, {"input": [82.5, -58.5], "expected": 82.5}, {"input": [82.5, -58.0], "expected": 82.5}, {"input": [82.5, -57.5], "expected": 82.5}, {"input": [82.5, -57.0], "expected": 82.5}, {"input": [82.5, -56.5], "expected": 82.5}, {"input": [82.5, -56.0], "expected": 82.5}, {"input": [82.5, -55.5], "expected": 82.5}, {"input": [82.5, -55.0], "expected": 82.5}, {"input": [82.5, -54.5], "expected": 82.5}, {"input": [82.5, -54.0], "expected": 82.5}, {"input": [82.5, -53.5], "expected": 82.5}, {"input": [82.5, -53.0], "expected": 82.5}, {"input": [82.5, -52.5], "expected": 82.5}, {"input": [82.5, -52.0], "expected": 82.5}, {"input": [82.5, -51.5], "expected": 82.5}, {"input": [82.5, -51.0], "expected": 82.5}, {"input": [82.5, -50.5], "expected": 82.5}, {"input": [82.5, -50.0], "expected": 82.5}, {"input": [82.5, -49.5], "expected": 82.5}, {"input": [82.5, -49.0], "expected": 82.5}, {"input": [82.5, -48.5], "expected": 82.5}, {"input": [82.5, -48.0], "expected": 82.5}, {"input": [82.5, -47.5], "expected": 82.5}, {"input": [82.5, -47.0], "expected": 82.5}, {"input": [82.5, -46.5], "expected": 82.5}, {"input": [82.5, -46.0], "expected": 82.5}, {"input": [82.5, -45.5], "expected": 82.5}, {"input": [82.5, -45.0], "expected": 82.5}, {"input": [82.5, -44.5], "expected": 82.5}, {"input": [82.5, -44.0], "expected": 82.5}, {"input": [82.5, -43.5], "expected": 82.5}, {"input": [82.5, -43.0], "expected": 82.5}, {"input": [82.5, -42.5], "expected": 82.5}, {"input": [82.5, -42.0], "expected": 82.5}, {"input": [82.5, -41.5], "expected": 82.5}, {"input": [82.5, -41.0], "expected": 82.5}, {"input": [82.5, -40.5], "expected": 82.5}, {"input": [82.5, -40.0], "expected": 82.5}, {"input": [82.5, -39.5], "expected": 82.5}, {"input": [82.5, -39.0], "expected": 82.5}, {"input": [82.5, -38.5], "expected": 82.5}, {"input": [82.5, -38.0], "expected": 82.5}, {"input": [82.5, -37.5], "expected": 82.5}, {"input": [82.5, -37.0], "expected": 82.5}, {"input": [82.5, -36.5], "expected": 82.5}, {"input": [82.5, -36.0], "expected": 82.5}, {"input": [82.5, -35.5], "expected": 82.5}, {"input": [82.5, -35.0], "expected": 82.5}, {"input": [82.5, -34.5], "expected": 82.5}, {"input": [82.5, -34.0], "expected": 82.5}, {"input": [82.5, -33.5], "expected": 82.5}, {"input": [82.5, -33.0], "expected": 82.5}, {"input": [82.5, -32.5], "expected": 82.5}, {"input": [82.5, -32.0], "expected": 82.5}, {"input": [82.5, -31.5], "expected": 82.5}, {"input": [82.5, -31.0], "expected": 82.5}, {"input": [82.5, -30.5], "expected": 82.5}, {"input": [82.5, -30.0], "expected": 82.5}, {"input": [82.5, -29.5], "expected": 82.5}, {"input": [82.5, -29.0], "expected": 82.5}, {"input": [82.5, -28.5], "expected": 82.5}, {"input": [82.5, -28.0], "expected": 82.5}, {"input": [82.5, -27.5], "expected": 82.5}, {"input": [82.5, -27.0], "expected": 82.5}, {"input": [82.5, -26.5], "expected": 82.5}, {"input": [82.5, -26.0], "expected": 82.5}, {"input": [82.5, -25.5], "expected": 82.5}, {"input": [82.5, -25.0], "expected": 82.5}, {"input": [82.5, -24.5], "expected": 82.5}, {"input": [82.5, -24.0], "expected": 82.5}, {"input": [82.5, -23.5], "expected": 82.5}, {"input": [82.5, -23.0], "expected": 82.5}, {"input": [82.5, -22.5], "expected": 82.5}, {"input": [82.5, -22.0], "expected": 82.5}, {"input": [82.5, -21.5], "expected": 82.5}, {"input": [82.5, -21.0], "expected": 82.5}, {"input": [82.5, -20.5], "expected": 82.5}, {"input": [82.5, -20.0], "expected": 82.5}, {"input": [82.5, -19.5], "expected": 82.5}, {"input": [82.5, -19.0], "expected": 82.5}, {"input": [82.5, -18.5], "expected": 82.5}, {"input": [82.5, -18.0], "expected": 82.5}, {"input": [82.5, -17.5], "expected": 82.5}, {"input": [82.5, -17.0], "expected": 82.5}, {"input": [82.5, -16.5], "expected": 82.5}, {"input": [82.5, -16.0], "expected": 82.5}, {"input": [82.5, -15.5], "expected": 82.5}, {"input": [82.5, -15.0], "expected": 82.5}, {"input": [82.5, -14.5], "expected": 82.5}, {"input": [82.5, -14.0], "expected": 82.5}, {"input": [82.5, -13.5], "expected": 82.5}, {"input": [82.5, -13.0], "expected": 82.5}, {"input": [82.5, -12.5], "expected": 82.5}, {"input": [82.5, -12.0], "expected": 82.5}, {"input": [82.5, -11.5], "expected": 82.5}, {"input": [82.5, -11.0], "expected": 82.5}, {"input": [82.5, -10.5], "expected": 82.5}, {"input": [82.5, -10.0], "expected": 82.5}, {"input": [82.5, -9.5], "expected": 82.5}, {"input": [82.5, -9.0], "expected": 82.5}, {"input": [82.5, -8.5], "expected": 82.5}, {"input": [82.5, -8.0], "expected": 82.5}, {"input": [82.5, -7.5], "expected": 82.5}, {"input": [82.5, -7.0], "expected": 82.5}, {"input": [82.5, -6.5], "expected": 82.5}, {"input": [82.5, -6.0], "expected": 82.5}, {"input": [82.5, -5.5], "expected": 82.5}, {"input": [82.5, -5.0], "expected": 82.5}, {"input": [82.5, -4.5], "expected": 82.5}, {"input": [82.5, -4.0], "expected": 82.5}, {"input": [82.5, -3.5], "expected": 82.5}, {"input": [82.5, -3.0], "expected": 82.5}, {"input": [82.5, -2.5], "expected": 82.5}, {"input": [82.5, -2.0], "expected": 82.5}, {"input": [82.5, -1.5], "expected": 82.5}, {"input": [82.5, -1.0], "expected": 82.5}, {"input": [82.5, -0.5], "expected": 82.5}, {"input": [82.5, 0.0], "expected": 82.5}, {"input": [82.5, 0.5], "expected": 82.5}, {"input": [82.5, 1.0], "expected": 82.5}, {"input": [82.5, 1.5], "expected": 82.5}, {"input": [82.5, 2.0], "expected": 82.5}, {"input": [82.5, 2.5], "expected": 82.5}, {"input": [82.5, 3.0], "expected": 82.5}, {"input": [82.5, 3.5], "expected": 82.5}, {"input": [82.5, 4.0], "expected": 82.5}, {"input": [82.5, 4.5], "expected": 82.5}, {"input": [82.5, 5.0], "expected": 82.5}, {"input": [82.5, 5.5], "expected": 82.5}, {"input": [82.5, 6.0], "expected": 82.5}, {"input": [82.5, 6.5], "expected": 82.5}, {"input": [82.5, 7.0], "expected": 82.5}, {"input": [82.5, 7.5], "expected": 82.5}, {"input": [82.5, 8.0], "expected": 82.5}, {"input": [82.5, 8.5], "expected": 82.5}, {"input": [82.5, 9.0], "expected": 82.5}, {"input": [82.5, 9.5], "expected": 82.5}, {"input": [82.5, 10.0], "expected": 82.5}, {"input": [82.5, 10.5], "expected": 82.5}, {"input": [82.5, 11.0], "expected": 82.5}, {"input": [82.5, 11.5], "expected": 82.5}, {"input": [82.5, 12.0], "expected": 82.5}, {"input": [82.5, 12.5], "expected": 82.5}, {"input": [82.5, 13.0], "expected": 82.5}, {"input": [82.5, 13.5], "expected": 82.5}, {"input": [82.5, 14.0], "expected": 82.5}, {"input": [82.5, 14.5], "expected": 82.5}, {"input": [82.5, 15.0], "expected": 82.5}, {"input": [82.5, 15.5], "expected": 82.5}, {"input": [82.5, 16.0], "expected": 82.5}, {"input": [82.5, 16.5], "expected": 82.5}, {"input": [82.5, 17.0], "expected": 82.5}, {"input": [82.5, 17.5], "expected": 82.5}, {"input": [82.5, 18.0], "expected": 82.5}, {"input": [82.5, 18.5], "expected": 82.5}, {"input": [82.5, 19.0], "expected": 82.5}, {"input": [82.5, 19.5], "expected": 82.5}, {"input": [82.5, 20.0], "expected": 82.5}, {"input": [82.5, 20.5], "expected": 82.5}, {"input": [82.5, 21.0], "expected": 82.5}, {"input": [82.5, 21.5], "expected": 82.5}, {"input": [82.5, 22.0], "expected": 82.5}, {"input": [82.5, 22.5], "expected": 82.5}, {"input": [82.5, 23.0], "expected": 82.5}, {"input": [82.5, 23.5], "expected": 82.5}, {"input": [82.5, 24.0], "expected": 82.5}, {"input": [82.5, 24.5], "expected": 82.5}, {"input": [82.5, 25.0], "expected": 82.5}, {"input": [82.5, 25.5], "expected": 82.5}, {"input": [82.5, 26.0], "expected": 82.5}, {"input": [82.5, 26.5], "expected": 82.5}, {"input": [82.5, 27.0], "expected": 82.5}, {"input": [82.5, 27.5], "expected": 82.5}, {"input": [82.5, 28.0], "expected": 82.5}, {"input": [82.5, 28.5], "expected": 82.5}, {"input": [82.5, 29.0], "expected": 82.5}, {"input": [82.5, 29.5], "expected": 82.5}, {"input": [82.5, 30.0], "expected": 82.5}, {"input": [82.5, 30.5], "expected": 82.5}, {"input": [82.5, 31.0], "expected": 82.5}, {"input": [82.5, 31.5], "expected": 82.5}, {"input": [82.5, 32.0], "expected": 82.5}, {"input": [82.5, 32.5], "expected": 82.5}, {"input": [82.5, 33.0], "expected": 82.5}, {"input": [82.5, 33.5], "expected": 82.5}, {"input": [82.5, 34.0], "expected": 82.5}, {"input": [82.5, 34.5], "expected": 82.5}, {"input": [82.5, 35.0], "expected": 82.5}, {"input": [82.5, 35.5], "expected": 82.5}, {"input": [82.5, 36.0], "expected": 82.5}, {"input": [82.5, 36.5], "expected": 82.5}, {"input": [82.5, 37.0], "expected": 82.5}, {"input": [82.5, 37.5], "expected": 82.5}, {"input": [82.5, 38.0], "expected": 82.5}, {"input": [82.5, 38.5], "expected": 82.5}, {"input": [82.5, 39.0], "expected": 82.5}, {"input": [82.5, 39.5], "expected": 82.5}, {"input": [82.5, 40.0], "expected": 82.5}, {"input": [82.5, 40.5], "expected": 82.5}, {"input": [82.5, 41.0], "expected": 82.5}, {"input": [82.5, 41.5], "expected": 82.5}, {"input": [82.5, 42.0], "expected": 82.5}, {"input": [82.5, 42.5], "expected": 82.5}, {"input": [82.5, 43.0], "expected": 82.5}, {"input": [82.5, 43.5], "expected": 82.5}, {"input": [82.5, 44.0], "expected": 82.5}, {"input": [82.5, 44.5], "expected": 82.5}, {"input": [82.5, 45.0], "expected": 82.5}, {"input": [82.5, 45.5], "expected": 82.5}, {"input": [82.5, 46.0], "expected": 82.5}, {"input": [82.5, 46.5], "expected": 82.5}, {"input": [82.5, 47.0], "expected": 82.5}, {"input": [82.5, 47.5], "expected": 82.5}, {"input": [82.5, 48.0], "expected": 82.5}, {"input": [82.5, 48.5], "expected": 82.5}, {"input": [82.5, 49.0], "expected": 82.5}, {"input": [82.5, 49.5], "expected": 82.5}, {"input": [82.5, 50.0], "expected": 82.50000000000001}, {"input": [82.5, 50.5], "expected": 82.50000000000001}, {"input": [82.5, 51.0], "expected": 82.50000000000001}, {"input": [82.5, 51.5], "expected": 82.50000000000003}, {"input": [82.5, 52.0], "expected": 82.50000000000006}, {"input": [82.5, 52.5], "expected": 82.5000000000001}, {"input": [82.5, 53.0], "expected": 82.50000000000016}, {"input": [82.5, 53.5], "expected": 82.50000000000026}, {"input": [82.5, 54.0], "expected": 82.50000000000043}, {"input": [82.5, 54.5], "expected": 82.5000000000007}, {"input": [82.5, 55.0], "expected": 82.50000000000114}, {"input": [82.5, 55.5], "expected": 82.50000000000188}, {"input": [82.5, 56.0], "expected": 82.5000000000031}, {"input": [82.5, 56.5], "expected": 82.50000000000512}, {"input": [82.5, 57.0], "expected": 82.50000000000843}, {"input": [82.5, 57.5], "expected": 82.50000000001388}, {"input": [82.5, 58.0], "expected": 82.5000000000229}, {"input": [82.5, 58.5], "expected": 82.50000000003776}, {"input": [82.5, 59.0], "expected": 82.50000000006224}, {"input": [82.5, 59.5], "expected": 82.50000000010262}, {"input": [82.5, 60.0], "expected": 82.5000000001692}, {"input": [82.5, 60.5], "expected": 82.50000000027894}, {"input": [82.5, 61.0], "expected": 82.5000000004599}, {"input": [82.5, 61.5], "expected": 82.50000000075826}, {"input": [82.5, 62.0], "expected": 82.50000000125016}, {"input": [82.5, 62.5], "expected": 82.50000000206116}, {"input": [82.5, 63.0], "expected": 82.50000000339827}, {"input": [82.5, 63.5], "expected": 82.5000000056028}, {"input": [82.5, 64.0], "expected": 82.50000000923745}, {"input": [82.5, 64.5], "expected": 82.50000001522999}, {"input": [82.5, 65.0], "expected": 82.50000002511}, {"input": [82.5, 65.5], "expected": 82.50000004139937}, {"input": [82.5, 66.0], "expected": 82.50000006825603}, {"input": [82.5, 66.5], "expected": 82.50000011253516}, {"input": [82.5, 67.0], "expected": 82.50000018553912}, {"input": [82.5, 67.5], "expected": 82.50000030590228}, {"input": [82.5, 68.0], "expected": 82.50000050434754}, {"input": [82.5, 68.5], "expected": 82.50000083152837}, {"input": [82.5, 69.0], "expected": 82.50000137095815}, {"input": [82.5, 69.5], "expected": 82.50000226032685}, {"input": [82.5, 70.0], "expected": 82.50000372664623}, {"input": [82.5, 70.5], "expected": 82.50000614419348}, {"input": [82.5, 71.0], "expected": 82.50001013004228}, {"input": [82.5, 71.5], "expected": 82.50001670156132}, {"input": [82.5, 72.0], "expected": 82.50002753607023}, {"input": [82.5, 72.5], "expected": 82.50004539889922}, {"input": [82.5, 73.0], "expected": 82.50007484902864}, {"input": [82.5, 73.5], "expected": 82.50012340218973}, {"input": [82.5, 74.0], "expected": 82.50020344767213}, {"input": [82.5, 74.5], "expected": 82.5003354063729}, {"input": [82.5, 75.0], "expected": 82.50055293147535}, {"input": [82.5, 75.5], "expected": 82.50091146645377}, {"input": [82.5, 76.0], "expected": 82.50150231015975}, {"input": [82.5, 76.5], "expected": 82.50247568513772}, {"input": [82.5, 77.0], "expected": 82.50407844327057}, {"input": [82.5, 77.5], "expected": 82.50671534848912}, {"input": [82.5, 78.0], "expected": 82.5110477448486}, {"input": [82.5, 78.5], "expected": 82.5181499279178}, {"input": [82.5, 79.0], "expected": 82.52975041827263}, {"input": [82.5, 79.5], "expected": 82.54858735157374}, {"input": [82.5, 80.0], "expected": 82.57888973429255}, {"input": [82.5, 80.5], "expected": 82.62692801104298}, {"input": [82.5, 81.0], "expected": 82.70141327798275}, {"input": [82.5, 81.5], "expected": 82.81326168751822}, {"input": [82.5, 82.0], "expected": 82.9740769841801}, {"input": [82.5, 82.5], "expected": 83.19314718055995}, {"input": [82.5, 83.0], "expected": 83.4740769841801}, {"input": [82.5, 83.5], "expected": 83.81326168751822}, {"input": [82.5, 84.0], "expected": 84.20141327798275}, {"input": [82.5, 84.5], "expected": 84.62692801104298}, {"input": [82.5, 85.0], "expected": 85.07888973429255}, {"input": [82.5, 85.5], "expected": 85.54858735157374}, {"input": [82.5, 86.0], "expected": 86.02975041827263}, {"input": [82.5, 86.5], "expected": 86.5181499279178}, {"input": [82.5, 87.0], "expected": 87.0110477448486}, {"input": [82.5, 87.5], "expected": 87.50671534848912}, {"input": [82.5, 88.0], "expected": 88.00407844327057}, {"input": [82.5, 88.5], "expected": 88.50247568513772}, {"input": [82.5, 89.0], "expected": 89.00150231015975}, {"input": [82.5, 89.5], "expected": 89.50091146645377}, {"input": [82.5, 90.0], "expected": 90.00055293147535}, {"input": [82.5, 90.5], "expected": 90.5003354063729}, {"input": [82.5, 91.0], "expected": 91.00020344767213}, {"input": [82.5, 91.5], "expected": 91.50012340218973}, {"input": [82.5, 92.0], "expected": 92.00007484902864}, {"input": [82.5, 92.5], "expected": 92.50004539889922}, {"input": [82.5, 93.0], "expected": 93.00002753607023}, {"input": [82.5, 93.5], "expected": 93.50001670156132}, {"input": [82.5, 94.0], "expected": 94.00001013004228}, {"input": [82.5, 94.5], "expected": 94.50000614419348}, {"input": [82.5, 95.0], "expected": 95.00000372664623}, {"input": [82.5, 95.5], "expected": 95.50000226032685}, {"input": [82.5, 96.0], "expected": 96.00000137095815}, {"input": [82.5, 96.5], "expected": 96.50000083152837}, {"input": [82.5, 97.0], "expected": 97.00000050434754}, {"input": [82.5, 97.5], "expected": 97.50000030590228}, {"input": [82.5, 98.0], "expected": 98.00000018553912}, {"input": [82.5, 98.5], "expected": 98.50000011253516}, {"input": [82.5, 99.0], "expected": 99.00000006825603}, {"input": [82.5, 99.5], "expected": 99.50000004139937}, {"input": [83.0, -100.0], "expected": 83.0}, {"input": [83.0, -99.5], "expected": 83.0}, {"input": [83.0, -99.0], "expected": 83.0}, {"input": [83.0, -98.5], "expected": 83.0}, {"input": [83.0, -98.0], "expected": 83.0}, {"input": [83.0, -97.5], "expected": 83.0}, {"input": [83.0, -97.0], "expected": 83.0}, {"input": [83.0, -96.5], "expected": 83.0}, {"input": [83.0, -96.0], "expected": 83.0}, {"input": [83.0, -95.5], "expected": 83.0}, {"input": [83.0, -95.0], "expected": 83.0}, {"input": [83.0, -94.5], "expected": 83.0}, {"input": [83.0, -94.0], "expected": 83.0}, {"input": [83.0, -93.5], "expected": 83.0}, {"input": [83.0, -93.0], "expected": 83.0}, {"input": [83.0, -92.5], "expected": 83.0}, {"input": [83.0, -92.0], "expected": 83.0}, {"input": [83.0, -91.5], "expected": 83.0}, {"input": [83.0, -91.0], "expected": 83.0}, {"input": [83.0, -90.5], "expected": 83.0}, {"input": [83.0, -90.0], "expected": 83.0}, {"input": [83.0, -89.5], "expected": 83.0}, {"input": [83.0, -89.0], "expected": 83.0}, {"input": [83.0, -88.5], "expected": 83.0}, {"input": [83.0, -88.0], "expected": 83.0}, {"input": [83.0, -87.5], "expected": 83.0}, {"input": [83.0, -87.0], "expected": 83.0}, {"input": [83.0, -86.5], "expected": 83.0}, {"input": [83.0, -86.0], "expected": 83.0}, {"input": [83.0, -85.5], "expected": 83.0}, {"input": [83.0, -85.0], "expected": 83.0}, {"input": [83.0, -84.5], "expected": 83.0}, {"input": [83.0, -84.0], "expected": 83.0}, {"input": [83.0, -83.5], "expected": 83.0}, {"input": [83.0, -83.0], "expected": 83.0}, {"input": [83.0, -82.5], "expected": 83.0}, {"input": [83.0, -82.0], "expected": 83.0}, {"input": [83.0, -81.5], "expected": 83.0}, {"input": [83.0, -81.0], "expected": 83.0}, {"input": [83.0, -80.5], "expected": 83.0}, {"input": [83.0, -80.0], "expected": 83.0}, {"input": [83.0, -79.5], "expected": 83.0}, {"input": [83.0, -79.0], "expected": 83.0}, {"input": [83.0, -78.5], "expected": 83.0}, {"input": [83.0, -78.0], "expected": 83.0}, {"input": [83.0, -77.5], "expected": 83.0}, {"input": [83.0, -77.0], "expected": 83.0}, {"input": [83.0, -76.5], "expected": 83.0}, {"input": [83.0, -76.0], "expected": 83.0}, {"input": [83.0, -75.5], "expected": 83.0}, {"input": [83.0, -75.0], "expected": 83.0}, {"input": [83.0, -74.5], "expected": 83.0}, {"input": [83.0, -74.0], "expected": 83.0}, {"input": [83.0, -73.5], "expected": 83.0}, {"input": [83.0, -73.0], "expected": 83.0}, {"input": [83.0, -72.5], "expected": 83.0}, {"input": [83.0, -72.0], "expected": 83.0}, {"input": [83.0, -71.5], "expected": 83.0}, {"input": [83.0, -71.0], "expected": 83.0}, {"input": [83.0, -70.5], "expected": 83.0}, {"input": [83.0, -70.0], "expected": 83.0}, {"input": [83.0, -69.5], "expected": 83.0}, {"input": [83.0, -69.0], "expected": 83.0}, {"input": [83.0, -68.5], "expected": 83.0}, {"input": [83.0, -68.0], "expected": 83.0}, {"input": [83.0, -67.5], "expected": 83.0}, {"input": [83.0, -67.0], "expected": 83.0}, {"input": [83.0, -66.5], "expected": 83.0}, {"input": [83.0, -66.0], "expected": 83.0}, {"input": [83.0, -65.5], "expected": 83.0}, {"input": [83.0, -65.0], "expected": 83.0}, {"input": [83.0, -64.5], "expected": 83.0}, {"input": [83.0, -64.0], "expected": 83.0}, {"input": [83.0, -63.5], "expected": 83.0}, {"input": [83.0, -63.0], "expected": 83.0}, {"input": [83.0, -62.5], "expected": 83.0}, {"input": [83.0, -62.0], "expected": 83.0}, {"input": [83.0, -61.5], "expected": 83.0}, {"input": [83.0, -61.0], "expected": 83.0}, {"input": [83.0, -60.5], "expected": 83.0}, {"input": [83.0, -60.0], "expected": 83.0}, {"input": [83.0, -59.5], "expected": 83.0}, {"input": [83.0, -59.0], "expected": 83.0}, {"input": [83.0, -58.5], "expected": 83.0}, {"input": [83.0, -58.0], "expected": 83.0}, {"input": [83.0, -57.5], "expected": 83.0}, {"input": [83.0, -57.0], "expected": 83.0}, {"input": [83.0, -56.5], "expected": 83.0}, {"input": [83.0, -56.0], "expected": 83.0}, {"input": [83.0, -55.5], "expected": 83.0}, {"input": [83.0, -55.0], "expected": 83.0}, {"input": [83.0, -54.5], "expected": 83.0}, {"input": [83.0, -54.0], "expected": 83.0}, {"input": [83.0, -53.5], "expected": 83.0}, {"input": [83.0, -53.0], "expected": 83.0}, {"input": [83.0, -52.5], "expected": 83.0}, {"input": [83.0, -52.0], "expected": 83.0}, {"input": [83.0, -51.5], "expected": 83.0}, {"input": [83.0, -51.0], "expected": 83.0}, {"input": [83.0, -50.5], "expected": 83.0}, {"input": [83.0, -50.0], "expected": 83.0}, {"input": [83.0, -49.5], "expected": 83.0}, {"input": [83.0, -49.0], "expected": 83.0}, {"input": [83.0, -48.5], "expected": 83.0}, {"input": [83.0, -48.0], "expected": 83.0}, {"input": [83.0, -47.5], "expected": 83.0}, {"input": [83.0, -47.0], "expected": 83.0}, {"input": [83.0, -46.5], "expected": 83.0}, {"input": [83.0, -46.0], "expected": 83.0}, {"input": [83.0, -45.5], "expected": 83.0}, {"input": [83.0, -45.0], "expected": 83.0}, {"input": [83.0, -44.5], "expected": 83.0}, {"input": [83.0, -44.0], "expected": 83.0}, {"input": [83.0, -43.5], "expected": 83.0}, {"input": [83.0, -43.0], "expected": 83.0}, {"input": [83.0, -42.5], "expected": 83.0}, {"input": [83.0, -42.0], "expected": 83.0}, {"input": [83.0, -41.5], "expected": 83.0}, {"input": [83.0, -41.0], "expected": 83.0}, {"input": [83.0, -40.5], "expected": 83.0}, {"input": [83.0, -40.0], "expected": 83.0}, {"input": [83.0, -39.5], "expected": 83.0}, {"input": [83.0, -39.0], "expected": 83.0}, {"input": [83.0, -38.5], "expected": 83.0}, {"input": [83.0, -38.0], "expected": 83.0}, {"input": [83.0, -37.5], "expected": 83.0}, {"input": [83.0, -37.0], "expected": 83.0}, {"input": [83.0, -36.5], "expected": 83.0}, {"input": [83.0, -36.0], "expected": 83.0}, {"input": [83.0, -35.5], "expected": 83.0}, {"input": [83.0, -35.0], "expected": 83.0}, {"input": [83.0, -34.5], "expected": 83.0}, {"input": [83.0, -34.0], "expected": 83.0}, {"input": [83.0, -33.5], "expected": 83.0}, {"input": [83.0, -33.0], "expected": 83.0}, {"input": [83.0, -32.5], "expected": 83.0}, {"input": [83.0, -32.0], "expected": 83.0}, {"input": [83.0, -31.5], "expected": 83.0}, {"input": [83.0, -31.0], "expected": 83.0}, {"input": [83.0, -30.5], "expected": 83.0}, {"input": [83.0, -30.0], "expected": 83.0}, {"input": [83.0, -29.5], "expected": 83.0}, {"input": [83.0, -29.0], "expected": 83.0}, {"input": [83.0, -28.5], "expected": 83.0}, {"input": [83.0, -28.0], "expected": 83.0}, {"input": [83.0, -27.5], "expected": 83.0}, {"input": [83.0, -27.0], "expected": 83.0}, {"input": [83.0, -26.5], "expected": 83.0}, {"input": [83.0, -26.0], "expected": 83.0}, {"input": [83.0, -25.5], "expected": 83.0}, {"input": [83.0, -25.0], "expected": 83.0}, {"input": [83.0, -24.5], "expected": 83.0}, {"input": [83.0, -24.0], "expected": 83.0}, {"input": [83.0, -23.5], "expected": 83.0}, {"input": [83.0, -23.0], "expected": 83.0}, {"input": [83.0, -22.5], "expected": 83.0}, {"input": [83.0, -22.0], "expected": 83.0}, {"input": [83.0, -21.5], "expected": 83.0}, {"input": [83.0, -21.0], "expected": 83.0}, {"input": [83.0, -20.5], "expected": 83.0}, {"input": [83.0, -20.0], "expected": 83.0}, {"input": [83.0, -19.5], "expected": 83.0}, {"input": [83.0, -19.0], "expected": 83.0}, {"input": [83.0, -18.5], "expected": 83.0}, {"input": [83.0, -18.0], "expected": 83.0}, {"input": [83.0, -17.5], "expected": 83.0}, {"input": [83.0, -17.0], "expected": 83.0}, {"input": [83.0, -16.5], "expected": 83.0}, {"input": [83.0, -16.0], "expected": 83.0}, {"input": [83.0, -15.5], "expected": 83.0}, {"input": [83.0, -15.0], "expected": 83.0}, {"input": [83.0, -14.5], "expected": 83.0}, {"input": [83.0, -14.0], "expected": 83.0}, {"input": [83.0, -13.5], "expected": 83.0}, {"input": [83.0, -13.0], "expected": 83.0}, {"input": [83.0, -12.5], "expected": 83.0}, {"input": [83.0, -12.0], "expected": 83.0}, {"input": [83.0, -11.5], "expected": 83.0}, {"input": [83.0, -11.0], "expected": 83.0}, {"input": [83.0, -10.5], "expected": 83.0}, {"input": [83.0, -10.0], "expected": 83.0}, {"input": [83.0, -9.5], "expected": 83.0}, {"input": [83.0, -9.0], "expected": 83.0}, {"input": [83.0, -8.5], "expected": 83.0}, {"input": [83.0, -8.0], "expected": 83.0}, {"input": [83.0, -7.5], "expected": 83.0}, {"input": [83.0, -7.0], "expected": 83.0}, {"input": [83.0, -6.5], "expected": 83.0}, {"input": [83.0, -6.0], "expected": 83.0}, {"input": [83.0, -5.5], "expected": 83.0}, {"input": [83.0, -5.0], "expected": 83.0}, {"input": [83.0, -4.5], "expected": 83.0}, {"input": [83.0, -4.0], "expected": 83.0}, {"input": [83.0, -3.5], "expected": 83.0}, {"input": [83.0, -3.0], "expected": 83.0}, {"input": [83.0, -2.5], "expected": 83.0}, {"input": [83.0, -2.0], "expected": 83.0}, {"input": [83.0, -1.5], "expected": 83.0}, {"input": [83.0, -1.0], "expected": 83.0}, {"input": [83.0, -0.5], "expected": 83.0}, {"input": [83.0, 0.0], "expected": 83.0}, {"input": [83.0, 0.5], "expected": 83.0}, {"input": [83.0, 1.0], "expected": 83.0}, {"input": [83.0, 1.5], "expected": 83.0}, {"input": [83.0, 2.0], "expected": 83.0}, {"input": [83.0, 2.5], "expected": 83.0}, {"input": [83.0, 3.0], "expected": 83.0}, {"input": [83.0, 3.5], "expected": 83.0}, {"input": [83.0, 4.0], "expected": 83.0}, {"input": [83.0, 4.5], "expected": 83.0}, {"input": [83.0, 5.0], "expected": 83.0}, {"input": [83.0, 5.5], "expected": 83.0}, {"input": [83.0, 6.0], "expected": 83.0}, {"input": [83.0, 6.5], "expected": 83.0}, {"input": [83.0, 7.0], "expected": 83.0}, {"input": [83.0, 7.5], "expected": 83.0}, {"input": [83.0, 8.0], "expected": 83.0}, {"input": [83.0, 8.5], "expected": 83.0}, {"input": [83.0, 9.0], "expected": 83.0}, {"input": [83.0, 9.5], "expected": 83.0}, {"input": [83.0, 10.0], "expected": 83.0}, {"input": [83.0, 10.5], "expected": 83.0}, {"input": [83.0, 11.0], "expected": 83.0}, {"input": [83.0, 11.5], "expected": 83.0}, {"input": [83.0, 12.0], "expected": 83.0}, {"input": [83.0, 12.5], "expected": 83.0}, {"input": [83.0, 13.0], "expected": 83.0}, {"input": [83.0, 13.5], "expected": 83.0}, {"input": [83.0, 14.0], "expected": 83.0}, {"input": [83.0, 14.5], "expected": 83.0}, {"input": [83.0, 15.0], "expected": 83.0}, {"input": [83.0, 15.5], "expected": 83.0}, {"input": [83.0, 16.0], "expected": 83.0}, {"input": [83.0, 16.5], "expected": 83.0}, {"input": [83.0, 17.0], "expected": 83.0}, {"input": [83.0, 17.5], "expected": 83.0}, {"input": [83.0, 18.0], "expected": 83.0}, {"input": [83.0, 18.5], "expected": 83.0}, {"input": [83.0, 19.0], "expected": 83.0}, {"input": [83.0, 19.5], "expected": 83.0}, {"input": [83.0, 20.0], "expected": 83.0}, {"input": [83.0, 20.5], "expected": 83.0}, {"input": [83.0, 21.0], "expected": 83.0}, {"input": [83.0, 21.5], "expected": 83.0}, {"input": [83.0, 22.0], "expected": 83.0}, {"input": [83.0, 22.5], "expected": 83.0}, {"input": [83.0, 23.0], "expected": 83.0}, {"input": [83.0, 23.5], "expected": 83.0}, {"input": [83.0, 24.0], "expected": 83.0}, {"input": [83.0, 24.5], "expected": 83.0}, {"input": [83.0, 25.0], "expected": 83.0}, {"input": [83.0, 25.5], "expected": 83.0}, {"input": [83.0, 26.0], "expected": 83.0}, {"input": [83.0, 26.5], "expected": 83.0}, {"input": [83.0, 27.0], "expected": 83.0}, {"input": [83.0, 27.5], "expected": 83.0}, {"input": [83.0, 28.0], "expected": 83.0}, {"input": [83.0, 28.5], "expected": 83.0}, {"input": [83.0, 29.0], "expected": 83.0}, {"input": [83.0, 29.5], "expected": 83.0}, {"input": [83.0, 30.0], "expected": 83.0}, {"input": [83.0, 30.5], "expected": 83.0}, {"input": [83.0, 31.0], "expected": 83.0}, {"input": [83.0, 31.5], "expected": 83.0}, {"input": [83.0, 32.0], "expected": 83.0}, {"input": [83.0, 32.5], "expected": 83.0}, {"input": [83.0, 33.0], "expected": 83.0}, {"input": [83.0, 33.5], "expected": 83.0}, {"input": [83.0, 34.0], "expected": 83.0}, {"input": [83.0, 34.5], "expected": 83.0}, {"input": [83.0, 35.0], "expected": 83.0}, {"input": [83.0, 35.5], "expected": 83.0}, {"input": [83.0, 36.0], "expected": 83.0}, {"input": [83.0, 36.5], "expected": 83.0}, {"input": [83.0, 37.0], "expected": 83.0}, {"input": [83.0, 37.5], "expected": 83.0}, {"input": [83.0, 38.0], "expected": 83.0}, {"input": [83.0, 38.5], "expected": 83.0}, {"input": [83.0, 39.0], "expected": 83.0}, {"input": [83.0, 39.5], "expected": 83.0}, {"input": [83.0, 40.0], "expected": 83.0}, {"input": [83.0, 40.5], "expected": 83.0}, {"input": [83.0, 41.0], "expected": 83.0}, {"input": [83.0, 41.5], "expected": 83.0}, {"input": [83.0, 42.0], "expected": 83.0}, {"input": [83.0, 42.5], "expected": 83.0}, {"input": [83.0, 43.0], "expected": 83.0}, {"input": [83.0, 43.5], "expected": 83.0}, {"input": [83.0, 44.0], "expected": 83.0}, {"input": [83.0, 44.5], "expected": 83.0}, {"input": [83.0, 45.0], "expected": 83.0}, {"input": [83.0, 45.5], "expected": 83.0}, {"input": [83.0, 46.0], "expected": 83.0}, {"input": [83.0, 46.5], "expected": 83.0}, {"input": [83.0, 47.0], "expected": 83.0}, {"input": [83.0, 47.5], "expected": 83.0}, {"input": [83.0, 48.0], "expected": 83.0}, {"input": [83.0, 48.5], "expected": 83.0}, {"input": [83.0, 49.0], "expected": 83.0}, {"input": [83.0, 49.5], "expected": 83.0}, {"input": [83.0, 50.0], "expected": 83.0}, {"input": [83.0, 50.5], "expected": 83.00000000000001}, {"input": [83.0, 51.0], "expected": 83.00000000000001}, {"input": [83.0, 51.5], "expected": 83.00000000000001}, {"input": [83.0, 52.0], "expected": 83.00000000000003}, {"input": [83.0, 52.5], "expected": 83.00000000000006}, {"input": [83.0, 53.0], "expected": 83.0000000000001}, {"input": [83.0, 53.5], "expected": 83.00000000000016}, {"input": [83.0, 54.0], "expected": 83.00000000000026}, {"input": [83.0, 54.5], "expected": 83.00000000000043}, {"input": [83.0, 55.0], "expected": 83.0000000000007}, {"input": [83.0, 55.5], "expected": 83.00000000000114}, {"input": [83.0, 56.0], "expected": 83.00000000000188}, {"input": [83.0, 56.5], "expected": 83.0000000000031}, {"input": [83.0, 57.0], "expected": 83.00000000000512}, {"input": [83.0, 57.5], "expected": 83.00000000000843}, {"input": [83.0, 58.0], "expected": 83.00000000001388}, {"input": [83.0, 58.5], "expected": 83.0000000000229}, {"input": [83.0, 59.0], "expected": 83.00000000003776}, {"input": [83.0, 59.5], "expected": 83.00000000006224}, {"input": [83.0, 60.0], "expected": 83.00000000010262}, {"input": [83.0, 60.5], "expected": 83.0000000001692}, {"input": [83.0, 61.0], "expected": 83.00000000027894}, {"input": [83.0, 61.5], "expected": 83.0000000004599}, {"input": [83.0, 62.0], "expected": 83.00000000075826}, {"input": [83.0, 62.5], "expected": 83.00000000125016}, {"input": [83.0, 63.0], "expected": 83.00000000206116}, {"input": [83.0, 63.5], "expected": 83.00000000339827}, {"input": [83.0, 64.0], "expected": 83.0000000056028}, {"input": [83.0, 64.5], "expected": 83.00000000923745}, {"input": [83.0, 65.0], "expected": 83.00000001522999}, {"input": [83.0, 65.5], "expected": 83.00000002511}, {"input": [83.0, 66.0], "expected": 83.00000004139937}, {"input": [83.0, 66.5], "expected": 83.00000006825603}, {"input": [83.0, 67.0], "expected": 83.00000011253516}, {"input": [83.0, 67.5], "expected": 83.00000018553912}, {"input": [83.0, 68.0], "expected": 83.00000030590228}, {"input": [83.0, 68.5], "expected": 83.00000050434754}, {"input": [83.0, 69.0], "expected": 83.00000083152837}, {"input": [83.0, 69.5], "expected": 83.00000137095815}, {"input": [83.0, 70.0], "expected": 83.00000226032685}, {"input": [83.0, 70.5], "expected": 83.00000372664623}, {"input": [83.0, 71.0], "expected": 83.00000614419348}, {"input": [83.0, 71.5], "expected": 83.00001013004228}, {"input": [83.0, 72.0], "expected": 83.00001670156132}, {"input": [83.0, 72.5], "expected": 83.00002753607023}, {"input": [83.0, 73.0], "expected": 83.00004539889922}, {"input": [83.0, 73.5], "expected": 83.00007484902864}, {"input": [83.0, 74.0], "expected": 83.00012340218973}, {"input": [83.0, 74.5], "expected": 83.00020344767213}, {"input": [83.0, 75.0], "expected": 83.0003354063729}, {"input": [83.0, 75.5], "expected": 83.00055293147535}, {"input": [83.0, 76.0], "expected": 83.00091146645377}, {"input": [83.0, 76.5], "expected": 83.00150231015975}, {"input": [83.0, 77.0], "expected": 83.00247568513772}, {"input": [83.0, 77.5], "expected": 83.00407844327057}, {"input": [83.0, 78.0], "expected": 83.00671534848912}, {"input": [83.0, 78.5], "expected": 83.0110477448486}, {"input": [83.0, 79.0], "expected": 83.0181499279178}, {"input": [83.0, 79.5], "expected": 83.02975041827263}, {"input": [83.0, 80.0], "expected": 83.04858735157374}, {"input": [83.0, 80.5], "expected": 83.07888973429255}, {"input": [83.0, 81.0], "expected": 83.12692801104298}, {"input": [83.0, 81.5], "expected": 83.20141327798275}, {"input": [83.0, 82.0], "expected": 83.31326168751822}, {"input": [83.0, 82.5], "expected": 83.4740769841801}, {"input": [83.0, 83.0], "expected": 83.69314718055995}, {"input": [83.0, 83.5], "expected": 83.9740769841801}, {"input": [83.0, 84.0], "expected": 84.31326168751822}, {"input": [83.0, 84.5], "expected": 84.70141327798275}, {"input": [83.0, 85.0], "expected": 85.12692801104298}, {"input": [83.0, 85.5], "expected": 85.57888973429255}, {"input": [83.0, 86.0], "expected": 86.04858735157374}, {"input": [83.0, 86.5], "expected": 86.52975041827263}, {"input": [83.0, 87.0], "expected": 87.0181499279178}, {"input": [83.0, 87.5], "expected": 87.5110477448486}, {"input": [83.0, 88.0], "expected": 88.00671534848912}, {"input": [83.0, 88.5], "expected": 88.50407844327057}, {"input": [83.0, 89.0], "expected": 89.00247568513772}, {"input": [83.0, 89.5], "expected": 89.50150231015975}, {"input": [83.0, 90.0], "expected": 90.00091146645377}, {"input": [83.0, 90.5], "expected": 90.50055293147535}, {"input": [83.0, 91.0], "expected": 91.0003354063729}, {"input": [83.0, 91.5], "expected": 91.50020344767213}, {"input": [83.0, 92.0], "expected": 92.00012340218973}, {"input": [83.0, 92.5], "expected": 92.50007484902864}, {"input": [83.0, 93.0], "expected": 93.00004539889922}, {"input": [83.0, 93.5], "expected": 93.50002753607023}, {"input": [83.0, 94.0], "expected": 94.00001670156132}, {"input": [83.0, 94.5], "expected": 94.50001013004228}, {"input": [83.0, 95.0], "expected": 95.00000614419348}, {"input": [83.0, 95.5], "expected": 95.50000372664623}, {"input": [83.0, 96.0], "expected": 96.00000226032685}, {"input": [83.0, 96.5], "expected": 96.50000137095815}, {"input": [83.0, 97.0], "expected": 97.00000083152837}, {"input": [83.0, 97.5], "expected": 97.50000050434754}, {"input": [83.0, 98.0], "expected": 98.00000030590228}, {"input": [83.0, 98.5], "expected": 98.50000018553912}, {"input": [83.0, 99.0], "expected": 99.00000011253516}, {"input": [83.0, 99.5], "expected": 99.50000006825603}, {"input": [83.5, -100.0], "expected": 83.5}, {"input": [83.5, -99.5], "expected": 83.5}, {"input": [83.5, -99.0], "expected": 83.5}, {"input": [83.5, -98.5], "expected": 83.5}, {"input": [83.5, -98.0], "expected": 83.5}, {"input": [83.5, -97.5], "expected": 83.5}, {"input": [83.5, -97.0], "expected": 83.5}, {"input": [83.5, -96.5], "expected": 83.5}, {"input": [83.5, -96.0], "expected": 83.5}, {"input": [83.5, -95.5], "expected": 83.5}, {"input": [83.5, -95.0], "expected": 83.5}, {"input": [83.5, -94.5], "expected": 83.5}, {"input": [83.5, -94.0], "expected": 83.5}, {"input": [83.5, -93.5], "expected": 83.5}, {"input": [83.5, -93.0], "expected": 83.5}, {"input": [83.5, -92.5], "expected": 83.5}, {"input": [83.5, -92.0], "expected": 83.5}, {"input": [83.5, -91.5], "expected": 83.5}, {"input": [83.5, -91.0], "expected": 83.5}, {"input": [83.5, -90.5], "expected": 83.5}, {"input": [83.5, -90.0], "expected": 83.5}, {"input": [83.5, -89.5], "expected": 83.5}, {"input": [83.5, -89.0], "expected": 83.5}, {"input": [83.5, -88.5], "expected": 83.5}, {"input": [83.5, -88.0], "expected": 83.5}, {"input": [83.5, -87.5], "expected": 83.5}, {"input": [83.5, -87.0], "expected": 83.5}, {"input": [83.5, -86.5], "expected": 83.5}, {"input": [83.5, -86.0], "expected": 83.5}, {"input": [83.5, -85.5], "expected": 83.5}, {"input": [83.5, -85.0], "expected": 83.5}, {"input": [83.5, -84.5], "expected": 83.5}, {"input": [83.5, -84.0], "expected": 83.5}, {"input": [83.5, -83.5], "expected": 83.5}, {"input": [83.5, -83.0], "expected": 83.5}, {"input": [83.5, -82.5], "expected": 83.5}, {"input": [83.5, -82.0], "expected": 83.5}, {"input": [83.5, -81.5], "expected": 83.5}, {"input": [83.5, -81.0], "expected": 83.5}, {"input": [83.5, -80.5], "expected": 83.5}, {"input": [83.5, -80.0], "expected": 83.5}, {"input": [83.5, -79.5], "expected": 83.5}, {"input": [83.5, -79.0], "expected": 83.5}, {"input": [83.5, -78.5], "expected": 83.5}, {"input": [83.5, -78.0], "expected": 83.5}, {"input": [83.5, -77.5], "expected": 83.5}, {"input": [83.5, -77.0], "expected": 83.5}, {"input": [83.5, -76.5], "expected": 83.5}, {"input": [83.5, -76.0], "expected": 83.5}, {"input": [83.5, -75.5], "expected": 83.5}, {"input": [83.5, -75.0], "expected": 83.5}, {"input": [83.5, -74.5], "expected": 83.5}, {"input": [83.5, -74.0], "expected": 83.5}, {"input": [83.5, -73.5], "expected": 83.5}, {"input": [83.5, -73.0], "expected": 83.5}, {"input": [83.5, -72.5], "expected": 83.5}, {"input": [83.5, -72.0], "expected": 83.5}, {"input": [83.5, -71.5], "expected": 83.5}, {"input": [83.5, -71.0], "expected": 83.5}, {"input": [83.5, -70.5], "expected": 83.5}, {"input": [83.5, -70.0], "expected": 83.5}, {"input": [83.5, -69.5], "expected": 83.5}, {"input": [83.5, -69.0], "expected": 83.5}, {"input": [83.5, -68.5], "expected": 83.5}, {"input": [83.5, -68.0], "expected": 83.5}, {"input": [83.5, -67.5], "expected": 83.5}, {"input": [83.5, -67.0], "expected": 83.5}, {"input": [83.5, -66.5], "expected": 83.5}, {"input": [83.5, -66.0], "expected": 83.5}, {"input": [83.5, -65.5], "expected": 83.5}, {"input": [83.5, -65.0], "expected": 83.5}, {"input": [83.5, -64.5], "expected": 83.5}, {"input": [83.5, -64.0], "expected": 83.5}, {"input": [83.5, -63.5], "expected": 83.5}, {"input": [83.5, -63.0], "expected": 83.5}, {"input": [83.5, -62.5], "expected": 83.5}, {"input": [83.5, -62.0], "expected": 83.5}, {"input": [83.5, -61.5], "expected": 83.5}, {"input": [83.5, -61.0], "expected": 83.5}, {"input": [83.5, -60.5], "expected": 83.5}, {"input": [83.5, -60.0], "expected": 83.5}, {"input": [83.5, -59.5], "expected": 83.5}, {"input": [83.5, -59.0], "expected": 83.5}, {"input": [83.5, -58.5], "expected": 83.5}, {"input": [83.5, -58.0], "expected": 83.5}, {"input": [83.5, -57.5], "expected": 83.5}, {"input": [83.5, -57.0], "expected": 83.5}, {"input": [83.5, -56.5], "expected": 83.5}, {"input": [83.5, -56.0], "expected": 83.5}, {"input": [83.5, -55.5], "expected": 83.5}, {"input": [83.5, -55.0], "expected": 83.5}, {"input": [83.5, -54.5], "expected": 83.5}, {"input": [83.5, -54.0], "expected": 83.5}, {"input": [83.5, -53.5], "expected": 83.5}, {"input": [83.5, -53.0], "expected": 83.5}, {"input": [83.5, -52.5], "expected": 83.5}, {"input": [83.5, -52.0], "expected": 83.5}, {"input": [83.5, -51.5], "expected": 83.5}, {"input": [83.5, -51.0], "expected": 83.5}, {"input": [83.5, -50.5], "expected": 83.5}, {"input": [83.5, -50.0], "expected": 83.5}, {"input": [83.5, -49.5], "expected": 83.5}, {"input": [83.5, -49.0], "expected": 83.5}, {"input": [83.5, -48.5], "expected": 83.5}, {"input": [83.5, -48.0], "expected": 83.5}, {"input": [83.5, -47.5], "expected": 83.5}, {"input": [83.5, -47.0], "expected": 83.5}, {"input": [83.5, -46.5], "expected": 83.5}, {"input": [83.5, -46.0], "expected": 83.5}, {"input": [83.5, -45.5], "expected": 83.5}, {"input": [83.5, -45.0], "expected": 83.5}, {"input": [83.5, -44.5], "expected": 83.5}, {"input": [83.5, -44.0], "expected": 83.5}, {"input": [83.5, -43.5], "expected": 83.5}, {"input": [83.5, -43.0], "expected": 83.5}, {"input": [83.5, -42.5], "expected": 83.5}, {"input": [83.5, -42.0], "expected": 83.5}, {"input": [83.5, -41.5], "expected": 83.5}, {"input": [83.5, -41.0], "expected": 83.5}, {"input": [83.5, -40.5], "expected": 83.5}, {"input": [83.5, -40.0], "expected": 83.5}, {"input": [83.5, -39.5], "expected": 83.5}, {"input": [83.5, -39.0], "expected": 83.5}, {"input": [83.5, -38.5], "expected": 83.5}, {"input": [83.5, -38.0], "expected": 83.5}, {"input": [83.5, -37.5], "expected": 83.5}, {"input": [83.5, -37.0], "expected": 83.5}, {"input": [83.5, -36.5], "expected": 83.5}, {"input": [83.5, -36.0], "expected": 83.5}, {"input": [83.5, -35.5], "expected": 83.5}, {"input": [83.5, -35.0], "expected": 83.5}, {"input": [83.5, -34.5], "expected": 83.5}, {"input": [83.5, -34.0], "expected": 83.5}, {"input": [83.5, -33.5], "expected": 83.5}, {"input": [83.5, -33.0], "expected": 83.5}, {"input": [83.5, -32.5], "expected": 83.5}, {"input": [83.5, -32.0], "expected": 83.5}, {"input": [83.5, -31.5], "expected": 83.5}, {"input": [83.5, -31.0], "expected": 83.5}, {"input": [83.5, -30.5], "expected": 83.5}, {"input": [83.5, -30.0], "expected": 83.5}, {"input": [83.5, -29.5], "expected": 83.5}, {"input": [83.5, -29.0], "expected": 83.5}, {"input": [83.5, -28.5], "expected": 83.5}, {"input": [83.5, -28.0], "expected": 83.5}, {"input": [83.5, -27.5], "expected": 83.5}, {"input": [83.5, -27.0], "expected": 83.5}, {"input": [83.5, -26.5], "expected": 83.5}, {"input": [83.5, -26.0], "expected": 83.5}, {"input": [83.5, -25.5], "expected": 83.5}, {"input": [83.5, -25.0], "expected": 83.5}, {"input": [83.5, -24.5], "expected": 83.5}, {"input": [83.5, -24.0], "expected": 83.5}, {"input": [83.5, -23.5], "expected": 83.5}, {"input": [83.5, -23.0], "expected": 83.5}, {"input": [83.5, -22.5], "expected": 83.5}, {"input": [83.5, -22.0], "expected": 83.5}, {"input": [83.5, -21.5], "expected": 83.5}, {"input": [83.5, -21.0], "expected": 83.5}, {"input": [83.5, -20.5], "expected": 83.5}, {"input": [83.5, -20.0], "expected": 83.5}, {"input": [83.5, -19.5], "expected": 83.5}, {"input": [83.5, -19.0], "expected": 83.5}, {"input": [83.5, -18.5], "expected": 83.5}, {"input": [83.5, -18.0], "expected": 83.5}, {"input": [83.5, -17.5], "expected": 83.5}, {"input": [83.5, -17.0], "expected": 83.5}, {"input": [83.5, -16.5], "expected": 83.5}, {"input": [83.5, -16.0], "expected": 83.5}, {"input": [83.5, -15.5], "expected": 83.5}, {"input": [83.5, -15.0], "expected": 83.5}, {"input": [83.5, -14.5], "expected": 83.5}, {"input": [83.5, -14.0], "expected": 83.5}, {"input": [83.5, -13.5], "expected": 83.5}, {"input": [83.5, -13.0], "expected": 83.5}, {"input": [83.5, -12.5], "expected": 83.5}, {"input": [83.5, -12.0], "expected": 83.5}, {"input": [83.5, -11.5], "expected": 83.5}, {"input": [83.5, -11.0], "expected": 83.5}, {"input": [83.5, -10.5], "expected": 83.5}, {"input": [83.5, -10.0], "expected": 83.5}, {"input": [83.5, -9.5], "expected": 83.5}, {"input": [83.5, -9.0], "expected": 83.5}, {"input": [83.5, -8.5], "expected": 83.5}, {"input": [83.5, -8.0], "expected": 83.5}, {"input": [83.5, -7.5], "expected": 83.5}, {"input": [83.5, -7.0], "expected": 83.5}, {"input": [83.5, -6.5], "expected": 83.5}, {"input": [83.5, -6.0], "expected": 83.5}, {"input": [83.5, -5.5], "expected": 83.5}, {"input": [83.5, -5.0], "expected": 83.5}, {"input": [83.5, -4.5], "expected": 83.5}, {"input": [83.5, -4.0], "expected": 83.5}, {"input": [83.5, -3.5], "expected": 83.5}, {"input": [83.5, -3.0], "expected": 83.5}, {"input": [83.5, -2.5], "expected": 83.5}, {"input": [83.5, -2.0], "expected": 83.5}, {"input": [83.5, -1.5], "expected": 83.5}, {"input": [83.5, -1.0], "expected": 83.5}, {"input": [83.5, -0.5], "expected": 83.5}, {"input": [83.5, 0.0], "expected": 83.5}, {"input": [83.5, 0.5], "expected": 83.5}, {"input": [83.5, 1.0], "expected": 83.5}, {"input": [83.5, 1.5], "expected": 83.5}, {"input": [83.5, 2.0], "expected": 83.5}, {"input": [83.5, 2.5], "expected": 83.5}, {"input": [83.5, 3.0], "expected": 83.5}, {"input": [83.5, 3.5], "expected": 83.5}, {"input": [83.5, 4.0], "expected": 83.5}, {"input": [83.5, 4.5], "expected": 83.5}, {"input": [83.5, 5.0], "expected": 83.5}, {"input": [83.5, 5.5], "expected": 83.5}, {"input": [83.5, 6.0], "expected": 83.5}, {"input": [83.5, 6.5], "expected": 83.5}, {"input": [83.5, 7.0], "expected": 83.5}, {"input": [83.5, 7.5], "expected": 83.5}, {"input": [83.5, 8.0], "expected": 83.5}, {"input": [83.5, 8.5], "expected": 83.5}, {"input": [83.5, 9.0], "expected": 83.5}, {"input": [83.5, 9.5], "expected": 83.5}, {"input": [83.5, 10.0], "expected": 83.5}, {"input": [83.5, 10.5], "expected": 83.5}, {"input": [83.5, 11.0], "expected": 83.5}, {"input": [83.5, 11.5], "expected": 83.5}, {"input": [83.5, 12.0], "expected": 83.5}, {"input": [83.5, 12.5], "expected": 83.5}, {"input": [83.5, 13.0], "expected": 83.5}, {"input": [83.5, 13.5], "expected": 83.5}, {"input": [83.5, 14.0], "expected": 83.5}, {"input": [83.5, 14.5], "expected": 83.5}, {"input": [83.5, 15.0], "expected": 83.5}, {"input": [83.5, 15.5], "expected": 83.5}, {"input": [83.5, 16.0], "expected": 83.5}, {"input": [83.5, 16.5], "expected": 83.5}, {"input": [83.5, 17.0], "expected": 83.5}, {"input": [83.5, 17.5], "expected": 83.5}, {"input": [83.5, 18.0], "expected": 83.5}, {"input": [83.5, 18.5], "expected": 83.5}, {"input": [83.5, 19.0], "expected": 83.5}, {"input": [83.5, 19.5], "expected": 83.5}, {"input": [83.5, 20.0], "expected": 83.5}, {"input": [83.5, 20.5], "expected": 83.5}, {"input": [83.5, 21.0], "expected": 83.5}, {"input": [83.5, 21.5], "expected": 83.5}, {"input": [83.5, 22.0], "expected": 83.5}, {"input": [83.5, 22.5], "expected": 83.5}, {"input": [83.5, 23.0], "expected": 83.5}, {"input": [83.5, 23.5], "expected": 83.5}, {"input": [83.5, 24.0], "expected": 83.5}, {"input": [83.5, 24.5], "expected": 83.5}, {"input": [83.5, 25.0], "expected": 83.5}, {"input": [83.5, 25.5], "expected": 83.5}, {"input": [83.5, 26.0], "expected": 83.5}, {"input": [83.5, 26.5], "expected": 83.5}, {"input": [83.5, 27.0], "expected": 83.5}, {"input": [83.5, 27.5], "expected": 83.5}, {"input": [83.5, 28.0], "expected": 83.5}, {"input": [83.5, 28.5], "expected": 83.5}, {"input": [83.5, 29.0], "expected": 83.5}, {"input": [83.5, 29.5], "expected": 83.5}, {"input": [83.5, 30.0], "expected": 83.5}, {"input": [83.5, 30.5], "expected": 83.5}, {"input": [83.5, 31.0], "expected": 83.5}, {"input": [83.5, 31.5], "expected": 83.5}, {"input": [83.5, 32.0], "expected": 83.5}, {"input": [83.5, 32.5], "expected": 83.5}, {"input": [83.5, 33.0], "expected": 83.5}, {"input": [83.5, 33.5], "expected": 83.5}, {"input": [83.5, 34.0], "expected": 83.5}, {"input": [83.5, 34.5], "expected": 83.5}, {"input": [83.5, 35.0], "expected": 83.5}, {"input": [83.5, 35.5], "expected": 83.5}, {"input": [83.5, 36.0], "expected": 83.5}, {"input": [83.5, 36.5], "expected": 83.5}, {"input": [83.5, 37.0], "expected": 83.5}, {"input": [83.5, 37.5], "expected": 83.5}, {"input": [83.5, 38.0], "expected": 83.5}, {"input": [83.5, 38.5], "expected": 83.5}, {"input": [83.5, 39.0], "expected": 83.5}, {"input": [83.5, 39.5], "expected": 83.5}, {"input": [83.5, 40.0], "expected": 83.5}, {"input": [83.5, 40.5], "expected": 83.5}, {"input": [83.5, 41.0], "expected": 83.5}, {"input": [83.5, 41.5], "expected": 83.5}, {"input": [83.5, 42.0], "expected": 83.5}, {"input": [83.5, 42.5], "expected": 83.5}, {"input": [83.5, 43.0], "expected": 83.5}, {"input": [83.5, 43.5], "expected": 83.5}, {"input": [83.5, 44.0], "expected": 83.5}, {"input": [83.5, 44.5], "expected": 83.5}, {"input": [83.5, 45.0], "expected": 83.5}, {"input": [83.5, 45.5], "expected": 83.5}, {"input": [83.5, 46.0], "expected": 83.5}, {"input": [83.5, 46.5], "expected": 83.5}, {"input": [83.5, 47.0], "expected": 83.5}, {"input": [83.5, 47.5], "expected": 83.5}, {"input": [83.5, 48.0], "expected": 83.5}, {"input": [83.5, 48.5], "expected": 83.5}, {"input": [83.5, 49.0], "expected": 83.5}, {"input": [83.5, 49.5], "expected": 83.5}, {"input": [83.5, 50.0], "expected": 83.5}, {"input": [83.5, 50.5], "expected": 83.5}, {"input": [83.5, 51.0], "expected": 83.50000000000001}, {"input": [83.5, 51.5], "expected": 83.50000000000001}, {"input": [83.5, 52.0], "expected": 83.50000000000001}, {"input": [83.5, 52.5], "expected": 83.50000000000003}, {"input": [83.5, 53.0], "expected": 83.50000000000006}, {"input": [83.5, 53.5], "expected": 83.5000000000001}, {"input": [83.5, 54.0], "expected": 83.50000000000016}, {"input": [83.5, 54.5], "expected": 83.50000000000026}, {"input": [83.5, 55.0], "expected": 83.50000000000043}, {"input": [83.5, 55.5], "expected": 83.5000000000007}, {"input": [83.5, 56.0], "expected": 83.50000000000114}, {"input": [83.5, 56.5], "expected": 83.50000000000188}, {"input": [83.5, 57.0], "expected": 83.5000000000031}, {"input": [83.5, 57.5], "expected": 83.50000000000512}, {"input": [83.5, 58.0], "expected": 83.50000000000843}, {"input": [83.5, 58.5], "expected": 83.50000000001388}, {"input": [83.5, 59.0], "expected": 83.5000000000229}, {"input": [83.5, 59.5], "expected": 83.50000000003776}, {"input": [83.5, 60.0], "expected": 83.50000000006224}, {"input": [83.5, 60.5], "expected": 83.50000000010262}, {"input": [83.5, 61.0], "expected": 83.5000000001692}, {"input": [83.5, 61.5], "expected": 83.50000000027894}, {"input": [83.5, 62.0], "expected": 83.5000000004599}, {"input": [83.5, 62.5], "expected": 83.50000000075826}, {"input": [83.5, 63.0], "expected": 83.50000000125016}, {"input": [83.5, 63.5], "expected": 83.50000000206116}, {"input": [83.5, 64.0], "expected": 83.50000000339827}, {"input": [83.5, 64.5], "expected": 83.5000000056028}, {"input": [83.5, 65.0], "expected": 83.50000000923745}, {"input": [83.5, 65.5], "expected": 83.50000001522999}, {"input": [83.5, 66.0], "expected": 83.50000002511}, {"input": [83.5, 66.5], "expected": 83.50000004139937}, {"input": [83.5, 67.0], "expected": 83.50000006825603}, {"input": [83.5, 67.5], "expected": 83.50000011253516}, {"input": [83.5, 68.0], "expected": 83.50000018553912}, {"input": [83.5, 68.5], "expected": 83.50000030590228}, {"input": [83.5, 69.0], "expected": 83.50000050434754}, {"input": [83.5, 69.5], "expected": 83.50000083152837}, {"input": [83.5, 70.0], "expected": 83.50000137095815}, {"input": [83.5, 70.5], "expected": 83.50000226032685}, {"input": [83.5, 71.0], "expected": 83.50000372664623}, {"input": [83.5, 71.5], "expected": 83.50000614419348}, {"input": [83.5, 72.0], "expected": 83.50001013004228}, {"input": [83.5, 72.5], "expected": 83.50001670156132}, {"input": [83.5, 73.0], "expected": 83.50002753607023}, {"input": [83.5, 73.5], "expected": 83.50004539889922}, {"input": [83.5, 74.0], "expected": 83.50007484902864}, {"input": [83.5, 74.5], "expected": 83.50012340218973}, {"input": [83.5, 75.0], "expected": 83.50020344767213}, {"input": [83.5, 75.5], "expected": 83.5003354063729}, {"input": [83.5, 76.0], "expected": 83.50055293147535}, {"input": [83.5, 76.5], "expected": 83.50091146645377}, {"input": [83.5, 77.0], "expected": 83.50150231015975}, {"input": [83.5, 77.5], "expected": 83.50247568513772}, {"input": [83.5, 78.0], "expected": 83.50407844327057}, {"input": [83.5, 78.5], "expected": 83.50671534848912}, {"input": [83.5, 79.0], "expected": 83.5110477448486}, {"input": [83.5, 79.5], "expected": 83.5181499279178}, {"input": [83.5, 80.0], "expected": 83.52975041827263}, {"input": [83.5, 80.5], "expected": 83.54858735157374}, {"input": [83.5, 81.0], "expected": 83.57888973429255}, {"input": [83.5, 81.5], "expected": 83.62692801104298}, {"input": [83.5, 82.0], "expected": 83.70141327798275}, {"input": [83.5, 82.5], "expected": 83.81326168751822}, {"input": [83.5, 83.0], "expected": 83.9740769841801}, {"input": [83.5, 83.5], "expected": 84.19314718055995}, {"input": [83.5, 84.0], "expected": 84.4740769841801}, {"input": [83.5, 84.5], "expected": 84.81326168751822}, {"input": [83.5, 85.0], "expected": 85.20141327798275}, {"input": [83.5, 85.5], "expected": 85.62692801104298}, {"input": [83.5, 86.0], "expected": 86.07888973429255}, {"input": [83.5, 86.5], "expected": 86.54858735157374}, {"input": [83.5, 87.0], "expected": 87.02975041827263}, {"input": [83.5, 87.5], "expected": 87.5181499279178}, {"input": [83.5, 88.0], "expected": 88.0110477448486}, {"input": [83.5, 88.5], "expected": 88.50671534848912}, {"input": [83.5, 89.0], "expected": 89.00407844327057}, {"input": [83.5, 89.5], "expected": 89.50247568513772}, {"input": [83.5, 90.0], "expected": 90.00150231015975}, {"input": [83.5, 90.5], "expected": 90.50091146645377}, {"input": [83.5, 91.0], "expected": 91.00055293147535}, {"input": [83.5, 91.5], "expected": 91.5003354063729}, {"input": [83.5, 92.0], "expected": 92.00020344767213}, {"input": [83.5, 92.5], "expected": 92.50012340218973}, {"input": [83.5, 93.0], "expected": 93.00007484902864}, {"input": [83.5, 93.5], "expected": 93.50004539889922}, {"input": [83.5, 94.0], "expected": 94.00002753607023}, {"input": [83.5, 94.5], "expected": 94.50001670156132}, {"input": [83.5, 95.0], "expected": 95.00001013004228}, {"input": [83.5, 95.5], "expected": 95.50000614419348}, {"input": [83.5, 96.0], "expected": 96.00000372664623}, {"input": [83.5, 96.5], "expected": 96.50000226032685}, {"input": [83.5, 97.0], "expected": 97.00000137095815}, {"input": [83.5, 97.5], "expected": 97.50000083152837}, {"input": [83.5, 98.0], "expected": 98.00000050434754}, {"input": [83.5, 98.5], "expected": 98.50000030590228}, {"input": [83.5, 99.0], "expected": 99.00000018553912}, {"input": [83.5, 99.5], "expected": 99.50000011253516}, {"input": [84.0, -100.0], "expected": 84.0}, {"input": [84.0, -99.5], "expected": 84.0}, {"input": [84.0, -99.0], "expected": 84.0}, {"input": [84.0, -98.5], "expected": 84.0}, {"input": [84.0, -98.0], "expected": 84.0}, {"input": [84.0, -97.5], "expected": 84.0}, {"input": [84.0, -97.0], "expected": 84.0}, {"input": [84.0, -96.5], "expected": 84.0}, {"input": [84.0, -96.0], "expected": 84.0}, {"input": [84.0, -95.5], "expected": 84.0}, {"input": [84.0, -95.0], "expected": 84.0}, {"input": [84.0, -94.5], "expected": 84.0}, {"input": [84.0, -94.0], "expected": 84.0}, {"input": [84.0, -93.5], "expected": 84.0}, {"input": [84.0, -93.0], "expected": 84.0}, {"input": [84.0, -92.5], "expected": 84.0}, {"input": [84.0, -92.0], "expected": 84.0}, {"input": [84.0, -91.5], "expected": 84.0}, {"input": [84.0, -91.0], "expected": 84.0}, {"input": [84.0, -90.5], "expected": 84.0}, {"input": [84.0, -90.0], "expected": 84.0}, {"input": [84.0, -89.5], "expected": 84.0}, {"input": [84.0, -89.0], "expected": 84.0}, {"input": [84.0, -88.5], "expected": 84.0}, {"input": [84.0, -88.0], "expected": 84.0}, {"input": [84.0, -87.5], "expected": 84.0}, {"input": [84.0, -87.0], "expected": 84.0}, {"input": [84.0, -86.5], "expected": 84.0}, {"input": [84.0, -86.0], "expected": 84.0}, {"input": [84.0, -85.5], "expected": 84.0}, {"input": [84.0, -85.0], "expected": 84.0}, {"input": [84.0, -84.5], "expected": 84.0}, {"input": [84.0, -84.0], "expected": 84.0}, {"input": [84.0, -83.5], "expected": 84.0}, {"input": [84.0, -83.0], "expected": 84.0}, {"input": [84.0, -82.5], "expected": 84.0}, {"input": [84.0, -82.0], "expected": 84.0}, {"input": [84.0, -81.5], "expected": 84.0}, {"input": [84.0, -81.0], "expected": 84.0}, {"input": [84.0, -80.5], "expected": 84.0}, {"input": [84.0, -80.0], "expected": 84.0}, {"input": [84.0, -79.5], "expected": 84.0}, {"input": [84.0, -79.0], "expected": 84.0}, {"input": [84.0, -78.5], "expected": 84.0}, {"input": [84.0, -78.0], "expected": 84.0}, {"input": [84.0, -77.5], "expected": 84.0}, {"input": [84.0, -77.0], "expected": 84.0}, {"input": [84.0, -76.5], "expected": 84.0}, {"input": [84.0, -76.0], "expected": 84.0}, {"input": [84.0, -75.5], "expected": 84.0}, {"input": [84.0, -75.0], "expected": 84.0}, {"input": [84.0, -74.5], "expected": 84.0}, {"input": [84.0, -74.0], "expected": 84.0}, {"input": [84.0, -73.5], "expected": 84.0}, {"input": [84.0, -73.0], "expected": 84.0}, {"input": [84.0, -72.5], "expected": 84.0}, {"input": [84.0, -72.0], "expected": 84.0}, {"input": [84.0, -71.5], "expected": 84.0}, {"input": [84.0, -71.0], "expected": 84.0}, {"input": [84.0, -70.5], "expected": 84.0}, {"input": [84.0, -70.0], "expected": 84.0}, {"input": [84.0, -69.5], "expected": 84.0}, {"input": [84.0, -69.0], "expected": 84.0}, {"input": [84.0, -68.5], "expected": 84.0}, {"input": [84.0, -68.0], "expected": 84.0}, {"input": [84.0, -67.5], "expected": 84.0}, {"input": [84.0, -67.0], "expected": 84.0}, {"input": [84.0, -66.5], "expected": 84.0}, {"input": [84.0, -66.0], "expected": 84.0}, {"input": [84.0, -65.5], "expected": 84.0}, {"input": [84.0, -65.0], "expected": 84.0}, {"input": [84.0, -64.5], "expected": 84.0}, {"input": [84.0, -64.0], "expected": 84.0}, {"input": [84.0, -63.5], "expected": 84.0}, {"input": [84.0, -63.0], "expected": 84.0}, {"input": [84.0, -62.5], "expected": 84.0}, {"input": [84.0, -62.0], "expected": 84.0}, {"input": [84.0, -61.5], "expected": 84.0}, {"input": [84.0, -61.0], "expected": 84.0}, {"input": [84.0, -60.5], "expected": 84.0}, {"input": [84.0, -60.0], "expected": 84.0}, {"input": [84.0, -59.5], "expected": 84.0}, {"input": [84.0, -59.0], "expected": 84.0}, {"input": [84.0, -58.5], "expected": 84.0}, {"input": [84.0, -58.0], "expected": 84.0}, {"input": [84.0, -57.5], "expected": 84.0}, {"input": [84.0, -57.0], "expected": 84.0}, {"input": [84.0, -56.5], "expected": 84.0}, {"input": [84.0, -56.0], "expected": 84.0}, {"input": [84.0, -55.5], "expected": 84.0}, {"input": [84.0, -55.0], "expected": 84.0}, {"input": [84.0, -54.5], "expected": 84.0}, {"input": [84.0, -54.0], "expected": 84.0}, {"input": [84.0, -53.5], "expected": 84.0}, {"input": [84.0, -53.0], "expected": 84.0}, {"input": [84.0, -52.5], "expected": 84.0}, {"input": [84.0, -52.0], "expected": 84.0}, {"input": [84.0, -51.5], "expected": 84.0}, {"input": [84.0, -51.0], "expected": 84.0}, {"input": [84.0, -50.5], "expected": 84.0}, {"input": [84.0, -50.0], "expected": 84.0}, {"input": [84.0, -49.5], "expected": 84.0}, {"input": [84.0, -49.0], "expected": 84.0}, {"input": [84.0, -48.5], "expected": 84.0}, {"input": [84.0, -48.0], "expected": 84.0}, {"input": [84.0, -47.5], "expected": 84.0}, {"input": [84.0, -47.0], "expected": 84.0}, {"input": [84.0, -46.5], "expected": 84.0}, {"input": [84.0, -46.0], "expected": 84.0}, {"input": [84.0, -45.5], "expected": 84.0}, {"input": [84.0, -45.0], "expected": 84.0}, {"input": [84.0, -44.5], "expected": 84.0}, {"input": [84.0, -44.0], "expected": 84.0}, {"input": [84.0, -43.5], "expected": 84.0}, {"input": [84.0, -43.0], "expected": 84.0}, {"input": [84.0, -42.5], "expected": 84.0}, {"input": [84.0, -42.0], "expected": 84.0}, {"input": [84.0, -41.5], "expected": 84.0}, {"input": [84.0, -41.0], "expected": 84.0}, {"input": [84.0, -40.5], "expected": 84.0}, {"input": [84.0, -40.0], "expected": 84.0}, {"input": [84.0, -39.5], "expected": 84.0}, {"input": [84.0, -39.0], "expected": 84.0}, {"input": [84.0, -38.5], "expected": 84.0}, {"input": [84.0, -38.0], "expected": 84.0}, {"input": [84.0, -37.5], "expected": 84.0}, {"input": [84.0, -37.0], "expected": 84.0}, {"input": [84.0, -36.5], "expected": 84.0}, {"input": [84.0, -36.0], "expected": 84.0}, {"input": [84.0, -35.5], "expected": 84.0}, {"input": [84.0, -35.0], "expected": 84.0}, {"input": [84.0, -34.5], "expected": 84.0}, {"input": [84.0, -34.0], "expected": 84.0}, {"input": [84.0, -33.5], "expected": 84.0}, {"input": [84.0, -33.0], "expected": 84.0}, {"input": [84.0, -32.5], "expected": 84.0}, {"input": [84.0, -32.0], "expected": 84.0}, {"input": [84.0, -31.5], "expected": 84.0}, {"input": [84.0, -31.0], "expected": 84.0}, {"input": [84.0, -30.5], "expected": 84.0}, {"input": [84.0, -30.0], "expected": 84.0}, {"input": [84.0, -29.5], "expected": 84.0}, {"input": [84.0, -29.0], "expected": 84.0}, {"input": [84.0, -28.5], "expected": 84.0}, {"input": [84.0, -28.0], "expected": 84.0}, {"input": [84.0, -27.5], "expected": 84.0}, {"input": [84.0, -27.0], "expected": 84.0}, {"input": [84.0, -26.5], "expected": 84.0}, {"input": [84.0, -26.0], "expected": 84.0}, {"input": [84.0, -25.5], "expected": 84.0}, {"input": [84.0, -25.0], "expected": 84.0}, {"input": [84.0, -24.5], "expected": 84.0}, {"input": [84.0, -24.0], "expected": 84.0}, {"input": [84.0, -23.5], "expected": 84.0}, {"input": [84.0, -23.0], "expected": 84.0}, {"input": [84.0, -22.5], "expected": 84.0}, {"input": [84.0, -22.0], "expected": 84.0}, {"input": [84.0, -21.5], "expected": 84.0}, {"input": [84.0, -21.0], "expected": 84.0}, {"input": [84.0, -20.5], "expected": 84.0}, {"input": [84.0, -20.0], "expected": 84.0}, {"input": [84.0, -19.5], "expected": 84.0}, {"input": [84.0, -19.0], "expected": 84.0}, {"input": [84.0, -18.5], "expected": 84.0}, {"input": [84.0, -18.0], "expected": 84.0}, {"input": [84.0, -17.5], "expected": 84.0}, {"input": [84.0, -17.0], "expected": 84.0}, {"input": [84.0, -16.5], "expected": 84.0}, {"input": [84.0, -16.0], "expected": 84.0}, {"input": [84.0, -15.5], "expected": 84.0}, {"input": [84.0, -15.0], "expected": 84.0}, {"input": [84.0, -14.5], "expected": 84.0}, {"input": [84.0, -14.0], "expected": 84.0}, {"input": [84.0, -13.5], "expected": 84.0}, {"input": [84.0, -13.0], "expected": 84.0}, {"input": [84.0, -12.5], "expected": 84.0}, {"input": [84.0, -12.0], "expected": 84.0}, {"input": [84.0, -11.5], "expected": 84.0}, {"input": [84.0, -11.0], "expected": 84.0}, {"input": [84.0, -10.5], "expected": 84.0}, {"input": [84.0, -10.0], "expected": 84.0}, {"input": [84.0, -9.5], "expected": 84.0}, {"input": [84.0, -9.0], "expected": 84.0}, {"input": [84.0, -8.5], "expected": 84.0}, {"input": [84.0, -8.0], "expected": 84.0}, {"input": [84.0, -7.5], "expected": 84.0}, {"input": [84.0, -7.0], "expected": 84.0}, {"input": [84.0, -6.5], "expected": 84.0}, {"input": [84.0, -6.0], "expected": 84.0}, {"input": [84.0, -5.5], "expected": 84.0}, {"input": [84.0, -5.0], "expected": 84.0}, {"input": [84.0, -4.5], "expected": 84.0}, {"input": [84.0, -4.0], "expected": 84.0}, {"input": [84.0, -3.5], "expected": 84.0}, {"input": [84.0, -3.0], "expected": 84.0}, {"input": [84.0, -2.5], "expected": 84.0}, {"input": [84.0, -2.0], "expected": 84.0}, {"input": [84.0, -1.5], "expected": 84.0}, {"input": [84.0, -1.0], "expected": 84.0}, {"input": [84.0, -0.5], "expected": 84.0}, {"input": [84.0, 0.0], "expected": 84.0}, {"input": [84.0, 0.5], "expected": 84.0}, {"input": [84.0, 1.0], "expected": 84.0}, {"input": [84.0, 1.5], "expected": 84.0}, {"input": [84.0, 2.0], "expected": 84.0}, {"input": [84.0, 2.5], "expected": 84.0}, {"input": [84.0, 3.0], "expected": 84.0}, {"input": [84.0, 3.5], "expected": 84.0}, {"input": [84.0, 4.0], "expected": 84.0}, {"input": [84.0, 4.5], "expected": 84.0}, {"input": [84.0, 5.0], "expected": 84.0}, {"input": [84.0, 5.5], "expected": 84.0}, {"input": [84.0, 6.0], "expected": 84.0}, {"input": [84.0, 6.5], "expected": 84.0}, {"input": [84.0, 7.0], "expected": 84.0}, {"input": [84.0, 7.5], "expected": 84.0}, {"input": [84.0, 8.0], "expected": 84.0}, {"input": [84.0, 8.5], "expected": 84.0}, {"input": [84.0, 9.0], "expected": 84.0}, {"input": [84.0, 9.5], "expected": 84.0}, {"input": [84.0, 10.0], "expected": 84.0}, {"input": [84.0, 10.5], "expected": 84.0}, {"input": [84.0, 11.0], "expected": 84.0}, {"input": [84.0, 11.5], "expected": 84.0}, {"input": [84.0, 12.0], "expected": 84.0}, {"input": [84.0, 12.5], "expected": 84.0}, {"input": [84.0, 13.0], "expected": 84.0}, {"input": [84.0, 13.5], "expected": 84.0}, {"input": [84.0, 14.0], "expected": 84.0}, {"input": [84.0, 14.5], "expected": 84.0}, {"input": [84.0, 15.0], "expected": 84.0}, {"input": [84.0, 15.5], "expected": 84.0}, {"input": [84.0, 16.0], "expected": 84.0}, {"input": [84.0, 16.5], "expected": 84.0}, {"input": [84.0, 17.0], "expected": 84.0}, {"input": [84.0, 17.5], "expected": 84.0}, {"input": [84.0, 18.0], "expected": 84.0}, {"input": [84.0, 18.5], "expected": 84.0}, {"input": [84.0, 19.0], "expected": 84.0}, {"input": [84.0, 19.5], "expected": 84.0}, {"input": [84.0, 20.0], "expected": 84.0}, {"input": [84.0, 20.5], "expected": 84.0}, {"input": [84.0, 21.0], "expected": 84.0}, {"input": [84.0, 21.5], "expected": 84.0}, {"input": [84.0, 22.0], "expected": 84.0}, {"input": [84.0, 22.5], "expected": 84.0}, {"input": [84.0, 23.0], "expected": 84.0}, {"input": [84.0, 23.5], "expected": 84.0}, {"input": [84.0, 24.0], "expected": 84.0}, {"input": [84.0, 24.5], "expected": 84.0}, {"input": [84.0, 25.0], "expected": 84.0}, {"input": [84.0, 25.5], "expected": 84.0}, {"input": [84.0, 26.0], "expected": 84.0}, {"input": [84.0, 26.5], "expected": 84.0}, {"input": [84.0, 27.0], "expected": 84.0}, {"input": [84.0, 27.5], "expected": 84.0}, {"input": [84.0, 28.0], "expected": 84.0}, {"input": [84.0, 28.5], "expected": 84.0}, {"input": [84.0, 29.0], "expected": 84.0}, {"input": [84.0, 29.5], "expected": 84.0}, {"input": [84.0, 30.0], "expected": 84.0}, {"input": [84.0, 30.5], "expected": 84.0}, {"input": [84.0, 31.0], "expected": 84.0}, {"input": [84.0, 31.5], "expected": 84.0}, {"input": [84.0, 32.0], "expected": 84.0}, {"input": [84.0, 32.5], "expected": 84.0}, {"input": [84.0, 33.0], "expected": 84.0}, {"input": [84.0, 33.5], "expected": 84.0}, {"input": [84.0, 34.0], "expected": 84.0}, {"input": [84.0, 34.5], "expected": 84.0}, {"input": [84.0, 35.0], "expected": 84.0}, {"input": [84.0, 35.5], "expected": 84.0}, {"input": [84.0, 36.0], "expected": 84.0}, {"input": [84.0, 36.5], "expected": 84.0}, {"input": [84.0, 37.0], "expected": 84.0}, {"input": [84.0, 37.5], "expected": 84.0}, {"input": [84.0, 38.0], "expected": 84.0}, {"input": [84.0, 38.5], "expected": 84.0}, {"input": [84.0, 39.0], "expected": 84.0}, {"input": [84.0, 39.5], "expected": 84.0}, {"input": [84.0, 40.0], "expected": 84.0}, {"input": [84.0, 40.5], "expected": 84.0}, {"input": [84.0, 41.0], "expected": 84.0}, {"input": [84.0, 41.5], "expected": 84.0}, {"input": [84.0, 42.0], "expected": 84.0}, {"input": [84.0, 42.5], "expected": 84.0}, {"input": [84.0, 43.0], "expected": 84.0}, {"input": [84.0, 43.5], "expected": 84.0}, {"input": [84.0, 44.0], "expected": 84.0}, {"input": [84.0, 44.5], "expected": 84.0}, {"input": [84.0, 45.0], "expected": 84.0}, {"input": [84.0, 45.5], "expected": 84.0}, {"input": [84.0, 46.0], "expected": 84.0}, {"input": [84.0, 46.5], "expected": 84.0}, {"input": [84.0, 47.0], "expected": 84.0}, {"input": [84.0, 47.5], "expected": 84.0}, {"input": [84.0, 48.0], "expected": 84.0}, {"input": [84.0, 48.5], "expected": 84.0}, {"input": [84.0, 49.0], "expected": 84.0}, {"input": [84.0, 49.5], "expected": 84.0}, {"input": [84.0, 50.0], "expected": 84.0}, {"input": [84.0, 50.5], "expected": 84.0}, {"input": [84.0, 51.0], "expected": 84.0}, {"input": [84.0, 51.5], "expected": 84.00000000000001}, {"input": [84.0, 52.0], "expected": 84.00000000000001}, {"input": [84.0, 52.5], "expected": 84.00000000000001}, {"input": [84.0, 53.0], "expected": 84.00000000000003}, {"input": [84.0, 53.5], "expected": 84.00000000000006}, {"input": [84.0, 54.0], "expected": 84.0000000000001}, {"input": [84.0, 54.5], "expected": 84.00000000000016}, {"input": [84.0, 55.0], "expected": 84.00000000000026}, {"input": [84.0, 55.5], "expected": 84.00000000000043}, {"input": [84.0, 56.0], "expected": 84.0000000000007}, {"input": [84.0, 56.5], "expected": 84.00000000000114}, {"input": [84.0, 57.0], "expected": 84.00000000000188}, {"input": [84.0, 57.5], "expected": 84.0000000000031}, {"input": [84.0, 58.0], "expected": 84.00000000000512}, {"input": [84.0, 58.5], "expected": 84.00000000000843}, {"input": [84.0, 59.0], "expected": 84.00000000001388}, {"input": [84.0, 59.5], "expected": 84.0000000000229}, {"input": [84.0, 60.0], "expected": 84.00000000003776}, {"input": [84.0, 60.5], "expected": 84.00000000006224}, {"input": [84.0, 61.0], "expected": 84.00000000010262}, {"input": [84.0, 61.5], "expected": 84.0000000001692}, {"input": [84.0, 62.0], "expected": 84.00000000027894}, {"input": [84.0, 62.5], "expected": 84.0000000004599}, {"input": [84.0, 63.0], "expected": 84.00000000075826}, {"input": [84.0, 63.5], "expected": 84.00000000125016}, {"input": [84.0, 64.0], "expected": 84.00000000206116}, {"input": [84.0, 64.5], "expected": 84.00000000339827}, {"input": [84.0, 65.0], "expected": 84.0000000056028}, {"input": [84.0, 65.5], "expected": 84.00000000923745}, {"input": [84.0, 66.0], "expected": 84.00000001522999}, {"input": [84.0, 66.5], "expected": 84.00000002511}, {"input": [84.0, 67.0], "expected": 84.00000004139937}, {"input": [84.0, 67.5], "expected": 84.00000006825603}, {"input": [84.0, 68.0], "expected": 84.00000011253516}, {"input": [84.0, 68.5], "expected": 84.00000018553912}, {"input": [84.0, 69.0], "expected": 84.00000030590228}, {"input": [84.0, 69.5], "expected": 84.00000050434754}, {"input": [84.0, 70.0], "expected": 84.00000083152837}, {"input": [84.0, 70.5], "expected": 84.00000137095815}, {"input": [84.0, 71.0], "expected": 84.00000226032685}, {"input": [84.0, 71.5], "expected": 84.00000372664623}, {"input": [84.0, 72.0], "expected": 84.00000614419348}, {"input": [84.0, 72.5], "expected": 84.00001013004228}, {"input": [84.0, 73.0], "expected": 84.00001670156132}, {"input": [84.0, 73.5], "expected": 84.00002753607023}, {"input": [84.0, 74.0], "expected": 84.00004539889922}, {"input": [84.0, 74.5], "expected": 84.00007484902864}, {"input": [84.0, 75.0], "expected": 84.00012340218973}, {"input": [84.0, 75.5], "expected": 84.00020344767213}, {"input": [84.0, 76.0], "expected": 84.0003354063729}, {"input": [84.0, 76.5], "expected": 84.00055293147535}, {"input": [84.0, 77.0], "expected": 84.00091146645377}, {"input": [84.0, 77.5], "expected": 84.00150231015975}, {"input": [84.0, 78.0], "expected": 84.00247568513772}, {"input": [84.0, 78.5], "expected": 84.00407844327057}, {"input": [84.0, 79.0], "expected": 84.00671534848912}, {"input": [84.0, 79.5], "expected": 84.0110477448486}, {"input": [84.0, 80.0], "expected": 84.0181499279178}, {"input": [84.0, 80.5], "expected": 84.02975041827263}, {"input": [84.0, 81.0], "expected": 84.04858735157374}, {"input": [84.0, 81.5], "expected": 84.07888973429255}, {"input": [84.0, 82.0], "expected": 84.12692801104298}, {"input": [84.0, 82.5], "expected": 84.20141327798275}, {"input": [84.0, 83.0], "expected": 84.31326168751822}, {"input": [84.0, 83.5], "expected": 84.4740769841801}, {"input": [84.0, 84.0], "expected": 84.69314718055995}, {"input": [84.0, 84.5], "expected": 84.9740769841801}, {"input": [84.0, 85.0], "expected": 85.31326168751822}, {"input": [84.0, 85.5], "expected": 85.70141327798275}, {"input": [84.0, 86.0], "expected": 86.12692801104298}, {"input": [84.0, 86.5], "expected": 86.57888973429255}, {"input": [84.0, 87.0], "expected": 87.04858735157374}, {"input": [84.0, 87.5], "expected": 87.52975041827263}, {"input": [84.0, 88.0], "expected": 88.0181499279178}, {"input": [84.0, 88.5], "expected": 88.5110477448486}, {"input": [84.0, 89.0], "expected": 89.00671534848912}, {"input": [84.0, 89.5], "expected": 89.50407844327057}, {"input": [84.0, 90.0], "expected": 90.00247568513772}, {"input": [84.0, 90.5], "expected": 90.50150231015975}, {"input": [84.0, 91.0], "expected": 91.00091146645377}, {"input": [84.0, 91.5], "expected": 91.50055293147535}, {"input": [84.0, 92.0], "expected": 92.0003354063729}, {"input": [84.0, 92.5], "expected": 92.50020344767213}, {"input": [84.0, 93.0], "expected": 93.00012340218973}, {"input": [84.0, 93.5], "expected": 93.50007484902864}, {"input": [84.0, 94.0], "expected": 94.00004539889922}, {"input": [84.0, 94.5], "expected": 94.50002753607023}, {"input": [84.0, 95.0], "expected": 95.00001670156132}, {"input": [84.0, 95.5], "expected": 95.50001013004228}, {"input": [84.0, 96.0], "expected": 96.00000614419348}, {"input": [84.0, 96.5], "expected": 96.50000372664623}, {"input": [84.0, 97.0], "expected": 97.00000226032685}, {"input": [84.0, 97.5], "expected": 97.50000137095815}, {"input": [84.0, 98.0], "expected": 98.00000083152837}, {"input": [84.0, 98.5], "expected": 98.50000050434754}, {"input": [84.0, 99.0], "expected": 99.00000030590228}, {"input": [84.0, 99.5], "expected": 99.50000018553912}, {"input": [84.5, -100.0], "expected": 84.5}, {"input": [84.5, -99.5], "expected": 84.5}, {"input": [84.5, -99.0], "expected": 84.5}, {"input": [84.5, -98.5], "expected": 84.5}, {"input": [84.5, -98.0], "expected": 84.5}, {"input": [84.5, -97.5], "expected": 84.5}, {"input": [84.5, -97.0], "expected": 84.5}, {"input": [84.5, -96.5], "expected": 84.5}, {"input": [84.5, -96.0], "expected": 84.5}, {"input": [84.5, -95.5], "expected": 84.5}, {"input": [84.5, -95.0], "expected": 84.5}, {"input": [84.5, -94.5], "expected": 84.5}, {"input": [84.5, -94.0], "expected": 84.5}, {"input": [84.5, -93.5], "expected": 84.5}, {"input": [84.5, -93.0], "expected": 84.5}, {"input": [84.5, -92.5], "expected": 84.5}, {"input": [84.5, -92.0], "expected": 84.5}, {"input": [84.5, -91.5], "expected": 84.5}, {"input": [84.5, -91.0], "expected": 84.5}, {"input": [84.5, -90.5], "expected": 84.5}, {"input": [84.5, -90.0], "expected": 84.5}, {"input": [84.5, -89.5], "expected": 84.5}, {"input": [84.5, -89.0], "expected": 84.5}, {"input": [84.5, -88.5], "expected": 84.5}, {"input": [84.5, -88.0], "expected": 84.5}, {"input": [84.5, -87.5], "expected": 84.5}, {"input": [84.5, -87.0], "expected": 84.5}, {"input": [84.5, -86.5], "expected": 84.5}, {"input": [84.5, -86.0], "expected": 84.5}, {"input": [84.5, -85.5], "expected": 84.5}, {"input": [84.5, -85.0], "expected": 84.5}, {"input": [84.5, -84.5], "expected": 84.5}, {"input": [84.5, -84.0], "expected": 84.5}, {"input": [84.5, -83.5], "expected": 84.5}, {"input": [84.5, -83.0], "expected": 84.5}, {"input": [84.5, -82.5], "expected": 84.5}, {"input": [84.5, -82.0], "expected": 84.5}, {"input": [84.5, -81.5], "expected": 84.5}, {"input": [84.5, -81.0], "expected": 84.5}, {"input": [84.5, -80.5], "expected": 84.5}, {"input": [84.5, -80.0], "expected": 84.5}, {"input": [84.5, -79.5], "expected": 84.5}, {"input": [84.5, -79.0], "expected": 84.5}, {"input": [84.5, -78.5], "expected": 84.5}, {"input": [84.5, -78.0], "expected": 84.5}, {"input": [84.5, -77.5], "expected": 84.5}, {"input": [84.5, -77.0], "expected": 84.5}, {"input": [84.5, -76.5], "expected": 84.5}, {"input": [84.5, -76.0], "expected": 84.5}, {"input": [84.5, -75.5], "expected": 84.5}, {"input": [84.5, -75.0], "expected": 84.5}, {"input": [84.5, -74.5], "expected": 84.5}, {"input": [84.5, -74.0], "expected": 84.5}, {"input": [84.5, -73.5], "expected": 84.5}, {"input": [84.5, -73.0], "expected": 84.5}, {"input": [84.5, -72.5], "expected": 84.5}, {"input": [84.5, -72.0], "expected": 84.5}, {"input": [84.5, -71.5], "expected": 84.5}, {"input": [84.5, -71.0], "expected": 84.5}, {"input": [84.5, -70.5], "expected": 84.5}, {"input": [84.5, -70.0], "expected": 84.5}, {"input": [84.5, -69.5], "expected": 84.5}, {"input": [84.5, -69.0], "expected": 84.5}, {"input": [84.5, -68.5], "expected": 84.5}, {"input": [84.5, -68.0], "expected": 84.5}, {"input": [84.5, -67.5], "expected": 84.5}, {"input": [84.5, -67.0], "expected": 84.5}, {"input": [84.5, -66.5], "expected": 84.5}, {"input": [84.5, -66.0], "expected": 84.5}, {"input": [84.5, -65.5], "expected": 84.5}, {"input": [84.5, -65.0], "expected": 84.5}, {"input": [84.5, -64.5], "expected": 84.5}, {"input": [84.5, -64.0], "expected": 84.5}, {"input": [84.5, -63.5], "expected": 84.5}, {"input": [84.5, -63.0], "expected": 84.5}, {"input": [84.5, -62.5], "expected": 84.5}, {"input": [84.5, -62.0], "expected": 84.5}, {"input": [84.5, -61.5], "expected": 84.5}, {"input": [84.5, -61.0], "expected": 84.5}, {"input": [84.5, -60.5], "expected": 84.5}, {"input": [84.5, -60.0], "expected": 84.5}, {"input": [84.5, -59.5], "expected": 84.5}, {"input": [84.5, -59.0], "expected": 84.5}, {"input": [84.5, -58.5], "expected": 84.5}, {"input": [84.5, -58.0], "expected": 84.5}, {"input": [84.5, -57.5], "expected": 84.5}, {"input": [84.5, -57.0], "expected": 84.5}, {"input": [84.5, -56.5], "expected": 84.5}, {"input": [84.5, -56.0], "expected": 84.5}, {"input": [84.5, -55.5], "expected": 84.5}, {"input": [84.5, -55.0], "expected": 84.5}, {"input": [84.5, -54.5], "expected": 84.5}, {"input": [84.5, -54.0], "expected": 84.5}, {"input": [84.5, -53.5], "expected": 84.5}, {"input": [84.5, -53.0], "expected": 84.5}, {"input": [84.5, -52.5], "expected": 84.5}, {"input": [84.5, -52.0], "expected": 84.5}, {"input": [84.5, -51.5], "expected": 84.5}, {"input": [84.5, -51.0], "expected": 84.5}, {"input": [84.5, -50.5], "expected": 84.5}, {"input": [84.5, -50.0], "expected": 84.5}, {"input": [84.5, -49.5], "expected": 84.5}, {"input": [84.5, -49.0], "expected": 84.5}, {"input": [84.5, -48.5], "expected": 84.5}, {"input": [84.5, -48.0], "expected": 84.5}, {"input": [84.5, -47.5], "expected": 84.5}, {"input": [84.5, -47.0], "expected": 84.5}, {"input": [84.5, -46.5], "expected": 84.5}, {"input": [84.5, -46.0], "expected": 84.5}, {"input": [84.5, -45.5], "expected": 84.5}, {"input": [84.5, -45.0], "expected": 84.5}, {"input": [84.5, -44.5], "expected": 84.5}, {"input": [84.5, -44.0], "expected": 84.5}, {"input": [84.5, -43.5], "expected": 84.5}, {"input": [84.5, -43.0], "expected": 84.5}, {"input": [84.5, -42.5], "expected": 84.5}, {"input": [84.5, -42.0], "expected": 84.5}, {"input": [84.5, -41.5], "expected": 84.5}, {"input": [84.5, -41.0], "expected": 84.5}, {"input": [84.5, -40.5], "expected": 84.5}, {"input": [84.5, -40.0], "expected": 84.5}, {"input": [84.5, -39.5], "expected": 84.5}, {"input": [84.5, -39.0], "expected": 84.5}, {"input": [84.5, -38.5], "expected": 84.5}, {"input": [84.5, -38.0], "expected": 84.5}, {"input": [84.5, -37.5], "expected": 84.5}, {"input": [84.5, -37.0], "expected": 84.5}, {"input": [84.5, -36.5], "expected": 84.5}, {"input": [84.5, -36.0], "expected": 84.5}, {"input": [84.5, -35.5], "expected": 84.5}, {"input": [84.5, -35.0], "expected": 84.5}, {"input": [84.5, -34.5], "expected": 84.5}, {"input": [84.5, -34.0], "expected": 84.5}, {"input": [84.5, -33.5], "expected": 84.5}, {"input": [84.5, -33.0], "expected": 84.5}, {"input": [84.5, -32.5], "expected": 84.5}, {"input": [84.5, -32.0], "expected": 84.5}, {"input": [84.5, -31.5], "expected": 84.5}, {"input": [84.5, -31.0], "expected": 84.5}, {"input": [84.5, -30.5], "expected": 84.5}, {"input": [84.5, -30.0], "expected": 84.5}, {"input": [84.5, -29.5], "expected": 84.5}, {"input": [84.5, -29.0], "expected": 84.5}, {"input": [84.5, -28.5], "expected": 84.5}, {"input": [84.5, -28.0], "expected": 84.5}, {"input": [84.5, -27.5], "expected": 84.5}, {"input": [84.5, -27.0], "expected": 84.5}, {"input": [84.5, -26.5], "expected": 84.5}, {"input": [84.5, -26.0], "expected": 84.5}, {"input": [84.5, -25.5], "expected": 84.5}, {"input": [84.5, -25.0], "expected": 84.5}, {"input": [84.5, -24.5], "expected": 84.5}, {"input": [84.5, -24.0], "expected": 84.5}, {"input": [84.5, -23.5], "expected": 84.5}, {"input": [84.5, -23.0], "expected": 84.5}, {"input": [84.5, -22.5], "expected": 84.5}, {"input": [84.5, -22.0], "expected": 84.5}, {"input": [84.5, -21.5], "expected": 84.5}, {"input": [84.5, -21.0], "expected": 84.5}, {"input": [84.5, -20.5], "expected": 84.5}, {"input": [84.5, -20.0], "expected": 84.5}, {"input": [84.5, -19.5], "expected": 84.5}, {"input": [84.5, -19.0], "expected": 84.5}, {"input": [84.5, -18.5], "expected": 84.5}, {"input": [84.5, -18.0], "expected": 84.5}, {"input": [84.5, -17.5], "expected": 84.5}, {"input": [84.5, -17.0], "expected": 84.5}, {"input": [84.5, -16.5], "expected": 84.5}, {"input": [84.5, -16.0], "expected": 84.5}, {"input": [84.5, -15.5], "expected": 84.5}, {"input": [84.5, -15.0], "expected": 84.5}, {"input": [84.5, -14.5], "expected": 84.5}, {"input": [84.5, -14.0], "expected": 84.5}, {"input": [84.5, -13.5], "expected": 84.5}, {"input": [84.5, -13.0], "expected": 84.5}, {"input": [84.5, -12.5], "expected": 84.5}, {"input": [84.5, -12.0], "expected": 84.5}, {"input": [84.5, -11.5], "expected": 84.5}, {"input": [84.5, -11.0], "expected": 84.5}, {"input": [84.5, -10.5], "expected": 84.5}, {"input": [84.5, -10.0], "expected": 84.5}, {"input": [84.5, -9.5], "expected": 84.5}, {"input": [84.5, -9.0], "expected": 84.5}, {"input": [84.5, -8.5], "expected": 84.5}, {"input": [84.5, -8.0], "expected": 84.5}, {"input": [84.5, -7.5], "expected": 84.5}, {"input": [84.5, -7.0], "expected": 84.5}, {"input": [84.5, -6.5], "expected": 84.5}, {"input": [84.5, -6.0], "expected": 84.5}, {"input": [84.5, -5.5], "expected": 84.5}, {"input": [84.5, -5.0], "expected": 84.5}, {"input": [84.5, -4.5], "expected": 84.5}, {"input": [84.5, -4.0], "expected": 84.5}, {"input": [84.5, -3.5], "expected": 84.5}, {"input": [84.5, -3.0], "expected": 84.5}, {"input": [84.5, -2.5], "expected": 84.5}, {"input": [84.5, -2.0], "expected": 84.5}, {"input": [84.5, -1.5], "expected": 84.5}, {"input": [84.5, -1.0], "expected": 84.5}, {"input": [84.5, -0.5], "expected": 84.5}, {"input": [84.5, 0.0], "expected": 84.5}, {"input": [84.5, 0.5], "expected": 84.5}, {"input": [84.5, 1.0], "expected": 84.5}, {"input": [84.5, 1.5], "expected": 84.5}, {"input": [84.5, 2.0], "expected": 84.5}, {"input": [84.5, 2.5], "expected": 84.5}, {"input": [84.5, 3.0], "expected": 84.5}, {"input": [84.5, 3.5], "expected": 84.5}, {"input": [84.5, 4.0], "expected": 84.5}, {"input": [84.5, 4.5], "expected": 84.5}, {"input": [84.5, 5.0], "expected": 84.5}, {"input": [84.5, 5.5], "expected": 84.5}, {"input": [84.5, 6.0], "expected": 84.5}, {"input": [84.5, 6.5], "expected": 84.5}, {"input": [84.5, 7.0], "expected": 84.5}, {"input": [84.5, 7.5], "expected": 84.5}, {"input": [84.5, 8.0], "expected": 84.5}, {"input": [84.5, 8.5], "expected": 84.5}, {"input": [84.5, 9.0], "expected": 84.5}, {"input": [84.5, 9.5], "expected": 84.5}, {"input": [84.5, 10.0], "expected": 84.5}, {"input": [84.5, 10.5], "expected": 84.5}, {"input": [84.5, 11.0], "expected": 84.5}, {"input": [84.5, 11.5], "expected": 84.5}, {"input": [84.5, 12.0], "expected": 84.5}, {"input": [84.5, 12.5], "expected": 84.5}, {"input": [84.5, 13.0], "expected": 84.5}, {"input": [84.5, 13.5], "expected": 84.5}, {"input": [84.5, 14.0], "expected": 84.5}, {"input": [84.5, 14.5], "expected": 84.5}, {"input": [84.5, 15.0], "expected": 84.5}, {"input": [84.5, 15.5], "expected": 84.5}, {"input": [84.5, 16.0], "expected": 84.5}, {"input": [84.5, 16.5], "expected": 84.5}, {"input": [84.5, 17.0], "expected": 84.5}, {"input": [84.5, 17.5], "expected": 84.5}, {"input": [84.5, 18.0], "expected": 84.5}, {"input": [84.5, 18.5], "expected": 84.5}, {"input": [84.5, 19.0], "expected": 84.5}, {"input": [84.5, 19.5], "expected": 84.5}, {"input": [84.5, 20.0], "expected": 84.5}, {"input": [84.5, 20.5], "expected": 84.5}, {"input": [84.5, 21.0], "expected": 84.5}, {"input": [84.5, 21.5], "expected": 84.5}, {"input": [84.5, 22.0], "expected": 84.5}, {"input": [84.5, 22.5], "expected": 84.5}, {"input": [84.5, 23.0], "expected": 84.5}, {"input": [84.5, 23.5], "expected": 84.5}, {"input": [84.5, 24.0], "expected": 84.5}, {"input": [84.5, 24.5], "expected": 84.5}, {"input": [84.5, 25.0], "expected": 84.5}, {"input": [84.5, 25.5], "expected": 84.5}, {"input": [84.5, 26.0], "expected": 84.5}, {"input": [84.5, 26.5], "expected": 84.5}, {"input": [84.5, 27.0], "expected": 84.5}, {"input": [84.5, 27.5], "expected": 84.5}, {"input": [84.5, 28.0], "expected": 84.5}, {"input": [84.5, 28.5], "expected": 84.5}, {"input": [84.5, 29.0], "expected": 84.5}, {"input": [84.5, 29.5], "expected": 84.5}, {"input": [84.5, 30.0], "expected": 84.5}, {"input": [84.5, 30.5], "expected": 84.5}, {"input": [84.5, 31.0], "expected": 84.5}, {"input": [84.5, 31.5], "expected": 84.5}, {"input": [84.5, 32.0], "expected": 84.5}, {"input": [84.5, 32.5], "expected": 84.5}, {"input": [84.5, 33.0], "expected": 84.5}, {"input": [84.5, 33.5], "expected": 84.5}, {"input": [84.5, 34.0], "expected": 84.5}, {"input": [84.5, 34.5], "expected": 84.5}, {"input": [84.5, 35.0], "expected": 84.5}, {"input": [84.5, 35.5], "expected": 84.5}, {"input": [84.5, 36.0], "expected": 84.5}, {"input": [84.5, 36.5], "expected": 84.5}, {"input": [84.5, 37.0], "expected": 84.5}, {"input": [84.5, 37.5], "expected": 84.5}, {"input": [84.5, 38.0], "expected": 84.5}, {"input": [84.5, 38.5], "expected": 84.5}, {"input": [84.5, 39.0], "expected": 84.5}, {"input": [84.5, 39.5], "expected": 84.5}, {"input": [84.5, 40.0], "expected": 84.5}, {"input": [84.5, 40.5], "expected": 84.5}, {"input": [84.5, 41.0], "expected": 84.5}, {"input": [84.5, 41.5], "expected": 84.5}, {"input": [84.5, 42.0], "expected": 84.5}, {"input": [84.5, 42.5], "expected": 84.5}, {"input": [84.5, 43.0], "expected": 84.5}, {"input": [84.5, 43.5], "expected": 84.5}, {"input": [84.5, 44.0], "expected": 84.5}, {"input": [84.5, 44.5], "expected": 84.5}, {"input": [84.5, 45.0], "expected": 84.5}, {"input": [84.5, 45.5], "expected": 84.5}, {"input": [84.5, 46.0], "expected": 84.5}, {"input": [84.5, 46.5], "expected": 84.5}, {"input": [84.5, 47.0], "expected": 84.5}, {"input": [84.5, 47.5], "expected": 84.5}, {"input": [84.5, 48.0], "expected": 84.5}, {"input": [84.5, 48.5], "expected": 84.5}, {"input": [84.5, 49.0], "expected": 84.5}, {"input": [84.5, 49.5], "expected": 84.5}, {"input": [84.5, 50.0], "expected": 84.5}, {"input": [84.5, 50.5], "expected": 84.5}, {"input": [84.5, 51.0], "expected": 84.5}, {"input": [84.5, 51.5], "expected": 84.5}, {"input": [84.5, 52.0], "expected": 84.50000000000001}, {"input": [84.5, 52.5], "expected": 84.50000000000001}, {"input": [84.5, 53.0], "expected": 84.50000000000001}, {"input": [84.5, 53.5], "expected": 84.50000000000003}, {"input": [84.5, 54.0], "expected": 84.50000000000006}, {"input": [84.5, 54.5], "expected": 84.5000000000001}, {"input": [84.5, 55.0], "expected": 84.50000000000016}, {"input": [84.5, 55.5], "expected": 84.50000000000026}, {"input": [84.5, 56.0], "expected": 84.50000000000043}, {"input": [84.5, 56.5], "expected": 84.5000000000007}, {"input": [84.5, 57.0], "expected": 84.50000000000114}, {"input": [84.5, 57.5], "expected": 84.50000000000188}, {"input": [84.5, 58.0], "expected": 84.5000000000031}, {"input": [84.5, 58.5], "expected": 84.50000000000512}, {"input": [84.5, 59.0], "expected": 84.50000000000843}, {"input": [84.5, 59.5], "expected": 84.50000000001388}, {"input": [84.5, 60.0], "expected": 84.5000000000229}, {"input": [84.5, 60.5], "expected": 84.50000000003776}, {"input": [84.5, 61.0], "expected": 84.50000000006224}, {"input": [84.5, 61.5], "expected": 84.50000000010262}, {"input": [84.5, 62.0], "expected": 84.5000000001692}, {"input": [84.5, 62.5], "expected": 84.50000000027894}, {"input": [84.5, 63.0], "expected": 84.5000000004599}, {"input": [84.5, 63.5], "expected": 84.50000000075826}, {"input": [84.5, 64.0], "expected": 84.50000000125016}, {"input": [84.5, 64.5], "expected": 84.50000000206116}, {"input": [84.5, 65.0], "expected": 84.50000000339827}, {"input": [84.5, 65.5], "expected": 84.5000000056028}, {"input": [84.5, 66.0], "expected": 84.50000000923745}, {"input": [84.5, 66.5], "expected": 84.50000001522999}, {"input": [84.5, 67.0], "expected": 84.50000002511}, {"input": [84.5, 67.5], "expected": 84.50000004139937}, {"input": [84.5, 68.0], "expected": 84.50000006825603}, {"input": [84.5, 68.5], "expected": 84.50000011253516}, {"input": [84.5, 69.0], "expected": 84.50000018553912}, {"input": [84.5, 69.5], "expected": 84.50000030590228}, {"input": [84.5, 70.0], "expected": 84.50000050434754}, {"input": [84.5, 70.5], "expected": 84.50000083152837}, {"input": [84.5, 71.0], "expected": 84.50000137095815}, {"input": [84.5, 71.5], "expected": 84.50000226032685}, {"input": [84.5, 72.0], "expected": 84.50000372664623}, {"input": [84.5, 72.5], "expected": 84.50000614419348}, {"input": [84.5, 73.0], "expected": 84.50001013004228}, {"input": [84.5, 73.5], "expected": 84.50001670156132}, {"input": [84.5, 74.0], "expected": 84.50002753607023}, {"input": [84.5, 74.5], "expected": 84.50004539889922}, {"input": [84.5, 75.0], "expected": 84.50007484902864}, {"input": [84.5, 75.5], "expected": 84.50012340218973}, {"input": [84.5, 76.0], "expected": 84.50020344767213}, {"input": [84.5, 76.5], "expected": 84.5003354063729}, {"input": [84.5, 77.0], "expected": 84.50055293147535}, {"input": [84.5, 77.5], "expected": 84.50091146645377}, {"input": [84.5, 78.0], "expected": 84.50150231015975}, {"input": [84.5, 78.5], "expected": 84.50247568513772}, {"input": [84.5, 79.0], "expected": 84.50407844327057}, {"input": [84.5, 79.5], "expected": 84.50671534848912}, {"input": [84.5, 80.0], "expected": 84.5110477448486}, {"input": [84.5, 80.5], "expected": 84.5181499279178}, {"input": [84.5, 81.0], "expected": 84.52975041827263}, {"input": [84.5, 81.5], "expected": 84.54858735157374}, {"input": [84.5, 82.0], "expected": 84.57888973429255}, {"input": [84.5, 82.5], "expected": 84.62692801104298}, {"input": [84.5, 83.0], "expected": 84.70141327798275}, {"input": [84.5, 83.5], "expected": 84.81326168751822}, {"input": [84.5, 84.0], "expected": 84.9740769841801}, {"input": [84.5, 84.5], "expected": 85.19314718055995}, {"input": [84.5, 85.0], "expected": 85.4740769841801}, {"input": [84.5, 85.5], "expected": 85.81326168751822}, {"input": [84.5, 86.0], "expected": 86.20141327798275}, {"input": [84.5, 86.5], "expected": 86.62692801104298}, {"input": [84.5, 87.0], "expected": 87.07888973429255}, {"input": [84.5, 87.5], "expected": 87.54858735157374}, {"input": [84.5, 88.0], "expected": 88.02975041827263}, {"input": [84.5, 88.5], "expected": 88.5181499279178}, {"input": [84.5, 89.0], "expected": 89.0110477448486}, {"input": [84.5, 89.5], "expected": 89.50671534848912}, {"input": [84.5, 90.0], "expected": 90.00407844327057}, {"input": [84.5, 90.5], "expected": 90.50247568513772}, {"input": [84.5, 91.0], "expected": 91.00150231015975}, {"input": [84.5, 91.5], "expected": 91.50091146645377}, {"input": [84.5, 92.0], "expected": 92.00055293147535}, {"input": [84.5, 92.5], "expected": 92.5003354063729}, {"input": [84.5, 93.0], "expected": 93.00020344767213}, {"input": [84.5, 93.5], "expected": 93.50012340218973}, {"input": [84.5, 94.0], "expected": 94.00007484902864}, {"input": [84.5, 94.5], "expected": 94.50004539889922}, {"input": [84.5, 95.0], "expected": 95.00002753607023}, {"input": [84.5, 95.5], "expected": 95.50001670156132}, {"input": [84.5, 96.0], "expected": 96.00001013004228}, {"input": [84.5, 96.5], "expected": 96.50000614419348}, {"input": [84.5, 97.0], "expected": 97.00000372664623}, {"input": [84.5, 97.5], "expected": 97.50000226032685}, {"input": [84.5, 98.0], "expected": 98.00000137095815}, {"input": [84.5, 98.5], "expected": 98.50000083152837}, {"input": [84.5, 99.0], "expected": 99.00000050434754}, {"input": [84.5, 99.5], "expected": 99.50000030590228}, {"input": [85.0, -100.0], "expected": 85.0}, {"input": [85.0, -99.5], "expected": 85.0}, {"input": [85.0, -99.0], "expected": 85.0}, {"input": [85.0, -98.5], "expected": 85.0}, {"input": [85.0, -98.0], "expected": 85.0}, {"input": [85.0, -97.5], "expected": 85.0}, {"input": [85.0, -97.0], "expected": 85.0}, {"input": [85.0, -96.5], "expected": 85.0}, {"input": [85.0, -96.0], "expected": 85.0}, {"input": [85.0, -95.5], "expected": 85.0}, {"input": [85.0, -95.0], "expected": 85.0}, {"input": [85.0, -94.5], "expected": 85.0}, {"input": [85.0, -94.0], "expected": 85.0}, {"input": [85.0, -93.5], "expected": 85.0}, {"input": [85.0, -93.0], "expected": 85.0}, {"input": [85.0, -92.5], "expected": 85.0}, {"input": [85.0, -92.0], "expected": 85.0}, {"input": [85.0, -91.5], "expected": 85.0}, {"input": [85.0, -91.0], "expected": 85.0}, {"input": [85.0, -90.5], "expected": 85.0}, {"input": [85.0, -90.0], "expected": 85.0}, {"input": [85.0, -89.5], "expected": 85.0}, {"input": [85.0, -89.0], "expected": 85.0}, {"input": [85.0, -88.5], "expected": 85.0}, {"input": [85.0, -88.0], "expected": 85.0}, {"input": [85.0, -87.5], "expected": 85.0}, {"input": [85.0, -87.0], "expected": 85.0}, {"input": [85.0, -86.5], "expected": 85.0}, {"input": [85.0, -86.0], "expected": 85.0}, {"input": [85.0, -85.5], "expected": 85.0}, {"input": [85.0, -85.0], "expected": 85.0}, {"input": [85.0, -84.5], "expected": 85.0}, {"input": [85.0, -84.0], "expected": 85.0}, {"input": [85.0, -83.5], "expected": 85.0}, {"input": [85.0, -83.0], "expected": 85.0}, {"input": [85.0, -82.5], "expected": 85.0}, {"input": [85.0, -82.0], "expected": 85.0}, {"input": [85.0, -81.5], "expected": 85.0}, {"input": [85.0, -81.0], "expected": 85.0}, {"input": [85.0, -80.5], "expected": 85.0}, {"input": [85.0, -80.0], "expected": 85.0}, {"input": [85.0, -79.5], "expected": 85.0}, {"input": [85.0, -79.0], "expected": 85.0}, {"input": [85.0, -78.5], "expected": 85.0}, {"input": [85.0, -78.0], "expected": 85.0}, {"input": [85.0, -77.5], "expected": 85.0}, {"input": [85.0, -77.0], "expected": 85.0}, {"input": [85.0, -76.5], "expected": 85.0}, {"input": [85.0, -76.0], "expected": 85.0}, {"input": [85.0, -75.5], "expected": 85.0}, {"input": [85.0, -75.0], "expected": 85.0}, {"input": [85.0, -74.5], "expected": 85.0}, {"input": [85.0, -74.0], "expected": 85.0}, {"input": [85.0, -73.5], "expected": 85.0}, {"input": [85.0, -73.0], "expected": 85.0}, {"input": [85.0, -72.5], "expected": 85.0}, {"input": [85.0, -72.0], "expected": 85.0}, {"input": [85.0, -71.5], "expected": 85.0}, {"input": [85.0, -71.0], "expected": 85.0}, {"input": [85.0, -70.5], "expected": 85.0}, {"input": [85.0, -70.0], "expected": 85.0}, {"input": [85.0, -69.5], "expected": 85.0}, {"input": [85.0, -69.0], "expected": 85.0}, {"input": [85.0, -68.5], "expected": 85.0}, {"input": [85.0, -68.0], "expected": 85.0}, {"input": [85.0, -67.5], "expected": 85.0}, {"input": [85.0, -67.0], "expected": 85.0}, {"input": [85.0, -66.5], "expected": 85.0}, {"input": [85.0, -66.0], "expected": 85.0}, {"input": [85.0, -65.5], "expected": 85.0}, {"input": [85.0, -65.0], "expected": 85.0}, {"input": [85.0, -64.5], "expected": 85.0}, {"input": [85.0, -64.0], "expected": 85.0}, {"input": [85.0, -63.5], "expected": 85.0}, {"input": [85.0, -63.0], "expected": 85.0}, {"input": [85.0, -62.5], "expected": 85.0}, {"input": [85.0, -62.0], "expected": 85.0}, {"input": [85.0, -61.5], "expected": 85.0}, {"input": [85.0, -61.0], "expected": 85.0}, {"input": [85.0, -60.5], "expected": 85.0}, {"input": [85.0, -60.0], "expected": 85.0}, {"input": [85.0, -59.5], "expected": 85.0}, {"input": [85.0, -59.0], "expected": 85.0}, {"input": [85.0, -58.5], "expected": 85.0}, {"input": [85.0, -58.0], "expected": 85.0}, {"input": [85.0, -57.5], "expected": 85.0}, {"input": [85.0, -57.0], "expected": 85.0}, {"input": [85.0, -56.5], "expected": 85.0}, {"input": [85.0, -56.0], "expected": 85.0}, {"input": [85.0, -55.5], "expected": 85.0}, {"input": [85.0, -55.0], "expected": 85.0}, {"input": [85.0, -54.5], "expected": 85.0}, {"input": [85.0, -54.0], "expected": 85.0}, {"input": [85.0, -53.5], "expected": 85.0}, {"input": [85.0, -53.0], "expected": 85.0}, {"input": [85.0, -52.5], "expected": 85.0}, {"input": [85.0, -52.0], "expected": 85.0}, {"input": [85.0, -51.5], "expected": 85.0}, {"input": [85.0, -51.0], "expected": 85.0}, {"input": [85.0, -50.5], "expected": 85.0}, {"input": [85.0, -50.0], "expected": 85.0}, {"input": [85.0, -49.5], "expected": 85.0}, {"input": [85.0, -49.0], "expected": 85.0}, {"input": [85.0, -48.5], "expected": 85.0}, {"input": [85.0, -48.0], "expected": 85.0}, {"input": [85.0, -47.5], "expected": 85.0}, {"input": [85.0, -47.0], "expected": 85.0}, {"input": [85.0, -46.5], "expected": 85.0}, {"input": [85.0, -46.0], "expected": 85.0}, {"input": [85.0, -45.5], "expected": 85.0}, {"input": [85.0, -45.0], "expected": 85.0}, {"input": [85.0, -44.5], "expected": 85.0}, {"input": [85.0, -44.0], "expected": 85.0}, {"input": [85.0, -43.5], "expected": 85.0}, {"input": [85.0, -43.0], "expected": 85.0}, {"input": [85.0, -42.5], "expected": 85.0}, {"input": [85.0, -42.0], "expected": 85.0}, {"input": [85.0, -41.5], "expected": 85.0}, {"input": [85.0, -41.0], "expected": 85.0}, {"input": [85.0, -40.5], "expected": 85.0}, {"input": [85.0, -40.0], "expected": 85.0}, {"input": [85.0, -39.5], "expected": 85.0}, {"input": [85.0, -39.0], "expected": 85.0}, {"input": [85.0, -38.5], "expected": 85.0}, {"input": [85.0, -38.0], "expected": 85.0}, {"input": [85.0, -37.5], "expected": 85.0}, {"input": [85.0, -37.0], "expected": 85.0}, {"input": [85.0, -36.5], "expected": 85.0}, {"input": [85.0, -36.0], "expected": 85.0}, {"input": [85.0, -35.5], "expected": 85.0}, {"input": [85.0, -35.0], "expected": 85.0}, {"input": [85.0, -34.5], "expected": 85.0}, {"input": [85.0, -34.0], "expected": 85.0}, {"input": [85.0, -33.5], "expected": 85.0}, {"input": [85.0, -33.0], "expected": 85.0}, {"input": [85.0, -32.5], "expected": 85.0}, {"input": [85.0, -32.0], "expected": 85.0}, {"input": [85.0, -31.5], "expected": 85.0}, {"input": [85.0, -31.0], "expected": 85.0}, {"input": [85.0, -30.5], "expected": 85.0}, {"input": [85.0, -30.0], "expected": 85.0}, {"input": [85.0, -29.5], "expected": 85.0}, {"input": [85.0, -29.0], "expected": 85.0}, {"input": [85.0, -28.5], "expected": 85.0}, {"input": [85.0, -28.0], "expected": 85.0}, {"input": [85.0, -27.5], "expected": 85.0}, {"input": [85.0, -27.0], "expected": 85.0}, {"input": [85.0, -26.5], "expected": 85.0}, {"input": [85.0, -26.0], "expected": 85.0}, {"input": [85.0, -25.5], "expected": 85.0}, {"input": [85.0, -25.0], "expected": 85.0}, {"input": [85.0, -24.5], "expected": 85.0}, {"input": [85.0, -24.0], "expected": 85.0}, {"input": [85.0, -23.5], "expected": 85.0}, {"input": [85.0, -23.0], "expected": 85.0}, {"input": [85.0, -22.5], "expected": 85.0}, {"input": [85.0, -22.0], "expected": 85.0}, {"input": [85.0, -21.5], "expected": 85.0}, {"input": [85.0, -21.0], "expected": 85.0}, {"input": [85.0, -20.5], "expected": 85.0}, {"input": [85.0, -20.0], "expected": 85.0}, {"input": [85.0, -19.5], "expected": 85.0}, {"input": [85.0, -19.0], "expected": 85.0}, {"input": [85.0, -18.5], "expected": 85.0}, {"input": [85.0, -18.0], "expected": 85.0}, {"input": [85.0, -17.5], "expected": 85.0}, {"input": [85.0, -17.0], "expected": 85.0}, {"input": [85.0, -16.5], "expected": 85.0}, {"input": [85.0, -16.0], "expected": 85.0}, {"input": [85.0, -15.5], "expected": 85.0}, {"input": [85.0, -15.0], "expected": 85.0}, {"input": [85.0, -14.5], "expected": 85.0}, {"input": [85.0, -14.0], "expected": 85.0}, {"input": [85.0, -13.5], "expected": 85.0}, {"input": [85.0, -13.0], "expected": 85.0}, {"input": [85.0, -12.5], "expected": 85.0}, {"input": [85.0, -12.0], "expected": 85.0}, {"input": [85.0, -11.5], "expected": 85.0}, {"input": [85.0, -11.0], "expected": 85.0}, {"input": [85.0, -10.5], "expected": 85.0}, {"input": [85.0, -10.0], "expected": 85.0}, {"input": [85.0, -9.5], "expected": 85.0}, {"input": [85.0, -9.0], "expected": 85.0}, {"input": [85.0, -8.5], "expected": 85.0}, {"input": [85.0, -8.0], "expected": 85.0}, {"input": [85.0, -7.5], "expected": 85.0}, {"input": [85.0, -7.0], "expected": 85.0}, {"input": [85.0, -6.5], "expected": 85.0}, {"input": [85.0, -6.0], "expected": 85.0}, {"input": [85.0, -5.5], "expected": 85.0}, {"input": [85.0, -5.0], "expected": 85.0}, {"input": [85.0, -4.5], "expected": 85.0}, {"input": [85.0, -4.0], "expected": 85.0}, {"input": [85.0, -3.5], "expected": 85.0}, {"input": [85.0, -3.0], "expected": 85.0}, {"input": [85.0, -2.5], "expected": 85.0}, {"input": [85.0, -2.0], "expected": 85.0}, {"input": [85.0, -1.5], "expected": 85.0}, {"input": [85.0, -1.0], "expected": 85.0}, {"input": [85.0, -0.5], "expected": 85.0}, {"input": [85.0, 0.0], "expected": 85.0}, {"input": [85.0, 0.5], "expected": 85.0}, {"input": [85.0, 1.0], "expected": 85.0}, {"input": [85.0, 1.5], "expected": 85.0}, {"input": [85.0, 2.0], "expected": 85.0}, {"input": [85.0, 2.5], "expected": 85.0}, {"input": [85.0, 3.0], "expected": 85.0}, {"input": [85.0, 3.5], "expected": 85.0}, {"input": [85.0, 4.0], "expected": 85.0}, {"input": [85.0, 4.5], "expected": 85.0}, {"input": [85.0, 5.0], "expected": 85.0}, {"input": [85.0, 5.5], "expected": 85.0}, {"input": [85.0, 6.0], "expected": 85.0}, {"input": [85.0, 6.5], "expected": 85.0}, {"input": [85.0, 7.0], "expected": 85.0}, {"input": [85.0, 7.5], "expected": 85.0}, {"input": [85.0, 8.0], "expected": 85.0}, {"input": [85.0, 8.5], "expected": 85.0}, {"input": [85.0, 9.0], "expected": 85.0}, {"input": [85.0, 9.5], "expected": 85.0}, {"input": [85.0, 10.0], "expected": 85.0}, {"input": [85.0, 10.5], "expected": 85.0}, {"input": [85.0, 11.0], "expected": 85.0}, {"input": [85.0, 11.5], "expected": 85.0}, {"input": [85.0, 12.0], "expected": 85.0}, {"input": [85.0, 12.5], "expected": 85.0}, {"input": [85.0, 13.0], "expected": 85.0}, {"input": [85.0, 13.5], "expected": 85.0}, {"input": [85.0, 14.0], "expected": 85.0}, {"input": [85.0, 14.5], "expected": 85.0}, {"input": [85.0, 15.0], "expected": 85.0}, {"input": [85.0, 15.5], "expected": 85.0}, {"input": [85.0, 16.0], "expected": 85.0}, {"input": [85.0, 16.5], "expected": 85.0}, {"input": [85.0, 17.0], "expected": 85.0}, {"input": [85.0, 17.5], "expected": 85.0}, {"input": [85.0, 18.0], "expected": 85.0}, {"input": [85.0, 18.5], "expected": 85.0}, {"input": [85.0, 19.0], "expected": 85.0}, {"input": [85.0, 19.5], "expected": 85.0}, {"input": [85.0, 20.0], "expected": 85.0}, {"input": [85.0, 20.5], "expected": 85.0}, {"input": [85.0, 21.0], "expected": 85.0}, {"input": [85.0, 21.5], "expected": 85.0}, {"input": [85.0, 22.0], "expected": 85.0}, {"input": [85.0, 22.5], "expected": 85.0}, {"input": [85.0, 23.0], "expected": 85.0}, {"input": [85.0, 23.5], "expected": 85.0}, {"input": [85.0, 24.0], "expected": 85.0}, {"input": [85.0, 24.5], "expected": 85.0}, {"input": [85.0, 25.0], "expected": 85.0}, {"input": [85.0, 25.5], "expected": 85.0}, {"input": [85.0, 26.0], "expected": 85.0}, {"input": [85.0, 26.5], "expected": 85.0}, {"input": [85.0, 27.0], "expected": 85.0}, {"input": [85.0, 27.5], "expected": 85.0}, {"input": [85.0, 28.0], "expected": 85.0}, {"input": [85.0, 28.5], "expected": 85.0}, {"input": [85.0, 29.0], "expected": 85.0}, {"input": [85.0, 29.5], "expected": 85.0}, {"input": [85.0, 30.0], "expected": 85.0}, {"input": [85.0, 30.5], "expected": 85.0}, {"input": [85.0, 31.0], "expected": 85.0}, {"input": [85.0, 31.5], "expected": 85.0}, {"input": [85.0, 32.0], "expected": 85.0}, {"input": [85.0, 32.5], "expected": 85.0}, {"input": [85.0, 33.0], "expected": 85.0}, {"input": [85.0, 33.5], "expected": 85.0}, {"input": [85.0, 34.0], "expected": 85.0}, {"input": [85.0, 34.5], "expected": 85.0}, {"input": [85.0, 35.0], "expected": 85.0}, {"input": [85.0, 35.5], "expected": 85.0}, {"input": [85.0, 36.0], "expected": 85.0}, {"input": [85.0, 36.5], "expected": 85.0}, {"input": [85.0, 37.0], "expected": 85.0}, {"input": [85.0, 37.5], "expected": 85.0}, {"input": [85.0, 38.0], "expected": 85.0}, {"input": [85.0, 38.5], "expected": 85.0}, {"input": [85.0, 39.0], "expected": 85.0}, {"input": [85.0, 39.5], "expected": 85.0}, {"input": [85.0, 40.0], "expected": 85.0}, {"input": [85.0, 40.5], "expected": 85.0}, {"input": [85.0, 41.0], "expected": 85.0}, {"input": [85.0, 41.5], "expected": 85.0}, {"input": [85.0, 42.0], "expected": 85.0}, {"input": [85.0, 42.5], "expected": 85.0}, {"input": [85.0, 43.0], "expected": 85.0}, {"input": [85.0, 43.5], "expected": 85.0}, {"input": [85.0, 44.0], "expected": 85.0}, {"input": [85.0, 44.5], "expected": 85.0}, {"input": [85.0, 45.0], "expected": 85.0}, {"input": [85.0, 45.5], "expected": 85.0}, {"input": [85.0, 46.0], "expected": 85.0}, {"input": [85.0, 46.5], "expected": 85.0}, {"input": [85.0, 47.0], "expected": 85.0}, {"input": [85.0, 47.5], "expected": 85.0}, {"input": [85.0, 48.0], "expected": 85.0}, {"input": [85.0, 48.5], "expected": 85.0}, {"input": [85.0, 49.0], "expected": 85.0}, {"input": [85.0, 49.5], "expected": 85.0}, {"input": [85.0, 50.0], "expected": 85.0}, {"input": [85.0, 50.5], "expected": 85.0}, {"input": [85.0, 51.0], "expected": 85.0}, {"input": [85.0, 51.5], "expected": 85.0}, {"input": [85.0, 52.0], "expected": 85.0}, {"input": [85.0, 52.5], "expected": 85.00000000000001}, {"input": [85.0, 53.0], "expected": 85.00000000000001}, {"input": [85.0, 53.5], "expected": 85.00000000000001}, {"input": [85.0, 54.0], "expected": 85.00000000000003}, {"input": [85.0, 54.5], "expected": 85.00000000000006}, {"input": [85.0, 55.0], "expected": 85.0000000000001}, {"input": [85.0, 55.5], "expected": 85.00000000000016}, {"input": [85.0, 56.0], "expected": 85.00000000000026}, {"input": [85.0, 56.5], "expected": 85.00000000000043}, {"input": [85.0, 57.0], "expected": 85.0000000000007}, {"input": [85.0, 57.5], "expected": 85.00000000000114}, {"input": [85.0, 58.0], "expected": 85.00000000000188}, {"input": [85.0, 58.5], "expected": 85.0000000000031}, {"input": [85.0, 59.0], "expected": 85.00000000000512}, {"input": [85.0, 59.5], "expected": 85.00000000000843}, {"input": [85.0, 60.0], "expected": 85.00000000001388}, {"input": [85.0, 60.5], "expected": 85.0000000000229}, {"input": [85.0, 61.0], "expected": 85.00000000003776}, {"input": [85.0, 61.5], "expected": 85.00000000006224}, {"input": [85.0, 62.0], "expected": 85.00000000010262}, {"input": [85.0, 62.5], "expected": 85.0000000001692}, {"input": [85.0, 63.0], "expected": 85.00000000027894}, {"input": [85.0, 63.5], "expected": 85.0000000004599}, {"input": [85.0, 64.0], "expected": 85.00000000075826}, {"input": [85.0, 64.5], "expected": 85.00000000125016}, {"input": [85.0, 65.0], "expected": 85.00000000206116}, {"input": [85.0, 65.5], "expected": 85.00000000339827}, {"input": [85.0, 66.0], "expected": 85.0000000056028}, {"input": [85.0, 66.5], "expected": 85.00000000923745}, {"input": [85.0, 67.0], "expected": 85.00000001522999}, {"input": [85.0, 67.5], "expected": 85.00000002511}, {"input": [85.0, 68.0], "expected": 85.00000004139937}, {"input": [85.0, 68.5], "expected": 85.00000006825603}, {"input": [85.0, 69.0], "expected": 85.00000011253516}, {"input": [85.0, 69.5], "expected": 85.00000018553912}, {"input": [85.0, 70.0], "expected": 85.00000030590228}, {"input": [85.0, 70.5], "expected": 85.00000050434754}, {"input": [85.0, 71.0], "expected": 85.00000083152837}, {"input": [85.0, 71.5], "expected": 85.00000137095815}, {"input": [85.0, 72.0], "expected": 85.00000226032685}, {"input": [85.0, 72.5], "expected": 85.00000372664623}, {"input": [85.0, 73.0], "expected": 85.00000614419348}, {"input": [85.0, 73.5], "expected": 85.00001013004228}, {"input": [85.0, 74.0], "expected": 85.00001670156132}, {"input": [85.0, 74.5], "expected": 85.00002753607023}, {"input": [85.0, 75.0], "expected": 85.00004539889922}, {"input": [85.0, 75.5], "expected": 85.00007484902864}, {"input": [85.0, 76.0], "expected": 85.00012340218973}, {"input": [85.0, 76.5], "expected": 85.00020344767213}, {"input": [85.0, 77.0], "expected": 85.0003354063729}, {"input": [85.0, 77.5], "expected": 85.00055293147535}, {"input": [85.0, 78.0], "expected": 85.00091146645377}, {"input": [85.0, 78.5], "expected": 85.00150231015975}, {"input": [85.0, 79.0], "expected": 85.00247568513772}, {"input": [85.0, 79.5], "expected": 85.00407844327057}, {"input": [85.0, 80.0], "expected": 85.00671534848912}, {"input": [85.0, 80.5], "expected": 85.0110477448486}, {"input": [85.0, 81.0], "expected": 85.0181499279178}, {"input": [85.0, 81.5], "expected": 85.02975041827263}, {"input": [85.0, 82.0], "expected": 85.04858735157374}, {"input": [85.0, 82.5], "expected": 85.07888973429255}, {"input": [85.0, 83.0], "expected": 85.12692801104298}, {"input": [85.0, 83.5], "expected": 85.20141327798275}, {"input": [85.0, 84.0], "expected": 85.31326168751822}, {"input": [85.0, 84.5], "expected": 85.4740769841801}, {"input": [85.0, 85.0], "expected": 85.69314718055995}, {"input": [85.0, 85.5], "expected": 85.9740769841801}, {"input": [85.0, 86.0], "expected": 86.31326168751822}, {"input": [85.0, 86.5], "expected": 86.70141327798275}, {"input": [85.0, 87.0], "expected": 87.12692801104298}, {"input": [85.0, 87.5], "expected": 87.57888973429255}, {"input": [85.0, 88.0], "expected": 88.04858735157374}, {"input": [85.0, 88.5], "expected": 88.52975041827263}, {"input": [85.0, 89.0], "expected": 89.0181499279178}, {"input": [85.0, 89.5], "expected": 89.5110477448486}, {"input": [85.0, 90.0], "expected": 90.00671534848912}, {"input": [85.0, 90.5], "expected": 90.50407844327057}, {"input": [85.0, 91.0], "expected": 91.00247568513772}, {"input": [85.0, 91.5], "expected": 91.50150231015975}, {"input": [85.0, 92.0], "expected": 92.00091146645377}, {"input": [85.0, 92.5], "expected": 92.50055293147535}, {"input": [85.0, 93.0], "expected": 93.0003354063729}, {"input": [85.0, 93.5], "expected": 93.50020344767213}, {"input": [85.0, 94.0], "expected": 94.00012340218973}, {"input": [85.0, 94.5], "expected": 94.50007484902864}, {"input": [85.0, 95.0], "expected": 95.00004539889922}, {"input": [85.0, 95.5], "expected": 95.50002753607023}, {"input": [85.0, 96.0], "expected": 96.00001670156132}, {"input": [85.0, 96.5], "expected": 96.50001013004228}, {"input": [85.0, 97.0], "expected": 97.00000614419348}, {"input": [85.0, 97.5], "expected": 97.50000372664623}, {"input": [85.0, 98.0], "expected": 98.00000226032685}, {"input": [85.0, 98.5], "expected": 98.50000137095815}, {"input": [85.0, 99.0], "expected": 99.00000083152837}, {"input": [85.0, 99.5], "expected": 99.50000050434754}, {"input": [85.5, -100.0], "expected": 85.5}, {"input": [85.5, -99.5], "expected": 85.5}, {"input": [85.5, -99.0], "expected": 85.5}, {"input": [85.5, -98.5], "expected": 85.5}, {"input": [85.5, -98.0], "expected": 85.5}, {"input": [85.5, -97.5], "expected": 85.5}, {"input": [85.5, -97.0], "expected": 85.5}, {"input": [85.5, -96.5], "expected": 85.5}, {"input": [85.5, -96.0], "expected": 85.5}, {"input": [85.5, -95.5], "expected": 85.5}, {"input": [85.5, -95.0], "expected": 85.5}, {"input": [85.5, -94.5], "expected": 85.5}, {"input": [85.5, -94.0], "expected": 85.5}, {"input": [85.5, -93.5], "expected": 85.5}, {"input": [85.5, -93.0], "expected": 85.5}, {"input": [85.5, -92.5], "expected": 85.5}, {"input": [85.5, -92.0], "expected": 85.5}, {"input": [85.5, -91.5], "expected": 85.5}, {"input": [85.5, -91.0], "expected": 85.5}, {"input": [85.5, -90.5], "expected": 85.5}, {"input": [85.5, -90.0], "expected": 85.5}, {"input": [85.5, -89.5], "expected": 85.5}, {"input": [85.5, -89.0], "expected": 85.5}, {"input": [85.5, -88.5], "expected": 85.5}, {"input": [85.5, -88.0], "expected": 85.5}, {"input": [85.5, -87.5], "expected": 85.5}, {"input": [85.5, -87.0], "expected": 85.5}, {"input": [85.5, -86.5], "expected": 85.5}, {"input": [85.5, -86.0], "expected": 85.5}, {"input": [85.5, -85.5], "expected": 85.5}, {"input": [85.5, -85.0], "expected": 85.5}, {"input": [85.5, -84.5], "expected": 85.5}, {"input": [85.5, -84.0], "expected": 85.5}, {"input": [85.5, -83.5], "expected": 85.5}, {"input": [85.5, -83.0], "expected": 85.5}, {"input": [85.5, -82.5], "expected": 85.5}, {"input": [85.5, -82.0], "expected": 85.5}, {"input": [85.5, -81.5], "expected": 85.5}, {"input": [85.5, -81.0], "expected": 85.5}, {"input": [85.5, -80.5], "expected": 85.5}, {"input": [85.5, -80.0], "expected": 85.5}, {"input": [85.5, -79.5], "expected": 85.5}, {"input": [85.5, -79.0], "expected": 85.5}, {"input": [85.5, -78.5], "expected": 85.5}, {"input": [85.5, -78.0], "expected": 85.5}, {"input": [85.5, -77.5], "expected": 85.5}, {"input": [85.5, -77.0], "expected": 85.5}, {"input": [85.5, -76.5], "expected": 85.5}, {"input": [85.5, -76.0], "expected": 85.5}, {"input": [85.5, -75.5], "expected": 85.5}, {"input": [85.5, -75.0], "expected": 85.5}, {"input": [85.5, -74.5], "expected": 85.5}, {"input": [85.5, -74.0], "expected": 85.5}, {"input": [85.5, -73.5], "expected": 85.5}, {"input": [85.5, -73.0], "expected": 85.5}, {"input": [85.5, -72.5], "expected": 85.5}, {"input": [85.5, -72.0], "expected": 85.5}, {"input": [85.5, -71.5], "expected": 85.5}, {"input": [85.5, -71.0], "expected": 85.5}, {"input": [85.5, -70.5], "expected": 85.5}, {"input": [85.5, -70.0], "expected": 85.5}, {"input": [85.5, -69.5], "expected": 85.5}, {"input": [85.5, -69.0], "expected": 85.5}, {"input": [85.5, -68.5], "expected": 85.5}, {"input": [85.5, -68.0], "expected": 85.5}, {"input": [85.5, -67.5], "expected": 85.5}, {"input": [85.5, -67.0], "expected": 85.5}, {"input": [85.5, -66.5], "expected": 85.5}, {"input": [85.5, -66.0], "expected": 85.5}, {"input": [85.5, -65.5], "expected": 85.5}, {"input": [85.5, -65.0], "expected": 85.5}, {"input": [85.5, -64.5], "expected": 85.5}, {"input": [85.5, -64.0], "expected": 85.5}, {"input": [85.5, -63.5], "expected": 85.5}, {"input": [85.5, -63.0], "expected": 85.5}, {"input": [85.5, -62.5], "expected": 85.5}, {"input": [85.5, -62.0], "expected": 85.5}, {"input": [85.5, -61.5], "expected": 85.5}, {"input": [85.5, -61.0], "expected": 85.5}, {"input": [85.5, -60.5], "expected": 85.5}, {"input": [85.5, -60.0], "expected": 85.5}, {"input": [85.5, -59.5], "expected": 85.5}, {"input": [85.5, -59.0], "expected": 85.5}, {"input": [85.5, -58.5], "expected": 85.5}, {"input": [85.5, -58.0], "expected": 85.5}, {"input": [85.5, -57.5], "expected": 85.5}, {"input": [85.5, -57.0], "expected": 85.5}, {"input": [85.5, -56.5], "expected": 85.5}, {"input": [85.5, -56.0], "expected": 85.5}, {"input": [85.5, -55.5], "expected": 85.5}, {"input": [85.5, -55.0], "expected": 85.5}, {"input": [85.5, -54.5], "expected": 85.5}, {"input": [85.5, -54.0], "expected": 85.5}, {"input": [85.5, -53.5], "expected": 85.5}, {"input": [85.5, -53.0], "expected": 85.5}, {"input": [85.5, -52.5], "expected": 85.5}, {"input": [85.5, -52.0], "expected": 85.5}, {"input": [85.5, -51.5], "expected": 85.5}, {"input": [85.5, -51.0], "expected": 85.5}, {"input": [85.5, -50.5], "expected": 85.5}, {"input": [85.5, -50.0], "expected": 85.5}, {"input": [85.5, -49.5], "expected": 85.5}, {"input": [85.5, -49.0], "expected": 85.5}, {"input": [85.5, -48.5], "expected": 85.5}, {"input": [85.5, -48.0], "expected": 85.5}, {"input": [85.5, -47.5], "expected": 85.5}, {"input": [85.5, -47.0], "expected": 85.5}, {"input": [85.5, -46.5], "expected": 85.5}, {"input": [85.5, -46.0], "expected": 85.5}, {"input": [85.5, -45.5], "expected": 85.5}, {"input": [85.5, -45.0], "expected": 85.5}, {"input": [85.5, -44.5], "expected": 85.5}, {"input": [85.5, -44.0], "expected": 85.5}, {"input": [85.5, -43.5], "expected": 85.5}, {"input": [85.5, -43.0], "expected": 85.5}, {"input": [85.5, -42.5], "expected": 85.5}, {"input": [85.5, -42.0], "expected": 85.5}, {"input": [85.5, -41.5], "expected": 85.5}, {"input": [85.5, -41.0], "expected": 85.5}, {"input": [85.5, -40.5], "expected": 85.5}, {"input": [85.5, -40.0], "expected": 85.5}, {"input": [85.5, -39.5], "expected": 85.5}, {"input": [85.5, -39.0], "expected": 85.5}, {"input": [85.5, -38.5], "expected": 85.5}, {"input": [85.5, -38.0], "expected": 85.5}, {"input": [85.5, -37.5], "expected": 85.5}, {"input": [85.5, -37.0], "expected": 85.5}, {"input": [85.5, -36.5], "expected": 85.5}, {"input": [85.5, -36.0], "expected": 85.5}, {"input": [85.5, -35.5], "expected": 85.5}, {"input": [85.5, -35.0], "expected": 85.5}, {"input": [85.5, -34.5], "expected": 85.5}, {"input": [85.5, -34.0], "expected": 85.5}, {"input": [85.5, -33.5], "expected": 85.5}, {"input": [85.5, -33.0], "expected": 85.5}, {"input": [85.5, -32.5], "expected": 85.5}, {"input": [85.5, -32.0], "expected": 85.5}, {"input": [85.5, -31.5], "expected": 85.5}, {"input": [85.5, -31.0], "expected": 85.5}, {"input": [85.5, -30.5], "expected": 85.5}, {"input": [85.5, -30.0], "expected": 85.5}, {"input": [85.5, -29.5], "expected": 85.5}, {"input": [85.5, -29.0], "expected": 85.5}, {"input": [85.5, -28.5], "expected": 85.5}, {"input": [85.5, -28.0], "expected": 85.5}, {"input": [85.5, -27.5], "expected": 85.5}, {"input": [85.5, -27.0], "expected": 85.5}, {"input": [85.5, -26.5], "expected": 85.5}, {"input": [85.5, -26.0], "expected": 85.5}, {"input": [85.5, -25.5], "expected": 85.5}, {"input": [85.5, -25.0], "expected": 85.5}, {"input": [85.5, -24.5], "expected": 85.5}, {"input": [85.5, -24.0], "expected": 85.5}, {"input": [85.5, -23.5], "expected": 85.5}, {"input": [85.5, -23.0], "expected": 85.5}, {"input": [85.5, -22.5], "expected": 85.5}, {"input": [85.5, -22.0], "expected": 85.5}, {"input": [85.5, -21.5], "expected": 85.5}, {"input": [85.5, -21.0], "expected": 85.5}, {"input": [85.5, -20.5], "expected": 85.5}, {"input": [85.5, -20.0], "expected": 85.5}, {"input": [85.5, -19.5], "expected": 85.5}, {"input": [85.5, -19.0], "expected": 85.5}, {"input": [85.5, -18.5], "expected": 85.5}, {"input": [85.5, -18.0], "expected": 85.5}, {"input": [85.5, -17.5], "expected": 85.5}, {"input": [85.5, -17.0], "expected": 85.5}, {"input": [85.5, -16.5], "expected": 85.5}, {"input": [85.5, -16.0], "expected": 85.5}, {"input": [85.5, -15.5], "expected": 85.5}, {"input": [85.5, -15.0], "expected": 85.5}, {"input": [85.5, -14.5], "expected": 85.5}, {"input": [85.5, -14.0], "expected": 85.5}, {"input": [85.5, -13.5], "expected": 85.5}, {"input": [85.5, -13.0], "expected": 85.5}, {"input": [85.5, -12.5], "expected": 85.5}, {"input": [85.5, -12.0], "expected": 85.5}, {"input": [85.5, -11.5], "expected": 85.5}, {"input": [85.5, -11.0], "expected": 85.5}, {"input": [85.5, -10.5], "expected": 85.5}, {"input": [85.5, -10.0], "expected": 85.5}, {"input": [85.5, -9.5], "expected": 85.5}, {"input": [85.5, -9.0], "expected": 85.5}, {"input": [85.5, -8.5], "expected": 85.5}, {"input": [85.5, -8.0], "expected": 85.5}, {"input": [85.5, -7.5], "expected": 85.5}, {"input": [85.5, -7.0], "expected": 85.5}, {"input": [85.5, -6.5], "expected": 85.5}, {"input": [85.5, -6.0], "expected": 85.5}, {"input": [85.5, -5.5], "expected": 85.5}, {"input": [85.5, -5.0], "expected": 85.5}, {"input": [85.5, -4.5], "expected": 85.5}, {"input": [85.5, -4.0], "expected": 85.5}, {"input": [85.5, -3.5], "expected": 85.5}, {"input": [85.5, -3.0], "expected": 85.5}, {"input": [85.5, -2.5], "expected": 85.5}, {"input": [85.5, -2.0], "expected": 85.5}, {"input": [85.5, -1.5], "expected": 85.5}, {"input": [85.5, -1.0], "expected": 85.5}, {"input": [85.5, -0.5], "expected": 85.5}, {"input": [85.5, 0.0], "expected": 85.5}, {"input": [85.5, 0.5], "expected": 85.5}, {"input": [85.5, 1.0], "expected": 85.5}, {"input": [85.5, 1.5], "expected": 85.5}, {"input": [85.5, 2.0], "expected": 85.5}, {"input": [85.5, 2.5], "expected": 85.5}, {"input": [85.5, 3.0], "expected": 85.5}, {"input": [85.5, 3.5], "expected": 85.5}, {"input": [85.5, 4.0], "expected": 85.5}, {"input": [85.5, 4.5], "expected": 85.5}, {"input": [85.5, 5.0], "expected": 85.5}, {"input": [85.5, 5.5], "expected": 85.5}, {"input": [85.5, 6.0], "expected": 85.5}, {"input": [85.5, 6.5], "expected": 85.5}, {"input": [85.5, 7.0], "expected": 85.5}, {"input": [85.5, 7.5], "expected": 85.5}, {"input": [85.5, 8.0], "expected": 85.5}, {"input": [85.5, 8.5], "expected": 85.5}, {"input": [85.5, 9.0], "expected": 85.5}, {"input": [85.5, 9.5], "expected": 85.5}, {"input": [85.5, 10.0], "expected": 85.5}, {"input": [85.5, 10.5], "expected": 85.5}, {"input": [85.5, 11.0], "expected": 85.5}, {"input": [85.5, 11.5], "expected": 85.5}, {"input": [85.5, 12.0], "expected": 85.5}, {"input": [85.5, 12.5], "expected": 85.5}, {"input": [85.5, 13.0], "expected": 85.5}, {"input": [85.5, 13.5], "expected": 85.5}, {"input": [85.5, 14.0], "expected": 85.5}, {"input": [85.5, 14.5], "expected": 85.5}, {"input": [85.5, 15.0], "expected": 85.5}, {"input": [85.5, 15.5], "expected": 85.5}, {"input": [85.5, 16.0], "expected": 85.5}, {"input": [85.5, 16.5], "expected": 85.5}, {"input": [85.5, 17.0], "expected": 85.5}, {"input": [85.5, 17.5], "expected": 85.5}, {"input": [85.5, 18.0], "expected": 85.5}, {"input": [85.5, 18.5], "expected": 85.5}, {"input": [85.5, 19.0], "expected": 85.5}, {"input": [85.5, 19.5], "expected": 85.5}, {"input": [85.5, 20.0], "expected": 85.5}, {"input": [85.5, 20.5], "expected": 85.5}, {"input": [85.5, 21.0], "expected": 85.5}, {"input": [85.5, 21.5], "expected": 85.5}, {"input": [85.5, 22.0], "expected": 85.5}, {"input": [85.5, 22.5], "expected": 85.5}, {"input": [85.5, 23.0], "expected": 85.5}, {"input": [85.5, 23.5], "expected": 85.5}, {"input": [85.5, 24.0], "expected": 85.5}, {"input": [85.5, 24.5], "expected": 85.5}, {"input": [85.5, 25.0], "expected": 85.5}, {"input": [85.5, 25.5], "expected": 85.5}, {"input": [85.5, 26.0], "expected": 85.5}, {"input": [85.5, 26.5], "expected": 85.5}, {"input": [85.5, 27.0], "expected": 85.5}, {"input": [85.5, 27.5], "expected": 85.5}, {"input": [85.5, 28.0], "expected": 85.5}, {"input": [85.5, 28.5], "expected": 85.5}, {"input": [85.5, 29.0], "expected": 85.5}, {"input": [85.5, 29.5], "expected": 85.5}, {"input": [85.5, 30.0], "expected": 85.5}, {"input": [85.5, 30.5], "expected": 85.5}, {"input": [85.5, 31.0], "expected": 85.5}, {"input": [85.5, 31.5], "expected": 85.5}, {"input": [85.5, 32.0], "expected": 85.5}, {"input": [85.5, 32.5], "expected": 85.5}, {"input": [85.5, 33.0], "expected": 85.5}, {"input": [85.5, 33.5], "expected": 85.5}, {"input": [85.5, 34.0], "expected": 85.5}, {"input": [85.5, 34.5], "expected": 85.5}, {"input": [85.5, 35.0], "expected": 85.5}, {"input": [85.5, 35.5], "expected": 85.5}, {"input": [85.5, 36.0], "expected": 85.5}, {"input": [85.5, 36.5], "expected": 85.5}, {"input": [85.5, 37.0], "expected": 85.5}, {"input": [85.5, 37.5], "expected": 85.5}, {"input": [85.5, 38.0], "expected": 85.5}, {"input": [85.5, 38.5], "expected": 85.5}, {"input": [85.5, 39.0], "expected": 85.5}, {"input": [85.5, 39.5], "expected": 85.5}, {"input": [85.5, 40.0], "expected": 85.5}, {"input": [85.5, 40.5], "expected": 85.5}, {"input": [85.5, 41.0], "expected": 85.5}, {"input": [85.5, 41.5], "expected": 85.5}, {"input": [85.5, 42.0], "expected": 85.5}, {"input": [85.5, 42.5], "expected": 85.5}, {"input": [85.5, 43.0], "expected": 85.5}, {"input": [85.5, 43.5], "expected": 85.5}, {"input": [85.5, 44.0], "expected": 85.5}, {"input": [85.5, 44.5], "expected": 85.5}, {"input": [85.5, 45.0], "expected": 85.5}, {"input": [85.5, 45.5], "expected": 85.5}, {"input": [85.5, 46.0], "expected": 85.5}, {"input": [85.5, 46.5], "expected": 85.5}, {"input": [85.5, 47.0], "expected": 85.5}, {"input": [85.5, 47.5], "expected": 85.5}, {"input": [85.5, 48.0], "expected": 85.5}, {"input": [85.5, 48.5], "expected": 85.5}, {"input": [85.5, 49.0], "expected": 85.5}, {"input": [85.5, 49.5], "expected": 85.5}, {"input": [85.5, 50.0], "expected": 85.5}, {"input": [85.5, 50.5], "expected": 85.5}, {"input": [85.5, 51.0], "expected": 85.5}, {"input": [85.5, 51.5], "expected": 85.5}, {"input": [85.5, 52.0], "expected": 85.5}, {"input": [85.5, 52.5], "expected": 85.5}, {"input": [85.5, 53.0], "expected": 85.50000000000001}, {"input": [85.5, 53.5], "expected": 85.50000000000001}, {"input": [85.5, 54.0], "expected": 85.50000000000001}, {"input": [85.5, 54.5], "expected": 85.50000000000003}, {"input": [85.5, 55.0], "expected": 85.50000000000006}, {"input": [85.5, 55.5], "expected": 85.5000000000001}, {"input": [85.5, 56.0], "expected": 85.50000000000016}, {"input": [85.5, 56.5], "expected": 85.50000000000026}, {"input": [85.5, 57.0], "expected": 85.50000000000043}, {"input": [85.5, 57.5], "expected": 85.5000000000007}, {"input": [85.5, 58.0], "expected": 85.50000000000114}, {"input": [85.5, 58.5], "expected": 85.50000000000188}, {"input": [85.5, 59.0], "expected": 85.5000000000031}, {"input": [85.5, 59.5], "expected": 85.50000000000512}, {"input": [85.5, 60.0], "expected": 85.50000000000843}, {"input": [85.5, 60.5], "expected": 85.50000000001388}, {"input": [85.5, 61.0], "expected": 85.5000000000229}, {"input": [85.5, 61.5], "expected": 85.50000000003776}, {"input": [85.5, 62.0], "expected": 85.50000000006224}, {"input": [85.5, 62.5], "expected": 85.50000000010262}, {"input": [85.5, 63.0], "expected": 85.5000000001692}, {"input": [85.5, 63.5], "expected": 85.50000000027894}, {"input": [85.5, 64.0], "expected": 85.5000000004599}, {"input": [85.5, 64.5], "expected": 85.50000000075826}, {"input": [85.5, 65.0], "expected": 85.50000000125016}, {"input": [85.5, 65.5], "expected": 85.50000000206116}, {"input": [85.5, 66.0], "expected": 85.50000000339827}, {"input": [85.5, 66.5], "expected": 85.5000000056028}, {"input": [85.5, 67.0], "expected": 85.50000000923745}, {"input": [85.5, 67.5], "expected": 85.50000001522999}, {"input": [85.5, 68.0], "expected": 85.50000002511}, {"input": [85.5, 68.5], "expected": 85.50000004139937}, {"input": [85.5, 69.0], "expected": 85.50000006825603}, {"input": [85.5, 69.5], "expected": 85.50000011253516}, {"input": [85.5, 70.0], "expected": 85.50000018553912}, {"input": [85.5, 70.5], "expected": 85.50000030590228}, {"input": [85.5, 71.0], "expected": 85.50000050434754}, {"input": [85.5, 71.5], "expected": 85.50000083152837}, {"input": [85.5, 72.0], "expected": 85.50000137095815}, {"input": [85.5, 72.5], "expected": 85.50000226032685}, {"input": [85.5, 73.0], "expected": 85.50000372664623}, {"input": [85.5, 73.5], "expected": 85.50000614419348}, {"input": [85.5, 74.0], "expected": 85.50001013004228}, {"input": [85.5, 74.5], "expected": 85.50001670156132}, {"input": [85.5, 75.0], "expected": 85.50002753607023}, {"input": [85.5, 75.5], "expected": 85.50004539889922}, {"input": [85.5, 76.0], "expected": 85.50007484902864}, {"input": [85.5, 76.5], "expected": 85.50012340218973}, {"input": [85.5, 77.0], "expected": 85.50020344767213}, {"input": [85.5, 77.5], "expected": 85.5003354063729}, {"input": [85.5, 78.0], "expected": 85.50055293147535}, {"input": [85.5, 78.5], "expected": 85.50091146645377}, {"input": [85.5, 79.0], "expected": 85.50150231015975}, {"input": [85.5, 79.5], "expected": 85.50247568513772}, {"input": [85.5, 80.0], "expected": 85.50407844327057}, {"input": [85.5, 80.5], "expected": 85.50671534848912}, {"input": [85.5, 81.0], "expected": 85.5110477448486}, {"input": [85.5, 81.5], "expected": 85.5181499279178}, {"input": [85.5, 82.0], "expected": 85.52975041827263}, {"input": [85.5, 82.5], "expected": 85.54858735157374}, {"input": [85.5, 83.0], "expected": 85.57888973429255}, {"input": [85.5, 83.5], "expected": 85.62692801104298}, {"input": [85.5, 84.0], "expected": 85.70141327798275}, {"input": [85.5, 84.5], "expected": 85.81326168751822}, {"input": [85.5, 85.0], "expected": 85.9740769841801}, {"input": [85.5, 85.5], "expected": 86.19314718055995}, {"input": [85.5, 86.0], "expected": 86.4740769841801}, {"input": [85.5, 86.5], "expected": 86.81326168751822}, {"input": [85.5, 87.0], "expected": 87.20141327798275}, {"input": [85.5, 87.5], "expected": 87.62692801104298}, {"input": [85.5, 88.0], "expected": 88.07888973429255}, {"input": [85.5, 88.5], "expected": 88.54858735157374}, {"input": [85.5, 89.0], "expected": 89.02975041827263}, {"input": [85.5, 89.5], "expected": 89.5181499279178}, {"input": [85.5, 90.0], "expected": 90.0110477448486}, {"input": [85.5, 90.5], "expected": 90.50671534848912}, {"input": [85.5, 91.0], "expected": 91.00407844327057}, {"input": [85.5, 91.5], "expected": 91.50247568513772}, {"input": [85.5, 92.0], "expected": 92.00150231015975}, {"input": [85.5, 92.5], "expected": 92.50091146645377}, {"input": [85.5, 93.0], "expected": 93.00055293147535}, {"input": [85.5, 93.5], "expected": 93.5003354063729}, {"input": [85.5, 94.0], "expected": 94.00020344767213}, {"input": [85.5, 94.5], "expected": 94.50012340218973}, {"input": [85.5, 95.0], "expected": 95.00007484902864}, {"input": [85.5, 95.5], "expected": 95.50004539889922}, {"input": [85.5, 96.0], "expected": 96.00002753607023}, {"input": [85.5, 96.5], "expected": 96.50001670156132}, {"input": [85.5, 97.0], "expected": 97.00001013004228}, {"input": [85.5, 97.5], "expected": 97.50000614419348}, {"input": [85.5, 98.0], "expected": 98.00000372664623}, {"input": [85.5, 98.5], "expected": 98.50000226032685}, {"input": [85.5, 99.0], "expected": 99.00000137095815}, {"input": [85.5, 99.5], "expected": 99.50000083152837}, {"input": [86.0, -100.0], "expected": 86.0}, {"input": [86.0, -99.5], "expected": 86.0}, {"input": [86.0, -99.0], "expected": 86.0}, {"input": [86.0, -98.5], "expected": 86.0}, {"input": [86.0, -98.0], "expected": 86.0}, {"input": [86.0, -97.5], "expected": 86.0}, {"input": [86.0, -97.0], "expected": 86.0}, {"input": [86.0, -96.5], "expected": 86.0}, {"input": [86.0, -96.0], "expected": 86.0}, {"input": [86.0, -95.5], "expected": 86.0}, {"input": [86.0, -95.0], "expected": 86.0}, {"input": [86.0, -94.5], "expected": 86.0}, {"input": [86.0, -94.0], "expected": 86.0}, {"input": [86.0, -93.5], "expected": 86.0}, {"input": [86.0, -93.0], "expected": 86.0}, {"input": [86.0, -92.5], "expected": 86.0}, {"input": [86.0, -92.0], "expected": 86.0}, {"input": [86.0, -91.5], "expected": 86.0}, {"input": [86.0, -91.0], "expected": 86.0}, {"input": [86.0, -90.5], "expected": 86.0}, {"input": [86.0, -90.0], "expected": 86.0}, {"input": [86.0, -89.5], "expected": 86.0}, {"input": [86.0, -89.0], "expected": 86.0}, {"input": [86.0, -88.5], "expected": 86.0}, {"input": [86.0, -88.0], "expected": 86.0}, {"input": [86.0, -87.5], "expected": 86.0}, {"input": [86.0, -87.0], "expected": 86.0}, {"input": [86.0, -86.5], "expected": 86.0}, {"input": [86.0, -86.0], "expected": 86.0}, {"input": [86.0, -85.5], "expected": 86.0}, {"input": [86.0, -85.0], "expected": 86.0}, {"input": [86.0, -84.5], "expected": 86.0}, {"input": [86.0, -84.0], "expected": 86.0}, {"input": [86.0, -83.5], "expected": 86.0}, {"input": [86.0, -83.0], "expected": 86.0}, {"input": [86.0, -82.5], "expected": 86.0}, {"input": [86.0, -82.0], "expected": 86.0}, {"input": [86.0, -81.5], "expected": 86.0}, {"input": [86.0, -81.0], "expected": 86.0}, {"input": [86.0, -80.5], "expected": 86.0}, {"input": [86.0, -80.0], "expected": 86.0}, {"input": [86.0, -79.5], "expected": 86.0}, {"input": [86.0, -79.0], "expected": 86.0}, {"input": [86.0, -78.5], "expected": 86.0}, {"input": [86.0, -78.0], "expected": 86.0}, {"input": [86.0, -77.5], "expected": 86.0}, {"input": [86.0, -77.0], "expected": 86.0}, {"input": [86.0, -76.5], "expected": 86.0}, {"input": [86.0, -76.0], "expected": 86.0}, {"input": [86.0, -75.5], "expected": 86.0}, {"input": [86.0, -75.0], "expected": 86.0}, {"input": [86.0, -74.5], "expected": 86.0}, {"input": [86.0, -74.0], "expected": 86.0}, {"input": [86.0, -73.5], "expected": 86.0}, {"input": [86.0, -73.0], "expected": 86.0}, {"input": [86.0, -72.5], "expected": 86.0}, {"input": [86.0, -72.0], "expected": 86.0}, {"input": [86.0, -71.5], "expected": 86.0}, {"input": [86.0, -71.0], "expected": 86.0}, {"input": [86.0, -70.5], "expected": 86.0}, {"input": [86.0, -70.0], "expected": 86.0}, {"input": [86.0, -69.5], "expected": 86.0}, {"input": [86.0, -69.0], "expected": 86.0}, {"input": [86.0, -68.5], "expected": 86.0}, {"input": [86.0, -68.0], "expected": 86.0}, {"input": [86.0, -67.5], "expected": 86.0}, {"input": [86.0, -67.0], "expected": 86.0}, {"input": [86.0, -66.5], "expected": 86.0}, {"input": [86.0, -66.0], "expected": 86.0}, {"input": [86.0, -65.5], "expected": 86.0}, {"input": [86.0, -65.0], "expected": 86.0}, {"input": [86.0, -64.5], "expected": 86.0}, {"input": [86.0, -64.0], "expected": 86.0}, {"input": [86.0, -63.5], "expected": 86.0}, {"input": [86.0, -63.0], "expected": 86.0}, {"input": [86.0, -62.5], "expected": 86.0}, {"input": [86.0, -62.0], "expected": 86.0}, {"input": [86.0, -61.5], "expected": 86.0}, {"input": [86.0, -61.0], "expected": 86.0}, {"input": [86.0, -60.5], "expected": 86.0}, {"input": [86.0, -60.0], "expected": 86.0}, {"input": [86.0, -59.5], "expected": 86.0}, {"input": [86.0, -59.0], "expected": 86.0}, {"input": [86.0, -58.5], "expected": 86.0}, {"input": [86.0, -58.0], "expected": 86.0}, {"input": [86.0, -57.5], "expected": 86.0}, {"input": [86.0, -57.0], "expected": 86.0}, {"input": [86.0, -56.5], "expected": 86.0}, {"input": [86.0, -56.0], "expected": 86.0}, {"input": [86.0, -55.5], "expected": 86.0}, {"input": [86.0, -55.0], "expected": 86.0}, {"input": [86.0, -54.5], "expected": 86.0}, {"input": [86.0, -54.0], "expected": 86.0}, {"input": [86.0, -53.5], "expected": 86.0}, {"input": [86.0, -53.0], "expected": 86.0}, {"input": [86.0, -52.5], "expected": 86.0}, {"input": [86.0, -52.0], "expected": 86.0}, {"input": [86.0, -51.5], "expected": 86.0}, {"input": [86.0, -51.0], "expected": 86.0}, {"input": [86.0, -50.5], "expected": 86.0}, {"input": [86.0, -50.0], "expected": 86.0}, {"input": [86.0, -49.5], "expected": 86.0}, {"input": [86.0, -49.0], "expected": 86.0}, {"input": [86.0, -48.5], "expected": 86.0}, {"input": [86.0, -48.0], "expected": 86.0}, {"input": [86.0, -47.5], "expected": 86.0}, {"input": [86.0, -47.0], "expected": 86.0}, {"input": [86.0, -46.5], "expected": 86.0}, {"input": [86.0, -46.0], "expected": 86.0}, {"input": [86.0, -45.5], "expected": 86.0}, {"input": [86.0, -45.0], "expected": 86.0}, {"input": [86.0, -44.5], "expected": 86.0}, {"input": [86.0, -44.0], "expected": 86.0}, {"input": [86.0, -43.5], "expected": 86.0}, {"input": [86.0, -43.0], "expected": 86.0}, {"input": [86.0, -42.5], "expected": 86.0}, {"input": [86.0, -42.0], "expected": 86.0}, {"input": [86.0, -41.5], "expected": 86.0}, {"input": [86.0, -41.0], "expected": 86.0}, {"input": [86.0, -40.5], "expected": 86.0}, {"input": [86.0, -40.0], "expected": 86.0}, {"input": [86.0, -39.5], "expected": 86.0}, {"input": [86.0, -39.0], "expected": 86.0}, {"input": [86.0, -38.5], "expected": 86.0}, {"input": [86.0, -38.0], "expected": 86.0}, {"input": [86.0, -37.5], "expected": 86.0}, {"input": [86.0, -37.0], "expected": 86.0}, {"input": [86.0, -36.5], "expected": 86.0}, {"input": [86.0, -36.0], "expected": 86.0}, {"input": [86.0, -35.5], "expected": 86.0}, {"input": [86.0, -35.0], "expected": 86.0}, {"input": [86.0, -34.5], "expected": 86.0}, {"input": [86.0, -34.0], "expected": 86.0}, {"input": [86.0, -33.5], "expected": 86.0}, {"input": [86.0, -33.0], "expected": 86.0}, {"input": [86.0, -32.5], "expected": 86.0}, {"input": [86.0, -32.0], "expected": 86.0}, {"input": [86.0, -31.5], "expected": 86.0}, {"input": [86.0, -31.0], "expected": 86.0}, {"input": [86.0, -30.5], "expected": 86.0}, {"input": [86.0, -30.0], "expected": 86.0}, {"input": [86.0, -29.5], "expected": 86.0}, {"input": [86.0, -29.0], "expected": 86.0}, {"input": [86.0, -28.5], "expected": 86.0}, {"input": [86.0, -28.0], "expected": 86.0}, {"input": [86.0, -27.5], "expected": 86.0}, {"input": [86.0, -27.0], "expected": 86.0}, {"input": [86.0, -26.5], "expected": 86.0}, {"input": [86.0, -26.0], "expected": 86.0}, {"input": [86.0, -25.5], "expected": 86.0}, {"input": [86.0, -25.0], "expected": 86.0}, {"input": [86.0, -24.5], "expected": 86.0}, {"input": [86.0, -24.0], "expected": 86.0}, {"input": [86.0, -23.5], "expected": 86.0}, {"input": [86.0, -23.0], "expected": 86.0}, {"input": [86.0, -22.5], "expected": 86.0}, {"input": [86.0, -22.0], "expected": 86.0}, {"input": [86.0, -21.5], "expected": 86.0}, {"input": [86.0, -21.0], "expected": 86.0}, {"input": [86.0, -20.5], "expected": 86.0}, {"input": [86.0, -20.0], "expected": 86.0}, {"input": [86.0, -19.5], "expected": 86.0}, {"input": [86.0, -19.0], "expected": 86.0}, {"input": [86.0, -18.5], "expected": 86.0}, {"input": [86.0, -18.0], "expected": 86.0}, {"input": [86.0, -17.5], "expected": 86.0}, {"input": [86.0, -17.0], "expected": 86.0}, {"input": [86.0, -16.5], "expected": 86.0}, {"input": [86.0, -16.0], "expected": 86.0}, {"input": [86.0, -15.5], "expected": 86.0}, {"input": [86.0, -15.0], "expected": 86.0}, {"input": [86.0, -14.5], "expected": 86.0}, {"input": [86.0, -14.0], "expected": 86.0}, {"input": [86.0, -13.5], "expected": 86.0}, {"input": [86.0, -13.0], "expected": 86.0}, {"input": [86.0, -12.5], "expected": 86.0}, {"input": [86.0, -12.0], "expected": 86.0}, {"input": [86.0, -11.5], "expected": 86.0}, {"input": [86.0, -11.0], "expected": 86.0}, {"input": [86.0, -10.5], "expected": 86.0}, {"input": [86.0, -10.0], "expected": 86.0}, {"input": [86.0, -9.5], "expected": 86.0}, {"input": [86.0, -9.0], "expected": 86.0}, {"input": [86.0, -8.5], "expected": 86.0}, {"input": [86.0, -8.0], "expected": 86.0}, {"input": [86.0, -7.5], "expected": 86.0}, {"input": [86.0, -7.0], "expected": 86.0}, {"input": [86.0, -6.5], "expected": 86.0}, {"input": [86.0, -6.0], "expected": 86.0}, {"input": [86.0, -5.5], "expected": 86.0}, {"input": [86.0, -5.0], "expected": 86.0}, {"input": [86.0, -4.5], "expected": 86.0}, {"input": [86.0, -4.0], "expected": 86.0}, {"input": [86.0, -3.5], "expected": 86.0}, {"input": [86.0, -3.0], "expected": 86.0}, {"input": [86.0, -2.5], "expected": 86.0}, {"input": [86.0, -2.0], "expected": 86.0}, {"input": [86.0, -1.5], "expected": 86.0}, {"input": [86.0, -1.0], "expected": 86.0}, {"input": [86.0, -0.5], "expected": 86.0}, {"input": [86.0, 0.0], "expected": 86.0}, {"input": [86.0, 0.5], "expected": 86.0}, {"input": [86.0, 1.0], "expected": 86.0}, {"input": [86.0, 1.5], "expected": 86.0}, {"input": [86.0, 2.0], "expected": 86.0}, {"input": [86.0, 2.5], "expected": 86.0}, {"input": [86.0, 3.0], "expected": 86.0}, {"input": [86.0, 3.5], "expected": 86.0}, {"input": [86.0, 4.0], "expected": 86.0}, {"input": [86.0, 4.5], "expected": 86.0}, {"input": [86.0, 5.0], "expected": 86.0}, {"input": [86.0, 5.5], "expected": 86.0}, {"input": [86.0, 6.0], "expected": 86.0}, {"input": [86.0, 6.5], "expected": 86.0}, {"input": [86.0, 7.0], "expected": 86.0}, {"input": [86.0, 7.5], "expected": 86.0}, {"input": [86.0, 8.0], "expected": 86.0}, {"input": [86.0, 8.5], "expected": 86.0}, {"input": [86.0, 9.0], "expected": 86.0}, {"input": [86.0, 9.5], "expected": 86.0}, {"input": [86.0, 10.0], "expected": 86.0}, {"input": [86.0, 10.5], "expected": 86.0}, {"input": [86.0, 11.0], "expected": 86.0}, {"input": [86.0, 11.5], "expected": 86.0}, {"input": [86.0, 12.0], "expected": 86.0}, {"input": [86.0, 12.5], "expected": 86.0}, {"input": [86.0, 13.0], "expected": 86.0}, {"input": [86.0, 13.5], "expected": 86.0}, {"input": [86.0, 14.0], "expected": 86.0}, {"input": [86.0, 14.5], "expected": 86.0}, {"input": [86.0, 15.0], "expected": 86.0}, {"input": [86.0, 15.5], "expected": 86.0}, {"input": [86.0, 16.0], "expected": 86.0}, {"input": [86.0, 16.5], "expected": 86.0}, {"input": [86.0, 17.0], "expected": 86.0}, {"input": [86.0, 17.5], "expected": 86.0}, {"input": [86.0, 18.0], "expected": 86.0}, {"input": [86.0, 18.5], "expected": 86.0}, {"input": [86.0, 19.0], "expected": 86.0}, {"input": [86.0, 19.5], "expected": 86.0}, {"input": [86.0, 20.0], "expected": 86.0}, {"input": [86.0, 20.5], "expected": 86.0}, {"input": [86.0, 21.0], "expected": 86.0}, {"input": [86.0, 21.5], "expected": 86.0}, {"input": [86.0, 22.0], "expected": 86.0}, {"input": [86.0, 22.5], "expected": 86.0}, {"input": [86.0, 23.0], "expected": 86.0}, {"input": [86.0, 23.5], "expected": 86.0}, {"input": [86.0, 24.0], "expected": 86.0}, {"input": [86.0, 24.5], "expected": 86.0}, {"input": [86.0, 25.0], "expected": 86.0}, {"input": [86.0, 25.5], "expected": 86.0}, {"input": [86.0, 26.0], "expected": 86.0}, {"input": [86.0, 26.5], "expected": 86.0}, {"input": [86.0, 27.0], "expected": 86.0}, {"input": [86.0, 27.5], "expected": 86.0}, {"input": [86.0, 28.0], "expected": 86.0}, {"input": [86.0, 28.5], "expected": 86.0}, {"input": [86.0, 29.0], "expected": 86.0}, {"input": [86.0, 29.5], "expected": 86.0}, {"input": [86.0, 30.0], "expected": 86.0}, {"input": [86.0, 30.5], "expected": 86.0}, {"input": [86.0, 31.0], "expected": 86.0}, {"input": [86.0, 31.5], "expected": 86.0}, {"input": [86.0, 32.0], "expected": 86.0}, {"input": [86.0, 32.5], "expected": 86.0}, {"input": [86.0, 33.0], "expected": 86.0}, {"input": [86.0, 33.5], "expected": 86.0}, {"input": [86.0, 34.0], "expected": 86.0}, {"input": [86.0, 34.5], "expected": 86.0}, {"input": [86.0, 35.0], "expected": 86.0}, {"input": [86.0, 35.5], "expected": 86.0}, {"input": [86.0, 36.0], "expected": 86.0}, {"input": [86.0, 36.5], "expected": 86.0}, {"input": [86.0, 37.0], "expected": 86.0}, {"input": [86.0, 37.5], "expected": 86.0}, {"input": [86.0, 38.0], "expected": 86.0}, {"input": [86.0, 38.5], "expected": 86.0}, {"input": [86.0, 39.0], "expected": 86.0}, {"input": [86.0, 39.5], "expected": 86.0}, {"input": [86.0, 40.0], "expected": 86.0}, {"input": [86.0, 40.5], "expected": 86.0}, {"input": [86.0, 41.0], "expected": 86.0}, {"input": [86.0, 41.5], "expected": 86.0}, {"input": [86.0, 42.0], "expected": 86.0}, {"input": [86.0, 42.5], "expected": 86.0}, {"input": [86.0, 43.0], "expected": 86.0}, {"input": [86.0, 43.5], "expected": 86.0}, {"input": [86.0, 44.0], "expected": 86.0}, {"input": [86.0, 44.5], "expected": 86.0}, {"input": [86.0, 45.0], "expected": 86.0}, {"input": [86.0, 45.5], "expected": 86.0}, {"input": [86.0, 46.0], "expected": 86.0}, {"input": [86.0, 46.5], "expected": 86.0}, {"input": [86.0, 47.0], "expected": 86.0}, {"input": [86.0, 47.5], "expected": 86.0}, {"input": [86.0, 48.0], "expected": 86.0}, {"input": [86.0, 48.5], "expected": 86.0}, {"input": [86.0, 49.0], "expected": 86.0}, {"input": [86.0, 49.5], "expected": 86.0}, {"input": [86.0, 50.0], "expected": 86.0}, {"input": [86.0, 50.5], "expected": 86.0}, {"input": [86.0, 51.0], "expected": 86.0}, {"input": [86.0, 51.5], "expected": 86.0}, {"input": [86.0, 52.0], "expected": 86.0}, {"input": [86.0, 52.5], "expected": 86.0}, {"input": [86.0, 53.0], "expected": 86.0}, {"input": [86.0, 53.5], "expected": 86.00000000000001}, {"input": [86.0, 54.0], "expected": 86.00000000000001}, {"input": [86.0, 54.5], "expected": 86.00000000000001}, {"input": [86.0, 55.0], "expected": 86.00000000000003}, {"input": [86.0, 55.5], "expected": 86.00000000000006}, {"input": [86.0, 56.0], "expected": 86.0000000000001}, {"input": [86.0, 56.5], "expected": 86.00000000000016}, {"input": [86.0, 57.0], "expected": 86.00000000000026}, {"input": [86.0, 57.5], "expected": 86.00000000000043}, {"input": [86.0, 58.0], "expected": 86.0000000000007}, {"input": [86.0, 58.5], "expected": 86.00000000000114}, {"input": [86.0, 59.0], "expected": 86.00000000000188}, {"input": [86.0, 59.5], "expected": 86.0000000000031}, {"input": [86.0, 60.0], "expected": 86.00000000000512}, {"input": [86.0, 60.5], "expected": 86.00000000000843}, {"input": [86.0, 61.0], "expected": 86.00000000001388}, {"input": [86.0, 61.5], "expected": 86.0000000000229}, {"input": [86.0, 62.0], "expected": 86.00000000003776}, {"input": [86.0, 62.5], "expected": 86.00000000006224}, {"input": [86.0, 63.0], "expected": 86.00000000010262}, {"input": [86.0, 63.5], "expected": 86.0000000001692}, {"input": [86.0, 64.0], "expected": 86.00000000027894}, {"input": [86.0, 64.5], "expected": 86.0000000004599}, {"input": [86.0, 65.0], "expected": 86.00000000075826}, {"input": [86.0, 65.5], "expected": 86.00000000125016}, {"input": [86.0, 66.0], "expected": 86.00000000206116}, {"input": [86.0, 66.5], "expected": 86.00000000339827}, {"input": [86.0, 67.0], "expected": 86.0000000056028}, {"input": [86.0, 67.5], "expected": 86.00000000923745}, {"input": [86.0, 68.0], "expected": 86.00000001522999}, {"input": [86.0, 68.5], "expected": 86.00000002511}, {"input": [86.0, 69.0], "expected": 86.00000004139937}, {"input": [86.0, 69.5], "expected": 86.00000006825603}, {"input": [86.0, 70.0], "expected": 86.00000011253516}, {"input": [86.0, 70.5], "expected": 86.00000018553912}, {"input": [86.0, 71.0], "expected": 86.00000030590228}, {"input": [86.0, 71.5], "expected": 86.00000050434754}, {"input": [86.0, 72.0], "expected": 86.00000083152837}, {"input": [86.0, 72.5], "expected": 86.00000137095815}, {"input": [86.0, 73.0], "expected": 86.00000226032685}, {"input": [86.0, 73.5], "expected": 86.00000372664623}, {"input": [86.0, 74.0], "expected": 86.00000614419348}, {"input": [86.0, 74.5], "expected": 86.00001013004228}, {"input": [86.0, 75.0], "expected": 86.00001670156132}, {"input": [86.0, 75.5], "expected": 86.00002753607023}, {"input": [86.0, 76.0], "expected": 86.00004539889922}, {"input": [86.0, 76.5], "expected": 86.00007484902864}, {"input": [86.0, 77.0], "expected": 86.00012340218973}, {"input": [86.0, 77.5], "expected": 86.00020344767213}, {"input": [86.0, 78.0], "expected": 86.0003354063729}, {"input": [86.0, 78.5], "expected": 86.00055293147535}, {"input": [86.0, 79.0], "expected": 86.00091146645377}, {"input": [86.0, 79.5], "expected": 86.00150231015975}, {"input": [86.0, 80.0], "expected": 86.00247568513772}, {"input": [86.0, 80.5], "expected": 86.00407844327057}, {"input": [86.0, 81.0], "expected": 86.00671534848912}, {"input": [86.0, 81.5], "expected": 86.0110477448486}, {"input": [86.0, 82.0], "expected": 86.0181499279178}, {"input": [86.0, 82.5], "expected": 86.02975041827263}, {"input": [86.0, 83.0], "expected": 86.04858735157374}, {"input": [86.0, 83.5], "expected": 86.07888973429255}, {"input": [86.0, 84.0], "expected": 86.12692801104298}, {"input": [86.0, 84.5], "expected": 86.20141327798275}, {"input": [86.0, 85.0], "expected": 86.31326168751822}, {"input": [86.0, 85.5], "expected": 86.4740769841801}, {"input": [86.0, 86.0], "expected": 86.69314718055995}, {"input": [86.0, 86.5], "expected": 86.9740769841801}, {"input": [86.0, 87.0], "expected": 87.31326168751822}, {"input": [86.0, 87.5], "expected": 87.70141327798275}, {"input": [86.0, 88.0], "expected": 88.12692801104298}, {"input": [86.0, 88.5], "expected": 88.57888973429255}, {"input": [86.0, 89.0], "expected": 89.04858735157374}, {"input": [86.0, 89.5], "expected": 89.52975041827263}, {"input": [86.0, 90.0], "expected": 90.0181499279178}, {"input": [86.0, 90.5], "expected": 90.5110477448486}, {"input": [86.0, 91.0], "expected": 91.00671534848912}, {"input": [86.0, 91.5], "expected": 91.50407844327057}, {"input": [86.0, 92.0], "expected": 92.00247568513772}, {"input": [86.0, 92.5], "expected": 92.50150231015975}, {"input": [86.0, 93.0], "expected": 93.00091146645377}, {"input": [86.0, 93.5], "expected": 93.50055293147535}, {"input": [86.0, 94.0], "expected": 94.0003354063729}, {"input": [86.0, 94.5], "expected": 94.50020344767213}, {"input": [86.0, 95.0], "expected": 95.00012340218973}, {"input": [86.0, 95.5], "expected": 95.50007484902864}, {"input": [86.0, 96.0], "expected": 96.00004539889922}, {"input": [86.0, 96.5], "expected": 96.50002753607023}, {"input": [86.0, 97.0], "expected": 97.00001670156132}, {"input": [86.0, 97.5], "expected": 97.50001013004228}, {"input": [86.0, 98.0], "expected": 98.00000614419348}, {"input": [86.0, 98.5], "expected": 98.50000372664623}, {"input": [86.0, 99.0], "expected": 99.00000226032685}, {"input": [86.0, 99.5], "expected": 99.50000137095815}, {"input": [86.5, -100.0], "expected": 86.5}, {"input": [86.5, -99.5], "expected": 86.5}, {"input": [86.5, -99.0], "expected": 86.5}, {"input": [86.5, -98.5], "expected": 86.5}, {"input": [86.5, -98.0], "expected": 86.5}, {"input": [86.5, -97.5], "expected": 86.5}, {"input": [86.5, -97.0], "expected": 86.5}, {"input": [86.5, -96.5], "expected": 86.5}, {"input": [86.5, -96.0], "expected": 86.5}, {"input": [86.5, -95.5], "expected": 86.5}, {"input": [86.5, -95.0], "expected": 86.5}, {"input": [86.5, -94.5], "expected": 86.5}, {"input": [86.5, -94.0], "expected": 86.5}, {"input": [86.5, -93.5], "expected": 86.5}, {"input": [86.5, -93.0], "expected": 86.5}, {"input": [86.5, -92.5], "expected": 86.5}, {"input": [86.5, -92.0], "expected": 86.5}, {"input": [86.5, -91.5], "expected": 86.5}, {"input": [86.5, -91.0], "expected": 86.5}, {"input": [86.5, -90.5], "expected": 86.5}, {"input": [86.5, -90.0], "expected": 86.5}, {"input": [86.5, -89.5], "expected": 86.5}, {"input": [86.5, -89.0], "expected": 86.5}, {"input": [86.5, -88.5], "expected": 86.5}, {"input": [86.5, -88.0], "expected": 86.5}, {"input": [86.5, -87.5], "expected": 86.5}, {"input": [86.5, -87.0], "expected": 86.5}, {"input": [86.5, -86.5], "expected": 86.5}, {"input": [86.5, -86.0], "expected": 86.5}, {"input": [86.5, -85.5], "expected": 86.5}, {"input": [86.5, -85.0], "expected": 86.5}, {"input": [86.5, -84.5], "expected": 86.5}, {"input": [86.5, -84.0], "expected": 86.5}, {"input": [86.5, -83.5], "expected": 86.5}, {"input": [86.5, -83.0], "expected": 86.5}, {"input": [86.5, -82.5], "expected": 86.5}, {"input": [86.5, -82.0], "expected": 86.5}, {"input": [86.5, -81.5], "expected": 86.5}, {"input": [86.5, -81.0], "expected": 86.5}, {"input": [86.5, -80.5], "expected": 86.5}, {"input": [86.5, -80.0], "expected": 86.5}, {"input": [86.5, -79.5], "expected": 86.5}, {"input": [86.5, -79.0], "expected": 86.5}, {"input": [86.5, -78.5], "expected": 86.5}, {"input": [86.5, -78.0], "expected": 86.5}, {"input": [86.5, -77.5], "expected": 86.5}, {"input": [86.5, -77.0], "expected": 86.5}, {"input": [86.5, -76.5], "expected": 86.5}, {"input": [86.5, -76.0], "expected": 86.5}, {"input": [86.5, -75.5], "expected": 86.5}, {"input": [86.5, -75.0], "expected": 86.5}, {"input": [86.5, -74.5], "expected": 86.5}, {"input": [86.5, -74.0], "expected": 86.5}, {"input": [86.5, -73.5], "expected": 86.5}, {"input": [86.5, -73.0], "expected": 86.5}, {"input": [86.5, -72.5], "expected": 86.5}, {"input": [86.5, -72.0], "expected": 86.5}, {"input": [86.5, -71.5], "expected": 86.5}, {"input": [86.5, -71.0], "expected": 86.5}, {"input": [86.5, -70.5], "expected": 86.5}, {"input": [86.5, -70.0], "expected": 86.5}, {"input": [86.5, -69.5], "expected": 86.5}, {"input": [86.5, -69.0], "expected": 86.5}, {"input": [86.5, -68.5], "expected": 86.5}, {"input": [86.5, -68.0], "expected": 86.5}, {"input": [86.5, -67.5], "expected": 86.5}, {"input": [86.5, -67.0], "expected": 86.5}, {"input": [86.5, -66.5], "expected": 86.5}, {"input": [86.5, -66.0], "expected": 86.5}, {"input": [86.5, -65.5], "expected": 86.5}, {"input": [86.5, -65.0], "expected": 86.5}, {"input": [86.5, -64.5], "expected": 86.5}, {"input": [86.5, -64.0], "expected": 86.5}, {"input": [86.5, -63.5], "expected": 86.5}, {"input": [86.5, -63.0], "expected": 86.5}, {"input": [86.5, -62.5], "expected": 86.5}, {"input": [86.5, -62.0], "expected": 86.5}, {"input": [86.5, -61.5], "expected": 86.5}, {"input": [86.5, -61.0], "expected": 86.5}, {"input": [86.5, -60.5], "expected": 86.5}, {"input": [86.5, -60.0], "expected": 86.5}, {"input": [86.5, -59.5], "expected": 86.5}, {"input": [86.5, -59.0], "expected": 86.5}, {"input": [86.5, -58.5], "expected": 86.5}, {"input": [86.5, -58.0], "expected": 86.5}, {"input": [86.5, -57.5], "expected": 86.5}, {"input": [86.5, -57.0], "expected": 86.5}, {"input": [86.5, -56.5], "expected": 86.5}, {"input": [86.5, -56.0], "expected": 86.5}, {"input": [86.5, -55.5], "expected": 86.5}, {"input": [86.5, -55.0], "expected": 86.5}, {"input": [86.5, -54.5], "expected": 86.5}, {"input": [86.5, -54.0], "expected": 86.5}, {"input": [86.5, -53.5], "expected": 86.5}, {"input": [86.5, -53.0], "expected": 86.5}, {"input": [86.5, -52.5], "expected": 86.5}, {"input": [86.5, -52.0], "expected": 86.5}, {"input": [86.5, -51.5], "expected": 86.5}, {"input": [86.5, -51.0], "expected": 86.5}, {"input": [86.5, -50.5], "expected": 86.5}, {"input": [86.5, -50.0], "expected": 86.5}, {"input": [86.5, -49.5], "expected": 86.5}, {"input": [86.5, -49.0], "expected": 86.5}, {"input": [86.5, -48.5], "expected": 86.5}, {"input": [86.5, -48.0], "expected": 86.5}, {"input": [86.5, -47.5], "expected": 86.5}, {"input": [86.5, -47.0], "expected": 86.5}, {"input": [86.5, -46.5], "expected": 86.5}, {"input": [86.5, -46.0], "expected": 86.5}, {"input": [86.5, -45.5], "expected": 86.5}, {"input": [86.5, -45.0], "expected": 86.5}, {"input": [86.5, -44.5], "expected": 86.5}, {"input": [86.5, -44.0], "expected": 86.5}, {"input": [86.5, -43.5], "expected": 86.5}, {"input": [86.5, -43.0], "expected": 86.5}, {"input": [86.5, -42.5], "expected": 86.5}, {"input": [86.5, -42.0], "expected": 86.5}, {"input": [86.5, -41.5], "expected": 86.5}, {"input": [86.5, -41.0], "expected": 86.5}, {"input": [86.5, -40.5], "expected": 86.5}, {"input": [86.5, -40.0], "expected": 86.5}, {"input": [86.5, -39.5], "expected": 86.5}, {"input": [86.5, -39.0], "expected": 86.5}, {"input": [86.5, -38.5], "expected": 86.5}, {"input": [86.5, -38.0], "expected": 86.5}, {"input": [86.5, -37.5], "expected": 86.5}, {"input": [86.5, -37.0], "expected": 86.5}, {"input": [86.5, -36.5], "expected": 86.5}, {"input": [86.5, -36.0], "expected": 86.5}, {"input": [86.5, -35.5], "expected": 86.5}, {"input": [86.5, -35.0], "expected": 86.5}, {"input": [86.5, -34.5], "expected": 86.5}, {"input": [86.5, -34.0], "expected": 86.5}, {"input": [86.5, -33.5], "expected": 86.5}, {"input": [86.5, -33.0], "expected": 86.5}, {"input": [86.5, -32.5], "expected": 86.5}, {"input": [86.5, -32.0], "expected": 86.5}, {"input": [86.5, -31.5], "expected": 86.5}, {"input": [86.5, -31.0], "expected": 86.5}, {"input": [86.5, -30.5], "expected": 86.5}, {"input": [86.5, -30.0], "expected": 86.5}, {"input": [86.5, -29.5], "expected": 86.5}, {"input": [86.5, -29.0], "expected": 86.5}, {"input": [86.5, -28.5], "expected": 86.5}, {"input": [86.5, -28.0], "expected": 86.5}, {"input": [86.5, -27.5], "expected": 86.5}, {"input": [86.5, -27.0], "expected": 86.5}, {"input": [86.5, -26.5], "expected": 86.5}, {"input": [86.5, -26.0], "expected": 86.5}, {"input": [86.5, -25.5], "expected": 86.5}, {"input": [86.5, -25.0], "expected": 86.5}, {"input": [86.5, -24.5], "expected": 86.5}, {"input": [86.5, -24.0], "expected": 86.5}, {"input": [86.5, -23.5], "expected": 86.5}, {"input": [86.5, -23.0], "expected": 86.5}, {"input": [86.5, -22.5], "expected": 86.5}, {"input": [86.5, -22.0], "expected": 86.5}, {"input": [86.5, -21.5], "expected": 86.5}, {"input": [86.5, -21.0], "expected": 86.5}, {"input": [86.5, -20.5], "expected": 86.5}, {"input": [86.5, -20.0], "expected": 86.5}, {"input": [86.5, -19.5], "expected": 86.5}, {"input": [86.5, -19.0], "expected": 86.5}, {"input": [86.5, -18.5], "expected": 86.5}, {"input": [86.5, -18.0], "expected": 86.5}, {"input": [86.5, -17.5], "expected": 86.5}, {"input": [86.5, -17.0], "expected": 86.5}, {"input": [86.5, -16.5], "expected": 86.5}, {"input": [86.5, -16.0], "expected": 86.5}, {"input": [86.5, -15.5], "expected": 86.5}, {"input": [86.5, -15.0], "expected": 86.5}, {"input": [86.5, -14.5], "expected": 86.5}, {"input": [86.5, -14.0], "expected": 86.5}, {"input": [86.5, -13.5], "expected": 86.5}, {"input": [86.5, -13.0], "expected": 86.5}, {"input": [86.5, -12.5], "expected": 86.5}, {"input": [86.5, -12.0], "expected": 86.5}, {"input": [86.5, -11.5], "expected": 86.5}, {"input": [86.5, -11.0], "expected": 86.5}, {"input": [86.5, -10.5], "expected": 86.5}, {"input": [86.5, -10.0], "expected": 86.5}, {"input": [86.5, -9.5], "expected": 86.5}, {"input": [86.5, -9.0], "expected": 86.5}, {"input": [86.5, -8.5], "expected": 86.5}, {"input": [86.5, -8.0], "expected": 86.5}, {"input": [86.5, -7.5], "expected": 86.5}, {"input": [86.5, -7.0], "expected": 86.5}, {"input": [86.5, -6.5], "expected": 86.5}, {"input": [86.5, -6.0], "expected": 86.5}, {"input": [86.5, -5.5], "expected": 86.5}, {"input": [86.5, -5.0], "expected": 86.5}, {"input": [86.5, -4.5], "expected": 86.5}, {"input": [86.5, -4.0], "expected": 86.5}, {"input": [86.5, -3.5], "expected": 86.5}, {"input": [86.5, -3.0], "expected": 86.5}, {"input": [86.5, -2.5], "expected": 86.5}, {"input": [86.5, -2.0], "expected": 86.5}, {"input": [86.5, -1.5], "expected": 86.5}, {"input": [86.5, -1.0], "expected": 86.5}, {"input": [86.5, -0.5], "expected": 86.5}, {"input": [86.5, 0.0], "expected": 86.5}, {"input": [86.5, 0.5], "expected": 86.5}, {"input": [86.5, 1.0], "expected": 86.5}, {"input": [86.5, 1.5], "expected": 86.5}, {"input": [86.5, 2.0], "expected": 86.5}, {"input": [86.5, 2.5], "expected": 86.5}, {"input": [86.5, 3.0], "expected": 86.5}, {"input": [86.5, 3.5], "expected": 86.5}, {"input": [86.5, 4.0], "expected": 86.5}, {"input": [86.5, 4.5], "expected": 86.5}, {"input": [86.5, 5.0], "expected": 86.5}, {"input": [86.5, 5.5], "expected": 86.5}, {"input": [86.5, 6.0], "expected": 86.5}, {"input": [86.5, 6.5], "expected": 86.5}, {"input": [86.5, 7.0], "expected": 86.5}, {"input": [86.5, 7.5], "expected": 86.5}, {"input": [86.5, 8.0], "expected": 86.5}, {"input": [86.5, 8.5], "expected": 86.5}, {"input": [86.5, 9.0], "expected": 86.5}, {"input": [86.5, 9.5], "expected": 86.5}, {"input": [86.5, 10.0], "expected": 86.5}, {"input": [86.5, 10.5], "expected": 86.5}, {"input": [86.5, 11.0], "expected": 86.5}, {"input": [86.5, 11.5], "expected": 86.5}, {"input": [86.5, 12.0], "expected": 86.5}, {"input": [86.5, 12.5], "expected": 86.5}, {"input": [86.5, 13.0], "expected": 86.5}, {"input": [86.5, 13.5], "expected": 86.5}, {"input": [86.5, 14.0], "expected": 86.5}, {"input": [86.5, 14.5], "expected": 86.5}, {"input": [86.5, 15.0], "expected": 86.5}, {"input": [86.5, 15.5], "expected": 86.5}, {"input": [86.5, 16.0], "expected": 86.5}, {"input": [86.5, 16.5], "expected": 86.5}, {"input": [86.5, 17.0], "expected": 86.5}, {"input": [86.5, 17.5], "expected": 86.5}, {"input": [86.5, 18.0], "expected": 86.5}, {"input": [86.5, 18.5], "expected": 86.5}, {"input": [86.5, 19.0], "expected": 86.5}, {"input": [86.5, 19.5], "expected": 86.5}, {"input": [86.5, 20.0], "expected": 86.5}, {"input": [86.5, 20.5], "expected": 86.5}, {"input": [86.5, 21.0], "expected": 86.5}, {"input": [86.5, 21.5], "expected": 86.5}, {"input": [86.5, 22.0], "expected": 86.5}, {"input": [86.5, 22.5], "expected": 86.5}, {"input": [86.5, 23.0], "expected": 86.5}, {"input": [86.5, 23.5], "expected": 86.5}, {"input": [86.5, 24.0], "expected": 86.5}, {"input": [86.5, 24.5], "expected": 86.5}, {"input": [86.5, 25.0], "expected": 86.5}, {"input": [86.5, 25.5], "expected": 86.5}, {"input": [86.5, 26.0], "expected": 86.5}, {"input": [86.5, 26.5], "expected": 86.5}, {"input": [86.5, 27.0], "expected": 86.5}, {"input": [86.5, 27.5], "expected": 86.5}, {"input": [86.5, 28.0], "expected": 86.5}, {"input": [86.5, 28.5], "expected": 86.5}, {"input": [86.5, 29.0], "expected": 86.5}, {"input": [86.5, 29.5], "expected": 86.5}, {"input": [86.5, 30.0], "expected": 86.5}, {"input": [86.5, 30.5], "expected": 86.5}, {"input": [86.5, 31.0], "expected": 86.5}, {"input": [86.5, 31.5], "expected": 86.5}, {"input": [86.5, 32.0], "expected": 86.5}, {"input": [86.5, 32.5], "expected": 86.5}, {"input": [86.5, 33.0], "expected": 86.5}, {"input": [86.5, 33.5], "expected": 86.5}, {"input": [86.5, 34.0], "expected": 86.5}, {"input": [86.5, 34.5], "expected": 86.5}, {"input": [86.5, 35.0], "expected": 86.5}, {"input": [86.5, 35.5], "expected": 86.5}, {"input": [86.5, 36.0], "expected": 86.5}, {"input": [86.5, 36.5], "expected": 86.5}, {"input": [86.5, 37.0], "expected": 86.5}, {"input": [86.5, 37.5], "expected": 86.5}, {"input": [86.5, 38.0], "expected": 86.5}, {"input": [86.5, 38.5], "expected": 86.5}, {"input": [86.5, 39.0], "expected": 86.5}, {"input": [86.5, 39.5], "expected": 86.5}, {"input": [86.5, 40.0], "expected": 86.5}, {"input": [86.5, 40.5], "expected": 86.5}, {"input": [86.5, 41.0], "expected": 86.5}, {"input": [86.5, 41.5], "expected": 86.5}, {"input": [86.5, 42.0], "expected": 86.5}, {"input": [86.5, 42.5], "expected": 86.5}, {"input": [86.5, 43.0], "expected": 86.5}, {"input": [86.5, 43.5], "expected": 86.5}, {"input": [86.5, 44.0], "expected": 86.5}, {"input": [86.5, 44.5], "expected": 86.5}, {"input": [86.5, 45.0], "expected": 86.5}, {"input": [86.5, 45.5], "expected": 86.5}, {"input": [86.5, 46.0], "expected": 86.5}, {"input": [86.5, 46.5], "expected": 86.5}, {"input": [86.5, 47.0], "expected": 86.5}, {"input": [86.5, 47.5], "expected": 86.5}, {"input": [86.5, 48.0], "expected": 86.5}, {"input": [86.5, 48.5], "expected": 86.5}, {"input": [86.5, 49.0], "expected": 86.5}, {"input": [86.5, 49.5], "expected": 86.5}, {"input": [86.5, 50.0], "expected": 86.5}, {"input": [86.5, 50.5], "expected": 86.5}, {"input": [86.5, 51.0], "expected": 86.5}, {"input": [86.5, 51.5], "expected": 86.5}, {"input": [86.5, 52.0], "expected": 86.5}, {"input": [86.5, 52.5], "expected": 86.5}, {"input": [86.5, 53.0], "expected": 86.5}, {"input": [86.5, 53.5], "expected": 86.5}, {"input": [86.5, 54.0], "expected": 86.50000000000001}, {"input": [86.5, 54.5], "expected": 86.50000000000001}, {"input": [86.5, 55.0], "expected": 86.50000000000001}, {"input": [86.5, 55.5], "expected": 86.50000000000003}, {"input": [86.5, 56.0], "expected": 86.50000000000006}, {"input": [86.5, 56.5], "expected": 86.5000000000001}, {"input": [86.5, 57.0], "expected": 86.50000000000016}, {"input": [86.5, 57.5], "expected": 86.50000000000026}, {"input": [86.5, 58.0], "expected": 86.50000000000043}, {"input": [86.5, 58.5], "expected": 86.5000000000007}, {"input": [86.5, 59.0], "expected": 86.50000000000114}, {"input": [86.5, 59.5], "expected": 86.50000000000188}, {"input": [86.5, 60.0], "expected": 86.5000000000031}, {"input": [86.5, 60.5], "expected": 86.50000000000512}, {"input": [86.5, 61.0], "expected": 86.50000000000843}, {"input": [86.5, 61.5], "expected": 86.50000000001388}, {"input": [86.5, 62.0], "expected": 86.5000000000229}, {"input": [86.5, 62.5], "expected": 86.50000000003776}, {"input": [86.5, 63.0], "expected": 86.50000000006224}, {"input": [86.5, 63.5], "expected": 86.50000000010262}, {"input": [86.5, 64.0], "expected": 86.5000000001692}, {"input": [86.5, 64.5], "expected": 86.50000000027894}, {"input": [86.5, 65.0], "expected": 86.5000000004599}, {"input": [86.5, 65.5], "expected": 86.50000000075826}, {"input": [86.5, 66.0], "expected": 86.50000000125016}, {"input": [86.5, 66.5], "expected": 86.50000000206116}, {"input": [86.5, 67.0], "expected": 86.50000000339827}, {"input": [86.5, 67.5], "expected": 86.5000000056028}, {"input": [86.5, 68.0], "expected": 86.50000000923745}, {"input": [86.5, 68.5], "expected": 86.50000001522999}, {"input": [86.5, 69.0], "expected": 86.50000002511}, {"input": [86.5, 69.5], "expected": 86.50000004139937}, {"input": [86.5, 70.0], "expected": 86.50000006825603}, {"input": [86.5, 70.5], "expected": 86.50000011253516}, {"input": [86.5, 71.0], "expected": 86.50000018553912}, {"input": [86.5, 71.5], "expected": 86.50000030590228}, {"input": [86.5, 72.0], "expected": 86.50000050434754}, {"input": [86.5, 72.5], "expected": 86.50000083152837}, {"input": [86.5, 73.0], "expected": 86.50000137095815}, {"input": [86.5, 73.5], "expected": 86.50000226032685}, {"input": [86.5, 74.0], "expected": 86.50000372664623}, {"input": [86.5, 74.5], "expected": 86.50000614419348}, {"input": [86.5, 75.0], "expected": 86.50001013004228}, {"input": [86.5, 75.5], "expected": 86.50001670156132}, {"input": [86.5, 76.0], "expected": 86.50002753607023}, {"input": [86.5, 76.5], "expected": 86.50004539889922}, {"input": [86.5, 77.0], "expected": 86.50007484902864}, {"input": [86.5, 77.5], "expected": 86.50012340218973}, {"input": [86.5, 78.0], "expected": 86.50020344767213}, {"input": [86.5, 78.5], "expected": 86.5003354063729}, {"input": [86.5, 79.0], "expected": 86.50055293147535}, {"input": [86.5, 79.5], "expected": 86.50091146645377}, {"input": [86.5, 80.0], "expected": 86.50150231015975}, {"input": [86.5, 80.5], "expected": 86.50247568513772}, {"input": [86.5, 81.0], "expected": 86.50407844327057}, {"input": [86.5, 81.5], "expected": 86.50671534848912}, {"input": [86.5, 82.0], "expected": 86.5110477448486}, {"input": [86.5, 82.5], "expected": 86.5181499279178}, {"input": [86.5, 83.0], "expected": 86.52975041827263}, {"input": [86.5, 83.5], "expected": 86.54858735157374}, {"input": [86.5, 84.0], "expected": 86.57888973429255}, {"input": [86.5, 84.5], "expected": 86.62692801104298}, {"input": [86.5, 85.0], "expected": 86.70141327798275}, {"input": [86.5, 85.5], "expected": 86.81326168751822}, {"input": [86.5, 86.0], "expected": 86.9740769841801}, {"input": [86.5, 86.5], "expected": 87.19314718055995}, {"input": [86.5, 87.0], "expected": 87.4740769841801}, {"input": [86.5, 87.5], "expected": 87.81326168751822}, {"input": [86.5, 88.0], "expected": 88.20141327798275}, {"input": [86.5, 88.5], "expected": 88.62692801104298}, {"input": [86.5, 89.0], "expected": 89.07888973429255}, {"input": [86.5, 89.5], "expected": 89.54858735157374}, {"input": [86.5, 90.0], "expected": 90.02975041827263}, {"input": [86.5, 90.5], "expected": 90.5181499279178}, {"input": [86.5, 91.0], "expected": 91.0110477448486}, {"input": [86.5, 91.5], "expected": 91.50671534848912}, {"input": [86.5, 92.0], "expected": 92.00407844327057}, {"input": [86.5, 92.5], "expected": 92.50247568513772}, {"input": [86.5, 93.0], "expected": 93.00150231015975}, {"input": [86.5, 93.5], "expected": 93.50091146645377}, {"input": [86.5, 94.0], "expected": 94.00055293147535}, {"input": [86.5, 94.5], "expected": 94.5003354063729}, {"input": [86.5, 95.0], "expected": 95.00020344767213}, {"input": [86.5, 95.5], "expected": 95.50012340218973}, {"input": [86.5, 96.0], "expected": 96.00007484902864}, {"input": [86.5, 96.5], "expected": 96.50004539889922}, {"input": [86.5, 97.0], "expected": 97.00002753607023}, {"input": [86.5, 97.5], "expected": 97.50001670156132}, {"input": [86.5, 98.0], "expected": 98.00001013004228}, {"input": [86.5, 98.5], "expected": 98.50000614419348}, {"input": [86.5, 99.0], "expected": 99.00000372664623}, {"input": [86.5, 99.5], "expected": 99.50000226032685}, {"input": [87.0, -100.0], "expected": 87.0}, {"input": [87.0, -99.5], "expected": 87.0}, {"input": [87.0, -99.0], "expected": 87.0}, {"input": [87.0, -98.5], "expected": 87.0}, {"input": [87.0, -98.0], "expected": 87.0}, {"input": [87.0, -97.5], "expected": 87.0}, {"input": [87.0, -97.0], "expected": 87.0}, {"input": [87.0, -96.5], "expected": 87.0}, {"input": [87.0, -96.0], "expected": 87.0}, {"input": [87.0, -95.5], "expected": 87.0}, {"input": [87.0, -95.0], "expected": 87.0}, {"input": [87.0, -94.5], "expected": 87.0}, {"input": [87.0, -94.0], "expected": 87.0}, {"input": [87.0, -93.5], "expected": 87.0}, {"input": [87.0, -93.0], "expected": 87.0}, {"input": [87.0, -92.5], "expected": 87.0}, {"input": [87.0, -92.0], "expected": 87.0}, {"input": [87.0, -91.5], "expected": 87.0}, {"input": [87.0, -91.0], "expected": 87.0}, {"input": [87.0, -90.5], "expected": 87.0}, {"input": [87.0, -90.0], "expected": 87.0}, {"input": [87.0, -89.5], "expected": 87.0}, {"input": [87.0, -89.0], "expected": 87.0}, {"input": [87.0, -88.5], "expected": 87.0}, {"input": [87.0, -88.0], "expected": 87.0}, {"input": [87.0, -87.5], "expected": 87.0}, {"input": [87.0, -87.0], "expected": 87.0}, {"input": [87.0, -86.5], "expected": 87.0}, {"input": [87.0, -86.0], "expected": 87.0}, {"input": [87.0, -85.5], "expected": 87.0}, {"input": [87.0, -85.0], "expected": 87.0}, {"input": [87.0, -84.5], "expected": 87.0}, {"input": [87.0, -84.0], "expected": 87.0}, {"input": [87.0, -83.5], "expected": 87.0}, {"input": [87.0, -83.0], "expected": 87.0}, {"input": [87.0, -82.5], "expected": 87.0}, {"input": [87.0, -82.0], "expected": 87.0}, {"input": [87.0, -81.5], "expected": 87.0}, {"input": [87.0, -81.0], "expected": 87.0}, {"input": [87.0, -80.5], "expected": 87.0}, {"input": [87.0, -80.0], "expected": 87.0}, {"input": [87.0, -79.5], "expected": 87.0}, {"input": [87.0, -79.0], "expected": 87.0}, {"input": [87.0, -78.5], "expected": 87.0}, {"input": [87.0, -78.0], "expected": 87.0}, {"input": [87.0, -77.5], "expected": 87.0}, {"input": [87.0, -77.0], "expected": 87.0}, {"input": [87.0, -76.5], "expected": 87.0}, {"input": [87.0, -76.0], "expected": 87.0}, {"input": [87.0, -75.5], "expected": 87.0}, {"input": [87.0, -75.0], "expected": 87.0}, {"input": [87.0, -74.5], "expected": 87.0}, {"input": [87.0, -74.0], "expected": 87.0}, {"input": [87.0, -73.5], "expected": 87.0}, {"input": [87.0, -73.0], "expected": 87.0}, {"input": [87.0, -72.5], "expected": 87.0}, {"input": [87.0, -72.0], "expected": 87.0}, {"input": [87.0, -71.5], "expected": 87.0}, {"input": [87.0, -71.0], "expected": 87.0}, {"input": [87.0, -70.5], "expected": 87.0}, {"input": [87.0, -70.0], "expected": 87.0}, {"input": [87.0, -69.5], "expected": 87.0}, {"input": [87.0, -69.0], "expected": 87.0}, {"input": [87.0, -68.5], "expected": 87.0}, {"input": [87.0, -68.0], "expected": 87.0}, {"input": [87.0, -67.5], "expected": 87.0}, {"input": [87.0, -67.0], "expected": 87.0}, {"input": [87.0, -66.5], "expected": 87.0}, {"input": [87.0, -66.0], "expected": 87.0}, {"input": [87.0, -65.5], "expected": 87.0}, {"input": [87.0, -65.0], "expected": 87.0}, {"input": [87.0, -64.5], "expected": 87.0}, {"input": [87.0, -64.0], "expected": 87.0}, {"input": [87.0, -63.5], "expected": 87.0}, {"input": [87.0, -63.0], "expected": 87.0}, {"input": [87.0, -62.5], "expected": 87.0}, {"input": [87.0, -62.0], "expected": 87.0}, {"input": [87.0, -61.5], "expected": 87.0}, {"input": [87.0, -61.0], "expected": 87.0}, {"input": [87.0, -60.5], "expected": 87.0}, {"input": [87.0, -60.0], "expected": 87.0}, {"input": [87.0, -59.5], "expected": 87.0}, {"input": [87.0, -59.0], "expected": 87.0}, {"input": [87.0, -58.5], "expected": 87.0}, {"input": [87.0, -58.0], "expected": 87.0}, {"input": [87.0, -57.5], "expected": 87.0}, {"input": [87.0, -57.0], "expected": 87.0}, {"input": [87.0, -56.5], "expected": 87.0}, {"input": [87.0, -56.0], "expected": 87.0}, {"input": [87.0, -55.5], "expected": 87.0}, {"input": [87.0, -55.0], "expected": 87.0}, {"input": [87.0, -54.5], "expected": 87.0}, {"input": [87.0, -54.0], "expected": 87.0}, {"input": [87.0, -53.5], "expected": 87.0}, {"input": [87.0, -53.0], "expected": 87.0}, {"input": [87.0, -52.5], "expected": 87.0}, {"input": [87.0, -52.0], "expected": 87.0}, {"input": [87.0, -51.5], "expected": 87.0}, {"input": [87.0, -51.0], "expected": 87.0}, {"input": [87.0, -50.5], "expected": 87.0}, {"input": [87.0, -50.0], "expected": 87.0}, {"input": [87.0, -49.5], "expected": 87.0}, {"input": [87.0, -49.0], "expected": 87.0}, {"input": [87.0, -48.5], "expected": 87.0}, {"input": [87.0, -48.0], "expected": 87.0}, {"input": [87.0, -47.5], "expected": 87.0}, {"input": [87.0, -47.0], "expected": 87.0}, {"input": [87.0, -46.5], "expected": 87.0}, {"input": [87.0, -46.0], "expected": 87.0}, {"input": [87.0, -45.5], "expected": 87.0}, {"input": [87.0, -45.0], "expected": 87.0}, {"input": [87.0, -44.5], "expected": 87.0}, {"input": [87.0, -44.0], "expected": 87.0}, {"input": [87.0, -43.5], "expected": 87.0}, {"input": [87.0, -43.0], "expected": 87.0}, {"input": [87.0, -42.5], "expected": 87.0}, {"input": [87.0, -42.0], "expected": 87.0}, {"input": [87.0, -41.5], "expected": 87.0}, {"input": [87.0, -41.0], "expected": 87.0}, {"input": [87.0, -40.5], "expected": 87.0}, {"input": [87.0, -40.0], "expected": 87.0}, {"input": [87.0, -39.5], "expected": 87.0}, {"input": [87.0, -39.0], "expected": 87.0}, {"input": [87.0, -38.5], "expected": 87.0}, {"input": [87.0, -38.0], "expected": 87.0}, {"input": [87.0, -37.5], "expected": 87.0}, {"input": [87.0, -37.0], "expected": 87.0}, {"input": [87.0, -36.5], "expected": 87.0}, {"input": [87.0, -36.0], "expected": 87.0}, {"input": [87.0, -35.5], "expected": 87.0}, {"input": [87.0, -35.0], "expected": 87.0}, {"input": [87.0, -34.5], "expected": 87.0}, {"input": [87.0, -34.0], "expected": 87.0}, {"input": [87.0, -33.5], "expected": 87.0}, {"input": [87.0, -33.0], "expected": 87.0}, {"input": [87.0, -32.5], "expected": 87.0}, {"input": [87.0, -32.0], "expected": 87.0}, {"input": [87.0, -31.5], "expected": 87.0}, {"input": [87.0, -31.0], "expected": 87.0}, {"input": [87.0, -30.5], "expected": 87.0}, {"input": [87.0, -30.0], "expected": 87.0}, {"input": [87.0, -29.5], "expected": 87.0}, {"input": [87.0, -29.0], "expected": 87.0}, {"input": [87.0, -28.5], "expected": 87.0}, {"input": [87.0, -28.0], "expected": 87.0}, {"input": [87.0, -27.5], "expected": 87.0}, {"input": [87.0, -27.0], "expected": 87.0}, {"input": [87.0, -26.5], "expected": 87.0}, {"input": [87.0, -26.0], "expected": 87.0}, {"input": [87.0, -25.5], "expected": 87.0}, {"input": [87.0, -25.0], "expected": 87.0}, {"input": [87.0, -24.5], "expected": 87.0}, {"input": [87.0, -24.0], "expected": 87.0}, {"input": [87.0, -23.5], "expected": 87.0}, {"input": [87.0, -23.0], "expected": 87.0}, {"input": [87.0, -22.5], "expected": 87.0}, {"input": [87.0, -22.0], "expected": 87.0}, {"input": [87.0, -21.5], "expected": 87.0}, {"input": [87.0, -21.0], "expected": 87.0}, {"input": [87.0, -20.5], "expected": 87.0}, {"input": [87.0, -20.0], "expected": 87.0}, {"input": [87.0, -19.5], "expected": 87.0}, {"input": [87.0, -19.0], "expected": 87.0}, {"input": [87.0, -18.5], "expected": 87.0}, {"input": [87.0, -18.0], "expected": 87.0}, {"input": [87.0, -17.5], "expected": 87.0}, {"input": [87.0, -17.0], "expected": 87.0}, {"input": [87.0, -16.5], "expected": 87.0}, {"input": [87.0, -16.0], "expected": 87.0}, {"input": [87.0, -15.5], "expected": 87.0}, {"input": [87.0, -15.0], "expected": 87.0}, {"input": [87.0, -14.5], "expected": 87.0}, {"input": [87.0, -14.0], "expected": 87.0}, {"input": [87.0, -13.5], "expected": 87.0}, {"input": [87.0, -13.0], "expected": 87.0}, {"input": [87.0, -12.5], "expected": 87.0}, {"input": [87.0, -12.0], "expected": 87.0}, {"input": [87.0, -11.5], "expected": 87.0}, {"input": [87.0, -11.0], "expected": 87.0}, {"input": [87.0, -10.5], "expected": 87.0}, {"input": [87.0, -10.0], "expected": 87.0}, {"input": [87.0, -9.5], "expected": 87.0}, {"input": [87.0, -9.0], "expected": 87.0}, {"input": [87.0, -8.5], "expected": 87.0}, {"input": [87.0, -8.0], "expected": 87.0}, {"input": [87.0, -7.5], "expected": 87.0}, {"input": [87.0, -7.0], "expected": 87.0}, {"input": [87.0, -6.5], "expected": 87.0}, {"input": [87.0, -6.0], "expected": 87.0}, {"input": [87.0, -5.5], "expected": 87.0}, {"input": [87.0, -5.0], "expected": 87.0}, {"input": [87.0, -4.5], "expected": 87.0}, {"input": [87.0, -4.0], "expected": 87.0}, {"input": [87.0, -3.5], "expected": 87.0}, {"input": [87.0, -3.0], "expected": 87.0}, {"input": [87.0, -2.5], "expected": 87.0}, {"input": [87.0, -2.0], "expected": 87.0}, {"input": [87.0, -1.5], "expected": 87.0}, {"input": [87.0, -1.0], "expected": 87.0}, {"input": [87.0, -0.5], "expected": 87.0}, {"input": [87.0, 0.0], "expected": 87.0}, {"input": [87.0, 0.5], "expected": 87.0}, {"input": [87.0, 1.0], "expected": 87.0}, {"input": [87.0, 1.5], "expected": 87.0}, {"input": [87.0, 2.0], "expected": 87.0}, {"input": [87.0, 2.5], "expected": 87.0}, {"input": [87.0, 3.0], "expected": 87.0}, {"input": [87.0, 3.5], "expected": 87.0}, {"input": [87.0, 4.0], "expected": 87.0}, {"input": [87.0, 4.5], "expected": 87.0}, {"input": [87.0, 5.0], "expected": 87.0}, {"input": [87.0, 5.5], "expected": 87.0}, {"input": [87.0, 6.0], "expected": 87.0}, {"input": [87.0, 6.5], "expected": 87.0}, {"input": [87.0, 7.0], "expected": 87.0}, {"input": [87.0, 7.5], "expected": 87.0}, {"input": [87.0, 8.0], "expected": 87.0}, {"input": [87.0, 8.5], "expected": 87.0}, {"input": [87.0, 9.0], "expected": 87.0}, {"input": [87.0, 9.5], "expected": 87.0}, {"input": [87.0, 10.0], "expected": 87.0}, {"input": [87.0, 10.5], "expected": 87.0}, {"input": [87.0, 11.0], "expected": 87.0}, {"input": [87.0, 11.5], "expected": 87.0}, {"input": [87.0, 12.0], "expected": 87.0}, {"input": [87.0, 12.5], "expected": 87.0}, {"input": [87.0, 13.0], "expected": 87.0}, {"input": [87.0, 13.5], "expected": 87.0}, {"input": [87.0, 14.0], "expected": 87.0}, {"input": [87.0, 14.5], "expected": 87.0}, {"input": [87.0, 15.0], "expected": 87.0}, {"input": [87.0, 15.5], "expected": 87.0}, {"input": [87.0, 16.0], "expected": 87.0}, {"input": [87.0, 16.5], "expected": 87.0}, {"input": [87.0, 17.0], "expected": 87.0}, {"input": [87.0, 17.5], "expected": 87.0}, {"input": [87.0, 18.0], "expected": 87.0}, {"input": [87.0, 18.5], "expected": 87.0}, {"input": [87.0, 19.0], "expected": 87.0}, {"input": [87.0, 19.5], "expected": 87.0}, {"input": [87.0, 20.0], "expected": 87.0}, {"input": [87.0, 20.5], "expected": 87.0}, {"input": [87.0, 21.0], "expected": 87.0}, {"input": [87.0, 21.5], "expected": 87.0}, {"input": [87.0, 22.0], "expected": 87.0}, {"input": [87.0, 22.5], "expected": 87.0}, {"input": [87.0, 23.0], "expected": 87.0}, {"input": [87.0, 23.5], "expected": 87.0}, {"input": [87.0, 24.0], "expected": 87.0}, {"input": [87.0, 24.5], "expected": 87.0}, {"input": [87.0, 25.0], "expected": 87.0}, {"input": [87.0, 25.5], "expected": 87.0}, {"input": [87.0, 26.0], "expected": 87.0}, {"input": [87.0, 26.5], "expected": 87.0}, {"input": [87.0, 27.0], "expected": 87.0}, {"input": [87.0, 27.5], "expected": 87.0}, {"input": [87.0, 28.0], "expected": 87.0}, {"input": [87.0, 28.5], "expected": 87.0}, {"input": [87.0, 29.0], "expected": 87.0}, {"input": [87.0, 29.5], "expected": 87.0}, {"input": [87.0, 30.0], "expected": 87.0}, {"input": [87.0, 30.5], "expected": 87.0}, {"input": [87.0, 31.0], "expected": 87.0}, {"input": [87.0, 31.5], "expected": 87.0}, {"input": [87.0, 32.0], "expected": 87.0}, {"input": [87.0, 32.5], "expected": 87.0}, {"input": [87.0, 33.0], "expected": 87.0}, {"input": [87.0, 33.5], "expected": 87.0}, {"input": [87.0, 34.0], "expected": 87.0}, {"input": [87.0, 34.5], "expected": 87.0}, {"input": [87.0, 35.0], "expected": 87.0}, {"input": [87.0, 35.5], "expected": 87.0}, {"input": [87.0, 36.0], "expected": 87.0}, {"input": [87.0, 36.5], "expected": 87.0}, {"input": [87.0, 37.0], "expected": 87.0}, {"input": [87.0, 37.5], "expected": 87.0}, {"input": [87.0, 38.0], "expected": 87.0}, {"input": [87.0, 38.5], "expected": 87.0}, {"input": [87.0, 39.0], "expected": 87.0}, {"input": [87.0, 39.5], "expected": 87.0}, {"input": [87.0, 40.0], "expected": 87.0}, {"input": [87.0, 40.5], "expected": 87.0}, {"input": [87.0, 41.0], "expected": 87.0}, {"input": [87.0, 41.5], "expected": 87.0}, {"input": [87.0, 42.0], "expected": 87.0}, {"input": [87.0, 42.5], "expected": 87.0}, {"input": [87.0, 43.0], "expected": 87.0}, {"input": [87.0, 43.5], "expected": 87.0}, {"input": [87.0, 44.0], "expected": 87.0}, {"input": [87.0, 44.5], "expected": 87.0}, {"input": [87.0, 45.0], "expected": 87.0}, {"input": [87.0, 45.5], "expected": 87.0}, {"input": [87.0, 46.0], "expected": 87.0}, {"input": [87.0, 46.5], "expected": 87.0}, {"input": [87.0, 47.0], "expected": 87.0}, {"input": [87.0, 47.5], "expected": 87.0}, {"input": [87.0, 48.0], "expected": 87.0}, {"input": [87.0, 48.5], "expected": 87.0}, {"input": [87.0, 49.0], "expected": 87.0}, {"input": [87.0, 49.5], "expected": 87.0}, {"input": [87.0, 50.0], "expected": 87.0}, {"input": [87.0, 50.5], "expected": 87.0}, {"input": [87.0, 51.0], "expected": 87.0}, {"input": [87.0, 51.5], "expected": 87.0}, {"input": [87.0, 52.0], "expected": 87.0}, {"input": [87.0, 52.5], "expected": 87.0}, {"input": [87.0, 53.0], "expected": 87.0}, {"input": [87.0, 53.5], "expected": 87.0}, {"input": [87.0, 54.0], "expected": 87.0}, {"input": [87.0, 54.5], "expected": 87.00000000000001}, {"input": [87.0, 55.0], "expected": 87.00000000000001}, {"input": [87.0, 55.5], "expected": 87.00000000000001}, {"input": [87.0, 56.0], "expected": 87.00000000000003}, {"input": [87.0, 56.5], "expected": 87.00000000000006}, {"input": [87.0, 57.0], "expected": 87.0000000000001}, {"input": [87.0, 57.5], "expected": 87.00000000000016}, {"input": [87.0, 58.0], "expected": 87.00000000000026}, {"input": [87.0, 58.5], "expected": 87.00000000000043}, {"input": [87.0, 59.0], "expected": 87.0000000000007}, {"input": [87.0, 59.5], "expected": 87.00000000000114}, {"input": [87.0, 60.0], "expected": 87.00000000000188}, {"input": [87.0, 60.5], "expected": 87.0000000000031}, {"input": [87.0, 61.0], "expected": 87.00000000000512}, {"input": [87.0, 61.5], "expected": 87.00000000000843}, {"input": [87.0, 62.0], "expected": 87.00000000001388}, {"input": [87.0, 62.5], "expected": 87.0000000000229}, {"input": [87.0, 63.0], "expected": 87.00000000003776}, {"input": [87.0, 63.5], "expected": 87.00000000006224}, {"input": [87.0, 64.0], "expected": 87.00000000010262}, {"input": [87.0, 64.5], "expected": 87.0000000001692}, {"input": [87.0, 65.0], "expected": 87.00000000027894}, {"input": [87.0, 65.5], "expected": 87.0000000004599}, {"input": [87.0, 66.0], "expected": 87.00000000075826}, {"input": [87.0, 66.5], "expected": 87.00000000125016}, {"input": [87.0, 67.0], "expected": 87.00000000206116}, {"input": [87.0, 67.5], "expected": 87.00000000339827}, {"input": [87.0, 68.0], "expected": 87.0000000056028}, {"input": [87.0, 68.5], "expected": 87.00000000923745}, {"input": [87.0, 69.0], "expected": 87.00000001522999}, {"input": [87.0, 69.5], "expected": 87.00000002511}, {"input": [87.0, 70.0], "expected": 87.00000004139937}, {"input": [87.0, 70.5], "expected": 87.00000006825603}, {"input": [87.0, 71.0], "expected": 87.00000011253516}, {"input": [87.0, 71.5], "expected": 87.00000018553912}, {"input": [87.0, 72.0], "expected": 87.00000030590228}, {"input": [87.0, 72.5], "expected": 87.00000050434754}, {"input": [87.0, 73.0], "expected": 87.00000083152837}, {"input": [87.0, 73.5], "expected": 87.00000137095815}, {"input": [87.0, 74.0], "expected": 87.00000226032685}, {"input": [87.0, 74.5], "expected": 87.00000372664623}, {"input": [87.0, 75.0], "expected": 87.00000614419348}, {"input": [87.0, 75.5], "expected": 87.00001013004228}, {"input": [87.0, 76.0], "expected": 87.00001670156132}, {"input": [87.0, 76.5], "expected": 87.00002753607023}, {"input": [87.0, 77.0], "expected": 87.00004539889922}, {"input": [87.0, 77.5], "expected": 87.00007484902864}, {"input": [87.0, 78.0], "expected": 87.00012340218973}, {"input": [87.0, 78.5], "expected": 87.00020344767213}, {"input": [87.0, 79.0], "expected": 87.0003354063729}, {"input": [87.0, 79.5], "expected": 87.00055293147535}, {"input": [87.0, 80.0], "expected": 87.00091146645377}, {"input": [87.0, 80.5], "expected": 87.00150231015975}, {"input": [87.0, 81.0], "expected": 87.00247568513772}, {"input": [87.0, 81.5], "expected": 87.00407844327057}, {"input": [87.0, 82.0], "expected": 87.00671534848912}, {"input": [87.0, 82.5], "expected": 87.0110477448486}, {"input": [87.0, 83.0], "expected": 87.0181499279178}, {"input": [87.0, 83.5], "expected": 87.02975041827263}, {"input": [87.0, 84.0], "expected": 87.04858735157374}, {"input": [87.0, 84.5], "expected": 87.07888973429255}, {"input": [87.0, 85.0], "expected": 87.12692801104298}, {"input": [87.0, 85.5], "expected": 87.20141327798275}, {"input": [87.0, 86.0], "expected": 87.31326168751822}, {"input": [87.0, 86.5], "expected": 87.4740769841801}, {"input": [87.0, 87.0], "expected": 87.69314718055995}, {"input": [87.0, 87.5], "expected": 87.9740769841801}, {"input": [87.0, 88.0], "expected": 88.31326168751822}, {"input": [87.0, 88.5], "expected": 88.70141327798275}, {"input": [87.0, 89.0], "expected": 89.12692801104298}, {"input": [87.0, 89.5], "expected": 89.57888973429255}, {"input": [87.0, 90.0], "expected": 90.04858735157374}, {"input": [87.0, 90.5], "expected": 90.52975041827263}, {"input": [87.0, 91.0], "expected": 91.0181499279178}, {"input": [87.0, 91.5], "expected": 91.5110477448486}, {"input": [87.0, 92.0], "expected": 92.00671534848912}, {"input": [87.0, 92.5], "expected": 92.50407844327057}, {"input": [87.0, 93.0], "expected": 93.00247568513772}, {"input": [87.0, 93.5], "expected": 93.50150231015975}, {"input": [87.0, 94.0], "expected": 94.00091146645377}, {"input": [87.0, 94.5], "expected": 94.50055293147535}, {"input": [87.0, 95.0], "expected": 95.0003354063729}, {"input": [87.0, 95.5], "expected": 95.50020344767213}, {"input": [87.0, 96.0], "expected": 96.00012340218973}, {"input": [87.0, 96.5], "expected": 96.50007484902864}, {"input": [87.0, 97.0], "expected": 97.00004539889922}, {"input": [87.0, 97.5], "expected": 97.50002753607023}, {"input": [87.0, 98.0], "expected": 98.00001670156132}, {"input": [87.0, 98.5], "expected": 98.50001013004228}, {"input": [87.0, 99.0], "expected": 99.00000614419348}, {"input": [87.0, 99.5], "expected": 99.50000372664623}, {"input": [87.5, -100.0], "expected": 87.5}, {"input": [87.5, -99.5], "expected": 87.5}, {"input": [87.5, -99.0], "expected": 87.5}, {"input": [87.5, -98.5], "expected": 87.5}, {"input": [87.5, -98.0], "expected": 87.5}, {"input": [87.5, -97.5], "expected": 87.5}, {"input": [87.5, -97.0], "expected": 87.5}, {"input": [87.5, -96.5], "expected": 87.5}, {"input": [87.5, -96.0], "expected": 87.5}, {"input": [87.5, -95.5], "expected": 87.5}, {"input": [87.5, -95.0], "expected": 87.5}, {"input": [87.5, -94.5], "expected": 87.5}, {"input": [87.5, -94.0], "expected": 87.5}, {"input": [87.5, -93.5], "expected": 87.5}, {"input": [87.5, -93.0], "expected": 87.5}, {"input": [87.5, -92.5], "expected": 87.5}, {"input": [87.5, -92.0], "expected": 87.5}, {"input": [87.5, -91.5], "expected": 87.5}, {"input": [87.5, -91.0], "expected": 87.5}, {"input": [87.5, -90.5], "expected": 87.5}, {"input": [87.5, -90.0], "expected": 87.5}, {"input": [87.5, -89.5], "expected": 87.5}, {"input": [87.5, -89.0], "expected": 87.5}, {"input": [87.5, -88.5], "expected": 87.5}, {"input": [87.5, -88.0], "expected": 87.5}, {"input": [87.5, -87.5], "expected": 87.5}, {"input": [87.5, -87.0], "expected": 87.5}, {"input": [87.5, -86.5], "expected": 87.5}, {"input": [87.5, -86.0], "expected": 87.5}, {"input": [87.5, -85.5], "expected": 87.5}, {"input": [87.5, -85.0], "expected": 87.5}, {"input": [87.5, -84.5], "expected": 87.5}, {"input": [87.5, -84.0], "expected": 87.5}, {"input": [87.5, -83.5], "expected": 87.5}, {"input": [87.5, -83.0], "expected": 87.5}, {"input": [87.5, -82.5], "expected": 87.5}, {"input": [87.5, -82.0], "expected": 87.5}, {"input": [87.5, -81.5], "expected": 87.5}, {"input": [87.5, -81.0], "expected": 87.5}, {"input": [87.5, -80.5], "expected": 87.5}, {"input": [87.5, -80.0], "expected": 87.5}, {"input": [87.5, -79.5], "expected": 87.5}, {"input": [87.5, -79.0], "expected": 87.5}, {"input": [87.5, -78.5], "expected": 87.5}, {"input": [87.5, -78.0], "expected": 87.5}, {"input": [87.5, -77.5], "expected": 87.5}, {"input": [87.5, -77.0], "expected": 87.5}, {"input": [87.5, -76.5], "expected": 87.5}, {"input": [87.5, -76.0], "expected": 87.5}, {"input": [87.5, -75.5], "expected": 87.5}, {"input": [87.5, -75.0], "expected": 87.5}, {"input": [87.5, -74.5], "expected": 87.5}, {"input": [87.5, -74.0], "expected": 87.5}, {"input": [87.5, -73.5], "expected": 87.5}, {"input": [87.5, -73.0], "expected": 87.5}, {"input": [87.5, -72.5], "expected": 87.5}, {"input": [87.5, -72.0], "expected": 87.5}, {"input": [87.5, -71.5], "expected": 87.5}, {"input": [87.5, -71.0], "expected": 87.5}, {"input": [87.5, -70.5], "expected": 87.5}, {"input": [87.5, -70.0], "expected": 87.5}, {"input": [87.5, -69.5], "expected": 87.5}, {"input": [87.5, -69.0], "expected": 87.5}, {"input": [87.5, -68.5], "expected": 87.5}, {"input": [87.5, -68.0], "expected": 87.5}, {"input": [87.5, -67.5], "expected": 87.5}, {"input": [87.5, -67.0], "expected": 87.5}, {"input": [87.5, -66.5], "expected": 87.5}, {"input": [87.5, -66.0], "expected": 87.5}, {"input": [87.5, -65.5], "expected": 87.5}, {"input": [87.5, -65.0], "expected": 87.5}, {"input": [87.5, -64.5], "expected": 87.5}, {"input": [87.5, -64.0], "expected": 87.5}, {"input": [87.5, -63.5], "expected": 87.5}, {"input": [87.5, -63.0], "expected": 87.5}, {"input": [87.5, -62.5], "expected": 87.5}, {"input": [87.5, -62.0], "expected": 87.5}, {"input": [87.5, -61.5], "expected": 87.5}, {"input": [87.5, -61.0], "expected": 87.5}, {"input": [87.5, -60.5], "expected": 87.5}, {"input": [87.5, -60.0], "expected": 87.5}, {"input": [87.5, -59.5], "expected": 87.5}, {"input": [87.5, -59.0], "expected": 87.5}, {"input": [87.5, -58.5], "expected": 87.5}, {"input": [87.5, -58.0], "expected": 87.5}, {"input": [87.5, -57.5], "expected": 87.5}, {"input": [87.5, -57.0], "expected": 87.5}, {"input": [87.5, -56.5], "expected": 87.5}, {"input": [87.5, -56.0], "expected": 87.5}, {"input": [87.5, -55.5], "expected": 87.5}, {"input": [87.5, -55.0], "expected": 87.5}, {"input": [87.5, -54.5], "expected": 87.5}, {"input": [87.5, -54.0], "expected": 87.5}, {"input": [87.5, -53.5], "expected": 87.5}, {"input": [87.5, -53.0], "expected": 87.5}, {"input": [87.5, -52.5], "expected": 87.5}, {"input": [87.5, -52.0], "expected": 87.5}, {"input": [87.5, -51.5], "expected": 87.5}, {"input": [87.5, -51.0], "expected": 87.5}, {"input": [87.5, -50.5], "expected": 87.5}, {"input": [87.5, -50.0], "expected": 87.5}, {"input": [87.5, -49.5], "expected": 87.5}, {"input": [87.5, -49.0], "expected": 87.5}, {"input": [87.5, -48.5], "expected": 87.5}, {"input": [87.5, -48.0], "expected": 87.5}, {"input": [87.5, -47.5], "expected": 87.5}, {"input": [87.5, -47.0], "expected": 87.5}, {"input": [87.5, -46.5], "expected": 87.5}, {"input": [87.5, -46.0], "expected": 87.5}, {"input": [87.5, -45.5], "expected": 87.5}, {"input": [87.5, -45.0], "expected": 87.5}, {"input": [87.5, -44.5], "expected": 87.5}, {"input": [87.5, -44.0], "expected": 87.5}, {"input": [87.5, -43.5], "expected": 87.5}, {"input": [87.5, -43.0], "expected": 87.5}, {"input": [87.5, -42.5], "expected": 87.5}, {"input": [87.5, -42.0], "expected": 87.5}, {"input": [87.5, -41.5], "expected": 87.5}, {"input": [87.5, -41.0], "expected": 87.5}, {"input": [87.5, -40.5], "expected": 87.5}, {"input": [87.5, -40.0], "expected": 87.5}, {"input": [87.5, -39.5], "expected": 87.5}, {"input": [87.5, -39.0], "expected": 87.5}, {"input": [87.5, -38.5], "expected": 87.5}, {"input": [87.5, -38.0], "expected": 87.5}, {"input": [87.5, -37.5], "expected": 87.5}, {"input": [87.5, -37.0], "expected": 87.5}, {"input": [87.5, -36.5], "expected": 87.5}, {"input": [87.5, -36.0], "expected": 87.5}, {"input": [87.5, -35.5], "expected": 87.5}, {"input": [87.5, -35.0], "expected": 87.5}, {"input": [87.5, -34.5], "expected": 87.5}, {"input": [87.5, -34.0], "expected": 87.5}, {"input": [87.5, -33.5], "expected": 87.5}, {"input": [87.5, -33.0], "expected": 87.5}, {"input": [87.5, -32.5], "expected": 87.5}, {"input": [87.5, -32.0], "expected": 87.5}, {"input": [87.5, -31.5], "expected": 87.5}, {"input": [87.5, -31.0], "expected": 87.5}, {"input": [87.5, -30.5], "expected": 87.5}, {"input": [87.5, -30.0], "expected": 87.5}, {"input": [87.5, -29.5], "expected": 87.5}, {"input": [87.5, -29.0], "expected": 87.5}, {"input": [87.5, -28.5], "expected": 87.5}, {"input": [87.5, -28.0], "expected": 87.5}, {"input": [87.5, -27.5], "expected": 87.5}, {"input": [87.5, -27.0], "expected": 87.5}, {"input": [87.5, -26.5], "expected": 87.5}, {"input": [87.5, -26.0], "expected": 87.5}, {"input": [87.5, -25.5], "expected": 87.5}, {"input": [87.5, -25.0], "expected": 87.5}, {"input": [87.5, -24.5], "expected": 87.5}, {"input": [87.5, -24.0], "expected": 87.5}, {"input": [87.5, -23.5], "expected": 87.5}, {"input": [87.5, -23.0], "expected": 87.5}, {"input": [87.5, -22.5], "expected": 87.5}, {"input": [87.5, -22.0], "expected": 87.5}, {"input": [87.5, -21.5], "expected": 87.5}, {"input": [87.5, -21.0], "expected": 87.5}, {"input": [87.5, -20.5], "expected": 87.5}, {"input": [87.5, -20.0], "expected": 87.5}, {"input": [87.5, -19.5], "expected": 87.5}, {"input": [87.5, -19.0], "expected": 87.5}, {"input": [87.5, -18.5], "expected": 87.5}, {"input": [87.5, -18.0], "expected": 87.5}, {"input": [87.5, -17.5], "expected": 87.5}, {"input": [87.5, -17.0], "expected": 87.5}, {"input": [87.5, -16.5], "expected": 87.5}, {"input": [87.5, -16.0], "expected": 87.5}, {"input": [87.5, -15.5], "expected": 87.5}, {"input": [87.5, -15.0], "expected": 87.5}, {"input": [87.5, -14.5], "expected": 87.5}, {"input": [87.5, -14.0], "expected": 87.5}, {"input": [87.5, -13.5], "expected": 87.5}, {"input": [87.5, -13.0], "expected": 87.5}, {"input": [87.5, -12.5], "expected": 87.5}, {"input": [87.5, -12.0], "expected": 87.5}, {"input": [87.5, -11.5], "expected": 87.5}, {"input": [87.5, -11.0], "expected": 87.5}, {"input": [87.5, -10.5], "expected": 87.5}, {"input": [87.5, -10.0], "expected": 87.5}, {"input": [87.5, -9.5], "expected": 87.5}, {"input": [87.5, -9.0], "expected": 87.5}, {"input": [87.5, -8.5], "expected": 87.5}, {"input": [87.5, -8.0], "expected": 87.5}, {"input": [87.5, -7.5], "expected": 87.5}, {"input": [87.5, -7.0], "expected": 87.5}, {"input": [87.5, -6.5], "expected": 87.5}, {"input": [87.5, -6.0], "expected": 87.5}, {"input": [87.5, -5.5], "expected": 87.5}, {"input": [87.5, -5.0], "expected": 87.5}, {"input": [87.5, -4.5], "expected": 87.5}, {"input": [87.5, -4.0], "expected": 87.5}, {"input": [87.5, -3.5], "expected": 87.5}, {"input": [87.5, -3.0], "expected": 87.5}, {"input": [87.5, -2.5], "expected": 87.5}, {"input": [87.5, -2.0], "expected": 87.5}, {"input": [87.5, -1.5], "expected": 87.5}, {"input": [87.5, -1.0], "expected": 87.5}, {"input": [87.5, -0.5], "expected": 87.5}, {"input": [87.5, 0.0], "expected": 87.5}, {"input": [87.5, 0.5], "expected": 87.5}, {"input": [87.5, 1.0], "expected": 87.5}, {"input": [87.5, 1.5], "expected": 87.5}, {"input": [87.5, 2.0], "expected": 87.5}, {"input": [87.5, 2.5], "expected": 87.5}, {"input": [87.5, 3.0], "expected": 87.5}, {"input": [87.5, 3.5], "expected": 87.5}, {"input": [87.5, 4.0], "expected": 87.5}, {"input": [87.5, 4.5], "expected": 87.5}, {"input": [87.5, 5.0], "expected": 87.5}, {"input": [87.5, 5.5], "expected": 87.5}, {"input": [87.5, 6.0], "expected": 87.5}, {"input": [87.5, 6.5], "expected": 87.5}, {"input": [87.5, 7.0], "expected": 87.5}, {"input": [87.5, 7.5], "expected": 87.5}, {"input": [87.5, 8.0], "expected": 87.5}, {"input": [87.5, 8.5], "expected": 87.5}, {"input": [87.5, 9.0], "expected": 87.5}, {"input": [87.5, 9.5], "expected": 87.5}, {"input": [87.5, 10.0], "expected": 87.5}, {"input": [87.5, 10.5], "expected": 87.5}, {"input": [87.5, 11.0], "expected": 87.5}, {"input": [87.5, 11.5], "expected": 87.5}, {"input": [87.5, 12.0], "expected": 87.5}, {"input": [87.5, 12.5], "expected": 87.5}, {"input": [87.5, 13.0], "expected": 87.5}, {"input": [87.5, 13.5], "expected": 87.5}, {"input": [87.5, 14.0], "expected": 87.5}, {"input": [87.5, 14.5], "expected": 87.5}, {"input": [87.5, 15.0], "expected": 87.5}, {"input": [87.5, 15.5], "expected": 87.5}, {"input": [87.5, 16.0], "expected": 87.5}, {"input": [87.5, 16.5], "expected": 87.5}, {"input": [87.5, 17.0], "expected": 87.5}, {"input": [87.5, 17.5], "expected": 87.5}, {"input": [87.5, 18.0], "expected": 87.5}, {"input": [87.5, 18.5], "expected": 87.5}, {"input": [87.5, 19.0], "expected": 87.5}, {"input": [87.5, 19.5], "expected": 87.5}, {"input": [87.5, 20.0], "expected": 87.5}, {"input": [87.5, 20.5], "expected": 87.5}, {"input": [87.5, 21.0], "expected": 87.5}, {"input": [87.5, 21.5], "expected": 87.5}, {"input": [87.5, 22.0], "expected": 87.5}, {"input": [87.5, 22.5], "expected": 87.5}, {"input": [87.5, 23.0], "expected": 87.5}, {"input": [87.5, 23.5], "expected": 87.5}, {"input": [87.5, 24.0], "expected": 87.5}, {"input": [87.5, 24.5], "expected": 87.5}, {"input": [87.5, 25.0], "expected": 87.5}, {"input": [87.5, 25.5], "expected": 87.5}, {"input": [87.5, 26.0], "expected": 87.5}, {"input": [87.5, 26.5], "expected": 87.5}, {"input": [87.5, 27.0], "expected": 87.5}, {"input": [87.5, 27.5], "expected": 87.5}, {"input": [87.5, 28.0], "expected": 87.5}, {"input": [87.5, 28.5], "expected": 87.5}, {"input": [87.5, 29.0], "expected": 87.5}, {"input": [87.5, 29.5], "expected": 87.5}, {"input": [87.5, 30.0], "expected": 87.5}, {"input": [87.5, 30.5], "expected": 87.5}, {"input": [87.5, 31.0], "expected": 87.5}, {"input": [87.5, 31.5], "expected": 87.5}, {"input": [87.5, 32.0], "expected": 87.5}, {"input": [87.5, 32.5], "expected": 87.5}, {"input": [87.5, 33.0], "expected": 87.5}, {"input": [87.5, 33.5], "expected": 87.5}, {"input": [87.5, 34.0], "expected": 87.5}, {"input": [87.5, 34.5], "expected": 87.5}, {"input": [87.5, 35.0], "expected": 87.5}, {"input": [87.5, 35.5], "expected": 87.5}, {"input": [87.5, 36.0], "expected": 87.5}, {"input": [87.5, 36.5], "expected": 87.5}, {"input": [87.5, 37.0], "expected": 87.5}, {"input": [87.5, 37.5], "expected": 87.5}, {"input": [87.5, 38.0], "expected": 87.5}, {"input": [87.5, 38.5], "expected": 87.5}, {"input": [87.5, 39.0], "expected": 87.5}, {"input": [87.5, 39.5], "expected": 87.5}, {"input": [87.5, 40.0], "expected": 87.5}, {"input": [87.5, 40.5], "expected": 87.5}, {"input": [87.5, 41.0], "expected": 87.5}, {"input": [87.5, 41.5], "expected": 87.5}, {"input": [87.5, 42.0], "expected": 87.5}, {"input": [87.5, 42.5], "expected": 87.5}, {"input": [87.5, 43.0], "expected": 87.5}, {"input": [87.5, 43.5], "expected": 87.5}, {"input": [87.5, 44.0], "expected": 87.5}, {"input": [87.5, 44.5], "expected": 87.5}, {"input": [87.5, 45.0], "expected": 87.5}, {"input": [87.5, 45.5], "expected": 87.5}, {"input": [87.5, 46.0], "expected": 87.5}, {"input": [87.5, 46.5], "expected": 87.5}, {"input": [87.5, 47.0], "expected": 87.5}, {"input": [87.5, 47.5], "expected": 87.5}, {"input": [87.5, 48.0], "expected": 87.5}, {"input": [87.5, 48.5], "expected": 87.5}, {"input": [87.5, 49.0], "expected": 87.5}, {"input": [87.5, 49.5], "expected": 87.5}, {"input": [87.5, 50.0], "expected": 87.5}, {"input": [87.5, 50.5], "expected": 87.5}, {"input": [87.5, 51.0], "expected": 87.5}, {"input": [87.5, 51.5], "expected": 87.5}, {"input": [87.5, 52.0], "expected": 87.5}, {"input": [87.5, 52.5], "expected": 87.5}, {"input": [87.5, 53.0], "expected": 87.5}, {"input": [87.5, 53.5], "expected": 87.5}, {"input": [87.5, 54.0], "expected": 87.5}, {"input": [87.5, 54.5], "expected": 87.5}, {"input": [87.5, 55.0], "expected": 87.50000000000001}, {"input": [87.5, 55.5], "expected": 87.50000000000001}, {"input": [87.5, 56.0], "expected": 87.50000000000001}, {"input": [87.5, 56.5], "expected": 87.50000000000003}, {"input": [87.5, 57.0], "expected": 87.50000000000006}, {"input": [87.5, 57.5], "expected": 87.5000000000001}, {"input": [87.5, 58.0], "expected": 87.50000000000016}, {"input": [87.5, 58.5], "expected": 87.50000000000026}, {"input": [87.5, 59.0], "expected": 87.50000000000043}, {"input": [87.5, 59.5], "expected": 87.5000000000007}, {"input": [87.5, 60.0], "expected": 87.50000000000114}, {"input": [87.5, 60.5], "expected": 87.50000000000188}, {"input": [87.5, 61.0], "expected": 87.5000000000031}, {"input": [87.5, 61.5], "expected": 87.50000000000512}, {"input": [87.5, 62.0], "expected": 87.50000000000843}, {"input": [87.5, 62.5], "expected": 87.50000000001388}, {"input": [87.5, 63.0], "expected": 87.5000000000229}, {"input": [87.5, 63.5], "expected": 87.50000000003776}, {"input": [87.5, 64.0], "expected": 87.50000000006224}, {"input": [87.5, 64.5], "expected": 87.50000000010262}, {"input": [87.5, 65.0], "expected": 87.5000000001692}, {"input": [87.5, 65.5], "expected": 87.50000000027894}, {"input": [87.5, 66.0], "expected": 87.5000000004599}, {"input": [87.5, 66.5], "expected": 87.50000000075826}, {"input": [87.5, 67.0], "expected": 87.50000000125016}, {"input": [87.5, 67.5], "expected": 87.50000000206116}, {"input": [87.5, 68.0], "expected": 87.50000000339827}, {"input": [87.5, 68.5], "expected": 87.5000000056028}, {"input": [87.5, 69.0], "expected": 87.50000000923745}, {"input": [87.5, 69.5], "expected": 87.50000001522999}, {"input": [87.5, 70.0], "expected": 87.50000002511}, {"input": [87.5, 70.5], "expected": 87.50000004139937}, {"input": [87.5, 71.0], "expected": 87.50000006825603}, {"input": [87.5, 71.5], "expected": 87.50000011253516}, {"input": [87.5, 72.0], "expected": 87.50000018553912}, {"input": [87.5, 72.5], "expected": 87.50000030590228}, {"input": [87.5, 73.0], "expected": 87.50000050434754}, {"input": [87.5, 73.5], "expected": 87.50000083152837}, {"input": [87.5, 74.0], "expected": 87.50000137095815}, {"input": [87.5, 74.5], "expected": 87.50000226032685}, {"input": [87.5, 75.0], "expected": 87.50000372664623}, {"input": [87.5, 75.5], "expected": 87.50000614419348}, {"input": [87.5, 76.0], "expected": 87.50001013004228}, {"input": [87.5, 76.5], "expected": 87.50001670156132}, {"input": [87.5, 77.0], "expected": 87.50002753607023}, {"input": [87.5, 77.5], "expected": 87.50004539889922}, {"input": [87.5, 78.0], "expected": 87.50007484902864}, {"input": [87.5, 78.5], "expected": 87.50012340218973}, {"input": [87.5, 79.0], "expected": 87.50020344767213}, {"input": [87.5, 79.5], "expected": 87.5003354063729}, {"input": [87.5, 80.0], "expected": 87.50055293147535}, {"input": [87.5, 80.5], "expected": 87.50091146645377}, {"input": [87.5, 81.0], "expected": 87.50150231015975}, {"input": [87.5, 81.5], "expected": 87.50247568513772}, {"input": [87.5, 82.0], "expected": 87.50407844327057}, {"input": [87.5, 82.5], "expected": 87.50671534848912}, {"input": [87.5, 83.0], "expected": 87.5110477448486}, {"input": [87.5, 83.5], "expected": 87.5181499279178}, {"input": [87.5, 84.0], "expected": 87.52975041827263}, {"input": [87.5, 84.5], "expected": 87.54858735157374}, {"input": [87.5, 85.0], "expected": 87.57888973429255}, {"input": [87.5, 85.5], "expected": 87.62692801104298}, {"input": [87.5, 86.0], "expected": 87.70141327798275}, {"input": [87.5, 86.5], "expected": 87.81326168751822}, {"input": [87.5, 87.0], "expected": 87.9740769841801}, {"input": [87.5, 87.5], "expected": 88.19314718055995}, {"input": [87.5, 88.0], "expected": 88.4740769841801}, {"input": [87.5, 88.5], "expected": 88.81326168751822}, {"input": [87.5, 89.0], "expected": 89.20141327798275}, {"input": [87.5, 89.5], "expected": 89.62692801104298}, {"input": [87.5, 90.0], "expected": 90.07888973429255}, {"input": [87.5, 90.5], "expected": 90.54858735157374}, {"input": [87.5, 91.0], "expected": 91.02975041827263}, {"input": [87.5, 91.5], "expected": 91.5181499279178}, {"input": [87.5, 92.0], "expected": 92.0110477448486}, {"input": [87.5, 92.5], "expected": 92.50671534848912}, {"input": [87.5, 93.0], "expected": 93.00407844327057}, {"input": [87.5, 93.5], "expected": 93.50247568513772}, {"input": [87.5, 94.0], "expected": 94.00150231015975}, {"input": [87.5, 94.5], "expected": 94.50091146645377}, {"input": [87.5, 95.0], "expected": 95.00055293147535}, {"input": [87.5, 95.5], "expected": 95.5003354063729}, {"input": [87.5, 96.0], "expected": 96.00020344767213}, {"input": [87.5, 96.5], "expected": 96.50012340218973}, {"input": [87.5, 97.0], "expected": 97.00007484902864}, {"input": [87.5, 97.5], "expected": 97.50004539889922}, {"input": [87.5, 98.0], "expected": 98.00002753607023}, {"input": [87.5, 98.5], "expected": 98.50001670156132}, {"input": [87.5, 99.0], "expected": 99.00001013004228}, {"input": [87.5, 99.5], "expected": 99.50000614419348}, {"input": [88.0, -100.0], "expected": 88.0}, {"input": [88.0, -99.5], "expected": 88.0}, {"input": [88.0, -99.0], "expected": 88.0}, {"input": [88.0, -98.5], "expected": 88.0}, {"input": [88.0, -98.0], "expected": 88.0}, {"input": [88.0, -97.5], "expected": 88.0}, {"input": [88.0, -97.0], "expected": 88.0}, {"input": [88.0, -96.5], "expected": 88.0}, {"input": [88.0, -96.0], "expected": 88.0}, {"input": [88.0, -95.5], "expected": 88.0}, {"input": [88.0, -95.0], "expected": 88.0}, {"input": [88.0, -94.5], "expected": 88.0}, {"input": [88.0, -94.0], "expected": 88.0}, {"input": [88.0, -93.5], "expected": 88.0}, {"input": [88.0, -93.0], "expected": 88.0}, {"input": [88.0, -92.5], "expected": 88.0}, {"input": [88.0, -92.0], "expected": 88.0}, {"input": [88.0, -91.5], "expected": 88.0}, {"input": [88.0, -91.0], "expected": 88.0}, {"input": [88.0, -90.5], "expected": 88.0}, {"input": [88.0, -90.0], "expected": 88.0}, {"input": [88.0, -89.5], "expected": 88.0}, {"input": [88.0, -89.0], "expected": 88.0}, {"input": [88.0, -88.5], "expected": 88.0}, {"input": [88.0, -88.0], "expected": 88.0}, {"input": [88.0, -87.5], "expected": 88.0}, {"input": [88.0, -87.0], "expected": 88.0}, {"input": [88.0, -86.5], "expected": 88.0}, {"input": [88.0, -86.0], "expected": 88.0}, {"input": [88.0, -85.5], "expected": 88.0}, {"input": [88.0, -85.0], "expected": 88.0}, {"input": [88.0, -84.5], "expected": 88.0}, {"input": [88.0, -84.0], "expected": 88.0}, {"input": [88.0, -83.5], "expected": 88.0}, {"input": [88.0, -83.0], "expected": 88.0}, {"input": [88.0, -82.5], "expected": 88.0}, {"input": [88.0, -82.0], "expected": 88.0}, {"input": [88.0, -81.5], "expected": 88.0}, {"input": [88.0, -81.0], "expected": 88.0}, {"input": [88.0, -80.5], "expected": 88.0}, {"input": [88.0, -80.0], "expected": 88.0}, {"input": [88.0, -79.5], "expected": 88.0}, {"input": [88.0, -79.0], "expected": 88.0}, {"input": [88.0, -78.5], "expected": 88.0}, {"input": [88.0, -78.0], "expected": 88.0}, {"input": [88.0, -77.5], "expected": 88.0}, {"input": [88.0, -77.0], "expected": 88.0}, {"input": [88.0, -76.5], "expected": 88.0}, {"input": [88.0, -76.0], "expected": 88.0}, {"input": [88.0, -75.5], "expected": 88.0}, {"input": [88.0, -75.0], "expected": 88.0}, {"input": [88.0, -74.5], "expected": 88.0}, {"input": [88.0, -74.0], "expected": 88.0}, {"input": [88.0, -73.5], "expected": 88.0}, {"input": [88.0, -73.0], "expected": 88.0}, {"input": [88.0, -72.5], "expected": 88.0}, {"input": [88.0, -72.0], "expected": 88.0}, {"input": [88.0, -71.5], "expected": 88.0}, {"input": [88.0, -71.0], "expected": 88.0}, {"input": [88.0, -70.5], "expected": 88.0}, {"input": [88.0, -70.0], "expected": 88.0}, {"input": [88.0, -69.5], "expected": 88.0}, {"input": [88.0, -69.0], "expected": 88.0}, {"input": [88.0, -68.5], "expected": 88.0}, {"input": [88.0, -68.0], "expected": 88.0}, {"input": [88.0, -67.5], "expected": 88.0}, {"input": [88.0, -67.0], "expected": 88.0}, {"input": [88.0, -66.5], "expected": 88.0}, {"input": [88.0, -66.0], "expected": 88.0}, {"input": [88.0, -65.5], "expected": 88.0}, {"input": [88.0, -65.0], "expected": 88.0}, {"input": [88.0, -64.5], "expected": 88.0}, {"input": [88.0, -64.0], "expected": 88.0}, {"input": [88.0, -63.5], "expected": 88.0}, {"input": [88.0, -63.0], "expected": 88.0}, {"input": [88.0, -62.5], "expected": 88.0}, {"input": [88.0, -62.0], "expected": 88.0}, {"input": [88.0, -61.5], "expected": 88.0}, {"input": [88.0, -61.0], "expected": 88.0}, {"input": [88.0, -60.5], "expected": 88.0}, {"input": [88.0, -60.0], "expected": 88.0}, {"input": [88.0, -59.5], "expected": 88.0}, {"input": [88.0, -59.0], "expected": 88.0}, {"input": [88.0, -58.5], "expected": 88.0}, {"input": [88.0, -58.0], "expected": 88.0}, {"input": [88.0, -57.5], "expected": 88.0}, {"input": [88.0, -57.0], "expected": 88.0}, {"input": [88.0, -56.5], "expected": 88.0}, {"input": [88.0, -56.0], "expected": 88.0}, {"input": [88.0, -55.5], "expected": 88.0}, {"input": [88.0, -55.0], "expected": 88.0}, {"input": [88.0, -54.5], "expected": 88.0}, {"input": [88.0, -54.0], "expected": 88.0}, {"input": [88.0, -53.5], "expected": 88.0}, {"input": [88.0, -53.0], "expected": 88.0}, {"input": [88.0, -52.5], "expected": 88.0}, {"input": [88.0, -52.0], "expected": 88.0}, {"input": [88.0, -51.5], "expected": 88.0}, {"input": [88.0, -51.0], "expected": 88.0}, {"input": [88.0, -50.5], "expected": 88.0}, {"input": [88.0, -50.0], "expected": 88.0}, {"input": [88.0, -49.5], "expected": 88.0}, {"input": [88.0, -49.0], "expected": 88.0}, {"input": [88.0, -48.5], "expected": 88.0}, {"input": [88.0, -48.0], "expected": 88.0}, {"input": [88.0, -47.5], "expected": 88.0}, {"input": [88.0, -47.0], "expected": 88.0}, {"input": [88.0, -46.5], "expected": 88.0}, {"input": [88.0, -46.0], "expected": 88.0}, {"input": [88.0, -45.5], "expected": 88.0}, {"input": [88.0, -45.0], "expected": 88.0}, {"input": [88.0, -44.5], "expected": 88.0}, {"input": [88.0, -44.0], "expected": 88.0}, {"input": [88.0, -43.5], "expected": 88.0}, {"input": [88.0, -43.0], "expected": 88.0}, {"input": [88.0, -42.5], "expected": 88.0}, {"input": [88.0, -42.0], "expected": 88.0}, {"input": [88.0, -41.5], "expected": 88.0}, {"input": [88.0, -41.0], "expected": 88.0}, {"input": [88.0, -40.5], "expected": 88.0}, {"input": [88.0, -40.0], "expected": 88.0}, {"input": [88.0, -39.5], "expected": 88.0}, {"input": [88.0, -39.0], "expected": 88.0}, {"input": [88.0, -38.5], "expected": 88.0}, {"input": [88.0, -38.0], "expected": 88.0}, {"input": [88.0, -37.5], "expected": 88.0}, {"input": [88.0, -37.0], "expected": 88.0}, {"input": [88.0, -36.5], "expected": 88.0}, {"input": [88.0, -36.0], "expected": 88.0}, {"input": [88.0, -35.5], "expected": 88.0}, {"input": [88.0, -35.0], "expected": 88.0}, {"input": [88.0, -34.5], "expected": 88.0}, {"input": [88.0, -34.0], "expected": 88.0}, {"input": [88.0, -33.5], "expected": 88.0}, {"input": [88.0, -33.0], "expected": 88.0}, {"input": [88.0, -32.5], "expected": 88.0}, {"input": [88.0, -32.0], "expected": 88.0}, {"input": [88.0, -31.5], "expected": 88.0}, {"input": [88.0, -31.0], "expected": 88.0}, {"input": [88.0, -30.5], "expected": 88.0}, {"input": [88.0, -30.0], "expected": 88.0}, {"input": [88.0, -29.5], "expected": 88.0}, {"input": [88.0, -29.0], "expected": 88.0}, {"input": [88.0, -28.5], "expected": 88.0}, {"input": [88.0, -28.0], "expected": 88.0}, {"input": [88.0, -27.5], "expected": 88.0}, {"input": [88.0, -27.0], "expected": 88.0}, {"input": [88.0, -26.5], "expected": 88.0}, {"input": [88.0, -26.0], "expected": 88.0}, {"input": [88.0, -25.5], "expected": 88.0}, {"input": [88.0, -25.0], "expected": 88.0}, {"input": [88.0, -24.5], "expected": 88.0}, {"input": [88.0, -24.0], "expected": 88.0}, {"input": [88.0, -23.5], "expected": 88.0}, {"input": [88.0, -23.0], "expected": 88.0}, {"input": [88.0, -22.5], "expected": 88.0}, {"input": [88.0, -22.0], "expected": 88.0}, {"input": [88.0, -21.5], "expected": 88.0}, {"input": [88.0, -21.0], "expected": 88.0}, {"input": [88.0, -20.5], "expected": 88.0}, {"input": [88.0, -20.0], "expected": 88.0}, {"input": [88.0, -19.5], "expected": 88.0}, {"input": [88.0, -19.0], "expected": 88.0}, {"input": [88.0, -18.5], "expected": 88.0}, {"input": [88.0, -18.0], "expected": 88.0}, {"input": [88.0, -17.5], "expected": 88.0}, {"input": [88.0, -17.0], "expected": 88.0}, {"input": [88.0, -16.5], "expected": 88.0}, {"input": [88.0, -16.0], "expected": 88.0}, {"input": [88.0, -15.5], "expected": 88.0}, {"input": [88.0, -15.0], "expected": 88.0}, {"input": [88.0, -14.5], "expected": 88.0}, {"input": [88.0, -14.0], "expected": 88.0}, {"input": [88.0, -13.5], "expected": 88.0}, {"input": [88.0, -13.0], "expected": 88.0}, {"input": [88.0, -12.5], "expected": 88.0}, {"input": [88.0, -12.0], "expected": 88.0}, {"input": [88.0, -11.5], "expected": 88.0}, {"input": [88.0, -11.0], "expected": 88.0}, {"input": [88.0, -10.5], "expected": 88.0}, {"input": [88.0, -10.0], "expected": 88.0}, {"input": [88.0, -9.5], "expected": 88.0}, {"input": [88.0, -9.0], "expected": 88.0}, {"input": [88.0, -8.5], "expected": 88.0}, {"input": [88.0, -8.0], "expected": 88.0}, {"input": [88.0, -7.5], "expected": 88.0}, {"input": [88.0, -7.0], "expected": 88.0}, {"input": [88.0, -6.5], "expected": 88.0}, {"input": [88.0, -6.0], "expected": 88.0}, {"input": [88.0, -5.5], "expected": 88.0}, {"input": [88.0, -5.0], "expected": 88.0}, {"input": [88.0, -4.5], "expected": 88.0}, {"input": [88.0, -4.0], "expected": 88.0}, {"input": [88.0, -3.5], "expected": 88.0}, {"input": [88.0, -3.0], "expected": 88.0}, {"input": [88.0, -2.5], "expected": 88.0}, {"input": [88.0, -2.0], "expected": 88.0}, {"input": [88.0, -1.5], "expected": 88.0}, {"input": [88.0, -1.0], "expected": 88.0}, {"input": [88.0, -0.5], "expected": 88.0}, {"input": [88.0, 0.0], "expected": 88.0}, {"input": [88.0, 0.5], "expected": 88.0}, {"input": [88.0, 1.0], "expected": 88.0}, {"input": [88.0, 1.5], "expected": 88.0}, {"input": [88.0, 2.0], "expected": 88.0}, {"input": [88.0, 2.5], "expected": 88.0}, {"input": [88.0, 3.0], "expected": 88.0}, {"input": [88.0, 3.5], "expected": 88.0}, {"input": [88.0, 4.0], "expected": 88.0}, {"input": [88.0, 4.5], "expected": 88.0}, {"input": [88.0, 5.0], "expected": 88.0}, {"input": [88.0, 5.5], "expected": 88.0}, {"input": [88.0, 6.0], "expected": 88.0}, {"input": [88.0, 6.5], "expected": 88.0}, {"input": [88.0, 7.0], "expected": 88.0}, {"input": [88.0, 7.5], "expected": 88.0}, {"input": [88.0, 8.0], "expected": 88.0}, {"input": [88.0, 8.5], "expected": 88.0}, {"input": [88.0, 9.0], "expected": 88.0}, {"input": [88.0, 9.5], "expected": 88.0}, {"input": [88.0, 10.0], "expected": 88.0}, {"input": [88.0, 10.5], "expected": 88.0}, {"input": [88.0, 11.0], "expected": 88.0}, {"input": [88.0, 11.5], "expected": 88.0}, {"input": [88.0, 12.0], "expected": 88.0}, {"input": [88.0, 12.5], "expected": 88.0}, {"input": [88.0, 13.0], "expected": 88.0}, {"input": [88.0, 13.5], "expected": 88.0}, {"input": [88.0, 14.0], "expected": 88.0}, {"input": [88.0, 14.5], "expected": 88.0}, {"input": [88.0, 15.0], "expected": 88.0}, {"input": [88.0, 15.5], "expected": 88.0}, {"input": [88.0, 16.0], "expected": 88.0}, {"input": [88.0, 16.5], "expected": 88.0}, {"input": [88.0, 17.0], "expected": 88.0}, {"input": [88.0, 17.5], "expected": 88.0}, {"input": [88.0, 18.0], "expected": 88.0}, {"input": [88.0, 18.5], "expected": 88.0}, {"input": [88.0, 19.0], "expected": 88.0}, {"input": [88.0, 19.5], "expected": 88.0}, {"input": [88.0, 20.0], "expected": 88.0}, {"input": [88.0, 20.5], "expected": 88.0}, {"input": [88.0, 21.0], "expected": 88.0}, {"input": [88.0, 21.5], "expected": 88.0}, {"input": [88.0, 22.0], "expected": 88.0}, {"input": [88.0, 22.5], "expected": 88.0}, {"input": [88.0, 23.0], "expected": 88.0}, {"input": [88.0, 23.5], "expected": 88.0}, {"input": [88.0, 24.0], "expected": 88.0}, {"input": [88.0, 24.5], "expected": 88.0}, {"input": [88.0, 25.0], "expected": 88.0}, {"input": [88.0, 25.5], "expected": 88.0}, {"input": [88.0, 26.0], "expected": 88.0}, {"input": [88.0, 26.5], "expected": 88.0}, {"input": [88.0, 27.0], "expected": 88.0}, {"input": [88.0, 27.5], "expected": 88.0}, {"input": [88.0, 28.0], "expected": 88.0}, {"input": [88.0, 28.5], "expected": 88.0}, {"input": [88.0, 29.0], "expected": 88.0}, {"input": [88.0, 29.5], "expected": 88.0}, {"input": [88.0, 30.0], "expected": 88.0}, {"input": [88.0, 30.5], "expected": 88.0}, {"input": [88.0, 31.0], "expected": 88.0}, {"input": [88.0, 31.5], "expected": 88.0}, {"input": [88.0, 32.0], "expected": 88.0}, {"input": [88.0, 32.5], "expected": 88.0}, {"input": [88.0, 33.0], "expected": 88.0}, {"input": [88.0, 33.5], "expected": 88.0}, {"input": [88.0, 34.0], "expected": 88.0}, {"input": [88.0, 34.5], "expected": 88.0}, {"input": [88.0, 35.0], "expected": 88.0}, {"input": [88.0, 35.5], "expected": 88.0}, {"input": [88.0, 36.0], "expected": 88.0}, {"input": [88.0, 36.5], "expected": 88.0}, {"input": [88.0, 37.0], "expected": 88.0}, {"input": [88.0, 37.5], "expected": 88.0}, {"input": [88.0, 38.0], "expected": 88.0}, {"input": [88.0, 38.5], "expected": 88.0}, {"input": [88.0, 39.0], "expected": 88.0}, {"input": [88.0, 39.5], "expected": 88.0}, {"input": [88.0, 40.0], "expected": 88.0}, {"input": [88.0, 40.5], "expected": 88.0}, {"input": [88.0, 41.0], "expected": 88.0}, {"input": [88.0, 41.5], "expected": 88.0}, {"input": [88.0, 42.0], "expected": 88.0}, {"input": [88.0, 42.5], "expected": 88.0}, {"input": [88.0, 43.0], "expected": 88.0}, {"input": [88.0, 43.5], "expected": 88.0}, {"input": [88.0, 44.0], "expected": 88.0}, {"input": [88.0, 44.5], "expected": 88.0}, {"input": [88.0, 45.0], "expected": 88.0}, {"input": [88.0, 45.5], "expected": 88.0}, {"input": [88.0, 46.0], "expected": 88.0}, {"input": [88.0, 46.5], "expected": 88.0}, {"input": [88.0, 47.0], "expected": 88.0}, {"input": [88.0, 47.5], "expected": 88.0}, {"input": [88.0, 48.0], "expected": 88.0}, {"input": [88.0, 48.5], "expected": 88.0}, {"input": [88.0, 49.0], "expected": 88.0}, {"input": [88.0, 49.5], "expected": 88.0}, {"input": [88.0, 50.0], "expected": 88.0}, {"input": [88.0, 50.5], "expected": 88.0}, {"input": [88.0, 51.0], "expected": 88.0}, {"input": [88.0, 51.5], "expected": 88.0}, {"input": [88.0, 52.0], "expected": 88.0}, {"input": [88.0, 52.5], "expected": 88.0}, {"input": [88.0, 53.0], "expected": 88.0}, {"input": [88.0, 53.5], "expected": 88.0}, {"input": [88.0, 54.0], "expected": 88.0}, {"input": [88.0, 54.5], "expected": 88.0}, {"input": [88.0, 55.0], "expected": 88.0}, {"input": [88.0, 55.5], "expected": 88.00000000000001}, {"input": [88.0, 56.0], "expected": 88.00000000000001}, {"input": [88.0, 56.5], "expected": 88.00000000000001}, {"input": [88.0, 57.0], "expected": 88.00000000000003}, {"input": [88.0, 57.5], "expected": 88.00000000000006}, {"input": [88.0, 58.0], "expected": 88.0000000000001}, {"input": [88.0, 58.5], "expected": 88.00000000000016}, {"input": [88.0, 59.0], "expected": 88.00000000000026}, {"input": [88.0, 59.5], "expected": 88.00000000000043}, {"input": [88.0, 60.0], "expected": 88.0000000000007}, {"input": [88.0, 60.5], "expected": 88.00000000000114}, {"input": [88.0, 61.0], "expected": 88.00000000000188}, {"input": [88.0, 61.5], "expected": 88.0000000000031}, {"input": [88.0, 62.0], "expected": 88.00000000000512}, {"input": [88.0, 62.5], "expected": 88.00000000000843}, {"input": [88.0, 63.0], "expected": 88.00000000001388}, {"input": [88.0, 63.5], "expected": 88.0000000000229}, {"input": [88.0, 64.0], "expected": 88.00000000003776}, {"input": [88.0, 64.5], "expected": 88.00000000006224}, {"input": [88.0, 65.0], "expected": 88.00000000010262}, {"input": [88.0, 65.5], "expected": 88.0000000001692}, {"input": [88.0, 66.0], "expected": 88.00000000027894}, {"input": [88.0, 66.5], "expected": 88.0000000004599}, {"input": [88.0, 67.0], "expected": 88.00000000075826}, {"input": [88.0, 67.5], "expected": 88.00000000125016}, {"input": [88.0, 68.0], "expected": 88.00000000206116}, {"input": [88.0, 68.5], "expected": 88.00000000339827}, {"input": [88.0, 69.0], "expected": 88.0000000056028}, {"input": [88.0, 69.5], "expected": 88.00000000923745}, {"input": [88.0, 70.0], "expected": 88.00000001522999}, {"input": [88.0, 70.5], "expected": 88.00000002511}, {"input": [88.0, 71.0], "expected": 88.00000004139937}, {"input": [88.0, 71.5], "expected": 88.00000006825603}, {"input": [88.0, 72.0], "expected": 88.00000011253516}, {"input": [88.0, 72.5], "expected": 88.00000018553912}, {"input": [88.0, 73.0], "expected": 88.00000030590228}, {"input": [88.0, 73.5], "expected": 88.00000050434754}, {"input": [88.0, 74.0], "expected": 88.00000083152837}, {"input": [88.0, 74.5], "expected": 88.00000137095815}, {"input": [88.0, 75.0], "expected": 88.00000226032685}, {"input": [88.0, 75.5], "expected": 88.00000372664623}, {"input": [88.0, 76.0], "expected": 88.00000614419348}, {"input": [88.0, 76.5], "expected": 88.00001013004228}, {"input": [88.0, 77.0], "expected": 88.00001670156132}, {"input": [88.0, 77.5], "expected": 88.00002753607023}, {"input": [88.0, 78.0], "expected": 88.00004539889922}, {"input": [88.0, 78.5], "expected": 88.00007484902864}, {"input": [88.0, 79.0], "expected": 88.00012340218973}, {"input": [88.0, 79.5], "expected": 88.00020344767213}, {"input": [88.0, 80.0], "expected": 88.0003354063729}, {"input": [88.0, 80.5], "expected": 88.00055293147535}, {"input": [88.0, 81.0], "expected": 88.00091146645377}, {"input": [88.0, 81.5], "expected": 88.00150231015975}, {"input": [88.0, 82.0], "expected": 88.00247568513772}, {"input": [88.0, 82.5], "expected": 88.00407844327057}, {"input": [88.0, 83.0], "expected": 88.00671534848912}, {"input": [88.0, 83.5], "expected": 88.0110477448486}, {"input": [88.0, 84.0], "expected": 88.0181499279178}, {"input": [88.0, 84.5], "expected": 88.02975041827263}, {"input": [88.0, 85.0], "expected": 88.04858735157374}, {"input": [88.0, 85.5], "expected": 88.07888973429255}, {"input": [88.0, 86.0], "expected": 88.12692801104298}, {"input": [88.0, 86.5], "expected": 88.20141327798275}, {"input": [88.0, 87.0], "expected": 88.31326168751822}, {"input": [88.0, 87.5], "expected": 88.4740769841801}, {"input": [88.0, 88.0], "expected": 88.69314718055995}, {"input": [88.0, 88.5], "expected": 88.9740769841801}, {"input": [88.0, 89.0], "expected": 89.31326168751822}, {"input": [88.0, 89.5], "expected": 89.70141327798275}, {"input": [88.0, 90.0], "expected": 90.12692801104298}, {"input": [88.0, 90.5], "expected": 90.57888973429255}, {"input": [88.0, 91.0], "expected": 91.04858735157374}, {"input": [88.0, 91.5], "expected": 91.52975041827263}, {"input": [88.0, 92.0], "expected": 92.0181499279178}, {"input": [88.0, 92.5], "expected": 92.5110477448486}, {"input": [88.0, 93.0], "expected": 93.00671534848912}, {"input": [88.0, 93.5], "expected": 93.50407844327057}, {"input": [88.0, 94.0], "expected": 94.00247568513772}, {"input": [88.0, 94.5], "expected": 94.50150231015975}, {"input": [88.0, 95.0], "expected": 95.00091146645377}, {"input": [88.0, 95.5], "expected": 95.50055293147535}, {"input": [88.0, 96.0], "expected": 96.0003354063729}, {"input": [88.0, 96.5], "expected": 96.50020344767213}, {"input": [88.0, 97.0], "expected": 97.00012340218973}, {"input": [88.0, 97.5], "expected": 97.50007484902864}, {"input": [88.0, 98.0], "expected": 98.00004539889922}, {"input": [88.0, 98.5], "expected": 98.50002753607023}, {"input": [88.0, 99.0], "expected": 99.00001670156132}, {"input": [88.0, 99.5], "expected": 99.50001013004228}, {"input": [88.5, -100.0], "expected": 88.5}, {"input": [88.5, -99.5], "expected": 88.5}, {"input": [88.5, -99.0], "expected": 88.5}, {"input": [88.5, -98.5], "expected": 88.5}, {"input": [88.5, -98.0], "expected": 88.5}, {"input": [88.5, -97.5], "expected": 88.5}, {"input": [88.5, -97.0], "expected": 88.5}, {"input": [88.5, -96.5], "expected": 88.5}, {"input": [88.5, -96.0], "expected": 88.5}, {"input": [88.5, -95.5], "expected": 88.5}, {"input": [88.5, -95.0], "expected": 88.5}, {"input": [88.5, -94.5], "expected": 88.5}, {"input": [88.5, -94.0], "expected": 88.5}, {"input": [88.5, -93.5], "expected": 88.5}, {"input": [88.5, -93.0], "expected": 88.5}, {"input": [88.5, -92.5], "expected": 88.5}, {"input": [88.5, -92.0], "expected": 88.5}, {"input": [88.5, -91.5], "expected": 88.5}, {"input": [88.5, -91.0], "expected": 88.5}, {"input": [88.5, -90.5], "expected": 88.5}, {"input": [88.5, -90.0], "expected": 88.5}, {"input": [88.5, -89.5], "expected": 88.5}, {"input": [88.5, -89.0], "expected": 88.5}, {"input": [88.5, -88.5], "expected": 88.5}, {"input": [88.5, -88.0], "expected": 88.5}, {"input": [88.5, -87.5], "expected": 88.5}, {"input": [88.5, -87.0], "expected": 88.5}, {"input": [88.5, -86.5], "expected": 88.5}, {"input": [88.5, -86.0], "expected": 88.5}, {"input": [88.5, -85.5], "expected": 88.5}, {"input": [88.5, -85.0], "expected": 88.5}, {"input": [88.5, -84.5], "expected": 88.5}, {"input": [88.5, -84.0], "expected": 88.5}, {"input": [88.5, -83.5], "expected": 88.5}, {"input": [88.5, -83.0], "expected": 88.5}, {"input": [88.5, -82.5], "expected": 88.5}, {"input": [88.5, -82.0], "expected": 88.5}, {"input": [88.5, -81.5], "expected": 88.5}, {"input": [88.5, -81.0], "expected": 88.5}, {"input": [88.5, -80.5], "expected": 88.5}, {"input": [88.5, -80.0], "expected": 88.5}, {"input": [88.5, -79.5], "expected": 88.5}, {"input": [88.5, -79.0], "expected": 88.5}, {"input": [88.5, -78.5], "expected": 88.5}, {"input": [88.5, -78.0], "expected": 88.5}, {"input": [88.5, -77.5], "expected": 88.5}, {"input": [88.5, -77.0], "expected": 88.5}, {"input": [88.5, -76.5], "expected": 88.5}, {"input": [88.5, -76.0], "expected": 88.5}, {"input": [88.5, -75.5], "expected": 88.5}, {"input": [88.5, -75.0], "expected": 88.5}, {"input": [88.5, -74.5], "expected": 88.5}, {"input": [88.5, -74.0], "expected": 88.5}, {"input": [88.5, -73.5], "expected": 88.5}, {"input": [88.5, -73.0], "expected": 88.5}, {"input": [88.5, -72.5], "expected": 88.5}, {"input": [88.5, -72.0], "expected": 88.5}, {"input": [88.5, -71.5], "expected": 88.5}, {"input": [88.5, -71.0], "expected": 88.5}, {"input": [88.5, -70.5], "expected": 88.5}, {"input": [88.5, -70.0], "expected": 88.5}, {"input": [88.5, -69.5], "expected": 88.5}, {"input": [88.5, -69.0], "expected": 88.5}, {"input": [88.5, -68.5], "expected": 88.5}, {"input": [88.5, -68.0], "expected": 88.5}, {"input": [88.5, -67.5], "expected": 88.5}, {"input": [88.5, -67.0], "expected": 88.5}, {"input": [88.5, -66.5], "expected": 88.5}, {"input": [88.5, -66.0], "expected": 88.5}, {"input": [88.5, -65.5], "expected": 88.5}, {"input": [88.5, -65.0], "expected": 88.5}, {"input": [88.5, -64.5], "expected": 88.5}, {"input": [88.5, -64.0], "expected": 88.5}, {"input": [88.5, -63.5], "expected": 88.5}, {"input": [88.5, -63.0], "expected": 88.5}, {"input": [88.5, -62.5], "expected": 88.5}, {"input": [88.5, -62.0], "expected": 88.5}, {"input": [88.5, -61.5], "expected": 88.5}, {"input": [88.5, -61.0], "expected": 88.5}, {"input": [88.5, -60.5], "expected": 88.5}, {"input": [88.5, -60.0], "expected": 88.5}, {"input": [88.5, -59.5], "expected": 88.5}, {"input": [88.5, -59.0], "expected": 88.5}, {"input": [88.5, -58.5], "expected": 88.5}, {"input": [88.5, -58.0], "expected": 88.5}, {"input": [88.5, -57.5], "expected": 88.5}, {"input": [88.5, -57.0], "expected": 88.5}, {"input": [88.5, -56.5], "expected": 88.5}, {"input": [88.5, -56.0], "expected": 88.5}, {"input": [88.5, -55.5], "expected": 88.5}, {"input": [88.5, -55.0], "expected": 88.5}, {"input": [88.5, -54.5], "expected": 88.5}, {"input": [88.5, -54.0], "expected": 88.5}, {"input": [88.5, -53.5], "expected": 88.5}, {"input": [88.5, -53.0], "expected": 88.5}, {"input": [88.5, -52.5], "expected": 88.5}, {"input": [88.5, -52.0], "expected": 88.5}, {"input": [88.5, -51.5], "expected": 88.5}, {"input": [88.5, -51.0], "expected": 88.5}, {"input": [88.5, -50.5], "expected": 88.5}, {"input": [88.5, -50.0], "expected": 88.5}, {"input": [88.5, -49.5], "expected": 88.5}, {"input": [88.5, -49.0], "expected": 88.5}, {"input": [88.5, -48.5], "expected": 88.5}, {"input": [88.5, -48.0], "expected": 88.5}, {"input": [88.5, -47.5], "expected": 88.5}, {"input": [88.5, -47.0], "expected": 88.5}, {"input": [88.5, -46.5], "expected": 88.5}, {"input": [88.5, -46.0], "expected": 88.5}, {"input": [88.5, -45.5], "expected": 88.5}, {"input": [88.5, -45.0], "expected": 88.5}, {"input": [88.5, -44.5], "expected": 88.5}, {"input": [88.5, -44.0], "expected": 88.5}, {"input": [88.5, -43.5], "expected": 88.5}, {"input": [88.5, -43.0], "expected": 88.5}, {"input": [88.5, -42.5], "expected": 88.5}, {"input": [88.5, -42.0], "expected": 88.5}, {"input": [88.5, -41.5], "expected": 88.5}, {"input": [88.5, -41.0], "expected": 88.5}, {"input": [88.5, -40.5], "expected": 88.5}, {"input": [88.5, -40.0], "expected": 88.5}, {"input": [88.5, -39.5], "expected": 88.5}, {"input": [88.5, -39.0], "expected": 88.5}, {"input": [88.5, -38.5], "expected": 88.5}, {"input": [88.5, -38.0], "expected": 88.5}, {"input": [88.5, -37.5], "expected": 88.5}, {"input": [88.5, -37.0], "expected": 88.5}, {"input": [88.5, -36.5], "expected": 88.5}, {"input": [88.5, -36.0], "expected": 88.5}, {"input": [88.5, -35.5], "expected": 88.5}, {"input": [88.5, -35.0], "expected": 88.5}, {"input": [88.5, -34.5], "expected": 88.5}, {"input": [88.5, -34.0], "expected": 88.5}, {"input": [88.5, -33.5], "expected": 88.5}, {"input": [88.5, -33.0], "expected": 88.5}, {"input": [88.5, -32.5], "expected": 88.5}, {"input": [88.5, -32.0], "expected": 88.5}, {"input": [88.5, -31.5], "expected": 88.5}, {"input": [88.5, -31.0], "expected": 88.5}, {"input": [88.5, -30.5], "expected": 88.5}, {"input": [88.5, -30.0], "expected": 88.5}, {"input": [88.5, -29.5], "expected": 88.5}, {"input": [88.5, -29.0], "expected": 88.5}, {"input": [88.5, -28.5], "expected": 88.5}, {"input": [88.5, -28.0], "expected": 88.5}, {"input": [88.5, -27.5], "expected": 88.5}, {"input": [88.5, -27.0], "expected": 88.5}, {"input": [88.5, -26.5], "expected": 88.5}, {"input": [88.5, -26.0], "expected": 88.5}, {"input": [88.5, -25.5], "expected": 88.5}, {"input": [88.5, -25.0], "expected": 88.5}, {"input": [88.5, -24.5], "expected": 88.5}, {"input": [88.5, -24.0], "expected": 88.5}, {"input": [88.5, -23.5], "expected": 88.5}, {"input": [88.5, -23.0], "expected": 88.5}, {"input": [88.5, -22.5], "expected": 88.5}, {"input": [88.5, -22.0], "expected": 88.5}, {"input": [88.5, -21.5], "expected": 88.5}, {"input": [88.5, -21.0], "expected": 88.5}, {"input": [88.5, -20.5], "expected": 88.5}, {"input": [88.5, -20.0], "expected": 88.5}, {"input": [88.5, -19.5], "expected": 88.5}, {"input": [88.5, -19.0], "expected": 88.5}, {"input": [88.5, -18.5], "expected": 88.5}, {"input": [88.5, -18.0], "expected": 88.5}, {"input": [88.5, -17.5], "expected": 88.5}, {"input": [88.5, -17.0], "expected": 88.5}, {"input": [88.5, -16.5], "expected": 88.5}, {"input": [88.5, -16.0], "expected": 88.5}, {"input": [88.5, -15.5], "expected": 88.5}, {"input": [88.5, -15.0], "expected": 88.5}, {"input": [88.5, -14.5], "expected": 88.5}, {"input": [88.5, -14.0], "expected": 88.5}, {"input": [88.5, -13.5], "expected": 88.5}, {"input": [88.5, -13.0], "expected": 88.5}, {"input": [88.5, -12.5], "expected": 88.5}, {"input": [88.5, -12.0], "expected": 88.5}, {"input": [88.5, -11.5], "expected": 88.5}, {"input": [88.5, -11.0], "expected": 88.5}, {"input": [88.5, -10.5], "expected": 88.5}, {"input": [88.5, -10.0], "expected": 88.5}, {"input": [88.5, -9.5], "expected": 88.5}, {"input": [88.5, -9.0], "expected": 88.5}, {"input": [88.5, -8.5], "expected": 88.5}, {"input": [88.5, -8.0], "expected": 88.5}, {"input": [88.5, -7.5], "expected": 88.5}, {"input": [88.5, -7.0], "expected": 88.5}, {"input": [88.5, -6.5], "expected": 88.5}, {"input": [88.5, -6.0], "expected": 88.5}, {"input": [88.5, -5.5], "expected": 88.5}, {"input": [88.5, -5.0], "expected": 88.5}, {"input": [88.5, -4.5], "expected": 88.5}, {"input": [88.5, -4.0], "expected": 88.5}, {"input": [88.5, -3.5], "expected": 88.5}, {"input": [88.5, -3.0], "expected": 88.5}, {"input": [88.5, -2.5], "expected": 88.5}, {"input": [88.5, -2.0], "expected": 88.5}, {"input": [88.5, -1.5], "expected": 88.5}, {"input": [88.5, -1.0], "expected": 88.5}, {"input": [88.5, -0.5], "expected": 88.5}, {"input": [88.5, 0.0], "expected": 88.5}, {"input": [88.5, 0.5], "expected": 88.5}, {"input": [88.5, 1.0], "expected": 88.5}, {"input": [88.5, 1.5], "expected": 88.5}, {"input": [88.5, 2.0], "expected": 88.5}, {"input": [88.5, 2.5], "expected": 88.5}, {"input": [88.5, 3.0], "expected": 88.5}, {"input": [88.5, 3.5], "expected": 88.5}, {"input": [88.5, 4.0], "expected": 88.5}, {"input": [88.5, 4.5], "expected": 88.5}, {"input": [88.5, 5.0], "expected": 88.5}, {"input": [88.5, 5.5], "expected": 88.5}, {"input": [88.5, 6.0], "expected": 88.5}, {"input": [88.5, 6.5], "expected": 88.5}, {"input": [88.5, 7.0], "expected": 88.5}, {"input": [88.5, 7.5], "expected": 88.5}, {"input": [88.5, 8.0], "expected": 88.5}, {"input": [88.5, 8.5], "expected": 88.5}, {"input": [88.5, 9.0], "expected": 88.5}, {"input": [88.5, 9.5], "expected": 88.5}, {"input": [88.5, 10.0], "expected": 88.5}, {"input": [88.5, 10.5], "expected": 88.5}, {"input": [88.5, 11.0], "expected": 88.5}, {"input": [88.5, 11.5], "expected": 88.5}, {"input": [88.5, 12.0], "expected": 88.5}, {"input": [88.5, 12.5], "expected": 88.5}, {"input": [88.5, 13.0], "expected": 88.5}, {"input": [88.5, 13.5], "expected": 88.5}, {"input": [88.5, 14.0], "expected": 88.5}, {"input": [88.5, 14.5], "expected": 88.5}, {"input": [88.5, 15.0], "expected": 88.5}, {"input": [88.5, 15.5], "expected": 88.5}, {"input": [88.5, 16.0], "expected": 88.5}, {"input": [88.5, 16.5], "expected": 88.5}, {"input": [88.5, 17.0], "expected": 88.5}, {"input": [88.5, 17.5], "expected": 88.5}, {"input": [88.5, 18.0], "expected": 88.5}, {"input": [88.5, 18.5], "expected": 88.5}, {"input": [88.5, 19.0], "expected": 88.5}, {"input": [88.5, 19.5], "expected": 88.5}, {"input": [88.5, 20.0], "expected": 88.5}, {"input": [88.5, 20.5], "expected": 88.5}, {"input": [88.5, 21.0], "expected": 88.5}, {"input": [88.5, 21.5], "expected": 88.5}, {"input": [88.5, 22.0], "expected": 88.5}, {"input": [88.5, 22.5], "expected": 88.5}, {"input": [88.5, 23.0], "expected": 88.5}, {"input": [88.5, 23.5], "expected": 88.5}, {"input": [88.5, 24.0], "expected": 88.5}, {"input": [88.5, 24.5], "expected": 88.5}, {"input": [88.5, 25.0], "expected": 88.5}, {"input": [88.5, 25.5], "expected": 88.5}, {"input": [88.5, 26.0], "expected": 88.5}, {"input": [88.5, 26.5], "expected": 88.5}, {"input": [88.5, 27.0], "expected": 88.5}, {"input": [88.5, 27.5], "expected": 88.5}, {"input": [88.5, 28.0], "expected": 88.5}, {"input": [88.5, 28.5], "expected": 88.5}, {"input": [88.5, 29.0], "expected": 88.5}, {"input": [88.5, 29.5], "expected": 88.5}, {"input": [88.5, 30.0], "expected": 88.5}, {"input": [88.5, 30.5], "expected": 88.5}, {"input": [88.5, 31.0], "expected": 88.5}, {"input": [88.5, 31.5], "expected": 88.5}, {"input": [88.5, 32.0], "expected": 88.5}, {"input": [88.5, 32.5], "expected": 88.5}, {"input": [88.5, 33.0], "expected": 88.5}, {"input": [88.5, 33.5], "expected": 88.5}, {"input": [88.5, 34.0], "expected": 88.5}, {"input": [88.5, 34.5], "expected": 88.5}, {"input": [88.5, 35.0], "expected": 88.5}, {"input": [88.5, 35.5], "expected": 88.5}, {"input": [88.5, 36.0], "expected": 88.5}, {"input": [88.5, 36.5], "expected": 88.5}, {"input": [88.5, 37.0], "expected": 88.5}, {"input": [88.5, 37.5], "expected": 88.5}, {"input": [88.5, 38.0], "expected": 88.5}, {"input": [88.5, 38.5], "expected": 88.5}, {"input": [88.5, 39.0], "expected": 88.5}, {"input": [88.5, 39.5], "expected": 88.5}, {"input": [88.5, 40.0], "expected": 88.5}, {"input": [88.5, 40.5], "expected": 88.5}, {"input": [88.5, 41.0], "expected": 88.5}, {"input": [88.5, 41.5], "expected": 88.5}, {"input": [88.5, 42.0], "expected": 88.5}, {"input": [88.5, 42.5], "expected": 88.5}, {"input": [88.5, 43.0], "expected": 88.5}, {"input": [88.5, 43.5], "expected": 88.5}, {"input": [88.5, 44.0], "expected": 88.5}, {"input": [88.5, 44.5], "expected": 88.5}, {"input": [88.5, 45.0], "expected": 88.5}, {"input": [88.5, 45.5], "expected": 88.5}, {"input": [88.5, 46.0], "expected": 88.5}, {"input": [88.5, 46.5], "expected": 88.5}, {"input": [88.5, 47.0], "expected": 88.5}, {"input": [88.5, 47.5], "expected": 88.5}, {"input": [88.5, 48.0], "expected": 88.5}, {"input": [88.5, 48.5], "expected": 88.5}, {"input": [88.5, 49.0], "expected": 88.5}, {"input": [88.5, 49.5], "expected": 88.5}, {"input": [88.5, 50.0], "expected": 88.5}, {"input": [88.5, 50.5], "expected": 88.5}, {"input": [88.5, 51.0], "expected": 88.5}, {"input": [88.5, 51.5], "expected": 88.5}, {"input": [88.5, 52.0], "expected": 88.5}, {"input": [88.5, 52.5], "expected": 88.5}, {"input": [88.5, 53.0], "expected": 88.5}, {"input": [88.5, 53.5], "expected": 88.5}, {"input": [88.5, 54.0], "expected": 88.5}, {"input": [88.5, 54.5], "expected": 88.5}, {"input": [88.5, 55.0], "expected": 88.5}, {"input": [88.5, 55.5], "expected": 88.5}, {"input": [88.5, 56.0], "expected": 88.50000000000001}, {"input": [88.5, 56.5], "expected": 88.50000000000001}, {"input": [88.5, 57.0], "expected": 88.50000000000001}, {"input": [88.5, 57.5], "expected": 88.50000000000003}, {"input": [88.5, 58.0], "expected": 88.50000000000006}, {"input": [88.5, 58.5], "expected": 88.5000000000001}, {"input": [88.5, 59.0], "expected": 88.50000000000016}, {"input": [88.5, 59.5], "expected": 88.50000000000026}, {"input": [88.5, 60.0], "expected": 88.50000000000043}, {"input": [88.5, 60.5], "expected": 88.5000000000007}, {"input": [88.5, 61.0], "expected": 88.50000000000114}, {"input": [88.5, 61.5], "expected": 88.50000000000188}, {"input": [88.5, 62.0], "expected": 88.5000000000031}, {"input": [88.5, 62.5], "expected": 88.50000000000512}, {"input": [88.5, 63.0], "expected": 88.50000000000843}, {"input": [88.5, 63.5], "expected": 88.50000000001388}, {"input": [88.5, 64.0], "expected": 88.5000000000229}, {"input": [88.5, 64.5], "expected": 88.50000000003776}, {"input": [88.5, 65.0], "expected": 88.50000000006224}, {"input": [88.5, 65.5], "expected": 88.50000000010262}, {"input": [88.5, 66.0], "expected": 88.5000000001692}, {"input": [88.5, 66.5], "expected": 88.50000000027894}, {"input": [88.5, 67.0], "expected": 88.5000000004599}, {"input": [88.5, 67.5], "expected": 88.50000000075826}, {"input": [88.5, 68.0], "expected": 88.50000000125016}, {"input": [88.5, 68.5], "expected": 88.50000000206116}, {"input": [88.5, 69.0], "expected": 88.50000000339827}, {"input": [88.5, 69.5], "expected": 88.5000000056028}, {"input": [88.5, 70.0], "expected": 88.50000000923745}, {"input": [88.5, 70.5], "expected": 88.50000001522999}, {"input": [88.5, 71.0], "expected": 88.50000002511}, {"input": [88.5, 71.5], "expected": 88.50000004139937}, {"input": [88.5, 72.0], "expected": 88.50000006825603}, {"input": [88.5, 72.5], "expected": 88.50000011253516}, {"input": [88.5, 73.0], "expected": 88.50000018553912}, {"input": [88.5, 73.5], "expected": 88.50000030590228}, {"input": [88.5, 74.0], "expected": 88.50000050434754}, {"input": [88.5, 74.5], "expected": 88.50000083152837}, {"input": [88.5, 75.0], "expected": 88.50000137095815}, {"input": [88.5, 75.5], "expected": 88.50000226032685}, {"input": [88.5, 76.0], "expected": 88.50000372664623}, {"input": [88.5, 76.5], "expected": 88.50000614419348}, {"input": [88.5, 77.0], "expected": 88.50001013004228}, {"input": [88.5, 77.5], "expected": 88.50001670156132}, {"input": [88.5, 78.0], "expected": 88.50002753607023}, {"input": [88.5, 78.5], "expected": 88.50004539889922}, {"input": [88.5, 79.0], "expected": 88.50007484902864}, {"input": [88.5, 79.5], "expected": 88.50012340218973}, {"input": [88.5, 80.0], "expected": 88.50020344767213}, {"input": [88.5, 80.5], "expected": 88.5003354063729}, {"input": [88.5, 81.0], "expected": 88.50055293147535}, {"input": [88.5, 81.5], "expected": 88.50091146645377}, {"input": [88.5, 82.0], "expected": 88.50150231015975}, {"input": [88.5, 82.5], "expected": 88.50247568513772}, {"input": [88.5, 83.0], "expected": 88.50407844327057}, {"input": [88.5, 83.5], "expected": 88.50671534848912}, {"input": [88.5, 84.0], "expected": 88.5110477448486}, {"input": [88.5, 84.5], "expected": 88.5181499279178}, {"input": [88.5, 85.0], "expected": 88.52975041827263}, {"input": [88.5, 85.5], "expected": 88.54858735157374}, {"input": [88.5, 86.0], "expected": 88.57888973429255}, {"input": [88.5, 86.5], "expected": 88.62692801104298}, {"input": [88.5, 87.0], "expected": 88.70141327798275}, {"input": [88.5, 87.5], "expected": 88.81326168751822}, {"input": [88.5, 88.0], "expected": 88.9740769841801}, {"input": [88.5, 88.5], "expected": 89.19314718055995}, {"input": [88.5, 89.0], "expected": 89.4740769841801}, {"input": [88.5, 89.5], "expected": 89.81326168751822}, {"input": [88.5, 90.0], "expected": 90.20141327798275}, {"input": [88.5, 90.5], "expected": 90.62692801104298}, {"input": [88.5, 91.0], "expected": 91.07888973429255}, {"input": [88.5, 91.5], "expected": 91.54858735157374}, {"input": [88.5, 92.0], "expected": 92.02975041827263}, {"input": [88.5, 92.5], "expected": 92.5181499279178}, {"input": [88.5, 93.0], "expected": 93.0110477448486}, {"input": [88.5, 93.5], "expected": 93.50671534848912}, {"input": [88.5, 94.0], "expected": 94.00407844327057}, {"input": [88.5, 94.5], "expected": 94.50247568513772}, {"input": [88.5, 95.0], "expected": 95.00150231015975}, {"input": [88.5, 95.5], "expected": 95.50091146645377}, {"input": [88.5, 96.0], "expected": 96.00055293147535}, {"input": [88.5, 96.5], "expected": 96.5003354063729}, {"input": [88.5, 97.0], "expected": 97.00020344767213}, {"input": [88.5, 97.5], "expected": 97.50012340218973}, {"input": [88.5, 98.0], "expected": 98.00007484902864}, {"input": [88.5, 98.5], "expected": 98.50004539889922}, {"input": [88.5, 99.0], "expected": 99.00002753607023}, {"input": [88.5, 99.5], "expected": 99.50001670156132}, {"input": [89.0, -100.0], "expected": 89.0}, {"input": [89.0, -99.5], "expected": 89.0}, {"input": [89.0, -99.0], "expected": 89.0}, {"input": [89.0, -98.5], "expected": 89.0}, {"input": [89.0, -98.0], "expected": 89.0}, {"input": [89.0, -97.5], "expected": 89.0}, {"input": [89.0, -97.0], "expected": 89.0}, {"input": [89.0, -96.5], "expected": 89.0}, {"input": [89.0, -96.0], "expected": 89.0}, {"input": [89.0, -95.5], "expected": 89.0}, {"input": [89.0, -95.0], "expected": 89.0}, {"input": [89.0, -94.5], "expected": 89.0}, {"input": [89.0, -94.0], "expected": 89.0}, {"input": [89.0, -93.5], "expected": 89.0}, {"input": [89.0, -93.0], "expected": 89.0}, {"input": [89.0, -92.5], "expected": 89.0}, {"input": [89.0, -92.0], "expected": 89.0}, {"input": [89.0, -91.5], "expected": 89.0}, {"input": [89.0, -91.0], "expected": 89.0}, {"input": [89.0, -90.5], "expected": 89.0}, {"input": [89.0, -90.0], "expected": 89.0}, {"input": [89.0, -89.5], "expected": 89.0}, {"input": [89.0, -89.0], "expected": 89.0}, {"input": [89.0, -88.5], "expected": 89.0}, {"input": [89.0, -88.0], "expected": 89.0}, {"input": [89.0, -87.5], "expected": 89.0}, {"input": [89.0, -87.0], "expected": 89.0}, {"input": [89.0, -86.5], "expected": 89.0}, {"input": [89.0, -86.0], "expected": 89.0}, {"input": [89.0, -85.5], "expected": 89.0}, {"input": [89.0, -85.0], "expected": 89.0}, {"input": [89.0, -84.5], "expected": 89.0}, {"input": [89.0, -84.0], "expected": 89.0}, {"input": [89.0, -83.5], "expected": 89.0}, {"input": [89.0, -83.0], "expected": 89.0}, {"input": [89.0, -82.5], "expected": 89.0}, {"input": [89.0, -82.0], "expected": 89.0}, {"input": [89.0, -81.5], "expected": 89.0}, {"input": [89.0, -81.0], "expected": 89.0}, {"input": [89.0, -80.5], "expected": 89.0}, {"input": [89.0, -80.0], "expected": 89.0}, {"input": [89.0, -79.5], "expected": 89.0}, {"input": [89.0, -79.0], "expected": 89.0}, {"input": [89.0, -78.5], "expected": 89.0}, {"input": [89.0, -78.0], "expected": 89.0}, {"input": [89.0, -77.5], "expected": 89.0}, {"input": [89.0, -77.0], "expected": 89.0}, {"input": [89.0, -76.5], "expected": 89.0}, {"input": [89.0, -76.0], "expected": 89.0}, {"input": [89.0, -75.5], "expected": 89.0}, {"input": [89.0, -75.0], "expected": 89.0}, {"input": [89.0, -74.5], "expected": 89.0}, {"input": [89.0, -74.0], "expected": 89.0}, {"input": [89.0, -73.5], "expected": 89.0}, {"input": [89.0, -73.0], "expected": 89.0}, {"input": [89.0, -72.5], "expected": 89.0}, {"input": [89.0, -72.0], "expected": 89.0}, {"input": [89.0, -71.5], "expected": 89.0}, {"input": [89.0, -71.0], "expected": 89.0}, {"input": [89.0, -70.5], "expected": 89.0}, {"input": [89.0, -70.0], "expected": 89.0}, {"input": [89.0, -69.5], "expected": 89.0}, {"input": [89.0, -69.0], "expected": 89.0}, {"input": [89.0, -68.5], "expected": 89.0}, {"input": [89.0, -68.0], "expected": 89.0}, {"input": [89.0, -67.5], "expected": 89.0}, {"input": [89.0, -67.0], "expected": 89.0}, {"input": [89.0, -66.5], "expected": 89.0}, {"input": [89.0, -66.0], "expected": 89.0}, {"input": [89.0, -65.5], "expected": 89.0}, {"input": [89.0, -65.0], "expected": 89.0}, {"input": [89.0, -64.5], "expected": 89.0}, {"input": [89.0, -64.0], "expected": 89.0}, {"input": [89.0, -63.5], "expected": 89.0}, {"input": [89.0, -63.0], "expected": 89.0}, {"input": [89.0, -62.5], "expected": 89.0}, {"input": [89.0, -62.0], "expected": 89.0}, {"input": [89.0, -61.5], "expected": 89.0}, {"input": [89.0, -61.0], "expected": 89.0}, {"input": [89.0, -60.5], "expected": 89.0}, {"input": [89.0, -60.0], "expected": 89.0}, {"input": [89.0, -59.5], "expected": 89.0}, {"input": [89.0, -59.0], "expected": 89.0}, {"input": [89.0, -58.5], "expected": 89.0}, {"input": [89.0, -58.0], "expected": 89.0}, {"input": [89.0, -57.5], "expected": 89.0}, {"input": [89.0, -57.0], "expected": 89.0}, {"input": [89.0, -56.5], "expected": 89.0}, {"input": [89.0, -56.0], "expected": 89.0}, {"input": [89.0, -55.5], "expected": 89.0}, {"input": [89.0, -55.0], "expected": 89.0}, {"input": [89.0, -54.5], "expected": 89.0}, {"input": [89.0, -54.0], "expected": 89.0}, {"input": [89.0, -53.5], "expected": 89.0}, {"input": [89.0, -53.0], "expected": 89.0}, {"input": [89.0, -52.5], "expected": 89.0}, {"input": [89.0, -52.0], "expected": 89.0}, {"input": [89.0, -51.5], "expected": 89.0}, {"input": [89.0, -51.0], "expected": 89.0}, {"input": [89.0, -50.5], "expected": 89.0}, {"input": [89.0, -50.0], "expected": 89.0}, {"input": [89.0, -49.5], "expected": 89.0}, {"input": [89.0, -49.0], "expected": 89.0}, {"input": [89.0, -48.5], "expected": 89.0}, {"input": [89.0, -48.0], "expected": 89.0}, {"input": [89.0, -47.5], "expected": 89.0}, {"input": [89.0, -47.0], "expected": 89.0}, {"input": [89.0, -46.5], "expected": 89.0}, {"input": [89.0, -46.0], "expected": 89.0}, {"input": [89.0, -45.5], "expected": 89.0}, {"input": [89.0, -45.0], "expected": 89.0}, {"input": [89.0, -44.5], "expected": 89.0}, {"input": [89.0, -44.0], "expected": 89.0}, {"input": [89.0, -43.5], "expected": 89.0}, {"input": [89.0, -43.0], "expected": 89.0}, {"input": [89.0, -42.5], "expected": 89.0}, {"input": [89.0, -42.0], "expected": 89.0}, {"input": [89.0, -41.5], "expected": 89.0}, {"input": [89.0, -41.0], "expected": 89.0}, {"input": [89.0, -40.5], "expected": 89.0}, {"input": [89.0, -40.0], "expected": 89.0}, {"input": [89.0, -39.5], "expected": 89.0}, {"input": [89.0, -39.0], "expected": 89.0}, {"input": [89.0, -38.5], "expected": 89.0}, {"input": [89.0, -38.0], "expected": 89.0}, {"input": [89.0, -37.5], "expected": 89.0}, {"input": [89.0, -37.0], "expected": 89.0}, {"input": [89.0, -36.5], "expected": 89.0}, {"input": [89.0, -36.0], "expected": 89.0}, {"input": [89.0, -35.5], "expected": 89.0}, {"input": [89.0, -35.0], "expected": 89.0}, {"input": [89.0, -34.5], "expected": 89.0}, {"input": [89.0, -34.0], "expected": 89.0}, {"input": [89.0, -33.5], "expected": 89.0}, {"input": [89.0, -33.0], "expected": 89.0}, {"input": [89.0, -32.5], "expected": 89.0}, {"input": [89.0, -32.0], "expected": 89.0}, {"input": [89.0, -31.5], "expected": 89.0}, {"input": [89.0, -31.0], "expected": 89.0}, {"input": [89.0, -30.5], "expected": 89.0}, {"input": [89.0, -30.0], "expected": 89.0}, {"input": [89.0, -29.5], "expected": 89.0}, {"input": [89.0, -29.0], "expected": 89.0}, {"input": [89.0, -28.5], "expected": 89.0}, {"input": [89.0, -28.0], "expected": 89.0}, {"input": [89.0, -27.5], "expected": 89.0}, {"input": [89.0, -27.0], "expected": 89.0}, {"input": [89.0, -26.5], "expected": 89.0}, {"input": [89.0, -26.0], "expected": 89.0}, {"input": [89.0, -25.5], "expected": 89.0}, {"input": [89.0, -25.0], "expected": 89.0}, {"input": [89.0, -24.5], "expected": 89.0}, {"input": [89.0, -24.0], "expected": 89.0}, {"input": [89.0, -23.5], "expected": 89.0}, {"input": [89.0, -23.0], "expected": 89.0}, {"input": [89.0, -22.5], "expected": 89.0}, {"input": [89.0, -22.0], "expected": 89.0}, {"input": [89.0, -21.5], "expected": 89.0}, {"input": [89.0, -21.0], "expected": 89.0}, {"input": [89.0, -20.5], "expected": 89.0}, {"input": [89.0, -20.0], "expected": 89.0}, {"input": [89.0, -19.5], "expected": 89.0}, {"input": [89.0, -19.0], "expected": 89.0}, {"input": [89.0, -18.5], "expected": 89.0}, {"input": [89.0, -18.0], "expected": 89.0}, {"input": [89.0, -17.5], "expected": 89.0}, {"input": [89.0, -17.0], "expected": 89.0}, {"input": [89.0, -16.5], "expected": 89.0}, {"input": [89.0, -16.0], "expected": 89.0}, {"input": [89.0, -15.5], "expected": 89.0}, {"input": [89.0, -15.0], "expected": 89.0}, {"input": [89.0, -14.5], "expected": 89.0}, {"input": [89.0, -14.0], "expected": 89.0}, {"input": [89.0, -13.5], "expected": 89.0}, {"input": [89.0, -13.0], "expected": 89.0}, {"input": [89.0, -12.5], "expected": 89.0}, {"input": [89.0, -12.0], "expected": 89.0}, {"input": [89.0, -11.5], "expected": 89.0}, {"input": [89.0, -11.0], "expected": 89.0}, {"input": [89.0, -10.5], "expected": 89.0}, {"input": [89.0, -10.0], "expected": 89.0}, {"input": [89.0, -9.5], "expected": 89.0}, {"input": [89.0, -9.0], "expected": 89.0}, {"input": [89.0, -8.5], "expected": 89.0}, {"input": [89.0, -8.0], "expected": 89.0}, {"input": [89.0, -7.5], "expected": 89.0}, {"input": [89.0, -7.0], "expected": 89.0}, {"input": [89.0, -6.5], "expected": 89.0}, {"input": [89.0, -6.0], "expected": 89.0}, {"input": [89.0, -5.5], "expected": 89.0}, {"input": [89.0, -5.0], "expected": 89.0}, {"input": [89.0, -4.5], "expected": 89.0}, {"input": [89.0, -4.0], "expected": 89.0}, {"input": [89.0, -3.5], "expected": 89.0}, {"input": [89.0, -3.0], "expected": 89.0}, {"input": [89.0, -2.5], "expected": 89.0}, {"input": [89.0, -2.0], "expected": 89.0}, {"input": [89.0, -1.5], "expected": 89.0}, {"input": [89.0, -1.0], "expected": 89.0}, {"input": [89.0, -0.5], "expected": 89.0}, {"input": [89.0, 0.0], "expected": 89.0}, {"input": [89.0, 0.5], "expected": 89.0}, {"input": [89.0, 1.0], "expected": 89.0}, {"input": [89.0, 1.5], "expected": 89.0}, {"input": [89.0, 2.0], "expected": 89.0}, {"input": [89.0, 2.5], "expected": 89.0}, {"input": [89.0, 3.0], "expected": 89.0}, {"input": [89.0, 3.5], "expected": 89.0}, {"input": [89.0, 4.0], "expected": 89.0}, {"input": [89.0, 4.5], "expected": 89.0}, {"input": [89.0, 5.0], "expected": 89.0}, {"input": [89.0, 5.5], "expected": 89.0}, {"input": [89.0, 6.0], "expected": 89.0}, {"input": [89.0, 6.5], "expected": 89.0}, {"input": [89.0, 7.0], "expected": 89.0}, {"input": [89.0, 7.5], "expected": 89.0}, {"input": [89.0, 8.0], "expected": 89.0}, {"input": [89.0, 8.5], "expected": 89.0}, {"input": [89.0, 9.0], "expected": 89.0}, {"input": [89.0, 9.5], "expected": 89.0}, {"input": [89.0, 10.0], "expected": 89.0}, {"input": [89.0, 10.5], "expected": 89.0}, {"input": [89.0, 11.0], "expected": 89.0}, {"input": [89.0, 11.5], "expected": 89.0}, {"input": [89.0, 12.0], "expected": 89.0}, {"input": [89.0, 12.5], "expected": 89.0}, {"input": [89.0, 13.0], "expected": 89.0}, {"input": [89.0, 13.5], "expected": 89.0}, {"input": [89.0, 14.0], "expected": 89.0}, {"input": [89.0, 14.5], "expected": 89.0}, {"input": [89.0, 15.0], "expected": 89.0}, {"input": [89.0, 15.5], "expected": 89.0}, {"input": [89.0, 16.0], "expected": 89.0}, {"input": [89.0, 16.5], "expected": 89.0}, {"input": [89.0, 17.0], "expected": 89.0}, {"input": [89.0, 17.5], "expected": 89.0}, {"input": [89.0, 18.0], "expected": 89.0}, {"input": [89.0, 18.5], "expected": 89.0}, {"input": [89.0, 19.0], "expected": 89.0}, {"input": [89.0, 19.5], "expected": 89.0}, {"input": [89.0, 20.0], "expected": 89.0}, {"input": [89.0, 20.5], "expected": 89.0}, {"input": [89.0, 21.0], "expected": 89.0}, {"input": [89.0, 21.5], "expected": 89.0}, {"input": [89.0, 22.0], "expected": 89.0}, {"input": [89.0, 22.5], "expected": 89.0}, {"input": [89.0, 23.0], "expected": 89.0}, {"input": [89.0, 23.5], "expected": 89.0}, {"input": [89.0, 24.0], "expected": 89.0}, {"input": [89.0, 24.5], "expected": 89.0}, {"input": [89.0, 25.0], "expected": 89.0}, {"input": [89.0, 25.5], "expected": 89.0}, {"input": [89.0, 26.0], "expected": 89.0}, {"input": [89.0, 26.5], "expected": 89.0}, {"input": [89.0, 27.0], "expected": 89.0}, {"input": [89.0, 27.5], "expected": 89.0}, {"input": [89.0, 28.0], "expected": 89.0}, {"input": [89.0, 28.5], "expected": 89.0}, {"input": [89.0, 29.0], "expected": 89.0}, {"input": [89.0, 29.5], "expected": 89.0}, {"input": [89.0, 30.0], "expected": 89.0}, {"input": [89.0, 30.5], "expected": 89.0}, {"input": [89.0, 31.0], "expected": 89.0}, {"input": [89.0, 31.5], "expected": 89.0}, {"input": [89.0, 32.0], "expected": 89.0}, {"input": [89.0, 32.5], "expected": 89.0}, {"input": [89.0, 33.0], "expected": 89.0}, {"input": [89.0, 33.5], "expected": 89.0}, {"input": [89.0, 34.0], "expected": 89.0}, {"input": [89.0, 34.5], "expected": 89.0}, {"input": [89.0, 35.0], "expected": 89.0}, {"input": [89.0, 35.5], "expected": 89.0}, {"input": [89.0, 36.0], "expected": 89.0}, {"input": [89.0, 36.5], "expected": 89.0}, {"input": [89.0, 37.0], "expected": 89.0}, {"input": [89.0, 37.5], "expected": 89.0}, {"input": [89.0, 38.0], "expected": 89.0}, {"input": [89.0, 38.5], "expected": 89.0}, {"input": [89.0, 39.0], "expected": 89.0}, {"input": [89.0, 39.5], "expected": 89.0}, {"input": [89.0, 40.0], "expected": 89.0}, {"input": [89.0, 40.5], "expected": 89.0}, {"input": [89.0, 41.0], "expected": 89.0}, {"input": [89.0, 41.5], "expected": 89.0}, {"input": [89.0, 42.0], "expected": 89.0}, {"input": [89.0, 42.5], "expected": 89.0}, {"input": [89.0, 43.0], "expected": 89.0}, {"input": [89.0, 43.5], "expected": 89.0}, {"input": [89.0, 44.0], "expected": 89.0}, {"input": [89.0, 44.5], "expected": 89.0}, {"input": [89.0, 45.0], "expected": 89.0}, {"input": [89.0, 45.5], "expected": 89.0}, {"input": [89.0, 46.0], "expected": 89.0}, {"input": [89.0, 46.5], "expected": 89.0}, {"input": [89.0, 47.0], "expected": 89.0}, {"input": [89.0, 47.5], "expected": 89.0}, {"input": [89.0, 48.0], "expected": 89.0}, {"input": [89.0, 48.5], "expected": 89.0}, {"input": [89.0, 49.0], "expected": 89.0}, {"input": [89.0, 49.5], "expected": 89.0}, {"input": [89.0, 50.0], "expected": 89.0}, {"input": [89.0, 50.5], "expected": 89.0}, {"input": [89.0, 51.0], "expected": 89.0}, {"input": [89.0, 51.5], "expected": 89.0}, {"input": [89.0, 52.0], "expected": 89.0}, {"input": [89.0, 52.5], "expected": 89.0}, {"input": [89.0, 53.0], "expected": 89.0}, {"input": [89.0, 53.5], "expected": 89.0}, {"input": [89.0, 54.0], "expected": 89.0}, {"input": [89.0, 54.5], "expected": 89.0}, {"input": [89.0, 55.0], "expected": 89.0}, {"input": [89.0, 55.5], "expected": 89.0}, {"input": [89.0, 56.0], "expected": 89.0}, {"input": [89.0, 56.5], "expected": 89.00000000000001}, {"input": [89.0, 57.0], "expected": 89.00000000000001}, {"input": [89.0, 57.5], "expected": 89.00000000000001}, {"input": [89.0, 58.0], "expected": 89.00000000000003}, {"input": [89.0, 58.5], "expected": 89.00000000000006}, {"input": [89.0, 59.0], "expected": 89.0000000000001}, {"input": [89.0, 59.5], "expected": 89.00000000000016}, {"input": [89.0, 60.0], "expected": 89.00000000000026}, {"input": [89.0, 60.5], "expected": 89.00000000000043}, {"input": [89.0, 61.0], "expected": 89.0000000000007}, {"input": [89.0, 61.5], "expected": 89.00000000000114}, {"input": [89.0, 62.0], "expected": 89.00000000000188}, {"input": [89.0, 62.5], "expected": 89.0000000000031}, {"input": [89.0, 63.0], "expected": 89.00000000000512}, {"input": [89.0, 63.5], "expected": 89.00000000000843}, {"input": [89.0, 64.0], "expected": 89.00000000001388}, {"input": [89.0, 64.5], "expected": 89.0000000000229}, {"input": [89.0, 65.0], "expected": 89.00000000003776}, {"input": [89.0, 65.5], "expected": 89.00000000006224}, {"input": [89.0, 66.0], "expected": 89.00000000010262}, {"input": [89.0, 66.5], "expected": 89.0000000001692}, {"input": [89.0, 67.0], "expected": 89.00000000027894}, {"input": [89.0, 67.5], "expected": 89.0000000004599}, {"input": [89.0, 68.0], "expected": 89.00000000075826}, {"input": [89.0, 68.5], "expected": 89.00000000125016}, {"input": [89.0, 69.0], "expected": 89.00000000206116}, {"input": [89.0, 69.5], "expected": 89.00000000339827}, {"input": [89.0, 70.0], "expected": 89.0000000056028}, {"input": [89.0, 70.5], "expected": 89.00000000923745}, {"input": [89.0, 71.0], "expected": 89.00000001522999}, {"input": [89.0, 71.5], "expected": 89.00000002511}, {"input": [89.0, 72.0], "expected": 89.00000004139937}, {"input": [89.0, 72.5], "expected": 89.00000006825603}, {"input": [89.0, 73.0], "expected": 89.00000011253516}, {"input": [89.0, 73.5], "expected": 89.00000018553912}, {"input": [89.0, 74.0], "expected": 89.00000030590228}, {"input": [89.0, 74.5], "expected": 89.00000050434754}, {"input": [89.0, 75.0], "expected": 89.00000083152837}, {"input": [89.0, 75.5], "expected": 89.00000137095815}, {"input": [89.0, 76.0], "expected": 89.00000226032685}, {"input": [89.0, 76.5], "expected": 89.00000372664623}, {"input": [89.0, 77.0], "expected": 89.00000614419348}, {"input": [89.0, 77.5], "expected": 89.00001013004228}, {"input": [89.0, 78.0], "expected": 89.00001670156132}, {"input": [89.0, 78.5], "expected": 89.00002753607023}, {"input": [89.0, 79.0], "expected": 89.00004539889922}, {"input": [89.0, 79.5], "expected": 89.00007484902864}, {"input": [89.0, 80.0], "expected": 89.00012340218973}, {"input": [89.0, 80.5], "expected": 89.00020344767213}, {"input": [89.0, 81.0], "expected": 89.0003354063729}, {"input": [89.0, 81.5], "expected": 89.00055293147535}, {"input": [89.0, 82.0], "expected": 89.00091146645377}, {"input": [89.0, 82.5], "expected": 89.00150231015975}, {"input": [89.0, 83.0], "expected": 89.00247568513772}, {"input": [89.0, 83.5], "expected": 89.00407844327057}, {"input": [89.0, 84.0], "expected": 89.00671534848912}, {"input": [89.0, 84.5], "expected": 89.0110477448486}, {"input": [89.0, 85.0], "expected": 89.0181499279178}, {"input": [89.0, 85.5], "expected": 89.02975041827263}, {"input": [89.0, 86.0], "expected": 89.04858735157374}, {"input": [89.0, 86.5], "expected": 89.07888973429255}, {"input": [89.0, 87.0], "expected": 89.12692801104298}, {"input": [89.0, 87.5], "expected": 89.20141327798275}, {"input": [89.0, 88.0], "expected": 89.31326168751822}, {"input": [89.0, 88.5], "expected": 89.4740769841801}, {"input": [89.0, 89.0], "expected": 89.69314718055995}, {"input": [89.0, 89.5], "expected": 89.9740769841801}, {"input": [89.0, 90.0], "expected": 90.31326168751822}, {"input": [89.0, 90.5], "expected": 90.70141327798275}, {"input": [89.0, 91.0], "expected": 91.12692801104298}, {"input": [89.0, 91.5], "expected": 91.57888973429255}, {"input": [89.0, 92.0], "expected": 92.04858735157374}, {"input": [89.0, 92.5], "expected": 92.52975041827263}, {"input": [89.0, 93.0], "expected": 93.0181499279178}, {"input": [89.0, 93.5], "expected": 93.5110477448486}, {"input": [89.0, 94.0], "expected": 94.00671534848912}, {"input": [89.0, 94.5], "expected": 94.50407844327057}, {"input": [89.0, 95.0], "expected": 95.00247568513772}, {"input": [89.0, 95.5], "expected": 95.50150231015975}, {"input": [89.0, 96.0], "expected": 96.00091146645377}, {"input": [89.0, 96.5], "expected": 96.50055293147535}, {"input": [89.0, 97.0], "expected": 97.0003354063729}, {"input": [89.0, 97.5], "expected": 97.50020344767213}, {"input": [89.0, 98.0], "expected": 98.00012340218973}, {"input": [89.0, 98.5], "expected": 98.50007484902864}, {"input": [89.0, 99.0], "expected": 99.00004539889922}, {"input": [89.0, 99.5], "expected": 99.50002753607023}, {"input": [89.5, -100.0], "expected": 89.5}, {"input": [89.5, -99.5], "expected": 89.5}, {"input": [89.5, -99.0], "expected": 89.5}, {"input": [89.5, -98.5], "expected": 89.5}, {"input": [89.5, -98.0], "expected": 89.5}, {"input": [89.5, -97.5], "expected": 89.5}, {"input": [89.5, -97.0], "expected": 89.5}, {"input": [89.5, -96.5], "expected": 89.5}, {"input": [89.5, -96.0], "expected": 89.5}, {"input": [89.5, -95.5], "expected": 89.5}, {"input": [89.5, -95.0], "expected": 89.5}, {"input": [89.5, -94.5], "expected": 89.5}, {"input": [89.5, -94.0], "expected": 89.5}, {"input": [89.5, -93.5], "expected": 89.5}, {"input": [89.5, -93.0], "expected": 89.5}, {"input": [89.5, -92.5], "expected": 89.5}, {"input": [89.5, -92.0], "expected": 89.5}, {"input": [89.5, -91.5], "expected": 89.5}, {"input": [89.5, -91.0], "expected": 89.5}, {"input": [89.5, -90.5], "expected": 89.5}, {"input": [89.5, -90.0], "expected": 89.5}, {"input": [89.5, -89.5], "expected": 89.5}, {"input": [89.5, -89.0], "expected": 89.5}, {"input": [89.5, -88.5], "expected": 89.5}, {"input": [89.5, -88.0], "expected": 89.5}, {"input": [89.5, -87.5], "expected": 89.5}, {"input": [89.5, -87.0], "expected": 89.5}, {"input": [89.5, -86.5], "expected": 89.5}, {"input": [89.5, -86.0], "expected": 89.5}, {"input": [89.5, -85.5], "expected": 89.5}, {"input": [89.5, -85.0], "expected": 89.5}, {"input": [89.5, -84.5], "expected": 89.5}, {"input": [89.5, -84.0], "expected": 89.5}, {"input": [89.5, -83.5], "expected": 89.5}, {"input": [89.5, -83.0], "expected": 89.5}, {"input": [89.5, -82.5], "expected": 89.5}, {"input": [89.5, -82.0], "expected": 89.5}, {"input": [89.5, -81.5], "expected": 89.5}, {"input": [89.5, -81.0], "expected": 89.5}, {"input": [89.5, -80.5], "expected": 89.5}, {"input": [89.5, -80.0], "expected": 89.5}, {"input": [89.5, -79.5], "expected": 89.5}, {"input": [89.5, -79.0], "expected": 89.5}, {"input": [89.5, -78.5], "expected": 89.5}, {"input": [89.5, -78.0], "expected": 89.5}, {"input": [89.5, -77.5], "expected": 89.5}, {"input": [89.5, -77.0], "expected": 89.5}, {"input": [89.5, -76.5], "expected": 89.5}, {"input": [89.5, -76.0], "expected": 89.5}, {"input": [89.5, -75.5], "expected": 89.5}, {"input": [89.5, -75.0], "expected": 89.5}, {"input": [89.5, -74.5], "expected": 89.5}, {"input": [89.5, -74.0], "expected": 89.5}, {"input": [89.5, -73.5], "expected": 89.5}, {"input": [89.5, -73.0], "expected": 89.5}, {"input": [89.5, -72.5], "expected": 89.5}, {"input": [89.5, -72.0], "expected": 89.5}, {"input": [89.5, -71.5], "expected": 89.5}, {"input": [89.5, -71.0], "expected": 89.5}, {"input": [89.5, -70.5], "expected": 89.5}, {"input": [89.5, -70.0], "expected": 89.5}, {"input": [89.5, -69.5], "expected": 89.5}, {"input": [89.5, -69.0], "expected": 89.5}, {"input": [89.5, -68.5], "expected": 89.5}, {"input": [89.5, -68.0], "expected": 89.5}, {"input": [89.5, -67.5], "expected": 89.5}, {"input": [89.5, -67.0], "expected": 89.5}, {"input": [89.5, -66.5], "expected": 89.5}, {"input": [89.5, -66.0], "expected": 89.5}, {"input": [89.5, -65.5], "expected": 89.5}, {"input": [89.5, -65.0], "expected": 89.5}, {"input": [89.5, -64.5], "expected": 89.5}, {"input": [89.5, -64.0], "expected": 89.5}, {"input": [89.5, -63.5], "expected": 89.5}, {"input": [89.5, -63.0], "expected": 89.5}, {"input": [89.5, -62.5], "expected": 89.5}, {"input": [89.5, -62.0], "expected": 89.5}, {"input": [89.5, -61.5], "expected": 89.5}, {"input": [89.5, -61.0], "expected": 89.5}, {"input": [89.5, -60.5], "expected": 89.5}, {"input": [89.5, -60.0], "expected": 89.5}, {"input": [89.5, -59.5], "expected": 89.5}, {"input": [89.5, -59.0], "expected": 89.5}, {"input": [89.5, -58.5], "expected": 89.5}, {"input": [89.5, -58.0], "expected": 89.5}, {"input": [89.5, -57.5], "expected": 89.5}, {"input": [89.5, -57.0], "expected": 89.5}, {"input": [89.5, -56.5], "expected": 89.5}, {"input": [89.5, -56.0], "expected": 89.5}, {"input": [89.5, -55.5], "expected": 89.5}, {"input": [89.5, -55.0], "expected": 89.5}, {"input": [89.5, -54.5], "expected": 89.5}, {"input": [89.5, -54.0], "expected": 89.5}, {"input": [89.5, -53.5], "expected": 89.5}, {"input": [89.5, -53.0], "expected": 89.5}, {"input": [89.5, -52.5], "expected": 89.5}, {"input": [89.5, -52.0], "expected": 89.5}, {"input": [89.5, -51.5], "expected": 89.5}, {"input": [89.5, -51.0], "expected": 89.5}, {"input": [89.5, -50.5], "expected": 89.5}, {"input": [89.5, -50.0], "expected": 89.5}, {"input": [89.5, -49.5], "expected": 89.5}, {"input": [89.5, -49.0], "expected": 89.5}, {"input": [89.5, -48.5], "expected": 89.5}, {"input": [89.5, -48.0], "expected": 89.5}, {"input": [89.5, -47.5], "expected": 89.5}, {"input": [89.5, -47.0], "expected": 89.5}, {"input": [89.5, -46.5], "expected": 89.5}, {"input": [89.5, -46.0], "expected": 89.5}, {"input": [89.5, -45.5], "expected": 89.5}, {"input": [89.5, -45.0], "expected": 89.5}, {"input": [89.5, -44.5], "expected": 89.5}, {"input": [89.5, -44.0], "expected": 89.5}, {"input": [89.5, -43.5], "expected": 89.5}, {"input": [89.5, -43.0], "expected": 89.5}, {"input": [89.5, -42.5], "expected": 89.5}, {"input": [89.5, -42.0], "expected": 89.5}, {"input": [89.5, -41.5], "expected": 89.5}, {"input": [89.5, -41.0], "expected": 89.5}, {"input": [89.5, -40.5], "expected": 89.5}, {"input": [89.5, -40.0], "expected": 89.5}, {"input": [89.5, -39.5], "expected": 89.5}, {"input": [89.5, -39.0], "expected": 89.5}, {"input": [89.5, -38.5], "expected": 89.5}, {"input": [89.5, -38.0], "expected": 89.5}, {"input": [89.5, -37.5], "expected": 89.5}, {"input": [89.5, -37.0], "expected": 89.5}, {"input": [89.5, -36.5], "expected": 89.5}, {"input": [89.5, -36.0], "expected": 89.5}, {"input": [89.5, -35.5], "expected": 89.5}, {"input": [89.5, -35.0], "expected": 89.5}, {"input": [89.5, -34.5], "expected": 89.5}, {"input": [89.5, -34.0], "expected": 89.5}, {"input": [89.5, -33.5], "expected": 89.5}, {"input": [89.5, -33.0], "expected": 89.5}, {"input": [89.5, -32.5], "expected": 89.5}, {"input": [89.5, -32.0], "expected": 89.5}, {"input": [89.5, -31.5], "expected": 89.5}, {"input": [89.5, -31.0], "expected": 89.5}, {"input": [89.5, -30.5], "expected": 89.5}, {"input": [89.5, -30.0], "expected": 89.5}, {"input": [89.5, -29.5], "expected": 89.5}, {"input": [89.5, -29.0], "expected": 89.5}, {"input": [89.5, -28.5], "expected": 89.5}, {"input": [89.5, -28.0], "expected": 89.5}, {"input": [89.5, -27.5], "expected": 89.5}, {"input": [89.5, -27.0], "expected": 89.5}, {"input": [89.5, -26.5], "expected": 89.5}, {"input": [89.5, -26.0], "expected": 89.5}, {"input": [89.5, -25.5], "expected": 89.5}, {"input": [89.5, -25.0], "expected": 89.5}, {"input": [89.5, -24.5], "expected": 89.5}, {"input": [89.5, -24.0], "expected": 89.5}, {"input": [89.5, -23.5], "expected": 89.5}, {"input": [89.5, -23.0], "expected": 89.5}, {"input": [89.5, -22.5], "expected": 89.5}, {"input": [89.5, -22.0], "expected": 89.5}, {"input": [89.5, -21.5], "expected": 89.5}, {"input": [89.5, -21.0], "expected": 89.5}, {"input": [89.5, -20.5], "expected": 89.5}, {"input": [89.5, -20.0], "expected": 89.5}, {"input": [89.5, -19.5], "expected": 89.5}, {"input": [89.5, -19.0], "expected": 89.5}, {"input": [89.5, -18.5], "expected": 89.5}, {"input": [89.5, -18.0], "expected": 89.5}, {"input": [89.5, -17.5], "expected": 89.5}, {"input": [89.5, -17.0], "expected": 89.5}, {"input": [89.5, -16.5], "expected": 89.5}, {"input": [89.5, -16.0], "expected": 89.5}, {"input": [89.5, -15.5], "expected": 89.5}, {"input": [89.5, -15.0], "expected": 89.5}, {"input": [89.5, -14.5], "expected": 89.5}, {"input": [89.5, -14.0], "expected": 89.5}, {"input": [89.5, -13.5], "expected": 89.5}, {"input": [89.5, -13.0], "expected": 89.5}, {"input": [89.5, -12.5], "expected": 89.5}, {"input": [89.5, -12.0], "expected": 89.5}, {"input": [89.5, -11.5], "expected": 89.5}, {"input": [89.5, -11.0], "expected": 89.5}, {"input": [89.5, -10.5], "expected": 89.5}, {"input": [89.5, -10.0], "expected": 89.5}, {"input": [89.5, -9.5], "expected": 89.5}, {"input": [89.5, -9.0], "expected": 89.5}, {"input": [89.5, -8.5], "expected": 89.5}, {"input": [89.5, -8.0], "expected": 89.5}, {"input": [89.5, -7.5], "expected": 89.5}, {"input": [89.5, -7.0], "expected": 89.5}, {"input": [89.5, -6.5], "expected": 89.5}, {"input": [89.5, -6.0], "expected": 89.5}, {"input": [89.5, -5.5], "expected": 89.5}, {"input": [89.5, -5.0], "expected": 89.5}, {"input": [89.5, -4.5], "expected": 89.5}, {"input": [89.5, -4.0], "expected": 89.5}, {"input": [89.5, -3.5], "expected": 89.5}, {"input": [89.5, -3.0], "expected": 89.5}, {"input": [89.5, -2.5], "expected": 89.5}, {"input": [89.5, -2.0], "expected": 89.5}, {"input": [89.5, -1.5], "expected": 89.5}, {"input": [89.5, -1.0], "expected": 89.5}, {"input": [89.5, -0.5], "expected": 89.5}, {"input": [89.5, 0.0], "expected": 89.5}, {"input": [89.5, 0.5], "expected": 89.5}, {"input": [89.5, 1.0], "expected": 89.5}, {"input": [89.5, 1.5], "expected": 89.5}, {"input": [89.5, 2.0], "expected": 89.5}, {"input": [89.5, 2.5], "expected": 89.5}, {"input": [89.5, 3.0], "expected": 89.5}, {"input": [89.5, 3.5], "expected": 89.5}, {"input": [89.5, 4.0], "expected": 89.5}, {"input": [89.5, 4.5], "expected": 89.5}, {"input": [89.5, 5.0], "expected": 89.5}, {"input": [89.5, 5.5], "expected": 89.5}, {"input": [89.5, 6.0], "expected": 89.5}, {"input": [89.5, 6.5], "expected": 89.5}, {"input": [89.5, 7.0], "expected": 89.5}, {"input": [89.5, 7.5], "expected": 89.5}, {"input": [89.5, 8.0], "expected": 89.5}, {"input": [89.5, 8.5], "expected": 89.5}, {"input": [89.5, 9.0], "expected": 89.5}, {"input": [89.5, 9.5], "expected": 89.5}, {"input": [89.5, 10.0], "expected": 89.5}, {"input": [89.5, 10.5], "expected": 89.5}, {"input": [89.5, 11.0], "expected": 89.5}, {"input": [89.5, 11.5], "expected": 89.5}, {"input": [89.5, 12.0], "expected": 89.5}, {"input": [89.5, 12.5], "expected": 89.5}, {"input": [89.5, 13.0], "expected": 89.5}, {"input": [89.5, 13.5], "expected": 89.5}, {"input": [89.5, 14.0], "expected": 89.5}, {"input": [89.5, 14.5], "expected": 89.5}, {"input": [89.5, 15.0], "expected": 89.5}, {"input": [89.5, 15.5], "expected": 89.5}, {"input": [89.5, 16.0], "expected": 89.5}, {"input": [89.5, 16.5], "expected": 89.5}, {"input": [89.5, 17.0], "expected": 89.5}, {"input": [89.5, 17.5], "expected": 89.5}, {"input": [89.5, 18.0], "expected": 89.5}, {"input": [89.5, 18.5], "expected": 89.5}, {"input": [89.5, 19.0], "expected": 89.5}, {"input": [89.5, 19.5], "expected": 89.5}, {"input": [89.5, 20.0], "expected": 89.5}, {"input": [89.5, 20.5], "expected": 89.5}, {"input": [89.5, 21.0], "expected": 89.5}, {"input": [89.5, 21.5], "expected": 89.5}, {"input": [89.5, 22.0], "expected": 89.5}, {"input": [89.5, 22.5], "expected": 89.5}, {"input": [89.5, 23.0], "expected": 89.5}, {"input": [89.5, 23.5], "expected": 89.5}, {"input": [89.5, 24.0], "expected": 89.5}, {"input": [89.5, 24.5], "expected": 89.5}, {"input": [89.5, 25.0], "expected": 89.5}, {"input": [89.5, 25.5], "expected": 89.5}, {"input": [89.5, 26.0], "expected": 89.5}, {"input": [89.5, 26.5], "expected": 89.5}, {"input": [89.5, 27.0], "expected": 89.5}, {"input": [89.5, 27.5], "expected": 89.5}, {"input": [89.5, 28.0], "expected": 89.5}, {"input": [89.5, 28.5], "expected": 89.5}, {"input": [89.5, 29.0], "expected": 89.5}, {"input": [89.5, 29.5], "expected": 89.5}, {"input": [89.5, 30.0], "expected": 89.5}, {"input": [89.5, 30.5], "expected": 89.5}, {"input": [89.5, 31.0], "expected": 89.5}, {"input": [89.5, 31.5], "expected": 89.5}, {"input": [89.5, 32.0], "expected": 89.5}, {"input": [89.5, 32.5], "expected": 89.5}, {"input": [89.5, 33.0], "expected": 89.5}, {"input": [89.5, 33.5], "expected": 89.5}, {"input": [89.5, 34.0], "expected": 89.5}, {"input": [89.5, 34.5], "expected": 89.5}, {"input": [89.5, 35.0], "expected": 89.5}, {"input": [89.5, 35.5], "expected": 89.5}, {"input": [89.5, 36.0], "expected": 89.5}, {"input": [89.5, 36.5], "expected": 89.5}, {"input": [89.5, 37.0], "expected": 89.5}, {"input": [89.5, 37.5], "expected": 89.5}, {"input": [89.5, 38.0], "expected": 89.5}, {"input": [89.5, 38.5], "expected": 89.5}, {"input": [89.5, 39.0], "expected": 89.5}, {"input": [89.5, 39.5], "expected": 89.5}, {"input": [89.5, 40.0], "expected": 89.5}, {"input": [89.5, 40.5], "expected": 89.5}, {"input": [89.5, 41.0], "expected": 89.5}, {"input": [89.5, 41.5], "expected": 89.5}, {"input": [89.5, 42.0], "expected": 89.5}, {"input": [89.5, 42.5], "expected": 89.5}, {"input": [89.5, 43.0], "expected": 89.5}, {"input": [89.5, 43.5], "expected": 89.5}, {"input": [89.5, 44.0], "expected": 89.5}, {"input": [89.5, 44.5], "expected": 89.5}, {"input": [89.5, 45.0], "expected": 89.5}, {"input": [89.5, 45.5], "expected": 89.5}, {"input": [89.5, 46.0], "expected": 89.5}, {"input": [89.5, 46.5], "expected": 89.5}, {"input": [89.5, 47.0], "expected": 89.5}, {"input": [89.5, 47.5], "expected": 89.5}, {"input": [89.5, 48.0], "expected": 89.5}, {"input": [89.5, 48.5], "expected": 89.5}, {"input": [89.5, 49.0], "expected": 89.5}, {"input": [89.5, 49.5], "expected": 89.5}, {"input": [89.5, 50.0], "expected": 89.5}, {"input": [89.5, 50.5], "expected": 89.5}, {"input": [89.5, 51.0], "expected": 89.5}, {"input": [89.5, 51.5], "expected": 89.5}, {"input": [89.5, 52.0], "expected": 89.5}, {"input": [89.5, 52.5], "expected": 89.5}, {"input": [89.5, 53.0], "expected": 89.5}, {"input": [89.5, 53.5], "expected": 89.5}, {"input": [89.5, 54.0], "expected": 89.5}, {"input": [89.5, 54.5], "expected": 89.5}, {"input": [89.5, 55.0], "expected": 89.5}, {"input": [89.5, 55.5], "expected": 89.5}, {"input": [89.5, 56.0], "expected": 89.5}, {"input": [89.5, 56.5], "expected": 89.5}, {"input": [89.5, 57.0], "expected": 89.50000000000001}, {"input": [89.5, 57.5], "expected": 89.50000000000001}, {"input": [89.5, 58.0], "expected": 89.50000000000001}, {"input": [89.5, 58.5], "expected": 89.50000000000003}, {"input": [89.5, 59.0], "expected": 89.50000000000006}, {"input": [89.5, 59.5], "expected": 89.5000000000001}, {"input": [89.5, 60.0], "expected": 89.50000000000016}, {"input": [89.5, 60.5], "expected": 89.50000000000026}, {"input": [89.5, 61.0], "expected": 89.50000000000043}, {"input": [89.5, 61.5], "expected": 89.5000000000007}, {"input": [89.5, 62.0], "expected": 89.50000000000114}, {"input": [89.5, 62.5], "expected": 89.50000000000188}, {"input": [89.5, 63.0], "expected": 89.5000000000031}, {"input": [89.5, 63.5], "expected": 89.50000000000512}, {"input": [89.5, 64.0], "expected": 89.50000000000843}, {"input": [89.5, 64.5], "expected": 89.50000000001388}, {"input": [89.5, 65.0], "expected": 89.5000000000229}, {"input": [89.5, 65.5], "expected": 89.50000000003776}, {"input": [89.5, 66.0], "expected": 89.50000000006224}, {"input": [89.5, 66.5], "expected": 89.50000000010262}, {"input": [89.5, 67.0], "expected": 89.5000000001692}, {"input": [89.5, 67.5], "expected": 89.50000000027894}, {"input": [89.5, 68.0], "expected": 89.5000000004599}, {"input": [89.5, 68.5], "expected": 89.50000000075826}, {"input": [89.5, 69.0], "expected": 89.50000000125016}, {"input": [89.5, 69.5], "expected": 89.50000000206116}, {"input": [89.5, 70.0], "expected": 89.50000000339827}, {"input": [89.5, 70.5], "expected": 89.5000000056028}, {"input": [89.5, 71.0], "expected": 89.50000000923745}, {"input": [89.5, 71.5], "expected": 89.50000001522999}, {"input": [89.5, 72.0], "expected": 89.50000002511}, {"input": [89.5, 72.5], "expected": 89.50000004139937}, {"input": [89.5, 73.0], "expected": 89.50000006825603}, {"input": [89.5, 73.5], "expected": 89.50000011253516}, {"input": [89.5, 74.0], "expected": 89.50000018553912}, {"input": [89.5, 74.5], "expected": 89.50000030590228}, {"input": [89.5, 75.0], "expected": 89.50000050434754}, {"input": [89.5, 75.5], "expected": 89.50000083152837}, {"input": [89.5, 76.0], "expected": 89.50000137095815}, {"input": [89.5, 76.5], "expected": 89.50000226032685}, {"input": [89.5, 77.0], "expected": 89.50000372664623}, {"input": [89.5, 77.5], "expected": 89.50000614419348}, {"input": [89.5, 78.0], "expected": 89.50001013004228}, {"input": [89.5, 78.5], "expected": 89.50001670156132}, {"input": [89.5, 79.0], "expected": 89.50002753607023}, {"input": [89.5, 79.5], "expected": 89.50004539889922}, {"input": [89.5, 80.0], "expected": 89.50007484902864}, {"input": [89.5, 80.5], "expected": 89.50012340218973}, {"input": [89.5, 81.0], "expected": 89.50020344767213}, {"input": [89.5, 81.5], "expected": 89.5003354063729}, {"input": [89.5, 82.0], "expected": 89.50055293147535}, {"input": [89.5, 82.5], "expected": 89.50091146645377}, {"input": [89.5, 83.0], "expected": 89.50150231015975}, {"input": [89.5, 83.5], "expected": 89.50247568513772}, {"input": [89.5, 84.0], "expected": 89.50407844327057}, {"input": [89.5, 84.5], "expected": 89.50671534848912}, {"input": [89.5, 85.0], "expected": 89.5110477448486}, {"input": [89.5, 85.5], "expected": 89.5181499279178}, {"input": [89.5, 86.0], "expected": 89.52975041827263}, {"input": [89.5, 86.5], "expected": 89.54858735157374}, {"input": [89.5, 87.0], "expected": 89.57888973429255}, {"input": [89.5, 87.5], "expected": 89.62692801104298}, {"input": [89.5, 88.0], "expected": 89.70141327798275}, {"input": [89.5, 88.5], "expected": 89.81326168751822}, {"input": [89.5, 89.0], "expected": 89.9740769841801}, {"input": [89.5, 89.5], "expected": 90.19314718055995}, {"input": [89.5, 90.0], "expected": 90.4740769841801}, {"input": [89.5, 90.5], "expected": 90.81326168751822}, {"input": [89.5, 91.0], "expected": 91.20141327798275}, {"input": [89.5, 91.5], "expected": 91.62692801104298}, {"input": [89.5, 92.0], "expected": 92.07888973429255}, {"input": [89.5, 92.5], "expected": 92.54858735157374}, {"input": [89.5, 93.0], "expected": 93.02975041827263}, {"input": [89.5, 93.5], "expected": 93.5181499279178}, {"input": [89.5, 94.0], "expected": 94.0110477448486}, {"input": [89.5, 94.5], "expected": 94.50671534848912}, {"input": [89.5, 95.0], "expected": 95.00407844327057}, {"input": [89.5, 95.5], "expected": 95.50247568513772}, {"input": [89.5, 96.0], "expected": 96.00150231015975}, {"input": [89.5, 96.5], "expected": 96.50091146645377}, {"input": [89.5, 97.0], "expected": 97.00055293147535}, {"input": [89.5, 97.5], "expected": 97.5003354063729}, {"input": [89.5, 98.0], "expected": 98.00020344767213}, {"input": [89.5, 98.5], "expected": 98.50012340218973}, {"input": [89.5, 99.0], "expected": 99.00007484902864}, {"input": [89.5, 99.5], "expected": 99.50004539889922}, {"input": [90.0, -100.0], "expected": 90.0}, {"input": [90.0, -99.5], "expected": 90.0}, {"input": [90.0, -99.0], "expected": 90.0}, {"input": [90.0, -98.5], "expected": 90.0}, {"input": [90.0, -98.0], "expected": 90.0}, {"input": [90.0, -97.5], "expected": 90.0}, {"input": [90.0, -97.0], "expected": 90.0}, {"input": [90.0, -96.5], "expected": 90.0}, {"input": [90.0, -96.0], "expected": 90.0}, {"input": [90.0, -95.5], "expected": 90.0}, {"input": [90.0, -95.0], "expected": 90.0}, {"input": [90.0, -94.5], "expected": 90.0}, {"input": [90.0, -94.0], "expected": 90.0}, {"input": [90.0, -93.5], "expected": 90.0}, {"input": [90.0, -93.0], "expected": 90.0}, {"input": [90.0, -92.5], "expected": 90.0}, {"input": [90.0, -92.0], "expected": 90.0}, {"input": [90.0, -91.5], "expected": 90.0}, {"input": [90.0, -91.0], "expected": 90.0}, {"input": [90.0, -90.5], "expected": 90.0}, {"input": [90.0, -90.0], "expected": 90.0}, {"input": [90.0, -89.5], "expected": 90.0}, {"input": [90.0, -89.0], "expected": 90.0}, {"input": [90.0, -88.5], "expected": 90.0}, {"input": [90.0, -88.0], "expected": 90.0}, {"input": [90.0, -87.5], "expected": 90.0}, {"input": [90.0, -87.0], "expected": 90.0}, {"input": [90.0, -86.5], "expected": 90.0}, {"input": [90.0, -86.0], "expected": 90.0}, {"input": [90.0, -85.5], "expected": 90.0}, {"input": [90.0, -85.0], "expected": 90.0}, {"input": [90.0, -84.5], "expected": 90.0}, {"input": [90.0, -84.0], "expected": 90.0}, {"input": [90.0, -83.5], "expected": 90.0}, {"input": [90.0, -83.0], "expected": 90.0}, {"input": [90.0, -82.5], "expected": 90.0}, {"input": [90.0, -82.0], "expected": 90.0}, {"input": [90.0, -81.5], "expected": 90.0}, {"input": [90.0, -81.0], "expected": 90.0}, {"input": [90.0, -80.5], "expected": 90.0}, {"input": [90.0, -80.0], "expected": 90.0}, {"input": [90.0, -79.5], "expected": 90.0}, {"input": [90.0, -79.0], "expected": 90.0}, {"input": [90.0, -78.5], "expected": 90.0}, {"input": [90.0, -78.0], "expected": 90.0}, {"input": [90.0, -77.5], "expected": 90.0}, {"input": [90.0, -77.0], "expected": 90.0}, {"input": [90.0, -76.5], "expected": 90.0}, {"input": [90.0, -76.0], "expected": 90.0}, {"input": [90.0, -75.5], "expected": 90.0}, {"input": [90.0, -75.0], "expected": 90.0}, {"input": [90.0, -74.5], "expected": 90.0}, {"input": [90.0, -74.0], "expected": 90.0}, {"input": [90.0, -73.5], "expected": 90.0}, {"input": [90.0, -73.0], "expected": 90.0}, {"input": [90.0, -72.5], "expected": 90.0}, {"input": [90.0, -72.0], "expected": 90.0}, {"input": [90.0, -71.5], "expected": 90.0}, {"input": [90.0, -71.0], "expected": 90.0}, {"input": [90.0, -70.5], "expected": 90.0}, {"input": [90.0, -70.0], "expected": 90.0}, {"input": [90.0, -69.5], "expected": 90.0}, {"input": [90.0, -69.0], "expected": 90.0}, {"input": [90.0, -68.5], "expected": 90.0}, {"input": [90.0, -68.0], "expected": 90.0}, {"input": [90.0, -67.5], "expected": 90.0}, {"input": [90.0, -67.0], "expected": 90.0}, {"input": [90.0, -66.5], "expected": 90.0}, {"input": [90.0, -66.0], "expected": 90.0}, {"input": [90.0, -65.5], "expected": 90.0}, {"input": [90.0, -65.0], "expected": 90.0}, {"input": [90.0, -64.5], "expected": 90.0}, {"input": [90.0, -64.0], "expected": 90.0}, {"input": [90.0, -63.5], "expected": 90.0}, {"input": [90.0, -63.0], "expected": 90.0}, {"input": [90.0, -62.5], "expected": 90.0}, {"input": [90.0, -62.0], "expected": 90.0}, {"input": [90.0, -61.5], "expected": 90.0}, {"input": [90.0, -61.0], "expected": 90.0}, {"input": [90.0, -60.5], "expected": 90.0}, {"input": [90.0, -60.0], "expected": 90.0}, {"input": [90.0, -59.5], "expected": 90.0}, {"input": [90.0, -59.0], "expected": 90.0}, {"input": [90.0, -58.5], "expected": 90.0}, {"input": [90.0, -58.0], "expected": 90.0}, {"input": [90.0, -57.5], "expected": 90.0}, {"input": [90.0, -57.0], "expected": 90.0}, {"input": [90.0, -56.5], "expected": 90.0}, {"input": [90.0, -56.0], "expected": 90.0}, {"input": [90.0, -55.5], "expected": 90.0}, {"input": [90.0, -55.0], "expected": 90.0}, {"input": [90.0, -54.5], "expected": 90.0}, {"input": [90.0, -54.0], "expected": 90.0}, {"input": [90.0, -53.5], "expected": 90.0}, {"input": [90.0, -53.0], "expected": 90.0}, {"input": [90.0, -52.5], "expected": 90.0}, {"input": [90.0, -52.0], "expected": 90.0}, {"input": [90.0, -51.5], "expected": 90.0}, {"input": [90.0, -51.0], "expected": 90.0}, {"input": [90.0, -50.5], "expected": 90.0}, {"input": [90.0, -50.0], "expected": 90.0}, {"input": [90.0, -49.5], "expected": 90.0}, {"input": [90.0, -49.0], "expected": 90.0}, {"input": [90.0, -48.5], "expected": 90.0}, {"input": [90.0, -48.0], "expected": 90.0}, {"input": [90.0, -47.5], "expected": 90.0}, {"input": [90.0, -47.0], "expected": 90.0}, {"input": [90.0, -46.5], "expected": 90.0}, {"input": [90.0, -46.0], "expected": 90.0}, {"input": [90.0, -45.5], "expected": 90.0}, {"input": [90.0, -45.0], "expected": 90.0}, {"input": [90.0, -44.5], "expected": 90.0}, {"input": [90.0, -44.0], "expected": 90.0}, {"input": [90.0, -43.5], "expected": 90.0}, {"input": [90.0, -43.0], "expected": 90.0}, {"input": [90.0, -42.5], "expected": 90.0}, {"input": [90.0, -42.0], "expected": 90.0}, {"input": [90.0, -41.5], "expected": 90.0}, {"input": [90.0, -41.0], "expected": 90.0}, {"input": [90.0, -40.5], "expected": 90.0}, {"input": [90.0, -40.0], "expected": 90.0}, {"input": [90.0, -39.5], "expected": 90.0}, {"input": [90.0, -39.0], "expected": 90.0}, {"input": [90.0, -38.5], "expected": 90.0}, {"input": [90.0, -38.0], "expected": 90.0}, {"input": [90.0, -37.5], "expected": 90.0}, {"input": [90.0, -37.0], "expected": 90.0}, {"input": [90.0, -36.5], "expected": 90.0}, {"input": [90.0, -36.0], "expected": 90.0}, {"input": [90.0, -35.5], "expected": 90.0}, {"input": [90.0, -35.0], "expected": 90.0}, {"input": [90.0, -34.5], "expected": 90.0}, {"input": [90.0, -34.0], "expected": 90.0}, {"input": [90.0, -33.5], "expected": 90.0}, {"input": [90.0, -33.0], "expected": 90.0}, {"input": [90.0, -32.5], "expected": 90.0}, {"input": [90.0, -32.0], "expected": 90.0}, {"input": [90.0, -31.5], "expected": 90.0}, {"input": [90.0, -31.0], "expected": 90.0}, {"input": [90.0, -30.5], "expected": 90.0}, {"input": [90.0, -30.0], "expected": 90.0}, {"input": [90.0, -29.5], "expected": 90.0}, {"input": [90.0, -29.0], "expected": 90.0}, {"input": [90.0, -28.5], "expected": 90.0}, {"input": [90.0, -28.0], "expected": 90.0}, {"input": [90.0, -27.5], "expected": 90.0}, {"input": [90.0, -27.0], "expected": 90.0}, {"input": [90.0, -26.5], "expected": 90.0}, {"input": [90.0, -26.0], "expected": 90.0}, {"input": [90.0, -25.5], "expected": 90.0}, {"input": [90.0, -25.0], "expected": 90.0}, {"input": [90.0, -24.5], "expected": 90.0}, {"input": [90.0, -24.0], "expected": 90.0}, {"input": [90.0, -23.5], "expected": 90.0}, {"input": [90.0, -23.0], "expected": 90.0}, {"input": [90.0, -22.5], "expected": 90.0}, {"input": [90.0, -22.0], "expected": 90.0}, {"input": [90.0, -21.5], "expected": 90.0}, {"input": [90.0, -21.0], "expected": 90.0}, {"input": [90.0, -20.5], "expected": 90.0}, {"input": [90.0, -20.0], "expected": 90.0}, {"input": [90.0, -19.5], "expected": 90.0}, {"input": [90.0, -19.0], "expected": 90.0}, {"input": [90.0, -18.5], "expected": 90.0}, {"input": [90.0, -18.0], "expected": 90.0}, {"input": [90.0, -17.5], "expected": 90.0}, {"input": [90.0, -17.0], "expected": 90.0}, {"input": [90.0, -16.5], "expected": 90.0}, {"input": [90.0, -16.0], "expected": 90.0}, {"input": [90.0, -15.5], "expected": 90.0}, {"input": [90.0, -15.0], "expected": 90.0}, {"input": [90.0, -14.5], "expected": 90.0}, {"input": [90.0, -14.0], "expected": 90.0}, {"input": [90.0, -13.5], "expected": 90.0}, {"input": [90.0, -13.0], "expected": 90.0}, {"input": [90.0, -12.5], "expected": 90.0}, {"input": [90.0, -12.0], "expected": 90.0}, {"input": [90.0, -11.5], "expected": 90.0}, {"input": [90.0, -11.0], "expected": 90.0}, {"input": [90.0, -10.5], "expected": 90.0}, {"input": [90.0, -10.0], "expected": 90.0}, {"input": [90.0, -9.5], "expected": 90.0}, {"input": [90.0, -9.0], "expected": 90.0}, {"input": [90.0, -8.5], "expected": 90.0}, {"input": [90.0, -8.0], "expected": 90.0}, {"input": [90.0, -7.5], "expected": 90.0}, {"input": [90.0, -7.0], "expected": 90.0}, {"input": [90.0, -6.5], "expected": 90.0}, {"input": [90.0, -6.0], "expected": 90.0}, {"input": [90.0, -5.5], "expected": 90.0}, {"input": [90.0, -5.0], "expected": 90.0}, {"input": [90.0, -4.5], "expected": 90.0}, {"input": [90.0, -4.0], "expected": 90.0}, {"input": [90.0, -3.5], "expected": 90.0}, {"input": [90.0, -3.0], "expected": 90.0}, {"input": [90.0, -2.5], "expected": 90.0}, {"input": [90.0, -2.0], "expected": 90.0}, {"input": [90.0, -1.5], "expected": 90.0}, {"input": [90.0, -1.0], "expected": 90.0}, {"input": [90.0, -0.5], "expected": 90.0}, {"input": [90.0, 0.0], "expected": 90.0}, {"input": [90.0, 0.5], "expected": 90.0}, {"input": [90.0, 1.0], "expected": 90.0}, {"input": [90.0, 1.5], "expected": 90.0}, {"input": [90.0, 2.0], "expected": 90.0}, {"input": [90.0, 2.5], "expected": 90.0}, {"input": [90.0, 3.0], "expected": 90.0}, {"input": [90.0, 3.5], "expected": 90.0}, {"input": [90.0, 4.0], "expected": 90.0}, {"input": [90.0, 4.5], "expected": 90.0}, {"input": [90.0, 5.0], "expected": 90.0}, {"input": [90.0, 5.5], "expected": 90.0}, {"input": [90.0, 6.0], "expected": 90.0}, {"input": [90.0, 6.5], "expected": 90.0}, {"input": [90.0, 7.0], "expected": 90.0}, {"input": [90.0, 7.5], "expected": 90.0}, {"input": [90.0, 8.0], "expected": 90.0}, {"input": [90.0, 8.5], "expected": 90.0}, {"input": [90.0, 9.0], "expected": 90.0}, {"input": [90.0, 9.5], "expected": 90.0}, {"input": [90.0, 10.0], "expected": 90.0}, {"input": [90.0, 10.5], "expected": 90.0}, {"input": [90.0, 11.0], "expected": 90.0}, {"input": [90.0, 11.5], "expected": 90.0}, {"input": [90.0, 12.0], "expected": 90.0}, {"input": [90.0, 12.5], "expected": 90.0}, {"input": [90.0, 13.0], "expected": 90.0}, {"input": [90.0, 13.5], "expected": 90.0}, {"input": [90.0, 14.0], "expected": 90.0}, {"input": [90.0, 14.5], "expected": 90.0}, {"input": [90.0, 15.0], "expected": 90.0}, {"input": [90.0, 15.5], "expected": 90.0}, {"input": [90.0, 16.0], "expected": 90.0}, {"input": [90.0, 16.5], "expected": 90.0}, {"input": [90.0, 17.0], "expected": 90.0}, {"input": [90.0, 17.5], "expected": 90.0}, {"input": [90.0, 18.0], "expected": 90.0}, {"input": [90.0, 18.5], "expected": 90.0}, {"input": [90.0, 19.0], "expected": 90.0}, {"input": [90.0, 19.5], "expected": 90.0}, {"input": [90.0, 20.0], "expected": 90.0}, {"input": [90.0, 20.5], "expected": 90.0}, {"input": [90.0, 21.0], "expected": 90.0}, {"input": [90.0, 21.5], "expected": 90.0}, {"input": [90.0, 22.0], "expected": 90.0}, {"input": [90.0, 22.5], "expected": 90.0}, {"input": [90.0, 23.0], "expected": 90.0}, {"input": [90.0, 23.5], "expected": 90.0}, {"input": [90.0, 24.0], "expected": 90.0}, {"input": [90.0, 24.5], "expected": 90.0}, {"input": [90.0, 25.0], "expected": 90.0}, {"input": [90.0, 25.5], "expected": 90.0}, {"input": [90.0, 26.0], "expected": 90.0}, {"input": [90.0, 26.5], "expected": 90.0}, {"input": [90.0, 27.0], "expected": 90.0}, {"input": [90.0, 27.5], "expected": 90.0}, {"input": [90.0, 28.0], "expected": 90.0}, {"input": [90.0, 28.5], "expected": 90.0}, {"input": [90.0, 29.0], "expected": 90.0}, {"input": [90.0, 29.5], "expected": 90.0}, {"input": [90.0, 30.0], "expected": 90.0}, {"input": [90.0, 30.5], "expected": 90.0}, {"input": [90.0, 31.0], "expected": 90.0}, {"input": [90.0, 31.5], "expected": 90.0}, {"input": [90.0, 32.0], "expected": 90.0}, {"input": [90.0, 32.5], "expected": 90.0}, {"input": [90.0, 33.0], "expected": 90.0}, {"input": [90.0, 33.5], "expected": 90.0}, {"input": [90.0, 34.0], "expected": 90.0}, {"input": [90.0, 34.5], "expected": 90.0}, {"input": [90.0, 35.0], "expected": 90.0}, {"input": [90.0, 35.5], "expected": 90.0}, {"input": [90.0, 36.0], "expected": 90.0}, {"input": [90.0, 36.5], "expected": 90.0}, {"input": [90.0, 37.0], "expected": 90.0}, {"input": [90.0, 37.5], "expected": 90.0}, {"input": [90.0, 38.0], "expected": 90.0}, {"input": [90.0, 38.5], "expected": 90.0}, {"input": [90.0, 39.0], "expected": 90.0}, {"input": [90.0, 39.5], "expected": 90.0}, {"input": [90.0, 40.0], "expected": 90.0}, {"input": [90.0, 40.5], "expected": 90.0}, {"input": [90.0, 41.0], "expected": 90.0}, {"input": [90.0, 41.5], "expected": 90.0}, {"input": [90.0, 42.0], "expected": 90.0}, {"input": [90.0, 42.5], "expected": 90.0}, {"input": [90.0, 43.0], "expected": 90.0}, {"input": [90.0, 43.5], "expected": 90.0}, {"input": [90.0, 44.0], "expected": 90.0}, {"input": [90.0, 44.5], "expected": 90.0}, {"input": [90.0, 45.0], "expected": 90.0}, {"input": [90.0, 45.5], "expected": 90.0}, {"input": [90.0, 46.0], "expected": 90.0}, {"input": [90.0, 46.5], "expected": 90.0}, {"input": [90.0, 47.0], "expected": 90.0}, {"input": [90.0, 47.5], "expected": 90.0}, {"input": [90.0, 48.0], "expected": 90.0}, {"input": [90.0, 48.5], "expected": 90.0}, {"input": [90.0, 49.0], "expected": 90.0}, {"input": [90.0, 49.5], "expected": 90.0}, {"input": [90.0, 50.0], "expected": 90.0}, {"input": [90.0, 50.5], "expected": 90.0}, {"input": [90.0, 51.0], "expected": 90.0}, {"input": [90.0, 51.5], "expected": 90.0}, {"input": [90.0, 52.0], "expected": 90.0}, {"input": [90.0, 52.5], "expected": 90.0}, {"input": [90.0, 53.0], "expected": 90.0}, {"input": [90.0, 53.5], "expected": 90.0}, {"input": [90.0, 54.0], "expected": 90.0}, {"input": [90.0, 54.5], "expected": 90.0}, {"input": [90.0, 55.0], "expected": 90.0}, {"input": [90.0, 55.5], "expected": 90.0}, {"input": [90.0, 56.0], "expected": 90.0}, {"input": [90.0, 56.5], "expected": 90.0}, {"input": [90.0, 57.0], "expected": 90.0}, {"input": [90.0, 57.5], "expected": 90.00000000000001}, {"input": [90.0, 58.0], "expected": 90.00000000000001}, {"input": [90.0, 58.5], "expected": 90.00000000000001}, {"input": [90.0, 59.0], "expected": 90.00000000000003}, {"input": [90.0, 59.5], "expected": 90.00000000000006}, {"input": [90.0, 60.0], "expected": 90.0000000000001}, {"input": [90.0, 60.5], "expected": 90.00000000000016}, {"input": [90.0, 61.0], "expected": 90.00000000000026}, {"input": [90.0, 61.5], "expected": 90.00000000000043}, {"input": [90.0, 62.0], "expected": 90.0000000000007}, {"input": [90.0, 62.5], "expected": 90.00000000000114}, {"input": [90.0, 63.0], "expected": 90.00000000000188}, {"input": [90.0, 63.5], "expected": 90.0000000000031}, {"input": [90.0, 64.0], "expected": 90.00000000000512}, {"input": [90.0, 64.5], "expected": 90.00000000000843}, {"input": [90.0, 65.0], "expected": 90.00000000001388}, {"input": [90.0, 65.5], "expected": 90.0000000000229}, {"input": [90.0, 66.0], "expected": 90.00000000003776}, {"input": [90.0, 66.5], "expected": 90.00000000006224}, {"input": [90.0, 67.0], "expected": 90.00000000010262}, {"input": [90.0, 67.5], "expected": 90.0000000001692}, {"input": [90.0, 68.0], "expected": 90.00000000027894}, {"input": [90.0, 68.5], "expected": 90.0000000004599}, {"input": [90.0, 69.0], "expected": 90.00000000075826}, {"input": [90.0, 69.5], "expected": 90.00000000125016}, {"input": [90.0, 70.0], "expected": 90.00000000206116}, {"input": [90.0, 70.5], "expected": 90.00000000339827}, {"input": [90.0, 71.0], "expected": 90.0000000056028}, {"input": [90.0, 71.5], "expected": 90.00000000923745}, {"input": [90.0, 72.0], "expected": 90.00000001522999}, {"input": [90.0, 72.5], "expected": 90.00000002511}, {"input": [90.0, 73.0], "expected": 90.00000004139937}, {"input": [90.0, 73.5], "expected": 90.00000006825603}, {"input": [90.0, 74.0], "expected": 90.00000011253516}, {"input": [90.0, 74.5], "expected": 90.00000018553912}, {"input": [90.0, 75.0], "expected": 90.00000030590228}, {"input": [90.0, 75.5], "expected": 90.00000050434754}, {"input": [90.0, 76.0], "expected": 90.00000083152837}, {"input": [90.0, 76.5], "expected": 90.00000137095815}, {"input": [90.0, 77.0], "expected": 90.00000226032685}, {"input": [90.0, 77.5], "expected": 90.00000372664623}, {"input": [90.0, 78.0], "expected": 90.00000614419348}, {"input": [90.0, 78.5], "expected": 90.00001013004228}, {"input": [90.0, 79.0], "expected": 90.00001670156132}, {"input": [90.0, 79.5], "expected": 90.00002753607023}, {"input": [90.0, 80.0], "expected": 90.00004539889922}, {"input": [90.0, 80.5], "expected": 90.00007484902864}, {"input": [90.0, 81.0], "expected": 90.00012340218973}, {"input": [90.0, 81.5], "expected": 90.00020344767213}, {"input": [90.0, 82.0], "expected": 90.0003354063729}, {"input": [90.0, 82.5], "expected": 90.00055293147535}, {"input": [90.0, 83.0], "expected": 90.00091146645377}, {"input": [90.0, 83.5], "expected": 90.00150231015975}, {"input": [90.0, 84.0], "expected": 90.00247568513772}, {"input": [90.0, 84.5], "expected": 90.00407844327057}, {"input": [90.0, 85.0], "expected": 90.00671534848912}, {"input": [90.0, 85.5], "expected": 90.0110477448486}, {"input": [90.0, 86.0], "expected": 90.0181499279178}, {"input": [90.0, 86.5], "expected": 90.02975041827263}, {"input": [90.0, 87.0], "expected": 90.04858735157374}, {"input": [90.0, 87.5], "expected": 90.07888973429255}, {"input": [90.0, 88.0], "expected": 90.12692801104298}, {"input": [90.0, 88.5], "expected": 90.20141327798275}, {"input": [90.0, 89.0], "expected": 90.31326168751822}, {"input": [90.0, 89.5], "expected": 90.4740769841801}, {"input": [90.0, 90.0], "expected": 90.69314718055995}, {"input": [90.0, 90.5], "expected": 90.9740769841801}, {"input": [90.0, 91.0], "expected": 91.31326168751822}, {"input": [90.0, 91.5], "expected": 91.70141327798275}, {"input": [90.0, 92.0], "expected": 92.12692801104298}, {"input": [90.0, 92.5], "expected": 92.57888973429255}, {"input": [90.0, 93.0], "expected": 93.04858735157374}, {"input": [90.0, 93.5], "expected": 93.52975041827263}, {"input": [90.0, 94.0], "expected": 94.0181499279178}, {"input": [90.0, 94.5], "expected": 94.5110477448486}, {"input": [90.0, 95.0], "expected": 95.00671534848912}, {"input": [90.0, 95.5], "expected": 95.50407844327057}, {"input": [90.0, 96.0], "expected": 96.00247568513772}, {"input": [90.0, 96.5], "expected": 96.50150231015975}, {"input": [90.0, 97.0], "expected": 97.00091146645377}, {"input": [90.0, 97.5], "expected": 97.50055293147535}, {"input": [90.0, 98.0], "expected": 98.0003354063729}, {"input": [90.0, 98.5], "expected": 98.50020344767213}, {"input": [90.0, 99.0], "expected": 99.00012340218973}, {"input": [90.0, 99.5], "expected": 99.50007484902864}, {"input": [90.5, -100.0], "expected": 90.5}, {"input": [90.5, -99.5], "expected": 90.5}, {"input": [90.5, -99.0], "expected": 90.5}, {"input": [90.5, -98.5], "expected": 90.5}, {"input": [90.5, -98.0], "expected": 90.5}, {"input": [90.5, -97.5], "expected": 90.5}, {"input": [90.5, -97.0], "expected": 90.5}, {"input": [90.5, -96.5], "expected": 90.5}, {"input": [90.5, -96.0], "expected": 90.5}, {"input": [90.5, -95.5], "expected": 90.5}, {"input": [90.5, -95.0], "expected": 90.5}, {"input": [90.5, -94.5], "expected": 90.5}, {"input": [90.5, -94.0], "expected": 90.5}, {"input": [90.5, -93.5], "expected": 90.5}, {"input": [90.5, -93.0], "expected": 90.5}, {"input": [90.5, -92.5], "expected": 90.5}, {"input": [90.5, -92.0], "expected": 90.5}, {"input": [90.5, -91.5], "expected": 90.5}, {"input": [90.5, -91.0], "expected": 90.5}, {"input": [90.5, -90.5], "expected": 90.5}, {"input": [90.5, -90.0], "expected": 90.5}, {"input": [90.5, -89.5], "expected": 90.5}, {"input": [90.5, -89.0], "expected": 90.5}, {"input": [90.5, -88.5], "expected": 90.5}, {"input": [90.5, -88.0], "expected": 90.5}, {"input": [90.5, -87.5], "expected": 90.5}, {"input": [90.5, -87.0], "expected": 90.5}, {"input": [90.5, -86.5], "expected": 90.5}, {"input": [90.5, -86.0], "expected": 90.5}, {"input": [90.5, -85.5], "expected": 90.5}, {"input": [90.5, -85.0], "expected": 90.5}, {"input": [90.5, -84.5], "expected": 90.5}, {"input": [90.5, -84.0], "expected": 90.5}, {"input": [90.5, -83.5], "expected": 90.5}, {"input": [90.5, -83.0], "expected": 90.5}, {"input": [90.5, -82.5], "expected": 90.5}, {"input": [90.5, -82.0], "expected": 90.5}, {"input": [90.5, -81.5], "expected": 90.5}, {"input": [90.5, -81.0], "expected": 90.5}, {"input": [90.5, -80.5], "expected": 90.5}, {"input": [90.5, -80.0], "expected": 90.5}, {"input": [90.5, -79.5], "expected": 90.5}, {"input": [90.5, -79.0], "expected": 90.5}, {"input": [90.5, -78.5], "expected": 90.5}, {"input": [90.5, -78.0], "expected": 90.5}, {"input": [90.5, -77.5], "expected": 90.5}, {"input": [90.5, -77.0], "expected": 90.5}, {"input": [90.5, -76.5], "expected": 90.5}, {"input": [90.5, -76.0], "expected": 90.5}, {"input": [90.5, -75.5], "expected": 90.5}, {"input": [90.5, -75.0], "expected": 90.5}, {"input": [90.5, -74.5], "expected": 90.5}, {"input": [90.5, -74.0], "expected": 90.5}, {"input": [90.5, -73.5], "expected": 90.5}, {"input": [90.5, -73.0], "expected": 90.5}, {"input": [90.5, -72.5], "expected": 90.5}, {"input": [90.5, -72.0], "expected": 90.5}, {"input": [90.5, -71.5], "expected": 90.5}, {"input": [90.5, -71.0], "expected": 90.5}, {"input": [90.5, -70.5], "expected": 90.5}, {"input": [90.5, -70.0], "expected": 90.5}, {"input": [90.5, -69.5], "expected": 90.5}, {"input": [90.5, -69.0], "expected": 90.5}, {"input": [90.5, -68.5], "expected": 90.5}, {"input": [90.5, -68.0], "expected": 90.5}, {"input": [90.5, -67.5], "expected": 90.5}, {"input": [90.5, -67.0], "expected": 90.5}, {"input": [90.5, -66.5], "expected": 90.5}, {"input": [90.5, -66.0], "expected": 90.5}, {"input": [90.5, -65.5], "expected": 90.5}, {"input": [90.5, -65.0], "expected": 90.5}, {"input": [90.5, -64.5], "expected": 90.5}, {"input": [90.5, -64.0], "expected": 90.5}, {"input": [90.5, -63.5], "expected": 90.5}, {"input": [90.5, -63.0], "expected": 90.5}, {"input": [90.5, -62.5], "expected": 90.5}, {"input": [90.5, -62.0], "expected": 90.5}, {"input": [90.5, -61.5], "expected": 90.5}, {"input": [90.5, -61.0], "expected": 90.5}, {"input": [90.5, -60.5], "expected": 90.5}, {"input": [90.5, -60.0], "expected": 90.5}, {"input": [90.5, -59.5], "expected": 90.5}, {"input": [90.5, -59.0], "expected": 90.5}, {"input": [90.5, -58.5], "expected": 90.5}, {"input": [90.5, -58.0], "expected": 90.5}, {"input": [90.5, -57.5], "expected": 90.5}, {"input": [90.5, -57.0], "expected": 90.5}, {"input": [90.5, -56.5], "expected": 90.5}, {"input": [90.5, -56.0], "expected": 90.5}, {"input": [90.5, -55.5], "expected": 90.5}, {"input": [90.5, -55.0], "expected": 90.5}, {"input": [90.5, -54.5], "expected": 90.5}, {"input": [90.5, -54.0], "expected": 90.5}, {"input": [90.5, -53.5], "expected": 90.5}, {"input": [90.5, -53.0], "expected": 90.5}, {"input": [90.5, -52.5], "expected": 90.5}, {"input": [90.5, -52.0], "expected": 90.5}, {"input": [90.5, -51.5], "expected": 90.5}, {"input": [90.5, -51.0], "expected": 90.5}, {"input": [90.5, -50.5], "expected": 90.5}, {"input": [90.5, -50.0], "expected": 90.5}, {"input": [90.5, -49.5], "expected": 90.5}, {"input": [90.5, -49.0], "expected": 90.5}, {"input": [90.5, -48.5], "expected": 90.5}, {"input": [90.5, -48.0], "expected": 90.5}, {"input": [90.5, -47.5], "expected": 90.5}, {"input": [90.5, -47.0], "expected": 90.5}, {"input": [90.5, -46.5], "expected": 90.5}, {"input": [90.5, -46.0], "expected": 90.5}, {"input": [90.5, -45.5], "expected": 90.5}, {"input": [90.5, -45.0], "expected": 90.5}, {"input": [90.5, -44.5], "expected": 90.5}, {"input": [90.5, -44.0], "expected": 90.5}, {"input": [90.5, -43.5], "expected": 90.5}, {"input": [90.5, -43.0], "expected": 90.5}, {"input": [90.5, -42.5], "expected": 90.5}, {"input": [90.5, -42.0], "expected": 90.5}, {"input": [90.5, -41.5], "expected": 90.5}, {"input": [90.5, -41.0], "expected": 90.5}, {"input": [90.5, -40.5], "expected": 90.5}, {"input": [90.5, -40.0], "expected": 90.5}, {"input": [90.5, -39.5], "expected": 90.5}, {"input": [90.5, -39.0], "expected": 90.5}, {"input": [90.5, -38.5], "expected": 90.5}, {"input": [90.5, -38.0], "expected": 90.5}, {"input": [90.5, -37.5], "expected": 90.5}, {"input": [90.5, -37.0], "expected": 90.5}, {"input": [90.5, -36.5], "expected": 90.5}, {"input": [90.5, -36.0], "expected": 90.5}, {"input": [90.5, -35.5], "expected": 90.5}, {"input": [90.5, -35.0], "expected": 90.5}, {"input": [90.5, -34.5], "expected": 90.5}, {"input": [90.5, -34.0], "expected": 90.5}, {"input": [90.5, -33.5], "expected": 90.5}, {"input": [90.5, -33.0], "expected": 90.5}, {"input": [90.5, -32.5], "expected": 90.5}, {"input": [90.5, -32.0], "expected": 90.5}, {"input": [90.5, -31.5], "expected": 90.5}, {"input": [90.5, -31.0], "expected": 90.5}, {"input": [90.5, -30.5], "expected": 90.5}, {"input": [90.5, -30.0], "expected": 90.5}, {"input": [90.5, -29.5], "expected": 90.5}, {"input": [90.5, -29.0], "expected": 90.5}, {"input": [90.5, -28.5], "expected": 90.5}, {"input": [90.5, -28.0], "expected": 90.5}, {"input": [90.5, -27.5], "expected": 90.5}, {"input": [90.5, -27.0], "expected": 90.5}, {"input": [90.5, -26.5], "expected": 90.5}, {"input": [90.5, -26.0], "expected": 90.5}, {"input": [90.5, -25.5], "expected": 90.5}, {"input": [90.5, -25.0], "expected": 90.5}, {"input": [90.5, -24.5], "expected": 90.5}, {"input": [90.5, -24.0], "expected": 90.5}, {"input": [90.5, -23.5], "expected": 90.5}, {"input": [90.5, -23.0], "expected": 90.5}, {"input": [90.5, -22.5], "expected": 90.5}, {"input": [90.5, -22.0], "expected": 90.5}, {"input": [90.5, -21.5], "expected": 90.5}, {"input": [90.5, -21.0], "expected": 90.5}, {"input": [90.5, -20.5], "expected": 90.5}, {"input": [90.5, -20.0], "expected": 90.5}, {"input": [90.5, -19.5], "expected": 90.5}, {"input": [90.5, -19.0], "expected": 90.5}, {"input": [90.5, -18.5], "expected": 90.5}, {"input": [90.5, -18.0], "expected": 90.5}, {"input": [90.5, -17.5], "expected": 90.5}, {"input": [90.5, -17.0], "expected": 90.5}, {"input": [90.5, -16.5], "expected": 90.5}, {"input": [90.5, -16.0], "expected": 90.5}, {"input": [90.5, -15.5], "expected": 90.5}, {"input": [90.5, -15.0], "expected": 90.5}, {"input": [90.5, -14.5], "expected": 90.5}, {"input": [90.5, -14.0], "expected": 90.5}, {"input": [90.5, -13.5], "expected": 90.5}, {"input": [90.5, -13.0], "expected": 90.5}, {"input": [90.5, -12.5], "expected": 90.5}, {"input": [90.5, -12.0], "expected": 90.5}, {"input": [90.5, -11.5], "expected": 90.5}, {"input": [90.5, -11.0], "expected": 90.5}, {"input": [90.5, -10.5], "expected": 90.5}, {"input": [90.5, -10.0], "expected": 90.5}, {"input": [90.5, -9.5], "expected": 90.5}, {"input": [90.5, -9.0], "expected": 90.5}, {"input": [90.5, -8.5], "expected": 90.5}, {"input": [90.5, -8.0], "expected": 90.5}, {"input": [90.5, -7.5], "expected": 90.5}, {"input": [90.5, -7.0], "expected": 90.5}, {"input": [90.5, -6.5], "expected": 90.5}, {"input": [90.5, -6.0], "expected": 90.5}, {"input": [90.5, -5.5], "expected": 90.5}, {"input": [90.5, -5.0], "expected": 90.5}, {"input": [90.5, -4.5], "expected": 90.5}, {"input": [90.5, -4.0], "expected": 90.5}, {"input": [90.5, -3.5], "expected": 90.5}, {"input": [90.5, -3.0], "expected": 90.5}, {"input": [90.5, -2.5], "expected": 90.5}, {"input": [90.5, -2.0], "expected": 90.5}, {"input": [90.5, -1.5], "expected": 90.5}, {"input": [90.5, -1.0], "expected": 90.5}, {"input": [90.5, -0.5], "expected": 90.5}, {"input": [90.5, 0.0], "expected": 90.5}, {"input": [90.5, 0.5], "expected": 90.5}, {"input": [90.5, 1.0], "expected": 90.5}, {"input": [90.5, 1.5], "expected": 90.5}, {"input": [90.5, 2.0], "expected": 90.5}, {"input": [90.5, 2.5], "expected": 90.5}, {"input": [90.5, 3.0], "expected": 90.5}, {"input": [90.5, 3.5], "expected": 90.5}, {"input": [90.5, 4.0], "expected": 90.5}, {"input": [90.5, 4.5], "expected": 90.5}, {"input": [90.5, 5.0], "expected": 90.5}, {"input": [90.5, 5.5], "expected": 90.5}, {"input": [90.5, 6.0], "expected": 90.5}, {"input": [90.5, 6.5], "expected": 90.5}, {"input": [90.5, 7.0], "expected": 90.5}, {"input": [90.5, 7.5], "expected": 90.5}, {"input": [90.5, 8.0], "expected": 90.5}, {"input": [90.5, 8.5], "expected": 90.5}, {"input": [90.5, 9.0], "expected": 90.5}, {"input": [90.5, 9.5], "expected": 90.5}, {"input": [90.5, 10.0], "expected": 90.5}, {"input": [90.5, 10.5], "expected": 90.5}, {"input": [90.5, 11.0], "expected": 90.5}, {"input": [90.5, 11.5], "expected": 90.5}, {"input": [90.5, 12.0], "expected": 90.5}, {"input": [90.5, 12.5], "expected": 90.5}, {"input": [90.5, 13.0], "expected": 90.5}, {"input": [90.5, 13.5], "expected": 90.5}, {"input": [90.5, 14.0], "expected": 90.5}, {"input": [90.5, 14.5], "expected": 90.5}, {"input": [90.5, 15.0], "expected": 90.5}, {"input": [90.5, 15.5], "expected": 90.5}, {"input": [90.5, 16.0], "expected": 90.5}, {"input": [90.5, 16.5], "expected": 90.5}, {"input": [90.5, 17.0], "expected": 90.5}, {"input": [90.5, 17.5], "expected": 90.5}, {"input": [90.5, 18.0], "expected": 90.5}, {"input": [90.5, 18.5], "expected": 90.5}, {"input": [90.5, 19.0], "expected": 90.5}, {"input": [90.5, 19.5], "expected": 90.5}, {"input": [90.5, 20.0], "expected": 90.5}, {"input": [90.5, 20.5], "expected": 90.5}, {"input": [90.5, 21.0], "expected": 90.5}, {"input": [90.5, 21.5], "expected": 90.5}, {"input": [90.5, 22.0], "expected": 90.5}, {"input": [90.5, 22.5], "expected": 90.5}, {"input": [90.5, 23.0], "expected": 90.5}, {"input": [90.5, 23.5], "expected": 90.5}, {"input": [90.5, 24.0], "expected": 90.5}, {"input": [90.5, 24.5], "expected": 90.5}, {"input": [90.5, 25.0], "expected": 90.5}, {"input": [90.5, 25.5], "expected": 90.5}, {"input": [90.5, 26.0], "expected": 90.5}, {"input": [90.5, 26.5], "expected": 90.5}, {"input": [90.5, 27.0], "expected": 90.5}, {"input": [90.5, 27.5], "expected": 90.5}, {"input": [90.5, 28.0], "expected": 90.5}, {"input": [90.5, 28.5], "expected": 90.5}, {"input": [90.5, 29.0], "expected": 90.5}, {"input": [90.5, 29.5], "expected": 90.5}, {"input": [90.5, 30.0], "expected": 90.5}, {"input": [90.5, 30.5], "expected": 90.5}, {"input": [90.5, 31.0], "expected": 90.5}, {"input": [90.5, 31.5], "expected": 90.5}, {"input": [90.5, 32.0], "expected": 90.5}, {"input": [90.5, 32.5], "expected": 90.5}, {"input": [90.5, 33.0], "expected": 90.5}, {"input": [90.5, 33.5], "expected": 90.5}, {"input": [90.5, 34.0], "expected": 90.5}, {"input": [90.5, 34.5], "expected": 90.5}, {"input": [90.5, 35.0], "expected": 90.5}, {"input": [90.5, 35.5], "expected": 90.5}, {"input": [90.5, 36.0], "expected": 90.5}, {"input": [90.5, 36.5], "expected": 90.5}, {"input": [90.5, 37.0], "expected": 90.5}, {"input": [90.5, 37.5], "expected": 90.5}, {"input": [90.5, 38.0], "expected": 90.5}, {"input": [90.5, 38.5], "expected": 90.5}, {"input": [90.5, 39.0], "expected": 90.5}, {"input": [90.5, 39.5], "expected": 90.5}, {"input": [90.5, 40.0], "expected": 90.5}, {"input": [90.5, 40.5], "expected": 90.5}, {"input": [90.5, 41.0], "expected": 90.5}, {"input": [90.5, 41.5], "expected": 90.5}, {"input": [90.5, 42.0], "expected": 90.5}, {"input": [90.5, 42.5], "expected": 90.5}, {"input": [90.5, 43.0], "expected": 90.5}, {"input": [90.5, 43.5], "expected": 90.5}, {"input": [90.5, 44.0], "expected": 90.5}, {"input": [90.5, 44.5], "expected": 90.5}, {"input": [90.5, 45.0], "expected": 90.5}, {"input": [90.5, 45.5], "expected": 90.5}, {"input": [90.5, 46.0], "expected": 90.5}, {"input": [90.5, 46.5], "expected": 90.5}, {"input": [90.5, 47.0], "expected": 90.5}, {"input": [90.5, 47.5], "expected": 90.5}, {"input": [90.5, 48.0], "expected": 90.5}, {"input": [90.5, 48.5], "expected": 90.5}, {"input": [90.5, 49.0], "expected": 90.5}, {"input": [90.5, 49.5], "expected": 90.5}, {"input": [90.5, 50.0], "expected": 90.5}, {"input": [90.5, 50.5], "expected": 90.5}, {"input": [90.5, 51.0], "expected": 90.5}, {"input": [90.5, 51.5], "expected": 90.5}, {"input": [90.5, 52.0], "expected": 90.5}, {"input": [90.5, 52.5], "expected": 90.5}, {"input": [90.5, 53.0], "expected": 90.5}, {"input": [90.5, 53.5], "expected": 90.5}, {"input": [90.5, 54.0], "expected": 90.5}, {"input": [90.5, 54.5], "expected": 90.5}, {"input": [90.5, 55.0], "expected": 90.5}, {"input": [90.5, 55.5], "expected": 90.5}, {"input": [90.5, 56.0], "expected": 90.5}, {"input": [90.5, 56.5], "expected": 90.5}, {"input": [90.5, 57.0], "expected": 90.5}, {"input": [90.5, 57.5], "expected": 90.5}, {"input": [90.5, 58.0], "expected": 90.50000000000001}, {"input": [90.5, 58.5], "expected": 90.50000000000001}, {"input": [90.5, 59.0], "expected": 90.50000000000001}, {"input": [90.5, 59.5], "expected": 90.50000000000003}, {"input": [90.5, 60.0], "expected": 90.50000000000006}, {"input": [90.5, 60.5], "expected": 90.5000000000001}, {"input": [90.5, 61.0], "expected": 90.50000000000016}, {"input": [90.5, 61.5], "expected": 90.50000000000026}, {"input": [90.5, 62.0], "expected": 90.50000000000043}, {"input": [90.5, 62.5], "expected": 90.5000000000007}, {"input": [90.5, 63.0], "expected": 90.50000000000114}, {"input": [90.5, 63.5], "expected": 90.50000000000188}, {"input": [90.5, 64.0], "expected": 90.5000000000031}, {"input": [90.5, 64.5], "expected": 90.50000000000512}, {"input": [90.5, 65.0], "expected": 90.50000000000843}, {"input": [90.5, 65.5], "expected": 90.50000000001388}, {"input": [90.5, 66.0], "expected": 90.5000000000229}, {"input": [90.5, 66.5], "expected": 90.50000000003776}, {"input": [90.5, 67.0], "expected": 90.50000000006224}, {"input": [90.5, 67.5], "expected": 90.50000000010262}, {"input": [90.5, 68.0], "expected": 90.5000000001692}, {"input": [90.5, 68.5], "expected": 90.50000000027894}, {"input": [90.5, 69.0], "expected": 90.5000000004599}, {"input": [90.5, 69.5], "expected": 90.50000000075826}, {"input": [90.5, 70.0], "expected": 90.50000000125016}, {"input": [90.5, 70.5], "expected": 90.50000000206116}, {"input": [90.5, 71.0], "expected": 90.50000000339827}, {"input": [90.5, 71.5], "expected": 90.5000000056028}, {"input": [90.5, 72.0], "expected": 90.50000000923745}, {"input": [90.5, 72.5], "expected": 90.50000001522999}, {"input": [90.5, 73.0], "expected": 90.50000002511}, {"input": [90.5, 73.5], "expected": 90.50000004139937}, {"input": [90.5, 74.0], "expected": 90.50000006825603}, {"input": [90.5, 74.5], "expected": 90.50000011253516}, {"input": [90.5, 75.0], "expected": 90.50000018553912}, {"input": [90.5, 75.5], "expected": 90.50000030590228}, {"input": [90.5, 76.0], "expected": 90.50000050434754}, {"input": [90.5, 76.5], "expected": 90.50000083152837}, {"input": [90.5, 77.0], "expected": 90.50000137095815}, {"input": [90.5, 77.5], "expected": 90.50000226032685}, {"input": [90.5, 78.0], "expected": 90.50000372664623}, {"input": [90.5, 78.5], "expected": 90.50000614419348}, {"input": [90.5, 79.0], "expected": 90.50001013004228}, {"input": [90.5, 79.5], "expected": 90.50001670156132}, {"input": [90.5, 80.0], "expected": 90.50002753607023}, {"input": [90.5, 80.5], "expected": 90.50004539889922}, {"input": [90.5, 81.0], "expected": 90.50007484902864}, {"input": [90.5, 81.5], "expected": 90.50012340218973}, {"input": [90.5, 82.0], "expected": 90.50020344767213}, {"input": [90.5, 82.5], "expected": 90.5003354063729}, {"input": [90.5, 83.0], "expected": 90.50055293147535}, {"input": [90.5, 83.5], "expected": 90.50091146645377}, {"input": [90.5, 84.0], "expected": 90.50150231015975}, {"input": [90.5, 84.5], "expected": 90.50247568513772}, {"input": [90.5, 85.0], "expected": 90.50407844327057}, {"input": [90.5, 85.5], "expected": 90.50671534848912}, {"input": [90.5, 86.0], "expected": 90.5110477448486}, {"input": [90.5, 86.5], "expected": 90.5181499279178}, {"input": [90.5, 87.0], "expected": 90.52975041827263}, {"input": [90.5, 87.5], "expected": 90.54858735157374}, {"input": [90.5, 88.0], "expected": 90.57888973429255}, {"input": [90.5, 88.5], "expected": 90.62692801104298}, {"input": [90.5, 89.0], "expected": 90.70141327798275}, {"input": [90.5, 89.5], "expected": 90.81326168751822}, {"input": [90.5, 90.0], "expected": 90.9740769841801}, {"input": [90.5, 90.5], "expected": 91.19314718055995}, {"input": [90.5, 91.0], "expected": 91.4740769841801}, {"input": [90.5, 91.5], "expected": 91.81326168751822}, {"input": [90.5, 92.0], "expected": 92.20141327798275}, {"input": [90.5, 92.5], "expected": 92.62692801104298}, {"input": [90.5, 93.0], "expected": 93.07888973429255}, {"input": [90.5, 93.5], "expected": 93.54858735157374}, {"input": [90.5, 94.0], "expected": 94.02975041827263}, {"input": [90.5, 94.5], "expected": 94.5181499279178}, {"input": [90.5, 95.0], "expected": 95.0110477448486}, {"input": [90.5, 95.5], "expected": 95.50671534848912}, {"input": [90.5, 96.0], "expected": 96.00407844327057}, {"input": [90.5, 96.5], "expected": 96.50247568513772}, {"input": [90.5, 97.0], "expected": 97.00150231015975}, {"input": [90.5, 97.5], "expected": 97.50091146645377}, {"input": [90.5, 98.0], "expected": 98.00055293147535}, {"input": [90.5, 98.5], "expected": 98.5003354063729}, {"input": [90.5, 99.0], "expected": 99.00020344767213}, {"input": [90.5, 99.5], "expected": 99.50012340218973}, {"input": [91.0, -100.0], "expected": 91.0}, {"input": [91.0, -99.5], "expected": 91.0}, {"input": [91.0, -99.0], "expected": 91.0}, {"input": [91.0, -98.5], "expected": 91.0}, {"input": [91.0, -98.0], "expected": 91.0}, {"input": [91.0, -97.5], "expected": 91.0}, {"input": [91.0, -97.0], "expected": 91.0}, {"input": [91.0, -96.5], "expected": 91.0}, {"input": [91.0, -96.0], "expected": 91.0}, {"input": [91.0, -95.5], "expected": 91.0}, {"input": [91.0, -95.0], "expected": 91.0}, {"input": [91.0, -94.5], "expected": 91.0}, {"input": [91.0, -94.0], "expected": 91.0}, {"input": [91.0, -93.5], "expected": 91.0}, {"input": [91.0, -93.0], "expected": 91.0}, {"input": [91.0, -92.5], "expected": 91.0}, {"input": [91.0, -92.0], "expected": 91.0}, {"input": [91.0, -91.5], "expected": 91.0}, {"input": [91.0, -91.0], "expected": 91.0}, {"input": [91.0, -90.5], "expected": 91.0}, {"input": [91.0, -90.0], "expected": 91.0}, {"input": [91.0, -89.5], "expected": 91.0}, {"input": [91.0, -89.0], "expected": 91.0}, {"input": [91.0, -88.5], "expected": 91.0}, {"input": [91.0, -88.0], "expected": 91.0}, {"input": [91.0, -87.5], "expected": 91.0}, {"input": [91.0, -87.0], "expected": 91.0}, {"input": [91.0, -86.5], "expected": 91.0}, {"input": [91.0, -86.0], "expected": 91.0}, {"input": [91.0, -85.5], "expected": 91.0}, {"input": [91.0, -85.0], "expected": 91.0}, {"input": [91.0, -84.5], "expected": 91.0}, {"input": [91.0, -84.0], "expected": 91.0}, {"input": [91.0, -83.5], "expected": 91.0}, {"input": [91.0, -83.0], "expected": 91.0}, {"input": [91.0, -82.5], "expected": 91.0}, {"input": [91.0, -82.0], "expected": 91.0}, {"input": [91.0, -81.5], "expected": 91.0}, {"input": [91.0, -81.0], "expected": 91.0}, {"input": [91.0, -80.5], "expected": 91.0}, {"input": [91.0, -80.0], "expected": 91.0}, {"input": [91.0, -79.5], "expected": 91.0}, {"input": [91.0, -79.0], "expected": 91.0}, {"input": [91.0, -78.5], "expected": 91.0}, {"input": [91.0, -78.0], "expected": 91.0}, {"input": [91.0, -77.5], "expected": 91.0}, {"input": [91.0, -77.0], "expected": 91.0}, {"input": [91.0, -76.5], "expected": 91.0}, {"input": [91.0, -76.0], "expected": 91.0}, {"input": [91.0, -75.5], "expected": 91.0}, {"input": [91.0, -75.0], "expected": 91.0}, {"input": [91.0, -74.5], "expected": 91.0}, {"input": [91.0, -74.0], "expected": 91.0}, {"input": [91.0, -73.5], "expected": 91.0}, {"input": [91.0, -73.0], "expected": 91.0}, {"input": [91.0, -72.5], "expected": 91.0}, {"input": [91.0, -72.0], "expected": 91.0}, {"input": [91.0, -71.5], "expected": 91.0}, {"input": [91.0, -71.0], "expected": 91.0}, {"input": [91.0, -70.5], "expected": 91.0}, {"input": [91.0, -70.0], "expected": 91.0}, {"input": [91.0, -69.5], "expected": 91.0}, {"input": [91.0, -69.0], "expected": 91.0}, {"input": [91.0, -68.5], "expected": 91.0}, {"input": [91.0, -68.0], "expected": 91.0}, {"input": [91.0, -67.5], "expected": 91.0}, {"input": [91.0, -67.0], "expected": 91.0}, {"input": [91.0, -66.5], "expected": 91.0}, {"input": [91.0, -66.0], "expected": 91.0}, {"input": [91.0, -65.5], "expected": 91.0}, {"input": [91.0, -65.0], "expected": 91.0}, {"input": [91.0, -64.5], "expected": 91.0}, {"input": [91.0, -64.0], "expected": 91.0}, {"input": [91.0, -63.5], "expected": 91.0}, {"input": [91.0, -63.0], "expected": 91.0}, {"input": [91.0, -62.5], "expected": 91.0}, {"input": [91.0, -62.0], "expected": 91.0}, {"input": [91.0, -61.5], "expected": 91.0}, {"input": [91.0, -61.0], "expected": 91.0}, {"input": [91.0, -60.5], "expected": 91.0}, {"input": [91.0, -60.0], "expected": 91.0}, {"input": [91.0, -59.5], "expected": 91.0}, {"input": [91.0, -59.0], "expected": 91.0}, {"input": [91.0, -58.5], "expected": 91.0}, {"input": [91.0, -58.0], "expected": 91.0}, {"input": [91.0, -57.5], "expected": 91.0}, {"input": [91.0, -57.0], "expected": 91.0}, {"input": [91.0, -56.5], "expected": 91.0}, {"input": [91.0, -56.0], "expected": 91.0}, {"input": [91.0, -55.5], "expected": 91.0}, {"input": [91.0, -55.0], "expected": 91.0}, {"input": [91.0, -54.5], "expected": 91.0}, {"input": [91.0, -54.0], "expected": 91.0}, {"input": [91.0, -53.5], "expected": 91.0}, {"input": [91.0, -53.0], "expected": 91.0}, {"input": [91.0, -52.5], "expected": 91.0}, {"input": [91.0, -52.0], "expected": 91.0}, {"input": [91.0, -51.5], "expected": 91.0}, {"input": [91.0, -51.0], "expected": 91.0}, {"input": [91.0, -50.5], "expected": 91.0}, {"input": [91.0, -50.0], "expected": 91.0}, {"input": [91.0, -49.5], "expected": 91.0}, {"input": [91.0, -49.0], "expected": 91.0}, {"input": [91.0, -48.5], "expected": 91.0}, {"input": [91.0, -48.0], "expected": 91.0}, {"input": [91.0, -47.5], "expected": 91.0}, {"input": [91.0, -47.0], "expected": 91.0}, {"input": [91.0, -46.5], "expected": 91.0}, {"input": [91.0, -46.0], "expected": 91.0}, {"input": [91.0, -45.5], "expected": 91.0}, {"input": [91.0, -45.0], "expected": 91.0}, {"input": [91.0, -44.5], "expected": 91.0}, {"input": [91.0, -44.0], "expected": 91.0}, {"input": [91.0, -43.5], "expected": 91.0}, {"input": [91.0, -43.0], "expected": 91.0}, {"input": [91.0, -42.5], "expected": 91.0}, {"input": [91.0, -42.0], "expected": 91.0}, {"input": [91.0, -41.5], "expected": 91.0}, {"input": [91.0, -41.0], "expected": 91.0}, {"input": [91.0, -40.5], "expected": 91.0}, {"input": [91.0, -40.0], "expected": 91.0}, {"input": [91.0, -39.5], "expected": 91.0}, {"input": [91.0, -39.0], "expected": 91.0}, {"input": [91.0, -38.5], "expected": 91.0}, {"input": [91.0, -38.0], "expected": 91.0}, {"input": [91.0, -37.5], "expected": 91.0}, {"input": [91.0, -37.0], "expected": 91.0}, {"input": [91.0, -36.5], "expected": 91.0}, {"input": [91.0, -36.0], "expected": 91.0}, {"input": [91.0, -35.5], "expected": 91.0}, {"input": [91.0, -35.0], "expected": 91.0}, {"input": [91.0, -34.5], "expected": 91.0}, {"input": [91.0, -34.0], "expected": 91.0}, {"input": [91.0, -33.5], "expected": 91.0}, {"input": [91.0, -33.0], "expected": 91.0}, {"input": [91.0, -32.5], "expected": 91.0}, {"input": [91.0, -32.0], "expected": 91.0}, {"input": [91.0, -31.5], "expected": 91.0}, {"input": [91.0, -31.0], "expected": 91.0}, {"input": [91.0, -30.5], "expected": 91.0}, {"input": [91.0, -30.0], "expected": 91.0}, {"input": [91.0, -29.5], "expected": 91.0}, {"input": [91.0, -29.0], "expected": 91.0}, {"input": [91.0, -28.5], "expected": 91.0}, {"input": [91.0, -28.0], "expected": 91.0}, {"input": [91.0, -27.5], "expected": 91.0}, {"input": [91.0, -27.0], "expected": 91.0}, {"input": [91.0, -26.5], "expected": 91.0}, {"input": [91.0, -26.0], "expected": 91.0}, {"input": [91.0, -25.5], "expected": 91.0}, {"input": [91.0, -25.0], "expected": 91.0}, {"input": [91.0, -24.5], "expected": 91.0}, {"input": [91.0, -24.0], "expected": 91.0}, {"input": [91.0, -23.5], "expected": 91.0}, {"input": [91.0, -23.0], "expected": 91.0}, {"input": [91.0, -22.5], "expected": 91.0}, {"input": [91.0, -22.0], "expected": 91.0}, {"input": [91.0, -21.5], "expected": 91.0}, {"input": [91.0, -21.0], "expected": 91.0}, {"input": [91.0, -20.5], "expected": 91.0}, {"input": [91.0, -20.0], "expected": 91.0}, {"input": [91.0, -19.5], "expected": 91.0}, {"input": [91.0, -19.0], "expected": 91.0}, {"input": [91.0, -18.5], "expected": 91.0}, {"input": [91.0, -18.0], "expected": 91.0}, {"input": [91.0, -17.5], "expected": 91.0}, {"input": [91.0, -17.0], "expected": 91.0}, {"input": [91.0, -16.5], "expected": 91.0}, {"input": [91.0, -16.0], "expected": 91.0}, {"input": [91.0, -15.5], "expected": 91.0}, {"input": [91.0, -15.0], "expected": 91.0}, {"input": [91.0, -14.5], "expected": 91.0}, {"input": [91.0, -14.0], "expected": 91.0}, {"input": [91.0, -13.5], "expected": 91.0}, {"input": [91.0, -13.0], "expected": 91.0}, {"input": [91.0, -12.5], "expected": 91.0}, {"input": [91.0, -12.0], "expected": 91.0}, {"input": [91.0, -11.5], "expected": 91.0}, {"input": [91.0, -11.0], "expected": 91.0}, {"input": [91.0, -10.5], "expected": 91.0}, {"input": [91.0, -10.0], "expected": 91.0}, {"input": [91.0, -9.5], "expected": 91.0}, {"input": [91.0, -9.0], "expected": 91.0}, {"input": [91.0, -8.5], "expected": 91.0}, {"input": [91.0, -8.0], "expected": 91.0}, {"input": [91.0, -7.5], "expected": 91.0}, {"input": [91.0, -7.0], "expected": 91.0}, {"input": [91.0, -6.5], "expected": 91.0}, {"input": [91.0, -6.0], "expected": 91.0}, {"input": [91.0, -5.5], "expected": 91.0}, {"input": [91.0, -5.0], "expected": 91.0}, {"input": [91.0, -4.5], "expected": 91.0}, {"input": [91.0, -4.0], "expected": 91.0}, {"input": [91.0, -3.5], "expected": 91.0}, {"input": [91.0, -3.0], "expected": 91.0}, {"input": [91.0, -2.5], "expected": 91.0}, {"input": [91.0, -2.0], "expected": 91.0}, {"input": [91.0, -1.5], "expected": 91.0}, {"input": [91.0, -1.0], "expected": 91.0}, {"input": [91.0, -0.5], "expected": 91.0}, {"input": [91.0, 0.0], "expected": 91.0}, {"input": [91.0, 0.5], "expected": 91.0}, {"input": [91.0, 1.0], "expected": 91.0}, {"input": [91.0, 1.5], "expected": 91.0}, {"input": [91.0, 2.0], "expected": 91.0}, {"input": [91.0, 2.5], "expected": 91.0}, {"input": [91.0, 3.0], "expected": 91.0}, {"input": [91.0, 3.5], "expected": 91.0}, {"input": [91.0, 4.0], "expected": 91.0}, {"input": [91.0, 4.5], "expected": 91.0}, {"input": [91.0, 5.0], "expected": 91.0}, {"input": [91.0, 5.5], "expected": 91.0}, {"input": [91.0, 6.0], "expected": 91.0}, {"input": [91.0, 6.5], "expected": 91.0}, {"input": [91.0, 7.0], "expected": 91.0}, {"input": [91.0, 7.5], "expected": 91.0}, {"input": [91.0, 8.0], "expected": 91.0}, {"input": [91.0, 8.5], "expected": 91.0}, {"input": [91.0, 9.0], "expected": 91.0}, {"input": [91.0, 9.5], "expected": 91.0}, {"input": [91.0, 10.0], "expected": 91.0}, {"input": [91.0, 10.5], "expected": 91.0}, {"input": [91.0, 11.0], "expected": 91.0}, {"input": [91.0, 11.5], "expected": 91.0}, {"input": [91.0, 12.0], "expected": 91.0}, {"input": [91.0, 12.5], "expected": 91.0}, {"input": [91.0, 13.0], "expected": 91.0}, {"input": [91.0, 13.5], "expected": 91.0}, {"input": [91.0, 14.0], "expected": 91.0}, {"input": [91.0, 14.5], "expected": 91.0}, {"input": [91.0, 15.0], "expected": 91.0}, {"input": [91.0, 15.5], "expected": 91.0}, {"input": [91.0, 16.0], "expected": 91.0}, {"input": [91.0, 16.5], "expected": 91.0}, {"input": [91.0, 17.0], "expected": 91.0}, {"input": [91.0, 17.5], "expected": 91.0}, {"input": [91.0, 18.0], "expected": 91.0}, {"input": [91.0, 18.5], "expected": 91.0}, {"input": [91.0, 19.0], "expected": 91.0}, {"input": [91.0, 19.5], "expected": 91.0}, {"input": [91.0, 20.0], "expected": 91.0}, {"input": [91.0, 20.5], "expected": 91.0}, {"input": [91.0, 21.0], "expected": 91.0}, {"input": [91.0, 21.5], "expected": 91.0}, {"input": [91.0, 22.0], "expected": 91.0}, {"input": [91.0, 22.5], "expected": 91.0}, {"input": [91.0, 23.0], "expected": 91.0}, {"input": [91.0, 23.5], "expected": 91.0}, {"input": [91.0, 24.0], "expected": 91.0}, {"input": [91.0, 24.5], "expected": 91.0}, {"input": [91.0, 25.0], "expected": 91.0}, {"input": [91.0, 25.5], "expected": 91.0}, {"input": [91.0, 26.0], "expected": 91.0}, {"input": [91.0, 26.5], "expected": 91.0}, {"input": [91.0, 27.0], "expected": 91.0}, {"input": [91.0, 27.5], "expected": 91.0}, {"input": [91.0, 28.0], "expected": 91.0}, {"input": [91.0, 28.5], "expected": 91.0}, {"input": [91.0, 29.0], "expected": 91.0}, {"input": [91.0, 29.5], "expected": 91.0}, {"input": [91.0, 30.0], "expected": 91.0}, {"input": [91.0, 30.5], "expected": 91.0}, {"input": [91.0, 31.0], "expected": 91.0}, {"input": [91.0, 31.5], "expected": 91.0}, {"input": [91.0, 32.0], "expected": 91.0}, {"input": [91.0, 32.5], "expected": 91.0}, {"input": [91.0, 33.0], "expected": 91.0}, {"input": [91.0, 33.5], "expected": 91.0}, {"input": [91.0, 34.0], "expected": 91.0}, {"input": [91.0, 34.5], "expected": 91.0}, {"input": [91.0, 35.0], "expected": 91.0}, {"input": [91.0, 35.5], "expected": 91.0}, {"input": [91.0, 36.0], "expected": 91.0}, {"input": [91.0, 36.5], "expected": 91.0}, {"input": [91.0, 37.0], "expected": 91.0}, {"input": [91.0, 37.5], "expected": 91.0}, {"input": [91.0, 38.0], "expected": 91.0}, {"input": [91.0, 38.5], "expected": 91.0}, {"input": [91.0, 39.0], "expected": 91.0}, {"input": [91.0, 39.5], "expected": 91.0}, {"input": [91.0, 40.0], "expected": 91.0}, {"input": [91.0, 40.5], "expected": 91.0}, {"input": [91.0, 41.0], "expected": 91.0}, {"input": [91.0, 41.5], "expected": 91.0}, {"input": [91.0, 42.0], "expected": 91.0}, {"input": [91.0, 42.5], "expected": 91.0}, {"input": [91.0, 43.0], "expected": 91.0}, {"input": [91.0, 43.5], "expected": 91.0}, {"input": [91.0, 44.0], "expected": 91.0}, {"input": [91.0, 44.5], "expected": 91.0}, {"input": [91.0, 45.0], "expected": 91.0}, {"input": [91.0, 45.5], "expected": 91.0}, {"input": [91.0, 46.0], "expected": 91.0}, {"input": [91.0, 46.5], "expected": 91.0}, {"input": [91.0, 47.0], "expected": 91.0}, {"input": [91.0, 47.5], "expected": 91.0}, {"input": [91.0, 48.0], "expected": 91.0}, {"input": [91.0, 48.5], "expected": 91.0}, {"input": [91.0, 49.0], "expected": 91.0}, {"input": [91.0, 49.5], "expected": 91.0}, {"input": [91.0, 50.0], "expected": 91.0}, {"input": [91.0, 50.5], "expected": 91.0}, {"input": [91.0, 51.0], "expected": 91.0}, {"input": [91.0, 51.5], "expected": 91.0}, {"input": [91.0, 52.0], "expected": 91.0}, {"input": [91.0, 52.5], "expected": 91.0}, {"input": [91.0, 53.0], "expected": 91.0}, {"input": [91.0, 53.5], "expected": 91.0}, {"input": [91.0, 54.0], "expected": 91.0}, {"input": [91.0, 54.5], "expected": 91.0}, {"input": [91.0, 55.0], "expected": 91.0}, {"input": [91.0, 55.5], "expected": 91.0}, {"input": [91.0, 56.0], "expected": 91.0}, {"input": [91.0, 56.5], "expected": 91.0}, {"input": [91.0, 57.0], "expected": 91.0}, {"input": [91.0, 57.5], "expected": 91.0}, {"input": [91.0, 58.0], "expected": 91.0}, {"input": [91.0, 58.5], "expected": 91.00000000000001}, {"input": [91.0, 59.0], "expected": 91.00000000000001}, {"input": [91.0, 59.5], "expected": 91.00000000000001}, {"input": [91.0, 60.0], "expected": 91.00000000000003}, {"input": [91.0, 60.5], "expected": 91.00000000000006}, {"input": [91.0, 61.0], "expected": 91.0000000000001}, {"input": [91.0, 61.5], "expected": 91.00000000000016}, {"input": [91.0, 62.0], "expected": 91.00000000000026}, {"input": [91.0, 62.5], "expected": 91.00000000000043}, {"input": [91.0, 63.0], "expected": 91.0000000000007}, {"input": [91.0, 63.5], "expected": 91.00000000000114}, {"input": [91.0, 64.0], "expected": 91.00000000000188}, {"input": [91.0, 64.5], "expected": 91.0000000000031}, {"input": [91.0, 65.0], "expected": 91.00000000000512}, {"input": [91.0, 65.5], "expected": 91.00000000000843}, {"input": [91.0, 66.0], "expected": 91.00000000001388}, {"input": [91.0, 66.5], "expected": 91.0000000000229}, {"input": [91.0, 67.0], "expected": 91.00000000003776}, {"input": [91.0, 67.5], "expected": 91.00000000006224}, {"input": [91.0, 68.0], "expected": 91.00000000010262}, {"input": [91.0, 68.5], "expected": 91.0000000001692}, {"input": [91.0, 69.0], "expected": 91.00000000027894}, {"input": [91.0, 69.5], "expected": 91.0000000004599}, {"input": [91.0, 70.0], "expected": 91.00000000075826}, {"input": [91.0, 70.5], "expected": 91.00000000125016}, {"input": [91.0, 71.0], "expected": 91.00000000206116}, {"input": [91.0, 71.5], "expected": 91.00000000339827}, {"input": [91.0, 72.0], "expected": 91.0000000056028}, {"input": [91.0, 72.5], "expected": 91.00000000923745}, {"input": [91.0, 73.0], "expected": 91.00000001522999}, {"input": [91.0, 73.5], "expected": 91.00000002511}, {"input": [91.0, 74.0], "expected": 91.00000004139937}, {"input": [91.0, 74.5], "expected": 91.00000006825603}, {"input": [91.0, 75.0], "expected": 91.00000011253516}, {"input": [91.0, 75.5], "expected": 91.00000018553912}, {"input": [91.0, 76.0], "expected": 91.00000030590228}, {"input": [91.0, 76.5], "expected": 91.00000050434754}, {"input": [91.0, 77.0], "expected": 91.00000083152837}, {"input": [91.0, 77.5], "expected": 91.00000137095815}, {"input": [91.0, 78.0], "expected": 91.00000226032685}, {"input": [91.0, 78.5], "expected": 91.00000372664623}, {"input": [91.0, 79.0], "expected": 91.00000614419348}, {"input": [91.0, 79.5], "expected": 91.00001013004228}, {"input": [91.0, 80.0], "expected": 91.00001670156132}, {"input": [91.0, 80.5], "expected": 91.00002753607023}, {"input": [91.0, 81.0], "expected": 91.00004539889922}, {"input": [91.0, 81.5], "expected": 91.00007484902864}, {"input": [91.0, 82.0], "expected": 91.00012340218973}, {"input": [91.0, 82.5], "expected": 91.00020344767213}, {"input": [91.0, 83.0], "expected": 91.0003354063729}, {"input": [91.0, 83.5], "expected": 91.00055293147535}, {"input": [91.0, 84.0], "expected": 91.00091146645377}, {"input": [91.0, 84.5], "expected": 91.00150231015975}, {"input": [91.0, 85.0], "expected": 91.00247568513772}, {"input": [91.0, 85.5], "expected": 91.00407844327057}, {"input": [91.0, 86.0], "expected": 91.00671534848912}, {"input": [91.0, 86.5], "expected": 91.0110477448486}, {"input": [91.0, 87.0], "expected": 91.0181499279178}, {"input": [91.0, 87.5], "expected": 91.02975041827263}, {"input": [91.0, 88.0], "expected": 91.04858735157374}, {"input": [91.0, 88.5], "expected": 91.07888973429255}, {"input": [91.0, 89.0], "expected": 91.12692801104298}, {"input": [91.0, 89.5], "expected": 91.20141327798275}, {"input": [91.0, 90.0], "expected": 91.31326168751822}, {"input": [91.0, 90.5], "expected": 91.4740769841801}, {"input": [91.0, 91.0], "expected": 91.69314718055995}, {"input": [91.0, 91.5], "expected": 91.9740769841801}, {"input": [91.0, 92.0], "expected": 92.31326168751822}, {"input": [91.0, 92.5], "expected": 92.70141327798275}, {"input": [91.0, 93.0], "expected": 93.12692801104298}, {"input": [91.0, 93.5], "expected": 93.57888973429255}, {"input": [91.0, 94.0], "expected": 94.04858735157374}, {"input": [91.0, 94.5], "expected": 94.52975041827263}, {"input": [91.0, 95.0], "expected": 95.0181499279178}, {"input": [91.0, 95.5], "expected": 95.5110477448486}, {"input": [91.0, 96.0], "expected": 96.00671534848912}, {"input": [91.0, 96.5], "expected": 96.50407844327057}, {"input": [91.0, 97.0], "expected": 97.00247568513772}, {"input": [91.0, 97.5], "expected": 97.50150231015975}, {"input": [91.0, 98.0], "expected": 98.00091146645377}, {"input": [91.0, 98.5], "expected": 98.50055293147535}, {"input": [91.0, 99.0], "expected": 99.0003354063729}, {"input": [91.0, 99.5], "expected": 99.50020344767213}, {"input": [91.5, -100.0], "expected": 91.5}, {"input": [91.5, -99.5], "expected": 91.5}, {"input": [91.5, -99.0], "expected": 91.5}, {"input": [91.5, -98.5], "expected": 91.5}, {"input": [91.5, -98.0], "expected": 91.5}, {"input": [91.5, -97.5], "expected": 91.5}, {"input": [91.5, -97.0], "expected": 91.5}, {"input": [91.5, -96.5], "expected": 91.5}, {"input": [91.5, -96.0], "expected": 91.5}, {"input": [91.5, -95.5], "expected": 91.5}, {"input": [91.5, -95.0], "expected": 91.5}, {"input": [91.5, -94.5], "expected": 91.5}, {"input": [91.5, -94.0], "expected": 91.5}, {"input": [91.5, -93.5], "expected": 91.5}, {"input": [91.5, -93.0], "expected": 91.5}, {"input": [91.5, -92.5], "expected": 91.5}, {"input": [91.5, -92.0], "expected": 91.5}, {"input": [91.5, -91.5], "expected": 91.5}, {"input": [91.5, -91.0], "expected": 91.5}, {"input": [91.5, -90.5], "expected": 91.5}, {"input": [91.5, -90.0], "expected": 91.5}, {"input": [91.5, -89.5], "expected": 91.5}, {"input": [91.5, -89.0], "expected": 91.5}, {"input": [91.5, -88.5], "expected": 91.5}, {"input": [91.5, -88.0], "expected": 91.5}, {"input": [91.5, -87.5], "expected": 91.5}, {"input": [91.5, -87.0], "expected": 91.5}, {"input": [91.5, -86.5], "expected": 91.5}, {"input": [91.5, -86.0], "expected": 91.5}, {"input": [91.5, -85.5], "expected": 91.5}, {"input": [91.5, -85.0], "expected": 91.5}, {"input": [91.5, -84.5], "expected": 91.5}, {"input": [91.5, -84.0], "expected": 91.5}, {"input": [91.5, -83.5], "expected": 91.5}, {"input": [91.5, -83.0], "expected": 91.5}, {"input": [91.5, -82.5], "expected": 91.5}, {"input": [91.5, -82.0], "expected": 91.5}, {"input": [91.5, -81.5], "expected": 91.5}, {"input": [91.5, -81.0], "expected": 91.5}, {"input": [91.5, -80.5], "expected": 91.5}, {"input": [91.5, -80.0], "expected": 91.5}, {"input": [91.5, -79.5], "expected": 91.5}, {"input": [91.5, -79.0], "expected": 91.5}, {"input": [91.5, -78.5], "expected": 91.5}, {"input": [91.5, -78.0], "expected": 91.5}, {"input": [91.5, -77.5], "expected": 91.5}, {"input": [91.5, -77.0], "expected": 91.5}, {"input": [91.5, -76.5], "expected": 91.5}, {"input": [91.5, -76.0], "expected": 91.5}, {"input": [91.5, -75.5], "expected": 91.5}, {"input": [91.5, -75.0], "expected": 91.5}, {"input": [91.5, -74.5], "expected": 91.5}, {"input": [91.5, -74.0], "expected": 91.5}, {"input": [91.5, -73.5], "expected": 91.5}, {"input": [91.5, -73.0], "expected": 91.5}, {"input": [91.5, -72.5], "expected": 91.5}, {"input": [91.5, -72.0], "expected": 91.5}, {"input": [91.5, -71.5], "expected": 91.5}, {"input": [91.5, -71.0], "expected": 91.5}, {"input": [91.5, -70.5], "expected": 91.5}, {"input": [91.5, -70.0], "expected": 91.5}, {"input": [91.5, -69.5], "expected": 91.5}, {"input": [91.5, -69.0], "expected": 91.5}, {"input": [91.5, -68.5], "expected": 91.5}, {"input": [91.5, -68.0], "expected": 91.5}, {"input": [91.5, -67.5], "expected": 91.5}, {"input": [91.5, -67.0], "expected": 91.5}, {"input": [91.5, -66.5], "expected": 91.5}, {"input": [91.5, -66.0], "expected": 91.5}, {"input": [91.5, -65.5], "expected": 91.5}, {"input": [91.5, -65.0], "expected": 91.5}, {"input": [91.5, -64.5], "expected": 91.5}, {"input": [91.5, -64.0], "expected": 91.5}, {"input": [91.5, -63.5], "expected": 91.5}, {"input": [91.5, -63.0], "expected": 91.5}, {"input": [91.5, -62.5], "expected": 91.5}, {"input": [91.5, -62.0], "expected": 91.5}, {"input": [91.5, -61.5], "expected": 91.5}, {"input": [91.5, -61.0], "expected": 91.5}, {"input": [91.5, -60.5], "expected": 91.5}, {"input": [91.5, -60.0], "expected": 91.5}, {"input": [91.5, -59.5], "expected": 91.5}, {"input": [91.5, -59.0], "expected": 91.5}, {"input": [91.5, -58.5], "expected": 91.5}, {"input": [91.5, -58.0], "expected": 91.5}, {"input": [91.5, -57.5], "expected": 91.5}, {"input": [91.5, -57.0], "expected": 91.5}, {"input": [91.5, -56.5], "expected": 91.5}, {"input": [91.5, -56.0], "expected": 91.5}, {"input": [91.5, -55.5], "expected": 91.5}, {"input": [91.5, -55.0], "expected": 91.5}, {"input": [91.5, -54.5], "expected": 91.5}, {"input": [91.5, -54.0], "expected": 91.5}, {"input": [91.5, -53.5], "expected": 91.5}, {"input": [91.5, -53.0], "expected": 91.5}, {"input": [91.5, -52.5], "expected": 91.5}, {"input": [91.5, -52.0], "expected": 91.5}, {"input": [91.5, -51.5], "expected": 91.5}, {"input": [91.5, -51.0], "expected": 91.5}, {"input": [91.5, -50.5], "expected": 91.5}, {"input": [91.5, -50.0], "expected": 91.5}, {"input": [91.5, -49.5], "expected": 91.5}, {"input": [91.5, -49.0], "expected": 91.5}, {"input": [91.5, -48.5], "expected": 91.5}, {"input": [91.5, -48.0], "expected": 91.5}, {"input": [91.5, -47.5], "expected": 91.5}, {"input": [91.5, -47.0], "expected": 91.5}, {"input": [91.5, -46.5], "expected": 91.5}, {"input": [91.5, -46.0], "expected": 91.5}, {"input": [91.5, -45.5], "expected": 91.5}, {"input": [91.5, -45.0], "expected": 91.5}, {"input": [91.5, -44.5], "expected": 91.5}, {"input": [91.5, -44.0], "expected": 91.5}, {"input": [91.5, -43.5], "expected": 91.5}, {"input": [91.5, -43.0], "expected": 91.5}, {"input": [91.5, -42.5], "expected": 91.5}, {"input": [91.5, -42.0], "expected": 91.5}, {"input": [91.5, -41.5], "expected": 91.5}, {"input": [91.5, -41.0], "expected": 91.5}, {"input": [91.5, -40.5], "expected": 91.5}, {"input": [91.5, -40.0], "expected": 91.5}, {"input": [91.5, -39.5], "expected": 91.5}, {"input": [91.5, -39.0], "expected": 91.5}, {"input": [91.5, -38.5], "expected": 91.5}, {"input": [91.5, -38.0], "expected": 91.5}, {"input": [91.5, -37.5], "expected": 91.5}, {"input": [91.5, -37.0], "expected": 91.5}, {"input": [91.5, -36.5], "expected": 91.5}, {"input": [91.5, -36.0], "expected": 91.5}, {"input": [91.5, -35.5], "expected": 91.5}, {"input": [91.5, -35.0], "expected": 91.5}, {"input": [91.5, -34.5], "expected": 91.5}, {"input": [91.5, -34.0], "expected": 91.5}, {"input": [91.5, -33.5], "expected": 91.5}, {"input": [91.5, -33.0], "expected": 91.5}, {"input": [91.5, -32.5], "expected": 91.5}, {"input": [91.5, -32.0], "expected": 91.5}, {"input": [91.5, -31.5], "expected": 91.5}, {"input": [91.5, -31.0], "expected": 91.5}, {"input": [91.5, -30.5], "expected": 91.5}, {"input": [91.5, -30.0], "expected": 91.5}, {"input": [91.5, -29.5], "expected": 91.5}, {"input": [91.5, -29.0], "expected": 91.5}, {"input": [91.5, -28.5], "expected": 91.5}, {"input": [91.5, -28.0], "expected": 91.5}, {"input": [91.5, -27.5], "expected": 91.5}, {"input": [91.5, -27.0], "expected": 91.5}, {"input": [91.5, -26.5], "expected": 91.5}, {"input": [91.5, -26.0], "expected": 91.5}, {"input": [91.5, -25.5], "expected": 91.5}, {"input": [91.5, -25.0], "expected": 91.5}, {"input": [91.5, -24.5], "expected": 91.5}, {"input": [91.5, -24.0], "expected": 91.5}, {"input": [91.5, -23.5], "expected": 91.5}, {"input": [91.5, -23.0], "expected": 91.5}, {"input": [91.5, -22.5], "expected": 91.5}, {"input": [91.5, -22.0], "expected": 91.5}, {"input": [91.5, -21.5], "expected": 91.5}, {"input": [91.5, -21.0], "expected": 91.5}, {"input": [91.5, -20.5], "expected": 91.5}, {"input": [91.5, -20.0], "expected": 91.5}, {"input": [91.5, -19.5], "expected": 91.5}, {"input": [91.5, -19.0], "expected": 91.5}, {"input": [91.5, -18.5], "expected": 91.5}, {"input": [91.5, -18.0], "expected": 91.5}, {"input": [91.5, -17.5], "expected": 91.5}, {"input": [91.5, -17.0], "expected": 91.5}, {"input": [91.5, -16.5], "expected": 91.5}, {"input": [91.5, -16.0], "expected": 91.5}, {"input": [91.5, -15.5], "expected": 91.5}, {"input": [91.5, -15.0], "expected": 91.5}, {"input": [91.5, -14.5], "expected": 91.5}, {"input": [91.5, -14.0], "expected": 91.5}, {"input": [91.5, -13.5], "expected": 91.5}, {"input": [91.5, -13.0], "expected": 91.5}, {"input": [91.5, -12.5], "expected": 91.5}, {"input": [91.5, -12.0], "expected": 91.5}, {"input": [91.5, -11.5], "expected": 91.5}, {"input": [91.5, -11.0], "expected": 91.5}, {"input": [91.5, -10.5], "expected": 91.5}, {"input": [91.5, -10.0], "expected": 91.5}, {"input": [91.5, -9.5], "expected": 91.5}, {"input": [91.5, -9.0], "expected": 91.5}, {"input": [91.5, -8.5], "expected": 91.5}, {"input": [91.5, -8.0], "expected": 91.5}, {"input": [91.5, -7.5], "expected": 91.5}, {"input": [91.5, -7.0], "expected": 91.5}, {"input": [91.5, -6.5], "expected": 91.5}, {"input": [91.5, -6.0], "expected": 91.5}, {"input": [91.5, -5.5], "expected": 91.5}, {"input": [91.5, -5.0], "expected": 91.5}, {"input": [91.5, -4.5], "expected": 91.5}, {"input": [91.5, -4.0], "expected": 91.5}, {"input": [91.5, -3.5], "expected": 91.5}, {"input": [91.5, -3.0], "expected": 91.5}, {"input": [91.5, -2.5], "expected": 91.5}, {"input": [91.5, -2.0], "expected": 91.5}, {"input": [91.5, -1.5], "expected": 91.5}, {"input": [91.5, -1.0], "expected": 91.5}, {"input": [91.5, -0.5], "expected": 91.5}, {"input": [91.5, 0.0], "expected": 91.5}, {"input": [91.5, 0.5], "expected": 91.5}, {"input": [91.5, 1.0], "expected": 91.5}, {"input": [91.5, 1.5], "expected": 91.5}, {"input": [91.5, 2.0], "expected": 91.5}, {"input": [91.5, 2.5], "expected": 91.5}, {"input": [91.5, 3.0], "expected": 91.5}, {"input": [91.5, 3.5], "expected": 91.5}, {"input": [91.5, 4.0], "expected": 91.5}, {"input": [91.5, 4.5], "expected": 91.5}, {"input": [91.5, 5.0], "expected": 91.5}, {"input": [91.5, 5.5], "expected": 91.5}, {"input": [91.5, 6.0], "expected": 91.5}, {"input": [91.5, 6.5], "expected": 91.5}, {"input": [91.5, 7.0], "expected": 91.5}, {"input": [91.5, 7.5], "expected": 91.5}, {"input": [91.5, 8.0], "expected": 91.5}, {"input": [91.5, 8.5], "expected": 91.5}, {"input": [91.5, 9.0], "expected": 91.5}, {"input": [91.5, 9.5], "expected": 91.5}, {"input": [91.5, 10.0], "expected": 91.5}, {"input": [91.5, 10.5], "expected": 91.5}, {"input": [91.5, 11.0], "expected": 91.5}, {"input": [91.5, 11.5], "expected": 91.5}, {"input": [91.5, 12.0], "expected": 91.5}, {"input": [91.5, 12.5], "expected": 91.5}, {"input": [91.5, 13.0], "expected": 91.5}, {"input": [91.5, 13.5], "expected": 91.5}, {"input": [91.5, 14.0], "expected": 91.5}, {"input": [91.5, 14.5], "expected": 91.5}, {"input": [91.5, 15.0], "expected": 91.5}, {"input": [91.5, 15.5], "expected": 91.5}, {"input": [91.5, 16.0], "expected": 91.5}, {"input": [91.5, 16.5], "expected": 91.5}, {"input": [91.5, 17.0], "expected": 91.5}, {"input": [91.5, 17.5], "expected": 91.5}, {"input": [91.5, 18.0], "expected": 91.5}, {"input": [91.5, 18.5], "expected": 91.5}, {"input": [91.5, 19.0], "expected": 91.5}, {"input": [91.5, 19.5], "expected": 91.5}, {"input": [91.5, 20.0], "expected": 91.5}, {"input": [91.5, 20.5], "expected": 91.5}, {"input": [91.5, 21.0], "expected": 91.5}, {"input": [91.5, 21.5], "expected": 91.5}, {"input": [91.5, 22.0], "expected": 91.5}, {"input": [91.5, 22.5], "expected": 91.5}, {"input": [91.5, 23.0], "expected": 91.5}, {"input": [91.5, 23.5], "expected": 91.5}, {"input": [91.5, 24.0], "expected": 91.5}, {"input": [91.5, 24.5], "expected": 91.5}, {"input": [91.5, 25.0], "expected": 91.5}, {"input": [91.5, 25.5], "expected": 91.5}, {"input": [91.5, 26.0], "expected": 91.5}, {"input": [91.5, 26.5], "expected": 91.5}, {"input": [91.5, 27.0], "expected": 91.5}, {"input": [91.5, 27.5], "expected": 91.5}, {"input": [91.5, 28.0], "expected": 91.5}, {"input": [91.5, 28.5], "expected": 91.5}, {"input": [91.5, 29.0], "expected": 91.5}, {"input": [91.5, 29.5], "expected": 91.5}, {"input": [91.5, 30.0], "expected": 91.5}, {"input": [91.5, 30.5], "expected": 91.5}, {"input": [91.5, 31.0], "expected": 91.5}, {"input": [91.5, 31.5], "expected": 91.5}, {"input": [91.5, 32.0], "expected": 91.5}, {"input": [91.5, 32.5], "expected": 91.5}, {"input": [91.5, 33.0], "expected": 91.5}, {"input": [91.5, 33.5], "expected": 91.5}, {"input": [91.5, 34.0], "expected": 91.5}, {"input": [91.5, 34.5], "expected": 91.5}, {"input": [91.5, 35.0], "expected": 91.5}, {"input": [91.5, 35.5], "expected": 91.5}, {"input": [91.5, 36.0], "expected": 91.5}, {"input": [91.5, 36.5], "expected": 91.5}, {"input": [91.5, 37.0], "expected": 91.5}, {"input": [91.5, 37.5], "expected": 91.5}, {"input": [91.5, 38.0], "expected": 91.5}, {"input": [91.5, 38.5], "expected": 91.5}, {"input": [91.5, 39.0], "expected": 91.5}, {"input": [91.5, 39.5], "expected": 91.5}, {"input": [91.5, 40.0], "expected": 91.5}, {"input": [91.5, 40.5], "expected": 91.5}, {"input": [91.5, 41.0], "expected": 91.5}, {"input": [91.5, 41.5], "expected": 91.5}, {"input": [91.5, 42.0], "expected": 91.5}, {"input": [91.5, 42.5], "expected": 91.5}, {"input": [91.5, 43.0], "expected": 91.5}, {"input": [91.5, 43.5], "expected": 91.5}, {"input": [91.5, 44.0], "expected": 91.5}, {"input": [91.5, 44.5], "expected": 91.5}, {"input": [91.5, 45.0], "expected": 91.5}, {"input": [91.5, 45.5], "expected": 91.5}, {"input": [91.5, 46.0], "expected": 91.5}, {"input": [91.5, 46.5], "expected": 91.5}, {"input": [91.5, 47.0], "expected": 91.5}, {"input": [91.5, 47.5], "expected": 91.5}, {"input": [91.5, 48.0], "expected": 91.5}, {"input": [91.5, 48.5], "expected": 91.5}, {"input": [91.5, 49.0], "expected": 91.5}, {"input": [91.5, 49.5], "expected": 91.5}, {"input": [91.5, 50.0], "expected": 91.5}, {"input": [91.5, 50.5], "expected": 91.5}, {"input": [91.5, 51.0], "expected": 91.5}, {"input": [91.5, 51.5], "expected": 91.5}, {"input": [91.5, 52.0], "expected": 91.5}, {"input": [91.5, 52.5], "expected": 91.5}, {"input": [91.5, 53.0], "expected": 91.5}, {"input": [91.5, 53.5], "expected": 91.5}, {"input": [91.5, 54.0], "expected": 91.5}, {"input": [91.5, 54.5], "expected": 91.5}, {"input": [91.5, 55.0], "expected": 91.5}, {"input": [91.5, 55.5], "expected": 91.5}, {"input": [91.5, 56.0], "expected": 91.5}, {"input": [91.5, 56.5], "expected": 91.5}, {"input": [91.5, 57.0], "expected": 91.5}, {"input": [91.5, 57.5], "expected": 91.5}, {"input": [91.5, 58.0], "expected": 91.5}, {"input": [91.5, 58.5], "expected": 91.5}, {"input": [91.5, 59.0], "expected": 91.50000000000001}, {"input": [91.5, 59.5], "expected": 91.50000000000001}, {"input": [91.5, 60.0], "expected": 91.50000000000001}, {"input": [91.5, 60.5], "expected": 91.50000000000003}, {"input": [91.5, 61.0], "expected": 91.50000000000006}, {"input": [91.5, 61.5], "expected": 91.5000000000001}, {"input": [91.5, 62.0], "expected": 91.50000000000016}, {"input": [91.5, 62.5], "expected": 91.50000000000026}, {"input": [91.5, 63.0], "expected": 91.50000000000043}, {"input": [91.5, 63.5], "expected": 91.5000000000007}, {"input": [91.5, 64.0], "expected": 91.50000000000114}, {"input": [91.5, 64.5], "expected": 91.50000000000188}, {"input": [91.5, 65.0], "expected": 91.5000000000031}, {"input": [91.5, 65.5], "expected": 91.50000000000512}, {"input": [91.5, 66.0], "expected": 91.50000000000843}, {"input": [91.5, 66.5], "expected": 91.50000000001388}, {"input": [91.5, 67.0], "expected": 91.5000000000229}, {"input": [91.5, 67.5], "expected": 91.50000000003776}, {"input": [91.5, 68.0], "expected": 91.50000000006224}, {"input": [91.5, 68.5], "expected": 91.50000000010262}, {"input": [91.5, 69.0], "expected": 91.5000000001692}, {"input": [91.5, 69.5], "expected": 91.50000000027894}, {"input": [91.5, 70.0], "expected": 91.5000000004599}, {"input": [91.5, 70.5], "expected": 91.50000000075826}, {"input": [91.5, 71.0], "expected": 91.50000000125016}, {"input": [91.5, 71.5], "expected": 91.50000000206116}, {"input": [91.5, 72.0], "expected": 91.50000000339827}, {"input": [91.5, 72.5], "expected": 91.5000000056028}, {"input": [91.5, 73.0], "expected": 91.50000000923745}, {"input": [91.5, 73.5], "expected": 91.50000001522999}, {"input": [91.5, 74.0], "expected": 91.50000002511}, {"input": [91.5, 74.5], "expected": 91.50000004139937}, {"input": [91.5, 75.0], "expected": 91.50000006825603}, {"input": [91.5, 75.5], "expected": 91.50000011253516}, {"input": [91.5, 76.0], "expected": 91.50000018553912}, {"input": [91.5, 76.5], "expected": 91.50000030590228}, {"input": [91.5, 77.0], "expected": 91.50000050434754}, {"input": [91.5, 77.5], "expected": 91.50000083152837}, {"input": [91.5, 78.0], "expected": 91.50000137095815}, {"input": [91.5, 78.5], "expected": 91.50000226032685}, {"input": [91.5, 79.0], "expected": 91.50000372664623}, {"input": [91.5, 79.5], "expected": 91.50000614419348}, {"input": [91.5, 80.0], "expected": 91.50001013004228}, {"input": [91.5, 80.5], "expected": 91.50001670156132}, {"input": [91.5, 81.0], "expected": 91.50002753607023}, {"input": [91.5, 81.5], "expected": 91.50004539889922}, {"input": [91.5, 82.0], "expected": 91.50007484902864}, {"input": [91.5, 82.5], "expected": 91.50012340218973}, {"input": [91.5, 83.0], "expected": 91.50020344767213}, {"input": [91.5, 83.5], "expected": 91.5003354063729}, {"input": [91.5, 84.0], "expected": 91.50055293147535}, {"input": [91.5, 84.5], "expected": 91.50091146645377}, {"input": [91.5, 85.0], "expected": 91.50150231015975}, {"input": [91.5, 85.5], "expected": 91.50247568513772}, {"input": [91.5, 86.0], "expected": 91.50407844327057}, {"input": [91.5, 86.5], "expected": 91.50671534848912}, {"input": [91.5, 87.0], "expected": 91.5110477448486}, {"input": [91.5, 87.5], "expected": 91.5181499279178}, {"input": [91.5, 88.0], "expected": 91.52975041827263}, {"input": [91.5, 88.5], "expected": 91.54858735157374}, {"input": [91.5, 89.0], "expected": 91.57888973429255}, {"input": [91.5, 89.5], "expected": 91.62692801104298}, {"input": [91.5, 90.0], "expected": 91.70141327798275}, {"input": [91.5, 90.5], "expected": 91.81326168751822}, {"input": [91.5, 91.0], "expected": 91.9740769841801}, {"input": [91.5, 91.5], "expected": 92.19314718055995}, {"input": [91.5, 92.0], "expected": 92.4740769841801}, {"input": [91.5, 92.5], "expected": 92.81326168751822}, {"input": [91.5, 93.0], "expected": 93.20141327798275}, {"input": [91.5, 93.5], "expected": 93.62692801104298}, {"input": [91.5, 94.0], "expected": 94.07888973429255}, {"input": [91.5, 94.5], "expected": 94.54858735157374}, {"input": [91.5, 95.0], "expected": 95.02975041827263}, {"input": [91.5, 95.5], "expected": 95.5181499279178}, {"input": [91.5, 96.0], "expected": 96.0110477448486}, {"input": [91.5, 96.5], "expected": 96.50671534848912}, {"input": [91.5, 97.0], "expected": 97.00407844327057}, {"input": [91.5, 97.5], "expected": 97.50247568513772}, {"input": [91.5, 98.0], "expected": 98.00150231015975}, {"input": [91.5, 98.5], "expected": 98.50091146645377}, {"input": [91.5, 99.0], "expected": 99.00055293147535}, {"input": [91.5, 99.5], "expected": 99.5003354063729}, {"input": [92.0, -100.0], "expected": 92.0}, {"input": [92.0, -99.5], "expected": 92.0}, {"input": [92.0, -99.0], "expected": 92.0}, {"input": [92.0, -98.5], "expected": 92.0}, {"input": [92.0, -98.0], "expected": 92.0}, {"input": [92.0, -97.5], "expected": 92.0}, {"input": [92.0, -97.0], "expected": 92.0}, {"input": [92.0, -96.5], "expected": 92.0}, {"input": [92.0, -96.0], "expected": 92.0}, {"input": [92.0, -95.5], "expected": 92.0}, {"input": [92.0, -95.0], "expected": 92.0}, {"input": [92.0, -94.5], "expected": 92.0}, {"input": [92.0, -94.0], "expected": 92.0}, {"input": [92.0, -93.5], "expected": 92.0}, {"input": [92.0, -93.0], "expected": 92.0}, {"input": [92.0, -92.5], "expected": 92.0}, {"input": [92.0, -92.0], "expected": 92.0}, {"input": [92.0, -91.5], "expected": 92.0}, {"input": [92.0, -91.0], "expected": 92.0}, {"input": [92.0, -90.5], "expected": 92.0}, {"input": [92.0, -90.0], "expected": 92.0}, {"input": [92.0, -89.5], "expected": 92.0}, {"input": [92.0, -89.0], "expected": 92.0}, {"input": [92.0, -88.5], "expected": 92.0}, {"input": [92.0, -88.0], "expected": 92.0}, {"input": [92.0, -87.5], "expected": 92.0}, {"input": [92.0, -87.0], "expected": 92.0}, {"input": [92.0, -86.5], "expected": 92.0}, {"input": [92.0, -86.0], "expected": 92.0}, {"input": [92.0, -85.5], "expected": 92.0}, {"input": [92.0, -85.0], "expected": 92.0}, {"input": [92.0, -84.5], "expected": 92.0}, {"input": [92.0, -84.0], "expected": 92.0}, {"input": [92.0, -83.5], "expected": 92.0}, {"input": [92.0, -83.0], "expected": 92.0}, {"input": [92.0, -82.5], "expected": 92.0}, {"input": [92.0, -82.0], "expected": 92.0}, {"input": [92.0, -81.5], "expected": 92.0}, {"input": [92.0, -81.0], "expected": 92.0}, {"input": [92.0, -80.5], "expected": 92.0}, {"input": [92.0, -80.0], "expected": 92.0}, {"input": [92.0, -79.5], "expected": 92.0}, {"input": [92.0, -79.0], "expected": 92.0}, {"input": [92.0, -78.5], "expected": 92.0}, {"input": [92.0, -78.0], "expected": 92.0}, {"input": [92.0, -77.5], "expected": 92.0}, {"input": [92.0, -77.0], "expected": 92.0}, {"input": [92.0, -76.5], "expected": 92.0}, {"input": [92.0, -76.0], "expected": 92.0}, {"input": [92.0, -75.5], "expected": 92.0}, {"input": [92.0, -75.0], "expected": 92.0}, {"input": [92.0, -74.5], "expected": 92.0}, {"input": [92.0, -74.0], "expected": 92.0}, {"input": [92.0, -73.5], "expected": 92.0}, {"input": [92.0, -73.0], "expected": 92.0}, {"input": [92.0, -72.5], "expected": 92.0}, {"input": [92.0, -72.0], "expected": 92.0}, {"input": [92.0, -71.5], "expected": 92.0}, {"input": [92.0, -71.0], "expected": 92.0}, {"input": [92.0, -70.5], "expected": 92.0}, {"input": [92.0, -70.0], "expected": 92.0}, {"input": [92.0, -69.5], "expected": 92.0}, {"input": [92.0, -69.0], "expected": 92.0}, {"input": [92.0, -68.5], "expected": 92.0}, {"input": [92.0, -68.0], "expected": 92.0}, {"input": [92.0, -67.5], "expected": 92.0}, {"input": [92.0, -67.0], "expected": 92.0}, {"input": [92.0, -66.5], "expected": 92.0}, {"input": [92.0, -66.0], "expected": 92.0}, {"input": [92.0, -65.5], "expected": 92.0}, {"input": [92.0, -65.0], "expected": 92.0}, {"input": [92.0, -64.5], "expected": 92.0}, {"input": [92.0, -64.0], "expected": 92.0}, {"input": [92.0, -63.5], "expected": 92.0}, {"input": [92.0, -63.0], "expected": 92.0}, {"input": [92.0, -62.5], "expected": 92.0}, {"input": [92.0, -62.0], "expected": 92.0}, {"input": [92.0, -61.5], "expected": 92.0}, {"input": [92.0, -61.0], "expected": 92.0}, {"input": [92.0, -60.5], "expected": 92.0}, {"input": [92.0, -60.0], "expected": 92.0}, {"input": [92.0, -59.5], "expected": 92.0}, {"input": [92.0, -59.0], "expected": 92.0}, {"input": [92.0, -58.5], "expected": 92.0}, {"input": [92.0, -58.0], "expected": 92.0}, {"input": [92.0, -57.5], "expected": 92.0}, {"input": [92.0, -57.0], "expected": 92.0}, {"input": [92.0, -56.5], "expected": 92.0}, {"input": [92.0, -56.0], "expected": 92.0}, {"input": [92.0, -55.5], "expected": 92.0}, {"input": [92.0, -55.0], "expected": 92.0}, {"input": [92.0, -54.5], "expected": 92.0}, {"input": [92.0, -54.0], "expected": 92.0}, {"input": [92.0, -53.5], "expected": 92.0}, {"input": [92.0, -53.0], "expected": 92.0}, {"input": [92.0, -52.5], "expected": 92.0}, {"input": [92.0, -52.0], "expected": 92.0}, {"input": [92.0, -51.5], "expected": 92.0}, {"input": [92.0, -51.0], "expected": 92.0}, {"input": [92.0, -50.5], "expected": 92.0}, {"input": [92.0, -50.0], "expected": 92.0}, {"input": [92.0, -49.5], "expected": 92.0}, {"input": [92.0, -49.0], "expected": 92.0}, {"input": [92.0, -48.5], "expected": 92.0}, {"input": [92.0, -48.0], "expected": 92.0}, {"input": [92.0, -47.5], "expected": 92.0}, {"input": [92.0, -47.0], "expected": 92.0}, {"input": [92.0, -46.5], "expected": 92.0}, {"input": [92.0, -46.0], "expected": 92.0}, {"input": [92.0, -45.5], "expected": 92.0}, {"input": [92.0, -45.0], "expected": 92.0}, {"input": [92.0, -44.5], "expected": 92.0}, {"input": [92.0, -44.0], "expected": 92.0}, {"input": [92.0, -43.5], "expected": 92.0}, {"input": [92.0, -43.0], "expected": 92.0}, {"input": [92.0, -42.5], "expected": 92.0}, {"input": [92.0, -42.0], "expected": 92.0}, {"input": [92.0, -41.5], "expected": 92.0}, {"input": [92.0, -41.0], "expected": 92.0}, {"input": [92.0, -40.5], "expected": 92.0}, {"input": [92.0, -40.0], "expected": 92.0}, {"input": [92.0, -39.5], "expected": 92.0}, {"input": [92.0, -39.0], "expected": 92.0}, {"input": [92.0, -38.5], "expected": 92.0}, {"input": [92.0, -38.0], "expected": 92.0}, {"input": [92.0, -37.5], "expected": 92.0}, {"input": [92.0, -37.0], "expected": 92.0}, {"input": [92.0, -36.5], "expected": 92.0}, {"input": [92.0, -36.0], "expected": 92.0}, {"input": [92.0, -35.5], "expected": 92.0}, {"input": [92.0, -35.0], "expected": 92.0}, {"input": [92.0, -34.5], "expected": 92.0}, {"input": [92.0, -34.0], "expected": 92.0}, {"input": [92.0, -33.5], "expected": 92.0}, {"input": [92.0, -33.0], "expected": 92.0}, {"input": [92.0, -32.5], "expected": 92.0}, {"input": [92.0, -32.0], "expected": 92.0}, {"input": [92.0, -31.5], "expected": 92.0}, {"input": [92.0, -31.0], "expected": 92.0}, {"input": [92.0, -30.5], "expected": 92.0}, {"input": [92.0, -30.0], "expected": 92.0}, {"input": [92.0, -29.5], "expected": 92.0}, {"input": [92.0, -29.0], "expected": 92.0}, {"input": [92.0, -28.5], "expected": 92.0}, {"input": [92.0, -28.0], "expected": 92.0}, {"input": [92.0, -27.5], "expected": 92.0}, {"input": [92.0, -27.0], "expected": 92.0}, {"input": [92.0, -26.5], "expected": 92.0}, {"input": [92.0, -26.0], "expected": 92.0}, {"input": [92.0, -25.5], "expected": 92.0}, {"input": [92.0, -25.0], "expected": 92.0}, {"input": [92.0, -24.5], "expected": 92.0}, {"input": [92.0, -24.0], "expected": 92.0}, {"input": [92.0, -23.5], "expected": 92.0}, {"input": [92.0, -23.0], "expected": 92.0}, {"input": [92.0, -22.5], "expected": 92.0}, {"input": [92.0, -22.0], "expected": 92.0}, {"input": [92.0, -21.5], "expected": 92.0}, {"input": [92.0, -21.0], "expected": 92.0}, {"input": [92.0, -20.5], "expected": 92.0}, {"input": [92.0, -20.0], "expected": 92.0}, {"input": [92.0, -19.5], "expected": 92.0}, {"input": [92.0, -19.0], "expected": 92.0}, {"input": [92.0, -18.5], "expected": 92.0}, {"input": [92.0, -18.0], "expected": 92.0}, {"input": [92.0, -17.5], "expected": 92.0}, {"input": [92.0, -17.0], "expected": 92.0}, {"input": [92.0, -16.5], "expected": 92.0}, {"input": [92.0, -16.0], "expected": 92.0}, {"input": [92.0, -15.5], "expected": 92.0}, {"input": [92.0, -15.0], "expected": 92.0}, {"input": [92.0, -14.5], "expected": 92.0}, {"input": [92.0, -14.0], "expected": 92.0}, {"input": [92.0, -13.5], "expected": 92.0}, {"input": [92.0, -13.0], "expected": 92.0}, {"input": [92.0, -12.5], "expected": 92.0}, {"input": [92.0, -12.0], "expected": 92.0}, {"input": [92.0, -11.5], "expected": 92.0}, {"input": [92.0, -11.0], "expected": 92.0}, {"input": [92.0, -10.5], "expected": 92.0}, {"input": [92.0, -10.0], "expected": 92.0}, {"input": [92.0, -9.5], "expected": 92.0}, {"input": [92.0, -9.0], "expected": 92.0}, {"input": [92.0, -8.5], "expected": 92.0}, {"input": [92.0, -8.0], "expected": 92.0}, {"input": [92.0, -7.5], "expected": 92.0}, {"input": [92.0, -7.0], "expected": 92.0}, {"input": [92.0, -6.5], "expected": 92.0}, {"input": [92.0, -6.0], "expected": 92.0}, {"input": [92.0, -5.5], "expected": 92.0}, {"input": [92.0, -5.0], "expected": 92.0}, {"input": [92.0, -4.5], "expected": 92.0}, {"input": [92.0, -4.0], "expected": 92.0}, {"input": [92.0, -3.5], "expected": 92.0}, {"input": [92.0, -3.0], "expected": 92.0}, {"input": [92.0, -2.5], "expected": 92.0}, {"input": [92.0, -2.0], "expected": 92.0}, {"input": [92.0, -1.5], "expected": 92.0}, {"input": [92.0, -1.0], "expected": 92.0}, {"input": [92.0, -0.5], "expected": 92.0}, {"input": [92.0, 0.0], "expected": 92.0}, {"input": [92.0, 0.5], "expected": 92.0}, {"input": [92.0, 1.0], "expected": 92.0}, {"input": [92.0, 1.5], "expected": 92.0}, {"input": [92.0, 2.0], "expected": 92.0}, {"input": [92.0, 2.5], "expected": 92.0}, {"input": [92.0, 3.0], "expected": 92.0}, {"input": [92.0, 3.5], "expected": 92.0}, {"input": [92.0, 4.0], "expected": 92.0}, {"input": [92.0, 4.5], "expected": 92.0}, {"input": [92.0, 5.0], "expected": 92.0}, {"input": [92.0, 5.5], "expected": 92.0}, {"input": [92.0, 6.0], "expected": 92.0}, {"input": [92.0, 6.5], "expected": 92.0}, {"input": [92.0, 7.0], "expected": 92.0}, {"input": [92.0, 7.5], "expected": 92.0}, {"input": [92.0, 8.0], "expected": 92.0}, {"input": [92.0, 8.5], "expected": 92.0}, {"input": [92.0, 9.0], "expected": 92.0}, {"input": [92.0, 9.5], "expected": 92.0}, {"input": [92.0, 10.0], "expected": 92.0}, {"input": [92.0, 10.5], "expected": 92.0}, {"input": [92.0, 11.0], "expected": 92.0}, {"input": [92.0, 11.5], "expected": 92.0}, {"input": [92.0, 12.0], "expected": 92.0}, {"input": [92.0, 12.5], "expected": 92.0}, {"input": [92.0, 13.0], "expected": 92.0}, {"input": [92.0, 13.5], "expected": 92.0}, {"input": [92.0, 14.0], "expected": 92.0}, {"input": [92.0, 14.5], "expected": 92.0}, {"input": [92.0, 15.0], "expected": 92.0}, {"input": [92.0, 15.5], "expected": 92.0}, {"input": [92.0, 16.0], "expected": 92.0}, {"input": [92.0, 16.5], "expected": 92.0}, {"input": [92.0, 17.0], "expected": 92.0}, {"input": [92.0, 17.5], "expected": 92.0}, {"input": [92.0, 18.0], "expected": 92.0}, {"input": [92.0, 18.5], "expected": 92.0}, {"input": [92.0, 19.0], "expected": 92.0}, {"input": [92.0, 19.5], "expected": 92.0}, {"input": [92.0, 20.0], "expected": 92.0}, {"input": [92.0, 20.5], "expected": 92.0}, {"input": [92.0, 21.0], "expected": 92.0}, {"input": [92.0, 21.5], "expected": 92.0}, {"input": [92.0, 22.0], "expected": 92.0}, {"input": [92.0, 22.5], "expected": 92.0}, {"input": [92.0, 23.0], "expected": 92.0}, {"input": [92.0, 23.5], "expected": 92.0}, {"input": [92.0, 24.0], "expected": 92.0}, {"input": [92.0, 24.5], "expected": 92.0}, {"input": [92.0, 25.0], "expected": 92.0}, {"input": [92.0, 25.5], "expected": 92.0}, {"input": [92.0, 26.0], "expected": 92.0}, {"input": [92.0, 26.5], "expected": 92.0}, {"input": [92.0, 27.0], "expected": 92.0}, {"input": [92.0, 27.5], "expected": 92.0}, {"input": [92.0, 28.0], "expected": 92.0}, {"input": [92.0, 28.5], "expected": 92.0}, {"input": [92.0, 29.0], "expected": 92.0}, {"input": [92.0, 29.5], "expected": 92.0}, {"input": [92.0, 30.0], "expected": 92.0}, {"input": [92.0, 30.5], "expected": 92.0}, {"input": [92.0, 31.0], "expected": 92.0}, {"input": [92.0, 31.5], "expected": 92.0}, {"input": [92.0, 32.0], "expected": 92.0}, {"input": [92.0, 32.5], "expected": 92.0}, {"input": [92.0, 33.0], "expected": 92.0}, {"input": [92.0, 33.5], "expected": 92.0}, {"input": [92.0, 34.0], "expected": 92.0}, {"input": [92.0, 34.5], "expected": 92.0}, {"input": [92.0, 35.0], "expected": 92.0}, {"input": [92.0, 35.5], "expected": 92.0}, {"input": [92.0, 36.0], "expected": 92.0}, {"input": [92.0, 36.5], "expected": 92.0}, {"input": [92.0, 37.0], "expected": 92.0}, {"input": [92.0, 37.5], "expected": 92.0}, {"input": [92.0, 38.0], "expected": 92.0}, {"input": [92.0, 38.5], "expected": 92.0}, {"input": [92.0, 39.0], "expected": 92.0}, {"input": [92.0, 39.5], "expected": 92.0}, {"input": [92.0, 40.0], "expected": 92.0}, {"input": [92.0, 40.5], "expected": 92.0}, {"input": [92.0, 41.0], "expected": 92.0}, {"input": [92.0, 41.5], "expected": 92.0}, {"input": [92.0, 42.0], "expected": 92.0}, {"input": [92.0, 42.5], "expected": 92.0}, {"input": [92.0, 43.0], "expected": 92.0}, {"input": [92.0, 43.5], "expected": 92.0}, {"input": [92.0, 44.0], "expected": 92.0}, {"input": [92.0, 44.5], "expected": 92.0}, {"input": [92.0, 45.0], "expected": 92.0}, {"input": [92.0, 45.5], "expected": 92.0}, {"input": [92.0, 46.0], "expected": 92.0}, {"input": [92.0, 46.5], "expected": 92.0}, {"input": [92.0, 47.0], "expected": 92.0}, {"input": [92.0, 47.5], "expected": 92.0}, {"input": [92.0, 48.0], "expected": 92.0}, {"input": [92.0, 48.5], "expected": 92.0}, {"input": [92.0, 49.0], "expected": 92.0}, {"input": [92.0, 49.5], "expected": 92.0}, {"input": [92.0, 50.0], "expected": 92.0}, {"input": [92.0, 50.5], "expected": 92.0}, {"input": [92.0, 51.0], "expected": 92.0}, {"input": [92.0, 51.5], "expected": 92.0}, {"input": [92.0, 52.0], "expected": 92.0}, {"input": [92.0, 52.5], "expected": 92.0}, {"input": [92.0, 53.0], "expected": 92.0}, {"input": [92.0, 53.5], "expected": 92.0}, {"input": [92.0, 54.0], "expected": 92.0}, {"input": [92.0, 54.5], "expected": 92.0}, {"input": [92.0, 55.0], "expected": 92.0}, {"input": [92.0, 55.5], "expected": 92.0}, {"input": [92.0, 56.0], "expected": 92.0}, {"input": [92.0, 56.5], "expected": 92.0}, {"input": [92.0, 57.0], "expected": 92.0}, {"input": [92.0, 57.5], "expected": 92.0}, {"input": [92.0, 58.0], "expected": 92.0}, {"input": [92.0, 58.5], "expected": 92.0}, {"input": [92.0, 59.0], "expected": 92.0}, {"input": [92.0, 59.5], "expected": 92.00000000000001}, {"input": [92.0, 60.0], "expected": 92.00000000000001}, {"input": [92.0, 60.5], "expected": 92.00000000000001}, {"input": [92.0, 61.0], "expected": 92.00000000000003}, {"input": [92.0, 61.5], "expected": 92.00000000000006}, {"input": [92.0, 62.0], "expected": 92.0000000000001}, {"input": [92.0, 62.5], "expected": 92.00000000000016}, {"input": [92.0, 63.0], "expected": 92.00000000000026}, {"input": [92.0, 63.5], "expected": 92.00000000000043}, {"input": [92.0, 64.0], "expected": 92.0000000000007}, {"input": [92.0, 64.5], "expected": 92.00000000000114}, {"input": [92.0, 65.0], "expected": 92.00000000000188}, {"input": [92.0, 65.5], "expected": 92.0000000000031}, {"input": [92.0, 66.0], "expected": 92.00000000000512}, {"input": [92.0, 66.5], "expected": 92.00000000000843}, {"input": [92.0, 67.0], "expected": 92.00000000001388}, {"input": [92.0, 67.5], "expected": 92.0000000000229}, {"input": [92.0, 68.0], "expected": 92.00000000003776}, {"input": [92.0, 68.5], "expected": 92.00000000006224}, {"input": [92.0, 69.0], "expected": 92.00000000010262}, {"input": [92.0, 69.5], "expected": 92.0000000001692}, {"input": [92.0, 70.0], "expected": 92.00000000027894}, {"input": [92.0, 70.5], "expected": 92.0000000004599}, {"input": [92.0, 71.0], "expected": 92.00000000075826}, {"input": [92.0, 71.5], "expected": 92.00000000125016}, {"input": [92.0, 72.0], "expected": 92.00000000206116}, {"input": [92.0, 72.5], "expected": 92.00000000339827}, {"input": [92.0, 73.0], "expected": 92.0000000056028}, {"input": [92.0, 73.5], "expected": 92.00000000923745}, {"input": [92.0, 74.0], "expected": 92.00000001522999}, {"input": [92.0, 74.5], "expected": 92.00000002511}, {"input": [92.0, 75.0], "expected": 92.00000004139937}, {"input": [92.0, 75.5], "expected": 92.00000006825603}, {"input": [92.0, 76.0], "expected": 92.00000011253516}, {"input": [92.0, 76.5], "expected": 92.00000018553912}, {"input": [92.0, 77.0], "expected": 92.00000030590228}, {"input": [92.0, 77.5], "expected": 92.00000050434754}, {"input": [92.0, 78.0], "expected": 92.00000083152837}, {"input": [92.0, 78.5], "expected": 92.00000137095815}, {"input": [92.0, 79.0], "expected": 92.00000226032685}, {"input": [92.0, 79.5], "expected": 92.00000372664623}, {"input": [92.0, 80.0], "expected": 92.00000614419348}, {"input": [92.0, 80.5], "expected": 92.00001013004228}, {"input": [92.0, 81.0], "expected": 92.00001670156132}, {"input": [92.0, 81.5], "expected": 92.00002753607023}, {"input": [92.0, 82.0], "expected": 92.00004539889922}, {"input": [92.0, 82.5], "expected": 92.00007484902864}, {"input": [92.0, 83.0], "expected": 92.00012340218973}, {"input": [92.0, 83.5], "expected": 92.00020344767213}, {"input": [92.0, 84.0], "expected": 92.0003354063729}, {"input": [92.0, 84.5], "expected": 92.00055293147535}, {"input": [92.0, 85.0], "expected": 92.00091146645377}, {"input": [92.0, 85.5], "expected": 92.00150231015975}, {"input": [92.0, 86.0], "expected": 92.00247568513772}, {"input": [92.0, 86.5], "expected": 92.00407844327057}, {"input": [92.0, 87.0], "expected": 92.00671534848912}, {"input": [92.0, 87.5], "expected": 92.0110477448486}, {"input": [92.0, 88.0], "expected": 92.0181499279178}, {"input": [92.0, 88.5], "expected": 92.02975041827263}, {"input": [92.0, 89.0], "expected": 92.04858735157374}, {"input": [92.0, 89.5], "expected": 92.07888973429255}, {"input": [92.0, 90.0], "expected": 92.12692801104298}, {"input": [92.0, 90.5], "expected": 92.20141327798275}, {"input": [92.0, 91.0], "expected": 92.31326168751822}, {"input": [92.0, 91.5], "expected": 92.4740769841801}, {"input": [92.0, 92.0], "expected": 92.69314718055995}, {"input": [92.0, 92.5], "expected": 92.9740769841801}, {"input": [92.0, 93.0], "expected": 93.31326168751822}, {"input": [92.0, 93.5], "expected": 93.70141327798275}, {"input": [92.0, 94.0], "expected": 94.12692801104298}, {"input": [92.0, 94.5], "expected": 94.57888973429255}, {"input": [92.0, 95.0], "expected": 95.04858735157374}, {"input": [92.0, 95.5], "expected": 95.52975041827263}, {"input": [92.0, 96.0], "expected": 96.0181499279178}, {"input": [92.0, 96.5], "expected": 96.5110477448486}, {"input": [92.0, 97.0], "expected": 97.00671534848912}, {"input": [92.0, 97.5], "expected": 97.50407844327057}, {"input": [92.0, 98.0], "expected": 98.00247568513772}, {"input": [92.0, 98.5], "expected": 98.50150231015975}, {"input": [92.0, 99.0], "expected": 99.00091146645377}, {"input": [92.0, 99.5], "expected": 99.50055293147535}, {"input": [92.5, -100.0], "expected": 92.5}, {"input": [92.5, -99.5], "expected": 92.5}, {"input": [92.5, -99.0], "expected": 92.5}, {"input": [92.5, -98.5], "expected": 92.5}, {"input": [92.5, -98.0], "expected": 92.5}, {"input": [92.5, -97.5], "expected": 92.5}, {"input": [92.5, -97.0], "expected": 92.5}, {"input": [92.5, -96.5], "expected": 92.5}, {"input": [92.5, -96.0], "expected": 92.5}, {"input": [92.5, -95.5], "expected": 92.5}, {"input": [92.5, -95.0], "expected": 92.5}, {"input": [92.5, -94.5], "expected": 92.5}, {"input": [92.5, -94.0], "expected": 92.5}, {"input": [92.5, -93.5], "expected": 92.5}, {"input": [92.5, -93.0], "expected": 92.5}, {"input": [92.5, -92.5], "expected": 92.5}, {"input": [92.5, -92.0], "expected": 92.5}, {"input": [92.5, -91.5], "expected": 92.5}, {"input": [92.5, -91.0], "expected": 92.5}, {"input": [92.5, -90.5], "expected": 92.5}, {"input": [92.5, -90.0], "expected": 92.5}, {"input": [92.5, -89.5], "expected": 92.5}, {"input": [92.5, -89.0], "expected": 92.5}, {"input": [92.5, -88.5], "expected": 92.5}, {"input": [92.5, -88.0], "expected": 92.5}, {"input": [92.5, -87.5], "expected": 92.5}, {"input": [92.5, -87.0], "expected": 92.5}, {"input": [92.5, -86.5], "expected": 92.5}, {"input": [92.5, -86.0], "expected": 92.5}, {"input": [92.5, -85.5], "expected": 92.5}, {"input": [92.5, -85.0], "expected": 92.5}, {"input": [92.5, -84.5], "expected": 92.5}, {"input": [92.5, -84.0], "expected": 92.5}, {"input": [92.5, -83.5], "expected": 92.5}, {"input": [92.5, -83.0], "expected": 92.5}, {"input": [92.5, -82.5], "expected": 92.5}, {"input": [92.5, -82.0], "expected": 92.5}, {"input": [92.5, -81.5], "expected": 92.5}, {"input": [92.5, -81.0], "expected": 92.5}, {"input": [92.5, -80.5], "expected": 92.5}, {"input": [92.5, -80.0], "expected": 92.5}, {"input": [92.5, -79.5], "expected": 92.5}, {"input": [92.5, -79.0], "expected": 92.5}, {"input": [92.5, -78.5], "expected": 92.5}, {"input": [92.5, -78.0], "expected": 92.5}, {"input": [92.5, -77.5], "expected": 92.5}, {"input": [92.5, -77.0], "expected": 92.5}, {"input": [92.5, -76.5], "expected": 92.5}, {"input": [92.5, -76.0], "expected": 92.5}, {"input": [92.5, -75.5], "expected": 92.5}, {"input": [92.5, -75.0], "expected": 92.5}, {"input": [92.5, -74.5], "expected": 92.5}, {"input": [92.5, -74.0], "expected": 92.5}, {"input": [92.5, -73.5], "expected": 92.5}, {"input": [92.5, -73.0], "expected": 92.5}, {"input": [92.5, -72.5], "expected": 92.5}, {"input": [92.5, -72.0], "expected": 92.5}, {"input": [92.5, -71.5], "expected": 92.5}, {"input": [92.5, -71.0], "expected": 92.5}, {"input": [92.5, -70.5], "expected": 92.5}, {"input": [92.5, -70.0], "expected": 92.5}, {"input": [92.5, -69.5], "expected": 92.5}, {"input": [92.5, -69.0], "expected": 92.5}, {"input": [92.5, -68.5], "expected": 92.5}, {"input": [92.5, -68.0], "expected": 92.5}, {"input": [92.5, -67.5], "expected": 92.5}, {"input": [92.5, -67.0], "expected": 92.5}, {"input": [92.5, -66.5], "expected": 92.5}, {"input": [92.5, -66.0], "expected": 92.5}, {"input": [92.5, -65.5], "expected": 92.5}, {"input": [92.5, -65.0], "expected": 92.5}, {"input": [92.5, -64.5], "expected": 92.5}, {"input": [92.5, -64.0], "expected": 92.5}, {"input": [92.5, -63.5], "expected": 92.5}, {"input": [92.5, -63.0], "expected": 92.5}, {"input": [92.5, -62.5], "expected": 92.5}, {"input": [92.5, -62.0], "expected": 92.5}, {"input": [92.5, -61.5], "expected": 92.5}, {"input": [92.5, -61.0], "expected": 92.5}, {"input": [92.5, -60.5], "expected": 92.5}, {"input": [92.5, -60.0], "expected": 92.5}, {"input": [92.5, -59.5], "expected": 92.5}, {"input": [92.5, -59.0], "expected": 92.5}, {"input": [92.5, -58.5], "expected": 92.5}, {"input": [92.5, -58.0], "expected": 92.5}, {"input": [92.5, -57.5], "expected": 92.5}, {"input": [92.5, -57.0], "expected": 92.5}, {"input": [92.5, -56.5], "expected": 92.5}, {"input": [92.5, -56.0], "expected": 92.5}, {"input": [92.5, -55.5], "expected": 92.5}, {"input": [92.5, -55.0], "expected": 92.5}, {"input": [92.5, -54.5], "expected": 92.5}, {"input": [92.5, -54.0], "expected": 92.5}, {"input": [92.5, -53.5], "expected": 92.5}, {"input": [92.5, -53.0], "expected": 92.5}, {"input": [92.5, -52.5], "expected": 92.5}, {"input": [92.5, -52.0], "expected": 92.5}, {"input": [92.5, -51.5], "expected": 92.5}, {"input": [92.5, -51.0], "expected": 92.5}, {"input": [92.5, -50.5], "expected": 92.5}, {"input": [92.5, -50.0], "expected": 92.5}, {"input": [92.5, -49.5], "expected": 92.5}, {"input": [92.5, -49.0], "expected": 92.5}, {"input": [92.5, -48.5], "expected": 92.5}, {"input": [92.5, -48.0], "expected": 92.5}, {"input": [92.5, -47.5], "expected": 92.5}, {"input": [92.5, -47.0], "expected": 92.5}, {"input": [92.5, -46.5], "expected": 92.5}, {"input": [92.5, -46.0], "expected": 92.5}, {"input": [92.5, -45.5], "expected": 92.5}, {"input": [92.5, -45.0], "expected": 92.5}, {"input": [92.5, -44.5], "expected": 92.5}, {"input": [92.5, -44.0], "expected": 92.5}, {"input": [92.5, -43.5], "expected": 92.5}, {"input": [92.5, -43.0], "expected": 92.5}, {"input": [92.5, -42.5], "expected": 92.5}, {"input": [92.5, -42.0], "expected": 92.5}, {"input": [92.5, -41.5], "expected": 92.5}, {"input": [92.5, -41.0], "expected": 92.5}, {"input": [92.5, -40.5], "expected": 92.5}, {"input": [92.5, -40.0], "expected": 92.5}, {"input": [92.5, -39.5], "expected": 92.5}, {"input": [92.5, -39.0], "expected": 92.5}, {"input": [92.5, -38.5], "expected": 92.5}, {"input": [92.5, -38.0], "expected": 92.5}, {"input": [92.5, -37.5], "expected": 92.5}, {"input": [92.5, -37.0], "expected": 92.5}, {"input": [92.5, -36.5], "expected": 92.5}, {"input": [92.5, -36.0], "expected": 92.5}, {"input": [92.5, -35.5], "expected": 92.5}, {"input": [92.5, -35.0], "expected": 92.5}, {"input": [92.5, -34.5], "expected": 92.5}, {"input": [92.5, -34.0], "expected": 92.5}, {"input": [92.5, -33.5], "expected": 92.5}, {"input": [92.5, -33.0], "expected": 92.5}, {"input": [92.5, -32.5], "expected": 92.5}, {"input": [92.5, -32.0], "expected": 92.5}, {"input": [92.5, -31.5], "expected": 92.5}, {"input": [92.5, -31.0], "expected": 92.5}, {"input": [92.5, -30.5], "expected": 92.5}, {"input": [92.5, -30.0], "expected": 92.5}, {"input": [92.5, -29.5], "expected": 92.5}, {"input": [92.5, -29.0], "expected": 92.5}, {"input": [92.5, -28.5], "expected": 92.5}, {"input": [92.5, -28.0], "expected": 92.5}, {"input": [92.5, -27.5], "expected": 92.5}, {"input": [92.5, -27.0], "expected": 92.5}, {"input": [92.5, -26.5], "expected": 92.5}, {"input": [92.5, -26.0], "expected": 92.5}, {"input": [92.5, -25.5], "expected": 92.5}, {"input": [92.5, -25.0], "expected": 92.5}, {"input": [92.5, -24.5], "expected": 92.5}, {"input": [92.5, -24.0], "expected": 92.5}, {"input": [92.5, -23.5], "expected": 92.5}, {"input": [92.5, -23.0], "expected": 92.5}, {"input": [92.5, -22.5], "expected": 92.5}, {"input": [92.5, -22.0], "expected": 92.5}, {"input": [92.5, -21.5], "expected": 92.5}, {"input": [92.5, -21.0], "expected": 92.5}, {"input": [92.5, -20.5], "expected": 92.5}, {"input": [92.5, -20.0], "expected": 92.5}, {"input": [92.5, -19.5], "expected": 92.5}, {"input": [92.5, -19.0], "expected": 92.5}, {"input": [92.5, -18.5], "expected": 92.5}, {"input": [92.5, -18.0], "expected": 92.5}, {"input": [92.5, -17.5], "expected": 92.5}, {"input": [92.5, -17.0], "expected": 92.5}, {"input": [92.5, -16.5], "expected": 92.5}, {"input": [92.5, -16.0], "expected": 92.5}, {"input": [92.5, -15.5], "expected": 92.5}, {"input": [92.5, -15.0], "expected": 92.5}, {"input": [92.5, -14.5], "expected": 92.5}, {"input": [92.5, -14.0], "expected": 92.5}, {"input": [92.5, -13.5], "expected": 92.5}, {"input": [92.5, -13.0], "expected": 92.5}, {"input": [92.5, -12.5], "expected": 92.5}, {"input": [92.5, -12.0], "expected": 92.5}, {"input": [92.5, -11.5], "expected": 92.5}, {"input": [92.5, -11.0], "expected": 92.5}, {"input": [92.5, -10.5], "expected": 92.5}, {"input": [92.5, -10.0], "expected": 92.5}, {"input": [92.5, -9.5], "expected": 92.5}, {"input": [92.5, -9.0], "expected": 92.5}, {"input": [92.5, -8.5], "expected": 92.5}, {"input": [92.5, -8.0], "expected": 92.5}, {"input": [92.5, -7.5], "expected": 92.5}, {"input": [92.5, -7.0], "expected": 92.5}, {"input": [92.5, -6.5], "expected": 92.5}, {"input": [92.5, -6.0], "expected": 92.5}, {"input": [92.5, -5.5], "expected": 92.5}, {"input": [92.5, -5.0], "expected": 92.5}, {"input": [92.5, -4.5], "expected": 92.5}, {"input": [92.5, -4.0], "expected": 92.5}, {"input": [92.5, -3.5], "expected": 92.5}, {"input": [92.5, -3.0], "expected": 92.5}, {"input": [92.5, -2.5], "expected": 92.5}, {"input": [92.5, -2.0], "expected": 92.5}, {"input": [92.5, -1.5], "expected": 92.5}, {"input": [92.5, -1.0], "expected": 92.5}, {"input": [92.5, -0.5], "expected": 92.5}, {"input": [92.5, 0.0], "expected": 92.5}, {"input": [92.5, 0.5], "expected": 92.5}, {"input": [92.5, 1.0], "expected": 92.5}, {"input": [92.5, 1.5], "expected": 92.5}, {"input": [92.5, 2.0], "expected": 92.5}, {"input": [92.5, 2.5], "expected": 92.5}, {"input": [92.5, 3.0], "expected": 92.5}, {"input": [92.5, 3.5], "expected": 92.5}, {"input": [92.5, 4.0], "expected": 92.5}, {"input": [92.5, 4.5], "expected": 92.5}, {"input": [92.5, 5.0], "expected": 92.5}, {"input": [92.5, 5.5], "expected": 92.5}, {"input": [92.5, 6.0], "expected": 92.5}, {"input": [92.5, 6.5], "expected": 92.5}, {"input": [92.5, 7.0], "expected": 92.5}, {"input": [92.5, 7.5], "expected": 92.5}, {"input": [92.5, 8.0], "expected": 92.5}, {"input": [92.5, 8.5], "expected": 92.5}, {"input": [92.5, 9.0], "expected": 92.5}, {"input": [92.5, 9.5], "expected": 92.5}, {"input": [92.5, 10.0], "expected": 92.5}, {"input": [92.5, 10.5], "expected": 92.5}, {"input": [92.5, 11.0], "expected": 92.5}, {"input": [92.5, 11.5], "expected": 92.5}, {"input": [92.5, 12.0], "expected": 92.5}, {"input": [92.5, 12.5], "expected": 92.5}, {"input": [92.5, 13.0], "expected": 92.5}, {"input": [92.5, 13.5], "expected": 92.5}, {"input": [92.5, 14.0], "expected": 92.5}, {"input": [92.5, 14.5], "expected": 92.5}, {"input": [92.5, 15.0], "expected": 92.5}, {"input": [92.5, 15.5], "expected": 92.5}, {"input": [92.5, 16.0], "expected": 92.5}, {"input": [92.5, 16.5], "expected": 92.5}, {"input": [92.5, 17.0], "expected": 92.5}, {"input": [92.5, 17.5], "expected": 92.5}, {"input": [92.5, 18.0], "expected": 92.5}, {"input": [92.5, 18.5], "expected": 92.5}, {"input": [92.5, 19.0], "expected": 92.5}, {"input": [92.5, 19.5], "expected": 92.5}, {"input": [92.5, 20.0], "expected": 92.5}, {"input": [92.5, 20.5], "expected": 92.5}, {"input": [92.5, 21.0], "expected": 92.5}, {"input": [92.5, 21.5], "expected": 92.5}, {"input": [92.5, 22.0], "expected": 92.5}, {"input": [92.5, 22.5], "expected": 92.5}, {"input": [92.5, 23.0], "expected": 92.5}, {"input": [92.5, 23.5], "expected": 92.5}, {"input": [92.5, 24.0], "expected": 92.5}, {"input": [92.5, 24.5], "expected": 92.5}, {"input": [92.5, 25.0], "expected": 92.5}, {"input": [92.5, 25.5], "expected": 92.5}, {"input": [92.5, 26.0], "expected": 92.5}, {"input": [92.5, 26.5], "expected": 92.5}, {"input": [92.5, 27.0], "expected": 92.5}, {"input": [92.5, 27.5], "expected": 92.5}, {"input": [92.5, 28.0], "expected": 92.5}, {"input": [92.5, 28.5], "expected": 92.5}, {"input": [92.5, 29.0], "expected": 92.5}, {"input": [92.5, 29.5], "expected": 92.5}, {"input": [92.5, 30.0], "expected": 92.5}, {"input": [92.5, 30.5], "expected": 92.5}, {"input": [92.5, 31.0], "expected": 92.5}, {"input": [92.5, 31.5], "expected": 92.5}, {"input": [92.5, 32.0], "expected": 92.5}, {"input": [92.5, 32.5], "expected": 92.5}, {"input": [92.5, 33.0], "expected": 92.5}, {"input": [92.5, 33.5], "expected": 92.5}, {"input": [92.5, 34.0], "expected": 92.5}, {"input": [92.5, 34.5], "expected": 92.5}, {"input": [92.5, 35.0], "expected": 92.5}, {"input": [92.5, 35.5], "expected": 92.5}, {"input": [92.5, 36.0], "expected": 92.5}, {"input": [92.5, 36.5], "expected": 92.5}, {"input": [92.5, 37.0], "expected": 92.5}, {"input": [92.5, 37.5], "expected": 92.5}, {"input": [92.5, 38.0], "expected": 92.5}, {"input": [92.5, 38.5], "expected": 92.5}, {"input": [92.5, 39.0], "expected": 92.5}, {"input": [92.5, 39.5], "expected": 92.5}, {"input": [92.5, 40.0], "expected": 92.5}, {"input": [92.5, 40.5], "expected": 92.5}, {"input": [92.5, 41.0], "expected": 92.5}, {"input": [92.5, 41.5], "expected": 92.5}, {"input": [92.5, 42.0], "expected": 92.5}, {"input": [92.5, 42.5], "expected": 92.5}, {"input": [92.5, 43.0], "expected": 92.5}, {"input": [92.5, 43.5], "expected": 92.5}, {"input": [92.5, 44.0], "expected": 92.5}, {"input": [92.5, 44.5], "expected": 92.5}, {"input": [92.5, 45.0], "expected": 92.5}, {"input": [92.5, 45.5], "expected": 92.5}, {"input": [92.5, 46.0], "expected": 92.5}, {"input": [92.5, 46.5], "expected": 92.5}, {"input": [92.5, 47.0], "expected": 92.5}, {"input": [92.5, 47.5], "expected": 92.5}, {"input": [92.5, 48.0], "expected": 92.5}, {"input": [92.5, 48.5], "expected": 92.5}, {"input": [92.5, 49.0], "expected": 92.5}, {"input": [92.5, 49.5], "expected": 92.5}, {"input": [92.5, 50.0], "expected": 92.5}, {"input": [92.5, 50.5], "expected": 92.5}, {"input": [92.5, 51.0], "expected": 92.5}, {"input": [92.5, 51.5], "expected": 92.5}, {"input": [92.5, 52.0], "expected": 92.5}, {"input": [92.5, 52.5], "expected": 92.5}, {"input": [92.5, 53.0], "expected": 92.5}, {"input": [92.5, 53.5], "expected": 92.5}, {"input": [92.5, 54.0], "expected": 92.5}, {"input": [92.5, 54.5], "expected": 92.5}, {"input": [92.5, 55.0], "expected": 92.5}, {"input": [92.5, 55.5], "expected": 92.5}, {"input": [92.5, 56.0], "expected": 92.5}, {"input": [92.5, 56.5], "expected": 92.5}, {"input": [92.5, 57.0], "expected": 92.5}, {"input": [92.5, 57.5], "expected": 92.5}, {"input": [92.5, 58.0], "expected": 92.5}, {"input": [92.5, 58.5], "expected": 92.5}, {"input": [92.5, 59.0], "expected": 92.5}, {"input": [92.5, 59.5], "expected": 92.5}, {"input": [92.5, 60.0], "expected": 92.50000000000001}, {"input": [92.5, 60.5], "expected": 92.50000000000001}, {"input": [92.5, 61.0], "expected": 92.50000000000001}, {"input": [92.5, 61.5], "expected": 92.50000000000003}, {"input": [92.5, 62.0], "expected": 92.50000000000006}, {"input": [92.5, 62.5], "expected": 92.5000000000001}, {"input": [92.5, 63.0], "expected": 92.50000000000016}, {"input": [92.5, 63.5], "expected": 92.50000000000026}, {"input": [92.5, 64.0], "expected": 92.50000000000043}, {"input": [92.5, 64.5], "expected": 92.5000000000007}, {"input": [92.5, 65.0], "expected": 92.50000000000114}, {"input": [92.5, 65.5], "expected": 92.50000000000188}, {"input": [92.5, 66.0], "expected": 92.5000000000031}, {"input": [92.5, 66.5], "expected": 92.50000000000512}, {"input": [92.5, 67.0], "expected": 92.50000000000843}, {"input": [92.5, 67.5], "expected": 92.50000000001388}, {"input": [92.5, 68.0], "expected": 92.5000000000229}, {"input": [92.5, 68.5], "expected": 92.50000000003776}, {"input": [92.5, 69.0], "expected": 92.50000000006224}, {"input": [92.5, 69.5], "expected": 92.50000000010262}, {"input": [92.5, 70.0], "expected": 92.5000000001692}, {"input": [92.5, 70.5], "expected": 92.50000000027894}, {"input": [92.5, 71.0], "expected": 92.5000000004599}, {"input": [92.5, 71.5], "expected": 92.50000000075826}, {"input": [92.5, 72.0], "expected": 92.50000000125016}, {"input": [92.5, 72.5], "expected": 92.50000000206116}, {"input": [92.5, 73.0], "expected": 92.50000000339827}, {"input": [92.5, 73.5], "expected": 92.5000000056028}, {"input": [92.5, 74.0], "expected": 92.50000000923745}, {"input": [92.5, 74.5], "expected": 92.50000001522999}, {"input": [92.5, 75.0], "expected": 92.50000002511}, {"input": [92.5, 75.5], "expected": 92.50000004139937}, {"input": [92.5, 76.0], "expected": 92.50000006825603}, {"input": [92.5, 76.5], "expected": 92.50000011253516}, {"input": [92.5, 77.0], "expected": 92.50000018553912}, {"input": [92.5, 77.5], "expected": 92.50000030590228}, {"input": [92.5, 78.0], "expected": 92.50000050434754}, {"input": [92.5, 78.5], "expected": 92.50000083152837}, {"input": [92.5, 79.0], "expected": 92.50000137095815}, {"input": [92.5, 79.5], "expected": 92.50000226032685}, {"input": [92.5, 80.0], "expected": 92.50000372664623}, {"input": [92.5, 80.5], "expected": 92.50000614419348}, {"input": [92.5, 81.0], "expected": 92.50001013004228}, {"input": [92.5, 81.5], "expected": 92.50001670156132}, {"input": [92.5, 82.0], "expected": 92.50002753607023}, {"input": [92.5, 82.5], "expected": 92.50004539889922}, {"input": [92.5, 83.0], "expected": 92.50007484902864}, {"input": [92.5, 83.5], "expected": 92.50012340218973}, {"input": [92.5, 84.0], "expected": 92.50020344767213}, {"input": [92.5, 84.5], "expected": 92.5003354063729}, {"input": [92.5, 85.0], "expected": 92.50055293147535}, {"input": [92.5, 85.5], "expected": 92.50091146645377}, {"input": [92.5, 86.0], "expected": 92.50150231015975}, {"input": [92.5, 86.5], "expected": 92.50247568513772}, {"input": [92.5, 87.0], "expected": 92.50407844327057}, {"input": [92.5, 87.5], "expected": 92.50671534848912}, {"input": [92.5, 88.0], "expected": 92.5110477448486}, {"input": [92.5, 88.5], "expected": 92.5181499279178}, {"input": [92.5, 89.0], "expected": 92.52975041827263}, {"input": [92.5, 89.5], "expected": 92.54858735157374}, {"input": [92.5, 90.0], "expected": 92.57888973429255}, {"input": [92.5, 90.5], "expected": 92.62692801104298}, {"input": [92.5, 91.0], "expected": 92.70141327798275}, {"input": [92.5, 91.5], "expected": 92.81326168751822}, {"input": [92.5, 92.0], "expected": 92.9740769841801}, {"input": [92.5, 92.5], "expected": 93.19314718055995}, {"input": [92.5, 93.0], "expected": 93.4740769841801}, {"input": [92.5, 93.5], "expected": 93.81326168751822}, {"input": [92.5, 94.0], "expected": 94.20141327798275}, {"input": [92.5, 94.5], "expected": 94.62692801104298}, {"input": [92.5, 95.0], "expected": 95.07888973429255}, {"input": [92.5, 95.5], "expected": 95.54858735157374}, {"input": [92.5, 96.0], "expected": 96.02975041827263}, {"input": [92.5, 96.5], "expected": 96.5181499279178}, {"input": [92.5, 97.0], "expected": 97.0110477448486}, {"input": [92.5, 97.5], "expected": 97.50671534848912}, {"input": [92.5, 98.0], "expected": 98.00407844327057}, {"input": [92.5, 98.5], "expected": 98.50247568513772}, {"input": [92.5, 99.0], "expected": 99.00150231015975}, {"input": [92.5, 99.5], "expected": 99.50091146645377}, {"input": [93.0, -100.0], "expected": 93.0}, {"input": [93.0, -99.5], "expected": 93.0}, {"input": [93.0, -99.0], "expected": 93.0}, {"input": [93.0, -98.5], "expected": 93.0}, {"input": [93.0, -98.0], "expected": 93.0}, {"input": [93.0, -97.5], "expected": 93.0}, {"input": [93.0, -97.0], "expected": 93.0}, {"input": [93.0, -96.5], "expected": 93.0}, {"input": [93.0, -96.0], "expected": 93.0}, {"input": [93.0, -95.5], "expected": 93.0}, {"input": [93.0, -95.0], "expected": 93.0}, {"input": [93.0, -94.5], "expected": 93.0}, {"input": [93.0, -94.0], "expected": 93.0}, {"input": [93.0, -93.5], "expected": 93.0}, {"input": [93.0, -93.0], "expected": 93.0}, {"input": [93.0, -92.5], "expected": 93.0}, {"input": [93.0, -92.0], "expected": 93.0}, {"input": [93.0, -91.5], "expected": 93.0}, {"input": [93.0, -91.0], "expected": 93.0}, {"input": [93.0, -90.5], "expected": 93.0}, {"input": [93.0, -90.0], "expected": 93.0}, {"input": [93.0, -89.5], "expected": 93.0}, {"input": [93.0, -89.0], "expected": 93.0}, {"input": [93.0, -88.5], "expected": 93.0}, {"input": [93.0, -88.0], "expected": 93.0}, {"input": [93.0, -87.5], "expected": 93.0}, {"input": [93.0, -87.0], "expected": 93.0}, {"input": [93.0, -86.5], "expected": 93.0}, {"input": [93.0, -86.0], "expected": 93.0}, {"input": [93.0, -85.5], "expected": 93.0}, {"input": [93.0, -85.0], "expected": 93.0}, {"input": [93.0, -84.5], "expected": 93.0}, {"input": [93.0, -84.0], "expected": 93.0}, {"input": [93.0, -83.5], "expected": 93.0}, {"input": [93.0, -83.0], "expected": 93.0}, {"input": [93.0, -82.5], "expected": 93.0}, {"input": [93.0, -82.0], "expected": 93.0}, {"input": [93.0, -81.5], "expected": 93.0}, {"input": [93.0, -81.0], "expected": 93.0}, {"input": [93.0, -80.5], "expected": 93.0}, {"input": [93.0, -80.0], "expected": 93.0}, {"input": [93.0, -79.5], "expected": 93.0}, {"input": [93.0, -79.0], "expected": 93.0}, {"input": [93.0, -78.5], "expected": 93.0}, {"input": [93.0, -78.0], "expected": 93.0}, {"input": [93.0, -77.5], "expected": 93.0}, {"input": [93.0, -77.0], "expected": 93.0}, {"input": [93.0, -76.5], "expected": 93.0}, {"input": [93.0, -76.0], "expected": 93.0}, {"input": [93.0, -75.5], "expected": 93.0}, {"input": [93.0, -75.0], "expected": 93.0}, {"input": [93.0, -74.5], "expected": 93.0}, {"input": [93.0, -74.0], "expected": 93.0}, {"input": [93.0, -73.5], "expected": 93.0}, {"input": [93.0, -73.0], "expected": 93.0}, {"input": [93.0, -72.5], "expected": 93.0}, {"input": [93.0, -72.0], "expected": 93.0}, {"input": [93.0, -71.5], "expected": 93.0}, {"input": [93.0, -71.0], "expected": 93.0}, {"input": [93.0, -70.5], "expected": 93.0}, {"input": [93.0, -70.0], "expected": 93.0}, {"input": [93.0, -69.5], "expected": 93.0}, {"input": [93.0, -69.0], "expected": 93.0}, {"input": [93.0, -68.5], "expected": 93.0}, {"input": [93.0, -68.0], "expected": 93.0}, {"input": [93.0, -67.5], "expected": 93.0}, {"input": [93.0, -67.0], "expected": 93.0}, {"input": [93.0, -66.5], "expected": 93.0}, {"input": [93.0, -66.0], "expected": 93.0}, {"input": [93.0, -65.5], "expected": 93.0}, {"input": [93.0, -65.0], "expected": 93.0}, {"input": [93.0, -64.5], "expected": 93.0}, {"input": [93.0, -64.0], "expected": 93.0}, {"input": [93.0, -63.5], "expected": 93.0}, {"input": [93.0, -63.0], "expected": 93.0}, {"input": [93.0, -62.5], "expected": 93.0}, {"input": [93.0, -62.0], "expected": 93.0}, {"input": [93.0, -61.5], "expected": 93.0}, {"input": [93.0, -61.0], "expected": 93.0}, {"input": [93.0, -60.5], "expected": 93.0}, {"input": [93.0, -60.0], "expected": 93.0}, {"input": [93.0, -59.5], "expected": 93.0}, {"input": [93.0, -59.0], "expected": 93.0}, {"input": [93.0, -58.5], "expected": 93.0}, {"input": [93.0, -58.0], "expected": 93.0}, {"input": [93.0, -57.5], "expected": 93.0}, {"input": [93.0, -57.0], "expected": 93.0}, {"input": [93.0, -56.5], "expected": 93.0}, {"input": [93.0, -56.0], "expected": 93.0}, {"input": [93.0, -55.5], "expected": 93.0}, {"input": [93.0, -55.0], "expected": 93.0}, {"input": [93.0, -54.5], "expected": 93.0}, {"input": [93.0, -54.0], "expected": 93.0}, {"input": [93.0, -53.5], "expected": 93.0}, {"input": [93.0, -53.0], "expected": 93.0}, {"input": [93.0, -52.5], "expected": 93.0}, {"input": [93.0, -52.0], "expected": 93.0}, {"input": [93.0, -51.5], "expected": 93.0}, {"input": [93.0, -51.0], "expected": 93.0}, {"input": [93.0, -50.5], "expected": 93.0}, {"input": [93.0, -50.0], "expected": 93.0}, {"input": [93.0, -49.5], "expected": 93.0}, {"input": [93.0, -49.0], "expected": 93.0}, {"input": [93.0, -48.5], "expected": 93.0}, {"input": [93.0, -48.0], "expected": 93.0}, {"input": [93.0, -47.5], "expected": 93.0}, {"input": [93.0, -47.0], "expected": 93.0}, {"input": [93.0, -46.5], "expected": 93.0}, {"input": [93.0, -46.0], "expected": 93.0}, {"input": [93.0, -45.5], "expected": 93.0}, {"input": [93.0, -45.0], "expected": 93.0}, {"input": [93.0, -44.5], "expected": 93.0}, {"input": [93.0, -44.0], "expected": 93.0}, {"input": [93.0, -43.5], "expected": 93.0}, {"input": [93.0, -43.0], "expected": 93.0}, {"input": [93.0, -42.5], "expected": 93.0}, {"input": [93.0, -42.0], "expected": 93.0}, {"input": [93.0, -41.5], "expected": 93.0}, {"input": [93.0, -41.0], "expected": 93.0}, {"input": [93.0, -40.5], "expected": 93.0}, {"input": [93.0, -40.0], "expected": 93.0}, {"input": [93.0, -39.5], "expected": 93.0}, {"input": [93.0, -39.0], "expected": 93.0}, {"input": [93.0, -38.5], "expected": 93.0}, {"input": [93.0, -38.0], "expected": 93.0}, {"input": [93.0, -37.5], "expected": 93.0}, {"input": [93.0, -37.0], "expected": 93.0}, {"input": [93.0, -36.5], "expected": 93.0}, {"input": [93.0, -36.0], "expected": 93.0}, {"input": [93.0, -35.5], "expected": 93.0}, {"input": [93.0, -35.0], "expected": 93.0}, {"input": [93.0, -34.5], "expected": 93.0}, {"input": [93.0, -34.0], "expected": 93.0}, {"input": [93.0, -33.5], "expected": 93.0}, {"input": [93.0, -33.0], "expected": 93.0}, {"input": [93.0, -32.5], "expected": 93.0}, {"input": [93.0, -32.0], "expected": 93.0}, {"input": [93.0, -31.5], "expected": 93.0}, {"input": [93.0, -31.0], "expected": 93.0}, {"input": [93.0, -30.5], "expected": 93.0}, {"input": [93.0, -30.0], "expected": 93.0}, {"input": [93.0, -29.5], "expected": 93.0}, {"input": [93.0, -29.0], "expected": 93.0}, {"input": [93.0, -28.5], "expected": 93.0}, {"input": [93.0, -28.0], "expected": 93.0}, {"input": [93.0, -27.5], "expected": 93.0}, {"input": [93.0, -27.0], "expected": 93.0}, {"input": [93.0, -26.5], "expected": 93.0}, {"input": [93.0, -26.0], "expected": 93.0}, {"input": [93.0, -25.5], "expected": 93.0}, {"input": [93.0, -25.0], "expected": 93.0}, {"input": [93.0, -24.5], "expected": 93.0}, {"input": [93.0, -24.0], "expected": 93.0}, {"input": [93.0, -23.5], "expected": 93.0}, {"input": [93.0, -23.0], "expected": 93.0}, {"input": [93.0, -22.5], "expected": 93.0}, {"input": [93.0, -22.0], "expected": 93.0}, {"input": [93.0, -21.5], "expected": 93.0}, {"input": [93.0, -21.0], "expected": 93.0}, {"input": [93.0, -20.5], "expected": 93.0}, {"input": [93.0, -20.0], "expected": 93.0}, {"input": [93.0, -19.5], "expected": 93.0}, {"input": [93.0, -19.0], "expected": 93.0}, {"input": [93.0, -18.5], "expected": 93.0}, {"input": [93.0, -18.0], "expected": 93.0}, {"input": [93.0, -17.5], "expected": 93.0}, {"input": [93.0, -17.0], "expected": 93.0}, {"input": [93.0, -16.5], "expected": 93.0}, {"input": [93.0, -16.0], "expected": 93.0}, {"input": [93.0, -15.5], "expected": 93.0}, {"input": [93.0, -15.0], "expected": 93.0}, {"input": [93.0, -14.5], "expected": 93.0}, {"input": [93.0, -14.0], "expected": 93.0}, {"input": [93.0, -13.5], "expected": 93.0}, {"input": [93.0, -13.0], "expected": 93.0}, {"input": [93.0, -12.5], "expected": 93.0}, {"input": [93.0, -12.0], "expected": 93.0}, {"input": [93.0, -11.5], "expected": 93.0}, {"input": [93.0, -11.0], "expected": 93.0}, {"input": [93.0, -10.5], "expected": 93.0}, {"input": [93.0, -10.0], "expected": 93.0}, {"input": [93.0, -9.5], "expected": 93.0}, {"input": [93.0, -9.0], "expected": 93.0}, {"input": [93.0, -8.5], "expected": 93.0}, {"input": [93.0, -8.0], "expected": 93.0}, {"input": [93.0, -7.5], "expected": 93.0}, {"input": [93.0, -7.0], "expected": 93.0}, {"input": [93.0, -6.5], "expected": 93.0}, {"input": [93.0, -6.0], "expected": 93.0}, {"input": [93.0, -5.5], "expected": 93.0}, {"input": [93.0, -5.0], "expected": 93.0}, {"input": [93.0, -4.5], "expected": 93.0}, {"input": [93.0, -4.0], "expected": 93.0}, {"input": [93.0, -3.5], "expected": 93.0}, {"input": [93.0, -3.0], "expected": 93.0}, {"input": [93.0, -2.5], "expected": 93.0}, {"input": [93.0, -2.0], "expected": 93.0}, {"input": [93.0, -1.5], "expected": 93.0}, {"input": [93.0, -1.0], "expected": 93.0}, {"input": [93.0, -0.5], "expected": 93.0}, {"input": [93.0, 0.0], "expected": 93.0}, {"input": [93.0, 0.5], "expected": 93.0}, {"input": [93.0, 1.0], "expected": 93.0}, {"input": [93.0, 1.5], "expected": 93.0}, {"input": [93.0, 2.0], "expected": 93.0}, {"input": [93.0, 2.5], "expected": 93.0}, {"input": [93.0, 3.0], "expected": 93.0}, {"input": [93.0, 3.5], "expected": 93.0}, {"input": [93.0, 4.0], "expected": 93.0}, {"input": [93.0, 4.5], "expected": 93.0}, {"input": [93.0, 5.0], "expected": 93.0}, {"input": [93.0, 5.5], "expected": 93.0}, {"input": [93.0, 6.0], "expected": 93.0}, {"input": [93.0, 6.5], "expected": 93.0}, {"input": [93.0, 7.0], "expected": 93.0}, {"input": [93.0, 7.5], "expected": 93.0}, {"input": [93.0, 8.0], "expected": 93.0}, {"input": [93.0, 8.5], "expected": 93.0}, {"input": [93.0, 9.0], "expected": 93.0}, {"input": [93.0, 9.5], "expected": 93.0}, {"input": [93.0, 10.0], "expected": 93.0}, {"input": [93.0, 10.5], "expected": 93.0}, {"input": [93.0, 11.0], "expected": 93.0}, {"input": [93.0, 11.5], "expected": 93.0}, {"input": [93.0, 12.0], "expected": 93.0}, {"input": [93.0, 12.5], "expected": 93.0}, {"input": [93.0, 13.0], "expected": 93.0}, {"input": [93.0, 13.5], "expected": 93.0}, {"input": [93.0, 14.0], "expected": 93.0}, {"input": [93.0, 14.5], "expected": 93.0}, {"input": [93.0, 15.0], "expected": 93.0}, {"input": [93.0, 15.5], "expected": 93.0}, {"input": [93.0, 16.0], "expected": 93.0}, {"input": [93.0, 16.5], "expected": 93.0}, {"input": [93.0, 17.0], "expected": 93.0}, {"input": [93.0, 17.5], "expected": 93.0}, {"input": [93.0, 18.0], "expected": 93.0}, {"input": [93.0, 18.5], "expected": 93.0}, {"input": [93.0, 19.0], "expected": 93.0}, {"input": [93.0, 19.5], "expected": 93.0}, {"input": [93.0, 20.0], "expected": 93.0}, {"input": [93.0, 20.5], "expected": 93.0}, {"input": [93.0, 21.0], "expected": 93.0}, {"input": [93.0, 21.5], "expected": 93.0}, {"input": [93.0, 22.0], "expected": 93.0}, {"input": [93.0, 22.5], "expected": 93.0}, {"input": [93.0, 23.0], "expected": 93.0}, {"input": [93.0, 23.5], "expected": 93.0}, {"input": [93.0, 24.0], "expected": 93.0}, {"input": [93.0, 24.5], "expected": 93.0}, {"input": [93.0, 25.0], "expected": 93.0}, {"input": [93.0, 25.5], "expected": 93.0}, {"input": [93.0, 26.0], "expected": 93.0}, {"input": [93.0, 26.5], "expected": 93.0}, {"input": [93.0, 27.0], "expected": 93.0}, {"input": [93.0, 27.5], "expected": 93.0}, {"input": [93.0, 28.0], "expected": 93.0}, {"input": [93.0, 28.5], "expected": 93.0}, {"input": [93.0, 29.0], "expected": 93.0}, {"input": [93.0, 29.5], "expected": 93.0}, {"input": [93.0, 30.0], "expected": 93.0}, {"input": [93.0, 30.5], "expected": 93.0}, {"input": [93.0, 31.0], "expected": 93.0}, {"input": [93.0, 31.5], "expected": 93.0}, {"input": [93.0, 32.0], "expected": 93.0}, {"input": [93.0, 32.5], "expected": 93.0}, {"input": [93.0, 33.0], "expected": 93.0}, {"input": [93.0, 33.5], "expected": 93.0}, {"input": [93.0, 34.0], "expected": 93.0}, {"input": [93.0, 34.5], "expected": 93.0}, {"input": [93.0, 35.0], "expected": 93.0}, {"input": [93.0, 35.5], "expected": 93.0}, {"input": [93.0, 36.0], "expected": 93.0}, {"input": [93.0, 36.5], "expected": 93.0}, {"input": [93.0, 37.0], "expected": 93.0}, {"input": [93.0, 37.5], "expected": 93.0}, {"input": [93.0, 38.0], "expected": 93.0}, {"input": [93.0, 38.5], "expected": 93.0}, {"input": [93.0, 39.0], "expected": 93.0}, {"input": [93.0, 39.5], "expected": 93.0}, {"input": [93.0, 40.0], "expected": 93.0}, {"input": [93.0, 40.5], "expected": 93.0}, {"input": [93.0, 41.0], "expected": 93.0}, {"input": [93.0, 41.5], "expected": 93.0}, {"input": [93.0, 42.0], "expected": 93.0}, {"input": [93.0, 42.5], "expected": 93.0}, {"input": [93.0, 43.0], "expected": 93.0}, {"input": [93.0, 43.5], "expected": 93.0}, {"input": [93.0, 44.0], "expected": 93.0}, {"input": [93.0, 44.5], "expected": 93.0}, {"input": [93.0, 45.0], "expected": 93.0}, {"input": [93.0, 45.5], "expected": 93.0}, {"input": [93.0, 46.0], "expected": 93.0}, {"input": [93.0, 46.5], "expected": 93.0}, {"input": [93.0, 47.0], "expected": 93.0}, {"input": [93.0, 47.5], "expected": 93.0}, {"input": [93.0, 48.0], "expected": 93.0}, {"input": [93.0, 48.5], "expected": 93.0}, {"input": [93.0, 49.0], "expected": 93.0}, {"input": [93.0, 49.5], "expected": 93.0}, {"input": [93.0, 50.0], "expected": 93.0}, {"input": [93.0, 50.5], "expected": 93.0}, {"input": [93.0, 51.0], "expected": 93.0}, {"input": [93.0, 51.5], "expected": 93.0}, {"input": [93.0, 52.0], "expected": 93.0}, {"input": [93.0, 52.5], "expected": 93.0}, {"input": [93.0, 53.0], "expected": 93.0}, {"input": [93.0, 53.5], "expected": 93.0}, {"input": [93.0, 54.0], "expected": 93.0}, {"input": [93.0, 54.5], "expected": 93.0}, {"input": [93.0, 55.0], "expected": 93.0}, {"input": [93.0, 55.5], "expected": 93.0}, {"input": [93.0, 56.0], "expected": 93.0}, {"input": [93.0, 56.5], "expected": 93.0}, {"input": [93.0, 57.0], "expected": 93.0}, {"input": [93.0, 57.5], "expected": 93.0}, {"input": [93.0, 58.0], "expected": 93.0}, {"input": [93.0, 58.5], "expected": 93.0}, {"input": [93.0, 59.0], "expected": 93.0}, {"input": [93.0, 59.5], "expected": 93.0}, {"input": [93.0, 60.0], "expected": 93.0}, {"input": [93.0, 60.5], "expected": 93.00000000000001}, {"input": [93.0, 61.0], "expected": 93.00000000000001}, {"input": [93.0, 61.5], "expected": 93.00000000000001}, {"input": [93.0, 62.0], "expected": 93.00000000000003}, {"input": [93.0, 62.5], "expected": 93.00000000000006}, {"input": [93.0, 63.0], "expected": 93.0000000000001}, {"input": [93.0, 63.5], "expected": 93.00000000000016}, {"input": [93.0, 64.0], "expected": 93.00000000000026}, {"input": [93.0, 64.5], "expected": 93.00000000000043}, {"input": [93.0, 65.0], "expected": 93.0000000000007}, {"input": [93.0, 65.5], "expected": 93.00000000000114}, {"input": [93.0, 66.0], "expected": 93.00000000000188}, {"input": [93.0, 66.5], "expected": 93.0000000000031}, {"input": [93.0, 67.0], "expected": 93.00000000000512}, {"input": [93.0, 67.5], "expected": 93.00000000000843}, {"input": [93.0, 68.0], "expected": 93.00000000001388}, {"input": [93.0, 68.5], "expected": 93.0000000000229}, {"input": [93.0, 69.0], "expected": 93.00000000003776}, {"input": [93.0, 69.5], "expected": 93.00000000006224}, {"input": [93.0, 70.0], "expected": 93.00000000010262}, {"input": [93.0, 70.5], "expected": 93.0000000001692}, {"input": [93.0, 71.0], "expected": 93.00000000027894}, {"input": [93.0, 71.5], "expected": 93.0000000004599}, {"input": [93.0, 72.0], "expected": 93.00000000075826}, {"input": [93.0, 72.5], "expected": 93.00000000125016}, {"input": [93.0, 73.0], "expected": 93.00000000206116}, {"input": [93.0, 73.5], "expected": 93.00000000339827}, {"input": [93.0, 74.0], "expected": 93.0000000056028}, {"input": [93.0, 74.5], "expected": 93.00000000923745}, {"input": [93.0, 75.0], "expected": 93.00000001522999}, {"input": [93.0, 75.5], "expected": 93.00000002511}, {"input": [93.0, 76.0], "expected": 93.00000004139937}, {"input": [93.0, 76.5], "expected": 93.00000006825603}, {"input": [93.0, 77.0], "expected": 93.00000011253516}, {"input": [93.0, 77.5], "expected": 93.00000018553912}, {"input": [93.0, 78.0], "expected": 93.00000030590228}, {"input": [93.0, 78.5], "expected": 93.00000050434754}, {"input": [93.0, 79.0], "expected": 93.00000083152837}, {"input": [93.0, 79.5], "expected": 93.00000137095815}, {"input": [93.0, 80.0], "expected": 93.00000226032685}, {"input": [93.0, 80.5], "expected": 93.00000372664623}, {"input": [93.0, 81.0], "expected": 93.00000614419348}, {"input": [93.0, 81.5], "expected": 93.00001013004228}, {"input": [93.0, 82.0], "expected": 93.00001670156132}, {"input": [93.0, 82.5], "expected": 93.00002753607023}, {"input": [93.0, 83.0], "expected": 93.00004539889922}, {"input": [93.0, 83.5], "expected": 93.00007484902864}, {"input": [93.0, 84.0], "expected": 93.00012340218973}, {"input": [93.0, 84.5], "expected": 93.00020344767213}, {"input": [93.0, 85.0], "expected": 93.0003354063729}, {"input": [93.0, 85.5], "expected": 93.00055293147535}, {"input": [93.0, 86.0], "expected": 93.00091146645377}, {"input": [93.0, 86.5], "expected": 93.00150231015975}, {"input": [93.0, 87.0], "expected": 93.00247568513772}, {"input": [93.0, 87.5], "expected": 93.00407844327057}, {"input": [93.0, 88.0], "expected": 93.00671534848912}, {"input": [93.0, 88.5], "expected": 93.0110477448486}, {"input": [93.0, 89.0], "expected": 93.0181499279178}, {"input": [93.0, 89.5], "expected": 93.02975041827263}, {"input": [93.0, 90.0], "expected": 93.04858735157374}, {"input": [93.0, 90.5], "expected": 93.07888973429255}, {"input": [93.0, 91.0], "expected": 93.12692801104298}, {"input": [93.0, 91.5], "expected": 93.20141327798275}, {"input": [93.0, 92.0], "expected": 93.31326168751822}, {"input": [93.0, 92.5], "expected": 93.4740769841801}, {"input": [93.0, 93.0], "expected": 93.69314718055995}, {"input": [93.0, 93.5], "expected": 93.9740769841801}, {"input": [93.0, 94.0], "expected": 94.31326168751822}, {"input": [93.0, 94.5], "expected": 94.70141327798275}, {"input": [93.0, 95.0], "expected": 95.12692801104298}, {"input": [93.0, 95.5], "expected": 95.57888973429255}, {"input": [93.0, 96.0], "expected": 96.04858735157374}, {"input": [93.0, 96.5], "expected": 96.52975041827263}, {"input": [93.0, 97.0], "expected": 97.0181499279178}, {"input": [93.0, 97.5], "expected": 97.5110477448486}, {"input": [93.0, 98.0], "expected": 98.00671534848912}, {"input": [93.0, 98.5], "expected": 98.50407844327057}, {"input": [93.0, 99.0], "expected": 99.00247568513772}, {"input": [93.0, 99.5], "expected": 99.50150231015975}, {"input": [93.5, -100.0], "expected": 93.5}, {"input": [93.5, -99.5], "expected": 93.5}, {"input": [93.5, -99.0], "expected": 93.5}, {"input": [93.5, -98.5], "expected": 93.5}, {"input": [93.5, -98.0], "expected": 93.5}, {"input": [93.5, -97.5], "expected": 93.5}, {"input": [93.5, -97.0], "expected": 93.5}, {"input": [93.5, -96.5], "expected": 93.5}, {"input": [93.5, -96.0], "expected": 93.5}, {"input": [93.5, -95.5], "expected": 93.5}, {"input": [93.5, -95.0], "expected": 93.5}, {"input": [93.5, -94.5], "expected": 93.5}, {"input": [93.5, -94.0], "expected": 93.5}, {"input": [93.5, -93.5], "expected": 93.5}, {"input": [93.5, -93.0], "expected": 93.5}, {"input": [93.5, -92.5], "expected": 93.5}, {"input": [93.5, -92.0], "expected": 93.5}, {"input": [93.5, -91.5], "expected": 93.5}, {"input": [93.5, -91.0], "expected": 93.5}, {"input": [93.5, -90.5], "expected": 93.5}, {"input": [93.5, -90.0], "expected": 93.5}, {"input": [93.5, -89.5], "expected": 93.5}, {"input": [93.5, -89.0], "expected": 93.5}, {"input": [93.5, -88.5], "expected": 93.5}, {"input": [93.5, -88.0], "expected": 93.5}, {"input": [93.5, -87.5], "expected": 93.5}, {"input": [93.5, -87.0], "expected": 93.5}, {"input": [93.5, -86.5], "expected": 93.5}, {"input": [93.5, -86.0], "expected": 93.5}, {"input": [93.5, -85.5], "expected": 93.5}, {"input": [93.5, -85.0], "expected": 93.5}, {"input": [93.5, -84.5], "expected": 93.5}, {"input": [93.5, -84.0], "expected": 93.5}, {"input": [93.5, -83.5], "expected": 93.5}, {"input": [93.5, -83.0], "expected": 93.5}, {"input": [93.5, -82.5], "expected": 93.5}, {"input": [93.5, -82.0], "expected": 93.5}, {"input": [93.5, -81.5], "expected": 93.5}, {"input": [93.5, -81.0], "expected": 93.5}, {"input": [93.5, -80.5], "expected": 93.5}, {"input": [93.5, -80.0], "expected": 93.5}, {"input": [93.5, -79.5], "expected": 93.5}, {"input": [93.5, -79.0], "expected": 93.5}, {"input": [93.5, -78.5], "expected": 93.5}, {"input": [93.5, -78.0], "expected": 93.5}, {"input": [93.5, -77.5], "expected": 93.5}, {"input": [93.5, -77.0], "expected": 93.5}, {"input": [93.5, -76.5], "expected": 93.5}, {"input": [93.5, -76.0], "expected": 93.5}, {"input": [93.5, -75.5], "expected": 93.5}, {"input": [93.5, -75.0], "expected": 93.5}, {"input": [93.5, -74.5], "expected": 93.5}, {"input": [93.5, -74.0], "expected": 93.5}, {"input": [93.5, -73.5], "expected": 93.5}, {"input": [93.5, -73.0], "expected": 93.5}, {"input": [93.5, -72.5], "expected": 93.5}, {"input": [93.5, -72.0], "expected": 93.5}, {"input": [93.5, -71.5], "expected": 93.5}, {"input": [93.5, -71.0], "expected": 93.5}, {"input": [93.5, -70.5], "expected": 93.5}, {"input": [93.5, -70.0], "expected": 93.5}, {"input": [93.5, -69.5], "expected": 93.5}, {"input": [93.5, -69.0], "expected": 93.5}, {"input": [93.5, -68.5], "expected": 93.5}, {"input": [93.5, -68.0], "expected": 93.5}, {"input": [93.5, -67.5], "expected": 93.5}, {"input": [93.5, -67.0], "expected": 93.5}, {"input": [93.5, -66.5], "expected": 93.5}, {"input": [93.5, -66.0], "expected": 93.5}, {"input": [93.5, -65.5], "expected": 93.5}, {"input": [93.5, -65.0], "expected": 93.5}, {"input": [93.5, -64.5], "expected": 93.5}, {"input": [93.5, -64.0], "expected": 93.5}, {"input": [93.5, -63.5], "expected": 93.5}, {"input": [93.5, -63.0], "expected": 93.5}, {"input": [93.5, -62.5], "expected": 93.5}, {"input": [93.5, -62.0], "expected": 93.5}, {"input": [93.5, -61.5], "expected": 93.5}, {"input": [93.5, -61.0], "expected": 93.5}, {"input": [93.5, -60.5], "expected": 93.5}, {"input": [93.5, -60.0], "expected": 93.5}, {"input": [93.5, -59.5], "expected": 93.5}, {"input": [93.5, -59.0], "expected": 93.5}, {"input": [93.5, -58.5], "expected": 93.5}, {"input": [93.5, -58.0], "expected": 93.5}, {"input": [93.5, -57.5], "expected": 93.5}, {"input": [93.5, -57.0], "expected": 93.5}, {"input": [93.5, -56.5], "expected": 93.5}, {"input": [93.5, -56.0], "expected": 93.5}, {"input": [93.5, -55.5], "expected": 93.5}, {"input": [93.5, -55.0], "expected": 93.5}, {"input": [93.5, -54.5], "expected": 93.5}, {"input": [93.5, -54.0], "expected": 93.5}, {"input": [93.5, -53.5], "expected": 93.5}, {"input": [93.5, -53.0], "expected": 93.5}, {"input": [93.5, -52.5], "expected": 93.5}, {"input": [93.5, -52.0], "expected": 93.5}, {"input": [93.5, -51.5], "expected": 93.5}, {"input": [93.5, -51.0], "expected": 93.5}, {"input": [93.5, -50.5], "expected": 93.5}, {"input": [93.5, -50.0], "expected": 93.5}, {"input": [93.5, -49.5], "expected": 93.5}, {"input": [93.5, -49.0], "expected": 93.5}, {"input": [93.5, -48.5], "expected": 93.5}, {"input": [93.5, -48.0], "expected": 93.5}, {"input": [93.5, -47.5], "expected": 93.5}, {"input": [93.5, -47.0], "expected": 93.5}, {"input": [93.5, -46.5], "expected": 93.5}, {"input": [93.5, -46.0], "expected": 93.5}, {"input": [93.5, -45.5], "expected": 93.5}, {"input": [93.5, -45.0], "expected": 93.5}, {"input": [93.5, -44.5], "expected": 93.5}, {"input": [93.5, -44.0], "expected": 93.5}, {"input": [93.5, -43.5], "expected": 93.5}, {"input": [93.5, -43.0], "expected": 93.5}, {"input": [93.5, -42.5], "expected": 93.5}, {"input": [93.5, -42.0], "expected": 93.5}, {"input": [93.5, -41.5], "expected": 93.5}, {"input": [93.5, -41.0], "expected": 93.5}, {"input": [93.5, -40.5], "expected": 93.5}, {"input": [93.5, -40.0], "expected": 93.5}, {"input": [93.5, -39.5], "expected": 93.5}, {"input": [93.5, -39.0], "expected": 93.5}, {"input": [93.5, -38.5], "expected": 93.5}, {"input": [93.5, -38.0], "expected": 93.5}, {"input": [93.5, -37.5], "expected": 93.5}, {"input": [93.5, -37.0], "expected": 93.5}, {"input": [93.5, -36.5], "expected": 93.5}, {"input": [93.5, -36.0], "expected": 93.5}, {"input": [93.5, -35.5], "expected": 93.5}, {"input": [93.5, -35.0], "expected": 93.5}, {"input": [93.5, -34.5], "expected": 93.5}, {"input": [93.5, -34.0], "expected": 93.5}, {"input": [93.5, -33.5], "expected": 93.5}, {"input": [93.5, -33.0], "expected": 93.5}, {"input": [93.5, -32.5], "expected": 93.5}, {"input": [93.5, -32.0], "expected": 93.5}, {"input": [93.5, -31.5], "expected": 93.5}, {"input": [93.5, -31.0], "expected": 93.5}, {"input": [93.5, -30.5], "expected": 93.5}, {"input": [93.5, -30.0], "expected": 93.5}, {"input": [93.5, -29.5], "expected": 93.5}, {"input": [93.5, -29.0], "expected": 93.5}, {"input": [93.5, -28.5], "expected": 93.5}, {"input": [93.5, -28.0], "expected": 93.5}, {"input": [93.5, -27.5], "expected": 93.5}, {"input": [93.5, -27.0], "expected": 93.5}, {"input": [93.5, -26.5], "expected": 93.5}, {"input": [93.5, -26.0], "expected": 93.5}, {"input": [93.5, -25.5], "expected": 93.5}, {"input": [93.5, -25.0], "expected": 93.5}, {"input": [93.5, -24.5], "expected": 93.5}, {"input": [93.5, -24.0], "expected": 93.5}, {"input": [93.5, -23.5], "expected": 93.5}, {"input": [93.5, -23.0], "expected": 93.5}, {"input": [93.5, -22.5], "expected": 93.5}, {"input": [93.5, -22.0], "expected": 93.5}, {"input": [93.5, -21.5], "expected": 93.5}, {"input": [93.5, -21.0], "expected": 93.5}, {"input": [93.5, -20.5], "expected": 93.5}, {"input": [93.5, -20.0], "expected": 93.5}, {"input": [93.5, -19.5], "expected": 93.5}, {"input": [93.5, -19.0], "expected": 93.5}, {"input": [93.5, -18.5], "expected": 93.5}, {"input": [93.5, -18.0], "expected": 93.5}, {"input": [93.5, -17.5], "expected": 93.5}, {"input": [93.5, -17.0], "expected": 93.5}, {"input": [93.5, -16.5], "expected": 93.5}, {"input": [93.5, -16.0], "expected": 93.5}, {"input": [93.5, -15.5], "expected": 93.5}, {"input": [93.5, -15.0], "expected": 93.5}, {"input": [93.5, -14.5], "expected": 93.5}, {"input": [93.5, -14.0], "expected": 93.5}, {"input": [93.5, -13.5], "expected": 93.5}, {"input": [93.5, -13.0], "expected": 93.5}, {"input": [93.5, -12.5], "expected": 93.5}, {"input": [93.5, -12.0], "expected": 93.5}, {"input": [93.5, -11.5], "expected": 93.5}, {"input": [93.5, -11.0], "expected": 93.5}, {"input": [93.5, -10.5], "expected": 93.5}, {"input": [93.5, -10.0], "expected": 93.5}, {"input": [93.5, -9.5], "expected": 93.5}, {"input": [93.5, -9.0], "expected": 93.5}, {"input": [93.5, -8.5], "expected": 93.5}, {"input": [93.5, -8.0], "expected": 93.5}, {"input": [93.5, -7.5], "expected": 93.5}, {"input": [93.5, -7.0], "expected": 93.5}, {"input": [93.5, -6.5], "expected": 93.5}, {"input": [93.5, -6.0], "expected": 93.5}, {"input": [93.5, -5.5], "expected": 93.5}, {"input": [93.5, -5.0], "expected": 93.5}, {"input": [93.5, -4.5], "expected": 93.5}, {"input": [93.5, -4.0], "expected": 93.5}, {"input": [93.5, -3.5], "expected": 93.5}, {"input": [93.5, -3.0], "expected": 93.5}, {"input": [93.5, -2.5], "expected": 93.5}, {"input": [93.5, -2.0], "expected": 93.5}, {"input": [93.5, -1.5], "expected": 93.5}, {"input": [93.5, -1.0], "expected": 93.5}, {"input": [93.5, -0.5], "expected": 93.5}, {"input": [93.5, 0.0], "expected": 93.5}, {"input": [93.5, 0.5], "expected": 93.5}, {"input": [93.5, 1.0], "expected": 93.5}, {"input": [93.5, 1.5], "expected": 93.5}, {"input": [93.5, 2.0], "expected": 93.5}, {"input": [93.5, 2.5], "expected": 93.5}, {"input": [93.5, 3.0], "expected": 93.5}, {"input": [93.5, 3.5], "expected": 93.5}, {"input": [93.5, 4.0], "expected": 93.5}, {"input": [93.5, 4.5], "expected": 93.5}, {"input": [93.5, 5.0], "expected": 93.5}, {"input": [93.5, 5.5], "expected": 93.5}, {"input": [93.5, 6.0], "expected": 93.5}, {"input": [93.5, 6.5], "expected": 93.5}, {"input": [93.5, 7.0], "expected": 93.5}, {"input": [93.5, 7.5], "expected": 93.5}, {"input": [93.5, 8.0], "expected": 93.5}, {"input": [93.5, 8.5], "expected": 93.5}, {"input": [93.5, 9.0], "expected": 93.5}, {"input": [93.5, 9.5], "expected": 93.5}, {"input": [93.5, 10.0], "expected": 93.5}, {"input": [93.5, 10.5], "expected": 93.5}, {"input": [93.5, 11.0], "expected": 93.5}, {"input": [93.5, 11.5], "expected": 93.5}, {"input": [93.5, 12.0], "expected": 93.5}, {"input": [93.5, 12.5], "expected": 93.5}, {"input": [93.5, 13.0], "expected": 93.5}, {"input": [93.5, 13.5], "expected": 93.5}, {"input": [93.5, 14.0], "expected": 93.5}, {"input": [93.5, 14.5], "expected": 93.5}, {"input": [93.5, 15.0], "expected": 93.5}, {"input": [93.5, 15.5], "expected": 93.5}, {"input": [93.5, 16.0], "expected": 93.5}, {"input": [93.5, 16.5], "expected": 93.5}, {"input": [93.5, 17.0], "expected": 93.5}, {"input": [93.5, 17.5], "expected": 93.5}, {"input": [93.5, 18.0], "expected": 93.5}, {"input": [93.5, 18.5], "expected": 93.5}, {"input": [93.5, 19.0], "expected": 93.5}, {"input": [93.5, 19.5], "expected": 93.5}, {"input": [93.5, 20.0], "expected": 93.5}, {"input": [93.5, 20.5], "expected": 93.5}, {"input": [93.5, 21.0], "expected": 93.5}, {"input": [93.5, 21.5], "expected": 93.5}, {"input": [93.5, 22.0], "expected": 93.5}, {"input": [93.5, 22.5], "expected": 93.5}, {"input": [93.5, 23.0], "expected": 93.5}, {"input": [93.5, 23.5], "expected": 93.5}, {"input": [93.5, 24.0], "expected": 93.5}, {"input": [93.5, 24.5], "expected": 93.5}, {"input": [93.5, 25.0], "expected": 93.5}, {"input": [93.5, 25.5], "expected": 93.5}, {"input": [93.5, 26.0], "expected": 93.5}, {"input": [93.5, 26.5], "expected": 93.5}, {"input": [93.5, 27.0], "expected": 93.5}, {"input": [93.5, 27.5], "expected": 93.5}, {"input": [93.5, 28.0], "expected": 93.5}, {"input": [93.5, 28.5], "expected": 93.5}, {"input": [93.5, 29.0], "expected": 93.5}, {"input": [93.5, 29.5], "expected": 93.5}, {"input": [93.5, 30.0], "expected": 93.5}, {"input": [93.5, 30.5], "expected": 93.5}, {"input": [93.5, 31.0], "expected": 93.5}, {"input": [93.5, 31.5], "expected": 93.5}, {"input": [93.5, 32.0], "expected": 93.5}, {"input": [93.5, 32.5], "expected": 93.5}, {"input": [93.5, 33.0], "expected": 93.5}, {"input": [93.5, 33.5], "expected": 93.5}, {"input": [93.5, 34.0], "expected": 93.5}, {"input": [93.5, 34.5], "expected": 93.5}, {"input": [93.5, 35.0], "expected": 93.5}, {"input": [93.5, 35.5], "expected": 93.5}, {"input": [93.5, 36.0], "expected": 93.5}, {"input": [93.5, 36.5], "expected": 93.5}, {"input": [93.5, 37.0], "expected": 93.5}, {"input": [93.5, 37.5], "expected": 93.5}, {"input": [93.5, 38.0], "expected": 93.5}, {"input": [93.5, 38.5], "expected": 93.5}, {"input": [93.5, 39.0], "expected": 93.5}, {"input": [93.5, 39.5], "expected": 93.5}, {"input": [93.5, 40.0], "expected": 93.5}, {"input": [93.5, 40.5], "expected": 93.5}, {"input": [93.5, 41.0], "expected": 93.5}, {"input": [93.5, 41.5], "expected": 93.5}, {"input": [93.5, 42.0], "expected": 93.5}, {"input": [93.5, 42.5], "expected": 93.5}, {"input": [93.5, 43.0], "expected": 93.5}, {"input": [93.5, 43.5], "expected": 93.5}, {"input": [93.5, 44.0], "expected": 93.5}, {"input": [93.5, 44.5], "expected": 93.5}, {"input": [93.5, 45.0], "expected": 93.5}, {"input": [93.5, 45.5], "expected": 93.5}, {"input": [93.5, 46.0], "expected": 93.5}, {"input": [93.5, 46.5], "expected": 93.5}, {"input": [93.5, 47.0], "expected": 93.5}, {"input": [93.5, 47.5], "expected": 93.5}, {"input": [93.5, 48.0], "expected": 93.5}, {"input": [93.5, 48.5], "expected": 93.5}, {"input": [93.5, 49.0], "expected": 93.5}, {"input": [93.5, 49.5], "expected": 93.5}, {"input": [93.5, 50.0], "expected": 93.5}, {"input": [93.5, 50.5], "expected": 93.5}, {"input": [93.5, 51.0], "expected": 93.5}, {"input": [93.5, 51.5], "expected": 93.5}, {"input": [93.5, 52.0], "expected": 93.5}, {"input": [93.5, 52.5], "expected": 93.5}, {"input": [93.5, 53.0], "expected": 93.5}, {"input": [93.5, 53.5], "expected": 93.5}, {"input": [93.5, 54.0], "expected": 93.5}, {"input": [93.5, 54.5], "expected": 93.5}, {"input": [93.5, 55.0], "expected": 93.5}, {"input": [93.5, 55.5], "expected": 93.5}, {"input": [93.5, 56.0], "expected": 93.5}, {"input": [93.5, 56.5], "expected": 93.5}, {"input": [93.5, 57.0], "expected": 93.5}, {"input": [93.5, 57.5], "expected": 93.5}, {"input": [93.5, 58.0], "expected": 93.5}, {"input": [93.5, 58.5], "expected": 93.5}, {"input": [93.5, 59.0], "expected": 93.5}, {"input": [93.5, 59.5], "expected": 93.5}, {"input": [93.5, 60.0], "expected": 93.5}, {"input": [93.5, 60.5], "expected": 93.5}, {"input": [93.5, 61.0], "expected": 93.50000000000001}, {"input": [93.5, 61.5], "expected": 93.50000000000001}, {"input": [93.5, 62.0], "expected": 93.50000000000001}, {"input": [93.5, 62.5], "expected": 93.50000000000003}, {"input": [93.5, 63.0], "expected": 93.50000000000006}, {"input": [93.5, 63.5], "expected": 93.5000000000001}, {"input": [93.5, 64.0], "expected": 93.50000000000016}, {"input": [93.5, 64.5], "expected": 93.50000000000026}, {"input": [93.5, 65.0], "expected": 93.50000000000043}, {"input": [93.5, 65.5], "expected": 93.5000000000007}, {"input": [93.5, 66.0], "expected": 93.50000000000114}, {"input": [93.5, 66.5], "expected": 93.50000000000188}, {"input": [93.5, 67.0], "expected": 93.5000000000031}, {"input": [93.5, 67.5], "expected": 93.50000000000512}, {"input": [93.5, 68.0], "expected": 93.50000000000843}, {"input": [93.5, 68.5], "expected": 93.50000000001388}, {"input": [93.5, 69.0], "expected": 93.5000000000229}, {"input": [93.5, 69.5], "expected": 93.50000000003776}, {"input": [93.5, 70.0], "expected": 93.50000000006224}, {"input": [93.5, 70.5], "expected": 93.50000000010262}, {"input": [93.5, 71.0], "expected": 93.5000000001692}, {"input": [93.5, 71.5], "expected": 93.50000000027894}, {"input": [93.5, 72.0], "expected": 93.5000000004599}, {"input": [93.5, 72.5], "expected": 93.50000000075826}, {"input": [93.5, 73.0], "expected": 93.50000000125016}, {"input": [93.5, 73.5], "expected": 93.50000000206116}, {"input": [93.5, 74.0], "expected": 93.50000000339827}, {"input": [93.5, 74.5], "expected": 93.5000000056028}, {"input": [93.5, 75.0], "expected": 93.50000000923745}, {"input": [93.5, 75.5], "expected": 93.50000001522999}, {"input": [93.5, 76.0], "expected": 93.50000002511}, {"input": [93.5, 76.5], "expected": 93.50000004139937}, {"input": [93.5, 77.0], "expected": 93.50000006825603}, {"input": [93.5, 77.5], "expected": 93.50000011253516}, {"input": [93.5, 78.0], "expected": 93.50000018553912}, {"input": [93.5, 78.5], "expected": 93.50000030590228}, {"input": [93.5, 79.0], "expected": 93.50000050434754}, {"input": [93.5, 79.5], "expected": 93.50000083152837}, {"input": [93.5, 80.0], "expected": 93.50000137095815}, {"input": [93.5, 80.5], "expected": 93.50000226032685}, {"input": [93.5, 81.0], "expected": 93.50000372664623}, {"input": [93.5, 81.5], "expected": 93.50000614419348}, {"input": [93.5, 82.0], "expected": 93.50001013004228}, {"input": [93.5, 82.5], "expected": 93.50001670156132}, {"input": [93.5, 83.0], "expected": 93.50002753607023}, {"input": [93.5, 83.5], "expected": 93.50004539889922}, {"input": [93.5, 84.0], "expected": 93.50007484902864}, {"input": [93.5, 84.5], "expected": 93.50012340218973}, {"input": [93.5, 85.0], "expected": 93.50020344767213}, {"input": [93.5, 85.5], "expected": 93.5003354063729}, {"input": [93.5, 86.0], "expected": 93.50055293147535}, {"input": [93.5, 86.5], "expected": 93.50091146645377}, {"input": [93.5, 87.0], "expected": 93.50150231015975}, {"input": [93.5, 87.5], "expected": 93.50247568513772}, {"input": [93.5, 88.0], "expected": 93.50407844327057}, {"input": [93.5, 88.5], "expected": 93.50671534848912}, {"input": [93.5, 89.0], "expected": 93.5110477448486}, {"input": [93.5, 89.5], "expected": 93.5181499279178}, {"input": [93.5, 90.0], "expected": 93.52975041827263}, {"input": [93.5, 90.5], "expected": 93.54858735157374}, {"input": [93.5, 91.0], "expected": 93.57888973429255}, {"input": [93.5, 91.5], "expected": 93.62692801104298}, {"input": [93.5, 92.0], "expected": 93.70141327798275}, {"input": [93.5, 92.5], "expected": 93.81326168751822}, {"input": [93.5, 93.0], "expected": 93.9740769841801}, {"input": [93.5, 93.5], "expected": 94.19314718055995}, {"input": [93.5, 94.0], "expected": 94.4740769841801}, {"input": [93.5, 94.5], "expected": 94.81326168751822}, {"input": [93.5, 95.0], "expected": 95.20141327798275}, {"input": [93.5, 95.5], "expected": 95.62692801104298}, {"input": [93.5, 96.0], "expected": 96.07888973429255}, {"input": [93.5, 96.5], "expected": 96.54858735157374}, {"input": [93.5, 97.0], "expected": 97.02975041827263}, {"input": [93.5, 97.5], "expected": 97.5181499279178}, {"input": [93.5, 98.0], "expected": 98.0110477448486}, {"input": [93.5, 98.5], "expected": 98.50671534848912}, {"input": [93.5, 99.0], "expected": 99.00407844327057}, {"input": [93.5, 99.5], "expected": 99.50247568513772}, {"input": [94.0, -100.0], "expected": 94.0}, {"input": [94.0, -99.5], "expected": 94.0}, {"input": [94.0, -99.0], "expected": 94.0}, {"input": [94.0, -98.5], "expected": 94.0}, {"input": [94.0, -98.0], "expected": 94.0}, {"input": [94.0, -97.5], "expected": 94.0}, {"input": [94.0, -97.0], "expected": 94.0}, {"input": [94.0, -96.5], "expected": 94.0}, {"input": [94.0, -96.0], "expected": 94.0}, {"input": [94.0, -95.5], "expected": 94.0}, {"input": [94.0, -95.0], "expected": 94.0}, {"input": [94.0, -94.5], "expected": 94.0}, {"input": [94.0, -94.0], "expected": 94.0}, {"input": [94.0, -93.5], "expected": 94.0}, {"input": [94.0, -93.0], "expected": 94.0}, {"input": [94.0, -92.5], "expected": 94.0}, {"input": [94.0, -92.0], "expected": 94.0}, {"input": [94.0, -91.5], "expected": 94.0}, {"input": [94.0, -91.0], "expected": 94.0}, {"input": [94.0, -90.5], "expected": 94.0}, {"input": [94.0, -90.0], "expected": 94.0}, {"input": [94.0, -89.5], "expected": 94.0}, {"input": [94.0, -89.0], "expected": 94.0}, {"input": [94.0, -88.5], "expected": 94.0}, {"input": [94.0, -88.0], "expected": 94.0}, {"input": [94.0, -87.5], "expected": 94.0}, {"input": [94.0, -87.0], "expected": 94.0}, {"input": [94.0, -86.5], "expected": 94.0}, {"input": [94.0, -86.0], "expected": 94.0}, {"input": [94.0, -85.5], "expected": 94.0}, {"input": [94.0, -85.0], "expected": 94.0}, {"input": [94.0, -84.5], "expected": 94.0}, {"input": [94.0, -84.0], "expected": 94.0}, {"input": [94.0, -83.5], "expected": 94.0}, {"input": [94.0, -83.0], "expected": 94.0}, {"input": [94.0, -82.5], "expected": 94.0}, {"input": [94.0, -82.0], "expected": 94.0}, {"input": [94.0, -81.5], "expected": 94.0}, {"input": [94.0, -81.0], "expected": 94.0}, {"input": [94.0, -80.5], "expected": 94.0}, {"input": [94.0, -80.0], "expected": 94.0}, {"input": [94.0, -79.5], "expected": 94.0}, {"input": [94.0, -79.0], "expected": 94.0}, {"input": [94.0, -78.5], "expected": 94.0}, {"input": [94.0, -78.0], "expected": 94.0}, {"input": [94.0, -77.5], "expected": 94.0}, {"input": [94.0, -77.0], "expected": 94.0}, {"input": [94.0, -76.5], "expected": 94.0}, {"input": [94.0, -76.0], "expected": 94.0}, {"input": [94.0, -75.5], "expected": 94.0}, {"input": [94.0, -75.0], "expected": 94.0}, {"input": [94.0, -74.5], "expected": 94.0}, {"input": [94.0, -74.0], "expected": 94.0}, {"input": [94.0, -73.5], "expected": 94.0}, {"input": [94.0, -73.0], "expected": 94.0}, {"input": [94.0, -72.5], "expected": 94.0}, {"input": [94.0, -72.0], "expected": 94.0}, {"input": [94.0, -71.5], "expected": 94.0}, {"input": [94.0, -71.0], "expected": 94.0}, {"input": [94.0, -70.5], "expected": 94.0}, {"input": [94.0, -70.0], "expected": 94.0}, {"input": [94.0, -69.5], "expected": 94.0}, {"input": [94.0, -69.0], "expected": 94.0}, {"input": [94.0, -68.5], "expected": 94.0}, {"input": [94.0, -68.0], "expected": 94.0}, {"input": [94.0, -67.5], "expected": 94.0}, {"input": [94.0, -67.0], "expected": 94.0}, {"input": [94.0, -66.5], "expected": 94.0}, {"input": [94.0, -66.0], "expected": 94.0}, {"input": [94.0, -65.5], "expected": 94.0}, {"input": [94.0, -65.0], "expected": 94.0}, {"input": [94.0, -64.5], "expected": 94.0}, {"input": [94.0, -64.0], "expected": 94.0}, {"input": [94.0, -63.5], "expected": 94.0}, {"input": [94.0, -63.0], "expected": 94.0}, {"input": [94.0, -62.5], "expected": 94.0}, {"input": [94.0, -62.0], "expected": 94.0}, {"input": [94.0, -61.5], "expected": 94.0}, {"input": [94.0, -61.0], "expected": 94.0}, {"input": [94.0, -60.5], "expected": 94.0}, {"input": [94.0, -60.0], "expected": 94.0}, {"input": [94.0, -59.5], "expected": 94.0}, {"input": [94.0, -59.0], "expected": 94.0}, {"input": [94.0, -58.5], "expected": 94.0}, {"input": [94.0, -58.0], "expected": 94.0}, {"input": [94.0, -57.5], "expected": 94.0}, {"input": [94.0, -57.0], "expected": 94.0}, {"input": [94.0, -56.5], "expected": 94.0}, {"input": [94.0, -56.0], "expected": 94.0}, {"input": [94.0, -55.5], "expected": 94.0}, {"input": [94.0, -55.0], "expected": 94.0}, {"input": [94.0, -54.5], "expected": 94.0}, {"input": [94.0, -54.0], "expected": 94.0}, {"input": [94.0, -53.5], "expected": 94.0}, {"input": [94.0, -53.0], "expected": 94.0}, {"input": [94.0, -52.5], "expected": 94.0}, {"input": [94.0, -52.0], "expected": 94.0}, {"input": [94.0, -51.5], "expected": 94.0}, {"input": [94.0, -51.0], "expected": 94.0}, {"input": [94.0, -50.5], "expected": 94.0}, {"input": [94.0, -50.0], "expected": 94.0}, {"input": [94.0, -49.5], "expected": 94.0}, {"input": [94.0, -49.0], "expected": 94.0}, {"input": [94.0, -48.5], "expected": 94.0}, {"input": [94.0, -48.0], "expected": 94.0}, {"input": [94.0, -47.5], "expected": 94.0}, {"input": [94.0, -47.0], "expected": 94.0}, {"input": [94.0, -46.5], "expected": 94.0}, {"input": [94.0, -46.0], "expected": 94.0}, {"input": [94.0, -45.5], "expected": 94.0}, {"input": [94.0, -45.0], "expected": 94.0}, {"input": [94.0, -44.5], "expected": 94.0}, {"input": [94.0, -44.0], "expected": 94.0}, {"input": [94.0, -43.5], "expected": 94.0}, {"input": [94.0, -43.0], "expected": 94.0}, {"input": [94.0, -42.5], "expected": 94.0}, {"input": [94.0, -42.0], "expected": 94.0}, {"input": [94.0, -41.5], "expected": 94.0}, {"input": [94.0, -41.0], "expected": 94.0}, {"input": [94.0, -40.5], "expected": 94.0}, {"input": [94.0, -40.0], "expected": 94.0}, {"input": [94.0, -39.5], "expected": 94.0}, {"input": [94.0, -39.0], "expected": 94.0}, {"input": [94.0, -38.5], "expected": 94.0}, {"input": [94.0, -38.0], "expected": 94.0}, {"input": [94.0, -37.5], "expected": 94.0}, {"input": [94.0, -37.0], "expected": 94.0}, {"input": [94.0, -36.5], "expected": 94.0}, {"input": [94.0, -36.0], "expected": 94.0}, {"input": [94.0, -35.5], "expected": 94.0}, {"input": [94.0, -35.0], "expected": 94.0}, {"input": [94.0, -34.5], "expected": 94.0}, {"input": [94.0, -34.0], "expected": 94.0}, {"input": [94.0, -33.5], "expected": 94.0}, {"input": [94.0, -33.0], "expected": 94.0}, {"input": [94.0, -32.5], "expected": 94.0}, {"input": [94.0, -32.0], "expected": 94.0}, {"input": [94.0, -31.5], "expected": 94.0}, {"input": [94.0, -31.0], "expected": 94.0}, {"input": [94.0, -30.5], "expected": 94.0}, {"input": [94.0, -30.0], "expected": 94.0}, {"input": [94.0, -29.5], "expected": 94.0}, {"input": [94.0, -29.0], "expected": 94.0}, {"input": [94.0, -28.5], "expected": 94.0}, {"input": [94.0, -28.0], "expected": 94.0}, {"input": [94.0, -27.5], "expected": 94.0}, {"input": [94.0, -27.0], "expected": 94.0}, {"input": [94.0, -26.5], "expected": 94.0}, {"input": [94.0, -26.0], "expected": 94.0}, {"input": [94.0, -25.5], "expected": 94.0}, {"input": [94.0, -25.0], "expected": 94.0}, {"input": [94.0, -24.5], "expected": 94.0}, {"input": [94.0, -24.0], "expected": 94.0}, {"input": [94.0, -23.5], "expected": 94.0}, {"input": [94.0, -23.0], "expected": 94.0}, {"input": [94.0, -22.5], "expected": 94.0}, {"input": [94.0, -22.0], "expected": 94.0}, {"input": [94.0, -21.5], "expected": 94.0}, {"input": [94.0, -21.0], "expected": 94.0}, {"input": [94.0, -20.5], "expected": 94.0}, {"input": [94.0, -20.0], "expected": 94.0}, {"input": [94.0, -19.5], "expected": 94.0}, {"input": [94.0, -19.0], "expected": 94.0}, {"input": [94.0, -18.5], "expected": 94.0}, {"input": [94.0, -18.0], "expected": 94.0}, {"input": [94.0, -17.5], "expected": 94.0}, {"input": [94.0, -17.0], "expected": 94.0}, {"input": [94.0, -16.5], "expected": 94.0}, {"input": [94.0, -16.0], "expected": 94.0}, {"input": [94.0, -15.5], "expected": 94.0}, {"input": [94.0, -15.0], "expected": 94.0}, {"input": [94.0, -14.5], "expected": 94.0}, {"input": [94.0, -14.0], "expected": 94.0}, {"input": [94.0, -13.5], "expected": 94.0}, {"input": [94.0, -13.0], "expected": 94.0}, {"input": [94.0, -12.5], "expected": 94.0}, {"input": [94.0, -12.0], "expected": 94.0}, {"input": [94.0, -11.5], "expected": 94.0}, {"input": [94.0, -11.0], "expected": 94.0}, {"input": [94.0, -10.5], "expected": 94.0}, {"input": [94.0, -10.0], "expected": 94.0}, {"input": [94.0, -9.5], "expected": 94.0}, {"input": [94.0, -9.0], "expected": 94.0}, {"input": [94.0, -8.5], "expected": 94.0}, {"input": [94.0, -8.0], "expected": 94.0}, {"input": [94.0, -7.5], "expected": 94.0}, {"input": [94.0, -7.0], "expected": 94.0}, {"input": [94.0, -6.5], "expected": 94.0}, {"input": [94.0, -6.0], "expected": 94.0}, {"input": [94.0, -5.5], "expected": 94.0}, {"input": [94.0, -5.0], "expected": 94.0}, {"input": [94.0, -4.5], "expected": 94.0}, {"input": [94.0, -4.0], "expected": 94.0}, {"input": [94.0, -3.5], "expected": 94.0}, {"input": [94.0, -3.0], "expected": 94.0}, {"input": [94.0, -2.5], "expected": 94.0}, {"input": [94.0, -2.0], "expected": 94.0}, {"input": [94.0, -1.5], "expected": 94.0}, {"input": [94.0, -1.0], "expected": 94.0}, {"input": [94.0, -0.5], "expected": 94.0}, {"input": [94.0, 0.0], "expected": 94.0}, {"input": [94.0, 0.5], "expected": 94.0}, {"input": [94.0, 1.0], "expected": 94.0}, {"input": [94.0, 1.5], "expected": 94.0}, {"input": [94.0, 2.0], "expected": 94.0}, {"input": [94.0, 2.5], "expected": 94.0}, {"input": [94.0, 3.0], "expected": 94.0}, {"input": [94.0, 3.5], "expected": 94.0}, {"input": [94.0, 4.0], "expected": 94.0}, {"input": [94.0, 4.5], "expected": 94.0}, {"input": [94.0, 5.0], "expected": 94.0}, {"input": [94.0, 5.5], "expected": 94.0}, {"input": [94.0, 6.0], "expected": 94.0}, {"input": [94.0, 6.5], "expected": 94.0}, {"input": [94.0, 7.0], "expected": 94.0}, {"input": [94.0, 7.5], "expected": 94.0}, {"input": [94.0, 8.0], "expected": 94.0}, {"input": [94.0, 8.5], "expected": 94.0}, {"input": [94.0, 9.0], "expected": 94.0}, {"input": [94.0, 9.5], "expected": 94.0}, {"input": [94.0, 10.0], "expected": 94.0}, {"input": [94.0, 10.5], "expected": 94.0}, {"input": [94.0, 11.0], "expected": 94.0}, {"input": [94.0, 11.5], "expected": 94.0}, {"input": [94.0, 12.0], "expected": 94.0}, {"input": [94.0, 12.5], "expected": 94.0}, {"input": [94.0, 13.0], "expected": 94.0}, {"input": [94.0, 13.5], "expected": 94.0}, {"input": [94.0, 14.0], "expected": 94.0}, {"input": [94.0, 14.5], "expected": 94.0}, {"input": [94.0, 15.0], "expected": 94.0}, {"input": [94.0, 15.5], "expected": 94.0}, {"input": [94.0, 16.0], "expected": 94.0}, {"input": [94.0, 16.5], "expected": 94.0}, {"input": [94.0, 17.0], "expected": 94.0}, {"input": [94.0, 17.5], "expected": 94.0}, {"input": [94.0, 18.0], "expected": 94.0}, {"input": [94.0, 18.5], "expected": 94.0}, {"input": [94.0, 19.0], "expected": 94.0}, {"input": [94.0, 19.5], "expected": 94.0}, {"input": [94.0, 20.0], "expected": 94.0}, {"input": [94.0, 20.5], "expected": 94.0}, {"input": [94.0, 21.0], "expected": 94.0}, {"input": [94.0, 21.5], "expected": 94.0}, {"input": [94.0, 22.0], "expected": 94.0}, {"input": [94.0, 22.5], "expected": 94.0}, {"input": [94.0, 23.0], "expected": 94.0}, {"input": [94.0, 23.5], "expected": 94.0}, {"input": [94.0, 24.0], "expected": 94.0}, {"input": [94.0, 24.5], "expected": 94.0}, {"input": [94.0, 25.0], "expected": 94.0}, {"input": [94.0, 25.5], "expected": 94.0}, {"input": [94.0, 26.0], "expected": 94.0}, {"input": [94.0, 26.5], "expected": 94.0}, {"input": [94.0, 27.0], "expected": 94.0}, {"input": [94.0, 27.5], "expected": 94.0}, {"input": [94.0, 28.0], "expected": 94.0}, {"input": [94.0, 28.5], "expected": 94.0}, {"input": [94.0, 29.0], "expected": 94.0}, {"input": [94.0, 29.5], "expected": 94.0}, {"input": [94.0, 30.0], "expected": 94.0}, {"input": [94.0, 30.5], "expected": 94.0}, {"input": [94.0, 31.0], "expected": 94.0}, {"input": [94.0, 31.5], "expected": 94.0}, {"input": [94.0, 32.0], "expected": 94.0}, {"input": [94.0, 32.5], "expected": 94.0}, {"input": [94.0, 33.0], "expected": 94.0}, {"input": [94.0, 33.5], "expected": 94.0}, {"input": [94.0, 34.0], "expected": 94.0}, {"input": [94.0, 34.5], "expected": 94.0}, {"input": [94.0, 35.0], "expected": 94.0}, {"input": [94.0, 35.5], "expected": 94.0}, {"input": [94.0, 36.0], "expected": 94.0}, {"input": [94.0, 36.5], "expected": 94.0}, {"input": [94.0, 37.0], "expected": 94.0}, {"input": [94.0, 37.5], "expected": 94.0}, {"input": [94.0, 38.0], "expected": 94.0}, {"input": [94.0, 38.5], "expected": 94.0}, {"input": [94.0, 39.0], "expected": 94.0}, {"input": [94.0, 39.5], "expected": 94.0}, {"input": [94.0, 40.0], "expected": 94.0}, {"input": [94.0, 40.5], "expected": 94.0}, {"input": [94.0, 41.0], "expected": 94.0}, {"input": [94.0, 41.5], "expected": 94.0}, {"input": [94.0, 42.0], "expected": 94.0}, {"input": [94.0, 42.5], "expected": 94.0}, {"input": [94.0, 43.0], "expected": 94.0}, {"input": [94.0, 43.5], "expected": 94.0}, {"input": [94.0, 44.0], "expected": 94.0}, {"input": [94.0, 44.5], "expected": 94.0}, {"input": [94.0, 45.0], "expected": 94.0}, {"input": [94.0, 45.5], "expected": 94.0}, {"input": [94.0, 46.0], "expected": 94.0}, {"input": [94.0, 46.5], "expected": 94.0}, {"input": [94.0, 47.0], "expected": 94.0}, {"input": [94.0, 47.5], "expected": 94.0}, {"input": [94.0, 48.0], "expected": 94.0}, {"input": [94.0, 48.5], "expected": 94.0}, {"input": [94.0, 49.0], "expected": 94.0}, {"input": [94.0, 49.5], "expected": 94.0}, {"input": [94.0, 50.0], "expected": 94.0}, {"input": [94.0, 50.5], "expected": 94.0}, {"input": [94.0, 51.0], "expected": 94.0}, {"input": [94.0, 51.5], "expected": 94.0}, {"input": [94.0, 52.0], "expected": 94.0}, {"input": [94.0, 52.5], "expected": 94.0}, {"input": [94.0, 53.0], "expected": 94.0}, {"input": [94.0, 53.5], "expected": 94.0}, {"input": [94.0, 54.0], "expected": 94.0}, {"input": [94.0, 54.5], "expected": 94.0}, {"input": [94.0, 55.0], "expected": 94.0}, {"input": [94.0, 55.5], "expected": 94.0}, {"input": [94.0, 56.0], "expected": 94.0}, {"input": [94.0, 56.5], "expected": 94.0}, {"input": [94.0, 57.0], "expected": 94.0}, {"input": [94.0, 57.5], "expected": 94.0}, {"input": [94.0, 58.0], "expected": 94.0}, {"input": [94.0, 58.5], "expected": 94.0}, {"input": [94.0, 59.0], "expected": 94.0}, {"input": [94.0, 59.5], "expected": 94.0}, {"input": [94.0, 60.0], "expected": 94.0}, {"input": [94.0, 60.5], "expected": 94.0}, {"input": [94.0, 61.0], "expected": 94.0}, {"input": [94.0, 61.5], "expected": 94.00000000000001}, {"input": [94.0, 62.0], "expected": 94.00000000000001}, {"input": [94.0, 62.5], "expected": 94.00000000000001}, {"input": [94.0, 63.0], "expected": 94.00000000000003}, {"input": [94.0, 63.5], "expected": 94.00000000000006}, {"input": [94.0, 64.0], "expected": 94.0000000000001}, {"input": [94.0, 64.5], "expected": 94.00000000000016}, {"input": [94.0, 65.0], "expected": 94.00000000000026}, {"input": [94.0, 65.5], "expected": 94.00000000000043}, {"input": [94.0, 66.0], "expected": 94.0000000000007}, {"input": [94.0, 66.5], "expected": 94.00000000000114}, {"input": [94.0, 67.0], "expected": 94.00000000000188}, {"input": [94.0, 67.5], "expected": 94.0000000000031}, {"input": [94.0, 68.0], "expected": 94.00000000000512}, {"input": [94.0, 68.5], "expected": 94.00000000000843}, {"input": [94.0, 69.0], "expected": 94.00000000001388}, {"input": [94.0, 69.5], "expected": 94.0000000000229}, {"input": [94.0, 70.0], "expected": 94.00000000003776}, {"input": [94.0, 70.5], "expected": 94.00000000006224}, {"input": [94.0, 71.0], "expected": 94.00000000010262}, {"input": [94.0, 71.5], "expected": 94.0000000001692}, {"input": [94.0, 72.0], "expected": 94.00000000027894}, {"input": [94.0, 72.5], "expected": 94.0000000004599}, {"input": [94.0, 73.0], "expected": 94.00000000075826}, {"input": [94.0, 73.5], "expected": 94.00000000125016}, {"input": [94.0, 74.0], "expected": 94.00000000206116}, {"input": [94.0, 74.5], "expected": 94.00000000339827}, {"input": [94.0, 75.0], "expected": 94.0000000056028}, {"input": [94.0, 75.5], "expected": 94.00000000923745}, {"input": [94.0, 76.0], "expected": 94.00000001522999}, {"input": [94.0, 76.5], "expected": 94.00000002511}, {"input": [94.0, 77.0], "expected": 94.00000004139937}, {"input": [94.0, 77.5], "expected": 94.00000006825603}, {"input": [94.0, 78.0], "expected": 94.00000011253516}, {"input": [94.0, 78.5], "expected": 94.00000018553912}, {"input": [94.0, 79.0], "expected": 94.00000030590228}, {"input": [94.0, 79.5], "expected": 94.00000050434754}, {"input": [94.0, 80.0], "expected": 94.00000083152837}, {"input": [94.0, 80.5], "expected": 94.00000137095815}, {"input": [94.0, 81.0], "expected": 94.00000226032685}, {"input": [94.0, 81.5], "expected": 94.00000372664623}, {"input": [94.0, 82.0], "expected": 94.00000614419348}, {"input": [94.0, 82.5], "expected": 94.00001013004228}, {"input": [94.0, 83.0], "expected": 94.00001670156132}, {"input": [94.0, 83.5], "expected": 94.00002753607023}, {"input": [94.0, 84.0], "expected": 94.00004539889922}, {"input": [94.0, 84.5], "expected": 94.00007484902864}, {"input": [94.0, 85.0], "expected": 94.00012340218973}, {"input": [94.0, 85.5], "expected": 94.00020344767213}, {"input": [94.0, 86.0], "expected": 94.0003354063729}, {"input": [94.0, 86.5], "expected": 94.00055293147535}, {"input": [94.0, 87.0], "expected": 94.00091146645377}, {"input": [94.0, 87.5], "expected": 94.00150231015975}, {"input": [94.0, 88.0], "expected": 94.00247568513772}, {"input": [94.0, 88.5], "expected": 94.00407844327057}, {"input": [94.0, 89.0], "expected": 94.00671534848912}, {"input": [94.0, 89.5], "expected": 94.0110477448486}, {"input": [94.0, 90.0], "expected": 94.0181499279178}, {"input": [94.0, 90.5], "expected": 94.02975041827263}, {"input": [94.0, 91.0], "expected": 94.04858735157374}, {"input": [94.0, 91.5], "expected": 94.07888973429255}, {"input": [94.0, 92.0], "expected": 94.12692801104298}, {"input": [94.0, 92.5], "expected": 94.20141327798275}, {"input": [94.0, 93.0], "expected": 94.31326168751822}, {"input": [94.0, 93.5], "expected": 94.4740769841801}, {"input": [94.0, 94.0], "expected": 94.69314718055995}, {"input": [94.0, 94.5], "expected": 94.9740769841801}, {"input": [94.0, 95.0], "expected": 95.31326168751822}, {"input": [94.0, 95.5], "expected": 95.70141327798275}, {"input": [94.0, 96.0], "expected": 96.12692801104298}, {"input": [94.0, 96.5], "expected": 96.57888973429255}, {"input": [94.0, 97.0], "expected": 97.04858735157374}, {"input": [94.0, 97.5], "expected": 97.52975041827263}, {"input": [94.0, 98.0], "expected": 98.0181499279178}, {"input": [94.0, 98.5], "expected": 98.5110477448486}, {"input": [94.0, 99.0], "expected": 99.00671534848912}, {"input": [94.0, 99.5], "expected": 99.50407844327057}, {"input": [94.5, -100.0], "expected": 94.5}, {"input": [94.5, -99.5], "expected": 94.5}, {"input": [94.5, -99.0], "expected": 94.5}, {"input": [94.5, -98.5], "expected": 94.5}, {"input": [94.5, -98.0], "expected": 94.5}, {"input": [94.5, -97.5], "expected": 94.5}, {"input": [94.5, -97.0], "expected": 94.5}, {"input": [94.5, -96.5], "expected": 94.5}, {"input": [94.5, -96.0], "expected": 94.5}, {"input": [94.5, -95.5], "expected": 94.5}, {"input": [94.5, -95.0], "expected": 94.5}, {"input": [94.5, -94.5], "expected": 94.5}, {"input": [94.5, -94.0], "expected": 94.5}, {"input": [94.5, -93.5], "expected": 94.5}, {"input": [94.5, -93.0], "expected": 94.5}, {"input": [94.5, -92.5], "expected": 94.5}, {"input": [94.5, -92.0], "expected": 94.5}, {"input": [94.5, -91.5], "expected": 94.5}, {"input": [94.5, -91.0], "expected": 94.5}, {"input": [94.5, -90.5], "expected": 94.5}, {"input": [94.5, -90.0], "expected": 94.5}, {"input": [94.5, -89.5], "expected": 94.5}, {"input": [94.5, -89.0], "expected": 94.5}, {"input": [94.5, -88.5], "expected": 94.5}, {"input": [94.5, -88.0], "expected": 94.5}, {"input": [94.5, -87.5], "expected": 94.5}, {"input": [94.5, -87.0], "expected": 94.5}, {"input": [94.5, -86.5], "expected": 94.5}, {"input": [94.5, -86.0], "expected": 94.5}, {"input": [94.5, -85.5], "expected": 94.5}, {"input": [94.5, -85.0], "expected": 94.5}, {"input": [94.5, -84.5], "expected": 94.5}, {"input": [94.5, -84.0], "expected": 94.5}, {"input": [94.5, -83.5], "expected": 94.5}, {"input": [94.5, -83.0], "expected": 94.5}, {"input": [94.5, -82.5], "expected": 94.5}, {"input": [94.5, -82.0], "expected": 94.5}, {"input": [94.5, -81.5], "expected": 94.5}, {"input": [94.5, -81.0], "expected": 94.5}, {"input": [94.5, -80.5], "expected": 94.5}, {"input": [94.5, -80.0], "expected": 94.5}, {"input": [94.5, -79.5], "expected": 94.5}, {"input": [94.5, -79.0], "expected": 94.5}, {"input": [94.5, -78.5], "expected": 94.5}, {"input": [94.5, -78.0], "expected": 94.5}, {"input": [94.5, -77.5], "expected": 94.5}, {"input": [94.5, -77.0], "expected": 94.5}, {"input": [94.5, -76.5], "expected": 94.5}, {"input": [94.5, -76.0], "expected": 94.5}, {"input": [94.5, -75.5], "expected": 94.5}, {"input": [94.5, -75.0], "expected": 94.5}, {"input": [94.5, -74.5], "expected": 94.5}, {"input": [94.5, -74.0], "expected": 94.5}, {"input": [94.5, -73.5], "expected": 94.5}, {"input": [94.5, -73.0], "expected": 94.5}, {"input": [94.5, -72.5], "expected": 94.5}, {"input": [94.5, -72.0], "expected": 94.5}, {"input": [94.5, -71.5], "expected": 94.5}, {"input": [94.5, -71.0], "expected": 94.5}, {"input": [94.5, -70.5], "expected": 94.5}, {"input": [94.5, -70.0], "expected": 94.5}, {"input": [94.5, -69.5], "expected": 94.5}, {"input": [94.5, -69.0], "expected": 94.5}, {"input": [94.5, -68.5], "expected": 94.5}, {"input": [94.5, -68.0], "expected": 94.5}, {"input": [94.5, -67.5], "expected": 94.5}, {"input": [94.5, -67.0], "expected": 94.5}, {"input": [94.5, -66.5], "expected": 94.5}, {"input": [94.5, -66.0], "expected": 94.5}, {"input": [94.5, -65.5], "expected": 94.5}, {"input": [94.5, -65.0], "expected": 94.5}, {"input": [94.5, -64.5], "expected": 94.5}, {"input": [94.5, -64.0], "expected": 94.5}, {"input": [94.5, -63.5], "expected": 94.5}, {"input": [94.5, -63.0], "expected": 94.5}, {"input": [94.5, -62.5], "expected": 94.5}, {"input": [94.5, -62.0], "expected": 94.5}, {"input": [94.5, -61.5], "expected": 94.5}, {"input": [94.5, -61.0], "expected": 94.5}, {"input": [94.5, -60.5], "expected": 94.5}, {"input": [94.5, -60.0], "expected": 94.5}, {"input": [94.5, -59.5], "expected": 94.5}, {"input": [94.5, -59.0], "expected": 94.5}, {"input": [94.5, -58.5], "expected": 94.5}, {"input": [94.5, -58.0], "expected": 94.5}, {"input": [94.5, -57.5], "expected": 94.5}, {"input": [94.5, -57.0], "expected": 94.5}, {"input": [94.5, -56.5], "expected": 94.5}, {"input": [94.5, -56.0], "expected": 94.5}, {"input": [94.5, -55.5], "expected": 94.5}, {"input": [94.5, -55.0], "expected": 94.5}, {"input": [94.5, -54.5], "expected": 94.5}, {"input": [94.5, -54.0], "expected": 94.5}, {"input": [94.5, -53.5], "expected": 94.5}, {"input": [94.5, -53.0], "expected": 94.5}, {"input": [94.5, -52.5], "expected": 94.5}, {"input": [94.5, -52.0], "expected": 94.5}, {"input": [94.5, -51.5], "expected": 94.5}, {"input": [94.5, -51.0], "expected": 94.5}, {"input": [94.5, -50.5], "expected": 94.5}, {"input": [94.5, -50.0], "expected": 94.5}, {"input": [94.5, -49.5], "expected": 94.5}, {"input": [94.5, -49.0], "expected": 94.5}, {"input": [94.5, -48.5], "expected": 94.5}, {"input": [94.5, -48.0], "expected": 94.5}, {"input": [94.5, -47.5], "expected": 94.5}, {"input": [94.5, -47.0], "expected": 94.5}, {"input": [94.5, -46.5], "expected": 94.5}, {"input": [94.5, -46.0], "expected": 94.5}, {"input": [94.5, -45.5], "expected": 94.5}, {"input": [94.5, -45.0], "expected": 94.5}, {"input": [94.5, -44.5], "expected": 94.5}, {"input": [94.5, -44.0], "expected": 94.5}, {"input": [94.5, -43.5], "expected": 94.5}, {"input": [94.5, -43.0], "expected": 94.5}, {"input": [94.5, -42.5], "expected": 94.5}, {"input": [94.5, -42.0], "expected": 94.5}, {"input": [94.5, -41.5], "expected": 94.5}, {"input": [94.5, -41.0], "expected": 94.5}, {"input": [94.5, -40.5], "expected": 94.5}, {"input": [94.5, -40.0], "expected": 94.5}, {"input": [94.5, -39.5], "expected": 94.5}, {"input": [94.5, -39.0], "expected": 94.5}, {"input": [94.5, -38.5], "expected": 94.5}, {"input": [94.5, -38.0], "expected": 94.5}, {"input": [94.5, -37.5], "expected": 94.5}, {"input": [94.5, -37.0], "expected": 94.5}, {"input": [94.5, -36.5], "expected": 94.5}, {"input": [94.5, -36.0], "expected": 94.5}, {"input": [94.5, -35.5], "expected": 94.5}, {"input": [94.5, -35.0], "expected": 94.5}, {"input": [94.5, -34.5], "expected": 94.5}, {"input": [94.5, -34.0], "expected": 94.5}, {"input": [94.5, -33.5], "expected": 94.5}, {"input": [94.5, -33.0], "expected": 94.5}, {"input": [94.5, -32.5], "expected": 94.5}, {"input": [94.5, -32.0], "expected": 94.5}, {"input": [94.5, -31.5], "expected": 94.5}, {"input": [94.5, -31.0], "expected": 94.5}, {"input": [94.5, -30.5], "expected": 94.5}, {"input": [94.5, -30.0], "expected": 94.5}, {"input": [94.5, -29.5], "expected": 94.5}, {"input": [94.5, -29.0], "expected": 94.5}, {"input": [94.5, -28.5], "expected": 94.5}, {"input": [94.5, -28.0], "expected": 94.5}, {"input": [94.5, -27.5], "expected": 94.5}, {"input": [94.5, -27.0], "expected": 94.5}, {"input": [94.5, -26.5], "expected": 94.5}, {"input": [94.5, -26.0], "expected": 94.5}, {"input": [94.5, -25.5], "expected": 94.5}, {"input": [94.5, -25.0], "expected": 94.5}, {"input": [94.5, -24.5], "expected": 94.5}, {"input": [94.5, -24.0], "expected": 94.5}, {"input": [94.5, -23.5], "expected": 94.5}, {"input": [94.5, -23.0], "expected": 94.5}, {"input": [94.5, -22.5], "expected": 94.5}, {"input": [94.5, -22.0], "expected": 94.5}, {"input": [94.5, -21.5], "expected": 94.5}, {"input": [94.5, -21.0], "expected": 94.5}, {"input": [94.5, -20.5], "expected": 94.5}, {"input": [94.5, -20.0], "expected": 94.5}, {"input": [94.5, -19.5], "expected": 94.5}, {"input": [94.5, -19.0], "expected": 94.5}, {"input": [94.5, -18.5], "expected": 94.5}, {"input": [94.5, -18.0], "expected": 94.5}, {"input": [94.5, -17.5], "expected": 94.5}, {"input": [94.5, -17.0], "expected": 94.5}, {"input": [94.5, -16.5], "expected": 94.5}, {"input": [94.5, -16.0], "expected": 94.5}, {"input": [94.5, -15.5], "expected": 94.5}, {"input": [94.5, -15.0], "expected": 94.5}, {"input": [94.5, -14.5], "expected": 94.5}, {"input": [94.5, -14.0], "expected": 94.5}, {"input": [94.5, -13.5], "expected": 94.5}, {"input": [94.5, -13.0], "expected": 94.5}, {"input": [94.5, -12.5], "expected": 94.5}, {"input": [94.5, -12.0], "expected": 94.5}, {"input": [94.5, -11.5], "expected": 94.5}, {"input": [94.5, -11.0], "expected": 94.5}, {"input": [94.5, -10.5], "expected": 94.5}, {"input": [94.5, -10.0], "expected": 94.5}, {"input": [94.5, -9.5], "expected": 94.5}, {"input": [94.5, -9.0], "expected": 94.5}, {"input": [94.5, -8.5], "expected": 94.5}, {"input": [94.5, -8.0], "expected": 94.5}, {"input": [94.5, -7.5], "expected": 94.5}, {"input": [94.5, -7.0], "expected": 94.5}, {"input": [94.5, -6.5], "expected": 94.5}, {"input": [94.5, -6.0], "expected": 94.5}, {"input": [94.5, -5.5], "expected": 94.5}, {"input": [94.5, -5.0], "expected": 94.5}, {"input": [94.5, -4.5], "expected": 94.5}, {"input": [94.5, -4.0], "expected": 94.5}, {"input": [94.5, -3.5], "expected": 94.5}, {"input": [94.5, -3.0], "expected": 94.5}, {"input": [94.5, -2.5], "expected": 94.5}, {"input": [94.5, -2.0], "expected": 94.5}, {"input": [94.5, -1.5], "expected": 94.5}, {"input": [94.5, -1.0], "expected": 94.5}, {"input": [94.5, -0.5], "expected": 94.5}, {"input": [94.5, 0.0], "expected": 94.5}, {"input": [94.5, 0.5], "expected": 94.5}, {"input": [94.5, 1.0], "expected": 94.5}, {"input": [94.5, 1.5], "expected": 94.5}, {"input": [94.5, 2.0], "expected": 94.5}, {"input": [94.5, 2.5], "expected": 94.5}, {"input": [94.5, 3.0], "expected": 94.5}, {"input": [94.5, 3.5], "expected": 94.5}, {"input": [94.5, 4.0], "expected": 94.5}, {"input": [94.5, 4.5], "expected": 94.5}, {"input": [94.5, 5.0], "expected": 94.5}, {"input": [94.5, 5.5], "expected": 94.5}, {"input": [94.5, 6.0], "expected": 94.5}, {"input": [94.5, 6.5], "expected": 94.5}, {"input": [94.5, 7.0], "expected": 94.5}, {"input": [94.5, 7.5], "expected": 94.5}, {"input": [94.5, 8.0], "expected": 94.5}, {"input": [94.5, 8.5], "expected": 94.5}, {"input": [94.5, 9.0], "expected": 94.5}, {"input": [94.5, 9.5], "expected": 94.5}, {"input": [94.5, 10.0], "expected": 94.5}, {"input": [94.5, 10.5], "expected": 94.5}, {"input": [94.5, 11.0], "expected": 94.5}, {"input": [94.5, 11.5], "expected": 94.5}, {"input": [94.5, 12.0], "expected": 94.5}, {"input": [94.5, 12.5], "expected": 94.5}, {"input": [94.5, 13.0], "expected": 94.5}, {"input": [94.5, 13.5], "expected": 94.5}, {"input": [94.5, 14.0], "expected": 94.5}, {"input": [94.5, 14.5], "expected": 94.5}, {"input": [94.5, 15.0], "expected": 94.5}, {"input": [94.5, 15.5], "expected": 94.5}, {"input": [94.5, 16.0], "expected": 94.5}, {"input": [94.5, 16.5], "expected": 94.5}, {"input": [94.5, 17.0], "expected": 94.5}, {"input": [94.5, 17.5], "expected": 94.5}, {"input": [94.5, 18.0], "expected": 94.5}, {"input": [94.5, 18.5], "expected": 94.5}, {"input": [94.5, 19.0], "expected": 94.5}, {"input": [94.5, 19.5], "expected": 94.5}, {"input": [94.5, 20.0], "expected": 94.5}, {"input": [94.5, 20.5], "expected": 94.5}, {"input": [94.5, 21.0], "expected": 94.5}, {"input": [94.5, 21.5], "expected": 94.5}, {"input": [94.5, 22.0], "expected": 94.5}, {"input": [94.5, 22.5], "expected": 94.5}, {"input": [94.5, 23.0], "expected": 94.5}, {"input": [94.5, 23.5], "expected": 94.5}, {"input": [94.5, 24.0], "expected": 94.5}, {"input": [94.5, 24.5], "expected": 94.5}, {"input": [94.5, 25.0], "expected": 94.5}, {"input": [94.5, 25.5], "expected": 94.5}, {"input": [94.5, 26.0], "expected": 94.5}, {"input": [94.5, 26.5], "expected": 94.5}, {"input": [94.5, 27.0], "expected": 94.5}, {"input": [94.5, 27.5], "expected": 94.5}, {"input": [94.5, 28.0], "expected": 94.5}, {"input": [94.5, 28.5], "expected": 94.5}, {"input": [94.5, 29.0], "expected": 94.5}, {"input": [94.5, 29.5], "expected": 94.5}, {"input": [94.5, 30.0], "expected": 94.5}, {"input": [94.5, 30.5], "expected": 94.5}, {"input": [94.5, 31.0], "expected": 94.5}, {"input": [94.5, 31.5], "expected": 94.5}, {"input": [94.5, 32.0], "expected": 94.5}, {"input": [94.5, 32.5], "expected": 94.5}, {"input": [94.5, 33.0], "expected": 94.5}, {"input": [94.5, 33.5], "expected": 94.5}, {"input": [94.5, 34.0], "expected": 94.5}, {"input": [94.5, 34.5], "expected": 94.5}, {"input": [94.5, 35.0], "expected": 94.5}, {"input": [94.5, 35.5], "expected": 94.5}, {"input": [94.5, 36.0], "expected": 94.5}, {"input": [94.5, 36.5], "expected": 94.5}, {"input": [94.5, 37.0], "expected": 94.5}, {"input": [94.5, 37.5], "expected": 94.5}, {"input": [94.5, 38.0], "expected": 94.5}, {"input": [94.5, 38.5], "expected": 94.5}, {"input": [94.5, 39.0], "expected": 94.5}, {"input": [94.5, 39.5], "expected": 94.5}, {"input": [94.5, 40.0], "expected": 94.5}, {"input": [94.5, 40.5], "expected": 94.5}, {"input": [94.5, 41.0], "expected": 94.5}, {"input": [94.5, 41.5], "expected": 94.5}, {"input": [94.5, 42.0], "expected": 94.5}, {"input": [94.5, 42.5], "expected": 94.5}, {"input": [94.5, 43.0], "expected": 94.5}, {"input": [94.5, 43.5], "expected": 94.5}, {"input": [94.5, 44.0], "expected": 94.5}, {"input": [94.5, 44.5], "expected": 94.5}, {"input": [94.5, 45.0], "expected": 94.5}, {"input": [94.5, 45.5], "expected": 94.5}, {"input": [94.5, 46.0], "expected": 94.5}, {"input": [94.5, 46.5], "expected": 94.5}, {"input": [94.5, 47.0], "expected": 94.5}, {"input": [94.5, 47.5], "expected": 94.5}, {"input": [94.5, 48.0], "expected": 94.5}, {"input": [94.5, 48.5], "expected": 94.5}, {"input": [94.5, 49.0], "expected": 94.5}, {"input": [94.5, 49.5], "expected": 94.5}, {"input": [94.5, 50.0], "expected": 94.5}, {"input": [94.5, 50.5], "expected": 94.5}, {"input": [94.5, 51.0], "expected": 94.5}, {"input": [94.5, 51.5], "expected": 94.5}, {"input": [94.5, 52.0], "expected": 94.5}, {"input": [94.5, 52.5], "expected": 94.5}, {"input": [94.5, 53.0], "expected": 94.5}, {"input": [94.5, 53.5], "expected": 94.5}, {"input": [94.5, 54.0], "expected": 94.5}, {"input": [94.5, 54.5], "expected": 94.5}, {"input": [94.5, 55.0], "expected": 94.5}, {"input": [94.5, 55.5], "expected": 94.5}, {"input": [94.5, 56.0], "expected": 94.5}, {"input": [94.5, 56.5], "expected": 94.5}, {"input": [94.5, 57.0], "expected": 94.5}, {"input": [94.5, 57.5], "expected": 94.5}, {"input": [94.5, 58.0], "expected": 94.5}, {"input": [94.5, 58.5], "expected": 94.5}, {"input": [94.5, 59.0], "expected": 94.5}, {"input": [94.5, 59.5], "expected": 94.5}, {"input": [94.5, 60.0], "expected": 94.5}, {"input": [94.5, 60.5], "expected": 94.5}, {"input": [94.5, 61.0], "expected": 94.5}, {"input": [94.5, 61.5], "expected": 94.5}, {"input": [94.5, 62.0], "expected": 94.50000000000001}, {"input": [94.5, 62.5], "expected": 94.50000000000001}, {"input": [94.5, 63.0], "expected": 94.50000000000001}, {"input": [94.5, 63.5], "expected": 94.50000000000003}, {"input": [94.5, 64.0], "expected": 94.50000000000006}, {"input": [94.5, 64.5], "expected": 94.5000000000001}, {"input": [94.5, 65.0], "expected": 94.50000000000016}, {"input": [94.5, 65.5], "expected": 94.50000000000026}, {"input": [94.5, 66.0], "expected": 94.50000000000043}, {"input": [94.5, 66.5], "expected": 94.5000000000007}, {"input": [94.5, 67.0], "expected": 94.50000000000114}, {"input": [94.5, 67.5], "expected": 94.50000000000188}, {"input": [94.5, 68.0], "expected": 94.5000000000031}, {"input": [94.5, 68.5], "expected": 94.50000000000512}, {"input": [94.5, 69.0], "expected": 94.50000000000843}, {"input": [94.5, 69.5], "expected": 94.50000000001388}, {"input": [94.5, 70.0], "expected": 94.5000000000229}, {"input": [94.5, 70.5], "expected": 94.50000000003776}, {"input": [94.5, 71.0], "expected": 94.50000000006224}, {"input": [94.5, 71.5], "expected": 94.50000000010262}, {"input": [94.5, 72.0], "expected": 94.5000000001692}, {"input": [94.5, 72.5], "expected": 94.50000000027894}, {"input": [94.5, 73.0], "expected": 94.5000000004599}, {"input": [94.5, 73.5], "expected": 94.50000000075826}, {"input": [94.5, 74.0], "expected": 94.50000000125016}, {"input": [94.5, 74.5], "expected": 94.50000000206116}, {"input": [94.5, 75.0], "expected": 94.50000000339827}, {"input": [94.5, 75.5], "expected": 94.5000000056028}, {"input": [94.5, 76.0], "expected": 94.50000000923745}, {"input": [94.5, 76.5], "expected": 94.50000001522999}, {"input": [94.5, 77.0], "expected": 94.50000002511}, {"input": [94.5, 77.5], "expected": 94.50000004139937}, {"input": [94.5, 78.0], "expected": 94.50000006825603}, {"input": [94.5, 78.5], "expected": 94.50000011253516}, {"input": [94.5, 79.0], "expected": 94.50000018553912}, {"input": [94.5, 79.5], "expected": 94.50000030590228}, {"input": [94.5, 80.0], "expected": 94.50000050434754}, {"input": [94.5, 80.5], "expected": 94.50000083152837}, {"input": [94.5, 81.0], "expected": 94.50000137095815}, {"input": [94.5, 81.5], "expected": 94.50000226032685}, {"input": [94.5, 82.0], "expected": 94.50000372664623}, {"input": [94.5, 82.5], "expected": 94.50000614419348}, {"input": [94.5, 83.0], "expected": 94.50001013004228}, {"input": [94.5, 83.5], "expected": 94.50001670156132}, {"input": [94.5, 84.0], "expected": 94.50002753607023}, {"input": [94.5, 84.5], "expected": 94.50004539889922}, {"input": [94.5, 85.0], "expected": 94.50007484902864}, {"input": [94.5, 85.5], "expected": 94.50012340218973}, {"input": [94.5, 86.0], "expected": 94.50020344767213}, {"input": [94.5, 86.5], "expected": 94.5003354063729}, {"input": [94.5, 87.0], "expected": 94.50055293147535}, {"input": [94.5, 87.5], "expected": 94.50091146645377}, {"input": [94.5, 88.0], "expected": 94.50150231015975}, {"input": [94.5, 88.5], "expected": 94.50247568513772}, {"input": [94.5, 89.0], "expected": 94.50407844327057}, {"input": [94.5, 89.5], "expected": 94.50671534848912}, {"input": [94.5, 90.0], "expected": 94.5110477448486}, {"input": [94.5, 90.5], "expected": 94.5181499279178}, {"input": [94.5, 91.0], "expected": 94.52975041827263}, {"input": [94.5, 91.5], "expected": 94.54858735157374}, {"input": [94.5, 92.0], "expected": 94.57888973429255}, {"input": [94.5, 92.5], "expected": 94.62692801104298}, {"input": [94.5, 93.0], "expected": 94.70141327798275}, {"input": [94.5, 93.5], "expected": 94.81326168751822}, {"input": [94.5, 94.0], "expected": 94.9740769841801}, {"input": [94.5, 94.5], "expected": 95.19314718055995}, {"input": [94.5, 95.0], "expected": 95.4740769841801}, {"input": [94.5, 95.5], "expected": 95.81326168751822}, {"input": [94.5, 96.0], "expected": 96.20141327798275}, {"input": [94.5, 96.5], "expected": 96.62692801104298}, {"input": [94.5, 97.0], "expected": 97.07888973429255}, {"input": [94.5, 97.5], "expected": 97.54858735157374}, {"input": [94.5, 98.0], "expected": 98.02975041827263}, {"input": [94.5, 98.5], "expected": 98.5181499279178}, {"input": [94.5, 99.0], "expected": 99.0110477448486}, {"input": [94.5, 99.5], "expected": 99.50671534848912}, {"input": [95.0, -100.0], "expected": 95.0}, {"input": [95.0, -99.5], "expected": 95.0}, {"input": [95.0, -99.0], "expected": 95.0}, {"input": [95.0, -98.5], "expected": 95.0}, {"input": [95.0, -98.0], "expected": 95.0}, {"input": [95.0, -97.5], "expected": 95.0}, {"input": [95.0, -97.0], "expected": 95.0}, {"input": [95.0, -96.5], "expected": 95.0}, {"input": [95.0, -96.0], "expected": 95.0}, {"input": [95.0, -95.5], "expected": 95.0}, {"input": [95.0, -95.0], "expected": 95.0}, {"input": [95.0, -94.5], "expected": 95.0}, {"input": [95.0, -94.0], "expected": 95.0}, {"input": [95.0, -93.5], "expected": 95.0}, {"input": [95.0, -93.0], "expected": 95.0}, {"input": [95.0, -92.5], "expected": 95.0}, {"input": [95.0, -92.0], "expected": 95.0}, {"input": [95.0, -91.5], "expected": 95.0}, {"input": [95.0, -91.0], "expected": 95.0}, {"input": [95.0, -90.5], "expected": 95.0}, {"input": [95.0, -90.0], "expected": 95.0}, {"input": [95.0, -89.5], "expected": 95.0}, {"input": [95.0, -89.0], "expected": 95.0}, {"input": [95.0, -88.5], "expected": 95.0}, {"input": [95.0, -88.0], "expected": 95.0}, {"input": [95.0, -87.5], "expected": 95.0}, {"input": [95.0, -87.0], "expected": 95.0}, {"input": [95.0, -86.5], "expected": 95.0}, {"input": [95.0, -86.0], "expected": 95.0}, {"input": [95.0, -85.5], "expected": 95.0}, {"input": [95.0, -85.0], "expected": 95.0}, {"input": [95.0, -84.5], "expected": 95.0}, {"input": [95.0, -84.0], "expected": 95.0}, {"input": [95.0, -83.5], "expected": 95.0}, {"input": [95.0, -83.0], "expected": 95.0}, {"input": [95.0, -82.5], "expected": 95.0}, {"input": [95.0, -82.0], "expected": 95.0}, {"input": [95.0, -81.5], "expected": 95.0}, {"input": [95.0, -81.0], "expected": 95.0}, {"input": [95.0, -80.5], "expected": 95.0}, {"input": [95.0, -80.0], "expected": 95.0}, {"input": [95.0, -79.5], "expected": 95.0}, {"input": [95.0, -79.0], "expected": 95.0}, {"input": [95.0, -78.5], "expected": 95.0}, {"input": [95.0, -78.0], "expected": 95.0}, {"input": [95.0, -77.5], "expected": 95.0}, {"input": [95.0, -77.0], "expected": 95.0}, {"input": [95.0, -76.5], "expected": 95.0}, {"input": [95.0, -76.0], "expected": 95.0}, {"input": [95.0, -75.5], "expected": 95.0}, {"input": [95.0, -75.0], "expected": 95.0}, {"input": [95.0, -74.5], "expected": 95.0}, {"input": [95.0, -74.0], "expected": 95.0}, {"input": [95.0, -73.5], "expected": 95.0}, {"input": [95.0, -73.0], "expected": 95.0}, {"input": [95.0, -72.5], "expected": 95.0}, {"input": [95.0, -72.0], "expected": 95.0}, {"input": [95.0, -71.5], "expected": 95.0}, {"input": [95.0, -71.0], "expected": 95.0}, {"input": [95.0, -70.5], "expected": 95.0}, {"input": [95.0, -70.0], "expected": 95.0}, {"input": [95.0, -69.5], "expected": 95.0}, {"input": [95.0, -69.0], "expected": 95.0}, {"input": [95.0, -68.5], "expected": 95.0}, {"input": [95.0, -68.0], "expected": 95.0}, {"input": [95.0, -67.5], "expected": 95.0}, {"input": [95.0, -67.0], "expected": 95.0}, {"input": [95.0, -66.5], "expected": 95.0}, {"input": [95.0, -66.0], "expected": 95.0}, {"input": [95.0, -65.5], "expected": 95.0}, {"input": [95.0, -65.0], "expected": 95.0}, {"input": [95.0, -64.5], "expected": 95.0}, {"input": [95.0, -64.0], "expected": 95.0}, {"input": [95.0, -63.5], "expected": 95.0}, {"input": [95.0, -63.0], "expected": 95.0}, {"input": [95.0, -62.5], "expected": 95.0}, {"input": [95.0, -62.0], "expected": 95.0}, {"input": [95.0, -61.5], "expected": 95.0}, {"input": [95.0, -61.0], "expected": 95.0}, {"input": [95.0, -60.5], "expected": 95.0}, {"input": [95.0, -60.0], "expected": 95.0}, {"input": [95.0, -59.5], "expected": 95.0}, {"input": [95.0, -59.0], "expected": 95.0}, {"input": [95.0, -58.5], "expected": 95.0}, {"input": [95.0, -58.0], "expected": 95.0}, {"input": [95.0, -57.5], "expected": 95.0}, {"input": [95.0, -57.0], "expected": 95.0}, {"input": [95.0, -56.5], "expected": 95.0}, {"input": [95.0, -56.0], "expected": 95.0}, {"input": [95.0, -55.5], "expected": 95.0}, {"input": [95.0, -55.0], "expected": 95.0}, {"input": [95.0, -54.5], "expected": 95.0}, {"input": [95.0, -54.0], "expected": 95.0}, {"input": [95.0, -53.5], "expected": 95.0}, {"input": [95.0, -53.0], "expected": 95.0}, {"input": [95.0, -52.5], "expected": 95.0}, {"input": [95.0, -52.0], "expected": 95.0}, {"input": [95.0, -51.5], "expected": 95.0}, {"input": [95.0, -51.0], "expected": 95.0}, {"input": [95.0, -50.5], "expected": 95.0}, {"input": [95.0, -50.0], "expected": 95.0}, {"input": [95.0, -49.5], "expected": 95.0}, {"input": [95.0, -49.0], "expected": 95.0}, {"input": [95.0, -48.5], "expected": 95.0}, {"input": [95.0, -48.0], "expected": 95.0}, {"input": [95.0, -47.5], "expected": 95.0}, {"input": [95.0, -47.0], "expected": 95.0}, {"input": [95.0, -46.5], "expected": 95.0}, {"input": [95.0, -46.0], "expected": 95.0}, {"input": [95.0, -45.5], "expected": 95.0}, {"input": [95.0, -45.0], "expected": 95.0}, {"input": [95.0, -44.5], "expected": 95.0}, {"input": [95.0, -44.0], "expected": 95.0}, {"input": [95.0, -43.5], "expected": 95.0}, {"input": [95.0, -43.0], "expected": 95.0}, {"input": [95.0, -42.5], "expected": 95.0}, {"input": [95.0, -42.0], "expected": 95.0}, {"input": [95.0, -41.5], "expected": 95.0}, {"input": [95.0, -41.0], "expected": 95.0}, {"input": [95.0, -40.5], "expected": 95.0}, {"input": [95.0, -40.0], "expected": 95.0}, {"input": [95.0, -39.5], "expected": 95.0}, {"input": [95.0, -39.0], "expected": 95.0}, {"input": [95.0, -38.5], "expected": 95.0}, {"input": [95.0, -38.0], "expected": 95.0}, {"input": [95.0, -37.5], "expected": 95.0}, {"input": [95.0, -37.0], "expected": 95.0}, {"input": [95.0, -36.5], "expected": 95.0}, {"input": [95.0, -36.0], "expected": 95.0}, {"input": [95.0, -35.5], "expected": 95.0}, {"input": [95.0, -35.0], "expected": 95.0}, {"input": [95.0, -34.5], "expected": 95.0}, {"input": [95.0, -34.0], "expected": 95.0}, {"input": [95.0, -33.5], "expected": 95.0}, {"input": [95.0, -33.0], "expected": 95.0}, {"input": [95.0, -32.5], "expected": 95.0}, {"input": [95.0, -32.0], "expected": 95.0}, {"input": [95.0, -31.5], "expected": 95.0}, {"input": [95.0, -31.0], "expected": 95.0}, {"input": [95.0, -30.5], "expected": 95.0}, {"input": [95.0, -30.0], "expected": 95.0}, {"input": [95.0, -29.5], "expected": 95.0}, {"input": [95.0, -29.0], "expected": 95.0}, {"input": [95.0, -28.5], "expected": 95.0}, {"input": [95.0, -28.0], "expected": 95.0}, {"input": [95.0, -27.5], "expected": 95.0}, {"input": [95.0, -27.0], "expected": 95.0}, {"input": [95.0, -26.5], "expected": 95.0}, {"input": [95.0, -26.0], "expected": 95.0}, {"input": [95.0, -25.5], "expected": 95.0}, {"input": [95.0, -25.0], "expected": 95.0}, {"input": [95.0, -24.5], "expected": 95.0}, {"input": [95.0, -24.0], "expected": 95.0}, {"input": [95.0, -23.5], "expected": 95.0}, {"input": [95.0, -23.0], "expected": 95.0}, {"input": [95.0, -22.5], "expected": 95.0}, {"input": [95.0, -22.0], "expected": 95.0}, {"input": [95.0, -21.5], "expected": 95.0}, {"input": [95.0, -21.0], "expected": 95.0}, {"input": [95.0, -20.5], "expected": 95.0}, {"input": [95.0, -20.0], "expected": 95.0}, {"input": [95.0, -19.5], "expected": 95.0}, {"input": [95.0, -19.0], "expected": 95.0}, {"input": [95.0, -18.5], "expected": 95.0}, {"input": [95.0, -18.0], "expected": 95.0}, {"input": [95.0, -17.5], "expected": 95.0}, {"input": [95.0, -17.0], "expected": 95.0}, {"input": [95.0, -16.5], "expected": 95.0}, {"input": [95.0, -16.0], "expected": 95.0}, {"input": [95.0, -15.5], "expected": 95.0}, {"input": [95.0, -15.0], "expected": 95.0}, {"input": [95.0, -14.5], "expected": 95.0}, {"input": [95.0, -14.0], "expected": 95.0}, {"input": [95.0, -13.5], "expected": 95.0}, {"input": [95.0, -13.0], "expected": 95.0}, {"input": [95.0, -12.5], "expected": 95.0}, {"input": [95.0, -12.0], "expected": 95.0}, {"input": [95.0, -11.5], "expected": 95.0}, {"input": [95.0, -11.0], "expected": 95.0}, {"input": [95.0, -10.5], "expected": 95.0}, {"input": [95.0, -10.0], "expected": 95.0}, {"input": [95.0, -9.5], "expected": 95.0}, {"input": [95.0, -9.0], "expected": 95.0}, {"input": [95.0, -8.5], "expected": 95.0}, {"input": [95.0, -8.0], "expected": 95.0}, {"input": [95.0, -7.5], "expected": 95.0}, {"input": [95.0, -7.0], "expected": 95.0}, {"input": [95.0, -6.5], "expected": 95.0}, {"input": [95.0, -6.0], "expected": 95.0}, {"input": [95.0, -5.5], "expected": 95.0}, {"input": [95.0, -5.0], "expected": 95.0}, {"input": [95.0, -4.5], "expected": 95.0}, {"input": [95.0, -4.0], "expected": 95.0}, {"input": [95.0, -3.5], "expected": 95.0}, {"input": [95.0, -3.0], "expected": 95.0}, {"input": [95.0, -2.5], "expected": 95.0}, {"input": [95.0, -2.0], "expected": 95.0}, {"input": [95.0, -1.5], "expected": 95.0}, {"input": [95.0, -1.0], "expected": 95.0}, {"input": [95.0, -0.5], "expected": 95.0}, {"input": [95.0, 0.0], "expected": 95.0}, {"input": [95.0, 0.5], "expected": 95.0}, {"input": [95.0, 1.0], "expected": 95.0}, {"input": [95.0, 1.5], "expected": 95.0}, {"input": [95.0, 2.0], "expected": 95.0}, {"input": [95.0, 2.5], "expected": 95.0}, {"input": [95.0, 3.0], "expected": 95.0}, {"input": [95.0, 3.5], "expected": 95.0}, {"input": [95.0, 4.0], "expected": 95.0}, {"input": [95.0, 4.5], "expected": 95.0}, {"input": [95.0, 5.0], "expected": 95.0}, {"input": [95.0, 5.5], "expected": 95.0}, {"input": [95.0, 6.0], "expected": 95.0}, {"input": [95.0, 6.5], "expected": 95.0}, {"input": [95.0, 7.0], "expected": 95.0}, {"input": [95.0, 7.5], "expected": 95.0}, {"input": [95.0, 8.0], "expected": 95.0}, {"input": [95.0, 8.5], "expected": 95.0}, {"input": [95.0, 9.0], "expected": 95.0}, {"input": [95.0, 9.5], "expected": 95.0}, {"input": [95.0, 10.0], "expected": 95.0}, {"input": [95.0, 10.5], "expected": 95.0}, {"input": [95.0, 11.0], "expected": 95.0}, {"input": [95.0, 11.5], "expected": 95.0}, {"input": [95.0, 12.0], "expected": 95.0}, {"input": [95.0, 12.5], "expected": 95.0}, {"input": [95.0, 13.0], "expected": 95.0}, {"input": [95.0, 13.5], "expected": 95.0}, {"input": [95.0, 14.0], "expected": 95.0}, {"input": [95.0, 14.5], "expected": 95.0}, {"input": [95.0, 15.0], "expected": 95.0}, {"input": [95.0, 15.5], "expected": 95.0}, {"input": [95.0, 16.0], "expected": 95.0}, {"input": [95.0, 16.5], "expected": 95.0}, {"input": [95.0, 17.0], "expected": 95.0}, {"input": [95.0, 17.5], "expected": 95.0}, {"input": [95.0, 18.0], "expected": 95.0}, {"input": [95.0, 18.5], "expected": 95.0}, {"input": [95.0, 19.0], "expected": 95.0}, {"input": [95.0, 19.5], "expected": 95.0}, {"input": [95.0, 20.0], "expected": 95.0}, {"input": [95.0, 20.5], "expected": 95.0}, {"input": [95.0, 21.0], "expected": 95.0}, {"input": [95.0, 21.5], "expected": 95.0}, {"input": [95.0, 22.0], "expected": 95.0}, {"input": [95.0, 22.5], "expected": 95.0}, {"input": [95.0, 23.0], "expected": 95.0}, {"input": [95.0, 23.5], "expected": 95.0}, {"input": [95.0, 24.0], "expected": 95.0}, {"input": [95.0, 24.5], "expected": 95.0}, {"input": [95.0, 25.0], "expected": 95.0}, {"input": [95.0, 25.5], "expected": 95.0}, {"input": [95.0, 26.0], "expected": 95.0}, {"input": [95.0, 26.5], "expected": 95.0}, {"input": [95.0, 27.0], "expected": 95.0}, {"input": [95.0, 27.5], "expected": 95.0}, {"input": [95.0, 28.0], "expected": 95.0}, {"input": [95.0, 28.5], "expected": 95.0}, {"input": [95.0, 29.0], "expected": 95.0}, {"input": [95.0, 29.5], "expected": 95.0}, {"input": [95.0, 30.0], "expected": 95.0}, {"input": [95.0, 30.5], "expected": 95.0}, {"input": [95.0, 31.0], "expected": 95.0}, {"input": [95.0, 31.5], "expected": 95.0}, {"input": [95.0, 32.0], "expected": 95.0}, {"input": [95.0, 32.5], "expected": 95.0}, {"input": [95.0, 33.0], "expected": 95.0}, {"input": [95.0, 33.5], "expected": 95.0}, {"input": [95.0, 34.0], "expected": 95.0}, {"input": [95.0, 34.5], "expected": 95.0}, {"input": [95.0, 35.0], "expected": 95.0}, {"input": [95.0, 35.5], "expected": 95.0}, {"input": [95.0, 36.0], "expected": 95.0}, {"input": [95.0, 36.5], "expected": 95.0}, {"input": [95.0, 37.0], "expected": 95.0}, {"input": [95.0, 37.5], "expected": 95.0}, {"input": [95.0, 38.0], "expected": 95.0}, {"input": [95.0, 38.5], "expected": 95.0}, {"input": [95.0, 39.0], "expected": 95.0}, {"input": [95.0, 39.5], "expected": 95.0}, {"input": [95.0, 40.0], "expected": 95.0}, {"input": [95.0, 40.5], "expected": 95.0}, {"input": [95.0, 41.0], "expected": 95.0}, {"input": [95.0, 41.5], "expected": 95.0}, {"input": [95.0, 42.0], "expected": 95.0}, {"input": [95.0, 42.5], "expected": 95.0}, {"input": [95.0, 43.0], "expected": 95.0}, {"input": [95.0, 43.5], "expected": 95.0}, {"input": [95.0, 44.0], "expected": 95.0}, {"input": [95.0, 44.5], "expected": 95.0}, {"input": [95.0, 45.0], "expected": 95.0}, {"input": [95.0, 45.5], "expected": 95.0}, {"input": [95.0, 46.0], "expected": 95.0}, {"input": [95.0, 46.5], "expected": 95.0}, {"input": [95.0, 47.0], "expected": 95.0}, {"input": [95.0, 47.5], "expected": 95.0}, {"input": [95.0, 48.0], "expected": 95.0}, {"input": [95.0, 48.5], "expected": 95.0}, {"input": [95.0, 49.0], "expected": 95.0}, {"input": [95.0, 49.5], "expected": 95.0}, {"input": [95.0, 50.0], "expected": 95.0}, {"input": [95.0, 50.5], "expected": 95.0}, {"input": [95.0, 51.0], "expected": 95.0}, {"input": [95.0, 51.5], "expected": 95.0}, {"input": [95.0, 52.0], "expected": 95.0}, {"input": [95.0, 52.5], "expected": 95.0}, {"input": [95.0, 53.0], "expected": 95.0}, {"input": [95.0, 53.5], "expected": 95.0}, {"input": [95.0, 54.0], "expected": 95.0}, {"input": [95.0, 54.5], "expected": 95.0}, {"input": [95.0, 55.0], "expected": 95.0}, {"input": [95.0, 55.5], "expected": 95.0}, {"input": [95.0, 56.0], "expected": 95.0}, {"input": [95.0, 56.5], "expected": 95.0}, {"input": [95.0, 57.0], "expected": 95.0}, {"input": [95.0, 57.5], "expected": 95.0}, {"input": [95.0, 58.0], "expected": 95.0}, {"input": [95.0, 58.5], "expected": 95.0}, {"input": [95.0, 59.0], "expected": 95.0}, {"input": [95.0, 59.5], "expected": 95.0}, {"input": [95.0, 60.0], "expected": 95.0}, {"input": [95.0, 60.5], "expected": 95.0}, {"input": [95.0, 61.0], "expected": 95.0}, {"input": [95.0, 61.5], "expected": 95.0}, {"input": [95.0, 62.0], "expected": 95.0}, {"input": [95.0, 62.5], "expected": 95.00000000000001}, {"input": [95.0, 63.0], "expected": 95.00000000000001}, {"input": [95.0, 63.5], "expected": 95.00000000000001}, {"input": [95.0, 64.0], "expected": 95.00000000000003}, {"input": [95.0, 64.5], "expected": 95.00000000000006}, {"input": [95.0, 65.0], "expected": 95.0000000000001}, {"input": [95.0, 65.5], "expected": 95.00000000000016}, {"input": [95.0, 66.0], "expected": 95.00000000000026}, {"input": [95.0, 66.5], "expected": 95.00000000000043}, {"input": [95.0, 67.0], "expected": 95.0000000000007}, {"input": [95.0, 67.5], "expected": 95.00000000000114}, {"input": [95.0, 68.0], "expected": 95.00000000000188}, {"input": [95.0, 68.5], "expected": 95.0000000000031}, {"input": [95.0, 69.0], "expected": 95.00000000000512}, {"input": [95.0, 69.5], "expected": 95.00000000000843}, {"input": [95.0, 70.0], "expected": 95.00000000001388}, {"input": [95.0, 70.5], "expected": 95.0000000000229}, {"input": [95.0, 71.0], "expected": 95.00000000003776}, {"input": [95.0, 71.5], "expected": 95.00000000006224}, {"input": [95.0, 72.0], "expected": 95.00000000010262}, {"input": [95.0, 72.5], "expected": 95.0000000001692}, {"input": [95.0, 73.0], "expected": 95.00000000027894}, {"input": [95.0, 73.5], "expected": 95.0000000004599}, {"input": [95.0, 74.0], "expected": 95.00000000075826}, {"input": [95.0, 74.5], "expected": 95.00000000125016}, {"input": [95.0, 75.0], "expected": 95.00000000206116}, {"input": [95.0, 75.5], "expected": 95.00000000339827}, {"input": [95.0, 76.0], "expected": 95.0000000056028}, {"input": [95.0, 76.5], "expected": 95.00000000923745}, {"input": [95.0, 77.0], "expected": 95.00000001522999}, {"input": [95.0, 77.5], "expected": 95.00000002511}, {"input": [95.0, 78.0], "expected": 95.00000004139937}, {"input": [95.0, 78.5], "expected": 95.00000006825603}, {"input": [95.0, 79.0], "expected": 95.00000011253516}, {"input": [95.0, 79.5], "expected": 95.00000018553912}, {"input": [95.0, 80.0], "expected": 95.00000030590228}, {"input": [95.0, 80.5], "expected": 95.00000050434754}, {"input": [95.0, 81.0], "expected": 95.00000083152837}, {"input": [95.0, 81.5], "expected": 95.00000137095815}, {"input": [95.0, 82.0], "expected": 95.00000226032685}, {"input": [95.0, 82.5], "expected": 95.00000372664623}, {"input": [95.0, 83.0], "expected": 95.00000614419348}, {"input": [95.0, 83.5], "expected": 95.00001013004228}, {"input": [95.0, 84.0], "expected": 95.00001670156132}, {"input": [95.0, 84.5], "expected": 95.00002753607023}, {"input": [95.0, 85.0], "expected": 95.00004539889922}, {"input": [95.0, 85.5], "expected": 95.00007484902864}, {"input": [95.0, 86.0], "expected": 95.00012340218973}, {"input": [95.0, 86.5], "expected": 95.00020344767213}, {"input": [95.0, 87.0], "expected": 95.0003354063729}, {"input": [95.0, 87.5], "expected": 95.00055293147535}, {"input": [95.0, 88.0], "expected": 95.00091146645377}, {"input": [95.0, 88.5], "expected": 95.00150231015975}, {"input": [95.0, 89.0], "expected": 95.00247568513772}, {"input": [95.0, 89.5], "expected": 95.00407844327057}, {"input": [95.0, 90.0], "expected": 95.00671534848912}, {"input": [95.0, 90.5], "expected": 95.0110477448486}, {"input": [95.0, 91.0], "expected": 95.0181499279178}, {"input": [95.0, 91.5], "expected": 95.02975041827263}, {"input": [95.0, 92.0], "expected": 95.04858735157374}, {"input": [95.0, 92.5], "expected": 95.07888973429255}, {"input": [95.0, 93.0], "expected": 95.12692801104298}, {"input": [95.0, 93.5], "expected": 95.20141327798275}, {"input": [95.0, 94.0], "expected": 95.31326168751822}, {"input": [95.0, 94.5], "expected": 95.4740769841801}, {"input": [95.0, 95.0], "expected": 95.69314718055995}, {"input": [95.0, 95.5], "expected": 95.9740769841801}, {"input": [95.0, 96.0], "expected": 96.31326168751822}, {"input": [95.0, 96.5], "expected": 96.70141327798275}, {"input": [95.0, 97.0], "expected": 97.12692801104298}, {"input": [95.0, 97.5], "expected": 97.57888973429255}, {"input": [95.0, 98.0], "expected": 98.04858735157374}, {"input": [95.0, 98.5], "expected": 98.52975041827263}, {"input": [95.0, 99.0], "expected": 99.0181499279178}, {"input": [95.0, 99.5], "expected": 99.5110477448486}, {"input": [95.5, -100.0], "expected": 95.5}, {"input": [95.5, -99.5], "expected": 95.5}, {"input": [95.5, -99.0], "expected": 95.5}, {"input": [95.5, -98.5], "expected": 95.5}, {"input": [95.5, -98.0], "expected": 95.5}, {"input": [95.5, -97.5], "expected": 95.5}, {"input": [95.5, -97.0], "expected": 95.5}, {"input": [95.5, -96.5], "expected": 95.5}, {"input": [95.5, -96.0], "expected": 95.5}, {"input": [95.5, -95.5], "expected": 95.5}, {"input": [95.5, -95.0], "expected": 95.5}, {"input": [95.5, -94.5], "expected": 95.5}, {"input": [95.5, -94.0], "expected": 95.5}, {"input": [95.5, -93.5], "expected": 95.5}, {"input": [95.5, -93.0], "expected": 95.5}, {"input": [95.5, -92.5], "expected": 95.5}, {"input": [95.5, -92.0], "expected": 95.5}, {"input": [95.5, -91.5], "expected": 95.5}, {"input": [95.5, -91.0], "expected": 95.5}, {"input": [95.5, -90.5], "expected": 95.5}, {"input": [95.5, -90.0], "expected": 95.5}, {"input": [95.5, -89.5], "expected": 95.5}, {"input": [95.5, -89.0], "expected": 95.5}, {"input": [95.5, -88.5], "expected": 95.5}, {"input": [95.5, -88.0], "expected": 95.5}, {"input": [95.5, -87.5], "expected": 95.5}, {"input": [95.5, -87.0], "expected": 95.5}, {"input": [95.5, -86.5], "expected": 95.5}, {"input": [95.5, -86.0], "expected": 95.5}, {"input": [95.5, -85.5], "expected": 95.5}, {"input": [95.5, -85.0], "expected": 95.5}, {"input": [95.5, -84.5], "expected": 95.5}, {"input": [95.5, -84.0], "expected": 95.5}, {"input": [95.5, -83.5], "expected": 95.5}, {"input": [95.5, -83.0], "expected": 95.5}, {"input": [95.5, -82.5], "expected": 95.5}, {"input": [95.5, -82.0], "expected": 95.5}, {"input": [95.5, -81.5], "expected": 95.5}, {"input": [95.5, -81.0], "expected": 95.5}, {"input": [95.5, -80.5], "expected": 95.5}, {"input": [95.5, -80.0], "expected": 95.5}, {"input": [95.5, -79.5], "expected": 95.5}, {"input": [95.5, -79.0], "expected": 95.5}, {"input": [95.5, -78.5], "expected": 95.5}, {"input": [95.5, -78.0], "expected": 95.5}, {"input": [95.5, -77.5], "expected": 95.5}, {"input": [95.5, -77.0], "expected": 95.5}, {"input": [95.5, -76.5], "expected": 95.5}, {"input": [95.5, -76.0], "expected": 95.5}, {"input": [95.5, -75.5], "expected": 95.5}, {"input": [95.5, -75.0], "expected": 95.5}, {"input": [95.5, -74.5], "expected": 95.5}, {"input": [95.5, -74.0], "expected": 95.5}, {"input": [95.5, -73.5], "expected": 95.5}, {"input": [95.5, -73.0], "expected": 95.5}, {"input": [95.5, -72.5], "expected": 95.5}, {"input": [95.5, -72.0], "expected": 95.5}, {"input": [95.5, -71.5], "expected": 95.5}, {"input": [95.5, -71.0], "expected": 95.5}, {"input": [95.5, -70.5], "expected": 95.5}, {"input": [95.5, -70.0], "expected": 95.5}, {"input": [95.5, -69.5], "expected": 95.5}, {"input": [95.5, -69.0], "expected": 95.5}, {"input": [95.5, -68.5], "expected": 95.5}, {"input": [95.5, -68.0], "expected": 95.5}, {"input": [95.5, -67.5], "expected": 95.5}, {"input": [95.5, -67.0], "expected": 95.5}, {"input": [95.5, -66.5], "expected": 95.5}, {"input": [95.5, -66.0], "expected": 95.5}, {"input": [95.5, -65.5], "expected": 95.5}, {"input": [95.5, -65.0], "expected": 95.5}, {"input": [95.5, -64.5], "expected": 95.5}, {"input": [95.5, -64.0], "expected": 95.5}, {"input": [95.5, -63.5], "expected": 95.5}, {"input": [95.5, -63.0], "expected": 95.5}, {"input": [95.5, -62.5], "expected": 95.5}, {"input": [95.5, -62.0], "expected": 95.5}, {"input": [95.5, -61.5], "expected": 95.5}, {"input": [95.5, -61.0], "expected": 95.5}, {"input": [95.5, -60.5], "expected": 95.5}, {"input": [95.5, -60.0], "expected": 95.5}, {"input": [95.5, -59.5], "expected": 95.5}, {"input": [95.5, -59.0], "expected": 95.5}, {"input": [95.5, -58.5], "expected": 95.5}, {"input": [95.5, -58.0], "expected": 95.5}, {"input": [95.5, -57.5], "expected": 95.5}, {"input": [95.5, -57.0], "expected": 95.5}, {"input": [95.5, -56.5], "expected": 95.5}, {"input": [95.5, -56.0], "expected": 95.5}, {"input": [95.5, -55.5], "expected": 95.5}, {"input": [95.5, -55.0], "expected": 95.5}, {"input": [95.5, -54.5], "expected": 95.5}, {"input": [95.5, -54.0], "expected": 95.5}, {"input": [95.5, -53.5], "expected": 95.5}, {"input": [95.5, -53.0], "expected": 95.5}, {"input": [95.5, -52.5], "expected": 95.5}, {"input": [95.5, -52.0], "expected": 95.5}, {"input": [95.5, -51.5], "expected": 95.5}, {"input": [95.5, -51.0], "expected": 95.5}, {"input": [95.5, -50.5], "expected": 95.5}, {"input": [95.5, -50.0], "expected": 95.5}, {"input": [95.5, -49.5], "expected": 95.5}, {"input": [95.5, -49.0], "expected": 95.5}, {"input": [95.5, -48.5], "expected": 95.5}, {"input": [95.5, -48.0], "expected": 95.5}, {"input": [95.5, -47.5], "expected": 95.5}, {"input": [95.5, -47.0], "expected": 95.5}, {"input": [95.5, -46.5], "expected": 95.5}, {"input": [95.5, -46.0], "expected": 95.5}, {"input": [95.5, -45.5], "expected": 95.5}, {"input": [95.5, -45.0], "expected": 95.5}, {"input": [95.5, -44.5], "expected": 95.5}, {"input": [95.5, -44.0], "expected": 95.5}, {"input": [95.5, -43.5], "expected": 95.5}, {"input": [95.5, -43.0], "expected": 95.5}, {"input": [95.5, -42.5], "expected": 95.5}, {"input": [95.5, -42.0], "expected": 95.5}, {"input": [95.5, -41.5], "expected": 95.5}, {"input": [95.5, -41.0], "expected": 95.5}, {"input": [95.5, -40.5], "expected": 95.5}, {"input": [95.5, -40.0], "expected": 95.5}, {"input": [95.5, -39.5], "expected": 95.5}, {"input": [95.5, -39.0], "expected": 95.5}, {"input": [95.5, -38.5], "expected": 95.5}, {"input": [95.5, -38.0], "expected": 95.5}, {"input": [95.5, -37.5], "expected": 95.5}, {"input": [95.5, -37.0], "expected": 95.5}, {"input": [95.5, -36.5], "expected": 95.5}, {"input": [95.5, -36.0], "expected": 95.5}, {"input": [95.5, -35.5], "expected": 95.5}, {"input": [95.5, -35.0], "expected": 95.5}, {"input": [95.5, -34.5], "expected": 95.5}, {"input": [95.5, -34.0], "expected": 95.5}, {"input": [95.5, -33.5], "expected": 95.5}, {"input": [95.5, -33.0], "expected": 95.5}, {"input": [95.5, -32.5], "expected": 95.5}, {"input": [95.5, -32.0], "expected": 95.5}, {"input": [95.5, -31.5], "expected": 95.5}, {"input": [95.5, -31.0], "expected": 95.5}, {"input": [95.5, -30.5], "expected": 95.5}, {"input": [95.5, -30.0], "expected": 95.5}, {"input": [95.5, -29.5], "expected": 95.5}, {"input": [95.5, -29.0], "expected": 95.5}, {"input": [95.5, -28.5], "expected": 95.5}, {"input": [95.5, -28.0], "expected": 95.5}, {"input": [95.5, -27.5], "expected": 95.5}, {"input": [95.5, -27.0], "expected": 95.5}, {"input": [95.5, -26.5], "expected": 95.5}, {"input": [95.5, -26.0], "expected": 95.5}, {"input": [95.5, -25.5], "expected": 95.5}, {"input": [95.5, -25.0], "expected": 95.5}, {"input": [95.5, -24.5], "expected": 95.5}, {"input": [95.5, -24.0], "expected": 95.5}, {"input": [95.5, -23.5], "expected": 95.5}, {"input": [95.5, -23.0], "expected": 95.5}, {"input": [95.5, -22.5], "expected": 95.5}, {"input": [95.5, -22.0], "expected": 95.5}, {"input": [95.5, -21.5], "expected": 95.5}, {"input": [95.5, -21.0], "expected": 95.5}, {"input": [95.5, -20.5], "expected": 95.5}, {"input": [95.5, -20.0], "expected": 95.5}, {"input": [95.5, -19.5], "expected": 95.5}, {"input": [95.5, -19.0], "expected": 95.5}, {"input": [95.5, -18.5], "expected": 95.5}, {"input": [95.5, -18.0], "expected": 95.5}, {"input": [95.5, -17.5], "expected": 95.5}, {"input": [95.5, -17.0], "expected": 95.5}, {"input": [95.5, -16.5], "expected": 95.5}, {"input": [95.5, -16.0], "expected": 95.5}, {"input": [95.5, -15.5], "expected": 95.5}, {"input": [95.5, -15.0], "expected": 95.5}, {"input": [95.5, -14.5], "expected": 95.5}, {"input": [95.5, -14.0], "expected": 95.5}, {"input": [95.5, -13.5], "expected": 95.5}, {"input": [95.5, -13.0], "expected": 95.5}, {"input": [95.5, -12.5], "expected": 95.5}, {"input": [95.5, -12.0], "expected": 95.5}, {"input": [95.5, -11.5], "expected": 95.5}, {"input": [95.5, -11.0], "expected": 95.5}, {"input": [95.5, -10.5], "expected": 95.5}, {"input": [95.5, -10.0], "expected": 95.5}, {"input": [95.5, -9.5], "expected": 95.5}, {"input": [95.5, -9.0], "expected": 95.5}, {"input": [95.5, -8.5], "expected": 95.5}, {"input": [95.5, -8.0], "expected": 95.5}, {"input": [95.5, -7.5], "expected": 95.5}, {"input": [95.5, -7.0], "expected": 95.5}, {"input": [95.5, -6.5], "expected": 95.5}, {"input": [95.5, -6.0], "expected": 95.5}, {"input": [95.5, -5.5], "expected": 95.5}, {"input": [95.5, -5.0], "expected": 95.5}, {"input": [95.5, -4.5], "expected": 95.5}, {"input": [95.5, -4.0], "expected": 95.5}, {"input": [95.5, -3.5], "expected": 95.5}, {"input": [95.5, -3.0], "expected": 95.5}, {"input": [95.5, -2.5], "expected": 95.5}, {"input": [95.5, -2.0], "expected": 95.5}, {"input": [95.5, -1.5], "expected": 95.5}, {"input": [95.5, -1.0], "expected": 95.5}, {"input": [95.5, -0.5], "expected": 95.5}, {"input": [95.5, 0.0], "expected": 95.5}, {"input": [95.5, 0.5], "expected": 95.5}, {"input": [95.5, 1.0], "expected": 95.5}, {"input": [95.5, 1.5], "expected": 95.5}, {"input": [95.5, 2.0], "expected": 95.5}, {"input": [95.5, 2.5], "expected": 95.5}, {"input": [95.5, 3.0], "expected": 95.5}, {"input": [95.5, 3.5], "expected": 95.5}, {"input": [95.5, 4.0], "expected": 95.5}, {"input": [95.5, 4.5], "expected": 95.5}, {"input": [95.5, 5.0], "expected": 95.5}, {"input": [95.5, 5.5], "expected": 95.5}, {"input": [95.5, 6.0], "expected": 95.5}, {"input": [95.5, 6.5], "expected": 95.5}, {"input": [95.5, 7.0], "expected": 95.5}, {"input": [95.5, 7.5], "expected": 95.5}, {"input": [95.5, 8.0], "expected": 95.5}, {"input": [95.5, 8.5], "expected": 95.5}, {"input": [95.5, 9.0], "expected": 95.5}, {"input": [95.5, 9.5], "expected": 95.5}, {"input": [95.5, 10.0], "expected": 95.5}, {"input": [95.5, 10.5], "expected": 95.5}, {"input": [95.5, 11.0], "expected": 95.5}, {"input": [95.5, 11.5], "expected": 95.5}, {"input": [95.5, 12.0], "expected": 95.5}, {"input": [95.5, 12.5], "expected": 95.5}, {"input": [95.5, 13.0], "expected": 95.5}, {"input": [95.5, 13.5], "expected": 95.5}, {"input": [95.5, 14.0], "expected": 95.5}, {"input": [95.5, 14.5], "expected": 95.5}, {"input": [95.5, 15.0], "expected": 95.5}, {"input": [95.5, 15.5], "expected": 95.5}, {"input": [95.5, 16.0], "expected": 95.5}, {"input": [95.5, 16.5], "expected": 95.5}, {"input": [95.5, 17.0], "expected": 95.5}, {"input": [95.5, 17.5], "expected": 95.5}, {"input": [95.5, 18.0], "expected": 95.5}, {"input": [95.5, 18.5], "expected": 95.5}, {"input": [95.5, 19.0], "expected": 95.5}, {"input": [95.5, 19.5], "expected": 95.5}, {"input": [95.5, 20.0], "expected": 95.5}, {"input": [95.5, 20.5], "expected": 95.5}, {"input": [95.5, 21.0], "expected": 95.5}, {"input": [95.5, 21.5], "expected": 95.5}, {"input": [95.5, 22.0], "expected": 95.5}, {"input": [95.5, 22.5], "expected": 95.5}, {"input": [95.5, 23.0], "expected": 95.5}, {"input": [95.5, 23.5], "expected": 95.5}, {"input": [95.5, 24.0], "expected": 95.5}, {"input": [95.5, 24.5], "expected": 95.5}, {"input": [95.5, 25.0], "expected": 95.5}, {"input": [95.5, 25.5], "expected": 95.5}, {"input": [95.5, 26.0], "expected": 95.5}, {"input": [95.5, 26.5], "expected": 95.5}, {"input": [95.5, 27.0], "expected": 95.5}, {"input": [95.5, 27.5], "expected": 95.5}, {"input": [95.5, 28.0], "expected": 95.5}, {"input": [95.5, 28.5], "expected": 95.5}, {"input": [95.5, 29.0], "expected": 95.5}, {"input": [95.5, 29.5], "expected": 95.5}, {"input": [95.5, 30.0], "expected": 95.5}, {"input": [95.5, 30.5], "expected": 95.5}, {"input": [95.5, 31.0], "expected": 95.5}, {"input": [95.5, 31.5], "expected": 95.5}, {"input": [95.5, 32.0], "expected": 95.5}, {"input": [95.5, 32.5], "expected": 95.5}, {"input": [95.5, 33.0], "expected": 95.5}, {"input": [95.5, 33.5], "expected": 95.5}, {"input": [95.5, 34.0], "expected": 95.5}, {"input": [95.5, 34.5], "expected": 95.5}, {"input": [95.5, 35.0], "expected": 95.5}, {"input": [95.5, 35.5], "expected": 95.5}, {"input": [95.5, 36.0], "expected": 95.5}, {"input": [95.5, 36.5], "expected": 95.5}, {"input": [95.5, 37.0], "expected": 95.5}, {"input": [95.5, 37.5], "expected": 95.5}, {"input": [95.5, 38.0], "expected": 95.5}, {"input": [95.5, 38.5], "expected": 95.5}, {"input": [95.5, 39.0], "expected": 95.5}, {"input": [95.5, 39.5], "expected": 95.5}, {"input": [95.5, 40.0], "expected": 95.5}, {"input": [95.5, 40.5], "expected": 95.5}, {"input": [95.5, 41.0], "expected": 95.5}, {"input": [95.5, 41.5], "expected": 95.5}, {"input": [95.5, 42.0], "expected": 95.5}, {"input": [95.5, 42.5], "expected": 95.5}, {"input": [95.5, 43.0], "expected": 95.5}, {"input": [95.5, 43.5], "expected": 95.5}, {"input": [95.5, 44.0], "expected": 95.5}, {"input": [95.5, 44.5], "expected": 95.5}, {"input": [95.5, 45.0], "expected": 95.5}, {"input": [95.5, 45.5], "expected": 95.5}, {"input": [95.5, 46.0], "expected": 95.5}, {"input": [95.5, 46.5], "expected": 95.5}, {"input": [95.5, 47.0], "expected": 95.5}, {"input": [95.5, 47.5], "expected": 95.5}, {"input": [95.5, 48.0], "expected": 95.5}, {"input": [95.5, 48.5], "expected": 95.5}, {"input": [95.5, 49.0], "expected": 95.5}, {"input": [95.5, 49.5], "expected": 95.5}, {"input": [95.5, 50.0], "expected": 95.5}, {"input": [95.5, 50.5], "expected": 95.5}, {"input": [95.5, 51.0], "expected": 95.5}, {"input": [95.5, 51.5], "expected": 95.5}, {"input": [95.5, 52.0], "expected": 95.5}, {"input": [95.5, 52.5], "expected": 95.5}, {"input": [95.5, 53.0], "expected": 95.5}, {"input": [95.5, 53.5], "expected": 95.5}, {"input": [95.5, 54.0], "expected": 95.5}, {"input": [95.5, 54.5], "expected": 95.5}, {"input": [95.5, 55.0], "expected": 95.5}, {"input": [95.5, 55.5], "expected": 95.5}, {"input": [95.5, 56.0], "expected": 95.5}, {"input": [95.5, 56.5], "expected": 95.5}, {"input": [95.5, 57.0], "expected": 95.5}, {"input": [95.5, 57.5], "expected": 95.5}, {"input": [95.5, 58.0], "expected": 95.5}, {"input": [95.5, 58.5], "expected": 95.5}, {"input": [95.5, 59.0], "expected": 95.5}, {"input": [95.5, 59.5], "expected": 95.5}, {"input": [95.5, 60.0], "expected": 95.5}, {"input": [95.5, 60.5], "expected": 95.5}, {"input": [95.5, 61.0], "expected": 95.5}, {"input": [95.5, 61.5], "expected": 95.5}, {"input": [95.5, 62.0], "expected": 95.5}, {"input": [95.5, 62.5], "expected": 95.5}, {"input": [95.5, 63.0], "expected": 95.50000000000001}, {"input": [95.5, 63.5], "expected": 95.50000000000001}, {"input": [95.5, 64.0], "expected": 95.50000000000001}, {"input": [95.5, 64.5], "expected": 95.50000000000003}, {"input": [95.5, 65.0], "expected": 95.50000000000006}, {"input": [95.5, 65.5], "expected": 95.5000000000001}, {"input": [95.5, 66.0], "expected": 95.50000000000016}, {"input": [95.5, 66.5], "expected": 95.50000000000026}, {"input": [95.5, 67.0], "expected": 95.50000000000043}, {"input": [95.5, 67.5], "expected": 95.5000000000007}, {"input": [95.5, 68.0], "expected": 95.50000000000114}, {"input": [95.5, 68.5], "expected": 95.50000000000188}, {"input": [95.5, 69.0], "expected": 95.5000000000031}, {"input": [95.5, 69.5], "expected": 95.50000000000512}, {"input": [95.5, 70.0], "expected": 95.50000000000843}, {"input": [95.5, 70.5], "expected": 95.50000000001388}, {"input": [95.5, 71.0], "expected": 95.5000000000229}, {"input": [95.5, 71.5], "expected": 95.50000000003776}, {"input": [95.5, 72.0], "expected": 95.50000000006224}, {"input": [95.5, 72.5], "expected": 95.50000000010262}, {"input": [95.5, 73.0], "expected": 95.5000000001692}, {"input": [95.5, 73.5], "expected": 95.50000000027894}, {"input": [95.5, 74.0], "expected": 95.5000000004599}, {"input": [95.5, 74.5], "expected": 95.50000000075826}, {"input": [95.5, 75.0], "expected": 95.50000000125016}, {"input": [95.5, 75.5], "expected": 95.50000000206116}, {"input": [95.5, 76.0], "expected": 95.50000000339827}, {"input": [95.5, 76.5], "expected": 95.5000000056028}, {"input": [95.5, 77.0], "expected": 95.50000000923745}, {"input": [95.5, 77.5], "expected": 95.50000001522999}, {"input": [95.5, 78.0], "expected": 95.50000002511}, {"input": [95.5, 78.5], "expected": 95.50000004139937}, {"input": [95.5, 79.0], "expected": 95.50000006825603}, {"input": [95.5, 79.5], "expected": 95.50000011253516}, {"input": [95.5, 80.0], "expected": 95.50000018553912}, {"input": [95.5, 80.5], "expected": 95.50000030590228}, {"input": [95.5, 81.0], "expected": 95.50000050434754}, {"input": [95.5, 81.5], "expected": 95.50000083152837}, {"input": [95.5, 82.0], "expected": 95.50000137095815}, {"input": [95.5, 82.5], "expected": 95.50000226032685}, {"input": [95.5, 83.0], "expected": 95.50000372664623}, {"input": [95.5, 83.5], "expected": 95.50000614419348}, {"input": [95.5, 84.0], "expected": 95.50001013004228}, {"input": [95.5, 84.5], "expected": 95.50001670156132}, {"input": [95.5, 85.0], "expected": 95.50002753607023}, {"input": [95.5, 85.5], "expected": 95.50004539889922}, {"input": [95.5, 86.0], "expected": 95.50007484902864}, {"input": [95.5, 86.5], "expected": 95.50012340218973}, {"input": [95.5, 87.0], "expected": 95.50020344767213}, {"input": [95.5, 87.5], "expected": 95.5003354063729}, {"input": [95.5, 88.0], "expected": 95.50055293147535}, {"input": [95.5, 88.5], "expected": 95.50091146645377}, {"input": [95.5, 89.0], "expected": 95.50150231015975}, {"input": [95.5, 89.5], "expected": 95.50247568513772}, {"input": [95.5, 90.0], "expected": 95.50407844327057}, {"input": [95.5, 90.5], "expected": 95.50671534848912}, {"input": [95.5, 91.0], "expected": 95.5110477448486}, {"input": [95.5, 91.5], "expected": 95.5181499279178}, {"input": [95.5, 92.0], "expected": 95.52975041827263}, {"input": [95.5, 92.5], "expected": 95.54858735157374}, {"input": [95.5, 93.0], "expected": 95.57888973429255}, {"input": [95.5, 93.5], "expected": 95.62692801104298}, {"input": [95.5, 94.0], "expected": 95.70141327798275}, {"input": [95.5, 94.5], "expected": 95.81326168751822}, {"input": [95.5, 95.0], "expected": 95.9740769841801}, {"input": [95.5, 95.5], "expected": 96.19314718055995}, {"input": [95.5, 96.0], "expected": 96.4740769841801}, {"input": [95.5, 96.5], "expected": 96.81326168751822}, {"input": [95.5, 97.0], "expected": 97.20141327798275}, {"input": [95.5, 97.5], "expected": 97.62692801104298}, {"input": [95.5, 98.0], "expected": 98.07888973429255}, {"input": [95.5, 98.5], "expected": 98.54858735157374}, {"input": [95.5, 99.0], "expected": 99.02975041827263}, {"input": [95.5, 99.5], "expected": 99.5181499279178}, {"input": [96.0, -100.0], "expected": 96.0}, {"input": [96.0, -99.5], "expected": 96.0}, {"input": [96.0, -99.0], "expected": 96.0}, {"input": [96.0, -98.5], "expected": 96.0}, {"input": [96.0, -98.0], "expected": 96.0}, {"input": [96.0, -97.5], "expected": 96.0}, {"input": [96.0, -97.0], "expected": 96.0}, {"input": [96.0, -96.5], "expected": 96.0}, {"input": [96.0, -96.0], "expected": 96.0}, {"input": [96.0, -95.5], "expected": 96.0}, {"input": [96.0, -95.0], "expected": 96.0}, {"input": [96.0, -94.5], "expected": 96.0}, {"input": [96.0, -94.0], "expected": 96.0}, {"input": [96.0, -93.5], "expected": 96.0}, {"input": [96.0, -93.0], "expected": 96.0}, {"input": [96.0, -92.5], "expected": 96.0}, {"input": [96.0, -92.0], "expected": 96.0}, {"input": [96.0, -91.5], "expected": 96.0}, {"input": [96.0, -91.0], "expected": 96.0}, {"input": [96.0, -90.5], "expected": 96.0}, {"input": [96.0, -90.0], "expected": 96.0}, {"input": [96.0, -89.5], "expected": 96.0}, {"input": [96.0, -89.0], "expected": 96.0}, {"input": [96.0, -88.5], "expected": 96.0}, {"input": [96.0, -88.0], "expected": 96.0}, {"input": [96.0, -87.5], "expected": 96.0}, {"input": [96.0, -87.0], "expected": 96.0}, {"input": [96.0, -86.5], "expected": 96.0}, {"input": [96.0, -86.0], "expected": 96.0}, {"input": [96.0, -85.5], "expected": 96.0}, {"input": [96.0, -85.0], "expected": 96.0}, {"input": [96.0, -84.5], "expected": 96.0}, {"input": [96.0, -84.0], "expected": 96.0}, {"input": [96.0, -83.5], "expected": 96.0}, {"input": [96.0, -83.0], "expected": 96.0}, {"input": [96.0, -82.5], "expected": 96.0}, {"input": [96.0, -82.0], "expected": 96.0}, {"input": [96.0, -81.5], "expected": 96.0}, {"input": [96.0, -81.0], "expected": 96.0}, {"input": [96.0, -80.5], "expected": 96.0}, {"input": [96.0, -80.0], "expected": 96.0}, {"input": [96.0, -79.5], "expected": 96.0}, {"input": [96.0, -79.0], "expected": 96.0}, {"input": [96.0, -78.5], "expected": 96.0}, {"input": [96.0, -78.0], "expected": 96.0}, {"input": [96.0, -77.5], "expected": 96.0}, {"input": [96.0, -77.0], "expected": 96.0}, {"input": [96.0, -76.5], "expected": 96.0}, {"input": [96.0, -76.0], "expected": 96.0}, {"input": [96.0, -75.5], "expected": 96.0}, {"input": [96.0, -75.0], "expected": 96.0}, {"input": [96.0, -74.5], "expected": 96.0}, {"input": [96.0, -74.0], "expected": 96.0}, {"input": [96.0, -73.5], "expected": 96.0}, {"input": [96.0, -73.0], "expected": 96.0}, {"input": [96.0, -72.5], "expected": 96.0}, {"input": [96.0, -72.0], "expected": 96.0}, {"input": [96.0, -71.5], "expected": 96.0}, {"input": [96.0, -71.0], "expected": 96.0}, {"input": [96.0, -70.5], "expected": 96.0}, {"input": [96.0, -70.0], "expected": 96.0}, {"input": [96.0, -69.5], "expected": 96.0}, {"input": [96.0, -69.0], "expected": 96.0}, {"input": [96.0, -68.5], "expected": 96.0}, {"input": [96.0, -68.0], "expected": 96.0}, {"input": [96.0, -67.5], "expected": 96.0}, {"input": [96.0, -67.0], "expected": 96.0}, {"input": [96.0, -66.5], "expected": 96.0}, {"input": [96.0, -66.0], "expected": 96.0}, {"input": [96.0, -65.5], "expected": 96.0}, {"input": [96.0, -65.0], "expected": 96.0}, {"input": [96.0, -64.5], "expected": 96.0}, {"input": [96.0, -64.0], "expected": 96.0}, {"input": [96.0, -63.5], "expected": 96.0}, {"input": [96.0, -63.0], "expected": 96.0}, {"input": [96.0, -62.5], "expected": 96.0}, {"input": [96.0, -62.0], "expected": 96.0}, {"input": [96.0, -61.5], "expected": 96.0}, {"input": [96.0, -61.0], "expected": 96.0}, {"input": [96.0, -60.5], "expected": 96.0}, {"input": [96.0, -60.0], "expected": 96.0}, {"input": [96.0, -59.5], "expected": 96.0}, {"input": [96.0, -59.0], "expected": 96.0}, {"input": [96.0, -58.5], "expected": 96.0}, {"input": [96.0, -58.0], "expected": 96.0}, {"input": [96.0, -57.5], "expected": 96.0}, {"input": [96.0, -57.0], "expected": 96.0}, {"input": [96.0, -56.5], "expected": 96.0}, {"input": [96.0, -56.0], "expected": 96.0}, {"input": [96.0, -55.5], "expected": 96.0}, {"input": [96.0, -55.0], "expected": 96.0}, {"input": [96.0, -54.5], "expected": 96.0}, {"input": [96.0, -54.0], "expected": 96.0}, {"input": [96.0, -53.5], "expected": 96.0}, {"input": [96.0, -53.0], "expected": 96.0}, {"input": [96.0, -52.5], "expected": 96.0}, {"input": [96.0, -52.0], "expected": 96.0}, {"input": [96.0, -51.5], "expected": 96.0}, {"input": [96.0, -51.0], "expected": 96.0}, {"input": [96.0, -50.5], "expected": 96.0}, {"input": [96.0, -50.0], "expected": 96.0}, {"input": [96.0, -49.5], "expected": 96.0}, {"input": [96.0, -49.0], "expected": 96.0}, {"input": [96.0, -48.5], "expected": 96.0}, {"input": [96.0, -48.0], "expected": 96.0}, {"input": [96.0, -47.5], "expected": 96.0}, {"input": [96.0, -47.0], "expected": 96.0}, {"input": [96.0, -46.5], "expected": 96.0}, {"input": [96.0, -46.0], "expected": 96.0}, {"input": [96.0, -45.5], "expected": 96.0}, {"input": [96.0, -45.0], "expected": 96.0}, {"input": [96.0, -44.5], "expected": 96.0}, {"input": [96.0, -44.0], "expected": 96.0}, {"input": [96.0, -43.5], "expected": 96.0}, {"input": [96.0, -43.0], "expected": 96.0}, {"input": [96.0, -42.5], "expected": 96.0}, {"input": [96.0, -42.0], "expected": 96.0}, {"input": [96.0, -41.5], "expected": 96.0}, {"input": [96.0, -41.0], "expected": 96.0}, {"input": [96.0, -40.5], "expected": 96.0}, {"input": [96.0, -40.0], "expected": 96.0}, {"input": [96.0, -39.5], "expected": 96.0}, {"input": [96.0, -39.0], "expected": 96.0}, {"input": [96.0, -38.5], "expected": 96.0}, {"input": [96.0, -38.0], "expected": 96.0}, {"input": [96.0, -37.5], "expected": 96.0}, {"input": [96.0, -37.0], "expected": 96.0}, {"input": [96.0, -36.5], "expected": 96.0}, {"input": [96.0, -36.0], "expected": 96.0}, {"input": [96.0, -35.5], "expected": 96.0}, {"input": [96.0, -35.0], "expected": 96.0}, {"input": [96.0, -34.5], "expected": 96.0}, {"input": [96.0, -34.0], "expected": 96.0}, {"input": [96.0, -33.5], "expected": 96.0}, {"input": [96.0, -33.0], "expected": 96.0}, {"input": [96.0, -32.5], "expected": 96.0}, {"input": [96.0, -32.0], "expected": 96.0}, {"input": [96.0, -31.5], "expected": 96.0}, {"input": [96.0, -31.0], "expected": 96.0}, {"input": [96.0, -30.5], "expected": 96.0}, {"input": [96.0, -30.0], "expected": 96.0}, {"input": [96.0, -29.5], "expected": 96.0}, {"input": [96.0, -29.0], "expected": 96.0}, {"input": [96.0, -28.5], "expected": 96.0}, {"input": [96.0, -28.0], "expected": 96.0}, {"input": [96.0, -27.5], "expected": 96.0}, {"input": [96.0, -27.0], "expected": 96.0}, {"input": [96.0, -26.5], "expected": 96.0}, {"input": [96.0, -26.0], "expected": 96.0}, {"input": [96.0, -25.5], "expected": 96.0}, {"input": [96.0, -25.0], "expected": 96.0}, {"input": [96.0, -24.5], "expected": 96.0}, {"input": [96.0, -24.0], "expected": 96.0}, {"input": [96.0, -23.5], "expected": 96.0}, {"input": [96.0, -23.0], "expected": 96.0}, {"input": [96.0, -22.5], "expected": 96.0}, {"input": [96.0, -22.0], "expected": 96.0}, {"input": [96.0, -21.5], "expected": 96.0}, {"input": [96.0, -21.0], "expected": 96.0}, {"input": [96.0, -20.5], "expected": 96.0}, {"input": [96.0, -20.0], "expected": 96.0}, {"input": [96.0, -19.5], "expected": 96.0}, {"input": [96.0, -19.0], "expected": 96.0}, {"input": [96.0, -18.5], "expected": 96.0}, {"input": [96.0, -18.0], "expected": 96.0}, {"input": [96.0, -17.5], "expected": 96.0}, {"input": [96.0, -17.0], "expected": 96.0}, {"input": [96.0, -16.5], "expected": 96.0}, {"input": [96.0, -16.0], "expected": 96.0}, {"input": [96.0, -15.5], "expected": 96.0}, {"input": [96.0, -15.0], "expected": 96.0}, {"input": [96.0, -14.5], "expected": 96.0}, {"input": [96.0, -14.0], "expected": 96.0}, {"input": [96.0, -13.5], "expected": 96.0}, {"input": [96.0, -13.0], "expected": 96.0}, {"input": [96.0, -12.5], "expected": 96.0}, {"input": [96.0, -12.0], "expected": 96.0}, {"input": [96.0, -11.5], "expected": 96.0}, {"input": [96.0, -11.0], "expected": 96.0}, {"input": [96.0, -10.5], "expected": 96.0}, {"input": [96.0, -10.0], "expected": 96.0}, {"input": [96.0, -9.5], "expected": 96.0}, {"input": [96.0, -9.0], "expected": 96.0}, {"input": [96.0, -8.5], "expected": 96.0}, {"input": [96.0, -8.0], "expected": 96.0}, {"input": [96.0, -7.5], "expected": 96.0}, {"input": [96.0, -7.0], "expected": 96.0}, {"input": [96.0, -6.5], "expected": 96.0}, {"input": [96.0, -6.0], "expected": 96.0}, {"input": [96.0, -5.5], "expected": 96.0}, {"input": [96.0, -5.0], "expected": 96.0}, {"input": [96.0, -4.5], "expected": 96.0}, {"input": [96.0, -4.0], "expected": 96.0}, {"input": [96.0, -3.5], "expected": 96.0}, {"input": [96.0, -3.0], "expected": 96.0}, {"input": [96.0, -2.5], "expected": 96.0}, {"input": [96.0, -2.0], "expected": 96.0}, {"input": [96.0, -1.5], "expected": 96.0}, {"input": [96.0, -1.0], "expected": 96.0}, {"input": [96.0, -0.5], "expected": 96.0}, {"input": [96.0, 0.0], "expected": 96.0}, {"input": [96.0, 0.5], "expected": 96.0}, {"input": [96.0, 1.0], "expected": 96.0}, {"input": [96.0, 1.5], "expected": 96.0}, {"input": [96.0, 2.0], "expected": 96.0}, {"input": [96.0, 2.5], "expected": 96.0}, {"input": [96.0, 3.0], "expected": 96.0}, {"input": [96.0, 3.5], "expected": 96.0}, {"input": [96.0, 4.0], "expected": 96.0}, {"input": [96.0, 4.5], "expected": 96.0}, {"input": [96.0, 5.0], "expected": 96.0}, {"input": [96.0, 5.5], "expected": 96.0}, {"input": [96.0, 6.0], "expected": 96.0}, {"input": [96.0, 6.5], "expected": 96.0}, {"input": [96.0, 7.0], "expected": 96.0}, {"input": [96.0, 7.5], "expected": 96.0}, {"input": [96.0, 8.0], "expected": 96.0}, {"input": [96.0, 8.5], "expected": 96.0}, {"input": [96.0, 9.0], "expected": 96.0}, {"input": [96.0, 9.5], "expected": 96.0}, {"input": [96.0, 10.0], "expected": 96.0}, {"input": [96.0, 10.5], "expected": 96.0}, {"input": [96.0, 11.0], "expected": 96.0}, {"input": [96.0, 11.5], "expected": 96.0}, {"input": [96.0, 12.0], "expected": 96.0}, {"input": [96.0, 12.5], "expected": 96.0}, {"input": [96.0, 13.0], "expected": 96.0}, {"input": [96.0, 13.5], "expected": 96.0}, {"input": [96.0, 14.0], "expected": 96.0}, {"input": [96.0, 14.5], "expected": 96.0}, {"input": [96.0, 15.0], "expected": 96.0}, {"input": [96.0, 15.5], "expected": 96.0}, {"input": [96.0, 16.0], "expected": 96.0}, {"input": [96.0, 16.5], "expected": 96.0}, {"input": [96.0, 17.0], "expected": 96.0}, {"input": [96.0, 17.5], "expected": 96.0}, {"input": [96.0, 18.0], "expected": 96.0}, {"input": [96.0, 18.5], "expected": 96.0}, {"input": [96.0, 19.0], "expected": 96.0}, {"input": [96.0, 19.5], "expected": 96.0}, {"input": [96.0, 20.0], "expected": 96.0}, {"input": [96.0, 20.5], "expected": 96.0}, {"input": [96.0, 21.0], "expected": 96.0}, {"input": [96.0, 21.5], "expected": 96.0}, {"input": [96.0, 22.0], "expected": 96.0}, {"input": [96.0, 22.5], "expected": 96.0}, {"input": [96.0, 23.0], "expected": 96.0}, {"input": [96.0, 23.5], "expected": 96.0}, {"input": [96.0, 24.0], "expected": 96.0}, {"input": [96.0, 24.5], "expected": 96.0}, {"input": [96.0, 25.0], "expected": 96.0}, {"input": [96.0, 25.5], "expected": 96.0}, {"input": [96.0, 26.0], "expected": 96.0}, {"input": [96.0, 26.5], "expected": 96.0}, {"input": [96.0, 27.0], "expected": 96.0}, {"input": [96.0, 27.5], "expected": 96.0}, {"input": [96.0, 28.0], "expected": 96.0}, {"input": [96.0, 28.5], "expected": 96.0}, {"input": [96.0, 29.0], "expected": 96.0}, {"input": [96.0, 29.5], "expected": 96.0}, {"input": [96.0, 30.0], "expected": 96.0}, {"input": [96.0, 30.5], "expected": 96.0}, {"input": [96.0, 31.0], "expected": 96.0}, {"input": [96.0, 31.5], "expected": 96.0}, {"input": [96.0, 32.0], "expected": 96.0}, {"input": [96.0, 32.5], "expected": 96.0}, {"input": [96.0, 33.0], "expected": 96.0}, {"input": [96.0, 33.5], "expected": 96.0}, {"input": [96.0, 34.0], "expected": 96.0}, {"input": [96.0, 34.5], "expected": 96.0}, {"input": [96.0, 35.0], "expected": 96.0}, {"input": [96.0, 35.5], "expected": 96.0}, {"input": [96.0, 36.0], "expected": 96.0}, {"input": [96.0, 36.5], "expected": 96.0}, {"input": [96.0, 37.0], "expected": 96.0}, {"input": [96.0, 37.5], "expected": 96.0}, {"input": [96.0, 38.0], "expected": 96.0}, {"input": [96.0, 38.5], "expected": 96.0}, {"input": [96.0, 39.0], "expected": 96.0}, {"input": [96.0, 39.5], "expected": 96.0}, {"input": [96.0, 40.0], "expected": 96.0}, {"input": [96.0, 40.5], "expected": 96.0}, {"input": [96.0, 41.0], "expected": 96.0}, {"input": [96.0, 41.5], "expected": 96.0}, {"input": [96.0, 42.0], "expected": 96.0}, {"input": [96.0, 42.5], "expected": 96.0}, {"input": [96.0, 43.0], "expected": 96.0}, {"input": [96.0, 43.5], "expected": 96.0}, {"input": [96.0, 44.0], "expected": 96.0}, {"input": [96.0, 44.5], "expected": 96.0}, {"input": [96.0, 45.0], "expected": 96.0}, {"input": [96.0, 45.5], "expected": 96.0}, {"input": [96.0, 46.0], "expected": 96.0}, {"input": [96.0, 46.5], "expected": 96.0}, {"input": [96.0, 47.0], "expected": 96.0}, {"input": [96.0, 47.5], "expected": 96.0}, {"input": [96.0, 48.0], "expected": 96.0}, {"input": [96.0, 48.5], "expected": 96.0}, {"input": [96.0, 49.0], "expected": 96.0}, {"input": [96.0, 49.5], "expected": 96.0}, {"input": [96.0, 50.0], "expected": 96.0}, {"input": [96.0, 50.5], "expected": 96.0}, {"input": [96.0, 51.0], "expected": 96.0}, {"input": [96.0, 51.5], "expected": 96.0}, {"input": [96.0, 52.0], "expected": 96.0}, {"input": [96.0, 52.5], "expected": 96.0}, {"input": [96.0, 53.0], "expected": 96.0}, {"input": [96.0, 53.5], "expected": 96.0}, {"input": [96.0, 54.0], "expected": 96.0}, {"input": [96.0, 54.5], "expected": 96.0}, {"input": [96.0, 55.0], "expected": 96.0}, {"input": [96.0, 55.5], "expected": 96.0}, {"input": [96.0, 56.0], "expected": 96.0}, {"input": [96.0, 56.5], "expected": 96.0}, {"input": [96.0, 57.0], "expected": 96.0}, {"input": [96.0, 57.5], "expected": 96.0}, {"input": [96.0, 58.0], "expected": 96.0}, {"input": [96.0, 58.5], "expected": 96.0}, {"input": [96.0, 59.0], "expected": 96.0}, {"input": [96.0, 59.5], "expected": 96.0}, {"input": [96.0, 60.0], "expected": 96.0}, {"input": [96.0, 60.5], "expected": 96.0}, {"input": [96.0, 61.0], "expected": 96.0}, {"input": [96.0, 61.5], "expected": 96.0}, {"input": [96.0, 62.0], "expected": 96.0}, {"input": [96.0, 62.5], "expected": 96.0}, {"input": [96.0, 63.0], "expected": 96.0}, {"input": [96.0, 63.5], "expected": 96.00000000000001}, {"input": [96.0, 64.0], "expected": 96.00000000000001}, {"input": [96.0, 64.5], "expected": 96.00000000000001}, {"input": [96.0, 65.0], "expected": 96.00000000000003}, {"input": [96.0, 65.5], "expected": 96.00000000000006}, {"input": [96.0, 66.0], "expected": 96.0000000000001}, {"input": [96.0, 66.5], "expected": 96.00000000000016}, {"input": [96.0, 67.0], "expected": 96.00000000000026}, {"input": [96.0, 67.5], "expected": 96.00000000000043}, {"input": [96.0, 68.0], "expected": 96.0000000000007}, {"input": [96.0, 68.5], "expected": 96.00000000000114}, {"input": [96.0, 69.0], "expected": 96.00000000000188}, {"input": [96.0, 69.5], "expected": 96.0000000000031}, {"input": [96.0, 70.0], "expected": 96.00000000000512}, {"input": [96.0, 70.5], "expected": 96.00000000000843}, {"input": [96.0, 71.0], "expected": 96.00000000001388}, {"input": [96.0, 71.5], "expected": 96.0000000000229}, {"input": [96.0, 72.0], "expected": 96.00000000003776}, {"input": [96.0, 72.5], "expected": 96.00000000006224}, {"input": [96.0, 73.0], "expected": 96.00000000010262}, {"input": [96.0, 73.5], "expected": 96.0000000001692}, {"input": [96.0, 74.0], "expected": 96.00000000027894}, {"input": [96.0, 74.5], "expected": 96.0000000004599}, {"input": [96.0, 75.0], "expected": 96.00000000075826}, {"input": [96.0, 75.5], "expected": 96.00000000125016}, {"input": [96.0, 76.0], "expected": 96.00000000206116}, {"input": [96.0, 76.5], "expected": 96.00000000339827}, {"input": [96.0, 77.0], "expected": 96.0000000056028}, {"input": [96.0, 77.5], "expected": 96.00000000923745}, {"input": [96.0, 78.0], "expected": 96.00000001522999}, {"input": [96.0, 78.5], "expected": 96.00000002511}, {"input": [96.0, 79.0], "expected": 96.00000004139937}, {"input": [96.0, 79.5], "expected": 96.00000006825603}, {"input": [96.0, 80.0], "expected": 96.00000011253516}, {"input": [96.0, 80.5], "expected": 96.00000018553912}, {"input": [96.0, 81.0], "expected": 96.00000030590228}, {"input": [96.0, 81.5], "expected": 96.00000050434754}, {"input": [96.0, 82.0], "expected": 96.00000083152837}, {"input": [96.0, 82.5], "expected": 96.00000137095815}, {"input": [96.0, 83.0], "expected": 96.00000226032685}, {"input": [96.0, 83.5], "expected": 96.00000372664623}, {"input": [96.0, 84.0], "expected": 96.00000614419348}, {"input": [96.0, 84.5], "expected": 96.00001013004228}, {"input": [96.0, 85.0], "expected": 96.00001670156132}, {"input": [96.0, 85.5], "expected": 96.00002753607023}, {"input": [96.0, 86.0], "expected": 96.00004539889922}, {"input": [96.0, 86.5], "expected": 96.00007484902864}, {"input": [96.0, 87.0], "expected": 96.00012340218973}, {"input": [96.0, 87.5], "expected": 96.00020344767213}, {"input": [96.0, 88.0], "expected": 96.0003354063729}, {"input": [96.0, 88.5], "expected": 96.00055293147535}, {"input": [96.0, 89.0], "expected": 96.00091146645377}, {"input": [96.0, 89.5], "expected": 96.00150231015975}, {"input": [96.0, 90.0], "expected": 96.00247568513772}, {"input": [96.0, 90.5], "expected": 96.00407844327057}, {"input": [96.0, 91.0], "expected": 96.00671534848912}, {"input": [96.0, 91.5], "expected": 96.0110477448486}, {"input": [96.0, 92.0], "expected": 96.0181499279178}, {"input": [96.0, 92.5], "expected": 96.02975041827263}, {"input": [96.0, 93.0], "expected": 96.04858735157374}, {"input": [96.0, 93.5], "expected": 96.07888973429255}, {"input": [96.0, 94.0], "expected": 96.12692801104298}, {"input": [96.0, 94.5], "expected": 96.20141327798275}, {"input": [96.0, 95.0], "expected": 96.31326168751822}, {"input": [96.0, 95.5], "expected": 96.4740769841801}, {"input": [96.0, 96.0], "expected": 96.69314718055995}, {"input": [96.0, 96.5], "expected": 96.9740769841801}, {"input": [96.0, 97.0], "expected": 97.31326168751822}, {"input": [96.0, 97.5], "expected": 97.70141327798275}, {"input": [96.0, 98.0], "expected": 98.12692801104298}, {"input": [96.0, 98.5], "expected": 98.57888973429255}, {"input": [96.0, 99.0], "expected": 99.04858735157374}, {"input": [96.0, 99.5], "expected": 99.52975041827263}, {"input": [96.5, -100.0], "expected": 96.5}, {"input": [96.5, -99.5], "expected": 96.5}, {"input": [96.5, -99.0], "expected": 96.5}, {"input": [96.5, -98.5], "expected": 96.5}, {"input": [96.5, -98.0], "expected": 96.5}, {"input": [96.5, -97.5], "expected": 96.5}, {"input": [96.5, -97.0], "expected": 96.5}, {"input": [96.5, -96.5], "expected": 96.5}, {"input": [96.5, -96.0], "expected": 96.5}, {"input": [96.5, -95.5], "expected": 96.5}, {"input": [96.5, -95.0], "expected": 96.5}, {"input": [96.5, -94.5], "expected": 96.5}, {"input": [96.5, -94.0], "expected": 96.5}, {"input": [96.5, -93.5], "expected": 96.5}, {"input": [96.5, -93.0], "expected": 96.5}, {"input": [96.5, -92.5], "expected": 96.5}, {"input": [96.5, -92.0], "expected": 96.5}, {"input": [96.5, -91.5], "expected": 96.5}, {"input": [96.5, -91.0], "expected": 96.5}, {"input": [96.5, -90.5], "expected": 96.5}, {"input": [96.5, -90.0], "expected": 96.5}, {"input": [96.5, -89.5], "expected": 96.5}, {"input": [96.5, -89.0], "expected": 96.5}, {"input": [96.5, -88.5], "expected": 96.5}, {"input": [96.5, -88.0], "expected": 96.5}, {"input": [96.5, -87.5], "expected": 96.5}, {"input": [96.5, -87.0], "expected": 96.5}, {"input": [96.5, -86.5], "expected": 96.5}, {"input": [96.5, -86.0], "expected": 96.5}, {"input": [96.5, -85.5], "expected": 96.5}, {"input": [96.5, -85.0], "expected": 96.5}, {"input": [96.5, -84.5], "expected": 96.5}, {"input": [96.5, -84.0], "expected": 96.5}, {"input": [96.5, -83.5], "expected": 96.5}, {"input": [96.5, -83.0], "expected": 96.5}, {"input": [96.5, -82.5], "expected": 96.5}, {"input": [96.5, -82.0], "expected": 96.5}, {"input": [96.5, -81.5], "expected": 96.5}, {"input": [96.5, -81.0], "expected": 96.5}, {"input": [96.5, -80.5], "expected": 96.5}, {"input": [96.5, -80.0], "expected": 96.5}, {"input": [96.5, -79.5], "expected": 96.5}, {"input": [96.5, -79.0], "expected": 96.5}, {"input": [96.5, -78.5], "expected": 96.5}, {"input": [96.5, -78.0], "expected": 96.5}, {"input": [96.5, -77.5], "expected": 96.5}, {"input": [96.5, -77.0], "expected": 96.5}, {"input": [96.5, -76.5], "expected": 96.5}, {"input": [96.5, -76.0], "expected": 96.5}, {"input": [96.5, -75.5], "expected": 96.5}, {"input": [96.5, -75.0], "expected": 96.5}, {"input": [96.5, -74.5], "expected": 96.5}, {"input": [96.5, -74.0], "expected": 96.5}, {"input": [96.5, -73.5], "expected": 96.5}, {"input": [96.5, -73.0], "expected": 96.5}, {"input": [96.5, -72.5], "expected": 96.5}, {"input": [96.5, -72.0], "expected": 96.5}, {"input": [96.5, -71.5], "expected": 96.5}, {"input": [96.5, -71.0], "expected": 96.5}, {"input": [96.5, -70.5], "expected": 96.5}, {"input": [96.5, -70.0], "expected": 96.5}, {"input": [96.5, -69.5], "expected": 96.5}, {"input": [96.5, -69.0], "expected": 96.5}, {"input": [96.5, -68.5], "expected": 96.5}, {"input": [96.5, -68.0], "expected": 96.5}, {"input": [96.5, -67.5], "expected": 96.5}, {"input": [96.5, -67.0], "expected": 96.5}, {"input": [96.5, -66.5], "expected": 96.5}, {"input": [96.5, -66.0], "expected": 96.5}, {"input": [96.5, -65.5], "expected": 96.5}, {"input": [96.5, -65.0], "expected": 96.5}, {"input": [96.5, -64.5], "expected": 96.5}, {"input": [96.5, -64.0], "expected": 96.5}, {"input": [96.5, -63.5], "expected": 96.5}, {"input": [96.5, -63.0], "expected": 96.5}, {"input": [96.5, -62.5], "expected": 96.5}, {"input": [96.5, -62.0], "expected": 96.5}, {"input": [96.5, -61.5], "expected": 96.5}, {"input": [96.5, -61.0], "expected": 96.5}, {"input": [96.5, -60.5], "expected": 96.5}, {"input": [96.5, -60.0], "expected": 96.5}, {"input": [96.5, -59.5], "expected": 96.5}, {"input": [96.5, -59.0], "expected": 96.5}, {"input": [96.5, -58.5], "expected": 96.5}, {"input": [96.5, -58.0], "expected": 96.5}, {"input": [96.5, -57.5], "expected": 96.5}, {"input": [96.5, -57.0], "expected": 96.5}, {"input": [96.5, -56.5], "expected": 96.5}, {"input": [96.5, -56.0], "expected": 96.5}, {"input": [96.5, -55.5], "expected": 96.5}, {"input": [96.5, -55.0], "expected": 96.5}, {"input": [96.5, -54.5], "expected": 96.5}, {"input": [96.5, -54.0], "expected": 96.5}, {"input": [96.5, -53.5], "expected": 96.5}, {"input": [96.5, -53.0], "expected": 96.5}, {"input": [96.5, -52.5], "expected": 96.5}, {"input": [96.5, -52.0], "expected": 96.5}, {"input": [96.5, -51.5], "expected": 96.5}, {"input": [96.5, -51.0], "expected": 96.5}, {"input": [96.5, -50.5], "expected": 96.5}, {"input": [96.5, -50.0], "expected": 96.5}, {"input": [96.5, -49.5], "expected": 96.5}, {"input": [96.5, -49.0], "expected": 96.5}, {"input": [96.5, -48.5], "expected": 96.5}, {"input": [96.5, -48.0], "expected": 96.5}, {"input": [96.5, -47.5], "expected": 96.5}, {"input": [96.5, -47.0], "expected": 96.5}, {"input": [96.5, -46.5], "expected": 96.5}, {"input": [96.5, -46.0], "expected": 96.5}, {"input": [96.5, -45.5], "expected": 96.5}, {"input": [96.5, -45.0], "expected": 96.5}, {"input": [96.5, -44.5], "expected": 96.5}, {"input": [96.5, -44.0], "expected": 96.5}, {"input": [96.5, -43.5], "expected": 96.5}, {"input": [96.5, -43.0], "expected": 96.5}, {"input": [96.5, -42.5], "expected": 96.5}, {"input": [96.5, -42.0], "expected": 96.5}, {"input": [96.5, -41.5], "expected": 96.5}, {"input": [96.5, -41.0], "expected": 96.5}, {"input": [96.5, -40.5], "expected": 96.5}, {"input": [96.5, -40.0], "expected": 96.5}, {"input": [96.5, -39.5], "expected": 96.5}, {"input": [96.5, -39.0], "expected": 96.5}, {"input": [96.5, -38.5], "expected": 96.5}, {"input": [96.5, -38.0], "expected": 96.5}, {"input": [96.5, -37.5], "expected": 96.5}, {"input": [96.5, -37.0], "expected": 96.5}, {"input": [96.5, -36.5], "expected": 96.5}, {"input": [96.5, -36.0], "expected": 96.5}, {"input": [96.5, -35.5], "expected": 96.5}, {"input": [96.5, -35.0], "expected": 96.5}, {"input": [96.5, -34.5], "expected": 96.5}, {"input": [96.5, -34.0], "expected": 96.5}, {"input": [96.5, -33.5], "expected": 96.5}, {"input": [96.5, -33.0], "expected": 96.5}, {"input": [96.5, -32.5], "expected": 96.5}, {"input": [96.5, -32.0], "expected": 96.5}, {"input": [96.5, -31.5], "expected": 96.5}, {"input": [96.5, -31.0], "expected": 96.5}, {"input": [96.5, -30.5], "expected": 96.5}, {"input": [96.5, -30.0], "expected": 96.5}, {"input": [96.5, -29.5], "expected": 96.5}, {"input": [96.5, -29.0], "expected": 96.5}, {"input": [96.5, -28.5], "expected": 96.5}, {"input": [96.5, -28.0], "expected": 96.5}, {"input": [96.5, -27.5], "expected": 96.5}, {"input": [96.5, -27.0], "expected": 96.5}, {"input": [96.5, -26.5], "expected": 96.5}, {"input": [96.5, -26.0], "expected": 96.5}, {"input": [96.5, -25.5], "expected": 96.5}, {"input": [96.5, -25.0], "expected": 96.5}, {"input": [96.5, -24.5], "expected": 96.5}, {"input": [96.5, -24.0], "expected": 96.5}, {"input": [96.5, -23.5], "expected": 96.5}, {"input": [96.5, -23.0], "expected": 96.5}, {"input": [96.5, -22.5], "expected": 96.5}, {"input": [96.5, -22.0], "expected": 96.5}, {"input": [96.5, -21.5], "expected": 96.5}, {"input": [96.5, -21.0], "expected": 96.5}, {"input": [96.5, -20.5], "expected": 96.5}, {"input": [96.5, -20.0], "expected": 96.5}, {"input": [96.5, -19.5], "expected": 96.5}, {"input": [96.5, -19.0], "expected": 96.5}, {"input": [96.5, -18.5], "expected": 96.5}, {"input": [96.5, -18.0], "expected": 96.5}, {"input": [96.5, -17.5], "expected": 96.5}, {"input": [96.5, -17.0], "expected": 96.5}, {"input": [96.5, -16.5], "expected": 96.5}, {"input": [96.5, -16.0], "expected": 96.5}, {"input": [96.5, -15.5], "expected": 96.5}, {"input": [96.5, -15.0], "expected": 96.5}, {"input": [96.5, -14.5], "expected": 96.5}, {"input": [96.5, -14.0], "expected": 96.5}, {"input": [96.5, -13.5], "expected": 96.5}, {"input": [96.5, -13.0], "expected": 96.5}, {"input": [96.5, -12.5], "expected": 96.5}, {"input": [96.5, -12.0], "expected": 96.5}, {"input": [96.5, -11.5], "expected": 96.5}, {"input": [96.5, -11.0], "expected": 96.5}, {"input": [96.5, -10.5], "expected": 96.5}, {"input": [96.5, -10.0], "expected": 96.5}, {"input": [96.5, -9.5], "expected": 96.5}, {"input": [96.5, -9.0], "expected": 96.5}, {"input": [96.5, -8.5], "expected": 96.5}, {"input": [96.5, -8.0], "expected": 96.5}, {"input": [96.5, -7.5], "expected": 96.5}, {"input": [96.5, -7.0], "expected": 96.5}, {"input": [96.5, -6.5], "expected": 96.5}, {"input": [96.5, -6.0], "expected": 96.5}, {"input": [96.5, -5.5], "expected": 96.5}, {"input": [96.5, -5.0], "expected": 96.5}, {"input": [96.5, -4.5], "expected": 96.5}, {"input": [96.5, -4.0], "expected": 96.5}, {"input": [96.5, -3.5], "expected": 96.5}, {"input": [96.5, -3.0], "expected": 96.5}, {"input": [96.5, -2.5], "expected": 96.5}, {"input": [96.5, -2.0], "expected": 96.5}, {"input": [96.5, -1.5], "expected": 96.5}, {"input": [96.5, -1.0], "expected": 96.5}, {"input": [96.5, -0.5], "expected": 96.5}, {"input": [96.5, 0.0], "expected": 96.5}, {"input": [96.5, 0.5], "expected": 96.5}, {"input": [96.5, 1.0], "expected": 96.5}, {"input": [96.5, 1.5], "expected": 96.5}, {"input": [96.5, 2.0], "expected": 96.5}, {"input": [96.5, 2.5], "expected": 96.5}, {"input": [96.5, 3.0], "expected": 96.5}, {"input": [96.5, 3.5], "expected": 96.5}, {"input": [96.5, 4.0], "expected": 96.5}, {"input": [96.5, 4.5], "expected": 96.5}, {"input": [96.5, 5.0], "expected": 96.5}, {"input": [96.5, 5.5], "expected": 96.5}, {"input": [96.5, 6.0], "expected": 96.5}, {"input": [96.5, 6.5], "expected": 96.5}, {"input": [96.5, 7.0], "expected": 96.5}, {"input": [96.5, 7.5], "expected": 96.5}, {"input": [96.5, 8.0], "expected": 96.5}, {"input": [96.5, 8.5], "expected": 96.5}, {"input": [96.5, 9.0], "expected": 96.5}, {"input": [96.5, 9.5], "expected": 96.5}, {"input": [96.5, 10.0], "expected": 96.5}, {"input": [96.5, 10.5], "expected": 96.5}, {"input": [96.5, 11.0], "expected": 96.5}, {"input": [96.5, 11.5], "expected": 96.5}, {"input": [96.5, 12.0], "expected": 96.5}, {"input": [96.5, 12.5], "expected": 96.5}, {"input": [96.5, 13.0], "expected": 96.5}, {"input": [96.5, 13.5], "expected": 96.5}, {"input": [96.5, 14.0], "expected": 96.5}, {"input": [96.5, 14.5], "expected": 96.5}, {"input": [96.5, 15.0], "expected": 96.5}, {"input": [96.5, 15.5], "expected": 96.5}, {"input": [96.5, 16.0], "expected": 96.5}, {"input": [96.5, 16.5], "expected": 96.5}, {"input": [96.5, 17.0], "expected": 96.5}, {"input": [96.5, 17.5], "expected": 96.5}, {"input": [96.5, 18.0], "expected": 96.5}, {"input": [96.5, 18.5], "expected": 96.5}, {"input": [96.5, 19.0], "expected": 96.5}, {"input": [96.5, 19.5], "expected": 96.5}, {"input": [96.5, 20.0], "expected": 96.5}, {"input": [96.5, 20.5], "expected": 96.5}, {"input": [96.5, 21.0], "expected": 96.5}, {"input": [96.5, 21.5], "expected": 96.5}, {"input": [96.5, 22.0], "expected": 96.5}, {"input": [96.5, 22.5], "expected": 96.5}, {"input": [96.5, 23.0], "expected": 96.5}, {"input": [96.5, 23.5], "expected": 96.5}, {"input": [96.5, 24.0], "expected": 96.5}, {"input": [96.5, 24.5], "expected": 96.5}, {"input": [96.5, 25.0], "expected": 96.5}, {"input": [96.5, 25.5], "expected": 96.5}, {"input": [96.5, 26.0], "expected": 96.5}, {"input": [96.5, 26.5], "expected": 96.5}, {"input": [96.5, 27.0], "expected": 96.5}, {"input": [96.5, 27.5], "expected": 96.5}, {"input": [96.5, 28.0], "expected": 96.5}, {"input": [96.5, 28.5], "expected": 96.5}, {"input": [96.5, 29.0], "expected": 96.5}, {"input": [96.5, 29.5], "expected": 96.5}, {"input": [96.5, 30.0], "expected": 96.5}, {"input": [96.5, 30.5], "expected": 96.5}, {"input": [96.5, 31.0], "expected": 96.5}, {"input": [96.5, 31.5], "expected": 96.5}, {"input": [96.5, 32.0], "expected": 96.5}, {"input": [96.5, 32.5], "expected": 96.5}, {"input": [96.5, 33.0], "expected": 96.5}, {"input": [96.5, 33.5], "expected": 96.5}, {"input": [96.5, 34.0], "expected": 96.5}, {"input": [96.5, 34.5], "expected": 96.5}, {"input": [96.5, 35.0], "expected": 96.5}, {"input": [96.5, 35.5], "expected": 96.5}, {"input": [96.5, 36.0], "expected": 96.5}, {"input": [96.5, 36.5], "expected": 96.5}, {"input": [96.5, 37.0], "expected": 96.5}, {"input": [96.5, 37.5], "expected": 96.5}, {"input": [96.5, 38.0], "expected": 96.5}, {"input": [96.5, 38.5], "expected": 96.5}, {"input": [96.5, 39.0], "expected": 96.5}, {"input": [96.5, 39.5], "expected": 96.5}, {"input": [96.5, 40.0], "expected": 96.5}, {"input": [96.5, 40.5], "expected": 96.5}, {"input": [96.5, 41.0], "expected": 96.5}, {"input": [96.5, 41.5], "expected": 96.5}, {"input": [96.5, 42.0], "expected": 96.5}, {"input": [96.5, 42.5], "expected": 96.5}, {"input": [96.5, 43.0], "expected": 96.5}, {"input": [96.5, 43.5], "expected": 96.5}, {"input": [96.5, 44.0], "expected": 96.5}, {"input": [96.5, 44.5], "expected": 96.5}, {"input": [96.5, 45.0], "expected": 96.5}, {"input": [96.5, 45.5], "expected": 96.5}, {"input": [96.5, 46.0], "expected": 96.5}, {"input": [96.5, 46.5], "expected": 96.5}, {"input": [96.5, 47.0], "expected": 96.5}, {"input": [96.5, 47.5], "expected": 96.5}, {"input": [96.5, 48.0], "expected": 96.5}, {"input": [96.5, 48.5], "expected": 96.5}, {"input": [96.5, 49.0], "expected": 96.5}, {"input": [96.5, 49.5], "expected": 96.5}, {"input": [96.5, 50.0], "expected": 96.5}, {"input": [96.5, 50.5], "expected": 96.5}, {"input": [96.5, 51.0], "expected": 96.5}, {"input": [96.5, 51.5], "expected": 96.5}, {"input": [96.5, 52.0], "expected": 96.5}, {"input": [96.5, 52.5], "expected": 96.5}, {"input": [96.5, 53.0], "expected": 96.5}, {"input": [96.5, 53.5], "expected": 96.5}, {"input": [96.5, 54.0], "expected": 96.5}, {"input": [96.5, 54.5], "expected": 96.5}, {"input": [96.5, 55.0], "expected": 96.5}, {"input": [96.5, 55.5], "expected": 96.5}, {"input": [96.5, 56.0], "expected": 96.5}, {"input": [96.5, 56.5], "expected": 96.5}, {"input": [96.5, 57.0], "expected": 96.5}, {"input": [96.5, 57.5], "expected": 96.5}, {"input": [96.5, 58.0], "expected": 96.5}, {"input": [96.5, 58.5], "expected": 96.5}, {"input": [96.5, 59.0], "expected": 96.5}, {"input": [96.5, 59.5], "expected": 96.5}, {"input": [96.5, 60.0], "expected": 96.5}, {"input": [96.5, 60.5], "expected": 96.5}, {"input": [96.5, 61.0], "expected": 96.5}, {"input": [96.5, 61.5], "expected": 96.5}, {"input": [96.5, 62.0], "expected": 96.5}, {"input": [96.5, 62.5], "expected": 96.5}, {"input": [96.5, 63.0], "expected": 96.5}, {"input": [96.5, 63.5], "expected": 96.5}, {"input": [96.5, 64.0], "expected": 96.50000000000001}, {"input": [96.5, 64.5], "expected": 96.50000000000001}, {"input": [96.5, 65.0], "expected": 96.50000000000001}, {"input": [96.5, 65.5], "expected": 96.50000000000003}, {"input": [96.5, 66.0], "expected": 96.50000000000006}, {"input": [96.5, 66.5], "expected": 96.5000000000001}, {"input": [96.5, 67.0], "expected": 96.50000000000016}, {"input": [96.5, 67.5], "expected": 96.50000000000026}, {"input": [96.5, 68.0], "expected": 96.50000000000043}, {"input": [96.5, 68.5], "expected": 96.5000000000007}, {"input": [96.5, 69.0], "expected": 96.50000000000114}, {"input": [96.5, 69.5], "expected": 96.50000000000188}, {"input": [96.5, 70.0], "expected": 96.5000000000031}, {"input": [96.5, 70.5], "expected": 96.50000000000512}, {"input": [96.5, 71.0], "expected": 96.50000000000843}, {"input": [96.5, 71.5], "expected": 96.50000000001388}, {"input": [96.5, 72.0], "expected": 96.5000000000229}, {"input": [96.5, 72.5], "expected": 96.50000000003776}, {"input": [96.5, 73.0], "expected": 96.50000000006224}, {"input": [96.5, 73.5], "expected": 96.50000000010262}, {"input": [96.5, 74.0], "expected": 96.5000000001692}, {"input": [96.5, 74.5], "expected": 96.50000000027894}, {"input": [96.5, 75.0], "expected": 96.5000000004599}, {"input": [96.5, 75.5], "expected": 96.50000000075826}, {"input": [96.5, 76.0], "expected": 96.50000000125016}, {"input": [96.5, 76.5], "expected": 96.50000000206116}, {"input": [96.5, 77.0], "expected": 96.50000000339827}, {"input": [96.5, 77.5], "expected": 96.5000000056028}, {"input": [96.5, 78.0], "expected": 96.50000000923745}, {"input": [96.5, 78.5], "expected": 96.50000001522999}, {"input": [96.5, 79.0], "expected": 96.50000002511}, {"input": [96.5, 79.5], "expected": 96.50000004139937}, {"input": [96.5, 80.0], "expected": 96.50000006825603}, {"input": [96.5, 80.5], "expected": 96.50000011253516}, {"input": [96.5, 81.0], "expected": 96.50000018553912}, {"input": [96.5, 81.5], "expected": 96.50000030590228}, {"input": [96.5, 82.0], "expected": 96.50000050434754}, {"input": [96.5, 82.5], "expected": 96.50000083152837}, {"input": [96.5, 83.0], "expected": 96.50000137095815}, {"input": [96.5, 83.5], "expected": 96.50000226032685}, {"input": [96.5, 84.0], "expected": 96.50000372664623}, {"input": [96.5, 84.5], "expected": 96.50000614419348}, {"input": [96.5, 85.0], "expected": 96.50001013004228}, {"input": [96.5, 85.5], "expected": 96.50001670156132}, {"input": [96.5, 86.0], "expected": 96.50002753607023}, {"input": [96.5, 86.5], "expected": 96.50004539889922}, {"input": [96.5, 87.0], "expected": 96.50007484902864}, {"input": [96.5, 87.5], "expected": 96.50012340218973}, {"input": [96.5, 88.0], "expected": 96.50020344767213}, {"input": [96.5, 88.5], "expected": 96.5003354063729}, {"input": [96.5, 89.0], "expected": 96.50055293147535}, {"input": [96.5, 89.5], "expected": 96.50091146645377}, {"input": [96.5, 90.0], "expected": 96.50150231015975}, {"input": [96.5, 90.5], "expected": 96.50247568513772}, {"input": [96.5, 91.0], "expected": 96.50407844327057}, {"input": [96.5, 91.5], "expected": 96.50671534848912}, {"input": [96.5, 92.0], "expected": 96.5110477448486}, {"input": [96.5, 92.5], "expected": 96.5181499279178}, {"input": [96.5, 93.0], "expected": 96.52975041827263}, {"input": [96.5, 93.5], "expected": 96.54858735157374}, {"input": [96.5, 94.0], "expected": 96.57888973429255}, {"input": [96.5, 94.5], "expected": 96.62692801104298}, {"input": [96.5, 95.0], "expected": 96.70141327798275}, {"input": [96.5, 95.5], "expected": 96.81326168751822}, {"input": [96.5, 96.0], "expected": 96.9740769841801}, {"input": [96.5, 96.5], "expected": 97.19314718055995}, {"input": [96.5, 97.0], "expected": 97.4740769841801}, {"input": [96.5, 97.5], "expected": 97.81326168751822}, {"input": [96.5, 98.0], "expected": 98.20141327798275}, {"input": [96.5, 98.5], "expected": 98.62692801104298}, {"input": [96.5, 99.0], "expected": 99.07888973429255}, {"input": [96.5, 99.5], "expected": 99.54858735157374}, {"input": [97.0, -100.0], "expected": 97.0}, {"input": [97.0, -99.5], "expected": 97.0}, {"input": [97.0, -99.0], "expected": 97.0}, {"input": [97.0, -98.5], "expected": 97.0}, {"input": [97.0, -98.0], "expected": 97.0}, {"input": [97.0, -97.5], "expected": 97.0}, {"input": [97.0, -97.0], "expected": 97.0}, {"input": [97.0, -96.5], "expected": 97.0}, {"input": [97.0, -96.0], "expected": 97.0}, {"input": [97.0, -95.5], "expected": 97.0}, {"input": [97.0, -95.0], "expected": 97.0}, {"input": [97.0, -94.5], "expected": 97.0}, {"input": [97.0, -94.0], "expected": 97.0}, {"input": [97.0, -93.5], "expected": 97.0}, {"input": [97.0, -93.0], "expected": 97.0}, {"input": [97.0, -92.5], "expected": 97.0}, {"input": [97.0, -92.0], "expected": 97.0}, {"input": [97.0, -91.5], "expected": 97.0}, {"input": [97.0, -91.0], "expected": 97.0}, {"input": [97.0, -90.5], "expected": 97.0}, {"input": [97.0, -90.0], "expected": 97.0}, {"input": [97.0, -89.5], "expected": 97.0}, {"input": [97.0, -89.0], "expected": 97.0}, {"input": [97.0, -88.5], "expected": 97.0}, {"input": [97.0, -88.0], "expected": 97.0}, {"input": [97.0, -87.5], "expected": 97.0}, {"input": [97.0, -87.0], "expected": 97.0}, {"input": [97.0, -86.5], "expected": 97.0}, {"input": [97.0, -86.0], "expected": 97.0}, {"input": [97.0, -85.5], "expected": 97.0}, {"input": [97.0, -85.0], "expected": 97.0}, {"input": [97.0, -84.5], "expected": 97.0}, {"input": [97.0, -84.0], "expected": 97.0}, {"input": [97.0, -83.5], "expected": 97.0}, {"input": [97.0, -83.0], "expected": 97.0}, {"input": [97.0, -82.5], "expected": 97.0}, {"input": [97.0, -82.0], "expected": 97.0}, {"input": [97.0, -81.5], "expected": 97.0}, {"input": [97.0, -81.0], "expected": 97.0}, {"input": [97.0, -80.5], "expected": 97.0}, {"input": [97.0, -80.0], "expected": 97.0}, {"input": [97.0, -79.5], "expected": 97.0}, {"input": [97.0, -79.0], "expected": 97.0}, {"input": [97.0, -78.5], "expected": 97.0}, {"input": [97.0, -78.0], "expected": 97.0}, {"input": [97.0, -77.5], "expected": 97.0}, {"input": [97.0, -77.0], "expected": 97.0}, {"input": [97.0, -76.5], "expected": 97.0}, {"input": [97.0, -76.0], "expected": 97.0}, {"input": [97.0, -75.5], "expected": 97.0}, {"input": [97.0, -75.0], "expected": 97.0}, {"input": [97.0, -74.5], "expected": 97.0}, {"input": [97.0, -74.0], "expected": 97.0}, {"input": [97.0, -73.5], "expected": 97.0}, {"input": [97.0, -73.0], "expected": 97.0}, {"input": [97.0, -72.5], "expected": 97.0}, {"input": [97.0, -72.0], "expected": 97.0}, {"input": [97.0, -71.5], "expected": 97.0}, {"input": [97.0, -71.0], "expected": 97.0}, {"input": [97.0, -70.5], "expected": 97.0}, {"input": [97.0, -70.0], "expected": 97.0}, {"input": [97.0, -69.5], "expected": 97.0}, {"input": [97.0, -69.0], "expected": 97.0}, {"input": [97.0, -68.5], "expected": 97.0}, {"input": [97.0, -68.0], "expected": 97.0}, {"input": [97.0, -67.5], "expected": 97.0}, {"input": [97.0, -67.0], "expected": 97.0}, {"input": [97.0, -66.5], "expected": 97.0}, {"input": [97.0, -66.0], "expected": 97.0}, {"input": [97.0, -65.5], "expected": 97.0}, {"input": [97.0, -65.0], "expected": 97.0}, {"input": [97.0, -64.5], "expected": 97.0}, {"input": [97.0, -64.0], "expected": 97.0}, {"input": [97.0, -63.5], "expected": 97.0}, {"input": [97.0, -63.0], "expected": 97.0}, {"input": [97.0, -62.5], "expected": 97.0}, {"input": [97.0, -62.0], "expected": 97.0}, {"input": [97.0, -61.5], "expected": 97.0}, {"input": [97.0, -61.0], "expected": 97.0}, {"input": [97.0, -60.5], "expected": 97.0}, {"input": [97.0, -60.0], "expected": 97.0}, {"input": [97.0, -59.5], "expected": 97.0}, {"input": [97.0, -59.0], "expected": 97.0}, {"input": [97.0, -58.5], "expected": 97.0}, {"input": [97.0, -58.0], "expected": 97.0}, {"input": [97.0, -57.5], "expected": 97.0}, {"input": [97.0, -57.0], "expected": 97.0}, {"input": [97.0, -56.5], "expected": 97.0}, {"input": [97.0, -56.0], "expected": 97.0}, {"input": [97.0, -55.5], "expected": 97.0}, {"input": [97.0, -55.0], "expected": 97.0}, {"input": [97.0, -54.5], "expected": 97.0}, {"input": [97.0, -54.0], "expected": 97.0}, {"input": [97.0, -53.5], "expected": 97.0}, {"input": [97.0, -53.0], "expected": 97.0}, {"input": [97.0, -52.5], "expected": 97.0}, {"input": [97.0, -52.0], "expected": 97.0}, {"input": [97.0, -51.5], "expected": 97.0}, {"input": [97.0, -51.0], "expected": 97.0}, {"input": [97.0, -50.5], "expected": 97.0}, {"input": [97.0, -50.0], "expected": 97.0}, {"input": [97.0, -49.5], "expected": 97.0}, {"input": [97.0, -49.0], "expected": 97.0}, {"input": [97.0, -48.5], "expected": 97.0}, {"input": [97.0, -48.0], "expected": 97.0}, {"input": [97.0, -47.5], "expected": 97.0}, {"input": [97.0, -47.0], "expected": 97.0}, {"input": [97.0, -46.5], "expected": 97.0}, {"input": [97.0, -46.0], "expected": 97.0}, {"input": [97.0, -45.5], "expected": 97.0}, {"input": [97.0, -45.0], "expected": 97.0}, {"input": [97.0, -44.5], "expected": 97.0}, {"input": [97.0, -44.0], "expected": 97.0}, {"input": [97.0, -43.5], "expected": 97.0}, {"input": [97.0, -43.0], "expected": 97.0}, {"input": [97.0, -42.5], "expected": 97.0}, {"input": [97.0, -42.0], "expected": 97.0}, {"input": [97.0, -41.5], "expected": 97.0}, {"input": [97.0, -41.0], "expected": 97.0}, {"input": [97.0, -40.5], "expected": 97.0}, {"input": [97.0, -40.0], "expected": 97.0}, {"input": [97.0, -39.5], "expected": 97.0}, {"input": [97.0, -39.0], "expected": 97.0}, {"input": [97.0, -38.5], "expected": 97.0}, {"input": [97.0, -38.0], "expected": 97.0}, {"input": [97.0, -37.5], "expected": 97.0}, {"input": [97.0, -37.0], "expected": 97.0}, {"input": [97.0, -36.5], "expected": 97.0}, {"input": [97.0, -36.0], "expected": 97.0}, {"input": [97.0, -35.5], "expected": 97.0}, {"input": [97.0, -35.0], "expected": 97.0}, {"input": [97.0, -34.5], "expected": 97.0}, {"input": [97.0, -34.0], "expected": 97.0}, {"input": [97.0, -33.5], "expected": 97.0}, {"input": [97.0, -33.0], "expected": 97.0}, {"input": [97.0, -32.5], "expected": 97.0}, {"input": [97.0, -32.0], "expected": 97.0}, {"input": [97.0, -31.5], "expected": 97.0}, {"input": [97.0, -31.0], "expected": 97.0}, {"input": [97.0, -30.5], "expected": 97.0}, {"input": [97.0, -30.0], "expected": 97.0}, {"input": [97.0, -29.5], "expected": 97.0}, {"input": [97.0, -29.0], "expected": 97.0}, {"input": [97.0, -28.5], "expected": 97.0}, {"input": [97.0, -28.0], "expected": 97.0}, {"input": [97.0, -27.5], "expected": 97.0}, {"input": [97.0, -27.0], "expected": 97.0}, {"input": [97.0, -26.5], "expected": 97.0}, {"input": [97.0, -26.0], "expected": 97.0}, {"input": [97.0, -25.5], "expected": 97.0}, {"input": [97.0, -25.0], "expected": 97.0}, {"input": [97.0, -24.5], "expected": 97.0}, {"input": [97.0, -24.0], "expected": 97.0}, {"input": [97.0, -23.5], "expected": 97.0}, {"input": [97.0, -23.0], "expected": 97.0}, {"input": [97.0, -22.5], "expected": 97.0}, {"input": [97.0, -22.0], "expected": 97.0}, {"input": [97.0, -21.5], "expected": 97.0}, {"input": [97.0, -21.0], "expected": 97.0}, {"input": [97.0, -20.5], "expected": 97.0}, {"input": [97.0, -20.0], "expected": 97.0}, {"input": [97.0, -19.5], "expected": 97.0}, {"input": [97.0, -19.0], "expected": 97.0}, {"input": [97.0, -18.5], "expected": 97.0}, {"input": [97.0, -18.0], "expected": 97.0}, {"input": [97.0, -17.5], "expected": 97.0}, {"input": [97.0, -17.0], "expected": 97.0}, {"input": [97.0, -16.5], "expected": 97.0}, {"input": [97.0, -16.0], "expected": 97.0}, {"input": [97.0, -15.5], "expected": 97.0}, {"input": [97.0, -15.0], "expected": 97.0}, {"input": [97.0, -14.5], "expected": 97.0}, {"input": [97.0, -14.0], "expected": 97.0}, {"input": [97.0, -13.5], "expected": 97.0}, {"input": [97.0, -13.0], "expected": 97.0}, {"input": [97.0, -12.5], "expected": 97.0}, {"input": [97.0, -12.0], "expected": 97.0}, {"input": [97.0, -11.5], "expected": 97.0}, {"input": [97.0, -11.0], "expected": 97.0}, {"input": [97.0, -10.5], "expected": 97.0}, {"input": [97.0, -10.0], "expected": 97.0}, {"input": [97.0, -9.5], "expected": 97.0}, {"input": [97.0, -9.0], "expected": 97.0}, {"input": [97.0, -8.5], "expected": 97.0}, {"input": [97.0, -8.0], "expected": 97.0}, {"input": [97.0, -7.5], "expected": 97.0}, {"input": [97.0, -7.0], "expected": 97.0}, {"input": [97.0, -6.5], "expected": 97.0}, {"input": [97.0, -6.0], "expected": 97.0}, {"input": [97.0, -5.5], "expected": 97.0}, {"input": [97.0, -5.0], "expected": 97.0}, {"input": [97.0, -4.5], "expected": 97.0}, {"input": [97.0, -4.0], "expected": 97.0}, {"input": [97.0, -3.5], "expected": 97.0}, {"input": [97.0, -3.0], "expected": 97.0}, {"input": [97.0, -2.5], "expected": 97.0}, {"input": [97.0, -2.0], "expected": 97.0}, {"input": [97.0, -1.5], "expected": 97.0}, {"input": [97.0, -1.0], "expected": 97.0}, {"input": [97.0, -0.5], "expected": 97.0}, {"input": [97.0, 0.0], "expected": 97.0}, {"input": [97.0, 0.5], "expected": 97.0}, {"input": [97.0, 1.0], "expected": 97.0}, {"input": [97.0, 1.5], "expected": 97.0}, {"input": [97.0, 2.0], "expected": 97.0}, {"input": [97.0, 2.5], "expected": 97.0}, {"input": [97.0, 3.0], "expected": 97.0}, {"input": [97.0, 3.5], "expected": 97.0}, {"input": [97.0, 4.0], "expected": 97.0}, {"input": [97.0, 4.5], "expected": 97.0}, {"input": [97.0, 5.0], "expected": 97.0}, {"input": [97.0, 5.5], "expected": 97.0}, {"input": [97.0, 6.0], "expected": 97.0}, {"input": [97.0, 6.5], "expected": 97.0}, {"input": [97.0, 7.0], "expected": 97.0}, {"input": [97.0, 7.5], "expected": 97.0}, {"input": [97.0, 8.0], "expected": 97.0}, {"input": [97.0, 8.5], "expected": 97.0}, {"input": [97.0, 9.0], "expected": 97.0}, {"input": [97.0, 9.5], "expected": 97.0}, {"input": [97.0, 10.0], "expected": 97.0}, {"input": [97.0, 10.5], "expected": 97.0}, {"input": [97.0, 11.0], "expected": 97.0}, {"input": [97.0, 11.5], "expected": 97.0}, {"input": [97.0, 12.0], "expected": 97.0}, {"input": [97.0, 12.5], "expected": 97.0}, {"input": [97.0, 13.0], "expected": 97.0}, {"input": [97.0, 13.5], "expected": 97.0}, {"input": [97.0, 14.0], "expected": 97.0}, {"input": [97.0, 14.5], "expected": 97.0}, {"input": [97.0, 15.0], "expected": 97.0}, {"input": [97.0, 15.5], "expected": 97.0}, {"input": [97.0, 16.0], "expected": 97.0}, {"input": [97.0, 16.5], "expected": 97.0}, {"input": [97.0, 17.0], "expected": 97.0}, {"input": [97.0, 17.5], "expected": 97.0}, {"input": [97.0, 18.0], "expected": 97.0}, {"input": [97.0, 18.5], "expected": 97.0}, {"input": [97.0, 19.0], "expected": 97.0}, {"input": [97.0, 19.5], "expected": 97.0}, {"input": [97.0, 20.0], "expected": 97.0}, {"input": [97.0, 20.5], "expected": 97.0}, {"input": [97.0, 21.0], "expected": 97.0}, {"input": [97.0, 21.5], "expected": 97.0}, {"input": [97.0, 22.0], "expected": 97.0}, {"input": [97.0, 22.5], "expected": 97.0}, {"input": [97.0, 23.0], "expected": 97.0}, {"input": [97.0, 23.5], "expected": 97.0}, {"input": [97.0, 24.0], "expected": 97.0}, {"input": [97.0, 24.5], "expected": 97.0}, {"input": [97.0, 25.0], "expected": 97.0}, {"input": [97.0, 25.5], "expected": 97.0}, {"input": [97.0, 26.0], "expected": 97.0}, {"input": [97.0, 26.5], "expected": 97.0}, {"input": [97.0, 27.0], "expected": 97.0}, {"input": [97.0, 27.5], "expected": 97.0}, {"input": [97.0, 28.0], "expected": 97.0}, {"input": [97.0, 28.5], "expected": 97.0}, {"input": [97.0, 29.0], "expected": 97.0}, {"input": [97.0, 29.5], "expected": 97.0}, {"input": [97.0, 30.0], "expected": 97.0}, {"input": [97.0, 30.5], "expected": 97.0}, {"input": [97.0, 31.0], "expected": 97.0}, {"input": [97.0, 31.5], "expected": 97.0}, {"input": [97.0, 32.0], "expected": 97.0}, {"input": [97.0, 32.5], "expected": 97.0}, {"input": [97.0, 33.0], "expected": 97.0}, {"input": [97.0, 33.5], "expected": 97.0}, {"input": [97.0, 34.0], "expected": 97.0}, {"input": [97.0, 34.5], "expected": 97.0}, {"input": [97.0, 35.0], "expected": 97.0}, {"input": [97.0, 35.5], "expected": 97.0}, {"input": [97.0, 36.0], "expected": 97.0}, {"input": [97.0, 36.5], "expected": 97.0}, {"input": [97.0, 37.0], "expected": 97.0}, {"input": [97.0, 37.5], "expected": 97.0}, {"input": [97.0, 38.0], "expected": 97.0}, {"input": [97.0, 38.5], "expected": 97.0}, {"input": [97.0, 39.0], "expected": 97.0}, {"input": [97.0, 39.5], "expected": 97.0}, {"input": [97.0, 40.0], "expected": 97.0}, {"input": [97.0, 40.5], "expected": 97.0}, {"input": [97.0, 41.0], "expected": 97.0}, {"input": [97.0, 41.5], "expected": 97.0}, {"input": [97.0, 42.0], "expected": 97.0}, {"input": [97.0, 42.5], "expected": 97.0}, {"input": [97.0, 43.0], "expected": 97.0}, {"input": [97.0, 43.5], "expected": 97.0}, {"input": [97.0, 44.0], "expected": 97.0}, {"input": [97.0, 44.5], "expected": 97.0}, {"input": [97.0, 45.0], "expected": 97.0}, {"input": [97.0, 45.5], "expected": 97.0}, {"input": [97.0, 46.0], "expected": 97.0}, {"input": [97.0, 46.5], "expected": 97.0}, {"input": [97.0, 47.0], "expected": 97.0}, {"input": [97.0, 47.5], "expected": 97.0}, {"input": [97.0, 48.0], "expected": 97.0}, {"input": [97.0, 48.5], "expected": 97.0}, {"input": [97.0, 49.0], "expected": 97.0}, {"input": [97.0, 49.5], "expected": 97.0}, {"input": [97.0, 50.0], "expected": 97.0}, {"input": [97.0, 50.5], "expected": 97.0}, {"input": [97.0, 51.0], "expected": 97.0}, {"input": [97.0, 51.5], "expected": 97.0}, {"input": [97.0, 52.0], "expected": 97.0}, {"input": [97.0, 52.5], "expected": 97.0}, {"input": [97.0, 53.0], "expected": 97.0}, {"input": [97.0, 53.5], "expected": 97.0}, {"input": [97.0, 54.0], "expected": 97.0}, {"input": [97.0, 54.5], "expected": 97.0}, {"input": [97.0, 55.0], "expected": 97.0}, {"input": [97.0, 55.5], "expected": 97.0}, {"input": [97.0, 56.0], "expected": 97.0}, {"input": [97.0, 56.5], "expected": 97.0}, {"input": [97.0, 57.0], "expected": 97.0}, {"input": [97.0, 57.5], "expected": 97.0}, {"input": [97.0, 58.0], "expected": 97.0}, {"input": [97.0, 58.5], "expected": 97.0}, {"input": [97.0, 59.0], "expected": 97.0}, {"input": [97.0, 59.5], "expected": 97.0}, {"input": [97.0, 60.0], "expected": 97.0}, {"input": [97.0, 60.5], "expected": 97.0}, {"input": [97.0, 61.0], "expected": 97.0}, {"input": [97.0, 61.5], "expected": 97.0}, {"input": [97.0, 62.0], "expected": 97.0}, {"input": [97.0, 62.5], "expected": 97.0}, {"input": [97.0, 63.0], "expected": 97.0}, {"input": [97.0, 63.5], "expected": 97.0}, {"input": [97.0, 64.0], "expected": 97.0}, {"input": [97.0, 64.5], "expected": 97.00000000000001}, {"input": [97.0, 65.0], "expected": 97.00000000000001}, {"input": [97.0, 65.5], "expected": 97.00000000000001}, {"input": [97.0, 66.0], "expected": 97.00000000000003}, {"input": [97.0, 66.5], "expected": 97.00000000000006}, {"input": [97.0, 67.0], "expected": 97.0000000000001}, {"input": [97.0, 67.5], "expected": 97.00000000000016}, {"input": [97.0, 68.0], "expected": 97.00000000000026}, {"input": [97.0, 68.5], "expected": 97.00000000000043}, {"input": [97.0, 69.0], "expected": 97.0000000000007}, {"input": [97.0, 69.5], "expected": 97.00000000000114}, {"input": [97.0, 70.0], "expected": 97.00000000000188}, {"input": [97.0, 70.5], "expected": 97.0000000000031}, {"input": [97.0, 71.0], "expected": 97.00000000000512}, {"input": [97.0, 71.5], "expected": 97.00000000000843}, {"input": [97.0, 72.0], "expected": 97.00000000001388}, {"input": [97.0, 72.5], "expected": 97.0000000000229}, {"input": [97.0, 73.0], "expected": 97.00000000003776}, {"input": [97.0, 73.5], "expected": 97.00000000006224}, {"input": [97.0, 74.0], "expected": 97.00000000010262}, {"input": [97.0, 74.5], "expected": 97.0000000001692}, {"input": [97.0, 75.0], "expected": 97.00000000027894}, {"input": [97.0, 75.5], "expected": 97.0000000004599}, {"input": [97.0, 76.0], "expected": 97.00000000075826}, {"input": [97.0, 76.5], "expected": 97.00000000125016}, {"input": [97.0, 77.0], "expected": 97.00000000206116}, {"input": [97.0, 77.5], "expected": 97.00000000339827}, {"input": [97.0, 78.0], "expected": 97.0000000056028}, {"input": [97.0, 78.5], "expected": 97.00000000923745}, {"input": [97.0, 79.0], "expected": 97.00000001522999}, {"input": [97.0, 79.5], "expected": 97.00000002511}, {"input": [97.0, 80.0], "expected": 97.00000004139937}, {"input": [97.0, 80.5], "expected": 97.00000006825603}, {"input": [97.0, 81.0], "expected": 97.00000011253516}, {"input": [97.0, 81.5], "expected": 97.00000018553912}, {"input": [97.0, 82.0], "expected": 97.00000030590228}, {"input": [97.0, 82.5], "expected": 97.00000050434754}, {"input": [97.0, 83.0], "expected": 97.00000083152837}, {"input": [97.0, 83.5], "expected": 97.00000137095815}, {"input": [97.0, 84.0], "expected": 97.00000226032685}, {"input": [97.0, 84.5], "expected": 97.00000372664623}, {"input": [97.0, 85.0], "expected": 97.00000614419348}, {"input": [97.0, 85.5], "expected": 97.00001013004228}, {"input": [97.0, 86.0], "expected": 97.00001670156132}, {"input": [97.0, 86.5], "expected": 97.00002753607023}, {"input": [97.0, 87.0], "expected": 97.00004539889922}, {"input": [97.0, 87.5], "expected": 97.00007484902864}, {"input": [97.0, 88.0], "expected": 97.00012340218973}, {"input": [97.0, 88.5], "expected": 97.00020344767213}, {"input": [97.0, 89.0], "expected": 97.0003354063729}, {"input": [97.0, 89.5], "expected": 97.00055293147535}, {"input": [97.0, 90.0], "expected": 97.00091146645377}, {"input": [97.0, 90.5], "expected": 97.00150231015975}, {"input": [97.0, 91.0], "expected": 97.00247568513772}, {"input": [97.0, 91.5], "expected": 97.00407844327057}, {"input": [97.0, 92.0], "expected": 97.00671534848912}, {"input": [97.0, 92.5], "expected": 97.0110477448486}, {"input": [97.0, 93.0], "expected": 97.0181499279178}, {"input": [97.0, 93.5], "expected": 97.02975041827263}, {"input": [97.0, 94.0], "expected": 97.04858735157374}, {"input": [97.0, 94.5], "expected": 97.07888973429255}, {"input": [97.0, 95.0], "expected": 97.12692801104298}, {"input": [97.0, 95.5], "expected": 97.20141327798275}, {"input": [97.0, 96.0], "expected": 97.31326168751822}, {"input": [97.0, 96.5], "expected": 97.4740769841801}, {"input": [97.0, 97.0], "expected": 97.69314718055995}, {"input": [97.0, 97.5], "expected": 97.9740769841801}, {"input": [97.0, 98.0], "expected": 98.31326168751822}, {"input": [97.0, 98.5], "expected": 98.70141327798275}, {"input": [97.0, 99.0], "expected": 99.12692801104298}, {"input": [97.0, 99.5], "expected": 99.57888973429255}, {"input": [97.5, -100.0], "expected": 97.5}, {"input": [97.5, -99.5], "expected": 97.5}, {"input": [97.5, -99.0], "expected": 97.5}, {"input": [97.5, -98.5], "expected": 97.5}, {"input": [97.5, -98.0], "expected": 97.5}, {"input": [97.5, -97.5], "expected": 97.5}, {"input": [97.5, -97.0], "expected": 97.5}, {"input": [97.5, -96.5], "expected": 97.5}, {"input": [97.5, -96.0], "expected": 97.5}, {"input": [97.5, -95.5], "expected": 97.5}, {"input": [97.5, -95.0], "expected": 97.5}, {"input": [97.5, -94.5], "expected": 97.5}, {"input": [97.5, -94.0], "expected": 97.5}, {"input": [97.5, -93.5], "expected": 97.5}, {"input": [97.5, -93.0], "expected": 97.5}, {"input": [97.5, -92.5], "expected": 97.5}, {"input": [97.5, -92.0], "expected": 97.5}, {"input": [97.5, -91.5], "expected": 97.5}, {"input": [97.5, -91.0], "expected": 97.5}, {"input": [97.5, -90.5], "expected": 97.5}, {"input": [97.5, -90.0], "expected": 97.5}, {"input": [97.5, -89.5], "expected": 97.5}, {"input": [97.5, -89.0], "expected": 97.5}, {"input": [97.5, -88.5], "expected": 97.5}, {"input": [97.5, -88.0], "expected": 97.5}, {"input": [97.5, -87.5], "expected": 97.5}, {"input": [97.5, -87.0], "expected": 97.5}, {"input": [97.5, -86.5], "expected": 97.5}, {"input": [97.5, -86.0], "expected": 97.5}, {"input": [97.5, -85.5], "expected": 97.5}, {"input": [97.5, -85.0], "expected": 97.5}, {"input": [97.5, -84.5], "expected": 97.5}, {"input": [97.5, -84.0], "expected": 97.5}, {"input": [97.5, -83.5], "expected": 97.5}, {"input": [97.5, -83.0], "expected": 97.5}, {"input": [97.5, -82.5], "expected": 97.5}, {"input": [97.5, -82.0], "expected": 97.5}, {"input": [97.5, -81.5], "expected": 97.5}, {"input": [97.5, -81.0], "expected": 97.5}, {"input": [97.5, -80.5], "expected": 97.5}, {"input": [97.5, -80.0], "expected": 97.5}, {"input": [97.5, -79.5], "expected": 97.5}, {"input": [97.5, -79.0], "expected": 97.5}, {"input": [97.5, -78.5], "expected": 97.5}, {"input": [97.5, -78.0], "expected": 97.5}, {"input": [97.5, -77.5], "expected": 97.5}, {"input": [97.5, -77.0], "expected": 97.5}, {"input": [97.5, -76.5], "expected": 97.5}, {"input": [97.5, -76.0], "expected": 97.5}, {"input": [97.5, -75.5], "expected": 97.5}, {"input": [97.5, -75.0], "expected": 97.5}, {"input": [97.5, -74.5], "expected": 97.5}, {"input": [97.5, -74.0], "expected": 97.5}, {"input": [97.5, -73.5], "expected": 97.5}, {"input": [97.5, -73.0], "expected": 97.5}, {"input": [97.5, -72.5], "expected": 97.5}, {"input": [97.5, -72.0], "expected": 97.5}, {"input": [97.5, -71.5], "expected": 97.5}, {"input": [97.5, -71.0], "expected": 97.5}, {"input": [97.5, -70.5], "expected": 97.5}, {"input": [97.5, -70.0], "expected": 97.5}, {"input": [97.5, -69.5], "expected": 97.5}, {"input": [97.5, -69.0], "expected": 97.5}, {"input": [97.5, -68.5], "expected": 97.5}, {"input": [97.5, -68.0], "expected": 97.5}, {"input": [97.5, -67.5], "expected": 97.5}, {"input": [97.5, -67.0], "expected": 97.5}, {"input": [97.5, -66.5], "expected": 97.5}, {"input": [97.5, -66.0], "expected": 97.5}, {"input": [97.5, -65.5], "expected": 97.5}, {"input": [97.5, -65.0], "expected": 97.5}, {"input": [97.5, -64.5], "expected": 97.5}, {"input": [97.5, -64.0], "expected": 97.5}, {"input": [97.5, -63.5], "expected": 97.5}, {"input": [97.5, -63.0], "expected": 97.5}, {"input": [97.5, -62.5], "expected": 97.5}, {"input": [97.5, -62.0], "expected": 97.5}, {"input": [97.5, -61.5], "expected": 97.5}, {"input": [97.5, -61.0], "expected": 97.5}, {"input": [97.5, -60.5], "expected": 97.5}, {"input": [97.5, -60.0], "expected": 97.5}, {"input": [97.5, -59.5], "expected": 97.5}, {"input": [97.5, -59.0], "expected": 97.5}, {"input": [97.5, -58.5], "expected": 97.5}, {"input": [97.5, -58.0], "expected": 97.5}, {"input": [97.5, -57.5], "expected": 97.5}, {"input": [97.5, -57.0], "expected": 97.5}, {"input": [97.5, -56.5], "expected": 97.5}, {"input": [97.5, -56.0], "expected": 97.5}, {"input": [97.5, -55.5], "expected": 97.5}, {"input": [97.5, -55.0], "expected": 97.5}, {"input": [97.5, -54.5], "expected": 97.5}, {"input": [97.5, -54.0], "expected": 97.5}, {"input": [97.5, -53.5], "expected": 97.5}, {"input": [97.5, -53.0], "expected": 97.5}, {"input": [97.5, -52.5], "expected": 97.5}, {"input": [97.5, -52.0], "expected": 97.5}, {"input": [97.5, -51.5], "expected": 97.5}, {"input": [97.5, -51.0], "expected": 97.5}, {"input": [97.5, -50.5], "expected": 97.5}, {"input": [97.5, -50.0], "expected": 97.5}, {"input": [97.5, -49.5], "expected": 97.5}, {"input": [97.5, -49.0], "expected": 97.5}, {"input": [97.5, -48.5], "expected": 97.5}, {"input": [97.5, -48.0], "expected": 97.5}, {"input": [97.5, -47.5], "expected": 97.5}, {"input": [97.5, -47.0], "expected": 97.5}, {"input": [97.5, -46.5], "expected": 97.5}, {"input": [97.5, -46.0], "expected": 97.5}, {"input": [97.5, -45.5], "expected": 97.5}, {"input": [97.5, -45.0], "expected": 97.5}, {"input": [97.5, -44.5], "expected": 97.5}, {"input": [97.5, -44.0], "expected": 97.5}, {"input": [97.5, -43.5], "expected": 97.5}, {"input": [97.5, -43.0], "expected": 97.5}, {"input": [97.5, -42.5], "expected": 97.5}, {"input": [97.5, -42.0], "expected": 97.5}, {"input": [97.5, -41.5], "expected": 97.5}, {"input": [97.5, -41.0], "expected": 97.5}, {"input": [97.5, -40.5], "expected": 97.5}, {"input": [97.5, -40.0], "expected": 97.5}, {"input": [97.5, -39.5], "expected": 97.5}, {"input": [97.5, -39.0], "expected": 97.5}, {"input": [97.5, -38.5], "expected": 97.5}, {"input": [97.5, -38.0], "expected": 97.5}, {"input": [97.5, -37.5], "expected": 97.5}, {"input": [97.5, -37.0], "expected": 97.5}, {"input": [97.5, -36.5], "expected": 97.5}, {"input": [97.5, -36.0], "expected": 97.5}, {"input": [97.5, -35.5], "expected": 97.5}, {"input": [97.5, -35.0], "expected": 97.5}, {"input": [97.5, -34.5], "expected": 97.5}, {"input": [97.5, -34.0], "expected": 97.5}, {"input": [97.5, -33.5], "expected": 97.5}, {"input": [97.5, -33.0], "expected": 97.5}, {"input": [97.5, -32.5], "expected": 97.5}, {"input": [97.5, -32.0], "expected": 97.5}, {"input": [97.5, -31.5], "expected": 97.5}, {"input": [97.5, -31.0], "expected": 97.5}, {"input": [97.5, -30.5], "expected": 97.5}, {"input": [97.5, -30.0], "expected": 97.5}, {"input": [97.5, -29.5], "expected": 97.5}, {"input": [97.5, -29.0], "expected": 97.5}, {"input": [97.5, -28.5], "expected": 97.5}, {"input": [97.5, -28.0], "expected": 97.5}, {"input": [97.5, -27.5], "expected": 97.5}, {"input": [97.5, -27.0], "expected": 97.5}, {"input": [97.5, -26.5], "expected": 97.5}, {"input": [97.5, -26.0], "expected": 97.5}, {"input": [97.5, -25.5], "expected": 97.5}, {"input": [97.5, -25.0], "expected": 97.5}, {"input": [97.5, -24.5], "expected": 97.5}, {"input": [97.5, -24.0], "expected": 97.5}, {"input": [97.5, -23.5], "expected": 97.5}, {"input": [97.5, -23.0], "expected": 97.5}, {"input": [97.5, -22.5], "expected": 97.5}, {"input": [97.5, -22.0], "expected": 97.5}, {"input": [97.5, -21.5], "expected": 97.5}, {"input": [97.5, -21.0], "expected": 97.5}, {"input": [97.5, -20.5], "expected": 97.5}, {"input": [97.5, -20.0], "expected": 97.5}, {"input": [97.5, -19.5], "expected": 97.5}, {"input": [97.5, -19.0], "expected": 97.5}, {"input": [97.5, -18.5], "expected": 97.5}, {"input": [97.5, -18.0], "expected": 97.5}, {"input": [97.5, -17.5], "expected": 97.5}, {"input": [97.5, -17.0], "expected": 97.5}, {"input": [97.5, -16.5], "expected": 97.5}, {"input": [97.5, -16.0], "expected": 97.5}, {"input": [97.5, -15.5], "expected": 97.5}, {"input": [97.5, -15.0], "expected": 97.5}, {"input": [97.5, -14.5], "expected": 97.5}, {"input": [97.5, -14.0], "expected": 97.5}, {"input": [97.5, -13.5], "expected": 97.5}, {"input": [97.5, -13.0], "expected": 97.5}, {"input": [97.5, -12.5], "expected": 97.5}, {"input": [97.5, -12.0], "expected": 97.5}, {"input": [97.5, -11.5], "expected": 97.5}, {"input": [97.5, -11.0], "expected": 97.5}, {"input": [97.5, -10.5], "expected": 97.5}, {"input": [97.5, -10.0], "expected": 97.5}, {"input": [97.5, -9.5], "expected": 97.5}, {"input": [97.5, -9.0], "expected": 97.5}, {"input": [97.5, -8.5], "expected": 97.5}, {"input": [97.5, -8.0], "expected": 97.5}, {"input": [97.5, -7.5], "expected": 97.5}, {"input": [97.5, -7.0], "expected": 97.5}, {"input": [97.5, -6.5], "expected": 97.5}, {"input": [97.5, -6.0], "expected": 97.5}, {"input": [97.5, -5.5], "expected": 97.5}, {"input": [97.5, -5.0], "expected": 97.5}, {"input": [97.5, -4.5], "expected": 97.5}, {"input": [97.5, -4.0], "expected": 97.5}, {"input": [97.5, -3.5], "expected": 97.5}, {"input": [97.5, -3.0], "expected": 97.5}, {"input": [97.5, -2.5], "expected": 97.5}, {"input": [97.5, -2.0], "expected": 97.5}, {"input": [97.5, -1.5], "expected": 97.5}, {"input": [97.5, -1.0], "expected": 97.5}, {"input": [97.5, -0.5], "expected": 97.5}, {"input": [97.5, 0.0], "expected": 97.5}, {"input": [97.5, 0.5], "expected": 97.5}, {"input": [97.5, 1.0], "expected": 97.5}, {"input": [97.5, 1.5], "expected": 97.5}, {"input": [97.5, 2.0], "expected": 97.5}, {"input": [97.5, 2.5], "expected": 97.5}, {"input": [97.5, 3.0], "expected": 97.5}, {"input": [97.5, 3.5], "expected": 97.5}, {"input": [97.5, 4.0], "expected": 97.5}, {"input": [97.5, 4.5], "expected": 97.5}, {"input": [97.5, 5.0], "expected": 97.5}, {"input": [97.5, 5.5], "expected": 97.5}, {"input": [97.5, 6.0], "expected": 97.5}, {"input": [97.5, 6.5], "expected": 97.5}, {"input": [97.5, 7.0], "expected": 97.5}, {"input": [97.5, 7.5], "expected": 97.5}, {"input": [97.5, 8.0], "expected": 97.5}, {"input": [97.5, 8.5], "expected": 97.5}, {"input": [97.5, 9.0], "expected": 97.5}, {"input": [97.5, 9.5], "expected": 97.5}, {"input": [97.5, 10.0], "expected": 97.5}, {"input": [97.5, 10.5], "expected": 97.5}, {"input": [97.5, 11.0], "expected": 97.5}, {"input": [97.5, 11.5], "expected": 97.5}, {"input": [97.5, 12.0], "expected": 97.5}, {"input": [97.5, 12.5], "expected": 97.5}, {"input": [97.5, 13.0], "expected": 97.5}, {"input": [97.5, 13.5], "expected": 97.5}, {"input": [97.5, 14.0], "expected": 97.5}, {"input": [97.5, 14.5], "expected": 97.5}, {"input": [97.5, 15.0], "expected": 97.5}, {"input": [97.5, 15.5], "expected": 97.5}, {"input": [97.5, 16.0], "expected": 97.5}, {"input": [97.5, 16.5], "expected": 97.5}, {"input": [97.5, 17.0], "expected": 97.5}, {"input": [97.5, 17.5], "expected": 97.5}, {"input": [97.5, 18.0], "expected": 97.5}, {"input": [97.5, 18.5], "expected": 97.5}, {"input": [97.5, 19.0], "expected": 97.5}, {"input": [97.5, 19.5], "expected": 97.5}, {"input": [97.5, 20.0], "expected": 97.5}, {"input": [97.5, 20.5], "expected": 97.5}, {"input": [97.5, 21.0], "expected": 97.5}, {"input": [97.5, 21.5], "expected": 97.5}, {"input": [97.5, 22.0], "expected": 97.5}, {"input": [97.5, 22.5], "expected": 97.5}, {"input": [97.5, 23.0], "expected": 97.5}, {"input": [97.5, 23.5], "expected": 97.5}, {"input": [97.5, 24.0], "expected": 97.5}, {"input": [97.5, 24.5], "expected": 97.5}, {"input": [97.5, 25.0], "expected": 97.5}, {"input": [97.5, 25.5], "expected": 97.5}, {"input": [97.5, 26.0], "expected": 97.5}, {"input": [97.5, 26.5], "expected": 97.5}, {"input": [97.5, 27.0], "expected": 97.5}, {"input": [97.5, 27.5], "expected": 97.5}, {"input": [97.5, 28.0], "expected": 97.5}, {"input": [97.5, 28.5], "expected": 97.5}, {"input": [97.5, 29.0], "expected": 97.5}, {"input": [97.5, 29.5], "expected": 97.5}, {"input": [97.5, 30.0], "expected": 97.5}, {"input": [97.5, 30.5], "expected": 97.5}, {"input": [97.5, 31.0], "expected": 97.5}, {"input": [97.5, 31.5], "expected": 97.5}, {"input": [97.5, 32.0], "expected": 97.5}, {"input": [97.5, 32.5], "expected": 97.5}, {"input": [97.5, 33.0], "expected": 97.5}, {"input": [97.5, 33.5], "expected": 97.5}, {"input": [97.5, 34.0], "expected": 97.5}, {"input": [97.5, 34.5], "expected": 97.5}, {"input": [97.5, 35.0], "expected": 97.5}, {"input": [97.5, 35.5], "expected": 97.5}, {"input": [97.5, 36.0], "expected": 97.5}, {"input": [97.5, 36.5], "expected": 97.5}, {"input": [97.5, 37.0], "expected": 97.5}, {"input": [97.5, 37.5], "expected": 97.5}, {"input": [97.5, 38.0], "expected": 97.5}, {"input": [97.5, 38.5], "expected": 97.5}, {"input": [97.5, 39.0], "expected": 97.5}, {"input": [97.5, 39.5], "expected": 97.5}, {"input": [97.5, 40.0], "expected": 97.5}, {"input": [97.5, 40.5], "expected": 97.5}, {"input": [97.5, 41.0], "expected": 97.5}, {"input": [97.5, 41.5], "expected": 97.5}, {"input": [97.5, 42.0], "expected": 97.5}, {"input": [97.5, 42.5], "expected": 97.5}, {"input": [97.5, 43.0], "expected": 97.5}, {"input": [97.5, 43.5], "expected": 97.5}, {"input": [97.5, 44.0], "expected": 97.5}, {"input": [97.5, 44.5], "expected": 97.5}, {"input": [97.5, 45.0], "expected": 97.5}, {"input": [97.5, 45.5], "expected": 97.5}, {"input": [97.5, 46.0], "expected": 97.5}, {"input": [97.5, 46.5], "expected": 97.5}, {"input": [97.5, 47.0], "expected": 97.5}, {"input": [97.5, 47.5], "expected": 97.5}, {"input": [97.5, 48.0], "expected": 97.5}, {"input": [97.5, 48.5], "expected": 97.5}, {"input": [97.5, 49.0], "expected": 97.5}, {"input": [97.5, 49.5], "expected": 97.5}, {"input": [97.5, 50.0], "expected": 97.5}, {"input": [97.5, 50.5], "expected": 97.5}, {"input": [97.5, 51.0], "expected": 97.5}, {"input": [97.5, 51.5], "expected": 97.5}, {"input": [97.5, 52.0], "expected": 97.5}, {"input": [97.5, 52.5], "expected": 97.5}, {"input": [97.5, 53.0], "expected": 97.5}, {"input": [97.5, 53.5], "expected": 97.5}, {"input": [97.5, 54.0], "expected": 97.5}, {"input": [97.5, 54.5], "expected": 97.5}, {"input": [97.5, 55.0], "expected": 97.5}, {"input": [97.5, 55.5], "expected": 97.5}, {"input": [97.5, 56.0], "expected": 97.5}, {"input": [97.5, 56.5], "expected": 97.5}, {"input": [97.5, 57.0], "expected": 97.5}, {"input": [97.5, 57.5], "expected": 97.5}, {"input": [97.5, 58.0], "expected": 97.5}, {"input": [97.5, 58.5], "expected": 97.5}, {"input": [97.5, 59.0], "expected": 97.5}, {"input": [97.5, 59.5], "expected": 97.5}, {"input": [97.5, 60.0], "expected": 97.5}, {"input": [97.5, 60.5], "expected": 97.5}, {"input": [97.5, 61.0], "expected": 97.5}, {"input": [97.5, 61.5], "expected": 97.5}, {"input": [97.5, 62.0], "expected": 97.5}, {"input": [97.5, 62.5], "expected": 97.5}, {"input": [97.5, 63.0], "expected": 97.5}, {"input": [97.5, 63.5], "expected": 97.5}, {"input": [97.5, 64.0], "expected": 97.5}, {"input": [97.5, 64.5], "expected": 97.5}, {"input": [97.5, 65.0], "expected": 97.50000000000001}, {"input": [97.5, 65.5], "expected": 97.50000000000001}, {"input": [97.5, 66.0], "expected": 97.50000000000001}, {"input": [97.5, 66.5], "expected": 97.50000000000003}, {"input": [97.5, 67.0], "expected": 97.50000000000006}, {"input": [97.5, 67.5], "expected": 97.5000000000001}, {"input": [97.5, 68.0], "expected": 97.50000000000016}, {"input": [97.5, 68.5], "expected": 97.50000000000026}, {"input": [97.5, 69.0], "expected": 97.50000000000043}, {"input": [97.5, 69.5], "expected": 97.5000000000007}, {"input": [97.5, 70.0], "expected": 97.50000000000114}, {"input": [97.5, 70.5], "expected": 97.50000000000188}, {"input": [97.5, 71.0], "expected": 97.5000000000031}, {"input": [97.5, 71.5], "expected": 97.50000000000512}, {"input": [97.5, 72.0], "expected": 97.50000000000843}, {"input": [97.5, 72.5], "expected": 97.50000000001388}, {"input": [97.5, 73.0], "expected": 97.5000000000229}, {"input": [97.5, 73.5], "expected": 97.50000000003776}, {"input": [97.5, 74.0], "expected": 97.50000000006224}, {"input": [97.5, 74.5], "expected": 97.50000000010262}, {"input": [97.5, 75.0], "expected": 97.5000000001692}, {"input": [97.5, 75.5], "expected": 97.50000000027894}, {"input": [97.5, 76.0], "expected": 97.5000000004599}, {"input": [97.5, 76.5], "expected": 97.50000000075826}, {"input": [97.5, 77.0], "expected": 97.50000000125016}, {"input": [97.5, 77.5], "expected": 97.50000000206116}, {"input": [97.5, 78.0], "expected": 97.50000000339827}, {"input": [97.5, 78.5], "expected": 97.5000000056028}, {"input": [97.5, 79.0], "expected": 97.50000000923745}, {"input": [97.5, 79.5], "expected": 97.50000001522999}, {"input": [97.5, 80.0], "expected": 97.50000002511}, {"input": [97.5, 80.5], "expected": 97.50000004139937}, {"input": [97.5, 81.0], "expected": 97.50000006825603}, {"input": [97.5, 81.5], "expected": 97.50000011253516}, {"input": [97.5, 82.0], "expected": 97.50000018553912}, {"input": [97.5, 82.5], "expected": 97.50000030590228}, {"input": [97.5, 83.0], "expected": 97.50000050434754}, {"input": [97.5, 83.5], "expected": 97.50000083152837}, {"input": [97.5, 84.0], "expected": 97.50000137095815}, {"input": [97.5, 84.5], "expected": 97.50000226032685}, {"input": [97.5, 85.0], "expected": 97.50000372664623}, {"input": [97.5, 85.5], "expected": 97.50000614419348}, {"input": [97.5, 86.0], "expected": 97.50001013004228}, {"input": [97.5, 86.5], "expected": 97.50001670156132}, {"input": [97.5, 87.0], "expected": 97.50002753607023}, {"input": [97.5, 87.5], "expected": 97.50004539889922}, {"input": [97.5, 88.0], "expected": 97.50007484902864}, {"input": [97.5, 88.5], "expected": 97.50012340218973}, {"input": [97.5, 89.0], "expected": 97.50020344767213}, {"input": [97.5, 89.5], "expected": 97.5003354063729}, {"input": [97.5, 90.0], "expected": 97.50055293147535}, {"input": [97.5, 90.5], "expected": 97.50091146645377}, {"input": [97.5, 91.0], "expected": 97.50150231015975}, {"input": [97.5, 91.5], "expected": 97.50247568513772}, {"input": [97.5, 92.0], "expected": 97.50407844327057}, {"input": [97.5, 92.5], "expected": 97.50671534848912}, {"input": [97.5, 93.0], "expected": 97.5110477448486}, {"input": [97.5, 93.5], "expected": 97.5181499279178}, {"input": [97.5, 94.0], "expected": 97.52975041827263}, {"input": [97.5, 94.5], "expected": 97.54858735157374}, {"input": [97.5, 95.0], "expected": 97.57888973429255}, {"input": [97.5, 95.5], "expected": 97.62692801104298}, {"input": [97.5, 96.0], "expected": 97.70141327798275}, {"input": [97.5, 96.5], "expected": 97.81326168751822}, {"input": [97.5, 97.0], "expected": 97.9740769841801}, {"input": [97.5, 97.5], "expected": 98.19314718055995}, {"input": [97.5, 98.0], "expected": 98.4740769841801}, {"input": [97.5, 98.5], "expected": 98.81326168751822}, {"input": [97.5, 99.0], "expected": 99.20141327798275}, {"input": [97.5, 99.5], "expected": 99.62692801104298}, {"input": [98.0, -100.0], "expected": 98.0}, {"input": [98.0, -99.5], "expected": 98.0}, {"input": [98.0, -99.0], "expected": 98.0}, {"input": [98.0, -98.5], "expected": 98.0}, {"input": [98.0, -98.0], "expected": 98.0}, {"input": [98.0, -97.5], "expected": 98.0}, {"input": [98.0, -97.0], "expected": 98.0}, {"input": [98.0, -96.5], "expected": 98.0}, {"input": [98.0, -96.0], "expected": 98.0}, {"input": [98.0, -95.5], "expected": 98.0}, {"input": [98.0, -95.0], "expected": 98.0}, {"input": [98.0, -94.5], "expected": 98.0}, {"input": [98.0, -94.0], "expected": 98.0}, {"input": [98.0, -93.5], "expected": 98.0}, {"input": [98.0, -93.0], "expected": 98.0}, {"input": [98.0, -92.5], "expected": 98.0}, {"input": [98.0, -92.0], "expected": 98.0}, {"input": [98.0, -91.5], "expected": 98.0}, {"input": [98.0, -91.0], "expected": 98.0}, {"input": [98.0, -90.5], "expected": 98.0}, {"input": [98.0, -90.0], "expected": 98.0}, {"input": [98.0, -89.5], "expected": 98.0}, {"input": [98.0, -89.0], "expected": 98.0}, {"input": [98.0, -88.5], "expected": 98.0}, {"input": [98.0, -88.0], "expected": 98.0}, {"input": [98.0, -87.5], "expected": 98.0}, {"input": [98.0, -87.0], "expected": 98.0}, {"input": [98.0, -86.5], "expected": 98.0}, {"input": [98.0, -86.0], "expected": 98.0}, {"input": [98.0, -85.5], "expected": 98.0}, {"input": [98.0, -85.0], "expected": 98.0}, {"input": [98.0, -84.5], "expected": 98.0}, {"input": [98.0, -84.0], "expected": 98.0}, {"input": [98.0, -83.5], "expected": 98.0}, {"input": [98.0, -83.0], "expected": 98.0}, {"input": [98.0, -82.5], "expected": 98.0}, {"input": [98.0, -82.0], "expected": 98.0}, {"input": [98.0, -81.5], "expected": 98.0}, {"input": [98.0, -81.0], "expected": 98.0}, {"input": [98.0, -80.5], "expected": 98.0}, {"input": [98.0, -80.0], "expected": 98.0}, {"input": [98.0, -79.5], "expected": 98.0}, {"input": [98.0, -79.0], "expected": 98.0}, {"input": [98.0, -78.5], "expected": 98.0}, {"input": [98.0, -78.0], "expected": 98.0}, {"input": [98.0, -77.5], "expected": 98.0}, {"input": [98.0, -77.0], "expected": 98.0}, {"input": [98.0, -76.5], "expected": 98.0}, {"input": [98.0, -76.0], "expected": 98.0}, {"input": [98.0, -75.5], "expected": 98.0}, {"input": [98.0, -75.0], "expected": 98.0}, {"input": [98.0, -74.5], "expected": 98.0}, {"input": [98.0, -74.0], "expected": 98.0}, {"input": [98.0, -73.5], "expected": 98.0}, {"input": [98.0, -73.0], "expected": 98.0}, {"input": [98.0, -72.5], "expected": 98.0}, {"input": [98.0, -72.0], "expected": 98.0}, {"input": [98.0, -71.5], "expected": 98.0}, {"input": [98.0, -71.0], "expected": 98.0}, {"input": [98.0, -70.5], "expected": 98.0}, {"input": [98.0, -70.0], "expected": 98.0}, {"input": [98.0, -69.5], "expected": 98.0}, {"input": [98.0, -69.0], "expected": 98.0}, {"input": [98.0, -68.5], "expected": 98.0}, {"input": [98.0, -68.0], "expected": 98.0}, {"input": [98.0, -67.5], "expected": 98.0}, {"input": [98.0, -67.0], "expected": 98.0}, {"input": [98.0, -66.5], "expected": 98.0}, {"input": [98.0, -66.0], "expected": 98.0}, {"input": [98.0, -65.5], "expected": 98.0}, {"input": [98.0, -65.0], "expected": 98.0}, {"input": [98.0, -64.5], "expected": 98.0}, {"input": [98.0, -64.0], "expected": 98.0}, {"input": [98.0, -63.5], "expected": 98.0}, {"input": [98.0, -63.0], "expected": 98.0}, {"input": [98.0, -62.5], "expected": 98.0}, {"input": [98.0, -62.0], "expected": 98.0}, {"input": [98.0, -61.5], "expected": 98.0}, {"input": [98.0, -61.0], "expected": 98.0}, {"input": [98.0, -60.5], "expected": 98.0}, {"input": [98.0, -60.0], "expected": 98.0}, {"input": [98.0, -59.5], "expected": 98.0}, {"input": [98.0, -59.0], "expected": 98.0}, {"input": [98.0, -58.5], "expected": 98.0}, {"input": [98.0, -58.0], "expected": 98.0}, {"input": [98.0, -57.5], "expected": 98.0}, {"input": [98.0, -57.0], "expected": 98.0}, {"input": [98.0, -56.5], "expected": 98.0}, {"input": [98.0, -56.0], "expected": 98.0}, {"input": [98.0, -55.5], "expected": 98.0}, {"input": [98.0, -55.0], "expected": 98.0}, {"input": [98.0, -54.5], "expected": 98.0}, {"input": [98.0, -54.0], "expected": 98.0}, {"input": [98.0, -53.5], "expected": 98.0}, {"input": [98.0, -53.0], "expected": 98.0}, {"input": [98.0, -52.5], "expected": 98.0}, {"input": [98.0, -52.0], "expected": 98.0}, {"input": [98.0, -51.5], "expected": 98.0}, {"input": [98.0, -51.0], "expected": 98.0}, {"input": [98.0, -50.5], "expected": 98.0}, {"input": [98.0, -50.0], "expected": 98.0}, {"input": [98.0, -49.5], "expected": 98.0}, {"input": [98.0, -49.0], "expected": 98.0}, {"input": [98.0, -48.5], "expected": 98.0}, {"input": [98.0, -48.0], "expected": 98.0}, {"input": [98.0, -47.5], "expected": 98.0}, {"input": [98.0, -47.0], "expected": 98.0}, {"input": [98.0, -46.5], "expected": 98.0}, {"input": [98.0, -46.0], "expected": 98.0}, {"input": [98.0, -45.5], "expected": 98.0}, {"input": [98.0, -45.0], "expected": 98.0}, {"input": [98.0, -44.5], "expected": 98.0}, {"input": [98.0, -44.0], "expected": 98.0}, {"input": [98.0, -43.5], "expected": 98.0}, {"input": [98.0, -43.0], "expected": 98.0}, {"input": [98.0, -42.5], "expected": 98.0}, {"input": [98.0, -42.0], "expected": 98.0}, {"input": [98.0, -41.5], "expected": 98.0}, {"input": [98.0, -41.0], "expected": 98.0}, {"input": [98.0, -40.5], "expected": 98.0}, {"input": [98.0, -40.0], "expected": 98.0}, {"input": [98.0, -39.5], "expected": 98.0}, {"input": [98.0, -39.0], "expected": 98.0}, {"input": [98.0, -38.5], "expected": 98.0}, {"input": [98.0, -38.0], "expected": 98.0}, {"input": [98.0, -37.5], "expected": 98.0}, {"input": [98.0, -37.0], "expected": 98.0}, {"input": [98.0, -36.5], "expected": 98.0}, {"input": [98.0, -36.0], "expected": 98.0}, {"input": [98.0, -35.5], "expected": 98.0}, {"input": [98.0, -35.0], "expected": 98.0}, {"input": [98.0, -34.5], "expected": 98.0}, {"input": [98.0, -34.0], "expected": 98.0}, {"input": [98.0, -33.5], "expected": 98.0}, {"input": [98.0, -33.0], "expected": 98.0}, {"input": [98.0, -32.5], "expected": 98.0}, {"input": [98.0, -32.0], "expected": 98.0}, {"input": [98.0, -31.5], "expected": 98.0}, {"input": [98.0, -31.0], "expected": 98.0}, {"input": [98.0, -30.5], "expected": 98.0}, {"input": [98.0, -30.0], "expected": 98.0}, {"input": [98.0, -29.5], "expected": 98.0}, {"input": [98.0, -29.0], "expected": 98.0}, {"input": [98.0, -28.5], "expected": 98.0}, {"input": [98.0, -28.0], "expected": 98.0}, {"input": [98.0, -27.5], "expected": 98.0}, {"input": [98.0, -27.0], "expected": 98.0}, {"input": [98.0, -26.5], "expected": 98.0}, {"input": [98.0, -26.0], "expected": 98.0}, {"input": [98.0, -25.5], "expected": 98.0}, {"input": [98.0, -25.0], "expected": 98.0}, {"input": [98.0, -24.5], "expected": 98.0}, {"input": [98.0, -24.0], "expected": 98.0}, {"input": [98.0, -23.5], "expected": 98.0}, {"input": [98.0, -23.0], "expected": 98.0}, {"input": [98.0, -22.5], "expected": 98.0}, {"input": [98.0, -22.0], "expected": 98.0}, {"input": [98.0, -21.5], "expected": 98.0}, {"input": [98.0, -21.0], "expected": 98.0}, {"input": [98.0, -20.5], "expected": 98.0}, {"input": [98.0, -20.0], "expected": 98.0}, {"input": [98.0, -19.5], "expected": 98.0}, {"input": [98.0, -19.0], "expected": 98.0}, {"input": [98.0, -18.5], "expected": 98.0}, {"input": [98.0, -18.0], "expected": 98.0}, {"input": [98.0, -17.5], "expected": 98.0}, {"input": [98.0, -17.0], "expected": 98.0}, {"input": [98.0, -16.5], "expected": 98.0}, {"input": [98.0, -16.0], "expected": 98.0}, {"input": [98.0, -15.5], "expected": 98.0}, {"input": [98.0, -15.0], "expected": 98.0}, {"input": [98.0, -14.5], "expected": 98.0}, {"input": [98.0, -14.0], "expected": 98.0}, {"input": [98.0, -13.5], "expected": 98.0}, {"input": [98.0, -13.0], "expected": 98.0}, {"input": [98.0, -12.5], "expected": 98.0}, {"input": [98.0, -12.0], "expected": 98.0}, {"input": [98.0, -11.5], "expected": 98.0}, {"input": [98.0, -11.0], "expected": 98.0}, {"input": [98.0, -10.5], "expected": 98.0}, {"input": [98.0, -10.0], "expected": 98.0}, {"input": [98.0, -9.5], "expected": 98.0}, {"input": [98.0, -9.0], "expected": 98.0}, {"input": [98.0, -8.5], "expected": 98.0}, {"input": [98.0, -8.0], "expected": 98.0}, {"input": [98.0, -7.5], "expected": 98.0}, {"input": [98.0, -7.0], "expected": 98.0}, {"input": [98.0, -6.5], "expected": 98.0}, {"input": [98.0, -6.0], "expected": 98.0}, {"input": [98.0, -5.5], "expected": 98.0}, {"input": [98.0, -5.0], "expected": 98.0}, {"input": [98.0, -4.5], "expected": 98.0}, {"input": [98.0, -4.0], "expected": 98.0}, {"input": [98.0, -3.5], "expected": 98.0}, {"input": [98.0, -3.0], "expected": 98.0}, {"input": [98.0, -2.5], "expected": 98.0}, {"input": [98.0, -2.0], "expected": 98.0}, {"input": [98.0, -1.5], "expected": 98.0}, {"input": [98.0, -1.0], "expected": 98.0}, {"input": [98.0, -0.5], "expected": 98.0}, {"input": [98.0, 0.0], "expected": 98.0}, {"input": [98.0, 0.5], "expected": 98.0}, {"input": [98.0, 1.0], "expected": 98.0}, {"input": [98.0, 1.5], "expected": 98.0}, {"input": [98.0, 2.0], "expected": 98.0}, {"input": [98.0, 2.5], "expected": 98.0}, {"input": [98.0, 3.0], "expected": 98.0}, {"input": [98.0, 3.5], "expected": 98.0}, {"input": [98.0, 4.0], "expected": 98.0}, {"input": [98.0, 4.5], "expected": 98.0}, {"input": [98.0, 5.0], "expected": 98.0}, {"input": [98.0, 5.5], "expected": 98.0}, {"input": [98.0, 6.0], "expected": 98.0}, {"input": [98.0, 6.5], "expected": 98.0}, {"input": [98.0, 7.0], "expected": 98.0}, {"input": [98.0, 7.5], "expected": 98.0}, {"input": [98.0, 8.0], "expected": 98.0}, {"input": [98.0, 8.5], "expected": 98.0}, {"input": [98.0, 9.0], "expected": 98.0}, {"input": [98.0, 9.5], "expected": 98.0}, {"input": [98.0, 10.0], "expected": 98.0}, {"input": [98.0, 10.5], "expected": 98.0}, {"input": [98.0, 11.0], "expected": 98.0}, {"input": [98.0, 11.5], "expected": 98.0}, {"input": [98.0, 12.0], "expected": 98.0}, {"input": [98.0, 12.5], "expected": 98.0}, {"input": [98.0, 13.0], "expected": 98.0}, {"input": [98.0, 13.5], "expected": 98.0}, {"input": [98.0, 14.0], "expected": 98.0}, {"input": [98.0, 14.5], "expected": 98.0}, {"input": [98.0, 15.0], "expected": 98.0}, {"input": [98.0, 15.5], "expected": 98.0}, {"input": [98.0, 16.0], "expected": 98.0}, {"input": [98.0, 16.5], "expected": 98.0}, {"input": [98.0, 17.0], "expected": 98.0}, {"input": [98.0, 17.5], "expected": 98.0}, {"input": [98.0, 18.0], "expected": 98.0}, {"input": [98.0, 18.5], "expected": 98.0}, {"input": [98.0, 19.0], "expected": 98.0}, {"input": [98.0, 19.5], "expected": 98.0}, {"input": [98.0, 20.0], "expected": 98.0}, {"input": [98.0, 20.5], "expected": 98.0}, {"input": [98.0, 21.0], "expected": 98.0}, {"input": [98.0, 21.5], "expected": 98.0}, {"input": [98.0, 22.0], "expected": 98.0}, {"input": [98.0, 22.5], "expected": 98.0}, {"input": [98.0, 23.0], "expected": 98.0}, {"input": [98.0, 23.5], "expected": 98.0}, {"input": [98.0, 24.0], "expected": 98.0}, {"input": [98.0, 24.5], "expected": 98.0}, {"input": [98.0, 25.0], "expected": 98.0}, {"input": [98.0, 25.5], "expected": 98.0}, {"input": [98.0, 26.0], "expected": 98.0}, {"input": [98.0, 26.5], "expected": 98.0}, {"input": [98.0, 27.0], "expected": 98.0}, {"input": [98.0, 27.5], "expected": 98.0}, {"input": [98.0, 28.0], "expected": 98.0}, {"input": [98.0, 28.5], "expected": 98.0}, {"input": [98.0, 29.0], "expected": 98.0}, {"input": [98.0, 29.5], "expected": 98.0}, {"input": [98.0, 30.0], "expected": 98.0}, {"input": [98.0, 30.5], "expected": 98.0}, {"input": [98.0, 31.0], "expected": 98.0}, {"input": [98.0, 31.5], "expected": 98.0}, {"input": [98.0, 32.0], "expected": 98.0}, {"input": [98.0, 32.5], "expected": 98.0}, {"input": [98.0, 33.0], "expected": 98.0}, {"input": [98.0, 33.5], "expected": 98.0}, {"input": [98.0, 34.0], "expected": 98.0}, {"input": [98.0, 34.5], "expected": 98.0}, {"input": [98.0, 35.0], "expected": 98.0}, {"input": [98.0, 35.5], "expected": 98.0}, {"input": [98.0, 36.0], "expected": 98.0}, {"input": [98.0, 36.5], "expected": 98.0}, {"input": [98.0, 37.0], "expected": 98.0}, {"input": [98.0, 37.5], "expected": 98.0}, {"input": [98.0, 38.0], "expected": 98.0}, {"input": [98.0, 38.5], "expected": 98.0}, {"input": [98.0, 39.0], "expected": 98.0}, {"input": [98.0, 39.5], "expected": 98.0}, {"input": [98.0, 40.0], "expected": 98.0}, {"input": [98.0, 40.5], "expected": 98.0}, {"input": [98.0, 41.0], "expected": 98.0}, {"input": [98.0, 41.5], "expected": 98.0}, {"input": [98.0, 42.0], "expected": 98.0}, {"input": [98.0, 42.5], "expected": 98.0}, {"input": [98.0, 43.0], "expected": 98.0}, {"input": [98.0, 43.5], "expected": 98.0}, {"input": [98.0, 44.0], "expected": 98.0}, {"input": [98.0, 44.5], "expected": 98.0}, {"input": [98.0, 45.0], "expected": 98.0}, {"input": [98.0, 45.5], "expected": 98.0}, {"input": [98.0, 46.0], "expected": 98.0}, {"input": [98.0, 46.5], "expected": 98.0}, {"input": [98.0, 47.0], "expected": 98.0}, {"input": [98.0, 47.5], "expected": 98.0}, {"input": [98.0, 48.0], "expected": 98.0}, {"input": [98.0, 48.5], "expected": 98.0}, {"input": [98.0, 49.0], "expected": 98.0}, {"input": [98.0, 49.5], "expected": 98.0}, {"input": [98.0, 50.0], "expected": 98.0}, {"input": [98.0, 50.5], "expected": 98.0}, {"input": [98.0, 51.0], "expected": 98.0}, {"input": [98.0, 51.5], "expected": 98.0}, {"input": [98.0, 52.0], "expected": 98.0}, {"input": [98.0, 52.5], "expected": 98.0}, {"input": [98.0, 53.0], "expected": 98.0}, {"input": [98.0, 53.5], "expected": 98.0}, {"input": [98.0, 54.0], "expected": 98.0}, {"input": [98.0, 54.5], "expected": 98.0}, {"input": [98.0, 55.0], "expected": 98.0}, {"input": [98.0, 55.5], "expected": 98.0}, {"input": [98.0, 56.0], "expected": 98.0}, {"input": [98.0, 56.5], "expected": 98.0}, {"input": [98.0, 57.0], "expected": 98.0}, {"input": [98.0, 57.5], "expected": 98.0}, {"input": [98.0, 58.0], "expected": 98.0}, {"input": [98.0, 58.5], "expected": 98.0}, {"input": [98.0, 59.0], "expected": 98.0}, {"input": [98.0, 59.5], "expected": 98.0}, {"input": [98.0, 60.0], "expected": 98.0}, {"input": [98.0, 60.5], "expected": 98.0}, {"input": [98.0, 61.0], "expected": 98.0}, {"input": [98.0, 61.5], "expected": 98.0}, {"input": [98.0, 62.0], "expected": 98.0}, {"input": [98.0, 62.5], "expected": 98.0}, {"input": [98.0, 63.0], "expected": 98.0}, {"input": [98.0, 63.5], "expected": 98.0}, {"input": [98.0, 64.0], "expected": 98.0}, {"input": [98.0, 64.5], "expected": 98.0}, {"input": [98.0, 65.0], "expected": 98.0}, {"input": [98.0, 65.5], "expected": 98.00000000000001}, {"input": [98.0, 66.0], "expected": 98.00000000000001}, {"input": [98.0, 66.5], "expected": 98.00000000000001}, {"input": [98.0, 67.0], "expected": 98.00000000000003}, {"input": [98.0, 67.5], "expected": 98.00000000000006}, {"input": [98.0, 68.0], "expected": 98.0000000000001}, {"input": [98.0, 68.5], "expected": 98.00000000000016}, {"input": [98.0, 69.0], "expected": 98.00000000000026}, {"input": [98.0, 69.5], "expected": 98.00000000000043}, {"input": [98.0, 70.0], "expected": 98.0000000000007}, {"input": [98.0, 70.5], "expected": 98.00000000000114}, {"input": [98.0, 71.0], "expected": 98.00000000000188}, {"input": [98.0, 71.5], "expected": 98.0000000000031}, {"input": [98.0, 72.0], "expected": 98.00000000000512}, {"input": [98.0, 72.5], "expected": 98.00000000000843}, {"input": [98.0, 73.0], "expected": 98.00000000001388}, {"input": [98.0, 73.5], "expected": 98.0000000000229}, {"input": [98.0, 74.0], "expected": 98.00000000003776}, {"input": [98.0, 74.5], "expected": 98.00000000006224}, {"input": [98.0, 75.0], "expected": 98.00000000010262}, {"input": [98.0, 75.5], "expected": 98.0000000001692}, {"input": [98.0, 76.0], "expected": 98.00000000027894}, {"input": [98.0, 76.5], "expected": 98.0000000004599}, {"input": [98.0, 77.0], "expected": 98.00000000075826}, {"input": [98.0, 77.5], "expected": 98.00000000125016}, {"input": [98.0, 78.0], "expected": 98.00000000206116}, {"input": [98.0, 78.5], "expected": 98.00000000339827}, {"input": [98.0, 79.0], "expected": 98.0000000056028}, {"input": [98.0, 79.5], "expected": 98.00000000923745}, {"input": [98.0, 80.0], "expected": 98.00000001522999}, {"input": [98.0, 80.5], "expected": 98.00000002511}, {"input": [98.0, 81.0], "expected": 98.00000004139937}, {"input": [98.0, 81.5], "expected": 98.00000006825603}, {"input": [98.0, 82.0], "expected": 98.00000011253516}, {"input": [98.0, 82.5], "expected": 98.00000018553912}, {"input": [98.0, 83.0], "expected": 98.00000030590228}, {"input": [98.0, 83.5], "expected": 98.00000050434754}, {"input": [98.0, 84.0], "expected": 98.00000083152837}, {"input": [98.0, 84.5], "expected": 98.00000137095815}, {"input": [98.0, 85.0], "expected": 98.00000226032685}, {"input": [98.0, 85.5], "expected": 98.00000372664623}, {"input": [98.0, 86.0], "expected": 98.00000614419348}, {"input": [98.0, 86.5], "expected": 98.00001013004228}, {"input": [98.0, 87.0], "expected": 98.00001670156132}, {"input": [98.0, 87.5], "expected": 98.00002753607023}, {"input": [98.0, 88.0], "expected": 98.00004539889922}, {"input": [98.0, 88.5], "expected": 98.00007484902864}, {"input": [98.0, 89.0], "expected": 98.00012340218973}, {"input": [98.0, 89.5], "expected": 98.00020344767213}, {"input": [98.0, 90.0], "expected": 98.0003354063729}, {"input": [98.0, 90.5], "expected": 98.00055293147535}, {"input": [98.0, 91.0], "expected": 98.00091146645377}, {"input": [98.0, 91.5], "expected": 98.00150231015975}, {"input": [98.0, 92.0], "expected": 98.00247568513772}, {"input": [98.0, 92.5], "expected": 98.00407844327057}, {"input": [98.0, 93.0], "expected": 98.00671534848912}, {"input": [98.0, 93.5], "expected": 98.0110477448486}, {"input": [98.0, 94.0], "expected": 98.0181499279178}, {"input": [98.0, 94.5], "expected": 98.02975041827263}, {"input": [98.0, 95.0], "expected": 98.04858735157374}, {"input": [98.0, 95.5], "expected": 98.07888973429255}, {"input": [98.0, 96.0], "expected": 98.12692801104298}, {"input": [98.0, 96.5], "expected": 98.20141327798275}, {"input": [98.0, 97.0], "expected": 98.31326168751822}, {"input": [98.0, 97.5], "expected": 98.4740769841801}, {"input": [98.0, 98.0], "expected": 98.69314718055995}, {"input": [98.0, 98.5], "expected": 98.9740769841801}, {"input": [98.0, 99.0], "expected": 99.31326168751822}, {"input": [98.0, 99.5], "expected": 99.70141327798275}, {"input": [98.5, -100.0], "expected": 98.5}, {"input": [98.5, -99.5], "expected": 98.5}, {"input": [98.5, -99.0], "expected": 98.5}, {"input": [98.5, -98.5], "expected": 98.5}, {"input": [98.5, -98.0], "expected": 98.5}, {"input": [98.5, -97.5], "expected": 98.5}, {"input": [98.5, -97.0], "expected": 98.5}, {"input": [98.5, -96.5], "expected": 98.5}, {"input": [98.5, -96.0], "expected": 98.5}, {"input": [98.5, -95.5], "expected": 98.5}, {"input": [98.5, -95.0], "expected": 98.5}, {"input": [98.5, -94.5], "expected": 98.5}, {"input": [98.5, -94.0], "expected": 98.5}, {"input": [98.5, -93.5], "expected": 98.5}, {"input": [98.5, -93.0], "expected": 98.5}, {"input": [98.5, -92.5], "expected": 98.5}, {"input": [98.5, -92.0], "expected": 98.5}, {"input": [98.5, -91.5], "expected": 98.5}, {"input": [98.5, -91.0], "expected": 98.5}, {"input": [98.5, -90.5], "expected": 98.5}, {"input": [98.5, -90.0], "expected": 98.5}, {"input": [98.5, -89.5], "expected": 98.5}, {"input": [98.5, -89.0], "expected": 98.5}, {"input": [98.5, -88.5], "expected": 98.5}, {"input": [98.5, -88.0], "expected": 98.5}, {"input": [98.5, -87.5], "expected": 98.5}, {"input": [98.5, -87.0], "expected": 98.5}, {"input": [98.5, -86.5], "expected": 98.5}, {"input": [98.5, -86.0], "expected": 98.5}, {"input": [98.5, -85.5], "expected": 98.5}, {"input": [98.5, -85.0], "expected": 98.5}, {"input": [98.5, -84.5], "expected": 98.5}, {"input": [98.5, -84.0], "expected": 98.5}, {"input": [98.5, -83.5], "expected": 98.5}, {"input": [98.5, -83.0], "expected": 98.5}, {"input": [98.5, -82.5], "expected": 98.5}, {"input": [98.5, -82.0], "expected": 98.5}, {"input": [98.5, -81.5], "expected": 98.5}, {"input": [98.5, -81.0], "expected": 98.5}, {"input": [98.5, -80.5], "expected": 98.5}, {"input": [98.5, -80.0], "expected": 98.5}, {"input": [98.5, -79.5], "expected": 98.5}, {"input": [98.5, -79.0], "expected": 98.5}, {"input": [98.5, -78.5], "expected": 98.5}, {"input": [98.5, -78.0], "expected": 98.5}, {"input": [98.5, -77.5], "expected": 98.5}, {"input": [98.5, -77.0], "expected": 98.5}, {"input": [98.5, -76.5], "expected": 98.5}, {"input": [98.5, -76.0], "expected": 98.5}, {"input": [98.5, -75.5], "expected": 98.5}, {"input": [98.5, -75.0], "expected": 98.5}, {"input": [98.5, -74.5], "expected": 98.5}, {"input": [98.5, -74.0], "expected": 98.5}, {"input": [98.5, -73.5], "expected": 98.5}, {"input": [98.5, -73.0], "expected": 98.5}, {"input": [98.5, -72.5], "expected": 98.5}, {"input": [98.5, -72.0], "expected": 98.5}, {"input": [98.5, -71.5], "expected": 98.5}, {"input": [98.5, -71.0], "expected": 98.5}, {"input": [98.5, -70.5], "expected": 98.5}, {"input": [98.5, -70.0], "expected": 98.5}, {"input": [98.5, -69.5], "expected": 98.5}, {"input": [98.5, -69.0], "expected": 98.5}, {"input": [98.5, -68.5], "expected": 98.5}, {"input": [98.5, -68.0], "expected": 98.5}, {"input": [98.5, -67.5], "expected": 98.5}, {"input": [98.5, -67.0], "expected": 98.5}, {"input": [98.5, -66.5], "expected": 98.5}, {"input": [98.5, -66.0], "expected": 98.5}, {"input": [98.5, -65.5], "expected": 98.5}, {"input": [98.5, -65.0], "expected": 98.5}, {"input": [98.5, -64.5], "expected": 98.5}, {"input": [98.5, -64.0], "expected": 98.5}, {"input": [98.5, -63.5], "expected": 98.5}, {"input": [98.5, -63.0], "expected": 98.5}, {"input": [98.5, -62.5], "expected": 98.5}, {"input": [98.5, -62.0], "expected": 98.5}, {"input": [98.5, -61.5], "expected": 98.5}, {"input": [98.5, -61.0], "expected": 98.5}, {"input": [98.5, -60.5], "expected": 98.5}, {"input": [98.5, -60.0], "expected": 98.5}, {"input": [98.5, -59.5], "expected": 98.5}, {"input": [98.5, -59.0], "expected": 98.5}, {"input": [98.5, -58.5], "expected": 98.5}, {"input": [98.5, -58.0], "expected": 98.5}, {"input": [98.5, -57.5], "expected": 98.5}, {"input": [98.5, -57.0], "expected": 98.5}, {"input": [98.5, -56.5], "expected": 98.5}, {"input": [98.5, -56.0], "expected": 98.5}, {"input": [98.5, -55.5], "expected": 98.5}, {"input": [98.5, -55.0], "expected": 98.5}, {"input": [98.5, -54.5], "expected": 98.5}, {"input": [98.5, -54.0], "expected": 98.5}, {"input": [98.5, -53.5], "expected": 98.5}, {"input": [98.5, -53.0], "expected": 98.5}, {"input": [98.5, -52.5], "expected": 98.5}, {"input": [98.5, -52.0], "expected": 98.5}, {"input": [98.5, -51.5], "expected": 98.5}, {"input": [98.5, -51.0], "expected": 98.5}, {"input": [98.5, -50.5], "expected": 98.5}, {"input": [98.5, -50.0], "expected": 98.5}, {"input": [98.5, -49.5], "expected": 98.5}, {"input": [98.5, -49.0], "expected": 98.5}, {"input": [98.5, -48.5], "expected": 98.5}, {"input": [98.5, -48.0], "expected": 98.5}, {"input": [98.5, -47.5], "expected": 98.5}, {"input": [98.5, -47.0], "expected": 98.5}, {"input": [98.5, -46.5], "expected": 98.5}, {"input": [98.5, -46.0], "expected": 98.5}, {"input": [98.5, -45.5], "expected": 98.5}, {"input": [98.5, -45.0], "expected": 98.5}, {"input": [98.5, -44.5], "expected": 98.5}, {"input": [98.5, -44.0], "expected": 98.5}, {"input": [98.5, -43.5], "expected": 98.5}, {"input": [98.5, -43.0], "expected": 98.5}, {"input": [98.5, -42.5], "expected": 98.5}, {"input": [98.5, -42.0], "expected": 98.5}, {"input": [98.5, -41.5], "expected": 98.5}, {"input": [98.5, -41.0], "expected": 98.5}, {"input": [98.5, -40.5], "expected": 98.5}, {"input": [98.5, -40.0], "expected": 98.5}, {"input": [98.5, -39.5], "expected": 98.5}, {"input": [98.5, -39.0], "expected": 98.5}, {"input": [98.5, -38.5], "expected": 98.5}, {"input": [98.5, -38.0], "expected": 98.5}, {"input": [98.5, -37.5], "expected": 98.5}, {"input": [98.5, -37.0], "expected": 98.5}, {"input": [98.5, -36.5], "expected": 98.5}, {"input": [98.5, -36.0], "expected": 98.5}, {"input": [98.5, -35.5], "expected": 98.5}, {"input": [98.5, -35.0], "expected": 98.5}, {"input": [98.5, -34.5], "expected": 98.5}, {"input": [98.5, -34.0], "expected": 98.5}, {"input": [98.5, -33.5], "expected": 98.5}, {"input": [98.5, -33.0], "expected": 98.5}, {"input": [98.5, -32.5], "expected": 98.5}, {"input": [98.5, -32.0], "expected": 98.5}, {"input": [98.5, -31.5], "expected": 98.5}, {"input": [98.5, -31.0], "expected": 98.5}, {"input": [98.5, -30.5], "expected": 98.5}, {"input": [98.5, -30.0], "expected": 98.5}, {"input": [98.5, -29.5], "expected": 98.5}, {"input": [98.5, -29.0], "expected": 98.5}, {"input": [98.5, -28.5], "expected": 98.5}, {"input": [98.5, -28.0], "expected": 98.5}, {"input": [98.5, -27.5], "expected": 98.5}, {"input": [98.5, -27.0], "expected": 98.5}, {"input": [98.5, -26.5], "expected": 98.5}, {"input": [98.5, -26.0], "expected": 98.5}, {"input": [98.5, -25.5], "expected": 98.5}, {"input": [98.5, -25.0], "expected": 98.5}, {"input": [98.5, -24.5], "expected": 98.5}, {"input": [98.5, -24.0], "expected": 98.5}, {"input": [98.5, -23.5], "expected": 98.5}, {"input": [98.5, -23.0], "expected": 98.5}, {"input": [98.5, -22.5], "expected": 98.5}, {"input": [98.5, -22.0], "expected": 98.5}, {"input": [98.5, -21.5], "expected": 98.5}, {"input": [98.5, -21.0], "expected": 98.5}, {"input": [98.5, -20.5], "expected": 98.5}, {"input": [98.5, -20.0], "expected": 98.5}, {"input": [98.5, -19.5], "expected": 98.5}, {"input": [98.5, -19.0], "expected": 98.5}, {"input": [98.5, -18.5], "expected": 98.5}, {"input": [98.5, -18.0], "expected": 98.5}, {"input": [98.5, -17.5], "expected": 98.5}, {"input": [98.5, -17.0], "expected": 98.5}, {"input": [98.5, -16.5], "expected": 98.5}, {"input": [98.5, -16.0], "expected": 98.5}, {"input": [98.5, -15.5], "expected": 98.5}, {"input": [98.5, -15.0], "expected": 98.5}, {"input": [98.5, -14.5], "expected": 98.5}, {"input": [98.5, -14.0], "expected": 98.5}, {"input": [98.5, -13.5], "expected": 98.5}, {"input": [98.5, -13.0], "expected": 98.5}, {"input": [98.5, -12.5], "expected": 98.5}, {"input": [98.5, -12.0], "expected": 98.5}, {"input": [98.5, -11.5], "expected": 98.5}, {"input": [98.5, -11.0], "expected": 98.5}, {"input": [98.5, -10.5], "expected": 98.5}, {"input": [98.5, -10.0], "expected": 98.5}, {"input": [98.5, -9.5], "expected": 98.5}, {"input": [98.5, -9.0], "expected": 98.5}, {"input": [98.5, -8.5], "expected": 98.5}, {"input": [98.5, -8.0], "expected": 98.5}, {"input": [98.5, -7.5], "expected": 98.5}, {"input": [98.5, -7.0], "expected": 98.5}, {"input": [98.5, -6.5], "expected": 98.5}, {"input": [98.5, -6.0], "expected": 98.5}, {"input": [98.5, -5.5], "expected": 98.5}, {"input": [98.5, -5.0], "expected": 98.5}, {"input": [98.5, -4.5], "expected": 98.5}, {"input": [98.5, -4.0], "expected": 98.5}, {"input": [98.5, -3.5], "expected": 98.5}, {"input": [98.5, -3.0], "expected": 98.5}, {"input": [98.5, -2.5], "expected": 98.5}, {"input": [98.5, -2.0], "expected": 98.5}, {"input": [98.5, -1.5], "expected": 98.5}, {"input": [98.5, -1.0], "expected": 98.5}, {"input": [98.5, -0.5], "expected": 98.5}, {"input": [98.5, 0.0], "expected": 98.5}, {"input": [98.5, 0.5], "expected": 98.5}, {"input": [98.5, 1.0], "expected": 98.5}, {"input": [98.5, 1.5], "expected": 98.5}, {"input": [98.5, 2.0], "expected": 98.5}, {"input": [98.5, 2.5], "expected": 98.5}, {"input": [98.5, 3.0], "expected": 98.5}, {"input": [98.5, 3.5], "expected": 98.5}, {"input": [98.5, 4.0], "expected": 98.5}, {"input": [98.5, 4.5], "expected": 98.5}, {"input": [98.5, 5.0], "expected": 98.5}, {"input": [98.5, 5.5], "expected": 98.5}, {"input": [98.5, 6.0], "expected": 98.5}, {"input": [98.5, 6.5], "expected": 98.5}, {"input": [98.5, 7.0], "expected": 98.5}, {"input": [98.5, 7.5], "expected": 98.5}, {"input": [98.5, 8.0], "expected": 98.5}, {"input": [98.5, 8.5], "expected": 98.5}, {"input": [98.5, 9.0], "expected": 98.5}, {"input": [98.5, 9.5], "expected": 98.5}, {"input": [98.5, 10.0], "expected": 98.5}, {"input": [98.5, 10.5], "expected": 98.5}, {"input": [98.5, 11.0], "expected": 98.5}, {"input": [98.5, 11.5], "expected": 98.5}, {"input": [98.5, 12.0], "expected": 98.5}, {"input": [98.5, 12.5], "expected": 98.5}, {"input": [98.5, 13.0], "expected": 98.5}, {"input": [98.5, 13.5], "expected": 98.5}, {"input": [98.5, 14.0], "expected": 98.5}, {"input": [98.5, 14.5], "expected": 98.5}, {"input": [98.5, 15.0], "expected": 98.5}, {"input": [98.5, 15.5], "expected": 98.5}, {"input": [98.5, 16.0], "expected": 98.5}, {"input": [98.5, 16.5], "expected": 98.5}, {"input": [98.5, 17.0], "expected": 98.5}, {"input": [98.5, 17.5], "expected": 98.5}, {"input": [98.5, 18.0], "expected": 98.5}, {"input": [98.5, 18.5], "expected": 98.5}, {"input": [98.5, 19.0], "expected": 98.5}, {"input": [98.5, 19.5], "expected": 98.5}, {"input": [98.5, 20.0], "expected": 98.5}, {"input": [98.5, 20.5], "expected": 98.5}, {"input": [98.5, 21.0], "expected": 98.5}, {"input": [98.5, 21.5], "expected": 98.5}, {"input": [98.5, 22.0], "expected": 98.5}, {"input": [98.5, 22.5], "expected": 98.5}, {"input": [98.5, 23.0], "expected": 98.5}, {"input": [98.5, 23.5], "expected": 98.5}, {"input": [98.5, 24.0], "expected": 98.5}, {"input": [98.5, 24.5], "expected": 98.5}, {"input": [98.5, 25.0], "expected": 98.5}, {"input": [98.5, 25.5], "expected": 98.5}, {"input": [98.5, 26.0], "expected": 98.5}, {"input": [98.5, 26.5], "expected": 98.5}, {"input": [98.5, 27.0], "expected": 98.5}, {"input": [98.5, 27.5], "expected": 98.5}, {"input": [98.5, 28.0], "expected": 98.5}, {"input": [98.5, 28.5], "expected": 98.5}, {"input": [98.5, 29.0], "expected": 98.5}, {"input": [98.5, 29.5], "expected": 98.5}, {"input": [98.5, 30.0], "expected": 98.5}, {"input": [98.5, 30.5], "expected": 98.5}, {"input": [98.5, 31.0], "expected": 98.5}, {"input": [98.5, 31.5], "expected": 98.5}, {"input": [98.5, 32.0], "expected": 98.5}, {"input": [98.5, 32.5], "expected": 98.5}, {"input": [98.5, 33.0], "expected": 98.5}, {"input": [98.5, 33.5], "expected": 98.5}, {"input": [98.5, 34.0], "expected": 98.5}, {"input": [98.5, 34.5], "expected": 98.5}, {"input": [98.5, 35.0], "expected": 98.5}, {"input": [98.5, 35.5], "expected": 98.5}, {"input": [98.5, 36.0], "expected": 98.5}, {"input": [98.5, 36.5], "expected": 98.5}, {"input": [98.5, 37.0], "expected": 98.5}, {"input": [98.5, 37.5], "expected": 98.5}, {"input": [98.5, 38.0], "expected": 98.5}, {"input": [98.5, 38.5], "expected": 98.5}, {"input": [98.5, 39.0], "expected": 98.5}, {"input": [98.5, 39.5], "expected": 98.5}, {"input": [98.5, 40.0], "expected": 98.5}, {"input": [98.5, 40.5], "expected": 98.5}, {"input": [98.5, 41.0], "expected": 98.5}, {"input": [98.5, 41.5], "expected": 98.5}, {"input": [98.5, 42.0], "expected": 98.5}, {"input": [98.5, 42.5], "expected": 98.5}, {"input": [98.5, 43.0], "expected": 98.5}, {"input": [98.5, 43.5], "expected": 98.5}, {"input": [98.5, 44.0], "expected": 98.5}, {"input": [98.5, 44.5], "expected": 98.5}, {"input": [98.5, 45.0], "expected": 98.5}, {"input": [98.5, 45.5], "expected": 98.5}, {"input": [98.5, 46.0], "expected": 98.5}, {"input": [98.5, 46.5], "expected": 98.5}, {"input": [98.5, 47.0], "expected": 98.5}, {"input": [98.5, 47.5], "expected": 98.5}, {"input": [98.5, 48.0], "expected": 98.5}, {"input": [98.5, 48.5], "expected": 98.5}, {"input": [98.5, 49.0], "expected": 98.5}, {"input": [98.5, 49.5], "expected": 98.5}, {"input": [98.5, 50.0], "expected": 98.5}, {"input": [98.5, 50.5], "expected": 98.5}, {"input": [98.5, 51.0], "expected": 98.5}, {"input": [98.5, 51.5], "expected": 98.5}, {"input": [98.5, 52.0], "expected": 98.5}, {"input": [98.5, 52.5], "expected": 98.5}, {"input": [98.5, 53.0], "expected": 98.5}, {"input": [98.5, 53.5], "expected": 98.5}, {"input": [98.5, 54.0], "expected": 98.5}, {"input": [98.5, 54.5], "expected": 98.5}, {"input": [98.5, 55.0], "expected": 98.5}, {"input": [98.5, 55.5], "expected": 98.5}, {"input": [98.5, 56.0], "expected": 98.5}, {"input": [98.5, 56.5], "expected": 98.5}, {"input": [98.5, 57.0], "expected": 98.5}, {"input": [98.5, 57.5], "expected": 98.5}, {"input": [98.5, 58.0], "expected": 98.5}, {"input": [98.5, 58.5], "expected": 98.5}, {"input": [98.5, 59.0], "expected": 98.5}, {"input": [98.5, 59.5], "expected": 98.5}, {"input": [98.5, 60.0], "expected": 98.5}, {"input": [98.5, 60.5], "expected": 98.5}, {"input": [98.5, 61.0], "expected": 98.5}, {"input": [98.5, 61.5], "expected": 98.5}, {"input": [98.5, 62.0], "expected": 98.5}, {"input": [98.5, 62.5], "expected": 98.5}, {"input": [98.5, 63.0], "expected": 98.5}, {"input": [98.5, 63.5], "expected": 98.5}, {"input": [98.5, 64.0], "expected": 98.5}, {"input": [98.5, 64.5], "expected": 98.5}, {"input": [98.5, 65.0], "expected": 98.5}, {"input": [98.5, 65.5], "expected": 98.5}, {"input": [98.5, 66.0], "expected": 98.50000000000001}, {"input": [98.5, 66.5], "expected": 98.50000000000001}, {"input": [98.5, 67.0], "expected": 98.50000000000001}, {"input": [98.5, 67.5], "expected": 98.50000000000003}, {"input": [98.5, 68.0], "expected": 98.50000000000006}, {"input": [98.5, 68.5], "expected": 98.5000000000001}, {"input": [98.5, 69.0], "expected": 98.50000000000016}, {"input": [98.5, 69.5], "expected": 98.50000000000026}, {"input": [98.5, 70.0], "expected": 98.50000000000043}, {"input": [98.5, 70.5], "expected": 98.5000000000007}, {"input": [98.5, 71.0], "expected": 98.50000000000114}, {"input": [98.5, 71.5], "expected": 98.50000000000188}, {"input": [98.5, 72.0], "expected": 98.5000000000031}, {"input": [98.5, 72.5], "expected": 98.50000000000512}, {"input": [98.5, 73.0], "expected": 98.50000000000843}, {"input": [98.5, 73.5], "expected": 98.50000000001388}, {"input": [98.5, 74.0], "expected": 98.5000000000229}, {"input": [98.5, 74.5], "expected": 98.50000000003776}, {"input": [98.5, 75.0], "expected": 98.50000000006224}, {"input": [98.5, 75.5], "expected": 98.50000000010262}, {"input": [98.5, 76.0], "expected": 98.5000000001692}, {"input": [98.5, 76.5], "expected": 98.50000000027894}, {"input": [98.5, 77.0], "expected": 98.5000000004599}, {"input": [98.5, 77.5], "expected": 98.50000000075826}, {"input": [98.5, 78.0], "expected": 98.50000000125016}, {"input": [98.5, 78.5], "expected": 98.50000000206116}, {"input": [98.5, 79.0], "expected": 98.50000000339827}, {"input": [98.5, 79.5], "expected": 98.5000000056028}, {"input": [98.5, 80.0], "expected": 98.50000000923745}, {"input": [98.5, 80.5], "expected": 98.50000001522999}, {"input": [98.5, 81.0], "expected": 98.50000002511}, {"input": [98.5, 81.5], "expected": 98.50000004139937}, {"input": [98.5, 82.0], "expected": 98.50000006825603}, {"input": [98.5, 82.5], "expected": 98.50000011253516}, {"input": [98.5, 83.0], "expected": 98.50000018553912}, {"input": [98.5, 83.5], "expected": 98.50000030590228}, {"input": [98.5, 84.0], "expected": 98.50000050434754}, {"input": [98.5, 84.5], "expected": 98.50000083152837}, {"input": [98.5, 85.0], "expected": 98.50000137095815}, {"input": [98.5, 85.5], "expected": 98.50000226032685}, {"input": [98.5, 86.0], "expected": 98.50000372664623}, {"input": [98.5, 86.5], "expected": 98.50000614419348}, {"input": [98.5, 87.0], "expected": 98.50001013004228}, {"input": [98.5, 87.5], "expected": 98.50001670156132}, {"input": [98.5, 88.0], "expected": 98.50002753607023}, {"input": [98.5, 88.5], "expected": 98.50004539889922}, {"input": [98.5, 89.0], "expected": 98.50007484902864}, {"input": [98.5, 89.5], "expected": 98.50012340218973}, {"input": [98.5, 90.0], "expected": 98.50020344767213}, {"input": [98.5, 90.5], "expected": 98.5003354063729}, {"input": [98.5, 91.0], "expected": 98.50055293147535}, {"input": [98.5, 91.5], "expected": 98.50091146645377}, {"input": [98.5, 92.0], "expected": 98.50150231015975}, {"input": [98.5, 92.5], "expected": 98.50247568513772}, {"input": [98.5, 93.0], "expected": 98.50407844327057}, {"input": [98.5, 93.5], "expected": 98.50671534848912}, {"input": [98.5, 94.0], "expected": 98.5110477448486}, {"input": [98.5, 94.5], "expected": 98.5181499279178}, {"input": [98.5, 95.0], "expected": 98.52975041827263}, {"input": [98.5, 95.5], "expected": 98.54858735157374}, {"input": [98.5, 96.0], "expected": 98.57888973429255}, {"input": [98.5, 96.5], "expected": 98.62692801104298}, {"input": [98.5, 97.0], "expected": 98.70141327798275}, {"input": [98.5, 97.5], "expected": 98.81326168751822}, {"input": [98.5, 98.0], "expected": 98.9740769841801}, {"input": [98.5, 98.5], "expected": 99.19314718055995}, {"input": [98.5, 99.0], "expected": 99.4740769841801}, {"input": [98.5, 99.5], "expected": 99.81326168751822}, {"input": [99.0, -100.0], "expected": 99.0}, {"input": [99.0, -99.5], "expected": 99.0}, {"input": [99.0, -99.0], "expected": 99.0}, {"input": [99.0, -98.5], "expected": 99.0}, {"input": [99.0, -98.0], "expected": 99.0}, {"input": [99.0, -97.5], "expected": 99.0}, {"input": [99.0, -97.0], "expected": 99.0}, {"input": [99.0, -96.5], "expected": 99.0}, {"input": [99.0, -96.0], "expected": 99.0}, {"input": [99.0, -95.5], "expected": 99.0}, {"input": [99.0, -95.0], "expected": 99.0}, {"input": [99.0, -94.5], "expected": 99.0}, {"input": [99.0, -94.0], "expected": 99.0}, {"input": [99.0, -93.5], "expected": 99.0}, {"input": [99.0, -93.0], "expected": 99.0}, {"input": [99.0, -92.5], "expected": 99.0}, {"input": [99.0, -92.0], "expected": 99.0}, {"input": [99.0, -91.5], "expected": 99.0}, {"input": [99.0, -91.0], "expected": 99.0}, {"input": [99.0, -90.5], "expected": 99.0}, {"input": [99.0, -90.0], "expected": 99.0}, {"input": [99.0, -89.5], "expected": 99.0}, {"input": [99.0, -89.0], "expected": 99.0}, {"input": [99.0, -88.5], "expected": 99.0}, {"input": [99.0, -88.0], "expected": 99.0}, {"input": [99.0, -87.5], "expected": 99.0}, {"input": [99.0, -87.0], "expected": 99.0}, {"input": [99.0, -86.5], "expected": 99.0}, {"input": [99.0, -86.0], "expected": 99.0}, {"input": [99.0, -85.5], "expected": 99.0}, {"input": [99.0, -85.0], "expected": 99.0}, {"input": [99.0, -84.5], "expected": 99.0}, {"input": [99.0, -84.0], "expected": 99.0}, {"input": [99.0, -83.5], "expected": 99.0}, {"input": [99.0, -83.0], "expected": 99.0}, {"input": [99.0, -82.5], "expected": 99.0}, {"input": [99.0, -82.0], "expected": 99.0}, {"input": [99.0, -81.5], "expected": 99.0}, {"input": [99.0, -81.0], "expected": 99.0}, {"input": [99.0, -80.5], "expected": 99.0}, {"input": [99.0, -80.0], "expected": 99.0}, {"input": [99.0, -79.5], "expected": 99.0}, {"input": [99.0, -79.0], "expected": 99.0}, {"input": [99.0, -78.5], "expected": 99.0}, {"input": [99.0, -78.0], "expected": 99.0}, {"input": [99.0, -77.5], "expected": 99.0}, {"input": [99.0, -77.0], "expected": 99.0}, {"input": [99.0, -76.5], "expected": 99.0}, {"input": [99.0, -76.0], "expected": 99.0}, {"input": [99.0, -75.5], "expected": 99.0}, {"input": [99.0, -75.0], "expected": 99.0}, {"input": [99.0, -74.5], "expected": 99.0}, {"input": [99.0, -74.0], "expected": 99.0}, {"input": [99.0, -73.5], "expected": 99.0}, {"input": [99.0, -73.0], "expected": 99.0}, {"input": [99.0, -72.5], "expected": 99.0}, {"input": [99.0, -72.0], "expected": 99.0}, {"input": [99.0, -71.5], "expected": 99.0}, {"input": [99.0, -71.0], "expected": 99.0}, {"input": [99.0, -70.5], "expected": 99.0}, {"input": [99.0, -70.0], "expected": 99.0}, {"input": [99.0, -69.5], "expected": 99.0}, {"input": [99.0, -69.0], "expected": 99.0}, {"input": [99.0, -68.5], "expected": 99.0}, {"input": [99.0, -68.0], "expected": 99.0}, {"input": [99.0, -67.5], "expected": 99.0}, {"input": [99.0, -67.0], "expected": 99.0}, {"input": [99.0, -66.5], "expected": 99.0}, {"input": [99.0, -66.0], "expected": 99.0}, {"input": [99.0, -65.5], "expected": 99.0}, {"input": [99.0, -65.0], "expected": 99.0}, {"input": [99.0, -64.5], "expected": 99.0}, {"input": [99.0, -64.0], "expected": 99.0}, {"input": [99.0, -63.5], "expected": 99.0}, {"input": [99.0, -63.0], "expected": 99.0}, {"input": [99.0, -62.5], "expected": 99.0}, {"input": [99.0, -62.0], "expected": 99.0}, {"input": [99.0, -61.5], "expected": 99.0}, {"input": [99.0, -61.0], "expected": 99.0}, {"input": [99.0, -60.5], "expected": 99.0}, {"input": [99.0, -60.0], "expected": 99.0}, {"input": [99.0, -59.5], "expected": 99.0}, {"input": [99.0, -59.0], "expected": 99.0}, {"input": [99.0, -58.5], "expected": 99.0}, {"input": [99.0, -58.0], "expected": 99.0}, {"input": [99.0, -57.5], "expected": 99.0}, {"input": [99.0, -57.0], "expected": 99.0}, {"input": [99.0, -56.5], "expected": 99.0}, {"input": [99.0, -56.0], "expected": 99.0}, {"input": [99.0, -55.5], "expected": 99.0}, {"input": [99.0, -55.0], "expected": 99.0}, {"input": [99.0, -54.5], "expected": 99.0}, {"input": [99.0, -54.0], "expected": 99.0}, {"input": [99.0, -53.5], "expected": 99.0}, {"input": [99.0, -53.0], "expected": 99.0}, {"input": [99.0, -52.5], "expected": 99.0}, {"input": [99.0, -52.0], "expected": 99.0}, {"input": [99.0, -51.5], "expected": 99.0}, {"input": [99.0, -51.0], "expected": 99.0}, {"input": [99.0, -50.5], "expected": 99.0}, {"input": [99.0, -50.0], "expected": 99.0}, {"input": [99.0, -49.5], "expected": 99.0}, {"input": [99.0, -49.0], "expected": 99.0}, {"input": [99.0, -48.5], "expected": 99.0}, {"input": [99.0, -48.0], "expected": 99.0}, {"input": [99.0, -47.5], "expected": 99.0}, {"input": [99.0, -47.0], "expected": 99.0}, {"input": [99.0, -46.5], "expected": 99.0}, {"input": [99.0, -46.0], "expected": 99.0}, {"input": [99.0, -45.5], "expected": 99.0}, {"input": [99.0, -45.0], "expected": 99.0}, {"input": [99.0, -44.5], "expected": 99.0}, {"input": [99.0, -44.0], "expected": 99.0}, {"input": [99.0, -43.5], "expected": 99.0}, {"input": [99.0, -43.0], "expected": 99.0}, {"input": [99.0, -42.5], "expected": 99.0}, {"input": [99.0, -42.0], "expected": 99.0}, {"input": [99.0, -41.5], "expected": 99.0}, {"input": [99.0, -41.0], "expected": 99.0}, {"input": [99.0, -40.5], "expected": 99.0}, {"input": [99.0, -40.0], "expected": 99.0}, {"input": [99.0, -39.5], "expected": 99.0}, {"input": [99.0, -39.0], "expected": 99.0}, {"input": [99.0, -38.5], "expected": 99.0}, {"input": [99.0, -38.0], "expected": 99.0}, {"input": [99.0, -37.5], "expected": 99.0}, {"input": [99.0, -37.0], "expected": 99.0}, {"input": [99.0, -36.5], "expected": 99.0}, {"input": [99.0, -36.0], "expected": 99.0}, {"input": [99.0, -35.5], "expected": 99.0}, {"input": [99.0, -35.0], "expected": 99.0}, {"input": [99.0, -34.5], "expected": 99.0}, {"input": [99.0, -34.0], "expected": 99.0}, {"input": [99.0, -33.5], "expected": 99.0}, {"input": [99.0, -33.0], "expected": 99.0}, {"input": [99.0, -32.5], "expected": 99.0}, {"input": [99.0, -32.0], "expected": 99.0}, {"input": [99.0, -31.5], "expected": 99.0}, {"input": [99.0, -31.0], "expected": 99.0}, {"input": [99.0, -30.5], "expected": 99.0}, {"input": [99.0, -30.0], "expected": 99.0}, {"input": [99.0, -29.5], "expected": 99.0}, {"input": [99.0, -29.0], "expected": 99.0}, {"input": [99.0, -28.5], "expected": 99.0}, {"input": [99.0, -28.0], "expected": 99.0}, {"input": [99.0, -27.5], "expected": 99.0}, {"input": [99.0, -27.0], "expected": 99.0}, {"input": [99.0, -26.5], "expected": 99.0}, {"input": [99.0, -26.0], "expected": 99.0}, {"input": [99.0, -25.5], "expected": 99.0}, {"input": [99.0, -25.0], "expected": 99.0}, {"input": [99.0, -24.5], "expected": 99.0}, {"input": [99.0, -24.0], "expected": 99.0}, {"input": [99.0, -23.5], "expected": 99.0}, {"input": [99.0, -23.0], "expected": 99.0}, {"input": [99.0, -22.5], "expected": 99.0}, {"input": [99.0, -22.0], "expected": 99.0}, {"input": [99.0, -21.5], "expected": 99.0}, {"input": [99.0, -21.0], "expected": 99.0}, {"input": [99.0, -20.5], "expected": 99.0}, {"input": [99.0, -20.0], "expected": 99.0}, {"input": [99.0, -19.5], "expected": 99.0}, {"input": [99.0, -19.0], "expected": 99.0}, {"input": [99.0, -18.5], "expected": 99.0}, {"input": [99.0, -18.0], "expected": 99.0}, {"input": [99.0, -17.5], "expected": 99.0}, {"input": [99.0, -17.0], "expected": 99.0}, {"input": [99.0, -16.5], "expected": 99.0}, {"input": [99.0, -16.0], "expected": 99.0}, {"input": [99.0, -15.5], "expected": 99.0}, {"input": [99.0, -15.0], "expected": 99.0}, {"input": [99.0, -14.5], "expected": 99.0}, {"input": [99.0, -14.0], "expected": 99.0}, {"input": [99.0, -13.5], "expected": 99.0}, {"input": [99.0, -13.0], "expected": 99.0}, {"input": [99.0, -12.5], "expected": 99.0}, {"input": [99.0, -12.0], "expected": 99.0}, {"input": [99.0, -11.5], "expected": 99.0}, {"input": [99.0, -11.0], "expected": 99.0}, {"input": [99.0, -10.5], "expected": 99.0}, {"input": [99.0, -10.0], "expected": 99.0}, {"input": [99.0, -9.5], "expected": 99.0}, {"input": [99.0, -9.0], "expected": 99.0}, {"input": [99.0, -8.5], "expected": 99.0}, {"input": [99.0, -8.0], "expected": 99.0}, {"input": [99.0, -7.5], "expected": 99.0}, {"input": [99.0, -7.0], "expected": 99.0}, {"input": [99.0, -6.5], "expected": 99.0}, {"input": [99.0, -6.0], "expected": 99.0}, {"input": [99.0, -5.5], "expected": 99.0}, {"input": [99.0, -5.0], "expected": 99.0}, {"input": [99.0, -4.5], "expected": 99.0}, {"input": [99.0, -4.0], "expected": 99.0}, {"input": [99.0, -3.5], "expected": 99.0}, {"input": [99.0, -3.0], "expected": 99.0}, {"input": [99.0, -2.5], "expected": 99.0}, {"input": [99.0, -2.0], "expected": 99.0}, {"input": [99.0, -1.5], "expected": 99.0}, {"input": [99.0, -1.0], "expected": 99.0}, {"input": [99.0, -0.5], "expected": 99.0}, {"input": [99.0, 0.0], "expected": 99.0}, {"input": [99.0, 0.5], "expected": 99.0}, {"input": [99.0, 1.0], "expected": 99.0}, {"input": [99.0, 1.5], "expected": 99.0}, {"input": [99.0, 2.0], "expected": 99.0}, {"input": [99.0, 2.5], "expected": 99.0}, {"input": [99.0, 3.0], "expected": 99.0}, {"input": [99.0, 3.5], "expected": 99.0}, {"input": [99.0, 4.0], "expected": 99.0}, {"input": [99.0, 4.5], "expected": 99.0}, {"input": [99.0, 5.0], "expected": 99.0}, {"input": [99.0, 5.5], "expected": 99.0}, {"input": [99.0, 6.0], "expected": 99.0}, {"input": [99.0, 6.5], "expected": 99.0}, {"input": [99.0, 7.0], "expected": 99.0}, {"input": [99.0, 7.5], "expected": 99.0}, {"input": [99.0, 8.0], "expected": 99.0}, {"input": [99.0, 8.5], "expected": 99.0}, {"input": [99.0, 9.0], "expected": 99.0}, {"input": [99.0, 9.5], "expected": 99.0}, {"input": [99.0, 10.0], "expected": 99.0}, {"input": [99.0, 10.5], "expected": 99.0}, {"input": [99.0, 11.0], "expected": 99.0}, {"input": [99.0, 11.5], "expected": 99.0}, {"input": [99.0, 12.0], "expected": 99.0}, {"input": [99.0, 12.5], "expected": 99.0}, {"input": [99.0, 13.0], "expected": 99.0}, {"input": [99.0, 13.5], "expected": 99.0}, {"input": [99.0, 14.0], "expected": 99.0}, {"input": [99.0, 14.5], "expected": 99.0}, {"input": [99.0, 15.0], "expected": 99.0}, {"input": [99.0, 15.5], "expected": 99.0}, {"input": [99.0, 16.0], "expected": 99.0}, {"input": [99.0, 16.5], "expected": 99.0}, {"input": [99.0, 17.0], "expected": 99.0}, {"input": [99.0, 17.5], "expected": 99.0}, {"input": [99.0, 18.0], "expected": 99.0}, {"input": [99.0, 18.5], "expected": 99.0}, {"input": [99.0, 19.0], "expected": 99.0}, {"input": [99.0, 19.5], "expected": 99.0}, {"input": [99.0, 20.0], "expected": 99.0}, {"input": [99.0, 20.5], "expected": 99.0}, {"input": [99.0, 21.0], "expected": 99.0}, {"input": [99.0, 21.5], "expected": 99.0}, {"input": [99.0, 22.0], "expected": 99.0}, {"input": [99.0, 22.5], "expected": 99.0}, {"input": [99.0, 23.0], "expected": 99.0}, {"input": [99.0, 23.5], "expected": 99.0}, {"input": [99.0, 24.0], "expected": 99.0}, {"input": [99.0, 24.5], "expected": 99.0}, {"input": [99.0, 25.0], "expected": 99.0}, {"input": [99.0, 25.5], "expected": 99.0}, {"input": [99.0, 26.0], "expected": 99.0}, {"input": [99.0, 26.5], "expected": 99.0}, {"input": [99.0, 27.0], "expected": 99.0}, {"input": [99.0, 27.5], "expected": 99.0}, {"input": [99.0, 28.0], "expected": 99.0}, {"input": [99.0, 28.5], "expected": 99.0}, {"input": [99.0, 29.0], "expected": 99.0}, {"input": [99.0, 29.5], "expected": 99.0}, {"input": [99.0, 30.0], "expected": 99.0}, {"input": [99.0, 30.5], "expected": 99.0}, {"input": [99.0, 31.0], "expected": 99.0}, {"input": [99.0, 31.5], "expected": 99.0}, {"input": [99.0, 32.0], "expected": 99.0}, {"input": [99.0, 32.5], "expected": 99.0}, {"input": [99.0, 33.0], "expected": 99.0}, {"input": [99.0, 33.5], "expected": 99.0}, {"input": [99.0, 34.0], "expected": 99.0}, {"input": [99.0, 34.5], "expected": 99.0}, {"input": [99.0, 35.0], "expected": 99.0}, {"input": [99.0, 35.5], "expected": 99.0}, {"input": [99.0, 36.0], "expected": 99.0}, {"input": [99.0, 36.5], "expected": 99.0}, {"input": [99.0, 37.0], "expected": 99.0}, {"input": [99.0, 37.5], "expected": 99.0}, {"input": [99.0, 38.0], "expected": 99.0}, {"input": [99.0, 38.5], "expected": 99.0}, {"input": [99.0, 39.0], "expected": 99.0}, {"input": [99.0, 39.5], "expected": 99.0}, {"input": [99.0, 40.0], "expected": 99.0}, {"input": [99.0, 40.5], "expected": 99.0}, {"input": [99.0, 41.0], "expected": 99.0}, {"input": [99.0, 41.5], "expected": 99.0}, {"input": [99.0, 42.0], "expected": 99.0}, {"input": [99.0, 42.5], "expected": 99.0}, {"input": [99.0, 43.0], "expected": 99.0}, {"input": [99.0, 43.5], "expected": 99.0}, {"input": [99.0, 44.0], "expected": 99.0}, {"input": [99.0, 44.5], "expected": 99.0}, {"input": [99.0, 45.0], "expected": 99.0}, {"input": [99.0, 45.5], "expected": 99.0}, {"input": [99.0, 46.0], "expected": 99.0}, {"input": [99.0, 46.5], "expected": 99.0}, {"input": [99.0, 47.0], "expected": 99.0}, {"input": [99.0, 47.5], "expected": 99.0}, {"input": [99.0, 48.0], "expected": 99.0}, {"input": [99.0, 48.5], "expected": 99.0}, {"input": [99.0, 49.0], "expected": 99.0}, {"input": [99.0, 49.5], "expected": 99.0}, {"input": [99.0, 50.0], "expected": 99.0}, {"input": [99.0, 50.5], "expected": 99.0}, {"input": [99.0, 51.0], "expected": 99.0}, {"input": [99.0, 51.5], "expected": 99.0}, {"input": [99.0, 52.0], "expected": 99.0}, {"input": [99.0, 52.5], "expected": 99.0}, {"input": [99.0, 53.0], "expected": 99.0}, {"input": [99.0, 53.5], "expected": 99.0}, {"input": [99.0, 54.0], "expected": 99.0}, {"input": [99.0, 54.5], "expected": 99.0}, {"input": [99.0, 55.0], "expected": 99.0}, {"input": [99.0, 55.5], "expected": 99.0}, {"input": [99.0, 56.0], "expected": 99.0}, {"input": [99.0, 56.5], "expected": 99.0}, {"input": [99.0, 57.0], "expected": 99.0}, {"input": [99.0, 57.5], "expected": 99.0}, {"input": [99.0, 58.0], "expected": 99.0}, {"input": [99.0, 58.5], "expected": 99.0}, {"input": [99.0, 59.0], "expected": 99.0}, {"input": [99.0, 59.5], "expected": 99.0}, {"input": [99.0, 60.0], "expected": 99.0}, {"input": [99.0, 60.5], "expected": 99.0}, {"input": [99.0, 61.0], "expected": 99.0}, {"input": [99.0, 61.5], "expected": 99.0}, {"input": [99.0, 62.0], "expected": 99.0}, {"input": [99.0, 62.5], "expected": 99.0}, {"input": [99.0, 63.0], "expected": 99.0}, {"input": [99.0, 63.5], "expected": 99.0}, {"input": [99.0, 64.0], "expected": 99.0}, {"input": [99.0, 64.5], "expected": 99.0}, {"input": [99.0, 65.0], "expected": 99.0}, {"input": [99.0, 65.5], "expected": 99.0}, {"input": [99.0, 66.0], "expected": 99.0}, {"input": [99.0, 66.5], "expected": 99.00000000000001}, {"input": [99.0, 67.0], "expected": 99.00000000000001}, {"input": [99.0, 67.5], "expected": 99.00000000000001}, {"input": [99.0, 68.0], "expected": 99.00000000000003}, {"input": [99.0, 68.5], "expected": 99.00000000000006}, {"input": [99.0, 69.0], "expected": 99.0000000000001}, {"input": [99.0, 69.5], "expected": 99.00000000000016}, {"input": [99.0, 70.0], "expected": 99.00000000000026}, {"input": [99.0, 70.5], "expected": 99.00000000000043}, {"input": [99.0, 71.0], "expected": 99.0000000000007}, {"input": [99.0, 71.5], "expected": 99.00000000000114}, {"input": [99.0, 72.0], "expected": 99.00000000000188}, {"input": [99.0, 72.5], "expected": 99.0000000000031}, {"input": [99.0, 73.0], "expected": 99.00000000000512}, {"input": [99.0, 73.5], "expected": 99.00000000000843}, {"input": [99.0, 74.0], "expected": 99.00000000001388}, {"input": [99.0, 74.5], "expected": 99.0000000000229}, {"input": [99.0, 75.0], "expected": 99.00000000003776}, {"input": [99.0, 75.5], "expected": 99.00000000006224}, {"input": [99.0, 76.0], "expected": 99.00000000010262}, {"input": [99.0, 76.5], "expected": 99.0000000001692}, {"input": [99.0, 77.0], "expected": 99.00000000027894}, {"input": [99.0, 77.5], "expected": 99.0000000004599}, {"input": [99.0, 78.0], "expected": 99.00000000075826}, {"input": [99.0, 78.5], "expected": 99.00000000125016}, {"input": [99.0, 79.0], "expected": 99.00000000206116}, {"input": [99.0, 79.5], "expected": 99.00000000339827}, {"input": [99.0, 80.0], "expected": 99.0000000056028}, {"input": [99.0, 80.5], "expected": 99.00000000923745}, {"input": [99.0, 81.0], "expected": 99.00000001522999}, {"input": [99.0, 81.5], "expected": 99.00000002511}, {"input": [99.0, 82.0], "expected": 99.00000004139937}, {"input": [99.0, 82.5], "expected": 99.00000006825603}, {"input": [99.0, 83.0], "expected": 99.00000011253516}, {"input": [99.0, 83.5], "expected": 99.00000018553912}, {"input": [99.0, 84.0], "expected": 99.00000030590228}, {"input": [99.0, 84.5], "expected": 99.00000050434754}, {"input": [99.0, 85.0], "expected": 99.00000083152837}, {"input": [99.0, 85.5], "expected": 99.00000137095815}, {"input": [99.0, 86.0], "expected": 99.00000226032685}, {"input": [99.0, 86.5], "expected": 99.00000372664623}, {"input": [99.0, 87.0], "expected": 99.00000614419348}, {"input": [99.0, 87.5], "expected": 99.00001013004228}, {"input": [99.0, 88.0], "expected": 99.00001670156132}, {"input": [99.0, 88.5], "expected": 99.00002753607023}, {"input": [99.0, 89.0], "expected": 99.00004539889922}, {"input": [99.0, 89.5], "expected": 99.00007484902864}, {"input": [99.0, 90.0], "expected": 99.00012340218973}, {"input": [99.0, 90.5], "expected": 99.00020344767213}, {"input": [99.0, 91.0], "expected": 99.0003354063729}, {"input": [99.0, 91.5], "expected": 99.00055293147535}, {"input": [99.0, 92.0], "expected": 99.00091146645377}, {"input": [99.0, 92.5], "expected": 99.00150231015975}, {"input": [99.0, 93.0], "expected": 99.00247568513772}, {"input": [99.0, 93.5], "expected": 99.00407844327057}, {"input": [99.0, 94.0], "expected": 99.00671534848912}, {"input": [99.0, 94.5], "expected": 99.0110477448486}, {"input": [99.0, 95.0], "expected": 99.0181499279178}, {"input": [99.0, 95.5], "expected": 99.02975041827263}, {"input": [99.0, 96.0], "expected": 99.04858735157374}, {"input": [99.0, 96.5], "expected": 99.07888973429255}, {"input": [99.0, 97.0], "expected": 99.12692801104298}, {"input": [99.0, 97.5], "expected": 99.20141327798275}, {"input": [99.0, 98.0], "expected": 99.31326168751822}, {"input": [99.0, 98.5], "expected": 99.4740769841801}, {"input": [99.0, 99.0], "expected": 99.69314718055995}, {"input": [99.0, 99.5], "expected": 99.9740769841801}, {"input": [99.5, -100.0], "expected": 99.5}, {"input": [99.5, -99.5], "expected": 99.5}, {"input": [99.5, -99.0], "expected": 99.5}, {"input": [99.5, -98.5], "expected": 99.5}, {"input": [99.5, -98.0], "expected": 99.5}, {"input": [99.5, -97.5], "expected": 99.5}, {"input": [99.5, -97.0], "expected": 99.5}, {"input": [99.5, -96.5], "expected": 99.5}, {"input": [99.5, -96.0], "expected": 99.5}, {"input": [99.5, -95.5], "expected": 99.5}, {"input": [99.5, -95.0], "expected": 99.5}, {"input": [99.5, -94.5], "expected": 99.5}, {"input": [99.5, -94.0], "expected": 99.5}, {"input": [99.5, -93.5], "expected": 99.5}, {"input": [99.5, -93.0], "expected": 99.5}, {"input": [99.5, -92.5], "expected": 99.5}, {"input": [99.5, -92.0], "expected": 99.5}, {"input": [99.5, -91.5], "expected": 99.5}, {"input": [99.5, -91.0], "expected": 99.5}, {"input": [99.5, -90.5], "expected": 99.5}, {"input": [99.5, -90.0], "expected": 99.5}, {"input": [99.5, -89.5], "expected": 99.5}, {"input": [99.5, -89.0], "expected": 99.5}, {"input": [99.5, -88.5], "expected": 99.5}, {"input": [99.5, -88.0], "expected": 99.5}, {"input": [99.5, -87.5], "expected": 99.5}, {"input": [99.5, -87.0], "expected": 99.5}, {"input": [99.5, -86.5], "expected": 99.5}, {"input": [99.5, -86.0], "expected": 99.5}, {"input": [99.5, -85.5], "expected": 99.5}, {"input": [99.5, -85.0], "expected": 99.5}, {"input": [99.5, -84.5], "expected": 99.5}, {"input": [99.5, -84.0], "expected": 99.5}, {"input": [99.5, -83.5], "expected": 99.5}, {"input": [99.5, -83.0], "expected": 99.5}, {"input": [99.5, -82.5], "expected": 99.5}, {"input": [99.5, -82.0], "expected": 99.5}, {"input": [99.5, -81.5], "expected": 99.5}, {"input": [99.5, -81.0], "expected": 99.5}, {"input": [99.5, -80.5], "expected": 99.5}, {"input": [99.5, -80.0], "expected": 99.5}, {"input": [99.5, -79.5], "expected": 99.5}, {"input": [99.5, -79.0], "expected": 99.5}, {"input": [99.5, -78.5], "expected": 99.5}, {"input": [99.5, -78.0], "expected": 99.5}, {"input": [99.5, -77.5], "expected": 99.5}, {"input": [99.5, -77.0], "expected": 99.5}, {"input": [99.5, -76.5], "expected": 99.5}, {"input": [99.5, -76.0], "expected": 99.5}, {"input": [99.5, -75.5], "expected": 99.5}, {"input": [99.5, -75.0], "expected": 99.5}, {"input": [99.5, -74.5], "expected": 99.5}, {"input": [99.5, -74.0], "expected": 99.5}, {"input": [99.5, -73.5], "expected": 99.5}, {"input": [99.5, -73.0], "expected": 99.5}, {"input": [99.5, -72.5], "expected": 99.5}, {"input": [99.5, -72.0], "expected": 99.5}, {"input": [99.5, -71.5], "expected": 99.5}, {"input": [99.5, -71.0], "expected": 99.5}, {"input": [99.5, -70.5], "expected": 99.5}, {"input": [99.5, -70.0], "expected": 99.5}, {"input": [99.5, -69.5], "expected": 99.5}, {"input": [99.5, -69.0], "expected": 99.5}, {"input": [99.5, -68.5], "expected": 99.5}, {"input": [99.5, -68.0], "expected": 99.5}, {"input": [99.5, -67.5], "expected": 99.5}, {"input": [99.5, -67.0], "expected": 99.5}, {"input": [99.5, -66.5], "expected": 99.5}, {"input": [99.5, -66.0], "expected": 99.5}, {"input": [99.5, -65.5], "expected": 99.5}, {"input": [99.5, -65.0], "expected": 99.5}, {"input": [99.5, -64.5], "expected": 99.5}, {"input": [99.5, -64.0], "expected": 99.5}, {"input": [99.5, -63.5], "expected": 99.5}, {"input": [99.5, -63.0], "expected": 99.5}, {"input": [99.5, -62.5], "expected": 99.5}, {"input": [99.5, -62.0], "expected": 99.5}, {"input": [99.5, -61.5], "expected": 99.5}, {"input": [99.5, -61.0], "expected": 99.5}, {"input": [99.5, -60.5], "expected": 99.5}, {"input": [99.5, -60.0], "expected": 99.5}, {"input": [99.5, -59.5], "expected": 99.5}, {"input": [99.5, -59.0], "expected": 99.5}, {"input": [99.5, -58.5], "expected": 99.5}, {"input": [99.5, -58.0], "expected": 99.5}, {"input": [99.5, -57.5], "expected": 99.5}, {"input": [99.5, -57.0], "expected": 99.5}, {"input": [99.5, -56.5], "expected": 99.5}, {"input": [99.5, -56.0], "expected": 99.5}, {"input": [99.5, -55.5], "expected": 99.5}, {"input": [99.5, -55.0], "expected": 99.5}, {"input": [99.5, -54.5], "expected": 99.5}, {"input": [99.5, -54.0], "expected": 99.5}, {"input": [99.5, -53.5], "expected": 99.5}, {"input": [99.5, -53.0], "expected": 99.5}, {"input": [99.5, -52.5], "expected": 99.5}, {"input": [99.5, -52.0], "expected": 99.5}, {"input": [99.5, -51.5], "expected": 99.5}, {"input": [99.5, -51.0], "expected": 99.5}, {"input": [99.5, -50.5], "expected": 99.5}, {"input": [99.5, -50.0], "expected": 99.5}, {"input": [99.5, -49.5], "expected": 99.5}, {"input": [99.5, -49.0], "expected": 99.5}, {"input": [99.5, -48.5], "expected": 99.5}, {"input": [99.5, -48.0], "expected": 99.5}, {"input": [99.5, -47.5], "expected": 99.5}, {"input": [99.5, -47.0], "expected": 99.5}, {"input": [99.5, -46.5], "expected": 99.5}, {"input": [99.5, -46.0], "expected": 99.5}, {"input": [99.5, -45.5], "expected": 99.5}, {"input": [99.5, -45.0], "expected": 99.5}, {"input": [99.5, -44.5], "expected": 99.5}, {"input": [99.5, -44.0], "expected": 99.5}, {"input": [99.5, -43.5], "expected": 99.5}, {"input": [99.5, -43.0], "expected": 99.5}, {"input": [99.5, -42.5], "expected": 99.5}, {"input": [99.5, -42.0], "expected": 99.5}, {"input": [99.5, -41.5], "expected": 99.5}, {"input": [99.5, -41.0], "expected": 99.5}, {"input": [99.5, -40.5], "expected": 99.5}, {"input": [99.5, -40.0], "expected": 99.5}, {"input": [99.5, -39.5], "expected": 99.5}, {"input": [99.5, -39.0], "expected": 99.5}, {"input": [99.5, -38.5], "expected": 99.5}, {"input": [99.5, -38.0], "expected": 99.5}, {"input": [99.5, -37.5], "expected": 99.5}, {"input": [99.5, -37.0], "expected": 99.5}, {"input": [99.5, -36.5], "expected": 99.5}, {"input": [99.5, -36.0], "expected": 99.5}, {"input": [99.5, -35.5], "expected": 99.5}, {"input": [99.5, -35.0], "expected": 99.5}, {"input": [99.5, -34.5], "expected": 99.5}, {"input": [99.5, -34.0], "expected": 99.5}, {"input": [99.5, -33.5], "expected": 99.5}, {"input": [99.5, -33.0], "expected": 99.5}, {"input": [99.5, -32.5], "expected": 99.5}, {"input": [99.5, -32.0], "expected": 99.5}, {"input": [99.5, -31.5], "expected": 99.5}, {"input": [99.5, -31.0], "expected": 99.5}, {"input": [99.5, -30.5], "expected": 99.5}, {"input": [99.5, -30.0], "expected": 99.5}, {"input": [99.5, -29.5], "expected": 99.5}, {"input": [99.5, -29.0], "expected": 99.5}, {"input": [99.5, -28.5], "expected": 99.5}, {"input": [99.5, -28.0], "expected": 99.5}, {"input": [99.5, -27.5], "expected": 99.5}, {"input": [99.5, -27.0], "expected": 99.5}, {"input": [99.5, -26.5], "expected": 99.5}, {"input": [99.5, -26.0], "expected": 99.5}, {"input": [99.5, -25.5], "expected": 99.5}, {"input": [99.5, -25.0], "expected": 99.5}, {"input": [99.5, -24.5], "expected": 99.5}, {"input": [99.5, -24.0], "expected": 99.5}, {"input": [99.5, -23.5], "expected": 99.5}, {"input": [99.5, -23.0], "expected": 99.5}, {"input": [99.5, -22.5], "expected": 99.5}, {"input": [99.5, -22.0], "expected": 99.5}, {"input": [99.5, -21.5], "expected": 99.5}, {"input": [99.5, -21.0], "expected": 99.5}, {"input": [99.5, -20.5], "expected": 99.5}, {"input": [99.5, -20.0], "expected": 99.5}, {"input": [99.5, -19.5], "expected": 99.5}, {"input": [99.5, -19.0], "expected": 99.5}, {"input": [99.5, -18.5], "expected": 99.5}, {"input": [99.5, -18.0], "expected": 99.5}, {"input": [99.5, -17.5], "expected": 99.5}, {"input": [99.5, -17.0], "expected": 99.5}, {"input": [99.5, -16.5], "expected": 99.5}, {"input": [99.5, -16.0], "expected": 99.5}, {"input": [99.5, -15.5], "expected": 99.5}, {"input": [99.5, -15.0], "expected": 99.5}, {"input": [99.5, -14.5], "expected": 99.5}, {"input": [99.5, -14.0], "expected": 99.5}, {"input": [99.5, -13.5], "expected": 99.5}, {"input": [99.5, -13.0], "expected": 99.5}, {"input": [99.5, -12.5], "expected": 99.5}, {"input": [99.5, -12.0], "expected": 99.5}, {"input": [99.5, -11.5], "expected": 99.5}, {"input": [99.5, -11.0], "expected": 99.5}, {"input": [99.5, -10.5], "expected": 99.5}, {"input": [99.5, -10.0], "expected": 99.5}, {"input": [99.5, -9.5], "expected": 99.5}, {"input": [99.5, -9.0], "expected": 99.5}, {"input": [99.5, -8.5], "expected": 99.5}, {"input": [99.5, -8.0], "expected": 99.5}, {"input": [99.5, -7.5], "expected": 99.5}, {"input": [99.5, -7.0], "expected": 99.5}, {"input": [99.5, -6.5], "expected": 99.5}, {"input": [99.5, -6.0], "expected": 99.5}, {"input": [99.5, -5.5], "expected": 99.5}, {"input": [99.5, -5.0], "expected": 99.5}, {"input": [99.5, -4.5], "expected": 99.5}, {"input": [99.5, -4.0], "expected": 99.5}, {"input": [99.5, -3.5], "expected": 99.5}, {"input": [99.5, -3.0], "expected": 99.5}, {"input": [99.5, -2.5], "expected": 99.5}, {"input": [99.5, -2.0], "expected": 99.5}, {"input": [99.5, -1.5], "expected": 99.5}, {"input": [99.5, -1.0], "expected": 99.5}, {"input": [99.5, -0.5], "expected": 99.5}, {"input": [99.5, 0.0], "expected": 99.5}, {"input": [99.5, 0.5], "expected": 99.5}, {"input": [99.5, 1.0], "expected": 99.5}, {"input": [99.5, 1.5], "expected": 99.5}, {"input": [99.5, 2.0], "expected": 99.5}, {"input": [99.5, 2.5], "expected": 99.5}, {"input": [99.5, 3.0], "expected": 99.5}, {"input": [99.5, 3.5], "expected": 99.5}, {"input": [99.5, 4.0], "expected": 99.5}, {"input": [99.5, 4.5], "expected": 99.5}, {"input": [99.5, 5.0], "expected": 99.5}, {"input": [99.5, 5.5], "expected": 99.5}, {"input": [99.5, 6.0], "expected": 99.5}, {"input": [99.5, 6.5], "expected": 99.5}, {"input": [99.5, 7.0], "expected": 99.5}, {"input": [99.5, 7.5], "expected": 99.5}, {"input": [99.5, 8.0], "expected": 99.5}, {"input": [99.5, 8.5], "expected": 99.5}, {"input": [99.5, 9.0], "expected": 99.5}, {"input": [99.5, 9.5], "expected": 99.5}, {"input": [99.5, 10.0], "expected": 99.5}, {"input": [99.5, 10.5], "expected": 99.5}, {"input": [99.5, 11.0], "expected": 99.5}, {"input": [99.5, 11.5], "expected": 99.5}, {"input": [99.5, 12.0], "expected": 99.5}, {"input": [99.5, 12.5], "expected": 99.5}, {"input": [99.5, 13.0], "expected": 99.5}, {"input": [99.5, 13.5], "expected": 99.5}, {"input": [99.5, 14.0], "expected": 99.5}, {"input": [99.5, 14.5], "expected": 99.5}, {"input": [99.5, 15.0], "expected": 99.5}, {"input": [99.5, 15.5], "expected": 99.5}, {"input": [99.5, 16.0], "expected": 99.5}, {"input": [99.5, 16.5], "expected": 99.5}, {"input": [99.5, 17.0], "expected": 99.5}, {"input": [99.5, 17.5], "expected": 99.5}, {"input": [99.5, 18.0], "expected": 99.5}, {"input": [99.5, 18.5], "expected": 99.5}, {"input": [99.5, 19.0], "expected": 99.5}, {"input": [99.5, 19.5], "expected": 99.5}, {"input": [99.5, 20.0], "expected": 99.5}, {"input": [99.5, 20.5], "expected": 99.5}, {"input": [99.5, 21.0], "expected": 99.5}, {"input": [99.5, 21.5], "expected": 99.5}, {"input": [99.5, 22.0], "expected": 99.5}, {"input": [99.5, 22.5], "expected": 99.5}, {"input": [99.5, 23.0], "expected": 99.5}, {"input": [99.5, 23.5], "expected": 99.5}, {"input": [99.5, 24.0], "expected": 99.5}, {"input": [99.5, 24.5], "expected": 99.5}, {"input": [99.5, 25.0], "expected": 99.5}, {"input": [99.5, 25.5], "expected": 99.5}, {"input": [99.5, 26.0], "expected": 99.5}, {"input": [99.5, 26.5], "expected": 99.5}, {"input": [99.5, 27.0], "expected": 99.5}, {"input": [99.5, 27.5], "expected": 99.5}, {"input": [99.5, 28.0], "expected": 99.5}, {"input": [99.5, 28.5], "expected": 99.5}, {"input": [99.5, 29.0], "expected": 99.5}, {"input": [99.5, 29.5], "expected": 99.5}, {"input": [99.5, 30.0], "expected": 99.5}, {"input": [99.5, 30.5], "expected": 99.5}, {"input": [99.5, 31.0], "expected": 99.5}, {"input": [99.5, 31.5], "expected": 99.5}, {"input": [99.5, 32.0], "expected": 99.5}, {"input": [99.5, 32.5], "expected": 99.5}, {"input": [99.5, 33.0], "expected": 99.5}, {"input": [99.5, 33.5], "expected": 99.5}, {"input": [99.5, 34.0], "expected": 99.5}, {"input": [99.5, 34.5], "expected": 99.5}, {"input": [99.5, 35.0], "expected": 99.5}, {"input": [99.5, 35.5], "expected": 99.5}, {"input": [99.5, 36.0], "expected": 99.5}, {"input": [99.5, 36.5], "expected": 99.5}, {"input": [99.5, 37.0], "expected": 99.5}, {"input": [99.5, 37.5], "expected": 99.5}, {"input": [99.5, 38.0], "expected": 99.5}, {"input": [99.5, 38.5], "expected": 99.5}, {"input": [99.5, 39.0], "expected": 99.5}, {"input": [99.5, 39.5], "expected": 99.5}, {"input": [99.5, 40.0], "expected": 99.5}, {"input": [99.5, 40.5], "expected": 99.5}, {"input": [99.5, 41.0], "expected": 99.5}, {"input": [99.5, 41.5], "expected": 99.5}, {"input": [99.5, 42.0], "expected": 99.5}, {"input": [99.5, 42.5], "expected": 99.5}, {"input": [99.5, 43.0], "expected": 99.5}, {"input": [99.5, 43.5], "expected": 99.5}, {"input": [99.5, 44.0], "expected": 99.5}, {"input": [99.5, 44.5], "expected": 99.5}, {"input": [99.5, 45.0], "expected": 99.5}, {"input": [99.5, 45.5], "expected": 99.5}, {"input": [99.5, 46.0], "expected": 99.5}, {"input": [99.5, 46.5], "expected": 99.5}, {"input": [99.5, 47.0], "expected": 99.5}, {"input": [99.5, 47.5], "expected": 99.5}, {"input": [99.5, 48.0], "expected": 99.5}, {"input": [99.5, 48.5], "expected": 99.5}, {"input": [99.5, 49.0], "expected": 99.5}, {"input": [99.5, 49.5], "expected": 99.5}, {"input": [99.5, 50.0], "expected": 99.5}, {"input": [99.5, 50.5], "expected": 99.5}, {"input": [99.5, 51.0], "expected": 99.5}, {"input": [99.5, 51.5], "expected": 99.5}, {"input": [99.5, 52.0], "expected": 99.5}, {"input": [99.5, 52.5], "expected": 99.5}, {"input": [99.5, 53.0], "expected": 99.5}, {"input": [99.5, 53.5], "expected": 99.5}, {"input": [99.5, 54.0], "expected": 99.5}, {"input": [99.5, 54.5], "expected": 99.5}, {"input": [99.5, 55.0], "expected": 99.5}, {"input": [99.5, 55.5], "expected": 99.5}, {"input": [99.5, 56.0], "expected": 99.5}, {"input": [99.5, 56.5], "expected": 99.5}, {"input": [99.5, 57.0], "expected": 99.5}, {"input": [99.5, 57.5], "expected": 99.5}, {"input": [99.5, 58.0], "expected": 99.5}, {"input": [99.5, 58.5], "expected": 99.5}, {"input": [99.5, 59.0], "expected": 99.5}, {"input": [99.5, 59.5], "expected": 99.5}, {"input": [99.5, 60.0], "expected": 99.5}, {"input": [99.5, 60.5], "expected": 99.5}, {"input": [99.5, 61.0], "expected": 99.5}, {"input": [99.5, 61.5], "expected": 99.5}, {"input": [99.5, 62.0], "expected": 99.5}, {"input": [99.5, 62.5], "expected": 99.5}, {"input": [99.5, 63.0], "expected": 99.5}, {"input": [99.5, 63.5], "expected": 99.5}, {"input": [99.5, 64.0], "expected": 99.5}, {"input": [99.5, 64.5], "expected": 99.5}, {"input": [99.5, 65.0], "expected": 99.5}, {"input": [99.5, 65.5], "expected": 99.5}, {"input": [99.5, 66.0], "expected": 99.5}, {"input": [99.5, 66.5], "expected": 99.5}, {"input": [99.5, 67.0], "expected": 99.50000000000001}, {"input": [99.5, 67.5], "expected": 99.50000000000001}, {"input": [99.5, 68.0], "expected": 99.50000000000001}, {"input": [99.5, 68.5], "expected": 99.50000000000003}, {"input": [99.5, 69.0], "expected": 99.50000000000006}, {"input": [99.5, 69.5], "expected": 99.5000000000001}, {"input": [99.5, 70.0], "expected": 99.50000000000016}, {"input": [99.5, 70.5], "expected": 99.50000000000026}, {"input": [99.5, 71.0], "expected": 99.50000000000043}, {"input": [99.5, 71.5], "expected": 99.5000000000007}, {"input": [99.5, 72.0], "expected": 99.50000000000114}, {"input": [99.5, 72.5], "expected": 99.50000000000188}, {"input": [99.5, 73.0], "expected": 99.5000000000031}, {"input": [99.5, 73.5], "expected": 99.50000000000512}, {"input": [99.5, 74.0], "expected": 99.50000000000843}, {"input": [99.5, 74.5], "expected": 99.50000000001388}, {"input": [99.5, 75.0], "expected": 99.5000000000229}, {"input": [99.5, 75.5], "expected": 99.50000000003776}, {"input": [99.5, 76.0], "expected": 99.50000000006224}, {"input": [99.5, 76.5], "expected": 99.50000000010262}, {"input": [99.5, 77.0], "expected": 99.5000000001692}, {"input": [99.5, 77.5], "expected": 99.50000000027894}, {"input": [99.5, 78.0], "expected": 99.5000000004599}, {"input": [99.5, 78.5], "expected": 99.50000000075826}, {"input": [99.5, 79.0], "expected": 99.50000000125016}, {"input": [99.5, 79.5], "expected": 99.50000000206116}, {"input": [99.5, 80.0], "expected": 99.50000000339827}, {"input": [99.5, 80.5], "expected": 99.5000000056028}, {"input": [99.5, 81.0], "expected": 99.50000000923745}, {"input": [99.5, 81.5], "expected": 99.50000001522999}, {"input": [99.5, 82.0], "expected": 99.50000002511}, {"input": [99.5, 82.5], "expected": 99.50000004139937}, {"input": [99.5, 83.0], "expected": 99.50000006825603}, {"input": [99.5, 83.5], "expected": 99.50000011253516}, {"input": [99.5, 84.0], "expected": 99.50000018553912}, {"input": [99.5, 84.5], "expected": 99.50000030590228}, {"input": [99.5, 85.0], "expected": 99.50000050434754}, {"input": [99.5, 85.5], "expected": 99.50000083152837}, {"input": [99.5, 86.0], "expected": 99.50000137095815}, {"input": [99.5, 86.5], "expected": 99.50000226032685}, {"input": [99.5, 87.0], "expected": 99.50000372664623}, {"input": [99.5, 87.5], "expected": 99.50000614419348}, {"input": [99.5, 88.0], "expected": 99.50001013004228}, {"input": [99.5, 88.5], "expected": 99.50001670156132}, {"input": [99.5, 89.0], "expected": 99.50002753607023}, {"input": [99.5, 89.5], "expected": 99.50004539889922}, {"input": [99.5, 90.0], "expected": 99.50007484902864}, {"input": [99.5, 90.5], "expected": 99.50012340218973}, {"input": [99.5, 91.0], "expected": 99.50020344767213}, {"input": [99.5, 91.5], "expected": 99.5003354063729}, {"input": [99.5, 92.0], "expected": 99.50055293147535}, {"input": [99.5, 92.5], "expected": 99.50091146645377}, {"input": [99.5, 93.0], "expected": 99.50150231015975}, {"input": [99.5, 93.5], "expected": 99.50247568513772}, {"input": [99.5, 94.0], "expected": 99.50407844327057}, {"input": [99.5, 94.5], "expected": 99.50671534848912}, {"input": [99.5, 95.0], "expected": 99.5110477448486}, {"input": [99.5, 95.5], "expected": 99.5181499279178}, {"input": [99.5, 96.0], "expected": 99.52975041827263}, {"input": [99.5, 96.5], "expected": 99.54858735157374}, {"input": [99.5, 97.0], "expected": 99.57888973429255}, {"input": [99.5, 97.5], "expected": 99.62692801104298}, {"input": [99.5, 98.0], "expected": 99.70141327798275}, {"input": [99.5, 98.5], "expected": 99.81326168751822}, {"input": [99.5, 99.0], "expected": 99.9740769841801}, {"input": [99.5, 99.5], "expected": 100.19314718055995}] \ No newline at end of file +{"y": [-87.84495239656924, 38.22693700714092, -33.90521744118659, 92.68844181570975, 5.7993175128809895, 64.71181109109492, 56.76534462210216, -22.50445023718339, -81.58538975780817, -12.977098821802784, 79.63286218233688, 11.830596693362395, -99.83142710939194, 24.274420405799745, -38.69096531541227, 24.069843406112142, 76.44812003449772, 83.95054630121768, -2.626251396456155, -13.397547447155816, 78.01661374856371, 83.6352511155014, 9.091498592980571, 10.619971759893417, -6.812982169879291, -54.33580784626497, 66.26631804324276, 78.7883080973574, -53.749382549966704, 10.562043711554537, -79.31174900055885, -27.060022398246474, -30.527364199233745, -44.493171386154515, -26.322414635199706, 51.00483300993329, -20.480492632426134, -87.20558404008175, -18.138551663305364, 69.69583677648842, 51.525331883265636, -32.27925148868458, -57.462415856860986, -0.8298317170566207, 73.43196953096032, -7.771916118425381, -37.8132863835154, 82.11508059367588, -33.5000909289884, 25.98194660465667, 52.91347159491116, 30.02344719623119, -73.00962639276942, 59.84569900858253, -52.39717061366746, 90.4895773749268, -20.574133073955608, -40.010167929036754, -49.43595390932145, 1.9991114195031514, -47.20811405285128, 62.79438714476055, 25.53889063863201, 67.35035385815763, 1.5660026954108446, -28.897209566698123, 71.4715256042696, -22.630605637483285, -42.47725138512124, -33.2376615628432, 83.08504946379827, 47.821770183575524, -29.669489775645104, 56.52919364641775, -66.12860228168807, 98.83749774300264, 74.30939897783668, 19.43069751965578, -49.50084655215541, -3.4676319541421066, -8.100654183783561, -25.294314438504188, 33.96921146330686, -90.41953921842654, 63.57427225495033, -96.37997442477283, -54.29349092923608, -72.29258556421397, 13.253842327434626, -2.342693730483589, -4.031597561416177, 90.03564061883594, -24.22311590316488, 76.84980046658998, -2.4321229058320597, -99.68192176206443, 86.58084238672109, -59.99018032911745, -48.05120402911791, 13.967557996609031, -36.52189312962544, 86.31117567765952, -72.057168858612, -7.570434340227237, -10.70921573715411, 25.433930036736598, 90.5685382016269, -99.24958984355195, -4.847975074796068, -75.35229762590751, 96.58214427105639, -2.0912751677636834, -77.3757054119821, 95.2681757253911, -75.871174943158, 40.885508710555655, 22.651679302687967, 22.69387679218626, -59.69280858088051, -12.931067790133667, 83.97929623150364, -21.57338833532667, 32.08754531304635, -12.402444805954488, -35.01621445790282, -41.13057896431356, -46.466947878876354, 61.711340128318994, 46.93098977547075, 17.50257750689879, -15.233646426735163, -32.26265100372186, -49.997887597690884, -8.317912230746643, -10.271480869406574, 74.55436782835, 5.478512160816322, 55.0013250597122, -1.6441566198111417, 20.095733458487814, -52.34414096978901, -61.78804721967413, 10.514503058694586, -65.44412493686724, 88.0317068935253, 20.446243281925106, -49.01982374954075, -76.28612100965226, 0.10555547462756465, -14.676919958561015, -67.75592680813043, -93.23228329482328, 15.501623963136083, 50.630102156289496, -46.57956600496409, -34.07266968850094, -21.495750759419522, 41.52457304858237, 80.9869366948875, -96.6966202148741, -14.500733564492108, 67.65879198048077, 66.34545291920998, 77.87364368947516, 26.17236192573027, 43.61492527789903, 43.37370127297703, -98.40750414936907, 76.97351785446452, 24.682468179382028, -49.53692485676395, -27.62698445263763, 37.44209864576055, 21.387017919461556, 4.9602780475293, -43.44031144644725, 38.2714354016141, 9.096605323623308, -23.424526745506256, 96.34487194023416, -4.342017854764563, -35.766440665454866, 0.9670638478970233, -86.05944043304343, 88.43418854061176, 72.34386466448467, 47.76542879570772, -55.20290829084795, -62.27952758088608, 81.36845991031231, 2.9666452421645033, -45.44448770895515, -69.25056026626694, 54.20247899233382, 16.7939825829001, -69.72447976144196, 11.424645637855036, 64.34423696387273, 98.66345824412588, 94.35143848468132, -57.81628035826116, -15.693704529219758, -53.780824953137476, 77.50517727560398, 5.0270290117332195, 31.972647371065875, -76.30256764867013, 92.29904732180137, 29.484803366105524, 84.00917776911956, 85.96913898475327, -55.89971034221091, -8.535083905403823, -21.95627091514865, -70.92267387146174, 48.17537149296072, 41.15802056450576, 22.82245153140245, -47.838668381832036, -82.80929928057638, -1.951381087674008, 90.32040878222466, 47.98660409887779, 49.43178157095514, -96.27106313861474, -39.867368501115806, -74.17987925521754, 80.78554053811854, 66.30888031093161, -1.5061677820403077, -62.62852709430877, -87.77362220725954, 50.11605216087125, -28.1690573418699, -34.127855470470465, 54.82517538645254, 81.84886512343238, -89.28245642921479, 62.98925065183914, 18.420495527726217, -86.59404281467064, 66.68458867215193, 7.876787931131062, 67.40292831486099, -10.358288857745592, -27.737342234521222, -40.57655354696792, 45.24812343074592, -38.82119595646121, 29.039257711499943, -69.96957057385676, 68.6471573511835, -11.139862562816404, 33.3545375990179, 59.87232393633926, 40.35387225982387, -97.846485738849, 85.49060778180734, -37.20666087898128, 11.102618806139631, -90.5914088741979, 40.26665006789082, -50.469854277001794, -22.979311237677763, -88.39967365231807, 21.87412861553713, 74.20877064275405, 24.46753857673818, 28.708396646075073, -93.76434160525993, -14.424158255856682, 86.76541606145966, 49.24341852906193, -72.40282593616101, 64.71877731943871, 1.7132490185762066, 82.66444775454914, 6.123159817252528, 57.63161752683558, 69.51525260922656, -65.72266591312078, 9.537528667724331, 93.04131218304252, -36.07237916025872, -71.98188060184933, 24.132904612817455, -67.7159064599365, -21.886198716066673, 19.412852923160642, -46.005370702741935, 56.46132971454193, -1.2119558642562822, -89.4338809126159, -39.94306559869987, 24.6420468627625, -57.548998847235126, 80.61232248990382, -21.057020183796624, 75.87538861131114, -40.35948473020119, -98.84213573380988, 20.12515391488803, -39.23589243425374, -87.8424946717832, -80.78681113073942, -52.92945058579222, -47.25384268966626, -98.01458984423685, 83.31756231500626, -1.973697658333748, -20.360078783314222, 16.189379294941403, -93.93194387629723, 38.626233629672015, -74.77947826552801, 96.4398001203858, 52.10729328172491, -13.106837863693372, 44.2254733867851, 17.538028186707237, -13.298417429630987, -44.84198945464759, 69.76934805054191, 89.28594440886201, 34.18032148697404, -41.51186593946188, -16.0456532053024, 16.810159951162774, -2.2775390193022815, 0.5506064066676402, -77.93253421967108, 9.370584134974251, 11.76646556860861, 41.27249743276411, 24.08978818293417, 84.39231680896967, 87.18813424077962, -25.77589852227993, -83.22387433953378, 28.262137459096465, -12.552096189396948, 18.837281885004444, -70.78756306772138, -49.93145893329769, -54.02045030609954, 38.88088314375324, -44.48094412822292, -7.981418481092106, 46.49716517027821, -83.89357980965579, 11.606758197851846, -85.7864924302318, -29.67537829772931, 56.76637517505418, -72.302532777112, -80.90695569431539, 55.80854751870618, 24.49598392796075, -7.517298740830739, 78.99567420849712, 50.838101797041304, 40.520386011823916, 57.73774119858783, 75.88857673644443, 78.41054043404742, -34.3531405108435, 83.67926191667613, -11.585684246726501, 25.58003742539458, -38.36385238647766, -45.582477037315925, -0.7251772235462397, -77.54648030145054, -42.76766365701583, 27.43022242925622, -1.280974124258691, 36.692846188218624, 68.39708915331485, 61.29444026205283, -39.902930754202636, -42.5600847424537, -76.99549840927003, 55.043605070749436, 30.096506578987118, -85.90228450216088, -57.38434477374121, 25.572122456669575, -63.26534640060133, 39.74984431173712, 45.35324246534711, 82.14979196907592, -69.39797159416861, 83.32921925862371, 59.08259450468208, -81.0519881600597, 23.95855374334603, -85.75180355592423, -58.651235827075986, 97.55356569181916, 98.6145598354531, 43.84959074252981, 84.26685502467976, -22.186273846329, -96.43264961960041, 50.667011905780015, -52.26625377375533, 94.70853973988534, 26.199285296910418, -75.44697863428887, -25.244659353312414, -62.23016838078366, -95.66724985546074, 10.989847458160668, -11.1322677194877, -3.9916810841746724, 5.619647134476907, -22.39257796181913, 54.329605081264816, 99.60479336262398, 58.41555304433837, 97.53962355507483, 86.12695620588835, -88.09622887399418, 77.75666894564318, -9.149858919382666, 38.41961738429933, 81.21400527798741, 5.110922832213774, -33.247892236230285, -98.3722461566609, 7.432778060923567, 19.14779343614302, 49.834754488149, 87.62773972533606, -45.57412314703819, -5.137808719738544, 78.19782522208237, -16.952807624961878, 65.18858327892852, -22.32686120106908, 33.755720641001886, -91.87097328334937, -97.3676777912015, -13.448843638929063, 49.5824263237607, -67.09467164628336, -61.59450982479437, 2.151825669594089, -80.92348504369122, 2.56081804098298, -98.9328559636208, -52.29373270476629, 23.251001014284384, -24.296336921880297, -94.809913494542, 43.07267401667866, 98.83560406942999, -67.96527528361833, -15.0797250318562, -1.032613428650265, 77.82359154586405, 7.095365405168749, 20.710249624578395, 95.96778035153025, 59.53467982698464, -37.342138252684755, -50.133791967332364, 2.925744661179081, -79.03176550216983, 20.589158679926214, 55.42212451821845, 80.35587976367339, 3.4977361013738317, 3.922108325658087, 3.759001279500282, -7.388286215365596, -47.62681828803992, -9.620646395232683, -34.53407648878549, -34.23885270474962, -17.358805389987978, 56.6752936861412, 38.13625150123406, -45.00039343212692, 13.520950950650516, -8.167660406673278, -39.13001277686596, 21.113399249911737, 89.52934639794003, 88.11671239292116, 52.37743361019409, -62.391900484134545, -46.183786361988076, 84.81602189658597, 32.071301237529894, -3.403771787015671, -0.048346524178668915, 34.599606182567356, 7.221835486078447, -62.24034658556648, -70.62652841268931, 7.772531447330792, 3.9026360074625615, -89.02121193161614, 96.19457698732234, -20.77870224252898, -60.857502890823234, 77.56327723408126, 78.33605134690376, -36.514169910409564, 3.9306314721064837, 41.32735964784396, 97.05713307515302, 62.43698250224415, 58.61169528881305, -84.77487956025705, 31.70469678895239, 45.59276969661664, 53.87018199264412, 69.3127917500644, 43.41093132433866, 94.52000442759129, 31.675454668486168, 34.13963764820059, 90.22290560387052, -97.87150125985849, -71.27575291169634, -31.711759574971026, -41.85876705537916, -29.63172384647757, 22.81287194892856, -86.02839537469686, 31.57350314551769, -63.612678244009956, 26.707568092787582, 22.639538506959653, 86.16927272007126, -48.19848730968015, 21.517510383663236, -22.819770590050254, 73.69303520907397, -61.07448376992948, -64.33178641531828, 48.26673452551165, -6.312948854369111, -58.20271893902038, -89.37634893660591, -99.43204474349103, -42.00249926802533, -48.13734407581472, -90.86469145758555, -58.49068372481161, -41.46466648849303, 35.189862819692024, 49.897307671794664, -35.82997957728588, -80.32147461102359, -70.93284589090949, 20.425929420040518, -51.3266787764586, -94.68805324046986, -49.17330800545159, -78.5161599519434, 62.409291552275334, 81.95225840780142, -44.89557386978016, 16.214903266973195, 35.09312056223581, -36.303689790425686, 69.23012716998059, 49.778846189385206, -50.47215441668518, -61.58579795895454, 86.16943982192817, 70.51043039856287, 11.798828020623546, -26.72276287429527, -94.66028307121155, 64.88261255673612, -3.7852608896157705, -59.409713936777095, 26.007137669745603, -69.11156497068664, 10.069338568551274, 78.2565606913212, -72.17396529701254, -88.55951102430164, -51.7657789670267, 34.21739927121149, -3.2306972017478017, 93.00613451775627, 73.85535008291632, 51.59431646920888, -86.63707720171554, 35.643172048683255, 8.587317095660339, -67.12220335961763, 26.452137605609522, 75.43853962352938, -86.29063899671317, -60.55725767467317, -65.59281913305182, -49.26550461033581, 36.40180684627708, 1.8482582476814002, -55.85112400705208, -35.96680500440563, -91.99692435292299, -86.02369128851414, -16.797566795740693, 33.5458928849624, 74.43688608887285, 71.9047086725198, 75.45458664430919, -48.253056339100866, -34.49992504735458, -24.311623173533036, 60.37331615155213, 15.058003346673516, -21.047470060378146, -62.88257048354888, -83.16162030053802, -45.66293601462168, -30.94200953914836, -48.26003809864334, 46.74200267559857, -63.14859993860882, -6.961534735490574, -97.15419677402328, -38.23627323864649, 54.23018598050754, 74.26004521121635, 79.97588392644144, 3.5792342323414488, -86.48841752225506, -13.378650418513232, -21.295817768340612, -82.03269929366712, 16.641023676153964, -35.075646994249695, -77.61735915415446, 50.62924995124317, 33.25889841661092, -58.175239804542, 7.152747717042459, -45.380793099046166, 27.992123614896755, 29.874209070680195, -72.18577970599911, 59.92294179979311, 86.07331494595283, 31.24693199705149, 55.37792454049969, 80.44786083692568, -64.20169135884547, -53.77282530218339, 66.11100727027633, -80.04743015090818, -98.27519026552768, 48.03990508826544, 81.39833330229604, 22.092318384281583, 37.43131469142307, -79.6589593702873, -73.27568756548706, -89.88676262717101, -81.88033137405817, 43.195512316681715, -41.80908860374035, 4.947643199288137, -31.508518320900222, -24.574413659708313, 52.598303746791316, -57.38816494180228, 38.36454881006674, 54.43226774437932, 30.21215461524241, 36.902650607693005, -48.57604991010695, -93.00831939744944, -48.312365891327346, 9.4657267634703, -14.688925836243328, 46.68157788798325, -52.70855772297944, -18.73152012048824, -48.45448488876016, -60.27057057397079, 23.203121066447395, 28.201777881992797, 21.627763073207262, -39.489808219217124, 68.96096334429106, -60.68586443224411, 35.52308870198257, 44.39948423595169, 47.75297716182095, -90.17492608908968, -36.61225627499351, 48.26531561276266, 34.93177758445222, 40.82206197570238, -22.5703882125122, -43.23795739265685, 37.83954642955388, 23.36935916393898, -51.18396646665706, 38.66728646829401, -90.89978133135021, 99.66336452321161, -31.27052599971654, 77.83822818684743, -67.85031167731053, 45.59457329308455, -39.01017411280758, 54.8935396502591, -30.265251759560584, 27.495606605987717, 94.21167946556253, -48.1663951845791, 94.57866249699936, 97.38431444726808, 8.019086330161372, 63.699183625115694, -49.27079456918351, -78.10434612197443, -25.210453148243573, -12.159031756768243, 80.72948370684995, 33.67039612400089, 56.5562015124564, 71.95900481259099, -86.48657235897754, 99.09243688276712, -70.21571119264675, -9.558954607260063, -42.28249000473547, -76.20429351503624, -6.488572955932554, 17.512646731876686, -47.26742656332852, 39.26120190238632, -25.921390123807456, 65.60417350438661, 49.75352405627359, -81.71277169684399, 61.543426545959335, 11.665506276532284, -20.483440032265918, 16.18753002966406, -12.355955570589089, -72.22338834899482, 99.53554623006602, -83.92841249566311, -75.59895634318403, 71.10431337971426, -83.98656167847798, -36.15725683595494, -21.58102661264998, -94.63461024084108, 31.175689692000788, -61.05989642410545, -5.501350196589769, 87.72610891830902, 23.45189345517656, -47.20689801927378, -90.32387576635335, -99.14929806430823, -45.31650318566744, -78.28276963549865, 27.307084412411314, 63.612533118096394, -25.068634665764307, 7.637516993579169, 40.60827792469735, 68.00110986225371, -51.60034293566569, -48.52790912242357, -43.090503648904544, 37.988855799930434, 72.4151275997593, 35.75266400528528, 51.80450065496723, 73.18409649475046, -17.237351849089052, 0.561269683847911, -6.180901747628354, -14.527656330221575, -86.34227189306381, -40.033083921446554, 35.581184182923096, -57.86641049360066, 2.772082097075227, -51.468399994065315, 40.42214755901321, -39.89991436473086, 13.016074233903268, 64.94548110484104, 10.174541031051973, -74.91307366402992, -18.730916600408094, 87.29356656360335, -16.976128694079023, -61.87917410832418, -32.039060959469225, 13.684900807488873, -67.24344792608451, 94.52055392722184, -41.01919231452757, -74.92218979118982, -9.427812960521436, 56.55398000179383, 94.62085316955535, 73.7570183061813, 89.35972702616496, 44.09985124077323, -76.57744260353059, -80.08895464445857, 66.2524213694739, 39.38850420126573, 51.045642317915906, 63.861189615634856, -31.75555293768855, 91.4905719592955, 73.43325731230087, 32.72755471819892, -8.23761735502157, -99.05775241910484, -33.88603563444896, -27.69399881953693, 8.534564579528677, 11.408257206228626, 64.95068535793976, -6.718653017236392, 71.22332217815145, -62.315986710404545, -87.85830838942738, 54.863036441438965, 78.26301203929003, 13.586597207409753, 7.73203824479927, 45.81380090134431, 66.29531894547449, -61.95545148025789, 0.23851040671412704, 25.577962000503234, 84.00483011849784, -57.9352107783945, -53.5498503151032, 11.944218440025068, 73.89907566012874, 3.6767386276151512, -16.678269632464676, 85.82129253272782, 16.093320051458406, 94.31533520258776, -50.163252182265005, 5.613859234792912, 22.772275853073424, -28.81052438676413, 81.13471589751092, -73.63150343358305, -33.43187826449969, 51.51536084672642, -62.41200586408231, -9.067226759793968, -31.680749658209038, 18.67320353602919, 69.32966095836838, -49.78687976489602, 92.15370416584878, 90.79291304982334, 52.53638183203458, 35.207766568667694, -20.26349787391844, -9.05439876519307, -80.91719644662028, 20.331992484612243, -67.79470140638213, 28.829232741890877, 64.20833051024292, 99.58726112174813, -6.28309899794553, -28.70871324584951, -89.7830480811322, 99.37443936359364, -69.3775394948319, 37.53618564402467, -91.78199618424385, 4.86325503389034, 22.693250678370518, -1.3767531513406226, 6.0045064859194355, 8.571151667413602, 68.97135528009483, 32.64790645965428, 74.2049772855998, -4.825346125239506, 68.20004454806872, 99.56811267525043, -40.05501507999001, -58.517395407470964, -30.58846144628508, 26.42518011159538, -51.98000517640631, -96.87459052794105, 36.78307667944921, 18.42153709477401, -56.63771833947662, 93.89086929781325, -77.09887090867707, -98.63846778386676, 97.98469486022191, 78.10674780888246, -39.362523939530256, -28.225565244889268, 83.00835469705959, -92.87035248622134, 82.7515735727869, -99.60935610524895, 62.18966002322938, 12.319527066950272, 73.68775811859473, -25.885650522349664, 48.033705355459205, 2.184676954869772, 85.78461381750867, -52.0671036940523, -25.150511036130283, -48.86296201420595, -0.19313438111998948, -36.235852955903525, 72.35933826130437, -50.9602134493877, 24.041834907021325, -26.451478489509014, 64.64230773922739, 49.29721724046942, -10.864362126585547, 26.15295457745755, -90.09548122383025, 24.03852159711431, 75.8886974048975, -76.60240365127413, 92.84835726605812, 6.424878636589199, -76.80187976385113, 35.54486488436095, 22.015023134468862, -6.056730563623887, 36.21034137670952, 5.164043089976488, -60.95033168197972, -46.56059700395056, -42.60143170552577, -21.022269874700953, -93.54566158182624, -46.22792605081687, -88.44808744319064, -80.65506754628136, -93.50482920084235, -60.87055178754986, 52.630310592054684, 4.21026500150586, 59.85162913883616, 37.29679005450714, -5.674917487729104, -12.51796835543297, 58.32852477498801, -17.806688930194838, -43.58614019327993, 28.92376224115506, 74.60812576632961, 54.07591053535333, 16.655914368489988, -44.32727928801916, 54.19634717435929, 90.41340851732767, -94.19215449808102, -53.273029207311005, -87.02103574361857, 10.690697446571164, -95.97513035331171, 97.17821184323984, 79.62455841592279, 64.18787720639926, -12.546100187248314, -68.98810313521446, -65.19941027830336, 55.64497549659896, -27.226642675960264, 58.84697544420061, 65.60797381235949, -74.2458857072636, 96.92817040728238, 60.181204369676834, 41.08887885387119, 28.0355206790407, -27.111890003800283, 84.52625438821067], "x": [-88.38045941556432, 50.2037996536894, -26.225458940859923, -92.54480808088937, -23.822743206384615, 83.75998414056576, 36.199705350344374, 44.79341932086538, 32.31525448724881, 84.70675053778467, -9.020655481590566, 80.8810944507122, 31.605605257564804, -45.719378303200855, -9.403505465430783, -64.32942347191178, 13.793304564613479, -15.852676766751529, 88.71448271385555, -53.66851179359762, -1.1279042923286795, 33.08749246334946, -26.895265419188007, -46.823453448208284, 4.513512473269628, -79.3846531697701, -95.8164587213952, 10.83213973594512, 32.529124999592256, 97.44327797497121, 6.071019510635239, -13.607581539871745, 52.94670299260025, 57.91012464786826, -6.740954244220404, 60.80971170611488, 26.973804591310028, 66.68170877889864, -25.722715247437677, 29.817045090798047, 9.055694835510963, -68.7284167258695, 48.54904045731095, 37.793741785524816, -20.89987976969998, -24.366122469385118, -90.63657787838466, -60.43705020154611, -47.48025583909652, -33.655634880422355, -91.03807876771046, 5.506749131477534, -70.52112877110063, -80.36667787038371, -31.980176870100422, -66.414410148007, -92.08999792337454, 62.32692438499362, 86.35368894224925, 16.837950488467584, -91.67409429827056, -98.76234857903032, 23.27006211160672, 31.30545374963998, -49.38731221212289, -37.771129640051115, 12.562956273482072, -43.27754138346571, 20.428229067774055, 1.1093954946617544, 92.27868879865545, 74.95343528593958, 83.28303515338783, 73.22160784649927, -21.754928454389074, -68.0033650205473, -69.85133453937075, -0.6394780405912286, 38.002595362710224, -89.40637647249203, -20.361142999261574, 72.60632887780827, -68.2260134207312, 73.08163195411532, 58.69105056809201, -20.965295000991873, -73.39085091723095, -13.30901174852093, 61.67124530213508, -76.45214462088168, 9.964391219234471, 64.50912127984378, 38.32918331115539, 73.57168967116726, 56.54973924667112, 73.19634232306004, 25.29621045180697, -39.35278375056572, -69.62480522261356, 90.28794828774491, 61.77262114456954, -8.551449151465462, 52.47966575953694, 61.07219992946264, 19.427083799677618, -53.401370712534366, -96.66082906358633, -58.6573293887638, -54.10761530925008, 98.82296342185305, -71.00312684549282, -62.355431985384755, 84.41675546978956, 39.933220620251575, 38.2009006865471, -83.19050865871873, -62.14727707551984, 65.0823202953288, 77.04911574511252, 48.1725449325979, -64.46373372503204, 0.8740438243983562, 84.02924004347258, -91.98716663090809, 16.840657929601207, -62.45367876924639, -86.84276261286396, -56.44731487806496, 67.4568734746415, 2.5089228485981607, 91.9153089912279, -6.894093323850399, -90.57523916331087, -10.166280486920982, -3.4142290820489762, 79.76737737644294, -61.05823322780639, -25.440242540027683, -73.61025560333962, 44.4748543842436, 11.35109157268279, 62.51464984504088, -74.0475242784572, -82.94570121590014, -16.643535574027936, -30.077444085412083, -87.25465975841084, 85.44043050227438, 32.204450661566284, -76.58486521395594, 37.071884407425074, 0.2713109061344312, -9.396516249276516, 44.170281260332615, -75.26885490252128, -42.90459987176429, 67.42728224778455, -59.61431071129923, -38.392080099594935, 39.50774455210578, 30.493797309104934, 2.7784066193424337, -51.3787238257037, -11.640590574837063, -46.71123969472566, 42.285793209547535, -51.33219644434208, -29.96364424445639, -43.28439956413435, 26.986398468598296, -22.669171086504193, 81.87265018581857, 12.964665250716052, 37.19376496935001, 82.33952926620796, -55.51589160552888, -99.15622965367355, -5.239042096574224, -89.28433460819738, 53.74686433810817, -4.240476181768955, 74.374274287519, -35.37785409913374, -99.59307921557622, 28.470337945454958, -76.086306093061, 64.6655002795213, 29.155575241046563, -8.306248743143414, -7.5537246005554834, 34.67654654633708, 21.730434309768086, -91.1444655247883, 72.2514021961554, 50.32837194477065, 7.667126916852567, 37.34702023234314, -56.27812692146772, 46.97540101896337, -49.40699267903015, 1.3608342394569632, 33.298682972746974, 65.98062974388142, -24.64516882257135, 99.23121352507863, 98.0431871265213, -16.697286973373508, 83.53733517451576, -22.291035354435735, -51.91556727263755, 31.104569491158543, 55.04953928657855, 36.56806374693801, 51.00262526229139, 78.33001554700934, -0.9970314215685789, 12.709793559612976, -28.82454879088189, -10.141927597052344, 21.84738227641651, -92.1278505173764, 0.22308846443846164, 9.583575775967915, -19.51943099512357, 23.4200362754585, 25.928090116042952, 69.15838252601577, 26.948572079656927, 46.492481986839465, 46.801263276289745, 59.449283331060315, -62.95408858075433, -66.45317826581949, 36.12653720598004, -96.90333989068263, -18.445651623567684, -32.52044967502428, -85.90804522923845, 6.890720462361145, 85.70627317318133, 15.764657951150312, 58.82741805784079, -71.31054102534745, -42.56885600500164, 53.00108223230512, -86.21135305565117, -52.22968182334738, -90.02557803847915, 70.35234604104247, 72.19142633917659, -73.82059982283027, -94.6544968549453, -25.277993017078273, -52.779020313724075, -55.22169886424746, -91.78634588297021, -68.44004277636269, -88.42426668263221, 41.55181782212841, 91.11530760268187, 19.847460655632702, -21.69901049613152, 31.6498886293453, -15.470407825947845, 82.32810671068827, 59.70588116606942, 88.74923659919568, -41.57937812761929, -65.63181110374032, -91.58806345299753, 68.97893308613016, 28.046206997724227, 94.153330368669, 39.70396522599327, -35.9375284374084, -20.188125056265818, -80.43997539861766, -87.27495479997907, 38.326904393607094, -61.10610189769841, 23.598038449230344, -6.449143646225508, 8.837803578072894, -78.51963168032023, 67.96141926070251, -56.18745843196757, 37.35678279995719, 34.47679232045263, 64.79453923026787, 17.36611239148111, -92.31581246725491, -11.697937413152346, 9.18395204088263, -69.53595576877198, 74.57888248158503, -66.40654611366057, -82.11976729778081, -85.04516564141143, -1.010595097193729, 27.3256946501548, -26.104525541584024, -32.9303322503107, -36.203501189460006, -45.12716542637929, 90.07791322563244, 36.009159093305385, 13.320162690820283, -22.560595637408312, -30.467463543152235, 1.3637893693299077, 25.183198815750615, 27.22180117913537, -74.25313358902702, 75.66483125228712, -81.97814505210297, -6.596544873333741, -17.178905294205464, -36.7335751148854, -64.81250653341183, 31.702675022888116, -25.710856929296327, 29.45035434208586, 38.38467709313244, -25.81853994315165, 32.37020334661932, 60.16751481224952, 22.41055011587332, 25.33742756913928, -44.730381191415105, -0.46400059997434084, -64.54910556490094, -33.766456375725525, 11.457313615663494, 60.92298348821515, 60.57642792554475, 88.45935390999222, 62.29231874441001, -70.07082859760263, 7.927071694172909, -25.546307705205678, -50.418171050437245, 42.394630659382074, 86.14619421194521, -36.14877200652911, 58.94245454061368, 29.270136699910665, -80.30282329542764, 70.35416469200848, 74.98323655337029, -84.33048388005099, -67.04792192479698, 58.463598577359534, -62.423385558864396, -83.57135675286747, 72.05217329759103, -31.528637391963173, 30.57215596435583, 93.50480230917253, -45.52326963302138, -3.032034067137417, -52.684414694004175, 45.03848264531055, -26.154021541931158, -21.47116615931637, -30.755785759105137, -88.01988280495323, -41.40585297731691, -85.49950966400218, -30.800021379648697, 1.7040370967150693, 82.52347140017707, 2.191451785234449, 36.43191428557387, 57.59867824305027, 55.822247334206054, -88.00304375388848, -71.08294516838474, -31.00717965397189, -76.22200909411434, 90.48037452616305, -23.83774216344527, 44.22338477015492, 56.99765936192398, -55.443507679335326, 15.345689708435302, 26.550252454857045, 65.64725219399125, 55.65204230269015, 16.813335819295602, 42.82694330210862, -29.413123641410863, 89.85217928720567, 72.73028774241664, 5.965509062613904, -57.712135958492624, -32.483233690071074, 31.429284489930723, 57.35038086144678, -8.044404638465537, 50.73600954532992, 26.31595835567846, -69.0838200419263, 12.839093655159743, 65.8156976482376, -7.408642271397298, 41.36000755560775, -39.909301040337006, 79.25634445416037, -4.452150168921094, -92.98899951261374, 57.22593557546281, -75.17536988461762, 59.15589679806189, -66.5591891545061, -19.803786402113772, -56.26623766687271, 49.51570641015272, -81.25122181785405, -15.492217832831187, 1.5773846443856172, 15.083584193788369, -68.9791063519307, 98.925670362745, -53.57543059975247, 23.229733234301975, 49.20343134213539, -88.41622512808496, -33.48257434908051, 97.28703092340334, 18.03703371771752, -65.39802312466756, -85.29167394967732, 33.48949098045358, 74.14287515671694, 35.62120715071623, 28.77800250436681, 96.17084483673068, 61.21629249001202, -41.57869558454532, 23.371742149466584, 91.51457437055356, 30.6059541775181, 20.70279073133068, -90.2210464472754, -55.59112772700623, -98.03360874506055, 69.0049810785595, -51.27873097241498, -9.294422752910748, 53.71526760429069, 85.02256871042101, 22.391694270643285, -56.80562137996703, 98.51126588992824, -60.13344732376251, -84.01194603809195, 46.351371485082694, 79.45542614448536, 2.3209243641951787, -22.652247207399185, -57.6084913440348, -97.80332709179729, 59.250852515320275, 41.6434852131799, 49.02768155904599, -73.19917642779919, -29.92988540055792, -83.4329051022016, -90.86355375079684, 0.5934883731386549, 78.65472385489883, -18.94290602788182, 26.84796859307157, -6.836040449483477, -5.207829201842728, 80.25006756434041, -50.621855399043625, 43.905484794101795, -36.117853990235574, -9.642881503235174, 49.26406274049114, -40.76437022628085, -7.182791682541634, -84.17483702588405, -53.06125613503867, -15.164592488994202, 27.208442748796585, 64.90037069658675, -65.97374615577849, -35.860943828557424, -28.04683868493396, -15.526465011857596, -11.305943878764623, -22.199750416946728, 90.79001612648406, -24.764734597860254, -92.49291788880731, 71.6970512327826, 6.95038561437687, 2.0198586421066125, 70.77523987080406, 50.523499240716745, 33.693317827669745, -36.81545998770057, 66.01711746963903, -52.71006062585117, -14.065625692715386, -9.743936283920448, 10.650274352290111, -32.02235101458406, 76.70918860553502, -58.44016230668541, -12.739459262839773, -43.25882081055064, 38.686757878049264, -84.34475165290742, 97.19375164880657, 47.4547201331487, -53.63943090673033, 8.170031708243329, 89.03829853093472, -28.363438564577123, 41.62502070583588, 51.23502616144282, 45.24096302225615, -44.50946457123932, -32.79785988118327, -19.47664410384, -42.574927779689716, 73.94093308085559, -76.63232227197486, 77.22534130207885, -31.05717056504318, 58.20951248643095, 70.75593819554618, 14.780773156507877, 56.3692631671025, -17.7021672632993, 38.15733022377745, 57.91732437986536, 53.07289987066238, 49.261447322186626, -41.23860123059826, -8.18580960102156, 27.240250398869364, -82.16325007482257, -64.27161526053, -77.76155962922189, 5.7426654762537765, -65.35098283507509, -31.252694851361767, -15.887847656648503, 80.80042440923657, -87.2061255253252, 11.408731386969635, 52.18039416488719, -35.6745829303228, -30.616700690599984, -16.553947402379748, 63.055162110281856, -27.00449807088772, 15.341757383820749, -80.40683387847692, -55.81435996828263, -46.69420049356976, 32.66923068623154, 26.296910769654147, -41.59249525627726, -93.72574069395525, -72.0346974965768, 97.0596492022278, 7.422480632004238, 16.402375156629304, 85.56377249201046, -12.342543728485737, -54.96795552612961, -46.93829378868397, -92.4611674799419, -85.06982706361703, 83.5514068614535, -73.13511108428317, -78.36646431352285, 73.17384976080089, 80.41250686074443, -80.0537977337382, 92.78953337342938, -62.73685800768709, 65.2262570086281, 39.74101050386233, 27.069336140810933, -86.53373758703502, -34.702474983755465, -49.189019825531076, -50.768864240234365, 88.27448489059105, -77.25812914876721, -33.33896602497592, 34.426149065758295, 72.34612053985029, -2.8537782441868274, 94.820056461349, -72.6045319808125, 66.10188477688465, 68.03936354545795, -24.513988818770713, -29.608930984728275, 25.01265549060375, 73.70487255074755, -63.105477544671814, -70.39400629511219, 76.68703583088006, -38.77240476500787, 42.21168945586206, 65.3946613178966, 67.68495139723078, 27.605491539372622, 51.85318295452768, -38.24440943139529, -73.6337252167087, -68.9944980193616, -53.36253983831942, -12.324908653627205, -65.52213202014805, 41.05448782552196, -96.98704844787174, -79.9473813187145, 88.92913811364494, -68.0344356447091, 96.74296018289553, -14.922976606980342, 96.74856611787504, 57.64456733503002, 59.43579479420163, -22.84683258594775, -68.49943847389157, 13.494408321200126, -0.42201030258095784, 95.623592845889, 90.36365429258112, -66.34541671857053, 75.79727293704207, 20.414702650460967, -51.10165004983065, -79.14907423810737, 96.662690578525, -8.30769120914205, -90.75408926705227, 94.09397599145467, 40.51079720676316, -70.19767159181846, 86.33151091718437, 37.028947562314244, -83.03978441675363, -13.08665524796551, 66.9565023019027, -1.807306800665117, 13.13481738114038, 71.75756293686081, 90.78116535570194, -45.22305296002757, -3.7037436118195046, 73.5027039826021, 73.88275440195059, -33.39649652580769, -34.679543352154, 73.5122243564281, 61.41113643967151, -98.55056775379343, 66.89175604272967, 5.092352134859283, 3.641042936462682, -54.79164365697364, -97.9081920853006, -17.71226359685359, -76.087535062598, -51.99036984952128, -2.1947975810962816, -68.59742309248611, -12.910720525093438, -29.604971118656948, 94.52570702731413, -25.757188367986032, 93.40848121522546, -69.60510893934809, 23.450597547064334, -15.00780760905836, -43.62236222873732, 6.804831367367555, -0.7886549881637137, -35.93415673656639, 10.036761266759271, 46.01596555006708, -6.324292803886493, -25.27542861840375, 15.106594281437793, 45.42769921967732, 14.84896269897611, 40.289645472802334, 72.78016257333292, 33.54495055251601, -26.70320133324833, 21.911551499977634, -5.743711077227559, -86.25574170407938, -93.47632255753608, -83.9184941049953, -69.9204721030227, 68.54619018442358, -95.52674997106539, -18.76190779805276, -60.68593340731694, -52.268449084845784, 55.12008599969897, 36.83136409916395, 9.517238147435108, -70.39402841331193, -99.80725836844118, 45.397156968059335, 32.170242554765, -6.974486711616976, 41.58973401635376, 80.57192123260256, 84.69949309461742, 46.05244594608675, 5.384234835396782, 90.90406742271699, -73.38213447823708, 88.32430629763945, -65.32751800514254, 84.02597571607484, 97.27458450648274, -53.710795128811604, 1.3771754509047156, -47.17856153399074, -66.68088196345134, -71.3486359377547, 28.57755501374112, 0.04267707844509516, -87.0344679439191, -38.72098487383933, 63.071656897112064, -68.61464193534806, -23.372764695352615, -45.267757318521305, -95.79356364524081, -59.09179638662765, 31.331233178990175, -97.70386062768625, 63.074142625332996, -24.18898306257134, -55.09247012392353, 82.13740301447322, 66.91827981811986, -92.24725141621634, 37.28473718317181, 30.54097270660884, 60.63111203667057, 94.20463053515405, -89.59631602655611, -62.974659948092814, 96.69186566336501, -88.5559842706514, 74.03469718526895, -98.75836425251711, 45.49293388077737, 33.67457626550532, 49.340910197575084, 81.7435414130041, -89.60386806232458, 56.405133040696, -3.078764122522145, 87.61805103202781, 93.6316197601104, 34.085680867010126, -15.438176058915616, 85.9015594499869, -4.551770138853399, 3.4806312246749087, -16.575611907972785, -90.46953381476095, 72.56263704286002, 69.40342894068527, 69.1546031245507, -40.26363866029896, 2.303094093988122, -79.63771814748459, 1.4681041432153847, 74.63578071797542, -65.51262785790033, -42.63815091920657, -53.86887371130753, 95.64024925286617, -5.363229701764908, -46.718967381413165, -86.49327601920749, 32.07108089396863, 73.08769690118288, -36.82421933704245, -52.9444982838827, 24.12232583241169, -41.05931809323915, 29.659262153429836, -6.255706189221598, 14.147048792444437, -57.93095393978081, -83.98867631297395, 10.131743669909724, 20.629781948068796, -7.506649641579827, -30.647827892167385, 67.33832695219934, -84.35472814949642, 8.62494304382993, -38.24599443997367, 74.73578771992717, -5.94403820912089, -72.2337063323836, 73.76575716423014, 20.94076851331927, -91.49003159522218, -14.586161501260463, -76.51059264125315, 74.47656130250414, 52.59993571328596, 25.450147467002893, 6.063081784983666, -0.8734551080568735, -31.13617084067897, -76.00629928597135, 77.45173163562666, 59.04473810050263, -90.63275564428513, 56.21039215644856, 42.08041141266989, -6.328510134250109, 43.63638791923498, 84.45831391056308, 99.82010730092028, 32.46211810614756, 96.93390696512887, 97.99260141456696, -77.69148941879993, -65.13636749290433, -56.24606620762951, -23.3541917201306, 82.56015977474368, 52.99884685440651, -56.00085010605047, 51.708694995245736, -72.27758187198356, 83.12407586326117, -24.59054907172822, 96.14955068297942, 70.81320940289058, -14.849275553363597, 76.94935130412657, 86.59601922351749, 36.29683795673802, -30.408569023219172, 84.85827771288461, -92.49591746949537, 97.6542805382102, 55.954767849042526, -7.88876305604677, 56.570588223361426, 35.864147863392446, 37.175802754755864, 42.51484525407349, -34.40745138717551, 18.724808498056447, -46.17013663589309, -59.96086038480999, -34.422099625946316, 44.73749649278801, 73.9075150341148, 30.043470114097033, -95.32802916626406, -96.73132139021968, -20.411542385110863, 60.415201233204556, 2.958518323183881, 7.600855547303183, -6.342696920430498, 81.45563542927954, 11.746067130382002, -25.391127559804502, 29.014767623824696, 85.72426845501892, 86.00323189304439, 90.28924861172689, -53.92542711991359, -82.58030450320202, -14.890152856975902, -14.011054159738265, -23.101851380219756, 97.25062873927965, 47.88584418237227, 48.024396715713436, 29.757240820970964, -80.86113007536142, 12.065993785692172, -50.78041343863169, -36.080520401411874, -44.80472707885714, -54.86337911060674, -87.63102613683198, 39.46460088122279, -58.764725592711486, -43.39384872413965, 3.816420518518626, 58.22721165140598, 68.63014474564059, 89.63518255702962, 75.94612776622975, -52.811334798026934, -88.03242311487894, 18.607277079162984, 92.80631493392372, -19.79648550336657, 84.05500425304325, -40.32529035063814, 70.2020206797313, -88.22837923284229, -64.75498967984781, -8.217112072739567, 39.635460812123824, -54.91384752538744, -49.94859370972647, -55.105514557747085, 35.09801156860581, 76.97451016105771, -48.10676217983543, -78.40453115920087, 83.81123138809443, 43.39812829408004, 28.34398137440985, 7.962198010224512, -74.14717787264004, 17.067031734617473, -6.97489381885012, -20.43074873989319, 50.89961012410319, 34.40150853468995, 24.82533394722796, -47.00223859034261, 8.651416879166291, -88.65752238480921, -5.7764415596395935, -72.06399603626734, -28.2975204706932, 0.5809120315118435, 37.29595235661813, 80.19204608670793, -43.280721368526855, -17.50039582721128, -68.44205208732951, 68.06401123655769, -87.1574752298763, -74.9684432401221, 67.99907329301081, 89.74988089306055, 69.15690368934736, 39.56221349667791, -81.0981477853225, 43.87986282956905, -31.519922896837826, -59.86389090076898, -38.35251935199167, 12.73088174598496, -41.696325759173014, -53.055351229912006, 72.2469122284538, -63.93441238715209, -64.81900190034034, 80.15019748012685, 14.084514059955495, -91.04002905357021, -43.92154019771335, 51.55536187887802, 37.12056686703596, -27.467339742043436, -20.09984381230325, -55.89671730497423, -43.711299857089415, 79.26471392894555, 21.442707648926373, 31.3974421194483, -34.32477157788527, -20.732792888456814, -63.26504155797128, -94.73212715900343, -32.4145671958383, -58.66922917042701, -18.8362965098475, 19.670688522792418, 8.459296868611219, 85.61525996682124, 9.984351097508267, -1.6002779031215795, -74.57365042071453], "expected": [-87.38413305156833, 50.20380594170017, -26.224996961109962, 92.68844181570975, 5.799317512881126, 83.75998414590505, 56.76534462327289, 44.79341932086538, 32.31525448724881, 84.70675053778467, 79.63286218233688, 80.8810944507122, 31.605605257564804, 24.274420405799745, -9.403505465430593, 24.069843406112142, 76.44812003449772, 83.95054630121768, 88.71448271385555, -13.397547447155816, 78.01661374856371, 83.6352511155014, 9.091498592980571, 10.619971759893417, 4.5135245226096705, -54.33580784625175, 66.26631804324276, 78.7883080973574, 32.529124999592256, 97.44327797497121, 6.071019510635239, -13.607580102136714, 52.94670299260025, 57.91012464786826, -6.7409542410879855, 60.8097668863192, 26.973804591310028, 66.68170877889864, -18.13804335263945, 69.69583677648842, 51.525331883265636, -32.27925148868458, 48.54904045731095, 37.793741785524816, 73.43196953096032, -7.771916056305911, -37.8132863835154, 82.11508059367588, -33.50009008080193, 25.98194660465667, 52.91347159491116, 30.023447196253706, -70.44136183468326, 59.84569900858253, -31.98017686874207, 90.4895773749268, -20.574133073955608, 62.32692438499362, 86.35368894224925, 16.83795084786421, -47.20811405285128, 62.79438714476055, 25.63731711992818, 67.35035385815763, 1.5660026954108446, -28.897069583767323, 71.4715256042696, -22.630605636403967, 20.428229067774055, 1.1093954946617555, 92.27879047761388, 74.95343528594123, 83.28303515338783, 73.22160790280812, -21.754928454389074, 98.83749774300264, 74.30939897783668, 19.43069752157725, 38.002595362710224, -3.4676319541421066, -8.100649448605294, 72.60632887780827, 33.96921146330686, 73.08163195411532, 63.58181630512071, -20.965295000991873, -54.293490924153055, -13.30901174852093, 61.67124530213508, -2.342693730483589, 9.964392054104986, 90.03564061884414, 38.32918331115539, 76.88680662507414, 56.54973924667112, 73.19634232306004, 86.58084238672109, -39.35278374947605, -48.05120402869064, 90.28794828774491, 61.77262114456954, 86.31117567765952, 52.47966575953694, 61.07219992946264, 19.4270837996777, 25.433930036736598, 90.5685382016269, -58.6573293887638, -4.847975074796068, 98.82296342185305, 96.58214427105639, -2.0912751677636834, 84.41675546978956, 95.2681757253911, 38.2009006865471, 40.885508710555655, 22.651679302687967, 65.0823202953288, 77.04911574511252, 48.1725449325979, 83.97929623150364, 0.8740438245766778, 84.02924004347258, -12.402444805954488, 16.840657929601207, -41.130578963764655, -46.466947878876354, 61.711340128318994, 67.45687347585971, 17.50257781474829, 91.9153089912279, -6.894093323840792, -49.997887597690884, -8.17165495356028, -3.413177834267761, 79.77280786583553, 5.478512160816322, 55.0013250597122, -1.6441566198111417, 44.47485438426944, 11.35109157268279, 62.51464984504088, 10.514503058694586, -65.44412491179679, 88.0317068935253, 20.446243281925106, -49.01982374954075, 85.44043050227438, 32.2044506615663, -14.676919958561015, 37.071884407425074, 0.2713109061344312, 15.501623963151461, 50.63166600883116, -46.579566004963745, -34.07252370298935, 67.42728224778455, 41.52457304858237, 80.9869366948875, 39.50774455210578, 30.493797309104934, 67.65879198048077, 66.34545291920998, 77.87364368947516, 26.17236192573027, 43.849765680846424, 43.37370127297703, -29.96364424445639, 76.97351785446452, 27.081586432584448, -22.669171086502047, 81.87265018581857, 37.44209864578397, 37.19376510587651, 82.33952926620796, -43.44030574951658, 38.2714354016141, 9.096605918062318, -23.424526745506256, 96.34487194023416, -3.596811552109084, 74.374274287519, 0.9670638478970234, -86.05943910743558, 88.43418854061176, 72.34386466448467, 64.66550032527141, 29.155575241046563, -8.306248743143414, 81.36845991031231, 34.67654654633709, 21.730434309768086, -69.25056026595678, 72.25140221065821, 50.32837194477065, 7.667126916852567, 37.34702023234866, 64.34423696387273, 98.66345824412588, 94.35143848468132, 1.3608342394569632, 33.298682972746974, 65.98062974388142, 77.50517727560398, 99.23121352507863, 98.0431871265213, -16.697286973373508, 92.29920392576717, 29.484803366105524, 84.00917776911956, 85.96913898475327, 55.04953928657855, 36.56806374693801, 51.00262526229139, 78.33001554700934, 48.17537149296072, 41.1580205645062, 22.82245153140245, -10.141927597052344, 21.84738227641651, -1.951381087674008, 90.32040878222466, 47.98660409887779, 49.43178157095514, 23.4200362754585, 25.928090116042952, 69.15838252601577, 80.78554053811854, 66.30888031340817, 46.801263276289745, 59.449283331060315, -62.9540885807377, 50.11605216087125, 36.12653720598004, -34.127855470470465, 54.82517538645254, 81.84886512343238, -85.87438004268408, 62.98925065183914, 85.70627317318133, 15.764657951150312, 66.68497556450282, 7.876787931131062, 67.40292831486099, 53.00108223230512, -27.737342234521222, -40.57654485518632, 45.24812343074592, 70.35234604104247, 72.19142633917659, -69.94853552438427, 68.6471573511835, -11.139861838567574, 33.3545375990179, 59.87232393633926, 40.35387225982387, -68.44004277636252, 85.49060778180734, 41.55181782212841, 91.11530760268187, 19.847460655632702, 40.26665006789082, 31.6498886293453, -15.469859794255582, 82.32810671068827, 59.70588116606942, 88.74923708354174, 24.46753857673818, 28.708396646075073, -91.48058844034429, 68.97893308613016, 86.76541606145966, 94.153330368669, 39.70396522599327, 64.71877731943871, 1.7132490188840672, 82.66444775454914, 6.123159817252528, 57.63161753096672, 69.51525260922656, 23.598038449230344, 9.537528781769371, 93.04131218304252, -36.07237916025872, 67.96141926070251, 24.132904612817455, 37.35678279995719, 34.47679232045263, 64.79453923026787, 17.36611239148111, 56.46132971454193, -1.211927939460087, 9.18395204088263, -39.943065598699725, 74.57888248158503, -57.54885655368987, 80.61232248990382, -21.057020183796624, 75.87538861131114, 27.3256946501548, -26.104525541584024, 20.12515391488803, -36.156426551551725, -45.12716542637929, 90.07791322563244, 36.009159093305385, 13.320162690820283, -22.560595637408312, 83.31756231500626, 1.3986989971351975, 25.183198815750615, 27.221817347888965, -74.25313358618517, 75.66483125228712, -74.77873096299771, 96.4398001203858, 52.10729328172491, -13.106837863638539, 44.2254733867851, 31.702675728184875, -13.298413361966395, 29.45035434208586, 69.76934805054194, 89.28594440886201, 34.331870044604756, 60.16751481224952, 22.41055011587332, 25.33762554477091, -2.2775390193022815, 0.8599605928139338, -64.54910402444085, 9.370584134974251, 12.316936364031617, 60.922983491138645, 60.57642792554475, 88.47633694058425, 87.18813424079504, -25.77589852227993, 7.927071694172909, 28.262137459096465, -12.552096189396948, 42.39463065944084, 86.14619421194521, -36.14877097316137, 58.94245454061368, 38.88095014629884, -44.48094412822292, 70.35416469200848, 74.98323655337072, -83.39521141467418, 11.606758197851846, 58.463598577359534, -29.675378297729303, 56.76637517505418, 72.05217329759103, -31.528637391963173, 55.80854751871714, 93.50480230917253, -7.517298740830739, 78.99567420849712, 50.838101797041304, 45.04933333231401, 57.73774119858783, 75.88857673644443, 78.41054043404742, -34.3531405108435, 83.67926191667613, -11.585684246726501, 25.58003742539458, 1.7040370967150693, 82.52347140017707, 2.244154100353562, 36.43191428557387, 57.59867824305027, 55.82224733420652, -1.280974124258691, 36.692846188218624, 68.39708915331485, 61.29444026205283, 90.48037452616305, -23.83774215604939, 44.22338477015492, 57.13017635666586, 30.096506578987118, 15.345689708435302, 26.550252454857045, 65.64725219399125, 55.65204230269015, 39.749844311846466, 45.4301612569822, 82.14979196907592, 89.85217928720567, 83.32924420095895, 59.08259450468208, -57.71213595841957, 23.95855374334603, 31.429284489930723, 57.35038086144678, 97.55356569181916, 98.6145598354531, 43.849590766809335, 84.26685502467976, 12.839093655159743, 65.8156976482376, 50.667011905780015, 41.36000755560775, 94.70853973988534, 79.25634445416037, -4.452150168921094, -25.244659353312414, 57.22593557546281, -75.17536988335728, 59.15589679806189, -11.1322677194877, -3.9916809483777635, 5.619647134476907, 49.51570641015272, 54.329605081264816, 99.60479336262398, 58.41555304433837, 97.53962355507483, 86.12695620588835, 98.925670362745, 77.75666894564318, 23.229733234301982, 49.2034520742978, 81.21400527798741, 5.110922832213774, 97.28703092340334, 18.03703371771752, 7.432778060923567, 19.14779343614302, 49.8347545678277, 87.62774111720206, 35.62120715071623, 28.778002504366814, 96.17084485237716, 61.21629249001202, 65.18858327892852, 23.371742149466584, 91.51457437055356, 30.6059541775181, 20.70279073133068, -13.448843638929063, 49.5824263237607, -67.09467164628332, 69.0049810785595, 2.151825669594089, -9.294422752910748, 53.71526760429069, 85.02256871042101, 22.391694270643285, 23.251001014284384, 98.51126588992824, -60.13344732376251, 43.07267401667866, 98.83560406942999, 79.45542614448536, 2.320924391927995, -1.0326134282422161, 77.82359154586405, 7.095365405168749, 59.250852515320275, 95.96778035153025, 59.53470717102543, -37.342138252684755, -29.929885398876973, 2.925744661179081, -79.03175823244331, 20.589158681996313, 78.65472385498016, 80.35587976367339, 26.847968593143868, 3.9221295967964456, 3.7591288432572245, 80.25006756434041, -47.577995009931534, 43.905484794101795, -34.34743220951107, -9.642881503214372, 49.26406274049114, 56.6752936861412, 38.13625150123406, -45.00039343212692, 13.520950950650516, -8.166746140901507, 27.208442748796585, 64.90037069658675, 89.52934639794003, 88.11671239292116, 52.37743361019409, -15.526465011857596, -11.305943878764623, 84.81602189658597, 90.79001612648406, -3.403771786487163, -0.048346524178668915, 71.6970512327826, 7.788440219472182, 2.0198586421066125, 70.77523987080406, 50.523499240716745, 33.69331782766986, -36.81545998770057, 96.19457698732242, -20.778702242528965, -14.065625692715386, 77.56327723408126, 78.33605134690376, -32.01121301980057, 76.70918860553502, 41.32735964784396, 97.05713307515302, 62.43698250224415, 58.61169529103488, -83.84371828002891, 97.19375164880657, 47.599140163415946, 53.87018199264412, 69.3127917500644, 89.03829853093472, 94.52000442759129, 41.6250684530464, 51.23502619907567, 90.22290560387052, -44.50946457123932, -32.79785988118327, -19.476639246977477, -41.46091443283391, 73.94093308085559, 22.81287194892856, 77.22534130207885, 31.57350314551769, 58.20951248643095, 70.75593819554618, 22.639924782930084, 86.16927272007138, -17.702167263299245, 38.15733028312709, 57.91732437986536, 73.6930352101826, 49.261447322186626, -41.23860123050478, 48.26673452551165, 27.240250398869367, -58.20271893898111, -64.27161526051749, -77.76155962883408, 5.7426654762537765, -48.13734404237892, -31.252694851361767, -15.887847656648503, 80.80042440923657, 35.189862819692024, 49.897307671794664, 52.18039416488719, -35.6745829303228, -30.616700690599984, 20.425929420040518, 63.055162110281856, -27.00449807088772, 15.341757383820749, -78.37555485917606, 62.409291552275334, 81.95225840780142, 32.66923068623154, 26.296952594147903, 35.09312056223581, -36.303689790425686, 69.23012716998059, 97.0596492022278, 7.422480632004238, 16.402375156629304, 86.60492326188957, 70.51043039856287, 11.798828020623546, -26.722762872633748, -92.35599590484154, 64.88261255673612, 83.5514068614535, -59.409712842479315, 26.007137669745603, 73.17384976080089, 80.41250686074443, 78.2565606913212, 92.78953337342938, -62.736858007680986, 65.2262570086281, 39.744993967308325, 27.069336140811004, 93.00613451775627, 73.85535008291632, 51.59431646920888, -50.768864240234365, 88.27448489059105, 8.587317095660339, -33.33896602497592, 34.426493301588344, 75.48293157199835, -2.8537782441868274, 94.820056461349, -65.59191827540762, 66.10188477688465, 68.03936354545796, 1.8482582476849567, -29.608930984724264, 25.01265549060375, 73.70487255074755, -63.10547754456045, -16.797566795740693, 76.68703583088006, 74.43688608887285, 71.90470867251993, 75.45462940263158, 67.68495139723078, 27.605491539372622, 51.85318295452768, 60.37331615155213, 15.058003346673516, -21.047470060378146, -53.36246647359472, -12.324908653627205, -45.66293601224888, 41.05448782552196, -48.26003809864334, 46.74200267559857, 88.92913811364494, -6.961534735490574, 96.74296018289553, -14.922976606905324, 96.74856611787504, 74.26004527202839, 79.97588392764247, 3.579234232344785, -68.49943845849282, 13.49440832120226, -0.4220103017207159, 95.623592845889, 90.36365429258112, -35.07564699424967, 75.79727293704207, 50.629249951243246, 33.25889841661092, -58.175239803763645, 96.662690578525, -8.30769120914205, 27.992123614896755, 94.09397599145467, 40.51079720676316, 59.92294179979311, 86.90387021232802, 37.032025317333975, 55.37792454049969, 80.44786083692568, 66.9565023019027, -1.807306800665117, 66.11100727027633, 71.75756293686081, 90.78116535570194, 48.03990508826544, 81.39833330229604, 73.5027039826021, 73.88275440195059, -33.39649652580769, -34.679543352154, 73.5122243564281, 61.41113643967151, 43.195512316681715, 66.89175604272967, 5.715760151405101, 3.6410429364626826, -24.574413659708238, 52.598303746791316, -17.71226359685359, 38.36454881006674, 54.43226774437932, 30.21215461524242, 36.902650607693005, -12.910720525093438, -29.604971118656948, 94.52570702731413, 9.4657267634703, 93.40848121522546, 46.68157788798325, 23.450597547064334, -14.983950305473783, -43.61442423159075, 6.804831367367555, 23.20312106648546, 28.201777881992797, 21.62777232210265, 46.01596555006708, 68.96096334429106, -25.27542861840375, 35.52308870334161, 45.733450648255506, 47.75297716182096, 40.289645472802334, 72.78016257333292, 48.26531601736333, 34.93177758445222, 40.82206198182969, -5.74371102799335, -43.23795739265685, 37.83954642955388, 23.36935916393898, -51.18396645936519, 68.54619018442368, -90.89004451422419, 99.66336452321161, -31.270525999716373, 77.83822818684743, 55.12008599969897, 45.59472966280063, 9.517238147435108, 54.8935396502591, -30.265251759560584, 45.39715698486499, 94.21167946556253, -6.974486711616976, 94.57866249699936, 97.3843144972106, 84.69949309461742, 63.69918364679869, 5.384234835396782, 90.90406742271699, -25.210453148243573, 88.32430629763945, 80.72948370684995, 84.02597571607484, 97.27458450648274, 71.95900481259099, 1.3771754509047156, 99.09243688276712, -66.65213539692667, -9.558954607260063, 28.57755501374112, 0.04267707844509516, -6.488572955932554, 17.512646731876686, 63.071656897112064, 39.26120190238632, -23.297481849898695, 65.60417350438661, 49.75352405627359, -59.09179638647774, 61.54342654595941, 11.665506276532284, 63.074142625332996, 16.18753002966406, -12.355955570589089, 82.13740301447322, 99.53554623006602, -83.92816864653409, 37.28473718317181, 71.10431337971426, 60.63111203667057, 94.20463053515405, -21.58102661264998, -62.97465994809279, 96.69186566336501, -61.05989642410431, 74.03469718526895, 87.72610891830902, 45.492933881045104, 33.67457626550532, 49.340910197575084, 81.7435414130041, -45.31650318566744, 56.405133040696, 27.307084412411378, 87.61805103206535, 93.6316197601104, 34.08568086701339, 40.60827792469735, 85.90155946681107, -4.551770138853399, 3.4806312246749087, -16.575611907969733, 37.988855799930434, 73.18474691900147, 69.40342894068527, 69.15460315372137, 73.18409649475046, 2.303094097251686, 0.561269683847911, 1.4685805473210796, 74.63578071797542, -65.51262785700125, -39.96178872871879, 35.581184182923096, 95.64024925286617, 2.772375061818947, -46.71034802952521, 40.42214755901321, 32.07108089396863, 73.08769690118288, 64.94548110484104, 10.174541031051973, 24.12232583241169, -18.73091660020723, 87.29356656360335, -6.255684100282088, 14.147048792444437, -32.039060959463534, 13.684900807488873, 10.131743669909724, 94.52055392722184, -7.506649641579824, -30.647827892167385, 67.33832695219934, 56.55398000179383, 94.62085316955535, 73.7570183061813, 89.35972747172246, 44.09985124077323, -72.22080204096991, 73.76575716423014, 66.2524213694739, 39.38850420126573, 51.045642317915906, 63.861189615634856, 74.47656130250414, 91.4905719592955, 73.43325731230087, 32.727554718201546, -0.872821752721075, -31.13617084067897, -33.88603563444896, 77.45173163562666, 59.04473810050263, 11.408257206228626, 64.95084535210677, 42.08041141266989, 71.22332217815145, 43.63638791923498, 84.45831391056308, 99.82010730092028, 78.26301203929003, 96.93390696512887, 97.99260141456696, 45.81380090134431, 66.29531894547449, -56.24275697960802, 0.23851040677085794, 82.56015977474368, 84.00483011849786, -55.86586771295829, 51.708694995245736, 11.944218440025068, 83.12417440311606, 3.6767386276156806, 96.14955068297942, 85.82129283616742, 16.09332005145844, 94.3153352312988, 86.59601922351749, 36.29683795673807, 22.772275853073424, 84.85827771288461, 81.13471589751092, 97.6542805382102, 55.954767849042526, 51.51536084672642, 56.570588223361426, 35.864147863392446, 37.175802754755864, 42.51484525411772, 69.32966095836838, 18.724808498056447, 92.15370416584878, 90.79291304982334, 52.53638183203458, 44.73756914939331, 73.9075150341148, 30.043470114097033, -80.91719589523554, 20.331992484612243, -20.411542385110863, 60.41520123320458, 64.20833051024292, 99.58726112174813, -5.619306855275705, 81.45563542927954, 11.746067130382002, 99.37443936359364, 29.014767623824696, 85.72426845501892, 86.00323189304439, 90.28924861172689, 22.693250678370518, -1.3767531513406226, 6.004506486761925, 8.57115166756944, 68.97135528009483, 97.25062873927965, 74.2049772856035, 48.024396715713436, 68.20004454806872, 99.56811267525043, 12.065993785692172, -50.779977147202565, -30.584350553722544, 26.42518011159538, -51.92556842522708, -87.63092940932655, 39.530818051710455, 18.42153709477401, -43.393846952970165, 93.89086929781325, 58.22721165140598, 68.63014474564059, 97.98493134409377, 78.2158296647938, -39.36252249656677, -28.225565244889268, 83.00835469705959, 92.80631493392372, 82.7515735727869, 84.05500425304325, 62.18966002322938, 70.2020206797313, 73.68775811859473, -25.885650522349664, 48.033705355459205, 39.635460812123824, 85.78461381750867, -49.83507699671434, -25.150511036130183, 35.09801156860581, 76.97451016105771, -36.235845965083676, 72.35933826130437, 83.81123138809443, 43.39812829800349, 28.34398137440985, 64.64230773922739, 49.29721724046942, 17.06703173461821, 26.152954577457553, -20.43074873989319, 50.89961012410535, 75.8886974048975, 24.82533394722796, 92.84835726605812, 8.753884395400748, -76.80187266548675, 35.54486488436095, 22.015023134468862, -6.056730563404633, 36.21034137670952, 37.295952356618145, 80.19204608670793, -43.243779271833624, -17.500395827198727, -21.022269874700953, 68.06401123655769, -46.22792605081687, -74.96844184097105, 67.99907329301081, 89.74988089306055, 69.15690368934736, 52.63031270358385, 4.21026500150586, 59.85162925459389, 37.29679005450714, -5.674917487729104, -12.517968355426941, 58.32852477498801, -17.80668893015268, -43.586063003973756, 72.2469122284538, 74.60812576632961, 54.07591053535333, 80.15019748012685, 14.084514059955495, 54.19634717435929, 90.41340851732767, 51.55536187887802, 37.12056686703596, -27.467339742043436, 10.690697446571207, -55.89671730497423, 97.17821184323984, 80.15388277744461, 64.18787720639926, 31.3974421194483, -34.32477157788527, -20.732792888456814, 55.64497549659896, -27.226642675960264, 58.84697544420061, 65.60797381235949, -18.8362965098475, 96.92817040728238, 60.181204369676834, 85.61525996682124, 28.03552069351097, -1.6002779031132532, 84.52625438821067]} \ No newline at end of file diff --git a/lib/node_modules/@stdlib/math/base/special/logaddexp/test/fixtures/python/runner.py b/lib/node_modules/@stdlib/math/base/special/logaddexp/test/fixtures/python/runner.py index a46928232c8e..f5e930a8aad7 100755 --- a/lib/node_modules/@stdlib/math/base/special/logaddexp/test/fixtures/python/runner.py +++ b/lib/node_modules/@stdlib/math/base/special/logaddexp/test/fixtures/python/runner.py @@ -29,22 +29,31 @@ DIR = os.path.dirname(FILE) -def gen(x, name): +def gen(x, y, name): """Generate fixture data and write to file. # Arguments * `x`: domain + * `y`: domain * `name::str`: filepath of the output file # Examples ``` python - python> x = arange(-100.0, 100.0, 1) - python> gen(x, './data.json') + python> x = np.linspace(-100.0, 100.0, 1) + python> y = np.linspace(100.0, -100.0, 1) + python> gen(x, y, 'data.json') ``` """ - data = [{"input": [a, b], "expected": np.logaddexp(a, b)} for a in x for b in x] + z = np.logaddexp(x, y) + + # Store data to be written to file as a dictionary: + data = { + "x": x.tolist(), + "y": y.tolist(), + "expected": z.tolist() + } # Based on the script directory, create an output filepath: filepath = os.path.join(DIR, name) @@ -56,8 +65,9 @@ def gen(x, name): def main(): """Generate fixture data.""" - x = np.arange(-100.0, 100.0, 0.5) - gen(x, "data.json") + x = (np.random.random(1000) * 200.0) - 100.0 + y = (np.random.random(1000) * 200.0) - 100.0 + gen(x, y, "data.json") if __name__ == "__main__": diff --git a/lib/node_modules/@stdlib/math/base/special/logaddexp/test/test.js b/lib/node_modules/@stdlib/math/base/special/logaddexp/test/test.js index 94d64f633e84..360efd52973c 100644 --- a/lib/node_modules/@stdlib/math/base/special/logaddexp/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/logaddexp/test/test.js @@ -102,25 +102,25 @@ tape( 'the function returns `-infinity` if both arguments are `-infinity`', func }); tape( 'the function accurately computes the natural logarithm of exp(x) + exp(y)', function test( t ) { + var expected; var delta; var tol; - var ex; - var i; - var v; - var y; var x; + var y; + var v; + var i; - for ( i = 0; i < data.length; i++ ) { - x = data[ i ].input[ 0 ]; - y = data[ i ].input[ 1 ]; - ex = data[ i ].expected; - v = logaddexp( x, y ); - if ( v === ex ) { - t.strictEqual( v, ex, 'returns expected value when provided '+x+' and '+y ); + x = data.x; + y = data.y; + expected = data.expected; + for ( i = 0; i < expected.length; i++ ) { + v = logaddexp( x[ i ], y[ i ] ); + if ( v === expected[ i ] ) { + t.strictEqual( v, expected[ i ], 'returns expected value when provided '+x[ i ]+' and '+y[ i ] ); } else { - delta = abs( ex - v ); - tol = EPS * abs( ex ); - t.ok( delta <= tol, 'within tolerance. x: '+x+'. y: '+y+'. actual: '+v+'. expected: '+ex+'. Δ: '+delta+'. tol: '+tol+'.' ); + delta = abs( expected[ i ] - v ); + tol = EPS * abs( expected[ i ] ); + t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. y: '+y[ i ]+'. actual: '+v+'. expected: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' ); } } t.end(); From 0537b027e584ed2b9afa8efed7952ff96a2ea303 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 16:27:20 -0700 Subject: [PATCH 0743/1062] Update namespace --- lib/node_modules/@stdlib/math/base/special/lib/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/node_modules/@stdlib/math/base/special/lib/index.js b/lib/node_modules/@stdlib/math/base/special/lib/index.js index 989f6bc98206..27d056d8ea83 100644 --- a/lib/node_modules/@stdlib/math/base/special/lib/index.js +++ b/lib/node_modules/@stdlib/math/base/special/lib/index.js @@ -972,6 +972,15 @@ setReadOnly( special, 'log2', require( '@stdlib/math/base/special/log2' ) ); */ setReadOnly( special, 'log10', require( '@stdlib/math/base/special/log10' ) ); +/** +* @name logaddexp +* @memberof special +* @readonly +* @type {Function} +* @see {@link module:@stdlib/math/base/special/logaddexp} +*/ +setReadOnly( special, 'logaddexp', require( '@stdlib/math/base/special/logaddexp' ) ); + /** * @name logit * @memberof special From 117502ae663ebfe9566f03ef6975b2ce053baee1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 16:28:43 -0700 Subject: [PATCH 0744/1062] Update namespace --- lib/node_modules/@stdlib/namespace/lib/namespace/b.js | 11 +++++++++++ lib/node_modules/@stdlib/repl/code-blocks/lib/db.js | 1 + lib/node_modules/@stdlib/repl/help/lib/db.js | 9 +++++---- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/namespace/lib/namespace/b.js b/lib/node_modules/@stdlib/namespace/lib/namespace/b.js index b1c53aa7d509..a0f729721027 100644 --- a/lib/node_modules/@stdlib/namespace/lib/namespace/b.js +++ b/lib/node_modules/@stdlib/namespace/lib/namespace/b.js @@ -5486,6 +5486,17 @@ ns.push({ ] }); +ns.push({ + 'alias': 'base.logaddexp', + 'path': '@stdlib/math/base/special/logaddexp', + 'value': require( '@stdlib/math/base/special/logaddexp' ), + 'type': 'Function', + 'related': [ + '@stdlib/math/base/special/exp', + '@stdlib/math/base/special/ln' + ] +}); + ns.push({ 'alias': 'base.logit', 'path': '@stdlib/math/base/special/logit', diff --git a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js index 04068e927879..31a65c998a38 100644 --- a/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js +++ b/lib/node_modules/@stdlib/repl/code-blocks/lib/db.js @@ -667,6 +667,7 @@ var db = { "base.log1pexp": "y = base.log1pexp( -10.0 )\ny = base.log1pexp( 0.0 )\ny = base.log1pexp( 5.0 )\ny = base.log1pexp( 34.0 )\ny = base.log1pexp( NaN )\n", "base.log2": "y = base.log2( 4.0 )\ny = base.log2( 8.0 )\ny = base.log2( 0.0 )\ny = base.log2( PINF )\ny = base.log2( NaN )\ny = base.log2( -4.0 )\n", "base.log10": "y = base.log10( 100.0 )\ny = base.log10( 8.0 )\ny = base.log10( 0.0 )\ny = base.log10( PINF )\ny = base.log10( NaN )\ny = base.log10( -4.0 )\n", + "base.logaddexp": "v = base.logaddexp( 90.0, 90.0 )\nv = base.logaddexp( -20.0, 90.0 )\nv = base.logaddexp( 0.0, -100.0 )\nv = base.logaddexp( NaN, NaN )\n", "base.logit": "y = base.logit( 0.2 )\ny = base.logit( 0.9 )\ny = base.logit( -4.0 )\ny = base.logit( 1.5 )\ny = base.logit( NaN )\n", "base.lucas": "y = base.lucas( 0 )\ny = base.lucas( 1 )\ny = base.lucas( 2 )\ny = base.lucas( 3 )\ny = base.lucas( 4 )\ny = base.lucas( 77 )\ny = base.lucas( NaN )\n", "base.lucaspoly": "\n// 2^5 + 5*2^3 + 5*2\nv = base.lucaspoly( 5, 2.0 )\n", diff --git a/lib/node_modules/@stdlib/repl/help/lib/db.js b/lib/node_modules/@stdlib/repl/help/lib/db.js index 341f7eff2ac4..0a25b9fbdb04 100644 --- a/lib/node_modules/@stdlib/repl/help/lib/db.js +++ b/lib/node_modules/@stdlib/repl/help/lib/db.js @@ -667,6 +667,7 @@ var db = { "base.log1pexp": "\nbase.log1pexp( x )\n Evaluates the natural logarithm of `1+exp(x)`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log1pexp( -10.0 )\n ~0.000045\n > y = base.log1pexp( 0.0 )\n ~0.693147\n > y = base.log1pexp( 5.0 )\n ~5.006715\n > y = base.log1pexp( 34.0 )\n 34.0\n > y = base.log1pexp( NaN )\n NaN\n\n See Also\n --------\n base.exp, base.ln, base.log1mexp, base.log1p", "base.log2": "\nbase.log2( x )\n Evaluates the binary logarithm (base two).\n\n For negative numbers, the binary logarithm is not defined.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log2( 4.0 )\n 2.0\n > y = base.log2( 8.0 )\n 3.0\n > y = base.log2( 0.0 )\n -Infinity\n > y = base.log2( PINF )\n Infinity\n > y = base.log2( NaN )\n NaN\n > y = base.log2( -4.0 )\n NaN\n\n See Also\n --------\n base.exp2, base.ln, base.log\n", "base.log10": "\nbase.log10( x )\n Evaluates the common logarithm (base 10).\n\n For negative numbers, the common logarithm is not defined.\n\n Parameters\n ----------\n x: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.log10( 100.0 )\n 2.0\n > y = base.log10( 8.0 )\n ~0.903\n > y = base.log10( 0.0 )\n -Infinity\n > y = base.log10( PINF )\n Infinity\n > y = base.log10( NaN )\n NaN\n > y = base.log10( -4.0 )\n NaN\n\n See Also\n --------\n base.exp10, base.ln, base.log\n", + "base.logaddexp": "\nbase.logaddexp( x, y )\n Computes the natural logarithm of `exp(x) + exp(y)`.\n\n Parameters\n ----------\n x: number\n Input value.\n\n y: number\n Input value.\n\n Returns\n -------\n v: number\n Function value.\n\n Examples\n --------\n > var v = base.logaddexp( 90.0, 90.0 )\n ~90.6931\n > v = base.logaddexp( -20.0, 90.0 )\n 90.0\n > v = base.logaddexp( 0.0, -100.0 )\n ~3.7201e-44\n > v = base.logaddexp( NaN, NaN )\n NaN\n\n See Also\n --------\n base.exp, base.ln\n", "base.logit": "\nbase.logit( p )\n Evaluates the logit function.\n\n Let `p` be the probability of some event. The logit function is defined as\n the logarithm of the odds `p / (1-p)`.\n\n If `p < 0` or `p > 1`, the function returns `NaN`.\n\n Parameters\n ----------\n p: number\n Input value.\n\n Returns\n -------\n y: number\n Function value.\n\n Examples\n --------\n > var y = base.logit( 0.2 )\n ~-1.386\n > y = base.logit( 0.9 )\n ~2.197\n > y = base.logit( -4.0 )\n NaN\n > y = base.logit( 1.5 )\n NaN\n > y = base.logit( NaN )\n NaN\n\n", "base.lucas": "\nbase.lucas( n )\n Computes the nth Lucas number.\n\n Lucas numbers follow the recurrence relation\n\n L_n = L_{n-1} + L_{n-2}\n\n with seed values L_0 = 2 and L_1 = 1.\n\n If `n` is greater than `76`, the function returns `NaN`, as larger Lucas\n numbers cannot be accurately represented due to limitations of double-\n precision floating-point format.\n\n If not provided a non-negative integer value, the function returns `NaN`.\n\n If provided `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n n: integer\n Input value.\n\n Returns\n -------\n y: integer\n Lucas number.\n\n Examples\n --------\n > var y = base.lucas( 0 )\n 2\n > y = base.lucas( 1 )\n 1\n > y = base.lucas( 2 )\n 3\n > y = base.lucas( 3 )\n 4\n > y = base.lucas( 4 )\n 7\n > y = base.lucas( 77 )\n NaN\n > y = base.lucas( NaN )\n NaN\n\n See Also\n --------\n base.fibonacci, base.negalucas\n", "base.lucaspoly": "\nbase.lucaspoly( n, x )\n Evaluates a Lucas polynomial.\n\n Parameters\n ----------\n n: integer\n Lucas polynomial to evaluate.\n\n x: number\n Value at which to evaluate the Lucas polynomial.\n\n Returns\n -------\n out: number\n Evaluated Lucas polynomial.\n\n Examples\n --------\n // 2^5 + 5*2^3 + 5*2\n > var v = base.lucaspoly( 5, 2.0 )\n 82.0\n\n\nbase.lucaspoly.factory( n )\n Returns a function for evaluating a Lucas polynomial.\n\n Parameters\n ----------\n n: integer\n Lucas polynomial to evaluate.\n\n Returns\n -------\n fcn: Function\n Function for evaluating a Lucas polynomial.\n\n Examples\n --------\n > var polyval = base.lucaspoly.factory( 5 );\n\n // 1^5 + 5*1^2 + 5\n > var v = polyval( 1.0 )\n 11.0\n\n // 2^5 + 5*2^3 + 5*2\n > v = polyval( 2.0 )\n 82.0\n\n See Also\n --------\n base.evalpoly, base.fibpoly\n", @@ -696,7 +697,7 @@ var db = { "base.random.beta": "\nbase.random.beta( α, β )\n Returns a pseudorandom number drawn from a beta distribution.\n\n If `α <= 0` or `β <= 0`, the function returns `NaN`.\n\n If `α` or `β` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n α: number\n First shape parameter.\n\n β: number\n Second shape parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.beta( 2.0, 5.0 );\n\n\nbase.random.beta.factory( [α, β, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a beta distribution.\n\n If provided `α` and `β`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `α` and `β`, the returned PRNG requires that both `α` and\n `β` be provided at each invocation.\n\n Parameters\n ----------\n α: number (optional)\n First shape parameter.\n\n β: number (optional)\n Second shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.beta.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `α` and `β`:\n > rand = base.random.beta.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.beta.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.beta.NAME\n 'beta'\n\n\nbase.random.beta.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.beta.PRNG;\n\n\nbase.random.beta.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.beta.seed;\n\n\nbase.random.beta.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.beta( 2.0, 5.0 )\n \n > r = base.random.beta( 2.0, 5.0 )\n \n > r = base.random.beta( 2.0, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.beta.state\n \n\n > r = base.random.beta( 2.0, 5.0 )\n \n > r = base.random.beta( 2.0, 5.0 )\n \n\n // Set the state:\n > base.random.beta.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.beta( 2.0, 5.0 )\n \n > r = base.random.beta( 2.0, 5.0 )\n \n\n\nbase.random.beta.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.beta.stateLength;\n\n\nbase.random.beta.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.beta.byteLength;\n\n", "base.random.betaprime": "\nbase.random.betaprime( α, β )\n Returns a pseudorandom number drawn from a beta prime distribution.\n\n If `α <= 0` or `β <= 0`, the function returns `NaN`.\n\n If `α` or `β` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n α: number\n First shape parameter.\n\n β: number\n Second shape parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.betaprime( 2.0, 5.0 );\n\n\nbase.random.betaprime.factory( [α, β, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a beta prime distribution.\n\n If provided `α` and `β`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `α` and `β`, the returned PRNG requires that both `α` and\n `β` be provided at each invocation.\n\n Parameters\n ----------\n α: number (optional)\n First shape parameter.\n\n β: number (optional)\n Second shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.betaprime.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `α` and `β`:\n > rand = base.random.betaprime.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.betaprime.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.betaprime.NAME\n 'betaprime'\n\n\nbase.random.betaprime.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.betaprime.PRNG;\n\n\nbase.random.betaprime.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.betaprime.seed;\n\n\nbase.random.betaprime.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.betaprime( 2.0, 5.0 )\n \n > r = base.random.betaprime( 2.0, 5.0 )\n \n > r = base.random.betaprime( 2.0, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.betaprime.state\n \n\n > r = base.random.betaprime( 2.0, 5.0 )\n \n > r = base.random.betaprime( 2.0, 5.0 )\n \n\n // Set the state:\n > base.random.betaprime.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.betaprime( 2.0, 5.0 )\n \n > r = base.random.betaprime( 2.0, 5.0 )\n \n\n\nbase.random.betaprime.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.betaprime.stateLength;\n\n\nbase.random.betaprime.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.betaprime.byteLength;\n\n", "base.random.binomial": "\nbase.random.binomial( n, p )\n Returns a pseudorandom number drawn from a binomial distribution.\n\n If `n` is not a positive integer or `p` is not a probability, the function\n returns `NaN`.\n\n If `n` or `p` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n n: integer\n Number of trials.\n\n p: number\n Success probability.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.binomial( 20, 0.8 );\n\n\nbase.random.binomial.factory( [n, p, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a binomial distribution.\n\n If provided `n` and `p`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `n` and `p`, the returned PRNG requires that both `n` and\n `p` be provided at each invocation.\n\n Parameters\n ----------\n n: integer (optional)\n Number of trials.\n\n p: number (optional)\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.binomial.factory();\n > var r = rand( 20, 0.3 );\n > r = rand( 10, 0.77 );\n\n // Provide `n` and `p`:\n > rand = base.random.binomial.factory( 10, 0.8 );\n > r = rand();\n > r = rand();\n\n\nbase.random.binomial.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.binomial.NAME\n 'binomial'\n\n\nbase.random.binomial.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.binomial.PRNG;\n\n\nbase.random.binomial.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.binomial.seed;\n\n\nbase.random.binomial.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.binomial( 20, 0.8 )\n \n > r = base.random.binomial( 20, 0.8 )\n \n > r = base.random.binomial( 20, 0.8 )\n \n\n // Get a copy of the current state:\n > var state = base.random.binomial.state\n \n\n > r = base.random.binomial( 20, 0.8 )\n \n > r = base.random.binomial( 20, 0.8 )\n \n\n // Set the state:\n > base.random.binomial.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.binomial( 20, 0.8 )\n \n > r = base.random.binomial( 20, 0.8 )\n \n\n\nbase.random.binomial.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.binomial.stateLength;\n\n\nbase.random.binomial.byteLength\n Size of generator state.\n\n Examples\n --------\n > var sz = base.random.binomial.byteLength;\n\n", - "base.random.boxMuller": "\nbase.random.boxMuller()\n Returns a pseudorandom number drawn from a standard normal distribution.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.boxMuller();\n\n\nbase.random.boxMuller.factory( [options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a standard normal distribution.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.prng: Function (optional)\n Pseudorandom number generator (PRNG) for generating uniformly\n distributed pseudorandom numbers on the interval `[0,1)`.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.boxMuller.factory();\n > r = rand();\n > r = rand();\n\n\nbase.random.boxMuller.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.boxMuller.NAME\n 'box-muller'\n\n\nbase.random.boxMuller.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.boxMuller.PRNG;\n\n\nbase.random.boxMuller.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.boxMuller.seed;\n\n\nbase.random.boxMuller.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.boxMuller()\n \n > r = base.random.boxMuller()\n \n > r = base.random.boxMuller()\n \n\n // Get a copy of the current state:\n > var state = base.random.boxMuller.state\n \n\n > r = base.random.boxMuller()\n \n > r = base.random.boxMuller()\n \n\n // Set the state:\n > base.random.boxMuller.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.boxMuller()\n \n > r = base.random.boxMuller()\n \n\n\nbase.random.boxMuller.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.boxMuller.stateLength;\n\n\nbase.random.boxMuller.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.boxMuller.byteLength;\n\n", + "base.random.boxMuller": "\nbase.random.boxMuller()\n Returns a pseudorandom number drawn from a standard normal distribution.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.boxMuller();\n\n\nbase.random.boxMuller.factory( [options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a standard normal distribution.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.prng: Function (optional)\n Pseudorandom number generator (PRNG) for generating uniformly\n distributed pseudorandom numbers on the interval `[0,1)`. If provided,\n the `state` and `seed` options are ignored. In order to seed the\n returned pseudorandom number generator, one must seed the provided\n `prng` (assuming the provided `prng` is seedable).\n\n options.seed: integer|ArrayLikeObject (optional)\n Pseudorandom number generator seed. The seed may be either a positive\n unsigned 32-bit integer or, for arbitrary length seeds, an array-like\n object containing unsigned 32-bit integers.\n\n options.state: Uint32Array (optional)\n Pseudorandom number generator state. If provided, the `seed` option is\n ignored.\n\n options.copy: boolean (optional)\n Boolean indicating whether to copy a provided pseudorandom number\n generator state. Setting this option to `false` allows sharing state\n between two or more pseudorandom number generators. Setting this option\n to `true` ensures that a returned generator has exclusive control over\n its internal state. Default: true.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.boxMuller.factory();\n > r = rand();\n > r = rand();\n\n\nbase.random.boxMuller.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.boxMuller.NAME\n 'box-muller'\n\n\nbase.random.boxMuller.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.boxMuller.PRNG;\n\n\nbase.random.boxMuller.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.boxMuller.seed;\n\n\nbase.random.boxMuller.seedLength\n Length of generator seed.\n\n Examples\n --------\n > var len = base.random.boxMuller.seedLength;\n\n\nbase.random.boxMuller.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.boxMuller()\n \n > r = base.random.boxMuller()\n \n > r = base.random.boxMuller()\n \n\n // Get a copy of the current state:\n > var state = base.random.boxMuller.state\n \n\n > r = base.random.boxMuller()\n \n > r = base.random.boxMuller()\n \n\n // Set the state:\n > base.random.boxMuller.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.boxMuller()\n \n > r = base.random.boxMuller()\n \n\n\nbase.random.boxMuller.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.boxMuller.stateLength;\n\n\nbase.random.boxMuller.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.boxMuller.byteLength;\n\n", "base.random.cauchy": "\nbase.random.cauchy( x0, Ɣ )\n Returns a pseudorandom number drawn from a Cauchy distribution.\n\n If `x0` or `Ɣ` is `NaN` or `Ɣ <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n x0: number\n Location parameter.\n\n Ɣ: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.cauchy( 2.0, 5.0 );\n\n\nbase.random.cauchy.factory( [x0, Ɣ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Cauchy distribution.\n\n If provided `x0` and `Ɣ`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `x0` and `Ɣ`, the returned PRNG requires that both `x0` and\n `Ɣ` be provided at each invocation.\n\n Parameters\n ----------\n x0: number (optional)\n Location parameter.\n\n Ɣ: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.cauchy.factory();\n > var r = rand( 0.0, 1.5 );\n > r = rand( -2.0, 2.0 );\n\n // Provide `x0` and `Ɣ`:\n > rand = base.random.cauchy.factory( 0.0, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.cauchy.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.cauchy.NAME\n 'cauchy'\n\n\nbase.random.cauchy.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.cauchy.PRNG;\n\n\nbase.random.cauchy.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.cauchy.seed;\n\n\nbase.random.cauchy.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.cauchy( 2.0, 5.0 )\n \n > r = base.random.cauchy( 2.0, 5.0 )\n \n > r = base.random.cauchy( 2.0, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.cauchy.state\n \n\n > r = base.random.cauchy( 2.0, 5.0 )\n \n > r = base.random.cauchy( 2.0, 5.0 )\n \n\n // Set the state:\n > base.random.cauchy.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.cauchy( 2.0, 5.0 )\n \n > r = base.random.cauchy( 2.0, 5.0 )\n \n\n\nbase.random.cauchy.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.cauchy.stateLength;\n\n\nbase.random.cauchy.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.cauchy.byteLength;\n\n", "base.random.chi": "\nbase.random.chi( k )\n Returns a pseudorandom number drawn from a chi distribution.\n\n If `k <= 0` or `k` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n k: number\n Degrees of freedom.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.chi( 2 );\n\n\nbase.random.chi.factory( [k, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a chi distribution.\n\n If provided `k`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `k`, the returned PRNG requires that `k` be provided at each\n invocation.\n\n Parameters\n ----------\n k: number (optional)\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.chi.factory();\n > var r = rand( 5 );\n > r = rand( 3.14 );\n\n // Provide `k`:\n > rand = base.random.chi.factory( 3 );\n > r = rand();\n > r = rand();\n\n\nbase.random.chi.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.chi.NAME\n 'chi'\n\n\nbase.random.chi.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.chi.PRNG;\n\n\nbase.random.chi.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.chi.seed;\n\n\nbase.random.chi.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.chi( 2 )\n \n > r = base.random.chi( 2 )\n \n > r = base.random.chi( 2 )\n \n\n // Get a copy of the current state:\n > var state = base.random.chi.state\n \n\n > r = base.random.chi( 2 )\n \n > r = base.random.chi( 2 )\n \n\n // Set the state:\n > base.random.chi.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.chi( 2 )\n \n > r = base.random.chi( 2 )\n \n\n\nbase.random.chi.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.chi.stateLength;\n\n\nbase.random.chi.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.chi.byteLength;\n\n", "base.random.chisquare": "\nbase.random.chisquare( k )\n Returns a pseudorandom number drawn from a chi-square distribution.\n\n If `k <= 0` or `k` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n k: number\n Degrees of freedom.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.chisquare( 2 );\n\n\nbase.random.chisquare.factory( [k, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a chi-square distribution.\n\n If provided `k`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `k`, the returned PRNG requires that `k` be provided at each\n invocation.\n\n Parameters\n ----------\n k: number (optional)\n Degrees of freedom.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.chisquare.factory();\n > var r = rand( 5 );\n > r = rand( 3.14 );\n\n // Provide `k`:\n > rand = base.random.chisquare.factory( 3 );\n > r = rand();\n > r = rand();\n\n\nbase.random.chisquare.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.chisquare.NAME\n 'chisquare'\n\n\nbase.random.chisquare.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.chisquare.PRNG;\n\n\nbase.random.chisquare.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.chisquare.seed;\n\n\nbase.random.chisquare.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.chisquare( 2 )\n \n > r = base.random.chisquare( 2 )\n \n > r = base.random.chisquare( 2 )\n \n\n // Get a copy of the current state:\n > var state = base.random.chisquare.state\n \n\n > r = base.random.chisquare( 2 )\n \n > r = base.random.chisquare( 2 )\n \n\n // Set the state:\n > base.random.chisquare.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.chisquare( 2 )\n \n > r = base.random.chisquare( 2 )\n \n\n\nbase.random.chisquare.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.chisquare.stateLength;\n\n\nbase.random.chisquare.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.chisquare.byteLength;\n\n", @@ -710,15 +711,15 @@ var db = { "base.random.geometric": "\nbase.random.geometric( p )\n Returns a pseudorandom number drawn from a geometric distribution.\n\n If `p < 0` or `p > 1` or `p` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n p: number\n Success probability.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.geometric( 0.8 );\n\n\nbase.random.geometric.factory( [p, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a geometric distribution.\n\n If provided `p`, the returned PRNG returns random variates drawn from the\n specified distribution.\n\n If not provided `p`, the returned PRNG requires that `p` be provided at each\n invocation.\n\n Parameters\n ----------\n p: number (optional)\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.geometric.factory();\n > var r = rand( 0.3 );\n > r = rand( 0.59 );\n\n // Provide `p`:\n > rand = base.random.geometric.factory( 0.3 );\n > r = rand();\n > r = rand();\n\n\nbase.random.geometric.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.geometric.NAME\n 'geometric'\n\n\nbase.random.geometric.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.geometric.PRNG;\n\n\nbase.random.geometric.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.geometric.seed;\n\n", "base.random.gumbel": "\nbase.random.gumbel( μ, β )\n Returns a pseudorandom number drawn from a Gumbel distribution.\n\n If `μ` or `β` is `NaN` or `β <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n β: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.gumbel( 2.0, 5.0 );\n\n\nbase.random.gumbel.factory( [μ, β, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Gumbel distribution.\n\n If provided `μ` and `β`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `β`, the returned PRNG requires that both `μ` and\n `β` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Mean.\n\n β: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.gumbel.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `β`:\n > rand = base.random.gumbel.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.gumbel.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.gumbel.NAME\n 'gumbel'\n\n\nbase.random.gumbel.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.gumbel.PRNG;\n\n\nbase.random.gumbel.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.gumbel.seed;\n\n", "base.random.hypergeometric": "\nbase.random.hypergeometric( N, K, n )\n Returns a pseudorandom number drawn from a hypergeometric distribution.\n\n `N`, `K`, and `n` must all be nonnegative integers; otherwise, the function\n returns `NaN`.\n\n If `n > N` or `K > N`, the function returns `NaN`.\n\n Parameters\n ----------\n N: integer\n Population size.\n\n K: integer\n Subpopulation size.\n\n n: integer\n Number of draws.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.hypergeometric( 20, 10, 7 );\n\n\nbase.random.hypergeometric.factory( [N, K, n, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a hypergeometric distribution.\n\n If provided `N`, `K`, and `n`, the returned PRNG returns random variates\n drawn from the specified distribution.\n\n If not provided `N`, `K`, and `n`, the returned PRNG requires that `N`, `K`,\n and `n` be provided at each invocation.\n\n Parameters\n ----------\n N: integer (optional)\n Population size.\n\n K: integer (optional)\n Subpopulation size.\n\n n: integer (optional)\n Number of draws.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.hypergeometric.factory();\n > var r = rand( 20, 10, 15 );\n > r = rand( 20, 10, 7 );\n\n // Provide `N`, `K`, and `n`:\n > rand = base.random.hypergeometric.factory( 20, 10, 15 );\n > r = rand();\n > r = rand();\n\n\nbase.random.hypergeometric.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.hypergeometric.NAME\n 'hypergeometric'\n\n\nbase.random.hypergeometric.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.hypergeometric.PRNG;\n\n\nbase.random.hypergeometric.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.hypergeometric.seed;\n\n", - "base.random.improvedZiggurat": "\nbase.random.improvedZiggurat()\n Returns a pseudorandom number drawn from a standard normal distribution.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.improvedZiggurat();\n\n\nbase.random.improvedZiggurat.factory( [options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a standard normal distribution.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.prng: Function (optional)\n Pseudorandom number generator (PRNG) for generating uniformly\n distributed pseudorandom numbers on the interval `[0,1)`. If provided,\n the `state` and `seed` options are ignored.\n\n options.seed: integer|ArrayLikeObject (optional)\n Pseudorandom number generator seed. The seed may be either a positive\n unsigned 32-bit integer or, for arbitrary length seeds, an array-like\n object containing unsigned 32-bit integers.\n\n options.state: Uint32Array (optional)\n Pseudorandom number generator state. If provided, the `seed` option is\n ignored.\n\n options.copy: boolean (optional)\n Boolean indicating whether to copy a provided pseudorandom number\n generator state. Setting this option to `false` allows sharing state\n between two or more pseudorandom number generators. Setting this option\n to `true` ensures that a returned generator has exclusive control over\n its internal state. Default: true.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.improvedZiggurat.factory();\n > r = rand();\n > r = rand();\n\n\nbase.random.improvedZiggurat.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.improvedZiggurat.NAME\n 'improved-ziggurat'\n\n\nbase.random.improvedZiggurat.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.improvedZiggurat.PRNG;\n\n\nbase.random.improvedZiggurat.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.improvedZiggurat.seed;\n\n\nbase.random.improvedZiggurat.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.improvedZiggurat()\n \n > r = base.random.improvedZiggurat()\n \n > r = base.random.improvedZiggurat()\n \n\n // Get a copy of the current state:\n > var state = base.random.improvedZiggurat.state\n \n\n > r = base.random.improvedZiggurat()\n \n > r = base.random.improvedZiggurat()\n \n\n // Set the state:\n > base.random.improvedZiggurat.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.improvedZiggurat()\n \n > r = base.random.improvedZiggurat()\n \n\n\nbase.random.improvedZiggurat.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.improvedZiggurat.stateLength;\n\n\nbase.random.improvedZiggurat.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.improvedZiggurat.byteLength;\n\n", + "base.random.improvedZiggurat": "\nbase.random.improvedZiggurat()\n Returns a pseudorandom number drawn from a standard normal distribution.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.improvedZiggurat();\n\n\nbase.random.improvedZiggurat.factory( [options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a standard normal distribution.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.prng: Function (optional)\n Pseudorandom number generator (PRNG) for generating uniformly\n distributed pseudorandom numbers on the interval `[0,1)`. If provided,\n the `state` and `seed` options are ignored. In order to seed the\n returned pseudorandom number generator, one must seed the provided\n `prng` (assuming the provided `prng` is seedable).\n\n options.seed: integer|ArrayLikeObject (optional)\n Pseudorandom number generator seed. The seed may be either a positive\n unsigned 32-bit integer or, for arbitrary length seeds, an array-like\n object containing unsigned 32-bit integers.\n\n options.state: Uint32Array (optional)\n Pseudorandom number generator state. If provided, the `seed` option is\n ignored.\n\n options.copy: boolean (optional)\n Boolean indicating whether to copy a provided pseudorandom number\n generator state. Setting this option to `false` allows sharing state\n between two or more pseudorandom number generators. Setting this option\n to `true` ensures that a returned generator has exclusive control over\n its internal state. Default: true.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.improvedZiggurat.factory();\n > r = rand();\n > r = rand();\n\n\nbase.random.improvedZiggurat.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.improvedZiggurat.NAME\n 'improved-ziggurat'\n\n\nbase.random.improvedZiggurat.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.improvedZiggurat.PRNG;\n\n\nbase.random.improvedZiggurat.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.improvedZiggurat.seed;\n\n\nbase.random.improvedZiggurat.seedLength\n Length of generator seed.\n\n Examples\n --------\n > var len = base.random.improvedZiggurat.seedLength;\n\n\nbase.random.improvedZiggurat.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.improvedZiggurat()\n \n > r = base.random.improvedZiggurat()\n \n > r = base.random.improvedZiggurat()\n \n\n // Get a copy of the current state:\n > var state = base.random.improvedZiggurat.state\n \n\n > r = base.random.improvedZiggurat()\n \n > r = base.random.improvedZiggurat()\n \n\n // Set the state:\n > base.random.improvedZiggurat.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.improvedZiggurat()\n \n > r = base.random.improvedZiggurat()\n \n\n\nbase.random.improvedZiggurat.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.improvedZiggurat.stateLength;\n\n\nbase.random.improvedZiggurat.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.improvedZiggurat.byteLength;\n\n", "base.random.invgamma": "\nbase.random.invgamma( α, β )\n Returns a pseudorandom number drawn from an inverse gamma distribution.\n\n If `α <= 0` or `β <= 0`, the function returns `NaN`.\n\n If `α` or `β` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n α: number\n Shape parameter.\n\n β: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.invgamma( 2.0, 5.0 );\n\n\nbase.random.invgamma.factory( [α, β, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from an inverse gamma distribution.\n\n If provided `α` and `β`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `α` and `β`, the returned PRNG requires that both `α` and\n `β` be provided at each invocation.\n\n Parameters\n ----------\n α: number (optional)\n Shape parameter.\n\n β: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.invgamma.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 3.14, 2.25 );\n\n // Provide `α` and `β`:\n > rand = base.random.invgamma.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.invgamma.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.invgamma.NAME\n 'invgamma'\n\n\nbase.random.invgamma.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.invgamma.PRNG;\n\n\nbase.random.invgamma.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.invgamma.seed;\n\n", "base.random.kumaraswamy": "\nbase.random.kumaraswamy( a, b )\n Returns a pseudorandom number drawn from Kumaraswamy's double bounded\n distribution.\n\n If `a <= 0` or `b <= 0`, the function returns `NaN`.\n\n If `a` or `b` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n a: number\n First shape parameter.\n\n b: number\n Second shape parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.kumaraswamy( 2.0, 5.0 );\n\n\nbase.random.kumaraswamy.factory( [a, b, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from Kumaraswamy's double bounded distribution.\n\n If provided `a` and `b`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `a` and `b`, the returned PRNG requires that both `a` and\n `b` be provided at each invocation.\n\n Parameters\n ----------\n a: number (optional)\n First shape parameter.\n\n b: number (optional)\n Second shape parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.kumaraswamy.factory();\n > var r = rand( 1.5, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `a` and `b`:\n > rand = base.random.kumaraswamy.factory( 1.5, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.kumaraswamy.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.kumaraswamy.NAME\n 'kumaraswamy'\n\n\nbase.random.kumaraswamy.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.kumaraswamy.PRNG;\n\n\nbase.random.kumaraswamy.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.kumaraswamy.seed;\n\n", "base.random.laplace": "\nbase.random.laplace( μ, b )\n Returns a pseudorandom number drawn from a Laplace distribution.\n\n If `μ` or `b` is `NaN` or `b <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n b: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.laplace( 2.0, 5.0 );\n\n\nbase.random.laplace.factory( [μ, b, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Laplace distribution.\n\n If provided `μ` and `b`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `b`, the returned PRNG requires that both `μ` and\n `b` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Mean.\n\n b: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.laplace.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `b`:\n > rand = base.random.laplace.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.laplace.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.laplace.NAME\n 'laplace'\n\n\nbase.random.laplace.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.laplace.PRNG;\n\n\nbase.random.laplace.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.laplace.seed;\n\n", "base.random.levy": "\nbase.random.levy( μ, c )\n Returns a pseudorandom number drawn from a Lévy distribution.\n\n If `μ` or `c` is `NaN` or `c <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n c: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.levy( 2.0, 5.0 );\n\n\nbase.random.levy.factory( [μ, c, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a Lévy distribution.\n\n If provided `μ` and `c`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `c`, the returned PRNG requires that both `μ` and\n `c` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Mean.\n\n c: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.levy.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `b`:\n > rand = base.random.levy.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.levy.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.levy.NAME\n 'levy'\n\n\nbase.random.levy.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.levy.PRNG;\n\n\nbase.random.levy.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.levy.seed;\n\n", "base.random.logistic": "\nbase.random.logistic( μ, s )\n Returns a pseudorandom number drawn from a logistic distribution.\n\n If `μ` or `s` is `NaN` or `s <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n s: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.logistic( 2.0, 5.0 );\n\n\nbase.random.logistic.factory( [μ, s, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a logistic distribution.\n\n If provided `μ` and `s`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `s`, the returned PRNG requires that both `μ` and\n `s` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Mean.\n\n s: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.logistic.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `s`:\n > rand = base.random.logistic.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.logistic.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.logistic.NAME\n 'logistic'\n\n\nbase.random.logistic.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.logistic.PRNG;\n\n\nbase.random.logistic.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.logistic.seed;\n\n", "base.random.lognormal": "\nbase.random.lognormal( μ, σ )\n Returns a pseudorandom number drawn from a lognormal distribution.\n\n If `μ` or `σ` is `NaN` or `σ <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Location parameter.\n\n σ: number\n Scale parameter.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.lognormal( 2.0, 5.0 );\n\n\nbase.random.lognormal.factory( [μ, σ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a lognormal distribution.\n\n If provided `μ` and `σ`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `σ`, the returned PRNG requires that both `μ` and\n `σ` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Location parameter.\n\n σ: number (optional)\n Scale parameter.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.lognormal.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `σ`:\n > rand = base.random.lognormal.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.lognormal.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.lognormal.NAME\n 'lognormal'\n\n\nbase.random.lognormal.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.lognormal.PRNG;\n\n\nbase.random.lognormal.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.lognormal.seed;\n\n", - "base.random.minstd": "\nbase.random.minstd()\n Returns a pseudorandom integer on the interval `[1, 2147483646]`.\n\n This pseudorandom number generator (PRNG) is a linear congruential\n pseudorandom number generator (LCG) based on Park and Miller.\n\n The generator has a period of approximately `2.1e9`.\n\n An LCG is fast and uses little memory. On the other hand, because the\n generator is a simple LCG, the generator has recognized shortcomings. By\n today's PRNG standards, the generator's period is relatively short. More\n importantly, the \"randomness quality\" of the generator's output is lacking.\n These defects make the generator unsuitable, for example, in Monte Carlo\n simulations and in cryptographic applications.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.minstd();\n\n\nbase.random.minstd.normalized()\n Returns a pseudorandom number on the interval `[0,1)`.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.minstd.normalized();\n\n\nbase.random.minstd.factory( [options] )\n Returns a linear congruential pseudorandom number generator (LCG).\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.seed: integer|ArrayLikeObject (optional)\n Pseudorandom number generator seed. The seed may be either a positive\n signed 32-bit integer on the interval `[1, 2147483646]` or, for\n arbitrary length seeds, an array-like object containing signed 32-bit\n integers.\n\n options.state: Int32Array (optional)\n Pseudorandom number generator state. If provided, the `seed` option is\n ignored.\n\n options.copy: boolean (optional)\n Boolean indicating whether to copy a provided pseudorandom number\n generator state. Setting this option to `false` allows sharing state\n between two or more pseudorandom number generators. Setting this option\n to `true` ensures that a returned generator has exclusive control over\n its internal state. Default: true.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.minstd.factory();\n > r = rand();\n > r = rand();\n\n // Provide a seed:\n > rand = base.random.minstd.factory( { 'seed': 1234 } );\n > r = rand()\n 20739838\n\n\nbase.random.minstd.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.minstd.NAME\n 'minstd'\n\n\nbase.random.minstd.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.minstd.seed;\n\n\nbase.random.minstd.MIN\n Minimum possible value.\n\n Examples\n --------\n > var v = base.random.minstd.MIN\n 1\n\n\nbase.random.minstd.MAX\n Maximum possible value.\n\n Examples\n --------\n > var v = base.random.minstd.MAX\n 2147483646\n\n\nbase.random.minstd.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.minstd()\n \n > r = base.random.minstd()\n \n > r = base.random.minstd()\n \n\n // Get the current state:\n > var state = base.random.minstd.state\n \n\n > r = base.random.minstd()\n \n > r = base.random.minstd()\n \n\n // Set the state:\n > base.random.minstd.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.minstd()\n \n > r = base.random.minstd()\n \n\n\nbase.random.minstd.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.minstd.stateLength;\n\n\nbase.random.minstd.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.minstd.byteLength;\n\n See Also\n --------\n base.random.minstdShuffle, base.random.mt19937, base.random.randi\n", - "base.random.minstdShuffle": "\nbase.random.minstdShuffle()\n Returns a pseudorandom integer on the interval `[1, 2147483646]`.\n\n This pseudorandom number generator (PRNG) is a linear congruential\n pseudorandom number generator (LCG) whose output is shuffled using the Bays-\n Durham algorithm. The shuffle step considerably strengthens the \"randomness\n quality\" of a simple LCG's output.\n\n The generator has a period of approximately `2.1e9`.\n\n An LCG is fast and uses little memory. On the other hand, because the\n generator is a simple LCG, the generator has recognized shortcomings. By\n today's PRNG standards, the generator's period is relatively short. In\n general, this generator is unsuitable for Monte Carlo simulations and\n cryptographic applications.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.minstdShuffle();\n\n\nbase.random.minstdShuffle.normalized()\n Returns a pseudorandom number on the interval `[0,1)`.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.minstdShuffle.normalized();\n\n\nbase.random.minstdShuffle.factory( [options] )\n Returns a linear congruential pseudorandom number generator (LCG) whose\n output is shuffled.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.seed: integer|ArrayLikeObject (optional)\n Pseudorandom number generator seed. The seed may be either a positive\n signed 32-bit integer on the interval `[1, 2147483646]` or, for\n arbitrary length seeds, an array-like object containing signed 32-bit\n integers.\n\n options.state: Int32Array (optional)\n Pseudorandom number generator state. If provided, the `seed` option is\n ignored.\n\n options.copy: boolean (optional)\n Boolean indicating whether to copy a provided pseudorandom number\n generator state. Setting this option to `false` allows sharing state\n between two or more pseudorandom number generators. Setting this option\n to `true` ensures that a returned generator has exclusive control over\n its internal state. Default: true.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.minstdShuffle.factory();\n > r = rand();\n > r = rand();\n\n // Provide a seed:\n > rand = base.random.minstdShuffle.factory( { 'seed': 1234 } );\n > r = rand()\n 1421600654\n\n\nbase.random.minstdShuffle.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.minstdShuffle.NAME\n 'minstd-shuffle'\n\n\nbase.random.minstdShuffle.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.minstdShuffle.seed;\n\n\nbase.random.minstdShuffle.MIN\n Minimum possible value.\n\n Examples\n --------\n > var v = base.random.minstdShuffle.MIN\n 1\n\n\nbase.random.minstdShuffle.MAX\n Maximum possible value.\n\n Examples\n --------\n > var v = base.random.minstdShuffle.MAX\n 2147483646\n\n\nbase.random.minstdShuffle.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.minstdShuffle()\n \n > r = base.random.minstdShuffle()\n \n > r = base.random.minstdShuffle()\n \n\n // Get a copy of the current state:\n > var state = base.random.minstdShuffle.state\n \n\n > r = base.random.minstdShuffle()\n \n > r = base.random.minstdShuffle()\n \n\n // Set the state:\n > base.random.minstdShuffle.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.minstdShuffle()\n \n > r = base.random.minstdShuffle()\n \n\n\nbase.random.minstdShuffle.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.minstdShuffle.stateLength;\n\n\nbase.random.minstdShuffle.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.minstdShuffle.byteLength;\n\n See Also\n --------\n base.random.minstd, base.random.mt19937, base.random.randi\n", + "base.random.minstd": "\nbase.random.minstd()\n Returns a pseudorandom integer on the interval `[1, 2147483646]`.\n\n This pseudorandom number generator (PRNG) is a linear congruential\n pseudorandom number generator (LCG) based on Park and Miller.\n\n The generator has a period of approximately `2.1e9`.\n\n An LCG is fast and uses little memory. On the other hand, because the\n generator is a simple LCG, the generator has recognized shortcomings. By\n today's PRNG standards, the generator's period is relatively short. More\n importantly, the \"randomness quality\" of the generator's output is lacking.\n These defects make the generator unsuitable, for example, in Monte Carlo\n simulations and in cryptographic applications.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.minstd();\n\n\nbase.random.minstd.normalized()\n Returns a pseudorandom number on the interval `[0,1)`.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.minstd.normalized();\n\n\nbase.random.minstd.factory( [options] )\n Returns a linear congruential pseudorandom number generator (LCG).\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.seed: integer|ArrayLikeObject (optional)\n Pseudorandom number generator seed. The seed may be either a positive\n signed 32-bit integer on the interval `[1, 2147483646]` or, for\n arbitrary length seeds, an array-like object containing signed 32-bit\n integers.\n\n options.state: Int32Array (optional)\n Pseudorandom number generator state. If provided, the `seed` option is\n ignored.\n\n options.copy: boolean (optional)\n Boolean indicating whether to copy a provided pseudorandom number\n generator state. Setting this option to `false` allows sharing state\n between two or more pseudorandom number generators. Setting this option\n to `true` ensures that a returned generator has exclusive control over\n its internal state. Default: true.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.minstd.factory();\n > r = rand();\n > r = rand();\n\n // Provide a seed:\n > rand = base.random.minstd.factory( { 'seed': 1234 } );\n > r = rand()\n 20739838\n\n\nbase.random.minstd.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.minstd.NAME\n 'minstd'\n\n\nbase.random.minstd.MIN\n Minimum possible value.\n\n Examples\n --------\n > var v = base.random.minstd.MIN\n 1\n\n\nbase.random.minstd.MAX\n Maximum possible value.\n\n Examples\n --------\n > var v = base.random.minstd.MAX\n 2147483646\n\n\nbase.random.minstd.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.minstd.seed;\n\n\nbase.random.minstd.seedLength\n Length of generator seed.\n\n Examples\n --------\n > var len = base.random.minstd.seedLength;\n\n\nbase.random.minstd.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.minstd()\n \n > r = base.random.minstd()\n \n > r = base.random.minstd()\n \n\n // Get the current state:\n > var state = base.random.minstd.state\n \n\n > r = base.random.minstd()\n \n > r = base.random.minstd()\n \n\n // Set the state:\n > base.random.minstd.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.minstd()\n \n > r = base.random.minstd()\n \n\n\nbase.random.minstd.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.minstd.stateLength;\n\n\nbase.random.minstd.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.minstd.byteLength;\n\n See Also\n --------\n base.random.minstdShuffle, base.random.mt19937, base.random.randi\n", + "base.random.minstdShuffle": "\nbase.random.minstdShuffle()\n Returns a pseudorandom integer on the interval `[1, 2147483646]`.\n\n This pseudorandom number generator (PRNG) is a linear congruential\n pseudorandom number generator (LCG) whose output is shuffled using the Bays-\n Durham algorithm. The shuffle step considerably strengthens the \"randomness\n quality\" of a simple LCG's output.\n\n The generator has a period of approximately `2.1e9`.\n\n An LCG is fast and uses little memory. On the other hand, because the\n generator is a simple LCG, the generator has recognized shortcomings. By\n today's PRNG standards, the generator's period is relatively short. In\n general, this generator is unsuitable for Monte Carlo simulations and\n cryptographic applications.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.minstdShuffle();\n\n\nbase.random.minstdShuffle.normalized()\n Returns a pseudorandom number on the interval `[0,1)`.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.minstdShuffle.normalized();\n\n\nbase.random.minstdShuffle.factory( [options] )\n Returns a linear congruential pseudorandom number generator (LCG) whose\n output is shuffled.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.seed: integer|ArrayLikeObject (optional)\n Pseudorandom number generator seed. The seed may be either a positive\n signed 32-bit integer on the interval `[1, 2147483646]` or, for\n arbitrary length seeds, an array-like object containing signed 32-bit\n integers.\n\n options.state: Int32Array (optional)\n Pseudorandom number generator state. If provided, the `seed` option is\n ignored.\n\n options.copy: boolean (optional)\n Boolean indicating whether to copy a provided pseudorandom number\n generator state. Setting this option to `false` allows sharing state\n between two or more pseudorandom number generators. Setting this option\n to `true` ensures that a returned generator has exclusive control over\n its internal state. Default: true.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.minstdShuffle.factory();\n > r = rand();\n > r = rand();\n\n // Provide a seed:\n > rand = base.random.minstdShuffle.factory( { 'seed': 1234 } );\n > r = rand()\n 1421600654\n\n\nbase.random.minstdShuffle.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.minstdShuffle.NAME\n 'minstd-shuffle'\n\n\nbase.random.minstdShuffle.MIN\n Minimum possible value.\n\n Examples\n --------\n > var v = base.random.minstdShuffle.MIN\n 1\n\n\nbase.random.minstdShuffle.MAX\n Maximum possible value.\n\n Examples\n --------\n > var v = base.random.minstdShuffle.MAX\n 2147483646\n\n\nbase.random.minstdShuffle.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.minstdShuffle.seed;\n\n\nbase.random.minstdShuffle.seedLength\n Length of generator seed.\n\n Examples\n --------\n > var len = base.random.minstdShuffle.seedLength;\n\n\nbase.random.minstdShuffle.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.minstdShuffle()\n \n > r = base.random.minstdShuffle()\n \n > r = base.random.minstdShuffle()\n \n\n // Get a copy of the current state:\n > var state = base.random.minstdShuffle.state\n \n\n > r = base.random.minstdShuffle()\n \n > r = base.random.minstdShuffle()\n \n\n // Set the state:\n > base.random.minstdShuffle.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.minstdShuffle()\n \n > r = base.random.minstdShuffle()\n \n\n\nbase.random.minstdShuffle.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.minstdShuffle.stateLength;\n\n\nbase.random.minstdShuffle.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.minstdShuffle.byteLength;\n\n See Also\n --------\n base.random.minstd, base.random.mt19937, base.random.randi\n", "base.random.mt19937": "\nbase.random.mt19937()\n Returns a pseudorandom integer on the interval `[1, 4294967295]`.\n\n This pseudorandom number generator (PRNG) is a 32-bit Mersenne Twister\n pseudorandom number generator.\n\n The PRNG is *not* a cryptographically secure PRNG.\n\n The PRNG has a period of 2^19937 - 1.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.mt19937();\n\n\nbase.random.mt19937.normalized()\n Returns a pseudorandom number on the interval `[0,1)` with 53-bit precision.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.mt19937.normalized();\n\n\nbase.random.mt19937.factory( [options] )\n Returns a 32-bit Mersenne Twister pseudorandom number generator.\n\n Parameters\n ----------\n options: Object (optional)\n Options.\n\n options.seed: integer|ArrayLikeObject (optional)\n Pseudorandom number generator seed. The seed may be either a positive\n unsigned 32-bit integer or, for arbitrary length seeds, an array-like\n object containing unsigned 32-bit integers.\n\n options.state: Uint32Array (optional)\n Pseudorandom number generator state. If provided, the `seed` option is\n ignored.\n\n options.copy: boolean (optional)\n Boolean indicating whether to copy a provided pseudorandom number\n generator state. Setting this option to `false` allows sharing state\n between two or more pseudorandom number generators. Setting this option\n to `true` ensures that a returned generator has exclusive control over\n its internal state. Default: true.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.mt19937.factory();\n > r = rand();\n > r = rand();\n\n // Provide a seed:\n > rand = base.random.mt19937.factory( { 'seed': 1234 } );\n > r = rand()\n 822569775\n\n\nbase.random.mt19937.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.mt19937.NAME\n 'mt19937'\n\n\nbase.random.mt19937.MIN\n Minimum possible value.\n\n Examples\n --------\n > var v = base.random.mt19937.MIN\n 1\n\n\nbase.random.mt19937.MAX\n Maximum possible value.\n\n Examples\n --------\n > var v = base.random.mt19937.MAX\n 4294967295\n\n\nbase.random.mt19937.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.mt19937.seed;\n\n\nbase.random.mt19937.seedLength\n Length of generator seed.\n\n Examples\n --------\n > var len = base.random.mt19937.seedLength;\n\n\nbase.random.mt19937.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.mt19937()\n \n > r = base.random.mt19937()\n \n > r = base.random.mt19937()\n \n\n // Get a copy of the current state:\n > var state = base.random.mt19937.state\n \n\n > r = base.random.mt19937()\n \n > r = base.random.mt19937()\n \n\n // Set the state:\n > base.random.mt19937.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.mt19937()\n \n > r = base.random.mt19937()\n \n\n\nbase.random.mt19937.stateLength\n Length of generator state.\n\n Examples\n --------\n > var len = base.random.mt19937.stateLength;\n\n\nbase.random.mt19937.byteLength\n Size (in bytes) of generator state.\n\n Examples\n --------\n > var sz = base.random.mt19937.byteLength;\n\n See Also\n --------\n base.random.minstd, base.random.randi\n", "base.random.negativeBinomial": "\nbase.random.negativeBinomial( r, p )\n Returns a pseudorandom number drawn from a negative binomial distribution.\n\n If `p` is not in the interval `(0,1)`, the function returns `NaN`.\n\n If `r` or `p` is `NaN`, the function returns `NaN`.\n\n Parameters\n ----------\n r: number\n Number of successes until experiment is stopped.\n\n p: number\n Success probability.\n\n Returns\n -------\n r: integer\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.negativeBinomial( 20, 0.8 );\n\n\nbase.random.negativeBinomial.factory( [r, p, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a negative binomial distribution.\n\n If provided `r` and `p`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `r` and `p`, the returned PRNG requires that both `r` and\n `p` be provided at each invocation.\n\n Parameters\n ----------\n r: number (optional)\n Number of successes until experiment is stopped.\n\n p: number (optional)\n Success probability.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.negativeBinomial.factory();\n > var r = rand( 20, 0.3 );\n > r = rand( 10, 0.77 );\n\n // Provide `r` and `p`:\n > rand = base.random.negativeBinomial.factory( 10, 0.8 );\n > r = rand();\n > r = rand();\n\n\nbase.random.negativeBinomial.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.negativeBinomial.NAME\n 'negative-binomial'\n\n\nbase.random.negativeBinomial.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.negativeBinomial.PRNG;\n\n\nbase.random.negativeBinomial.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.negativeBinomial.seed;\n\n", "base.random.normal": "\nbase.random.normal( μ, σ )\n Returns a pseudorandom number drawn from a normal distribution.\n\n If `μ` or `σ` is `NaN` or `σ <= 0`, the function returns `NaN`.\n\n Parameters\n ----------\n μ: number\n Mean.\n\n σ: number\n Standard deviation.\n\n Returns\n -------\n r: number\n Pseudorandom number.\n\n Examples\n --------\n > var r = base.random.normal( 2.0, 5.0 );\n\n\nbase.random.normal.factory( [μ, σ, ][options] )\n Returns a pseudorandom number generator (PRNG) for generating pseudorandom\n numbers drawn from a normal distribution.\n\n If provided `μ` and `σ`, the returned PRNG returns random variates drawn\n from the specified distribution.\n\n If not provided `μ` and `σ`, the returned PRNG requires that both `μ` and\n `σ` be provided at each invocation.\n\n Parameters\n ----------\n μ: number (optional)\n Mean.\n\n σ: number (optional)\n Standard deviation.\n\n options: Object (optional)\n Options.\n\n options.seed: any (optional)\n Pseudorandom number generator seed.\n\n Returns\n -------\n rand: Function\n Pseudorandom number generator (PRNG).\n\n Examples\n --------\n // Basic usage:\n > var rand = base.random.normal.factory();\n > var r = rand( 0.1, 1.5 );\n > r = rand( 2.0, 3.14 );\n\n // Provide `μ` and `σ`:\n > rand = base.random.normal.factory( 0.1, 1.5 );\n > r = rand();\n > r = rand();\n\n\nbase.random.normal.NAME\n Generator name.\n\n Examples\n --------\n > var str = base.random.normal.NAME\n 'normal'\n\n\nbase.random.normal.PRNG\n Underlying pseudorandom number generator.\n\n Examples\n --------\n > var prng = base.random.normal.PRNG;\n\n\nbase.random.normal.seed\n Pseudorandom number generator seed.\n\n Examples\n --------\n > var seed = base.random.normal.seed;\n\n\nbase.random.normal.state\n Generator state.\n\n Examples\n --------\n > var r = base.random.normal( 2.0, 5.0 )\n \n > r = base.random.normal( 2.0, 5.0 )\n \n > r = base.random.normal( 2.0, 5.0 )\n \n\n // Get a copy of the current state:\n > var state = base.random.normal.state\n \n\n > r = base.random.normal( 2.0, 5.0 )\n \n > r = base.random.normal( 2.0, 5.0 )\n \n\n // Set the state:\n > base.random.normal.state = state;\n\n // Replay the last two pseudorandom numbers:\n > r = base.random.normal( 2.0, 5.0 )\n \n > r = base.random.normal( 2.0, 5.0 )\n \n\n\nbase.random.normal.byteLength\n Size of generator state.\n\n Examples\n --------\n > var sz = base.random.normal.byteLength;\n\n", From d54e2a7420ab030dfd97449261926b3018c5fc4c Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 17:14:25 -0700 Subject: [PATCH 0745/1062] Add `distr` to list of requirements --- etc/r/requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/r/requirements.txt b/etc/r/requirements.txt index 3f1d0f2f13ac..1cbc269e46f9 100644 --- a/etc/r/requirements.txt +++ b/etc/r/requirements.txt @@ -2,3 +2,4 @@ lintr microbenchmark jsonlite VGAM +distr From 5e24a0102ceb8a994d688e29c81dba9d5b72cd72 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 17:23:50 -0700 Subject: [PATCH 0746/1062] Document options and property --- .../@stdlib/random/base/arcsine/docs/repl.txt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt b/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt index bb6a5a3df881..78a13d253cab 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/arcsine/docs/repl.txt @@ -46,8 +46,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -96,6 +109,14 @@ > var seed = {{alias}}.seed; +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. From 2481539c3661fc5f37d666d969b0381609ec9bf4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 17:31:14 -0700 Subject: [PATCH 0747/1062] Document options and update documentation --- .../@stdlib/random/base/arcsine/README.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/arcsine/README.md b/lib/node_modules/@stdlib/random/base/arcsine/README.md index cc6fbec47124..f9d8fa4d6f38 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/README.md +++ b/lib/node_modules/@stdlib/random/base/arcsine/README.md @@ -91,6 +91,8 @@ r = rand( -2.0, 2.0 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -113,6 +115,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = arcsine(); +} + +// Create a new PRNG initialized to the current state of `arcsine`: +rand = arcsine.factory({ + 'state': arcsine.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand() === arcsine() ); +// returns true +``` + #### arcsine.NAME The generator name. @@ -154,6 +179,15 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### arcsine.seedLength + +Length of generator seed. + +```javascript +var len = arcsine.seedLength; +// returns +``` + #### arcsine.state Writable property for getting and setting the generator state. @@ -212,6 +246,17 @@ var sz = arcsine.byteLength; +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -256,6 +301,8 @@ for ( i = 0; i < 100; i++ ) { [arcsine]: https://en.wikipedia.org/wiki/Arcsine_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From c15e539a6c9ff66efb29a072e354dec496a4f0f8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 17:57:12 -0700 Subject: [PATCH 0748/1062] Refactor to support shared state --- .../random/base/arcsine/lib/factory.js | 64 +++++++++++++++---- 1 file changed, 53 insertions(+), 11 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js b/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js index b2903e486315..385fea946b92 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js @@ -20,8 +20,9 @@ // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -37,12 +38,15 @@ var arcsine0 = require( './arcsine.js' ); * @param {number} [a] - minimum support * @param {number} [b] - maximum support * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `a` must be a number * @throws {TypeError} `b` must be a number * @throws {RangeError} `a` must be less than `b` * @throws {TypeError} options must be an object * @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -98,19 +102,55 @@ function factory() { prng = arcsine1; } setReadOnly( prng, 'NAME', 'arcsine' ); - setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - setReadOnly( prng, 'stateLength', rand.stateLength ); - setReadOnly( prng, 'byteLength', rand.byteLength ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + /** * Returns the current pseudorandom number generator state. * @@ -126,6 +166,8 @@ function factory() { * * @private * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state */ function setState( s ) { rand.state = s; From 3cdcb6fc721701b006d604b1db6972f4d519dba9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 18:39:36 -0700 Subject: [PATCH 0749/1062] Update tests --- .../@stdlib/random/base/arcsine/test/test.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/arcsine/test/test.js b/lib/node_modules/@stdlib/random/base/arcsine/test/test.js index a986f69c6676..8c07888ac9a4 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/test/test.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/test/test.js @@ -34,37 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof arcsine.factory, 'function', 'has `factory` method' ); + t.equal( typeof arcsine.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( arcsine.NAME, 'arcsine', 'has `NAME` property' ); + t.equal( arcsine.NAME, 'arcsine', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof arcsine.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof arcsine.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( arcsine.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( arcsine.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof arcsine.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( arcsine.state ), true, 'has `state` property' ); + t.equal( isUint32Array( arcsine.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof arcsine.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof arcsine.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof arcsine.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof arcsine.byteLength, 'number', 'has property' ); t.end(); }); From dc5bb62fa5a567e35a2eac947a81e8f49306eb51 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 18:57:31 -0700 Subject: [PATCH 0750/1062] Update tests --- .../random/base/arcsine/test/test.factory.js | 474 ++++++++++++++---- 1 file changed, 386 insertions(+), 88 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js b/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js index d21e9fbd6cab..6824ce20e372 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/test/test.factory.js @@ -22,10 +22,12 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); +var now = require( '@stdlib/time/now' ); var kstest = require( '@stdlib/stats/kstest' ); -var round = require( '@stdlib/math/base/special/round' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,93 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var arcsine; - var r; - var i; - - // When binding distribution parameters... - arcsine = factory( -10.0, 10.0 ); - for ( i = 0; i < 100; i++ ) { - r = arcsine(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - arcsine = factory(); - for ( i = 0; i < 100; i++ ) { - r = arcsine( -10.0, 10.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var arcsine1; - var arcsine2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - arcsine1 = factory( 0.0, 4.0, { - 'seed': seed - }); - arcsine2 = factory( 0.0, 4.0, { - 'seed': seed - }); - - t.notEqual( arcsine1, arcsine2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = arcsine1(); - r2 = arcsine2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var arcsine = factory(); - t.equal( arcsine.NAME, 'arcsine', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var arcsine = factory(); - t.equal( typeof arcsine.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var arcsine = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( arcsine.seed ), true, 'has `seed` property' ); - t.equal( arcsine.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state', function test( t ) { - var arcsine = factory(); - t.equal( isUint32Array( arcsine.state ), true, 'has `state` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state length', function test( t ) { - var arcsine = factory(); - t.equal( typeof arcsine.stateLength, 'number', 'has `stateLength` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state size', function test( t ) { - var arcsine = factory(); - t.equal( typeof arcsine.byteLength, 'number', 'has `byteLength` property' ); - t.end(); -}); - tape( 'the function throws an error if minimum support `a` is not a number primitive', function test( t ) { var values; var i; @@ -265,6 +180,286 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var arcsine; + var r; + var i; + + // When binding distribution parameters... + arcsine = factory( -10.0, 10.0 ); + for ( i = 0; i < 100; i++ ) { + r = arcsine(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + arcsine = factory(); + for ( i = 0; i < 100; i++ ) { + r = arcsine( -10.0, 10.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var arcsine1; + var arcsine2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + arcsine1 = factory( 0.0, 4.0, { + 'seed': seed + }); + arcsine2 = factory( 0.0, 4.0, { + 'seed': seed + }); + + t.notEqual( arcsine1, arcsine2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = arcsine1(); + r2 = arcsine2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var arcsine1; + var arcsine2; + var seed; + var r1; + var r2; + var i; + + seed = [ 1234, 5678 ]; + + arcsine1 = factory( 0.0, 4.0, { + 'seed': seed + }); + arcsine2 = factory( 0.0, 4.0, { + 'seed': seed + }); + + t.notEqual( arcsine1, arcsine2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = arcsine1(); + r2 = arcsine2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var arcsine = factory(); + t.equal( arcsine.NAME, 'arcsine', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var arcsine = factory(); + t.equal( typeof arcsine.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var arcsine = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( arcsine.seed ), true, 'has property' ); + t.equal( arcsine.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var arcsine = factory(); + t.equal( typeof arcsine.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var arcsine = factory(); + t.equal( isUint32Array( arcsine.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var arcsine = factory(); + t.equal( typeof arcsine.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var arcsine = factory(); + t.equal( typeof arcsine.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a function that returns `NaN` if `a` is `NaN`', function test( t ) { var arcsine; var r; @@ -392,6 +587,109 @@ tape( 'the function returns a PRNG for generating random numbers from an arcsine } }); +tape( 'the function supports specifying the generator state', function test( t ) { + var arcsine; + var state; + var arr; + var i; + + arcsine = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + arcsine(); + } + // Capture the current state: + state = arcsine.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( arcsine() ); + } + + // Create another PRNG using the captured state: + arcsine = factory( 2.0, 4.0, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( arcsine(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var arcsine; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + arcsine = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + arcsine(); + } + // Capture the current state: + state = arcsine.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( arcsine() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + tape( 'the returned function supports setting the generator state', function test( t ) { var arcsine; var state; From 9c2947d836e64eea3b6203ef7bcff9430b36334d Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 19:18:33 -0700 Subject: [PATCH 0751/1062] Document options and property --- .../random/base/bernoulli/docs/repl.txt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt b/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt index 42cfda433d15..4972777dd130 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/bernoulli/docs/repl.txt @@ -37,8 +37,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -83,6 +96,14 @@ > var seed = {{alias}}.seed; +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. From bedc79fe9bf08840e34a625e471495b5eef8fe7f Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 19:20:42 -0700 Subject: [PATCH 0752/1062] Document options and property and add notes --- .../@stdlib/random/base/bernoulli/README.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/README.md b/lib/node_modules/@stdlib/random/base/bernoulli/README.md index c325ae972e86..6e528bf3d6ec 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/README.md +++ b/lib/node_modules/@stdlib/random/base/bernoulli/README.md @@ -94,6 +94,8 @@ r = rand( 0.42 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -116,6 +118,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = bernoulli(); +} + +// Create a new PRNG initialized to the current state of `bernoulli`: +rand = bernoulli.factory({ + 'state': bernoulli.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand() === bernoulli() ); +// returns true +``` + #### bernoulli.NAME The generator name. @@ -157,6 +182,15 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### bernoulli.seedLength + +Length of generator seed. + +```javascript +var len = bernoulli.seedLength; +// returns +``` + #### bernoulli.state Writable property for getting and setting the generator state. @@ -215,6 +249,17 @@ var sz = bernoulli.byteLength; +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -259,6 +304,8 @@ for ( i = 0; i < 100; i++ ) { [bernoulli]: https://en.wikipedia.org/wiki/Bernoulli_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From ae15c7b6a24c50e7147ffa1f64e6bc04f8647c31 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 19:22:50 -0700 Subject: [PATCH 0753/1062] Refactor to support sharing state --- .../random/base/bernoulli/lib/factory.js | 65 +++++++++++++++---- 1 file changed, 54 insertions(+), 11 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js b/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js index 1bd3bdfe59bd..64d4af711f10 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js @@ -20,8 +20,9 @@ // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var isProbability = require( '@stdlib/assert/is-probability' ).isPrimitive; var randu = require( '@stdlib/random/base/mt19937' ).factory; @@ -35,9 +36,13 @@ var isnan = require( '@stdlib/math/base/assert/is-nan' ); * * @param {Probability} [p] - success probability * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `p` must be a probability * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -93,19 +98,55 @@ function factory() { prng = bernoulli1; } setReadOnly( prng, 'NAME', 'bernoulli' ); - setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - setReadOnly( prng, 'stateLength', rand.stateLength ); - setReadOnly( prng, 'byteLength', rand.byteLength ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + /** * Returns the current pseudorandom number generator state. * @@ -121,6 +162,8 @@ function factory() { * * @private * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state */ function setState( s ) { rand.state = s; From 96be94ab35068c6eb86e16ffdac72e7935050b32 Mon Sep 17 00:00:00 2001 From: kgryte Date: Tue, 9 Oct 2018 19:24:14 -0700 Subject: [PATCH 0754/1062] Update tests --- .../random/base/bernoulli/test/test.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js index 916ff633b909..cfef5f97780f 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.js @@ -35,37 +35,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof bernoulli.factory, 'function', 'has `factory` method' ); + t.equal( typeof bernoulli.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( bernoulli.NAME, 'bernoulli', 'has `NAME` property' ); + t.equal( bernoulli.NAME, 'bernoulli', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof bernoulli.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof bernoulli.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( bernoulli.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( bernoulli.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof bernoulli.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( bernoulli.state ), true, 'has `state` property' ); + t.equal( isUint32Array( bernoulli.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof bernoulli.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof bernoulli.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof bernoulli.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof bernoulli.byteLength, 'number', 'has property' ); t.end(); }); From a14fe685a38f3d037dbbffe6978a58293c29992c Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 00:43:36 -0700 Subject: [PATCH 0755/1062] Update tests --- .../base/bernoulli/test/test.factory.js | 465 ++++++++++++++---- 1 file changed, 377 insertions(+), 88 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js index fcc89075f428..0d3321db5464 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/test/test.factory.js @@ -26,6 +26,8 @@ var chi2gof = require( '@stdlib/stats/chi2gof' ); var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,94 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var bernoulli; - var r; - var i; - - // When binding distribution parameters... - bernoulli = factory( 0.05 ); - for ( i = 0; i < 100; i++ ) { - r = bernoulli(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - bernoulli = factory(); - for ( i = 0; i < 100; i++ ) { - r = bernoulli( 0.1 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var bernoulli1; - var bernoulli2; - var seed; - var r1; - var r2; - var i; - - seed = now(); - - bernoulli1 = factory( 0.3, { - 'seed': seed - }); - bernoulli2 = factory( 0.3, { - 'seed': seed - }); - - t.notEqual( bernoulli1, bernoulli2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = bernoulli1(); - r2 = bernoulli2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var bernoulli = factory(); - t.equal( bernoulli.NAME, 'bernoulli', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var bernoulli = factory(); - t.equal( typeof bernoulli.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var bernoulli = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( bernoulli.seed ), true, 'has `seed` property' ); - t.equal( bernoulli.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state', function test( t ) { - var bernoulli = factory(); - t.equal( isUint32Array( bernoulli.state ), true, 'has `state` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state length', function test( t ) { - var bernoulli = factory(); - t.equal( typeof bernoulli.stateLength, 'number', 'has `stateLength` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state size', function test( t ) { - var bernoulli = factory(); - t.equal( typeof bernoulli.byteLength, 'number', 'has `byteLength` property' ); - t.end(); -}); - tape( 'the function throws an error if provided a probability argument which is not a probability (no options)', function test( t ) { var values; var i; @@ -248,6 +162,281 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var bernoulli; + var r; + var i; + + // When binding distribution parameters... + bernoulli = factory( 0.05 ); + for ( i = 0; i < 100; i++ ) { + r = bernoulli(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + bernoulli = factory(); + for ( i = 0; i < 100; i++ ) { + r = bernoulli( 0.1 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var bernoulli1; + var bernoulli2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + bernoulli1 = factory( 0.3, { + 'seed': seed + }); + bernoulli2 = factory( 0.3, { + 'seed': seed + }); + + t.notEqual( bernoulli1, bernoulli2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = bernoulli1(); + r2 = bernoulli2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var bernoulli1; + var bernoulli2; + var seed; + var r1; + var r2; + var i; + + seed = [ 1234, 5678 ]; + + bernoulli1 = factory( 0.3, { + 'seed': seed + }); + bernoulli2 = factory( 0.3, { + 'seed': seed + }); + + t.notEqual( bernoulli1, bernoulli2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = bernoulli1(); + r2 = bernoulli2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var bernoulli = factory(); + t.equal( bernoulli.NAME, 'bernoulli', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var bernoulli = factory(); + t.equal( typeof bernoulli.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var bernoulli = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( bernoulli.seed ), true, 'has property' ); + t.equal( bernoulli.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var bernoulli = factory(); + t.equal( isUint32Array( bernoulli.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var bernoulli = factory(); + t.equal( typeof bernoulli.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var bernoulli = factory(); + t.equal( typeof bernoulli.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a probability equal to `NaN`', function test( t ) { var bernoulli; var r; @@ -387,3 +576,103 @@ tape( 'the returned function supports setting the generator state', function tes } t.end(); }); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var bernoulli; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + bernoulli = factory( 0.3 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + bernoulli(); + } + // Capture the current state: + state = bernoulli.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( bernoulli() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 0.3, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 0.3, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var bernoulli; + var state; + var arr; + var i; + + bernoulli = factory( 0.3 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + bernoulli(); + } + // Capture the current state: + state = bernoulli.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( bernoulli() ); + } + // Set the state: + bernoulli.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( bernoulli(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 69a022c17a3ed8f3dc7beaa7a4a0e82c4e66a9ab Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 00:47:41 -0700 Subject: [PATCH 0756/1062] Rename file --- lib/node_modules/@stdlib/stats/chi2gof/lib/index.js | 2 +- .../@stdlib/stats/chi2gof/lib/{chi2gof.js => main.js} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename lib/node_modules/@stdlib/stats/chi2gof/lib/{chi2gof.js => main.js} (100%) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/index.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/index.js index 2fe1f5e7f60f..3b86eda56ca5 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/index.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/index.js @@ -45,7 +45,7 @@ // MODULES // -var chi2gof = require( './chi2gof.js' ); +var chi2gof = require( './main.js' ); // EXPORTS // diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/chi2gof.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js similarity index 100% rename from lib/node_modules/@stdlib/stats/chi2gof/lib/chi2gof.js rename to lib/node_modules/@stdlib/stats/chi2gof/lib/main.js From 8100214ffc8d871778972a1beb514ea3b123de99 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 01:02:41 -0700 Subject: [PATCH 0757/1062] Refactor to throw from main export and not sub-function --- .../@stdlib/stats/chi2gof/lib/get_pmf.js | 5 +-- .../@stdlib/stats/chi2gof/lib/main.js | 3 ++ .../stats/chi2gof/test/test.get_pmf.js | 27 +++++-------- .../@stdlib/stats/chi2gof/test/test.js | 39 ++++++++++++++++--- 4 files changed, 48 insertions(+), 26 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/get_pmf.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/get_pmf.js index c3bf0426eb7f..a44346193240 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/get_pmf.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/get_pmf.js @@ -30,13 +30,12 @@ var PMF = require( './pmf.js' ); * * @private * @param {string} name - distribution name -* @throws {Error} unsupported/unrecognized distribution name -* @returns {Function} PMF +* @returns {(Function|Error)} a probability mass function (PMF) or an error */ function getPMF( name ) { var pmf = PMF[ name ]; if ( pmf === void 0 ) { - throw new Error( 'invalid argument. Unsupported/unrecognized distribution name. Value: `' + name + '`.' ); + return new Error( 'invalid argument. Unsupported/unrecognized distribution name. Value: `' + name + '`.' ); } return pmf; } diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 70b17c8665e6..c2efa3e6b22a 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -115,6 +115,9 @@ function chi2gof() { } else if ( isString( arguments[ 1 ] ) ) { pmf = getPMF( arguments[ 1 ] ); + if ( pmf instanceof Error ) { + throw pmf; + } nDistParams = pmf.length - 1; distParams = new Array( nDistParams ); for ( i = 0; i < nDistParams; i++ ) { diff --git a/lib/node_modules/@stdlib/stats/chi2gof/test/test.get_pmf.js b/lib/node_modules/@stdlib/stats/chi2gof/test/test.get_pmf.js index c2d3ae4367dd..4038390fd952 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/test/test.get_pmf.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/test/test.get_pmf.js @@ -50,8 +50,9 @@ tape( 'the function returns the correct PMF if provided a valid input string', f t.end(); }); -tape( 'the function throws an error if provided the name of a continuous distribution', function test( t ) { +tape( 'the function returns an error if provided the name of a continuous distribution', function test( t ) { var values; + var out; var i; values = [ @@ -77,19 +78,15 @@ tape( 'the function throws an error if provided the name of a continuous distrib ]; for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), Error, 'throws an error when provided '+values[i] ); + out = getPMF( values[ i ] ); + t.equal( out instanceof Error, true, 'returns an error when provided '+values[i] ); } t.end(); - - function badValue( value ) { - return function badValue() { - getPMF( value ); - }; - } }); -tape( 'the function throws an error if the provided a name which does not match any distribution', function test( t ) { +tape( 'the function returns an error if the provided a name which does not match any distribution', function test( t ) { var values; + var out; var i; values = [ @@ -97,7 +94,8 @@ tape( 'the function throws an error if the provided a name which does not match '5', 5, true, - undefined, + false, + void 0, null, NaN, [], @@ -106,13 +104,8 @@ tape( 'the function throws an error if the provided a name which does not match ]; for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), Error, 'throws an error when provided '+values[i] ); + out = getPMF( values[ i ] ); + t.equal( out instanceof Error, true, 'returns an error when provided '+values[i] ); } t.end(); - - function badValue( value ) { - return function badValue() { - getPMF( value ); - }; - } }); diff --git a/lib/node_modules/@stdlib/stats/chi2gof/test/test.js b/lib/node_modules/@stdlib/stats/chi2gof/test/test.js index 6a96d30d6af0..3120f5c6e309 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/test/test.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/test/test.js @@ -49,10 +49,11 @@ tape( 'the function throws an error if the `x` argument is not an array of nonne values = [ '5', 5, - [ 1, 2, 3, 'not a numeric array, hehe' ], + [ 1, 2, 3, 'not a numeric array' ], [ 1.2, 0.8, 3, 4 ], true, - undefined, + false, + void 0, null, NaN, function noop() {}, @@ -77,9 +78,10 @@ tape( 'the function throws an error if the `p` argument is not an array of nonne values = [ 5, - [ 0.25, 0.25, 0.25, 'not a numeric array, hehe' ], + [ 0.25, 0.25, 0.25, 'not a numeric array' ], true, - undefined, + false, + void 0, null, NaN, function noop() {}, @@ -142,7 +144,8 @@ tape( 'the function throws an error if the supplied distribution parameter(s) ar '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -168,7 +171,7 @@ tape( 'the function throws an error if provided an invalid option', function tes values = [ 5, 'abc', - undefined, + void 0, null, NaN, [], @@ -189,6 +192,30 @@ tape( 'the function throws an error if provided an invalid option', function tes } }); +tape( 'the function throws an error if provided an invalid distribution name', function test( t ) { + var values; + var i; + + values = [ + 'beep', + 'boop', + 'bop', + 'foo', + 'bar' + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), Error, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + chi2gof( [ 30, 40, 50, 80 ], value ); + }; + } +}); + tape( 'the function throws an error if provided a significance level `alpha` outside `[0,1]`', function test( t ) { var values; var i; From df38de89454a173b83e00306fd7d7622d2bc08ed Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 01:06:28 -0700 Subject: [PATCH 0758/1062] Rearrange branches to allow "cheaper" checks first --- .../@stdlib/stats/chi2gof/lib/main.js | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index c2efa3e6b22a..32b5c1bd8516 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -106,14 +106,7 @@ function chi2gof() { if ( n === 0.0 ) { throw new Error( 'invalid argument. At least one element of `x` must be positive. Value: `' + x + '`.' ); } - if ( isUnityProbabilityArray( arguments[ 1 ] ) ) { - p = arguments[ 1 ]; - if ( len !== p.length ) { - throw new Error( 'invalid arguments. First and second parameter must be arrays of the same length.' ); - } - expected = mult( new Array( len ), p, n ); - } - else if ( isString( arguments[ 1 ] ) ) { + if ( isString( arguments[ 1 ] ) ) { pmf = getPMF( arguments[ 1 ] ); if ( pmf instanceof Error ) { throw pmf; @@ -147,15 +140,19 @@ function chi2gof() { x.push( 0 ); len += 1; } - } - else { - if ( !isNonNegativeNumberArray( arguments[ 1 ] ) ) { - throw new TypeError( 'invalid argument. Second argument must be an array of probabilities summing to one, an array of expected values, or the name of a discrete probability distribution. Value: `' + arguments[ 1 ] + '`.' ); + } else if ( isUnityProbabilityArray( arguments[ 1 ] ) ) { + p = arguments[ 1 ]; + if ( len !== p.length ) { + throw new Error( 'invalid arguments. First and second parameter must be arrays of the same length.' ); } + expected = mult( new Array( len ), p, n ); + } else if ( isNonNegativeNumberArray( arguments[ 1 ] ) ) { expected = arguments[ 1 ]; if ( len !== expected.length ) { throw new Error( 'invalid arguments. First and second parameter must be arrays of the same length.' ); } + } else { + throw new TypeError( 'invalid argument. Second argument must be an array of probabilities summing to one, an array of expected values, or the name of a discrete probability distribution. Value: `' + arguments[ 1 ] + '`.' ); } opts = copy( defaults ); if ( arguments.length > 2 + nDistParams ) { From 4cedc12f23291b3a0eddd4984a2469c5a26f1b66 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 01:11:18 -0700 Subject: [PATCH 0759/1062] Dynamically grow arrays and rename variable --- .../@stdlib/stats/chi2gof/lib/main.js | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 32b5c1bd8516..0678d998a024 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -90,12 +90,12 @@ function chi2gof() { var seq; var geq; var out; - var val; var df; - var i; var n; var p; var x; + var v; + var i; x = arguments[ 0 ]; if ( !isNonNegativeIntegerArray( x ) ) { @@ -112,30 +112,30 @@ function chi2gof() { throw pmf; } nDistParams = pmf.length - 1; - distParams = new Array( nDistParams ); + distParams = []; for ( i = 0; i < nDistParams; i++ ) { - val = arguments[ i + 2 ]; - if ( !isNumber( val ) || isnan( val ) ) { - throw new TypeError( 'invalid argument. Distribution parameter must be a number primitive. Value: `' + val + '`.' ); + v = arguments[ i+2 ]; + if ( !isNumber( v ) || isnan( v ) ) { + throw new TypeError( 'invalid argument. Distribution parameter must be a number primitive. Value: `' + v + '`.' ); } - distParams[ i ] = val; + distParams.push( v ); } distArgs = [ null ].concat( distParams ); - expected = new Array( len ); + expected = []; psum = 0.0; for ( i = 0; i < len; i++ ) { distArgs[ 0 ] = i; if ( arguments[ 1 ] === 'discrete-uniform' ) { distArgs[ 0 ] += distParams[ 0 ]; } - val = pmf.apply( null, distArgs ); - psum += val; - expected[ i ] = val * n; + v = pmf.apply( null, distArgs ); + psum += v; + expected.push( v*n ); } if ( psum < 1.0 ) { // Add remaining category for all values greater or equal to `len`: - val = 1.0 - psum; - expected.push( val * n ); + v = 1.0 - psum; + expected.push( v*n ); x = Array.prototype.slice.call( x ); x.push( 0 ); len += 1; @@ -155,14 +155,13 @@ function chi2gof() { throw new TypeError( 'invalid argument. Second argument must be an array of probabilities summing to one, an array of expected values, or the name of a discrete probability distribution. Value: `' + arguments[ 1 ] + '`.' ); } opts = copy( defaults ); - if ( arguments.length > 2 + nDistParams ) { - options = arguments[ 2 + nDistParams ]; + if ( arguments.length > 2+nDistParams ) { + options = arguments[ 2+nDistParams ]; err = validate( opts, options ); if ( err ) { throw err; } } - stat = testStatistic( x, expected ); if ( opts.simulate ) { if ( !p ) { From f502d378e0ea7353c0dcadddab55a97edeca26d7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 01:14:48 -0700 Subject: [PATCH 0760/1062] Use BLAS function and rearrange statements --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 0678d998a024..2cb17d8570af 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -31,6 +31,7 @@ var isString = require( '@stdlib/assert/is-string' ).isPrimitive; var sample = require( '@stdlib/random/sample' ); var isnan = require( '@stdlib/assert/is-nan' ); var copy = require( '@stdlib/utils/copy' ); +var gcopy = require( '@stdlib/blas/base/gcopy' ); var testStatistic = require( './statistic.js' ); var prettyPrint = require( './print.js' ); var defaults = require( './defaults.json' ); @@ -132,12 +133,14 @@ function chi2gof() { psum += v; expected.push( v*n ); } + // Check whether we need to add a remaining category for all values greater or equal to `len`... if ( psum < 1.0 ) { - // Add remaining category for all values greater or equal to `len`: + x = gcopy( len, x, 1, new Array( len ), 1 ); + x.push( 0 ); + v = 1.0 - psum; expected.push( v*n ); - x = Array.prototype.slice.call( x ); - x.push( 0 ); + len += 1; } } else if ( isUnityProbabilityArray( arguments[ 1 ] ) ) { From 2ea7d0c763f251b1904d8a1d10f674da4c4c8dc9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 01:17:35 -0700 Subject: [PATCH 0761/1062] Rename variables --- .../@stdlib/stats/chi2gof/lib/main.js | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 2cb17d8570af..f6ac98654775 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -73,13 +73,13 @@ var validate = require( './validate.js' ); * // returns { 'pValue': ~0.0406, 'statistic': ~9.9901, ... } */ function chi2gof() { - var nDistParams = 0; - var distParams; - var distArgs; var expected; var options; + var nparams; + var params; var sfreq; var sstat; + var args; var draw; var opts; var psum; @@ -107,29 +107,30 @@ function chi2gof() { if ( n === 0.0 ) { throw new Error( 'invalid argument. At least one element of `x` must be positive. Value: `' + x + '`.' ); } + nparams = 0; if ( isString( arguments[ 1 ] ) ) { pmf = getPMF( arguments[ 1 ] ); if ( pmf instanceof Error ) { throw pmf; } - nDistParams = pmf.length - 1; - distParams = []; - for ( i = 0; i < nDistParams; i++ ) { + nparams += pmf.length - 1; + params = []; + for ( i = 0; i < nparams; i++ ) { v = arguments[ i+2 ]; if ( !isNumber( v ) || isnan( v ) ) { throw new TypeError( 'invalid argument. Distribution parameter must be a number primitive. Value: `' + v + '`.' ); } - distParams.push( v ); + params.push( v ); } - distArgs = [ null ].concat( distParams ); + args = [ null ].concat( params ); expected = []; psum = 0.0; for ( i = 0; i < len; i++ ) { - distArgs[ 0 ] = i; + args[ 0 ] = i; if ( arguments[ 1 ] === 'discrete-uniform' ) { - distArgs[ 0 ] += distParams[ 0 ]; + args[ 0 ] += params[ 0 ]; } - v = pmf.apply( null, distArgs ); + v = pmf.apply( null, args ); psum += v; expected.push( v*n ); } @@ -158,8 +159,8 @@ function chi2gof() { throw new TypeError( 'invalid argument. Second argument must be an array of probabilities summing to one, an array of expected values, or the name of a discrete probability distribution. Value: `' + arguments[ 1 ] + '`.' ); } opts = copy( defaults ); - if ( arguments.length > 2+nDistParams ) { - options = arguments[ 2+nDistParams ]; + if ( arguments.length > 2+nparams ) { + options = arguments[ 2+nparams ]; err = validate( opts, options ); if ( err ) { throw err; From ab70f0c59d37a70d4bace97d90216e7a3320b857 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 01:21:01 -0700 Subject: [PATCH 0762/1062] Ensure an unboxed generic array --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index f6ac98654775..91b6697cba86 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -122,7 +122,7 @@ function chi2gof() { } params.push( v ); } - args = [ null ].concat( params ); + args = [ 0 ].concat( params ); expected = []; psum = 0.0; for ( i = 0; i < len; i++ ) { From efb43217fc08901607087c9e6d287fea90afaf97 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 01:22:24 -0700 Subject: [PATCH 0763/1062] Dynamically grow array --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 91b6697cba86..ae5e75d4b6de 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -115,14 +115,15 @@ function chi2gof() { } nparams += pmf.length - 1; params = []; + args = [ 0 ]; for ( i = 0; i < nparams; i++ ) { v = arguments[ i+2 ]; if ( !isNumber( v ) || isnan( v ) ) { throw new TypeError( 'invalid argument. Distribution parameter must be a number primitive. Value: `' + v + '`.' ); } params.push( v ); + args.push( v ); } - args = [ 0 ].concat( params ); expected = []; psum = 0.0; for ( i = 0; i < len; i++ ) { From 9776857f46e6d318121fa54d912a27e6f7a076ba Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 01:26:07 -0700 Subject: [PATCH 0764/1062] Use temporary variables --- .../@stdlib/stats/chi2gof/lib/main.js | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index ae5e75d4b6de..3afff59adf83 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -79,6 +79,7 @@ function chi2gof() { var params; var sfreq; var sstat; + var nargs; var args; var draw; var opts; @@ -91,6 +92,7 @@ function chi2gof() { var seq; var geq; var out; + var arg; var df; var n; var p; @@ -98,6 +100,7 @@ function chi2gof() { var v; var i; + nargs = arguments.length; x = arguments[ 0 ]; if ( !isNonNegativeIntegerArray( x ) ) { throw new TypeError( 'invalid argument. First argument must be an array of nonnegative integers. Value: `' + x + '`.' ); @@ -108,8 +111,9 @@ function chi2gof() { throw new Error( 'invalid argument. At least one element of `x` must be positive. Value: `' + x + '`.' ); } nparams = 0; - if ( isString( arguments[ 1 ] ) ) { - pmf = getPMF( arguments[ 1 ] ); + arg = arguments[ 1 ]; + if ( isString( arg ) ) { + pmf = getPMF( arg ); if ( pmf instanceof Error ) { throw pmf; } @@ -128,7 +132,7 @@ function chi2gof() { psum = 0.0; for ( i = 0; i < len; i++ ) { args[ 0 ] = i; - if ( arguments[ 1 ] === 'discrete-uniform' ) { + if ( arg === 'discrete-uniform' ) { args[ 0 ] += params[ 0 ]; } v = pmf.apply( null, args ); @@ -145,22 +149,22 @@ function chi2gof() { len += 1; } - } else if ( isUnityProbabilityArray( arguments[ 1 ] ) ) { - p = arguments[ 1 ]; + } else if ( isUnityProbabilityArray( arg ) ) { + p = arg; if ( len !== p.length ) { throw new Error( 'invalid arguments. First and second parameter must be arrays of the same length.' ); } expected = mult( new Array( len ), p, n ); - } else if ( isNonNegativeNumberArray( arguments[ 1 ] ) ) { - expected = arguments[ 1 ]; + } else if ( isNonNegativeNumberArray( arg ) ) { + expected = arg; if ( len !== expected.length ) { throw new Error( 'invalid arguments. First and second parameter must be arrays of the same length.' ); } } else { - throw new TypeError( 'invalid argument. Second argument must be an array of probabilities summing to one, an array of expected values, or the name of a discrete probability distribution. Value: `' + arguments[ 1 ] + '`.' ); + throw new TypeError( 'invalid argument. Second argument must be an array of probabilities summing to one, an array of expected values, or the name of a discrete probability distribution. Value: `' + arg + '`.' ); } opts = copy( defaults ); - if ( arguments.length > 2+nparams ) { + if ( nargs > 2+nparams ) { options = arguments[ 2+nparams ]; err = validate( opts, options ); if ( err ) { From d18a08b47890d4989604e25274164af2b0c6166c Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 01:29:50 -0700 Subject: [PATCH 0765/1062] Reuse internal variable --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 3afff59adf83..0263a8a16832 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -81,7 +81,6 @@ function chi2gof() { var sstat; var nargs; var args; - var draw; var opts; var psum; var pval; @@ -181,11 +180,11 @@ function chi2gof() { geq = 1; for ( i = 0; i < opts.iterations; i++ ) { // TODO: use `sample.factory` method once sample pkg is updated. - draw = sample( seq, { + v = sample( seq, { 'size': n, 'probs': p }); - sfreq = tabulate( draw ); + sfreq = tabulate( v ); // Enlarge `sfreq` in case `expected` is longer... while ( sfreq.length < expected.length ) { @@ -197,7 +196,7 @@ function chi2gof() { } } df = null; - pval = geq / (opts.iterations + 1); + pval = geq / ( opts.iterations+1 ); } else { df = len - 1; if ( opts.ddof ) { From ba3715fee848cc3c07906af5cb205a27865f24a1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 01:31:12 -0700 Subject: [PATCH 0766/1062] Avoid unnecessary negation --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 0263a8a16832..21f4c09ef2bb 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -172,7 +172,7 @@ function chi2gof() { } stat = testStatistic( x, expected ); if ( opts.simulate ) { - if ( !p ) { + if ( p === void 0 ) { psum = sum( expected ); p = div( new Array( len ), expected, psum ); } From fbde7225334d01cf6bb5a7ad5b6c7ccbc0c0c817 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 01:33:40 -0700 Subject: [PATCH 0767/1062] Use internal variable rather than prop look-up --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 21f4c09ef2bb..fe635201036b 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -187,7 +187,7 @@ function chi2gof() { sfreq = tabulate( v ); // Enlarge `sfreq` in case `expected` is longer... - while ( sfreq.length < expected.length ) { + while ( sfreq.length < len ) { sfreq.push( 0 ); } sstat = testStatistic( sfreq, expected ); From 967e3ca31e58da7c9712a90ff227a471ed1b814e Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 01:37:55 -0700 Subject: [PATCH 0768/1062] Remove unnecessary variable --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index fe635201036b..6acc0aabd5c3 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -74,7 +74,6 @@ var validate = require( './validate.js' ); */ function chi2gof() { var expected; - var options; var nparams; var params; var sfreq; @@ -164,8 +163,7 @@ function chi2gof() { } opts = copy( defaults ); if ( nargs > 2+nparams ) { - options = arguments[ 2+nparams ]; - err = validate( opts, options ); + err = validate( opts, arguments[ 2+nparams ] ); if ( err ) { throw err; } From 8c3f2dad0275a9c308fcfd00d6ce71c2d029c19c Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 01:45:19 -0700 Subject: [PATCH 0769/1062] Avoid unnecessary object creation --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 6acc0aabd5c3..839a00308a99 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -78,6 +78,7 @@ function chi2gof() { var params; var sfreq; var sstat; + var sopts; var nargs; var args; var opts; @@ -175,16 +176,17 @@ function chi2gof() { p = div( new Array( len ), expected, psum ); } seq = incrspace( 0, len, 1 ); + sopts = { + 'size': n, + 'probs': p + }; geq = 1; for ( i = 0; i < opts.iterations; i++ ) { // TODO: use `sample.factory` method once sample pkg is updated. - v = sample( seq, { - 'size': n, - 'probs': p - }); + v = sample( seq, sopts ); sfreq = tabulate( v ); - // Enlarge `sfreq` in case `expected` is longer... + // Ensure that the number of simulated frequencies matches the number of expected frequencies... while ( sfreq.length < len ) { sfreq.push( 0 ); } From dc7144af7a12aabe2664599e8b05dc7dffb6d281 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 02:23:51 -0700 Subject: [PATCH 0770/1062] Reuse a frequency array --- .../@stdlib/stats/chi2gof/lib/main.js | 9 ++-- .../@stdlib/stats/chi2gof/lib/tabulate.js | 28 ++++------- .../@stdlib/stats/chi2gof/lib/zeros.js | 50 +++++++++++++++++++ 3 files changed, 62 insertions(+), 25 deletions(-) create mode 100644 lib/node_modules/@stdlib/stats/chi2gof/lib/zeros.js diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 839a00308a99..198e8e06dffa 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -40,6 +40,7 @@ var getPMF = require( './get_pmf.js' ); var mult = require( './mult.js' ); var sum = require( './sum.js' ); var div = require( './div.js' ); +var zeros = require( './zeros.js' ); var validate = require( './validate.js' ); @@ -181,15 +182,11 @@ function chi2gof() { 'probs': p }; geq = 1; + sfreq = new Array( len ); for ( i = 0; i < opts.iterations; i++ ) { // TODO: use `sample.factory` method once sample pkg is updated. v = sample( seq, sopts ); - sfreq = tabulate( v ); - - // Ensure that the number of simulated frequencies matches the number of expected frequencies... - while ( sfreq.length < len ) { - sfreq.push( 0 ); - } + sfreq = tabulate( zeros( sfreq ), v ); sstat = testStatistic( sfreq, expected ); if ( sstat >= stat ) { geq += 1; diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/tabulate.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/tabulate.js index 45015021b6b4..6dd3e45b328a 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/tabulate.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/tabulate.js @@ -21,35 +21,25 @@ // MAIN // /** -* Creates a frequency table of data in an array. +* Creates a frequency table from an input array. * * @private +* @param {Array} out - output array * @param {IntegerArray} arr - input array * @returns {IntegerArray} frequency table * * @example * var arr = [ 0, 1, 1, 0, 0, 2, 3, 5 ]; -* var freq = tabulate( arr ); -* // returns [ 3, 2, 1, 1, 0, 1 ] +* +* var freq = tabulate( [ 0, 0, 0, 0, 0, 0, 0, 0 ], arr ); +* // returns [ 3, 2, 1, 1, 0, 1, 0, 0 ] */ -function tabulate( arr ) { - var freq = []; - var len; +function tabulate( out, arr ) { var i; - var k; - var x; - - len = arr.length; - for ( i = 0; i < len; i++ ) { - x = arr[ i ]; - if ( freq.length < x+1 ) { - for ( k = freq.length; k < x+1; k++ ) { - freq.push( 0 ); - } - } - freq[ x ] += 1; + for ( i = 0; i < arr.length; i++ ) { + out[ arr[ i ] ] += 1; } - return freq; + return out; } diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/zeros.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/zeros.js new file mode 100644 index 000000000000..26dd4cafe3c8 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/zeros.js @@ -0,0 +1,50 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Sets all array elements to zero. +* +* @private +* @param {Array} arr - input array +* @returns {Array} input array +* +* @example +* var arr = [ 0, 1, 1, 0, 0, 2, 3, 5 ]; +* +* var out = zeros( arr ); +* // returns [ 0, 0, 0, 0, 0, 0, 0, 0 ] +* +* var bool = ( arr === out ); +* // returns true +*/ +function zeros( arr ) { + var i; + for ( i = 0; i < arr.length; i++ ) { + arr[ i ] = 0; + } + return arr; +} + + +// EXPORTS // + +module.exports = zeros; From 63fd556200c0881df5e645695642252226d2fc8a Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 02:27:12 -0700 Subject: [PATCH 0771/1062] Remove intermediate variable and rename variables --- .../@stdlib/stats/chi2gof/lib/main.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 198e8e06dffa..f9db8c69fe06 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -77,8 +77,6 @@ function chi2gof() { var expected; var nparams; var params; - var sfreq; - var sstat; var sopts; var nargs; var args; @@ -86,10 +84,11 @@ function chi2gof() { var psum; var pval; var stat; + var freq; + var pool; var err; var len; var pmf; - var seq; var geq; var out; var arg; @@ -176,19 +175,18 @@ function chi2gof() { psum = sum( expected ); p = div( new Array( len ), expected, psum ); } - seq = incrspace( 0, len, 1 ); + pool = incrspace( 0, len, 1 ); sopts = { 'size': n, 'probs': p }; geq = 1; - sfreq = new Array( len ); + freq = new Array( len ); for ( i = 0; i < opts.iterations; i++ ) { // TODO: use `sample.factory` method once sample pkg is updated. - v = sample( seq, sopts ); - sfreq = tabulate( zeros( sfreq ), v ); - sstat = testStatistic( sfreq, expected ); - if ( sstat >= stat ) { + v = sample( pool, sopts ); + freq = tabulate( zeros( freq ), v ); + if ( testStatistic( freq, expected ) >= stat ) { geq += 1; } } From d8e6f06820b34bc988f7db185009e329406f7686 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 02:29:35 -0700 Subject: [PATCH 0772/1062] Update comment --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index f9db8c69fe06..4fb653bb78cd 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -138,7 +138,7 @@ function chi2gof() { psum += v; expected.push( v*n ); } - // Check whether we need to add a remaining category for all values greater or equal to `len`... + // Check whether we need to add a remaining category for all values greater than or equal to `len`... if ( psum < 1.0 ) { x = gcopy( len, x, 1, new Array( len ), 1 ); x.push( 0 ); @@ -180,8 +180,8 @@ function chi2gof() { 'size': n, 'probs': p }; - geq = 1; freq = new Array( len ); + geq = 1; for ( i = 0; i < opts.iterations; i++ ) { // TODO: use `sample.factory` method once sample pkg is updated. v = sample( pool, sopts ); From f6fdba44bce03b1cc98a40c2c4340d09dfdacb25 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 02:40:50 -0700 Subject: [PATCH 0773/1062] Fix error messages and parameter description --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 4fb653bb78cd..0f8ae399041e 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -51,7 +51,7 @@ var validate = require( './validate.js' ); * * @param {NonNegativeIntegerArray} x - observation frequencies * @param {(NonNegativeNumericArray|ProbabilityArray|string)} y - array of expected values or probabilities or a string denoting the name of a distribution -* @param {...number} [params] - distribution parameters passed to mean function +* @param {...number} [params] - distribution parameters passed to PMF function * @param {Options} [options] - function options * @param {number} [options.alpha=0.05] - significance level * @param {NonNegativeInteger} [options.ddof=0] - degrees of freedom adjustment @@ -122,7 +122,7 @@ function chi2gof() { for ( i = 0; i < nparams; i++ ) { v = arguments[ i+2 ]; if ( !isNumber( v ) || isnan( v ) ) { - throw new TypeError( 'invalid argument. Distribution parameter must be a number primitive. Value: `' + v + '`.' ); + throw new TypeError( 'invalid argument. Distribution argument must be a number primitive. Value: `' + v + '`.' ); } params.push( v ); args.push( v ); @@ -151,13 +151,13 @@ function chi2gof() { } else if ( isUnityProbabilityArray( arg ) ) { p = arg; if ( len !== p.length ) { - throw new Error( 'invalid arguments. First and second parameter must be arrays of the same length.' ); + throw new Error( 'invalid arguments. First and second arguments must be arrays of the same length.' ); } expected = mult( new Array( len ), p, n ); } else if ( isNonNegativeNumberArray( arg ) ) { expected = arg; if ( len !== expected.length ) { - throw new Error( 'invalid arguments. First and second parameter must be arrays of the same length.' ); + throw new Error( 'invalid arguments. First and second arguments must be arrays of the same length.' ); } } else { throw new TypeError( 'invalid argument. Second argument must be an array of probabilities summing to one, an array of expected values, or the name of a discrete probability distribution. Value: `' + arg + '`.' ); From 087072c4743d0004448bbb5ee0fb020444dc5581 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 02:46:15 -0700 Subject: [PATCH 0774/1062] Remove unnecessary conditional --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 0f8ae399041e..a1cd292949a7 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -193,10 +193,7 @@ function chi2gof() { df = null; pval = geq / ( opts.iterations+1 ); } else { - df = len - 1; - if ( opts.ddof ) { - df -= opts.ddof; - } + df = len - 1 - opts.ddof; pval = 1.0 - chisqCDF( stat, df ); } out = {}; From 29ef5bca372b05a0adf10aa82af47fddd3651f6b Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 02:47:49 -0700 Subject: [PATCH 0775/1062] Switch operand order --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index a1cd292949a7..8b6a0b2fb8d7 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -150,13 +150,13 @@ function chi2gof() { } } else if ( isUnityProbabilityArray( arg ) ) { p = arg; - if ( len !== p.length ) { + if ( p.length !== len ) { throw new Error( 'invalid arguments. First and second arguments must be arrays of the same length.' ); } expected = mult( new Array( len ), p, n ); } else if ( isNonNegativeNumberArray( arg ) ) { expected = arg; - if ( len !== expected.length ) { + if ( expected.length !== len ) { throw new Error( 'invalid arguments. First and second arguments must be arrays of the same length.' ); } } else { From 7d18d516a3293617824ec020d512d673dd97a6b6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 02:49:42 -0700 Subject: [PATCH 0776/1062] Cast to 32-bit ints --- lib/node_modules/@stdlib/stats/chi2gof/lib/tabulate.js | 2 +- lib/node_modules/@stdlib/stats/chi2gof/lib/zeros.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/tabulate.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/tabulate.js index 6dd3e45b328a..87c4612d0280 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/tabulate.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/tabulate.js @@ -37,7 +37,7 @@ function tabulate( out, arr ) { var i; for ( i = 0; i < arr.length; i++ ) { - out[ arr[ i ] ] += 1; + out[ arr[ i ] ] += 1|0; // asm type annotation } return out; } diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/zeros.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/zeros.js index 26dd4cafe3c8..65e5bb658d9a 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/zeros.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/zeros.js @@ -39,7 +39,7 @@ function zeros( arr ) { var i; for ( i = 0; i < arr.length; i++ ) { - arr[ i ] = 0; + arr[ i ] = 0|0; // asm type annotation } return arr; } From c88f2cc0282e60eb11e68a8f1a0941a49360fdd8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 02:54:22 -0700 Subject: [PATCH 0777/1062] Update description --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 8b6a0b2fb8d7..6db3ff1128f8 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -51,7 +51,7 @@ var validate = require( './validate.js' ); * * @param {NonNegativeIntegerArray} x - observation frequencies * @param {(NonNegativeNumericArray|ProbabilityArray|string)} y - array of expected values or probabilities or a string denoting the name of a distribution -* @param {...number} [params] - distribution parameters passed to PMF function +* @param {...number} [params] - distribution PMF parameters * @param {Options} [options] - function options * @param {number} [options.alpha=0.05] - significance level * @param {NonNegativeInteger} [options.ddof=0] - degrees of freedom adjustment From b327fe3a07fec70ef9244753bd1843e36f9d04ee Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 02:55:31 -0700 Subject: [PATCH 0778/1062] Update error message --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 6db3ff1128f8..3bdf760b00a7 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -122,7 +122,7 @@ function chi2gof() { for ( i = 0; i < nparams; i++ ) { v = arguments[ i+2 ]; if ( !isNumber( v ) || isnan( v ) ) { - throw new TypeError( 'invalid argument. Distribution argument must be a number primitive. Value: `' + v + '`.' ); + throw new TypeError( 'invalid argument. Distribution parameter argument must be a number primitive. Value: `' + v + '`.' ); } params.push( v ); args.push( v ); From c1263e0e659f966d14deb4ce09d73540fbbc8883 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 02:57:05 -0700 Subject: [PATCH 0779/1062] Remove unnecessary variable --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 3bdf760b00a7..fbca471056e6 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -78,7 +78,6 @@ function chi2gof() { var nparams; var params; var sopts; - var nargs; var args; var opts; var psum; @@ -99,7 +98,6 @@ function chi2gof() { var v; var i; - nargs = arguments.length; x = arguments[ 0 ]; if ( !isNonNegativeIntegerArray( x ) ) { throw new TypeError( 'invalid argument. First argument must be an array of nonnegative integers. Value: `' + x + '`.' ); @@ -163,7 +161,7 @@ function chi2gof() { throw new TypeError( 'invalid argument. Second argument must be an array of probabilities summing to one, an array of expected values, or the name of a discrete probability distribution. Value: `' + arg + '`.' ); } opts = copy( defaults ); - if ( nargs > 2+nparams ) { + if ( arguments.length > 2+nparams ) { err = validate( opts, arguments[ 2+nparams ] ); if ( err ) { throw err; From 2c8110a3869164653e0cfb80d6e2f13e69f56333 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 13:50:13 -0700 Subject: [PATCH 0780/1062] Adjust the function arity --- .../@stdlib/stats/chi2gof/lib/main.js | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index fbca471056e6..47eef5066814 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -50,7 +50,7 @@ var validate = require( './validate.js' ); * Performs a chi-square goodness-of-fit test. * * @param {NonNegativeIntegerArray} x - observation frequencies -* @param {(NonNegativeNumericArray|ProbabilityArray|string)} y - array of expected values or probabilities or a string denoting the name of a distribution +* @param {(NonNegativeNumericArray|ProbabilityArray|string)} y - array of expected frequencies or a discrete probability distribution name * @param {...number} [params] - distribution PMF parameters * @param {Options} [options] - function options * @param {number} [options.alpha=0.05] - significance level @@ -63,7 +63,7 @@ var validate = require( './validate.js' ); * @throws {TypeError} must provide valid options * @throws {Error} `x` and `p` must have the same length * @throws {Error} at least one element of `x` must be positive -* @throws {RangeError} alpha option must be a number in the interval `[0,1]` +* @throws {RangeError} significance level must be a number in the interval `[0,1]` * @returns {Object} test results * * @example @@ -73,7 +73,7 @@ var validate = require( './validate.js' ); * var out = chi2gof( x, p ); * // returns { 'pValue': ~0.0406, 'statistic': ~9.9901, ... } */ -function chi2gof() { +function chi2gof( x, y ) { var expected; var nparams; var params; @@ -90,15 +90,12 @@ function chi2gof() { var pmf; var geq; var out; - var arg; var df; var n; var p; - var x; var v; var i; - x = arguments[ 0 ]; if ( !isNonNegativeIntegerArray( x ) ) { throw new TypeError( 'invalid argument. First argument must be an array of nonnegative integers. Value: `' + x + '`.' ); } @@ -108,9 +105,8 @@ function chi2gof() { throw new Error( 'invalid argument. At least one element of `x` must be positive. Value: `' + x + '`.' ); } nparams = 0; - arg = arguments[ 1 ]; - if ( isString( arg ) ) { - pmf = getPMF( arg ); + if ( isString( y ) ) { + pmf = getPMF( y ); if ( pmf instanceof Error ) { throw pmf; } @@ -129,7 +125,7 @@ function chi2gof() { psum = 0.0; for ( i = 0; i < len; i++ ) { args[ 0 ] = i; - if ( arg === 'discrete-uniform' ) { + if ( y === 'discrete-uniform' ) { args[ 0 ] += params[ 0 ]; } v = pmf.apply( null, args ); @@ -146,19 +142,19 @@ function chi2gof() { len += 1; } - } else if ( isUnityProbabilityArray( arg ) ) { - p = arg; + } else if ( isUnityProbabilityArray( y ) ) { + p = y; if ( p.length !== len ) { throw new Error( 'invalid arguments. First and second arguments must be arrays of the same length.' ); } expected = mult( new Array( len ), p, n ); - } else if ( isNonNegativeNumberArray( arg ) ) { - expected = arg; + } else if ( isNonNegativeNumberArray( y ) ) { + expected = y; if ( expected.length !== len ) { throw new Error( 'invalid arguments. First and second arguments must be arrays of the same length.' ); } } else { - throw new TypeError( 'invalid argument. Second argument must be an array of probabilities summing to one, an array of expected values, or the name of a discrete probability distribution. Value: `' + arg + '`.' ); + throw new TypeError( 'invalid argument. Second argument must be an array of probabilities summing to one, an array of expected values, or the name of a discrete probability distribution. Value: `' + y + '`.' ); } opts = copy( defaults ); if ( arguments.length > 2+nparams ) { From 82a98c0786a9b79b9a3f71b2e18d066cdf1dac49 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 13:54:43 -0700 Subject: [PATCH 0781/1062] Avoid assigning to an argument when `arguments` mentioned in function --- .../@stdlib/stats/chi2gof/lib/main.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 47eef5066814..26c985c6a9a6 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -85,6 +85,7 @@ function chi2gof( x, y ) { var stat; var freq; var pool; + var obs; var err; var len; var pmf; @@ -96,13 +97,14 @@ function chi2gof( x, y ) { var v; var i; - if ( !isNonNegativeIntegerArray( x ) ) { - throw new TypeError( 'invalid argument. First argument must be an array of nonnegative integers. Value: `' + x + '`.' ); + obs = x; + if ( !isNonNegativeIntegerArray( obs ) ) { + throw new TypeError( 'invalid argument. First argument must be an array of nonnegative integers. Value: `' + obs + '`.' ); } - len = x.length; - n = sum( x ); + len = obs.length; + n = sum( obs ); if ( n === 0.0 ) { - throw new Error( 'invalid argument. At least one element of `x` must be positive. Value: `' + x + '`.' ); + throw new Error( 'invalid argument. At least one element of `x` must be positive. Value: `' + obs + '`.' ); } nparams = 0; if ( isString( y ) ) { @@ -134,8 +136,8 @@ function chi2gof( x, y ) { } // Check whether we need to add a remaining category for all values greater than or equal to `len`... if ( psum < 1.0 ) { - x = gcopy( len, x, 1, new Array( len ), 1 ); - x.push( 0 ); + obs = gcopy( len, obs, 1, new Array( len ), 1 ); + obs.push( 0 ); v = 1.0 - psum; expected.push( v*n ); @@ -163,7 +165,7 @@ function chi2gof( x, y ) { throw err; } } - stat = testStatistic( x, expected ); + stat = testStatistic( obs, expected ); if ( opts.simulate ) { if ( p === void 0 ) { psum = sum( expected ); From 3e8e30ec5ba8611029d42cf4319653813e87d457 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 14:00:19 -0700 Subject: [PATCH 0782/1062] Update error description --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 26c985c6a9a6..fe38180f3b0d 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -61,7 +61,7 @@ var validate = require( './validate.js' ); * @throws {TypeError} second argument must be an array of nonnegative numbers, an array of probabilities summing to one, or the name of a discrete distribution * @throws {TypeError} options argument must be an object * @throws {TypeError} must provide valid options -* @throws {Error} `x` and `p` must have the same length +* @throws {Error} an array of expected frequencies must have the same length as the array of observation frequencies * @throws {Error} at least one element of `x` must be positive * @throws {RangeError} significance level must be a number in the interval `[0,1]` * @returns {Object} test results From 02c6b45e0f9e794e5edcebbc91aed021fc70831d Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 14:01:37 -0700 Subject: [PATCH 0783/1062] Update error messages --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index fe38180f3b0d..e4363a803de9 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -147,16 +147,16 @@ function chi2gof( x, y ) { } else if ( isUnityProbabilityArray( y ) ) { p = y; if ( p.length !== len ) { - throw new Error( 'invalid arguments. First and second arguments must be arrays of the same length.' ); + throw new Error( 'invalid arguments. First and second arguments must have the same length.' ); } expected = mult( new Array( len ), p, n ); } else if ( isNonNegativeNumberArray( y ) ) { expected = y; if ( expected.length !== len ) { - throw new Error( 'invalid arguments. First and second arguments must be arrays of the same length.' ); + throw new Error( 'invalid arguments. First and second arguments must have the same length.' ); } } else { - throw new TypeError( 'invalid argument. Second argument must be an array of probabilities summing to one, an array of expected values, or the name of a discrete probability distribution. Value: `' + y + '`.' ); + throw new TypeError( 'invalid argument. Second argument must be an array of probabilities summing to one, an array of expected frequencies, or a discrete probability distribution name. Value: `' + y + '`.' ); } opts = copy( defaults ); if ( arguments.length > 2+nparams ) { From 4713d5952bee87427e2d25df921e9dd063410267 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 14:03:27 -0700 Subject: [PATCH 0784/1062] Update error message and descriptions --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index e4363a803de9..74f2f36c1c00 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -57,13 +57,13 @@ var validate = require( './validate.js' ); * @param {NonNegativeInteger} [options.ddof=0] - degrees of freedom adjustment * @param {boolean} [options.simulate=false] - boolean indicating whether to compute p-values by Monte Carlo simulation * @param {PositiveInteger} [options.iterations=500] - number of Monte Carlo iterations -* @throws {TypeError} first argument must be an array of nonnegative integers -* @throws {TypeError} second argument must be an array of nonnegative numbers, an array of probabilities summing to one, or the name of a discrete distribution +* @throws {TypeError} first argument must be an array-like object containing nonnegative integers +* @throws {TypeError} second argument must be an array of nonnegative numbers, an array of probabilities summing to one, or discrete probability distribution name * @throws {TypeError} options argument must be an object * @throws {TypeError} must provide valid options * @throws {Error} an array of expected frequencies must have the same length as the array of observation frequencies * @throws {Error} at least one element of `x` must be positive -* @throws {RangeError} significance level must be a number in the interval `[0,1]` +* @throws {RangeError} significance level must be a number on the interval `[0,1]` * @returns {Object} test results * * @example @@ -99,7 +99,7 @@ function chi2gof( x, y ) { obs = x; if ( !isNonNegativeIntegerArray( obs ) ) { - throw new TypeError( 'invalid argument. First argument must be an array of nonnegative integers. Value: `' + obs + '`.' ); + throw new TypeError( 'invalid argument. First argument must be an array-like object containing nonnegative integers. Value: `' + obs + '`.' ); } len = obs.length; n = sum( obs ); From 02d9338a374b521da58cccc2db29e02fed282edf Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 14:07:00 -0700 Subject: [PATCH 0785/1062] Update error messages and descriptions --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 74f2f36c1c00..8e020c4949e4 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -50,7 +50,7 @@ var validate = require( './validate.js' ); * Performs a chi-square goodness-of-fit test. * * @param {NonNegativeIntegerArray} x - observation frequencies -* @param {(NonNegativeNumericArray|ProbabilityArray|string)} y - array of expected frequencies or a discrete probability distribution name +* @param {(NonNegativeNumericArray|ProbabilityArray|string)} y - array-like object of expected frequencies or a discrete probability distribution name * @param {...number} [params] - distribution PMF parameters * @param {Options} [options] - function options * @param {number} [options.alpha=0.05] - significance level @@ -58,10 +58,10 @@ var validate = require( './validate.js' ); * @param {boolean} [options.simulate=false] - boolean indicating whether to compute p-values by Monte Carlo simulation * @param {PositiveInteger} [options.iterations=500] - number of Monte Carlo iterations * @throws {TypeError} first argument must be an array-like object containing nonnegative integers -* @throws {TypeError} second argument must be an array of nonnegative numbers, an array of probabilities summing to one, or discrete probability distribution name +* @throws {TypeError} second argument must be an array-like object of nonnegative integers, an array-like object of probabilities summing to one, or discrete probability distribution name * @throws {TypeError} options argument must be an object * @throws {TypeError} must provide valid options -* @throws {Error} an array of expected frequencies must have the same length as the array of observation frequencies +* @throws {Error} observation and expected frequencies must have the same length * @throws {Error} at least one element of `x` must be positive * @throws {RangeError} significance level must be a number on the interval `[0,1]` * @returns {Object} test results @@ -156,7 +156,7 @@ function chi2gof( x, y ) { throw new Error( 'invalid arguments. First and second arguments must have the same length.' ); } } else { - throw new TypeError( 'invalid argument. Second argument must be an array of probabilities summing to one, an array of expected frequencies, or a discrete probability distribution name. Value: `' + y + '`.' ); + throw new TypeError( 'invalid argument. Second argument must be an array-like object of probabilities summing to one, an array-like object of expected frequencies, or a discrete probability distribution name. Value: `' + y + '`.' ); } opts = copy( defaults ); if ( arguments.length > 2+nparams ) { From e863120b914d5635743a522f82c37c4f80e02b3f Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 14:13:45 -0700 Subject: [PATCH 0786/1062] Consolidate and rename variables --- .../@stdlib/stats/chi2gof/lib/main.js | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 8e020c4949e4..aebae712c2a7 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -51,7 +51,7 @@ var validate = require( './validate.js' ); * * @param {NonNegativeIntegerArray} x - observation frequencies * @param {(NonNegativeNumericArray|ProbabilityArray|string)} y - array-like object of expected frequencies or a discrete probability distribution name -* @param {...number} [params] - distribution PMF parameters +* @param {...number} [args] - distribution PMF arguments * @param {Options} [options] - function options * @param {number} [options.alpha=0.05] - significance level * @param {NonNegativeInteger} [options.ddof=0] - degrees of freedom adjustment @@ -64,6 +64,7 @@ var validate = require( './validate.js' ); * @throws {Error} observation and expected frequencies must have the same length * @throws {Error} at least one element of `x` must be positive * @throws {RangeError} significance level must be a number on the interval `[0,1]` +* @throws {TypeError} distribution PMF arguments must be number primitives * @returns {Object} test results * * @example @@ -75,9 +76,8 @@ var validate = require( './validate.js' ); */ function chi2gof( x, y ) { var expected; - var nparams; - var params; var sopts; + var nargs; var args; var opts; var psum; @@ -106,21 +106,19 @@ function chi2gof( x, y ) { if ( n === 0.0 ) { throw new Error( 'invalid argument. At least one element of `x` must be positive. Value: `' + obs + '`.' ); } - nparams = 0; + nargs = 0; if ( isString( y ) ) { pmf = getPMF( y ); if ( pmf instanceof Error ) { throw pmf; } - nparams += pmf.length - 1; - params = []; + nargs += pmf.length - 1; args = [ 0 ]; - for ( i = 0; i < nparams; i++ ) { + for ( i = 0; i < nargs; i++ ) { v = arguments[ i+2 ]; if ( !isNumber( v ) || isnan( v ) ) { - throw new TypeError( 'invalid argument. Distribution parameter argument must be a number primitive. Value: `' + v + '`.' ); + throw new TypeError( 'invalid argument. Distribution PMF arguments must be number primitives. Value: `' + v + '`.' ); } - params.push( v ); args.push( v ); } expected = []; @@ -128,7 +126,7 @@ function chi2gof( x, y ) { for ( i = 0; i < len; i++ ) { args[ 0 ] = i; if ( y === 'discrete-uniform' ) { - args[ 0 ] += params[ 0 ]; + args[ 0 ] += args[ 1 ]; } v = pmf.apply( null, args ); psum += v; @@ -159,8 +157,8 @@ function chi2gof( x, y ) { throw new TypeError( 'invalid argument. Second argument must be an array-like object of probabilities summing to one, an array-like object of expected frequencies, or a discrete probability distribution name. Value: `' + y + '`.' ); } opts = copy( defaults ); - if ( arguments.length > 2+nparams ) { - err = validate( opts, arguments[ 2+nparams ] ); + if ( arguments.length > 2+nargs ) { + err = validate( opts, arguments[ 2+nargs ] ); if ( err ) { throw err; } From 8421590eb69bd180ada829cfee1501710c60e50c Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 14:18:15 -0700 Subject: [PATCH 0787/1062] Add warning comment --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index aebae712c2a7..49aa5a99b8a9 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -112,7 +112,7 @@ function chi2gof( x, y ) { if ( pmf instanceof Error ) { throw pmf; } - nargs += pmf.length - 1; + nargs += pmf.length - 1; // WARNING: this relies on PMF functions to have an explicit arity args = [ 0 ]; for ( i = 0; i < nargs; i++ ) { v = arguments[ i+2 ]; From f0a5946a8b55dafe9a717fc8566f99ca5a4c6262 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 14:19:14 -0700 Subject: [PATCH 0788/1062] Fix grammar --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 49aa5a99b8a9..4a6ab7d1cf9e 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -112,7 +112,7 @@ function chi2gof( x, y ) { if ( pmf instanceof Error ) { throw pmf; } - nargs += pmf.length - 1; // WARNING: this relies on PMF functions to have an explicit arity + nargs += pmf.length - 1; // WARNING: this relies on PMF functions having an explicit arity args = [ 0 ]; for ( i = 0; i < nargs; i++ ) { v = arguments[ i+2 ]; From 73d56ad7b477c0770526055fb27a3cfacb445cd9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 14:20:25 -0700 Subject: [PATCH 0789/1062] Update error message and descriptions --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 4a6ab7d1cf9e..9e666d57eb9f 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -51,7 +51,7 @@ var validate = require( './validate.js' ); * * @param {NonNegativeIntegerArray} x - observation frequencies * @param {(NonNegativeNumericArray|ProbabilityArray|string)} y - array-like object of expected frequencies or a discrete probability distribution name -* @param {...number} [args] - distribution PMF arguments +* @param {...number} [args] - probability mass function (PMF) arguments * @param {Options} [options] - function options * @param {number} [options.alpha=0.05] - significance level * @param {NonNegativeInteger} [options.ddof=0] - degrees of freedom adjustment @@ -64,7 +64,7 @@ var validate = require( './validate.js' ); * @throws {Error} observation and expected frequencies must have the same length * @throws {Error} at least one element of `x` must be positive * @throws {RangeError} significance level must be a number on the interval `[0,1]` -* @throws {TypeError} distribution PMF arguments must be number primitives +* @throws {TypeError} probability mass function (PMF) arguments must be number primitives * @returns {Object} test results * * @example @@ -117,7 +117,7 @@ function chi2gof( x, y ) { for ( i = 0; i < nargs; i++ ) { v = arguments[ i+2 ]; if ( !isNumber( v ) || isnan( v ) ) { - throw new TypeError( 'invalid argument. Distribution PMF arguments must be number primitives. Value: `' + v + '`.' ); + throw new TypeError( 'invalid argument. Probability mass function (PMF) arguments must be number primitives. Value: `' + v + '`.' ); } args.push( v ); } From 5e713766edb3edbb126697101e1b7b1efa7f4771 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 15:49:36 -0700 Subject: [PATCH 0790/1062] Update REPL help --- .../@stdlib/stats/chi2gof/docs/repl.txt | 138 ++++++++---------- 1 file changed, 59 insertions(+), 79 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/docs/repl.txt b/lib/node_modules/@stdlib/stats/chi2gof/docs/repl.txt index 14204e136dbb..a3d6a5401dd4 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/docs/repl.txt +++ b/lib/node_modules/@stdlib/stats/chi2gof/docs/repl.txt @@ -1,33 +1,36 @@ -{{alias}}( x, y[, ...params][, options] ) +{{alias}}( x, y[, ...args][, options] ) Performs a chi-square goodness-of-fit test. - For an array or typed array of integers `x`, a chi-square goodness-of-fit is - computed for the null hypothesis that the values of `x` come from the - discrete distribution specified by `y`. `y` can be an `array` of expected - frequencies, an `array` of population probabilities that sum to one, or a - string with the name of the discrete distribution to test against. In the - latter case, the parameters of the distribution must be supplied as - additional arguments after `y`. The function returns an object holding the - calculated test statistic, the p-value of the test, as well as the test + A chi-square goodness-of-fit is computed for the null hypothesis that the + values of `x` come from the discrete probability distribution specified by + `y`. + + The second argument can be expected frequencies, population probabilities + summing to one, or a discrete probability distribution name to test against. + + When providing a discrete probability distribution name, distribution + parameters *must* be supplied as additional arguments. + + The function returns an object containing the test statistic, p-value, and decision. By default, the p-value is computed using a chi-square distribution with - `k - 1` degrees of freedom, where `k` is the number of levels of `x`. In - case distribution parameters were estimated for the calculation of `y`, the - degrees of freedom have to be corrected. The `ddof` option can be set to use - `n - ddof - 1` degrees of freedom. + `k-1` degrees of freedom, where `k` is the length of `x`. + + If provided distribution arguments are estimated (e.g., via maximum + likelihood estimation), the degrees of freedom should be corrected. Set the + `ddof` option to use `k-1-n` degrees of freedom, where `n` is the degrees of + freedom adjustment. The chi-square approximation may be incorrect if the observed or expected - frequencies in each category are too small. It is common to require + frequencies in each category are too small. Common practice is to require frequencies greater than five. - Instead of relying on the chi-square approximation when calculating the - p-value, Monte Carlo simulation can be used. To do so, set the `simulate` - option. The simulation is carried out by resampling from the discrete - distribution given by `y`. By default, `500` iterations are used for the - simulation. To set a custom number of iterations, use the `iterations` - option. + Instead of relying on chi-square approximation to calculate the p-value, one + can use Monte Carlo simulation. When the `simulate` option is `true`, the + simulation is performed by re-sampling from the discrete distribution + specified by `y`. Parameters ---------- @@ -35,31 +38,30 @@ Observation frequencies. y: Array|string - Array of expected values or probabilities or a string denoting the name - of a distribution. + Expected frequencies (or probabilities) or a discrete probability + distribution name. - params: ...number (optional) - Distribution parameters passed to mean function. + args: ...number (optional) + Distribution parameters. Distribution parameters will be passed to a + probability mass function (PMF) as arguments. options: Object (optional) Options. options.alpha: number (optional) - Number in the interval `[0,1]` giving the significance level of the - hypothesis test. Default: `0.05`. + Significance level of the hypothesis test. Must be on the interval + [0,1]. Default: 0.05. options.ddof: number (optional) - Nonnegative integer giving the "delta degrees of freedom" adjustment. - Default: `0`. + Delta degrees of freedom adjustment. Default: 0. options.simulate: boolean (optional) - Boolean indicating whether to compute p-values by Monte Carlo - simulation. The simulation is carried out by resampling from the - discrete distribution given by `p`. Default: `false`. + Boolean indicating whether to calculate p-values by Monte Carlo + simulation. The simulation is performed by re-sampling from the discrete + distribution specified by `y`. Default: false. options.iterations: number (optional) - Positive integer specifying the number of Monte Carlo iterations. - Default: `500`. + Number of Monte Carlo iterations. Default: 500. Returns ------- @@ -67,79 +69,57 @@ Test result object. out.alpha: number - Used significance level. + Significance level. out.rejected: boolean Test decision. out.pValue: number - p-value of the test. + Test p-value. out.statistic: number - Value of test statistic. + Test statistic. out.df: number Degrees of freedom. out.method: string - Name of test. + Test name. out.print: Function Function to print formatted output. Examples -------- - // Use probabilities for `y`: + // Provide expected probabilities... > var x = [ 89, 37, 30, 28, 2 ]; > var p = [ 0.40, 0.20, 0.20, 0.15, 0.05 ]; > var out = {{alias}}( x, p ) { 'pValue': ~0.0406, 'statistic': ~9.9901, ... } - > var table = out.print() - Null hypothesis: population probabilities are equal to those in p - pValue: 0.0406 - statistic: 9.9901 - degrees of freedom: 4 - Test Decision: Reject null in favor of alternative at 5% significance level - - // Set significance level: - > out = {{alias}}( x, p, { 'alpha': 0.01 }); - > table = out.print() - Chi-square goodness-of-fit test - - Null hypothesis: population probabilities are equal to those in p - - pValue: 0.0406 - statistic: 9.9901 - degrees of freedom: 4 - - Test Decision: Fail to reject null in favor of alternative at 1% - significance level - - // Calculate the p-value via Monte Carlo simulation: - > var x = [ 89, 37, 30, 28, 2 ]; - > var p = [ 0.40, 0.20, 0.20, 0.15, 0.05 ]; - > var out = {{alias}}( x, p, { 'simulate': true, 'iterations': 1000 }) + > out.print() + + // Set significance level... + > var opts = { 'alpha': 0.01 }; + > out = {{alias}}( x, p, opts ); + > out.print() + + // Calculate the test p-value via Monte Carlo simulation... + > x = [ 89, 37, 30, 28, 2 ]; + > p = [ 0.40, 0.20, 0.20, 0.15, 0.05 ]; + > opts = { 'simulate': true, 'iterations': 1000 }; + > out = {{alias}}( x, p, opts ) {...} - // Verify that data comes from Poisson distribution: + // Verify that data comes from Poisson distribution... > var lambda = 3.0; > var rpois = {{alias:@stdlib/random/base/poisson}}.factory( lambda ); > var len = 400; - > x = new Array( len ); - > for ( var i = 0; i < len; i++ ) { - ... x[ i ] = rpois(); - ... }; - - // Generate frequency table: - > var freqs = []; - > for ( i = 0; i < len; i++ ) { - ... val = x[ i ]; - ... freqs[ val ] === void 0 ? freqs[ val ] = 1 : freqs[ val ] += 1; - ... }; - // Fill holes in array: - > for ( i = 0; i < freqs.length; i++ ) { - ... if ( freqs[ i ] === void 0 ) { freqs[ i ] = 0; } - ... }; + > x = []; + > for ( var i = 0; i < len; i++ ) { x.push( rpois() ); }; + + // Generate a frequency table... + > var freqs = new {{alias:@stdlib/array/int32}}( len ); + > for ( i = 0; i < len; i++ ) { freqs[ x[ i ] ] += 1; }; > out = {{alias}}( freqs, 'poisson', lambda ) {...} From 673d39aed83f440b1faf340087d63cbd1a700481 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 16:44:08 -0700 Subject: [PATCH 0791/1062] Update description --- lib/node_modules/@stdlib/assert/is-capitalized/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/assert/is-capitalized/lib/main.js b/lib/node_modules/@stdlib/assert/is-capitalized/lib/main.js index 13a42f2a205d..cd3aaedc9568 100644 --- a/lib/node_modules/@stdlib/assert/is-capitalized/lib/main.js +++ b/lib/node_modules/@stdlib/assert/is-capitalized/lib/main.js @@ -31,7 +31,7 @@ var isString = require( '@stdlib/assert/is-string' ).isPrimitive; * Tests if a value is a string having an uppercase first character. * * @param {*} value - value to test -* @returns {boolean} boolean indicating whether value is a string with an uppercase first character +* @returns {boolean} boolean indicating whether a value is a string with an uppercase first character * * @example * var bool = isCapitalized( 'Hello' ); From cdc4213f180f4354e9cd238ad42abd4dda8740de Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 17:08:08 -0700 Subject: [PATCH 0792/1062] Update docs and example --- .../@stdlib/stats/chi2gof/README.md | 161 ++++++++++-------- .../@stdlib/stats/chi2gof/docs/repl.txt | 10 +- .../@stdlib/stats/chi2gof/examples/index.js | 44 ++--- 3 files changed, 111 insertions(+), 104 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/README.md b/lib/node_modules/@stdlib/stats/chi2gof/README.md index 4901f01f9b6c..0f3c3553d891 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/README.md +++ b/lib/node_modules/@stdlib/stats/chi2gof/README.md @@ -30,75 +30,82 @@ limitations under the License. var chi2gof = require( '@stdlib/stats/chi2gof' ); ``` -#### chi2gof( x, y\[, ...params]\[, opts] ) +#### chi2gof( x, y\[, ...args]\[, opts] ) -For an [array][mdn-array] or [typed array][mdn-typed-array] of integers `x`, a chi-square goodness-of-fit is computed for the null hypothesis that the values of `x` come from the discrete distribution specified by `y`. `y` can be an `array` of expected frequencies, an `array` of population probabilities that sum to one, or a string with the name of the discrete distribution to test against. In the latter case, the parameters of the distribution must be supplied as additional arguments after `y`. The function returns an object holding the calculated test statistic, the p-value of the test, as well as the test decision. +Computes a chi-square goodness-of-fit test for the null hypothesis that the values of `x` come from the discrete probability distribution specified by `y`. ```javascript -var out; -var x; -var y; +// Observed counts: +var x = [ 30, 20, 23, 27 ]; -x = [ 89, 37, 30, 28, 2 ]; -y = [ 0.40, 0.20, 0.20, 0.15, 0.05 ]; +// Expected counts: +var y = [ 25, 25, 25, 25 ]; -// Supplying probabilities... -out = chi2gof( x, y ); +var out = chi2gof( x, y ); /* returns { - 'rejected': true, + 'rejected': false, 'alpha': 0.05, - 'pValue': ~0.0187, + 'pValue': ~0.5087, 'df': 3, - 'statistic': ~9.9901, + 'statistic': ~2.32, ... } */ +``` -// Supplying expected counts... -x = [ 30, 20, 23, 27 ]; -y = [ 25, 25, 25, 25 ]; +The second argument can be an `array`-like object of expected frequencies, population probabilities summing to one, or a discrete probability distribution name to test against. -out = chi2gof( x, y ); +```javascript +// Observed counts: +var x = [ 89, 37, 30, 28, 2 ]; + +// Expected probabilities: +var y = [ 0.40, 0.20, 0.20, 0.15, 0.05 ]; + +var out = chi2gof( x, y ); /* returns { - 'rejected': false, + 'rejected': true, 'alpha': 0.05, - 'pValue': ~0.5087, + 'pValue': ~0.0187, 'df': 3, - 'statistic': ~2.32, + 'statistic': ~9.9901, ... } */ ``` -The returned object comes with a `.print()` method which when invoked will print a formatted output of the results of the hypothesis test. - - +When specifying a discrete probability distribution name, distribution parameters **must** be provided as additional arguments. ```javascript -console.log( out.print() ); -/* => - Chi-square goodness-of-fit test +var Int32Array = require( '@stdlib/array/int32' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); - Null hypothesis: population probabilities are equal to those in p +var out; +var x; +var v; +var i; - pValue: 0.0406 - statistic: 9.9901 - degrees of freedom: 4 +// Simulate expected counts... +x = new Int32Array( 100 ); +for ( i = 0; i < x.length; i++ ) { + v = discreteUniform( 0, 99 ); + x[ v ] += 1; +} - Test Decision: Reject null in favor of alternative at 5% significance level -*/ +out = chi2gof( x, 'discrete-uniform', 0, 99 ); +// returns {...} ``` The function accepts the following `options`: -- **alpha**: `number` in the interval `[0,1]` giving the significance level of the hypothesis test. Default: `0.05`. -- **ddof**: "delta degrees of freedom" adjustment. Has to be a nonnegative integer. Default: `0`. -- **simulate**: `boolean` indicating whether to compute p-values by Monte Carlo simulation. Default: `false`. -- **iterations**: positive integer specifying the number of Monte Carlo iterations. Default: `500`. +- **alpha**: significance level of the hypothesis test. Must be on the interval `[0,1]`. Default: `0.05`. +- **ddof**: "delta degrees of freedom" adjustment. Must be a nonnegative integer. Default: `0`. +- **simulate**: `boolean` indicating whether to calculate p-values by Monte Carlo simulation. Default: `false`. +- **iterations**: number of Monte Carlo iterations. Default: `500`. -By default, the test is carried out at a significance level of `0.05`. To choose a custom significance level, set the `alpha` option. +By default, the test is performed at a significance level of `0.05`. To adjust the significance level, set the `alpha` option. @@ -120,6 +127,7 @@ var table = out.print(); out = chi2gof( x, p, { 'alpha': 0.01 }); + table = out.print(); /* e.g., returns @@ -135,7 +143,7 @@ table = out.print(); */ ``` -By default, the p-value is computed using a chi-square distribution with `k - 1` degrees of freedom, where `k` is the number of levels of `x`. In case distribution parameters were estimated for the calculation of `y`, the degrees of freedom have to be corrected. Set the `ddof` option to use `n - ddof - 1` degrees of freedom. +By default, the p-value is computed using a chi-square distribution with `k-1` degrees of freedom, where `k` is the length of `x`. If provided distribution arguments are estimated (e.g., via maximum likelihood estimation), the degrees of freedom **should** be corrected. Set the `ddof` option to use `k-1-n` degrees of freedom, where `n` is the degrees of freedom adjustment. ```javascript var x = [ 89, 37, 30, 28, 2 ]; @@ -147,7 +155,7 @@ var out = chi2gof( x, p, { // returns { 'pValue': ~0.0186, 'statistic': ~9.9901, 'df': 3, ... } ``` -Instead of relying on the chi-square approximation when calculating the p-value, Monte Carlo simulation can be used. To do so, set the `simulate` option. The simulation is carried out by resampling from the discrete distribution given by `y`. By default, `500` iterations are used for the simulation. To set a custom number of iterations, use the `iterations` option. +Instead of relying on chi-square approximation to calculate the p-value, one can use Monte Carlo simulation. When the `simulate` option is `true`, the simulation is performed by re-sampling from the discrete probability distribution specified by `y`. ```javascript var x = [ 89, 37, 30, 28, 2 ]; @@ -155,11 +163,40 @@ var p = [ 0.40, 0.20, 0.20, 0.15, 0.05 ]; var out = chi2gof( x, p, { 'simulate': true, - 'iterations': 1000 + 'iterations': 1000 // explicitly set the number of Monte Carlo simulations }); // returns {...} ``` +The function returns an `object` having the following properties: + +- **alpha**: significance level. +- **rejected**: `boolean` indicating the test decision. +- **pValue**: test p-value. +- **statistic**: test statistic. +- **df**: degrees of freedom. +- **method**: test name. +- **print**: method for printing formatted test output. + +To print formatted test output, invoke the `print` method. + + + +```javascript +console.log( out.print() ); +/* => + Chi-square goodness-of-fit test + + Null hypothesis: population probabilities are equal to those in p + + pValue: 0.0406 + statistic: 9.9901 + degrees of freedom: 4 + + Test Decision: Reject null in favor of alternative at 5% significance level +*/ +``` +
@@ -168,7 +205,7 @@ var out = chi2gof( x, p, { ## Notes -- The chi-square approximation may be incorrect if the observed or expected frequencies in each category are too small. It is common to require frequencies greater than five. +- The chi-square approximation may be incorrect if the observed or expected frequencies in each category are too small. Common practice is to require frequencies greater than five. @@ -182,48 +219,36 @@ var out = chi2gof( x, p, { ```javascript var poisson = require( '@stdlib/random/base/poisson' ); +var Int32Array = require( '@stdlib/array/int32' ); var chi2gof = require( '@stdlib/stats/chi2gof' ); +var nsamples; var lambda; -var table; var rpois; var freqs; -var len; var out; -var val; -var i; var x; +var i; -// Draw 400 samples from a Poisson( 3.0 ) distribution: +nsamples = 400; lambda = 3.0; rpois = poisson.factory( lambda ); -len = 400; -x = new Array( len ); -for ( i = 0; i < len; i++ ) { - x[ i ] = rpois(); +// Draw samples from a Poisson distribution: +x = []; +for ( i = 0; i < nsamples; i++ ) { + x.push( rpois() ); } -// Generate frequency table: -freqs = []; -for ( i = 0; i < len; i++ ) { - val = x[ i ]; - if ( freqs[ val ] === void 0 ) { - freqs[ val ] = 1; - } else { - freqs[ val ] += 1; - } -} - -// Fill holes in array: -for ( i = 0; i < freqs.length; i++ ) { - if ( freqs[ i ] === void 0 ) { - freqs[ i ] = 0; - } +// Generate a frequency table: +freqs = new Int32Array( nsamples ); +for ( i = 0; i < nsamples; i++ ) { + freqs[ x[ i ] ] += 1; } +// Assess whether the simulated values come from a Poisson distribution: out = chi2gof( freqs, 'poisson', lambda ); -table = out.print(); +console.log( out.print() ); ``` @@ -232,10 +257,6 @@ table = out.print(); diff --git a/lib/node_modules/@stdlib/stats/chi2gof/docs/repl.txt b/lib/node_modules/@stdlib/stats/chi2gof/docs/repl.txt index a3d6a5401dd4..7733e77530a0 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/docs/repl.txt +++ b/lib/node_modules/@stdlib/stats/chi2gof/docs/repl.txt @@ -2,9 +2,9 @@ {{alias}}( x, y[, ...args][, options] ) Performs a chi-square goodness-of-fit test. - A chi-square goodness-of-fit is computed for the null hypothesis that the - values of `x` come from the discrete probability distribution specified by - `y`. + A chi-square goodness-of-fit test is computed for the null hypothesis that + the values of `x` come from the discrete probability distribution specified + by `y`. The second argument can be expected frequencies, population probabilities summing to one, or a discrete probability distribution name to test against. @@ -29,8 +29,8 @@ Instead of relying on chi-square approximation to calculate the p-value, one can use Monte Carlo simulation. When the `simulate` option is `true`, the - simulation is performed by re-sampling from the discrete distribution - specified by `y`. + simulation is performed by re-sampling from the discrete probability + distribution specified by `y`. Parameters ---------- diff --git a/lib/node_modules/@stdlib/stats/chi2gof/examples/index.js b/lib/node_modules/@stdlib/stats/chi2gof/examples/index.js index 3a2bc6c387a1..609ad9183bcb 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/examples/index.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/examples/index.js @@ -19,49 +19,35 @@ 'use strict'; var poisson = require( '@stdlib/random/base/poisson' ); +var Int32Array = require( '@stdlib/array/int32' ); var chi2gof = require( './../lib' ); +var nsamples; var lambda; -var table; var rpois; var freqs; -var len; var out; -var val; -var i; var x; +var i; -// Draw 400 samples from a Poisson( 3.0 ) distribution: +nsamples = 400; lambda = 3.0; rpois = poisson.factory( lambda ); -len = 400; -x = new Array( len ); -for ( i = 0; i < len; i++ ) { - x[ i ] = rpois(); +// Draw samples from a Poisson distribution: +x = []; +for ( i = 0; i < nsamples; i++ ) { + x.push( rpois() ); } -// Generate frequency table: -freqs = []; -for ( i = 0; i < len; i++ ) { - val = x[ i ]; - if ( freqs[ val ] === void 0 ) { - freqs[ val ] = 1; - } else { - freqs[ val ] += 1; - } -} - -// Fill holes in array: -for ( i = 0; i < freqs.length; i++ ) { - if ( freqs[ i ] === void 0 ) { - freqs[ i ] = 0; - } +// Generate a frequency table: +freqs = new Int32Array( nsamples ); +for ( i = 0; i < nsamples; i++ ) { + freqs[ x[ i ] ] += 1; } +// Assess whether the simulated values come from a Poisson distribution: out = chi2gof( freqs, 'poisson', lambda ); -table = out.print(); - console.log( out ); -console.log( '\n' ); -console.log( table ); +console.log( '' ); +console.log( out.print() ); From d456f0d00931e7599fb931087a677985a86b383b Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 17:09:39 -0700 Subject: [PATCH 0793/1062] Update example --- lib/node_modules/@stdlib/stats/chi2gof/README.md | 2 ++ lib/node_modules/@stdlib/stats/chi2gof/examples/index.js | 2 ++ 2 files changed, 4 insertions(+) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/README.md b/lib/node_modules/@stdlib/stats/chi2gof/README.md index 0f3c3553d891..3234fa04de09 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/README.md +++ b/lib/node_modules/@stdlib/stats/chi2gof/README.md @@ -248,6 +248,8 @@ for ( i = 0; i < nsamples; i++ ) { // Assess whether the simulated values come from a Poisson distribution: out = chi2gof( freqs, 'poisson', lambda ); +// returns {...} + console.log( out.print() ); ``` diff --git a/lib/node_modules/@stdlib/stats/chi2gof/examples/index.js b/lib/node_modules/@stdlib/stats/chi2gof/examples/index.js index 609ad9183bcb..8a1b06b20641 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/examples/index.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/examples/index.js @@ -48,6 +48,8 @@ for ( i = 0; i < nsamples; i++ ) { // Assess whether the simulated values come from a Poisson distribution: out = chi2gof( freqs, 'poisson', lambda ); +// returns {...} + console.log( out ); console.log( '' ); console.log( out.print() ); From 796dd3486452eb68fc036cb71085aa8a140e5ffe Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 17:11:34 -0700 Subject: [PATCH 0794/1062] Add emphasis --- lib/node_modules/@stdlib/stats/chi2gof/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/README.md b/lib/node_modules/@stdlib/stats/chi2gof/README.md index 3234fa04de09..ea13cbb10139 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/README.md +++ b/lib/node_modules/@stdlib/stats/chi2gof/README.md @@ -32,7 +32,7 @@ var chi2gof = require( '@stdlib/stats/chi2gof' ); #### chi2gof( x, y\[, ...args]\[, opts] ) -Computes a chi-square goodness-of-fit test for the null hypothesis that the values of `x` come from the discrete probability distribution specified by `y`. +Computes a chi-square goodness-of-fit test for the **null hypothesis** that the values of `x` come from the discrete probability distribution specified by `y`. ```javascript // Observed counts: From 3854620d80b6dc61d27e443f0ca80ddb871ace8e Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 18:01:50 -0700 Subject: [PATCH 0795/1062] Add comment --- lib/node_modules/@stdlib/stats/chi2gof/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js index 9e666d57eb9f..47e34d736273 100644 --- a/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js +++ b/lib/node_modules/@stdlib/stats/chi2gof/lib/main.js @@ -126,7 +126,7 @@ function chi2gof( x, y ) { for ( i = 0; i < len; i++ ) { args[ 0 ] = i; if ( y === 'discrete-uniform' ) { - args[ 0 ] += args[ 1 ]; + args[ 0 ] += args[ 1 ]; // scales the value at which to evaluate the PMF based on the minimum support of the distribution (which should have been provided as the first distribution parameter) } v = pmf.apply( null, args ); psum += v; From 3df4f01db6627c3d5ec43b7260644d11b121dcdc Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 19:02:45 -0700 Subject: [PATCH 0796/1062] Document options and property --- .../@stdlib/random/base/beta/docs/repl.txt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt b/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt index a703c5ff6b4a..d7503a90bbb8 100644 --- a/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/beta/docs/repl.txt @@ -45,8 +45,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -91,6 +104,14 @@ > var seed = {{alias}}.seed; +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. From d0a992e88d95e1ebfaf27a63d3c4a80cdaf72733 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 19:05:31 -0700 Subject: [PATCH 0797/1062] Document options and property --- .../@stdlib/random/base/beta/README.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/beta/README.md b/lib/node_modules/@stdlib/random/base/beta/README.md index 429c1fd0023a..bf25e600b191 100644 --- a/lib/node_modules/@stdlib/random/base/beta/README.md +++ b/lib/node_modules/@stdlib/random/base/beta/README.md @@ -98,6 +98,8 @@ r = rand( 3.14, 2.25 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -120,6 +122,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = beta(); +} + +// Create a new PRNG initialized to the current state of `beta`: +rand = beta.factory({ + 'state': beta.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand() === beta() ); +// returns true +``` + #### beta.NAME The generator name. @@ -161,6 +186,15 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### beta.seedLength + +Length of generator seed. + +```javascript +var len = beta.seedLength; +// returns +``` + #### beta.state Writable property for getting and setting the generator state. @@ -219,6 +253,17 @@ var sz = beta.byteLength; +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -280,6 +325,8 @@ for ( i = 0; i < 100; i++ ) { [@joehnk:1964]: http://eudml.org/doc/175224 +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From e01e232e4dfb3d7de20f61d277ccefc1a8d01d3a Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 19:51:38 -0700 Subject: [PATCH 0798/1062] Refactor to support shared state --- .../random/base/arcsine/lib/factory.js | 2 +- .../@stdlib/random/base/beta/lib/factory.js | 143 ++++++++++++------ 2 files changed, 95 insertions(+), 50 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js b/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js index 385fea946b92..1278ef6cb4d9 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js @@ -44,7 +44,7 @@ var arcsine0 = require( './arcsine.js' ); * @throws {TypeError} `a` must be a number * @throws {TypeError} `b` must be a number * @throws {RangeError} `a` must be less than `b` -* @throws {TypeError} options must be an object +* @throws {TypeError} options argument must be an object * @throws {TypeError} must provide valid options * @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator diff --git a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js index e0eab93d6608..493613ebdcdf 100644 --- a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js @@ -20,16 +20,17 @@ // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); -var isUint32Array = require( '@stdlib/assert/is-uint32array' ); -var minstd = require( '@stdlib/random/base/minstd-shuffle' ).factory; var randn = require( '@stdlib/random/base/improved-ziggurat' ).factory; var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var gcopy = require( '@stdlib/blas/base/gcopy' ).ndarray; +var gcopy = require( '@stdlib/blas/base/gcopy' ); var Uint32Array = require( '@stdlib/array/uint32' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var copy = require( '@stdlib/utils/copy' ); var validate = require( './validate.js' ); var beta0 = require( './beta.js' ); @@ -42,10 +43,14 @@ var beta0 = require( './beta.js' ); * @param {PositiveNumber} [alpha] - first shape parameter * @param {PositiveNumber} [beta] - second shape parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `alpha` must be a positive number * @throws {TypeError} `beta` must be a positive number -* @throws {TypeError} `options` must be an object +* @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -61,24 +66,34 @@ var beta0 = require( './beta.js' ); * // returns */ function factory() { - var randint; + var STATE; var rnorm; var alpha; var beta; var opts; var rand; var prng; + var FLG; var err; - var N; - var M; + FLG = true; if ( arguments.length === 0 ) { - rand = randu(); + opts = { + 'copy': false + }; + rand = randu( opts ); } else if ( arguments.length === 1 ) { opts = arguments[ 0 ]; if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } + opts = copy( opts, 1 ); + if ( opts.copy === false ) { + FLG = false; + } else if ( opts.state ) { + opts.state = gcopy( opts.state.length, opts.state, 1, new Uint32Array( opts.state.length ), 1 ); // eslint-disable-line max-len + } + opts.copy = false; rand = randu( opts ); } else { alpha = arguments[ 0 ]; @@ -92,61 +107,96 @@ function factory() { if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } + opts = copy( opts, 1 ); + if ( opts.copy === false ) { + FLG = false; + } else if ( opts.state ) { + opts.state = gcopy( opts.state.length, opts.state, 1, new Uint32Array( opts.state.length ), 1 ); // eslint-disable-line max-len + } + opts.copy = false; rand = randu( opts ); } else { - rand = randu(); + opts = { + 'copy': false + }; + rand = randu( opts ); } } rand = rand.normalized; - - randint = minstd({ - 'seed': ( rand.seed[0]%(minstd.MAX+1) ) || 1 - }); + if ( opts.state ) { + STATE = opts.state; + } else { + STATE = rand.state; + rand.state = STATE; // updates the underlying PRNG to point to a shared state + } rnorm = randn({ - 'seed': randint() + 'state': STATE, + 'copy': false }); - N = rand.stateLength; - M = rnorm.stateLength; - if ( alpha === void 0 ) { prng = beta2; } else { prng = beta1; } setReadOnly( prng, 'NAME', 'beta' ); - setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - setReadOnly( prng, 'stateLength', N+M ); - setReadOnly( prng, 'byteLength', prng.stateLength*4 ); // 4 bytes per uint32 + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; /** - * Returns the current pseudorandom number generator state. + * Returns the PRNG seed. * * @private - * @returns {Uint32Array} current state + * @returns {Uint32Array} seed */ - function getState() { - var out; - var s1; - var s2; + function getSeed() { + return rand.seed; + } - s1 = rand.state; - s2 = rnorm.state; + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } - out = new Uint32Array( N+M ); - gcopy( N, s1, 1, 0, out, 1, 0 ); - gcopy( M, s2, 1, 0, out, 1, N ); + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } - return out; + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; } /** @@ -155,21 +205,16 @@ function factory() { * @private * @param {Uint32Array} s - generator state * @throws {TypeError} must provide a `Uint32Array` - * @throws {RangeError} must provide a `Uint32Array` having an expected length + * @throws {Error} must provide a valid state */ function setState( s ) { - var buf; - var o; if ( !isUint32Array( s ) ) { throw new TypeError( 'invalid argument. Must provide a Uint32Array. Value: `' + s + '`.' ); } - if ( s.length !== N+M ) { - throw new RangeError( 'invalid argument. The provided array has an unexpected length.' ); + if ( FLG ) { + s = gcopy( s.length, s, 1, new Uint32Array( s.length ), 1 ); } - buf = s.buffer; - o = s.byteOffset; - rand.state = new Uint32Array( buf, o, N ); - rnorm.state = new Uint32Array( buf, o+(N*s.BYTES_PER_ELEMENT), M ); + rand.state = s; } /** From 6037391b25d85edcbe17baed978b5263bfdfa7eb Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 19:53:19 -0700 Subject: [PATCH 0799/1062] Update tests --- .../@stdlib/random/base/beta/test/test.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/beta/test/test.js b/lib/node_modules/@stdlib/random/base/beta/test/test.js index a3a5647115c1..cbd4b4accce2 100644 --- a/lib/node_modules/@stdlib/random/base/beta/test/test.js +++ b/lib/node_modules/@stdlib/random/base/beta/test/test.js @@ -34,37 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof beta.factory, 'function', 'has `factory` method' ); + t.equal( typeof beta.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( beta.NAME, 'beta', 'has `NAME` property' ); + t.equal( beta.NAME, 'beta', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof beta.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof beta.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( beta.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( beta.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof beta.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( beta.state ), true, 'has `state` property' ); + t.equal( isUint32Array( beta.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof beta.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof beta.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof beta.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof beta.byteLength, 'number', 'has property' ); t.end(); }); From 04327fcff84b4c6725842c83240afb58a29ccc5c Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 20:08:14 -0700 Subject: [PATCH 0800/1062] Add assertions and update tests --- .../@stdlib/random/base/beta/lib/factory.js | 14 + .../random/base/beta/test/test.factory.js | 683 +++++++++++++----- 2 files changed, 504 insertions(+), 193 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js index 493613ebdcdf..acc44b039ce2 100644 --- a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js @@ -24,6 +24,8 @@ var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); var randn = require( '@stdlib/random/base/improved-ziggurat' ).factory; var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -87,6 +89,12 @@ function factory() { if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } + if ( hasOwnProp( opts, 'copy' ) && !isBoolean( opts.copy ) ) { + throw new TypeError( 'invalid option. `copy` option must be a boolean. Option: `' + opts.copy + '`.' ); + } + if ( hasOwnProp( opts, 'state' ) && !isUint32Array( opts.state ) ) { + throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + opts.state + '`.' ); + } opts = copy( opts, 1 ); if ( opts.copy === false ) { FLG = false; @@ -107,6 +115,12 @@ function factory() { if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } + if ( hasOwnProp( opts, 'copy' ) && !isBoolean( opts.copy ) ) { + throw new TypeError( 'invalid option. `copy` option must be a boolean. Option: `' + opts.copy + '`.' ); + } + if ( hasOwnProp( opts, 'state' ) && !isUint32Array( opts.state ) ) { + throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + opts.state + '`.' ); + } opts = copy( opts, 1 ); if ( opts.copy === false ) { FLG = false; diff --git a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js index 185e2d2eef6a..cc3b356eceec 100644 --- a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js @@ -26,6 +26,7 @@ var kstest = require( '@stdlib/stats/kstest' ); var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -45,6 +46,263 @@ tape( 'main export is a function', function test( t ) { t.end(); }); +tape( 'the function throws an error if `alpha` is not a positive number', function test( t ) { + var values; + var i; + + values = [ + -2.0, + 0.0, + '5', + null, + true, + false, + void 0, + NaN, + [], + {}, + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( value, 2.0 ); + }; + } +}); + +tape( 'the function throws an error if `beta` is not a positive number', function test( t ) { + var values; + var i; + + values = [ + -2.0, + 0.0, + '5', + null, + true, + false, + void 0, + NaN, + [], + {}, + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 2.0, value ); + }; + } +}); + +tape( 'the function throws an error if provided an options argument which is not an object (no other arguments)', function test( t ) { + var values; + var i; + + values = [ + 'abc', + 5, + null, + true, + false, + void 0, + NaN, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( value ); + }; + } +}); + +tape( 'the function throws an error if provided an options argument which is not an object (other arguments)', function test( t ) { + var values; + var i; + + values = [ + 'abc', + 5, + null, + true, + false, + void 0, + NaN, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 1.0, 1.0, value ); + }; + } +}); + +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { var beta; var r; @@ -52,12 +310,12 @@ tape( 'the function returns a pseudorandom number generator (no seed)', function // When binding distribution parameters... beta = factory( 2.0, 2.0 ); - for ( i = 0; i < 400; i++ ) { + for ( i = 0; i < 100; i++ ) { r = beta(); t.equal( typeof r, 'number', 'returns a number' ); } beta = factory( 30.0, 30.0 ); - for ( i = 0; i < 400; i++ ) { + for ( i = 0; i < 100; i++ ) { r = beta(); t.equal( typeof r, 'number', 'returns a number' ); } @@ -91,7 +349,7 @@ tape( 'the function returns a seeded pseudorandom number generator (alpha,beta < t.notEqual( beta1, beta2, 'separate generators' ); - for ( i = 0; i < 1e3; i++ ) { + for ( i = 0; i < 1e2; i++ ) { r1 = beta1(); r2 = beta2(); t.equal( r1, r2, 'both return same number: '+r1 ); @@ -118,7 +376,7 @@ tape( 'the function returns a seeded pseudorandom number generator (alpha = beta t.notEqual( beta1, beta2, 'separate generators' ); - for ( i = 0; i < 1e3; i++ ) { + for ( i = 0; i < 1e2; i++ ) { r1 = beta1(); r2 = beta2(); t.equal( r1, r2, 'both return same number: '+r1 ); @@ -145,222 +403,103 @@ tape( 'the function returns a seeded pseudorandom number generator (alpha != bet t.notEqual( beta1, beta2, 'separate generators' ); - for ( i = 0; i < 1e3; i++ ) { + for ( i = 0; i < 1e2; i++ ) { r1 = beta1(); - r2 = beta2(); - t.equal( r1, r2, 'both return same number: '+r1 ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var beta = factory(); - t.equal( beta.NAME, 'beta', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var beta = factory(); - t.equal( typeof beta.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var beta = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( beta.seed ), true, 'has `seed` property' ); - t.equal( beta.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - -tape( 'attached to the return function is the generator state', function test( t ) { - var beta = factory(); - t.equal( isUint32Array( beta.state ), true, 'has `state` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state length', function test( t ) { - var beta = factory(); - t.equal( typeof beta.stateLength, 'number', 'has `stateLength` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state size', function test( t ) { - var beta = factory(); - t.equal( typeof beta.byteLength, 'number', 'has `byteLength` property' ); - t.end(); -}); - -tape( 'if the `state` property is set to a value other than a Uint32Array, an error is thrown', function test( t ) { - var values; - var beta; - var i; - - beta = factory(); - - values = [ - '3', - 3, - NaN, - true, - false, - null, - void 0, - [], - {}, - function noop() {} - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when set to '+values[i] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - beta.state = value; - }; - } -}); - -tape( 'if the `state` property is set to an Uint32Array having an unexpected length, an error is thrown', function test( t ) { - var values; - var beta; - var i; - - beta = factory(); - - values = [ - new Uint32Array( 0 ), - new Uint32Array( 10 ), - new Uint32Array( 1000 ) - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), RangeError, 'throws an error when set to '+values[i] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - beta.state = value; - }; + r2 = beta2(); + t.equal( r1, r2, 'both return same number: '+r1 ); } + t.end(); }); -tape( 'the function throws an error if `alpha` is not a positive number', function test( t ) { - var values; +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var beta1; + var beta2; + var seed; + var r1; + var r2; var i; - values = [ - -2.0, - 0.0, - '5', - null, - true, - false, - void 0, - NaN, - [], - {}, - function noop() {} - ]; + seed = [ 1234, 5678 ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } - t.end(); + beta1 = factory( 2.0, 2.0, { + 'seed': seed + }); + beta2 = factory( 2.0, 2.0, { + 'seed': seed + }); - function badValue( value ) { - return function badValue() { - factory( value, 2.0 ); - }; + t.notEqual( beta1, beta2, 'separate generators' ); + + for ( i = 0; i < 1e2; i++ ) { + r1 = beta1(); + r2 = beta2(); + t.equal( r1, r2, 'both return same number: '+r1 ); } + t.end(); }); -tape( 'the function throws an error if `beta` is not a positive number', function test( t ) { - var values; - var i; - - values = [ - -2.0, - 0.0, - '5', - null, - true, - false, - void 0, - NaN, - [], - {}, - function noop() {} - ]; +tape( 'attached to the returned function is the generator name', function test( t ) { + var beta = factory(); + t.equal( beta.NAME, 'beta', 'has property' ); + t.end(); +}); - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var beta = factory(); + t.equal( typeof beta.PRNG, 'function', 'has property' ); t.end(); +}); - function badValue( value ) { - return function badValue() { - factory( 2.0, value ); - }; - } +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var beta = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( beta.seed ), true, 'has property' ); + t.equal( beta.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); }); -tape( 'the function throws an error if provided an options argument which is not an object (no other arguments)', function test( t ) { - var values; +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; var i; - values = [ - 'abc', - 5, - null, - true, - false, - void 0, - NaN, - [], - function noop() {} - ]; + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } t.end(); - - function badValue( value ) { - return function badValue() { - factory( value ); - }; - } }); -tape( 'the function throws an error if provided an options argument which is not an object (other arguments)', function test( t ) { - var values; - var i; +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var beta = factory(); + t.equal( typeof beta.seedLength, 'number', 'has property' ); + t.end(); +}); - values = [ - 'abc', - 5, - null, - true, - false, - void 0, - NaN, - [], - function noop() {} - ]; +tape( 'attached to the return function is the generator state', function test( t ) { + var beta = factory(); + t.equal( isUint32Array( beta.state ), true, 'has property' ); + t.end(); +}); - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } +tape( 'attached to the returned function is the generator state length', function test( t ) { + var beta = factory(); + t.equal( typeof beta.stateLength, 'number', 'has property' ); t.end(); +}); - function badValue( value ) { - return function badValue() { - factory( 1.0, 1.0, value ); - }; - } +tape( 'attached to the returned function is the generator state size', function test( t ) { + var beta = factory(); + t.equal( typeof beta.byteLength, 'number', 'has property' ); + t.end(); }); tape( 'when called without arguments, the function returns a PRNG that returns `NaN` if provided a first argument which is `NaN`', function test( t ) { @@ -426,6 +565,61 @@ tape( 'when called without arguments, the function returns a PRNG that returns ` t.end(); }); +tape( 'if the `state` property is set to a value other than a Uint32Array, an error is thrown', function test( t ) { + var values; + var beta; + var i; + + beta = factory(); + + values = [ + '3', + 3, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when set to '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + beta.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Uint32Array having an unexpected length, an error is thrown', function test( t ) { + var values; + var beta; + var i; + + beta = factory(); + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 1000 ) + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when set to '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + beta.state = value; + }; + } +}); + tape( 'the function returns a PRNG for generating random numbers from a beta distribution (when `alpha > 1` and `beta > 1`)', opts, function test( t ) { var threshold; var count; @@ -598,6 +792,109 @@ tape( 'the returned function supports setting the generator state (alpha,beta <= t.end(); }); +tape( 'the function supports specifying the generator state', function test( t ) { + var state; + var beta; + var arr; + var i; + + beta = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + beta(); + } + // Capture the current state: + state = beta.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( beta() ); + } + + // Create another PRNG using the captured state: + beta = factory( 2.0, 4.0, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( beta(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var shared; + var state; + var rand1; + var rand2; + var beta; + var arr; + var v1; + var v2; + var i; + var j; + + beta = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + beta(); + } + // Capture the current state: + state = beta.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( beta() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + tape( 'the returned function supports setting the generator state (alpha != beta > 1.0)', function test( t ) { var state; var beta; From 83fd94e88a2205c25549e4bc15f09e40893a5f0f Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 20:12:07 -0700 Subject: [PATCH 0801/1062] Add tests --- .../random/base/beta/test/test.factory.js | 141 ++++++++++++++++++ 1 file changed, 141 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js index cc3b356eceec..90842e761203 100644 --- a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js @@ -191,6 +191,35 @@ tape( 'if provided a `copy` option which is not a boolean, the function throws a } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error (other arguments)', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 2.0, 4.0, { + 'copy': value + }); + }; + } +}); + tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { var values; var i; @@ -224,6 +253,39 @@ tape( 'if provided a `seed` which is not a positive integer or a non-empty array } }); +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error (other arguments)', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 2.0, 4.0, { + 'seed': value + }); + }; + } +}); + tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { var values; var i; @@ -248,6 +310,30 @@ tape( 'the function throws a range error if provided a `seed` which is integer g } }); +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer (other arguments)', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 2.0, 4.0, { + 'seed': value + }); + }; + } +}); + tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { var values; var i; @@ -279,6 +365,37 @@ tape( 'if provided a `state` option which is not a Uint32Array, the function thr } }); +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error (other arguments)', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 2.0, 4.0, { + 'state': value + }); + }; + } +}); + tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { var values; var i; @@ -303,6 +420,30 @@ tape( 'if provided an invalid `state` option, the function throws an error', fun } }); +tape( 'if provided an invalid `state` option, the function throws an error (other arguments)', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 2.0, 4.0, { + 'state': value + }); + }; + } +}); + tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { var beta; var r; From c28d43be7cc57c092315cdfefa676bf6d7009c6d Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 20:19:47 -0700 Subject: [PATCH 0802/1062] Set PRNG and add tests --- .../@stdlib/random/base/beta/lib/factory.js | 3 +- .../random/base/beta/test/test.factory.js | 90 ++++++++++++++++--- 2 files changed, 81 insertions(+), 12 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js index acc44b039ce2..db75cd554b1b 100644 --- a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js @@ -144,8 +144,7 @@ function factory() { rand.state = STATE; // updates the underlying PRNG to point to a shared state } rnorm = randn({ - 'state': STATE, - 'copy': false + 'prng': rand }); if ( alpha === void 0 ) { diff --git a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js index 90842e761203..0a092cac377c 100644 --- a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js @@ -903,13 +903,13 @@ tape( 'the function returns a PRNG for generating random numbers from a beta dis } }); -tape( 'the returned function supports setting the generator state (alpha,beta <= 1.0)', function test( t ) { +tape( 'the function supports specifying the generator state', function test( t ) { var state; var beta; var arr; var i; - beta = factory( 0.25, 0.75 ); + beta = factory( 2.0, 4.0 ); // Move to a future state... for ( i = 0; i < 100; i++ ) { @@ -923,8 +923,11 @@ tape( 'the returned function supports setting the generator state (alpha,beta <= for ( i = 0; i < 100; i++ ) { arr.push( beta() ); } - // Set the state: - beta.state = state; + + // Create another PRNG using the captured state: + beta = factory( 2.0, 4.0, { + 'state': state + }); // Replay previously generated values... for ( i = 0; i < 100; i++ ) { @@ -933,11 +936,17 @@ tape( 'the returned function supports setting the generator state (alpha,beta <= t.end(); }); -tape( 'the function supports specifying the generator state', function test( t ) { +tape( 'the function supports specifying a shared generator state', function test( t ) { + var shared; var state; + var rand1; + var rand2; var beta; var arr; + var v1; + var v2; var i; + var j; beta = factory( 2.0, 4.0 ); @@ -954,19 +963,50 @@ tape( 'the function supports specifying the generator state', function test( t ) arr.push( beta() ); } - // Create another PRNG using the captured state: - beta = factory( 2.0, 4.0, { - 'state': state + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory({ + 'state': shared, + 'copy': false + }); + rand2 = factory({ + 'state': shared, + 'copy': false }); // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1( 2.0, 4.0 ); + v2 = rand2( 2.0, 4.0 ); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... for ( i = 0; i < 100; i++ ) { - t.equal( beta(), arr[ i ], 'returns expected value. i: '+i+'.' ); + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1( 2.0, 4.0 ); + v2 = rand2( 2.0, 4.0 ); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride } t.end(); }); -tape( 'the function supports specifying a shared generator state', function test( t ) { +tape( 'the function supports specifying a shared generator state (other arguments)', function test( t ) { var shared; var state; var rand1; @@ -1036,6 +1076,36 @@ tape( 'the function supports specifying a shared generator state', function test t.end(); }); +tape( 'the returned function supports setting the generator state (alpha,beta <= 1.0)', function test( t ) { + var state; + var beta; + var arr; + var i; + + beta = factory( 0.25, 0.75 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + beta(); + } + // Capture the current state: + state = beta.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( beta() ); + } + // Set the state: + beta.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( beta(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + tape( 'the returned function supports setting the generator state (alpha != beta > 1.0)', function test( t ) { var state; var beta; From 52d985254a8dac68f82746d6991b463a73f68a3a Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 20:23:14 -0700 Subject: [PATCH 0803/1062] Fix regression --- lib/node_modules/@stdlib/random/base/beta/lib/factory.js | 3 ++- lib/node_modules/@stdlib/random/base/beta/test/test.factory.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js index db75cd554b1b..acc44b039ce2 100644 --- a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js @@ -144,7 +144,8 @@ function factory() { rand.state = STATE; // updates the underlying PRNG to point to a shared state } rnorm = randn({ - 'prng': rand + 'state': STATE, + 'copy': false }); if ( alpha === void 0 ) { diff --git a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js index 0a092cac377c..e2b70671dfe2 100644 --- a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js @@ -988,7 +988,7 @@ tape( 'the function supports specifying a shared generator state', function test // Move to a future state... for ( i = 0; i < 100; i++ ) { - v2 = rand2(); + v2 = rand2( 2.0, 4.0 ); } // Reset the (shared) state: From c75230d97a60e80770ab825248bd6101f8ae5270 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 20:28:26 -0700 Subject: [PATCH 0804/1062] Update tests --- .../@stdlib/random/base/beta/test/test.factory.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js index e2b70671dfe2..9088b33a2382 100644 --- a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js @@ -560,7 +560,7 @@ tape( 'the function returns a seeded pseudorandom number generator (array seed)' var r2; var i; - seed = [ 1234, 5678 ]; + seed = [ now(), now()+1, now()+2, now()+3, now()+4 ]; beta1 = factory( 2.0, 2.0, { 'seed': seed @@ -606,7 +606,7 @@ tape( 'attached to the returned function is the generator seed (array seed)', fu var seed; var i; - seed = [ 1234, 5678 ]; + seed = [ now(), now()+1, now()+2, now()+3 ]; rand = factory({ 'seed': seed }); From abe9191e602e1fd0956c4517ab5bdf1a85c3927b Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 20:29:33 -0700 Subject: [PATCH 0805/1062] Update tests --- .../@stdlib/random/base/beta/test/test.factory.js | 6 +++--- lib/node_modules/@stdlib/random/base/beta/test/test.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js index 9088b33a2382..78b943e23b87 100644 --- a/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/test/test.factory.js @@ -451,19 +451,19 @@ tape( 'the function returns a pseudorandom number generator (no seed)', function // When binding distribution parameters... beta = factory( 2.0, 2.0 ); - for ( i = 0; i < 100; i++ ) { + for ( i = 0; i < 1e3; i++ ) { r = beta(); t.equal( typeof r, 'number', 'returns a number' ); } beta = factory( 30.0, 30.0 ); - for ( i = 0; i < 100; i++ ) { + for ( i = 0; i < 1e3; i++ ) { r = beta(); t.equal( typeof r, 'number', 'returns a number' ); } // Without binding distribution parameters... beta = factory(); - for ( i = 0; i < 100; i++ ) { + for ( i = 0; i < 1e3; i++ ) { r = beta( 2.5, 2.0 ); t.equal( typeof r, 'number', 'returns a number' ); } diff --git a/lib/node_modules/@stdlib/random/base/beta/test/test.js b/lib/node_modules/@stdlib/random/base/beta/test/test.js index cbd4b4accce2..7bce13183785 100644 --- a/lib/node_modules/@stdlib/random/base/beta/test/test.js +++ b/lib/node_modules/@stdlib/random/base/beta/test/test.js @@ -76,7 +76,7 @@ tape( 'attached to the main export is the generator state size', function test( tape( 'the function returns pseudorandom numbers', function test( t ) { var r; var i; - for ( i = 0; i < 1e2; i++ ) { + for ( i = 0; i < 1e3; i++ ) { r = beta( 2.0, 1.0 ); t.strictEqual( typeof r, 'number', 'returns a number' ); t.strictEqual( r >= 0.0, true, 'returns a nonnegative number' ); From 05dd65feb5c526a392306db461a77b0ca8820e32 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 20:33:41 -0700 Subject: [PATCH 0806/1062] Fix example --- lib/node_modules/@stdlib/random/base/beta/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/beta/README.md b/lib/node_modules/@stdlib/random/base/beta/README.md index bf25e600b191..78fc9f087d8b 100644 --- a/lib/node_modules/@stdlib/random/base/beta/README.md +++ b/lib/node_modules/@stdlib/random/base/beta/README.md @@ -132,7 +132,7 @@ var i; // Generate pseudorandom numbers, thus progressing the generator state: for ( i = 0; i < 1000; i++ ) { - r = beta(); + r = beta( 2.0, 4.0 ); } // Create a new PRNG initialized to the current state of `beta`: @@ -141,7 +141,7 @@ rand = beta.factory({ }); // Test that the generated pseudorandom numbers are the same: -bool = ( rand() === beta() ); +bool = ( rand( 2.0, 4.0 ) === beta( 2.0, 4.0 ) ); // returns true ``` From 6aa80d8201370bf047a734052b944f14a95b8773 Mon Sep 17 00:00:00 2001 From: kgryte Date: Wed, 10 Oct 2018 20:34:46 -0700 Subject: [PATCH 0807/1062] Fix examples --- lib/node_modules/@stdlib/random/base/arcsine/README.md | 4 ++-- lib/node_modules/@stdlib/random/base/bernoulli/README.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/arcsine/README.md b/lib/node_modules/@stdlib/random/base/arcsine/README.md index f9d8fa4d6f38..27661d24d48f 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/README.md +++ b/lib/node_modules/@stdlib/random/base/arcsine/README.md @@ -125,7 +125,7 @@ var i; // Generate pseudorandom numbers, thus progressing the generator state: for ( i = 0; i < 1000; i++ ) { - r = arcsine(); + r = arcsine( 2.0, 4.0 ); } // Create a new PRNG initialized to the current state of `arcsine`: @@ -134,7 +134,7 @@ rand = arcsine.factory({ }); // Test that the generated pseudorandom numbers are the same: -bool = ( rand() === arcsine() ); +bool = ( rand( 2.0, 4.0 ) === arcsine( 2.0, 4.0 ) ); // returns true ``` diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/README.md b/lib/node_modules/@stdlib/random/base/bernoulli/README.md index 6e528bf3d6ec..db7a2b79679e 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/README.md +++ b/lib/node_modules/@stdlib/random/base/bernoulli/README.md @@ -128,7 +128,7 @@ var i; // Generate pseudorandom numbers, thus progressing the generator state: for ( i = 0; i < 1000; i++ ) { - r = bernoulli(); + r = bernoulli( 0.2 ); } // Create a new PRNG initialized to the current state of `bernoulli`: @@ -137,7 +137,7 @@ rand = bernoulli.factory({ }); // Test that the generated pseudorandom numbers are the same: -bool = ( rand() === bernoulli() ); +bool = ( rand( 0.2 ) === bernoulli( 0.2 ) ); // returns true ``` From 27497c5f73f8b731cf6dfb7bf137cc607a94bdf9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 15:25:54 -0700 Subject: [PATCH 0808/1062] Document options and property --- .../random/base/betaprime/docs/repl.txt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt b/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt index c9b39b5b5e04..b4b03d2f0f4c 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/betaprime/docs/repl.txt @@ -45,8 +45,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -91,6 +104,14 @@ > var seed = {{alias}}.seed; +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. From 57a9aab3e1dbfc41353192693de27d8757ffd3fb Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 15:28:11 -0700 Subject: [PATCH 0809/1062] Document options and property --- .../@stdlib/random/base/betaprime/README.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/betaprime/README.md b/lib/node_modules/@stdlib/random/base/betaprime/README.md index 718c041711aa..a53e4ae4f334 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/README.md +++ b/lib/node_modules/@stdlib/random/base/betaprime/README.md @@ -98,6 +98,8 @@ r = rand( 3.14, 2.25 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -120,6 +122,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = betaprime( 2.0, 3.0 ); +} + +// Create a new PRNG initialized to the current state of `betaprime`: +rand = betaprime.factory({ + 'state': betaprime.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 2.0, 3.0 ) === betaprime( 2.0, 3.0 ) ); +// returns true +``` + #### betaprime.NAME The generator name. @@ -161,6 +186,15 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### betaprime.seedLength + +Length of generator seed. + +```javascript +var len = betaprime.seedLength; +// returns +``` + #### betaprime.state Writable property for getting and setting the generator state. @@ -219,6 +253,17 @@ var sz = betaprime.byteLength; +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -263,6 +308,8 @@ for ( i = 0; i < 100; i++ ) { [betaprime]: https://en.wikipedia.org/wiki/Beta_prime_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From cb153daaec50ad6a25359b7f37ac79c0323c5328 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 15:31:46 -0700 Subject: [PATCH 0810/1062] Add support for additional properties and document options --- .../random/base/betaprime/lib/factory.js | 67 +++++++++++++++---- 1 file changed, 55 insertions(+), 12 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js b/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js index ee211325efd2..3bdeb8233a08 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js @@ -20,8 +20,9 @@ // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var gammaFactory = require( '@stdlib/random/base/gamma' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -37,10 +38,14 @@ var betaprime0 = require( './betaprime.js' ); * @param {PositiveNumber} [alpha] - first shape parameter * @param {PositiveNumber} [beta] - second shape parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `alpha` must be a positive number * @throws {TypeError} `beta` must be a positive number -* @throws {TypeError} `options` must be an object +* @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -94,19 +99,55 @@ function factory() { prng = betaprime1; } setReadOnly( prng, 'NAME', 'betaprime' ); - setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - setReadOnly( prng, 'stateLength', rand.stateLength ); - setReadOnly( prng, 'byteLength', rand.byteLength ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + /** * Returns the current pseudorandom number generator state. * @@ -122,6 +163,8 @@ function factory() { * * @private * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state */ function setState( s ) { rand.state = s; From 408a4d3f1b7050c1d161594976e78b82401edca7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 15:33:37 -0700 Subject: [PATCH 0811/1062] Update tests --- .../random/base/betaprime/test/test.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/betaprime/test/test.js b/lib/node_modules/@stdlib/random/base/betaprime/test/test.js index 51c385261e76..e8d00dd12040 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/test/test.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/test/test.js @@ -34,37 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof betaprime.factory, 'function', 'has `factory` method' ); + t.equal( typeof betaprime.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( betaprime.NAME, 'betaprime', 'has `NAME` property' ); + t.equal( betaprime.NAME, 'betaprime', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof betaprime.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof betaprime.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( betaprime.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( betaprime.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof betaprime.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( betaprime.state ), true, 'has `state` property' ); + t.equal( isUint32Array( betaprime.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof betaprime.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof betaprime.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof betaprime.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof betaprime.byteLength, 'number', 'has property' ); t.end(); }); From dbd21b7851f7b5de3d0570e75f9c7ba314b8ced4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 15:41:50 -0700 Subject: [PATCH 0812/1062] Update tests --- .../base/betaprime/test/test.factory.js | 540 ++++++++++++++---- 1 file changed, 419 insertions(+), 121 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js b/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js index 45cd94096787..44b18563df09 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/test/test.factory.js @@ -26,6 +26,8 @@ var kstest = require( '@stdlib/stats/kstest' ); var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,6 +46,263 @@ tape( 'main export is a function', function test( t ) { t.end(); }); +tape( 'the function throws an error if `alpha` is not a positive number', function test( t ) { + var values; + var i; + + values = [ + -2.0, + 0.0, + '5', + null, + true, + false, + void 0, + NaN, + [], + {}, + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( value, 2.0 ); + }; + } +}); + +tape( 'the function throws an error if `beta` is not a positive number', function test( t ) { + var values; + var i; + + values = [ + -2.0, + 0.0, + '5', + null, + true, + false, + void 0, + NaN, + [], + {}, + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 2.0, value ); + }; + } +}); + +tape( 'the function throws an error if provided an options argument which is not an object (no other arguments)', function test( t ) { + var values; + var i; + + values = [ + 'abc', + 5, + null, + true, + false, + void 0, + NaN, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( value ); + }; + } +}); + +tape( 'the function throws an error if provided an options argument which is not an object (other arguments)', function test( t ) { + var values; + var i; + + values = [ + 'abc', + 5, + null, + true, + false, + void 0, + NaN, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 1.0, 1.0, value ); + }; + } +}); + +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { var betaprime; var r; @@ -152,159 +411,95 @@ tape( 'the function returns a seeded pseudorandom number generator (alpha != bet t.end(); }); -tape( 'attached to the returned function is the generator name', function test( t ) { - var betaprime = factory(); - t.equal( betaprime.NAME, 'betaprime', 'has `NAME` property' ); - t.end(); -}); +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var betaprime1; + var betaprime2; + var seed; + var r1; + var r2; + var i; -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var betaprime = factory(); - t.equal( typeof betaprime.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); + seed = [ now()+1, now()+2, now()+3 ]; -tape( 'attached to the returned function is the generator seed', function test( t ) { - var betaprime = factory({ - 'seed': 12345 + betaprime1 = factory( 0.5, 0.5, { + 'seed': seed }); - t.equal( isUint32Array( betaprime.seed ), true, 'has `seed` property' ); - t.equal( betaprime.seed[ 0 ], 12345, 'equal to provided seed' ); + betaprime2 = factory( 0.5, 0.5, { + 'seed': seed + }); + + t.notEqual( betaprime1, betaprime2, 'separate generators' ); + + for ( i = 0; i < 1e3; i++ ) { + r1 = betaprime1(); + r2 = betaprime2(); + t.equal( r1, r2, 'both return same number: '+r1 ); + } t.end(); }); -tape( 'attached to the returned function is the generator state', function test( t ) { +tape( 'attached to the returned function is the generator name', function test( t ) { var betaprime = factory(); - t.equal( isUint32Array( betaprime.state ), true, 'has `state` property' ); + t.equal( betaprime.NAME, 'betaprime', 'has property' ); t.end(); }); -tape( 'attached to the returned function is the generator state length', function test( t ) { +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { var betaprime = factory(); - t.equal( typeof betaprime.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof betaprime.PRNG, 'function', 'has property' ); t.end(); }); -tape( 'attached to the returned function is the generator state size', function test( t ) { - var betaprime = factory(); - t.equal( typeof betaprime.byteLength, 'number', 'has `byteLength` property' ); +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var betaprime = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( betaprime.seed ), true, 'has property' ); + t.equal( betaprime.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); -tape( 'the function throws an error if `alpha` is not a positive number', function test( t ) { - var values; +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; var i; - values = [ - -2.0, - 0.0, - '5', - null, - true, - false, - void 0, - NaN, - [], - {}, - function noop() {} - ]; + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } t.end(); - - function badValue( value ) { - return function badValue() { - factory( value, 2.0 ); - }; - } }); -tape( 'the function throws an error if `beta` is not a positive number', function test( t ) { - var values; - var i; - - values = [ - -2.0, - 0.0, - '5', - null, - true, - false, - void 0, - NaN, - [], - {}, - function noop() {} - ]; - - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var betaprime = factory(); + t.equal( typeof betaprime.seedLength, 'number', 'has property' ); t.end(); - - function badValue( value ) { - return function badValue() { - factory( 2.0, value ); - }; - } }); -tape( 'the function throws an error if provided an options argument which is not an object (no other arguments)', function test( t ) { - var values; - var i; - - values = [ - 'abc', - 5, - null, - true, - false, - void 0, - NaN, - [], - function noop() {} - ]; - - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } +tape( 'attached to the returned function is the generator state', function test( t ) { + var betaprime = factory(); + t.equal( isUint32Array( betaprime.state ), true, 'has property' ); t.end(); - - function badValue( value ) { - return function badValue() { - factory( value ); - }; - } }); -tape( 'the function throws an error if provided an options argument which is not an object (other arguments)', function test( t ) { - var values; - var i; - - values = [ - 'abc', - 5, - null, - true, - false, - void 0, - NaN, - [], - function noop() {} - ]; - - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } +tape( 'attached to the returned function is the generator state length', function test( t ) { + var betaprime = factory(); + t.equal( typeof betaprime.stateLength, 'number', 'has property' ); t.end(); +}); - function badValue( value ) { - return function badValue() { - factory( 1.0, 1.0, value ); - }; - } +tape( 'attached to the returned function is the generator state size', function test( t ) { + var betaprime = factory(); + t.equal( typeof betaprime.byteLength, 'number', 'has property' ); + t.end(); }); tape( 'when called without arguments, the function returns a PRNG that returns `NaN` if provided a first argument which is `NaN`', function test( t ) { @@ -441,6 +636,109 @@ tape( 'the function returns a PRNG for generating random numbers from a beta pri } }); +tape( 'the function supports specifying the generator state', function test( t ) { + var betaprime; + var state; + var arr; + var i; + + betaprime = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + betaprime(); + } + // Capture the current state: + state = betaprime.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( betaprime() ); + } + + // Create another PRNG using the captured state: + betaprime = factory( 2.0, 4.0, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( betaprime(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var betaprime; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + betaprime = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + betaprime(); + } + // Capture the current state: + state = betaprime.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( betaprime() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + tape( 'the returned function supports setting the generator state', function test( t ) { var betaprime; var state; From fa57b48a1a5e7dd7ee3cfc9c43e6b5e95f7e2fea Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 15:43:39 -0700 Subject: [PATCH 0813/1062] Document options and property --- .../@stdlib/random/base/gamma/docs/repl.txt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt b/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt index e29aea07a5cb..db5b943b181b 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/gamma/docs/repl.txt @@ -45,8 +45,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -91,6 +104,14 @@ > var seed = {{alias}}.seed; +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. From b9d93a629d095366e2a133ec9e4b82b0fb4f1f66 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 15:45:57 -0700 Subject: [PATCH 0814/1062] Document options and property --- .../@stdlib/random/base/gamma/README.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/gamma/README.md b/lib/node_modules/@stdlib/random/base/gamma/README.md index 6e554aee8253..e5e35d32222f 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/README.md +++ b/lib/node_modules/@stdlib/random/base/gamma/README.md @@ -98,6 +98,8 @@ r = rand( 3.14, 2.25 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -120,6 +122,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = gamma( 2.0, 3.0 ); +} + +// Create a new PRNG initialized to the current state of `gamma`: +rand = gamma.factory({ + 'state': gamma.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 2.0, 3.0 ) === gamma( 2.0, 3.0 ) ); +// returns true +``` + #### gamma.NAME The generator name. @@ -161,6 +186,15 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### gamma.seedLength + +Length of generator seed. + +```javascript +var len = gamma.seedLength; +// returns +``` + #### gamma.state Writable property for getting and setting the generator state. @@ -219,6 +253,17 @@ var sz = gamma.byteLength; +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -277,6 +322,8 @@ for ( i = 0; i < 100; i++ ) { [@marsaglia:2000a]: http://dx.doi.org/10.1145/358407.358414 +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From c0d3a75877ab26b57bfecaf8c9ed3dea7b30997e Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 15:47:52 -0700 Subject: [PATCH 0815/1062] Reorder statements --- lib/node_modules/@stdlib/random/base/gamma/lib/gamma.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/gamma/lib/gamma.js b/lib/node_modules/@stdlib/random/base/gamma/lib/gamma.js index fc2f62891133..c67dcafffdc4 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/lib/gamma.js +++ b/lib/node_modules/@stdlib/random/base/gamma/lib/gamma.js @@ -52,10 +52,10 @@ function gamma( randu, randn, beta, d, c ) { v = 1.0 + (c*x); } while ( v <= 0.0 ); v *= v * v; - u = randu(); x2 = x * x; v0 = 1.0 - (0.331*x2*x2); v1 = (0.5*x2) + (d*( 1.0-v+ln(v) )); + u = randu(); if ( u < v0 || ln( u ) < v1 ) { flg = false; } From c45dbb43bc5cf8bf41e35f44606b1bbe88944491 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 15:55:55 -0700 Subject: [PATCH 0816/1062] Refactor to supporting setting an initial state --- .../@stdlib/random/base/gamma/lib/factory.js | 153 ++++++++++++------ 1 file changed, 106 insertions(+), 47 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js b/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js index 0d9a9718672e..be588feb47ae 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js @@ -20,18 +20,21 @@ // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); var randn = require( '@stdlib/random/base/improved-ziggurat' ).factory; var randu = require( '@stdlib/random/base/mt19937' ).factory; -var minstd = require( '@stdlib/random/base/minstd-shuffle' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); var sqrt = require( '@stdlib/math/base/special/sqrt' ); var pow = require( '@stdlib/math/base/special/pow' ); -var gcopy = require( '@stdlib/blas/base/gcopy' ).ndarray; +var gcopy = require( '@stdlib/blas/base/gcopy' ); var Uint32Array = require( '@stdlib/array/uint32' ); +var copy = require( '@stdlib/utils/copy' ); var validate = require( './validate.js' ); var gamma0 = require( './gamma.js' ); @@ -49,10 +52,14 @@ var ONE_THIRD = 1.0 / 3.0; * @param {PositiveNumber} [alpha] - shape parameter * @param {PositiveNumber} [beta] - rate parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `alpha` must be a positive number * @throws {TypeError} `beta` must be a positive number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -68,26 +75,42 @@ var ONE_THIRD = 1.0 / 3.0; * // returns */ function factory() { + var STATE; var alpha; var rnorm; - var randi; var beta; var opts; var rand; var prng; + var FLG; var err; - var N; - var M; var c; var d; + FLG = true; if ( arguments.length === 0 ) { - rand = randu(); + opts = { + 'copy': false + }; + rand = randu( opts ); } else if ( arguments.length === 1 ) { opts = arguments[ 0 ]; if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } + if ( hasOwnProp( opts, 'copy' ) && !isBoolean( opts.copy ) ) { + throw new TypeError( 'invalid option. `copy` option must be a boolean. Option: `' + opts.copy + '`.' ); + } + if ( hasOwnProp( opts, 'state' ) && !isUint32Array( opts.state ) ) { + throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + opts.state + '`.' ); + } + opts = copy( opts, 1 ); + if ( opts.copy === false ) { + FLG = false; + } else if ( opts.state ) { + opts.state = gcopy( opts.state.length, opts.state, 1, new Uint32Array( opts.state.length ), 1 ); // eslint-disable-line max-len + } + opts.copy = false; rand = randu( opts ); } else { alpha = arguments[ 0 ]; @@ -101,23 +124,39 @@ function factory() { if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } + if ( hasOwnProp( opts, 'copy' ) && !isBoolean( opts.copy ) ) { + throw new TypeError( 'invalid option. `copy` option must be a boolean. Option: `' + opts.copy + '`.' ); + } + if ( hasOwnProp( opts, 'state' ) && !isUint32Array( opts.state ) ) { + throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + opts.state + '`.' ); + } + opts = copy( opts, 1 ); + if ( opts.copy === false ) { + FLG = false; + } else if ( opts.state ) { + opts.state = gcopy( opts.state.length, opts.state, 1, new Uint32Array( opts.state.length ), 1 ); // eslint-disable-line max-len + } + opts.copy = false; rand = randu( opts ); } else { - rand = randu(); + opts = { + 'copy': false + }; + rand = randu( opts ); } } rand = rand.normalized; - - randi = minstd({ - 'seed': ( rand.seed%(minstd.MAX+1) ) || 1 - }); + if ( opts.state ) { + STATE = opts.state; + } else { + STATE = rand.state; + rand.state = STATE; // updates the underlying PRNG to point to a shared state + } rnorm = randn({ - 'seed': randi() + 'state': STATE, + 'copy': false }); - N = rand.stateLength; - M = rnorm.stateLength; - if ( alpha === void 0 ) { prng = gamma2; } else { @@ -131,38 +170,63 @@ function factory() { c = 1.0 / sqrt( 9.0*d ); } setReadOnly( prng, 'NAME', 'gamma' ); - setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - setReadOnly( prng, 'stateLength', N+M ); - setReadOnly( prng, 'byteLength', prng.stateLength*4 ); // 4 bytes per uint32 + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; /** - * Returns the current pseudorandom number generator state. + * Returns the PRNG seed. * * @private - * @returns {Uint32Array} current state + * @returns {Uint32Array} seed */ - function getState() { - var out; - var s1; - var s2; + function getSeed() { + return rand.seed; + } - s1 = rand.state; - s2 = rnorm.state; + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } - out = new Uint32Array( N+M ); - gcopy( N, s1, 1, 0, out, 1, 0 ); - gcopy( M, s2, 1, 0, out, 1, N ); + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } - return out; + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; } /** @@ -171,21 +235,16 @@ function factory() { * @private * @param {Uint32Array} s - generator state * @throws {TypeError} must provide a `Uint32Array` - * @throws {RangeError} must provide a `Uint32Array` having an expected length + * @throws {Error} must provide a valid state */ function setState( s ) { - var buf; - var o; if ( !isUint32Array( s ) ) { throw new TypeError( 'invalid argument. Must provide a Uint32Array. Value: `' + s + '`.' ); } - if ( s.length !== N+M ) { - throw new RangeError( 'invalid argument. The provided array has an unexpected length.' ); + if ( FLG ) { + s = gcopy( s.length, s, 1, new Uint32Array( s.length ), 1 ); } - buf = s.buffer; - o = s.byteOffset; - rand.state = new Uint32Array( buf, o, N ); - rnorm.state = new Uint32Array( buf, o+(N*s.BYTES_PER_ELEMENT), M ); + rand.state = s; } /** From c51a8b28c200dd1ff421b7e9e83399959f302498 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 15:57:45 -0700 Subject: [PATCH 0817/1062] Update tests --- .../@stdlib/random/base/gamma/test/test.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/gamma/test/test.js b/lib/node_modules/@stdlib/random/base/gamma/test/test.js index 38d246501d5a..f6365ee29aeb 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/test/test.js +++ b/lib/node_modules/@stdlib/random/base/gamma/test/test.js @@ -34,37 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof gamma.factory, 'function', 'has `factory` method' ); + t.equal( typeof gamma.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( gamma.NAME, 'gamma', 'has `NAME` property' ); + t.equal( gamma.NAME, 'gamma', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof gamma.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof gamma.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( gamma.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( gamma.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof gamma.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( gamma.state ), true, 'has `state` property' ); + t.equal( isUint32Array( gamma.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof gamma.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof gamma.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof gamma.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof gamma.byteLength, 'number', 'has property' ); t.end(); }); From 2e645b1f5abf2b9f5a5d9978b46cc6cde61a2ebb Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 16:03:47 -0700 Subject: [PATCH 0818/1062] Update tests --- .../random/base/gamma/test/test.factory.js | 806 ++++++++++++++---- 1 file changed, 657 insertions(+), 149 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js b/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js index 26584b266d20..0b6988589e8c 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/gamma/test/test.factory.js @@ -26,6 +26,7 @@ var kstest = require( '@stdlib/stats/kstest' ); var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -45,263 +46,542 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var gamma; - var r; +tape( 'the function throws an error if provided a shape argument which is not a positive number', function test( t ) { + var values; var i; - // When binding distribution parameters... - gamma = factory( 2.0, 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = gamma(); - t.equal( typeof r, 'number', 'returns a number' ); + values = [ + -2.0, + 0.0, + '5', + null, + true, + false, + void 0, + NaN, + [], + {}, + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); } + t.end(); - // Without binding distribution parameters... - gamma = factory(); - for ( i = 0; i < 100; i++ ) { - r = gamma( 2.5, 2.0 ); - t.equal( typeof r, 'number', 'returns a number' ); + function badValue( value ) { + return function badValue() { + factory( value, 2.0 ); + }; } +}); +tape( 'the function throws an error if provided a rate argument which is not a positive number', function test( t ) { + var values; + var i; + + values = [ + -2.0, + 0.0, + '5', + null, + true, + false, + void 0, + NaN, + [], + {}, + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } t.end(); + + function badValue( value ) { + return function badValue() { + factory( 2.0, value ); + }; + } }); -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var gamma1; - var gamma2; - var seed; - var r1; - var r2; +tape( 'the function throws an error if provided an options argument which is not an object (no other arguments)', function test( t ) { + var values; var i; - seed = now(); + values = [ + 'abc', + 5, + null, + true, + false, + void 0, + NaN, + [], + function noop() {} + ]; - gamma1 = factory( 1.0, 1.0, { - 'seed': seed - }); - gamma2 = factory( 1.0, 1.0, { - 'seed': seed - }); + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); - t.notEqual( gamma1, gamma2, 'separate generators' ); + function badValue( value ) { + return function badValue() { + factory( value ); + }; + } +}); - for ( i = 0; i < 100; i++ ) { - r1 = gamma1(); - r2 = gamma2(); - t.equal( r1, r2, 'both return same number' ); +tape( 'the function throws an error if provided an options argument which is not an object (other arguments)', function test( t ) { + var values; + var i; + + values = [ + 'abc', + 5, + null, + true, + false, + void 0, + NaN, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); } t.end(); + + function badValue( value ) { + return function badValue() { + factory( 1.0, 1.0, value ); + }; + } }); -tape( 'attached to the returned function is the generator name', function test( t ) { - var gamma = factory(); - t.equal( gamma.NAME, 'gamma', 'has `NAME` property' ); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } }); -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var gamma = factory(); - t.equal( typeof gamma.PRNG, 'function', 'has `PRNG` property' ); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error (other arguments)', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } t.end(); + + function badValue( value ) { + return function badValue() { + factory( 2.0, 4.0, { + 'copy': value + }); + }; + } }); -tape( 'attached to the returned function is the generator seed', function test( t ) { - var gamma = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( gamma.seed ), true, 'has `seed` property' ); - t.equal( gamma.seed[ 0 ], 12345, 'equal to provided seed' ); +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } }); -tape( 'attached to the return function is the generator state', function test( t ) { - var gamma = factory(); - t.equal( isUint32Array( gamma.state ), true, 'has `state` property' ); +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error (other arguments)', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } t.end(); + + function badValue( value ) { + return function badValue() { + factory( 2.0, 4.0, { + 'seed': value + }); + }; + } }); -tape( 'attached to the returned function is the generator state length', function test( t ) { - var gamma = factory(); - t.equal( typeof gamma.stateLength, 'number', 'has `stateLength` property' ); +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } }); -tape( 'attached to the returned function is the generator state size', function test( t ) { - var gamma = factory(); - t.equal( typeof gamma.byteLength, 'number', 'has `byteLength` property' ); +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer (other arguments)', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } t.end(); + + function badValue( value ) { + return function badValue() { + factory( 2.0, 4.0, { + 'seed': value + }); + }; + } }); -tape( 'if the `state` property is set to a value other than a Uint32Array, an error is thrown', function test( t ) { +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { var values; - var gamma; var i; - gamma = factory(); - values = [ - '3', - 3, + '5', + 5, NaN, true, false, null, void 0, - [], {}, + [], function noop() {} ]; + for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when set to '+values[i] ); + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); } t.end(); function badValue( value ) { return function badValue() { - gamma.state = value; + factory({ + 'state': value + }); }; } }); -tape( 'if the `state` property is set to an Uint32Array having an unexpected length, an error is thrown', function test( t ) { +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error (other arguments)', function test( t ) { var values; - var gamma; var i; - gamma = factory(); + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 2.0, 4.0, { + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; values = [ new Uint32Array( 0 ), new Uint32Array( 10 ), - new Uint32Array( 1000 ) + new Uint32Array( 100 ) ]; + for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), RangeError, 'throws an error when set to '+values[i] ); + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); } t.end(); function badValue( value ) { return function badValue() { - gamma.state = value; + factory({ + 'state': value + }); }; } }); -tape( 'the function throws an error if provided a shape argument which is not a positive number', function test( t ) { +tape( 'if provided an invalid `state` option, the function throws an error (other arguments)', function test( t ) { var values; var i; values = [ - -2.0, - 0.0, - '5', - null, - true, - false, - void 0, - NaN, - [], - {}, - function noop() {} + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) ]; for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); } t.end(); function badValue( value ) { return function badValue() { - factory( value, 2.0 ); + factory( 2.0, 4.0, { + 'state': value + }); }; } }); -tape( 'the function throws an error if provided a rate argument which is not a positive number', function test( t ) { - var values; - var i; - - values = [ - -2.0, - 0.0, - '5', - null, - true, - false, - void 0, - NaN, - [], - {}, - function noop() {} - ]; +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var gamma; + var r; + var i; + + // When binding distribution parameters... + gamma = factory( 2.0, 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = gamma(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + gamma = factory(); + for ( i = 0; i < 100; i++ ) { + r = gamma( 2.5, 2.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var gamma1; + var gamma2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + gamma1 = factory( 1.0, 1.0, { + 'seed': seed + }); + gamma2 = factory( 1.0, 1.0, { + 'seed': seed + }); + + t.notEqual( gamma1, gamma2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = gamma1(); + r2 = gamma2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var gamma1; + var gamma2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3, now()+4 ]; + + gamma1 = factory( 1.0, 1.0, { + 'seed': seed + }); + gamma2 = factory( 1.0, 1.0, { + 'seed': seed + }); + + t.notEqual( gamma1, gamma2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = gamma1(); + r2 = gamma2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var gamma = factory(); + t.equal( gamma.NAME, 'gamma', 'has property' ); + t.end(); +}); - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var gamma = factory(); + t.equal( typeof gamma.PRNG, 'function', 'has property' ); t.end(); +}); - function badValue( value ) { - return function badValue() { - factory( 2.0, value ); - }; - } +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var gamma = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( gamma.seed ), true, 'has property' ); + t.equal( gamma.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); }); -tape( 'the function throws an error if provided an options argument which is not an object (no other arguments)', function test( t ) { - var values; +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; var i; - values = [ - 'abc', - 5, - null, - true, - false, - void 0, - NaN, - [], - function noop() {} - ]; + seed = [ now(), now()+1, now()+2, now()+3 ]; + rand = factory({ + 'seed': seed + }); - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } t.end(); - - function badValue( value ) { - return function badValue() { - factory( value ); - }; - } }); -tape( 'the function throws an error if provided an options argument which is not an object (other arguments)', function test( t ) { - var values; - var i; +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var gamma = factory(); + t.equal( typeof gamma.seedLength, 'number', 'has property' ); + t.end(); +}); - values = [ - 'abc', - 5, - null, - true, - false, - void 0, - NaN, - [], - function noop() {} - ]; +tape( 'attached to the return function is the generator state', function test( t ) { + var gamma = factory(); + t.equal( isUint32Array( gamma.state ), true, 'has property' ); + t.end(); +}); - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } +tape( 'attached to the returned function is the generator state length', function test( t ) { + var gamma = factory(); + t.equal( typeof gamma.stateLength, 'number', 'has property' ); t.end(); +}); - function badValue( value ) { - return function badValue() { - factory( 1.0, 1.0, value ); - }; - } +tape( 'attached to the returned function is the generator state size', function test( t ) { + var gamma = factory(); + t.equal( typeof gamma.byteLength, 'number', 'has property' ); + t.end(); }); tape( 'when called without arguments, the function returns a PRNG that returns `NaN` if provided a first argument which is `NaN`', function test( t ) { @@ -367,6 +647,61 @@ tape( 'when called without arguments, the function returns a PRNG that returns ` t.end(); }); +tape( 'if the `state` property is set to a value other than a Uint32Array, an error is thrown', function test( t ) { + var values; + var gamma; + var i; + + gamma = factory(); + + values = [ + '3', + 3, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when set to '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + gamma.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Uint32Array having an unexpected length, an error is thrown', function test( t ) { + var values; + var gamma; + var i; + + gamma = factory(); + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 1000 ) + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when set to '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + gamma.state = value; + }; + } +}); + tape( 'the function returns a PRNG for generating random numbers from a gamma distribution (when `alpha >= 1`)', opts, function test( t ) { var threshold; var count; @@ -509,6 +844,179 @@ tape( 'the function returns a PRNG for generating random numbers from a gamma di } }); +tape( 'the function supports specifying the generator state', function test( t ) { + var state; + var gamma; + var arr; + var i; + + gamma = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + gamma(); + } + // Capture the current state: + state = gamma.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( gamma() ); + } + + // Create another PRNG using the captured state: + gamma = factory( 2.0, 4.0, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( gamma(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var shared; + var state; + var rand1; + var rand2; + var gamma; + var arr; + var v1; + var v2; + var i; + var j; + + gamma = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + gamma(); + } + // Capture the current state: + state = gamma.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( gamma() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory({ + 'state': shared, + 'copy': false + }); + rand2 = factory({ + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1( 2.0, 4.0 ); + v2 = rand2( 2.0, 4.0 ); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2( 2.0, 4.0 ); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1( 2.0, 4.0 ); + v2 = rand2( 2.0, 4.0 ); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state (other arguments)', function test( t ) { + var shared; + var state; + var rand1; + var rand2; + var gamma; + var arr; + var v1; + var v2; + var i; + var j; + + gamma = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + gamma(); + } + // Capture the current state: + state = gamma.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( gamma() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + tape( 'the returned function supports setting the generator state (alpha < 1.0)', function test( t ) { var gamma; var state; From 863dfdf6f87922aecc49a72a9480b5b9ef743d18 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:16:12 -0700 Subject: [PATCH 0819/1062] Document options and property --- .../random/base/binomial/docs/repl.txt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt b/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt index 447bc0bffad0..a1020f6166da 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/binomial/docs/repl.txt @@ -46,8 +46,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -92,6 +105,14 @@ > var seed = {{alias}}.seed; +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. From bd088df96f492e2f1bd6820fc3200cd78be12821 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:18:05 -0700 Subject: [PATCH 0820/1062] Document property and options --- .../@stdlib/random/base/binomial/README.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/binomial/README.md b/lib/node_modules/@stdlib/random/base/binomial/README.md index c62f578658e6..7bfd6d9e2132 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/README.md +++ b/lib/node_modules/@stdlib/random/base/binomial/README.md @@ -98,6 +98,8 @@ r = rand( 123, 0.21 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -120,6 +122,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = binomial( 8, 0.9 ); +} + +// Create a new PRNG initialized to the current state of `binomial`: +rand = binomial.factory({ + 'state': binomial.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 8, 0.9 ) === binomial( 8, 0.9 ) ); +// returns true +``` + #### binomial.NAME The generator name. @@ -161,6 +186,15 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### binomial.seedLength + +Length of generator seed. + +```javascript +var len = binomial.seedLength; +// returns +``` + #### binomial.state Writable property for getting and setting the generator state. @@ -219,6 +253,17 @@ var sz = binomial.byteLength; +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -277,6 +322,8 @@ for ( i = 0; i < 100; i++ ) { [@hormann:1993a]: http://dx.doi.org/10.1080/00949659308811496 +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From 638b875ad58f044a695e89c487e39e6eb62237fe Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:22:08 -0700 Subject: [PATCH 0821/1062] Refactor properties --- .../random/base/binomial/lib/factory.js | 65 +++++++++++++++---- 1 file changed, 54 insertions(+), 11 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js b/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js index 36ff8c8d330a..b1aa9982f98e 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js @@ -20,8 +20,9 @@ // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isPositiveInteger = require( '@stdlib/math/base/assert/is-positive-integer' ); @@ -39,10 +40,14 @@ var binomial0 = require( './binomial.js' ); * @param {PositiveInteger} [n] - number of trials * @param {Probability} [p] - success probability * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `n` must be a positive integer * @throws {TypeError} `p` must be a probability * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -104,19 +109,55 @@ function factory() { prng = binomial1; } setReadOnly( prng, 'NAME', 'binomial' ); - setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - setReadOnly( prng, 'stateLength', rand.stateLength ); - setReadOnly( prng, 'byteLength', rand.byteLength ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + /** * Returns the current pseudorandom number generator state. * @@ -132,6 +173,8 @@ function factory() { * * @private * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state */ function setState( s ) { rand.state = s; From 703543f4528077b05b882b5d073a996f841f77db Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:23:36 -0700 Subject: [PATCH 0822/1062] Update tests --- .../@stdlib/random/base/binomial/test/test.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/binomial/test/test.js b/lib/node_modules/@stdlib/random/base/binomial/test/test.js index 798e0f6948bc..c8ca1fcdb8b5 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/test/test.js +++ b/lib/node_modules/@stdlib/random/base/binomial/test/test.js @@ -37,37 +37,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof binomial.factory, 'function', 'has `factory` method' ); + t.equal( typeof binomial.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( binomial.NAME, 'binomial', 'has `NAME` property' ); + t.equal( binomial.NAME, 'binomial', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof binomial.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof binomial.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( binomial.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( binomial.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof binomial.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( binomial.state ), true, 'has `state` property' ); + t.equal( isUint32Array( binomial.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof binomial.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof binomial.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof binomial.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof binomial.byteLength, 'number', 'has property' ); t.end(); }); From 6fc907476494795188adc27757d300ff28e63d06 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:29:03 -0700 Subject: [PATCH 0823/1062] Update tests --- .../random/base/binomial/test/test.factory.js | 595 ++++++++++++++---- 1 file changed, 471 insertions(+), 124 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js b/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js index 47b013896ca7..b3e258f4ec4d 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/binomial/test/test.factory.js @@ -26,6 +26,8 @@ var chi2gof = require( '@stdlib/stats/chi2gof' ); var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,6 +46,265 @@ tape( 'main export is a function', function test( t ) { t.end(); }); +tape( 'the function throws an error if the `n` value is not a positive integer', function test( t ) { + var values; + var i; + + values = [ + -1.0, + -0.5, + 0.0, + 0.5, + '5', + null, + true, + false, + void 0, + NaN, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( value, 0.5 ); + }; + } +}); + +tape( 'the function throws an error if the `p` value is not a probability', function test( t ) { + var values; + var i; + + values = [ + '5', + -1.0, + 3.14, + 2, + NaN, + null, + true, + false, + void 0, + [], + {}, + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 10, value ); + }; + } +}); + +tape( 'the function throws an error if provided an options argument which is not an object (no other arguments)', function test( t ) { + var values; + var i; + + values = [ + 'abc', + 5, + NaN, + null, + true, + false, + void 0, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( value ); + }; + } +}); + +tape( 'the function throws an error if provided an options argument which is not an object (other arguments)', function test( t ) { + var values; + var i; + + values = [ + 'abc', + 5, + NaN, + null, + true, + false, + void 0, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 10, 0.3, value ); + }; + } +}); + +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { var binomial; var r; @@ -66,7 +327,7 @@ tape( 'the function returns a pseudorandom number generator (no seed)', function t.end(); }); -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { var binomial1; var binomial2; var seed; @@ -142,161 +403,144 @@ tape( 'the function returns a seeded pseudorandom number generator', function te t.end(); }); -tape( 'attached to the returned function is the generator name', function test( t ) { - var binomial = factory(); - t.equal( binomial.NAME, 'binomial', 'has `NAME` property' ); - t.end(); -}); +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var binomial1; + var binomial2; + var seed; + var r1; + var r2; + var i; -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var binomial = factory(); - t.equal( typeof binomial.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); + seed = [ now()+1, now()+2, now()+3, now()+4 ]; -tape( 'attached to the returned function is the generator seed', function test( t ) { - var binomial = factory({ - 'seed': 12345 + binomial1 = factory( 20, 0.3, { + 'seed': seed }); - t.equal( isUint32Array( binomial.seed ), true, 'has `seed` property' ); - t.equal( binomial.seed[ 0 ], 12345, 'equal to provided seed' ); + binomial2 = factory( 20, 0.3, { + 'seed': seed + }); + + t.notEqual( binomial1, binomial2, 'separate generators' ); + + for ( i = 0; i < 200; i++ ) { + r1 = binomial1(); + r2 = binomial2(); + t.equal( r1, r2, 'both return same number: '+r1 ); + } + seed = [ now()+1, now()+2, now()+3, now()+4 ]; + + binomial1 = factory( 100, 0.9, { + 'seed': seed + }); + binomial2 = factory( 100, 0.9, { + 'seed': seed + }); + + t.notEqual( binomial1, binomial2, 'separate generators' ); + + for ( i = 0; i < 200; i++ ) { + r1 = binomial1(); + r2 = binomial2(); + t.equal( r1, r2, 'both return same number: '+r1 ); + } + seed = [ now()+1, now()+2, now()+3, now()+4 ]; + + binomial1 = factory( 900, 0.01, { + 'seed': seed + }); + binomial2 = factory( 900, 0.01, { + 'seed': seed + }); + + t.notEqual( binomial1, binomial2, 'separate generators' ); + + for ( i = 0; i < 200; i++ ) { + r1 = binomial1(); + r2 = binomial2(); + t.equal( r1, r2, 'both return same number: '+r1 ); + } + + seed = [ now()+1, now()+2, now()+3, now()+4 ]; + + binomial1 = factory( 900, 0.5, { + 'seed': seed + }); + binomial2 = factory( 900, 0.5, { + 'seed': seed + }); + + t.notEqual( binomial1, binomial2, 'separate generators' ); + + for ( i = 0; i < 200; i++ ) { + r1 = binomial1(); + r2 = binomial2(); + t.equal( r1, r2, 'both return same number: '+r1 ); + } t.end(); }); -tape( 'attached to the returned function is the generator state', function test( t ) { +tape( 'attached to the returned function is the generator name', function test( t ) { var binomial = factory(); - t.equal( isUint32Array( binomial.state ), true, 'has `state` property' ); + t.equal( binomial.NAME, 'binomial', 'has property' ); t.end(); }); -tape( 'attached to the returned function is the generator state length', function test( t ) { +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { var binomial = factory(); - t.equal( typeof binomial.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof binomial.PRNG, 'function', 'has property' ); t.end(); }); -tape( 'attached to the returned function is the generator state size', function test( t ) { - var binomial = factory(); - t.equal( typeof binomial.byteLength, 'number', 'has `byteLength` property' ); +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var binomial = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( binomial.seed ), true, 'has property' ); + t.equal( binomial.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); -tape( 'the function throws an error if the `n` value is not a positive integer', function test( t ) { - var values; +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; var i; - values = [ - -1.0, - -0.5, - 0.0, - 0.5, - '5', - null, - true, - false, - void 0, - NaN, - [], - function noop() {} - ]; + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } t.end(); - - function badValue( value ) { - return function badValue() { - factory( value, 0.5 ); - }; - } }); -tape( 'the function throws an error if the `p` value is not a probability', function test( t ) { - var values; - var i; - - values = [ - '5', - -1.0, - 3.14, - 2, - NaN, - null, - true, - false, - void 0, - [], - {}, - function noop() {} - ]; - - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var binomial = factory(); + t.equal( typeof binomial.seedLength, 'number', 'has property' ); t.end(); - - function badValue( value ) { - return function badValue() { - factory( 10, value ); - }; - } }); -tape( 'the function throws an error if provided an options argument which is not an object (no other arguments)', function test( t ) { - var values; - var i; - - values = [ - 'abc', - 5, - NaN, - null, - true, - false, - void 0, - [], - function noop() {} - ]; - - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } +tape( 'attached to the returned function is the generator state', function test( t ) { + var binomial = factory(); + t.equal( isUint32Array( binomial.state ), true, 'has property' ); t.end(); - - function badValue( value ) { - return function badValue() { - factory( value ); - }; - } }); -tape( 'the function throws an error if provided an options argument which is not an object (other arguments)', function test( t ) { - var values; - var i; - - values = [ - 'abc', - 5, - NaN, - null, - true, - false, - void 0, - [], - function noop() {} - ]; - - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } +tape( 'attached to the returned function is the generator state length', function test( t ) { + var binomial = factory(); + t.equal( typeof binomial.stateLength, 'number', 'has property' ); t.end(); +}); - function badValue( value ) { - return function badValue() { - factory( 10, 0.3, value ); - }; - } +tape( 'attached to the returned function is the generator state size', function test( t ) { + var binomial = factory(); + t.equal( typeof binomial.byteLength, 'number', 'has property' ); + t.end(); }); tape( 'when called without arguments, the function returns a PRNG that returns `NaN` if provided a first argument which is `NaN`', function test( t ) { @@ -533,6 +777,109 @@ tape( 'the function returns a PRNG for generating random numbers from a binomial } }); +tape( 'the function supports specifying the generator state', function test( t ) { + var binomial; + var state; + var arr; + var i; + + binomial = factory( 20, 0.67 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + binomial(); + } + // Capture the current state: + state = binomial.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( binomial() ); + } + + // Create another PRNG using the captured state: + binomial = factory( 20, 0.67, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( binomial(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var binomial; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + binomial = factory( 20, 0.67 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + binomial(); + } + // Capture the current state: + state = binomial.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( binomial() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 20, 0.67, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 20, 0.67, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + tape( 'the returned function supports setting the generator state', function test( t ) { var binomial; var state; From 92058566b3a6ea593cd40cccd353bbf67a692275 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:31:16 -0700 Subject: [PATCH 0824/1062] Move extended comment --- .../random/base/mt19937/lib/factory.js | 59 ------------------- .../@stdlib/random/base/mt19937/lib/main.js | 59 +++++++++++++++++++ 2 files changed, 59 insertions(+), 59 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 2819060536ba..211aec9fd34c 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -333,65 +333,6 @@ function twist( state ) { /** * Returns a 32-bit Mersenne Twister pseudorandom number generator. * -* ## Method -* -* - When generating normalized double-precision floating-point numbers, we first generate two pseudorandom integers \\( x \\) and \\( y \\) on the interval \\( [1,2^{32}-1) \\) for a combined \\( 64 \\) random bits. -* -* - We would like \\( 53 \\) random bits to generate a 53-bit precision integer and, thus, want to discard \\( 11 \\) of the generated bits. -* -* - We do so by discarding \\( 5 \\) bits from \\( x \\) and \\( 6 \\) bits from \\( y \\). -* -* - Accordingly, \\( x \\) contains \\( 27 \\) random bits, which are subsequently shifted left \\( 26 \\) bits (multiplied by \\( 2^{26} \\), and \\( y \\) contains \\( 26 \\) random bits to fill in the lower \\( 26 \\) bits. When summed, they combine to comprise \\( 53 \\) random bits of a double-precision floating-point integer. -* -* - As an example, suppose, for the sake of argument, the 32-bit PRNG generates the maximum unsigned 32-bit integer \\( 2^{32}-1 \\) twice in a row. Then, -* -* ```javascript -* x = 4294967295 >>> 5; // 00000111111111111111111111111111 -* y = 4294967295 >>> 6; // 00000011111111111111111111111111 -* ``` -* -* Multiplying \\( x \\) by \\( 2^{26} \\) returns \\( 9007199187632128 \\), which, in binary, is -* -* ```binarystring -* 0 10000110011 11111111111111111111 11111100000000000000000000000000 -* ``` -* -* Adding \\( y \\) yields \\( 9007199254740991 \\) (the maximum "safe" double-precision floating-point integer value), which, in binary, is -* -* ```binarystring -* 0 10000110011 11111111111111111111 11111111111111111111111111111111 -* ``` -* -* - Similarly, suppose the 32-bit PRNG generates the following values -* -* ```javascript -* x = 1 >>> 5; // 0 => 00000000000000000000000000000000 -* y = 64 >>> 6; // 1 => 00000000000000000000000000000001 -* ``` -* -* Multiplying \\( x \\) by \\( 2^{26} \\) returns \\( 0 \\), which, in binary, is -* -* ```binarystring -* 0 00000000000 00000000000000000000 00000000000000000000000000000000 -* ``` -* -* Adding \\( y \\) yields \\( 1 \\), which, in binary, is -* -* ```binarystring -* 0 01111111111 00000000000000000000 00000000000000000000000000000000 -* ``` -* -* - As different combinations of \\( x \\) and \\( y \\) are generated, different combinations of double-precision floating-point exponent and significand bits will be toggled, thus generating pseudorandom double-precision floating-point numbers. -* -* -* ## References -* -* - Matsumoto, Makoto, and Takuji Nishimura. 1998. "Mersenne Twister: A 623-dimensionally Equidistributed Uniform Pseudo-random Number Generator." _ACM Transactions on Modeling and Computer Simulation_ 8 (1). New York, NY, USA: ACM: 3–30. doi:[10.1145/272991.272995][@matsumoto:1998a]. -* - Harase, Shin. 2017. "Conversion of Mersenne Twister to double-precision floating-point numbers." _ArXiv_ abs/1708.06018 (September). . -* -* [@matsumoto:1998a]: https://doi.org/10.1145/272991.272995 -* -* * @param {Options} [options] - options * @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed * @param {Uint32Array} [options.state] - pseudorandom number generator state diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/main.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/main.js index 14484ad2a993..5a80cb7a7452 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/main.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/main.js @@ -29,6 +29,65 @@ var randuint32 = require( './rand_uint32.js' ); /** * Generates a pseudorandom integer on the interval \\( [1,2^{32}-1) \\). * +* ## Method +* +* - When generating normalized double-precision floating-point numbers, we first generate two pseudorandom integers \\( x \\) and \\( y \\) on the interval \\( [1,2^{32}-1) \\) for a combined \\( 64 \\) random bits. +* +* - We would like \\( 53 \\) random bits to generate a 53-bit precision integer and, thus, want to discard \\( 11 \\) of the generated bits. +* +* - We do so by discarding \\( 5 \\) bits from \\( x \\) and \\( 6 \\) bits from \\( y \\). +* +* - Accordingly, \\( x \\) contains \\( 27 \\) random bits, which are subsequently shifted left \\( 26 \\) bits (multiplied by \\( 2^{26} \\), and \\( y \\) contains \\( 26 \\) random bits to fill in the lower \\( 26 \\) bits. When summed, they combine to comprise \\( 53 \\) random bits of a double-precision floating-point integer. +* +* - As an example, suppose, for the sake of argument, the 32-bit PRNG generates the maximum unsigned 32-bit integer \\( 2^{32}-1 \\) twice in a row. Then, +* +* ```javascript +* x = 4294967295 >>> 5; // 00000111111111111111111111111111 +* y = 4294967295 >>> 6; // 00000011111111111111111111111111 +* ``` +* +* Multiplying \\( x \\) by \\( 2^{26} \\) returns \\( 9007199187632128 \\), which, in binary, is +* +* ```binarystring +* 0 10000110011 11111111111111111111 11111100000000000000000000000000 +* ``` +* +* Adding \\( y \\) yields \\( 9007199254740991 \\) (the maximum "safe" double-precision floating-point integer value), which, in binary, is +* +* ```binarystring +* 0 10000110011 11111111111111111111 11111111111111111111111111111111 +* ``` +* +* - Similarly, suppose the 32-bit PRNG generates the following values +* +* ```javascript +* x = 1 >>> 5; // 0 => 00000000000000000000000000000000 +* y = 64 >>> 6; // 1 => 00000000000000000000000000000001 +* ``` +* +* Multiplying \\( x \\) by \\( 2^{26} \\) returns \\( 0 \\), which, in binary, is +* +* ```binarystring +* 0 00000000000 00000000000000000000 00000000000000000000000000000000 +* ``` +* +* Adding \\( y \\) yields \\( 1 \\), which, in binary, is +* +* ```binarystring +* 0 01111111111 00000000000000000000 00000000000000000000000000000000 +* ``` +* +* - As different combinations of \\( x \\) and \\( y \\) are generated, different combinations of double-precision floating-point exponent and significand bits will be toggled, thus generating pseudorandom double-precision floating-point numbers. +* +* +* ## References +* +* - Matsumoto, Makoto, and Takuji Nishimura. 1998. "Mersenne Twister: A 623-dimensionally Equidistributed Uniform Pseudo-random Number Generator." _ACM Transactions on Modeling and Computer Simulation_ 8 (1). New York, NY, USA: ACM: 3–30. doi:[10.1145/272991.272995][@matsumoto:1998a]. +* - Harase, Shin. 2017. "Conversion of Mersenne Twister to double-precision floating-point numbers." _ArXiv_ abs/1708.06018 (September). . +* +* [@matsumoto:1998a]: https://doi.org/10.1145/272991.272995 +* +* * @function mt19937 * @type {Function} * @returns {PositiveInteger} pseudorandom integer From 63cb8ce6fe0dd5c95aab3266cce009e92961c1aa Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:32:16 -0700 Subject: [PATCH 0825/1062] Document property and options --- .../@stdlib/random/base/cauchy/docs/repl.txt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt b/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt index 1aee931bd45c..7ed992d9b79a 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/cauchy/docs/repl.txt @@ -43,8 +43,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -89,6 +102,14 @@ > var seed = {{alias}}.seed; +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. From 0b00e35806523dabd95b262d9edfe5346aee8559 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:33:47 -0700 Subject: [PATCH 0826/1062] Document property and options --- .../@stdlib/random/base/cauchy/README.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/cauchy/README.md b/lib/node_modules/@stdlib/random/base/cauchy/README.md index f66520264e6b..6ca10379ea15 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/README.md +++ b/lib/node_modules/@stdlib/random/base/cauchy/README.md @@ -91,6 +91,8 @@ r = rand( -2.0, 2.0 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -113,6 +115,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = cauchy( 2.0, 3.0 ); +} + +// Create a new PRNG initialized to the current state of `cauchy`: +rand = cauchy.factory({ + 'state': cauchy.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 2.0, 3.0 ) === cauchy( 2.0, 3.0 ) ); +// returns true +``` + #### cauchy.NAME The generator name. @@ -154,6 +179,15 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### cauchy.seedLength + +Length of generator seed. + +```javascript +var len = cauchy.seedLength; +// returns +``` + #### cauchy.state Writable property for getting and setting the generator state. @@ -212,6 +246,17 @@ var sz = cauchy.byteLength; +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -256,6 +301,8 @@ for ( i = 0; i < 100; i++ ) { [cauchy]: https://en.wikipedia.org/wiki/Cauchy_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From a253673a01b64461cf115c07c20c7a6dede733dc Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:35:40 -0700 Subject: [PATCH 0827/1062] Refactor properties --- .../@stdlib/random/base/cauchy/lib/factory.js | 67 +++++++++++++++---- 1 file changed, 55 insertions(+), 12 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js b/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js index e8b95ba22e55..72e2096918b2 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js @@ -20,8 +20,9 @@ // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var randn = require( '@stdlib/random/base/improved-ziggurat' ).factory; @@ -37,10 +38,14 @@ var cauchy0 = require( './cauchy.js' ); * @param {number} [x0] - location parameter * @param {PositiveNumber} [gamma] - scale parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `x0` must be a number * @throws {TypeError} `gamma` argument must be a positive number -* @throws {TypeError} options must be an object +* @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -94,19 +99,55 @@ function factory() { prng = cauchy1; } setReadOnly( prng, 'NAME', 'cauchy' ); - setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - setReadOnly( prng, 'stateLength', rand.stateLength ); - setReadOnly( prng, 'byteLength', rand.byteLength ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + /** * Returns the current pseudorandom number generator state. * @@ -122,6 +163,8 @@ function factory() { * * @private * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state */ function setState( s ) { rand.state = s; From d1994fc377b74bc103fc852a67a86cf65f2957fd Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:37:06 -0700 Subject: [PATCH 0828/1062] Update tests --- .../@stdlib/random/base/cauchy/test/test.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/cauchy/test/test.js b/lib/node_modules/@stdlib/random/base/cauchy/test/test.js index 28330f37cd73..13787fc4fd68 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/test/test.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/test/test.js @@ -34,37 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof cauchy.factory, 'function', 'has `factory` method' ); + t.equal( typeof cauchy.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( cauchy.NAME, 'cauchy', 'has `NAME` property' ); + t.equal( cauchy.NAME, 'cauchy', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof cauchy.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof cauchy.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( cauchy.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( cauchy.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof cauchy.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( cauchy.state ), true, 'has `state` property' ); + t.equal( isUint32Array( cauchy.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof cauchy.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof cauchy.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof cauchy.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof cauchy.byteLength, 'number', 'has property' ); t.end(); }); From 75a36c2c90e82529ad0df98f0228f382e868031e Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:41:03 -0700 Subject: [PATCH 0829/1062] Update tests --- .../random/base/cauchy/test/test.factory.js | 474 ++++++++++++++---- 1 file changed, 386 insertions(+), 88 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js b/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js index 4b60b17a265d..10e486d24db5 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/test/test.factory.js @@ -26,6 +26,8 @@ var kstest = require( '@stdlib/stats/kstest' ); var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,94 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var cauchy; - var r; - var i; - - // When binding distribution parameters... - cauchy = factory( 2.0, 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = cauchy(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - cauchy = factory(); - for ( i = 0; i < 100; i++ ) { - r = cauchy( 2.0, 2.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var cauchy1; - var cauchy2; - var seed; - var r1; - var r2; - var i; - - seed = now(); - - cauchy1 = factory( 1.0, 1.0, { - 'seed': seed - }); - cauchy2 = factory( 1.0, 1.0, { - 'seed': seed - }); - - t.notEqual( cauchy1, cauchy2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = cauchy1(); - r2 = cauchy2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var cauchy = factory(); - t.equal( cauchy.NAME, 'cauchy', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var cauchy = factory(); - t.equal( typeof cauchy.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var cauchy = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( cauchy.seed ), true, 'has `seed` property' ); - t.equal( cauchy.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state', function test( t ) { - var cauchy = factory(); - t.equal( isUint32Array( cauchy.state ), true, 'has `state` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state length', function test( t ) { - var cauchy = factory(); - t.equal( typeof cauchy.stateLength, 'number', 'has `stateLength` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state size', function test( t ) { - var cauchy = factory(); - t.equal( typeof cauchy.byteLength, 'number', 'has `byteLength` property' ); - t.end(); -}); - tape( 'the function throws an error if provided an `x0` argument which is not a number', function test( t ) { var values; var i; @@ -246,6 +160,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var cauchy; + var r; + var i; + + // When binding distribution parameters... + cauchy = factory( 2.0, 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = cauchy(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + cauchy = factory(); + for ( i = 0; i < 100; i++ ) { + r = cauchy( 2.0, 2.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var cauchy1; + var cauchy2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + cauchy1 = factory( 1.0, 1.0, { + 'seed': seed + }); + cauchy2 = factory( 1.0, 1.0, { + 'seed': seed + }); + + t.notEqual( cauchy1, cauchy2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = cauchy1(); + r2 = cauchy2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var cauchy1; + var cauchy2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3, now()+4 ]; + + cauchy1 = factory( 1.0, 1.0, { + 'seed': seed + }); + cauchy2 = factory( 1.0, 1.0, { + 'seed': seed + }); + + t.notEqual( cauchy1, cauchy2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = cauchy1(); + r2 = cauchy2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var cauchy = factory(); + t.equal( cauchy.NAME, 'cauchy', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var cauchy = factory(); + t.equal( typeof cauchy.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var cauchy = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( cauchy.seed ), true, 'has property' ); + t.equal( cauchy.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var cauchy = factory(); + t.equal( typeof cauchy.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var cauchy = factory(); + t.equal( isUint32Array( cauchy.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var cauchy = factory(); + t.equal( typeof cauchy.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var cauchy = factory(); + t.equal( typeof cauchy.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a first argument equal to `NaN`', function test( t ) { var cauchy; var r; @@ -365,6 +560,109 @@ tape( 'the function returns a PRNG for generating random numbers from the specif } }); +tape( 'the function supports specifying the generator state', function test( t ) { + var cauchy; + var state; + var arr; + var i; + + cauchy = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + cauchy(); + } + // Capture the current state: + state = cauchy.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( cauchy() ); + } + + // Create another PRNG using the captured state: + cauchy = factory( 2.0, 4.0, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( cauchy(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var cauchy; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + cauchy = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + cauchy(); + } + // Capture the current state: + state = cauchy.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( cauchy() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + tape( 'the returned function supports setting the generator state', function test( t ) { var cauchy; var state; From e8b128c3c4ebd7b51552f24aa12b82b79b535f72 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:43:23 -0700 Subject: [PATCH 0830/1062] Document property and options --- .../@stdlib/random/base/chi/docs/repl.txt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt b/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt index 1efa7dcc71a4..f4ba45963358 100644 --- a/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/chi/docs/repl.txt @@ -37,8 +37,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -83,6 +96,14 @@ > var seed = {{alias}}.seed; +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. From c2412d778299c6ab3372b51db6ae3581eb245508 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:44:50 -0700 Subject: [PATCH 0831/1062] Document property and options --- .../@stdlib/random/base/chi/README.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/chi/README.md b/lib/node_modules/@stdlib/random/base/chi/README.md index 49fa21d1dd96..0ed668698c10 100644 --- a/lib/node_modules/@stdlib/random/base/chi/README.md +++ b/lib/node_modules/@stdlib/random/base/chi/README.md @@ -87,6 +87,8 @@ r = rand( 3.14 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -109,6 +111,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = chi( 3 ); +} + +// Create a new PRNG initialized to the current state of `chi`: +rand = chi.factory({ + 'state': chi.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 3 ) === chi( 3 ) ); +// returns true +``` + #### chi.NAME The generator name. @@ -150,6 +175,15 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### chi.seedLength + +Length of generator seed. + +```javascript +var len = chi.seedLength; +// returns +``` + #### chi.state Writable property for getting and setting the generator state. @@ -208,6 +242,17 @@ var sz = chi.byteLength; +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -252,6 +297,8 @@ for ( i = 0; i < 100; i++ ) { [chi]: https://en.wikipedia.org/wiki/Chi_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From c641a1b85567466d4b8296516971e6072f41700d Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:47:35 -0700 Subject: [PATCH 0832/1062] Refactor properties --- .../@stdlib/random/base/chi/lib/factory.js | 65 +++++++++++++++---- 1 file changed, 54 insertions(+), 11 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/chi/lib/factory.js b/lib/node_modules/@stdlib/random/base/chi/lib/factory.js index d711315a506c..4596753cecb8 100644 --- a/lib/node_modules/@stdlib/random/base/chi/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/chi/lib/factory.js @@ -20,8 +20,9 @@ // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isPositive = require( '@stdlib/assert/is-positive-number' ).isPrimitive; var isObject = require( '@stdlib/assert/is-plain-object' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -36,9 +37,13 @@ var chi0 = require( './chi.js' ); * * @param {PositiveNumber} [k] - degrees of freedom * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `k` must be a positive number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -86,19 +91,55 @@ function factory() { prng = chi1; } setReadOnly( prng, 'NAME', 'chi' ); - setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - setReadOnly( prng, 'stateLength', rand.stateLength ); - setReadOnly( prng, 'byteLength', rand.byteLength ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand.PRNG ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + /** * Returns the current pseudorandom number generator state. * @@ -114,6 +155,8 @@ function factory() { * * @private * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state */ function setState( s ) { rand.state = s; From 9aeff3c4a616e495d3d304355e0fc02554f02d11 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:48:49 -0700 Subject: [PATCH 0833/1062] Update tests --- .../@stdlib/random/base/chi/test/test.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/chi/test/test.js b/lib/node_modules/@stdlib/random/base/chi/test/test.js index eeabf3dfdfae..7b7d4eb02aeb 100644 --- a/lib/node_modules/@stdlib/random/base/chi/test/test.js +++ b/lib/node_modules/@stdlib/random/base/chi/test/test.js @@ -34,37 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof chi.factory, 'function', 'has `factory` method' ); + t.equal( typeof chi.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( chi.NAME, 'chi', 'has `NAME` property' ); + t.equal( chi.NAME, 'chi', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof chi.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof chi.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( chi.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( chi.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof chi.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( chi.state ), true, 'has `state` property' ); + t.equal( isUint32Array( chi.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof chi.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof chi.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof chi.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof chi.byteLength, 'number', 'has property' ); t.end(); }); From 46dfddddbf00b62a2941a424482474ec570dca2c Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:52:02 -0700 Subject: [PATCH 0834/1062] Update tests --- .../random/base/chi/test/test.factory.js | 468 ++++++++++++++---- 1 file changed, 380 insertions(+), 88 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js b/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js index 547cb5468812..c106b808380e 100644 --- a/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/chi/test/test.factory.js @@ -26,6 +26,8 @@ var kstest = require( '@stdlib/stats/kstest' ); var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,94 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var chi; - var r; - var i; - - // When binding distribution parameter... - chi = factory( 2 ); - for ( i = 0; i < 100; i++ ) { - r = chi(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameter... - chi = factory(); - for ( i = 0; i < 100; i++ ) { - r = chi( 100.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var chi1; - var chi2; - var seed; - var r1; - var r2; - var i; - - seed = now(); - - chi1 = factory( 35, { - 'seed': seed - }); - chi2 = factory( 35, { - 'seed': seed - }); - - t.notEqual( chi1, chi2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = chi1(); - r2 = chi2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var chi = factory(); - t.equal( chi.NAME, 'chi', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var chi = factory(); - t.equal( typeof chi.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var chi = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( chi.seed ), true, 'has `seed` property' ); - t.equal( chi.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state', function test( t ) { - var chi = factory(); - t.equal( isUint32Array( chi.state ), true, 'has `state` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state length', function test( t ) { - var chi = factory(); - t.equal( typeof chi.stateLength, 'number', 'has `stateLength` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state size', function test( t ) { - var chi = factory(); - t.equal( typeof chi.byteLength, 'number', 'has `byteLength` property' ); - t.end(); -}); - tape( 'the function throws an error if degrees of freedom `k` is not a positive number (no options)', function test( t ) { var values; var i; @@ -246,6 +160,281 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var chi; + var r; + var i; + + // When binding distribution parameter... + chi = factory( 2 ); + for ( i = 0; i < 100; i++ ) { + r = chi(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameter... + chi = factory(); + for ( i = 0; i < 100; i++ ) { + r = chi( 100.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var chi1; + var chi2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + chi1 = factory( 35, { + 'seed': seed + }); + chi2 = factory( 35, { + 'seed': seed + }); + + t.notEqual( chi1, chi2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = chi1(); + r2 = chi2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var chi1; + var chi2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3, now()+4 ]; + + chi1 = factory( 35, { + 'seed': seed + }); + chi2 = factory( 35, { + 'seed': seed + }); + + t.notEqual( chi1, chi2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = chi1(); + r2 = chi2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var chi = factory(); + t.equal( chi.NAME, 'chi', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var chi = factory(); + t.equal( typeof chi.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var chi = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( chi.seed ), true, 'has property' ); + t.equal( chi.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var chi = factory(); + t.equal( isUint32Array( chi.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var chi = factory(); + t.equal( typeof chi.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var chi = factory(); + t.equal( typeof chi.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a first argument equal to `NaN`', function test( t ) { var chi; var r; @@ -344,6 +533,109 @@ tape( 'the function returns a PRNG for generating random numbers from a chi dist } }); +tape( 'the function supports specifying the generator state', function test( t ) { + var state; + var chi; + var arr; + var i; + + chi = factory( 4 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + chi(); + } + // Capture the current state: + state = chi.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( chi() ); + } + + // Create another PRNG using the captured state: + chi = factory( 4, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( chi(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var shared; + var state; + var rand1; + var rand2; + var chi; + var arr; + var v1; + var v2; + var i; + var j; + + chi = factory( 4 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + chi(); + } + // Capture the current state: + state = chi.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( chi() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 4, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 4, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + tape( 'the returned function supports setting the generator state', function test( t ) { var state; var chi; From c755ba1ae9e859ce9125cbcbfbcb735ebffaa232 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:53:28 -0700 Subject: [PATCH 0835/1062] Document property and options --- .../random/base/chisquare/docs/repl.txt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt b/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt index 4f3bbfc4842d..cb860f38e2b0 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/chisquare/docs/repl.txt @@ -37,8 +37,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -83,6 +96,14 @@ > var seed = {{alias}}.seed; +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. From 99e6804fb445ecfa9cb164910049c9b29f5cf41b Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:55:19 -0700 Subject: [PATCH 0836/1062] Document property and options --- .../@stdlib/random/base/chisquare/README.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/chisquare/README.md b/lib/node_modules/@stdlib/random/base/chisquare/README.md index 55bfe4e1f691..0ce877fe82c7 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/README.md +++ b/lib/node_modules/@stdlib/random/base/chisquare/README.md @@ -87,6 +87,8 @@ r = rand( 3.14 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -109,6 +111,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = chisquare( 3 ); +} + +// Create a new PRNG initialized to the current state of `chisquare`: +rand = chisquare.factory({ + 'state': chisquare.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 3 ) === chisquare( 3 ) ); +// returns true +``` + #### chisquare.NAME The generator name. @@ -150,6 +175,15 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### chisquare.seedLength + +Length of generator seed. + +```javascript +var len = chisquare.seedLength; +// returns +``` + #### chisquare.state Writable property for getting and setting the generator state. @@ -208,6 +242,17 @@ var sz = chisquare.byteLength; +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -252,6 +297,8 @@ for ( i = 0; i < 100; i++ ) { [chi-square]: https://en.wikipedia.org/wiki/Chi-squared_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From b276d302a0ef6a0023eee586b5b0699533d7402b Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:56:55 -0700 Subject: [PATCH 0837/1062] Refactor properties --- .../random/base/chisquare/lib/factory.js | 65 +++++++++++++++---- 1 file changed, 54 insertions(+), 11 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js b/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js index 44cb28ed6d11..fc976d70620e 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js @@ -20,8 +20,9 @@ // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isPositive = require( '@stdlib/assert/is-positive-number' ).isPrimitive; var isObject = require( '@stdlib/assert/is-plain-object' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -36,9 +37,13 @@ var chisquare0 = require( './chisquare.js' ); * * @param {PositiveNumber} [k] - degrees of freedom * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `k` must be a positive number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -86,19 +91,55 @@ function factory() { prng = chisquare1; } setReadOnly( prng, 'NAME', 'chisquare' ); - setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - setReadOnly( prng, 'stateLength', rand.stateLength ); - setReadOnly( prng, 'byteLength', rand.byteLength ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand.PRNG ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + /** * Returns the current pseudorandom number generator state. * @@ -114,6 +155,8 @@ function factory() { * * @private * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state */ function setState( s ) { rand.state = s; From a58b6dfe86900fd17aedee782a315ffefb2d4e94 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 19:57:54 -0700 Subject: [PATCH 0838/1062] Update tests --- .../random/base/chisquare/test/test.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/chisquare/test/test.js b/lib/node_modules/@stdlib/random/base/chisquare/test/test.js index b29b977f9da3..150af500eb8c 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/test/test.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/test/test.js @@ -34,37 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof chisquare.factory, 'function', 'has `factory` method' ); + t.equal( typeof chisquare.factory, 'function', 'has `method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( chisquare.NAME, 'chisquare', 'has `NAME` property' ); + t.equal( chisquare.NAME, 'chisquare', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof chisquare.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof chisquare.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( chisquare.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( chisquare.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof chisquare.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( chisquare.state ), true, 'has `state` property' ); + t.equal( isUint32Array( chisquare.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof chisquare.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof chisquare.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof chisquare.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof chisquare.byteLength, 'number', 'has property' ); t.end(); }); From 34ea57e9e40969a205856ff423db2e5239fb5cd1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 20:01:07 -0700 Subject: [PATCH 0839/1062] Update tests --- .../base/chisquare/test/test.factory.js | 468 ++++++++++++++---- 1 file changed, 380 insertions(+), 88 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js b/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js index 473aa76844b8..9c9ee85ed25f 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/test/test.factory.js @@ -26,6 +26,8 @@ var kstest = require( '@stdlib/stats/kstest' ); var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,94 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var chisquare; - var r; - var i; - - // When binding distribution parameter... - chisquare = factory( 2 ); - for ( i = 0; i < 100; i++ ) { - r = chisquare(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameter... - chisquare = factory(); - for ( i = 0; i < 100; i++ ) { - r = chisquare( 100.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var chisquare1; - var chisquare2; - var seed; - var r1; - var r2; - var i; - - seed = now(); - - chisquare1 = factory( 35, { - 'seed': seed - }); - chisquare2 = factory( 35, { - 'seed': seed - }); - - t.notEqual( chisquare1, chisquare2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = chisquare1(); - r2 = chisquare2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var chisquare = factory(); - t.equal( chisquare.NAME, 'chisquare', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var chisquare = factory(); - t.equal( typeof chisquare.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var chisquare = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( chisquare.seed ), true, 'has `seed` property' ); - t.equal( chisquare.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state', function test( t ) { - var chisquare = factory(); - t.equal( isUint32Array( chisquare.state ), true, 'has `state` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state length', function test( t ) { - var chisquare = factory(); - t.equal( typeof chisquare.stateLength, 'number', 'has `stateLength` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state size', function test( t ) { - var chisquare = factory(); - t.equal( typeof chisquare.byteLength, 'number', 'has `byteLength` property' ); - t.end(); -}); - tape( 'the function throws an error if degrees of freedom `k` is not a positive number (no options)', function test( t ) { var values; var i; @@ -246,6 +160,281 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var chisquare; + var r; + var i; + + // When binding distribution parameter... + chisquare = factory( 2 ); + for ( i = 0; i < 100; i++ ) { + r = chisquare(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameter... + chisquare = factory(); + for ( i = 0; i < 100; i++ ) { + r = chisquare( 100.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var chisquare1; + var chisquare2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + chisquare1 = factory( 35, { + 'seed': seed + }); + chisquare2 = factory( 35, { + 'seed': seed + }); + + t.notEqual( chisquare1, chisquare2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = chisquare1(); + r2 = chisquare2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var chisquare1; + var chisquare2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + chisquare1 = factory( 35, { + 'seed': seed + }); + chisquare2 = factory( 35, { + 'seed': seed + }); + + t.notEqual( chisquare1, chisquare2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = chisquare1(); + r2 = chisquare2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var chisquare = factory(); + t.equal( chisquare.NAME, 'chisquare', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var chisquare = factory(); + t.equal( typeof chisquare.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var chisquare = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( chisquare.seed ), true, 'has property' ); + t.equal( chisquare.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var chisquare = factory(); + t.equal( isUint32Array( chisquare.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var chisquare = factory(); + t.equal( typeof chisquare.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var chisquare = factory(); + t.equal( typeof chisquare.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a first argument equal to `NaN`', function test( t ) { var chisquare; var r; @@ -344,6 +533,109 @@ tape( 'the function returns a PRNG for generating random numbers from a chi-squa } }); +tape( 'the function supports specifying the generator state', function test( t ) { + var chisquare; + var state; + var arr; + var i; + + chisquare = factory( 4 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + chisquare(); + } + // Capture the current state: + state = chisquare.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( chisquare() ); + } + + // Create another PRNG using the captured state: + chisquare = factory( 4, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( chisquare(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var chisquare; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + chisquare = factory( 4 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + chisquare(); + } + // Capture the current state: + state = chisquare.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( chisquare() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 4, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 4, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + tape( 'the returned function supports setting the generator state', function test( t ) { var chisquare; var state; From 5b686cc460ba2b1b68d7eedb249c6e216d93a7b5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 20:02:58 -0700 Subject: [PATCH 0840/1062] Document property and options --- .../@stdlib/random/base/cosine/docs/repl.txt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt b/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt index 32f1edf0950d..940f9638310f 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/cosine/docs/repl.txt @@ -43,8 +43,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -89,6 +102,14 @@ > var seed = {{alias}}.seed; +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. From bc2cacebc19b8bee13ea2c2b58522e5e83f86363 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 20:04:57 -0700 Subject: [PATCH 0841/1062] Document property and options --- .../@stdlib/random/base/cosine/README.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/cosine/README.md b/lib/node_modules/@stdlib/random/base/cosine/README.md index c482884ab47f..ddcdb2551f40 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/README.md +++ b/lib/node_modules/@stdlib/random/base/cosine/README.md @@ -90,6 +90,8 @@ r = rand( -2.0, 2.0 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -112,6 +114,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = cosine( 1.0, 2.0 ); +} + +// Create a new PRNG initialized to the current state of `cosine`: +rand = cosine.factory({ + 'state': cosine.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 1.0, 2.0 ) === cosine( 1.0, 2.0 ) ); +// returns true +``` + #### cosine.NAME The generator name. @@ -153,6 +178,15 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### cosine.seedLength + +Length of generator seed. + +```javascript +var len = cosine.seedLength; +// returns +``` + #### cosine.state Writable property for getting and setting the generator state. @@ -211,6 +245,17 @@ var sz = cosine.byteLength; +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -255,6 +300,8 @@ for ( i = 0; i < 100; i++ ) { [cosine]: https://en.wikipedia.org/wiki/Raised_cosine_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From 183e8b761df6425b5136e71712e6e03055811ef0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 20:17:33 -0700 Subject: [PATCH 0842/1062] Refactor properties --- .../@stdlib/random/base/cosine/lib/factory.js | 65 +++++++++++++++---- 1 file changed, 54 insertions(+), 11 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js b/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js index 320786992a90..3d78441bd5b9 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js @@ -20,8 +20,9 @@ // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -37,10 +38,14 @@ var cosine0 = require( './cosine.js' ); * @param {number} [mu] - mean parameter * @param {PositiveNumber} [s] - scale parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `mu` must be a number * @throws {TypeError} `s` must be a positive number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -95,19 +100,55 @@ function factory() { prng = cosine1; } setReadOnly( prng, 'NAME', 'cosine' ); - setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - setReadOnly( prng, 'stateLength', rand.stateLength ); - setReadOnly( prng, 'byteLength', rand.byteLength ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + /** * Returns the current pseudorandom number generator state. * @@ -123,6 +164,8 @@ function factory() { * * @private * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state */ function setState( s ) { rand.state = s; From 2778bddc7ec55e996c8a2e07e14e3acc92c71dce Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 20:18:32 -0700 Subject: [PATCH 0843/1062] Update tests --- .../@stdlib/random/base/cosine/test/test.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/cosine/test/test.js b/lib/node_modules/@stdlib/random/base/cosine/test/test.js index 0d2442b12d77..3dc9473859d3 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/test/test.js +++ b/lib/node_modules/@stdlib/random/base/cosine/test/test.js @@ -34,37 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof cosine.factory, 'function', 'has `factory` method' ); + t.equal( typeof cosine.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( cosine.NAME, 'cosine', 'has `NAME` property' ); + t.equal( cosine.NAME, 'cosine', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof cosine.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof cosine.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( cosine.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( cosine.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof cosine.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( cosine.state ), true, 'has `state` property' ); + t.equal( isUint32Array( cosine.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof cosine.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof cosine.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof cosine.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof cosine.byteLength, 'number', 'has property' ); t.end(); }); From 4688fac2805a8e6fc3017bc06d84ee871487f1e0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 20:21:57 -0700 Subject: [PATCH 0844/1062] Update tests --- .../random/base/cosine/test/test.factory.js | 474 ++++++++++++++---- 1 file changed, 386 insertions(+), 88 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js b/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js index a3f82462b473..e529cf9eb72c 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/cosine/test/test.factory.js @@ -26,6 +26,8 @@ var kstest = require( '@stdlib/stats/kstest' ); var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,94 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var cosine; - var r; - var i; - - // When binding distribution parameters... - cosine = factory( 0.0, 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = cosine(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - cosine = factory(); - for ( i = 0; i < 100; i++ ) { - r = cosine( 2.5, 2.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var cosine1; - var cosine2; - var seed; - var r1; - var r2; - var i; - - seed = now(); - - cosine1 = factory( 0.0, 1.0, { - 'seed': seed - }); - cosine2 = factory( 0.0, 1.0, { - 'seed': seed - }); - - t.notEqual( cosine1, cosine2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = cosine1(); - r2 = cosine2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var cosine = factory(); - t.equal( cosine.NAME, 'cosine', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var cosine = factory(); - t.equal( typeof cosine.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var cosine = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( cosine.seed ), true, 'has `seed` property' ); - t.equal( cosine.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state', function test( t ) { - var cosine = factory(); - t.equal( isUint32Array( cosine.state ), true, 'has `state` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state length', function test( t ) { - var cosine = factory(); - t.equal( typeof cosine.stateLength, 'number', 'has `stateLength` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state size', function test( t ) { - var cosine = factory(); - t.equal( typeof cosine.byteLength, 'number', 'has `byteLength` property' ); - t.end(); -}); - tape( 'the function throws an error if a scale parameter which is not a positive number', function test( t ) { var values; var i; @@ -246,6 +160,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var cosine; + var r; + var i; + + // When binding distribution parameters... + cosine = factory( 0.0, 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = cosine(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + cosine = factory(); + for ( i = 0; i < 100; i++ ) { + r = cosine( 2.5, 2.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var cosine1; + var cosine2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + cosine1 = factory( 0.0, 1.0, { + 'seed': seed + }); + cosine2 = factory( 0.0, 1.0, { + 'seed': seed + }); + + t.notEqual( cosine1, cosine2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = cosine1(); + r2 = cosine2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var cosine1; + var cosine2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + cosine1 = factory( 0.0, 1.0, { + 'seed': seed + }); + cosine2 = factory( 0.0, 1.0, { + 'seed': seed + }); + + t.notEqual( cosine1, cosine2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = cosine1(); + r2 = cosine2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var cosine = factory(); + t.equal( cosine.NAME, 'cosine', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var cosine = factory(); + t.equal( typeof cosine.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var cosine = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( cosine.seed ), true, 'has property' ); + t.equal( cosine.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var cosine = factory(); + t.equal( typeof cosine.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var cosine = factory(); + t.equal( isUint32Array( cosine.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var cosine = factory(); + t.equal( typeof cosine.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var cosine = factory(); + t.equal( typeof cosine.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a first argument equal to `NaN`', function test( t ) { var cosine; var r; @@ -365,6 +560,109 @@ tape( 'the function returns a PRNG for generating random numbers from a cosine d } }); +tape( 'the function supports specifying the generator state', function test( t ) { + var cosine; + var state; + var arr; + var i; + + cosine = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + cosine(); + } + // Capture the current state: + state = cosine.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( cosine() ); + } + + // Create another PRNG using the captured state: + cosine = factory( 0.0, 3.14, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( cosine(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var cosine; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + cosine = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + cosine(); + } + // Capture the current state: + state = cosine.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( cosine() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 0.0, 3.14, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 0.0, 3.14, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + tape( 'the returned function supports setting the generator state', function test( t ) { var cosine; var state; From f492ce36b8d110eb954b8cbfb4ce0a46f494bd32 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 20:24:12 -0700 Subject: [PATCH 0845/1062] Document property and options --- .../base/discrete-uniform/docs/repl.txt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt b/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt index 2b42857a3ea5..4f731d69a39d 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/docs/repl.txt @@ -45,8 +45,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -91,6 +104,14 @@ > var seed = {{alias}}.seed; +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. From e69f7feabea5b147607f1cfa7e99f3670c426e3e Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 20:25:39 -0700 Subject: [PATCH 0846/1062] Document property and options --- .../random/base/discrete-uniform/README.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md b/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md index a95d5a0c0368..354b60714f25 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/README.md @@ -91,6 +91,8 @@ r = rand( -20, 20 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -113,6 +115,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = discreteUniform( 20, 40 ); +} + +// Create a new PRNG initialized to the current state of `discreteUniform`: +rand = discreteUniform.factory({ + 'state': discreteUniform.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 20, 40 ) === discreteUniform( 20, 40 ) ); +// returns true +``` + #### discreteUniform.NAME The generator name. @@ -154,6 +179,15 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### discreteUniform.seedLength + +Length of generator seed. + +```javascript +var len = discreteUniform.seedLength; +// returns +``` + #### discreteUniform.state Writable property for getting and setting the generator state. @@ -212,6 +246,17 @@ var sz = discreteUniform.byteLength; +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -256,6 +301,8 @@ for ( i = 0; i < 100; i++ ) { [discrete-uniform-distribution]: https://en.wikipedia.org/wiki/Discrete_uniform_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From 316c36050ed016d6148486bd7a549ddfd5a5b065 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 20:27:19 -0700 Subject: [PATCH 0847/1062] Move extended comment --- .../discrete-uniform/lib/discrete_uniform.js | 187 ------------------ .../random/base/discrete-uniform/lib/main.js | 186 +++++++++++++++++ 2 files changed, 186 insertions(+), 187 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/discrete_uniform.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/discrete_uniform.js index c6076879eab9..380b767fe73f 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/discrete_uniform.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/discrete_uniform.js @@ -43,193 +43,6 @@ var floor = require( '@stdlib/math/base/special/floor' ); /** * Returns a pseudorandom number drawn from a discrete uniform distribution with minimum support `a` and maximum support `b`. * -* ## Method -* -* - Let \\( R \\) be a pseudorandom generator (PRNG) which yields integers on the interval \\( \[ A, B ] \\). -* -* - If \\( a = b \\), then \\( rv = a \\). -* -* - Let \\( r1 = b - a \\) and \\( r2 = B - A \\). If \\( r2 = r1 \\) (likely a rare occurrence), then -* -* ```tex -* rv = ( R() - B ) + a -* ``` -* -* where, for real integer types, operation order is important in order to avoid overflow. -* -* - If \\( r2 < r1 \\), use rejection sampling to map random variates from \\( R \\) to a larger domain (e.g., \\( {0,1,2,3} \rightarrow {0,1,2,3,4} \\)). For real integer types (and floating-point integer values), we must take extra care to avoid overflow. During sampling, the following conditions will hold: -* -* - First, consider the post-condition: \\( \textrm{result} \leq r2 \\), thus avoiding overflow. -* -* - Begin with definition of \\( \textrm{limit} \\) -* -* ```tex -* \textrm{limit} = \lfloor{\frac{r2+1}{r1+1}\rfloor -* ``` -* -* thus, -* -* ```tex -* \textrm{limit}\ \cdot (r1+1) \leq r2+1 -* ``` -* -* - Let \\( m \\) be a random factor where the loop condition is defined as -* -* ```tex -* m \leq \textrm{limit} -* ``` -* -* - Let \\( \textrm{result} \\) be the generator output, which is expressed base \\( r2+1 \\) and obeys the loop invariant \\( \textrm{result} < m \\). -* -* - Let \\( rv \\) be a realization of the PRNG. Then, -* -* ```tex -* rv-A \leq r1 -* ``` -* -* and, by the loop condition, \\( m \leq \textrm{limit} \\). -* -* - Therefore, -* -* ```tex -* m \cdot (rv - A + 1) \leq r2+1 -* ``` -* -* - Rearranging terms, -* -* ```tex -* m + m \cdot (rv - A) \leq r2+1 -* ``` -* -* - Since \\( \textrm{result} < m \\), -* -* ```tex -* \textrm{result} + m \cdot (rv - A) < r2+1 -* ``` -* -* - Next, consider the post-condition: \\( \textrm{result} < m \cdot (r2+1) \\). -* -* - Since \\( \textrm{result} < m \\) and \\( rv - A \leq r1 \\), -* -* ```tex -* \textrm{result} + m \cdot (rv - A) < m + m \cdot (rv - A) -* ``` -* -* - Therefore, -* -* ```tex -* \textrm{result} + m \cdot (rv - A) < m + m \cdot r1 -* ``` -* -* - Therefore, -* -* ```tex -* \textrm{result} + m \cdot (rv - A) < m \cdot (r1+1) -* ``` -* -* - Next, consider the post-condition: \\( m \leq r2 \\). -* -* - According to the definition of \\( \textrm{limit} \\) and the loop condition \\( m \leq \textrm{limit} \\), -* -* ```tex -* m \cdot (r1+1) \leq r2+1 -* ``` -* -* - If \\( r2 \\) is **not** an integer power of the generator range \\( r1 \\), i.e., -* -* ```tex -* m \cdot (r1+1) \neq r2+1 -* ``` -* -* then -* -* ```tex -* m \cdot (r1+1) < r2+1 -* ``` -* -* - Thus, \\( \textrm{result} < m \\). -* -* - Next, consider the post-condition: \\( r2/m < r1+1 \\). -* -* - To show this is true, let us try to prove its opposite. Given the loop condition \\( m > \textrm{limit} \\), assume -* -* ```tex -* r2/m > r1+1 -* ``` -* -* - Accordingly, -* -* ```tex -* r2 \geq m \cdot (r1+1) -* ``` -* -* - Hence, -* -* ```tex -* r2+1 > m \cdot (r1+1) -* ``` -* -* - Using the loop condition, -* -* ```tex -* r2+1 > (\textrm{limit}+1) \cdot (r1+1) -* ``` -* -* - Rearranging terms, -* -* ```tex -* \frac{r2+1}{r1+1} > \textrm{limit} + 1 -* ``` -* -* - Hence, -* -* ```tex -* \textrm{limit} < \lfloor{\frac{r2+1}{r1+1}} \rfloor -* ``` -* -* - But the definition of \\( \textrm{limit} \\) is -* -* ```tex -* \textrm{limit} = \lfloor{\frac{r2+1}{r1+1}} -* ``` -* -* - Thus, our assumption cannot be true, providing the post-condition by reductio ad absurdum. -* -* - Next, consider the post-condition -* -* ```tex -* r2 \leq \frac{r2}{m} \cdot m + (m - 1) -* ``` -* -* - Recall the identity -* -* ```tex -* r2 = \frac{r2}{m} \cdot m + r2 \mod m -* ``` -* -* - By the definition of the modulus -* -* ```tex -* r2 \mod m < m -* ``` -* -* - Therefore, -* -* ```tex -* r2 < \frac{r2}{m} \cdot m + m -* ``` -* -* - Hence, -* -* ```tex -* r2 \leq \frac{r2}{m} \cdot m + (m - 1) -* ``` -* -* At this point, the maximum value \\( \textrm{result} \\) is \\( m-1 \\). Hence, we can generate numbers that can be at least as large as \\( r2 \\), but we must be careful to avoid overflow during addition and in the sampling rejection. Anything which overflows is larger than \\( r2 \\) and can thus be rejected. -* -* - If \\( r1 > r2 \\), use rejection sampling to map random variates from \\( R \\) to a smaller domain (e.g., \\( {0,1,2,3,4} \rightarrow {0,1,2,3} \\)) by defining "buckets" in which multiple random variates in \\( R \\) map to a single random variate in the smaller domain. We are safe in adding 1 to \\( r2 \\); however, we need to be careful to not cause overflow when adding 1 to \\( r1 \\). -* -* * @private * @param {Function} rand - pseudorandom number generator which outputs integer values * @param {integer} a - minimum support diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/main.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/main.js index 172c0d3ff795..4f207e19a416 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/main.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/main.js @@ -28,6 +28,192 @@ var factory = require( './factory.js' ); /** * Returns a pseudorandom number drawn from a discrete uniform distribution with minimum support `a` and maximum support `b`. * +* ## Method +* +* - Let \\( R \\) be a pseudorandom generator (PRNG) which yields integers on the interval \\( \[ A, B ] \\). +* +* - If \\( a = b \\), then \\( rv = a \\). +* +* - Let \\( r1 = b - a \\) and \\( r2 = B - A \\). If \\( r2 = r1 \\) (likely a rare occurrence), then +* +* ```tex +* rv = ( R() - B ) + a +* ``` +* +* where, for real integer types, operation order is important in order to avoid overflow. +* +* - If \\( r2 < r1 \\), use rejection sampling to map random variates from \\( R \\) to a larger domain (e.g., \\( {0,1,2,3} \rightarrow {0,1,2,3,4} \\)). For real integer types (and floating-point integer values), we must take extra care to avoid overflow. During sampling, the following conditions will hold: +* +* - First, consider the post-condition: \\( \textrm{result} \leq r2 \\), thus avoiding overflow. +* +* - Begin with definition of \\( \textrm{limit} \\) +* +* ```tex +* \textrm{limit} = \lfloor{\frac{r2+1}{r1+1}\rfloor +* ``` +* +* thus, +* +* ```tex +* \textrm{limit}\ \cdot (r1+1) \leq r2+1 +* ``` +* +* - Let \\( m \\) be a random factor where the loop condition is defined as +* +* ```tex +* m \leq \textrm{limit} +* ``` +* +* - Let \\( \textrm{result} \\) be the generator output, which is expressed base \\( r2+1 \\) and obeys the loop invariant \\( \textrm{result} < m \\). +* +* - Let \\( rv \\) be a realization of the PRNG. Then, +* +* ```tex +* rv-A \leq r1 +* ``` +* +* and, by the loop condition, \\( m \leq \textrm{limit} \\). +* +* - Therefore, +* +* ```tex +* m \cdot (rv - A + 1) \leq r2+1 +* ``` +* +* - Rearranging terms, +* +* ```tex +* m + m \cdot (rv - A) \leq r2+1 +* ``` +* +* - Since \\( \textrm{result} < m \\), +* +* ```tex +* \textrm{result} + m \cdot (rv - A) < r2+1 +* ``` +* +* - Next, consider the post-condition: \\( \textrm{result} < m \cdot (r2+1) \\). +* +* - Since \\( \textrm{result} < m \\) and \\( rv - A \leq r1 \\), +* +* ```tex +* \textrm{result} + m \cdot (rv - A) < m + m \cdot (rv - A) +* ``` +* +* - Therefore, +* +* ```tex +* \textrm{result} + m \cdot (rv - A) < m + m \cdot r1 +* ``` +* +* - Therefore, +* +* ```tex +* \textrm{result} + m \cdot (rv - A) < m \cdot (r1+1) +* ``` +* +* - Next, consider the post-condition: \\( m \leq r2 \\). +* +* - According to the definition of \\( \textrm{limit} \\) and the loop condition \\( m \leq \textrm{limit} \\), +* +* ```tex +* m \cdot (r1+1) \leq r2+1 +* ``` +* +* - If \\( r2 \\) is **not** an integer power of the generator range \\( r1 \\), i.e., +* +* ```tex +* m \cdot (r1+1) \neq r2+1 +* ``` +* +* then +* +* ```tex +* m \cdot (r1+1) < r2+1 +* ``` +* +* - Thus, \\( \textrm{result} < m \\). +* +* - Next, consider the post-condition: \\( r2/m < r1+1 \\). +* +* - To show this is true, let us try to prove its opposite. Given the loop condition \\( m > \textrm{limit} \\), assume +* +* ```tex +* r2/m > r1+1 +* ``` +* +* - Accordingly, +* +* ```tex +* r2 \geq m \cdot (r1+1) +* ``` +* +* - Hence, +* +* ```tex +* r2+1 > m \cdot (r1+1) +* ``` +* +* - Using the loop condition, +* +* ```tex +* r2+1 > (\textrm{limit}+1) \cdot (r1+1) +* ``` +* +* - Rearranging terms, +* +* ```tex +* \frac{r2+1}{r1+1} > \textrm{limit} + 1 +* ``` +* +* - Hence, +* +* ```tex +* \textrm{limit} < \lfloor{\frac{r2+1}{r1+1}} \rfloor +* ``` +* +* - But the definition of \\( \textrm{limit} \\) is +* +* ```tex +* \textrm{limit} = \lfloor{\frac{r2+1}{r1+1}} +* ``` +* +* - Thus, our assumption cannot be true, providing the post-condition by reductio ad absurdum. +* +* - Next, consider the post-condition +* +* ```tex +* r2 \leq \frac{r2}{m} \cdot m + (m - 1) +* ``` +* +* - Recall the identity +* +* ```tex +* r2 = \frac{r2}{m} \cdot m + r2 \mod m +* ``` +* +* - By the definition of the modulus +* +* ```tex +* r2 \mod m < m +* ``` +* +* - Therefore, +* +* ```tex +* r2 < \frac{r2}{m} \cdot m + m +* ``` +* +* - Hence, +* +* ```tex +* r2 \leq \frac{r2}{m} \cdot m + (m - 1) +* ``` +* +* At this point, the maximum value \\( \textrm{result} \\) is \\( m-1 \\). Hence, we can generate numbers that can be at least as large as \\( r2 \\), but we must be careful to avoid overflow during addition and in the sampling rejection. Anything which overflows is larger than \\( r2 \\) and can thus be rejected. +* +* - If \\( r1 > r2 \\), use rejection sampling to map random variates from \\( R \\) to a smaller domain (e.g., \\( {0,1,2,3,4} \rightarrow {0,1,2,3} \\)) by defining "buckets" in which multiple random variates in \\( R \\) map to a single random variate in the smaller domain. We are safe in adding 1 to \\( r2 \\); however, we need to be careful to not cause overflow when adding 1 to \\( r1 \\). +* * @name discreteUniform * @type {Function} * @param {integer} a - minimum support From e2e0b19e59a03708ec68ffc9dcaf5d4dcefd6669 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 20:29:55 -0700 Subject: [PATCH 0848/1062] Refactor properties --- .../base/discrete-uniform/lib/factory.js | 66 +++++++++++++++---- 1 file changed, 54 insertions(+), 12 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js index 54ed5004ef00..308a2a3d3223 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/lib/factory.js @@ -20,8 +20,9 @@ // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var randi = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -38,12 +39,15 @@ var discreteUniform0 = require( './discrete_uniform.js' ); * @param {integer} [a] - minimum support * @param {integer} [b] - maximum support * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `a` must be an integer * @throws {TypeError} `b` must be an integer * @throws {RangeError} `a` must be less than `b` -* @throws {TypeError} options must be an object +* @throws {TypeError} options argument must be an object * @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -97,19 +101,55 @@ function factory() { prng = discreteUniform1; } setReadOnly( prng, 'NAME', 'discrete-uniform' ); - setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - setReadOnly( prng, 'stateLength', rand.stateLength ); - setReadOnly( prng, 'byteLength', rand.byteLength ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + /** * Returns the current pseudorandom number generator state. * @@ -125,6 +165,8 @@ function factory() { * * @private * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state */ function setState( s ) { rand.state = s; From bbfd896b91e451483c7ffe260b0d7644acf2091b Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 20:31:05 -0700 Subject: [PATCH 0849/1062] Update tests --- .../random/base/discrete-uniform/test/test.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js index 5872de81c233..ae603b4a1a47 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.js @@ -35,37 +35,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof discreteUniform.factory, 'function', 'has `factory` method' ); + t.equal( typeof discreteUniform.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( discreteUniform.NAME, 'discrete-uniform', 'has `NAME` property' ); + t.equal( discreteUniform.NAME, 'discrete-uniform', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof discreteUniform.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof discreteUniform.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( discreteUniform.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( discreteUniform.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof discreteUniform.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( discreteUniform.state ), true, 'has `state` property' ); + t.equal( isUint32Array( discreteUniform.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof discreteUniform.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof discreteUniform.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof discreteUniform.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof discreteUniform.byteLength, 'number', 'has property' ); t.end(); }); From 5d20fbdc5ac68c6a709b5c4208cc467fbc272336 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 20:34:22 -0700 Subject: [PATCH 0850/1062] Update tests --- .../discrete-uniform/test/test.factory.js | 476 ++++++++++++++---- 1 file changed, 387 insertions(+), 89 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js index e3c935d31799..11018cf0187b 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/test/test.factory.js @@ -27,6 +27,8 @@ var chi2gof = require( '@stdlib/stats/chi2gof' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -45,95 +47,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var discreteUniform; - var r; - var i; - - // When binding distribution parameters... - discreteUniform = factory( -100, 100 ); - for ( i = 0; i < 100; i++ ) { - r = discreteUniform(); - t.equal( typeof r, 'number', 'returns a number' ); - t.equal( isInteger( r ), true, 'returns an integer' ); - } - - // Without binding distribution parameters... - discreteUniform = factory(); - for ( i = 0; i < 100; i++ ) { - r = discreteUniform( -100, 100 ); - t.equal( typeof r, 'number', 'returns a number' ); - t.equal( isInteger( r ), true, 'returns an integer' ); - } - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var discreteUniform1; - var discreteUniform2; - var seed; - var r1; - var r2; - var i; - - seed = now(); - - discreteUniform1 = factory( 0, 40, { - 'seed': seed - }); - discreteUniform2 = factory( 0, 40, { - 'seed': seed - }); - - t.notEqual( discreteUniform1, discreteUniform2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = discreteUniform1(); - r2 = discreteUniform2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var discreteUniform = factory(); - t.equal( discreteUniform.NAME, 'discrete-uniform', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var discreteUniform = factory(); - t.equal( typeof discreteUniform.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var discreteUniform = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( discreteUniform.seed ), true, 'has `seed` property' ); - t.equal( discreteUniform.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state', function test( t ) { - var discreteUniform = factory(); - t.equal( isUint32Array( discreteUniform.state ), true, 'has `state` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state length', function test( t ) { - var discreteUniform = factory(); - t.equal( typeof discreteUniform.stateLength, 'number', 'has `stateLength` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state size', function test( t ) { - var discreteUniform = factory(); - t.equal( typeof discreteUniform.byteLength, 'number', 'has `byteLength` property' ); - t.end(); -}); - tape( 'the function throws an error if minimum support `a` is not an integer primitive', function test( t ) { var values; var i; @@ -270,6 +183,288 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var discreteUniform; + var r; + var i; + + // When binding distribution parameters... + discreteUniform = factory( -100, 100 ); + for ( i = 0; i < 100; i++ ) { + r = discreteUniform(); + t.equal( typeof r, 'number', 'returns a number' ); + t.equal( isInteger( r ), true, 'returns an integer' ); + } + + // Without binding distribution parameters... + discreteUniform = factory(); + for ( i = 0; i < 100; i++ ) { + r = discreteUniform( -100, 100 ); + t.equal( typeof r, 'number', 'returns a number' ); + t.equal( isInteger( r ), true, 'returns an integer' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var discreteUniform1; + var discreteUniform2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + discreteUniform1 = factory( 0, 40, { + 'seed': seed + }); + discreteUniform2 = factory( 0, 40, { + 'seed': seed + }); + + t.notEqual( discreteUniform1, discreteUniform2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = discreteUniform1(); + r2 = discreteUniform2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var discreteUniform1; + var discreteUniform2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + discreteUniform1 = factory( 0, 40, { + 'seed': seed + }); + discreteUniform2 = factory( 0, 40, { + 'seed': seed + }); + + t.notEqual( discreteUniform1, discreteUniform2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = discreteUniform1(); + r2 = discreteUniform2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var discreteUniform = factory(); + t.equal( discreteUniform.NAME, 'discrete-uniform', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var discreteUniform = factory(); + t.equal( typeof discreteUniform.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var discreteUniform = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( discreteUniform.seed ), true, 'has property' ); + t.equal( discreteUniform.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var discreteUniform = factory(); + t.equal( typeof discreteUniform.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var discreteUniform = factory(); + t.equal( isUint32Array( discreteUniform.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var discreteUniform = factory(); + t.equal( typeof discreteUniform.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var discreteUniform = factory(); + t.equal( typeof discreteUniform.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a function that returns `NaN` if `a` is `NaN`', function test( t ) { var discreteUniform; var r; @@ -486,6 +681,109 @@ tape( 'the function returns a PRNG for generating random numbers from a discrete } }); +tape( 'the function supports specifying the generator state', function test( t ) { + var discreteUniform; + var state; + var arr; + var i; + + discreteUniform = factory( -10, 10 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + discreteUniform(); + } + // Capture the current state: + state = discreteUniform.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( discreteUniform() ); + } + + // Create another PRNG using the captured state: + discreteUniform = factory( -10, 10, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( discreteUniform(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var discreteUniform; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + discreteUniform = factory( -10, 10 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + discreteUniform(); + } + // Capture the current state: + state = discreteUniform.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( discreteUniform() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( -10, 10, { + 'state': shared, + 'copy': false + }); + rand2 = factory( -10, 10, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + tape( 'the returned function supports setting the generator state', function test( t ) { var discreteUniform; var state; From d8128198d11dd1e55b339fedb88c8f6c14c8a0e1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 22:09:01 -0700 Subject: [PATCH 0851/1062] Document property and options --- .../@stdlib/random/base/erlang/docs/repl.txt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt b/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt index a4ef7173b40b..286a3624d767 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/erlang/docs/repl.txt @@ -45,8 +45,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -91,6 +104,14 @@ > var seed = {{alias}}.seed; +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. From e8bcc06dd925330a2afe969ac48f1a50b709add4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 22:10:46 -0700 Subject: [PATCH 0852/1062] Document property and options --- .../@stdlib/random/base/erlang/README.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/erlang/README.md b/lib/node_modules/@stdlib/random/base/erlang/README.md index f3f6b6fac2e2..64a61dcfc0ec 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/README.md +++ b/lib/node_modules/@stdlib/random/base/erlang/README.md @@ -102,6 +102,8 @@ r = rand( 4, 3.14 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -124,6 +126,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = erlang( 2, 3.0 ); +} + +// Create a new PRNG initialized to the current state of `erlang`: +rand = erlang.factory({ + 'state': erlang.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 2, 3.0 ) === erlang( 2, 3.0 ) ); +// returns true +``` + #### erlang.NAME The generator name. @@ -165,6 +190,15 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### erlang.seedLength + +Length of generator seed. + +```javascript +var len = erlang.seedLength; +// returns +``` + #### erlang.state Writable property for getting and setting the generator state. @@ -223,6 +257,17 @@ var sz = erlang.byteLength; +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -267,6 +312,8 @@ for ( i = 0; i < 100; i++ ) { [erlang]: https://en.wikipedia.org/wiki/Erlang_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From da4a6a110bb473ccb4a737ce53206f4102a244d4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 22:12:38 -0700 Subject: [PATCH 0853/1062] Refactor properties --- .../@stdlib/random/base/erlang/lib/factory.js | 65 +++++++++++++++---- 1 file changed, 54 insertions(+), 11 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js b/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js index 748c5b61e6a5..05048ef54986 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js @@ -20,8 +20,9 @@ // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -38,10 +39,14 @@ var erlang0 = require( './erlang.js' ); * @param {PositiveInteger} [k] - shape parameter * @param {PositiveNumber} [lambda] - rate parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `k` must be a positive integer * @throws {TypeError} `lambda` must be a positive number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -97,19 +102,55 @@ function factory() { prng = erlang1; } setReadOnly( prng, 'NAME', 'erlang' ); - setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - setReadOnly( prng, 'stateLength', rand.stateLength ); - setReadOnly( prng, 'byteLength', rand.byteLength ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + /** * Returns the current pseudorandom number generator state. * @@ -125,6 +166,8 @@ function factory() { * * @private * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state */ function setState( s ) { rand.state = s; From ce295937504cd0e3f7a82185f3241bb76a8bce21 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 22:13:40 -0700 Subject: [PATCH 0854/1062] Update tests --- .../@stdlib/random/base/erlang/test/test.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/erlang/test/test.js b/lib/node_modules/@stdlib/random/base/erlang/test/test.js index 6dc7f21fe6e1..28dc34b0c291 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/test/test.js +++ b/lib/node_modules/@stdlib/random/base/erlang/test/test.js @@ -34,37 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof erlang.factory, 'function', 'has `factory` method' ); + t.equal( typeof erlang.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( erlang.NAME, 'erlang', 'has `NAME` property' ); + t.equal( erlang.NAME, 'erlang', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof erlang.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof erlang.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( erlang.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( erlang.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof erlang.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( erlang.state ), true, 'has `state` property' ); + t.equal( isUint32Array( erlang.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof erlang.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof erlang.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof erlang.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof erlang.byteLength, 'number', 'has property' ); t.end(); }); From e1d6c64c1b0fc570c547005423403d54660b8774 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 22:19:42 -0700 Subject: [PATCH 0855/1062] Update tests --- .../random/base/erlang/test/test.factory.js | 468 ++++++++++++++---- 1 file changed, 380 insertions(+), 88 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js b/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js index c46e2f69b703..5fada8f8704a 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/erlang/test/test.factory.js @@ -26,6 +26,8 @@ var kstest = require( '@stdlib/stats/kstest' ); var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,94 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var erlang; - var r; - var i; - - // When binding distribution parameters... - erlang = factory( 2, 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = erlang(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - erlang = factory(); - for ( i = 0; i < 100; i++ ) { - r = erlang( 2, 2.5 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var erlang1; - var erlang2; - var seed; - var r1; - var r2; - var i; - - seed = now(); - - erlang1 = factory( 1.0, 1.0, { - 'seed': seed - }); - erlang2 = factory( 1.0, 1.0, { - 'seed': seed - }); - - t.notEqual( erlang1, erlang2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = erlang1(); - r2 = erlang2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var erlang = factory(); - t.equal( erlang.NAME, 'erlang', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var erlang = factory(); - t.equal( typeof erlang.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var erlang = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( erlang.seed ), true, 'has `seed` property' ); - t.equal( erlang.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state', function test( t ) { - var erlang = factory(); - t.equal( isUint32Array( erlang.state ), true, 'has `state` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state length', function test( t ) { - var erlang = factory(); - t.equal( typeof erlang.stateLength, 'number', 'has `stateLength` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state size', function test( t ) { - var erlang = factory(); - t.equal( typeof erlang.byteLength, 'number', 'has `byteLength` property' ); - t.end(); -}); - tape( 'the function throws an error if provided a `k` argument which is not a positive integer', function test( t ) { var values; var i; @@ -249,6 +163,281 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var erlang; + var r; + var i; + + // When binding distribution parameters... + erlang = factory( 2, 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = erlang(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + erlang = factory(); + for ( i = 0; i < 100; i++ ) { + r = erlang( 2, 2.5 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var erlang1; + var erlang2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + erlang1 = factory( 1.0, 1.0, { + 'seed': seed + }); + erlang2 = factory( 1.0, 1.0, { + 'seed': seed + }); + + t.notEqual( erlang1, erlang2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = erlang1(); + r2 = erlang2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var erlang1; + var erlang2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + erlang1 = factory( 1.0, 1.0, { + 'seed': seed + }); + erlang2 = factory( 1.0, 1.0, { + 'seed': seed + }); + + t.notEqual( erlang1, erlang2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = erlang1(); + r2 = erlang2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var erlang = factory(); + t.equal( erlang.NAME, 'erlang', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var erlang = factory(); + t.equal( typeof erlang.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var erlang = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( erlang.seed ), true, 'has property' ); + t.equal( erlang.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var erlang = factory(); + t.equal( isUint32Array( erlang.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var erlang = factory(); + t.equal( typeof erlang.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var erlang = factory(); + t.equal( typeof erlang.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a first argument equal to `NaN`', function test( t ) { var erlang; var r; @@ -383,6 +572,109 @@ tape( 'the function returns a PRNG for generating random numbers from an Erlang } }); +tape( 'the function supports specifying the generator state', function test( t ) { + var erlang; + var state; + var arr; + var i; + + erlang = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + erlang(); + } + // Capture the current state: + state = erlang.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( erlang() ); + } + + // Create another PRNG using the captured state: + erlang = factory( 2.0, 4.0, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( erlang(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var erlang; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + erlang = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + erlang(); + } + // Capture the current state: + state = erlang.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( erlang() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + tape( 'the returned function supports setting the generator state', function test( t ) { var erlang; var state; From cf590fa044352ae1078c5b14899d78ee452a2c08 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 22:20:53 -0700 Subject: [PATCH 0856/1062] Document property and options --- .../random/base/exponential/docs/repl.txt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt b/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt index 630649e09898..4fb2955d21f2 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/exponential/docs/repl.txt @@ -37,8 +37,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -83,6 +96,14 @@ > var seed = {{alias}}.seed; +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. From 2b8dfbb68789ea384ccc494f537296685298d2aa Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 22:22:11 -0700 Subject: [PATCH 0857/1062] Document property and options --- .../@stdlib/random/base/exponential/README.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/exponential/README.md b/lib/node_modules/@stdlib/random/base/exponential/README.md index 724fd84b38c1..5896614c2cb0 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/README.md +++ b/lib/node_modules/@stdlib/random/base/exponential/README.md @@ -87,6 +87,8 @@ r = rand( 3.14 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -109,6 +111,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = exponential( 3.0 ); +} + +// Create a new PRNG initialized to the current state of `exponential`: +rand = exponential.factory({ + 'state': exponential.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 3.0 ) === exponential( 3.0 ) ); +// returns true +``` + #### exponential.NAME The generator name. @@ -150,6 +175,15 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### exponential.seedLength + +Length of generator seed. + +```javascript +var len = exponential.seedLength; +// returns +``` + #### exponential.state Writable property for getting and setting the generator state. @@ -208,6 +242,17 @@ var sz = exponential.byteLength; +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -252,6 +297,8 @@ for ( i = 0; i < 100; i++ ) { [exponential]: https://en.wikipedia.org/wiki/Exponential_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From 83cc9cf83fc32bd4feb2071fded2f7955c1b34e4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 22:24:22 -0700 Subject: [PATCH 0858/1062] Refactor properties --- .../random/base/exponential/lib/factory.js | 65 +++++++++++++++---- 1 file changed, 54 insertions(+), 11 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js b/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js index 18a4459d353e..d5de910053ff 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js @@ -20,8 +20,9 @@ // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isPositive = require( '@stdlib/assert/is-positive-number' ).isPrimitive; var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; @@ -36,9 +37,13 @@ var exponential0 = require( './exponential.js' ); * * @param {PositiveNumber} [lambda] - rate parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `lambda` must be a positive number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -94,19 +99,55 @@ function factory() { prng = exponential1; } setReadOnly( prng, 'NAME', 'exponential' ); - setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - setReadOnly( prng, 'stateLength', rand.stateLength ); - setReadOnly( prng, 'byteLength', rand.byteLength ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + /** * Returns the current pseudorandom number generator state. * @@ -122,6 +163,8 @@ function factory() { * * @private * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state */ function setState( s ) { rand.state = s; From 987f2d3ef63b1da2f90740235589cd3cef5f6d5b Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 22:25:45 -0700 Subject: [PATCH 0859/1062] Update tests --- .../random/base/exponential/test/test.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/exponential/test/test.js b/lib/node_modules/@stdlib/random/base/exponential/test/test.js index b762c73d1fe8..a6cb16a4e004 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/test/test.js +++ b/lib/node_modules/@stdlib/random/base/exponential/test/test.js @@ -34,37 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof exponential.factory, 'function', 'has `factory` method' ); + t.equal( typeof exponential.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof exponential.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof exponential.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( exponential.NAME, 'exponential', 'has `NAME` property' ); + t.equal( exponential.NAME, 'exponential', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( exponential.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( exponential.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof exponential.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( exponential.state ), true, 'has `state` property' ); + t.equal( isUint32Array( exponential.state ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state length', function test( t ) { - t.equal( typeof exponential.stateLength, 'number', 'has `stateLength` property' ); + t.equal( typeof exponential.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof exponential.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof exponential.byteLength, 'number', 'has property' ); t.end(); }); From 47b59d38370687a3277054a952605cd537fd2e59 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 22:28:41 -0700 Subject: [PATCH 0860/1062] Update tests --- .../base/exponential/test/test.factory.js | 474 ++++++++++++++---- 1 file changed, 386 insertions(+), 88 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js b/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js index 99e6cb01e29e..f931ca40334d 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/exponential/test/test.factory.js @@ -26,6 +26,8 @@ var kstest = require( '@stdlib/stats/kstest' ); var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,94 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var exponential; - var r; - var i; - - // When binding distribution parameter... - exponential = factory( 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = exponential(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameter... - exponential = factory(); - for ( i = 0; i < 100; i++ ) { - r = exponential( 100.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var exponential1; - var exponential2; - var seed; - var r1; - var r2; - var i; - - seed = now(); - - exponential1 = factory( 35.0, { - 'seed': seed - }); - exponential2 = factory( 35.0, { - 'seed': seed - }); - - t.notEqual( exponential1, exponential2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = exponential1(); - r2 = exponential2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var exponential = factory(); - t.equal( exponential.NAME, 'exponential', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var exponential = factory(); - t.equal( typeof exponential.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var exponential = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( exponential.seed ), true, 'has `seed` property' ); - t.equal( exponential.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state', function test( t ) { - var exponential = factory(); - t.equal( isUint32Array( exponential.state ), true, 'has `state` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state length', function test( t ) { - var exponential = factory(); - t.equal( typeof exponential.stateLength, 'number', 'has `stateLength` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state size', function test( t ) { - var exponential = factory(); - t.equal( typeof exponential.byteLength, 'number', 'has `byteLength` property' ); - t.end(); -}); - tape( 'the function throws an error if provided a rate which is not a positive number (no options)', function test( t ) { var values; var i; @@ -246,6 +160,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var exponential; + var r; + var i; + + // When binding distribution parameter... + exponential = factory( 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = exponential(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameter... + exponential = factory(); + for ( i = 0; i < 100; i++ ) { + r = exponential( 100.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var exponential1; + var exponential2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + exponential1 = factory( 35.0, { + 'seed': seed + }); + exponential2 = factory( 35.0, { + 'seed': seed + }); + + t.notEqual( exponential1, exponential2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = exponential1(); + r2 = exponential2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var exponential1; + var exponential2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + exponential1 = factory( 35.0, { + 'seed': seed + }); + exponential2 = factory( 35.0, { + 'seed': seed + }); + + t.notEqual( exponential1, exponential2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = exponential1(); + r2 = exponential2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var exponential = factory(); + t.equal( exponential.NAME, 'exponential', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var exponential = factory(); + t.equal( typeof exponential.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var exponential = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( exponential.seed ), true, 'has `seed` property' ); + t.equal( exponential.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var exponential = factory(); + t.equal( typeof exponential.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var exponential = factory(); + t.equal( isUint32Array( exponential.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var exponential = factory(); + t.equal( typeof exponential.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var exponential = factory(); + t.equal( typeof exponential.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a rate equal to `NaN`', function test( t ) { var exponential; var r; @@ -344,6 +539,109 @@ tape( 'the function returns a PRNG for generating random numbers from an exponen } }); +tape( 'the function supports specifying the generator state', function test( t ) { + var exponential; + var state; + var arr; + var i; + + exponential = factory( 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + exponential(); + } + // Capture the current state: + state = exponential.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( exponential() ); + } + + // Create another PRNG using the captured state: + exponential = factory( 4.0, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( exponential(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var exponential; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + exponential = factory( 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + exponential(); + } + // Capture the current state: + state = exponential.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( exponential() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 4.0, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 4.0, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + tape( 'the returned function supports setting the generator state', function test( t ) { var exponential; var state; From cefcbf926ad12cb2bbe7cde2b80e9c72e05f7778 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 23:43:22 -0700 Subject: [PATCH 0861/1062] Add benchmarks --- .../arcsine/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ .../base/arcsine/benchmark/benchmark.js | 2 +- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 lib/node_modules/@stdlib/random/base/arcsine/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/arcsine/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/arcsine/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..c811fb5b0e73 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/arcsine/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/arcsine/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/arcsine/benchmark/benchmark.js index def54429d829..a412c0735a02 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( assert ) { assert.end(); }); -bench( pkg+':factory', function benchmark( assert ) { +bench( pkg+'::factory', function benchmark( assert ) { var rand; var a; var b; From 026964f143fe37bcac131526fa0745801f0a126a Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 23:44:15 -0700 Subject: [PATCH 0862/1062] Add benchmarks --- .../bernoulli/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ .../base/bernoulli/benchmark/benchmark.js | 2 +- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 lib/node_modules/@stdlib/random/base/bernoulli/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..c811fb5b0e73 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/benchmark.js index 886a33583188..f5bd667cf93b 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/benchmark.js @@ -50,7 +50,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var rand; var p; var z; From 51a5b8bce98009ccf2a41a1876416bfe9526e72d Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 23:45:22 -0700 Subject: [PATCH 0863/1062] Add benchmarks --- .../base/beta/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ .../random/base/beta/benchmark/benchmark.js | 2 +- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 lib/node_modules/@stdlib/random/base/beta/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/beta/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/beta/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..c811fb5b0e73 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/beta/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/beta/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/beta/benchmark/benchmark.js index a8426aca3cd3..b9ea2439affb 100644 --- a/lib/node_modules/@stdlib/random/base/beta/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/beta/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var alpha; var beta; var rand; From 1a7c82fb44f82cb39b068f992bc8bd26da7aa014 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 23:46:02 -0700 Subject: [PATCH 0864/1062] Add benchmarks --- .../betaprime/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ .../base/betaprime/benchmark/benchmark.js | 2 +- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 lib/node_modules/@stdlib/random/base/betaprime/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/betaprime/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/betaprime/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..c811fb5b0e73 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/betaprime/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/betaprime/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/betaprime/benchmark/benchmark.js index 7e69a1d908b2..6f65b14d6677 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var alpha; var beta; var rand; From 5d88422413c276aad58fab5506c1cecd5c194069 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 23:46:36 -0700 Subject: [PATCH 0865/1062] Add benchmarks --- .../binomial/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ .../base/binomial/benchmark/benchmark.js | 2 +- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 lib/node_modules/@stdlib/random/base/binomial/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/binomial/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/binomial/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..c811fb5b0e73 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/binomial/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/binomial/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/binomial/benchmark/benchmark.js index e0bd4e147727..632dd686d5bc 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/binomial/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var rand; var n; var p; From abe4cfb683889cb613539f4597e5e58dbc49acf1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 23:47:02 -0700 Subject: [PATCH 0866/1062] Add benchmarks --- .../cauchy/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ .../random/base/cauchy/benchmark/benchmark.js | 2 +- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 lib/node_modules/@stdlib/random/base/cauchy/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/cauchy/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/cauchy/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..c811fb5b0e73 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/cauchy/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/cauchy/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/cauchy/benchmark/benchmark.js index 1acffcd30e25..f866e1e580bc 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var gamma; var rand; var x0; From e07adb21ee96f82419612203735a9f79b34cbc1b Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 23:47:38 -0700 Subject: [PATCH 0867/1062] Add benchmarks --- .../base/chi/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ .../random/base/chi/benchmark/benchmark.js | 2 +- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 lib/node_modules/@stdlib/random/base/chi/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/chi/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/chi/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..c811fb5b0e73 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/chi/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/chi/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/chi/benchmark/benchmark.js index 22e8926513a2..2e521dfacdbb 100644 --- a/lib/node_modules/@stdlib/random/base/chi/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/chi/benchmark/benchmark.js @@ -51,7 +51,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var rand; var k; var z; From 4a114e327309a967958eabbbf66ce9059fd1195c Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 23:48:05 -0700 Subject: [PATCH 0868/1062] Add benchmarks --- .../chisquare/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ .../base/chisquare/benchmark/benchmark.js | 2 +- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 lib/node_modules/@stdlib/random/base/chisquare/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/chisquare/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/chisquare/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..c811fb5b0e73 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/chisquare/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/chisquare/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/chisquare/benchmark/benchmark.js index 438fa4959d1e..56f3d1b3d3a7 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/benchmark/benchmark.js @@ -51,7 +51,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var rand; var k; var z; From 760a374bb1cd7dce0cfbb9eab1d5630f52d6765a Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 23:48:37 -0700 Subject: [PATCH 0869/1062] Add benchmarks --- .../cosine/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ .../random/base/cosine/benchmark/benchmark.js | 2 +- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 lib/node_modules/@stdlib/random/base/cosine/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/cosine/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/cosine/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..c811fb5b0e73 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/cosine/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/cosine/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/cosine/benchmark/benchmark.js index 18bafb563726..fbcc56042e3c 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/cosine/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var rand; var mu; var s; From 36dcdedf7ef1c0cc50e4fb12156c749d9d90dac7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 23:49:11 -0700 Subject: [PATCH 0870/1062] Add benchmarks --- .../benchmark/benchmark.factory.js | 105 ++++++++++++++++++ .../discrete-uniform/benchmark/benchmark.js | 2 +- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 lib/node_modules/@stdlib/random/base/discrete-uniform/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..c811fb5b0e73 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/benchmark/benchmark.js index 4435385442d6..4f04af641567 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/benchmark/benchmark.js @@ -54,7 +54,7 @@ bench( pkg, function benchmark( assert ) { assert.end(); }); -bench( pkg+':factory', function benchmark( assert ) { +bench( pkg+'::factory', function benchmark( assert ) { var rand; var a; var b; From f5ee818ac9cd434fd39b8feb01314a55d529fe7c Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 23:49:42 -0700 Subject: [PATCH 0871/1062] Add benchmarks --- .../erlang/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ .../random/base/erlang/benchmark/benchmark.js | 2 +- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 lib/node_modules/@stdlib/random/base/erlang/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/erlang/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/erlang/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..c811fb5b0e73 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/erlang/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/erlang/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/erlang/benchmark/benchmark.js index f01e8f2b1ef1..61fa9808ad96 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/erlang/benchmark/benchmark.js @@ -54,7 +54,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var lambda; var rand; var k; From b178c36e7c223c76476a37a64ccba79527d943ef Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 23:50:07 -0700 Subject: [PATCH 0872/1062] Add benchmarks --- .../benchmark/benchmark.factory.js | 105 ++++++++++++++++++ .../base/exponential/benchmark/benchmark.js | 2 +- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 lib/node_modules/@stdlib/random/base/exponential/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/exponential/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/exponential/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..c811fb5b0e73 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/exponential/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/exponential/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/exponential/benchmark/benchmark.js index ee186987b5d5..7928648720e2 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/exponential/benchmark/benchmark.js @@ -51,7 +51,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var lambda; var rand; var z; From 5df22b49a792fbf51b7949b755e17ae5eaf72cc3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Thu, 11 Oct 2018 23:54:40 -0700 Subject: [PATCH 0873/1062] Fix benchmarks --- .../random/base/arcsine/benchmark/benchmark.factory.js | 6 +++--- .../random/base/bernoulli/benchmark/benchmark.factory.js | 6 +++--- .../@stdlib/random/base/beta/benchmark/benchmark.factory.js | 6 +++--- .../random/base/betaprime/benchmark/benchmark.factory.js | 6 +++--- .../random/base/binomial/benchmark/benchmark.factory.js | 6 +++--- .../random/base/cauchy/benchmark/benchmark.factory.js | 6 +++--- .../@stdlib/random/base/chi/benchmark/benchmark.factory.js | 6 +++--- .../random/base/chisquare/benchmark/benchmark.factory.js | 6 +++--- .../random/base/cosine/benchmark/benchmark.factory.js | 6 +++--- .../base/discrete-uniform/benchmark/benchmark.factory.js | 6 +++--- .../random/base/erlang/benchmark/benchmark.factory.js | 6 +++--- .../random/base/exponential/benchmark/benchmark.factory.js | 6 +++--- 12 files changed, 36 insertions(+), 36 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/arcsine/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/arcsine/benchmark/benchmark.factory.js index c811fb5b0e73..3149e90e81f9 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/benchmark/benchmark.factory.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/benchmark/benchmark.factory.js @@ -42,7 +42,7 @@ bench( pkg+':factory', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 0.0, 10.0 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -67,7 +67,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 0.0, 10.0 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -97,7 +97,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 0.0, 10.0 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/benchmark.factory.js index c811fb5b0e73..e76b5e5ba35b 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/benchmark.factory.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/benchmark.factory.js @@ -42,7 +42,7 @@ bench( pkg+':factory', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 0.75 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -67,7 +67,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 0.75 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -97,7 +97,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 0.75 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/random/base/beta/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/beta/benchmark/benchmark.factory.js index c811fb5b0e73..26617d88ca33 100644 --- a/lib/node_modules/@stdlib/random/base/beta/benchmark/benchmark.factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/benchmark/benchmark.factory.js @@ -42,7 +42,7 @@ bench( pkg+':factory', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 2.0, 4.0 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -67,7 +67,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 2.0, 4.0 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -97,7 +97,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 2.0, 4.0 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/random/base/betaprime/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/betaprime/benchmark/benchmark.factory.js index c811fb5b0e73..26617d88ca33 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/benchmark/benchmark.factory.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/benchmark/benchmark.factory.js @@ -42,7 +42,7 @@ bench( pkg+':factory', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 2.0, 4.0 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -67,7 +67,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 2.0, 4.0 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -97,7 +97,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 2.0, 4.0 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/random/base/binomial/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/binomial/benchmark/benchmark.factory.js index c811fb5b0e73..685264813871 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/benchmark/benchmark.factory.js +++ b/lib/node_modules/@stdlib/random/base/binomial/benchmark/benchmark.factory.js @@ -42,7 +42,7 @@ bench( pkg+':factory', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 100, 0.7 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -67,7 +67,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 100, 0.7 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -97,7 +97,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 100, 0.7 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/random/base/cauchy/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/cauchy/benchmark/benchmark.factory.js index c811fb5b0e73..d8564f8eb968 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/benchmark/benchmark.factory.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/benchmark/benchmark.factory.js @@ -42,7 +42,7 @@ bench( pkg+':factory', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 0.0, 1.5 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -67,7 +67,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 0.0, 1.5 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -97,7 +97,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 0.0, 1.5 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/random/base/chi/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/chi/benchmark/benchmark.factory.js index c811fb5b0e73..ecf2fac42a36 100644 --- a/lib/node_modules/@stdlib/random/base/chi/benchmark/benchmark.factory.js +++ b/lib/node_modules/@stdlib/random/base/chi/benchmark/benchmark.factory.js @@ -42,7 +42,7 @@ bench( pkg+':factory', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 10 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -67,7 +67,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 10 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -97,7 +97,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 10 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/random/base/chisquare/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/chisquare/benchmark/benchmark.factory.js index c811fb5b0e73..ecf2fac42a36 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/benchmark/benchmark.factory.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/benchmark/benchmark.factory.js @@ -42,7 +42,7 @@ bench( pkg+':factory', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 10 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -67,7 +67,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 10 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -97,7 +97,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 10 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/random/base/cosine/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/cosine/benchmark/benchmark.factory.js index c811fb5b0e73..d8564f8eb968 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/benchmark/benchmark.factory.js +++ b/lib/node_modules/@stdlib/random/base/cosine/benchmark/benchmark.factory.js @@ -42,7 +42,7 @@ bench( pkg+':factory', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 0.0, 1.5 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -67,7 +67,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 0.0, 1.5 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -97,7 +97,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 0.0, 1.5 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/benchmark/benchmark.factory.js index c811fb5b0e73..032bc3cc24ea 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/benchmark/benchmark.factory.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/benchmark/benchmark.factory.js @@ -42,7 +42,7 @@ bench( pkg+':factory', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( -10, 10 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -67,7 +67,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( -10, 10 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -97,7 +97,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( -10, 10 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/random/base/erlang/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/erlang/benchmark/benchmark.factory.js index c811fb5b0e73..24d3aecfcc41 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/benchmark/benchmark.factory.js +++ b/lib/node_modules/@stdlib/random/base/erlang/benchmark/benchmark.factory.js @@ -42,7 +42,7 @@ bench( pkg+':factory', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 2, 1.5 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -67,7 +67,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 2, 1.5 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -97,7 +97,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 2, 1.5 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/random/base/exponential/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/exponential/benchmark/benchmark.factory.js index c811fb5b0e73..c0a06e776620 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/benchmark/benchmark.factory.js +++ b/lib/node_modules/@stdlib/random/base/exponential/benchmark/benchmark.factory.js @@ -42,7 +42,7 @@ bench( pkg+':factory', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 10.0 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -67,7 +67,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 10.0 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); @@ -97,7 +97,7 @@ bench( pkg+':factory:seed=', function benchmark( b ) { } } b.toc(); - if ( isnan( f() ) ) { + if ( isnan( f( 10.0 ) ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); From 3fe14d0c41f87fc62ddfd78ccc7a8dc3eb93b03a Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:01:07 -0700 Subject: [PATCH 0874/1062] Add benchmarks --- .../base/arcsine/benchmark/benchmark.js | 26 +++++++++++++++++++ .../base/bernoulli/benchmark/benchmark.js | 24 +++++++++++++++++ .../random/base/beta/benchmark/benchmark.js | 26 +++++++++++++++++++ .../base/betaprime/benchmark/benchmark.js | 26 +++++++++++++++++++ .../base/binomial/benchmark/benchmark.js | 26 +++++++++++++++++++ .../random/base/cauchy/benchmark/benchmark.js | 26 +++++++++++++++++++ .../random/base/chi/benchmark/benchmark.js | 24 +++++++++++++++++ .../base/chisquare/benchmark/benchmark.js | 24 +++++++++++++++++ .../random/base/cosine/benchmark/benchmark.js | 26 +++++++++++++++++++ .../discrete-uniform/benchmark/benchmark.js | 26 +++++++++++++++++++ .../random/base/erlang/benchmark/benchmark.js | 26 +++++++++++++++++++ .../base/exponential/benchmark/benchmark.js | 24 +++++++++++++++++ 12 files changed, 304 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/arcsine/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/arcsine/benchmark/benchmark.js index a412c0735a02..6afdcfef6ebc 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/benchmark/benchmark.js @@ -78,3 +78,29 @@ bench( pkg+'::factory', function benchmark( assert ) { assert.pass( 'benchmark finished' ); assert.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( assert ) { + var rand; + var a; + var b; + var z; + var i; + + a = 0.0; + b = 10.0; + rand = arcsine.factory(); + + assert.tic(); + for ( i = 0; i < assert.iterations; i++ ) { + z = rand( a, b ); + if ( isnan( z ) ) { + assert.fail( 'should not return NaN' ); + } + } + assert.toc(); + if ( isnan( z ) ) { + assert.fail( 'should not return NaN' ); + } + assert.pass( 'benchmark finished' ); + assert.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/benchmark.js index f5bd667cf93b..42c125c58e19 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/benchmark/benchmark.js @@ -73,3 +73,27 @@ bench( pkg+'::factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var rand; + var p; + var z; + var i; + + p = 0.7549; + rand = bernoulli.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( p ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/beta/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/beta/benchmark/benchmark.js index b9ea2439affb..d08a72ccdd63 100644 --- a/lib/node_modules/@stdlib/random/base/beta/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/beta/benchmark/benchmark.js @@ -78,3 +78,29 @@ bench( pkg+'::factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var alpha; + var beta; + var rand; + var z; + var i; + + alpha = 100.56789; + beta = 55.54321; + rand = rbeta.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( alpha, beta ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/betaprime/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/betaprime/benchmark/benchmark.js index 6f65b14d6677..0676b13aa9ac 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/benchmark/benchmark.js @@ -78,3 +78,29 @@ bench( pkg+'::factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var alpha; + var beta; + var rand; + var z; + var i; + + alpha = 100.56789; + beta = 55.54321; + rand = betaprime.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( alpha, beta ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/binomial/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/binomial/benchmark/benchmark.js index 632dd686d5bc..dd4e3597c5ce 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/binomial/benchmark/benchmark.js @@ -78,3 +78,29 @@ bench( pkg+'::factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var rand; + var n; + var p; + var z; + var i; + + n = 100; + p = 0.74321; + rand = binomial.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( n, p ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/cauchy/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/cauchy/benchmark/benchmark.js index f866e1e580bc..2ce20cec158f 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/benchmark/benchmark.js @@ -78,3 +78,29 @@ bench( pkg+'::factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var gamma; + var rand; + var x0; + var z; + var i; + + x0 = 0.0; + gamma = 1.5; + rand = cauchy.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( x0, gamma ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/chi/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/chi/benchmark/benchmark.js index 2e521dfacdbb..826f3c9bd186 100644 --- a/lib/node_modules/@stdlib/random/base/chi/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/chi/benchmark/benchmark.js @@ -74,3 +74,27 @@ bench( pkg+'::factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var rand; + var k; + var z; + var i; + + k = 10; + rand = chi.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( k ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/chisquare/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/chisquare/benchmark/benchmark.js index 56f3d1b3d3a7..30a4f544bc5a 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/benchmark/benchmark.js @@ -74,3 +74,27 @@ bench( pkg+'::factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var rand; + var k; + var z; + var i; + + k = 10; + rand = chisquare.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( k ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/cosine/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/cosine/benchmark/benchmark.js index fbcc56042e3c..10c09fe510c7 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/cosine/benchmark/benchmark.js @@ -78,3 +78,29 @@ bench( pkg+'::factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var rand; + var mu; + var s; + var z; + var i; + + mu = 0.0; + s = 1.5; + rand = cosine.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( mu, s ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/discrete-uniform/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/discrete-uniform/benchmark/benchmark.js index 4f04af641567..c55a08ba5d46 100644 --- a/lib/node_modules/@stdlib/random/base/discrete-uniform/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/discrete-uniform/benchmark/benchmark.js @@ -80,6 +80,32 @@ bench( pkg+'::factory', function benchmark( assert ) { assert.end(); }); +bench( pkg+'::factory,arguments', function benchmark( assert ) { + var rand; + var a; + var b; + var z; + var i; + + a = 0; + b = 100; + rand = discreteUniform.factory(); + + assert.tic(); + for ( i = 0; i < assert.iterations; i++ ) { + z = rand( a, b ); + if ( isnan( z ) ) { + assert.fail( 'should not return NaN' ); + } + } + assert.toc(); + if ( isnan( z ) ) { + assert.fail( 'should not return NaN' ); + } + assert.pass( 'benchmark finished' ); + assert.end(); +}); + bench( pkg+'::naive', function benchmark( assert ) { var a; var b; diff --git a/lib/node_modules/@stdlib/random/base/erlang/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/erlang/benchmark/benchmark.js index 61fa9808ad96..64f62d5832b9 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/erlang/benchmark/benchmark.js @@ -79,3 +79,29 @@ bench( pkg+'::factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var lambda; + var rand; + var k; + var z; + var i; + + k = 2; + lambda = 1.5; + rand = erlang.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( k, lambda ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/exponential/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/exponential/benchmark/benchmark.js index 7928648720e2..e6d982ae60eb 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/exponential/benchmark/benchmark.js @@ -74,3 +74,27 @@ bench( pkg+'::factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var lambda; + var rand; + var z; + var i; + + lambda = 10.0; + rand = exponential.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( lambda ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From f2018f5ebe4d71b91a8550e08f59d2e5c64aa055 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:17:09 -0700 Subject: [PATCH 0875/1062] Update benchmarks --- .../random/base/f/benchmark/benchmark.js | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/f/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/f/benchmark/benchmark.js index a78985ed1f2b..097c6a14122d 100644 --- a/lib/node_modules/@stdlib/random/base/f/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/f/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var rand; var d1; var d2; @@ -78,3 +78,29 @@ bench( pkg+':factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var rand; + var d1; + var d2; + var z; + var i; + + d1 = 1.5; + d2 = 1.5; + rand = f.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( d1, d2 ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 64ea768a4b8f6c7b906ac399e3b408f589fe5354 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:18:27 -0700 Subject: [PATCH 0876/1062] Add benchmarks --- .../base/f/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/f/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/f/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/f/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..7edc384f98e4 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/f/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 1.5, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 1.5, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 1.5, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 315a7d036574ec2ade0ac842500da3616b632140 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:20:04 -0700 Subject: [PATCH 0877/1062] Document properties and options --- .../@stdlib/random/base/f/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/f/docs/repl.txt b/lib/node_modules/@stdlib/random/base/f/docs/repl.txt index 264fbdc70fda..40727e413ca0 100644 --- a/lib/node_modules/@stdlib/random/base/f/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/f/docs/repl.txt @@ -45,8 +45,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -90,6 +103,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 1.5, 1.5 ) + + > r = {{alias}}( 1.5, 1.5 ) + + > r = {{alias}}( 1.5, 1.5 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 1.5, 1.5 ) + + > r = {{alias}}( 1.5, 1.5 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 1.5, 1.5 ) + + > r = {{alias}}( 1.5, 1.5 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From 0e2c22d5f96b64ddfe3a3e6bce223635c17b0168 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:22:16 -0700 Subject: [PATCH 0878/1062] Document properties and options --- .../@stdlib/random/base/f/README.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/f/README.md b/lib/node_modules/@stdlib/random/base/f/README.md index 3cbbe316ff29..5e1868cb4a84 100644 --- a/lib/node_modules/@stdlib/random/base/f/README.md +++ b/lib/node_modules/@stdlib/random/base/f/README.md @@ -98,6 +98,8 @@ r = rand( 3.14, 2.25 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -120,6 +122,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = f( 2.0, 3.0 ); +} + +// Create a new PRNG initialized to the current state of `f`: +rand = f.factory({ + 'state': f.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 2.0, 3.0 ) === f( 2.0, 3.0 ) ); +// returns true +``` + #### f.NAME The generator name. @@ -161,10 +186,84 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### f.seedLength + +Length of generator seed. + +```javascript +var len = f.seedLength; +// returns +``` + +#### f.state + +Writable property for getting and setting the generator state. + +```javascript +var r = f( 2.0, 3.0 ); +// returns + +r = f( 2.0, 3.0 ); +// returns + +// ... + +// Get a copy of the current state: +var state = f.state; +// returns + +r = f( 2.0, 3.0 ); +// returns + +r = f( 2.0, 3.0 ); +// returns + +// Reset the state: +f.state = state; + +// Replay the last two pseudorandom numbers: +r = f( 2.0, 3.0 ); +// returns + +r = f( 2.0, 3.0 ); +// returns + +// ... +``` + +#### f.stateLength + +Length of generator state. + +```javascript +var len = f.stateLength; +// returns +``` + +#### f.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = f.byteLength; +// returns +``` + +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -209,6 +308,8 @@ for ( i = 0; i < 100; i++ ) { [f]: https://en.wikipedia.org/wiki/F_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From a1aae9559d032b3ea8b63ada8f618d27a950be7c Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:22:57 -0700 Subject: [PATCH 0879/1062] Rename files --- .../@stdlib/random/base/f/lib/f.js | 25 ++++++------------- .../@stdlib/random/base/f/lib/factory.js | 2 +- .../@stdlib/random/base/f/lib/index.js | 2 +- .../random/base/f/lib/{_f.js => main.js} | 25 +++++++++++++------ 4 files changed, 27 insertions(+), 27 deletions(-) rename lib/node_modules/@stdlib/random/base/f/lib/{_f.js => main.js} (79%) diff --git a/lib/node_modules/@stdlib/random/base/f/lib/f.js b/lib/node_modules/@stdlib/random/base/f/lib/f.js index a8d80a77c591..b4f4da1bf635 100644 --- a/lib/node_modules/@stdlib/random/base/f/lib/f.js +++ b/lib/node_modules/@stdlib/random/base/f/lib/f.js @@ -18,31 +18,20 @@ 'use strict'; -// MODULES // - -var factory = require( './factory.js' ); - - -// MAIN // - /** * Returns a pseudorandom number from an F distribution with parameters `d1` and `d2`. * -* @name f -* @type {Function} +* @private +* @param {Function} rchisq - PRNG for chi-square distributed numbers * @param {PositiveNumber} d1 - degrees of freedom * @param {PositiveNumber} d2 - degrees of freedom * @returns {NonNegativeNumber} pseudorandom number -* -* @example -* var v = f( 3.0, 2.0 ); -* // returns -* -* @example -* var r = f( -2.0, 5.0 ); -* // returns NaN */ -var f = factory(); +function f( rchisq, d1, d2 ) { + var x1 = rchisq( d1 ) / d1; + var x2 = rchisq( d2 ) / d2; + return x1 / x2; +} // EXPORTS // diff --git a/lib/node_modules/@stdlib/random/base/f/lib/factory.js b/lib/node_modules/@stdlib/random/base/f/lib/factory.js index 6b599ba6ec86..7badb2f014bf 100644 --- a/lib/node_modules/@stdlib/random/base/f/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/f/lib/factory.js @@ -25,7 +25,7 @@ var isObject = require( '@stdlib/assert/is-plain-object' ); var chisquare = require( '@stdlib/random/base/chisquare' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); var validate = require( './validate.js' ); -var f0 = require( './_f.js' ); +var f0 = require( './f.js' ); // MAIN // diff --git a/lib/node_modules/@stdlib/random/base/f/lib/index.js b/lib/node_modules/@stdlib/random/base/f/lib/index.js index a93982dfc497..d287a973bce0 100644 --- a/lib/node_modules/@stdlib/random/base/f/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/f/lib/index.js @@ -43,7 +43,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var f = require( './f.js' ); +var f = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/f/lib/_f.js b/lib/node_modules/@stdlib/random/base/f/lib/main.js similarity index 79% rename from lib/node_modules/@stdlib/random/base/f/lib/_f.js rename to lib/node_modules/@stdlib/random/base/f/lib/main.js index b4f4da1bf635..a8d80a77c591 100644 --- a/lib/node_modules/@stdlib/random/base/f/lib/_f.js +++ b/lib/node_modules/@stdlib/random/base/f/lib/main.js @@ -18,20 +18,31 @@ 'use strict'; +// MODULES // + +var factory = require( './factory.js' ); + + +// MAIN // + /** * Returns a pseudorandom number from an F distribution with parameters `d1` and `d2`. * -* @private -* @param {Function} rchisq - PRNG for chi-square distributed numbers +* @name f +* @type {Function} * @param {PositiveNumber} d1 - degrees of freedom * @param {PositiveNumber} d2 - degrees of freedom * @returns {NonNegativeNumber} pseudorandom number +* +* @example +* var v = f( 3.0, 2.0 ); +* // returns +* +* @example +* var r = f( -2.0, 5.0 ); +* // returns NaN */ -function f( rchisq, d1, d2 ) { - var x1 = rchisq( d1 ) / d1; - var x2 = rchisq( d2 ) / d2; - return x1 / x2; -} +var f = factory(); // EXPORTS // From fde9dde0ccf5c285b9b55b054ab83b072e7ee95b Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:24:44 -0700 Subject: [PATCH 0880/1062] Add support for getting and setting PRNG state --- .../@stdlib/random/base/f/lib/factory.js | 76 ++++++++++++++++++- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/f/lib/factory.js b/lib/node_modules/@stdlib/random/base/f/lib/factory.js index 7badb2f014bf..6768e1e10e88 100644 --- a/lib/node_modules/@stdlib/random/base/f/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/f/lib/factory.js @@ -21,6 +21,8 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var chisquare = require( '@stdlib/random/base/chisquare' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -36,10 +38,14 @@ var f0 = require( './f.js' ); * @param {PositiveNumber} [d1] - degrees of freedom * @param {PositiveNumber} [d2] - degrees of freedom * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `d1` must be a positive number * @throws {TypeError} `d2` must be a positive number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -93,11 +99,77 @@ function factory() { prng = f1; } setReadOnly( prng, 'NAME', 'f' ); - setReadOnly( prng, 'seed', rand.seed ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + rand.state = s; + } + /** * Returns a pseudorandom number from an F distribution with bound parameters. * From 5e7f1c101413017f91199f14c8904e8d1bfcaa03 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:26:11 -0700 Subject: [PATCH 0881/1062] Update tests --- .../@stdlib/random/base/f/test/test.js | 53 +++++++++++++++++-- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/f/test/test.js b/lib/node_modules/@stdlib/random/base/f/test/test.js index f446c999774b..218e495127f3 100644 --- a/lib/node_modules/@stdlib/random/base/f/test/test.js +++ b/lib/node_modules/@stdlib/random/base/f/test/test.js @@ -34,17 +34,17 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof f.factory, 'function', 'has `factory` method' ); + t.equal( typeof f.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( f.NAME, 'f', 'has `NAME` property' ); + t.equal( f.NAME, 'f', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof f.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof f.PRNG, 'function', 'has property' ); t.end(); }); @@ -53,6 +53,26 @@ tape( 'attached to the main export is the generator seed', function test( t ) { t.end(); }); +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof f.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( f.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof f.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof f.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'the function returns pseudorandom numbers', function test( t ) { var r; var i; @@ -63,3 +83,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + f( 2.0, 4.0 ); + } + // Capture the current state: + state = f.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( f( 2.0, 4.0 ) ); + } + // Set the state: + f.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( f( 2.0, 4.0 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 9a0fd23234ac55830d46cc7121b7e40d6fe12c57 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:29:53 -0700 Subject: [PATCH 0882/1062] Update tests --- .../random/base/f/test/test.factory.js | 488 +++++++++++++++--- 1 file changed, 417 insertions(+), 71 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/f/test/test.factory.js b/lib/node_modules/@stdlib/random/base/f/test/test.factory.js index 08014b24ad21..9eefdae00c04 100644 --- a/lib/node_modules/@stdlib/random/base/f/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/f/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var kstest = require( '@stdlib/stats/kstest' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,76 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var f; - var r; - var i; - - // When binding distribution parameters... - f = factory( 2.0, 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = f(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - f = factory(); - for ( i = 0; i < 100; i++ ) { - r = f( 2.5, 2.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var randf1; - var randf2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - randf1 = factory( 1.0, 1.0, { - 'seed': seed - }); - randf2 = factory( 1.0, 1.0, { - 'seed': seed - }); - - t.notEqual( randf1, randf2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = randf1(); - r2 = randf2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var f = factory(); - t.equal( f.NAME, 'f', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var f = factory(); - t.equal( typeof f.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var f = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( f.seed ), true, 'has `seed` property' ); - t.equal( f.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if provided a `d1` argument which is not a positive number', function test( t ) { var values; var i; @@ -230,6 +162,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var f; + var r; + var i; + + // When binding distribution parameters... + f = factory( 2.0, 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = f(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + f = factory(); + for ( i = 0; i < 100; i++ ) { + r = f( 2.5, 2.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var randf1; + var randf2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + randf1 = factory( 1.0, 1.0, { + 'seed': seed + }); + randf2 = factory( 1.0, 1.0, { + 'seed': seed + }); + + t.notEqual( randf1, randf2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = randf1(); + r2 = randf2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var randf1; + var randf2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + randf1 = factory( 1.0, 1.0, { + 'seed': seed + }); + randf2 = factory( 1.0, 1.0, { + 'seed': seed + }); + + t.notEqual( randf1, randf2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = randf1(); + r2 = randf2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var f = factory(); + t.equal( f.NAME, 'f', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var f = factory(); + t.equal( typeof f.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var f = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( f.seed ), true, 'has property' ); + t.equal( f.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var f = factory(); + t.equal( typeof f.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var f = factory(); + t.equal( isUint32Array( f.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var f = factory(); + t.equal( typeof f.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var f = factory(); + t.equal( typeof f.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` if provided a first argument which is `NaN`', function test( t ) { var f; var r; @@ -363,3 +576,136 @@ tape( 'the function returns a PRNG for generating random numbers from an F distr t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var state; + var arr; + var f; + var i; + + f = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + f(); + } + // Capture the current state: + state = f.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( f() ); + } + + // Create another PRNG using the captured state: + f = factory( 2.0, 4.0, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( f(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var f; + var i; + var j; + + f = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + f(); + } + // Capture the current state: + state = f.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( f() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var state; + var arr; + var f; + var i; + + f = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + f(); + } + // Capture the current state: + state = f.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( f() ); + } + // Set the state: + f.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( f(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 9852d593d5c74beb6cb2e57d733a20b05ab2d6fc Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:32:03 -0700 Subject: [PATCH 0883/1062] Update benchmarks --- .../base/frechet/benchmark/benchmark.js | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/frechet/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/frechet/benchmark/benchmark.js index 7b59485e255a..33cbb03be26a 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/frechet/benchmark/benchmark.js @@ -55,7 +55,7 @@ bench( pkg, function benchmark( assert ) { assert.end(); }); -bench( pkg+':factory', function benchmark( assert ) { +bench( pkg+'::factory', function benchmark( assert ) { var alpha; var rand; var s; @@ -82,3 +82,31 @@ bench( pkg+':factory', function benchmark( assert ) { assert.pass( 'benchmark finished' ); assert.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( assert ) { + var alpha; + var rand; + var s; + var m; + var z; + var i; + + alpha = 200.0; + s = 440.0; + m = 383.5; + rand = frechet.factory(); + + assert.tic(); + for ( i = 0; i < assert.iterations; i++ ) { + z = rand( alpha, s, m ); + if ( isnan( z ) ) { + assert.fail( 'should not return NaN' ); + } + } + assert.toc(); + if ( isnan( z ) ) { + assert.fail( 'should not return NaN' ); + } + assert.pass( 'benchmark finished' ); + assert.end(); +}); From 8dfe1a9d2fdf786084328e94115951707d6abc55 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:32:47 -0700 Subject: [PATCH 0884/1062] Add benchmarks --- .../frechet/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/frechet/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/frechet/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/frechet/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..013c4ffb5597 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/frechet/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 200.0, 400.0, 383.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 200.0, 400.0, 383.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 200.0, 400.0, 383.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 92eafd66cb5e9ad5dca8e55fa804204e18a8b624 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:34:02 -0700 Subject: [PATCH 0885/1062] Document properties and options --- .../@stdlib/random/base/frechet/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/frechet/docs/repl.txt b/lib/node_modules/@stdlib/random/base/frechet/docs/repl.txt index d0c4f5347234..712577377b29 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/frechet/docs/repl.txt @@ -51,8 +51,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -96,6 +109,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 1.0, 1.0, 0.5 ) + + > r = {{alias}}( 1.0, 1.0, 0.5 ) + + > r = {{alias}}( 1.0, 1.0, 0.5 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 1.0, 1.0, 0.5 ) + + > r = {{alias}}( 1.0, 1.0, 0.5 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 1.0, 1.0, 0.5 ) + + > r = {{alias}}( 1.0, 1.0, 0.5 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From be9a85e011feb6ab4854d714607fb6ba58d028a7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:36:17 -0700 Subject: [PATCH 0886/1062] Document properties and options --- .../@stdlib/random/base/frechet/README.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/frechet/README.md b/lib/node_modules/@stdlib/random/base/frechet/README.md index 2b703011a239..b62ed55f25a2 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/README.md +++ b/lib/node_modules/@stdlib/random/base/frechet/README.md @@ -110,6 +110,8 @@ r = rand( 2.0, 8.0, 0.1 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -132,6 +134,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = frechet( 2.0, 2.0, 1.0 ); +} + +// Create a new PRNG initialized to the current state of `frechet`: +rand = frechet.factory({ + 'state': frechet.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 2.0, 2.0, 1.0 ) === frechet( 2.0, 2.0, 1.0 ) ); +// returns true +``` + #### frechet.NAME The generator name. @@ -173,10 +198,84 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### frechet.seedLength + +Length of generator seed. + +```javascript +var len = frechet.seedLength; +// returns +``` + +#### frechet.state + +Writable property for getting and setting the generator state. + +```javascript +var r = frechet( 2.0, 2.0, 1.0 ); +// returns + +r = frechet( 2.0, 2.0, 1.0 ); +// returns + +// ... + +// Get a copy of the current state: +var state = frechet.state; +// returns + +r = frechet( 2.0, 2.0, 1.0 ); +// returns + +r = frechet( 2.0, 2.0, 1.0 ); +// returns + +// Reset the state: +frechet.state = state; + +// Replay the last two pseudorandom numbers: +r = frechet( 2.0, 2.0, 1.0 ); +// returns + +r = frechet( 2.0, 2.0, 1.0 ); +// returns + +// ... +``` + +#### frechet.stateLength + +Length of generator state. + +```javascript +var len = frechet.stateLength; +// returns +``` + +#### frechet.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = frechet.byteLength; +// returns +``` + +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -221,6 +320,8 @@ for ( i = 0; i < 100; i++ ) { [frechet]: https://en.wikipedia.org/wiki/Fr%C3%A9chet_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From 8ff7e57ced65d5c9d5c141013912f14614ea469b Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:36:58 -0700 Subject: [PATCH 0887/1062] Rename files --- .../@stdlib/random/base/frechet/lib/factory.js | 2 +- .../@stdlib/random/base/frechet/lib/frechet.js | 17 ++++++++--------- .../@stdlib/random/base/frechet/lib/index.js | 2 +- .../base/frechet/lib/{_frechet.js => main.js} | 17 +++++++++-------- 4 files changed, 19 insertions(+), 19 deletions(-) rename lib/node_modules/@stdlib/random/base/frechet/lib/{_frechet.js => main.js} (77%) diff --git a/lib/node_modules/@stdlib/random/base/frechet/lib/factory.js b/lib/node_modules/@stdlib/random/base/frechet/lib/factory.js index 860b73ec2193..d08b88d78060 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/frechet/lib/factory.js @@ -25,7 +25,7 @@ var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); var validate = require( './validate.js' ); -var frechet0 = require( './_frechet.js' ); +var frechet0 = require( './frechet.js' ); // MAIN // diff --git a/lib/node_modules/@stdlib/random/base/frechet/lib/frechet.js b/lib/node_modules/@stdlib/random/base/frechet/lib/frechet.js index 2fe2dc374d5e..9e89e6c7b0ab 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/lib/frechet.js +++ b/lib/node_modules/@stdlib/random/base/frechet/lib/frechet.js @@ -20,26 +20,25 @@ // MODULES // -var factory = require( './factory.js' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var ln = require( '@stdlib/math/base/special/ln' ); // MAIN // -/* +/** * Returns a pseudorandom number drawn from a Fréchet distribution with shape `alpha`, scale `s`, and location `m`. * -* @name frechet -* @type {Function} +* @private +* @param {Function} rand - PRNG for uniformly distributed numbers * @param {PositiveNumber} alpha - shape parameter * @param {PositiveNumber} s - scale parameter * @param {number} m - location parameter * @returns {number} pseudorandom number -* -* @example -* var v = frechet( 1.0, 1.0, 0.5 ); -* // returns */ -var frechet = factory(); +function frechet( rand, alpha, s, m ) { + return m + ( s * ( pow( -ln( rand() ), -1.0/alpha ) ) ); +} // EXPORTS // diff --git a/lib/node_modules/@stdlib/random/base/frechet/lib/index.js b/lib/node_modules/@stdlib/random/base/frechet/lib/index.js index 0f61a38a3dae..75ae6e462377 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/frechet/lib/index.js @@ -53,7 +53,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var frechet = require( './frechet.js' ); +var frechet = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/frechet/lib/_frechet.js b/lib/node_modules/@stdlib/random/base/frechet/lib/main.js similarity index 77% rename from lib/node_modules/@stdlib/random/base/frechet/lib/_frechet.js rename to lib/node_modules/@stdlib/random/base/frechet/lib/main.js index 9e89e6c7b0ab..2fe2dc374d5e 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/lib/_frechet.js +++ b/lib/node_modules/@stdlib/random/base/frechet/lib/main.js @@ -20,25 +20,26 @@ // MODULES // -var pow = require( '@stdlib/math/base/special/pow' ); -var ln = require( '@stdlib/math/base/special/ln' ); +var factory = require( './factory.js' ); // MAIN // -/** +/* * Returns a pseudorandom number drawn from a Fréchet distribution with shape `alpha`, scale `s`, and location `m`. * -* @private -* @param {Function} rand - PRNG for uniformly distributed numbers +* @name frechet +* @type {Function} * @param {PositiveNumber} alpha - shape parameter * @param {PositiveNumber} s - scale parameter * @param {number} m - location parameter * @returns {number} pseudorandom number +* +* @example +* var v = frechet( 1.0, 1.0, 0.5 ); +* // returns */ -function frechet( rand, alpha, s, m ) { - return m + ( s * ( pow( -ln( rand() ), -1.0/alpha ) ) ); -} +var frechet = factory(); // EXPORTS // From e976b6523a619529ae9314c11f2ec182f6a64601 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:39:16 -0700 Subject: [PATCH 0888/1062] Add support for getting and setting PRNG state --- .../random/base/frechet/lib/factory.js | 76 ++++++++++++++++++- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/frechet/lib/factory.js b/lib/node_modules/@stdlib/random/base/frechet/lib/factory.js index d08b88d78060..135bef3433f2 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/frechet/lib/factory.js @@ -21,6 +21,8 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -37,11 +39,15 @@ var frechet0 = require( './frechet.js' ); * @param {PositiveNumber} [s] - scale parameter * @param {number} [m] - location parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `alpha` must be a positive number * @throws {TypeError} `s` must be a positive number * @throws {TypeError} `m` must be a number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -99,11 +105,77 @@ function factory() { prng = frechet1; } setReadOnly( prng, 'NAME', 'frechet' ); - setReadOnly( prng, 'seed', rand.seed ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + rand.state = s; + } + /** * Returns a pseudorandom number drawn from a Fréchet distribution with bound parameters. * From 83a2325f802252d8bc2f5b923d6cb210be1078bb Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:40:43 -0700 Subject: [PATCH 0889/1062] Update tests --- .../@stdlib/random/base/frechet/test/test.js | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/frechet/test/test.js b/lib/node_modules/@stdlib/random/base/frechet/test/test.js index 3ffd34fd8cb0..09f65868a505 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/test/test.js +++ b/lib/node_modules/@stdlib/random/base/frechet/test/test.js @@ -34,22 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof frechet.factory, 'function', 'has `factory` method' ); + t.equal( typeof frechet.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( frechet.NAME, 'frechet', 'has `NAME` property' ); + t.equal( frechet.NAME, 'frechet', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof frechet.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof frechet.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( frechet.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( frechet.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof frechet.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( frechet.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof frechet.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof frechet.byteLength, 'number', 'has property' ); t.end(); }); @@ -70,3 +90,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + frechet( 8.0, 3.0, 10.0 ); + } + // Capture the current state: + state = frechet.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( frechet( 8.0, 3.0, 10.0 ) ); + } + // Set the state: + frechet.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( frechet( 8.0, 3.0, 10.0 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 1d44d406963445973fa2bcd8ffe4195b51265c6d Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:45:29 -0700 Subject: [PATCH 0890/1062] Update tests --- .../random/base/frechet/test/test.factory.js | 503 +++++++++++++++--- 1 file changed, 427 insertions(+), 76 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/frechet/test/test.factory.js b/lib/node_modules/@stdlib/random/base/frechet/test/test.factory.js index cb07fc9e8e33..bfde604bc461 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/frechet/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var kstest = require( '@stdlib/stats/kstest' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,76 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var frechet; - var r; - var i; - - // When binding distribution parameters... - frechet = factory( 10.0, 10.0, 5.0 ); - for ( i = 0; i < 100; i++ ) { - r = frechet(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - frechet = factory(); - for ( i = 0; i < 100; i++ ) { - r = frechet( 10.0, 10.0, 5.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var frechet1; - var frechet2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - frechet1 = factory( 2.0, 4.0, 2.0, { - 'seed': seed - }); - frechet2 = factory( 2.0, 4.0, 2.0, { - 'seed': seed - }); - - t.notEqual( frechet1, frechet2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = frechet1(); - r2 = frechet2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var frechet = factory(); - t.equal( frechet.NAME, 'frechet', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var frechet = factory(); - t.equal( typeof frechet.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var frechet = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( frechet.seed ), true, 'has `seed` property' ); - t.equal( frechet.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if shape `α` is not a positive number', function test( t ) { var values; var i; @@ -122,7 +54,8 @@ tape( 'the function throws an error if shape `α` is not a positive number', fun '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -151,7 +84,8 @@ tape( 'the function throws an error if scale `s` is not a positive number', func '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -180,7 +114,8 @@ tape( 'the function throws an error if location `m` is not a number primitive', '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -208,7 +143,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -235,7 +171,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -253,6 +190,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var frechet; + var r; + var i; + + // When binding distribution parameters... + frechet = factory( 10.0, 10.0, 5.0 ); + for ( i = 0; i < 100; i++ ) { + r = frechet(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + frechet = factory(); + for ( i = 0; i < 100; i++ ) { + r = frechet( 10.0, 10.0, 5.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var frechet1; + var frechet2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + frechet1 = factory( 2.0, 4.0, 2.0, { + 'seed': seed + }); + frechet2 = factory( 2.0, 4.0, 2.0, { + 'seed': seed + }); + + t.notEqual( frechet1, frechet2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = frechet1(); + r2 = frechet2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var frechet1; + var frechet2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + frechet1 = factory( 2.0, 4.0, 2.0, { + 'seed': seed + }); + frechet2 = factory( 2.0, 4.0, 2.0, { + 'seed': seed + }); + + t.notEqual( frechet1, frechet2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = frechet1(); + r2 = frechet2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var frechet = factory(); + t.equal( frechet.NAME, 'frechet', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var frechet = factory(); + t.equal( typeof frechet.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var frechet = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( frechet.seed ), true, 'has property' ); + t.equal( frechet.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var frechet = factory(); + t.equal( typeof frechet.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var frechet = factory(); + t.equal( isUint32Array( frechet.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var frechet = factory(); + t.equal( typeof frechet.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var frechet = factory(); + t.equal( typeof frechet.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a function that returns `NaN` if `α` is `NaN`', function test( t ) { var frechet; var r; @@ -372,3 +590,136 @@ tape( 'the function returns a PRNG for generating random numbers from a Fréchet t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var frechet; + var state; + var arr; + var i; + + frechet = factory( 2.0, 4.0, 2.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + frechet(); + } + // Capture the current state: + state = frechet.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( frechet() ); + } + + // Create another PRNG using the captured state: + frechet = factory( 2.0, 4.0, 2.0, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( frechet(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var frechet; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + frechet = factory( 2.0, 4.0, 2.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + frechet(); + } + // Capture the current state: + state = frechet.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( frechet() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 2.0, 4.0, 2.0, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 2.0, 4.0, 2.0, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var frechet; + var state; + var arr; + var i; + + frechet = factory( 2.0, 4.0, 2.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + frechet(); + } + // Capture the current state: + state = frechet.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( frechet() ); + } + // Set the state: + frechet.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( frechet(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 289a00d7db15f80e3ba8020e699c6b82ba218d43 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:50:36 -0700 Subject: [PATCH 0891/1062] Add benchmarks --- .../base/geometric/benchmark/benchmark.js | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/geometric/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/geometric/benchmark/benchmark.js index 185c1bedf702..a7478ff55a09 100644 --- a/lib/node_modules/@stdlib/random/base/geometric/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/geometric/benchmark/benchmark.js @@ -50,7 +50,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var rand; var p; var z; @@ -73,3 +73,27 @@ bench( pkg+':factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var rand; + var p; + var z; + var i; + + p = 0.7549; + rand = geometric.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( p ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From f27373e3d0c4efc69a3bcfc53ccbd9b6ee3ff34d Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:51:17 -0700 Subject: [PATCH 0892/1062] Add benchmarks --- .../geometric/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/geometric/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/geometric/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/geometric/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..99ba2a64c75f --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/geometric/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.7549 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.7549 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.7549 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From e9c1a166321fd88255159a6f2008b113ad4d4001 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:52:09 -0700 Subject: [PATCH 0893/1062] Document properties and options --- .../random/base/geometric/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/geometric/docs/repl.txt b/lib/node_modules/@stdlib/random/base/geometric/docs/repl.txt index 47b7477708e9..5da86e1ffb56 100644 --- a/lib/node_modules/@stdlib/random/base/geometric/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/geometric/docs/repl.txt @@ -37,8 +37,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -82,6 +95,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 0.3 ) + + > r = {{alias}}( 0.3 ) + + > r = {{alias}}( 0.3 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 0.3 ) + + > r = {{alias}}( 0.3 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 0.3 ) + + > r = {{alias}}( 0.3 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From df284964a0af97703789822918a09a6835edc86a Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:53:50 -0700 Subject: [PATCH 0894/1062] Document properties and options --- .../@stdlib/random/base/geometric/README.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/geometric/README.md b/lib/node_modules/@stdlib/random/base/geometric/README.md index 214b840e9cd8..76d6f4855ef4 100644 --- a/lib/node_modules/@stdlib/random/base/geometric/README.md +++ b/lib/node_modules/@stdlib/random/base/geometric/README.md @@ -94,6 +94,8 @@ r = rand( 0.42 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -116,6 +118,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = geometric( 0.3 ); +} + +// Create a new PRNG initialized to the current state of `geometric`: +rand = geometric.factory({ + 'state': geometric.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 0.3 ) === geometric( 0.3 ) ); +// returns true +``` + #### geometric.NAME The generator name. @@ -157,10 +182,84 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### geometric.seedLength + +Length of generator seed. + +```javascript +var len = geometric.seedLength; +// returns +``` + +#### geometric.state + +Writable property for getting and setting the generator state. + +```javascript +var r = geometric( 0.3 ); +// returns + +r = geometric( 0.3 ); +// returns + +// ... + +// Get a copy of the current state: +var state = geometric.state; +// returns + +r = geometric( 0.3 ); +// returns + +r = geometric( 0.3 ); +// returns + +// Reset the state: +geometric.state = state; + +// Replay the last two pseudorandom numbers: +r = geometric( 0.3 ); +// returns + +r = geometric( 0.3 ); +// returns + +// ... +``` + +#### geometric.stateLength + +Length of generator state. + +```javascript +var len = geometric.stateLength; +// returns +``` + +#### geometric.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = geometric.byteLength; +// returns +``` + +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -205,6 +304,8 @@ for ( i = 0; i < 100; i++ ) { [geometric]: https://en.wikipedia.org/wiki/Geometric_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From e7663b1146ed4afde8924760ccc1834020ad6ff3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:54:37 -0700 Subject: [PATCH 0895/1062] Rename files --- .../random/base/geometric/lib/_geometric.js | 84 ------------------- .../random/base/geometric/lib/factory.js | 2 +- .../random/base/geometric/lib/geometric.js | 65 +++++++++----- .../random/base/geometric/lib/index.js | 2 +- .../@stdlib/random/base/geometric/lib/main.js | 57 +++++++++++++ 5 files changed, 105 insertions(+), 105 deletions(-) delete mode 100644 lib/node_modules/@stdlib/random/base/geometric/lib/_geometric.js create mode 100644 lib/node_modules/@stdlib/random/base/geometric/lib/main.js diff --git a/lib/node_modules/@stdlib/random/base/geometric/lib/_geometric.js b/lib/node_modules/@stdlib/random/base/geometric/lib/_geometric.js deleted file mode 100644 index 31197326240f..000000000000 --- a/lib/node_modules/@stdlib/random/base/geometric/lib/_geometric.js +++ /dev/null @@ -1,84 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2018 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var floor = require( '@stdlib/math/base/special/floor' ); -var ln = require( '@stdlib/math/base/special/ln' ); - - -// MAIN // - -/** -* Returns a pseudorandom number drawn from a geometric distribution. -* -* ## Proof -* -* Consider -* -* ```tex -* N = \left \lfloor \ln (U) / \ln (1-p) \right \rfloor -* ``` -* -* where \\( U \\) is uniform on the interval \\((0,1)\\). Accordingly, \\(N\\) must be a nonnegative integer, and, for every \\( n \geq 0\\), the event \\(A_n = \left \{ N = n \right \}\\) is -* -* ```tex -* A_n = \left \{(n+1) \ln (1-p) < \ln (U) \leq n \ln (1-p) \right \} -* ``` -* -* where \\(\ln (1-p) < 0\\). Thus, -* -* ```tex -* A_n = \left \{(1-p)^{n+1} < U \leq (1-p)^n \right \} -* ``` -* -* For every \\(u < v\\) on the interval \\((0,1)\\), -* -* ```tex -* P\left \[u < U \leq v\right \] = v - u -* ``` -* -* Hence, -* -* ```tex -* P\left \[N = n \right \] = P\left \[A_n\right \] = (1-p)^n - (1-p)^{n+1} = (1-p)^n(1-(1-p)) = p(1-p)^n -* ``` -* -* which proves that \\(N\\) is a geometric random variable. -* -* -* @private -* @param {Function} rand - PRNG for uniformly distributed numbers -* @param {Probability} p - success probability -* @returns {NonNegativeInteger} pseudorandom number -*/ -function geometric( rand, p ) { - var u = rand(); - if ( u === 0.0 ) { - // Drawing random variates from a PRNG (with period > 1) is effectively sampling without replacement. Thus, should not be possible to draw `0` twice in a row. - u = rand(); - } - return floor( ln( u ) / ln( 1.0-p ) ); -} - - -// EXPORTS // - -module.exports = geometric; diff --git a/lib/node_modules/@stdlib/random/base/geometric/lib/factory.js b/lib/node_modules/@stdlib/random/base/geometric/lib/factory.js index a6062f72ee08..e7cbbd141101 100644 --- a/lib/node_modules/@stdlib/random/base/geometric/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/geometric/lib/factory.js @@ -25,7 +25,7 @@ var isObject = require( '@stdlib/assert/is-plain-object' ); var isProbability = require( '@stdlib/assert/is-probability' ).isPrimitive; var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var geometric0 = require( './_geometric.js' ); +var geometric0 = require( './geometric.js' ); // MAIN // diff --git a/lib/node_modules/@stdlib/random/base/geometric/lib/geometric.js b/lib/node_modules/@stdlib/random/base/geometric/lib/geometric.js index 82af8944f770..31197326240f 100644 --- a/lib/node_modules/@stdlib/random/base/geometric/lib/geometric.js +++ b/lib/node_modules/@stdlib/random/base/geometric/lib/geometric.js @@ -20,36 +20,63 @@ // MODULES // -var factory = require( './factory.js' ); +var floor = require( '@stdlib/math/base/special/floor' ); +var ln = require( '@stdlib/math/base/special/ln' ); // MAIN // /** -* Returns a pseudorandom random number drawn from a geometric distribution with parameter `p`. +* Returns a pseudorandom number drawn from a geometric distribution. * -* @name geometric -* @type {Function} -* @param {Probability} p - success probability -* @returns {NonNegativeInteger} pseudorandom number +* ## Proof +* +* Consider +* +* ```tex +* N = \left \lfloor \ln (U) / \ln (1-p) \right \rfloor +* ``` +* +* where \\( U \\) is uniform on the interval \\((0,1)\\). Accordingly, \\(N\\) must be a nonnegative integer, and, for every \\( n \geq 0\\), the event \\(A_n = \left \{ N = n \right \}\\) is +* +* ```tex +* A_n = \left \{(n+1) \ln (1-p) < \ln (U) \leq n \ln (1-p) \right \} +* ``` +* +* where \\(\ln (1-p) < 0\\). Thus, * -* @example -* var v = geometric( 0.5 ); -* // returns +* ```tex +* A_n = \left \{(1-p)^{n+1} < U \leq (1-p)^n \right \} +* ``` * -* @example -* var v = geometric( 3.14 ); -* // returns NaN +* For every \\(u < v\\) on the interval \\((0,1)\\), * -* @example -* var v = geometric( -1.0 ); -* // returns NaN +* ```tex +* P\left \[u < U \leq v\right \] = v - u +* ``` * -* @example -* var v = geometric( NaN ); -* // returns NaN +* Hence, +* +* ```tex +* P\left \[N = n \right \] = P\left \[A_n\right \] = (1-p)^n - (1-p)^{n+1} = (1-p)^n(1-(1-p)) = p(1-p)^n +* ``` +* +* which proves that \\(N\\) is a geometric random variable. +* +* +* @private +* @param {Function} rand - PRNG for uniformly distributed numbers +* @param {Probability} p - success probability +* @returns {NonNegativeInteger} pseudorandom number */ -var geometric = factory(); +function geometric( rand, p ) { + var u = rand(); + if ( u === 0.0 ) { + // Drawing random variates from a PRNG (with period > 1) is effectively sampling without replacement. Thus, should not be possible to draw `0` twice in a row. + u = rand(); + } + return floor( ln( u ) / ln( 1.0-p ) ); +} // EXPORTS // diff --git a/lib/node_modules/@stdlib/random/base/geometric/lib/index.js b/lib/node_modules/@stdlib/random/base/geometric/lib/index.js index bdd2111574a9..4dbe085a20b1 100644 --- a/lib/node_modules/@stdlib/random/base/geometric/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/geometric/lib/index.js @@ -53,7 +53,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var geometric = require( './geometric.js' ); +var geometric = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/geometric/lib/main.js b/lib/node_modules/@stdlib/random/base/geometric/lib/main.js new file mode 100644 index 000000000000..82af8944f770 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/geometric/lib/main.js @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var factory = require( './factory.js' ); + + +// MAIN // + +/** +* Returns a pseudorandom random number drawn from a geometric distribution with parameter `p`. +* +* @name geometric +* @type {Function} +* @param {Probability} p - success probability +* @returns {NonNegativeInteger} pseudorandom number +* +* @example +* var v = geometric( 0.5 ); +* // returns +* +* @example +* var v = geometric( 3.14 ); +* // returns NaN +* +* @example +* var v = geometric( -1.0 ); +* // returns NaN +* +* @example +* var v = geometric( NaN ); +* // returns NaN +*/ +var geometric = factory(); + + +// EXPORTS // + +module.exports = geometric; From b3de3be7a93b699853d77a41dfde1bac34ac3557 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:56:50 -0700 Subject: [PATCH 0896/1062] Add support for getting and setting PRNG state --- .../random/base/geometric/lib/factory.js | 76 ++++++++++++++++++- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/geometric/lib/factory.js b/lib/node_modules/@stdlib/random/base/geometric/lib/factory.js index e7cbbd141101..06aa73d9baa6 100644 --- a/lib/node_modules/@stdlib/random/base/geometric/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/geometric/lib/factory.js @@ -21,6 +21,8 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var isProbability = require( '@stdlib/assert/is-probability' ).isPrimitive; var randu = require( '@stdlib/random/base/mt19937' ).factory; @@ -35,9 +37,13 @@ var geometric0 = require( './geometric.js' ); * * @param {Probability} [p] - success probability * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `p` must be a probability * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -93,11 +99,77 @@ function factory() { prng = geometric1; } setReadOnly( prng, 'NAME', 'geometric' ); - setReadOnly( prng, 'seed', rand.seed ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + rand.state = s; + } + /** * Returns a pseudorandom number drawn from a geometric distribution with bound parameter `p`. * From 1873ac8ebc73eaa8309cbe959f74e75c09c65c15 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 00:58:08 -0700 Subject: [PATCH 0897/1062] Update tests --- .../random/base/geometric/test/test.js | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/geometric/test/test.js b/lib/node_modules/@stdlib/random/base/geometric/test/test.js index bbb771fb749e..f2e745a97f42 100644 --- a/lib/node_modules/@stdlib/random/base/geometric/test/test.js +++ b/lib/node_modules/@stdlib/random/base/geometric/test/test.js @@ -35,22 +35,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof geometric.factory, 'function', 'has `factory` method' ); + t.equal( typeof geometric.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( geometric.NAME, 'geometric', 'has `NAME` property' ); + t.equal( geometric.NAME, 'geometric', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof geometric.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof geometric.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( geometric.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( geometric.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof geometric.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( geometric.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof geometric.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof geometric.byteLength, 'number', 'has property' ); t.end(); }); @@ -63,3 +83,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + geometric( 0.9 ); + } + // Capture the current state: + state = geometric.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( geometric( 0.9 ) ); + } + // Set the state: + geometric.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( geometric( 0.9 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 034a89b57589de6034b3600597456dffa2a4a73e Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 01:02:00 -0700 Subject: [PATCH 0898/1062] Update tests --- .../base/geometric/test/test.factory.js | 500 +++++++++++++++--- 1 file changed, 425 insertions(+), 75 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/geometric/test/test.factory.js b/lib/node_modules/@stdlib/random/base/geometric/test/test.factory.js index e4dc0df65ec9..df09cac18262 100644 --- a/lib/node_modules/@stdlib/random/base/geometric/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/geometric/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var chi2gof = require( '@stdlib/stats/chi2gof' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,76 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var geometric; - var r; - var i; - - // When binding distribution parameters... - geometric = factory( 0.05 ); - for ( i = 0; i < 100; i++ ) { - r = geometric(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - geometric = factory(); - for ( i = 0; i < 100; i++ ) { - r = geometric( 0.1 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var geometric1; - var geometric2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - geometric1 = factory( 0.3, { - 'seed': seed - }); - geometric2 = factory( 0.3, { - 'seed': seed - }); - - t.notEqual( geometric1, geometric2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = geometric1(); - r2 = geometric2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var geometric = factory(); - t.equal( geometric.NAME, 'geometric', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var geometric = factory(); - t.equal( typeof geometric.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var geometric = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( geometric.seed ), true, 'has `seed` property' ); - t.equal( geometric.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if provided a probability argument which is not a probability (no options)', function test( t ) { var values; var i; @@ -126,7 +58,8 @@ tape( 'the function throws an error if provided a probability argument which is NaN, null, true, - undefined, + false, + void 0, [], function noop() {} ]; @@ -155,7 +88,8 @@ tape( 'the function throws an error if provided a probability argument which is NaN, null, true, - undefined, + false, + void 0, [], {}, function noop() {} @@ -181,7 +115,8 @@ tape( 'the function throws an error if provided an options argument which is not 'abc', null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -208,7 +143,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -226,6 +162,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var geometric; + var r; + var i; + + // When binding distribution parameters... + geometric = factory( 0.05 ); + for ( i = 0; i < 100; i++ ) { + r = geometric(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + geometric = factory(); + for ( i = 0; i < 100; i++ ) { + r = geometric( 0.1 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var geometric1; + var geometric2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + geometric1 = factory( 0.3, { + 'seed': seed + }); + geometric2 = factory( 0.3, { + 'seed': seed + }); + + t.notEqual( geometric1, geometric2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = geometric1(); + r2 = geometric2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var geometric1; + var geometric2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + geometric1 = factory( 0.3, { + 'seed': seed + }); + geometric2 = factory( 0.3, { + 'seed': seed + }); + + t.notEqual( geometric1, geometric2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = geometric1(); + r2 = geometric2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var geometric = factory(); + t.equal( geometric.NAME, 'geometric', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var geometric = factory(); + t.equal( typeof geometric.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var geometric = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( geometric.seed ), true, 'has property' ); + t.equal( geometric.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var geometric = factory(); + t.equal( typeof geometric.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var geometric = factory(); + t.equal( isUint32Array( geometric.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var geometric = factory(); + t.equal( typeof geometric.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var geometric = factory(); + t.equal( typeof geometric.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a rate equal to `NaN`', function test( t ) { var geometric; var r; @@ -335,3 +552,136 @@ tape( 'the function returns a PRNG for generating random numbers from a geometri t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var geometric; + var state; + var arr; + var i; + + geometric = factory( 0.67 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + geometric(); + } + // Capture the current state: + state = geometric.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( geometric() ); + } + + // Create another PRNG using the captured state: + geometric = factory( 0.67, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( geometric(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var geometric; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + geometric = factory( 0.67 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + geometric(); + } + // Capture the current state: + state = geometric.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( geometric() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 0.67, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 0.67, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var geometric; + var state; + var arr; + var i; + + geometric = factory( 0.67 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + geometric(); + } + // Capture the current state: + state = geometric.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( geometric() ); + } + // Set the state: + geometric.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( geometric(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 567abe14ebd47ab0c9de2cbad2610eb6fd447046 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 01:02:19 -0700 Subject: [PATCH 0899/1062] Update benchmarks --- .../random/base/gumbel/benchmark/benchmark.js | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/gumbel/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/gumbel/benchmark/benchmark.js index 341f54a96723..60619dd1abe9 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/gumbel/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var beta; var rand; var mu; @@ -78,3 +78,29 @@ bench( pkg+':factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var beta; + var rand; + var mu; + var z; + var i; + + mu = 0.0; + beta = 1.5; + rand = gumbel.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( mu, beta ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 5ab2c1def523b6e37a650a267c8ff8845d2e1486 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 01:03:03 -0700 Subject: [PATCH 0900/1062] Add benchmarks --- .../gumbel/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/gumbel/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/gumbel/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/gumbel/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..d8564f8eb968 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/gumbel/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 85aa15635280a46862e07f36f8256cf7cec8a521 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 01:04:04 -0700 Subject: [PATCH 0901/1062] Document properties and options --- .../@stdlib/random/base/gumbel/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/gumbel/docs/repl.txt b/lib/node_modules/@stdlib/random/base/gumbel/docs/repl.txt index 2cb4844d563a..1ef6855083cb 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/gumbel/docs/repl.txt @@ -43,8 +43,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -88,6 +101,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From e03391ab82a29da5b4e101a7925b37ad7b2804d3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 01:05:47 -0700 Subject: [PATCH 0902/1062] Document properties and options --- .../@stdlib/random/base/gumbel/README.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/gumbel/README.md b/lib/node_modules/@stdlib/random/base/gumbel/README.md index a6275116da17..cb6267ac24ae 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/README.md +++ b/lib/node_modules/@stdlib/random/base/gumbel/README.md @@ -90,6 +90,8 @@ r = rand( -2.0, 2.0 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -112,6 +114,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = gumbel( 1.0, 2.0 ); +} + +// Create a new PRNG initialized to the current state of `gumbel`: +rand = gumbel.factory({ + 'state': gumbel.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 1.0, 2.0 ) === gumbel( 1.0, 2.0 ) ); +// returns true +``` + #### gumbel.NAME The generator name. @@ -153,10 +178,84 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### gumbel.seedLength + +Length of generator seed. + +```javascript +var len = gumbel.seedLength; +// returns +``` + +#### gumbel.state + +Writable property for getting and setting the generator state. + +```javascript +var r = gumbel( 2.0, 5.0 ); +// returns + +r = gumbel( 2.0, 5.0 ); +// returns + +// ... + +// Get a copy of the current state: +var state = gumbel.state; +// returns + +r = gumbel( 2.0, 5.0 ); +// returns + +r = gumbel( 2.0, 5.0 ); +// returns + +// Reset the state: +gumbel.state = state; + +// Replay the last two pseudorandom numbers: +r = gumbel( 2.0, 5.0 ); +// returns + +r = gumbel( 2.0, 5.0 ); +// returns + +// ... +``` + +#### gumbel.stateLength + +Length of generator state. + +```javascript +var len = gumbel.stateLength; +// returns +``` + +#### gumbel.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = gumbel.byteLength; +// returns +``` + +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -201,6 +300,8 @@ for ( i = 0; i < 100; i++ ) { [gumbel]: https://en.wikipedia.org/wiki/Gumbel_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From 9ea0008f95394cd1ecc82555a0aa845dabf32a71 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 01:06:42 -0700 Subject: [PATCH 0903/1062] Rename files --- .../@stdlib/random/base/gumbel/lib/factory.js | 2 +- .../@stdlib/random/base/gumbel/lib/gumbel.js | 18 ++++++------------ .../@stdlib/random/base/gumbel/lib/index.js | 2 +- .../base/gumbel/lib/{_gumbel.js => main.js} | 18 ++++++++++++------ 4 files changed, 20 insertions(+), 20 deletions(-) rename lib/node_modules/@stdlib/random/base/gumbel/lib/{_gumbel.js => main.js} (79%) diff --git a/lib/node_modules/@stdlib/random/base/gumbel/lib/factory.js b/lib/node_modules/@stdlib/random/base/gumbel/lib/factory.js index 65916b4515d4..71a5f2982e06 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/gumbel/lib/factory.js @@ -25,7 +25,7 @@ var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); var validate = require( './validate.js' ); -var gumbel0 = require( './_gumbel.js' ); +var gumbel0 = require( './gumbel.js' ); // MAIN // diff --git a/lib/node_modules/@stdlib/random/base/gumbel/lib/gumbel.js b/lib/node_modules/@stdlib/random/base/gumbel/lib/gumbel.js index 187472bae0af..e61a1ef11ede 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/lib/gumbel.js +++ b/lib/node_modules/@stdlib/random/base/gumbel/lib/gumbel.js @@ -20,7 +20,7 @@ // MODULES // -var factory = require( './factory.js' ); +var ln = require( '@stdlib/math/base/special/ln' ); // MAIN // @@ -28,21 +28,15 @@ var factory = require( './factory.js' ); /** * Returns pseudorandom number drawn from a Gumbel distribution. * -* @name gumbel -* @type {Function} +* @private +* @param {Function} rand - PRNG for generating uniformly distributed numbers * @param {number} mu - mean * @param {PositiveNumber} beta - scale parameter * @returns {number} pseudorandom number -* -* @example -* var v = gumbel( 0.0, 2.0 ); -* // returns -* -* @example -* var v = gumbel( 0.0, -1.0 ); -* // returns NaN */ -var gumbel = factory(); +function gumbel( rand, mu, beta ) { + return mu - ( beta*ln( -ln( rand() ) ) ); +} // EXPORTS // diff --git a/lib/node_modules/@stdlib/random/base/gumbel/lib/index.js b/lib/node_modules/@stdlib/random/base/gumbel/lib/index.js index fbffd973198c..4e5fe74c2f4e 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/gumbel/lib/index.js @@ -53,7 +53,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var gumbel = require( './gumbel.js' ); +var gumbel = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/gumbel/lib/_gumbel.js b/lib/node_modules/@stdlib/random/base/gumbel/lib/main.js similarity index 79% rename from lib/node_modules/@stdlib/random/base/gumbel/lib/_gumbel.js rename to lib/node_modules/@stdlib/random/base/gumbel/lib/main.js index e61a1ef11ede..187472bae0af 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/lib/_gumbel.js +++ b/lib/node_modules/@stdlib/random/base/gumbel/lib/main.js @@ -20,7 +20,7 @@ // MODULES // -var ln = require( '@stdlib/math/base/special/ln' ); +var factory = require( './factory.js' ); // MAIN // @@ -28,15 +28,21 @@ var ln = require( '@stdlib/math/base/special/ln' ); /** * Returns pseudorandom number drawn from a Gumbel distribution. * -* @private -* @param {Function} rand - PRNG for generating uniformly distributed numbers +* @name gumbel +* @type {Function} * @param {number} mu - mean * @param {PositiveNumber} beta - scale parameter * @returns {number} pseudorandom number +* +* @example +* var v = gumbel( 0.0, 2.0 ); +* // returns +* +* @example +* var v = gumbel( 0.0, -1.0 ); +* // returns NaN */ -function gumbel( rand, mu, beta ) { - return mu - ( beta*ln( -ln( rand() ) ) ); -} +var gumbel = factory(); // EXPORTS // From 2a8d8396b8a820fd14f0febc4ef964f3bb229955 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 01:07:59 -0700 Subject: [PATCH 0904/1062] Add support for getting and setting PRNG state --- .../@stdlib/random/base/gumbel/lib/factory.js | 76 ++++++++++++++++++- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/gumbel/lib/factory.js b/lib/node_modules/@stdlib/random/base/gumbel/lib/factory.js index 71a5f2982e06..4c15526525d2 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/gumbel/lib/factory.js @@ -21,6 +21,8 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -36,10 +38,14 @@ var gumbel0 = require( './gumbel.js' ); * @param {number} [mu] - mean * @param {PositiveNumber} [beta] - scale parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `mu` must be a number primitive * @throws {TypeError} `beta` must be a positive number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -95,11 +101,77 @@ function factory() { prng = gumbel1; } setReadOnly( prng, 'NAME', 'gumbel' ); - setReadOnly( prng, 'seed', rand.seed ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + rand.state = s; + } + /** * Returns pseudorandom number drawn from a Gumbel distribution with bound parameters. * From 0a4346ef0ef658ac76e364eef65431538d17526c Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 01:08:56 -0700 Subject: [PATCH 0905/1062] Update tests --- .../@stdlib/random/base/gumbel/test/test.js | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/gumbel/test/test.js b/lib/node_modules/@stdlib/random/base/gumbel/test/test.js index a5416198ef9c..5fa3668fcc7e 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/test/test.js +++ b/lib/node_modules/@stdlib/random/base/gumbel/test/test.js @@ -34,22 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof gumbel.factory, 'function', 'has `factory` method' ); + t.equal( typeof gumbel.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( gumbel.NAME, 'gumbel', 'has `NAME` property' ); + t.equal( gumbel.NAME, 'gumbel', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof gumbel.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof gumbel.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( gumbel.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( gumbel.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof gumbel.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( gumbel.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof gumbel.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof gumbel.byteLength, 'number', 'has property' ); t.end(); }); @@ -62,3 +82,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + gumbel( 2.0, 1.0 ); + } + // Capture the current state: + state = gumbel.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( gumbel( 2.0, 1.0 ) ); + } + // Set the state: + gumbel.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( gumbel( 2.0, 1.0 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 71a79a63a41168303e44fd98ecf6503babb6b0e7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 01:11:44 -0700 Subject: [PATCH 0906/1062] Update tests --- .../random/base/gumbel/test/test.factory.js | 500 +++++++++++++++--- 1 file changed, 425 insertions(+), 75 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/gumbel/test/test.factory.js b/lib/node_modules/@stdlib/random/base/gumbel/test/test.factory.js index fbb52135b412..49a688cfff8d 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/gumbel/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var kstest = require( '@stdlib/stats/kstest' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,76 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var gumbel; - var r; - var i; - - // When binding distribution parameters... - gumbel = factory( 0.0, 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = gumbel(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - gumbel = factory(); - for ( i = 0; i < 100; i++ ) { - r = gumbel( 2.5, 2.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var gumbel1; - var gumbel2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - gumbel1 = factory( 0.0, 1.0, { - 'seed': seed - }); - gumbel2 = factory( 0.0, 1.0, { - 'seed': seed - }); - - t.notEqual( gumbel1, gumbel2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = gumbel1(); - r2 = gumbel2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var gumbel = factory(); - t.equal( gumbel.NAME, 'gumbel', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var gumbel = factory(); - t.equal( typeof gumbel.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var gumbel = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( gumbel.seed ), true, 'has `seed` property' ); - t.equal( gumbel.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if provided a shape parameter which is not a positive number', function test( t ) { var values; var i; @@ -125,7 +57,8 @@ tape( 'the function throws an error if provided a shape parameter which is not a '5', null, true, - undefined, + false, + void 0, [], {}, function noop() {} @@ -152,7 +85,8 @@ tape( 'the function throws an error if provided a distribution mean which is not NaN, null, true, - undefined, + false, + void 0, [], {}, function noop() {} @@ -179,7 +113,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -206,7 +141,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -224,6 +160,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var gumbel; + var r; + var i; + + // When binding distribution parameters... + gumbel = factory( 0.0, 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = gumbel(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + gumbel = factory(); + for ( i = 0; i < 100; i++ ) { + r = gumbel( 2.5, 2.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var gumbel1; + var gumbel2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + gumbel1 = factory( 0.0, 1.0, { + 'seed': seed + }); + gumbel2 = factory( 0.0, 1.0, { + 'seed': seed + }); + + t.notEqual( gumbel1, gumbel2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = gumbel1(); + r2 = gumbel2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var gumbel1; + var gumbel2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + gumbel1 = factory( 0.0, 1.0, { + 'seed': seed + }); + gumbel2 = factory( 0.0, 1.0, { + 'seed': seed + }); + + t.notEqual( gumbel1, gumbel2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = gumbel1(); + r2 = gumbel2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var gumbel = factory(); + t.equal( gumbel.NAME, 'gumbel', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var gumbel = factory(); + t.equal( typeof gumbel.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var gumbel = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( gumbel.seed ), true, 'has property' ); + t.equal( gumbel.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var gumbel = factory(); + t.equal( typeof gumbel.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var gumbel = factory(); + t.equal( isUint32Array( gumbel.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var gumbel = factory(); + t.equal( typeof gumbel.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var gumbel = factory(); + t.equal( typeof gumbel.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a first argument equal to `NaN`', function test( t ) { var gumbel; var r; @@ -342,3 +559,136 @@ tape( 'the function returns a PRNG for generating random numbers from a Gumbel d t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var gumbel; + var state; + var arr; + var i; + + gumbel = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + gumbel(); + } + // Capture the current state: + state = gumbel.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( gumbel() ); + } + + // Create another PRNG using the captured state: + gumbel = factory( 0.0, 3.14, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( gumbel(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var gumbel; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + gumbel = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + gumbel(); + } + // Capture the current state: + state = gumbel.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( gumbel() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 0.0, 3.14, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 0.0, 3.14, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var gumbel; + var state; + var arr; + var i; + + gumbel = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + gumbel(); + } + // Capture the current state: + state = gumbel.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( gumbel() ); + } + // Set the state: + gumbel.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( gumbel(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 2df750d1c45cf9172ced11983408c3e01a9d405b Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 01:14:45 -0700 Subject: [PATCH 0907/1062] Update benchmarks --- .../hypergeometric/benchmark/benchmark.js | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/hypergeometric/benchmark/benchmark.js index bdb1635e5a54..882e3957c225 100644 --- a/lib/node_modules/@stdlib/random/base/hypergeometric/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/benchmark/benchmark.js @@ -55,7 +55,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var rand; var N; var K; @@ -82,3 +82,31 @@ bench( pkg+':factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var rand; + var N; + var K; + var n; + var z; + var i; + + N = 100; + K = 50; + n = 25; + rand = hypergeometric.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( N, K, n ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From d50180ab693e541c3ed28e1f5df6d3160d07c289 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 01:15:28 -0700 Subject: [PATCH 0908/1062] Add benchmarks --- .../benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/hypergeometric/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/hypergeometric/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..e6d959072aae --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 100, 50, 25 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 100, 50, 25 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 100, 50, 25 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 8fd4849b1dfef94ac5f3f7d47522a781f64262ad Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 01:16:19 -0700 Subject: [PATCH 0909/1062] Document properties and options --- .../random/base/hypergeometric/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/docs/repl.txt b/lib/node_modules/@stdlib/random/base/hypergeometric/docs/repl.txt index 1dc88e8ec387..711c68d15a7f 100644 --- a/lib/node_modules/@stdlib/random/base/hypergeometric/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/docs/repl.txt @@ -52,8 +52,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -97,6 +110,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 20, 10, 15 ) + + > r = {{alias}}( 20, 10, 15 ) + + > r = {{alias}}( 20, 10, 15 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 20, 10, 15 ) + + > r = {{alias}}( 20, 10, 15 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 20, 10, 15 ) + + > r = {{alias}}( 20, 10, 15 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From edc64d133b7446686088382e9a1fc34c22086927 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 01:18:08 -0700 Subject: [PATCH 0910/1062] Document properties and options --- .../random/base/hypergeometric/README.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/README.md b/lib/node_modules/@stdlib/random/base/hypergeometric/README.md index 6a9e2517d0d5..5ab778c77fa5 100644 --- a/lib/node_modules/@stdlib/random/base/hypergeometric/README.md +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/README.md @@ -100,6 +100,8 @@ r = rand( 104, 48, 21 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -122,6 +124,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = hypergeometric( 10, 8, 5 ); +} + +// Create a new PRNG initialized to the current state of `hypergeometric`: +rand = hypergeometric.factory({ + 'state': hypergeometric.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 10, 8, 5 ) === hypergeometric( 10, 8, 5 ) ); +// returns true +``` + #### hypergeometric.NAME The generator name. @@ -163,10 +188,84 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### hypergeometric.seedLength + +Length of generator seed. + +```javascript +var len = hypergeometric.seedLength; +// returns +``` + +#### hypergeometric.state + +Writable property for getting and setting the generator state. + +```javascript +var r = hypergeometric( 10, 8, 5 ); +// returns + +r = hypergeometric( 10, 8, 5 ); +// returns + +// ... + +// Get a copy of the current state: +var state = hypergeometric.state; +// returns + +r = hypergeometric( 10, 8, 5 ); +// returns + +r = hypergeometric( 10, 8, 5 ); +// returns + +// Reset the state: +hypergeometric.state = state; + +// Replay the last two pseudorandom numbers: +r = hypergeometric( 10, 8, 5 ); +// returns + +r = hypergeometric( 10, 8, 5 ); +// returns + +// ... +``` + +#### hypergeometric.stateLength + +Length of generator state. + +```javascript +var len = hypergeometric.stateLength; +// returns +``` + +#### hypergeometric.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = hypergeometric.byteLength; +// returns +``` + +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -225,6 +324,8 @@ for ( i = 0; i < 100; i++ ) { [@kachitvichyanukul:1985]: http://dx.doi.org/10.1080/00949658508810839 +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From f0b81a136e3b134b990d240ef7c7e88e208d7872 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 01:20:39 -0700 Subject: [PATCH 0911/1062] Rename files and add support for getting and setting PRNG state --- .../random/base/hypergeometric/lib/factory.js | 78 ++++++++++++++++++- .../base/hypergeometric/lib/hypergeometric.js | 65 ++++++++++------ .../random/base/hypergeometric/lib/index.js | 2 +- .../lib/{_hypergeometric.js => main.js} | 65 ++++++---------- 4 files changed, 141 insertions(+), 69 deletions(-) rename lib/node_modules/@stdlib/random/base/hypergeometric/lib/{_hypergeometric.js => main.js} (52%) diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/lib/factory.js b/lib/node_modules/@stdlib/random/base/hypergeometric/lib/factory.js index b8fb4c01b6db..b316e0d34584 100644 --- a/lib/node_modules/@stdlib/random/base/hypergeometric/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/lib/factory.js @@ -21,12 +21,14 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isNonNegativeInteger = require( '@stdlib/math/base/assert/is-nonnegative-integer' ); var PINF = require( '@stdlib/constants/math/float64-pinf' ); var validate = require( './validate.js' ); -var hypergeometric0 = require( './_hypergeometric.js' ); +var hypergeometric0 = require( './hypergeometric.js' ); // MAIN // @@ -38,12 +40,16 @@ var hypergeometric0 = require( './_hypergeometric.js' ); * @param {NonNegativeInteger} [K] - subpopulation size * @param {NonNegativeInteger} [n] - number of draws * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `N` must be a nonnegative integer * @throws {TypeError} `K` must be a nonnegative integer * @throws {TypeError} `n` must be a nonnegative integer * @throws {RangeError} `n` must be less than or equal to `N` * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -106,11 +112,77 @@ function factory() { prng = hypergeometric1; } setReadOnly( prng, 'NAME', 'hypergeometric' ); - setReadOnly( prng, 'seed', rand.seed ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + rand.state = s; + } + /** * Returns a random number drawn from a hypergeometric distribution with bound parameters. * diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/lib/hypergeometric.js b/lib/node_modules/@stdlib/random/base/hypergeometric/lib/hypergeometric.js index 047b2670b1c6..d50e8618c6ba 100644 --- a/lib/node_modules/@stdlib/random/base/hypergeometric/lib/hypergeometric.js +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/lib/hypergeometric.js @@ -20,7 +20,7 @@ // MODULES // -var factory = require( './factory.js' ); +var hin = require( './hin.js' ); // MAIN // @@ -28,34 +28,51 @@ var factory = require( './factory.js' ); /** * Returns a pseudorandom number drawn from a hypergeometric distribution. * -* @name hypergeometric -* @type {Function} -* @param {NonNegativeInteger} N - population size -* @param {NonNegativeInteger} K - subpopulation size -* @param {NonNegativeInteger} n - number of draws -* @returns {NonNegativeInteger} pseudorandom number -* -* @example -* var v = hypergeometric( 5, 3, 2 ); -* // returns +* ## References * -* @example -* var v = hypergeometric( -5, 3, 2 ); -* // returns NaN +* - Kachitvichyanukul, Voratas., and Burce Schmeiser. 1985. "Computer generation of hypergeometric random variates." _Journal of Statistical Computation and Simulation_ 22 (2): 127–45. doi:[10.1080/00949658508810839][@kachitvichyanukul:1985]. * -* @example -* var v = hypergeometric( 5, 3.14, 2 ); -* // returns NaN +* [@kachitvichyanukul:1985]: http://dx.doi.org/10.1080/00949658508810839 * -* @example -* var v = hypergeometric( 5, 3, 1.5 ); -* // returns NaN * -* @example -* var v = hypergeometric( NaN, NaN, NaN ); -* // returns NaN +* @private +* @param {Function} rand - PRNG for uniformly distributed number +* @param {NonNegativeInteger} N - population size +* @param {NonNegativeInteger} K - subpopulation size +* @param {NonNegativeInteger} n - number of draws +* @returns {NonNegativeInteger} pseudorandom number */ -var hypergeometric = factory(); +function hypergeometric( rand, N, K, n ) { + var n1; + var n2; + var k; + var x; + + if ( n > N/2 ) { + k = N - n; + if ( 2*K <= N ) { + n1 = K; + n2 = N - K; + x = hin( rand, n1, n2, k ); + return K - x; + } + n2 = K; + n1 = N - K; + x = hin( rand, n1, n2, k ); + return n - N + K + x; + } + k = n; + if ( 2*K <= N ) { + n1 = K; + n2 = N - K; + x = hin( rand, n1, n2, k ); + return x; + } + n1 = N - K; + n2 = K; + x = hin( rand, n1, n2, k ); + return n - x; +} // EXPORTS // diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/lib/index.js b/lib/node_modules/@stdlib/random/base/hypergeometric/lib/index.js index a65e6460d505..23ef957ada7a 100644 --- a/lib/node_modules/@stdlib/random/base/hypergeometric/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/lib/index.js @@ -58,7 +58,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var hypergeometric = require( './hypergeometric.js' ); +var hypergeometric = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/lib/_hypergeometric.js b/lib/node_modules/@stdlib/random/base/hypergeometric/lib/main.js similarity index 52% rename from lib/node_modules/@stdlib/random/base/hypergeometric/lib/_hypergeometric.js rename to lib/node_modules/@stdlib/random/base/hypergeometric/lib/main.js index d50e8618c6ba..047b2670b1c6 100644 --- a/lib/node_modules/@stdlib/random/base/hypergeometric/lib/_hypergeometric.js +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/lib/main.js @@ -20,7 +20,7 @@ // MODULES // -var hin = require( './hin.js' ); +var factory = require( './factory.js' ); // MAIN // @@ -28,51 +28,34 @@ var hin = require( './hin.js' ); /** * Returns a pseudorandom number drawn from a hypergeometric distribution. * -* ## References -* -* - Kachitvichyanukul, Voratas., and Burce Schmeiser. 1985. "Computer generation of hypergeometric random variates." _Journal of Statistical Computation and Simulation_ 22 (2): 127–45. doi:[10.1080/00949658508810839][@kachitvichyanukul:1985]. -* -* [@kachitvichyanukul:1985]: http://dx.doi.org/10.1080/00949658508810839 -* -* -* @private -* @param {Function} rand - PRNG for uniformly distributed number +* @name hypergeometric +* @type {Function} * @param {NonNegativeInteger} N - population size * @param {NonNegativeInteger} K - subpopulation size * @param {NonNegativeInteger} n - number of draws * @returns {NonNegativeInteger} pseudorandom number +* +* @example +* var v = hypergeometric( 5, 3, 2 ); +* // returns +* +* @example +* var v = hypergeometric( -5, 3, 2 ); +* // returns NaN +* +* @example +* var v = hypergeometric( 5, 3.14, 2 ); +* // returns NaN +* +* @example +* var v = hypergeometric( 5, 3, 1.5 ); +* // returns NaN +* +* @example +* var v = hypergeometric( NaN, NaN, NaN ); +* // returns NaN */ -function hypergeometric( rand, N, K, n ) { - var n1; - var n2; - var k; - var x; - - if ( n > N/2 ) { - k = N - n; - if ( 2*K <= N ) { - n1 = K; - n2 = N - K; - x = hin( rand, n1, n2, k ); - return K - x; - } - n2 = K; - n1 = N - K; - x = hin( rand, n1, n2, k ); - return n - N + K + x; - } - k = n; - if ( 2*K <= N ) { - n1 = K; - n2 = N - K; - x = hin( rand, n1, n2, k ); - return x; - } - n1 = N - K; - n2 = K; - x = hin( rand, n1, n2, k ); - return n - x; -} +var hypergeometric = factory(); // EXPORTS // From fc799bf284e0c58976106a64271ba8b75fcd8867 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 01:22:51 -0700 Subject: [PATCH 0912/1062] Update tests --- .../random/base/hypergeometric/test/test.js | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/test/test.js b/lib/node_modules/@stdlib/random/base/hypergeometric/test/test.js index 14c4a6cc2f92..69ac39d28b35 100644 --- a/lib/node_modules/@stdlib/random/base/hypergeometric/test/test.js +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/test/test.js @@ -37,22 +37,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof hypergeometric.factory, 'function', 'has `factory` method' ); + t.equal( typeof hypergeometric.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( hypergeometric.NAME, 'hypergeometric', 'has `NAME` property' ); + t.equal( hypergeometric.NAME, 'hypergeometric', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof hypergeometric.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof hypergeometric.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( hypergeometric.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( hypergeometric.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof hypergeometric.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( hypergeometric.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof hypergeometric.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof hypergeometric.byteLength, 'number', 'has property' ); t.end(); }); @@ -76,3 +96,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + hypergeometric( 10, 8, 5 ); + } + // Capture the current state: + state = hypergeometric.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( hypergeometric( 10, 8, 5 ) ); + } + // Set the state: + hypergeometric.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( hypergeometric( 10, 8, 5 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 2f403c9ac35aa3977b08d17965723326373dde7c Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 01:26:10 -0700 Subject: [PATCH 0913/1062] Update tests --- .../base/hypergeometric/test/test.factory.js | 503 +++++++++++++++--- 1 file changed, 427 insertions(+), 76 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/test/test.factory.js b/lib/node_modules/@stdlib/random/base/hypergeometric/test/test.factory.js index 222841a984fd..635e441015f1 100644 --- a/lib/node_modules/@stdlib/random/base/hypergeometric/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var chi2gof = require( '@stdlib/stats/chi2gof' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,76 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var hypergeometric; - var r; - var i; - - // When binding distribution parameters... - hypergeometric = factory( 80, 50, 30 ); - for ( i = 0; i < 100; i++ ) { - r = hypergeometric(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - hypergeometric = factory(); - for ( i = 0; i < 100; i++ ) { - r = hypergeometric( 80, 50, 30 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var hypergeometric1; - var hypergeometric2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - hypergeometric1 = factory( 20, 10, 15, { - 'seed': seed - }); - hypergeometric2 = factory( 20, 10, 15, { - 'seed': seed - }); - - t.notEqual( hypergeometric1, hypergeometric2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = hypergeometric1(); - r2 = hypergeometric2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var hypergeometric = factory(); - t.equal( hypergeometric.NAME, 'hypergeometric', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var hypergeometric = factory(); - t.equal( typeof hypergeometric.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var hypergeometric = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( hypergeometric.seed ), true, 'has `seed` property' ); - t.equal( hypergeometric.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if provided a population size which is not a nonnegative integer', function test( t ) { var values; var i; @@ -126,7 +58,8 @@ tape( 'the function throws an error if provided a population size which is not a '5', null, true, - undefined, + false, + void 0, [], {}, function noop() {} @@ -156,7 +89,8 @@ tape( 'the function throws an error if provided a sub-population size which is n '5', null, true, - undefined, + false, + void 0, [], {}, function noop() {} @@ -186,7 +120,8 @@ tape( 'the function throws an error if the number of draws is not a nonnegative '5', null, true, - undefined, + false, + void 0, [], {}, function noop() {} @@ -256,7 +191,8 @@ tape( 'the function throws an error if provided an options argument which is not 'abc', null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -283,7 +219,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -301,6 +238,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var hypergeometric; + var r; + var i; + + // When binding distribution parameters... + hypergeometric = factory( 80, 50, 30 ); + for ( i = 0; i < 100; i++ ) { + r = hypergeometric(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + hypergeometric = factory(); + for ( i = 0; i < 100; i++ ) { + r = hypergeometric( 80, 50, 30 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var hypergeometric1; + var hypergeometric2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + hypergeometric1 = factory( 20, 10, 15, { + 'seed': seed + }); + hypergeometric2 = factory( 20, 10, 15, { + 'seed': seed + }); + + t.notEqual( hypergeometric1, hypergeometric2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = hypergeometric1(); + r2 = hypergeometric2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var hypergeometric1; + var hypergeometric2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + hypergeometric1 = factory( 20, 10, 15, { + 'seed': seed + }); + hypergeometric2 = factory( 20, 10, 15, { + 'seed': seed + }); + + t.notEqual( hypergeometric1, hypergeometric2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = hypergeometric1(); + r2 = hypergeometric2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var hypergeometric = factory(); + t.equal( hypergeometric.NAME, 'hypergeometric', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var hypergeometric = factory(); + t.equal( typeof hypergeometric.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var hypergeometric = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( hypergeometric.seed ), true, 'has `seed` property' ); + t.equal( hypergeometric.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var hypergeometric = factory(); + t.equal( typeof hypergeometric.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var hypergeometric = factory(); + t.equal( isUint32Array( hypergeometric.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var hypergeometric = factory(); + t.equal( typeof hypergeometric.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var hypergeometric = factory(); + t.equal( typeof hypergeometric.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a population size equal to `NaN`', function test( t ) { var hypergeometric; var r; @@ -728,3 +946,136 @@ tape( 'the function returns a PRNG for generating random numbers from a hypergeo t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var hypergeometric; + var state; + var arr; + var i; + + hypergeometric = factory( 100, 25, 7 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + hypergeometric(); + } + // Capture the current state: + state = hypergeometric.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( hypergeometric() ); + } + + // Create another PRNG using the captured state: + hypergeometric = factory( 100, 25, 7, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( hypergeometric(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var hypergeometric; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + hypergeometric = factory( 100, 25, 7 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + hypergeometric(); + } + // Capture the current state: + state = hypergeometric.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( hypergeometric() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 100, 25, 7, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 100, 25, 7, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var hypergeometric; + var state; + var arr; + var i; + + hypergeometric = factory( 100, 25, 7 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + hypergeometric(); + } + // Capture the current state: + state = hypergeometric.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( hypergeometric() ); + } + // Set the state: + hypergeometric.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( hypergeometric(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 0187f7101cab66c4c3e246186174124d45bcea2d Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 09:53:38 -0700 Subject: [PATCH 0914/1062] Update benchmarks --- .../base/invgamma/benchmark/benchmark.js | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/invgamma/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/invgamma/benchmark/benchmark.js index c6bd132753fd..fd5138abc81d 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/invgamma/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var alpha; var beta; var rand; @@ -78,3 +78,29 @@ bench( pkg+':factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var alpha; + var beta; + var rand; + var z; + var i; + + alpha = 1.5; + beta = 2.3; + rand = invgamma.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( alpha, beta ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 693a89634e538cf4f586af502d1abdf962d537f3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 09:54:22 -0700 Subject: [PATCH 0915/1062] Add benchmarks --- .../invgamma/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/invgamma/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/invgamma/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/invgamma/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..d2f076fb0ad6 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/invgamma/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 1.5, 2.3 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 1.5, 2.3 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 1.5, 2.3 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 71281de56b9ac3c1e1d46e21b69d28e4d70308e8 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 09:55:14 -0700 Subject: [PATCH 0916/1062] Document properties and options --- .../random/base/invgamma/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/invgamma/docs/repl.txt b/lib/node_modules/@stdlib/random/base/invgamma/docs/repl.txt index 5a5bd56907cd..d934c4ba6d81 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/invgamma/docs/repl.txt @@ -45,8 +45,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -90,6 +103,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From 289d96df4df03129a7251f2531c871e84e21779f Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 09:57:11 -0700 Subject: [PATCH 0917/1062] Document properties and options --- .../@stdlib/random/base/invgamma/README.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/invgamma/README.md b/lib/node_modules/@stdlib/random/base/invgamma/README.md index 9048e3931c09..174f2f199f97 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/README.md +++ b/lib/node_modules/@stdlib/random/base/invgamma/README.md @@ -97,6 +97,8 @@ r = rand( 3.14, 2.25 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -119,6 +121,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = invgamma( 2.0, 3.0 ); +} + +// Create a new PRNG initialized to the current state of `invgamma`: +rand = invgamma.factory({ + 'state': invgamma.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 2.0, 3.0 ) === invgamma( 2.0, 3.0 ) ); +// returns true +``` + #### invgamma.NAME The generator name. @@ -160,10 +185,84 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### invgamma.seedLength + +Length of generator seed. + +```javascript +var len = invgamma.seedLength; +// returns +``` + +#### invgamma.state + +Writable property for getting and setting the generator state. + +```javascript +var r = invgamma( 2.0, 5.0 ); +// returns + +r = invgamma( 2.0, 5.0 ); +// returns + +// ... + +// Get a copy of the current state: +var state = invgamma.state; +// returns + +r = invgamma( 2.0, 5.0 ); +// returns + +r = invgamma( 2.0, 5.0 ); +// returns + +// Reset the state: +invgamma.state = state; + +// Replay the last two pseudorandom numbers: +r = invgamma( 2.0, 5.0 ); +// returns + +r = invgamma( 2.0, 5.0 ); +// returns + +// ... +``` + +#### invgamma.stateLength + +Length of generator state. + +```javascript +var len = invgamma.stateLength; +// returns +``` + +#### invgamma.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = invgamma.byteLength; +// returns +``` + +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -208,6 +307,8 @@ for ( i = 0; i < 100; i++ ) { [inverse-gamma]: https://en.wikipedia.org/wiki/Inverse_gamma_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From f51fbab6c7457fe7f5f7881c91c6cff01528ffab Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 09:58:09 -0700 Subject: [PATCH 0918/1062] Rename files --- .../random/base/invgamma/lib/factory.js | 2 +- .../@stdlib/random/base/invgamma/lib/index.js | 2 +- .../random/base/invgamma/lib/invgamma.js | 42 +++---------------- .../invgamma/lib/{_invgamma.js => main.js} | 42 ++++++++++++++++--- 4 files changed, 44 insertions(+), 44 deletions(-) rename lib/node_modules/@stdlib/random/base/invgamma/lib/{_invgamma.js => main.js} (52%) diff --git a/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js b/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js index 57333b11bf72..dc23f3f4b782 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js @@ -25,7 +25,7 @@ var isObject = require( '@stdlib/assert/is-plain-object' ); var gamma = require( '@stdlib/random/base/gamma' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); var validate = require( './validate.js' ); -var invgamma0 = require( './_invgamma.js' ); +var invgamma0 = require( './invgamma.js' ); // MAIN // diff --git a/lib/node_modules/@stdlib/random/base/invgamma/lib/index.js b/lib/node_modules/@stdlib/random/base/invgamma/lib/index.js index 4668b2c1a1b2..2ef7e28549a1 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/invgamma/lib/index.js @@ -51,7 +51,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var invgamma = require( './invgamma.js' ); +var invgamma = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/invgamma/lib/invgamma.js b/lib/node_modules/@stdlib/random/base/invgamma/lib/invgamma.js index 26e46c379a25..c8a43d85b552 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/lib/invgamma.js +++ b/lib/node_modules/@stdlib/random/base/invgamma/lib/invgamma.js @@ -18,48 +18,18 @@ 'use strict'; -// MODULES // - -var factory = require( './factory.js' ); - - -// MAIN // - /** -* Returns a random number drawn from an inverse gamma distribution. -* -* ## Method -* -* When -* -* ```tex -* X \sim \operatorname{Gamma}( \alpha, \beta ) -* ``` +* Returns a pseudorandom number drawn from an inverse gamma distribution. * -* then -* -* ```tex -* \frac{1}{X} \sim \operatorname{InvGamma}\left( \alpha, \tfrac{1}{beta} \right) -* ``` -* -* Hence, to generate a draw from an inverse gamma distribution with parameters \\( \alpha \\) and \\( \beta \\), sample `X` from a \\( \operatorname{Gamma}\left( \alpha, \tfrac{1}{\beta} \right) \\) distribution and return `1/X`. -* -* -* @name invgamma -* @type {Function} +* @private +* @param {Function} rgamma - PRNG to generate gamma distributed numbers * @param {PositiveNumber} alpha - shape parameter * @param {PositiveNumber} beta - scale parameter * @returns {number} pseudorandom number -* -* @example -* var v = invgamma( 2.0, 1.0 ); -* // returns -* -* @example -* var v = invgamma( -2.0, 5.0 ); -* // returns NaN */ -var invgamma = factory(); +function invgamma( rgamma, alpha, beta ) { + return 1.0 / rgamma( alpha, beta ); +} // EXPORTS // diff --git a/lib/node_modules/@stdlib/random/base/invgamma/lib/_invgamma.js b/lib/node_modules/@stdlib/random/base/invgamma/lib/main.js similarity index 52% rename from lib/node_modules/@stdlib/random/base/invgamma/lib/_invgamma.js rename to lib/node_modules/@stdlib/random/base/invgamma/lib/main.js index c8a43d85b552..26e46c379a25 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/lib/_invgamma.js +++ b/lib/node_modules/@stdlib/random/base/invgamma/lib/main.js @@ -18,18 +18,48 @@ 'use strict'; +// MODULES // + +var factory = require( './factory.js' ); + + +// MAIN // + /** -* Returns a pseudorandom number drawn from an inverse gamma distribution. +* Returns a random number drawn from an inverse gamma distribution. +* +* ## Method +* +* When +* +* ```tex +* X \sim \operatorname{Gamma}( \alpha, \beta ) +* ``` * -* @private -* @param {Function} rgamma - PRNG to generate gamma distributed numbers +* then +* +* ```tex +* \frac{1}{X} \sim \operatorname{InvGamma}\left( \alpha, \tfrac{1}{beta} \right) +* ``` +* +* Hence, to generate a draw from an inverse gamma distribution with parameters \\( \alpha \\) and \\( \beta \\), sample `X` from a \\( \operatorname{Gamma}\left( \alpha, \tfrac{1}{\beta} \right) \\) distribution and return `1/X`. +* +* +* @name invgamma +* @type {Function} * @param {PositiveNumber} alpha - shape parameter * @param {PositiveNumber} beta - scale parameter * @returns {number} pseudorandom number +* +* @example +* var v = invgamma( 2.0, 1.0 ); +* // returns +* +* @example +* var v = invgamma( -2.0, 5.0 ); +* // returns NaN */ -function invgamma( rgamma, alpha, beta ) { - return 1.0 / rgamma( alpha, beta ); -} +var invgamma = factory(); // EXPORTS // From cda18123260298fd3a31da8988adaea0190a1e94 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 09:59:48 -0700 Subject: [PATCH 0919/1062] Add support for getting and setting PRNG state --- .../random/base/invgamma/lib/factory.js | 78 ++++++++++++++++++- 1 file changed, 75 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js b/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js index dc23f3f4b782..9026df2995ee 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js @@ -21,6 +21,8 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var gamma = require( '@stdlib/random/base/gamma' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -36,10 +38,14 @@ var invgamma0 = require( './invgamma.js' ); * @param {PositiveNumber} [alpha] - shape parameter * @param {PositiveNumber} [beta] - scale parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `alpha` must be a positive number * @throws {TypeError} `beta` must be a positive number -* @throws {TypeError} options must be an object +* @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -93,11 +99,77 @@ function factory() { prng = invgamma1; } setReadOnly( prng, 'NAME', 'invgamma' ); - setReadOnly( prng, 'seed', rand.seed ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + rand.state = s; + } + /** * Returns a pseudorandom number drawn from an inverse gamma distribution. * From 7a23c42040eb23ef301afa3c8968e7c87468e0cd Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 10:01:12 -0700 Subject: [PATCH 0920/1062] Update tests --- .../@stdlib/random/base/invgamma/test/test.js | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/invgamma/test/test.js b/lib/node_modules/@stdlib/random/base/invgamma/test/test.js index 3a03d3ace681..e3edc6f3e9c2 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/test/test.js +++ b/lib/node_modules/@stdlib/random/base/invgamma/test/test.js @@ -34,22 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof invgamma.factory, 'function', 'has `factory` method' ); + t.equal( typeof invgamma.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( invgamma.NAME, 'invgamma', 'has `NAME` property' ); + t.equal( invgamma.NAME, 'invgamma', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof invgamma.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof invgamma.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( invgamma.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( invgamma.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof invgamma.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( invgamma.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof invgamma.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof invgamma.byteLength, 'number', 'has property' ); t.end(); }); @@ -63,3 +83,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + invgamma( 2.0, 1.0 ); + } + // Capture the current state: + state = invgamma.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( invgamma( 2.0, 1.0 ) ); + } + // Set the state: + invgamma.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( invgamma( 2.0, 1.0 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 93242c11541d33492d6a9686b8ef8c907c0f68c5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 10:04:38 -0700 Subject: [PATCH 0921/1062] Update tests --- .../random/base/invgamma/test/test.factory.js | 500 +++++++++++++++--- 1 file changed, 425 insertions(+), 75 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/invgamma/test/test.factory.js b/lib/node_modules/@stdlib/random/base/invgamma/test/test.factory.js index cd85e7f4dfc4..e6af6022666f 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/invgamma/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var kstest = require( '@stdlib/stats/kstest' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,76 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var invgamma; - var r; - var i; - - // When binding distribution parameters... - invgamma = factory( 2.0, 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = invgamma(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - invgamma = factory(); - for ( i = 0; i < 100; i++ ) { - r = invgamma( 2.5, 2.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var invgamma1; - var invgamma2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - invgamma1 = factory( 1.0, 1.0, { - 'seed': seed - }); - invgamma2 = factory( 1.0, 1.0, { - 'seed': seed - }); - - t.notEqual( invgamma1, invgamma2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = invgamma1(); - r2 = invgamma2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var invgamma = factory(); - t.equal( invgamma.NAME, 'invgamma', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var invgamma = factory(); - t.equal( typeof invgamma.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var invgamma = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( invgamma.seed ), true, 'has `seed` property' ); - t.equal( invgamma.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if `alpha` is not a positive number', function test( t ) { var values; var i; @@ -124,7 +56,8 @@ tape( 'the function throws an error if `alpha` is not a positive number', functi '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -153,7 +86,8 @@ tape( 'the function throws an error if `invgamma` is not a positive number', fun '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -181,7 +115,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -208,7 +143,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -226,6 +162,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var invgamma; + var r; + var i; + + // When binding distribution parameters... + invgamma = factory( 2.0, 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = invgamma(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + invgamma = factory(); + for ( i = 0; i < 100; i++ ) { + r = invgamma( 2.5, 2.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var invgamma1; + var invgamma2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + invgamma1 = factory( 1.0, 1.0, { + 'seed': seed + }); + invgamma2 = factory( 1.0, 1.0, { + 'seed': seed + }); + + t.notEqual( invgamma1, invgamma2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = invgamma1(); + r2 = invgamma2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var invgamma1; + var invgamma2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + invgamma1 = factory( 1.0, 1.0, { + 'seed': seed + }); + invgamma2 = factory( 1.0, 1.0, { + 'seed': seed + }); + + t.notEqual( invgamma1, invgamma2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = invgamma1(); + r2 = invgamma2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var invgamma = factory(); + t.equal( invgamma.NAME, 'invgamma', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var invgamma = factory(); + t.equal( typeof invgamma.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var invgamma = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( invgamma.seed ), true, 'has property' ); + t.equal( invgamma.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var invgamma = factory(); + t.equal( typeof invgamma.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var invgamma = factory(); + t.equal( isUint32Array( invgamma.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var invgamma = factory(); + t.equal( typeof invgamma.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var invgamma = factory(); + t.equal( typeof invgamma.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` if provided a first argument which is `NaN`', function test( t ) { var invgamma; var r; @@ -359,3 +576,136 @@ tape( 'the function returns a PRNG for generating random numbers from an inverse t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var invgamma; + var state; + var arr; + var i; + + invgamma = factory( 2.0, 1.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + invgamma(); + } + // Capture the current state: + state = invgamma.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( invgamma() ); + } + + // Create another PRNG using the captured state: + invgamma = factory( 2.0, 1.0, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( invgamma(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var invgamma; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + invgamma = factory( 2.0, 1.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + invgamma(); + } + // Capture the current state: + state = invgamma.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( invgamma() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 2.0, 1.0, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 2.0, 1.0, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var invgamma; + var state; + var arr; + var i; + + invgamma = factory( 2.0, 1.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + invgamma(); + } + // Capture the current state: + state = invgamma.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( invgamma() ); + } + // Set the state: + invgamma.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( invgamma(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From f35387784bf0e0bf461d4b603b062d16e3a72b24 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 10:05:44 -0700 Subject: [PATCH 0922/1062] Add benchmarks --- .../base/kumaraswamy/benchmark/benchmark.js | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/kumaraswamy/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/kumaraswamy/benchmark/benchmark.js index 68ae9e8305d4..f80cfaeffeba 100644 --- a/lib/node_modules/@stdlib/random/base/kumaraswamy/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/kumaraswamy/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var alpha; var beta; var rand; @@ -78,3 +78,29 @@ bench( pkg+':factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var alpha; + var beta; + var rand; + var z; + var i; + + alpha = 100.56789; + beta = 55.54321; + rand = kumaraswamy.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( alpha, beta ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 1b5f1a030c23169385c14295ce6be9673a1bb458 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 10:06:32 -0700 Subject: [PATCH 0923/1062] Add benchmarks --- .../benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/kumaraswamy/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/kumaraswamy/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/kumaraswamy/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..dd2c2626bece --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/kumaraswamy/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 100.0, 55.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 100.0, 55.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 100.0, 55.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 078df0928f44776c13f2fb39a36f815fb9f5794c Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 10:07:41 -0700 Subject: [PATCH 0924/1062] Document properties and options --- .../random/base/kumaraswamy/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/kumaraswamy/docs/repl.txt b/lib/node_modules/@stdlib/random/base/kumaraswamy/docs/repl.txt index 7b79cb4fa755..a735d5fb496b 100644 --- a/lib/node_modules/@stdlib/random/base/kumaraswamy/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/kumaraswamy/docs/repl.txt @@ -46,8 +46,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -91,6 +104,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 1.5, 1.5 ) + + > r = {{alias}}( 1.5, 1.5 ) + + > r = {{alias}}( 1.5, 1.5 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 1.5, 1.5 ) + + > r = {{alias}}( 1.5, 1.5 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 1.5, 1.5 ) + + > r = {{alias}}( 1.5, 1.5 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From a00b0726c57ddeea4ad445aa340919a32dd5a283 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 10:09:32 -0700 Subject: [PATCH 0925/1062] Document properties and options --- .../@stdlib/random/base/kumaraswamy/README.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/kumaraswamy/README.md b/lib/node_modules/@stdlib/random/base/kumaraswamy/README.md index 281a27bae0c7..563175c75ba1 100644 --- a/lib/node_modules/@stdlib/random/base/kumaraswamy/README.md +++ b/lib/node_modules/@stdlib/random/base/kumaraswamy/README.md @@ -98,6 +98,8 @@ r = rand( 3.14, 2.25 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -120,6 +122,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = kumaraswamy( 2.0, 3.0 ); +} + +// Create a new PRNG initialized to the current state of `kumaraswamy`: +rand = kumaraswamy.factory({ + 'state': kumaraswamy.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 2.0, 3.0 ) === kumaraswamy( 2.0, 3.0 ) ); +// returns true +``` + #### kumaraswamy.NAME The generator name. @@ -161,10 +186,84 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### kumaraswamy.seedLength + +Length of generator seed. + +```javascript +var len = kumaraswamy.seedLength; +// returns +``` + +#### kumaraswamy.state + +Writable property for getting and setting the generator state. + +```javascript +var r = kumaraswamy( 2.0, 5.0 ); +// returns + +r = kumaraswamy( 2.0, 5.0 ); +// returns + +// ... + +// Get a copy of the current state: +var state = kumaraswamy.state; +// returns + +r = kumaraswamy( 2.0, 5.0 ); +// returns + +r = kumaraswamy( 2.0, 5.0 ); +// returns + +// Reset the state: +kumaraswamy.state = state; + +// Replay the last two pseudorandom numbers: +r = kumaraswamy( 2.0, 5.0 ); +// returns + +r = kumaraswamy( 2.0, 5.0 ); +// returns + +// ... +``` + +#### kumaraswamy.stateLength + +Length of generator state. + +```javascript +var len = kumaraswamy.stateLength; +// returns +``` + +#### kumaraswamy.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = kumaraswamy.byteLength; +// returns +``` + +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -209,6 +308,8 @@ for ( i = 0; i < 100; i++ ) { [kumaraswamy]: https://en.wikipedia.org/wiki/Kumaraswamy_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From 6eaf556b7440589f763c3abbc02f655bcf29cf87 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 10:12:02 -0700 Subject: [PATCH 0926/1062] Rename files and add support for getting and setting PRNG state --- .../random/base/kumaraswamy/lib/factory.js | 80 ++++++++++++++++++- .../random/base/kumaraswamy/lib/index.js | 2 +- .../base/kumaraswamy/lib/kumaraswamy.js | 23 +++--- .../lib/{_kumaraswamy.js => main.js} | 23 +++--- 4 files changed, 100 insertions(+), 28 deletions(-) rename lib/node_modules/@stdlib/random/base/kumaraswamy/lib/{_kumaraswamy.js => main.js} (69%) diff --git a/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/factory.js b/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/factory.js index 8861b662e526..5074f01f19b5 100644 --- a/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/factory.js @@ -21,11 +21,13 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); var validate = require( './validate.js' ); -var kumaraswamy0 = require( './_kumaraswamy.js' ); +var kumaraswamy0 = require( './kumaraswamy.js' ); // MAIN // @@ -36,10 +38,14 @@ var kumaraswamy0 = require( './_kumaraswamy.js' ); * @param {PositiveNumber} [a] - first shape parameter * @param {PositiveNumber} [b] - second shape parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `a` must be a positive number * @throws {TypeError} `b` must be a positive number -* @throws {TypeError} `options` must be an object +* @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -95,11 +101,77 @@ function factory() { prng = kumaraswamy1; } setReadOnly( prng, 'NAME', 'kumaraswamy' ); - setReadOnly( prng, 'seed', rand.seed ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + rand.state = s; + } + /** * Returns a random number drawn from a Kumaraswamy's double bounded distribution with bound parameter values. * diff --git a/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/index.js b/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/index.js index 7c16802c864a..3d2ed1a7920c 100644 --- a/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/index.js @@ -43,7 +43,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var kumaraswamy = require( './kumaraswamy.js' ); +var kumaraswamy = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/kumaraswamy.js b/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/kumaraswamy.js index da6bea06237a..a437b7125584 100644 --- a/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/kumaraswamy.js +++ b/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/kumaraswamy.js @@ -20,31 +20,26 @@ // MODULES // -var factory = require( './factory.js' ); +var pow = require( '@stdlib/math/base/special/pow' ); // MAIN // /** -* Generates a Kumaraswamy's double bounded distributed random number. +* Returns a random number drawn from Kumaraswamy's double bounded distribution. * -* @name kumaraswamy -* @type {Function} +* @private +* @param {Function} rand - pseudorandom number generator for uniformly distributed numbers * @param {PositiveNumber} a - first shape parameter * @param {PositiveNumber} b - second shape parameter * @returns {Probability} pseudorandom number -* -* @example -* var r = kumaraswamy( 2.0, 5.0 ); -* // returns -* -* @example -* var r = kumaraswamy( -2.0, 5.0 ); -* // returns NaN */ -var kumaraswamy = factory(); +function sample( rand, a, b ) { + var u = rand(); + return pow( 1.0 - pow( 1.0-u, 1.0/b ), 1.0/a ); +} // EXPORTS // -module.exports = kumaraswamy; +module.exports = sample; diff --git a/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/_kumaraswamy.js b/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/main.js similarity index 69% rename from lib/node_modules/@stdlib/random/base/kumaraswamy/lib/_kumaraswamy.js rename to lib/node_modules/@stdlib/random/base/kumaraswamy/lib/main.js index a437b7125584..da6bea06237a 100644 --- a/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/_kumaraswamy.js +++ b/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/main.js @@ -20,26 +20,31 @@ // MODULES // -var pow = require( '@stdlib/math/base/special/pow' ); +var factory = require( './factory.js' ); // MAIN // /** -* Returns a random number drawn from Kumaraswamy's double bounded distribution. +* Generates a Kumaraswamy's double bounded distributed random number. * -* @private -* @param {Function} rand - pseudorandom number generator for uniformly distributed numbers +* @name kumaraswamy +* @type {Function} * @param {PositiveNumber} a - first shape parameter * @param {PositiveNumber} b - second shape parameter * @returns {Probability} pseudorandom number +* +* @example +* var r = kumaraswamy( 2.0, 5.0 ); +* // returns +* +* @example +* var r = kumaraswamy( -2.0, 5.0 ); +* // returns NaN */ -function sample( rand, a, b ) { - var u = rand(); - return pow( 1.0 - pow( 1.0-u, 1.0/b ), 1.0/a ); -} +var kumaraswamy = factory(); // EXPORTS // -module.exports = sample; +module.exports = kumaraswamy; From 4f905e04a04ff549ddef139085681bc0d97c1b2b Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 10:13:10 -0700 Subject: [PATCH 0927/1062] Update tests --- .../random/base/kumaraswamy/test/test.js | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/kumaraswamy/test/test.js b/lib/node_modules/@stdlib/random/base/kumaraswamy/test/test.js index 4a84dff3d3c5..75b6989e7570 100644 --- a/lib/node_modules/@stdlib/random/base/kumaraswamy/test/test.js +++ b/lib/node_modules/@stdlib/random/base/kumaraswamy/test/test.js @@ -34,22 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof kumaraswamy.factory, 'function', 'has `factory` method' ); + t.equal( typeof kumaraswamy.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( kumaraswamy.NAME, 'kumaraswamy', 'has `NAME` property' ); + t.equal( kumaraswamy.NAME, 'kumaraswamy', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof kumaraswamy.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof kumaraswamy.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( kumaraswamy.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( kumaraswamy.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof kumaraswamy.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( kumaraswamy.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof kumaraswamy.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof kumaraswamy.byteLength, 'number', 'has property' ); t.end(); }); @@ -63,3 +83,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + kumaraswamy( 2.0, 1.0 ); + } + // Capture the current state: + state = kumaraswamy.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( kumaraswamy( 2.0, 1.0 ) ); + } + // Set the state: + kumaraswamy.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( kumaraswamy( 2.0, 1.0 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 8563bcb5754c49d738a5abf79851a8065f2f7b65 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 10:17:11 -0700 Subject: [PATCH 0928/1062] Update tests --- .../base/kumaraswamy/test/test.factory.js | 554 ++++++++++++++---- 1 file changed, 452 insertions(+), 102 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/kumaraswamy/test/test.factory.js b/lib/node_modules/@stdlib/random/base/kumaraswamy/test/test.factory.js index cc410bea64d6..b34df6f28521 100644 --- a/lib/node_modules/@stdlib/random/base/kumaraswamy/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/kumaraswamy/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var kstest = require( '@stdlib/stats/kstest' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,6 +46,263 @@ tape( 'main export is a function', function test( t ) { t.end(); }); +tape( 'the function throws an error if `a` is not a positive number', function test( t ) { + var values; + var i; + + values = [ + -2.0, + 0.0, + '5', + null, + true, + false, + void 0, + NaN, + [], + {}, + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( value, 2.0 ); + }; + } +}); + +tape( 'the function throws an error if `b` is not a positive number', function test( t ) { + var values; + var i; + + values = [ + -2.0, + 0.0, + '5', + null, + true, + false, + void 0, + NaN, + [], + {}, + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 2.0, value ); + }; + } +}); + +tape( 'the function throws an error if provided an options argument which is not an object (no other arguments)', function test( t ) { + var values; + var i; + + values = [ + 'abc', + 5, + null, + true, + false, + void 0, + NaN, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( value ); + }; + } +}); + +tape( 'the function throws an error if provided an options argument which is not an object (other arguments)', function test( t ) { + var values; + var i; + + values = [ + 'abc', + 5, + null, + true, + false, + void 0, + NaN, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 1.0, 1.0, value ); + }; + } +}); + +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { var kumaraswamy; var r; @@ -71,7 +330,7 @@ tape( 'the function returns a pseudorandom number generator (no seed)', function t.end(); }); -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { var kumaraswamy1; var kumaraswamy2; var seed; @@ -79,7 +338,34 @@ tape( 'the function returns a seeded pseudorandom number generator', function te var r2; var i; - seed = round( Date.now() / 1000 ); + seed = now(); + + kumaraswamy1 = factory( 0.5, 0.5, { + 'seed': seed + }); + kumaraswamy2 = factory( 0.5, 0.5, { + 'seed': seed + }); + + t.notEqual( kumaraswamy1, kumaraswamy2, 'separate generators' ); + + for ( i = 0; i < 1e3; i++ ) { + r1 = kumaraswamy1(); + r2 = kumaraswamy2(); + t.equal( r1, r2, 'both return same number: '+r1 ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var kumaraswamy1; + var kumaraswamy2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; kumaraswamy1 = factory( 0.5, 0.5, { 'seed': seed @@ -106,7 +392,7 @@ tape( 'the function returns a seeded pseudorandom number generator', function te var r2; var i; - seed = round( Date.now() / 1000 ); + seed = now(); kumaraswamy1 = factory( 3.14, 3.14, { 'seed': seed @@ -127,13 +413,13 @@ tape( 'the function returns a seeded pseudorandom number generator', function te tape( 'attached to the returned function is the generator name', function test( t ) { var kumaraswamy = factory(); - t.equal( kumaraswamy.NAME, 'kumaraswamy', 'has `NAME` property' ); + t.equal( kumaraswamy.NAME, 'kumaraswamy', 'has property' ); t.end(); }); tape( 'attached to the returned function is the underlying PRNG', function test( t ) { var kumaraswamy = factory(); - t.equal( typeof kumaraswamy.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof kumaraswamy.PRNG, 'function', 'has property' ); t.end(); }); @@ -141,121 +427,52 @@ tape( 'attached to the returned function is the generator seed', function test( var kumaraswamy = factory({ 'seed': 12345 }); - t.equal( isUint32Array( kumaraswamy.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( kumaraswamy.seed ), true, 'has property' ); t.equal( kumaraswamy.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); -tape( 'the function throws an error if `a` is not a positive number', function test( t ) { - var values; +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; var i; - values = [ - -2.0, - 0.0, - '5', - null, - true, - undefined, - NaN, - [], - {}, - function noop() {} - ]; + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); } t.end(); - - function badValue( value ) { - return function badValue() { - factory( value, 2.0 ); - }; - } }); -tape( 'the function throws an error if `b` is not a positive number', function test( t ) { - var values; - var i; - - values = [ - -2.0, - 0.0, - '5', - null, - true, - undefined, - NaN, - [], - {}, - function noop() {} - ]; - - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var kumaraswamy = factory(); + t.equal( typeof kumaraswamy.seedLength, 'number', 'has property' ); t.end(); - - function badValue( value ) { - return function badValue() { - factory( 2.0, value ); - }; - } }); -tape( 'the function throws an error if provided an options argument which is not an object (no other arguments)', function test( t ) { - var values; - var i; - - values = [ - 'abc', - 5, - null, - true, - undefined, - NaN, - [], - function noop() {} - ]; - - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } +tape( 'attached to the returned function is the generator state', function test( t ) { + var kumaraswamy = factory(); + t.equal( isUint32Array( kumaraswamy.state ), true, 'has property' ); t.end(); - - function badValue( value ) { - return function badValue() { - factory( value ); - }; - } }); -tape( 'the function throws an error if provided an options argument which is not an object (other arguments)', function test( t ) { - var values; - var i; - - values = [ - 'abc', - 5, - null, - true, - undefined, - NaN, - [], - function noop() {} - ]; - - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } +tape( 'attached to the returned function is the generator state length', function test( t ) { + var kumaraswamy = factory(); + t.equal( typeof kumaraswamy.stateLength, 'number', 'has property' ); t.end(); +}); - function badValue( value ) { - return function badValue() { - factory( 1.0, 1.0, value ); - }; - } +tape( 'attached to the returned function is the generator state size', function test( t ) { + var kumaraswamy = factory(); + t.equal( typeof kumaraswamy.byteLength, 'number', 'has property' ); + t.end(); }); tape( 'when called without arguments, the function returns a PRNG that returns `NaN` if provided a first argument which is `NaN`', function test( t ) { @@ -391,3 +608,136 @@ tape( 'the function returns a PRNG for generating random numbers from a Kumarasw t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var kumaraswamy; + var state; + var arr; + var i; + + kumaraswamy = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + kumaraswamy(); + } + // Capture the current state: + state = kumaraswamy.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( kumaraswamy() ); + } + + // Create another PRNG using the captured state: + kumaraswamy = factory( 2.0, 4.0, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( kumaraswamy(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var kumaraswamy; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + kumaraswamy = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + kumaraswamy(); + } + // Capture the current state: + state = kumaraswamy.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( kumaraswamy() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var kumaraswamy; + var state; + var arr; + var i; + + kumaraswamy = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + kumaraswamy(); + } + // Capture the current state: + state = kumaraswamy.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( kumaraswamy() ); + } + // Set the state: + kumaraswamy.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( kumaraswamy(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 73e1ecdcc28c6779d14343ae95278163c4dcb893 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 10:18:16 -0700 Subject: [PATCH 0929/1062] Update benchmarks --- .../base/laplace/benchmark/benchmark.js | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/laplace/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/laplace/benchmark/benchmark.js index 446e8d5939a2..d8025079262b 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/laplace/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var scale; var rand; var mu; @@ -78,3 +78,29 @@ bench( pkg+':factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var scale; + var rand; + var mu; + var z; + var i; + + mu = 0.0; + scale = 1.5; + rand = laplace.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( mu, scale ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From dbb3708b0ff900aa7b2df7f7683b22ef4539d83d Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 10:18:56 -0700 Subject: [PATCH 0930/1062] Add benchmarks --- .../laplace/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/laplace/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/laplace/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/laplace/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..d8564f8eb968 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/laplace/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From eec85e232fd3abd142d98093aceccd934ec85eed Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 10:19:48 -0700 Subject: [PATCH 0931/1062] Document properties and options --- .../@stdlib/random/base/laplace/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/laplace/docs/repl.txt b/lib/node_modules/@stdlib/random/base/laplace/docs/repl.txt index a7631b55a027..24dbddb09d21 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/laplace/docs/repl.txt @@ -43,8 +43,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -88,6 +101,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From 1c624d22491aafe9780f8e459850053d43cbd639 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 10:21:09 -0700 Subject: [PATCH 0932/1062] Document properties and options --- .../@stdlib/random/base/laplace/README.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/laplace/README.md b/lib/node_modules/@stdlib/random/base/laplace/README.md index 0eb32fe1f6e1..40032ae69214 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/README.md +++ b/lib/node_modules/@stdlib/random/base/laplace/README.md @@ -90,6 +90,8 @@ r = rand( -2.0, 2.0 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -112,6 +114,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = laplace( 1.0, 2.0 ); +} + +// Create a new PRNG initialized to the current state of `laplace`: +rand = laplace.factory({ + 'state': laplace.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 1.0, 2.0 ) === laplace( 1.0, 2.0 ) ); +// returns true +``` + #### laplace.NAME The generator name. @@ -153,10 +178,84 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### laplace.seedLength + +Length of generator seed. + +```javascript +var len = laplace.seedLength; +// returns +``` + +#### laplace.state + +Writable property for getting and setting the generator state. + +```javascript +var r = laplace( 2.0, 5.0 ); +// returns + +r = laplace( 2.0, 5.0 ); +// returns + +// ... + +// Get a copy of the current state: +var state = laplace.state; +// returns + +r = laplace( 2.0, 5.0 ); +// returns + +r = laplace( 2.0, 5.0 ); +// returns + +// Reset the state: +laplace.state = state; + +// Replay the last two pseudorandom numbers: +r = laplace( 2.0, 5.0 ); +// returns + +r = laplace( 2.0, 5.0 ); +// returns + +// ... +``` + +#### laplace.stateLength + +Length of generator state. + +```javascript +var len = laplace.stateLength; +// returns +``` + +#### laplace.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = laplace.byteLength; +// returns +``` + +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -201,6 +300,8 @@ for ( i = 0; i < 100; i++ ) { [laplace]: https://en.wikipedia.org/wiki/Laplace_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From 377d7159f4cad8e1d5abbeab19b61025b9ff41b6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 10:22:00 -0700 Subject: [PATCH 0933/1062] Rename files --- .../random/base/laplace/lib/factory.js | 2 +- .../@stdlib/random/base/laplace/lib/index.js | 2 +- .../random/base/laplace/lib/laplace.js | 21 ++++++++----------- .../base/laplace/lib/{_laplace.js => main.js} | 21 +++++++++++-------- 4 files changed, 23 insertions(+), 23 deletions(-) rename lib/node_modules/@stdlib/random/base/laplace/lib/{_laplace.js => main.js} (72%) diff --git a/lib/node_modules/@stdlib/random/base/laplace/lib/factory.js b/lib/node_modules/@stdlib/random/base/laplace/lib/factory.js index 87525e65022d..d80662b337d1 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/laplace/lib/factory.js @@ -25,7 +25,7 @@ var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); var validate = require( './validate.js' ); -var laplace0 = require( './_laplace.js' ); +var laplace0 = require( './laplace.js' ); // MAIN // diff --git a/lib/node_modules/@stdlib/random/base/laplace/lib/index.js b/lib/node_modules/@stdlib/random/base/laplace/lib/index.js index 44b51bcbf238..ba870e99b2a5 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/laplace/lib/index.js @@ -51,7 +51,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var laplace = require( './laplace.js' ); +var laplace = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/laplace/lib/laplace.js b/lib/node_modules/@stdlib/random/base/laplace/lib/laplace.js index db7a09939501..bb88ad60c4c2 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/lib/laplace.js +++ b/lib/node_modules/@stdlib/random/base/laplace/lib/laplace.js @@ -20,7 +20,9 @@ // MODULES // -var factory = require( './factory.js' ); +var sign = require( '@stdlib/math/base/special/signum' ); +var abs = require( '@stdlib/math/base/special/abs' ); +var ln = require( '@stdlib/math/base/special/ln' ); // MAIN // @@ -28,21 +30,16 @@ var factory = require( './factory.js' ); /** * Returns a pseudorandom number drawn from a Laplace (double exponential) distribution. * -* @name laplace -* @type {Function} +* @private +* @param {Function} rand - PRNG for uniformly distributed numbers * @param {number} mu - mean * @param {PositiveNumber} b - scale parameter * @returns {number} pseudorandom number -* -* @example -* var v = laplace( 0.0, 2.0 ); -* // returns -* -* @example -* var v = laplace( 0.0, -1.0 ); -* // returns NaN */ -var laplace = factory(); +function laplace( rand, mu, b ) { + var u = rand() - 0.5; + return mu - ( b*sign( u )*ln( 1.0 - (2.0*abs(u)) ) ); +} // EXPORTS // diff --git a/lib/node_modules/@stdlib/random/base/laplace/lib/_laplace.js b/lib/node_modules/@stdlib/random/base/laplace/lib/main.js similarity index 72% rename from lib/node_modules/@stdlib/random/base/laplace/lib/_laplace.js rename to lib/node_modules/@stdlib/random/base/laplace/lib/main.js index bb88ad60c4c2..db7a09939501 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/lib/_laplace.js +++ b/lib/node_modules/@stdlib/random/base/laplace/lib/main.js @@ -20,9 +20,7 @@ // MODULES // -var sign = require( '@stdlib/math/base/special/signum' ); -var abs = require( '@stdlib/math/base/special/abs' ); -var ln = require( '@stdlib/math/base/special/ln' ); +var factory = require( './factory.js' ); // MAIN // @@ -30,16 +28,21 @@ var ln = require( '@stdlib/math/base/special/ln' ); /** * Returns a pseudorandom number drawn from a Laplace (double exponential) distribution. * -* @private -* @param {Function} rand - PRNG for uniformly distributed numbers +* @name laplace +* @type {Function} * @param {number} mu - mean * @param {PositiveNumber} b - scale parameter * @returns {number} pseudorandom number +* +* @example +* var v = laplace( 0.0, 2.0 ); +* // returns +* +* @example +* var v = laplace( 0.0, -1.0 ); +* // returns NaN */ -function laplace( rand, mu, b ) { - var u = rand() - 0.5; - return mu - ( b*sign( u )*ln( 1.0 - (2.0*abs(u)) ) ); -} +var laplace = factory(); // EXPORTS // From ee8be7685caf2f25e38278923cbc4544157cf43d Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 10:24:53 -0700 Subject: [PATCH 0934/1062] Add support for setting and getting PRNG state --- .../random/base/laplace/lib/factory.js | 76 ++++++++++++++++++- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/laplace/lib/factory.js b/lib/node_modules/@stdlib/random/base/laplace/lib/factory.js index d80662b337d1..4e82faa5d622 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/laplace/lib/factory.js @@ -21,6 +21,8 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -36,10 +38,14 @@ var laplace0 = require( './laplace.js' ); * @param {number} [mu] - mean * @param {PositiveNumber} [b] - scale parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `mu` must be a number * @throws {TypeError} `b` must be a positive number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -95,11 +101,77 @@ function factory() { prng = laplace1; } setReadOnly( prng, 'NAME', 'laplace' ); - setReadOnly( prng, 'seed', rand.seed ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + rand.state = s; + } + /** * Returns a pseudorandom number drawn from a Laplace (double exponential) distribution with bound parameters. * From 655275b5f3937bd72f0e8fcecdfb2e37643fbedb Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 10:25:13 -0700 Subject: [PATCH 0935/1062] Update tests --- .../@stdlib/random/base/laplace/test/test.js | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/laplace/test/test.js b/lib/node_modules/@stdlib/random/base/laplace/test/test.js index d903c0095f38..1eb852e60dfa 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/test/test.js +++ b/lib/node_modules/@stdlib/random/base/laplace/test/test.js @@ -34,22 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof laplace.factory, 'function', 'has `factory` method' ); + t.equal( typeof laplace.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( laplace.NAME, 'laplace', 'has `NAME` property' ); + t.equal( laplace.NAME, 'laplace', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof laplace.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof laplace.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( laplace.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( laplace.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof laplace.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( laplace.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof laplace.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof laplace.byteLength, 'number', 'has property' ); t.end(); }); @@ -62,3 +82,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + laplace( 2.0, 1.0 ); + } + // Capture the current state: + state = laplace.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( laplace( 2.0, 1.0 ) ); + } + // Set the state: + laplace.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( laplace( 2.0, 1.0 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 6897b630d39950711f3984ae782e9133b2dbcd52 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 10:27:42 -0700 Subject: [PATCH 0936/1062] Update tests --- .../random/base/laplace/test/test.factory.js | 500 +++++++++++++++--- 1 file changed, 425 insertions(+), 75 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/laplace/test/test.factory.js b/lib/node_modules/@stdlib/random/base/laplace/test/test.factory.js index d32ee726a132..bedd93c407d0 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/laplace/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var kstest = require( '@stdlib/stats/kstest' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,76 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var laplace; - var r; - var i; - - // When binding distribution parameters... - laplace = factory( 0.0, 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = laplace(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - laplace = factory(); - for ( i = 0; i < 100; i++ ) { - r = laplace( 2.5, 2.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var laplace1; - var laplace2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - laplace1 = factory( 0.0, 1.0, { - 'seed': seed - }); - laplace2 = factory( 0.0, 1.0, { - 'seed': seed - }); - - t.notEqual( laplace1, laplace2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = laplace1(); - r2 = laplace2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var laplace = factory(); - t.equal( laplace.NAME, 'laplace', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var laplace = factory(); - t.equal( typeof laplace.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var laplace = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( laplace.seed ), true, 'has `seed` property' ); - t.equal( laplace.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if provided a scale parameter which is not a positive number', function test( t ) { var values; var i; @@ -124,7 +56,8 @@ tape( 'the function throws an error if provided a scale parameter which is not a '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -151,7 +84,8 @@ tape( 'the function throws an error if provided a mean which is not a number', f '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -179,7 +113,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -206,7 +141,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -224,6 +160,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var laplace; + var r; + var i; + + // When binding distribution parameters... + laplace = factory( 0.0, 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = laplace(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + laplace = factory(); + for ( i = 0; i < 100; i++ ) { + r = laplace( 2.5, 2.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var laplace1; + var laplace2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + laplace1 = factory( 0.0, 1.0, { + 'seed': seed + }); + laplace2 = factory( 0.0, 1.0, { + 'seed': seed + }); + + t.notEqual( laplace1, laplace2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = laplace1(); + r2 = laplace2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var laplace1; + var laplace2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + laplace1 = factory( 0.0, 1.0, { + 'seed': seed + }); + laplace2 = factory( 0.0, 1.0, { + 'seed': seed + }); + + t.notEqual( laplace1, laplace2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = laplace1(); + r2 = laplace2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var laplace = factory(); + t.equal( laplace.NAME, 'laplace', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var laplace = factory(); + t.equal( typeof laplace.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var laplace = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( laplace.seed ), true, 'has property' ); + t.equal( laplace.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var laplace = factory(); + t.equal( typeof laplace.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var laplace = factory(); + t.equal( isUint32Array( laplace.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var laplace = factory(); + t.equal( typeof laplace.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var laplace = factory(); + t.equal( typeof laplace.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a first argument equal to `NaN`', function test( t ) { var laplace; var r; @@ -342,3 +559,136 @@ tape( 'the function returns a PRNG for generating random numbers from a Laplace t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var laplace; + var state; + var arr; + var i; + + laplace = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + laplace(); + } + // Capture the current state: + state = laplace.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( laplace() ); + } + + // Create another PRNG using the captured state: + laplace = factory( 0.0, 3.14, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( laplace(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var laplace; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + laplace = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + laplace(); + } + // Capture the current state: + state = laplace.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( laplace() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 0.0, 3.14, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 0.0, 3.14, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var laplace; + var state; + var arr; + var i; + + laplace = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + laplace(); + } + // Capture the current state: + state = laplace.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( laplace() ); + } + // Set the state: + laplace.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( laplace(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From ff3dcbb7a29beac16483b951d9dff626169e4bdd Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 12:42:14 -0700 Subject: [PATCH 0937/1062] Update benchmarks --- .../random/base/levy/benchmark/benchmark.js | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/levy/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/levy/benchmark/benchmark.js index dc8688ac067f..6163a355fe5f 100644 --- a/lib/node_modules/@stdlib/random/base/levy/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/levy/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var scale; var rand; var mu; @@ -78,3 +78,29 @@ bench( pkg+':factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var scale; + var rand; + var mu; + var z; + var i; + + mu = 0.0; + scale = 1.5; + rand = levy.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( mu, scale ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 1ded92bc469bf4a63802564b09adb3e387928047 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 12:42:51 -0700 Subject: [PATCH 0938/1062] Add benchmarks --- .../base/levy/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/levy/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/levy/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/levy/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..d8564f8eb968 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/levy/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 2910cf88d93884241d6c9d373e992747f98f2be4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 12:48:43 -0700 Subject: [PATCH 0939/1062] Document properties and options --- .../@stdlib/random/base/levy/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/levy/docs/repl.txt b/lib/node_modules/@stdlib/random/base/levy/docs/repl.txt index 5a0766dc505d..29ebb7b3d6dd 100644 --- a/lib/node_modules/@stdlib/random/base/levy/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/levy/docs/repl.txt @@ -43,8 +43,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -88,6 +101,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From d4f67088088cca79f4ff18a7f6b3a6a5d9e4a40f Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 12:50:10 -0700 Subject: [PATCH 0940/1062] Document properties and options --- .../@stdlib/random/base/levy/README.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/levy/README.md b/lib/node_modules/@stdlib/random/base/levy/README.md index 140578c311d8..63d0524e4f98 100644 --- a/lib/node_modules/@stdlib/random/base/levy/README.md +++ b/lib/node_modules/@stdlib/random/base/levy/README.md @@ -90,6 +90,8 @@ r = rand( -2.0, 2.0 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -112,6 +114,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = levy( 1.0, 2.0 ); +} + +// Create a new PRNG initialized to the current state of `levy`: +rand = levy.factory({ + 'state': levy.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 1.0, 2.0 ) === levy( 1.0, 2.0 ) ); +// returns true +``` + #### levy.NAME The generator name. @@ -153,10 +178,84 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### levy.seedLength + +Length of generator seed. + +```javascript +var len = levy.seedLength; +// returns +``` + +#### levy.state + +Writable property for getting and setting the generator state. + +```javascript +var r = levy( 2.0, 5.0 ); +// returns + +r = levy( 2.0, 5.0 ); +// returns + +// ... + +// Get a copy of the current state: +var state = levy.state; +// returns + +r = levy( 2.0, 5.0 ); +// returns + +r = levy( 2.0, 5.0 ); +// returns + +// Reset the state: +levy.state = state; + +// Replay the last two pseudorandom numbers: +r = levy( 2.0, 5.0 ); +// returns + +r = levy( 2.0, 5.0 ); +// returns + +// ... +``` + +#### levy.stateLength + +Length of generator state. + +```javascript +var len = levy.stateLength; +// returns +``` + +#### levy.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = levy.byteLength; +// returns +``` + +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -201,6 +300,8 @@ for ( i = 0; i < 100; i++ ) { [levy]: https://en.wikipedia.org/wiki/L%C3%A9vy_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From e9ea9cc854d5e63b157b46c08b17dec2786683bb Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 12:51:15 -0700 Subject: [PATCH 0941/1062] Rename files --- .../@stdlib/random/base/levy/lib/factory.js | 2 +- .../@stdlib/random/base/levy/lib/index.js | 2 +- .../@stdlib/random/base/levy/lib/levy.js | 21 +++++++------------ .../base/levy/lib/{_levy.js => main.js} | 21 ++++++++++++------- 4 files changed, 23 insertions(+), 23 deletions(-) rename lib/node_modules/@stdlib/random/base/levy/lib/{_levy.js => main.js} (72%) diff --git a/lib/node_modules/@stdlib/random/base/levy/lib/factory.js b/lib/node_modules/@stdlib/random/base/levy/lib/factory.js index 055f9b9d2525..4c85935d7743 100644 --- a/lib/node_modules/@stdlib/random/base/levy/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/levy/lib/factory.js @@ -25,7 +25,7 @@ var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); var validate = require( './validate.js' ); -var levy0 = require( './_levy.js' ); +var levy0 = require( './levy.js' ); // MAIN // diff --git a/lib/node_modules/@stdlib/random/base/levy/lib/index.js b/lib/node_modules/@stdlib/random/base/levy/lib/index.js index c18ad10eab76..fddee2d2e887 100644 --- a/lib/node_modules/@stdlib/random/base/levy/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/levy/lib/index.js @@ -51,7 +51,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var levy = require( './levy.js' ); +var levy = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/levy/lib/levy.js b/lib/node_modules/@stdlib/random/base/levy/lib/levy.js index 9395b83623b2..4f744001cdf4 100644 --- a/lib/node_modules/@stdlib/random/base/levy/lib/levy.js +++ b/lib/node_modules/@stdlib/random/base/levy/lib/levy.js @@ -20,7 +20,7 @@ // MODULES // -var factory = require( './factory.js' ); +var normalQuantile = require( '@stdlib/stats/base/dists/normal/quantile' ); // MAIN // @@ -28,21 +28,16 @@ var factory = require( './factory.js' ); /** * Returns a pseudorandom number drawn from a Lévy distribution. * -* @name levy -* @type {Function} -* @param {number} mu - mean +* @private +* @param {Function} rand - PRNG for uniformly distributed numbers +* @param {number} mu - location parameter * @param {PositiveNumber} c - scale parameter * @returns {number} pseudorandom number -* -* @example -* var v = levy( 0.0, 2.0 ); -* // returns -* -* @example -* var v = levy( 0.0, -1.0 ); -* // returns NaN */ -var levy = factory(); +function levy( rand, mu, c ) { + var z = normalQuantile( 1.0 - ( rand() / 2.0 ), 0.0, 1.0 ); + return mu + ( c / ( z*z ) ); +} // EXPORTS // diff --git a/lib/node_modules/@stdlib/random/base/levy/lib/_levy.js b/lib/node_modules/@stdlib/random/base/levy/lib/main.js similarity index 72% rename from lib/node_modules/@stdlib/random/base/levy/lib/_levy.js rename to lib/node_modules/@stdlib/random/base/levy/lib/main.js index 4f744001cdf4..9395b83623b2 100644 --- a/lib/node_modules/@stdlib/random/base/levy/lib/_levy.js +++ b/lib/node_modules/@stdlib/random/base/levy/lib/main.js @@ -20,7 +20,7 @@ // MODULES // -var normalQuantile = require( '@stdlib/stats/base/dists/normal/quantile' ); +var factory = require( './factory.js' ); // MAIN // @@ -28,16 +28,21 @@ var normalQuantile = require( '@stdlib/stats/base/dists/normal/quantile' ); /** * Returns a pseudorandom number drawn from a Lévy distribution. * -* @private -* @param {Function} rand - PRNG for uniformly distributed numbers -* @param {number} mu - location parameter +* @name levy +* @type {Function} +* @param {number} mu - mean * @param {PositiveNumber} c - scale parameter * @returns {number} pseudorandom number +* +* @example +* var v = levy( 0.0, 2.0 ); +* // returns +* +* @example +* var v = levy( 0.0, -1.0 ); +* // returns NaN */ -function levy( rand, mu, c ) { - var z = normalQuantile( 1.0 - ( rand() / 2.0 ), 0.0, 1.0 ); - return mu + ( c / ( z*z ) ); -} +var levy = factory(); // EXPORTS // From 0cf0e5edafc81efa7a1fe90f153f673c29398764 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 12:52:13 -0700 Subject: [PATCH 0942/1062] Add support for getting and setting PRNG state --- .../@stdlib/random/base/levy/lib/factory.js | 76 ++++++++++++++++++- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/levy/lib/factory.js b/lib/node_modules/@stdlib/random/base/levy/lib/factory.js index 4c85935d7743..42872f1739d9 100644 --- a/lib/node_modules/@stdlib/random/base/levy/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/levy/lib/factory.js @@ -21,6 +21,8 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -36,10 +38,14 @@ var levy0 = require( './levy.js' ); * @param {number} [mu] - mean * @param {PositiveNumber} [c] - scale parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `mu` must be a number * @throws {TypeError} `c` must be a positive number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -95,11 +101,77 @@ function factory() { prng = levy1; } setReadOnly( prng, 'NAME', 'levy' ); - setReadOnly( prng, 'seed', rand.seed ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + rand.state = s; + } + /** * Returns a pseudorandom number drawn from a Lévy distribution with bound parameters. * From 9ccf6903c584a3e6aa68a5c78ba71f7ba914b5a7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 12:56:27 -0700 Subject: [PATCH 0943/1062] Update tests --- .../@stdlib/random/base/levy/test/test.js | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/levy/test/test.js b/lib/node_modules/@stdlib/random/base/levy/test/test.js index b29a3aa56ae0..d27a6b2fc0ea 100644 --- a/lib/node_modules/@stdlib/random/base/levy/test/test.js +++ b/lib/node_modules/@stdlib/random/base/levy/test/test.js @@ -34,22 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof levy.factory, 'function', 'has `factory` method' ); + t.equal( typeof levy.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( levy.NAME, 'levy', 'has `NAME` property' ); + t.equal( levy.NAME, 'levy', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof levy.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof levy.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( levy.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( levy.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof levy.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( levy.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof levy.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof levy.byteLength, 'number', 'has property' ); t.end(); }); @@ -62,3 +82,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + levy( 2.0, 1.0 ); + } + // Capture the current state: + state = levy.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( levy( 2.0, 1.0 ) ); + } + // Set the state: + levy.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( levy( 2.0, 1.0 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 1840559fab1a054c83d436f254fa522ca3416107 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 12:56:44 -0700 Subject: [PATCH 0944/1062] Update tests --- .../random/base/levy/test/test.factory.js | 500 +++++++++++++++--- 1 file changed, 425 insertions(+), 75 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/levy/test/test.factory.js b/lib/node_modules/@stdlib/random/base/levy/test/test.factory.js index 29807d5d8175..90233476c12c 100644 --- a/lib/node_modules/@stdlib/random/base/levy/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/levy/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var kstest = require( '@stdlib/stats/kstest' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,76 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var levy; - var r; - var i; - - // When binding distribution parameters... - levy = factory( 0.0, 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = levy(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - levy = factory(); - for ( i = 0; i < 100; i++ ) { - r = levy( 2.5, 2.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var levy1; - var levy2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - levy1 = factory( 0.0, 1.0, { - 'seed': seed - }); - levy2 = factory( 0.0, 1.0, { - 'seed': seed - }); - - t.notEqual( levy1, levy2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = levy1(); - r2 = levy2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var levy = factory(); - t.equal( levy.NAME, 'levy', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var levy = factory(); - t.equal( typeof levy.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var levy = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( levy.seed ), true, 'has `seed` property' ); - t.equal( levy.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if provided a scale parameter which is not a positive number', function test( t ) { var values; var i; @@ -124,7 +56,8 @@ tape( 'the function throws an error if provided a scale parameter which is not a '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -151,7 +84,8 @@ tape( 'the function throws an error if provided a mean which is not a number', f '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -179,7 +113,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -206,7 +141,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -224,6 +160,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var levy; + var r; + var i; + + // When binding distribution parameters... + levy = factory( 0.0, 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = levy(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + levy = factory(); + for ( i = 0; i < 100; i++ ) { + r = levy( 2.5, 2.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var levy1; + var levy2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + levy1 = factory( 0.0, 1.0, { + 'seed': seed + }); + levy2 = factory( 0.0, 1.0, { + 'seed': seed + }); + + t.notEqual( levy1, levy2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = levy1(); + r2 = levy2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var levy1; + var levy2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + levy1 = factory( 0.0, 1.0, { + 'seed': seed + }); + levy2 = factory( 0.0, 1.0, { + 'seed': seed + }); + + t.notEqual( levy1, levy2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = levy1(); + r2 = levy2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var levy = factory(); + t.equal( levy.NAME, 'levy', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var levy = factory(); + t.equal( typeof levy.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var levy = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( levy.seed ), true, 'has property' ); + t.equal( levy.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var levy = factory(); + t.equal( typeof levy.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var levy = factory(); + t.equal( isUint32Array( levy.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var levy = factory(); + t.equal( typeof levy.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var levy = factory(); + t.equal( typeof levy.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a first argument equal to `NaN`', function test( t ) { var levy; var r; @@ -342,3 +559,136 @@ tape( 'the function returns a PRNG for generating random numbers from a Lévy di t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var state; + var levy; + var arr; + var i; + + levy = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + levy(); + } + // Capture the current state: + state = levy.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( levy() ); + } + + // Create another PRNG using the captured state: + levy = factory( 0.0, 3.14, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( levy(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var shared; + var state; + var rand1; + var rand2; + var levy; + var arr; + var v1; + var v2; + var i; + var j; + + levy = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + levy(); + } + // Capture the current state: + state = levy.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( levy() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 0.0, 3.14, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 0.0, 3.14, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var state; + var levy; + var arr; + var i; + + levy = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + levy(); + } + // Capture the current state: + state = levy.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( levy() ); + } + // Set the state: + levy.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( levy(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From bd83a175696be2fad45f2244bc41034b6a34e5cf Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 12:57:48 -0700 Subject: [PATCH 0945/1062] Update benchmarks --- .../base/logistic/benchmark/benchmark.js | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/logistic/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/logistic/benchmark/benchmark.js index 9eb04da64cc6..b7e43944bf08 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/logistic/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var rand; var mu; var s; @@ -78,3 +78,29 @@ bench( pkg+':factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var rand; + var mu; + var s; + var z; + var i; + + mu = 0.0; + s = 1.5; + rand = logistic.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( mu, s ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 67212c61a4ffb46e9d6755b779d02f2cca66fbbb Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 12:58:24 -0700 Subject: [PATCH 0946/1062] Add benchmarks --- .../logistic/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/logistic/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/logistic/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/logistic/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..d8564f8eb968 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/logistic/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 27bbeec4e7fc7ebacd5f1f6e62c626a0b36b7a74 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 12:59:07 -0700 Subject: [PATCH 0947/1062] Document properties and options --- .../random/base/logistic/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/logistic/docs/repl.txt b/lib/node_modules/@stdlib/random/base/logistic/docs/repl.txt index 89a960b63cc5..0d232b34be16 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/logistic/docs/repl.txt @@ -43,8 +43,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -88,6 +101,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From 35352961872066d25e9d8abd36f5577990784bff Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 13:00:26 -0700 Subject: [PATCH 0948/1062] Document properties and options --- .../@stdlib/random/base/logistic/README.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/logistic/README.md b/lib/node_modules/@stdlib/random/base/logistic/README.md index 5af734deeee7..5d364e1a7069 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/README.md +++ b/lib/node_modules/@stdlib/random/base/logistic/README.md @@ -90,6 +90,8 @@ r = rand( -2.0, 2.0 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -112,6 +114,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = logistic( 1.0, 2.0 ); +} + +// Create a new PRNG initialized to the current state of `logistic`: +rand = logistic.factory({ + 'state': logistic.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 1.0, 2.0 ) === logistic( 1.0, 2.0 ) ); +// returns true +``` + #### logistic.NAME The generator name. @@ -153,10 +178,84 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### logistic.seedLength + +Length of generator seed. + +```javascript +var len = logistic.seedLength; +// returns +``` + +#### logistic.state + +Writable property for getting and setting the generator state. + +```javascript +var r = logistic( 2.0, 5.0 ); +// returns + +r = logistic( 2.0, 5.0 ); +// returns + +// ... + +// Get a copy of the current state: +var state = logistic.state; +// returns + +r = logistic( 2.0, 5.0 ); +// returns + +r = logistic( 2.0, 5.0 ); +// returns + +// Reset the state: +logistic.state = state; + +// Replay the last two pseudorandom numbers: +r = logistic( 2.0, 5.0 ); +// returns + +r = logistic( 2.0, 5.0 ); +// returns + +// ... +``` + +#### logistic.stateLength + +Length of generator state. + +```javascript +var len = logistic.stateLength; +// returns +``` + +#### logistic.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = logistic.byteLength; +// returns +``` + +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -201,6 +300,8 @@ for ( i = 0; i < 100; i++ ) { [logistic]: https://en.wikipedia.org/wiki/Logistic_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From a1e1d1e05b1c3a62e54c2e5bf3ebe4e0bcc96e5b Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 13:01:16 -0700 Subject: [PATCH 0949/1062] Rename files --- .../random/base/logistic/lib/factory.js | 2 +- .../@stdlib/random/base/logistic/lib/index.js | 2 +- .../random/base/logistic/lib/logistic.js | 19 +++++++------------ .../logistic/lib/{_logistic.js => main.js} | 19 ++++++++++++------- 4 files changed, 21 insertions(+), 21 deletions(-) rename lib/node_modules/@stdlib/random/base/logistic/lib/{_logistic.js => main.js} (79%) diff --git a/lib/node_modules/@stdlib/random/base/logistic/lib/factory.js b/lib/node_modules/@stdlib/random/base/logistic/lib/factory.js index db237e5e1ec1..01f6f7bb9a0a 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/logistic/lib/factory.js @@ -25,7 +25,7 @@ var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); var validate = require( './validate.js' ); -var logistic0 = require( './_logistic.js' ); +var logistic0 = require( './logistic.js' ); // MAIN // diff --git a/lib/node_modules/@stdlib/random/base/logistic/lib/index.js b/lib/node_modules/@stdlib/random/base/logistic/lib/index.js index 10de0cd6154e..977399468e57 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/logistic/lib/index.js @@ -51,7 +51,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var logistic = require( './logistic.js' ); +var logistic = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/logistic/lib/logistic.js b/lib/node_modules/@stdlib/random/base/logistic/lib/logistic.js index f49cb03ea7f6..8188bde60784 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/lib/logistic.js +++ b/lib/node_modules/@stdlib/random/base/logistic/lib/logistic.js @@ -20,7 +20,7 @@ // MODULES // -var factory = require( './factory.js' ); +var ln = require( '@stdlib/math/base/special/ln' ); // MAIN // @@ -28,21 +28,16 @@ var factory = require( './factory.js' ); /** * Returns pseudorandom number drawn from a logistic distribution. * -* @name logistic -* @type {Function} +* @private +* @param {Function} rand - PRNG for uniformly distributed numbers * @param {number} mu - mean * @param {PositiveNumber} s - scale parameter * @returns {number} pseudorandom number -* -* @example -* var v = logistic( 0.0, 2.0 ); -* // returns -* -* @example -* var v = logistic( 0.0, -1.0 ); -* // returns NaN */ -var logistic = factory(); +function logistic( rand, mu, s ) { + var u = rand(); + return mu + ( s*ln( u / (1.0-u) ) ); +} // EXPORTS // diff --git a/lib/node_modules/@stdlib/random/base/logistic/lib/_logistic.js b/lib/node_modules/@stdlib/random/base/logistic/lib/main.js similarity index 79% rename from lib/node_modules/@stdlib/random/base/logistic/lib/_logistic.js rename to lib/node_modules/@stdlib/random/base/logistic/lib/main.js index 8188bde60784..f49cb03ea7f6 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/lib/_logistic.js +++ b/lib/node_modules/@stdlib/random/base/logistic/lib/main.js @@ -20,7 +20,7 @@ // MODULES // -var ln = require( '@stdlib/math/base/special/ln' ); +var factory = require( './factory.js' ); // MAIN // @@ -28,16 +28,21 @@ var ln = require( '@stdlib/math/base/special/ln' ); /** * Returns pseudorandom number drawn from a logistic distribution. * -* @private -* @param {Function} rand - PRNG for uniformly distributed numbers +* @name logistic +* @type {Function} * @param {number} mu - mean * @param {PositiveNumber} s - scale parameter * @returns {number} pseudorandom number +* +* @example +* var v = logistic( 0.0, 2.0 ); +* // returns +* +* @example +* var v = logistic( 0.0, -1.0 ); +* // returns NaN */ -function logistic( rand, mu, s ) { - var u = rand(); - return mu + ( s*ln( u / (1.0-u) ) ); -} +var logistic = factory(); // EXPORTS // From 371ee28c7724722c702ae9b6df9b9eb211c1751d Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 13:02:13 -0700 Subject: [PATCH 0950/1062] Add support for getting and setting PRNG state --- .../random/base/logistic/lib/factory.js | 76 ++++++++++++++++++- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/logistic/lib/factory.js b/lib/node_modules/@stdlib/random/base/logistic/lib/factory.js index 01f6f7bb9a0a..0fa9e8f9fcac 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/logistic/lib/factory.js @@ -21,6 +21,8 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -36,10 +38,14 @@ var logistic0 = require( './logistic.js' ); * @param {number} [mu] - mean parameter * @param {PositiveNumber} [s] - scale parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `mu` must be a number * @throws {TypeError} `s` must be a positive number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -95,11 +101,77 @@ function factory() { prng = logistic1; } setReadOnly( prng, 'NAME', 'logistic' ); - setReadOnly( prng, 'seed', rand.seed ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + rand.state = s; + } + /** * Returns pseudorandom number drawn from a logistic distribution with bound parameters. * From ca7f2b3f11c4fe21ecc226bec715f04135ea494b Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 13:03:15 -0700 Subject: [PATCH 0951/1062] Update tests --- .../@stdlib/random/base/logistic/test/test.js | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/logistic/test/test.js b/lib/node_modules/@stdlib/random/base/logistic/test/test.js index f0220e84bf0f..15273fa77360 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/test/test.js +++ b/lib/node_modules/@stdlib/random/base/logistic/test/test.js @@ -34,22 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof logistic.factory, 'function', 'has `factory` method' ); + t.equal( typeof logistic.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( logistic.NAME, 'logistic', 'has `NAME` property' ); + t.equal( logistic.NAME, 'logistic', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof logistic.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof logistic.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( logistic.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( logistic.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof logistic.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( logistic.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof logistic.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof logistic.byteLength, 'number', 'has property' ); t.end(); }); @@ -62,3 +82,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + logistic( 2.0, 1.0 ); + } + // Capture the current state: + state = logistic.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( logistic( 2.0, 1.0 ) ); + } + // Set the state: + logistic.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( logistic( 2.0, 1.0 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 3a2cbeb098084396d73214094d069e44b140859a Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 13:06:11 -0700 Subject: [PATCH 0952/1062] Update tests --- .../random/base/logistic/test/test.factory.js | 500 +++++++++++++++--- 1 file changed, 425 insertions(+), 75 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/logistic/test/test.factory.js b/lib/node_modules/@stdlib/random/base/logistic/test/test.factory.js index 2e766ec316bf..2a4193dc9921 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/logistic/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var kstest = require( '@stdlib/stats/kstest' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,76 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var logistic; - var r; - var i; - - // When binding distribution parameters... - logistic = factory( 0.0, 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = logistic(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - logistic = factory(); - for ( i = 0; i < 100; i++ ) { - r = logistic( 2.5, 2.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var logistic1; - var logistic2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - logistic1 = factory( 0.0, 1.0, { - 'seed': seed - }); - logistic2 = factory( 0.0, 1.0, { - 'seed': seed - }); - - t.notEqual( logistic1, logistic2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = logistic1(); - r2 = logistic2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var logistic = factory(); - t.equal( logistic.NAME, 'logistic', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var logistic = factory(); - t.equal( typeof logistic.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var logistic = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( logistic.seed ), true, 'has `seed` property' ); - t.equal( logistic.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if a scale parameter which is not a positive number', function test( t ) { var values; var i; @@ -124,7 +56,8 @@ tape( 'the function throws an error if a scale parameter which is not a positive '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -151,7 +84,8 @@ tape( 'the function throws an error if provided a mean which is not a number', f '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -179,7 +113,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -206,7 +141,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -224,6 +160,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var logistic; + var r; + var i; + + // When binding distribution parameters... + logistic = factory( 0.0, 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = logistic(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + logistic = factory(); + for ( i = 0; i < 100; i++ ) { + r = logistic( 2.5, 2.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var logistic1; + var logistic2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + logistic1 = factory( 0.0, 1.0, { + 'seed': seed + }); + logistic2 = factory( 0.0, 1.0, { + 'seed': seed + }); + + t.notEqual( logistic1, logistic2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = logistic1(); + r2 = logistic2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var logistic1; + var logistic2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + logistic1 = factory( 0.0, 1.0, { + 'seed': seed + }); + logistic2 = factory( 0.0, 1.0, { + 'seed': seed + }); + + t.notEqual( logistic1, logistic2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = logistic1(); + r2 = logistic2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var logistic = factory(); + t.equal( logistic.NAME, 'logistic', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var logistic = factory(); + t.equal( typeof logistic.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var logistic = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( logistic.seed ), true, 'has property' ); + t.equal( logistic.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var logistic = factory(); + t.equal( typeof logistic.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var logistic = factory(); + t.equal( isUint32Array( logistic.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var logistic = factory(); + t.equal( typeof logistic.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var logistic = factory(); + t.equal( typeof logistic.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a first argument equal to `NaN`', function test( t ) { var logistic; var r; @@ -342,3 +559,136 @@ tape( 'the function returns a PRNG for generating random numbers from a logistic t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var logistic; + var state; + var arr; + var i; + + logistic = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + logistic(); + } + // Capture the current state: + state = logistic.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( logistic() ); + } + + // Create another PRNG using the captured state: + logistic = factory( 0.0, 3.14, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( logistic(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var logistic; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + logistic = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + logistic(); + } + // Capture the current state: + state = logistic.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( logistic() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 0.0, 3.14, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 0.0, 3.14, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var logistic; + var state; + var arr; + var i; + + logistic = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + logistic(); + } + // Capture the current state: + state = logistic.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( logistic() ); + } + // Set the state: + logistic.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( logistic(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 22f0f1c54e1972ead724a9620f998ac67002b4c9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 13:57:18 -0700 Subject: [PATCH 0953/1062] Update benchmarks --- .../base/lognormal/benchmark/benchmark.js | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/lognormal/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/lognormal/benchmark/benchmark.js index b9aa654bed69..6ab32ff795fa 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/lognormal/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var sigma; var rand; var mu; @@ -78,3 +78,29 @@ bench( pkg+':factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var sigma; + var rand; + var mu; + var z; + var i; + + mu = 0.0; + sigma = 1.5; + rand = lognormal.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( mu, sigma ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 7c5eb95dcaf14a66d6b48b801bbe056bbfdf4627 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 13:57:54 -0700 Subject: [PATCH 0954/1062] Add benchmarks --- .../lognormal/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/lognormal/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/lognormal/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/lognormal/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..d8564f8eb968 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/lognormal/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 60bceda3483b6392a685146fac195fb47fd4ba47 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 13:58:46 -0700 Subject: [PATCH 0955/1062] Document properties and options --- .../random/base/lognormal/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/lognormal/docs/repl.txt b/lib/node_modules/@stdlib/random/base/lognormal/docs/repl.txt index fe8254703903..a2925575f55a 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/lognormal/docs/repl.txt @@ -43,8 +43,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -88,6 +101,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From 741b7b5a23149d415b7233b00a5df1621e5ae8b9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 14:00:14 -0700 Subject: [PATCH 0956/1062] Document properties and options --- .../@stdlib/random/base/lognormal/README.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/lognormal/README.md b/lib/node_modules/@stdlib/random/base/lognormal/README.md index 3575bc4ef24e..dc62ec4b4d25 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/README.md +++ b/lib/node_modules/@stdlib/random/base/lognormal/README.md @@ -90,6 +90,8 @@ r = rand( -2.0, 2.0 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -112,6 +114,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = lognormal( 1.0, 2.0 ); +} + +// Create a new PRNG initialized to the current state of `lognormal`: +rand = lognormal.factory({ + 'state': lognormal.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 1.0, 2.0 ) === lognormal( 1.0, 2.0 ) ); +// returns true +``` + #### lognormal.NAME The generator name. @@ -153,10 +178,84 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### lognormal.seedLength + +Length of generator seed. + +```javascript +var len = lognormal.seedLength; +// returns +``` + +#### lognormal.state + +Writable property for getting and setting the generator state. + +```javascript +var r = lognormal( 2.0, 5.0 ); +// returns + +r = lognormal( 2.0, 5.0 ); +// returns + +// ... + +// Get a copy of the current state: +var state = lognormal.state; +// returns + +r = lognormal( 2.0, 5.0 ); +// returns + +r = lognormal( 2.0, 5.0 ); +// returns + +// Reset the state: +lognormal.state = state; + +// Replay the last two pseudorandom numbers: +r = lognormal( 2.0, 5.0 ); +// returns + +r = lognormal( 2.0, 5.0 ); +// returns + +// ... +``` + +#### lognormal.stateLength + +Length of generator state. + +```javascript +var len = lognormal.stateLength; +// returns +``` + +#### lognormal.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = lognormal.byteLength; +// returns +``` + +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -201,6 +300,8 @@ for ( i = 0; i < 100; i++ ) { [lognormal]: https://en.wikipedia.org/wiki/Log-normal_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From 78e222ab0a74f66e5c8504318ee440b3c3484c87 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 14:01:13 -0700 Subject: [PATCH 0957/1062] Rename files --- .../random/base/lognormal/lib/factory.js | 2 +- .../random/base/lognormal/lib/index.js | 2 +- .../random/base/lognormal/lib/lognormal.js | 20 +++++++------------ .../lognormal/lib/{_lognormal.js => main.js} | 20 ++++++++++++------- 4 files changed, 22 insertions(+), 22 deletions(-) rename lib/node_modules/@stdlib/random/base/lognormal/lib/{_lognormal.js => main.js} (72%) diff --git a/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js b/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js index 437c2f5206fd..bfe51b9b900c 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js @@ -25,7 +25,7 @@ var isObject = require( '@stdlib/assert/is-plain-object' ); var randn = require( '@stdlib/random/base/improved-ziggurat' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); var validate = require( './validate.js' ); -var lognormal0 = require( './_lognormal.js' ); +var lognormal0 = require( './lognormal.js' ); // MAIN // diff --git a/lib/node_modules/@stdlib/random/base/lognormal/lib/index.js b/lib/node_modules/@stdlib/random/base/lognormal/lib/index.js index f7181b02e918..eaeef8ee87eb 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/lognormal/lib/index.js @@ -51,7 +51,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var lognormal = require( './lognormal.js' ); +var lognormal = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/lognormal/lib/lognormal.js b/lib/node_modules/@stdlib/random/base/lognormal/lib/lognormal.js index b5895a76a5a1..044fbbfc930d 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/lib/lognormal.js +++ b/lib/node_modules/@stdlib/random/base/lognormal/lib/lognormal.js @@ -20,29 +20,23 @@ // MODULES // -var factory = require( './factory.js' ); +var exp = require( '@stdlib/math/base/special/exp' ); // MAIN // /** -* Returns a log-normally distributed pseudorandom number with parameters `mu` and `sigma`. +* Returns a log-normally distributed pseudorandom number. * -* @name lognormal -* @type {Function} +* @private +* @param {Function} randn - PRNG for standard normally distributed numbers * @param {number} mu - location parameter * @param {PositiveNumber} sigma - scale parameter * @returns {PositiveNumber} pseudorandom number -* -* @example -* var v = lognormal( -2.0, 4.0 ); -* // returns -* -* @example -* var v = lognormal( 0.0, -1.0 ); -* // returns NaN */ -var lognormal = factory(); +function lognormal( randn, mu, sigma ) { + return exp( mu + (sigma*randn()) ); +} // EXPORTS // diff --git a/lib/node_modules/@stdlib/random/base/lognormal/lib/_lognormal.js b/lib/node_modules/@stdlib/random/base/lognormal/lib/main.js similarity index 72% rename from lib/node_modules/@stdlib/random/base/lognormal/lib/_lognormal.js rename to lib/node_modules/@stdlib/random/base/lognormal/lib/main.js index 044fbbfc930d..b5895a76a5a1 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/lib/_lognormal.js +++ b/lib/node_modules/@stdlib/random/base/lognormal/lib/main.js @@ -20,23 +20,29 @@ // MODULES // -var exp = require( '@stdlib/math/base/special/exp' ); +var factory = require( './factory.js' ); // MAIN // /** -* Returns a log-normally distributed pseudorandom number. +* Returns a log-normally distributed pseudorandom number with parameters `mu` and `sigma`. * -* @private -* @param {Function} randn - PRNG for standard normally distributed numbers +* @name lognormal +* @type {Function} * @param {number} mu - location parameter * @param {PositiveNumber} sigma - scale parameter * @returns {PositiveNumber} pseudorandom number +* +* @example +* var v = lognormal( -2.0, 4.0 ); +* // returns +* +* @example +* var v = lognormal( 0.0, -1.0 ); +* // returns NaN */ -function lognormal( randn, mu, sigma ) { - return exp( mu + (sigma*randn()) ); -} +var lognormal = factory(); // EXPORTS // From 1921f9e1e419fce91866f95517b4fcd4b1d92862 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 14:02:20 -0700 Subject: [PATCH 0958/1062] Add support for getting and setting PRNG state --- .../random/base/lognormal/lib/factory.js | 76 ++++++++++++++++++- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js b/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js index bfe51b9b900c..4ab2c53fd7ce 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js @@ -21,6 +21,8 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var randn = require( '@stdlib/random/base/improved-ziggurat' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -36,10 +38,14 @@ var lognormal0 = require( './lognormal.js' ); * @param {number} [mu] - location parameter * @param {PositiveNumber} [sigma] - scale parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `mu` must be a number * @throws {TypeError} `sigma` must be a positive number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -93,11 +99,77 @@ function factory() { prng = lognormal1; } setReadOnly( prng, 'NAME', 'lognormal' ); - setReadOnly( prng, 'seed', rand.seed ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + rand.state = s; + } + /** * Returns a log-normally distributed pseudorandom number with bound parameters `mu` and `sigma`. * From 76090923f4940db72a99dbc6dca4d3bce05ea48f Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 14:03:24 -0700 Subject: [PATCH 0959/1062] Update tests --- .../random/base/lognormal/test/test.js | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/lognormal/test/test.js b/lib/node_modules/@stdlib/random/base/lognormal/test/test.js index 16830eceafbd..a8c6b4c28024 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/test/test.js +++ b/lib/node_modules/@stdlib/random/base/lognormal/test/test.js @@ -34,22 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof lognormal.factory, 'function', 'has `factory` method' ); + t.equal( typeof lognormal.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( lognormal.NAME, 'lognormal', 'has `NAME` property' ); + t.equal( lognormal.NAME, 'lognormal', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof lognormal.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof lognormal.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( lognormal.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( lognormal.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof lognormal.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( lognormal.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof lognormal.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof lognormal.byteLength, 'number', 'has property' ); t.end(); }); @@ -63,3 +83,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + lognormal( 2.0, 1.0 ); + } + // Capture the current state: + state = lognormal.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( lognormal( 2.0, 1.0 ) ); + } + // Set the state: + lognormal.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( lognormal( 2.0, 1.0 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 7ef2f8c59f4e444201c5251afc299d259ec1b9e1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 14:06:09 -0700 Subject: [PATCH 0960/1062] Update tests --- .../base/lognormal/test/test.factory.js | 500 +++++++++++++++--- 1 file changed, 425 insertions(+), 75 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/lognormal/test/test.factory.js b/lib/node_modules/@stdlib/random/base/lognormal/test/test.factory.js index 9f5aca2456da..0764e57644bd 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/lognormal/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var kstest = require( '@stdlib/stats/kstest' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,76 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var lognormal; - var r; - var i; - - // When binding distribution parameters... - lognormal = factory( 0.0, 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = lognormal(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - lognormal = factory(); - for ( i = 0; i < 100; i++ ) { - r = lognormal( 2.5, 2.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var lognormal1; - var lognormal2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - lognormal1 = factory( 0.0, 1.0, { - 'seed': seed - }); - lognormal2 = factory( 0.0, 1.0, { - 'seed': seed - }); - - t.notEqual( lognormal1, lognormal2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = lognormal1(); - r2 = lognormal2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var lognormal = factory(); - t.equal( lognormal.NAME, 'lognormal', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var lognormal = factory(); - t.equal( typeof lognormal.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var lognormal = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( lognormal.seed ), true, 'has `seed` property' ); - t.equal( lognormal.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if provided a scale parameter which is not a positive number', function test( t ) { var values; var i; @@ -124,7 +56,8 @@ tape( 'the function throws an error if provided a scale parameter which is not a '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -151,7 +84,8 @@ tape( 'the function throws an error if provided a location parameter which is no '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -179,7 +113,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -206,7 +141,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -224,6 +160,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var lognormal; + var r; + var i; + + // When binding distribution parameters... + lognormal = factory( 0.0, 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = lognormal(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + lognormal = factory(); + for ( i = 0; i < 100; i++ ) { + r = lognormal( 2.5, 2.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var lognormal1; + var lognormal2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + lognormal1 = factory( 0.0, 1.0, { + 'seed': seed + }); + lognormal2 = factory( 0.0, 1.0, { + 'seed': seed + }); + + t.notEqual( lognormal1, lognormal2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = lognormal1(); + r2 = lognormal2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var lognormal1; + var lognormal2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + lognormal1 = factory( 0.0, 1.0, { + 'seed': seed + }); + lognormal2 = factory( 0.0, 1.0, { + 'seed': seed + }); + + t.notEqual( lognormal1, lognormal2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = lognormal1(); + r2 = lognormal2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var lognormal = factory(); + t.equal( lognormal.NAME, 'lognormal', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var lognormal = factory(); + t.equal( typeof lognormal.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var lognormal = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( lognormal.seed ), true, 'has property' ); + t.equal( lognormal.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var lognormal = factory(); + t.equal( typeof lognormal.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var lognormal = factory(); + t.equal( isUint32Array( lognormal.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var lognormal = factory(); + t.equal( typeof lognormal.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var lognormal = factory(); + t.equal( typeof lognormal.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a first argument equal to `NaN`', function test( t ) { var lognormal; var r; @@ -342,3 +559,136 @@ tape( 'the function returns a PRNG for generating pseudorandom numbers from a lo t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var lognormal; + var state; + var arr; + var i; + + lognormal = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + lognormal(); + } + // Capture the current state: + state = lognormal.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( lognormal() ); + } + + // Create another PRNG using the captured state: + lognormal = factory( 2.0, 4.0, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( lognormal(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var lognormal; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + lognormal = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + lognormal(); + } + // Capture the current state: + state = lognormal.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( lognormal() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 2.0, 4.0, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var lognormal; + var state; + var arr; + var i; + + lognormal = factory( 2.0, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + lognormal(); + } + // Capture the current state: + state = lognormal.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( lognormal() ); + } + // Set the state: + lognormal.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( lognormal(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 4a3aa1b98287b9813d514473210245ac57224c23 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 15:20:36 -0700 Subject: [PATCH 0961/1062] Refactor to ensure array seeds of length 1 return equivalent output as integer seed --- .../random/base/mt19937/lib/factory.js | 12 ++- .../random/base/mt19937/test/test.factory.js | 100 +++++++++++++++++- 2 files changed, 104 insertions(+), 8 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 211aec9fd34c..8b800bae4151 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -411,7 +411,15 @@ function factory( options ) { throw new RangeError( 'invalid option. `seed` option must be a positive integer less than or equal to the maximum unsigned 32-bit integer. Option: `' + seed + '`.' ); } seed >>>= 0; // asm type annotation - } else if ( isCollection( seed ) && seed.length > 0 ) { + } else if ( isCollection( seed ) === false || seed.length < 1 ) { + throw new TypeError( 'invalid option. `seed` option must be either a positive integer less than or equal to the maximum unsigned 32-bit integer or an array-like object containing integer values less than or equal to the maximum unsigned 32-bit integer. Option: `' + seed + '`.' ); + } else if ( seed.length === 1 ) { + seed = seed[ 0 ]; + if ( !isPositiveInteger( seed ) || seed > MAX_SEED ) { + throw new RangeError( 'invalid option. `seed` option must be either a positive integer less than or equal to the maximum unsigned 32-bit integer or an array-like object containing integer values less than or equal to the maximum unsigned 32-bit integer. Option: `' + seed + '`.' ); + } + seed >>>= 0; // asm type annotation + } else { slen = seed.length; STATE = new Uint32Array( STATE_FIXED_LENGTH+slen ); @@ -435,8 +443,6 @@ function factory( options ) { // Initialize the internal PRNG state: state = createState( state, N, SEED_ARRAY_INIT_STATE ); state = initState( state, N, seed, slen ); - } else { - throw new TypeError( 'invalid option. `seed` option must be either a positive integer less than or equal to the maximum unsigned 32-bit integer or an array-like object containing integer values less than or equal to the maximum unsigned 32-bit integer. Option: `' + seed + '`.' ); } } else { seed = randuint32() >>> 0; // asm type annotation diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js index 1e33266df154..a0ce344bae03 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js @@ -479,7 +479,34 @@ tape( 'the function returns a seeded pseudorandom number generator (integer seed t.end(); }); -tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { +tape( 'the function returns a seeded pseudorandom number generator (array seed; length=1)', function test( t ) { + var mt19937a; + var mt19937b; + var seed; + var v1; + var v2; + var i; + + seed = [ minstd() ]; + + mt19937a = factory({ + 'seed': seed + }); + mt19937b = factory({ + 'seed': seed + }); + + t.notEqual( mt19937a, mt19937b, 'separate generators' ); + + for ( i = 0; i < 1e3; i++ ) { + v1 = mt19937a(); + v2 = mt19937b(); + t.equal( v1, v2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed; length>1)', function test( t ) { var mt19937a; var mt19937b; var seed; @@ -539,7 +566,22 @@ tape( 'attached to the returned function is the generator seed (integer seed)', t.end(); }); -tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { +tape( 'attached to the returned function is the generator seed (array seed; length=1)', function test( t ) { + var mt19937; + var actual; + + mt19937 = factory({ + 'seed': [ 12345 ] + }); + actual = mt19937.seed; + + t.equal( isUint32Array( actual ), true, 'has property' ); + t.equal( actual.length, 1, 'has expected length' ); + t.equal( actual[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed; length>1)', function test( t ) { var mt19937; var actual; var seed; @@ -884,7 +926,22 @@ tape( 'attached to the `normalized` method is the generator seed (integer seed)' t.end(); }); -tape( 'attached to the `normalized` method is the generator seed (array seed)', function test( t ) { +tape( 'attached to the `normalized` method is the generator seed (array seed; length=1)', function test( t ) { + var mt19937; + var actual; + + mt19937 = factory({ + 'seed': [ 12345 ] + }); + actual = mt19937.normalized.seed; + + t.equal( isUint32Array( actual ), true, 'has property' ); + t.equal( actual.length, 1, 'has expected length' ); + t.equal( actual[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the `normalized` method is the generator seed (array seed; length>1)', function test( t ) { var mt19937; var actual; var seed; @@ -1266,7 +1323,22 @@ tape( 'the function returns pseudorandom numbers from a Mersenne Twister PRNG (i t.end(); }); -tape( 'the function returns pseudorandom numbers from a Mersenne Twister PRNG (array seed)', function test( t ) { +tape( 'the function returns pseudorandom numbers from a Mersenne Twister PRNG (array seed; length=1)', function test( t ) { + var expected; + var rand; + var i; + + expected = UINT32_INTEGER_SEED.expected; + rand = factory({ + 'seed': [ 1234 ] + }); + for ( i = 0; i < expected.length; i++ ) { + t.equal( rand(), expected[ i ], 'returns expected value for iteration '+i ); + } + t.end(); +}); + +tape( 'the function returns pseudorandom numbers from a Mersenne Twister PRNG (array seed; length>1)', function test( t ) { var expected; var rand; var i; @@ -1299,7 +1371,25 @@ tape( 'the `normalized` method returns pseudorandom double-precision floating-po t.end(); }); -tape( 'the `normalized` method returns pseudorandom double-precision floating-point numbers from a Mersenne Twister PRNG (array seed)', function test( t ) { +tape( 'the `normalized` method returns pseudorandom double-precision floating-point numbers from a Mersenne Twister PRNG (array seed; length=1)', function test( t ) { + var expected; + var opts; + var rand; + var i; + + expected = FLOAT64_INTEGER_SEED.expected; + + opts = { + 'seed': [ 1234 ] + }; + rand = factory( opts ).normalized; + for ( i = 0; i < expected.length; i++ ) { + t.equal( rand(), expected[ i ], 'returns expected value for iteration '+i ); + } + t.end(); +}); + +tape( 'the `normalized` method returns pseudorandom double-precision floating-point numbers from a Mersenne Twister PRNG (array seed; length>1)', function test( t ) { var expected; var opts; var rand; From d56f5011ff8473e4e61f0f2a7c2d2413aa34233f Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 15:22:44 -0700 Subject: [PATCH 0962/1062] Disable lint rule --- lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 8b800bae4151..17b4780c827c 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -1,3 +1,5 @@ +/* eslint-disable max-lines, max-len */ + /** * @license Apache-2.0 * @@ -53,8 +55,6 @@ * ``` */ -/* eslint-disable max-len */ - 'use strict'; // MODULES // From 2d21ac1c14f00bbb94abb523a158f4f8d57b7c39 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 15:26:23 -0700 Subject: [PATCH 0963/1062] Add note --- lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 17b4780c827c..752d21c87c51 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -333,6 +333,10 @@ function twist( state ) { /** * Returns a 32-bit Mersenne Twister pseudorandom number generator. * +* ## Notes +* +* - In contrast to the original C implementation, array seeds of length `1` are considered integer seeds. This ensures that the seed `[ 1234 ]` generates the same output as the seed `1234`. In the original C implementation, the two seeds would yield different output, which is **not** obvious from a user perspective. +* * @param {Options} [options] - options * @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed * @param {Uint32Array} [options.state] - pseudorandom number generator state From f2449187b591bcf0a2a6d166199617afe3091102 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 15:28:20 -0700 Subject: [PATCH 0964/1062] Separate assertions to avoid conflating errors --- lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js index 752d21c87c51..0ae9feda64de 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/lib/factory.js @@ -419,7 +419,10 @@ function factory( options ) { throw new TypeError( 'invalid option. `seed` option must be either a positive integer less than or equal to the maximum unsigned 32-bit integer or an array-like object containing integer values less than or equal to the maximum unsigned 32-bit integer. Option: `' + seed + '`.' ); } else if ( seed.length === 1 ) { seed = seed[ 0 ]; - if ( !isPositiveInteger( seed ) || seed > MAX_SEED ) { + if ( !isPositiveInteger( seed ) ) { + throw new TypeError( 'invalid option. `seed` option must be either a positive integer less than or equal to the maximum unsigned 32-bit integer or an array-like object containing integer values less than or equal to the maximum unsigned 32-bit integer. Option: `' + seed + '`.' ); + } + if ( seed > MAX_SEED ) { throw new RangeError( 'invalid option. `seed` option must be either a positive integer less than or equal to the maximum unsigned 32-bit integer or an array-like object containing integer values less than or equal to the maximum unsigned 32-bit integer. Option: `' + seed + '`.' ); } seed >>>= 0; // asm type annotation From e155e430e13aa128d183e53ee2fe4fdb1faabc29 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 15:29:20 -0700 Subject: [PATCH 0965/1062] Add tests --- .../random/base/mt19937/test/test.factory.js | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js index a0ce344bae03..504add990fb8 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/mt19937/test/test.factory.js @@ -115,7 +115,7 @@ tape( 'if provided a `copy` option which is not a boolean, the factory function } }); -tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the factory function throws an error', function test( t ) { +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object containing positive integers, the factory function throws an error', function test( t ) { var values; var i; @@ -131,6 +131,7 @@ tape( 'if provided a `seed` which is not a positive integer or a non-empty array void 0, {}, [], + [ -1 ], function noop() {} ]; @@ -148,7 +149,7 @@ tape( 'if provided a `seed` which is not a positive integer or a non-empty array } }); -tape( 'the function throws a range error if provided a `seed` greater than the maximum unsigned 32-bit integer', function test( t ) { +tape( 'the function throws a range error if provided a `seed` greater than the maximum unsigned 32-bit integer (integer seed)', function test( t ) { var values; var i; @@ -172,6 +173,30 @@ tape( 'the function throws a range error if provided a `seed` greater than the m } }); +tape( 'the function throws a range error if provided a `seed` greater than the maximum unsigned 32-bit integer (array seed; length=1)', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': [ value ] + }); + }; + } +}); + tape( 'if provided a `state` option which is not a Uint32Array, the factory function throws an error', function test( t ) { var values; var i; From 9124e9daac5d7356e5e15a0c2929cdfd65e1fe34 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 15:35:09 -0700 Subject: [PATCH 0966/1062] Add note --- lib/node_modules/@stdlib/random/base/mt19937/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/node_modules/@stdlib/random/base/mt19937/README.md b/lib/node_modules/@stdlib/random/base/mt19937/README.md index 93d6b5449330..39ec3b279dd0 100644 --- a/lib/node_modules/@stdlib/random/base/mt19937/README.md +++ b/lib/node_modules/@stdlib/random/base/mt19937/README.md @@ -232,6 +232,7 @@ var sz = mt19937.byteLength; - [Mersenne Twister][mersenne-twister] is **not** a cryptographically secure PRNG, as the PRNG is based on a linear recursion. Any pseudorandom number sequence generated by a linear recursion is **insecure**, due to the fact that one can predict future generated outputs by observing a sufficiently long subsequence of generated values. - Compared to other PRNGs, [Mersenne Twister][mersenne-twister] has a large state size (`~2.5kB`). Because of the large state size, beware of increased memory consumption when using the `factory()` method to create many [Mersenne Twister][mersenne-twister] PRNGs. When appropriate (e.g., when external state mutation is not a concern), consider sharing PRNG state. +- A seed array of length `1` is considered **equivalent** to an integer seed equal to the lone seed array element and vice versa. - If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. - If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). - The PRNG has a period of `2^19937 - 1`. From b633cb65ec4584062839b2fa867ccf6a1aaf0371 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 15:35:59 -0700 Subject: [PATCH 0967/1062] Fix failing tests --- .../@stdlib/random/iterators/arcsine/test/test.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/random/iterators/arcsine/test/test.js b/lib/node_modules/@stdlib/random/iterators/arcsine/test/test.js index d65fef8b4653..459cf4bd0043 100644 --- a/lib/node_modules/@stdlib/random/iterators/arcsine/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/arcsine/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var arcsine = require( '@stdlib/random/base/arcsine' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -221,8 +222,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -341,7 +342,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); From b93402ae88ae9f0aec7e9a25010a30283e499594 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 17:05:49 -0700 Subject: [PATCH 0968/1062] Fix broken tests --- .../random/iterators/bernoulli/test/test.js | 7 ++++--- .../@stdlib/random/iterators/beta/test/test.js | 7 ++++--- .../random/iterators/betaprime/test/test.js | 7 ++++--- .../random/iterators/binomial/test/test.js | 7 ++++--- .../random/iterators/box-muller/test/test.js | 17 +++++++++-------- 5 files changed, 25 insertions(+), 20 deletions(-) diff --git a/lib/node_modules/@stdlib/random/iterators/bernoulli/test/test.js b/lib/node_modules/@stdlib/random/iterators/bernoulli/test/test.js index be79f31dc6b1..e0b870be989d 100644 --- a/lib/node_modules/@stdlib/random/iterators/bernoulli/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/bernoulli/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var bernoulli = require( '@stdlib/random/base/bernoulli' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -173,8 +174,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 0.3, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -293,7 +294,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/beta/test/test.js b/lib/node_modules/@stdlib/random/iterators/beta/test/test.js index 432c23726a70..56399828c6db 100644 --- a/lib/node_modules/@stdlib/random/iterators/beta/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/beta/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var beta = require( '@stdlib/random/base/beta' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -203,8 +204,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -323,7 +324,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/betaprime/test/test.js b/lib/node_modules/@stdlib/random/iterators/betaprime/test/test.js index fd76c730a926..9944870a6235 100644 --- a/lib/node_modules/@stdlib/random/iterators/betaprime/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/betaprime/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var betaprime = require( '@stdlib/random/base/betaprime' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -203,8 +204,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -323,7 +324,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/binomial/test/test.js b/lib/node_modules/@stdlib/random/iterators/binomial/test/test.js index 7e57dfae267d..3dcefc2f61d1 100644 --- a/lib/node_modules/@stdlib/random/iterators/binomial/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/binomial/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var binomial = require( '@stdlib/random/base/binomial' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -205,8 +206,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 10, 0.3, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -325,7 +326,7 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it t.equal( typeof it2, 'object', 'returns an object' ); t.equal( typeof it2.next, 'function', 'has `next` method' ); t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/box-muller/test/test.js b/lib/node_modules/@stdlib/random/iterators/box-muller/test/test.js index f41ff4f75964..4b91c84fa7ce 100644 --- a/lib/node_modules/@stdlib/random/iterators/box-muller/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/box-muller/test/test.js @@ -26,6 +26,7 @@ var now = require( '@stdlib/time/now' ); var randn = require( '@stdlib/random/base/box-muller' ).factory; var minstd = require( '@stdlib/random/base/minstd' ); var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -173,8 +174,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -182,21 +183,21 @@ tape( 'attached to the returned iterator is the underlying PRNG', function test( var it = iterator({ 'prng': minstd.normalized }); - t.equal( typeof it.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof it.PRNG, 'function', 'has property' ); t.equal( it.PRNG, minstd.normalized, 'equal to provided PRNG' ); t.end(); }); tape( 'attached to the returned iterator is the minimum possible generated number', function test( t ) { var it = iterator(); - t.equal( typeof it.MIN, 'number', 'has `MIN` property' ); + t.equal( typeof it.MIN, 'number', 'has property' ); t.equal( it.MIN < 0.0, true, 'less than 0' ); t.end(); }); tape( 'attached to the returned iterator is the maximum possible generated number', function test( t ) { var it = iterator(); - t.equal( typeof it.MAX, 'number', 'has `MAX` property' ); + t.equal( typeof it.MAX, 'number', 'has property' ); t.equal( it.MAX > 0.0, true, 'greater than 0' ); t.end(); }); @@ -314,9 +315,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); From e48252240cc217f7b3b9b3d5530822034e8abf92 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 17:08:12 -0700 Subject: [PATCH 0969/1062] Update test messages --- .../@stdlib/random/iterators/arcsine/test/test.js | 4 ++-- .../@stdlib/random/iterators/bernoulli/test/test.js | 4 ++-- lib/node_modules/@stdlib/random/iterators/beta/test/test.js | 4 ++-- .../@stdlib/random/iterators/betaprime/test/test.js | 4 ++-- .../@stdlib/random/iterators/binomial/test/test.js | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/node_modules/@stdlib/random/iterators/arcsine/test/test.js b/lib/node_modules/@stdlib/random/iterators/arcsine/test/test.js index 459cf4bd0043..148222ccde84 100644 --- a/lib/node_modules/@stdlib/random/iterators/arcsine/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/arcsine/test/test.js @@ -340,8 +340,8 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/iterators/bernoulli/test/test.js b/lib/node_modules/@stdlib/random/iterators/bernoulli/test/test.js index e0b870be989d..41fb597baa25 100644 --- a/lib/node_modules/@stdlib/random/iterators/bernoulli/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/bernoulli/test/test.js @@ -292,8 +292,8 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/iterators/beta/test/test.js b/lib/node_modules/@stdlib/random/iterators/beta/test/test.js index 56399828c6db..e0b522e186b6 100644 --- a/lib/node_modules/@stdlib/random/iterators/beta/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/beta/test/test.js @@ -322,8 +322,8 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/iterators/betaprime/test/test.js b/lib/node_modules/@stdlib/random/iterators/betaprime/test/test.js index 9944870a6235..a07b1443101e 100644 --- a/lib/node_modules/@stdlib/random/iterators/betaprime/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/betaprime/test/test.js @@ -322,8 +322,8 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { diff --git a/lib/node_modules/@stdlib/random/iterators/binomial/test/test.js b/lib/node_modules/@stdlib/random/iterators/binomial/test/test.js index 3dcefc2f61d1..4e3312bf6862 100644 --- a/lib/node_modules/@stdlib/random/iterators/binomial/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/binomial/test/test.js @@ -324,8 +324,8 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { From 37be6bdf60e7f1d62315d4a4787a8062b8112152 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 17:12:46 -0700 Subject: [PATCH 0970/1062] Fix failing tests --- .../@stdlib/random/iterators/cauchy/test/test.js | 11 ++++++----- .../@stdlib/random/iterators/chi/test/test.js | 11 ++++++----- .../@stdlib/random/iterators/chisquare/test/test.js | 11 ++++++----- .../@stdlib/random/iterators/cosine/test/test.js | 11 ++++++----- .../random/iterators/discrete-uniform/test/test.js | 11 ++++++----- .../@stdlib/random/iterators/erlang/test/test.js | 11 ++++++----- 6 files changed, 36 insertions(+), 30 deletions(-) diff --git a/lib/node_modules/@stdlib/random/iterators/cauchy/test/test.js b/lib/node_modules/@stdlib/random/iterators/cauchy/test/test.js index c5d33c1485b3..6290331d0dee 100644 --- a/lib/node_modules/@stdlib/random/iterators/cauchy/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/cauchy/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var cauchy = require( '@stdlib/random/base/cauchy' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -201,8 +202,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -319,9 +320,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/chi/test/test.js b/lib/node_modules/@stdlib/random/iterators/chi/test/test.js index 23d857706640..62e02b83c499 100644 --- a/lib/node_modules/@stdlib/random/iterators/chi/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/chi/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var rchi = require( '@stdlib/random/base/chi' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -173,8 +174,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -291,9 +292,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/chisquare/test/test.js b/lib/node_modules/@stdlib/random/iterators/chisquare/test/test.js index aaded25756b6..b38024f316de 100644 --- a/lib/node_modules/@stdlib/random/iterators/chisquare/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/chisquare/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var rchisq = require( '@stdlib/random/base/chisquare' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -173,8 +174,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -291,9 +292,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/cosine/test/test.js b/lib/node_modules/@stdlib/random/iterators/cosine/test/test.js index 89c2846ba1f9..e91f04c6519c 100644 --- a/lib/node_modules/@stdlib/random/iterators/cosine/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/cosine/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var cosine = require( '@stdlib/random/base/cosine' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -201,8 +202,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -319,9 +320,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/discrete-uniform/test/test.js b/lib/node_modules/@stdlib/random/iterators/discrete-uniform/test/test.js index 1726c04065c6..a8da03ce0865 100644 --- a/lib/node_modules/@stdlib/random/iterators/discrete-uniform/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/discrete-uniform/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -223,8 +224,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2, 5, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -341,9 +342,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/erlang/test/test.js b/lib/node_modules/@stdlib/random/iterators/erlang/test/test.js index 030f3ce4be79..0c98e1b2e00f 100644 --- a/lib/node_modules/@stdlib/random/iterators/erlang/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/erlang/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var erlang = require( '@stdlib/random/base/erlang' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -204,8 +205,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 3, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -322,9 +323,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); From 9399ca5d97cab5074135e8fd5d356a63f8cd1530 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 17:29:34 -0700 Subject: [PATCH 0971/1062] Fix failing tests --- .../random/iterators/exponential/test/test.js | 11 ++++++----- .../@stdlib/random/iterators/f/test/test.js | 11 ++++++----- .../@stdlib/random/iterators/frechet/test/test.js | 11 ++++++----- .../@stdlib/random/iterators/gamma/test/test.js | 11 ++++++----- .../@stdlib/random/iterators/geometric/test/test.js | 11 ++++++----- .../@stdlib/random/iterators/gumbel/test/test.js | 11 ++++++----- .../random/iterators/hypergeometric/test/test.js | 11 ++++++----- .../random/iterators/improved-ziggurat/test/test.js | 13 +++++++------ .../@stdlib/random/iterators/invgamma/test/test.js | 11 ++++++----- .../random/iterators/kumaraswamy/test/test.js | 11 ++++++----- .../@stdlib/random/iterators/laplace/test/test.js | 11 ++++++----- .../@stdlib/random/iterators/levy/test/test.js | 11 ++++++----- 12 files changed, 73 insertions(+), 61 deletions(-) diff --git a/lib/node_modules/@stdlib/random/iterators/exponential/test/test.js b/lib/node_modules/@stdlib/random/iterators/exponential/test/test.js index 1bfc64863a87..0eb7c1115a82 100644 --- a/lib/node_modules/@stdlib/random/iterators/exponential/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/exponential/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var rexp = require( '@stdlib/random/base/exponential' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -173,8 +174,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -291,9 +292,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/f/test/test.js b/lib/node_modules/@stdlib/random/iterators/f/test/test.js index e775ac72b84d..6fbf98fc1146 100644 --- a/lib/node_modules/@stdlib/random/iterators/f/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/f/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var rf = require( '@stdlib/random/base/f' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -203,8 +204,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -321,9 +322,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/frechet/test/test.js b/lib/node_modules/@stdlib/random/iterators/frechet/test/test.js index cf32073fd2a4..2106d2814059 100644 --- a/lib/node_modules/@stdlib/random/iterators/frechet/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/frechet/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var frechet = require( '@stdlib/random/base/frechet' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -231,8 +232,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, 3.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -349,9 +350,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/gamma/test/test.js b/lib/node_modules/@stdlib/random/iterators/gamma/test/test.js index ef177e95a982..30b8694fcca9 100644 --- a/lib/node_modules/@stdlib/random/iterators/gamma/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/gamma/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var gamma = require( '@stdlib/random/base/gamma' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -203,8 +204,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -321,9 +322,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/geometric/test/test.js b/lib/node_modules/@stdlib/random/iterators/geometric/test/test.js index d9751e4411e2..d076940cf015 100644 --- a/lib/node_modules/@stdlib/random/iterators/geometric/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/geometric/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var geometric = require( '@stdlib/random/base/geometric' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -173,8 +174,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 0.3, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -291,9 +292,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/gumbel/test/test.js b/lib/node_modules/@stdlib/random/iterators/gumbel/test/test.js index ed547f661084..6a90e0f318cf 100644 --- a/lib/node_modules/@stdlib/random/iterators/gumbel/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/gumbel/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var gumbel = require( '@stdlib/random/base/gumbel' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -201,8 +202,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -319,9 +320,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/hypergeometric/test/test.js b/lib/node_modules/@stdlib/random/iterators/hypergeometric/test/test.js index 8b106b9cba11..635d8d07a59a 100644 --- a/lib/node_modules/@stdlib/random/iterators/hypergeometric/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/hypergeometric/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var hypergeometric = require( '@stdlib/random/base/hypergeometric' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -280,8 +281,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 10, 5, 5, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -398,9 +399,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/test/test.js b/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/test/test.js index 889ae9c33214..0e94a640f107 100644 --- a/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/improved-ziggurat/test/test.js @@ -26,6 +26,7 @@ var now = require( '@stdlib/time/now' ); var minstd = require( '@stdlib/random/base/minstd' ); var randn = require( '@stdlib/random/base/improved-ziggurat' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -173,8 +174,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -182,7 +183,7 @@ tape( 'attached to the returned iterator is the underlying PRNG', function test( var it = iterator({ 'prng': minstd.normalized }); - t.equal( typeof it.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof it.PRNG, 'function', 'has property' ); t.equal( it.PRNG, minstd.normalized, 'equal to provided PRNG' ); t.end(); }); @@ -300,9 +301,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/invgamma/test/test.js b/lib/node_modules/@stdlib/random/iterators/invgamma/test/test.js index acd215fb0a83..e43c005e7a16 100644 --- a/lib/node_modules/@stdlib/random/iterators/invgamma/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/invgamma/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var invgamma = require( '@stdlib/random/base/invgamma' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -203,8 +204,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -321,9 +322,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/kumaraswamy/test/test.js b/lib/node_modules/@stdlib/random/iterators/kumaraswamy/test/test.js index f86530c34eca..3e35be544bec 100644 --- a/lib/node_modules/@stdlib/random/iterators/kumaraswamy/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/kumaraswamy/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var kumaraswamy = require( '@stdlib/random/base/kumaraswamy' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -203,8 +204,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -321,9 +322,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/laplace/test/test.js b/lib/node_modules/@stdlib/random/iterators/laplace/test/test.js index 0e605eebfafe..37a2a1a29078 100644 --- a/lib/node_modules/@stdlib/random/iterators/laplace/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/laplace/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var laplace = require( '@stdlib/random/base/laplace' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -201,8 +202,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -319,9 +320,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/levy/test/test.js b/lib/node_modules/@stdlib/random/iterators/levy/test/test.js index 6bb09034dcf0..6d38b3a995fc 100644 --- a/lib/node_modules/@stdlib/random/iterators/levy/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/levy/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var levy = require( '@stdlib/random/base/levy' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -201,8 +202,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -319,9 +320,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); From cd57a5b3e13bfb2bd5b6575c9123822f4cd366b7 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 17:57:14 -0700 Subject: [PATCH 0972/1062] Fix failing tests --- .../random/iterators/logistic/test/test.js | 11 ++++++----- .../random/iterators/lognormal/test/test.js | 11 ++++++----- .../iterators/minstd-shuffle/test/test.js | 19 ++++++++++--------- .../random/iterators/minstd/test/test.js | 19 ++++++++++--------- .../random/iterators/mt19937/test/test.js | 19 ++++++++++--------- 5 files changed, 42 insertions(+), 37 deletions(-) diff --git a/lib/node_modules/@stdlib/random/iterators/logistic/test/test.js b/lib/node_modules/@stdlib/random/iterators/logistic/test/test.js index 717ef2c33ac8..8b854909a45d 100644 --- a/lib/node_modules/@stdlib/random/iterators/logistic/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/logistic/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var logistic = require( '@stdlib/random/base/logistic' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -201,8 +202,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -319,9 +320,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/lognormal/test/test.js b/lib/node_modules/@stdlib/random/iterators/lognormal/test/test.js index 2309c2717891..e9b4e5db5ced 100644 --- a/lib/node_modules/@stdlib/random/iterators/lognormal/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/lognormal/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var lognormal = require( '@stdlib/random/base/lognormal' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -201,8 +202,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -319,9 +320,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/test/test.js b/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/test/test.js index a461d66a492b..06e0ace98927 100644 --- a/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var minstd = require( '@stdlib/random/base/minstd-shuffle' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -174,21 +175,21 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); tape( 'attached to the returned iterator is the minimum possible generated number (non-normalized)', function test( t ) { var it = iterator(); - t.equal( typeof it.MIN, 'number', 'has `MIN` property' ); + t.equal( typeof it.MIN, 'number', 'has property' ); t.equal( it.MIN, 1.0, 'is equal to one' ); t.end(); }); tape( 'attached to the returned iterator is the maximum possible generated number (non-normalized)', function test( t ) { var it = iterator(); - t.equal( typeof it.MAX, 'number', 'has `MAX` property' ); + t.equal( typeof it.MAX, 'number', 'has property' ); t.equal( it.MAX > 0.0, true, 'greater than 0' ); t.end(); }); @@ -197,7 +198,7 @@ tape( 'attached to the returned iterator is the minimum possible generated numbe var it = iterator({ 'normalized': true }); - t.equal( typeof it.MIN, 'number', 'has `MIN` property' ); + t.equal( typeof it.MIN, 'number', 'has property' ); t.equal( it.MIN, 0.0, 'is equal to zero' ); t.end(); }); @@ -206,7 +207,7 @@ tape( 'attached to the returned iterator is the maximum possible generated numbe var it = iterator({ 'normalized': true }); - t.equal( typeof it.MAX, 'number', 'has `MAX` property' ); + t.equal( typeof it.MAX, 'number', 'has property' ); t.equal( it.MAX <= 1.0, true, 'smaller or equal to one' ); t.end(); }); @@ -345,9 +346,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/minstd/test/test.js b/lib/node_modules/@stdlib/random/iterators/minstd/test/test.js index 60331e74e1d4..44a58d15f60b 100644 --- a/lib/node_modules/@stdlib/random/iterators/minstd/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/minstd/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var minstd = require( '@stdlib/random/base/minstd' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -174,21 +175,21 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); tape( 'attached to the returned iterator is the minimum possible generated number (non-normalized)', function test( t ) { var it = iterator(); - t.equal( typeof it.MIN, 'number', 'has `MIN` property' ); + t.equal( typeof it.MIN, 'number', 'has property' ); t.equal( it.MIN, 1.0, 'is equal to one' ); t.end(); }); tape( 'attached to the returned iterator is the maximum possible generated number (non-normalized)', function test( t ) { var it = iterator(); - t.equal( typeof it.MAX, 'number', 'has `MAX` property' ); + t.equal( typeof it.MAX, 'number', 'has property' ); t.equal( it.MAX > 0.0, true, 'greater than 0' ); t.end(); }); @@ -197,7 +198,7 @@ tape( 'attached to the returned iterator is the minimum possible generated numbe var it = iterator({ 'normalized': true }); - t.equal( typeof it.MIN, 'number', 'has `MIN` property' ); + t.equal( typeof it.MIN, 'number', 'has property' ); t.equal( it.MIN, 0.0, 'is equal to zero' ); t.end(); }); @@ -206,7 +207,7 @@ tape( 'attached to the returned iterator is the maximum possible generated numbe var it = iterator({ 'normalized': true }); - t.equal( typeof it.MAX, 'number', 'has `MAX` property' ); + t.equal( typeof it.MAX, 'number', 'has property' ); t.equal( it.MAX <= 1.0, true, 'smaller or equal to one' ); t.end(); }); @@ -345,9 +346,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/mt19937/test/test.js b/lib/node_modules/@stdlib/random/iterators/mt19937/test/test.js index 5779e89c1945..301c13bd339e 100644 --- a/lib/node_modules/@stdlib/random/iterators/mt19937/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/mt19937/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var mt19937 = require( '@stdlib/random/base/mt19937' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -174,21 +175,21 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); tape( 'attached to the returned iterator is the minimum possible generated number (non-normalized)', function test( t ) { var it = iterator(); - t.equal( typeof it.MIN, 'number', 'has `MIN` property' ); + t.equal( typeof it.MIN, 'number', 'has property' ); t.equal( it.MIN, 1.0, 'is equal to one' ); t.end(); }); tape( 'attached to the returned iterator is the maximum possible generated number (non-normalized)', function test( t ) { var it = iterator(); - t.equal( typeof it.MAX, 'number', 'has `MAX` property' ); + t.equal( typeof it.MAX, 'number', 'has property' ); t.equal( it.MAX > 0.0, true, 'greater than 0' ); t.end(); }); @@ -197,7 +198,7 @@ tape( 'attached to the returned iterator is the minimum possible generated numbe var it = iterator({ 'normalized': true }); - t.equal( typeof it.MIN, 'number', 'has `MIN` property' ); + t.equal( typeof it.MIN, 'number', 'has property' ); t.equal( it.MIN, 0.0, 'is equal to zero' ); t.end(); }); @@ -206,7 +207,7 @@ tape( 'attached to the returned iterator is the maximum possible generated numbe var it = iterator({ 'normalized': true }); - t.equal( typeof it.MAX, 'number', 'has `MAX` property' ); + t.equal( typeof it.MAX, 'number', 'has property' ); t.equal( it.MAX <= 1.0, true, 'smaller or equal to one' ); t.end(); }); @@ -345,9 +346,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); From 3274850f4794aee3abb6af461b23d849c5f355eb Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 17:59:54 -0700 Subject: [PATCH 0973/1062] Fix failing tests --- .../random/iterators/negative-binomial/test/test.js | 11 ++++++----- .../@stdlib/random/iterators/normal/test/test.js | 11 ++++++----- .../random/iterators/pareto-type1/test/test.js | 11 ++++++----- .../@stdlib/random/iterators/poisson/test/test.js | 11 ++++++----- 4 files changed, 24 insertions(+), 20 deletions(-) diff --git a/lib/node_modules/@stdlib/random/iterators/negative-binomial/test/test.js b/lib/node_modules/@stdlib/random/iterators/negative-binomial/test/test.js index d53f02df049a..25c4475501e7 100644 --- a/lib/node_modules/@stdlib/random/iterators/negative-binomial/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/negative-binomial/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var rnbinom = require( '@stdlib/random/base/negative-binomial' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -204,8 +205,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 10, 0.3, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -322,9 +323,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/normal/test/test.js b/lib/node_modules/@stdlib/random/iterators/normal/test/test.js index b02287daff15..b7bf3fcad7fb 100644 --- a/lib/node_modules/@stdlib/random/iterators/normal/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/normal/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var normal = require( '@stdlib/random/base/normal' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -201,8 +202,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -319,9 +320,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/pareto-type1/test/test.js b/lib/node_modules/@stdlib/random/iterators/pareto-type1/test/test.js index df516b053271..a1bba12342bd 100644 --- a/lib/node_modules/@stdlib/random/iterators/pareto-type1/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/pareto-type1/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var rpareto = require( '@stdlib/random/base/pareto-type1' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -203,8 +204,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -321,9 +322,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/poisson/test/test.js b/lib/node_modules/@stdlib/random/iterators/poisson/test/test.js index 02a04fb7dca7..011f250d5f0b 100644 --- a/lib/node_modules/@stdlib/random/iterators/poisson/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/poisson/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var rpois = require( '@stdlib/random/base/poisson' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -173,8 +174,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -291,9 +292,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); From 944fa3a11aa7779d400f2adb1a7181943c26b172 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 18:02:41 -0700 Subject: [PATCH 0974/1062] Fix failing tests --- .../@stdlib/random/iterators/randi/test/test.js | 17 +++++++++-------- .../@stdlib/random/iterators/randn/test/test.js | 13 +++++++------ .../@stdlib/random/iterators/randu/test/test.js | 17 +++++++++-------- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/lib/node_modules/@stdlib/random/iterators/randi/test/test.js b/lib/node_modules/@stdlib/random/iterators/randi/test/test.js index 1459a364d380..ff7cd648c13b 100644 --- a/lib/node_modules/@stdlib/random/iterators/randi/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/randi/test/test.js @@ -26,6 +26,7 @@ var now = require( '@stdlib/time/now' ); var randi = require( '@stdlib/random/base/randi' ).factory; var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -173,8 +174,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -182,21 +183,21 @@ tape( 'attached to the returned iterator is the underlying PRNG', function test( var it = iterator({ 'name': 'minstd-shuffle' }); - t.equal( typeof it.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof it.PRNG, 'function', 'has property' ); t.equal( it.PRNG.NAME, 'minstd-shuffle', 'equal to provided PRNG' ); t.end(); }); tape( 'attached to the returned iterator is the minimum possible generated number', function test( t ) { var it = iterator(); - t.equal( typeof it.MIN, 'number', 'has `MIN` property' ); + t.equal( typeof it.MIN, 'number', 'has property' ); t.equal( isInteger( it.MIN ), true, 'is an integer' ); t.end(); }); tape( 'attached to the returned iterator is the maximum possible generated number', function test( t ) { var it = iterator(); - t.equal( typeof it.MAX, 'number', 'has `MAX` property' ); + t.equal( typeof it.MAX, 'number', 'has property' ); t.equal( isInteger( it.MAX ), true, 'is an integer' ); t.end(); }); @@ -314,9 +315,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/randn/test/test.js b/lib/node_modules/@stdlib/random/iterators/randn/test/test.js index 093d83fe79b6..0060299cca04 100644 --- a/lib/node_modules/@stdlib/random/iterators/randn/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/randn/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var randn = require( '@stdlib/random/base/randn' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -172,8 +173,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -181,7 +182,7 @@ tape( 'attached to the returned iterator is the underlying PRNG', function test( var it = iterator({ 'name': 'box-muller' }); - t.equal( typeof it.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof it.PRNG, 'function', 'has property' ); t.equal( it.PRNG.NAME, 'box-muller', 'equal to provided PRNG' ); t.end(); }); @@ -299,9 +300,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/randu/test/test.js b/lib/node_modules/@stdlib/random/iterators/randu/test/test.js index 2fda7c03b70d..63e264c4a7d9 100644 --- a/lib/node_modules/@stdlib/random/iterators/randu/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/randu/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var randu = require( '@stdlib/random/base/randu' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -172,8 +173,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -181,21 +182,21 @@ tape( 'attached to the returned iterator is the underlying PRNG', function test( var it = iterator({ 'name': 'minstd-shuffle' }); - t.equal( typeof it.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof it.PRNG, 'function', 'has property' ); t.equal( it.PRNG.NAME, 'minstd-shuffle', 'equal to provided PRNG' ); t.end(); }); tape( 'attached to the returned iterator is the minimum possible generated number', function test( t ) { var it = iterator(); - t.equal( typeof it.MIN, 'number', 'has `MIN` property' ); + t.equal( typeof it.MIN, 'number', 'has property' ); t.equal( it.MIN, 0.0, 'is equal to zero' ); t.end(); }); tape( 'attached to the returned iterator is the maximum possible generated number', function test( t ) { var it = iterator(); - t.equal( typeof it.MAX, 'number', 'has `MAX` property' ); + t.equal( typeof it.MAX, 'number', 'has property' ); t.equal( it.MAX <= 1.0, true, 'is smaller or equal to one' ); t.end(); }); @@ -313,9 +314,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); From 46c157b008d6f4457d5c62f5e50d075de0192b66 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 18:05:44 -0700 Subject: [PATCH 0975/1062] Fix failing tests --- .../@stdlib/random/iterators/rayleigh/test/test.js | 11 ++++++----- .../@stdlib/random/iterators/t/test/test.js | 11 ++++++----- .../@stdlib/random/iterators/triangular/test/test.js | 11 ++++++----- .../@stdlib/random/iterators/uniform/test/test.js | 11 ++++++----- .../@stdlib/random/iterators/weibull/test/test.js | 11 ++++++----- 5 files changed, 30 insertions(+), 25 deletions(-) diff --git a/lib/node_modules/@stdlib/random/iterators/rayleigh/test/test.js b/lib/node_modules/@stdlib/random/iterators/rayleigh/test/test.js index 848703b462b8..d542949ff73e 100644 --- a/lib/node_modules/@stdlib/random/iterators/rayleigh/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/rayleigh/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var rayleigh = require( '@stdlib/random/base/rayleigh' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -173,8 +174,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -291,9 +292,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/t/test/test.js b/lib/node_modules/@stdlib/random/iterators/t/test/test.js index 9ad09646ad83..533564e78492 100644 --- a/lib/node_modules/@stdlib/random/iterators/t/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/t/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var rt = require( '@stdlib/random/base/t' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -173,8 +174,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -291,9 +292,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/triangular/test/test.js b/lib/node_modules/@stdlib/random/iterators/triangular/test/test.js index 1a3fd638a7c7..9fa7c1893b43 100644 --- a/lib/node_modules/@stdlib/random/iterators/triangular/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/triangular/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var triangular = require( '@stdlib/random/base/triangular' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -250,8 +251,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, 4.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -368,9 +369,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/uniform/test/test.js b/lib/node_modules/@stdlib/random/iterators/uniform/test/test.js index 8bc1f2f9cf3d..0245018080f2 100644 --- a/lib/node_modules/@stdlib/random/iterators/uniform/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/uniform/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var uniform = require( '@stdlib/random/base/uniform' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -221,8 +222,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -339,9 +340,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/random/iterators/weibull/test/test.js b/lib/node_modules/@stdlib/random/iterators/weibull/test/test.js index 6dcbf3d3780d..a5985ed6b373 100644 --- a/lib/node_modules/@stdlib/random/iterators/weibull/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/weibull/test/test.js @@ -25,6 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var weibull = require( '@stdlib/random/base/weibull' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var iterator = require( './../lib' ); @@ -203,8 +204,8 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator( 2.0, 5.0, { 'seed': 12345 }); - t.equal( typeof it.seed, 'number', 'has `seed` property' ); - t.equal( it.seed, 12345, 'equal to provided seed' ); + t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); @@ -321,9 +322,9 @@ tape( 'if an environment supports `Symbol.iterator`, the returned iterator is it it2 = it1[ '__ITERATOR_SYMBOL__' ](); t.equal( typeof it2, 'object', 'returns an object' ); - t.equal( typeof it2.next, 'function', 'has `next` method' ); - t.equal( typeof it2.return, 'function', 'has `return` method' ); - t.equal( it2.seed, it1.seed, 'has expected seed' ); + t.equal( typeof it2.next, 'function', 'has method' ); + t.equal( typeof it2.return, 'function', 'has method' ); + t.deepEqual( it2.seed, it1.seed, 'has expected seed' ); for ( i = 0; i < 100; i++ ) { t.equal( it2.next().value, it1.next().value, 'returns expected value' ); From ecb3d29451b202f99386cbda6065482742bd3439 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 18:09:48 -0700 Subject: [PATCH 0976/1062] Fix assertions --- .../@stdlib/random/iterators/minstd-shuffle/test/test.js | 4 ++-- lib/node_modules/@stdlib/random/iterators/minstd/test/test.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/test/test.js b/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/test/test.js index 06e0ace98927..add2196628db 100644 --- a/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/minstd-shuffle/test/test.js @@ -25,7 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var minstd = require( '@stdlib/random/base/minstd-shuffle' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); -var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var isInt32Array = require( '@stdlib/assert/is-int32array' ); var iterator = require( './../lib' ); @@ -175,7 +175,7 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( isInt32Array( it.seed ), true, 'has property' ); t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/iterators/minstd/test/test.js b/lib/node_modules/@stdlib/random/iterators/minstd/test/test.js index 44a58d15f60b..2ece11d24190 100644 --- a/lib/node_modules/@stdlib/random/iterators/minstd/test/test.js +++ b/lib/node_modules/@stdlib/random/iterators/minstd/test/test.js @@ -25,7 +25,7 @@ var proxyquire = require( 'proxyquire' ); var now = require( '@stdlib/time/now' ); var minstd = require( '@stdlib/random/base/minstd' ).factory; var iteratorSymbol = require( '@stdlib/symbol/iterator' ); -var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var isInt32Array = require( '@stdlib/assert/is-int32array' ); var iterator = require( './../lib' ); @@ -175,7 +175,7 @@ tape( 'attached to the returned iterator is the generator seed', function test( var it = iterator({ 'seed': 12345 }); - t.equal( isUint32Array( it.seed ), true, 'has property' ); + t.equal( isInt32Array( it.seed ), true, 'has property' ); t.equal( it.seed[ 0 ], 12345, 'equal to provided seed' ); t.end(); }); From 801ce6234106f2ce96c6ab487b3bc03f3aed3d06 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 18:19:57 -0700 Subject: [PATCH 0977/1062] Update and add benchmarks --- .../benchmark/benchmark.factory.js | 105 ++++++++++++++++++ .../negative-binomial/benchmark/benchmark.js | 28 ++++- 2 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 lib/node_modules/@stdlib/random/base/negative-binomial/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/negative-binomial/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..685264813871 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 100, 0.7 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 100, 0.7 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 100, 0.7 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/negative-binomial/benchmark/benchmark.js index 46c151b81bc0..829b46e84423 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/benchmark/benchmark.js @@ -57,7 +57,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var rand; var r; var p; @@ -82,3 +82,29 @@ bench( pkg+':factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var rand; + var r; + var p; + var z; + var i; + + r = 100; + p = 0.74321; + rand = negativeBinomial.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( r, p ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 5ac3754a36778d960e6ac312797df2abe177367c Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 18:20:58 -0700 Subject: [PATCH 0978/1062] Document properties and options --- .../base/negative-binomial/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/docs/repl.txt b/lib/node_modules/@stdlib/random/base/negative-binomial/docs/repl.txt index ffb8001a0d3d..33ad87d0a8d8 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/docs/repl.txt @@ -45,8 +45,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -90,6 +103,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 20, 0.3 ) + + > r = {{alias}}( 20, 0.3 ) + + > r = {{alias}}( 20, 0.3 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 20, 0.3 ) + + > r = {{alias}}( 20, 0.3 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 20, 0.3 ) + + > r = {{alias}}( 20, 0.3 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From aa06a240dc56afd753f1ec7d20e793d2b642b219 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 18:22:53 -0700 Subject: [PATCH 0979/1062] Document properties and options --- .../random/base/negative-binomial/README.md | 95 ++++++++++++++++++- 1 file changed, 93 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/README.md b/lib/node_modules/@stdlib/random/base/negative-binomial/README.md index 18de609684e1..affef08d5c91 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/README.md +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/README.md @@ -100,6 +100,8 @@ r = rand( 123, 0.21 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -122,6 +124,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = negativeBinomial( 8, 0.9 ); +} + +// Create a new PRNG initialized to the current state of `negativeBinomial`: +rand = negativeBinomial.factory({ + 'state': negativeBinomial.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 8, 0.9 ) === negativeBinomial( 8, 0.9 ) ); +// returns true +``` + #### negativeBinomial.NAME The generator name. @@ -163,6 +188,69 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### negativeBinomial.seedLength + +Length of generator seed. + +```javascript +var len = negativeBinomial.seedLength; +// returns +``` + +#### negativeBinomial.state + +Writable property for getting and setting the generator state. + +```javascript +var r = negativeBinomial( 20, 0.5 ); +// returns + +r = negativeBinomial( 20, 0.5 ); +// returns + +// ... + +// Get a copy of the current state: +var state = negativeBinomial.state; +// returns + +r = negativeBinomial( 20, 0.5 ); +// returns + +r = negativeBinomial( 20, 0.5 ); +// returns + +// Reset the state: +negativeBinomial.state = state; + +// Replay the last two pseudorandom numbers: +r = negativeBinomial( 20, 0.5 ); +// returns + +r = negativeBinomial( 20, 0.5 ); +// returns + +// ... +``` + +#### negativeBinomial.stateLength + +Length of generator state. + +```javascript +var len = negativeBinomial.stateLength; +// returns +``` + +#### negativeBinomial.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = negativeBinomial.byteLength; +// returns +``` + @@ -171,8 +259,9 @@ for ( i = 0; i < 100; i++ ) { ## Notes -- The `r` parameter is the shape parameter of the gamma mixing distribution when expressing - the negative binomial distribution as a Gamma–Poisson mixture. Accordingly, `r` is **not** required to be an integer value. +- The `r` parameter is the shape parameter of the gamma mixing distribution when expressing the negative binomial distribution as a Gamma–Poisson mixture. Accordingly, `r` is **not** required to be an integer value. +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). @@ -222,6 +311,8 @@ for ( i = 0; i < 100; i++ ) { [negative-binomial]: https://en.wikipedia.org/wiki/Negative_binomial_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib + From bcfa02ba70260ebe7aa174991d6d6a3770d78673 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 18:23:48 -0700 Subject: [PATCH 0980/1062] Rename files --- .../base/negative-binomial/lib/factory.js | 2 +- .../base/negative-binomial/lib/index.js | 2 +- .../lib/{_negative_binomial.js => main.js} | 20 +++++++++++++------ .../lib/negative_binomial.js | 20 ++++++------------- 4 files changed, 22 insertions(+), 22 deletions(-) rename lib/node_modules/@stdlib/random/base/negative-binomial/lib/{_negative_binomial.js => main.js} (79%) diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/lib/factory.js b/lib/node_modules/@stdlib/random/base/negative-binomial/lib/factory.js index 405bb5e8dd38..87c5c4708b91 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/lib/factory.js @@ -28,7 +28,7 @@ var poisson = require( '@stdlib/random/base/poisson' ).factory; var minstd = require( '@stdlib/random/base/minstd' ).factory; var gamma = require( '@stdlib/random/base/gamma' ).factory; var validate = require( './validate.js' ); -var negativeBinomial0 = require( './_negative_binomial.js' ); +var negativeBinomial0 = require( './negative_binomial.js' ); // MAIN // diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/lib/index.js b/lib/node_modules/@stdlib/random/base/negative-binomial/lib/index.js index eb7724323d4d..7c6fe4f27c36 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/lib/index.js @@ -51,7 +51,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var negativeBinomial = require( './negative_binomial.js' ); +var negativeBinomial = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/lib/_negative_binomial.js b/lib/node_modules/@stdlib/random/base/negative-binomial/lib/main.js similarity index 79% rename from lib/node_modules/@stdlib/random/base/negative-binomial/lib/_negative_binomial.js rename to lib/node_modules/@stdlib/random/base/negative-binomial/lib/main.js index 790bd08cef77..c43d829c61ca 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/lib/_negative_binomial.js +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/lib/main.js @@ -18,19 +18,27 @@ 'use strict'; +// MODULES // + +var factory = require( './factory.js' ); + + +// MAIN // + /** * Returns a pseudorandom number drawn from a negative binomial distribution. * -* @private -* @param {Function} rpois - PRNG for generating Poisson random variates -* @param {Function} rgamma - PRNG for generating Gamma random variates +* @name negativeBinomial +* @type {Function} * @param {PositiveNumber} r - number of successes until experiment is stopped * @param {number} p - success probability * @returns {NonNegativeInteger} pseudorandom number +* +* @example +* var v = negativeBinomial( 10, 0.5 ); +* // returns */ -function negativeBinomial( rpois, rgamma, r, p ) { - return rpois( rgamma( r, p/(1-p) ) ); -} +var negativeBinomial = factory(); // EXPORTS // diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/lib/negative_binomial.js b/lib/node_modules/@stdlib/random/base/negative-binomial/lib/negative_binomial.js index c43d829c61ca..790bd08cef77 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/lib/negative_binomial.js +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/lib/negative_binomial.js @@ -18,27 +18,19 @@ 'use strict'; -// MODULES // - -var factory = require( './factory.js' ); - - -// MAIN // - /** * Returns a pseudorandom number drawn from a negative binomial distribution. * -* @name negativeBinomial -* @type {Function} +* @private +* @param {Function} rpois - PRNG for generating Poisson random variates +* @param {Function} rgamma - PRNG for generating Gamma random variates * @param {PositiveNumber} r - number of successes until experiment is stopped * @param {number} p - success probability * @returns {NonNegativeInteger} pseudorandom number -* -* @example -* var v = negativeBinomial( 10, 0.5 ); -* // returns */ -var negativeBinomial = factory(); +function negativeBinomial( rpois, rgamma, r, p ) { + return rpois( rgamma( r, p/(1-p) ) ); +} // EXPORTS // From 7d0a19fa2bce945e91c0211b74523a1440f9f484 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 18:37:13 -0700 Subject: [PATCH 0981/1062] Update benchmarks --- .../base/poisson/benchmark/benchmark.js | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/poisson/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/poisson/benchmark/benchmark.js index 23f6312c06d9..459daf148b7a 100644 --- a/lib/node_modules/@stdlib/random/base/poisson/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/poisson/benchmark/benchmark.js @@ -51,7 +51,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var lambda; var rand; var z; @@ -74,3 +74,27 @@ bench( pkg+':factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var lambda; + var rand; + var z; + var i; + + lambda = 10.0; + rand = poisson.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( lambda ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 87fafa71b7122fe2a2711d07b03ae5471e9e27f6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 18:37:51 -0700 Subject: [PATCH 0982/1062] Add benchmarks --- .../poisson/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/poisson/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/poisson/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/poisson/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..c0a06e776620 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/poisson/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 10.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 10.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 10.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From f60e0e86da201584c29a0fc837ec1def1a2eac5f Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 18:42:31 -0700 Subject: [PATCH 0983/1062] Document properties and options --- .../@stdlib/random/base/poisson/README.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/poisson/README.md b/lib/node_modules/@stdlib/random/base/poisson/README.md index d265841dd5a4..97f439155161 100644 --- a/lib/node_modules/@stdlib/random/base/poisson/README.md +++ b/lib/node_modules/@stdlib/random/base/poisson/README.md @@ -87,6 +87,8 @@ r = rand( 3.14 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -109,6 +111,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = poisson( 10.0 ); +} + +// Create a new PRNG initialized to the current state of `poisson`: +rand = poisson.factory({ + 'state': poisson.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 10.0 ) === poisson( 10.0 ) ); +// returns true +``` + #### poisson.NAME The generator name. @@ -150,10 +175,84 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### poisson.seedLength + +Length of generator seed. + +```javascript +var len = poisson.seedLength; +// returns +``` + +#### poisson.state + +Writable property for getting and setting the generator state. + +```javascript +var r = poisson( 10.0 ); +// returns + +r = poisson( 10.0 ); +// returns + +// ... + +// Get a copy of the current state: +var state = poisson.state; +// returns + +r = poisson( 10.0 ); +// returns + +r = poisson( 10.0 ); +// returns + +// Reset the state: +poisson.state = state; + +// Replay the last two pseudorandom numbers: +r = poisson( 10.0 ); +// returns + +r = poisson( 10.0 ); +// returns + +// ... +``` + +#### poisson.stateLength + +Length of generator state. + +```javascript +var len = poisson.stateLength; +// returns +``` + +#### poisson.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = poisson.byteLength; +// returns +``` + +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -213,6 +312,8 @@ for ( i = 0; i < 100; i++ ) { [@hormann:1993b]: http://dx.doi.org/10.1016/0167-6687(93)90997-4 +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From b55ee468b0f1fe247cc1b5acc572b80faa5824de Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 18:45:47 -0700 Subject: [PATCH 0984/1062] Document properties and options --- .../@stdlib/random/base/poisson/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/poisson/docs/repl.txt b/lib/node_modules/@stdlib/random/base/poisson/docs/repl.txt index cba0a3ad9bb1..3778e541573e 100644 --- a/lib/node_modules/@stdlib/random/base/poisson/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/poisson/docs/repl.txt @@ -37,8 +37,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -82,6 +95,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 10.0 ) + + > r = {{alias}}( 10.0 ) + + > r = {{alias}}( 10.0 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 10.0 ) + + > r = {{alias}}( 10.0 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 10.0 ) + + > r = {{alias}}( 10.0 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From 3fc23843ccd3b430c153500f1087db744ec2d4d1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 18:49:00 -0700 Subject: [PATCH 0985/1062] Rename files and add support for getting and setting PRNG state --- .../random/base/poisson/lib/_poisson.js | 47 ----------- .../random/base/poisson/lib/factory.js | 78 ++++++++++++++++++- .../@stdlib/random/base/poisson/lib/index.js | 2 +- .../@stdlib/random/base/poisson/lib/main.js | 66 ++++++++++++++++ .../random/base/poisson/lib/poisson.js | 39 +++------- 5 files changed, 152 insertions(+), 80 deletions(-) delete mode 100644 lib/node_modules/@stdlib/random/base/poisson/lib/_poisson.js create mode 100644 lib/node_modules/@stdlib/random/base/poisson/lib/main.js diff --git a/lib/node_modules/@stdlib/random/base/poisson/lib/_poisson.js b/lib/node_modules/@stdlib/random/base/poisson/lib/_poisson.js deleted file mode 100644 index 6fe8d850a8ad..000000000000 --- a/lib/node_modules/@stdlib/random/base/poisson/lib/_poisson.js +++ /dev/null @@ -1,47 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2018 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var knuth = require( './knuth.js' ); -var rejection = require( './rejection.js' ); - - -// MAIN // - -/** -* Returns a pseudorandom number drawn from a Poisson distribution with parameter `lambda`. -* -* @private -* @param {Function} rand - PRNG for generating uniformly distributed numbers -* @param {PositiveNumber} lambda - mean -* @returns {NonNegativeInteger} pseudorandom number -*/ -function poisson( rand, lambda ) { - if ( lambda < 30.0 ) { - return knuth( rand, lambda ); - } - return rejection( rand, lambda ); -} - - -// EXPORTS // - -module.exports = poisson; diff --git a/lib/node_modules/@stdlib/random/base/poisson/lib/factory.js b/lib/node_modules/@stdlib/random/base/poisson/lib/factory.js index d7aff645708a..28b1c49af6a5 100644 --- a/lib/node_modules/@stdlib/random/base/poisson/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/poisson/lib/factory.js @@ -21,11 +21,13 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isPositive = require( '@stdlib/assert/is-positive-number' ).isPrimitive; var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var poisson0 = require( './_poisson.js' ); +var poisson0 = require( './poisson.js' ); // MAIN // @@ -35,9 +37,13 @@ var poisson0 = require( './_poisson.js' ); * * @param {PositiveNumber} [lambda] - mean * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `lambda` must be a positive number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -93,11 +99,77 @@ function factory() { prng = poisson1; } setReadOnly( prng, 'NAME', 'poisson' ); - setReadOnly( prng, 'seed', rand.seed ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + rand.state = s; + } + /** * Returns a pseudorandom number drawn from a Poisson distribution. * diff --git a/lib/node_modules/@stdlib/random/base/poisson/lib/index.js b/lib/node_modules/@stdlib/random/base/poisson/lib/index.js index abefbffcd099..c37d99847a9f 100644 --- a/lib/node_modules/@stdlib/random/base/poisson/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/poisson/lib/index.js @@ -51,7 +51,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var poisson = require( './poisson.js' ); +var poisson = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/poisson/lib/main.js b/lib/node_modules/@stdlib/random/base/poisson/lib/main.js new file mode 100644 index 000000000000..a553c6645ca3 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/poisson/lib/main.js @@ -0,0 +1,66 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var factory = require( './factory.js' ); + + +// MAIN // + +/** +* Returns a pseudorandom number drawn from a Poisson distribution with parameter `lambda`. +* +* ## Method +* +* - When \\(\lambda < 30\\), use Knuth's method. +* - When \\(lambda \geq 30\\), use transformed rejection method as Knuth's method does not scale well with \\(\lambda\\). +* +* ## References +* +* - Knuth, Donald E. 1997. _The Art of Computer Programming, Volume 2 (3rd Ed.): Seminumerical Algorithms_. Boston, MA, USA: Addison-Wesley Longman Publishing Co., Inc. +* - Hörmann, W. 1993. "The transformed rejection method for generating Poisson random variables." _Insurance: Mathematics and Economics_ 12 (1): 39–45. doi:[10.1016/0167-6687(93)90997-4][@hormann:1993b]. +* +* [@hormann:1993b]: http://dx.doi.org/10.1016/0167-6687(93)90997-4 +* +* +* @name poisson +* @type {Function} +* @param {PositiveNumber} lambda - mean +* @returns {NonNegativeInteger} pseudorandom number +* +* @example +* var v = poisson( 0.5 ); +* // returns +* +* @example +* var v = poisson( 0.0 ); +* // returns NaN +* +* @example +* var v = poisson( NaN ); +* // returns NaN +*/ +var poisson = factory(); + + +// EXPORTS // + +module.exports = poisson; diff --git a/lib/node_modules/@stdlib/random/base/poisson/lib/poisson.js b/lib/node_modules/@stdlib/random/base/poisson/lib/poisson.js index a553c6645ca3..6fe8d850a8ad 100644 --- a/lib/node_modules/@stdlib/random/base/poisson/lib/poisson.js +++ b/lib/node_modules/@stdlib/random/base/poisson/lib/poisson.js @@ -20,7 +20,8 @@ // MODULES // -var factory = require( './factory.js' ); +var knuth = require( './knuth.js' ); +var rejection = require( './rejection.js' ); // MAIN // @@ -28,37 +29,17 @@ var factory = require( './factory.js' ); /** * Returns a pseudorandom number drawn from a Poisson distribution with parameter `lambda`. * -* ## Method -* -* - When \\(\lambda < 30\\), use Knuth's method. -* - When \\(lambda \geq 30\\), use transformed rejection method as Knuth's method does not scale well with \\(\lambda\\). -* -* ## References -* -* - Knuth, Donald E. 1997. _The Art of Computer Programming, Volume 2 (3rd Ed.): Seminumerical Algorithms_. Boston, MA, USA: Addison-Wesley Longman Publishing Co., Inc. -* - Hörmann, W. 1993. "The transformed rejection method for generating Poisson random variables." _Insurance: Mathematics and Economics_ 12 (1): 39–45. doi:[10.1016/0167-6687(93)90997-4][@hormann:1993b]. -* -* [@hormann:1993b]: http://dx.doi.org/10.1016/0167-6687(93)90997-4 -* -* -* @name poisson -* @type {Function} +* @private +* @param {Function} rand - PRNG for generating uniformly distributed numbers * @param {PositiveNumber} lambda - mean * @returns {NonNegativeInteger} pseudorandom number -* -* @example -* var v = poisson( 0.5 ); -* // returns -* -* @example -* var v = poisson( 0.0 ); -* // returns NaN -* -* @example -* var v = poisson( NaN ); -* // returns NaN */ -var poisson = factory(); +function poisson( rand, lambda ) { + if ( lambda < 30.0 ) { + return knuth( rand, lambda ); + } + return rejection( rand, lambda ); +} // EXPORTS // From 41f0e8c9a9b9e1026fd29db6b466efe462661c51 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 18:54:37 -0700 Subject: [PATCH 0986/1062] Update tests --- .../@stdlib/random/base/poisson/test/test.js | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/poisson/test/test.js b/lib/node_modules/@stdlib/random/base/poisson/test/test.js index 85c5f2edb810..6f2900c85c71 100644 --- a/lib/node_modules/@stdlib/random/base/poisson/test/test.js +++ b/lib/node_modules/@stdlib/random/base/poisson/test/test.js @@ -36,22 +36,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof poisson.factory, 'function', 'has `factory` method' ); + t.equal( typeof poisson.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( poisson.NAME, 'poisson', 'has `NAME` property' ); + t.equal( poisson.NAME, 'poisson', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof poisson.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof poisson.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( poisson.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( poisson.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof poisson.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( poisson.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof poisson.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof poisson.byteLength, 'number', 'has property' ); t.end(); }); @@ -67,3 +87,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + poisson( 10.0 ); + } + // Capture the current state: + state = poisson.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( poisson( 10.0 ) ); + } + // Set the state: + poisson.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( poisson( 10.0 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 5e804dcfdfae7a604d8e45bab3d1673542c9b244 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 18:54:49 -0700 Subject: [PATCH 0987/1062] Update tests --- .../random/base/poisson/test/test.factory.js | 633 +++++++++++++++--- 1 file changed, 558 insertions(+), 75 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/poisson/test/test.factory.js b/lib/node_modules/@stdlib/random/base/poisson/test/test.factory.js index c578e71c0bb7..506a89dd1419 100644 --- a/lib/node_modules/@stdlib/random/base/poisson/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/poisson/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var chi2gof = require( '@stdlib/stats/chi2gof' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,76 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var poisson; - var r; - var i; - - // When binding distribution parameters... - poisson = factory( 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = poisson(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - poisson = factory(); - for ( i = 0; i < 100; i++ ) { - r = poisson( 100.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var poisson1; - var poisson2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - poisson1 = factory( 35.0, { - 'seed': seed - }); - poisson2 = factory( 35.0, { - 'seed': seed - }); - - t.notEqual( poisson1, poisson2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = poisson1(); - r2 = poisson2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var poisson = factory(); - t.equal( poisson.NAME, 'poisson', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var poisson = factory(); - t.equal( typeof poisson.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var poisson = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( poisson.seed ), true, 'has `seed` property' ); - t.equal( poisson.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if provided a mean which is not a positive number (no options)', function test( t ) { var values; var i; @@ -124,7 +56,8 @@ tape( 'the function throws an error if provided a mean which is not a positive n '5', null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -152,7 +85,8 @@ tape( 'the function throws an error if provided a mean which is not a positive n '5', null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -178,7 +112,8 @@ tape( 'the function throws an error if provided an options argument which is not 'abc', null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -205,7 +140,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -223,6 +159,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var poisson; + var r; + var i; + + // When binding distribution parameters... + poisson = factory( 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = poisson(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + poisson = factory(); + for ( i = 0; i < 100; i++ ) { + r = poisson( 100.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var poisson1; + var poisson2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + poisson1 = factory( 35.0, { + 'seed': seed + }); + poisson2 = factory( 35.0, { + 'seed': seed + }); + + t.notEqual( poisson1, poisson2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = poisson1(); + r2 = poisson2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var poisson1; + var poisson2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + poisson1 = factory( 35.0, { + 'seed': seed + }); + poisson2 = factory( 35.0, { + 'seed': seed + }); + + t.notEqual( poisson1, poisson2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = poisson1(); + r2 = poisson2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var poisson = factory(); + t.equal( poisson.NAME, 'poisson', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var poisson = factory(); + t.equal( typeof poisson.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var poisson = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( poisson.seed ), true, 'has property' ); + t.equal( poisson.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var poisson = factory(); + t.equal( typeof poisson.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var poisson = factory(); + t.equal( isUint32Array( poisson.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var poisson = factory(); + t.equal( typeof poisson.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var poisson = factory(); + t.equal( typeof poisson.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a mean equal to `NaN`', function test( t ) { var poisson; var r; @@ -413,3 +630,269 @@ tape( 'the function returns a PRNG for generating random numbers from a Poisson t.end(); } }); + +tape( 'the function supports specifying the generator state (lambda < 30)', function test( t ) { + var poisson; + var state; + var arr; + var i; + + poisson = factory( 10.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + poisson(); + } + // Capture the current state: + state = poisson.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( poisson() ); + } + + // Create another PRNG using the captured state: + poisson = factory( 10.0, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( poisson(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying the generator state (lambda > 30)', function test( t ) { + var poisson; + var state; + var arr; + var i; + + poisson = factory( 40.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + poisson(); + } + // Capture the current state: + state = poisson.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( poisson() ); + } + + // Create another PRNG using the captured state: + poisson = factory( 40.0, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( poisson(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state (lambda < 30)', function test( t ) { + var poisson; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + poisson = factory( 10.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + poisson(); + } + // Capture the current state: + state = poisson.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( poisson() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 10.0, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 10.0, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state (lambda > 30)', function test( t ) { + var poisson; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + poisson = factory( 40.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + poisson(); + } + // Capture the current state: + state = poisson.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( poisson() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 40.0, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 40.0, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state (lambda < 30)', function test( t ) { + var poisson; + var state; + var arr; + var i; + + poisson = factory( 10.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + poisson(); + } + // Capture the current state: + state = poisson.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( poisson() ); + } + // Set the state: + poisson.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( poisson(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state (lambda > 30)', function test( t ) { + var poisson; + var state; + var arr; + var i; + + poisson = factory( 40.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + poisson(); + } + // Capture the current state: + state = poisson.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( poisson() ); + } + // Set the state: + poisson.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( poisson(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From d60f745e3bbaa6d24e49c8b8880b1a8ea3640c7b Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 18:56:25 -0700 Subject: [PATCH 0988/1062] Add support for getting and setting PRNG state --- .../base/negative-binomial/lib/factory.js | 154 ++++++++++++++++-- 1 file changed, 138 insertions(+), 16 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/lib/factory.js b/lib/node_modules/@stdlib/random/base/negative-binomial/lib/factory.js index 87c5c4708b91..0731268a21f1 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/lib/factory.js @@ -21,12 +21,18 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var hasOwnProp = require( '@stdlib/assert/has-own-property' ); var isObject = require( '@stdlib/assert/is-plain-object' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; var isnan = require( '@stdlib/math/base/assert/is-nan' ); var poisson = require( '@stdlib/random/base/poisson' ).factory; -var minstd = require( '@stdlib/random/base/minstd' ).factory; var gamma = require( '@stdlib/random/base/gamma' ).factory; +var gcopy = require( '@stdlib/blas/base/gcopy' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var copy = require( '@stdlib/utils/copy' ); var validate = require( './validate.js' ); var negativeBinomial0 = require( './negative_binomial.js' ); @@ -39,11 +45,15 @@ var negativeBinomial0 = require( './negative_binomial.js' ); * @param {PositiveNumber} [r] - number of successes until experiment is stopped * @param {number} [p] - success probability * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `r` must be a positive number * @throws {TypeError} `p` must be number * @throws {RangeError} `p` must be a number on the interval `(0,1)` * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -65,20 +75,42 @@ var negativeBinomial0 = require( './negative_binomial.js' ); */ function factory() { var rgamma; - var randi; + var STATE; var rpois; var opts; var prng; + var rand; + var FLG; var err; var p; var r; - if ( arguments.length === 1 ) { + FLG = true; + if ( arguments.length === 0 ) { + opts = { + 'copy': false + }; + rpois = poisson( opts ); + } else if ( arguments.length === 1 ) { opts = arguments[ 0 ]; if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } - } else if ( arguments.length > 1 ) { + if ( hasOwnProp( opts, 'copy' ) && !isBoolean( opts.copy ) ) { + throw new TypeError( 'invalid option. `copy` option must be a boolean. Option: `' + opts.copy + '`.' ); + } + if ( hasOwnProp( opts, 'state' ) && !isUint32Array( opts.state ) ) { + throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + opts.state + '`.' ); + } + opts = copy( opts, 1 ); + if ( opts.copy === false ) { + FLG = false; + } else if ( opts.state ) { + opts.state = gcopy( opts.state.length, opts.state, 1, new Uint32Array( opts.state.length ), 1 ); // eslint-disable-line max-len + } + opts.copy = false; + rpois = poisson( opts ); + } else { r = arguments[ 0 ]; p = arguments[ 1 ]; err = validate( r, p ); @@ -90,32 +122,122 @@ function factory() { if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } + if ( hasOwnProp( opts, 'copy' ) && !isBoolean( opts.copy ) ) { + throw new TypeError( 'invalid option. `copy` option must be a boolean. Option: `' + opts.copy + '`.' ); + } + if ( hasOwnProp( opts, 'state' ) && !isUint32Array( opts.state ) ) { + throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + opts.state + '`.' ); + } + opts = copy( opts, 1 ); + if ( opts.copy === false ) { + FLG = false; + } else if ( opts.state ) { + opts.state = gcopy( opts.state.length, opts.state, 1, new Uint32Array( opts.state.length ), 1 ); // eslint-disable-line max-len + } + opts.copy = false; + rpois = poisson( opts ); + } else { + opts = { + 'copy': false + }; + rpois = poisson( opts ); } } - if ( opts && hasOwnProp( opts, 'seed' ) ) { - randi = minstd({ - 'seed': opts.seed - }); + if ( opts.state ) { + STATE = opts.state; } else { - randi = minstd(); + STATE = rpois.state; + rpois.state = STATE; // updates the underlying PRNG to point to a shared state } - rpois = poisson({ - 'seed': randi() - }); rgamma = gamma({ - 'seed': randi() + 'state': STATE, + 'copy': false }); + + rand = rpois.PRNG; if ( r === void 0 ) { prng = negativeBinomial2; } else { prng = negativeBinomial1; } setReadOnly( prng, 'NAME', 'negative-binomial' ); - setReadOnly( prng, 'seed', randi.seed ); - setReadOnly( prng, 'PRNG', randi ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); + setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + if ( !isUint32Array( s ) ) { + throw new TypeError( 'invalid argument. Must provide a Uint32Array. Value: `' + s + '`.' ); + } + if ( FLG ) { + s = gcopy( s.length, s, 1, new Uint32Array( s.length ), 1 ); + } + rand.state = s; + } + /** * Returns a pseudorandom number drawn from a negative binomial distribution with bound parameters `r` and `p`. * From 6c109bc1f5504f5d8c10c6aacb95caec8199fbc5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 18:58:46 -0700 Subject: [PATCH 0989/1062] Update tests --- .../base/negative-binomial/test/test.js | 57 +++++++++++++++++-- 1 file changed, 52 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.js b/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.js index 32d58307b264..44a843196fa2 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.js +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.js @@ -24,7 +24,7 @@ var tape = require( 'tape' ); var uniform = require( '@stdlib/random/base/uniform' ).factory; var round = require( '@stdlib/math/base/special/round' ); var isNonNegativeInteger = require( '@stdlib/math/base/assert/is-nonnegative-integer' ); -var isInt32Array = require( '@stdlib/assert/is-int32array' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var negativeBinomial = require( './../lib' ); @@ -37,22 +37,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof negativeBinomial.factory, 'function', 'has `factory` method' ); + t.equal( typeof negativeBinomial.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof negativeBinomial.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof negativeBinomial.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( negativeBinomial.NAME, 'negative-binomial', 'has `NAME` property' ); + t.equal( negativeBinomial.NAME, 'negative-binomial', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isInt32Array( negativeBinomial.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( negativeBinomial.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof negativeBinomial.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( negativeBinomial.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof negativeBinomial.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof negativeBinomial.byteLength, 'number', 'has property' ); t.end(); }); @@ -74,3 +94,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + negativeBinomial( 100, 0.75 ); + } + // Capture the current state: + state = negativeBinomial.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( negativeBinomial( 100, 0.75 ) ); + } + // Set the state: + negativeBinomial.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( negativeBinomial( 100, 0.75 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From fbbc8e69bd72c6fa81c0a417be2fb462bb276b49 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 19:05:19 -0700 Subject: [PATCH 0990/1062] Update tests --- .../negative-binomial/test/test.factory.js | 745 ++++++++++++++++-- 1 file changed, 668 insertions(+), 77 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.factory.js b/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.factory.js index 08f1b1588651..52b1443345c4 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.factory.js @@ -22,10 +22,12 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); -var round = require( '@stdlib/math/base/special/round' ); -var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var isInt32Array = require( '@stdlib/assert/is-int32array' ); var chi2gof = require( '@stdlib/stats/chi2gof' ); +var now = require( '@stdlib/time/now' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,76 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var negativeBinomial; - var r; - var i; - - // When binding distribution parameters... - negativeBinomial = factory( 80, 0.05 ); - for ( i = 0; i < 100; i++ ) { - r = negativeBinomial(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - negativeBinomial = factory(); - for ( i = 0; i < 100; i++ ) { - r = negativeBinomial( 120, 0.75 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var negativeBinomial1; - var negativeBinomial2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - negativeBinomial1 = factory( 20, 0.3, { - 'seed': seed - }); - negativeBinomial2 = factory( 20, 0.3, { - 'seed': seed - }); - - t.notEqual( negativeBinomial1, negativeBinomial2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = negativeBinomial1(); - r2 = negativeBinomial2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var negativeBinomial = factory(); - t.equal( negativeBinomial.NAME, 'negative-binomial', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var negativeBinomial = factory(); - t.equal( typeof negativeBinomial.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var negativeBinomial = factory({ - 'seed': 12345 - }); - t.equal( isInt32Array( negativeBinomial.seed ), true, 'has `seed` property' ); - t.equal( negativeBinomial.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if provided a number of successes argument which is not a positive number', function test( t ) { var values; var i; @@ -126,7 +58,8 @@ tape( 'the function throws an error if provided a number of successes argument w '5', null, true, - undefined, + false, + void 0, [], {}, function noop() {} @@ -153,7 +86,8 @@ tape( 'the function throws an error if provided a success probability argument w '5', null, true, - undefined, + false, + void 0, [], {}, function noop() {} @@ -206,7 +140,8 @@ tape( 'the function throws an error if provided an options argument which is not NaN, null, true, - undefined, + false, + void 0, [], function noop() {} ]; @@ -233,7 +168,8 @@ tape( 'the function throws an error if provided an options argument which is not NaN, null, true, - undefined, + false, + void 0, [], function noop() {} ]; @@ -250,6 +186,428 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `copy` option which is not a boolean, the function throws an error (other arguments)', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 10, 0.3, { + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error (other arguments)', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 10, 0.3, { + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer (other arguments)', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 10, 0.3, { + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error (other arguments)', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 10, 0.3, { + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error (other arguments)', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 10, 0.3, { + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var negativeBinomial; + var r; + var i; + + // When binding distribution parameters... + negativeBinomial = factory( 80, 0.05 ); + for ( i = 0; i < 100; i++ ) { + r = negativeBinomial(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + negativeBinomial = factory(); + for ( i = 0; i < 100; i++ ) { + r = negativeBinomial( 120, 0.75 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var negativeBinomial1; + var negativeBinomial2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + negativeBinomial1 = factory( 20, 0.3, { + 'seed': seed + }); + negativeBinomial2 = factory( 20, 0.3, { + 'seed': seed + }); + + t.notEqual( negativeBinomial1, negativeBinomial2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = negativeBinomial1(); + r2 = negativeBinomial2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var negativeBinomial1; + var negativeBinomial2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + negativeBinomial1 = factory( 20, 0.3, { + 'seed': seed + }); + negativeBinomial2 = factory( 20, 0.3, { + 'seed': seed + }); + + t.notEqual( negativeBinomial1, negativeBinomial2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = negativeBinomial1(); + r2 = negativeBinomial2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var negativeBinomial = factory(); + t.equal( negativeBinomial.NAME, 'negative-binomial', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var negativeBinomial = factory(); + t.equal( typeof negativeBinomial.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var negativeBinomial = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( negativeBinomial.seed ), true, 'has property' ); + t.equal( negativeBinomial.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ now(), now()+1, now()+2, now()+3 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var negativeBinomial = factory(); + t.equal( typeof negativeBinomial.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the return function is the generator state', function test( t ) { + var negativeBinomial = factory(); + t.equal( isUint32Array( negativeBinomial.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var negativeBinomial = factory(); + t.equal( typeof negativeBinomial.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var negativeBinomial = factory(); + t.equal( typeof negativeBinomial.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` if provided a first argument which is `NaN`', function test( t ) { var negativeBinomial; var r; @@ -389,3 +747,236 @@ tape( 'the function returns a PRNG for generating random numbers from a negative t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var negativeBinomial; + var state; + var arr; + var i; + + negativeBinomial = factory( 40, 0.8 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + negativeBinomial(); + } + // Capture the current state: + state = negativeBinomial.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( negativeBinomial() ); + } + + // Create another PRNG using the captured state: + negativeBinomial = factory( 40, 0.8, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( negativeBinomial(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var negativeBinomial; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + negativeBinomial = factory( 40, 0.8 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + negativeBinomial(); + } + // Capture the current state: + state = negativeBinomial.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( negativeBinomial() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory({ + 'state': shared, + 'copy': false + }); + rand2 = factory({ + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1( 40, 0.8 ); + v2 = rand2( 40, 0.8 ); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2( 40, 0.8 ); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1( 40, 0.8 ); + v2 = rand2( 40, 0.8 ); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state (other arguments)', function test( t ) { + var negativeBinomial; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + negativeBinomial = factory( 40, 0.8 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + negativeBinomial(); + } + // Capture the current state: + state = negativeBinomial.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( negativeBinomial() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 40, 0.8, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 40, 0.8, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state (alpha < 1.0)', function test( t ) { + var negativeBinomial; + var state; + var arr; + var i; + + negativeBinomial = factory( 0.2, 4.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + negativeBinomial(); + } + // Capture the current state: + state = negativeBinomial.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( negativeBinomial() ); + } + // Set the state: + negativeBinomial.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( negativeBinomial(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state (alpha >= 1.0)', function test( t ) { + var negativeBinomial; + var state; + var arr; + var i; + + negativeBinomial = factory( 40, 0.8 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + negativeBinomial(); + } + // Capture the current state: + state = negativeBinomial.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( negativeBinomial() ); + } + // Set the state: + negativeBinomial.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( negativeBinomial(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From a186413df7e3b2ac38c909b2017eb148abd726bd Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 19:06:44 -0700 Subject: [PATCH 0991/1062] Fix tests --- .../negative-binomial/test/test.factory.js | 32 +------------------ 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.factory.js b/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.factory.js index 52b1443345c4..88203e3dfaf8 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.factory.js @@ -921,37 +921,7 @@ tape( 'the function supports specifying a shared generator state (other argument t.end(); }); -tape( 'the returned function supports setting the generator state (alpha < 1.0)', function test( t ) { - var negativeBinomial; - var state; - var arr; - var i; - - negativeBinomial = factory( 0.2, 4.0 ); - - // Move to a future state... - for ( i = 0; i < 100; i++ ) { - negativeBinomial(); - } - // Capture the current state: - state = negativeBinomial.state; - - // Move to a future state... - arr = []; - for ( i = 0; i < 100; i++ ) { - arr.push( negativeBinomial() ); - } - // Set the state: - negativeBinomial.state = state; - - // Replay previously generated values... - for ( i = 0; i < 100; i++ ) { - t.equal( negativeBinomial(), arr[ i ], 'returns expected value. i: '+i+'.' ); - } - t.end(); -}); - -tape( 'the returned function supports setting the generator state (alpha >= 1.0)', function test( t ) { +tape( 'the returned function supports setting the generator state', function test( t ) { var negativeBinomial; var state; var arr; From 0cd1ad35e47477f4533a631eb066a9e493630519 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 19:11:33 -0700 Subject: [PATCH 0992/1062] Update benchmarks --- .../random/base/normal/benchmark/benchmark.js | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/normal/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/normal/benchmark/benchmark.js index f305e905d221..7e23b5b849a7 100644 --- a/lib/node_modules/@stdlib/random/base/normal/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/normal/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var sigma; var rand; var mu; @@ -78,3 +78,29 @@ bench( pkg+':factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var sigma; + var rand; + var mu; + var z; + var i; + + mu = 0.0; + sigma = 1.5; + rand = normal.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( mu, sigma ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 546374f3d9102640746eccbd9f0194cd1f8df65a Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 19:12:17 -0700 Subject: [PATCH 0993/1062] Add benchmarks --- .../normal/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/normal/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/normal/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/normal/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..d8564f8eb968 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/normal/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 1.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 7f29e6c45fd9599d752359bf093a1e837d045318 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 19:13:30 -0700 Subject: [PATCH 0994/1062] Document properties and options --- .../@stdlib/random/base/normal/docs/repl.txt | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/normal/docs/repl.txt b/lib/node_modules/@stdlib/random/base/normal/docs/repl.txt index dcf9aeea3be6..8ffc71f58a43 100644 --- a/lib/node_modules/@stdlib/random/base/normal/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/normal/docs/repl.txt @@ -43,8 +43,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -89,6 +102,14 @@ > var seed = {{alias}}.seed; +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + {{alias}}.state Generator state. @@ -120,6 +141,14 @@ +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + {{alias}}.byteLength Size of generator state. From 8d05628c58f39194ca0bf5480ff0c9f1c06cf7d4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 19:14:54 -0700 Subject: [PATCH 0995/1062] Document properties and options --- .../@stdlib/random/base/normal/README.md | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/normal/README.md b/lib/node_modules/@stdlib/random/base/normal/README.md index cbae87c3d678..6a86fa210791 100644 --- a/lib/node_modules/@stdlib/random/base/normal/README.md +++ b/lib/node_modules/@stdlib/random/base/normal/README.md @@ -91,6 +91,8 @@ r = rand( -2.0, 2.0 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -113,6 +115,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = normal( 1.0, 2.0 ); +} + +// Create a new PRNG initialized to the current state of `normal`: +rand = normal.factory({ + 'state': normal.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 1.0, 2.0 ) === normal( 1.0, 2.0 ) ); +// returns true +``` + #### normal.NAME The generator name. @@ -154,6 +179,15 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### normal.seedLength + +Length of generator seed. + +```javascript +var len = normal.seedLength; +// returns +``` + #### normal.state Writable property for getting and setting the generator state. @@ -190,6 +224,15 @@ r = normal( 2.0, 5.0 ); // ... ``` +#### normal.stateLength + +Length of generator state. + +```javascript +var len = normal.stateLength; +// returns +``` + #### normal.byteLength Size of generator state. @@ -203,6 +246,17 @@ var sz = normal.byteLength; +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -247,6 +301,8 @@ for ( i = 0; i < 100; i++ ) { [normal]: https://en.wikipedia.org/wiki/Normal_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From 3c5f8bd3182cec9ac91b4a0447ec025f461c94cf Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 19:16:58 -0700 Subject: [PATCH 0996/1062] Add support for getting and setting PRNG state --- .../@stdlib/random/base/normal/lib/factory.js | 66 +++++++++++++++---- 1 file changed, 55 insertions(+), 11 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/normal/lib/factory.js b/lib/node_modules/@stdlib/random/base/normal/lib/factory.js index 7db2abf99753..7abc1c638dd6 100644 --- a/lib/node_modules/@stdlib/random/base/normal/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/normal/lib/factory.js @@ -20,8 +20,9 @@ // MODULES // -var defineProperty = require( '@stdlib/utils/define-property' ); var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var randn = require( '@stdlib/random/base/improved-ziggurat' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -37,10 +38,14 @@ var normal0 = require( './normal.js' ); * @param {number} [mu] - mean * @param {PositiveNumber} [sigma] - standard deviation * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `mu` must be a number * @throws {TypeError} `sigma` must be a positive number -* @throws {TypeError} options must be an object +* @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -94,18 +99,55 @@ function factory() { prng = normal1; } setReadOnly( prng, 'NAME', 'normal' ); - setReadOnly( prng, 'seed', rand.seed ); - defineProperty( prng, 'state', { - 'configurable': false, - 'enumerable': true, - 'get': getState, - 'set': setState - }); - setReadOnly( prng, 'byteLength', rand.byteLength ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + /** * Returns the current pseudorandom number generator state. * @@ -121,6 +163,8 @@ function factory() { * * @private * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state */ function setState( s ) { rand.state = s; From 2048aa3f742d0f4276891f498f62de838b90a80c Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 19:18:12 -0700 Subject: [PATCH 0997/1062] Update tests --- .../@stdlib/random/base/normal/test/test.js | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/normal/test/test.js b/lib/node_modules/@stdlib/random/base/normal/test/test.js index 2962ff8aab7f..c6ddac14e14b 100644 --- a/lib/node_modules/@stdlib/random/base/normal/test/test.js +++ b/lib/node_modules/@stdlib/random/base/normal/test/test.js @@ -34,32 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof normal.factory, 'function', 'has `factory` method' ); + t.equal( typeof normal.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( normal.NAME, 'normal', 'has `NAME` property' ); + t.equal( normal.NAME, 'normal', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof normal.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof normal.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( normal.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( normal.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof normal.seedLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state', function test( t ) { - t.equal( isUint32Array( normal.state ), true, 'has `state` property' ); + t.equal( isUint32Array( normal.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof normal.stateLength, 'number', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator state size', function test( t ) { - t.equal( typeof normal.byteLength, 'number', 'has `byteLength` property' ); + t.equal( typeof normal.byteLength, 'number', 'has property' ); t.end(); }); From 59957def8f0933973e8cfa8c04c10fd61d1a98b5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 19:21:49 -0700 Subject: [PATCH 0998/1062] Update tests --- .../random/base/normal/test/test.factory.js | 470 ++++++++++++++---- 1 file changed, 387 insertions(+), 83 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/normal/test/test.factory.js b/lib/node_modules/@stdlib/random/base/normal/test/test.factory.js index 23fc52b70ad1..9ed791b6d802 100644 --- a/lib/node_modules/@stdlib/random/base/normal/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/normal/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var kstest = require( '@stdlib/stats/kstest' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,88 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var normal; - var r; - var i; - - // When binding distribution parameters... - normal = factory( 0.0, 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = normal(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - normal = factory(); - for ( i = 0; i < 100; i++ ) { - r = normal( 2.5, 2.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var normal1; - var normal2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - normal1 = factory( 0.0, 1.0, { - 'seed': seed - }); - normal2 = factory( 0.0, 1.0, { - 'seed': seed - }); - - t.notEqual( normal1, normal2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = normal1(); - r2 = normal2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var normal = factory(); - t.equal( normal.NAME, 'normal', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var normal = factory(); - t.equal( typeof normal.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var normal = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( normal.seed ), true, 'has `seed` property' ); - t.equal( normal.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state', function test( t ) { - var normal = factory(); - t.equal( isUint32Array( normal.state ), true, 'has `state` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator state size', function test( t ) { - var normal = factory(); - t.equal( typeof normal.byteLength, 'number', 'has `byteLength` property' ); - t.end(); -}); - tape( 'the function throws an error if the `sigma` value is not a positive number value', function test( t ) { var values; var i; @@ -240,6 +160,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var normal; + var r; + var i; + + // When binding distribution parameters... + normal = factory( 0.0, 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = normal(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + normal = factory(); + for ( i = 0; i < 100; i++ ) { + r = normal( 2.5, 2.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var normal1; + var normal2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + normal1 = factory( 0.0, 1.0, { + 'seed': seed + }); + normal2 = factory( 0.0, 1.0, { + 'seed': seed + }); + + t.notEqual( normal1, normal2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = normal1(); + r2 = normal2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var normal1; + var normal2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + normal1 = factory( 0.0, 1.0, { + 'seed': seed + }); + normal2 = factory( 0.0, 1.0, { + 'seed': seed + }); + + t.notEqual( normal1, normal2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = normal1(); + r2 = normal2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var normal = factory(); + t.equal( normal.NAME, 'normal', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var normal = factory(); + t.equal( typeof normal.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var normal = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( normal.seed ), true, 'has property' ); + t.equal( normal.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var normal = factory(); + t.equal( typeof normal.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var normal = factory(); + t.equal( isUint32Array( normal.state ), true, 'has `state` property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var normal = factory(); + t.equal( typeof normal.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var normal = factory(); + t.equal( typeof normal.byteLength, 'number', 'has `byteLength` property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a first argument equal to `NaN`', function test( t ) { var normal; var r; @@ -359,6 +560,109 @@ tape( 'the function returns a PRNG for generating pseudorandom numbers from a no } }); +tape( 'the function supports specifying the generator state', function test( t ) { + var normal; + var state; + var arr; + var i; + + normal = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + normal(); + } + // Capture the current state: + state = normal.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( normal() ); + } + + // Create another PRNG using the captured state: + normal = factory( 0.0, 3.14, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( normal(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var normal; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + normal = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + normal(); + } + // Capture the current state: + state = normal.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( normal() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 0.0, 3.14, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 0.0, 3.14, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + tape( 'the returned function supports setting the generator state', function test( t ) { var normal; var state; From c08b073c9309d5bc1fca1743bdbdc2cedf301a04 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 19:23:00 -0700 Subject: [PATCH 0999/1062] Update benchmarks --- .../random/base/t/benchmark/benchmark.js | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/t/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/t/benchmark/benchmark.js index 3995dfe515ba..75c3227a9127 100644 --- a/lib/node_modules/@stdlib/random/base/t/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/t/benchmark/benchmark.js @@ -51,7 +51,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var rand; var v; var z; @@ -74,3 +74,27 @@ bench( pkg+':factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var rand; + var v; + var z; + var i; + + v = 10.0; + rand = t.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( v ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 2a47d3a5a2d84f1632e519b716526d1cf5fd06f0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 19:23:48 -0700 Subject: [PATCH 1000/1062] Add benchmarks --- .../base/t/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/t/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/t/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/t/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..c0a06e776620 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/t/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 10.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 10.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 10.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From f7777717c63cc52cb4677c3703bd715fddd095bc Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 19:25:29 -0700 Subject: [PATCH 1001/1062] Document properties and options --- .../@stdlib/random/base/t/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/t/docs/repl.txt b/lib/node_modules/@stdlib/random/base/t/docs/repl.txt index 056c4979d018..d9c98fc20086 100644 --- a/lib/node_modules/@stdlib/random/base/t/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/t/docs/repl.txt @@ -38,8 +38,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -83,6 +96,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 10.0 ) + + > r = {{alias}}( 10.0 ) + + > r = {{alias}}( 10.0 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 10.0 ) + + > r = {{alias}}( 10.0 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 10.0 ) + + > r = {{alias}}( 10.0 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From 5ebf6b5013f057b7a22a707e0ddf69f553e19901 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 19:27:09 -0700 Subject: [PATCH 1002/1062] Add tests --- .../negative-binomial/test/test.factory.js | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.factory.js b/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.factory.js index 88203e3dfaf8..30fc30e05ff0 100644 --- a/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/negative-binomial/test/test.factory.js @@ -665,6 +665,61 @@ tape( 'when called without arguments, the function returns a PRNG that returns ` t.end(); }); +tape( 'if the `state` property is set to a value other than a Uint32Array, an error is thrown', function test( t ) { + var negativeBinomial; + var values; + var i; + + negativeBinomial = factory(); + + values = [ + '3', + 3, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when set to '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + negativeBinomial.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Uint32Array having an unexpected length, an error is thrown', function test( t ) { + var negativeBinomial; + var values; + var i; + + negativeBinomial = factory(); + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 1000 ) + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when set to '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + negativeBinomial.state = value; + }; + } +}); + tape( 'the function returns a PRNG for generating random numbers from a negative binomial distribution', opts, function test( t ) { var threshold; var repeats; From 284a329884df679479c64413e9cb228f54b87c73 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 19:29:02 -0700 Subject: [PATCH 1003/1062] Document properties and options --- .../@stdlib/random/base/t/README.md | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/t/README.md b/lib/node_modules/@stdlib/random/base/t/README.md index 09adc885ce27..07627ec539ed 100644 --- a/lib/node_modules/@stdlib/random/base/t/README.md +++ b/lib/node_modules/@stdlib/random/base/t/README.md @@ -87,6 +87,8 @@ r = rand( 3.14 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -109,6 +111,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = t( 3.0 ); +} + +// Create a new PRNG initialized to the current state of `t`: +rand = t.factory({ + 'state': t.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 3.0 ) === t( 3.0 ) ); +// returns true +``` + #### t.NAME The generator name. @@ -150,10 +175,85 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### t.seedLength + +Length of generator seed. + +```javascript +var len = t.seedLength; +// returns +``` + +#### t.state + +Writable property for getting and setting the generator state. + +```javascript +var r = t( 10.0 ); +// returns + +r = t( 10.0 ); +// returns + +// ... + +// Get a copy of the current state: +var state = t.state; +// returns + +r = t( 10.0 ); +// returns + +r = t( 10.0 ); +// returns + +// Reset the state: +t.state = state; + +// Replay the last two pseudorandom numbers: +r = t( 10.0 ); +// returns + +r = t( 10.0 ); +// returns + +// ... +``` + +#### t.stateLength + +Length of generator state. + +```javascript +var len = t.stateLength; +// returns +``` + +#### t.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = t.byteLength; +// returns +``` + +
+ +## Notes + +- The `r` parameter is the shape parameter of the gamma mixing distribution when expressing the negative binomial distribution as a Gamma–Poisson mixture. Accordingly, `r` is **not** required to be an integer value. +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -198,6 +298,8 @@ for ( i = 0; i < 100; i++ ) { [t]: https://en.wikipedia.org/wiki/Student%27s_t-distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From 12faa0e41c7cc3b7a94171ee698694ffd7b7478e Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 19:29:58 -0700 Subject: [PATCH 1004/1062] Rename files --- .../@stdlib/random/base/t/lib/factory.js | 2 +- .../@stdlib/random/base/t/lib/index.js | 2 +- .../random/base/t/lib/{_t.js => main.js} | 25 +++++++++++++------ .../@stdlib/random/base/t/lib/t.js | 25 ++++++------------- 4 files changed, 27 insertions(+), 27 deletions(-) rename lib/node_modules/@stdlib/random/base/t/lib/{_t.js => main.js} (66%) diff --git a/lib/node_modules/@stdlib/random/base/t/lib/factory.js b/lib/node_modules/@stdlib/random/base/t/lib/factory.js index 8833f81a20f3..731ce9b2fa86 100644 --- a/lib/node_modules/@stdlib/random/base/t/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/t/lib/factory.js @@ -28,7 +28,7 @@ var minstd = require( '@stdlib/random/base/minstd-shuffle' ).factory; var chisquare = require( '@stdlib/random/base/chisquare' ).factory; var randn = require( '@stdlib/random/base/improved-ziggurat' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var t0 = require( './_t.js' ); +var t0 = require( './t.js' ); // MAIN // diff --git a/lib/node_modules/@stdlib/random/base/t/lib/index.js b/lib/node_modules/@stdlib/random/base/t/lib/index.js index 872ce2deee1f..ecdb9c643ee7 100644 --- a/lib/node_modules/@stdlib/random/base/t/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/t/lib/index.js @@ -51,7 +51,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var t = require( './t.js' ); +var t = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/t/lib/_t.js b/lib/node_modules/@stdlib/random/base/t/lib/main.js similarity index 66% rename from lib/node_modules/@stdlib/random/base/t/lib/_t.js rename to lib/node_modules/@stdlib/random/base/t/lib/main.js index 599e496b40d7..116685345eff 100644 --- a/lib/node_modules/@stdlib/random/base/t/lib/_t.js +++ b/lib/node_modules/@stdlib/random/base/t/lib/main.js @@ -20,23 +20,32 @@ // MODULES // -var sqrt = require( '@stdlib/math/base/special/sqrt' ); +var factory = require( './factory.js' ); // MAIN // /** -* Returns a pseudorandom number from a Student's t-distribution with degrees of freedom `v`. +* Returns a pseudorandom number drawn from a Student's t-distribution with degrees of freedom `v`. * -* @private -* @param {Function} randn - PRNG for generating standard normally distributed numbers -* @param {Function} rchisq - PRNG for generating chi-square distributed numbers +* @name t +* @type {Function} * @param {PositiveNumber} v - degrees of freedom * @returns {number} pseudorandom number +* +* @example +* var v = t( 3.0 ); +* // returns +* +* @example +* var v = t( 0.0 ); +* // returns NaN +* +* @example +* var v = t( NaN ); +* // returns NaN */ -function t( randn, rchisq, v ) { - return randn() / sqrt( rchisq( v ) / v ); -} +var t = factory(); // EXPORTS // diff --git a/lib/node_modules/@stdlib/random/base/t/lib/t.js b/lib/node_modules/@stdlib/random/base/t/lib/t.js index 116685345eff..599e496b40d7 100644 --- a/lib/node_modules/@stdlib/random/base/t/lib/t.js +++ b/lib/node_modules/@stdlib/random/base/t/lib/t.js @@ -20,32 +20,23 @@ // MODULES // -var factory = require( './factory.js' ); +var sqrt = require( '@stdlib/math/base/special/sqrt' ); // MAIN // /** -* Returns a pseudorandom number drawn from a Student's t-distribution with degrees of freedom `v`. +* Returns a pseudorandom number from a Student's t-distribution with degrees of freedom `v`. * -* @name t -* @type {Function} +* @private +* @param {Function} randn - PRNG for generating standard normally distributed numbers +* @param {Function} rchisq - PRNG for generating chi-square distributed numbers * @param {PositiveNumber} v - degrees of freedom * @returns {number} pseudorandom number -* -* @example -* var v = t( 3.0 ); -* // returns -* -* @example -* var v = t( 0.0 ); -* // returns NaN -* -* @example -* var v = t( NaN ); -* // returns NaN */ -var t = factory(); +function t( randn, rchisq, v ) { + return randn() / sqrt( rchisq( v ) / v ); +} // EXPORTS // From 88e3fa32caddc4d3a0d08f8e92cb4b197bbace6c Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 19:48:25 -0700 Subject: [PATCH 1005/1062] Add support for getting and setting PRNG state --- .../@stdlib/random/base/t/lib/factory.js | 175 +++++++++++++++--- 1 file changed, 149 insertions(+), 26 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/t/lib/factory.js b/lib/node_modules/@stdlib/random/base/t/lib/factory.js index 731ce9b2fa86..d38cb66abcf7 100644 --- a/lib/node_modules/@stdlib/random/base/t/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/t/lib/factory.js @@ -21,13 +21,19 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var hasOwnProp = require( '@stdlib/assert/has-own-property' ); var isPositive = require( '@stdlib/assert/is-positive-number' ).isPrimitive; var isObject = require( '@stdlib/assert/is-plain-object' ); -var minstd = require( '@stdlib/random/base/minstd-shuffle' ).factory; +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var isnan = require( '@stdlib/math/base/assert/is-nan' ); var chisquare = require( '@stdlib/random/base/chisquare' ).factory; var randn = require( '@stdlib/random/base/improved-ziggurat' ).factory; -var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var gcopy = require( '@stdlib/blas/base/gcopy' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var copy = require( '@stdlib/utils/copy' ); var t0 = require( './t.js' ); @@ -38,9 +44,13 @@ var t0 = require( './t.js' ); * * @param {PositiveNumber} [v] - degrees of freedom * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `v` must be a positive number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -62,53 +72,166 @@ var t0 = require( './t.js' ); */ function factory() { var rchisq; - var randi; + var STATE; var rnorm; + var rand; var opts; var prng; + var FLG; var v; - if ( - arguments.length === 1 && - isObject( arguments[ 0 ] ) - ) { - opts = arguments[ 0 ]; - } else if ( arguments.length > 0 ) { + FLG = true; + if ( arguments.length === 0 ) { + opts = { + 'copy': false + }; + rnorm = randn( opts ); + } else if ( arguments.length === 1 ) { + if ( isObject( arguments[ 0 ] ) ) { + opts = arguments[ 0 ]; + if ( hasOwnProp( opts, 'copy' ) && !isBoolean( opts.copy ) ) { + throw new TypeError( 'invalid option. `copy` option must be a boolean. Option: `' + opts.copy + '`.' ); + } + if ( hasOwnProp( opts, 'state' ) && !isUint32Array( opts.state ) ) { + throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + opts.state + '`.' ); + } + opts = copy( opts, 1 ); + if ( opts.copy === false ) { + FLG = false; + } else if ( opts.state ) { + opts.state = gcopy( opts.state.length, opts.state, 1, new Uint32Array( opts.state.length ), 1 ); // eslint-disable-line max-len + } + opts.copy = false; + rnorm = randn( opts ); + } else { + v = arguments[ 0 ]; + if ( !isPositive( v ) ) { + throw new TypeError( 'invalid argument. First argument must be a positive number or an options object. Value: `' + v + '`.' ); + } + opts = { + 'copy': false + }; + rnorm = randn( opts ); + } + } else { v = arguments[ 0 ]; if ( !isPositive( v ) ) { throw new TypeError( 'invalid argument. First argument must be a positive number. Value: `' + v + '`.' ); } - if ( arguments.length > 1 ) { - opts = arguments[ 1 ]; - if ( !isObject( opts ) ) { - throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); - } + opts = arguments[ 1 ]; + if ( !isObject( opts ) ) { + throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); + } + if ( hasOwnProp( opts, 'copy' ) && !isBoolean( opts.copy ) ) { + throw new TypeError( 'invalid option. `copy` option must be a boolean. Option: `' + opts.copy + '`.' ); } + if ( hasOwnProp( opts, 'state' ) && !isUint32Array( opts.state ) ) { + throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + opts.state + '`.' ); + } + opts = copy( opts, 1 ); + if ( opts.copy === false ) { + FLG = false; + } else if ( opts.state ) { + opts.state = gcopy( opts.state.length, opts.state, 1, new Uint32Array( opts.state.length ), 1 ); // eslint-disable-line max-len + } + opts.copy = false; + rnorm = randn( opts ); } - if ( opts && hasOwnProp( opts, 'seed' ) ) { - randi = minstd({ - 'seed': opts.seed - }); + if ( opts.state ) { + STATE = opts.state; } else { - randi = minstd(); + STATE = rnorm.state; + rnorm.state = STATE; // updates the underlying PRNG to point to a shared state } - rnorm = randn({ - 'seed': randi() - }); rchisq = chisquare({ - 'seed': randi() + 'state': STATE, + 'copy': false }); + + rand = rnorm.PRNG; if ( v === void 0 ) { prng = t2; } else { prng = t1; } setReadOnly( prng, 'NAME', 't' ); - setReadOnly( prng, 'seed', randi.seed ); - setReadOnly( prng, 'PRNG', randi ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); + setReadOnly( prng, 'PRNG', rand ); return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + if ( !isUint32Array( s ) ) { + throw new TypeError( 'invalid argument. Must provide a Uint32Array. Value: `' + s + '`.' ); + } + if ( FLG ) { + s = gcopy( s.length, s, 1, new Uint32Array( s.length ), 1 ); + } + rand.state = s; + } + /** * Returns a pseudorandom number drawn from a Student's t-distribution with bound degrees of freedom `v`. * From 2fe277bffa1b7ab78bd8edee715b37a350f939ea Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 20:23:48 -0700 Subject: [PATCH 1006/1062] Update tests --- .../@stdlib/random/base/t/test/test.js | 57 +++++++++++++++++-- 1 file changed, 52 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/t/test/test.js b/lib/node_modules/@stdlib/random/base/t/test/test.js index 394f677a5b41..675e9e4e7d5e 100644 --- a/lib/node_modules/@stdlib/random/base/t/test/test.js +++ b/lib/node_modules/@stdlib/random/base/t/test/test.js @@ -21,7 +21,7 @@ // MODULES // var tape = require( 'tape' ); -var isInt32Array = require( '@stdlib/assert/is-int32array' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var rt = require( './../lib' ); @@ -34,22 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof rt.factory, 'function', 'has `factory` method' ); + t.equal( typeof rt.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( rt.NAME, 't', 'has `NAME` property' ); + t.equal( rt.NAME, 't', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof rt.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof rt.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isInt32Array( rt.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( rt.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof rt.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( rt.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof rt.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof rt.byteLength, 'number', 'has property' ); t.end(); }); @@ -62,3 +82,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + rt( 3.0 ); + } + // Capture the current state: + state = rt.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( rt( 3.0 ) ); + } + // Set the state: + rt.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( rt( 3.0 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 429f4cb49221fb56a01fa9adad0d7e3236f582c6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 20:29:10 -0700 Subject: [PATCH 1007/1062] Update tests --- .../random/base/t/test/test.factory.js | 768 ++++++++++++++++-- 1 file changed, 692 insertions(+), 76 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/t/test/test.factory.js b/lib/node_modules/@stdlib/random/base/t/test/test.factory.js index ce540fcf7104..0356bf02be37 100644 --- a/lib/node_modules/@stdlib/random/base/t/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/t/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var kstest = require( '@stdlib/stats/kstest' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var isInt32Array = require( '@stdlib/assert/is-int32array' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,76 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var rt; - var r; - var i; - - // When binding distribution parameter... - rt = factory( 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = rt(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameter... - rt = factory(); - for ( i = 0; i < 100; i++ ) { - r = rt( 100.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var seed; - var rt1; - var rt2; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - rt1 = factory( 35.0, { - 'seed': seed - }); - rt2 = factory( 35.0, { - 'seed': seed - }); - - t.notEqual( rt1, rt2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = rt1(); - r2 = rt2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var rt = factory(); - t.equal( rt.NAME, 't', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var rt = factory(); - t.equal( typeof rt.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var rt = factory({ - 'seed': 12345 - }); - t.equal( isInt32Array( rt.seed ), true, 'has `seed` property' ); - t.equal( rt.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if provided a degrees of freedom parameter which is not a positive number (no options)', function test( t ) { var values; var i; @@ -124,7 +56,8 @@ tape( 'the function throws an error if provided a degrees of freedom parameter w '5', null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -153,7 +86,8 @@ tape( 'the function throws an error if provided a degrees of freedom parameter w '5', null, true, - undefined, + false, + void 0, [], {}, function noop() {} @@ -179,7 +113,8 @@ tape( 'the function throws an error if provided an options argument which is not 'abc', null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -206,7 +141,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -224,6 +160,428 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `copy` option which is not a boolean, the function throws an error (other arguments)', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 10.0, { + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error (other arguments)', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 10.0, { + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer (other arguments)', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 10.0, { + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error (other arguments)', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 10.0, { + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error (other arguments)', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory( 10.0, { + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var rt; + var r; + var i; + + // When binding distribution parameter... + rt = factory( 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = rt(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameter... + rt = factory(); + for ( i = 0; i < 100; i++ ) { + r = rt( 100.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var seed; + var rt1; + var rt2; + var r1; + var r2; + var i; + + seed = now(); + + rt1 = factory( 35.0, { + 'seed': seed + }); + rt2 = factory( 35.0, { + 'seed': seed + }); + + t.notEqual( rt1, rt2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = rt1(); + r2 = rt2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var seed; + var rt1; + var rt2; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + rt1 = factory( 35.0, { + 'seed': seed + }); + rt2 = factory( 35.0, { + 'seed': seed + }); + + t.notEqual( rt1, rt2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = rt1(); + r2 = rt2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var rt = factory(); + t.equal( rt.NAME, 't', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var rt = factory(); + t.equal( typeof rt.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var rt = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( rt.seed ), true, 'has property' ); + t.equal( rt.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ now(), now()+1, now()+2, now()+3 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var rt = factory(); + t.equal( typeof rt.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the return function is the generator state', function test( t ) { + var rt = factory(); + t.equal( isUint32Array( rt.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var rt = factory(); + t.equal( typeof rt.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var rt = factory(); + t.equal( typeof rt.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a degrees of freedom parameter equal to `NaN`', function test( t ) { var rt; var r; @@ -253,6 +611,61 @@ tape( 'when called without arguments, the function returns a PRNG that returns ` t.end(); }); +tape( 'if the `state` property is set to a value other than a Uint32Array, an error is thrown', function test( t ) { + var values; + var rt; + var i; + + rt = factory(); + + values = [ + '3', + 3, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws an error when set to '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + rt.state = value; + }; + } +}); + +tape( 'if the `state` property is set to an Uint32Array having an unexpected length, an error is thrown', function test( t ) { + var values; + var rt; + var i; + + rt = factory(); + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 1000 ) + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when set to '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + rt.state = value; + }; + } +}); + tape( 'the function returns a PRNG for generating random numbers from a Student\'s t-distribution', opts, function test( t ) { var threshold; var count; @@ -321,3 +734,206 @@ tape( 'the function returns a PRNG for generating random numbers from a Student\ t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var state; + var arr; + var rt; + var i; + + rt = factory( 10.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + rt(); + } + // Capture the current state: + state = rt.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( rt() ); + } + + // Create another PRNG using the captured state: + rt = factory( 10.0, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( rt(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var shared; + var state; + var rand1; + var rand2; + var arr; + var rt; + var v1; + var v2; + var i; + var j; + + rt = factory( 10.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + rt(); + } + // Capture the current state: + state = rt.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( rt() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory({ + 'state': shared, + 'copy': false + }); + rand2 = factory({ + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1( 10.0 ); + v2 = rand2( 10.0 ); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2( 10.0 ); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1( 10.0 ); + v2 = rand2( 10.0 ); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state (other arguments)', function test( t ) { + var shared; + var state; + var rand1; + var rand2; + var arr; + var rt; + var v1; + var v2; + var i; + var j; + + rt = factory( 10.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + rt(); + } + // Capture the current state: + state = rt.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( rt() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 10.0, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 10.0, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var state; + var arr; + var rt; + var i; + + rt = factory( 10.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + rt(); + } + // Capture the current state: + state = rt.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( rt() ); + } + // Set the state: + rt.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( rt(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 7f7263e6bd1ed6a30bbbd3d45dfccea561f4bffd Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 21:04:07 -0700 Subject: [PATCH 1008/1062] Fix option handling bug --- .../random/base/improved-ziggurat/lib/factory.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js index 339e92737049..c7775bea393e 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js @@ -72,6 +72,7 @@ function factory( options ) { var randn; var state; var seed; + var copy; if ( arguments.length ) { if ( !isObject( options ) ) { throw new TypeError( 'invalid argument. Must provide an object. Value: `' + options + '`.' ); @@ -102,26 +103,31 @@ function factory( options ) { } } } + copy = ( options && options.copy === false ) ? options.copy : true; if ( state === void 0 ) { if ( randu === void 0 ) { if ( seed === void 0 ) { - randi = mt19937(); + randi = mt19937({ + 'copy': copy + }); } else { randi = mt19937({ - 'seed': seed + 'seed': seed, + 'copy': copy }); } randu = randi.normalized; } else { randi = mt19937({ - 'seed': floor( 1.0 + ( UINT32_MAX*randu() ) ) // allows seeding via an externally seeded PRNG + 'seed': floor( 1.0 + ( UINT32_MAX*randu() ) ), // allows seeding via an externally seeded PRNG + 'copy': copy }); seed = null; } } else { randi = mt19937({ 'state': state, - 'copy': ( options.copy === void 0 ) ? true : options.copy + 'copy': copy }); randu = randi.normalized; } From 33463fa9f6d72d8497ab7828887168c0328e82f1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 21:14:06 -0700 Subject: [PATCH 1009/1062] Simplify branching logic --- .../base/improved-ziggurat/lib/factory.js | 46 ++++++++----------- 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js index c7775bea393e..d2f7807a562e 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js @@ -70,14 +70,17 @@ function factory( options ) { var randu; var randi; var randn; - var state; - var seed; - var copy; + var opts; + + opts = { + 'copy': true + }; if ( arguments.length ) { if ( !isObject( options ) ) { throw new TypeError( 'invalid argument. Must provide an object. Value: `' + options + '`.' ); } if ( hasOwnProp( options, 'copy' ) ) { + opts.copy = options.copy; if ( !isBoolean( options.copy ) ) { throw new TypeError( 'invalid option. `copy` option must be a boolean. Option: `' + options.copy + '`.' ); } @@ -90,51 +93,38 @@ function factory( options ) { } // If provided a PRNG, ignore the `state` option, as we don't support getting or setting PRNG state. else if ( hasOwnProp( options, 'state' ) ) { - state = options.state; - if ( !isUint32Array( state ) ) { - throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + state + '`.' ); + opts.state = options.state; + if ( !isUint32Array( options.state ) ) { + throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + options.state + '`.' ); } } // If provided a PRNG, ignore the `seed` option, as a `seed`, by itself, is insufficient to guarantee reproducibility. If provided a state, ignore the `seed` option, as a PRNG state should contain seed information. else if ( hasOwnProp( options, 'seed' ) ) { - seed = options.seed; - if ( seed === void 0 ) { - throw new TypeError( 'invalid option. `seed` option must be either a positive integer less than or equal to the maximum unsigned 32-bit integer or an array-like object containing integer values less than or equal to the maximum unsigned 32-bit integer. Option: `' + seed + '`.' ); + opts.seed = options.seed; + if ( options.seed === void 0 ) { + throw new TypeError( 'invalid option. `seed` option must be either a positive integer less than or equal to the maximum unsigned 32-bit integer or an array-like object containing integer values less than or equal to the maximum unsigned 32-bit integer. Option: `' + options.seed + '`.' ); } } } - copy = ( options && options.copy === false ) ? options.copy : true; - if ( state === void 0 ) { + if ( opts.state === void 0 ) { if ( randu === void 0 ) { - if ( seed === void 0 ) { - randi = mt19937({ - 'copy': copy - }); - } else { - randi = mt19937({ - 'seed': seed, - 'copy': copy - }); - } + randi = mt19937( opts ); randu = randi.normalized; } else { randi = mt19937({ 'seed': floor( 1.0 + ( UINT32_MAX*randu() ) ), // allows seeding via an externally seeded PRNG - 'copy': copy + 'copy': opts.copy }); - seed = null; + opts.seed = null; } } else { - randi = mt19937({ - 'state': state, - 'copy': copy - }); + randi = mt19937( opts ); randu = randi.normalized; } randn = improvedZiggurat( randu, randi ); setReadOnly( randn, 'NAME', 'improved-ziggurat' ); - if ( seed === null ) { + if ( opts.seed === null ) { setReadOnly( randn, 'seed', null ); setReadOnly( randn, 'seedLength', null ); } else { From de3c103b1bfc9f289e32882c2f5c2e6e3f2efcfa Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 21:18:00 -0700 Subject: [PATCH 1010/1062] Fix option handling bug and simplify branching logic --- .../random/base/box-muller/lib/factory.js | 39 ++++++++----------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js b/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js index 657aef9a872a..cdfa1bb35f1b 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js @@ -69,13 +69,17 @@ var getMax = require( './max.js' ); function factory( options ) { var randu; var randn; - var state; - var seed; + var opts; + + opts = { + 'copy': true + }; if ( arguments.length ) { if ( !isObject( options ) ) { throw new TypeError( 'invalid argument. Must provide an object. Value: `' + options + '`.' ); } if ( hasOwnProp( options, 'copy' ) ) { + opts.copy = options.copy; if ( !isBoolean( options.copy ) ) { throw new TypeError( 'invalid option. `copy` option must be a boolean. Option: `' + options.copy + '`.' ); } @@ -88,43 +92,34 @@ function factory( options ) { } // If provided a PRNG, ignore the `state` option, as we don't support getting or setting PRNG state. else if ( hasOwnProp( options, 'state' ) ) { - state = options.state; - if ( !isUint32Array( state ) ) { - throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + state + '`.' ); + opts.state = options.state; + if ( !isUint32Array( options.state ) ) { + throw new TypeError( 'invalid option. `state` option must be a Uint32Array. Option: `' + options.state + '`.' ); } } // If provided a PRNG, ignore the `seed` option, as a `seed`, by itself, is insufficient to guarantee reproducibility. If provided a state, ignore the `seed` option, as a PRNG state should contain seed information. else if ( hasOwnProp( options, 'seed' ) ) { - seed = options.seed; - if ( seed === void 0 ) { - throw new TypeError( 'invalid option. `seed` option must be either a positive integer less than or equal to the maximum unsigned 32-bit integer or an array-like object containing integer values less than or equal to the maximum unsigned 32-bit integer. Option: `' + seed + '`.' ); + opts.seed = options.seed; + if ( options.seed === void 0 ) { + throw new TypeError( 'invalid option. `seed` option must be either a positive integer less than or equal to the maximum unsigned 32-bit integer or an array-like object containing integer values less than or equal to the maximum unsigned 32-bit integer. Option: `' + options.seed + '`.' ); } } } - if ( state === void 0 ) { + if ( opts.state === void 0 ) { if ( randu === void 0 ) { - if ( seed === void 0 ) { - randu = mt19937(); - } else { - randu = mt19937({ - 'seed': seed - }); - } + randu = mt19937( opts ); randu = randu.normalized; } else { - seed = null; + opts.seed = null; } } else { - randu = mt19937({ - 'state': state, - 'copy': ( options.copy === void 0 ) ? true : options.copy - }); + randu = mt19937( opts ); randu = randu.normalized; } randn = randn0( randu ); setReadOnly( randn, 'NAME', 'box-muller' ); - if ( seed === null ) { + if ( opts.seed === null ) { setReadOnly( randn, 'seed', null ); setReadOnly( randn, 'seedLength', null ); } else { From 2d350d220e96e50de3e211ea3d5d3825cd82d1c5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 21:27:08 -0700 Subject: [PATCH 1011/1062] Expose underlying PRNG --- lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js | 2 +- lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js | 2 +- lib/node_modules/@stdlib/random/base/f/lib/factory.js | 2 +- lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js | 2 +- lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js | 2 +- lib/node_modules/@stdlib/random/base/normal/lib/factory.js | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js b/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js index 3bdeb8233a08..4d7ddc277d87 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js @@ -104,7 +104,7 @@ function factory() { setReadWriteAccessor( prng, 'state', getState, setState ); setReadOnlyAccessor( prng, 'stateLength', getStateLength ); setReadOnlyAccessor( prng, 'byteLength', getStateSize ); - setReadOnly( prng, 'PRNG', rand ); + setReadOnly( prng, 'PRNG', rand.PRNG ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js b/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js index 72e2096918b2..6f51db217d5b 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js @@ -104,7 +104,7 @@ function factory() { setReadWriteAccessor( prng, 'state', getState, setState ); setReadOnlyAccessor( prng, 'stateLength', getStateLength ); setReadOnlyAccessor( prng, 'byteLength', getStateSize ); - setReadOnly( prng, 'PRNG', rand ); + setReadOnly( prng, 'PRNG', rand.PRNG ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/f/lib/factory.js b/lib/node_modules/@stdlib/random/base/f/lib/factory.js index 6768e1e10e88..dd1e952c9ef2 100644 --- a/lib/node_modules/@stdlib/random/base/f/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/f/lib/factory.js @@ -104,7 +104,7 @@ function factory() { setReadWriteAccessor( prng, 'state', getState, setState ); setReadOnlyAccessor( prng, 'stateLength', getStateLength ); setReadOnlyAccessor( prng, 'byteLength', getStateSize ); - setReadOnly( prng, 'PRNG', rand ); + setReadOnly( prng, 'PRNG', rand.PRNG ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js b/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js index 9026df2995ee..8f4cd8e6ca96 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js @@ -104,7 +104,7 @@ function factory() { setReadWriteAccessor( prng, 'state', getState, setState ); setReadOnlyAccessor( prng, 'stateLength', getStateLength ); setReadOnlyAccessor( prng, 'byteLength', getStateSize ); - setReadOnly( prng, 'PRNG', rand ); + setReadOnly( prng, 'PRNG', rand.PRNG ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js b/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js index 4ab2c53fd7ce..0eca7ff2ba09 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js @@ -104,7 +104,7 @@ function factory() { setReadWriteAccessor( prng, 'state', getState, setState ); setReadOnlyAccessor( prng, 'stateLength', getStateLength ); setReadOnlyAccessor( prng, 'byteLength', getStateSize ); - setReadOnly( prng, 'PRNG', rand ); + setReadOnly( prng, 'PRNG', rand.PRNG ); return prng; diff --git a/lib/node_modules/@stdlib/random/base/normal/lib/factory.js b/lib/node_modules/@stdlib/random/base/normal/lib/factory.js index 7abc1c638dd6..dbe2669922a7 100644 --- a/lib/node_modules/@stdlib/random/base/normal/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/normal/lib/factory.js @@ -104,7 +104,7 @@ function factory() { setReadWriteAccessor( prng, 'state', getState, setState ); setReadOnlyAccessor( prng, 'stateLength', getStateLength ); setReadOnlyAccessor( prng, 'byteLength', getStateSize ); - setReadOnly( prng, 'PRNG', rand ); + setReadOnly( prng, 'PRNG', rand.PRNG ); return prng; From 69ac4d1cb958e6165269c92718fe73c772bd20ce Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 21:42:11 -0700 Subject: [PATCH 1012/1062] Interface directly with underlying PRNG --- .../random/base/arcsine/lib/factory.js | 4 ++-- .../random/base/bernoulli/lib/factory.js | 4 ++-- .../@stdlib/random/base/beta/lib/factory.js | 3 ++- .../random/base/betaprime/lib/factory.js | 17 ++++++++------- .../random/base/binomial/lib/factory.js | 4 ++-- .../random/base/box-muller/lib/factory.js | 21 ++++++++++--------- .../@stdlib/random/base/cauchy/lib/factory.js | 17 ++++++++------- .../@stdlib/random/base/chi/lib/factory.js | 19 ++++++++++------- 8 files changed, 50 insertions(+), 39 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js b/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js index 1278ef6cb4d9..d7757bd91733 100644 --- a/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/arcsine/lib/factory.js @@ -94,8 +94,6 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( a === void 0 ) { prng = arcsine2; } else { @@ -109,6 +107,8 @@ function factory() { setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; /** diff --git a/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js b/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js index 64d4af711f10..b3c0dffff2e8 100644 --- a/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/bernoulli/lib/factory.js @@ -90,8 +90,6 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( p === void 0 ) { prng = bernoulli2; } else { @@ -105,6 +103,8 @@ function factory() { setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; /** diff --git a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js index acc44b039ce2..498b9418af32 100644 --- a/lib/node_modules/@stdlib/random/base/beta/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/beta/lib/factory.js @@ -136,7 +136,6 @@ function factory() { rand = randu( opts ); } } - rand = rand.normalized; if ( opts.state ) { STATE = opts.state; } else { @@ -161,6 +160,8 @@ function factory() { setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; /** diff --git a/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js b/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js index 4d7ddc277d87..07739740c617 100644 --- a/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js @@ -61,6 +61,7 @@ var betaprime0 = require( './betaprime.js' ); * // returns */ function factory() { + var rgamma; var alpha; var beta; var opts; @@ -69,13 +70,13 @@ function factory() { var err; if ( arguments.length === 0 ) { - rand = gammaFactory(); + rgamma = gammaFactory(); } else if ( arguments.length === 1 ) { opts = arguments[ 0 ]; if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } - rand = gammaFactory( opts ); + rgamma = gammaFactory( opts ); } else { alpha = arguments[ 0 ]; beta = arguments[ 1 ]; @@ -88,9 +89,9 @@ function factory() { if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } - rand = gammaFactory( opts ); + rgamma = gammaFactory( opts ); } else { - rand = gammaFactory(); + rgamma = gammaFactory(); } } if ( alpha === void 0 ) { @@ -98,13 +99,15 @@ function factory() { } else { prng = betaprime1; } + rand = rgamma.PRNG; + setReadOnly( prng, 'NAME', 'betaprime' ); setReadOnlyAccessor( prng, 'seed', getSeed ); setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); setReadWriteAccessor( prng, 'state', getState, setState ); setReadOnlyAccessor( prng, 'stateLength', getStateLength ); setReadOnlyAccessor( prng, 'byteLength', getStateSize ); - setReadOnly( prng, 'PRNG', rand.PRNG ); + setReadOnly( prng, 'PRNG', rand ); return prng; @@ -181,7 +184,7 @@ function factory() { * // returns */ function betaprime1() { - return betaprime0( rand, alpha, beta ); + return betaprime0( rgamma, alpha, beta ); } /** @@ -205,7 +208,7 @@ function factory() { ) { return NaN; } - return betaprime0( rand, alpha, beta ); + return betaprime0( rgamma, alpha, beta ); } } diff --git a/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js b/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js index b1aa9982f98e..815a26f25da8 100644 --- a/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/binomial/lib/factory.js @@ -100,8 +100,6 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( n === void 0 ) { prng = binomial2; } @@ -116,6 +114,8 @@ function factory() { setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; /** diff --git a/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js b/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js index cdfa1bb35f1b..816926ce7403 100644 --- a/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/box-muller/lib/factory.js @@ -69,6 +69,7 @@ var getMax = require( './max.js' ); function factory( options ) { var randu; var randn; + var rand; var opts; opts = { @@ -107,14 +108,14 @@ function factory( options ) { } if ( opts.state === void 0 ) { if ( randu === void 0 ) { - randu = mt19937( opts ); - randu = randu.normalized; + rand = mt19937( opts ); + randu = rand.normalized; } else { opts.seed = null; } } else { - randu = mt19937( opts ); - randu = randu.normalized; + rand = mt19937( opts ); + randu = rand.normalized; } randn = randn0( randu ); @@ -155,7 +156,7 @@ function factory( options ) { * @returns {Uint32Array} seed */ function getSeed() { - return randu.seed; + return rand.seed; } /** @@ -165,7 +166,7 @@ function factory( options ) { * @returns {PositiveInteger} seed length */ function getSeedLength() { - return randu.seedLength; + return rand.seedLength; } /** @@ -175,7 +176,7 @@ function factory( options ) { * @returns {PositiveInteger} state length */ function getStateLength() { - return randu.stateLength; + return rand.stateLength; } /** @@ -185,7 +186,7 @@ function factory( options ) { * @returns {PositiveInteger} state size (in bytes) */ function getStateSize() { - return randu.byteLength; + return rand.byteLength; } /** @@ -195,7 +196,7 @@ function factory( options ) { * @returns {Uint32Array} current state */ function getState() { - return randu.state; + return rand.state; } /** @@ -207,7 +208,7 @@ function factory( options ) { * @throws {Error} must provide a valid state */ function setState( s ) { - randu.state = s; + rand.state = s; } } diff --git a/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js b/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js index 6f51db217d5b..8f3b128f0d38 100644 --- a/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/cauchy/lib/factory.js @@ -62,6 +62,7 @@ var cauchy0 = require( './cauchy.js' ); */ function factory() { var gamma; + var rnorm; var opts; var rand; var prng; @@ -69,13 +70,13 @@ function factory() { var x0; if ( arguments.length === 0 ) { - rand = randn(); + rnorm = randn(); } else if ( arguments.length === 1 ) { opts = arguments[ 0 ]; if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } - rand = randn( opts ); + rnorm = randn( opts ); } else { x0 = arguments[ 0 ]; gamma = arguments[ 1 ]; @@ -88,9 +89,9 @@ function factory() { if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } - rand = randn( opts ); + rnorm = randn( opts ); } else { - rand = randn(); + rnorm = randn(); } } if ( x0 === void 0 ) { @@ -98,13 +99,15 @@ function factory() { } else { prng = cauchy1; } + rand = rnorm.PRNG; + setReadOnly( prng, 'NAME', 'cauchy' ); setReadOnlyAccessor( prng, 'seed', getSeed ); setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); setReadWriteAccessor( prng, 'state', getState, setState ); setReadOnlyAccessor( prng, 'stateLength', getStateLength ); setReadOnlyAccessor( prng, 'byteLength', getStateSize ); - setReadOnly( prng, 'PRNG', rand.PRNG ); + setReadOnly( prng, 'PRNG', rand ); return prng; @@ -181,7 +184,7 @@ function factory() { * // returns */ function cauchy1() { - return cauchy0( rand, x0, gamma ); + return cauchy0( rnorm, x0, gamma ); } /** @@ -208,7 +211,7 @@ function factory() { ) { return NaN; } - return cauchy0( rand, x0, gamma ); + return cauchy0( rnorm, x0, gamma ); } } diff --git a/lib/node_modules/@stdlib/random/base/chi/lib/factory.js b/lib/node_modules/@stdlib/random/base/chi/lib/factory.js index 4596753cecb8..8d441ad42fc0 100644 --- a/lib/node_modules/@stdlib/random/base/chi/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/chi/lib/factory.js @@ -26,7 +26,7 @@ var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ) var isPositive = require( '@stdlib/assert/is-positive-number' ).isPrimitive; var isObject = require( '@stdlib/assert/is-plain-object' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var rchisq = require( '@stdlib/random/base/chisquare' ).factory; +var chisquare = require( '@stdlib/random/base/chisquare' ).factory; var chi0 = require( './chi.js' ); @@ -59,17 +59,18 @@ var chi0 = require( './chi.js' ); * // returns */ function factory() { + var rchisq; var rand; var opts; var prng; var k; if ( arguments.length === 0 ) { - rand = rchisq(); + rchisq = chisquare(); } else if ( arguments.length === 1 && isObject( arguments[ 0 ] ) ) { - rand = rchisq( arguments[ 0 ] ); + rchisq = chisquare( arguments[ 0 ] ); } else { k = arguments[ 0 ]; if ( !isPositive( k ) ) { @@ -80,9 +81,9 @@ function factory() { if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } - rand = rchisq( k, opts ); + rchisq = chisquare( k, opts ); } else { - rand = rchisq( k ); + rchisq = chisquare( k ); } } if ( k === void 0 ) { @@ -90,13 +91,15 @@ function factory() { } else { prng = chi1; } + rand = rchisq.PRNG; + setReadOnly( prng, 'NAME', 'chi' ); setReadOnlyAccessor( prng, 'seed', getSeed ); setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); setReadWriteAccessor( prng, 'state', getState, setState ); setReadOnlyAccessor( prng, 'stateLength', getStateLength ); setReadOnlyAccessor( prng, 'byteLength', getStateSize ); - setReadOnly( prng, 'PRNG', rand.PRNG ); + setReadOnly( prng, 'PRNG', rand ); return prng; @@ -173,7 +176,7 @@ function factory() { * // returns */ function chi1() { - return chi0( rand, k ); + return chi0( rchisq, k ); } /** @@ -194,7 +197,7 @@ function factory() { ) { return NaN; } - return chi0( rand, k ); + return chi0( rchisq, k ); } } From 9b60b1fcb1dc80c112d0855b8e763169d8e2c2f9 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 21:50:40 -0700 Subject: [PATCH 1013/1062] Interface directly with underlying PRNG --- .../random/base/chisquare/lib/factory.js | 19 +++++++++++-------- .../@stdlib/random/base/cosine/lib/factory.js | 4 ++-- .../@stdlib/random/base/erlang/lib/factory.js | 4 ++-- .../random/base/exponential/lib/factory.js | 4 ++-- .../@stdlib/random/base/f/lib/factory.js | 17 ++++++++++------- .../random/base/frechet/lib/factory.js | 4 ++-- .../@stdlib/random/base/gamma/lib/factory.js | 3 ++- .../random/base/geometric/lib/factory.js | 4 ++-- .../@stdlib/random/base/gumbel/lib/factory.js | 4 ++-- .../random/base/hypergeometric/lib/factory.js | 4 ++-- .../base/improved-ziggurat/lib/factory.js | 12 ++++++------ 11 files changed, 43 insertions(+), 36 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js b/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js index fc976d70620e..62b428bc672b 100644 --- a/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/chisquare/lib/factory.js @@ -26,7 +26,7 @@ var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ) var isPositive = require( '@stdlib/assert/is-positive-number' ).isPrimitive; var isObject = require( '@stdlib/assert/is-plain-object' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var rgamma = require( '@stdlib/random/base/gamma' ).factory; +var gamma = require( '@stdlib/random/base/gamma' ).factory; var chisquare0 = require( './chisquare.js' ); @@ -59,17 +59,18 @@ var chisquare0 = require( './chisquare.js' ); * // returns */ function factory() { + var rgamma; var rand; var opts; var prng; var k; if ( arguments.length === 0 ) { - rand = rgamma(); + rgamma = gamma(); } else if ( arguments.length === 1 && isObject( arguments[ 0 ] ) ) { - rand = rgamma( arguments[ 0 ] ); + rgamma = gamma( arguments[ 0 ] ); } else { k = arguments[ 0 ]; if ( !isPositive( k ) ) { @@ -80,9 +81,9 @@ function factory() { if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } - rand = rgamma( k/2.0, 0.5, opts ); + rgamma = gamma( k/2.0, 0.5, opts ); } else { - rand = rgamma( k/2.0, 0.5 ); + rgamma = gamma( k/2.0, 0.5 ); } } if ( k === void 0 ) { @@ -90,13 +91,15 @@ function factory() { } else { prng = chisquare1; } + rand = rgamma.PRNG; + setReadOnly( prng, 'NAME', 'chisquare' ); setReadOnlyAccessor( prng, 'seed', getSeed ); setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); setReadWriteAccessor( prng, 'state', getState, setState ); setReadOnlyAccessor( prng, 'stateLength', getStateLength ); setReadOnlyAccessor( prng, 'byteLength', getStateSize ); - setReadOnly( prng, 'PRNG', rand.PRNG ); + setReadOnly( prng, 'PRNG', rand ); return prng; @@ -173,7 +176,7 @@ function factory() { * // returns */ function chisquare1() { - return chisquare0( rand, k ); + return chisquare0( rgamma, k ); } /** @@ -194,7 +197,7 @@ function factory() { ) { return NaN; } - return chisquare0( rand, k ); + return chisquare0( rgamma, k ); } } diff --git a/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js b/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js index 3d78441bd5b9..fde0c5098e4c 100644 --- a/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/cosine/lib/factory.js @@ -92,8 +92,6 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( mu === void 0 ) { prng = cosine2; } else { @@ -107,6 +105,8 @@ function factory() { setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; /** diff --git a/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js b/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js index 05048ef54986..dfee19c9c495 100644 --- a/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/erlang/lib/factory.js @@ -94,8 +94,6 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( k === void 0 ) { prng = erlang2; } else { @@ -109,6 +107,8 @@ function factory() { setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; /** diff --git a/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js b/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js index d5de910053ff..353689951672 100644 --- a/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/exponential/lib/factory.js @@ -91,8 +91,6 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( lambda === void 0 ) { prng = exponential2; } else { @@ -106,6 +104,8 @@ function factory() { setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; /** diff --git a/lib/node_modules/@stdlib/random/base/f/lib/factory.js b/lib/node_modules/@stdlib/random/base/f/lib/factory.js index dd1e952c9ef2..0fe2a8fec9c2 100644 --- a/lib/node_modules/@stdlib/random/base/f/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/f/lib/factory.js @@ -61,6 +61,7 @@ var f0 = require( './f.js' ); * // returns */ function factory() { + var rchisq; var opts; var rand; var prng; @@ -69,13 +70,13 @@ function factory() { var d2; if ( arguments.length === 0 ) { - rand = chisquare(); + rchisq = chisquare(); } else if ( arguments.length === 1 ) { opts = arguments[ 0 ]; if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } - rand = chisquare( opts ); + rchisq = chisquare( opts ); } else { d1 = arguments[ 0 ]; d2 = arguments[ 1 ]; @@ -88,9 +89,9 @@ function factory() { if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } - rand = chisquare( opts ); + rchisq = chisquare( opts ); } else { - rand = chisquare(); + rchisq = chisquare(); } } if ( d1 === void 0 ) { @@ -98,13 +99,15 @@ function factory() { } else { prng = f1; } + rand = rchisq.PRNG; + setReadOnly( prng, 'NAME', 'f' ); setReadOnlyAccessor( prng, 'seed', getSeed ); setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); setReadWriteAccessor( prng, 'state', getState, setState ); setReadOnlyAccessor( prng, 'stateLength', getStateLength ); setReadOnlyAccessor( prng, 'byteLength', getStateSize ); - setReadOnly( prng, 'PRNG', rand.PRNG ); + setReadOnly( prng, 'PRNG', rand ); return prng; @@ -181,7 +184,7 @@ function factory() { * // returns */ function f1() { - return f0( rand, d1, d2 ); + return f0( rchisq, d1, d2 ); } /** @@ -217,7 +220,7 @@ function factory() { ) { return NaN; } - return f0( rand, d1, d2 ); + return f0( rchisq, d1, d2 ); } } diff --git a/lib/node_modules/@stdlib/random/base/frechet/lib/factory.js b/lib/node_modules/@stdlib/random/base/frechet/lib/factory.js index 135bef3433f2..c62cd6380d7c 100644 --- a/lib/node_modules/@stdlib/random/base/frechet/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/frechet/lib/factory.js @@ -97,8 +97,6 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( alpha === void 0 ) { prng = frechet2; } else { @@ -112,6 +110,8 @@ function factory() { setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; /** diff --git a/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js b/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js index be588feb47ae..c6c39fb386f4 100644 --- a/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/gamma/lib/factory.js @@ -145,7 +145,6 @@ function factory() { rand = randu( opts ); } } - rand = rand.normalized; if ( opts.state ) { STATE = opts.state; } else { @@ -177,6 +176,8 @@ function factory() { setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; /** diff --git a/lib/node_modules/@stdlib/random/base/geometric/lib/factory.js b/lib/node_modules/@stdlib/random/base/geometric/lib/factory.js index 06aa73d9baa6..94bc08f9bb0b 100644 --- a/lib/node_modules/@stdlib/random/base/geometric/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/geometric/lib/factory.js @@ -91,8 +91,6 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( p === void 0 ) { prng = geometric2; } else { @@ -106,6 +104,8 @@ function factory() { setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; /** diff --git a/lib/node_modules/@stdlib/random/base/gumbel/lib/factory.js b/lib/node_modules/@stdlib/random/base/gumbel/lib/factory.js index 4c15526525d2..8541e77f5f73 100644 --- a/lib/node_modules/@stdlib/random/base/gumbel/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/gumbel/lib/factory.js @@ -93,8 +93,6 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( mu === void 0 ) { prng = gumbel2; } else { @@ -108,6 +106,8 @@ function factory() { setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; /** diff --git a/lib/node_modules/@stdlib/random/base/hypergeometric/lib/factory.js b/lib/node_modules/@stdlib/random/base/hypergeometric/lib/factory.js index b316e0d34584..b50245e1251d 100644 --- a/lib/node_modules/@stdlib/random/base/hypergeometric/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/hypergeometric/lib/factory.js @@ -104,8 +104,6 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( N === void 0 ) { prng = hypergeometric2; } else { @@ -119,6 +117,8 @@ function factory() { setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; /** diff --git a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js index d2f7807a562e..0cd806581cf0 100644 --- a/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/improved-ziggurat/lib/factory.js @@ -152,7 +152,7 @@ function factory( options ) { * @returns {Uint32Array} seed */ function getSeed() { - return randu.seed; + return randi.seed; } /** @@ -162,7 +162,7 @@ function factory( options ) { * @returns {PositiveInteger} seed length */ function getSeedLength() { - return randu.seedLength; + return randi.seedLength; } /** @@ -172,7 +172,7 @@ function factory( options ) { * @returns {PositiveInteger} state length */ function getStateLength() { - return randu.stateLength; + return randi.stateLength; } /** @@ -182,7 +182,7 @@ function factory( options ) { * @returns {PositiveInteger} state size (in bytes) */ function getStateSize() { - return randu.byteLength; + return randi.byteLength; } /** @@ -192,7 +192,7 @@ function factory( options ) { * @returns {Uint32Array} current state */ function getState() { - return randu.state; + return randi.state; } /** @@ -204,7 +204,7 @@ function factory( options ) { * @throws {Error} must provide a valid state */ function setState( s ) { - randu.state = s; + randi.state = s; } } From 8be92e20270372d0346852ba4dcb0d2bac254775 Mon Sep 17 00:00:00 2001 From: kgryte Date: Fri, 12 Oct 2018 21:57:24 -0700 Subject: [PATCH 1014/1062] Interface directly with underlying PRNG --- .../@stdlib/random/base/invgamma/lib/factory.js | 17 ++++++++++------- .../random/base/kumaraswamy/lib/factory.js | 4 ++-- .../@stdlib/random/base/laplace/lib/factory.js | 4 ++-- .../@stdlib/random/base/levy/lib/factory.js | 4 ++-- .../@stdlib/random/base/logistic/lib/factory.js | 4 ++-- .../random/base/lognormal/lib/factory.js | 17 ++++++++++------- .../@stdlib/random/base/normal/lib/factory.js | 17 ++++++++++------- .../@stdlib/random/base/poisson/lib/factory.js | 4 ++-- 8 files changed, 40 insertions(+), 31 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js b/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js index 8f4cd8e6ca96..59bd808dfa74 100644 --- a/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/invgamma/lib/factory.js @@ -61,6 +61,7 @@ var invgamma0 = require( './invgamma.js' ); * // returns */ function factory() { + var rgamma; var alpha; var beta; var opts; @@ -69,13 +70,13 @@ function factory() { var err; if ( arguments.length === 0 ) { - rand = gamma(); + rgamma = gamma(); } else if ( arguments.length === 1 ) { opts = arguments[ 0 ]; if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } - rand = gamma( opts ); + rgamma = gamma( opts ); } else { alpha = arguments[ 0 ]; beta = arguments[ 1 ]; @@ -88,9 +89,9 @@ function factory() { if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } - rand = gamma( opts ); + rgamma = gamma( opts ); } else { - rand = gamma(); + rgamma = gamma(); } } if ( alpha === void 0 ) { @@ -98,13 +99,15 @@ function factory() { } else { prng = invgamma1; } + rand = rgamma.PRNG; + setReadOnly( prng, 'NAME', 'invgamma' ); setReadOnlyAccessor( prng, 'seed', getSeed ); setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); setReadWriteAccessor( prng, 'state', getState, setState ); setReadOnlyAccessor( prng, 'stateLength', getStateLength ); setReadOnlyAccessor( prng, 'byteLength', getStateSize ); - setReadOnly( prng, 'PRNG', rand.PRNG ); + setReadOnly( prng, 'PRNG', rand ); return prng; @@ -181,7 +184,7 @@ function factory() { * // returns */ function invgamma1() { - return invgamma0( rand, alpha, beta ); + return invgamma0( rgamma, alpha, beta ); } /** @@ -205,7 +208,7 @@ function factory() { ) { return NaN; } - return invgamma0( rand, alpha, beta ); + return invgamma0( rgamma, alpha, beta ); } } diff --git a/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/factory.js b/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/factory.js index 5074f01f19b5..87418975578f 100644 --- a/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/kumaraswamy/lib/factory.js @@ -93,8 +93,6 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( a === void 0 ) { prng = kumaraswamy2; } else { @@ -108,6 +106,8 @@ function factory() { setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; /** diff --git a/lib/node_modules/@stdlib/random/base/laplace/lib/factory.js b/lib/node_modules/@stdlib/random/base/laplace/lib/factory.js index 4e82faa5d622..d4e8ac433311 100644 --- a/lib/node_modules/@stdlib/random/base/laplace/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/laplace/lib/factory.js @@ -93,8 +93,6 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( mu === void 0 ) { prng = laplace2; } else { @@ -108,6 +106,8 @@ function factory() { setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; /** diff --git a/lib/node_modules/@stdlib/random/base/levy/lib/factory.js b/lib/node_modules/@stdlib/random/base/levy/lib/factory.js index 42872f1739d9..5bf41bc4794d 100644 --- a/lib/node_modules/@stdlib/random/base/levy/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/levy/lib/factory.js @@ -93,8 +93,6 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( mu === void 0 ) { prng = levy2; } else { @@ -108,6 +106,8 @@ function factory() { setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; /** diff --git a/lib/node_modules/@stdlib/random/base/logistic/lib/factory.js b/lib/node_modules/@stdlib/random/base/logistic/lib/factory.js index 0fa9e8f9fcac..d9e4b105b68c 100644 --- a/lib/node_modules/@stdlib/random/base/logistic/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/logistic/lib/factory.js @@ -93,8 +93,6 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( mu === void 0 ) { prng = logistic2; } else { @@ -108,6 +106,8 @@ function factory() { setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; /** diff --git a/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js b/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js index 0eca7ff2ba09..b9c422b29d1a 100644 --- a/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/lognormal/lib/factory.js @@ -62,6 +62,7 @@ var lognormal0 = require( './lognormal.js' ); */ function factory() { var sigma; + var rnorm; var opts; var rand; var prng; @@ -69,13 +70,13 @@ function factory() { var mu; if ( arguments.length === 0 ) { - rand = randn(); + rnorm = randn(); } else if ( arguments.length === 1 ) { opts = arguments[ 0 ]; if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } - rand = randn( opts ); + rnorm = randn( opts ); } else { mu = arguments[ 0 ]; sigma = arguments[ 1 ]; @@ -88,9 +89,9 @@ function factory() { if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } - rand = randn( opts ); + rnorm = randn( opts ); } else { - rand = randn(); + rnorm = randn(); } } if ( mu === void 0 ) { @@ -98,13 +99,15 @@ function factory() { } else { prng = lognormal1; } + rand = rnorm.PRNG; + setReadOnly( prng, 'NAME', 'lognormal' ); setReadOnlyAccessor( prng, 'seed', getSeed ); setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); setReadWriteAccessor( prng, 'state', getState, setState ); setReadOnlyAccessor( prng, 'stateLength', getStateLength ); setReadOnlyAccessor( prng, 'byteLength', getStateSize ); - setReadOnly( prng, 'PRNG', rand.PRNG ); + setReadOnly( prng, 'PRNG', rand ); return prng; @@ -181,7 +184,7 @@ function factory() { * // returns */ function lognormal1() { - return lognormal0( rand, mu, sigma ); + return lognormal0( rnorm, mu, sigma ); } /** @@ -208,7 +211,7 @@ function factory() { ) { return NaN; } - return lognormal0( rand, mu, sigma ); + return lognormal0( rnorm, mu, sigma ); } } diff --git a/lib/node_modules/@stdlib/random/base/normal/lib/factory.js b/lib/node_modules/@stdlib/random/base/normal/lib/factory.js index dbe2669922a7..73620d2de50a 100644 --- a/lib/node_modules/@stdlib/random/base/normal/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/normal/lib/factory.js @@ -62,6 +62,7 @@ var normal0 = require( './normal.js' ); */ function factory() { var sigma; + var rnorm; var opts; var rand; var prng; @@ -69,13 +70,13 @@ function factory() { var mu; if ( arguments.length === 0 ) { - rand = randn(); + rnorm = randn(); } else if ( arguments.length === 1 ) { opts = arguments[ 0 ]; if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } - rand = randn( opts ); + rnorm = randn( opts ); } else { mu = arguments[ 0 ]; sigma = arguments[ 1 ]; @@ -88,9 +89,9 @@ function factory() { if ( !isObject( opts ) ) { throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' ); } - rand = randn( opts ); + rnorm = randn( opts ); } else { - rand = randn(); + rnorm = randn(); } } if ( mu === void 0 ) { @@ -98,13 +99,15 @@ function factory() { } else { prng = normal1; } + rand = rnorm.PRNG; + setReadOnly( prng, 'NAME', 'normal' ); setReadOnlyAccessor( prng, 'seed', getSeed ); setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); setReadWriteAccessor( prng, 'state', getState, setState ); setReadOnlyAccessor( prng, 'stateLength', getStateLength ); setReadOnlyAccessor( prng, 'byteLength', getStateSize ); - setReadOnly( prng, 'PRNG', rand.PRNG ); + setReadOnly( prng, 'PRNG', rand ); return prng; @@ -181,7 +184,7 @@ function factory() { * // returns */ function normal1() { - return normal0( rand, mu, sigma ); + return normal0( rnorm, mu, sigma ); } /** @@ -208,7 +211,7 @@ function factory() { ) { return NaN; } - return normal0( rand, mu, sigma ); + return normal0( rnorm, mu, sigma ); } } diff --git a/lib/node_modules/@stdlib/random/base/poisson/lib/factory.js b/lib/node_modules/@stdlib/random/base/poisson/lib/factory.js index 28b1c49af6a5..6fe0180853ed 100644 --- a/lib/node_modules/@stdlib/random/base/poisson/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/poisson/lib/factory.js @@ -91,8 +91,6 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( lambda === void 0 ) { prng = poisson2; } else { @@ -106,6 +104,8 @@ function factory() { setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; /** From da06cdfeb096f57e3c0e099b51bcc2394209f0a5 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:04:24 -0700 Subject: [PATCH 1015/1062] Fix failing tests --- lib/node_modules/@stdlib/random/sample/lib/factory.js | 4 ++-- .../@stdlib/random/sample/test/test.factory.js | 6 ++++-- lib/node_modules/@stdlib/random/sample/test/test.js | 7 ++++--- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/random/sample/lib/factory.js b/lib/node_modules/@stdlib/random/sample/lib/factory.js index f4b5e9be814c..53bdd1950efe 100644 --- a/lib/node_modules/@stdlib/random/sample/lib/factory.js +++ b/lib/node_modules/@stdlib/random/sample/lib/factory.js @@ -168,8 +168,6 @@ function factory() { } else { rand = randu(); } - rand = rand.normalized; - if ( pool === void 0 ) { fcn = sample1; } else { @@ -183,6 +181,8 @@ function factory() { setReadOnly( fcn, 'seed', rand.seed ); setReadOnly( fcn, 'PRNG', rand ); + rand = rand.normalized; + return fcn; /** diff --git a/lib/node_modules/@stdlib/random/sample/test/test.factory.js b/lib/node_modules/@stdlib/random/sample/test/test.factory.js index 121fb1d5291f..c4db4f1f399f 100644 --- a/lib/node_modules/@stdlib/random/sample/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/sample/test/test.factory.js @@ -23,6 +23,7 @@ var tape = require( 'tape' ); var isNumberArray = require( '@stdlib/assert/is-number-array' ); var isStringArray = require( '@stdlib/assert/is-string-array' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var Float64Array = require( '@stdlib/array/float64' ); var Int32Array = require( '@stdlib/array/int32' ); var Int16Array = require( '@stdlib/array/int16' ); @@ -503,13 +504,14 @@ tape( 'attached to the returned function is the generator seed', function test( var sample = factory({ 'seed': 311 }); - t.equal( typeof sample.seed, 'number', 'has `seed` property' ); + t.equal( isUint32Array( sample.seed ), true, 'has property' ); + t.equal( sample.seed[ 0 ], 311, 'has expected value' ); t.end(); }); tape( 'attached to the returned function is the underlying PRNG', function test( t ) { var sample = factory(); - t.equal( typeof sample.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof sample.PRNG, 'function', 'has property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/sample/test/test.js b/lib/node_modules/@stdlib/random/sample/test/test.js index 6cfbc7bdfd99..d45c329c4047 100644 --- a/lib/node_modules/@stdlib/random/sample/test/test.js +++ b/lib/node_modules/@stdlib/random/sample/test/test.js @@ -21,6 +21,7 @@ // MODULES // var tape = require( 'tape' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var sample = require( './../lib' ); @@ -33,16 +34,16 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a factory function', function test( t ) { - t.equal( typeof sample.factory, 'function', 'has a factory method' ); + t.equal( typeof sample.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( typeof sample.seed, 'number', 'has `seed` property' ); + t.equal( isUint32Array( sample.seed ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof sample.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof sample.PRNG, 'function', 'has property' ); t.end(); }); From 9e34ef4c86cd176d300e76cca0398657d246db5f Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:11:46 -0700 Subject: [PATCH 1016/1062] Fix failing tests --- .../@stdlib/random/shuffle/lib/factory.js | 9 +++++---- .../@stdlib/random/shuffle/test/test.factory.js | 11 +++++++---- lib/node_modules/@stdlib/random/shuffle/test/test.js | 7 ++++--- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/lib/node_modules/@stdlib/random/shuffle/lib/factory.js b/lib/node_modules/@stdlib/random/shuffle/lib/factory.js index 163c8e940963..356942c404bb 100644 --- a/lib/node_modules/@stdlib/random/shuffle/lib/factory.js +++ b/lib/node_modules/@stdlib/random/shuffle/lib/factory.js @@ -68,8 +68,13 @@ function factory( config ) { } else { rand = randu(); } + setReadOnly( shuffle, 'seed', rand.seed ); + setReadOnly( shuffle, 'PRNG', rand ); + rand = rand.normalized; + return shuffle; + /** * Returns a random permutation of elements in `arr`. * @@ -150,10 +155,6 @@ function factory( config ) { } return out; } - - setReadOnly( shuffle, 'seed', rand.seed ); - setReadOnly( shuffle, 'PRNG', rand ); - return shuffle; } diff --git a/lib/node_modules/@stdlib/random/shuffle/test/test.factory.js b/lib/node_modules/@stdlib/random/shuffle/test/test.factory.js index 88b1f1361236..a48f692dc2b7 100644 --- a/lib/node_modules/@stdlib/random/shuffle/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/shuffle/test/test.factory.js @@ -26,6 +26,7 @@ var tape = require( 'tape' ); var constructorName = require( '@stdlib/utils/constructor-name' ); var Int32Array = require( '@stdlib/array/int32' ); var Number = require( '@stdlib/number/ctor' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var factory = require( './../lib/factory.js' ); @@ -47,7 +48,8 @@ tape( 'the function throws an error if provided an invalid option', function tes NaN, null, true, - undefined, + false, + void 0, [], {}, function noop() {} @@ -147,7 +149,8 @@ tape( 'the returned function throws an error if provided an invalid option', fun NaN, null, true, - undefined, + false, + void 0, [], {}, function noop() {} @@ -168,13 +171,13 @@ tape( 'the returned function throws an error if provided an invalid option', fun tape( 'attached to the returned function is the generator seed', function test( t ) { var shuffle = factory(); - t.equal( typeof shuffle.seed, 'number', 'has `seed` property' ); + t.equal( isUint32Array( shuffle.seed ), true, 'has property' ); t.end(); }); tape( 'attached to the returned function is the underlying PRNG', function test( t ) { var shuffle = factory(); - t.equal( typeof shuffle.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof shuffle.PRNG, 'function', 'has property' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/random/shuffle/test/test.js b/lib/node_modules/@stdlib/random/shuffle/test/test.js index 38378f8464dd..8cc1f2725339 100644 --- a/lib/node_modules/@stdlib/random/shuffle/test/test.js +++ b/lib/node_modules/@stdlib/random/shuffle/test/test.js @@ -21,6 +21,7 @@ // MODULES // var tape = require( 'tape' ); +var isUint32Array = require( '@stdlib/assert/is-uint32array' ); var shuffle = require( './../lib' ); @@ -33,16 +34,16 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a factory function', function test( t ) { - t.equal( typeof shuffle.factory, 'function', 'has a factory method' ); + t.equal( typeof shuffle.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( typeof shuffle.seed, 'number', 'has `seed` property' ); + t.equal( isUint32Array( shuffle.seed ), true, 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof shuffle.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof shuffle.PRNG, 'function', 'has property' ); t.end(); }); From dbaf630f1d57f8a6707a35b76cd05c8ab58bf0ba Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:36:30 -0700 Subject: [PATCH 1017/1062] Update benchmarks --- .../base/pareto-type1/benchmark/benchmark.js | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/pareto-type1/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/pareto-type1/benchmark/benchmark.js index 838877a56e81..c2c52e428a80 100644 --- a/lib/node_modules/@stdlib/random/base/pareto-type1/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/pareto-type1/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var alpha; var beta; var rand; @@ -78,3 +78,29 @@ bench( pkg+':factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var alpha; + var beta; + var rand; + var z; + var i; + + alpha = 100.56789; + beta = 55.54321; + rand = pareto1.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( alpha, beta ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From f148ad701d46808cbc1957d837f1d4b0b712d453 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:37:08 -0700 Subject: [PATCH 1018/1062] Add benchmarks --- .../benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/pareto-type1/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/pareto-type1/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/pareto-type1/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..159b6927919d --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/pareto-type1/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 100.5, 55.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 100.5, 55.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 100.5, 55.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 675027811733cbe117f3f9aa7871774d46e4653d Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:38:08 -0700 Subject: [PATCH 1019/1062] Document properties and options --- .../random/base/pareto-type1/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/pareto-type1/docs/repl.txt b/lib/node_modules/@stdlib/random/base/pareto-type1/docs/repl.txt index 609d73584662..264bafb1a17d 100644 --- a/lib/node_modules/@stdlib/random/base/pareto-type1/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/pareto-type1/docs/repl.txt @@ -45,8 +45,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -90,6 +103,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From 8d676bb8fe286770d2b8e63ec56c44764ce34f41 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:39:45 -0700 Subject: [PATCH 1020/1062] Document properties and options --- .../random/base/pareto-type1/README.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/pareto-type1/README.md b/lib/node_modules/@stdlib/random/base/pareto-type1/README.md index 6d9125f635e3..889d3263dfed 100644 --- a/lib/node_modules/@stdlib/random/base/pareto-type1/README.md +++ b/lib/node_modules/@stdlib/random/base/pareto-type1/README.md @@ -97,6 +97,8 @@ r = rand( 3.14, 2.25 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -119,6 +121,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = pareto1( 1.0, 2.0 ); +} + +// Create a new PRNG initialized to the current state of `pareto1`: +rand = pareto1.factory({ + 'state': pareto1.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 1.0, 2.0 ) === pareto1( 1.0, 2.0 ) ); +// returns true +``` + #### pareto1.NAME The generator name. @@ -160,10 +185,84 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### pareto1.seedLength + +Length of generator seed. + +```javascript +var len = pareto1.seedLength; +// returns +``` + +#### pareto1.state + +Writable property for getting and setting the generator state. + +```javascript +var r = pareto1( 2.0, 5.0 ); +// returns + +r = pareto1( 2.0, 5.0 ); +// returns + +// ... + +// Get a copy of the current state: +var state = pareto1.state; +// returns + +r = pareto1( 2.0, 5.0 ); +// returns + +r = pareto1( 2.0, 5.0 ); +// returns + +// Reset the state: +pareto1.state = state; + +// Replay the last two pseudorandom numbers: +r = pareto1( 2.0, 5.0 ); +// returns + +r = pareto1( 2.0, 5.0 ); +// returns + +// ... +``` + +#### pareto1.stateLength + +Length of generator state. + +```javascript +var len = pareto1.stateLength; +// returns +``` + +#### pareto1.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = pareto1.byteLength; +// returns +``` + +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -208,6 +307,8 @@ for ( i = 0; i < 100; i++ ) { [pareto]: https://en.wikipedia.org/wiki/Pareto_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From 6b31fe1d52ebb44be6892ac6c3cc96c49a894861 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:40:44 -0700 Subject: [PATCH 1021/1062] Rename files --- .../random/base/pareto-type1/lib/factory.js | 2 +- .../random/base/pareto-type1/lib/index.js | 2 +- .../pareto-type1/lib/{_pareto.js => main.js} | 20 ++++++++++++------- .../random/base/pareto-type1/lib/pareto.js | 20 +++++++------------ 4 files changed, 22 insertions(+), 22 deletions(-) rename lib/node_modules/@stdlib/random/base/pareto-type1/lib/{_pareto.js => main.js} (78%) diff --git a/lib/node_modules/@stdlib/random/base/pareto-type1/lib/factory.js b/lib/node_modules/@stdlib/random/base/pareto-type1/lib/factory.js index 3d79c299c9d9..08fa0011f16b 100644 --- a/lib/node_modules/@stdlib/random/base/pareto-type1/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/pareto-type1/lib/factory.js @@ -25,7 +25,7 @@ var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); var validate = require( './validate.js' ); -var pareto0 = require( './_pareto.js' ); +var pareto0 = require( './pareto.js' ); // MAIN // diff --git a/lib/node_modules/@stdlib/random/base/pareto-type1/lib/index.js b/lib/node_modules/@stdlib/random/base/pareto-type1/lib/index.js index 24845a831737..33e7b26519ba 100644 --- a/lib/node_modules/@stdlib/random/base/pareto-type1/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/pareto-type1/lib/index.js @@ -51,7 +51,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var pareto1 = require( './pareto.js' ); +var pareto1 = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/pareto-type1/lib/_pareto.js b/lib/node_modules/@stdlib/random/base/pareto-type1/lib/main.js similarity index 78% rename from lib/node_modules/@stdlib/random/base/pareto-type1/lib/_pareto.js rename to lib/node_modules/@stdlib/random/base/pareto-type1/lib/main.js index e7eb4be34694..cfd9afa41161 100644 --- a/lib/node_modules/@stdlib/random/base/pareto-type1/lib/_pareto.js +++ b/lib/node_modules/@stdlib/random/base/pareto-type1/lib/main.js @@ -20,7 +20,7 @@ // MODULES // -var pow = require( '@stdlib/math/base/special/pow' ); +var factory = require( './factory.js' ); // MAIN // @@ -28,17 +28,23 @@ var pow = require( '@stdlib/math/base/special/pow' ); /** * Returns a pseudorandom number drawn from a Pareto (Type I) distribution. * -* @private -* @param {Function} rand - PRNG for uniformly distributed numbers +* @name pareto1 +* @type {Function} * @param {PositiveNumber} alpha - shape parameter * @param {PositiveNumber} beta - scale parameter * @returns {NonNegativeNumber} pseudorandom number +* +* @example +* var v = pareto1( 2.0, 3.0 ); +* // returns +* +* @example +* var v = pareto1( -2.0, 3.0 ); +* // returns NaN */ -function pareto( rand, alpha, beta ) { - return beta / pow( rand(), 1.0/alpha ); -} +var pareto1 = factory(); // EXPORTS // -module.exports = pareto; +module.exports = pareto1; diff --git a/lib/node_modules/@stdlib/random/base/pareto-type1/lib/pareto.js b/lib/node_modules/@stdlib/random/base/pareto-type1/lib/pareto.js index cfd9afa41161..e7eb4be34694 100644 --- a/lib/node_modules/@stdlib/random/base/pareto-type1/lib/pareto.js +++ b/lib/node_modules/@stdlib/random/base/pareto-type1/lib/pareto.js @@ -20,7 +20,7 @@ // MODULES // -var factory = require( './factory.js' ); +var pow = require( '@stdlib/math/base/special/pow' ); // MAIN // @@ -28,23 +28,17 @@ var factory = require( './factory.js' ); /** * Returns a pseudorandom number drawn from a Pareto (Type I) distribution. * -* @name pareto1 -* @type {Function} +* @private +* @param {Function} rand - PRNG for uniformly distributed numbers * @param {PositiveNumber} alpha - shape parameter * @param {PositiveNumber} beta - scale parameter * @returns {NonNegativeNumber} pseudorandom number -* -* @example -* var v = pareto1( 2.0, 3.0 ); -* // returns -* -* @example -* var v = pareto1( -2.0, 3.0 ); -* // returns NaN */ -var pareto1 = factory(); +function pareto( rand, alpha, beta ) { + return beta / pow( rand(), 1.0/alpha ); +} // EXPORTS // -module.exports = pareto1; +module.exports = pareto; From c7ba1e0f8a74c378b6d71760fdab5bf78bd3a22b Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:42:02 -0700 Subject: [PATCH 1022/1062] Add support for getting and setting PRNG state --- .../random/base/pareto-type1/lib/factory.js | 80 ++++++++++++++++++- 1 file changed, 76 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/pareto-type1/lib/factory.js b/lib/node_modules/@stdlib/random/base/pareto-type1/lib/factory.js index 08fa0011f16b..eae1fdf4e381 100644 --- a/lib/node_modules/@stdlib/random/base/pareto-type1/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/pareto-type1/lib/factory.js @@ -21,6 +21,8 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -36,10 +38,14 @@ var pareto0 = require( './pareto.js' ); * @param {PositiveNumber} [alpha] - shape parameter * @param {PositiveNumber} [beta] - scale parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `alpha` must be a positive number * @throws {TypeError} `beta` must be a positive number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -87,19 +93,85 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( alpha === void 0 ) { prng = pareto2; } else { prng = pareto1; } setReadOnly( prng, 'NAME', 'pareto-type1' ); - setReadOnly( prng, 'seed', rand.seed ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + rand.state = s; + } + /** * Returns a pseudorandom number drawn from a Pareto (Type I) distribution with bound parameters. * From 5161b99633b252cc8224c0096c008ea220ac7d2e Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:43:03 -0700 Subject: [PATCH 1023/1062] Update tests --- .../random/base/pareto-type1/test/test.js | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/pareto-type1/test/test.js b/lib/node_modules/@stdlib/random/base/pareto-type1/test/test.js index de581f700f53..ba5217c30f7f 100644 --- a/lib/node_modules/@stdlib/random/base/pareto-type1/test/test.js +++ b/lib/node_modules/@stdlib/random/base/pareto-type1/test/test.js @@ -34,22 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof pareto1.factory, 'function', 'has `factory` method' ); + t.equal( typeof pareto1.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( pareto1.NAME, 'pareto-type1', 'has `NAME` property' ); + t.equal( pareto1.NAME, 'pareto-type1', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof pareto1.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof pareto1.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( pareto1.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( pareto1.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof pareto1.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( pareto1.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof pareto1.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof pareto1.byteLength, 'number', 'has property' ); t.end(); }); @@ -63,3 +83,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + pareto1( 2.0, 1.0 ); + } + // Capture the current state: + state = pareto1.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( pareto1( 2.0, 1.0 ) ); + } + // Set the state: + pareto1.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( pareto1( 2.0, 1.0 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 4f7a882089ace9676ee426fac0bf3a7888ae4c8f Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:45:53 -0700 Subject: [PATCH 1024/1062] Update tests --- .../base/pareto-type1/test/test.factory.js | 500 +++++++++++++++--- 1 file changed, 425 insertions(+), 75 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/pareto-type1/test/test.factory.js b/lib/node_modules/@stdlib/random/base/pareto-type1/test/test.factory.js index 243c74dca445..8c5a644a072e 100644 --- a/lib/node_modules/@stdlib/random/base/pareto-type1/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/pareto-type1/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var kstest = require( '@stdlib/stats/kstest' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,76 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var pareto1; - var r; - var i; - - // When binding distribution parameters... - pareto1 = factory( 2.0, 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = pareto1(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - pareto1 = factory(); - for ( i = 0; i < 100; i++ ) { - r = pareto1( 2.5, 2.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var pareto1a; - var pareto1b; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - pareto1a = factory( 1.0, 1.0, { - 'seed': seed - }); - pareto1b = factory( 1.0, 1.0, { - 'seed': seed - }); - - t.notEqual( pareto1a, pareto1b, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = pareto1a(); - r2 = pareto1b(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var pareto1 = factory(); - t.equal( pareto1.NAME, 'pareto-type1', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var pareto1 = factory(); - t.equal( typeof pareto1.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var pareto1 = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( pareto1.seed ), true, 'has `seed` property' ); - t.equal( pareto1.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if provided a shape argument which is not a positive number', function test( t ) { var values; var i; @@ -124,7 +56,8 @@ tape( 'the function throws an error if provided a shape argument which is not a '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -153,7 +86,8 @@ tape( 'the function throws an error if provided a scale argument which is not a '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -181,7 +115,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -208,7 +143,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -226,6 +162,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var pareto1; + var r; + var i; + + // When binding distribution parameters... + pareto1 = factory( 2.0, 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = pareto1(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + pareto1 = factory(); + for ( i = 0; i < 100; i++ ) { + r = pareto1( 2.5, 2.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var pareto1a; + var pareto1b; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + pareto1a = factory( 1.0, 1.0, { + 'seed': seed + }); + pareto1b = factory( 1.0, 1.0, { + 'seed': seed + }); + + t.notEqual( pareto1a, pareto1b, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = pareto1a(); + r2 = pareto1b(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var pareto1a; + var pareto1b; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + pareto1a = factory( 1.0, 1.0, { + 'seed': seed + }); + pareto1b = factory( 1.0, 1.0, { + 'seed': seed + }); + + t.notEqual( pareto1a, pareto1b, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = pareto1a(); + r2 = pareto1b(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var pareto1 = factory(); + t.equal( pareto1.NAME, 'pareto-type1', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var pareto1 = factory(); + t.equal( typeof pareto1.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var pareto1 = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( pareto1.seed ), true, 'has property' ); + t.equal( pareto1.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var pareto1 = factory(); + t.equal( typeof pareto1.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var pareto1 = factory(); + t.equal( isUint32Array( pareto1.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var pareto1 = factory(); + t.equal( typeof pareto1.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var pareto1 = factory(); + t.equal( typeof pareto1.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` if provided a first argument which is `NaN`', function test( t ) { var pareto1; var r; @@ -359,3 +576,136 @@ tape( 'the function returns a PRNG for generating random numbers from a Pareto ( t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var pareto1; + var state; + var arr; + var i; + + pareto1 = factory( 2.1, 1.2 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + pareto1(); + } + // Capture the current state: + state = pareto1.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( pareto1() ); + } + + // Create another PRNG using the captured state: + pareto1 = factory( 2.1, 1.2, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( pareto1(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var pareto1; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + pareto1 = factory( 2.1, 1.2 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + pareto1(); + } + // Capture the current state: + state = pareto1.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( pareto1() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 2.1, 1.2, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 2.1, 1.2, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var pareto1; + var state; + var arr; + var i; + + pareto1 = factory( 2.1, 1.2 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + pareto1(); + } + // Capture the current state: + state = pareto1.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( pareto1() ); + } + // Set the state: + pareto1.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( pareto1(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 26e96712e9069996c243d336fcad866f0078cc47 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:47:03 -0700 Subject: [PATCH 1025/1062] Update benchmarks --- .../base/rayleigh/benchmark/benchmark.js | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/rayleigh/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/rayleigh/benchmark/benchmark.js index 9d9a9f3e1e62..87dd6206eb31 100644 --- a/lib/node_modules/@stdlib/random/base/rayleigh/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/rayleigh/benchmark/benchmark.js @@ -51,7 +51,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var sigma; var rand; var z; @@ -74,3 +74,27 @@ bench( pkg+':factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var sigma; + var rand; + var z; + var i; + + sigma = 10.0; + rand = rayleigh.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( sigma ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 87ca9f61ab2780c4d042cdb98cbf8049c4dd42b2 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:47:45 -0700 Subject: [PATCH 1026/1062] Add benchmarks --- .../rayleigh/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/rayleigh/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/rayleigh/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/rayleigh/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..c0a06e776620 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/rayleigh/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 10.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 10.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 10.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 0614df463671e887db10eaf84e1f704bee7dd84f Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:48:41 -0700 Subject: [PATCH 1027/1062] Document properties and options --- .../random/base/rayleigh/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/rayleigh/docs/repl.txt b/lib/node_modules/@stdlib/random/base/rayleigh/docs/repl.txt index 41f3baca7976..7d130be1938b 100644 --- a/lib/node_modules/@stdlib/random/base/rayleigh/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/rayleigh/docs/repl.txt @@ -37,8 +37,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -82,6 +95,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 5.0 ) + + > r = {{alias}}( 5.0 ) + + > r = {{alias}}( 5.0 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 5.0 ) + + > r = {{alias}}( 5.0 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 5.0 ) + + > r = {{alias}}( 5.0 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From 1f8d8e0fdc8432078d0fe5e315af88b124632466 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:50:08 -0700 Subject: [PATCH 1028/1062] Document properties and options --- .../@stdlib/random/base/rayleigh/README.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/rayleigh/README.md b/lib/node_modules/@stdlib/random/base/rayleigh/README.md index d06a17c5a4ad..ae7590789ea4 100644 --- a/lib/node_modules/@stdlib/random/base/rayleigh/README.md +++ b/lib/node_modules/@stdlib/random/base/rayleigh/README.md @@ -87,6 +87,8 @@ r = rand( 3.14 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -109,6 +111,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = rayleigh( 5.0 ); +} + +// Create a new PRNG initialized to the current state of `rayleigh`: +rand = rayleigh.factory({ + 'state': rayleigh.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 5.0 ) === rayleigh( 5.0 ) ); +// returns true +``` + #### rayleigh.NAME The generator name. @@ -150,10 +175,84 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### rayleigh.seedLength + +Length of generator seed. + +```javascript +var len = rayleigh.seedLength; +// returns +``` + +#### rayleigh.state + +Writable property for getting and setting the generator state. + +```javascript +var r = rayleigh( 5.0 ); +// returns + +r = rayleigh( 5.0 ); +// returns + +// ... + +// Get a copy of the current state: +var state = rayleigh.state; +// returns + +r = rayleigh( 5.0 ); +// returns + +r = rayleigh( 5.0 ); +// returns + +// Reset the state: +rayleigh.state = state; + +// Replay the last two pseudorandom numbers: +r = rayleigh( 5.0 ); +// returns + +r = rayleigh( 5.0 ); +// returns + +// ... +``` + +#### rayleigh.stateLength + +Length of generator state. + +```javascript +var len = rayleigh.stateLength; +// returns +``` + +#### rayleigh.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = rayleigh.byteLength; +// returns +``` + +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -198,6 +297,8 @@ for ( i = 0; i < 100; i++ ) { [rayleigh]: https://en.wikipedia.org/wiki/Rayleigh_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From 81a7cede799d199c57cc96f2f8bfce53656017e0 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:52:47 -0700 Subject: [PATCH 1029/1062] Rename files and add support for getting and setting PRNG state --- .../random/base/rayleigh/lib/factory.js | 82 +++++++++++++++++-- .../@stdlib/random/base/rayleigh/lib/index.js | 2 +- .../rayleigh/lib/{_rayleigh.js => main.js} | 25 ++++-- .../random/base/rayleigh/lib/rayleigh.js | 25 ++---- 4 files changed, 103 insertions(+), 31 deletions(-) rename lib/node_modules/@stdlib/random/base/rayleigh/lib/{_rayleigh.js => main.js} (68%) diff --git a/lib/node_modules/@stdlib/random/base/rayleigh/lib/factory.js b/lib/node_modules/@stdlib/random/base/rayleigh/lib/factory.js index a2aa59d635ea..8bdc77044907 100644 --- a/lib/node_modules/@stdlib/random/base/rayleigh/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/rayleigh/lib/factory.js @@ -21,11 +21,13 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isPositive = require( '@stdlib/assert/is-positive-number' ).isPrimitive; var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var rayleigh0 = require( './_rayleigh.js' ); +var rayleigh0 = require( './rayleigh.js' ); // MAIN // @@ -35,9 +37,13 @@ var rayleigh0 = require( './_rayleigh.js' ); * * @param {PositiveNumber} [sigma] - scale parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `sigma` must be a positive number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -85,19 +91,85 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( sigma === void 0 ) { prng = rayleigh2; } else { prng = rayleigh1; } setReadOnly( prng, 'NAME', 'rayleigh' ); - setReadOnly( prng, 'seed', rand.seed ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + rand.state = s; + } + /** * Returns a pseudorandom number from a Rayleigh distribution with bound scale parameter `sigma`. * diff --git a/lib/node_modules/@stdlib/random/base/rayleigh/lib/index.js b/lib/node_modules/@stdlib/random/base/rayleigh/lib/index.js index 87762d235266..316624747214 100644 --- a/lib/node_modules/@stdlib/random/base/rayleigh/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/rayleigh/lib/index.js @@ -51,7 +51,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var rayleigh = require( './rayleigh.js' ); +var rayleigh = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/rayleigh/lib/_rayleigh.js b/lib/node_modules/@stdlib/random/base/rayleigh/lib/main.js similarity index 68% rename from lib/node_modules/@stdlib/random/base/rayleigh/lib/_rayleigh.js rename to lib/node_modules/@stdlib/random/base/rayleigh/lib/main.js index 40da0583c904..931f72e1eb56 100644 --- a/lib/node_modules/@stdlib/random/base/rayleigh/lib/_rayleigh.js +++ b/lib/node_modules/@stdlib/random/base/rayleigh/lib/main.js @@ -20,23 +20,32 @@ // MODULES // -var sqrt = require( '@stdlib/math/base/special/sqrt' ); -var ln = require( '@stdlib/math/base/special/ln' ); +var factory = require( './factory.js' ); // MAIN // /** -* Returns a pseudorandom number from a Rayleigh distribution with scale parameter `sigma`. +* Returns a pseudorandom number drawn from a Rayleigh distribution with scale parameter `sigma`. * -* @private -* @param {Function} rand - PRNG for generating uniformly distributed numbers +* @name rayleigh +* @type {Function} * @param {PositiveNumber} sigma - scale parameter * @returns {NonNegativeNumber} pseudorandom number +* +* @example +* var v = rayleigh( 3.0 ); +* // returns +* +* @example +* var v = rayleigh( 0.0 ); +* // returns NaN +* +* @example +* var v = rayleigh( NaN ); +* // returns NaN */ -function rayleigh( rand, sigma ) { - return sigma * sqrt( -2.0*ln( rand() ) ); -} +var rayleigh = factory(); // EXPORTS // diff --git a/lib/node_modules/@stdlib/random/base/rayleigh/lib/rayleigh.js b/lib/node_modules/@stdlib/random/base/rayleigh/lib/rayleigh.js index 931f72e1eb56..40da0583c904 100644 --- a/lib/node_modules/@stdlib/random/base/rayleigh/lib/rayleigh.js +++ b/lib/node_modules/@stdlib/random/base/rayleigh/lib/rayleigh.js @@ -20,32 +20,23 @@ // MODULES // -var factory = require( './factory.js' ); +var sqrt = require( '@stdlib/math/base/special/sqrt' ); +var ln = require( '@stdlib/math/base/special/ln' ); // MAIN // /** -* Returns a pseudorandom number drawn from a Rayleigh distribution with scale parameter `sigma`. +* Returns a pseudorandom number from a Rayleigh distribution with scale parameter `sigma`. * -* @name rayleigh -* @type {Function} +* @private +* @param {Function} rand - PRNG for generating uniformly distributed numbers * @param {PositiveNumber} sigma - scale parameter * @returns {NonNegativeNumber} pseudorandom number -* -* @example -* var v = rayleigh( 3.0 ); -* // returns -* -* @example -* var v = rayleigh( 0.0 ); -* // returns NaN -* -* @example -* var v = rayleigh( NaN ); -* // returns NaN */ -var rayleigh = factory(); +function rayleigh( rand, sigma ) { + return sigma * sqrt( -2.0*ln( rand() ) ); +} // EXPORTS // From 52d98047ef81dc97b79c3f3571c5d6608a710ace Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:53:54 -0700 Subject: [PATCH 1030/1062] Update tests --- .../@stdlib/random/base/rayleigh/test/test.js | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/rayleigh/test/test.js b/lib/node_modules/@stdlib/random/base/rayleigh/test/test.js index 937f6e271049..4f534016dfed 100644 --- a/lib/node_modules/@stdlib/random/base/rayleigh/test/test.js +++ b/lib/node_modules/@stdlib/random/base/rayleigh/test/test.js @@ -34,22 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof rayleigh.factory, 'function', 'has `factory` method' ); + t.equal( typeof rayleigh.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( rayleigh.NAME, 'rayleigh', 'has `NAME` property' ); + t.equal( rayleigh.NAME, 'rayleigh', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof rayleigh.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof rayleigh.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( rayleigh.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( rayleigh.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof rayleigh.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( rayleigh.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof rayleigh.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof rayleigh.byteLength, 'number', 'has property' ); t.end(); }); @@ -63,3 +83,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + rayleigh( 3.14 ); + } + // Capture the current state: + state = rayleigh.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( rayleigh( 3.14 ) ); + } + // Set the state: + rayleigh.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( rayleigh( 3.14 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From ac0fa4593c3ec827ab5bb8184e2c17429901b4d1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:56:51 -0700 Subject: [PATCH 1031/1062] Update tests --- .../random/base/rayleigh/test/test.factory.js | 500 +++++++++++++++--- 1 file changed, 425 insertions(+), 75 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/rayleigh/test/test.factory.js b/lib/node_modules/@stdlib/random/base/rayleigh/test/test.factory.js index 00049d7c43db..023250c8d355 100644 --- a/lib/node_modules/@stdlib/random/base/rayleigh/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/rayleigh/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var kstest = require( '@stdlib/stats/kstest' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,76 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var rayleigh; - var r; - var i; - - // When binding distribution parameter... - rayleigh = factory( 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = rayleigh(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameter... - rayleigh = factory(); - for ( i = 0; i < 100; i++ ) { - r = rayleigh( 10.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var rayleigh1; - var rayleigh2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - rayleigh1 = factory( 3.5, { - 'seed': seed - }); - rayleigh2 = factory( 3.5, { - 'seed': seed - }); - - t.notEqual( rayleigh1, rayleigh2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = rayleigh1(); - r2 = rayleigh2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var rayleigh = factory(); - t.equal( rayleigh.NAME, 'rayleigh', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var rayleigh = factory(); - t.equal( typeof rayleigh.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var rayleigh = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( rayleigh.seed ), true, 'has `seed` property' ); - t.equal( rayleigh.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if provided a scale parameter which is not a positive number (no options)', function test( t ) { var values; var i; @@ -124,7 +56,8 @@ tape( 'the function throws an error if provided a scale parameter which is not a '5', null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -153,7 +86,8 @@ tape( 'the function throws an error if provided a scale parameter which is not a '5', null, true, - undefined, + false, + void 0, [], {}, function noop() {} @@ -179,7 +113,8 @@ tape( 'the function throws an error if provided an options argument which is not 'abc', null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -206,7 +141,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -224,6 +160,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var rayleigh; + var r; + var i; + + // When binding distribution parameter... + rayleigh = factory( 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = rayleigh(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameter... + rayleigh = factory(); + for ( i = 0; i < 100; i++ ) { + r = rayleigh( 10.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var rayleigh1; + var rayleigh2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + rayleigh1 = factory( 3.5, { + 'seed': seed + }); + rayleigh2 = factory( 3.5, { + 'seed': seed + }); + + t.notEqual( rayleigh1, rayleigh2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = rayleigh1(); + r2 = rayleigh2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var rayleigh1; + var rayleigh2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + rayleigh1 = factory( 3.5, { + 'seed': seed + }); + rayleigh2 = factory( 3.5, { + 'seed': seed + }); + + t.notEqual( rayleigh1, rayleigh2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = rayleigh1(); + r2 = rayleigh2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var rayleigh = factory(); + t.equal( rayleigh.NAME, 'rayleigh', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var rayleigh = factory(); + t.equal( typeof rayleigh.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var rayleigh = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( rayleigh.seed ), true, 'has property' ); + t.equal( rayleigh.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var rayleigh = factory(); + t.equal( typeof rayleigh.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var rayleigh = factory(); + t.equal( isUint32Array( rayleigh.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var rayleigh = factory(); + t.equal( typeof rayleigh.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var rayleigh = factory(); + t.equal( typeof rayleigh.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` when provided a scale parameter equal to `NaN`', function test( t ) { var rayleigh; var r; @@ -321,3 +538,136 @@ tape( 'the function returns a PRNG for generating random numbers from an Rayleig t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var rayleigh; + var state; + var arr; + var i; + + rayleigh = factory( 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + rayleigh(); + } + // Capture the current state: + state = rayleigh.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( rayleigh() ); + } + + // Create another PRNG using the captured state: + rayleigh = factory( 3.14, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( rayleigh(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var rayleigh; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + rayleigh = factory( 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + rayleigh(); + } + // Capture the current state: + state = rayleigh.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( rayleigh() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 3.14, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 3.14, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var rayleigh; + var state; + var arr; + var i; + + rayleigh = factory( 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + rayleigh(); + } + // Capture the current state: + state = rayleigh.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( rayleigh() ); + } + // Set the state: + rayleigh.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( rayleigh(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 8b9d0f881cd994076547bd1ec3ae9fabd452df5d Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:57:51 -0700 Subject: [PATCH 1032/1062] Update benchmarks --- .../base/triangular/benchmark/benchmark.js | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/triangular/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/triangular/benchmark/benchmark.js index d319c1ef64df..6b0b043f83a7 100644 --- a/lib/node_modules/@stdlib/random/base/triangular/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/triangular/benchmark/benchmark.js @@ -54,7 +54,7 @@ bench( pkg, function benchmark( assert ) { assert.end(); }); -bench( pkg+':factory', function benchmark( assert ) { +bench( pkg+'::factory', function benchmark( assert ) { var rand; var a; var b; @@ -81,3 +81,31 @@ bench( pkg+':factory', function benchmark( assert ) { assert.pass( 'benchmark finished' ); assert.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( assert ) { + var rand; + var a; + var b; + var c; + var z; + var i; + + a = 200.0; + b = 440.0; + c = 383.5; + rand = triangular.factory(); + + assert.tic(); + for ( i = 0; i < assert.iterations; i++ ) { + z = rand( a, b, c ); + if ( isnan( z ) ) { + assert.fail( 'should not return NaN' ); + } + } + assert.toc(); + if ( isnan( z ) ) { + assert.fail( 'should not return NaN' ); + } + assert.pass( 'benchmark finished' ); + assert.end(); +}); From 8a7193ac98b81d6d7cf6d8cfe5cba4c20e63b9ed Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:58:40 -0700 Subject: [PATCH 1033/1062] Add benchmarks --- .../triangular/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/triangular/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/triangular/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/triangular/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..0a85cde94856 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/triangular/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 200.0, 440.0, 383.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 200.0, 440.0, 383.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 200.0, 440.0, 383.5 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 209b8fd7c583350e1796673b65b2558a22340ae6 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 01:59:51 -0700 Subject: [PATCH 1034/1062] Document properties and options --- .../random/base/triangular/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/triangular/docs/repl.txt b/lib/node_modules/@stdlib/random/base/triangular/docs/repl.txt index 5c81ba88c3f5..44f07670b260 100644 --- a/lib/node_modules/@stdlib/random/base/triangular/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/triangular/docs/repl.txt @@ -51,8 +51,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -96,6 +109,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 0.0, 1.0, 0.5 ) + + > r = {{alias}}( 0.0, 1.0, 0.5 ) + + > r = {{alias}}( 0.0, 1.0, 0.5 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 0.0, 1.0, 0.5 ) + + > r = {{alias}}( 0.0, 1.0, 0.5 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 0.0, 1.0, 0.5 ) + + > r = {{alias}}( 0.0, 1.0, 0.5 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From de5424eed3b1b3840f0c37543f01ef18642cf5e4 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:01:51 -0700 Subject: [PATCH 1035/1062] Document properties and options --- .../@stdlib/random/base/triangular/README.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/triangular/README.md b/lib/node_modules/@stdlib/random/base/triangular/README.md index 5c77361ef3f4..a4c86fcfb4bf 100644 --- a/lib/node_modules/@stdlib/random/base/triangular/README.md +++ b/lib/node_modules/@stdlib/random/base/triangular/README.md @@ -97,6 +97,8 @@ r = rand( -2.0, 2.0, 0.1 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -119,6 +121,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = triangular( 0.0, 1.0, 0.5 ); +} + +// Create a new PRNG initialized to the current state of `triangular`: +rand = triangular.factory({ + 'state': triangular.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 0.0, 1.0, 0.5 ) === triangular( 0.0, 1.0, 0.5 ) ); +// returns true +``` + #### triangular.NAME The generator name. @@ -160,10 +185,84 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### triangular.seedLength + +Length of generator seed. + +```javascript +var len = triangular.seedLength; +// returns +``` + +#### triangular.state + +Writable property for getting and setting the generator state. + +```javascript +var r = triangular( 0.0, 1.0, 0.5 ); +// returns + +r = triangular( 0.0, 1.0, 0.5 ); +// returns + +// ... + +// Get a copy of the current state: +var state = triangular.state; +// returns + +r = triangular( 0.0, 1.0, 0.5 ); +// returns + +r = triangular( 0.0, 1.0, 0.5 ); +// returns + +// Reset the state: +triangular.state = state; + +// Replay the last two pseudorandom numbers: +r = triangular( 0.0, 1.0, 0.5 ); +// returns + +r = triangular( 0.0, 1.0, 0.5 ); +// returns + +// ... +``` + +#### triangular.stateLength + +Length of generator state. + +```javascript +var len = triangular.stateLength; +// returns +``` + +#### triangular.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = triangular.byteLength; +// returns +``` + +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -208,6 +307,8 @@ for ( i = 0; i < 100; i++ ) { [triangular]: https://en.wikipedia.org/wiki/Triangular_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From 3e1553a0e25eca2ea79ed5843f165eb5eadf6356 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:02:43 -0700 Subject: [PATCH 1036/1062] Rename files --- .../random/base/triangular/lib/factory.js | 2 +- .../random/base/triangular/lib/index.js | 2 +- .../lib/{_triangular.js => main.js} | 28 +++++++------------ .../random/base/triangular/lib/triangular.js | 28 ++++++++++++------- 4 files changed, 30 insertions(+), 30 deletions(-) rename lib/node_modules/@stdlib/random/base/triangular/lib/{_triangular.js => main.js} (67%) diff --git a/lib/node_modules/@stdlib/random/base/triangular/lib/factory.js b/lib/node_modules/@stdlib/random/base/triangular/lib/factory.js index c8535770af13..3f940c331a61 100644 --- a/lib/node_modules/@stdlib/random/base/triangular/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/triangular/lib/factory.js @@ -25,7 +25,7 @@ var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); var validate = require( './validate.js' ); -var triangular0 = require( './_triangular.js' ); +var triangular0 = require( './triangular.js' ); // MAIN // diff --git a/lib/node_modules/@stdlib/random/base/triangular/lib/index.js b/lib/node_modules/@stdlib/random/base/triangular/lib/index.js index d5e529bdc976..e9514d0f139e 100644 --- a/lib/node_modules/@stdlib/random/base/triangular/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/triangular/lib/index.js @@ -51,7 +51,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var triangular = require( './triangular.js' ); +var triangular = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/triangular/lib/_triangular.js b/lib/node_modules/@stdlib/random/base/triangular/lib/main.js similarity index 67% rename from lib/node_modules/@stdlib/random/base/triangular/lib/_triangular.js rename to lib/node_modules/@stdlib/random/base/triangular/lib/main.js index 5464ca07669f..facf00b3ddb9 100644 --- a/lib/node_modules/@stdlib/random/base/triangular/lib/_triangular.js +++ b/lib/node_modules/@stdlib/random/base/triangular/lib/main.js @@ -20,34 +20,26 @@ // MODULES // -var sqrt = require( '@stdlib/math/base/special/sqrt' ); +var factory = require( './factory.js' ); // MAIN // -/** -* Returns a pseudorandom number drawn from a triangular distribution with minimum support `a`, maximum support `b` and mode `c`. +/* +* Returns a pseudorandom number drawn from a triangular distribution with minimum support `a`, maximum support `b`, and mode `c`. * -* @private -* @param {Function} rand - PRNG for generating uniformly distributed numbers +* @name triangular +* @type {Function} * @param {number} a - minimum support * @param {number} b - maximum support * @param {number} c - mode * @returns {number} pseudorandom number +* +* @example +* var v = triangular( 0.0, 1.0, 0.5 ); +* // returns */ -function triangular( rand, a, b, c ) { - var fc; - var x; - var u; - fc = (c - a) / (b - a); - u = rand(); - if ( u < fc ) { - x = (b - a) * (c - a); - return a + sqrt( x * u ); - } - x = (b - a) * (b - c); - return b - sqrt( x * (1.0 - u) ); -} +var triangular = factory(); // EXPORTS // diff --git a/lib/node_modules/@stdlib/random/base/triangular/lib/triangular.js b/lib/node_modules/@stdlib/random/base/triangular/lib/triangular.js index facf00b3ddb9..5464ca07669f 100644 --- a/lib/node_modules/@stdlib/random/base/triangular/lib/triangular.js +++ b/lib/node_modules/@stdlib/random/base/triangular/lib/triangular.js @@ -20,26 +20,34 @@ // MODULES // -var factory = require( './factory.js' ); +var sqrt = require( '@stdlib/math/base/special/sqrt' ); // MAIN // -/* -* Returns a pseudorandom number drawn from a triangular distribution with minimum support `a`, maximum support `b`, and mode `c`. +/** +* Returns a pseudorandom number drawn from a triangular distribution with minimum support `a`, maximum support `b` and mode `c`. * -* @name triangular -* @type {Function} +* @private +* @param {Function} rand - PRNG for generating uniformly distributed numbers * @param {number} a - minimum support * @param {number} b - maximum support * @param {number} c - mode * @returns {number} pseudorandom number -* -* @example -* var v = triangular( 0.0, 1.0, 0.5 ); -* // returns */ -var triangular = factory(); +function triangular( rand, a, b, c ) { + var fc; + var x; + var u; + fc = (c - a) / (b - a); + u = rand(); + if ( u < fc ) { + x = (b - a) * (c - a); + return a + sqrt( x * u ); + } + x = (b - a) * (b - c); + return b - sqrt( x * (1.0 - u) ); +} // EXPORTS // From 748f7774e5561dbe8613e3a755bb7b18ea80e496 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:04:31 -0700 Subject: [PATCH 1037/1062] Add support for getting and setting PRNG state --- .../random/base/triangular/lib/factory.js | 80 ++++++++++++++++++- 1 file changed, 76 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/triangular/lib/factory.js b/lib/node_modules/@stdlib/random/base/triangular/lib/factory.js index 3f940c331a61..bb25dc7b11cf 100644 --- a/lib/node_modules/@stdlib/random/base/triangular/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/triangular/lib/factory.js @@ -21,6 +21,8 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -37,12 +39,16 @@ var triangular0 = require( './triangular.js' ); * @param {number} [b] - maximum support * @param {number} [c] - mode * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `a` must be a number * @throws {TypeError} `b` must be a number * @throws {TypeError} `c` must be a number * @throws {RangeError} arguments must satisfy `a <= c <= b` * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -92,19 +98,85 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( a === void 0 ) { prng = triangular2; } else { prng = triangular1; } setReadOnly( prng, 'NAME', 'triangular' ); - setReadOnly( prng, 'seed', rand.seed ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + rand.state = s; + } + /** * Returns a pseudorandom number drawn from a triangular distribution with bound parameters. * From d7c682fb0db8c86c239d0bdc7c53b4793d4beb57 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:05:32 -0700 Subject: [PATCH 1038/1062] Update tests --- .../random/base/triangular/test/test.js | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/triangular/test/test.js b/lib/node_modules/@stdlib/random/base/triangular/test/test.js index ded06c1499e3..083cbe7e8f97 100644 --- a/lib/node_modules/@stdlib/random/base/triangular/test/test.js +++ b/lib/node_modules/@stdlib/random/base/triangular/test/test.js @@ -34,22 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof triangular.factory, 'function', 'has `factory` method' ); + t.equal( typeof triangular.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( triangular.NAME, 'triangular', 'has `NAME` property' ); + t.equal( triangular.NAME, 'triangular', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof triangular.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof triangular.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( triangular.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( triangular.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof triangular.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( triangular.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof triangular.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof triangular.byteLength, 'number', 'has property' ); t.end(); }); @@ -70,3 +90,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + triangular( 0.0, 1.0, 0.5 ); + } + // Capture the current state: + state = triangular.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( triangular( 0.0, 1.0, 0.5 ) ); + } + // Set the state: + triangular.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( triangular( 0.0, 1.0, 0.5 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 6932e7c70d1302a9075e53198e2dc1ad2514bb2e Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:08:27 -0700 Subject: [PATCH 1039/1062] Update tests --- .../base/triangular/test/test.factory.js | 503 +++++++++++++++--- 1 file changed, 427 insertions(+), 76 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/triangular/test/test.factory.js b/lib/node_modules/@stdlib/random/base/triangular/test/test.factory.js index 4250c08d58f8..63493158744f 100644 --- a/lib/node_modules/@stdlib/random/base/triangular/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/triangular/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var kstest = require( '@stdlib/stats/kstest' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,76 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var triangular; - var r; - var i; - - // When binding distribution parameters... - triangular = factory( -10.0, 10.0, 5.0 ); - for ( i = 0; i < 100; i++ ) { - r = triangular(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - triangular = factory(); - for ( i = 0; i < 100; i++ ) { - r = triangular( -10.0, 10.0, 5.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var triangular1; - var triangular2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - triangular1 = factory( 0.0, 4.0, 2.0, { - 'seed': seed - }); - triangular2 = factory( 0.0, 4.0, 2.0, { - 'seed': seed - }); - - t.notEqual( triangular1, triangular2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = triangular1(); - r2 = triangular2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var triangular = factory(); - t.equal( triangular.NAME, 'triangular', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var triangular = factory(); - t.equal( typeof triangular.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var triangular = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( triangular.seed ), true, 'has `seed` property' ); - t.equal( triangular.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if minimum support `a` is not a number primitive', function test( t ) { var values; var i; @@ -122,7 +54,8 @@ tape( 'the function throws an error if minimum support `a` is not a number primi '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -149,7 +82,8 @@ tape( 'the function throws an error if maximum support `b` is not a number primi '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -176,7 +110,8 @@ tape( 'the function throws an error if mode `c` is not a number primitive', func '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -226,7 +161,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -253,7 +189,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -271,6 +208,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var triangular; + var r; + var i; + + // When binding distribution parameters... + triangular = factory( -10.0, 10.0, 5.0 ); + for ( i = 0; i < 100; i++ ) { + r = triangular(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + triangular = factory(); + for ( i = 0; i < 100; i++ ) { + r = triangular( -10.0, 10.0, 5.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var triangular1; + var triangular2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + triangular1 = factory( 0.0, 4.0, 2.0, { + 'seed': seed + }); + triangular2 = factory( 0.0, 4.0, 2.0, { + 'seed': seed + }); + + t.notEqual( triangular1, triangular2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = triangular1(); + r2 = triangular2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var triangular1; + var triangular2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + triangular1 = factory( 0.0, 4.0, 2.0, { + 'seed': seed + }); + triangular2 = factory( 0.0, 4.0, 2.0, { + 'seed': seed + }); + + t.notEqual( triangular1, triangular2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = triangular1(); + r2 = triangular2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var triangular = factory(); + t.equal( triangular.NAME, 'triangular', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var triangular = factory(); + t.equal( typeof triangular.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var triangular = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( triangular.seed ), true, 'has property' ); + t.equal( triangular.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var triangular = factory(); + t.equal( typeof triangular.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var triangular = factory(); + t.equal( isUint32Array( triangular.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var triangular = factory(); + t.equal( typeof triangular.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var triangular = factory(); + t.equal( typeof triangular.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a function that returns `NaN` if `a` is `NaN`', function test( t ) { var triangular; var r; @@ -410,3 +628,136 @@ tape( 'the function returns a PRNG for generating random numbers from a triangul t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var triangular; + var state; + var arr; + var i; + + triangular = factory( 0.0, 1.0, 0.5 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + triangular(); + } + // Capture the current state: + state = triangular.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( triangular() ); + } + + // Create another PRNG using the captured state: + triangular = factory( 0.0, 1.0, 0.5, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( triangular(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var triangular; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + triangular = factory( 0.0, 1.0, 0.5 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + triangular(); + } + // Capture the current state: + state = triangular.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( triangular() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 0.0, 1.0, 0.5, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 0.0, 1.0, 0.5, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var triangular; + var state; + var arr; + var i; + + triangular = factory( 0.0, 1.0, 0.5 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + triangular(); + } + // Capture the current state: + state = triangular.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( triangular() ); + } + // Set the state: + triangular.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( triangular(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From d8c8de87d8d9dcd469cef81c3b9882369bfaa8f1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:09:49 -0700 Subject: [PATCH 1040/1062] Add benchmarks --- .../uniform/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/uniform/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/uniform/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/uniform/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..3149e90e81f9 --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/uniform/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 10.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 10.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 0.0, 10.0 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From c871c978d8e27bb2dc99d6a1e6dd530f1d6b5832 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:10:08 -0700 Subject: [PATCH 1041/1062] Update benchmarks --- .../base/uniform/benchmark/benchmark.js | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/uniform/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/uniform/benchmark/benchmark.js index 8be1352ac427..61ba4779c2fe 100644 --- a/lib/node_modules/@stdlib/random/base/uniform/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/uniform/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( assert ) { assert.end(); }); -bench( pkg+':factory', function benchmark( assert ) { +bench( pkg+'::factory', function benchmark( assert ) { var rand; var a; var b; @@ -78,3 +78,29 @@ bench( pkg+':factory', function benchmark( assert ) { assert.pass( 'benchmark finished' ); assert.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( assert ) { + var rand; + var a; + var b; + var z; + var i; + + a = 0.0; + b = 10.0; + rand = uniform.factory(); + + assert.tic(); + for ( i = 0; i < assert.iterations; i++ ) { + z = rand( a, b ); + if ( isnan( z ) ) { + assert.fail( 'should not return NaN' ); + } + } + assert.toc(); + if ( isnan( z ) ) { + assert.fail( 'should not return NaN' ); + } + assert.pass( 'benchmark finished' ); + assert.end(); +}); From 9a62434ced770346aa2d5bf8d7d0a0a473ec7ca1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:11:17 -0700 Subject: [PATCH 1042/1062] Document properties and options --- .../@stdlib/random/base/uniform/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/uniform/docs/repl.txt b/lib/node_modules/@stdlib/random/base/uniform/docs/repl.txt index 839ccab4e885..4645a33d681f 100644 --- a/lib/node_modules/@stdlib/random/base/uniform/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/uniform/docs/repl.txt @@ -45,8 +45,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -90,6 +103,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From 00bc1a09bb928ddb2bd7768227e6ed74e36fe1fe Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:12:46 -0700 Subject: [PATCH 1043/1062] Document properties and options --- .../@stdlib/random/base/uniform/README.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/uniform/README.md b/lib/node_modules/@stdlib/random/base/uniform/README.md index 8eed060d113a..8c9042ef0af7 100644 --- a/lib/node_modules/@stdlib/random/base/uniform/README.md +++ b/lib/node_modules/@stdlib/random/base/uniform/README.md @@ -91,6 +91,8 @@ r = rand( -2.0, 2.0 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -113,6 +115,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = uniform( 1.0, 2.0 ); +} + +// Create a new PRNG initialized to the current state of `uniform`: +rand = uniform.factory({ + 'state': uniform.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 1.0, 2.0 ) === uniform( 1.0, 2.0 ) ); +// returns true +``` + #### uniform.NAME The generator name. @@ -154,10 +179,84 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### uniform.seedLength + +Length of generator seed. + +```javascript +var len = uniform.seedLength; +// returns +``` + +#### uniform.state + +Writable property for getting and setting the generator state. + +```javascript +var r = uniform( 2.0, 5.0 ); +// returns + +r = uniform( 2.0, 5.0 ); +// returns + +// ... + +// Get a copy of the current state: +var state = uniform.state; +// returns + +r = uniform( 2.0, 5.0 ); +// returns + +r = uniform( 2.0, 5.0 ); +// returns + +// Reset the state: +uniform.state = state; + +// Replay the last two pseudorandom numbers: +r = uniform( 2.0, 5.0 ); +// returns + +r = uniform( 2.0, 5.0 ); +// returns + +// ... +``` + +#### uniform.stateLength + +Length of generator state. + +```javascript +var len = uniform.stateLength; +// returns +``` + +#### uniform.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = uniform.byteLength; +// returns +``` + +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -202,6 +301,8 @@ for ( i = 0; i < 100; i++ ) { [uniform]: https://en.wikipedia.org/wiki/Uniform_distribution_%28continuous%29 +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From eb5d54c16325ef4c7fd72ccde2b0b1c1a8010e75 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:13:46 -0700 Subject: [PATCH 1044/1062] Rename files --- .../random/base/uniform/lib/factory.js | 2 +- .../@stdlib/random/base/uniform/lib/index.js | 2 +- .../base/uniform/lib/{_uniform.js => main.js} | 20 +++++++++++++------ .../random/base/uniform/lib/uniform.js | 20 ++++++------------- 4 files changed, 22 insertions(+), 22 deletions(-) rename lib/node_modules/@stdlib/random/base/uniform/lib/{_uniform.js => main.js} (82%) diff --git a/lib/node_modules/@stdlib/random/base/uniform/lib/factory.js b/lib/node_modules/@stdlib/random/base/uniform/lib/factory.js index 6cd30a9ac4e8..cf21aae15416 100644 --- a/lib/node_modules/@stdlib/random/base/uniform/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/uniform/lib/factory.js @@ -25,7 +25,7 @@ var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); var validate = require( './validate.js' ); -var uniform0 = require( './_uniform.js' ); +var uniform0 = require( './uniform.js' ); // MAIN // diff --git a/lib/node_modules/@stdlib/random/base/uniform/lib/index.js b/lib/node_modules/@stdlib/random/base/uniform/lib/index.js index e875df1d1a05..6b50941561e6 100644 --- a/lib/node_modules/@stdlib/random/base/uniform/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/uniform/lib/index.js @@ -51,7 +51,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var uniform = require( './uniform.js' ); +var uniform = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/uniform/lib/_uniform.js b/lib/node_modules/@stdlib/random/base/uniform/lib/main.js similarity index 82% rename from lib/node_modules/@stdlib/random/base/uniform/lib/_uniform.js rename to lib/node_modules/@stdlib/random/base/uniform/lib/main.js index b895da6fee5e..228804bb243d 100644 --- a/lib/node_modules/@stdlib/random/base/uniform/lib/_uniform.js +++ b/lib/node_modules/@stdlib/random/base/uniform/lib/main.js @@ -18,19 +18,27 @@ 'use strict'; +// MODULES // + +var factory = require( './factory.js' ); + + +// MAIN // + /** * Returns a uniformly distributed pseudorandom number with minimum support `a` and maximum support `b`. * -* @private -* @param {Function} rand - pseudorandom number generator +* @name uniform +* @type {Function} * @param {number} a - minimum support (inclusive) * @param {number} b - maximum support (exclusive) * @returns {number} pseudorandom number +* +* @example +* var v = uniform( 0.0, 1.0 ); +* // returns */ -function uniform( rand, a, b ) { - var r = rand(); - return ( b*r ) + ( (1.0-r)*a ); // equivalent to (b-a)*r + a -} +var uniform = factory(); // EXPORTS // diff --git a/lib/node_modules/@stdlib/random/base/uniform/lib/uniform.js b/lib/node_modules/@stdlib/random/base/uniform/lib/uniform.js index 228804bb243d..b895da6fee5e 100644 --- a/lib/node_modules/@stdlib/random/base/uniform/lib/uniform.js +++ b/lib/node_modules/@stdlib/random/base/uniform/lib/uniform.js @@ -18,27 +18,19 @@ 'use strict'; -// MODULES // - -var factory = require( './factory.js' ); - - -// MAIN // - /** * Returns a uniformly distributed pseudorandom number with minimum support `a` and maximum support `b`. * -* @name uniform -* @type {Function} +* @private +* @param {Function} rand - pseudorandom number generator * @param {number} a - minimum support (inclusive) * @param {number} b - maximum support (exclusive) * @returns {number} pseudorandom number -* -* @example -* var v = uniform( 0.0, 1.0 ); -* // returns */ -var uniform = factory(); +function uniform( rand, a, b ) { + var r = rand(); + return ( b*r ) + ( (1.0-r)*a ); // equivalent to (b-a)*r + a +} // EXPORTS // From 4224b9e0bd06489a95f867fc5c85adda3365c384 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:14:50 -0700 Subject: [PATCH 1045/1062] Add support for getting and setting PRNG state --- .../random/base/uniform/lib/factory.js | 81 +++++++++++++++++-- 1 file changed, 76 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/uniform/lib/factory.js b/lib/node_modules/@stdlib/random/base/uniform/lib/factory.js index cf21aae15416..7a968681188b 100644 --- a/lib/node_modules/@stdlib/random/base/uniform/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/uniform/lib/factory.js @@ -21,6 +21,8 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -36,12 +38,15 @@ var uniform0 = require( './uniform.js' ); * @param {number} [a] - minimum support (inclusive) * @param {number} [b] - maximum support (exclusive) * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `a` must be a number * @throws {TypeError} `b` must be a number * @throws {RangeError} `a` must be less than `b` -* @throws {TypeError} options must be an object +* @throws {TypeError} options argument must be an object * @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -89,19 +94,85 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( a === void 0 ) { prng = uniform2; } else { prng = uniform1; } setReadOnly( prng, 'NAME', 'uniform' ); - setReadOnly( prng, 'seed', rand.seed ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + rand.state = s; + } + /** * Returns a uniformly distributed pseudorandom number with minimum support `a` and maximum support `b`. * From 943a0addd1a5fdac0cac263019bd34e7648106b1 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:16:01 -0700 Subject: [PATCH 1046/1062] Update tests --- .../@stdlib/random/base/uniform/test/test.js | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/uniform/test/test.js b/lib/node_modules/@stdlib/random/base/uniform/test/test.js index 36460b471f82..92e05c4950c2 100644 --- a/lib/node_modules/@stdlib/random/base/uniform/test/test.js +++ b/lib/node_modules/@stdlib/random/base/uniform/test/test.js @@ -34,22 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof uniform.factory, 'function', 'has `factory` method' ); + t.equal( typeof uniform.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( uniform.NAME, 'uniform', 'has `NAME` property' ); + t.equal( uniform.NAME, 'uniform', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof uniform.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof uniform.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( uniform.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( uniform.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof uniform.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( uniform.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof uniform.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof uniform.byteLength, 'number', 'has property' ); t.end(); }); @@ -68,3 +88,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + uniform( 2.0, 4.0 ); + } + // Capture the current state: + state = uniform.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( uniform( 2.0, 4.0 ) ); + } + // Set the state: + uniform.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( uniform( 2.0, 4.0 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 4dd7f5b38fb9561d1a544bfbec3ce54bcf8e16bf Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:18:38 -0700 Subject: [PATCH 1047/1062] Update tests --- .../random/base/uniform/test/test.factory.js | 498 +++++++++++++++--- 1 file changed, 424 insertions(+), 74 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/uniform/test/test.factory.js b/lib/node_modules/@stdlib/random/base/uniform/test/test.factory.js index 16d8921732b9..1bc76f634981 100644 --- a/lib/node_modules/@stdlib/random/base/uniform/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/uniform/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var kstest = require( '@stdlib/stats/kstest' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,75 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var uniform; - var r; - var i; - - // When binding distribution parameters... - uniform = factory( -10.0, 10.0 ); - for ( i = 0; i < 100; i++ ) { - r = uniform(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - uniform = factory(); - for ( i = 0; i < 100; i++ ) { - r = uniform( -10.0, 10.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var uniform1; - var uniform2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - uniform1 = factory( 0.0, 4.0, { - 'seed': seed - }); - uniform2 = factory( 0.0, 4.0, { - 'seed': seed - }); - - t.notEqual( uniform1, uniform2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = uniform1(); - r2 = uniform2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var uniform = factory(); - t.equal( uniform.NAME, 'uniform', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var uniform = factory(); - t.equal( typeof uniform.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var uniform = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( uniform.seed ), true, 'has `seed` property' ); - t.equal( uniform.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if minimum support `a` is not a number primitive', function test( t ) { var values; var i; @@ -121,7 +54,8 @@ tape( 'the function throws an error if minimum support `a` is not a number primi '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -148,7 +82,8 @@ tape( 'the function throws an error if maximum support `b` is not a number primi '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -198,7 +133,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -225,7 +161,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -243,6 +180,286 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var uniform; + var r; + var i; + + // When binding distribution parameters... + uniform = factory( -10.0, 10.0 ); + for ( i = 0; i < 100; i++ ) { + r = uniform(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + uniform = factory(); + for ( i = 0; i < 100; i++ ) { + r = uniform( -10.0, 10.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var uniform1; + var uniform2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + uniform1 = factory( 0.0, 4.0, { + 'seed': seed + }); + uniform2 = factory( 0.0, 4.0, { + 'seed': seed + }); + + t.notEqual( uniform1, uniform2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = uniform1(); + r2 = uniform2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var uniform1; + var uniform2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + uniform1 = factory( 0.0, 4.0, { + 'seed': seed + }); + uniform2 = factory( 0.0, 4.0, { + 'seed': seed + }); + + t.notEqual( uniform1, uniform2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = uniform1(); + r2 = uniform2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var uniform = factory(); + t.equal( uniform.NAME, 'uniform', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var uniform = factory(); + t.equal( typeof uniform.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var uniform = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( uniform.seed ), true, 'has property' ); + t.equal( uniform.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var uniform = factory(); + t.equal( typeof uniform.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var uniform = factory(); + t.equal( isUint32Array( uniform.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var uniform = factory(); + t.equal( typeof uniform.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var uniform = factory(); + t.equal( typeof uniform.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a function that returns `NaN` if `a` is `NaN`', function test( t ) { var uniform; var r; @@ -369,3 +586,136 @@ tape( 'the function returns a PRNG for generating random numbers from a uniform t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var uniform; + var state; + var arr; + var i; + + uniform = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + uniform(); + } + // Capture the current state: + state = uniform.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( uniform() ); + } + + // Create another PRNG using the captured state: + uniform = factory( 0.0, 3.14, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( uniform(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var uniform; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + uniform = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + uniform(); + } + // Capture the current state: + state = uniform.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( uniform() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 0.0, 3.14, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 0.0, 3.14, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var uniform; + var state; + var arr; + var i; + + uniform = factory( 0.0, 3.14 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + uniform(); + } + // Capture the current state: + state = uniform.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( uniform() ); + } + // Set the state: + uniform.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( uniform(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 1d562e0a9addbdfc2e0f42be2f08aa8bd101328a Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:19:38 -0700 Subject: [PATCH 1048/1062] Update benchmarks --- .../base/weibull/benchmark/benchmark.js | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/random/base/weibull/benchmark/benchmark.js b/lib/node_modules/@stdlib/random/base/weibull/benchmark/benchmark.js index 133bfb605a38..e920ce5229ef 100644 --- a/lib/node_modules/@stdlib/random/base/weibull/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/random/base/weibull/benchmark/benchmark.js @@ -53,7 +53,7 @@ bench( pkg, function benchmark( b ) { b.end(); }); -bench( pkg+':factory', function benchmark( b ) { +bench( pkg+'::factory', function benchmark( b ) { var lambda; var rand; var k; @@ -78,3 +78,29 @@ bench( pkg+':factory', function benchmark( b ) { b.pass( 'benchmark finished' ); b.end(); }); + +bench( pkg+'::factory,arguments', function benchmark( b ) { + var lambda; + var rand; + var k; + var z; + var i; + + lambda = 3.14; + k = 2.25; + rand = weibull.factory(); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = rand( k, lambda ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From 5e920694c8ede834f0d782001ed22d2ef57fb46d Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:20:24 -0700 Subject: [PATCH 1049/1062] Add benchmarks --- .../weibull/benchmark/benchmark.factory.js | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/node_modules/@stdlib/random/base/weibull/benchmark/benchmark.factory.js diff --git a/lib/node_modules/@stdlib/random/base/weibull/benchmark/benchmark.factory.js b/lib/node_modules/@stdlib/random/base/weibull/benchmark/benchmark.factory.js new file mode 100644 index 000000000000..4349f2843c3e --- /dev/null +++ b/lib/node_modules/@stdlib/random/base/weibull/benchmark/benchmark.factory.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var Uint32Array = require( '@stdlib/array/uint32' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var minstd = require( '@stdlib/random/base/minstd-shuffle' ); +var pkg = require( './../package.json' ).name; +var factory = require( './../lib' ).factory; + + +// MAIN // + +bench( pkg+':factory', function benchmark( b ) { + var f; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + f = factory(); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 3.14, 2.25 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var opts; + var f; + var i; + + opts = { + 'seed': 1 + }; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed += i; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 3.14, 2.25 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( pkg+':factory:seed=', function benchmark( b ) { + var seed; + var opts; + var f; + var i; + + opts = {}; + + seed = new Uint32Array( 10 ); + for ( i = 0; i < seed.length; i++ ) { + seed[ i ] = minstd(); + } + opts.seed = seed; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + opts.seed[ 0 ] = i + 1; + f = factory( opts ); + if ( typeof f !== 'function' ) { + b.fail( 'should return a function' ); + } + } + b.toc(); + if ( isnan( f( 3.14, 2.25 ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); From cfbe711118a39ad8f46758af58df6f84bd0b0d6b Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:21:12 -0700 Subject: [PATCH 1050/1062] Document properties and options --- .../@stdlib/random/base/weibull/docs/repl.txt | 72 ++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/weibull/docs/repl.txt b/lib/node_modules/@stdlib/random/base/weibull/docs/repl.txt index c0d5bfd8b064..6b17d5369f6c 100644 --- a/lib/node_modules/@stdlib/random/base/weibull/docs/repl.txt +++ b/lib/node_modules/@stdlib/random/base/weibull/docs/repl.txt @@ -45,8 +45,21 @@ options: Object (optional) Options. - options.seed: any (optional) - Pseudorandom number generator seed. + options.seed: integer|ArrayLikeObject (optional) + Pseudorandom number generator seed. The seed may be either a positive + unsigned 32-bit integer or, for arbitrary length seeds, an array-like + object containing unsigned 32-bit integers. + + options.state: Uint32Array (optional) + Pseudorandom number generator state. If provided, the `seed` option is + ignored. + + options.copy: boolean (optional) + Boolean indicating whether to copy a provided pseudorandom number + generator state. Setting this option to `false` allows sharing state + between two or more pseudorandom number generators. Setting this option + to `true` ensures that a returned generator has exclusive control over + its internal state. Default: true. Returns ------- @@ -90,6 +103,61 @@ -------- > var seed = {{alias}}.seed; + +{{alias}}.seedLength + Length of generator seed. + + Examples + -------- + > var len = {{alias}}.seedLength; + + +{{alias}}.state + Generator state. + + Examples + -------- + > var r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Get a copy of the current state: + > var state = {{alias}}.state + + + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + // Set the state: + > {{alias}}.state = state; + + // Replay the last two pseudorandom numbers: + > r = {{alias}}( 2.0, 5.0 ) + + > r = {{alias}}( 2.0, 5.0 ) + + + +{{alias}}.stateLength + Length of generator state. + + Examples + -------- + > var len = {{alias}}.stateLength; + + +{{alias}}.byteLength + Size (in bytes) of generator state. + + Examples + -------- + > var sz = {{alias}}.byteLength; + See Also -------- From 39f8a4bdbb2c329fb24bca370485d814102eb970 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:22:46 -0700 Subject: [PATCH 1051/1062] Document properties and options --- .../@stdlib/random/base/weibull/README.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/lib/node_modules/@stdlib/random/base/weibull/README.md b/lib/node_modules/@stdlib/random/base/weibull/README.md index 0db44fbecbbe..7ce049b31e32 100644 --- a/lib/node_modules/@stdlib/random/base/weibull/README.md +++ b/lib/node_modules/@stdlib/random/base/weibull/README.md @@ -97,6 +97,8 @@ r = rand( 3.14, 2.25 ); The function accepts the following `options`: - **seed**: pseudorandom number generator seed. +- **state**: a [`Uint32Array`][@stdlib/array/uint32] containing pseudorandom number generator state. If provided, the function ignores the `seed` option. +- **copy**: `boolean` indicating whether to copy a provided pseudorandom number generator state. Setting this option to `false` allows sharing state between two or more pseudorandom number generators. Setting this option to `true` ensures that a returned generator has exclusive control over its internal state. Default: `true`. To seed a pseudorandom number generator, set the `seed` option. @@ -119,6 +121,29 @@ var bool = ( r1 === r2 ); // returns true ``` +To return a generator having a specific initial state, set the generator `state` option. + +```javascript +var rand; +var bool; +var r; +var i; + +// Generate pseudorandom numbers, thus progressing the generator state: +for ( i = 0; i < 1000; i++ ) { + r = weibull( 1.0, 2.0 ); +} + +// Create a new PRNG initialized to the current state of `weibull`: +rand = weibull.factory({ + 'state': weibull.state +}); + +// Test that the generated pseudorandom numbers are the same: +bool = ( rand( 1.0, 2.0 ) === weibull( 1.0, 2.0 ) ); +// returns true +``` + #### weibull.NAME The generator name. @@ -160,10 +185,84 @@ for ( i = 0; i < 100; i++ ) { } ``` +#### weibull.seedLength + +Length of generator seed. + +```javascript +var len = weibull.seedLength; +// returns +``` + +#### weibull.state + +Writable property for getting and setting the generator state. + +```javascript +var r = weibull( 2.0, 5.0 ); +// returns + +r = weibull( 2.0, 5.0 ); +// returns + +// ... + +// Get a copy of the current state: +var state = weibull.state; +// returns + +r = weibull( 2.0, 5.0 ); +// returns + +r = weibull( 2.0, 5.0 ); +// returns + +// Reset the state: +weibull.state = state; + +// Replay the last two pseudorandom numbers: +r = weibull( 2.0, 5.0 ); +// returns + +r = weibull( 2.0, 5.0 ); +// returns + +// ... +``` + +#### weibull.stateLength + +Length of generator state. + +```javascript +var len = weibull.stateLength; +// returns +``` + +#### weibull.byteLength + +Size (in bytes) of generator state. + +```javascript +var sz = weibull.byteLength; +// returns +``` + +
+ +## Notes + +- If PRNG state is "shared" (meaning a state array was provided during PRNG creation and **not** copied) and one sets the generator state to a state array having a different length, the PRNG does **not** update the existing shared state and, instead, points to the newly provided state array. In order to synchronize PRNG output according to the new shared state array, the state array for **each** relevant PRNG must be **explicitly** set. +- If PRNG state is "shared" and one sets the generator state to a state array of the same length, the PRNG state is updated (along with the state of all other PRNGs sharing the PRNG's state array). + +
+ + +
## Examples @@ -208,6 +307,8 @@ for ( i = 0; i < 100; i++ ) { [weibull]: https://en.wikipedia.org/wiki/Weibull_distribution +[@stdlib/array/uint32]: https://github.com/stdlib-js/stdlib +
From bbd75d3651aba0729afe02e020f07ab7293af186 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:23:37 -0700 Subject: [PATCH 1052/1062] Rename files --- .../random/base/weibull/lib/factory.js | 2 +- .../@stdlib/random/base/weibull/lib/index.js | 2 +- .../base/weibull/lib/{_weibull.js => main.js} | 19 ++++++++++++------- .../random/base/weibull/lib/weibull.js | 19 +++++++------------ 4 files changed, 21 insertions(+), 21 deletions(-) rename lib/node_modules/@stdlib/random/base/weibull/lib/{_weibull.js => main.js} (76%) diff --git a/lib/node_modules/@stdlib/random/base/weibull/lib/factory.js b/lib/node_modules/@stdlib/random/base/weibull/lib/factory.js index a3780f01c0b9..3fa148f1a9f1 100644 --- a/lib/node_modules/@stdlib/random/base/weibull/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/weibull/lib/factory.js @@ -25,7 +25,7 @@ var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); var validate = require( './validate.js' ); -var weibull0 = require( './_weibull.js' ); +var weibull0 = require( './weibull.js' ); // MAIN // diff --git a/lib/node_modules/@stdlib/random/base/weibull/lib/index.js b/lib/node_modules/@stdlib/random/base/weibull/lib/index.js index 578f81c2f814..27615d9e3032 100644 --- a/lib/node_modules/@stdlib/random/base/weibull/lib/index.js +++ b/lib/node_modules/@stdlib/random/base/weibull/lib/index.js @@ -51,7 +51,7 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); -var weibull = require( './weibull.js' ); +var weibull = require( './main.js' ); var factory = require( './factory.js' ); diff --git a/lib/node_modules/@stdlib/random/base/weibull/lib/_weibull.js b/lib/node_modules/@stdlib/random/base/weibull/lib/main.js similarity index 76% rename from lib/node_modules/@stdlib/random/base/weibull/lib/_weibull.js rename to lib/node_modules/@stdlib/random/base/weibull/lib/main.js index 675fdd1ddf01..dab3ec80ac7d 100644 --- a/lib/node_modules/@stdlib/random/base/weibull/lib/_weibull.js +++ b/lib/node_modules/@stdlib/random/base/weibull/lib/main.js @@ -20,8 +20,7 @@ // MODULES // -var pow = require( '@stdlib/math/base/special/pow' ); -var ln = require( '@stdlib/math/base/special/ln' ); +var factory = require( './factory.js' ); // MAIN // @@ -29,15 +28,21 @@ var ln = require( '@stdlib/math/base/special/ln' ); /** * Returns a pseudorandom number drawn from a Weibull distribution. * -* @private -* @param {Function} rand - PRNG for generating uniformly distributed numbers +* @name weibull +* @type {Function} * @param {PositiveNumber} k - scale parameter * @param {PositiveNumber} lambda - shape parameter * @returns {NonNegativeNumber} pseudorandom number +* +* @example +* var v = weibull( 2.0, 3.0 ); +* // returns +* +* @example +* var v = weibull( -2.0, 3.0 ); +* // returns NaN */ -function weibull( rand, k, lambda ) { - return lambda * pow( -ln( 1.0-rand() ), 1.0/k ); -} +var weibull = factory(); // EXPORTS // diff --git a/lib/node_modules/@stdlib/random/base/weibull/lib/weibull.js b/lib/node_modules/@stdlib/random/base/weibull/lib/weibull.js index dab3ec80ac7d..675fdd1ddf01 100644 --- a/lib/node_modules/@stdlib/random/base/weibull/lib/weibull.js +++ b/lib/node_modules/@stdlib/random/base/weibull/lib/weibull.js @@ -20,7 +20,8 @@ // MODULES // -var factory = require( './factory.js' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var ln = require( '@stdlib/math/base/special/ln' ); // MAIN // @@ -28,21 +29,15 @@ var factory = require( './factory.js' ); /** * Returns a pseudorandom number drawn from a Weibull distribution. * -* @name weibull -* @type {Function} +* @private +* @param {Function} rand - PRNG for generating uniformly distributed numbers * @param {PositiveNumber} k - scale parameter * @param {PositiveNumber} lambda - shape parameter * @returns {NonNegativeNumber} pseudorandom number -* -* @example -* var v = weibull( 2.0, 3.0 ); -* // returns -* -* @example -* var v = weibull( -2.0, 3.0 ); -* // returns NaN */ -var weibull = factory(); +function weibull( rand, k, lambda ) { + return lambda * pow( -ln( 1.0-rand() ), 1.0/k ); +} // EXPORTS // From 3ae1ef9bfe81b1fdc3c696123ff790a115220c3e Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:24:43 -0700 Subject: [PATCH 1053/1062] Add support for getting and setting PRNG state --- .../random/base/weibull/lib/factory.js | 80 ++++++++++++++++++- 1 file changed, 76 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/weibull/lib/factory.js b/lib/node_modules/@stdlib/random/base/weibull/lib/factory.js index 3fa148f1a9f1..69f6351701de 100644 --- a/lib/node_modules/@stdlib/random/base/weibull/lib/factory.js +++ b/lib/node_modules/@stdlib/random/base/weibull/lib/factory.js @@ -21,6 +21,8 @@ // MODULES // var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); +var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' ); +var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' ); var isObject = require( '@stdlib/assert/is-plain-object' ); var randu = require( '@stdlib/random/base/mt19937' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -36,10 +38,14 @@ var weibull0 = require( './weibull.js' ); * @param {PositiveNumber} [k] - scale parameter * @param {PositiveNumber} [lambda] - shape parameter * @param {Options} [options] - function options -* @param {*} [options.seed] - pseudorandom number generator seed +* @param {(uinteger32|Collection)} [options.seed] - pseudorandom number generator seed +* @param {Uint32Array} [options.state] - pseudorandom number generator state +* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state * @throws {TypeError} `k` must be a positive number * @throws {TypeError} `lambda` must be a positive number * @throws {TypeError} options argument must be an object +* @throws {TypeError} must provide valid options +* @throws {Error} must provide a valid state * @returns {Function} pseudorandom number generator * * @example @@ -87,19 +93,85 @@ function factory() { rand = randu(); } } - rand = rand.normalized; - if ( lambda === void 0 ) { prng = weibull2; } else { prng = weibull1; } setReadOnly( prng, 'NAME', 'weibull' ); - setReadOnly( prng, 'seed', rand.seed ); + setReadOnlyAccessor( prng, 'seed', getSeed ); + setReadOnlyAccessor( prng, 'seedLength', getSeedLength ); + setReadWriteAccessor( prng, 'state', getState, setState ); + setReadOnlyAccessor( prng, 'stateLength', getStateLength ); + setReadOnlyAccessor( prng, 'byteLength', getStateSize ); setReadOnly( prng, 'PRNG', rand ); + rand = rand.normalized; + return prng; + /** + * Returns the PRNG seed. + * + * @private + * @returns {Uint32Array} seed + */ + function getSeed() { + return rand.seed; + } + + /** + * Returns the PRNG seed length. + * + * @private + * @returns {PositiveInteger} seed length + */ + function getSeedLength() { + return rand.seedLength; + } + + /** + * Returns the PRNG state length. + * + * @private + * @returns {PositiveInteger} state length + */ + function getStateLength() { + return rand.stateLength; + } + + /** + * Returns the PRNG state size (in bytes). + * + * @private + * @returns {PositiveInteger} state size (in bytes) + */ + function getStateSize() { + return rand.byteLength; + } + + /** + * Returns the current pseudorandom number generator state. + * + * @private + * @returns {Uint32Array} current state + */ + function getState() { + return rand.state; + } + + /** + * Sets the pseudorandom number generator state. + * + * @private + * @param {Uint32Array} s - generator state + * @throws {TypeError} must provide a `Uint32Array` + * @throws {Error} must provide a valid state + */ + function setState( s ) { + rand.state = s; + } + /** * Returns a pseudorandom number drawn from a Weibull distribution. * From 4f8f617e27a86e62a51cc615a9afb1e7de7c6821 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:25:49 -0700 Subject: [PATCH 1054/1062] Update tests --- .../@stdlib/random/base/weibull/test/test.js | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/weibull/test/test.js b/lib/node_modules/@stdlib/random/base/weibull/test/test.js index 40afdf69f4b2..72bb2a7c3dc6 100644 --- a/lib/node_modules/@stdlib/random/base/weibull/test/test.js +++ b/lib/node_modules/@stdlib/random/base/weibull/test/test.js @@ -34,22 +34,42 @@ tape( 'main export is a function', function test( t ) { }); tape( 'attached to the main export is a method to generate pseudorandom number generators', function test( t ) { - t.equal( typeof weibull.factory, 'function', 'has `factory` method' ); + t.equal( typeof weibull.factory, 'function', 'has method' ); t.end(); }); tape( 'attached to the main export is the generator name', function test( t ) { - t.equal( weibull.NAME, 'weibull', 'has `NAME` property' ); + t.equal( weibull.NAME, 'weibull', 'has property' ); t.end(); }); tape( 'attached to the main export is the underlying PRNG', function test( t ) { - t.equal( typeof weibull.PRNG, 'function', 'has `PRNG` property' ); + t.equal( typeof weibull.PRNG, 'function', 'has property' ); t.end(); }); tape( 'attached to the main export is the generator seed', function test( t ) { - t.equal( isUint32Array( weibull.seed ), true, 'has `seed` property' ); + t.equal( isUint32Array( weibull.seed ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator seed length', function test( t ) { + t.equal( typeof weibull.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state', function test( t ) { + t.equal( isUint32Array( weibull.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state length', function test( t ) { + t.equal( typeof weibull.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the main export is the generator state size', function test( t ) { + t.equal( typeof weibull.byteLength, 'number', 'has property' ); t.end(); }); @@ -63,3 +83,30 @@ tape( 'the function returns pseudorandom numbers', function test( t ) { } t.end(); }); + +tape( 'the function supports setting the generator state', function test( t ) { + var state; + var arr; + var i; + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + weibull( 2.0, 4.0 ); + } + // Capture the current state: + state = weibull.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( weibull( 2.0, 4.0 ) ); + } + // Set the state: + weibull.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( weibull( 2.0, 4.0 ), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From 29d42d01b7a074dfd8df4332673a84e3d3ee8cb2 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:28:49 -0700 Subject: [PATCH 1055/1062] Update tests --- .../random/base/weibull/test/test.factory.js | 500 +++++++++++++++--- 1 file changed, 425 insertions(+), 75 deletions(-) diff --git a/lib/node_modules/@stdlib/random/base/weibull/test/test.factory.js b/lib/node_modules/@stdlib/random/base/weibull/test/test.factory.js index 5d2bfdfb8c1a..5f77bfbd5007 100644 --- a/lib/node_modules/@stdlib/random/base/weibull/test/test.factory.js +++ b/lib/node_modules/@stdlib/random/base/weibull/test/test.factory.js @@ -23,9 +23,11 @@ var tape = require( 'tape' ); var ENV = require( '@stdlib/process/env' ); var kstest = require( '@stdlib/stats/kstest' ); -var round = require( '@stdlib/math/base/special/round' ); +var now = require( '@stdlib/time/now' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isUint32Array = require( '@stdlib/assert/is-uint32array' ); +var UINT32_MAX = require( '@stdlib/constants/math/uint32-max' ); +var Uint32Array = require( '@stdlib/array/uint32' ); var factory = require( './../lib/factory.js' ); @@ -44,76 +46,6 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { - var weibull; - var r; - var i; - - // When binding distribution parameters... - weibull = factory( 2.0, 2.0 ); - for ( i = 0; i < 100; i++ ) { - r = weibull(); - t.equal( typeof r, 'number', 'returns a number' ); - } - - // Without binding distribution parameters... - weibull = factory(); - for ( i = 0; i < 100; i++ ) { - r = weibull( 2.5, 2.0 ); - t.equal( typeof r, 'number', 'returns a number' ); - } - - t.end(); -}); - -tape( 'the function returns a seeded pseudorandom number generator', function test( t ) { - var weibull1; - var weibull2; - var seed; - var r1; - var r2; - var i; - - seed = round( Date.now() / 1000 ); - - weibull1 = factory( 1.0, 1.0, { - 'seed': seed - }); - weibull2 = factory( 1.0, 1.0, { - 'seed': seed - }); - - t.notEqual( weibull1, weibull2, 'separate generators' ); - - for ( i = 0; i < 100; i++ ) { - r1 = weibull1(); - r2 = weibull2(); - t.equal( r1, r2, 'both return same number' ); - } - t.end(); -}); - -tape( 'attached to the returned function is the generator name', function test( t ) { - var weibull = factory(); - t.equal( weibull.NAME, 'weibull', 'has `NAME` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the underlying PRNG', function test( t ) { - var weibull = factory(); - t.equal( typeof weibull.PRNG, 'function', 'has `PRNG` property' ); - t.end(); -}); - -tape( 'attached to the returned function is the generator seed', function test( t ) { - var weibull = factory({ - 'seed': 12345 - }); - t.equal( isUint32Array( weibull.seed ), true, 'has `seed` property' ); - t.equal( weibull.seed[ 0 ], 12345, 'equal to provided seed' ); - t.end(); -}); - tape( 'the function throws an error if provided a shape argument which is not a positive number', function test( t ) { var values; var i; @@ -124,7 +56,8 @@ tape( 'the function throws an error if provided a shape argument which is not a '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -153,7 +86,8 @@ tape( 'the function throws an error if provided a scale argument which is not a '5', null, true, - undefined, + false, + void 0, NaN, [], {}, @@ -181,7 +115,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -208,7 +143,8 @@ tape( 'the function throws an error if provided an options argument which is not 5, null, true, - undefined, + false, + void 0, NaN, [], function noop() {} @@ -226,6 +162,287 @@ tape( 'the function throws an error if provided an options argument which is not } }); +tape( 'if provided a `copy` option which is not a boolean, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'copy': value + }); + }; + } +}); + +tape( 'if provided a `seed` which is not a positive integer or a non-empty array-like object, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 3.14, + 0.0, + -5.0, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'the function throws a range error if provided a `seed` which is integer greater than the maximum unsigned 32-bit integer', function test( t ) { + var values; + var i; + + values = [ + UINT32_MAX + 1, + UINT32_MAX + 2, + UINT32_MAX + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws a range error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'seed': value + }); + }; + } +}); + +tape( 'if provided a `state` option which is not a Uint32Array, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + {}, + [], + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'if provided an invalid `state` option, the function throws an error', function test( t ) { + var values; + var i; + + values = [ + new Uint32Array( 0 ), + new Uint32Array( 10 ), + new Uint32Array( 100 ) + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[i] ), RangeError, 'throws an error when provided '+values[i] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + factory({ + 'state': value + }); + }; + } +}); + +tape( 'the function returns a pseudorandom number generator (no seed)', function test( t ) { + var weibull; + var r; + var i; + + // When binding distribution parameters... + weibull = factory( 2.0, 2.0 ); + for ( i = 0; i < 100; i++ ) { + r = weibull(); + t.equal( typeof r, 'number', 'returns a number' ); + } + + // Without binding distribution parameters... + weibull = factory(); + for ( i = 0; i < 100; i++ ) { + r = weibull( 2.5, 2.0 ); + t.equal( typeof r, 'number', 'returns a number' ); + } + + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (integer seed)', function test( t ) { + var weibull1; + var weibull2; + var seed; + var r1; + var r2; + var i; + + seed = now(); + + weibull1 = factory( 1.0, 1.0, { + 'seed': seed + }); + weibull2 = factory( 1.0, 1.0, { + 'seed': seed + }); + + t.notEqual( weibull1, weibull2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = weibull1(); + r2 = weibull2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'the function returns a seeded pseudorandom number generator (array seed)', function test( t ) { + var weibull1; + var weibull2; + var seed; + var r1; + var r2; + var i; + + seed = [ now()+1, now()+2, now()+3 ]; + + weibull1 = factory( 1.0, 1.0, { + 'seed': seed + }); + weibull2 = factory( 1.0, 1.0, { + 'seed': seed + }); + + t.notEqual( weibull1, weibull2, 'separate generators' ); + + for ( i = 0; i < 100; i++ ) { + r1 = weibull1(); + r2 = weibull2(); + t.equal( r1, r2, 'both return same number' ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator name', function test( t ) { + var weibull = factory(); + t.equal( weibull.NAME, 'weibull', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the underlying PRNG', function test( t ) { + var weibull = factory(); + t.equal( typeof weibull.PRNG, 'function', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (integer seed)', function test( t ) { + var weibull = factory({ + 'seed': 12345 + }); + t.equal( isUint32Array( weibull.seed ), true, 'has property' ); + t.equal( weibull.seed[ 0 ], 12345, 'equal to provided seed' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator seed (array seed)', function test( t ) { + var actual; + var rand; + var seed; + var i; + + seed = [ 1234, 5678 ]; + rand = factory({ + 'seed': seed + }); + + actual = rand.seed; + t.equal( isUint32Array( actual ), true, 'has property' ); + for ( i = 0; i < seed.length; i++ ) { + t.equal( actual[ i ], seed[ i ], 'returns expected value for word '+i ); + } + t.end(); +}); + +tape( 'attached to the returned function is the generator seed length', function test( t ) { + var weibull = factory(); + t.equal( typeof weibull.seedLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state', function test( t ) { + var weibull = factory(); + t.equal( isUint32Array( weibull.state ), true, 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state length', function test( t ) { + var weibull = factory(); + t.equal( typeof weibull.stateLength, 'number', 'has property' ); + t.end(); +}); + +tape( 'attached to the returned function is the generator state size', function test( t ) { + var weibull = factory(); + t.equal( typeof weibull.byteLength, 'number', 'has property' ); + t.end(); +}); + tape( 'when called without arguments, the function returns a PRNG that returns `NaN` if provided a first argument which is `NaN`', function test( t ) { var weibull; var r; @@ -359,3 +576,136 @@ tape( 'the function returns a PRNG for generating random numbers from a Weibull t.end(); } }); + +tape( 'the function supports specifying the generator state', function test( t ) { + var weibull; + var state; + var arr; + var i; + + weibull = factory( 1.0, 1.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + weibull(); + } + // Capture the current state: + state = weibull.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( weibull() ); + } + + // Create another PRNG using the captured state: + weibull = factory( 1.0, 1.0, { + 'state': state + }); + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( weibull(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); + +tape( 'the function supports specifying a shared generator state', function test( t ) { + var weibull; + var shared; + var state; + var rand1; + var rand2; + var arr; + var v1; + var v2; + var i; + var j; + + weibull = factory( 1.0, 1.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + weibull(); + } + // Capture the current state: + state = weibull.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( weibull() ); + } + + // Create a copy of the state (to prevent mutation) which will be shared by more than one PRNG: + shared = new Uint32Array( state ); + + // Create PRNGs using the captured state: + rand1 = factory( 1.0, 1.0, { + 'state': shared, + 'copy': false + }); + rand2 = factory( 1.0, 1.0, { + 'state': shared, + 'copy': false + }); + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + v2 = rand2(); + } + + // Reset the (shared) state: + rand1.state = state; + + // Replay previously generated values... + j = 0; + for ( i = 0; i < 25; i++ ) { + v1 = rand1(); + v2 = rand2(); + t.equal( v1, arr[ j ], 'returns expected value. i: '+j+'.' ); + t.equal( v2, arr[ j+1 ], 'returns expected value. i: '+(j+1)+'.' ); + j += 2; // stride + } + t.end(); +}); + +tape( 'the returned function supports setting the generator state', function test( t ) { + var weibull; + var state; + var arr; + var i; + + weibull = factory( 1.0, 1.0 ); + + // Move to a future state... + for ( i = 0; i < 100; i++ ) { + weibull(); + } + // Capture the current state: + state = weibull.state; + + // Move to a future state... + arr = []; + for ( i = 0; i < 100; i++ ) { + arr.push( weibull() ); + } + // Set the state: + weibull.state = state; + + // Replay previously generated values... + for ( i = 0; i < 100; i++ ) { + t.equal( weibull(), arr[ i ], 'returns expected value. i: '+i+'.' ); + } + t.end(); +}); From dc3f65eef1f4537f17f1dec9ca292158fd66a5a2 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:46:05 -0700 Subject: [PATCH 1056/1062] Update dev deps --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 4429740f803d..fdc202f36bd3 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,8 @@ "virtual-dom": "^2.1.1" }, "devDependencies": { - "acorn": "^5.0.0", + "acorn": "^6.0.2", + "acorn-walk": "^6.1.0", "ajv": "^5.2.2", "browser-pack-flat": "^3.0.0", "browserify": "^16.1.0", From e4bf53e00302f01dcab8acf505e51c6e7fd468bd Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:46:15 -0700 Subject: [PATCH 1057/1062] Fix require path --- .../@stdlib/_tools/eslint/rules/doctest-marker/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/_tools/eslint/rules/doctest-marker/lib/main.js b/lib/node_modules/@stdlib/_tools/eslint/rules/doctest-marker/lib/main.js index d13e2c682ef2..b15b88a82148 100644 --- a/lib/node_modules/@stdlib/_tools/eslint/rules/doctest-marker/lib/main.js +++ b/lib/node_modules/@stdlib/_tools/eslint/rules/doctest-marker/lib/main.js @@ -20,7 +20,7 @@ // MODULES // -var walk = require( 'acorn/dist/walk' ); +var walk = require( 'acorn-walk' ); // VARIABLES // From 83b92c8d2b4849bc95d433b05c166816ceb9df6f Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:47:01 -0700 Subject: [PATCH 1058/1062] Fix require path --- .../_tools/eslint/rules/jsdoc-doctest-marker/lib/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/_tools/eslint/rules/jsdoc-doctest-marker/lib/main.js b/lib/node_modules/@stdlib/_tools/eslint/rules/jsdoc-doctest-marker/lib/main.js index 438383a0ba78..f0c9357e1f50 100644 --- a/lib/node_modules/@stdlib/_tools/eslint/rules/jsdoc-doctest-marker/lib/main.js +++ b/lib/node_modules/@stdlib/_tools/eslint/rules/jsdoc-doctest-marker/lib/main.js @@ -21,7 +21,7 @@ // MODULES // var parseJS = require( 'acorn' ).parse; -var walk = require( 'acorn/dist/walk' ); +var walk = require( 'acorn-walk' ); var parseJSDoc = require( 'doctrine' ).parse; var isObject = require( '@stdlib/assert/is-object' ); var replace = require( '@stdlib/string/replace' ); From afe0323f03f7abc02559d93bb4e48eeb1b0bd958 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:50:29 -0700 Subject: [PATCH 1059/1062] Fix require path --- .../@stdlib/_tools/lint/namespace-aliases/lib/walk.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/_tools/lint/namespace-aliases/lib/walk.js b/lib/node_modules/@stdlib/_tools/lint/namespace-aliases/lib/walk.js index 4c57bcf1c8c0..4e1d976e993b 100644 --- a/lib/node_modules/@stdlib/_tools/lint/namespace-aliases/lib/walk.js +++ b/lib/node_modules/@stdlib/_tools/lint/namespace-aliases/lib/walk.js @@ -21,7 +21,7 @@ // MODULES // var logger = require( 'debug' ); -var walk = require( 'acorn/dist/walk.js' ); +var walk = require( 'acorn-walk' ); var isNamespaceAssignment = require( './is_namespace_assignment.js' ); From 6dbc0c1ce5aebf5b8c859e3898a170ed56d5195e Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 02:53:52 -0700 Subject: [PATCH 1060/1062] Fix require path --- .../_tools/static-analysis/js/program-summary/lib/flatten.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/_tools/static-analysis/js/program-summary/lib/flatten.js b/lib/node_modules/@stdlib/_tools/static-analysis/js/program-summary/lib/flatten.js index 611d3bda4fc3..41aafd6e39f3 100644 --- a/lib/node_modules/@stdlib/_tools/static-analysis/js/program-summary/lib/flatten.js +++ b/lib/node_modules/@stdlib/_tools/static-analysis/js/program-summary/lib/flatten.js @@ -20,7 +20,7 @@ // MODULES // -var walk = require( 'acorn/dist/walk.js' ).fullAncestor; +var walk = require( 'acorn-walk' ).fullAncestor; var contains = require( '@stdlib/assert/contains' ); var types = require( './node_types.js' ); From 394e7b4854592a6d10f7324c8db0bdb48bc2a380 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 03:16:29 -0700 Subject: [PATCH 1061/1062] Fix require path and fix failing test --- .../@stdlib/_tools/modules/import-require/lib/walk.js | 2 +- .../@stdlib/_tools/modules/import-require/test/test.cli.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/_tools/modules/import-require/lib/walk.js b/lib/node_modules/@stdlib/_tools/modules/import-require/lib/walk.js index 513954bb5e8e..5956ebf620f7 100644 --- a/lib/node_modules/@stdlib/_tools/modules/import-require/lib/walk.js +++ b/lib/node_modules/@stdlib/_tools/modules/import-require/lib/walk.js @@ -21,7 +21,7 @@ // MODULES // var logger = require( 'debug' ); -var walk = require( 'acorn/dist/walk.js' ); +var walk = require( 'acorn-walk' ); var isRequire = require( './is_require.js' ); diff --git a/lib/node_modules/@stdlib/_tools/modules/import-require/test/test.cli.js b/lib/node_modules/@stdlib/_tools/modules/import-require/test/test.cli.js index ae98b594ba38..e7e76227563a 100644 --- a/lib/node_modules/@stdlib/_tools/modules/import-require/test/test.cli.js +++ b/lib/node_modules/@stdlib/_tools/modules/import-require/test/test.cli.js @@ -173,7 +173,7 @@ tape( 'the command-line interface supports use as a standard stream', opts, func str = replace( str, '\'', '"' ); cmd = [ - 'echo -n \''+str+'\'', + 'echo \''+str+'\'', '|', process.execPath, fpath From ac2d655c29b74d9c047a03d95a5505777f8b82f3 Mon Sep 17 00:00:00 2001 From: kgryte Date: Sat, 13 Oct 2018 03:40:46 -0700 Subject: [PATCH 1062/1062] Update electron --- deps/checksums/electron_v2_0_9_darwin_x64_zip/sha256 | 1 - deps/checksums/electron_v2_0_9_linux_arm64_zip/sha256 | 1 - deps/checksums/electron_v2_0_9_linux_arm_zip/sha256 | 1 - deps/checksums/electron_v2_0_9_linux_armv7l_zip/sha256 | 1 - deps/checksums/electron_v2_0_9_linux_ia32_zip/sha256 | 1 - deps/checksums/electron_v2_0_9_linux_x64_zip/sha256 | 1 - deps/checksums/electron_v2_0_9_mas_x64_zip/sha256 | 1 - deps/checksums/electron_v2_0_9_win32_ia32_zip/sha256 | 1 - deps/checksums/electron_v2_0_9_win32_x64_zip/sha256 | 1 - deps/checksums/electron_v3_0_4_darwin_x64_zip/sha256 | 1 + deps/checksums/electron_v3_0_4_linux_arm64_zip/sha256 | 1 + deps/checksums/electron_v3_0_4_linux_armv7l_zip/sha256 | 1 + deps/checksums/electron_v3_0_4_linux_ia32_zip/sha256 | 1 + deps/checksums/electron_v3_0_4_linux_x64_zip/sha256 | 1 + deps/checksums/electron_v3_0_4_mas_x64_zip/sha256 | 1 + deps/checksums/electron_v3_0_4_win32_ia32_zip/sha256 | 1 + deps/checksums/electron_v3_0_4_win32_x64_zip/sha256 | 1 + etc/david/.pkg.json | 2 +- tools/make/common.mk | 2 +- 19 files changed, 10 insertions(+), 11 deletions(-) delete mode 100644 deps/checksums/electron_v2_0_9_darwin_x64_zip/sha256 delete mode 100644 deps/checksums/electron_v2_0_9_linux_arm64_zip/sha256 delete mode 100644 deps/checksums/electron_v2_0_9_linux_arm_zip/sha256 delete mode 100644 deps/checksums/electron_v2_0_9_linux_armv7l_zip/sha256 delete mode 100644 deps/checksums/electron_v2_0_9_linux_ia32_zip/sha256 delete mode 100644 deps/checksums/electron_v2_0_9_linux_x64_zip/sha256 delete mode 100644 deps/checksums/electron_v2_0_9_mas_x64_zip/sha256 delete mode 100644 deps/checksums/electron_v2_0_9_win32_ia32_zip/sha256 delete mode 100644 deps/checksums/electron_v2_0_9_win32_x64_zip/sha256 create mode 100644 deps/checksums/electron_v3_0_4_darwin_x64_zip/sha256 create mode 100644 deps/checksums/electron_v3_0_4_linux_arm64_zip/sha256 create mode 100644 deps/checksums/electron_v3_0_4_linux_armv7l_zip/sha256 create mode 100644 deps/checksums/electron_v3_0_4_linux_ia32_zip/sha256 create mode 100644 deps/checksums/electron_v3_0_4_linux_x64_zip/sha256 create mode 100644 deps/checksums/electron_v3_0_4_mas_x64_zip/sha256 create mode 100644 deps/checksums/electron_v3_0_4_win32_ia32_zip/sha256 create mode 100644 deps/checksums/electron_v3_0_4_win32_x64_zip/sha256 diff --git a/deps/checksums/electron_v2_0_9_darwin_x64_zip/sha256 b/deps/checksums/electron_v2_0_9_darwin_x64_zip/sha256 deleted file mode 100644 index dca36ae498f0..000000000000 --- a/deps/checksums/electron_v2_0_9_darwin_x64_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -57cdeeaa730597debf285c89e246bad3530ff91814b61e9524422156ecb3e96a diff --git a/deps/checksums/electron_v2_0_9_linux_arm64_zip/sha256 b/deps/checksums/electron_v2_0_9_linux_arm64_zip/sha256 deleted file mode 100644 index b568f5b42cb5..000000000000 --- a/deps/checksums/electron_v2_0_9_linux_arm64_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -dd0f0bc5a55a87afd6344413b99faf323029579780734d6f570fbd142a05db91 diff --git a/deps/checksums/electron_v2_0_9_linux_arm_zip/sha256 b/deps/checksums/electron_v2_0_9_linux_arm_zip/sha256 deleted file mode 100644 index 85889b7c0ff2..000000000000 --- a/deps/checksums/electron_v2_0_9_linux_arm_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -70bcf944a7742a70438166dcd1208ae6de3bb76d15c139a586bfccfd93c3f5d4 diff --git a/deps/checksums/electron_v2_0_9_linux_armv7l_zip/sha256 b/deps/checksums/electron_v2_0_9_linux_armv7l_zip/sha256 deleted file mode 100644 index 85889b7c0ff2..000000000000 --- a/deps/checksums/electron_v2_0_9_linux_armv7l_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -70bcf944a7742a70438166dcd1208ae6de3bb76d15c139a586bfccfd93c3f5d4 diff --git a/deps/checksums/electron_v2_0_9_linux_ia32_zip/sha256 b/deps/checksums/electron_v2_0_9_linux_ia32_zip/sha256 deleted file mode 100644 index fb02c1035e75..000000000000 --- a/deps/checksums/electron_v2_0_9_linux_ia32_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -378e5c60d339d6359f7f99fbbf6783f51635f15dbeabc9c64537c9de649929ef diff --git a/deps/checksums/electron_v2_0_9_linux_x64_zip/sha256 b/deps/checksums/electron_v2_0_9_linux_x64_zip/sha256 deleted file mode 100644 index 1e21c2b3020a..000000000000 --- a/deps/checksums/electron_v2_0_9_linux_x64_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -ce34b4f3710bf880b680ac587b6a857f7821680659eb0526948ab09c2285aefd diff --git a/deps/checksums/electron_v2_0_9_mas_x64_zip/sha256 b/deps/checksums/electron_v2_0_9_mas_x64_zip/sha256 deleted file mode 100644 index 9db226980732..000000000000 --- a/deps/checksums/electron_v2_0_9_mas_x64_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -8129f58d83a7bbe134691d75ebf880521c290d9d89a6e601596e8d46f09a9755 diff --git a/deps/checksums/electron_v2_0_9_win32_ia32_zip/sha256 b/deps/checksums/electron_v2_0_9_win32_ia32_zip/sha256 deleted file mode 100644 index 9b436556d821..000000000000 --- a/deps/checksums/electron_v2_0_9_win32_ia32_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -e3284e5d3eb31e4af259cfdb1f08ebbe355933488b4658576861fbe08bbb7b04 diff --git a/deps/checksums/electron_v2_0_9_win32_x64_zip/sha256 b/deps/checksums/electron_v2_0_9_win32_x64_zip/sha256 deleted file mode 100644 index d23a1afbdc86..000000000000 --- a/deps/checksums/electron_v2_0_9_win32_x64_zip/sha256 +++ /dev/null @@ -1 +0,0 @@ -421fc6201455a9423d748cb6723629d83e9d7fcb03a37bad1423f60a0731cf31 diff --git a/deps/checksums/electron_v3_0_4_darwin_x64_zip/sha256 b/deps/checksums/electron_v3_0_4_darwin_x64_zip/sha256 new file mode 100644 index 000000000000..46daec82f064 --- /dev/null +++ b/deps/checksums/electron_v3_0_4_darwin_x64_zip/sha256 @@ -0,0 +1 @@ +959becd1a3d440d4cb6e423fc544c3e0f07f0488157414cea60886d082826e46 diff --git a/deps/checksums/electron_v3_0_4_linux_arm64_zip/sha256 b/deps/checksums/electron_v3_0_4_linux_arm64_zip/sha256 new file mode 100644 index 000000000000..265665a21086 --- /dev/null +++ b/deps/checksums/electron_v3_0_4_linux_arm64_zip/sha256 @@ -0,0 +1 @@ +150693b50a0af6adcd45c1ec672dbc73ae935e3eafa817177207e3378c7c16c8 diff --git a/deps/checksums/electron_v3_0_4_linux_armv7l_zip/sha256 b/deps/checksums/electron_v3_0_4_linux_armv7l_zip/sha256 new file mode 100644 index 000000000000..1678b480636c --- /dev/null +++ b/deps/checksums/electron_v3_0_4_linux_armv7l_zip/sha256 @@ -0,0 +1 @@ +96c2824105628927d47642e4d27731f63b6a3412ad2e07088edd22594d0a3c23 diff --git a/deps/checksums/electron_v3_0_4_linux_ia32_zip/sha256 b/deps/checksums/electron_v3_0_4_linux_ia32_zip/sha256 new file mode 100644 index 000000000000..bb0b1aab99df --- /dev/null +++ b/deps/checksums/electron_v3_0_4_linux_ia32_zip/sha256 @@ -0,0 +1 @@ +009a6deb5e6f6a83e3a296571fd4a42fd0f340f3936d5308c53690dc9909353b diff --git a/deps/checksums/electron_v3_0_4_linux_x64_zip/sha256 b/deps/checksums/electron_v3_0_4_linux_x64_zip/sha256 new file mode 100644 index 000000000000..8fe7571a99e2 --- /dev/null +++ b/deps/checksums/electron_v3_0_4_linux_x64_zip/sha256 @@ -0,0 +1 @@ +f869392a779365549e2c08946048232bef1f7eb8cccb5408d19fccb0822c8fbe diff --git a/deps/checksums/electron_v3_0_4_mas_x64_zip/sha256 b/deps/checksums/electron_v3_0_4_mas_x64_zip/sha256 new file mode 100644 index 000000000000..6f428c9859e8 --- /dev/null +++ b/deps/checksums/electron_v3_0_4_mas_x64_zip/sha256 @@ -0,0 +1 @@ +3e4aaf8539603996ab607a3abcec6091e8cea68d700dec9c4425e6b6186fe7ad diff --git a/deps/checksums/electron_v3_0_4_win32_ia32_zip/sha256 b/deps/checksums/electron_v3_0_4_win32_ia32_zip/sha256 new file mode 100644 index 000000000000..97a7a8d7f8f7 --- /dev/null +++ b/deps/checksums/electron_v3_0_4_win32_ia32_zip/sha256 @@ -0,0 +1 @@ +543b73695cd3e0134616698c9a6c7652191c1317a332afc0d75b9f29887bad41 diff --git a/deps/checksums/electron_v3_0_4_win32_x64_zip/sha256 b/deps/checksums/electron_v3_0_4_win32_x64_zip/sha256 new file mode 100644 index 000000000000..eec0067eef78 --- /dev/null +++ b/deps/checksums/electron_v3_0_4_win32_x64_zip/sha256 @@ -0,0 +1 @@ +50fd696b15a5f935ed7baec0cc76e09e28bbfaab9e5b33d169a6b0a8e7de00ae diff --git a/etc/david/.pkg.json b/etc/david/.pkg.json index 8ffb13ffcf6e..58abc7c3e916 100644 --- a/etc/david/.pkg.json +++ b/etc/david/.pkg.json @@ -1,6 +1,6 @@ { "dependencies": { - "electron": "2.0.9" + "electron": "3.0.4" }, "devDependencies":{} } diff --git a/tools/make/common.mk b/tools/make/common.mk index 6ffac9e24f4f..f321893e3a75 100644 --- a/tools/make/common.mk +++ b/tools/make/common.mk @@ -528,7 +528,7 @@ endif endif # Define the Electron version (NOTE: whenever updated, update the `david` configuration file): -DEPS_ELECTRON_VERSION ?= 2.0.9 +DEPS_ELECTRON_VERSION ?= 3.0.4 # Generate a version slug: deps_electron_version_slug := $(subst .,_,$(DEPS_ELECTRON_VERSION))